From 45970a1f92556038eaba7e78b639f73a20e750af Mon Sep 17 00:00:00 2001 From: bdebruijn Date: Mon, 13 Mar 2017 08:48:11 +0100 Subject: [PATCH 001/516] pbmsgs.c: fix missing symbol for fields --- src/machinetalk/msgcomponents/pbmsgs.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/machinetalk/msgcomponents/pbmsgs.c b/src/machinetalk/msgcomponents/pbmsgs.c index 5ddf4c6a63..c3a1e5d0cb 100644 --- a/src/machinetalk/msgcomponents/pbmsgs.c +++ b/src/machinetalk/msgcomponents/pbmsgs.c @@ -74,6 +74,16 @@ PB_DESCRIPTOR(LogMessage); /* PB_DESCRIPTOR(Test2); */ /* PB_DESCRIPTOR(Test3); */ +// jplan messages +PB_DESCRIPTOR(JplanJoint) +PB_DESCRIPTOR(JplanCommand) + +//ros messages +PB_DESCRIPTOR(JointTrajectoryPoint) +PB_DESCRIPTOR(JointTrajectory) +PB_DESCRIPTOR(Header) +PB_DESCRIPTOR(Time) + // this likely supersedes the above exports, as it // contains a superset of pb__fields msginfo_t msginfo[] = { From 1acc37b49e9f8d0f5d7515810832fd92d833b036 Mon Sep 17 00:00:00 2001 From: bdebruijn Date: Mon, 13 Mar 2017 09:41:52 +0100 Subject: [PATCH 002/516] jplanner.c + interpolate.c: fix merge fallout instantiation arguments --- src/hal/interpolator/interpolate.c | 3 ++- src/hal/jplanner/jplan.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/hal/interpolator/interpolate.c b/src/hal/interpolator/interpolate.c index de1f889e6b..40f05f2c95 100644 --- a/src/hal/interpolator/interpolate.c +++ b/src/hal/interpolator/interpolate.c @@ -223,8 +223,9 @@ static int update(void *arg, const hal_funct_args_t *fa) } -static int instantiate_interpolate(const char *name, const int argc, const char **argv) +static int instantiate_interpolate(const int argc, const char **argv) { + const char *name = argv[1]; struct inst_data *ip; int inst_id, i; diff --git a/src/hal/jplanner/jplan.c b/src/hal/jplanner/jplan.c index c946c89e53..475feaceed 100644 --- a/src/hal/jplanner/jplan.c +++ b/src/hal/jplanner/jplan.c @@ -171,8 +171,9 @@ static int update(void *arg, const hal_funct_args_t *fa) } -static int instantiate_jplan(const char *name, const int argc, const char **argv) +static int instantiate_jplan(const int argc, const char **argv) { + const char *name = argv[1]; struct inst_data *ip; int inst_id, i; From 5f044d68b45ea8ca6983cc9c18652493444c6652 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Wed, 15 Mar 2017 11:46:05 +0100 Subject: [PATCH 003/516] machinetalk/rtprintf: fix possible unterminated string --- src/machinetalk/support/rtprintf.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/machinetalk/support/rtprintf.c b/src/machinetalk/support/rtprintf.c index 0b08793746..a3a29ad9d2 100644 --- a/src/machinetalk/support/rtprintf.c +++ b/src/machinetalk/support/rtprintf.c @@ -102,7 +102,8 @@ int pbvprintf( machinetalk_RTAPI_Message *msg, int level, const char *fmt, va_li // dbuf_put_string(o, va_arg(ap, const char *)); v->type = machinetalk_ValueType_STRING; v->has_v_string = true; - strncpy(v->v_string,va_arg(ap, const char *), sizeof(v->v_string)); + *(v->v_string) = '\0'; + strncat(v->v_string, va_arg(ap, const char *), sizeof(v->v_string) - 1); msg->arg_count++; break; default: From be0b7cb9bd15e0e86689ce5cdf04388c495c6f29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Wed, 15 Mar 2017 13:59:49 +0100 Subject: [PATCH 004/516] hatalk: fix memory leak --- src/machinetalk/haltalk/haltalk_command.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/machinetalk/haltalk/haltalk_command.cc b/src/machinetalk/haltalk/haltalk_command.cc index 6dd3a382ca..56286fd490 100644 --- a/src/machinetalk/haltalk/haltalk_command.cc +++ b/src/machinetalk/haltalk/haltalk_command.cc @@ -317,6 +317,7 @@ create_rcomp(htself_t *self, const machinetalk::Component *pbcomp, if (comp_id > 0) hal_exit(comp_id); ERROR: + if (rc) delete rc; return NULL; } From 5ea92bfe1845b00ea8b4fc9d055e57fb4f44276a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Wed, 15 Mar 2017 17:42:31 +0100 Subject: [PATCH 005/516] haltalk: use proper cleanup --- src/machinetalk/haltalk/haltalk_command.cc | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/machinetalk/haltalk/haltalk_command.cc b/src/machinetalk/haltalk/haltalk_command.cc index 56286fd490..1a37aa9119 100644 --- a/src/machinetalk/haltalk/haltalk_command.cc +++ b/src/machinetalk/haltalk/haltalk_command.cc @@ -225,7 +225,7 @@ create_rcomp(htself_t *self, const machinetalk::Component *pbcomp, if (comp_id < 0) { note_printf(self->tx, "hal_init_mode(%s): %s", cname, strerror(-comp_id)); - goto ERROR; + goto EXIT_COMP; } // create the pins @@ -310,15 +310,16 @@ create_rcomp(htself_t *self, const machinetalk::Component *pbcomp, return rc; EXIT_COMP: - // if (hi) delete hi; - if (rc->cc) + if (rc->cc) { hal_ccomp_free(cc); - if (rc) delete rc; - if (comp_id > 0) + } + if (rc) { + delete rc; + } + if (comp_id > 0) { hal_exit(comp_id); - ERROR: - if (rc) delete rc; - return NULL; + } + return NULL; } static int From 128fcea06cb0940f4e543196ff3bc6f4372b48e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Wed, 15 Mar 2017 17:44:55 +0100 Subject: [PATCH 006/516] haltalk: cleanup whitespace and dead code --- src/machinetalk/haltalk/haltalk_command.cc | 1023 ++++++++++---------- 1 file changed, 497 insertions(+), 526 deletions(-) diff --git a/src/machinetalk/haltalk/haltalk_command.cc b/src/machinetalk/haltalk/haltalk_command.cc index 1a37aa9119..866bfc884e 100644 --- a/src/machinetalk/haltalk/haltalk_command.cc +++ b/src/machinetalk/haltalk/haltalk_command.cc @@ -40,7 +40,7 @@ handle_command_input(zloop_t *loop, zmq_pollitem_t *poller, void *arg) zmsg_t *msg = zmsg_recv(poller->socket); if (self->cfg->debug > 4) - zmsg_dump(msg); + zmsg_dump(msg); zframe_t *f = zmsg_last(msg); zmsg_remove(msg, f); @@ -49,18 +49,18 @@ handle_command_input(zloop_t *loop, zmq_pollitem_t *poller, void *arg) if (!self->rx.ParseFromArray(zframe_data(f), zframe_size(f))) { zframe_t *o = zmsg_first (msg); // freed with msg std::string origin( (const char *) zframe_data(o), zframe_size(o)); - rtapi_print_hex_dump(RTAPI_MSG_ALL, RTAPI_DUMP_PREFIX_OFFSET, 16, 1, - zframe_data(f), zframe_size(f), true, NULL, "%s: invalid pb ", origin.c_str()); - } + rtapi_print_hex_dump(RTAPI_MSG_ALL, RTAPI_DUMP_PREFIX_OFFSET, 16, 1, + zframe_data(f), zframe_size(f), true, NULL, "%s: invalid pb ", origin.c_str()); + } else { if (self->cfg->debug) { std::string s; - gpb::TextFormat::PrintToString(self->rx, &s); - fprintf(stderr,"%s: req=%s\n",__func__,s.c_str()); - } - // a valid protobuf. Interpret and reply as needed. + gpb::TextFormat::PrintToString(self->rx, &s); + fprintf(stderr,"%s: req=%s\n",__func__,s.c_str()); + } + // a valid protobuf. Interpret and reply as needed. dispatch_request(self, msg, poller->socket); - } + } zframe_destroy(&f); zmsg_destroy(&msg); @@ -90,8 +90,8 @@ validate_component(const char *name, const machinetalk::Component *pbcomp, machi hal_comp_t *hc = halpr_find_comp_by_name(name); if (hc == NULL) { - note_printf(e, "HAL component '%s' does not exist", name); - return e.note_size(); + note_printf(e, "HAL component '%s' does not exist", name); + return e.note_size(); } int npins = halpr_pin_count(name); @@ -101,88 +101,88 @@ validate_component(const char *name, const machinetalk::Component *pbcomp, machi std::string s; if (!pbcomp->has_name()) - note_printf(e, "pb component has no name"); + note_printf(e, "pb component has no name"); if (npbpins != npins) - note_printf(e, "pin count mismatch:pb comp=%d hal comp=%d", - npbpins, npins); + note_printf(e, "pin count mismatch:pb comp=%d hal comp=%d", + npbpins, npins); if (npbparams != nparams) - note_printf(e, "param count mismatch:pb comp=%d hal comp=%d", - npbparams, nparams); + note_printf(e, "param count mismatch:pb comp=%d hal comp=%d", + npbparams, nparams); for (int i = 0; i < npbpins; i++) { - const machinetalk::Pin &p = pbcomp->pin().Get(i);; - - // basic syntax - required attributes - if (!p.has_name()) { - gpb::TextFormat::PrintToString(p, &s); - note_printf(e, "pin without name: %s", s.c_str()); - continue; - } - if (!p.has_type()) { - gpb::TextFormat::PrintToString(p, &s); - note_printf(e, "pin without type: %s", s.c_str()); - continue; - } - if (!p.has_dir()) { - gpb::TextFormat::PrintToString(p, &s); - note_printf(e, "pin without dir: %s", s.c_str()); - continue; - } - - // each pb pin must match an existing HAL pin - hal_pin_t *hp = halpr_find_pin_by_name(p.name().c_str()); - if (hp == NULL) { - note_printf(e, "HAL pin '%s' does not exist", p.name().c_str()); - } else { - // HAL pin name exists, match attributes - if (hp->type != (hal_type_t) p.type()) - note_printf(e, "HAL pin '%s' type mismatch: hal=%d pb=%d", - p.name().c_str(), hp->type, p.type()); - - if (hp->dir != (hal_pin_dir_t) p.dir()) - note_printf(e, "HAL pin '%s' direction mismatch: hal=%d pb=%d", - p.name().c_str(), hp->dir, p.dir()); - } + const machinetalk::Pin &p = pbcomp->pin().Get(i);; + + // basic syntax - required attributes + if (!p.has_name()) { + gpb::TextFormat::PrintToString(p, &s); + note_printf(e, "pin without name: %s", s.c_str()); + continue; + } + if (!p.has_type()) { + gpb::TextFormat::PrintToString(p, &s); + note_printf(e, "pin without type: %s", s.c_str()); + continue; + } + if (!p.has_dir()) { + gpb::TextFormat::PrintToString(p, &s); + note_printf(e, "pin without dir: %s", s.c_str()); + continue; + } + + // each pb pin must match an existing HAL pin + hal_pin_t *hp = halpr_find_pin_by_name(p.name().c_str()); + if (hp == NULL) { + note_printf(e, "HAL pin '%s' does not exist", p.name().c_str()); + } else { + // HAL pin name exists, match attributes + if (hp->type != (hal_type_t) p.type()) + note_printf(e, "HAL pin '%s' type mismatch: hal=%d pb=%d", + p.name().c_str(), hp->type, p.type()); + + if (hp->dir != (hal_pin_dir_t) p.dir()) + note_printf(e, "HAL pin '%s' direction mismatch: hal=%d pb=%d", + p.name().c_str(), hp->dir, p.dir()); + } } // same for params: for (int i = 0; i < npbparams; i++) { - const machinetalk::Param &p = pbcomp->param().Get(i);; - - // basic syntax - required attributes - if (!p.has_name()) { - gpb::TextFormat::PrintToString(p, &s); - note_printf(e, "param withtout name: %s", s.c_str()); - continue; - } - if (!p.has_type()) { - gpb::TextFormat::PrintToString(p, &s); - note_printf(e, "param withtout type: %s", s.c_str()); - continue; - } - if (!p.has_dir()) { - gpb::TextFormat::PrintToString(p, &s); - note_printf(e, "param withtout direction: %s", s.c_str()); - continue; - } - - // each pb param must match an existing HAL param - hal_param_t *hp = halpr_find_param_by_name(p.name().c_str()); - if (hp == NULL) { - note_printf(e, "HAL param '%s' does not exist", p.name().c_str()); - } else { - // HAL param name exists, match attributes - if (hp->type != (hal_type_t) p.type()) - note_printf(e, "HAL param '%s' type mismatch: hal=%d pb=%d", - hp->type, p.type()); - - if (hp->dir != (hal_param_dir_t) p.dir()) - note_printf(e, "HAL param '%s' direction mismatch: hal=%d pb=%d", - hp->dir, p.dir()); - } + const machinetalk::Param &p = pbcomp->param().Get(i);; + + // basic syntax - required attributes + if (!p.has_name()) { + gpb::TextFormat::PrintToString(p, &s); + note_printf(e, "param withtout name: %s", s.c_str()); + continue; + } + if (!p.has_type()) { + gpb::TextFormat::PrintToString(p, &s); + note_printf(e, "param withtout type: %s", s.c_str()); + continue; + } + if (!p.has_dir()) { + gpb::TextFormat::PrintToString(p, &s); + note_printf(e, "param withtout direction: %s", s.c_str()); + continue; + } + + // each pb param must match an existing HAL param + hal_param_t *hp = halpr_find_param_by_name(p.name().c_str()); + if (hp == NULL) { + note_printf(e, "HAL param '%s' does not exist", p.name().c_str()); + } else { + // HAL param name exists, match attributes + if (hp->type != (hal_type_t) p.type()) + note_printf(e, "HAL param '%s' type mismatch: hal=%d pb=%d", + hp->type, p.type()); + + if (hp->dir != (hal_param_dir_t) p.dir()) + note_printf(e, "HAL param '%s' direction mismatch: hal=%d pb=%d", + hp->dir, p.dir()); + } } // this matching on pb objects only will not explicitly // enumerate HAL pins and params which are not in the pb request, @@ -197,12 +197,11 @@ validate_component(const char *name, const machinetalk::Component *pbcomp, machi // accumulate any errors in self->tx.note. static rcomp_t * create_rcomp(htself_t *self, const machinetalk::Component *pbcomp, - zmsg_t *from, void *socket) + zmsg_t *from, void *socket) { int arg1 = 0, arg2 = 0, retval; rcomp_t *rc = new rcomp_t(); int comp_id = 0; - // halitem_t *hi = NULL; const char *cname = pbcomp->name().c_str(); rc->self = self; @@ -212,119 +211,91 @@ create_rcomp(htself_t *self, const machinetalk::Component *pbcomp, rc->cc = NULL; // extract timer and userargs if set - if (pbcomp->has_timer()) - rc->msec = pbcomp->timer(); - else - rc->msec = self->cfg->default_rcomp_timer; + if (pbcomp->has_timer()) { + rc->msec = pbcomp->timer(); + } + else { + rc->msec = self->cfg->default_rcomp_timer; + } - if (pbcomp->has_userarg1()) arg1 = pbcomp->userarg1(); - if (pbcomp->has_userarg2()) arg2 = pbcomp->userarg2(); + if (pbcomp->has_userarg1()) { + arg1 = pbcomp->userarg1(); + } + if (pbcomp->has_userarg2()) { + arg2 = pbcomp->userarg2(); + } // create the remote component comp_id = hal_xinit(TYPE_REMOTE, arg1, arg2, NULL, NULL, cname); if (comp_id < 0) { - note_printf(self->tx, "hal_init_mode(%s): %s", - cname, strerror(-comp_id)); - goto EXIT_COMP; + note_printf(self->tx, "hal_init_mode(%s): %s", + cname, strerror(-comp_id)); + goto EXIT_COMP; } // create the pins for (int i = 0; i < pbcomp->pin_size(); i++) { - const machinetalk::Pin &p = pbcomp->pin(i); -#if 0 - hi = new halitem_t(); - if (hi == NULL) { - note_printf(self->tx, "new halitem_t() failed"); - goto EXIT_COMP; - } - - // storage for the pin - hi->ptr = hal_malloc(sizeof(void *)); - if (hi->ptr == NULL) { - note_printf(self->tx,"hal_malloc() failed"); - goto EXIT_COMP; - } -#else -#endif - hal_object_ptr o; - // o.pin = pin; - - // hi->type = HAL_PIN; - o.pin = halg_pin_newf(1, - (hal_type_t) p.type(), - (hal_pin_dir_t) p.dir(), - NULL, // v2 - comp_id, - p.name().c_str()); - - // void **data_ptr_addr, - // int owner_id) - - - - // retval = hal_pin_new(p.name().c_str(), - // (hal_type_t) p.type(), - // (hal_pin_dir_t) p.dir(), - // NULL, // (void **) hi->ptr, //v2 - // comp_id); - if (o.pin == NULL) { - note_printf(self->tx, "halg_pin_new() failed: %d - %s ", - _halerrno, hal_lasterror()); - goto EXIT_COMP; - } - // o.pin = hal_find_pin_by_name(p.name().c_str()); - // if (o.pin == NULL) { - // note_printf(self->tx, "hal_find_pin_by_name() failed"); - // goto EXIT_COMP; - // } - // add to items sparse array - needed for quick - // lookup when updates by handle are received - self->items[ho_id(o.pin)] = o; - - // self->items[ho_id(hi->o.pin)] = hi; + const machinetalk::Pin &p = pbcomp->pin(i); + + hal_object_ptr o; + o.pin = halg_pin_newf(1, + (hal_type_t) p.type(), + (hal_pin_dir_t) p.dir(), + NULL, // v2 + comp_id, + p.name().c_str()); + + if (o.pin == NULL) { + note_printf(self->tx, "halg_pin_new() failed: %d - %s ", + _halerrno, hal_lasterror()); + goto EXIT_COMP; + } + // add to items sparse array - needed for quick + // lookup when updates by handle are received + self->items[ho_id(o.pin)] = o; } hal_ready(comp_id); // XXX check return value if ((retval = hal_acquire(cname, getpid())) < 0) { - rtapi_print_msg(RTAPI_MSG_ERR, - "%s: create_rcomp:hal_acquire(%s)" - " failed - skipping component: %s", - self->cfg->progname, - cname, hal_lasterror()); - note_printf(self->tx, "hal_acquire(%s) failed: %s",cname, hal_lasterror()); - goto EXIT_COMP; + rtapi_print_msg(RTAPI_MSG_ERR, + "%s: create_rcomp:hal_acquire(%s)" + " failed - skipping component: %s", + self->cfg->progname, + cname, hal_lasterror()); + note_printf(self->tx, "hal_acquire(%s) failed: %s",cname, hal_lasterror()); + goto EXIT_COMP; } // compile the component hal_compiled_comp_t *cc; if ((retval = halg_compile_comp(true, cname, &cc))) { - rtapi_print_msg(RTAPI_MSG_ERR, - "%s: create_rcomp:hal_compile_comp(%s)" - " failed - skipping component: %s", - self->cfg->progname, - cname, strerror(-retval)); - note_printf(self->tx, "hal_compile_comp() failed"); - goto EXIT_COMP; + rtapi_print_msg(RTAPI_MSG_ERR, + "%s: create_rcomp:hal_compile_comp(%s)" + " failed - skipping component: %s", + self->cfg->progname, + cname, strerror(-retval)); + note_printf(self->tx, "hal_compile_comp() failed"); + goto EXIT_COMP; } rc->cc = cc; return rc; EXIT_COMP: if (rc->cc) { - hal_ccomp_free(cc); + hal_ccomp_free(cc); } if (rc) { delete rc; } if (comp_id > 0) { - hal_exit(comp_id); + hal_exit(comp_id); } - return NULL; + return NULL; } static int process_rcomp_bind(htself_t *self, zmsg_t *from, - const machinetalk::Component *pbcomp, void *socket) + const machinetalk::Component *pbcomp, void *socket) { int retval = 0; const char *cname = NULL; @@ -349,23 +320,23 @@ process_rcomp_bind(htself_t *self, zmsg_t *from, // validate pinlist attributes if pins are present - // to create a pin, it must have, name, type, direction for (int i = 0; i < pbcomp->pin_size(); i++) { - const machinetalk::Pin &p = pbcomp->pin(i); - if (!(p.has_name() && - p.has_type() && - p.has_dir())) { + const machinetalk::Pin &p = pbcomp->pin(i); + if (!(p.has_name() && + p.has_type() && + p.has_dir())) { - // TODO if (type < HAL_BIT || type > HAL_U32) - gpb::TextFormat::PrintToString(p, &s); + // TODO if (type < HAL_BIT || type > HAL_U32) + gpb::TextFormat::PrintToString(p, &s); zframe_t *o = zmsg_first (from); // freed with msg std::string origin( (const char *) zframe_data(o), zframe_size(o)); - note_printf(self->tx, - "request %d from %s: invalid pin - name, type or dir missing: Pin=(%s)", - self->rx.type(), origin.c_str(), s.c_str()); - } + note_printf(self->tx, + "request %d from %s: invalid pin - name, type or dir missing: Pin=(%s)", + self->rx.type(), origin.c_str(), s.c_str()); + } } // reply if any bad news so far if (self->tx.note_size() > 0) - return send_pbcontainer(from, self->tx, socket); + return send_pbcontainer(from, self->tx, socket); // see if component already exists if (self->rcomps.count(cname) == 0) { @@ -374,7 +345,7 @@ process_rcomp_bind(htself_t *self, zmsg_t *from, } if (self->rcomps.count(cname) == 0) { - + // fail if no_create flag is set in Component submessage // meaning: bind succeeds only if the component exists if (pbcomp->has_no_create() && pbcomp->no_create()) { @@ -386,75 +357,75 @@ process_rcomp_bind(htself_t *self, zmsg_t *from, return send_pbcontainer(from, self->tx, socket); } - // see if component already exists - // there might be a comp but user might have - // left out the 'ready ' step or forgotten to call 'hal_ready()' - // in which case the comp will be in state COMP_INITIALIZING - int compstate = hal_comp_state_by_name(cname); - if (compstate == COMP_INITIALIZING) { - - note_printf(self->tx, "component '%s' exists but has state COMP_INITIALIZING", cname); - note_printf(self->tx, "this could be caused by a missing hal_ready() call or " - "a missing 'ready ' halcmd statement"); - return send_pbcontainer(from, self->tx, socket); - } - - // still no, new component being created remotely - // any errors accumulate in self->tx.note - rc = create_rcomp(self, pbcomp, from, socket); - if (rc) { - self->rcomps[cname] = rc; - // acquire and bind happens during subscribe - } + // see if component already exists + // there might be a comp but user might have + // left out the 'ready ' step or forgotten to call 'hal_ready()' + // in which case the comp will be in state COMP_INITIALIZING + int compstate = hal_comp_state_by_name(cname); + if (compstate == COMP_INITIALIZING) { + + note_printf(self->tx, "component '%s' exists but has state COMP_INITIALIZING", cname); + note_printf(self->tx, "this could be caused by a missing hal_ready() call or " + "a missing 'ready ' halcmd statement"); + return send_pbcontainer(from, self->tx, socket); + } + + // still no, new component being created remotely + // any errors accumulate in self->tx.note + rc = create_rcomp(self, pbcomp, from, socket); + if (rc) { + self->rcomps[cname] = rc; + // acquire and bind happens during subscribe + } } else { - // component exists - rc = self->rcomps[cname]; - // validate request against existing comp - retval = validate_component(cname, pbcomp, self->tx); - if (retval) { + // component exists + rc = self->rcomps[cname]; + // validate request against existing comp + retval = validate_component(cname, pbcomp, self->tx); + if (retval) { zframe_t *o = zmsg_first (from); // freed with msg std::string origin( (const char *) zframe_data(o), zframe_size(o)); - rtapi_print_msg(RTAPI_MSG_ERR, - "%s: bind request from %s:" - " mismatch against existing HAL component", - self->cfg->progname, origin.c_str()); - return send_pbcontainer(from, self->tx, socket); - } - - // decide here if we want to carry over pin/param values - // passed in the BIND request. - // one possible route is to set pins only if the comp - // is not currently bound, and was never bound before; this is made conditional - // on a flag in the comp userarg2 so its optional and must be set - // explicitly - // - // purpose: apply initial values from UI widgets - // together with the waitbound halcmd operation this assures all values - // are set up once waitbound finishes - // - hal_comp_t *c = rc->cc->comp; - if ((c->userarg2 & RCOMP_ACCEPT_VALUES_ON_BIND) && // option set - (c->last_bound == 0) && // never bound before - (c->state == COMP_UNBOUND)) { // currently unbound - rtapi_print_msg(RTAPI_MSG_DBG, - "%s: comp %s first bind, accepting initial pin values from BIND request", - self->cfg->progname, ho_name(c)); - if (apply_initial_values(self, pbcomp)) - return send_pbcontainer(from, self->tx, socket); - } + rtapi_print_msg(RTAPI_MSG_ERR, + "%s: bind request from %s:" + " mismatch against existing HAL component", + self->cfg->progname, origin.c_str()); + return send_pbcontainer(from, self->tx, socket); + } + + // decide here if we want to carry over pin/param values + // passed in the BIND request. + // one possible route is to set pins only if the comp + // is not currently bound, and was never bound before; this is made conditional + // on a flag in the comp userarg2 so its optional and must be set + // explicitly + // + // purpose: apply initial values from UI widgets + // together with the waitbound halcmd operation this assures all values + // are set up once waitbound finishes + // + hal_comp_t *c = rc->cc->comp; + if ((c->userarg2 & RCOMP_ACCEPT_VALUES_ON_BIND) && // option set + (c->last_bound == 0) && // never bound before + (c->state == COMP_UNBOUND)) { // currently unbound + rtapi_print_msg(RTAPI_MSG_DBG, + "%s: comp %s first bind, accepting initial pin values from BIND request", + self->cfg->progname, ho_name(c)); + if (apply_initial_values(self, pbcomp)) + return send_pbcontainer(from, self->tx, socket); + } } // all good. if (rc) { - // a valid component, either existing or new. - WITH_HAL_MUTEX(); + // a valid component, either existing or new. + WITH_HAL_MUTEX(); - machinetalk::Component *c = self->tx.add_comp(); - hal_comp_t *comp = halpr_find_comp_by_name(cname); - assert(comp != NULL); - self->tx.set_type(machinetalk::MT_HALRCOMP_BIND_CONFIRM); - self->tx.set_uuid(&self->netopts.proc_uuid, sizeof(uuid_t)); - retval = halpr_describe_component(comp, c); - assert(retval == 0); + machinetalk::Component *c = self->tx.add_comp(); + hal_comp_t *comp = halpr_find_comp_by_name(cname); + assert(comp != NULL); + self->tx.set_type(machinetalk::MT_HALRCOMP_BIND_CONFIRM); + self->tx.set_uuid(&self->netopts.proc_uuid, sizeof(uuid_t)); + retval = halpr_describe_component(comp, c); + assert(retval == 0); } return send_pbcontainer(from, self->tx, socket); } @@ -466,58 +437,58 @@ dispatch_request(htself_t *self, zmsg_t *from, void *socket) machinetalk::ContainerType type = self->rx.type(); // rtapi_print_msg(RTAPI_MSG_INFO, "%s: rcommand type %d", - // self->cfg->progname, type); + // self->cfg->progname, type); switch (type) { case machinetalk::MT_PING: - retval = process_ping(self, from, socket); - break; + retval = process_ping(self, from, socket); + break; case machinetalk::MT_HALRCOMP_BIND: - // check for component submessages, and fail if none present - if (self->rx.comp_size() == 0) { + // check for component submessages, and fail if none present + if (self->rx.comp_size() == 0) { zframe_t *o = zmsg_first (from); // freed with msg std::string origin( (const char *) zframe_data(o), zframe_size(o)); - note_printf(self->tx, "request %d from '%s': no Component submessage", - self->rx.type(), origin.c_str()); - return send_pbcontainer(from, self->tx, socket); - } - // bind them all - for (int i = 0; i < self->rx.comp_size(); i++) { - const machinetalk::Component *pbcomp = &self->rx.comp(i); - retval = process_rcomp_bind(self, from, pbcomp, socket); - } - break; + note_printf(self->tx, "request %d from '%s': no Component submessage", + self->rx.type(), origin.c_str()); + return send_pbcontainer(from, self->tx, socket); + } + // bind them all + for (int i = 0; i < self->rx.comp_size(); i++) { + const machinetalk::Component *pbcomp = &self->rx.comp(i); + retval = process_rcomp_bind(self, from, pbcomp, socket); + } + break; // HAL object set/get ops case machinetalk::MT_HALRCOMMAND_SET: case machinetalk::MT_HALRCOMP_SET: - // XXX: param missing - retval = process_set(self, type == machinetalk::MT_HALRCOMP_SET, from, socket); - break; + // XXX: param missing + retval = process_set(self, type == machinetalk::MT_HALRCOMP_SET, from, socket); + break; case machinetalk::MT_HALRCOMMAND_GET: - // XXX: param missing - retval = process_get(self, from, socket); - break; + // XXX: param missing + retval = process_get(self, from, socket); + break; case machinetalk::MT_HALRCOMMAND_DESCRIBE: - self->tx.set_type(machinetalk::MT_HALRCOMMAND_DESCRIPTION); - retval = process_describe(self, from, socket); - break; + self->tx.set_type(machinetalk::MT_HALRCOMMAND_DESCRIPTION); + retval = process_describe(self, from, socket); + break; - // NIY - fall through: + // NIY - fall through: case machinetalk::MT_HALRCOMMAND_CREATE: case machinetalk::MT_HALRCOMMAND_DELETE: default: - self->tx.set_type(machinetalk::MT_HALRCOMMAND_ERROR); - note_printf(self->tx, "rcommand %d: not implemented", self->rx.type()); + self->tx.set_type(machinetalk::MT_HALRCOMMAND_ERROR); + note_printf(self->tx, "rcommand %d: not implemented", self->rx.type()); send_pbcontainer(from, self->tx, socket); zframe_t *o = zmsg_first (from); // freed with msg std::string origin( (const char *) zframe_data(o), zframe_size(o)); - rtapi_print_msg(RTAPI_MSG_ERR, "%s: rcommand from %s : unhandled type %d", - self->cfg->progname, origin.c_str(), (int) self->rx.type()); - retval = -1; + rtapi_print_msg(RTAPI_MSG_ERR, "%s: rcommand from %s : unhandled type %d", + self->cfg->progname, origin.c_str(), (int) self->rx.type()); + retval = -1; } return retval; } @@ -529,165 +500,165 @@ process_set(htself_t *self, bool halrcomp, zmsg_t *from, void *socket) // work the pins for (int i = 0; i < self->rx.pin_size(); i++) { - const machinetalk::Pin &p = self->rx.pin(i); - // required fields - if (!p.has_type()) { - note_printf(self->tx, - "type missing in pin: handle=%d", p.handle()); - continue; - } - // value present? - if (!(p.has_halfloat() || - p.has_halbit() || - p.has_halu32() || - p.has_hals32())) { - note_printf(self->tx, - "value missing in pin: handle=%d", p.handle()); - continue; - } - // try fast path via item dict first - if (p.has_handle()) { - int handle = p.handle(); - it = self->items.find(handle); - - if (it != self->items.end()) { - // handle present and found - hal_object_ptr o = it->second; - if (hh_get_object_type(o.hdr) != HAL_PIN) { - note_printf(self->tx, - "handle type mismatch - not a pin: handle=%d type=%s", - handle, hh_get_object_typestr(o.hdr)); - continue; - } - // hal_pin_t *hp = hi->o.pin; - // assert(hp != NULL); - if (halrcomp) { - if (o.pin->dir == HAL_IN) { - note_printf(self->tx, - "HALrcomp cant write a HAL_IN pin: handle=%d name=%s", - handle, ho_name(o.pin)); - continue; - } - } else { - if (o.pin->dir == HAL_OUT) { - note_printf(self->tx, - "HALrcommand: cant set an HAL_OUT pin: handle=%d name=%s", - handle, ho_name(o.pin)); - continue; - } - } - if (o.pin->type != (hal_type_t) p.type()) { - note_printf(self->tx, - "pin type mismatch: pb=%d/hal=%d, handle=%d name=%s", - p.type(), o.pin->type, handle, ho_name(o.pin)); - continue; - } - // set value - hal_data_u *vp = pin_value(o.pin); - assert(vp != NULL); - if (hal_pbpin2u(&p, vp)) { - note_printf(self->tx, "bad pin type %d name=%s",p.type(), ho_name(o.pin)); - continue; - } - } else { - // record handle lookup failure - note_printf(self->tx, "no such handle: %d",handle); - continue; - } - } else { - // no handle given, try slow path via name, and add item. - if (!p.has_name()) { - note_printf(self->tx, - "pin: no name and no handle!"); - continue; - } - if (describe_pin_by_name(self, p.name().c_str())) - continue; - } + const machinetalk::Pin &p = self->rx.pin(i); + // required fields + if (!p.has_type()) { + note_printf(self->tx, + "type missing in pin: handle=%d", p.handle()); + continue; + } + // value present? + if (!(p.has_halfloat() || + p.has_halbit() || + p.has_halu32() || + p.has_hals32())) { + note_printf(self->tx, + "value missing in pin: handle=%d", p.handle()); + continue; + } + // try fast path via item dict first + if (p.has_handle()) { + int handle = p.handle(); + it = self->items.find(handle); + + if (it != self->items.end()) { + // handle present and found + hal_object_ptr o = it->second; + if (hh_get_object_type(o.hdr) != HAL_PIN) { + note_printf(self->tx, + "handle type mismatch - not a pin: handle=%d type=%s", + handle, hh_get_object_typestr(o.hdr)); + continue; + } + // hal_pin_t *hp = hi->o.pin; + // assert(hp != NULL); + if (halrcomp) { + if (o.pin->dir == HAL_IN) { + note_printf(self->tx, + "HALrcomp cant write a HAL_IN pin: handle=%d name=%s", + handle, ho_name(o.pin)); + continue; + } + } else { + if (o.pin->dir == HAL_OUT) { + note_printf(self->tx, + "HALrcommand: cant set an HAL_OUT pin: handle=%d name=%s", + handle, ho_name(o.pin)); + continue; + } + } + if (o.pin->type != (hal_type_t) p.type()) { + note_printf(self->tx, + "pin type mismatch: pb=%d/hal=%d, handle=%d name=%s", + p.type(), o.pin->type, handle, ho_name(o.pin)); + continue; + } + // set value + hal_data_u *vp = pin_value(o.pin); + assert(vp != NULL); + if (hal_pbpin2u(&p, vp)) { + note_printf(self->tx, "bad pin type %d name=%s",p.type(), ho_name(o.pin)); + continue; + } + } else { + // record handle lookup failure + note_printf(self->tx, "no such handle: %d",handle); + continue; + } + } else { + // no handle given, try slow path via name, and add item. + if (!p.has_name()) { + note_printf(self->tx, + "pin: no name and no handle!"); + continue; + } + if (describe_pin_by_name(self, p.name().c_str())) + continue; + } } // work the signals for (int i = 0; i < self->rx.signal_size(); i++) { - const machinetalk::Signal &s = self->rx.signal(i); - // required fields - if (!s.has_type()) { - note_printf(self->tx, - "type missing in signal: handle=%d", s.handle()); - continue; - } - // value present? - if (!(s.has_halfloat() || - s.has_halbit() || - s.has_halu32() || - s.has_hals32())) { - note_printf(self->tx, - "value missing in signal: handle=%d", s.handle()); - continue; - } - // try fast path via item dict first - if (s.has_handle()) { - int handle = s.handle(); - it = self->items.find(handle); - - if (it != self->items.end()) { - // handle present and found - hal_object_ptr o = it->second; - if (hh_get_object_type(o.hdr) != HAL_SIGNAL) { - note_printf(self->tx, - "handle type mismatch - not a signal: handle=%d type=%s", - handle, hh_get_object_typestr(o.hdr)); - continue; - } - // hal_sig_t *hs = hi->o.signal; - // assert(hs != NULL); - if (o.sig->type != (hal_type_t) s.type()) { - note_printf(self->tx, - "signal type mismatch: pb=%d/hal=%d, handle=%d name=%s", - s.type(), o.sig->type, handle, ho_name(o.sig)); - continue; - } - if (o.sig->writers > 0) { - note_printf(self->tx, - "cannot update signal '%s' - %d output pin(s) linked", - ho_name(o.sig), o.sig->writers); - continue; - } - // set value - hal_data_u *vp = sig_value(o.sig); - assert(vp != NULL); - if (hal_pbsig2u(&s, vp)) { - note_printf(self->tx, "bad signal type %d name=%s", - s.type(), ho_name(o.sig)); - continue; - } - } else { - // record handle lookup failure - note_printf(self->tx, "no such handle: %d",handle); - continue; - } - } else { - // no handle given, try slow path via name, and add item. - if (!s.has_name()) { - note_printf(self->tx, - "signal: no name and no handle!"); - continue; - } - if (describe_signal_by_name(self, s.name().c_str())) - continue; - } + const machinetalk::Signal &s = self->rx.signal(i); + // required fields + if (!s.has_type()) { + note_printf(self->tx, + "type missing in signal: handle=%d", s.handle()); + continue; + } + // value present? + if (!(s.has_halfloat() || + s.has_halbit() || + s.has_halu32() || + s.has_hals32())) { + note_printf(self->tx, + "value missing in signal: handle=%d", s.handle()); + continue; + } + // try fast path via item dict first + if (s.has_handle()) { + int handle = s.handle(); + it = self->items.find(handle); + + if (it != self->items.end()) { + // handle present and found + hal_object_ptr o = it->second; + if (hh_get_object_type(o.hdr) != HAL_SIGNAL) { + note_printf(self->tx, + "handle type mismatch - not a signal: handle=%d type=%s", + handle, hh_get_object_typestr(o.hdr)); + continue; + } + // hal_sig_t *hs = hi->o.signal; + // assert(hs != NULL); + if (o.sig->type != (hal_type_t) s.type()) { + note_printf(self->tx, + "signal type mismatch: pb=%d/hal=%d, handle=%d name=%s", + s.type(), o.sig->type, handle, ho_name(o.sig)); + continue; + } + if (o.sig->writers > 0) { + note_printf(self->tx, + "cannot update signal '%s' - %d output pin(s) linked", + ho_name(o.sig), o.sig->writers); + continue; + } + // set value + hal_data_u *vp = sig_value(o.sig); + assert(vp != NULL); + if (hal_pbsig2u(&s, vp)) { + note_printf(self->tx, "bad signal type %d name=%s", + s.type(), ho_name(o.sig)); + continue; + } + } else { + // record handle lookup failure + note_printf(self->tx, "no such handle: %d",handle); + continue; + } + } else { + // no handle given, try slow path via name, and add item. + if (!s.has_name()) { + note_printf(self->tx, + "signal: no name and no handle!"); + continue; + } + if (describe_signal_by_name(self, s.name().c_str())) + continue; + } } // XXX: add param handling here if (self->tx.note_size()) { - self->tx.set_type(halrcomp ? machinetalk::MT_HALRCOMP_SET_REJECT : - machinetalk:: MT_HALRCOMMAND_SET_REJECT); - return send_pbcontainer(from, self->tx, socket); + self->tx.set_type(halrcomp ? machinetalk::MT_HALRCOMP_SET_REJECT : + machinetalk:: MT_HALRCOMMAND_SET_REJECT); + return send_pbcontainer(from, self->tx, socket); } // otherwise reply only if explicitly required: if (self->rx.has_reply_required() && self->rx.reply_required()) { - self->tx.set_type(halrcomp ? machinetalk::MT_HALRCOMP_ACK : machinetalk::MT_HALRCOMMAND_ACK); - return send_pbcontainer(from, self->tx, socket); + self->tx.set_type(halrcomp ? machinetalk::MT_HALRCOMP_ACK : machinetalk::MT_HALRCOMMAND_ACK); + return send_pbcontainer(from, self->tx, socket); } return 0; } @@ -698,69 +669,69 @@ process_get(htself_t *self, zmsg_t *from, void *socket) itemmap_iterator it; for (int i = 0; i < self->rx.pin_size(); i++) { - const machinetalk::Pin &p = self->rx.pin(i); - if (p.has_handle()) { - int handle = p.handle(); - it = self->items.find(handle); - if (it != self->items.end()) { - hal_object_ptr o = it->second; - if (hh_get_object_type(o.hdr) != HAL_PIN) { - note_printf(self->tx, - "get pin: handle type mismatch - not a pin: handle=%d type=%s", - handle, hh_get_object_typestr(o.hdr)); - continue; - } - // hal_pin_t *hp = hi->o.pin; - // assert(hp != NULL); - machinetalk::Pin *pbpin = self->tx.add_pin(); - // reply with just value and handle - pbpin->set_handle(ho_id(o.pin)); - hal_pin2pb(o.pin, pbpin); - } - } else { - if (!p.has_name()) { - note_printf(self->tx, - "get pin: no name and no handle!"); - continue; - } - // for named get, reply with full decoration - describe_pin_by_name(self, p.name().c_str()); - } + const machinetalk::Pin &p = self->rx.pin(i); + if (p.has_handle()) { + int handle = p.handle(); + it = self->items.find(handle); + if (it != self->items.end()) { + hal_object_ptr o = it->second; + if (hh_get_object_type(o.hdr) != HAL_PIN) { + note_printf(self->tx, + "get pin: handle type mismatch - not a pin: handle=%d type=%s", + handle, hh_get_object_typestr(o.hdr)); + continue; + } + // hal_pin_t *hp = hi->o.pin; + // assert(hp != NULL); + machinetalk::Pin *pbpin = self->tx.add_pin(); + // reply with just value and handle + pbpin->set_handle(ho_id(o.pin)); + hal_pin2pb(o.pin, pbpin); + } + } else { + if (!p.has_name()) { + note_printf(self->tx, + "get pin: no name and no handle!"); + continue; + } + // for named get, reply with full decoration + describe_pin_by_name(self, p.name().c_str()); + } } for (int i = 0; i < self->rx.signal_size(); i++) { - const machinetalk::Signal &s = self->rx.signal(i); - if (s.has_handle()) { - int handle = s.handle(); - it = self->items.find(handle); - if (it != self->items.end()) { - hal_object_ptr o = it->second; - if (hh_get_object_type(o.hdr) != HAL_SIGNAL) { - note_printf(self->tx, - "get signal: handle type mismatch - not a signal: handle=%d type=%s", - handle, hh_get_object_typestr(o.hdr)); - continue; - } - // hal_sig_t *hs = hi->o.signal; - // assert(hs != NULL); - machinetalk::Signal *pbsignal = self->tx.add_signal(); - // reply with just value and handle - pbsignal->set_handle(ho_id(o.sig)); - hal_sig2pb(o.sig, pbsignal); - } - } else { - if (!s.has_name()) { - note_printf(self->tx, - "get signal: no name and no handle!"); - continue; - } - // for named get, reply with full decoration - describe_signal_by_name(self, s.name().c_str()); - } + const machinetalk::Signal &s = self->rx.signal(i); + if (s.has_handle()) { + int handle = s.handle(); + it = self->items.find(handle); + if (it != self->items.end()) { + hal_object_ptr o = it->second; + if (hh_get_object_type(o.hdr) != HAL_SIGNAL) { + note_printf(self->tx, + "get signal: handle type mismatch - not a signal: handle=%d type=%s", + handle, hh_get_object_typestr(o.hdr)); + continue; + } + // hal_sig_t *hs = hi->o.signal; + // assert(hs != NULL); + machinetalk::Signal *pbsignal = self->tx.add_signal(); + // reply with just value and handle + pbsignal->set_handle(ho_id(o.sig)); + hal_sig2pb(o.sig, pbsignal); + } + } else { + if (!s.has_name()) { + note_printf(self->tx, + "get signal: no name and no handle!"); + continue; + } + // for named get, reply with full decoration + describe_signal_by_name(self, s.name().c_str()); + } } // XXX: add param handling here self->tx.set_type(self->tx.note_size() ? machinetalk::MT_HALRCOMMAND_GET_REJECT : - machinetalk::MT_HALRCOMMAND_ACK); + machinetalk::MT_HALRCOMMAND_ACK); return send_pbcontainer(from, self->tx, socket); } @@ -774,25 +745,25 @@ int describe_pin_by_name(htself_t *self, const char *name) itemmap_iterator it; hal_pin_t *hp = halpr_find_pin_by_name(name); if (hp == NULL) { - note_printf(self->tx, "no such pin: '%s'", name); - return -1; + note_printf(self->tx, "no such pin: '%s'", name); + return -1; } // add to items if not yet present it = self->items.find(ho_id(hp)); if (it == self->items.end()) { - // pin not found. add to items - hal_object_ptr o; - o.pin = hp; - // halitem_t *hi = new halitem_t(); - // hi->type = HAL_PIN; - // hi->o.pin = hp; - // if (hh_get_legacy(&hp->hdr)) { - // hi->ptr = SHMPTR(hp->data_ptr_addr); - // } else { - // // hi->ptr = - // } - self->items[ho_id(hp)] = o; - // printf("add pin %s to items\n", hp->name); + // pin not found. add to items + hal_object_ptr o; + o.pin = hp; + // halitem_t *hi = new halitem_t(); + // hi->type = HAL_PIN; + // hi->o.pin = hp; + // if (hh_get_legacy(&hp->hdr)) { + // hi->ptr = SHMPTR(hp->data_ptr_addr); + // } else { + // // hi->ptr = + // } + self->items[ho_id(hp)] = o; + // printf("add pin %s to items\n", hp->name); } // add binding in reply - includes handle machinetalk::Pin *pbpin = self->tx.add_pin(); @@ -811,21 +782,21 @@ int describe_signal_by_name(htself_t *self, const char *name) hs = halpr_find_sig_by_name(name); if (hs == NULL) { - note_printf(self->tx, "no such signal: '%s'", name); - return -1; + note_printf(self->tx, "no such signal: '%s'", name); + return -1; } // add to items if not yet present it = self->items.find(ho_id(hs)); if (it == self->items.end()) { - // signale not found. add to items - hal_object_ptr o; - o.sig = hs; - // halitem_t *hi = new halitem_t(); - // hi->type = HAL_SIGNAL; - // hi->o.signal = hs; - // hi->ptr = SHMPTR(hs->data_ptr); - self->items[ho_id(hs)] = o; - // printf("add signal %s to items\n", hs->name); + // signale not found. add to items + hal_object_ptr o; + o.sig = hs; + // halitem_t *hi = new halitem_t(); + // hi->type = HAL_SIGNAL; + // hi->o.signal = hs; + // hi->ptr = SHMPTR(hs->data_ptr); + self->items[ho_id(hs)] = o; + // printf("add signal %s to items\n", hs->name); } // add binding in reply - includes handle machinetalk::Signal *pbsignal = self->tx.add_signal(); @@ -839,35 +810,35 @@ static int apply_initial_values(htself_t *self, const machinetalk::Component *pbcomp) { for (int i = 0; i < pbcomp->pin_size(); i++) { - const machinetalk::Pin &p = pbcomp->pin(i); - { - WITH_HAL_MUTEX(); - hal_pin_t *hp; - - const char *pname = p.name().c_str(); - hp = halpr_find_pin_by_name(pname); - if (hp == NULL) { - note_printf(self->tx, - "BUG: pin %s missing in already validated component %s ?", - pname, pbcomp->name().c_str()); - continue; - } - // disconnected HAL_IN pins can be dealt with in halcmd with setp - // it would be wrong to set them from the remote - if (hp->dir == HAL_IN) - continue; - - // apply value - hal_data_u *vp = pin_value(hp); - assert(vp != NULL); - if (hal_pbpin2u(&p, vp)) { - note_printf(self->tx, "bad pin type %d/%d name=%s", p.type(), hp->type, pname); - continue; - } - rtapi_print_msg(RTAPI_MSG_DBG, - "%s: comp %s: applied inital value of %s", - self->cfg->progname, pbcomp->name().c_str(), pname); - } + const machinetalk::Pin &p = pbcomp->pin(i); + { + WITH_HAL_MUTEX(); + hal_pin_t *hp; + + const char *pname = p.name().c_str(); + hp = halpr_find_pin_by_name(pname); + if (hp == NULL) { + note_printf(self->tx, + "BUG: pin %s missing in already validated component %s ?", + pname, pbcomp->name().c_str()); + continue; + } + // disconnected HAL_IN pins can be dealt with in halcmd with setp + // it would be wrong to set them from the remote + if (hp->dir == HAL_IN) + continue; + + // apply value + hal_data_u *vp = pin_value(hp); + assert(vp != NULL); + if (hal_pbpin2u(&p, vp)) { + note_printf(self->tx, "bad pin type %d/%d name=%s", p.type(), hp->type, pname); + continue; + } + rtapi_print_msg(RTAPI_MSG_DBG, + "%s: comp %s: applied inital value of %s", + self->cfg->progname, pbcomp->name().c_str(), pname); + } } // do same for params? // better to get rid of params altogether and replace by pins From 0be50c92fba5d136c3a71ef33efcb66ecfc81fcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Wed, 15 Mar 2017 18:01:29 +0100 Subject: [PATCH 007/516] machinetalk/mk_service: fix typo --- src/machinetalk/lib/mk_service.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/machinetalk/lib/mk_service.cc b/src/machinetalk/lib/mk_service.cc index 092af564ee..9d5f615c35 100644 --- a/src/machinetalk/lib/mk_service.cc +++ b/src/machinetalk/lib/mk_service.cc @@ -187,8 +187,9 @@ int mk_announce(mk_netopts_t *n, mk_socket_t *s, const char *headline, const cha assert(n != NULL); // dont't announce if both ANNOUNCE_IPV4 and ANNOUNCE_IPV6 are zero - if (!(n->announce_ipv4 || n->announce_ipv4)) - return 0; + if (!(n->announce_ipv4 || n->announce_ipv6)) { + return 0; + } // determine avahi announcement mode if (!n->announce_ipv4) From 70f1da2791198abb654a503ac35a7634f585c42a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Wed, 15 Mar 2017 18:13:07 +0100 Subject: [PATCH 008/516] machinetalk/halpb: explicitly cast to HAL data type prevents comparing different ENUM types --- src/machinetalk/include/halpb.hh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/machinetalk/include/halpb.hh b/src/machinetalk/include/halpb.hh index 0ef2b32ba2..8758ced8f4 100644 --- a/src/machinetalk/include/halpb.hh +++ b/src/machinetalk/include/halpb.hh @@ -105,7 +105,7 @@ static inline int hal_param2pb(const hal_param_t *pp, machinetalk::Param *p) static inline int hal_pbpin2u(const machinetalk::Pin *p, hal_data_u *vp) { - switch (p->type()) { + switch (static_cast(p->type())) { default: return -1; case HAL_BIT: @@ -126,7 +126,7 @@ static inline int hal_pbpin2u(const machinetalk::Pin *p, hal_data_u *vp) static inline int hal_pbsig2u(const machinetalk::Signal *s, hal_data_u *vp) { - switch (s->type()) { + switch (static_cast(s->type())) { default: return -1; case HAL_BIT: From ad6d8f661d3f2474c8865e166ac5e795dfe3e433 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Wed, 15 Mar 2017 18:13:53 +0100 Subject: [PATCH 009/516] rtapi_msgd: add missing va_end --- src/rtapi/rtapi_msgd.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/rtapi/rtapi_msgd.cc b/src/rtapi/rtapi_msgd.cc index 1b23e57635..b151ae9e32 100644 --- a/src/rtapi/rtapi_msgd.cc +++ b/src/rtapi/rtapi_msgd.cc @@ -511,6 +511,7 @@ static void btprint(const char *prefix, const char *fmt, ...) va_list args; va_start(args, fmt); vsyslog_async(LOG_ERR, fmt, args); + va_end(args); } // handle signals delivered via sigaction - not all signals From c1dc4c7cb2c4c179f3a6671517f8c8d6af5479d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Fri, 17 Mar 2017 18:06:32 +0100 Subject: [PATCH 010/516] hal: fix missing va_end --- src/hal/lib/hal.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/hal/lib/hal.h b/src/hal/lib/hal.h index be8f90911b..0dd8c61646 100644 --- a/src/hal/lib/hal.h +++ b/src/hal/lib/hal.h @@ -837,6 +837,7 @@ hal_param_new(const char *name, va_start(ap, owner_id); return halg_param_newfv(1, type, dir, data_addr, owner_id, name, ap) == NULL ? _halerrno : 0; + va_end(ap); } int hal_param_newf(hal_type_t type, From 39ddbc45f2fbe4eeb23fa45348d99f2da2355f6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Fri, 17 Mar 2017 18:15:25 +0100 Subject: [PATCH 011/516] machinetalk/ringread: fix rsize variable type --- src/machinetalk/msgcomponents/ringread.comp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/machinetalk/msgcomponents/ringread.comp b/src/machinetalk/msgcomponents/ringread.comp index c3cd12628e..b62f00b5b4 100644 --- a/src/machinetalk/msgcomponents/ringread.comp +++ b/src/machinetalk/msgcomponents/ringread.comp @@ -39,7 +39,7 @@ static char *name = "ringread"; FUNCTION(_) { ringvec_t vec[2]; - ringsize_t rsize; + rrecsize_t rsize; const void *data; if (rb.header->type == RINGTYPE_STREAM) { From 25b3c94690aba671c3d5d40da9fdcfb30deda183 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Fri, 17 Mar 2017 23:54:04 +0100 Subject: [PATCH 012/516] hal_lib: fix out of bounds memory access --- src/hal/lib/hal_lib.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/hal/lib/hal_lib.c b/src/hal/lib/hal_lib.c index 52b145db95..c1be67315b 100644 --- a/src/hal/lib/hal_lib.c +++ b/src/hal/lib/hal_lib.c @@ -266,8 +266,9 @@ void hal_print_error(const char *fmt, ...) va_start(args, fmt); const char *prefix = "HAL error: "; strncpy(_hal_errmsg, prefix, sizeof(_hal_errmsg)); + int n = strlen(_hal_errmsg); - rtapi_vsnprintf(_hal_errmsg + strlen(_hal_errmsg), HALPRINTBUFFERLEN, + rtapi_vsnprintf(_hal_errmsg + n, HALPRINTBUFFERLEN - n, fmt, args); rtapi_print_msg(RTAPI_MSG_ERR, _hal_errmsg); va_end(args); From 8cf9a8f76f3862d67ba88aca655426eab730febe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Sat, 18 Mar 2017 08:48:03 +0100 Subject: [PATCH 013/516] hal_ring: fix NULL check after dereference --- src/hal/lib/hal_ring.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/hal/lib/hal_ring.c b/src/hal/lib/hal_ring.c index 40882519b5..316818e8ca 100644 --- a/src/hal/lib/hal_ring.c +++ b/src/hal/lib/hal_ring.c @@ -346,6 +346,10 @@ hal_plug_t *halg_plug_new(const int use_hal_mutex, else ring = halg_find_object_by_id(0, HAL_RING, args->ring_id).ring; + // at this point the ring descriptor must be valid + if (ring == NULL) + goto FAIL; + // construct plug name as '..[read|write]' char *tag = (args->type == PLUG_WRITER) ? "write" : "read"; char buf[HAL_MAX_NAME_LEN]; @@ -366,10 +370,6 @@ hal_plug_t *halg_plug_new(const int use_hal_mutex, goto FAIL; } - // at this point the ring descriptor must be valid - if (ring == NULL) - goto FAIL; - // check ring type compatibility unsigned wanted = args->flags & RINGTYPE_MASK; unsigned ring_is = ring->flags & RINGTYPE_MASK; From da0f340579e0a66de22ed6defc7730777b674eb8 Mon Sep 17 00:00:00 2001 From: Mick Date: Fri, 17 Mar 2017 16:55:58 +0000 Subject: [PATCH 014/516] Coverity error checking fixes Potentially overunning fixed length buffers, possible negative return used as param to calloc() etc. Signed-off-by: Mick --- src/hal/utils/halcmd_main.c | 19 +++++++++++---- src/rtapi/rtapi_compat.c | 47 +++++++++++++++++++++++-------------- 2 files changed, 45 insertions(+), 21 deletions(-) diff --git a/src/hal/utils/halcmd_main.c b/src/hal/utils/halcmd_main.c index 3033cf0749..095be7591e 100644 --- a/src/hal/utils/halcmd_main.c +++ b/src/hal/utils/halcmd_main.c @@ -164,6 +164,8 @@ int main(int argc, char **argv) proto_debug = 1; break; case 'C': + // Coverity doesn't like this and you can see why + // not going to mess with it for now cl = getenv("COMP_LINE"); cw = getenv("COMP_POINT"); if (!cl || !cw) exit(0); @@ -277,12 +279,21 @@ int main(int argc, char **argv) return 1; } { - char cmdline[200]; + // MAX_CMD_LEN set in halcmd.h at 1024 + char cmdline[MAX_CMD_LEN]; cmdline[0] = '\0'; - int i; + int i, len = 0; for (i=1; i < argc; i++) { - strcat(cmdline, argv[i]); - strcat(cmdline, " "); + len += strlen(argv[i]) + 1; + if(len < 200){ + strcat(cmdline, argv[i]); + strcat(cmdline, " "); + } + else{ + rtapi_print_msg(RTAPI_MSG_DBG, + "halcmd commandline exceeds 200 chars"); + exit(-1); + } } rtapi_print_msg(RTAPI_MSG_DBG, "--halcmd %s", cmdline); } diff --git a/src/rtapi/rtapi_compat.c b/src/rtapi/rtapi_compat.c index e525c99dc8..46b4df063e 100644 --- a/src/rtapi/rtapi_compat.c +++ b/src/rtapi/rtapi_compat.c @@ -116,26 +116,29 @@ int xenomai_gid() int user_in_xenomai_group() { int numgroups, i; - gid_t *grouplist; + gid_t *grouplist = NULL; int gid = xenomai_gid(); if (gid < 0) return gid; numgroups = getgroups(0,NULL); - grouplist = (gid_t *) calloc( numgroups, sizeof(gid_t)); - if (grouplist == NULL) - return -ENOMEM; - if (getgroups( numgroups, grouplist) > 0) { - for (i = 0; i < numgroups; i++) { - if (grouplist[i] == (unsigned) gid) { - free(grouplist); - return 1; + if(numgroups > 0) // if there was an error will return -1, if none 0 + { + grouplist = (gid_t *) calloc( numgroups, sizeof(gid_t)); + if (grouplist == NULL) + return -ENOMEM; + if (getgroups( numgroups, grouplist) > 0) { + for (i = 0; i < numgroups; i++) { + if (grouplist[i] == (unsigned) gid) { + free(grouplist); + return 1; + } } + } else { + free(grouplist); + return errno; } - } else { - free(grouplist); - return errno; } return 0; } @@ -243,6 +246,11 @@ flavor_ptr flavor_byid(int flavor_id) flavor_ptr default_flavor(void) { char *fname = getenv("FLAVOR"); + if(strlen(fname) > RTAPI_NAME_LEN){ // will overrun buffer if it is + fprintf(stderr, "flavour name in env = %s, which exceeds valid length\n", fname); + exit(-1); + } + flavor_ptr f, flavor; if (fname) { @@ -696,11 +704,16 @@ int rtapi_get_tags(const char *mod_name) perror("cant get RTLIB_DIR ?\n"); return -1; } - strcat(modpath,"/"); - strcat(modpath, flavor->name); - strcat(modpath,"/"); - strcat(modpath,mod_name); - strcat(modpath, flavor->mod_ext); + if((strlen(modpath) + 1) < PATH_MAX) + strcat(modpath,"/"); + if((strlen(modpath) + strlen(flavor->name)) < PATH_MAX) + strcat(modpath, flavor->name); + if((strlen(modpath) + 1) < PATH_MAX) + strcat(modpath,"/"); + if((strlen(modpath) + strlen(mod_name)) < PATH_MAX) + strcat(modpath,mod_name); + if((strlen(modpath) + strlen(flavor->mod_ext)) < PATH_MAX) + strcat(modpath, flavor->mod_ext); } const char **caps = get_caps(modpath); From b7f7d8a468fd2a38c2b446fc6a07a1a6c2261cf1 Mon Sep 17 00:00:00 2001 From: Mick Date: Sat, 18 Mar 2017 14:20:28 +0000 Subject: [PATCH 015/516] Remove stray readme.md from machinekit-multicore testing phase Signed-off-by: Mick --- README.md | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 README.md diff --git a/README.md b/README.md deleted file mode 100644 index ea1b66c45e..0000000000 --- a/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# machinekit-multicore -Work in Progress- do not use except for testing From 51709ebf9924b8635975dd20b8e79105e3e05748 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Sun, 19 Mar 2017 11:27:43 +0100 Subject: [PATCH 016/516] halcmd_main: replace magic numbers --- src/hal/utils/halcmd_main.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/hal/utils/halcmd_main.c b/src/hal/utils/halcmd_main.c index 095be7591e..a7ddd997ff 100644 --- a/src/hal/utils/halcmd_main.c +++ b/src/hal/utils/halcmd_main.c @@ -285,13 +285,12 @@ int main(int argc, char **argv) int i, len = 0; for (i=1; i < argc; i++) { len += strlen(argv[i]) + 1; - if(len < 200){ + if (len < MAX_CMD_LEN) { strcat(cmdline, argv[i]); strcat(cmdline, " "); } - else{ - rtapi_print_msg(RTAPI_MSG_DBG, - "halcmd commandline exceeds 200 chars"); + else { + fprintf("halcmd commandline exceeds %i chars", MAX_CMD_LEN); exit(-1); } } From 3cc817a59c7d219ae5ad6a136e7c281eacf5327c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Sun, 19 Mar 2017 11:30:27 +0100 Subject: [PATCH 017/516] halcmd_main: fix missing fprintf target --- src/hal/utils/halcmd_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hal/utils/halcmd_main.c b/src/hal/utils/halcmd_main.c index a7ddd997ff..1a159ca24b 100644 --- a/src/hal/utils/halcmd_main.c +++ b/src/hal/utils/halcmd_main.c @@ -290,7 +290,7 @@ int main(int argc, char **argv) strcat(cmdline, " "); } else { - fprintf("halcmd commandline exceeds %i chars", MAX_CMD_LEN); + fprintf(stderr, "halcmd commandline exceeds %i chars", MAX_CMD_LEN); exit(-1); } } From df290c03f1b07680386ec80dc9ee0c68db515788 Mon Sep 17 00:00:00 2001 From: Mick Date: Sun, 19 Mar 2017 12:56:52 +0000 Subject: [PATCH 018/516] Fix time and timev2 instcomps A complete line had been deleted from the function code, with the effect that they did not update. Upgraded to use fa_current_period() so that updates are more accurate. Also catered for restart, which was never in original by adding a zeroing pin. Timings now can either be cumulative, with stops and starts or reset to zero whilst timing or after a stop. Signed-off-by: Mick --- src/hal/i_components/time.icomp | 39 +++++++++++++++++++++---------- src/hal/i_components/timev2.icomp | 32 +++++++++++++++++++------ 2 files changed, 52 insertions(+), 19 deletions(-) diff --git a/src/hal/i_components/time.icomp b/src/hal/i_components/time.icomp index 998a7d0178..7417d7a5b7 100644 --- a/src/hal/i_components/time.icomp +++ b/src/hal/i_components/time.icomp @@ -57,22 +57,28 @@ In your post-gui.hal file you might use the following to connect it up net cycle-minutes pyvcp.time-minutes <= time.0.minutes net cycle-hours pyvcp.time-hours <= time.0.hours +The start pin will start or restart the counter cumulatively + +The zero pin will zero the counter for a fresh count +attach to a momentary push button + """; -author "John Thornton"; +author "John Thornton - adapted by ArcEye to instcomp"; license "GPL"; // Input Pins -pin in bit start "Timer On"; +pin in bit start = 0 "Timer On"; +pin in bit zero = 0 "Zero timer"; // Output Pins -pin out u32 seconds "Seconds"; -pin out u32 minutes "Minutes"; -pin out u32 hours "Hours"; +pin out u32 seconds = 0 "Seconds"; +pin out u32 minutes = 0 "Minutes"; +pin out u32 hours = 0 "Hours"; // Variables -variable hal_u32_t totalsecs = 0; +variable long totalnsecs = 0; variable hal_bit_t old_start = false; function _; @@ -83,18 +89,27 @@ function _; FUNCTION(_) { +long lperiod = fa_current_period(fa); +hal_u32_t totalsecs; + + if(zero){ + // cater for a zeroing the counter + totalnsecs = totalsecs = 0; + seconds = minutes = hours = 0; + } if(start && !old_start) - totalsecs = 0; + totalsecs = 0; if(start){ - totalsecs += (hal_u32_t)(period / 1e9); - seconds = totalsecs % 60; - minutes = (totalsecs / 60) % 60; - hours = totalsecs / 3600; + totalnsecs += lperiod; + totalsecs = (hal_u32_t)(totalnsecs / 1e9); + seconds = totalsecs % 60; + minutes = (totalsecs / 60) % 60; + hours = totalsecs / 3600; } old_start = start; return 0; -} +} \ No newline at end of file diff --git a/src/hal/i_components/timev2.icomp b/src/hal/i_components/timev2.icomp index 730555f476..ab92862478 100644 --- a/src/hal/i_components/timev2.icomp +++ b/src/hal/i_components/timev2.icomp @@ -57,22 +57,27 @@ In your post-gui.hal file you might use the following to connect it up net cycle-minutes pyvcp.time-minutes <= time.0.minutes net cycle-hours pyvcp.time-hours <= time.0.hours +The start pin will start or restart the counter cumulatively + +The zero pin will zero the counter for a fresh count +attach to a momentary push button """; -author "John Thornton"; +author "John Thornton - adapted by ArcEye to instcomp"; license "GPL"; // Input Pins -pin_ptr in bit start "Timer On"; +pin_ptr in bit start = 0 "Timer On"; +pin_ptr in bit zero = 0 "Timer On"; // Output Pins -pin_ptr out u32 seconds "Seconds"; -pin_ptr out u32 minutes "Minutes"; -pin_ptr out u32 hours "Hours"; +pin_ptr out u32 seconds = 0 "Seconds"; +pin_ptr out u32 minutes = 0 "Minutes"; +pin_ptr out u32 hours = 0 "Hours"; // Global Variables -variable hal_u32_t totalsecs = 0; +variable long totalnsecs = 0; variable hal_bit_t old_start = false; function _; @@ -83,11 +88,24 @@ function _; FUNCTION(_) { +long lperiod = fa_current_period(fa); +hal_u32_t totalsecs; + + if(gb(zero)){ + // cater for restart + totalnsecs = totalsecs = 0; + su(seconds, 0); + su(minutes, 0); + su(hours, 0); + } + if(gb(start) && !old_start) totalsecs = 0; if(gb(start)){ - totalsecs += (hal_u32_t)(period / 1e9); + totalnsecs += lperiod; + totalsecs = (hal_u32_t)(totalnsecs / 1e9); + su(seconds, totalsecs % 60); su(minutes, (totalsecs / 60) % 60); su(hours, totalsecs / 3600); From 60871f455e556e082e21224bce3c2942e2fd6a74 Mon Sep 17 00:00:00 2001 From: Mick Date: Mon, 20 Mar 2017 10:25:10 +0000 Subject: [PATCH 019/516] Fix error with flavor being unable to discern correct kernel Was a unexpected knock on from 187f851 in fixing potential buffer overruns etc detected by coverity scan Also tidied halcmd_main buffer length to locally defined 200 (albeit this turned out not to be connected to the problem) Signed-off-by: Mick --- src/hal/utils/halcmd_main.c | 13 +++++----- src/rtapi/rtapi_compat.c | 47 ++++++++++++++----------------------- 2 files changed, 24 insertions(+), 36 deletions(-) diff --git a/src/hal/utils/halcmd_main.c b/src/hal/utils/halcmd_main.c index 1a159ca24b..a255db1adf 100644 --- a/src/hal/utils/halcmd_main.c +++ b/src/hal/utils/halcmd_main.c @@ -61,6 +61,8 @@ #include #include +#define CMD_BUF_LEN 200 + static int get_input(FILE *srcfile, char *buf, size_t bufsize); static void print_help_general(int showR); static int release_HAL_mutex(void); @@ -86,7 +88,7 @@ int main(int argc, char **argv) int filemode = 0; char *filename = NULL; FILE *srcfile = NULL; - char raw_buf[MAX_CMD_LEN+1]; + char raw_buf[CMD_BUF_LEN+1]; int linenumber = 1; char *cf=NULL, *cw=NULL, *cl=NULL; char *uri = NULL; // NULL - use service discovery @@ -279,18 +281,17 @@ int main(int argc, char **argv) return 1; } { - // MAX_CMD_LEN set in halcmd.h at 1024 - char cmdline[MAX_CMD_LEN]; + char cmdline[CMD_BUF_LEN]; cmdline[0] = '\0'; int i, len = 0; for (i=1; i < argc; i++) { len += strlen(argv[i]) + 1; - if (len < MAX_CMD_LEN) { + if (len < CMD_BUF_LEN) { strcat(cmdline, argv[i]); strcat(cmdline, " "); } else { - fprintf(stderr, "halcmd commandline exceeds %i chars", MAX_CMD_LEN); + fprintf(stderr, "halcmd commandline exceeds %i chars", CMD_BUF_LEN); exit(-1); } } @@ -316,7 +317,7 @@ int main(int argc, char **argv) } } else { /* read command line(s) from 'srcfile' */ - while (get_input(srcfile, raw_buf, MAX_CMD_LEN)) { + while (get_input(srcfile, raw_buf, CMD_BUF_LEN)) { char *tokens[MAX_TOK+1]; halcmd_set_linenumber(linenumber++); /* remove comments, do var substitution, and tokenise */ diff --git a/src/rtapi/rtapi_compat.c b/src/rtapi/rtapi_compat.c index 46b4df063e..e525c99dc8 100644 --- a/src/rtapi/rtapi_compat.c +++ b/src/rtapi/rtapi_compat.c @@ -116,29 +116,26 @@ int xenomai_gid() int user_in_xenomai_group() { int numgroups, i; - gid_t *grouplist = NULL; + gid_t *grouplist; int gid = xenomai_gid(); if (gid < 0) return gid; numgroups = getgroups(0,NULL); - if(numgroups > 0) // if there was an error will return -1, if none 0 - { - grouplist = (gid_t *) calloc( numgroups, sizeof(gid_t)); - if (grouplist == NULL) - return -ENOMEM; - if (getgroups( numgroups, grouplist) > 0) { - for (i = 0; i < numgroups; i++) { - if (grouplist[i] == (unsigned) gid) { - free(grouplist); - return 1; - } + grouplist = (gid_t *) calloc( numgroups, sizeof(gid_t)); + if (grouplist == NULL) + return -ENOMEM; + if (getgroups( numgroups, grouplist) > 0) { + for (i = 0; i < numgroups; i++) { + if (grouplist[i] == (unsigned) gid) { + free(grouplist); + return 1; } - } else { - free(grouplist); - return errno; } + } else { + free(grouplist); + return errno; } return 0; } @@ -246,11 +243,6 @@ flavor_ptr flavor_byid(int flavor_id) flavor_ptr default_flavor(void) { char *fname = getenv("FLAVOR"); - if(strlen(fname) > RTAPI_NAME_LEN){ // will overrun buffer if it is - fprintf(stderr, "flavour name in env = %s, which exceeds valid length\n", fname); - exit(-1); - } - flavor_ptr f, flavor; if (fname) { @@ -704,16 +696,11 @@ int rtapi_get_tags(const char *mod_name) perror("cant get RTLIB_DIR ?\n"); return -1; } - if((strlen(modpath) + 1) < PATH_MAX) - strcat(modpath,"/"); - if((strlen(modpath) + strlen(flavor->name)) < PATH_MAX) - strcat(modpath, flavor->name); - if((strlen(modpath) + 1) < PATH_MAX) - strcat(modpath,"/"); - if((strlen(modpath) + strlen(mod_name)) < PATH_MAX) - strcat(modpath,mod_name); - if((strlen(modpath) + strlen(flavor->mod_ext)) < PATH_MAX) - strcat(modpath, flavor->mod_ext); + strcat(modpath,"/"); + strcat(modpath, flavor->name); + strcat(modpath,"/"); + strcat(modpath,mod_name); + strcat(modpath, flavor->mod_ext); } const char **caps = get_caps(modpath); From 1056260fef893cea59cd9a1857a5a1b1980e4dee Mon Sep 17 00:00:00 2001 From: Mick Date: Mon, 20 Mar 2017 17:00:05 +0000 Subject: [PATCH 020/516] Add required jenkins script Script used in Jenkins for upload of generated manual-pages package Signed-off-by: Mick --- .jenkins/manual_upload.sh | 171 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100755 .jenkins/manual_upload.sh diff --git a/.jenkins/manual_upload.sh b/.jenkins/manual_upload.sh new file mode 100755 index 0000000000..f76d25e208 --- /dev/null +++ b/.jenkins/manual_upload.sh @@ -0,0 +1,171 @@ +#!/bin/bash -e +# +# Usage: +# manual_upload.sh -i -d \ +# -u \ +# -w -p +# +# ./manual_upload.sh -i /home/mah/hello -d jessie -w PASSWORD HOST +# +# The default arguments are: +# +# username: mkjail +# sftp port: 9422 +# +# +# Note that all the files under the +# will be uploaded to the sftp server +# + +if ! uuidgen >/dev/null 2>&1; then + echo "uuidgen not found - please apt-get install uuid-runtime" + exit 1 +fi + +IMPORT=`uuidgen` + + +while [[ $# > 1 ]] +do + key="$1" + + case $key in + -i|--import) + DIR="$2" + shift + ;; + -w|--pass) + export SSHPASS="$2" + shift + ;; + -d|--distribution) + DIST="$2" + shift + ;; + -u|--user) + SFTP_USER="$2" + shift + ;; + -p|--port) + PORT="$2" + shift + ;; + esac + shift +done + +if [ -z "${1}" ]; then + echo sftp host argument missing! + exit 1 +fi + +if [ -z "${DIST}" ]; then + echo Debian distribution missing! Use -d/--distribution argument + exit 1 +fi + +if [ -z "${DIR}" ]; then + echo No import directory specified! Use -i/--import argument + exit 1 +fi + +if [ ! -d "${DIR}" ]; then + echo Import directory ${DIR} does not exists! + exit 1 +fi + +x=$(find $DIR -mindepth 1 -print -quit -name '*.dsc' -o -name '*.deb') +if [ -z "${x}" ]; then + echo The import directory ${DIR} does not contain any debian packages! + exit 1 +fi + +if [ -z "${SSHPASS}" ]; then + echo no password given - use --pass + exit 1 +fi + + +TMPDIR=`mktemp -d ` && cd $TEMPDIR + +# deletes the temp directory +function cleanup { + rm -f ${TMPDIR}/{sftp_cmds,${IMPORT}*} + echo "Deleted temp working directory $TMPDIR" +} + +# register the cleanup function to be called on the EXIT signal +trap cleanup EXIT + + +# test sftp connection +cat >${TMPDIR}/sftp_cmds </dev/null || true + +if [ ! -f ${TMPDIR}/${IMPORT}.1.tgz ]; then + echo Error creating ${TMPDIR}/${IMPORT}.1.tgz file! + exit 1 +fi + +# create status file +cat >${TMPDIR}/${IMPORT} <${TMPDIR}/${IMPORT}.1 <${TMPDIR}/sftp_cmds < Date: Wed, 22 Mar 2017 11:46:55 +0100 Subject: [PATCH 021/516] fix compiler warnings (printf security) --- src/hal/lib/hal.h | 32 ++++++++++------------ src/hal/lib/hal_comp.c | 2 +- src/hal/lib/hal_funct.c | 2 +- src/hal/lib/hal_lib.c | 6 ++-- src/hal/lib/hal_param.c | 4 +-- src/hal/utils/halcmd_commands.c | 4 +-- src/hal/utils/halcmd_rtapiapp.cc | 2 +- src/machinetalk/haltalk/haltalk_command.cc | 2 +- src/machinetalk/lib/mk_service.cc | 4 +-- src/machinetalk/support/unionread.c | 4 +-- src/rtapi/rtapi_app.cc | 4 +-- src/rtapi/rtapi_support.c | 2 +- 12 files changed, 33 insertions(+), 35 deletions(-) diff --git a/src/hal/lib/hal.h b/src/hal/lib/hal.h index 0dd8c61646..4c053f8954 100644 --- a/src/hal/lib/hal.h +++ b/src/hal/lib/hal.h @@ -630,7 +630,7 @@ static inline int hal_pin_new(const char *name, void **data_ptr_addr, const int owner_id) { return halg_pin_newf(1, type, dir, - data_ptr_addr, owner_id, name) == NULL ? _halerrno : 0; + data_ptr_addr, owner_id, "%s", name) == NULL ? _halerrno : 0; } // legacy - printf-style version of hal_pin_new() @@ -825,20 +825,6 @@ hal_param_t *halg_param_newfv(const int use_hal_mutex, volatile void *data_addr, int owner_id, const char *fmt, va_list ap); -// legacy -static inline int __attribute__((format(printf,1,6))) -hal_param_new(const char *name, - hal_type_t type, - hal_param_dir_t dir, - volatile void *data_addr, - int owner_id, ...) -{ - va_list ap; - va_start(ap, owner_id); - return halg_param_newfv(1, type, dir, - data_addr, owner_id, name, ap) == NULL ? _halerrno : 0; - va_end(ap); -} int hal_param_newf(hal_type_t type, hal_param_dir_t dir, @@ -847,8 +833,8 @@ int hal_param_newf(hal_type_t type, const char *fmt, ...) __attribute__((format(printf,5,6))); - -int halg_param_newf(const int use_hal_mutex, +// generic printf-style version of halg_param_newfv() +hal_pin_t * halg_param_newf(const int use_hal_mutex, hal_type_t type, hal_param_dir_t dir, volatile void *data_addr, @@ -856,6 +842,18 @@ int halg_param_newf(const int use_hal_mutex, const char *fmt, ...) __attribute__((format(printf,6,7))); +// legacy +static inline int +hal_param_new(const char *name, + hal_type_t type, + hal_param_dir_t dir, + volatile void *data_addr, + int owner_id) +{ + return halg_param_newf(1, type, dir, + data_addr, owner_id, "%s", name) == NULL ? _halerrno : 0; +} + /** There is no 'hal_param_delete()' function. Once a component has created a parameter, that parameter remains as long as the component exists. All parameters belonging to a component are diff --git a/src/hal/lib/hal_comp.c b/src/hal/lib/hal_comp.c index 8cddbfc3f4..d536403fc7 100644 --- a/src/hal/lib/hal_comp.c +++ b/src/hal/lib/hal_comp.c @@ -32,7 +32,7 @@ int hal_xinit(const int type, const hal_constructor_t ctor, const hal_destructor_t dtor, const char *name) { - hal_comp_t *c = halg_xinitf(1, type, userarg1, userarg2, ctor, dtor, name); + hal_comp_t *c = halg_xinitf(1, type, userarg1, userarg2, ctor, dtor, "%s", name); return c == NULL ? _halerrno : hh_get_id(&c->hdr); } diff --git a/src/hal/lib/hal_funct.c b/src/hal/lib/hal_funct.c index 695b19ccf7..e893013cab 100644 --- a/src/hal/lib/hal_funct.c +++ b/src/hal/lib/hal_funct.c @@ -62,7 +62,7 @@ int halg_export_xfunctf(const int use_halmutex, int hal_export_funct(const char *name, void (*funct) (void *, long), void *arg, int uses_fp, int reentrant, int owner_id) { - return hal_export_functf(funct, arg, uses_fp, reentrant, owner_id, name); + return hal_export_functf(funct, arg, uses_fp, reentrant, owner_id, "%s", name); } static int halg_export_xfunctfv(const int use_hal_mutex, diff --git a/src/hal/lib/hal_lib.c b/src/hal/lib/hal_lib.c index c1be67315b..514efb2dea 100644 --- a/src/hal/lib/hal_lib.c +++ b/src/hal/lib/hal_lib.c @@ -256,7 +256,7 @@ void hal_print_msg(int level, const char *fmt, ...) va_start(args, fmt); rtapi_vsnprintf(_hal_errmsg, HALPRINTBUFFERLEN, fmt, args); - rtapi_print_msg(level, _hal_errmsg); + rtapi_print_msg(level, "%s", _hal_errmsg); va_end(args); } @@ -270,7 +270,7 @@ void hal_print_error(const char *fmt, ...) rtapi_vsnprintf(_hal_errmsg + n, HALPRINTBUFFERLEN - n, fmt, args); - rtapi_print_msg(RTAPI_MSG_ERR, _hal_errmsg); + rtapi_print_msg(RTAPI_MSG_ERR, "%s", _hal_errmsg); va_end(args); } @@ -291,7 +291,7 @@ void hal_print_loc(const int level, int n = strlen(_hal_errmsg); rtapi_vsnprintf(_hal_errmsg + n, HALPRINTBUFFERLEN - n, fmt, args); - rtapi_print_msg(level, _hal_errmsg); + rtapi_print_msg(level, "%s", _hal_errmsg); va_end(args); } diff --git a/src/hal/lib/hal_param.c b/src/hal/lib/hal_param.c index c7a5535289..82f10f59ff 100644 --- a/src/hal/lib/hal_param.c +++ b/src/hal/lib/hal_param.c @@ -86,7 +86,7 @@ int hal_param_newf(hal_type_t type, return p == NULL ? _halerrno : 0; } -int halg_param_newf(const int use_hal_mutex, +hal_pin_t * halg_param_newf(const int use_hal_mutex, hal_type_t type, hal_param_dir_t dir, volatile void * data_addr, @@ -98,7 +98,7 @@ int halg_param_newf(const int use_hal_mutex, va_start(ap, fmt); p = halg_param_newfv(use_hal_mutex, type, dir, data_addr, owner_id, fmt, ap); va_end(ap); - return p == NULL ? _halerrno : 0; + return p; } diff --git a/src/hal/utils/halcmd_commands.c b/src/hal/utils/halcmd_commands.c index c0a9f7ead2..c329e1c09e 100644 --- a/src/hal/utils/halcmd_commands.c +++ b/src/hal/utils/halcmd_commands.c @@ -3464,7 +3464,7 @@ static void hdprinter(int level, const char *fmt, ...) va_start(ap, fmt); vsnprintf(buf, BUFFERLEN, fmt, ap); va_end(ap); - halcmd_output(buf); + halcmd_output("%s", buf); } static int ringdump(const char *name, ringbuffer_t *rb, void *arg) @@ -3905,7 +3905,7 @@ int do_newpin_cmd(char *comp_name, char *pin_name, char *type_name, char *args[] p = NULL; #endif // same here - use unlocked pin_new - pin = halg_pin_newf(0, type, dir, p, ho_id(comp), pin_name); + pin = halg_pin_newf(0, type, dir, p, ho_id(comp), "%s", pin_name); if (pin == NULL) { halcmd_error("cant create pin '%s': %s\n", pin_name, strerror(-retval)); diff --git a/src/hal/utils/halcmd_rtapiapp.cc b/src/hal/utils/halcmd_rtapiapp.cc index e48dd6f11d..25d401605c 100644 --- a/src/hal/utils/halcmd_rtapiapp.cc +++ b/src/hal/utils/halcmd_rtapiapp.cc @@ -290,7 +290,7 @@ int rtapi_connect(int instance, char *uri, const char *svc_uuid) zsocket_set_identity(z_command, z_ident); zsocket_set_linger(z_command, 0); - if (zsocket_connect(z_command, uri)) { + if (zsocket_connect(z_command, "%s", uri)) { perror("connect"); return -EINVAL; } diff --git a/src/machinetalk/haltalk/haltalk_command.cc b/src/machinetalk/haltalk/haltalk_command.cc index 866bfc884e..9262aff2e7 100644 --- a/src/machinetalk/haltalk/haltalk_command.cc +++ b/src/machinetalk/haltalk/haltalk_command.cc @@ -243,7 +243,7 @@ create_rcomp(htself_t *self, const machinetalk::Component *pbcomp, (hal_pin_dir_t) p.dir(), NULL, // v2 comp_id, - p.name().c_str()); + "%s", p.name().c_str()); if (o.pin == NULL) { note_printf(self->tx, "halg_pin_new() failed: %d - %s ", diff --git a/src/machinetalk/lib/mk_service.cc b/src/machinetalk/lib/mk_service.cc index 9d5f615c35..4e795cbe7b 100644 --- a/src/machinetalk/lib/mk_service.cc +++ b/src/machinetalk/lib/mk_service.cc @@ -108,7 +108,7 @@ static int bind_ifs(mk_socket_t *s, const argvec_t &ifs) uri = "tcp://" + ifs[i] + ":" + boost::lexical_cast(s->port); } // use this port number for the rest of the ifs - s->port = zsocket_bind(s->socket, uri.c_str()); + s->port = zsocket_bind(s->socket, "%s", uri.c_str()); if (s->port < 0) { syslog_async(LOG_ERR, "bind to '%s' failed: %s", uri.c_str(), strerror(errno)); @@ -166,7 +166,7 @@ int mk_bindsocket(mk_netopts_t *n, mk_socket_t *s) // use IPC sockets snprintf(buf, sizeof(buf), ZMQIPC_FORMAT, n->rundir, n->rtapi_instance, s->tag, n->service_uuid); - s->port = zsocket_bind(s->socket, buf); + s->port = zsocket_bind(s->socket, "%s", buf); if (s->port < 0) syslog_async(LOG_ERR, "bind(%s): %s\n", buf, strerror(errno)); diff --git a/src/machinetalk/support/unionread.c b/src/machinetalk/support/unionread.c index 4b6ff7859a..a77d54460b 100644 --- a/src/machinetalk/support/unionread.c +++ b/src/machinetalk/support/unionread.c @@ -38,7 +38,6 @@ bool print_container(pb_istream_t *stream) uint64_t length; uint64_t taghdr; pb_wire_type_t wiretype; - bool eof; #if 1 if (!pb_decode_varint(stream, &taghdr)) { @@ -47,6 +46,7 @@ bool print_container(pb_istream_t *stream) tag = taghdr >> 3; wiretype = taghdr & 0x07; #else + bool eof; // It is a submessage encoded in length-delimited format if (!pb_decode_tag(stream, &wiretype, &tag, &eof)) { printf("Parsing tag#3 failed: %s\n", PB_GET_ERROR(stream)); @@ -58,7 +58,7 @@ bool print_container(pb_istream_t *stream) if (!pb_decode_varint(stream, &length)) { printf("Parsing field#2 failed: %s\n", PB_GET_ERROR(stream)); } - printf("submessage length=%llu\n", length); + printf("submessage length=%lu\n", length); printf("submessage: %s NML; %s Motion\n", is_NML_container(tag) ? "is" : "not", diff --git a/src/rtapi/rtapi_app.cc b/src/rtapi/rtapi_app.cc index 7aa649003f..963e335976 100644 --- a/src/rtapi/rtapi_app.cc +++ b/src/rtapi/rtapi_app.cc @@ -1050,7 +1050,7 @@ static int rtapi_request(zloop_t *loop, zmq_pollitem_t *poller, void *arg) // log accumulated notes for (int i = 0; i < pbreply.note_size(); i++) { rtapi_print_msg(pbreply.retcode() ? RTAPI_MSG_ERR : RTAPI_MSG_DBG, - pbreply.note(i).c_str()); + "%s", pbreply.note(i).c_str()); } // TODO: extract + attach error message @@ -1331,7 +1331,7 @@ static int mainloop(size_t argc, char **argv) snprintf(uri, sizeof(uri), ZMQIPC_FORMAT, RUNDIR, instance_id, RTAPIMOD, service_uuid); mode_t prev = umask(S_IROTH | S_IWOTH | S_IXOTH); - if ((z_port = zsocket_bind(z_command, uri )) < 0) { + if ((z_port = zsocket_bind(z_command, "%s", uri )) < 0) { rtapi_print_msg(RTAPI_MSG_ERR, "cannot bind IPC socket '%s' - %s\n", uri, strerror(errno)); global_data->rtapi_app_pid = 0; diff --git a/src/rtapi/rtapi_support.c b/src/rtapi/rtapi_support.c index e456879f67..b7195502b3 100644 --- a/src/rtapi/rtapi_support.c +++ b/src/rtapi/rtapi_support.c @@ -271,7 +271,7 @@ void rtapi_print_loc(const int level, int n = strlen(_rtapi_logmsg); vsnprintf(_rtapi_logmsg + n, RTAPIPRINTBUFFERLEN - n, fmt, args); - rtapi_print_msg(level, _rtapi_logmsg); + rtapi_print_msg(level, "%s", _rtapi_logmsg); va_end(args); } From d5ac752ab9cc8cf525382ad33b57aa1b15945902 Mon Sep 17 00:00:00 2001 From: ArcEye Date: Wed, 22 Mar 2017 15:19:22 +0000 Subject: [PATCH 022/516] Update unionread.c --- src/machinetalk/support/unionread.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/machinetalk/support/unionread.c b/src/machinetalk/support/unionread.c index a77d54460b..79ad04a44d 100644 --- a/src/machinetalk/support/unionread.c +++ b/src/machinetalk/support/unionread.c @@ -39,19 +39,18 @@ bool print_container(pb_istream_t *stream) uint64_t taghdr; pb_wire_type_t wiretype; -#if 1 if (!pb_decode_varint(stream, &taghdr)) { printf("Parsing taghdr failed: %s\n", PB_GET_ERROR(stream)); } tag = taghdr >> 3; wiretype = taghdr & 0x07; -#else +/********************************************************** bool eof; // It is a submessage encoded in length-delimited format if (!pb_decode_tag(stream, &wiretype, &tag, &eof)) { printf("Parsing tag#3 failed: %s\n", PB_GET_ERROR(stream)); } -#endif +***********************************************************/ printf("wiretype=%d tag=%d (submessage type)\n", wiretype, tag); assert(wiretype == 2); // length-delimited format From 8eddb02d8746a22fd259fcdec41264d5a158a640 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Wed, 22 Mar 2017 11:07:40 +0100 Subject: [PATCH 023/516] hal_pru_generic: enable build for RT-PREEMPT --- src/hal/drivers/hal_pru_generic/Submakefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/hal/drivers/hal_pru_generic/Submakefile b/src/hal/drivers/hal_pru_generic/Submakefile index afcdc226df..f826267b6e 100644 --- a/src/hal/drivers/hal_pru_generic/Submakefile +++ b/src/hal/drivers/hal_pru_generic/Submakefile @@ -17,8 +17,8 @@ PRU_DBG := $(patsubst %,$(RTLIBDIR)/%.dbg,$(PRU_MAINS)) # Adding to TARGETS builds the PRU code once and puts it in the RTLIBDIR for # the first defined RTOS flavor (typically posix) #TARGETS += $(PRU_BIN) $(PRU_DBG) -# Only build PRU code for the Xenomai RTOS flavor -ifeq ($(threads),xenomai) +# Only build PRU code for the Xenomai and RT-PREEMPT RTOS flavor +ifeq ($(threads),$(filter $(threads), xenomai rt-preempt)) modules : $(PRU_BIN) $(PRU_DBG) endif From 3350eaf2d6eb4b3c7b5b2d4314144449c61eb4b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Thu, 23 Mar 2017 16:48:45 +0100 Subject: [PATCH 024/516] hal/components/delayline: fix missing switches --- src/hal/components/delayline.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/hal/components/delayline.c b/src/hal/components/delayline.c index a879f6d532..f2889a2559 100644 --- a/src/hal/components/delayline.c +++ b/src/hal/components/delayline.c @@ -214,6 +214,7 @@ static void write_sample_to_ring(void *arg, long period) case HAL_U64: set_u64_value(hd->pins_out[j], get_u64_value(hd->pins_in[j])); break; + case HAL_TYPE_MAX: case HAL_TYPE_UNSPECIFIED: // an error - should fail loudly TBD ; @@ -252,6 +253,7 @@ static void write_sample_to_ring(void *arg, long period) case HAL_U64: set_u64_value(&s->value[j], get_u64_value(hd->pins_in[j])); break; + case HAL_TYPE_MAX: case HAL_TYPE_UNSPECIFIED: // an error - should fail loudly TBD ; @@ -294,6 +296,7 @@ static inline void apply(const sample_t *s, const hal_delayline_t *hd) case HAL_U64: set_u64_value(hd->pins_out[i], get_u64_value(&s->value[i])); break; + case HAL_TYPE_MAX: case HAL_TYPE_UNSPECIFIED: // an error - should fail loudly TBD ; @@ -479,6 +482,13 @@ static int export_delayline(int n) case HAL_S32: str_type = "s32"; break; + case HAL_S64: + str_type = "s64"; + break; + case HAL_U64: + str_type = "u64"; + break; + case HAL_TYPE_MAX: case HAL_TYPE_UNSPECIFIED: // do nothing break; From 3f830af8872b11779508c4d6fbaf13b2f4346c3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Thu, 23 Mar 2017 17:21:53 +0100 Subject: [PATCH 025/516] hal/cython: fix warnings --- src/hal/cython/machinekit/hal_component.pyx | 4 ++-- src/hal/cython/machinekit/hal_pin.pyx | 6 +++++- src/hal/cython/machinekit/hal_priv.pxd | 2 +- src/hal/cython/machinekit/rtapi.pyx | 5 +++-- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/hal/cython/machinekit/hal_component.pyx b/src/hal/cython/machinekit/hal_component.pyx index 100e8249a6..98e09f059f 100644 --- a/src/hal/cython/machinekit/hal_component.pyx +++ b/src/hal/cython/machinekit/hal_component.pyx @@ -8,7 +8,7 @@ cdef class Component(HALObject): cdef dict _itemdict cdef int _handle - def __cinit__(self, name, mode=TYPE_USER, int userarg1=0, int userarg2=0, + def __cinit__(self, char *name, mode=TYPE_USER, int userarg1=0, int userarg2=0, wrap=False, noexit=False, lock=True): global _comps hal_required() @@ -16,7 +16,7 @@ cdef class Component(HALObject): with HALMutexIf(lock): self._cc = NULL if not wrap: - self._o.comp = halg_xinitf(0, mode, userarg1, userarg2, NULL, NULL, name) + self._o.comp = halg_xinitf(0, mode, userarg1, userarg2, NULL, NULL, "%s", name) if self._o.comp == NULL: raise RuntimeError("Failed to create component '%s': - %s" % (name, hal_lasterror())) diff --git a/src/hal/cython/machinekit/hal_pin.pyx b/src/hal/cython/machinekit/hal_pin.pyx index 0268723573..b8ed2240c4 100644 --- a/src/hal/cython/machinekit/hal_pin.pyx +++ b/src/hal/cython/machinekit/hal_pin.pyx @@ -12,6 +12,8 @@ def describe_hal_dir(haldir): cdef class _Pin(HALObject): def __cinit__(self, *args, init=None, eps=0, wrap=True, lock=True): + cdef bytes c_bytes + cdef char *c_name hal_required() # _Pin() has slightly different calling conventions due to @@ -39,9 +41,11 @@ cdef class _Pin(HALObject): raise RuntimeError("pin %s : epsilon" " index out of range" % (name, eps)) + c_bytes = name.encode() + c_name = c_bytes self._o.pin = halg_pin_newf(0, t, dir, NULL, #v2 # (self._storage), - (comp).id,name,) + (comp).id, "%s", c_name) if self._o.pin == NULL: raise RuntimeError("Fail to create pin %s:" " %d %s" % (name, _halerrno, hal_lasterror())) diff --git a/src/hal/cython/machinekit/hal_priv.pxd b/src/hal/cython/machinekit/hal_priv.pxd index 435583be9d..f2dcd0aeb6 100644 --- a/src/hal/cython/machinekit/hal_priv.pxd +++ b/src/hal/cython/machinekit/hal_priv.pxd @@ -181,7 +181,7 @@ cdef extern from "hal_priv.h": const int dir, void **data_ptr_addr, const int owner_id, - const char *name) + const char *name, ...) # accessors hal_sig_t *signal_of(const hal_pin_t *pin) diff --git a/src/hal/cython/machinekit/rtapi.pyx b/src/hal/cython/machinekit/rtapi.pyx index 05b9f25b2e..c0f6224695 100644 --- a/src/hal/cython/machinekit/rtapi.pyx +++ b/src/hal/cython/machinekit/rtapi.pyx @@ -105,8 +105,9 @@ cdef class RTAPILogger: self._tag = tag def write(self,line): - l = line.rstrip(" \t\f\v\n\r") - rtapi_print_msg(self._level, l) + cdef bytes py_bytes = line.rstrip(" \t\f\v\n\r").encode() + cdef char *c_string = py_bytes + rtapi_print_msg(self._level, "%s", c_string) def flush(self): pass From cdfe84ee09e14364667c660b85da0e8b939d6a73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Thu, 23 Mar 2017 17:22:10 +0100 Subject: [PATCH 026/516] halmodule: add U64 and S64 data types --- src/hal/lib/halmodule.cc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/hal/lib/halmodule.cc b/src/hal/lib/halmodule.cc index 621b828c33..93ede2df5d 100644 --- a/src/hal/lib/halmodule.cc +++ b/src/hal/lib/halmodule.cc @@ -43,6 +43,8 @@ union paramunion { hal_bit_t b; hal_u32_t u32; hal_s32_t s32; + hal_u64_t u64; + hal_s64_t s64; hal_float_t f; }; @@ -51,6 +53,8 @@ union pinunion { hal_bit_t *b; hal_u32_t *u32; hal_s32_t *s32; + hal_u64_t *u64; + hal_s64_t *s64; hal_float_t *f; }; @@ -273,7 +277,10 @@ static PyObject *pyhal_read_common(halitem *item) { case HAL_BIT: return PyBool_FromLong(*(item->u->pin.b)); case HAL_U32: return PyLong_FromUnsignedLong(*(item->u->pin.u32)); case HAL_S32: return PyInt_FromLong(*(item->u->pin.s32)); + case HAL_U64: return PyLong_FromUnsignedLong(*(item->u->pin.u64)); + case HAL_S64: return PyInt_FromLong(*(item->u->pin.s64)); case HAL_FLOAT: return PyFloat_FromDouble(*(item->u->pin.f)); + case HAL_TYPE_MAX: /* fallthrough */ ; case HAL_TYPE_UNSPECIFIED: /* fallthrough */ ; } } else { @@ -281,7 +288,10 @@ static PyObject *pyhal_read_common(halitem *item) { case HAL_BIT: return PyBool_FromLong(item->u->param.b); case HAL_U32: return PyLong_FromUnsignedLong(item->u->param.u32); case HAL_S32: return PyInt_FromLong(item->u->param.s32); + case HAL_U64: return PyLong_FromUnsignedLong(item->u->param.u64); + case HAL_S64: return PyInt_FromLong(item->u->param.s64); case HAL_FLOAT: return PyFloat_FromDouble(item->u->param.f); + case HAL_TYPE_MAX: /* fallthrough */ ; case HAL_TYPE_UNSPECIFIED: /* fallthrough */ ; } } From d8ed286431acc7e18285ef71a57b21db4d7a5ba5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Thu, 23 Mar 2017 17:22:25 +0100 Subject: [PATCH 027/516] hal/drivers/serport: fix broken statement --- src/hal/drivers/serport.comp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hal/drivers/serport.comp b/src/hal/drivers/serport.comp index 9d66427003..8fba16585a 100644 --- a/src/hal/drivers/serport.comp +++ b/src/hal/drivers/serport.comp @@ -105,7 +105,7 @@ FUNCTION(read) { pin_9_in_not = (i & RI) == RI; pin_1_in = (i & DCD) == 0; - pin_1_in_not = !(i & DCD) == DCD; + pin_1_in_not = (i & DCD) == DCD; pin_6_in = (i & DSR) == 0; pin_6_in_not = (i & DSR) == DSR; From 584cef5adb2637e74ee0a1e9cd1094e379f9059a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Thu, 23 Mar 2017 17:50:40 +0100 Subject: [PATCH 028/516] rtapi_pci: remove inline from iounmap since iounmap is not in declared and defined in the same translation unit it actually not an inline function --- src/rtapi/rtapi_pci.c | 2 +- src/rtapi/rtapi_pci.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/rtapi/rtapi_pci.c b/src/rtapi/rtapi_pci.c index 90c280f33c..d8cfb0f384 100644 --- a/src/rtapi/rtapi_pci.c +++ b/src/rtapi/rtapi_pci.c @@ -618,7 +618,7 @@ void __iomem *pci_ioremap_bar(struct pci_dev *dev, int bar) return mmio; } -inline void iounmap(volatile void __iomem *addr) +void iounmap(volatile void __iomem *addr) { unsigned int i; diff --git a/src/rtapi/rtapi_pci.h b/src/rtapi/rtapi_pci.h index ffcbcc660e..9590058203 100644 --- a/src/rtapi/rtapi_pci.h +++ b/src/rtapi/rtapi_pci.h @@ -104,7 +104,7 @@ int pci_disable_device(struct pci_dev *dev); pci_resource_start((dev), (bar)) + 1)) void __iomem *pci_ioremap_bar(struct pci_dev *pdev, int bar); -inline void iounmap(volatile void __iomem *addr); +void iounmap(volatile void __iomem *addr); static inline const char *pci_name(const struct pci_dev *pdev) { From 58a6151c93324a22430fb3873b36b7785e659dab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Sat, 25 Mar 2017 21:32:37 +0100 Subject: [PATCH 029/516] haltalk code style cleanup --- src/hal/lib/halpb.cc | 5 +- src/machinetalk/haltalk/haltalk_command.cc | 532 +++++++++++---------- src/machinetalk/haltalk/haltalk_rcomp.cc | 446 ++++++++--------- 3 files changed, 497 insertions(+), 486 deletions(-) diff --git a/src/hal/lib/halpb.cc b/src/hal/lib/halpb.cc index 7786a86ab6..1f704bb89e 100644 --- a/src/hal/lib/halpb.cc +++ b/src/hal/lib/halpb.cc @@ -59,8 +59,9 @@ halpr_describe_component(hal_comp_t *comp, machinetalk::Component *pbcomp) pbcomp->set_last_bound(comp->last_bound); pbcomp->set_last_unbound(comp->last_unbound); pbcomp->set_pid(comp->pid); - if (comp->insmod_args) - pbcomp->set_args((const char *)SHMPTR(comp->insmod_args)); + if (comp->insmod_args) { + pbcomp->set_args((const char *)SHMPTR(comp->insmod_args)); + } pbcomp->set_userarg1(comp->userarg1); pbcomp->set_userarg2(comp->userarg2); diff --git a/src/machinetalk/haltalk/haltalk_command.cc b/src/machinetalk/haltalk/haltalk_command.cc index 9262aff2e7..6b54cad38b 100644 --- a/src/machinetalk/haltalk/haltalk_command.cc +++ b/src/machinetalk/haltalk/haltalk_command.cc @@ -21,6 +21,7 @@ #include "hal_object.h" #include "pbutil.hh" #include "rtapi_hexdump.h" +#include #include @@ -90,8 +91,8 @@ validate_component(const char *name, const machinetalk::Component *pbcomp, machi hal_comp_t *hc = halpr_find_comp_by_name(name); if (hc == NULL) { - note_printf(e, "HAL component '%s' does not exist", name); - return e.note_size(); + note_printf(e, "HAL component '%s' does not exist", name); + return e.note_size(); } int npins = halpr_pin_count(name); @@ -100,89 +101,95 @@ validate_component(const char *name, const machinetalk::Component *pbcomp, machi int npbparams = pbcomp->param_size(); std::string s; - if (!pbcomp->has_name()) - note_printf(e, "pb component has no name"); + if (!pbcomp->has_name()) { + note_printf(e, "pb component has no name"); + } - if (npbpins != npins) - note_printf(e, "pin count mismatch:pb comp=%d hal comp=%d", - npbpins, npins); + if (npbpins != npins) { + note_printf(e, "pin count mismatch:pb comp=%d hal comp=%d", + npbpins, npins); + } - if (npbparams != nparams) - note_printf(e, "param count mismatch:pb comp=%d hal comp=%d", - npbparams, nparams); + if (npbparams != nparams) { + note_printf(e, "param count mismatch:pb comp=%d hal comp=%d", + npbparams, nparams); + } for (int i = 0; i < npbpins; i++) { + const machinetalk::Pin &p = pbcomp->pin().Get(i);; - const machinetalk::Pin &p = pbcomp->pin().Get(i);; - - // basic syntax - required attributes - if (!p.has_name()) { - gpb::TextFormat::PrintToString(p, &s); - note_printf(e, "pin without name: %s", s.c_str()); - continue; - } - if (!p.has_type()) { - gpb::TextFormat::PrintToString(p, &s); - note_printf(e, "pin without type: %s", s.c_str()); - continue; - } - if (!p.has_dir()) { - gpb::TextFormat::PrintToString(p, &s); - note_printf(e, "pin without dir: %s", s.c_str()); - continue; - } + // basic syntax - required attributes + if (!p.has_name()) { + gpb::TextFormat::PrintToString(p, &s); + note_printf(e, "pin without name: %s", s.c_str()); + continue; + } + if (!p.has_type()) { + gpb::TextFormat::PrintToString(p, &s); + note_printf(e, "pin without type: %s", s.c_str()); + continue; + } + if (!p.has_dir()) { + gpb::TextFormat::PrintToString(p, &s); + note_printf(e, "pin without dir: %s", s.c_str()); + continue; + } - // each pb pin must match an existing HAL pin - hal_pin_t *hp = halpr_find_pin_by_name(p.name().c_str()); - if (hp == NULL) { - note_printf(e, "HAL pin '%s' does not exist", p.name().c_str()); - } else { - // HAL pin name exists, match attributes - if (hp->type != (hal_type_t) p.type()) - note_printf(e, "HAL pin '%s' type mismatch: hal=%d pb=%d", - p.name().c_str(), hp->type, p.type()); + // each pb pin must match an existing HAL pin + hal_pin_t *hp = halpr_find_pin_by_name(p.name().c_str()); + if (hp == NULL) { + note_printf(e, "HAL pin '%s' does not exist", p.name().c_str()); + } + else { + // HAL pin name exists, match attributes + if (hp->type != (hal_type_t) p.type()) { + note_printf(e, "HAL pin '%s' type mismatch: hal=%d pb=%d", + p.name().c_str(), hp->type, p.type()); + } - if (hp->dir != (hal_pin_dir_t) p.dir()) - note_printf(e, "HAL pin '%s' direction mismatch: hal=%d pb=%d", - p.name().c_str(), hp->dir, p.dir()); - } + if (hp->dir != (hal_pin_dir_t) p.dir()) { + note_printf(e, "HAL pin '%s' direction mismatch: hal=%d pb=%d", + p.name().c_str(), hp->dir, p.dir()); + } + } } // same for params: for (int i = 0; i < npbparams; i++) { + const machinetalk::Param &p = pbcomp->param().Get(i);; - const machinetalk::Param &p = pbcomp->param().Get(i);; - - // basic syntax - required attributes - if (!p.has_name()) { - gpb::TextFormat::PrintToString(p, &s); - note_printf(e, "param withtout name: %s", s.c_str()); - continue; - } - if (!p.has_type()) { - gpb::TextFormat::PrintToString(p, &s); - note_printf(e, "param withtout type: %s", s.c_str()); - continue; - } - if (!p.has_dir()) { - gpb::TextFormat::PrintToString(p, &s); - note_printf(e, "param withtout direction: %s", s.c_str()); - continue; - } + // basic syntax - required attributes + if (!p.has_name()) { + gpb::TextFormat::PrintToString(p, &s); + note_printf(e, "param withtout name: %s", s.c_str()); + continue; + } + if (!p.has_type()) { + gpb::TextFormat::PrintToString(p, &s); + note_printf(e, "param withtout type: %s", s.c_str()); + continue; + } + if (!p.has_dir()) { + gpb::TextFormat::PrintToString(p, &s); + note_printf(e, "param withtout direction: %s", s.c_str()); + continue; + } - // each pb param must match an existing HAL param - hal_param_t *hp = halpr_find_param_by_name(p.name().c_str()); - if (hp == NULL) { - note_printf(e, "HAL param '%s' does not exist", p.name().c_str()); - } else { - // HAL param name exists, match attributes - if (hp->type != (hal_type_t) p.type()) - note_printf(e, "HAL param '%s' type mismatch: hal=%d pb=%d", + // each pb param must match an existing HAL param + hal_param_t *hp = halpr_find_param_by_name(p.name().c_str()); + if (hp == NULL) { + note_printf(e, "HAL param '%s' does not exist", p.name().c_str()); + } else { + // HAL param name exists, match attributes + if (hp->type != (hal_type_t) p.type()) { + note_printf(e, "HAL param '%s' type mismatch: hal=%d pb=%d", hp->type, p.type()); + } - if (hp->dir != (hal_param_dir_t) p.dir()) - note_printf(e, "HAL param '%s' direction mismatch: hal=%d pb=%d", - hp->dir, p.dir()); - } + if (hp->dir != (hal_param_dir_t) p.dir()) { + note_printf(e, "HAL param '%s' direction mismatch: hal=%d pb=%d", + hp->dir, p.dir()); + } + } } // this matching on pb objects only will not explicitly // enumerate HAL pins and params which are not in the pb request, @@ -320,113 +327,115 @@ process_rcomp_bind(htself_t *self, zmsg_t *from, // validate pinlist attributes if pins are present - // to create a pin, it must have, name, type, direction for (int i = 0; i < pbcomp->pin_size(); i++) { - const machinetalk::Pin &p = pbcomp->pin(i); - if (!(p.has_name() && - p.has_type() && - p.has_dir())) { - - // TODO if (type < HAL_BIT || type > HAL_U32) - gpb::TextFormat::PrintToString(p, &s); - zframe_t *o = zmsg_first (from); // freed with msg - std::string origin( (const char *) zframe_data(o), zframe_size(o)); - note_printf(self->tx, - "request %d from %s: invalid pin - name, type or dir missing: Pin=(%s)", - self->rx.type(), origin.c_str(), s.c_str()); - } + const machinetalk::Pin &p = pbcomp->pin(i); + if (!(p.has_name() && + p.has_type() && + p.has_dir())) { + + // TODO if (type < HAL_BIT || type > HAL_U32) + gpb::TextFormat::PrintToString(p, &s); + zframe_t *o = zmsg_first (from); // freed with msg + std::string origin( (const char *) zframe_data(o), zframe_size(o)); + note_printf(self->tx, + "request %d from %s: invalid pin - name, type or dir missing: Pin=(%s)", + self->rx.type(), origin.c_str(), s.c_str()); + } } // reply if any bad news so far - if (self->tx.note_size() > 0) - return send_pbcontainer(from, self->tx, socket); - + if (self->tx.note_size() > 0) { + return send_pbcontainer(from, self->tx, socket); + } // see if component already exists if (self->rcomps.count(cname) == 0) { - // check if any rcomps defined in HAL since startup - scan_comps(self); + // check if any rcomps defined in HAL since startup + scan_comps(self); } if (self->rcomps.count(cname) == 0) { + // fail if no_create flag is set in Component submessage + // meaning: bind succeeds only if the component exists + if (pbcomp->has_no_create() && pbcomp->no_create()) { + zframe_t *o = zmsg_first (from); // freed with msg + std::string origin( (const char *) zframe_data(o), zframe_size(o)); + note_printf(self->tx, + "request %d from '%s': Component not created since no_create flag set", + self->rx.type(), origin.c_str()); + return send_pbcontainer(from, self->tx, socket); + } - // fail if no_create flag is set in Component submessage - // meaning: bind succeeds only if the component exists - if (pbcomp->has_no_create() && pbcomp->no_create()) { - zframe_t *o = zmsg_first (from); // freed with msg - std::string origin( (const char *) zframe_data(o), zframe_size(o)); - note_printf(self->tx, - "request %d from '%s': Component not created since no_create flag set", - self->rx.type(), origin.c_str()); - return send_pbcontainer(from, self->tx, socket); - } + // see if component already exists + // there might be a comp but user might have + // left out the 'ready ' step or forgotten to call 'hal_ready()' + // in which case the comp will be in state COMP_INITIALIZING + int compstate = hal_comp_state_by_name(cname); + if (compstate == COMP_INITIALIZING) { + note_printf(self->tx, "component '%s' exists but has state COMP_INITIALIZING", cname); + note_printf(self->tx, "this could be caused by a missing hal_ready() call or " + "a missing 'ready ' halcmd statement"); + return send_pbcontainer(from, self->tx, socket); + } - // see if component already exists - // there might be a comp but user might have - // left out the 'ready ' step or forgotten to call 'hal_ready()' - // in which case the comp will be in state COMP_INITIALIZING - int compstate = hal_comp_state_by_name(cname); - if (compstate == COMP_INITIALIZING) { - - note_printf(self->tx, "component '%s' exists but has state COMP_INITIALIZING", cname); - note_printf(self->tx, "this could be caused by a missing hal_ready() call or " - "a missing 'ready ' halcmd statement"); - return send_pbcontainer(from, self->tx, socket); + // still no, new component being created remotely + // any errors accumulate in self->tx.note + rc = create_rcomp(self, pbcomp, from, socket); + if (rc) { + self->rcomps[cname] = rc; + // acquire and bind happens during subscribe + } } + else { + // component exists + rc = self->rcomps[cname]; + // validate request against existing comp + retval = validate_component(cname, pbcomp, self->tx); + if (retval) { + zframe_t *o = zmsg_first (from); // freed with msg + std::string origin( (const char *) zframe_data(o), zframe_size(o)); + rtapi_print_msg(RTAPI_MSG_ERR, + "%s: bind request from %s:" + " mismatch against existing HAL component", + self->cfg->progname, origin.c_str()); + return send_pbcontainer(from, self->tx, socket); + } - // still no, new component being created remotely - // any errors accumulate in self->tx.note - rc = create_rcomp(self, pbcomp, from, socket); - if (rc) { - self->rcomps[cname] = rc; - // acquire and bind happens during subscribe - } - } else { - // component exists - rc = self->rcomps[cname]; - // validate request against existing comp - retval = validate_component(cname, pbcomp, self->tx); - if (retval) { - zframe_t *o = zmsg_first (from); // freed with msg - std::string origin( (const char *) zframe_data(o), zframe_size(o)); - rtapi_print_msg(RTAPI_MSG_ERR, - "%s: bind request from %s:" - " mismatch against existing HAL component", - self->cfg->progname, origin.c_str()); - return send_pbcontainer(from, self->tx, socket); + // decide here if we want to carry over pin/param values + // passed in the BIND request. + // one possible route is to set pins only if the comp + // is not currently bound, and was never bound before; this is made conditional + // on a flag in the comp userarg2 so its optional and must be set + // explicitly + // + // purpose: apply initial values from UI widgets + // together with the waitbound halcmd operation this assures all values + // are set up once waitbound finishes + // + hal_comp_t *c = rc->cc->comp; + if ((c->userarg2 & RCOMP_ACCEPT_VALUES_ON_BIND) && // option set + (c->last_bound == 0) && // never bound before + (c->state == COMP_UNBOUND)) { // currently unbound + rtapi_print_msg(RTAPI_MSG_DBG, + "%s: comp %s first bind, accepting initial pin values from BIND request", + self->cfg->progname, ho_name(c)); + if (apply_initial_values(self, pbcomp)) { + return send_pbcontainer(from, self->tx, socket); + } + } } - // decide here if we want to carry over pin/param values - // passed in the BIND request. - // one possible route is to set pins only if the comp - // is not currently bound, and was never bound before; this is made conditional - // on a flag in the comp userarg2 so its optional and must be set - // explicitly - // - // purpose: apply initial values from UI widgets - // together with the waitbound halcmd operation this assures all values - // are set up once waitbound finishes - // - hal_comp_t *c = rc->cc->comp; - if ((c->userarg2 & RCOMP_ACCEPT_VALUES_ON_BIND) && // option set - (c->last_bound == 0) && // never bound before - (c->state == COMP_UNBOUND)) { // currently unbound - rtapi_print_msg(RTAPI_MSG_DBG, - "%s: comp %s first bind, accepting initial pin values from BIND request", - self->cfg->progname, ho_name(c)); - if (apply_initial_values(self, pbcomp)) - return send_pbcontainer(from, self->tx, socket); - } - } // all good. if (rc) { - // a valid component, either existing or new. - WITH_HAL_MUTEX(); + // a valid component, either existing or new. + WITH_HAL_MUTEX(); - machinetalk::Component *c = self->tx.add_comp(); - hal_comp_t *comp = halpr_find_comp_by_name(cname); - assert(comp != NULL); - self->tx.set_type(machinetalk::MT_HALRCOMP_BIND_CONFIRM); - self->tx.set_uuid(&self->netopts.proc_uuid, sizeof(uuid_t)); - retval = halpr_describe_component(comp, c); - assert(retval == 0); + machinetalk::Component *c = self->tx.add_comp(); + hal_comp_t *comp = halpr_find_comp_by_name(cname); + assert(comp != NULL); + self->tx.set_type(machinetalk::MT_HALRCOMP_BIND_CONFIRM); + self->tx.set_uuid(&self->netopts.proc_uuid, sizeof(uuid_t)); + retval = halpr_describe_component(comp, c); + assert(retval == 0); } + return send_pbcontainer(from, self->tx, socket); } @@ -441,54 +450,54 @@ dispatch_request(htself_t *self, zmsg_t *from, void *socket) switch (type) { case machinetalk::MT_PING: - retval = process_ping(self, from, socket); - break; + retval = process_ping(self, from, socket); + break; case machinetalk::MT_HALRCOMP_BIND: - // check for component submessages, and fail if none present - if (self->rx.comp_size() == 0) { - zframe_t *o = zmsg_first (from); // freed with msg - std::string origin( (const char *) zframe_data(o), zframe_size(o)); - note_printf(self->tx, "request %d from '%s': no Component submessage", - self->rx.type(), origin.c_str()); - return send_pbcontainer(from, self->tx, socket); - } - // bind them all - for (int i = 0; i < self->rx.comp_size(); i++) { - const machinetalk::Component *pbcomp = &self->rx.comp(i); - retval = process_rcomp_bind(self, from, pbcomp, socket); - } - break; + // check for component submessages, and fail if none present + if (self->rx.comp_size() == 0) { + zframe_t *o = zmsg_first (from); // freed with msg + std::string origin( (const char *) zframe_data(o), zframe_size(o)); + note_printf(self->tx, "request %d from '%s': no Component submessage", + self->rx.type(), origin.c_str()); + return send_pbcontainer(from, self->tx, socket); + } + // bind them all + for (int i = 0; i < self->rx.comp_size(); i++) { + const machinetalk::Component *pbcomp = &self->rx.comp(i); + retval = process_rcomp_bind(self, from, pbcomp, socket); + } + break; // HAL object set/get ops case machinetalk::MT_HALRCOMMAND_SET: case machinetalk::MT_HALRCOMP_SET: // XXX: param missing - retval = process_set(self, type == machinetalk::MT_HALRCOMP_SET, from, socket); - break; + retval = process_set(self, type == machinetalk::MT_HALRCOMP_SET, from, socket); + break; case machinetalk::MT_HALRCOMMAND_GET: // XXX: param missing - retval = process_get(self, from, socket); - break; + retval = process_get(self, from, socket); + break; case machinetalk::MT_HALRCOMMAND_DESCRIBE: - self->tx.set_type(machinetalk::MT_HALRCOMMAND_DESCRIPTION); - retval = process_describe(self, from, socket); - break; + self->tx.set_type(machinetalk::MT_HALRCOMMAND_DESCRIPTION); + retval = process_describe(self, from, socket); + break; // NIY - fall through: case machinetalk::MT_HALRCOMMAND_CREATE: case machinetalk::MT_HALRCOMMAND_DELETE: default: - self->tx.set_type(machinetalk::MT_HALRCOMMAND_ERROR); - note_printf(self->tx, "rcommand %d: not implemented", self->rx.type()); - send_pbcontainer(from, self->tx, socket); - zframe_t *o = zmsg_first (from); // freed with msg - std::string origin( (const char *) zframe_data(o), zframe_size(o)); - rtapi_print_msg(RTAPI_MSG_ERR, "%s: rcommand from %s : unhandled type %d", - self->cfg->progname, origin.c_str(), (int) self->rx.type()); - retval = -1; + self->tx.set_type(machinetalk::MT_HALRCOMMAND_ERROR); + note_printf(self->tx, "rcommand %d: not implemented", self->rx.type()); + send_pbcontainer(from, self->tx, socket); + zframe_t *o = zmsg_first (from); // freed with msg + std::string origin( (const char *) zframe_data(o), zframe_size(o)); + rtapi_print_msg(RTAPI_MSG_ERR, "%s: rcommand from %s : unhandled type %d", + self->cfg->progname, origin.c_str(), (int) self->rx.type()); + retval = -1; } return retval; } @@ -669,64 +678,65 @@ process_get(htself_t *self, zmsg_t *from, void *socket) itemmap_iterator it; for (int i = 0; i < self->rx.pin_size(); i++) { - const machinetalk::Pin &p = self->rx.pin(i); - if (p.has_handle()) { - int handle = p.handle(); - it = self->items.find(handle); - if (it != self->items.end()) { - hal_object_ptr o = it->second; - if (hh_get_object_type(o.hdr) != HAL_PIN) { - note_printf(self->tx, - "get pin: handle type mismatch - not a pin: handle=%d type=%s", - handle, hh_get_object_typestr(o.hdr)); - continue; - } - // hal_pin_t *hp = hi->o.pin; - // assert(hp != NULL); - machinetalk::Pin *pbpin = self->tx.add_pin(); - // reply with just value and handle - pbpin->set_handle(ho_id(o.pin)); - hal_pin2pb(o.pin, pbpin); - } - } else { - if (!p.has_name()) { - note_printf(self->tx, - "get pin: no name and no handle!"); - continue; + const machinetalk::Pin &p = self->rx.pin(i); + if (p.has_handle()) { + int handle = p.handle(); + it = self->items.find(handle); + if (it != self->items.end()) { + hal_object_ptr o = it->second; + if (hh_get_object_type(o.hdr) != HAL_PIN) { + note_printf(self->tx, + "get pin: handle type mismatch - not a pin: handle=%d type=%s", + handle, hh_get_object_typestr(o.hdr)); + continue; + } + // hal_pin_t *hp = hi->o.pin; + // assert(hp != NULL); + machinetalk::Pin *pbpin = self->tx.add_pin(); + // reply with just value and handle + pbpin->set_handle(ho_id(o.pin)); + hal_pin2pb(o.pin, pbpin); + } + } else { + if (!p.has_name()) { + note_printf(self->tx, + "get pin: no name and no handle!"); + continue; + } + // for named get, reply with full decoration + describe_pin_by_name(self, p.name().c_str()); } - // for named get, reply with full decoration - describe_pin_by_name(self, p.name().c_str()); - } } + for (int i = 0; i < self->rx.signal_size(); i++) { - const machinetalk::Signal &s = self->rx.signal(i); - if (s.has_handle()) { - int handle = s.handle(); - it = self->items.find(handle); - if (it != self->items.end()) { - hal_object_ptr o = it->second; - if (hh_get_object_type(o.hdr) != HAL_SIGNAL) { - note_printf(self->tx, - "get signal: handle type mismatch - not a signal: handle=%d type=%s", - handle, hh_get_object_typestr(o.hdr)); - continue; - } - // hal_sig_t *hs = hi->o.signal; - // assert(hs != NULL); - machinetalk::Signal *pbsignal = self->tx.add_signal(); - // reply with just value and handle - pbsignal->set_handle(ho_id(o.sig)); - hal_sig2pb(o.sig, pbsignal); - } - } else { - if (!s.has_name()) { - note_printf(self->tx, - "get signal: no name and no handle!"); - continue; + const machinetalk::Signal &s = self->rx.signal(i); + if (s.has_handle()) { + int handle = s.handle(); + it = self->items.find(handle); + if (it != self->items.end()) { + hal_object_ptr o = it->second; + if (hh_get_object_type(o.hdr) != HAL_SIGNAL) { + note_printf(self->tx, + "get signal: handle type mismatch - not a signal: handle=%d type=%s", + handle, hh_get_object_typestr(o.hdr)); + continue; + } + // hal_sig_t *hs = hi->o.signal; + // assert(hs != NULL); + machinetalk::Signal *pbsignal = self->tx.add_signal(); + // reply with just value and handle + pbsignal->set_handle(ho_id(o.sig)); + hal_sig2pb(o.sig, pbsignal); + } + } else { + if (!s.has_name()) { + note_printf(self->tx, + "get signal: no name and no handle!"); + continue; + } + // for named get, reply with full decoration + describe_signal_by_name(self, s.name().c_str()); } - // for named get, reply with full decoration - describe_signal_by_name(self, s.name().c_str()); - } } // XXX: add param handling here @@ -745,25 +755,25 @@ int describe_pin_by_name(htself_t *self, const char *name) itemmap_iterator it; hal_pin_t *hp = halpr_find_pin_by_name(name); if (hp == NULL) { - note_printf(self->tx, "no such pin: '%s'", name); - return -1; + note_printf(self->tx, "no such pin: '%s'", name); + return -1; } // add to items if not yet present it = self->items.find(ho_id(hp)); if (it == self->items.end()) { - // pin not found. add to items - hal_object_ptr o; - o.pin = hp; - // halitem_t *hi = new halitem_t(); - // hi->type = HAL_PIN; - // hi->o.pin = hp; - // if (hh_get_legacy(&hp->hdr)) { - // hi->ptr = SHMPTR(hp->data_ptr_addr); - // } else { - // // hi->ptr = - // } - self->items[ho_id(hp)] = o; - // printf("add pin %s to items\n", hp->name); + // pin not found. add to items + hal_object_ptr o; + o.pin = hp; + // halitem_t *hi = new halitem_t(); + // hi->type = HAL_PIN; + // hi->o.pin = hp; + // if (hh_get_legacy(&hp->hdr)) { + // hi->ptr = SHMPTR(hp->data_ptr_addr); + // } else { + // // hi->ptr = + // } + self->items[ho_id(hp)] = o; + // printf("add pin %s to items\n", hp->name); } // add binding in reply - includes handle machinetalk::Pin *pbpin = self->tx.add_pin(); diff --git a/src/machinetalk/haltalk/haltalk_rcomp.cc b/src/machinetalk/haltalk/haltalk_rcomp.cc index 5ddb1bea77..e2a8370aa2 100644 --- a/src/machinetalk/haltalk/haltalk_rcomp.cc +++ b/src/machinetalk/haltalk/haltalk_rcomp.cc @@ -22,17 +22,17 @@ static int comp_report_cb(const int phase, - const hal_compiled_comp_t *cc, - const hal_pin_t *pin, - const hal_data_u *vp, - void *cb_data); + const hal_compiled_comp_t *cc, + const hal_pin_t *pin, + const hal_data_u *vp, + void *cb_data); static int add_pins_to_items(const int phase, - const hal_compiled_comp_t *cc, - const hal_pin_t *pin, - const hal_data_u *vp, - void *cb_data); + const hal_compiled_comp_t *cc, + const hal_pin_t *pin, + const hal_data_u *vp, + void *cb_data); // handle timer event for a rcomp - report any changes in comp int @@ -40,7 +40,7 @@ handle_rcomp_timer(zloop_t *loop, int timer_id, void *arg) { rcomp_t *rc = (rcomp_t *) arg; if (hal_ccomp_match(rc->cc)) - hal_ccomp_report(rc->cc, comp_report_cb, rc, rc->flags); + hal_ccomp_report(rc->cc, comp_report_cb, rc, rc->flags); return 0; } @@ -57,87 +57,87 @@ handle_rcomp_input(zloop_t *loop, zmq_pollitem_t *poller, void *arg) size_t nframes = zmsg_size( msg); if (nframes == 1) { - // likely a subscribe/unsubscribe message - - zframe_t *f = zmsg_first(msg); // leaves message intact - char *data = (char *) zframe_data(f); - assert(data); - char *topic = data + 1; - - switch (*data) { - - case '\001': - - // scan for, and adopt any recently created rcomps - // so subscribe to them works (after haltalk was started) - scan_comps(self); - - if (self->rcomps.count(topic) == 0) { - rtapi_print_msg(RTAPI_MSG_ERR, "%s: subscribe - no comp '%s'", - self->cfg->progname, topic); - - // not found, publish an error message on this topic - self->tx.set_type(machinetalk::MT_HALRCOMP_ERROR); - note_printf(self->tx, "component '%s' does not exist", topic); - retval = send_pbcontainer(topic, self->tx, self->mksock[SVC_HALRCOMP].socket); - assert(retval == 0); - - } else { - // compiled component found, schedule a full update - rcomp_t *g = self->rcomps[topic]; - self->tx.set_type(machinetalk::MT_HALRCOMP_FULL_UPDATE); - self->tx.set_uuid(self->netopts.proc_uuid, sizeof(self->netopts.proc_uuid)); - self->tx.set_serial(g->serial++); - describe_parameters(self); - describe_comp(self, topic, topic, poller->socket); - - // first subscriber - activate scanning - if (g->timer_id < 0) { // not scanning - g->timer_id = zloop_timer(self->netopts.z_loop, g->msec, 0, - handle_rcomp_timer, (void *)g); - assert(g->timer_id > -1); - rtapi_print_msg(RTAPI_MSG_DBG, - "%s: start scanning comp %s, tid=%d, %d mS, %d pins tracked", - self->cfg->progname, topic, g->timer_id, g->msec, g->cc->n_pins); - } - - if (g->cc->comp->state == COMP_UNBOUND) { - // once only by first subscriber - hal_bind(topic); - rtapi_print_msg(RTAPI_MSG_DBG, "%s: %s bound, serial=%d", - self->cfg->progname, topic, g->serial); - } else - rtapi_print_msg(RTAPI_MSG_DBG, "%s: %s subscribed, serial=%d", - self->cfg->progname, topic, g->serial); - } - break; - - case '\000': - // last subscriber went away - unbind the component - if (self->rcomps.count(topic) > 0) { - rcomp_t *g = self->rcomps[topic]; - - // stop the scanning timer - if (g->timer_id > -1) { // currently scanning - rtapi_print_msg(RTAPI_MSG_DBG, "%s: stop scanning comp %s, tid=%d", - self->cfg->progname, topic, g->timer_id); - retval = zloop_timer_end (loop, g->timer_id); - assert(retval == 0); - g->timer_id = -1; - } - hal_unbind(topic); - rtapi_print_msg(RTAPI_MSG_DBG, "%s: %s unbound", - self->cfg->progname, topic); - } - break; - - default: - zmsg_destroy(&msg); - } - return 0; + // likely a subscribe/unsubscribe message + + zframe_t *f = zmsg_first(msg); // leaves message intact + char *data = (char *) zframe_data(f); + assert(data); + char *topic = data + 1; + + switch (*data) { + + case '\001': + + // scan for, and adopt any recently created rcomps + // so subscribe to them works (after haltalk was started) + scan_comps(self); + + if (self->rcomps.count(topic) == 0) { + rtapi_print_msg(RTAPI_MSG_ERR, "%s: subscribe - no comp '%s'", + self->cfg->progname, topic); + + // not found, publish an error message on this topic + self->tx.set_type(machinetalk::MT_HALRCOMP_ERROR); + note_printf(self->tx, "component '%s' does not exist", topic); + retval = send_pbcontainer(topic, self->tx, self->mksock[SVC_HALRCOMP].socket); + assert(retval == 0); + + } else { + // compiled component found, schedule a full update + rcomp_t *g = self->rcomps[topic]; + self->tx.set_type(machinetalk::MT_HALRCOMP_FULL_UPDATE); + self->tx.set_uuid(self->netopts.proc_uuid, sizeof(self->netopts.proc_uuid)); + self->tx.set_serial(g->serial++); + describe_parameters(self); + describe_comp(self, topic, topic, poller->socket); + + // first subscriber - activate scanning + if (g->timer_id < 0) { // not scanning + g->timer_id = zloop_timer(self->netopts.z_loop, g->msec, 0, + handle_rcomp_timer, (void *)g); + assert(g->timer_id > -1); + rtapi_print_msg(RTAPI_MSG_DBG, + "%s: start scanning comp %s, tid=%d, %d mS, %d pins tracked", + self->cfg->progname, topic, g->timer_id, g->msec, g->cc->n_pins); + } + + if (g->cc->comp->state == COMP_UNBOUND) { + // once only by first subscriber + hal_bind(topic); + rtapi_print_msg(RTAPI_MSG_DBG, "%s: %s bound, serial=%d", + self->cfg->progname, topic, g->serial); + } else + rtapi_print_msg(RTAPI_MSG_DBG, "%s: %s subscribed, serial=%d", + self->cfg->progname, topic, g->serial); + } + break; + + case '\000': + // last subscriber went away - unbind the component + if (self->rcomps.count(topic) > 0) { + rcomp_t *g = self->rcomps[topic]; + + // stop the scanning timer + if (g->timer_id > -1) { // currently scanning + rtapi_print_msg(RTAPI_MSG_DBG, "%s: stop scanning comp %s, tid=%d", + self->cfg->progname, topic, g->timer_id); + retval = zloop_timer_end (loop, g->timer_id); + assert(retval == 0); + g->timer_id = -1; + } + hal_unbind(topic); + rtapi_print_msg(RTAPI_MSG_DBG, "%s: %s unbound", + self->cfg->progname, topic); + } + break; + + default: + zmsg_destroy(&msg); + } + return 0; } else { - zmsg_destroy(&msg); + zmsg_destroy(&msg); } return 0; } @@ -151,57 +151,57 @@ static int scan_component(hal_object_ptr o, foreach_args_t *args) // collect any unbound, un-aquired remote comps // which we dont know about yet if ((comp->type == TYPE_REMOTE) && - (comp->pid == 0) && - (comp->state == COMP_UNBOUND) && - (self->rcomps.count(ho_name(comp)) == 0)) { - - const char *name = ho_name(comp); - - rtapi_print_msg(RTAPI_MSG_DBG, "%s: found unbound remote comp '%s'", - self->cfg->progname, name); - - if ((retval = halg_acquire(false, ho_name(comp), self->pid)) < 0) { - rtapi_print_msg(RTAPI_MSG_ERR, - "%s: halg_acquire(%s) failed: %s", - self->cfg->progname, - name, strerror(-retval)); - args->user_arg1++; // errorcount returned - return 0; // indicate continue iteration - } - rtapi_print_msg(RTAPI_MSG_DBG, "%s: acquired '%s'", - self->cfg->progname, name); - - hal_compiled_comp_t *cc; - if ((retval = halg_compile_comp(false, name, &cc))) { - rtapi_print_msg(RTAPI_MSG_ERR, - "%s: scan_comps:hal_compile_comp(%s) failed" - " - skipping component: %s", - self->cfg->progname, - name, strerror(-retval)); - args->user_arg1++; - return 0; // indicate continue iteration - } - // add pins to items dict - hal_ccomp_report(cc, add_pins_to_items, self, true); - - int arg1, arg2; - hal_ccomp_args(cc, &arg1, &arg2); - int msec = arg1 ? arg1 : self->cfg->default_rcomp_timer; - - rcomp_t *rc = new rcomp_t(); - rc->flags = 0; - rc->self = self; - rc->cc = cc; - rc->serial = 0; - rc->msec = msec; - rc->timer_id = -1; // invalid - - self->rcomps[name] = rc; // all prepared, timer not yet started - - rtapi_print_msg(RTAPI_MSG_DBG, - "%s: component '%s' - using %d mS poll interval", - self->cfg->progname, name, msec); - args->user_arg2++; + (comp->pid == 0) && + (comp->state == COMP_UNBOUND) && + (self->rcomps.count(ho_name(comp)) == 0)) { + + const char *name = ho_name(comp); + + rtapi_print_msg(RTAPI_MSG_DBG, "%s: found unbound remote comp '%s'", + self->cfg->progname, name); + + if ((retval = halg_acquire(false, ho_name(comp), self->pid)) < 0) { + rtapi_print_msg(RTAPI_MSG_ERR, + "%s: halg_acquire(%s) failed: %s", + self->cfg->progname, + name, strerror(-retval)); + args->user_arg1++; // errorcount returned + return 0; // indicate continue iteration + } + rtapi_print_msg(RTAPI_MSG_DBG, "%s: acquired '%s'", + self->cfg->progname, name); + + hal_compiled_comp_t *cc; + if ((retval = halg_compile_comp(false, name, &cc))) { + rtapi_print_msg(RTAPI_MSG_ERR, + "%s: scan_comps:hal_compile_comp(%s) failed" + " - skipping component: %s", + self->cfg->progname, + name, strerror(-retval)); + args->user_arg1++; + return 0; // indicate continue iteration + } + // add pins to items dict + hal_ccomp_report(cc, add_pins_to_items, self, true); + + int arg1, arg2; + hal_ccomp_args(cc, &arg1, &arg2); + int msec = arg1 ? arg1 : self->cfg->default_rcomp_timer; + + rcomp_t *rc = new rcomp_t(); + rc->flags = 0; + rc->self = self; + rc->cc = cc; + rc->serial = 0; + rc->msec = msec; + rc->timer_id = -1; // invalid + + self->rcomps[name] = rc; // all prepared, timer not yet started + + rtapi_print_msg(RTAPI_MSG_DBG, + "%s: component '%s' - using %d mS poll interval", + self->cfg->progname, name, msec); + args->user_arg2++; } return 0; } @@ -217,12 +217,12 @@ scan_comps(htself_t *self) halg_foreach(true, &args, scan_component); rtapi_print_msg(RTAPI_MSG_DBG,"adopted %d comps(s)\n", - args.user_arg2); + args.user_arg2); if (args.user_arg1 > 0) { // error counter - rtapi_print_msg(RTAPI_MSG_DBG,"%d comps(s) failed to adopt\n", - args.user_arg1); - return -args.user_arg1; + rtapi_print_msg(RTAPI_MSG_DBG,"%d comps(s) failed to adopt\n", + args.user_arg1); + return -args.user_arg1; } return 0; } @@ -232,50 +232,50 @@ int release_comps(htself_t *self) int nfail = 0, retval; for (compmap_iterator c = self->rcomps.begin(); - c != self->rcomps.end(); c++) { - - const char *name = c->first.c_str(); - rcomp_t *rc = c->second; - if (rc->cc == NULL) - // remote created, but never bound and hence - // not compiled, bound and aquired - continue; - hal_comp_t *comp = rc->cc->comp; - - // unbind all comps owned by us: - if (comp->state == COMP_BOUND) { - if (comp->pid == self->pid) { - retval = hal_unbind(name); - if (retval < 0) { - rtapi_print_msg(RTAPI_MSG_ERR, - "%s: hal_unbind(%s) failed: %s", - self->cfg->progname, - name, strerror(-retval)); - nfail++; - } else - rtapi_print_msg(RTAPI_MSG_ERR, - "%s: unbound component '%s'", - self->cfg->progname, name); - } else { - rtapi_print_msg(RTAPI_MSG_ERR, - "%s: BUG - comp %s bound but not by haltalk: %d/%d", - self->cfg->progname, name, self->pid, comp->pid); - nfail++; - } - } - if (comp->pid != 0) { - int retval = hal_release(name); - if (retval < 0) { - rtapi_print_msg(RTAPI_MSG_ERR, - "%s: hal_release(%s) failed: %s", - self->cfg->progname, - name, strerror(-retval)); - nfail++; - } else - rtapi_print_msg(RTAPI_MSG_ERR, - "%s: released component '%s'", - self->cfg->progname, name); - } + c != self->rcomps.end(); c++) { + + const char *name = c->first.c_str(); + rcomp_t *rc = c->second; + if (rc->cc == NULL) + // remote created, but never bound and hence + // not compiled, bound and aquired + continue; + hal_comp_t *comp = rc->cc->comp; + + // unbind all comps owned by us: + if (comp->state == COMP_BOUND) { + if (comp->pid == self->pid) { + retval = hal_unbind(name); + if (retval < 0) { + rtapi_print_msg(RTAPI_MSG_ERR, + "%s: hal_unbind(%s) failed: %s", + self->cfg->progname, + name, strerror(-retval)); + nfail++; + } else + rtapi_print_msg(RTAPI_MSG_ERR, + "%s: unbound component '%s'", + self->cfg->progname, name); + } else { + rtapi_print_msg(RTAPI_MSG_ERR, + "%s: BUG - comp %s bound but not by haltalk: %d/%d", + self->cfg->progname, name, self->pid, comp->pid); + nfail++; + } + } + if (comp->pid != 0) { + int retval = hal_release(name); + if (retval < 0) { + rtapi_print_msg(RTAPI_MSG_ERR, + "%s: hal_release(%s) failed: %s", + self->cfg->progname, + name, strerror(-retval)); + nfail++; + } else + rtapi_print_msg(RTAPI_MSG_ERR, + "%s: released component '%s'", + self->cfg->progname, name); + } } return -nfail; @@ -285,10 +285,10 @@ int release_comps(htself_t *self) static int comp_report_cb(const int phase, - const hal_compiled_comp_t *cc, - const hal_pin_t *pin, - const hal_data_u *vp, - void *cb_data) + const hal_compiled_comp_t *cc, + const hal_pin_t *pin, + const hal_data_u *vp, + void *cb_data) { rcomp_t *rc = (rcomp_t *) cb_data; htself_t *self = rc->self; @@ -298,34 +298,34 @@ comp_report_cb(const int phase, switch (phase) { case REPORT_BEGIN: // report initialisation - self->tx.set_type(machinetalk::MT_HALRCOMP_INCREMENTAL_UPDATE); - self->tx.set_serial(rc->serial++); - break; + self->tx.set_type(machinetalk::MT_HALRCOMP_INCREMENTAL_UPDATE); + self->tx.set_serial(rc->serial++); + break; case REPORT_PIN: // per-reported-pin action - p = self->tx.add_pin(); - p->set_handle(ho_id(pin)); - if (hal_pin2pb((hal_pin_t *)pin, p)) - rtapi_print_msg(RTAPI_MSG_ERR, "bad type %d for pin '%s'\n", - pin->type, ho_name(pin)); - break; + p = self->tx.add_pin(); + p->set_handle(ho_id(pin)); + if (hal_pin2pb((hal_pin_t *)pin, p)) + rtapi_print_msg(RTAPI_MSG_ERR, "bad type %d for pin '%s'\n", + pin->type, ho_name(pin)); + break; case REPORT_END: // finalize & send - retval = send_pbcontainer(ho_name(cc->comp), - self->tx, - self->mksock[SVC_HALRCOMP].socket); - assert(retval == 0); - break; + retval = send_pbcontainer(ho_name(cc->comp), + self->tx, + self->mksock[SVC_HALRCOMP].socket); + assert(retval == 0); + break; } return 0; } static int add_pins_to_items(const int phase, - const hal_compiled_comp_t *cc, - const hal_pin_t *pin, - const hal_data_u *vp, - void *cb_data) + const hal_compiled_comp_t *cc, + const hal_pin_t *pin, + const hal_data_u *vp, + void *cb_data) { if (phase != REPORT_PIN) return 0; @@ -333,15 +333,15 @@ add_pins_to_items(const int phase, itemmap_iterator it = self->items.find(ho_id(pin)); if (it == self->items.end()) { // not in handle map - hal_object_ptr o; - o.pin = (hal_pin_t *)pin; - self->items[ho_id(pin)] = o; - - // halitem_t *hi = new halitem_t(); - // hi->type = HAL_PIN; - // hi->o.pin = pin; - // // hi->ptr = SHMPTR(pin->data_ptr_addr); - // self->items[ho_id(pin)] = hi; + hal_object_ptr o; + o.pin = (hal_pin_t *)pin; + self->items[ho_id(pin)] = o; + + // halitem_t *hi = new halitem_t(); + // hi->type = HAL_PIN; + // hi->o.pin = pin; + // // hi->ptr = SHMPTR(pin->data_ptr_addr); + // self->items[ho_id(pin)] = hi; } return 0; } @@ -350,11 +350,11 @@ add_pins_to_items(const int phase, int ping_comps(htself_t *self) { for (compmap_iterator c = self->rcomps.begin(); - c != self->rcomps.end(); c++) { - self->tx.set_type(machinetalk::MT_PING); - int retval = send_pbcontainer(c->first.c_str(), self->tx, - self->mksock[SVC_HALRCOMP].socket); - assert(retval == 0); + c != self->rcomps.end(); c++) { + self->tx.set_type(machinetalk::MT_PING); + int retval = send_pbcontainer(c->first.c_str(), self->tx, + self->mksock[SVC_HALRCOMP].socket); + assert(retval == 0); } return 0; } From 18dc406a0faf4172dd5643c6cbbbfdd8a292cb86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Sat, 25 Mar 2017 15:47:01 +0000 Subject: [PATCH 030/516] remove whitespace --- src/rtapi/shmdrv/Submakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rtapi/shmdrv/Submakefile b/src/rtapi/shmdrv/Submakefile index 36be967a44..3948c947c5 100644 --- a/src/rtapi/shmdrv/Submakefile +++ b/src/rtapi/shmdrv/Submakefile @@ -54,7 +54,7 @@ endif # BUILD_ALL_FLAVORS && USE_SHMDRV # make shmdrvapi.o a shared library, which gets around -fPIC # issues on amd64 -SHMDRVAPISRCS := rtapi/shmdrv/shmdrvapi.c +SHMDRVAPISRCS := rtapi/shmdrv/shmdrvapi.c $(call TOOBJSDEPS, $(SHMDRVAPISRCS)): EXTRAFLAGS += -fPIC SHMDRVLIB := ../lib/liblinuxcncshm.so From eb8f58058a8b4233dd036d05885663b62ae45846 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Sun, 26 Mar 2017 10:34:01 +0000 Subject: [PATCH 031/516] configs: fix MendelMax-CRAMPS config --- .../BeagleBone/MendelMax-CRAMPS/CRAMPS.ini | 45 +++++++++++++++++++ .../BeagleBone/MendelMax-CRAMPS/mendelmax.py | 8 ++-- 2 files changed, 49 insertions(+), 4 deletions(-) diff --git a/configs/ARM/BeagleBone/MendelMax-CRAMPS/CRAMPS.ini b/configs/ARM/BeagleBone/MendelMax-CRAMPS/CRAMPS.ini index 88a21c0dc6..3d64e732ad 100644 --- a/configs/ARM/BeagleBone/MendelMax-CRAMPS/CRAMPS.ini +++ b/configs/ARM/BeagleBone/MendelMax-CRAMPS/CRAMPS.ini @@ -222,6 +222,20 @@ DIRHOLD = 200 STEPLEN = 1000 STEPSPACE = 1000 +# PID tuning params for +# workaround for PRU dir pin problems +DEADBAND = 0 +P = 90 +I = 0 +D = 0 +FF0 = 0 +FF1 = 1 +FF2 = 0.00005 +BIAS = 0 +MAX_OUTPUT = 0 +MAX_ERROR = 0.0005 + +# Jog increments INCREMENTS = 1 10 @@ -263,6 +277,21 @@ DIRHOLD = 200 STEPLEN = 1000 STEPSPACE = 1000 +# PID tuning params for +# workaround for PRU dir pin problems +DEADBAND = 0 +P = 90 +I = 0 +D = 0 +FF0 = 0 +FF1 = 1 +FF2 = 0.00005 +BIAS = 0 +MAX_OUTPUT = 0 +MAX_ERROR = 0.0005 + + +# Jog increments INCREMENTS = 1 10 @@ -304,6 +333,22 @@ DIRHOLD = 200 STEPLEN = 1000 STEPSPACE = 1000 + +# PID tuning params for +# workaround for PRU dir pin problems +DEADBAND = 0 +P = 90 +I = 0 +D = 0 +FF0 = 0 +FF1 = 1 +FF2 = 0.00005 +BIAS = 0 +MAX_OUTPUT = 0 +MAX_ERROR = 0.0005 + + +# Jog increments INCREMENTS = 0.01 0.1 1 [FDM] diff --git a/configs/ARM/BeagleBone/MendelMax-CRAMPS/mendelmax.py b/configs/ARM/BeagleBone/MendelMax-CRAMPS/mendelmax.py index bdb06f5963..e27382aa1c 100644 --- a/configs/ARM/BeagleBone/MendelMax-CRAMPS/mendelmax.py +++ b/configs/ARM/BeagleBone/MendelMax-CRAMPS/mendelmax.py @@ -32,15 +32,15 @@ # Axis-of-motion Specific Configs (not the GUI) ve.velocity_extrusion(extruders=numExtruders, thread='servo-thread') # X [0] Axis -base.setup_stepper(section='AXIS_0', axisIndex=0, stepgenIndex=0) +base.setup_stepper(section='AXIS_0', axisIndex=0, stepgenIndex=0, thread='servo-thread') # Y [1] Axis -base.setup_stepper(section='AXIS_1', axisIndex=1, stepgenIndex=1) +base.setup_stepper(section='AXIS_1', axisIndex=1, stepgenIndex=1, thread='servo-thread') # Z [2] Axis -base.setup_stepper(section='AXIS_2', axisIndex=2, stepgenIndex=2) +base.setup_stepper(section='AXIS_2', axisIndex=2, stepgenIndex=2, thread='servo-thread') # Extruder, velocity controlled for i in range(0, numExtruders): base.setup_stepper(section='EXTRUDER_%i' % i, stepgenIndex=3, - velocitySignal='ve-extrude-vel') + velocitySignal='ve-extrude-vel', thread='servo-thread') # Extruder Multiplexer base.setup_extruder_multiplexer(extruders=numExtruders, thread='servo-thread') From 6c906f3b2e74d6c5f74379ce71bbab73285d24d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Sat, 25 Mar 2017 15:46:05 +0000 Subject: [PATCH 032/516] haltalk: workaround for bind timeout problemx --- src/hal/lib/hal_misc.c | 13 +++++++++---- src/hal/lib/hal_object.c | 1 + src/hal/lib/halpb.cc | 7 ++++++- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/hal/lib/hal_misc.c b/src/hal/lib/hal_misc.c index 42e736e20f..9ddfc86778 100644 --- a/src/hal/lib/hal_misc.c +++ b/src/hal/lib/hal_misc.c @@ -47,10 +47,15 @@ int halpr_pin_count(const char *name) if (comp == 0) HALFAIL_RC(ENOENT, "no such comp: '%s'", name); - foreach_args_t args = { - .type = HAL_PIN, - .owning_comp = ho_id(comp), - }; + foreach_args_t args = {}; + args.type = HAL_PIN; + if (comp->type == TYPE_REMOTE) { + args.owner_id = ho_id(comp); + } + else { + args.owning_comp = ho_id(comp); + } + return halg_foreach(0, &args, NULL); } diff --git a/src/hal/lib/hal_object.c b/src/hal/lib/hal_object.c index 5c8e4bcdaf..7d7057207b 100644 --- a/src/hal/lib/hal_object.c +++ b/src/hal/lib/hal_object.c @@ -296,6 +296,7 @@ static int halg_foreach_from(bool use_hal_mutex, // 4. by owning comp (directly-legacy case, or indirectly - // for pins, params and functs owned by an instance). // see comments near the foreach_args definition in hal_object.h. + // ATTENTION: this operation may be computation intensive! if (args->owning_comp) { hal_comp_t *oc = halpr_find_owning_comp(hh_get_owner_id(hh)); if (oc == NULL) diff --git a/src/hal/lib/halpb.cc b/src/hal/lib/halpb.cc index 7786a86ab6..b395c2580a 100644 --- a/src/hal/lib/halpb.cc +++ b/src/hal/lib/halpb.cc @@ -65,7 +65,12 @@ halpr_describe_component(hal_comp_t *comp, machinetalk::Component *pbcomp) pbcomp->set_userarg2(comp->userarg2); foreach_args_t args = {}; - args.owning_comp = ho_id(comp); + if (comp->type == TYPE_REMOTE) { + args.owner_id = ho_id(comp); + } + else { + args.owning_comp = ho_id(comp); + } args.user_ptr1 = (void *)pbcomp; halg_foreach(0, &args, pbadd_owned); return 0; From 711b6faf59834d4dbc4fd3f739066c3a644a8d10 Mon Sep 17 00:00:00 2001 From: Mick Date: Mon, 27 Mar 2017 09:28:57 +0100 Subject: [PATCH 033/516] Reorder the checks in halpr_find_owning_comp This was a bottleneck with rcomps validating pins. Potentially reduce overhead by 50% where the owning comp is an instance, by checking these first rather than legacy comps Signed-off-by: Mick --- src/hal/lib/hal_comp.c | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/src/hal/lib/hal_comp.c b/src/hal/lib/hal_comp.c index d536403fc7..4a57ad3fe2 100644 --- a/src/hal/lib/hal_comp.c +++ b/src/hal/lib/hal_comp.c @@ -372,36 +372,39 @@ const char *hal_comp_name(int comp_id) // use only for owner_ids of pins, params or functs // may return NULL if buggy using code +// This was a bottleneck with rcomps validating pins +// Move checks so that instances get checked first + hal_comp_t *halpr_find_owning_comp(const int owner_id) { - hal_comp_t *comp = halpr_find_comp_by_id(owner_id); - if (comp != NULL) - return comp; // legacy case: the owner_id refers to a comp +hal_comp_t *comp; - // nope, so it better be an instance + // more likely to be instcomp, so test that first hal_inst_t *inst = halpr_find_inst_by_id(owner_id); - if (inst == NULL) { - HALERR("BUG: owner_id %d refers neither to a hal_comp_t nor an hal_inst_t", - owner_id); - return NULL; - } + if (inst == NULL) { // is it a legacy comp? + comp = halpr_find_comp_by_id(owner_id); + if (comp != NULL) + return comp; + else + return NULL; + } + // is it valid? HAL_ASSERT(ho_object_type(inst) == HAL_INST); // found the instance. Retrieve its owning comp: comp = halpr_find_comp_by_id(ho_owner_id(inst)); if (comp == NULL) { - // really bad. an instance which has no owning comp? - HALERR("BUG: instance %s/%d's comp_id %d refers to a non-existant comp", - ho_name(inst), ho_id(inst), ho_owner_id(inst)); - } - + // really bad. an instance which has no owning comp? + HALERR("BUG: instance %s/%d's comp_id %d refers to a non-existant comp", + ho_name(inst), ho_id(inst), ho_owner_id(inst)); + } + // is it valid? HAL_ASSERT(ho_object_type(comp) == HAL_COMPONENT); return comp; } - int free_comp_struct(hal_comp_t * comp) { From eee718119f577a6bdeaf6f530d82380c219cbbfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Tue, 28 Mar 2017 20:26:37 +0200 Subject: [PATCH 034/516] Haltalk: remove unusued halitem.h --- src/machinetalk/haltalk/halitem.h | 16 ---------------- src/machinetalk/haltalk/haltalk.hh | 1 - 2 files changed, 17 deletions(-) delete mode 100644 src/machinetalk/haltalk/halitem.h diff --git a/src/machinetalk/haltalk/halitem.h b/src/machinetalk/haltalk/halitem.h deleted file mode 100644 index dc7c21d5af..0000000000 --- a/src/machinetalk/haltalk/halitem.h +++ /dev/null @@ -1,16 +0,0 @@ -#include - -union halobject_union { - hal_pin_t *pin; - hal_param_t *param; - hal_sig_t *signal; - hal_comp_t *comp; - hal_group_t *group; - hal_member_t *member; -}; - -/* typedef struct { */ -/* hal_object_type type; */ -/* union halobject_union o; */ -/* // void *ptr; // points to raw value if there's one (usually hal_data_u *) */ -/* } halitem_t; */ diff --git a/src/machinetalk/haltalk/haltalk.hh b/src/machinetalk/haltalk/haltalk.hh index dc4a16ca28..45df165577 100644 --- a/src/machinetalk/haltalk/haltalk.hh +++ b/src/machinetalk/haltalk/haltalk.hh @@ -47,7 +47,6 @@ #include #include -#include "halitem.h" #include "mk-service.hh" #include "mk-zeroconf.hh" From 4a10c75124321ba1c914ef0e589ff024ef67c3fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Tue, 28 Mar 2017 21:14:49 +0200 Subject: [PATCH 035/516] mklauncher: remove unnecessary check --- src/machinetalk/mklauncher/mklauncher.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/machinetalk/mklauncher/mklauncher.py b/src/machinetalk/mklauncher/mklauncher.py index 52a0eace36..4d0306e53a 100644 --- a/src/machinetalk/mklauncher/mklauncher.py +++ b/src/machinetalk/mklauncher/mklauncher.py @@ -530,8 +530,7 @@ def main(): if debug: print('stopping threads') - if mklauncher is not None: - mklauncher.stop() + mklauncher.stop() # wait for all threads to terminate while threading.active_count() > 1: From de241454b4b9047ea7999199dbef7e787fb94b51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Tue, 28 Mar 2017 21:15:07 +0200 Subject: [PATCH 036/516] mkwrapper: print messages only when debugging --- src/machinetalk/mkwrapper/mkwrapper.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/machinetalk/mkwrapper/mkwrapper.py b/src/machinetalk/mkwrapper/mkwrapper.py index c2e6b91b71..a9580633d0 100644 --- a/src/machinetalk/mkwrapper/mkwrapper.py +++ b/src/machinetalk/mkwrapper/mkwrapper.py @@ -2254,7 +2254,8 @@ def main(): except Exception as e: printError("uncaught exception: " + str(e)) - print("stopping threads") + if debug: + print("stopping threads") if fileService is not None: fileService.stop() if mkwrapper is not None: @@ -2264,7 +2265,8 @@ def main(): while threading.active_count() > 2: # one thread for every process is left time.sleep(0.1) - print("threads stopped") + if debug: + print("threads stopped") sys.exit(0) if __name__ == "__main__": From 993f76fa20ba5a8278c477acd99950a26f2d916e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Tue, 28 Mar 2017 21:27:27 +0200 Subject: [PATCH 037/516] ll_zeroconf: cleanup code --- src/machinetalk/lib/ll_zeroconf_register.cc | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/machinetalk/lib/ll_zeroconf_register.cc b/src/machinetalk/lib/ll_zeroconf_register.cc index 1cc804255f..409d57556b 100644 --- a/src/machinetalk/lib/ll_zeroconf_register.cc +++ b/src/machinetalk/lib/ll_zeroconf_register.cc @@ -227,22 +227,18 @@ register_context_t *ll_zeroconf_register(zservice_t *s, AvahiCzmqPoll *av_loop) syslog_async(LOG_ERR, "zeroconf: Failed to create avahi client object: %s\n", avahi_strerror(error)); - goto fail; + return NULL; } return rctx; - - fail: - if (rctx) - ll_zeroconf_unregister(rctx); - return NULL; } // Unregister this server from DNS-SD/mDNS int ll_zeroconf_unregister(register_context_t *rctx) { - if (rctx == NULL) - return 0; + if (rctx == NULL) { + return 0; + } syslog_async(LOG_INFO, "zeroconf: unregistering '%s'\n", rctx->name); if (rctx->client) From 7ceeae7f5f258889b468863358fbd40073e23196 Mon Sep 17 00:00:00 2001 From: Mick Date: Tue, 4 Apr 2017 09:38:36 +0100 Subject: [PATCH 038/516] Fix use of untested zframe_t pointers in haltalk Arises from Issue #1197, where program is crashed , by a call to zframe_size(zframe_t *ptr) with a NULL pointer, which triggers a failed assert()within zmq, which should never arise. Signed-off-by: Mick --- src/machinetalk/haltalk/haltalk_command.cc | 47 ++++++++++++++++++---- src/machinetalk/lib/pbutil.cc | 8 +++- src/rtapi/rtapi_app.cc | 10 +++++ 3 files changed, 56 insertions(+), 9 deletions(-) diff --git a/src/machinetalk/haltalk/haltalk_command.cc b/src/machinetalk/haltalk/haltalk_command.cc index 6b54cad38b..0e205bf7e4 100644 --- a/src/machinetalk/haltalk/haltalk_command.cc +++ b/src/machinetalk/haltalk/haltalk_command.cc @@ -44,11 +44,20 @@ handle_command_input(zloop_t *loop, zmq_pollitem_t *poller, void *arg) zmsg_dump(msg); zframe_t *f = zmsg_last(msg); + if(f == NULL){ + rtapi_print_msg(RTAPI_MSG_ERR, "handle_command_input(): NULL zframe_t 'f' passed"); + return -1; + } + zmsg_remove(msg, f); if (!self->rx.ParseFromArray(zframe_data(f), zframe_size(f))) { - zframe_t *o = zmsg_first (msg); // freed with msg + zframe_t *o = zmsg_first (msg); // freed with msg + if(o == NULL){ + rtapi_print_msg(RTAPI_MSG_ERR, "handle_command_input(): NULL zframe_t 'f' passed"); + return -1; + } std::string origin( (const char *) zframe_data(o), zframe_size(o)); rtapi_print_hex_dump(RTAPI_MSG_ALL, RTAPI_DUMP_PREFIX_OFFSET, 16, 1, zframe_data(f), zframe_size(f), true, NULL, "%s: invalid pb ", origin.c_str()); @@ -316,6 +325,10 @@ process_rcomp_bind(htself_t *self, zmsg_t *from, // fail if comp.name not present if (!pbcomp->has_name()) { zframe_t *o = zmsg_first (from); // freed with msg + if(o == NULL){ + rtapi_print_msg(RTAPI_MSG_ERR,"process_rcomp_bind(): NULL zframe_t 'o' passed"); + return -1; + } std::string origin( (const char *) zframe_data(o), zframe_size(o)); note_printf(self->tx, "request %d from '%s': no name in Component submessage", self->rx.type(), origin.c_str()); @@ -334,7 +347,11 @@ process_rcomp_bind(htself_t *self, zmsg_t *from, // TODO if (type < HAL_BIT || type > HAL_U32) gpb::TextFormat::PrintToString(p, &s); - zframe_t *o = zmsg_first (from); // freed with msg + zframe_t *o = zmsg_first (from); // freed with msg + if(o == NULL){ + rtapi_print_msg(RTAPI_MSG_ERR,"process_rcomp_bind(): NULL zframe_t 'o' passed"); + return -1; + } std::string origin( (const char *) zframe_data(o), zframe_size(o)); note_printf(self->tx, "request %d from %s: invalid pin - name, type or dir missing: Pin=(%s)", @@ -354,8 +371,12 @@ process_rcomp_bind(htself_t *self, zmsg_t *from, if (self->rcomps.count(cname) == 0) { // fail if no_create flag is set in Component submessage // meaning: bind succeeds only if the component exists - if (pbcomp->has_no_create() && pbcomp->no_create()) { - zframe_t *o = zmsg_first (from); // freed with msg + if (pbcomp->has_no_create() && pbcomp->no_create()) { + zframe_t *o = zmsg_first (from); // freed with msg + if(o == NULL){ + rtapi_print_msg(RTAPI_MSG_ERR,"process_rcomp_bind(): NULL zframe_t 'o' passed"); + return -1; + } std::string origin( (const char *) zframe_data(o), zframe_size(o)); note_printf(self->tx, "request %d from '%s': Component not created since no_create flag set", @@ -389,7 +410,11 @@ process_rcomp_bind(htself_t *self, zmsg_t *from, // validate request against existing comp retval = validate_component(cname, pbcomp, self->tx); if (retval) { - zframe_t *o = zmsg_first (from); // freed with msg + zframe_t *o = zmsg_first (from); // freed with msg + if(o == NULL){ + rtapi_print_msg(RTAPI_MSG_ERR,"process_rcomp_bind(): NULL zframe_t 'o' passed"); + return -1; + } std::string origin( (const char *) zframe_data(o), zframe_size(o)); rtapi_print_msg(RTAPI_MSG_ERR, "%s: bind request from %s:" @@ -456,7 +481,11 @@ dispatch_request(htself_t *self, zmsg_t *from, void *socket) case machinetalk::MT_HALRCOMP_BIND: // check for component submessages, and fail if none present if (self->rx.comp_size() == 0) { - zframe_t *o = zmsg_first (from); // freed with msg + zframe_t *o = zmsg_first (from); // freed with msg + if(o == NULL){ + rtapi_print_msg(RTAPI_MSG_ERR,"dispatch_request(): NULL zframe_t 'o' passed"); + return -1; + } std::string origin( (const char *) zframe_data(o), zframe_size(o)); note_printf(self->tx, "request %d from '%s': no Component submessage", self->rx.type(), origin.c_str()); @@ -493,7 +522,11 @@ dispatch_request(htself_t *self, zmsg_t *from, void *socket) self->tx.set_type(machinetalk::MT_HALRCOMMAND_ERROR); note_printf(self->tx, "rcommand %d: not implemented", self->rx.type()); send_pbcontainer(from, self->tx, socket); - zframe_t *o = zmsg_first (from); // freed with msg + zframe_t *o = zmsg_first (from); // freed with msg + if(o == NULL){ + rtapi_print_msg(RTAPI_MSG_ERR,"process_rcomp_bind(): NULL zframe_t 'o' passed"); + return -1; + } std::string origin( (const char *) zframe_data(o), zframe_size(o)); rtapi_print_msg(RTAPI_MSG_ERR, "%s: rcommand from %s : unhandled type %d", self->cfg->progname, origin.c_str(), (int) self->rx.type()); diff --git a/src/machinetalk/lib/pbutil.cc b/src/machinetalk/lib/pbutil.cc index f4d8932cc7..1d26adf96f 100644 --- a/src/machinetalk/lib/pbutil.cc +++ b/src/machinetalk/lib/pbutil.cc @@ -64,9 +64,13 @@ send_pbcontainer(zmsg_t *dest, machinetalk::Container &c, void *socket) goto DONE; } - for (size_t i = 0; i < nsize; ++i) - { + for (size_t i = 0; i < nsize; ++i){ zframe_t *f = zmsg_pop (dest); + if(f == NULL){ + syslog_async(LOG_ERR, "send_pbcontainer(): NULL zframe_t 'f' passed"); + retval = -1; + goto DONE; + } if (zframe_size(f)) { retval = zframe_send (&f, socket, ZMQ_MORE); if (retval) { diff --git a/src/rtapi/rtapi_app.cc b/src/rtapi/rtapi_app.cc index 963e335976..3a3a355bd2 100644 --- a/src/rtapi/rtapi_app.cc +++ b/src/rtapi/rtapi_app.cc @@ -862,6 +862,11 @@ static int rtapi_request(zloop_t *loop, zmq_pollitem_t *poller, void *arg) zframe_t *request_frame = zmsg_pop (r); static bool force_exit = false; + if(request_frame == NULL){ + rtapi_print_msg(RTAPI_MSG_ERR, "rtapi_request(): NULL zframe_t 'request_frame' passed"); + return -1; + } + machinetalk::Container pbreq, pbreply; if (!pbreq.ParseFromArray(zframe_data(request_frame), @@ -1057,6 +1062,11 @@ static int rtapi_request(zloop_t *loop, zmq_pollitem_t *poller, void *arg) size_t reply_size = pbreply.ByteSize(); zframe_t *reply = zframe_new (NULL, reply_size); + if(reply == NULL){ + rtapi_print_msg(RTAPI_MSG_ERR, "rtapi_request(): NULL zframe_t 'reply' passed"); + return -1; + } + if (!pbreply.SerializeWithCachedSizesToArray(zframe_data (reply))) { zframe_destroy(&reply); rtapi_print_msg(RTAPI_MSG_ERR, From 598b4c73691d8535633186d7e58d17ac169547af Mon Sep 17 00:00:00 2001 From: Devin Hughes Date: Fri, 7 Apr 2017 10:42:08 -0400 Subject: [PATCH 039/516] Revert PRU makefile change breaking travis build --- src/hal/drivers/hal_pru_generic/Submakefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/hal/drivers/hal_pru_generic/Submakefile b/src/hal/drivers/hal_pru_generic/Submakefile index f826267b6e..4ddbbbf32e 100644 --- a/src/hal/drivers/hal_pru_generic/Submakefile +++ b/src/hal/drivers/hal_pru_generic/Submakefile @@ -17,8 +17,8 @@ PRU_DBG := $(patsubst %,$(RTLIBDIR)/%.dbg,$(PRU_MAINS)) # Adding to TARGETS builds the PRU code once and puts it in the RTLIBDIR for # the first defined RTOS flavor (typically posix) #TARGETS += $(PRU_BIN) $(PRU_DBG) -# Only build PRU code for the Xenomai and RT-PREEMPT RTOS flavor -ifeq ($(threads),$(filter $(threads), xenomai rt-preempt)) +# Only build PRU code for the Xenomai RTOS flavor +ifeq ($(threads),xenomai) modules : $(PRU_BIN) $(PRU_DBG) endif From 77318c621c7f38caa6ef51c2ad62b5dc982b7161 Mon Sep 17 00:00:00 2001 From: Michael Haberler Date: Wed, 15 Jun 2016 13:49:56 +0200 Subject: [PATCH 040/516] pbutil: deprecate string-based send_container() API Signed-off-by: Michael Haberler @strahlex: please review FAST case - I think this is equivalent and quicker --- src/machinetalk/include/pbutil.hh | 1 - src/machinetalk/lib/pbutil.cc | 36 ++++++++++++++++++++----------- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/src/machinetalk/include/pbutil.hh b/src/machinetalk/include/pbutil.hh index 76521c88fa..f005f6704e 100644 --- a/src/machinetalk/include/pbutil.hh +++ b/src/machinetalk/include/pbutil.hh @@ -29,7 +29,6 @@ typedef ::google::protobuf::RepeatedPtrField< ::std::string> pbstringarray_t; // send a protobuf - encoded Container message // optionally prepend destination field // log any failure to RTAPI -int send_pbcontainer(const std::string &dest, machinetalk::Container &c, void *socket); int send_pbcontainer(zmsg_t *dest, machinetalk::Container &c, void *socket); // add an printf-formatted string to the 'note' repeated string in a diff --git a/src/machinetalk/lib/pbutil.cc b/src/machinetalk/lib/pbutil.cc index 1d26adf96f..092a2600d1 100644 --- a/src/machinetalk/lib/pbutil.cc +++ b/src/machinetalk/lib/pbutil.cc @@ -21,28 +21,25 @@ #include #include +// #define FAST + // send_pbcontainer: if set, dump container to stderr in TextFormat int __attribute__((weak)) print_container; -int -send_pbcontainer(const std::string &dest, machinetalk::Container &c, void *socket) -{ - int retval = 0; - zmsg_t *msg = zmsg_new(); - zframe_t *d = zframe_new (dest.c_str(), dest.size()); - zmsg_append(msg, &d); - retval = send_pbcontainer(msg, c, socket); - zmsg_destroy(&msg); - return retval; -} - // send_pbcontainer: destination can contain multiple routing points int send_pbcontainer(zmsg_t *dest, machinetalk::Container &c, void *socket) { int retval = 0; zframe_t *f; + + // handle 'no destination prepended' properly + if (dest == NULL) + dest = zmsg_new(); + +#ifndef FAST size_t nsize = zmsg_size(dest); +#endif f = zframe_new(NULL, c.ByteSize()); if (f == NULL) { @@ -64,7 +61,17 @@ send_pbcontainer(zmsg_t *dest, machinetalk::Container &c, void *socket) goto DONE; } - for (size_t i = 0; i < nsize; ++i){ +#ifdef FAST + zmsg_append (dest, &f); + retval = zmsg_send(&dest, socket); + if (retval) { + syslog_async(LOG_ERR,"%s: FATAL - zmsg_send() failed", + __func__); + } +#else + + for (size_t i = 0; i < nsize; ++i) + { zframe_t *f = zmsg_pop (dest); if(f == NULL){ syslog_async(LOG_ERR, "send_pbcontainer(): NULL zframe_t 'f' passed"); @@ -83,10 +90,13 @@ send_pbcontainer(zmsg_t *dest, machinetalk::Container &c, void *socket) zframe_destroy(&f); } retval = zframe_send(&f, socket, 0); + if (retval) { syslog_async(LOG_ERR,"%s: FATAL - failed to zframe_sendm(%d)", __func__, end-buf); } +#endif + DONE: c.Clear(); return retval; From 6ced90c9cde22bd9e4b04d9cd862e0abc8928d34 Mon Sep 17 00:00:00 2001 From: Michael Haberler Date: Wed, 15 Jun 2016 13:52:02 +0200 Subject: [PATCH 041/516] haltalk: deprecate string-based send_container() API --- src/machinetalk/haltalk/haltalk_group.cc | 12 ++++++--- src/machinetalk/haltalk/haltalk_introspect.cc | 12 ++++++--- src/machinetalk/haltalk/haltalk_rcomp.cc | 26 +++++++++++-------- 3 files changed, 32 insertions(+), 18 deletions(-) diff --git a/src/machinetalk/haltalk/haltalk_group.cc b/src/machinetalk/haltalk/haltalk_group.cc index b98dcf1b3f..d849405f37 100644 --- a/src/machinetalk/haltalk/haltalk_group.cc +++ b/src/machinetalk/haltalk/haltalk_group.cc @@ -117,7 +117,9 @@ handle_group_input(zloop_t *loop, zmq_pollitem_t *poller, void *arg) g != self->groups.end(); g++) { note_printf(self->tx, " %s", g->first.c_str()); } - int retval = send_pbcontainer(topic, self->tx, + zmsg_t *topic_msg = zmsg_new(); + zmsg_pushstr(topic_msg, topic); + int retval = send_pbcontainer(topic_msg, self->tx, self->mksock[SVC_HALGROUP].socket); assert(retval == 0); } @@ -303,7 +305,9 @@ group_report_cb(int phase, hal_compiled_group_t *cgroup, break; case REPORT_END: // finalize & send - retval = send_pbcontainer(ho_name(cgroup->group), self->tx, + zmsg_t *groupname_msg = zmsg_new(); + zmsg_pushstr(groupname_msg, ho_name(cgroup->group)); + retval = send_pbcontainer(groupname_msg, self->tx, self->mksock[SVC_HALGROUP].socket); assert(retval == 0); @@ -333,7 +337,9 @@ int ping_groups(htself_t *self) { for (groupmap_iterator g = self->groups.begin(); g != self->groups.end(); g++) { self->tx.set_type(machinetalk::MT_PING); - int retval = send_pbcontainer(g->first.c_str(), self->tx, + zmsg_t *groupname_msg = zmsg_new(); + zmsg_pushstr(groupname_msg, g->first.c_str()); + int retval = send_pbcontainer(groupname_msg, self->tx, self->mksock[SVC_HALGROUP].socket); assert(retval == 0); } diff --git a/src/machinetalk/haltalk/haltalk_introspect.cc b/src/machinetalk/haltalk/haltalk_introspect.cc index 753566b0d3..e9cc467d02 100644 --- a/src/machinetalk/haltalk/haltalk_introspect.cc +++ b/src/machinetalk/haltalk/haltalk_introspect.cc @@ -66,13 +66,15 @@ describe_group(htself_t *self, void *socket) { WITH_HAL_MUTEX(); + zmsg_t *from_msg = zmsg_new(); + zmsg_pushstr(from_msg, from.c_str()); int ret = halg_object2pb(0, &self->tx, group, HAL_GROUP, 0); if (ret != 1) { self->tx.set_type(machinetalk::MT_HALRCOMP_ERROR); note_printf(self->tx, "no such group: '%s'", group); - return send_pbcontainer(from, self->tx, socket); + return send_pbcontainer(from_msg, self->tx, socket); } - return send_pbcontainer(from, self->tx, socket); + return send_pbcontainer(from_msg, self->tx, socket); } @@ -84,13 +86,15 @@ describe_comp(htself_t *self, void *socket) { WITH_HAL_MUTEX(); + zmsg_t *from_msg = zmsg_new(); + zmsg_pushstr(from_msg, from.c_str()); int ret = halg_object2pb(0, &self->tx, comp, HAL_COMPONENT, 0); if (ret != 1) { self->tx.set_type(machinetalk::MT_HALRCOMP_ERROR); note_printf(self->tx, "no such component: '%s'", comp); - return send_pbcontainer(from, self->tx, socket); + return send_pbcontainer(from_msg, self->tx, socket); } - return send_pbcontainer(from, self->tx, socket); + return send_pbcontainer(from_msg, self->tx, socket); } // add protocol parameters the subscriber might want to know about diff --git a/src/machinetalk/haltalk/haltalk_rcomp.cc b/src/machinetalk/haltalk/haltalk_rcomp.cc index e2a8370aa2..d2f805f055 100644 --- a/src/machinetalk/haltalk/haltalk_rcomp.cc +++ b/src/machinetalk/haltalk/haltalk_rcomp.cc @@ -63,6 +63,8 @@ handle_rcomp_input(zloop_t *loop, zmq_pollitem_t *poller, void *arg) char *data = (char *) zframe_data(f); assert(data); char *topic = data + 1; + zmsg_t *topic_msg = zmsg_new(); + zmsg_pushstr(topic_msg, topic); switch (*data) { @@ -79,7 +81,7 @@ handle_rcomp_input(zloop_t *loop, zmq_pollitem_t *poller, void *arg) // not found, publish an error message on this topic self->tx.set_type(machinetalk::MT_HALRCOMP_ERROR); note_printf(self->tx, "component '%s' does not exist", topic); - retval = send_pbcontainer(topic, self->tx, self->mksock[SVC_HALRCOMP].socket); + retval = send_pbcontainer(topic_msg, self->tx, self->mksock[SVC_HALRCOMP].socket); assert(retval == 0); } else { @@ -311,11 +313,11 @@ comp_report_cb(const int phase, break; case REPORT_END: // finalize & send - retval = send_pbcontainer(ho_name(cc->comp), - self->tx, - self->mksock[SVC_HALRCOMP].socket); - assert(retval == 0); - break; + zmsg_t *compname_msg = zmsg_new(); + zmsg_pushstr(compname_msg, ho_name(cc->comp)); + retval = send_pbcontainer(compname_msg, self->tx, self->mksock[SVC_HALRCOMP].socket); + assert(retval == 0); + break; } return 0; } @@ -350,11 +352,13 @@ add_pins_to_items(const int phase, int ping_comps(htself_t *self) { for (compmap_iterator c = self->rcomps.begin(); - c != self->rcomps.end(); c++) { - self->tx.set_type(machinetalk::MT_PING); - int retval = send_pbcontainer(c->first.c_str(), self->tx, - self->mksock[SVC_HALRCOMP].socket); - assert(retval == 0); + c != self->rcomps.end(); c++) { + self->tx.set_type(machinetalk::MT_PING); + zmsg_t *compname_msg = zmsg_new(); + zmsg_pushstr(compname_msg, c->first.c_str()); + int retval = send_pbcontainer(compname_msg, self->tx, + self->mksock[SVC_HALRCOMP].socket); + assert(retval == 0); } return 0; } From 15df7e341300ce8f8ca85967613dd30543239a7f Mon Sep 17 00:00:00 2001 From: Michael Haberler Date: Wed, 15 Jun 2016 13:52:31 +0200 Subject: [PATCH 042/516] prviewmodule: deprecate string-based send_container() API --- src/emc/rs274ngc/previewmodule.cc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/emc/rs274ngc/previewmodule.cc b/src/emc/rs274ngc/previewmodule.cc index 86964bcf91..21b7322fbf 100644 --- a/src/emc/rs274ngc/previewmodule.cc +++ b/src/emc/rs274ngc/previewmodule.cc @@ -60,10 +60,12 @@ static void publish_istat(machinetalk::InterpreterStateType state) if (state ^ last_state) { istat.set_type(machinetalk::MT_INTERP_STAT); istat.set_interp_state(state); - istat.set_interp_name("preview"); + istat.set_interp_name("preview"); + zmsg_t *istat_topic_msg = zmsg_new(); + zmsg_pushstr(istat_topic_msg, istat_topic); // NB: this will also istat.Clear() - retval = send_pbcontainer(istat_topic, istat, z_status); + retval = send_pbcontainer(istat_topic_msg, istat, z_status); assert(retval == 0); last_state = state; // change tracking @@ -76,12 +78,14 @@ static void send_preview(const char *client, bool flush = false) { int retval; n_messages++; + zmsg_t *client_msg = zmsg_new(); + zmsg_pushstr(client_msg, client); if ((output.preview_size() > batch_limit) || flush) { n_containers++; n_bytes += output.ByteSize(); output.set_type(machinetalk::MT_PREVIEW); - retval = send_pbcontainer(client, output, z_preview); + retval = send_pbcontainer(client_msg, output, z_preview); assert(retval == 0); } } From 4b13bc5c98e151601984a783a34704ffe62e75ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Fri, 7 Apr 2017 22:49:34 +0200 Subject: [PATCH 043/516] pbutil: use the fast track for sending messages --- src/machinetalk/haltalk/haltalk_command.cc | 1 - src/machinetalk/lib/pbutil.cc | 33 ---------------------- 2 files changed, 34 deletions(-) diff --git a/src/machinetalk/haltalk/haltalk_command.cc b/src/machinetalk/haltalk/haltalk_command.cc index 0e205bf7e4..739a6ca395 100644 --- a/src/machinetalk/haltalk/haltalk_command.cc +++ b/src/machinetalk/haltalk/haltalk_command.cc @@ -72,7 +72,6 @@ handle_command_input(zloop_t *loop, zmq_pollitem_t *poller, void *arg) dispatch_request(self, msg, poller->socket); } zframe_destroy(&f); - zmsg_destroy(&msg); return retval; } diff --git a/src/machinetalk/lib/pbutil.cc b/src/machinetalk/lib/pbutil.cc index 092a2600d1..8dba781f49 100644 --- a/src/machinetalk/lib/pbutil.cc +++ b/src/machinetalk/lib/pbutil.cc @@ -21,8 +21,6 @@ #include #include -// #define FAST - // send_pbcontainer: if set, dump container to stderr in TextFormat int __attribute__((weak)) print_container; @@ -37,9 +35,7 @@ send_pbcontainer(zmsg_t *dest, machinetalk::Container &c, void *socket) if (dest == NULL) dest = zmsg_new(); -#ifndef FAST size_t nsize = zmsg_size(dest); -#endif f = zframe_new(NULL, c.ByteSize()); if (f == NULL) { @@ -61,41 +57,12 @@ send_pbcontainer(zmsg_t *dest, machinetalk::Container &c, void *socket) goto DONE; } -#ifdef FAST zmsg_append (dest, &f); retval = zmsg_send(&dest, socket); if (retval) { syslog_async(LOG_ERR,"%s: FATAL - zmsg_send() failed", __func__); } -#else - - for (size_t i = 0; i < nsize; ++i) - { - zframe_t *f = zmsg_pop (dest); - if(f == NULL){ - syslog_async(LOG_ERR, "send_pbcontainer(): NULL zframe_t 'f' passed"); - retval = -1; - goto DONE; - } - if (zframe_size(f)) { - retval = zframe_send (&f, socket, ZMQ_MORE); - if (retval) { - std::string str( (const char *) zframe_data(f), zframe_size(f)); - syslog_async(LOG_ERR,"%s: FATAL - failed to send destination frame: '%.*s'", - __func__, str.size(), str.c_str()); - goto DONE; - } - } - zframe_destroy(&f); - } - retval = zframe_send(&f, socket, 0); - - if (retval) { - syslog_async(LOG_ERR,"%s: FATAL - failed to zframe_sendm(%d)", - __func__, end-buf); - } -#endif DONE: c.Clear(); From 64049f9c9cca9a39f0e2421881cca48b134691ac Mon Sep 17 00:00:00 2001 From: ArcEye Date: Wed, 12 Apr 2017 08:38:23 +0100 Subject: [PATCH 044/516] Revert "Deprecate send container string dest" --- src/emc/rs274ngc/previewmodule.cc | 10 ++--- src/machinetalk/haltalk/haltalk_command.cc | 1 + src/machinetalk/haltalk/haltalk_group.cc | 12 ++---- src/machinetalk/haltalk/haltalk_introspect.cc | 12 ++---- src/machinetalk/haltalk/haltalk_rcomp.cc | 26 +++++------ src/machinetalk/include/pbutil.hh | 1 + src/machinetalk/lib/pbutil.cc | 43 ++++++++++++++----- 7 files changed, 56 insertions(+), 49 deletions(-) diff --git a/src/emc/rs274ngc/previewmodule.cc b/src/emc/rs274ngc/previewmodule.cc index 21b7322fbf..86964bcf91 100644 --- a/src/emc/rs274ngc/previewmodule.cc +++ b/src/emc/rs274ngc/previewmodule.cc @@ -60,12 +60,10 @@ static void publish_istat(machinetalk::InterpreterStateType state) if (state ^ last_state) { istat.set_type(machinetalk::MT_INTERP_STAT); istat.set_interp_state(state); - istat.set_interp_name("preview"); - zmsg_t *istat_topic_msg = zmsg_new(); - zmsg_pushstr(istat_topic_msg, istat_topic); + istat.set_interp_name("preview"); // NB: this will also istat.Clear() - retval = send_pbcontainer(istat_topic_msg, istat, z_status); + retval = send_pbcontainer(istat_topic, istat, z_status); assert(retval == 0); last_state = state; // change tracking @@ -78,14 +76,12 @@ static void send_preview(const char *client, bool flush = false) { int retval; n_messages++; - zmsg_t *client_msg = zmsg_new(); - zmsg_pushstr(client_msg, client); if ((output.preview_size() > batch_limit) || flush) { n_containers++; n_bytes += output.ByteSize(); output.set_type(machinetalk::MT_PREVIEW); - retval = send_pbcontainer(client_msg, output, z_preview); + retval = send_pbcontainer(client, output, z_preview); assert(retval == 0); } } diff --git a/src/machinetalk/haltalk/haltalk_command.cc b/src/machinetalk/haltalk/haltalk_command.cc index 739a6ca395..0e205bf7e4 100644 --- a/src/machinetalk/haltalk/haltalk_command.cc +++ b/src/machinetalk/haltalk/haltalk_command.cc @@ -72,6 +72,7 @@ handle_command_input(zloop_t *loop, zmq_pollitem_t *poller, void *arg) dispatch_request(self, msg, poller->socket); } zframe_destroy(&f); + zmsg_destroy(&msg); return retval; } diff --git a/src/machinetalk/haltalk/haltalk_group.cc b/src/machinetalk/haltalk/haltalk_group.cc index d849405f37..b98dcf1b3f 100644 --- a/src/machinetalk/haltalk/haltalk_group.cc +++ b/src/machinetalk/haltalk/haltalk_group.cc @@ -117,9 +117,7 @@ handle_group_input(zloop_t *loop, zmq_pollitem_t *poller, void *arg) g != self->groups.end(); g++) { note_printf(self->tx, " %s", g->first.c_str()); } - zmsg_t *topic_msg = zmsg_new(); - zmsg_pushstr(topic_msg, topic); - int retval = send_pbcontainer(topic_msg, self->tx, + int retval = send_pbcontainer(topic, self->tx, self->mksock[SVC_HALGROUP].socket); assert(retval == 0); } @@ -305,9 +303,7 @@ group_report_cb(int phase, hal_compiled_group_t *cgroup, break; case REPORT_END: // finalize & send - zmsg_t *groupname_msg = zmsg_new(); - zmsg_pushstr(groupname_msg, ho_name(cgroup->group)); - retval = send_pbcontainer(groupname_msg, self->tx, + retval = send_pbcontainer(ho_name(cgroup->group), self->tx, self->mksock[SVC_HALGROUP].socket); assert(retval == 0); @@ -337,9 +333,7 @@ int ping_groups(htself_t *self) { for (groupmap_iterator g = self->groups.begin(); g != self->groups.end(); g++) { self->tx.set_type(machinetalk::MT_PING); - zmsg_t *groupname_msg = zmsg_new(); - zmsg_pushstr(groupname_msg, g->first.c_str()); - int retval = send_pbcontainer(groupname_msg, self->tx, + int retval = send_pbcontainer(g->first.c_str(), self->tx, self->mksock[SVC_HALGROUP].socket); assert(retval == 0); } diff --git a/src/machinetalk/haltalk/haltalk_introspect.cc b/src/machinetalk/haltalk/haltalk_introspect.cc index e9cc467d02..753566b0d3 100644 --- a/src/machinetalk/haltalk/haltalk_introspect.cc +++ b/src/machinetalk/haltalk/haltalk_introspect.cc @@ -66,15 +66,13 @@ describe_group(htself_t *self, void *socket) { WITH_HAL_MUTEX(); - zmsg_t *from_msg = zmsg_new(); - zmsg_pushstr(from_msg, from.c_str()); int ret = halg_object2pb(0, &self->tx, group, HAL_GROUP, 0); if (ret != 1) { self->tx.set_type(machinetalk::MT_HALRCOMP_ERROR); note_printf(self->tx, "no such group: '%s'", group); - return send_pbcontainer(from_msg, self->tx, socket); + return send_pbcontainer(from, self->tx, socket); } - return send_pbcontainer(from_msg, self->tx, socket); + return send_pbcontainer(from, self->tx, socket); } @@ -86,15 +84,13 @@ describe_comp(htself_t *self, void *socket) { WITH_HAL_MUTEX(); - zmsg_t *from_msg = zmsg_new(); - zmsg_pushstr(from_msg, from.c_str()); int ret = halg_object2pb(0, &self->tx, comp, HAL_COMPONENT, 0); if (ret != 1) { self->tx.set_type(machinetalk::MT_HALRCOMP_ERROR); note_printf(self->tx, "no such component: '%s'", comp); - return send_pbcontainer(from_msg, self->tx, socket); + return send_pbcontainer(from, self->tx, socket); } - return send_pbcontainer(from_msg, self->tx, socket); + return send_pbcontainer(from, self->tx, socket); } // add protocol parameters the subscriber might want to know about diff --git a/src/machinetalk/haltalk/haltalk_rcomp.cc b/src/machinetalk/haltalk/haltalk_rcomp.cc index d2f805f055..e2a8370aa2 100644 --- a/src/machinetalk/haltalk/haltalk_rcomp.cc +++ b/src/machinetalk/haltalk/haltalk_rcomp.cc @@ -63,8 +63,6 @@ handle_rcomp_input(zloop_t *loop, zmq_pollitem_t *poller, void *arg) char *data = (char *) zframe_data(f); assert(data); char *topic = data + 1; - zmsg_t *topic_msg = zmsg_new(); - zmsg_pushstr(topic_msg, topic); switch (*data) { @@ -81,7 +79,7 @@ handle_rcomp_input(zloop_t *loop, zmq_pollitem_t *poller, void *arg) // not found, publish an error message on this topic self->tx.set_type(machinetalk::MT_HALRCOMP_ERROR); note_printf(self->tx, "component '%s' does not exist", topic); - retval = send_pbcontainer(topic_msg, self->tx, self->mksock[SVC_HALRCOMP].socket); + retval = send_pbcontainer(topic, self->tx, self->mksock[SVC_HALRCOMP].socket); assert(retval == 0); } else { @@ -313,11 +311,11 @@ comp_report_cb(const int phase, break; case REPORT_END: // finalize & send - zmsg_t *compname_msg = zmsg_new(); - zmsg_pushstr(compname_msg, ho_name(cc->comp)); - retval = send_pbcontainer(compname_msg, self->tx, self->mksock[SVC_HALRCOMP].socket); - assert(retval == 0); - break; + retval = send_pbcontainer(ho_name(cc->comp), + self->tx, + self->mksock[SVC_HALRCOMP].socket); + assert(retval == 0); + break; } return 0; } @@ -352,13 +350,11 @@ add_pins_to_items(const int phase, int ping_comps(htself_t *self) { for (compmap_iterator c = self->rcomps.begin(); - c != self->rcomps.end(); c++) { - self->tx.set_type(machinetalk::MT_PING); - zmsg_t *compname_msg = zmsg_new(); - zmsg_pushstr(compname_msg, c->first.c_str()); - int retval = send_pbcontainer(compname_msg, self->tx, - self->mksock[SVC_HALRCOMP].socket); - assert(retval == 0); + c != self->rcomps.end(); c++) { + self->tx.set_type(machinetalk::MT_PING); + int retval = send_pbcontainer(c->first.c_str(), self->tx, + self->mksock[SVC_HALRCOMP].socket); + assert(retval == 0); } return 0; } diff --git a/src/machinetalk/include/pbutil.hh b/src/machinetalk/include/pbutil.hh index f005f6704e..76521c88fa 100644 --- a/src/machinetalk/include/pbutil.hh +++ b/src/machinetalk/include/pbutil.hh @@ -29,6 +29,7 @@ typedef ::google::protobuf::RepeatedPtrField< ::std::string> pbstringarray_t; // send a protobuf - encoded Container message // optionally prepend destination field // log any failure to RTAPI +int send_pbcontainer(const std::string &dest, machinetalk::Container &c, void *socket); int send_pbcontainer(zmsg_t *dest, machinetalk::Container &c, void *socket); // add an printf-formatted string to the 'note' repeated string in a diff --git a/src/machinetalk/lib/pbutil.cc b/src/machinetalk/lib/pbutil.cc index 8dba781f49..1d26adf96f 100644 --- a/src/machinetalk/lib/pbutil.cc +++ b/src/machinetalk/lib/pbutil.cc @@ -24,17 +24,24 @@ // send_pbcontainer: if set, dump container to stderr in TextFormat int __attribute__((weak)) print_container; +int +send_pbcontainer(const std::string &dest, machinetalk::Container &c, void *socket) +{ + int retval = 0; + zmsg_t *msg = zmsg_new(); + zframe_t *d = zframe_new (dest.c_str(), dest.size()); + zmsg_append(msg, &d); + retval = send_pbcontainer(msg, c, socket); + zmsg_destroy(&msg); + return retval; +} + // send_pbcontainer: destination can contain multiple routing points int send_pbcontainer(zmsg_t *dest, machinetalk::Container &c, void *socket) { int retval = 0; zframe_t *f; - - // handle 'no destination prepended' properly - if (dest == NULL) - dest = zmsg_new(); - size_t nsize = zmsg_size(dest); f = zframe_new(NULL, c.ByteSize()); @@ -57,13 +64,29 @@ send_pbcontainer(zmsg_t *dest, machinetalk::Container &c, void *socket) goto DONE; } - zmsg_append (dest, &f); - retval = zmsg_send(&dest, socket); + for (size_t i = 0; i < nsize; ++i){ + zframe_t *f = zmsg_pop (dest); + if(f == NULL){ + syslog_async(LOG_ERR, "send_pbcontainer(): NULL zframe_t 'f' passed"); + retval = -1; + goto DONE; + } + if (zframe_size(f)) { + retval = zframe_send (&f, socket, ZMQ_MORE); + if (retval) { + std::string str( (const char *) zframe_data(f), zframe_size(f)); + syslog_async(LOG_ERR,"%s: FATAL - failed to send destination frame: '%.*s'", + __func__, str.size(), str.c_str()); + goto DONE; + } + } + zframe_destroy(&f); + } + retval = zframe_send(&f, socket, 0); if (retval) { - syslog_async(LOG_ERR,"%s: FATAL - zmsg_send() failed", - __func__); + syslog_async(LOG_ERR,"%s: FATAL - failed to zframe_sendm(%d)", + __func__, end-buf); } - DONE: c.Clear(); return retval; From cf28038fa41646eb1dffb9bb34cd06ce518b9046 Mon Sep 17 00:00:00 2001 From: Mick Date: Mon, 1 May 2017 14:40:28 +0100 Subject: [PATCH 045/516] Fix current ini file detection by gremlin_view Recently used above in project and found that it failed. pgrep was failing to detect the inifile name from the running linuxcncsvr. An errant sed operation had changed it to 'machinekitsvr', but even when this was corrected, pgrep still errored thus ``` Traceback (most recent call last): File "/usr/src/machinekit/bin/gremlin_view", line 3, in gremlin_view.standalone_gremlin_view() File "/usr/src/machinekit/lib/python/gremlin_view.py", line 597, in standalone_gremlin_view ,yoffset=yoffset File "/usr/src/machinekit/lib/python/gremlin_view.py", line 157, in __init__ if ini_setup(): File "/usr/src/machinekit/lib/python/gremlin_view.py", line 108, in ini_setup ini_filename = get_linuxcnc_ini_file() File "/usr/src/machinekit/lib/python/gremlin_view.py", line 135, in get_linuxcnc_ini_file ans = p.split()[p.split().index('-ini')+1] ValueError: '-ini' is not in list ``` Amended linuxcnc script to export the inifile name to the environment as INIFILE Amended gremlin_view to search env for INIFILE and it works Signed-off-by: Mick --- lib/python/gremlin_view.py | 42 +++++++++++++++++++++++++++++++++++--- scripts/linuxcnc.in | 3 +++ 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/lib/python/gremlin_view.py b/lib/python/gremlin_view.py index 2c2aca6c4e..e26bce0da8 100644 --- a/lib/python/gremlin_view.py +++ b/lib/python/gremlin_view.py @@ -98,7 +98,14 @@ def ini_setup (): # Note: # hal_gremlin gets inifile from os.environ (only) # hal_gremlin expects cwd to be same as ini file - ini_filename = get_linuxcnc_ini_file() +###################################################################### +## linuxcnc script now exports the inifile name as $INIFILE +## so that gremlin_view can easily find it, pgrep does not work +###################################################################### + ini_filename = os.environ.get('INIFILE') + print ini_filename + if ini_filename == None : + ini_filename = get_linuxcnc_ini_file() if ini_filename is not None: os.putenv('INI_FILE_NAME',ini_filename) # ineffective os.environ['INI_FILE_NAME'] = ini_filename # need for hal_gremlin @@ -128,6 +135,9 @@ def get_linuxcnc_ini_file(): ans = p.split()[p.split().index('-ini')+1] return ans +# x and yoffset added to allow placement in a screen +# ArcEye 2015 + class GremlinView(): """Implement a standalone gremlin with some buttons and provide means to embed using a glade ui file""" @@ -136,6 +146,8 @@ def __init__(self ,parent=None ,width=None ,height=None + ,xoffset=None + ,yoffset=None ,alive=True ,gtk_theme_name="Follow System Theme" ): @@ -251,6 +263,11 @@ def __init__(self if height < minheight: height = minheight + if (xoffset is None): + xoffset = '0' + if (yoffset is None): + yoffset = '0' + # err from gremlin if omit this self.halg.width = width self.halg.height = height @@ -301,6 +318,10 @@ def __init__(self self.topwindow.connect('destroy',self._topwindowquit) self.topwindow.show_all() + + ## offset the window if required + self.topwindow.move(int(xoffset), int(yoffset)) + self.running = True if self.last_file is not None: @@ -506,8 +527,12 @@ def set_view_per_w(self,w,vletter): #----------------------------------------------------------------------------- # Standalone (and demo) usage: -def standalone_gremlin_view(): +# x and yoffset added to allow placement in a screen from +# ArcEye 2015 + +def standalone_gremlin_view(): + global ini_file import getopt #--------------------------------------- def usage(msg=None): @@ -518,6 +543,8 @@ def usage(msg=None): [-v | --verbose] [-W | --width] width [-H | --height] height + [-X | --xoffset] xoffset + [-Y | --yoffset] yoffset [-f | --file] glade_file Note: linuxcnc must be running on same machine @@ -529,14 +556,18 @@ def usage(msg=None): glade_file = None width = None height = None + xoffset = None + yoffset = None vbose = False try: options,remainder = getopt.getopt(sys.argv[1:] - , 'f:hH:vW:' + , 'f:hH:vW:X:Y:' , ['file=' ,'help' ,'width=' ,'height=' + ,'xoffset=' + ,'yoffset=' ] ) except getopt.GetoptError,msg: @@ -551,6 +582,8 @@ def usage(msg=None): continue if opt in ('-W','--width' ): width=arg if opt in ('-H','--height'): height=arg + if opt in ('-X','--xoffset'): xoffset=arg + if opt in ('-Y','--yoffset'): yoffset=arg if opt in ('-f','--file'): glade_file=arg if remainder: usage('unknown argument:%s' % remainder) @@ -560,6 +593,8 @@ def usage(msg=None): g = GremlinView(glade_file=glade_file ,width=width ,height=height + ,xoffset=xoffset + ,yoffset=yoffset ) gtk.main() except linuxcnc.error,detail: @@ -568,3 +603,4 @@ def usage(msg=None): usage() # vim: sts=4 sw=4 et + diff --git a/scripts/linuxcnc.in b/scripts/linuxcnc.in index c29373427d..cccf76b86e 100644 --- a/scripts/linuxcnc.in +++ b/scripts/linuxcnc.in @@ -290,6 +290,9 @@ fi if [ ! -n "$INIFILE" ] ; then # still nothing specified, exit exit 0 +else + # make it easier for gremlin_view to get the active ini file + export INIFILE fi # delete directories from path, save name only From c29d9f28bc53755d9bd4367bdb76ed3526139b79 Mon Sep 17 00:00:00 2001 From: Mick Date: Tue, 2 May 2017 10:15:54 +0100 Subject: [PATCH 046/516] Add drawbotkins kinematic module Add demo axis sim which allows loading and homing, needs work beyond that Amend kinematics vtable struct to allow for `vtk_kinematicsHome_t` which is used in drawbotkins, but unused eleswhere. Added necessary vtable code to original drawbotkins.c to enable it to function with updated machinekit kinematics code. Signed-off-by: Mick --- configs/sim/axis/README | 1 + configs/sim/axis/axis_mm_drawbot.ini | 224 +++++++++++++++ configs/sim/axis/core_sim_drawbot.hal | 53 ++++ src/Makefile | 6 + src/emc/kinematics/Submakefile | 14 + src/emc/kinematics/drawbotkins.c | 395 ++++++++++++++++++++++++++ src/emc/kinematics/kinematics.h | 2 +- 7 files changed, 694 insertions(+), 1 deletion(-) create mode 100644 configs/sim/axis/axis_mm_drawbot.ini create mode 100644 configs/sim/axis/core_sim_drawbot.hal create mode 100644 src/emc/kinematics/drawbotkins.c diff --git a/configs/sim/axis/README b/configs/sim/axis/README index e791fc1789..86c2d1d0b9 100644 --- a/configs/sim/axis/README +++ b/configs/sim/axis/README @@ -6,6 +6,7 @@ axis.ini basic demo (in) axis_9axis.ini 9 axes axis_foam foam cutter axis_mm.ini basic demo (mm) +axis_mm_drawbot demo that module loads and allows homing - do not use to run gcode yet canterp libcanterp.so gantry.ini gantry demo lathe.ini lathe demo diff --git a/configs/sim/axis/axis_mm_drawbot.ini b/configs/sim/axis/axis_mm_drawbot.ini new file mode 100644 index 0000000000..3b170a8be6 --- /dev/null +++ b/configs/sim/axis/axis_mm_drawbot.ini @@ -0,0 +1,224 @@ +# EMC controller parameters for a simulated machine. + +# General note: Comments can either be preceded with a # or ; - either is +# acceptable, although # is in keeping with most linux config files. + +# General section ------------------------------------------------------------- +[EMC] + +# Version of this INI file +VERSION = $Revision$ + +# Name of machine, for use with display, etc. +MACHINE = Machinekit-Drawbotkins-SIM-AXIS + +# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others +# DEBUG = 0x7FFFFFFF +DEBUG = 0 + +# Sections for display options ------------------------------------------------ +[DISPLAY] + +# Name of display program, e.g., xemc +DISPLAY = axis + +# Cycle time, in seconds, that display will sleep between polls +CYCLE_TIME = 0.100 + +# Path to help file +HELP_FILE = doc/help.txt + +# Initial display setting for position, RELATIVE or MACHINE +POSITION_OFFSET = RELATIVE + +# Initial display setting for position, COMMANDED or ACTUAL +POSITION_FEEDBACK = ACTUAL + +# Highest value that will be allowed for feed override, 1.0 = 100% +MAX_FEED_OVERRIDE = 1.2 +MAX_SPINDLE_OVERRIDE = 1.0 +# Prefix to be used +PROGRAM_PREFIX = ../../nc_files/ + +# Introductory graphic +INTRO_GRAPHIC = machinekit.gif +INTRO_TIME = 5 + +EDITOR = gedit + +INCREMENTS = 1 mm, .01 in, .1mm, 1 mil, .1 mil, 1/8000 in +[FILTER] +PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image +PROGRAM_EXTENSION = .py Python Script + +png = image-to-gcode +gif = image-to-gcode +jpg = image-to-gcode +py = python + +# Task controller section ----------------------------------------------------- +[TASK] + +# Name of task controller program, e.g., milltask +TASK = milltask + +# Cycle time, in seconds, that task controller will sleep between polls +CYCLE_TIME = 0.001 + +# Part program interpreter section -------------------------------------------- +[RS274NGC] + +# File containing interpreter variables +PARAMETER_FILE = sim_mm.var + +# Motion control section ------------------------------------------------------ +[EMCMOT] + +EMCMOT = motmod + +# Timeout for comm to emcmot, in seconds +COMM_TIMEOUT = 1.0 + +# Interval between tries to emcmot, in seconds +COMM_WAIT = 0.010 + +# if both BASE_PERIOD and SERVO_PERIOD are unset or 0, motion will not create any threads. +# in this case, threads need to be created explicitly by 'newthread' +# see HALFILE=newthread and [HAL]SERVO_PERIOD below + +# BASE_PERIOD is unused in this configuration but specified in core_sim.hal +BASE_PERIOD = 0 +# Servo task period, in nano-seconds +SERVO_PERIOD = 0 + +# Hardware Abstraction Layer section -------------------------------------------------- +[HAL] + +# The run script first uses halcmd to execute any HALFILE +# files, and then to execute any individual HALCMD commands. +# + +# used in configs/common/newthread.hal +# Servo task period, in nano-seconds +SERVO_PERIOD = 1000000 + + +# list of hal config files to run through halcmd +# files are executed in the order in which they appear +HALFILE = newthread.hal +HALFILE = core_sim_drawbot.hal +HALFILE = sim_spindle_encoder.hal +HALFILE = axis_manualtoolchange.hal +HALFILE = simulated_home.hal + +# list of halcmd commands to execute +# commands are executed in the order in which they appear +#HALCMD = save neta + +# Single file that is executed after the GUI has started. Only supported by +# AXIS at this time (only AXIS creates a HAL component of its own) +#POSTGUI_HALFILE = test_postgui.hal + +HALUI = halui + +# Trajectory planner section -------------------------------------------------- +[TRAJ] + +AXES = 3 +COORDINATES = X Y Z +HOME = 0 0 0 +LINEAR_UNITS = mm +ANGULAR_UNITS = degree +CYCLE_TIME = 0.010 +DEFAULT_VELOCITY = 30.48 +MAX_VELOCITY = 53.34 +DEFAULT_ACCELERATION = 508 +MAX_ACCELERATION = 508 +POSITION_FILE = position_mm.txt +ARC_BLEND_ENABLE = 1 +ARC_BLEND_FALLBACK_ENABLE = 1 +ARC_BLEND_OPTIMIZATION_DEPTH = 50 +#Use this setting for no smoothing (for debugging and stress-testing) +ARC_BLEND_SMOOTHING_THRESHOLD = .75 +#Use this setting for "normal" smoothing, i.e. if we blend over more than 40% of a segment +#ARC_BLEND_SMOOTHING_THRESHOLD = 0.40 + +# Axes sections --------------------------------------------------------------- + +# First axis +[AXIS_0] + +TYPE = LINEAR +HOME = 0.000 +MAX_VELOCITY = 30.48 +MAX_ACCELERATION = 508 +BACKLASH = 0.000 +INPUT_SCALE = 157.48 +OUTPUT_SCALE = 1.000 +MIN_LIMIT = -254 +MAX_LIMIT = 254 +FERROR = 1.27 +MIN_FERROR = .254 +HOME_OFFSET = 0.0 +HOME_SEARCH_VEL = 127 +HOME_LATCH_VEL = 25.4 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = NO +HOME_SEQUENCE = 1 +HOME_IS_SHARED = 1 + +# Second axis +[AXIS_1] + +TYPE = LINEAR +HOME = 0.000 +MAX_VELOCITY = 30.48 +MAX_ACCELERATION = 508 +BACKLASH = 0.000 +INPUT_SCALE = 157.48 +OUTPUT_SCALE = 1.000 +MIN_LIMIT = -254 +MAX_LIMIT = 254 +FERROR = 1.27 +MIN_FERROR = .254 +HOME_OFFSET = 0.0 +HOME_SEARCH_VEL = 127 +HOME_LATCH_VEL = 25.4 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = NO +HOME_SEQUENCE = 1 + +# Third axis +[AXIS_2] + +TYPE = LINEAR +HOME = 0.0 +MAX_VELOCITY = 30.48 +MAX_ACCELERATION = 508 +BACKLASH = 0.000 +INPUT_SCALE = 157.48 +OUTPUT_SCALE = 1.000 +MIN_LIMIT = -50.8 +MAX_LIMIT = 101.6 +FERROR = 1.27 +MIN_FERROR = .254 +HOME_OFFSET = 25.4 +HOME_SEARCH_VEL = 127 +HOME_LATCH_VEL = 25.4 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = NO +HOME_SEQUENCE = 0 +HOME_IS_SHARED = 1 + +# section for main IO controller parameters ----------------------------------- +[EMCIO] + +# Name of IO controller program, e.g., io +EMCIO = io + +# cycle time, in seconds +CYCLE_TIME = 0.100 + +# tool table file +TOOL_TABLE = sim_mm.tbl +TOOL_CHANGE_POSITION = 0 0 50.8 diff --git a/configs/sim/axis/core_sim_drawbot.hal b/configs/sim/axis/core_sim_drawbot.hal new file mode 100644 index 0000000000..1b9d8c9442 --- /dev/null +++ b/configs/sim/axis/core_sim_drawbot.hal @@ -0,0 +1,53 @@ +# core HAL config file for simulation + +# first load all the RT modules that will be needed +# kinematics +loadrt drawbotkins +# trajectory planner +loadrt tp +# motion controller, get name and thread periods from ini file +loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES kins=drawbotkins tp=tp +# load 6 differentiators (for velocity and accel signals +loadrt ddt names=ddt_x,ddt_xv,ddt_y,ddt_yv,ddt_z,ddt_zv +# load additional blocks +loadrt hypot names=vel_xy,vel_xyz + +# add motion controller functions to servo thread +addf motion-command-handler servo-thread +addf motion-controller servo-thread +# link the differentiator functions into the code +addf ddt_x servo-thread +addf ddt_xv servo-thread +addf ddt_y servo-thread +addf ddt_yv servo-thread +addf ddt_z servo-thread +addf ddt_zv servo-thread +addf vel_xy servo-thread +addf vel_xyz servo-thread + +# create HAL signals for position commands from motion module +# loop position commands back to motion module feedback +net Xpos axis.0.motor-pos-cmd => axis.0.motor-pos-fb ddt_x.in +net Ypos axis.1.motor-pos-cmd => axis.1.motor-pos-fb ddt_y.in +net Zpos axis.2.motor-pos-cmd => axis.2.motor-pos-fb ddt_z.in + +# send the position commands thru differentiators to +# generate velocity and accel signals +net Xvel ddt_x.out => ddt_xv.in vel_xy.in0 +net Xacc <= ddt_xv.out +net Yvel ddt_y.out => ddt_yv.in vel_xy.in1 +net Yacc <= ddt_yv.out +net Zvel ddt_z.out => ddt_zv.in vel_xyz.in0 +net Zacc <= ddt_zv.out + +# Cartesian 2- and 3-axis velocities +net XYvel vel_xy.out => vel_xyz.in1 +net XYZvel <= vel_xyz.out + +# estop loopback +net estop-loop iocontrol.0.user-enable-out iocontrol.0.emc-enable-in + +# create signals for tool loading loopback +net tool-prep-loop iocontrol.0.tool-prepare iocontrol.0.tool-prepared +net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed + diff --git a/src/Makefile b/src/Makefile index 45f030cc44..f885d0b288 100755 --- a/src/Makefile +++ b/src/Makefile @@ -1570,6 +1570,11 @@ genserkins-objs := emc/kinematics/genserkins.o genserkins-objs += libnml/posemath/gomath.o genserkins-objs += libnml/posemath/sincos.o $(MATHSTUB) +obj-m += drawbotkins.o +drawbotkins-objs := emc/kinematics/drawbotkins.o +drawbotkins-objs += libnml/posemath/gomath.o +drawbotkins-objs += libnml/posemath/sincos.o $(MATHSTUB) + obj-m += pumakins.o pumakins-objs := emc/kinematics/pumakins.o pumakins-objs += libnml/posemath/_posemath.o @@ -1873,6 +1878,7 @@ $(RTLIBDIR)/tripodkins$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(tripodkins-objs)) $(RTLIBDIR)/lineardeltakins$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(lineardeltakins-objs)) $(RTLIBDIR)/genhexkins$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(genhexkins-objs)) $(RTLIBDIR)/genserkins$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(genserkins-objs)) +$(RTLIBDIR)/drawbotkins$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(drawbotkins-objs)) $(RTLIBDIR)/pumakins$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(pumakins-objs)) $(RTLIBDIR)/scarakins$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(scarakins-objs)) $(RTLIBDIR)/hal_gm$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_gm-objs)) diff --git a/src/emc/kinematics/Submakefile b/src/emc/kinematics/Submakefile index 7256249194..f6f091fbf7 100644 --- a/src/emc/kinematics/Submakefile +++ b/src/emc/kinematics/Submakefile @@ -4,6 +4,11 @@ GENSERKINSSRCS := \ emc/kinematics/genserkins.c USERSRCS += $(GENSERKINSSRCS) +DRAWBOTKINSSRCS := \ + emc/kinematics/drawbotkins.c +USERSRCS += $(DRAWBOTKINSSRCS) + + DELTAMODULESRCS := emc/kinematics/lineardeltakins.cc PYSRCS += $(DELTAMODULESRCS) $(call TOOBJS, $(DELTAMODULESRCS)): CFLAGS += -x c++ -Wno-declaration-after-statement @@ -22,6 +27,15 @@ PYTARGETS += $(DELTAMODULE) $(Q)$(CC) $(LDFLAGS) -o $@ $^ TARGETS += ../bin/genserkins +../bin/drawbotkins: $(call TOOBJS, $(GENSERKINSSRCS)) \ + ../lib/liblinuxcnchal.so \ + ../lib/libposemath.so \ + ../lib/librtapi_math.so.0 + $(ECHO) Linking $(notdir $@) + $(Q)$(CC) $(LDFLAGS) -o $@ $^ +TARGETS += ../bin/drawbotkins + + ../include/%.h: ./emc/kinematics/%.h cp $^ $@ ../include/%.hh: ./emc/kinematics/%.hh diff --git a/src/emc/kinematics/drawbotkins.c b/src/emc/kinematics/drawbotkins.c new file mode 100644 index 0000000000..0c3641929d --- /dev/null +++ b/src/emc/kinematics/drawbotkins.c @@ -0,0 +1,395 @@ +/* +# This file is part of The Telus Spark Drawbot Code. It 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, version 2. +# +# This program 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 +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# The project was designed and constructed by David Bynoe - http://www.davidbynoe.com +# This software authored by Kevin Loney - http://brainsinjars.com/ +# +# Copyright (C) 2013 David Bynoe + +# Amended for vtable use with Machinekit ArcEye 02052017 +*/ + +#include + +#include "kinematics.h" +#include "rtapi.h" +#include "rtapi_app.h" +#include "rtapi_math.h" +#include "posemath.h" +#include "hal.h" + +#define VTVERSION VTKINEMATICS_VERSION1 + +struct hal_joint_t { + hal_bit_t *homed; + hal_bit_t *home_switch; + hal_bit_t *home; + + hal_float_t *jog; + hal_bit_t *position; + + hal_bit_t started, tripped; +}; + +struct haldata { + hal_float_t *radius; // radius of the drawing surface + hal_float_t *limit; // distance from the carriage pivot to the magnet + + // Dimensions of the drawbot + hal_float_t *dimx; + hal_float_t *dimy; + hal_float_t *dimz; + + // Size of the drawing bed + hal_float_t *limx; + hal_float_t *limy; + + hal_bit_t *homing; + hal_bit_t *occupied; + hal_bit_t *headless; + + struct hal_joint_t joint[4]; +} *haldata = 0; + +int kinematicsForward(const double *joints, EmcPose *pos, const KINEMATICS_FORWARD_FLAGS *fflags, KINEMATICS_INVERSE_FLAGS *iflags); +KINEMATICS_TYPE kinematicsType(void); +int kinematicsHome(EmcPose *world, double *joints, KINEMATICS_FORWARD_FLAGS *fflags, KINEMATICS_INVERSE_FLAGS *iflags); +int kinematicsInverse(const EmcPose *pos, double *joints, const KINEMATICS_INVERSE_FLAGS *iflags,KINEMATICS_FORWARD_FLAGS *fflags); + +#ifdef LEGACY_KINS_API +EXPORT_SYMBOL(kinematicsType); +EXPORT_SYMBOL(kinematicsForward); +EXPORT_SYMBOL(kinematicsInverse); +EXPORT_SYMBOL(kinematicsHome); +#endif + +static vtkins_t vtk = { + .kinematicsForward = kinematicsForward, + .kinematicsInverse = kinematicsInverse, + .kinematicsHome = kinematicsHome, + .kinematicsType = kinematicsType +}; + + +static int comp_id, vtable_id; +static const char *name = "drawbotkins"; + +int export_joint(int, struct hal_joint_t*); + +void drawbot_home(void*, long); +void drawbot_home_x(struct hal_joint_t*); +void drawbot_home_y(struct hal_joint_t*); +void drawbot_home_z(struct hal_joint_t*); +void drawbot_home_a(struct hal_joint_t*); + +//int comp_id; + +int rtapi_app_main(void) { + int status = 0; + +comp_id = hal_init(name); + if(comp_id > 0) { + vtable_id = hal_export_vtable(name, VTVERSION, &vtk, comp_id); + + if (vtable_id < 0) { + rtapi_print_msg(RTAPI_MSG_ERR, + "%s: ERROR: hal_export_vtable(%s,%d,%p) failed: %d\n", + name, name, VTVERSION, &vtk, vtable_id ); + return -ENOENT; + } + else + return comp_id; + } + + do { + haldata = hal_malloc(sizeof(struct haldata)); + if(!haldata) { + status = -1; + break; + } + + // Maximum draw area extents + if((status = hal_pin_float_new("drawbot.extent.radius", HAL_IN, &(haldata->radius), comp_id)) < 0) break; + if((status = hal_pin_float_new("drawbot.extent.limit", HAL_IN, &(haldata->limit), comp_id)) < 0) break; + + if((status = hal_pin_float_new("drawbot.extent.dim-x", HAL_IN, &(haldata->dimx), comp_id)) < 0) break; + if((status = hal_pin_float_new("drawbot.extent.dim-y", HAL_IN, &(haldata->dimy), comp_id)) < 0) break; + if((status = hal_pin_float_new("drawbot.extent.dim-z", HAL_IN, &(haldata->dimz), comp_id)) < 0) break; + + if((status = hal_pin_float_new("drawbot.extent.lim-x", HAL_IN, &(haldata->limx), comp_id)) < 0) break; + if((status = hal_pin_float_new("drawbot.extent.lim-y", HAL_IN, &(haldata->limy), comp_id)) < 0) break; + + if((status = hal_pin_bit_new("drawbot.is-homing", HAL_IN, &(haldata->homing), comp_id)) < 0) break; + if((status = hal_pin_bit_new("drawbot.is-occupied", HAL_IN, &(haldata->occupied), comp_id)) < 0) break; + if((status = hal_pin_bit_new("drawbot.is-headless", HAL_IN, &(haldata->headless), comp_id)) < 0) break; + + if((status = export_joint(0, &(haldata->joint[0]))) < 0) break; + if((status = export_joint(1, &(haldata->joint[1]))) < 0) break; + if((status = export_joint(2, &(haldata->joint[2]))) < 0) break; + if((status = export_joint(3, &(haldata->joint[3]))) < 0) break; + + if((status = hal_export_funct("drawbot.home", drawbot_home, NULL, 1, 0, comp_id)) < 0) break; + } while(0); + + if(status) { + hal_exit(comp_id); + } else { + hal_ready(comp_id); + } + return status; +} + +void rtapi_app_exit(void) +{ + int retval = hal_remove_vtable(vtable_id); + if (retval < 0) + rtapi_print_msg(RTAPI_MSG_ERR, "%s: vtable %d not removed rc=%d\n", + name, vtable_id, retval); + hal_exit(comp_id); +} + +int export_joint(int num, struct hal_joint_t *joint) { + int status = 0; + + do { + joint->started = 0; + joint->tripped = 0; + + if((status = hal_pin_bit_newf(HAL_IN, &(joint->homed), comp_id, "drawbot.%d.is-homed", num)) < 0) break; + if((status = hal_pin_bit_newf(HAL_IN, &(joint->home_switch), comp_id, "drawbot.%d.home-sw", num)) < 0) break; + if((status = hal_pin_bit_newf(HAL_OUT, &(joint->home), comp_id, "drawbot.%d.home", num)) < 0) break; + + if((status = hal_pin_float_newf(HAL_OUT, &(joint->jog), comp_id, "drawbot.%d.jog", num)) < 0) break; + if((status = hal_pin_bit_newf(HAL_IN, &(joint->position), comp_id, "drawbot.%d.in-position", num)) < 0) break; + } while(0); + + return status; +} + +double fmin(const double x, const double y) { + return x < y ? x : y; +} + +double fmax(const double x, const double y) { + return x > y ? x : y; +} + +double fclamp(double v, double lo, double hi) { + return fmax(fmin(v, hi), lo); +} + +int kinematicsForward(const double *joints, + EmcPose *pos, + const KINEMATICS_FORWARD_FLAGS *fflags, + KINEMATICS_INVERSE_FLAGS *iflags) +{ + return -1; +} + +int kinematicsInverse(const EmcPose *pos, + double *joints, + const KINEMATICS_INVERSE_FLAGS *iflags, + KINEMATICS_FORWARD_FLAGS *fflags) +{ + const double rt2 = rtapi_sqrt(2.0); + + int idx, sx = -1, sy = 1, nx, ny; + double dx, dy, dz, px, py, pz; + + double limx = fmin(*(haldata->dimx) - 2.0 * *(haldata->limit), *(haldata->limx)); + double limy = fmin(*(haldata->dimy) - 2.0 * *(haldata->limit), *(haldata->limy)); + double limz = *(haldata->dimz); + + px = fclamp(pos->tran.x, -0.5 * limx, 0.5 * limx); + py = fclamp(pos->tran.y, -0.5 * limy, 0.5 * limy); + pz = fclamp(pos->tran.z, 0.0, limz); + + //rtapi_print("(%d %d %d) -> ", (int)(1000*pos->tran.x), (int)(1000*pos->tran.y), (int)(1000*pos->tran.z)); + //rtapi_print("(%d %d %d)\n", (int)(1000*px), (int)(1000*py), (int)(1000*pz)); + + // TODO: This needs to compensate for the carriage tipping the further it gets from the center + for(idx = 0; idx < 4; ++idx) { + double tower_x = 0.5 * sx * *(haldata->dimx); + double tower_y = 0.5 * sy * *(haldata->dimy); + + double carriage_x = px + rt2 * sx * *(haldata->radius); + double carriage_y = py + rt2 * sy * *(haldata->radius); + + dx = carriage_x - tower_x; + dy = carriage_y - tower_y; + dz = limz - pz; + + joints[idx] = rtapi_sqrt(dx*dx + dy*dy + dz*dz) - *(haldata->limit); + if(joints[idx] < 0.0) { + joints[idx] = 0.0; + } + + nx = sy; ny = -sx; + sx = nx; sy = ny; + } + + for(; idx < 9; ++idx) { + joints[idx] = 0.0; + } + + return 0; +} + +int kinematicsHome(EmcPose *world, + double *joints, + KINEMATICS_FORWARD_FLAGS *fflags, + KINEMATICS_INVERSE_FLAGS *iflags) +{ + int idx; + double hypot = rtapi_sqrt(*(haldata->dimx) * *(haldata->dimx) + *(haldata->dimy) * *(haldata->dimy)); + + *fflags = 0; + *iflags = 0; + + for(idx = 0; idx < 9; ++ idx) { + joints[idx] = idx < 4 ? 0.5 * hypot - *(haldata->radius) : 0.0; + } + + // Because of the way the ZERO_EMC_POSE macro the extra parens are mandatory + ZERO_EMC_POSE((*world)); + + return 0; +} + +KINEMATICS_TYPE kinematicsType(void) { + return KINEMATICS_BOTH; +} + +int in_position(struct hal_joint_t *joints) { + int idx; + for(idx = 0; idx < 4; ++idx) { + if(!*(joints[idx].position)) { + return 0; + } + } + return 1; +} + +void halt_motion(struct hal_joint_t *joints) { + int idx = 0; + for(idx = 0; idx < 4; ++idx) { + *(joints[idx].jog) = 0.0; + } +} + +void drawbot_home(void *args, long period) { + int idx; + hal_bit_t homing = 0; + + for(idx = 0; idx < 4; ++idx) { + *(haldata->joint[idx].home) = 0; + } + if(*(haldata->occupied)) { + return; + } + + if(*(haldata->homing)) { + // Home order X -> Z -> Y -> A + if(*(haldata->headless)) { + for(idx = 0; idx < 4; ++idx) { + if(*(haldata->joint[idx].homed)) { + continue; + } + if(*(haldata->joint[idx].position)) { + *(haldata->joint[idx].home) = 1; + } else { + *(haldata->joint[idx].jog) = 0.0; + } + } + } else { + if(!*(haldata->joint[0].homed)) { + drawbot_home_x(haldata->joint); + } else if(!*(haldata->joint[2].homed)) { + drawbot_home_z(haldata->joint); + } else if(!*(haldata->joint[1].homed)) { + drawbot_home_y(haldata->joint); + } else if(!*(haldata->joint[3].homed)) { + drawbot_home_a(haldata->joint); + } + } + } else { + for(idx = 0; idx < 4; ++idx) { + *(haldata->joint[idx].jog) = 0.0; + haldata->joint[idx].started = 0; + haldata->joint[idx].tripped = 0; + } + } +} + +void drawbot_home_x(struct hal_joint_t *joint) { + if(joint[0].tripped) { + if(*(joint[0].position)) { + *(joint[0].home) = 1; + } + } else if(*(joint[0].home_switch)) { + joint[0].tripped = 1; + halt_motion(joint); + } else if(!joint[0].started) { + joint[0].started = 1; + + *(joint[0].jog) = -1.0; + *(joint[2].jog) = *(joint[2].homed) ? 1.0 : 0.62; + } +} + +void drawbot_home_y(struct hal_joint_t *joint) { + if(joint[1].tripped) { + if(*(joint[1].position)) { + *(joint[1].home) = 1; + } + } else if(*(joint[1].home_switch)) { + joint[1].tripped = 1; + halt_motion(joint); + } else if(!joint[1].started) { + joint[1].started = 1; + *(joint[1].jog) = -1.0; + *(joint[2].jog) = 1.0; + *(joint[3].jog) = 0.41; + } +} + +void drawbot_home_z(struct hal_joint_t *joint) { + if(joint[2].tripped) { + if(*(joint[2].position)) { + *(joint[2].home) = 1; + } + } else if(*(joint[2].home_switch)) { + joint[2].tripped = 1; + halt_motion(joint); + } else if(!joint[2].started) { + joint[2].started = 1; + *(joint[0].jog) = *(joint[0].homed) ? 1.0 : 0.62; + *(joint[2].jog) = -1.0; + } +} + +void drawbot_home_a(struct hal_joint_t *joint) { + if(joint[3].tripped) { + if(in_position(joint)) { + *(joint[3].home) = 1; + } + } else if(*(joint[3].home_switch)) { + joint[3].tripped = 1; + halt_motion(joint); + } else if(!joint[3].started) { + joint[3].started; + *(joint[1].jog) = 1.0; + *(joint[3].jog) = -1.0; + } +} \ No newline at end of file diff --git a/src/emc/kinematics/kinematics.h b/src/emc/kinematics/kinematics.h index c5a5cd8342..0f59968593 100644 --- a/src/emc/kinematics/kinematics.h +++ b/src/emc/kinematics/kinematics.h @@ -129,7 +129,7 @@ typedef KINEMATICS_TYPE (*vtk_kinematicsType_t)(void); typedef struct { vtk_kinematicsForward_t kinematicsForward; vtk_kinematicsInverse_t kinematicsInverse; - // vtk_kinematicsHome_t kinematicsHome; // unused + vtk_kinematicsHome_t kinematicsHome; // used by drawbotkins vtk_kinematicsType_t kinematicsType; } vtkins_t; From fdf2dd485fc3e489eba086f8171e06a1c4450005 Mon Sep 17 00:00:00 2001 From: bdebruijn Date: Tue, 16 May 2017 12:00:55 +0200 Subject: [PATCH 047/516] indextablev2.icomp: add indextable component --- src/hal/i_components/indextablev2.icomp | 167 ++++++++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 src/hal/i_components/indextablev2.icomp diff --git a/src/hal/i_components/indextablev2.icomp b/src/hal/i_components/indextablev2.icomp new file mode 100644 index 0000000000..2c52e4926b --- /dev/null +++ b/src/hal/i_components/indextablev2.icomp @@ -0,0 +1,167 @@ +component indextablev2 """ +Driving an index (table) by means of specifying the desired position. +An index switch detects the correct signal to stop. +"""; +description """ +This component can be connected to a Frequency Inverter for use with +for example an indexing table. + +Internally there is a small state machine with the following states: +0 = disabled +1 = inactive +2 = start index table +3 = moving +4 = home indextable + +The state is disabled by default, and setting the `enable` pin will +put the state machine tin the `inactive` state. + +From the inactive state we can start moving the table by setting the +target position with the `index-cmd` pin. After setting the target +the component needs a high edge of the `start` pin. With this the +component moves to the `start index table` state. + +Also increasing/decreasing one position with `pulse-inc` and `pulse-dec` +and setting the current position `index-fb` to the target value of +`index-cmd` by means of `home` can be done from the inactive state. + +When there is a combination of `pulse=inc`, `pulse-dec`, `home` and +`start` the order of precedence is as follows: +1 : start +2 : home +3 : pulse-dec +4 : pulse-inc +"""; +pin_ptr in s32 index_cmd = 0 "Desired position of the indexing device"; +pin_ptr in bit index_switch = false "Switch rising edge counts up/down"; +pin_ptr in bit start = false "Start movement of indextable on rising edge"; +pin_ptr in bit enable = false "Enabling output drive-run, when disabled then drive-run is off and drive-brake is on"; +pin_ptr in bit set_home = false "From inactive state one can set the current index to the value of index-cmd"; +pin_ptr out s32 index_fb = false "Current index of the table"; +pin_ptr in bit pulse_inc = false "Pulse for moving indextable to next lower position"; +pin_ptr in bit pulse_dec = false "Pulse for moving indextable to next higher position"; +pin_ptr out bit drive_on = false "Needs to be connected to a drive"; +pin_ptr out bit drive_dir = false "Needs to be connected to a drive"; +pin_ptr out bit drive_brake = false "Needs to be connected to a drive"; +pin_ptr out bit active = false "When the component is active (driving) then this pin is high"; +pin_ptr out u32 component_state "Mirror of internal state machine."; +variable hal_s32_t index_curr = 0; +variable hal_s32_t index_target = 0; +variable hal_bit_t indextable_active = false; +variable hal_bit_t prev_start = false; +variable hal_bit_t prev_set_home = false; +variable hal_bit_t prev_index_switch = false; +variable hal_bit_t prev_pulse_inc = false; +variable hal_bit_t prev_pulse_dec = false; +variable hal_bit_t direction = 0; +variable hal_u32_t state = 0; // state 0: disabled + // state 1: inactive + // state 2: start index table + // state 3: moving + // state 4: home indextable + +function _; +//variable hal_bit_t old_reset; + +license "GPL"; +author "Bas de Bruijn"; +;; + +FUNCTION(_) +{ + hal_s32_t pos_difference; + // check inputs + if (gb(enable) == 0) { + // set pins for drive, direction, brake and active low + // direct stop + sb(drive_on, false); + sb(drive_brake, true); + indextable_active = false; + sb(active, indextable_active); + state = 0; + } + else { + switch (state){ + case 0: // disabled + if (gb(enable) == 1) state = 1; // go to enable state + break; + case 1: // inactive state + // detect rising edge pulse-inc pin, increase current target and start moving + if ((gb(pulse_inc) && !prev_pulse_inc) && (gb(pulse_inc) == 1)) { + index_target = index_curr + 1; + state = 2; + } + // detect rising edge pulse-dec pin, decrease current target and start moving + if ((gb(pulse_dec) && !prev_pulse_dec) && (gb(pulse_dec) == 1)) { + index_target = index_curr - 1; + state = 2; + } + // detect home pin rising edge + if ((gb(set_home) && !prev_set_home) && (gb(set_home) == 1)) { + state = 4; + } + // detect rising edge start pin, save target and start moving + if ((gb(start) && !prev_start) && (gb(start) == 1)) { + index_target = gs(index_cmd); + state = 2; + } + case 2: // start moving index table + // if desired position not equals current position, then move + pos_difference = (index_target - index_curr); + if (pos_difference == 0) { + // do nothing, return to previous state + state = 1; + } else { + if (pos_difference > 0) { // clockwise direction + direction = 1; + } + else { // counter clockwise direction + direction = 0; + } + sb(drive_dir, direction); + sb(drive_brake, false); + sb(drive_on, true); + indextable_active = true; + state = 3; + } + break; + case 3: // index table is moving + // detect rising edge index_switch + if ((gb(index_switch) && !prev_index_switch) && (gb(index_switch) == 1)) { + if (direction == 1) { + index_curr ++; + } + else { + index_curr --; + } + if (index_curr == index_target) { + // position has been reached + // stop and go to next state + sb(drive_on, false); + sb(drive_brake, true); + indextable_active = false; + state = 1; + } + } + break; + case 4: // set index table current position to commanded position w/o moving + index_curr = gs(index_cmd); + state = 1; + break; + default: + break; + } + } + // store state of start and home input for edge detection + prev_start = gb(start); + prev_pulse_inc = gb(pulse_inc); + prev_pulse_dec = gb(pulse_dec); + prev_set_home = gb(set_home); + prev_index_switch = gb(index_switch); + // output current index to index-fb + ss(index_fb, index_curr); + // set state pin + su(component_state, state); + sb(active, indextable_active); + return 0; +} From be5bb3f79b2287cad83a1f214f508d97abc87333 Mon Sep 17 00:00:00 2001 From: bdebruijn Date: Thu, 18 May 2017 17:36:06 +0200 Subject: [PATCH 048/516] indextablev2.icomp: fix case statement for homing component --- src/hal/i_components/indextablev2.icomp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/hal/i_components/indextablev2.icomp b/src/hal/i_components/indextablev2.icomp index 2c52e4926b..2383c7319f 100644 --- a/src/hal/i_components/indextablev2.icomp +++ b/src/hal/i_components/indextablev2.icomp @@ -105,6 +105,7 @@ FUNCTION(_) index_target = gs(index_cmd); state = 2; } + break; case 2: // start moving index table // if desired position not equals current position, then move pos_difference = (index_target - index_curr); From f46f1dac58343653cb91ff690242f2d5d62d403e Mon Sep 17 00:00:00 2001 From: bdebruijn Date: Sun, 21 May 2017 16:18:06 +0200 Subject: [PATCH 049/516] jplan.c: change pos-cmd pin IO to IN in queued mode this pin shows the output from the ringbuffer but when using pins this needs to be in input otherwise we can't attach a signal from elsewhere. --- src/hal/jplanner/jplan.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hal/jplanner/jplan.c b/src/hal/jplanner/jplan.c index 475feaceed..8e8eeb97f2 100644 --- a/src/hal/jplanner/jplan.c +++ b/src/hal/jplanner/jplan.c @@ -215,7 +215,7 @@ static int instantiate_jplan(const int argc, const char **argv) hal_pin_float_newf(HAL_OUT, &(jp->curr_vel), inst_id, "%s.%d.curr-vel", name, i)) return -1; - hal_pin_dir_t dir = queued ? HAL_OUT : HAL_IO; + hal_pin_dir_t dir = queued ? HAL_OUT : HAL_IN; if (hal_pin_float_newf(dir, &(jp->pos_cmd), inst_id, "%s.%d.pos-cmd", name, i) || hal_pin_float_newf(HAL_IO, &(jp->max_vel), inst_id, "%s.%d.max-vel", name, i) || hal_pin_float_newf(HAL_IO, &(jp->max_acc), inst_id, "%s.%d.max-acc", name, i)) From e2f089ea7b7949fe7edeb43b9257783b5d23dd67 Mon Sep 17 00:00:00 2001 From: Mick Date: Sun, 21 May 2017 16:57:38 +0100 Subject: [PATCH 050/516] Add commandline switch to gremlin_view, to specify it is a child window. Allows gremlin_view to be X embedded within another window after creation as a standalone. The switch -c | --childwindow prevents its top window being deiconified at every poll, a mechanism which has the effect of raising the window and keeping it on top. This is very undesirable if embedding within a tab widget for example, where switching tabs should render gremlin_view hidden Signed-off-by: Mick --- lib/python/gremlin_view.py | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/lib/python/gremlin_view.py b/lib/python/gremlin_view.py index e26bce0da8..bef1d6add5 100644 --- a/lib/python/gremlin_view.py +++ b/lib/python/gremlin_view.py @@ -89,6 +89,7 @@ g_move_delay_secs = 0.2 g_progname = os.path.basename(sys.argv[0]) g_verbose = False +g_childwindow = False LOCALEDIR = linuxcnc.SHARE + "/locale" gettext.install("linuxcnc", localedir=LOCALEDIR, unicode=True) @@ -267,7 +268,7 @@ def __init__(self xoffset = '0' if (yoffset is None): yoffset = '0' - + # err from gremlin if omit this self.halg.width = width self.halg.height = height @@ -340,8 +341,11 @@ def _periodic(self,arg): self.ct +=1 self.halg.poll() - if self.parent is None: - self.topwindow.deiconify() + # prevent it forcing to the top when embedded into another window + # that gremlin_view knows nothing about + if g_childwindow == False: + if self.parent is None: + self.topwindow.deiconify() if (self.parent is not None) and (self.ct) == 2: # not sure why delay is needed for reparenting @@ -528,11 +532,13 @@ def set_view_per_w(self,w,vletter): #----------------------------------------------------------------------------- # Standalone (and demo) usage: -# x and yoffset added to allow placement in a screen from +# x and yoffset added to allow placement in a screen from QtAxis # ArcEye 2015 def standalone_gremlin_view(): global ini_file + global g_childwindow + import getopt #--------------------------------------- def usage(msg=None): @@ -545,6 +551,7 @@ def usage(msg=None): [-H | --height] height [-X | --xoffset] xoffset [-Y | --yoffset] yoffset + [-c | --childwindow] is a child window [-f | --file] glade_file Note: linuxcnc must be running on same machine @@ -559,15 +566,17 @@ def usage(msg=None): xoffset = None yoffset = None vbose = False + try: options,remainder = getopt.getopt(sys.argv[1:] - , 'f:hH:vW:X:Y:' + , 'f:hH:vW:X:Y:c' , ['file=' ,'help' ,'width=' ,'height=' ,'xoffset=' ,'yoffset=' + ,'childwindow' ] ) except getopt.GetoptError,msg: @@ -580,10 +589,15 @@ def usage(msg=None): if opt in ('-v','--verbose'): g_verbose = True continue + if opt in ('-c','--childwindow'): + g_childwindow = True + continue + if opt in ('-W','--width' ): width=arg if opt in ('-H','--height'): height=arg if opt in ('-X','--xoffset'): xoffset=arg if opt in ('-Y','--yoffset'): yoffset=arg + if opt in ('-f','--file'): glade_file=arg if remainder: usage('unknown argument:%s' % remainder) From f2de18c242f95e525602adc2425c818053edb181 Mon Sep 17 00:00:00 2001 From: Boris Skegin Date: Sun, 4 Jun 2017 09:41:45 +0200 Subject: [PATCH 051/516] Added Packet UART 8 bit filter option -- this change is backwards compatible to older MESA VHDL --- src/hal/drivers/mesa-hostmot2/pktuart.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/hal/drivers/mesa-hostmot2/pktuart.c b/src/hal/drivers/mesa-hostmot2/pktuart.c index ef792d88e6..7f1101ab4f 100755 --- a/src/hal/drivers/mesa-hostmot2/pktuart.c +++ b/src/hal/drivers/mesa-hostmot2/pktuart.c @@ -212,6 +212,8 @@ int hm2_pktuart_setup(char *name, int bitrate, s32 tx_mode, s32 rx_mode, int txc /* http://freeby.mesanet.com/regmap The PktUARTrMode register is used for setting and checking the PktUARTr's operation mode, timing, and status + Bit 31..30 Unused + Bit 29..22 Filter Register Bit 21 FrameBuffer has data Bits 20..16 Frames received Bits 15..8 InterFrame delay in bit times @@ -225,7 +227,15 @@ int hm2_pktuart_setup(char *name, int bitrate, s32 tx_mode, s32 rx_mode, int txc Bit 0 False Start bit error (sticky) */ if (rx_mode >= 0) { - buff = ((u32)rx_mode) & 0xffff; + buff = ((u32)rx_mode) & 0x3fc0ffff; // 0011 1111 1100 0000 1111 1111 1111 1111 + // the expert user is allowed to pass his own FilterReg value, + // otherwise it will be calculated as floor( 0.5*bittime*ClockLow -1 ) + if ( (buff >> 22) & 0xff == 0x0) { + u32 filter_reg = rtapi_floor(0.5*inst->clock_freq/inst->bitrate - 1.0) ; + if (filter_reg > 255) + filter_reg = 255; + buff = buff | (filter_reg << 22) ; + } r += hm2->llio->write(hm2->llio, inst->rx_mode_addr, &buff, sizeof(u32)); } From 7dc44b5c02b543d06498057e012be7f22ebbf45b Mon Sep 17 00:00:00 2001 From: bdebruijn Date: Mon, 12 Jun 2017 12:38:41 +0200 Subject: [PATCH 052/516] jplan.c: change IO pins to Input pins for use with signals --- src/hal/jplanner/jplan.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/hal/jplanner/jplan.c b/src/hal/jplanner/jplan.c index 8e8eeb97f2..c08eece9a6 100644 --- a/src/hal/jplanner/jplan.c +++ b/src/hal/jplanner/jplan.c @@ -217,8 +217,8 @@ static int instantiate_jplan(const int argc, const char **argv) hal_pin_dir_t dir = queued ? HAL_OUT : HAL_IN; if (hal_pin_float_newf(dir, &(jp->pos_cmd), inst_id, "%s.%d.pos-cmd", name, i) || - hal_pin_float_newf(HAL_IO, &(jp->max_vel), inst_id, "%s.%d.max-vel", name, i) || - hal_pin_float_newf(HAL_IO, &(jp->max_acc), inst_id, "%s.%d.max-acc", name, i)) + hal_pin_float_newf(dir, &(jp->max_vel), inst_id, "%s.%d.max-vel", name, i) || + hal_pin_float_newf(dir, &(jp->max_acc), inst_id, "%s.%d.max-acc", name, i)) return -1; } hal_export_xfunct_args_t xfunct_args = { From b30e6a8d8ae74754381a83f28a3fa00c859420f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Mon, 12 Jun 2017 15:05:04 +0200 Subject: [PATCH 053/516] hal_pru_generic: add minvel pin --- src/hal/drivers/hal_pru_generic/hal_pru_generic.h | 1 + src/hal/drivers/hal_pru_generic/stepgen.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/hal/drivers/hal_pru_generic/hal_pru_generic.h b/src/hal/drivers/hal_pru_generic/hal_pru_generic.h index d7726d5bdf..bb4a358ad0 100644 --- a/src/hal/drivers/hal_pru_generic/hal_pru_generic.h +++ b/src/hal/drivers/hal_pru_generic/hal_pru_generic.h @@ -115,6 +115,7 @@ typedef struct { hal_float_t *position_scale; hal_float_t *maxvel; hal_float_t *maxaccel; + hal_float_t *minvel; hal_u32_t *steplen; hal_u32_t *stepspace; diff --git a/src/hal/drivers/hal_pru_generic/stepgen.c b/src/hal/drivers/hal_pru_generic/stepgen.c index aaae32cb43..c1b4f20968 100644 --- a/src/hal/drivers/hal_pru_generic/stepgen.c +++ b/src/hal/drivers/hal_pru_generic/stepgen.c @@ -289,6 +289,7 @@ static void update_stepgen(hal_pru_generic_t *hpg, long l_period_ns, int i) { double physical_maxvel; // max vel supported by current step timings & position-scale double maxvel; // actual max vel to use this time + double minvel; double steps_per_sec_cmd; @@ -323,6 +324,8 @@ static void update_stepgen(hal_pru_generic_t *hpg, long l_period_ns, int i) { } else { maxvel = *(s->hal.pin.maxvel); } + + minvel = *(s->hal.pin.minvel); } // maxaccel may not be negative @@ -354,6 +357,11 @@ static void update_stepgen(hal_pru_generic_t *hpg, long l_period_ns, int i) { new_vel = -maxvel; } + // also clamp on the lower end to prevent PRU "pin hunting" + if (rtapi_fabs(new_vel) < minvel) { + new_vel = 0.0; + } + *s->hal.pin.velocity_fb = (hal_float_t)new_vel; steps_per_sec_cmd = new_vel * *(s->hal.pin.position_scale); @@ -492,6 +500,12 @@ int export_stepgen(hal_pru_generic_t *hpg, int i) return r; } + r = hal_pin_float_newf(HAL_IN, &(hpg->stepgen.instance[i].hal.pin.minvel), hpg->config.comp_id, "%s.stepgen.%02d.minvel", hpg->config.halname, i); + if (r < 0) { + HPG_ERR("stepgen %02d: Error adding pin 'minvel', aborting\n", i); + return r; + } + r = hal_pin_u32_newf(HAL_IN, &(hpg->stepgen.instance[i].hal.pin.steplen), hpg->config.comp_id, "%s.stepgen.%02d.steplen", hpg->config.halname, i); if (r < 0) { HPG_ERR("stepgen %02d: Error adding pin 'steplen', aborting\n", i); @@ -545,6 +559,7 @@ int export_stepgen(hal_pru_generic_t *hpg, int i) *(hpg->stepgen.instance[i].hal.pin.position_scale) = 1.0; *(hpg->stepgen.instance[i].hal.pin.maxvel) = 0.0; *(hpg->stepgen.instance[i].hal.pin.maxaccel) = 1.0; + *(hpg->stepgen.instance[i].hal.pin.minvel) = 0.0; hpg->stepgen.instance[i].subcounts = 0; From 35d7a8667d45d08bbd141c938ae573a2c76f2aa0 Mon Sep 17 00:00:00 2001 From: Kit Ex Machina Date: Wed, 14 Jun 2017 12:00:09 +0000 Subject: [PATCH 054/516] python/fdm: make motion loading more modular --- lib/python/fdm/config/motion.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/python/fdm/config/motion.py b/lib/python/fdm/config/motion.py index dfcca4f4a6..859f549e4e 100644 --- a/lib/python/fdm/config/motion.py +++ b/lib/python/fdm/config/motion.py @@ -3,16 +3,18 @@ from machinekit import config as c -def setup_motion(kinematics='trivkins'): +def setup_motion(kinematics='trivkins', tp='tp', num_aio=50, num_dio=21): rt.loadrt(kinematics) - rt.loadrt('tp') + rt.loadrt(tp) # motion controller, get name and thread periods from ini file rt.loadrt(c.find('EMCMOT', 'EMCMOT'), servo_period_nsec=c.find('EMCMOT', 'SERVO_PERIOD'), num_joints=c.find('TRAJ', 'AXES'), - num_aio=51, - num_dio=21) + num_aio=num_aio, + num_dio=num_dio, + tp=tp, + kins=kinematics) def setup_temperature_io(name): From 5e8e250e5c46d3df6b16c00371e20dc6978509d4 Mon Sep 17 00:00:00 2001 From: Kit Ex Machina Date: Fri, 16 Jun 2017 15:06:17 +0000 Subject: [PATCH 055/516] components: add maxn, minn and sumn --- src/hal/i_components/maxn.icomp | 29 +++++++++++++++++++++++++++++ src/hal/i_components/minn.icomp | 28 ++++++++++++++++++++++++++++ src/hal/i_components/sumn.icomp | 25 +++++++++++++++++++++++++ 3 files changed, 82 insertions(+) create mode 100644 src/hal/i_components/maxn.icomp create mode 100644 src/hal/i_components/minn.icomp create mode 100644 src/hal/i_components/sumn.icomp diff --git a/src/hal/i_components/maxn.icomp b/src/hal/i_components/maxn.icomp new file mode 100644 index 0000000000..367ed4ef89 --- /dev/null +++ b/src/hal/i_components/maxn.icomp @@ -0,0 +1,29 @@ +component maxn "Output the maximum of all inputs"; +pin out float out "Follows the highest value of all in pins"; +pin in float in#.[pincount]; + +instanceparam int pincount = 2; + +option MAXCOUNT 16; + +function _; +license "GPL"; +author "Alexander Roessler"; +;; +#include "rtapi_math.h" + +FUNCTION(_) +{ + int i; + hal_float_t value; + + value = in_(0); + for (i = 1; i < local_pincount; ++i) { + value = rtapi_fmax(value, in_(i)); + } + + + out = value; + + return 0; +} diff --git a/src/hal/i_components/minn.icomp b/src/hal/i_components/minn.icomp new file mode 100644 index 0000000000..a471c51ca4 --- /dev/null +++ b/src/hal/i_components/minn.icomp @@ -0,0 +1,28 @@ +component minn "Output the minimum of all inputs"; +pin out float out "Follows the smallest value of all in pins"; +pin in float in#.[pincount]; + +instanceparam int pincount = 2; + +option MAXCOUNT 16; + +function _; +license "GPL"; +author "Alexander Roessler"; +;; +#include "rtapi_math.h" + +FUNCTION(_) +{ + int i; + hal_float_t value; + + value = in_(0); + for (i = 1; i < local_pincount; ++i) { + value = rtapi_fmin(value, in_(i)); + } + + out = value; + + return 0; +} diff --git a/src/hal/i_components/sumn.icomp b/src/hal/i_components/sumn.icomp new file mode 100644 index 0000000000..32b0d3db75 --- /dev/null +++ b/src/hal/i_components/sumn.icomp @@ -0,0 +1,25 @@ +component sumn "Sum of n inputs"; +pin in float in#.[pincount]; +pin out float out "out = sum(in[n])"; + +instanceparam int pincount = 2; + +option MAXCOUNT 16; + +function _; +license "GPL"; +author "Alexander Roessler"; +;; +FUNCTION(_) +{ + int i; + hal_float_t sum; + + sum = 0; + for (i = 0; i < local_pincount; ++i) { + sum += in_(i); + } + out = sum; + +return 0; +} From 2f8b20866a7ecf370f5b170df41377c593ddc8fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Fri, 16 Jun 2017 19:45:56 +0200 Subject: [PATCH 056/516] components: add minnv2, maxnv2 and sumnv2 components --- src/hal/i_components/maxnv2.icomp | 28 ++++++++++++++++++++++++++++ src/hal/i_components/minnv2.icomp | 28 ++++++++++++++++++++++++++++ src/hal/i_components/sumnv2.icomp | 25 +++++++++++++++++++++++++ 3 files changed, 81 insertions(+) create mode 100644 src/hal/i_components/maxnv2.icomp create mode 100644 src/hal/i_components/minnv2.icomp create mode 100644 src/hal/i_components/sumnv2.icomp diff --git a/src/hal/i_components/maxnv2.icomp b/src/hal/i_components/maxnv2.icomp new file mode 100644 index 0000000000..50e3e5f2b5 --- /dev/null +++ b/src/hal/i_components/maxnv2.icomp @@ -0,0 +1,28 @@ +component maxnv2 "Output the maximum of all inputs"; +pin_ptr out float out "Follows the highest value of all in pins"; +pin_ptr in float in#.[pincount]; + +instanceparam int pincount = 2; + +option MAXCOUNT 16; + +function _; +license "GPL"; +author "Alexander Roessler"; +;; +#include "rtapi_math.h" + +FUNCTION(_) +{ + int i; + hal_float_t value; + + value = gf(in_(0)); + for (i = 1; i < local_pincount; ++i) { + value = rtapi_fmax(value, gf(in_(i))); + } + + sf(out, value); + + return 0; +} diff --git a/src/hal/i_components/minnv2.icomp b/src/hal/i_components/minnv2.icomp new file mode 100644 index 0000000000..9f9d11146b --- /dev/null +++ b/src/hal/i_components/minnv2.icomp @@ -0,0 +1,28 @@ +component minnv2 "Output the minimum of all inputs"; +pin_ptr out float out "Follows the smallest value of all in pins"; +pin_ptr in float in#.[pincount]; + +instanceparam int pincount = 2; + +option MAXCOUNT 16; + +function _; +license "GPL"; +author "Alexander Roessler"; +;; +#include "rtapi_math.h" + +FUNCTION(_) +{ + int i; + hal_float_t value; + + value = gf(in_(0)); + for (i = 1; i < local_pincount; ++i) { + value = rtapi_fmin(value, gf(in_(i))); + } + + sf(out, value); + + return 0; +} diff --git a/src/hal/i_components/sumnv2.icomp b/src/hal/i_components/sumnv2.icomp new file mode 100644 index 0000000000..9eb2e559b3 --- /dev/null +++ b/src/hal/i_components/sumnv2.icomp @@ -0,0 +1,25 @@ +component sumnv2 "Sum of n inputs"; +pin_ptr in float in#.[pincount]; +pin_ptr out float out "out = sum(in[n])"; + +instanceparam int pincount = 2; + +option MAXCOUNT 16; + +function _; +license "GPL"; +author "Alexander Roessler"; +;; +FUNCTION(_) +{ + int i; + hal_float_t sum; + + sum = 0; + for (i = 0; i < local_pincount; ++i) { + sum += gf(in_(i)); + } + sf(out, sum); + +return 0; +} From b72b958dc60254a36689e30ce4c86a64d957b828 Mon Sep 17 00:00:00 2001 From: "Robert W. Ellenberg" Date: Wed, 11 Mar 2015 18:56:43 -0400 Subject: [PATCH 057/516] tp: fix for arc-arc coplanar check Arc / Arc coplanarity checks did not properly handle the case of two helixes blending into each other. While this typically results in blend failure anyway, rare cases have lead to a spurious "can't add circular move error. This commit explicitly checks blend binormal and each circular plane normal to ensure that both are parallel. Signed-off-by: Robert W. Ellenberg --- src/emc/tp/tp.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/emc/tp/tp.c b/src/emc/tp/tp.c index b0dd02def5..71d99090cf 100644 --- a/src/emc/tp/tp.c +++ b/src/emc/tp/tp.c @@ -1183,6 +1183,25 @@ STATIC int tpCreateArcArcBlend(TP_STRUCT * const tp, TC_STRUCT * const prev_tc, return res_init; } + int coplanar1 = pmCartCartParallel(&geom.binormal, + &prev_tc->coords.circle.xyz.normal, + TP_ANGLE_EPSILON); + + if (!coplanar1) { + tp_debug_print("aborting blend arc, arc id %d is not coplanar with binormal\n", prev_tc->id); + return TP_ERR_FAIL; + } + + int coplanar2 = pmCartCartParallel(&geom.binormal, + &tc->coords.circle.xyz.normal, + TP_ANGLE_EPSILON); + if (!coplanar2) { + tp_debug_print("aborting blend arc, arc id %d is not coplanar with binormal\n", tc->id); + return TP_ERR_FAIL; + } + + + int res_param = blendComputeParameters(¶m); int res_points = blendFindPoints3(&points_approx, &geom, ¶m); From 4b3518372397dd486297f5f59450bbca2552bf12 Mon Sep 17 00:00:00 2001 From: "Robert W. Ellenberg" Date: Thu, 12 Mar 2015 15:46:49 -0400 Subject: [PATCH 058/516] tp: overhaul spiral fit computation to use more numerically stable quadratic formula In the spiral arc fit, near-circular spirals have poorly conditioned quadratic coefficients in the arc-length fit. The "standard" quadratic formula becomes ill-conditioned when the "A" coefficient is small. This commit uses an alternate form of the quadratic formula that is robust against small "A" terms, leading eliminating the need for the fit tolerance used previously. Signed-off-by: Robert W. Ellenberg --- src/emc/tp/blendmath.c | 71 ++++++++++++++++++++++++++++-------------- src/emc/tp/blendmath.h | 6 ++-- src/emc/tp/tc.c | 12 ++++--- 3 files changed, 59 insertions(+), 30 deletions(-) diff --git a/src/emc/tp/blendmath.c b/src/emc/tp/blendmath.c index 9ccbd6aa17..c9c0785140 100644 --- a/src/emc/tp/blendmath.c +++ b/src/emc/tp/blendmath.c @@ -1612,9 +1612,10 @@ double pmCircleActualMaxVel(PmCircle * const circle, double v_max, double a_max, * Intermediate function to find the angle for a parameter from 0..1 along the * spiral arc. */ -static double pmCircleAngleFromParam(PmCircle const * const circle, +static int pmCircleAngleFromParam(PmCircle const * const circle, SpiralArcLengthFit const * const fit, - double t) + double t, + double * const angle) { if (fit->spiral_in) { t = 1.0 - t; @@ -1623,25 +1624,42 @@ static double pmCircleAngleFromParam(PmCircle const * const circle, double s_in = t * fit->total_planar_length; // Quadratic formula to invert arc length -> angle - double angle_out; - double disc = 4.0 * fit->b0 * s_in + pmSq(fit->b1); - if (rtapi_fabs(fit->b0) > TP_POS_EPSILON && disc > TP_POS_EPSILON) { - //Know that discriminant is positive and divisor is large enough not to - //cause numerical errors - angle_out = (pmSqrt(disc) - fit->b1) / (2.0 * fit->b0); - } else { - //Circle case, don't need a fit - angle_out = s_in / circle->radius; + double A = fit->b0; + double B = fit->b1; + double C = -s_in; + + double disc = pmSq(B) - 4.0 * A * C ; + if (disc < 0) { + rtapi_print_msg(RTAPI_MSG_ERR, "discriminant %f is negative in angle calculation\n",disc); + return TP_ERR_FAIL; } + /* + * Stability of inverting the arc-length relationship. + * Since the b1 coefficient is analogous to arc radius, we can be + * reasonably assured that it will be large enough not to cause numerical + * errors. If this is not the case, then the arc itself is degenerate (very + * small radius), and this condition should be caught well before here. + * + * Since an arc with a very small spiral coefficient will have a small b0 + * coefficient in the fit, we use the Citardauq Formula to ensure that the + * positive root does not lose precision due to subtracting near-similar values. + * + * For more information, see: + * http://people.csail.mit.edu/bkph/articles/Quadratics.pdf + */ + + double angle_out = (2.0 * C) / ( -B - pmSqrt(disc)); + if (fit->spiral_in) { // Spiral fit assumes that we're spiraling out, so // parameterize from opposite end angle_out = circle->angle - angle_out; } - return angle_out; + *angle = angle_out; + return TP_ERR_OK; } @@ -1706,18 +1724,22 @@ int findSpiralArcLengthFit(PmCircle const * const circle, printSpiralArcLengthFit(fit); // Check against start and end angle - double angle_end_chk = pmCircleAngleFromParam(circle, fit, 1.0); - /*double scale_correction = circle->angle / angle_end_chk;*/ - - /*fit->b0 *= scale_correction;*/ - /*fit->b1 *= scale_correction;*/ + double angle_end_chk = 0.0; + int res_angle = pmCircleAngleFromParam(circle, fit, 1.0, &angle_end_chk); + if (res_angle != TP_ERR_OK) { + //TODO better error message + rtapi_print_msg(RTAPI_MSG_ERR, + "Spiral fit failed\n"); + return TP_ERR_FAIL; + } - angle_end_chk = pmCircleAngleFromParam(circle, fit, 1.0); + // Check fit against angle double fit_err = angle_end_chk - circle->angle; - if (rtapi_fabs(fit_err) > TP_ANGLE_EPSILON) { - tp_debug_print("Spiral fit check: fit_err = %e\n", - fit_err); + rtapi_print_msg(RTAPI_MSG_ERR, + "Spiral fit angle difference is %e, maximum allowed is %e\n", + fit_err, + TP_ANGLE_EPSILON); return TP_ERR_FAIL; } @@ -1729,16 +1751,17 @@ int findSpiralArcLengthFit(PmCircle const * const circle, * Compute the angle around a circular segment from the total progress along * the curve. */ -double pmCircleAngleFromProgress(PmCircle const * const circle, +int pmCircleAngleFromProgress(PmCircle const * const circle, SpiralArcLengthFit const * const fit, - double progress) + double progress, + double * const angle) { double h2; pmCartMagSq(&circle->rHelix, &h2); double s_end = pmSqrt(pmSq(fit->total_planar_length) + h2); // Parameterize by total progress along helix double t = progress / s_end; - return pmCircleAngleFromParam(circle, fit, t); + return pmCircleAngleFromParam(circle, fit, t, angle); } diff --git a/src/emc/tp/blendmath.h b/src/emc/tp/blendmath.h index d2fb544e17..ce5789d83b 100644 --- a/src/emc/tp/blendmath.h +++ b/src/emc/tp/blendmath.h @@ -230,9 +230,11 @@ double pmCircleActualMaxVel(PmCircle * const circle, int parabolic); int findSpiralArcLengthFit(PmCircle const * const circle, SpiralArcLengthFit * const fit); -double pmCircleAngleFromProgress(PmCircle const * const circle, +int pmCircleAngleFromProgress(PmCircle const * const circle, SpiralArcLengthFit const * const fit, - double progress); + double progress, + double * const angle); double pmCircleLength(PmCircle const * const circle); double pmCircleEffectiveMinRadius(PmCircle const * const circle); + #endif diff --git a/src/emc/tp/tc.c b/src/emc/tp/tc.c index 62db81f313..d37c0003bc 100644 --- a/src/emc/tp/tc.c +++ b/src/emc/tp/tc.c @@ -289,6 +289,7 @@ int tcGetPosReal(TC_STRUCT const * const tc, int of_point, EmcPose * const pos) // Used for arc-length to angle conversion with spiral segments double angle = 0.0; + int res_fit = TP_ERR_OK; switch (tc->motion_type){ case TC_RIGIDTAP: @@ -313,9 +314,9 @@ int tcGetPosReal(TC_STRUCT const * const tc, int of_point, EmcPose * const pos) &abc); break; case TC_CIRCULAR: - angle = pmCircleAngleFromProgress(&tc->coords.circle.xyz, + res_fit = pmCircleAngleFromProgress(&tc->coords.circle.xyz, &tc->coords.circle.fit, - progress); + progress, &angle); pmCirclePoint(&tc->coords.circle.xyz, angle, &xyz); @@ -335,8 +336,11 @@ int tcGetPosReal(TC_STRUCT const * const tc, int of_point, EmcPose * const pos) break; } - pmCartesianToEmcPose(&xyz, &abc, &uvw, pos); - return 0; + if (res_fit == TP_ERR_OK) { + // Don't touch pos unless we know the value is good + pmCartesianToEmcPose(&xyz, &abc, &uvw, pos); + } + return res_fit; } From b0e58d6ab98bd8c552562bf50635be62465724e3 Mon Sep 17 00:00:00 2001 From: "Robert W. Ellenberg" Date: Thu, 12 Mar 2015 15:48:15 -0400 Subject: [PATCH 059/516] tp: purge old circle length function Signed-off-by: Robert W. Ellenberg --- src/emc/tp/blendmath.c | 19 ------------------- src/emc/tp/blendmath.h | 1 - 2 files changed, 20 deletions(-) diff --git a/src/emc/tp/blendmath.c b/src/emc/tp/blendmath.c index c9c0785140..e5c78cf102 100644 --- a/src/emc/tp/blendmath.c +++ b/src/emc/tp/blendmath.c @@ -1762,25 +1762,6 @@ int pmCircleAngleFromProgress(PmCircle const * const circle, // Parameterize by total progress along helix double t = progress / s_end; return pmCircleAngleFromParam(circle, fit, t, angle); - -} - - -/** - * compute the total arc length of a circle segment. - * Deprecated since adding the fit to PmCircle9 - */ -double pmCircleLength(PmCircle const * const circle) -{ - - SpiralArcLengthFit fit; - //TODO store in circle init rather than recalculating each time - findSpiralArcLengthFit(circle, &fit); - double h2; - pmCartMagSq(&circle->rHelix, &h2); - double helical_length = pmSqrt(pmSq(fit.total_planar_length) + h2); - - return helical_length; } diff --git a/src/emc/tp/blendmath.h b/src/emc/tp/blendmath.h index ce5789d83b..7f6e1cf87f 100644 --- a/src/emc/tp/blendmath.h +++ b/src/emc/tp/blendmath.h @@ -234,7 +234,6 @@ int pmCircleAngleFromProgress(PmCircle const * const circle, SpiralArcLengthFit const * const fit, double progress, double * const angle); -double pmCircleLength(PmCircle const * const circle); double pmCircleEffectiveMinRadius(PmCircle const * const circle); #endif From f2ecb6a301cdb12a5db060a60ce40a38bfab2ee2 Mon Sep 17 00:00:00 2001 From: Mick Date: Mon, 19 Jun 2017 12:47:01 +0100 Subject: [PATCH 060/516] Add hy_vfd to Machinekit repo A user space component for controlling a huanyang spindle inverter with machinekit. Component originally written by S Alford and published at http://www.cnczone.com/forums/phase-converters/91847-huanyang-vfd-rs485-modbus-3.html#post704008 Changes were contributed to fix problems with the rebranding of emc2 to linuxcnc. These were contributed by alan_3301, also on the cnczone forum. Seb Kuzminsky https://github.com/SebKuzminsky added the code to the Linuxcnc repo and made numerous changes, edits and bugfixes including: Creating a Submakefile so as to build within the source tree Ensuring clean shutdown Fixed frequency calculation Improved comms error handling Read retry if initial one fails Added spindle speed pins Enabled setting params from command line Fixed partial reads bug Brian Hicks : Fixed spindle_at_speed when running in reverse Signed-off-by: Mick --- src/Makefile | 1 + src/hal/user_comps/huanyang-vfd/README.md | 11 + src/hal/user_comps/huanyang-vfd/Submakefile | 12 + .../huanyang-vfd/config-files/custom.hal | 16 + .../config-files/custom_postgui.hal | 34 + .../huanyang-vfd/config-files/panel.xml | 351 +++++++ src/hal/user_comps/huanyang-vfd/hy_comm.c | 942 +++++++++++++++++ src/hal/user_comps/huanyang-vfd/hy_comm.h | 141 +++ src/hal/user_comps/huanyang-vfd/hy_vfd.c | 988 ++++++++++++++++++ 9 files changed, 2496 insertions(+) create mode 100644 src/hal/user_comps/huanyang-vfd/README.md create mode 100644 src/hal/user_comps/huanyang-vfd/Submakefile create mode 100644 src/hal/user_comps/huanyang-vfd/config-files/custom.hal create mode 100644 src/hal/user_comps/huanyang-vfd/config-files/custom_postgui.hal create mode 100644 src/hal/user_comps/huanyang-vfd/config-files/panel.xml create mode 100644 src/hal/user_comps/huanyang-vfd/hy_comm.c create mode 100644 src/hal/user_comps/huanyang-vfd/hy_comm.h create mode 100644 src/hal/user_comps/huanyang-vfd/hy_vfd.c diff --git a/src/Makefile b/src/Makefile index f885d0b288..95cf787675 100755 --- a/src/Makefile +++ b/src/Makefile @@ -237,6 +237,7 @@ SUBDIRS := \ hal/user_comps/vismach \ hal/user_comps/vfs11_vfd \ hal/user_comps/vfdb_vfd \ + hal/user_comps/huanyang-vfd \ hal/classicladder \ hal/utils \ hal \ diff --git a/src/hal/user_comps/huanyang-vfd/README.md b/src/hal/user_comps/huanyang-vfd/README.md new file mode 100644 index 0000000000..803142c356 --- /dev/null +++ b/src/hal/user_comps/huanyang-vfd/README.md @@ -0,0 +1,11 @@ +Machinekit huanyang-vfd driver +============================== + +A user space component for controlling a huanyang spindle inverter with machinekit. +The component was developed by S. Alford and published at http://www.cnczone.com/forums/phase-converters/91847-huanyang-vfd-rs485-modbus-3.html#post704008 + +Some changes were contributed to fix problems with rebranding by alan_3301, also on the cnczone forum. + +Seb Kuzminsky included some bugfixes in the code and did the conversions for building within the source tree. + +The software is released under GPL V2 diff --git a/src/hal/user_comps/huanyang-vfd/Submakefile b/src/hal/user_comps/huanyang-vfd/Submakefile new file mode 100644 index 0000000000..616d0c596d --- /dev/null +++ b/src/hal/user_comps/huanyang-vfd/Submakefile @@ -0,0 +1,12 @@ +HY_VFD_SRCS = hal/user_comps/huanyang-vfd/hy_vfd.c hal/user_comps/huanyang-vfd/hy_comm.c +HY_VFD_CFLAGS = $(GLIB_CFLAGS) +HY_VFD_LIBS = $(GLIB_LIBS) -lpthread + +$(call TOOBJSDEPS, $(HY_VFD_SRCS)) : EXTRAFLAGS += $(HY_VFD_CFLAGS) + +USERSRCS += $(HY_VFD_SRCS) +../bin/hy_vfd: $(call TOOBJS, $(HY_VFD_SRCS)) ../lib/liblinuxcnchal.so.0 + $(ECHO) Linking $(notdir $@) + $(Q)$(CC) $(LDFLAGS) -o $@ $^ $(HY_VFD_LIBS) + +TARGETS += ../bin/hy_vfd diff --git a/src/hal/user_comps/huanyang-vfd/config-files/custom.hal b/src/hal/user_comps/huanyang-vfd/config-files/custom.hal new file mode 100644 index 0000000000..f577c96e95 --- /dev/null +++ b/src/hal/user_comps/huanyang-vfd/config-files/custom.hal @@ -0,0 +1,16 @@ +# Include your customized HAL commands here +# This file will not be overwritten when you run stepconf again + +# Load the Huanyang VFD user component +loadusr -Wn spindle-vfd hy_vfd -n spindle-vfd + +# connect the spindle direction pins to the VFD +net hy-fwd <= motion.spindle-forward => spindle-vfd.spindle-fwd +net hy-rev <= motion.spindle-reverse => spindle-vfd.spindle-rev + +# connect the spindle on pin to the VFD +net hy-on <= motion.spindle-on => spindle-vfd.spindle-on + +# connect the spindle RPM to the VFD +# Note: spindle-cmd created by stepconf wizard +net spindle-cmd => spindle-vfd.speed-command diff --git a/src/hal/user_comps/huanyang-vfd/config-files/custom_postgui.hal b/src/hal/user_comps/huanyang-vfd/config-files/custom_postgui.hal new file mode 100644 index 0000000000..5a2755a692 --- /dev/null +++ b/src/hal/user_comps/huanyang-vfd/config-files/custom_postgui.hal @@ -0,0 +1,34 @@ +# Include your customized HAL commands here +# The commands in this file are run after the AXIS GUI (including PyVCP panel) starts + +# HAL connections for Panel Display +net hy-RPM <= spindle-vfd.Rott => pyvcp.spindle-speed +net hy-AMPS <= spindle-vfd.OutA => pyvcp.amp-meter +net hy-Base-Freq <= spindle-vfd.base-freq => pyvcp.base-freq +net hy-Max-Freq <= spindle-vfd.max-freq => pyvcp.max-freq +net hy-Freq-Lower <= spindle-vfd.freq-lower-limit => pyvcp.freq-lower-limit +net hy-Motor-Voltage <= spindle-vfd.rated-motor-voltage => pyvcp.rated-motor-voltage +net hy-Motor-Current <= spindle-vfd.rated-motor-current => pyvcp.rated-motor-current +net hy-Motor-Poles <= spindle-vfd.motor-pole-number => pyvcp.motor-pole-number +net hy-Motor-Rev <= spindle-vfd.rated-motor-rev => pyvcp.rated-motor-rev +net hy-Modbus-OK <= spindle-vfd.modbus-ok => pyvcp.modbus-ok +#net hy-Freq-Cmd <= spindle-vfd.frequency-command => pyvcp.frequency-command + +net hy-CNST-Run <= spindle-vfd.CNST-run => pyvcp.CNST-run +net hy-CNST-Jog <= spindle-vfd.CNST-jog => pyvcp.CNST-jog +net hy-CNST-Command-rf <= spindle-vfd.CNST-command-rf => pyvcp.CNST-command-rf +net hy-CNST-Runnning <= spindle-vfd.CNST-running => pyvcp.CNST-running +net hy-CNST-Jogging <= spindle-vfd.CNST-jogging => pyvcp.CNST-jogging +net hy-CNST-Running-rf <= spindle-vfd.CNST-running-rf => pyvcp.CNST-running-rf +net hy-CNST-Bracking <= spindle-vfd.CNST-bracking => pyvcp.CNST-bracking +net hy-CNST-Track-Start <= spindle-vfd.CNST-track-start => pyvcp.CNST-track-start + +# now enable the VFD after EMC is up and running +setp spindle-vfd.enable 1 + +# DRO connections +net DRO-Xpos <= axis.0.joint-pos-cmd => pyvcp.Xdisplay +net DRO-Ypos <= axis.1.joint-pos-cmd => pyvcp.Ydisplay +net DRO-Zpos <= axis.2.joint-pos-cmd => pyvcp.Zdisplay + + diff --git a/src/hal/user_comps/huanyang-vfd/config-files/panel.xml b/src/hal/user_comps/huanyang-vfd/config-files/panel.xml new file mode 100644 index 0000000000..8596a133b6 --- /dev/null +++ b/src/hal/user_comps/huanyang-vfd/config-files/panel.xml @@ -0,0 +1,351 @@ + + + + ("Helvetica",12) + + + + + + + + "Xdisplay" + "+4.2f" + ("courier 10 pitch",30) + 8 + "#7FFF00" + "#000000" + + + + + + + + + + "Ydisplay" + "+4.2f" + ("courier 10 pitch",30) + "#7FFF00" + "#000000" + + + + + + + + + "Zdisplay" + "+4.2f" + ("courier 10 pitch",30) + "#7FFF00" + "#000000" + + + + + + +
+
+ + ("Helvetica",12) + + + + + + + + + + + + + + + + + + + + "base-freq" + "4.2f" + + + + + + + "max-freq" + "4.2f" + + + + + + + "freq-lower-limit" + "4.2f" + + + + + + + "rated-motor-voltage" + "4.0f" + + + + + + + "rated-motor-current" + "4.1f" + + + + + + + "motor-pole-number" + "4.0f" + + + + + + + "rated-motor-rev" + "4.0f" + + + + + + + "modbus-ok" + "10" + "green" + "red" + + + +
+ + + + + + + + + + + + "spindle-speed" + 1440 + + + + + + "amp-meter" + 200 + 0 + 8 + 1 + 0.2 + (7,8,"red") + (5,7,"yellow") + (0,5,"green") + +
+ + + + + + "CNST-run" + "10" + "green" + "red" + + + + "CNST-jogging" + "10" + "green" + "red" + + + + + + "CNST-jog" + "10" + "green" + "red" + + + + "CNST-running-rf" + "10" + "green" + "red" + + + + + + "CNST-command-rf" + "10" + "green" + "red" + + + + "CNST-bracking" + "10" + "green" + "red" + + + + + + "CNST-running" + "10" + "green" + "red" + + + + "CNST-track-start" + "10" + "green" + "red" + + +
+
+
diff --git a/src/hal/user_comps/huanyang-vfd/hy_comm.c b/src/hal/user_comps/huanyang-vfd/hy_comm.c new file mode 100644 index 0000000000..cd16d0d59a --- /dev/null +++ b/src/hal/user_comps/huanyang-vfd/hy_comm.c @@ -0,0 +1,942 @@ +/* hy_comm.c + + By S.Alford + + These library of functions are designed to enable a program send and + receive data from a Huanyang VFD. This device does not use a standard + Modbus function code or data structure. + + This program 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 2 of the License, or + (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + This code has its origins with libmodbus. + +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "rtapi.h" + +#include "hy_comm.h" + + + /* Table of CRC values for high-order byte */ +static unsigned char table_crc_hi[] = { + 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, + 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, + 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, + 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, + 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, + 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, + 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, + 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, + 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, + 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, + 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, + 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, + 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, + 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, + 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, + 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, + 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, + 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, + 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, + 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, + 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, + 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, + 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, + 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, + 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, + 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 +}; + +/* Table of CRC values for low-order byte */ +static unsigned char table_crc_lo[] = { + 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, + 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, + 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, + 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, + 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4, + 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3, + 0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, + 0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4, + 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, + 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29, + 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED, + 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26, + 0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, + 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, + 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, + 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, + 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E, + 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5, + 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, + 0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92, + 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C, + 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, + 0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B, + 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C, + 0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, + 0x43, 0x83, 0x41, 0x81, 0x80, 0x40 +}; + +/************************************************************************* + + Function to treat comms errors + +**************************************************************************/ +static void error_treat(hycomm_param_t *hc_param, int code, const char *string) +{ + if (!hc_param->print_errors) + return; + + printf("\nERROR %s (%d)\n", string, code); + + /* flush the port */ + tcflush(hc_param->fd, TCIOFLUSH); + +} + + +/************************************************************************* + + Fast CRC function + +**************************************************************************/ + +static unsigned short crc16(unsigned char *buffer, + unsigned short buffer_length) +{ + unsigned char crc_hi = 0xFF; /* high CRC byte initialized */ + unsigned char crc_lo = 0xFF; /* low CRC byte initialized */ + unsigned int i; /* will index into CRC lookup */ + + /* pass through message buffer */ + while (buffer_length--) { + i = crc_hi ^ *buffer++; /* calculate the CRC */ + crc_hi = crc_lo ^ table_crc_hi[i]; + crc_lo = table_crc_lo[i]; + } + + return (crc_hi << 8 | crc_lo); +} + +/************************************************************************* + + Check CRC function, returns 0 else returns INVALID_CRC + +**************************************************************************/ + +static int check_crc16(hycomm_param_t *hc_param, uint8_t *msg, + const int msg_length) +{ + int ret; + uint16_t crc_calc; + uint16_t crc_received; + + crc_calc = crc16(msg, msg_length - 2); + crc_received = (msg[msg_length - 2] << 8) | msg[msg_length - 1]; + + /* Check CRC of msg */ + if (crc_calc == crc_received) { + ret = 0; + } else { + char s_error[64]; + sprintf(s_error, + "invalid crc received %0X - crc_calc %0X", + crc_received, crc_calc); + ret = INVALID_CRC; + error_treat(hc_param, ret, s_error); + } + + return ret; +} + + + + +/************************************************************************* + + Function to compute the response length based on function code within + the query sent to the VFD + +**************************************************************************/ + +static unsigned int compute_response_length(hycomm_param_t *hc_param, + uint8_t *query) +{ + int resp_length; + + switch (query[1]) + { + case 0x01: + /* Huanyang VFD - Function Read */ + + case 0x02: + /* Huanyang VFD - Function Write */ + resp_length = 8; + break; + + case 0x03: + /* Huanyang VFD - Write Control Data */ + resp_length = 6; + break; + + case 0x04: + /* Huanyang VFD - Read Control Data */ + resp_length = 8; + break; + + case 0x05: + /* Huanyang VFD - Write Inverter Frequency Data */ + resp_length = 7; + break; + + case 0x06: + /* Huanyang VFD - Reserved */ + + case 0x07: + /* Huanyang VFD - Reserved */ + return -1; + break; + + case 0x08: + /* Huanyang VFD - Loop Test (not implemented)*/ + return -1; + break; + + default: + return -1; + break; + } + + return resp_length; +} + +/************************************************************************* + + Function to add a checksum to the end of a query and send. + +**************************************************************************/ + +static int hycomm_send(hycomm_param_t *hc_param, uint8_t *query, int query_length ) +{ + int ret; + + unsigned short s_crc; + int i; + + /* calculate the CRC */ + s_crc = crc16(query, query_length); + + /* append the CRC to then end of the query */ + query[query_length++] = s_crc >> 8; + query[query_length++] = s_crc & 0x00FF; + + if (hc_param->debug) + { + printf("hycomm query = "); + for (i = 0; i < query_length; i++) + printf("[%.2X]", query[i]); + printf("\n"); + } + + /* write the query to the fd */ + ret = write(hc_param->fd, query, query_length); + + /* Return the number of bytes written (0 to n) + or PORT_SOCKET_FAILURE on error */ + if ((ret == -1) || (ret != query_length)) + { + error_treat(hc_param, ret, "Write port/socket failure"); + ret = PORT_FAILURE; + } + + return ret; +} + + + + + +/*********************************************************************** + + Definintion to be used multiple times in receive_msg function + +***********************************************************************/ + + +#define WAIT_DATA() \ +{ \ + while ((select_ret = select(hc_param->fd+1, &rfds, NULL, NULL, &tv)) == -1) { \ + if (errno == EINTR) { \ + printf("A non blocked signal was caught\n"); \ + /* Necessary after an error */ \ + FD_ZERO(&rfds); \ + FD_SET(hc_param->fd, &rfds); \ + } else { \ + error_treat(hc_param, SELECT_FAILURE, "Select failure"); \ + return SELECT_FAILURE; \ + } \ + } \ + \ + if (select_ret == 0) { \ + printf("WAIT_DATA(): comms time out\n"); \ + /* Call to error_treat is done later to manage exceptions */ \ + return COMM_TIME_OUT; \ + } \ +} + + +/*********************************************************************** + + Function to monitor for the reply from the hycomm slave. + This function blocks for timeout seconds if there is no reply. + + Returns a negative number is an error occured. + The variable msg_length is assigned th number of characters + received. + +***********************************************************************/ + +int receive_msg(hycomm_param_t *hc_param, int msg_length_computed, + uint8_t *msg, int *msg_length) +{ + int select_ret; + int read_ret; + fd_set rfds; + struct timeval tv; + int length_to_read; + unsigned char *p_msg; + + if (hc_param->debug) + printf("waiting for message (%d bytes)...\n", + msg_length_computed); + + /* add a file descriptor to the set */ + FD_ZERO(&rfds); + FD_SET(hc_param->fd, &rfds); + + /* wait for a response */ + tv.tv_sec = 0; + tv.tv_usec = TIME_OUT_BEGIN_OF_FRAME; + + length_to_read = msg_length_computed; + + WAIT_DATA(); + + /* read the message */ + (*msg_length) = 0; + p_msg = msg; + + while (select_ret) /* loop to receive data until end of msg or time out */ + { + read_ret = read(hc_param->fd, p_msg, length_to_read); + if (read_ret == -1) { + error_treat(hc_param, PORT_SOCKET_FAILURE, "Read port/socket failure"); + return PORT_SOCKET_FAILURE; + } + + if (read_ret == 0) { + error_treat(hc_param, PORT_SOCKET_FAILURE, "Short read"); + return PORT_SOCKET_FAILURE; + } + + if (hc_param->debug) { + int i; + printf("read %d bytes: ", read_ret); + for (i = 0; i < read_ret; i ++) { + printf(" 0x%02x", p_msg[i]); + } + printf("\n"); + } + + /* sum bytes received */ + (*msg_length) += read_ret; + + if ((*msg_length) < msg_length_computed) { + /* We can receive a shorter message than msg_length_computed as + some functions return one byte in the data feild. Check against + the received data length stored in msg[2] */ + if ((*msg_length >= 2) && (*msg_length == msg[2]+5)) { + /* we have received the whole message */ + length_to_read = 0; + } else { + /* Message is incomplete */ + length_to_read = msg_length_computed - (*msg_length); + + if (hc_param->debug) { + printf("message was incomplete, length still to read = [%.2X]", length_to_read); + printf("\n"); + } + } + } else { + length_to_read = 0; + } + + /* Moves the pointer to receive other data */ + p_msg = &(p_msg[read_ret]); + + if (length_to_read > 0) { + /* If no character at the buffer wait + TIME_OUT_END_OF_TRAME before to generate an error. */ + tv.tv_sec = 0; + tv.tv_usec = TIME_OUT_END_OF_FRAME; + + WAIT_DATA(); + } else { + /* All chars are received */ + select_ret = FALSE; + } + + } + + if (hc_param->debug) { + int i; + printf("returning %d byte message: ", *msg_length); + for (i = 0; i < *msg_length; i ++) { + printf(" 0x%02x", msg[i]); + } + printf("\n"); + } + + /* OK */ + return 0; +} + +/********************************************************************* + + Function to check the correct response is returned and that the + checksum is correct. + + Returns the data byte(s) in the response. + +**********************************************************************/ + +static int hycomm_check_response(hycomm_param_t *hc_param, + uint8_t *query, uint8_t *response) +{ + int response_length_computed; + int response_length; + int crc_check; + int ret; + + response_length_computed = compute_response_length(hc_param, query); + if (hc_param->debug) { + printf("response_length_computed = %d", response_length_computed); + printf("\n"); + } + + ret = receive_msg(hc_param, response_length_computed, + response, &response_length); + + if (ret == 0) { + + /* good response so check the CRC*/ + crc_check = check_crc16(hc_param, response, response_length); + if (hc_param->debug) { + printf("crc check = %.2d", crc_check); + printf("\n"); + } + + if (crc_check != 0) + return crc_check; + + if (hc_param->debug) { + printf("we received a message of [%.2X] bytes, with a valid crc", response_length); + printf("\n"); + } + + } else if (ret == COMM_TIME_OUT) { + error_treat(hc_param, ret, "Communication time out"); + return ret; + } else { + return ret; + } + + return 0; +} + +/*********************************************************************** + + The following functions construct the required query into + a hycomm query packet. + +***********************************************************************/ + +int build_query(hycomm_data_t *hc_data, unsigned char *query ) +{ + /* build Hunayang request packet based on function code and return the + packet length (less CRC - 2 bytes) */ + + switch (hc_data->function) + { + case FUNCTION_READ: + case FUNCTION_WRITE: + query[0] = hc_data->slave; + query[1] = hc_data->function; + query[2] = 0x03; + query[3] = hc_data->parameter; + query[4] = hc_data->data >> 8; + query[5] = hc_data->data & 0x00FF; + return 6; + break; + + case WRITE_CONTROL_DATA: + case READ_CONTROL_STATUS: + query[0] = hc_data->slave; + query[1] = hc_data->function; + query[2] = 0x01; + query[3] = hc_data->data & 0x00FF; + return 4; + break; + + case WRITE_FREQ_DATA: + query[0] = hc_data->slave; + query[1] = hc_data->function; + query[2] = 0x02; + query[3] = hc_data->data >> 8; + query[4] = hc_data->data & 0x00FF; + return 5; + break; + + case 0x06: + /* Huanyang VFD - Reserved */ + + case 0x07: + /* Huanyang VFD - Reserved */ + return -1; + break; + + case LOOP_TEST: + return -1; + break; + default: + return -1; + break; + } + + + +} + + +/************************************************************************ + + hy_comm + + sends and receives "hycomm" messages to and from a Huanyang VFD + +*************************************************************************/ + +int hy_comm(hycomm_param_t *hc_param, hycomm_data_t *hc_data) +{ + int query_length; + int query_ret; + int response_ret; + int msg_function_code; + + unsigned char query[MIN_QUERY_SIZE]; + unsigned char response[MAX_PACKET_SIZE]; + + /* build the request query */ + query_length = build_query(hc_data, query); + if (hc_param->debug) { + printf("\n"); + printf("query_length = %d", query_length); + printf("\n"); + } + + /* add CRC to the query and send */ + query_ret = hycomm_send(hc_param, query, query_length); + if (hc_param->debug) { + printf("query_ret = %d", query_ret); + printf("\n"); + } + + if (query_ret > 0){ + /* query was sent so get the response from the VFD */ + response_ret = hycomm_check_response(hc_param, query, response); + + if (response_ret == 0) { + + msg_function_code = response[1]; + if (hc_param->debug) { + printf("the message function code is = [%.2X]", msg_function_code); + printf("\n"); + } + + /* check that the returned function code is the same as the query */ + if (msg_function_code != hc_data->function) + return ILLEGAL_FUNCTION; + + /* the returned data length */ + hc_data->ret_length = response[2]; + + switch (msg_function_code) + { + case FUNCTION_READ: + case FUNCTION_WRITE: + hc_data->ret_parameter = response[3]; + if (hc_data->ret_length == 2) { + hc_data->ret_data = response[4]; + } else { + hc_data->ret_data = response[4] << 8 | response[5]; + } + break; + + case WRITE_CONTROL_DATA: + hc_data->ret_parameter = 0x00; + hc_data->ret_data = response[3]; + break; + + case READ_CONTROL_STATUS: + hc_data->ret_parameter = response[3]; + hc_data->ret_data = response[4] << 8 | response[5]; + break; + + case WRITE_FREQ_DATA: + hc_data->ret_parameter = response[3]; + hc_data->ret_data = response[3] << 8 | response[4]; + break; + + default: + return -1; + break; + } + + + if (hc_param->debug) { + printf("response parameter = [%.2X]", hc_data->ret_parameter); + printf("\n"); + printf("response data = [%.4X]", hc_data->ret_data); + printf("\n"); + } + } + + } else { + response_ret = query_ret; + } + + return response_ret; +} + + +/************************************************************************ + + Initializes the hycomm_param_t structure for RTU + - device: "/dev/ttyS0" + - baud: 9600, 19200, 57600, 115200, etc + - parity: "even", "odd" or "none" + - data_bits: 5, 6, 7, 8 + - stop_bits: 1, 2 + +**************************************************************************/ + +void hycomm_init(hycomm_param_t *hc_param, const char *device, + int baud, const char *parity, int data_bit, + int stop_bit) +{ + memset(hc_param, 0, sizeof(hycomm_param_t)); + strcpy(hc_param->device, device); + hc_param->baud = baud; + strcpy(hc_param->parity, parity); + hc_param->debug = FALSE; + hc_param->data_bit = data_bit; + hc_param->stop_bit = stop_bit; +} + + +/************************************************************************ + + Closes the file descriptor in RTU mode + +**************************************************************************/ + +void hycomm_close(hycomm_param_t *hc_param) +{ + if (tcsetattr(hc_param->fd, TCSANOW, &(hc_param->old_tios)) < 0) + perror("tcsetattr"); + + close(hc_param->fd); +} + + +/************************************************************************ + + Sets up a serial port for RTU communications + +**************************************************************************/ + +int hycomm_connect(hycomm_param_t *hc_param) +{ + struct termios tios; + speed_t speed; + + if (hc_param->debug) { + printf("Opening %s at %d bauds (%s)\n", + hc_param->device, hc_param->baud, hc_param->parity); + } + + /* The O_NOCTTY flag tells UNIX that this program doesn't want + to be the "controlling terminal" for that port. If you + don't specify this then any input (such as keyboard abort + signals and so forth) will affect your process + + Timeouts are ignored in canonical input mode or when the + NDELAY option is set on the file via open or fcntl */ + + hc_param->fd = open(hc_param->device, O_RDWR | O_NOCTTY | O_NDELAY); + + if (hc_param->fd < 0) { + perror("open"); + printf("ERROR Can't open the device %s (errno %d)\n", + hc_param->device, errno); + return -1; + } + + /* Save */ + tcgetattr(hc_param->fd, &(hc_param->old_tios)); + memset(&tios, 0, sizeof(struct termios)); + + /* C_ISPEED Input baud (new interface) + C_OSPEED Output baud (new interface) + */ + switch (hc_param->baud) { + case 110: + speed = B110; + break; + case 300: + speed = B300; + break; + case 600: + speed = B600; + break; + case 1200: + speed = B1200; + break; + case 2400: + speed = B2400; + break; + case 4800: + speed = B4800; + break; + case 9600: + speed = B9600; + break; + case 19200: + speed = B19200; + break; + case 38400: + speed = B38400; + break; + case 57600: + speed = B57600; + break; + case 115200: + speed = B115200; + break; + default: + speed = B9600; + printf("WARNING Unknown baud rate %d for %s (B9600 used)\n", + hc_param->baud, hc_param->device); + } + + /* Set the baud rate */ + if ((cfsetispeed(&tios, speed) < 0) || + (cfsetospeed(&tios, speed) < 0)) { + perror("cfsetispeed/cfsetospeed\n"); + return -1; + } + + /* C_CFLAG Control options + CLOCAL Local line - do not change "owner" of port + CREAD Enable receiver + */ + tios.c_cflag |= (CREAD | CLOCAL); + /* CSIZE, HUPCL, CRTSCTS (hardware flow control) */ + + /* Set data bits (5, 6, 7, 8 bits) + CSIZE Bit mask for data bits + */ + tios.c_cflag &= ~CSIZE; + switch (hc_param->data_bit) { + case 5: + tios.c_cflag |= CS5; + break; + case 6: + tios.c_cflag |= CS6; + break; + case 7: + tios.c_cflag |= CS7; + break; + case 8: + default: + tios.c_cflag |= CS8; + break; + } + + /* Stop bit (1 or 2) */ + if (hc_param->stop_bit == 1) + tios.c_cflag &=~ CSTOPB; + else /* 2 */ + tios.c_cflag |= CSTOPB; + + /* PARENB Enable parity bit + PARODD Use odd parity instead of even */ + if (strncmp(hc_param->parity, "none", 4) == 0) { + tios.c_cflag &=~ PARENB; + } else if (strncmp(hc_param->parity, "even", 4) == 0) { + tios.c_cflag |= PARENB; + tios.c_cflag &=~ PARODD; + } else { + /* odd */ + tios.c_cflag |= PARENB; + tios.c_cflag |= PARODD; + } + + /* Read the man page of termios if you need more information. */ + + /* This field isn't used on POSIX systems + tios.c_line = 0; + */ + + /* C_LFLAG Line options + + ISIG Enable SIGINTR, SIGSUSP, SIGDSUSP, and SIGQUIT signals + ICANON Enable canonical input (else raw) + XCASE Map uppercase \lowercase (obsolete) + ECHO Enable echoing of input characters + ECHOE Echo erase character as BS-SP-BS + ECHOK Echo NL after kill character + ECHONL Echo NL + NOFLSH Disable flushing of input buffers after + interrupt or quit characters + IEXTEN Enable extended functions + ECHOCTL Echo control characters as ^char and delete as ~? + ECHOPRT Echo erased character as character erased + ECHOKE BS-SP-BS entire line on line kill + FLUSHO Output being flushed + PENDIN Retype pending input at next read or input char + TOSTOP Send SIGTTOU for background output + + Canonical input is line-oriented. Input characters are put + into a buffer which can be edited interactively by the user + until a CR (carriage return) or LF (line feed) character is + received. + + Raw input is unprocessed. Input characters are passed + through exactly as they are received, when they are + received. Generally you'll deselect the ICANON, ECHO, + ECHOE, and ISIG options when using raw input + */ + + /* Raw input */ + tios.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); + + /* C_IFLAG Input options + + Constant Description + INPCK Enable parity check + IGNPAR Ignore parity errors + PARMRK Mark parity errors + ISTRIP Strip parity bits + IXON Enable software flow control (outgoing) + IXOFF Enable software flow control (incoming) + IXANY Allow any character to start flow again + IGNBRK Ignore break condition + BRKINT Send a SIGINT when a break condition is detected + INLCR Map NL to CR + IGNCR Ignore CR + ICRNL Map CR to NL + IUCLC Map uppercase to lowercase + IMAXBEL Echo BEL on input line too long + */ + if (strncmp(hc_param->parity, "none", 4) == 0) { + tios.c_iflag &= ~INPCK; + } else { + tios.c_iflag |= INPCK; + } + + /* Software flow control is disabled */ + tios.c_iflag &= ~(IXON | IXOFF | IXANY); + + /* C_OFLAG Output options + OPOST Postprocess output (not set = raw output) + ONLCR Map NL to CR-NL + + ONCLR ant others needs OPOST to be enabled + */ + + /* Raw ouput */ + tios.c_oflag &=~ OPOST; + + /* C_CC Control characters + VMIN Minimum number of characters to read + VTIME Time to wait for data (tenths of seconds) + + UNIX serial interface drivers provide the ability to + specify character and packet timeouts. Two elements of the + c_cc array are used for timeouts: VMIN and VTIME. Timeouts + are ignored in canonical input mode or when the NDELAY + option is set on the file via open or fcntl. + + VMIN specifies the minimum number of characters to read. If + it is set to 0, then the VTIME value specifies the time to + wait for every character read. Note that this does not mean + that a read call for N bytes will wait for N characters to + come in. Rather, the timeout will apply to the first + character and the read call will return the number of + characters immediately available (up to the number you + request). + + If VMIN is non-zero, VTIME specifies the time to wait for + the first character read. If a character is read within the + time given, any read will block (wait) until all VMIN + characters are read. That is, once the first character is + read, the serial interface driver expects to receive an + entire packet of characters (VMIN bytes total). If no + character is read within the time allowed, then the call to + read returns 0. This method allows you to tell the serial + driver you need exactly N bytes and any read call will + return 0 or N bytes. However, the timeout only applies to + the first character read, so if for some reason the driver + misses one character inside the N byte packet then the read + call could block forever waiting for additional input + characters. + + VTIME specifies the amount of time to wait for incoming + characters in tenths of seconds. If VTIME is set to 0 (the + default), reads will block (wait) indefinitely unless the + NDELAY option is set on the port with open or fcntl. + */ + /* Unused because we use open with the NDELAY option */ + tios.c_cc[VMIN] = 0; + tios.c_cc[VTIME] = 0; + + if (tcsetattr(hc_param->fd, TCSANOW, &tios) < 0) { + perror("tcsetattr\n"); + return -1; + } + + return 0; +} diff --git a/src/hal/user_comps/huanyang-vfd/hy_comm.h b/src/hal/user_comps/huanyang-vfd/hy_comm.h new file mode 100644 index 0000000000..76b78a98d0 --- /dev/null +++ b/src/hal/user_comps/huanyang-vfd/hy_comm.h @@ -0,0 +1,141 @@ +/* hy_comm.h + + By S.Alford + + These library of functions are designed to enable a program send and + receive data from a Huanyang VFD. This device does not use a standard + Modbus function code or data structure. + + This program 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 2 of the License, or + (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + This code has its origins with libmodbus + + */ + + +#ifndef HY_COMM_H +#define HY_COMM_H + +#include +#include +#include + +#define MAX_DATA_LENGTH 246 +#define MAX_QUERY_LENGTH 55 +#define MAX_RESPONSE_LENGTH 1024 +#define MIN_QUERY_SIZE 8 +#define MAX_PACKET_SIZE 8 + +/* Time out between frames in microsecond */ +#define TIME_OUT_BEGIN_OF_FRAME 500000 +#define TIME_OUT_END_OF_FRAME 500000 + +#ifndef FALSE +#define FALSE 0 +#endif + +#ifndef TRUE +#define TRUE 1 +#endif + +/* Local */ +#define COMM_TIME_OUT -0x0C +#define PORT_SOCKET_FAILURE -0x0D +#define SELECT_FAILURE -0x0E +#define TOO_MANY_DATAS -0x0F +#define INVALID_CRC -0x10 +#define INVALID_EXCEPTION_CODE -0x11 + + +// Huanyang Function Codes +#define FUNCTION_READ 0x01 +#define FUNCTION_WRITE 0x02 +#define WRITE_CONTROL_DATA 0x03 +#define READ_CONTROL_STATUS 0x04 +#define WRITE_FREQ_DATA 0x05 +#define LOOP_TEST 0x08 + +/*********************************************************************** + + Note: All functions used for sending or receiving data via + hycomm return these return values. + + + Returns: string_length if OK + 0 if failed + Less than 0 for exception errors + +***********************************************************************/ + +#define COMMS_FAILURE 0 +#define ILLEGAL_FUNCTION -1 +#define ILLEGAL_PARAMETER -2 +#define ILLEGAL_DATA_VALUE -3 +#define SLAVE_DEVICE_FAILURE -4 +#define ACKNOWLEDGE -5 +#define SLAVE_DEVICE_BUSY -6 +#define NEGATIVE_ACKNOWLEDGE -7 +#define MEMORY_PARITY_ERROR -8 + +#define PORT_FAILURE -11 + +typedef struct _hycomm_param_t { + char device[PATH_MAX]; /* Device: "/dev/ttyS0" */ + int print_errors; /* whether or not to print errors. 0=no print, 1=print */ + int baud; /* Bauds: 19200 */ + char parity[5]; /* Parity: "even", "odd", "none" */ + int data_bit; /* Data bit */ + int stop_bit; /* Stop bit */ + struct termios old_tios; /* Save old termios settings */ + int fd; /* Descriptor (tty or socket) */ + int debug; /* Flag debug */ +} hycomm_param_t; + + +/* Initializes the hycomm_param_t structure for RTU. + - device: "/dev/ttyS0" + - baud: 9600, 19200, 57600, 115200, etc + - parity: "even", "odd" or "none" + - data_bits: 5, 6, 7, 8 + - stop_bits: 1, 2 +*/ + +typedef struct _hycomm_data_t { + unsigned char slave; /* slave address */ + unsigned char function; /* function code */ + unsigned char parameter; /* PDxxx paramter */ + int data; /* Data to send */ + unsigned char ret_length; /* length of data returned from slave */ + unsigned char ret_parameter; /* parameter returned from slave */ + int ret_data; /* Data returned from slave */ +} hycomm_data_t; + + +void hycomm_init(hycomm_param_t *hc_param, const char *device, + int baud, const char *parity, int data_bit, + int stop_bit); + +void hycomm_close(hycomm_param_t *hc_param); + +void hycomm_init_rtu(hycomm_param_t *hc_param, const char *device, + int baud, const char *parity, int data_bit, + int stop_bit); + +int hycomm_connect(hycomm_param_t *hc_param); + +int hy_comm(hycomm_param_t *hc_param, hycomm_data_t *hc_data); + + +#endif /* HY_COMM_H */ diff --git a/src/hal/user_comps/huanyang-vfd/hy_vfd.c b/src/hal/user_comps/huanyang-vfd/hy_vfd.c new file mode 100644 index 0000000000..66c68a9485 --- /dev/null +++ b/src/hal/user_comps/huanyang-vfd/hy_vfd.c @@ -0,0 +1,988 @@ + +// +// Copyright (C) 2009 scotta at CNCZone.com, alan_3301 at CNCZone.com +// 2014 Benjamin Brockhaus +// 2015 Sebastian Kuzminsky +// +// This program 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 2 of the License, or +// (at your option) any later version. +// +// This program 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 this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +// + + +#ifndef ULAPI +#error This is intended as a userspace component only. +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "rtapi.h" +#include "hal.h" +#include "hy_comm.h" + + +#define HYCOMM_MIN_OK 10 + + +// bits in Status Data +#define STATUS_SetF 0x00 +#define STATUS_OutF 0x01 +#define STATUS_OutA 0x02 +#define STATUS_RoTT 0x03 +#define STATUS_DCV 0x04 +#define STATUS_ACV 0x05 +#define STATUS_Cont 0x06 +#define STATUS_Tmp 0x07 + +// control commands CNTR +#define CONTROL_Run_Fwd 0x01 +#define CONTROL_Run_Rev 0x11 +#define CONTROL_Stop 0x08 + +// control responses CNST +#define CONTROL_Run 0x01 +#define CONTROL_Jog 0x02 +#define CONTROL_Command_rf 0x04 +#define CONTROL_Running 0x08 +#define CONTROL_Jogging 0x10 +#define CONTROL_Running_rf 0x20 +#define CONTROL_Bracking 0x40 +#define CONTROL_Track_Start 0x80 + + + +int hycomm_ok; // set hycomm-ok bit if last HYCOMM_OK transactions went well +int debug; +int slave = 1; + +/* HAL data struct */ +typedef struct { + // The HAL comp name will be set to , and all pin and parameter + // names will begin with . + + hal_bit_t *enable; // bit to enable this component + + hal_float_t *Set_F; // frequency command + hal_float_t *Out_F; // actual output frequency + hal_float_t *Out_A; // actual output amps + hal_float_t *RoTT; // actual motor rmp (based on VFD parameters) + hal_float_t *DCV; // DC Volts (to be confirmed) + hal_float_t *ACV; // AC Volts (to be confirmed) + hal_float_t *Cont; + hal_float_t *Tmp; // Temperature (to be confirmed) + + hal_bit_t *spindle_forward; // spindle forward input + hal_bit_t *spindle_reverse; // spindle reverse input + hal_bit_t *spindle_on; // spinlde on input + hal_float_t *CNTR; // stores the status of the control request + hal_float_t *CNST; // stores the response of the control request + + hal_bit_t *CNST_Run; // CNST Run bit + hal_bit_t *CNST_Jog; // CNST Jog bit + hal_bit_t *CNST_Command_rf; // CNST Run reverse / forward bit + hal_bit_t *CNST_Running; // CNST Running bit + hal_bit_t *CNST_Jogging; // CNST Jogging bit + hal_bit_t *CNST_Running_rf; // CNST Jog reverse / forward bit + hal_bit_t *CNST_Bracking; // CNST bracking bit + hal_bit_t *CNST_Track_Start; // CNST track start bit + + hal_float_t *speed_command; // spindle speed command from EMC + hal_float_t *freq_cmd; // calculated frequency command + + hal_float_t *max_freq; // PD005 Max Operating Frequency + hal_float_t *freq_lower_limit; // PD011 Frequency Lower Limit + hal_float_t *rated_motor_voltage; // PD141 Rated Motor Voltage - as per motor name plate + hal_float_t *rated_motor_current; // PD142 Rated Motor Current - as per motor name plate + hal_float_t *rated_motor_rev; // max motor speed (at max_freq). PD144 gets set to value corresponding to RPM at 50Hz + + hal_bit_t *hycomm_ok; // the last HYCOMM_OK transactions returned successfully + + hal_float_t *max_rpm; // calculated based on VFD max frequency setup parameter + + hal_float_t *spindle_speed_fb; // (out) reports current spindle speed + hal_bit_t *spindle_at_speed; // (out) True when spindle is on and at commanded speed + hal_float_t *spindle_at_speed_tolerance; // (in) + + hal_float_t retval; + hal_s32_t errorcount; + hal_float_t looptime; + //hal_float_t motor_nameplate_hz; // speeds are scaled in Hz, not RPM + //hal_float_t motor_nameplate_RPM; // nameplate RPM at default Hz + //hal_float_t rpm_limit; // do-not-exceed output frequency + //hal_bit_t *acc_dec_pattern; // if set: choose ramp times as defined in F500+F501 + // if zero (default): choose ramp times as defined in ACC and DEC + //hal_float_t upper_limit_hz; // VFD setup parameter - maximum output frequency in HZ + + //hal_bit_t old_run; // so we can detect changes in the run state + //hal_bit_t old_dir; + //hal_bit_t old_err_reset; + //hal_u32_t old_cmd1_reg; // copy of last write to FA00 + //hal_u32_t failed_reg; // remember register for failed hycomm transaction - aids debugging +} haldata_t; + +static int done; +static void quit_signal_handler(int sig) { + done = 1; +} + +char *modname = "hy_vfd"; + +static struct option long_options[] = { + {"bits", 1, 0, 'b'}, + {"device", 1, 0, 'd'}, + {"debug", 0, 0, 'g'}, + {"help", 0, 0, 'h'}, + {"name", 1, 0, 'n'}, + {"parity", 1, 0, 'p'}, + {"rate", 1, 0, 'r'}, + {"stopbits", 1, 0, 's'}, + {"target", 1, 0, 't'}, + {"max-frequency", 1, 0, 'F'}, + {"min-frequency", 1, 0, 'f'}, + {"motor-voltage", 1, 0, 'V'}, + {"motor-current", 1, 0, 'I'}, + {"motor-speed", 1, 0, 'S'}, + {0,0,0,0} +}; + +static char *option_string = "b:d:ghn:p:r:s:t:F:f:V:I:S:"; + +static char *bitstrings[] = {"5", "6", "7", "8", NULL}; +static char *paritystrings[] = {"even", "odd", "none", NULL}; +static char *ratestrings[] = {"110", "300", "600", "1200", "2400", "4800", "9600", + "19200", "38400", "57600", "115200", NULL}; +static char *stopstrings[] = {"1", "2", NULL}; + +int match_string(char *string, char **matches) { + int len, which, match; + which=0; + match=-1; + if ((matches==NULL) || (string==NULL)) return -1; + len = strlen(string); + while (matches[which] != NULL) { + if ((!strncmp(string, matches[which], len)) && (len <= strlen(matches[which]))) { + if (match>=0) return -1; // multiple matches + match=which; + } + ++which; + } + return match; +} + +void usage(int argc, char **argv) { + printf("Usage: %s [options]\n", argv[0]); + printf( + "This is a userspace HAL program, typically loaded using the halcmd \"loadusr\" command:\n" + " loadusr hy_vfd\n" + "There are several command-line options. Options that have a set list of possible values may\n" + " be set by using any number of characters that are unique. For example, --rate 5 will use\n" + " a baud rate of 57600, since no other available baud rates start with \"5\"\n" + "-b or --bits (default 8)\n" + " Set number of data bits to , where n must be from 5 to 8 inclusive\n" + "-d or --device (default /dev/ttyS0)\n" + " Set the name of the serial device node to use\n" + "-g or --debug\n" + " Turn on debugging messages. Debug mode will cause all hycomm messages\n" + " to be printed in hex on the terminal.\n" + "-n or --name (default hy_vfd)\n" + " Set the name of the HAL module. The HAL comp name will be set to , and all pin\n" + " and parameter names will begin with .\n" + "-p or --parity {even,odd,none} (default even)\n" + " Set serial parity to even, odd, or none.\n" + "-r or --rate (default 19200)\n" + " Set baud rate to . It is an error if the rate is not one of the following:\n" + " 110, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200\n" + "-s or --stopbits {1,2} (default 1)\n" + " Set serial stop bits to 1 or 2\n" + "-t or --target (default 1)\n" + " Set HYCOMM target (slave) number. This must match the device number you set on the Huanyang VFD.\n" + "-F or --max-frequency \n" + " Set VFD max frequency to Hz. This will be read from the VFD\n" + " register 5 if not supplied on the command line.\n" + "-f or --min-frequency \n" + " Set VFD min frequency to Hz. This will be read from the VFD\n" + " register 11 if not supplied on the command line.\n" + "-V or --motor-voltage \n" + " Set VFD max output voltage to (Volts). This will be read from the\n" + " VFD register 141 if not supplied on the command line.\n" + "-I or --motor-current \n" + " Set VFD max output current to (Amps). This will be read from the\n" + " VFD register 142 if not supplied on the command line.\n" + "-S or --motor-speed \n" + " Set the motor's max speed to (RPM). This will be computed from the\n" + " 50 Hz RPM value read from the VFD register P144 if not supplied on the\n" + " command line.\n" + ); +} + +int write_data(hycomm_param_t *hc_param, hycomm_data_t *hc_data, haldata_t *haldata) +{ + int retval; + int CNTR, old_CNTR; + int CNST; + hal_float_t hz_per_rpm; + int freq_comp; + int freq, old_freq; + + // calculate and set frequency register, limit the frequency (upper and lower to VFD set parameters + hc_data->function = WRITE_FREQ_DATA; + hc_data->parameter = 0x00; + + if ((*(haldata->spindle_forward) && !*(haldata->spindle_reverse)) && *(haldata->spindle_on)) { + freq_comp = 1; + } else if ((*(haldata->spindle_reverse) && !*(haldata->spindle_forward)) && *(haldata->spindle_on)) { + freq_comp = -1; + } else { + freq_comp = 0; + } + + hz_per_rpm = *haldata->max_freq / *(haldata->rated_motor_rev); + freq = abs((int)((*(haldata->speed_command)+freq_comp)*hz_per_rpm*100)); + + // limit the frequency to the max and min as setup in the VFD + if (freq > *(haldata->max_freq)*100) + freq = *(haldata->max_freq)*100; + if (freq < *(haldata->freq_lower_limit)*100) + freq = *(haldata->freq_lower_limit)*100; + + old_freq = *(haldata->freq_cmd); + + if (freq != old_freq) { + // commanded frequency has changed + hc_data->data = freq; + if ((retval = hy_comm(hc_param, hc_data)) != 0) + goto failed; + *(haldata->freq_cmd) = freq; + } + + + + // update the control register + hc_data->function = WRITE_CONTROL_DATA; + hc_data->parameter = 0x00; + + if ((*(haldata->spindle_forward) && !*(haldata->spindle_reverse)) && *(haldata->spindle_on)) { + CNTR = CONTROL_Run_Fwd; + } else if ((*(haldata->spindle_reverse) && !*(haldata->spindle_forward)) && (*haldata->spindle_on)) { + CNTR = CONTROL_Run_Rev; + } else { + CNTR = CONTROL_Stop; + } + + old_CNTR = *(haldata->CNTR); + hc_data->data = old_CNTR; + if ((retval = hy_comm(hc_param, hc_data)) != 0) + goto failed; + if (CNTR != old_CNTR) { + // CNTR register needs to be updated + hc_data->data = CNTR; + *(haldata->CNTR) = CNTR; + } + + + CNST = hc_data->ret_data; + *(haldata->CNST) = CNST; + + if ((CNST & CONTROL_Run) != 0) { + *(haldata->CNST_Run) = TRUE; + } else { + *(haldata->CNST_Run) = FALSE; + } + + if ((CNST & CONTROL_Jog) != 0) { + *(haldata->CNST_Jog) = TRUE; + } else { + *(haldata->CNST_Jog) = FALSE; + } + + if ((CNST & CONTROL_Command_rf) != 0) { + *(haldata->CNST_Command_rf) = TRUE; + } else { + *(haldata->CNST_Command_rf) = FALSE; + } + + if ((CNST & CONTROL_Running) != 0) { + *(haldata->CNST_Running) = TRUE; + } else { + *(haldata->CNST_Running) = FALSE; + } + + if ((CNST & CONTROL_Jogging) != 0) { + *(haldata->CNST_Jogging) = TRUE; + } else { + *(haldata->CNST_Jogging) = FALSE; + } + + if ((CNST & CONTROL_Running_rf) != 0) { + *(haldata->CNST_Running_rf) = TRUE; + } else { + *(haldata->CNST_Running_rf) = FALSE; + } + + + if ((CNST & CONTROL_Bracking) != 0) { + *(haldata->CNST_Bracking) = TRUE; + } else { + *(haldata->CNST_Bracking) = FALSE; + } + + if ((CNST & CONTROL_Track_Start) != 0) { + *(haldata->CNST_Track_Start) = TRUE; + } else { + *(haldata->CNST_Track_Start) = FALSE; + } + + retval = 0; + haldata->retval = retval; + return retval; + + failed: + if (hc_param->debug) { + printf("write_data: FAILED\n"); + } + haldata->retval = retval; + haldata->errorcount++; + retval = -1; + return retval; +} + +int read_setup(hycomm_param_t *hc_param, hycomm_data_t *hc_data, haldata_t *haldata) +{ + int retval; + float rpm_at_50hz; + + /* can't do anything with a null HAL data block */ + if (haldata == NULL) + return -1; + /* but we can signal an error if the other params are null */ + if (hc_param==NULL) { + haldata->errorcount++; + return -1; + } + + + if (hc_param->debug) { + printf("read_setup: reading setup parameters:\n"); + } + + hc_data->function = FUNCTION_READ; + hc_data->data = 0x0000; + + hc_data->parameter = 5; // PD005 Max Operating Frequency + if (*haldata->max_freq != 0) { + // user passed in motor max freq, send to VFD + hc_data->function = FUNCTION_WRITE; + hc_data->data = (uint16_t)(*haldata->max_freq * 100); + if ((retval = hy_comm(hc_param, hc_data)) != 0) { + goto failed; + } + hc_data->function = FUNCTION_READ; + } + if ((retval = hy_comm(hc_param, hc_data)) != 0) + goto failed; + *(haldata->max_freq) = hc_data->ret_data * 0.01; + + hc_data->parameter = 11; // PD011 Frequency Lower Limit + if (*haldata->freq_lower_limit != 0) { + // user passed in motor min freq, send to VFD + hc_data->function = FUNCTION_WRITE; + hc_data->data = (uint16_t)(*haldata->freq_lower_limit * 100); + if ((retval = hy_comm(hc_param, hc_data)) != 0) { + goto failed; + } + hc_data->function = FUNCTION_READ; + } + if ((retval = hy_comm(hc_param, hc_data)) != 0) + goto failed; + *(haldata->freq_lower_limit) = hc_data->ret_data * 0.01; + + hc_data->parameter = 141; // PD141 Rated Motor Voltage + if (*haldata->rated_motor_voltage != 0) { + // user passed in motor max voltage, send to VFD + hc_data->function = FUNCTION_WRITE; + hc_data->data = (uint16_t)(*haldata->rated_motor_voltage * 10); + if ((retval = hy_comm(hc_param, hc_data)) != 0) { + goto failed; + } + hc_data->function = FUNCTION_READ; + } + if ((retval = hy_comm(hc_param, hc_data)) != 0) + goto failed; + *(haldata->rated_motor_voltage) = hc_data->ret_data * 0.1; + + hc_data->parameter = 142; // PD142 Rated Motor Current + if (*haldata->rated_motor_current != 0) { + // user passed in motor max current, send to VFD + hc_data->function = FUNCTION_WRITE; + hc_data->data = (uint16_t)(*haldata->rated_motor_current * 10); + if ((retval = hy_comm(hc_param, hc_data)) != 0) { + goto failed; + } + hc_data->function = FUNCTION_READ; + } + if ((retval = hy_comm(hc_param, hc_data)) != 0) + goto failed; + *(haldata->rated_motor_current) = hc_data->ret_data * 0.1; + + hc_data->parameter = 144; // PD144 Rated Motor Rev (at 50 Hz) + if (*haldata->rated_motor_rev != 0) { + // user passed in motor max speed + // we know motor max freq + // write the VFD's P144 with "motor speed at 50 Hz" + rpm_at_50hz = (*haldata->rated_motor_rev / *haldata->max_freq) * 50.0; + hc_data->function = FUNCTION_WRITE; + hc_data->data = (uint16_t)rpm_at_50hz; + if ((retval = hy_comm(hc_param, hc_data)) != 0) { + goto failed; + } + hc_data->function = FUNCTION_READ; + } + + if ((retval = hy_comm(hc_param, hc_data)) != 0) + goto failed; + rpm_at_50hz = hc_data->ret_data; + *(haldata->rated_motor_rev) = (rpm_at_50hz / 50.0) * *haldata->max_freq; + + if (hc_param->debug) { + printf("read_setup: read setup parameters - OK.\n"); + } + + fflush(NULL); + + retval = 0; + haldata->retval = retval; + return retval; + + failed: + if (hc_param->debug) { + printf("read_setup: FAILED\n"); + } + haldata->retval = retval; + haldata->errorcount++; + retval = -1; + return retval; +} + + +int read_data(hycomm_param_t *hc_param, hycomm_data_t *hc_data, haldata_t *haldata) +{ + int retval; + + // Read the Status Data registers + + hc_data->function = READ_CONTROL_STATUS; + hc_data->parameter = 0x00; + + hc_data->data = STATUS_SetF; + if ((retval = hy_comm(hc_param, hc_data)) != 0) + goto failed; + *(haldata->Set_F) = hc_data->ret_data * 0.01; + if (hc_param->debug) { + printf("Set_F = [%.2X]", hc_data->ret_data); + printf("\n"); + } + + hc_data->data = STATUS_OutF; + if ((retval = hy_comm(hc_param, hc_data)) != 0) + goto failed; + *(haldata->Out_F) = hc_data->ret_data * 0.01; + if (hc_param->debug) { + printf("Out_F = [%.2X]", hc_data->ret_data); + printf("\n"); + } + + if ( + *haldata->spindle_on + && (fabs(*haldata->speed_command) > 0.0) + && (*haldata->Set_F > 0.0) + ) { + *haldata->spindle_speed_fb = (*haldata->Out_F / *haldata->max_freq) * *haldata->rated_motor_rev; + if (fabs(1 - (*haldata->spindle_speed_fb / fabs(*haldata->speed_command))) < *haldata->spindle_at_speed_tolerance) { + *haldata->spindle_at_speed = 1; + } else { + *haldata->spindle_at_speed = 0; + } + } else { + *haldata->spindle_speed_fb = 0.0; + *haldata->spindle_at_speed = 0; + } + + hc_data->data = STATUS_OutA; + if ((retval = hy_comm(hc_param, hc_data)) != 0) + goto failed; + *(haldata->Out_A) = hc_data->ret_data * 0.1; + if (hc_param->debug) { + printf("Out_A = [%.2X]", hc_data->ret_data); + printf("\n"); + } + + hc_data->data = STATUS_RoTT; + if ((retval = hy_comm(hc_param, hc_data)) != 0) + goto failed; + *(haldata->RoTT) = hc_data->ret_data; + if (hc_param->debug) { + printf("RoTT = [%.2X]", hc_data->ret_data); + printf("\n"); + } + + hc_data->data = STATUS_DCV; + if ((retval = hy_comm(hc_param, hc_data)) != 0) + goto failed; + *(haldata->DCV) = hc_data->ret_data; + if (hc_param->debug) { + printf("DCV = [%.2X]", hc_data->ret_data); + printf("\n"); + } + + hc_data->data = STATUS_ACV; + if ((retval = hy_comm(hc_param, hc_data)) != 0) + goto failed; + *(haldata->ACV) = hc_data->ret_data; + if (hc_param->debug) { + printf("ACV = [%.2X]", hc_data->ret_data); + printf("\n"); + } + + hc_data->data = STATUS_Cont; + if ((retval = hy_comm(hc_param, hc_data)) != 0) + goto failed; + *(haldata->Cont) = hc_data->ret_data; + if (hc_param->debug) { + printf("Cont = [%.2X]", hc_data->ret_data); + printf("\n"); + } + + hc_data->data = STATUS_Tmp; + if ((retval = hy_comm(hc_param, hc_data)) != 0) + goto failed; + *(haldata->Tmp) = hc_data->ret_data; + if (hc_param->debug) { + printf("Tmp = [%.2X]", hc_data->ret_data); + printf("\n"); + } + + + retval = 0; + haldata->retval = retval; + return retval; + + failed: + if (hc_param->debug) { + printf("read_data: FAILED\n"); + } + haldata->retval = retval; + haldata->errorcount++; + retval = -1; + return retval; +} + + +int main(int argc, char **argv) +{ + int retval; + hycomm_param_t hc_param; + hycomm_data_t hc_data; + haldata_t *haldata; + int hal_comp_id; + struct timespec loop_timespec, remaining; + int baud, bits, stopbits; + char *device, *parity, *endarg; + int opt; + int argindex, argvalue; + + float max_freq = 0; + float min_freq = 0; + float motor_v = 0; + float motor_i = 0; + float motor_speed = 0; + + done = 0; + + // assume that nothing is specified on the command line + baud = 19200; + bits = 8; + stopbits = 1; + debug = FALSE; + device = "/dev/ttyS0"; + parity = "even"; + slave = 1; + + + // process command line options + while ((opt=getopt_long(argc, argv, option_string, long_options, NULL)) != -1) { + switch(opt) { + case 'b': // serial data bits, probably should be 8 (and defaults to 8) + argindex=match_string(optarg, bitstrings); + if (argindex<0) { + printf("hy_vfd: ERROR: invalid number of bits: %s\n", optarg); + retval = -1; + goto out_noclose; + } + bits = atoi(bitstrings[argindex]); + break; + case 'd': // device name, default /dev/ttyS0 + // could check the device name here, but we'll leave it to the library open + if (strlen(optarg) > FILENAME_MAX) { + printf("hy_vfd: ERROR: device node name is too long: %s\n", optarg); + retval = -1; + goto out_noclose; + } + device = strdup(optarg); + break; + case 'g': + debug = 1; + break; + case 'n': // module base name + if (strlen(optarg) > HAL_NAME_LEN-20) { + printf("hy_vfd: ERROR: HAL module name too long: %s\n", optarg); + retval = -1; + goto out_noclose; + } + modname = strdup(optarg); + break; + case 'p': // parity, should be a string like "even", "odd", or "none" + argindex=match_string(optarg, paritystrings); + if (argindex<0) { + printf("hy_vfd: ERROR: invalid parity: %s\n", optarg); + retval = -1; + goto out_noclose; + } + parity = paritystrings[argindex]; + break; + case 'r': // Baud rate, 19200 default + argindex=match_string(optarg, ratestrings); + if (argindex<0) { + printf("hy_vfd: ERROR: invalid baud rate: %s\n", optarg); + retval = -1; + goto out_noclose; + } + baud = atoi(ratestrings[argindex]); + break; + case 's': // stop bits, defaults to 1 + argindex=match_string(optarg, stopstrings); + if (argindex<0) { + printf("hy_vfd: ERROR: invalid number of stop bits: %s\n", optarg); + retval = -1; + goto out_noclose; + } + stopbits = atoi(stopstrings[argindex]); + break; + case 't': // target number (HYCOMM ID), default 1 + argvalue = strtol(optarg, &endarg, 10); + if ((*endarg != '\0') || (argvalue < 1) || (argvalue > 254)) { + printf("hy_vfd: ERROR: invalid slave number: %s\n", optarg); + retval = -1; + goto out_noclose; + } + slave = argvalue; + break; + + case 'F': + max_freq = strtof(optarg, &endarg); + if ((*endarg != '\0') || (max_freq < 0.0) || (max_freq > UINT16_MAX)) { + printf("hy_vfd: ERROR: invalid max frequency: %s\n", optarg); + retval = -1; + goto out_noclose; + } + break; + + case 'f': + min_freq = strtof(optarg, &endarg); + if ((*endarg != '\0') || (min_freq < 0.0) || (min_freq > UINT16_MAX)) { + printf("hy_vfd: ERROR: invalid min frequency: %s\n", optarg); + retval = -1; + goto out_noclose; + } + break; + + case 'V': + motor_v = strtof(optarg, &endarg); + if ((*endarg != '\0') || (motor_v < 0.0) || (motor_v > UINT16_MAX)) { + printf("hy_vfd: ERROR: invalid motor max voltage: %s\n", optarg); + retval = -1; + goto out_noclose; + } + break; + + case 'I': + motor_i = strtof(optarg, &endarg); + if ((*endarg != '\0') || (motor_i < 0.0) || (motor_i > UINT16_MAX)) { + printf("hy_vfd: ERROR: invalid motor max current: %s\n", optarg); + retval = -1; + goto out_noclose; + } + break; + + case 'S': + motor_speed = strtof(optarg, &endarg); + if ((*endarg != '\0') || (motor_speed < 0.0) || (motor_speed > UINT16_MAX)) { + printf("hy_vfd: ERROR: invalid motor max speed: %s\n", optarg); + retval = -1; + goto out_noclose; + } + break; + + case 'h': + default: + usage(argc, argv); + exit(0); + break; + } + } + + if (debug) { + printf("%s: device='%s', baud=%d, bits=%d, parity='%s', stopbits=%d, address=%d, debug=%d, PID=%d\n", + modname,device, baud, bits, parity, stopbits, slave, debug, getpid()); + } + + /* SIGTERM and SIGINT trigger a clean shutdown */ + signal(SIGINT, quit_signal_handler); + signal(SIGTERM, quit_signal_handler); + + /* Assume 19.2k E-8-1 serial settings, device 1 */ + hycomm_init(&hc_param, device, baud, parity, bits, stopbits); + hc_param.debug = debug; + hc_param.print_errors = 1; + + /* the open has got to work, or we're out of business */ + if (((retval = hycomm_connect(&hc_param))!=0) || done) { + printf("%s: ERROR: couldn't open serial device\n", modname); + goto out_noclose; + } + + + /* create HAL component */ + hal_comp_id = hal_init(modname); + if ((hal_comp_id < 0) || done) { + printf("%s: ERROR: hal_init failed\n", modname); + retval = hal_comp_id; + goto out_close; + } + + /* grab some shmem to store the HAL data in */ + haldata = (haldata_t *)hal_malloc(sizeof(haldata_t)); + + if ((haldata == 0) || done) { + printf("%s: ERROR: unable to allocate shared memory\n", modname); + retval = -1; + goto out_close; + } + + retval = hal_pin_bit_newf(HAL_IN, &(haldata->enable), hal_comp_id, "%s.enable", modname); + if (retval!=0) goto out_closeHAL; + + retval = hal_pin_float_newf(HAL_OUT, &(haldata->Set_F), hal_comp_id, "%s.SetF", modname); + if (retval!=0) goto out_closeHAL; + retval = hal_pin_float_newf(HAL_OUT, &(haldata->Out_F), hal_comp_id, "%s.OutF", modname); + if (retval!=0) goto out_closeHAL; + retval = hal_pin_float_newf(HAL_OUT, &(haldata->Out_A), hal_comp_id, "%s.OutA", modname); + if (retval!=0) goto out_closeHAL; + retval = hal_pin_float_newf(HAL_OUT, &(haldata->RoTT), hal_comp_id, "%s.Rott", modname); + if (retval!=0) goto out_closeHAL; + retval = hal_pin_float_newf(HAL_OUT, &(haldata->DCV), hal_comp_id, "%s.DCV", modname); + if (retval!=0) goto out_closeHAL; + retval = hal_pin_float_newf(HAL_OUT, &(haldata->ACV), hal_comp_id, "%s.ACV", modname); + if (retval!=0) goto out_closeHAL; + retval = hal_pin_float_newf(HAL_OUT, &(haldata->Cont), hal_comp_id, "%s.Cont", modname); + if (retval!=0) goto out_closeHAL; + retval = hal_pin_float_newf(HAL_OUT, &(haldata->Tmp), hal_comp_id, "%s.Tmp", modname); + if (retval!=0) goto out_closeHAL; + + retval = hal_pin_bit_newf(HAL_IN, &(haldata->spindle_forward), hal_comp_id, "%s.spindle-forward", modname); + if (retval!=0) goto out_closeHAL; + retval = hal_pin_bit_newf(HAL_IN, &(haldata->spindle_reverse), hal_comp_id, "%s.spindle-reverse", modname); + if (retval!=0) goto out_closeHAL; + retval = hal_pin_bit_newf(HAL_IN, &(haldata->spindle_on), hal_comp_id, "%s.spindle-on", modname); + if (retval!=0) goto out_closeHAL; + retval = hal_pin_float_newf(HAL_OUT, &(haldata->CNTR), hal_comp_id, "%s.CNTR", modname); + if (retval!=0) goto out_closeHAL; + retval = hal_pin_float_newf(HAL_OUT, &(haldata->CNST), hal_comp_id, "%s.CNST", modname); + if (retval!=0) goto out_closeHAL; + + retval = hal_pin_bit_newf(HAL_OUT, &(haldata->CNST_Run), hal_comp_id, "%s.CNST-run", modname); + if (retval!=0) goto out_closeHAL; + retval = hal_pin_bit_newf(HAL_OUT, &(haldata->CNST_Jog), hal_comp_id, "%s.CNST-jog", modname); + if (retval!=0) goto out_closeHAL; + retval = hal_pin_bit_newf(HAL_OUT, &(haldata->CNST_Command_rf), hal_comp_id, "%s.CNST-command-rf", modname); + if (retval!=0) goto out_closeHAL; + retval = hal_pin_bit_newf(HAL_OUT, &(haldata->CNST_Running), hal_comp_id, "%s.CNST-running", modname); + if (retval!=0) goto out_closeHAL; + retval = hal_pin_bit_newf(HAL_OUT, &(haldata->CNST_Jogging), hal_comp_id, "%s.CNST-jogging", modname); + if (retval!=0) goto out_closeHAL; + retval = hal_pin_bit_newf(HAL_OUT, &(haldata->CNST_Running_rf), hal_comp_id, "%s.CNST-running-rf", modname); + if (retval!=0) goto out_closeHAL; + retval = hal_pin_bit_newf(HAL_OUT, &(haldata->CNST_Bracking), hal_comp_id, "%s.CNST-bracking", modname); + if (retval!=0) goto out_closeHAL; + retval = hal_pin_bit_newf(HAL_OUT, &(haldata->CNST_Track_Start), hal_comp_id, "%s.CNST-track-start", modname); + if (retval!=0) goto out_closeHAL; + + retval = hal_pin_float_newf(HAL_IN, &(haldata->speed_command), hal_comp_id, "%s.speed-command", modname); + if (retval!=0) goto out_closeHAL; + retval = hal_pin_float_newf(HAL_OUT, &(haldata->freq_cmd), hal_comp_id, "%s.frequency-command", modname); + if (retval!=0) goto out_closeHAL; + + retval = hal_pin_float_newf(HAL_OUT, &(haldata->max_freq), hal_comp_id, "%s.max-freq", modname); + if (retval!=0) goto out_closeHAL; + retval = hal_pin_float_newf(HAL_OUT, &(haldata->freq_lower_limit), hal_comp_id, "%s.freq-lower-limit", modname); + if (retval!=0) goto out_closeHAL; + retval = hal_pin_float_newf(HAL_OUT, &(haldata->rated_motor_voltage), hal_comp_id, "%s.rated-motor-voltage", modname); + if (retval!=0) goto out_closeHAL; + retval = hal_pin_float_newf(HAL_OUT, &(haldata->rated_motor_current), hal_comp_id, "%s.rated-motor-current", modname); + if (retval!=0) goto out_closeHAL; + retval = hal_pin_float_newf(HAL_OUT, &(haldata->rated_motor_rev), hal_comp_id, "%s.rated-motor-rev", modname); + if (retval!=0) goto out_closeHAL; + + retval = hal_pin_bit_newf(HAL_OUT, &(haldata->hycomm_ok), hal_comp_id, "%s.hycomm-ok", modname); + if (retval!=0) goto out_closeHAL; + + retval = hal_param_s32_newf(HAL_RW, &(haldata->errorcount), hal_comp_id, "%s.error-count", modname); + if (retval!=0) goto out_closeHAL; + + retval = hal_param_float_newf(HAL_RW, &(haldata->retval), hal_comp_id, "%s.retval", modname); + if (retval!=0) goto out_closeHAL; + + retval = hal_pin_float_newf(HAL_OUT, &(haldata->spindle_speed_fb), hal_comp_id, "%s.spindle-speed-fb", modname); + if (retval!=0) goto out_closeHAL; + + retval = hal_pin_bit_newf(HAL_OUT, &(haldata->spindle_at_speed), hal_comp_id, "%s.spindle-at-speed", modname); + if (retval!=0) goto out_closeHAL; + + retval = hal_pin_float_newf(HAL_IN, &(haldata->spindle_at_speed_tolerance), hal_comp_id, "%s.spindle-at-speed-tolerance", modname); + if (retval!=0) goto out_closeHAL; + + /* make default data match what we expect to use */ + + *(haldata->enable) = 0; + + *(haldata->Set_F) = 0; + *(haldata->Out_F) = 0; + *(haldata->Out_A) = 0; + *(haldata->RoTT) = 0; + *(haldata->DCV) = 0; + *(haldata->ACV) = 0; + *(haldata->Cont) = 0; + *(haldata->Tmp) = 0; + + *(haldata->spindle_forward) = 0; + *(haldata->spindle_reverse) = 0; + *(haldata->spindle_on) = 0; + *(haldata->freq_cmd) = 0; + *(haldata->CNTR) = 0; + *(haldata->CNST) = 0; + + *(haldata->max_freq) = max_freq; + *(haldata->freq_lower_limit) = min_freq; + *(haldata->rated_motor_voltage) = motor_v; + *(haldata->rated_motor_current) = motor_i; + *(haldata->rated_motor_rev) = motor_speed; + + *(haldata->hycomm_ok) = 0; + + *haldata->spindle_speed_fb = 0.0; + *haldata->spindle_at_speed = 0; + *haldata->spindle_at_speed_tolerance = 0.02; + + hc_data.slave = slave; + haldata->errorcount = 0; + haldata->looptime = 0.1; + + + //haldata->motor_nameplate_hz = 50; // folks in The Colonies typically would use 60Hz and 1730 rpm + //haldata->motor_nameplate_RPM = 1410; + //haldata->rpm_limit = MAX_RPM; + //haldata->acc_dec_pattern = 0; + + //haldata->old_run = -1; // make sure the initial value gets output + //haldata->old_dir = -1; + //haldata->old_err_reset = -1; + //haldata->failed_reg = 0; + + hal_ready(hal_comp_id); + hc_data.slave = slave; + + // wait until EMC and AXIS is ready, ie enable bit is set + while (!*(haldata->enable)){ + // do nothing until enabled + usleep(10*1000); + if (done) { + // killed by signal + exit(0); + } + } + + // read the VFD setup parameters + do { + retval = read_setup(&hc_param, &hc_data, haldata); + if (retval != 0) { + fprintf(stderr, "error reading setup from VFD, retrying\n"); + usleep(100 * 1000); + } + if (done) { + // killed by signal + exit(0); + } + } while (retval != 0); + + // here's the meat of the program. loop until done (which may be never) + while (done==0) { + + if (*(haldata->enable)) { + // Read inputs + if (read_data(&hc_param, &hc_data, haldata) < 0) { + hycomm_ok = 0; + } else { + hycomm_ok++; + } + + // Set outputs + if (write_data(&hc_param, &hc_data, haldata) < 0) { + hycomm_ok = 0; + } else { + hycomm_ok++; + } + } + + + + if (hycomm_ok > HYCOMM_MIN_OK) { + *(haldata->hycomm_ok) = 1; + } else { + *(haldata->hycomm_ok) = 0; + } + + + // don't want to scan too fast, and shouldn't delay more than a few seconds + if (haldata->looptime < 0.001) haldata->looptime = 0.001; + if (haldata->looptime > 1.0) haldata->looptime = 1.0; + loop_timespec.tv_sec = (time_t)(haldata->looptime); + loop_timespec.tv_nsec = (long)((haldata->looptime - loop_timespec.tv_sec) * 1000000000l); + nanosleep(&loop_timespec, &remaining); + + } + + retval = 0; /* if we get here, then everything is fine, so just clean up and exit */ + + out_closeHAL: + hal_exit(hal_comp_id); + out_close: + hycomm_close(&hc_param); + out_noclose: + return retval; +} From db9646b1dfb7fe2032a7aa7d8370797e088bc501 Mon Sep 17 00:00:00 2001 From: ArcEye Date: Wed, 21 Jun 2017 12:20:57 +0100 Subject: [PATCH 061/516] Update upload_packagecloud.sh Add warning if skipped Just a vehicle to test a full build and deploy, now space cleared on Packagecloud --- .travis/upload_packagecloud.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis/upload_packagecloud.sh b/.travis/upload_packagecloud.sh index 02c32a2695..d8da79efaf 100755 --- a/.travis/upload_packagecloud.sh +++ b/.travis/upload_packagecloud.sh @@ -32,5 +32,7 @@ if [ "${TRAVIS_TEST_RESULT}" -eq 0 ] && [ "${TRAVIS_PULL_REQUEST}" = "false" ] \ if [ "${MARCH}" = "64" ]; then package_cloud push ${repo} ${TRAVIS_BUILD_DIR}/deploy/*dsc fi +else + echo "Package upload skipped" fi From f916a1195ffe186d46184194773a7be654dda3d8 Mon Sep 17 00:00:00 2001 From: ArcEye Date: Thu, 22 Jun 2017 17:23:02 +0100 Subject: [PATCH 062/516] Add hardware revision a22042 to comparisons Is a hardware revision correct for Pi 2 Model B v1.2 but is not recognised and returns rev 5, with fatal error resulting. Fixes Issue #1223 --- src/hal/drivers/cpuinfo.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/hal/drivers/cpuinfo.c b/src/hal/drivers/cpuinfo.c index 3ca586d8fa..b33cdc381a 100644 --- a/src/hal/drivers/cpuinfo.c +++ b/src/hal/drivers/cpuinfo.c @@ -70,7 +70,8 @@ int get_rpi_revision(void) (strcmp(revision, "1000006") == 0 )) return 2; else if ((strcmp(revision, "a01041") == 0) || - (strcmp(revision, "a21041") == 0 )) + (strcmp(revision, "a21041") == 0) || + (strcmp(revision, "a22042") == 0)) return 3; else if ((strcmp(revision, "a22082") == 0) || (strcmp(revision, "a02082") == 0)) From 94275da4759aef316943a72dfd9c01e96b1fb6c5 Mon Sep 17 00:00:00 2001 From: Mick Date: Sat, 24 Jun 2017 11:25:53 +0100 Subject: [PATCH 063/516] Add sim config for haunyang_VFD modbus/RS485 spindle drive Donated by Otto Meister <42qwertzu@gmail.com> Signed-off-by: Mick --- configs/sim/axis/hy_vfd/README | 6 + configs/sim/axis/hy_vfd/axis_mm.ini | 238 ++++++++++++++++++ configs/sim/axis/hy_vfd/core_sim.hal | 54 ++++ configs/sim/axis/hy_vfd/hy_vfd-postgui.hal | 29 +++ configs/sim/axis/hy_vfd/hy_vfd.glade | 54 ++++ configs/sim/axis/hy_vfd/hy_vfd.hal | 17 ++ configs/sim/axis/hy_vfd/simulated_home.hal | 32 +++ .../huanyang-vfd/config-files/README | 5 + 8 files changed, 435 insertions(+) create mode 100644 configs/sim/axis/hy_vfd/README create mode 100644 configs/sim/axis/hy_vfd/axis_mm.ini create mode 100644 configs/sim/axis/hy_vfd/core_sim.hal create mode 100644 configs/sim/axis/hy_vfd/hy_vfd-postgui.hal create mode 100644 configs/sim/axis/hy_vfd/hy_vfd.glade create mode 100644 configs/sim/axis/hy_vfd/hy_vfd.hal create mode 100644 configs/sim/axis/hy_vfd/simulated_home.hal create mode 100644 src/hal/user_comps/huanyang-vfd/config-files/README diff --git a/configs/sim/axis/hy_vfd/README b/configs/sim/axis/hy_vfd/README new file mode 100644 index 0000000000..408202c02e --- /dev/null +++ b/configs/sim/axis/hy_vfd/README @@ -0,0 +1,6 @@ +An Axis based sim for use of Haunyang VFD + +Donated by Otto Meister <42qwertzu@gmail.com> + +This sim will NOT work if you do not have the hardware, because the driver +requires to be able to make contact on serial port with the VFD. \ No newline at end of file diff --git a/configs/sim/axis/hy_vfd/axis_mm.ini b/configs/sim/axis/hy_vfd/axis_mm.ini new file mode 100644 index 0000000000..b219bee1a5 --- /dev/null +++ b/configs/sim/axis/hy_vfd/axis_mm.ini @@ -0,0 +1,238 @@ +# EMC controller parameters for a simulated machine. + +# General note: Comments can either be preceded with a # or ; - either is +# acceptable, although # is in keeping with most linux config files. + +# General section ------------------------------------------------------------- +[EMC] + +# Version of this INI file +VERSION = $Revision$ + +# Name of machine, for use with display, etc. +MACHINE = Machinekit-HAL-SIM-AXIS + +# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others +# DEBUG = 0x7FFFFFFF +DEBUG = 0 + +# Sections for display options ------------------------------------------------ +[DISPLAY] + +# Name of display program, e.g., xemc +DISPLAY = axis + +# Cycle time, in seconds, that display will sleep between polls +CYCLE_TIME = 0.100 + +# Path to help file +HELP_FILE = doc/help.txt + +# Initial display setting for position, RELATIVE or MACHINE +POSITION_OFFSET = RELATIVE + +# Initial display setting for position, COMMANDED or ACTUAL +POSITION_FEEDBACK = ACTUAL + +# Highest value that will be allowed for feed override, 1.0 = 100% +MAX_FEED_OVERRIDE = 1.2 +MAX_SPINDLE_OVERRIDE = 1.0 +# Prefix to be used +PROGRAM_PREFIX = /home/machinekit/linuxcnc/nc_files + +# Introductory graphic +INTRO_GRAPHIC = machinekit.gif +INTRO_TIME = 5 + +EDITOR = gedit + +INCREMENTS = 1 mm, .01 in, .1mm, 1 mil, .1 mil, 1/8000 in +########################################################## +########################################################## +########################################################## +########################################################## +EMBED_TAB_NAME = Huanyang VFD +EMBED_TAB_LOCATION = ntb_preview +EMBED_TAB_COMMAND = halcmd loadusr -Wn gladevcp gladevcp -c gladevcp -x {XID} hy_vfd.glade +########################################################## +########################################################## +########################################################## +########################################################## +[FIL + +[FILTER] +PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image +PROGRAM_EXTENSION = .py Python Script + +png = image-to-gcode +gif = image-to-gcode +jpg = image-to-gcode +py = python + +# Task controller section ----------------------------------------------------- +[TASK] + +# Name of task controller program, e.g., milltask +TASK = milltask + +# Cycle time, in seconds, that task controller will sleep between polls +CYCLE_TIME = 0.001 + +# Part program interpreter section -------------------------------------------- +[RS274NGC] + +# File containing interpreter variables +PARAMETER_FILE = sim_mm.var + +# Motion control section ------------------------------------------------------ +[EMCMOT] + +EMCMOT = motmod + +# Timeout for comm to emcmot, in seconds +COMM_TIMEOUT = 1.0 + +# Interval between tries to emcmot, in seconds +COMM_WAIT = 0.010 + +# BASE_PERIOD is unused in this configuration but specified in core_sim.hal +BASE_PERIOD = 0 +# Servo task period, in nano-seconds +SERVO_PERIOD = 1000000 + +# Hardware Abstraction Layer section -------------------------------------------------- +[HAL] + +# The run script first uses halcmd to execute any HALFILE +# files, and then to execute any individual HALCMD commands. +# + +# list of hal config files to run through halcmd +# files are executed in the order in which they appear +HALFILE = core_sim.hal +##########HALFILE = sim_spindle_encoder.hal +###########HALFILE = axis_manualtoolchange.hal +HALFILE = simulated_home.hal + +########################################################## +########################################################## +########################################################## +########################################################## +HALFILE = hy_vfd.hal +POSTGUI_HALFILE = hy_vfd-postgui.hal +########################################################## +########################################################## +########################################################## +########################################################## + +# list of halcmd commands to execute +# commands are executed in the order in which they appear +#HALCMD = save neta + +# Single file that is executed after the GUI has started. Only supported by +# AXIS at this time (only AXIS creates a HAL component of its own) +#POSTGUI_HALFILE = test_postgui.hal + +HALUI = halui + +# Trajectory planner section -------------------------------------------------- +[TRAJ] + +AXES = 3 +COORDINATES = X Y Z +HOME = 0 0 0 +LINEAR_UNITS = mm +ANGULAR_UNITS = degree +CYCLE_TIME = 0.010 +DEFAULT_VELOCITY = 30.48 +MAX_VELOCITY = 53.34 +DEFAULT_ACCELERATION = 508 +MAX_ACCELERATION = 508 +POSITION_FILE = position_mm.txt +ARC_BLEND_ENABLE = 1 +ARC_BLEND_FALLBACK_ENABLE = 1 +ARC_BLEND_OPTIMIZATION_DEPTH = 50 +#Use this setting for no smoothing (for debugging and stress-testing) +ARC_BLEND_SMOOTHING_THRESHOLD = .75 +#Use this setting for "normal" smoothing, i.e. if we blend over more than 40% of a segment +#ARC_BLEND_SMOOTHING_THRESHOLD = 0.40 + +# Axes sections --------------------------------------------------------------- + +# First axis +[AXIS_0] + +TYPE = LINEAR +HOME = 0.000 +MAX_VELOCITY = 30.48 +MAX_ACCELERATION = 508 +BACKLASH = 0.000 +INPUT_SCALE = 157.48 +OUTPUT_SCALE = 1.000 +MIN_LIMIT = -2540 +MAX_LIMIT = 2540 +FERROR = 1.27 +MIN_FERROR = .254 +HOME_OFFSET = 0.0 +HOME_SEARCH_VEL = 127 +HOME_LATCH_VEL = 25.4 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = NO +HOME_SEQUENCE = 1 +HOME_IS_SHARED = 1 + +# Second axis +[AXIS_1] + +TYPE = LINEAR +HOME = 0.000 +MAX_VELOCITY = 30.48 +MAX_ACCELERATION = 508 +BACKLASH = 0.000 +INPUT_SCALE = 157.48 +OUTPUT_SCALE = 1.000 +MIN_LIMIT = -2540 +MAX_LIMIT = 2540 +FERROR = 1.27 +MIN_FERROR = .254 +HOME_OFFSET = 0.0 +HOME_SEARCH_VEL = 127 +HOME_LATCH_VEL = 25.4 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = NO +HOME_SEQUENCE = 1 + +# Third axis +[AXIS_2] + +TYPE = LINEAR +HOME = 0.0 +MAX_VELOCITY = 30.48 +MAX_ACCELERATION = 508 +BACKLASH = 0.000 +INPUT_SCALE = 157.48 +OUTPUT_SCALE = 1.000 +MIN_LIMIT = -500.8 +MAX_LIMIT = 1010.6 +FERROR = 1.27 +MIN_FERROR = .254 +HOME_OFFSET = 25.4 +HOME_SEARCH_VEL = 127 +HOME_LATCH_VEL = 25.4 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = NO +HOME_SEQUENCE = 0 +HOME_IS_SHARED = 1 + +# section for main IO controller parameters ----------------------------------- +[EMCIO] + +# Name of IO controller program, e.g., io +EMCIO = io + +# cycle time, in seconds +CYCLE_TIME = 0.100 + +# tool table file +TOOL_TABLE = sim_mm.tbl +TOOL_CHANGE_POSITION = 0 0 50.8 diff --git a/configs/sim/axis/hy_vfd/core_sim.hal b/configs/sim/axis/hy_vfd/core_sim.hal new file mode 100644 index 0000000000..00aa735965 --- /dev/null +++ b/configs/sim/axis/hy_vfd/core_sim.hal @@ -0,0 +1,54 @@ +# core HAL config file for simulation + +# first load all the RT modules that will be needed +# kinematics +loadrt trivkins +# trajectory planner +loadrt tp +# motion controller, get name and thread periods from ini file +loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES kins=trivkins tp=tp +# load 6 differentiators (for velocity and accel signals +loadrt ddt names=ddt_x,ddt_xv,ddt_y,ddt_yv,ddt_z,ddt_zv +# load additional blocks +loadrt hypot names=vel_xy,vel_xyz + +# add motion controller functions to servo thread +addf motion-command-handler servo-thread +addf motion-controller servo-thread +# link the differentiator functions into the code +addf ddt_x servo-thread +addf ddt_xv servo-thread +addf ddt_y servo-thread +addf ddt_yv servo-thread +addf ddt_z servo-thread +addf ddt_zv servo-thread +addf vel_xy servo-thread +addf vel_xyz servo-thread + +# create HAL signals for position commands from motion module +# loop position commands back to motion module feedback +net Xpos axis.0.motor-pos-cmd => axis.0.motor-pos-fb ddt_x.in +net Ypos axis.1.motor-pos-cmd => axis.1.motor-pos-fb ddt_y.in +net Zpos axis.2.motor-pos-cmd => axis.2.motor-pos-fb ddt_z.in + +# send the position commands thru differentiators to +# generate velocity and accel signals +net Xvel ddt_x.out => ddt_xv.in vel_xy.in0 +net Xacc <= ddt_xv.out +net Yvel ddt_y.out => ddt_yv.in vel_xy.in1 +net Yacc <= ddt_yv.out +net Zvel ddt_z.out => ddt_zv.in vel_xyz.in0 +net Zacc <= ddt_zv.out + +# Cartesian 2- and 3-axis velocities +net XYvel vel_xy.out => vel_xyz.in1 +net XYZvel <= vel_xyz.out + +# estop loopback +net estop-loop iocontrol.0.user-enable-out iocontrol.0.emc-enable-in + +# create signals for tool loading loopback +net tool-prep-loop iocontrol.0.tool-prepare iocontrol.0.tool-prepared +net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed + + diff --git a/configs/sim/axis/hy_vfd/hy_vfd-postgui.hal b/configs/sim/axis/hy_vfd/hy_vfd-postgui.hal new file mode 100644 index 0000000000..b9e24ef0ed --- /dev/null +++ b/configs/sim/axis/hy_vfd/hy_vfd-postgui.hal @@ -0,0 +1,29 @@ +# Include your customized HAL commands here +# The commands in this file are run after the AXIS GUI (including PyVCP panel) starts + +# HAL connections for Panel Display (space holders) +net hy-SetF <= spindle-vfd.SetF +net hy-Rott <= spindle-vfd.Rott +net hy-OutF <= spindle-vfd.OutF +net hy-OutA <= spindle-vfd.OutA +net hy-Rott => gladevcp.hal_meter1 +net hy-OutA => gladevcp.hal_meter2 + +#SPINDLE ON SPEED +loadrt near +addf near.0 servo-thread +net hy-SetF => near.0.in1 +net hy-OutF => near.0.in2 +net hy-tmp <= near.0.out +setp near.0.scale 1.01 +loadrt and2 +addf and2.0 servo-thread +net hy-tmp => and2.0.in0 +net hy-spindle-on => and2.0.in1 +net spindle-at-speed <= and2.0.out + +#warte auf Spindel +net spindle-at-speed => motion.spindle-at-speed + +# now enable the VFD after EMC is up and running +setp spindle-vfd.enable 1 diff --git a/configs/sim/axis/hy_vfd/hy_vfd.glade b/configs/sim/axis/hy_vfd/hy_vfd.glade new file mode 100644 index 0000000000..fb1f2a0b70 --- /dev/null +++ b/configs/sim/axis/hy_vfd/hy_vfd.glade @@ -0,0 +1,54 @@ + + + + + + + False + + + 300 + True + False + 2 + 10 + + + True + False + #ffffffffffff + RPM + 2000 + 24000 + 1000 + 24000 + #0000ffff0000 + 24000 + #ffffffff0000 + #ffff00000000 + + + + + True + False + #ffffffffffff + AMP + 2 + 15 + 1 + 8 + #0000ffff0000 + 10 + #ffffffff0000 + #ffff00000000 + + + 1 + 2 + + + + + + diff --git a/configs/sim/axis/hy_vfd/hy_vfd.hal b/configs/sim/axis/hy_vfd/hy_vfd.hal new file mode 100644 index 0000000000..e31b061763 --- /dev/null +++ b/configs/sim/axis/hy_vfd/hy_vfd.hal @@ -0,0 +1,17 @@ +# spindle speed +net spindle-speed motion.spindle-speed-out + +# Load the Huanyang VFD user component +loadusr -Wn spindle-vfd hy_vfd -n spindle-vfd -d /dev/ttyUSB0 -p none -r 9600 + +# connect the spindle direction pins to the VFD +net hy-spindle-fwd <= motion.spindle-forward => spindle-vfd.spindle-forward +net hy-spindle-rev <= motion.spindle-reverse => spindle-vfd.spindle-reverse + +# connect the spindle on pin to the VFD +net hy-spindle-on <= motion.spindle-on => spindle-vfd.spindle-on + +# connect the spindle RPM to the VFD +net spindle-speed => spindle-vfd.speed-command + + diff --git a/configs/sim/axis/hy_vfd/simulated_home.hal b/configs/sim/axis/hy_vfd/simulated_home.hal new file mode 100644 index 0000000000..143859e635 --- /dev/null +++ b/configs/sim/axis/hy_vfd/simulated_home.hal @@ -0,0 +1,32 @@ +loadrt or2 names=or2_0 +loadrt comp names=comp_x,comp_y,comp_z + +net Xhomeswpos => comp_x.in0 +net Yhomeswpos => comp_y.in0 +net Zhomeswpos => comp_z.in0 + +sets Xhomeswpos 1 +sets Yhomeswpos .5 +sets Zhomeswpos 2 + +net Xpos => comp_x.in1 +net Ypos => comp_y.in1 +net Zpos => comp_z.in1 + +setp comp_x.hyst .02 +setp comp_y.hyst .02 +setp comp_z.hyst .02 + +net Xhomesw <= comp_x.out +net Yhomesw <= comp_y.out => axis.1.home-sw-in +net Zhomesw <= comp_z.out + +net Xhomesw => or2_0.in0 +net Zhomesw => or2_0.in1 +net XZhomesw or2_0.out => axis.0.home-sw-in axis.2.home-sw-in + +addf comp_x servo-thread +addf comp_y servo-thread +addf comp_z servo-thread + +addf or2_0 servo-thread diff --git a/src/hal/user_comps/huanyang-vfd/config-files/README b/src/hal/user_comps/huanyang-vfd/config-files/README new file mode 100644 index 0000000000..0435c49952 --- /dev/null +++ b/src/hal/user_comps/huanyang-vfd/config-files/README @@ -0,0 +1,5 @@ +User Otto Meister <42qwertzu@gmail.com> reports that these config fragments from Linuxcnc +do not really assist much and has donated a sim config +showing the use of the hy_vfd driver with Machinekit + +Located under Sample Configurations/sim/Axis/hy_vfd From 065a04753ee49b83f7ba1067411f0f77a556258e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Mon, 26 Jun 2017 15:28:35 +0200 Subject: [PATCH 064/516] lib/fdm: use new STEPGEN_MIN_VEL to fix PRU pin hunting problems --- lib/python/fdm/config/base.py | 49 ++++++----------------------------- 1 file changed, 8 insertions(+), 41 deletions(-) diff --git a/lib/python/fdm/config/base.py b/lib/python/fdm/config/base.py index a8a36f6aab..dc7e988613 100644 --- a/lib/python/fdm/config/base.py +++ b/lib/python/fdm/config/base.py @@ -57,22 +57,7 @@ def usrcomp_watchdog(comps, enableSignal, thread, def setup_stepper(stepgenIndex, section, axisIndex=None, stepgenType='hpg.stepgen', gantry=False, gantryJoint=0, velocitySignal=None, thread=None): - prufix = not velocitySignal - if prufix: - pid = 'pid.pru-stepgen-%i' % stepgenIndex - pidComp = rt.newinst('pid', pid) - hal.addf('%s.do-pid-calcs' % pidComp.name, thread) - pidComp.pin('Pgain').set(c.find(section, 'P')) - pidComp.pin('Igain').set(c.find(section, 'I')) - pidComp.pin('Dgain').set(c.find(section, 'D')) - pidComp.pin('bias').set(c.find(section, 'BIAS')) - pidComp.pin('FF0').set(c.find(section, 'FF0')) - pidComp.pin('FF1').set(c.find(section, 'FF1')) - pidComp.pin('FF2').set(c.find(section, 'FF2')) - pidComp.pin('deadband').set(c.find(section, 'DEADBAND')) - pidComp.pin('maxoutput').set(c.find(section, 'MAX_OUTPUT')) - pidComp.pin('maxerror').set(c.find(section, 'MAX_ERROR')) - pidComp.pin('error-previous-target').set(True) + prufix = bool(c.find(section, 'STEPGEN_MIN_VEL')) stepgen = '%s.%02i' % (stepgenType, stepgenIndex) if axisIndex is not None: @@ -88,8 +73,6 @@ def setup_stepper(stepgenIndex, section, axisIndex=None, if hasMotionAxis: enable.link('%s.amp-enable-out' % axis) enable.link('%s.enable' % stepgen) - if prufix: - enable.link('%s.enable' % pid) # expose timing parameters so we can multiplex them later sigBase = 'stepgen-%i' % stepgenIndex @@ -101,6 +84,8 @@ def setup_stepper(stepgenIndex, section, axisIndex=None, maxVel = hal.newsig('%s-max-vel' % sigBase, hal.HAL_FLOAT) maxAcc = hal.newsig('%s-max-acc' % sigBase, hal.HAL_FLOAT) controlType = hal.newsig('%s-control-type' % sigBase, hal.HAL_BIT) + if prufix: + minVel = hal.newsig('%s-min-vel' % sigBase, hal.HAL_FLOAT) hal.Pin('%s.dirsetup' % stepgen).link(dirsetup) hal.Pin('%s.dirhold' % stepgen).link(dirhold) @@ -119,6 +104,9 @@ def setup_stepper(stepgenIndex, section, axisIndex=None, hal.Pin('%s.maxaccel' % stepgen).link(maxAcc) maxVel.set(c.find(section, 'STEPGEN_MAX_VEL')) maxAcc.set(c.find(section, 'STEPGEN_MAX_ACC')) + if prufix: + hal.Pin('%s.minvel' % stepgen).link(minVel) + minVel.set(c.find(section, 'STEPGEN_MIN_VEL')) hal.Pin('%s.control-type' % stepgen).link(controlType) @@ -128,23 +116,13 @@ def setup_stepper(stepgenIndex, section, axisIndex=None, posCmd = hal.newsig('emcmot-%i-pos-cmd' % axisIndex, hal.HAL_FLOAT) posCmd.link('%s.motor-pos-cmd' % axis) if not gantry: - if prufix: - posCmd.link('%s.command' % pid) - else: - posCmd.link('%s.position-cmd' % stepgen) + posCmd.link('%s.position-cmd' % stepgen) else: posCmd.link('gantry.%i.position-cmd' % axisIndex) - if prufix: - velCmd = hal.newsig('emcmot-%i-vel-cmd' % axisIndex, hal.HAL_FLOAT) - velCmd.link('%s.joint-vel-cmd' % axis) - velCmd.link('%s.command-deriv' % pid) - posFb = hal.newsig('emcmot-%i-pos-fb' % axisIndex, hal.HAL_FLOAT) posFb.link('%s.motor-pos-fb' % axis) if not gantry: - if prufix: - posFb.link('%s.feedback' % pid) posFb.link('%s.position-fb' % stepgen) else: posFb.link('gantry.%i.position-fb' % axisIndex) @@ -152,26 +130,15 @@ def setup_stepper(stepgenIndex, section, axisIndex=None, if gantry: # per joint fb and cmd posCmd = hal.newsig('emcmot-%i-%i-pos-cmd' % (axisIndex, gantryJoint), hal.HAL_FLOAT) posCmd.link('gantry.%i.joint.%02i.pos-cmd' % (axisIndex, gantryJoint)) - if prufix: - posCmd.link('%s.command' % pid) - else: - posCmd.link('%s.position-cmd' % stepgen) + posCmd.link('%s.position-cmd' % stepgen) posFb = hal.newsig('emcmot-%i-%i-pos-fb' % (axisIndex, gantryJoint), hal.HAL_FLOAT) - if prufix: - posFb.link('%s.feedback' % pid) posFb.link('%s.position-fb' % stepgen) posFb.link('gantry.%i.joint.%02i.pos-fb' % (axisIndex, gantryJoint)) else: # velocity control hal.net(velocitySignal, '%s.velocity-cmd' % stepgen) controlType.set(1) # enable velocity control - if prufix: - command = hal.newsig('stepgen-%i-command' % stepgenIndex, hal.HAL_FLOAT) - command.link('%s.output' % pid) - command.link('%s.velocity-cmd' % stepgen) - controlType.set(1) # enable velocity control - # limits if hasMotionAxis: limitHome = hal.newsig('limit-%i-home' % axisIndex, hal.HAL_BIT) From 1676512abce3ee55de4e96f32b51e4d0d68cc658 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Mon, 26 Jun 2017 15:32:14 +0200 Subject: [PATCH 065/516] configs/ARM: update fdm configs to reflect changes --- .../fabrikator-mini.ini | 43 ++--------------- .../BeagleBone/MendelMax-CRAMPS/CRAMPS.ini | 46 ++----------------- 2 files changed, 8 insertions(+), 81 deletions(-) diff --git a/configs/ARM/BeagleBone/Fabrikator-Mini-CRAMPS/fabrikator-mini.ini b/configs/ARM/BeagleBone/Fabrikator-Mini-CRAMPS/fabrikator-mini.ini index c127e88228..6ef9980e1a 100644 --- a/configs/ARM/BeagleBone/Fabrikator-Mini-CRAMPS/fabrikator-mini.ini +++ b/configs/ARM/BeagleBone/Fabrikator-Mini-CRAMPS/fabrikator-mini.ini @@ -189,6 +189,7 @@ MAX_VELOCITY = 200.0 MAX_ACCELERATION = 3000.0 # Set Stepgen max 20% higher than the axis STEPGEN_MAX_VEL = 240.0 +STEPGEN_MIN_VEL = 0.001 STEPGEN_MAX_ACC = 3600.0 BACKLASH = 0.000 @@ -222,19 +223,6 @@ DIRHOLD = 200 STEPLEN = 1000 STEPSPACE = 1000 -# PID tuning params for -# workaround for PRU dir pin problems -DEADBAND = 0 -P = 90 -I = 0 -D = 0 -FF0 = 0 -FF1 = 1 -FF2 = 0.00005 -BIAS = 0 -MAX_OUTPUT = 0 -MAX_ERROR = 0.0005 - INCREMENTS = 1 10 @@ -245,6 +233,7 @@ MAX_VELOCITY = 200.0 MAX_ACCELERATION = 3000.0 # Set Stepgen max 20% higher than the axis STEPGEN_MAX_VEL = 240.0 +STEPGEN_MIN_VEL = 0.001 STEPGEN_MAX_ACC = 3600.0 BACKLASH = 0.000 @@ -276,19 +265,6 @@ DIRHOLD = 200 STEPLEN = 1000 STEPSPACE = 1000 -# PID tuning params for -# workaround for PRU dir pin problems -DEADBAND = 0 -P = 90 -I = 0 -D = 0 -FF0 = 0 -FF1 = 1 -FF2 = 0.00005 -BIAS = 0 -MAX_OUTPUT = 0 -MAX_ERROR = 0.0005 - INCREMENTS = 1 10 @@ -299,6 +275,7 @@ MAX_VELOCITY = 4.0 MAX_ACCELERATION = 30.0 # Set Stepgen max 20% higher than the axis STEPGEN_MAX_VEL = 4.8 +STEPGEN_MIN_VEL = 0.001 STEPGEN_MAX_ACC = 36.0 BACKLASH = 0.000 @@ -329,19 +306,6 @@ DIRHOLD = 200 STEPLEN = 1000 STEPSPACE = 1000 -# PID tuning params for -# workaround for PRU dir pin problems -DEADBAND = 0 -P = 90 -I = 0 -D = 0 -FF0 = 0 -FF1 = 1 -FF2 = 0.00005 -BIAS = 0 -MAX_OUTPUT = 0 -MAX_ERROR = 0.0005 - INCREMENTS = 0.01 0.1 1 [FDM] @@ -378,6 +342,7 @@ MAX_VELOCITY = 32.0 MAX_ACCELERATION = 3000.0 # Set Stepgen max 20% higher than the axis STEPGEN_MAX_VEL = 37.0 +STEPGEN_MIN_VEL = 0.001 STEPGEN_MAX_ACC = 3600.0 #SCALE = -486.15 -- Artifex diff --git a/configs/ARM/BeagleBone/MendelMax-CRAMPS/CRAMPS.ini b/configs/ARM/BeagleBone/MendelMax-CRAMPS/CRAMPS.ini index 3d64e732ad..93a19ad088 100644 --- a/configs/ARM/BeagleBone/MendelMax-CRAMPS/CRAMPS.ini +++ b/configs/ARM/BeagleBone/MendelMax-CRAMPS/CRAMPS.ini @@ -189,6 +189,7 @@ MAX_VELOCITY = 200.0 MAX_ACCELERATION = 3000.0 # Set Stepgen max 20% higher than the axis STEPGEN_MAX_VEL = 240.0 +STEPGEN_MIN_VEL = 0.001 STEPGEN_MAX_ACC = 3600.0 BACKLASH = 0.000 @@ -222,19 +223,6 @@ DIRHOLD = 200 STEPLEN = 1000 STEPSPACE = 1000 -# PID tuning params for -# workaround for PRU dir pin problems -DEADBAND = 0 -P = 90 -I = 0 -D = 0 -FF0 = 0 -FF1 = 1 -FF2 = 0.00005 -BIAS = 0 -MAX_OUTPUT = 0 -MAX_ERROR = 0.0005 - # Jog increments INCREMENTS = 1 10 @@ -246,6 +234,7 @@ MAX_VELOCITY = 200.0 MAX_ACCELERATION = 3000.0 # Set Stepgen max 20% higher than the axis STEPGEN_MAX_VEL = 240.0 +STEPGEN_MIN_VEL = 0.001 STEPGEN_MAX_ACC = 3600.0 BACKLASH = 0.000 @@ -277,20 +266,6 @@ DIRHOLD = 200 STEPLEN = 1000 STEPSPACE = 1000 -# PID tuning params for -# workaround for PRU dir pin problems -DEADBAND = 0 -P = 90 -I = 0 -D = 0 -FF0 = 0 -FF1 = 1 -FF2 = 0.00005 -BIAS = 0 -MAX_OUTPUT = 0 -MAX_ERROR = 0.0005 - - # Jog increments INCREMENTS = 1 10 @@ -302,6 +277,7 @@ MAX_VELOCITY = 4.0 MAX_ACCELERATION = 30.0 # Set Stepgen max 20% higher than the axis STEPGEN_MAX_VEL = 4.8 +STEPGEN_MIN_VEL = 0.001 STEPGEN_MAX_ACC = 36.0 BACKLASH = 0.000 @@ -333,21 +309,6 @@ DIRHOLD = 200 STEPLEN = 1000 STEPSPACE = 1000 - -# PID tuning params for -# workaround for PRU dir pin problems -DEADBAND = 0 -P = 90 -I = 0 -D = 0 -FF0 = 0 -FF1 = 1 -FF2 = 0.00005 -BIAS = 0 -MAX_OUTPUT = 0 -MAX_ERROR = 0.0005 - - # Jog increments INCREMENTS = 0.01 0.1 1 @@ -384,6 +345,7 @@ MAX_VELOCITY = 32.0 MAX_ACCELERATION = 3000.0 # Set Stepgen max 20% higher than the axis STEPGEN_MAX_VEL = 37.0 +STEPGEN_MIN_VEL = 0.001 STEPGEN_MAX_ACC = 3600.0 #SCALE = -486.15 -- Artifex From a1ff33091652f3b70143b2510c6d35929de80782 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Fri, 30 Jun 2017 13:56:33 +0200 Subject: [PATCH 066/516] Squashed 'src/machinetalk/proto/' changes from 211433bfb..f4481f561 f4481f561 Merge pull request #81 from machinekoder/machinekit-updates 17178e54f add jplan and ros proto definitions 6a2762863 fix gitignore 98f68e22b rtapi_message: fix whitespace cfc23327e specify proto2 syntax 50d5b91a7 merging updates from upstream Machinekit 30cb027e3 Merge pull request #80 from machinekit/ArcEye-patch-1 394d3d897 Amend asciidoc.mustache a328a2478 Merge pull request #79 from machinekoder/js-bundle-update 60f39299a Merge pull request #78 from machinekoder/python-build-fix 95f6c564e update js bundles 2179c974f reorder Makefile commands correctly 5531e8cf1 Merge pull request #77 from machinekoder/java-support 6c428b26f adding Java build add0bf491 Merge pull request #75 from machinekoder/doc-build-fix 4b58961c0 fix docs build 8cb5b75ce Merge pull request #74 from machinekoder/pypi2 dc0d32268 PyPI: update dependencies 6211ed296 Merge pull request #73 from machinekoder/pypi 9b16d1f9e preparing for PyPi git-subtree-dir: src/machinetalk/proto git-subtree-split: f4481f561ac76a6976afad03f13c7b8e0f7af318 --- .gitignore | 8 +- MANIFEST.in | 4 + Makefile | 93 +- README.md | 11 +- dist/README.md | 9 +- dist/machinetalk-protobuf.js | 8675 ++---------------- dist/machinetalk-protobuf.min.js | 46 +- dist/machinetalk-protobuf.min.js.gz | Bin 70104 -> 59564 bytes dist/machinetalk-protobuf.min.map.json | 2 +- python/.gitignore | 1 - scripts/asciidoc.mustache | 4 + setup.cfg | 2 + python/setup.py => setup.py | 40 +- src/README.msgid | 35 +- src/machinetalk/protobuf/canon.proto | 1 + src/machinetalk/protobuf/config.proto | 1 + src/machinetalk/protobuf/emcclass.proto | 1 + src/machinetalk/protobuf/firmware.proto | 1 + src/machinetalk/protobuf/jplan.proto | 23 + src/machinetalk/protobuf/log.proto | 1 + src/machinetalk/protobuf/message.proto | 1 + src/machinetalk/protobuf/motcmds.proto | 1 + src/machinetalk/protobuf/object.proto | 32 +- src/machinetalk/protobuf/preview.proto | 1 + src/machinetalk/protobuf/ros.proto | 46 + src/machinetalk/protobuf/rtapi_message.proto | 3 +- src/machinetalk/protobuf/rtapicommand.proto | 1 + src/machinetalk/protobuf/status.proto | 2 + src/machinetalk/protobuf/task.proto | 1 + src/machinetalk/protobuf/test.proto | 1 + src/machinetalk/protobuf/types.proto | 94 +- src/machinetalk/protobuf/value.proto | 1 + 32 files changed, 1109 insertions(+), 8033 deletions(-) create mode 100644 MANIFEST.in delete mode 100644 python/.gitignore create mode 100644 setup.cfg rename python/setup.py => setup.py (76%) create mode 100644 src/machinetalk/protobuf/jplan.proto create mode 100644 src/machinetalk/protobuf/ros.proto diff --git a/.gitignore b/.gitignore index e5f15587ed..f84de85cbf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ build -node_modules -objects -generated +/node_modules +/objects +/generated +/machinetalk +/doc_base diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000000..e857bde122 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,4 @@ +include LICENSE +include README.md +recursive-include src/machinetalk/protobuf *.proto +recursive-include python/example * diff --git a/Makefile b/Makefile index 620323bc76..782701c492 100644 --- a/Makefile +++ b/Makefile @@ -40,14 +40,17 @@ CXXGEN := $(BUILDDIR)/cpp # generated Python files PYGEN := $(BUILDDIR)/python +# generated Java files +JAVAGEN := $(BUILDDIR)/java + # generated Documentation files # default to asciidoc template # for mk-docs formatting, pass in TEMPLATE pointing to the mk-docs template -TEMPLATE := $(SRCDIRINV)/scripts/asciidoc.mustache DOCFORMAT := asciidoc DOCEXT := asciidoc #DOCFORMAT := markdown #DOCEXT := md +DOCTEMPLATE := $(SRCDIRINV)/scripts/$(DOCFORMAT).mustache DOCGEN := $(BUILDDIR)/doc @@ -73,7 +76,7 @@ vpath %.proto $(PROTODIR):$(GPBINCLUDE):$(DESCDIR)/compiler # $(PROJECT)/proto/*.proto derived Python bindings PROTO_PY_TARGETS := ${PROTO_SPECS:$(SRCDIR)/%.proto=$(PYGEN)/%_pb2.py} -PROTO_PY_EXTRAS := $(PYGEN)/setup.py $(PYGEN)/$(PROJECT)/__init__.py $(PYGEN)/$(PROJECT)/protobuf/__init__.py +PROTO_PY_EXTRAS := $(PYGEN)/$(PROJECT)/__init__.py $(PYGEN)/$(PROJECT)/protobuf/__init__.py # generated C++ includes PROTO_CXX_INCS := ${PROTO_SPECS:$(SRCDIR)/%.proto=$(CXXGEN)/%.pb.h} @@ -81,6 +84,10 @@ PROTO_CXX_INCS := ${PROTO_SPECS:$(SRCDIR)/%.proto=$(CXXGEN)/%.pb.h} # generated C++ sources PROTO_CXX_SRCS := ${PROTO_SPECS:$(SRCDIR)/%.proto=$(CXXGEN)/%.pb.cc} +# generated Java sources +uppercase_file = $(shell echo "$(1)" | sed 's/\(.*\/\)\(.*\)/\1\u\2/') +PROTO_JAVA_TARGETS := $(foreach JAVA,${PROTO_SPECS:$(SRCDIR)/%.proto=$(JAVAGEN)/%.java},$(call uppercase_file,$(JAVA))) + # generated doc file DOC_TARGET := $(DOCGEN)/$(PROJECT)-protobuf.$(DOCEXT) @@ -107,7 +114,36 @@ GENERATED += \ $(PROTO_CXX_SRCS)\ $(PROTO_CXX_INCS) \ $(PROTO_PY_TARGETS) \ - $(PROTO_PY_EXTRAS) + $(PROTO_PY_EXTRAS) \ + $(PROTO_JAVA_TARGETS) + +all: $(PROTO_DEPS) $(GENERATED) + +# include dependecy files +-include $(PROTO_DEPS) + +ios_replace: + sh scripts/ios-replace.sh $(CXXGEN) + +docs: $(DOC_TARGET) + +.PHONY: clean +clean: + rm -rf build + +install_proto: $(PROTO_SPECS) + mkdir -p $(DESTDIR)/include/$(NAMESPACEDIR) + for proto in $(PROTO_SPECS); do \ + install -m 0644 $$proto $(DESTDIR)/include/$(NAMESPACEDIR); \ + done + +install_cpp: $(PROTO_CXX_INCS) + mkdir -p $(DESTDIR)/include/$(NAMESPACEDIR) + for headerfile in $(PROTO_CXX_INCS); do \ + install -m 0644 $$headerfile $(DESTDIR)/include/$(NAMESPACEDIR); \ + done + +install: install_proto install_cpp $(OBJDIR)/%.d: $(SRCDIR)/%.proto $(ECHO) "protoc create dependencies for $<" @@ -147,19 +183,32 @@ $(PYGEN)/%_pb2.py: $(SRCDIR)/%.proto --python_out=$(PYGEN)/ \ $< -$(PYGEN)/%.py: python/%.py - cp "$<" "$@" +$(PYGEN)/%/__init__.py: + $(ECHO) "creating __init__ file $@" + @touch "$@" + +# ------------- Java rules ------------ +# +# generate Java packages from proto files +define java_from_proto +$(call uppercase_file,$(1:$(SRCDIR)/%.proto=$(JAVAGEN)/%.java)): $1 + $(ECHO) "protoc create $$@ from $$<" + @mkdir -p $(JAVAGEN) + $(Q)$(PROTOC) $(PROTOC_FLAGS) \ + --proto_path=$(SRCDIR)/ \ + --proto_path=$(GPBINCLUDE)/ \ + --java_out=$(JAVAGEN)/ \ + $$< +endef +$(foreach PROTO,$(PROTO_SPECS),$(eval $(call java_from_proto,$(PROTO)))) -# force create of %.proto-dependent files and their deps -Makefile: $(GENERATED) $(PROTO_DEPS) --include $(PROTO_DEPS) # ------------- protoc-gen-doc rules ------------ # # see https://github.com/estan/protoc-gen-doc # # generate $(DOCFORMAT) files from proto files -$(DOC_TARGET): $(wildcard $(SRCDIR)/*.proto) $(TEMPLATE) Makefile +$(DOC_TARGET): $(wildcard $(SRCDIR)/*.proto) #doc_base: $(ECHO) "protoc create $@ from *.proto" @mkdir -p $(DOCGEN) @@ -167,29 +216,5 @@ $(DOC_TARGET): $(wildcard $(SRCDIR)/*.proto) $(TEMPLATE) Makefile $(PROTOC) $(PROTOC_FLAGS) \ --proto_path=./ \ --proto_path=$(GPBINCLUDE)/ \ - --doc_out=$(TEMPLATE),$(SRCDIRINV)/$@:./ \ + --doc_out=$(DOCTEMPLATE),$(SRCDIRINV)/$@:./ \ $(NAMESPACEDIR)/*.proto - -all: $(GENERATED) $(PROTO_DEPS) - -ios_replace: - sh scripts/ios-replace.sh $(CXXGEN) - -docs: $(PROTO_DEPS) $(DOC_TARGET) - -clean: - rm -rf build - -install_proto: $(PROTO_SPECS) - mkdir -p $(DESTDIR)/include/$(NAMESPACEDIR) - for proto in $(PROTO_SPECS); do \ - install -m 0644 $$proto $(DESTDIR)/include/$(NAMESPACEDIR); \ - done - -install_cpp: $(PROTO_CXX_INCS) - mkdir -p $(DESTDIR)/include/$(NAMESPACEDIR) - for headerfile in $(PROTO_CXX_INCS); do \ - install -m 0644 $$headerfile $(DESTDIR)/include/$(NAMESPACEDIR); \ - done - -install: install_proto install_cpp diff --git a/README.md b/README.md index 8411711848..6d62c4fb58 100644 --- a/README.md +++ b/README.md @@ -21,12 +21,17 @@ Now create a PR against the machinekit repo. ## Python -### Installation - +### Installation via PyPi To use the Machinetalk protobuf Python modules in your projects, use: ```sh -cd python +pip install machinetalk-protobuf +``` + +### Installation from source +Alternatively you can install the Python modules directly from the source code. + +```sh python setup.py build sudo python setup.py install ``` diff --git a/dist/README.md b/dist/README.md index 2516bd28bc..678861a386 100644 --- a/dist/README.md +++ b/dist/README.md @@ -17,5 +17,12 @@ machinetalk-protobuf.js is available either only with ProtoBuf.js included. * **[machinetalk-protobuf.min.map](https://raw.githubusercontent.com/machinekit/machinetalk-protobuf/master/dist/machinetalk-protobuf.min.map)** is the source map generated by Closure Compiler. +### Updates and Pull Requests When sending pull requests, please note that these files have been automatically generated from the sources located in -[src/](https://github.com/machinekit/machinekit-protobuf/tree/master/src). +[src/](https://github.com/machinekit/machinetalk-protobuf/tree/master/src). + +You can regenerate the bundle with the following commands in the root directory of the repository: +```bash +npm install +npm run bundle +``` diff --git a/dist/machinetalk-protobuf.js b/dist/machinetalk-protobuf.js index 501adeaaa7..497906699a 100644 --- a/dist/machinetalk-protobuf.js +++ b/dist/machinetalk-protobuf.js @@ -83,7 +83,7 @@ module.exports = require("protobufjs").newBuilder({})['import']({ ] }, { - "name": "pb", + "name": "machinetalk", "fields": [], "messages": [ { @@ -2844,6 +2844,10 @@ module.exports = require("protobufjs").newBuilder({})['import']({ "name": "MT_EMC_TOOL_SET_NUMBER", "id": 11109 }, + { + "name": "MT_EMC_TOOL_UPDATE_TOOL_TABLE", + "id": 11110 + }, { "name": "MT_EMC_TOOL_STAT", "id": 11199 @@ -3628,7 +3632,7 @@ module.exports = require("protobufjs").newBuilder({})['import']({ ] }, { - "name": "pb", + "name": "machinetalk", "fields": [], "messages": [ { @@ -3824,6 +3828,12 @@ module.exports = require("protobufjs").newBuilder({})['import']({ "type": "string", "name": "workdir", "id": 12 + }, + { + "rule": "optional", + "type": "uint32", + "name": "priority", + "id": 13 } ] } @@ -4000,7 +4010,7 @@ module.exports = require("protobufjs").newBuilder({})['import']({ ] }, { - "name": "pb", + "name": "machinetalk", "fields": [], "messages": [ { @@ -4220,7 +4230,233 @@ module.exports = require("protobufjs").newBuilder({})['import']({ ] }, { - "name": "pb", + "name": "machinetalk", + "fields": [], + "messages": [ + { + "name": "Connector", + "options": { + "(nanopb_msgopt).msgid": 380 + }, + "fields": [ + { + "rule": "optional", + "type": "string", + "name": "name", + "id": 1, + "options": { + "(nanopb).max_size": 20 + } + }, + { + "rule": "optional", + "type": "sfixed32", + "name": "pins", + "id": 2 + } + ] + }, + { + "name": "Firmware", + "options": { + "(nanopb_msgopt).msgid": 385 + }, + "fields": [ + { + "rule": "optional", + "type": "string", + "name": "build_sha", + "id": 1, + "options": { + "(nanopb).max_size": 40 + } + }, + { + "rule": "optional", + "type": "string", + "name": "fpga_part_number", + "id": 2, + "options": { + "(nanopb).max_size": 20 + } + }, + { + "rule": "repeated", + "type": "Connector", + "name": "connector", + "id": 3, + "options": { + "(nanopb).max_count": 16 + } + }, + { + "rule": "optional", + "type": "sfixed32", + "name": "num_leds", + "id": 4 + }, + { + "rule": "optional", + "type": "string", + "name": "board_name", + "id": 5, + "options": { + "(nanopb).max_size": 30 + } + }, + { + "rule": "optional", + "type": "string", + "name": "comment", + "id": 6, + "options": { + "(nanopb).max_size": 80 + } + } + ] + } + ] + } + ], + "enums": [ + { + "name": "FieldType", + "values": [ + { + "name": "FT_DEFAULT", + "id": 0 + }, + { + "name": "FT_CALLBACK", + "id": 1 + }, + { + "name": "FT_POINTER", + "id": 4 + }, + { + "name": "FT_STATIC", + "id": 2 + }, + { + "name": "FT_IGNORE", + "id": 3 + } + ] + }, + { + "name": "IntSize", + "values": [ + { + "name": "IS_DEFAULT", + "id": 0 + }, + { + "name": "IS_8", + "id": 8 + }, + { + "name": "IS_16", + "id": 16 + }, + { + "name": "IS_32", + "id": 32 + }, + { + "name": "IS_64", + "id": 64 + } + ] + } + ] +}).build(); +},{"protobufjs":21}],5:[function(require,module,exports){ +module.exports = require("protobufjs").newBuilder({})['import']({ + "package": null, + "options": { + "java_package": "fi.kapsi.koti.jpa.nanopb" + }, + "messages": [ + { + "name": "NanoPBOptions", + "fields": [ + { + "rule": "optional", + "type": "int32", + "name": "max_size", + "id": 1 + }, + { + "rule": "optional", + "type": "int32", + "name": "max_count", + "id": 2 + }, + { + "rule": "optional", + "type": "IntSize", + "name": "int_size", + "id": 7, + "options": { + "default": "IS_DEFAULT" + } + }, + { + "rule": "optional", + "type": "FieldType", + "name": "type", + "id": 3, + "options": { + "default": "FT_DEFAULT" + } + }, + { + "rule": "optional", + "type": "bool", + "name": "long_names", + "id": 4, + "options": { + "default": true + } + }, + { + "rule": "optional", + "type": "bool", + "name": "packed_struct", + "id": 5, + "options": { + "default": false + } + }, + { + "rule": "optional", + "type": "bool", + "name": "skip_message", + "id": 6, + "options": { + "default": false + } + }, + { + "rule": "optional", + "type": "bool", + "name": "no_unions", + "id": 8, + "options": { + "default": false + } + }, + { + "rule": "optional", + "type": "uint32", + "name": "msgid", + "id": 9 + } + ] + }, + { + "name": "machinetalk", "fields": [], "messages": [ { @@ -5928,6 +6164,10 @@ module.exports = require("protobufjs").newBuilder({})['import']({ "name": "MT_EMC_TOOL_SET_NUMBER", "id": 11109 }, + { + "name": "MT_EMC_TOOL_UPDATE_TOOL_TABLE", + "id": 11110 + }, { "name": "MT_EMC_TOOL_STAT", "id": 11199 @@ -6324,7 +6564,7 @@ module.exports = require("protobufjs").newBuilder({})['import']({ } ] }).build(); -},{"protobufjs":21}],5:[function(require,module,exports){ +},{"protobufjs":21}],6:[function(require,module,exports){ module.exports = require("protobufjs").newBuilder({})['import']({ "package": null, "options": { @@ -6409,7 +6649,7 @@ module.exports = require("protobufjs").newBuilder({})['import']({ ] }, { - "name": "pb", + "name": "machinetalk", "fields": [], "messages": [ { @@ -8978,6 +9218,12 @@ module.exports = require("protobufjs").newBuilder({})['import']({ "type": "string", "name": "workdir", "id": 12 + }, + { + "rule": "optional", + "type": "uint32", + "name": "priority", + "id": 13 } ] }, @@ -9257,6 +9503,18 @@ module.exports = require("protobufjs").newBuilder({})['import']({ "type": "Position", "name": "offset", "id": 16 + }, + { + "rule": "optional", + "type": "string", + "name": "comment", + "id": 17 + }, + { + "rule": "optional", + "type": "int32", + "name": "pocket", + "id": 18 } ] }, @@ -10140,18 +10398,6 @@ module.exports = require("protobufjs").newBuilder({})['import']({ "name": "mist", "id": 5 }, - { - "rule": "optional", - "type": "bool", - "name": "pocket_prepped", - "id": 6 - }, - { - "rule": "optional", - "type": "bool", - "name": "tool_in_spindle", - "id": 7 - }, { "rule": "optional", "type": "Position", @@ -10163,6 +10409,18 @@ module.exports = require("protobufjs").newBuilder({})['import']({ "type": "EmcToolData", "name": "tool_table", "id": 9 + }, + { + "rule": "optional", + "type": "int32", + "name": "pocket_prepped", + "id": 10 + }, + { + "rule": "optional", + "type": "int32", + "name": "tool_in_spindle", + "id": 11 } ] }, @@ -10379,6 +10637,12 @@ module.exports = require("protobufjs").newBuilder({})['import']({ "type": "EmcToolData", "name": "tool_data", "id": 104 + }, + { + "rule": "repeated", + "type": "EmcToolData", + "name": "tool_table", + "id": 105 } ] }, @@ -12773,6 +13037,10 @@ module.exports = require("protobufjs").newBuilder({})['import']({ "name": "MT_EMC_TOOL_SET_NUMBER", "id": 11109 }, + { + "name": "MT_EMC_TOOL_UPDATE_TOOL_TABLE", + "id": 11110 + }, { "name": "MT_EMC_TOOL_STAT", "id": 11199 @@ -13545,6 +13813,14 @@ module.exports = require("protobufjs").newBuilder({})['import']({ { "name": "PV_SOURCE_CONTEXT", "id": 20 + }, + { + "name": "PV_PREVIEW_START", + "id": 21 + }, + { + "name": "PV_PREVIEW_END", + "id": 22 } ] }, @@ -13698,7 +13974,7 @@ module.exports = require("protobufjs").newBuilder({})['import']({ "name": "EmcCanonUnitsType", "values": [ { - "name": "CANON_UNITS_INCHES", + "name": "CANON_UNITS_INCH", "id": 1 }, { @@ -13715,7 +13991,7 @@ module.exports = require("protobufjs").newBuilder({})['import']({ "name": "EmcLinearUnitsType", "values": [ { - "name": "LINEAR_UNITS_INCHES", + "name": "LINEAR_UNITS_INCH", "id": 1 }, { @@ -13891,7 +14167,7 @@ module.exports = require("protobufjs").newBuilder({})['import']({ } ] }).build(); -},{"protobufjs":21}],6:[function(require,module,exports){ +},{"protobufjs":21}],7:[function(require,module,exports){ module.exports = require("protobufjs").newBuilder({})['import']({ "package": null, "options": { @@ -13976,7 +14252,7 @@ module.exports = require("protobufjs").newBuilder({})['import']({ ] }, { - "name": "pb", + "name": "machinetalk", "fields": [], "messages": [ { @@ -14439,7805 +14715,216 @@ module.exports = require("protobufjs").newBuilder({})['import']({ }, { "name": "EMCMOT_FREE", - "id": 4013 - }, - { - "name": "EMCMOT_COORD", - "id": 4014 - }, - { - "name": "EMCMOT_TELEOP", - "id": 4015 - }, - { - "name": "EMCMOT_SPINDLE_SCALE", - "id": 4016 - }, - { - "name": "EMCMOT_SS_ENABLE", - "id": 4017 - }, - { - "name": "EMCMOT_FEED_SCALE", - "id": 4018 - }, - { - "name": "EMCMOT_FS_ENABLE", - "id": 4019 - }, - { - "name": "EMCMOT_FH_ENABLE", - "id": 4020 - }, - { - "name": "EMCMOT_AF_ENABLE", - "id": 4021 - }, - { - "name": "EMCMOT_OVERRIDE_LIMITS", - "id": 4022 - }, - { - "name": "EMCMOT_HOME", - "id": 4023 - }, - { - "name": "EMCMOT_UNHOME", - "id": 4024 - }, - { - "name": "EMCMOT_JOG_CONT", - "id": 4025 - }, - { - "name": "EMCMOT_JOG_INCR", - "id": 4026 - }, - { - "name": "EMCMOT_JOG_ABS", - "id": 4027 - }, - { - "name": "EMCMOT_SET_LINE", - "id": 4028 - }, - { - "name": "EMCMOT_SET_CIRCLE", - "id": 4029 - }, - { - "name": "EMCMOT_SET_TELEOP_VECTOR", - "id": 4030 - }, - { - "name": "EMCMOT_CLEAR_PROBE_FLAGS", - "id": 4031 - }, - { - "name": "EMCMOT_PROBE", - "id": 4032 - }, - { - "name": "EMCMOT_RIGID_TAP", - "id": 4033 - }, - { - "name": "EMCMOT_SET_POSITION_LIMITS", - "id": 4034 - }, - { - "name": "EMCMOT_SET_BACKLASH", - "id": 4035 - }, - { - "name": "EMCMOT_SET_MIN_FERROR", - "id": 4036 - }, - { - "name": "EMCMOT_SET_MAX_FERROR", - "id": 4037 - }, - { - "name": "EMCMOT_SET_VEL", - "id": 4038 - }, - { - "name": "EMCMOT_SET_VEL_LIMIT", - "id": 4039 - }, - { - "name": "EMCMOT_SET_JOINT_VEL_LIMIT", - "id": 4040 - }, - { - "name": "EMCMOT_SET_JOINT_ACC_LIMIT", - "id": 4041 - }, - { - "name": "EMCMOT_SET_ACC", - "id": 4042 - }, - { - "name": "EMCMOT_SET_TERM_COND", - "id": 4043 - }, - { - "name": "EMCMOT_SET_NUM_AXES", - "id": 4044 - }, - { - "name": "EMCMOT_SET_WORLD_HOME", - "id": 4045 - }, - { - "name": "EMCMOT_SET_HOMING_PARAMS", - "id": 4046 - }, - { - "name": "EMCMOT_SET_DEBUG", - "id": 4047 - }, - { - "name": "EMCMOT_SET_DOUT", - "id": 4048 - }, - { - "name": "EMCMOT_SET_AOUT", - "id": 4049 - }, - { - "name": "EMCMOT_SET_SPINDLESYNC", - "id": 4050 - }, - { - "name": "EMCMOT_SPINDLE_ON", - "id": 4051 - }, - { - "name": "EMCMOT_SPINDLE_OFF", - "id": 4052 - }, - { - "name": "EMCMOT_SPINDLE_INCREASE", - "id": 4053 - }, - { - "name": "EMCMOT_SPINDLE_DECREASE", - "id": 4054 - }, - { - "name": "EMCMOT_SPINDLE_BRAKE_ENGAGE", - "id": 4055 - }, - { - "name": "EMCMOT_SPINDLE_BRAKE_RELEASE", - "id": 4056 - }, - { - "name": "EMCMOT_SET_MOTOR_OFFSET", - "id": 4057 - }, - { - "name": "EMCMOT_SET_JOINT_COMP", - "id": 4058 - }, - { - "name": "EMCMOT_SET_OFFSET", - "id": 4059 - } - ] - }, - { - "name": "cmd_status_t", - "values": [ - { - "name": "EMCMOT_COMMAND_OK", - "id": 0 - }, - { - "name": "EMCMOT_COMMAND_UNKNOWN_COMMAND", - "id": 1 - }, - { - "name": "EMCMOT_COMMAND_INVALID_COMMAND", - "id": 2 - }, - { - "name": "EMCMOT_COMMAND_INVALID_PARAMS", - "id": 3 - }, - { - "name": "EMCMOT_COMMAND_BAD_EXEC", - "id": 4 - } - ] - } - ] - } - ], - "enums": [ - { - "name": "FieldType", - "values": [ - { - "name": "FT_DEFAULT", - "id": 0 - }, - { - "name": "FT_CALLBACK", - "id": 1 - }, - { - "name": "FT_POINTER", - "id": 4 - }, - { - "name": "FT_STATIC", - "id": 2 - }, - { - "name": "FT_IGNORE", - "id": 3 - } - ] - }, - { - "name": "IntSize", - "values": [ - { - "name": "IS_DEFAULT", - "id": 0 - }, - { - "name": "IS_8", - "id": 8 - }, - { - "name": "IS_16", - "id": 16 - }, - { - "name": "IS_32", - "id": 32 - }, - { - "name": "IS_64", - "id": 64 - } - ] - } - ] -}).build(); -},{"protobufjs":21}],7:[function(require,module,exports){ -module.exports = require("protobufjs").newBuilder({})['import']({ - "package": null, - "options": { - "java_package": "fi.kapsi.koti.jpa.nanopb" - }, - "messages": [ - { - "name": "NanoPBOptions", - "fields": [ - { - "rule": "optional", - "type": "int32", - "name": "max_size", - "id": 1 - }, - { - "rule": "optional", - "type": "int32", - "name": "max_count", - "id": 2 - }, - { - "rule": "optional", - "type": "IntSize", - "name": "int_size", - "id": 7, - "options": { - "default": "IS_DEFAULT" - } - }, - { - "rule": "optional", - "type": "FieldType", - "name": "type", - "id": 3, - "options": { - "default": "FT_DEFAULT" - } - }, - { - "rule": "optional", - "type": "bool", - "name": "long_names", - "id": 4, - "options": { - "default": true - } - }, - { - "rule": "optional", - "type": "bool", - "name": "packed_struct", - "id": 5, - "options": { - "default": false - } - }, - { - "rule": "optional", - "type": "bool", - "name": "skip_message", - "id": 6, - "options": { - "default": false - } - }, - { - "rule": "optional", - "type": "bool", - "name": "no_unions", - "id": 8, - "options": { - "default": false - } - }, - { - "rule": "optional", - "type": "uint32", - "name": "msgid", - "id": 9 - } - ] - }, - { - "name": "pb", - "fields": [], - "messages": [ - { - "name": "Instance", - "options": { - "(nanopb_msgopt).msgid": 700 - }, - "fields": [ - { - "rule": "optional", - "type": "string", - "name": "name", - "id": 1 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "id", - "id": 2 - } - ] - }, - { - "name": "ServiceAnnouncement", - "options": { - "(nanopb_msgopt).msgid": 701 - }, - "fields": [ - { - "rule": "required", - "type": "ServiceType", - "name": "stype", - "id": 1 - }, - { - "rule": "required", - "type": "fixed32", - "name": "version", - "id": 2, - "options": { - "default": 0 - } - }, - { - "rule": "required", - "type": "fixed32", - "name": "instance", - "id": 3, - "options": { - "default": 0 - } - }, - { - "rule": "required", - "type": "ServiceAPI", - "name": "api", - "id": 8 - }, - { - "rule": "required", - "type": "string", - "name": "uri", - "id": 6 - }, - { - "rule": "optional", - "type": "string", - "name": "description", - "id": 7 - } - ] - }, - { - "name": "Originator", - "options": { - "(nanopb_msgopt).msgid": 702 - }, - "fields": [ - { - "rule": "optional", - "type": "OriginType", - "name": "origin", - "id": 1 - }, - { - "rule": "optional", - "type": "OriginDetail", - "name": "detail", - "id": 2 - }, - { - "rule": "optional", - "type": "string", - "name": "name", - "id": 3 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "id", - "id": 4 - }, - { - "rule": "optional", - "type": "Instance", - "name": "instance", - "id": 5 - } - ] - }, - { - "name": "AnError", - "options": { - "(nanopb_msgopt).msgid": 703 - }, - "fields": [ - { - "rule": "required", - "type": "sfixed32", - "name": "error_code", - "id": 1 - }, - { - "rule": "optional", - "type": "Severity", - "name": "severity", - "id": 2 - }, - { - "rule": "optional", - "type": "string", - "name": "error_text", - "id": 3 - }, - { - "rule": "optional", - "type": "Originator", - "name": "origin", - "id": 4 - } - ] - }, - { - "name": "Pin", - "options": { - "(nanopb_msgopt).msgid": 704 - }, - "fields": [ - { - "rule": "optional", - "type": "ValueType", - "name": "type", - "id": 1 - }, - { - "rule": "optional", - "type": "string", - "name": "name", - "id": 2 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "handle", - "id": 3 - }, - { - "rule": "optional", - "type": "HalPinDirection", - "name": "dir", - "id": 4 - }, - { - "rule": "optional", - "type": "bool", - "name": "halbit", - "id": 5 - }, - { - "rule": "optional", - "type": "double", - "name": "halfloat", - "id": 6 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "hals32", - "id": 7 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "halu32", - "id": 8 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "owner", - "id": 9 - }, - { - "rule": "optional", - "type": "bool", - "name": "linked", - "id": 10 - }, - { - "rule": "optional", - "type": "string", - "name": "oldname", - "id": 11 - }, - { - "rule": "optional", - "type": "double", - "name": "epsilon", - "id": 12 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "flags", - "id": 13 - } - ] - }, - { - "name": "Signal", - "options": { - "(nanopb_msgopt).msgid": 705 - }, - "fields": [ - { - "rule": "optional", - "type": "ValueType", - "name": "type", - "id": 1 - }, - { - "rule": "optional", - "type": "string", - "name": "name", - "id": 2 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "handle", - "id": 3 - }, - { - "rule": "optional", - "type": "bool", - "name": "halbit", - "id": 5 - }, - { - "rule": "optional", - "type": "double", - "name": "halfloat", - "id": 6 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "hals32", - "id": 7 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "halu32", - "id": 8 - }, - { - "rule": "optional", - "type": "string", - "name": "strval", - "id": 9 - }, - { - "rule": "optional", - "type": "bytes", - "name": "blob", - "id": 10 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "readers", - "id": 11 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "writers", - "id": 12 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "bidirs", - "id": 13 - } - ] - }, - { - "name": "Param", - "options": { - "(nanopb_msgopt).msgid": 706 - }, - "fields": [ - { - "rule": "optional", - "type": "ValueType", - "name": "type", - "id": 1 - }, - { - "rule": "optional", - "type": "string", - "name": "name", - "id": 2 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "handle", - "id": 3 - }, - { - "rule": "optional", - "type": "bool", - "name": "halbit", - "id": 5 - }, - { - "rule": "optional", - "type": "double", - "name": "halfloat", - "id": 6 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "hals32", - "id": 7 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "halu32", - "id": 8 - }, - { - "rule": "optional", - "type": "string", - "name": "strval", - "id": 9 - }, - { - "rule": "optional", - "type": "bytes", - "name": "blob", - "id": 10 - }, - { - "rule": "optional", - "type": "HalParamDirection", - "name": "dir", - "id": 11 - }, - { - "rule": "optional", - "type": "string", - "name": "oldname", - "id": 12 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "owner", - "id": 13 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "runtime", - "id": 14 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "maytime", - "id": 15 - } - ] - }, - { - "name": "Function", - "options": { - "(nanopb_msgopt).msgid": 707 - }, - "fields": [ - { - "rule": "optional", - "type": "string", - "name": "name", - "id": 1 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "handle", - "id": 2 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "owner_id", - "id": 3 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "users", - "id": 4 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "runtime", - "id": 5 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "maxtime", - "id": 6 - }, - { - "rule": "optional", - "type": "bool", - "name": "reentrant", - "id": 7 - } - ] - }, - { - "name": "Thread", - "options": { - "(nanopb_msgopt).msgid": 708 - }, - "fields": [ - { - "rule": "optional", - "type": "string", - "name": "name", - "id": 1 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "handle", - "id": 2 - }, - { - "rule": "optional", - "type": "bool", - "name": "uses_fp", - "id": 3 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "period", - "id": 4 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "priority", - "id": 5 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "task_id", - "id": 6 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "cpu_id", - "id": 7 - }, - { - "rule": "repeated", - "type": "string", - "name": "function", - "id": 8 - } - ] - }, - { - "name": "Component", - "options": { - "(nanopb_msgopt).msgid": 709 - }, - "fields": [ - { - "rule": "optional", - "type": "string", - "name": "name", - "id": 1 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "ninst", - "id": 2 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "comp_id", - "id": 4 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "type", - "id": 5 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "state", - "id": 6 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "last_update", - "id": 7 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "last_bound", - "id": 8 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "last_unbound", - "id": 9 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "pid", - "id": 10 - }, - { - "rule": "optional", - "type": "string", - "name": "args", - "id": 11 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "timer", - "id": 12 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "userarg1", - "id": 14 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "userarg2", - "id": 15 - }, - { - "rule": "repeated", - "type": "Pin", - "name": "pin", - "id": 16 - }, - { - "rule": "repeated", - "type": "Param", - "name": "param", - "id": 17 - }, - { - "rule": "optional", - "type": "bool", - "name": "no_create", - "id": 18 - } - ] - }, - { - "name": "Ring", - "options": { - "(nanopb_msgopt).msgid": 710 - }, - "fields": [ - { - "rule": "optional", - "type": "string", - "name": "name", - "id": 1 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "handle", - "id": 2 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "owner", - "id": 3 - }, - { - "rule": "optional", - "type": "bool", - "name": "stream", - "id": 4 - }, - { - "rule": "optional", - "type": "bool", - "name": "wmutex", - "id": 5 - }, - { - "rule": "optional", - "type": "bool", - "name": "rmutex", - "id": 6 - }, - { - "rule": "optional", - "type": "bool", - "name": "rtapi_shm", - "id": 7 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "reader", - "id": 8 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "writer", - "id": 9 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "size", - "id": 10 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "scratchpad", - "id": 11 - } - ] - }, - { - "name": "Member", - "options": { - "(nanopb_msgopt).msgid": 711 - }, - "fields": [ - { - "rule": "optional", - "type": "ObjectType", - "name": "mtype", - "id": 1 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "userarg1", - "id": 2 - }, - { - "rule": "optional", - "type": "double", - "name": "epsilon", - "id": 3 - }, - { - "rule": "optional", - "type": "Signal", - "name": "signal", - "id": 4 - }, - { - "rule": "optional", - "type": "string", - "name": "groupname", - "id": 5 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "handle", - "id": 6 - }, - { - "rule": "optional", - "type": "Pin", - "name": "pin", - "id": 7 - }, - { - "rule": "optional", - "type": "Param", - "name": "param", - "id": 8 - } - ] - }, - { - "name": "Group", - "options": { - "(nanopb_msgopt).msgid": 712 - }, - "fields": [ - { - "rule": "optional", - "type": "string", - "name": "name", - "id": 1 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "handle", - "id": 2 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "userarg1", - "id": 4 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "userarg2", - "id": 5 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "refcount", - "id": 6 - }, - { - "rule": "repeated", - "type": "Member", - "name": "member", - "id": 7 - } - ] - }, - { - "name": "ProtocolParameters", - "options": { - "(nanopb_msgopt).msgid": 713 - }, - "fields": [ - { - "rule": "optional", - "type": "sfixed32", - "name": "keepalive_timer", - "id": 1 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "group_timer", - "id": 2 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "rcomp_timer", - "id": 3 - } - ] - }, - { - "name": "Vtable", - "options": { - "(nanopb_msgopt).msgid": 714 - }, - "fields": [ - { - "rule": "optional", - "type": "string", - "name": "name", - "id": 1 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "context", - "id": 2 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "comp_id", - "id": 4 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "instance_id", - "id": 5 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "handle", - "id": 6 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "refcount", - "id": 7 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "version", - "id": 8 - }, - { - "rule": "optional", - "type": "fixed64", - "name": "vtable", - "id": 9 - } - ] - }, - { - "name": "Inst", - "options": { - "(nanopb_msgopt).msgid": 715 - }, - "fields": [ - { - "rule": "optional", - "type": "string", - "name": "name", - "id": 1 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "comp_id", - "id": 2 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "inst_id", - "id": 3 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "inst_size", - "id": 4 - }, - { - "rule": "optional", - "type": "fixed64", - "name": "vtable", - "id": 5 - } - ] - }, - { - "name": "LogMessage", - "options": { - "(nanopb_msgopt).msgid": 400 - }, - "fields": [ - { - "rule": "required", - "type": "MsgOrigin", - "name": "origin", - "id": 10 - }, - { - "rule": "required", - "type": "int32", - "name": "pid", - "id": 20 - }, - { - "rule": "required", - "type": "MsgLevel", - "name": "level", - "id": 30 - }, - { - "rule": "required", - "type": "string", - "name": "tag", - "id": 40 - }, - { - "rule": "required", - "type": "string", - "name": "text", - "id": 50 - } - ] - }, - { - "name": "PmCartesian", - "options": { - "(nanopb_msgopt).msgid": 300 - }, - "fields": [ - { - "rule": "optional", - "type": "double", - "name": "x", - "id": 10 - }, - { - "rule": "optional", - "type": "double", - "name": "y", - "id": 20 - }, - { - "rule": "optional", - "type": "double", - "name": "z", - "id": 30 - } - ] - }, - { - "name": "EmcPose", - "options": { - "(nanopb_msgopt).msgid": 301 - }, - "fields": [ - { - "rule": "required", - "type": "PmCartesian", - "name": "tran", - "id": 10 - }, - { - "rule": "optional", - "type": "double", - "name": "a", - "id": 20 - }, - { - "rule": "optional", - "type": "double", - "name": "b", - "id": 30 - }, - { - "rule": "optional", - "type": "double", - "name": "c", - "id": 40 - }, - { - "rule": "optional", - "type": "double", - "name": "u", - "id": 50 - }, - { - "rule": "optional", - "type": "double", - "name": "v", - "id": 60 - }, - { - "rule": "optional", - "type": "double", - "name": "w", - "id": 70 - } - ] - }, - { - "name": "MotionCommand", - "options": { - "(nanopb_msgopt).msgid": 600 - }, - "fields": [ - { - "rule": "required", - "type": "cmd_code_t", - "name": "command", - "id": 10 - }, - { - "rule": "required", - "type": "fixed32", - "name": "commandNum", - "id": 20 - }, - { - "rule": "optional", - "type": "double", - "name": "motor_offset", - "id": 30 - }, - { - "rule": "optional", - "type": "double", - "name": "maxLimit", - "id": 40 - }, - { - "rule": "optional", - "type": "double", - "name": "minLimit", - "id": 50 - }, - { - "rule": "optional", - "type": "EmcPose", - "name": "pos", - "id": 60 - }, - { - "rule": "optional", - "type": "PmCartesian", - "name": "center", - "id": 70 - }, - { - "rule": "optional", - "type": "PmCartesian", - "name": "normal", - "id": 80 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "turn", - "id": 90 - }, - { - "rule": "optional", - "type": "double", - "name": "vel", - "id": 100 - }, - { - "rule": "optional", - "type": "double", - "name": "ini_maxvel", - "id": 110 - }, - { - "rule": "optional", - "type": "MotionType", - "name": "motion_type", - "id": 120 - }, - { - "rule": "optional", - "type": "double", - "name": "spindlesync", - "id": 130 - }, - { - "rule": "optional", - "type": "double", - "name": "acc", - "id": 140 - }, - { - "rule": "optional", - "type": "double", - "name": "backlash", - "id": 150 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "id", - "id": 160 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "termCond", - "id": 170 - }, - { - "rule": "optional", - "type": "double", - "name": "tolerance", - "id": 180 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "axis", - "id": 190 - }, - { - "rule": "optional", - "type": "double", - "name": "scale", - "id": 200 - }, - { - "rule": "optional", - "type": "double", - "name": "offset", - "id": 210 - }, - { - "rule": "optional", - "type": "double", - "name": "home", - "id": 220 - }, - { - "rule": "optional", - "type": "double", - "name": "home_final_vel", - "id": 230 - }, - { - "rule": "optional", - "type": "double", - "name": "search_vel", - "id": 240 - }, - { - "rule": "optional", - "type": "double", - "name": "latch_vel", - "id": 250 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "flags", - "id": 260 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "home_sequence", - "id": 270 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "volatile_home", - "id": 280 - }, - { - "rule": "optional", - "type": "double", - "name": "minFerror", - "id": 290 - }, - { - "rule": "optional", - "type": "double", - "name": "maxFerror", - "id": 300 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "wdWait", - "id": 310 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "debug", - "id": 320 - }, - { - "rule": "optional", - "type": "int32", - "name": "now", - "id": 330 - }, - { - "rule": "optional", - "type": "int32", - "name": "out", - "id": 340 - }, - { - "rule": "optional", - "type": "int32", - "name": "start", - "id": 350 - }, - { - "rule": "optional", - "type": "int32", - "name": "end", - "id": 360 - }, - { - "rule": "optional", - "type": "int32", - "name": "mode", - "id": 370 - }, - { - "rule": "optional", - "type": "double", - "name": "comp_nominal", - "id": 380 - }, - { - "rule": "optional", - "type": "double", - "name": "comp_forward", - "id": 390 - }, - { - "rule": "optional", - "type": "double", - "name": "comp_reverse", - "id": 400 - }, - { - "rule": "optional", - "type": "int32", - "name": "probe_type", - "id": 410 - }, - { - "rule": "optional", - "type": "EmcPose", - "name": "tool_offset", - "id": 420 - } - ] - }, - { - "name": "MotionStatus", - "options": { - "(nanopb_msgopt).msgid": 601 - }, - "fields": [ - { - "rule": "required", - "type": "cmd_code_t", - "name": "commandEcho", - "id": 10 - }, - { - "rule": "required", - "type": "fixed32", - "name": "commandNumEcho", - "id": 20 - }, - { - "rule": "required", - "type": "cmd_status_t", - "name": "commandStatus", - "id": 30 - }, - { - "rule": "optional", - "type": "EmcPose", - "name": "carte_pos_fb", - "id": 40 - } - ] - }, - { - "name": "TaskPlanExecute", - "options": { - "(nanopb_msgopt).msgid": 1200 - }, - "fields": [ - { - "rule": "optional", - "type": "string", - "name": "command", - "id": 10 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "line", - "id": 30 - } - ] - }, - { - "name": "TaskPlanBlockDelete", - "options": { - "(nanopb_msgopt).msgid": 1201 - }, - "fields": [ - { - "rule": "required", - "type": "bool", - "name": "state", - "id": 10 - } - ] - }, - { - "name": "TaskPlanOptionalStop", - "options": { - "(nanopb_msgopt).msgid": 1202 - }, - "fields": [ - { - "rule": "required", - "type": "bool", - "name": "state", - "id": 10 - } - ] - }, - { - "name": "TaskPlanOpen", - "options": { - "(nanopb_msgopt).msgid": 1203 - }, - "fields": [ - { - "rule": "required", - "type": "string", - "name": "filename", - "id": 10 - } - ] - }, - { - "name": "TaskPlanReply", - "options": { - "(nanopb_msgopt).msgid": 1204 - }, - "fields": [ - { - "rule": "required", - "type": "ContainerType", - "name": "cmd", - "id": 10 - }, - { - "rule": "optional", - "type": "string", - "name": "errormsg", - "id": 20 - } - ] - }, - { - "name": "TaskReply", - "options": { - "(nanopb_msgopt).msgid": 1205 - }, - "fields": [ - { - "rule": "required", - "type": "fixed32", - "name": "ticket", - "id": 10 - } - ] - }, - { - "name": "TicketUpdate", - "options": { - "(nanopb_msgopt).msgid": 1206 - }, - "fields": [ - { - "rule": "required", - "type": "fixed32", - "name": "cticket", - "id": 10 - }, - { - "rule": "required", - "type": "RCS_STATUS", - "name": "status", - "id": 20 - }, - { - "rule": "optional", - "type": "string", - "name": "text", - "id": 30 - } - ] - }, - { - "name": "Emc_Traj_Set_G5x", - "options": { - "(nanopb_msgopt).msgid": 100 - }, - "fields": [ - { - "rule": "required", - "type": "EmcPose", - "name": "origin", - "id": 10 - }, - { - "rule": "required", - "type": "OriginIndex", - "name": "g5x_index", - "id": 20 - } - ] - }, - { - "name": "Emc_Traj_Set_G92", - "options": { - "(nanopb_msgopt).msgid": 101 - }, - "fields": [ - { - "rule": "required", - "type": "EmcPose", - "name": "origin", - "id": 10 - } - ] - }, - { - "name": "Emc_Traj_Set_Rotation", - "options": { - "(nanopb_msgopt).msgid": 102 - }, - "fields": [ - { - "rule": "required", - "type": "double", - "name": "rotation", - "id": 10 - } - ] - }, - { - "name": "Emc_Traj_Linear_Move", - "options": { - "(nanopb_msgopt).msgid": 103 - }, - "fields": [ - { - "rule": "required", - "type": "MotionType", - "name": "type", - "id": 10 - }, - { - "rule": "required", - "type": "EmcPose", - "name": "end", - "id": 20 - }, - { - "rule": "required", - "type": "double", - "name": "vel", - "id": 30 - }, - { - "rule": "required", - "type": "double", - "name": "ini_maxvel", - "id": 40 - }, - { - "rule": "required", - "type": "double", - "name": "acc", - "id": 50 - }, - { - "rule": "required", - "type": "bool", - "name": "feed_mode", - "id": 60 - }, - { - "rule": "required", - "type": "int32", - "name": "indexrotary", - "id": 70 - } - ] - }, - { - "name": "Emc_Traj_Probe", - "options": { - "(nanopb_msgopt).msgid": 104 - }, - "fields": [ - { - "rule": "required", - "type": "MotionType", - "name": "type", - "id": 10 - }, - { - "rule": "required", - "type": "EmcPose", - "name": "pos", - "id": 20 - }, - { - "rule": "required", - "type": "double", - "name": "vel", - "id": 30 - }, - { - "rule": "required", - "type": "double", - "name": "ini_maxvel", - "id": 40 - }, - { - "rule": "required", - "type": "double", - "name": "acc", - "id": 50 - }, - { - "rule": "required", - "type": "uint32", - "name": "probe_type", - "id": 60 - } - ] - }, - { - "name": "Emc_Traj_Circular_Move", - "options": { - "(nanopb_msgopt).msgid": 105 - }, - "fields": [ - { - "rule": "required", - "type": "MotionType", - "name": "type", - "id": 10 - }, - { - "rule": "required", - "type": "EmcPose", - "name": "end", - "id": 20 - }, - { - "rule": "required", - "type": "PmCartesian", - "name": "center", - "id": 25 - }, - { - "rule": "required", - "type": "PmCartesian", - "name": "normal", - "id": 27 - }, - { - "rule": "required", - "type": "double", - "name": "vel", - "id": 30 - }, - { - "rule": "required", - "type": "double", - "name": "ini_maxvel", - "id": 40 - }, - { - "rule": "required", - "type": "double", - "name": "acc", - "id": 50 - }, - { - "rule": "required", - "type": "bool", - "name": "feed_mode", - "id": 60 - }, - { - "rule": "required", - "type": "int32", - "name": "turn", - "id": 70 - } - ] - }, - { - "name": "Emc_Traj_Rigid_Tap", - "options": { - "(nanopb_msgopt).msgid": 106 - }, - "fields": [ - { - "rule": "required", - "type": "EmcPose", - "name": "pos", - "id": 20 - }, - { - "rule": "required", - "type": "double", - "name": "vel", - "id": 30 - }, - { - "rule": "required", - "type": "double", - "name": "ini_maxvel", - "id": 40 - }, - { - "rule": "required", - "type": "double", - "name": "acc", - "id": 50 - } - ] - }, - { - "name": "Emc_Traj_Set_Term_Cond", - "options": { - "(nanopb_msgopt).msgid": 107 - }, - "fields": [ - { - "rule": "required", - "type": "TermConditionType", - "name": "cond", - "id": 10 - }, - { - "rule": "required", - "type": "double", - "name": "tolerance", - "id": 20 - } - ] - }, - { - "name": "Emc_Traj_Set_Spindlesync", - "options": { - "(nanopb_msgopt).msgid": 108 - }, - "fields": [ - { - "rule": "required", - "type": "double", - "name": "feed_per_revolution", - "id": 10 - }, - { - "rule": "required", - "type": "bool", - "name": "velocity_mode", - "id": 20 - } - ] - }, - { - "name": "Emc_Traj_Delay", - "options": { - "(nanopb_msgopt).msgid": 109 - }, - "fields": [ - { - "rule": "required", - "type": "double", - "name": "delay", - "id": 10 - } - ] - }, - { - "name": "Emc_Spindle_On", - "options": { - "(nanopb_msgopt).msgid": 110 - }, - "fields": [ - { - "rule": "required", - "type": "double", - "name": "speed", - "id": 10, - "options": { - "default": 0 - } - }, - { - "rule": "required", - "type": "double", - "name": "factor", - "id": 20, - "options": { - "default": 0 - } - }, - { - "rule": "required", - "type": "double", - "name": "xoffset", - "id": 30, - "options": { - "default": 0 - } - } - ] - }, - { - "name": "Emc_Spindle_Speed", - "options": { - "(nanopb_msgopt).msgid": 111 - }, - "fields": [ - { - "rule": "required", - "type": "double", - "name": "speed", - "id": 10 - }, - { - "rule": "required", - "type": "double", - "name": "factor", - "id": 20 - }, - { - "rule": "required", - "type": "double", - "name": "xoffset", - "id": 30 - } - ] - }, - { - "name": "Emc_Spindle_Orient", - "options": { - "(nanopb_msgopt).msgid": 112 - }, - "fields": [ - { - "rule": "required", - "type": "double", - "name": "orientation", - "id": 10 - }, - { - "rule": "required", - "type": "CanonDirection", - "name": "mode", - "id": 20 - } - ] - }, - { - "name": "Emc_Spindle_Wait_Orient_Complete", - "options": { - "(nanopb_msgopt).msgid": 113 - }, - "fields": [ - { - "rule": "required", - "type": "double", - "name": "timeout", - "id": 10 - } - ] - }, - { - "name": "Emc_Tool_Set_Offset", - "options": { - "(nanopb_msgopt).msgid": 114 - }, - "fields": [ - { - "rule": "required", - "type": "int32", - "name": "pocket", - "id": 10 - }, - { - "rule": "required", - "type": "int32", - "name": "toolno", - "id": 15 - }, - { - "rule": "required", - "type": "EmcPose", - "name": "offset", - "id": 20 - }, - { - "rule": "required", - "type": "double", - "name": "diameter", - "id": 30 - }, - { - "rule": "required", - "type": "double", - "name": "frontangle", - "id": 40 - }, - { - "rule": "required", - "type": "double", - "name": "backangle", - "id": 50 - }, - { - "rule": "required", - "type": "int32", - "name": "orientation", - "id": 60 - } - ] - }, - { - "name": "Emc_Traj_Set_Offset", - "options": { - "(nanopb_msgopt).msgid": 115 - }, - "fields": [ - { - "rule": "required", - "type": "EmcPose", - "name": "offset", - "id": 10 - } - ] - }, - { - "name": "Emc_Tool_Prepare", - "options": { - "(nanopb_msgopt).msgid": 116 - }, - "fields": [ - { - "rule": "required", - "type": "int32", - "name": "pocket", - "id": 10 - }, - { - "rule": "required", - "type": "int32", - "name": "tool", - "id": 20 - } - ] - }, - { - "name": "Emc_Tool_Set_Number", - "options": { - "(nanopb_msgopt).msgid": 117 - }, - "fields": [ - { - "rule": "required", - "type": "int32", - "name": "tool", - "id": 10 - } - ] - }, - { - "name": "Emc_Traj_Set_Fo_Enable", - "options": { - "(nanopb_msgopt).msgid": 118 - }, - "fields": [ - { - "rule": "required", - "type": "bool", - "name": "mode", - "id": 10 - } - ] - }, - { - "name": "Emc_Traj_Set_So_Enable", - "options": { - "(nanopb_msgopt).msgid": 119 - }, - "fields": [ - { - "rule": "required", - "type": "bool", - "name": "mode", - "id": 10 - } - ] - }, - { - "name": "Emc_Traj_Set_Fh_Enable", - "options": { - "(nanopb_msgopt).msgid": 120 - }, - "fields": [ - { - "rule": "required", - "type": "bool", - "name": "mode", - "id": 10 - } - ] - }, - { - "name": "Emc_Motion_Adaptive", - "options": { - "(nanopb_msgopt).msgid": 121 - }, - "fields": [ - { - "rule": "required", - "type": "bool", - "name": "status", - "id": 10 - } - ] - }, - { - "name": "Emc_Operator_Display", - "options": { - "(nanopb_msgopt).msgid": 122 - }, - "fields": [ - { - "rule": "required", - "type": "int32", - "name": "id", - "id": 10 - }, - { - "rule": "required", - "type": "string", - "name": "display", - "id": 20 - } - ] - }, - { - "name": "Emc_Operator_Text", - "options": { - "(nanopb_msgopt).msgid": 123 - }, - "fields": [ - { - "rule": "required", - "type": "int32", - "name": "id", - "id": 10 - }, - { - "rule": "required", - "type": "string", - "name": "text", - "id": 20 - } - ] - }, - { - "name": "Emc_Operator_Error", - "options": { - "(nanopb_msgopt).msgid": 124 - }, - "fields": [ - { - "rule": "required", - "type": "int32", - "name": "id", - "id": 10 - }, - { - "rule": "required", - "type": "string", - "name": "error", - "id": 20 - } - ] - }, - { - "name": "Emc_Motion_Set_Dout", - "options": { - "(nanopb_msgopt).msgid": 125 - }, - "fields": [ - { - "rule": "required", - "type": "uint32", - "name": "index", - "id": 10 - }, - { - "rule": "required", - "type": "bool", - "name": "start", - "id": 20 - }, - { - "rule": "required", - "type": "bool", - "name": "end", - "id": 30 - }, - { - "rule": "required", - "type": "bool", - "name": "now", - "id": 40 - } - ] - }, - { - "name": "Emc_Motion_Set_Aout", - "options": { - "(nanopb_msgopt).msgid": 126 - }, - "fields": [ - { - "rule": "required", - "type": "uint32", - "name": "index", - "id": 10 - }, - { - "rule": "required", - "type": "double", - "name": "start", - "id": 20 - }, - { - "rule": "required", - "type": "double", - "name": "end", - "id": 30 - }, - { - "rule": "required", - "type": "bool", - "name": "now", - "id": 40 - } - ] - }, - { - "name": "Emc_Aux_Input_Wait", - "options": { - "(nanopb_msgopt).msgid": 127 - }, - "fields": [ - { - "rule": "required", - "type": "uint32", - "name": "index", - "id": 10 - }, - { - "rule": "required", - "type": "InputType", - "name": "input_type", - "id": 20 - }, - { - "rule": "required", - "type": "WaitType", - "name": "wait_type", - "id": 30 - }, - { - "rule": "required", - "type": "double", - "name": "timeout", - "id": 40 - } - ] - }, - { - "name": "Emc_Exec_Plugin_Ca1l", - "options": { - "(nanopb_msgopt).msgid": 128 - }, - "fields": [ - { - "rule": "required", - "type": "bytes", - "name": "call", - "id": 20 - } - ] - }, - { - "name": "Emc_Io_Plugin_Call", - "options": { - "(nanopb_msgopt).msgid": 129 - }, - "fields": [ - { - "rule": "required", - "type": "bytes", - "name": "call", - "id": 20 - } - ] - }, - { - "name": "Value", - "options": { - "(nanopb_msgopt).msgid": 1500 - }, - "fields": [ - { - "rule": "required", - "type": "ValueType", - "name": "type", - "id": 10 - }, - { - "rule": "optional", - "type": "bool", - "name": "halbit", - "id": 100 - }, - { - "rule": "optional", - "type": "double", - "name": "halfloat", - "id": 101 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "hals32", - "id": 102 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "halu32", - "id": 103 - }, - { - "rule": "optional", - "type": "bytes", - "name": "v_bytes", - "id": 120 - }, - { - "rule": "optional", - "type": "sfixed32", - "name": "v_int32", - "id": 130 - }, - { - "rule": "optional", - "type": "sfixed64", - "name": "v_int64", - "id": 140 - }, - { - "rule": "optional", - "type": "fixed32", - "name": "v_uint32", - "id": 150 - }, - { - "rule": "optional", - "type": "fixed64", - "name": "v_uint64", - "id": 160 - }, - { - "rule": "optional", - "type": "double", - "name": "v_double", - "id": 170 - }, - { - "rule": "optional", - "type": "string", - "name": "v_string", - "id": 180, - "options": { - "(nanopb).max_size": 41 - } - }, - { - "rule": "optional", - "type": "bool", - "name": "v_bool", - "id": 190 - }, - { - "rule": "optional", - "type": "PmCartesian", - "name": "carte", - "id": 200 - }, - { - "rule": "optional", - "type": "EmcPose", - "name": "pose", - "id": 220 - } - ] - }, - { - "name": "RTAPICommand", - "options": { - "(nanopb_msgopt).msgid": 900 - }, - "fields": [ - { - "rule": "required", - "type": "int32", - "name": "instance", - "id": 1 - }, - { - "rule": "optional", - "type": "string", - "name": "modname", - "id": 2 - }, - { - "rule": "optional", - "type": "int32", - "name": "rt_msglevel", - "id": 3 - }, - { - "rule": "optional", - "type": "int32", - "name": "user_msglevel", - "id": 4 - }, - { - "rule": "repeated", - "type": "string", - "name": "argv", - "id": 5 - }, - { - "rule": "optional", - "type": "string", - "name": "threadname", - "id": 6 - }, - { - "rule": "optional", - "type": "int32", - "name": "threadperiod", - "id": 7 - }, - { - "rule": "optional", - "type": "bool", - "name": "use_fp", - "id": 8 - }, - { - "rule": "optional", - "type": "int32", - "name": "cpu", - "id": 9 - }, - { - "rule": "optional", - "type": "string", - "name": "comp", - "id": 10 - }, - { - "rule": "optional", - "type": "string", - "name": "func", - "id": 11 - }, - { - "rule": "optional", - "type": "string", - "name": "instname", - "id": 12 - }, - { - "rule": "optional", - "type": "int32", - "name": "flags", - "id": 13 - } - ] - }, - { - "name": "RTAPI_Message", - "options": { - "(nanopb_msgopt).msgid": 1000 - }, - "fields": [ - { - "rule": "required", - "type": "int32", - "name": "msglevel", - "id": 10 - }, - { - "rule": "required", - "type": "string", - "name": "format", - "id": 20, - "options": { - "default": "*** uninitialized ***", - "(nanopb).max_size": 100 - } - }, - { - "rule": "repeated", - "type": "Value", - "name": "arg", - "id": 30, - "options": { - "(nanopb).max_count": 10 - } - } - ] - }, - { - "name": "File", - "options": { - "(nanopb_msgopt).msgid": 200 - }, - "fields": [ - { - "rule": "required", - "type": "string", - "name": "name", - "id": 1 - }, - { - "rule": "required", - "type": "FileContent", - "name": "encoding", - "id": 2 - }, - { - "rule": "optional", - "type": "bytes", - "name": "blob", - "id": 3 - } - ] - }, - { - "name": "Application", - "options": { - "(nanopb_msgopt).msgid": 201 - }, - "fields": [ - { - "rule": "required", - "type": "string", - "name": "name", - "id": 1 - }, - { - "rule": "optional", - "type": "string", - "name": "description", - "id": 2 - }, - { - "rule": "optional", - "type": "ApplicationType", - "name": "type", - "id": 3 - }, - { - "rule": "optional", - "type": "string", - "name": "weburi", - "id": 4 - }, - { - "rule": "repeated", - "type": "File", - "name": "file", - "id": 5 - } - ] - }, - { - "name": "StdoutLine", - "options": { - "(nanopb_msgopt).msgid": 202 - }, - "fields": [ - { - "rule": "required", - "type": "int32", - "name": "index", - "id": 1 - }, - { - "rule": "optional", - "type": "string", - "name": "line", - "id": 2 - } - ] - }, - { - "name": "MachineInfo", - "options": { - "(nanopb_msgopt).msgid": 203 - }, - "fields": [ - { - "rule": "optional", - "type": "string", - "name": "type", - "id": 1 - }, - { - "rule": "optional", - "type": "string", - "name": "manufacturer", - "id": 2 - }, - { - "rule": "optional", - "type": "string", - "name": "model", - "id": 3 - }, - { - "rule": "optional", - "type": "string", - "name": "variant", - "id": 4 - } - ] - }, - { - "name": "Launcher", - "options": { - "(nanopb_msgopt).msgid": 204 - }, - "fields": [ - { - "rule": "required", - "type": "int32", - "name": "index", - "id": 1 - }, - { - "rule": "optional", - "type": "string", - "name": "name", - "id": 2 - }, - { - "rule": "optional", - "type": "string", - "name": "description", - "id": 3 - }, - { - "rule": "optional", - "type": "File", - "name": "image", - "id": 4 - }, - { - "rule": "optional", - "type": "MachineInfo", - "name": "info", - "id": 5 - }, - { - "rule": "optional", - "type": "bool", - "name": "running", - "id": 6 - }, - { - "rule": "optional", - "type": "bool", - "name": "terminating", - "id": 7 - }, - { - "rule": "optional", - "type": "string", - "name": "command", - "id": 8 - }, - { - "rule": "optional", - "type": "bool", - "name": "shell", - "id": 9 - }, - { - "rule": "repeated", - "type": "StdoutLine", - "name": "output", - "id": 10 - }, - { - "rule": "optional", - "type": "int32", - "name": "returncode", - "id": 11 - }, - { - "rule": "optional", - "type": "string", - "name": "workdir", - "id": 12 - } - ] - }, - { - "name": "Position", - "options": { - "(nanopb_msgopt).msgid": 800 - }, - "fields": [ - { - "rule": "optional", - "type": "double", - "name": "x", - "id": 3 - }, - { - "rule": "optional", - "type": "double", - "name": "y", - "id": 4 - }, - { - "rule": "optional", - "type": "double", - "name": "z", - "id": 5 - }, - { - "rule": "optional", - "type": "double", - "name": "a", - "id": 6 - }, - { - "rule": "optional", - "type": "double", - "name": "b", - "id": 7 - }, - { - "rule": "optional", - "type": "double", - "name": "c", - "id": 8 - }, - { - "rule": "optional", - "type": "double", - "name": "u", - "id": 9 - }, - { - "rule": "optional", - "type": "double", - "name": "v", - "id": 10 - }, - { - "rule": "optional", - "type": "double", - "name": "w", - "id": 11 - } - ] - }, - { - "name": "Preview", - "options": { - "(nanopb_msgopt).msgid": 801 - }, - "fields": [ - { - "rule": "required", - "type": "PreviewOpType", - "name": "type", - "id": 1 - }, - { - "rule": "optional", - "type": "int32", - "name": "line_number", - "id": 2 - }, - { - "rule": "optional", - "type": "Position", - "name": "pos", - "id": 3 - }, - { - "rule": "optional", - "type": "double", - "name": "first_end", - "id": 4 - }, - { - "rule": "optional", - "type": "double", - "name": "second_end", - "id": 5 - }, - { - "rule": "optional", - "type": "double", - "name": "first_axis", - "id": 6 - }, - { - "rule": "optional", - "type": "double", - "name": "second_axis", - "id": 7 - }, - { - "rule": "optional", - "type": "int32", - "name": "rotation", - "id": 8 - }, - { - "rule": "optional", - "type": "double", - "name": "axis_end_point", - "id": 9 - }, - { - "rule": "optional", - "type": "double", - "name": "xy_rotation", - "id": 10 - }, - { - "rule": "optional", - "type": "int32", - "name": "plane", - "id": 11 - }, - { - "rule": "optional", - "type": "double", - "name": "rate", - "id": 12 - }, - { - "rule": "optional", - "type": "int32", - "name": "feed_mode", - "id": 13 - }, - { - "rule": "optional", - "type": "double", - "name": "time", - "id": 14 - }, - { - "rule": "optional", - "type": "string", - "name": "text", - "id": 15 - }, - { - "rule": "optional", - "type": "double", - "name": "angular_units", - "id": 101 - }, - { - "rule": "optional", - "type": "double", - "name": "length_units", - "id": 102 - }, - { - "rule": "optional", - "type": "int32", - "name": "probetype", - "id": 103 - }, - { - "rule": "optional", - "type": "KinematicsType", - "name": "kins", - "id": 104, - "options": { - "default": "KT_JOINT" - } - }, - { - "rule": "optional", - "type": "int32", - "name": "axismask", - "id": 105 - }, - { - "rule": "optional", - "type": "int32", - "name": "g5_index", - "id": 106 - }, - { - "rule": "optional", - "type": "int32", - "name": "pocket", - "id": 107 - }, - { - "rule": "optional", - "type": "SourceType", - "name": "stype", - "id": 110 - }, - { - "rule": "optional", - "type": "string", - "name": "filename", - "id": 111 - }, - { - "rule": "optional", - "type": "string", - "name": "cmdstring", - "id": 112 - }, - { - "rule": "optional", - "type": "int32", - "name": "call_level", - "id": 113 - } - ] - }, - { - "name": "EmcToolData", - "options": { - "(nanopb_msgopt).msgid": 1100 - }, - "fields": [ - { - "rule": "required", - "type": "int32", - "name": "index", - "id": 1 - }, - { - "rule": "optional", - "type": "int32", - "name": "id", - "id": 2 - }, - { - "rule": "optional", - "type": "double", - "name": "diameter", - "id": 12 - }, - { - "rule": "optional", - "type": "double", - "name": "frontangle", - "id": 13 - }, - { - "rule": "optional", - "type": "double", - "name": "backangle", - "id": 14 - }, - { - "rule": "optional", - "type": "int32", - "name": "orientation", - "id": 15 - }, - { - "rule": "optional", - "type": "Position", - "name": "offset", - "id": 16 - } - ] - }, - { - "name": "EmcStatusMotionAxis", - "options": { - "(nanopb_msgopt).msgid": 1101 - }, - "fields": [ - { - "rule": "required", - "type": "int32", - "name": "index", - "id": 1 - }, - { - "rule": "optional", - "type": "bool", - "name": "enabled", - "id": 2 - }, - { - "rule": "optional", - "type": "bool", - "name": "fault", - "id": 3 - }, - { - "rule": "optional", - "type": "double", - "name": "ferror_current", - "id": 4 - }, - { - "rule": "optional", - "type": "double", - "name": "ferror_highmark", - "id": 5 - }, - { - "rule": "optional", - "type": "bool", - "name": "homed", - "id": 6 - }, - { - "rule": "optional", - "type": "bool", - "name": "homing", - "id": 7 - }, - { - "rule": "optional", - "type": "bool", - "name": "inpos", - "id": 8 - }, - { - "rule": "optional", - "type": "double", - "name": "input", - "id": 9 - }, - { - "rule": "optional", - "type": "bool", - "name": "max_hard_limit", - "id": 10 - }, - { - "rule": "optional", - "type": "bool", - "name": "max_soft_limit", - "id": 11 - }, - { - "rule": "optional", - "type": "bool", - "name": "min_hard_limit", - "id": 12 - }, - { - "rule": "optional", - "type": "bool", - "name": "min_soft_limit", - "id": 13 - }, - { - "rule": "optional", - "type": "double", - "name": "output", - "id": 14 - }, - { - "rule": "optional", - "type": "bool", - "name": "override_limits", - "id": 15 - }, - { - "rule": "optional", - "type": "double", - "name": "velocity", - "id": 16 - } - ] - }, - { - "name": "EmcStatusConfigAxis", - "options": { - "(nanopb_msgopt).msgid": 1102 - }, - "fields": [ - { - "rule": "required", - "type": "int32", - "name": "index", - "id": 1 - }, - { - "rule": "optional", - "type": "EmcAxisType", - "name": "axis_type", - "id": 2 - }, - { - "rule": "optional", - "type": "double", - "name": "backlash", - "id": 3 - }, - { - "rule": "optional", - "type": "double", - "name": "max_ferror", - "id": 4 - }, - { - "rule": "optional", - "type": "double", - "name": "max_position_limit", - "id": 5 - }, - { - "rule": "optional", - "type": "double", - "name": "min_ferror", - "id": 6 - }, - { - "rule": "optional", - "type": "double", - "name": "min_position_limit", - "id": 7 - }, - { - "rule": "optional", - "type": "int32", - "name": "home_sequence", - "id": 9 - }, - { - "rule": "optional", - "type": "double", - "name": "max_acceleration", - "id": 10 - }, - { - "rule": "optional", - "type": "double", - "name": "max_velocity", - "id": 11 - }, - { - "rule": "optional", - "type": "string", - "name": "increments", - "id": 12 - } - ] - }, - { - "name": "EmcProgramExtension", - "options": { - "(nanopb_msgopt).msgid": 1103 - }, - "fields": [ - { - "rule": "required", - "type": "int32", - "name": "index", - "id": 1 - }, - { - "rule": "optional", - "type": "string", - "name": "extension", - "id": 2 - } - ] - }, - { - "name": "EmcStatusAnalogIO", - "options": { - "(nanopb_msgopt).msgid": 1104 - }, - "fields": [ - { - "rule": "required", - "type": "int32", - "name": "index", - "id": 1 - }, - { - "rule": "optional", - "type": "double", - "name": "value", - "id": 2 - } - ] - }, - { - "name": "EmcStatusDigitalIO", - "options": { - "(nanopb_msgopt).msgid": 1105 - }, - "fields": [ - { - "rule": "required", - "type": "int32", - "name": "index", - "id": 1 - }, - { - "rule": "optional", - "type": "bool", - "name": "value", - "id": 2 - } - ] - }, - { - "name": "EmcStatusLimit", - "options": { - "(nanopb_msgopt).msgid": 1106 - }, - "fields": [ - { - "rule": "required", - "type": "int32", - "name": "index", - "id": 1 - }, - { - "rule": "optional", - "type": "int32", - "name": "value", - "id": 2 - } - ] - }, - { - "name": "EmcStatusGCode", - "options": { - "(nanopb_msgopt).msgid": 1107 - }, - "fields": [ - { - "rule": "required", - "type": "int32", - "name": "index", - "id": 1 - }, - { - "rule": "optional", - "type": "int32", - "name": "value", - "id": 2 - } - ] - }, - { - "name": "EmcStatusMCode", - "options": { - "(nanopb_msgopt).msgid": 1108 - }, - "fields": [ - { - "rule": "required", - "type": "int32", - "name": "index", - "id": 1 - }, - { - "rule": "optional", - "type": "int32", - "name": "value", - "id": 2 - } - ] - }, - { - "name": "EmcStatusSetting", - "options": { - "(nanopb_msgopt).msgid": 1109 - }, - "fields": [ - { - "rule": "required", - "type": "int32", - "name": "index", - "id": 1 - }, - { - "rule": "optional", - "type": "double", - "name": "value", - "id": 2 - } - ] - }, - { - "name": "EmcStatusConfig", - "options": { - "(nanopb_msgopt).msgid": 1110 - }, - "fields": [ - { - "rule": "optional", - "type": "double", - "name": "default_acceleration", - "id": 1 - }, - { - "rule": "optional", - "type": "int32", - "name": "axes", - "id": 3 - }, - { - "rule": "repeated", - "type": "EmcStatusConfigAxis", - "name": "axis", - "id": 4 - }, - { - "rule": "optional", - "type": "int32", - "name": "axis_mask", - "id": 5 - }, - { - "rule": "optional", - "type": "double", - "name": "cycle_time", - "id": 6 - }, - { - "rule": "optional", - "type": "int32", - "name": "debug", - "id": 7 - }, - { - "rule": "optional", - "type": "EmcKinematicsType", - "name": "kinematics_type", - "id": 8 - }, - { - "rule": "optional", - "type": "double", - "name": "max_acceleration", - "id": 10 - }, - { - "rule": "optional", - "type": "double", - "name": "max_velocity", - "id": 11 - }, - { - "rule": "optional", - "type": "EmcLinearUnitsType", - "name": "linear_units", - "id": 12 - }, - { - "rule": "optional", - "type": "double", - "name": "default_velocity", - "id": 13 - }, - { - "rule": "repeated", - "type": "EmcProgramExtension", - "name": "program_extension", - "id": 14 - }, - { - "rule": "optional", - "type": "EmcPositionOffsetType", - "name": "position_offset", - "id": 15 - }, - { - "rule": "optional", - "type": "EmcPositionFeedbackType", - "name": "position_feedback", - "id": 16 - }, - { - "rule": "optional", - "type": "double", - "name": "max_feed_override", - "id": 17 - }, - { - "rule": "optional", - "type": "double", - "name": "min_feed_override", - "id": 18 - }, - { - "rule": "optional", - "type": "double", - "name": "max_spindle_override", - "id": 19 - }, - { - "rule": "optional", - "type": "double", - "name": "min_spindle_override", - "id": 20 - }, - { - "rule": "optional", - "type": "double", - "name": "default_spindle_speed", - "id": 21 - }, - { - "rule": "optional", - "type": "double", - "name": "default_linear_velocity", - "id": 22 - }, - { - "rule": "optional", - "type": "double", - "name": "min_velocity", - "id": 23 - }, - { - "rule": "optional", - "type": "double", - "name": "max_linear_velocity", - "id": 24 - }, - { - "rule": "optional", - "type": "double", - "name": "min_linear_velocity", - "id": 25 - }, - { - "rule": "optional", - "type": "double", - "name": "default_angular_velocity", - "id": 26 - }, - { - "rule": "optional", - "type": "double", - "name": "max_angular_velocity", - "id": 27 - }, - { - "rule": "optional", - "type": "double", - "name": "min_angular_velocity", - "id": 28 - }, - { - "rule": "optional", - "type": "string", - "name": "increments", - "id": 29 - }, - { - "rule": "optional", - "type": "string", - "name": "grids", - "id": 30 - }, - { - "rule": "optional", - "type": "bool", - "name": "lathe", - "id": 31 - }, - { - "rule": "optional", - "type": "string", - "name": "geometry", - "id": 32 - }, - { - "rule": "optional", - "type": "uint32", - "name": "arcdivision", - "id": 33 - }, - { - "rule": "optional", - "type": "bool", - "name": "no_force_homing", - "id": 34 - }, - { - "rule": "optional", - "type": "string", - "name": "remote_path", - "id": 35 - }, - { - "rule": "optional", - "type": "EmcTimeUnitsType", - "name": "time_units", - "id": 36 - }, - { - "rule": "optional", - "type": "string", - "name": "name", - "id": 37 - }, - { - "rule": "repeated", - "type": "EmcStatusUserCommand", - "name": "user_command", - "id": 38 - }, - { - "rule": "optional", - "type": "EmcAngularUnitsType", - "name": "angular_units", - "id": 39 - } - ] - }, - { - "name": "EmcStatusMotion", - "options": { - "(nanopb_msgopt).msgid": 1111 - }, - "fields": [ - { - "rule": "optional", - "type": "int32", - "name": "active_queue", - "id": 1 - }, - { - "rule": "optional", - "type": "Position", - "name": "actual_position", - "id": 2 - }, - { - "rule": "optional", - "type": "bool", - "name": "adaptive_feed_enabled", - "id": 3 - }, - { - "rule": "repeated", - "type": "EmcStatusAnalogIO", - "name": "ain", - "id": 4 - }, - { - "rule": "repeated", - "type": "EmcStatusAnalogIO", - "name": "aout", - "id": 5 - }, - { - "rule": "repeated", - "type": "EmcStatusMotionAxis", - "name": "axis", - "id": 6 - }, - { - "rule": "optional", - "type": "bool", - "name": "block_delete", - "id": 7 - }, - { - "rule": "optional", - "type": "int32", - "name": "current_line", - "id": 8 - }, - { - "rule": "optional", - "type": "double", - "name": "current_vel", - "id": 9 - }, - { - "rule": "optional", - "type": "double", - "name": "delay_left", - "id": 10 - }, - { - "rule": "repeated", - "type": "EmcStatusDigitalIO", - "name": "din", - "id": 11 - }, - { - "rule": "optional", - "type": "double", - "name": "distance_to_go", - "id": 12 - }, - { - "rule": "repeated", - "type": "EmcStatusDigitalIO", - "name": "dout", - "id": 13 - }, - { - "rule": "optional", - "type": "Position", - "name": "dtg", - "id": 14 - }, - { - "rule": "optional", - "type": "bool", - "name": "enabled", - "id": 15 - }, - { - "rule": "optional", - "type": "bool", - "name": "feed_hold_enabled", - "id": 16 - }, - { - "rule": "optional", - "type": "bool", - "name": "feed_override_enabled", - "id": 17 - }, - { - "rule": "optional", - "type": "double", - "name": "feedrate", - "id": 18 - }, - { - "rule": "optional", - "type": "OriginIndex", - "name": "g5x_index", - "id": 19 - }, - { - "rule": "optional", - "type": "Position", - "name": "g5x_offset", - "id": 20 - }, - { - "rule": "optional", - "type": "Position", - "name": "g92_offset", - "id": 21 - }, - { - "rule": "optional", - "type": "int32", - "name": "id", - "id": 23 - }, - { - "rule": "optional", - "type": "bool", - "name": "inpos", - "id": 24 - }, - { - "rule": "optional", - "type": "Position", - "name": "joint_actual_position", - "id": 25 - }, - { - "rule": "optional", - "type": "Position", - "name": "joint_position", - "id": 26 - }, - { - "rule": "repeated", - "type": "EmcStatusLimit", - "name": "limit", - "id": 27 - }, - { - "rule": "optional", - "type": "int32", - "name": "motion_line", - "id": 28 - }, - { - "rule": "optional", - "type": "MotionType", - "name": "motion_type", - "id": 29 - }, - { - "rule": "optional", - "type": "EmcTrajectoryModeType", - "name": "motion_mode", - "id": 30 - }, - { - "rule": "optional", - "type": "bool", - "name": "paused", - "id": 31 - }, - { - "rule": "optional", - "type": "Position", - "name": "position", - "id": 32 - }, - { - "rule": "optional", - "type": "bool", - "name": "probe_tripped", - "id": 33 - }, - { - "rule": "optional", - "type": "int32", - "name": "probe_val", - "id": 34 - }, - { - "rule": "optional", - "type": "Position", - "name": "probed_position", - "id": 35 - }, - { - "rule": "optional", - "type": "bool", - "name": "probing", - "id": 36 - }, - { - "rule": "optional", - "type": "int32", - "name": "queue", - "id": 37 - }, - { - "rule": "optional", - "type": "bool", - "name": "queue_full", - "id": 38 - }, - { - "rule": "optional", - "type": "double", - "name": "rotation_xy", - "id": 39 - }, - { - "rule": "optional", - "type": "bool", - "name": "spindle_brake", - "id": 40 - }, - { - "rule": "optional", - "type": "int32", - "name": "spindle_direction", - "id": 41 - }, - { - "rule": "optional", - "type": "bool", - "name": "spindle_enabled", - "id": 42 - }, - { - "rule": "optional", - "type": "int32", - "name": "spindle_increasing", - "id": 43 - }, - { - "rule": "optional", - "type": "bool", - "name": "spindle_override_enabled", - "id": 44 - }, - { - "rule": "optional", - "type": "double", - "name": "spindle_speed", - "id": 45 - }, - { - "rule": "optional", - "type": "double", - "name": "spindlerate", - "id": 46 - }, - { - "rule": "optional", - "type": "RCS_STATUS", - "name": "state", - "id": 47 - }, - { - "rule": "optional", - "type": "double", - "name": "max_velocity", - "id": 48 - }, - { - "rule": "optional", - "type": "double", - "name": "max_acceleration", - "id": 49 - } - ] - }, - { - "name": "EmcStatusIo", - "options": { - "(nanopb_msgopt).msgid": 1112 - }, - "fields": [ - { - "rule": "optional", - "type": "bool", - "name": "estop", - "id": 1 - }, - { - "rule": "optional", - "type": "bool", - "name": "flood", - "id": 2 - }, - { - "rule": "optional", - "type": "bool", - "name": "lube", - "id": 3 - }, - { - "rule": "optional", - "type": "bool", - "name": "lube_level", - "id": 4 - }, - { - "rule": "optional", - "type": "bool", - "name": "mist", - "id": 5 - }, - { - "rule": "optional", - "type": "bool", - "name": "pocket_prepped", - "id": 6 - }, - { - "rule": "optional", - "type": "bool", - "name": "tool_in_spindle", - "id": 7 - }, - { - "rule": "optional", - "type": "Position", - "name": "tool_offset", - "id": 8 - }, - { - "rule": "repeated", - "type": "EmcToolData", - "name": "tool_table", - "id": 9 - } - ] - }, - { - "name": "EmcStatusTask", - "options": { - "(nanopb_msgopt).msgid": 1113 - }, - "fields": [ - { - "rule": "optional", - "type": "int32", - "name": "echo_serial_number", - "id": 1 - }, - { - "rule": "optional", - "type": "EmcTaskExecStateType", - "name": "exec_state", - "id": 2 - }, - { - "rule": "optional", - "type": "string", - "name": "file", - "id": 3 - }, - { - "rule": "optional", - "type": "bool", - "name": "input_timeout", - "id": 4 - }, - { - "rule": "optional", - "type": "bool", - "name": "optional_stop", - "id": 5 - }, - { - "rule": "optional", - "type": "int32", - "name": "read_line", - "id": 6 - }, - { - "rule": "optional", - "type": "EmcTaskModeType", - "name": "task_mode", - "id": 7 - }, - { - "rule": "optional", - "type": "int32", - "name": "task_paused", - "id": 8 - }, - { - "rule": "optional", - "type": "EmcTaskStateType", - "name": "task_state", - "id": 9 - }, - { - "rule": "optional", - "type": "int32", - "name": "total_lines", - "id": 10 - } - ] - }, - { - "name": "EmcStatusInterp", - "options": { - "(nanopb_msgopt).msgid": 1114 - }, - "fields": [ - { - "rule": "optional", - "type": "string", - "name": "command", - "id": 1 - }, - { - "rule": "repeated", - "type": "EmcStatusGCode", - "name": "gcodes", - "id": 2 - }, - { - "rule": "optional", - "type": "EmcInterpStateType", - "name": "interp_state", - "id": 3 - }, - { - "rule": "optional", - "type": "EmcInterpExitCodeType", - "name": "interpreter_errcode", - "id": 4 - }, - { - "rule": "repeated", - "type": "EmcStatusMCode", - "name": "mcodes", - "id": 5 - }, - { - "rule": "repeated", - "type": "EmcStatusSetting", - "name": "settings", - "id": 6 - }, - { - "rule": "optional", - "type": "EmcCanonUnitsType", - "name": "program_units", - "id": 7 - } - ] - }, - { - "name": "EmcCommandParameters", - "options": { - "(nanopb_msgopt).msgid": 1115 - }, - "fields": [ - { - "rule": "optional", - "type": "uint32", - "name": "index", - "id": 1 - }, - { - "rule": "optional", - "type": "uint32", - "name": "debug_level", - "id": 2 - }, - { - "rule": "optional", - "type": "int32", - "name": "line_number", - "id": 3 - }, - { - "rule": "optional", - "type": "double", - "name": "scale", - "id": 4 - }, - { - "rule": "optional", - "type": "double", - "name": "velocity", - "id": 5 - }, - { - "rule": "optional", - "type": "double", - "name": "distance", - "id": 6 - }, - { - "rule": "optional", - "type": "double", - "name": "value", - "id": 7 - }, - { - "rule": "optional", - "type": "bool", - "name": "enable", - "id": 8 - }, - { - "rule": "optional", - "type": "string", - "name": "command", - "id": 9 - }, - { - "rule": "optional", - "type": "string", - "name": "path", - "id": 10 - }, - { - "rule": "optional", - "type": "EmcTaskModeType", - "name": "task_mode", - "id": 100 - }, - { - "rule": "optional", - "type": "EmcTaskStateType", - "name": "task_state", - "id": 101 - }, - { - "rule": "optional", - "type": "EmcTrajectoryModeType", - "name": "traj_mode", - "id": 102 - }, - { - "rule": "optional", - "type": "EmcPose", - "name": "pose", - "id": 103 - }, - { - "rule": "optional", - "type": "EmcToolData", - "name": "tool_data", - "id": 104 - } - ] - }, - { - "name": "EmcStatusUserCommand", - "options": { - "(nanopb_msgopt).msgid": 1116 - }, - "fields": [ - { - "rule": "required", - "type": "int32", - "name": "index", - "id": 1 - }, - { - "rule": "optional", - "type": "string", - "name": "command", - "id": 2 - } - ] - }, - { - "name": "Container", - "options": { - "(nanopb_msgopt).msgid": 500 - }, - "fields": [ - { - "rule": "required", - "type": "ContainerType", - "name": "type", - "id": 1 - }, - { - "rule": "optional", - "type": "sfixed64", - "name": "tsc", - "id": 7 - }, - { - "rule": "repeated", - "type": "Preview", - "name": "preview", - "id": 8, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "optional", - "type": "MotionCommand", - "name": "motcmd", - "id": 9 - }, - { - "rule": "optional", - "type": "MotionStatus", - "name": "motstat", - "id": 10 - }, - { - "rule": "optional", - "type": "bytes", - "name": "legacy_motcmd", - "id": 11, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "optional", - "type": "bytes", - "name": "legacy_motstat", - "id": 12, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "optional", - "type": "RTAPI_Message", - "name": "rtapi_message", - "id": 13 - }, - { - "rule": "optional", - "type": "TaskReply", - "name": "task_reply", - "id": 14, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "optional", - "type": "TicketUpdate", - "name": "ticket_update", - "id": 15 - }, - { - "rule": "optional", - "type": "bytes", - "name": "syslog", - "id": 18, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "optional", - "type": "bytes", - "name": "legacy_nml", - "id": 19, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "optional", - "type": "bytes", - "name": "legacy_motconfig", - "id": 20, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "optional", - "type": "int32", - "name": "tv_sec", - "id": 21 - }, - { - "rule": "optional", - "type": "int32", - "name": "tv_nsec", - "id": 22 - }, - { - "rule": "optional", - "type": "string", - "name": "topic", - "id": 23 - }, - { - "rule": "optional", - "type": "bool", - "name": "reply_required", - "id": 24 - }, - { - "rule": "optional", - "type": "InterpreterStateType", - "name": "interp_state", - "id": 25, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "optional", - "type": "string", - "name": "interp_name", - "id": 26 - }, - { - "rule": "optional", - "type": "int32", - "name": "rsvp", - "id": 30 - }, - { - "rule": "optional", - "type": "ContainerType", - "name": "in_reply_to", - "id": 33 - }, - { - "rule": "optional", - "type": "RCS_STATUS", - "name": "rcs_status", - "id": 35 - }, - { - "rule": "optional", - "type": "StatusType", - "name": "status", - "id": 40 - }, - { - "rule": "optional", - "type": "int32", - "name": "serial", - "id": 45 - }, - { - "rule": "optional", - "type": "int32", - "name": "reply_serial", - "id": 50 - }, - { - "rule": "optional", - "type": "int32", - "name": "ticket", - "id": 55 - }, - { - "rule": "optional", - "type": "int32", - "name": "reply_ticket", - "id": 60 - }, - { - "rule": "optional", - "type": "int32", - "name": "sequence", - "id": 62 - }, - { - "rule": "optional", - "type": "int32", - "name": "credit", - "id": 65 - }, - { - "rule": "optional", - "type": "int32", - "name": "line_number", - "id": 66 - }, - { - "rule": "optional", - "type": "string", - "name": "name", - "id": 67, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "repeated", - "type": "string", - "name": "note", - "id": 68 - }, - { - "rule": "optional", - "type": "int32", - "name": "retcode", - "id": 69 - }, - { - "rule": "optional", - "type": "bytes", - "name": "uuid", - "id": 72, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "optional", - "type": "bool", - "name": "trace", - "id": 75 - }, - { - "rule": "optional", - "type": "int32", - "name": "instance", - "id": 77 - }, - { - "rule": "repeated", - "type": "Value", - "name": "value", - "id": 85, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "optional", - "type": "RTAPICommand", - "name": "rtapicmd", - "id": 86, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "repeated", - "type": "ServiceAnnouncement", - "name": "service_announcement", - "id": 88, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "repeated", - "type": "Component", - "name": "comp", - "id": 100, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "repeated", - "type": "Pin", - "name": "pin", - "id": 2, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "repeated", - "type": "Signal", - "name": "signal", - "id": 3, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "repeated", - "type": "Param", - "name": "param", - "id": 103, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "repeated", - "type": "Thread", - "name": "thread", - "id": 104, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "repeated", - "type": "Ring", - "name": "ring", - "id": 105, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "repeated", - "type": "Group", - "name": "group", - "id": 106, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "repeated", - "type": "Member", - "name": "member", - "id": 107, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "repeated", - "type": "Function", - "name": "function", - "id": 108, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "optional", - "type": "ProtocolParameters", - "name": "pparams", - "id": 109, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "repeated", - "type": "Vtable", - "name": "vtable", - "id": 110, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "repeated", - "type": "Inst", - "name": "inst", - "id": 111, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "repeated", - "type": "Application", - "name": "app", - "id": 120, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "repeated", - "type": "Launcher", - "name": "launcher", - "id": 130, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "optional", - "type": "int32", - "name": "index", - "id": 131, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "optional", - "type": "LogMessage", - "name": "log_message", - "id": 87, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "optional", - "type": "TaskPlanExecute", - "name": "tpexecute", - "id": 200, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "optional", - "type": "TaskPlanBlockDelete", - "name": "tpblockdelete", - "id": 201, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "optional", - "type": "TaskPlanOptionalStop", - "name": "tpoptionalstop", - "id": 202, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "optional", - "type": "TaskPlanOpen", - "name": "tpopen", - "id": 203, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "optional", - "type": "TaskPlanReply", - "name": "taskplan_reply", - "id": 210, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "optional", - "type": "Emc_Traj_Set_G5x", - "name": "traj_set_g5x", - "id": 300 - }, - { - "rule": "optional", - "type": "Emc_Traj_Set_G92", - "name": "traj_set_g92", - "id": 310 - }, - { - "rule": "optional", - "type": "Emc_Traj_Set_Rotation", - "name": "traj_set_rotation", - "id": 320 - }, - { - "rule": "optional", - "type": "Emc_Traj_Linear_Move", - "name": "traj_linear_move", - "id": 330 - }, - { - "rule": "optional", - "type": "Emc_Traj_Probe", - "name": "traj_probe", - "id": 340 - }, - { - "rule": "optional", - "type": "Emc_Traj_Circular_Move", - "name": "traj_circular_move", - "id": 350 - }, - { - "rule": "optional", - "type": "Emc_Traj_Rigid_Tap", - "name": "traj_rigid_tap", - "id": 360 - }, - { - "rule": "optional", - "type": "Emc_Traj_Set_Term_Cond", - "name": "traj_set_term_cond", - "id": 370 - }, - { - "rule": "optional", - "type": "Emc_Traj_Set_Spindlesync", - "name": "traj_set_spindlesync", - "id": 380 - }, - { - "rule": "optional", - "type": "Emc_Traj_Delay", - "name": "traj_delay", - "id": 390 - }, - { - "rule": "optional", - "type": "Emc_Spindle_On", - "name": "spindle_on", - "id": 400 - }, - { - "rule": "optional", - "type": "Emc_Spindle_Speed", - "name": "spindle_speed", - "id": 410 - }, - { - "rule": "optional", - "type": "Emc_Spindle_Orient", - "name": "spindle_orient", - "id": 420 - }, - { - "rule": "optional", - "type": "Emc_Spindle_Wait_Orient_Complete", - "name": "spindle_wait_orient_complete", - "id": 430 - }, - { - "rule": "optional", - "type": "Emc_Tool_Set_Offset", - "name": "tool_set_offet", - "id": 440 - }, - { - "rule": "optional", - "type": "Emc_Traj_Set_Offset", - "name": "traj_set_offset", - "id": 450 - }, - { - "rule": "optional", - "type": "Emc_Tool_Prepare", - "name": "tool_prepare", - "id": 460 - }, - { - "rule": "optional", - "type": "Emc_Tool_Set_Number", - "name": "tool_set_number", - "id": 470 - }, - { - "rule": "optional", - "type": "Emc_Traj_Set_Fo_Enable", - "name": "traj_set_fo_enable", - "id": 480 - }, - { - "rule": "optional", - "type": "Emc_Traj_Set_So_Enable", - "name": "traj_set_so_enable", - "id": 490 - }, - { - "rule": "optional", - "type": "Emc_Traj_Set_Fh_Enable", - "name": "traj_set_fh_enable", - "id": 500 - }, - { - "rule": "optional", - "type": "Emc_Motion_Adaptive", - "name": "motion_adaptive", - "id": 510 - }, - { - "rule": "optional", - "type": "Emc_Operator_Display", - "name": "operator_display", - "id": 520 - }, - { - "rule": "optional", - "type": "Emc_Operator_Text", - "name": "operator_text", - "id": 530 - }, - { - "rule": "optional", - "type": "Emc_Operator_Error", - "name": "operator_error", - "id": 540 - }, - { - "rule": "optional", - "type": "Emc_Motion_Set_Dout", - "name": "motion_set_dout", - "id": 550 - }, - { - "rule": "optional", - "type": "Emc_Motion_Set_Aout", - "name": "motion_set_aout", - "id": 560 - }, - { - "rule": "optional", - "type": "Emc_Aux_Input_Wait", - "name": "aux_input_wait", - "id": 570 - }, - { - "rule": "optional", - "type": "Emc_Exec_Plugin_Ca1l", - "name": "exec_plugin_call", - "id": 580 - }, - { - "rule": "optional", - "type": "Emc_Io_Plugin_Call", - "name": "io_plugin_call", - "id": 590 - }, - { - "rule": "optional", - "type": "EmcStatusConfig", - "name": "emc_status_config", - "id": 600, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "optional", - "type": "EmcStatusMotion", - "name": "emc_status_motion", - "id": 601, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "optional", - "type": "EmcStatusIo", - "name": "emc_status_io", - "id": 602, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "optional", - "type": "EmcStatusTask", - "name": "emc_status_task", - "id": 603, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "optional", - "type": "EmcStatusInterp", - "name": "emc_status_interp", - "id": 604, - "options": { - "(nanopb).type": "FT_IGNORE" - } - }, - { - "rule": "optional", - "type": "EmcCommandParameters", - "name": "emc_command_params", - "id": 610, - "options": { - "(nanopb).type": "FT_IGNORE" - } - } - ] - }, - { - "name": "MyMessage", - "fields": [ - { - "rule": "optional", - "type": "int32", - "name": "easy", - "id": 1 - } - ] - }, - { - "ref": "Container", - "fields": [ - { - "rule": "optional", - "type": "MyMessage", - "name": "testus", - "id": 1000 - } - ] - } - ], - "enums": [ - { - "name": "ValueType", - "values": [ - { - "name": "HAL_BIT", - "id": 1 - }, - { - "name": "HAL_FLOAT", - "id": 2 - }, - { - "name": "HAL_S32", - "id": 3 - }, - { - "name": "HAL_U32", - "id": 4 - }, - { - "name": "STRING", - "id": 5 - }, - { - "name": "BYTES", - "id": 6 - }, - { - "name": "INT32", - "id": 20 - }, - { - "name": "UINT32", - "id": 30 - }, - { - "name": "INT64", - "id": 40 - }, - { - "name": "UINT64", - "id": 50 - }, - { - "name": "DOUBLE", - "id": 60 - }, - { - "name": "BOOL", - "id": 80 - }, - { - "name": "CARTESIAN", - "id": 100 - }, - { - "name": "LEGACY_CARTESIAN", - "id": 110 - }, - { - "name": "POSE", - "id": 120 - }, - { - "name": "LEGACY_POSE", - "id": 130 - } - ] - }, - { - "name": "HalPinDirection", - "values": [ - { - "name": "HAL_IN", - "id": 16 - }, - { - "name": "HAL_OUT", - "id": 32 - }, - { - "name": "HAL_IO", - "id": 48 - } - ] - }, - { - "name": "HalParamDirection", - "values": [ - { - "name": "HAL_RO", - "id": 64 - }, - { - "name": "HAL_RW", - "id": 192 - } - ] - }, - { - "name": "ObjectType", - "values": [ - { - "name": "HAL_PIN", - "id": 1 - }, - { - "name": "HAL_SIGNAL", - "id": 2 - }, - { - "name": "HAL_PARAM", - "id": 3 - }, - { - "name": "HAL_THREAD", - "id": 4 - }, - { - "name": "HAL_FUNCT", - "id": 5 - }, - { - "name": "HAL_ALIAS", - "id": 6 - }, - { - "name": "HAL_COMP_RT", - "id": 7 - }, - { - "name": "HAL_COMP_USER", - "id": 8 - }, - { - "name": "HAL_COMP_REMOTE", - "id": 9 - }, - { - "name": "HAL_RING", - "id": 10 - }, - { - "name": "HAL_GROUP", - "id": 11 - }, - { - "name": "HAL_MEMBER_SIGNAL", - "id": 12 - }, - { - "name": "HAL_MEMBER_GROUP", - "id": 13 - }, - { - "name": "HAL_MEMBER_PIN", - "id": 14 - }, - { - "name": "HAL_MEMBER_PARAM", - "id": 15 - }, - { - "name": "RING_RECORD", - "id": 16 - }, - { - "name": "RING_STREAM", - "id": 17 - }, - { - "name": "HAL_VTABLE", - "id": 18 - }, - { - "name": "HAL_INST", - "id": 19 - }, - { - "name": "RING_MULTIFRAME", - "id": 20 - }, - { - "name": "VALUE", - "id": 120 - }, - { - "name": "INSTANCE", - "id": 121 - }, - { - "name": "ORIGINATOR", - "id": 122 - }, - { - "name": "NAMED_VALUE", - "id": 125 - }, - { - "name": "OT_ERROR", - "id": 130 - } - ] - }, - { - "name": "RCS_STATUS", - "values": [ - { - "name": "UNINITIALIZED_STATUS", - "id": -1 - }, - { - "name": "RCS_DONE", - "id": 1 - }, - { - "name": "RCS_EXEC", - "id": 2 - }, - { - "name": "RCS_ERROR", - "id": 3 - }, - { - "name": "RCS_RECEIVED", - "id": 4 - } - ] - }, - { - "name": "MsgOrigin", - "values": [ - { - "name": "MSG_KERNEL", - "id": 0 - }, - { - "name": "MSG_RTUSER", - "id": 1 - }, - { - "name": "MSG_ULAPI", - "id": 2 - } - ] - }, - { - "name": "MsgLevel", - "values": [ - { - "name": "RTAPI_MSG_NONE", - "id": 0 - }, - { - "name": "RTAPI_MSG_ERR", - "id": 1 - }, - { - "name": "RTAPI_MSG_WARN", - "id": 2 - }, - { - "name": "RTAPI_MSG_INFO", - "id": 3 - }, - { - "name": "RTAPI_MSG_DBG", - "id": 4 - }, - { - "name": "RTAPI_MSG_ALL", - "id": 5 - } - ] - }, - { - "name": "OriginDetail", - "values": [ - { - "name": "UNIX_SIGNAL", - "id": 10 - }, - { - "name": "INSTANCE_SHUTDOWN", - "id": 20 - }, - { - "name": "ZMQ_SOCKET", - "id": 70 - }, - { - "name": "NML_LAYER", - "id": 80 - }, - { - "name": "RCS_LAYER", - "id": 90 - }, - { - "name": "CMS_LAYER", - "id": 100 - }, - { - "name": "IP_LAYER", - "id": 110 - }, - { - "name": "TCP_LAYER", - "id": 120 - }, - { - "name": "PGM_LAYER", - "id": 130 - } - ] - }, - { - "name": "OriginType", - "values": [ - { - "name": "PROCESS", - "id": 10 - }, - { - "name": "USER_THREAD", - "id": 20 - }, - { - "name": "RT_THREAD", - "id": 30 - }, - { - "name": "COMPONENT", - "id": 40 - }, - { - "name": "THREAD_FUNCTION", - "id": 50 - }, - { - "name": "COMPONENT_INIT", - "id": 60 - }, - { - "name": "COMPONENT_EXIT", - "id": 70 - }, - { - "name": "GROUP", - "id": 80 - }, - { - "name": "PIN", - "id": 90 - }, - { - "name": "SIGNAL", - "id": 100 - } - ] - }, - { - "name": "Severity", - "values": [ - { - "name": "S_INFORMATIONAL", - "id": 1 - }, - { - "name": "S_WARNING", - "id": 2 - }, - { - "name": "S_FAIL", - "id": 4 - } - ] - }, - { - "name": "StatusType", - "values": [ - { - "name": "ENQUEUED", - "id": 1 - }, - { - "name": "PROCESSING", - "id": 2 - }, - { - "name": "COMPLETE", - "id": 3 - }, - { - "name": "FAILED", - "id": 4 - } - ] - }, - { - "name": "ReplyType", - "values": [ - { - "name": "NONE", - "id": 0 - }, - { - "name": "ON_RECEPTION", - "id": 1 - }, - { - "name": "ON_QUEUED", - "id": 2 - }, - { - "name": "ON_COMPLETION", - "id": 4 - }, - { - "name": "ALL_STEPS", - "id": 255 - } - ] - }, - { - "name": "ServiceType", - "values": [ - { - "name": "ST_LOGGING", - "id": 1 - }, - { - "name": "ST_CONFIG", - "id": 2 - }, - { - "name": "ST_REDIS", - "id": 3 - }, - { - "name": "ST_HTTP", - "id": 4 - }, - { - "name": "ST_HTTPS", - "id": 5 - }, - { - "name": "ST_WEBSOCKET", - "id": 6 - }, - { - "name": "ST_WEBSOCKETS", - "id": 7 - }, - { - "name": "ST_RTAPI_COMMAND", - "id": 8 - }, - { - "name": "ST_STP_HALGROUP", - "id": 9 - }, - { - "name": "ST_STP_HALRCOMP", - "id": 10 - }, - { - "name": "ST_STP_INTERP", - "id": 11 - }, - { - "name": "ST_STP_TASK", - "id": 12 - }, - { - "name": "ST_HAL_RCOMMAND", - "id": 13 - }, - { - "name": "ST_TASK_COMMAND", - "id": 14 - }, - { - "name": "ST_INTERP_COMMAND", - "id": 15 - }, - { - "name": "ST_MESSAGEBUS_COMMAND", - "id": 16 - }, - { - "name": "ST_MESSAGEBUS_RESPONSE", - "id": 17 - } - ] - }, - { - "name": "ServiceAPI", - "values": [ - { - "name": "SA_ZMQ_PROTOBUF", - "id": 1 - }, - { - "name": "SA_WS_JSON", - "id": 2 - } - ] - }, - { - "name": "ContainerType", - "values": [ - { - "name": "MT_RTMESSAGE", - "id": 2 - }, - { - "name": "MT_MOTCMD", - "id": 3 - }, - { - "name": "MT_MOTSTATUS", - "id": 4 - }, - { - "name": "MT_LEGACY_MOTCMD", - "id": 5 - }, - { - "name": "MT_LEGACY_MOTSTATUS", - "id": 6 - }, - { - "name": "MT_WOU", - "id": 7 - }, - { - "name": "MT_HALUPDATE", - "id": 8 - }, - { - "name": "MT_RTAPI_MESSAGE", - "id": 9 - }, - { - "name": "MT_LOG_MESSAGE", - "id": 10 - }, - { - "name": "MT_PREVIEW", - "id": 11 - }, - { - "name": "MT_PROGRESS", - "id": 12 - }, - { - "name": "MT_INTERP_STAT", - "id": 13 - }, - { - "name": "MT_SYSLOG", - "id": 18 - }, - { - "name": "MT_LEGACY_NML", - "id": 19 - }, - { - "name": "MT_LEGACY_MOTCONFIG", - "id": 20 - }, - { - "name": "MT_STP_UPDATE_FULL", - "id": 26 - }, - { - "name": "MT_STP_UPDATE", - "id": 28 - }, - { - "name": "MT_STP_NOGROUP", - "id": 27 - }, - { - "name": "MT_SHUTDOWN", - "id": 45 - }, - { - "name": "MT_CONFIRM_SHUTDOWN", - "id": 50 - }, - { - "name": "MT_RTMESSAGE0", - "id": 30 - }, - { - "name": "MT_RTMESSAGE1", - "id": 31 - }, - { - "name": "MT_RTMESSAGE2", - "id": 32 - }, - { - "name": "MT_RTMESSAGE3", - "id": 33 - }, - { - "name": "MT_RTMESSAGE4", - "id": 34 - }, - { - "name": "MT_ASCII", - "id": 100 - }, - { - "name": "MT_UNICODE", - "id": 101 - }, - { - "name": "MT_GCODE", - "id": 102 - }, - { - "name": "MT_PYTHON", - "id": 103 - }, - { - "name": "MT_PICKLE", - "id": 104 - }, - { - "name": "MT_TCL", - "id": 105 - }, - { - "name": "MT_XML", - "id": 106 - }, - { - "name": "MT_JSON", - "id": 107 - }, - { - "name": "MT_JPEG", - "id": 108 - }, - { - "name": "MT_PNG", - "id": 109 - }, - { - "name": "MT_TIFF", - "id": 110 - }, - { - "name": "MT_POSTSCRIPT", - "id": 111 - }, - { - "name": "MT_SVG", - "id": 112 - }, - { - "name": "MT_ZMQ_SUBSCRIBE", - "id": 150 - }, - { - "name": "MT_ZMQ_UNSUBSCRIBE", - "id": 151 - }, - { - "name": "MT_PING", - "id": 210 - }, - { - "name": "MT_PING_ACKNOWLEDGE", - "id": 215 - }, - { - "name": "MT_REJECT", - "id": 220 - }, - { - "name": "MT_DONE", - "id": 240 - }, - { - "name": "MT_SERVICE_REQUEST", - "id": 250 - }, - { - "name": "MT_SERVICE_ANNOUNCEMENT", - "id": 251 - }, - { - "name": "MT_SERVICE_PROBE", - "id": 252 - }, - { - "name": "MT_MESSAGEBUS_NO_DESTINATION", - "id": 255 - }, - { - "name": "MT_HALRCOMP_BIND", - "id": 256 - }, - { - "name": "MT_HALRCOMP_BIND_CONFIRM", - "id": 257 - }, - { - "name": "MT_HALRCOMP_BIND_REJECT", - "id": 258 - }, - { - "name": "MT_HALRCOMP_SET", - "id": 259 - }, - { - "name": "MT_HALRCOMP_SET_REJECT", - "id": 260 - }, - { - "name": "MT_HALRCOMP_ACK", - "id": 263 - }, - { - "name": "MT_HALRCOMMAND_SET", - "id": 265 - }, - { - "name": "MT_HALRCOMMAND_SET_REJECT", - "id": 266 - }, - { - "name": "MT_HALRCOMMAND_GET", - "id": 267 - }, - { - "name": "MT_HALRCOMMAND_GET_REJECT", - "id": 268 - }, - { - "name": "MT_HALRCOMMAND_CREATE", - "id": 269 - }, - { - "name": "MT_HALRCOMMAND_CREATE_REJECT", - "id": 270 - }, - { - "name": "MT_HALRCOMMAND_DELETE", - "id": 271 - }, - { - "name": "MT_HALRCOMMAND_DELETE_REJECT", - "id": 272 - }, - { - "name": "MT_HALRCOMMAND_ACK", - "id": 273 - }, - { - "name": "MT_HALRCOMMAND_ERROR", - "id": 274 - }, - { - "name": "MT_HALRCOMMAND_DESCRIBE", - "id": 276 - }, - { - "name": "MT_HALRCOMMAND_DESCRIPTION", - "id": 277 - }, - { - "name": "MT_HALRCOMP_FULL_UPDATE", - "id": 288 - }, - { - "name": "MT_HALRCOMP_INCREMENTAL_UPDATE", - "id": 289 - }, - { - "name": "MT_HALRCOMP_ERROR", - "id": 290 - }, - { - "name": "MT_HALGROUP_BIND", - "id": 294 - }, - { - "name": "MT_HALGROUP_BIND_CONFIRM", - "id": 295 - }, - { - "name": "MT_HALGROUP_BIND_REJECT", - "id": 296 - }, - { - "name": "MT_HALGROUP_FULL_UPDATE", - "id": 297 - }, - { - "name": "MT_HALGROUP_INCREMENTAL_UPDATE", - "id": 298 - }, - { - "name": "MT_HALGROUP_ERROR", - "id": 299 - }, - { - "name": "MT_RTAPI_APP_EXIT", - "id": 300 - }, - { - "name": "MT_RTAPI_APP_PING", - "id": 301 - }, - { - "name": "MT_RTAPI_APP_LOADRT", - "id": 302 - }, - { - "name": "MT_RTAPI_APP_LOG", - "id": 303 - }, - { - "name": "MT_RTAPI_APP_UNLOADRT", - "id": 305 - }, - { - "name": "MT_RTAPI_APP_NEWINST", - "id": 306 - }, - { - "name": "MT_RTAPI_APP_NEWTHREAD", - "id": 307 - }, - { - "name": "MT_RTAPI_APP_DELTHREAD", - "id": 308 - }, - { - "name": "MT_RTAPI_APP_CALLFUNC", - "id": 309 - }, - { - "name": "MT_RTAPI_APP_REPLY", - "id": 310 - }, - { - "name": "MT_RTAPI_APP_DELINST", - "id": 311 - }, - { - "name": "MT_LIST_APPLICATIONS", - "id": 350 - }, - { - "name": "MT_DESCRIBE_APPLICATION", - "id": 351 - }, - { - "name": "MT_RETRIEVE_APPLICATION", - "id": 352 - }, - { - "name": "MT_APPLICATION_DETAIL", - "id": 353 - }, - { - "name": "MT_ERROR", - "id": 360 - }, - { - "name": "MT_FULL_UPDATE", - "id": 370 - }, - { - "name": "MT_INCREMENTAL_UPDATE", - "id": 371 - }, - { - "name": "MT_TASK_REPLY", - "id": 400 - }, - { - "name": "MT_TICKET_UPDATE", - "id": 401 - }, - { - "name": "MT_CREDIT_UPDATE", - "id": 450 - }, - { - "name": "MT_EMCMOT_LOWER", - "id": 1000 - }, - { - "name": "MT_EMCMOT_UPPER", - "id": 1100 - }, - { - "name": "MT_EMCMOT_ABORT", - "id": 1001 - }, - { - "name": "MT_EMCMOT_AXIS_ABORT", - "id": 1002 - }, - { - "name": "MT_EMCMOT_ENABLE", - "id": 1003 - }, - { - "name": "MT_EMCMOT_DISABLE", - "id": 1004 - }, - { - "name": "MT_EMCMOT_ENABLE_AMPLIFIER", - "id": 1005 - }, - { - "name": "MT_EMCMOT_DISABLE_AMPLIFIER", - "id": 1006 - }, - { - "name": "MT_EMCMOT_ENABLE_WATCHDOG", - "id": 1007 - }, - { - "name": "MT_EMCMOT_DISABLE_WATCHDOG", - "id": 1008 - }, - { - "name": "MT_EMCMOT_ACTIVATE_JOINT", - "id": 1009 - }, - { - "name": "MT_EMCMOT_DEACTIVATE_JOINT", - "id": 1010 - }, - { - "name": "MT_EMCMOT_PAUSE", - "id": 1011 - }, - { - "name": "MT_EMCMOT_RESUME", - "id": 1012 - }, - { - "name": "MT_EMCMOT_STEP", - "id": 1013 - }, - { - "name": "MT_EMCMOT_FREE", - "id": 1014 - }, - { - "name": "MT_EMCMOT_COORD", - "id": 1015 - }, - { - "name": "MT_EMCMOT_TELEOP", - "id": 1016 - }, - { - "name": "MT_EMCMOT_SPINDLE_SCALE", - "id": 1017 - }, - { - "name": "MT_EMCMOT_SS_ENABLE", - "id": 1018 - }, - { - "name": "MT_EMCMOT_FEED_SCALE", - "id": 1019 - }, - { - "name": "MT_EMCMOT_FS_ENABLE", - "id": 1020 - }, - { - "name": "MT_EMCMOT_FH_ENABLE", - "id": 1021 - }, - { - "name": "MT_EMCMOT_AF_ENABLE", - "id": 1022 - }, - { - "name": "MT_EMCMOT_OVERRIDE_LIMITS", - "id": 1023 - }, - { - "name": "MT_EMCMOT_HOME", - "id": 1024 - }, - { - "name": "MT_EMCMOT_UNHOME", - "id": 1025 - }, - { - "name": "MT_EMCMOT_JOG_CONT", - "id": 1026 - }, - { - "name": "MT_EMCMOT_JOG_INCR", - "id": 1027 - }, - { - "name": "MT_EMCMOT_JOG_ABS", - "id": 1028 - }, - { - "name": "MT_EMCMOT_SET_LINE", - "id": 1029 - }, - { - "name": "MT_EMCMOT_SET_CIRCLE", - "id": 1030 - }, - { - "name": "MT_EMCMOT_SET_TELEOP_VECTOR", - "id": 1031 - }, - { - "name": "MT_EMCMOT_CLEAR_PROBE_FLAGS", - "id": 1032 - }, - { - "name": "MT_EMCMOT_PROBE", - "id": 1033 - }, - { - "name": "MT_EMCMOT_RIGID_TAP", - "id": 1034 - }, - { - "name": "MT_EMCMOT_SET_POSITION_LIMITS", - "id": 1035 - }, - { - "name": "MT_EMCMOT_SET_BACKLASH", - "id": 1036 - }, - { - "name": "MT_EMCMOT_SET_MIN_FERROR", - "id": 1037 - }, - { - "name": "MT_EMCMOT_SET_MAX_FERROR", - "id": 1038 - }, - { - "name": "MT_EMCMOT_SET_VEL", - "id": 1039 - }, - { - "name": "MT_EMCMOT_SET_VEL_LIMIT", - "id": 1040 - }, - { - "name": "MT_EMCMOT_SET_JOINT_VEL_LIMIT", - "id": 1041 - }, - { - "name": "MT_EMCMOT_SET_JOINT_ACC_LIMIT", - "id": 1042 - }, - { - "name": "MT_EMCMOT_SET_ACC", - "id": 1043 - }, - { - "name": "MT_EMCMOT_SET_TERM_COND", - "id": 1044 - }, - { - "name": "MT_EMCMOT_SET_NUM_AXES", - "id": 1045 - }, - { - "name": "MT_EMCMOT_SET_WORLD_HOME", - "id": 1046 - }, - { - "name": "MT_EMCMOT_SET_HOMING_PARAMS", - "id": 1047 - }, - { - "name": "MT_EMCMOT_SET_DEBUG", - "id": 1048 - }, - { - "name": "MT_EMCMOT_SET_DOUT", - "id": 1049 - }, - { - "name": "MT_EMCMOT_SET_AOUT", - "id": 1050 - }, - { - "name": "MT_EMCMOT_SET_SPINDLESYNC", - "id": 1051 - }, - { - "name": "MT_EMCMOT_SPINDLE_ON", - "id": 1052 - }, - { - "name": "MT_EMCMOT_SPINDLE_OFF", - "id": 1053 - }, - { - "name": "MT_EMCMOT_SPINDLE_INCREASE", - "id": 1054 - }, - { - "name": "MT_EMCMOT_SPINDLE_DECREASE", - "id": 1055 - }, - { - "name": "MT_EMCMOT_SPINDLE_BRAKE_ENGAGE", - "id": 1056 - }, - { - "name": "MT_EMCMOT_SPINDLE_BRAKE_RELEASE", - "id": 1057 - }, - { - "name": "MT_EMCMOT_SET_MOTOR_OFFSET", - "id": 1058 - }, - { - "name": "MT_EMCMOT_SET_JOINT_COMP", - "id": 1059 - }, - { - "name": "MT_EMCMOT_SET_OFFSET", - "id": 1060 - }, - { - "name": "MT_EMCMOT_COMMAND_OK", - "id": 1061 - }, - { - "name": "MT_EMCMOT_COMMAND_UNKNOWN_COMMAND", - "id": 1062 - }, - { - "name": "MT_EMCMOT_COMMAND_INVALID_COMMAND", - "id": 1063 - }, - { - "name": "MT_EMCMOT_COMMAND_INVALID_PARAMS", - "id": 1064 - }, - { - "name": "MT_EMCMOT_COMMAND_BAD_EXEC", - "id": 1065 - }, - { - "name": "MT_EMCMOT_MOTION_DISABLED", - "id": 1066 - }, - { - "name": "MT_EMCMOT_MOTION_FREE", - "id": 1067 - }, - { - "name": "MT_EMCMOT_MOTION_TELEOP", - "id": 1068 - }, - { - "name": "MT_EMCMOT_MOTION_COORD", - "id": 1069 - }, - { - "name": "MT_EMCMOT_JOINT_FLAG", - "id": 1070 - }, - { - "name": "MT_EMCMOT_MOTION_FLAG", - "id": 1071 - }, - { - "name": "MT_PRU_FIRMWARE", - "id": 2048 - }, - { - "name": "MT_MESA_5I20_FIRMWARE", - "id": 3000 - }, - { - "name": "MT_BLOB", - "id": 4000 - }, - { - "name": "MT_TEST1", - "id": 5001 - }, - { - "name": "MT_TEST2", - "id": 5002 - }, - { - "name": "MT_TEST3", - "id": 5003 - }, - { - "name": "MT_EMC_NML_LOWER", - "id": 10000 - }, - { - "name": "MT_EMC_NML_UPPER", - "id": 13000 - }, - { - "name": "MT_EMC_OPERATOR_ERROR", - "id": 10011 - }, - { - "name": "MT_EMC_OPERATOR_TEXT", - "id": 10012 - }, - { - "name": "MT_EMC_OPERATOR_DISPLAY", - "id": 10013 - }, - { - "name": "MT_EMC_NULL", - "id": 10021 - }, - { - "name": "MT_EMC_SET_DEBUG", - "id": 10022 - }, - { - "name": "MT_EMC_SYSTEM_CMD", - "id": 10030 - }, - { - "name": "MT_EMC_AXIS_SET_AXIS", - "id": 10101 - }, - { - "name": "MT_EMC_AXIS_SET_UNITS", - "id": 10102 - }, - { - "name": "MT_EMC_AXIS_SET_MIN_POSITION_LIMIT", - "id": 10107 - }, - { - "name": "MT_EMC_AXIS_SET_MAX_POSITION_LIMIT", - "id": 10108 - }, - { - "name": "MT_EMC_TOOL_START_CHANGE", - "id": 1110 - }, - { - "name": "MT_EMC_EXEC_PLUGIN_CALL", - "id": 1112 - }, - { - "name": "MT_EMC_IO_PLUGIN_CALL", - "id": 1113 - }, - { - "name": "MT_EMC_AXIS_SET_FERROR", - "id": 10111 - }, - { - "name": "MT_EMC_AXIS_SET_HOMING_PARAMS", - "id": 10112 - }, - { - "name": "MT_EMC_AXIS_SET_MIN_FERROR", - "id": 10115 - }, - { - "name": "MT_EMC_AXIS_SET_MAX_VELOCITY", - "id": 10116 - }, - { - "name": "MT_EMC_AXIS_INIT", - "id": 10118 - }, - { - "name": "MT_EMC_AXIS_HALT", - "id": 10119 - }, - { - "name": "MT_EMC_AXIS_ABORT", - "id": 10120 - }, - { - "name": "MT_EMC_AXIS_ENABLE", - "id": 10121 - }, - { - "name": "MT_EMC_AXIS_DISABLE", - "id": 10122 - }, - { - "name": "MT_EMC_AXIS_HOME", - "id": 10123 - }, - { - "name": "MT_EMC_AXIS_UNHOME", - "id": 10135 - }, - { - "name": "MT_EMC_AXIS_JOG", - "id": 10124 - }, - { - "name": "MT_EMC_AXIS_INCR_JOG", - "id": 10125 - }, - { - "name": "MT_EMC_AXIS_ABS_JOG", - "id": 10126 - }, - { - "name": "MT_EMC_AXIS_ACTIVATE", - "id": 10127 - }, - { - "name": "MT_EMC_AXIS_DEACTIVATE", - "id": 10128 - }, - { - "name": "MT_EMC_AXIS_OVERRIDE_LIMITS", - "id": 10129 - }, - { - "name": "MT_EMC_AXIS_LOAD_COMP", - "id": 10131 - }, - { - "name": "MT_EMC_AXIS_SET_BACKLASH", - "id": 10134 - }, - { - "name": "MT_EMC_AXIS_STAT", - "id": 10199 - }, - { - "name": "MT_EMC_TRAJ_SET_AXES", - "id": 10201 - }, - { - "name": "MT_EMC_TRAJ_SET_UNITS", - "id": 10202 - }, - { - "name": "MT_EMC_TRAJ_SET_CYCLE_TIME", - "id": 10203 - }, - { - "name": "MT_EMC_TRAJ_SET_MODE", - "id": 10204 - }, - { - "name": "MT_EMC_TRAJ_SET_VELOCITY", - "id": 10205 - }, - { - "name": "MT_EMC_TRAJ_SET_ACCELERATION", - "id": 10206 - }, - { - "name": "MT_EMC_TRAJ_SET_MAX_VELOCITY", - "id": 10207 - }, - { - "name": "MT_EMC_TRAJ_SET_MAX_ACCELERATION", - "id": 10208 - }, - { - "name": "MT_EMC_TRAJ_SET_SCALE", - "id": 10209 - }, - { - "name": "MT_EMC_TRAJ_SET_MOTION_ID", - "id": 10210 - }, - { - "name": "MT_EMC_TRAJ_INIT", - "id": 10211 - }, - { - "name": "MT_EMC_TRAJ_HALT", - "id": 10212 - }, - { - "name": "MT_EMC_TRAJ_ENABLE", - "id": 10213 - }, - { - "name": "MT_EMC_TRAJ_DISABLE", - "id": 10214 - }, - { - "name": "MT_EMC_TRAJ_ABORT", - "id": 10215 - }, - { - "name": "MT_EMC_TRAJ_PAUSE", - "id": 10216 - }, - { - "name": "MT_EMC_TRAJ_STEP", - "id": 10217 - }, - { - "name": "MT_EMC_TRAJ_RESUME", - "id": 10218 - }, - { - "name": "MT_EMC_TRAJ_DELAY", - "id": 10219 - }, - { - "name": "MT_EMC_TRAJ_LINEAR_MOVE", - "id": 10220 - }, - { - "name": "MT_EMC_TRAJ_CIRCULAR_MOVE", - "id": 10221 - }, - { - "name": "MT_EMC_TRAJ_SET_TERM_COND", - "id": 10222 - }, - { - "name": "MT_EMC_TRAJ_SET_OFFSET", - "id": 10223 - }, - { - "name": "MT_EMC_TRAJ_SET_G5X", - "id": 10224 - }, - { - "name": "MT_EMC_TRAJ_SET_HOME", - "id": 10225 - }, - { - "name": "MT_EMC_TRAJ_SET_ROTATION", - "id": 10226 - }, - { - "name": "MT_EMC_TRAJ_SET_G92", - "id": 10227 - }, - { - "name": "MT_EMC_TRAJ_CLEAR_PROBE_TRIPPED_FLAG", - "id": 10228 - }, - { - "name": "MT_EMC_TRAJ_PROBE", - "id": 10229 - }, - { - "name": "MT_EMC_TRAJ_SET_TELEOP_ENABLE", - "id": 10230 - }, - { - "name": "MT_EMC_TRAJ_SET_TELEOP_VECTOR", - "id": 10231 - }, - { - "name": "MT_EMC_TRAJ_SET_SPINDLESYNC", - "id": 10232 - }, - { - "name": "MT_EMC_TRAJ_SET_SPINDLE_SCALE", - "id": 10233 - }, - { - "name": "MT_EMC_TRAJ_SET_FO_ENABLE", - "id": 10234 - }, - { - "name": "MT_EMC_TRAJ_SET_SO_ENABLE", - "id": 10235 - }, - { - "name": "MT_EMC_TRAJ_SET_FH_ENABLE", - "id": 10236 - }, - { - "name": "MT_EMC_TRAJ_RIGID_TAP", - "id": 10237 - }, - { - "name": "MT_EMC_TRAJ_STAT", - "id": 10299 - }, - { - "name": "MT_EMC_MOTION_INIT", - "id": 10301 - }, - { - "name": "MT_EMC_MOTION_HALT", - "id": 10302 - }, - { - "name": "MT_EMC_MOTION_ABORT", - "id": 10303 - }, - { - "name": "MT_EMC_MOTION_SET_AOUT", - "id": 10304 - }, - { - "name": "MT_EMC_MOTION_SET_DOUT", - "id": 10305 - }, - { - "name": "MT_EMC_MOTION_ADAPTIVE", - "id": 10306 - }, - { - "name": "MT_EMC_SPINDLE_ORIENT", - "id": 10317 - }, - { - "name": "MT_EMC_SPINDLE_WAIT_ORIENT_COMPLETE", - "id": 10318 - }, - { - "name": "MT_EMC_MOTION_STAT", - "id": 10399 - }, - { - "name": "MT_EMC_TASK_INIT", - "id": 10501 - }, - { - "name": "MT_EMC_TASK_HALT", - "id": 10502 - }, - { - "name": "MT_EMC_TASK_ABORT", - "id": 10503 - }, - { - "name": "MT_EMC_TASK_SET_MODE", - "id": 10504 - }, - { - "name": "MT_EMC_TASK_SET_STATE", - "id": 10505 - }, - { - "name": "MT_EMC_TASK_PLAN_OPEN", - "id": 10506 - }, - { - "name": "MT_EMC_TASK_PLAN_RUN", - "id": 10507 - }, - { - "name": "MT_EMC_TASK_PLAN_READ", - "id": 10508 - }, - { - "name": "MT_EMC_TASK_PLAN_EXECUTE", - "id": 10509 - }, - { - "name": "MT_EMC_TASK_PLAN_PAUSE", - "id": 10510 - }, - { - "name": "MT_EMC_TASK_PLAN_STEP", - "id": 10511 - }, - { - "name": "MT_EMC_TASK_PLAN_RESUME", - "id": 10512 - }, - { - "name": "MT_EMC_TASK_PLAN_END", - "id": 10513 - }, - { - "name": "MT_EMC_TASK_PLAN_CLOSE", - "id": 10514 - }, - { - "name": "MT_EMC_TASK_PLAN_INIT", - "id": 10515 - }, - { - "name": "MT_EMC_TASK_PLAN_SYNCH", - "id": 10516 - }, - { - "name": "MT_EMC_TASK_PLAN_SET_OPTIONAL_STOP", - "id": 10517 - }, - { - "name": "MT_EMC_TASK_PLAN_SET_BLOCK_DELETE", - "id": 10518 - }, - { - "name": "MT_EMC_TASK_PLAN_OPTIONAL_STOP", - "id": 10519 - }, - { - "name": "MT_EMC_TASK_PLAN_RESET", - "id": 10520 - }, - { - "name": "MT_EMC_TASK_PLAN_REPLY", - "id": 10530 - }, - { - "name": "MT_EMC_TASK_STAT", - "id": 10599 - }, - { - "name": "MT_EMC_TOOL_INIT", - "id": 11101 - }, - { - "name": "MT_EMC_TOOL_HALT", - "id": 11102 - }, - { - "name": "MT_EMC_TOOL_ABORT", - "id": 11103 - }, - { - "name": "MT_EMC_TOOL_PREPARE", - "id": 11104 - }, - { - "name": "MT_EMC_TOOL_LOAD", - "id": 11105 - }, - { - "name": "MT_EMC_TOOL_UNLOAD", - "id": 11106 - }, - { - "name": "MT_EMC_TOOL_LOAD_TOOL_TABLE", - "id": 11107 - }, - { - "name": "MT_EMC_TOOL_SET_OFFSET", - "id": 11108 - }, - { - "name": "MT_EMC_TOOL_SET_NUMBER", - "id": 11109 - }, - { - "name": "MT_EMC_TOOL_STAT", - "id": 11199 - }, - { - "name": "MT_EMC_AUX_ESTOP_ON", - "id": 11206 - }, - { - "name": "MT_EMC_AUX_ESTOP_OFF", - "id": 11207 - }, - { - "name": "MT_EMC_AUX_ESTOP_RESET", - "id": 11208 - }, - { - "name": "MT_EMC_AUX_INPUT_WAIT", - "id": 11209 - }, - { - "name": "MT_EMC_AUX_STAT", - "id": 11299 - }, - { - "name": "MT_EMC_SPINDLE_ON", - "id": 11304 - }, - { - "name": "MT_EMC_SPINDLE_OFF", - "id": 11305 - }, - { - "name": "MT_EMC_SPINDLE_INCREASE", - "id": 11309 - }, - { - "name": "MT_EMC_SPINDLE_DECREASE", - "id": 11310 - }, - { - "name": "MT_EMC_SPINDLE_CONSTANT", - "id": 11311 - }, - { - "name": "MT_EMC_SPINDLE_BRAKE_RELEASE", - "id": 11312 - }, - { - "name": "MT_EMC_SPINDLE_BRAKE_ENGAGE", - "id": 11313 - }, - { - "name": "MT_EMC_SPINDLE_SPEED", - "id": 11316 - }, - { - "name": "MT_EMC_SPINDLE_STAT", - "id": 11399 - }, - { - "name": "MT_EMC_COOLANT_MIST_ON", - "id": 11404 - }, - { - "name": "MT_EMC_COOLANT_MIST_OFF", - "id": 11405 - }, - { - "name": "MT_EMC_COOLANT_FLOOD_ON", - "id": 11406 - }, - { - "name": "MT_EMC_COOLANT_FLOOD_OFF", - "id": 11407 - }, - { - "name": "MT_EMC_COOLANT_STAT", - "id": 11499 - }, - { - "name": "MT_EMC_LUBE_ON", - "id": 11504 - }, - { - "name": "MT_EMC_LUBE_OFF", - "id": 11505 - }, - { - "name": "MT_EMC_LUBE_STAT", - "id": 11599 - }, - { - "name": "MT_EMC_IO_INIT", - "id": 11601 - }, - { - "name": "MT_EMC_IO_HALT", - "id": 11602 - }, - { - "name": "MT_EMC_IO_ABORT", - "id": 11603 - }, - { - "name": "MT_EMC_IO_SET_CYCLE_TIME", - "id": 11604 - }, - { - "name": "MT_EMC_IO_STAT", - "id": 11699 - }, - { - "name": "MT_EMC_INIT", - "id": 11901 - }, - { - "name": "MT_EMC_HALT", - "id": 11902 - }, - { - "name": "MT_EMC_ABORT", - "id": 11903 - }, - { - "name": "MT_EMC_STAT", - "id": 11999 - }, - { - "name": "MT_EMCSTAT_FULL_UPDATE", - "id": 12500 - }, - { - "name": "MT_EMCSTAT_INCREMENTAL_UPDATE", - "id": 12501 - }, - { - "name": "MT_EMC_NML_ERROR", - "id": 12510 - }, - { - "name": "MT_EMC_NML_TEXT", - "id": 12511 - }, - { - "name": "MT_EMC_NML_DISPLAY", - "id": 12512 - }, - { - "name": "MT_EMCCMD_EXECUTED", - "id": 12520 - }, - { - "name": "MT_EMCCMD_COMPLETED", - "id": 12521 - }, - { - "name": "MT_LAUNCHER_FULL_UPDATE", - "id": 12600 - }, - { - "name": "MT_LAUNCHER_INCREMENTAL_UPDATE", - "id": 12601 - }, - { - "name": "MT_LAUNCHER_ERROR", - "id": 12602 - }, - { - "name": "MT_LAUNCHER_START", - "id": 12610 - }, - { - "name": "MT_LAUNCHER_TERMINATE", - "id": 12611 - }, - { - "name": "MT_LAUNCHER_KILL", - "id": 12612 - }, - { - "name": "MT_LAUNCHER_WRITE_STDIN", - "id": 12613 - }, - { - "name": "MT_LAUNCHER_CALL", - "id": 12614 - }, - { - "name": "MT_LAUNCHER_SHUTDOWN", - "id": 12615 - } - ] - }, - { - "name": "OriginIndex", - "values": [ - { - "name": "ORIGIN_UNKNOWN", - "id": 0 - }, - { - "name": "ORIGIN_G54", - "id": 1 - }, - { - "name": "ORIGIN_G55", - "id": 2 - }, - { - "name": "ORIGIN_G56", - "id": 3 - }, - { - "name": "ORIGIN_G57", - "id": 4 - }, - { - "name": "ORIGIN_G58", - "id": 5 - }, - { - "name": "ORIGIN_G59", - "id": 6 - }, - { - "name": "ORIGIN_G59_1", - "id": 7 - }, - { - "name": "ORIGIN_G59_2", - "id": 8 - }, - { - "name": "ORIGIN_G59_3", - "id": 9 - } - ] - }, - { - "name": "TermConditionType", - "values": [ - { - "name": "_EMC_TRAJ_TERM_COND_STOP", - "id": 1 - }, - { - "name": "_EMC_TRAJ_TERM_COND_BLEND", - "id": 2 - } - ] - }, - { - "name": "CanonDirection", - "values": [ - { - "name": "_CANON_STOPPED", - "id": 1 - }, - { - "name": "_CANON_CLOCKWISE", - "id": 2 - }, - { - "name": "_CANON_COUNTERCLOCKWISE", - "id": 3 - } - ] - }, - { - "name": "InputType", - "values": [ - { - "name": "_ANALOG_INPUT", - "id": 0 - }, - { - "name": "_DIGITAL_INPUT", - "id": 1 - } - ] - }, - { - "name": "WaitType", - "values": [ - { - "name": "IMMEDIATE", - "id": 0 - }, - { - "name": "RISE", - "id": 1 - }, - { - "name": "FALL", - "id": 2 - }, - { - "name": "BE_HIGH", - "id": 3 - }, - { - "name": "BE_LOW", - "id": 4 - } - ] - }, - { - "name": "InterpreterStateType", - "values": [ - { - "name": "INTERP_IDLE", - "id": 1 - }, - { - "name": "INTERP_RUNNING", - "id": 2 - }, - { - "name": "INTERP_SYNC_WAIT", - "id": 3 - }, - { - "name": "INTERP_PAUSED", - "id": 4 - }, - { - "name": "INTERP_QUEUE_WAIT", - "id": 5 - }, - { - "name": "INTERP_ABORT_WAIT", - "id": 6 - }, - { - "name": "INTERP_STATE_UNSET", - "id": 99 - } - ] - }, - { - "name": "MotionType", - "values": [ - { - "name": "_EMC_MOTION_TYPE_NONE", - "id": 0 - }, - { - "name": "_EMC_MOTION_TYPE_TRAVERSE", - "id": 1 - }, - { - "name": "_EMC_MOTION_TYPE_FEED", - "id": 2 - }, - { - "name": "_EMC_MOTION_TYPE_ARC", - "id": 3 - }, - { - "name": "_EMC_MOTION_TYPE_TOOLCHANGE", - "id": 4 - }, - { - "name": "_EMC_MOTION_TYPE_PROBING", - "id": 5 - }, - { - "name": "_EMC_MOTION_TYPE_INDEXROTARY", - "id": 6 - } - ] - }, - { - "name": "cmd_code_t", - "values": [ - { - "name": "EMCMOT_ABORT", - "id": 4000 - }, - { - "name": "EMCMOT_AXIS_ABORT", - "id": 4001 - }, - { - "name": "EMCMOT_ENABLE", - "id": 4002 - }, - { - "name": "EMCMOT_DISABLE", - "id": 4003 - }, - { - "name": "EMCMOT_ENABLE_AMPLIFIER", - "id": 4004 - }, - { - "name": "EMCMOT_DISABLE_AMPLIFIER", - "id": 4005 - }, - { - "name": "EMCMOT_ENABLE_WATCHDOG", - "id": 4006 - }, - { - "name": "EMCMOT_DISABLE_WATCHDOG", - "id": 4007 - }, - { - "name": "EMCMOT_ACTIVATE_JOINT", - "id": 4008 - }, - { - "name": "EMCMOT_DEACTIVATE_JOINT", - "id": 4009 - }, - { - "name": "EMCMOT_PAUSE", - "id": 4010 - }, - { - "name": "EMCMOT_RESUME", - "id": 4011 - }, - { - "name": "EMCMOT_STEP", - "id": 4012 - }, - { - "name": "EMCMOT_FREE", - "id": 4013 - }, - { - "name": "EMCMOT_COORD", - "id": 4014 - }, - { - "name": "EMCMOT_TELEOP", - "id": 4015 - }, - { - "name": "EMCMOT_SPINDLE_SCALE", - "id": 4016 - }, - { - "name": "EMCMOT_SS_ENABLE", - "id": 4017 - }, - { - "name": "EMCMOT_FEED_SCALE", - "id": 4018 - }, - { - "name": "EMCMOT_FS_ENABLE", - "id": 4019 - }, - { - "name": "EMCMOT_FH_ENABLE", - "id": 4020 - }, - { - "name": "EMCMOT_AF_ENABLE", - "id": 4021 - }, - { - "name": "EMCMOT_OVERRIDE_LIMITS", - "id": 4022 - }, - { - "name": "EMCMOT_HOME", - "id": 4023 - }, - { - "name": "EMCMOT_UNHOME", - "id": 4024 - }, - { - "name": "EMCMOT_JOG_CONT", - "id": 4025 - }, - { - "name": "EMCMOT_JOG_INCR", - "id": 4026 - }, - { - "name": "EMCMOT_JOG_ABS", - "id": 4027 - }, - { - "name": "EMCMOT_SET_LINE", - "id": 4028 - }, - { - "name": "EMCMOT_SET_CIRCLE", - "id": 4029 - }, - { - "name": "EMCMOT_SET_TELEOP_VECTOR", - "id": 4030 - }, - { - "name": "EMCMOT_CLEAR_PROBE_FLAGS", - "id": 4031 - }, - { - "name": "EMCMOT_PROBE", - "id": 4032 - }, - { - "name": "EMCMOT_RIGID_TAP", - "id": 4033 - }, - { - "name": "EMCMOT_SET_POSITION_LIMITS", - "id": 4034 - }, - { - "name": "EMCMOT_SET_BACKLASH", - "id": 4035 - }, - { - "name": "EMCMOT_SET_MIN_FERROR", - "id": 4036 - }, - { - "name": "EMCMOT_SET_MAX_FERROR", - "id": 4037 - }, - { - "name": "EMCMOT_SET_VEL", - "id": 4038 - }, - { - "name": "EMCMOT_SET_VEL_LIMIT", - "id": 4039 - }, - { - "name": "EMCMOT_SET_JOINT_VEL_LIMIT", - "id": 4040 - }, - { - "name": "EMCMOT_SET_JOINT_ACC_LIMIT", - "id": 4041 - }, - { - "name": "EMCMOT_SET_ACC", - "id": 4042 - }, - { - "name": "EMCMOT_SET_TERM_COND", - "id": 4043 - }, - { - "name": "EMCMOT_SET_NUM_AXES", - "id": 4044 - }, - { - "name": "EMCMOT_SET_WORLD_HOME", - "id": 4045 - }, - { - "name": "EMCMOT_SET_HOMING_PARAMS", - "id": 4046 - }, - { - "name": "EMCMOT_SET_DEBUG", - "id": 4047 - }, - { - "name": "EMCMOT_SET_DOUT", - "id": 4048 - }, - { - "name": "EMCMOT_SET_AOUT", - "id": 4049 - }, - { - "name": "EMCMOT_SET_SPINDLESYNC", - "id": 4050 - }, - { - "name": "EMCMOT_SPINDLE_ON", - "id": 4051 - }, - { - "name": "EMCMOT_SPINDLE_OFF", - "id": 4052 - }, - { - "name": "EMCMOT_SPINDLE_INCREASE", - "id": 4053 - }, - { - "name": "EMCMOT_SPINDLE_DECREASE", - "id": 4054 - }, - { - "name": "EMCMOT_SPINDLE_BRAKE_ENGAGE", - "id": 4055 - }, - { - "name": "EMCMOT_SPINDLE_BRAKE_RELEASE", - "id": 4056 - }, - { - "name": "EMCMOT_SET_MOTOR_OFFSET", - "id": 4057 - }, - { - "name": "EMCMOT_SET_JOINT_COMP", - "id": 4058 - }, - { - "name": "EMCMOT_SET_OFFSET", - "id": 4059 - } - ] - }, - { - "name": "cmd_status_t", - "values": [ - { - "name": "EMCMOT_COMMAND_OK", - "id": 0 - }, - { - "name": "EMCMOT_COMMAND_UNKNOWN_COMMAND", - "id": 1 - }, - { - "name": "EMCMOT_COMMAND_INVALID_COMMAND", - "id": 2 - }, - { - "name": "EMCMOT_COMMAND_INVALID_PARAMS", - "id": 3 - }, - { - "name": "EMCMOT_COMMAND_BAD_EXEC", - "id": 4 - } - ] - }, - { - "name": "ApplicationType", - "values": [ - { - "name": "QT5_QML", - "id": 1 - }, - { - "name": "GLADEVCP", - "id": 2 - }, - { - "name": "JAVASCRIPT", - "id": 3 - } - ] - }, - { - "name": "FileContent", - "values": [ - { - "name": "CLEARTEXT", - "id": 1 - }, - { - "name": "ZLIB", - "id": 2 - } - ] - }, - { - "name": "KinematicsType", - "values": [ - { - "name": "KT_JOINT", - "id": 1 - }, - { - "name": "KT_TRIVKINS", - "id": 2 - }, - { - "name": "KT_DELTA", - "id": 3 - } - ] - }, - { - "name": "PreviewOpType", - "values": [ - { - "name": "PV_STRAIGHT_PROBE", - "id": 1 - }, - { - "name": "PV_RIGID_TAP", - "id": 2 - }, - { - "name": "PV_STRAIGHT_FEED", - "id": 3 - }, - { - "name": "PV_ARC_FEED", - "id": 4 - }, - { - "name": "PV_STRAIGHT_TRAVERSE", - "id": 5 - }, - { - "name": "PV_SET_G5X_OFFSET", - "id": 6 - }, - { - "name": "PV_SET_G92_OFFSET", - "id": 7 - }, - { - "name": "PV_SET_XY_ROTATION", - "id": 8 - }, - { - "name": "PV_SELECT_PLANE", - "id": 9 - }, - { - "name": "PV_SET_TRAVERSE_RATE", - "id": 10 - }, - { - "name": "PV_SET_FEED_RATE", - "id": 11 - }, - { - "name": "PV_CHANGE_TOOL", - "id": 12 - }, - { - "name": "PV_CHANGE_TOOL_NUMBER", - "id": 13 - }, - { - "name": "PV_DWELL", - "id": 14 - }, - { - "name": "PV_MESSAGE", - "id": 15 - }, - { - "name": "PV_COMMENT", - "id": 16 - }, - { - "name": "PV_USE_TOOL_OFFSET", - "id": 17 - }, - { - "name": "PV_SET_PARAMS", - "id": 18 - }, - { - "name": "PV_SET_FEED_MODE", - "id": 19 - }, - { - "name": "PV_SOURCE_CONTEXT", - "id": 20 - } - ] - }, - { - "name": "SourceType", - "values": [ - { - "name": "ST_NGC_FILE", - "id": 1 + "id": 4013 }, { - "name": "ST_NGC_STRING", - "id": 2 + "name": "EMCMOT_COORD", + "id": 4014 }, { - "name": "ST_PYTHON_METHOD", - "id": 3 - } - ] - }, - { - "name": "EmcTaskExecStateType", - "values": [ + "name": "EMCMOT_TELEOP", + "id": 4015 + }, { - "name": "EMC_TASK_EXEC_ERROR", - "id": 1 + "name": "EMCMOT_SPINDLE_SCALE", + "id": 4016 }, { - "name": "EMC_TASK_EXEC_DONE", - "id": 2 + "name": "EMCMOT_SS_ENABLE", + "id": 4017 }, { - "name": "EMC_TASK_EXEC_WAITING_FOR_MOTION", - "id": 3 + "name": "EMCMOT_FEED_SCALE", + "id": 4018 }, { - "name": "EMC_TASK_EXEC_WAITING_FOR_MOTION_QUEUE", - "id": 4 + "name": "EMCMOT_FS_ENABLE", + "id": 4019 }, { - "name": "EMC_TASK_EXEC_WAITING_FOR_IO", - "id": 5 + "name": "EMCMOT_FH_ENABLE", + "id": 4020 }, { - "name": "EMC_TASK_EXEC_WAITING_FOR_MOTION_AND_IO", - "id": 7 + "name": "EMCMOT_AF_ENABLE", + "id": 4021 }, { - "name": "EMC_TASK_EXEC_WAITING_FOR_DELAY", - "id": 8 + "name": "EMCMOT_OVERRIDE_LIMITS", + "id": 4022 }, { - "name": "EMC_TASK_EXEC_WAITING_FOR_SYSTEM_CMD", - "id": 9 + "name": "EMCMOT_HOME", + "id": 4023 }, { - "name": "EMC_TASK_EXEC_WAITING_FOR_SPINDLE_ORIENTED", - "id": 10 - } - ] - }, - { - "name": "EmcInterpStateType", - "values": [ + "name": "EMCMOT_UNHOME", + "id": 4024 + }, { - "name": "EMC_TASK_INTERP_IDLE", - "id": 1 + "name": "EMCMOT_JOG_CONT", + "id": 4025 }, { - "name": "EMC_TASK_INTERP_READING", - "id": 2 + "name": "EMCMOT_JOG_INCR", + "id": 4026 }, { - "name": "EMC_TASK_INTERP_PAUSED", - "id": 3 + "name": "EMCMOT_JOG_ABS", + "id": 4027 }, { - "name": "EMC_TASK_INTERP_WAITING", - "id": 4 - } - ] - }, - { - "name": "EmcInterpExitCodeType", - "values": [ + "name": "EMCMOT_SET_LINE", + "id": 4028 + }, { - "name": "EMC_INTERP_EXIT_OK", - "id": 0 + "name": "EMCMOT_SET_CIRCLE", + "id": 4029 }, { - "name": "EMC_INTERP_EXIT_EXIT", - "id": 1 + "name": "EMCMOT_SET_TELEOP_VECTOR", + "id": 4030 }, { - "name": "EMC_INTERP_EXIT_EXECUTE_FINISH", - "id": 2 + "name": "EMCMOT_CLEAR_PROBE_FLAGS", + "id": 4031 }, { - "name": "EMC_INTERP_EXIT_ENDFILE", - "id": 3 + "name": "EMCMOT_PROBE", + "id": 4032 }, { - "name": "EMC_INTERP_EXIT_FILE_NOT_OPEN", - "id": 4 + "name": "EMCMOT_RIGID_TAP", + "id": 4033 }, { - "name": "EMC_INTERP_EXIT_ERROR", - "id": 5 - } - ] - }, - { - "name": "EmcKinematicsType", - "values": [ + "name": "EMCMOT_SET_POSITION_LIMITS", + "id": 4034 + }, { - "name": "KINEMATICS_IDENTITY", - "id": 1 + "name": "EMCMOT_SET_BACKLASH", + "id": 4035 }, { - "name": "KINEMATICS_FORWARD_ONLY", - "id": 2 + "name": "EMCMOT_SET_MIN_FERROR", + "id": 4036 }, { - "name": "KINEMATICS_INVERSE_ONLY", - "id": 3 + "name": "EMCMOT_SET_MAX_FERROR", + "id": 4037 }, { - "name": "KINEMATICS_BOTH", - "id": 4 - } - ] - }, - { - "name": "EmcTrajectoryModeType", - "values": [ + "name": "EMCMOT_SET_VEL", + "id": 4038 + }, { - "name": "EMC_TRAJ_MODE_FREE", - "id": 1 + "name": "EMCMOT_SET_VEL_LIMIT", + "id": 4039 }, { - "name": "EMC_TRAJ_MODE_COORD", - "id": 2 + "name": "EMCMOT_SET_JOINT_VEL_LIMIT", + "id": 4040 }, { - "name": "EMC_TRAJ_MODE_TELEOP", - "id": 3 - } - ] - }, - { - "name": "EmcCanonUnitsType", - "values": [ + "name": "EMCMOT_SET_JOINT_ACC_LIMIT", + "id": 4041 + }, { - "name": "CANON_UNITS_INCHES", - "id": 1 + "name": "EMCMOT_SET_ACC", + "id": 4042 }, { - "name": "CANON_UNITS_MM", - "id": 2 + "name": "EMCMOT_SET_TERM_COND", + "id": 4043 }, { - "name": "CANON_UNITS_CM", - "id": 3 - } - ] - }, - { - "name": "EmcLinearUnitsType", - "values": [ + "name": "EMCMOT_SET_NUM_AXES", + "id": 4044 + }, { - "name": "LINEAR_UNITS_INCHES", - "id": 1 + "name": "EMCMOT_SET_WORLD_HOME", + "id": 4045 }, { - "name": "LINEAR_UNITS_MM", - "id": 2 + "name": "EMCMOT_SET_HOMING_PARAMS", + "id": 4046 }, { - "name": "LINEAR_UNITS_CM", - "id": 3 - } - ] - }, - { - "name": "EmcAngularUnitsType", - "values": [ + "name": "EMCMOT_SET_DEBUG", + "id": 4047 + }, { - "name": "ANGULAR_UNITS_DEGREES", - "id": 1 + "name": "EMCMOT_SET_DOUT", + "id": 4048 }, { - "name": "ANGULAR_UNITS_RADIAN", - "id": 2 + "name": "EMCMOT_SET_AOUT", + "id": 4049 }, { - "name": "ANGULAR_UNITS_GRAD", - "id": 3 - } - ] - }, - { - "name": "EmcTimeUnitsType", - "values": [ + "name": "EMCMOT_SET_SPINDLESYNC", + "id": 4050 + }, { - "name": "TIME_UNITS_MINUTE", - "id": 1 + "name": "EMCMOT_SPINDLE_ON", + "id": 4051 }, { - "name": "TIME_UNITS_SECOND", - "id": 2 - } - ] - }, - { - "name": "EmcTaskModeType", - "values": [ + "name": "EMCMOT_SPINDLE_OFF", + "id": 4052 + }, { - "name": "EMC_TASK_MODE_MANUAL", - "id": 1 + "name": "EMCMOT_SPINDLE_INCREASE", + "id": 4053 }, { - "name": "EMC_TASK_MODE_AUTO", - "id": 2 + "name": "EMCMOT_SPINDLE_DECREASE", + "id": 4054 }, { - "name": "EMC_TASK_MODE_MDI", - "id": 3 - } - ] - }, - { - "name": "EmcTaskStateType", - "values": [ + "name": "EMCMOT_SPINDLE_BRAKE_ENGAGE", + "id": 4055 + }, { - "name": "EMC_TASK_STATE_ESTOP", - "id": 1 + "name": "EMCMOT_SPINDLE_BRAKE_RELEASE", + "id": 4056 }, { - "name": "EMC_TASK_STATE_ESTOP_RESET", - "id": 2 + "name": "EMCMOT_SET_MOTOR_OFFSET", + "id": 4057 }, { - "name": "EMC_TASK_STATE_OFF", - "id": 3 + "name": "EMCMOT_SET_JOINT_COMP", + "id": 4058 }, { - "name": "EMC_TASK_STATE_ON", - "id": 4 + "name": "EMCMOT_SET_OFFSET", + "id": 4059 } ] }, { - "name": "EmcAxisType", + "name": "cmd_status_t", "values": [ { - "name": "EMC_AXIS_LINEAR", - "id": 1 + "name": "EMCMOT_COMMAND_OK", + "id": 0 }, { - "name": "EMC_AXIS_ANGULAR", - "id": 2 - } - ] - }, - { - "name": "EmcPositionOffsetType", - "values": [ - { - "name": "EMC_CONFIG_RELATIVE_OFFSET", + "name": "EMCMOT_COMMAND_UNKNOWN_COMMAND", "id": 1 }, { - "name": "EMC_CONFIG_MACHINE_OFFSET", + "name": "EMCMOT_COMMAND_INVALID_COMMAND", "id": 2 - } - ] - }, - { - "name": "EmcPositionFeedbackType", - "values": [ + }, { - "name": "EMC_CONFIG_ACTUAL_FEEDBACK", - "id": 1 + "name": "EMCMOT_COMMAND_INVALID_PARAMS", + "id": 3 }, { - "name": "EMC_CONFIG_COMMANDED_FEEDBACK", - "id": 2 + "name": "EMCMOT_COMMAND_BAD_EXEC", + "id": 4 } ] } @@ -22520,7 +15207,7 @@ module.exports = require("protobufjs").newBuilder({})['import']({ ] }, { - "name": "pb", + "name": "machinetalk", "fields": [], "messages": [ { @@ -25092,6 +17779,10 @@ module.exports = require("protobufjs").newBuilder({})['import']({ "name": "MT_EMC_TOOL_SET_NUMBER", "id": 11109 }, + { + "name": "MT_EMC_TOOL_UPDATE_TOOL_TABLE", + "id": 11110 + }, { "name": "MT_EMC_TOOL_STAT", "id": 11199 @@ -25573,7 +18264,7 @@ module.exports = require("protobufjs").newBuilder({})['import']({ ] }, { - "name": "pb", + "name": "machinetalk", "fields": [], "messages": [ { @@ -25906,6 +18597,14 @@ module.exports = require("protobufjs").newBuilder({})['import']({ { "name": "PV_SOURCE_CONTEXT", "id": 20 + }, + { + "name": "PV_PREVIEW_START", + "id": 21 + }, + { + "name": "PV_PREVIEW_END", + "id": 22 } ] }, @@ -26067,7 +18766,7 @@ module.exports = require("protobufjs").newBuilder({})['import']({ ] }, { - "name": "pb", + "name": "machinetalk", "fields": [], "messages": [ { @@ -27947,6 +20646,10 @@ module.exports = require("protobufjs").newBuilder({})['import']({ "name": "MT_EMC_TOOL_SET_NUMBER", "id": 11109 }, + { + "name": "MT_EMC_TOOL_UPDATE_TOOL_TABLE", + "id": 11110 + }, { "name": "MT_EMC_TOOL_STAT", "id": 11199 @@ -28428,7 +21131,7 @@ module.exports = require("protobufjs").newBuilder({})['import']({ ] }, { - "name": "pb", + "name": "machinetalk", "fields": [], "messages": [ { @@ -28658,7 +21361,7 @@ module.exports = require("protobufjs").newBuilder({})['import']({ ] }, { - "name": "pb", + "name": "machinetalk", "fields": [], "messages": [ { @@ -29305,6 +22008,18 @@ module.exports = require("protobufjs").newBuilder({})['import']({ "type": "Position", "name": "offset", "id": 16 + }, + { + "rule": "optional", + "type": "string", + "name": "comment", + "id": 17 + }, + { + "rule": "optional", + "type": "int32", + "name": "pocket", + "id": 18 } ] }, @@ -30188,18 +22903,6 @@ module.exports = require("protobufjs").newBuilder({})['import']({ "name": "mist", "id": 5 }, - { - "rule": "optional", - "type": "bool", - "name": "pocket_prepped", - "id": 6 - }, - { - "rule": "optional", - "type": "bool", - "name": "tool_in_spindle", - "id": 7 - }, { "rule": "optional", "type": "Position", @@ -30211,6 +22914,18 @@ module.exports = require("protobufjs").newBuilder({})['import']({ "type": "EmcToolData", "name": "tool_table", "id": 9 + }, + { + "rule": "optional", + "type": "int32", + "name": "pocket_prepped", + "id": 10 + }, + { + "rule": "optional", + "type": "int32", + "name": "tool_in_spindle", + "id": 11 } ] }, @@ -30427,6 +23142,12 @@ module.exports = require("protobufjs").newBuilder({})['import']({ "type": "EmcToolData", "name": "tool_data", "id": 104 + }, + { + "rule": "repeated", + "type": "EmcToolData", + "name": "tool_table", + "id": 105 } ] }, @@ -32117,6 +24838,10 @@ module.exports = require("protobufjs").newBuilder({})['import']({ "name": "MT_EMC_TOOL_SET_NUMBER", "id": 11109 }, + { + "name": "MT_EMC_TOOL_UPDATE_TOOL_TABLE", + "id": 11110 + }, { "name": "MT_EMC_TOOL_STAT", "id": 11199 @@ -32556,6 +25281,14 @@ module.exports = require("protobufjs").newBuilder({})['import']({ { "name": "PV_SOURCE_CONTEXT", "id": 20 + }, + { + "name": "PV_PREVIEW_START", + "id": 21 + }, + { + "name": "PV_PREVIEW_END", + "id": 22 } ] }, @@ -33012,7 +25745,7 @@ module.exports = require("protobufjs").newBuilder({})['import']({ "name": "EmcCanonUnitsType", "values": [ { - "name": "CANON_UNITS_INCHES", + "name": "CANON_UNITS_INCH", "id": 1 }, { @@ -33029,7 +25762,7 @@ module.exports = require("protobufjs").newBuilder({})['import']({ "name": "EmcLinearUnitsType", "values": [ { - "name": "LINEAR_UNITS_INCHES", + "name": "LINEAR_UNITS_INCH", "id": 1 }, { @@ -33290,7 +26023,7 @@ module.exports = require("protobufjs").newBuilder({})['import']({ ] }, { - "name": "pb", + "name": "machinetalk", "fields": [], "messages": [ { @@ -35082,6 +27815,10 @@ module.exports = require("protobufjs").newBuilder({})['import']({ "name": "MT_EMC_TOOL_SET_NUMBER", "id": 11109 }, + { + "name": "MT_EMC_TOOL_UPDATE_TOOL_TABLE", + "id": 11110 + }, { "name": "MT_EMC_TOOL_STAT", "id": 11199 @@ -35563,7 +28300,7 @@ module.exports = require("protobufjs").newBuilder({})['import']({ ] }, { - "name": "pb", + "name": "machinetalk", "fields": [], "messages": [ { @@ -35850,7 +28587,7 @@ module.exports = require("protobufjs").newBuilder({})['import']({ ] }, { - "name": "pb", + "name": "machinetalk", "fields": [], "enums": [ { @@ -37518,6 +30255,10 @@ module.exports = require("protobufjs").newBuilder({})['import']({ "name": "MT_EMC_TOOL_SET_NUMBER", "id": 11109 }, + { + "name": "MT_EMC_TOOL_UPDATE_TOOL_TABLE", + "id": 11110 + }, { "name": "MT_EMC_TOOL_STAT", "id": 11199 @@ -37999,7 +30740,7 @@ module.exports = require("protobufjs").newBuilder({})['import']({ ] }, { - "name": "pb", + "name": "machinetalk", "fields": [], "messages": [ { @@ -39846,6 +32587,10 @@ module.exports = require("protobufjs").newBuilder({})['import']({ "name": "MT_EMC_TOOL_SET_NUMBER", "id": 11109 }, + { + "name": "MT_EMC_TOOL_UPDATE_TOOL_TABLE", + "id": 11110 + }, { "name": "MT_EMC_TOOL_STAT", "id": 11199 @@ -40246,10 +32991,10 @@ module.exports = require("protobufjs").newBuilder({})['import']({ module.exports['canon'] = require('./machinetalk/protobuf/canon.js').pb; module.exports['config'] = require('./machinetalk/protobuf/config.js').pb; module.exports['emcclass'] = require('./machinetalk/protobuf/emcclass.js').pb; +module.exports['firmware'] = require('./machinetalk/protobuf/firmware.js').pb; module.exports['log'] = require('./machinetalk/protobuf/log.js').pb; module.exports['message'] = require('./machinetalk/protobuf/message.js').pb; module.exports['motcmds'] = require('./machinetalk/protobuf/motcmds.js').pb; -module.exports['mytest'] = require('./machinetalk/protobuf/mytest.js').pb; module.exports['nanopb'] = require('./machinetalk/protobuf/nanopb.js').pb; module.exports['object'] = require('./machinetalk/protobuf/object.js').pb; module.exports['preview'] = require('./machinetalk/protobuf/preview.js').pb; @@ -40261,7 +33006,7 @@ module.exports['test'] = require('./machinetalk/protobuf/test.js').pb; module.exports['types'] = require('./machinetalk/protobuf/types.js').pb; module.exports['value'] = require('./machinetalk/protobuf/value.js').pb; -},{"./machinetalk/protobuf/canon.js":1,"./machinetalk/protobuf/config.js":2,"./machinetalk/protobuf/emcclass.js":3,"./machinetalk/protobuf/log.js":4,"./machinetalk/protobuf/message.js":5,"./machinetalk/protobuf/motcmds.js":6,"./machinetalk/protobuf/mytest.js":7,"./machinetalk/protobuf/nanopb.js":8,"./machinetalk/protobuf/object.js":9,"./machinetalk/protobuf/preview.js":10,"./machinetalk/protobuf/rtapi_message.js":11,"./machinetalk/protobuf/rtapicommand.js":12,"./machinetalk/protobuf/status.js":13,"./machinetalk/protobuf/task.js":14,"./machinetalk/protobuf/test.js":15,"./machinetalk/protobuf/types.js":16,"./machinetalk/protobuf/value.js":17}],19:[function(require,module,exports){ +},{"./machinetalk/protobuf/canon.js":1,"./machinetalk/protobuf/config.js":2,"./machinetalk/protobuf/emcclass.js":3,"./machinetalk/protobuf/firmware.js":4,"./machinetalk/protobuf/log.js":5,"./machinetalk/protobuf/message.js":6,"./machinetalk/protobuf/motcmds.js":7,"./machinetalk/protobuf/nanopb.js":8,"./machinetalk/protobuf/object.js":9,"./machinetalk/protobuf/preview.js":10,"./machinetalk/protobuf/rtapi_message.js":11,"./machinetalk/protobuf/rtapicommand.js":12,"./machinetalk/protobuf/status.js":13,"./machinetalk/protobuf/task.js":14,"./machinetalk/protobuf/test.js":15,"./machinetalk/protobuf/types.js":16,"./machinetalk/protobuf/value.js":17}],19:[function(require,module,exports){ },{}],20:[function(require,module,exports){ // shim for using process in browser @@ -49262,14 +42007,14 @@ process.umask = function() { return 0; }; * @type {number} * @expose */ - this.low = low|0; + this.low = low | 0; /** * The high 32 bits as a signed value. * @type {number} * @expose */ - this.high = high|0; + this.high = high | 0; /** * Whether unsigned or not. @@ -49311,15 +42056,24 @@ process.umask = function() { return 0; }; configurable: false }); + /** + * @function + * @param {*} obj Object + * @returns {boolean} + * @inner + */ + function isLong(obj) { + return (obj && obj["__isLong__"]) === true; + } + /** * Tests if the specified object is a Long. + * @function * @param {*} obj Object * @returns {boolean} * @expose */ - Long.isLong = function isLong(obj) { - return (obj && obj["__isLong__"]) === true; - }; + Long.isLong = isLong; /** * A cache of the Long representations of small integer values. @@ -49336,136 +42090,197 @@ process.umask = function() { return 0; }; var UINT_CACHE = {}; /** - * Returns a Long representing the given 32 bit integer value. - * @param {number} value The 32 bit integer in question - * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed - * @returns {!Long} The corresponding Long value - * @expose + * @param {number} value + * @param {boolean=} unsigned + * @returns {!Long} + * @inner */ - Long.fromInt = function fromInt(value, unsigned) { + function fromInt(value, unsigned) { var obj, cachedObj, cache; - if (!unsigned) { - value = value | 0; - if (cache = (-128 <= value && value < 128)) { - cachedObj = INT_CACHE[value]; + if (unsigned) { + value >>>= 0; + if (cache = (0 <= value && value < 256)) { + cachedObj = UINT_CACHE[value]; if (cachedObj) return cachedObj; } - obj = new Long(value, value < 0 ? -1 : 0, false); + obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true); if (cache) - INT_CACHE[value] = obj; + UINT_CACHE[value] = obj; return obj; } else { - value = value >>> 0; - if (cache = (0 <= value && value < 256)) { - cachedObj = UINT_CACHE[value]; + value |= 0; + if (cache = (-128 <= value && value < 128)) { + cachedObj = INT_CACHE[value]; if (cachedObj) return cachedObj; } - obj = new Long(value, (value | 0) < 0 ? -1 : 0, true); + obj = fromBits(value, value < 0 ? -1 : 0, false); if (cache) - UINT_CACHE[value] = obj; + INT_CACHE[value] = obj; return obj; } - }; + } /** - * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned. - * @param {number} value The number in question + * Returns a Long representing the given 32 bit integer value. + * @function + * @param {number} value The 32 bit integer in question * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed * @returns {!Long} The corresponding Long value * @expose */ - Long.fromNumber = function fromNumber(value, unsigned) { - unsigned = !!unsigned; + Long.fromInt = fromInt; + + /** + * @param {number} value + * @param {boolean=} unsigned + * @returns {!Long} + * @inner + */ + function fromNumber(value, unsigned) { if (isNaN(value) || !isFinite(value)) - return Long.ZERO; - if (!unsigned && value <= -TWO_PWR_63_DBL) - return Long.MIN_VALUE; - if (!unsigned && value + 1 >= TWO_PWR_63_DBL) - return Long.MAX_VALUE; - if (unsigned && value >= TWO_PWR_64_DBL) - return Long.MAX_UNSIGNED_VALUE; + return unsigned ? UZERO : ZERO; + if (unsigned) { + if (value < 0) + return UZERO; + if (value >= TWO_PWR_64_DBL) + return MAX_UNSIGNED_VALUE; + } else { + if (value <= -TWO_PWR_63_DBL) + return MIN_VALUE; + if (value + 1 >= TWO_PWR_63_DBL) + return MAX_VALUE; + } if (value < 0) - return Long.fromNumber(-value, unsigned).neg(); - return new Long((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned); - }; + return fromNumber(-value, unsigned).neg(); + return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned); + } + + /** + * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned. + * @function + * @param {number} value The number in question + * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed + * @returns {!Long} The corresponding Long value + * @expose + */ + Long.fromNumber = fromNumber; + + /** + * @param {number} lowBits + * @param {number} highBits + * @param {boolean=} unsigned + * @returns {!Long} + * @inner + */ + function fromBits(lowBits, highBits, unsigned) { + return new Long(lowBits, highBits, unsigned); + } /** * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is * assumed to use 32 bits. + * @function * @param {number} lowBits The low 32 bits * @param {number} highBits The high 32 bits * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed * @returns {!Long} The corresponding Long value * @expose */ - Long.fromBits = function fromBits(lowBits, highBits, unsigned) { - return new Long(lowBits, highBits, unsigned); - }; + Long.fromBits = fromBits; /** - * Returns a Long representation of the given string, written using the specified radix. - * @param {string} str The textual representation of the Long - * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to `false` for signed - * @param {number=} radix The radix in which the text is written (2-36), defaults to 10 - * @returns {!Long} The corresponding Long value - * @expose + * @function + * @param {number} base + * @param {number} exponent + * @returns {number} + * @inner + */ + var pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4) + + /** + * @param {string} str + * @param {(boolean|number)=} unsigned + * @param {number=} radix + * @returns {!Long} + * @inner */ - Long.fromString = function fromString(str, unsigned, radix) { + function fromString(str, unsigned, radix) { if (str.length === 0) - throw Error('number format error: empty string'); + throw Error('empty string'); if (str === "NaN" || str === "Infinity" || str === "+Infinity" || str === "-Infinity") - return Long.ZERO; + return ZERO; if (typeof unsigned === 'number') // For goog.math.long compatibility radix = unsigned, unsigned = false; radix = radix || 10; if (radix < 2 || 36 < radix) - throw Error('radix out of range: ' + radix); + throw RangeError('radix'); var p; if ((p = str.indexOf('-')) > 0) - throw Error('number format error: interior "-" character: ' + str); - else if (p === 0) - return Long.fromString(str.substring(1), unsigned, radix).neg(); + throw Error('interior hyphen'); + else if (p === 0) { + return fromString(str.substring(1), unsigned, radix).neg(); + } // Do several (8) digits each time through the loop, so as to // minimize the calls to the very expensive emulated div. - var radixToPower = Long.fromNumber(Math.pow(radix, 8)); + var radixToPower = fromNumber(pow_dbl(radix, 8)); - var result = Long.ZERO; + var result = ZERO; for (var i = 0; i < str.length; i += 8) { - var size = Math.min(8, str.length - i); - var value = parseInt(str.substring(i, i + size), radix); + var size = Math.min(8, str.length - i), + value = parseInt(str.substring(i, i + size), radix); if (size < 8) { - var power = Long.fromNumber(Math.pow(radix, size)); - result = result.mul(power).add(Long.fromNumber(value)); + var power = fromNumber(pow_dbl(radix, size)); + result = result.mul(power).add(fromNumber(value)); } else { result = result.mul(radixToPower); - result = result.add(Long.fromNumber(value)); + result = result.add(fromNumber(value)); } } result.unsigned = unsigned; return result; - }; + } /** - * Converts the specified value to a Long. - * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value - * @returns {!Long} + * Returns a Long representation of the given string, written using the specified radix. + * @function + * @param {string} str The textual representation of the Long + * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to `false` for signed + * @param {number=} radix The radix in which the text is written (2-36), defaults to 10 + * @returns {!Long} The corresponding Long value * @expose */ - Long.fromValue = function fromValue(val) { + Long.fromString = fromString; + + /** + * @function + * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val + * @returns {!Long} + * @inner + */ + function fromValue(val) { if (val /* is compatible */ instanceof Long) return val; if (typeof val === 'number') - return Long.fromNumber(val); + return fromNumber(val); if (typeof val === 'string') - return Long.fromString(val); + return fromString(val); // Throws for non-objects, converts non-instanceof Long: - return new Long(val.low, val.high, val.unsigned); - }; + return fromBits(val.low, val.high, val.unsigned); + } + + /** + * Converts the specified value to a Long. + * @function + * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value + * @returns {!Long} + * @expose + */ + Long.fromValue = fromValue; // NOTE: the compiler should inline these constant values below and then remove these variables, so there should be // no runtime penalty for these. @@ -49510,63 +42325,111 @@ process.umask = function() { return 0; }; * @const * @inner */ - var TWO_PWR_24 = Long.fromInt(TWO_PWR_24_DBL); + var TWO_PWR_24 = fromInt(TWO_PWR_24_DBL); + + /** + * @type {!Long} + * @inner + */ + var ZERO = fromInt(0); /** * Signed zero. * @type {!Long} * @expose */ - Long.ZERO = Long.fromInt(0); + Long.ZERO = ZERO; + + /** + * @type {!Long} + * @inner + */ + var UZERO = fromInt(0, true); /** * Unsigned zero. * @type {!Long} * @expose */ - Long.UZERO = Long.fromInt(0, true); + Long.UZERO = UZERO; + + /** + * @type {!Long} + * @inner + */ + var ONE = fromInt(1); /** * Signed one. * @type {!Long} * @expose */ - Long.ONE = Long.fromInt(1); + Long.ONE = ONE; + + /** + * @type {!Long} + * @inner + */ + var UONE = fromInt(1, true); /** * Unsigned one. * @type {!Long} * @expose */ - Long.UONE = Long.fromInt(1, true); + Long.UONE = UONE; + + /** + * @type {!Long} + * @inner + */ + var NEG_ONE = fromInt(-1); /** * Signed negative one. * @type {!Long} * @expose */ - Long.NEG_ONE = Long.fromInt(-1); + Long.NEG_ONE = NEG_ONE; + + /** + * @type {!Long} + * @inner + */ + var MAX_VALUE = fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false); /** * Maximum signed value. * @type {!Long} * @expose */ - Long.MAX_VALUE = new Long(0xFFFFFFFF|0, 0x7FFFFFFF|0, false); + Long.MAX_VALUE = MAX_VALUE; + + /** + * @type {!Long} + * @inner + */ + var MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true); /** * Maximum unsigned value. * @type {!Long} * @expose */ - Long.MAX_UNSIGNED_VALUE = new Long(0xFFFFFFFF|0, 0xFFFFFFFF|0, true); + Long.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE; + + /** + * @type {!Long} + * @inner + */ + var MIN_VALUE = fromBits(0, 0x80000000|0, false); /** * Minimum signed value. * @type {!Long} * @expose */ - Long.MIN_VALUE = new Long(0, 0x80000000|0, false); + Long.MIN_VALUE = MIN_VALUE; /** * @alias Long.prototype @@ -49589,9 +42452,8 @@ process.umask = function() { return 0; }; * @expose */ LongPrototype.toNumber = function toNumber() { - if (this.unsigned) { + if (this.unsigned) return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0); - } return this.high * TWO_PWR_32_DBL + (this.low >>> 0); }; @@ -49606,26 +42468,25 @@ process.umask = function() { return 0; }; LongPrototype.toString = function toString(radix) { radix = radix || 10; if (radix < 2 || 36 < radix) - throw RangeError('radix out of range: ' + radix); + throw RangeError('radix'); if (this.isZero()) return '0'; - var rem; if (this.isNegative()) { // Unsigned Longs are never negative - if (this.eq(Long.MIN_VALUE)) { + if (this.eq(MIN_VALUE)) { // We need to change the Long value before it can be negated, so we remove // the bottom-most digit in this base and then recurse to do the rest. - var radixLong = Long.fromNumber(radix); - var div = this.div(radixLong); - rem = div.mul(radixLong).sub(this); - return div.toString(radix) + rem.toInt().toString(radix); + var radixLong = fromNumber(radix), + div = this.div(radixLong), + rem1 = div.mul(radixLong).sub(this); + return div.toString(radix) + rem1.toInt().toString(radix); } else return '-' + this.neg().toString(radix); } // Do several (6) digits each time through the loop, so as to // minimize the calls to the very expensive emulated div. - var radixToPower = Long.fromNumber(Math.pow(radix, 6), this.unsigned); - rem = this; + var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned), + rem = this; var result = ''; while (true) { var remDiv = rem.div(radixToPower), @@ -49685,7 +42546,7 @@ process.umask = function() { return 0; }; */ LongPrototype.getNumBitsAbs = function getNumBitsAbs() { if (this.isNegative()) // Unsigned Longs are never negative - return this.eq(Long.MIN_VALUE) ? 64 : this.neg().getNumBitsAbs(); + return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs(); var val = this.high != 0 ? this.high : this.low; for (var bit = 31; bit > 0; bit--) if ((val & (1 << bit)) != 0) @@ -49745,8 +42606,8 @@ process.umask = function() { return 0; }; * @expose */ LongPrototype.equals = function equals(other) { - if (!Long.isLong(other)) - other = Long.fromValue(other); + if (!isLong(other)) + other = fromValue(other); if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1) return false; return this.high === other.high && this.low === other.low; @@ -49787,7 +42648,7 @@ process.umask = function() { return 0; }; * @expose */ LongPrototype.lessThan = function lessThan(other) { - return this.compare(/* validates */ other) < 0; + return this.comp(/* validates */ other) < 0; }; /** @@ -49806,7 +42667,7 @@ process.umask = function() { return 0; }; * @expose */ LongPrototype.lessThanOrEqual = function lessThanOrEqual(other) { - return this.compare(/* validates */ other) <= 0; + return this.comp(/* validates */ other) <= 0; }; /** @@ -49825,7 +42686,7 @@ process.umask = function() { return 0; }; * @expose */ LongPrototype.greaterThan = function greaterThan(other) { - return this.compare(/* validates */ other) > 0; + return this.comp(/* validates */ other) > 0; }; /** @@ -49844,7 +42705,7 @@ process.umask = function() { return 0; }; * @expose */ LongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) { - return this.compare(/* validates */ other) >= 0; + return this.comp(/* validates */ other) >= 0; }; /** @@ -49864,8 +42725,8 @@ process.umask = function() { return 0; }; * @expose */ LongPrototype.compare = function compare(other) { - if (!Long.isLong(other)) - other = Long.fromValue(other); + if (!isLong(other)) + other = fromValue(other); if (this.eq(other)) return 0; var thisNeg = this.isNegative(), @@ -49897,9 +42758,9 @@ process.umask = function() { return 0; }; * @expose */ LongPrototype.negate = function negate() { - if (!this.unsigned && this.eq(Long.MIN_VALUE)) - return Long.MIN_VALUE; - return this.not().add(Long.ONE); + if (!this.unsigned && this.eq(MIN_VALUE)) + return MIN_VALUE; + return this.not().add(ONE); }; /** @@ -49917,8 +42778,8 @@ process.umask = function() { return 0; }; * @expose */ LongPrototype.add = function add(addend) { - if (!Long.isLong(addend)) - addend = Long.fromValue(addend); + if (!isLong(addend)) + addend = fromValue(addend); // Divide each number into 4 chunks of 16 bits, and then sum the chunks. @@ -49944,7 +42805,7 @@ process.umask = function() { return 0; }; c32 &= 0xFFFF; c48 += a48 + b48; c48 &= 0xFFFF; - return new Long((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned); + return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned); }; /** @@ -49954,8 +42815,8 @@ process.umask = function() { return 0; }; * @expose */ LongPrototype.subtract = function subtract(subtrahend) { - if (!Long.isLong(subtrahend)) - subtrahend = Long.fromValue(subtrahend); + if (!isLong(subtrahend)) + subtrahend = fromValue(subtrahend); return this.add(subtrahend.neg()); }; @@ -49976,15 +42837,15 @@ process.umask = function() { return 0; }; */ LongPrototype.multiply = function multiply(multiplier) { if (this.isZero()) - return Long.ZERO; - if (!Long.isLong(multiplier)) - multiplier = Long.fromValue(multiplier); + return ZERO; + if (!isLong(multiplier)) + multiplier = fromValue(multiplier); if (multiplier.isZero()) - return Long.ZERO; - if (this.eq(Long.MIN_VALUE)) - return multiplier.isOdd() ? Long.MIN_VALUE : Long.ZERO; - if (multiplier.eq(Long.MIN_VALUE)) - return this.isOdd() ? Long.MIN_VALUE : Long.ZERO; + return ZERO; + if (this.eq(MIN_VALUE)) + return multiplier.isOdd() ? MIN_VALUE : ZERO; + if (multiplier.eq(MIN_VALUE)) + return this.isOdd() ? MIN_VALUE : ZERO; if (this.isNegative()) { if (multiplier.isNegative()) @@ -49996,7 +42857,7 @@ process.umask = function() { return 0; }; // If both longs are small, use float multiplication if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24)) - return Long.fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned); + return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned); // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products. // We can skip products that would overflow. @@ -50032,7 +42893,7 @@ process.umask = function() { return 0; }; c32 &= 0xFFFF; c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; c48 &= 0xFFFF; - return new Long((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned); + return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned); }; /** @@ -50051,32 +42912,32 @@ process.umask = function() { return 0; }; * @expose */ LongPrototype.divide = function divide(divisor) { - if (!Long.isLong(divisor)) - divisor = Long.fromValue(divisor); + if (!isLong(divisor)) + divisor = fromValue(divisor); if (divisor.isZero()) throw Error('division by zero'); if (this.isZero()) - return this.unsigned ? Long.UZERO : Long.ZERO; + return this.unsigned ? UZERO : ZERO; var approx, rem, res; - if (this.eq(Long.MIN_VALUE)) { - if (divisor.eq(Long.ONE) || divisor.eq(Long.NEG_ONE)) - return Long.MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE - else if (divisor.eq(Long.MIN_VALUE)) - return Long.ONE; + if (this.eq(MIN_VALUE)) { + if (divisor.eq(ONE) || divisor.eq(NEG_ONE)) + return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE + else if (divisor.eq(MIN_VALUE)) + return ONE; else { // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|. var halfThis = this.shr(1); approx = halfThis.div(divisor).shl(1); - if (approx.eq(Long.ZERO)) { - return divisor.isNegative() ? Long.ONE : Long.NEG_ONE; + if (approx.eq(ZERO)) { + return divisor.isNegative() ? ONE : NEG_ONE; } else { rem = this.sub(divisor.mul(approx)); res = approx.add(rem.div(divisor)); return res; } } - } else if (divisor.eq(Long.MIN_VALUE)) - return this.unsigned ? Long.UZERO : Long.ZERO; + } else if (divisor.eq(MIN_VALUE)) + return this.unsigned ? UZERO : ZERO; if (this.isNegative()) { if (divisor.isNegative()) return this.neg().div(divisor.neg()); @@ -50089,7 +42950,7 @@ process.umask = function() { return 0; }; // into the result, and subtract it from the remainder. It is critical that // the approximate value is less than or equal to the real value so that the // remainder never becomes negative. - res = Long.ZERO; + res = ZERO; rem = this; while (rem.gte(divisor)) { // Approximate the result of division. This may be a little greater or @@ -50099,22 +42960,22 @@ process.umask = function() { return 0; }; // We will tweak the approximate result by changing it in the 48-th digit or // the smallest non-fractional digit, whichever is larger. var log2 = Math.ceil(Math.log(approx) / Math.LN2), - delta = (log2 <= 48) ? 1 : Math.pow(2, log2 - 48), + delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48), // Decrease the approximation until it is smaller than the remainder. Note // that if it is too large, the product overflows and is negative. - approxRes = Long.fromNumber(approx), + approxRes = fromNumber(approx), approxRem = approxRes.mul(divisor); while (approxRem.isNegative() || approxRem.gt(rem)) { approx -= delta; - approxRes = Long.fromNumber(approx, this.unsigned); + approxRes = fromNumber(approx, this.unsigned); approxRem = approxRes.mul(divisor); } // We know the answer can't be zero... and actually, zero would cause // infinite recursion since we would make no progress. if (approxRes.isZero()) - approxRes = Long.ONE; + approxRes = ONE; res = res.add(approxRes); rem = rem.sub(approxRem); @@ -50138,8 +42999,8 @@ process.umask = function() { return 0; }; * @expose */ LongPrototype.modulo = function modulo(divisor) { - if (!Long.isLong(divisor)) - divisor = Long.fromValue(divisor); + if (!isLong(divisor)) + divisor = fromValue(divisor); return this.sub(this.div(divisor).mul(divisor)); }; @@ -50158,7 +43019,7 @@ process.umask = function() { return 0; }; * @expose */ LongPrototype.not = function not() { - return new Long(~this.low, ~this.high, this.unsigned); + return fromBits(~this.low, ~this.high, this.unsigned); }; /** @@ -50168,9 +43029,9 @@ process.umask = function() { return 0; }; * @expose */ LongPrototype.and = function and(other) { - if (!Long.isLong(other)) - other = Long.fromValue(other); - return new Long(this.low & other.low, this.high & other.high, this.unsigned); + if (!isLong(other)) + other = fromValue(other); + return fromBits(this.low & other.low, this.high & other.high, this.unsigned); }; /** @@ -50180,9 +43041,9 @@ process.umask = function() { return 0; }; * @expose */ LongPrototype.or = function or(other) { - if (!Long.isLong(other)) - other = Long.fromValue(other); - return new Long(this.low | other.low, this.high | other.high, this.unsigned); + if (!isLong(other)) + other = fromValue(other); + return fromBits(this.low | other.low, this.high | other.high, this.unsigned); }; /** @@ -50192,9 +43053,9 @@ process.umask = function() { return 0; }; * @expose */ LongPrototype.xor = function xor(other) { - if (!Long.isLong(other)) - other = Long.fromValue(other); - return new Long(this.low ^ other.low, this.high ^ other.high, this.unsigned); + if (!isLong(other)) + other = fromValue(other); + return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned); }; /** @@ -50204,14 +43065,14 @@ process.umask = function() { return 0; }; * @expose */ LongPrototype.shiftLeft = function shiftLeft(numBits) { - if (Long.isLong(numBits)) + if (isLong(numBits)) numBits = numBits.toInt(); if ((numBits &= 63) === 0) return this; else if (numBits < 32) - return new Long(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned); + return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned); else - return new Long(0, this.low << (numBits - 32), this.unsigned); + return fromBits(0, this.low << (numBits - 32), this.unsigned); }; /** @@ -50230,14 +43091,14 @@ process.umask = function() { return 0; }; * @expose */ LongPrototype.shiftRight = function shiftRight(numBits) { - if (Long.isLong(numBits)) + if (isLong(numBits)) numBits = numBits.toInt(); if ((numBits &= 63) === 0) return this; else if (numBits < 32) - return new Long((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned); + return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned); else - return new Long(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned); + return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned); }; /** @@ -50256,7 +43117,7 @@ process.umask = function() { return 0; }; * @expose */ LongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) { - if (Long.isLong(numBits)) + if (isLong(numBits)) numBits = numBits.toInt(); numBits &= 63; if (numBits === 0) @@ -50265,11 +43126,11 @@ process.umask = function() { return 0; }; var high = this.high; if (numBits < 32) { var low = this.low; - return new Long((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned); + return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned); } else if (numBits === 32) - return new Long(high, 0, this.unsigned); + return fromBits(high, 0, this.unsigned); else - return new Long(high >>> (numBits - 32), 0, this.unsigned); + return fromBits(high >>> (numBits - 32), 0, this.unsigned); } }; @@ -50290,7 +43151,7 @@ process.umask = function() { return 0; }; LongPrototype.toSigned = function toSigned() { if (!this.unsigned) return this; - return new Long(this.low, this.high, false); + return fromBits(this.low, this.high, false); }; /** @@ -50301,7 +43162,7 @@ process.umask = function() { return 0; }; LongPrototype.toUnsigned = function toUnsigned() { if (this.unsigned) return this; - return new Long(this.low, this.high, true); + return fromBits(this.low, this.high, true); }; return Long; diff --git a/dist/machinetalk-protobuf.min.js b/dist/machinetalk-protobuf.min.js index 5538e75005..f7d1bfaa69 100644 --- a/dist/machinetalk-protobuf.min.js +++ b/dist/machinetalk-protobuf.min.js @@ -1,45 +1,43 @@ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}(g.machinetalk || (g.machinetalk = {})).protobuf = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o1)for(var r=1;r1024&&(t.push(h.apply(String,e)),e.length=0),void Array.prototype.push.apply(e,arguments))}}function i(e,t,r,i,n){var f,o,s=8*n-i-1,h=(1<>1,l=-7,u=r?n-1:0,g=r?-1:1,y=e[t+u];for(u+=g,f=y&(1<<-l)-1,y>>=-l,l+=s;l>0;f=256*f+e[t+u],u+=g,l-=8);for(o=f&(1<<-l)-1,f>>=-l,l+=i;l>0;o=256*o+e[t+u],u+=g,l-=8);if(0===f)f=1-a;else{if(f===h)return o?NaN:(y?-1:1)*(1/0);o+=Math.pow(2,i),f-=a}return(y?-1:1)*o*Math.pow(2,f-i)}function n(e,t,r,i,n,f){var o,s,h,a=8*f-n-1,l=(1<>1,g=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,y=i?0:f-1,b=i?1:-1,w=0>t||0===t&&0>1/t?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=l):(o=Math.floor(Math.log(t)/Math.LN2),t*(h=Math.pow(2,-o))<1&&(o--,h*=2),t+=o+u>=1?g/h:g*Math.pow(2,1-u),t*h>=2&&(o++,h/=2),o+u>=l?(s=0,o=l):o+u>=1?(s=(t*h-1)*Math.pow(2,n),o+=u):(s=t*Math.pow(2,u-1)*Math.pow(2,n),o=0));n>=8;e[r+y]=255&s,y+=b,s/=256,n-=8);for(o=o<0;e[r+y]=255&o,y+=b,o/=256,a-=8);e[r+y-b]|=128*w}var f=function(e,t,r){if("undefined"==typeof e&&(e=f.DEFAULT_CAPACITY),"undefined"==typeof t&&(t=f.DEFAULT_ENDIAN),"undefined"==typeof r&&(r=f.DEFAULT_NOASSERT),!r){if(e=0|e,0>e)throw RangeError("Illegal capacity");t=!!t,r=!!r}this.buffer=0===e?s:new ArrayBuffer(e),this.view=0===e?null:new Uint8Array(this.buffer),this.offset=0,this.markedOffset=-1,this.limit=e,this.littleEndian="undefined"!=typeof t?!!t:!1,this.noAssert=!!r};f.VERSION="5.0.0",f.LITTLE_ENDIAN=!0,f.BIG_ENDIAN=!1,f.DEFAULT_CAPACITY=16,f.DEFAULT_ENDIAN=f.BIG_ENDIAN,f.DEFAULT_NOASSERT=!1,f.Long=e||null;var o=f.prototype;o.__isByteBuffer__,Object.defineProperty(o,"__isByteBuffer__",{value:!0,enumerable:!1,configurable:!1});var s=new ArrayBuffer(0),h=String.fromCharCode;f.accessor=function(){return Uint8Array},f.allocate=function(e,t,r){return new f(e,t,r)},f.concat=function(e,t,r,i){("boolean"==typeof t||"string"!=typeof t)&&(i=r,r=t,t=void 0);for(var n,o=0,s=0,h=e.length;h>s;++s)f.isByteBuffer(e[s])||(e[s]=f.wrap(e[s],t)),n=e[s].limit-e[s].offset,n>0&&(o+=n);if(0===o)return new f(0,r,i);var a,l=new f(o,r,i);for(s=0;h>s;)a=e[s++],n=a.limit-a.offset,0>=n||(l.view.set(a.view.subarray(a.offset,a.limit),l.offset),l.offset+=n);return l.limit=l.offset,l.offset=0,l},f.isByteBuffer=function(e){return(e&&e.__isByteBuffer__)===!0},f.type=function(){return ArrayBuffer},f.wrap=function(e,t,r,i){if("string"!=typeof t&&(i=r,r=t,t=void 0),"string"==typeof e)switch("undefined"==typeof t&&(t="utf8"),t){case"base64":return f.fromBase64(e,r);case"hex":return f.fromHex(e,r);case"binary":return f.fromBinary(e,r);case"utf8":return f.fromUTF8(e,r);case"debug":return f.fromDebug(e,r);default:throw Error("Unsupported encoding: "+t)}if(null===e||"object"!=typeof e)throw TypeError("Illegal buffer");var n;if(f.isByteBuffer(e))return n=o.clone.call(e),n.markedOffset=-1,n;if(e instanceof Uint8Array)n=new f(0,r,i),e.length>0&&(n.buffer=e.buffer,n.offset=e.byteOffset,n.limit=e.byteOffset+e.byteLength,n.view=new Uint8Array(e.buffer));else if(e instanceof ArrayBuffer)n=new f(0,r,i),e.byteLength>0&&(n.buffer=e,n.offset=0,n.limit=e.byteLength,n.view=e.byteLength>0?new Uint8Array(e):null);else{if("[object Array]"!==Object.prototype.toString.call(e))throw TypeError("Illegal buffer");n=new f(e.length,r,i),n.limit=e.length;for(var s=0;s>>=0,0>t||t+e>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+"+e+") <= "+this.buffer.byteLength)}var i=this.slice(t,t+e);return r&&(this.offset+=e),i},o.writeBytes=o.append,o.writeInt8=function(e,t){var r="undefined"==typeof t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e|=0,"number"!=typeof t||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");if(t>>>=0,0>t||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=1;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=1,this.view[t]=e,r&&(this.offset+=1),this},o.writeByte=o.writeInt8,o.readInt8=function(e){var t="undefined"==typeof e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");if(e>>>=0,0>e||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+1) <= "+this.buffer.byteLength)}var r=this.view[e];return 128===(128&r)&&(r=-(255-r+1)),t&&(this.offset+=1),r},o.readByte=o.readInt8,o.writeUint8=function(e,t){var r="undefined"==typeof t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e>>>=0,"number"!=typeof t||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");if(t>>>=0,0>t||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=1;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=1,this.view[t]=e,r&&(this.offset+=1),this},o.writeUInt8=o.writeUint8,o.readUint8=function(e){var t="undefined"==typeof e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");if(e>>>=0,0>e||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+1) <= "+this.buffer.byteLength)}var r=this.view[e];return t&&(this.offset+=1),r},o.readUInt8=o.readUint8,o.writeInt16=function(e,t){var r="undefined"==typeof t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e|=0,"number"!=typeof t||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");if(t>>>=0,0>t||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=2;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=2,this.littleEndian?(this.view[t+1]=(65280&e)>>>8,this.view[t]=255&e):(this.view[t]=(65280&e)>>>8,this.view[t+1]=255&e),r&&(this.offset+=2),this},o.writeShort=o.writeInt16,o.readInt16=function(e){var t="undefined"==typeof e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");if(e>>>=0,0>e||e+2>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+2) <= "+this.buffer.byteLength)}var r=0;return this.littleEndian?(r=this.view[e],r|=this.view[e+1]<<8):(r=this.view[e]<<8,r|=this.view[e+1]),32768===(32768&r)&&(r=-(65535-r+1)),t&&(this.offset+=2),r},o.readShort=o.readInt16,o.writeUint16=function(e,t){var r="undefined"==typeof t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e>>>=0,"number"!=typeof t||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");if(t>>>=0,0>t||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=2;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=2,this.littleEndian?(this.view[t+1]=(65280&e)>>>8,this.view[t]=255&e):(this.view[t]=(65280&e)>>>8,this.view[t+1]=255&e),r&&(this.offset+=2),this},o.writeUInt16=o.writeUint16,o.readUint16=function(e){var t="undefined"==typeof e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");if(e>>>=0,0>e||e+2>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+2) <= "+this.buffer.byteLength)}var r=0;return this.littleEndian?(r=this.view[e],r|=this.view[e+1]<<8):(r=this.view[e]<<8,r|=this.view[e+1]),t&&(this.offset+=2),r},o.readUInt16=o.readUint16,o.writeInt32=function(e,t){var r="undefined"==typeof t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e|=0,"number"!=typeof t||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");if(t>>>=0,0>t||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=4;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=4,this.littleEndian?(this.view[t+3]=e>>>24&255,this.view[t+2]=e>>>16&255,this.view[t+1]=e>>>8&255,this.view[t]=255&e):(this.view[t]=e>>>24&255,this.view[t+1]=e>>>16&255,this.view[t+2]=e>>>8&255,this.view[t+3]=255&e),r&&(this.offset+=4),this},o.writeInt=o.writeInt32,o.readInt32=function(e){var t="undefined"==typeof e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");if(e>>>=0,0>e||e+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+4) <= "+this.buffer.byteLength)}var r=0;return this.littleEndian?(r=this.view[e+2]<<16,r|=this.view[e+1]<<8,r|=this.view[e],r+=this.view[e+3]<<24>>>0):(r=this.view[e+1]<<16,r|=this.view[e+2]<<8,r|=this.view[e+3],r+=this.view[e]<<24>>>0),r|=0,t&&(this.offset+=4),r},o.readInt=o.readInt32,o.writeUint32=function(e,t){var r="undefined"==typeof t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e>>>=0,"number"!=typeof t||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");if(t>>>=0,0>t||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=4;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=4,this.littleEndian?(this.view[t+3]=e>>>24&255,this.view[t+2]=e>>>16&255,this.view[t+1]=e>>>8&255,this.view[t]=255&e):(this.view[t]=e>>>24&255,this.view[t+1]=e>>>16&255,this.view[t+2]=e>>>8&255,this.view[t+3]=255&e),r&&(this.offset+=4),this},o.writeUInt32=o.writeUint32,o.readUint32=function(e){var t="undefined"==typeof e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");if(e>>>=0,0>e||e+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+4) <= "+this.buffer.byteLength)}var r=0;return this.littleEndian?(r=this.view[e+2]<<16,r|=this.view[e+1]<<8,r|=this.view[e],r+=this.view[e+3]<<24>>>0):(r=this.view[e+1]<<16,r|=this.view[e+2]<<8,r|=this.view[e+3],r+=this.view[e]<<24>>>0),t&&(this.offset+=4),r},o.readUInt32=o.readUint32,e&&(o.writeInt64=function(t,r){var i="undefined"==typeof r;if(i&&(r=this.offset),!this.noAssert){if("number"==typeof t)t=e.fromNumber(t);else if("string"==typeof t)t=e.fromString(t);else if(!(t&&t instanceof e))throw TypeError("Illegal value: "+t+" (not an integer or Long)");if("number"!=typeof r||r%1!==0)throw TypeError("Illegal offset: "+r+" (not an integer)");if(r>>>=0,0>r||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}"number"==typeof t?t=e.fromNumber(t):"string"==typeof t&&(t=e.fromString(t)),r+=8;var n=this.buffer.byteLength;r>n&&this.resize((n*=2)>r?n:r),r-=8;var f=t.low,o=t.high;return this.littleEndian?(this.view[r+3]=f>>>24&255,this.view[r+2]=f>>>16&255,this.view[r+1]=f>>>8&255,this.view[r]=255&f,r+=4,this.view[r+3]=o>>>24&255,this.view[r+2]=o>>>16&255,this.view[r+1]=o>>>8&255,this.view[r]=255&o):(this.view[r]=o>>>24&255,this.view[r+1]=o>>>16&255,this.view[r+2]=o>>>8&255,this.view[r+3]=255&o,r+=4,this.view[r]=f>>>24&255,this.view[r+1]=f>>>16&255,this.view[r+2]=f>>>8&255,this.view[r+3]=255&f),i&&(this.offset+=8),this},o.writeLong=o.writeInt64,o.readInt64=function(t){var r="undefined"==typeof t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");if(t>>>=0,0>t||t+8>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+8) <= "+this.buffer.byteLength)}var i=0,n=0;this.littleEndian?(i=this.view[t+2]<<16,i|=this.view[t+1]<<8,i|=this.view[t],i+=this.view[t+3]<<24>>>0,t+=4,n=this.view[t+2]<<16,n|=this.view[t+1]<<8,n|=this.view[t],n+=this.view[t+3]<<24>>>0):(n=this.view[t+1]<<16,n|=this.view[t+2]<<8,n|=this.view[t+3],n+=this.view[t]<<24>>>0,t+=4,i=this.view[t+1]<<16,i|=this.view[t+2]<<8,i|=this.view[t+3],i+=this.view[t]<<24>>>0);var f=new e(i,n,!1);return r&&(this.offset+=8),f},o.readLong=o.readInt64,o.writeUint64=function(t,r){var i="undefined"==typeof r;if(i&&(r=this.offset),!this.noAssert){if("number"==typeof t)t=e.fromNumber(t);else if("string"==typeof t)t=e.fromString(t);else if(!(t&&t instanceof e))throw TypeError("Illegal value: "+t+" (not an integer or Long)");if("number"!=typeof r||r%1!==0)throw TypeError("Illegal offset: "+r+" (not an integer)");if(r>>>=0,0>r||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}"number"==typeof t?t=e.fromNumber(t):"string"==typeof t&&(t=e.fromString(t)),r+=8;var n=this.buffer.byteLength;r>n&&this.resize((n*=2)>r?n:r),r-=8;var f=t.low,o=t.high;return this.littleEndian?(this.view[r+3]=f>>>24&255,this.view[r+2]=f>>>16&255,this.view[r+1]=f>>>8&255,this.view[r]=255&f,r+=4,this.view[r+3]=o>>>24&255,this.view[r+2]=o>>>16&255,this.view[r+1]=o>>>8&255,this.view[r]=255&o):(this.view[r]=o>>>24&255,this.view[r+1]=o>>>16&255,this.view[r+2]=o>>>8&255,this.view[r+3]=255&o,r+=4,this.view[r]=f>>>24&255,this.view[r+1]=f>>>16&255,this.view[r+2]=f>>>8&255,this.view[r+3]=255&f),i&&(this.offset+=8),this},o.writeUInt64=o.writeUint64,o.readUint64=function(t){var r="undefined"==typeof t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");if(t>>>=0,0>t||t+8>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+8) <= "+this.buffer.byteLength)}var i=0,n=0;this.littleEndian?(i=this.view[t+2]<<16,i|=this.view[t+1]<<8,i|=this.view[t],i+=this.view[t+3]<<24>>>0,t+=4,n=this.view[t+2]<<16,n|=this.view[t+1]<<8,n|=this.view[t],n+=this.view[t+3]<<24>>>0):(n=this.view[t+1]<<16,n|=this.view[t+2]<<8,n|=this.view[t+3],n+=this.view[t]<<24>>>0,t+=4,i=this.view[t+1]<<16,i|=this.view[t+2]<<8,i|=this.view[t+3],i+=this.view[t]<<24>>>0);var f=new e(i,n,!0);return r&&(this.offset+=8),f},o.readUInt64=o.readUint64),o.writeFloat32=function(e,t){var r="undefined"==typeof t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e)throw TypeError("Illegal value: "+e+" (not a number)");if("number"!=typeof t||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");if(t>>>=0,0>t||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=4;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=4,n(this.view,e,t,this.littleEndian,23,4),r&&(this.offset+=4),this},o.writeFloat=o.writeFloat32,o.readFloat32=function(e){var t="undefined"==typeof e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");if(e>>>=0,0>e||e+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+4) <= "+this.buffer.byteLength)}var r=i(this.view,e,this.littleEndian,23,4);return t&&(this.offset+=4),r},o.readFloat=o.readFloat32,o.writeFloat64=function(e,t){var r="undefined"==typeof t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e)throw TypeError("Illegal value: "+e+" (not a number)");if("number"!=typeof t||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");if(t>>>=0,0>t||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=8;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=8,n(this.view,e,t,this.littleEndian,52,8),r&&(this.offset+=8),this},o.writeDouble=o.writeFloat64,o.readFloat64=function(e){var t="undefined"==typeof e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");if(e>>>=0,0>e||e+8>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+8) <= "+this.buffer.byteLength)}var r=i(this.view,e,this.littleEndian,52,8);return t&&(this.offset+=8),r},o.readDouble=o.readFloat64,f.MAX_VARINT32_BYTES=5,f.calculateVarint32=function(e){return e>>>=0,128>e?1:16384>e?2:1<<21>e?3:1<<28>e?4:5},f.zigZagEncode32=function(e){return((e|=0)<<1^e>>31)>>>0},f.zigZagDecode32=function(e){return e>>>1^-(1&e)|0},o.writeVarint32=function(e,t){var r="undefined"==typeof t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e|=0,"number"!=typeof t||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");if(t>>>=0,0>t||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}var i,n=f.calculateVarint32(e);t+=n;var o=this.buffer.byteLength;for(t>o&&this.resize((o*=2)>t?o:t),t-=n,e>>>=0;e>=128;)i=127&e|128,this.view[t++]=i,e>>>=7;return this.view[t++]=e,r?(this.offset=t,this):n},o.writeVarint32ZigZag=function(e,t){return this.writeVarint32(f.zigZagEncode32(e),t)},o.readVarint32=function(e){var t="undefined"==typeof e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");if(e>>>=0,0>e||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+1) <= "+this.buffer.byteLength)}var r,i=0,n=0;do{if(!this.noAssert&&e>this.limit){var f=Error("Truncated");throw f.truncated=!0,f}r=this.view[e++],5>i&&(n|=(127&r)<<7*i),++i}while(0!==(128&r));return n|=0,t?(this.offset=e,n):{value:n,length:i}},o.readVarint32ZigZag=function(e){var t=this.readVarint32(e);return"object"==typeof t?t.value=f.zigZagDecode32(t.value):t=f.zigZagDecode32(t),t},e&&(f.MAX_VARINT64_BYTES=10,f.calculateVarint64=function(t){"number"==typeof t?t=e.fromNumber(t):"string"==typeof t&&(t=e.fromString(t));var r=t.toInt()>>>0,i=t.shiftRightUnsigned(28).toInt()>>>0,n=t.shiftRightUnsigned(56).toInt()>>>0;return 0==n?0==i?16384>r?128>r?1:2:1<<21>r?3:4:16384>i?128>i?5:6:1<<21>i?7:8:128>n?9:10},f.zigZagEncode64=function(t){return"number"==typeof t?t=e.fromNumber(t,!1):"string"==typeof t?t=e.fromString(t,!1):t.unsigned!==!1&&(t=t.toSigned()),t.shiftLeft(1).xor(t.shiftRight(63)).toUnsigned()},f.zigZagDecode64=function(t){return"number"==typeof t?t=e.fromNumber(t,!1):"string"==typeof t?t=e.fromString(t,!1):t.unsigned!==!1&&(t=t.toSigned()),t.shiftRightUnsigned(1).xor(t.and(e.ONE).toSigned().negate()).toSigned()},o.writeVarint64=function(t,r){var i="undefined"==typeof r;if(i&&(r=this.offset),!this.noAssert){if("number"==typeof t)t=e.fromNumber(t);else if("string"==typeof t)t=e.fromString(t);else if(!(t&&t instanceof e))throw TypeError("Illegal value: "+t+" (not an integer or Long)");if("number"!=typeof r||r%1!==0)throw TypeError("Illegal offset: "+r+" (not an integer)");if(r>>>=0,0>r||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}"number"==typeof t?t=e.fromNumber(t,!1):"string"==typeof t?t=e.fromString(t,!1):t.unsigned!==!1&&(t=t.toSigned());var n=f.calculateVarint64(t),o=t.toInt()>>>0,s=t.shiftRightUnsigned(28).toInt()>>>0,h=t.shiftRightUnsigned(56).toInt()>>>0;r+=n;var a=this.buffer.byteLength;switch(r>a&&this.resize((a*=2)>r?a:r),r-=n,n){case 10:this.view[r+9]=h>>>7&1;case 9:this.view[r+8]=9!==n?128|h:127&h;case 8:this.view[r+7]=8!==n?s>>>21|128:s>>>21&127;case 7:this.view[r+6]=7!==n?s>>>14|128:s>>>14&127;case 6:this.view[r+5]=6!==n?s>>>7|128:s>>>7&127;case 5:this.view[r+4]=5!==n?128|s:127&s;case 4:this.view[r+3]=4!==n?o>>>21|128:o>>>21&127;case 3:this.view[r+2]=3!==n?o>>>14|128:o>>>14&127;case 2:this.view[r+1]=2!==n?o>>>7|128:o>>>7&127;case 1:this.view[r]=1!==n?128|o:127&o}return i?(this.offset+=n,this):n},o.writeVarint64ZigZag=function(e,t){return this.writeVarint64(f.zigZagEncode64(e),t)},o.readVarint64=function(t){var r="undefined"==typeof t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");if(t>>>=0,0>t||t+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+1) <= "+this.buffer.byteLength)}var i=t,n=0,f=0,o=0,s=0;if(s=this.view[t++],n=127&s,128&s&&(s=this.view[t++],n|=(127&s)<<7,(128&s||this.noAssert&&"undefined"==typeof s)&&(s=this.view[t++],n|=(127&s)<<14,(128&s||this.noAssert&&"undefined"==typeof s)&&(s=this.view[t++],n|=(127&s)<<21,(128&s||this.noAssert&&"undefined"==typeof s)&&(s=this.view[t++],f=127&s,(128&s||this.noAssert&&"undefined"==typeof s)&&(s=this.view[t++],f|=(127&s)<<7,(128&s||this.noAssert&&"undefined"==typeof s)&&(s=this.view[t++],f|=(127&s)<<14,(128&s||this.noAssert&&"undefined"==typeof s)&&(s=this.view[t++],f|=(127&s)<<21,(128&s||this.noAssert&&"undefined"==typeof s)&&(s=this.view[t++],o=127&s,(128&s||this.noAssert&&"undefined"==typeof s)&&(s=this.view[t++],o|=(127&s)<<7,128&s||this.noAssert&&"undefined"==typeof s))))))))))throw Error("Buffer overrun");var h=e.fromBits(n|f<<28,f>>>4|o<<24,!1);return r?(this.offset=t,h):{value:h,length:t-i}},o.readVarint64ZigZag=function(t){var r=this.readVarint64(t);return r&&r.value instanceof e?r.value=f.zigZagDecode64(r.value):r=f.zigZagDecode64(r),r}),o.writeCString=function(e,r){var i="undefined"==typeof r;i&&(r=this.offset);var n,f=e.length;if(!this.noAssert){if("string"!=typeof e)throw TypeError("Illegal str: Not a string");for(n=0;f>n;++n)if(0===e.charCodeAt(n))throw RangeError("Illegal str: Contains NULL-characters");if("number"!=typeof r||r%1!==0)throw TypeError("Illegal offset: "+r+" (not an integer)");if(r>>>=0,0>r||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}f=l.calculateUTF16asUTF8(t(e))[1],r+=f+1;var o=this.buffer.byteLength;return r>o&&this.resize((o*=2)>r?o:r),r-=f+1,l.encodeUTF16toUTF8(t(e),function(e){this.view[r++]=e}.bind(this)),this.view[r++]=0,i?(this.offset=r,this):f},o.readCString=function(e){var t="undefined"==typeof e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");if(e>>>=0,0>e||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+1) <= "+this.buffer.byteLength)}var i,n=e,f=-1;return l.decodeUTF8toUTF16(function(){if(0===f)return null;if(e>=this.limit)throw RangeError("Illegal range: Truncated data, "+e+" < "+this.limit);return f=this.view[e++],0===f?null:f}.bind(this),i=r(),!0),t?(this.offset=e,i()):{string:i(),length:e-n}},o.writeIString=function(e,r){var i="undefined"==typeof r;if(i&&(r=this.offset),!this.noAssert){if("string"!=typeof e)throw TypeError("Illegal str: Not a string");if("number"!=typeof r||r%1!==0)throw TypeError("Illegal offset: "+r+" (not an integer)");if(r>>>=0,0>r||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}var n,f=r;n=l.calculateUTF16asUTF8(t(e),this.noAssert)[1],r+=4+n;var o=this.buffer.byteLength;if(r>o&&this.resize((o*=2)>r?o:r),r-=4+n,this.littleEndian?(this.view[r+3]=n>>>24&255,this.view[r+2]=n>>>16&255,this.view[r+1]=n>>>8&255,this.view[r]=255&n):(this.view[r]=n>>>24&255,this.view[r+1]=n>>>16&255,this.view[r+2]=n>>>8&255,this.view[r+3]=255&n),r+=4,l.encodeUTF16toUTF8(t(e),function(e){this.view[r++]=e}.bind(this)),r!==f+4+n)throw RangeError("Illegal range: Truncated data, "+r+" == "+(r+4+n));return i?(this.offset=r,this):r-f},o.readIString=function(e){var t="undefined"==typeof e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");if(e>>>=0,0>e||e+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+4) <= "+this.buffer.byteLength)}var r=e,i=this.readUint32(e),n=this.readUTF8String(i,f.METRICS_BYTES,e+=4);return e+=n.length,t?(this.offset=e,n.string):{string:n.string,length:e-r}},f.METRICS_CHARS="c",f.METRICS_BYTES="b",o.writeUTF8String=function(e,r){var i="undefined"==typeof r;if(i&&(r=this.offset),!this.noAssert){if("number"!=typeof r||r%1!==0)throw TypeError("Illegal offset: "+r+" (not an integer)");if(r>>>=0,0>r||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}var n,f=r;n=l.calculateUTF16asUTF8(t(e))[1],r+=n;var o=this.buffer.byteLength;return r>o&&this.resize((o*=2)>r?o:r),r-=n,l.encodeUTF16toUTF8(t(e),function(e){this.view[r++]=e}.bind(this)),i?(this.offset=r,this):r-f},o.writeString=o.writeUTF8String,f.calculateUTF8Chars=function(e){return l.calculateUTF16asUTF8(t(e))[0]},f.calculateUTF8Bytes=function(e){return l.calculateUTF16asUTF8(t(e))[1]},f.calculateString=f.calculateUTF8Bytes,o.readUTF8String=function(e,t,i){"number"==typeof t&&(i=t,t=void 0);var n="undefined"==typeof i;if(n&&(i=this.offset),"undefined"==typeof t&&(t=f.METRICS_CHARS),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal length: "+e+" (not an integer)");if(e|=0,"number"!=typeof i||i%1!==0)throw TypeError("Illegal offset: "+i+" (not an integer)");if(i>>>=0,0>i||i+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+i+" (+0) <= "+this.buffer.byteLength)}var o,s=0,h=i;if(t===f.METRICS_CHARS){if(o=r(),l.decodeUTF8(function(){return e>s&&i>>=0,0>i||i+e>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+i+" (+"+e+") <= "+this.buffer.byteLength)}var a=i+e;if(l.decodeUTF8toUTF16(function(){return a>i?this.view[i++]:null}.bind(this),o=r(),this.noAssert),i!==a)throw RangeError("Illegal range: Truncated data, "+i+" == "+a);return n?(this.offset=i,o()):{string:o(),length:i-h}}throw TypeError("Unsupported metrics: "+t)},o.readString=o.readUTF8String,o.writeVString=function(e,r){var i="undefined"==typeof r;if(i&&(r=this.offset),!this.noAssert){if("string"!=typeof e)throw TypeError("Illegal str: Not a string");if("number"!=typeof r||r%1!==0)throw TypeError("Illegal offset: "+r+" (not an integer)");if(r>>>=0,0>r||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}var n,o,s=r;n=l.calculateUTF16asUTF8(t(e),this.noAssert)[1],o=f.calculateVarint32(n),r+=o+n;var h=this.buffer.byteLength;if(r>h&&this.resize((h*=2)>r?h:r),r-=o+n,r+=this.writeVarint32(n,r),l.encodeUTF16toUTF8(t(e),function(e){this.view[r++]=e}.bind(this)),r!==s+n+o)throw RangeError("Illegal range: Truncated data, "+r+" == "+(r+n+o));return i?(this.offset=r,this):r-s},o.readVString=function(e){var t="undefined"==typeof e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");if(e>>>=0,0>e||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+1) <= "+this.buffer.byteLength)}var r=e,i=this.readVarint32(e),n=this.readUTF8String(i.value,f.METRICS_BYTES,e+=i.length);return e+=n.length,t?(this.offset=e,n.string):{string:n.string,length:e-r}},o.append=function(e,t,r){("number"==typeof t||"string"!=typeof t)&&(r=t,t=void 0);var i="undefined"==typeof r;if(i&&(r=this.offset),!this.noAssert){if("number"!=typeof r||r%1!==0)throw TypeError("Illegal offset: "+r+" (not an integer)");if(r>>>=0,0>r||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}e instanceof f||(e=f.wrap(e,t));var n=e.limit-e.offset;if(0>=n)return this;r+=n;var o=this.buffer.byteLength;return r>o&&this.resize((o*=2)>r?o:r),r-=n,this.view.set(e.view.subarray(e.offset,e.limit),r),e.offset+=n,i&&(this.offset+=n),this},o.appendTo=function(e,t){return e.append(this,t),this},o.assert=function(e){return this.noAssert=!e,this},o.capacity=function(){return this.buffer.byteLength},o.clear=function(){return this.offset=0,this.limit=this.buffer.byteLength,this.markedOffset=-1,this},o.clone=function(e){var t=new f(0,this.littleEndian,this.noAssert);return e?(t.buffer=new ArrayBuffer(this.buffer.byteLength),t.view=new Uint8Array(t.buffer)):(t.buffer=this.buffer,t.view=this.view),t.offset=this.offset,t.markedOffset=this.markedOffset,t.limit=this.limit,t},o.compact=function(e,t){if("undefined"==typeof e&&(e=this.offset),"undefined"==typeof t&&(t=this.limit),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal begin: Not an integer");if(e>>>=0,"number"!=typeof t||t%1!==0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,0>e||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}if(0===e&&t===this.buffer.byteLength)return this;var r=t-e;if(0===r)return this.buffer=s,this.view=null,this.markedOffset>=0&&(this.markedOffset-=e),this.offset=0,this.limit=0,this;var i=new ArrayBuffer(r),n=new Uint8Array(i);return n.set(this.view.subarray(e,t)),this.buffer=i,this.view=n,this.markedOffset>=0&&(this.markedOffset-=e),this.offset=0,this.limit=r,this},o.copy=function(e,t){if("undefined"==typeof e&&(e=this.offset),"undefined"==typeof t&&(t=this.limit),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal begin: Not an integer");if(e>>>=0,"number"!=typeof t||t%1!==0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,0>e||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}if(e===t)return new f(0,this.littleEndian,this.noAssert);var r=t-e,i=new f(r,this.littleEndian,this.noAssert);return i.offset=0,i.limit=r,i.markedOffset>=0&&(i.markedOffset-=e),this.copyTo(i,0,e,t),i},o.copyTo=function(e,t,r,i){var n,o;if(!this.noAssert&&!f.isByteBuffer(e))throw TypeError("Illegal target: Not a ByteBuffer");if(t=(o="undefined"==typeof t)?e.offset:0|t,r=(n="undefined"==typeof r)?this.offset:0|r,i="undefined"==typeof i?this.limit:0|i,0>t||t>e.buffer.byteLength)throw RangeError("Illegal target range: 0 <= "+t+" <= "+e.buffer.byteLength);if(0>r||i>this.buffer.byteLength)throw RangeError("Illegal source range: 0 <= "+r+" <= "+this.buffer.byteLength);var s=i-r;return 0===s?e:(e.ensureCapacity(t+s),e.view.set(this.view.subarray(r,i),t),n&&(this.offset+=s),o&&(e.offset+=s),this)},o.ensureCapacity=function(e){var t=this.buffer.byteLength;return e>t?this.resize((t*=2)>e?t:e):this},o.fill=function(e,t,r){var i="undefined"==typeof t;if(i&&(t=this.offset),"string"==typeof e&&e.length>0&&(e=e.charCodeAt(0)),"undefined"==typeof t&&(t=this.offset),"undefined"==typeof r&&(r=this.limit),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e|=0,"number"!=typeof t||t%1!==0)throw TypeError("Illegal begin: Not an integer");if(t>>>=0,"number"!=typeof r||r%1!==0)throw TypeError("Illegal end: Not an integer");if(r>>>=0,0>t||t>r||r>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+t+" <= "+r+" <= "+this.buffer.byteLength)}if(t>=r)return this;for(;r>t;)this.view[t++]=e;return i&&(this.offset=t),this},o.flip=function(){return this.limit=this.offset,this.offset=0,this},o.mark=function(e){if(e="undefined"==typeof e?this.offset:e,!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");if(e>>>=0,0>e||e+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+0) <= "+this.buffer.byteLength)}return this.markedOffset=e,this},o.order=function(e){if(!this.noAssert&&"boolean"!=typeof e)throw TypeError("Illegal littleEndian: Not a boolean");return this.littleEndian=!!e,this},o.LE=function(e){ return this.littleEndian="undefined"!=typeof e?!!e:!0,this},o.BE=function(e){return this.littleEndian="undefined"!=typeof e?!e:!1,this},o.prepend=function(e,t,r){("number"==typeof t||"string"!=typeof t)&&(r=t,t=void 0);var i="undefined"==typeof r;if(i&&(r=this.offset),!this.noAssert){if("number"!=typeof r||r%1!==0)throw TypeError("Illegal offset: "+r+" (not an integer)");if(r>>>=0,0>r||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}e instanceof f||(e=f.wrap(e,t));var n=e.limit-e.offset;if(0>=n)return this;var o=n-r;if(o>0){var s=new ArrayBuffer(this.buffer.byteLength+o),h=new Uint8Array(s);h.set(this.view.subarray(r,this.buffer.byteLength),n),this.buffer=s,this.view=h,this.offset+=o,this.markedOffset>=0&&(this.markedOffset+=o),this.limit+=o,r+=o}else{new Uint8Array(this.buffer)}return this.view.set(e.view.subarray(e.offset,e.limit),r-n),e.offset=e.limit,i&&(this.offset-=n),this},o.prependTo=function(e,t){return e.prepend(this,t),this},o.printDebug=function(e){"function"!=typeof e&&(e=console.log.bind(console)),e(this.toString()+"\n-------------------------------------------------------------------\n"+this.toDebug(!0))},o.remaining=function(){return this.limit-this.offset},o.reset=function(){return this.markedOffset>=0?(this.offset=this.markedOffset,this.markedOffset=-1):this.offset=0,this},o.resize=function(e){if(!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal capacity: "+e+" (not an integer)");if(e|=0,0>e)throw RangeError("Illegal capacity: 0 <= "+e)}if(this.buffer.byteLength>>=0,"number"!=typeof t||t%1!==0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,0>e||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}return e===t?this:(Array.prototype.reverse.call(this.view.subarray(e,t)),this)},o.skip=function(e){if(!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal length: "+e+" (not an integer)");e|=0}var t=this.offset+e;if(!this.noAssert&&(0>t||t>this.buffer.byteLength))throw RangeError("Illegal length: 0 <= "+this.offset+" + "+e+" <= "+this.buffer.byteLength);return this.offset=t,this},o.slice=function(e,t){if("undefined"==typeof e&&(e=this.offset),"undefined"==typeof t&&(t=this.limit),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal begin: Not an integer");if(e>>>=0,"number"!=typeof t||t%1!==0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,0>e||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}var r=this.clone();return r.offset=e,r.limit=t,r},o.toBuffer=function(e){var t=this.offset,r=this.limit;if(!this.noAssert){if("number"!=typeof t||t%1!==0)throw TypeError("Illegal offset: Not an integer");if(t>>>=0,"number"!=typeof r||r%1!==0)throw TypeError("Illegal limit: Not an integer");if(r>>>=0,0>t||t>r||r>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+t+" <= "+r+" <= "+this.buffer.byteLength)}if(!e&&0===t&&r===this.buffer.byteLength)return this.buffer;if(t===r)return s;var i=new ArrayBuffer(r-t);return new Uint8Array(i).set(new Uint8Array(this.buffer).subarray(t,r),0),i},o.toArrayBuffer=o.toBuffer,o.toString=function(e,t,r){if("undefined"==typeof e)return"ByteBufferAB(offset="+this.offset+",markedOffset="+this.markedOffset+",limit="+this.limit+",capacity="+this.capacity()+")";switch("number"==typeof e&&(e="utf8",t=e,r=t),e){case"utf8":return this.toUTF8(t,r);case"base64":return this.toBase64(t,r);case"hex":return this.toHex(t,r);case"binary":return this.toBinary(t,r);case"debug":return this.toDebug();case"columns":return this.toColumns();default:throw Error("Unsupported encoding: "+e)}};var a=function(){for(var e={},t=[65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,43,47],r=[],i=0,n=t.length;n>i;++i)r[t[i]]=i;return e.encode=function(e,r){for(var i,n;null!==(i=e());)r(t[i>>2&63]),n=(3&i)<<4,null!==(i=e())?(n|=i>>4&15,r(t[63&(n|i>>4&15)]),n=(15&i)<<2,null!==(i=e())?(r(t[63&(n|i>>6&3)]),r(t[63&i])):(r(t[63&n]),r(61))):(r(t[63&n]),r(61),r(61))},e.decode=function(e,t){function i(e){throw Error("Illegal character code: "+e)}for(var n,f,o;null!==(n=e());)if(f=r[n],"undefined"==typeof f&&i(n),null!==(n=e())&&(o=r[n],"undefined"==typeof o&&i(n),t(f<<2>>>0|(48&o)>>4),null!==(n=e()))){if(f=r[n],"undefined"==typeof f){if(61===n)break;i(n)}if(t((15&o)<<4>>>0|(60&f)>>2),null!==(n=e())){if(o=r[n],"undefined"==typeof o){if(61===n)break;i(n)}t((3&f)<<6>>>0|o)}}},e.test=function(e){return/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/.test(e)},e}();o.toBase64=function(e,t){if("undefined"==typeof e&&(e=this.offset),"undefined"==typeof t&&(t=this.limit),e=0|e,t=0|t,0>e||t>this.capacity||e>t)throw RangeError("begin, end");var i;return a.encode(function(){return t>e?this.view[e++]:null}.bind(this),i=r()),i()},f.fromBase64=function(e,r){if("string"!=typeof e)throw TypeError("str");var i=new f(e.length/4*3,r),n=0;return a.decode(t(e),function(e){i.view[n++]=e}),i.limit=n,i},f.btoa=function(e){return f.fromBinary(e).toBase64()},f.atob=function(e){return f.fromBase64(e).toBinary()},o.toBinary=function(e,t){if("undefined"==typeof e&&(e=this.offset),"undefined"==typeof t&&(t=this.limit),e|=0,t|=0,0>e||t>this.capacity()||e>t)throw RangeError("begin, end");if(e===t)return"";for(var r=[],i=[];t>e;)r.push(this.view[e++]),r.length>=1024&&(i.push(String.fromCharCode.apply(String,r)),r=[]);return i.join("")+String.fromCharCode.apply(String,r)},f.fromBinary=function(e,t){if("string"!=typeof e)throw TypeError("str");for(var r,i=0,n=e.length,o=new f(n,t);n>i;){if(r=e.charCodeAt(i),r>255)throw RangeError("illegal char code: "+r);o.view[i++]=r}return o.limit=n,o},o.toDebug=function(e){for(var t,r=-1,i=this.buffer.byteLength,n="",f="",o="";i>r;){if(-1!==r&&(t=this.view[r],n+=16>t?"0"+t.toString(16).toUpperCase():t.toString(16).toUpperCase(),e&&(f+=t>32&&127>t?String.fromCharCode(t):".")),++r,e&&r>0&&r%16===0&&r!==i){for(;n.length<51;)n+=" ";o+=n+f+"\n",n=f=""}n+=r===this.offset&&r===this.limit?r===this.markedOffset?"!":"|":r===this.offset?r===this.markedOffset?"[":"<":r===this.limit?r===this.markedOffset?"]":">":r===this.markedOffset?"'":e||0!==r&&r!==i?" ":""}if(e&&" "!==n){for(;n.length<51;)n+=" ";o+=n+f+"\n"}return e?o:n},f.fromDebug=function(e,t,r){for(var i,n,o=e.length,s=new f((o+1)/3|0,t,r),h=0,a=0,l=!1,u=!1,g=!1,y=!1,b=!1;o>h;){switch(i=e.charAt(h++)){case"!":if(!r){if(u||g||y){b=!0;break}u=g=y=!0}s.offset=s.markedOffset=s.limit=a,l=!1;break;case"|":if(!r){if(u||y){b=!0;break}u=y=!0}s.offset=s.limit=a,l=!1;break;case"[":if(!r){if(u||g){b=!0;break}u=g=!0}s.offset=s.markedOffset=a,l=!1;break;case"<":if(!r){if(u){b=!0;break}u=!0}s.offset=a,l=!1;break;case"]":if(!r){if(y||g){b=!0;break}y=g=!0}s.limit=s.markedOffset=a,l=!1;break;case">":if(!r){if(y){b=!0;break}y=!0}s.limit=a,l=!1;break;case"'":if(!r){if(g){b=!0;break}g=!0}s.markedOffset=a,l=!1;break;case" ":l=!1;break;default:if(!r&&l){b=!0;break}if(n=parseInt(i+e.charAt(h++),16),!r&&(isNaN(n)||0>n||n>255))throw TypeError("Illegal str: Not a debug encoded string");s.view[a++]=n,l=!0}if(b)throw TypeError("Illegal str: Invalid symbol at "+h)}if(!r){if(!u||!y)throw TypeError("Illegal str: Missing offset or limit");if(a>>=0,"number"!=typeof t||t%1!==0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,0>e||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}for(var r,i=new Array(t-e);t>e;)r=this.view[e++],16>r?i.push("0",r.toString(16)):i.push(r.toString(16));return i.join("")},f.fromHex=function(e,t,r){if(!r){if("string"!=typeof e)throw TypeError("Illegal str: Not a string");if(e.length%2!==0)throw TypeError("Illegal str: Length not a multiple of 2")}for(var i,n=e.length,o=new f(n/2|0,t),s=0,h=0;n>s;s+=2){if(i=parseInt(e.substring(s,s+2),16),!r&&(!isFinite(i)||0>i||i>255))throw TypeError("Illegal str: Contains non-hex characters");o.view[h++]=i}return o.limit=h,o};var l=function(){var e={};return e.MAX_CODEPOINT=1114111,e.encodeUTF8=function(e,t){var r=null;for("number"==typeof e&&(r=e,e=function(){return null});null!==r||null!==(r=e());)128>r?t(127&r):2048>r?(t(r>>6&31|192),t(63&r|128)):65536>r?(t(r>>12&15|224),t(r>>6&63|128),t(63&r|128)):(t(r>>18&7|240),t(r>>12&63|128),t(r>>6&63|128),t(63&r|128)),r=null},e.decodeUTF8=function(e,t){for(var r,i,n,f,o=function(e){e=e.slice(0,e.indexOf(null));var t=Error(e.toString());throw t.name="TruncatedError",t.bytes=e,t};null!==(r=e());)if(0===(128&r))t(r);else if(192===(224&r))null===(i=e())&&o([r,i]),t((31&r)<<6|63&i);else if(224===(240&r))(null===(i=e())||null===(n=e()))&&o([r,i,n]),t((15&r)<<12|(63&i)<<6|63&n);else{if(240!==(248&r))throw RangeError("Illegal starting byte: "+r);(null===(i=e())||null===(n=e())||null===(f=e()))&&o([r,i,n,f]),t((7&r)<<18|(63&i)<<12|(63&n)<<6|63&f)}},e.UTF16toUTF8=function(e,t){for(var r,i=null;;){if(null===(r=null!==i?i:e()))break;r>=55296&&57343>=r&&null!==(i=e())&&i>=56320&&57343>=i?(t(1024*(r-55296)+i-56320+65536),i=null):t(r)}null!==i&&t(i)},e.UTF8toUTF16=function(e,t){var r=null;for("number"==typeof e&&(r=e,e=function(){return null});null!==r||null!==(r=e());)65535>=r?t(r):(r-=65536,t((r>>10)+55296),t(r%1024+56320)),r=null},e.encodeUTF16toUTF8=function(t,r){e.UTF16toUTF8(t,function(t){e.encodeUTF8(t,r)})},e.decodeUTF8toUTF16=function(t,r){e.decodeUTF8(t,function(t){e.UTF8toUTF16(t,r)})},e.calculateCodePoint=function(e){return 128>e?1:2048>e?2:65536>e?3:4},e.calculateUTF8=function(e){for(var t,r=0;null!==(t=e());)r+=128>t?1:2048>t?2:65536>t?3:4;return r},e.calculateUTF16asUTF8=function(t){var r=0,i=0;return e.UTF16toUTF8(t,function(e){++r,i+=128>e?1:2048>e?2:65536>e?3:4}),[r,i]},e}();return o.toUTF8=function(e,t){if("undefined"==typeof e&&(e=this.offset),"undefined"==typeof t&&(t=this.limit),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal begin: Not an integer");if(e>>>=0,"number"!=typeof t||t%1!==0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,0>e||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}var i;try{l.decodeUTF8toUTF16(function(){return t>e?this.view[e++]:null}.bind(this),i=r())}catch(n){if(e!==t)throw RangeError("Illegal range: Truncated data, "+e+" != "+t)}return i()},f.fromUTF8=function(e,r,i){if(!i&&"string"!=typeof e)throw TypeError("Illegal str: Not a string");var n=new f(l.calculateUTF16asUTF8(t(e),!0)[1],r,i),o=0;return l.encodeUTF16toUTF8(t(e),function(e){n.view[o++]=e}),n.limit=o,n},f}); },{"long":23}],23:[function(require,module,exports){ -!function(i,t){"function"==typeof define&&define.amd?define([],t):"function"==typeof require&&"object"==typeof module&&module&&module.exports?module.exports=t():(i.dcodeIO=i.dcodeIO||{}).Long=t()}(this,function(){"use strict";function i(i,t,n){this.low=0|i,this.high=0|t,this.unsigned=!!n}i.__isLong__,Object.defineProperty(i.prototype,"__isLong__",{value:!0,enumerable:!1,configurable:!1}),i.isLong=function(i){return(i&&i.__isLong__)===!0};var t={},n={};i.fromInt=function(e,r){var s,h,o;return r?(e>>>=0,(o=e>=0&&256>e)&&(h=n[e])?h:(s=new i(e,0>(0|e)?-1:0,!0),o&&(n[e]=s),s)):(e=0|e,(o=e>=-128&&128>e)&&(h=t[e])?h:(s=new i(e,0>e?-1:0,!1),o&&(t[e]=s),s))},i.fromNumber=function(t,n){return n=!!n,isNaN(t)||!isFinite(t)?i.ZERO:!n&&-o>=t?i.MIN_VALUE:!n&&t+1>=o?i.MAX_VALUE:n&&t>=h?i.MAX_UNSIGNED_VALUE:0>t?i.fromNumber(-t,n).neg():new i(t%s|0,t/s|0,n)},i.fromBits=function(t,n,e){return new i(t,n,e)},i.fromString=function(t,n,e){if(0===t.length)throw Error("number format error: empty string");if("NaN"===t||"Infinity"===t||"+Infinity"===t||"-Infinity"===t)return i.ZERO;if("number"==typeof n&&(e=n,n=!1),e=e||10,2>e||e>36)throw Error("radix out of range: "+e);var r;if((r=t.indexOf("-"))>0)throw Error('number format error: interior "-" character: '+t);if(0===r)return i.fromString(t.substring(1),n,e).neg();for(var s=i.fromNumber(Math.pow(e,8)),h=i.ZERO,o=0;ou){var f=i.fromNumber(Math.pow(e,u));h=h.mul(f).add(i.fromNumber(g))}else h=h.mul(s),h=h.add(i.fromNumber(g))}return h.unsigned=n,h},i.fromValue=function(t){return t instanceof i?t:"number"==typeof t?i.fromNumber(t):"string"==typeof t?i.fromString(t):new i(t.low,t.high,t.unsigned)};var e=65536,r=1<<24,s=e*e,h=s*s,o=h/2,u=i.fromInt(r);i.ZERO=i.fromInt(0),i.UZERO=i.fromInt(0,!0),i.ONE=i.fromInt(1),i.UONE=i.fromInt(1,!0),i.NEG_ONE=i.fromInt(-1),i.MAX_VALUE=new i(-1,2147483647,!1),i.MAX_UNSIGNED_VALUE=new i(-1,-1,!0),i.MIN_VALUE=new i(0,-2147483648,!1);var g=i.prototype;return g.toInt=function(){return this.unsigned?this.low>>>0:this.low},g.toNumber=function(){return this.unsigned?(this.high>>>0)*s+(this.low>>>0):this.high*s+(this.low>>>0)},g.toString=function(t){if(t=t||10,2>t||t>36)throw RangeError("radix out of range: "+t);if(this.isZero())return"0";var n;if(this.isNegative()){if(this.eq(i.MIN_VALUE)){var e=i.fromNumber(t),r=this.div(e);return n=r.mul(e).sub(this),r.toString(t)+n.toInt().toString(t)}return"-"+this.neg().toString(t)}var s=i.fromNumber(Math.pow(t,6),this.unsigned);n=this;for(var h="";;){var o=n.div(s),u=n.sub(o.mul(s)).toInt()>>>0,g=u.toString(t);if(n=o,n.isZero())return g+h;for(;g.length<6;)g="0"+g;h=""+g+h}},g.getHighBits=function(){return this.high},g.getHighBitsUnsigned=function(){return this.high>>>0},g.getLowBits=function(){return this.low},g.getLowBitsUnsigned=function(){return this.low>>>0},g.getNumBitsAbs=function(){if(this.isNegative())return this.eq(i.MIN_VALUE)?64:this.neg().getNumBitsAbs();for(var t=0!=this.high?this.high:this.low,n=31;n>0&&0==(t&1<=0},g.isOdd=function(){return 1===(1&this.low)},g.isEven=function(){return 0===(1&this.low)},g.equals=function(t){return i.isLong(t)||(t=i.fromValue(t)),this.unsigned!==t.unsigned&&this.high>>>31===1&&t.high>>>31===1?!1:this.high===t.high&&this.low===t.low},g.eq=g.equals,g.notEquals=function(i){return!this.eq(i)},g.neq=g.notEquals,g.lessThan=function(i){return this.compare(i)<0},g.lt=g.lessThan,g.lessThanOrEqual=function(i){return this.compare(i)<=0},g.lte=g.lessThanOrEqual,g.greaterThan=function(i){return this.compare(i)>0},g.gt=g.greaterThan,g.greaterThanOrEqual=function(i){return this.compare(i)>=0},g.gte=g.greaterThanOrEqual,g.compare=function(t){if(i.isLong(t)||(t=i.fromValue(t)),this.eq(t))return 0;var n=this.isNegative(),e=t.isNegative();return n&&!e?-1:!n&&e?1:this.unsigned?t.high>>>0>this.high>>>0||t.high===this.high&&t.low>>>0>this.low>>>0?-1:1:this.sub(t).isNegative()?-1:1},g.comp=g.compare,g.negate=function(){return!this.unsigned&&this.eq(i.MIN_VALUE)?i.MIN_VALUE:this.not().add(i.ONE)},g.neg=g.negate,g.add=function(t){i.isLong(t)||(t=i.fromValue(t));var n=this.high>>>16,e=65535&this.high,r=this.low>>>16,s=65535&this.low,h=t.high>>>16,o=65535&t.high,u=t.low>>>16,g=65535&t.low,f=0,a=0,l=0,m=0;return m+=s+g,l+=m>>>16,m&=65535,l+=r+u,a+=l>>>16,l&=65535,a+=e+o,f+=a>>>16,a&=65535,f+=n+h,f&=65535,new i(l<<16|m,f<<16|a,this.unsigned)},g.subtract=function(t){return i.isLong(t)||(t=i.fromValue(t)),this.add(t.neg())},g.sub=g.subtract,g.multiply=function(t){if(this.isZero())return i.ZERO;if(i.isLong(t)||(t=i.fromValue(t)),t.isZero())return i.ZERO;if(this.eq(i.MIN_VALUE))return t.isOdd()?i.MIN_VALUE:i.ZERO;if(t.eq(i.MIN_VALUE))return this.isOdd()?i.MIN_VALUE:i.ZERO;if(this.isNegative())return t.isNegative()?this.neg().mul(t.neg()):this.neg().mul(t).neg();if(t.isNegative())return this.mul(t.neg()).neg();if(this.lt(u)&&t.lt(u))return i.fromNumber(this.toNumber()*t.toNumber(),this.unsigned);var n=this.high>>>16,e=65535&this.high,r=this.low>>>16,s=65535&this.low,h=t.high>>>16,o=65535&t.high,g=t.low>>>16,f=65535&t.low,a=0,l=0,m=0,d=0;return d+=s*f,m+=d>>>16,d&=65535,m+=r*f,l+=m>>>16,m&=65535,m+=s*g,l+=m>>>16,m&=65535,l+=e*f,a+=l>>>16,l&=65535,l+=r*g,a+=l>>>16,l&=65535,l+=s*o,a+=l>>>16,l&=65535,a+=n*f+e*g+r*o+s*h,a&=65535,new i(m<<16|d,a<<16|l,this.unsigned)},g.mul=g.multiply,g.divide=function(t){if(i.isLong(t)||(t=i.fromValue(t)),t.isZero())throw Error("division by zero");if(this.isZero())return this.unsigned?i.UZERO:i.ZERO;var n,e,r;if(this.eq(i.MIN_VALUE)){if(t.eq(i.ONE)||t.eq(i.NEG_ONE))return i.MIN_VALUE;if(t.eq(i.MIN_VALUE))return i.ONE;var s=this.shr(1);return n=s.div(t).shl(1),n.eq(i.ZERO)?t.isNegative()?i.ONE:i.NEG_ONE:(e=this.sub(t.mul(n)),r=n.add(e.div(t)))}if(t.eq(i.MIN_VALUE))return this.unsigned?i.UZERO:i.ZERO;if(this.isNegative())return t.isNegative()?this.neg().div(t.neg()):this.neg().div(t).neg();if(t.isNegative())return this.div(t.neg()).neg();for(r=i.ZERO,e=this;e.gte(t);){n=Math.max(1,Math.floor(e.toNumber()/t.toNumber()));for(var h=Math.ceil(Math.log(n)/Math.LN2),o=48>=h?1:Math.pow(2,h-48),u=i.fromNumber(n),g=u.mul(t);g.isNegative()||g.gt(e);)n-=o,u=i.fromNumber(n,this.unsigned),g=u.mul(t);u.isZero()&&(u=i.ONE),r=r.add(u),e=e.sub(g)}return r},g.div=g.divide,g.modulo=function(t){return i.isLong(t)||(t=i.fromValue(t)),this.sub(this.div(t).mul(t))},g.mod=g.modulo,g.not=function(){return new i(~this.low,~this.high,this.unsigned)},g.and=function(t){return i.isLong(t)||(t=i.fromValue(t)),new i(this.low&t.low,this.high&t.high,this.unsigned)},g.or=function(t){return i.isLong(t)||(t=i.fromValue(t)),new i(this.low|t.low,this.high|t.high,this.unsigned)},g.xor=function(t){return i.isLong(t)||(t=i.fromValue(t)),new i(this.low^t.low,this.high^t.high,this.unsigned)},g.shiftLeft=function(t){return i.isLong(t)&&(t=t.toInt()),0===(t&=63)?this:32>t?new i(this.low<>>32-t,this.unsigned):new i(0,this.low<t?new i(this.low>>>t|this.high<<32-t,this.high>>t,this.unsigned):new i(this.high>>t-32,this.high>=0?0:-1,this.unsigned)},g.shr=g.shiftRight,g.shiftRightUnsigned=function(t){if(i.isLong(t)&&(t=t.toInt()),t&=63,0===t)return this;var n=this.high;if(32>t){var e=this.low;return new i(e>>>t|n<<32-t,n>>>t,this.unsigned)}return 32===t?new i(n,0,this.unsigned):new i(n>>>t-32,0,this.unsigned)},g.shru=g.shiftRightUnsigned,g.toSigned=function(){return this.unsigned?new i(this.low,this.high,!1):this},g.toUnsigned=function(){return this.unsigned?this:new i(this.low,this.high,!0)},i}); +!function(i,t){"function"==typeof define&&define.amd?define([],t):"function"==typeof require&&"object"==typeof module&&module&&module.exports?module.exports=t():(i.dcodeIO=i.dcodeIO||{}).Long=t()}(this,function(){"use strict";function i(i,t,n){this.low=0|i,this.high=0|t,this.unsigned=!!n}function t(i){return(i&&i.__isLong__)===!0}function n(i,t){var n,e,h;return t?(i>>>=0,(h=i>=0&&256>i)&&(e=o[i])?e:(n=r(i,0>(0|i)?-1:0,!0),h&&(o[i]=n),n)):(i|=0,(h=i>=-128&&128>i)&&(e=u[i])?e:(n=r(i,0>i?-1:0,!1),h&&(u[i]=n),n))}function e(i,t){if(isNaN(i)||!isFinite(i))return t?w:m;if(t){if(0>i)return w;if(i>=l)return E}else{if(-c>=i)return y;if(i+1>=c)return q}return 0>i?e(-i,t).neg():r(i%d|0,i/d|0,t)}function r(t,n,e){return new i(t,n,e)}function h(i,t,n){if(0===i.length)throw Error("empty string");if("NaN"===i||"Infinity"===i||"+Infinity"===i||"-Infinity"===i)return m;if("number"==typeof t&&(n=t,t=!1),n=n||10,2>n||n>36)throw RangeError("radix");var r;if((r=i.indexOf("-"))>0)throw Error("interior hyphen");if(0===r)return h(i.substring(1),t,n).neg();for(var s=e(g(n,8)),u=m,o=0;of){var d=e(g(n,f));u=u.mul(d).add(e(a))}else u=u.mul(s),u=u.add(e(a))}return u.unsigned=t,u}function s(t){return t instanceof i?t:"number"==typeof t?e(t):"string"==typeof t?h(t):r(t.low,t.high,t.unsigned)}i.__isLong__,Object.defineProperty(i.prototype,"__isLong__",{value:!0,enumerable:!1,configurable:!1}),i.isLong=t;var u={},o={};i.fromInt=n,i.fromNumber=e,i.fromBits=r;var g=Math.pow;i.fromString=h,i.fromValue=s;var f=65536,a=1<<24,d=f*f,l=d*d,c=l/2,v=n(a),m=n(0);i.ZERO=m;var w=n(0,!0);i.UZERO=w;var N=n(1);i.ONE=N;var b=n(1,!0);i.UONE=b;var p=n(-1);i.NEG_ONE=p;var q=r(-1,2147483647,!1);i.MAX_VALUE=q;var E=r(-1,-1,!0);i.MAX_UNSIGNED_VALUE=E;var y=r(0,-2147483648,!1);i.MIN_VALUE=y;var _=i.prototype;return _.toInt=function(){return this.unsigned?this.low>>>0:this.low},_.toNumber=function(){return this.unsigned?(this.high>>>0)*d+(this.low>>>0):this.high*d+(this.low>>>0)},_.toString=function(i){if(i=i||10,2>i||i>36)throw RangeError("radix");if(this.isZero())return"0";if(this.isNegative()){if(this.eq(y)){var t=e(i),n=this.div(t),r=n.mul(t).sub(this);return n.toString(i)+r.toInt().toString(i)}return"-"+this.neg().toString(i)}for(var h=e(g(i,6),this.unsigned),s=this,u="";;){var o=s.div(h),f=s.sub(o.mul(h)).toInt()>>>0,a=f.toString(i);if(s=o,s.isZero())return a+u;for(;a.length<6;)a="0"+a;u=""+a+u}},_.getHighBits=function(){return this.high},_.getHighBitsUnsigned=function(){return this.high>>>0},_.getLowBits=function(){return this.low},_.getLowBitsUnsigned=function(){return this.low>>>0},_.getNumBitsAbs=function(){if(this.isNegative())return this.eq(y)?64:this.neg().getNumBitsAbs();for(var i=0!=this.high?this.high:this.low,t=31;t>0&&0==(i&1<=0},_.isOdd=function(){return 1===(1&this.low)},_.isEven=function(){return 0===(1&this.low)},_.equals=function(i){return t(i)||(i=s(i)),this.unsigned!==i.unsigned&&this.high>>>31===1&&i.high>>>31===1?!1:this.high===i.high&&this.low===i.low},_.eq=_.equals,_.notEquals=function(i){return!this.eq(i)},_.neq=_.notEquals,_.lessThan=function(i){return this.comp(i)<0},_.lt=_.lessThan,_.lessThanOrEqual=function(i){return this.comp(i)<=0},_.lte=_.lessThanOrEqual,_.greaterThan=function(i){return this.comp(i)>0},_.gt=_.greaterThan,_.greaterThanOrEqual=function(i){return this.comp(i)>=0},_.gte=_.greaterThanOrEqual,_.compare=function(i){if(t(i)||(i=s(i)),this.eq(i))return 0;var n=this.isNegative(),e=i.isNegative();return n&&!e?-1:!n&&e?1:this.unsigned?i.high>>>0>this.high>>>0||i.high===this.high&&i.low>>>0>this.low>>>0?-1:1:this.sub(i).isNegative()?-1:1},_.comp=_.compare,_.negate=function(){return!this.unsigned&&this.eq(y)?y:this.not().add(N)},_.neg=_.negate,_.add=function(i){t(i)||(i=s(i));var n=this.high>>>16,e=65535&this.high,h=this.low>>>16,u=65535&this.low,o=i.high>>>16,g=65535&i.high,f=i.low>>>16,a=65535&i.low,d=0,l=0,c=0,v=0;return v+=u+a,c+=v>>>16,v&=65535,c+=h+f,l+=c>>>16,c&=65535,l+=e+g,d+=l>>>16,l&=65535,d+=n+o,d&=65535,r(c<<16|v,d<<16|l,this.unsigned)},_.subtract=function(i){return t(i)||(i=s(i)),this.add(i.neg())},_.sub=_.subtract,_.multiply=function(i){if(this.isZero())return m;if(t(i)||(i=s(i)),i.isZero())return m;if(this.eq(y))return i.isOdd()?y:m;if(i.eq(y))return this.isOdd()?y:m;if(this.isNegative())return i.isNegative()?this.neg().mul(i.neg()):this.neg().mul(i).neg();if(i.isNegative())return this.mul(i.neg()).neg();if(this.lt(v)&&i.lt(v))return e(this.toNumber()*i.toNumber(),this.unsigned);var n=this.high>>>16,h=65535&this.high,u=this.low>>>16,o=65535&this.low,g=i.high>>>16,f=65535&i.high,a=i.low>>>16,d=65535&i.low,l=0,c=0,w=0,N=0;return N+=o*d,w+=N>>>16,N&=65535,w+=u*d,c+=w>>>16,w&=65535,w+=o*a,c+=w>>>16,w&=65535,c+=h*d,l+=c>>>16,c&=65535,c+=u*a,l+=c>>>16,c&=65535,c+=o*f,l+=c>>>16,c&=65535,l+=n*d+h*a+u*f+o*g,l&=65535,r(w<<16|N,l<<16|c,this.unsigned)},_.mul=_.multiply,_.divide=function(i){if(t(i)||(i=s(i)),i.isZero())throw Error("division by zero");if(this.isZero())return this.unsigned?w:m;var n,r,h;if(this.eq(y)){if(i.eq(N)||i.eq(p))return y;if(i.eq(y))return N;var u=this.shr(1);return n=u.div(i).shl(1),n.eq(m)?i.isNegative()?N:p:(r=this.sub(i.mul(n)),h=n.add(r.div(i)))}if(i.eq(y))return this.unsigned?w:m;if(this.isNegative())return i.isNegative()?this.neg().div(i.neg()):this.neg().div(i).neg();if(i.isNegative())return this.div(i.neg()).neg();for(h=m,r=this;r.gte(i);){n=Math.max(1,Math.floor(r.toNumber()/i.toNumber()));for(var o=Math.ceil(Math.log(n)/Math.LN2),f=48>=o?1:g(2,o-48),a=e(n),d=a.mul(i);d.isNegative()||d.gt(r);)n-=f,a=e(n,this.unsigned),d=a.mul(i);a.isZero()&&(a=N),h=h.add(a),r=r.sub(d)}return h},_.div=_.divide,_.modulo=function(i){return t(i)||(i=s(i)),this.sub(this.div(i).mul(i))},_.mod=_.modulo,_.not=function(){return r(~this.low,~this.high,this.unsigned)},_.and=function(i){return t(i)||(i=s(i)),r(this.low&i.low,this.high&i.high,this.unsigned)},_.or=function(i){return t(i)||(i=s(i)),r(this.low|i.low,this.high|i.high,this.unsigned)},_.xor=function(i){return t(i)||(i=s(i)),r(this.low^i.low,this.high^i.high,this.unsigned)},_.shiftLeft=function(i){return t(i)&&(i=i.toInt()),0===(i&=63)?this:32>i?r(this.low<>>32-i,this.unsigned):r(0,this.low<i?r(this.low>>>i|this.high<<32-i,this.high>>i,this.unsigned):r(this.high>>i-32,this.high>=0?0:-1,this.unsigned)},_.shr=_.shiftRight,_.shiftRightUnsigned=function(i){if(t(i)&&(i=i.toInt()),i&=63,0===i)return this;var n=this.high;if(32>i){var e=this.low;return r(e>>>i|n<<32-i,n>>>i,this.unsigned)}return 32===i?r(n,0,this.unsigned):r(n>>>i-32,0,this.unsigned)},_.shru=_.shiftRightUnsigned,_.toSigned=function(){return this.unsigned?r(this.low,this.high,!1):this},_.toUnsigned=function(){return this.unsigned?this:r(this.low,this.high,!0)},i}); },{}]},{},[18])(18) }); diff --git a/dist/machinetalk-protobuf.min.js.gz b/dist/machinetalk-protobuf.min.js.gz index 3dfc9ad337d4e346c64e866af62a76c870747263..a492f4f171850e65dd0971d49d149261220a73c4 100644 GIT binary patch literal 59564 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 a=3}tslVjj+{qNHx{{I1{86w*z0tNtg(nHq( literal 70104 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 M0W<(5;\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n */\r\n\r\n/**\r\n * @license protobuf.js (c) 2013 Daniel Wirtz \r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/protobuf.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (typeof define === 'function' && define[\"amd\"])\r\n define([\"bytebuffer\"], factory);\r\n /* CommonJS */ else if (typeof require === \"function\" && typeof module === \"object\" && module && module[\"exports\"])\r\n module[\"exports\"] = factory(require(\"bytebuffer\"), true);\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"ProtoBuf\"] = factory(global[\"dcodeIO\"][\"ByteBuffer\"]);\r\n\r\n})(this, function(ByteBuffer, isCommonJS) {\r\n \"use strict\";\r\n\r\n /**\r\n * The ProtoBuf namespace.\r\n * @exports ProtoBuf\r\n * @namespace\r\n * @expose\r\n */\r\n var ProtoBuf = {};\r\n\r\n /**\r\n * @type {!function(new: ByteBuffer, ...[*])}\r\n * @expose\r\n */\r\n ProtoBuf.ByteBuffer = ByteBuffer;\r\n\r\n /**\r\n * @type {?function(new: Long, ...[*])}\r\n * @expose\r\n */\r\n ProtoBuf.Long = ByteBuffer.Long || null;\r\n\r\n /**\r\n * ProtoBuf.js version.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.VERSION = \"5.0.0\";\r\n\r\n /**\r\n * Wire types.\r\n * @type {Object.}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES = {};\r\n\r\n /**\r\n * Varint wire type.\r\n * @type {number}\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.VARINT = 0;\r\n\r\n /**\r\n * Fixed 64 bits wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.BITS64 = 1;\r\n\r\n /**\r\n * Length delimited wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.LDELIM = 2;\r\n\r\n /**\r\n * Start group wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.STARTGROUP = 3;\r\n\r\n /**\r\n * End group wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.ENDGROUP = 4;\r\n\r\n /**\r\n * Fixed 32 bits wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.BITS32 = 5;\r\n\r\n /**\r\n * Packable wire types.\r\n * @type {!Array.}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.PACKABLE_WIRE_TYPES = [\r\n ProtoBuf.WIRE_TYPES.VARINT,\r\n ProtoBuf.WIRE_TYPES.BITS64,\r\n ProtoBuf.WIRE_TYPES.BITS32\r\n ];\r\n\r\n /**\r\n * Types.\r\n * @dict\r\n * @type {!Object.}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.TYPES = {\r\n // According to the protobuf spec.\r\n \"int32\": {\r\n name: \"int32\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: 0\r\n },\r\n \"uint32\": {\r\n name: \"uint32\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: 0\r\n },\r\n \"sint32\": {\r\n name: \"sint32\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: 0\r\n },\r\n \"int64\": {\r\n name: \"int64\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.ZERO : undefined\r\n },\r\n \"uint64\": {\r\n name: \"uint64\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.UZERO : undefined\r\n },\r\n \"sint64\": {\r\n name: \"sint64\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.ZERO : undefined\r\n },\r\n \"bool\": {\r\n name: \"bool\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: false\r\n },\r\n \"double\": {\r\n name: \"double\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS64,\r\n defaultValue: 0\r\n },\r\n \"string\": {\r\n name: \"string\",\r\n wireType: ProtoBuf.WIRE_TYPES.LDELIM,\r\n defaultValue: \"\"\r\n },\r\n \"bytes\": {\r\n name: \"bytes\",\r\n wireType: ProtoBuf.WIRE_TYPES.LDELIM,\r\n defaultValue: null // overridden in the code, must be a unique instance\r\n },\r\n \"fixed32\": {\r\n name: \"fixed32\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS32,\r\n defaultValue: 0\r\n },\r\n \"sfixed32\": {\r\n name: \"sfixed32\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS32,\r\n defaultValue: 0\r\n },\r\n \"fixed64\": {\r\n name: \"fixed64\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS64,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.UZERO : undefined\r\n },\r\n \"sfixed64\": {\r\n name: \"sfixed64\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS64,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.ZERO : undefined\r\n },\r\n \"float\": {\r\n name: \"float\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS32,\r\n defaultValue: 0\r\n },\r\n \"enum\": {\r\n name: \"enum\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: 0\r\n },\r\n \"message\": {\r\n name: \"message\",\r\n wireType: ProtoBuf.WIRE_TYPES.LDELIM,\r\n defaultValue: null\r\n },\r\n \"group\": {\r\n name: \"group\",\r\n wireType: ProtoBuf.WIRE_TYPES.STARTGROUP,\r\n defaultValue: null\r\n }\r\n };\r\n\r\n /**\r\n * Valid map key types.\r\n * @type {!Array.>}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.MAP_KEY_TYPES = [\r\n ProtoBuf.TYPES[\"int32\"],\r\n ProtoBuf.TYPES[\"sint32\"],\r\n ProtoBuf.TYPES[\"sfixed32\"],\r\n ProtoBuf.TYPES[\"uint32\"],\r\n ProtoBuf.TYPES[\"fixed32\"],\r\n ProtoBuf.TYPES[\"int64\"],\r\n ProtoBuf.TYPES[\"sint64\"],\r\n ProtoBuf.TYPES[\"sfixed64\"],\r\n ProtoBuf.TYPES[\"uint64\"],\r\n ProtoBuf.TYPES[\"fixed64\"],\r\n ProtoBuf.TYPES[\"bool\"],\r\n ProtoBuf.TYPES[\"string\"],\r\n ProtoBuf.TYPES[\"bytes\"]\r\n ];\r\n\r\n /**\r\n * Minimum field id.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.ID_MIN = 1;\r\n\r\n /**\r\n * Maximum field id.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.ID_MAX = 0x1FFFFFFF;\r\n\r\n /**\r\n * If set to `true`, field names will be converted from underscore notation to camel case. Defaults to `false`.\r\n * Must be set prior to parsing.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ProtoBuf.convertFieldsToCamelCase = false;\r\n\r\n /**\r\n * By default, messages are populated with (setX, set_x) accessors for each field. This can be disabled by\r\n * setting this to `false` prior to building messages.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ProtoBuf.populateAccessors = true;\r\n\r\n /**\r\n * By default, messages are populated with default values if a field is not present on the wire. To disable\r\n * this behavior, set this setting to `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ProtoBuf.populateDefaults = true;\r\n\r\n /**\n * @alias ProtoBuf.Util\n * @expose\n */\n ProtoBuf.Util = (function() {\n \"use strict\";\n\n /**\n * ProtoBuf utilities.\n * @exports ProtoBuf.Util\n * @namespace\n */\n var Util = {};\n\n /**\n * Flag if running in node or not.\n * @type {boolean}\n * @const\n * @expose\n */\n Util.IS_NODE = !!(\n typeof process === 'object' && process+'' === '[object process]' && !process['browser']\n );\n\n /**\n * Constructs a XMLHttpRequest object.\n * @return {XMLHttpRequest}\n * @throws {Error} If XMLHttpRequest is not supported\n * @expose\n */\n Util.XHR = function() {\n // No dependencies please, ref: http://www.quirksmode.org/js/xmlhttp.html\n var XMLHttpFactories = [\n function () {return new XMLHttpRequest()},\n function () {return new ActiveXObject(\"Msxml2.XMLHTTP\")},\n function () {return new ActiveXObject(\"Msxml3.XMLHTTP\")},\n function () {return new ActiveXObject(\"Microsoft.XMLHTTP\")}\n ];\n /** @type {?XMLHttpRequest} */\n var xhr = null;\n for (var i=0;i}\r\n * @expose\r\n */\r\n ProtoBuf.Lang = {\r\n\r\n // Characters always ending a statement\r\n DELIM: /[\\s\\{\\}=;:\\[\\],'\"\\(\\)<>]/g,\r\n\r\n // Field rules\r\n RULE: /^(?:required|optional|repeated|map)$/,\r\n\r\n // Field types\r\n TYPE: /^(?:double|float|int32|uint32|sint32|int64|uint64|sint64|fixed32|sfixed32|fixed64|sfixed64|bool|string|bytes)$/,\r\n\r\n // Names\r\n NAME: /^[a-zA-Z_][a-zA-Z_0-9]*$/,\r\n\r\n // Type definitions\r\n TYPEDEF: /^[a-zA-Z][a-zA-Z_0-9]*$/,\r\n\r\n // Type references\r\n TYPEREF: /^(?:\\.?[a-zA-Z_][a-zA-Z_0-9]*)+$/,\r\n\r\n // Fully qualified type references\r\n FQTYPEREF: /^(?:\\.[a-zA-Z][a-zA-Z_0-9]*)+$/,\r\n\r\n // All numbers\r\n NUMBER: /^-?(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+|([0-9]*(\\.[0-9]*)?([Ee][+-]?[0-9]+)?)|inf|nan)$/,\r\n\r\n // Decimal numbers\r\n NUMBER_DEC: /^(?:[1-9][0-9]*|0)$/,\r\n\r\n // Hexadecimal numbers\r\n NUMBER_HEX: /^0[xX][0-9a-fA-F]+$/,\r\n\r\n // Octal numbers\r\n NUMBER_OCT: /^0[0-7]+$/,\r\n\r\n // Floating point numbers\r\n NUMBER_FLT: /^([0-9]*(\\.[0-9]*)?([Ee][+-]?[0-9]+)?|inf|nan)$/,\r\n\r\n // Booleans\r\n BOOL: /^(?:true|false)$/i,\r\n\r\n // Id numbers\r\n ID: /^(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+)$/,\r\n\r\n // Negative id numbers (enum values)\r\n NEGID: /^\\-?(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+)$/,\r\n\r\n // Whitespaces\r\n WHITESPACE: /\\s/,\r\n\r\n // All strings\r\n STRING: /(?:\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\")|(?:'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)')/g,\r\n\r\n // Double quoted strings\r\n STRING_DQ: /(?:\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\")/g,\r\n\r\n // Single quoted strings\r\n STRING_SQ: /(?:'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)')/g\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.DotProto\r\n * @expose\r\n */\r\n ProtoBuf.DotProto = (function(ProtoBuf, Lang) {\r\n \"use strict\";\r\n\r\n /**\r\n * Utilities to parse .proto files.\r\n * @exports ProtoBuf.DotProto\r\n * @namespace\r\n */\r\n var DotProto = {};\r\n\r\n /**\r\n * Constructs a new Tokenizer.\r\n * @exports ProtoBuf.DotProto.Tokenizer\r\n * @class prototype tokenizer\r\n * @param {string} proto Proto to tokenize\r\n * @constructor\r\n */\r\n var Tokenizer = function(proto) {\r\n\r\n /**\r\n * Source to parse.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.source = proto+\"\";\r\n\r\n /**\r\n * Current index.\r\n * @type {number}\r\n * @expose\r\n */\r\n this.index = 0;\r\n\r\n /**\r\n * Current line.\r\n * @type {number}\r\n * @expose\r\n */\r\n this.line = 1;\r\n\r\n /**\r\n * Token stack.\r\n * @type {!Array.}\r\n * @expose\r\n */\r\n this.stack = [];\r\n\r\n /**\r\n * Opening character of the current string read, if any.\r\n * @type {?string}\r\n * @private\r\n */\r\n this._stringOpen = null;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.DotProto.Tokenizer.prototype\r\n * @inner\r\n */\r\n var TokenizerPrototype = Tokenizer.prototype;\r\n\r\n /**\r\n * Reads a string beginning at the current index.\r\n * @return {string}\r\n * @private\r\n */\r\n TokenizerPrototype._readString = function() {\r\n var re = this._stringOpen === '\"'\r\n ? Lang.STRING_DQ\r\n : Lang.STRING_SQ;\r\n re.lastIndex = this.index - 1; // Include the open quote\r\n var match = re.exec(this.source);\r\n if (!match)\r\n throw Error(\"unterminated string\");\r\n this.index = re.lastIndex;\r\n this.stack.push(this._stringOpen);\r\n this._stringOpen = null;\r\n return match[1];\r\n };\r\n\r\n /**\r\n * Gets the next token and advances by one.\r\n * @return {?string} Token or `null` on EOF\r\n * @expose\r\n */\r\n TokenizerPrototype.next = function() {\r\n if (this.stack.length > 0)\r\n return this.stack.shift();\r\n if (this.index >= this.source.length)\r\n return null;\r\n if (this._stringOpen !== null)\r\n return this._readString();\r\n\r\n var repeat,\r\n prev,\r\n next;\r\n do {\r\n repeat = false;\r\n\r\n // Strip white spaces\r\n while (Lang.WHITESPACE.test(next = this.source.charAt(this.index))) {\r\n if (next === '\\n')\r\n ++this.line;\r\n if (++this.index === this.source.length)\r\n return null;\r\n }\r\n\r\n // Strip comments\r\n if (this.source.charAt(this.index) === '/') {\r\n ++this.index;\r\n if (this.source.charAt(this.index) === '/') { // Line\r\n while (this.source.charAt(++this.index) !== '\\n')\r\n if (this.index == this.source.length)\r\n return null;\r\n ++this.index;\r\n ++this.line;\r\n repeat = true;\r\n } else if ((next = this.source.charAt(this.index)) === '*') { /* Block */\r\n do {\r\n if (next === '\\n')\r\n ++this.line;\r\n if (++this.index === this.source.length)\r\n return null;\r\n prev = next;\r\n next = this.source.charAt(this.index);\r\n } while (prev !== '*' || next !== '/');\r\n ++this.index;\r\n repeat = true;\r\n } else\r\n return '/';\r\n }\r\n } while (repeat);\r\n\r\n if (this.index === this.source.length)\r\n return null;\r\n\r\n // Read the next token\r\n var end = this.index;\r\n Lang.DELIM.lastIndex = 0;\r\n var delim = Lang.DELIM.test(this.source.charAt(end++));\r\n if (!delim)\r\n while(end < this.source.length && !Lang.DELIM.test(this.source.charAt(end)))\r\n ++end;\r\n var token = this.source.substring(this.index, this.index = end);\r\n if (token === '\"' || token === \"'\")\r\n this._stringOpen = token;\r\n return token;\r\n };\r\n\r\n /**\r\n * Peeks for the next token.\r\n * @return {?string} Token or `null` on EOF\r\n * @expose\r\n */\r\n TokenizerPrototype.peek = function() {\r\n if (this.stack.length === 0) {\r\n var token = this.next();\r\n if (token === null)\r\n return null;\r\n this.stack.push(token);\r\n }\r\n return this.stack[0];\r\n };\r\n\r\n /**\r\n * Skips a specific token and throws if it differs.\r\n * @param {string} expected Expected token\r\n * @throws {Error} If the actual token differs\r\n */\r\n TokenizerPrototype.skip = function(expected) {\r\n var actual = this.next();\r\n if (actual !== expected)\r\n throw Error(\"illegal '\"+actual+\"', '\"+expected+\"' expected\");\r\n };\r\n\r\n /**\r\n * Omits an optional token.\r\n * @param {string} expected Expected optional token\r\n * @returns {boolean} `true` if the token exists\r\n */\r\n TokenizerPrototype.omit = function(expected) {\r\n if (this.peek() === expected) {\r\n this.next();\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n /**\r\n * Returns a string representation of this object.\r\n * @return {string} String representation as of \"Tokenizer(index/length)\"\r\n * @expose\r\n */\r\n TokenizerPrototype.toString = function() {\r\n return \"Tokenizer (\"+this.index+\"/\"+this.source.length+\" at line \"+this.line+\")\";\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.DotProto.Tokenizer\r\n * @expose\r\n */\r\n DotProto.Tokenizer = Tokenizer;\r\n\r\n /**\r\n * Constructs a new Parser.\r\n * @exports ProtoBuf.DotProto.Parser\r\n * @class prototype parser\r\n * @param {string} source Source\r\n * @constructor\r\n */\r\n var Parser = function(source) {\r\n\r\n /**\r\n * Tokenizer.\r\n * @type {!ProtoBuf.DotProto.Tokenizer}\r\n * @expose\r\n */\r\n this.tn = new Tokenizer(source);\r\n\r\n /**\r\n * Whether parsing proto3 or not.\r\n * @type {boolean}\r\n */\r\n this.proto3 = false;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.DotProto.Parser.prototype\r\n * @inner\r\n */\r\n var ParserPrototype = Parser.prototype;\r\n\r\n /**\r\n * Parses the source.\r\n * @returns {!Object}\r\n * @throws {Error} If the source cannot be parsed\r\n * @expose\r\n */\r\n ParserPrototype.parse = function() {\r\n var topLevel = {\r\n \"name\": \"[ROOT]\", // temporary\r\n \"package\": null,\r\n \"messages\": [],\r\n \"enums\": [],\r\n \"imports\": [],\r\n \"options\": {},\r\n \"services\": []\r\n // \"syntax\": undefined\r\n };\r\n var token,\r\n head = true;\r\n try {\r\n while (token = this.tn.next()) {\r\n switch (token) {\r\n case 'package':\r\n if (!head || topLevel[\"package\"] !== null)\r\n throw Error(\"unexpected 'package'\");\r\n token = this.tn.next();\r\n if (!Lang.TYPEREF.test(token))\r\n throw Error(\"illegal package name: \" + token);\r\n this.tn.skip(\";\");\r\n topLevel[\"package\"] = token;\r\n break;\r\n case 'import':\r\n if (!head)\r\n throw Error(\"unexpected 'import'\");\r\n token = this.tn.peek();\r\n if (token === \"public\") // ignored\r\n this.tn.next();\r\n token = this._readString();\r\n this.tn.skip(\";\");\r\n topLevel[\"imports\"].push(token);\r\n break;\r\n case 'syntax':\r\n if (!head)\r\n throw Error(\"unexpected 'syntax'\");\r\n this.tn.skip(\"=\");\r\n if ((topLevel[\"syntax\"] = this._readString()) === \"proto3\")\r\n this.proto3 = true;\r\n this.tn.skip(\";\");\r\n break;\r\n case 'message':\r\n this._parseMessage(topLevel, null);\r\n head = false;\r\n break;\r\n case 'enum':\r\n this._parseEnum(topLevel);\r\n head = false;\r\n break;\r\n case 'option':\r\n this._parseOption(topLevel);\r\n break;\r\n case 'service':\r\n this._parseService(topLevel);\r\n break;\r\n case 'extend':\r\n this._parseExtend(topLevel);\r\n break;\r\n default:\r\n throw Error(\"unexpected '\" + token + \"'\");\r\n }\r\n }\r\n } catch (e) {\r\n e.message = \"Parse error at line \"+this.tn.line+\": \" + e.message;\r\n throw e;\r\n }\r\n delete topLevel[\"name\"];\r\n return topLevel;\r\n };\r\n\r\n /**\r\n * Parses the specified source.\r\n * @returns {!Object}\r\n * @throws {Error} If the source cannot be parsed\r\n * @expose\r\n */\r\n Parser.parse = function(source) {\r\n return new Parser(source).parse();\r\n };\r\n\r\n // ----- Conversion ------\r\n\r\n /**\r\n * Converts a numerical string to an id.\r\n * @param {string} value\r\n * @param {boolean=} mayBeNegative\r\n * @returns {number}\r\n * @inner\r\n */\r\n function mkId(value, mayBeNegative) {\r\n var id = -1,\r\n sign = 1;\r\n if (value.charAt(0) == '-') {\r\n sign = -1;\r\n value = value.substring(1);\r\n }\r\n if (Lang.NUMBER_DEC.test(value))\r\n id = parseInt(value);\r\n else if (Lang.NUMBER_HEX.test(value))\r\n id = parseInt(value.substring(2), 16);\r\n else if (Lang.NUMBER_OCT.test(value))\r\n id = parseInt(value.substring(1), 8);\r\n else\r\n throw Error(\"illegal id value: \" + (sign < 0 ? '-' : '') + value);\r\n id = (sign*id)|0; // Force to 32bit\r\n if (!mayBeNegative && id < 0)\r\n throw Error(\"illegal id value: \" + (sign < 0 ? '-' : '') + value);\r\n return id;\r\n }\r\n\r\n /**\r\n * Converts a numerical string to a number.\r\n * @param {string} val\r\n * @returns {number}\r\n * @inner\r\n */\r\n function mkNumber(val) {\r\n var sign = 1;\r\n if (val.charAt(0) == '-') {\r\n sign = -1;\r\n val = val.substring(1);\r\n }\r\n if (Lang.NUMBER_DEC.test(val))\r\n return sign * parseInt(val, 10);\r\n else if (Lang.NUMBER_HEX.test(val))\r\n return sign * parseInt(val.substring(2), 16);\r\n else if (Lang.NUMBER_OCT.test(val))\r\n return sign * parseInt(val.substring(1), 8);\r\n else if (val === 'inf')\r\n return sign * Infinity;\r\n else if (val === 'nan')\r\n return NaN;\r\n else if (Lang.NUMBER_FLT.test(val))\r\n return sign * parseFloat(val);\r\n throw Error(\"illegal number value: \" + (sign < 0 ? '-' : '') + val);\r\n }\r\n\r\n // ----- Reading ------\r\n\r\n /**\r\n * Reads a string.\r\n * @returns {string}\r\n * @private\r\n */\r\n ParserPrototype._readString = function() {\r\n var value = \"\",\r\n token,\r\n delim;\r\n do {\r\n delim = this.tn.next();\r\n if (delim !== \"'\" && delim !== '\"')\r\n throw Error(\"illegal string delimiter: \"+delim);\r\n value += this.tn.next();\r\n this.tn.skip(delim);\r\n token = this.tn.peek();\r\n } while (token === '\"' || token === '\"'); // multi line?\r\n return value;\r\n };\r\n\r\n /**\r\n * Reads a value.\r\n * @param {boolean=} mayBeTypeRef\r\n * @returns {number|boolean|string}\r\n * @private\r\n */\r\n ParserPrototype._readValue = function(mayBeTypeRef) {\r\n var token = this.tn.peek(),\r\n value;\r\n if (token === '\"' || token === \"'\")\r\n return this._readString();\r\n this.tn.next();\r\n if (Lang.NUMBER.test(token))\r\n return mkNumber(token);\r\n if (Lang.BOOL.test(token))\r\n return (token.toLowerCase() === 'true');\r\n if (mayBeTypeRef && Lang.TYPEREF.test(token))\r\n return token;\r\n throw Error(\"illegal value: \"+token);\r\n\r\n };\r\n\r\n // ----- Parsing constructs -----\r\n\r\n /**\r\n * Parses a namespace option.\r\n * @param {!Object} parent Parent definition\r\n * @param {boolean=} isList\r\n * @private\r\n */\r\n ParserPrototype._parseOption = function(parent, isList) {\r\n var token = this.tn.next(),\r\n custom = false;\r\n if (token === '(') {\r\n custom = true;\r\n token = this.tn.next();\r\n }\r\n if (!Lang.TYPEREF.test(token))\r\n // we can allow options of the form google.protobuf.* since they will just get ignored anyways\r\n // if (!/google\\.protobuf\\./.test(token)) // FIXME: Why should that not be a valid typeref?\r\n throw Error(\"illegal option name: \"+token);\r\n var name = token;\r\n if (custom) { // (my_method_option).foo, (my_method_option), some_method_option, (foo.my_option).bar\r\n this.tn.skip(')');\r\n name = '('+name+')';\r\n token = this.tn.peek();\r\n if (Lang.FQTYPEREF.test(token)) {\r\n name += token;\r\n this.tn.next();\r\n }\r\n }\r\n this.tn.skip('=');\r\n this._parseOptionValue(parent, name);\r\n if (!isList)\r\n this.tn.skip(\";\");\r\n };\r\n\r\n /**\r\n * Sets an option on the specified options object.\r\n * @param {!Object.} options\r\n * @param {string} name\r\n * @param {string|number|boolean} value\r\n * @inner\r\n */\r\n function setOption(options, name, value) {\r\n if (typeof options[name] === 'undefined')\r\n options[name] = value;\r\n else {\r\n if (!Array.isArray(options[name]))\r\n options[name] = [ options[name] ];\r\n options[name].push(value);\r\n }\r\n }\r\n\r\n /**\r\n * Parses an option value.\r\n * @param {!Object} parent\r\n * @param {string} name\r\n * @private\r\n */\r\n ParserPrototype._parseOptionValue = function(parent, name) {\r\n var token = this.tn.peek();\r\n if (token !== '{') { // Plain value\r\n setOption(parent[\"options\"], name, this._readValue(true));\r\n } else { // Aggregate options\r\n this.tn.skip(\"{\");\r\n while ((token = this.tn.next()) !== '}') {\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal option name: \" + name + \".\" + token);\r\n if (this.tn.omit(\":\"))\r\n setOption(parent[\"options\"], name + \".\" + token, this._readValue(true));\r\n else\r\n this._parseOptionValue(parent, name + \".\" + token);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Parses a service definition.\r\n * @param {!Object} parent Parent definition\r\n * @private\r\n */\r\n ParserPrototype._parseService = function(parent) {\r\n var token = this.tn.next();\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal service name at line \"+this.tn.line+\": \"+token);\r\n var name = token;\r\n var svc = {\r\n \"name\": name,\r\n \"rpc\": {},\r\n \"options\": {}\r\n };\r\n this.tn.skip(\"{\");\r\n while ((token = this.tn.next()) !== '}') {\r\n if (token === \"option\")\r\n this._parseOption(svc);\r\n else if (token === 'rpc')\r\n this._parseServiceRPC(svc);\r\n else\r\n throw Error(\"illegal service token: \"+token);\r\n }\r\n this.tn.omit(\";\");\r\n parent[\"services\"].push(svc);\r\n };\r\n\r\n /**\r\n * Parses a RPC service definition of the form ['rpc', name, (request), 'returns', (response)].\r\n * @param {!Object} svc Service definition\r\n * @private\r\n */\r\n ParserPrototype._parseServiceRPC = function(svc) {\r\n var type = \"rpc\",\r\n token = this.tn.next();\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal rpc service method name: \"+token);\r\n var name = token;\r\n var method = {\r\n \"request\": null,\r\n \"response\": null,\r\n \"request_stream\": false,\r\n \"response_stream\": false,\r\n \"options\": {}\r\n };\r\n this.tn.skip(\"(\");\r\n token = this.tn.next();\r\n if (token.toLowerCase() === \"stream\") {\r\n method[\"request_stream\"] = true;\r\n token = this.tn.next();\r\n }\r\n if (!Lang.TYPEREF.test(token))\r\n throw Error(\"illegal rpc service request type: \"+token);\r\n method[\"request\"] = token;\r\n this.tn.skip(\")\");\r\n token = this.tn.next();\r\n if (token.toLowerCase() !== \"returns\")\r\n throw Error(\"illegal rpc service request type delimiter: \"+token);\r\n this.tn.skip(\"(\");\r\n token = this.tn.next();\r\n if (token.toLowerCase() === \"stream\") {\r\n method[\"response_stream\"] = true;\r\n token = this.tn.next();\r\n }\r\n method[\"response\"] = token;\r\n this.tn.skip(\")\");\r\n token = this.tn.peek();\r\n if (token === '{') {\r\n this.tn.next();\r\n while ((token = this.tn.next()) !== '}') {\r\n if (token === 'option')\r\n this._parseOption(method);\r\n else\r\n throw Error(\"illegal rpc service token: \" + token);\r\n }\r\n this.tn.omit(\";\");\r\n } else\r\n this.tn.skip(\";\");\r\n if (typeof svc[type] === 'undefined')\r\n svc[type] = {};\r\n svc[type][name] = method;\r\n };\r\n\r\n /**\r\n * Parses a message definition.\r\n * @param {!Object} parent Parent definition\r\n * @param {!Object=} fld Field definition if this is a group\r\n * @returns {!Object}\r\n * @private\r\n */\r\n ParserPrototype._parseMessage = function(parent, fld) {\r\n var isGroup = !!fld,\r\n token = this.tn.next();\r\n var msg = {\r\n \"name\": \"\",\r\n \"fields\": [],\r\n \"enums\": [],\r\n \"messages\": [],\r\n \"options\": {},\r\n \"services\": [],\r\n \"oneofs\": {}\r\n // \"extensions\": undefined\r\n };\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal \"+(isGroup ? \"group\" : \"message\")+\" name: \"+token);\r\n msg[\"name\"] = token;\r\n if (isGroup) {\r\n this.tn.skip(\"=\");\r\n fld[\"id\"] = mkId(this.tn.next());\r\n msg[\"isGroup\"] = true;\r\n }\r\n token = this.tn.peek();\r\n if (token === '[' && fld)\r\n this._parseFieldOptions(fld);\r\n this.tn.skip(\"{\");\r\n while ((token = this.tn.next()) !== '}') {\r\n if (Lang.RULE.test(token))\r\n this._parseMessageField(msg, token);\r\n else if (token === \"oneof\")\r\n this._parseMessageOneOf(msg);\r\n else if (token === \"enum\")\r\n this._parseEnum(msg);\r\n else if (token === \"message\")\r\n this._parseMessage(msg);\r\n else if (token === \"option\")\r\n this._parseOption(msg);\r\n else if (token === \"service\")\r\n this._parseService(msg);\r\n else if (token === \"extensions\")\r\n this._parseExtensions(msg);\r\n else if (token === \"extend\")\r\n this._parseExtend(msg);\r\n else if (token === \"reserved\")\r\n this._parseMessageReserved(msg);\r\n else if (Lang.TYPEREF.test(token)) {\r\n if (!this.proto3)\r\n throw Error(\"illegal field rule: \"+token);\r\n this._parseMessageField(msg, \"optional\", token);\r\n } else\r\n throw Error(\"illegal message token: \"+token);\r\n }\r\n this.tn.omit(\";\");\r\n parent[\"messages\"].push(msg);\r\n return msg;\r\n };\r\n\r\n /**\r\n * Parses a message's reserved ids / names statement.\r\n * @param {!Object} msg Message definition\r\n * @private\r\n */\r\n ParserPrototype._parseMessageReserved = function(msg) {\r\n // TODO: This currently just skips a reserved statement for compatibility.\r\n // Valid formats are\r\n // reserved 2, 15, 9 to 11;\r\n // for reserved ids or\r\n // reserved \"foo\", \"bar\";\r\n // for reserved names.\r\n while (this.tn.peek() !== ';')\r\n this.tn.next();\r\n this.tn.skip(\";\");\r\n };\r\n\r\n /**\r\n * Parses a message field.\r\n * @param {!Object} msg Message definition\r\n * @param {string} rule Field rule\r\n * @param {string=} type Field type if already known (never known for maps)\r\n * @returns {!Object} Field descriptor\r\n * @private\r\n */\r\n ParserPrototype._parseMessageField = function(msg, rule, type) {\r\n if (!Lang.RULE.test(rule))\r\n throw Error(\"illegal message field rule: \"+rule);\r\n var fld = {\r\n \"rule\": rule,\r\n \"type\": \"\",\r\n \"name\": \"\",\r\n \"options\": {},\r\n \"id\": 0\r\n };\r\n var token;\r\n if (rule === \"map\") {\r\n\r\n if (type)\r\n throw Error(\"illegal type: \" + type);\r\n this.tn.skip('<');\r\n token = this.tn.next();\r\n if (!Lang.TYPE.test(token) && !Lang.TYPEREF.test(token))\r\n throw Error(\"illegal message field type: \" + token);\r\n fld[\"keytype\"] = token;\r\n this.tn.skip(',');\r\n token = this.tn.next();\r\n if (!Lang.TYPE.test(token) && !Lang.TYPEREF.test(token))\r\n throw Error(\"illegal message field: \" + token);\r\n fld[\"type\"] = token;\r\n this.tn.skip('>');\r\n token = this.tn.next();\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal message field name: \" + token);\r\n fld[\"name\"] = token;\r\n this.tn.skip(\"=\");\r\n fld[\"id\"] = mkId(this.tn.next());\r\n token = this.tn.peek();\r\n if (token === '[')\r\n this._parseFieldOptions(fld);\r\n this.tn.skip(\";\");\r\n\r\n } else {\r\n\r\n type = typeof type !== 'undefined' ? type : this.tn.next();\r\n\r\n if (type === \"group\") {\r\n\r\n // \"A [legacy] group simply combines a nested message type and a field into a single declaration. In your\r\n // code, you can treat this message just as if it had a Result type field called result (the latter name is\r\n // converted to lower-case so that it does not conflict with the former).\"\r\n var grp = this._parseMessage(msg, fld);\r\n if (!/^[A-Z]/.test(grp[\"name\"]))\r\n throw Error('illegal group name: '+grp[\"name\"]);\r\n fld[\"type\"] = grp[\"name\"];\r\n fld[\"name\"] = grp[\"name\"].toLowerCase();\r\n this.tn.omit(\";\");\r\n\r\n } else {\r\n\r\n if (!Lang.TYPE.test(type) && !Lang.TYPEREF.test(type))\r\n throw Error(\"illegal message field type: \" + type);\r\n fld[\"type\"] = type;\r\n token = this.tn.next();\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal message field name: \" + token);\r\n fld[\"name\"] = token;\r\n this.tn.skip(\"=\");\r\n fld[\"id\"] = mkId(this.tn.next());\r\n token = this.tn.peek();\r\n if (token === \"[\")\r\n this._parseFieldOptions(fld);\r\n this.tn.skip(\";\");\r\n\r\n }\r\n }\r\n msg[\"fields\"].push(fld);\r\n return fld;\r\n };\r\n\r\n /**\r\n * Parses a message oneof.\r\n * @param {!Object} msg Message definition\r\n * @private\r\n */\r\n ParserPrototype._parseMessageOneOf = function(msg) {\r\n var token = this.tn.next();\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal oneof name: \"+token);\r\n var name = token,\r\n fld;\r\n var fields = [];\r\n this.tn.skip(\"{\");\r\n while ((token = this.tn.next()) !== \"}\") {\r\n fld = this._parseMessageField(msg, \"optional\", token);\r\n fld[\"oneof\"] = name;\r\n fields.push(fld[\"id\"]);\r\n }\r\n this.tn.omit(\";\");\r\n msg[\"oneofs\"][name] = fields;\r\n };\r\n\r\n /**\r\n * Parses a set of field option definitions.\r\n * @param {!Object} fld Field definition\r\n * @private\r\n */\r\n ParserPrototype._parseFieldOptions = function(fld) {\r\n this.tn.skip(\"[\");\r\n var token,\r\n first = true;\r\n while ((token = this.tn.peek()) !== ']') {\r\n if (!first)\r\n this.tn.skip(\",\");\r\n this._parseOption(fld, true);\r\n first = false;\r\n }\r\n this.tn.next();\r\n };\r\n\r\n /**\r\n * Parses an enum.\r\n * @param {!Object} msg Message definition\r\n * @private\r\n */\r\n ParserPrototype._parseEnum = function(msg) {\r\n var enm = {\r\n \"name\": \"\",\r\n \"values\": [],\r\n \"options\": {}\r\n };\r\n var token = this.tn.next();\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal name: \"+token);\r\n enm[\"name\"] = token;\r\n this.tn.skip(\"{\");\r\n while ((token = this.tn.next()) !== '}') {\r\n if (token === \"option\")\r\n this._parseOption(enm);\r\n else {\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal name: \"+token);\r\n this.tn.skip(\"=\");\r\n var val = {\r\n \"name\": token,\r\n \"id\": mkId(this.tn.next(), true)\r\n };\r\n token = this.tn.peek();\r\n if (token === \"[\")\r\n this._parseFieldOptions({ \"options\": {} });\r\n this.tn.skip(\";\");\r\n enm[\"values\"].push(val);\r\n }\r\n }\r\n this.tn.omit(\";\");\r\n msg[\"enums\"].push(enm);\r\n };\r\n\r\n /**\r\n * Parses an extensions statement.\r\n * @param {!Object} msg Message object\r\n * @private\r\n */\r\n ParserPrototype._parseExtensions = function(msg) {\r\n var token = this.tn.next(),\r\n range = [];\r\n if (token === \"min\")\r\n range.push(ProtoBuf.ID_MIN);\r\n else if (token === \"max\")\r\n range.push(ProtoBuf.ID_MAX);\r\n else\r\n range.push(mkNumber(token));\r\n this.tn.skip(\"to\");\r\n token = this.tn.next();\r\n if (token === \"min\")\r\n range.push(ProtoBuf.ID_MIN);\r\n else if (token === \"max\")\r\n range.push(ProtoBuf.ID_MAX);\r\n else\r\n range.push(mkNumber(token));\r\n this.tn.skip(\";\");\r\n msg[\"extensions\"] = range;\r\n };\r\n\r\n /**\r\n * Parses an extend block.\r\n * @param {!Object} parent Parent object\r\n * @private\r\n */\r\n ParserPrototype._parseExtend = function(parent) {\r\n var token = this.tn.next();\r\n if (!Lang.TYPEREF.test(token))\r\n throw Error(\"illegal extend reference: \"+token);\r\n var ext = {\r\n \"ref\": token,\r\n \"fields\": []\r\n };\r\n this.tn.skip(\"{\");\r\n while ((token = this.tn.next()) !== '}') {\r\n if (Lang.RULE.test(token))\r\n this._parseMessageField(ext, token);\r\n else if (Lang.TYPEREF.test(token)) {\r\n if (!this.proto3)\r\n throw Error(\"illegal field rule: \"+token);\r\n this._parseMessageField(ext, \"optional\", token);\r\n } else\r\n throw Error(\"illegal extend token: \"+token);\r\n }\r\n this.tn.omit(\";\");\r\n parent[\"messages\"].push(ext);\r\n return ext;\r\n };\r\n\r\n // ----- General -----\r\n\r\n /**\r\n * Returns a string representation of this parser.\r\n * @returns {string}\r\n */\r\n ParserPrototype.toString = function() {\r\n return \"Parser at line \"+this.tn.line;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.DotProto.Parser\r\n * @expose\r\n */\r\n DotProto.Parser = Parser;\r\n\r\n return DotProto;\r\n\r\n })(ProtoBuf, ProtoBuf.Lang);\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect\r\n * @expose\r\n */\r\n ProtoBuf.Reflect = (function(ProtoBuf) {\r\n \"use strict\";\r\n\r\n /**\r\n * Reflection types.\r\n * @exports ProtoBuf.Reflect\r\n * @namespace\r\n */\r\n var Reflect = {};\r\n\r\n /**\r\n * Constructs a Reflect base class.\r\n * @exports ProtoBuf.Reflect.T\r\n * @constructor\r\n * @abstract\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {?ProtoBuf.Reflect.T} parent Parent object\r\n * @param {string} name Object name\r\n */\r\n var T = function(builder, parent, name) {\r\n\r\n /**\r\n * Builder reference.\r\n * @type {!ProtoBuf.Builder}\r\n * @expose\r\n */\r\n this.builder = builder;\r\n\r\n /**\r\n * Parent object.\r\n * @type {?ProtoBuf.Reflect.T}\r\n * @expose\r\n */\r\n this.parent = parent;\r\n\r\n /**\r\n * Object name in namespace.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.name = name;\r\n\r\n /**\r\n * Fully qualified class name\r\n * @type {string}\r\n * @expose\r\n */\r\n this.className;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.T.prototype\r\n * @inner\r\n */\r\n var TPrototype = T.prototype;\r\n\r\n /**\r\n * Returns the fully qualified name of this object.\r\n * @returns {string} Fully qualified name as of \".PATH.TO.THIS\"\r\n * @expose\r\n */\r\n TPrototype.fqn = function() {\r\n var name = this.name,\r\n ptr = this;\r\n do {\r\n ptr = ptr.parent;\r\n if (ptr == null)\r\n break;\r\n name = ptr.name+\".\"+name;\r\n } while (true);\r\n return name;\r\n };\r\n\r\n /**\r\n * Returns a string representation of this Reflect object (its fully qualified name).\r\n * @param {boolean=} includeClass Set to true to include the class name. Defaults to false.\r\n * @return String representation\r\n * @expose\r\n */\r\n TPrototype.toString = function(includeClass) {\r\n return (includeClass ? this.className + \" \" : \"\") + this.fqn();\r\n };\r\n\r\n /**\r\n * Builds this type.\r\n * @throws {Error} If this type cannot be built directly\r\n * @expose\r\n */\r\n TPrototype.build = function() {\r\n throw Error(this.toString(true)+\" cannot be built directly\");\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.T\r\n * @expose\r\n */\r\n Reflect.T = T;\r\n\r\n /**\r\n * Constructs a new Namespace.\r\n * @exports ProtoBuf.Reflect.Namespace\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {?ProtoBuf.Reflect.Namespace} parent Namespace parent\r\n * @param {string} name Namespace name\r\n * @param {Object.=} options Namespace options\r\n * @param {string?} syntax The syntax level of this definition (e.g., proto3)\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.T\r\n */\r\n var Namespace = function(builder, parent, name, options, syntax) {\r\n T.call(this, builder, parent, name);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Namespace\";\r\n\r\n /**\r\n * Children inside the namespace.\r\n * @type {!Array.}\r\n */\r\n this.children = [];\r\n\r\n /**\r\n * Options.\r\n * @type {!Object.}\r\n */\r\n this.options = options || {};\r\n\r\n /**\r\n * Syntax level (e.g., proto2 or proto3).\r\n * @type {!string}\r\n */\r\n this.syntax = syntax || \"proto2\";\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Namespace.prototype\r\n * @inner\r\n */\r\n var NamespacePrototype = Namespace.prototype = Object.create(T.prototype);\r\n\r\n /**\r\n * Returns an array of the namespace's children.\r\n * @param {ProtoBuf.Reflect.T=} type Filter type (returns instances of this type only). Defaults to null (all children).\r\n * @return {Array.}\r\n * @expose\r\n */\r\n NamespacePrototype.getChildren = function(type) {\r\n type = type || null;\r\n if (type == null)\r\n return this.children.slice();\r\n var children = [];\r\n for (var i=0, k=this.children.length; i} qn Qualified name to resolve\r\n * @param {boolean=} excludeNonNamespace Excludes non-namespace types, defaults to `false`\r\n * @return {?ProtoBuf.Reflect.Namespace} The resolved type or null if not found\r\n * @expose\r\n */\r\n NamespacePrototype.resolve = function(qn, excludeNonNamespace) {\r\n var part = typeof qn === 'string' ? qn.split(\".\") : qn,\r\n ptr = this,\r\n i = 0;\r\n if (part[i] === \"\") { // Fully qualified name, e.g. \".My.Message'\r\n while (ptr.parent !== null)\r\n ptr = ptr.parent;\r\n i++;\r\n }\r\n var child;\r\n do {\r\n do {\r\n if (!(ptr instanceof Reflect.Namespace)) {\r\n ptr = null;\r\n break;\r\n }\r\n child = ptr.getChild(part[i]);\r\n if (!child || !(child instanceof Reflect.T) || (excludeNonNamespace && !(child instanceof Reflect.Namespace))) {\r\n ptr = null;\r\n break;\r\n }\r\n ptr = child; i++;\r\n } while (i < part.length);\r\n if (ptr != null)\r\n break; // Found\r\n // Else search the parent\r\n if (this.parent !== null)\r\n return this.parent.resolve(qn, excludeNonNamespace);\r\n } while (ptr != null);\r\n return ptr;\r\n };\r\n\r\n /**\r\n * Determines the shortest qualified name of the specified type, if any, relative to this namespace.\r\n * @param {!ProtoBuf.Reflect.T} t Reflection type\r\n * @returns {string} The shortest qualified name or, if there is none, the fqn\r\n * @expose\r\n */\r\n NamespacePrototype.qn = function(t) {\r\n var part = [], ptr = t;\r\n do {\r\n part.unshift(ptr.name);\r\n ptr = ptr.parent;\r\n } while (ptr !== null);\r\n for (var len=1; len <= part.length; len++) {\r\n var qn = part.slice(part.length-len);\r\n if (t === this.resolve(qn, t instanceof Reflect.Namespace))\r\n return qn.join(\".\");\r\n }\r\n return t.fqn();\r\n };\r\n\r\n /**\r\n * Builds the namespace and returns the runtime counterpart.\r\n * @return {Object.} Runtime namespace\r\n * @expose\r\n */\r\n NamespacePrototype.build = function() {\r\n /** @dict */\r\n var ns = {};\r\n var children = this.children;\r\n for (var i=0, k=children.length, child; i}\r\n */\r\n NamespacePrototype.buildOpt = function() {\r\n var opt = {},\r\n keys = Object.keys(this.options);\r\n for (var i=0, k=keys.length; i}null} Option value or NULL if there is no such option\r\n */\r\n NamespacePrototype.getOption = function(name) {\r\n if (typeof name === 'undefined')\r\n return this.options;\r\n return typeof this.options[name] !== 'undefined' ? this.options[name] : null;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Namespace\r\n * @expose\r\n */\r\n Reflect.Namespace = Namespace;\r\n\r\n /**\r\n * Constructs a new Element implementation that checks and converts values for a\r\n * particular field type, as appropriate.\r\n *\r\n * An Element represents a single value: either the value of a singular field,\r\n * or a value contained in one entry of a repeated field or map field. This\r\n * class does not implement these higher-level concepts; it only encapsulates\r\n * the low-level typechecking and conversion.\r\n *\r\n * @exports ProtoBuf.Reflect.Element\r\n * @param {{name: string, wireType: number}} type Resolved data type\r\n * @param {ProtoBuf.Reflect.T|null} resolvedType Resolved type, if relevant\r\n * (e.g. submessage field).\r\n * @param {boolean} isMapKey Is this element a Map key? The value will be\r\n * converted to string form if so.\r\n * @param {string} syntax Syntax level of defining message type, e.g.,\r\n * proto2 or proto3.\r\n * @constructor\r\n */\r\n var Element = function(type, resolvedType, isMapKey, syntax) {\r\n\r\n /**\r\n * Element type, as a string (e.g., int32).\r\n * @type {{name: string, wireType: number}}\r\n */\r\n this.type = type;\r\n\r\n /**\r\n * Element type reference to submessage or enum definition, if needed.\r\n * @type {ProtoBuf.Reflect.T|null}\r\n */\r\n this.resolvedType = resolvedType;\r\n\r\n /**\r\n * Element is a map key.\r\n * @type {boolean}\r\n */\r\n this.isMapKey = isMapKey;\r\n\r\n /**\r\n * Syntax level of defining message type, e.g., proto2 or proto3.\r\n * @type {string}\r\n */\r\n this.syntax = syntax;\r\n\r\n if (isMapKey && ProtoBuf.MAP_KEY_TYPES.indexOf(type) < 0)\r\n throw Error(\"Invalid map key type: \" + type.name);\r\n };\r\n\r\n var ElementPrototype = Element.prototype;\r\n\r\n /**\r\n * Obtains a (new) default value for the specified type.\r\n * @param type {string|{name: string, wireType: number}} Field type\r\n * @returns {*} Default value\r\n * @inner\r\n */\r\n function mkDefault(type) {\r\n if (typeof type === 'string')\r\n type = ProtoBuf.TYPES[type];\r\n if (typeof type.defaultValue === 'undefined')\r\n throw Error(\"default value for type \"+type.name+\" is not supported\");\r\n if (type == ProtoBuf.TYPES[\"bytes\"])\r\n return new ByteBuffer(0);\r\n return type.defaultValue;\r\n }\r\n\r\n /**\r\n * Returns the default value for this field in proto3.\r\n * @function\r\n * @param type {string|{name: string, wireType: number}} the field type\r\n * @returns {*} Default value\r\n */\r\n Element.defaultFieldValue = mkDefault;\r\n\r\n /**\r\n * Makes a Long from a value.\r\n * @param {{low: number, high: number, unsigned: boolean}|string|number} value Value\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to reuse it from Long-like objects or to signed for\r\n * strings and numbers\r\n * @returns {!Long}\r\n * @throws {Error} If the value cannot be converted to a Long\r\n * @inner\r\n */\r\n function mkLong(value, unsigned) {\r\n if (value && typeof value.low === 'number' && typeof value.high === 'number' && typeof value.unsigned === 'boolean'\r\n && value.low === value.low && value.high === value.high)\r\n return new ProtoBuf.Long(value.low, value.high, typeof unsigned === 'undefined' ? value.unsigned : unsigned);\r\n if (typeof value === 'string')\r\n return ProtoBuf.Long.fromString(value, unsigned || false, 10);\r\n if (typeof value === 'number')\r\n return ProtoBuf.Long.fromNumber(value, unsigned || false);\r\n throw Error(\"not convertible to Long\");\r\n }\r\n\r\n /**\r\n * Checks if the given value can be set for an element of this type (singular\r\n * field or one element of a repeated field or map).\r\n * @param {*} value Value to check\r\n * @return {*} Verified, maybe adjusted, value\r\n * @throws {Error} If the value cannot be verified for this element slot\r\n * @expose\r\n */\r\n ElementPrototype.verifyValue = function(value) {\r\n var fail = function(val, msg) {\r\n throw Error(\"Illegal value for \"+this.toString(true)+\" of type \"+this.type.name+\": \"+val+\" (\"+msg+\")\");\r\n }.bind(this);\r\n switch (this.type) {\r\n // Signed 32bit\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n // Account for !NaN: value === value\r\n if (typeof value !== 'number' || (value === value && value % 1 !== 0))\r\n fail(typeof value, \"not an integer\");\r\n return value > 4294967295 ? value | 0 : value;\r\n\r\n // Unsigned 32bit\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n if (typeof value !== 'number' || (value === value && value % 1 !== 0))\r\n fail(typeof value, \"not an integer\");\r\n return value < 0 ? value >>> 0 : value;\r\n\r\n // Signed 64bit\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n case ProtoBuf.TYPES[\"sfixed64\"]: {\r\n if (ProtoBuf.Long)\r\n try {\r\n return mkLong(value, false);\r\n } catch (e) {\r\n fail(typeof value, e.message);\r\n }\r\n else\r\n fail(typeof value, \"requires Long.js\");\r\n }\r\n\r\n // Unsigned 64bit\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n case ProtoBuf.TYPES[\"fixed64\"]: {\r\n if (ProtoBuf.Long)\r\n try {\r\n return mkLong(value, true);\r\n } catch (e) {\r\n fail(typeof value, e.message);\r\n }\r\n else\r\n fail(typeof value, \"requires Long.js\");\r\n }\r\n\r\n // Bool\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n if (typeof value !== 'boolean')\r\n fail(typeof value, \"not a boolean\");\r\n return value;\r\n\r\n // Float\r\n case ProtoBuf.TYPES[\"float\"]:\r\n case ProtoBuf.TYPES[\"double\"]:\r\n if (typeof value !== 'number')\r\n fail(typeof value, \"not a number\");\r\n return value;\r\n\r\n // Length-delimited string\r\n case ProtoBuf.TYPES[\"string\"]:\r\n if (typeof value !== 'string' && !(value && value instanceof String))\r\n fail(typeof value, \"not a string\");\r\n return \"\"+value; // Convert String object to string\r\n\r\n // Length-delimited bytes\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n if (ByteBuffer.isByteBuffer(value))\r\n return value;\r\n return ByteBuffer.wrap(value, \"base64\");\r\n\r\n // Constant enum value\r\n case ProtoBuf.TYPES[\"enum\"]: {\r\n var values = this.resolvedType.getChildren(ProtoBuf.Reflect.Enum.Value);\r\n for (i=0; i 4294967295 || value < 0)\r\n fail(typeof value, \"not in range for uint32\")\r\n return value;\r\n } else {\r\n // proto2 requires enum values to be valid.\r\n fail(value, \"not a valid enum value\");\r\n }\r\n }\r\n // Embedded message\r\n case ProtoBuf.TYPES[\"group\"]:\r\n case ProtoBuf.TYPES[\"message\"]: {\r\n if (!value || typeof value !== 'object')\r\n fail(typeof value, \"object expected\");\r\n if (value instanceof this.resolvedType.clazz)\r\n return value;\r\n if (value instanceof ProtoBuf.Builder.Message) {\r\n // Mismatched type: Convert to object (see: https://github.com/dcodeIO/ProtoBuf.js/issues/180)\r\n var obj = {};\r\n for (var i in value)\r\n if (value.hasOwnProperty(i))\r\n obj[i] = value[i];\r\n value = obj;\r\n }\r\n // Else let's try to construct one from a key-value object\r\n return new (this.resolvedType.clazz)(value); // May throw for a hundred of reasons\r\n }\r\n }\r\n\r\n // We should never end here\r\n throw Error(\"[INTERNAL] Illegal value for \"+this.toString(true)+\": \"+value+\" (undefined type \"+this.type+\")\");\r\n };\r\n\r\n /**\r\n * Calculates the byte length of an element on the wire.\r\n * @param {number} id Field number\r\n * @param {*} value Field value\r\n * @returns {number} Byte length\r\n * @throws {Error} If the value cannot be calculated\r\n * @expose\r\n */\r\n ElementPrototype.calculateLength = function(id, value) {\r\n if (value === null) return 0; // Nothing to encode\r\n // Tag has already been written\r\n var n;\r\n switch (this.type) {\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n return value < 0 ? ByteBuffer.calculateVarint64(value) : ByteBuffer.calculateVarint32(value);\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n return ByteBuffer.calculateVarint32(value);\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n return ByteBuffer.calculateVarint32(ByteBuffer.zigZagEncode32(value));\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n case ProtoBuf.TYPES[\"float\"]:\r\n return 4;\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n return ByteBuffer.calculateVarint64(value);\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n return ByteBuffer.calculateVarint64(ByteBuffer.zigZagEncode64(value));\r\n case ProtoBuf.TYPES[\"fixed64\"]:\r\n case ProtoBuf.TYPES[\"sfixed64\"]:\r\n return 8;\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n return 1;\r\n case ProtoBuf.TYPES[\"enum\"]:\r\n return ByteBuffer.calculateVarint32(value);\r\n case ProtoBuf.TYPES[\"double\"]:\r\n return 8;\r\n case ProtoBuf.TYPES[\"string\"]:\r\n n = ByteBuffer.calculateUTF8Bytes(value);\r\n return ByteBuffer.calculateVarint32(n) + n;\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n if (value.remaining() < 0)\r\n throw Error(\"Illegal value for \"+this.toString(true)+\": \"+value.remaining()+\" bytes remaining\");\r\n return ByteBuffer.calculateVarint32(value.remaining()) + value.remaining();\r\n case ProtoBuf.TYPES[\"message\"]:\r\n n = this.resolvedType.calculate(value);\r\n return ByteBuffer.calculateVarint32(n) + n;\r\n case ProtoBuf.TYPES[\"group\"]:\r\n n = this.resolvedType.calculate(value);\r\n return n + ByteBuffer.calculateVarint32((id << 3) | ProtoBuf.WIRE_TYPES.ENDGROUP);\r\n }\r\n // We should never end here\r\n throw Error(\"[INTERNAL] Illegal value to encode in \"+this.toString(true)+\": \"+value+\" (unknown type)\");\r\n };\r\n\r\n /**\r\n * Encodes a value to the specified buffer. Does not encode the key.\r\n * @param {number} id Field number\r\n * @param {*} value Field value\r\n * @param {ByteBuffer} buffer ByteBuffer to encode to\r\n * @return {ByteBuffer} The ByteBuffer for chaining\r\n * @throws {Error} If the value cannot be encoded\r\n * @expose\r\n */\r\n ElementPrototype.encodeValue = function(id, value, buffer) {\r\n if (value === null) return buffer; // Nothing to encode\r\n // Tag has already been written\r\n\r\n switch (this.type) {\r\n // 32bit signed varint\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n // \"If you use int32 or int64 as the type for a negative number, the resulting varint is always ten bytes\r\n // long – it is, effectively, treated like a very large unsigned integer.\" (see #122)\r\n if (value < 0)\r\n buffer.writeVarint64(value);\r\n else\r\n buffer.writeVarint32(value);\r\n break;\r\n\r\n // 32bit unsigned varint\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n buffer.writeVarint32(value);\r\n break;\r\n\r\n // 32bit varint zig-zag\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n buffer.writeVarint32ZigZag(value);\r\n break;\r\n\r\n // Fixed unsigned 32bit\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n buffer.writeUint32(value);\r\n break;\r\n\r\n // Fixed signed 32bit\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n buffer.writeInt32(value);\r\n break;\r\n\r\n // 64bit varint as-is\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n buffer.writeVarint64(value); // throws\r\n break;\r\n\r\n // 64bit varint zig-zag\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n buffer.writeVarint64ZigZag(value); // throws\r\n break;\r\n\r\n // Fixed unsigned 64bit\r\n case ProtoBuf.TYPES[\"fixed64\"]:\r\n buffer.writeUint64(value); // throws\r\n break;\r\n\r\n // Fixed signed 64bit\r\n case ProtoBuf.TYPES[\"sfixed64\"]:\r\n buffer.writeInt64(value); // throws\r\n break;\r\n\r\n // Bool\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n if (typeof value === 'string')\r\n buffer.writeVarint32(value.toLowerCase() === 'false' ? 0 : !!value);\r\n else\r\n buffer.writeVarint32(value ? 1 : 0);\r\n break;\r\n\r\n // Constant enum value\r\n case ProtoBuf.TYPES[\"enum\"]:\r\n buffer.writeVarint32(value);\r\n break;\r\n\r\n // 32bit float\r\n case ProtoBuf.TYPES[\"float\"]:\r\n buffer.writeFloat32(value);\r\n break;\r\n\r\n // 64bit float\r\n case ProtoBuf.TYPES[\"double\"]:\r\n buffer.writeFloat64(value);\r\n break;\r\n\r\n // Length-delimited string\r\n case ProtoBuf.TYPES[\"string\"]:\r\n buffer.writeVString(value);\r\n break;\r\n\r\n // Length-delimited bytes\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n if (value.remaining() < 0)\r\n throw Error(\"Illegal value for \"+this.toString(true)+\": \"+value.remaining()+\" bytes remaining\");\r\n var prevOffset = value.offset;\r\n buffer.writeVarint32(value.remaining());\r\n buffer.append(value);\r\n value.offset = prevOffset;\r\n break;\r\n\r\n // Embedded message\r\n case ProtoBuf.TYPES[\"message\"]:\r\n var bb = new ByteBuffer().LE();\r\n this.resolvedType.encode(value, bb);\r\n buffer.writeVarint32(bb.offset);\r\n buffer.append(bb.flip());\r\n break;\r\n\r\n // Legacy group\r\n case ProtoBuf.TYPES[\"group\"]:\r\n this.resolvedType.encode(value, buffer);\r\n buffer.writeVarint32((id << 3) | ProtoBuf.WIRE_TYPES.ENDGROUP);\r\n break;\r\n\r\n default:\r\n // We should never end here\r\n throw Error(\"[INTERNAL] Illegal value to encode in \"+this.toString(true)+\": \"+value+\" (unknown type)\");\r\n }\r\n return buffer;\r\n };\r\n\r\n /**\r\n * Decode one element value from the specified buffer.\r\n * @param {ByteBuffer} buffer ByteBuffer to decode from\r\n * @param {number} wireType The field wire type\r\n * @param {number} id The field number\r\n * @return {*} Decoded value\r\n * @throws {Error} If the field cannot be decoded\r\n * @expose\r\n */\r\n ElementPrototype.decode = function(buffer, wireType, id) {\r\n if (wireType != this.type.wireType)\r\n throw Error(\"Unexpected wire type for element\");\r\n\r\n var value, nBytes;\r\n switch (this.type) {\r\n // 32bit signed varint\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n return buffer.readVarint32() | 0;\r\n\r\n // 32bit unsigned varint\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n return buffer.readVarint32() >>> 0;\r\n\r\n // 32bit signed varint zig-zag\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n return buffer.readVarint32ZigZag() | 0;\r\n\r\n // Fixed 32bit unsigned\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n return buffer.readUint32() >>> 0;\r\n\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n return buffer.readInt32() | 0;\r\n\r\n // 64bit signed varint\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n return buffer.readVarint64();\r\n\r\n // 64bit unsigned varint\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n return buffer.readVarint64().toUnsigned();\r\n\r\n // 64bit signed varint zig-zag\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n return buffer.readVarint64ZigZag();\r\n\r\n // Fixed 64bit unsigned\r\n case ProtoBuf.TYPES[\"fixed64\"]:\r\n return buffer.readUint64();\r\n\r\n // Fixed 64bit signed\r\n case ProtoBuf.TYPES[\"sfixed64\"]:\r\n return buffer.readInt64();\r\n\r\n // Bool varint\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n return !!buffer.readVarint32();\r\n\r\n // Constant enum value (varint)\r\n case ProtoBuf.TYPES[\"enum\"]:\r\n // The following Builder.Message#set will already throw\r\n return buffer.readVarint32();\r\n\r\n // 32bit float\r\n case ProtoBuf.TYPES[\"float\"]:\r\n return buffer.readFloat();\r\n\r\n // 64bit float\r\n case ProtoBuf.TYPES[\"double\"]:\r\n return buffer.readDouble();\r\n\r\n // Length-delimited string\r\n case ProtoBuf.TYPES[\"string\"]:\r\n return buffer.readVString();\r\n\r\n // Length-delimited bytes\r\n case ProtoBuf.TYPES[\"bytes\"]: {\r\n nBytes = buffer.readVarint32();\r\n if (buffer.remaining() < nBytes)\r\n throw Error(\"Illegal number of bytes for \"+this.toString(true)+\": \"+nBytes+\" required but got only \"+buffer.remaining());\r\n value = buffer.clone(); // Offset already set\r\n value.limit = value.offset+nBytes;\r\n buffer.offset += nBytes;\r\n return value;\r\n }\r\n\r\n // Length-delimited embedded message\r\n case ProtoBuf.TYPES[\"message\"]: {\r\n nBytes = buffer.readVarint32();\r\n return this.resolvedType.decode(buffer, nBytes);\r\n }\r\n\r\n // Legacy group\r\n case ProtoBuf.TYPES[\"group\"]:\r\n return this.resolvedType.decode(buffer, -1, id);\r\n }\r\n\r\n // We should never end here\r\n throw Error(\"[INTERNAL] Illegal decode type\");\r\n };\r\n\r\n /**\r\n * Converts a value from a string to the canonical element type.\r\n *\r\n * Legal only when isMapKey is true.\r\n *\r\n * @param {string} str The string value\r\n * @returns {*} The value\r\n */\r\n ElementPrototype.valueFromString = function(str) {\r\n if (!this.isMapKey) {\r\n throw Error(\"valueFromString() called on non-map-key element\");\r\n }\r\n\r\n switch (this.type) {\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n return this.verifyValue(parseInt(str));\r\n\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n case ProtoBuf.TYPES[\"sfixed64\"]:\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n case ProtoBuf.TYPES[\"fixed64\"]:\r\n // Long-based fields support conversions from string already.\r\n return this.verifyValue(str);\r\n\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n return str === \"true\";\r\n\r\n case ProtoBuf.TYPES[\"string\"]:\r\n return this.verifyValue(str);\r\n\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n return ByteBuffer.fromBinary(str);\r\n }\r\n };\r\n\r\n /**\r\n * Converts a value from the canonical element type to a string.\r\n *\r\n * It should be the case that `valueFromString(valueToString(val))` returns\r\n * a value equivalent to `verifyValue(val)` for every legal value of `val`\r\n * according to this element type.\r\n *\r\n * This may be used when the element must be stored or used as a string,\r\n * e.g., as a map key on an Object.\r\n *\r\n * Legal only when isMapKey is true.\r\n *\r\n * @param {*} val The value\r\n * @returns {string} The string form of the value.\r\n */\r\n ElementPrototype.valueToString = function(value) {\r\n if (!this.isMapKey) {\r\n throw Error(\"valueToString() called on non-map-key element\");\r\n }\r\n\r\n if (this.type === ProtoBuf.TYPES[\"bytes\"]) {\r\n return value.toString(\"binary\");\r\n } else {\r\n return value.toString();\r\n }\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Element\r\n * @expose\r\n */\r\n Reflect.Element = Element;\r\n\r\n /**\r\n * Constructs a new Message.\r\n * @exports ProtoBuf.Reflect.Message\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Namespace} parent Parent message or namespace\r\n * @param {string} name Message name\r\n * @param {Object.=} options Message options\r\n * @param {boolean=} isGroup `true` if this is a legacy group\r\n * @param {string?} syntax The syntax level of this definition (e.g., proto3)\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Namespace\r\n */\r\n var Message = function(builder, parent, name, options, isGroup, syntax) {\r\n Namespace.call(this, builder, parent, name, options, syntax);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Message\";\r\n\r\n /**\r\n * Extensions range.\r\n * @type {!Array.}\r\n * @expose\r\n */\r\n this.extensions = [ProtoBuf.ID_MIN, ProtoBuf.ID_MAX];\r\n\r\n /**\r\n * Runtime message class.\r\n * @type {?function(new:ProtoBuf.Builder.Message)}\r\n * @expose\r\n */\r\n this.clazz = null;\r\n\r\n /**\r\n * Whether this is a legacy group or not.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.isGroup = !!isGroup;\r\n\r\n // The following cached collections are used to efficiently iterate over or look up fields when decoding.\r\n\r\n /**\r\n * Cached fields.\r\n * @type {?Array.}\r\n * @private\r\n */\r\n this._fields = null;\r\n\r\n /**\r\n * Cached fields by id.\r\n * @type {?Object.}\r\n * @private\r\n */\r\n this._fieldsById = null;\r\n\r\n /**\r\n * Cached fields by name.\r\n * @type {?Object.}\r\n * @private\r\n */\r\n this._fieldsByName = null;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.prototype\r\n * @inner\r\n */\r\n var MessagePrototype = Message.prototype = Object.create(Namespace.prototype);\r\n\r\n /**\r\n * Builds the message and returns the runtime counterpart, which is a fully functional class.\r\n * @see ProtoBuf.Builder.Message\r\n * @param {boolean=} rebuild Whether to rebuild or not, defaults to false\r\n * @return {ProtoBuf.Reflect.Message} Message class\r\n * @throws {Error} If the message cannot be built\r\n * @expose\r\n */\r\n MessagePrototype.build = function(rebuild) {\r\n if (this.clazz && !rebuild)\r\n return this.clazz;\r\n\r\n // Create the runtime Message class in its own scope\r\n var clazz = (function(ProtoBuf, T) {\r\n\r\n var fields = T.getChildren(ProtoBuf.Reflect.Message.Field),\r\n oneofs = T.getChildren(ProtoBuf.Reflect.Message.OneOf);\r\n\r\n /**\r\n * Constructs a new runtime Message.\r\n * @name ProtoBuf.Builder.Message\r\n * @class Barebone of all runtime messages.\r\n * @param {!Object.|string} values Preset values\r\n * @param {...string} var_args\r\n * @constructor\r\n * @throws {Error} If the message cannot be created\r\n */\r\n var Message = function(values, var_args) {\r\n ProtoBuf.Builder.Message.call(this);\r\n\r\n // Create virtual oneof properties\r\n for (var i=0, k=oneofs.length; i 0) {\r\n var value;\r\n // Set field values from a values object\r\n if (arguments.length === 1 && values !== null && typeof values === 'object' &&\r\n /* not _another_ Message */ (typeof values.encode !== 'function' || values instanceof Message) &&\r\n /* not a repeated field */ !Array.isArray(values) &&\r\n /* not a Map */ !(values instanceof ProtoBuf.Map) &&\r\n /* not a ByteBuffer */ !ByteBuffer.isByteBuffer(values) &&\r\n /* not an ArrayBuffer */ !(values instanceof ArrayBuffer) &&\r\n /* not a Long */ !(ProtoBuf.Long && values instanceof ProtoBuf.Long)) {\r\n this.$set(values);\r\n } else // Set field values from arguments, in declaration order\r\n for (i=0, k=arguments.length; i} keyOrObj String key or plain object holding multiple values\r\n * @param {(*|boolean)=} value Value to set if key is a string, otherwise omitted\r\n * @param {boolean=} noAssert Whether to not assert for an actual field / proper value type, defaults to `false`\r\n * @returns {!ProtoBuf.Builder.Message} this\r\n * @throws {Error} If the value cannot be set\r\n * @expose\r\n */\r\n MessagePrototype.set = function(keyOrObj, value, noAssert) {\r\n if (keyOrObj && typeof keyOrObj === 'object') {\r\n noAssert = value;\r\n for (var ikey in keyOrObj)\r\n if (keyOrObj.hasOwnProperty(ikey) && typeof (value = keyOrObj[ikey]) !== 'undefined')\r\n this.$set(ikey, value, noAssert);\r\n return this;\r\n }\r\n var field = T._fieldsByName[keyOrObj];\r\n if (!noAssert) {\r\n if (!field)\r\n throw Error(this+\"#\"+keyOrObj+\" is not a field: undefined\");\r\n if (!(field instanceof ProtoBuf.Reflect.Message.Field))\r\n throw Error(this+\"#\"+keyOrObj+\" is not a field: \"+field.toString(true));\r\n this[field.name] = (value = field.verifyValue(value)); // May throw\r\n } else\r\n this[keyOrObj] = value;\r\n if (field && field.oneof) { // Field is part of an OneOf (not a virtual OneOf field)\r\n var currentField = this[field.oneof.name]; // Virtual field references currently set field\r\n if (value !== null) {\r\n if (currentField !== null && currentField !== field.name)\r\n this[currentField] = null; // Clear currently set field\r\n this[field.oneof.name] = field.name; // Point virtual field at this field\r\n } else if (/* value === null && */currentField === keyOrObj)\r\n this[field.oneof.name] = null; // Clear virtual field (current field explicitly cleared)\r\n }\r\n return this;\r\n };\r\n\r\n /**\r\n * Sets a field's value. This is an alias for [@link ProtoBuf.Builder.Message#set}.\r\n * @name ProtoBuf.Builder.Message#$set\r\n * @function\r\n * @param {string|!Object.} keyOrObj String key or plain object holding multiple values\r\n * @param {(*|boolean)=} value Value to set if key is a string, otherwise omitted\r\n * @param {boolean=} noAssert Whether to not assert the value, defaults to `false`\r\n * @throws {Error} If the value cannot be set\r\n * @expose\r\n */\r\n MessagePrototype.$set = MessagePrototype.set;\r\n\r\n /**\r\n * Gets a field's value.\r\n * @name ProtoBuf.Builder.Message#get\r\n * @function\r\n * @param {string} key Key\r\n * @param {boolean=} noAssert Whether to not assert for an actual field, defaults to `false`\r\n * @return {*} Value\r\n * @throws {Error} If there is no such field\r\n * @expose\r\n */\r\n MessagePrototype.get = function(key, noAssert) {\r\n if (noAssert)\r\n return this[key];\r\n var field = T._fieldsByName[key];\r\n if (!field || !(field instanceof ProtoBuf.Reflect.Message.Field))\r\n throw Error(this+\"#\"+key+\" is not a field: undefined\");\r\n if (!(field instanceof ProtoBuf.Reflect.Message.Field))\r\n throw Error(this+\"#\"+key+\" is not a field: \"+field.toString(true));\r\n return this[field.name];\r\n };\r\n\r\n /**\r\n * Gets a field's value. This is an alias for {@link ProtoBuf.Builder.Message#$get}.\r\n * @name ProtoBuf.Builder.Message#$get\r\n * @function\r\n * @param {string} key Key\r\n * @return {*} Value\r\n * @throws {Error} If there is no such field\r\n * @expose\r\n */\r\n MessagePrototype.$get = MessagePrototype.get;\r\n\r\n // Getters and setters\r\n\r\n for (var i=0; i} data Data payload\r\n * @param {(!ByteBuffer|boolean)=} buffer ByteBuffer to encode to. Will create a new one and flip it if omitted.\r\n * @param {boolean=} noVerify Whether to not verify field values, defaults to `false`\r\n * @return {!ByteBuffer} Encoded message as a ByteBuffer\r\n * @expose\r\n */\r\n Message.encode = function(data, buffer, noVerify) {\r\n return new Message(data).encode(buffer, noVerify);\r\n };\r\n\r\n /**\r\n * Calculates the byte length of the message.\r\n * @name ProtoBuf.Builder.Message#calculate\r\n * @function\r\n * @returns {number} Byte length\r\n * @throws {Error} If the message cannot be calculated or if required fields are missing.\r\n * @expose\r\n */\r\n MessagePrototype.calculate = function() {\r\n return T.calculate(this);\r\n };\r\n\r\n /**\r\n * Encodes the varint32 length-delimited message.\r\n * @name ProtoBuf.Builder.Message#encodeDelimited\r\n * @function\r\n * @param {(!ByteBuffer|boolean)=} buffer ByteBuffer to encode to. Will create a new one and flip it if omitted.\r\n * @return {!ByteBuffer} Encoded message as a ByteBuffer\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded ByteBuffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encodeDelimited = function(buffer) {\r\n var isNew = false;\r\n if (!buffer)\r\n buffer = new ByteBuffer(),\r\n isNew = true;\r\n var enc = new ByteBuffer().LE();\r\n T.encode(this, enc).flip();\r\n buffer.writeVarint32(enc.remaining());\r\n buffer.append(enc);\r\n return isNew ? buffer.flip() : buffer;\r\n };\r\n\r\n /**\r\n * Directly encodes the message to an ArrayBuffer.\r\n * @name ProtoBuf.Builder.Message#encodeAB\r\n * @function\r\n * @return {ArrayBuffer} Encoded message as ArrayBuffer\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded ArrayBuffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encodeAB = function() {\r\n try {\r\n return this.encode().toArrayBuffer();\r\n } catch (e) {\r\n if (e[\"encoded\"]) e[\"encoded\"] = e[\"encoded\"].toArrayBuffer();\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Returns the message as an ArrayBuffer. This is an alias for {@link ProtoBuf.Builder.Message#encodeAB}.\r\n * @name ProtoBuf.Builder.Message#toArrayBuffer\r\n * @function\r\n * @return {ArrayBuffer} Encoded message as ArrayBuffer\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded ArrayBuffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.toArrayBuffer = MessagePrototype.encodeAB;\r\n\r\n /**\r\n * Directly encodes the message to a node Buffer.\r\n * @name ProtoBuf.Builder.Message#encodeNB\r\n * @function\r\n * @return {!Buffer}\r\n * @throws {Error} If the message cannot be encoded, not running under node.js or if required fields are\r\n * missing. The later still returns the encoded node Buffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encodeNB = function() {\r\n try {\r\n return this.encode().toBuffer();\r\n } catch (e) {\r\n if (e[\"encoded\"]) e[\"encoded\"] = e[\"encoded\"].toBuffer();\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Returns the message as a node Buffer. This is an alias for {@link ProtoBuf.Builder.Message#encodeNB}.\r\n * @name ProtoBuf.Builder.Message#toBuffer\r\n * @function\r\n * @return {!Buffer}\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded node Buffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.toBuffer = MessagePrototype.encodeNB;\r\n\r\n /**\r\n * Directly encodes the message to a base64 encoded string.\r\n * @name ProtoBuf.Builder.Message#encode64\r\n * @function\r\n * @return {string} Base64 encoded string\r\n * @throws {Error} If the underlying buffer cannot be encoded or if required fields are missing. The later\r\n * still returns the encoded base64 string in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encode64 = function() {\r\n try {\r\n return this.encode().toBase64();\r\n } catch (e) {\r\n if (e[\"encoded\"]) e[\"encoded\"] = e[\"encoded\"].toBase64();\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Returns the message as a base64 encoded string. This is an alias for {@link ProtoBuf.Builder.Message#encode64}.\r\n * @name ProtoBuf.Builder.Message#toBase64\r\n * @function\r\n * @return {string} Base64 encoded string\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded base64 string in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.toBase64 = MessagePrototype.encode64;\r\n\r\n /**\r\n * Directly encodes the message to a hex encoded string.\r\n * @name ProtoBuf.Builder.Message#encodeHex\r\n * @function\r\n * @return {string} Hex encoded string\r\n * @throws {Error} If the underlying buffer cannot be encoded or if required fields are missing. The later\r\n * still returns the encoded hex string in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encodeHex = function() {\r\n try {\r\n return this.encode().toHex();\r\n } catch (e) {\r\n if (e[\"encoded\"]) e[\"encoded\"] = e[\"encoded\"].toHex();\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Returns the message as a hex encoded string. This is an alias for {@link ProtoBuf.Builder.Message#encodeHex}.\r\n * @name ProtoBuf.Builder.Message#toHex\r\n * @function\r\n * @return {string} Hex encoded string\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded hex string in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.toHex = MessagePrototype.encodeHex;\r\n\r\n /**\r\n * Clones a message object or field value to a raw object.\r\n * @param {*} obj Object to clone\r\n * @param {boolean} binaryAsBase64 Whether to include binary data as base64 strings or as a buffer otherwise\r\n * @param {boolean} longsAsStrings Whether to encode longs as strings\r\n * @param {!ProtoBuf.Reflect.T=} resolvedType The resolved field type if a field\r\n * @returns {*} Cloned object\r\n * @inner\r\n */\r\n function cloneRaw(obj, binaryAsBase64, longsAsStrings, resolvedType) {\r\n if (obj === null || typeof obj !== 'object') {\r\n // Convert enum values to their respective names\r\n if (resolvedType && resolvedType instanceof ProtoBuf.Reflect.Enum) {\r\n var name = ProtoBuf.Reflect.Enum.getName(resolvedType.object, obj);\r\n if (name !== null)\r\n return name;\r\n }\r\n // Pass-through string, number, boolean, null...\r\n return obj;\r\n }\r\n // Convert ByteBuffers to raw buffer or strings\r\n if (ByteBuffer.isByteBuffer(obj))\r\n return binaryAsBase64 ? obj.toBase64() : obj.toBuffer();\r\n // Convert Longs to proper objects or strings\r\n if (ProtoBuf.Long.isLong(obj))\r\n return longsAsStrings ? obj.toString() : ProtoBuf.Long.fromValue(obj);\r\n var clone;\r\n // Clone arrays\r\n if (Array.isArray(obj)) {\r\n clone = [];\r\n obj.forEach(function(v, k) {\r\n clone[k] = cloneRaw(v, binaryAsBase64, longsAsStrings, resolvedType);\r\n });\r\n return clone;\r\n }\r\n clone = {};\r\n // Convert maps to objects\r\n if (obj instanceof ProtoBuf.Map) {\r\n var it = obj.entries();\r\n for (var e = it.next(); !e.done; e = it.next())\r\n clone[obj.keyElem.valueToString(e.value[0])] = cloneRaw(e.value[1], binaryAsBase64, longsAsStrings, obj.valueElem.resolvedType);\r\n return clone;\r\n }\r\n // Everything else is a non-null object\r\n var type = obj.$type,\r\n field = undefined;\r\n for (var i in obj)\r\n if (obj.hasOwnProperty(i)) {\r\n if (type && (field = type.getChild(i)))\r\n clone[i] = cloneRaw(obj[i], binaryAsBase64, longsAsStrings, field.resolvedType);\r\n else\r\n clone[i] = cloneRaw(obj[i], binaryAsBase64, longsAsStrings);\r\n }\r\n return clone;\r\n }\r\n\r\n /**\r\n * Returns the message's raw payload.\r\n * @param {boolean=} binaryAsBase64 Whether to include binary data as base64 strings instead of Buffers, defaults to `false`\r\n * @param {boolean} longsAsStrings Whether to encode longs as strings\r\n * @returns {Object.} Raw payload\r\n * @expose\r\n */\r\n MessagePrototype.toRaw = function(binaryAsBase64, longsAsStrings) {\r\n return cloneRaw(this, !!binaryAsBase64, !!longsAsStrings, this.$type);\r\n };\r\n\r\n /**\r\n * Encodes a message to JSON.\r\n * @returns {string} JSON string\r\n * @expose\r\n */\r\n MessagePrototype.encodeJSON = function() {\r\n return JSON.stringify(\r\n cloneRaw(this,\r\n /* binary-as-base64 */ true,\r\n /* longs-as-strings */ true,\r\n this.$type\r\n )\r\n );\r\n };\r\n\r\n /**\r\n * Decodes a message from the specified buffer or string.\r\n * @name ProtoBuf.Builder.Message.decode\r\n * @function\r\n * @param {!ByteBuffer|!ArrayBuffer|!Buffer|string} buffer Buffer to decode from\r\n * @param {string=} enc Encoding if buffer is a string: hex, utf8 (not recommended), defaults to base64\r\n * @return {!ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still\r\n * returns the decoded message with missing fields in the `decoded` property on the error.\r\n * @expose\r\n * @see ProtoBuf.Builder.Message.decode64\r\n * @see ProtoBuf.Builder.Message.decodeHex\r\n */\r\n Message.decode = function(buffer, enc) {\r\n if (typeof buffer === 'string')\r\n buffer = ByteBuffer.wrap(buffer, enc ? enc : \"base64\");\r\n buffer = ByteBuffer.isByteBuffer(buffer) ? buffer : ByteBuffer.wrap(buffer); // May throw\r\n var le = buffer.littleEndian;\r\n try {\r\n var msg = T.decode(buffer.LE());\r\n buffer.LE(le);\r\n return msg;\r\n } catch (e) {\r\n buffer.LE(le);\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Decodes a varint32 length-delimited message from the specified buffer or string.\r\n * @name ProtoBuf.Builder.Message.decodeDelimited\r\n * @function\r\n * @param {!ByteBuffer|!ArrayBuffer|!Buffer|string} buffer Buffer to decode from\r\n * @param {string=} enc Encoding if buffer is a string: hex, utf8 (not recommended), defaults to base64\r\n * @return {ProtoBuf.Builder.Message} Decoded message or `null` if not enough bytes are available yet\r\n * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still\r\n * returns the decoded message with missing fields in the `decoded` property on the error.\r\n * @expose\r\n */\r\n Message.decodeDelimited = function(buffer, enc) {\r\n if (typeof buffer === 'string')\r\n buffer = ByteBuffer.wrap(buffer, enc ? enc : \"base64\");\r\n buffer = ByteBuffer.isByteBuffer(buffer) ? buffer : ByteBuffer.wrap(buffer); // May throw\r\n if (buffer.remaining() < 1)\r\n return null;\r\n var off = buffer.offset,\r\n len = buffer.readVarint32();\r\n if (buffer.remaining() < len) {\r\n buffer.offset = off;\r\n return null;\r\n }\r\n try {\r\n var msg = T.decode(buffer.slice(buffer.offset, buffer.offset + len).LE());\r\n buffer.offset += len;\r\n return msg;\r\n } catch (err) {\r\n buffer.offset += len;\r\n throw err;\r\n }\r\n };\r\n\r\n /**\r\n * Decodes the message from the specified base64 encoded string.\r\n * @name ProtoBuf.Builder.Message.decode64\r\n * @function\r\n * @param {string} str String to decode from\r\n * @return {!ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still\r\n * returns the decoded message with missing fields in the `decoded` property on the error.\r\n * @expose\r\n */\r\n Message.decode64 = function(str) {\r\n return Message.decode(str, \"base64\");\r\n };\r\n\r\n /**\r\n * Decodes the message from the specified hex encoded string.\r\n * @name ProtoBuf.Builder.Message.decodeHex\r\n * @function\r\n * @param {string} str String to decode from\r\n * @return {!ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still\r\n * returns the decoded message with missing fields in the `decoded` property on the error.\r\n * @expose\r\n */\r\n Message.decodeHex = function(str) {\r\n return Message.decode(str, \"hex\");\r\n };\r\n\r\n /**\r\n * Decodes the message from a JSON string.\r\n * @name ProtoBuf.Builder.Message.decodeJSON\r\n * @function\r\n * @param {string} str String to decode from\r\n * @return {!ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded or if required fields are\r\n * missing.\r\n * @expose\r\n */\r\n Message.decodeJSON = function(str) {\r\n return new Message(JSON.parse(str));\r\n };\r\n\r\n // Utility\r\n\r\n /**\r\n * Returns a string representation of this Message.\r\n * @name ProtoBuf.Builder.Message#toString\r\n * @function\r\n * @return {string} String representation as of \".Fully.Qualified.MessageName\"\r\n * @expose\r\n */\r\n MessagePrototype.toString = function() {\r\n return T.toString();\r\n };\r\n\r\n // Properties\r\n\r\n /**\r\n * Message options.\r\n * @name ProtoBuf.Builder.Message.$options\r\n * @type {Object.}\r\n * @expose\r\n */\r\n var $optionsS; // cc needs this\r\n\r\n /**\r\n * Message options.\r\n * @name ProtoBuf.Builder.Message#$options\r\n * @type {Object.}\r\n * @expose\r\n */\r\n var $options;\r\n\r\n /**\r\n * Reflection type.\r\n * @name ProtoBuf.Builder.Message.$type\r\n * @type {!ProtoBuf.Reflect.Message}\r\n * @expose\r\n */\r\n var $typeS;\r\n\r\n /**\r\n * Reflection type.\r\n * @name ProtoBuf.Builder.Message#$type\r\n * @type {!ProtoBuf.Reflect.Message}\r\n * @expose\r\n */\r\n var $type;\r\n\r\n if (Object.defineProperty)\r\n Object.defineProperty(Message, '$options', { \"value\": T.buildOpt() }),\r\n Object.defineProperty(MessagePrototype, \"$options\", { \"value\": Message[\"$options\"] }),\r\n Object.defineProperty(Message, \"$type\", { \"value\": T }),\r\n Object.defineProperty(MessagePrototype, \"$type\", { \"value\": T });\r\n\r\n return Message;\r\n\r\n })(ProtoBuf, this);\r\n\r\n // Static enums and prototyped sub-messages / cached collections\r\n this._fields = [];\r\n this._fieldsById = {};\r\n this._fieldsByName = {};\r\n for (var i=0, k=this.children.length, child; i>> 3;\r\n switch (wireType) {\r\n case ProtoBuf.WIRE_TYPES.VARINT:\r\n do tag = buf.readUint8();\r\n while ((tag & 0x80) === 0x80);\r\n break;\r\n case ProtoBuf.WIRE_TYPES.BITS64:\r\n buf.offset += 8;\r\n break;\r\n case ProtoBuf.WIRE_TYPES.LDELIM:\r\n tag = buf.readVarint32(); // reads the varint\r\n buf.offset += tag; // skips n bytes\r\n break;\r\n case ProtoBuf.WIRE_TYPES.STARTGROUP:\r\n skipTillGroupEnd(id, buf);\r\n break;\r\n case ProtoBuf.WIRE_TYPES.ENDGROUP:\r\n if (id === expectedId)\r\n return false;\r\n else\r\n throw Error(\"Illegal GROUPEND after unknown group: \"+id+\" (\"+expectedId+\" expected)\");\r\n case ProtoBuf.WIRE_TYPES.BITS32:\r\n buf.offset += 4;\r\n break;\r\n default:\r\n throw Error(\"Illegal wire type in unknown group \"+expectedId+\": \"+wireType);\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Decodes an encoded message and returns the decoded message.\r\n * @param {ByteBuffer} buffer ByteBuffer to decode from\r\n * @param {number=} length Message length. Defaults to decode all the available data.\r\n * @param {number=} expectedGroupEndId Expected GROUPEND id if this is a legacy group\r\n * @return {ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded\r\n * @expose\r\n */\r\n MessagePrototype.decode = function(buffer, length, expectedGroupEndId) {\r\n length = typeof length === 'number' ? length : -1;\r\n var start = buffer.offset,\r\n msg = new (this.clazz)(),\r\n tag, wireType, id, field;\r\n while (buffer.offset < start+length || (length === -1 && buffer.remaining() > 0)) {\r\n tag = buffer.readVarint32();\r\n wireType = tag & 0x07;\r\n id = tag >>> 3;\r\n if (wireType === ProtoBuf.WIRE_TYPES.ENDGROUP) {\r\n if (id !== expectedGroupEndId)\r\n throw Error(\"Illegal group end indicator for \"+this.toString(true)+\": \"+id+\" (\"+(expectedGroupEndId ? expectedGroupEndId+\" expected\" : \"not a group\")+\")\");\r\n break;\r\n }\r\n if (!(field = this._fieldsById[id])) {\r\n // \"messages created by your new code can be parsed by your old code: old binaries simply ignore the new field when parsing.\"\r\n switch (wireType) {\r\n case ProtoBuf.WIRE_TYPES.VARINT:\r\n buffer.readVarint32();\r\n break;\r\n case ProtoBuf.WIRE_TYPES.BITS32:\r\n buffer.offset += 4;\r\n break;\r\n case ProtoBuf.WIRE_TYPES.BITS64:\r\n buffer.offset += 8;\r\n break;\r\n case ProtoBuf.WIRE_TYPES.LDELIM:\r\n var len = buffer.readVarint32();\r\n buffer.offset += len;\r\n break;\r\n case ProtoBuf.WIRE_TYPES.STARTGROUP:\r\n while (skipTillGroupEnd(id, buffer)) {}\r\n break;\r\n default:\r\n throw Error(\"Illegal wire type for unknown field \"+id+\" in \"+this.toString(true)+\"#decode: \"+wireType);\r\n }\r\n continue;\r\n }\r\n if (field.repeated && !field.options[\"packed\"]) {\r\n msg[field.name].push(field.decode(wireType, buffer));\r\n } else if (field.map) {\r\n var keyval = field.decode(wireType, buffer);\r\n msg[field.name].set(keyval[0], keyval[1]);\r\n } else {\r\n msg[field.name] = field.decode(wireType, buffer);\r\n if (field.oneof) { // Field is part of an OneOf (not a virtual OneOf field)\r\n var currentField = msg[field.oneof.name]; // Virtual field references currently set field\r\n if (currentField !== null && currentField !== field.name)\r\n msg[currentField] = null; // Clear currently set field\r\n msg[field.oneof.name] = field.name; // Point virtual field at this field\r\n }\r\n }\r\n }\r\n\r\n // Check if all required fields are present and set default values for optional fields that are not\r\n for (var i=0, k=this._fields.length; i=} options Options\r\n * @param {!ProtoBuf.Reflect.Message.OneOf=} oneof Enclosing OneOf\r\n * @param {string?} syntax The syntax level of this definition (e.g., proto3)\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.T\r\n */\r\n var Field = function(builder, message, rule, keytype, type, name, id, options, oneof, syntax) {\r\n T.call(this, builder, message, name);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Message.Field\";\r\n\r\n /**\r\n * Message field required flag.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.required = rule === \"required\";\r\n\r\n /**\r\n * Message field repeated flag.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.repeated = rule === \"repeated\";\r\n\r\n /**\r\n * Message field map flag.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.map = rule === \"map\";\r\n\r\n /**\r\n * Message field key type. Type reference string if unresolved, protobuf\r\n * type if resolved. Valid only if this.map === true, null otherwise.\r\n * @type {string|{name: string, wireType: number}|null}\r\n * @expose\r\n */\r\n this.keyType = keytype || null;\r\n\r\n /**\r\n * Message field type. Type reference string if unresolved, protobuf type if\r\n * resolved. In a map field, this is the value type.\r\n * @type {string|{name: string, wireType: number}}\r\n * @expose\r\n */\r\n this.type = type;\r\n\r\n /**\r\n * Resolved type reference inside the global namespace.\r\n * @type {ProtoBuf.Reflect.T|null}\r\n * @expose\r\n */\r\n this.resolvedType = null;\r\n\r\n /**\r\n * Unique message field id.\r\n * @type {number}\r\n * @expose\r\n */\r\n this.id = id;\r\n\r\n /**\r\n * Message field options.\r\n * @type {!Object.}\r\n * @dict\r\n * @expose\r\n */\r\n this.options = options || {};\r\n\r\n /**\r\n * Default value.\r\n * @type {*}\r\n * @expose\r\n */\r\n this.defaultValue = null;\r\n\r\n /**\r\n * Enclosing OneOf.\r\n * @type {?ProtoBuf.Reflect.Message.OneOf}\r\n * @expose\r\n */\r\n this.oneof = oneof || null;\r\n\r\n /**\r\n * Syntax level of this definition (e.g., proto3).\r\n * @type {string}\r\n * @expose\r\n */\r\n this.syntax = syntax || 'proto2';\r\n\r\n /**\r\n * Original field name.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.originalName = this.name; // Used to revert camelcase transformation on naming collisions\r\n\r\n /**\r\n * Element implementation. Created in build() after types are resolved.\r\n * @type {ProtoBuf.Element}\r\n * @expose\r\n */\r\n this.element = null;\r\n\r\n /**\r\n * Key element implementation, for map fields. Created in build() after\r\n * types are resolved.\r\n * @type {ProtoBuf.Element}\r\n * @expose\r\n */\r\n this.keyElement = null;\r\n\r\n // Convert field names to camel case notation if the override is set\r\n if (this.builder.options['convertFieldsToCamelCase'] && !(this instanceof Message.ExtensionField))\r\n this.name = ProtoBuf.Util.toCamelCase(this.name);\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.Field.prototype\r\n * @inner\r\n */\r\n var FieldPrototype = Field.prototype = Object.create(T.prototype);\r\n\r\n /**\r\n * Builds the field.\r\n * @override\r\n * @expose\r\n */\r\n FieldPrototype.build = function() {\r\n this.element = new Element(this.type, this.resolvedType, false, this.syntax);\r\n if (this.map)\r\n this.keyElement = new Element(this.keyType, undefined, true, this.syntax);\r\n\r\n // In proto3, fields do not have field presence, and every field is set to\r\n // its type's default value (\"\", 0, 0.0, or false).\r\n if (this.syntax === 'proto3' && !this.repeated && !this.map)\r\n this.defaultValue = Element.defaultFieldValue(this.type);\r\n\r\n // Otherwise, default values are present when explicitly specified\r\n else if (typeof this.options['default'] !== 'undefined')\r\n this.defaultValue = this.verifyValue(this.options['default']);\r\n };\r\n\r\n /**\r\n * Checks if the given value can be set for this field.\r\n * @param {*} value Value to check\r\n * @param {boolean=} skipRepeated Whether to skip the repeated value check or not. Defaults to false.\r\n * @return {*} Verified, maybe adjusted, value\r\n * @throws {Error} If the value cannot be set for this field\r\n * @expose\r\n */\r\n FieldPrototype.verifyValue = function(value, skipRepeated) {\r\n skipRepeated = skipRepeated || false;\r\n var fail = function(val, msg) {\r\n throw Error(\"Illegal value for \"+this.toString(true)+\" of type \"+this.type.name+\": \"+val+\" (\"+msg+\")\");\r\n }.bind(this);\r\n if (value === null) { // NULL values for optional fields\r\n if (this.required)\r\n fail(typeof value, \"required\");\r\n if (this.syntax === 'proto3' && this.type !== ProtoBuf.TYPES[\"message\"])\r\n fail(typeof value, \"proto3 field without field presence cannot be null\");\r\n return null;\r\n }\r\n var i;\r\n if (this.repeated && !skipRepeated) { // Repeated values as arrays\r\n if (!Array.isArray(value))\r\n value = [value];\r\n var res = [];\r\n for (i=0; i 0;\r\n\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n return value.remaining() > 0;\r\n\r\n case ProtoBuf.TYPES[\"enum\"]:\r\n return value !== 0;\r\n\r\n case ProtoBuf.TYPES[\"message\"]:\r\n return value !== null;\r\n default:\r\n return true;\r\n }\r\n };\r\n\r\n /**\r\n * Encodes the specified field value to the specified buffer.\r\n * @param {*} value Verified field value\r\n * @param {ByteBuffer} buffer ByteBuffer to encode to\r\n * @param {!ProtoBuf.Builder.Message} message Runtime message\r\n * @return {ByteBuffer} The ByteBuffer for chaining\r\n * @throws {Error} If the field cannot be encoded\r\n * @expose\r\n */\r\n FieldPrototype.encode = function(value, buffer, message) {\r\n if (this.type === null || typeof this.type !== 'object')\r\n throw Error(\"[INTERNAL] Unresolved type in \"+this.toString(true)+\": \"+this.type);\r\n if (value === null || (this.repeated && value.length == 0))\r\n return buffer; // Optional omitted\r\n try {\r\n if (this.repeated) {\r\n var i;\r\n // \"Only repeated fields of primitive numeric types (types which use the varint, 32-bit, or 64-bit wire\r\n // types) can be declared 'packed'.\"\r\n if (this.options[\"packed\"] && ProtoBuf.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType) >= 0) {\r\n // \"All of the elements of the field are packed into a single key-value pair with wire type 2\r\n // (length-delimited). Each element is encoded the same way it would be normally, except without a\r\n // tag preceding it.\"\r\n buffer.writeVarint32((this.id << 3) | ProtoBuf.WIRE_TYPES.LDELIM);\r\n buffer.ensureCapacity(buffer.offset += 1); // We do not know the length yet, so let's assume a varint of length 1\r\n var start = buffer.offset; // Remember where the contents begin\r\n for (i=0; i 1) { // We need to move the contents\r\n var contents = buffer.slice(start, buffer.offset);\r\n start += varintLen-1;\r\n buffer.offset = start;\r\n buffer.append(contents);\r\n }\r\n buffer.writeVarint32(len, start-varintLen);\r\n } else {\r\n // \"If your message definition has repeated elements (without the [packed=true] option), the encoded\r\n // message has zero or more key-value pairs with the same tag number\"\r\n for (i=0; i= 0) {\r\n n += ByteBuffer.calculateVarint32((this.id << 3) | ProtoBuf.WIRE_TYPES.LDELIM);\r\n ni = 0;\r\n for (i=0; i= 0) {\r\n if (!skipRepeated) {\r\n nBytes = buffer.readVarint32();\r\n nBytes = buffer.offset + nBytes; // Limit\r\n var values = [];\r\n while (buffer.offset < nBytes)\r\n values.push(this.decode(this.type.wireType, buffer, true));\r\n return values;\r\n }\r\n // Read the next value otherwise...\r\n }\r\n\r\n // Handle maps.\r\n if (this.map) {\r\n // Read one (key, value) submessage, and return [key, value]\r\n var key = Element.defaultFieldValue(this.keyType);\r\n value = Element.defaultFieldValue(this.type);\r\n\r\n // Read the length\r\n nBytes = buffer.readVarint32();\r\n if (buffer.remaining() < nBytes)\r\n throw Error(\"Illegal number of bytes for \"+this.toString(true)+\": \"+nBytes+\" required but got only \"+buffer.remaining());\r\n\r\n // Get a sub-buffer of this key/value submessage\r\n var msgbuf = buffer.clone();\r\n msgbuf.limit = msgbuf.offset + nBytes;\r\n buffer.offset += nBytes;\r\n\r\n while (msgbuf.remaining() > 0) {\r\n var tag = msgbuf.readVarint32();\r\n wireType = tag & 0x07;\r\n var id = tag >>> 3;\r\n if (id === 1) {\r\n key = this.keyElement.decode(msgbuf, wireType, id);\r\n } else if (id === 2) {\r\n value = this.element.decode(msgbuf, wireType, id);\r\n } else {\r\n throw Error(\"Unexpected tag in map field key/value submessage\");\r\n }\r\n }\r\n\r\n return [key, value];\r\n }\r\n\r\n // Handle singular and non-packed repeated field values.\r\n return this.element.decode(buffer, wireType, this.id);\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.Field\r\n * @expose\r\n */\r\n Reflect.Message.Field = Field;\r\n\r\n /**\r\n * Constructs a new Message ExtensionField.\r\n * @exports ProtoBuf.Reflect.Message.ExtensionField\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Message} message Message reference\r\n * @param {string} rule Rule, one of requried, optional, repeated\r\n * @param {string} type Data type, e.g. int32\r\n * @param {string} name Field name\r\n * @param {number} id Unique field id\r\n * @param {!Object.=} options Options\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Message.Field\r\n */\r\n var ExtensionField = function(builder, message, rule, type, name, id, options) {\r\n Field.call(this, builder, message, rule, /* keytype = */ null, type, name, id, options);\r\n\r\n /**\r\n * Extension reference.\r\n * @type {!ProtoBuf.Reflect.Extension}\r\n * @expose\r\n */\r\n this.extension;\r\n };\r\n\r\n // Extends Field\r\n ExtensionField.prototype = Object.create(Field.prototype);\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.ExtensionField\r\n * @expose\r\n */\r\n Reflect.Message.ExtensionField = ExtensionField;\r\n\r\n /**\r\n * Constructs a new Message OneOf.\r\n * @exports ProtoBuf.Reflect.Message.OneOf\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Message} message Message reference\r\n * @param {string} name OneOf name\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.T\r\n */\r\n var OneOf = function(builder, message, name) {\r\n T.call(this, builder, message, name);\r\n\r\n /**\r\n * Enclosed fields.\r\n * @type {!Array.}\r\n * @expose\r\n */\r\n this.fields = [];\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.OneOf\r\n * @expose\r\n */\r\n Reflect.Message.OneOf = OneOf;\r\n\r\n /**\r\n * Constructs a new Enum.\r\n * @exports ProtoBuf.Reflect.Enum\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.T} parent Parent Reflect object\r\n * @param {string} name Enum name\r\n * @param {Object.=} options Enum options\r\n * @param {string?} syntax The syntax level (e.g., proto3)\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Namespace\r\n */\r\n var Enum = function(builder, parent, name, options, syntax) {\r\n Namespace.call(this, builder, parent, name, options, syntax);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Enum\";\r\n\r\n /**\r\n * Runtime enum object.\r\n * @type {Object.|null}\r\n * @expose\r\n */\r\n this.object = null;\r\n };\r\n\r\n /**\r\n * Gets the string name of an enum value.\r\n * @param {!ProtoBuf.Builder.Enum} enm Runtime enum\r\n * @param {number} value Enum value\r\n * @returns {?string} Name or `null` if not present\r\n * @expose\r\n */\r\n Enum.getName = function(enm, value) {\r\n var keys = Object.keys(enm);\r\n for (var i=0, key; i}\r\n * @expose\r\n */\r\n EnumPrototype.build = function(rebuild) {\r\n if (this.object && !rebuild)\r\n return this.object;\r\n var enm = new ProtoBuf.Builder.Enum(),\r\n values = this.getChildren(Enum.Value);\r\n for (var i=0, k=values.length; i=} options Options\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Namespace\r\n */\r\n var Service = function(builder, root, name, options) {\r\n Namespace.call(this, builder, root, name, options);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Service\";\r\n\r\n /**\r\n * Built runtime service class.\r\n * @type {?function(new:ProtoBuf.Builder.Service)}\r\n */\r\n this.clazz = null;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service.prototype\r\n * @inner\r\n */\r\n var ServicePrototype = Service.prototype = Object.create(Namespace.prototype);\r\n\r\n /**\r\n * Builds the service and returns the runtime counterpart, which is a fully functional class.\r\n * @see ProtoBuf.Builder.Service\r\n * @param {boolean=} rebuild Whether to rebuild or not\r\n * @return {Function} Service class\r\n * @throws {Error} If the message cannot be built\r\n * @expose\r\n */\r\n ServicePrototype.build = function(rebuild) {\r\n if (this.clazz && !rebuild)\r\n return this.clazz;\r\n\r\n // Create the runtime Service class in its own scope\r\n return this.clazz = (function(ProtoBuf, T) {\r\n\r\n /**\r\n * Constructs a new runtime Service.\r\n * @name ProtoBuf.Builder.Service\r\n * @param {function(string, ProtoBuf.Builder.Message, function(Error, ProtoBuf.Builder.Message=))=} rpcImpl RPC implementation receiving the method name and the message\r\n * @class Barebone of all runtime services.\r\n * @constructor\r\n * @throws {Error} If the service cannot be created\r\n */\r\n var Service = function(rpcImpl) {\r\n ProtoBuf.Builder.Service.call(this);\r\n\r\n /**\r\n * Service implementation.\r\n * @name ProtoBuf.Builder.Service#rpcImpl\r\n * @type {!function(string, ProtoBuf.Builder.Message, function(Error, ProtoBuf.Builder.Message=))}\r\n * @expose\r\n */\r\n this.rpcImpl = rpcImpl || function(name, msg, callback) {\r\n // This is what a user has to implement: A function receiving the method name, the actual message to\r\n // send (type checked) and the callback that's either provided with the error as its first\r\n // argument or null and the actual response message.\r\n setTimeout(callback.bind(this, Error(\"Not implemented, see: https://github.com/dcodeIO/ProtoBuf.js/wiki/Services\")), 0); // Must be async!\r\n };\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Builder.Service.prototype\r\n * @inner\r\n */\r\n var ServicePrototype = Service.prototype = Object.create(ProtoBuf.Builder.Service.prototype);\r\n\r\n /**\r\n * Asynchronously performs an RPC call using the given RPC implementation.\r\n * @name ProtoBuf.Builder.Service.[Method]\r\n * @function\r\n * @param {!function(string, ProtoBuf.Builder.Message, function(Error, ProtoBuf.Builder.Message=))} rpcImpl RPC implementation\r\n * @param {ProtoBuf.Builder.Message} req Request\r\n * @param {function(Error, (ProtoBuf.Builder.Message|ByteBuffer|Buffer|string)=)} callback Callback receiving\r\n * the error if any and the response either as a pre-parsed message or as its raw bytes\r\n * @abstract\r\n */\r\n\r\n /**\r\n * Asynchronously performs an RPC call using the instance's RPC implementation.\r\n * @name ProtoBuf.Builder.Service#[Method]\r\n * @function\r\n * @param {ProtoBuf.Builder.Message} req Request\r\n * @param {function(Error, (ProtoBuf.Builder.Message|ByteBuffer|Buffer|string)=)} callback Callback receiving\r\n * the error if any and the response either as a pre-parsed message or as its raw bytes\r\n * @abstract\r\n */\r\n\r\n var rpc = T.getChildren(ProtoBuf.Reflect.Service.RPCMethod);\r\n for (var i=0; i}\r\n * @expose\r\n */\r\n var $optionsS; // cc needs this\r\n\r\n /**\r\n * Service options.\r\n * @name ProtoBuf.Builder.Service#$options\r\n * @type {Object.}\r\n * @expose\r\n */\r\n var $options;\r\n\r\n /**\r\n * Reflection type.\r\n * @name ProtoBuf.Builder.Service.$type\r\n * @type {!ProtoBuf.Reflect.Service}\r\n * @expose\r\n */\r\n var $typeS;\r\n\r\n /**\r\n * Reflection type.\r\n * @name ProtoBuf.Builder.Service#$type\r\n * @type {!ProtoBuf.Reflect.Service}\r\n * @expose\r\n */\r\n var $type;\r\n\r\n if (Object.defineProperty)\r\n Object.defineProperty(Service, \"$options\", { \"value\": T.buildOpt() }),\r\n Object.defineProperty(ServicePrototype, \"$options\", { \"value\": Service[\"$options\"] }),\r\n Object.defineProperty(Service, \"$type\", { \"value\": T }),\r\n Object.defineProperty(ServicePrototype, \"$type\", { \"value\": T });\r\n\r\n return Service;\r\n\r\n })(ProtoBuf, this);\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service\r\n * @expose\r\n */\r\n Reflect.Service = Service;\r\n\r\n /**\r\n * Abstract service method.\r\n * @exports ProtoBuf.Reflect.Service.Method\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Service} svc Service\r\n * @param {string} name Method name\r\n * @param {Object.=} options Options\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.T\r\n */\r\n var Method = function(builder, svc, name, options) {\r\n T.call(this, builder, svc, name);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Service.Method\";\r\n\r\n /**\r\n * Options.\r\n * @type {Object.}\r\n * @expose\r\n */\r\n this.options = options || {};\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service.Method.prototype\r\n * @inner\r\n */\r\n var MethodPrototype = Method.prototype = Object.create(T.prototype);\r\n\r\n /**\r\n * Builds the method's '$options' property.\r\n * @name ProtoBuf.Reflect.Service.Method#buildOpt\r\n * @function\r\n * @return {Object.}\r\n */\r\n MethodPrototype.buildOpt = NamespacePrototype.buildOpt;\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service.Method\r\n * @expose\r\n */\r\n Reflect.Service.Method = Method;\r\n\r\n /**\r\n * RPC service method.\r\n * @exports ProtoBuf.Reflect.Service.RPCMethod\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Service} svc Service\r\n * @param {string} name Method name\r\n * @param {string} request Request message name\r\n * @param {string} response Response message name\r\n * @param {boolean} request_stream Whether requests are streamed\r\n * @param {boolean} response_stream Whether responses are streamed\r\n * @param {Object.=} options Options\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Service.Method\r\n */\r\n var RPCMethod = function(builder, svc, name, request, response, request_stream, response_stream, options) {\r\n Method.call(this, builder, svc, name, options);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Service.RPCMethod\";\r\n\r\n /**\r\n * Request message name.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.requestName = request;\r\n\r\n /**\r\n * Response message name.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.responseName = response;\r\n\r\n /**\r\n * Whether requests are streamed\r\n * @type {bool}\r\n * @expose\r\n */\r\n this.requestStream = request_stream;\r\n\r\n /**\r\n * Whether responses are streamed\r\n * @type {bool}\r\n * @expose\r\n */\r\n this.responseStream = response_stream;\r\n\r\n /**\r\n * Resolved request message type.\r\n * @type {ProtoBuf.Reflect.Message}\r\n * @expose\r\n */\r\n this.resolvedRequestType = null;\r\n\r\n /**\r\n * Resolved response message type.\r\n * @type {ProtoBuf.Reflect.Message}\r\n * @expose\r\n */\r\n this.resolvedResponseType = null;\r\n };\r\n\r\n // Extends Method\r\n RPCMethod.prototype = Object.create(Method.prototype);\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service.RPCMethod\r\n * @expose\r\n */\r\n Reflect.Service.RPCMethod = RPCMethod;\r\n\r\n return Reflect;\r\n\r\n })(ProtoBuf);\r\n\r\n /**\r\n * @alias ProtoBuf.Builder\r\n * @expose\r\n */\r\n ProtoBuf.Builder = (function(ProtoBuf, Lang, Reflect) {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a new Builder.\r\n * @exports ProtoBuf.Builder\r\n * @class Provides the functionality to build protocol messages.\r\n * @param {Object.=} options Options\r\n * @constructor\r\n */\r\n var Builder = function(options) {\r\n\r\n /**\r\n * Namespace.\r\n * @type {ProtoBuf.Reflect.Namespace}\r\n * @expose\r\n */\r\n this.ns = new Reflect.Namespace(this, null, \"\"); // Global namespace\r\n\r\n /**\r\n * Namespace pointer.\r\n * @type {ProtoBuf.Reflect.T}\r\n * @expose\r\n */\r\n this.ptr = this.ns;\r\n\r\n /**\r\n * Resolved flag.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.resolved = false;\r\n\r\n /**\r\n * The current building result.\r\n * @type {Object.|null}\r\n * @expose\r\n */\r\n this.result = null;\r\n\r\n /**\r\n * Imported files.\r\n * @type {Array.}\r\n * @expose\r\n */\r\n this.files = {};\r\n\r\n /**\r\n * Import root override.\r\n * @type {?string}\r\n * @expose\r\n */\r\n this.importRoot = null;\r\n\r\n /**\r\n * Options.\r\n * @type {!Object.}\r\n * @expose\r\n */\r\n this.options = options || {};\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Builder.prototype\r\n * @inner\r\n */\r\n var BuilderPrototype = Builder.prototype;\r\n\r\n // ----- Definition tests -----\r\n\r\n /**\r\n * Tests if a definition most likely describes a message.\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isMessage = function(def) {\r\n // Messages require a string name\r\n if (typeof def[\"name\"] !== 'string')\r\n return false;\r\n // Messages do not contain values (enum) or rpc methods (service)\r\n if (typeof def[\"values\"] !== 'undefined' || typeof def[\"rpc\"] !== 'undefined')\r\n return false;\r\n return true;\r\n };\r\n\r\n /**\r\n * Tests if a definition most likely describes a message field.\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isMessageField = function(def) {\r\n // Message fields require a string rule, name and type and an id\r\n if (typeof def[\"rule\"] !== 'string' || typeof def[\"name\"] !== 'string' || typeof def[\"type\"] !== 'string' || typeof def[\"id\"] === 'undefined')\r\n return false;\r\n return true;\r\n };\r\n\r\n /**\r\n * Tests if a definition most likely describes an enum.\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isEnum = function(def) {\r\n // Enums require a string name\r\n if (typeof def[\"name\"] !== 'string')\r\n return false;\r\n // Enums require at least one value\r\n if (typeof def[\"values\"] === 'undefined' || !Array.isArray(def[\"values\"]) || def[\"values\"].length === 0)\r\n return false;\r\n return true;\r\n };\r\n\r\n /**\r\n * Tests if a definition most likely describes a service.\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isService = function(def) {\r\n // Services require a string name and an rpc object\r\n if (typeof def[\"name\"] !== 'string' || typeof def[\"rpc\"] !== 'object' || !def[\"rpc\"])\r\n return false;\r\n return true;\r\n };\r\n\r\n /**\r\n * Tests if a definition most likely describes an extended message\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isExtend = function(def) {\r\n // Extends rquire a string ref\r\n if (typeof def[\"ref\"] !== 'string')\r\n return false;\r\n return true;\r\n };\r\n\r\n // ----- Building -----\r\n\r\n /**\r\n * Resets the pointer to the root namespace.\r\n * @returns {!ProtoBuf.Builder} this\r\n * @expose\r\n */\r\n BuilderPrototype.reset = function() {\r\n this.ptr = this.ns;\r\n return this;\r\n };\r\n\r\n /**\r\n * Defines a namespace on top of the current pointer position and places the pointer on it.\r\n * @param {string} namespace\r\n * @return {!ProtoBuf.Builder} this\r\n * @expose\r\n */\r\n BuilderPrototype.define = function(namespace) {\r\n if (typeof namespace !== 'string' || !Lang.TYPEREF.test(namespace))\r\n throw Error(\"illegal namespace: \"+namespace);\r\n namespace.split(\".\").forEach(function(part) {\r\n var ns = this.ptr.getChild(part);\r\n if (ns === null) // Keep existing\r\n this.ptr.addChild(ns = new Reflect.Namespace(this, this.ptr, part));\r\n this.ptr = ns;\r\n }, this);\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates the specified definitions at the current pointer position.\r\n * @param {!Array.} defs Messages, enums or services to create\r\n * @returns {!ProtoBuf.Builder} this\r\n * @throws {Error} If a message definition is invalid\r\n * @expose\r\n */\r\n BuilderPrototype.create = function(defs) {\r\n if (!defs)\r\n return this; // Nothing to create\r\n if (!Array.isArray(defs))\r\n defs = [defs];\r\n else {\r\n if (defs.length === 0)\r\n return this;\r\n defs = defs.slice();\r\n }\r\n\r\n // It's quite hard to keep track of scopes and memory here, so let's do this iteratively.\r\n var stack = [defs];\r\n while (stack.length > 0) {\r\n defs = stack.pop();\r\n\r\n if (!Array.isArray(defs)) // Stack always contains entire namespaces\r\n throw Error(\"not a valid namespace: \"+JSON.stringify(defs));\r\n\r\n while (defs.length > 0) {\r\n var def = defs.shift(); // Namespaces always contain an array of messages, enums and services\r\n\r\n if (Builder.isMessage(def)) {\r\n var obj = new Reflect.Message(this, this.ptr, def[\"name\"], def[\"options\"], def[\"isGroup\"], def[\"syntax\"]);\r\n\r\n // Create OneOfs\r\n var oneofs = {};\r\n if (def[\"oneofs\"])\r\n Object.keys(def[\"oneofs\"]).forEach(function(name) {\r\n obj.addChild(oneofs[name] = new Reflect.Message.OneOf(this, obj, name));\r\n }, this);\r\n\r\n // Create fields\r\n if (def[\"fields\"])\r\n def[\"fields\"].forEach(function(fld) {\r\n if (obj.getChild(fld[\"id\"]|0) !== null)\r\n throw Error(\"duplicate or invalid field id in \"+obj.name+\": \"+fld['id']);\r\n if (fld[\"options\"] && typeof fld[\"options\"] !== 'object')\r\n throw Error(\"illegal field options in \"+obj.name+\"#\"+fld[\"name\"]);\r\n var oneof = null;\r\n if (typeof fld[\"oneof\"] === 'string' && !(oneof = oneofs[fld[\"oneof\"]]))\r\n throw Error(\"illegal oneof in \"+obj.name+\"#\"+fld[\"name\"]+\": \"+fld[\"oneof\"]);\r\n fld = new Reflect.Message.Field(this, obj, fld[\"rule\"], fld[\"keytype\"], fld[\"type\"], fld[\"name\"], fld[\"id\"], fld[\"options\"], oneof, def[\"syntax\"]);\r\n if (oneof)\r\n oneof.fields.push(fld);\r\n obj.addChild(fld);\r\n }, this);\r\n\r\n // Push children to stack\r\n var subObj = [];\r\n if (def[\"enums\"])\r\n def[\"enums\"].forEach(function(enm) {\r\n subObj.push(enm);\r\n });\r\n if (def[\"messages\"])\r\n def[\"messages\"].forEach(function(msg) {\r\n subObj.push(msg);\r\n });\r\n if (def[\"services\"])\r\n def[\"services\"].forEach(function(svc) {\r\n subObj.push(svc);\r\n });\r\n\r\n // Set extension range\r\n if (def[\"extensions\"]) {\r\n obj.extensions = def[\"extensions\"];\r\n if (obj.extensions[0] < ProtoBuf.ID_MIN)\r\n obj.extensions[0] = ProtoBuf.ID_MIN;\r\n if (obj.extensions[1] > ProtoBuf.ID_MAX)\r\n obj.extensions[1] = ProtoBuf.ID_MAX;\r\n }\r\n\r\n // Create on top of current namespace\r\n this.ptr.addChild(obj);\r\n if (subObj.length > 0) {\r\n stack.push(defs); // Push the current level back\r\n defs = subObj; // Continue processing sub level\r\n subObj = null;\r\n this.ptr = obj; // And move the pointer to this namespace\r\n obj = null;\r\n continue;\r\n }\r\n subObj = null;\r\n\r\n } else if (Builder.isEnum(def)) {\r\n\r\n obj = new Reflect.Enum(this, this.ptr, def[\"name\"], def[\"options\"], def[\"syntax\"]);\r\n def[\"values\"].forEach(function(val) {\r\n obj.addChild(new Reflect.Enum.Value(this, obj, val[\"name\"], val[\"id\"]));\r\n }, this);\r\n this.ptr.addChild(obj);\r\n\r\n } else if (Builder.isService(def)) {\r\n\r\n obj = new Reflect.Service(this, this.ptr, def[\"name\"], def[\"options\"]);\r\n Object.keys(def[\"rpc\"]).forEach(function(name) {\r\n var mtd = def[\"rpc\"][name];\r\n obj.addChild(new Reflect.Service.RPCMethod(this, obj, name, mtd[\"request\"], mtd[\"response\"], !!mtd[\"request_stream\"], !!mtd[\"response_stream\"], mtd[\"options\"]));\r\n }, this);\r\n this.ptr.addChild(obj);\r\n\r\n } else if (Builder.isExtend(def)) {\r\n\r\n obj = this.ptr.resolve(def[\"ref\"], true);\r\n if (obj) {\r\n def[\"fields\"].forEach(function(fld) {\r\n if (obj.getChild(fld['id']|0) !== null)\r\n throw Error(\"duplicate extended field id in \"+obj.name+\": \"+fld['id']);\r\n if (fld['id'] < obj.extensions[0] || fld['id'] > obj.extensions[1])\r\n throw Error(\"illegal extended field id in \"+obj.name+\": \"+fld['id']+\" (\"+obj.extensions.join(' to ')+\" expected)\");\r\n // Convert extension field names to camel case notation if the override is set\r\n var name = fld[\"name\"];\r\n if (this.options['convertFieldsToCamelCase'])\r\n name = ProtoBuf.Util.toCamelCase(name);\r\n // see #161: Extensions use their fully qualified name as their runtime key and...\r\n var field = new Reflect.Message.ExtensionField(this, obj, fld[\"rule\"], fld[\"type\"], this.ptr.fqn()+'.'+name, fld[\"id\"], fld[\"options\"]);\r\n // ...are added on top of the current namespace as an extension which is used for\r\n // resolving their type later on (the extension always keeps the original name to\r\n // prevent naming collisions)\r\n var ext = new Reflect.Extension(this, this.ptr, fld[\"name\"], field);\r\n field.extension = ext;\r\n this.ptr.addChild(ext);\r\n obj.addChild(field);\r\n }, this);\r\n\r\n } else if (!/\\.?google\\.protobuf\\./.test(def[\"ref\"])) // Silently skip internal extensions\r\n throw Error(\"extended message \"+def[\"ref\"]+\" is not defined\");\r\n\r\n } else\r\n throw Error(\"not a valid definition: \"+JSON.stringify(def));\r\n\r\n def = null;\r\n obj = null;\r\n }\r\n // Break goes here\r\n defs = null;\r\n this.ptr = this.ptr.parent; // Namespace done, continue at parent\r\n }\r\n this.resolved = false; // Require re-resolve\r\n this.result = null; // Require re-build\r\n return this;\r\n };\r\n\r\n /**\r\n * Propagates syntax to all children.\r\n * @param {!Object} parent\r\n * @inner\r\n */\r\n function propagateSyntax(parent) {\r\n if (parent['messages']) {\r\n parent['messages'].forEach(function(child) {\r\n child[\"syntax\"] = parent[\"syntax\"];\r\n propagateSyntax(child);\r\n });\r\n }\r\n if (parent['enums']) {\r\n parent['enums'].forEach(function(child) {\r\n child[\"syntax\"] = parent[\"syntax\"];\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Imports another definition into this builder.\r\n * @param {Object.} json Parsed import\r\n * @param {(string|{root: string, file: string})=} filename Imported file name\r\n * @returns {!ProtoBuf.Builder} this\r\n * @throws {Error} If the definition or file cannot be imported\r\n * @expose\r\n */\r\n BuilderPrototype[\"import\"] = function(json, filename) {\r\n var delim = '/';\r\n\r\n // Make sure to skip duplicate imports\r\n\r\n if (typeof filename === 'string') {\r\n\r\n if (ProtoBuf.Util.IS_NODE)\r\n filename = require(\"path\")['resolve'](filename);\r\n if (this.files[filename] === true)\r\n return this.reset();\r\n this.files[filename] = true;\r\n\r\n } else if (typeof filename === 'object') { // Object with root, file.\r\n\r\n var root = filename.root;\r\n if (ProtoBuf.Util.IS_NODE)\r\n root = require(\"path\")['resolve'](root);\r\n if (root.indexOf(\"\\\\\") >= 0 || filename.file.indexOf(\"\\\\\") >= 0)\r\n delim = '\\\\';\r\n var fname = root + delim + filename.file;\r\n if (this.files[fname] === true)\r\n return this.reset();\r\n this.files[fname] = true;\r\n }\r\n\r\n // Import imports\r\n\r\n if (json['imports'] && json['imports'].length > 0) {\r\n var importRoot,\r\n resetRoot = false;\r\n\r\n if (typeof filename === 'object') { // If an import root is specified, override\r\n\r\n this.importRoot = filename[\"root\"]; resetRoot = true; // ... and reset afterwards\r\n importRoot = this.importRoot;\r\n filename = filename[\"file\"];\r\n if (importRoot.indexOf(\"\\\\\") >= 0 || filename.indexOf(\"\\\\\") >= 0)\r\n delim = '\\\\';\r\n\r\n } else if (typeof filename === 'string') {\r\n\r\n if (this.importRoot) // If import root is overridden, use it\r\n importRoot = this.importRoot;\r\n else { // Otherwise compute from filename\r\n if (filename.indexOf(\"/\") >= 0) { // Unix\r\n importRoot = filename.replace(/\\/[^\\/]*$/, \"\");\r\n if (/* /file.proto */ importRoot === \"\")\r\n importRoot = \"/\";\r\n } else if (filename.indexOf(\"\\\\\") >= 0) { // Windows\r\n importRoot = filename.replace(/\\\\[^\\\\]*$/, \"\");\r\n delim = '\\\\';\r\n } else\r\n importRoot = \".\";\r\n }\r\n\r\n } else\r\n importRoot = null;\r\n\r\n for (var i=0; i)=} path Specifies what to return. If omitted, the entire namespace will be returned.\r\n * @returns {!ProtoBuf.Builder.Message|!Object.}\r\n * @throws {Error} If a type could not be resolved\r\n * @expose\r\n */\r\n BuilderPrototype.build = function(path) {\r\n this.reset();\r\n if (!this.resolved)\r\n this.resolveAll(),\r\n this.resolved = true,\r\n this.result = null; // Require re-build\r\n if (this.result === null) // (Re-)Build\r\n this.result = this.ns.build();\r\n if (!path)\r\n return this.result;\r\n var part = typeof path === 'string' ? path.split(\".\") : path,\r\n ptr = this.result; // Build namespace pointer (no hasChild etc.)\r\n for (var i=0; i=} contents Initial contents\r\n * @constructor\r\n */\r\n var Map = function(field, contents) {\r\n if (!field.map)\r\n throw Error(\"field is not a map\");\r\n\r\n /**\r\n * The field corresponding to this map.\r\n * @type {!ProtoBuf.Reflect.Field}\r\n */\r\n this.field = field;\r\n\r\n /**\r\n * Element instance corresponding to key type.\r\n * @type {!ProtoBuf.Reflect.Element}\r\n */\r\n this.keyElem = new Reflect.Element(field.keyType, null, true, field.syntax);\r\n\r\n /**\r\n * Element instance corresponding to value type.\r\n * @type {!ProtoBuf.Reflect.Element}\r\n */\r\n this.valueElem = new Reflect.Element(field.type, field.resolvedType, false, field.syntax);\r\n\r\n /**\r\n * Internal map: stores mapping of (string form of key) -> (key, value)\r\n * pair.\r\n *\r\n * We provide map semantics for arbitrary key types, but we build on top\r\n * of an Object, which has only string keys. In order to avoid the need\r\n * to convert a string key back to its native type in many situations,\r\n * we store the native key value alongside the value. Thus, we only need\r\n * a one-way mapping from a key type to its string form that guarantees\r\n * uniqueness and equality (i.e., str(K1) === str(K2) if and only if K1\r\n * === K2).\r\n *\r\n * @type {!Object}\r\n */\r\n this.map = {};\r\n\r\n /**\r\n * Returns the number of elements in the map.\r\n */\r\n Object.defineProperty(this, \"size\", {\r\n get: function() { return Object.keys(this.map).length; }\r\n });\r\n\r\n // Fill initial contents from a raw object.\r\n if (contents) {\r\n var keys = Object.keys(contents);\r\n for (var i = 0; i < keys.length; i++) {\r\n var key = this.keyElem.valueFromString(keys[i]);\r\n var val = this.valueElem.verifyValue(contents[keys[i]]);\r\n this.map[this.keyElem.valueToString(key)] =\r\n { key: key, value: val };\r\n }\r\n }\r\n };\r\n\r\n var MapPrototype = Map.prototype;\r\n\r\n /**\r\n * Helper: return an iterator over an array.\r\n * @param {!Array<*>} arr the array\r\n * @returns {!Object} an iterator\r\n * @inner\r\n */\r\n function arrayIterator(arr) {\r\n var idx = 0;\r\n return {\r\n next: function() {\r\n if (idx < arr.length)\r\n return { done: false, value: arr[idx++] };\r\n return { done: true };\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Clears the map.\r\n */\r\n MapPrototype.clear = function() {\r\n this.map = {};\r\n };\r\n\r\n /**\r\n * Deletes a particular key from the map.\r\n * @returns {boolean} Whether any entry with this key was deleted.\r\n */\r\n MapPrototype[\"delete\"] = function(key) {\r\n var keyValue = this.keyElem.valueToString(this.keyElem.verifyValue(key));\r\n var hadKey = keyValue in this.map;\r\n delete this.map[keyValue];\r\n return hadKey;\r\n };\r\n\r\n /**\r\n * Returns an iterator over [key, value] pairs in the map.\r\n * @returns {Object} The iterator\r\n */\r\n MapPrototype.entries = function() {\r\n var entries = [];\r\n var strKeys = Object.keys(this.map);\r\n for (var i = 0, entry; i < strKeys.length; i++)\r\n entries.push([(entry=this.map[strKeys[i]]).key, entry.value]);\r\n return arrayIterator(entries);\r\n };\r\n\r\n /**\r\n * Returns an iterator over keys in the map.\r\n * @returns {Object} The iterator\r\n */\r\n MapPrototype.keys = function() {\r\n var keys = [];\r\n var strKeys = Object.keys(this.map);\r\n for (var i = 0; i < strKeys.length; i++)\r\n keys.push(this.map[strKeys[i]].key);\r\n return arrayIterator(keys);\r\n };\r\n\r\n /**\r\n * Returns an iterator over values in the map.\r\n * @returns {!Object} The iterator\r\n */\r\n MapPrototype.values = function() {\r\n var values = [];\r\n var strKeys = Object.keys(this.map);\r\n for (var i = 0; i < strKeys.length; i++)\r\n values.push(this.map[strKeys[i]].value);\r\n return arrayIterator(values);\r\n };\r\n\r\n /**\r\n * Iterates over entries in the map, calling a function on each.\r\n * @param {function(this:*, *, *, *)} cb The callback to invoke with value, key, and map arguments.\r\n * @param {Object=} thisArg The `this` value for the callback\r\n */\r\n MapPrototype.forEach = function(cb, thisArg) {\r\n var strKeys = Object.keys(this.map);\r\n for (var i = 0, entry; i < strKeys.length; i++)\r\n cb.call(thisArg, (entry=this.map[strKeys[i]]).value, entry.key, this);\r\n };\r\n\r\n /**\r\n * Sets a key in the map to the given value.\r\n * @param {*} key The key\r\n * @param {*} value The value\r\n * @returns {!ProtoBuf.Map} The map instance\r\n */\r\n MapPrototype.set = function(key, value) {\r\n var keyValue = this.keyElem.verifyValue(key);\r\n var valValue = this.valueElem.verifyValue(value);\r\n this.map[this.keyElem.valueToString(keyValue)] =\r\n { key: keyValue, value: valValue };\r\n return this;\r\n };\r\n\r\n /**\r\n * Gets the value corresponding to a key in the map.\r\n * @param {*} key The key\r\n * @returns {*|undefined} The value, or `undefined` if key not present\r\n */\r\n MapPrototype.get = function(key) {\r\n var keyValue = this.keyElem.valueToString(this.keyElem.verifyValue(key));\r\n if (!(keyValue in this.map))\r\n return undefined;\r\n return this.map[keyValue].value;\r\n };\r\n\r\n /**\r\n * Determines whether the given key is present in the map.\r\n * @param {*} key The key\r\n * @returns {boolean} `true` if the key is present\r\n */\r\n MapPrototype.has = function(key) {\r\n var keyValue = this.keyElem.valueToString(this.keyElem.verifyValue(key));\r\n return (keyValue in this.map);\r\n };\r\n\r\n return Map;\r\n })(ProtoBuf, ProtoBuf.Reflect);\r\n\r\n\r\n /**\r\n * Loads a .proto string and returns the Builder.\r\n * @param {string} proto .proto file contents\r\n * @param {(ProtoBuf.Builder|string|{root: string, file: string})=} builder Builder to append to. Will create a new one if omitted.\r\n * @param {(string|{root: string, file: string})=} filename The corresponding file name if known. Must be specified for imports.\r\n * @return {ProtoBuf.Builder} Builder to create new messages\r\n * @throws {Error} If the definition cannot be parsed or built\r\n * @expose\r\n */\r\n ProtoBuf.loadProto = function(proto, builder, filename) {\r\n if (typeof builder === 'string' || (builder && typeof builder[\"file\"] === 'string' && typeof builder[\"root\"] === 'string'))\r\n filename = builder,\r\n builder = undefined;\r\n return ProtoBuf.loadJson(ProtoBuf.DotProto.Parser.parse(proto), builder, filename);\r\n };\r\n\r\n /**\r\n * Loads a .proto string and returns the Builder. This is an alias of {@link ProtoBuf.loadProto}.\r\n * @function\r\n * @param {string} proto .proto file contents\r\n * @param {(ProtoBuf.Builder|string)=} builder Builder to append to. Will create a new one if omitted.\r\n * @param {(string|{root: string, file: string})=} filename The corresponding file name if known. Must be specified for imports.\r\n * @return {ProtoBuf.Builder} Builder to create new messages\r\n * @throws {Error} If the definition cannot be parsed or built\r\n * @expose\r\n */\r\n ProtoBuf.protoFromString = ProtoBuf.loadProto; // Legacy\r\n\r\n /**\r\n * Loads a .proto file and returns the Builder.\r\n * @param {string|{root: string, file: string}} filename Path to proto file or an object specifying 'file' with\r\n * an overridden 'root' path for all imported files.\r\n * @param {function(?Error, !ProtoBuf.Builder=)=} callback Callback that will receive `null` as the first and\r\n * the Builder as its second argument on success, otherwise the error as its first argument. If omitted, the\r\n * file will be read synchronously and this function will return the Builder.\r\n * @param {ProtoBuf.Builder=} builder Builder to append to. Will create a new one if omitted.\r\n * @return {?ProtoBuf.Builder|undefined} The Builder if synchronous (no callback specified, will be NULL if the\r\n * request has failed), else undefined\r\n * @expose\r\n */\r\n ProtoBuf.loadProtoFile = function(filename, callback, builder) {\r\n if (callback && typeof callback === 'object')\r\n builder = callback,\r\n callback = null;\r\n else if (!callback || typeof callback !== 'function')\r\n callback = null;\r\n if (callback)\r\n return ProtoBuf.Util.fetch(typeof filename === 'string' ? filename : filename[\"root\"]+\"/\"+filename[\"file\"], function(contents) {\r\n if (contents === null) {\r\n callback(Error(\"Failed to fetch file\"));\r\n return;\r\n }\r\n try {\r\n callback(null, ProtoBuf.loadProto(contents, builder, filename));\r\n } catch (e) {\r\n callback(e);\r\n }\r\n });\r\n var contents = ProtoBuf.Util.fetch(typeof filename === 'object' ? filename[\"root\"]+\"/\"+filename[\"file\"] : filename);\r\n return contents === null ? null : ProtoBuf.loadProto(contents, builder, filename);\r\n };\r\n\r\n /**\r\n * Loads a .proto file and returns the Builder. This is an alias of {@link ProtoBuf.loadProtoFile}.\r\n * @function\r\n * @param {string|{root: string, file: string}} filename Path to proto file or an object specifying 'file' with\r\n * an overridden 'root' path for all imported files.\r\n * @param {function(?Error, !ProtoBuf.Builder=)=} callback Callback that will receive `null` as the first and\r\n * the Builder as its second argument on success, otherwise the error as its first argument. If omitted, the\r\n * file will be read synchronously and this function will return the Builder.\r\n * @param {ProtoBuf.Builder=} builder Builder to append to. Will create a new one if omitted.\r\n * @return {!ProtoBuf.Builder|undefined} The Builder if synchronous (no callback specified, will be NULL if the\r\n * request has failed), else undefined\r\n * @expose\r\n */\r\n ProtoBuf.protoFromFile = ProtoBuf.loadProtoFile; // Legacy\r\n\r\n\r\n /**\r\n * Constructs a new empty Builder.\r\n * @param {Object.=} options Builder options, defaults to global options set on ProtoBuf\r\n * @return {!ProtoBuf.Builder} Builder\r\n * @expose\r\n */\r\n ProtoBuf.newBuilder = function(options) {\r\n options = options || {};\r\n if (typeof options['convertFieldsToCamelCase'] === 'undefined')\r\n options['convertFieldsToCamelCase'] = ProtoBuf.convertFieldsToCamelCase;\r\n if (typeof options['populateAccessors'] === 'undefined')\r\n options['populateAccessors'] = ProtoBuf.populateAccessors;\r\n return new ProtoBuf.Builder(options);\r\n };\r\n\r\n /**\r\n * Loads a .json definition and returns the Builder.\r\n * @param {!*|string} json JSON definition\r\n * @param {(ProtoBuf.Builder|string|{root: string, file: string})=} builder Builder to append to. Will create a new one if omitted.\r\n * @param {(string|{root: string, file: string})=} filename The corresponding file name if known. Must be specified for imports.\r\n * @return {ProtoBuf.Builder} Builder to create new messages\r\n * @throws {Error} If the definition cannot be parsed or built\r\n * @expose\r\n */\r\n ProtoBuf.loadJson = function(json, builder, filename) {\r\n if (typeof builder === 'string' || (builder && typeof builder[\"file\"] === 'string' && typeof builder[\"root\"] === 'string'))\r\n filename = builder,\r\n builder = null;\r\n if (!builder || typeof builder !== 'object')\r\n builder = ProtoBuf.newBuilder();\r\n if (typeof json === 'string')\r\n json = JSON.parse(json);\r\n builder[\"import\"](json, filename);\r\n builder.resolveAll();\r\n return builder;\r\n };\r\n\r\n /**\r\n * Loads a .json file and returns the Builder.\r\n * @param {string|!{root: string, file: string}} filename Path to json file or an object specifying 'file' with\r\n * an overridden 'root' path for all imported files.\r\n * @param {function(?Error, !ProtoBuf.Builder=)=} callback Callback that will receive `null` as the first and\r\n * the Builder as its second argument on success, otherwise the error as its first argument. If omitted, the\r\n * file will be read synchronously and this function will return the Builder.\r\n * @param {ProtoBuf.Builder=} builder Builder to append to. Will create a new one if omitted.\r\n * @return {?ProtoBuf.Builder|undefined} The Builder if synchronous (no callback specified, will be NULL if the\r\n * request has failed), else undefined\r\n * @expose\r\n */\r\n ProtoBuf.loadJsonFile = function(filename, callback, builder) {\r\n if (callback && typeof callback === 'object')\r\n builder = callback,\r\n callback = null;\r\n else if (!callback || typeof callback !== 'function')\r\n callback = null;\r\n if (callback)\r\n return ProtoBuf.Util.fetch(typeof filename === 'string' ? filename : filename[\"root\"]+\"/\"+filename[\"file\"], function(contents) {\r\n if (contents === null) {\r\n callback(Error(\"Failed to fetch file\"));\r\n return;\r\n }\r\n try {\r\n callback(null, ProtoBuf.loadJson(JSON.parse(contents), builder, filename));\r\n } catch (e) {\r\n callback(e);\r\n }\r\n });\r\n var contents = ProtoBuf.Util.fetch(typeof filename === 'object' ? filename[\"root\"]+\"/\"+filename[\"file\"] : filename);\r\n return contents === null ? null : ProtoBuf.loadJson(JSON.parse(contents), builder, filename);\r\n };\r\n\r\n return ProtoBuf;\r\n});\r\n","// shim for using process in browser\n\nvar process = module.exports = {};\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = setTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n clearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n setTimeout(drainQueue, 0);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/*\r\n Copyright 2013-2014 Daniel Wirtz \r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n */\r\n\r\n/**\r\n * @license bytebuffer.js (c) 2015 Daniel Wirtz \r\n * Backing buffer: ArrayBuffer, Accessor: Uint8Array\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/bytebuffer.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (typeof define === 'function' && define[\"amd\"])\r\n define([\"long\"], factory);\r\n /* CommonJS */ else if (typeof require === 'function' && typeof module === \"object\" && module && module[\"exports\"])\r\n module['exports'] = (function() {\r\n var Long; try { Long = require(\"long\"); } catch (e) {}\r\n return factory(Long);\r\n })();\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"ByteBuffer\"] = factory(global[\"dcodeIO\"][\"Long\"]);\r\n\r\n})(this, function(Long) {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a new ByteBuffer.\r\n * @class The swiss army knife for binary data in JavaScript.\r\n * @exports ByteBuffer\r\n * @constructor\r\n * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}.\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @expose\r\n */\r\n var ByteBuffer = function(capacity, littleEndian, noAssert) {\r\n if (typeof capacity === 'undefined')\r\n capacity = ByteBuffer.DEFAULT_CAPACITY;\r\n if (typeof littleEndian === 'undefined')\r\n littleEndian = ByteBuffer.DEFAULT_ENDIAN;\r\n if (typeof noAssert === 'undefined')\r\n noAssert = ByteBuffer.DEFAULT_NOASSERT;\r\n if (!noAssert) {\r\n capacity = capacity | 0;\r\n if (capacity < 0)\r\n throw RangeError(\"Illegal capacity\");\r\n littleEndian = !!littleEndian;\r\n noAssert = !!noAssert;\r\n }\r\n\r\n /**\r\n * Backing ArrayBuffer.\r\n * @type {!ArrayBuffer}\r\n * @expose\r\n */\r\n this.buffer = capacity === 0 ? EMPTY_BUFFER : new ArrayBuffer(capacity);\r\n\r\n /**\r\n * Uint8Array utilized to manipulate the backing buffer. Becomes `null` if the backing buffer has a capacity of `0`.\r\n * @type {?Uint8Array}\r\n * @expose\r\n */\r\n this.view = capacity === 0 ? null : new Uint8Array(this.buffer);\r\n\r\n /**\r\n * Absolute read/write offset.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#flip\r\n * @see ByteBuffer#clear\r\n */\r\n this.offset = 0;\r\n\r\n /**\r\n * Marked offset.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#mark\r\n * @see ByteBuffer#reset\r\n */\r\n this.markedOffset = -1;\r\n\r\n /**\r\n * Absolute limit of the contained data. Set to the backing buffer's capacity upon allocation.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#flip\r\n * @see ByteBuffer#clear\r\n */\r\n this.limit = capacity;\r\n\r\n /**\r\n * Whether to use little endian byte order, defaults to `false` for big endian.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.littleEndian = typeof littleEndian !== 'undefined' ? !!littleEndian : false;\r\n\r\n /**\r\n * Whether to skip assertions of offsets and values, defaults to `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.noAssert = !!noAssert;\r\n };\r\n\r\n /**\r\n * ByteBuffer version.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.VERSION = \"5.0.0\";\r\n\r\n /**\r\n * Little endian constant that can be used instead of its boolean value. Evaluates to `true`.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.LITTLE_ENDIAN = true;\r\n\r\n /**\r\n * Big endian constant that can be used instead of its boolean value. Evaluates to `false`.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.BIG_ENDIAN = false;\r\n\r\n /**\r\n * Default initial capacity of `16`.\r\n * @type {number}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_CAPACITY = 16;\r\n\r\n /**\r\n * Default endianess of `false` for big endian.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_ENDIAN = ByteBuffer.BIG_ENDIAN;\r\n\r\n /**\r\n * Default no assertions flag of `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_NOASSERT = false;\r\n\r\n /**\r\n * A `Long` class for representing a 64-bit two's-complement integer value. May be `null` if Long.js has not been loaded\r\n * and int64 support is not available.\r\n * @type {?Long}\r\n * @const\r\n * @see https://github.com/dcodeIO/Long.js\r\n * @expose\r\n */\r\n ByteBuffer.Long = Long || null;\r\n\r\n /**\r\n * @alias ByteBuffer.prototype\r\n * @inner\r\n */\r\n var ByteBufferPrototype = ByteBuffer.prototype;\r\n\r\n /**\r\n * An indicator used to reliably determine if an object is a ByteBuffer or not.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n * @private\r\n */\r\n ByteBufferPrototype.__isByteBuffer__;\r\n\r\n Object.defineProperty(ByteBufferPrototype, \"__isByteBuffer__\", {\r\n value: true,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n\r\n // helpers\r\n\r\n /**\r\n * @type {!ArrayBuffer}\r\n * @inner\r\n */\r\n var EMPTY_BUFFER = new ArrayBuffer(0);\r\n\r\n /**\r\n * String.fromCharCode reference for compile-time renaming.\r\n * @type {function(...number):string}\r\n * @inner\r\n */\r\n var stringFromCharCode = String.fromCharCode;\r\n\r\n /**\r\n * Creates a source function for a string.\r\n * @param {string} s String to read from\r\n * @returns {function():number|null} Source function returning the next char code respectively `null` if there are\r\n * no more characters left.\r\n * @throws {TypeError} If the argument is invalid\r\n * @inner\r\n */\r\n function stringSource(s) {\r\n var i=0; return function() {\r\n return i < s.length ? s.charCodeAt(i++) : null;\r\n };\r\n }\r\n\r\n /**\r\n * Creates a destination function for a string.\r\n * @returns {function(number=):undefined|string} Destination function successively called with the next char code.\r\n * Returns the final string when called without arguments.\r\n * @inner\r\n */\r\n function stringDestination() {\r\n var cs = [], ps = []; return function() {\r\n if (arguments.length === 0)\r\n return ps.join('')+stringFromCharCode.apply(String, cs);\r\n if (cs.length + arguments.length > 1024)\r\n ps.push(stringFromCharCode.apply(String, cs)),\r\n cs.length = 0;\r\n Array.prototype.push.apply(cs, arguments);\r\n };\r\n }\r\n\r\n /**\r\n * Gets the accessor type.\r\n * @returns {Function} `Buffer` under node.js, `Uint8Array` respectively `DataView` in the browser (classes)\r\n * @expose\r\n */\r\n ByteBuffer.accessor = function() {\r\n return Uint8Array;\r\n };\r\n /**\r\n * Allocates a new ByteBuffer backed by a buffer of the specified capacity.\r\n * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}.\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBuffer.allocate = function(capacity, littleEndian, noAssert) {\r\n return new ByteBuffer(capacity, littleEndian, noAssert);\r\n };\r\n\r\n /**\r\n * Concatenates multiple ByteBuffers into one.\r\n * @param {!Array.} buffers Buffers to concatenate\r\n * @param {(string|boolean)=} encoding String encoding if `buffers` contains a string (\"base64\", \"hex\", \"binary\",\r\n * defaults to \"utf8\")\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order for the resulting ByteBuffer. Defaults\r\n * to {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values for the resulting ByteBuffer. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} Concatenated ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.concat = function(buffers, encoding, littleEndian, noAssert) {\r\n if (typeof encoding === 'boolean' || typeof encoding !== 'string') {\r\n noAssert = littleEndian;\r\n littleEndian = encoding;\r\n encoding = undefined;\r\n }\r\n var capacity = 0;\r\n for (var i=0, k=buffers.length, length; i 0) capacity += length;\r\n }\r\n if (capacity === 0)\r\n return new ByteBuffer(0, littleEndian, noAssert);\r\n var bb = new ByteBuffer(capacity, littleEndian, noAssert),\r\n bi;\r\n i=0; while (i} buffer Anything that can be wrapped\r\n * @param {(string|boolean)=} encoding String encoding if `buffer` is a string (\"base64\", \"hex\", \"binary\", defaults to\r\n * \"utf8\")\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} A ByteBuffer wrapping `buffer`\r\n * @expose\r\n */\r\n ByteBuffer.wrap = function(buffer, encoding, littleEndian, noAssert) {\r\n if (typeof encoding !== 'string') {\r\n noAssert = littleEndian;\r\n littleEndian = encoding;\r\n encoding = undefined;\r\n }\r\n if (typeof buffer === 'string') {\r\n if (typeof encoding === 'undefined')\r\n encoding = \"utf8\";\r\n switch (encoding) {\r\n case \"base64\":\r\n return ByteBuffer.fromBase64(buffer, littleEndian);\r\n case \"hex\":\r\n return ByteBuffer.fromHex(buffer, littleEndian);\r\n case \"binary\":\r\n return ByteBuffer.fromBinary(buffer, littleEndian);\r\n case \"utf8\":\r\n return ByteBuffer.fromUTF8(buffer, littleEndian);\r\n case \"debug\":\r\n return ByteBuffer.fromDebug(buffer, littleEndian);\r\n default:\r\n throw Error(\"Unsupported encoding: \"+encoding);\r\n }\r\n }\r\n if (buffer === null || typeof buffer !== 'object')\r\n throw TypeError(\"Illegal buffer\");\r\n var bb;\r\n if (ByteBuffer.isByteBuffer(buffer)) {\r\n bb = ByteBufferPrototype.clone.call(buffer);\r\n bb.markedOffset = -1;\r\n return bb;\r\n }\r\n if (buffer instanceof Uint8Array) { // Extract ArrayBuffer from Uint8Array\r\n bb = new ByteBuffer(0, littleEndian, noAssert);\r\n if (buffer.length > 0) { // Avoid references to more than one EMPTY_BUFFER\r\n bb.buffer = buffer.buffer;\r\n bb.offset = buffer.byteOffset;\r\n bb.limit = buffer.byteOffset + buffer.byteLength;\r\n bb.view = new Uint8Array(buffer.buffer);\r\n }\r\n } else if (buffer instanceof ArrayBuffer) { // Reuse ArrayBuffer\r\n bb = new ByteBuffer(0, littleEndian, noAssert);\r\n if (buffer.byteLength > 0) {\r\n bb.buffer = buffer;\r\n bb.offset = 0;\r\n bb.limit = buffer.byteLength;\r\n bb.view = buffer.byteLength > 0 ? new Uint8Array(buffer) : null;\r\n }\r\n } else if (Object.prototype.toString.call(buffer) === \"[object Array]\") { // Create from octets\r\n bb = new ByteBuffer(buffer.length, littleEndian, noAssert);\r\n bb.limit = buffer.length;\r\n for (var i=0; i>>= 0;\n if (offset < 0 || offset + length > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+length+\") <= \"+this.buffer.byteLength);\n }\r\n var slice = this.slice(offset, offset + length);\r\n if (relative) this.offset += length;\n return slice;\r\n };\r\n\r\n /**\r\n * Writes a payload of bytes. This is an alias of {@link ByteBuffer#append}.\r\n * @function\r\n * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to write. If `source` is a ByteBuffer, its offsets\r\n * will be modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeBytes = ByteBufferPrototype.append;\r\n\r\n // types/ints/int8\r\n\r\n /**\r\n * Writes an 8bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt8 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 1;\n var capacity0 = this.buffer.byteLength;\n if (offset > capacity0)\n this.resize((capacity0 *= 2) > offset ? capacity0 : offset);\n offset -= 1;\n this.view[offset] = value;\r\n if (relative) this.offset += 1;\n return this;\r\n };\r\n\r\n /**\r\n * Writes an 8bit signed integer. This is an alias of {@link ByteBuffer#writeInt8}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeByte = ByteBufferPrototype.writeInt8;\r\n\r\n /**\r\n * Reads an 8bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt8 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var value = this.view[offset];\r\n if ((value & 0x80) === 0x80) value = -(0xFF - value + 1); // Cast to signed\r\n if (relative) this.offset += 1;\n return value;\r\n };\r\n\r\n /**\r\n * Reads an 8bit signed integer. This is an alias of {@link ByteBuffer#readInt8}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readByte = ByteBufferPrototype.readInt8;\r\n\r\n /**\r\n * Writes an 8bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint8 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 1;\n var capacity1 = this.buffer.byteLength;\n if (offset > capacity1)\n this.resize((capacity1 *= 2) > offset ? capacity1 : offset);\n offset -= 1;\n this.view[offset] = value;\r\n if (relative) this.offset += 1;\n return this;\r\n };\r\n\r\n /**\r\n * Writes an 8bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint8}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt8 = ByteBufferPrototype.writeUint8;\r\n\r\n /**\r\n * Reads an 8bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint8 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var value = this.view[offset];\r\n if (relative) this.offset += 1;\n return value;\r\n };\r\n\r\n /**\r\n * Reads an 8bit unsigned integer. This is an alias of {@link ByteBuffer#readUint8}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt8 = ByteBufferPrototype.readUint8;\r\n\r\n // types/ints/int16\r\n\r\n /**\r\n * Writes a 16bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt16 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 2;\n var capacity2 = this.buffer.byteLength;\n if (offset > capacity2)\n this.resize((capacity2 *= 2) > offset ? capacity2 : offset);\n offset -= 2;\n if (this.littleEndian) {\r\n this.view[offset+1] = (value & 0xFF00) >>> 8;\r\n this.view[offset ] = value & 0x00FF;\r\n } else {\r\n this.view[offset] = (value & 0xFF00) >>> 8;\r\n this.view[offset+1] = value & 0x00FF;\r\n }\r\n if (relative) this.offset += 2;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 16bit signed integer. This is an alias of {@link ByteBuffer#writeInt16}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeShort = ByteBufferPrototype.writeInt16;\r\n\r\n /**\r\n * Reads a 16bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt16 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 2 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+2+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\r\n value = this.view[offset ];\r\n value |= this.view[offset+1] << 8;\r\n } else {\r\n value = this.view[offset ] << 8;\r\n value |= this.view[offset+1];\r\n }\r\n if ((value & 0x8000) === 0x8000) value = -(0xFFFF - value + 1); // Cast to signed\r\n if (relative) this.offset += 2;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 16bit signed integer. This is an alias of {@link ByteBuffer#readInt16}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readShort = ByteBufferPrototype.readInt16;\r\n\r\n /**\r\n * Writes a 16bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint16 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 2;\n var capacity3 = this.buffer.byteLength;\n if (offset > capacity3)\n this.resize((capacity3 *= 2) > offset ? capacity3 : offset);\n offset -= 2;\n if (this.littleEndian) {\r\n this.view[offset+1] = (value & 0xFF00) >>> 8;\r\n this.view[offset ] = value & 0x00FF;\r\n } else {\r\n this.view[offset] = (value & 0xFF00) >>> 8;\r\n this.view[offset+1] = value & 0x00FF;\r\n }\r\n if (relative) this.offset += 2;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 16bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint16}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt16 = ByteBufferPrototype.writeUint16;\r\n\r\n /**\r\n * Reads a 16bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint16 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 2 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+2+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\r\n value = this.view[offset ];\r\n value |= this.view[offset+1] << 8;\r\n } else {\r\n value = this.view[offset ] << 8;\r\n value |= this.view[offset+1];\r\n }\r\n if (relative) this.offset += 2;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 16bit unsigned integer. This is an alias of {@link ByteBuffer#readUint16}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt16 = ByteBufferPrototype.readUint16;\r\n\r\n // types/ints/int32\r\n\r\n /**\r\n * Writes a 32bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity4 = this.buffer.byteLength;\n if (offset > capacity4)\n this.resize((capacity4 *= 2) > offset ? capacity4 : offset);\n offset -= 4;\n if (this.littleEndian) {\n this.view[offset+3] = (value >>> 24) & 0xFF;\n this.view[offset+2] = (value >>> 16) & 0xFF;\n this.view[offset+1] = (value >>> 8) & 0xFF;\n this.view[offset ] = value & 0xFF;\n } else {\n this.view[offset ] = (value >>> 24) & 0xFF;\n this.view[offset+1] = (value >>> 16) & 0xFF;\n this.view[offset+2] = (value >>> 8) & 0xFF;\n this.view[offset+3] = value & 0xFF;\n }\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit signed integer. This is an alias of {@link ByteBuffer#writeInt32}.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt = ByteBufferPrototype.writeInt32;\r\n\r\n /**\r\n * Reads a 32bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\n value = this.view[offset+2] << 16;\n value |= this.view[offset+1] << 8;\n value |= this.view[offset ];\n value += this.view[offset+3] << 24 >>> 0;\n } else {\n value = this.view[offset+1] << 16;\n value |= this.view[offset+2] << 8;\n value |= this.view[offset+3];\n value += this.view[offset ] << 24 >>> 0;\n }\n value |= 0; // Cast to signed\r\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit signed integer. This is an alias of {@link ByteBuffer#readInt32}.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt = ByteBufferPrototype.readInt32;\r\n\r\n /**\r\n * Writes a 32bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity5 = this.buffer.byteLength;\n if (offset > capacity5)\n this.resize((capacity5 *= 2) > offset ? capacity5 : offset);\n offset -= 4;\n if (this.littleEndian) {\n this.view[offset+3] = (value >>> 24) & 0xFF;\n this.view[offset+2] = (value >>> 16) & 0xFF;\n this.view[offset+1] = (value >>> 8) & 0xFF;\n this.view[offset ] = value & 0xFF;\n } else {\n this.view[offset ] = (value >>> 24) & 0xFF;\n this.view[offset+1] = (value >>> 16) & 0xFF;\n this.view[offset+2] = (value >>> 8) & 0xFF;\n this.view[offset+3] = value & 0xFF;\n }\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint32}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt32 = ByteBufferPrototype.writeUint32;\r\n\r\n /**\r\n * Reads a 32bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\n value = this.view[offset+2] << 16;\n value |= this.view[offset+1] << 8;\n value |= this.view[offset ];\n value += this.view[offset+3] << 24 >>> 0;\n } else {\n value = this.view[offset+1] << 16;\n value |= this.view[offset+2] << 8;\n value |= this.view[offset+3];\n value += this.view[offset ] << 24 >>> 0;\n }\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit unsigned integer. This is an alias of {@link ByteBuffer#readUint32}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt32 = ByteBufferPrototype.readUint32;\r\n\r\n // types/ints/int64\r\n\r\n if (Long) {\r\n\r\n /**\r\n * Writes a 64bit signed integer.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n offset += 8;\n var capacity6 = this.buffer.byteLength;\n if (offset > capacity6)\n this.resize((capacity6 *= 2) > offset ? capacity6 : offset);\n offset -= 8;\n var lo = value.low,\r\n hi = value.high;\r\n if (this.littleEndian) {\r\n this.view[offset+3] = (lo >>> 24) & 0xFF;\n this.view[offset+2] = (lo >>> 16) & 0xFF;\n this.view[offset+1] = (lo >>> 8) & 0xFF;\n this.view[offset ] = lo & 0xFF;\n offset += 4;\r\n this.view[offset+3] = (hi >>> 24) & 0xFF;\n this.view[offset+2] = (hi >>> 16) & 0xFF;\n this.view[offset+1] = (hi >>> 8) & 0xFF;\n this.view[offset ] = hi & 0xFF;\n } else {\r\n this.view[offset ] = (hi >>> 24) & 0xFF;\n this.view[offset+1] = (hi >>> 16) & 0xFF;\n this.view[offset+2] = (hi >>> 8) & 0xFF;\n this.view[offset+3] = hi & 0xFF;\n offset += 4;\r\n this.view[offset ] = (lo >>> 24) & 0xFF;\n this.view[offset+1] = (lo >>> 16) & 0xFF;\n this.view[offset+2] = (lo >>> 8) & 0xFF;\n this.view[offset+3] = lo & 0xFF;\n }\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit signed integer. This is an alias of {@link ByteBuffer#writeInt64}.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeLong = ByteBufferPrototype.writeInt64;\r\n\r\n /**\r\n * Reads a 64bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var lo = 0,\r\n hi = 0;\r\n if (this.littleEndian) {\r\n lo = this.view[offset+2] << 16;\n lo |= this.view[offset+1] << 8;\n lo |= this.view[offset ];\n lo += this.view[offset+3] << 24 >>> 0;\n offset += 4;\r\n hi = this.view[offset+2] << 16;\n hi |= this.view[offset+1] << 8;\n hi |= this.view[offset ];\n hi += this.view[offset+3] << 24 >>> 0;\n } else {\r\n hi = this.view[offset+1] << 16;\n hi |= this.view[offset+2] << 8;\n hi |= this.view[offset+3];\n hi += this.view[offset ] << 24 >>> 0;\n offset += 4;\r\n lo = this.view[offset+1] << 16;\n lo |= this.view[offset+2] << 8;\n lo |= this.view[offset+3];\n lo += this.view[offset ] << 24 >>> 0;\n }\r\n var value = new Long(lo, hi, false);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit signed integer. This is an alias of {@link ByteBuffer#readInt64}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readLong = ByteBufferPrototype.readInt64;\r\n\r\n /**\r\n * Writes a 64bit unsigned integer.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n offset += 8;\n var capacity7 = this.buffer.byteLength;\n if (offset > capacity7)\n this.resize((capacity7 *= 2) > offset ? capacity7 : offset);\n offset -= 8;\n var lo = value.low,\r\n hi = value.high;\r\n if (this.littleEndian) {\r\n this.view[offset+3] = (lo >>> 24) & 0xFF;\n this.view[offset+2] = (lo >>> 16) & 0xFF;\n this.view[offset+1] = (lo >>> 8) & 0xFF;\n this.view[offset ] = lo & 0xFF;\n offset += 4;\r\n this.view[offset+3] = (hi >>> 24) & 0xFF;\n this.view[offset+2] = (hi >>> 16) & 0xFF;\n this.view[offset+1] = (hi >>> 8) & 0xFF;\n this.view[offset ] = hi & 0xFF;\n } else {\r\n this.view[offset ] = (hi >>> 24) & 0xFF;\n this.view[offset+1] = (hi >>> 16) & 0xFF;\n this.view[offset+2] = (hi >>> 8) & 0xFF;\n this.view[offset+3] = hi & 0xFF;\n offset += 4;\r\n this.view[offset ] = (lo >>> 24) & 0xFF;\n this.view[offset+1] = (lo >>> 16) & 0xFF;\n this.view[offset+2] = (lo >>> 8) & 0xFF;\n this.view[offset+3] = lo & 0xFF;\n }\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint64}.\r\n * @function\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt64 = ByteBufferPrototype.writeUint64;\r\n\r\n /**\r\n * Reads a 64bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var lo = 0,\r\n hi = 0;\r\n if (this.littleEndian) {\r\n lo = this.view[offset+2] << 16;\n lo |= this.view[offset+1] << 8;\n lo |= this.view[offset ];\n lo += this.view[offset+3] << 24 >>> 0;\n offset += 4;\r\n hi = this.view[offset+2] << 16;\n hi |= this.view[offset+1] << 8;\n hi |= this.view[offset ];\n hi += this.view[offset+3] << 24 >>> 0;\n } else {\r\n hi = this.view[offset+1] << 16;\n hi |= this.view[offset+2] << 8;\n hi |= this.view[offset+3];\n hi += this.view[offset ] << 24 >>> 0;\n offset += 4;\r\n lo = this.view[offset+1] << 16;\n lo |= this.view[offset+2] << 8;\n lo |= this.view[offset+3];\n lo += this.view[offset ] << 24 >>> 0;\n }\r\n var value = new Long(lo, hi, true);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit unsigned integer. This is an alias of {@link ByteBuffer#readUint64}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt64 = ByteBufferPrototype.readUint64;\r\n\r\n } // Long\r\n\r\n\r\n // types/floats/float32\r\n\r\n /*\r\n ieee754 - https://github.com/feross/ieee754\r\n\r\n The MIT License (MIT)\r\n\r\n Copyright (c) Feross Aboukhadijeh\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining a copy\r\n of this software and associated documentation files (the \"Software\"), to deal\r\n in the Software without restriction, including without limitation the rights\r\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n copies of the Software, and to permit persons to whom the Software is\r\n furnished to do so, subject to the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be included in\r\n all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n THE SOFTWARE.\r\n */\r\n\r\n /**\r\n * Reads an IEEE754 float from a byte array.\r\n * @param {!Array} buffer\r\n * @param {number} offset\r\n * @param {boolean} isLE\r\n * @param {number} mLen\r\n * @param {number} nBytes\r\n * @returns {number}\r\n * @inner\r\n */\r\n function ieee754_read(buffer, offset, isLE, mLen, nBytes) {\r\n var e, m,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n nBits = -7,\r\n i = isLE ? (nBytes - 1) : 0,\r\n d = isLE ? -1 : 1,\r\n s = buffer[offset + i];\r\n\r\n i += d;\r\n\r\n e = s & ((1 << (-nBits)) - 1);\r\n s >>= (-nBits);\r\n nBits += eLen;\r\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\r\n\r\n m = e & ((1 << (-nBits)) - 1);\r\n e >>= (-nBits);\r\n nBits += mLen;\r\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\r\n\r\n if (e === 0) {\r\n e = 1 - eBias;\r\n } else if (e === eMax) {\r\n return m ? NaN : ((s ? -1 : 1) * Infinity);\r\n } else {\r\n m = m + Math.pow(2, mLen);\r\n e = e - eBias;\r\n }\r\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\r\n }\r\n\r\n /**\r\n * Writes an IEEE754 float to a byte array.\r\n * @param {!Array} buffer\r\n * @param {number} value\r\n * @param {number} offset\r\n * @param {boolean} isLE\r\n * @param {number} mLen\r\n * @param {number} nBytes\r\n * @inner\r\n */\r\n function ieee754_write(buffer, value, offset, isLE, mLen, nBytes) {\r\n var e, m, c,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0),\r\n i = isLE ? 0 : (nBytes - 1),\r\n d = isLE ? 1 : -1,\r\n s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\r\n\r\n value = Math.abs(value);\r\n\r\n if (isNaN(value) || value === Infinity) {\r\n m = isNaN(value) ? 1 : 0;\r\n e = eMax;\r\n } else {\r\n e = Math.floor(Math.log(value) / Math.LN2);\r\n if (value * (c = Math.pow(2, -e)) < 1) {\r\n e--;\r\n c *= 2;\r\n }\r\n if (e + eBias >= 1) {\r\n value += rt / c;\r\n } else {\r\n value += rt * Math.pow(2, 1 - eBias);\r\n }\r\n if (value * c >= 2) {\r\n e++;\r\n c /= 2;\r\n }\r\n\r\n if (e + eBias >= eMax) {\r\n m = 0;\r\n e = eMax;\r\n } else if (e + eBias >= 1) {\r\n m = (value * c - 1) * Math.pow(2, mLen);\r\n e = e + eBias;\r\n } else {\r\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\r\n e = 0;\r\n }\r\n }\r\n\r\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\r\n\r\n e = (e << mLen) | m;\r\n eLen += mLen;\r\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\r\n\r\n buffer[offset + i - d] |= s * 128;\r\n }\r\n\r\n /**\r\n * Writes a 32bit float.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number')\r\n throw TypeError(\"Illegal value: \"+value+\" (not a number)\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity8 = this.buffer.byteLength;\n if (offset > capacity8)\n this.resize((capacity8 *= 2) > offset ? capacity8 : offset);\n offset -= 4;\n ieee754_write(this.view, value, offset, this.littleEndian, 23, 4);\r\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit float. This is an alias of {@link ByteBuffer#writeFloat32}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat = ByteBufferPrototype.writeFloat32;\r\n\r\n /**\r\n * Reads a 32bit float.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = ieee754_read(this.view, offset, this.littleEndian, 23, 4);\r\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit float. This is an alias of {@link ByteBuffer#readFloat32}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat = ByteBufferPrototype.readFloat32;\r\n\r\n // types/floats/float64\r\n\r\n /**\r\n * Writes a 64bit float.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number')\r\n throw TypeError(\"Illegal value: \"+value+\" (not a number)\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 8;\n var capacity9 = this.buffer.byteLength;\n if (offset > capacity9)\n this.resize((capacity9 *= 2) > offset ? capacity9 : offset);\n offset -= 8;\n ieee754_write(this.view, value, offset, this.littleEndian, 52, 8);\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit float. This is an alias of {@link ByteBuffer#writeFloat64}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeDouble = ByteBufferPrototype.writeFloat64;\r\n\r\n /**\r\n * Reads a 64bit float.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var value = ieee754_read(this.view, offset, this.littleEndian, 52, 8);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit float. This is an alias of {@link ByteBuffer#readFloat64}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readDouble = ByteBufferPrototype.readFloat64;\r\n\r\n\r\n // types/varints/varint32\r\n\r\n /**\r\n * Maximum number of bytes required to store a 32bit base 128 variable-length integer.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.MAX_VARINT32_BYTES = 5;\r\n\r\n /**\r\n * Calculates the actual number of bytes required to store a 32bit base 128 variable-length integer.\r\n * @param {number} value Value to encode\r\n * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT32_BYTES}\r\n * @expose\r\n */\r\n ByteBuffer.calculateVarint32 = function(value) {\r\n // ref: src/google/protobuf/io/coded_stream.cc\r\n value = value >>> 0;\r\n if (value < 1 << 7 ) return 1;\r\n else if (value < 1 << 14) return 2;\r\n else if (value < 1 << 21) return 3;\r\n else if (value < 1 << 28) return 4;\r\n else return 5;\r\n };\r\n\r\n /**\r\n * Zigzag encodes a signed 32bit integer so that it can be effectively used with varint encoding.\r\n * @param {number} n Signed 32bit integer\r\n * @returns {number} Unsigned zigzag encoded 32bit integer\r\n * @expose\r\n */\r\n ByteBuffer.zigZagEncode32 = function(n) {\r\n return (((n |= 0) << 1) ^ (n >> 31)) >>> 0; // ref: src/google/protobuf/wire_format_lite.h\r\n };\r\n\r\n /**\r\n * Decodes a zigzag encoded signed 32bit integer.\r\n * @param {number} n Unsigned zigzag encoded 32bit integer\r\n * @returns {number} Signed 32bit integer\r\n * @expose\r\n */\r\n ByteBuffer.zigZagDecode32 = function(n) {\r\n return ((n >>> 1) ^ -(n & 1)) | 0; // // ref: src/google/protobuf/wire_format_lite.h\r\n };\r\n\r\n /**\r\n * Writes a 32bit base 128 variable-length integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var size = ByteBuffer.calculateVarint32(value),\r\n b;\r\n offset += size;\n var capacity10 = this.buffer.byteLength;\n if (offset > capacity10)\n this.resize((capacity10 *= 2) > offset ? capacity10 : offset);\n offset -= size;\n value >>>= 0;\r\n while (value >= 0x80) {\r\n b = (value & 0x7f) | 0x80;\r\n this.view[offset++] = b;\r\n value >>>= 7;\r\n }\r\n this.view[offset++] = value;\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return size;\r\n };\r\n\r\n /**\r\n * Writes a zig-zag encoded (signed) 32bit base 128 variable-length integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint32ZigZag = function(value, offset) {\r\n return this.writeVarint32(ByteBuffer.zigZagEncode32(value), offset);\r\n };\r\n\r\n /**\r\n * Reads a 32bit base 128 variable-length integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read\r\n * and the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint. Has a property `truncated = true` if there is not enough data available\r\n * to fully decode the varint.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var c = 0,\r\n value = 0 >>> 0,\r\n b;\r\n do {\r\n if (!this.noAssert && offset > this.limit) {\r\n var err = Error(\"Truncated\");\r\n err['truncated'] = true;\r\n throw err;\r\n }\r\n b = this.view[offset++];\r\n if (c < 5)\r\n value |= (b & 0x7f) << (7*c);\r\n ++c;\r\n } while ((b & 0x80) !== 0);\r\n value |= 0;\r\n if (relative) {\r\n this.offset = offset;\r\n return value;\r\n }\r\n return {\r\n \"value\": value,\r\n \"length\": c\r\n };\r\n };\r\n\r\n /**\r\n * Reads a zig-zag encoded (signed) 32bit base 128 variable-length integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read\r\n * and the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint32ZigZag = function(offset) {\r\n var val = this.readVarint32(offset);\r\n if (typeof val === 'object')\r\n val[\"value\"] = ByteBuffer.zigZagDecode32(val[\"value\"]);\r\n else\r\n val = ByteBuffer.zigZagDecode32(val);\r\n return val;\r\n };\r\n\r\n // types/varints/varint64\r\n\r\n if (Long) {\r\n\r\n /**\r\n * Maximum number of bytes required to store a 64bit base 128 variable-length integer.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.MAX_VARINT64_BYTES = 10;\r\n\r\n /**\r\n * Calculates the actual number of bytes required to store a 64bit base 128 variable-length integer.\r\n * @param {number|!Long} value Value to encode\r\n * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT64_BYTES}\r\n * @expose\r\n */\r\n ByteBuffer.calculateVarint64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n // ref: src/google/protobuf/io/coded_stream.cc\r\n var part0 = value.toInt() >>> 0,\r\n part1 = value.shiftRightUnsigned(28).toInt() >>> 0,\r\n part2 = value.shiftRightUnsigned(56).toInt() >>> 0;\r\n if (part2 == 0) {\r\n if (part1 == 0) {\r\n if (part0 < 1 << 14)\r\n return part0 < 1 << 7 ? 1 : 2;\r\n else\r\n return part0 < 1 << 21 ? 3 : 4;\r\n } else {\r\n if (part1 < 1 << 14)\r\n return part1 < 1 << 7 ? 5 : 6;\r\n else\r\n return part1 < 1 << 21 ? 7 : 8;\r\n }\r\n } else\r\n return part2 < 1 << 7 ? 9 : 10;\r\n };\r\n\r\n /**\r\n * Zigzag encodes a signed 64bit integer so that it can be effectively used with varint encoding.\r\n * @param {number|!Long} value Signed long\r\n * @returns {!Long} Unsigned zigzag encoded long\r\n * @expose\r\n */\r\n ByteBuffer.zigZagEncode64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n // ref: src/google/protobuf/wire_format_lite.h\r\n return value.shiftLeft(1).xor(value.shiftRight(63)).toUnsigned();\r\n };\r\n\r\n /**\r\n * Decodes a zigzag encoded signed 64bit integer.\r\n * @param {!Long|number} value Unsigned zigzag encoded long or JavaScript number\r\n * @returns {!Long} Signed long\r\n * @expose\r\n */\r\n ByteBuffer.zigZagDecode64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n // ref: src/google/protobuf/wire_format_lite.h\r\n return value.shiftRightUnsigned(1).xor(value.and(Long.ONE).toSigned().negate()).toSigned();\r\n };\r\n\r\n /**\r\n * Writes a 64bit base 128 variable-length integer.\r\n * @param {number|Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n var size = ByteBuffer.calculateVarint64(value),\r\n part0 = value.toInt() >>> 0,\r\n part1 = value.shiftRightUnsigned(28).toInt() >>> 0,\r\n part2 = value.shiftRightUnsigned(56).toInt() >>> 0;\r\n offset += size;\n var capacity11 = this.buffer.byteLength;\n if (offset > capacity11)\n this.resize((capacity11 *= 2) > offset ? capacity11 : offset);\n offset -= size;\n switch (size) {\r\n case 10: this.view[offset+9] = (part2 >>> 7) & 0x01;\r\n case 9 : this.view[offset+8] = size !== 9 ? (part2 ) | 0x80 : (part2 ) & 0x7F;\r\n case 8 : this.view[offset+7] = size !== 8 ? (part1 >>> 21) | 0x80 : (part1 >>> 21) & 0x7F;\r\n case 7 : this.view[offset+6] = size !== 7 ? (part1 >>> 14) | 0x80 : (part1 >>> 14) & 0x7F;\r\n case 6 : this.view[offset+5] = size !== 6 ? (part1 >>> 7) | 0x80 : (part1 >>> 7) & 0x7F;\r\n case 5 : this.view[offset+4] = size !== 5 ? (part1 ) | 0x80 : (part1 ) & 0x7F;\r\n case 4 : this.view[offset+3] = size !== 4 ? (part0 >>> 21) | 0x80 : (part0 >>> 21) & 0x7F;\r\n case 3 : this.view[offset+2] = size !== 3 ? (part0 >>> 14) | 0x80 : (part0 >>> 14) & 0x7F;\r\n case 2 : this.view[offset+1] = size !== 2 ? (part0 >>> 7) | 0x80 : (part0 >>> 7) & 0x7F;\r\n case 1 : this.view[offset ] = size !== 1 ? (part0 ) | 0x80 : (part0 ) & 0x7F;\r\n }\r\n if (relative) {\r\n this.offset += size;\r\n return this;\r\n } else {\r\n return size;\r\n }\r\n };\r\n\r\n /**\r\n * Writes a zig-zag encoded 64bit base 128 variable-length integer.\r\n * @param {number|Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint64ZigZag = function(value, offset) {\r\n return this.writeVarint64(ByteBuffer.zigZagEncode64(value), offset);\r\n };\r\n\r\n /**\r\n * Reads a 64bit base 128 variable-length integer. Requires Long.js.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!Long|!{value: Long, length: number}} The value read if offset is omitted, else the value read and\r\n * the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n // ref: src/google/protobuf/io/coded_stream.cc\r\n var start = offset,\r\n part0 = 0,\r\n part1 = 0,\r\n part2 = 0,\r\n b = 0;\r\n b = this.view[offset++]; part0 = (b & 0x7F) ; if ( b & 0x80 ) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part2 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part2 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n throw Error(\"Buffer overrun\"); }}}}}}}}}}\r\n var value = Long.fromBits(part0 | (part1 << 28), (part1 >>> 4) | (part2) << 24, false);\r\n if (relative) {\r\n this.offset = offset;\r\n return value;\r\n } else {\r\n return {\r\n 'value': value,\r\n 'length': offset-start\r\n };\r\n }\r\n };\r\n\r\n /**\r\n * Reads a zig-zag encoded 64bit base 128 variable-length integer. Requires Long.js.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!Long|!{value: Long, length: number}} The value read if offset is omitted, else the value read and\r\n * the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint64ZigZag = function(offset) {\r\n var val = this.readVarint64(offset);\r\n if (val && val['value'] instanceof Long)\r\n val[\"value\"] = ByteBuffer.zigZagDecode64(val[\"value\"]);\r\n else\r\n val = ByteBuffer.zigZagDecode64(val);\r\n return val;\r\n };\r\n\r\n } // Long\r\n\r\n\r\n // types/strings/cstring\r\n\r\n /**\r\n * Writes a NULL-terminated UTF8 encoded string. For this to work the specified string must not contain any NULL\r\n * characters itself.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * contained in `str` + 1 if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeCString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n var i,\r\n k = str.length;\r\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n for (i=0; i>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n // UTF8 strings do not contain zero bytes in between except for the zero character, so:\r\n k = utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n offset += k+1;\n var capacity12 = this.buffer.byteLength;\n if (offset > capacity12)\n this.resize((capacity12 *= 2) > offset ? capacity12 : offset);\n offset -= k+1;\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n this.view[offset++] = 0;\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return k;\r\n };\r\n\r\n /**\r\n * Reads a NULL-terminated UTF8 encoded string. For this to work the string read must not contain any NULL characters\r\n * itself.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readCString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n temp;\r\n // UTF8 strings do not contain zero bytes in between except for the zero character itself, so:\r\n var sd, b = -1;\r\n utfx.decodeUTF8toUTF16(function() {\r\n if (b === 0) return null;\r\n if (offset >= this.limit)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" < \"+this.limit);\r\n b = this.view[offset++];\r\n return b === 0 ? null : b;\r\n }.bind(this), sd = stringDestination(), true);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n \"string\": sd(),\r\n \"length\": offset - start\r\n };\r\n }\r\n };\r\n\r\n // types/strings/istring\r\n\r\n /**\r\n * Writes a length as uint32 prefixed UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n * @see ByteBuffer#writeVarint32\r\n */\r\n ByteBufferPrototype.writeIString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n k;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1];\r\n offset += 4+k;\n var capacity13 = this.buffer.byteLength;\n if (offset > capacity13)\n this.resize((capacity13 *= 2) > offset ? capacity13 : offset);\n offset -= 4+k;\n if (this.littleEndian) {\n this.view[offset+3] = (k >>> 24) & 0xFF;\n this.view[offset+2] = (k >>> 16) & 0xFF;\n this.view[offset+1] = (k >>> 8) & 0xFF;\n this.view[offset ] = k & 0xFF;\n } else {\n this.view[offset ] = (k >>> 24) & 0xFF;\n this.view[offset+1] = (k >>> 16) & 0xFF;\n this.view[offset+2] = (k >>> 8) & 0xFF;\n this.view[offset+3] = k & 0xFF;\n }\n offset += 4;\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (offset !== start + 4 + k)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+(offset+4+k));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Reads a length as uint32 prefixed UTF8 encoded string.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n * @see ByteBuffer#readVarint32\r\n */\r\n ByteBufferPrototype.readIString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset;\r\n var len = this.readUint32(offset);\r\n var str = this.readUTF8String(len, ByteBuffer.METRICS_BYTES, offset += 4);\r\n offset += str['length'];\r\n if (relative) {\r\n this.offset = offset;\r\n return str['string'];\r\n } else {\r\n return {\r\n 'string': str['string'],\r\n 'length': offset - start\r\n };\r\n }\r\n };\r\n\r\n // types/strings/utf8string\r\n\r\n /**\r\n * Metrics representing number of UTF8 characters. Evaluates to `c`.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.METRICS_CHARS = 'c';\r\n\r\n /**\r\n * Metrics representing number of bytes. Evaluates to `b`.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.METRICS_BYTES = 'b';\r\n\r\n /**\r\n * Writes an UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUTF8String = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var k;\r\n var start = offset;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n offset += k;\n var capacity14 = this.buffer.byteLength;\n if (offset > capacity14)\n this.resize((capacity14 *= 2) > offset ? capacity14 : offset);\n offset -= k;\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Writes an UTF8 encoded string. This is an alias of {@link ByteBuffer#writeUTF8String}.\r\n * @function\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeString = ByteBufferPrototype.writeUTF8String;\r\n\r\n /**\r\n * Calculates the number of UTF8 characters of a string. JavaScript itself uses UTF-16, so that a string's\r\n * `length` property does not reflect its actual UTF8 size if it contains code points larger than 0xFFFF.\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 characters\r\n * @expose\r\n */\r\n ByteBuffer.calculateUTF8Chars = function(str) {\r\n return utfx.calculateUTF16asUTF8(stringSource(str))[0];\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes of a string.\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 bytes\r\n * @expose\r\n */\r\n ByteBuffer.calculateUTF8Bytes = function(str) {\r\n return utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes of a string. This is an alias of {@link ByteBuffer.calculateUTF8Bytes}.\r\n * @function\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 bytes\r\n * @expose\r\n */\r\n ByteBuffer.calculateString = ByteBuffer.calculateUTF8Bytes;\r\n\r\n /**\r\n * Reads an UTF8 encoded string.\r\n * @param {number} length Number of characters or bytes to read.\r\n * @param {string=} metrics Metrics specifying what `length` is meant to count. Defaults to\r\n * {@link ByteBuffer.METRICS_CHARS}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUTF8String = function(length, metrics, offset) {\r\n if (typeof metrics === 'number') {\r\n offset = metrics;\r\n metrics = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (typeof metrics === 'undefined') metrics = ByteBuffer.METRICS_CHARS;\r\n if (!this.noAssert) {\r\n if (typeof length !== 'number' || length % 1 !== 0)\n throw TypeError(\"Illegal length: \"+length+\" (not an integer)\");\n length |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var i = 0,\r\n start = offset,\r\n sd;\r\n if (metrics === ByteBuffer.METRICS_CHARS) { // The same for node and the browser\r\n sd = stringDestination();\r\n utfx.decodeUTF8(function() {\r\n return i < length && offset < this.limit ? this.view[offset++] : null;\r\n }.bind(this), function(cp) {\r\n ++i; utfx.UTF8toUTF16(cp, sd);\r\n });\r\n if (i !== length)\r\n throw RangeError(\"Illegal range: Truncated data, \"+i+\" == \"+length);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n \"string\": sd(),\r\n \"length\": offset - start\r\n };\r\n }\r\n } else if (metrics === ByteBuffer.METRICS_BYTES) {\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + length > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+length+\") <= \"+this.buffer.byteLength);\n }\r\n var k = offset + length;\r\n utfx.decodeUTF8toUTF16(function() {\r\n return offset < k ? this.view[offset++] : null;\r\n }.bind(this), sd = stringDestination(), this.noAssert);\r\n if (offset !== k)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+k);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n 'string': sd(),\r\n 'length': offset - start\r\n };\r\n }\r\n } else\r\n throw TypeError(\"Unsupported metrics: \"+metrics);\r\n };\r\n\r\n /**\r\n * Reads an UTF8 encoded string. This is an alias of {@link ByteBuffer#readUTF8String}.\r\n * @function\r\n * @param {number} length Number of characters or bytes to read\r\n * @param {number=} metrics Metrics specifying what `n` is meant to count. Defaults to\r\n * {@link ByteBuffer.METRICS_CHARS}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readString = ByteBufferPrototype.readUTF8String;\r\n\r\n // types/strings/vstring\r\n\r\n /**\r\n * Writes a length as varint32 prefixed UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n * @see ByteBuffer#writeVarint32\r\n */\r\n ByteBufferPrototype.writeVString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n k, l;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1];\r\n l = ByteBuffer.calculateVarint32(k);\r\n offset += l+k;\n var capacity15 = this.buffer.byteLength;\n if (offset > capacity15)\n this.resize((capacity15 *= 2) > offset ? capacity15 : offset);\n offset -= l+k;\n offset += this.writeVarint32(k, offset);\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (offset !== start+k+l)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+(offset+k+l));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Reads a length as varint32 prefixed UTF8 encoded string.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n * @see ByteBuffer#readVarint32\r\n */\r\n ByteBufferPrototype.readVString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset;\r\n var len = this.readVarint32(offset);\r\n var str = this.readUTF8String(len['value'], ByteBuffer.METRICS_BYTES, offset += len['length']);\r\n offset += str['length'];\r\n if (relative) {\r\n this.offset = offset;\r\n return str['string'];\r\n } else {\r\n return {\r\n 'string': str['string'],\r\n 'length': offset - start\r\n };\r\n }\r\n };\r\n\r\n\r\n /**\r\n * Appends some data to this ByteBuffer. This will overwrite any contents behind the specified offset up to the appended\r\n * data's length.\r\n * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to append. If `source` is a ByteBuffer, its offsets\r\n * will be modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to append at. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example A relative `<01 02>03.append(<04 05>)` will result in `<01 02 04 05>, 04 05|`\r\n * @example An absolute `<01 02>03.append(04 05>, 1)` will result in `<01 04>05, 04 05|`\r\n */\r\n ByteBufferPrototype.append = function(source, encoding, offset) {\r\n if (typeof encoding === 'number' || typeof encoding !== 'string') {\r\n offset = encoding;\r\n encoding = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (!(source instanceof ByteBuffer))\r\n source = ByteBuffer.wrap(source, encoding);\r\n var length = source.limit - source.offset;\r\n if (length <= 0) return this; // Nothing to append\r\n offset += length;\n var capacity16 = this.buffer.byteLength;\n if (offset > capacity16)\n this.resize((capacity16 *= 2) > offset ? capacity16 : offset);\n offset -= length;\n this.view.set(source.view.subarray(source.offset, source.limit), offset);\r\n source.offset += length;\r\n if (relative) this.offset += length;\n return this;\r\n };\r\n\r\n /**\r\n * Appends this ByteBuffer's contents to another ByteBuffer. This will overwrite any contents at and after the\r\n specified offset up to the length of this ByteBuffer's data.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} offset Offset to append to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @see ByteBuffer#append\r\n */\r\n ByteBufferPrototype.appendTo = function(target, offset) {\r\n target.append(this, offset);\r\n return this;\r\n };\r\n\r\n /**\r\n * Enables or disables assertions of argument types and offsets. Assertions are enabled by default but you can opt to\r\n * disable them if your code already makes sure that everything is valid.\r\n * @param {boolean} assert `true` to enable assertions, otherwise `false`\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.assert = function(assert) {\r\n this.noAssert = !assert;\r\n return this;\r\n };\r\n\r\n /**\r\n * Gets the capacity of this ByteBuffer's backing buffer.\r\n * @returns {number} Capacity of the backing buffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.capacity = function() {\r\n return this.buffer.byteLength;\r\n };\r\n /**\r\n * Clears this ByteBuffer's offsets by setting {@link ByteBuffer#offset} to `0` and {@link ByteBuffer#limit} to the\r\n * backing buffer's capacity. Discards {@link ByteBuffer#markedOffset}.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.clear = function() {\r\n this.offset = 0;\r\n this.limit = this.buffer.byteLength;\r\n this.markedOffset = -1;\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates a cloned instance of this ByteBuffer, preset with this ByteBuffer's values for {@link ByteBuffer#offset},\r\n * {@link ByteBuffer#markedOffset} and {@link ByteBuffer#limit}.\r\n * @param {boolean=} copy Whether to copy the backing buffer or to return another view on the same, defaults to `false`\r\n * @returns {!ByteBuffer} Cloned instance\r\n * @expose\r\n */\r\n ByteBufferPrototype.clone = function(copy) {\r\n var bb = new ByteBuffer(0, this.littleEndian, this.noAssert);\r\n if (copy) {\r\n bb.buffer = new ArrayBuffer(this.buffer.byteLength);\r\n bb.view = new Uint8Array(bb.buffer);\r\n } else {\r\n bb.buffer = this.buffer;\r\n bb.view = this.view;\r\n }\r\n bb.offset = this.offset;\r\n bb.markedOffset = this.markedOffset;\r\n bb.limit = this.limit;\r\n return bb;\r\n };\r\n\r\n /**\r\n * Compacts this ByteBuffer to be backed by a {@link ByteBuffer#buffer} of its contents' length. Contents are the bytes\r\n * between {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. Will set `offset = 0` and `limit = capacity` and\r\n * adapt {@link ByteBuffer#markedOffset} to the same relative position if set.\r\n * @param {number=} begin Offset to start at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.compact = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === 0 && end === this.buffer.byteLength)\r\n return this; // Already compacted\r\n var len = end - begin;\r\n if (len === 0) {\r\n this.buffer = EMPTY_BUFFER;\r\n this.view = null;\r\n if (this.markedOffset >= 0) this.markedOffset -= begin;\r\n this.offset = 0;\r\n this.limit = 0;\r\n return this;\r\n }\r\n var buffer = new ArrayBuffer(len);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view.subarray(begin, end));\r\n this.buffer = buffer;\r\n this.view = view;\r\n if (this.markedOffset >= 0) this.markedOffset -= begin;\r\n this.offset = 0;\r\n this.limit = len;\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates a copy of this ByteBuffer's contents. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}.\r\n * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} Copy\r\n * @expose\r\n */\r\n ByteBufferPrototype.copy = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === end)\r\n return new ByteBuffer(0, this.littleEndian, this.noAssert);\r\n var capacity = end - begin,\r\n bb = new ByteBuffer(capacity, this.littleEndian, this.noAssert);\r\n bb.offset = 0;\r\n bb.limit = capacity;\r\n if (bb.markedOffset >= 0) bb.markedOffset -= begin;\r\n this.copyTo(bb, 0, begin, end);\r\n return bb;\r\n };\r\n\r\n /**\r\n * Copies this ByteBuffer's contents to another ByteBuffer. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} targetOffset Offset to copy to. Will use and increase the target's {@link ByteBuffer#offset}\r\n * by the number of bytes copied if omitted.\r\n * @param {number=} sourceOffset Offset to start copying from. Will use and increase {@link ByteBuffer#offset} by the\r\n * number of bytes copied if omitted.\r\n * @param {number=} sourceLimit Offset to end copying from, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.copyTo = function(target, targetOffset, sourceOffset, sourceLimit) {\r\n var relative,\r\n targetRelative;\r\n if (!this.noAssert) {\r\n if (!ByteBuffer.isByteBuffer(target))\r\n throw TypeError(\"Illegal target: Not a ByteBuffer\");\r\n }\r\n targetOffset = (targetRelative = typeof targetOffset === 'undefined') ? target.offset : targetOffset | 0;\r\n sourceOffset = (relative = typeof sourceOffset === 'undefined') ? this.offset : sourceOffset | 0;\r\n sourceLimit = typeof sourceLimit === 'undefined' ? this.limit : sourceLimit | 0;\r\n\r\n if (targetOffset < 0 || targetOffset > target.buffer.byteLength)\r\n throw RangeError(\"Illegal target range: 0 <= \"+targetOffset+\" <= \"+target.buffer.byteLength);\r\n if (sourceOffset < 0 || sourceLimit > this.buffer.byteLength)\r\n throw RangeError(\"Illegal source range: 0 <= \"+sourceOffset+\" <= \"+this.buffer.byteLength);\r\n\r\n var len = sourceLimit - sourceOffset;\r\n if (len === 0)\r\n return target; // Nothing to copy\r\n\r\n target.ensureCapacity(targetOffset + len);\r\n\r\n target.view.set(this.view.subarray(sourceOffset, sourceLimit), targetOffset);\r\n\r\n if (relative) this.offset += len;\r\n if (targetRelative) target.offset += len;\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Makes sure that this ByteBuffer is backed by a {@link ByteBuffer#buffer} of at least the specified capacity. If the\r\n * current capacity is exceeded, it will be doubled. If double the current capacity is less than the required capacity,\r\n * the required capacity will be used instead.\r\n * @param {number} capacity Required capacity\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.ensureCapacity = function(capacity) {\r\n var current = this.buffer.byteLength;\r\n if (current < capacity)\r\n return this.resize((current *= 2) > capacity ? current : capacity);\r\n return this;\r\n };\r\n\r\n /**\r\n * Overwrites this ByteBuffer's contents with the specified value. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}.\r\n * @param {number|string} value Byte value to fill with. If given as a string, the first character is used.\r\n * @param {number=} begin Begin offset. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted. defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example `someByteBuffer.clear().fill(0)` fills the entire backing buffer with zeroes\r\n */\r\n ByteBufferPrototype.fill = function(value, begin, end) {\r\n var relative = typeof begin === 'undefined';\n if (relative) begin = this.offset;\n if (typeof value === 'string' && value.length > 0)\r\n value = value.charCodeAt(0);\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin >= end)\r\n return this; // Nothing to fill\r\n while (begin < end) this.view[begin++] = value;\r\n if (relative) this.offset = begin;\r\n return this;\r\n };\r\n\r\n /**\r\n * Makes this ByteBuffer ready for a new sequence of write or relative read operations. Sets `limit = offset` and\r\n * `offset = 0`. Make sure always to flip a ByteBuffer when all relative read or write operations are complete.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.flip = function() {\r\n this.limit = this.offset;\r\n this.offset = 0;\r\n return this;\r\n };\r\n /**\r\n * Marks an offset on this ByteBuffer to be used later.\r\n * @param {number=} offset Offset to mark. Defaults to {@link ByteBuffer#offset}.\r\n * @returns {!ByteBuffer} this\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @see ByteBuffer#reset\r\n * @expose\r\n */\r\n ByteBufferPrototype.mark = function(offset) {\r\n offset = typeof offset === 'undefined' ? this.offset : offset;\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n this.markedOffset = offset;\r\n return this;\r\n };\r\n /**\r\n * Sets the byte order.\r\n * @param {boolean} littleEndian `true` for little endian byte order, `false` for big endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.order = function(littleEndian) {\r\n if (!this.noAssert) {\r\n if (typeof littleEndian !== 'boolean')\r\n throw TypeError(\"Illegal littleEndian: Not a boolean\");\r\n }\r\n this.littleEndian = !!littleEndian;\r\n return this;\r\n };\r\n\r\n /**\r\n * Switches (to) little endian byte order.\r\n * @param {boolean=} littleEndian Defaults to `true`, otherwise uses big endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.LE = function(littleEndian) {\r\n this.littleEndian = typeof littleEndian !== 'undefined' ? !!littleEndian : true;\r\n return this;\r\n };\r\n\r\n /**\r\n * Switches (to) big endian byte order.\r\n * @param {boolean=} bigEndian Defaults to `true`, otherwise uses little endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.BE = function(bigEndian) {\r\n this.littleEndian = typeof bigEndian !== 'undefined' ? !bigEndian : false;\r\n return this;\r\n };\r\n /**\r\n * Prepends some data to this ByteBuffer. This will overwrite any contents before the specified offset up to the\r\n * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer\r\n * will be resized and its contents moved accordingly.\r\n * @param {!ByteBuffer|string|!ArrayBuffer} source Data to prepend. If `source` is a ByteBuffer, its offset will be\r\n * modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes\r\n * prepended if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example A relative `00<01 02 03>.prepend(<04 05>)` results in `<04 05 01 02 03>, 04 05|`\r\n * @example An absolute `00<01 02 03>.prepend(<04 05>, 2)` results in `04<05 02 03>, 04 05|`\r\n */\r\n ByteBufferPrototype.prepend = function(source, encoding, offset) {\r\n if (typeof encoding === 'number' || typeof encoding !== 'string') {\r\n offset = encoding;\r\n encoding = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (!(source instanceof ByteBuffer))\r\n source = ByteBuffer.wrap(source, encoding);\r\n var len = source.limit - source.offset;\r\n if (len <= 0) return this; // Nothing to prepend\r\n var diff = len - offset;\r\n if (diff > 0) { // Not enough space before offset, so resize + move\r\n var buffer = new ArrayBuffer(this.buffer.byteLength + diff);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view.subarray(offset, this.buffer.byteLength), len);\r\n this.buffer = buffer;\r\n this.view = view;\r\n this.offset += diff;\r\n if (this.markedOffset >= 0) this.markedOffset += diff;\r\n this.limit += diff;\r\n offset += diff;\r\n } else {\r\n var arrayView = new Uint8Array(this.buffer);\r\n }\r\n this.view.set(source.view.subarray(source.offset, source.limit), offset - len);\r\n\r\n source.offset = source.limit;\r\n if (relative)\r\n this.offset -= len;\r\n return this;\r\n };\r\n\r\n /**\r\n * Prepends this ByteBuffer to another ByteBuffer. This will overwrite any contents before the specified offset up to the\r\n * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer\r\n * will be resized and its contents moved accordingly.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes\r\n * prepended if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @see ByteBuffer#prepend\r\n */\r\n ByteBufferPrototype.prependTo = function(target, offset) {\r\n target.prepend(this, offset);\r\n return this;\r\n };\r\n /**\r\n * Prints debug information about this ByteBuffer's contents.\r\n * @param {function(string)=} out Output function to call, defaults to console.log\r\n * @expose\r\n */\r\n ByteBufferPrototype.printDebug = function(out) {\r\n if (typeof out !== 'function') out = console.log.bind(console);\r\n out(\r\n this.toString()+\"\\n\"+\r\n \"-------------------------------------------------------------------\\n\"+\r\n this.toDebug(/* columns */ true)\r\n );\r\n };\r\n\r\n /**\r\n * Gets the number of remaining readable bytes. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}, so this returns `limit - offset`.\r\n * @returns {number} Remaining readable bytes. May be negative if `offset > limit`.\r\n * @expose\r\n */\r\n ByteBufferPrototype.remaining = function() {\r\n return this.limit - this.offset;\r\n };\r\n /**\r\n * Resets this ByteBuffer's {@link ByteBuffer#offset}. If an offset has been marked through {@link ByteBuffer#mark}\r\n * before, `offset` will be set to {@link ByteBuffer#markedOffset}, which will then be discarded. If no offset has been\r\n * marked, sets `offset = 0`.\r\n * @returns {!ByteBuffer} this\r\n * @see ByteBuffer#mark\r\n * @expose\r\n */\r\n ByteBufferPrototype.reset = function() {\r\n if (this.markedOffset >= 0) {\r\n this.offset = this.markedOffset;\r\n this.markedOffset = -1;\r\n } else {\r\n this.offset = 0;\r\n }\r\n return this;\r\n };\r\n /**\r\n * Resizes this ByteBuffer to be backed by a buffer of at least the given capacity. Will do nothing if already that\r\n * large or larger.\r\n * @param {number} capacity Capacity required\r\n * @returns {!ByteBuffer} this\r\n * @throws {TypeError} If `capacity` is not a number\r\n * @throws {RangeError} If `capacity < 0`\r\n * @expose\r\n */\r\n ByteBufferPrototype.resize = function(capacity) {\r\n if (!this.noAssert) {\r\n if (typeof capacity !== 'number' || capacity % 1 !== 0)\n throw TypeError(\"Illegal capacity: \"+capacity+\" (not an integer)\");\n capacity |= 0;\n if (capacity < 0)\r\n throw RangeError(\"Illegal capacity: 0 <= \"+capacity);\r\n }\r\n if (this.buffer.byteLength < capacity) {\r\n var buffer = new ArrayBuffer(capacity);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view);\r\n this.buffer = buffer;\r\n this.view = view;\r\n }\r\n return this;\r\n };\r\n /**\r\n * Reverses this ByteBuffer's contents.\r\n * @param {number=} begin Offset to start at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.reverse = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === end)\r\n return this; // Nothing to reverse\r\n Array.prototype.reverse.call(this.view.subarray(begin, end));\r\n return this;\r\n };\r\n /**\r\n * Skips the next `length` bytes. This will just advance\r\n * @param {number} length Number of bytes to skip. May also be negative to move the offset back.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.skip = function(length) {\r\n if (!this.noAssert) {\r\n if (typeof length !== 'number' || length % 1 !== 0)\n throw TypeError(\"Illegal length: \"+length+\" (not an integer)\");\n length |= 0;\n }\r\n var offset = this.offset + length;\r\n if (!this.noAssert) {\r\n if (offset < 0 || offset > this.buffer.byteLength)\r\n throw RangeError(\"Illegal length: 0 <= \"+this.offset+\" + \"+length+\" <= \"+this.buffer.byteLength);\r\n }\r\n this.offset = offset;\r\n return this;\r\n };\r\n\r\n /**\r\n * Slices this ByteBuffer by creating a cloned instance with `offset = begin` and `limit = end`.\r\n * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} Clone of this ByteBuffer with slicing applied, backed by the same {@link ByteBuffer#buffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.slice = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var bb = this.clone();\r\n bb.offset = begin;\r\n bb.limit = end;\r\n return bb;\r\n };\r\n /**\r\n * Returns a copy of the backing buffer that contains this ByteBuffer's contents. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}.\r\n * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory if\r\n * possible. Defaults to `false`\r\n * @returns {!ArrayBuffer} Contents as an ArrayBuffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBuffer = function(forceCopy) {\r\n var offset = this.offset,\r\n limit = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: Not an integer\");\n offset >>>= 0;\n if (typeof limit !== 'number' || limit % 1 !== 0)\n throw TypeError(\"Illegal limit: Not an integer\");\n limit >>>= 0;\n if (offset < 0 || offset > limit || limit > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+offset+\" <= \"+limit+\" <= \"+this.buffer.byteLength);\n }\r\n // NOTE: It's not possible to have another ArrayBuffer reference the same memory as the backing buffer. This is\r\n // possible with Uint8Array#subarray only, but we have to return an ArrayBuffer by contract. So:\r\n if (!forceCopy && offset === 0 && limit === this.buffer.byteLength)\r\n return this.buffer;\r\n if (offset === limit)\r\n return EMPTY_BUFFER;\r\n var buffer = new ArrayBuffer(limit - offset);\r\n new Uint8Array(buffer).set(new Uint8Array(this.buffer).subarray(offset, limit), 0);\r\n return buffer;\r\n };\r\n\r\n /**\r\n * Returns a raw buffer compacted to contain this ByteBuffer's contents. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. This is an alias of {@link ByteBuffer#toBuffer}.\r\n * @function\r\n * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory.\r\n * Defaults to `false`\r\n * @returns {!ArrayBuffer} Contents as an ArrayBuffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.toArrayBuffer = ByteBufferPrototype.toBuffer;\r\n\r\n /**\r\n * Converts the ByteBuffer's contents to a string.\r\n * @param {string=} encoding Output encoding. Returns an informative string representation if omitted but also allows\r\n * direct conversion to \"utf8\", \"hex\", \"base64\" and \"binary\" encoding. \"debug\" returns a hex representation with\r\n * highlighted offsets.\r\n * @param {number=} begin Offset to begin at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {string} String representation\r\n * @throws {Error} If `encoding` is invalid\r\n * @expose\r\n */\r\n ByteBufferPrototype.toString = function(encoding, begin, end) {\r\n if (typeof encoding === 'undefined')\r\n return \"ByteBufferAB(offset=\"+this.offset+\",markedOffset=\"+this.markedOffset+\",limit=\"+this.limit+\",capacity=\"+this.capacity()+\")\";\r\n if (typeof encoding === 'number')\r\n encoding = \"utf8\",\r\n begin = encoding,\r\n end = begin;\r\n switch (encoding) {\r\n case \"utf8\":\r\n return this.toUTF8(begin, end);\r\n case \"base64\":\r\n return this.toBase64(begin, end);\r\n case \"hex\":\r\n return this.toHex(begin, end);\r\n case \"binary\":\r\n return this.toBinary(begin, end);\r\n case \"debug\":\r\n return this.toDebug();\r\n case \"columns\":\r\n return this.toColumns();\r\n default:\r\n throw Error(\"Unsupported encoding: \"+encoding);\r\n }\r\n };\r\n\r\n // lxiv-embeddable\r\n\r\n /**\r\n * lxiv-embeddable (c) 2014 Daniel Wirtz \r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/lxiv for details\r\n */\r\n var lxiv = function() {\r\n \"use strict\";\r\n\r\n /**\r\n * lxiv namespace.\r\n * @type {!Object.}\r\n * @exports lxiv\r\n */\r\n var lxiv = {};\r\n\r\n /**\r\n * Character codes for output.\r\n * @type {!Array.}\r\n * @inner\r\n */\r\n var aout = [\r\n 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,\r\n 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102,\r\n 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\r\n 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47\r\n ];\r\n\r\n /**\r\n * Character codes for input.\r\n * @type {!Array.}\r\n * @inner\r\n */\r\n var ain = [];\r\n for (var i=0, k=aout.length; i>2)&0x3f]);\r\n t = (b&0x3)<<4;\r\n if ((b = src()) !== null) {\r\n t |= (b>>4)&0xf;\r\n dst(aout[(t|((b>>4)&0xf))&0x3f]);\r\n t = (b&0xf)<<2;\r\n if ((b = src()) !== null)\r\n dst(aout[(t|((b>>6)&0x3))&0x3f]),\r\n dst(aout[b&0x3f]);\r\n else\r\n dst(aout[t&0x3f]),\r\n dst(61);\r\n } else\r\n dst(aout[t&0x3f]),\r\n dst(61),\r\n dst(61);\r\n }\r\n };\r\n\r\n /**\r\n * Decodes base64 char codes to bytes.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte.\r\n * @throws {Error} If a character code is invalid\r\n */\r\n lxiv.decode = function(src, dst) {\r\n var c, t1, t2;\r\n function fail(c) {\r\n throw Error(\"Illegal character code: \"+c);\r\n }\r\n while ((c = src()) !== null) {\r\n t1 = ain[c];\r\n if (typeof t1 === 'undefined') fail(c);\r\n if ((c = src()) !== null) {\r\n t2 = ain[c];\r\n if (typeof t2 === 'undefined') fail(c);\r\n dst((t1<<2)>>>0|(t2&0x30)>>4);\r\n if ((c = src()) !== null) {\r\n t1 = ain[c];\r\n if (typeof t1 === 'undefined')\r\n if (c === 61) break; else fail(c);\r\n dst(((t2&0xf)<<4)>>>0|(t1&0x3c)>>2);\r\n if ((c = src()) !== null) {\r\n t2 = ain[c];\r\n if (typeof t2 === 'undefined')\r\n if (c === 61) break; else fail(c);\r\n dst(((t1&0x3)<<6)>>>0|t2);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Tests if a string is valid base64.\r\n * @param {string} str String to test\r\n * @returns {boolean} `true` if valid, otherwise `false`\r\n */\r\n lxiv.test = function(str) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(str);\r\n };\r\n\r\n return lxiv;\r\n }();\r\n\r\n // encodings/base64\r\n\r\n /**\r\n * Encodes this ByteBuffer's contents to a base64 encoded string.\r\n * @param {number=} begin Offset to begin at, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}.\r\n * @returns {string} Base64 encoded string\r\n * @throws {RangeError} If `begin` or `end` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBase64 = function(begin, end) {\r\n if (typeof begin === 'undefined')\r\n begin = this.offset;\r\n if (typeof end === 'undefined')\r\n end = this.limit;\r\n begin = begin | 0; end = end | 0;\r\n if (begin < 0 || end > this.capacity || begin > end)\r\n throw RangeError(\"begin, end\");\r\n var sd; lxiv.encode(function() {\r\n return begin < end ? this.view[begin++] : null;\r\n }.bind(this), sd = stringDestination());\r\n return sd();\r\n };\r\n\r\n /**\r\n * Decodes a base64 encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromBase64 = function(str, littleEndian) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"str\");\r\n var bb = new ByteBuffer(str.length/4*3, littleEndian),\r\n i = 0;\r\n lxiv.decode(stringSource(str), function(b) {\r\n bb.view[i++] = b;\r\n });\r\n bb.limit = i;\r\n return bb;\r\n };\r\n\r\n /**\r\n * Encodes a binary string to base64 like `window.btoa` does.\r\n * @param {string} str Binary string\r\n * @returns {string} Base64 encoded string\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.btoa\r\n * @expose\r\n */\r\n ByteBuffer.btoa = function(str) {\r\n return ByteBuffer.fromBinary(str).toBase64();\r\n };\r\n\r\n /**\r\n * Decodes a base64 encoded string to binary like `window.atob` does.\r\n * @param {string} b64 Base64 encoded string\r\n * @returns {string} Binary string\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.atob\r\n * @expose\r\n */\r\n ByteBuffer.atob = function(b64) {\r\n return ByteBuffer.fromBase64(b64).toBinary();\r\n };\r\n\r\n // encodings/binary\r\n\r\n /**\r\n * Encodes this ByteBuffer to a binary encoded string, that is using only characters 0x00-0xFF as bytes.\r\n * @param {number=} begin Offset to begin at. Defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end Offset to end at. Defaults to {@link ByteBuffer#limit}.\r\n * @returns {string} Binary encoded string\r\n * @throws {RangeError} If `offset > limit`\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBinary = function(begin, end) {\r\n if (typeof begin === 'undefined')\r\n begin = this.offset;\r\n if (typeof end === 'undefined')\r\n end = this.limit;\r\n begin |= 0; end |= 0;\r\n if (begin < 0 || end > this.capacity() || begin > end)\r\n throw RangeError(\"begin, end\");\r\n if (begin === end)\r\n return \"\";\r\n var chars = [],\r\n parts = [];\r\n while (begin < end) {\r\n chars.push(this.view[begin++]);\r\n if (chars.length >= 1024)\r\n parts.push(String.fromCharCode.apply(String, chars)),\r\n chars = [];\r\n }\r\n return parts.join('') + String.fromCharCode.apply(String, chars);\r\n };\r\n\r\n /**\r\n * Decodes a binary encoded string, that is using only characters 0x00-0xFF as bytes, to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromBinary = function(str, littleEndian) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"str\");\r\n var i = 0,\r\n k = str.length,\r\n charCode,\r\n bb = new ByteBuffer(k, littleEndian);\r\n while (i 0xff)\r\n throw RangeError(\"illegal char code: \"+charCode);\r\n bb.view[i++] = charCode;\r\n }\r\n bb.limit = k;\r\n return bb;\r\n };\r\n\r\n // encodings/debug\r\n\r\n /**\r\n * Encodes this ByteBuffer to a hex encoded string with marked offsets. Offset symbols are:\r\n * * `<` : offset,\r\n * * `'` : markedOffset,\r\n * * `>` : limit,\r\n * * `|` : offset and limit,\r\n * * `[` : offset and markedOffset,\r\n * * `]` : markedOffset and limit,\r\n * * `!` : offset, markedOffset and limit\r\n * @param {boolean=} columns If `true` returns two columns hex + ascii, defaults to `false`\r\n * @returns {string|!Array.} Debug string or array of lines if `asArray = true`\r\n * @expose\r\n * @example `>00'01 02<03` contains four bytes with `limit=0, markedOffset=1, offset=3`\r\n * @example `00[01 02 03>` contains four bytes with `offset=markedOffset=1, limit=4`\r\n * @example `00|01 02 03` contains four bytes with `offset=limit=1, markedOffset=-1`\r\n * @example `|` contains zero bytes with `offset=limit=0, markedOffset=-1`\r\n */\r\n ByteBufferPrototype.toDebug = function(columns) {\r\n var i = -1,\r\n k = this.buffer.byteLength,\r\n b,\r\n hex = \"\",\r\n asc = \"\",\r\n out = \"\";\r\n while (i 32 && b < 127 ? String.fromCharCode(b) : '.';\r\n }\r\n ++i;\r\n if (columns) {\r\n if (i > 0 && i % 16 === 0 && i !== k) {\r\n while (hex.length < 3*16+3) hex += \" \";\r\n out += hex+asc+\"\\n\";\r\n hex = asc = \"\";\r\n }\r\n }\r\n if (i === this.offset && i === this.limit)\r\n hex += i === this.markedOffset ? \"!\" : \"|\";\r\n else if (i === this.offset)\r\n hex += i === this.markedOffset ? \"[\" : \"<\";\r\n else if (i === this.limit)\r\n hex += i === this.markedOffset ? \"]\" : \">\";\r\n else\r\n hex += i === this.markedOffset ? \"'\" : (columns || (i !== 0 && i !== k) ? \" \" : \"\");\r\n }\r\n if (columns && hex !== \" \") {\r\n while (hex.length < 3*16+3)\r\n hex += \" \";\r\n out += hex + asc + \"\\n\";\r\n }\r\n return columns ? out : hex;\r\n };\r\n\r\n /**\r\n * Decodes a hex encoded string with marked offsets to a ByteBuffer.\r\n * @param {string} str Debug string to decode (not be generated with `columns = true`)\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n * @see ByteBuffer#toDebug\r\n */\r\n ByteBuffer.fromDebug = function(str, littleEndian, noAssert) {\r\n var k = str.length,\r\n bb = new ByteBuffer(((k+1)/3)|0, littleEndian, noAssert);\r\n var i = 0, j = 0, ch, b,\r\n rs = false, // Require symbol next\r\n ho = false, hm = false, hl = false, // Already has offset (ho), markedOffset (hm), limit (hl)?\r\n fail = false;\r\n while (i':\r\n if (!noAssert) {\r\n if (hl) {\r\n fail = true;\r\n break;\r\n }\r\n hl = true;\r\n }\r\n bb.limit = j;\r\n rs = false;\r\n break;\r\n case \"'\":\r\n if (!noAssert) {\r\n if (hm) {\r\n fail = true;\r\n break;\r\n }\r\n hm = true;\r\n }\r\n bb.markedOffset = j;\r\n rs = false;\r\n break;\r\n case ' ':\r\n rs = false;\r\n break;\r\n default:\r\n if (!noAssert) {\r\n if (rs) {\r\n fail = true;\r\n break;\r\n }\r\n }\r\n b = parseInt(ch+str.charAt(i++), 16);\r\n if (!noAssert) {\r\n if (isNaN(b) || b < 0 || b > 255)\r\n throw TypeError(\"Illegal str: Not a debug encoded string\");\r\n }\r\n bb.view[j++] = b;\r\n rs = true;\r\n }\r\n if (fail)\r\n throw TypeError(\"Illegal str: Invalid symbol at \"+i);\r\n }\r\n if (!noAssert) {\r\n if (!ho || !hl)\r\n throw TypeError(\"Illegal str: Missing offset or limit\");\r\n if (j>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var out = new Array(end - begin),\r\n b;\r\n while (begin < end) {\r\n b = this.view[begin++];\r\n if (b < 0x10)\r\n out.push(\"0\", b.toString(16));\r\n else out.push(b.toString(16));\r\n }\r\n return out.join('');\r\n };\r\n\r\n /**\r\n * Decodes a hex encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromHex = function(str, littleEndian, noAssert) {\r\n if (!noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (str.length % 2 !== 0)\r\n throw TypeError(\"Illegal str: Length not a multiple of 2\");\r\n }\r\n var k = str.length,\r\n bb = new ByteBuffer((k / 2) | 0, littleEndian),\r\n b;\r\n for (var i=0, j=0; i 255)\r\n throw TypeError(\"Illegal str: Contains non-hex characters\");\r\n bb.view[j++] = b;\r\n }\r\n bb.limit = j;\r\n return bb;\r\n };\r\n\r\n // utfx-embeddable\r\n\r\n /**\r\n * utfx-embeddable (c) 2014 Daniel Wirtz \r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/utfx for details\r\n */\r\n var utfx = function() {\r\n \"use strict\";\r\n\r\n /**\r\n * utfx namespace.\r\n * @inner\r\n * @type {!Object.}\r\n */\r\n var utfx = {};\r\n\r\n /**\r\n * Maximum valid code point.\r\n * @type {number}\r\n * @const\r\n */\r\n utfx.MAX_CODEPOINT = 0x10FFFF;\r\n\r\n /**\r\n * Encodes UTF8 code points to UTF8 bytes.\r\n * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point\r\n * respectively `null` if there are no more code points left or a single numeric code point.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte\r\n */\r\n utfx.encodeUTF8 = function(src, dst) {\r\n var cp = null;\r\n if (typeof src === 'number')\r\n cp = src,\r\n src = function() { return null; };\r\n while (cp !== null || (cp = src()) !== null) {\r\n if (cp < 0x80)\r\n dst(cp&0x7F);\r\n else if (cp < 0x800)\r\n dst(((cp>>6)&0x1F)|0xC0),\r\n dst((cp&0x3F)|0x80);\r\n else if (cp < 0x10000)\r\n dst(((cp>>12)&0x0F)|0xE0),\r\n dst(((cp>>6)&0x3F)|0x80),\r\n dst((cp&0x3F)|0x80);\r\n else\r\n dst(((cp>>18)&0x07)|0xF0),\r\n dst(((cp>>12)&0x3F)|0x80),\r\n dst(((cp>>6)&0x3F)|0x80),\r\n dst((cp&0x3F)|0x80);\r\n cp = null;\r\n }\r\n };\r\n\r\n /**\r\n * Decodes UTF8 bytes to UTF8 code points.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there\r\n * are no more bytes left.\r\n * @param {!function(number)} dst Code points destination as a function successively called with each decoded code point.\r\n * @throws {RangeError} If a starting byte is invalid in UTF8\r\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the\r\n * remaining bytes.\r\n */\r\n utfx.decodeUTF8 = function(src, dst) {\r\n var a, b, c, d, fail = function(b) {\r\n b = b.slice(0, b.indexOf(null));\r\n var err = Error(b.toString());\r\n err.name = \"TruncatedError\";\r\n err['bytes'] = b;\r\n throw err;\r\n };\r\n while ((a = src()) !== null) {\r\n if ((a&0x80) === 0)\r\n dst(a);\r\n else if ((a&0xE0) === 0xC0)\r\n ((b = src()) === null) && fail([a, b]),\r\n dst(((a&0x1F)<<6) | (b&0x3F));\r\n else if ((a&0xF0) === 0xE0)\r\n ((b=src()) === null || (c=src()) === null) && fail([a, b, c]),\r\n dst(((a&0x0F)<<12) | ((b&0x3F)<<6) | (c&0x3F));\r\n else if ((a&0xF8) === 0xF0)\r\n ((b=src()) === null || (c=src()) === null || (d=src()) === null) && fail([a, b, c ,d]),\r\n dst(((a&0x07)<<18) | ((b&0x3F)<<12) | ((c&0x3F)<<6) | (d&0x3F));\r\n else throw RangeError(\"Illegal starting byte: \"+a);\r\n }\r\n };\r\n\r\n /**\r\n * Converts UTF16 characters to UTF8 code points.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @param {!function(number)} dst Code points destination as a function successively called with each converted code\r\n * point.\r\n */\r\n utfx.UTF16toUTF8 = function(src, dst) {\r\n var c1, c2 = null;\r\n while (true) {\r\n if ((c1 = c2 !== null ? c2 : src()) === null)\r\n break;\r\n if (c1 >= 0xD800 && c1 <= 0xDFFF) {\r\n if ((c2 = src()) !== null) {\r\n if (c2 >= 0xDC00 && c2 <= 0xDFFF) {\r\n dst((c1-0xD800)*0x400+c2-0xDC00+0x10000);\r\n c2 = null; continue;\r\n }\r\n }\r\n }\r\n dst(c1);\r\n }\r\n if (c2 !== null) dst(c2);\r\n };\r\n\r\n /**\r\n * Converts UTF8 code points to UTF16 characters.\r\n * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point\r\n * respectively `null` if there are no more code points left or a single numeric code point.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.\r\n * @throws {RangeError} If a code point is out of range\r\n */\r\n utfx.UTF8toUTF16 = function(src, dst) {\r\n var cp = null;\r\n if (typeof src === 'number')\r\n cp = src, src = function() { return null; };\r\n while (cp !== null || (cp = src()) !== null) {\r\n if (cp <= 0xFFFF)\r\n dst(cp);\r\n else\r\n cp -= 0x10000,\r\n dst((cp>>10)+0xD800),\r\n dst((cp%0x400)+0xDC00);\r\n cp = null;\r\n }\r\n };\r\n\r\n /**\r\n * Converts and encodes UTF16 characters to UTF8 bytes.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively `null`\r\n * if there are no more characters left.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte.\r\n */\r\n utfx.encodeUTF16toUTF8 = function(src, dst) {\r\n utfx.UTF16toUTF8(src, function(cp) {\r\n utfx.encodeUTF8(cp, dst);\r\n });\r\n };\r\n\r\n /**\r\n * Decodes and converts UTF8 bytes to UTF16 characters.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there\r\n * are no more bytes left.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.\r\n * @throws {RangeError} If a starting byte is invalid in UTF8\r\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the remaining bytes.\r\n */\r\n utfx.decodeUTF8toUTF16 = function(src, dst) {\r\n utfx.decodeUTF8(src, function(cp) {\r\n utfx.UTF8toUTF16(cp, dst);\r\n });\r\n };\r\n\r\n /**\r\n * Calculates the byte length of an UTF8 code point.\r\n * @param {number} cp UTF8 code point\r\n * @returns {number} Byte length\r\n */\r\n utfx.calculateCodePoint = function(cp) {\r\n return (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes required to store UTF8 code points.\r\n * @param {(!function():number|null)} src Code points source as a function returning the next code point respectively\r\n * `null` if there are no more code points left.\r\n * @returns {number} The number of UTF8 bytes required\r\n */\r\n utfx.calculateUTF8 = function(src) {\r\n var cp, l=0;\r\n while ((cp = src()) !== null)\r\n l += (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n return l;\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 code points respectively UTF8 bytes required to store UTF16 char codes.\r\n * @param {(!function():number|null)} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @returns {!Array.} The number of UTF8 code points at index 0 and the number of UTF8 bytes required at index 1.\r\n */\r\n utfx.calculateUTF16asUTF8 = function(src) {\r\n var n=0, l=0;\r\n utfx.UTF16toUTF8(src, function(cp) {\r\n ++n; l += (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n });\r\n return [n,l];\r\n };\r\n\r\n return utfx;\r\n }();\r\n\r\n // encodings/utf8\r\n\r\n /**\r\n * Encodes this ByteBuffer's contents between {@link ByteBuffer#offset} and {@link ByteBuffer#limit} to an UTF8 encoded\r\n * string.\r\n * @returns {string} Hex encoded string\r\n * @throws {RangeError} If `offset > limit`\r\n * @expose\r\n */\r\n ByteBufferPrototype.toUTF8 = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var sd; try {\r\n utfx.decodeUTF8toUTF16(function() {\r\n return begin < end ? this.view[begin++] : null;\r\n }.bind(this), sd = stringDestination());\r\n } catch (e) {\r\n if (begin !== end)\r\n throw RangeError(\"Illegal range: Truncated data, \"+begin+\" != \"+end);\r\n }\r\n return sd();\r\n };\r\n\r\n /**\r\n * Decodes an UTF8 encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromUTF8 = function(str, littleEndian, noAssert) {\r\n if (!noAssert)\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n var bb = new ByteBuffer(utfx.calculateUTF16asUTF8(stringSource(str), true)[1], littleEndian, noAssert),\r\n i = 0;\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n bb.view[i++] = b;\r\n });\r\n bb.limit = i;\r\n return bb;\r\n };\r\n\r\n return ByteBuffer;\r\n});\r\n","/*\r\n Copyright 2013 Daniel Wirtz \r\n Copyright 2009 The Closure Library Authors. All Rights Reserved.\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS-IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n */\r\n\r\n/**\r\n * @license long.js (c) 2013 Daniel Wirtz \r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/long.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (typeof define === 'function' && define[\"amd\"])\r\n define([], factory);\r\n /* CommonJS */ else if (typeof require === 'function' && typeof module === \"object\" && module && module[\"exports\"])\r\n module[\"exports\"] = factory();\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"Long\"] = factory();\r\n\r\n})(this, function() {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\r\n * See the from* functions below for more convenient ways of constructing Longs.\r\n * @exports Long\r\n * @class A Long class for representing a 64 bit two's-complement integer value.\r\n * @param {number} low The low (signed) 32 bits of the long\r\n * @param {number} high The high (signed) 32 bits of the long\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @constructor\r\n */\r\n function Long(low, high, unsigned) {\r\n\r\n /**\r\n * The low 32 bits as a signed value.\r\n * @type {number}\r\n * @expose\r\n */\r\n this.low = low|0;\r\n\r\n /**\r\n * The high 32 bits as a signed value.\r\n * @type {number}\r\n * @expose\r\n */\r\n this.high = high|0;\r\n\r\n /**\r\n * Whether unsigned or not.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.unsigned = !!unsigned;\r\n }\r\n\r\n // The internal representation of a long is the two given signed, 32-bit values.\r\n // We use 32-bit pieces because these are the size of integers on which\r\n // Javascript performs bit-operations. For operations like addition and\r\n // multiplication, we split each number into 16 bit pieces, which can easily be\r\n // multiplied within Javascript's floating-point representation without overflow\r\n // or change in sign.\r\n //\r\n // In the algorithms below, we frequently reduce the negative case to the\r\n // positive case by negating the input(s) and then post-processing the result.\r\n // Note that we must ALWAYS check specially whether those values are MIN_VALUE\r\n // (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\r\n // a positive number, it overflows back into a negative). Not handling this\r\n // case would often result in infinite recursion.\r\n //\r\n // Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\r\n // methods on which they depend.\r\n\r\n /**\r\n * An indicator used to reliably determine if an object is a Long or not.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n * @private\r\n */\r\n Long.__isLong__;\r\n\r\n Object.defineProperty(Long.prototype, \"__isLong__\", {\r\n value: true,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n\r\n /**\r\n * Tests if the specified object is a Long.\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Long.isLong = function isLong(obj) {\r\n return (obj && obj[\"__isLong__\"]) === true;\r\n };\r\n\r\n /**\r\n * A cache of the Long representations of small integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\n var INT_CACHE = {};\r\n\r\n /**\r\n * A cache of the Long representations of small unsigned integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\n var UINT_CACHE = {};\r\n\r\n /**\r\n * Returns a Long representing the given 32 bit integer value.\r\n * @param {number} value The 32 bit integer in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @returns {!Long} The corresponding Long value\r\n * @expose\r\n */\r\n Long.fromInt = function fromInt(value, unsigned) {\r\n var obj, cachedObj, cache;\r\n if (!unsigned) {\r\n value = value | 0;\r\n if (cache = (-128 <= value && value < 128)) {\r\n cachedObj = INT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = new Long(value, value < 0 ? -1 : 0, false);\r\n if (cache)\r\n INT_CACHE[value] = obj;\r\n return obj;\r\n } else {\r\n value = value >>> 0;\r\n if (cache = (0 <= value && value < 256)) {\r\n cachedObj = UINT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = new Long(value, (value | 0) < 0 ? -1 : 0, true);\r\n if (cache)\r\n UINT_CACHE[value] = obj;\r\n return obj;\r\n }\r\n };\r\n\r\n /**\r\n * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\r\n * @param {number} value The number in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @returns {!Long} The corresponding Long value\r\n * @expose\r\n */\r\n Long.fromNumber = function fromNumber(value, unsigned) {\r\n unsigned = !!unsigned;\r\n if (isNaN(value) || !isFinite(value))\r\n return Long.ZERO;\r\n if (!unsigned && value <= -TWO_PWR_63_DBL)\r\n return Long.MIN_VALUE;\r\n if (!unsigned && value + 1 >= TWO_PWR_63_DBL)\r\n return Long.MAX_VALUE;\r\n if (unsigned && value >= TWO_PWR_64_DBL)\r\n return Long.MAX_UNSIGNED_VALUE;\r\n if (value < 0)\r\n return Long.fromNumber(-value, unsigned).neg();\r\n return new Long((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);\r\n };\r\n\r\n /**\r\n * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\r\n * assumed to use 32 bits.\r\n * @param {number} lowBits The low 32 bits\r\n * @param {number} highBits The high 32 bits\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @returns {!Long} The corresponding Long value\r\n * @expose\r\n */\r\n Long.fromBits = function fromBits(lowBits, highBits, unsigned) {\r\n return new Long(lowBits, highBits, unsigned);\r\n };\r\n\r\n /**\r\n * Returns a Long representation of the given string, written using the specified radix.\r\n * @param {string} str The textual representation of the Long\r\n * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\r\n * @returns {!Long} The corresponding Long value\r\n * @expose\r\n */\r\n Long.fromString = function fromString(str, unsigned, radix) {\r\n if (str.length === 0)\r\n throw Error('number format error: empty string');\r\n if (str === \"NaN\" || str === \"Infinity\" || str === \"+Infinity\" || str === \"-Infinity\")\r\n return Long.ZERO;\r\n if (typeof unsigned === 'number') // For goog.math.long compatibility\r\n radix = unsigned,\r\n unsigned = false;\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw Error('radix out of range: ' + radix);\r\n\r\n var p;\r\n if ((p = str.indexOf('-')) > 0)\r\n throw Error('number format error: interior \"-\" character: ' + str);\r\n else if (p === 0)\r\n return Long.fromString(str.substring(1), unsigned, radix).neg();\r\n\r\n // Do several (8) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = Long.fromNumber(Math.pow(radix, 8));\r\n\r\n var result = Long.ZERO;\r\n for (var i = 0; i < str.length; i += 8) {\r\n var size = Math.min(8, str.length - i);\r\n var value = parseInt(str.substring(i, i + size), radix);\r\n if (size < 8) {\r\n var power = Long.fromNumber(Math.pow(radix, size));\r\n result = result.mul(power).add(Long.fromNumber(value));\r\n } else {\r\n result = result.mul(radixToPower);\r\n result = result.add(Long.fromNumber(value));\r\n }\r\n }\r\n result.unsigned = unsigned;\r\n return result;\r\n };\r\n\r\n /**\r\n * Converts the specified value to a Long.\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n Long.fromValue = function fromValue(val) {\r\n if (val /* is compatible */ instanceof Long)\r\n return val;\r\n if (typeof val === 'number')\r\n return Long.fromNumber(val);\r\n if (typeof val === 'string')\r\n return Long.fromString(val);\r\n // Throws for non-objects, converts non-instanceof Long:\r\n return new Long(val.low, val.high, val.unsigned);\r\n };\r\n\r\n // NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\r\n // no runtime penalty for these.\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_16_DBL = 1 << 16;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_24_DBL = 1 << 24;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\r\n\r\n /**\r\n * @type {!Long}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_24 = Long.fromInt(TWO_PWR_24_DBL);\r\n\r\n /**\r\n * Signed zero.\r\n * @type {!Long}\r\n * @expose\r\n */\r\n Long.ZERO = Long.fromInt(0);\r\n\r\n /**\r\n * Unsigned zero.\r\n * @type {!Long}\r\n * @expose\r\n */\r\n Long.UZERO = Long.fromInt(0, true);\r\n\r\n /**\r\n * Signed one.\r\n * @type {!Long}\r\n * @expose\r\n */\r\n Long.ONE = Long.fromInt(1);\r\n\r\n /**\r\n * Unsigned one.\r\n * @type {!Long}\r\n * @expose\r\n */\r\n Long.UONE = Long.fromInt(1, true);\r\n\r\n /**\r\n * Signed negative one.\r\n * @type {!Long}\r\n * @expose\r\n */\r\n Long.NEG_ONE = Long.fromInt(-1);\r\n\r\n /**\r\n * Maximum signed value.\r\n * @type {!Long}\r\n * @expose\r\n */\r\n Long.MAX_VALUE = new Long(0xFFFFFFFF|0, 0x7FFFFFFF|0, false);\r\n\r\n /**\r\n * Maximum unsigned value.\r\n * @type {!Long}\r\n * @expose\r\n */\r\n Long.MAX_UNSIGNED_VALUE = new Long(0xFFFFFFFF|0, 0xFFFFFFFF|0, true);\r\n\r\n /**\r\n * Minimum signed value.\r\n * @type {!Long}\r\n * @expose\r\n */\r\n Long.MIN_VALUE = new Long(0, 0x80000000|0, false);\r\n\r\n /**\r\n * @alias Long.prototype\r\n * @inner\r\n */\r\n var LongPrototype = Long.prototype;\r\n\r\n /**\r\n * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\r\n * @returns {number}\r\n * @expose\r\n */\r\n LongPrototype.toInt = function toInt() {\r\n return this.unsigned ? this.low >>> 0 : this.low;\r\n };\r\n\r\n /**\r\n * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\r\n * @returns {number}\r\n * @expose\r\n */\r\n LongPrototype.toNumber = function toNumber() {\r\n if (this.unsigned) {\r\n return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0);\r\n }\r\n return this.high * TWO_PWR_32_DBL + (this.low >>> 0);\r\n };\r\n\r\n /**\r\n * Converts the Long to a string written in the specified radix.\r\n * @param {number=} radix Radix (2-36), defaults to 10\r\n * @returns {string}\r\n * @override\r\n * @throws {RangeError} If `radix` is out of range\r\n * @expose\r\n */\r\n LongPrototype.toString = function toString(radix) {\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix out of range: ' + radix);\r\n if (this.isZero())\r\n return '0';\r\n var rem;\r\n if (this.isNegative()) { // Unsigned Longs are never negative\r\n if (this.eq(Long.MIN_VALUE)) {\r\n // We need to change the Long value before it can be negated, so we remove\r\n // the bottom-most digit in this base and then recurse to do the rest.\r\n var radixLong = Long.fromNumber(radix);\r\n var div = this.div(radixLong);\r\n rem = div.mul(radixLong).sub(this);\r\n return div.toString(radix) + rem.toInt().toString(radix);\r\n } else\r\n return '-' + this.neg().toString(radix);\r\n }\r\n\r\n // Do several (6) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = Long.fromNumber(Math.pow(radix, 6), this.unsigned);\r\n rem = this;\r\n var result = '';\r\n while (true) {\r\n var remDiv = rem.div(radixToPower),\r\n intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0,\r\n digits = intval.toString(radix);\r\n rem = remDiv;\r\n if (rem.isZero())\r\n return digits + result;\r\n else {\r\n while (digits.length < 6)\r\n digits = '0' + digits;\r\n result = '' + digits + result;\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Gets the high 32 bits as a signed integer.\r\n * @returns {number} Signed high bits\r\n * @expose\r\n */\r\n LongPrototype.getHighBits = function getHighBits() {\r\n return this.high;\r\n };\r\n\r\n /**\r\n * Gets the high 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned high bits\r\n * @expose\r\n */\r\n LongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {\r\n return this.high >>> 0;\r\n };\r\n\r\n /**\r\n * Gets the low 32 bits as a signed integer.\r\n * @returns {number} Signed low bits\r\n * @expose\r\n */\r\n LongPrototype.getLowBits = function getLowBits() {\r\n return this.low;\r\n };\r\n\r\n /**\r\n * Gets the low 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned low bits\r\n * @expose\r\n */\r\n LongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {\r\n return this.low >>> 0;\r\n };\r\n\r\n /**\r\n * Gets the number of bits needed to represent the absolute value of this Long.\r\n * @returns {number}\r\n * @expose\r\n */\r\n LongPrototype.getNumBitsAbs = function getNumBitsAbs() {\r\n if (this.isNegative()) // Unsigned Longs are never negative\r\n return this.eq(Long.MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();\r\n var val = this.high != 0 ? this.high : this.low;\r\n for (var bit = 31; bit > 0; bit--)\r\n if ((val & (1 << bit)) != 0)\r\n break;\r\n return this.high != 0 ? bit + 33 : bit + 1;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value equals zero.\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.isZero = function isZero() {\r\n return this.high === 0 && this.low === 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is negative.\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.isNegative = function isNegative() {\r\n return !this.unsigned && this.high < 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is positive.\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.isPositive = function isPositive() {\r\n return this.unsigned || this.high >= 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is odd.\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.isOdd = function isOdd() {\r\n return (this.low & 1) === 1;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is even.\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.isEven = function isEven() {\r\n return (this.low & 1) === 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value equals the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.equals = function equals(other) {\r\n if (!Long.isLong(other))\r\n other = Long.fromValue(other);\r\n if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1)\r\n return false;\r\n return this.high === other.high && this.low === other.low;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.eq = LongPrototype.equals;\r\n\r\n /**\r\n * Tests if this Long's value differs from the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.notEquals = function notEquals(other) {\r\n return !this.eq(/* validates */ other);\r\n };\r\n\r\n /**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.neq = LongPrototype.notEquals;\r\n\r\n /**\r\n * Tests if this Long's value is less than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.lessThan = function lessThan(other) {\r\n return this.compare(/* validates */ other) < 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.lt = LongPrototype.lessThan;\r\n\r\n /**\r\n * Tests if this Long's value is less than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {\r\n return this.compare(/* validates */ other) <= 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.lte = LongPrototype.lessThanOrEqual;\r\n\r\n /**\r\n * Tests if this Long's value is greater than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.greaterThan = function greaterThan(other) {\r\n return this.compare(/* validates */ other) > 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.gt = LongPrototype.greaterThan;\r\n\r\n /**\r\n * Tests if this Long's value is greater than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {\r\n return this.compare(/* validates */ other) >= 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.gte = LongPrototype.greaterThanOrEqual;\r\n\r\n /**\r\n * Compares this Long's value with the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n * @expose\r\n */\r\n LongPrototype.compare = function compare(other) {\r\n if (!Long.isLong(other))\r\n other = Long.fromValue(other);\r\n if (this.eq(other))\r\n return 0;\r\n var thisNeg = this.isNegative(),\r\n otherNeg = other.isNegative();\r\n if (thisNeg && !otherNeg)\r\n return -1;\r\n if (!thisNeg && otherNeg)\r\n return 1;\r\n // At this point the sign bits are the same\r\n if (!this.unsigned)\r\n return this.sub(other).isNegative() ? -1 : 1;\r\n // Both are positive if at least one is unsigned\r\n return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1;\r\n };\r\n\r\n /**\r\n * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n * @expose\r\n */\r\n LongPrototype.comp = LongPrototype.compare;\r\n\r\n /**\r\n * Negates this Long's value.\r\n * @returns {!Long} Negated Long\r\n * @expose\r\n */\r\n LongPrototype.negate = function negate() {\r\n if (!this.unsigned && this.eq(Long.MIN_VALUE))\r\n return Long.MIN_VALUE;\r\n return this.not().add(Long.ONE);\r\n };\r\n\r\n /**\r\n * Negates this Long's value. This is an alias of {@link Long#negate}.\r\n * @function\r\n * @returns {!Long} Negated Long\r\n * @expose\r\n */\r\n LongPrototype.neg = LongPrototype.negate;\r\n\r\n /**\r\n * Returns the sum of this and the specified Long.\r\n * @param {!Long|number|string} addend Addend\r\n * @returns {!Long} Sum\r\n * @expose\r\n */\r\n LongPrototype.add = function add(addend) {\r\n if (!Long.isLong(addend))\r\n addend = Long.fromValue(addend);\r\n\r\n // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = addend.high >>> 16;\r\n var b32 = addend.high & 0xFFFF;\r\n var b16 = addend.low >>> 16;\r\n var b00 = addend.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 + b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 + b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 + b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 + b48;\r\n c48 &= 0xFFFF;\r\n return new Long((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the difference of this and the specified Long.\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n * @expose\r\n */\r\n LongPrototype.subtract = function subtract(subtrahend) {\r\n if (!Long.isLong(subtrahend))\r\n subtrahend = Long.fromValue(subtrahend);\r\n return this.add(subtrahend.neg());\r\n };\r\n\r\n /**\r\n * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\r\n * @function\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n * @expose\r\n */\r\n LongPrototype.sub = LongPrototype.subtract;\r\n\r\n /**\r\n * Returns the product of this and the specified Long.\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n * @expose\r\n */\r\n LongPrototype.multiply = function multiply(multiplier) {\r\n if (this.isZero())\r\n return Long.ZERO;\r\n if (!Long.isLong(multiplier))\r\n multiplier = Long.fromValue(multiplier);\r\n if (multiplier.isZero())\r\n return Long.ZERO;\r\n if (this.eq(Long.MIN_VALUE))\r\n return multiplier.isOdd() ? Long.MIN_VALUE : Long.ZERO;\r\n if (multiplier.eq(Long.MIN_VALUE))\r\n return this.isOdd() ? Long.MIN_VALUE : Long.ZERO;\r\n\r\n if (this.isNegative()) {\r\n if (multiplier.isNegative())\r\n return this.neg().mul(multiplier.neg());\r\n else\r\n return this.neg().mul(multiplier).neg();\r\n } else if (multiplier.isNegative())\r\n return this.mul(multiplier.neg()).neg();\r\n\r\n // If both longs are small, use float multiplication\r\n if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24))\r\n return Long.fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);\r\n\r\n // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\r\n // We can skip products that would overflow.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = multiplier.high >>> 16;\r\n var b32 = multiplier.high & 0xFFFF;\r\n var b16 = multiplier.low >>> 16;\r\n var b00 = multiplier.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 * b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 * b00;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c16 += a00 * b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 * b00;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a16 * b16;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a00 * b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\r\n c48 &= 0xFFFF;\r\n return new Long((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\r\n * @function\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n * @expose\r\n */\r\n LongPrototype.mul = LongPrototype.multiply;\r\n\r\n /**\r\n * Returns this Long divided by the specified.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n * @expose\r\n */\r\n LongPrototype.divide = function divide(divisor) {\r\n if (!Long.isLong(divisor))\r\n divisor = Long.fromValue(divisor);\r\n if (divisor.isZero())\r\n throw Error('division by zero');\r\n if (this.isZero())\r\n return this.unsigned ? Long.UZERO : Long.ZERO;\r\n var approx, rem, res;\r\n if (this.eq(Long.MIN_VALUE)) {\r\n if (divisor.eq(Long.ONE) || divisor.eq(Long.NEG_ONE))\r\n return Long.MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE\r\n else if (divisor.eq(Long.MIN_VALUE))\r\n return Long.ONE;\r\n else {\r\n // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\r\n var halfThis = this.shr(1);\r\n approx = halfThis.div(divisor).shl(1);\r\n if (approx.eq(Long.ZERO)) {\r\n return divisor.isNegative() ? Long.ONE : Long.NEG_ONE;\r\n } else {\r\n rem = this.sub(divisor.mul(approx));\r\n res = approx.add(rem.div(divisor));\r\n return res;\r\n }\r\n }\r\n } else if (divisor.eq(Long.MIN_VALUE))\r\n return this.unsigned ? Long.UZERO : Long.ZERO;\r\n if (this.isNegative()) {\r\n if (divisor.isNegative())\r\n return this.neg().div(divisor.neg());\r\n return this.neg().div(divisor).neg();\r\n } else if (divisor.isNegative())\r\n return this.div(divisor.neg()).neg();\r\n\r\n // Repeat the following until the remainder is less than other: find a\r\n // floating-point that approximates remainder / other *from below*, add this\r\n // into the result, and subtract it from the remainder. It is critical that\r\n // the approximate value is less than or equal to the real value so that the\r\n // remainder never becomes negative.\r\n res = Long.ZERO;\r\n rem = this;\r\n while (rem.gte(divisor)) {\r\n // Approximate the result of division. This may be a little greater or\r\n // smaller than the actual value.\r\n approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));\r\n\r\n // We will tweak the approximate result by changing it in the 48-th digit or\r\n // the smallest non-fractional digit, whichever is larger.\r\n var log2 = Math.ceil(Math.log(approx) / Math.LN2),\r\n delta = (log2 <= 48) ? 1 : Math.pow(2, log2 - 48),\r\n\r\n // Decrease the approximation until it is smaller than the remainder. Note\r\n // that if it is too large, the product overflows and is negative.\r\n approxRes = Long.fromNumber(approx),\r\n approxRem = approxRes.mul(divisor);\r\n while (approxRem.isNegative() || approxRem.gt(rem)) {\r\n approx -= delta;\r\n approxRes = Long.fromNumber(approx, this.unsigned);\r\n approxRem = approxRes.mul(divisor);\r\n }\r\n\r\n // We know the answer can't be zero... and actually, zero would cause\r\n // infinite recursion since we would make no progress.\r\n if (approxRes.isZero())\r\n approxRes = Long.ONE;\r\n\r\n res = res.add(approxRes);\r\n rem = rem.sub(approxRem);\r\n }\r\n return res;\r\n };\r\n\r\n /**\r\n * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n * @expose\r\n */\r\n LongPrototype.div = LongPrototype.divide;\r\n\r\n /**\r\n * Returns this Long modulo the specified.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n * @expose\r\n */\r\n LongPrototype.modulo = function modulo(divisor) {\r\n if (!Long.isLong(divisor))\r\n divisor = Long.fromValue(divisor);\r\n return this.sub(this.div(divisor).mul(divisor));\r\n };\r\n\r\n /**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n * @expose\r\n */\r\n LongPrototype.mod = LongPrototype.modulo;\r\n\r\n /**\r\n * Returns the bitwise NOT of this Long.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n LongPrototype.not = function not() {\r\n return new Long(~this.low, ~this.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the bitwise AND of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n LongPrototype.and = function and(other) {\r\n if (!Long.isLong(other))\r\n other = Long.fromValue(other);\r\n return new Long(this.low & other.low, this.high & other.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the bitwise OR of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n LongPrototype.or = function or(other) {\r\n if (!Long.isLong(other))\r\n other = Long.fromValue(other);\r\n return new Long(this.low | other.low, this.high | other.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the bitwise XOR of this Long and the given one.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n LongPrototype.xor = function xor(other) {\r\n if (!Long.isLong(other))\r\n other = Long.fromValue(other);\r\n return new Long(this.low ^ other.low, this.high ^ other.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns this Long with bits shifted to the left by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n * @expose\r\n */\r\n LongPrototype.shiftLeft = function shiftLeft(numBits) {\r\n if (Long.isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return new Long(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned);\r\n else\r\n return new Long(0, this.low << (numBits - 32), this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n * @expose\r\n */\r\n LongPrototype.shl = LongPrototype.shiftLeft;\r\n\r\n /**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n * @expose\r\n */\r\n LongPrototype.shiftRight = function shiftRight(numBits) {\r\n if (Long.isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return new Long((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned);\r\n else\r\n return new Long(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n * @expose\r\n */\r\n LongPrototype.shr = LongPrototype.shiftRight;\r\n\r\n /**\r\n * Returns this Long with bits logically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n * @expose\r\n */\r\n LongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {\r\n if (Long.isLong(numBits))\r\n numBits = numBits.toInt();\r\n numBits &= 63;\r\n if (numBits === 0)\r\n return this;\r\n else {\r\n var high = this.high;\r\n if (numBits < 32) {\r\n var low = this.low;\r\n return new Long((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned);\r\n } else if (numBits === 32)\r\n return new Long(high, 0, this.unsigned);\r\n else\r\n return new Long(high >>> (numBits - 32), 0, this.unsigned);\r\n }\r\n };\r\n\r\n /**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n * @expose\r\n */\r\n LongPrototype.shru = LongPrototype.shiftRightUnsigned;\r\n\r\n /**\r\n * Converts this Long to signed.\r\n * @returns {!Long} Signed long\r\n * @expose\r\n */\r\n LongPrototype.toSigned = function toSigned() {\r\n if (!this.unsigned)\r\n return this;\r\n return new Long(this.low, this.high, false);\r\n };\r\n\r\n /**\r\n * Converts this Long to unsigned.\r\n * @returns {!Long} Unsigned long\r\n * @expose\r\n */\r\n LongPrototype.toUnsigned = function toUnsigned() {\r\n if (this.unsigned)\r\n return this;\r\n return new Long(this.low, this.high, true);\r\n };\r\n\r\n return Long;\r\n});\r\n"]} \ No newline at end of file +{"version":3,"sources":["node_modules/browserify/node_modules/browser-pack/_prelude.js","build/js/protoexport.js","build/js/machinetalk/protobuf/emcclass.js","build/js/machinetalk/protobuf/config.js","build/js/machinetalk/protobuf/firmware.js","build/js/machinetalk/protobuf/nanopb.js","build/js/machinetalk/protobuf/preview.js","build/js/machinetalk/protobuf/motcmds.js","build/js/machinetalk/protobuf/test.js","build/js/machinetalk/protobuf/rtapicommand.js","build/js/machinetalk/protobuf/canon.js","build/js/machinetalk/protobuf/log.js","build/js/machinetalk/protobuf/object.js","build/js/machinetalk/protobuf/task.js","build/js/machinetalk/protobuf/types.js","build/js/machinetalk/protobuf/value.js","build/js/machinetalk/protobuf/rtapi_message.js","build/js/machinetalk/protobuf/status.js","build/js/machinetalk/protobuf/message.js","node_modules/protobufjs/dist/protobuf.js","node_modules/browserify/node_modules/process/browser.js","node_modules/protobufjs/node_modules/bytebuffer/dist/bytebuffer.js","node_modules/protobufjs/node_modules/bytebuffer/node_modules/long/dist/long.js"],"names":["module","exports","require","pb","newBuilder","package","options","java_package","messages","name","fields","rule","type","id","default","(nanopb_msgopt).msgid","enums","values","build","(nanopb).max_size","(nanopb).max_count","(nanopb).type","global","factory","define","this","ByteBuffer","isCommonJS","ProtoBuf","Long","VERSION","WIRE_TYPES","VARINT","BITS64","LDELIM","STARTGROUP","ENDGROUP","BITS32","PACKABLE_WIRE_TYPES","TYPES","int32","wireType","defaultValue","uint32","sint32","int64","ZERO","undefined","uint64","UZERO","sint64","bool","double","string","bytes","fixed32","sfixed32","fixed64","sfixed64","float","enum","message","group","MAP_KEY_TYPES","ID_MIN","ID_MAX","convertFieldsToCamelCase","populateAccessors","populateDefaults","Util","IS_NODE","process","XHR","XMLHttpFactories","XMLHttpRequest","ActiveXObject","xhr","i","length","e","Error","fetch","path","callback","fs","readFile","err","data","readFileSync","open","setRequestHeader","overrideMimeType","send","status","responseText","onreadystatechange","readyState","toCamelCase","str","replace","$0","$1","toUpperCase","Lang","DELIM","RULE","TYPE","NAME","TYPEDEF","TYPEREF","FQTYPEREF","NUMBER","NUMBER_DEC","NUMBER_HEX","NUMBER_OCT","NUMBER_FLT","BOOL","ID","NEGID","WHITESPACE","STRING","STRING_DQ","STRING_SQ","DotProto","mkId","value","mayBeNegative","sign","charAt","substring","test","parseInt","mkNumber","val","Infinity","NaN","parseFloat","setOption","Array","isArray","push","Tokenizer","proto","source","index","line","stack","_stringOpen","TokenizerPrototype","prototype","_readString","re","lastIndex","match","exec","next","shift","repeat","prev","end","delim","token","peek","skip","expected","actual","omit","toString","Parser","tn","proto3","ParserPrototype","parse","topLevel","imports","services","head","_parseMessage","_parseEnum","_parseOption","_parseService","_parseExtend","_readValue","mayBeTypeRef","toLowerCase","parent","isList","custom","_parseOptionValue","svc","rpc","_parseServiceRPC","method","request","response","request_stream","response_stream","fld","isGroup","msg","oneofs","_parseFieldOptions","_parseMessageField","_parseMessageOneOf","_parseExtensions","_parseMessageReserved","grp","first","enm","range","ext","ref","Reflect","mkDefault","mkLong","unsigned","low","high","fromString","fromNumber","skipTillGroupEnd","expectedId","buf","tag","readVarint32","readUint8","offset","T","builder","className","TPrototype","fqn","ptr","includeClass","Namespace","syntax","call","children","NamespacePrototype","Object","create","getChildren","slice","k","addChild","child","other","getChild","Message","Field","originalName","nameOrId","key","resolve","qn","excludeNonNamespace","part","split","t","unshift","len","join","ns","defineProperty","buildOpt","opt","keys","getOption","Element","resolvedType","isMapKey","indexOf","ElementPrototype","defaultFieldValue","verifyValue","fail","bind","String","isByteBuffer","wrap","Enum","Value","clazz","Builder","obj","hasOwnProperty","calculateLength","n","calculateVarint64","calculateVarint32","zigZagEncode32","zigZagEncode64","calculateUTF8Bytes","remaining","calculate","encodeValue","buffer","writeVarint64","writeVarint32","writeVarint32ZigZag","writeUint32","writeInt32","writeVarint64ZigZag","writeUint64","writeInt64","writeFloat32","writeFloat64","writeVString","prevOffset","append","bb","LE","encode","flip","decode","nBytes","readVarint32ZigZag","readUint32","readInt32","readVarint64","toUnsigned","readVarint64ZigZag","readUint64","readInt64","readFloat","readDouble","readVString","clone","limit","valueFromString","fromBinary","valueToString","extensions","_fields","_fieldsById","_fieldsByName","MessagePrototype","rebuild","cloneRaw","binaryAsBase64","longsAsStrings","getName","object","toBase64","toBuffer","isLong","fromValue","forEach","v","Map","it","entries","done","keyElem","valueElem","$type","field","OneOf","var_args","repeated","map","required","arguments","ArrayBuffer","$set","add","noAssert","$add","set","keyOrObj","ikey","oneof","currentField","get","$get","ExtensionField","Name","setter","getter","noVerify","isNew","le","littleEndian","encodeDelimited","enc","encodeAB","toArrayBuffer","encodeNB","encode64","encodeHex","toHex","toRaw","encodeJSON","JSON","stringify","decodeDelimited","off","decode64","decodeHex","decodeJSON","Service","Extension","fieldMissing","expectedGroupEndId","start","keyval","keytype","keyType","element","keyElement","FieldPrototype","skipRepeated","res","hasWirePresence","ensureCapacity","varintLen","contents","m","ni","wireTypeOK","msgbuf","extension","EnumPrototype","enumerable","root","ServicePrototype","rpcImpl","setTimeout","RPCMethod","req","resolvedRequestType","TypeError","resolvedResponseType","notABuffer","Method","MethodPrototype","requestName","responseName","requestStream","responseStream","propagateSyntax","resolved","result","files","importRoot","BuilderPrototype","isMessage","def","isMessageField","isEnum","isService","isExtend","reset","namespace","defs","pop","subObj","mtd","json","filename","file","fname","resetRoot","importFilename","$2","base","resolveAll","lookup","arrayIterator","arr","idx","MapPrototype","clear","keyValue","hadKey","entry","strKeys","cb","thisArg","valValue","has","loadProto","loadJson","protoFromString","loadProtoFile","protoFromFile","loadJsonFile","cleanUpNextTick","draining","currentQueue","queue","concat","queueIndex","drainQueue","timeout","run","clearTimeout","Item","fun","array","noop","nextTick","args","apply","title","browser","env","argv","version","versions","on","addListener","once","removeListener","removeAllListeners","emit","binding","cwd","chdir","dir","umask","stringSource","s","charCodeAt","stringDestination","cs","ps","stringFromCharCode","ieee754_read","isLE","mLen","eLen","eMax","eBias","nBits","d","Math","pow","ieee754_write","c","rt","abs","isNaN","floor","log","LN2","capacity","DEFAULT_CAPACITY","DEFAULT_ENDIAN","DEFAULT_NOASSERT","RangeError","EMPTY_BUFFER","view","Uint8Array","markedOffset","LITTLE_ENDIAN","BIG_ENDIAN","ByteBufferPrototype","__isByteBuffer__","configurable","fromCharCode","accessor","allocate","buffers","encoding","bi","subarray","fromBase64","fromHex","fromUTF8","fromDebug","byteOffset","byteLength","readBytes","relative","writeBytes","writeInt8","capacity0","resize","writeByte","readInt8","readByte","writeUint8","capacity1","writeUInt8","readUInt8","writeInt16","capacity2","writeShort","readInt16","readShort","writeUint16","capacity3","writeUInt16","readUint16","readUInt16","capacity4","writeInt","readInt","capacity5","writeUInt32","readUInt32","capacity6","lo","hi","writeLong","readLong","capacity7","writeUInt64","readUInt64","capacity8","writeFloat","readFloat32","capacity9","writeDouble","readFloat64","MAX_VARINT32_BYTES","zigZagDecode32","b","size","capacity10","MAX_VARINT64_BYTES","part0","toInt","part1","shiftRightUnsigned","part2","toSigned","shiftLeft","xor","shiftRight","zigZagDecode64","and","ONE","negate","capacity11","fromBits","writeCString","utfx","calculateUTF16asUTF8","capacity12","encodeUTF16toUTF8","readCString","sd","decodeUTF8toUTF16","writeIString","capacity13","readIString","readUTF8String","METRICS_BYTES","METRICS_CHARS","writeUTF8String","capacity14","writeString","calculateUTF8Chars","calculateString","metrics","decodeUTF8","cp","UTF8toUTF16","readString","l","capacity15","capacity16","appendTo","target","assert","copy","compact","begin","copyTo","targetOffset","sourceOffset","sourceLimit","targetRelative","current","fill","mark","order","BE","bigEndian","prepend","diff","prependTo","printDebug","out","console","toDebug","reverse","forceCopy","toUTF8","toBinary","toColumns","lxiv","aout","ain","src","dst","t1","t2","btoa","atob","b64","chars","parts","charCode","columns","hex","asc","ch","j","rs","ho","hm","hl","isFinite","MAX_CODEPOINT","encodeUTF8","a","UTF16toUTF8","c1","c2","calculateCodePoint","calculateUTF8","fromInt","cachedObj","cache","UINT_CACHE","INT_CACHE","TWO_PWR_64_DBL","MAX_UNSIGNED_VALUE","TWO_PWR_63_DBL","MIN_VALUE","MAX_VALUE","neg","TWO_PWR_32_DBL","lowBits","highBits","radix","p","radixToPower","pow_dbl","min","power","mul","__isLong__","TWO_PWR_16_DBL","TWO_PWR_24_DBL","TWO_PWR_24","UONE","NEG_ONE","LongPrototype","toNumber","isZero","isNegative","eq","radixLong","div","rem1","sub","rem","remDiv","intval","digits","getHighBits","getHighBitsUnsigned","getLowBits","getLowBitsUnsigned","getNumBitsAbs","bit","isPositive","isOdd","isEven","equals","notEquals","neq","lessThan","comp","lt","lessThanOrEqual","lte","greaterThan","gt","greaterThanOrEqual","gte","compare","thisNeg","otherNeg","not","addend","a48","a32","a16","a00","b48","b32","b16","b00","c48","c32","c16","c00","subtract","subtrahend","multiply","multiplier","divide","divisor","approx","halfThis","shr","shl","max","log2","ceil","delta","approxRes","approxRem","modulo","mod","or","numBits","shru"],"mappings":"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","file":"bundle.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n */\r\n\r\n/**\r\n * @license protobuf.js (c) 2013 Daniel Wirtz \r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/protobuf.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (typeof define === 'function' && define[\"amd\"])\r\n define([\"bytebuffer\"], factory);\r\n /* CommonJS */ else if (typeof require === \"function\" && typeof module === \"object\" && module && module[\"exports\"])\r\n module[\"exports\"] = factory(require(\"bytebuffer\"), true);\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"ProtoBuf\"] = factory(global[\"dcodeIO\"][\"ByteBuffer\"]);\r\n\r\n})(this, function(ByteBuffer, isCommonJS) {\r\n \"use strict\";\r\n\r\n /**\r\n * The ProtoBuf namespace.\r\n * @exports ProtoBuf\r\n * @namespace\r\n * @expose\r\n */\r\n var ProtoBuf = {};\r\n\r\n /**\r\n * @type {!function(new: ByteBuffer, ...[*])}\r\n * @expose\r\n */\r\n ProtoBuf.ByteBuffer = ByteBuffer;\r\n\r\n /**\r\n * @type {?function(new: Long, ...[*])}\r\n * @expose\r\n */\r\n ProtoBuf.Long = ByteBuffer.Long || null;\r\n\r\n /**\r\n * ProtoBuf.js version.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.VERSION = \"5.0.0\";\r\n\r\n /**\r\n * Wire types.\r\n * @type {Object.}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES = {};\r\n\r\n /**\r\n * Varint wire type.\r\n * @type {number}\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.VARINT = 0;\r\n\r\n /**\r\n * Fixed 64 bits wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.BITS64 = 1;\r\n\r\n /**\r\n * Length delimited wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.LDELIM = 2;\r\n\r\n /**\r\n * Start group wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.STARTGROUP = 3;\r\n\r\n /**\r\n * End group wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.ENDGROUP = 4;\r\n\r\n /**\r\n * Fixed 32 bits wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.BITS32 = 5;\r\n\r\n /**\r\n * Packable wire types.\r\n * @type {!Array.}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.PACKABLE_WIRE_TYPES = [\r\n ProtoBuf.WIRE_TYPES.VARINT,\r\n ProtoBuf.WIRE_TYPES.BITS64,\r\n ProtoBuf.WIRE_TYPES.BITS32\r\n ];\r\n\r\n /**\r\n * Types.\r\n * @dict\r\n * @type {!Object.}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.TYPES = {\r\n // According to the protobuf spec.\r\n \"int32\": {\r\n name: \"int32\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: 0\r\n },\r\n \"uint32\": {\r\n name: \"uint32\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: 0\r\n },\r\n \"sint32\": {\r\n name: \"sint32\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: 0\r\n },\r\n \"int64\": {\r\n name: \"int64\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.ZERO : undefined\r\n },\r\n \"uint64\": {\r\n name: \"uint64\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.UZERO : undefined\r\n },\r\n \"sint64\": {\r\n name: \"sint64\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.ZERO : undefined\r\n },\r\n \"bool\": {\r\n name: \"bool\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: false\r\n },\r\n \"double\": {\r\n name: \"double\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS64,\r\n defaultValue: 0\r\n },\r\n \"string\": {\r\n name: \"string\",\r\n wireType: ProtoBuf.WIRE_TYPES.LDELIM,\r\n defaultValue: \"\"\r\n },\r\n \"bytes\": {\r\n name: \"bytes\",\r\n wireType: ProtoBuf.WIRE_TYPES.LDELIM,\r\n defaultValue: null // overridden in the code, must be a unique instance\r\n },\r\n \"fixed32\": {\r\n name: \"fixed32\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS32,\r\n defaultValue: 0\r\n },\r\n \"sfixed32\": {\r\n name: \"sfixed32\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS32,\r\n defaultValue: 0\r\n },\r\n \"fixed64\": {\r\n name: \"fixed64\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS64,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.UZERO : undefined\r\n },\r\n \"sfixed64\": {\r\n name: \"sfixed64\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS64,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.ZERO : undefined\r\n },\r\n \"float\": {\r\n name: \"float\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS32,\r\n defaultValue: 0\r\n },\r\n \"enum\": {\r\n name: \"enum\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: 0\r\n },\r\n \"message\": {\r\n name: \"message\",\r\n wireType: ProtoBuf.WIRE_TYPES.LDELIM,\r\n defaultValue: null\r\n },\r\n \"group\": {\r\n name: \"group\",\r\n wireType: ProtoBuf.WIRE_TYPES.STARTGROUP,\r\n defaultValue: null\r\n }\r\n };\r\n\r\n /**\r\n * Valid map key types.\r\n * @type {!Array.>}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.MAP_KEY_TYPES = [\r\n ProtoBuf.TYPES[\"int32\"],\r\n ProtoBuf.TYPES[\"sint32\"],\r\n ProtoBuf.TYPES[\"sfixed32\"],\r\n ProtoBuf.TYPES[\"uint32\"],\r\n ProtoBuf.TYPES[\"fixed32\"],\r\n ProtoBuf.TYPES[\"int64\"],\r\n ProtoBuf.TYPES[\"sint64\"],\r\n ProtoBuf.TYPES[\"sfixed64\"],\r\n ProtoBuf.TYPES[\"uint64\"],\r\n ProtoBuf.TYPES[\"fixed64\"],\r\n ProtoBuf.TYPES[\"bool\"],\r\n ProtoBuf.TYPES[\"string\"],\r\n ProtoBuf.TYPES[\"bytes\"]\r\n ];\r\n\r\n /**\r\n * Minimum field id.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.ID_MIN = 1;\r\n\r\n /**\r\n * Maximum field id.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.ID_MAX = 0x1FFFFFFF;\r\n\r\n /**\r\n * If set to `true`, field names will be converted from underscore notation to camel case. Defaults to `false`.\r\n * Must be set prior to parsing.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ProtoBuf.convertFieldsToCamelCase = false;\r\n\r\n /**\r\n * By default, messages are populated with (setX, set_x) accessors for each field. This can be disabled by\r\n * setting this to `false` prior to building messages.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ProtoBuf.populateAccessors = true;\r\n\r\n /**\r\n * By default, messages are populated with default values if a field is not present on the wire. To disable\r\n * this behavior, set this setting to `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ProtoBuf.populateDefaults = true;\r\n\r\n /**\n * @alias ProtoBuf.Util\n * @expose\n */\n ProtoBuf.Util = (function() {\n \"use strict\";\n\n /**\n * ProtoBuf utilities.\n * @exports ProtoBuf.Util\n * @namespace\n */\n var Util = {};\n\n /**\n * Flag if running in node or not.\n * @type {boolean}\n * @const\n * @expose\n */\n Util.IS_NODE = !!(\n typeof process === 'object' && process+'' === '[object process]' && !process['browser']\n );\n\n /**\n * Constructs a XMLHttpRequest object.\n * @return {XMLHttpRequest}\n * @throws {Error} If XMLHttpRequest is not supported\n * @expose\n */\n Util.XHR = function() {\n // No dependencies please, ref: http://www.quirksmode.org/js/xmlhttp.html\n var XMLHttpFactories = [\n function () {return new XMLHttpRequest()},\n function () {return new ActiveXObject(\"Msxml2.XMLHTTP\")},\n function () {return new ActiveXObject(\"Msxml3.XMLHTTP\")},\n function () {return new ActiveXObject(\"Microsoft.XMLHTTP\")}\n ];\n /** @type {?XMLHttpRequest} */\n var xhr = null;\n for (var i=0;i}\r\n * @expose\r\n */\r\n ProtoBuf.Lang = {\r\n\r\n // Characters always ending a statement\r\n DELIM: /[\\s\\{\\}=;:\\[\\],'\"\\(\\)<>]/g,\r\n\r\n // Field rules\r\n RULE: /^(?:required|optional|repeated|map)$/,\r\n\r\n // Field types\r\n TYPE: /^(?:double|float|int32|uint32|sint32|int64|uint64|sint64|fixed32|sfixed32|fixed64|sfixed64|bool|string|bytes)$/,\r\n\r\n // Names\r\n NAME: /^[a-zA-Z_][a-zA-Z_0-9]*$/,\r\n\r\n // Type definitions\r\n TYPEDEF: /^[a-zA-Z][a-zA-Z_0-9]*$/,\r\n\r\n // Type references\r\n TYPEREF: /^(?:\\.?[a-zA-Z_][a-zA-Z_0-9]*)+$/,\r\n\r\n // Fully qualified type references\r\n FQTYPEREF: /^(?:\\.[a-zA-Z][a-zA-Z_0-9]*)+$/,\r\n\r\n // All numbers\r\n NUMBER: /^-?(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+|([0-9]*(\\.[0-9]*)?([Ee][+-]?[0-9]+)?)|inf|nan)$/,\r\n\r\n // Decimal numbers\r\n NUMBER_DEC: /^(?:[1-9][0-9]*|0)$/,\r\n\r\n // Hexadecimal numbers\r\n NUMBER_HEX: /^0[xX][0-9a-fA-F]+$/,\r\n\r\n // Octal numbers\r\n NUMBER_OCT: /^0[0-7]+$/,\r\n\r\n // Floating point numbers\r\n NUMBER_FLT: /^([0-9]*(\\.[0-9]*)?([Ee][+-]?[0-9]+)?|inf|nan)$/,\r\n\r\n // Booleans\r\n BOOL: /^(?:true|false)$/i,\r\n\r\n // Id numbers\r\n ID: /^(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+)$/,\r\n\r\n // Negative id numbers (enum values)\r\n NEGID: /^\\-?(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+)$/,\r\n\r\n // Whitespaces\r\n WHITESPACE: /\\s/,\r\n\r\n // All strings\r\n STRING: /(?:\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\")|(?:'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)')/g,\r\n\r\n // Double quoted strings\r\n STRING_DQ: /(?:\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\")/g,\r\n\r\n // Single quoted strings\r\n STRING_SQ: /(?:'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)')/g\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.DotProto\r\n * @expose\r\n */\r\n ProtoBuf.DotProto = (function(ProtoBuf, Lang) {\r\n \"use strict\";\r\n\r\n /**\r\n * Utilities to parse .proto files.\r\n * @exports ProtoBuf.DotProto\r\n * @namespace\r\n */\r\n var DotProto = {};\r\n\r\n /**\r\n * Constructs a new Tokenizer.\r\n * @exports ProtoBuf.DotProto.Tokenizer\r\n * @class prototype tokenizer\r\n * @param {string} proto Proto to tokenize\r\n * @constructor\r\n */\r\n var Tokenizer = function(proto) {\r\n\r\n /**\r\n * Source to parse.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.source = proto+\"\";\r\n\r\n /**\r\n * Current index.\r\n * @type {number}\r\n * @expose\r\n */\r\n this.index = 0;\r\n\r\n /**\r\n * Current line.\r\n * @type {number}\r\n * @expose\r\n */\r\n this.line = 1;\r\n\r\n /**\r\n * Token stack.\r\n * @type {!Array.}\r\n * @expose\r\n */\r\n this.stack = [];\r\n\r\n /**\r\n * Opening character of the current string read, if any.\r\n * @type {?string}\r\n * @private\r\n */\r\n this._stringOpen = null;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.DotProto.Tokenizer.prototype\r\n * @inner\r\n */\r\n var TokenizerPrototype = Tokenizer.prototype;\r\n\r\n /**\r\n * Reads a string beginning at the current index.\r\n * @return {string}\r\n * @private\r\n */\r\n TokenizerPrototype._readString = function() {\r\n var re = this._stringOpen === '\"'\r\n ? Lang.STRING_DQ\r\n : Lang.STRING_SQ;\r\n re.lastIndex = this.index - 1; // Include the open quote\r\n var match = re.exec(this.source);\r\n if (!match)\r\n throw Error(\"unterminated string\");\r\n this.index = re.lastIndex;\r\n this.stack.push(this._stringOpen);\r\n this._stringOpen = null;\r\n return match[1];\r\n };\r\n\r\n /**\r\n * Gets the next token and advances by one.\r\n * @return {?string} Token or `null` on EOF\r\n * @expose\r\n */\r\n TokenizerPrototype.next = function() {\r\n if (this.stack.length > 0)\r\n return this.stack.shift();\r\n if (this.index >= this.source.length)\r\n return null;\r\n if (this._stringOpen !== null)\r\n return this._readString();\r\n\r\n var repeat,\r\n prev,\r\n next;\r\n do {\r\n repeat = false;\r\n\r\n // Strip white spaces\r\n while (Lang.WHITESPACE.test(next = this.source.charAt(this.index))) {\r\n if (next === '\\n')\r\n ++this.line;\r\n if (++this.index === this.source.length)\r\n return null;\r\n }\r\n\r\n // Strip comments\r\n if (this.source.charAt(this.index) === '/') {\r\n ++this.index;\r\n if (this.source.charAt(this.index) === '/') { // Line\r\n while (this.source.charAt(++this.index) !== '\\n')\r\n if (this.index == this.source.length)\r\n return null;\r\n ++this.index;\r\n ++this.line;\r\n repeat = true;\r\n } else if ((next = this.source.charAt(this.index)) === '*') { /* Block */\r\n do {\r\n if (next === '\\n')\r\n ++this.line;\r\n if (++this.index === this.source.length)\r\n return null;\r\n prev = next;\r\n next = this.source.charAt(this.index);\r\n } while (prev !== '*' || next !== '/');\r\n ++this.index;\r\n repeat = true;\r\n } else\r\n return '/';\r\n }\r\n } while (repeat);\r\n\r\n if (this.index === this.source.length)\r\n return null;\r\n\r\n // Read the next token\r\n var end = this.index;\r\n Lang.DELIM.lastIndex = 0;\r\n var delim = Lang.DELIM.test(this.source.charAt(end++));\r\n if (!delim)\r\n while(end < this.source.length && !Lang.DELIM.test(this.source.charAt(end)))\r\n ++end;\r\n var token = this.source.substring(this.index, this.index = end);\r\n if (token === '\"' || token === \"'\")\r\n this._stringOpen = token;\r\n return token;\r\n };\r\n\r\n /**\r\n * Peeks for the next token.\r\n * @return {?string} Token or `null` on EOF\r\n * @expose\r\n */\r\n TokenizerPrototype.peek = function() {\r\n if (this.stack.length === 0) {\r\n var token = this.next();\r\n if (token === null)\r\n return null;\r\n this.stack.push(token);\r\n }\r\n return this.stack[0];\r\n };\r\n\r\n /**\r\n * Skips a specific token and throws if it differs.\r\n * @param {string} expected Expected token\r\n * @throws {Error} If the actual token differs\r\n */\r\n TokenizerPrototype.skip = function(expected) {\r\n var actual = this.next();\r\n if (actual !== expected)\r\n throw Error(\"illegal '\"+actual+\"', '\"+expected+\"' expected\");\r\n };\r\n\r\n /**\r\n * Omits an optional token.\r\n * @param {string} expected Expected optional token\r\n * @returns {boolean} `true` if the token exists\r\n */\r\n TokenizerPrototype.omit = function(expected) {\r\n if (this.peek() === expected) {\r\n this.next();\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n /**\r\n * Returns a string representation of this object.\r\n * @return {string} String representation as of \"Tokenizer(index/length)\"\r\n * @expose\r\n */\r\n TokenizerPrototype.toString = function() {\r\n return \"Tokenizer (\"+this.index+\"/\"+this.source.length+\" at line \"+this.line+\")\";\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.DotProto.Tokenizer\r\n * @expose\r\n */\r\n DotProto.Tokenizer = Tokenizer;\r\n\r\n /**\r\n * Constructs a new Parser.\r\n * @exports ProtoBuf.DotProto.Parser\r\n * @class prototype parser\r\n * @param {string} source Source\r\n * @constructor\r\n */\r\n var Parser = function(source) {\r\n\r\n /**\r\n * Tokenizer.\r\n * @type {!ProtoBuf.DotProto.Tokenizer}\r\n * @expose\r\n */\r\n this.tn = new Tokenizer(source);\r\n\r\n /**\r\n * Whether parsing proto3 or not.\r\n * @type {boolean}\r\n */\r\n this.proto3 = false;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.DotProto.Parser.prototype\r\n * @inner\r\n */\r\n var ParserPrototype = Parser.prototype;\r\n\r\n /**\r\n * Parses the source.\r\n * @returns {!Object}\r\n * @throws {Error} If the source cannot be parsed\r\n * @expose\r\n */\r\n ParserPrototype.parse = function() {\r\n var topLevel = {\r\n \"name\": \"[ROOT]\", // temporary\r\n \"package\": null,\r\n \"messages\": [],\r\n \"enums\": [],\r\n \"imports\": [],\r\n \"options\": {},\r\n \"services\": []\r\n // \"syntax\": undefined\r\n };\r\n var token,\r\n head = true;\r\n try {\r\n while (token = this.tn.next()) {\r\n switch (token) {\r\n case 'package':\r\n if (!head || topLevel[\"package\"] !== null)\r\n throw Error(\"unexpected 'package'\");\r\n token = this.tn.next();\r\n if (!Lang.TYPEREF.test(token))\r\n throw Error(\"illegal package name: \" + token);\r\n this.tn.skip(\";\");\r\n topLevel[\"package\"] = token;\r\n break;\r\n case 'import':\r\n if (!head)\r\n throw Error(\"unexpected 'import'\");\r\n token = this.tn.peek();\r\n if (token === \"public\") // ignored\r\n this.tn.next();\r\n token = this._readString();\r\n this.tn.skip(\";\");\r\n topLevel[\"imports\"].push(token);\r\n break;\r\n case 'syntax':\r\n if (!head)\r\n throw Error(\"unexpected 'syntax'\");\r\n this.tn.skip(\"=\");\r\n if ((topLevel[\"syntax\"] = this._readString()) === \"proto3\")\r\n this.proto3 = true;\r\n this.tn.skip(\";\");\r\n break;\r\n case 'message':\r\n this._parseMessage(topLevel, null);\r\n head = false;\r\n break;\r\n case 'enum':\r\n this._parseEnum(topLevel);\r\n head = false;\r\n break;\r\n case 'option':\r\n this._parseOption(topLevel);\r\n break;\r\n case 'service':\r\n this._parseService(topLevel);\r\n break;\r\n case 'extend':\r\n this._parseExtend(topLevel);\r\n break;\r\n default:\r\n throw Error(\"unexpected '\" + token + \"'\");\r\n }\r\n }\r\n } catch (e) {\r\n e.message = \"Parse error at line \"+this.tn.line+\": \" + e.message;\r\n throw e;\r\n }\r\n delete topLevel[\"name\"];\r\n return topLevel;\r\n };\r\n\r\n /**\r\n * Parses the specified source.\r\n * @returns {!Object}\r\n * @throws {Error} If the source cannot be parsed\r\n * @expose\r\n */\r\n Parser.parse = function(source) {\r\n return new Parser(source).parse();\r\n };\r\n\r\n // ----- Conversion ------\r\n\r\n /**\r\n * Converts a numerical string to an id.\r\n * @param {string} value\r\n * @param {boolean=} mayBeNegative\r\n * @returns {number}\r\n * @inner\r\n */\r\n function mkId(value, mayBeNegative) {\r\n var id = -1,\r\n sign = 1;\r\n if (value.charAt(0) == '-') {\r\n sign = -1;\r\n value = value.substring(1);\r\n }\r\n if (Lang.NUMBER_DEC.test(value))\r\n id = parseInt(value);\r\n else if (Lang.NUMBER_HEX.test(value))\r\n id = parseInt(value.substring(2), 16);\r\n else if (Lang.NUMBER_OCT.test(value))\r\n id = parseInt(value.substring(1), 8);\r\n else\r\n throw Error(\"illegal id value: \" + (sign < 0 ? '-' : '') + value);\r\n id = (sign*id)|0; // Force to 32bit\r\n if (!mayBeNegative && id < 0)\r\n throw Error(\"illegal id value: \" + (sign < 0 ? '-' : '') + value);\r\n return id;\r\n }\r\n\r\n /**\r\n * Converts a numerical string to a number.\r\n * @param {string} val\r\n * @returns {number}\r\n * @inner\r\n */\r\n function mkNumber(val) {\r\n var sign = 1;\r\n if (val.charAt(0) == '-') {\r\n sign = -1;\r\n val = val.substring(1);\r\n }\r\n if (Lang.NUMBER_DEC.test(val))\r\n return sign * parseInt(val, 10);\r\n else if (Lang.NUMBER_HEX.test(val))\r\n return sign * parseInt(val.substring(2), 16);\r\n else if (Lang.NUMBER_OCT.test(val))\r\n return sign * parseInt(val.substring(1), 8);\r\n else if (val === 'inf')\r\n return sign * Infinity;\r\n else if (val === 'nan')\r\n return NaN;\r\n else if (Lang.NUMBER_FLT.test(val))\r\n return sign * parseFloat(val);\r\n throw Error(\"illegal number value: \" + (sign < 0 ? '-' : '') + val);\r\n }\r\n\r\n // ----- Reading ------\r\n\r\n /**\r\n * Reads a string.\r\n * @returns {string}\r\n * @private\r\n */\r\n ParserPrototype._readString = function() {\r\n var value = \"\",\r\n token,\r\n delim;\r\n do {\r\n delim = this.tn.next();\r\n if (delim !== \"'\" && delim !== '\"')\r\n throw Error(\"illegal string delimiter: \"+delim);\r\n value += this.tn.next();\r\n this.tn.skip(delim);\r\n token = this.tn.peek();\r\n } while (token === '\"' || token === '\"'); // multi line?\r\n return value;\r\n };\r\n\r\n /**\r\n * Reads a value.\r\n * @param {boolean=} mayBeTypeRef\r\n * @returns {number|boolean|string}\r\n * @private\r\n */\r\n ParserPrototype._readValue = function(mayBeTypeRef) {\r\n var token = this.tn.peek(),\r\n value;\r\n if (token === '\"' || token === \"'\")\r\n return this._readString();\r\n this.tn.next();\r\n if (Lang.NUMBER.test(token))\r\n return mkNumber(token);\r\n if (Lang.BOOL.test(token))\r\n return (token.toLowerCase() === 'true');\r\n if (mayBeTypeRef && Lang.TYPEREF.test(token))\r\n return token;\r\n throw Error(\"illegal value: \"+token);\r\n\r\n };\r\n\r\n // ----- Parsing constructs -----\r\n\r\n /**\r\n * Parses a namespace option.\r\n * @param {!Object} parent Parent definition\r\n * @param {boolean=} isList\r\n * @private\r\n */\r\n ParserPrototype._parseOption = function(parent, isList) {\r\n var token = this.tn.next(),\r\n custom = false;\r\n if (token === '(') {\r\n custom = true;\r\n token = this.tn.next();\r\n }\r\n if (!Lang.TYPEREF.test(token))\r\n // we can allow options of the form google.protobuf.* since they will just get ignored anyways\r\n // if (!/google\\.protobuf\\./.test(token)) // FIXME: Why should that not be a valid typeref?\r\n throw Error(\"illegal option name: \"+token);\r\n var name = token;\r\n if (custom) { // (my_method_option).foo, (my_method_option), some_method_option, (foo.my_option).bar\r\n this.tn.skip(')');\r\n name = '('+name+')';\r\n token = this.tn.peek();\r\n if (Lang.FQTYPEREF.test(token)) {\r\n name += token;\r\n this.tn.next();\r\n }\r\n }\r\n this.tn.skip('=');\r\n this._parseOptionValue(parent, name);\r\n if (!isList)\r\n this.tn.skip(\";\");\r\n };\r\n\r\n /**\r\n * Sets an option on the specified options object.\r\n * @param {!Object.} options\r\n * @param {string} name\r\n * @param {string|number|boolean} value\r\n * @inner\r\n */\r\n function setOption(options, name, value) {\r\n if (typeof options[name] === 'undefined')\r\n options[name] = value;\r\n else {\r\n if (!Array.isArray(options[name]))\r\n options[name] = [ options[name] ];\r\n options[name].push(value);\r\n }\r\n }\r\n\r\n /**\r\n * Parses an option value.\r\n * @param {!Object} parent\r\n * @param {string} name\r\n * @private\r\n */\r\n ParserPrototype._parseOptionValue = function(parent, name) {\r\n var token = this.tn.peek();\r\n if (token !== '{') { // Plain value\r\n setOption(parent[\"options\"], name, this._readValue(true));\r\n } else { // Aggregate options\r\n this.tn.skip(\"{\");\r\n while ((token = this.tn.next()) !== '}') {\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal option name: \" + name + \".\" + token);\r\n if (this.tn.omit(\":\"))\r\n setOption(parent[\"options\"], name + \".\" + token, this._readValue(true));\r\n else\r\n this._parseOptionValue(parent, name + \".\" + token);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Parses a service definition.\r\n * @param {!Object} parent Parent definition\r\n * @private\r\n */\r\n ParserPrototype._parseService = function(parent) {\r\n var token = this.tn.next();\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal service name at line \"+this.tn.line+\": \"+token);\r\n var name = token;\r\n var svc = {\r\n \"name\": name,\r\n \"rpc\": {},\r\n \"options\": {}\r\n };\r\n this.tn.skip(\"{\");\r\n while ((token = this.tn.next()) !== '}') {\r\n if (token === \"option\")\r\n this._parseOption(svc);\r\n else if (token === 'rpc')\r\n this._parseServiceRPC(svc);\r\n else\r\n throw Error(\"illegal service token: \"+token);\r\n }\r\n this.tn.omit(\";\");\r\n parent[\"services\"].push(svc);\r\n };\r\n\r\n /**\r\n * Parses a RPC service definition of the form ['rpc', name, (request), 'returns', (response)].\r\n * @param {!Object} svc Service definition\r\n * @private\r\n */\r\n ParserPrototype._parseServiceRPC = function(svc) {\r\n var type = \"rpc\",\r\n token = this.tn.next();\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal rpc service method name: \"+token);\r\n var name = token;\r\n var method = {\r\n \"request\": null,\r\n \"response\": null,\r\n \"request_stream\": false,\r\n \"response_stream\": false,\r\n \"options\": {}\r\n };\r\n this.tn.skip(\"(\");\r\n token = this.tn.next();\r\n if (token.toLowerCase() === \"stream\") {\r\n method[\"request_stream\"] = true;\r\n token = this.tn.next();\r\n }\r\n if (!Lang.TYPEREF.test(token))\r\n throw Error(\"illegal rpc service request type: \"+token);\r\n method[\"request\"] = token;\r\n this.tn.skip(\")\");\r\n token = this.tn.next();\r\n if (token.toLowerCase() !== \"returns\")\r\n throw Error(\"illegal rpc service request type delimiter: \"+token);\r\n this.tn.skip(\"(\");\r\n token = this.tn.next();\r\n if (token.toLowerCase() === \"stream\") {\r\n method[\"response_stream\"] = true;\r\n token = this.tn.next();\r\n }\r\n method[\"response\"] = token;\r\n this.tn.skip(\")\");\r\n token = this.tn.peek();\r\n if (token === '{') {\r\n this.tn.next();\r\n while ((token = this.tn.next()) !== '}') {\r\n if (token === 'option')\r\n this._parseOption(method);\r\n else\r\n throw Error(\"illegal rpc service token: \" + token);\r\n }\r\n this.tn.omit(\";\");\r\n } else\r\n this.tn.skip(\";\");\r\n if (typeof svc[type] === 'undefined')\r\n svc[type] = {};\r\n svc[type][name] = method;\r\n };\r\n\r\n /**\r\n * Parses a message definition.\r\n * @param {!Object} parent Parent definition\r\n * @param {!Object=} fld Field definition if this is a group\r\n * @returns {!Object}\r\n * @private\r\n */\r\n ParserPrototype._parseMessage = function(parent, fld) {\r\n var isGroup = !!fld,\r\n token = this.tn.next();\r\n var msg = {\r\n \"name\": \"\",\r\n \"fields\": [],\r\n \"enums\": [],\r\n \"messages\": [],\r\n \"options\": {},\r\n \"services\": [],\r\n \"oneofs\": {}\r\n // \"extensions\": undefined\r\n };\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal \"+(isGroup ? \"group\" : \"message\")+\" name: \"+token);\r\n msg[\"name\"] = token;\r\n if (isGroup) {\r\n this.tn.skip(\"=\");\r\n fld[\"id\"] = mkId(this.tn.next());\r\n msg[\"isGroup\"] = true;\r\n }\r\n token = this.tn.peek();\r\n if (token === '[' && fld)\r\n this._parseFieldOptions(fld);\r\n this.tn.skip(\"{\");\r\n while ((token = this.tn.next()) !== '}') {\r\n if (Lang.RULE.test(token))\r\n this._parseMessageField(msg, token);\r\n else if (token === \"oneof\")\r\n this._parseMessageOneOf(msg);\r\n else if (token === \"enum\")\r\n this._parseEnum(msg);\r\n else if (token === \"message\")\r\n this._parseMessage(msg);\r\n else if (token === \"option\")\r\n this._parseOption(msg);\r\n else if (token === \"service\")\r\n this._parseService(msg);\r\n else if (token === \"extensions\")\r\n this._parseExtensions(msg);\r\n else if (token === \"extend\")\r\n this._parseExtend(msg);\r\n else if (token === \"reserved\")\r\n this._parseMessageReserved(msg);\r\n else if (Lang.TYPEREF.test(token)) {\r\n if (!this.proto3)\r\n throw Error(\"illegal field rule: \"+token);\r\n this._parseMessageField(msg, \"optional\", token);\r\n } else\r\n throw Error(\"illegal message token: \"+token);\r\n }\r\n this.tn.omit(\";\");\r\n parent[\"messages\"].push(msg);\r\n return msg;\r\n };\r\n\r\n /**\r\n * Parses a message's reserved ids / names statement.\r\n * @param {!Object} msg Message definition\r\n * @private\r\n */\r\n ParserPrototype._parseMessageReserved = function(msg) {\r\n // TODO: This currently just skips a reserved statement for compatibility.\r\n // Valid formats are\r\n // reserved 2, 15, 9 to 11;\r\n // for reserved ids or\r\n // reserved \"foo\", \"bar\";\r\n // for reserved names.\r\n while (this.tn.peek() !== ';')\r\n this.tn.next();\r\n this.tn.skip(\";\");\r\n };\r\n\r\n /**\r\n * Parses a message field.\r\n * @param {!Object} msg Message definition\r\n * @param {string} rule Field rule\r\n * @param {string=} type Field type if already known (never known for maps)\r\n * @returns {!Object} Field descriptor\r\n * @private\r\n */\r\n ParserPrototype._parseMessageField = function(msg, rule, type) {\r\n if (!Lang.RULE.test(rule))\r\n throw Error(\"illegal message field rule: \"+rule);\r\n var fld = {\r\n \"rule\": rule,\r\n \"type\": \"\",\r\n \"name\": \"\",\r\n \"options\": {},\r\n \"id\": 0\r\n };\r\n var token;\r\n if (rule === \"map\") {\r\n\r\n if (type)\r\n throw Error(\"illegal type: \" + type);\r\n this.tn.skip('<');\r\n token = this.tn.next();\r\n if (!Lang.TYPE.test(token) && !Lang.TYPEREF.test(token))\r\n throw Error(\"illegal message field type: \" + token);\r\n fld[\"keytype\"] = token;\r\n this.tn.skip(',');\r\n token = this.tn.next();\r\n if (!Lang.TYPE.test(token) && !Lang.TYPEREF.test(token))\r\n throw Error(\"illegal message field: \" + token);\r\n fld[\"type\"] = token;\r\n this.tn.skip('>');\r\n token = this.tn.next();\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal message field name: \" + token);\r\n fld[\"name\"] = token;\r\n this.tn.skip(\"=\");\r\n fld[\"id\"] = mkId(this.tn.next());\r\n token = this.tn.peek();\r\n if (token === '[')\r\n this._parseFieldOptions(fld);\r\n this.tn.skip(\";\");\r\n\r\n } else {\r\n\r\n type = typeof type !== 'undefined' ? type : this.tn.next();\r\n\r\n if (type === \"group\") {\r\n\r\n // \"A [legacy] group simply combines a nested message type and a field into a single declaration. In your\r\n // code, you can treat this message just as if it had a Result type field called result (the latter name is\r\n // converted to lower-case so that it does not conflict with the former).\"\r\n var grp = this._parseMessage(msg, fld);\r\n if (!/^[A-Z]/.test(grp[\"name\"]))\r\n throw Error('illegal group name: '+grp[\"name\"]);\r\n fld[\"type\"] = grp[\"name\"];\r\n fld[\"name\"] = grp[\"name\"].toLowerCase();\r\n this.tn.omit(\";\");\r\n\r\n } else {\r\n\r\n if (!Lang.TYPE.test(type) && !Lang.TYPEREF.test(type))\r\n throw Error(\"illegal message field type: \" + type);\r\n fld[\"type\"] = type;\r\n token = this.tn.next();\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal message field name: \" + token);\r\n fld[\"name\"] = token;\r\n this.tn.skip(\"=\");\r\n fld[\"id\"] = mkId(this.tn.next());\r\n token = this.tn.peek();\r\n if (token === \"[\")\r\n this._parseFieldOptions(fld);\r\n this.tn.skip(\";\");\r\n\r\n }\r\n }\r\n msg[\"fields\"].push(fld);\r\n return fld;\r\n };\r\n\r\n /**\r\n * Parses a message oneof.\r\n * @param {!Object} msg Message definition\r\n * @private\r\n */\r\n ParserPrototype._parseMessageOneOf = function(msg) {\r\n var token = this.tn.next();\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal oneof name: \"+token);\r\n var name = token,\r\n fld;\r\n var fields = [];\r\n this.tn.skip(\"{\");\r\n while ((token = this.tn.next()) !== \"}\") {\r\n fld = this._parseMessageField(msg, \"optional\", token);\r\n fld[\"oneof\"] = name;\r\n fields.push(fld[\"id\"]);\r\n }\r\n this.tn.omit(\";\");\r\n msg[\"oneofs\"][name] = fields;\r\n };\r\n\r\n /**\r\n * Parses a set of field option definitions.\r\n * @param {!Object} fld Field definition\r\n * @private\r\n */\r\n ParserPrototype._parseFieldOptions = function(fld) {\r\n this.tn.skip(\"[\");\r\n var token,\r\n first = true;\r\n while ((token = this.tn.peek()) !== ']') {\r\n if (!first)\r\n this.tn.skip(\",\");\r\n this._parseOption(fld, true);\r\n first = false;\r\n }\r\n this.tn.next();\r\n };\r\n\r\n /**\r\n * Parses an enum.\r\n * @param {!Object} msg Message definition\r\n * @private\r\n */\r\n ParserPrototype._parseEnum = function(msg) {\r\n var enm = {\r\n \"name\": \"\",\r\n \"values\": [],\r\n \"options\": {}\r\n };\r\n var token = this.tn.next();\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal name: \"+token);\r\n enm[\"name\"] = token;\r\n this.tn.skip(\"{\");\r\n while ((token = this.tn.next()) !== '}') {\r\n if (token === \"option\")\r\n this._parseOption(enm);\r\n else {\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal name: \"+token);\r\n this.tn.skip(\"=\");\r\n var val = {\r\n \"name\": token,\r\n \"id\": mkId(this.tn.next(), true)\r\n };\r\n token = this.tn.peek();\r\n if (token === \"[\")\r\n this._parseFieldOptions({ \"options\": {} });\r\n this.tn.skip(\";\");\r\n enm[\"values\"].push(val);\r\n }\r\n }\r\n this.tn.omit(\";\");\r\n msg[\"enums\"].push(enm);\r\n };\r\n\r\n /**\r\n * Parses an extensions statement.\r\n * @param {!Object} msg Message object\r\n * @private\r\n */\r\n ParserPrototype._parseExtensions = function(msg) {\r\n var token = this.tn.next(),\r\n range = [];\r\n if (token === \"min\")\r\n range.push(ProtoBuf.ID_MIN);\r\n else if (token === \"max\")\r\n range.push(ProtoBuf.ID_MAX);\r\n else\r\n range.push(mkNumber(token));\r\n this.tn.skip(\"to\");\r\n token = this.tn.next();\r\n if (token === \"min\")\r\n range.push(ProtoBuf.ID_MIN);\r\n else if (token === \"max\")\r\n range.push(ProtoBuf.ID_MAX);\r\n else\r\n range.push(mkNumber(token));\r\n this.tn.skip(\";\");\r\n msg[\"extensions\"] = range;\r\n };\r\n\r\n /**\r\n * Parses an extend block.\r\n * @param {!Object} parent Parent object\r\n * @private\r\n */\r\n ParserPrototype._parseExtend = function(parent) {\r\n var token = this.tn.next();\r\n if (!Lang.TYPEREF.test(token))\r\n throw Error(\"illegal extend reference: \"+token);\r\n var ext = {\r\n \"ref\": token,\r\n \"fields\": []\r\n };\r\n this.tn.skip(\"{\");\r\n while ((token = this.tn.next()) !== '}') {\r\n if (Lang.RULE.test(token))\r\n this._parseMessageField(ext, token);\r\n else if (Lang.TYPEREF.test(token)) {\r\n if (!this.proto3)\r\n throw Error(\"illegal field rule: \"+token);\r\n this._parseMessageField(ext, \"optional\", token);\r\n } else\r\n throw Error(\"illegal extend token: \"+token);\r\n }\r\n this.tn.omit(\";\");\r\n parent[\"messages\"].push(ext);\r\n return ext;\r\n };\r\n\r\n // ----- General -----\r\n\r\n /**\r\n * Returns a string representation of this parser.\r\n * @returns {string}\r\n */\r\n ParserPrototype.toString = function() {\r\n return \"Parser at line \"+this.tn.line;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.DotProto.Parser\r\n * @expose\r\n */\r\n DotProto.Parser = Parser;\r\n\r\n return DotProto;\r\n\r\n })(ProtoBuf, ProtoBuf.Lang);\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect\r\n * @expose\r\n */\r\n ProtoBuf.Reflect = (function(ProtoBuf) {\r\n \"use strict\";\r\n\r\n /**\r\n * Reflection types.\r\n * @exports ProtoBuf.Reflect\r\n * @namespace\r\n */\r\n var Reflect = {};\r\n\r\n /**\r\n * Constructs a Reflect base class.\r\n * @exports ProtoBuf.Reflect.T\r\n * @constructor\r\n * @abstract\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {?ProtoBuf.Reflect.T} parent Parent object\r\n * @param {string} name Object name\r\n */\r\n var T = function(builder, parent, name) {\r\n\r\n /**\r\n * Builder reference.\r\n * @type {!ProtoBuf.Builder}\r\n * @expose\r\n */\r\n this.builder = builder;\r\n\r\n /**\r\n * Parent object.\r\n * @type {?ProtoBuf.Reflect.T}\r\n * @expose\r\n */\r\n this.parent = parent;\r\n\r\n /**\r\n * Object name in namespace.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.name = name;\r\n\r\n /**\r\n * Fully qualified class name\r\n * @type {string}\r\n * @expose\r\n */\r\n this.className;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.T.prototype\r\n * @inner\r\n */\r\n var TPrototype = T.prototype;\r\n\r\n /**\r\n * Returns the fully qualified name of this object.\r\n * @returns {string} Fully qualified name as of \".PATH.TO.THIS\"\r\n * @expose\r\n */\r\n TPrototype.fqn = function() {\r\n var name = this.name,\r\n ptr = this;\r\n do {\r\n ptr = ptr.parent;\r\n if (ptr == null)\r\n break;\r\n name = ptr.name+\".\"+name;\r\n } while (true);\r\n return name;\r\n };\r\n\r\n /**\r\n * Returns a string representation of this Reflect object (its fully qualified name).\r\n * @param {boolean=} includeClass Set to true to include the class name. Defaults to false.\r\n * @return String representation\r\n * @expose\r\n */\r\n TPrototype.toString = function(includeClass) {\r\n return (includeClass ? this.className + \" \" : \"\") + this.fqn();\r\n };\r\n\r\n /**\r\n * Builds this type.\r\n * @throws {Error} If this type cannot be built directly\r\n * @expose\r\n */\r\n TPrototype.build = function() {\r\n throw Error(this.toString(true)+\" cannot be built directly\");\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.T\r\n * @expose\r\n */\r\n Reflect.T = T;\r\n\r\n /**\r\n * Constructs a new Namespace.\r\n * @exports ProtoBuf.Reflect.Namespace\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {?ProtoBuf.Reflect.Namespace} parent Namespace parent\r\n * @param {string} name Namespace name\r\n * @param {Object.=} options Namespace options\r\n * @param {string?} syntax The syntax level of this definition (e.g., proto3)\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.T\r\n */\r\n var Namespace = function(builder, parent, name, options, syntax) {\r\n T.call(this, builder, parent, name);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Namespace\";\r\n\r\n /**\r\n * Children inside the namespace.\r\n * @type {!Array.}\r\n */\r\n this.children = [];\r\n\r\n /**\r\n * Options.\r\n * @type {!Object.}\r\n */\r\n this.options = options || {};\r\n\r\n /**\r\n * Syntax level (e.g., proto2 or proto3).\r\n * @type {!string}\r\n */\r\n this.syntax = syntax || \"proto2\";\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Namespace.prototype\r\n * @inner\r\n */\r\n var NamespacePrototype = Namespace.prototype = Object.create(T.prototype);\r\n\r\n /**\r\n * Returns an array of the namespace's children.\r\n * @param {ProtoBuf.Reflect.T=} type Filter type (returns instances of this type only). Defaults to null (all children).\r\n * @return {Array.}\r\n * @expose\r\n */\r\n NamespacePrototype.getChildren = function(type) {\r\n type = type || null;\r\n if (type == null)\r\n return this.children.slice();\r\n var children = [];\r\n for (var i=0, k=this.children.length; i} qn Qualified name to resolve\r\n * @param {boolean=} excludeNonNamespace Excludes non-namespace types, defaults to `false`\r\n * @return {?ProtoBuf.Reflect.Namespace} The resolved type or null if not found\r\n * @expose\r\n */\r\n NamespacePrototype.resolve = function(qn, excludeNonNamespace) {\r\n var part = typeof qn === 'string' ? qn.split(\".\") : qn,\r\n ptr = this,\r\n i = 0;\r\n if (part[i] === \"\") { // Fully qualified name, e.g. \".My.Message'\r\n while (ptr.parent !== null)\r\n ptr = ptr.parent;\r\n i++;\r\n }\r\n var child;\r\n do {\r\n do {\r\n if (!(ptr instanceof Reflect.Namespace)) {\r\n ptr = null;\r\n break;\r\n }\r\n child = ptr.getChild(part[i]);\r\n if (!child || !(child instanceof Reflect.T) || (excludeNonNamespace && !(child instanceof Reflect.Namespace))) {\r\n ptr = null;\r\n break;\r\n }\r\n ptr = child; i++;\r\n } while (i < part.length);\r\n if (ptr != null)\r\n break; // Found\r\n // Else search the parent\r\n if (this.parent !== null)\r\n return this.parent.resolve(qn, excludeNonNamespace);\r\n } while (ptr != null);\r\n return ptr;\r\n };\r\n\r\n /**\r\n * Determines the shortest qualified name of the specified type, if any, relative to this namespace.\r\n * @param {!ProtoBuf.Reflect.T} t Reflection type\r\n * @returns {string} The shortest qualified name or, if there is none, the fqn\r\n * @expose\r\n */\r\n NamespacePrototype.qn = function(t) {\r\n var part = [], ptr = t;\r\n do {\r\n part.unshift(ptr.name);\r\n ptr = ptr.parent;\r\n } while (ptr !== null);\r\n for (var len=1; len <= part.length; len++) {\r\n var qn = part.slice(part.length-len);\r\n if (t === this.resolve(qn, t instanceof Reflect.Namespace))\r\n return qn.join(\".\");\r\n }\r\n return t.fqn();\r\n };\r\n\r\n /**\r\n * Builds the namespace and returns the runtime counterpart.\r\n * @return {Object.} Runtime namespace\r\n * @expose\r\n */\r\n NamespacePrototype.build = function() {\r\n /** @dict */\r\n var ns = {};\r\n var children = this.children;\r\n for (var i=0, k=children.length, child; i}\r\n */\r\n NamespacePrototype.buildOpt = function() {\r\n var opt = {},\r\n keys = Object.keys(this.options);\r\n for (var i=0, k=keys.length; i}null} Option value or NULL if there is no such option\r\n */\r\n NamespacePrototype.getOption = function(name) {\r\n if (typeof name === 'undefined')\r\n return this.options;\r\n return typeof this.options[name] !== 'undefined' ? this.options[name] : null;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Namespace\r\n * @expose\r\n */\r\n Reflect.Namespace = Namespace;\r\n\r\n /**\r\n * Constructs a new Element implementation that checks and converts values for a\r\n * particular field type, as appropriate.\r\n *\r\n * An Element represents a single value: either the value of a singular field,\r\n * or a value contained in one entry of a repeated field or map field. This\r\n * class does not implement these higher-level concepts; it only encapsulates\r\n * the low-level typechecking and conversion.\r\n *\r\n * @exports ProtoBuf.Reflect.Element\r\n * @param {{name: string, wireType: number}} type Resolved data type\r\n * @param {ProtoBuf.Reflect.T|null} resolvedType Resolved type, if relevant\r\n * (e.g. submessage field).\r\n * @param {boolean} isMapKey Is this element a Map key? The value will be\r\n * converted to string form if so.\r\n * @param {string} syntax Syntax level of defining message type, e.g.,\r\n * proto2 or proto3.\r\n * @constructor\r\n */\r\n var Element = function(type, resolvedType, isMapKey, syntax) {\r\n\r\n /**\r\n * Element type, as a string (e.g., int32).\r\n * @type {{name: string, wireType: number}}\r\n */\r\n this.type = type;\r\n\r\n /**\r\n * Element type reference to submessage or enum definition, if needed.\r\n * @type {ProtoBuf.Reflect.T|null}\r\n */\r\n this.resolvedType = resolvedType;\r\n\r\n /**\r\n * Element is a map key.\r\n * @type {boolean}\r\n */\r\n this.isMapKey = isMapKey;\r\n\r\n /**\r\n * Syntax level of defining message type, e.g., proto2 or proto3.\r\n * @type {string}\r\n */\r\n this.syntax = syntax;\r\n\r\n if (isMapKey && ProtoBuf.MAP_KEY_TYPES.indexOf(type) < 0)\r\n throw Error(\"Invalid map key type: \" + type.name);\r\n };\r\n\r\n var ElementPrototype = Element.prototype;\r\n\r\n /**\r\n * Obtains a (new) default value for the specified type.\r\n * @param type {string|{name: string, wireType: number}} Field type\r\n * @returns {*} Default value\r\n * @inner\r\n */\r\n function mkDefault(type) {\r\n if (typeof type === 'string')\r\n type = ProtoBuf.TYPES[type];\r\n if (typeof type.defaultValue === 'undefined')\r\n throw Error(\"default value for type \"+type.name+\" is not supported\");\r\n if (type == ProtoBuf.TYPES[\"bytes\"])\r\n return new ByteBuffer(0);\r\n return type.defaultValue;\r\n }\r\n\r\n /**\r\n * Returns the default value for this field in proto3.\r\n * @function\r\n * @param type {string|{name: string, wireType: number}} the field type\r\n * @returns {*} Default value\r\n */\r\n Element.defaultFieldValue = mkDefault;\r\n\r\n /**\r\n * Makes a Long from a value.\r\n * @param {{low: number, high: number, unsigned: boolean}|string|number} value Value\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to reuse it from Long-like objects or to signed for\r\n * strings and numbers\r\n * @returns {!Long}\r\n * @throws {Error} If the value cannot be converted to a Long\r\n * @inner\r\n */\r\n function mkLong(value, unsigned) {\r\n if (value && typeof value.low === 'number' && typeof value.high === 'number' && typeof value.unsigned === 'boolean'\r\n && value.low === value.low && value.high === value.high)\r\n return new ProtoBuf.Long(value.low, value.high, typeof unsigned === 'undefined' ? value.unsigned : unsigned);\r\n if (typeof value === 'string')\r\n return ProtoBuf.Long.fromString(value, unsigned || false, 10);\r\n if (typeof value === 'number')\r\n return ProtoBuf.Long.fromNumber(value, unsigned || false);\r\n throw Error(\"not convertible to Long\");\r\n }\r\n\r\n /**\r\n * Checks if the given value can be set for an element of this type (singular\r\n * field or one element of a repeated field or map).\r\n * @param {*} value Value to check\r\n * @return {*} Verified, maybe adjusted, value\r\n * @throws {Error} If the value cannot be verified for this element slot\r\n * @expose\r\n */\r\n ElementPrototype.verifyValue = function(value) {\r\n var fail = function(val, msg) {\r\n throw Error(\"Illegal value for \"+this.toString(true)+\" of type \"+this.type.name+\": \"+val+\" (\"+msg+\")\");\r\n }.bind(this);\r\n switch (this.type) {\r\n // Signed 32bit\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n // Account for !NaN: value === value\r\n if (typeof value !== 'number' || (value === value && value % 1 !== 0))\r\n fail(typeof value, \"not an integer\");\r\n return value > 4294967295 ? value | 0 : value;\r\n\r\n // Unsigned 32bit\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n if (typeof value !== 'number' || (value === value && value % 1 !== 0))\r\n fail(typeof value, \"not an integer\");\r\n return value < 0 ? value >>> 0 : value;\r\n\r\n // Signed 64bit\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n case ProtoBuf.TYPES[\"sfixed64\"]: {\r\n if (ProtoBuf.Long)\r\n try {\r\n return mkLong(value, false);\r\n } catch (e) {\r\n fail(typeof value, e.message);\r\n }\r\n else\r\n fail(typeof value, \"requires Long.js\");\r\n }\r\n\r\n // Unsigned 64bit\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n case ProtoBuf.TYPES[\"fixed64\"]: {\r\n if (ProtoBuf.Long)\r\n try {\r\n return mkLong(value, true);\r\n } catch (e) {\r\n fail(typeof value, e.message);\r\n }\r\n else\r\n fail(typeof value, \"requires Long.js\");\r\n }\r\n\r\n // Bool\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n if (typeof value !== 'boolean')\r\n fail(typeof value, \"not a boolean\");\r\n return value;\r\n\r\n // Float\r\n case ProtoBuf.TYPES[\"float\"]:\r\n case ProtoBuf.TYPES[\"double\"]:\r\n if (typeof value !== 'number')\r\n fail(typeof value, \"not a number\");\r\n return value;\r\n\r\n // Length-delimited string\r\n case ProtoBuf.TYPES[\"string\"]:\r\n if (typeof value !== 'string' && !(value && value instanceof String))\r\n fail(typeof value, \"not a string\");\r\n return \"\"+value; // Convert String object to string\r\n\r\n // Length-delimited bytes\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n if (ByteBuffer.isByteBuffer(value))\r\n return value;\r\n return ByteBuffer.wrap(value, \"base64\");\r\n\r\n // Constant enum value\r\n case ProtoBuf.TYPES[\"enum\"]: {\r\n var values = this.resolvedType.getChildren(ProtoBuf.Reflect.Enum.Value);\r\n for (i=0; i 4294967295 || value < 0)\r\n fail(typeof value, \"not in range for uint32\")\r\n return value;\r\n } else {\r\n // proto2 requires enum values to be valid.\r\n fail(value, \"not a valid enum value\");\r\n }\r\n }\r\n // Embedded message\r\n case ProtoBuf.TYPES[\"group\"]:\r\n case ProtoBuf.TYPES[\"message\"]: {\r\n if (!value || typeof value !== 'object')\r\n fail(typeof value, \"object expected\");\r\n if (value instanceof this.resolvedType.clazz)\r\n return value;\r\n if (value instanceof ProtoBuf.Builder.Message) {\r\n // Mismatched type: Convert to object (see: https://github.com/dcodeIO/ProtoBuf.js/issues/180)\r\n var obj = {};\r\n for (var i in value)\r\n if (value.hasOwnProperty(i))\r\n obj[i] = value[i];\r\n value = obj;\r\n }\r\n // Else let's try to construct one from a key-value object\r\n return new (this.resolvedType.clazz)(value); // May throw for a hundred of reasons\r\n }\r\n }\r\n\r\n // We should never end here\r\n throw Error(\"[INTERNAL] Illegal value for \"+this.toString(true)+\": \"+value+\" (undefined type \"+this.type+\")\");\r\n };\r\n\r\n /**\r\n * Calculates the byte length of an element on the wire.\r\n * @param {number} id Field number\r\n * @param {*} value Field value\r\n * @returns {number} Byte length\r\n * @throws {Error} If the value cannot be calculated\r\n * @expose\r\n */\r\n ElementPrototype.calculateLength = function(id, value) {\r\n if (value === null) return 0; // Nothing to encode\r\n // Tag has already been written\r\n var n;\r\n switch (this.type) {\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n return value < 0 ? ByteBuffer.calculateVarint64(value) : ByteBuffer.calculateVarint32(value);\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n return ByteBuffer.calculateVarint32(value);\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n return ByteBuffer.calculateVarint32(ByteBuffer.zigZagEncode32(value));\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n case ProtoBuf.TYPES[\"float\"]:\r\n return 4;\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n return ByteBuffer.calculateVarint64(value);\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n return ByteBuffer.calculateVarint64(ByteBuffer.zigZagEncode64(value));\r\n case ProtoBuf.TYPES[\"fixed64\"]:\r\n case ProtoBuf.TYPES[\"sfixed64\"]:\r\n return 8;\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n return 1;\r\n case ProtoBuf.TYPES[\"enum\"]:\r\n return ByteBuffer.calculateVarint32(value);\r\n case ProtoBuf.TYPES[\"double\"]:\r\n return 8;\r\n case ProtoBuf.TYPES[\"string\"]:\r\n n = ByteBuffer.calculateUTF8Bytes(value);\r\n return ByteBuffer.calculateVarint32(n) + n;\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n if (value.remaining() < 0)\r\n throw Error(\"Illegal value for \"+this.toString(true)+\": \"+value.remaining()+\" bytes remaining\");\r\n return ByteBuffer.calculateVarint32(value.remaining()) + value.remaining();\r\n case ProtoBuf.TYPES[\"message\"]:\r\n n = this.resolvedType.calculate(value);\r\n return ByteBuffer.calculateVarint32(n) + n;\r\n case ProtoBuf.TYPES[\"group\"]:\r\n n = this.resolvedType.calculate(value);\r\n return n + ByteBuffer.calculateVarint32((id << 3) | ProtoBuf.WIRE_TYPES.ENDGROUP);\r\n }\r\n // We should never end here\r\n throw Error(\"[INTERNAL] Illegal value to encode in \"+this.toString(true)+\": \"+value+\" (unknown type)\");\r\n };\r\n\r\n /**\r\n * Encodes a value to the specified buffer. Does not encode the key.\r\n * @param {number} id Field number\r\n * @param {*} value Field value\r\n * @param {ByteBuffer} buffer ByteBuffer to encode to\r\n * @return {ByteBuffer} The ByteBuffer for chaining\r\n * @throws {Error} If the value cannot be encoded\r\n * @expose\r\n */\r\n ElementPrototype.encodeValue = function(id, value, buffer) {\r\n if (value === null) return buffer; // Nothing to encode\r\n // Tag has already been written\r\n\r\n switch (this.type) {\r\n // 32bit signed varint\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n // \"If you use int32 or int64 as the type for a negative number, the resulting varint is always ten bytes\r\n // long – it is, effectively, treated like a very large unsigned integer.\" (see #122)\r\n if (value < 0)\r\n buffer.writeVarint64(value);\r\n else\r\n buffer.writeVarint32(value);\r\n break;\r\n\r\n // 32bit unsigned varint\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n buffer.writeVarint32(value);\r\n break;\r\n\r\n // 32bit varint zig-zag\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n buffer.writeVarint32ZigZag(value);\r\n break;\r\n\r\n // Fixed unsigned 32bit\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n buffer.writeUint32(value);\r\n break;\r\n\r\n // Fixed signed 32bit\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n buffer.writeInt32(value);\r\n break;\r\n\r\n // 64bit varint as-is\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n buffer.writeVarint64(value); // throws\r\n break;\r\n\r\n // 64bit varint zig-zag\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n buffer.writeVarint64ZigZag(value); // throws\r\n break;\r\n\r\n // Fixed unsigned 64bit\r\n case ProtoBuf.TYPES[\"fixed64\"]:\r\n buffer.writeUint64(value); // throws\r\n break;\r\n\r\n // Fixed signed 64bit\r\n case ProtoBuf.TYPES[\"sfixed64\"]:\r\n buffer.writeInt64(value); // throws\r\n break;\r\n\r\n // Bool\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n if (typeof value === 'string')\r\n buffer.writeVarint32(value.toLowerCase() === 'false' ? 0 : !!value);\r\n else\r\n buffer.writeVarint32(value ? 1 : 0);\r\n break;\r\n\r\n // Constant enum value\r\n case ProtoBuf.TYPES[\"enum\"]:\r\n buffer.writeVarint32(value);\r\n break;\r\n\r\n // 32bit float\r\n case ProtoBuf.TYPES[\"float\"]:\r\n buffer.writeFloat32(value);\r\n break;\r\n\r\n // 64bit float\r\n case ProtoBuf.TYPES[\"double\"]:\r\n buffer.writeFloat64(value);\r\n break;\r\n\r\n // Length-delimited string\r\n case ProtoBuf.TYPES[\"string\"]:\r\n buffer.writeVString(value);\r\n break;\r\n\r\n // Length-delimited bytes\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n if (value.remaining() < 0)\r\n throw Error(\"Illegal value for \"+this.toString(true)+\": \"+value.remaining()+\" bytes remaining\");\r\n var prevOffset = value.offset;\r\n buffer.writeVarint32(value.remaining());\r\n buffer.append(value);\r\n value.offset = prevOffset;\r\n break;\r\n\r\n // Embedded message\r\n case ProtoBuf.TYPES[\"message\"]:\r\n var bb = new ByteBuffer().LE();\r\n this.resolvedType.encode(value, bb);\r\n buffer.writeVarint32(bb.offset);\r\n buffer.append(bb.flip());\r\n break;\r\n\r\n // Legacy group\r\n case ProtoBuf.TYPES[\"group\"]:\r\n this.resolvedType.encode(value, buffer);\r\n buffer.writeVarint32((id << 3) | ProtoBuf.WIRE_TYPES.ENDGROUP);\r\n break;\r\n\r\n default:\r\n // We should never end here\r\n throw Error(\"[INTERNAL] Illegal value to encode in \"+this.toString(true)+\": \"+value+\" (unknown type)\");\r\n }\r\n return buffer;\r\n };\r\n\r\n /**\r\n * Decode one element value from the specified buffer.\r\n * @param {ByteBuffer} buffer ByteBuffer to decode from\r\n * @param {number} wireType The field wire type\r\n * @param {number} id The field number\r\n * @return {*} Decoded value\r\n * @throws {Error} If the field cannot be decoded\r\n * @expose\r\n */\r\n ElementPrototype.decode = function(buffer, wireType, id) {\r\n if (wireType != this.type.wireType)\r\n throw Error(\"Unexpected wire type for element\");\r\n\r\n var value, nBytes;\r\n switch (this.type) {\r\n // 32bit signed varint\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n return buffer.readVarint32() | 0;\r\n\r\n // 32bit unsigned varint\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n return buffer.readVarint32() >>> 0;\r\n\r\n // 32bit signed varint zig-zag\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n return buffer.readVarint32ZigZag() | 0;\r\n\r\n // Fixed 32bit unsigned\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n return buffer.readUint32() >>> 0;\r\n\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n return buffer.readInt32() | 0;\r\n\r\n // 64bit signed varint\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n return buffer.readVarint64();\r\n\r\n // 64bit unsigned varint\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n return buffer.readVarint64().toUnsigned();\r\n\r\n // 64bit signed varint zig-zag\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n return buffer.readVarint64ZigZag();\r\n\r\n // Fixed 64bit unsigned\r\n case ProtoBuf.TYPES[\"fixed64\"]:\r\n return buffer.readUint64();\r\n\r\n // Fixed 64bit signed\r\n case ProtoBuf.TYPES[\"sfixed64\"]:\r\n return buffer.readInt64();\r\n\r\n // Bool varint\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n return !!buffer.readVarint32();\r\n\r\n // Constant enum value (varint)\r\n case ProtoBuf.TYPES[\"enum\"]:\r\n // The following Builder.Message#set will already throw\r\n return buffer.readVarint32();\r\n\r\n // 32bit float\r\n case ProtoBuf.TYPES[\"float\"]:\r\n return buffer.readFloat();\r\n\r\n // 64bit float\r\n case ProtoBuf.TYPES[\"double\"]:\r\n return buffer.readDouble();\r\n\r\n // Length-delimited string\r\n case ProtoBuf.TYPES[\"string\"]:\r\n return buffer.readVString();\r\n\r\n // Length-delimited bytes\r\n case ProtoBuf.TYPES[\"bytes\"]: {\r\n nBytes = buffer.readVarint32();\r\n if (buffer.remaining() < nBytes)\r\n throw Error(\"Illegal number of bytes for \"+this.toString(true)+\": \"+nBytes+\" required but got only \"+buffer.remaining());\r\n value = buffer.clone(); // Offset already set\r\n value.limit = value.offset+nBytes;\r\n buffer.offset += nBytes;\r\n return value;\r\n }\r\n\r\n // Length-delimited embedded message\r\n case ProtoBuf.TYPES[\"message\"]: {\r\n nBytes = buffer.readVarint32();\r\n return this.resolvedType.decode(buffer, nBytes);\r\n }\r\n\r\n // Legacy group\r\n case ProtoBuf.TYPES[\"group\"]:\r\n return this.resolvedType.decode(buffer, -1, id);\r\n }\r\n\r\n // We should never end here\r\n throw Error(\"[INTERNAL] Illegal decode type\");\r\n };\r\n\r\n /**\r\n * Converts a value from a string to the canonical element type.\r\n *\r\n * Legal only when isMapKey is true.\r\n *\r\n * @param {string} str The string value\r\n * @returns {*} The value\r\n */\r\n ElementPrototype.valueFromString = function(str) {\r\n if (!this.isMapKey) {\r\n throw Error(\"valueFromString() called on non-map-key element\");\r\n }\r\n\r\n switch (this.type) {\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n return this.verifyValue(parseInt(str));\r\n\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n case ProtoBuf.TYPES[\"sfixed64\"]:\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n case ProtoBuf.TYPES[\"fixed64\"]:\r\n // Long-based fields support conversions from string already.\r\n return this.verifyValue(str);\r\n\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n return str === \"true\";\r\n\r\n case ProtoBuf.TYPES[\"string\"]:\r\n return this.verifyValue(str);\r\n\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n return ByteBuffer.fromBinary(str);\r\n }\r\n };\r\n\r\n /**\r\n * Converts a value from the canonical element type to a string.\r\n *\r\n * It should be the case that `valueFromString(valueToString(val))` returns\r\n * a value equivalent to `verifyValue(val)` for every legal value of `val`\r\n * according to this element type.\r\n *\r\n * This may be used when the element must be stored or used as a string,\r\n * e.g., as a map key on an Object.\r\n *\r\n * Legal only when isMapKey is true.\r\n *\r\n * @param {*} val The value\r\n * @returns {string} The string form of the value.\r\n */\r\n ElementPrototype.valueToString = function(value) {\r\n if (!this.isMapKey) {\r\n throw Error(\"valueToString() called on non-map-key element\");\r\n }\r\n\r\n if (this.type === ProtoBuf.TYPES[\"bytes\"]) {\r\n return value.toString(\"binary\");\r\n } else {\r\n return value.toString();\r\n }\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Element\r\n * @expose\r\n */\r\n Reflect.Element = Element;\r\n\r\n /**\r\n * Constructs a new Message.\r\n * @exports ProtoBuf.Reflect.Message\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Namespace} parent Parent message or namespace\r\n * @param {string} name Message name\r\n * @param {Object.=} options Message options\r\n * @param {boolean=} isGroup `true` if this is a legacy group\r\n * @param {string?} syntax The syntax level of this definition (e.g., proto3)\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Namespace\r\n */\r\n var Message = function(builder, parent, name, options, isGroup, syntax) {\r\n Namespace.call(this, builder, parent, name, options, syntax);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Message\";\r\n\r\n /**\r\n * Extensions range.\r\n * @type {!Array.}\r\n * @expose\r\n */\r\n this.extensions = [ProtoBuf.ID_MIN, ProtoBuf.ID_MAX];\r\n\r\n /**\r\n * Runtime message class.\r\n * @type {?function(new:ProtoBuf.Builder.Message)}\r\n * @expose\r\n */\r\n this.clazz = null;\r\n\r\n /**\r\n * Whether this is a legacy group or not.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.isGroup = !!isGroup;\r\n\r\n // The following cached collections are used to efficiently iterate over or look up fields when decoding.\r\n\r\n /**\r\n * Cached fields.\r\n * @type {?Array.}\r\n * @private\r\n */\r\n this._fields = null;\r\n\r\n /**\r\n * Cached fields by id.\r\n * @type {?Object.}\r\n * @private\r\n */\r\n this._fieldsById = null;\r\n\r\n /**\r\n * Cached fields by name.\r\n * @type {?Object.}\r\n * @private\r\n */\r\n this._fieldsByName = null;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.prototype\r\n * @inner\r\n */\r\n var MessagePrototype = Message.prototype = Object.create(Namespace.prototype);\r\n\r\n /**\r\n * Builds the message and returns the runtime counterpart, which is a fully functional class.\r\n * @see ProtoBuf.Builder.Message\r\n * @param {boolean=} rebuild Whether to rebuild or not, defaults to false\r\n * @return {ProtoBuf.Reflect.Message} Message class\r\n * @throws {Error} If the message cannot be built\r\n * @expose\r\n */\r\n MessagePrototype.build = function(rebuild) {\r\n if (this.clazz && !rebuild)\r\n return this.clazz;\r\n\r\n // Create the runtime Message class in its own scope\r\n var clazz = (function(ProtoBuf, T) {\r\n\r\n var fields = T.getChildren(ProtoBuf.Reflect.Message.Field),\r\n oneofs = T.getChildren(ProtoBuf.Reflect.Message.OneOf);\r\n\r\n /**\r\n * Constructs a new runtime Message.\r\n * @name ProtoBuf.Builder.Message\r\n * @class Barebone of all runtime messages.\r\n * @param {!Object.|string} values Preset values\r\n * @param {...string} var_args\r\n * @constructor\r\n * @throws {Error} If the message cannot be created\r\n */\r\n var Message = function(values, var_args) {\r\n ProtoBuf.Builder.Message.call(this);\r\n\r\n // Create virtual oneof properties\r\n for (var i=0, k=oneofs.length; i 0) {\r\n var value;\r\n // Set field values from a values object\r\n if (arguments.length === 1 && values !== null && typeof values === 'object' &&\r\n /* not _another_ Message */ (typeof values.encode !== 'function' || values instanceof Message) &&\r\n /* not a repeated field */ !Array.isArray(values) &&\r\n /* not a Map */ !(values instanceof ProtoBuf.Map) &&\r\n /* not a ByteBuffer */ !ByteBuffer.isByteBuffer(values) &&\r\n /* not an ArrayBuffer */ !(values instanceof ArrayBuffer) &&\r\n /* not a Long */ !(ProtoBuf.Long && values instanceof ProtoBuf.Long)) {\r\n this.$set(values);\r\n } else // Set field values from arguments, in declaration order\r\n for (i=0, k=arguments.length; i} keyOrObj String key or plain object holding multiple values\r\n * @param {(*|boolean)=} value Value to set if key is a string, otherwise omitted\r\n * @param {boolean=} noAssert Whether to not assert for an actual field / proper value type, defaults to `false`\r\n * @returns {!ProtoBuf.Builder.Message} this\r\n * @throws {Error} If the value cannot be set\r\n * @expose\r\n */\r\n MessagePrototype.set = function(keyOrObj, value, noAssert) {\r\n if (keyOrObj && typeof keyOrObj === 'object') {\r\n noAssert = value;\r\n for (var ikey in keyOrObj)\r\n if (keyOrObj.hasOwnProperty(ikey) && typeof (value = keyOrObj[ikey]) !== 'undefined')\r\n this.$set(ikey, value, noAssert);\r\n return this;\r\n }\r\n var field = T._fieldsByName[keyOrObj];\r\n if (!noAssert) {\r\n if (!field)\r\n throw Error(this+\"#\"+keyOrObj+\" is not a field: undefined\");\r\n if (!(field instanceof ProtoBuf.Reflect.Message.Field))\r\n throw Error(this+\"#\"+keyOrObj+\" is not a field: \"+field.toString(true));\r\n this[field.name] = (value = field.verifyValue(value)); // May throw\r\n } else\r\n this[keyOrObj] = value;\r\n if (field && field.oneof) { // Field is part of an OneOf (not a virtual OneOf field)\r\n var currentField = this[field.oneof.name]; // Virtual field references currently set field\r\n if (value !== null) {\r\n if (currentField !== null && currentField !== field.name)\r\n this[currentField] = null; // Clear currently set field\r\n this[field.oneof.name] = field.name; // Point virtual field at this field\r\n } else if (/* value === null && */currentField === keyOrObj)\r\n this[field.oneof.name] = null; // Clear virtual field (current field explicitly cleared)\r\n }\r\n return this;\r\n };\r\n\r\n /**\r\n * Sets a field's value. This is an alias for [@link ProtoBuf.Builder.Message#set}.\r\n * @name ProtoBuf.Builder.Message#$set\r\n * @function\r\n * @param {string|!Object.} keyOrObj String key or plain object holding multiple values\r\n * @param {(*|boolean)=} value Value to set if key is a string, otherwise omitted\r\n * @param {boolean=} noAssert Whether to not assert the value, defaults to `false`\r\n * @throws {Error} If the value cannot be set\r\n * @expose\r\n */\r\n MessagePrototype.$set = MessagePrototype.set;\r\n\r\n /**\r\n * Gets a field's value.\r\n * @name ProtoBuf.Builder.Message#get\r\n * @function\r\n * @param {string} key Key\r\n * @param {boolean=} noAssert Whether to not assert for an actual field, defaults to `false`\r\n * @return {*} Value\r\n * @throws {Error} If there is no such field\r\n * @expose\r\n */\r\n MessagePrototype.get = function(key, noAssert) {\r\n if (noAssert)\r\n return this[key];\r\n var field = T._fieldsByName[key];\r\n if (!field || !(field instanceof ProtoBuf.Reflect.Message.Field))\r\n throw Error(this+\"#\"+key+\" is not a field: undefined\");\r\n if (!(field instanceof ProtoBuf.Reflect.Message.Field))\r\n throw Error(this+\"#\"+key+\" is not a field: \"+field.toString(true));\r\n return this[field.name];\r\n };\r\n\r\n /**\r\n * Gets a field's value. This is an alias for {@link ProtoBuf.Builder.Message#$get}.\r\n * @name ProtoBuf.Builder.Message#$get\r\n * @function\r\n * @param {string} key Key\r\n * @return {*} Value\r\n * @throws {Error} If there is no such field\r\n * @expose\r\n */\r\n MessagePrototype.$get = MessagePrototype.get;\r\n\r\n // Getters and setters\r\n\r\n for (var i=0; i} data Data payload\r\n * @param {(!ByteBuffer|boolean)=} buffer ByteBuffer to encode to. Will create a new one and flip it if omitted.\r\n * @param {boolean=} noVerify Whether to not verify field values, defaults to `false`\r\n * @return {!ByteBuffer} Encoded message as a ByteBuffer\r\n * @expose\r\n */\r\n Message.encode = function(data, buffer, noVerify) {\r\n return new Message(data).encode(buffer, noVerify);\r\n };\r\n\r\n /**\r\n * Calculates the byte length of the message.\r\n * @name ProtoBuf.Builder.Message#calculate\r\n * @function\r\n * @returns {number} Byte length\r\n * @throws {Error} If the message cannot be calculated or if required fields are missing.\r\n * @expose\r\n */\r\n MessagePrototype.calculate = function() {\r\n return T.calculate(this);\r\n };\r\n\r\n /**\r\n * Encodes the varint32 length-delimited message.\r\n * @name ProtoBuf.Builder.Message#encodeDelimited\r\n * @function\r\n * @param {(!ByteBuffer|boolean)=} buffer ByteBuffer to encode to. Will create a new one and flip it if omitted.\r\n * @return {!ByteBuffer} Encoded message as a ByteBuffer\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded ByteBuffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encodeDelimited = function(buffer) {\r\n var isNew = false;\r\n if (!buffer)\r\n buffer = new ByteBuffer(),\r\n isNew = true;\r\n var enc = new ByteBuffer().LE();\r\n T.encode(this, enc).flip();\r\n buffer.writeVarint32(enc.remaining());\r\n buffer.append(enc);\r\n return isNew ? buffer.flip() : buffer;\r\n };\r\n\r\n /**\r\n * Directly encodes the message to an ArrayBuffer.\r\n * @name ProtoBuf.Builder.Message#encodeAB\r\n * @function\r\n * @return {ArrayBuffer} Encoded message as ArrayBuffer\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded ArrayBuffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encodeAB = function() {\r\n try {\r\n return this.encode().toArrayBuffer();\r\n } catch (e) {\r\n if (e[\"encoded\"]) e[\"encoded\"] = e[\"encoded\"].toArrayBuffer();\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Returns the message as an ArrayBuffer. This is an alias for {@link ProtoBuf.Builder.Message#encodeAB}.\r\n * @name ProtoBuf.Builder.Message#toArrayBuffer\r\n * @function\r\n * @return {ArrayBuffer} Encoded message as ArrayBuffer\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded ArrayBuffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.toArrayBuffer = MessagePrototype.encodeAB;\r\n\r\n /**\r\n * Directly encodes the message to a node Buffer.\r\n * @name ProtoBuf.Builder.Message#encodeNB\r\n * @function\r\n * @return {!Buffer}\r\n * @throws {Error} If the message cannot be encoded, not running under node.js or if required fields are\r\n * missing. The later still returns the encoded node Buffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encodeNB = function() {\r\n try {\r\n return this.encode().toBuffer();\r\n } catch (e) {\r\n if (e[\"encoded\"]) e[\"encoded\"] = e[\"encoded\"].toBuffer();\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Returns the message as a node Buffer. This is an alias for {@link ProtoBuf.Builder.Message#encodeNB}.\r\n * @name ProtoBuf.Builder.Message#toBuffer\r\n * @function\r\n * @return {!Buffer}\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded node Buffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.toBuffer = MessagePrototype.encodeNB;\r\n\r\n /**\r\n * Directly encodes the message to a base64 encoded string.\r\n * @name ProtoBuf.Builder.Message#encode64\r\n * @function\r\n * @return {string} Base64 encoded string\r\n * @throws {Error} If the underlying buffer cannot be encoded or if required fields are missing. The later\r\n * still returns the encoded base64 string in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encode64 = function() {\r\n try {\r\n return this.encode().toBase64();\r\n } catch (e) {\r\n if (e[\"encoded\"]) e[\"encoded\"] = e[\"encoded\"].toBase64();\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Returns the message as a base64 encoded string. This is an alias for {@link ProtoBuf.Builder.Message#encode64}.\r\n * @name ProtoBuf.Builder.Message#toBase64\r\n * @function\r\n * @return {string} Base64 encoded string\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded base64 string in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.toBase64 = MessagePrototype.encode64;\r\n\r\n /**\r\n * Directly encodes the message to a hex encoded string.\r\n * @name ProtoBuf.Builder.Message#encodeHex\r\n * @function\r\n * @return {string} Hex encoded string\r\n * @throws {Error} If the underlying buffer cannot be encoded or if required fields are missing. The later\r\n * still returns the encoded hex string in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encodeHex = function() {\r\n try {\r\n return this.encode().toHex();\r\n } catch (e) {\r\n if (e[\"encoded\"]) e[\"encoded\"] = e[\"encoded\"].toHex();\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Returns the message as a hex encoded string. This is an alias for {@link ProtoBuf.Builder.Message#encodeHex}.\r\n * @name ProtoBuf.Builder.Message#toHex\r\n * @function\r\n * @return {string} Hex encoded string\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded hex string in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.toHex = MessagePrototype.encodeHex;\r\n\r\n /**\r\n * Clones a message object or field value to a raw object.\r\n * @param {*} obj Object to clone\r\n * @param {boolean} binaryAsBase64 Whether to include binary data as base64 strings or as a buffer otherwise\r\n * @param {boolean} longsAsStrings Whether to encode longs as strings\r\n * @param {!ProtoBuf.Reflect.T=} resolvedType The resolved field type if a field\r\n * @returns {*} Cloned object\r\n * @inner\r\n */\r\n function cloneRaw(obj, binaryAsBase64, longsAsStrings, resolvedType) {\r\n if (obj === null || typeof obj !== 'object') {\r\n // Convert enum values to their respective names\r\n if (resolvedType && resolvedType instanceof ProtoBuf.Reflect.Enum) {\r\n var name = ProtoBuf.Reflect.Enum.getName(resolvedType.object, obj);\r\n if (name !== null)\r\n return name;\r\n }\r\n // Pass-through string, number, boolean, null...\r\n return obj;\r\n }\r\n // Convert ByteBuffers to raw buffer or strings\r\n if (ByteBuffer.isByteBuffer(obj))\r\n return binaryAsBase64 ? obj.toBase64() : obj.toBuffer();\r\n // Convert Longs to proper objects or strings\r\n if (ProtoBuf.Long.isLong(obj))\r\n return longsAsStrings ? obj.toString() : ProtoBuf.Long.fromValue(obj);\r\n var clone;\r\n // Clone arrays\r\n if (Array.isArray(obj)) {\r\n clone = [];\r\n obj.forEach(function(v, k) {\r\n clone[k] = cloneRaw(v, binaryAsBase64, longsAsStrings, resolvedType);\r\n });\r\n return clone;\r\n }\r\n clone = {};\r\n // Convert maps to objects\r\n if (obj instanceof ProtoBuf.Map) {\r\n var it = obj.entries();\r\n for (var e = it.next(); !e.done; e = it.next())\r\n clone[obj.keyElem.valueToString(e.value[0])] = cloneRaw(e.value[1], binaryAsBase64, longsAsStrings, obj.valueElem.resolvedType);\r\n return clone;\r\n }\r\n // Everything else is a non-null object\r\n var type = obj.$type,\r\n field = undefined;\r\n for (var i in obj)\r\n if (obj.hasOwnProperty(i)) {\r\n if (type && (field = type.getChild(i)))\r\n clone[i] = cloneRaw(obj[i], binaryAsBase64, longsAsStrings, field.resolvedType);\r\n else\r\n clone[i] = cloneRaw(obj[i], binaryAsBase64, longsAsStrings);\r\n }\r\n return clone;\r\n }\r\n\r\n /**\r\n * Returns the message's raw payload.\r\n * @param {boolean=} binaryAsBase64 Whether to include binary data as base64 strings instead of Buffers, defaults to `false`\r\n * @param {boolean} longsAsStrings Whether to encode longs as strings\r\n * @returns {Object.} Raw payload\r\n * @expose\r\n */\r\n MessagePrototype.toRaw = function(binaryAsBase64, longsAsStrings) {\r\n return cloneRaw(this, !!binaryAsBase64, !!longsAsStrings, this.$type);\r\n };\r\n\r\n /**\r\n * Encodes a message to JSON.\r\n * @returns {string} JSON string\r\n * @expose\r\n */\r\n MessagePrototype.encodeJSON = function() {\r\n return JSON.stringify(\r\n cloneRaw(this,\r\n /* binary-as-base64 */ true,\r\n /* longs-as-strings */ true,\r\n this.$type\r\n )\r\n );\r\n };\r\n\r\n /**\r\n * Decodes a message from the specified buffer or string.\r\n * @name ProtoBuf.Builder.Message.decode\r\n * @function\r\n * @param {!ByteBuffer|!ArrayBuffer|!Buffer|string} buffer Buffer to decode from\r\n * @param {string=} enc Encoding if buffer is a string: hex, utf8 (not recommended), defaults to base64\r\n * @return {!ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still\r\n * returns the decoded message with missing fields in the `decoded` property on the error.\r\n * @expose\r\n * @see ProtoBuf.Builder.Message.decode64\r\n * @see ProtoBuf.Builder.Message.decodeHex\r\n */\r\n Message.decode = function(buffer, enc) {\r\n if (typeof buffer === 'string')\r\n buffer = ByteBuffer.wrap(buffer, enc ? enc : \"base64\");\r\n buffer = ByteBuffer.isByteBuffer(buffer) ? buffer : ByteBuffer.wrap(buffer); // May throw\r\n var le = buffer.littleEndian;\r\n try {\r\n var msg = T.decode(buffer.LE());\r\n buffer.LE(le);\r\n return msg;\r\n } catch (e) {\r\n buffer.LE(le);\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Decodes a varint32 length-delimited message from the specified buffer or string.\r\n * @name ProtoBuf.Builder.Message.decodeDelimited\r\n * @function\r\n * @param {!ByteBuffer|!ArrayBuffer|!Buffer|string} buffer Buffer to decode from\r\n * @param {string=} enc Encoding if buffer is a string: hex, utf8 (not recommended), defaults to base64\r\n * @return {ProtoBuf.Builder.Message} Decoded message or `null` if not enough bytes are available yet\r\n * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still\r\n * returns the decoded message with missing fields in the `decoded` property on the error.\r\n * @expose\r\n */\r\n Message.decodeDelimited = function(buffer, enc) {\r\n if (typeof buffer === 'string')\r\n buffer = ByteBuffer.wrap(buffer, enc ? enc : \"base64\");\r\n buffer = ByteBuffer.isByteBuffer(buffer) ? buffer : ByteBuffer.wrap(buffer); // May throw\r\n if (buffer.remaining() < 1)\r\n return null;\r\n var off = buffer.offset,\r\n len = buffer.readVarint32();\r\n if (buffer.remaining() < len) {\r\n buffer.offset = off;\r\n return null;\r\n }\r\n try {\r\n var msg = T.decode(buffer.slice(buffer.offset, buffer.offset + len).LE());\r\n buffer.offset += len;\r\n return msg;\r\n } catch (err) {\r\n buffer.offset += len;\r\n throw err;\r\n }\r\n };\r\n\r\n /**\r\n * Decodes the message from the specified base64 encoded string.\r\n * @name ProtoBuf.Builder.Message.decode64\r\n * @function\r\n * @param {string} str String to decode from\r\n * @return {!ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still\r\n * returns the decoded message with missing fields in the `decoded` property on the error.\r\n * @expose\r\n */\r\n Message.decode64 = function(str) {\r\n return Message.decode(str, \"base64\");\r\n };\r\n\r\n /**\r\n * Decodes the message from the specified hex encoded string.\r\n * @name ProtoBuf.Builder.Message.decodeHex\r\n * @function\r\n * @param {string} str String to decode from\r\n * @return {!ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still\r\n * returns the decoded message with missing fields in the `decoded` property on the error.\r\n * @expose\r\n */\r\n Message.decodeHex = function(str) {\r\n return Message.decode(str, \"hex\");\r\n };\r\n\r\n /**\r\n * Decodes the message from a JSON string.\r\n * @name ProtoBuf.Builder.Message.decodeJSON\r\n * @function\r\n * @param {string} str String to decode from\r\n * @return {!ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded or if required fields are\r\n * missing.\r\n * @expose\r\n */\r\n Message.decodeJSON = function(str) {\r\n return new Message(JSON.parse(str));\r\n };\r\n\r\n // Utility\r\n\r\n /**\r\n * Returns a string representation of this Message.\r\n * @name ProtoBuf.Builder.Message#toString\r\n * @function\r\n * @return {string} String representation as of \".Fully.Qualified.MessageName\"\r\n * @expose\r\n */\r\n MessagePrototype.toString = function() {\r\n return T.toString();\r\n };\r\n\r\n // Properties\r\n\r\n /**\r\n * Message options.\r\n * @name ProtoBuf.Builder.Message.$options\r\n * @type {Object.}\r\n * @expose\r\n */\r\n var $optionsS; // cc needs this\r\n\r\n /**\r\n * Message options.\r\n * @name ProtoBuf.Builder.Message#$options\r\n * @type {Object.}\r\n * @expose\r\n */\r\n var $options;\r\n\r\n /**\r\n * Reflection type.\r\n * @name ProtoBuf.Builder.Message.$type\r\n * @type {!ProtoBuf.Reflect.Message}\r\n * @expose\r\n */\r\n var $typeS;\r\n\r\n /**\r\n * Reflection type.\r\n * @name ProtoBuf.Builder.Message#$type\r\n * @type {!ProtoBuf.Reflect.Message}\r\n * @expose\r\n */\r\n var $type;\r\n\r\n if (Object.defineProperty)\r\n Object.defineProperty(Message, '$options', { \"value\": T.buildOpt() }),\r\n Object.defineProperty(MessagePrototype, \"$options\", { \"value\": Message[\"$options\"] }),\r\n Object.defineProperty(Message, \"$type\", { \"value\": T }),\r\n Object.defineProperty(MessagePrototype, \"$type\", { \"value\": T });\r\n\r\n return Message;\r\n\r\n })(ProtoBuf, this);\r\n\r\n // Static enums and prototyped sub-messages / cached collections\r\n this._fields = [];\r\n this._fieldsById = {};\r\n this._fieldsByName = {};\r\n for (var i=0, k=this.children.length, child; i>> 3;\r\n switch (wireType) {\r\n case ProtoBuf.WIRE_TYPES.VARINT:\r\n do tag = buf.readUint8();\r\n while ((tag & 0x80) === 0x80);\r\n break;\r\n case ProtoBuf.WIRE_TYPES.BITS64:\r\n buf.offset += 8;\r\n break;\r\n case ProtoBuf.WIRE_TYPES.LDELIM:\r\n tag = buf.readVarint32(); // reads the varint\r\n buf.offset += tag; // skips n bytes\r\n break;\r\n case ProtoBuf.WIRE_TYPES.STARTGROUP:\r\n skipTillGroupEnd(id, buf);\r\n break;\r\n case ProtoBuf.WIRE_TYPES.ENDGROUP:\r\n if (id === expectedId)\r\n return false;\r\n else\r\n throw Error(\"Illegal GROUPEND after unknown group: \"+id+\" (\"+expectedId+\" expected)\");\r\n case ProtoBuf.WIRE_TYPES.BITS32:\r\n buf.offset += 4;\r\n break;\r\n default:\r\n throw Error(\"Illegal wire type in unknown group \"+expectedId+\": \"+wireType);\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Decodes an encoded message and returns the decoded message.\r\n * @param {ByteBuffer} buffer ByteBuffer to decode from\r\n * @param {number=} length Message length. Defaults to decode all the available data.\r\n * @param {number=} expectedGroupEndId Expected GROUPEND id if this is a legacy group\r\n * @return {ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded\r\n * @expose\r\n */\r\n MessagePrototype.decode = function(buffer, length, expectedGroupEndId) {\r\n length = typeof length === 'number' ? length : -1;\r\n var start = buffer.offset,\r\n msg = new (this.clazz)(),\r\n tag, wireType, id, field;\r\n while (buffer.offset < start+length || (length === -1 && buffer.remaining() > 0)) {\r\n tag = buffer.readVarint32();\r\n wireType = tag & 0x07;\r\n id = tag >>> 3;\r\n if (wireType === ProtoBuf.WIRE_TYPES.ENDGROUP) {\r\n if (id !== expectedGroupEndId)\r\n throw Error(\"Illegal group end indicator for \"+this.toString(true)+\": \"+id+\" (\"+(expectedGroupEndId ? expectedGroupEndId+\" expected\" : \"not a group\")+\")\");\r\n break;\r\n }\r\n if (!(field = this._fieldsById[id])) {\r\n // \"messages created by your new code can be parsed by your old code: old binaries simply ignore the new field when parsing.\"\r\n switch (wireType) {\r\n case ProtoBuf.WIRE_TYPES.VARINT:\r\n buffer.readVarint32();\r\n break;\r\n case ProtoBuf.WIRE_TYPES.BITS32:\r\n buffer.offset += 4;\r\n break;\r\n case ProtoBuf.WIRE_TYPES.BITS64:\r\n buffer.offset += 8;\r\n break;\r\n case ProtoBuf.WIRE_TYPES.LDELIM:\r\n var len = buffer.readVarint32();\r\n buffer.offset += len;\r\n break;\r\n case ProtoBuf.WIRE_TYPES.STARTGROUP:\r\n while (skipTillGroupEnd(id, buffer)) {}\r\n break;\r\n default:\r\n throw Error(\"Illegal wire type for unknown field \"+id+\" in \"+this.toString(true)+\"#decode: \"+wireType);\r\n }\r\n continue;\r\n }\r\n if (field.repeated && !field.options[\"packed\"]) {\r\n msg[field.name].push(field.decode(wireType, buffer));\r\n } else if (field.map) {\r\n var keyval = field.decode(wireType, buffer);\r\n msg[field.name].set(keyval[0], keyval[1]);\r\n } else {\r\n msg[field.name] = field.decode(wireType, buffer);\r\n if (field.oneof) { // Field is part of an OneOf (not a virtual OneOf field)\r\n var currentField = msg[field.oneof.name]; // Virtual field references currently set field\r\n if (currentField !== null && currentField !== field.name)\r\n msg[currentField] = null; // Clear currently set field\r\n msg[field.oneof.name] = field.name; // Point virtual field at this field\r\n }\r\n }\r\n }\r\n\r\n // Check if all required fields are present and set default values for optional fields that are not\r\n for (var i=0, k=this._fields.length; i=} options Options\r\n * @param {!ProtoBuf.Reflect.Message.OneOf=} oneof Enclosing OneOf\r\n * @param {string?} syntax The syntax level of this definition (e.g., proto3)\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.T\r\n */\r\n var Field = function(builder, message, rule, keytype, type, name, id, options, oneof, syntax) {\r\n T.call(this, builder, message, name);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Message.Field\";\r\n\r\n /**\r\n * Message field required flag.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.required = rule === \"required\";\r\n\r\n /**\r\n * Message field repeated flag.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.repeated = rule === \"repeated\";\r\n\r\n /**\r\n * Message field map flag.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.map = rule === \"map\";\r\n\r\n /**\r\n * Message field key type. Type reference string if unresolved, protobuf\r\n * type if resolved. Valid only if this.map === true, null otherwise.\r\n * @type {string|{name: string, wireType: number}|null}\r\n * @expose\r\n */\r\n this.keyType = keytype || null;\r\n\r\n /**\r\n * Message field type. Type reference string if unresolved, protobuf type if\r\n * resolved. In a map field, this is the value type.\r\n * @type {string|{name: string, wireType: number}}\r\n * @expose\r\n */\r\n this.type = type;\r\n\r\n /**\r\n * Resolved type reference inside the global namespace.\r\n * @type {ProtoBuf.Reflect.T|null}\r\n * @expose\r\n */\r\n this.resolvedType = null;\r\n\r\n /**\r\n * Unique message field id.\r\n * @type {number}\r\n * @expose\r\n */\r\n this.id = id;\r\n\r\n /**\r\n * Message field options.\r\n * @type {!Object.}\r\n * @dict\r\n * @expose\r\n */\r\n this.options = options || {};\r\n\r\n /**\r\n * Default value.\r\n * @type {*}\r\n * @expose\r\n */\r\n this.defaultValue = null;\r\n\r\n /**\r\n * Enclosing OneOf.\r\n * @type {?ProtoBuf.Reflect.Message.OneOf}\r\n * @expose\r\n */\r\n this.oneof = oneof || null;\r\n\r\n /**\r\n * Syntax level of this definition (e.g., proto3).\r\n * @type {string}\r\n * @expose\r\n */\r\n this.syntax = syntax || 'proto2';\r\n\r\n /**\r\n * Original field name.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.originalName = this.name; // Used to revert camelcase transformation on naming collisions\r\n\r\n /**\r\n * Element implementation. Created in build() after types are resolved.\r\n * @type {ProtoBuf.Element}\r\n * @expose\r\n */\r\n this.element = null;\r\n\r\n /**\r\n * Key element implementation, for map fields. Created in build() after\r\n * types are resolved.\r\n * @type {ProtoBuf.Element}\r\n * @expose\r\n */\r\n this.keyElement = null;\r\n\r\n // Convert field names to camel case notation if the override is set\r\n if (this.builder.options['convertFieldsToCamelCase'] && !(this instanceof Message.ExtensionField))\r\n this.name = ProtoBuf.Util.toCamelCase(this.name);\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.Field.prototype\r\n * @inner\r\n */\r\n var FieldPrototype = Field.prototype = Object.create(T.prototype);\r\n\r\n /**\r\n * Builds the field.\r\n * @override\r\n * @expose\r\n */\r\n FieldPrototype.build = function() {\r\n this.element = new Element(this.type, this.resolvedType, false, this.syntax);\r\n if (this.map)\r\n this.keyElement = new Element(this.keyType, undefined, true, this.syntax);\r\n\r\n // In proto3, fields do not have field presence, and every field is set to\r\n // its type's default value (\"\", 0, 0.0, or false).\r\n if (this.syntax === 'proto3' && !this.repeated && !this.map)\r\n this.defaultValue = Element.defaultFieldValue(this.type);\r\n\r\n // Otherwise, default values are present when explicitly specified\r\n else if (typeof this.options['default'] !== 'undefined')\r\n this.defaultValue = this.verifyValue(this.options['default']);\r\n };\r\n\r\n /**\r\n * Checks if the given value can be set for this field.\r\n * @param {*} value Value to check\r\n * @param {boolean=} skipRepeated Whether to skip the repeated value check or not. Defaults to false.\r\n * @return {*} Verified, maybe adjusted, value\r\n * @throws {Error} If the value cannot be set for this field\r\n * @expose\r\n */\r\n FieldPrototype.verifyValue = function(value, skipRepeated) {\r\n skipRepeated = skipRepeated || false;\r\n var fail = function(val, msg) {\r\n throw Error(\"Illegal value for \"+this.toString(true)+\" of type \"+this.type.name+\": \"+val+\" (\"+msg+\")\");\r\n }.bind(this);\r\n if (value === null) { // NULL values for optional fields\r\n if (this.required)\r\n fail(typeof value, \"required\");\r\n if (this.syntax === 'proto3' && this.type !== ProtoBuf.TYPES[\"message\"])\r\n fail(typeof value, \"proto3 field without field presence cannot be null\");\r\n return null;\r\n }\r\n var i;\r\n if (this.repeated && !skipRepeated) { // Repeated values as arrays\r\n if (!Array.isArray(value))\r\n value = [value];\r\n var res = [];\r\n for (i=0; i 0;\r\n\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n return value.remaining() > 0;\r\n\r\n case ProtoBuf.TYPES[\"enum\"]:\r\n return value !== 0;\r\n\r\n case ProtoBuf.TYPES[\"message\"]:\r\n return value !== null;\r\n default:\r\n return true;\r\n }\r\n };\r\n\r\n /**\r\n * Encodes the specified field value to the specified buffer.\r\n * @param {*} value Verified field value\r\n * @param {ByteBuffer} buffer ByteBuffer to encode to\r\n * @param {!ProtoBuf.Builder.Message} message Runtime message\r\n * @return {ByteBuffer} The ByteBuffer for chaining\r\n * @throws {Error} If the field cannot be encoded\r\n * @expose\r\n */\r\n FieldPrototype.encode = function(value, buffer, message) {\r\n if (this.type === null || typeof this.type !== 'object')\r\n throw Error(\"[INTERNAL] Unresolved type in \"+this.toString(true)+\": \"+this.type);\r\n if (value === null || (this.repeated && value.length == 0))\r\n return buffer; // Optional omitted\r\n try {\r\n if (this.repeated) {\r\n var i;\r\n // \"Only repeated fields of primitive numeric types (types which use the varint, 32-bit, or 64-bit wire\r\n // types) can be declared 'packed'.\"\r\n if (this.options[\"packed\"] && ProtoBuf.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType) >= 0) {\r\n // \"All of the elements of the field are packed into a single key-value pair with wire type 2\r\n // (length-delimited). Each element is encoded the same way it would be normally, except without a\r\n // tag preceding it.\"\r\n buffer.writeVarint32((this.id << 3) | ProtoBuf.WIRE_TYPES.LDELIM);\r\n buffer.ensureCapacity(buffer.offset += 1); // We do not know the length yet, so let's assume a varint of length 1\r\n var start = buffer.offset; // Remember where the contents begin\r\n for (i=0; i 1) { // We need to move the contents\r\n var contents = buffer.slice(start, buffer.offset);\r\n start += varintLen-1;\r\n buffer.offset = start;\r\n buffer.append(contents);\r\n }\r\n buffer.writeVarint32(len, start-varintLen);\r\n } else {\r\n // \"If your message definition has repeated elements (without the [packed=true] option), the encoded\r\n // message has zero or more key-value pairs with the same tag number\"\r\n for (i=0; i= 0) {\r\n n += ByteBuffer.calculateVarint32((this.id << 3) | ProtoBuf.WIRE_TYPES.LDELIM);\r\n ni = 0;\r\n for (i=0; i= 0) {\r\n if (!skipRepeated) {\r\n nBytes = buffer.readVarint32();\r\n nBytes = buffer.offset + nBytes; // Limit\r\n var values = [];\r\n while (buffer.offset < nBytes)\r\n values.push(this.decode(this.type.wireType, buffer, true));\r\n return values;\r\n }\r\n // Read the next value otherwise...\r\n }\r\n\r\n // Handle maps.\r\n if (this.map) {\r\n // Read one (key, value) submessage, and return [key, value]\r\n var key = Element.defaultFieldValue(this.keyType);\r\n value = Element.defaultFieldValue(this.type);\r\n\r\n // Read the length\r\n nBytes = buffer.readVarint32();\r\n if (buffer.remaining() < nBytes)\r\n throw Error(\"Illegal number of bytes for \"+this.toString(true)+\": \"+nBytes+\" required but got only \"+buffer.remaining());\r\n\r\n // Get a sub-buffer of this key/value submessage\r\n var msgbuf = buffer.clone();\r\n msgbuf.limit = msgbuf.offset + nBytes;\r\n buffer.offset += nBytes;\r\n\r\n while (msgbuf.remaining() > 0) {\r\n var tag = msgbuf.readVarint32();\r\n wireType = tag & 0x07;\r\n var id = tag >>> 3;\r\n if (id === 1) {\r\n key = this.keyElement.decode(msgbuf, wireType, id);\r\n } else if (id === 2) {\r\n value = this.element.decode(msgbuf, wireType, id);\r\n } else {\r\n throw Error(\"Unexpected tag in map field key/value submessage\");\r\n }\r\n }\r\n\r\n return [key, value];\r\n }\r\n\r\n // Handle singular and non-packed repeated field values.\r\n return this.element.decode(buffer, wireType, this.id);\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.Field\r\n * @expose\r\n */\r\n Reflect.Message.Field = Field;\r\n\r\n /**\r\n * Constructs a new Message ExtensionField.\r\n * @exports ProtoBuf.Reflect.Message.ExtensionField\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Message} message Message reference\r\n * @param {string} rule Rule, one of requried, optional, repeated\r\n * @param {string} type Data type, e.g. int32\r\n * @param {string} name Field name\r\n * @param {number} id Unique field id\r\n * @param {!Object.=} options Options\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Message.Field\r\n */\r\n var ExtensionField = function(builder, message, rule, type, name, id, options) {\r\n Field.call(this, builder, message, rule, /* keytype = */ null, type, name, id, options);\r\n\r\n /**\r\n * Extension reference.\r\n * @type {!ProtoBuf.Reflect.Extension}\r\n * @expose\r\n */\r\n this.extension;\r\n };\r\n\r\n // Extends Field\r\n ExtensionField.prototype = Object.create(Field.prototype);\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.ExtensionField\r\n * @expose\r\n */\r\n Reflect.Message.ExtensionField = ExtensionField;\r\n\r\n /**\r\n * Constructs a new Message OneOf.\r\n * @exports ProtoBuf.Reflect.Message.OneOf\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Message} message Message reference\r\n * @param {string} name OneOf name\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.T\r\n */\r\n var OneOf = function(builder, message, name) {\r\n T.call(this, builder, message, name);\r\n\r\n /**\r\n * Enclosed fields.\r\n * @type {!Array.}\r\n * @expose\r\n */\r\n this.fields = [];\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.OneOf\r\n * @expose\r\n */\r\n Reflect.Message.OneOf = OneOf;\r\n\r\n /**\r\n * Constructs a new Enum.\r\n * @exports ProtoBuf.Reflect.Enum\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.T} parent Parent Reflect object\r\n * @param {string} name Enum name\r\n * @param {Object.=} options Enum options\r\n * @param {string?} syntax The syntax level (e.g., proto3)\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Namespace\r\n */\r\n var Enum = function(builder, parent, name, options, syntax) {\r\n Namespace.call(this, builder, parent, name, options, syntax);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Enum\";\r\n\r\n /**\r\n * Runtime enum object.\r\n * @type {Object.|null}\r\n * @expose\r\n */\r\n this.object = null;\r\n };\r\n\r\n /**\r\n * Gets the string name of an enum value.\r\n * @param {!ProtoBuf.Builder.Enum} enm Runtime enum\r\n * @param {number} value Enum value\r\n * @returns {?string} Name or `null` if not present\r\n * @expose\r\n */\r\n Enum.getName = function(enm, value) {\r\n var keys = Object.keys(enm);\r\n for (var i=0, key; i}\r\n * @expose\r\n */\r\n EnumPrototype.build = function(rebuild) {\r\n if (this.object && !rebuild)\r\n return this.object;\r\n var enm = new ProtoBuf.Builder.Enum(),\r\n values = this.getChildren(Enum.Value);\r\n for (var i=0, k=values.length; i=} options Options\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Namespace\r\n */\r\n var Service = function(builder, root, name, options) {\r\n Namespace.call(this, builder, root, name, options);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Service\";\r\n\r\n /**\r\n * Built runtime service class.\r\n * @type {?function(new:ProtoBuf.Builder.Service)}\r\n */\r\n this.clazz = null;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service.prototype\r\n * @inner\r\n */\r\n var ServicePrototype = Service.prototype = Object.create(Namespace.prototype);\r\n\r\n /**\r\n * Builds the service and returns the runtime counterpart, which is a fully functional class.\r\n * @see ProtoBuf.Builder.Service\r\n * @param {boolean=} rebuild Whether to rebuild or not\r\n * @return {Function} Service class\r\n * @throws {Error} If the message cannot be built\r\n * @expose\r\n */\r\n ServicePrototype.build = function(rebuild) {\r\n if (this.clazz && !rebuild)\r\n return this.clazz;\r\n\r\n // Create the runtime Service class in its own scope\r\n return this.clazz = (function(ProtoBuf, T) {\r\n\r\n /**\r\n * Constructs a new runtime Service.\r\n * @name ProtoBuf.Builder.Service\r\n * @param {function(string, ProtoBuf.Builder.Message, function(Error, ProtoBuf.Builder.Message=))=} rpcImpl RPC implementation receiving the method name and the message\r\n * @class Barebone of all runtime services.\r\n * @constructor\r\n * @throws {Error} If the service cannot be created\r\n */\r\n var Service = function(rpcImpl) {\r\n ProtoBuf.Builder.Service.call(this);\r\n\r\n /**\r\n * Service implementation.\r\n * @name ProtoBuf.Builder.Service#rpcImpl\r\n * @type {!function(string, ProtoBuf.Builder.Message, function(Error, ProtoBuf.Builder.Message=))}\r\n * @expose\r\n */\r\n this.rpcImpl = rpcImpl || function(name, msg, callback) {\r\n // This is what a user has to implement: A function receiving the method name, the actual message to\r\n // send (type checked) and the callback that's either provided with the error as its first\r\n // argument or null and the actual response message.\r\n setTimeout(callback.bind(this, Error(\"Not implemented, see: https://github.com/dcodeIO/ProtoBuf.js/wiki/Services\")), 0); // Must be async!\r\n };\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Builder.Service.prototype\r\n * @inner\r\n */\r\n var ServicePrototype = Service.prototype = Object.create(ProtoBuf.Builder.Service.prototype);\r\n\r\n /**\r\n * Asynchronously performs an RPC call using the given RPC implementation.\r\n * @name ProtoBuf.Builder.Service.[Method]\r\n * @function\r\n * @param {!function(string, ProtoBuf.Builder.Message, function(Error, ProtoBuf.Builder.Message=))} rpcImpl RPC implementation\r\n * @param {ProtoBuf.Builder.Message} req Request\r\n * @param {function(Error, (ProtoBuf.Builder.Message|ByteBuffer|Buffer|string)=)} callback Callback receiving\r\n * the error if any and the response either as a pre-parsed message or as its raw bytes\r\n * @abstract\r\n */\r\n\r\n /**\r\n * Asynchronously performs an RPC call using the instance's RPC implementation.\r\n * @name ProtoBuf.Builder.Service#[Method]\r\n * @function\r\n * @param {ProtoBuf.Builder.Message} req Request\r\n * @param {function(Error, (ProtoBuf.Builder.Message|ByteBuffer|Buffer|string)=)} callback Callback receiving\r\n * the error if any and the response either as a pre-parsed message or as its raw bytes\r\n * @abstract\r\n */\r\n\r\n var rpc = T.getChildren(ProtoBuf.Reflect.Service.RPCMethod);\r\n for (var i=0; i}\r\n * @expose\r\n */\r\n var $optionsS; // cc needs this\r\n\r\n /**\r\n * Service options.\r\n * @name ProtoBuf.Builder.Service#$options\r\n * @type {Object.}\r\n * @expose\r\n */\r\n var $options;\r\n\r\n /**\r\n * Reflection type.\r\n * @name ProtoBuf.Builder.Service.$type\r\n * @type {!ProtoBuf.Reflect.Service}\r\n * @expose\r\n */\r\n var $typeS;\r\n\r\n /**\r\n * Reflection type.\r\n * @name ProtoBuf.Builder.Service#$type\r\n * @type {!ProtoBuf.Reflect.Service}\r\n * @expose\r\n */\r\n var $type;\r\n\r\n if (Object.defineProperty)\r\n Object.defineProperty(Service, \"$options\", { \"value\": T.buildOpt() }),\r\n Object.defineProperty(ServicePrototype, \"$options\", { \"value\": Service[\"$options\"] }),\r\n Object.defineProperty(Service, \"$type\", { \"value\": T }),\r\n Object.defineProperty(ServicePrototype, \"$type\", { \"value\": T });\r\n\r\n return Service;\r\n\r\n })(ProtoBuf, this);\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service\r\n * @expose\r\n */\r\n Reflect.Service = Service;\r\n\r\n /**\r\n * Abstract service method.\r\n * @exports ProtoBuf.Reflect.Service.Method\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Service} svc Service\r\n * @param {string} name Method name\r\n * @param {Object.=} options Options\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.T\r\n */\r\n var Method = function(builder, svc, name, options) {\r\n T.call(this, builder, svc, name);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Service.Method\";\r\n\r\n /**\r\n * Options.\r\n * @type {Object.}\r\n * @expose\r\n */\r\n this.options = options || {};\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service.Method.prototype\r\n * @inner\r\n */\r\n var MethodPrototype = Method.prototype = Object.create(T.prototype);\r\n\r\n /**\r\n * Builds the method's '$options' property.\r\n * @name ProtoBuf.Reflect.Service.Method#buildOpt\r\n * @function\r\n * @return {Object.}\r\n */\r\n MethodPrototype.buildOpt = NamespacePrototype.buildOpt;\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service.Method\r\n * @expose\r\n */\r\n Reflect.Service.Method = Method;\r\n\r\n /**\r\n * RPC service method.\r\n * @exports ProtoBuf.Reflect.Service.RPCMethod\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Service} svc Service\r\n * @param {string} name Method name\r\n * @param {string} request Request message name\r\n * @param {string} response Response message name\r\n * @param {boolean} request_stream Whether requests are streamed\r\n * @param {boolean} response_stream Whether responses are streamed\r\n * @param {Object.=} options Options\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Service.Method\r\n */\r\n var RPCMethod = function(builder, svc, name, request, response, request_stream, response_stream, options) {\r\n Method.call(this, builder, svc, name, options);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Service.RPCMethod\";\r\n\r\n /**\r\n * Request message name.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.requestName = request;\r\n\r\n /**\r\n * Response message name.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.responseName = response;\r\n\r\n /**\r\n * Whether requests are streamed\r\n * @type {bool}\r\n * @expose\r\n */\r\n this.requestStream = request_stream;\r\n\r\n /**\r\n * Whether responses are streamed\r\n * @type {bool}\r\n * @expose\r\n */\r\n this.responseStream = response_stream;\r\n\r\n /**\r\n * Resolved request message type.\r\n * @type {ProtoBuf.Reflect.Message}\r\n * @expose\r\n */\r\n this.resolvedRequestType = null;\r\n\r\n /**\r\n * Resolved response message type.\r\n * @type {ProtoBuf.Reflect.Message}\r\n * @expose\r\n */\r\n this.resolvedResponseType = null;\r\n };\r\n\r\n // Extends Method\r\n RPCMethod.prototype = Object.create(Method.prototype);\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service.RPCMethod\r\n * @expose\r\n */\r\n Reflect.Service.RPCMethod = RPCMethod;\r\n\r\n return Reflect;\r\n\r\n })(ProtoBuf);\r\n\r\n /**\r\n * @alias ProtoBuf.Builder\r\n * @expose\r\n */\r\n ProtoBuf.Builder = (function(ProtoBuf, Lang, Reflect) {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a new Builder.\r\n * @exports ProtoBuf.Builder\r\n * @class Provides the functionality to build protocol messages.\r\n * @param {Object.=} options Options\r\n * @constructor\r\n */\r\n var Builder = function(options) {\r\n\r\n /**\r\n * Namespace.\r\n * @type {ProtoBuf.Reflect.Namespace}\r\n * @expose\r\n */\r\n this.ns = new Reflect.Namespace(this, null, \"\"); // Global namespace\r\n\r\n /**\r\n * Namespace pointer.\r\n * @type {ProtoBuf.Reflect.T}\r\n * @expose\r\n */\r\n this.ptr = this.ns;\r\n\r\n /**\r\n * Resolved flag.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.resolved = false;\r\n\r\n /**\r\n * The current building result.\r\n * @type {Object.|null}\r\n * @expose\r\n */\r\n this.result = null;\r\n\r\n /**\r\n * Imported files.\r\n * @type {Array.}\r\n * @expose\r\n */\r\n this.files = {};\r\n\r\n /**\r\n * Import root override.\r\n * @type {?string}\r\n * @expose\r\n */\r\n this.importRoot = null;\r\n\r\n /**\r\n * Options.\r\n * @type {!Object.}\r\n * @expose\r\n */\r\n this.options = options || {};\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Builder.prototype\r\n * @inner\r\n */\r\n var BuilderPrototype = Builder.prototype;\r\n\r\n // ----- Definition tests -----\r\n\r\n /**\r\n * Tests if a definition most likely describes a message.\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isMessage = function(def) {\r\n // Messages require a string name\r\n if (typeof def[\"name\"] !== 'string')\r\n return false;\r\n // Messages do not contain values (enum) or rpc methods (service)\r\n if (typeof def[\"values\"] !== 'undefined' || typeof def[\"rpc\"] !== 'undefined')\r\n return false;\r\n return true;\r\n };\r\n\r\n /**\r\n * Tests if a definition most likely describes a message field.\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isMessageField = function(def) {\r\n // Message fields require a string rule, name and type and an id\r\n if (typeof def[\"rule\"] !== 'string' || typeof def[\"name\"] !== 'string' || typeof def[\"type\"] !== 'string' || typeof def[\"id\"] === 'undefined')\r\n return false;\r\n return true;\r\n };\r\n\r\n /**\r\n * Tests if a definition most likely describes an enum.\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isEnum = function(def) {\r\n // Enums require a string name\r\n if (typeof def[\"name\"] !== 'string')\r\n return false;\r\n // Enums require at least one value\r\n if (typeof def[\"values\"] === 'undefined' || !Array.isArray(def[\"values\"]) || def[\"values\"].length === 0)\r\n return false;\r\n return true;\r\n };\r\n\r\n /**\r\n * Tests if a definition most likely describes a service.\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isService = function(def) {\r\n // Services require a string name and an rpc object\r\n if (typeof def[\"name\"] !== 'string' || typeof def[\"rpc\"] !== 'object' || !def[\"rpc\"])\r\n return false;\r\n return true;\r\n };\r\n\r\n /**\r\n * Tests if a definition most likely describes an extended message\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isExtend = function(def) {\r\n // Extends rquire a string ref\r\n if (typeof def[\"ref\"] !== 'string')\r\n return false;\r\n return true;\r\n };\r\n\r\n // ----- Building -----\r\n\r\n /**\r\n * Resets the pointer to the root namespace.\r\n * @returns {!ProtoBuf.Builder} this\r\n * @expose\r\n */\r\n BuilderPrototype.reset = function() {\r\n this.ptr = this.ns;\r\n return this;\r\n };\r\n\r\n /**\r\n * Defines a namespace on top of the current pointer position and places the pointer on it.\r\n * @param {string} namespace\r\n * @return {!ProtoBuf.Builder} this\r\n * @expose\r\n */\r\n BuilderPrototype.define = function(namespace) {\r\n if (typeof namespace !== 'string' || !Lang.TYPEREF.test(namespace))\r\n throw Error(\"illegal namespace: \"+namespace);\r\n namespace.split(\".\").forEach(function(part) {\r\n var ns = this.ptr.getChild(part);\r\n if (ns === null) // Keep existing\r\n this.ptr.addChild(ns = new Reflect.Namespace(this, this.ptr, part));\r\n this.ptr = ns;\r\n }, this);\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates the specified definitions at the current pointer position.\r\n * @param {!Array.} defs Messages, enums or services to create\r\n * @returns {!ProtoBuf.Builder} this\r\n * @throws {Error} If a message definition is invalid\r\n * @expose\r\n */\r\n BuilderPrototype.create = function(defs) {\r\n if (!defs)\r\n return this; // Nothing to create\r\n if (!Array.isArray(defs))\r\n defs = [defs];\r\n else {\r\n if (defs.length === 0)\r\n return this;\r\n defs = defs.slice();\r\n }\r\n\r\n // It's quite hard to keep track of scopes and memory here, so let's do this iteratively.\r\n var stack = [defs];\r\n while (stack.length > 0) {\r\n defs = stack.pop();\r\n\r\n if (!Array.isArray(defs)) // Stack always contains entire namespaces\r\n throw Error(\"not a valid namespace: \"+JSON.stringify(defs));\r\n\r\n while (defs.length > 0) {\r\n var def = defs.shift(); // Namespaces always contain an array of messages, enums and services\r\n\r\n if (Builder.isMessage(def)) {\r\n var obj = new Reflect.Message(this, this.ptr, def[\"name\"], def[\"options\"], def[\"isGroup\"], def[\"syntax\"]);\r\n\r\n // Create OneOfs\r\n var oneofs = {};\r\n if (def[\"oneofs\"])\r\n Object.keys(def[\"oneofs\"]).forEach(function(name) {\r\n obj.addChild(oneofs[name] = new Reflect.Message.OneOf(this, obj, name));\r\n }, this);\r\n\r\n // Create fields\r\n if (def[\"fields\"])\r\n def[\"fields\"].forEach(function(fld) {\r\n if (obj.getChild(fld[\"id\"]|0) !== null)\r\n throw Error(\"duplicate or invalid field id in \"+obj.name+\": \"+fld['id']);\r\n if (fld[\"options\"] && typeof fld[\"options\"] !== 'object')\r\n throw Error(\"illegal field options in \"+obj.name+\"#\"+fld[\"name\"]);\r\n var oneof = null;\r\n if (typeof fld[\"oneof\"] === 'string' && !(oneof = oneofs[fld[\"oneof\"]]))\r\n throw Error(\"illegal oneof in \"+obj.name+\"#\"+fld[\"name\"]+\": \"+fld[\"oneof\"]);\r\n fld = new Reflect.Message.Field(this, obj, fld[\"rule\"], fld[\"keytype\"], fld[\"type\"], fld[\"name\"], fld[\"id\"], fld[\"options\"], oneof, def[\"syntax\"]);\r\n if (oneof)\r\n oneof.fields.push(fld);\r\n obj.addChild(fld);\r\n }, this);\r\n\r\n // Push children to stack\r\n var subObj = [];\r\n if (def[\"enums\"])\r\n def[\"enums\"].forEach(function(enm) {\r\n subObj.push(enm);\r\n });\r\n if (def[\"messages\"])\r\n def[\"messages\"].forEach(function(msg) {\r\n subObj.push(msg);\r\n });\r\n if (def[\"services\"])\r\n def[\"services\"].forEach(function(svc) {\r\n subObj.push(svc);\r\n });\r\n\r\n // Set extension range\r\n if (def[\"extensions\"]) {\r\n obj.extensions = def[\"extensions\"];\r\n if (obj.extensions[0] < ProtoBuf.ID_MIN)\r\n obj.extensions[0] = ProtoBuf.ID_MIN;\r\n if (obj.extensions[1] > ProtoBuf.ID_MAX)\r\n obj.extensions[1] = ProtoBuf.ID_MAX;\r\n }\r\n\r\n // Create on top of current namespace\r\n this.ptr.addChild(obj);\r\n if (subObj.length > 0) {\r\n stack.push(defs); // Push the current level back\r\n defs = subObj; // Continue processing sub level\r\n subObj = null;\r\n this.ptr = obj; // And move the pointer to this namespace\r\n obj = null;\r\n continue;\r\n }\r\n subObj = null;\r\n\r\n } else if (Builder.isEnum(def)) {\r\n\r\n obj = new Reflect.Enum(this, this.ptr, def[\"name\"], def[\"options\"], def[\"syntax\"]);\r\n def[\"values\"].forEach(function(val) {\r\n obj.addChild(new Reflect.Enum.Value(this, obj, val[\"name\"], val[\"id\"]));\r\n }, this);\r\n this.ptr.addChild(obj);\r\n\r\n } else if (Builder.isService(def)) {\r\n\r\n obj = new Reflect.Service(this, this.ptr, def[\"name\"], def[\"options\"]);\r\n Object.keys(def[\"rpc\"]).forEach(function(name) {\r\n var mtd = def[\"rpc\"][name];\r\n obj.addChild(new Reflect.Service.RPCMethod(this, obj, name, mtd[\"request\"], mtd[\"response\"], !!mtd[\"request_stream\"], !!mtd[\"response_stream\"], mtd[\"options\"]));\r\n }, this);\r\n this.ptr.addChild(obj);\r\n\r\n } else if (Builder.isExtend(def)) {\r\n\r\n obj = this.ptr.resolve(def[\"ref\"], true);\r\n if (obj) {\r\n def[\"fields\"].forEach(function(fld) {\r\n if (obj.getChild(fld['id']|0) !== null)\r\n throw Error(\"duplicate extended field id in \"+obj.name+\": \"+fld['id']);\r\n if (fld['id'] < obj.extensions[0] || fld['id'] > obj.extensions[1])\r\n throw Error(\"illegal extended field id in \"+obj.name+\": \"+fld['id']+\" (\"+obj.extensions.join(' to ')+\" expected)\");\r\n // Convert extension field names to camel case notation if the override is set\r\n var name = fld[\"name\"];\r\n if (this.options['convertFieldsToCamelCase'])\r\n name = ProtoBuf.Util.toCamelCase(name);\r\n // see #161: Extensions use their fully qualified name as their runtime key and...\r\n var field = new Reflect.Message.ExtensionField(this, obj, fld[\"rule\"], fld[\"type\"], this.ptr.fqn()+'.'+name, fld[\"id\"], fld[\"options\"]);\r\n // ...are added on top of the current namespace as an extension which is used for\r\n // resolving their type later on (the extension always keeps the original name to\r\n // prevent naming collisions)\r\n var ext = new Reflect.Extension(this, this.ptr, fld[\"name\"], field);\r\n field.extension = ext;\r\n this.ptr.addChild(ext);\r\n obj.addChild(field);\r\n }, this);\r\n\r\n } else if (!/\\.?google\\.protobuf\\./.test(def[\"ref\"])) // Silently skip internal extensions\r\n throw Error(\"extended message \"+def[\"ref\"]+\" is not defined\");\r\n\r\n } else\r\n throw Error(\"not a valid definition: \"+JSON.stringify(def));\r\n\r\n def = null;\r\n obj = null;\r\n }\r\n // Break goes here\r\n defs = null;\r\n this.ptr = this.ptr.parent; // Namespace done, continue at parent\r\n }\r\n this.resolved = false; // Require re-resolve\r\n this.result = null; // Require re-build\r\n return this;\r\n };\r\n\r\n /**\r\n * Propagates syntax to all children.\r\n * @param {!Object} parent\r\n * @inner\r\n */\r\n function propagateSyntax(parent) {\r\n if (parent['messages']) {\r\n parent['messages'].forEach(function(child) {\r\n child[\"syntax\"] = parent[\"syntax\"];\r\n propagateSyntax(child);\r\n });\r\n }\r\n if (parent['enums']) {\r\n parent['enums'].forEach(function(child) {\r\n child[\"syntax\"] = parent[\"syntax\"];\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Imports another definition into this builder.\r\n * @param {Object.} json Parsed import\r\n * @param {(string|{root: string, file: string})=} filename Imported file name\r\n * @returns {!ProtoBuf.Builder} this\r\n * @throws {Error} If the definition or file cannot be imported\r\n * @expose\r\n */\r\n BuilderPrototype[\"import\"] = function(json, filename) {\r\n var delim = '/';\r\n\r\n // Make sure to skip duplicate imports\r\n\r\n if (typeof filename === 'string') {\r\n\r\n if (ProtoBuf.Util.IS_NODE)\r\n filename = require(\"path\")['resolve'](filename);\r\n if (this.files[filename] === true)\r\n return this.reset();\r\n this.files[filename] = true;\r\n\r\n } else if (typeof filename === 'object') { // Object with root, file.\r\n\r\n var root = filename.root;\r\n if (ProtoBuf.Util.IS_NODE)\r\n root = require(\"path\")['resolve'](root);\r\n if (root.indexOf(\"\\\\\") >= 0 || filename.file.indexOf(\"\\\\\") >= 0)\r\n delim = '\\\\';\r\n var fname = root + delim + filename.file;\r\n if (this.files[fname] === true)\r\n return this.reset();\r\n this.files[fname] = true;\r\n }\r\n\r\n // Import imports\r\n\r\n if (json['imports'] && json['imports'].length > 0) {\r\n var importRoot,\r\n resetRoot = false;\r\n\r\n if (typeof filename === 'object') { // If an import root is specified, override\r\n\r\n this.importRoot = filename[\"root\"]; resetRoot = true; // ... and reset afterwards\r\n importRoot = this.importRoot;\r\n filename = filename[\"file\"];\r\n if (importRoot.indexOf(\"\\\\\") >= 0 || filename.indexOf(\"\\\\\") >= 0)\r\n delim = '\\\\';\r\n\r\n } else if (typeof filename === 'string') {\r\n\r\n if (this.importRoot) // If import root is overridden, use it\r\n importRoot = this.importRoot;\r\n else { // Otherwise compute from filename\r\n if (filename.indexOf(\"/\") >= 0) { // Unix\r\n importRoot = filename.replace(/\\/[^\\/]*$/, \"\");\r\n if (/* /file.proto */ importRoot === \"\")\r\n importRoot = \"/\";\r\n } else if (filename.indexOf(\"\\\\\") >= 0) { // Windows\r\n importRoot = filename.replace(/\\\\[^\\\\]*$/, \"\");\r\n delim = '\\\\';\r\n } else\r\n importRoot = \".\";\r\n }\r\n\r\n } else\r\n importRoot = null;\r\n\r\n for (var i=0; i)=} path Specifies what to return. If omitted, the entire namespace will be returned.\r\n * @returns {!ProtoBuf.Builder.Message|!Object.}\r\n * @throws {Error} If a type could not be resolved\r\n * @expose\r\n */\r\n BuilderPrototype.build = function(path) {\r\n this.reset();\r\n if (!this.resolved)\r\n this.resolveAll(),\r\n this.resolved = true,\r\n this.result = null; // Require re-build\r\n if (this.result === null) // (Re-)Build\r\n this.result = this.ns.build();\r\n if (!path)\r\n return this.result;\r\n var part = typeof path === 'string' ? path.split(\".\") : path,\r\n ptr = this.result; // Build namespace pointer (no hasChild etc.)\r\n for (var i=0; i=} contents Initial contents\r\n * @constructor\r\n */\r\n var Map = function(field, contents) {\r\n if (!field.map)\r\n throw Error(\"field is not a map\");\r\n\r\n /**\r\n * The field corresponding to this map.\r\n * @type {!ProtoBuf.Reflect.Field}\r\n */\r\n this.field = field;\r\n\r\n /**\r\n * Element instance corresponding to key type.\r\n * @type {!ProtoBuf.Reflect.Element}\r\n */\r\n this.keyElem = new Reflect.Element(field.keyType, null, true, field.syntax);\r\n\r\n /**\r\n * Element instance corresponding to value type.\r\n * @type {!ProtoBuf.Reflect.Element}\r\n */\r\n this.valueElem = new Reflect.Element(field.type, field.resolvedType, false, field.syntax);\r\n\r\n /**\r\n * Internal map: stores mapping of (string form of key) -> (key, value)\r\n * pair.\r\n *\r\n * We provide map semantics for arbitrary key types, but we build on top\r\n * of an Object, which has only string keys. In order to avoid the need\r\n * to convert a string key back to its native type in many situations,\r\n * we store the native key value alongside the value. Thus, we only need\r\n * a one-way mapping from a key type to its string form that guarantees\r\n * uniqueness and equality (i.e., str(K1) === str(K2) if and only if K1\r\n * === K2).\r\n *\r\n * @type {!Object}\r\n */\r\n this.map = {};\r\n\r\n /**\r\n * Returns the number of elements in the map.\r\n */\r\n Object.defineProperty(this, \"size\", {\r\n get: function() { return Object.keys(this.map).length; }\r\n });\r\n\r\n // Fill initial contents from a raw object.\r\n if (contents) {\r\n var keys = Object.keys(contents);\r\n for (var i = 0; i < keys.length; i++) {\r\n var key = this.keyElem.valueFromString(keys[i]);\r\n var val = this.valueElem.verifyValue(contents[keys[i]]);\r\n this.map[this.keyElem.valueToString(key)] =\r\n { key: key, value: val };\r\n }\r\n }\r\n };\r\n\r\n var MapPrototype = Map.prototype;\r\n\r\n /**\r\n * Helper: return an iterator over an array.\r\n * @param {!Array<*>} arr the array\r\n * @returns {!Object} an iterator\r\n * @inner\r\n */\r\n function arrayIterator(arr) {\r\n var idx = 0;\r\n return {\r\n next: function() {\r\n if (idx < arr.length)\r\n return { done: false, value: arr[idx++] };\r\n return { done: true };\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Clears the map.\r\n */\r\n MapPrototype.clear = function() {\r\n this.map = {};\r\n };\r\n\r\n /**\r\n * Deletes a particular key from the map.\r\n * @returns {boolean} Whether any entry with this key was deleted.\r\n */\r\n MapPrototype[\"delete\"] = function(key) {\r\n var keyValue = this.keyElem.valueToString(this.keyElem.verifyValue(key));\r\n var hadKey = keyValue in this.map;\r\n delete this.map[keyValue];\r\n return hadKey;\r\n };\r\n\r\n /**\r\n * Returns an iterator over [key, value] pairs in the map.\r\n * @returns {Object} The iterator\r\n */\r\n MapPrototype.entries = function() {\r\n var entries = [];\r\n var strKeys = Object.keys(this.map);\r\n for (var i = 0, entry; i < strKeys.length; i++)\r\n entries.push([(entry=this.map[strKeys[i]]).key, entry.value]);\r\n return arrayIterator(entries);\r\n };\r\n\r\n /**\r\n * Returns an iterator over keys in the map.\r\n * @returns {Object} The iterator\r\n */\r\n MapPrototype.keys = function() {\r\n var keys = [];\r\n var strKeys = Object.keys(this.map);\r\n for (var i = 0; i < strKeys.length; i++)\r\n keys.push(this.map[strKeys[i]].key);\r\n return arrayIterator(keys);\r\n };\r\n\r\n /**\r\n * Returns an iterator over values in the map.\r\n * @returns {!Object} The iterator\r\n */\r\n MapPrototype.values = function() {\r\n var values = [];\r\n var strKeys = Object.keys(this.map);\r\n for (var i = 0; i < strKeys.length; i++)\r\n values.push(this.map[strKeys[i]].value);\r\n return arrayIterator(values);\r\n };\r\n\r\n /**\r\n * Iterates over entries in the map, calling a function on each.\r\n * @param {function(this:*, *, *, *)} cb The callback to invoke with value, key, and map arguments.\r\n * @param {Object=} thisArg The `this` value for the callback\r\n */\r\n MapPrototype.forEach = function(cb, thisArg) {\r\n var strKeys = Object.keys(this.map);\r\n for (var i = 0, entry; i < strKeys.length; i++)\r\n cb.call(thisArg, (entry=this.map[strKeys[i]]).value, entry.key, this);\r\n };\r\n\r\n /**\r\n * Sets a key in the map to the given value.\r\n * @param {*} key The key\r\n * @param {*} value The value\r\n * @returns {!ProtoBuf.Map} The map instance\r\n */\r\n MapPrototype.set = function(key, value) {\r\n var keyValue = this.keyElem.verifyValue(key);\r\n var valValue = this.valueElem.verifyValue(value);\r\n this.map[this.keyElem.valueToString(keyValue)] =\r\n { key: keyValue, value: valValue };\r\n return this;\r\n };\r\n\r\n /**\r\n * Gets the value corresponding to a key in the map.\r\n * @param {*} key The key\r\n * @returns {*|undefined} The value, or `undefined` if key not present\r\n */\r\n MapPrototype.get = function(key) {\r\n var keyValue = this.keyElem.valueToString(this.keyElem.verifyValue(key));\r\n if (!(keyValue in this.map))\r\n return undefined;\r\n return this.map[keyValue].value;\r\n };\r\n\r\n /**\r\n * Determines whether the given key is present in the map.\r\n * @param {*} key The key\r\n * @returns {boolean} `true` if the key is present\r\n */\r\n MapPrototype.has = function(key) {\r\n var keyValue = this.keyElem.valueToString(this.keyElem.verifyValue(key));\r\n return (keyValue in this.map);\r\n };\r\n\r\n return Map;\r\n })(ProtoBuf, ProtoBuf.Reflect);\r\n\r\n\r\n /**\r\n * Loads a .proto string and returns the Builder.\r\n * @param {string} proto .proto file contents\r\n * @param {(ProtoBuf.Builder|string|{root: string, file: string})=} builder Builder to append to. Will create a new one if omitted.\r\n * @param {(string|{root: string, file: string})=} filename The corresponding file name if known. Must be specified for imports.\r\n * @return {ProtoBuf.Builder} Builder to create new messages\r\n * @throws {Error} If the definition cannot be parsed or built\r\n * @expose\r\n */\r\n ProtoBuf.loadProto = function(proto, builder, filename) {\r\n if (typeof builder === 'string' || (builder && typeof builder[\"file\"] === 'string' && typeof builder[\"root\"] === 'string'))\r\n filename = builder,\r\n builder = undefined;\r\n return ProtoBuf.loadJson(ProtoBuf.DotProto.Parser.parse(proto), builder, filename);\r\n };\r\n\r\n /**\r\n * Loads a .proto string and returns the Builder. This is an alias of {@link ProtoBuf.loadProto}.\r\n * @function\r\n * @param {string} proto .proto file contents\r\n * @param {(ProtoBuf.Builder|string)=} builder Builder to append to. Will create a new one if omitted.\r\n * @param {(string|{root: string, file: string})=} filename The corresponding file name if known. Must be specified for imports.\r\n * @return {ProtoBuf.Builder} Builder to create new messages\r\n * @throws {Error} If the definition cannot be parsed or built\r\n * @expose\r\n */\r\n ProtoBuf.protoFromString = ProtoBuf.loadProto; // Legacy\r\n\r\n /**\r\n * Loads a .proto file and returns the Builder.\r\n * @param {string|{root: string, file: string}} filename Path to proto file or an object specifying 'file' with\r\n * an overridden 'root' path for all imported files.\r\n * @param {function(?Error, !ProtoBuf.Builder=)=} callback Callback that will receive `null` as the first and\r\n * the Builder as its second argument on success, otherwise the error as its first argument. If omitted, the\r\n * file will be read synchronously and this function will return the Builder.\r\n * @param {ProtoBuf.Builder=} builder Builder to append to. Will create a new one if omitted.\r\n * @return {?ProtoBuf.Builder|undefined} The Builder if synchronous (no callback specified, will be NULL if the\r\n * request has failed), else undefined\r\n * @expose\r\n */\r\n ProtoBuf.loadProtoFile = function(filename, callback, builder) {\r\n if (callback && typeof callback === 'object')\r\n builder = callback,\r\n callback = null;\r\n else if (!callback || typeof callback !== 'function')\r\n callback = null;\r\n if (callback)\r\n return ProtoBuf.Util.fetch(typeof filename === 'string' ? filename : filename[\"root\"]+\"/\"+filename[\"file\"], function(contents) {\r\n if (contents === null) {\r\n callback(Error(\"Failed to fetch file\"));\r\n return;\r\n }\r\n try {\r\n callback(null, ProtoBuf.loadProto(contents, builder, filename));\r\n } catch (e) {\r\n callback(e);\r\n }\r\n });\r\n var contents = ProtoBuf.Util.fetch(typeof filename === 'object' ? filename[\"root\"]+\"/\"+filename[\"file\"] : filename);\r\n return contents === null ? null : ProtoBuf.loadProto(contents, builder, filename);\r\n };\r\n\r\n /**\r\n * Loads a .proto file and returns the Builder. This is an alias of {@link ProtoBuf.loadProtoFile}.\r\n * @function\r\n * @param {string|{root: string, file: string}} filename Path to proto file or an object specifying 'file' with\r\n * an overridden 'root' path for all imported files.\r\n * @param {function(?Error, !ProtoBuf.Builder=)=} callback Callback that will receive `null` as the first and\r\n * the Builder as its second argument on success, otherwise the error as its first argument. If omitted, the\r\n * file will be read synchronously and this function will return the Builder.\r\n * @param {ProtoBuf.Builder=} builder Builder to append to. Will create a new one if omitted.\r\n * @return {!ProtoBuf.Builder|undefined} The Builder if synchronous (no callback specified, will be NULL if the\r\n * request has failed), else undefined\r\n * @expose\r\n */\r\n ProtoBuf.protoFromFile = ProtoBuf.loadProtoFile; // Legacy\r\n\r\n\r\n /**\r\n * Constructs a new empty Builder.\r\n * @param {Object.=} options Builder options, defaults to global options set on ProtoBuf\r\n * @return {!ProtoBuf.Builder} Builder\r\n * @expose\r\n */\r\n ProtoBuf.newBuilder = function(options) {\r\n options = options || {};\r\n if (typeof options['convertFieldsToCamelCase'] === 'undefined')\r\n options['convertFieldsToCamelCase'] = ProtoBuf.convertFieldsToCamelCase;\r\n if (typeof options['populateAccessors'] === 'undefined')\r\n options['populateAccessors'] = ProtoBuf.populateAccessors;\r\n return new ProtoBuf.Builder(options);\r\n };\r\n\r\n /**\r\n * Loads a .json definition and returns the Builder.\r\n * @param {!*|string} json JSON definition\r\n * @param {(ProtoBuf.Builder|string|{root: string, file: string})=} builder Builder to append to. Will create a new one if omitted.\r\n * @param {(string|{root: string, file: string})=} filename The corresponding file name if known. Must be specified for imports.\r\n * @return {ProtoBuf.Builder} Builder to create new messages\r\n * @throws {Error} If the definition cannot be parsed or built\r\n * @expose\r\n */\r\n ProtoBuf.loadJson = function(json, builder, filename) {\r\n if (typeof builder === 'string' || (builder && typeof builder[\"file\"] === 'string' && typeof builder[\"root\"] === 'string'))\r\n filename = builder,\r\n builder = null;\r\n if (!builder || typeof builder !== 'object')\r\n builder = ProtoBuf.newBuilder();\r\n if (typeof json === 'string')\r\n json = JSON.parse(json);\r\n builder[\"import\"](json, filename);\r\n builder.resolveAll();\r\n return builder;\r\n };\r\n\r\n /**\r\n * Loads a .json file and returns the Builder.\r\n * @param {string|!{root: string, file: string}} filename Path to json file or an object specifying 'file' with\r\n * an overridden 'root' path for all imported files.\r\n * @param {function(?Error, !ProtoBuf.Builder=)=} callback Callback that will receive `null` as the first and\r\n * the Builder as its second argument on success, otherwise the error as its first argument. If omitted, the\r\n * file will be read synchronously and this function will return the Builder.\r\n * @param {ProtoBuf.Builder=} builder Builder to append to. Will create a new one if omitted.\r\n * @return {?ProtoBuf.Builder|undefined} The Builder if synchronous (no callback specified, will be NULL if the\r\n * request has failed), else undefined\r\n * @expose\r\n */\r\n ProtoBuf.loadJsonFile = function(filename, callback, builder) {\r\n if (callback && typeof callback === 'object')\r\n builder = callback,\r\n callback = null;\r\n else if (!callback || typeof callback !== 'function')\r\n callback = null;\r\n if (callback)\r\n return ProtoBuf.Util.fetch(typeof filename === 'string' ? filename : filename[\"root\"]+\"/\"+filename[\"file\"], function(contents) {\r\n if (contents === null) {\r\n callback(Error(\"Failed to fetch file\"));\r\n return;\r\n }\r\n try {\r\n callback(null, ProtoBuf.loadJson(JSON.parse(contents), builder, filename));\r\n } catch (e) {\r\n callback(e);\r\n }\r\n });\r\n var contents = ProtoBuf.Util.fetch(typeof filename === 'object' ? filename[\"root\"]+\"/\"+filename[\"file\"] : filename);\r\n return contents === null ? null : ProtoBuf.loadJson(JSON.parse(contents), builder, filename);\r\n };\r\n\r\n return ProtoBuf;\r\n});\r\n","// shim for using process in browser\n\nvar process = module.exports = {};\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = setTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n clearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n setTimeout(drainQueue, 0);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/*\r\n Copyright 2013-2014 Daniel Wirtz \r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n */\r\n\r\n/**\r\n * @license bytebuffer.js (c) 2015 Daniel Wirtz \r\n * Backing buffer: ArrayBuffer, Accessor: Uint8Array\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/bytebuffer.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (typeof define === 'function' && define[\"amd\"])\r\n define([\"long\"], factory);\r\n /* CommonJS */ else if (typeof require === 'function' && typeof module === \"object\" && module && module[\"exports\"])\r\n module['exports'] = (function() {\r\n var Long; try { Long = require(\"long\"); } catch (e) {}\r\n return factory(Long);\r\n })();\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"ByteBuffer\"] = factory(global[\"dcodeIO\"][\"Long\"]);\r\n\r\n})(this, function(Long) {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a new ByteBuffer.\r\n * @class The swiss army knife for binary data in JavaScript.\r\n * @exports ByteBuffer\r\n * @constructor\r\n * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}.\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @expose\r\n */\r\n var ByteBuffer = function(capacity, littleEndian, noAssert) {\r\n if (typeof capacity === 'undefined')\r\n capacity = ByteBuffer.DEFAULT_CAPACITY;\r\n if (typeof littleEndian === 'undefined')\r\n littleEndian = ByteBuffer.DEFAULT_ENDIAN;\r\n if (typeof noAssert === 'undefined')\r\n noAssert = ByteBuffer.DEFAULT_NOASSERT;\r\n if (!noAssert) {\r\n capacity = capacity | 0;\r\n if (capacity < 0)\r\n throw RangeError(\"Illegal capacity\");\r\n littleEndian = !!littleEndian;\r\n noAssert = !!noAssert;\r\n }\r\n\r\n /**\r\n * Backing ArrayBuffer.\r\n * @type {!ArrayBuffer}\r\n * @expose\r\n */\r\n this.buffer = capacity === 0 ? EMPTY_BUFFER : new ArrayBuffer(capacity);\r\n\r\n /**\r\n * Uint8Array utilized to manipulate the backing buffer. Becomes `null` if the backing buffer has a capacity of `0`.\r\n * @type {?Uint8Array}\r\n * @expose\r\n */\r\n this.view = capacity === 0 ? null : new Uint8Array(this.buffer);\r\n\r\n /**\r\n * Absolute read/write offset.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#flip\r\n * @see ByteBuffer#clear\r\n */\r\n this.offset = 0;\r\n\r\n /**\r\n * Marked offset.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#mark\r\n * @see ByteBuffer#reset\r\n */\r\n this.markedOffset = -1;\r\n\r\n /**\r\n * Absolute limit of the contained data. Set to the backing buffer's capacity upon allocation.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#flip\r\n * @see ByteBuffer#clear\r\n */\r\n this.limit = capacity;\r\n\r\n /**\r\n * Whether to use little endian byte order, defaults to `false` for big endian.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.littleEndian = typeof littleEndian !== 'undefined' ? !!littleEndian : false;\r\n\r\n /**\r\n * Whether to skip assertions of offsets and values, defaults to `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.noAssert = !!noAssert;\r\n };\r\n\r\n /**\r\n * ByteBuffer version.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.VERSION = \"5.0.0\";\r\n\r\n /**\r\n * Little endian constant that can be used instead of its boolean value. Evaluates to `true`.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.LITTLE_ENDIAN = true;\r\n\r\n /**\r\n * Big endian constant that can be used instead of its boolean value. Evaluates to `false`.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.BIG_ENDIAN = false;\r\n\r\n /**\r\n * Default initial capacity of `16`.\r\n * @type {number}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_CAPACITY = 16;\r\n\r\n /**\r\n * Default endianess of `false` for big endian.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_ENDIAN = ByteBuffer.BIG_ENDIAN;\r\n\r\n /**\r\n * Default no assertions flag of `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_NOASSERT = false;\r\n\r\n /**\r\n * A `Long` class for representing a 64-bit two's-complement integer value. May be `null` if Long.js has not been loaded\r\n * and int64 support is not available.\r\n * @type {?Long}\r\n * @const\r\n * @see https://github.com/dcodeIO/Long.js\r\n * @expose\r\n */\r\n ByteBuffer.Long = Long || null;\r\n\r\n /**\r\n * @alias ByteBuffer.prototype\r\n * @inner\r\n */\r\n var ByteBufferPrototype = ByteBuffer.prototype;\r\n\r\n /**\r\n * An indicator used to reliably determine if an object is a ByteBuffer or not.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n * @private\r\n */\r\n ByteBufferPrototype.__isByteBuffer__;\r\n\r\n Object.defineProperty(ByteBufferPrototype, \"__isByteBuffer__\", {\r\n value: true,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n\r\n // helpers\r\n\r\n /**\r\n * @type {!ArrayBuffer}\r\n * @inner\r\n */\r\n var EMPTY_BUFFER = new ArrayBuffer(0);\r\n\r\n /**\r\n * String.fromCharCode reference for compile-time renaming.\r\n * @type {function(...number):string}\r\n * @inner\r\n */\r\n var stringFromCharCode = String.fromCharCode;\r\n\r\n /**\r\n * Creates a source function for a string.\r\n * @param {string} s String to read from\r\n * @returns {function():number|null} Source function returning the next char code respectively `null` if there are\r\n * no more characters left.\r\n * @throws {TypeError} If the argument is invalid\r\n * @inner\r\n */\r\n function stringSource(s) {\r\n var i=0; return function() {\r\n return i < s.length ? s.charCodeAt(i++) : null;\r\n };\r\n }\r\n\r\n /**\r\n * Creates a destination function for a string.\r\n * @returns {function(number=):undefined|string} Destination function successively called with the next char code.\r\n * Returns the final string when called without arguments.\r\n * @inner\r\n */\r\n function stringDestination() {\r\n var cs = [], ps = []; return function() {\r\n if (arguments.length === 0)\r\n return ps.join('')+stringFromCharCode.apply(String, cs);\r\n if (cs.length + arguments.length > 1024)\r\n ps.push(stringFromCharCode.apply(String, cs)),\r\n cs.length = 0;\r\n Array.prototype.push.apply(cs, arguments);\r\n };\r\n }\r\n\r\n /**\r\n * Gets the accessor type.\r\n * @returns {Function} `Buffer` under node.js, `Uint8Array` respectively `DataView` in the browser (classes)\r\n * @expose\r\n */\r\n ByteBuffer.accessor = function() {\r\n return Uint8Array;\r\n };\r\n /**\r\n * Allocates a new ByteBuffer backed by a buffer of the specified capacity.\r\n * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}.\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBuffer.allocate = function(capacity, littleEndian, noAssert) {\r\n return new ByteBuffer(capacity, littleEndian, noAssert);\r\n };\r\n\r\n /**\r\n * Concatenates multiple ByteBuffers into one.\r\n * @param {!Array.} buffers Buffers to concatenate\r\n * @param {(string|boolean)=} encoding String encoding if `buffers` contains a string (\"base64\", \"hex\", \"binary\",\r\n * defaults to \"utf8\")\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order for the resulting ByteBuffer. Defaults\r\n * to {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values for the resulting ByteBuffer. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} Concatenated ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.concat = function(buffers, encoding, littleEndian, noAssert) {\r\n if (typeof encoding === 'boolean' || typeof encoding !== 'string') {\r\n noAssert = littleEndian;\r\n littleEndian = encoding;\r\n encoding = undefined;\r\n }\r\n var capacity = 0;\r\n for (var i=0, k=buffers.length, length; i 0) capacity += length;\r\n }\r\n if (capacity === 0)\r\n return new ByteBuffer(0, littleEndian, noAssert);\r\n var bb = new ByteBuffer(capacity, littleEndian, noAssert),\r\n bi;\r\n i=0; while (i} buffer Anything that can be wrapped\r\n * @param {(string|boolean)=} encoding String encoding if `buffer` is a string (\"base64\", \"hex\", \"binary\", defaults to\r\n * \"utf8\")\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} A ByteBuffer wrapping `buffer`\r\n * @expose\r\n */\r\n ByteBuffer.wrap = function(buffer, encoding, littleEndian, noAssert) {\r\n if (typeof encoding !== 'string') {\r\n noAssert = littleEndian;\r\n littleEndian = encoding;\r\n encoding = undefined;\r\n }\r\n if (typeof buffer === 'string') {\r\n if (typeof encoding === 'undefined')\r\n encoding = \"utf8\";\r\n switch (encoding) {\r\n case \"base64\":\r\n return ByteBuffer.fromBase64(buffer, littleEndian);\r\n case \"hex\":\r\n return ByteBuffer.fromHex(buffer, littleEndian);\r\n case \"binary\":\r\n return ByteBuffer.fromBinary(buffer, littleEndian);\r\n case \"utf8\":\r\n return ByteBuffer.fromUTF8(buffer, littleEndian);\r\n case \"debug\":\r\n return ByteBuffer.fromDebug(buffer, littleEndian);\r\n default:\r\n throw Error(\"Unsupported encoding: \"+encoding);\r\n }\r\n }\r\n if (buffer === null || typeof buffer !== 'object')\r\n throw TypeError(\"Illegal buffer\");\r\n var bb;\r\n if (ByteBuffer.isByteBuffer(buffer)) {\r\n bb = ByteBufferPrototype.clone.call(buffer);\r\n bb.markedOffset = -1;\r\n return bb;\r\n }\r\n if (buffer instanceof Uint8Array) { // Extract ArrayBuffer from Uint8Array\r\n bb = new ByteBuffer(0, littleEndian, noAssert);\r\n if (buffer.length > 0) { // Avoid references to more than one EMPTY_BUFFER\r\n bb.buffer = buffer.buffer;\r\n bb.offset = buffer.byteOffset;\r\n bb.limit = buffer.byteOffset + buffer.byteLength;\r\n bb.view = new Uint8Array(buffer.buffer);\r\n }\r\n } else if (buffer instanceof ArrayBuffer) { // Reuse ArrayBuffer\r\n bb = new ByteBuffer(0, littleEndian, noAssert);\r\n if (buffer.byteLength > 0) {\r\n bb.buffer = buffer;\r\n bb.offset = 0;\r\n bb.limit = buffer.byteLength;\r\n bb.view = buffer.byteLength > 0 ? new Uint8Array(buffer) : null;\r\n }\r\n } else if (Object.prototype.toString.call(buffer) === \"[object Array]\") { // Create from octets\r\n bb = new ByteBuffer(buffer.length, littleEndian, noAssert);\r\n bb.limit = buffer.length;\r\n for (var i=0; i>>= 0;\n if (offset < 0 || offset + length > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+length+\") <= \"+this.buffer.byteLength);\n }\r\n var slice = this.slice(offset, offset + length);\r\n if (relative) this.offset += length;\n return slice;\r\n };\r\n\r\n /**\r\n * Writes a payload of bytes. This is an alias of {@link ByteBuffer#append}.\r\n * @function\r\n * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to write. If `source` is a ByteBuffer, its offsets\r\n * will be modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeBytes = ByteBufferPrototype.append;\r\n\r\n // types/ints/int8\r\n\r\n /**\r\n * Writes an 8bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt8 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 1;\n var capacity0 = this.buffer.byteLength;\n if (offset > capacity0)\n this.resize((capacity0 *= 2) > offset ? capacity0 : offset);\n offset -= 1;\n this.view[offset] = value;\r\n if (relative) this.offset += 1;\n return this;\r\n };\r\n\r\n /**\r\n * Writes an 8bit signed integer. This is an alias of {@link ByteBuffer#writeInt8}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeByte = ByteBufferPrototype.writeInt8;\r\n\r\n /**\r\n * Reads an 8bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt8 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var value = this.view[offset];\r\n if ((value & 0x80) === 0x80) value = -(0xFF - value + 1); // Cast to signed\r\n if (relative) this.offset += 1;\n return value;\r\n };\r\n\r\n /**\r\n * Reads an 8bit signed integer. This is an alias of {@link ByteBuffer#readInt8}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readByte = ByteBufferPrototype.readInt8;\r\n\r\n /**\r\n * Writes an 8bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint8 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 1;\n var capacity1 = this.buffer.byteLength;\n if (offset > capacity1)\n this.resize((capacity1 *= 2) > offset ? capacity1 : offset);\n offset -= 1;\n this.view[offset] = value;\r\n if (relative) this.offset += 1;\n return this;\r\n };\r\n\r\n /**\r\n * Writes an 8bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint8}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt8 = ByteBufferPrototype.writeUint8;\r\n\r\n /**\r\n * Reads an 8bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint8 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var value = this.view[offset];\r\n if (relative) this.offset += 1;\n return value;\r\n };\r\n\r\n /**\r\n * Reads an 8bit unsigned integer. This is an alias of {@link ByteBuffer#readUint8}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt8 = ByteBufferPrototype.readUint8;\r\n\r\n // types/ints/int16\r\n\r\n /**\r\n * Writes a 16bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt16 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 2;\n var capacity2 = this.buffer.byteLength;\n if (offset > capacity2)\n this.resize((capacity2 *= 2) > offset ? capacity2 : offset);\n offset -= 2;\n if (this.littleEndian) {\r\n this.view[offset+1] = (value & 0xFF00) >>> 8;\r\n this.view[offset ] = value & 0x00FF;\r\n } else {\r\n this.view[offset] = (value & 0xFF00) >>> 8;\r\n this.view[offset+1] = value & 0x00FF;\r\n }\r\n if (relative) this.offset += 2;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 16bit signed integer. This is an alias of {@link ByteBuffer#writeInt16}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeShort = ByteBufferPrototype.writeInt16;\r\n\r\n /**\r\n * Reads a 16bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt16 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 2 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+2+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\r\n value = this.view[offset ];\r\n value |= this.view[offset+1] << 8;\r\n } else {\r\n value = this.view[offset ] << 8;\r\n value |= this.view[offset+1];\r\n }\r\n if ((value & 0x8000) === 0x8000) value = -(0xFFFF - value + 1); // Cast to signed\r\n if (relative) this.offset += 2;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 16bit signed integer. This is an alias of {@link ByteBuffer#readInt16}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readShort = ByteBufferPrototype.readInt16;\r\n\r\n /**\r\n * Writes a 16bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint16 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 2;\n var capacity3 = this.buffer.byteLength;\n if (offset > capacity3)\n this.resize((capacity3 *= 2) > offset ? capacity3 : offset);\n offset -= 2;\n if (this.littleEndian) {\r\n this.view[offset+1] = (value & 0xFF00) >>> 8;\r\n this.view[offset ] = value & 0x00FF;\r\n } else {\r\n this.view[offset] = (value & 0xFF00) >>> 8;\r\n this.view[offset+1] = value & 0x00FF;\r\n }\r\n if (relative) this.offset += 2;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 16bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint16}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt16 = ByteBufferPrototype.writeUint16;\r\n\r\n /**\r\n * Reads a 16bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint16 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 2 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+2+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\r\n value = this.view[offset ];\r\n value |= this.view[offset+1] << 8;\r\n } else {\r\n value = this.view[offset ] << 8;\r\n value |= this.view[offset+1];\r\n }\r\n if (relative) this.offset += 2;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 16bit unsigned integer. This is an alias of {@link ByteBuffer#readUint16}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt16 = ByteBufferPrototype.readUint16;\r\n\r\n // types/ints/int32\r\n\r\n /**\r\n * Writes a 32bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity4 = this.buffer.byteLength;\n if (offset > capacity4)\n this.resize((capacity4 *= 2) > offset ? capacity4 : offset);\n offset -= 4;\n if (this.littleEndian) {\n this.view[offset+3] = (value >>> 24) & 0xFF;\n this.view[offset+2] = (value >>> 16) & 0xFF;\n this.view[offset+1] = (value >>> 8) & 0xFF;\n this.view[offset ] = value & 0xFF;\n } else {\n this.view[offset ] = (value >>> 24) & 0xFF;\n this.view[offset+1] = (value >>> 16) & 0xFF;\n this.view[offset+2] = (value >>> 8) & 0xFF;\n this.view[offset+3] = value & 0xFF;\n }\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit signed integer. This is an alias of {@link ByteBuffer#writeInt32}.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt = ByteBufferPrototype.writeInt32;\r\n\r\n /**\r\n * Reads a 32bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\n value = this.view[offset+2] << 16;\n value |= this.view[offset+1] << 8;\n value |= this.view[offset ];\n value += this.view[offset+3] << 24 >>> 0;\n } else {\n value = this.view[offset+1] << 16;\n value |= this.view[offset+2] << 8;\n value |= this.view[offset+3];\n value += this.view[offset ] << 24 >>> 0;\n }\n value |= 0; // Cast to signed\r\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit signed integer. This is an alias of {@link ByteBuffer#readInt32}.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt = ByteBufferPrototype.readInt32;\r\n\r\n /**\r\n * Writes a 32bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity5 = this.buffer.byteLength;\n if (offset > capacity5)\n this.resize((capacity5 *= 2) > offset ? capacity5 : offset);\n offset -= 4;\n if (this.littleEndian) {\n this.view[offset+3] = (value >>> 24) & 0xFF;\n this.view[offset+2] = (value >>> 16) & 0xFF;\n this.view[offset+1] = (value >>> 8) & 0xFF;\n this.view[offset ] = value & 0xFF;\n } else {\n this.view[offset ] = (value >>> 24) & 0xFF;\n this.view[offset+1] = (value >>> 16) & 0xFF;\n this.view[offset+2] = (value >>> 8) & 0xFF;\n this.view[offset+3] = value & 0xFF;\n }\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint32}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt32 = ByteBufferPrototype.writeUint32;\r\n\r\n /**\r\n * Reads a 32bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\n value = this.view[offset+2] << 16;\n value |= this.view[offset+1] << 8;\n value |= this.view[offset ];\n value += this.view[offset+3] << 24 >>> 0;\n } else {\n value = this.view[offset+1] << 16;\n value |= this.view[offset+2] << 8;\n value |= this.view[offset+3];\n value += this.view[offset ] << 24 >>> 0;\n }\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit unsigned integer. This is an alias of {@link ByteBuffer#readUint32}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt32 = ByteBufferPrototype.readUint32;\r\n\r\n // types/ints/int64\r\n\r\n if (Long) {\r\n\r\n /**\r\n * Writes a 64bit signed integer.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n offset += 8;\n var capacity6 = this.buffer.byteLength;\n if (offset > capacity6)\n this.resize((capacity6 *= 2) > offset ? capacity6 : offset);\n offset -= 8;\n var lo = value.low,\r\n hi = value.high;\r\n if (this.littleEndian) {\r\n this.view[offset+3] = (lo >>> 24) & 0xFF;\n this.view[offset+2] = (lo >>> 16) & 0xFF;\n this.view[offset+1] = (lo >>> 8) & 0xFF;\n this.view[offset ] = lo & 0xFF;\n offset += 4;\r\n this.view[offset+3] = (hi >>> 24) & 0xFF;\n this.view[offset+2] = (hi >>> 16) & 0xFF;\n this.view[offset+1] = (hi >>> 8) & 0xFF;\n this.view[offset ] = hi & 0xFF;\n } else {\r\n this.view[offset ] = (hi >>> 24) & 0xFF;\n this.view[offset+1] = (hi >>> 16) & 0xFF;\n this.view[offset+2] = (hi >>> 8) & 0xFF;\n this.view[offset+3] = hi & 0xFF;\n offset += 4;\r\n this.view[offset ] = (lo >>> 24) & 0xFF;\n this.view[offset+1] = (lo >>> 16) & 0xFF;\n this.view[offset+2] = (lo >>> 8) & 0xFF;\n this.view[offset+3] = lo & 0xFF;\n }\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit signed integer. This is an alias of {@link ByteBuffer#writeInt64}.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeLong = ByteBufferPrototype.writeInt64;\r\n\r\n /**\r\n * Reads a 64bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var lo = 0,\r\n hi = 0;\r\n if (this.littleEndian) {\r\n lo = this.view[offset+2] << 16;\n lo |= this.view[offset+1] << 8;\n lo |= this.view[offset ];\n lo += this.view[offset+3] << 24 >>> 0;\n offset += 4;\r\n hi = this.view[offset+2] << 16;\n hi |= this.view[offset+1] << 8;\n hi |= this.view[offset ];\n hi += this.view[offset+3] << 24 >>> 0;\n } else {\r\n hi = this.view[offset+1] << 16;\n hi |= this.view[offset+2] << 8;\n hi |= this.view[offset+3];\n hi += this.view[offset ] << 24 >>> 0;\n offset += 4;\r\n lo = this.view[offset+1] << 16;\n lo |= this.view[offset+2] << 8;\n lo |= this.view[offset+3];\n lo += this.view[offset ] << 24 >>> 0;\n }\r\n var value = new Long(lo, hi, false);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit signed integer. This is an alias of {@link ByteBuffer#readInt64}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readLong = ByteBufferPrototype.readInt64;\r\n\r\n /**\r\n * Writes a 64bit unsigned integer.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n offset += 8;\n var capacity7 = this.buffer.byteLength;\n if (offset > capacity7)\n this.resize((capacity7 *= 2) > offset ? capacity7 : offset);\n offset -= 8;\n var lo = value.low,\r\n hi = value.high;\r\n if (this.littleEndian) {\r\n this.view[offset+3] = (lo >>> 24) & 0xFF;\n this.view[offset+2] = (lo >>> 16) & 0xFF;\n this.view[offset+1] = (lo >>> 8) & 0xFF;\n this.view[offset ] = lo & 0xFF;\n offset += 4;\r\n this.view[offset+3] = (hi >>> 24) & 0xFF;\n this.view[offset+2] = (hi >>> 16) & 0xFF;\n this.view[offset+1] = (hi >>> 8) & 0xFF;\n this.view[offset ] = hi & 0xFF;\n } else {\r\n this.view[offset ] = (hi >>> 24) & 0xFF;\n this.view[offset+1] = (hi >>> 16) & 0xFF;\n this.view[offset+2] = (hi >>> 8) & 0xFF;\n this.view[offset+3] = hi & 0xFF;\n offset += 4;\r\n this.view[offset ] = (lo >>> 24) & 0xFF;\n this.view[offset+1] = (lo >>> 16) & 0xFF;\n this.view[offset+2] = (lo >>> 8) & 0xFF;\n this.view[offset+3] = lo & 0xFF;\n }\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint64}.\r\n * @function\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt64 = ByteBufferPrototype.writeUint64;\r\n\r\n /**\r\n * Reads a 64bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var lo = 0,\r\n hi = 0;\r\n if (this.littleEndian) {\r\n lo = this.view[offset+2] << 16;\n lo |= this.view[offset+1] << 8;\n lo |= this.view[offset ];\n lo += this.view[offset+3] << 24 >>> 0;\n offset += 4;\r\n hi = this.view[offset+2] << 16;\n hi |= this.view[offset+1] << 8;\n hi |= this.view[offset ];\n hi += this.view[offset+3] << 24 >>> 0;\n } else {\r\n hi = this.view[offset+1] << 16;\n hi |= this.view[offset+2] << 8;\n hi |= this.view[offset+3];\n hi += this.view[offset ] << 24 >>> 0;\n offset += 4;\r\n lo = this.view[offset+1] << 16;\n lo |= this.view[offset+2] << 8;\n lo |= this.view[offset+3];\n lo += this.view[offset ] << 24 >>> 0;\n }\r\n var value = new Long(lo, hi, true);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit unsigned integer. This is an alias of {@link ByteBuffer#readUint64}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt64 = ByteBufferPrototype.readUint64;\r\n\r\n } // Long\r\n\r\n\r\n // types/floats/float32\r\n\r\n /*\r\n ieee754 - https://github.com/feross/ieee754\r\n\r\n The MIT License (MIT)\r\n\r\n Copyright (c) Feross Aboukhadijeh\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining a copy\r\n of this software and associated documentation files (the \"Software\"), to deal\r\n in the Software without restriction, including without limitation the rights\r\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n copies of the Software, and to permit persons to whom the Software is\r\n furnished to do so, subject to the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be included in\r\n all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n THE SOFTWARE.\r\n */\r\n\r\n /**\r\n * Reads an IEEE754 float from a byte array.\r\n * @param {!Array} buffer\r\n * @param {number} offset\r\n * @param {boolean} isLE\r\n * @param {number} mLen\r\n * @param {number} nBytes\r\n * @returns {number}\r\n * @inner\r\n */\r\n function ieee754_read(buffer, offset, isLE, mLen, nBytes) {\r\n var e, m,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n nBits = -7,\r\n i = isLE ? (nBytes - 1) : 0,\r\n d = isLE ? -1 : 1,\r\n s = buffer[offset + i];\r\n\r\n i += d;\r\n\r\n e = s & ((1 << (-nBits)) - 1);\r\n s >>= (-nBits);\r\n nBits += eLen;\r\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\r\n\r\n m = e & ((1 << (-nBits)) - 1);\r\n e >>= (-nBits);\r\n nBits += mLen;\r\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\r\n\r\n if (e === 0) {\r\n e = 1 - eBias;\r\n } else if (e === eMax) {\r\n return m ? NaN : ((s ? -1 : 1) * Infinity);\r\n } else {\r\n m = m + Math.pow(2, mLen);\r\n e = e - eBias;\r\n }\r\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\r\n }\r\n\r\n /**\r\n * Writes an IEEE754 float to a byte array.\r\n * @param {!Array} buffer\r\n * @param {number} value\r\n * @param {number} offset\r\n * @param {boolean} isLE\r\n * @param {number} mLen\r\n * @param {number} nBytes\r\n * @inner\r\n */\r\n function ieee754_write(buffer, value, offset, isLE, mLen, nBytes) {\r\n var e, m, c,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0),\r\n i = isLE ? 0 : (nBytes - 1),\r\n d = isLE ? 1 : -1,\r\n s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\r\n\r\n value = Math.abs(value);\r\n\r\n if (isNaN(value) || value === Infinity) {\r\n m = isNaN(value) ? 1 : 0;\r\n e = eMax;\r\n } else {\r\n e = Math.floor(Math.log(value) / Math.LN2);\r\n if (value * (c = Math.pow(2, -e)) < 1) {\r\n e--;\r\n c *= 2;\r\n }\r\n if (e + eBias >= 1) {\r\n value += rt / c;\r\n } else {\r\n value += rt * Math.pow(2, 1 - eBias);\r\n }\r\n if (value * c >= 2) {\r\n e++;\r\n c /= 2;\r\n }\r\n\r\n if (e + eBias >= eMax) {\r\n m = 0;\r\n e = eMax;\r\n } else if (e + eBias >= 1) {\r\n m = (value * c - 1) * Math.pow(2, mLen);\r\n e = e + eBias;\r\n } else {\r\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\r\n e = 0;\r\n }\r\n }\r\n\r\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\r\n\r\n e = (e << mLen) | m;\r\n eLen += mLen;\r\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\r\n\r\n buffer[offset + i - d] |= s * 128;\r\n }\r\n\r\n /**\r\n * Writes a 32bit float.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number')\r\n throw TypeError(\"Illegal value: \"+value+\" (not a number)\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity8 = this.buffer.byteLength;\n if (offset > capacity8)\n this.resize((capacity8 *= 2) > offset ? capacity8 : offset);\n offset -= 4;\n ieee754_write(this.view, value, offset, this.littleEndian, 23, 4);\r\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit float. This is an alias of {@link ByteBuffer#writeFloat32}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat = ByteBufferPrototype.writeFloat32;\r\n\r\n /**\r\n * Reads a 32bit float.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = ieee754_read(this.view, offset, this.littleEndian, 23, 4);\r\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit float. This is an alias of {@link ByteBuffer#readFloat32}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat = ByteBufferPrototype.readFloat32;\r\n\r\n // types/floats/float64\r\n\r\n /**\r\n * Writes a 64bit float.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number')\r\n throw TypeError(\"Illegal value: \"+value+\" (not a number)\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 8;\n var capacity9 = this.buffer.byteLength;\n if (offset > capacity9)\n this.resize((capacity9 *= 2) > offset ? capacity9 : offset);\n offset -= 8;\n ieee754_write(this.view, value, offset, this.littleEndian, 52, 8);\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit float. This is an alias of {@link ByteBuffer#writeFloat64}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeDouble = ByteBufferPrototype.writeFloat64;\r\n\r\n /**\r\n * Reads a 64bit float.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var value = ieee754_read(this.view, offset, this.littleEndian, 52, 8);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit float. This is an alias of {@link ByteBuffer#readFloat64}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readDouble = ByteBufferPrototype.readFloat64;\r\n\r\n\r\n // types/varints/varint32\r\n\r\n /**\r\n * Maximum number of bytes required to store a 32bit base 128 variable-length integer.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.MAX_VARINT32_BYTES = 5;\r\n\r\n /**\r\n * Calculates the actual number of bytes required to store a 32bit base 128 variable-length integer.\r\n * @param {number} value Value to encode\r\n * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT32_BYTES}\r\n * @expose\r\n */\r\n ByteBuffer.calculateVarint32 = function(value) {\r\n // ref: src/google/protobuf/io/coded_stream.cc\r\n value = value >>> 0;\r\n if (value < 1 << 7 ) return 1;\r\n else if (value < 1 << 14) return 2;\r\n else if (value < 1 << 21) return 3;\r\n else if (value < 1 << 28) return 4;\r\n else return 5;\r\n };\r\n\r\n /**\r\n * Zigzag encodes a signed 32bit integer so that it can be effectively used with varint encoding.\r\n * @param {number} n Signed 32bit integer\r\n * @returns {number} Unsigned zigzag encoded 32bit integer\r\n * @expose\r\n */\r\n ByteBuffer.zigZagEncode32 = function(n) {\r\n return (((n |= 0) << 1) ^ (n >> 31)) >>> 0; // ref: src/google/protobuf/wire_format_lite.h\r\n };\r\n\r\n /**\r\n * Decodes a zigzag encoded signed 32bit integer.\r\n * @param {number} n Unsigned zigzag encoded 32bit integer\r\n * @returns {number} Signed 32bit integer\r\n * @expose\r\n */\r\n ByteBuffer.zigZagDecode32 = function(n) {\r\n return ((n >>> 1) ^ -(n & 1)) | 0; // // ref: src/google/protobuf/wire_format_lite.h\r\n };\r\n\r\n /**\r\n * Writes a 32bit base 128 variable-length integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var size = ByteBuffer.calculateVarint32(value),\r\n b;\r\n offset += size;\n var capacity10 = this.buffer.byteLength;\n if (offset > capacity10)\n this.resize((capacity10 *= 2) > offset ? capacity10 : offset);\n offset -= size;\n value >>>= 0;\r\n while (value >= 0x80) {\r\n b = (value & 0x7f) | 0x80;\r\n this.view[offset++] = b;\r\n value >>>= 7;\r\n }\r\n this.view[offset++] = value;\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return size;\r\n };\r\n\r\n /**\r\n * Writes a zig-zag encoded (signed) 32bit base 128 variable-length integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint32ZigZag = function(value, offset) {\r\n return this.writeVarint32(ByteBuffer.zigZagEncode32(value), offset);\r\n };\r\n\r\n /**\r\n * Reads a 32bit base 128 variable-length integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read\r\n * and the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint. Has a property `truncated = true` if there is not enough data available\r\n * to fully decode the varint.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var c = 0,\r\n value = 0 >>> 0,\r\n b;\r\n do {\r\n if (!this.noAssert && offset > this.limit) {\r\n var err = Error(\"Truncated\");\r\n err['truncated'] = true;\r\n throw err;\r\n }\r\n b = this.view[offset++];\r\n if (c < 5)\r\n value |= (b & 0x7f) << (7*c);\r\n ++c;\r\n } while ((b & 0x80) !== 0);\r\n value |= 0;\r\n if (relative) {\r\n this.offset = offset;\r\n return value;\r\n }\r\n return {\r\n \"value\": value,\r\n \"length\": c\r\n };\r\n };\r\n\r\n /**\r\n * Reads a zig-zag encoded (signed) 32bit base 128 variable-length integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read\r\n * and the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint32ZigZag = function(offset) {\r\n var val = this.readVarint32(offset);\r\n if (typeof val === 'object')\r\n val[\"value\"] = ByteBuffer.zigZagDecode32(val[\"value\"]);\r\n else\r\n val = ByteBuffer.zigZagDecode32(val);\r\n return val;\r\n };\r\n\r\n // types/varints/varint64\r\n\r\n if (Long) {\r\n\r\n /**\r\n * Maximum number of bytes required to store a 64bit base 128 variable-length integer.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.MAX_VARINT64_BYTES = 10;\r\n\r\n /**\r\n * Calculates the actual number of bytes required to store a 64bit base 128 variable-length integer.\r\n * @param {number|!Long} value Value to encode\r\n * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT64_BYTES}\r\n * @expose\r\n */\r\n ByteBuffer.calculateVarint64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n // ref: src/google/protobuf/io/coded_stream.cc\r\n var part0 = value.toInt() >>> 0,\r\n part1 = value.shiftRightUnsigned(28).toInt() >>> 0,\r\n part2 = value.shiftRightUnsigned(56).toInt() >>> 0;\r\n if (part2 == 0) {\r\n if (part1 == 0) {\r\n if (part0 < 1 << 14)\r\n return part0 < 1 << 7 ? 1 : 2;\r\n else\r\n return part0 < 1 << 21 ? 3 : 4;\r\n } else {\r\n if (part1 < 1 << 14)\r\n return part1 < 1 << 7 ? 5 : 6;\r\n else\r\n return part1 < 1 << 21 ? 7 : 8;\r\n }\r\n } else\r\n return part2 < 1 << 7 ? 9 : 10;\r\n };\r\n\r\n /**\r\n * Zigzag encodes a signed 64bit integer so that it can be effectively used with varint encoding.\r\n * @param {number|!Long} value Signed long\r\n * @returns {!Long} Unsigned zigzag encoded long\r\n * @expose\r\n */\r\n ByteBuffer.zigZagEncode64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n // ref: src/google/protobuf/wire_format_lite.h\r\n return value.shiftLeft(1).xor(value.shiftRight(63)).toUnsigned();\r\n };\r\n\r\n /**\r\n * Decodes a zigzag encoded signed 64bit integer.\r\n * @param {!Long|number} value Unsigned zigzag encoded long or JavaScript number\r\n * @returns {!Long} Signed long\r\n * @expose\r\n */\r\n ByteBuffer.zigZagDecode64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n // ref: src/google/protobuf/wire_format_lite.h\r\n return value.shiftRightUnsigned(1).xor(value.and(Long.ONE).toSigned().negate()).toSigned();\r\n };\r\n\r\n /**\r\n * Writes a 64bit base 128 variable-length integer.\r\n * @param {number|Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n var size = ByteBuffer.calculateVarint64(value),\r\n part0 = value.toInt() >>> 0,\r\n part1 = value.shiftRightUnsigned(28).toInt() >>> 0,\r\n part2 = value.shiftRightUnsigned(56).toInt() >>> 0;\r\n offset += size;\n var capacity11 = this.buffer.byteLength;\n if (offset > capacity11)\n this.resize((capacity11 *= 2) > offset ? capacity11 : offset);\n offset -= size;\n switch (size) {\r\n case 10: this.view[offset+9] = (part2 >>> 7) & 0x01;\r\n case 9 : this.view[offset+8] = size !== 9 ? (part2 ) | 0x80 : (part2 ) & 0x7F;\r\n case 8 : this.view[offset+7] = size !== 8 ? (part1 >>> 21) | 0x80 : (part1 >>> 21) & 0x7F;\r\n case 7 : this.view[offset+6] = size !== 7 ? (part1 >>> 14) | 0x80 : (part1 >>> 14) & 0x7F;\r\n case 6 : this.view[offset+5] = size !== 6 ? (part1 >>> 7) | 0x80 : (part1 >>> 7) & 0x7F;\r\n case 5 : this.view[offset+4] = size !== 5 ? (part1 ) | 0x80 : (part1 ) & 0x7F;\r\n case 4 : this.view[offset+3] = size !== 4 ? (part0 >>> 21) | 0x80 : (part0 >>> 21) & 0x7F;\r\n case 3 : this.view[offset+2] = size !== 3 ? (part0 >>> 14) | 0x80 : (part0 >>> 14) & 0x7F;\r\n case 2 : this.view[offset+1] = size !== 2 ? (part0 >>> 7) | 0x80 : (part0 >>> 7) & 0x7F;\r\n case 1 : this.view[offset ] = size !== 1 ? (part0 ) | 0x80 : (part0 ) & 0x7F;\r\n }\r\n if (relative) {\r\n this.offset += size;\r\n return this;\r\n } else {\r\n return size;\r\n }\r\n };\r\n\r\n /**\r\n * Writes a zig-zag encoded 64bit base 128 variable-length integer.\r\n * @param {number|Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint64ZigZag = function(value, offset) {\r\n return this.writeVarint64(ByteBuffer.zigZagEncode64(value), offset);\r\n };\r\n\r\n /**\r\n * Reads a 64bit base 128 variable-length integer. Requires Long.js.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!Long|!{value: Long, length: number}} The value read if offset is omitted, else the value read and\r\n * the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n // ref: src/google/protobuf/io/coded_stream.cc\r\n var start = offset,\r\n part0 = 0,\r\n part1 = 0,\r\n part2 = 0,\r\n b = 0;\r\n b = this.view[offset++]; part0 = (b & 0x7F) ; if ( b & 0x80 ) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part2 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part2 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n throw Error(\"Buffer overrun\"); }}}}}}}}}}\r\n var value = Long.fromBits(part0 | (part1 << 28), (part1 >>> 4) | (part2) << 24, false);\r\n if (relative) {\r\n this.offset = offset;\r\n return value;\r\n } else {\r\n return {\r\n 'value': value,\r\n 'length': offset-start\r\n };\r\n }\r\n };\r\n\r\n /**\r\n * Reads a zig-zag encoded 64bit base 128 variable-length integer. Requires Long.js.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!Long|!{value: Long, length: number}} The value read if offset is omitted, else the value read and\r\n * the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint64ZigZag = function(offset) {\r\n var val = this.readVarint64(offset);\r\n if (val && val['value'] instanceof Long)\r\n val[\"value\"] = ByteBuffer.zigZagDecode64(val[\"value\"]);\r\n else\r\n val = ByteBuffer.zigZagDecode64(val);\r\n return val;\r\n };\r\n\r\n } // Long\r\n\r\n\r\n // types/strings/cstring\r\n\r\n /**\r\n * Writes a NULL-terminated UTF8 encoded string. For this to work the specified string must not contain any NULL\r\n * characters itself.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * contained in `str` + 1 if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeCString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n var i,\r\n k = str.length;\r\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n for (i=0; i>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n // UTF8 strings do not contain zero bytes in between except for the zero character, so:\r\n k = utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n offset += k+1;\n var capacity12 = this.buffer.byteLength;\n if (offset > capacity12)\n this.resize((capacity12 *= 2) > offset ? capacity12 : offset);\n offset -= k+1;\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n this.view[offset++] = 0;\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return k;\r\n };\r\n\r\n /**\r\n * Reads a NULL-terminated UTF8 encoded string. For this to work the string read must not contain any NULL characters\r\n * itself.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readCString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n temp;\r\n // UTF8 strings do not contain zero bytes in between except for the zero character itself, so:\r\n var sd, b = -1;\r\n utfx.decodeUTF8toUTF16(function() {\r\n if (b === 0) return null;\r\n if (offset >= this.limit)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" < \"+this.limit);\r\n b = this.view[offset++];\r\n return b === 0 ? null : b;\r\n }.bind(this), sd = stringDestination(), true);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n \"string\": sd(),\r\n \"length\": offset - start\r\n };\r\n }\r\n };\r\n\r\n // types/strings/istring\r\n\r\n /**\r\n * Writes a length as uint32 prefixed UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n * @see ByteBuffer#writeVarint32\r\n */\r\n ByteBufferPrototype.writeIString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n k;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1];\r\n offset += 4+k;\n var capacity13 = this.buffer.byteLength;\n if (offset > capacity13)\n this.resize((capacity13 *= 2) > offset ? capacity13 : offset);\n offset -= 4+k;\n if (this.littleEndian) {\n this.view[offset+3] = (k >>> 24) & 0xFF;\n this.view[offset+2] = (k >>> 16) & 0xFF;\n this.view[offset+1] = (k >>> 8) & 0xFF;\n this.view[offset ] = k & 0xFF;\n } else {\n this.view[offset ] = (k >>> 24) & 0xFF;\n this.view[offset+1] = (k >>> 16) & 0xFF;\n this.view[offset+2] = (k >>> 8) & 0xFF;\n this.view[offset+3] = k & 0xFF;\n }\n offset += 4;\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (offset !== start + 4 + k)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+(offset+4+k));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Reads a length as uint32 prefixed UTF8 encoded string.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n * @see ByteBuffer#readVarint32\r\n */\r\n ByteBufferPrototype.readIString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset;\r\n var len = this.readUint32(offset);\r\n var str = this.readUTF8String(len, ByteBuffer.METRICS_BYTES, offset += 4);\r\n offset += str['length'];\r\n if (relative) {\r\n this.offset = offset;\r\n return str['string'];\r\n } else {\r\n return {\r\n 'string': str['string'],\r\n 'length': offset - start\r\n };\r\n }\r\n };\r\n\r\n // types/strings/utf8string\r\n\r\n /**\r\n * Metrics representing number of UTF8 characters. Evaluates to `c`.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.METRICS_CHARS = 'c';\r\n\r\n /**\r\n * Metrics representing number of bytes. Evaluates to `b`.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.METRICS_BYTES = 'b';\r\n\r\n /**\r\n * Writes an UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUTF8String = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var k;\r\n var start = offset;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n offset += k;\n var capacity14 = this.buffer.byteLength;\n if (offset > capacity14)\n this.resize((capacity14 *= 2) > offset ? capacity14 : offset);\n offset -= k;\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Writes an UTF8 encoded string. This is an alias of {@link ByteBuffer#writeUTF8String}.\r\n * @function\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeString = ByteBufferPrototype.writeUTF8String;\r\n\r\n /**\r\n * Calculates the number of UTF8 characters of a string. JavaScript itself uses UTF-16, so that a string's\r\n * `length` property does not reflect its actual UTF8 size if it contains code points larger than 0xFFFF.\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 characters\r\n * @expose\r\n */\r\n ByteBuffer.calculateUTF8Chars = function(str) {\r\n return utfx.calculateUTF16asUTF8(stringSource(str))[0];\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes of a string.\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 bytes\r\n * @expose\r\n */\r\n ByteBuffer.calculateUTF8Bytes = function(str) {\r\n return utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes of a string. This is an alias of {@link ByteBuffer.calculateUTF8Bytes}.\r\n * @function\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 bytes\r\n * @expose\r\n */\r\n ByteBuffer.calculateString = ByteBuffer.calculateUTF8Bytes;\r\n\r\n /**\r\n * Reads an UTF8 encoded string.\r\n * @param {number} length Number of characters or bytes to read.\r\n * @param {string=} metrics Metrics specifying what `length` is meant to count. Defaults to\r\n * {@link ByteBuffer.METRICS_CHARS}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUTF8String = function(length, metrics, offset) {\r\n if (typeof metrics === 'number') {\r\n offset = metrics;\r\n metrics = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (typeof metrics === 'undefined') metrics = ByteBuffer.METRICS_CHARS;\r\n if (!this.noAssert) {\r\n if (typeof length !== 'number' || length % 1 !== 0)\n throw TypeError(\"Illegal length: \"+length+\" (not an integer)\");\n length |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var i = 0,\r\n start = offset,\r\n sd;\r\n if (metrics === ByteBuffer.METRICS_CHARS) { // The same for node and the browser\r\n sd = stringDestination();\r\n utfx.decodeUTF8(function() {\r\n return i < length && offset < this.limit ? this.view[offset++] : null;\r\n }.bind(this), function(cp) {\r\n ++i; utfx.UTF8toUTF16(cp, sd);\r\n });\r\n if (i !== length)\r\n throw RangeError(\"Illegal range: Truncated data, \"+i+\" == \"+length);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n \"string\": sd(),\r\n \"length\": offset - start\r\n };\r\n }\r\n } else if (metrics === ByteBuffer.METRICS_BYTES) {\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + length > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+length+\") <= \"+this.buffer.byteLength);\n }\r\n var k = offset + length;\r\n utfx.decodeUTF8toUTF16(function() {\r\n return offset < k ? this.view[offset++] : null;\r\n }.bind(this), sd = stringDestination(), this.noAssert);\r\n if (offset !== k)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+k);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n 'string': sd(),\r\n 'length': offset - start\r\n };\r\n }\r\n } else\r\n throw TypeError(\"Unsupported metrics: \"+metrics);\r\n };\r\n\r\n /**\r\n * Reads an UTF8 encoded string. This is an alias of {@link ByteBuffer#readUTF8String}.\r\n * @function\r\n * @param {number} length Number of characters or bytes to read\r\n * @param {number=} metrics Metrics specifying what `n` is meant to count. Defaults to\r\n * {@link ByteBuffer.METRICS_CHARS}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readString = ByteBufferPrototype.readUTF8String;\r\n\r\n // types/strings/vstring\r\n\r\n /**\r\n * Writes a length as varint32 prefixed UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n * @see ByteBuffer#writeVarint32\r\n */\r\n ByteBufferPrototype.writeVString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n k, l;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1];\r\n l = ByteBuffer.calculateVarint32(k);\r\n offset += l+k;\n var capacity15 = this.buffer.byteLength;\n if (offset > capacity15)\n this.resize((capacity15 *= 2) > offset ? capacity15 : offset);\n offset -= l+k;\n offset += this.writeVarint32(k, offset);\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (offset !== start+k+l)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+(offset+k+l));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Reads a length as varint32 prefixed UTF8 encoded string.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n * @see ByteBuffer#readVarint32\r\n */\r\n ByteBufferPrototype.readVString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset;\r\n var len = this.readVarint32(offset);\r\n var str = this.readUTF8String(len['value'], ByteBuffer.METRICS_BYTES, offset += len['length']);\r\n offset += str['length'];\r\n if (relative) {\r\n this.offset = offset;\r\n return str['string'];\r\n } else {\r\n return {\r\n 'string': str['string'],\r\n 'length': offset - start\r\n };\r\n }\r\n };\r\n\r\n\r\n /**\r\n * Appends some data to this ByteBuffer. This will overwrite any contents behind the specified offset up to the appended\r\n * data's length.\r\n * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to append. If `source` is a ByteBuffer, its offsets\r\n * will be modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to append at. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example A relative `<01 02>03.append(<04 05>)` will result in `<01 02 04 05>, 04 05|`\r\n * @example An absolute `<01 02>03.append(04 05>, 1)` will result in `<01 04>05, 04 05|`\r\n */\r\n ByteBufferPrototype.append = function(source, encoding, offset) {\r\n if (typeof encoding === 'number' || typeof encoding !== 'string') {\r\n offset = encoding;\r\n encoding = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (!(source instanceof ByteBuffer))\r\n source = ByteBuffer.wrap(source, encoding);\r\n var length = source.limit - source.offset;\r\n if (length <= 0) return this; // Nothing to append\r\n offset += length;\n var capacity16 = this.buffer.byteLength;\n if (offset > capacity16)\n this.resize((capacity16 *= 2) > offset ? capacity16 : offset);\n offset -= length;\n this.view.set(source.view.subarray(source.offset, source.limit), offset);\r\n source.offset += length;\r\n if (relative) this.offset += length;\n return this;\r\n };\r\n\r\n /**\r\n * Appends this ByteBuffer's contents to another ByteBuffer. This will overwrite any contents at and after the\r\n specified offset up to the length of this ByteBuffer's data.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} offset Offset to append to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @see ByteBuffer#append\r\n */\r\n ByteBufferPrototype.appendTo = function(target, offset) {\r\n target.append(this, offset);\r\n return this;\r\n };\r\n\r\n /**\r\n * Enables or disables assertions of argument types and offsets. Assertions are enabled by default but you can opt to\r\n * disable them if your code already makes sure that everything is valid.\r\n * @param {boolean} assert `true` to enable assertions, otherwise `false`\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.assert = function(assert) {\r\n this.noAssert = !assert;\r\n return this;\r\n };\r\n\r\n /**\r\n * Gets the capacity of this ByteBuffer's backing buffer.\r\n * @returns {number} Capacity of the backing buffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.capacity = function() {\r\n return this.buffer.byteLength;\r\n };\r\n /**\r\n * Clears this ByteBuffer's offsets by setting {@link ByteBuffer#offset} to `0` and {@link ByteBuffer#limit} to the\r\n * backing buffer's capacity. Discards {@link ByteBuffer#markedOffset}.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.clear = function() {\r\n this.offset = 0;\r\n this.limit = this.buffer.byteLength;\r\n this.markedOffset = -1;\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates a cloned instance of this ByteBuffer, preset with this ByteBuffer's values for {@link ByteBuffer#offset},\r\n * {@link ByteBuffer#markedOffset} and {@link ByteBuffer#limit}.\r\n * @param {boolean=} copy Whether to copy the backing buffer or to return another view on the same, defaults to `false`\r\n * @returns {!ByteBuffer} Cloned instance\r\n * @expose\r\n */\r\n ByteBufferPrototype.clone = function(copy) {\r\n var bb = new ByteBuffer(0, this.littleEndian, this.noAssert);\r\n if (copy) {\r\n bb.buffer = new ArrayBuffer(this.buffer.byteLength);\r\n bb.view = new Uint8Array(bb.buffer);\r\n } else {\r\n bb.buffer = this.buffer;\r\n bb.view = this.view;\r\n }\r\n bb.offset = this.offset;\r\n bb.markedOffset = this.markedOffset;\r\n bb.limit = this.limit;\r\n return bb;\r\n };\r\n\r\n /**\r\n * Compacts this ByteBuffer to be backed by a {@link ByteBuffer#buffer} of its contents' length. Contents are the bytes\r\n * between {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. Will set `offset = 0` and `limit = capacity` and\r\n * adapt {@link ByteBuffer#markedOffset} to the same relative position if set.\r\n * @param {number=} begin Offset to start at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.compact = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === 0 && end === this.buffer.byteLength)\r\n return this; // Already compacted\r\n var len = end - begin;\r\n if (len === 0) {\r\n this.buffer = EMPTY_BUFFER;\r\n this.view = null;\r\n if (this.markedOffset >= 0) this.markedOffset -= begin;\r\n this.offset = 0;\r\n this.limit = 0;\r\n return this;\r\n }\r\n var buffer = new ArrayBuffer(len);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view.subarray(begin, end));\r\n this.buffer = buffer;\r\n this.view = view;\r\n if (this.markedOffset >= 0) this.markedOffset -= begin;\r\n this.offset = 0;\r\n this.limit = len;\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates a copy of this ByteBuffer's contents. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}.\r\n * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} Copy\r\n * @expose\r\n */\r\n ByteBufferPrototype.copy = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === end)\r\n return new ByteBuffer(0, this.littleEndian, this.noAssert);\r\n var capacity = end - begin,\r\n bb = new ByteBuffer(capacity, this.littleEndian, this.noAssert);\r\n bb.offset = 0;\r\n bb.limit = capacity;\r\n if (bb.markedOffset >= 0) bb.markedOffset -= begin;\r\n this.copyTo(bb, 0, begin, end);\r\n return bb;\r\n };\r\n\r\n /**\r\n * Copies this ByteBuffer's contents to another ByteBuffer. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} targetOffset Offset to copy to. Will use and increase the target's {@link ByteBuffer#offset}\r\n * by the number of bytes copied if omitted.\r\n * @param {number=} sourceOffset Offset to start copying from. Will use and increase {@link ByteBuffer#offset} by the\r\n * number of bytes copied if omitted.\r\n * @param {number=} sourceLimit Offset to end copying from, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.copyTo = function(target, targetOffset, sourceOffset, sourceLimit) {\r\n var relative,\r\n targetRelative;\r\n if (!this.noAssert) {\r\n if (!ByteBuffer.isByteBuffer(target))\r\n throw TypeError(\"Illegal target: Not a ByteBuffer\");\r\n }\r\n targetOffset = (targetRelative = typeof targetOffset === 'undefined') ? target.offset : targetOffset | 0;\r\n sourceOffset = (relative = typeof sourceOffset === 'undefined') ? this.offset : sourceOffset | 0;\r\n sourceLimit = typeof sourceLimit === 'undefined' ? this.limit : sourceLimit | 0;\r\n\r\n if (targetOffset < 0 || targetOffset > target.buffer.byteLength)\r\n throw RangeError(\"Illegal target range: 0 <= \"+targetOffset+\" <= \"+target.buffer.byteLength);\r\n if (sourceOffset < 0 || sourceLimit > this.buffer.byteLength)\r\n throw RangeError(\"Illegal source range: 0 <= \"+sourceOffset+\" <= \"+this.buffer.byteLength);\r\n\r\n var len = sourceLimit - sourceOffset;\r\n if (len === 0)\r\n return target; // Nothing to copy\r\n\r\n target.ensureCapacity(targetOffset + len);\r\n\r\n target.view.set(this.view.subarray(sourceOffset, sourceLimit), targetOffset);\r\n\r\n if (relative) this.offset += len;\r\n if (targetRelative) target.offset += len;\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Makes sure that this ByteBuffer is backed by a {@link ByteBuffer#buffer} of at least the specified capacity. If the\r\n * current capacity is exceeded, it will be doubled. If double the current capacity is less than the required capacity,\r\n * the required capacity will be used instead.\r\n * @param {number} capacity Required capacity\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.ensureCapacity = function(capacity) {\r\n var current = this.buffer.byteLength;\r\n if (current < capacity)\r\n return this.resize((current *= 2) > capacity ? current : capacity);\r\n return this;\r\n };\r\n\r\n /**\r\n * Overwrites this ByteBuffer's contents with the specified value. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}.\r\n * @param {number|string} value Byte value to fill with. If given as a string, the first character is used.\r\n * @param {number=} begin Begin offset. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted. defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example `someByteBuffer.clear().fill(0)` fills the entire backing buffer with zeroes\r\n */\r\n ByteBufferPrototype.fill = function(value, begin, end) {\r\n var relative = typeof begin === 'undefined';\n if (relative) begin = this.offset;\n if (typeof value === 'string' && value.length > 0)\r\n value = value.charCodeAt(0);\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin >= end)\r\n return this; // Nothing to fill\r\n while (begin < end) this.view[begin++] = value;\r\n if (relative) this.offset = begin;\r\n return this;\r\n };\r\n\r\n /**\r\n * Makes this ByteBuffer ready for a new sequence of write or relative read operations. Sets `limit = offset` and\r\n * `offset = 0`. Make sure always to flip a ByteBuffer when all relative read or write operations are complete.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.flip = function() {\r\n this.limit = this.offset;\r\n this.offset = 0;\r\n return this;\r\n };\r\n /**\r\n * Marks an offset on this ByteBuffer to be used later.\r\n * @param {number=} offset Offset to mark. Defaults to {@link ByteBuffer#offset}.\r\n * @returns {!ByteBuffer} this\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @see ByteBuffer#reset\r\n * @expose\r\n */\r\n ByteBufferPrototype.mark = function(offset) {\r\n offset = typeof offset === 'undefined' ? this.offset : offset;\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n this.markedOffset = offset;\r\n return this;\r\n };\r\n /**\r\n * Sets the byte order.\r\n * @param {boolean} littleEndian `true` for little endian byte order, `false` for big endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.order = function(littleEndian) {\r\n if (!this.noAssert) {\r\n if (typeof littleEndian !== 'boolean')\r\n throw TypeError(\"Illegal littleEndian: Not a boolean\");\r\n }\r\n this.littleEndian = !!littleEndian;\r\n return this;\r\n };\r\n\r\n /**\r\n * Switches (to) little endian byte order.\r\n * @param {boolean=} littleEndian Defaults to `true`, otherwise uses big endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.LE = function(littleEndian) {\r\n this.littleEndian = typeof littleEndian !== 'undefined' ? !!littleEndian : true;\r\n return this;\r\n };\r\n\r\n /**\r\n * Switches (to) big endian byte order.\r\n * @param {boolean=} bigEndian Defaults to `true`, otherwise uses little endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.BE = function(bigEndian) {\r\n this.littleEndian = typeof bigEndian !== 'undefined' ? !bigEndian : false;\r\n return this;\r\n };\r\n /**\r\n * Prepends some data to this ByteBuffer. This will overwrite any contents before the specified offset up to the\r\n * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer\r\n * will be resized and its contents moved accordingly.\r\n * @param {!ByteBuffer|string|!ArrayBuffer} source Data to prepend. If `source` is a ByteBuffer, its offset will be\r\n * modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes\r\n * prepended if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example A relative `00<01 02 03>.prepend(<04 05>)` results in `<04 05 01 02 03>, 04 05|`\r\n * @example An absolute `00<01 02 03>.prepend(<04 05>, 2)` results in `04<05 02 03>, 04 05|`\r\n */\r\n ByteBufferPrototype.prepend = function(source, encoding, offset) {\r\n if (typeof encoding === 'number' || typeof encoding !== 'string') {\r\n offset = encoding;\r\n encoding = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (!(source instanceof ByteBuffer))\r\n source = ByteBuffer.wrap(source, encoding);\r\n var len = source.limit - source.offset;\r\n if (len <= 0) return this; // Nothing to prepend\r\n var diff = len - offset;\r\n if (diff > 0) { // Not enough space before offset, so resize + move\r\n var buffer = new ArrayBuffer(this.buffer.byteLength + diff);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view.subarray(offset, this.buffer.byteLength), len);\r\n this.buffer = buffer;\r\n this.view = view;\r\n this.offset += diff;\r\n if (this.markedOffset >= 0) this.markedOffset += diff;\r\n this.limit += diff;\r\n offset += diff;\r\n } else {\r\n var arrayView = new Uint8Array(this.buffer);\r\n }\r\n this.view.set(source.view.subarray(source.offset, source.limit), offset - len);\r\n\r\n source.offset = source.limit;\r\n if (relative)\r\n this.offset -= len;\r\n return this;\r\n };\r\n\r\n /**\r\n * Prepends this ByteBuffer to another ByteBuffer. This will overwrite any contents before the specified offset up to the\r\n * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer\r\n * will be resized and its contents moved accordingly.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes\r\n * prepended if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @see ByteBuffer#prepend\r\n */\r\n ByteBufferPrototype.prependTo = function(target, offset) {\r\n target.prepend(this, offset);\r\n return this;\r\n };\r\n /**\r\n * Prints debug information about this ByteBuffer's contents.\r\n * @param {function(string)=} out Output function to call, defaults to console.log\r\n * @expose\r\n */\r\n ByteBufferPrototype.printDebug = function(out) {\r\n if (typeof out !== 'function') out = console.log.bind(console);\r\n out(\r\n this.toString()+\"\\n\"+\r\n \"-------------------------------------------------------------------\\n\"+\r\n this.toDebug(/* columns */ true)\r\n );\r\n };\r\n\r\n /**\r\n * Gets the number of remaining readable bytes. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}, so this returns `limit - offset`.\r\n * @returns {number} Remaining readable bytes. May be negative if `offset > limit`.\r\n * @expose\r\n */\r\n ByteBufferPrototype.remaining = function() {\r\n return this.limit - this.offset;\r\n };\r\n /**\r\n * Resets this ByteBuffer's {@link ByteBuffer#offset}. If an offset has been marked through {@link ByteBuffer#mark}\r\n * before, `offset` will be set to {@link ByteBuffer#markedOffset}, which will then be discarded. If no offset has been\r\n * marked, sets `offset = 0`.\r\n * @returns {!ByteBuffer} this\r\n * @see ByteBuffer#mark\r\n * @expose\r\n */\r\n ByteBufferPrototype.reset = function() {\r\n if (this.markedOffset >= 0) {\r\n this.offset = this.markedOffset;\r\n this.markedOffset = -1;\r\n } else {\r\n this.offset = 0;\r\n }\r\n return this;\r\n };\r\n /**\r\n * Resizes this ByteBuffer to be backed by a buffer of at least the given capacity. Will do nothing if already that\r\n * large or larger.\r\n * @param {number} capacity Capacity required\r\n * @returns {!ByteBuffer} this\r\n * @throws {TypeError} If `capacity` is not a number\r\n * @throws {RangeError} If `capacity < 0`\r\n * @expose\r\n */\r\n ByteBufferPrototype.resize = function(capacity) {\r\n if (!this.noAssert) {\r\n if (typeof capacity !== 'number' || capacity % 1 !== 0)\n throw TypeError(\"Illegal capacity: \"+capacity+\" (not an integer)\");\n capacity |= 0;\n if (capacity < 0)\r\n throw RangeError(\"Illegal capacity: 0 <= \"+capacity);\r\n }\r\n if (this.buffer.byteLength < capacity) {\r\n var buffer = new ArrayBuffer(capacity);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view);\r\n this.buffer = buffer;\r\n this.view = view;\r\n }\r\n return this;\r\n };\r\n /**\r\n * Reverses this ByteBuffer's contents.\r\n * @param {number=} begin Offset to start at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.reverse = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === end)\r\n return this; // Nothing to reverse\r\n Array.prototype.reverse.call(this.view.subarray(begin, end));\r\n return this;\r\n };\r\n /**\r\n * Skips the next `length` bytes. This will just advance\r\n * @param {number} length Number of bytes to skip. May also be negative to move the offset back.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.skip = function(length) {\r\n if (!this.noAssert) {\r\n if (typeof length !== 'number' || length % 1 !== 0)\n throw TypeError(\"Illegal length: \"+length+\" (not an integer)\");\n length |= 0;\n }\r\n var offset = this.offset + length;\r\n if (!this.noAssert) {\r\n if (offset < 0 || offset > this.buffer.byteLength)\r\n throw RangeError(\"Illegal length: 0 <= \"+this.offset+\" + \"+length+\" <= \"+this.buffer.byteLength);\r\n }\r\n this.offset = offset;\r\n return this;\r\n };\r\n\r\n /**\r\n * Slices this ByteBuffer by creating a cloned instance with `offset = begin` and `limit = end`.\r\n * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} Clone of this ByteBuffer with slicing applied, backed by the same {@link ByteBuffer#buffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.slice = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var bb = this.clone();\r\n bb.offset = begin;\r\n bb.limit = end;\r\n return bb;\r\n };\r\n /**\r\n * Returns a copy of the backing buffer that contains this ByteBuffer's contents. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}.\r\n * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory if\r\n * possible. Defaults to `false`\r\n * @returns {!ArrayBuffer} Contents as an ArrayBuffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBuffer = function(forceCopy) {\r\n var offset = this.offset,\r\n limit = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: Not an integer\");\n offset >>>= 0;\n if (typeof limit !== 'number' || limit % 1 !== 0)\n throw TypeError(\"Illegal limit: Not an integer\");\n limit >>>= 0;\n if (offset < 0 || offset > limit || limit > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+offset+\" <= \"+limit+\" <= \"+this.buffer.byteLength);\n }\r\n // NOTE: It's not possible to have another ArrayBuffer reference the same memory as the backing buffer. This is\r\n // possible with Uint8Array#subarray only, but we have to return an ArrayBuffer by contract. So:\r\n if (!forceCopy && offset === 0 && limit === this.buffer.byteLength)\r\n return this.buffer;\r\n if (offset === limit)\r\n return EMPTY_BUFFER;\r\n var buffer = new ArrayBuffer(limit - offset);\r\n new Uint8Array(buffer).set(new Uint8Array(this.buffer).subarray(offset, limit), 0);\r\n return buffer;\r\n };\r\n\r\n /**\r\n * Returns a raw buffer compacted to contain this ByteBuffer's contents. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. This is an alias of {@link ByteBuffer#toBuffer}.\r\n * @function\r\n * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory.\r\n * Defaults to `false`\r\n * @returns {!ArrayBuffer} Contents as an ArrayBuffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.toArrayBuffer = ByteBufferPrototype.toBuffer;\r\n\r\n /**\r\n * Converts the ByteBuffer's contents to a string.\r\n * @param {string=} encoding Output encoding. Returns an informative string representation if omitted but also allows\r\n * direct conversion to \"utf8\", \"hex\", \"base64\" and \"binary\" encoding. \"debug\" returns a hex representation with\r\n * highlighted offsets.\r\n * @param {number=} begin Offset to begin at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {string} String representation\r\n * @throws {Error} If `encoding` is invalid\r\n * @expose\r\n */\r\n ByteBufferPrototype.toString = function(encoding, begin, end) {\r\n if (typeof encoding === 'undefined')\r\n return \"ByteBufferAB(offset=\"+this.offset+\",markedOffset=\"+this.markedOffset+\",limit=\"+this.limit+\",capacity=\"+this.capacity()+\")\";\r\n if (typeof encoding === 'number')\r\n encoding = \"utf8\",\r\n begin = encoding,\r\n end = begin;\r\n switch (encoding) {\r\n case \"utf8\":\r\n return this.toUTF8(begin, end);\r\n case \"base64\":\r\n return this.toBase64(begin, end);\r\n case \"hex\":\r\n return this.toHex(begin, end);\r\n case \"binary\":\r\n return this.toBinary(begin, end);\r\n case \"debug\":\r\n return this.toDebug();\r\n case \"columns\":\r\n return this.toColumns();\r\n default:\r\n throw Error(\"Unsupported encoding: \"+encoding);\r\n }\r\n };\r\n\r\n // lxiv-embeddable\r\n\r\n /**\r\n * lxiv-embeddable (c) 2014 Daniel Wirtz \r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/lxiv for details\r\n */\r\n var lxiv = function() {\r\n \"use strict\";\r\n\r\n /**\r\n * lxiv namespace.\r\n * @type {!Object.}\r\n * @exports lxiv\r\n */\r\n var lxiv = {};\r\n\r\n /**\r\n * Character codes for output.\r\n * @type {!Array.}\r\n * @inner\r\n */\r\n var aout = [\r\n 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,\r\n 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102,\r\n 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\r\n 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47\r\n ];\r\n\r\n /**\r\n * Character codes for input.\r\n * @type {!Array.}\r\n * @inner\r\n */\r\n var ain = [];\r\n for (var i=0, k=aout.length; i>2)&0x3f]);\r\n t = (b&0x3)<<4;\r\n if ((b = src()) !== null) {\r\n t |= (b>>4)&0xf;\r\n dst(aout[(t|((b>>4)&0xf))&0x3f]);\r\n t = (b&0xf)<<2;\r\n if ((b = src()) !== null)\r\n dst(aout[(t|((b>>6)&0x3))&0x3f]),\r\n dst(aout[b&0x3f]);\r\n else\r\n dst(aout[t&0x3f]),\r\n dst(61);\r\n } else\r\n dst(aout[t&0x3f]),\r\n dst(61),\r\n dst(61);\r\n }\r\n };\r\n\r\n /**\r\n * Decodes base64 char codes to bytes.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte.\r\n * @throws {Error} If a character code is invalid\r\n */\r\n lxiv.decode = function(src, dst) {\r\n var c, t1, t2;\r\n function fail(c) {\r\n throw Error(\"Illegal character code: \"+c);\r\n }\r\n while ((c = src()) !== null) {\r\n t1 = ain[c];\r\n if (typeof t1 === 'undefined') fail(c);\r\n if ((c = src()) !== null) {\r\n t2 = ain[c];\r\n if (typeof t2 === 'undefined') fail(c);\r\n dst((t1<<2)>>>0|(t2&0x30)>>4);\r\n if ((c = src()) !== null) {\r\n t1 = ain[c];\r\n if (typeof t1 === 'undefined')\r\n if (c === 61) break; else fail(c);\r\n dst(((t2&0xf)<<4)>>>0|(t1&0x3c)>>2);\r\n if ((c = src()) !== null) {\r\n t2 = ain[c];\r\n if (typeof t2 === 'undefined')\r\n if (c === 61) break; else fail(c);\r\n dst(((t1&0x3)<<6)>>>0|t2);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Tests if a string is valid base64.\r\n * @param {string} str String to test\r\n * @returns {boolean} `true` if valid, otherwise `false`\r\n */\r\n lxiv.test = function(str) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(str);\r\n };\r\n\r\n return lxiv;\r\n }();\r\n\r\n // encodings/base64\r\n\r\n /**\r\n * Encodes this ByteBuffer's contents to a base64 encoded string.\r\n * @param {number=} begin Offset to begin at, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}.\r\n * @returns {string} Base64 encoded string\r\n * @throws {RangeError} If `begin` or `end` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBase64 = function(begin, end) {\r\n if (typeof begin === 'undefined')\r\n begin = this.offset;\r\n if (typeof end === 'undefined')\r\n end = this.limit;\r\n begin = begin | 0; end = end | 0;\r\n if (begin < 0 || end > this.capacity || begin > end)\r\n throw RangeError(\"begin, end\");\r\n var sd; lxiv.encode(function() {\r\n return begin < end ? this.view[begin++] : null;\r\n }.bind(this), sd = stringDestination());\r\n return sd();\r\n };\r\n\r\n /**\r\n * Decodes a base64 encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromBase64 = function(str, littleEndian) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"str\");\r\n var bb = new ByteBuffer(str.length/4*3, littleEndian),\r\n i = 0;\r\n lxiv.decode(stringSource(str), function(b) {\r\n bb.view[i++] = b;\r\n });\r\n bb.limit = i;\r\n return bb;\r\n };\r\n\r\n /**\r\n * Encodes a binary string to base64 like `window.btoa` does.\r\n * @param {string} str Binary string\r\n * @returns {string} Base64 encoded string\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.btoa\r\n * @expose\r\n */\r\n ByteBuffer.btoa = function(str) {\r\n return ByteBuffer.fromBinary(str).toBase64();\r\n };\r\n\r\n /**\r\n * Decodes a base64 encoded string to binary like `window.atob` does.\r\n * @param {string} b64 Base64 encoded string\r\n * @returns {string} Binary string\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.atob\r\n * @expose\r\n */\r\n ByteBuffer.atob = function(b64) {\r\n return ByteBuffer.fromBase64(b64).toBinary();\r\n };\r\n\r\n // encodings/binary\r\n\r\n /**\r\n * Encodes this ByteBuffer to a binary encoded string, that is using only characters 0x00-0xFF as bytes.\r\n * @param {number=} begin Offset to begin at. Defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end Offset to end at. Defaults to {@link ByteBuffer#limit}.\r\n * @returns {string} Binary encoded string\r\n * @throws {RangeError} If `offset > limit`\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBinary = function(begin, end) {\r\n if (typeof begin === 'undefined')\r\n begin = this.offset;\r\n if (typeof end === 'undefined')\r\n end = this.limit;\r\n begin |= 0; end |= 0;\r\n if (begin < 0 || end > this.capacity() || begin > end)\r\n throw RangeError(\"begin, end\");\r\n if (begin === end)\r\n return \"\";\r\n var chars = [],\r\n parts = [];\r\n while (begin < end) {\r\n chars.push(this.view[begin++]);\r\n if (chars.length >= 1024)\r\n parts.push(String.fromCharCode.apply(String, chars)),\r\n chars = [];\r\n }\r\n return parts.join('') + String.fromCharCode.apply(String, chars);\r\n };\r\n\r\n /**\r\n * Decodes a binary encoded string, that is using only characters 0x00-0xFF as bytes, to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromBinary = function(str, littleEndian) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"str\");\r\n var i = 0,\r\n k = str.length,\r\n charCode,\r\n bb = new ByteBuffer(k, littleEndian);\r\n while (i 0xff)\r\n throw RangeError(\"illegal char code: \"+charCode);\r\n bb.view[i++] = charCode;\r\n }\r\n bb.limit = k;\r\n return bb;\r\n };\r\n\r\n // encodings/debug\r\n\r\n /**\r\n * Encodes this ByteBuffer to a hex encoded string with marked offsets. Offset symbols are:\r\n * * `<` : offset,\r\n * * `'` : markedOffset,\r\n * * `>` : limit,\r\n * * `|` : offset and limit,\r\n * * `[` : offset and markedOffset,\r\n * * `]` : markedOffset and limit,\r\n * * `!` : offset, markedOffset and limit\r\n * @param {boolean=} columns If `true` returns two columns hex + ascii, defaults to `false`\r\n * @returns {string|!Array.} Debug string or array of lines if `asArray = true`\r\n * @expose\r\n * @example `>00'01 02<03` contains four bytes with `limit=0, markedOffset=1, offset=3`\r\n * @example `00[01 02 03>` contains four bytes with `offset=markedOffset=1, limit=4`\r\n * @example `00|01 02 03` contains four bytes with `offset=limit=1, markedOffset=-1`\r\n * @example `|` contains zero bytes with `offset=limit=0, markedOffset=-1`\r\n */\r\n ByteBufferPrototype.toDebug = function(columns) {\r\n var i = -1,\r\n k = this.buffer.byteLength,\r\n b,\r\n hex = \"\",\r\n asc = \"\",\r\n out = \"\";\r\n while (i 32 && b < 127 ? String.fromCharCode(b) : '.';\r\n }\r\n ++i;\r\n if (columns) {\r\n if (i > 0 && i % 16 === 0 && i !== k) {\r\n while (hex.length < 3*16+3) hex += \" \";\r\n out += hex+asc+\"\\n\";\r\n hex = asc = \"\";\r\n }\r\n }\r\n if (i === this.offset && i === this.limit)\r\n hex += i === this.markedOffset ? \"!\" : \"|\";\r\n else if (i === this.offset)\r\n hex += i === this.markedOffset ? \"[\" : \"<\";\r\n else if (i === this.limit)\r\n hex += i === this.markedOffset ? \"]\" : \">\";\r\n else\r\n hex += i === this.markedOffset ? \"'\" : (columns || (i !== 0 && i !== k) ? \" \" : \"\");\r\n }\r\n if (columns && hex !== \" \") {\r\n while (hex.length < 3*16+3)\r\n hex += \" \";\r\n out += hex + asc + \"\\n\";\r\n }\r\n return columns ? out : hex;\r\n };\r\n\r\n /**\r\n * Decodes a hex encoded string with marked offsets to a ByteBuffer.\r\n * @param {string} str Debug string to decode (not be generated with `columns = true`)\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n * @see ByteBuffer#toDebug\r\n */\r\n ByteBuffer.fromDebug = function(str, littleEndian, noAssert) {\r\n var k = str.length,\r\n bb = new ByteBuffer(((k+1)/3)|0, littleEndian, noAssert);\r\n var i = 0, j = 0, ch, b,\r\n rs = false, // Require symbol next\r\n ho = false, hm = false, hl = false, // Already has offset (ho), markedOffset (hm), limit (hl)?\r\n fail = false;\r\n while (i':\r\n if (!noAssert) {\r\n if (hl) {\r\n fail = true;\r\n break;\r\n }\r\n hl = true;\r\n }\r\n bb.limit = j;\r\n rs = false;\r\n break;\r\n case \"'\":\r\n if (!noAssert) {\r\n if (hm) {\r\n fail = true;\r\n break;\r\n }\r\n hm = true;\r\n }\r\n bb.markedOffset = j;\r\n rs = false;\r\n break;\r\n case ' ':\r\n rs = false;\r\n break;\r\n default:\r\n if (!noAssert) {\r\n if (rs) {\r\n fail = true;\r\n break;\r\n }\r\n }\r\n b = parseInt(ch+str.charAt(i++), 16);\r\n if (!noAssert) {\r\n if (isNaN(b) || b < 0 || b > 255)\r\n throw TypeError(\"Illegal str: Not a debug encoded string\");\r\n }\r\n bb.view[j++] = b;\r\n rs = true;\r\n }\r\n if (fail)\r\n throw TypeError(\"Illegal str: Invalid symbol at \"+i);\r\n }\r\n if (!noAssert) {\r\n if (!ho || !hl)\r\n throw TypeError(\"Illegal str: Missing offset or limit\");\r\n if (j>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var out = new Array(end - begin),\r\n b;\r\n while (begin < end) {\r\n b = this.view[begin++];\r\n if (b < 0x10)\r\n out.push(\"0\", b.toString(16));\r\n else out.push(b.toString(16));\r\n }\r\n return out.join('');\r\n };\r\n\r\n /**\r\n * Decodes a hex encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromHex = function(str, littleEndian, noAssert) {\r\n if (!noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (str.length % 2 !== 0)\r\n throw TypeError(\"Illegal str: Length not a multiple of 2\");\r\n }\r\n var k = str.length,\r\n bb = new ByteBuffer((k / 2) | 0, littleEndian),\r\n b;\r\n for (var i=0, j=0; i 255)\r\n throw TypeError(\"Illegal str: Contains non-hex characters\");\r\n bb.view[j++] = b;\r\n }\r\n bb.limit = j;\r\n return bb;\r\n };\r\n\r\n // utfx-embeddable\r\n\r\n /**\r\n * utfx-embeddable (c) 2014 Daniel Wirtz \r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/utfx for details\r\n */\r\n var utfx = function() {\r\n \"use strict\";\r\n\r\n /**\r\n * utfx namespace.\r\n * @inner\r\n * @type {!Object.}\r\n */\r\n var utfx = {};\r\n\r\n /**\r\n * Maximum valid code point.\r\n * @type {number}\r\n * @const\r\n */\r\n utfx.MAX_CODEPOINT = 0x10FFFF;\r\n\r\n /**\r\n * Encodes UTF8 code points to UTF8 bytes.\r\n * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point\r\n * respectively `null` if there are no more code points left or a single numeric code point.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte\r\n */\r\n utfx.encodeUTF8 = function(src, dst) {\r\n var cp = null;\r\n if (typeof src === 'number')\r\n cp = src,\r\n src = function() { return null; };\r\n while (cp !== null || (cp = src()) !== null) {\r\n if (cp < 0x80)\r\n dst(cp&0x7F);\r\n else if (cp < 0x800)\r\n dst(((cp>>6)&0x1F)|0xC0),\r\n dst((cp&0x3F)|0x80);\r\n else if (cp < 0x10000)\r\n dst(((cp>>12)&0x0F)|0xE0),\r\n dst(((cp>>6)&0x3F)|0x80),\r\n dst((cp&0x3F)|0x80);\r\n else\r\n dst(((cp>>18)&0x07)|0xF0),\r\n dst(((cp>>12)&0x3F)|0x80),\r\n dst(((cp>>6)&0x3F)|0x80),\r\n dst((cp&0x3F)|0x80);\r\n cp = null;\r\n }\r\n };\r\n\r\n /**\r\n * Decodes UTF8 bytes to UTF8 code points.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there\r\n * are no more bytes left.\r\n * @param {!function(number)} dst Code points destination as a function successively called with each decoded code point.\r\n * @throws {RangeError} If a starting byte is invalid in UTF8\r\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the\r\n * remaining bytes.\r\n */\r\n utfx.decodeUTF8 = function(src, dst) {\r\n var a, b, c, d, fail = function(b) {\r\n b = b.slice(0, b.indexOf(null));\r\n var err = Error(b.toString());\r\n err.name = \"TruncatedError\";\r\n err['bytes'] = b;\r\n throw err;\r\n };\r\n while ((a = src()) !== null) {\r\n if ((a&0x80) === 0)\r\n dst(a);\r\n else if ((a&0xE0) === 0xC0)\r\n ((b = src()) === null) && fail([a, b]),\r\n dst(((a&0x1F)<<6) | (b&0x3F));\r\n else if ((a&0xF0) === 0xE0)\r\n ((b=src()) === null || (c=src()) === null) && fail([a, b, c]),\r\n dst(((a&0x0F)<<12) | ((b&0x3F)<<6) | (c&0x3F));\r\n else if ((a&0xF8) === 0xF0)\r\n ((b=src()) === null || (c=src()) === null || (d=src()) === null) && fail([a, b, c ,d]),\r\n dst(((a&0x07)<<18) | ((b&0x3F)<<12) | ((c&0x3F)<<6) | (d&0x3F));\r\n else throw RangeError(\"Illegal starting byte: \"+a);\r\n }\r\n };\r\n\r\n /**\r\n * Converts UTF16 characters to UTF8 code points.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @param {!function(number)} dst Code points destination as a function successively called with each converted code\r\n * point.\r\n */\r\n utfx.UTF16toUTF8 = function(src, dst) {\r\n var c1, c2 = null;\r\n while (true) {\r\n if ((c1 = c2 !== null ? c2 : src()) === null)\r\n break;\r\n if (c1 >= 0xD800 && c1 <= 0xDFFF) {\r\n if ((c2 = src()) !== null) {\r\n if (c2 >= 0xDC00 && c2 <= 0xDFFF) {\r\n dst((c1-0xD800)*0x400+c2-0xDC00+0x10000);\r\n c2 = null; continue;\r\n }\r\n }\r\n }\r\n dst(c1);\r\n }\r\n if (c2 !== null) dst(c2);\r\n };\r\n\r\n /**\r\n * Converts UTF8 code points to UTF16 characters.\r\n * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point\r\n * respectively `null` if there are no more code points left or a single numeric code point.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.\r\n * @throws {RangeError} If a code point is out of range\r\n */\r\n utfx.UTF8toUTF16 = function(src, dst) {\r\n var cp = null;\r\n if (typeof src === 'number')\r\n cp = src, src = function() { return null; };\r\n while (cp !== null || (cp = src()) !== null) {\r\n if (cp <= 0xFFFF)\r\n dst(cp);\r\n else\r\n cp -= 0x10000,\r\n dst((cp>>10)+0xD800),\r\n dst((cp%0x400)+0xDC00);\r\n cp = null;\r\n }\r\n };\r\n\r\n /**\r\n * Converts and encodes UTF16 characters to UTF8 bytes.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively `null`\r\n * if there are no more characters left.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte.\r\n */\r\n utfx.encodeUTF16toUTF8 = function(src, dst) {\r\n utfx.UTF16toUTF8(src, function(cp) {\r\n utfx.encodeUTF8(cp, dst);\r\n });\r\n };\r\n\r\n /**\r\n * Decodes and converts UTF8 bytes to UTF16 characters.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there\r\n * are no more bytes left.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.\r\n * @throws {RangeError} If a starting byte is invalid in UTF8\r\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the remaining bytes.\r\n */\r\n utfx.decodeUTF8toUTF16 = function(src, dst) {\r\n utfx.decodeUTF8(src, function(cp) {\r\n utfx.UTF8toUTF16(cp, dst);\r\n });\r\n };\r\n\r\n /**\r\n * Calculates the byte length of an UTF8 code point.\r\n * @param {number} cp UTF8 code point\r\n * @returns {number} Byte length\r\n */\r\n utfx.calculateCodePoint = function(cp) {\r\n return (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes required to store UTF8 code points.\r\n * @param {(!function():number|null)} src Code points source as a function returning the next code point respectively\r\n * `null` if there are no more code points left.\r\n * @returns {number} The number of UTF8 bytes required\r\n */\r\n utfx.calculateUTF8 = function(src) {\r\n var cp, l=0;\r\n while ((cp = src()) !== null)\r\n l += (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n return l;\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 code points respectively UTF8 bytes required to store UTF16 char codes.\r\n * @param {(!function():number|null)} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @returns {!Array.} The number of UTF8 code points at index 0 and the number of UTF8 bytes required at index 1.\r\n */\r\n utfx.calculateUTF16asUTF8 = function(src) {\r\n var n=0, l=0;\r\n utfx.UTF16toUTF8(src, function(cp) {\r\n ++n; l += (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n });\r\n return [n,l];\r\n };\r\n\r\n return utfx;\r\n }();\r\n\r\n // encodings/utf8\r\n\r\n /**\r\n * Encodes this ByteBuffer's contents between {@link ByteBuffer#offset} and {@link ByteBuffer#limit} to an UTF8 encoded\r\n * string.\r\n * @returns {string} Hex encoded string\r\n * @throws {RangeError} If `offset > limit`\r\n * @expose\r\n */\r\n ByteBufferPrototype.toUTF8 = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var sd; try {\r\n utfx.decodeUTF8toUTF16(function() {\r\n return begin < end ? this.view[begin++] : null;\r\n }.bind(this), sd = stringDestination());\r\n } catch (e) {\r\n if (begin !== end)\r\n throw RangeError(\"Illegal range: Truncated data, \"+begin+\" != \"+end);\r\n }\r\n return sd();\r\n };\r\n\r\n /**\r\n * Decodes an UTF8 encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromUTF8 = function(str, littleEndian, noAssert) {\r\n if (!noAssert)\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n var bb = new ByteBuffer(utfx.calculateUTF16asUTF8(stringSource(str), true)[1], littleEndian, noAssert),\r\n i = 0;\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n bb.view[i++] = b;\r\n });\r\n bb.limit = i;\r\n return bb;\r\n };\r\n\r\n return ByteBuffer;\r\n});\r\n","/*\r\n Copyright 2013 Daniel Wirtz \r\n Copyright 2009 The Closure Library Authors. All Rights Reserved.\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS-IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n */\r\n\r\n/**\r\n * @license long.js (c) 2013 Daniel Wirtz \r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/long.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (typeof define === 'function' && define[\"amd\"])\r\n define([], factory);\r\n /* CommonJS */ else if (typeof require === 'function' && typeof module === \"object\" && module && module[\"exports\"])\r\n module[\"exports\"] = factory();\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"Long\"] = factory();\r\n\r\n})(this, function() {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\r\n * See the from* functions below for more convenient ways of constructing Longs.\r\n * @exports Long\r\n * @class A Long class for representing a 64 bit two's-complement integer value.\r\n * @param {number} low The low (signed) 32 bits of the long\r\n * @param {number} high The high (signed) 32 bits of the long\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @constructor\r\n */\r\n function Long(low, high, unsigned) {\r\n\r\n /**\r\n * The low 32 bits as a signed value.\r\n * @type {number}\r\n * @expose\r\n */\r\n this.low = low | 0;\r\n\r\n /**\r\n * The high 32 bits as a signed value.\r\n * @type {number}\r\n * @expose\r\n */\r\n this.high = high | 0;\r\n\r\n /**\r\n * Whether unsigned or not.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.unsigned = !!unsigned;\r\n }\r\n\r\n // The internal representation of a long is the two given signed, 32-bit values.\r\n // We use 32-bit pieces because these are the size of integers on which\r\n // Javascript performs bit-operations. For operations like addition and\r\n // multiplication, we split each number into 16 bit pieces, which can easily be\r\n // multiplied within Javascript's floating-point representation without overflow\r\n // or change in sign.\r\n //\r\n // In the algorithms below, we frequently reduce the negative case to the\r\n // positive case by negating the input(s) and then post-processing the result.\r\n // Note that we must ALWAYS check specially whether those values are MIN_VALUE\r\n // (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\r\n // a positive number, it overflows back into a negative). Not handling this\r\n // case would often result in infinite recursion.\r\n //\r\n // Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\r\n // methods on which they depend.\r\n\r\n /**\r\n * An indicator used to reliably determine if an object is a Long or not.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n * @private\r\n */\r\n Long.__isLong__;\r\n\r\n Object.defineProperty(Long.prototype, \"__isLong__\", {\r\n value: true,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n\r\n /**\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n * @inner\r\n */\r\n function isLong(obj) {\r\n return (obj && obj[\"__isLong__\"]) === true;\r\n }\r\n\r\n /**\r\n * Tests if the specified object is a Long.\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Long.isLong = isLong;\r\n\r\n /**\r\n * A cache of the Long representations of small integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\n var INT_CACHE = {};\r\n\r\n /**\r\n * A cache of the Long representations of small unsigned integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\n var UINT_CACHE = {};\r\n\r\n /**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromInt(value, unsigned) {\r\n var obj, cachedObj, cache;\r\n if (unsigned) {\r\n value >>>= 0;\r\n if (cache = (0 <= value && value < 256)) {\r\n cachedObj = UINT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true);\r\n if (cache)\r\n UINT_CACHE[value] = obj;\r\n return obj;\r\n } else {\r\n value |= 0;\r\n if (cache = (-128 <= value && value < 128)) {\r\n cachedObj = INT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, value < 0 ? -1 : 0, false);\r\n if (cache)\r\n INT_CACHE[value] = obj;\r\n return obj;\r\n }\r\n }\r\n\r\n /**\r\n * Returns a Long representing the given 32 bit integer value.\r\n * @function\r\n * @param {number} value The 32 bit integer in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @returns {!Long} The corresponding Long value\r\n * @expose\r\n */\r\n Long.fromInt = fromInt;\r\n\r\n /**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromNumber(value, unsigned) {\r\n if (isNaN(value) || !isFinite(value))\r\n return unsigned ? UZERO : ZERO;\r\n if (unsigned) {\r\n if (value < 0)\r\n return UZERO;\r\n if (value >= TWO_PWR_64_DBL)\r\n return MAX_UNSIGNED_VALUE;\r\n } else {\r\n if (value <= -TWO_PWR_63_DBL)\r\n return MIN_VALUE;\r\n if (value + 1 >= TWO_PWR_63_DBL)\r\n return MAX_VALUE;\r\n }\r\n if (value < 0)\r\n return fromNumber(-value, unsigned).neg();\r\n return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);\r\n }\r\n\r\n /**\r\n * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\r\n * @function\r\n * @param {number} value The number in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @returns {!Long} The corresponding Long value\r\n * @expose\r\n */\r\n Long.fromNumber = fromNumber;\r\n\r\n /**\r\n * @param {number} lowBits\r\n * @param {number} highBits\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromBits(lowBits, highBits, unsigned) {\r\n return new Long(lowBits, highBits, unsigned);\r\n }\r\n\r\n /**\r\n * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\r\n * assumed to use 32 bits.\r\n * @function\r\n * @param {number} lowBits The low 32 bits\r\n * @param {number} highBits The high 32 bits\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @returns {!Long} The corresponding Long value\r\n * @expose\r\n */\r\n Long.fromBits = fromBits;\r\n\r\n /**\r\n * @function\r\n * @param {number} base\r\n * @param {number} exponent\r\n * @returns {number}\r\n * @inner\r\n */\r\n var pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4)\r\n\r\n /**\r\n * @param {string} str\r\n * @param {(boolean|number)=} unsigned\r\n * @param {number=} radix\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromString(str, unsigned, radix) {\r\n if (str.length === 0)\r\n throw Error('empty string');\r\n if (str === \"NaN\" || str === \"Infinity\" || str === \"+Infinity\" || str === \"-Infinity\")\r\n return ZERO;\r\n if (typeof unsigned === 'number') // For goog.math.long compatibility\r\n radix = unsigned,\r\n unsigned = false;\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n\r\n var p;\r\n if ((p = str.indexOf('-')) > 0)\r\n throw Error('interior hyphen');\r\n else if (p === 0) {\r\n return fromString(str.substring(1), unsigned, radix).neg();\r\n }\r\n\r\n // Do several (8) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 8));\r\n\r\n var result = ZERO;\r\n for (var i = 0; i < str.length; i += 8) {\r\n var size = Math.min(8, str.length - i),\r\n value = parseInt(str.substring(i, i + size), radix);\r\n if (size < 8) {\r\n var power = fromNumber(pow_dbl(radix, size));\r\n result = result.mul(power).add(fromNumber(value));\r\n } else {\r\n result = result.mul(radixToPower);\r\n result = result.add(fromNumber(value));\r\n }\r\n }\r\n result.unsigned = unsigned;\r\n return result;\r\n }\r\n\r\n /**\r\n * Returns a Long representation of the given string, written using the specified radix.\r\n * @function\r\n * @param {string} str The textual representation of the Long\r\n * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\r\n * @returns {!Long} The corresponding Long value\r\n * @expose\r\n */\r\n Long.fromString = fromString;\r\n\r\n /**\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromValue(val) {\r\n if (val /* is compatible */ instanceof Long)\r\n return val;\r\n if (typeof val === 'number')\r\n return fromNumber(val);\r\n if (typeof val === 'string')\r\n return fromString(val);\r\n // Throws for non-objects, converts non-instanceof Long:\r\n return fromBits(val.low, val.high, val.unsigned);\r\n }\r\n\r\n /**\r\n * Converts the specified value to a Long.\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n Long.fromValue = fromValue;\r\n\r\n // NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\r\n // no runtime penalty for these.\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_16_DBL = 1 << 16;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_24_DBL = 1 << 24;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\r\n\r\n /**\r\n * @type {!Long}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var ZERO = fromInt(0);\r\n\r\n /**\r\n * Signed zero.\r\n * @type {!Long}\r\n * @expose\r\n */\r\n Long.ZERO = ZERO;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var UZERO = fromInt(0, true);\r\n\r\n /**\r\n * Unsigned zero.\r\n * @type {!Long}\r\n * @expose\r\n */\r\n Long.UZERO = UZERO;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var ONE = fromInt(1);\r\n\r\n /**\r\n * Signed one.\r\n * @type {!Long}\r\n * @expose\r\n */\r\n Long.ONE = ONE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var UONE = fromInt(1, true);\r\n\r\n /**\r\n * Unsigned one.\r\n * @type {!Long}\r\n * @expose\r\n */\r\n Long.UONE = UONE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var NEG_ONE = fromInt(-1);\r\n\r\n /**\r\n * Signed negative one.\r\n * @type {!Long}\r\n * @expose\r\n */\r\n Long.NEG_ONE = NEG_ONE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var MAX_VALUE = fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false);\r\n\r\n /**\r\n * Maximum signed value.\r\n * @type {!Long}\r\n * @expose\r\n */\r\n Long.MAX_VALUE = MAX_VALUE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true);\r\n\r\n /**\r\n * Maximum unsigned value.\r\n * @type {!Long}\r\n * @expose\r\n */\r\n Long.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var MIN_VALUE = fromBits(0, 0x80000000|0, false);\r\n\r\n /**\r\n * Minimum signed value.\r\n * @type {!Long}\r\n * @expose\r\n */\r\n Long.MIN_VALUE = MIN_VALUE;\r\n\r\n /**\r\n * @alias Long.prototype\r\n * @inner\r\n */\r\n var LongPrototype = Long.prototype;\r\n\r\n /**\r\n * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\r\n * @returns {number}\r\n * @expose\r\n */\r\n LongPrototype.toInt = function toInt() {\r\n return this.unsigned ? this.low >>> 0 : this.low;\r\n };\r\n\r\n /**\r\n * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\r\n * @returns {number}\r\n * @expose\r\n */\r\n LongPrototype.toNumber = function toNumber() {\r\n if (this.unsigned)\r\n return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0);\r\n return this.high * TWO_PWR_32_DBL + (this.low >>> 0);\r\n };\r\n\r\n /**\r\n * Converts the Long to a string written in the specified radix.\r\n * @param {number=} radix Radix (2-36), defaults to 10\r\n * @returns {string}\r\n * @override\r\n * @throws {RangeError} If `radix` is out of range\r\n * @expose\r\n */\r\n LongPrototype.toString = function toString(radix) {\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n if (this.isZero())\r\n return '0';\r\n if (this.isNegative()) { // Unsigned Longs are never negative\r\n if (this.eq(MIN_VALUE)) {\r\n // We need to change the Long value before it can be negated, so we remove\r\n // the bottom-most digit in this base and then recurse to do the rest.\r\n var radixLong = fromNumber(radix),\r\n div = this.div(radixLong),\r\n rem1 = div.mul(radixLong).sub(this);\r\n return div.toString(radix) + rem1.toInt().toString(radix);\r\n } else\r\n return '-' + this.neg().toString(radix);\r\n }\r\n\r\n // Do several (6) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned),\r\n rem = this;\r\n var result = '';\r\n while (true) {\r\n var remDiv = rem.div(radixToPower),\r\n intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0,\r\n digits = intval.toString(radix);\r\n rem = remDiv;\r\n if (rem.isZero())\r\n return digits + result;\r\n else {\r\n while (digits.length < 6)\r\n digits = '0' + digits;\r\n result = '' + digits + result;\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Gets the high 32 bits as a signed integer.\r\n * @returns {number} Signed high bits\r\n * @expose\r\n */\r\n LongPrototype.getHighBits = function getHighBits() {\r\n return this.high;\r\n };\r\n\r\n /**\r\n * Gets the high 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned high bits\r\n * @expose\r\n */\r\n LongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {\r\n return this.high >>> 0;\r\n };\r\n\r\n /**\r\n * Gets the low 32 bits as a signed integer.\r\n * @returns {number} Signed low bits\r\n * @expose\r\n */\r\n LongPrototype.getLowBits = function getLowBits() {\r\n return this.low;\r\n };\r\n\r\n /**\r\n * Gets the low 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned low bits\r\n * @expose\r\n */\r\n LongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {\r\n return this.low >>> 0;\r\n };\r\n\r\n /**\r\n * Gets the number of bits needed to represent the absolute value of this Long.\r\n * @returns {number}\r\n * @expose\r\n */\r\n LongPrototype.getNumBitsAbs = function getNumBitsAbs() {\r\n if (this.isNegative()) // Unsigned Longs are never negative\r\n return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();\r\n var val = this.high != 0 ? this.high : this.low;\r\n for (var bit = 31; bit > 0; bit--)\r\n if ((val & (1 << bit)) != 0)\r\n break;\r\n return this.high != 0 ? bit + 33 : bit + 1;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value equals zero.\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.isZero = function isZero() {\r\n return this.high === 0 && this.low === 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is negative.\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.isNegative = function isNegative() {\r\n return !this.unsigned && this.high < 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is positive.\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.isPositive = function isPositive() {\r\n return this.unsigned || this.high >= 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is odd.\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.isOdd = function isOdd() {\r\n return (this.low & 1) === 1;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is even.\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.isEven = function isEven() {\r\n return (this.low & 1) === 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value equals the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.equals = function equals(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1)\r\n return false;\r\n return this.high === other.high && this.low === other.low;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.eq = LongPrototype.equals;\r\n\r\n /**\r\n * Tests if this Long's value differs from the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.notEquals = function notEquals(other) {\r\n return !this.eq(/* validates */ other);\r\n };\r\n\r\n /**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.neq = LongPrototype.notEquals;\r\n\r\n /**\r\n * Tests if this Long's value is less than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.lessThan = function lessThan(other) {\r\n return this.comp(/* validates */ other) < 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.lt = LongPrototype.lessThan;\r\n\r\n /**\r\n * Tests if this Long's value is less than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {\r\n return this.comp(/* validates */ other) <= 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.lte = LongPrototype.lessThanOrEqual;\r\n\r\n /**\r\n * Tests if this Long's value is greater than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.greaterThan = function greaterThan(other) {\r\n return this.comp(/* validates */ other) > 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.gt = LongPrototype.greaterThan;\r\n\r\n /**\r\n * Tests if this Long's value is greater than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {\r\n return this.comp(/* validates */ other) >= 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.gte = LongPrototype.greaterThanOrEqual;\r\n\r\n /**\r\n * Compares this Long's value with the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n * @expose\r\n */\r\n LongPrototype.compare = function compare(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.eq(other))\r\n return 0;\r\n var thisNeg = this.isNegative(),\r\n otherNeg = other.isNegative();\r\n if (thisNeg && !otherNeg)\r\n return -1;\r\n if (!thisNeg && otherNeg)\r\n return 1;\r\n // At this point the sign bits are the same\r\n if (!this.unsigned)\r\n return this.sub(other).isNegative() ? -1 : 1;\r\n // Both are positive if at least one is unsigned\r\n return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1;\r\n };\r\n\r\n /**\r\n * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n * @expose\r\n */\r\n LongPrototype.comp = LongPrototype.compare;\r\n\r\n /**\r\n * Negates this Long's value.\r\n * @returns {!Long} Negated Long\r\n * @expose\r\n */\r\n LongPrototype.negate = function negate() {\r\n if (!this.unsigned && this.eq(MIN_VALUE))\r\n return MIN_VALUE;\r\n return this.not().add(ONE);\r\n };\r\n\r\n /**\r\n * Negates this Long's value. This is an alias of {@link Long#negate}.\r\n * @function\r\n * @returns {!Long} Negated Long\r\n * @expose\r\n */\r\n LongPrototype.neg = LongPrototype.negate;\r\n\r\n /**\r\n * Returns the sum of this and the specified Long.\r\n * @param {!Long|number|string} addend Addend\r\n * @returns {!Long} Sum\r\n * @expose\r\n */\r\n LongPrototype.add = function add(addend) {\r\n if (!isLong(addend))\r\n addend = fromValue(addend);\r\n\r\n // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = addend.high >>> 16;\r\n var b32 = addend.high & 0xFFFF;\r\n var b16 = addend.low >>> 16;\r\n var b00 = addend.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 + b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 + b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 + b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 + b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the difference of this and the specified Long.\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n * @expose\r\n */\r\n LongPrototype.subtract = function subtract(subtrahend) {\r\n if (!isLong(subtrahend))\r\n subtrahend = fromValue(subtrahend);\r\n return this.add(subtrahend.neg());\r\n };\r\n\r\n /**\r\n * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\r\n * @function\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n * @expose\r\n */\r\n LongPrototype.sub = LongPrototype.subtract;\r\n\r\n /**\r\n * Returns the product of this and the specified Long.\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n * @expose\r\n */\r\n LongPrototype.multiply = function multiply(multiplier) {\r\n if (this.isZero())\r\n return ZERO;\r\n if (!isLong(multiplier))\r\n multiplier = fromValue(multiplier);\r\n if (multiplier.isZero())\r\n return ZERO;\r\n if (this.eq(MIN_VALUE))\r\n return multiplier.isOdd() ? MIN_VALUE : ZERO;\r\n if (multiplier.eq(MIN_VALUE))\r\n return this.isOdd() ? MIN_VALUE : ZERO;\r\n\r\n if (this.isNegative()) {\r\n if (multiplier.isNegative())\r\n return this.neg().mul(multiplier.neg());\r\n else\r\n return this.neg().mul(multiplier).neg();\r\n } else if (multiplier.isNegative())\r\n return this.mul(multiplier.neg()).neg();\r\n\r\n // If both longs are small, use float multiplication\r\n if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24))\r\n return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);\r\n\r\n // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\r\n // We can skip products that would overflow.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = multiplier.high >>> 16;\r\n var b32 = multiplier.high & 0xFFFF;\r\n var b16 = multiplier.low >>> 16;\r\n var b00 = multiplier.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 * b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 * b00;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c16 += a00 * b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 * b00;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a16 * b16;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a00 * b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\r\n * @function\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n * @expose\r\n */\r\n LongPrototype.mul = LongPrototype.multiply;\r\n\r\n /**\r\n * Returns this Long divided by the specified.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n * @expose\r\n */\r\n LongPrototype.divide = function divide(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n if (divisor.isZero())\r\n throw Error('division by zero');\r\n if (this.isZero())\r\n return this.unsigned ? UZERO : ZERO;\r\n var approx, rem, res;\r\n if (this.eq(MIN_VALUE)) {\r\n if (divisor.eq(ONE) || divisor.eq(NEG_ONE))\r\n return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE\r\n else if (divisor.eq(MIN_VALUE))\r\n return ONE;\r\n else {\r\n // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\r\n var halfThis = this.shr(1);\r\n approx = halfThis.div(divisor).shl(1);\r\n if (approx.eq(ZERO)) {\r\n return divisor.isNegative() ? ONE : NEG_ONE;\r\n } else {\r\n rem = this.sub(divisor.mul(approx));\r\n res = approx.add(rem.div(divisor));\r\n return res;\r\n }\r\n }\r\n } else if (divisor.eq(MIN_VALUE))\r\n return this.unsigned ? UZERO : ZERO;\r\n if (this.isNegative()) {\r\n if (divisor.isNegative())\r\n return this.neg().div(divisor.neg());\r\n return this.neg().div(divisor).neg();\r\n } else if (divisor.isNegative())\r\n return this.div(divisor.neg()).neg();\r\n\r\n // Repeat the following until the remainder is less than other: find a\r\n // floating-point that approximates remainder / other *from below*, add this\r\n // into the result, and subtract it from the remainder. It is critical that\r\n // the approximate value is less than or equal to the real value so that the\r\n // remainder never becomes negative.\r\n res = ZERO;\r\n rem = this;\r\n while (rem.gte(divisor)) {\r\n // Approximate the result of division. This may be a little greater or\r\n // smaller than the actual value.\r\n approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));\r\n\r\n // We will tweak the approximate result by changing it in the 48-th digit or\r\n // the smallest non-fractional digit, whichever is larger.\r\n var log2 = Math.ceil(Math.log(approx) / Math.LN2),\r\n delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48),\r\n\r\n // Decrease the approximation until it is smaller than the remainder. Note\r\n // that if it is too large, the product overflows and is negative.\r\n approxRes = fromNumber(approx),\r\n approxRem = approxRes.mul(divisor);\r\n while (approxRem.isNegative() || approxRem.gt(rem)) {\r\n approx -= delta;\r\n approxRes = fromNumber(approx, this.unsigned);\r\n approxRem = approxRes.mul(divisor);\r\n }\r\n\r\n // We know the answer can't be zero... and actually, zero would cause\r\n // infinite recursion since we would make no progress.\r\n if (approxRes.isZero())\r\n approxRes = ONE;\r\n\r\n res = res.add(approxRes);\r\n rem = rem.sub(approxRem);\r\n }\r\n return res;\r\n };\r\n\r\n /**\r\n * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n * @expose\r\n */\r\n LongPrototype.div = LongPrototype.divide;\r\n\r\n /**\r\n * Returns this Long modulo the specified.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n * @expose\r\n */\r\n LongPrototype.modulo = function modulo(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n return this.sub(this.div(divisor).mul(divisor));\r\n };\r\n\r\n /**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n * @expose\r\n */\r\n LongPrototype.mod = LongPrototype.modulo;\r\n\r\n /**\r\n * Returns the bitwise NOT of this Long.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n LongPrototype.not = function not() {\r\n return fromBits(~this.low, ~this.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the bitwise AND of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n LongPrototype.and = function and(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low & other.low, this.high & other.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the bitwise OR of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n LongPrototype.or = function or(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low | other.low, this.high | other.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the bitwise XOR of this Long and the given one.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n LongPrototype.xor = function xor(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns this Long with bits shifted to the left by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n * @expose\r\n */\r\n LongPrototype.shiftLeft = function shiftLeft(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned);\r\n else\r\n return fromBits(0, this.low << (numBits - 32), this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n * @expose\r\n */\r\n LongPrototype.shl = LongPrototype.shiftLeft;\r\n\r\n /**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n * @expose\r\n */\r\n LongPrototype.shiftRight = function shiftRight(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned);\r\n else\r\n return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n * @expose\r\n */\r\n LongPrototype.shr = LongPrototype.shiftRight;\r\n\r\n /**\r\n * Returns this Long with bits logically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n * @expose\r\n */\r\n LongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n numBits &= 63;\r\n if (numBits === 0)\r\n return this;\r\n else {\r\n var high = this.high;\r\n if (numBits < 32) {\r\n var low = this.low;\r\n return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned);\r\n } else if (numBits === 32)\r\n return fromBits(high, 0, this.unsigned);\r\n else\r\n return fromBits(high >>> (numBits - 32), 0, this.unsigned);\r\n }\r\n };\r\n\r\n /**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n * @expose\r\n */\r\n LongPrototype.shru = LongPrototype.shiftRightUnsigned;\r\n\r\n /**\r\n * Converts this Long to signed.\r\n * @returns {!Long} Signed long\r\n * @expose\r\n */\r\n LongPrototype.toSigned = function toSigned() {\r\n if (!this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, false);\r\n };\r\n\r\n /**\r\n * Converts this Long to unsigned.\r\n * @returns {!Long} Unsigned long\r\n * @expose\r\n */\r\n LongPrototype.toUnsigned = function toUnsigned() {\r\n if (this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, true);\r\n };\r\n\r\n return Long;\r\n});\r\n"]} \ No newline at end of file diff --git a/python/.gitignore b/python/.gitignore deleted file mode 100644 index d1b8b08ecb..0000000000 --- a/python/.gitignore +++ /dev/null @@ -1 +0,0 @@ -machinetalk \ No newline at end of file diff --git a/scripts/asciidoc.mustache b/scripts/asciidoc.mustache index a29dc666e8..ffdb319adc 100644 --- a/scripts/asciidoc.mustache +++ b/scripts/asciidoc.mustache @@ -1,3 +1,7 @@ +--- +layout: docs +--- + = Machinetalk Protobuf Documentation :toc: diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000000..224a77957f --- /dev/null +++ b/setup.cfg @@ -0,0 +1,2 @@ +[metadata] +description-file = README.md \ No newline at end of file diff --git a/python/setup.py b/setup.py similarity index 76% rename from python/setup.py rename to setup.py index ab4a494779..4a14c4a9b9 100644 --- a/python/setup.py +++ b/setup.py @@ -9,8 +9,13 @@ import shutil PROJECT = 'machinetalk' -PROJECT_URL = 'https://github.com/machinekit/machinetalk-protobuf' PROJECT_NAME = '%s-protobuf' % PROJECT +DESCRIPTION = "Protobuf Python modules for %s" % PROJECT +VERSION = "v1.0.6" +AUTHOR = "Alexander Roessler" +AUTHOR_EMAIL = "alex@machinekoder.com" +PROJECT_URL = 'https://github.com/machinekit/%s' % PROJECT_NAME +DOWNLOAD_URL = 'https://github.com/machinekit/%s/archive/%s.tar.gz' % (PROJECT_NAME, VERSION) # We must use setuptools, not distutils, because we need to use the # namespace_packages option for the "google" package. @@ -41,14 +46,14 @@ # Find the Protocol Compiler. if 'PROTOC' in os.environ and os.path.exists(os.environ['PROTOC']): protoc = os.environ['PROTOC'] -elif os.path.exists("../src/protoc"): - protoc = "../src/protoc" -elif os.path.exists("../src/protoc.exe"): - protoc = "../src/protoc.exe" -elif os.path.exists("../vsprojects/Debug/protoc.exe"): - protoc = "../vsprojects/Debug/protoc.exe" -elif os.path.exists("../vsprojects/Release/protoc.exe"): - protoc = "../vsprojects/Release/protoc.exe" +elif os.path.exists("./src/protoc"): + protoc = "./src/protoc" +elif os.path.exists("./src/protoc.exe"): + protoc = "./src/protoc.exe" +elif os.path.exists("./vsprojects/Debug/protoc.exe"): + protoc = "./vsprojects/Debug/protoc.exe" +elif os.path.exists("./vsprojects/Release/protoc.exe"): + protoc = "./vsprojects/Release/protoc.exe" else: protoc = find_executable("protoc") @@ -62,7 +67,7 @@ def generate_proto(source, require = True): if not require and not os.path.exists(source): return - output = source.replace(".proto", "_pb2.py").replace("../src/", "") + output = source.replace(".proto", "_pb2.py").replace("./src/", "") if (not os.path.exists(output) or (os.path.exists(source) and @@ -75,12 +80,12 @@ def generate_proto(source, require = True): if protoc is None: sys.stderr.write( - "protoc is not installed nor found in ../src. " + "protoc is not installed nor found in ./src. " "Please compile it or install the binary package.\n" ) sys.exit(-1) - protoc_command = [protoc, "-I../src", "-I" + google_protobuf_includedir, "--python_out=.", source] + protoc_command = [protoc, "-I./src", "-I" + google_protobuf_includedir, "--python_out=.", source] print("Command: %s" % protoc_command) if subprocess.call(protoc_command) != 0: sys.exit(-1) @@ -112,7 +117,7 @@ def run(self): class build_py(_build_py): def run(self): - source_path = '../src/%s/protobuf/' % PROJECT + source_path = './src/%s/protobuf/' % PROJECT # Generate necessary .proto file if it doesn't exist. for entry in os.listdir(source_path): @@ -129,12 +134,15 @@ def run(self): create_init(PROJECT + '/protobuf') # start the setup setup(name=PROJECT_NAME, - version="1.0", - description="Protobuf Python modules for %s" % PROJECT, + version=VERSION, + description=DESCRIPTION, url=PROJECT_URL, + download_url=DOWNLOAD_URL, + author=AUTHOR, + author_email=AUTHOR_EMAIL, namespace_packages=[PROJECT], packages=find_packages(), - install_requires=['setuptools'], + install_requires=['setuptools', 'protobuf'], cmdclass={ 'clean': clean, 'build_py': build_py, diff --git a/src/README.msgid b/src/README.msgid index e4116ac1bd..8a5296cf1d 100644 --- a/src/README.msgid +++ b/src/README.msgid @@ -21,11 +21,12 @@ msgid's have to be unique across all messages and all proto files. This must be The absolute value of the msgid option is irrelevant as it is only used as a key; uniqueness counts. msgid's need not be sequential. -It is helpful to use message id' less than say a few thousand because -it will be transported in a limited-size field in the multiframe ring -(a uint32_t), and there should be bits available for other purposes -like specifying the encoding (protobuf, or a deserialized nanopb C -struct). +Any msgid value must be between 1 and msgidType.MSGID_MAX. This is +checked at startup time in libmkproto and will result in an assert if +violated. Values above MSGID_MAX to 4095 are reserved message ID +values, see enum msgidType in types.proto .The reason is the +limited-size field (12 bits) in the multiframe ring flag (see +mfields_t). Convention for adding msgid's: ------------------------------ @@ -38,7 +39,7 @@ e.g. canon.proto: config.proto: // msgid base: 200 -ans so forth. +and so forth. To tag a message with a msgid, proceed like so (using canon.proto as example): @@ -56,4 +57,26 @@ message Emc_Traj_Set_G5x { required OriginIndex g5x_index = 20; } +Accessing the msgid if the message name is known: +------------------------------------------------- +Google Protobuf, Python bindings: + +def msgid(m): + return m.DESCRIPTOR.GetOptions().Extensions[nanopb_msgopt].msgid + + +Google Protobuf, C++ bindings: + +uint32 msgid(const ::google::protobuf::Message &m) +{ + const ::google::protobuf::MessageOptions& options = m.GetDescriptor()->options(); + return options.GetExtension(nanopb_msgopt).msgid(); +} + +Nanopb: + +use the _msgid symbol which defines an integer constant + +NB: due to the use of 'package machinetalk;', for example, the nanopb symbol for +message 'Container' is 'pb_Container_msgid' diff --git a/src/machinetalk/protobuf/canon.proto b/src/machinetalk/protobuf/canon.proto index ad1171cc08..25510fc72c 100644 --- a/src/machinetalk/protobuf/canon.proto +++ b/src/machinetalk/protobuf/canon.proto @@ -1,3 +1,4 @@ +syntax = "proto2"; import "machinetalk/protobuf/nanopb.proto"; // see README.msgid diff --git a/src/machinetalk/protobuf/config.proto b/src/machinetalk/protobuf/config.proto index 536fc2c8b8..7d6447dfc5 100644 --- a/src/machinetalk/protobuf/config.proto +++ b/src/machinetalk/protobuf/config.proto @@ -1,3 +1,4 @@ +syntax = "proto2"; import "machinetalk/protobuf/nanopb.proto"; // see README.msgid diff --git a/src/machinetalk/protobuf/emcclass.proto b/src/machinetalk/protobuf/emcclass.proto index 93594b71ec..ea165b148d 100644 --- a/src/machinetalk/protobuf/emcclass.proto +++ b/src/machinetalk/protobuf/emcclass.proto @@ -1,3 +1,4 @@ +syntax = "proto2"; import "machinetalk/protobuf/nanopb.proto"; // see README.msgid diff --git a/src/machinetalk/protobuf/firmware.proto b/src/machinetalk/protobuf/firmware.proto index 030aee5a19..10164fd896 100644 --- a/src/machinetalk/protobuf/firmware.proto +++ b/src/machinetalk/protobuf/firmware.proto @@ -1,3 +1,4 @@ +syntax = "proto2"; /** firmware descriptor for hostmot2 The message Firmware encodes the detail which used to be hardcoded in the low-level hostmot2 driver in the struct hm2_lowlevel_io_struct. diff --git a/src/machinetalk/protobuf/jplan.proto b/src/machinetalk/protobuf/jplan.proto new file mode 100644 index 0000000000..ce479b6c61 --- /dev/null +++ b/src/machinetalk/protobuf/jplan.proto @@ -0,0 +1,23 @@ +syntax = "proto2"; +package machinetalk; + +// see README.msgid +// msgid base: 350 + +import "machinetalk/protobuf/nanopb.proto"; + + +message JplanJoint { + option (nanopb_msgopt).msgid = 352; + + optional double pos_cmd = 1; + optional double max_vel = 2; + optional double max_acc = 3; + optional bool enable = 4; // enable/disable this joint +}; + +message JplanCommand { + option (nanopb_msgopt).msgid = 354; + + repeated JplanJoint joint = 2 [(nanopb).max_count = 10];; +}; diff --git a/src/machinetalk/protobuf/log.proto b/src/machinetalk/protobuf/log.proto index e0b2ccf216..945d37e7a2 100644 --- a/src/machinetalk/protobuf/log.proto +++ b/src/machinetalk/protobuf/log.proto @@ -1,3 +1,4 @@ +syntax = "proto2"; package machinetalk; // see README.msgid // msgid base: 400 diff --git a/src/machinetalk/protobuf/message.proto b/src/machinetalk/protobuf/message.proto index f5207d746e..fed2552a8e 100644 --- a/src/machinetalk/protobuf/message.proto +++ b/src/machinetalk/protobuf/message.proto @@ -1,3 +1,4 @@ +syntax = "proto2"; // use a self-describing format as suggested in protobuf docs // and on the mailing list diff --git a/src/machinetalk/protobuf/motcmds.proto b/src/machinetalk/protobuf/motcmds.proto index 9a2407dbee..76e7b92dd0 100644 --- a/src/machinetalk/protobuf/motcmds.proto +++ b/src/machinetalk/protobuf/motcmds.proto @@ -1,3 +1,4 @@ +syntax = "proto2"; package machinetalk; // see README.msgid diff --git a/src/machinetalk/protobuf/object.proto b/src/machinetalk/protobuf/object.proto index c68e58946d..f9940ee526 100644 --- a/src/machinetalk/protobuf/object.proto +++ b/src/machinetalk/protobuf/object.proto @@ -1,3 +1,4 @@ +syntax = "proto2"; // everything we know about objects, including HAL objects // see README.msgid @@ -137,6 +138,8 @@ message Function { optional fixed32 runtime = 5; optional fixed32 maxtime = 6; optional bool reentrant = 7; + optional HalFunctType type = 8; + optional bool maxtime_increased = 9; } message Thread { @@ -174,6 +177,7 @@ message Component { repeated Pin pin = 16; repeated Param param = 17; + repeated Function funct = 19; // do not create the component on MT_HALRCOMP_BIND if the component does not exist optional bool no_create = 18; @@ -192,10 +196,16 @@ message Ring { optional bool rtapi_shm = 7; optional sfixed32 reader = 8; optional sfixed32 writer = 9; - optional sfixed32 size = 10; + optional sfixed32 total_size = 10; optional sfixed32 scratchpad = 11; + optional sfixed32 ring_shmkey = 12; + optional fixed32 encodings = 13; + // optional socketType haltalk_zeromq_stype = 14; + // optional bool haltalk_adopt = 15; + // optional bool haltalk_announce = 16; + // optional bool haltalk_writes = 17; + // optional fixed32 paired_handle = 18; } - message Member { option (nanopb_msgopt).msgid = 711; @@ -249,13 +259,13 @@ message Vtable { option (nanopb_msgopt).msgid = 714; optional string name = 1; // [(nanopb).max_size = 41]; - optional fixed32 context = 2; - optional sfixed32 comp_id = 4; - optional sfixed32 instance_id = 5; - optional fixed32 handle = 6; - optional sfixed32 refcount = 7; - optional sfixed32 version = 8; - optional fixed64 vtable = 9; + optional fixed32 handle = 2; + optional sfixed32 owner_id = 3; + + optional fixed32 context = 5; + optional sfixed32 refcount = 6; + optional sfixed32 version = 7; + optional fixed64 vtable = 8; } message Inst { @@ -267,5 +277,9 @@ message Inst { optional fixed32 inst_id = 3; optional fixed32 inst_size = 4; optional fixed64 vtable = 5; + + repeated Pin pin = 16; + repeated Param param = 17; + repeated Function funct = 19; } diff --git a/src/machinetalk/protobuf/preview.proto b/src/machinetalk/protobuf/preview.proto index 1cc17049e7..3be3e36165 100644 --- a/src/machinetalk/protobuf/preview.proto +++ b/src/machinetalk/protobuf/preview.proto @@ -1,3 +1,4 @@ +syntax = "proto2"; package machinetalk; // see README.msgid diff --git a/src/machinetalk/protobuf/ros.proto b/src/machinetalk/protobuf/ros.proto new file mode 100644 index 0000000000..63330f0934 --- /dev/null +++ b/src/machinetalk/protobuf/ros.proto @@ -0,0 +1,46 @@ +syntax = "proto2"; +package machinetalk; // this should probably better be ros or pb:ros; + +// see README.msgid +// msgid base: 370 + +import "machinetalk/protobuf/nanopb.proto"; + +// http://docs.ros.org/jade/api/std_msgs/html/msg/Header.html +message Time { + option (nanopb_msgopt).msgid = 371; + + optional uint32 secs = 1; + optional uint32 nsecs = 2; +}; + +message Header { + option (nanopb_msgopt).msgid = 372; + + optional uint32 seq = 1; + optional Time stamp = 2; + optional string frame_id = 3 [(nanopb).max_size = 20]; +} + +// http://docs.ros.org/indigo/api/trajectory_msgs/html/msg/JointTrajectoryPoint.html +message JointTrajectoryPoint { + option (nanopb_msgopt).msgid = 373; + + repeated double positions = 1 [(nanopb).max_count = 10]; + repeated double velocities = 2 [(nanopb).max_count = 10]; + repeated double accelerations = 3 [(nanopb).max_count = 10]; + repeated double effort = 4 [(nanopb).max_count = 10]; + optional double time_from_start = 5; + + optional double duration = 7; // of this segment, secs + optional uint32 serial = 8; // segment being worked on +}; + +// http://docs.ros.org/jade/api/trajectory_msgs/html/msg/JointTrajectory.html +message JointTrajectory { + option (nanopb_msgopt).msgid = 374; + + optional Header header = 1; + repeated string joint_names = 2; + repeated JointTrajectoryPoint points = 3; +}; diff --git a/src/machinetalk/protobuf/rtapi_message.proto b/src/machinetalk/protobuf/rtapi_message.proto index 9bebdfc58b..fc80d45d9e 100644 --- a/src/machinetalk/protobuf/rtapi_message.proto +++ b/src/machinetalk/protobuf/rtapi_message.proto @@ -1,3 +1,4 @@ +syntax = "proto2"; import "machinetalk/protobuf/nanopb.proto"; import "machinetalk/protobuf/value.proto"; @@ -14,7 +15,7 @@ message RTAPI_Message { required int32 msglevel = 10; // [default = RTAPI_MSG_DBG]; required string format = 20 [default = "*** uninitialized ***", - (nanopb).max_size = 100]; + (nanopb).max_size = 100]; // if this list of scalars is non-empty, // this implies sprintf(text, ) should be applied diff --git a/src/machinetalk/protobuf/rtapicommand.proto b/src/machinetalk/protobuf/rtapicommand.proto index 67399048ea..0579766792 100644 --- a/src/machinetalk/protobuf/rtapicommand.proto +++ b/src/machinetalk/protobuf/rtapicommand.proto @@ -1,3 +1,4 @@ +syntax = "proto2"; import "machinetalk/protobuf/nanopb.proto"; // see README.msgid // msgid base: 900 diff --git a/src/machinetalk/protobuf/status.proto b/src/machinetalk/protobuf/status.proto index f8dcf9c742..fc7bf6adf3 100644 --- a/src/machinetalk/protobuf/status.proto +++ b/src/machinetalk/protobuf/status.proto @@ -1,3 +1,4 @@ +syntax = "proto2"; import "machinetalk/protobuf/nanopb.proto"; import "machinetalk/protobuf/types.proto"; import "machinetalk/protobuf/preview.proto"; @@ -398,6 +399,7 @@ message EmcStatusMotion { optional RCS_STATUS state = 47; /// Current command execution status. optional double max_velocity = 48; /// Maximum velocity override. optional double max_acceleration = 49; /// TODO remove + optional double rapidrate = 50; /// Current rapid override. } /** diff --git a/src/machinetalk/protobuf/task.proto b/src/machinetalk/protobuf/task.proto index dc177b0f20..87d30e9fd3 100644 --- a/src/machinetalk/protobuf/task.proto +++ b/src/machinetalk/protobuf/task.proto @@ -1,3 +1,4 @@ +syntax = "proto2"; // interpreter protocol messages diff --git a/src/machinetalk/protobuf/test.proto b/src/machinetalk/protobuf/test.proto index 0e7d774ff0..803212848b 100644 --- a/src/machinetalk/protobuf/test.proto +++ b/src/machinetalk/protobuf/test.proto @@ -1,3 +1,4 @@ +syntax = "proto2"; // use any of the below for testing and experimentation. import "machinetalk/protobuf/emcclass.proto"; diff --git a/src/machinetalk/protobuf/types.proto b/src/machinetalk/protobuf/types.proto index f62aa8f7d9..ed1202cd86 100644 --- a/src/machinetalk/protobuf/types.proto +++ b/src/machinetalk/protobuf/types.proto @@ -1,3 +1,4 @@ +syntax = "proto2"; // fundamental types import "machinetalk/protobuf/nanopb.proto"; @@ -12,8 +13,11 @@ enum ValueType { HAL_FLOAT = 2; HAL_S32 = 3; HAL_U32 = 4; - STRING = 5; - BYTES = 6; + HAL_S64 = 5; + HAL_U64 = 6; + // STRING and BYTES not currently used + STRING = 7; + BYTES = 8; INT32 = 20; UINT32 = 30; @@ -41,45 +45,80 @@ enum HalParamDirection { HAL_RW = 192; } +enum HalFunctType { + FS_LEGACY_THREADFUNC = 0; // legacy API + FS_XTHREADFUNC = 1; // extended API + FS_USERLAND = 2; // userland-callable, with argc/arv vector +} + enum ObjectType { - // option allow_alias = true; // for src/hal.h enum - // doesnt work with ptotoc-c - // NB: leading underscore to disambiguate + // the following tags correspond to hal.h:hal_object_type + HAL_OBJECT_INVALID = 0; HAL_PIN = 1; HAL_SIGNAL = 2; HAL_PARAM = 3; HAL_THREAD = 4; HAL_FUNCT = 5; - HAL_ALIAS = 6; - HAL_COMP_RT = 7; - HAL_COMP_USER = 8; - HAL_COMP_REMOTE = 9; - HAL_RING = 10; - HAL_GROUP = 11; - - HAL_MEMBER_SIGNAL = 12; - HAL_MEMBER_GROUP = 13; - HAL_MEMBER_PIN = 14; - HAL_MEMBER_PARAM = 15; + HAL_COMPONENT = 6; + HAL_VTABLE = 7; + HAL_INST = 8; + HAL_RING = 9; + HAL_GROUP = 10; + HAL_MEMBER = 11; + HAL_PLUG = 12; - RING_RECORD = 16; - RING_STREAM = 17; + // used at all? + // VALUE = 120; + // INSTANCE = 121; + // ORIGINATOR = 122; + // NAMED_VALUE = 125; + // OT_ERROR = 130; +} +enum msgidType { + // all "option (nanopb_msgopt).msgid = MUST be less than MSGID_MAX + MSGID_MAX = 4000; - HAL_VTABLE = 18; - HAL_INST = 19; + // the empty zeromq frame which delimits route from payload + MSGID_ROUTE_DELIMITER = 4001; - RING_MULTIFRAME = 20; + // inband error message - use if a comp needs to signal an error with zeroMQ framing etc + MSGID_ERROR_MSG = 4002; - // used at all? - VALUE = 120; - INSTANCE = 121; - ORIGINATOR = 122; - NAMED_VALUE = 125; + // an uninterpreted blob: + MSGID_BLOB = 4003; + // an uninterpreted string: + MSGID_STRING = 4004; - OT_ERROR = 130; + // when using multiframe rings with zeromq router/dealer, routing elements are + // tagged MSGID_HOP + MSGID_HOP = 4005; } +enum socketType { + ST_ZMQ_PAIR = 0; + ST_ZMQ_PUB = 1; + ST_ZMQ_SUB = 2; + ST_ZMQ_REQ = 3; + ST_ZMQ_REP = 4; + ST_ZMQ_DEALER = 5; + ST_ZMQ_ROUTER = 6; + ST_ZMQ_PULL = 7; + ST_ZMQ_PUSH = 8; + ST_ZMQ_XPUB = 9; + ST_ZMQ_XSUB = 10; + ST_ZMQ_STREAM = 11; + + ST_ZMQ_INVALID = 15; +}; + +enum securityMechanism { + SM_ZMQ_NONE = -1; + SM_ZMQ_NULL = 0; + SM_ZMQ_PLAIN = 1; + SM_ZMQ_CURVE = 2; +}; + enum RCS_STATUS { UNINITIALIZED_STATUS = -1; RCS_DONE = 1; @@ -553,6 +592,7 @@ enum ContainerType { MT_EMC_TRAJ_SET_SO_ENABLE = 10235; MT_EMC_TRAJ_SET_FH_ENABLE = 10236; MT_EMC_TRAJ_RIGID_TAP = 10237; + MT_EMC_TRAJ_SET_RAPID_SCALE = 10238; MT_EMC_TRAJ_STAT = 10299; MT_EMC_MOTION_INIT = 10301; MT_EMC_MOTION_HALT = 10302; diff --git a/src/machinetalk/protobuf/value.proto b/src/machinetalk/protobuf/value.proto index e9031ee1c0..6f8f6642f0 100644 --- a/src/machinetalk/protobuf/value.proto +++ b/src/machinetalk/protobuf/value.proto @@ -1,3 +1,4 @@ +syntax = "proto2"; import "machinetalk/protobuf/nanopb.proto"; import "machinetalk/protobuf/emcclass.proto"; From e81486ab977f669254463e27237ce083a44c8c46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Fri, 30 Jun 2017 14:01:31 +0200 Subject: [PATCH 067/516] update jplan and interpolate for machinetalk-protobuf upstream --- src/hal/interpolator/interpolate.c | 4 ++-- src/hal/jplanner/jplan.c | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/hal/interpolator/interpolate.c b/src/hal/interpolator/interpolate.c index 40f05f2c95..a9654eb9f9 100644 --- a/src/hal/interpolator/interpolate.c +++ b/src/hal/interpolator/interpolate.c @@ -119,8 +119,8 @@ static int update(void *arg, const hal_funct_args_t *fa) // protobuf-decode it pb_istream_t stream = pb_istream_from_buffer(data, size); - pb_JointTrajectoryPoint rx = pb_JointTrajectoryPoint_init_zero; - if (!pb_decode(&stream, pb_JointTrajectoryPoint_fields, &rx)) { + machinetalk_JointTrajectoryPoint rx = machinetalk_JointTrajectoryPoint_init_zero; + if (!pb_decode(&stream, machinetalk_JointTrajectoryPoint_fields, &rx)) { rtapi_print_msg(RTAPI_MSG_ERR, "%s: pb_decode(JointTrajectoryPoint) failed: '%s'", compname, PB_GET_ERROR(&stream)); } else { diff --git a/src/hal/jplanner/jplan.c b/src/hal/jplanner/jplan.c index c08eece9a6..30f0685855 100644 --- a/src/hal/jplanner/jplan.c +++ b/src/hal/jplanner/jplan.c @@ -131,15 +131,15 @@ static int update(void *arg, const hal_funct_args_t *fa) // protobuf-decode it pb_istream_t stream = pb_istream_from_buffer(data, size); - pb_JplanCommand rx = pb_JplanCommand_init_zero; - if (!pb_decode(&stream, pb_JplanCommand_fields, &rx)) { + machinetalk_JplanCommand rx = machinetalk_JplanCommand_init_zero; + if (!pb_decode(&stream, machinetalk_JplanCommand_fields, &rx)) { rtapi_print_msg(RTAPI_MSG_ERR, "%s: pb_decode(JplanCommand) failed: '%s'", compname, PB_GET_ERROR(&stream)); } else { // decode ok - apply all set fields to driving pins for (i = 0; i < rx.joint_count; i++) { struct joint *jp = &ip->joints[i]; - pb_JplanJoint *jc = &rx.joint[i]; + machinetalk_JplanJoint *jc = &rx.joint[i]; if (jc->has_enable) *(jp->enable) = jc->enable; if (jc->has_pos_cmd) *(jp->pos_cmd) = jc->pos_cmd; if (jc->has_max_vel) *(jp->max_vel) = jc->max_vel; From 18d3df2daa96b12308960d5f0c6ee980941480bf Mon Sep 17 00:00:00 2001 From: Mick Date: Sun, 2 Jul 2017 16:15:06 +0100 Subject: [PATCH 068/516] Fix armhf builds so that required elements exist for comp OOT builds. Out Of Tree builds have been broken for a long time on armhf packages. Issue #1060 and others refer The bottom of the problem is that the package machinekit-dev is built with just posix flavour enabled, so as to avoid time constraints on builds which otherwise would cause failure. An unrealised consequence of this is that the file Makefile.inc, which is pulled in by comp and instcomp, has flavours just set to posix and the produced component targets posix, even if produced on a rt-preempt or xenomai kernel. machinekit-dev is largely an anachronism from linuxcnc days, when in an effort to make the install as light as possible, all dev stuff was in a seperate package. This commit moves the -dev package files into the machinekit- package. This ensures that the Makefile.inc contains settings which match the targeted flavour. Currently Debian Stretch will only build Machinekit, with local library versions of czmq and zeromq, due to backward incompatibility of the new versions. This has a knock on in package building on Stretch, which fail dh_shlibdeps tests unless a switch to ignore missing info is added. Should be able to be removed once ported to new libs or our own ones produced. Signed-off-by: Mick --- .travis/upload_packagecloud.sh | 2 +- debian/control.in | 32 +++++++++++-------- debian/machinekit-posix.install | 3 -- ...install.in => machinekit-posix.install.in} | 5 ++- debian/machinekit-rt-preempt.install | 3 -- debian/machinekit-rt-preempt.install.in | 11 +++++++ debian/machinekit-xenomai.install | 3 -- debian/machinekit-xenomai.install.in | 10 ++++++ debian/rules.in | 28 ++++++++++------ 9 files changed, 62 insertions(+), 35 deletions(-) delete mode 100644 debian/machinekit-posix.install rename debian/{machinekit-dev.install.in => machinekit-posix.install.in} (61%) delete mode 100644 debian/machinekit-rt-preempt.install create mode 100644 debian/machinekit-rt-preempt.install.in delete mode 100644 debian/machinekit-xenomai.install create mode 100644 debian/machinekit-xenomai.install.in diff --git a/.travis/upload_packagecloud.sh b/.travis/upload_packagecloud.sh index d8da79efaf..42f1c3a78f 100755 --- a/.travis/upload_packagecloud.sh +++ b/.travis/upload_packagecloud.sh @@ -25,7 +25,7 @@ if [ "${TRAVIS_TEST_RESULT}" -eq 0 ] && [ "${TRAVIS_PULL_REQUEST}" = "false" ] \ # have already been uploaded if [ "${FLAV}" == "rt_preempt" ] || [ "${FLAV}" == "xenomai" ]; then rm -f ${TRAVIS_BUILD_DIR}/deploy/machinekit_* - rm -f ${TRAVIS_BUILD_DIR}/deploy/machinekit-dev* +# rm -f ${TRAVIS_BUILD_DIR}/deploy/machinekit-dev* ## no more machinekit-dev packages fi package_cloud push ${repo} ${TRAVIS_BUILD_DIR}/deploy/*deb diff --git a/debian/control.in b/debian/control.in index abb4035967..56d6ec6785 100644 --- a/debian/control.in +++ b/debian/control.in @@ -20,20 +20,24 @@ Build-Depends: debhelper (>= 6), python-pyftpdlib, @BUILD_DEPS@ @TCL_TK_BUILD_DEPS@ Standards-Version: 2.1.0 -Package: machinekit-dev -Architecture: any -Depends: make, g++, @TCL_TK_BUILD_DEPS@, - ${shlibs:Depends}, ${misc:Depends}, - machinekit (= ${binary:Version}), - yapps2-runtime -Section: libs -Description: PC based motion controller for real-time Linux - Machinekit is the next-generation Enhanced Machine Controller which - provides motion control for CNC machine tools and robotic - applications (milling, cutting, routing, etc.). - . - This package includes files needed to build new realtime components and - alternate front-ends for machinekit +######################################################################### +## not built any more, components of it are in flavour packages +## +#Package: machinekit-dev +#Architecture: any +#Depends: make, g++, @TCL_TK_BUILD_DEPS@, +# ${shlibs:Depends}, ${misc:Depends}, +# machinekit (= ${binary:Version}), +# yapps2-runtime +#Section: libs +#Description: PC based motion controller for real-time Linux +# Machinekit is the next-generation Enhanced Machine Controller which +# provides motion control for CNC machine tools and robotic +# applications (milling, cutting, routing, etc.). +# . +# This package includes files needed to build new realtime components and +# alternate front-ends for machinekit +######################################################################### Package: machinekit Breaks: linuxcnc diff --git a/debian/machinekit-posix.install b/debian/machinekit-posix.install deleted file mode 100644 index 3ebffcd7b1..0000000000 --- a/debian/machinekit-posix.install +++ /dev/null @@ -1,3 +0,0 @@ -usr/lib/linuxcnc/posix/*.so -usr/lib/linuxcnc/ulapi-posix.so -usr/libexec/linuxcnc/rtapi_app_posix diff --git a/debian/machinekit-dev.install.in b/debian/machinekit-posix.install.in similarity index 61% rename from debian/machinekit-dev.install.in rename to debian/machinekit-posix.install.in index 65cf441142..ec94d9aa2c 100644 --- a/debian/machinekit-dev.install.in +++ b/debian/machinekit-posix.install.in @@ -1,8 +1,11 @@ +usr/lib/linuxcnc/posix/*.so +usr/lib/linuxcnc/ulapi-posix.so +usr/libexec/linuxcnc/rtapi_app_posix usr/include/linuxcnc/*.hh usr/include/linuxcnc/*.h -usr/include/linuxcnc/userpci/*.h usr/lib/*.a usr/lib/*.so usr/bin/comp usr/share/linuxcnc/Makefile.modinc usr/share/linuxcnc/Makefile.inc + diff --git a/debian/machinekit-rt-preempt.install b/debian/machinekit-rt-preempt.install deleted file mode 100644 index 4dd6deded2..0000000000 --- a/debian/machinekit-rt-preempt.install +++ /dev/null @@ -1,3 +0,0 @@ -usr/lib/linuxcnc/rt-preempt/*.so -usr/lib/linuxcnc/ulapi-rt-preempt.so -usr/libexec/linuxcnc/rtapi_app_rt-preempt diff --git a/debian/machinekit-rt-preempt.install.in b/debian/machinekit-rt-preempt.install.in new file mode 100644 index 0000000000..fe98d04c53 --- /dev/null +++ b/debian/machinekit-rt-preempt.install.in @@ -0,0 +1,11 @@ +usr/lib/linuxcnc/rt-preempt/*.so +usr/lib/linuxcnc/ulapi-rt-preempt.so +usr/libexec/linuxcnc/rtapi_app_rt-preempt +usr/include/linuxcnc/*.hh +usr/include/linuxcnc/*.h +usr/lib/*.a +usr/lib/*.so +usr/bin/comp +usr/share/linuxcnc/Makefile.modinc +usr/share/linuxcnc/Makefile.inc + diff --git a/debian/machinekit-xenomai.install b/debian/machinekit-xenomai.install deleted file mode 100644 index 9f7757ac80..0000000000 --- a/debian/machinekit-xenomai.install +++ /dev/null @@ -1,3 +0,0 @@ -usr/lib/linuxcnc/xenomai/* -usr/lib/linuxcnc/ulapi-xenomai.so -usr/libexec/linuxcnc/rtapi_app_xenomai diff --git a/debian/machinekit-xenomai.install.in b/debian/machinekit-xenomai.install.in new file mode 100644 index 0000000000..fd029e8185 --- /dev/null +++ b/debian/machinekit-xenomai.install.in @@ -0,0 +1,10 @@ +usr/lib/linuxcnc/xenomai/* +usr/lib/linuxcnc/ulapi-xenomai.so +usr/libexec/linuxcnc/rtapi_app_xenomai +usr/include/linuxcnc/*.hh +usr/include/linuxcnc/*.h +usr/lib/*.a +usr/lib/*.so +usr/bin/comp +usr/share/linuxcnc/Makefile.modinc +usr/share/linuxcnc/Makefile.inc diff --git a/debian/rules.in b/debian/rules.in index c0cfc96522..f0ab88e2ab 100755 --- a/debian/rules.in +++ b/debian/rules.in @@ -134,8 +134,6 @@ ifneq ($(wildcard src/configure src/Makefile.inc),) share/applications/linuxcnc.desktop \ share/desktop-directories/cnc.directory \ share/menus/CNC.menu \ - src/Makefile.inc \ - src/Makefile.modinc \ src/aclocal.m4 \ src/config.h \ src/config.h.in \ @@ -145,6 +143,10 @@ ifneq ($(wildcard src/configure src/Makefile.inc),) src/machinekitcfg.py-tmp \ tcl/linuxcnc.tcl rm -rf src/autom4te.cache etc +## src/Makefile.inc \ +## src/Makefile.modinc \ + + endif # # Remove package artifacts @@ -182,11 +184,14 @@ endif cp src/rtapi/shmdrv/limits.d-machinekit.conf \ debian/tmp/etc/security/limits.d/machinekit.conf + cp debian/machinekit-posix.install.in debian/machinekit-posix.install + cp debian/machinekit-rt-preempt.install.in debian/machinekit-rt-preempt.install + cp debian/machinekit-xenomai.install.in debian/machinekit-xenomai.install + if (grep ^USERMODE_PCI=yes src/Makefile.inc -q); then \ - cp debian/machinekit-dev.install.in debian/machinekit-dev.install; \ - else \ - grep -v userpci debian/machinekit-dev.install.in \ - > debian/machinekit-dev.install; \ + echo "usr/include/linuxcnc/userpci/*.h" >> debian/machinekit-posix.install; \ + echo "usr/include/linuxcnc/userpci/*.h" >> debian/machinekit-rt-preempt.install; \ + echo "usr/include/linuxcnc/userpci/*.h" >> debian/machinekit-xenomai.install; \ fi dh_install --sourcedir=debian/tmp --fail-missing -Xusr/bin/pasm @@ -213,13 +218,16 @@ binary-arch: build install dh_installdeb # # delete files that should be in machinekit-dev package - rm -f debian/machinekit/usr/bin/comp - rm -f debian/machinekit/usr/share/linuxcnc/Makefile.modinc - rm -f debian/machinekit/usr/share/linuxcnc/Makefile.inc +# rm -f debian/machinekit/usr/bin/comp +# rm -f debian/machinekit/usr/share/linuxcnc/Makefile.modinc +# rm -f debian/machinekit/usr/share/linuxcnc/Makefile.inc cat debian/machinekit/DEBIAN/shlibs debian/shlibs.pre > \ debian/shlibs.local - dh_shlibdeps -l debian/machinekit/usr/lib + ## ignore missing deps / symbols info for locally built libs + ## necessary for Stretch builds until packaged libs can be used for czmq and zeromq + dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info -l debian/machinekit/usr/lib + #dh_shlibdeps -l debian/machinekit/usr/lib dh_gencontrol dh_md5sums dh_builddeb From c5e793a975cb4685e1adca85f16f8bd78784b7b1 Mon Sep 17 00:00:00 2001 From: Mick Date: Thu, 6 Jul 2017 09:07:29 +0100 Subject: [PATCH 069/516] Fix configure.ac build environment variable `ARCH_CFLAGS` This var was introduced to allow for architecture specific switches required for some arm boards. However there was no AC_SUBST() macro exporting the var and recent tests where I used the var to pass args for cross-building, showed that it was not being substituted in Makefile.inc.in, so having no effect. AC_SUBST(ARCH_CFLAGS) inserted and fixes. Signed-off-by: Mick --- src/configure.ac | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/configure.ac b/src/configure.ac index 4f86040418..c1e4a7e755 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -699,6 +699,8 @@ AC_ARG_WITH(platform-zedboard, esac ]) +AC_SUBST(ARCH_CFLAGS) + if $platform_specified; then # Platform was explicitly specified using --with-platform-*; # disable anything not explicitly specified From c3f0dabba788ee8c8000d5baa4bfe052d75c7c0d Mon Sep 17 00:00:00 2001 From: Mick Date: Sun, 9 Jul 2017 15:05:30 +0100 Subject: [PATCH 070/516] Add rapid override pins to halui Ommitted from machinekoder PR #1091 and not noticed until now Signed-off-by: Mick --- src/emc/usr_intf/halui.cc | 66 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/src/emc/usr_intf/halui.cc b/src/emc/usr_intf/halui.cc index 6c8e9b91dc..e8ea4ea3c7 100644 --- a/src/emc/usr_intf/halui.cc +++ b/src/emc/usr_intf/halui.cc @@ -325,6 +325,14 @@ DONE: - spindle-override FIELD(hal_float_t,mv_value) /* current Max Velocity value */ \ FIELD(hal_bit_t,mv_increase) /* pin for increasing the MV (+=scale) */ \ FIELD(hal_bit_t,mv_decrease) /* pin for decreasing the MV (-=scale) */ \ +\ + FIELD(hal_s32_t,ro_counts) /* pin for the Feed Override counting */ \ + FIELD(hal_bit_t,ro_count_enable) /* pin for the Feed Override counting enable */ \ + FIELD(hal_bit_t,ro_direct_value) /* pin for enabling direct value option instead of counts */ \ + FIELD(hal_float_t,ro_scale) /* scale for the Feed Override counting */ \ + FIELD(hal_float_t,ro_value) /* current Feed Override value */ \ + FIELD(hal_bit_t,ro_increase) /* pin ror increasing the FO (+=scale) */ \ + FIELD(hal_bit_t,ro_decrease) /* pin for decreasing the FO (-=scale) */ \ \ FIELD(hal_s32_t,fo_counts) /* pin for the Feed Override counting */ \ FIELD(hal_bit_t,fo_count_enable) /* pin for the Feed Override counting enable */ \ @@ -801,6 +809,8 @@ int halui_hal_init(void) if (retval < 0) return retval; retval = hal_pin_float_newf(HAL_OUT, &(halui_data->fo_value), comp_id, "halui.feed-override.value"); if (retval < 0) return retval; + retval = hal_pin_float_newf(HAL_OUT, &(halui_data->ro_value), comp_id, "halui.rapid-override.value"); + if (retval < 0) return retval; retval = hal_pin_u32_newf(HAL_OUT, &(halui_data->joint_selected), comp_id, "halui.joint.selected"); if (retval < 0) return retval; retval = hal_pin_u32_newf(HAL_OUT, &(halui_data->tool_number), comp_id, "halui.tool.number"); @@ -926,6 +936,22 @@ int halui_hal_init(void) retval = halui_export_pin_IN_bit(&(halui_data->fo_decrease), "halui.feed-override.decrease"); if (retval < 0) return retval; + retval = halui_export_pin_IN_s32(&(halui_data->ro_counts), "halui.rapid-override.counts"); + if (retval < 0) return retval; + *halui_data->ro_counts = 0; + retval = halui_export_pin_IN_bit(&(halui_data->ro_count_enable), "halui.rapid-override.count-enable"); + if (retval < 0) return retval; + *halui_data->ro_count_enable = 1; + retval = halui_export_pin_IN_bit(&(halui_data->ro_direct_value), "halui.rapid-override.direct-value"); + if (retval < 0) return retval; + *halui_data->ro_direct_value = 0; + retval = halui_export_pin_IN_float(&(halui_data->ro_scale), "halui.rapid-override.scale"); + if (retval < 0) return retval; + retval = halui_export_pin_IN_bit(&(halui_data->ro_increase), "halui.rapid-override.increase"); + if (retval < 0) return retval; + retval = halui_export_pin_IN_bit(&(halui_data->ro_decrease), "halui.rapid-override.decrease"); + if (retval < 0) return retval; + retval = halui_export_pin_IN_s32(&(halui_data->so_counts), "halui.spindle-override.counts"); if (retval < 0) return retval; *halui_data->so_counts = 0; @@ -1488,6 +1514,24 @@ static int sendFeedOverride(double override) return emcCommandWaitReceived(emcCommandSerialNumber); } +static int sendRapidOverride(double override) +{ + EMC_TRAJ_SET_RAPID_SCALE emc_traj_set_scale_msg; + + if (override < 0.0) { + override = 0.0; + } + + if (override > 1.0) { + override = 1.0; + } + + emc_traj_set_scale_msg.serial_number = ++emcCommandSerialNumber; + emc_traj_set_scale_msg.scale = override; + emcCommandBuffer->write(emc_traj_set_scale_msg); + return emcCommandWaitReceived(emcCommandSerialNumber); +} + static int sendMaxVelocity(double velocity) { EMC_TRAJ_SET_MAX_VELOCITY mv; @@ -1655,6 +1699,7 @@ static void hal_init_pins() *(halui_data->joint_selected) = 0; // select joint 0 by default *(halui_data->fo_scale) = old_halui_data.fo_scale = 0.1; //sane default + *(halui_data->ro_scale) = old_halui_data.ro_scale = 0.1; //sane default *(halui_data->so_scale) = old_halui_data.so_scale = 0.1; //sane default } @@ -1794,6 +1839,20 @@ static void check_hal_changes() old_halui_data.fo_counts = counts; } + //rapid-override stuff + counts = new_halui_data.ro_counts; + if (counts != old_halui_data.ro_counts) { + if (new_halui_data.ro_count_enable) { + if (new_halui_data.ro_direct_value) { + sendRapidOverride(counts * new_halui_data.ro_scale); + } else { + sendRapidOverride( new_halui_data.ro_value + (counts - old_halui_data.ro_counts) * + new_halui_data.ro_scale); + } + } + old_halui_data.ro_counts = counts; + } + //spindle-override stuff counts = new_halui_data.so_counts; if (counts != old_halui_data.so_counts) { @@ -1817,6 +1876,12 @@ static void check_hal_changes() sendFeedOverride(new_halui_data.fo_value + new_halui_data.fo_scale); if (check_bit_changed(new_halui_data.fo_decrease, old_halui_data.fo_decrease) != 0) sendFeedOverride(new_halui_data.fo_value - new_halui_data.fo_scale); + + if (check_bit_changed(new_halui_data.ro_increase, old_halui_data.ro_increase) != 0) + sendRapidOverride(new_halui_data.ro_value + new_halui_data.ro_scale); + if (check_bit_changed(new_halui_data.ro_decrease, old_halui_data.ro_decrease) != 0) + sendRapidOverride(new_halui_data.ro_value - new_halui_data.ro_scale); + if (check_bit_changed(new_halui_data.so_increase, old_halui_data.so_increase) != 0) sendSpindleOverride(new_halui_data.so_value + new_halui_data.so_scale); @@ -2067,6 +2132,7 @@ static void modify_hal_pins() *(halui_data->mv_value) = emcStatus->motion.traj.maxVelocity; *(halui_data->fo_value) = emcStatus->motion.traj.scale; //feedoverride from 0 to 1 for 100% + *(halui_data->ro_value) = emcStatus->motion.traj.rapid_scale; //rapid override from 0 to 1 for 100% *(halui_data->so_value) = emcStatus->motion.traj.spindle_scale; //spindle-speed-override from 0 to 1 for 100% *(halui_data->mist_is_on) = emcStatus->io.coolant.mist; From d6a95eec154b08a061a8d29fbbe89185a9aea07d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Mon, 10 Jul 2017 09:45:27 +0200 Subject: [PATCH 071/516] hal: fix race conditions with loadusr --- src/hal/cython/machinekit/hal_loadusr.pyx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hal/cython/machinekit/hal_loadusr.pyx b/src/hal/cython/machinekit/hal_loadusr.pyx index c7ebc3b1f8..1422c9a086 100644 --- a/src/hal/cython/machinekit/hal_loadusr.pyx +++ b/src/hal/cython/machinekit/hal_loadusr.pyx @@ -37,7 +37,7 @@ def loadusr(command, wait=False, wait_name=None, wait_timeout=5.0, shell=False, if ret is not None: raise RuntimeError(command + ' exited with return code ' + str(ret)) # check if component exists - if (wait_name is not None) and (wait_name in components): + if (wait_name is not None) and (wait_name in components) and (components[wait_name].state == COMP_READY): return components[wait_name] # check for timeout if timeout >= wait_timeout: From 039dc8670a4870c3668900a52b4b6f338c8b8924 Mon Sep 17 00:00:00 2001 From: Mick Date: Thu, 13 Jul 2017 14:29:52 +0100 Subject: [PATCH 072/516] Fix Makefile.inc Makefile.modinc and comp overflow into Machinekit package Reverse testing commenting out to ensure files are deleted before creation of main machinekit package. Add `Breaks: machinekit-dev` property to all machinekit-{flavour} packages, to prompt upgraders to remove that old package, which conflicts. Signed-off-by: Mick --- debian/control.posix.in | 1 + debian/control.rt-preempt.in | 1 + debian/control.xenomai.in | 1 + debian/rules.in | 13 ++++++------- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/debian/control.posix.in b/debian/control.posix.in index 17f5fe6384..9994c0b286 100644 --- a/debian/control.posix.in +++ b/debian/control.posix.in @@ -3,6 +3,7 @@ Package: machinekit-posix Architecture: any Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, Provides: machinekit-rt-threads +Breaks: machinekit-dev Enhances: machinekit Description: PC based motion controller for real-time Linux Machinekit is the next-generation Enhanced Machine Controller which diff --git a/debian/control.rt-preempt.in b/debian/control.rt-preempt.in index 631fa46b1f..0b527562f6 100644 --- a/debian/control.rt-preempt.in +++ b/debian/control.rt-preempt.in @@ -8,6 +8,7 @@ Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, linux-image-4.1.19-rt22mah [i386], linux-image-4.1.19-rt22mah [amd64] Provides: machinekit-rt-threads Suggests: hostmot2-firmware-all [!armhf] +Breaks: machinekit-dev Enhances: machinekit Description: PC based motion controller for real-time Linux Machinekit is the next-generation Enhanced Machine Controller which diff --git a/debian/control.xenomai.in b/debian/control.xenomai.in index 89ac35574f..1df3dbecdb 100644 --- a/debian/control.xenomai.in +++ b/debian/control.xenomai.in @@ -5,6 +5,7 @@ Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, xenomai-runtime Provides: machinekit-rt-threads Recommends: hostmot2-firmware-all [!armhf] +Breaks: machinekit-dev Enhances: machinekit Description: PC based motion controller for real-time Linux Machinekit is the next-generation Enhanced Machine Controller which diff --git a/debian/rules.in b/debian/rules.in index f0ab88e2ab..67996788ad 100755 --- a/debian/rules.in +++ b/debian/rules.in @@ -141,11 +141,10 @@ ifneq ($(wildcard src/configure src/Makefile.inc),) src/config.status \ src/configure \ src/machinekitcfg.py-tmp \ + src/Makefile.inc \ + src/Makefile.modinc \ tcl/linuxcnc.tcl rm -rf src/autom4te.cache etc -## src/Makefile.inc \ -## src/Makefile.modinc \ - endif @@ -217,10 +216,10 @@ binary-arch: build install dh_makeshlibs dh_installdeb -# # delete files that should be in machinekit-dev package -# rm -f debian/machinekit/usr/bin/comp -# rm -f debian/machinekit/usr/share/linuxcnc/Makefile.modinc -# rm -f debian/machinekit/usr/share/linuxcnc/Makefile.inc +# # delete files that should be in machinekit- package + rm -f debian/machinekit/usr/bin/comp + rm -f debian/machinekit/usr/share/linuxcnc/Makefile.modinc + rm -f debian/machinekit/usr/share/linuxcnc/Makefile.inc cat debian/machinekit/DEBIAN/shlibs debian/shlibs.pre > \ debian/shlibs.local From 7453fb4a86914ad5b9ebe568aa0756a626312606 Mon Sep 17 00:00:00 2001 From: Mick Date: Mon, 17 Jul 2017 16:16:55 +0100 Subject: [PATCH 073/516] Remove extra rsyslog conf file targetting non-existant machinekit.log This file crept in with the multicore merge and must have been an early re-branding change, which got corrected in the main repo, but remained in the experimental branch multicore was developed upon. No other file in the repo references machinekit.log or writes to it. Signed-off-by: Mick --- src/rtapi/rsyslogd-machinekit.conf | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 src/rtapi/rsyslogd-machinekit.conf diff --git a/src/rtapi/rsyslogd-machinekit.conf b/src/rtapi/rsyslogd-machinekit.conf deleted file mode 100644 index 48618cdb85..0000000000 --- a/src/rtapi/rsyslogd-machinekit.conf +++ /dev/null @@ -1,27 +0,0 @@ -# Author: Michael Haberler -# License: LGPL Version 2.1 or later -# Copyright (c) 2012-2013 All rights reserved. -# -# funnel all Machinekit-related messages to /var/log/machinekit.log -# if your system uses rsyslogd, install like so: -# -# $ sudo cp src/rtapi/rsyslogd-machinekit.conf /etc/rsyslog.d -# $ sudo service rsyslog restart -# -# now enjoy all messages coming through a single channel by: -# -# $ tail -f /var/log/machinekit.log - - -# RTAPI startup can create a large burst of log messages -# rsyslogd in default configuration has been observed to limit rates -# this log entry is telltale: -# -# rsyslogd-2177: imuxsock begins to drop messages from pid 28002 due to rate-limiting - -# so increase the rate limits of the imux socket: - -$SystemLogRateLimitInterval 2 -$SystemLogRateLimitBurst 5000 - -local1.* /var/log/machinekit.log From ccfca17572dfb54a89e725da5e30a72d16356081 Mon Sep 17 00:00:00 2001 From: Mick Date: Mon, 31 Jul 2017 09:01:08 +0100 Subject: [PATCH 074/516] Fix jog increment hot key in Axis Pressing 'I' triggers an error because a tuple is used as an argument to int() Solution is simply to specify index of [0] Can't see how this ever worked, maybe no-one used it. Signed-off-by: Mick --- src/emc/usr_intf/axis/scripts/axis.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/emc/usr_intf/axis/scripts/axis.py b/src/emc/usr_intf/axis/scripts/axis.py index 472f6657b2..e2fe18003b 100755 --- a/src/emc/usr_intf/axis/scripts/axis.py +++ b/src/emc/usr_intf/axis/scripts/axis.py @@ -1372,7 +1372,7 @@ def jogspeed_incremental(dir=1): if cursel == "": cursel = 0 else: - cursel = int(cursel) + cursel = int(cursel[0]) if dir == 1: if cursel > 0: # If it was "Continous" just before, then don't change last jog increment! From 617a2c61217f767b8024dc098b5099c6eb3e3a0a Mon Sep 17 00:00:00 2001 From: Robert Nelson Date: Mon, 31 Jul 2017 11:23:26 -0500 Subject: [PATCH 075/516] configs/ARM: BeagleBone: use generic iio sysfs path for adc Daren Schwenke tested with 3.8.x and 4.4.x https://groups.google.com/d/msg/machinekit/RrNLUo4ASP4/Ye6sNvyYBgAJ Signed-off-by: Robert Nelson CC: Daren Schwenke CC: Charles Steinkuehler --- configs/ARM/BeagleBone/BeBoPr++/Pepper/ReadTemp.py | 2 +- configs/ARM/BeagleBone/BeBoPr++/Pepper/setup.bridge.sh | 4 ++-- configs/ARM/BeagleBone/BeBoPr++/Pololu/ReadTemp.py | 2 +- configs/ARM/BeagleBone/BeBoPr++/Pololu/setup.bridge.sh | 4 ++-- configs/ARM/BeagleBone/BeBoPr++/ReadTemp.py | 2 +- configs/ARM/BeagleBone/BeBoPr++/setup.bridge.sh | 4 ++-- configs/ARM/BeagleBone/BeBoPr-Bridge/ReadTemp.py | 2 +- configs/ARM/BeagleBone/BeBoPr-Bridge/setup.bridge.sh | 4 ++-- configs/ARM/BeagleBone/BeBoPr/ReadTemp.py | 2 +- configs/ARM/BeagleBone/PocketNC/ReadTemp.py | 2 +- configs/ARM/BeagleBone/Replicape/hal_temp_bbb | 2 +- 11 files changed, 15 insertions(+), 15 deletions(-) diff --git a/configs/ARM/BeagleBone/BeBoPr++/Pepper/ReadTemp.py b/configs/ARM/BeagleBone/BeBoPr++/Pepper/ReadTemp.py index 2eda38ce66..f05fa18138 100755 --- a/configs/ARM/BeagleBone/BeBoPr++/Pepper/ReadTemp.py +++ b/configs/ARM/BeagleBone/BeBoPr++/Pepper/ReadTemp.py @@ -255,7 +255,7 @@ def r2t(n, R_T): if len(args.therm) != num_chan : raise UserWarning('Incorrect number of thermistors specified! Expected:' + args.num_chan) -syspath = '/sys/devices/ocp.*/44e0d000.tscadc/tiadc/iio:device0/' +syspath = '/sys/bus/iio/devices/iio:device0/' FileName = [] diff --git a/configs/ARM/BeagleBone/BeBoPr++/Pepper/setup.bridge.sh b/configs/ARM/BeagleBone/BeBoPr++/Pepper/setup.bridge.sh index 6240761427..3597d8a2bc 100755 --- a/configs/ARM/BeagleBone/BeBoPr++/Pepper/setup.bridge.sh +++ b/configs/ARM/BeagleBone/BeBoPr++/Pepper/setup.bridge.sh @@ -95,8 +95,8 @@ if [ -z "${ACTIVE}" ] ; then fi -if [ ! -r /sys/devices/ocp.*/44e0d000.tscadc/tiadc/iio:device0/in_voltage5_raw ] ; then - echo "Analog input files not found in /sys/devices/ocp.*/44e0d000.tscadc/tiadc/iio:device0/" >&2 +if [ ! -r /sys/bus/iio/devices/iio:device0/in_voltage5_raw ] ; then + echo "Analog input files not found in /sys/bus/iio/devices/iio:device0/" >&2 exit 1; fi diff --git a/configs/ARM/BeagleBone/BeBoPr++/Pololu/ReadTemp.py b/configs/ARM/BeagleBone/BeBoPr++/Pololu/ReadTemp.py index 2eda38ce66..f05fa18138 100755 --- a/configs/ARM/BeagleBone/BeBoPr++/Pololu/ReadTemp.py +++ b/configs/ARM/BeagleBone/BeBoPr++/Pololu/ReadTemp.py @@ -255,7 +255,7 @@ def r2t(n, R_T): if len(args.therm) != num_chan : raise UserWarning('Incorrect number of thermistors specified! Expected:' + args.num_chan) -syspath = '/sys/devices/ocp.*/44e0d000.tscadc/tiadc/iio:device0/' +syspath = '/sys/bus/iio/devices/iio:device0/' FileName = [] diff --git a/configs/ARM/BeagleBone/BeBoPr++/Pololu/setup.bridge.sh b/configs/ARM/BeagleBone/BeBoPr++/Pololu/setup.bridge.sh index 6240761427..3597d8a2bc 100755 --- a/configs/ARM/BeagleBone/BeBoPr++/Pololu/setup.bridge.sh +++ b/configs/ARM/BeagleBone/BeBoPr++/Pololu/setup.bridge.sh @@ -95,8 +95,8 @@ if [ -z "${ACTIVE}" ] ; then fi -if [ ! -r /sys/devices/ocp.*/44e0d000.tscadc/tiadc/iio:device0/in_voltage5_raw ] ; then - echo "Analog input files not found in /sys/devices/ocp.*/44e0d000.tscadc/tiadc/iio:device0/" >&2 +if [ ! -r /sys/bus/iio/devices/iio:device0/in_voltage5_raw ] ; then + echo "Analog input files not found in /sys/bus/iio/devices/iio:device0/" >&2 exit 1; fi diff --git a/configs/ARM/BeagleBone/BeBoPr++/ReadTemp.py b/configs/ARM/BeagleBone/BeBoPr++/ReadTemp.py index 2eda38ce66..f05fa18138 100755 --- a/configs/ARM/BeagleBone/BeBoPr++/ReadTemp.py +++ b/configs/ARM/BeagleBone/BeBoPr++/ReadTemp.py @@ -255,7 +255,7 @@ def r2t(n, R_T): if len(args.therm) != num_chan : raise UserWarning('Incorrect number of thermistors specified! Expected:' + args.num_chan) -syspath = '/sys/devices/ocp.*/44e0d000.tscadc/tiadc/iio:device0/' +syspath = '/sys/bus/iio/devices/iio:device0/' FileName = [] diff --git a/configs/ARM/BeagleBone/BeBoPr++/setup.bridge.sh b/configs/ARM/BeagleBone/BeBoPr++/setup.bridge.sh index 6240761427..3597d8a2bc 100755 --- a/configs/ARM/BeagleBone/BeBoPr++/setup.bridge.sh +++ b/configs/ARM/BeagleBone/BeBoPr++/setup.bridge.sh @@ -95,8 +95,8 @@ if [ -z "${ACTIVE}" ] ; then fi -if [ ! -r /sys/devices/ocp.*/44e0d000.tscadc/tiadc/iio:device0/in_voltage5_raw ] ; then - echo "Analog input files not found in /sys/devices/ocp.*/44e0d000.tscadc/tiadc/iio:device0/" >&2 +if [ ! -r /sys/bus/iio/devices/iio:device0/in_voltage5_raw ] ; then + echo "Analog input files not found in /sys/bus/iio/devices/iio:device0/" >&2 exit 1; fi diff --git a/configs/ARM/BeagleBone/BeBoPr-Bridge/ReadTemp.py b/configs/ARM/BeagleBone/BeBoPr-Bridge/ReadTemp.py index 2eda38ce66..f05fa18138 100755 --- a/configs/ARM/BeagleBone/BeBoPr-Bridge/ReadTemp.py +++ b/configs/ARM/BeagleBone/BeBoPr-Bridge/ReadTemp.py @@ -255,7 +255,7 @@ def r2t(n, R_T): if len(args.therm) != num_chan : raise UserWarning('Incorrect number of thermistors specified! Expected:' + args.num_chan) -syspath = '/sys/devices/ocp.*/44e0d000.tscadc/tiadc/iio:device0/' +syspath = '/sys/bus/iio/devices/iio:device0/' FileName = [] diff --git a/configs/ARM/BeagleBone/BeBoPr-Bridge/setup.bridge.sh b/configs/ARM/BeagleBone/BeBoPr-Bridge/setup.bridge.sh index 1a4375195b..5c747e0e53 100755 --- a/configs/ARM/BeagleBone/BeBoPr-Bridge/setup.bridge.sh +++ b/configs/ARM/BeagleBone/BeBoPr-Bridge/setup.bridge.sh @@ -87,8 +87,8 @@ else load_cape $DTBO $REV fi -if [ ! -r /sys/devices/ocp.*/44e0d000.tscadc/tiadc/iio:device0/in_voltage5_raw ] ; then - echo "Analog input files not found in /sys/devices/ocp.*/44e0d000.tscadc/tiadc/iio:device0/" >&2 +if [ ! -r /sys/bus/iio/devices/iio:device0/in_voltage5_raw ] ; then + echo "Analog input files not found in /sys/bus/iio/devices/iio:device0/" >&2 exit 1; fi diff --git a/configs/ARM/BeagleBone/BeBoPr/ReadTemp.py b/configs/ARM/BeagleBone/BeBoPr/ReadTemp.py index 2eda38ce66..f05fa18138 100755 --- a/configs/ARM/BeagleBone/BeBoPr/ReadTemp.py +++ b/configs/ARM/BeagleBone/BeBoPr/ReadTemp.py @@ -255,7 +255,7 @@ def r2t(n, R_T): if len(args.therm) != num_chan : raise UserWarning('Incorrect number of thermistors specified! Expected:' + args.num_chan) -syspath = '/sys/devices/ocp.*/44e0d000.tscadc/tiadc/iio:device0/' +syspath = '/sys/bus/iio/devices/iio:device0/' FileName = [] diff --git a/configs/ARM/BeagleBone/PocketNC/ReadTemp.py b/configs/ARM/BeagleBone/PocketNC/ReadTemp.py index 2eda38ce66..f05fa18138 100644 --- a/configs/ARM/BeagleBone/PocketNC/ReadTemp.py +++ b/configs/ARM/BeagleBone/PocketNC/ReadTemp.py @@ -255,7 +255,7 @@ def r2t(n, R_T): if len(args.therm) != num_chan : raise UserWarning('Incorrect number of thermistors specified! Expected:' + args.num_chan) -syspath = '/sys/devices/ocp.*/44e0d000.tscadc/tiadc/iio:device0/' +syspath = '/sys/bus/iio/devices/iio:device0/' FileName = [] diff --git a/configs/ARM/BeagleBone/Replicape/hal_temp_bbb b/configs/ARM/BeagleBone/Replicape/hal_temp_bbb index 00c8f389f9..7a5ae801b1 100755 --- a/configs/ARM/BeagleBone/Replicape/hal_temp_bbb +++ b/configs/ARM/BeagleBone/Replicape/hal_temp_bbb @@ -171,7 +171,7 @@ def getHalName(pin): def checkAdcInput(pin): - syspath = '/sys/devices/ocp.*/44e0d000.tscadc/tiadc/iio:device0/' + syspath = '/sys/bus/iio/devices/iio:device0/' tempName = glob.glob(syspath + 'in_voltage' + str(pin.pin) + '_raw') pin.filename = tempName[0] try: From 6fab261514b3645904b8bdea8b16310527b930b7 Mon Sep 17 00:00:00 2001 From: Mick Date: Sat, 5 Aug 2017 17:00:11 +0100 Subject: [PATCH 076/516] Options in debian/configure, set package version and create sources. Currently package version is set by Travis writing a debian/changelog entry setting the version from vars inside Travis prepended onto the existing changelog. If building manually or via a different CI system, this patch gives the option of calling 'debian/configure -c ', which will create a changelog entry with a version derived from information within git and the running system. The version will be derived from `.-1.git~` Option also included 'debian/configure -s ' to create sources. .orig tarball created with a version format which will allow creation of .debian tarball and .dsc file, when doing package build from command line or otherwise outside Travis environment Has no effect upon existing builds, which will not use it. In preparation for alternative build system. Signed-off-by: Mick --- debian/configure | 48 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/debian/configure b/debian/configure index 935ee230e8..38accad50f 100755 --- a/debian/configure +++ b/debian/configure @@ -185,6 +185,46 @@ do_tcl_tk_version() { echo "debian/control: Set tcl/tk build deps to version $TCL_TK_VER" >&2 } +## Set version for packages by altering changelog +## Write new version info then prepend existing one, for use in changes file +## Allows command line builds and builds outside of Travis environment to set meaningful version numbers + +do_changelog() { + DISTRO_UC="$(lsb_release -c | cut -c 10- | sed 's/^[[:space:]]*//g' | sed -e 's/\b\(.\)/\u\1/g')" + DISTRO_LC="$(lsb_release -c | cut -c 10- | sed 's/^[[:space:]]*//g')" + MKVERSION="$(git show HEAD:VERSION | cut -d ' ' -f 1).$(git rev-list --count master)-1.git$(git rev-parse --short HEAD)~${DISTRO_LC}" + COMMITTER="$(git show -s --pretty=%an $(git rev-parse --short HEAD))" + EMAIL="$(git show -s --format='%ae' $(git rev-parse --short HEAD))" + + mv changelog changelog.old + cat > changelog < $(date -R) + +EOF + +cat changelog # debug output +cat changelog.old >> changelog +echo "New package version number added to changelog" +} + +## Create source orig tarball in format required for creation of debian tarball and .dsc file +## Allows non binary package builds from command line or outside Travis environment + +do_source_tarball() { +#version based on major version plus commit number only, without suffixed -1 or commit hash +MK_VERSION="$(git show HEAD:VERSION | cut -d ' ' -f 1).$(git rev-list --count master)" + +OWD=$PWD +cd ../ +git archive HEAD | bzip2 -z > ../machinekit_${MK_VERSION}.orig.tar.bz2 +echo "Source tarball created" +cd $OWD +} + usage() { { test -z "$1" || echo "$1" @@ -193,6 +233,8 @@ usage() { echo " -p build POSIX threads" echo " -r build RT_PREEMPT threads" echo " -x build Xenomai threads" + echo " -c rewrite changelog to set package version from git commit" + echo " -s create source tarball for non binary package builds" echo " -X build Xenomai-kernel threads ***" echo " -R build RTAI-kernel threads ***" echo " -t set tcl/tk version" @@ -229,14 +271,17 @@ cp machinekit.install.in machinekit.install echo "debian/machinekit.install.in: copied base template" >&2 # read command line options -while getopts dprxR:X:t:?h ARG; do +while getopts dprxcsR:X:t:?h ARG; do case $ARG in p) do_posix ;; r) do_rt-preempt ;; x) do_xenomai ;; + c) do_changelog ;; # set new changelog with package versions from git + s) do_source_tarball ;; # create tarball for non binary builds R) do_rtai_kernel "$OPTARG" ;; X) do_xenomai_kernel "$OPTARG" ;; t) TCL_TK_VER="$OPTARG" ;; + ?|h) usage ;; *) usage "Unknown arg: '-$ARG'" ;; esac @@ -267,3 +312,4 @@ echo "debian/control: add final Build-Depends: list" >&2 # Warn if no flavor configured $HAVE_FLAVOR || usage "WARNING: No thread flavors configured" + From 456eb835c80c36f0d5cb186015f09e196fa3af7e Mon Sep 17 00:00:00 2001 From: Mick Date: Mon, 7 Aug 2017 17:13:21 +0100 Subject: [PATCH 077/516] Have debian/configure differentiate Stretch builds The control-rt-preempt.in file specifies a particular rt-preempt kernel in the deb.machinekit.io repo This was because Jessie dropped rt-preempt support creating unmet dependencies. Stretch now supports rt-preempt, so debian/configure specifies a generic `linux-image-rt [amd64|i386]` dependency, which Debian can meet. Also simplify further the parsing routines to generate package serial Signed-off-by: Mick --- debian/configure | 16 ++++++++++++---- debian/control.rt-preempt-stretch.in | 17 +++++++++++++++++ 2 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 debian/control.rt-preempt-stretch.in diff --git a/debian/configure b/debian/configure index 38accad50f..23cb93642f 100755 --- a/debian/configure +++ b/debian/configure @@ -15,6 +15,7 @@ KTHREAD_ARCHES="i386 amd64" if test -x /usr/bin/lsb_release; then DISTRO_ID=$(lsb_release -is) # Debian or Ubuntu DISTRO_RELEASE=$(lsb_release -rs) # 8.1, 14.04, etc. + DISTRO_CODENAME=$(lsb_release -cs) # wheezy | jessie | stretch fi # Work out of the debian/ directory @@ -98,9 +99,16 @@ do_posix() { HAVE_FLAVOR=true } +## cater for fact that Stretch now has it's own rt-preempt kernels do_rt-preempt() { - cat control.rt-preempt.in >> control - echo "debian/control: added RT_PREEMPT threads package" >&2 + if [[ $DISTRO_CODENAME == "stretch" ]] ; then + cat control.rt-preempt-stretch.in >> control + echo "debian/control: added RT_PREEMPT threads package for Stretch" >&2 + else + cat control.rt-preempt.in >> control + echo "debian/control: added RT_PREEMPT threads package for Wheezy/Jessie" >&2 + fi + rules_enable_threads rt-preempt HAVE_FLAVOR=true } @@ -190,8 +198,8 @@ do_tcl_tk_version() { ## Allows command line builds and builds outside of Travis environment to set meaningful version numbers do_changelog() { - DISTRO_UC="$(lsb_release -c | cut -c 10- | sed 's/^[[:space:]]*//g' | sed -e 's/\b\(.\)/\u\1/g')" - DISTRO_LC="$(lsb_release -c | cut -c 10- | sed 's/^[[:space:]]*//g')" + DISTRO_UC="$(echo $DISTRO_CODENAME | sed 's/^[[:space:]]*//g' | sed -e 's/\b\(.\)/\u\1/g')" + DISTRO_LC="$(echo $DISTRO_CODENAME | sed 's/^[[:space:]]*//g')" MKVERSION="$(git show HEAD:VERSION | cut -d ' ' -f 1).$(git rev-list --count master)-1.git$(git rev-parse --short HEAD)~${DISTRO_LC}" COMMITTER="$(git show -s --pretty=%an $(git rev-parse --short HEAD))" EMAIL="$(git show -s --format='%ae' $(git rev-parse --short HEAD))" diff --git a/debian/control.rt-preempt-stretch.in b/debian/control.rt-preempt-stretch.in new file mode 100644 index 0000000000..af5196f7c4 --- /dev/null +++ b/debian/control.rt-preempt-stretch.in @@ -0,0 +1,17 @@ + +Package: machinekit-rt-preempt +Architecture: any +Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, +# These Debian-style RT_PREEMPT package names are restricted by +# architecture; ARM arch SOCs are all incompatible, so this can't be +# easily done for ARM. + linux-image-rt-686-pae [i386], linux-image-rt-amd64 [amd64] +Provides: machinekit-rt-threads +Suggests: hostmot2-firmware-all [!armhf] +Enhances: machinekit +Description: PC based motion controller for real-time Linux + Machinekit is the next-generation Enhanced Machine Controller which + provides motion control for CNC machine tools and robotic + applications (milling, cutting, routing, etc.). + . + This package provides components and drivers that run on an RT-Preempt system. From 9361d436a75d41697fc9c9f957c5c9c18404b647 Mon Sep 17 00:00:00 2001 From: Mick Date: Tue, 8 Aug 2017 16:10:44 +0100 Subject: [PATCH 078/516] Dependency changes for Stretch packaging Two depended packages have substantially changed their numbering ie. python-gst0.1 becomes python-gst-1.0 gstreamer0.1-plugins-base becomes gstreamer1.0-plugins-base python-zmq depends upon later versions of zmq (libzmq5) so cannot be a dep. Specify czmq and zeromq to bring in the libs built which use the previous API. Add an /etc/ld.so.conf.d/ entry to ensure it caches /usr/local/lib configure detects distro codename and makes substitutions if Stretch detected - so will not affect existing builds Now tested with a from scratch install on amd64 and works Signed-off-by: Mick --- debian/configure | 12 +++- debian/control-stretch.in | 60 +++++++++++++++++++ .../extras/etc/ld.so.conf.d/czmq-zeromq.conf | 2 + debian/machinekit.install.in | 1 + 4 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 debian/control-stretch.in create mode 100644 debian/extras/etc/ld.so.conf.d/czmq-zeromq.conf diff --git a/debian/configure b/debian/configure index 23cb93642f..c5c9049782 100755 --- a/debian/configure +++ b/debian/configure @@ -271,8 +271,16 @@ HAVE_KTHREADS_FLAVOR=false rm -f machinekit-{rtai,xenomai}-kernel-*.install # copy base templates into place -cp control.in control -echo "debian/control: copied base template" >&2 +# stretch uses some different packages +if [[ $DISTRO_CODENAME == "stretch" ]] ; then + cp control-stretch.in control + echo "debian/control: copied Stretch base template" >&2 + else + cp control.in control + echo "debian/control: copied base template" >&2 + fi + + cp rules.in rules; chmod +x rules echo "debian/rules: copied base template" >&2 cp machinekit.install.in machinekit.install diff --git a/debian/control-stretch.in b/debian/control-stretch.in new file mode 100644 index 0000000000..2a6ab2bae5 --- /dev/null +++ b/debian/control-stretch.in @@ -0,0 +1,60 @@ +Source: machinekit +Section: misc +Priority: extra +Maintainer: John Morris +Build-Depends: debhelper (>= 6), + autoconf (>= 2.63), automake, libboost-python-dev, libgl1-mesa-dev, + libglu1-mesa-dev, libgtk2.0-dev, libmodbus-dev (>= 3.0), libudev-dev, + libncurses-dev, libreadline-dev, libusb-1.0-0-dev, libxmu-dev, + libxmu-headers, python (>= 2.6.6-3~), python-dev (>= 2.6.6-3~), + cython (>= 0.19), dh-python, + pkg-config, psmisc, python-tk, libxaw7-dev, libboost-serialization-dev, + zeromq, czmq, libjansson-dev (>= 2.5), + libwebsockets-dev (>= 1.2.2), procps, + liburiparser-dev, libssl-dev, python-setuptools, + uuid-dev, uuid-runtime, libavahi-client-dev, + libprotobuf-dev (>= 2.4.1), protobuf-compiler (>= 2.4.1), + python-protobuf (>= 2.4.1), libprotoc-dev (>= 2.4.1), + python-simplejson, libtk-img, libboost-thread-dev, + python-pyftpdlib, @BUILD_DEPS@ @TCL_TK_BUILD_DEPS@ +Standards-Version: 2.1.0 + +######################################################################### +## not built any more, components of it are in flavour packages +## +#Package: machinekit-dev +#Architecture: any +#Depends: make, g++, @TCL_TK_BUILD_DEPS@, +# ${shlibs:Depends}, ${misc:Depends}, +# machinekit (= ${binary:Version}), +# yapps2-runtime +#Section: libs +#Description: PC based motion controller for real-time Linux +# Machinekit is the next-generation Enhanced Machine Controller which +# provides motion control for CNC machine tools and robotic +# applications (milling, cutting, routing, etc.). +# . +# This package includes files needed to build new realtime components and +# alternate front-ends for machinekit +######################################################################### + +Package: machinekit +Breaks: linuxcnc +Replaces: linuxcnc +Architecture: any +Depends: ${shlibs:Depends}, machinekit-rt-threads, @TCL_TK_DEPS@, + @DEPS@ bwidget (>= 1.7), libtk-img (>=1.13), + ${python:Depends}, ${misc:Depends}, + python-tk, python-imaging, python-imaging-tk, + python-gnome2, python-glade2, + python-numpy, python-gtksourceview2, + python-vte, python-xlib, python-gtkglext1, python-configobj, + python-protobuf (>= 2.4.1), python-gst-1.0, + python-avahi, python-simplejson, python-pyftpdlib, + python-pydot, xdot, zeromq, czmq, + tclreadline, bc, procps, psmisc, + gstreamer1.0-plugins-base +Description: PC based motion controller for real-time Linux + Machinekit is the next-generation Enhanced Machine Controller which + provides motion control for CNC machine tools and robotic + applications (milling, cutting, routing, etc.). diff --git a/debian/extras/etc/ld.so.conf.d/czmq-zeromq.conf b/debian/extras/etc/ld.so.conf.d/czmq-zeromq.conf new file mode 100644 index 0000000000..4f5f49170c --- /dev/null +++ b/debian/extras/etc/ld.so.conf.d/czmq-zeromq.conf @@ -0,0 +1,2 @@ +# Ensure temp czmq and zeromq libs are found +/usr/local/lib diff --git a/debian/machinekit.install.in b/debian/machinekit.install.in index 149f7a69f7..805b5eea64 100644 --- a/debian/machinekit.install.in +++ b/debian/machinekit.install.in @@ -39,3 +39,4 @@ usr/share/applications/* usr/share/desktop-directories/cnc.directory etc/modprobe.d/linuxcnc.conf etc/xdg/menus/applications-merged/cnc.menu +etc/ld.so.conf.d/czmq-zeromq.conf From 0e7a606f33df4a0b6ea75b599120a0fc40afd960 Mon Sep 17 00:00:00 2001 From: Mick Date: Thu, 17 Aug 2017 08:33:17 +0100 Subject: [PATCH 079/516] Restore yapps dependency to machinekit-flavour packages. Left out when comp etc. moved and machinekit-dev deprecated Signed-off-by: Mick --- debian/control.posix.in | 2 +- debian/control.rt-preempt-stretch.in | 2 +- debian/control.rt-preempt.in | 2 +- debian/control.xenomai.in | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/debian/control.posix.in b/debian/control.posix.in index 9994c0b286..2966087bc1 100644 --- a/debian/control.posix.in +++ b/debian/control.posix.in @@ -1,7 +1,7 @@ Package: machinekit-posix Architecture: any -Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, +Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime Provides: machinekit-rt-threads Breaks: machinekit-dev Enhances: machinekit diff --git a/debian/control.rt-preempt-stretch.in b/debian/control.rt-preempt-stretch.in index af5196f7c4..0a2d564b5d 100644 --- a/debian/control.rt-preempt-stretch.in +++ b/debian/control.rt-preempt-stretch.in @@ -1,7 +1,7 @@ Package: machinekit-rt-preempt Architecture: any -Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, +Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime, # These Debian-style RT_PREEMPT package names are restricted by # architecture; ARM arch SOCs are all incompatible, so this can't be # easily done for ARM. diff --git a/debian/control.rt-preempt.in b/debian/control.rt-preempt.in index 0b527562f6..86ab141781 100644 --- a/debian/control.rt-preempt.in +++ b/debian/control.rt-preempt.in @@ -1,7 +1,7 @@ Package: machinekit-rt-preempt Architecture: any -Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, +Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime, # These Debian-style RT_PREEMPT package names are restricted by # architecture; ARM arch SOCs are all incompatible, so this can't be # easily done for ARM. diff --git a/debian/control.xenomai.in b/debian/control.xenomai.in index 1df3dbecdb..908d4cfc08 100644 --- a/debian/control.xenomai.in +++ b/debian/control.xenomai.in @@ -1,7 +1,7 @@ Package: machinekit-xenomai Architecture: any -Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, +Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime, xenomai-runtime Provides: machinekit-rt-threads Recommends: hostmot2-firmware-all [!armhf] From 8b205e8965cc12c24f73cb1b154f33f43bbf9f0b Mon Sep 17 00:00:00 2001 From: Mick Date: Fri, 18 Aug 2017 11:42:12 +0100 Subject: [PATCH 080/516] Add demux16 and demux16v2 components to instantiated components. Adapted from components (c) Les Newell Signed-off-by: Mick --- src/hal/i_components/demux16.icomp | 48 ++++++++++++++++++++++++++++ src/hal/i_components/demux16v2.icomp | 48 ++++++++++++++++++++++++++++ 2 files changed, 96 insertions(+) create mode 100644 src/hal/i_components/demux16.icomp create mode 100644 src/hal/i_components/demux16v2.icomp diff --git a/src/hal/i_components/demux16.icomp b/src/hal/i_components/demux16.icomp new file mode 100644 index 0000000000..3eb54c262e --- /dev/null +++ b/src/hal/i_components/demux16.icomp @@ -0,0 +1,48 @@ +/******************************************************************** +* Description: Demux16 HAL component. +* +* Author: Les Newell +* License: GPL Version 2 or later +* +* Copyright (c) 2009 All rights reserved. +* +********************************************************************/ + +component demux16 "Turn on one of 16 outputs depending on one input"; + +pin in u32 in "input in the range 0-15."; + +pin out bit out##[pincount] """One output goes on if the input is in the range 0-15.\ + Any other value results in no outputs on"""; + +pin io bit bargraph = 0 """If true the all outputs up to the input value turn on.\ + Note in bargraph mode the range is 0-16 where 0= all off.\ + In normal mode the range is 0-15 where 0= output 0 on"""; + +instanceparam int pincount = 16; + +option MAXCOUNT 16; + +author "Les Newell, adapted by ArcEye"; + +function _; +license "GPL"; +;; + +FUNCTION(_) +{ +int x; + + if(bargraph) + { + for( x = 0; x < local_pincount ; x++ ) + out(x) = (in > x); + } + else + { + for( x = 0; x < local_pincount ; x++ ) + out(x) = (in == x); + } + + return 0; +} diff --git a/src/hal/i_components/demux16v2.icomp b/src/hal/i_components/demux16v2.icomp new file mode 100644 index 0000000000..e884d0965a --- /dev/null +++ b/src/hal/i_components/demux16v2.icomp @@ -0,0 +1,48 @@ +/******************************************************************** +* Description: Demux16 HAL component. +* +* Author: Les Newell +* License: GPL Version 2 or later +* +* Copyright (c) 2009 All rights reserved. +* +********************************************************************/ + +component demux16v2 "Turn on one of 16 outputs depending on one input"; + +pin_ptr in u32 in "input in the range 0-15."; + +pin_ptr out bit out##[pincount] """One output goes on if the input is in the range 0-15.\ + Any other value results in no outputs on"""; + +pin_ptr io bit bargraph = 0 """If true the all outputs up to the input value turn on.\ + Note in bargraph mode the range is 0-16 where 0= all off.\ + In normal mode the range is 0-15 where 0= output 0 on"""; + +instanceparam int pincount = 16; + +option MAXCOUNT 16; + +author "Les Newell, adapted by ArcEye"; + +function _; +license "GPL"; +;; + +FUNCTION(_) +{ +int x; + + if(gb(bargraph)) + { + for( x = 0; x < local_pincount ; x++ ) + sb(out(x), (gu(in) > x) ); + } + else + { + for( x = 0; x < local_pincount ; x++ ) + sb(out(x), (gu(in) == x) ); + } + + return 0; +} From 5fe2e60fd5d228d8ee73c554899b7e69ce3a1bbf Mon Sep 17 00:00:00 2001 From: saeugetier Date: Tue, 22 Aug 2017 19:34:43 +0200 Subject: [PATCH 081/516] adding float support for sserial. for more details see: https://github.com/LinuxCNC/linuxcnc/commit/9207cbca59c61a32cf33a25f3c37d0ba0d4e1dbb --- src/hal/drivers/mesa-hostmot2/sserial.c | 39 +++++++++++++++++++++++++ src/hal/drivers/mesa-hostmot2/sserial.h | 1 + 2 files changed, 40 insertions(+) diff --git a/src/hal/drivers/mesa-hostmot2/sserial.c b/src/hal/drivers/mesa-hostmot2/sserial.c index eed0d80340..decfa2133f 100644 --- a/src/hal/drivers/mesa-hostmot2/sserial.c +++ b/src/hal/drivers/mesa-hostmot2/sserial.c @@ -1069,6 +1069,19 @@ int hm2_sserial_create_pins(hostmot2_t *hm2, hm2_sserial_remote_t *chan){ case LBP_ENCODER_L: //No pins for encoder L break; + case LBP_FLOAT: + rtapi_snprintf(name, sizeof(name), "%s.%s", + chan->name, + chan->confs[i].NameString); + r = hal_pin_float_new(name, + data_dir, + &(chan->pins[i].float_pin), + hm2->llio->comp_id); + if (r < 0) { + HM2_ERR("error adding pin '%s', aborting\n", name); + return r; + } + break; default: HM2_ERR("Unhandled sserial data type (%i) Name %s Units %s\n", chan->confs[i].DataType, @@ -1314,6 +1327,18 @@ void hm2_sserial_prepare_tram_write(hostmot2_t *hm2, long period){ // Would we ever write to a counter? // Assume not for the time being break; + case LBP_FLOAT: + if (conf->DataLength == sizeof(float) * 8 ){ + float temp = *pin->float_pin; + memcpy(&buff, &temp, sizeof(float)); + } else if (conf->DataLength == sizeof(double) * 8){ + double temp = *pin->float_pin; + memcpy(&buff, &temp, sizeof(double)); + } else { + HM2_ERR_NO_LL("sserial write: LBP_FLOAT of bit-length %i not handled\n", conf->DataLength); + conf->DataType = 0; // only warn once, then ignore + } + break; default: HM2_ERR("Unsupported output datatype %i (name ""%s"")\n", conf->DataType, conf->NameString); @@ -1496,6 +1521,20 @@ int hm2_sserial_read_pins(hm2_sserial_remote_t *chan){ *pin->s32_pin2 = pin->accum; *pin->float_pin = (double)(pin->accum - pin->offset) / pin->fullscale ; break; + case LBP_FLOAT: + if (conf->DataLength == sizeof(float) * 8){ + float temp; + memcpy(&temp, &buff, sizeof(float)); + *pin->float_pin = temp; + } else if (conf->DataLength == sizeof(double) * 8){ + double temp; + memcpy(&temp, &buff, sizeof(double)); + *pin->float_pin = temp; + } else { + HM2_ERR_NO_LL("sserial read: LBP_FLOAT of bit-length %i not handled\n", conf->DataLength); + conf->DataType = 0; // Only warn once, then ignore + } + break; } default: HM2_ERR_NO_LL("Unsupported input datatype %i (name ""%s"")\n", diff --git a/src/hal/drivers/mesa-hostmot2/sserial.h b/src/hal/drivers/mesa-hostmot2/sserial.h index 2581dd25fa..7628339108 100644 --- a/src/hal/drivers/mesa-hostmot2/sserial.h +++ b/src/hal/drivers/mesa-hostmot2/sserial.h @@ -75,6 +75,7 @@ #define LBP_STREAM 0x06 #define LBP_BOOLEAN 0x07 #define LBP_ENCODER 0x08 +#define LBP_FLOAT 0x10 // New for STMBL #define LBP_ENCODER_H 0x18 // For Fanuc Absolute Encoders with separate #define LBP_ENCODER_L 0x28 // part and full count fields. From 981a3cda76001db989eaf72304e99e36edf72b57 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Mon, 5 Dec 2016 23:33:50 +0100 Subject: [PATCH 082/516] Add hm2 soc adc functionality to hostmot2 Signed-off-by: Michael Brown --- src/Makefile | 1 + src/hal/drivers/mesa-hostmot2/hostmot2.c | 15 +++ src/hal/drivers/mesa-hostmot2/hostmot2.h | 30 +++++ src/hal/drivers/mesa-hostmot2/nano_soc_adc.c | 123 +++++++++++++++++++ 4 files changed, 169 insertions(+) create mode 100644 src/hal/drivers/mesa-hostmot2/nano_soc_adc.c diff --git a/src/Makefile b/src/Makefile index 95cf787675..92ffce0800 100755 --- a/src/Makefile +++ b/src/Makefile @@ -1484,6 +1484,7 @@ hostmot2-objs += \ hal/drivers/mesa-hostmot2/fwid.o \ hal/drivers/mesa-hostmot2/tram.o \ hal/drivers/mesa-hostmot2/raw.o \ + hal/drivers/mesa-hostmot2/nano_soc_adc.o \ hal/drivers/mesa-hostmot2/bitfile.o \ $(MATHSTUB) hm2_7i90-objs := \ diff --git a/src/hal/drivers/mesa-hostmot2/hostmot2.c b/src/hal/drivers/mesa-hostmot2/hostmot2.c index 6f14b7e63b..2e718ccef7 100755 --- a/src/hal/drivers/mesa-hostmot2/hostmot2.c +++ b/src/hal/drivers/mesa-hostmot2/hostmot2.c @@ -98,6 +98,7 @@ static int hm2_read(void *void_hm2, const hal_funct_args_t *fa) { hm2_tp_pwmgen_read(hm2); // check the status of the fault bit hm2_dpll_process_tram_read(hm2, period); hm2_raw_read(hm2); + de0_nano_soc_adc_read(hm2); return 0; } @@ -359,6 +360,7 @@ static int hm2_parse_config_string(hostmot2_t *hm2, char *config_string) { hm2->config.num_dplls = -1; hm2->config.num_leds = -1; hm2->config.enable_raw = 0; + hm2->config.enable_adc = 0; hm2->config.firmware = NULL; if (config_string == NULL) return 0; @@ -469,6 +471,9 @@ static int hm2_parse_config_string(hostmot2_t *hm2, char *config_string) { } else if (strncmp(token, "enable_raw", 10) == 0) { hm2->config.enable_raw = 1; + } else if (strncmp(token, "enable_adc", 10) == 0) { + hm2->config.enable_adc = 1; + } else if (strncmp(token, "nofwid", 6) == 0) { hm2->config.skip_fwid = 1; @@ -507,6 +512,7 @@ static int hm2_parse_config_string(hostmot2_t *hm2, char *config_string) { HM2_DBG(" num_dplls=%d\n", hm2->config.num_dplls); HM2_DBG(" num_leds=%d\n", hm2->config.num_leds); HM2_DBG(" enable_raw=%d\n", hm2->config.enable_raw); + HM2_DBG(" enable_adc=%d\n", hm2->config.enable_adc); HM2_DBG(" firmware=%s\n", hm2->config.firmware ? hm2->config.firmware : "(NULL)"); argv_free(argv); @@ -1511,6 +1517,15 @@ int hm2_register(hm2_lowlevel_io_t *llio, char *config_string) { goto fail1; } + // + // the "adc" interface lets you read the de0 nano soc builtin adc from HAL + // + + r = hm2_adc_setup(hm2); + if (r != 0) { + goto fail1; + } + // // At this point, all non-TRAM register buffers have been initialized diff --git a/src/hal/drivers/mesa-hostmot2/hostmot2.h b/src/hal/drivers/mesa-hostmot2/hostmot2.h index cfd147d196..9ab1327875 100644 --- a/src/hal/drivers/mesa-hostmot2/hostmot2.h +++ b/src/hal/drivers/mesa-hostmot2/hostmot2.h @@ -76,6 +76,10 @@ char **argv_split(gfp_t gfp, const char *str, int *argcp); // idrom addresses & constants // +#define DE0_NANO_SOC_ADC_BASE 0x0200 +#define DE0_NANO_SOC_ADC_DATA 0x0204 +#define NUM_ADC_SAMPLES 8 + #define HM2_ADDR_IOCOOKIE (0x0100) #define HM2_IOCOOKIE (0x55AACAFE) @@ -1067,6 +1071,20 @@ typedef struct { } hm2_raw_t; +// +// nano adc access +// + +typedef struct { + struct { + struct { + hal_u32_t *status_set_reg; + hal_u32_t *num_samples_reg; + hal_u32_t *sample[NUM_ADC_SAMPLES]; + } pin; + } hal; +} de0_nano_soc_adc_t; + // @@ -1108,6 +1126,7 @@ typedef struct { int num_dplls; char sserial_modes[4][8]; int enable_raw; + int enable_adc; char *firmware; int skip_fwid; // skip applying the fwid proto message if set } config; @@ -1157,6 +1176,7 @@ typedef struct { hm2_led_t led; hm2_fwid_t fwid; hm2_raw_t *raw; + de0_nano_soc_adc_t *nano_soc_adc; struct list_head list; } hostmot2_t; @@ -1166,6 +1186,9 @@ typedef struct { // misc little helper functions // +void de0_nano_soc_adc_read(hostmot2_t *hm2); +void de0_nano_soc_adc_write(hostmot2_t *hm2); + // this one just returns TRUE if the MD is good, FALSE if not int hm2_md_is_consistent( hostmot2_t *hm2, @@ -1462,6 +1485,13 @@ void hm2_raw_read(hostmot2_t *hm2); void hm2_raw_write(hostmot2_t *hm2); +// +// adc functions +// + +int hm2_adc_setup(hostmot2_t *hm2); +void de0_nano_soc_adc_read(hostmot2_t *hm2); + // write all settings out to the FPGA diff --git a/src/hal/drivers/mesa-hostmot2/nano_soc_adc.c b/src/hal/drivers/mesa-hostmot2/nano_soc_adc.c new file mode 100644 index 0000000000..96602f7032 --- /dev/null +++ b/src/hal/drivers/mesa-hostmot2/nano_soc_adc.c @@ -0,0 +1,123 @@ + +// +// Copyright (C) 2007-2008 Sebastian Kuzminsky +// +// This program 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 2 of the License, or +// (at your option) any later version. +// +// This program 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 this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +// + +#include "config_module.h" +#include RTAPI_INC_SLAB_H + +#include "rtapi.h" +#include "rtapi_string.h" +#include "rtapi_math.h" + +#include "hal.h" + +#include "hal/drivers/mesa-hostmot2/hostmot2.h" + + + +int hm2_adc_setup(hostmot2_t *hm2) { + int r,i; + char name[HAL_NAME_LEN + 1]; + + + if (hm2->config.enable_adc == 0) { + return 0; + } + + hm2->nano_soc_adc = (de0_nano_soc_adc_t *)hal_malloc(sizeof(de0_nano_soc_adc_t)); + if (hm2->nano_soc_adc == NULL) { + HM2_ERR("out of memory!\n"); + hm2->config.enable_adc = 0; + return -ENOMEM; + } + + for(i=0;illio->name, i); + r = hal_pin_u32_new(name, HAL_OUT, &(hm2->nano_soc_adc->hal.pin.sample[i]), hm2->llio->comp_id); + if (r < 0) { + HM2_ERR("error adding pin '%s', aborting\n", name); + return -EINVAL; + } + } + + + // init hal objects + + for(i=0;inano_soc_adc->hal.pin.sample[i]) = 0; + } + + return 0; +} + + +void de0_nano_soc_adc_read(hostmot2_t *hm2) { + int i; + u32 val; + u32 num_samples=NUM_ADC_SAMPLES; + u32 reset_reg = 0x0100; + u32 start_reg = 0x0101; + + if (hm2->config.enable_adc == 0) return; + + hm2->llio->read( + hm2->llio, + DE0_NANO_SOC_ADC_BASE, + &val, + sizeof(u32) + ); + if (val & 1){ + /* insert dummy read of first sample */ +// hm2->llio->read( +// hm2->llio, +// DE0_NANO_SOC_ADC_DATA, +// (void *)hm2->nano_soc_adc->hal.pin.sample[0], +// sizeof(u32) +// ); + + for(i=0;illio->read( + hm2->llio, + DE0_NANO_SOC_ADC_DATA, + (void *)hm2->nano_soc_adc->hal.pin.sample[i], + sizeof(u32) + ); + } + + hm2->llio->write( + hm2->llio, + DE0_NANO_SOC_ADC_DATA, + &num_samples, + sizeof(u32) + ); + + hm2->llio->write( + hm2->llio, + DE0_NANO_SOC_ADC_BASE, + &reset_reg, + sizeof(u32) + ); + + hm2->llio->write( + hm2->llio, + DE0_NANO_SOC_ADC_BASE, + &start_reg, + sizeof(u32) + ); + } +} From 1729b7f61fee1cb61625d9e02fff0b0a7f664f79 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Mon, 5 Dec 2016 23:49:12 +0100 Subject: [PATCH 083/516] Add hm2 soc temperature user component Signed-off-by: Michael Brown the-snowwhite --- src/Makefile | 1 + src/hal/user_comps/Submakefile | 1 + src/hal/user_comps/hal_temp_atlas.py | 159 +++++++++++++++++++++++++++ 3 files changed, 161 insertions(+) create mode 100644 src/hal/user_comps/hal_temp_atlas.py diff --git a/src/Makefile b/src/Makefile index 92ffce0800..af7039ded4 100755 --- a/src/Makefile +++ b/src/Makefile @@ -1059,6 +1059,7 @@ install-python: install-dirs $(EXE) ../bin/hal_storage $(DESTDIR)$(bindir) $(EXE) ../bin/hal_temp_ads7828 $(DESTDIR)$(bindir) $(EXE) ../bin/hal_temp_bbb $(DESTDIR)$(bindir) + $(EXE) ../bin/hal_temp_atlas $(DESTDIR)$(bindir) $(EXE) ../bin/pyvcp $(DESTDIR)$(bindir) $(EXE) ../bin/gladevcp $(DESTDIR)$(bindir) $(EXE) ../bin/axis $(DESTDIR)$(bindir) diff --git a/src/hal/user_comps/Submakefile b/src/hal/user_comps/Submakefile index 17ce9296c9..7114f1883d 100644 --- a/src/hal/user_comps/Submakefile +++ b/src/hal/user_comps/Submakefile @@ -5,6 +5,7 @@ USER_COMP_PY = \ hal_storage \ hal_temp_ads7828 \ hal_temp_bbb \ + hal_temp_atlas \ hal_gy86 \ gladevcp diff --git a/src/hal/user_comps/hal_temp_atlas.py b/src/hal/user_comps/hal_temp_atlas.py new file mode 100644 index 0000000000..b5be20e03c --- /dev/null +++ b/src/hal/user_comps/hal_temp_atlas.py @@ -0,0 +1,159 @@ +#!/usr/bin/python +# encoding: utf-8 +""" +Temperature.py + +Created by Alexander Rössler on 2014-03-24. +""" + +from fdm.r2temp import R2Temp + +import argparse +import time +import sys + +import hal + +# The CRAMPS board thermistor input has one side grounded and the other side +# pulled high through a 1.00K resistor to 1.8V. Following this is a 4.7K +# resistor, some protection diodes, and filtering capacitors. The ADC voltage +# read is the filtered voltage across the thermistor. +def adc2r_cramps(pin,ref): +# V_adc = pin.rawValue * 1.8 / 4096.0 +# V_adc = pin.rawValue * 3.3 / 3315.0 + V_adc = pin.rawValue * 3.3 / ref + V_T = 0.0 # Voltage across the thermistor + R_PU = 2000.0 #Pull-up resistence + I_PU = 0.0 # Current flowing through the pull-up resistor + R_T = 0.0 # Resistance of the thermistor + + V_T = V_adc + + # No dividing by zero or negative voltages despite what the ADC says! + # Clip to a small positive value + I_PU = max((3.3 - V_T ) / R_PU, 0.000001) +# I_PU = max((5.0 - V_T ) / R_PU, 0.000001) + + R_T = V_T / I_PU + + return R_T + +class Pin: + def __init__(self): + self.pin = 0 + self.r2temp = None + self.halValuePin = 0 + self.halRawPin = 0 + self.filterSamples = [] + self.filterSize = 10 + self.rawValue = 0.0 + self.filterSamples = [] + self.rawValue = 0.0 + + def addSample(self, value): + self.filterSamples.append(value) + if (len(self.filterSamples) > self.filterSize): + self.filterSamples.pop(0) + sampleSum = 0.0 + for sample in self.filterSamples: + sampleSum += sample + # No dividing by zero or negative voltages despite what the ADC says! + # Clip to a small positive value + self.rawValue = max(sampleSum / len(self.filterSamples), 0.000001) + + +def getHalName(pin): + return "ch-" + '{0:02d}'.format(pin.pin) + + +def adc2Temp(pin,ref): +# R1 = 4700.0 +# R2 = R1 / max(4095.0 / pin.rawValue - 1.0, 0.000001) +# return round(pin.r2temp.r2t(R2) * 10.0) / 10.0 + + R = adc2r_cramps(pin,ref) + return round(pin.r2temp.r2t(R) * 10.0) / 10.0 + + +parser = argparse.ArgumentParser(description='HAL component to read Temperature values over I2C') +parser.add_argument('-n', '--name', help='HAL component name', required=True) +parser.add_argument('-i', '--interval', help='I2C update interval', default=0.05) +parser.add_argument('-r', '--ref', help='Calibrate Thermistor ref voltage via ref ch', default="n") +parser.add_argument('-c', '--channels', help='Komma separated list of channels and thermistors to use e.g. 01:semitec_103GT_2,02:epcos_B57560G1104', required=True) +parser.add_argument('-f', '--filter_size', help='Size of the low pass filter to use', default=10) +parser.add_argument('-d', '--delay', help='Delay before the i2c should be updated', default=0.0) + +args = parser.parse_args() + +updateInterval = float(args.interval) +delayInterval = float(args.delay) +filterSize = int(args.filter_size) +error = True +watchdog = True + +# Create pins +pins = [] + +if (args.channels != ""): + channelsRaw = args.channels.split(',') + for channel in channelsRaw: + pinRaw = channel.split(':') + if (len(pinRaw) != 2): + print(("wrong input")) + sys.exit(1) + pin = Pin() + pin.pin = int(pinRaw[0]) + if ((pin.pin > 7) or (pin.pin < 0)): + print(("Pin not available")) + sys.exit(1) + if (pinRaw[1] != "none"): + pin.r2temp = R2Temp(pinRaw[1]) + pin.filterSize = filterSize + pins.append(pin) + +# Initialize HAL +h = hal.component(args.name) +for pin in pins: + pin.halRawPin = h.newpin(getHalName(pin) + ".raw", hal.HAL_FLOAT, hal.HAL_OUT) + if (pin.r2temp is not None): + pin.halInputPin = h.newpin(getHalName(pin) + ".input", hal.HAL_U32, hal.HAL_IN) + pin.halValuePin = h.newpin(getHalName(pin) + ".value", hal.HAL_FLOAT, hal.HAL_OUT) +if (args.ref == 'y'): + halRefPin = h.newpin("voltage-ref", hal.HAL_U32, hal.HAL_IN) +halErrorPin = h.newpin("error", hal.HAL_BIT, hal.HAL_OUT) +halNoErrorPin = h.newpin("no-error", hal.HAL_BIT, hal.HAL_OUT) +halWatchdogPin = h.newpin("watchdog", hal.HAL_BIT, hal.HAL_OUT) +h.ready() + +halErrorPin.value = error +halNoErrorPin.value = not error +halWatchdogPin.value = watchdog + +try: + time.sleep(delayInterval) + while (True): + try: + if (args.ref == 'y'): + ref = (halRefPin.value & 0x00000FFF) + if (ref == 0): + ref = 3300 + else: + ref = 3300 + for pin in pins: + value = float(pin.halInputPin.value & 0x00000FFF) + pin.addSample(value) + pin.halRawPin.value = pin.rawValue + if (pin.r2temp is not None): + pin.halValuePin.value = adc2Temp(pin,ref) + error = False + except IOError as e: + error = True + + halErrorPin.value = error + halNoErrorPin.value = not error + watchdog = not watchdog + halWatchdogPin.value = watchdog + time.sleep(updateInterval) +except: + print(("exiting HAL component " + args.name)) + h.exit() From e12797318fc6baac5aa15cbe4f8a21c9d18feab3 Mon Sep 17 00:00:00 2001 From: Michael Brown the-snowwhite Date: Thu, 2 Feb 2017 16:07:00 +0100 Subject: [PATCH 084/516] added capacitive touch sensor module named capsense with autoprobing from fpga IDROM -> hm2 style Signed-off-by: Michael Brown the-snowwhite --- src/Makefile | 1 + src/hal/drivers/mesa-hostmot2/capsense.c | 226 +++++++++++++++++++++++ src/hal/drivers/mesa-hostmot2/hostmot2.c | 25 ++- src/hal/drivers/mesa-hostmot2/hostmot2.h | 57 +++++- src/hal/drivers/mesa-hostmot2/pins.c | 13 +- 5 files changed, 318 insertions(+), 4 deletions(-) create mode 100644 src/hal/drivers/mesa-hostmot2/capsense.c diff --git a/src/Makefile b/src/Makefile index af7039ded4..cb2301c8fb 100755 --- a/src/Makefile +++ b/src/Makefile @@ -1486,6 +1486,7 @@ hostmot2-objs += \ hal/drivers/mesa-hostmot2/tram.o \ hal/drivers/mesa-hostmot2/raw.o \ hal/drivers/mesa-hostmot2/nano_soc_adc.o \ + hal/drivers/mesa-hostmot2/capsense.o \ hal/drivers/mesa-hostmot2/bitfile.o \ $(MATHSTUB) hm2_7i90-objs := \ diff --git a/src/hal/drivers/mesa-hostmot2/capsense.c b/src/hal/drivers/mesa-hostmot2/capsense.c new file mode 100644 index 0000000000..a0203ced1a --- /dev/null +++ b/src/hal/drivers/mesa-hostmot2/capsense.c @@ -0,0 +1,226 @@ + +// +// Copyright (C) 2007-2008 Sebastian Kuzminsky +// +// This program 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 2 of the License, or +// (at your option) any later version. +// +// This program 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 this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +// + +#include "config_module.h" +#include RTAPI_INC_SLAB_H + +#include "rtapi.h" +#include "rtapi_string.h" +#include "rtapi_math.h" + +#include "hal.h" + +#include "hal/drivers/mesa-hostmot2/hostmot2.h" + +int hm2_capsense_parse_md(hostmot2_t *hm2, int md_index) { + hm2_module_descriptor_t *md = &hm2->md[md_index]; + int r; + + + if (hm2->capsense.num_instances != 0) { + HM2_ERR( + "found duplicate Module Descriptor for %s (inconsistent firmware), not loading driver\n", + hm2_get_general_function_name(md->gtag) + ); + return -EINVAL; + } + + // allocate the module-global HAL shared memory + hm2->capsense.hal = (hm2_capsense_module_global_t *)hal_malloc(sizeof(hm2_capsense_module_global_t)); + if (hm2->capsense.hal == NULL) { + HM2_ERR("out of memory!\n"); + r = -ENOMEM; + goto fail0; + } + + if (hm2->config.num_capsensors > md->instances) { + HM2_ERR( + "config.num_capsensors=%d, but only %d are available, not loading driver\n", + hm2->config.num_capsensors, + md->instances + ); + return -EINVAL; + } + + if (hm2->config.num_capsensors == 0) { + return 0; + } + + // + // looks good, start initializing + // + + + if (hm2->config.num_capsensors == -1) { + hm2->capsense.num_instances = md->instances; + } else { + hm2->capsense.num_instances = hm2->config.num_capsensors; + } + + + hm2->capsense.instance = (hm2_capsense_instance_t *)hal_malloc(hm2->capsense.num_instances * sizeof(hm2_capsense_instance_t)); + if (hm2->capsense.instance == NULL) { + HM2_ERR("out of memory!\n"); + r = -ENOMEM; + goto fail0; + } + + hm2->capsense.capsense_data_addr = md->base_address + (0 * md->register_stride); + hm2->capsense.capsense_hysteresis_addr = md->base_address + (1 * md->register_stride); + +// r = hm2_register_tram_read_region(hm2, hm2->capsense.capsense_data_addr, (hm2->capsense.num_instances * sizeof(u32)), &hm2->capsense.capsense_data_reg); + r = hm2_register_tram_read_region(hm2, hm2->capsense.capsense_data_addr, (1 * sizeof(u32)), &hm2->capsense.capsense_data_reg); + if (r < 0) { + HM2_ERR("error registering tram read region for CAPSENSE Data register (%d)\n", r); + goto fail0; + } + +// hm2->capsense.capsense_data_reg = (u32 *)kmalloc(hm2->capsense.num_instances * sizeof(u32), GFP_KERNEL); + hm2->capsense.capsense_data_reg = (u32 *)kmalloc(1 * sizeof(u32), GFP_KERNEL); + if (hm2->capsense.capsense_data_reg == NULL) { + HM2_ERR("out of memory!\n"); + r = -ENOMEM; + goto fail0; + } + + // export to HAL + // FIXME: r hides the r in enclosing function, and it returns the wrong thing + { + int i; + int r; + char name[HAL_NAME_LEN + 1]; + + // parameters +/* + // these hal parameters affect all capsense instances + r = hal_param_u32_newf( + HAL_RW, + &(hm2->capsense.hal->param.capsense_hysteresis), + hm2->llio->comp_id, + "%s.capsense.capsense_hysteresis", + hm2->llio->name + ); + if (r < 0) { + HM2_ERR("error adding capsense.capsense_hysteresis param, aborting\n"); + goto fail1; + } + hm2->capsense.hal->param.capsense_hysteresis = 0x33333333; +// hm2->capsense.written_capsense_hysteresis_reg = 0; +*/ + + rtapi_snprintf(name, sizeof(name), "%s.capsense.%02d.hysteresis", hm2->llio->name, 0); + r = hal_pin_u32_new(name, HAL_IN, &(hm2->capsense.hal->param.capsense_hysteresis), hm2->llio->comp_id); + if (r < 0) { + HM2_ERR("error adding capsense.hysteresis pin, aborting\n"); + goto fail1; + } + + *hm2->capsense.hal->param.capsense_hysteresis = 0x33333333; + + for (i = 0; i < hm2->capsense.num_instances; i ++) { + // pins + rtapi_snprintf(name, sizeof(name), "%s.capsense.%02d.trigged", hm2->llio->name, i); + r = hal_pin_bit_new(name, HAL_OUT, &(hm2->capsense.instance[i].hal.pin.sensepad), hm2->llio->comp_id); + if (r < 0) { + HM2_ERR("error adding pin '%s', aborting\n", name); + goto fail1; + } + // init hal objects +/* + for(i=0;icapsense.num_instances;i++){ + *(hm2->capsense.instance[i].hal.pin.sensepad) = 0; + } +*/ + } + } + + + return hm2->capsense.num_instances; + +fail1: + kfree(hm2->capsense.capsense_data_reg); + +fail0: + hm2->capsense.num_instances = 0; + return r; +} + + +/* +int hm2_capsense_setup(hostmot2_t *hm2) { + int r,i; + char name[HAL_NAME_LEN + 1]; + + + if (hm2->config.enable_capsense == 0) { + return 0; + } + + hm2->capsense = (capsense_t *)hal_malloc(sizeof(capsense_t)); + if (hm2->capsense == NULL) { + HM2_ERR("out of memory!\n"); + hm2->config.enable_capsense = 0; + return -ENOMEM; + } + + for(i=0;illio->name, i); + r = hal_pin_bit_new(name, HAL_OUT, &(hm2->capsense->hal.pin.sensepad[i]), hm2->llio->comp_id); + if (r < 0) { + HM2_ERR("error adding pin '%s', aborting\n", name); + return -EINVAL; + } + } + +*/ + // init hal objects +/* + for(i=0;icapsense->hal.pin.sensepad[i]) = 0; + } + + hm2_set_pin_direction(hm2, 36, HM2_PIN_DIR_IS_OUTPUT); + + return 0; +} +*/ + +void hm2_capsense_read(hostmot2_t *hm2) { + int i; + u32 val; + hal_bit_t bit; + + if (hm2->capsense.num_instances == 0) return; + + hm2->llio->read( + hm2->llio, + hm2->capsense.capsense_data_addr, + &val, + sizeof(u32) + ); + + for(i=0;icapsense.num_instances; i ++){ + bit = (val >> i) & 0x1; + *hm2->capsense.instance[i].hal.pin.sensepad = bit; + } +} + +//void hm2_capsense_allocate_pins(hostmot2_t *hm2) { +// hm2_set_pin_direction(hm2, 36, HM2_PIN_DIR_IS_OUTPUT); +//} diff --git a/src/hal/drivers/mesa-hostmot2/hostmot2.c b/src/hal/drivers/mesa-hostmot2/hostmot2.c index 2e718ccef7..79e624621c 100755 --- a/src/hal/drivers/mesa-hostmot2/hostmot2.c +++ b/src/hal/drivers/mesa-hostmot2/hostmot2.c @@ -99,6 +99,7 @@ static int hm2_read(void *void_hm2, const hal_funct_args_t *fa) { hm2_dpll_process_tram_read(hm2, period); hm2_raw_read(hm2); de0_nano_soc_adc_read(hm2); + hm2_capsense_read(hm2); return 0; } @@ -285,6 +286,8 @@ const char *hm2_get_general_function_name(int gtag) { case HM2_GTAG_PKTUART_RX: return "PktUART Receive Channel"; case HM2_GTAG_PKTUART_TX: return "PktUART Transmit Channel"; case HM2_GTAG_HM2DPLL: return "Hostmot2 DPLL"; + case HM2_GTAG_NANOADC: return "NANOADC"; + case HM2_GTAG_CAPSENSE: return "CapSense"; case HM2_GTAG_FWID: return "Firmware ID"; default: { static char unknown[100]; @@ -361,6 +364,7 @@ static int hm2_parse_config_string(hostmot2_t *hm2, char *config_string) { hm2->config.num_leds = -1; hm2->config.enable_raw = 0; hm2->config.enable_adc = 0; + hm2->config.num_capsensors = -1; hm2->config.firmware = NULL; if (config_string == NULL) return 0; @@ -474,6 +478,10 @@ static int hm2_parse_config_string(hostmot2_t *hm2, char *config_string) { } else if (strncmp(token, "enable_adc", 10) == 0) { hm2->config.enable_adc = 1; + } else if (strncmp(token, "num_capsensors=", 14) == 0) { + token += 14; + hm2->config.num_capsensors = simple_strtol(token, NULL, 0); + } else if (strncmp(token, "nofwid", 6) == 0) { hm2->config.skip_fwid = 1; @@ -513,6 +521,7 @@ static int hm2_parse_config_string(hostmot2_t *hm2, char *config_string) { HM2_DBG(" num_leds=%d\n", hm2->config.num_leds); HM2_DBG(" enable_raw=%d\n", hm2->config.enable_raw); HM2_DBG(" enable_adc=%d\n", hm2->config.enable_adc); + HM2_DBG(" num_capsensors=%d\n", hm2->config.num_capsensors); HM2_DBG(" firmware=%s\n", hm2->config.firmware ? hm2->config.firmware : "(NULL)"); argv_free(argv); @@ -985,6 +994,10 @@ static int hm2_parse_module_descriptors(hostmot2_t *hm2) { md_accepted = hm2_led_parse_md(hm2, md_index); break; + case HM2_GTAG_CAPSENSE: + md_accepted = hm2_capsense_parse_md(hm2, md_index); + break; + case HM2_GTAG_FWID: continue; // skip - already parsed above from well-known memory address @@ -1507,7 +1520,6 @@ int hm2_register(hm2_lowlevel_io_t *llio, char *config_string) { goto fail1; } - // // the "raw" interface lets you peek and poke the HostMot2 registers from HAL // @@ -1517,6 +1529,7 @@ int hm2_register(hm2_lowlevel_io_t *llio, char *config_string) { goto fail1; } + // // the "adc" interface lets you read the de0 nano soc builtin adc from HAL // @@ -1526,6 +1539,16 @@ int hm2_register(hm2_lowlevel_io_t *llio, char *config_string) { goto fail1; } +/* + // + // the "capsense" interface lets you drive and read simple capsensesensors from HAL + // + + r = hm2_capsense_setup(hm2); + if (r != 0) { + goto fail1; + } +*/ // // At this point, all non-TRAM register buffers have been initialized diff --git a/src/hal/drivers/mesa-hostmot2/hostmot2.h b/src/hal/drivers/mesa-hostmot2/hostmot2.h index 9ab1327875..2f6c0cb03d 100644 --- a/src/hal/drivers/mesa-hostmot2/hostmot2.h +++ b/src/hal/drivers/mesa-hostmot2/hostmot2.h @@ -186,6 +186,8 @@ char **argv_split(gfp_t gfp, const char *str, int *argcp); #define HM2_GTAG_HM2DPLL (26) #define HM2_GTAG_LIOPORT (64) // Not supported #define HM2_GTAG_LED (128) +#define HM2_GTAG_NANOADC (132) +#define HM2_GTAG_CAPSENSE (136) #define HM2_GTAG_RESOLVER (192) #define HM2_GTAG_SMARTSERIAL (193) @@ -1086,6 +1088,47 @@ typedef struct { } de0_nano_soc_adc_t; +// +// capsense sensor access +// + +typedef struct { + + struct { + + struct { + hal_bit_t *sensepad; + } pin; + + } hal; + +} hm2_capsense_instance_t; + +// these hal params affect all pwmgen instances +typedef struct { + struct { + hal_u32_t *capsense_hysteresis; + } param; +} hm2_capsense_module_global_t; + +typedef struct { + int num_instances; + hm2_capsense_instance_t *instance; + + // these keep track of the most recent hal->param.p{d,w}m_frequency + // that we've told the FPGA about, so we know if we need to update it + u32 written_capsense_hysteresis_reg; + + // module-global HAL objects... + hm2_capsense_module_global_t *hal; + + u32 capsense_data_addr; + u32 *capsense_data_reg; + + u32 capsense_hysteresis_addr; + u32 *capsense_hysteresis_reg; +} hm2_capsense_t; + // // this struct hold an entry in our Translation RAM region list @@ -1127,6 +1170,7 @@ typedef struct { char sserial_modes[4][8]; int enable_raw; int enable_adc; + int num_capsensors; char *firmware; int skip_fwid; // skip applying the fwid proto message if set } config; @@ -1177,6 +1221,7 @@ typedef struct { hm2_fwid_t fwid; hm2_raw_t *raw; de0_nano_soc_adc_t *nano_soc_adc; + hm2_capsense_t capsense; struct list_head list; } hostmot2_t; @@ -1394,7 +1439,7 @@ int hm2_bspi_write_chan(char* name, int chan, u32 val); int hm2_allocate_bspi_tram(char* name); int hm2_tram_add_bspi_frame(char *name, int chan, u32 **wbuff, u32 **rbuff); int hm2_bspi_setup_chan(char *name, int chan, int cs, int bits, float mhz, - int delay, int cpol, int cpha, int clear, int echo); +int delay, int cpol, int cpha, int clear, int echo); int hm2_bspi_set_read_function(char *name, int (*func)(void *subdata), void *subdata); int hm2_bspi_set_write_function(char *name, int (*func)(void *subdata), void *subdata); @@ -1493,6 +1538,16 @@ int hm2_adc_setup(hostmot2_t *hm2); void de0_nano_soc_adc_read(hostmot2_t *hm2); +// +// capsense sensor functions +// + +int hm2_capsense_parse_md(hostmot2_t *hm2, int md_index); +//int hm2_capsense_setup(hostmot2_t *hm2); +void hm2_capsense_read(hostmot2_t *hm2); +//void hm2_capsense_allocate_pins(hostmot2_t *hm2); + + // write all settings out to the FPGA // used by hm2_register() to initialize and by hm2_pet_watchdog() to recover from io errors and watchdog errors diff --git a/src/hal/drivers/mesa-hostmot2/pins.c b/src/hal/drivers/mesa-hostmot2/pins.c index 36b0ce9d1c..6c2f0c68ff 100755 --- a/src/hal/drivers/mesa-hostmot2/pins.c +++ b/src/hal/drivers/mesa-hostmot2/pins.c @@ -290,6 +290,16 @@ static const char* hm2_get_pin_secondary_name(hm2_pin_t *pin) { case 0x6: return "Timer 4 Pin"; } break; + + case HM2_GTAG_CAPSENSE: + switch (sec_pin) { + case 1: return "Charge Out Pin"; + case 2: return "Sense 0 Pin"; + case 3: return "Sense 1 Pin"; + case 4: return "Sense 2 Pin"; + case 5: return "Sense 3 Pin"; + } + break; case HM2_GTAG_TWIDDLER: // Not Supported Currently if (sec_pin < 0x20){ @@ -612,6 +622,5 @@ void hm2_configure_pins(hostmot2_t *hm2) { // and about half as many I/Os as you'd expect hm2_pins_allocate_all(hm2, HM2_GTAG_MUXED_ENCODER, (hm2->muxed_encoder.num_instances+1)/2); hm2_pins_allocate_all(hm2, HM2_GTAG_HM2DPLL, hm2->dpll.num_instances); + hm2_pins_allocate_all(hm2, HM2_GTAG_CAPSENSE, 1); } - - From 0e87824061e137fd1835ec8ee94ee2387402e43c Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Mon, 31 Jul 2017 02:07:55 +0200 Subject: [PATCH 085/516] updated and fixed Hm2 Cramps config Signed-off-by: Michael Brown --- configs/hm2-soc-stepper/5i25-soc-cramps.ini | 9 +++++---- .../hm2-soc-stepper-5i25-cramps.hal | 16 ++++++++-------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/configs/hm2-soc-stepper/5i25-soc-cramps.ini b/configs/hm2-soc-stepper/5i25-soc-cramps.ini index 55eb2b6f5b..b16752799d 100644 --- a/configs/hm2-soc-stepper/5i25-soc-cramps.ini +++ b/configs/hm2-soc-stepper/5i25-soc-cramps.ini @@ -8,8 +8,9 @@ [HOSTMOT2] DRIVER=hm2_soc_ol BOARD=5i25 -CONFIG="firmware=socfpga/dtbo/hm2reg_uio.dtbo num_encoders=2 num_pwmgens=2 num_stepgens=10" -DEVNAME=hm2-socfpg0 +CONFIG="firmware=socfpga/dtbo/DE0_Nano_SoC_Cramps.dtbo num_pwmgens=6 num_stepgens=8" +#CONFIG="firmware=socfpga/dtbo/DE0_Nano_SoC_Cramps.Cramps_3x24_dpll_irq_adc_cap_spi.dtbo num_pwmgens=2 num_stepgens=8" +DEVNAME=hm2-socfpga0 @@ -24,8 +25,8 @@ MACHINE = HM2-Soc-OL-Stepper # Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others #DEBUG = 0x00000003 -#DEBUG = 0x00000007 -DEBUG = 0 +DEBUG = 0x00000007 +#DEBUG = 0 diff --git a/configs/hm2-soc-stepper/hm2-soc-stepper-5i25-cramps.hal b/configs/hm2-soc-stepper/hm2-soc-stepper-5i25-cramps.hal index ea6a7b3de0..b024bd6b17 100644 --- a/configs/hm2-soc-stepper/hm2-soc-stepper-5i25-cramps.hal +++ b/configs/hm2-soc-stepper/hm2-soc-stepper-5i25-cramps.hal @@ -38,7 +38,7 @@ loadrt tp loadrt hostmot2 # load low-level driver -newinst [HOSTMOT2](DRIVER) [HOSTMOT2]DEVNAME -- config=[HOSTMOT2](CONFIG) +newinst [HOSTMOT2](DRIVER) [HOSTMOT2]DEVNAME -- config=[HOSTMOT2](CONFIG) debug=1 loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES #tp=tp kins=trivkins @@ -77,14 +77,15 @@ sets emcmot.00.enable FALSE net emcmot.00.enable <= axis.0.amp-enable-out net emcmot.00.enable => hm2_[HOSTMOT2](BOARD).0.stepgen.00.enable -# added some signals to control a led (pin 39 or 40 on gpio0 port) -# and control power on a cramps-cape (pin 1 or 2 on gpio0 port) -setp hm2_[HOSTMOT2](BOARD).0.gpio.000.is_output TRUE -setp hm2_[HOSTMOT2](BOARD).0.gpio.000.invert_output TRUE +### added some signals to control a led (pin 39 or 40 on gpio0 port) +# and control power on a cramps-cape (pin 31 and 32 on gpio0 port) +setp hm2_[HOSTMOT2](BOARD).0.gpio.031.is_output TRUE +setp hm2_[HOSTMOT2](BOARD).0.gpio.032.is_output TRUE +setp hm2_[HOSTMOT2](BOARD).0.gpio.032.invert_output TRUE -net emcmot.00.enable => hm2_[HOSTMOT2](BOARD).0.gpio.000.out +net emcmot.00.enable => hm2_[HOSTMOT2](BOARD).0.gpio.031.out -net emcmot.00.enable => hm2_[HOSTMOT2](BOARD).0.led.CR01 +net emcmot.00.enable => hm2_[HOSTMOT2](BOARD).0.gpio.032.out # position command and feedback net emcmot.00.pos-cmd <= axis.0.motor-pos-cmd @@ -215,4 +216,3 @@ net estop-loop iocontrol.0.user-enable-out => iocontrol.0.emc-enable-in # create signals for tool loading loopback net tool-prep-loop iocontrol.0.tool-prepare => iocontrol.0.tool-prepared net tool-change-loop iocontrol.0.tool-change => iocontrol.0.tool-changed - From be495d01a4d2ca56dbaa5ed87cd192614e59ca6b Mon Sep 17 00:00:00 2001 From: bdebruijn Date: Fri, 25 Aug 2017 09:37:28 +0000 Subject: [PATCH 086/516] hal_temp_bbb: fix path for ADC as per solution of @darenschwenke https://groups.google.com/d/msg/machinekit/RrNLUo4ASP4/77ve-fdQBgAJ relates to https://github.com/machinekit/machinekit/issues/1238 --- src/hal/user_comps/hal_temp_bbb.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hal/user_comps/hal_temp_bbb.py b/src/hal/user_comps/hal_temp_bbb.py index 6a392fc8b6..4ef704c201 100755 --- a/src/hal/user_comps/hal_temp_bbb.py +++ b/src/hal/user_comps/hal_temp_bbb.py @@ -151,7 +151,7 @@ def getHalName(pin): def checkAdcInput(pin): - syspath = '/sys/devices/ocp.*/44e0d000.tscadc/tiadc/iio:device0/' + syspath = '/sys/bus/iio/devices/iio:device0/' tempName = glob.glob(syspath + 'in_voltage' + str(pin.pin) + '_raw') pin.filename = tempName[0] try: From 59e91621199d26b68606994c2a420650cedded6d Mon Sep 17 00:00:00 2001 From: Bas de Bruijn Date: Thu, 31 Aug 2017 20:09:49 +0200 Subject: [PATCH 087/516] 5i25-soc-cramps.ini: fix firmware config path fixes #1258 --- configs/hm2-soc-stepper/5i25-soc-cramps.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/hm2-soc-stepper/5i25-soc-cramps.ini b/configs/hm2-soc-stepper/5i25-soc-cramps.ini index b16752799d..85fb1b7985 100644 --- a/configs/hm2-soc-stepper/5i25-soc-cramps.ini +++ b/configs/hm2-soc-stepper/5i25-soc-cramps.ini @@ -8,7 +8,7 @@ [HOSTMOT2] DRIVER=hm2_soc_ol BOARD=5i25 -CONFIG="firmware=socfpga/dtbo/DE0_Nano_SoC_Cramps.dtbo num_pwmgens=6 num_stepgens=8" +CONFIG="firmware=socfpga/dtbo/DE0_Nano_SoC_Cramps.3x24.dtbo num_pwmgens=6 num_stepgens=8" #CONFIG="firmware=socfpga/dtbo/DE0_Nano_SoC_Cramps.Cramps_3x24_dpll_irq_adc_cap_spi.dtbo num_pwmgens=2 num_stepgens=8" DEVNAME=hm2-socfpga0 From ca16aa05b2a7bb0bbc444ada4d5a620d997a5769 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Mon, 4 Sep 2017 16:27:13 +0200 Subject: [PATCH 088/516] pru: mark const parameters This lets users of the library pass const variables to input arguments of functions and not get compiler warnings. --- src/hal/support/pru/prussdrv.c | 8 ++++---- src/hal/support/pru/prussdrv.h | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/hal/support/pru/prussdrv.c b/src/hal/support/pru/prussdrv.c index 56bcf3da30..5c657139f5 100644 --- a/src/hal/support/pru/prussdrv.c +++ b/src/hal/support/pru/prussdrv.c @@ -386,7 +386,7 @@ preg prussdrv_pru_disable(unsigned int prunum) int prussdrv_pru_write_memory(unsigned int pru_ram_id, unsigned int wordoffset, - unsigned int *memarea, + const unsigned int *memarea, unsigned int bytelength) { unsigned int *pruramarea, i, wordlength; @@ -420,7 +420,7 @@ int prussdrv_pru_write_memory(unsigned int pru_ram_id, } -int prussdrv_pruintc_init(tpruss_intc_initdata * prussintc_init_data) +int prussdrv_pruintc_init(const tpruss_intc_initdata * prussintc_init_data) { unsigned int *pruintc_io = (unsigned int *) prussdrv.intc_base; unsigned int i, mask1, mask2; @@ -600,7 +600,7 @@ int prussdrv_map_peripheral_io(unsigned int per_id, void **address) return 0; } -unsigned int prussdrv_get_phys_addr(void *address) +unsigned int prussdrv_get_phys_addr(const void *address) { unsigned int retaddr = 0; if ((address >= prussdrv.base[0].dataram_base) @@ -668,7 +668,7 @@ int prussdrv_exit() return 0; } -int prussdrv_exec_program(int prunum, char *filename, int disabled) +int prussdrv_exec_program(int prunum, const char *filename, int disabled) { FILE *fPtr; unsigned char fileDataArray[PRUSS_MAX_IRAM_SIZE]; diff --git a/src/hal/support/pru/prussdrv.h b/src/hal/support/pru/prussdrv.h index ace9dd4d66..24f7554dae 100644 --- a/src/hal/support/pru/prussdrv.h +++ b/src/hal/support/pru/prussdrv.h @@ -140,10 +140,10 @@ extern "C" { int prussdrv_pru_write_memory(unsigned int pru_ram_id, unsigned int wordoffset, - unsigned int *memarea, + const unsigned int *memarea, unsigned int bytelength); - int prussdrv_pruintc_init(tpruss_intc_initdata * prussintc_init_data); + int prussdrv_pruintc_init(const tpruss_intc_initdata * prussintc_init_data); int prussdrv_map_l3mem(void **address); @@ -153,7 +153,7 @@ extern "C" { int prussdrv_map_peripheral_io(unsigned int per_id, void **address); - unsigned int prussdrv_get_phys_addr(void *address); + unsigned int prussdrv_get_phys_addr(const void *address); void *prussdrv_get_virt_addr(unsigned int phyaddr); @@ -169,7 +169,7 @@ extern "C" { int prussdrv_exit(void); - int prussdrv_exec_program(int prunum, char *filename, int disabled); + int prussdrv_exec_program(int prunum, const char *filename, int disabled); int prussdrv_exec_code(int prunum, const unsigned int *code, int codelen, int disabled); From 081a743850d4858b1c5fb08492b7cd0af28ce2d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Mon, 4 Sep 2017 16:30:25 +0200 Subject: [PATCH 089/516] pru: Fixed duplicate interrupts from PRU to ARM by changing memory accesses to volatile so GCC won't reorder. --- src/hal/support/pru/__prussdrv.h | 6 ++---- src/hal/support/pru/prussdrv.c | 10 +++++----- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/hal/support/pru/__prussdrv.h b/src/hal/support/pru/__prussdrv.h index ff467f2861..4bcafd177f 100644 --- a/src/hal/support/pru/__prussdrv.h +++ b/src/hal/support/pru/__prussdrv.h @@ -239,7 +239,5 @@ typedef struct __prussdrv { extern int __pruss_detect_hw_version(unsigned int *pruss_io); -extern void __prussintc_set_cmr(unsigned int *pruintc_io, unsigned short sysevt, - unsigned short channel); -extern void __prussintc_set_hmr(unsigned int *pruintc_io, unsigned short channel, - unsigned short host); +extern void __prussintc_set_cmr(volatile unsigned int *pruintc_io, unsigned short sysevt, unsigned short channel); +extern void __prussintc_set_hmr(volatile unsigned int *pruintc_io, unsigned short channel, unsigned short host); diff --git a/src/hal/support/pru/prussdrv.c b/src/hal/support/pru/prussdrv.c index 5c657139f5..8b1523fee0 100644 --- a/src/hal/support/pru/prussdrv.c +++ b/src/hal/support/pru/prussdrv.c @@ -80,7 +80,7 @@ int __pruss_detect_hw_version(unsigned int *pruss_io) } } -void __prussintc_set_cmr(unsigned int *pruintc_io, unsigned short sysevt, +void __prussintc_set_cmr(volatile unsigned int *pruintc_io, unsigned short sysevt, unsigned short channel) { pruintc_io[(PRU_INTC_CMR1_REG + (sysevt & ~(0x3))) >> 2] |= @@ -89,7 +89,7 @@ void __prussintc_set_cmr(unsigned int *pruintc_io, unsigned short sysevt, } -void __prussintc_set_hmr(unsigned int *pruintc_io, unsigned short channel, +void __prussintc_set_hmr(volatile unsigned int *pruintc_io, unsigned short channel, unsigned short host) { pruintc_io[(PRU_INTC_HMR1_REG + (channel & ~(0x3))) >> 2] = @@ -422,7 +422,7 @@ int prussdrv_pru_write_memory(unsigned int pru_ram_id, int prussdrv_pruintc_init(const tpruss_intc_initdata * prussintc_init_data) { - unsigned int *pruintc_io = (unsigned int *) prussdrv.intc_base; + volatile unsigned int *pruintc_io = (volatile unsigned int *) prussdrv.intc_base; unsigned int i, mask1, mask2; pruintc_io[PRU_INTC_SIPR1_REG >> 2] = 0xFFFFFFFF; @@ -491,7 +491,7 @@ int prussdrv_pruintc_init(const tpruss_intc_initdata * prussintc_init_data) int prussdrv_pru_send_event(unsigned int eventnum) { - unsigned int *pruintc_io = (unsigned int *) prussdrv.intc_base; + volatile unsigned int *pruintc_io = (volatile unsigned int *) prussdrv.intc_base; if (eventnum < 32) pruintc_io[PRU_INTC_SRSR1_REG >> 2] = 1 << eventnum; else @@ -513,7 +513,7 @@ int prussdrv_pru_wait_event(unsigned int pru_evtout_num, int *event_count) int prussdrv_pru_clear_event(unsigned int eventnum) { - unsigned int *pruintc_io = (unsigned int *) prussdrv.intc_base; + volatile unsigned int *pruintc_io = (volatile unsigned int *) prussdrv.intc_base; if (eventnum < 32) pruintc_io[PRU_INTC_SECR1_REG >> 2] = 1 << eventnum; else From 4ef3191cc7685e72886657be76fd3d007789524e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Mon, 4 Sep 2017 16:46:01 +0200 Subject: [PATCH 090/516] pru: fix interrupt waiting to not retrigger event immediately --- src/hal/support/pru/prussdrv.c | 27 ++++++++++++++++----------- src/hal/support/pru/prussdrv.h | 6 +++--- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/src/hal/support/pru/prussdrv.c b/src/hal/support/pru/prussdrv.c index 8b1523fee0..55d23fd587 100644 --- a/src/hal/support/pru/prussdrv.c +++ b/src/hal/support/pru/prussdrv.c @@ -499,36 +499,41 @@ int prussdrv_pru_send_event(unsigned int eventnum) return 0; } -int prussdrv_pru_wait_event(unsigned int pru_evtout_num, int *event_count) +int prussdrv_pru_wait_event(unsigned int host_interrupt, int *event_count) { int retval; - unsigned int *pruintc_io = (unsigned int *) prussdrv.intc_base; - retval = read(prussdrv.fd[pru_evtout_num], event_count, sizeof(int)); + retval = read(prussdrv.fd[host_interrupt], event_count, sizeof(int)); if (retval < 0) rtapi_print_msg(RTAPI_MSG_ERR, "%s: prussdrv_pru_wait_event: read returned %d - %s\n", modname, retval, strerror(errno)); - pruintc_io[PRU_INTC_HIEISR_REG >> 2] = pru_evtout_num+2; return retval; } -int prussdrv_pru_clear_event(unsigned int eventnum) +int prussdrv_pru_clear_event(unsigned int host_interrupt, unsigned int sysevent) { volatile unsigned int *pruintc_io = (volatile unsigned int *) prussdrv.intc_base; - if (eventnum < 32) - pruintc_io[PRU_INTC_SECR1_REG >> 2] = 1 << eventnum; + if (sysevent < 32) + pruintc_io[PRU_INTC_SECR1_REG >> 2] = 1 << sysevent; else - pruintc_io[PRU_INTC_SECR2_REG >> 2] = 1 << (eventnum - 32); + pruintc_io[PRU_INTC_SECR2_REG >> 2] = 1 << (sysevent - 32); + + // Re-enable the host interrupt. Note that we must do this _after_ the + // system event has been cleared so as to not re-tigger the interrupt line. + // See Section 6.4.9 of Reference manual about HIEISR register. + // The +2 is because the first two host interrupts are reserved for + // PRU0 and PRU1. + pruintc_io[PRU_INTC_HIEISR_REG >> 2] = host_interrupt+2; return 0; } int prussdrv_pru_send_wait_clear_event(unsigned int send_eventnum, - unsigned int pru_evtout_num, + unsigned int host_interrupt, unsigned int ack_eventnum) { int event_count; prussdrv_pru_send_event(send_eventnum); - prussdrv_pru_wait_event(pru_evtout_num, &event_count); - prussdrv_pru_clear_event(ack_eventnum); + prussdrv_pru_wait_event(host_interrupt, &event_count); + prussdrv_pru_clear_event(host_interrupt, ack_eventnum); return 0; } diff --git a/src/hal/support/pru/prussdrv.h b/src/hal/support/pru/prussdrv.h index 24f7554dae..0a38888ab5 100644 --- a/src/hal/support/pru/prussdrv.h +++ b/src/hal/support/pru/prussdrv.h @@ -157,14 +157,14 @@ extern "C" { void *prussdrv_get_virt_addr(unsigned int phyaddr); - int prussdrv_pru_wait_event(unsigned int pru_evtout_num, int *event_count); + int prussdrv_pru_wait_event(unsigned int host_interrupt, int *event_count); int prussdrv_pru_send_event(unsigned int eventnum); - int prussdrv_pru_clear_event(unsigned int eventnum); + int prussdrv_pru_clear_event(unsigned int eventnum, unsigned int sysevent); int prussdrv_pru_send_wait_clear_event(unsigned int send_eventnum, - unsigned int pru_evtout_num, + unsigned int host_interrupt, unsigned int ack_eventnum); int prussdrv_exit(void); From 82ce45d61eff675b41088134ac3ee479732d582f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Tue, 5 Sep 2017 12:19:14 +0000 Subject: [PATCH 091/516] hal_pru_generic: use new clear event --- src/hal/components/hal_pru.c | 2 +- src/hal/components/hal_prudebug.c | 2 +- src/hal/drivers/hal_pru_generic/hal_pru_generic.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/hal/components/hal_pru.c b/src/hal/components/hal_pru.c index c34af8a8c8..d4378fd20c 100644 --- a/src/hal/components/hal_pru.c +++ b/src/hal/components/hal_pru.c @@ -371,7 +371,7 @@ static void *pruevent_thread(void *arg) continue; rtapi_print_msg(RTAPI_MSG_ERR, "%s: PRU event %d received\n", modname, event); - prussdrv_pru_clear_event(pru ? PRU1_ARM_INTERRUPT : PRU0_ARM_INTERRUPT); + prussdrv_pru_clear_event(event, pru ? PRU1_ARM_INTERRUPT : PRU0_ARM_INTERRUPT); } while (1); rtapi_print_msg(RTAPI_MSG_ERR, "%s: pruevent_thread exiting\n", modname); diff --git a/src/hal/components/hal_prudebug.c b/src/hal/components/hal_prudebug.c index fffa4b6a29..d9cbb49498 100644 --- a/src/hal/components/hal_prudebug.c +++ b/src/hal/components/hal_prudebug.c @@ -442,7 +442,7 @@ static void *pruevent_thread(void *arg) *(hal_pru->events) = (unsigned) event_count; rtapi_print_msg(RTAPI_MSG_ERR, "%s: PRU event %d received count=%d\n", modname, event, event_count); - prussdrv_pru_clear_event(*(hal_pru->prunum) ? PRU1_ARM_INTERRUPT : PRU0_ARM_INTERRUPT); + prussdrv_pru_clear_event(event, *(hal_pru->prunum) ? PRU1_ARM_INTERRUPT : PRU0_ARM_INTERRUPT); } while (1); rtapi_print_msg(RTAPI_MSG_ERR, "%s: pruevent_thread exiting\n", modname); diff --git a/src/hal/drivers/hal_pru_generic/hal_pru_generic.c b/src/hal/drivers/hal_pru_generic/hal_pru_generic.c index a3c4468824..30e4747ebc 100644 --- a/src/hal/drivers/hal_pru_generic/hal_pru_generic.c +++ b/src/hal/drivers/hal_pru_generic/hal_pru_generic.c @@ -512,7 +512,7 @@ static void *pruevent_thread(void *arg) if (prussdrv_pru_wait_event(event, &event_count) < 0) continue; HPG_ERR("PRU event %d received\n",event); - prussdrv_pru_clear_event(pru ? PRU1_ARM_INTERRUPT : PRU0_ARM_INTERRUPT); + prussdrv_pru_clear_event(event, pru ? PRU1_ARM_INTERRUPT : PRU0_ARM_INTERRUPT); } while (1); HPG_ERR("pruevent_thread exiting\n"); return NULL; // silence compiler warning From 5f4ee66c9ce2e7c57d3fef6a30278e6b3d9bcc25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Thu, 7 Sep 2017 12:42:23 +0200 Subject: [PATCH 092/516] Squashed 'src/machinetalk/proto/' changes from f4481f561..a7b0855d4 a7b0855d4 Merge pull request #83 from machinekoder/mklauncher-set 9eaeba390 config: add support importance and set command de29da90f Merge pull request #82 from machinekoder/pypi-update 6ce06ff60 python: updating pypi version number git-subtree-dir: src/machinetalk/proto git-subtree-split: a7b0855d4f8050acac0b7ee21c13268c39227b7f --- setup.py | 2 +- src/machinetalk/protobuf/config.proto | 1 + src/machinetalk/protobuf/types.proto | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 4a14c4a9b9..42b7081274 100644 --- a/setup.py +++ b/setup.py @@ -11,7 +11,7 @@ PROJECT = 'machinetalk' PROJECT_NAME = '%s-protobuf' % PROJECT DESCRIPTION = "Protobuf Python modules for %s" % PROJECT -VERSION = "v1.0.6" +VERSION = "v1.0.7" AUTHOR = "Alexander Roessler" AUTHOR_EMAIL = "alex@machinekoder.com" PROJECT_URL = 'https://github.com/machinekit/%s' % PROJECT_NAME diff --git a/src/machinetalk/protobuf/config.proto b/src/machinetalk/protobuf/config.proto index 7d6447dfc5..e09871d4cd 100644 --- a/src/machinetalk/protobuf/config.proto +++ b/src/machinetalk/protobuf/config.proto @@ -76,4 +76,5 @@ message Launcher { optional int32 returncode = 11; // return code of the command optional string workdir = 12; // working dir of the command optional uint32 priority = 13; // priority for sorting, smaller means lower priority + optional uint32 importance = 14; // importance set by the user, smaller means less important } diff --git a/src/machinetalk/protobuf/types.proto b/src/machinetalk/protobuf/types.proto index ed1202cd86..38aa384086 100644 --- a/src/machinetalk/protobuf/types.proto +++ b/src/machinetalk/protobuf/types.proto @@ -696,6 +696,7 @@ enum ContainerType { MT_LAUNCHER_WRITE_STDIN = 12613; MT_LAUNCHER_CALL = 12614; MT_LAUNCHER_SHUTDOWN = 12615; + MT_LAUNCHER_SET = 12616; } enum OriginIndex { From 03cc1467be14491717380cdac2a3d4e9a8945142 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Mon, 4 Sep 2017 12:02:11 +0200 Subject: [PATCH 093/516] configserver: cleanup code --- .../config-service/configserver.py | 54 +++++++++---------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/src/machinetalk/config-service/configserver.py b/src/machinetalk/config-service/configserver.py index 34b7a1525e..d639389959 100755 --- a/src/machinetalk/config-service/configserver.py +++ b/src/machinetalk/config-service/configserver.py @@ -1,7 +1,7 @@ #!/usr/bin/python import os import sys -from stat import * +from stat import S_ISREG, S_ISDIR import zmq import threading import signal @@ -14,13 +14,13 @@ from google.protobuf.message import DecodeError from machinetalk.protobuf.message_pb2 import Container -from machinetalk.protobuf.config_pb2 import * -from machinetalk.protobuf.types_pb2 import * +from machinetalk.protobuf.config_pb2 import CLEARTEXT, QT5_QML, GLADEVCP, JAVASCRIPT +import machinetalk.protobuf.types_pb2 as pb -class ConfigServer: +class ConfigServer(object): def __init__(self, context, appDirs=None, topdir=".", - host='', svcUuid=None, debug=False, name=None, + host='', svcUuid=None, debug=False, name=None, hostInName=True, loopback=False): if appDirs is None: appDirs = [] @@ -72,13 +72,13 @@ def __init__(self, context, appDirs=None, topdir=".", if hostInName: self.name += ' on ' + self.host self.service = service.Service(type='config', - svcUuid=svcUuid, - dsn=self.dsname, - port=self.port, - host=self.host, - name=self.name, - loopback=self.loopback, - debug=self.debug) + svcUuid=svcUuid, + dsn=self.dsname, + port=self.port, + host=self.host, + name=self.name, + loopback=self.loopback, + debug=self.debug) self.publish() @@ -101,7 +101,7 @@ def publish(self): try: self.service.publish() except Exception as e: - print (('cannot register DNS service' + str(e))) + print(('cannot register DNS service' + str(e))) sys.exit(1) def unpublish(self): @@ -115,8 +115,10 @@ def typeToPb(self, type): return QT5_QML elif type == 'GLADEVCP': return GLADEVCP - else: + elif type == 'JAVASCRIPT': return JAVASCRIPT + else: + raise TypeError('Unsupported type %s' % type) def send_msg(self, dest, type): self.tx.type = type @@ -132,7 +134,7 @@ def list_apps(self, origin): app.name = name app.description = self.cfg.get(name, 'description') app.type = self.typeToPb(self.cfg.get(name, 'type')) - self.send_msg(origin, MT_DESCRIBE_APPLICATION) + self.send_msg(origin, pb.MT_DESCRIBE_APPLICATION) def add_files(self, basePath, path, app): if self.debug: @@ -163,7 +165,7 @@ def retrieve_app(self, origin, name): self.add_files(self.cfg.get(name, 'files'), self.cfg.get(name, 'files'), app) - self.send_msg(origin, MT_APPLICATION_DETAIL) + self.send_msg(origin, pb.MT_APPLICATION_DETAIL) def process(self, s): frames = s.recv_multipart() @@ -178,25 +180,23 @@ def process(self, s): except DecodeError as e: note = 'Protobuf Decode Error: ' + str(e) self.tx.note.append(note) - self.send_msg(identity, MT_ERROR) + self.send_msg(identity, pb.MT_ERROR) return - if self.rx.type == MT_LIST_APPLICATIONS: + if self.rx.type == pb.MT_LIST_APPLICATIONS: self.list_apps(identity) - return - if self.rx.type == MT_RETRIEVE_APPLICATION: + elif self.rx.type == pb.MT_RETRIEVE_APPLICATION: a = self.rx.app[0] self.retrieve_app(identity, a.name) - return - if self.rx.type == MT_PING: - self.send_msg(identity, MT_PING_ACKNOWLEDGE) - return + elif self.rx.type == pb.MT_PING: + self.send_msg(identity, pb.MT_PING_ACKNOWLEDGE) - note = "unsupported request type %d" % (self.rx.type) - self.tx.note.append(note) - self.send_msg(identity, MT_ERROR) + else: + note = "unsupported request type %d" % (self.rx.type) + self.tx.note.append(note) + self.send_msg(identity, pb.MT_ERROR) shutdown = False From 1739be8f7744d239f31d9dd6ea46e596fd818374 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Mon, 4 Sep 2017 12:19:14 +0200 Subject: [PATCH 094/516] mklauncher: code cleanup --- src/machinetalk/mklauncher/mklauncher.py | 78 +++++++++++++----------- 1 file changed, 41 insertions(+), 37 deletions(-) diff --git a/src/machinetalk/mklauncher/mklauncher.py b/src/machinetalk/mklauncher/mklauncher.py index 4d0306e53a..0cf0625704 100644 --- a/src/machinetalk/mklauncher/mklauncher.py +++ b/src/machinetalk/mklauncher/mklauncher.py @@ -1,4 +1,5 @@ -#!/usr/bin/python +#!/usr/bin/env python + import os import sys import argparse @@ -19,8 +20,8 @@ from google.protobuf.message import DecodeError from machinetalk.protobuf.message_pb2 import Container -from machinetalk.protobuf.config_pb2 import * -from machinetalk.protobuf.types_pb2 import * +from machinetalk.protobuf.config_pb2 import Launcher, MachineInfo, File, StdoutLine, CLEARTEXT +import machinetalk.protobuf.types_pb2 as pb from machinetalk.protobuf.object_pb2 import ProtocolParameters if sys.version_info >= (3, 0): @@ -33,7 +34,7 @@ def printError(msg): sys.stderr.write('ERROR: ' + msg + '\n') -class Mklauncher: +class Mklauncher(object): def __init__(self, context, launcherDirs=None, topDir='.', host='', svcUuid=None, debug=False, name=None, hostInName=True, pollInterval=0.5, pingInterval=2.0, loopback=False): @@ -156,21 +157,23 @@ def __init__(self, context, launcherDirs=None, topDir='.', self.name = 'Machinekit Launcher' if hostInName: self.name += ' on ' + self.host - self.launcherService = service.Service(type='launcher', - svcUuid=svcUuid, - dsn=self.launcherDsname, - port=self.launcherPort, - host=self.host, - name=self.name, - loopback=self.loopback, - debug=self.debug) - self.commandService = service.Service(type='launchercmd', - svcUuid=svcUuid, - dsn=self.commandDsname, - port=self.commandPort, - host=self.host, - loopback=self.loopback, - debug=self.debug) + self.launcherService = \ + service.Service(type='launcher', + svcUuid=svcUuid, + dsn=self.launcherDsname, + port=self.launcherPort, + host=self.host, + name=self.name, + loopback=self.loopback, + debug=self.debug) + self.commandService = \ + service.Service(type='launchercmd', + svcUuid=svcUuid, + dsn=self.commandDsname, + port=self.commandPort, + host=self.host, + loopback=self.loopback, + debug=self.debug) self.publish() @@ -200,7 +203,7 @@ def publish(self): self.launcherService.publish() self.commandService.publish() except Exception as e: - print (('cannot register DNS service' + str(e))) + print(('cannot register DNS service' + str(e))) sys.exit(1) def unpublish(self): @@ -269,10 +272,10 @@ def update_launcher(self): if self.launcherFullUpdate: self.add_pparams() self.txContainer.CopyFrom(self.container) - self.send_launcher_msg(MT_LAUNCHER_FULL_UPDATE) + self.send_launcher_msg(pb.MT_LAUNCHER_FULL_UPDATE) self.launcherFullUpdate = False elif modified: - self.send_launcher_msg(MT_LAUNCHER_INCREMENTAL_UPDATE) + self.send_launcher_msg(pb.MT_LAUNCHER_INCREMENTAL_UPDATE) def send_launcher_msg(self, msgType): if self.debug: @@ -305,7 +308,7 @@ def poll(self): return def ping_launcher(self): - self.send_launcher_msg(MT_PING) + self.send_launcher_msg(pb.MT_PING) def process_launcher(self, s): try: @@ -378,11 +381,11 @@ def shutdown_system(self): def send_command_wrong_params(self, identity, note='wrong parameters'): self.txCommand.note.append(note) - self.send_command_msg(identity, MT_ERROR) + self.send_command_msg(identity, pb.MT_ERROR) def send_command_wrong_index(self, identity): self.txCommand.note.append('wrong index') - self.send_command_msg(identity, MT_ERROR) + self.send_command_msg(identity, pb.MT_ERROR) def process_command(self, s): frames = s.recv_multipart() @@ -399,10 +402,10 @@ def process_command(self, s): self.send_command_wrong_params(identity, note=note) return - if self.rx.type == MT_PING: - self.send_command_msg(identity, MT_PING_ACKNOWLEDGE) + if self.rx.type == pb.MT_PING: + self.send_command_msg(identity, pb.MT_PING_ACKNOWLEDGE) - elif self.rx.type == MT_LAUNCHER_START: + elif self.rx.type == pb.MT_LAUNCHER_START: if self.rx.HasField('index'): index = self.rx.index if index >= len(self.container.launcher): @@ -411,11 +414,11 @@ def process_command(self, s): success, note = self.start_process(index) if not success: self.txCommand.note.append(note) - self.send_command_msg(identity, MT_ERROR) + self.send_command_msg(identity, pb.MT_ERROR) else: self.send_command_wrong_params(identity) - elif self.rx.type == MT_LAUNCHER_TERMINATE: + elif self.rx.type == pb.MT_LAUNCHER_TERMINATE: if self.rx.HasField('index'): index = self.rx.index if index >= len(self.container.launcher) \ @@ -424,7 +427,7 @@ def process_command(self, s): else: self.terminate_process(index) - elif self.rx.type == MT_LAUNCHER_KILL: + elif self.rx.type == pb.MT_LAUNCHER_KILL: if self.rx.HasField('index'): index = self.rx.index if index >= len(self.container.launcher) \ @@ -433,7 +436,7 @@ def process_command(self, s): else: self.kill_process(index) - elif self.rx.type == MT_LAUNCHER_WRITE_STDIN: + elif self.rx.type == pb.MT_LAUNCHER_WRITE_STDIN: if self.rx.HasField('index') \ and self.rx.HasField('name'): # temporarily using the name field index = self.rx.index @@ -444,18 +447,18 @@ def process_command(self, s): else: self.write_stdin_process(index, name) - elif self.rx.type == MT_LAUNCHER_CALL: + elif self.rx.type == pb.MT_LAUNCHER_CALL: self.txCommand.note.append("process call not allowed") - self.send_command_msg(identity, MT_ERROR) + self.send_command_msg(identity, pb.MT_ERROR) - elif self.rx.type == MT_LAUNCHER_SHUTDOWN: + elif self.rx.type == pb.MT_LAUNCHER_SHUTDOWN: if not self.shutdown_system(): self.txCommand.note.append("cannot shutdown system: DBus error") - self.send_command_msg(identity, MT_ERROR) + self.send_command_msg(identity, pb.MT_ERROR) else: self.txCommand.note.append("unknown command") - self.send_command_msg(identity, MT_ERROR) + self.send_command_msg(identity, pb.MT_ERROR) shutdown = False @@ -540,5 +543,6 @@ def main(): print('threads stopped') sys.exit(0) + if __name__ == "__main__": main() From fd1415f9eb55a7a88ebde91b3e49c589ce0d9506 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Wed, 6 Sep 2017 12:07:32 +0200 Subject: [PATCH 095/516] mklauncher: remove unused topDir --- src/machinetalk/mklauncher/mklauncher.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/machinetalk/mklauncher/mklauncher.py b/src/machinetalk/mklauncher/mklauncher.py index 0cf0625704..ef262b2bab 100644 --- a/src/machinetalk/mklauncher/mklauncher.py +++ b/src/machinetalk/mklauncher/mklauncher.py @@ -35,8 +35,8 @@ def printError(msg): class Mklauncher(object): - def __init__(self, context, launcherDirs=None, topDir='.', - host='', svcUuid=None, debug=False, name=None, hostInName=True, + def __init__(self, context, launcherDirs=None, host='', + svcUuid=None, debug=False, name=None, hostInName=True, pollInterval=0.5, pingInterval=2.0, loopback=False): if launcherDirs is None: launcherDirs = [] @@ -520,7 +520,6 @@ def main(): hostname = '%(fqdn)s' # replaced by service announcement mklauncher = Mklauncher(context, svcUuid=uuid, - topDir='.', host=hostname, launcherDirs=args.dirs, name=args.name, From e7854a8a89c865a4ca6d6e9fcbe5e1f62e2e5343 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Wed, 6 Sep 2017 12:08:04 +0200 Subject: [PATCH 096/516] mklauncher: refactor socket and service creation --- src/machinetalk/mklauncher/mklauncher.py | 78 +++++++++++++----------- 1 file changed, 42 insertions(+), 36 deletions(-) diff --git a/src/machinetalk/mklauncher/mklauncher.py b/src/machinetalk/mklauncher/mklauncher.py index ef262b2bab..a9e2dfa4c2 100644 --- a/src/machinetalk/mklauncher/mklauncher.py +++ b/src/machinetalk/mklauncher/mklauncher.py @@ -51,10 +51,14 @@ def __init__(self, context, launcherDirs=None, host='', self.pollInterval = pollInterval self.pingInterval = pingInterval + # published container self.container = Container() self.txContainer = Container() self.launcherSubscribed = False self.launcherFullUpdate = False + # command rx and tx containers for reuse + self.rx = Container() + self.tx = Container() self.processes = {} # for processes mapped to launcher self.terminating = set() # set of terminating processes @@ -134,9 +138,17 @@ def __init__(self, context, launcherDirs=None, host='', self.pingRatio = -1 self.pingCount = 0 - self.rx = Container() - self.txCommand = Container() - self.topDir = topDir + self._create_sockets(context) + self._create_services(hostInName, svcUuid) + self._publish_services() + self._start_threads() + + def _start_threads(self): + threading.Thread(target=self.process_sockets).start() + threading.Thread(target=self.poll).start() + self.running = True + + def _create_sockets(self, context): self.context = context self.baseUri = "tcp://" if self.loopback: @@ -153,6 +165,22 @@ def __init__(self, context, launcherDirs=None, host='', self.commandDsname = self.commandSocket.get_string(zmq.LAST_ENDPOINT, encoding='utf-8') self.commandDsname = self.commandDsname.replace('0.0.0.0', self.host) + def process_sockets(self): + poll = zmq.Poller() + poll.register(self.launcherSocket, zmq.POLLIN) + poll.register(self.commandSocket, zmq.POLLIN) + + while not self.shutdown.is_set(): + s = dict(poll.poll(1000)) + if self.launcherSocket in s and s[self.launcherSocket] == zmq.POLLIN: + self.process_launcher(self.launcherSocket) + if self.commandSocket in s and s[self.commandSocket] == zmq.POLLIN: + self.process_command(self.commandSocket) + + self._unpublish_services() + self.running = False + + def _create_services(self, hostInName, svcUuid): if self.name is None: self.name = 'Machinekit Launcher' if hostInName: @@ -175,29 +203,7 @@ def __init__(self, context, launcherDirs=None, host='', loopback=self.loopback, debug=self.debug) - self.publish() - - threading.Thread(target=self.process_sockets).start() - threading.Thread(target=self.poll).start() - self.running = True - - def process_sockets(self): - poll = zmq.Poller() - poll.register(self.launcherSocket, zmq.POLLIN) - poll.register(self.commandSocket, zmq.POLLIN) - - while not self.shutdown.is_set(): - s = dict(poll.poll(1000)) - if self.launcherSocket in s and s[self.launcherSocket] == zmq.POLLIN: - self.process_launcher(self.launcherSocket) - if self.commandSocket in s and s[self.commandSocket] == zmq.POLLIN: - self.process_command(self.commandSocket) - - self.unpublish() - self.running = False - return - - def publish(self): + def _publish_services(self): # Zeroconf try: self.launcherService.publish() @@ -206,7 +212,7 @@ def publish(self): print(('cannot register DNS service' + str(e))) sys.exit(1) - def unpublish(self): + def _unpublish_services(self): self.launcherService.unpublish() self.commandService.unpublish() @@ -286,10 +292,10 @@ def send_launcher_msg(self, msgType): self.launcherSocket.send_multipart(['launcher', txBuffer], zmq.NOBLOCK) def send_command_msg(self, identity, msgType): - self.txCommand.type = msgType - txBuffer = self.txCommand.SerializeToString() + self.tx.type = msgType + txBuffer = self.tx.SerializeToString() self.commandSocket.send_multipart(identity + [txBuffer], zmq.NOBLOCK) - self.txCommand.Clear() + self.tx.Clear() def poll(self): while not self.shutdown.is_set(): @@ -380,11 +386,11 @@ def shutdown_system(self): return False def send_command_wrong_params(self, identity, note='wrong parameters'): - self.txCommand.note.append(note) + self.tx.note.append(note) self.send_command_msg(identity, pb.MT_ERROR) def send_command_wrong_index(self, identity): - self.txCommand.note.append('wrong index') + self.tx.note.append('wrong index') self.send_command_msg(identity, pb.MT_ERROR) def process_command(self, s): @@ -413,7 +419,7 @@ def process_command(self, s): else: success, note = self.start_process(index) if not success: - self.txCommand.note.append(note) + self.tx.note.append(note) self.send_command_msg(identity, pb.MT_ERROR) else: self.send_command_wrong_params(identity) @@ -448,16 +454,16 @@ def process_command(self, s): self.write_stdin_process(index, name) elif self.rx.type == pb.MT_LAUNCHER_CALL: - self.txCommand.note.append("process call not allowed") + self.tx.note.append("process call not allowed") self.send_command_msg(identity, pb.MT_ERROR) elif self.rx.type == pb.MT_LAUNCHER_SHUTDOWN: if not self.shutdown_system(): - self.txCommand.note.append("cannot shutdown system: DBus error") + self.tx.note.append("cannot shutdown system: DBus error") self.send_command_msg(identity, pb.MT_ERROR) else: - self.txCommand.note.append("unknown command") + self.tx.note.append("unknown command") self.send_command_msg(identity, pb.MT_ERROR) From b4997101f3aa7a31f6c997b5c8e7d1d504e50c6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Wed, 6 Sep 2017 12:17:04 +0200 Subject: [PATCH 097/516] mklauncher: move launcher.ini searching into function --- src/machinetalk/mklauncher/mklauncher.py | 124 ++++++++++++----------- 1 file changed, 64 insertions(+), 60 deletions(-) diff --git a/src/machinetalk/mklauncher/mklauncher.py b/src/machinetalk/mklauncher/mklauncher.py index a9e2dfa4c2..f3100971af 100644 --- a/src/machinetalk/mklauncher/mklauncher.py +++ b/src/machinetalk/mklauncher/mklauncher.py @@ -63,66 +63,7 @@ def __init__(self, context, launcherDirs=None, host='', self.processes = {} # for processes mapped to launcher self.terminating = set() # set of terminating processes - # Create launcher configuration structure - iniName = 'launcher.ini' - configDefaults = { - 'name': 'Launcher', - 'command': '', - 'description': '', - 'image': '', - 'shell': 'false', - 'workdir': '.', - 'type': '', - 'manufacturer': '', - 'model': '', - 'variant': '', - 'priority': '0' - } - - launchers = [] - for rootDir in self.launcherDirs: - for root, _, files in os.walk(rootDir): - if iniName in files: - iniFile = os.path.join(root, iniName) - cfg = configparser.ConfigParser(configDefaults) - cfg.read(iniFile) - for section in cfg.sections(): - launcher = Launcher() - # descriptive data - launcher.name = cfg.get(section, 'name') - launcher.description = cfg.get(section, 'description') - info = MachineInfo() - info.type = cfg.get(section, 'type') - info.manufacturer = cfg.get(section, 'manufacturer') - info.model = cfg.get(section, 'model') - info.variant = cfg.get(section, 'variant') - launcher.priority = cfg.getint(section, 'priority') - launcher.info.MergeFrom(info) - # command data - launcher.command = cfg.get(section, 'command') - launcher.shell = cfg.getboolean(section, 'shell') - workdir = cfg.get(section, 'workdir') - if not os.path.isabs(workdir): - workdir = os.path.join(root, workdir) - launcher.workdir = os.path.normpath(workdir) - launcher.returncode = 0 - launcher.running = False - launcher.terminating = False - # storing the image file - imageFile = cfg.get(section, 'image') - if imageFile is not '': - if not os.path.isabs(imageFile): - imageFile = os.path.join(root, imageFile) - fileBuffer = open(imageFile, 'rb').read() - image = File() - image.name = os.path.basename(imageFile) - image.encoding = CLEARTEXT - image.blob = fileBuffer - launcher.image.MergeFrom(image) - launchers.append(launcher) - - # sort using the priority attribute before distribution - launchers = sorted(launchers, key=attrgetter('priority'), reverse=True) + launchers = self._search_launchers(self.launcherDirs) for index, launcher in enumerate(launchers): launcher.index = index self.container.launcher.add().CopyFrom(launcher) @@ -143,6 +84,69 @@ def __init__(self, context, launcherDirs=None, host='', self._publish_services() self._start_threads() + def _search_launchers(self, directories): + INI_NAME = 'launcher.ini' + CONFIG_DEFAULTS = { + 'name': 'Launcher', + 'command': '', + 'description': '', + 'image': '', + 'shell': 'false', + 'workdir': '.', + 'type': '', + 'manufacturer': '', + 'model': '', + 'variant': '', + 'priority': '0' + } + + launchers = [] + for rootDir in directories: + for root, _, files in os.walk(rootDir): + if INI_NAME not in files: + continue + + iniFile = os.path.join(root, INI_NAME) + cfg = configparser.ConfigParser(CONFIG_DEFAULTS) + cfg.read(iniFile) + for section in cfg.sections(): + launcher = Launcher() + # descriptive data + launcher.name = cfg.get(section, 'name') + launcher.description = cfg.get(section, 'description') + info = MachineInfo() + info.type = cfg.get(section, 'type') + info.manufacturer = cfg.get(section, 'manufacturer') + info.model = cfg.get(section, 'model') + info.variant = cfg.get(section, 'variant') + launcher.priority = cfg.getint(section, 'priority') + launcher.info.MergeFrom(info) + # command data + launcher.command = cfg.get(section, 'command') + launcher.shell = cfg.getboolean(section, 'shell') + workdir = cfg.get(section, 'workdir') + if not os.path.isabs(workdir): + workdir = os.path.join(root, workdir) + launcher.workdir = os.path.normpath(workdir) + launcher.returncode = 0 + launcher.running = False + launcher.terminating = False + # storing the image file + imageFile = cfg.get(section, 'image') + if imageFile is not '': + if not os.path.isabs(imageFile): + imageFile = os.path.join(root, imageFile) + fileBuffer = open(imageFile, 'rb').read() + image = File() + image.name = os.path.basename(imageFile) + image.encoding = CLEARTEXT + image.blob = fileBuffer + launcher.image.MergeFrom(image) + launchers.append(launcher) + + # sort using the priority attribute before distribution + launchers = sorted(launchers, key=attrgetter('priority'), reverse=True) + def _start_threads(self): threading.Thread(target=self.process_sockets).start() threading.Thread(target=self.poll).start() From 0583446fdbed47db8708d0c4e3041d28554fbf63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Wed, 6 Sep 2017 12:21:32 +0200 Subject: [PATCH 098/516] mklauncher: move starting to public function --- src/machinetalk/mklauncher/mklauncher.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/machinetalk/mklauncher/mklauncher.py b/src/machinetalk/mklauncher/mklauncher.py index f3100971af..652f5f4743 100644 --- a/src/machinetalk/mklauncher/mklauncher.py +++ b/src/machinetalk/mklauncher/mklauncher.py @@ -81,8 +81,6 @@ def __init__(self, context, launcherDirs=None, host='', self._create_sockets(context) self._create_services(hostInName, svcUuid) - self._publish_services() - self._start_threads() def _search_launchers(self, directories): INI_NAME = 'launcher.ini' @@ -220,6 +218,10 @@ def _unpublish_services(self): self.launcherService.unpublish() self.commandService.unpublish() + def start(self): + self._publish_services() + self._start_threads() + def stop(self): self.terminate_processes() self.shutdown.set() @@ -536,6 +538,7 @@ def main(): hostInName=bool(args.suppress_ip), loopback=(not remote), debug=debug) + mklauncher.start() while mklauncher.running and not check_exit(): time.sleep(1) From e054b7ee3bb4cf347ea3e5192570d93c7a76ab1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Wed, 6 Sep 2017 12:31:04 +0200 Subject: [PATCH 099/516] mklauncher: refactor function names --- src/machinetalk/mklauncher/mklauncher.py | 107 +++++++++++------------ 1 file changed, 52 insertions(+), 55 deletions(-) diff --git a/src/machinetalk/mklauncher/mklauncher.py b/src/machinetalk/mklauncher/mklauncher.py index 652f5f4743..5bf1b8bdab 100644 --- a/src/machinetalk/mklauncher/mklauncher.py +++ b/src/machinetalk/mklauncher/mklauncher.py @@ -82,6 +82,14 @@ def __init__(self, context, launcherDirs=None, host='', self._create_sockets(context) self._create_services(hostInName, svcUuid) + def start(self): + self._publish_services() + self._start_threads() + + def stop(self): + self._terminate_processes() + self.shutdown.set() + def _search_launchers(self, directories): INI_NAME = 'launcher.ini' CONFIG_DEFAULTS = { @@ -146,8 +154,8 @@ def _search_launchers(self, directories): launchers = sorted(launchers, key=attrgetter('priority'), reverse=True) def _start_threads(self): - threading.Thread(target=self.process_sockets).start() - threading.Thread(target=self.poll).start() + threading.Thread(target=self._process_sockets).start() + threading.Thread(target=self._poll).start() self.running = True def _create_sockets(self, context): @@ -167,7 +175,7 @@ def _create_sockets(self, context): self.commandDsname = self.commandSocket.get_string(zmq.LAST_ENDPOINT, encoding='utf-8') self.commandDsname = self.commandDsname.replace('0.0.0.0', self.host) - def process_sockets(self): + def _process_sockets(self): poll = zmq.Poller() poll.register(self.launcherSocket, zmq.POLLIN) poll.register(self.commandSocket, zmq.POLLIN) @@ -175,9 +183,9 @@ def process_sockets(self): while not self.shutdown.is_set(): s = dict(poll.poll(1000)) if self.launcherSocket in s and s[self.launcherSocket] == zmq.POLLIN: - self.process_launcher(self.launcherSocket) + self._process_launcher_socket(self.launcherSocket) if self.commandSocket in s and s[self.commandSocket] == zmq.POLLIN: - self.process_command(self.commandSocket) + self._process_command_socket(self.commandSocket) self._unpublish_services() self.running = False @@ -218,20 +226,12 @@ def _unpublish_services(self): self.launcherService.unpublish() self.commandService.unpublish() - def start(self): - self._publish_services() - self._start_threads() - - def stop(self): - self.terminate_processes() - self.shutdown.set() - - def add_pparams(self): + def _add_pparams_to_message(self): parameters = ProtocolParameters() parameters.keepalive_timer = int(self.pingInterval * 1000.0) self.txContainer.pparams.MergeFrom(parameters) - def update_launcher(self): + def _update_launcher_status(self): modified = False for launcher in self.container.launcher: index = launcher.index @@ -282,14 +282,14 @@ def update_launcher(self): self.txContainer.launcher.add().MergeFrom(txLauncher) if self.launcherFullUpdate: - self.add_pparams() + self._add_pparams_to_message() self.txContainer.CopyFrom(self.container) - self.send_launcher_msg(pb.MT_LAUNCHER_FULL_UPDATE) + self._send_launcher_message(pb.MT_LAUNCHER_FULL_UPDATE) self.launcherFullUpdate = False elif modified: - self.send_launcher_msg(pb.MT_LAUNCHER_INCREMENTAL_UPDATE) + self._send_launcher_message(pb.MT_LAUNCHER_INCREMENTAL_UPDATE) - def send_launcher_msg(self, msgType): + def _send_launcher_message(self, msgType): if self.debug: print('sending launcher message') self.txContainer.type = msgType @@ -297,18 +297,18 @@ def send_launcher_msg(self, msgType): self.txContainer.Clear() self.launcherSocket.send_multipart(['launcher', txBuffer], zmq.NOBLOCK) - def send_command_msg(self, identity, msgType): + def _send_command_message(self, identity, msgType): self.tx.type = msgType txBuffer = self.tx.SerializeToString() self.commandSocket.send_multipart(identity + [txBuffer], zmq.NOBLOCK) self.tx.Clear() - def poll(self): + def _poll(self): while not self.shutdown.is_set(): if self.launcherSubscribed: - self.update_launcher() + self._update_launcher_status() if (self.pingCount == self.pingRatio): - self.ping_launcher() + self._send_launcher_message(pb.MT_PING) if (self.pingCount == self.pingRatio): self.pingCount = 0 @@ -319,10 +319,7 @@ def poll(self): self.running = False return - def ping_launcher(self): - self.send_launcher_msg(pb.MT_PING) - - def process_launcher(self, s): + def _process_launcher_socket(self, s): try: rc = s.recv() subscription = rc[1:] @@ -338,7 +335,7 @@ def process_launcher(self, s): except zmq.ZMQError as e: printError('ZMQ error: ' + str(e)) - def start_process(self, index): + def _start_process(self, index): launcher = self.container.launcher[index] workdir = launcher.workdir shell = launcher.shell @@ -362,24 +359,24 @@ def start_process(self, index): self.processes[index] = process return True, '' - def terminate_process(self, index): + def _terminate_process(self, index): pid = self.processes[index].pid os.killpg(pid, signal.SIGTERM) self.terminating.add(index) - def kill_process(self, index): + def _kill_process(self, index): pid = self.processes[index].pid os.killpg(pid, signal.SIGKILL) self.terminating.add(index) - def terminate_processes(self): + def _terminate_processes(self): for index in self.processes.keys(): - self.terminate_process(index) + self._terminate_process(index) - def write_stdin_process(self, index, data): + def _write_to_stdin_of_process(self, index, data): self.processes[index].stdin.write(data) - def shutdown_system(self): + def _shutdown_system(self): try: systemBus = dbus.SystemBus() ckService = systemBus.get_object('org.freedesktop.ConsoleKit', @@ -391,15 +388,15 @@ def shutdown_system(self): except: return False - def send_command_wrong_params(self, identity, note='wrong parameters'): + def _send_command_wrong_params(self, identity, note='wrong parameters'): self.tx.note.append(note) - self.send_command_msg(identity, pb.MT_ERROR) + self._send_command_message(identity, pb.MT_ERROR) - def send_command_wrong_index(self, identity): + def _send_command_wrong_index(self, identity): self.tx.note.append('wrong index') - self.send_command_msg(identity, pb.MT_ERROR) + self._send_command_message(identity, pb.MT_ERROR) - def process_command(self, s): + def _process_command_socket(self, s): frames = s.recv_multipart() identity = frames[:-1] # multipart id message = frames[-1] # last frame @@ -411,42 +408,42 @@ def process_command(self, s): self.rx.ParseFromString(message) except DecodeError as e: note = 'Protobuf Decode Error: ' + str(e) - self.send_command_wrong_params(identity, note=note) + self._send_command_wrong_params(identity, note=note) return if self.rx.type == pb.MT_PING: - self.send_command_msg(identity, pb.MT_PING_ACKNOWLEDGE) + self._send_command_message(identity, pb.MT_PING_ACKNOWLEDGE) elif self.rx.type == pb.MT_LAUNCHER_START: if self.rx.HasField('index'): index = self.rx.index if index >= len(self.container.launcher): - self.send_command_wrong_index(identity) + self._send_command_wrong_index(identity) else: - success, note = self.start_process(index) + success, note = self._start_process(index) if not success: self.tx.note.append(note) - self.send_command_msg(identity, pb.MT_ERROR) + self._send_command_message(identity, pb.MT_ERROR) else: - self.send_command_wrong_params(identity) + self._send_command_wrong_params(identity) elif self.rx.type == pb.MT_LAUNCHER_TERMINATE: if self.rx.HasField('index'): index = self.rx.index if index >= len(self.container.launcher) \ or index not in self.processes: - self.send_command_wrong_index(identity) + self._send_command_wrong_index(identity) else: - self.terminate_process(index) + self._terminate_process(index) elif self.rx.type == pb.MT_LAUNCHER_KILL: if self.rx.HasField('index'): index = self.rx.index if index >= len(self.container.launcher) \ or index not in self.processes: - self.send_command_wrong_index(identity) + self._send_command_wrong_index(identity) else: - self.kill_process(index) + self._kill_process(index) elif self.rx.type == pb.MT_LAUNCHER_WRITE_STDIN: if self.rx.HasField('index') \ @@ -455,22 +452,22 @@ def process_command(self, s): name = self.rx.name if index >= len(self.container.launcher) \ or index not in self.processes: - self.send_command_wrong_index(identity) + self._send_command_wrong_index(identity) else: - self.write_stdin_process(index, name) + self._write_to_stdin_of_process(index, name) elif self.rx.type == pb.MT_LAUNCHER_CALL: self.tx.note.append("process call not allowed") - self.send_command_msg(identity, pb.MT_ERROR) + self._send_command_message(identity, pb.MT_ERROR) elif self.rx.type == pb.MT_LAUNCHER_SHUTDOWN: - if not self.shutdown_system(): + if not self._shutdown_system(): self.tx.note.append("cannot shutdown system: DBus error") - self.send_command_msg(identity, pb.MT_ERROR) + self._send_command_message(identity, pb.MT_ERROR) else: self.tx.note.append("unknown command") - self.send_command_msg(identity, pb.MT_ERROR) + self._send_command_message(identity, pb.MT_ERROR) shutdown = False From 59419b7d11feafd046a14557ea358c3f5ed37674 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Wed, 6 Sep 2017 13:08:05 +0200 Subject: [PATCH 100/516] mklauncher: set proper default values --- src/machinetalk/mklauncher/mklauncher.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/machinetalk/mklauncher/mklauncher.py b/src/machinetalk/mklauncher/mklauncher.py index 5bf1b8bdab..11fb4f1a74 100644 --- a/src/machinetalk/mklauncher/mklauncher.py +++ b/src/machinetalk/mklauncher/mklauncher.py @@ -36,7 +36,7 @@ def printError(msg): class Mklauncher(object): def __init__(self, context, launcherDirs=None, host='', - svcUuid=None, debug=False, name=None, hostInName=True, + svcUuid='', debug=False, name=None, hostInName=True, pollInterval=0.5, pingInterval=2.0, loopback=False): if launcherDirs is None: launcherDirs = [] From 1c0fb7017cf00c7df82d3988b8764db1736e66a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Wed, 6 Sep 2017 13:08:17 +0200 Subject: [PATCH 101/516] mklauncher: use logging --- src/machinetalk/mklauncher/mklauncher.py | 32 +++++++++++++----------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/machinetalk/mklauncher/mklauncher.py b/src/machinetalk/mklauncher/mklauncher.py index 11fb4f1a74..065ebe2b32 100644 --- a/src/machinetalk/mklauncher/mklauncher.py +++ b/src/machinetalk/mklauncher/mklauncher.py @@ -12,6 +12,7 @@ import fcntl import shlex import dbus +import logging from operator import attrgetter @@ -29,6 +30,8 @@ else: import ConfigParser as configparser +logger = logging.getLogger('mklauncher') + def printError(msg): sys.stderr.write('ERROR: ' + msg + '\n') @@ -69,8 +72,7 @@ def __init__(self, context, launcherDirs=None, host='', self.container.launcher.add().CopyFrom(launcher) self.txContainer.launcher.add().MergeFrom(launcher) - if self.debug: - print(self.container) + logger.debug('parsed launchers:\n%s' % str(self.container)) # prepare pings if self.pingInterval > 0: @@ -151,7 +153,7 @@ def _search_launchers(self, directories): launchers.append(launcher) # sort using the priority attribute before distribution - launchers = sorted(launchers, key=attrgetter('priority'), reverse=True) + return sorted(launchers, key=attrgetter('priority'), reverse=True) def _start_threads(self): threading.Thread(target=self._process_sockets).start() @@ -290,8 +292,7 @@ def _update_launcher_status(self): self._send_launcher_message(pb.MT_LAUNCHER_INCREMENTAL_UPDATE) def _send_launcher_message(self, msgType): - if self.debug: - print('sending launcher message') + logger.debug('sending launcher message') self.txContainer.type = msgType txBuffer = self.txContainer.SerializeToString() self.txContainer.Clear() @@ -329,8 +330,7 @@ def _process_launcher_socket(self, s): self.launcherSubscribed = status self.launcherFullUpdate = status - if self.debug: - print(("process launcher called " + subscription + ' ' + str(status))) + logger.debug(("process launcher called " + subscription + ' ' + str(status))) except zmq.ZMQError as e: printError('ZMQ error: ' + str(e)) @@ -401,8 +401,7 @@ def _process_command_socket(self, s): identity = frames[:-1] # multipart id message = frames[-1] # last frame - if self.debug: - print("process command called, id: %s" % identity) + logger.debug("process command called, id: %s" % identity) try: self.rx.ParseFromString(message) @@ -501,6 +500,12 @@ def main(): args = parser.parse_args() debug = args.debug + logging.basicConfig() + if debug: + logger.setLevel(logging.DEBUG) + else: + logger.setLevel(logging.INFO) + mkconfig = config.Config() mkini = os.getenv("MACHINEKIT_INI") if mkini is None: @@ -518,8 +523,7 @@ def main(): print("Remote communication is deactivated, configserver will use the loopback interfaces") print(("set REMOTE in " + mkini + " to 1 to enable remote communication")) - if debug: - print(("announcing mklauncher")) + logger.debug("announcing mklauncher") context = zmq.Context() context.linger = 0 @@ -540,16 +544,14 @@ def main(): while mklauncher.running and not check_exit(): time.sleep(1) - if debug: - print('stopping threads') + logger.debug('stopping threads') mklauncher.stop() # wait for all threads to terminate while threading.active_count() > 1: time.sleep(0.1) - if debug: - print('threads stopped') + logger.debug('threads stopped') sys.exit(0) From 7ba417caeb6cef88d394e5d209601590c05639b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Wed, 6 Sep 2017 14:33:21 +0200 Subject: [PATCH 102/516] mklauncher: add simple test case --- src/machinetalk/mklauncher/test_mklauncher.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/machinetalk/mklauncher/test_mklauncher.py diff --git a/src/machinetalk/mklauncher/test_mklauncher.py b/src/machinetalk/mklauncher/test_mklauncher.py new file mode 100644 index 0000000000..7f126abcf7 --- /dev/null +++ b/src/machinetalk/mklauncher/test_mklauncher.py @@ -0,0 +1,41 @@ +import pytest +import sys +import os + +import_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), '../../../lib/python/') +sys.path.insert(0, os.path.abspath(import_path)) + +from mklauncher import Mklauncher + + +@pytest.fixture +def context(): + import zmq + ctx = zmq.Context() + ctx.linger = 0 + return ctx + + +@pytest.fixture +def single_launcher_file(tmpdir): + data = ''' +[demo] +name = Demo config +description = My super demo +command = python run.py +variant = default +''' + ini = tmpdir.join('launcher.ini') + ini.write(data) + return [str(tmpdir)] + + +def test_reading_single_launcher_file_works(context, single_launcher_file): + launcher = Mklauncher(context, launcherDirs=single_launcher_file) + + launchers = launcher.container.launcher + assert len(launchers) == 1 + assert launchers[0].name == 'Demo config' + assert launchers[0].description == 'My super demo' + assert launchers[0].command == 'python run.py' + assert launchers[0].info.variant == 'default' From 434f86df46f45a4b7ced371ac3274a6c01a5cdb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Wed, 6 Sep 2017 17:40:55 +0200 Subject: [PATCH 103/516] mklauncher: implement importances --- src/machinetalk/mklauncher/mklauncher.py | 105 ++++++++++++++++-- src/machinetalk/mklauncher/test_mklauncher.py | 70 +++++++++++- 2 files changed, 162 insertions(+), 13 deletions(-) diff --git a/src/machinetalk/mklauncher/mklauncher.py b/src/machinetalk/mklauncher/mklauncher.py index 065ebe2b32..ae30601f9b 100644 --- a/src/machinetalk/mklauncher/mklauncher.py +++ b/src/machinetalk/mklauncher/mklauncher.py @@ -37,10 +37,55 @@ def printError(msg): sys.stderr.write('ERROR: ' + msg + '\n') +class LauncherImportance(object): + DEFAULT_IMPORTANCE = 0 + + def __init__(self, config_file): + self._config_file = config_file + self._importances = {} + + def __setitem__(self, launcher_id, importance): + self._importances[launcher_id] = importance + + def __getitem__(self, launcher_id): + if launcher_id in self._importances: + return self._importances[launcher_id] + else: + return LauncherImportance.DEFAULT_IMPORTANCE + + def save(self): + config_dir = os.path.dirname(self._config_file) + if not os.path.exists(config_dir): + os.makedirs(config_dir) + + cfg = configparser.ConfigParser() + for key in self._importances: + section, name = key.split(':') + if not cfg.has_section(section): + cfg.add_section(section) + cfg.set(section, name, self._importances[key]) + + with open(self._config_file, 'w') as config_file: + cfg.write(config_file) + + def load(self): + self._importances = {} + cfg = configparser.ConfigParser() + cfg.read(self._config_file) + + for section in cfg.sections(): + for (key, value) in cfg.items(section): + self._importances['%s:%s' % (section, key)] = int(value) + + def __str__(self): + return str(self._importances) + + class Mklauncher(object): def __init__(self, context, launcherDirs=None, host='', svcUuid='', debug=False, name=None, hostInName=True, - pollInterval=0.5, pingInterval=2.0, loopback=False): + pollInterval=0.5, pingInterval=2.0, loopback=False, + config_dir='~/.config/machinekit/mklauncher'): if launcherDirs is None: launcherDirs = [] @@ -66,14 +111,19 @@ def __init__(self, context, launcherDirs=None, host='', self.processes = {} # for processes mapped to launcher self.terminating = set() # set of terminating processes - launchers = self._search_launchers(self.launcherDirs) + launchers, ids = self._search_launchers(self.launcherDirs) + self._launcher_ids = {} for index, launcher in enumerate(launchers): + self._launcher_ids[index] = ids[launcher.index] launcher.index = index - self.container.launcher.add().CopyFrom(launcher) - self.txContainer.launcher.add().MergeFrom(launcher) - + self.container.launcher.extend([launcher]) + self.txContainer.launcher.add().CopyFrom(launcher) logger.debug('parsed launchers:\n%s' % str(self.container)) + config_file = os.path.expanduser(os.path.join(config_dir, 'importances.ini')) + self._importances = LauncherImportance(config_file) + self._importances.load() + # prepare pings if self.pingInterval > 0: self.pingRatio = math.floor(self.pingInterval / self.pollInterval) @@ -109,6 +159,8 @@ def _search_launchers(self, directories): } launchers = [] + ids = {} + index = 0 for rootDir in directories: for root, _, files in os.walk(rootDir): if INI_NAME not in files: @@ -128,6 +180,7 @@ def _search_launchers(self, directories): info.model = cfg.get(section, 'model') info.variant = cfg.get(section, 'variant') launcher.priority = cfg.getint(section, 'priority') + launcher.importance = 0 launcher.info.MergeFrom(info) # command data launcher.command = cfg.get(section, 'command') @@ -150,10 +203,14 @@ def _search_launchers(self, directories): image.encoding = CLEARTEXT image.blob = fileBuffer launcher.image.MergeFrom(image) + + launcher.index = index + index += 1 launchers.append(launcher) + ids[launcher.index] = '%s:%s' % (root, section) # sort using the priority attribute before distribution - return sorted(launchers, key=attrgetter('priority'), reverse=True) + return sorted(launchers, key=attrgetter('priority'), reverse=True), ids def _start_threads(self): threading.Thread(target=self._process_sockets).start() @@ -234,18 +291,22 @@ def _add_pparams_to_message(self): self.txContainer.pparams.MergeFrom(parameters) def _update_launcher_status(self): - modified = False + txLauncher = Launcher() # new pb message for tx for launcher in self.container.launcher: + modified = False index = launcher.index + importance = self._importances[self._launcher_ids[launcher.index]] + if importance is not launcher.importance: + txLauncher.importance = importance + modified = True + terminating = False if index in self.terminating: terminating = True self.terminating.remove(index) if index in self.processes: - txLauncher = Launcher() # new pb message for tx - txLauncher.index = index process = self.processes[index] process.poll() returncode = process.returncode @@ -279,9 +340,11 @@ def _update_launcher_status(self): txLauncher.terminating = False modified = True self.processes.pop(index, None) # remove from watchlist - if modified: - launcher.MergeFrom(txLauncher) - self.txContainer.launcher.add().MergeFrom(txLauncher) + if modified: + launcher.MergeFrom(txLauncher) + txLauncher.index = index + self.txContainer.launcher.add().MergeFrom(txLauncher) + txLauncher.Clear() if self.launcherFullUpdate: self._add_pparams_to_message() @@ -388,6 +451,11 @@ def _shutdown_system(self): except: return False + def _update_importance(self, launcher): + launcher_id = self._launcher_ids[launcher.index] + self._importances[launcher_id] = launcher.importance + self._importances.save() + def _send_command_wrong_params(self, identity, note='wrong parameters'): self.tx.note.append(note) self._send_command_message(identity, pb.MT_ERROR) @@ -464,6 +532,19 @@ def _process_command_socket(self, s): self.tx.note.append("cannot shutdown system: DBus error") self._send_command_message(identity, pb.MT_ERROR) + elif self.rx.type == pb.MT_LAUNCHER_SET: + for launcher in self.rx.launcher: + if not launcher.HasField('index') \ + or not launcher.HasField('importance'): + self._send_command_wrong_params() + continue + + index = launcher.index + if index >= len(self.container.launcher): + self._send_command_wrong_index(identity) + else: + self._update_importance(launcher) + else: self.tx.note.append("unknown command") self._send_command_message(identity, pb.MT_ERROR) diff --git a/src/machinetalk/mklauncher/test_mklauncher.py b/src/machinetalk/mklauncher/test_mklauncher.py index 7f126abcf7..bb5139b596 100644 --- a/src/machinetalk/mklauncher/test_mklauncher.py +++ b/src/machinetalk/mklauncher/test_mklauncher.py @@ -5,7 +5,7 @@ import_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), '../../../lib/python/') sys.path.insert(0, os.path.abspath(import_path)) -from mklauncher import Mklauncher +from mklauncher import Mklauncher, LauncherImportance @pytest.fixture @@ -30,6 +30,11 @@ def single_launcher_file(tmpdir): return [str(tmpdir)] +@pytest.fixture +def config_dir(tmpdir): + return str(tmpdir.join('config')) + + def test_reading_single_launcher_file_works(context, single_launcher_file): launcher = Mklauncher(context, launcherDirs=single_launcher_file) @@ -39,3 +44,66 @@ def test_reading_single_launcher_file_works(context, single_launcher_file): assert launchers[0].description == 'My super demo' assert launchers[0].command == 'python run.py' assert launchers[0].info.variant == 'default' + + +@pytest.fixture +def valid_importance_file(tmpdir): + data = ''' +[/foo/bar/baz] +myconfig = 10 +anotherconfig = 2 +''' + ini = tmpdir.join('importances.ini') + ini.write(data) + return str(ini) + + +def test_reading_launcher_importances_works(valid_importance_file): + importances = LauncherImportance(valid_importance_file) + + importances.load() + + print(importances._importances) + assert importances['/foo/bar/baz:myconfig'] == 10 + assert importances['/foo/bar/baz:anotherconfig'] == 2 + + +def test_writing_launcher_importances_works(tmpdir): + save_file = tmpdir.join('test/output.ini') + importances = LauncherImportance(str(save_file)) + + importances['/my/config/path/:config1'] = 10 + importances['/my/config/path/:config2'] = 2 + importances['/home/alexander/:another_config'] = 0 + importances.save() + + assert os.path.exists(str(save_file)) + data = save_file.read() + assert '[/my/config/path/]' in data + assert '[/home/alexander/]' in data + assert 'config1 = 10' in data + assert 'config2 = 2' in data + assert 'another_config = 0' in data + + +def test_reading_launcher_importances_with_non_existing_file_does_not_throw_error(tmpdir): + save_file = tmpdir.join('save.ini') + importances = LauncherImportance(str(save_file)) + + importances.load() + + +def test_updating_launcher_importance_works(context, single_launcher_file, config_dir): + launcher = Mklauncher(context, launcherDirs=single_launcher_file, config_dir=config_dir) + + from machinetalk.protobuf.config_pb2 import Launcher + msg = Launcher() + msg.index = 0 + msg.importance = 5 + + launcher._update_importance(msg) + launcher._update_launcher_status() + + launchers = launcher.container.launcher + assert len(launchers) == 1 + assert launchers[0].importance == 5 From 01dae4bfd6b41c1e1e9918a394dab4559847c6b4 Mon Sep 17 00:00:00 2001 From: Mick Date: Mon, 11 Sep 2017 16:14:24 +0100 Subject: [PATCH 104/516] Fix dh_python2 multi-arch renames of libraries. If machinekit packages are built upon a multi-arch enabled Debian system, dh_python2 renames the python libraries to ..so As machinekit libraries are not intended to be multiarch, just one arch and flavour installed at a time, this is both unnecessary and breaks packages because the default library name is not able to be found. Signed-off-by: Mick --- debian/rules.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/rules.in b/debian/rules.in index 67996788ad..eac96a0903 100755 --- a/debian/rules.in +++ b/debian/rules.in @@ -212,7 +212,7 @@ binary-arch: build install dh_compress -X.pdf -X.txt -X.hal -X.ini -X.clp -X.var -X.nml \ -X.tbl -X.xml -Xsample-configs dh_fixperms -X/linuxcnc_module_helper -X/rtapi_app_ - dh_python2 --ignore-shebangs --no-guessing-versions + dh_python2 --ignore-shebangs --no-guessing-versions --no-ext-rename dh_makeshlibs dh_installdeb From c1ef83c523d7b5aede1c34f5b9ec375d8db60d0e Mon Sep 17 00:00:00 2001 From: Mick Date: Tue, 12 Sep 2017 15:45:10 +0100 Subject: [PATCH 105/516] Add ARCH_CFLAGS for platform_pc builds Add specific arch flag (-m=32|-m=64) for platform_pc builds Ensures proper linkage upon multi-arch system or within a multi-arch docker container. These flags already exist in Machinekit-HAL and have zero impact on a single arch system, as they just repeat what the linker would expect. Signed-off-by: Mick --- src/configure.ac | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/configure.ac b/src/configure.ac index c1e4a7e755..c2003bbf0d 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -541,9 +541,15 @@ AC_ARG_WITH(platform-pc, ], [ case $host_cpu in - (i?86 | x86_64) - TARGET_PLATFORM_PC=unk + (x86_64) + ARCH_CFLAGS="-m64" + TARGET_PLATFORM_PC=unk ;; + (i?86) + ARCH_CFLAGS="-m32" + TARGET_PLATFORM_PC=unk + ;; + (*) TARGET_PLATFORM_PC=false platform_pc_reason="$arch_disab_msg" From 5728cc0904aa073e8612fd39cea203edd3209c4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Wed, 13 Sep 2017 14:41:58 +0200 Subject: [PATCH 106/516] mklauncher: fix incremental update problem --- src/machinetalk/mklauncher/mklauncher.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/machinetalk/mklauncher/mklauncher.py b/src/machinetalk/mklauncher/mklauncher.py index ae30601f9b..c9388831cf 100644 --- a/src/machinetalk/mklauncher/mklauncher.py +++ b/src/machinetalk/mklauncher/mklauncher.py @@ -292,6 +292,8 @@ def _add_pparams_to_message(self): def _update_launcher_status(self): txLauncher = Launcher() # new pb message for tx + has_update = False + for launcher in self.container.launcher: modified = False index = launcher.index @@ -345,13 +347,14 @@ def _update_launcher_status(self): txLauncher.index = index self.txContainer.launcher.add().MergeFrom(txLauncher) txLauncher.Clear() + has_update = True if self.launcherFullUpdate: self._add_pparams_to_message() self.txContainer.CopyFrom(self.container) self._send_launcher_message(pb.MT_LAUNCHER_FULL_UPDATE) self.launcherFullUpdate = False - elif modified: + elif has_update: self._send_launcher_message(pb.MT_LAUNCHER_INCREMENTAL_UPDATE) def _send_launcher_message(self, msgType): From 06e189b4e0b0e82b86b1616df119cd28f383a321 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Wed, 13 Sep 2017 16:15:11 +0200 Subject: [PATCH 107/516] mklauncher: use pythonic naming --- src/machinetalk/mklauncher/mklauncher.py | 204 +++++++++--------- src/machinetalk/mklauncher/test_mklauncher.py | 4 +- 2 files changed, 102 insertions(+), 106 deletions(-) diff --git a/src/machinetalk/mklauncher/mklauncher.py b/src/machinetalk/mklauncher/mklauncher.py index c9388831cf..7aeda6bc52 100644 --- a/src/machinetalk/mklauncher/mklauncher.py +++ b/src/machinetalk/mklauncher/mklauncher.py @@ -33,10 +33,6 @@ logger = logging.getLogger('mklauncher') -def printError(msg): - sys.stderr.write('ERROR: ' + msg + '\n') - - class LauncherImportance(object): DEFAULT_IMPORTANCE = 0 @@ -82,28 +78,28 @@ def __str__(self): class Mklauncher(object): - def __init__(self, context, launcherDirs=None, host='', - svcUuid='', debug=False, name=None, hostInName=True, - pollInterval=0.5, pingInterval=2.0, loopback=False, + def __init__(self, context, launcher_dirs=None, host='', + svc_uuid='', debug=False, name=None, host_in_name=True, + poll_interval=0.5, ping_interval=2.0, loopback=False, config_dir='~/.config/machinekit/mklauncher'): - if launcherDirs is None: - launcherDirs = [] + if launcher_dirs is None: + launcher_dirs = [] - self.launcherDirs = launcherDirs + self.launcher_dirs = launcher_dirs self.host = host self.loopback = loopback self.name = name self.debug = debug self.shutdown = threading.Event() self.running = False - self.pollInterval = pollInterval - self.pingInterval = pingInterval + self.poll_interval = poll_interval + self.ping_interval = ping_interval # published container self.container = Container() - self.txContainer = Container() - self.launcherSubscribed = False - self.launcherFullUpdate = False + self.tx_container = Container() + self.launcher_subscribed = False + self.launcher_full_update = False # command rx and tx containers for reuse self.rx = Container() self.tx = Container() @@ -111,13 +107,13 @@ def __init__(self, context, launcherDirs=None, host='', self.processes = {} # for processes mapped to launcher self.terminating = set() # set of terminating processes - launchers, ids = self._search_launchers(self.launcherDirs) + launchers, ids = self._search_launchers(self.launcher_dirs) self._launcher_ids = {} for index, launcher in enumerate(launchers): self._launcher_ids[index] = ids[launcher.index] launcher.index = index self.container.launcher.extend([launcher]) - self.txContainer.launcher.add().CopyFrom(launcher) + self.tx_container.launcher.add().CopyFrom(launcher) logger.debug('parsed launchers:\n%s' % str(self.container)) config_file = os.path.expanduser(os.path.join(config_dir, 'importances.ini')) @@ -125,14 +121,14 @@ def __init__(self, context, launcherDirs=None, host='', self._importances.load() # prepare pings - if self.pingInterval > 0: - self.pingRatio = math.floor(self.pingInterval / self.pollInterval) + if self.ping_interval > 0: + self.ping_ratio = math.floor(self.ping_interval / self.poll_interval) else: - self.pingRatio = -1 + self.ping_ratio = -1 self.pingCount = 0 self._create_sockets(context) - self._create_services(hostInName, svcUuid) + self._create_services(host_in_name, svc_uuid) def start(self): self._publish_services() @@ -161,8 +157,8 @@ def _search_launchers(self, directories): launchers = [] ids = {} index = 0 - for rootDir in directories: - for root, _, files in os.walk(rootDir): + for root_dir in directories: + for root, _, files in os.walk(root_dir): if INI_NAME not in files: continue @@ -193,13 +189,13 @@ def _search_launchers(self, directories): launcher.running = False launcher.terminating = False # storing the image file - imageFile = cfg.get(section, 'image') - if imageFile is not '': - if not os.path.isabs(imageFile): - imageFile = os.path.join(root, imageFile) - fileBuffer = open(imageFile, 'rb').read() + image_file = cfg.get(section, 'image') + if image_file is not '': + if not os.path.isabs(image_file): + image_file = os.path.join(root, image_file) + fileBuffer = open(image_file, 'rb').read() image = File() - image.name = os.path.basename(imageFile) + image.name = os.path.basename(image_file) image.encoding = CLEARTEXT image.blob = fileBuffer launcher.image.MergeFrom(image) @@ -219,55 +215,55 @@ def _start_threads(self): def _create_sockets(self, context): self.context = context - self.baseUri = "tcp://" + base_uri = "tcp://" if self.loopback: - self.baseUri += '127.0.0.1' + base_uri += '127.0.0.1' else: - self.baseUri += '*' - self.launcherSocket = context.socket(zmq.XPUB) - self.launcherSocket.setsockopt(zmq.XPUB_VERBOSE, 1) - self.launcherPort = self.launcherSocket.bind_to_random_port(self.baseUri) - self.launcherDsname = self.launcherSocket.get_string(zmq.LAST_ENDPOINT, encoding='utf-8') - self.launcherDsname = self.launcherDsname.replace('0.0.0.0', self.host) - self.commandSocket = context.socket(zmq.ROUTER) - self.commandPort = self.commandSocket.bind_to_random_port(self.baseUri) - self.commandDsname = self.commandSocket.get_string(zmq.LAST_ENDPOINT, encoding='utf-8') - self.commandDsname = self.commandDsname.replace('0.0.0.0', self.host) + base_uri += '*' + self.launcher_socket = context.socket(zmq.XPUB) + self.launcher_socket.setsockopt(zmq.XPUB_VERBOSE, 1) + self.launcher_port = self.launcher_socket.bind_to_random_port(base_uri) + self.launcher_ds_name = self.launcher_socket.get_string(zmq.LAST_ENDPOINT, encoding='utf-8') + self.launcher_ds_name = self.launcher_ds_name.replace('0.0.0.0', self.host) + self.command_socket = context.socket(zmq.ROUTER) + self.command_port = self.command_socket.bind_to_random_port(base_uri) + self.command_ds_name = self.command_socket.get_string(zmq.LAST_ENDPOINT, encoding='utf-8') + self.command_ds_name = self.command_ds_name.replace('0.0.0.0', self.host) def _process_sockets(self): poll = zmq.Poller() - poll.register(self.launcherSocket, zmq.POLLIN) - poll.register(self.commandSocket, zmq.POLLIN) + poll.register(self.launcher_socket, zmq.POLLIN) + poll.register(self.command_socket, zmq.POLLIN) while not self.shutdown.is_set(): s = dict(poll.poll(1000)) - if self.launcherSocket in s and s[self.launcherSocket] == zmq.POLLIN: - self._process_launcher_socket(self.launcherSocket) - if self.commandSocket in s and s[self.commandSocket] == zmq.POLLIN: - self._process_command_socket(self.commandSocket) + if self.launcher_socket in s and s[self.launcher_socket] == zmq.POLLIN: + self._process_launcher_socket(self.launcher_socket) + if self.command_socket in s and s[self.command_socket] == zmq.POLLIN: + self._process_command_socket(self.command_socket) self._unpublish_services() self.running = False - def _create_services(self, hostInName, svcUuid): + def _create_services(self, host_in_name, svc_uuid): if self.name is None: self.name = 'Machinekit Launcher' - if hostInName: + if host_in_name: self.name += ' on ' + self.host - self.launcherService = \ + self.launcher_service = \ service.Service(type='launcher', - svcUuid=svcUuid, - dsn=self.launcherDsname, - port=self.launcherPort, + svcUuid=svc_uuid, + dsn=self.launcher_ds_name, + port=self.launcher_port, host=self.host, name=self.name, loopback=self.loopback, debug=self.debug) self.commandService = \ service.Service(type='launchercmd', - svcUuid=svcUuid, - dsn=self.commandDsname, - port=self.commandPort, + svcUuid=svc_uuid, + dsn=self.command_ds_name, + port=self.command_port, host=self.host, loopback=self.loopback, debug=self.debug) @@ -275,23 +271,23 @@ def _create_services(self, hostInName, svcUuid): def _publish_services(self): # Zeroconf try: - self.launcherService.publish() + self.launcher_service.publish() self.commandService.publish() except Exception as e: - print(('cannot register DNS service' + str(e))) + logger.error(('cannot register DNS service' + str(e))) sys.exit(1) def _unpublish_services(self): - self.launcherService.unpublish() + self.launcher_service.unpublish() self.commandService.unpublish() def _add_pparams_to_message(self): parameters = ProtocolParameters() - parameters.keepalive_timer = int(self.pingInterval * 1000.0) - self.txContainer.pparams.MergeFrom(parameters) + parameters.keepalive_timer = int(self.ping_interval * 1000.0) + self.tx_container.pparams.MergeFrom(parameters) def _update_launcher_status(self): - txLauncher = Launcher() # new pb message for tx + tx_launcher = Launcher() # new pb message for tx has_update = False for launcher in self.container.launcher: @@ -300,7 +296,7 @@ def _update_launcher_status(self): importance = self._importances[self._launcher_ids[launcher.index]] if importance is not launcher.importance: - txLauncher.importance = importance + tx_launcher.importance = importance modified = True terminating = False @@ -316,72 +312,72 @@ def _update_launcher_status(self): if not launcher.running: # update running value if len(launcher.output) > 0: launcher.ClearField('output') # clear output for new processes - self.launcherFullUpdate = True # request a full update - txLauncher.running = True - txLauncher.returncode = 0 + self.launcher_full_update = True # request a full update + tx_launcher.running = True + tx_launcher.returncode = 0 modified = True # read stdout - stdoutIndex = len(launcher.output) + stdout_index = len(launcher.output) while True: try: line = process.stdout.readline() stdoutLine = StdoutLine() - stdoutLine.index = stdoutIndex + stdoutLine.index = stdout_index stdoutLine.line = line - txLauncher.output.add().MergeFrom(stdoutLine) - stdoutIndex += 1 + tx_launcher.output.add().MergeFrom(stdoutLine) + stdout_index += 1 modified = True except IOError: # process has no new line break # send termination status if terminating: - txLauncher.terminating = True + tx_launcher.terminating = True else: - txLauncher.returncode = returncode - txLauncher.running = False - txLauncher.terminating = False + tx_launcher.returncode = returncode + tx_launcher.running = False + tx_launcher.terminating = False modified = True self.processes.pop(index, None) # remove from watchlist if modified: - launcher.MergeFrom(txLauncher) - txLauncher.index = index - self.txContainer.launcher.add().MergeFrom(txLauncher) - txLauncher.Clear() + launcher.MergeFrom(tx_launcher) + tx_launcher.index = index + self.tx_container.launcher.add().MergeFrom(tx_launcher) + tx_launcher.Clear() has_update = True - if self.launcherFullUpdate: + if self.launcher_full_update: self._add_pparams_to_message() - self.txContainer.CopyFrom(self.container) + self.tx_container.CopyFrom(self.container) self._send_launcher_message(pb.MT_LAUNCHER_FULL_UPDATE) - self.launcherFullUpdate = False + self.launcher_full_update = False elif has_update: self._send_launcher_message(pb.MT_LAUNCHER_INCREMENTAL_UPDATE) def _send_launcher_message(self, msgType): logger.debug('sending launcher message') - self.txContainer.type = msgType - txBuffer = self.txContainer.SerializeToString() - self.txContainer.Clear() - self.launcherSocket.send_multipart(['launcher', txBuffer], zmq.NOBLOCK) + self.tx_container.type = msgType + txBuffer = self.tx_container.SerializeToString() + self.tx_container.Clear() + self.launcher_socket.send_multipart(['launcher', txBuffer], zmq.NOBLOCK) def _send_command_message(self, identity, msgType): self.tx.type = msgType txBuffer = self.tx.SerializeToString() - self.commandSocket.send_multipart(identity + [txBuffer], zmq.NOBLOCK) + self.command_socket.send_multipart(identity + [txBuffer], zmq.NOBLOCK) self.tx.Clear() def _poll(self): while not self.shutdown.is_set(): - if self.launcherSubscribed: + if self.launcher_subscribed: self._update_launcher_status() - if (self.pingCount == self.pingRatio): + if (self.pingCount == self.ping_ratio): self._send_launcher_message(pb.MT_PING) - if (self.pingCount == self.pingRatio): + if (self.pingCount == self.ping_ratio): self.pingCount = 0 else: self.pingCount += 1 - time.sleep(self.pollInterval) + time.sleep(self.poll_interval) self.running = False return @@ -393,13 +389,13 @@ def _process_launcher_socket(self, s): status = (rc[0] == "\x01") if subscription == 'launcher': - self.launcherSubscribed = status - self.launcherFullUpdate = status + self.launcher_subscribed = status + self.launcher_full_update = status logger.debug(("process launcher called " + subscription + ' ' + str(status))) except zmq.ZMQError as e: - printError('ZMQ error: ' + str(e)) + logger.error('ZMQ error: ' + str(e)) def _start_process(self, index): launcher = self.container.launcher[index] @@ -444,12 +440,12 @@ def _write_to_stdin_of_process(self, index, data): def _shutdown_system(self): try: - systemBus = dbus.SystemBus() - ckService = systemBus.get_object('org.freedesktop.ConsoleKit', - '/org/freedesktop/ConsoleKit/Manager') - ckInterface = dbus.Interface(ckService, 'org.freedesktop.ConsoleKit.Manager') - stopMethod = ckInterface.get_dbus_method("Stop") - stopMethod() + system_bus = dbus.SystemBus() + ck_service = system_bus.get_object('org.freedesktop.ConsoleKit', + '/org/freedesktop/ConsoleKit/Manager') + ck_interface = dbus.Interface(ck_service, 'org.freedesktop.ConsoleKit.Manager') + stop_method = ck_interface.get_dbus_method("Stop") + stop_method() return True except: return False @@ -604,8 +600,8 @@ def main(): remote = mki.getint("MACHINEKIT", "REMOTE") if remote == 0: - print("Remote communication is deactivated, configserver will use the loopback interfaces") - print(("set REMOTE in " + mkini + " to 1 to enable remote communication")) + logger.info("Remote communication is deactivated, configserver will use the loopback interfaces") + logger.info(("set REMOTE in " + mkini + " to 1 to enable remote communication")) logger.debug("announcing mklauncher") @@ -616,11 +612,11 @@ def main(): hostname = '%(fqdn)s' # replaced by service announcement mklauncher = Mklauncher(context, - svcUuid=uuid, + svc_uuid=uuid, host=hostname, - launcherDirs=args.dirs, + launcher_dirs=args.dirs, name=args.name, - hostInName=bool(args.suppress_ip), + host_in_name=bool(args.suppress_ip), loopback=(not remote), debug=debug) mklauncher.start() diff --git a/src/machinetalk/mklauncher/test_mklauncher.py b/src/machinetalk/mklauncher/test_mklauncher.py index bb5139b596..75563835dc 100644 --- a/src/machinetalk/mklauncher/test_mklauncher.py +++ b/src/machinetalk/mklauncher/test_mklauncher.py @@ -36,7 +36,7 @@ def config_dir(tmpdir): def test_reading_single_launcher_file_works(context, single_launcher_file): - launcher = Mklauncher(context, launcherDirs=single_launcher_file) + launcher = Mklauncher(context, launcher_dirs=single_launcher_file) launchers = launcher.container.launcher assert len(launchers) == 1 @@ -94,7 +94,7 @@ def test_reading_launcher_importances_with_non_existing_file_does_not_throw_erro def test_updating_launcher_importance_works(context, single_launcher_file, config_dir): - launcher = Mklauncher(context, launcherDirs=single_launcher_file, config_dir=config_dir) + launcher = Mklauncher(context, launcher_dirs=single_launcher_file, config_dir=config_dir) from machinetalk.protobuf.config_pb2 import Launcher msg = Launcher() From 6a59eb800a27014ec6af72ac3e05a8f454b86bf0 Mon Sep 17 00:00:00 2001 From: Mick Date: Thu, 14 Sep 2017 10:01:03 +0100 Subject: [PATCH 108/516] Add the cross-builder specific scripts for future use. Will have no effect on current builds in Travis, which use others. Once Wheezy support is dropped, these will be required for faster builds of Jessie through a Jenkins job as per Machinekit-HAL. Signed-off-by: Mick --- scripts/build_docker | 163 ++++++++++++++++++++++++++++++ scripts/build_packagecloud_upload | 65 ++++++++++++ scripts/build_source_package | 110 ++++++++++++++++++++ 3 files changed, 338 insertions(+) create mode 100755 scripts/build_docker create mode 100755 scripts/build_packagecloud_upload create mode 100755 scripts/build_source_package diff --git a/scripts/build_docker b/scripts/build_docker new file mode 100755 index 0000000000..73d415a485 --- /dev/null +++ b/scripts/build_docker @@ -0,0 +1,163 @@ +#!/bin/bash -e +# +# Build/cross-build Machinekit-HAL in Docker +# +# This script can be run manually or in Travis CI. Sample manual +# usage, `$PWD` is the `src/` directory: +# +# .travis/docker_build.sh + +########################################################### +# Configuration from environment, CL args and defaults +CMD=${CMD:-shell} +IMAGE=${IMAGE:-dovetailautomata/mk-cross-builder} +TAG=${TAG:-amd64} +JOBS=${JOBS:-2} +BUILD_SOURCE=${BUILD_SOURCE:-true} # update Changelog & source pkg + +# CL arguments +while getopts c:i:t:j:nh? opt; do + case "$opt" in + c) CMD=$OPTARG ;; + i) IMAGE=$OPTARG ;; + t) TAG=$OPTARG ;; + j) JOBS=$OPTARG ;; + n) BUILD_SOURCE=false ;; + ?|h|*) echo "Usage: $0 [ -i DOCKER-IMAGE ] [ -t DOCKER-TAG ]" \ + "[ -c ( deb [ -n ] | test | [ shell ] [ COMMAND ARG ... ] ) ]" >&2 + exit 1 ;; + esac +done +shift $(($OPTIND - 1)) + +########################################################### +# Set build parameters + +case ${TAG} in + amd64) + BUILD_OPTS='-b' # Build all binary packages + RUN_TESTS='runtests tests' # Run tests on build arch + ;; + i386) # Machine arch: i386 + BUILD_OPTS="-a i386" # - Set machine arch + ;;& + armhf|raspbian) # Machine arch: armhf + BUILD_OPTS="-a armhf" # - Set machine arch + ;;& + i386|armhf|raspbian) # Cross-compile/foreign arch + BUILD_OPTS+=" -B" # - Only build arch binary packages + BUILD_OPTS+=" -d" # - Root fs missing build deps; force + RUN_TESTS='true' # - Don't run tests + BUILD_SOURCE=false # - Don't build source package + ;; + *) echo "Warning: unknown tag '${TAG}'" >&2 ;; +esac + +# DH_VERBOSE turn on verbose package debuilds +! ${MK_PACKAGE_VERBOSE:-false} || export DH_VERBOSE=1 + +# Parallel jobs in `make` +export DEB_BUILD_OPTIONS="parallel=${JOBS}" + +# UID/GID to carry into Docker +DUID=`id -u`; DGID=`id -g` + +# Bind source directory: parent of $PWD for packages +BIND_SOURCE_DIR="$(readlink -f $PWD/..)" + +# Directory containing this script +SCRIPT_DIR="$(dirname $0)" + +# Make TAG accessible to called programs +export TAG + +########################################################### +# Generate command line + +declare -a BUILD_CL DOCKER_EXTRA_OPTS +case $CMD in + "shell"|"") # Interactive shell (default) + DOCKER_EXTRA_OPTS=( --privileged ) + if test -z "$*"; then + BUILD_CL=( bash -i ) + else + BUILD_CL=( "$@" ) + fi + ;; + "deb") # Build Debian packages + DOCKER_EXTRA_OPTS=( + # Used in dpkg-buildpackage + -e DEB_BUILD_OPTIONS=$DEB_BUILD_OPTIONS + -e DH_VERBOSE=$DH_VERBOSE + # Used in scripts/build_source_package + -e DEBIAN_SUITE=$DEBIAN_SUITE + -e MAJOR_MINOR_VERSION=$MAJOR_MINOR_VERSION + -e PKGSOURCE=$PKGSOURCE + -e REPO_URL=$REPO_URL + -e TRAVIS_BRANCH=$TRAVIS_BRANCH + -e TRAVIS_PULL_REQUEST=$TRAVIS_PULL_REQUEST + -e TRAVIS_REPO=$TRAVIS_REPO + -e TRAVIS_REPO_SLUG=$TRAVIS_REPO_SLUG + ) + BUILD_CL=( bash -xec " + # configure source package + debian/configure -prxt 8.6; + + # update Changelog and build source package + $SCRIPT_DIR/build_source_package $BUILD_SOURCE + + # build binary packages + dpkg-buildpackage -uc -us ${BUILD_OPTS} -j$JOBS + " + ) + ;; + "test") # RIP build and regression tests + BUILD_CL=( bash -xec " + # Set up build: \`autoconf\` and \`make\` + cd src; + ./autogen.sh; + ./configure --host=\$HOST_MULTIARCH; + + # Build + make -j${JOBS}; + + # Set up runtime: setuid, environment, ini + sudo make setuid >& /dev/null || true; + cd ..; + . scripts/rip-environment; + echo -e 'ANNOUNCE_IPV4=0\nANNOUNCE_IPV6=0' >> \ + etc/linuxcnc/machinekit.ini; + tail etc/linuxcnc/machinekit.ini; + + # Run regression tests + ${RUN_TESTS}" + ) + ;; + *) echo "Unkown command '$CMD'" >&2; exit 1 ;; +esac + +########################################################### +# Run build + +set -x # Show user the command + +# Run the Docker container as follows: +# - Remove container after exit +# - Run interactively with terminal +# - Add any `DOCKER_EXTRA_OPTS` from above +# - As Travis CI user/group +# - Bind-mount home and source directories; start in source directory +# - Pass environment variable `TAG` +# - Set hostname to $IMAGE:$TAG (replace `/` and `:` with `-`) +# - Run build command as set above +# hide --it +docker run \ + --rm \ + "${DOCKER_EXTRA_OPTS[@]}" \ + -u $DUID:$DGID -e USER=${USER} \ + -v ${HOME}:${HOME} -e HOME=${HOME} \ + -v ${BIND_SOURCE_DIR}:${BIND_SOURCE_DIR} -w ${PWD} \ + -e TAG=${TAG} \ + -h ${IMAGE//[\/:]/-}-${TAG} \ + ${IMAGE}:${TAG} \ + "${BUILD_CL[@]}" diff --git a/scripts/build_packagecloud_upload b/scripts/build_packagecloud_upload new file mode 100755 index 0000000000..ad9aa47e4a --- /dev/null +++ b/scripts/build_packagecloud_upload @@ -0,0 +1,65 @@ +#!/bin/bash -e +# +# Upload packages to packagecloud.io +# +# In Travis CI, set the following environment variables: +# - PACKAGECLOUD_USER: Travis CI user name +# - PACKAGECLOUD_TOKEN: ** HIDDEN ** User's Travis CI token +# - PACKAGECLOUD_REPO: Same as the GitHub repo +# - DEPLOY_BRANCH: Only push build results for this branch +# +# The following environment variables should be set in .travis.yml: +# - CMD: (Also may be first arg to script) Exit if not 'deb' +# - TAG: One of amd64/i386/armhf/raspbian +# +# The following environment variables should be set by Travis CI: +# - TRAVIS_TEST_RESULT: Exit if not '0' +# - TRAVIS_PULL_REQUEST: Exit if not 'false' +# - TRAVIS_BRANCH: Exit unless matches DEPLOY_BRANCH +# +# The `package_cloud` ruby gem should be installed + +TAG=${1:-$TAG} + +################################################ +# Checks + +exit_nice () { echo "No packagecloud upload: $*" >&2; exit 0; } +error () { echo "Error: $*" >&2; exit 1; } + +test -n "PACKAGECLOUD_USER" || \ + exit_nice "PACKAGECLOUD_USER not set" +test "$CMD" = "deb" || \ + exit_nice "CMD '$CMD' != 'deb'" +test "$TRAVIS_TEST_RESULT" -eq 0 || \ + exit_nice "TRAVIS_TEST_RESULT '$TRAVIS_TEST_RESULT' != '0'" +test "$TRAVIS_PULL_REQUEST" = false || \ + exit_nice "TRAVIS_PULL_REQUEST '$TRAVIS_PULL_REQUEST' != 'false'" +test "$TRAVIS_BRANCH" = "${DEPLOY_BRANCH:-master}" || \ + exit_nice "TRAVIS_BRANCH '$TRAVIS_BRANCH' != '${DEPLOY_BRANCH:-master}'" +test -n "$TAG" || error "TAG not set" + + +################################################ +# Set up + +case $TAG in + raspbian) DISTRO=raspbian; exit_nice "FIXME: not pushing Raspbian packages" ;; + amd64|i386|armhf) DISTRO=jessie ;; + *) error "Unknown tag '$TAG'" ;; +esac + +PACKAGECLOUD_REPO=${PACKAGECLOUD_REPO:-machinekit} +PACKAGECLOUD_ARCHIVE=${PACKAGECLOUD_USER}/${PACKAGECLOUD_REPO}/debian/${DISTRO} + + +################################################ +# Deploy + +if [ "${TAG}" = "amd64" ]; then + set -x # Show user +# package_cloud push ${PACKAGECLOUD_ARCHIVE} ../*.dsc +else + set -x # Show user +fi +#package_cloud push ${PACKAGECLOUD_ARCHIVE} ../*_$TAG.deb diff --git a/scripts/build_source_package b/scripts/build_source_package new file mode 100755 index 0000000000..744fc2b520 --- /dev/null +++ b/scripts/build_source_package @@ -0,0 +1,110 @@ +#!/bin/bash -e +# +# Update the Changelog file to create packages with version/release +# that continuously increments (to ensure `apt-get upgrade` works) and +# that contains identifying information about the package's source (to +# indicate who built the package, how, and from what revision). + + +# Whether to actually build the source +BUILD_SOURCE=$1 + +# Computed variables +SOURCE_DIR=$(readlink -f $(dirname ${0})/..) +test ${TRAVIS_PULL_REQUEST:-false} = false && IS_PR=false || IS_PR=true + +case $TAG in + amd64|i386|armhf) DISTRO=jessie ;; + raspbian) DISTRO=raspbian ;; +esac + +COMMIT_TIMESTAMP="$(git log -1 --pretty=format:%at)" +SHA1SHORT="$(git log -1 --pretty=format:%h)" +COMMITTER_NAME="$(git log -1 --pretty=format:%an)" +COMMITTER_EMAIL="$(git log -1 --pretty=format:%ae)" +BRANCH_NAME="$(git rev-parse --symbolic-full-name HEAD)" +BRANCH_NAME="${BRANCH_NAME//*\//}" # convert / to - + +# Supplied variables for package configuration +MAJOR_MINOR_VERSION="${MAJOR_MINOR_VERSION:-0.1}" +TRAVIS_REPO=${TRAVIS_REPO_SLUG:+travis.${TRAVIS_REPO_SLUG/\//.}} +PKGSOURCE="${PKGSOURCE:-${TRAVIS_REPO:-$(hostname)}}" +DEBIAN_SUITE="${DEBIAN_SUITE:-experimental}" +REPO_URL="${REPO_URL:-https://github.com/arceye/Machinekit-hal}" + +# Compute version +if ${IS_PR}; then + # Use build timestamp (now) as pkg version patchlevel + TIMESTAMP="$(date +%s)" + PR_OR_BRANCH="pr${TRAVIS_PULL_REQUEST}" + COMMIT_URL="${REPO_URL}/pull/${TRAVIS_PULL_REQUEST}" +else + # Use merge commit timestamp as pkg version patchlevel + TIMESTAMP="$COMMIT_TIMESTAMP" + PR_OR_BRANCH="${TRAVIS_BRANCH:-${BRANCH_NAME:-unk.branch}}" + COMMIT_URL="${REPO_URL}/commit/${SHA1SHORT}" +fi + +# sanitize upstream identifier +UPSTREAM_ID=${PKGSOURCE//[-_]/}.${PR_OR_BRANCH//[-_]/} + +# Final version +VERSION="${MAJOR_MINOR_VERSION}.${TIMESTAMP}.git${SHA1SHORT}" + +# Final release +RELEASE="1${UPSTREAM_ID}~1${DISTRO}" + +########################################################### +# Debug output +echo "COMMIT_TIMESTAMP=$COMMIT_TIMESTAMP" +echo "SHA1SHORT=$SHA1SHORT" +echo "COMMITTER_NAME=$COMMITTER_NAME" +echo "COMMITTER_EMAIL=$COMMITTER_EMAIL" +echo "BRANCH_NAME=$BRANCH_NAME" +echo "MAJOR_MINOR_VERSION=$MAJOR_MINOR_VERSION" +echo "TRAVIS_REPO=$TRAVIS_REPO" +echo "PKGSOURCE=$PKGSOURCE" +echo "DEBIAN_SUITE=$DEBIAN_SUITE" +echo "REPO_URL=$REPO_URL" +echo "TIMESTAMP=$TIMESTAMP" +echo "PR_OR_BRANCH=$PR_OR_BRANCH" +echo "COMMIT_URL=$COMMIT_URL" +echo "UPSTREAM_ID=$UPSTREAM_ID" +echo "VERSION=$VERSION" +echo "RELEASE=$RELEASE" + + +########################################################### +# Generate debian/changelog entry +# +# https://www.debian.org/doc/debian-policy/ch-source.html#s-dpkgchangelog + +cd ${SOURCE_DIR} + +mv debian/changelog debian/changelog.orig +cat > debian/changelog < $(date -R) + +EOF +echo "New changelog entry:" +cat debian/changelog # debug output +cat debian/changelog.orig >> debian/changelog + +if test "$BUILD_SOURCE" = true; then + set -x # Let user see + + # create .orig tarball + git archive HEAD | \ + bzip2 -z | tee ../machinekit-hal_${VERSION}.orig.tar.bz2 >/dev/null + + # build source package + dpkg-source -b . +fi From 15bfacb56ad8ffbaa10234a6b49af4aaa398430c Mon Sep 17 00:00:00 2001 From: Mick Date: Sun, 10 Sep 2017 11:30:59 +0100 Subject: [PATCH 109/516] Make PASM created pru_generic* binaries flavour independent. They will now be located at $EMC2_RTLIB_BASE_DIR/prubin for binaries and $EMC_HOME/rtlib/prubin for RIP builds ie. in a dir immediately alongside the existing flavour dirs then symlinked to each flavour dir so that configs are unchanged. *********** Unfinished **************** Signed-off-by: Mick --- debian/configure | 9 ++++-- debian/control.posix-stretch.in | 14 ++++++++ debian/machinekit-rt-preempt.install.in | 1 - debian/pru-postinst.in | 7 ++++ debian/rules.in | 15 +++++++++ src/Makefile | 4 +++ src/configure.ac | 6 ++++ src/hal/components/hal_pru.c | 18 ++++++----- src/hal/drivers/hal_pru_generic/Submakefile | 36 +++++++++++---------- 9 files changed, 82 insertions(+), 28 deletions(-) create mode 100644 debian/control.posix-stretch.in create mode 100644 debian/pru-postinst.in diff --git a/debian/configure b/debian/configure index c5c9049782..078d588807 100755 --- a/debian/configure +++ b/debian/configure @@ -93,8 +93,13 @@ rules_set_kthreads_headers() { } do_posix() { - cat control.posix.in >> control - echo "debian/control: added POSIX threads package" >&2 + if [[ $DISTRO_CODENAME == "stretch" ]] ; then + cat control.posix-stretch.in >> control + echo "debian/control: added POSIX threads package for stretch" >&2 + else + cat control.posix.in >> control + echo "debian/control: added POSIX threads package" >&2 + fi rules_enable_threads posix HAVE_FLAVOR=true } diff --git a/debian/control.posix-stretch.in b/debian/control.posix-stretch.in new file mode 100644 index 0000000000..1f7aa57018 --- /dev/null +++ b/debian/control.posix-stretch.in @@ -0,0 +1,14 @@ + +Package: machinekit-posix +Architecture: any +Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime, czmq, zeromq +Provides: machinekit-rt-threads +Breaks: machinekit-dev +Enhances: machinekit +Description: PC based motion controller for real-time Linux + Machinekit is the next-generation Enhanced Machine Controller which + provides motion control for CNC machine tools and robotic + applications (milling, cutting, routing, etc.). + . + This package provides components and drivers that run on a non-realtime + (Posix) system. diff --git a/debian/machinekit-rt-preempt.install.in b/debian/machinekit-rt-preempt.install.in index fe98d04c53..233376029f 100644 --- a/debian/machinekit-rt-preempt.install.in +++ b/debian/machinekit-rt-preempt.install.in @@ -8,4 +8,3 @@ usr/lib/*.so usr/bin/comp usr/share/linuxcnc/Makefile.modinc usr/share/linuxcnc/Makefile.inc - diff --git a/debian/pru-postinst.in b/debian/pru-postinst.in new file mode 100644 index 0000000000..a79aaf4154 --- /dev/null +++ b/debian/pru-postinst.in @@ -0,0 +1,7 @@ +# !/bin/sh + +# make symlinks to BBB pru_*.* +ln -s /usr/lib/linuxcnc/prubin/pru_generic.bin /usr/lib/linuxcnc/posix/pru_generic.bin +ln -s /usr/lib/linuxcnc/prubin/pru_generic.dbg /usr/lib/linuxcnc/posix/pru_generic.dbg +ln -s /usr/lib/linuxcnc/prubin/pru_decamux.bin /usr/lib/linuxcnc/posix/pru_decamux.bin +ln -s /usr/lib/linuxcnc/prubin/pru_decamux.dbg /usr/lib/linuxcnc/posix/pru_decamux.dbg diff --git a/debian/rules.in b/debian/rules.in index 67996788ad..536fc7426a 100755 --- a/debian/rules.in +++ b/debian/rules.in @@ -193,6 +193,21 @@ endif echo "usr/include/linuxcnc/userpci/*.h" >> debian/machinekit-xenomai.install; \ fi + ## only want this for armhf builds ## + if [ -f debian/platform_pc ] ; then \ + rm -f debian/platform_pc; \ + else \ + echo "usr/lib/linuxcnc/prubin/*" >> debian/machinekit-posix.install; \ + echo "usr/lib/linuxcnc/prubin/*" >> debian/machinekit-rt-preempt.install; \ + echo "usr/lib/linuxcnc/prubin/*" >> debian/machinekit-xenomai.install; \ + mkdir -p debian/tmp/usr/lib/linuxcnc/prubin; \ + cp rtlib/prubin/* debian/tmp/usr/lib/linuxcnc/prubin; \ + cp debian/pru-postinst.in debian/machinekit-posix.postinst; \ + cp debian/pru-postinst.in debian/machinekit-rt-preempt.postinst; \ + cp debian/pru-postinst.in debian/machinekit-xenomai.postinst; \ + fi + + dh_install --sourcedir=debian/tmp --fail-missing -Xusr/bin/pasm # Build architecture-independent files here. diff --git a/src/Makefile b/src/Makefile index cb2301c8fb..5e7f8164c8 100755 --- a/src/Makefile +++ b/src/Makefile @@ -151,6 +151,10 @@ ifeq ($(RUN_IN_PLACE)+$(BUILD_DRIVERS),yes+yes) \( 0`stat -c %u ../libexec/rtapi_app_$$f 2>/dev/null` \ -ne 0 -o ! -u ../libexec/rtapi_app_$$f \) \ && need_setuid=1; \ + ln -s $(EMC2_HOME)/rtlib/prubin/pru_generic.bin ../rtlib/$$f/pru_generic.bin; \ + ln -s $(EMC2_HOME)/rtlib/prubin/pru_generic.dbg ../rtlib/$$f/pru_generic.dbg; \ + ln -s $(EMC2_HOME)/rtlib/prubin/pru_decamux.bin ../rtlib/$$f/pru_decamux.bin; \ + ln -s $(EMC2_HOME)/rtlib/prubin/pru_decamux.dbg ../rtlib/$$f/pru_decamux.dbg; \ done; \ test "$$need_setuid" = 1 && \ $(VECHO) -n "You now need to run 'sudo make setuid' " && \ diff --git a/src/configure.ac b/src/configure.ac index c1e4a7e755..d39bfac0b7 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -758,6 +758,12 @@ else fi fi +if test $TARGET_PLATFORM_PC = true; then + echo "*** TARGET_PLATFORM_PC=true ***" + touch ../debian/platform_pc +fi + + # Print messages about what platforms are to be enabled or disabled AC_MSG_CHECKING(platform-pc) AC_MSG_RESULT([$platform_pc_reason]) diff --git a/src/hal/components/hal_pru.c b/src/hal/components/hal_pru.c index d4378fd20c..c1e7c1daab 100644 --- a/src/hal/components/hal_pru.c +++ b/src/hal/components/hal_pru.c @@ -22,7 +22,7 @@ #include // load this PRU code (prefixed by EMC_RTLIB_DIR) -#define DEFAULT_CODE "blinkleds.bin" +#define DEFAULT_CODE "pru_generic.bin" #include "prussdrv.h" // UIO interface to uio_pruss #include "pru.h" // PRU-related defines @@ -334,27 +334,29 @@ static int setup_pru(int pru, char *filename, int disabled) char pru_binpath[PATH_MAX]; // default the .bin filename if not given - if (!strlen(filename)) + if (!strlen(filename)){ + rtapi_print_msg(RTAPI_MSG_ERR, + "%s: no filename given - default to %s\n", + modname, DEFAULT_CODE); filename = DEFAULT_CODE; - + } strcpy(pru_binpath, filename); struct stat statb; if (!((stat(pru_binpath, &statb) == 0) && S_ISREG(statb.st_mode))) { - + rtapi_print_msg(RTAPI_MSG_ERR, + "%s: filename %s does not exist.\n", modname, pru_binpath); // filename not found, prefix fw_path & try that: strcpy(pru_binpath, fw_path); strcat(pru_binpath, filename); if (!((stat(pru_binpath, &statb) == 0) && S_ISREG(statb.st_mode))) { - // nyet, complain - getcwd(pru_binpath, sizeof(pru_binpath)); rtapi_print_msg(RTAPI_MSG_ERR, - "%s: cant find %s in %s or %s\n", - modname, filename, pru_binpath, fw_path); + "%s: cannot find filename %s\n", + modname, pru_binpath); return -ENOENT; } } diff --git a/src/hal/drivers/hal_pru_generic/Submakefile b/src/hal/drivers/hal_pru_generic/Submakefile index 4ddbbbf32e..ae91111af9 100644 --- a/src/hal/drivers/hal_pru_generic/Submakefile +++ b/src/hal/drivers/hal_pru_generic/Submakefile @@ -1,5 +1,14 @@ ifdef TARGET_PLATFORM_BEAGLEBONE +# These are actually the same location but the package +# build needs to set a path relative to the Makefile, +# from whence it will be copied to debian/tmp +ifeq ($(RUN_IN_PLACE),yes) +PRUBINDIR := $(EMC2_HOME)/rtlib/prubin +else +PRUBINDIR := ../rtlib/prubin +endif + # support for ARM335x PRU (Programmable Realtime Unit) components and SUPPORT_DIR := hal/support PRU_SRC_DIR := hal/drivers/hal_pru_generic @@ -10,17 +19,10 @@ PRU_MAINS := pru_generic pru_decamux PRU_FILES := $(wildcard $(PRU_SRC_DIR)/*.p) # .bin file produced by PASM -b goes in rtlib -PRU_BIN := $(patsubst %,$(RTLIBDIR)/%.bin,$(PRU_MAINS)) -PRU_DBG := $(patsubst %,$(RTLIBDIR)/%.dbg,$(PRU_MAINS)) - -# .bin files are targets -# Adding to TARGETS builds the PRU code once and puts it in the RTLIBDIR for -# the first defined RTOS flavor (typically posix) -#TARGETS += $(PRU_BIN) $(PRU_DBG) -# Only build PRU code for the Xenomai RTOS flavor -ifeq ($(threads),xenomai) -modules : $(PRU_BIN) $(PRU_DBG) -endif +PRU_BIN := $(patsubst %,$(PRUBINDIR)/%.bin,$(PRU_MAINS)) +PRU_DBG := $(patsubst %,$(PRUBINDIR)/%.dbg,$(PRU_MAINS)) + +modules : $(PRU_BIN) $(PRU_DBG) # .bin output, create listing PASM_BINFLAGS := -b -L -d @@ -28,7 +30,7 @@ PASM_BINFLAGS := -b -L -d # conversion rule for the above # assemble .p into .bin object files -$(RTLIBDIR)/%.bin $(RTLIBDIR)/%.dbg: $(PASM) +$(PRUBINDIR)/%.bin $(PRUBINDIR)/%.dbg: $(PASM) PRU_DEPS := $(patsubst %,objects/%,$(patsubst %,$(PRU_SRC_DIR)/%.d,$(PRU_MAINS))) @@ -41,14 +43,14 @@ $(PRU_DEPS): objects/%.d : %.p $(Q)cpp -x c -MM -MG -MT objects/$(patsubst %.p,%.bin,$<) -o $@ $< objects/%.bin objects/%.dbg : %.p objects/%.d $(PASM) - $(Q)mkdir -p $(RTLIBDIR) + $(Q)mkdir -p $(PRUBINDIR) $(ECHO) Assembling PRU code $@ $(Q)$(PASM) $(PASM_BINFLAGS) $< $(basename $@) -$(PRU_BIN): $(RTLIBDIR)/%.bin : objects/$(PRU_SRC_DIR)/%.bin - cp $^ $@ +$(PRU_BIN): $(PRUBINDIR)/%.bin : objects/$(PRU_SRC_DIR)/%.bin + cp -f $^ $@ -$(PRU_DBG): $(RTLIBDIR)/%.dbg : objects/$(PRU_SRC_DIR)/%.dbg - cp $^ $@ +$(PRU_DBG): $(PRUBINDIR)/%.dbg : objects/$(PRU_SRC_DIR)/%.dbg + cp -f $^ $@ endif From aec1dbe86db4124d2228f57d88e9a34f3d25d5d4 Mon Sep 17 00:00:00 2001 From: Mick Date: Fri, 15 Sep 2017 12:50:53 +0100 Subject: [PATCH 110/516] Remove machinekit-hal specific stanzas --- scripts/build_docker | 2 +- scripts/build_source_package | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/build_docker b/scripts/build_docker index 73d415a485..69d884bc7b 100755 --- a/scripts/build_docker +++ b/scripts/build_docker @@ -1,6 +1,6 @@ #!/bin/bash -e # -# Build/cross-build Machinekit-HAL in Docker +# Build/cross-build Machinekit in Docker # # This script can be run manually or in Travis CI. Sample manual # usage, `$PWD` is the `src/` directory: diff --git a/scripts/build_source_package b/scripts/build_source_package index 744fc2b520..8cb5d3ab6d 100755 --- a/scripts/build_source_package +++ b/scripts/build_source_package @@ -30,7 +30,7 @@ MAJOR_MINOR_VERSION="${MAJOR_MINOR_VERSION:-0.1}" TRAVIS_REPO=${TRAVIS_REPO_SLUG:+travis.${TRAVIS_REPO_SLUG/\//.}} PKGSOURCE="${PKGSOURCE:-${TRAVIS_REPO:-$(hostname)}}" DEBIAN_SUITE="${DEBIAN_SUITE:-experimental}" -REPO_URL="${REPO_URL:-https://github.com/arceye/Machinekit-hal}" +REPO_URL="${REPO_URL:-https://github.com/machinekit/machinekit}" # Compute version if ${IS_PR}; then @@ -83,7 +83,7 @@ cd ${SOURCE_DIR} mv debian/changelog debian/changelog.orig cat > debian/changelog </dev/null + bzip2 -z | tee ../machinekit_${VERSION}.orig.tar.bz2 >/dev/null # build source package dpkg-source -b . From da7162cf103517b0c66e81aef00200a5e5d1cf5e Mon Sep 17 00:00:00 2001 From: Mick Date: Sun, 17 Sep 2017 14:48:35 +0100 Subject: [PATCH 111/516] Finish packaging alterations for pru*.* --- debian/armhf.postrm.in | 5 +++++ debian/configure | 9 ++++++++- debian/control.rt-preempt-stretch.in | 2 +- debian/control.xenomai-stretch.in | 16 ++++++++++++++++ debian/{pru-postinst.in => posix-postinst.add} | 8 +++++++- debian/rt-preempt-postinst.add | 13 +++++++++++++ debian/rules.in | 13 ++++++++----- debian/xenomai-postinst.add | 13 +++++++++++++ 8 files changed, 71 insertions(+), 8 deletions(-) create mode 100755 debian/armhf.postrm.in create mode 100644 debian/control.xenomai-stretch.in rename debian/{pru-postinst.in => posix-postinst.add} (55%) create mode 100644 debian/rt-preempt-postinst.add create mode 100644 debian/xenomai-postinst.add diff --git a/debian/armhf.postrm.in b/debian/armhf.postrm.in new file mode 100755 index 0000000000..b8dcf3c393 --- /dev/null +++ b/debian/armhf.postrm.in @@ -0,0 +1,5 @@ + +# remove the whole dir and contents, uninstall will have left it +# because the symlinks still exist + +rm -r -d -f /usr/lib/linuxcnc diff --git a/debian/configure b/debian/configure index 078d588807..d43b31853d 100755 --- a/debian/configure +++ b/debian/configure @@ -119,9 +119,16 @@ do_rt-preempt() { } do_xenomai() { + if [[ $DISTRO_CODENAME == "stretch" ]] ; then + cat control.xenomai-stretch.in >> control + echo "debian/control: added xenomai threads package for Stretch" >&2 + else + cat control.xenomai.in >> control + echo "debian/control: added xenomai threads package for Wheezy/Jessie" >&2 + fi + # Be sure the -dev files only appear once BUILD_DEPS="${BUILD_DEPS/libxenomai-dev, /}libxenomai-dev, " - cat control.xenomai.in >> control echo "debian/control: added Xenomai (userland) threads package" \ "with Build-Depends:" >&2 echo " libxenomai-dev" >&2 diff --git a/debian/control.rt-preempt-stretch.in b/debian/control.rt-preempt-stretch.in index 0a2d564b5d..a38ee4b5db 100644 --- a/debian/control.rt-preempt-stretch.in +++ b/debian/control.rt-preempt-stretch.in @@ -1,7 +1,7 @@ Package: machinekit-rt-preempt Architecture: any -Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime, +Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime, czmq, zeromq, # These Debian-style RT_PREEMPT package names are restricted by # architecture; ARM arch SOCs are all incompatible, so this can't be # easily done for ARM. diff --git a/debian/control.xenomai-stretch.in b/debian/control.xenomai-stretch.in new file mode 100644 index 0000000000..d0732671cf --- /dev/null +++ b/debian/control.xenomai-stretch.in @@ -0,0 +1,16 @@ + +Package: machinekit-xenomai +Architecture: any +Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime, czmq, zeromq, + xenomai-runtime +Provides: machinekit-rt-threads +Recommends: hostmot2-firmware-all [!armhf] +Breaks: machinekit-dev +Enhances: machinekit +Description: PC based motion controller for real-time Linux + Machinekit is the next-generation Enhanced Machine Controller which + provides motion control for CNC machine tools and robotic + applications (milling, cutting, routing, etc.). + . + This package provides components and drivers that run on a Xenomai + realtime system, with userspace threads. diff --git a/debian/pru-postinst.in b/debian/posix-postinst.add similarity index 55% rename from debian/pru-postinst.in rename to debian/posix-postinst.add index a79aaf4154..a05ea7f88f 100644 --- a/debian/pru-postinst.in +++ b/debian/posix-postinst.add @@ -1,4 +1,10 @@ -# !/bin/sh + +# ensure the links do not pre-exist, from previous installs. +# or user work-arounds, which will produce error messages +rm -f /usr/lib/linuxcnc/posix/pru_generic.bin +rm -f /usr/lib/linuxcnc/posix/pru_generic.dbg +rm -f /usr/lib/linuxcnc/posix/pru_decamux.bin +rm -f /usr/lib/linuxcnc/posix/pru_decamux.dbg # make symlinks to BBB pru_*.* ln -s /usr/lib/linuxcnc/prubin/pru_generic.bin /usr/lib/linuxcnc/posix/pru_generic.bin diff --git a/debian/rt-preempt-postinst.add b/debian/rt-preempt-postinst.add new file mode 100644 index 0000000000..1747b3faab --- /dev/null +++ b/debian/rt-preempt-postinst.add @@ -0,0 +1,13 @@ + +# ensure the links do not pre-exist, from previous installs +# or user work-arounds, which will produce error messages +rm -f /usr/lib/linuxcnc/rt-preempt/pru_generic.bin +rm -f /usr/lib/linuxcnc/rt-preempt/pru_generic.dbg +rm -f /usr/lib/linuxcnc/rt-preempt/pru_decamux.bin +rm -f /usr/lib/linuxcnc/rt-preempt/pru_decamux.dbg + +# make symlinks to BBB pru_*.* +ln -s /usr/lib/linuxcnc/prubin/pru_generic.bin /usr/lib/linuxcnc/rt-preempt/pru_generic.bin +ln -s /usr/lib/linuxcnc/prubin/pru_generic.dbg /usr/lib/linuxcnc/rt-preempt/pru_generic.dbg +ln -s /usr/lib/linuxcnc/prubin/pru_decamux.bin /usr/lib/linuxcnc/rt-preempt/pru_decamux.bin +ln -s /usr/lib/linuxcnc/prubin/pru_decamux.dbg /usr/lib/linuxcnc/rt-preempt/pru_decamux.dbg diff --git a/debian/rules.in b/debian/rules.in index 103b3f28fd..9338135f02 100755 --- a/debian/rules.in +++ b/debian/rules.in @@ -197,14 +197,17 @@ endif if [ -f debian/platform_pc ] ; then \ rm -f debian/platform_pc; \ else \ + mkdir -p debian/tmp/usr/lib/linuxcnc/prubin; \ + cp rtlib/prubin/* debian/tmp/usr/lib/linuxcnc/prubin; \ + cat debian/posix-postinst.add >> debian/machinekit-posix.postinst; \ + cat debian/rt-preempt-postinst.add >> debian/machinekit-rt-preempt.postinst; \ + cat debian/xenomai-postinst.add >> debian/machinekit-xenomai.postinst; \ + cat debian/armhf.postrm.in >> debian/machinekit-posix.postrm; \ + cat debian/armhf.postrm.in >> debian/machinekit-rt-preempt.postrm; \ + cat debian/armhf.postrm.in >> debian/machinekit-xenomai.postrm; \ echo "usr/lib/linuxcnc/prubin/*" >> debian/machinekit-posix.install; \ echo "usr/lib/linuxcnc/prubin/*" >> debian/machinekit-rt-preempt.install; \ echo "usr/lib/linuxcnc/prubin/*" >> debian/machinekit-xenomai.install; \ - mkdir -p debian/tmp/usr/lib/linuxcnc/prubin; \ - cp rtlib/prubin/* debian/tmp/usr/lib/linuxcnc/prubin; \ - cp debian/pru-postinst.in debian/machinekit-posix.postinst; \ - cp debian/pru-postinst.in debian/machinekit-rt-preempt.postinst; \ - cp debian/pru-postinst.in debian/machinekit-xenomai.postinst; \ fi diff --git a/debian/xenomai-postinst.add b/debian/xenomai-postinst.add new file mode 100644 index 0000000000..67ef61ea13 --- /dev/null +++ b/debian/xenomai-postinst.add @@ -0,0 +1,13 @@ + +# ensure the links do not pre-exist, from previous installs. +# or user work-arounds, which will produce error messages +rm -f /usr/lib/linuxcnc/xenomai/pru_generic.bin +rm -f /usr/lib/linuxcnc/xenomai/pru_generic.dbg +rm -f /usr/lib/linuxcnc/xenomai/pru_decamux.bin +rm -f /usr/lib/linuxcnc/xenomai/pru_decamux.dbg + +# make symlinks to BBB pru_*.* +ln -s /usr/lib/linuxcnc/prubin/pru_generic.bin /usr/lib/linuxcnc/xenomai/pru_generic.bin +ln -s /usr/lib/linuxcnc/prubin/pru_generic.dbg /usr/lib/linuxcnc/xenomai/pru_generic.dbg +ln -s /usr/lib/linuxcnc/prubin/pru_decamux.bin /usr/lib/linuxcnc/xenomai/pru_decamux.bin +ln -s /usr/lib/linuxcnc/prubin/pru_decamux.dbg /usr/lib/linuxcnc/xenomai/pru_decamux.dbg From 9fe3f34347464ba5a8451f4067c36c7f65ebf7af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Wed, 20 Sep 2017 19:56:07 +0200 Subject: [PATCH 112/516] mklauncher: read stdout in chunks and not in lines --- src/machinetalk/mklauncher/mklauncher.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/machinetalk/mklauncher/mklauncher.py b/src/machinetalk/mklauncher/mklauncher.py index 7aeda6bc52..62d3e98b94 100644 --- a/src/machinetalk/mklauncher/mklauncher.py +++ b/src/machinetalk/mklauncher/mklauncher.py @@ -320,7 +320,7 @@ def _update_launcher_status(self): stdout_index = len(launcher.output) while True: try: - line = process.stdout.readline() + line = process.stdout.read() stdoutLine = StdoutLine() stdoutLine.index = stdout_index stdoutLine.line = line From e60180acc4b53774158c5592867adcc9f51886fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Sat, 23 Sep 2017 11:28:14 +0200 Subject: [PATCH 113/516] mklauncher: use absolute path for importances --- src/machinetalk/mklauncher/mklauncher.py | 1 + src/machinetalk/mklauncher/test_mklauncher.py | 32 ++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/machinetalk/mklauncher/mklauncher.py b/src/machinetalk/mklauncher/mklauncher.py index 62d3e98b94..31e1af4852 100644 --- a/src/machinetalk/mklauncher/mklauncher.py +++ b/src/machinetalk/mklauncher/mklauncher.py @@ -162,6 +162,7 @@ def _search_launchers(self, directories): if INI_NAME not in files: continue + root = os.path.abspath(os.path.expanduser(root)) iniFile = os.path.join(root, INI_NAME) cfg = configparser.ConfigParser(CONFIG_DEFAULTS) cfg.read(iniFile) diff --git a/src/machinetalk/mklauncher/test_mklauncher.py b/src/machinetalk/mklauncher/test_mklauncher.py index 75563835dc..df0db15eb9 100644 --- a/src/machinetalk/mklauncher/test_mklauncher.py +++ b/src/machinetalk/mklauncher/test_mklauncher.py @@ -63,7 +63,6 @@ def test_reading_launcher_importances_works(valid_importance_file): importances.load() - print(importances._importances) assert importances['/foo/bar/baz:myconfig'] == 10 assert importances['/foo/bar/baz:anotherconfig'] == 2 @@ -86,6 +85,37 @@ def test_writing_launcher_importances_works(tmpdir): assert 'another_config = 0' in data +def test_rewriting_launcher_importances_works(valid_importance_file): + importances = LauncherImportance(valid_importance_file) + + importances.load() + importances['/foo/bar/baz:myconfig'] = 8 + importances.save() + + assert os.path.exists(valid_importance_file) + with open(valid_importance_file) as save_file: + data = save_file.read() + assert '[/foo/bar/baz]' in data + assert 'myconfig = 8' in data + + +def test_regression_paths_with_dot_cause_problems(tmpdir): + save_file = tmpdir.join('test/output.ini') + importances = LauncherImportance(str(save_file)) + + importances['./foo/bar/:config1'] = 10 + importances['.:config1'] = 2 + importances.save() + importances.load() + importances['./foo/bar/:config1'] == 3 + importances.save() + + assert os.path.exists(str(save_file)) + data = save_file.read() + assert '[./foo/bar/]' in data + assert 'config1 = 3' not in data # ConfigParser causes problems with . in the section name + + def test_reading_launcher_importances_with_non_existing_file_does_not_throw_error(tmpdir): save_file = tmpdir.join('save.ini') importances = LauncherImportance(str(save_file)) From 4234c5a3470fc9fb648bff83d7975a5d35510143 Mon Sep 17 00:00:00 2001 From: Daniel Skrlin Date: Sun, 24 Sep 2017 14:03:34 -0500 Subject: [PATCH 114/516] Update hal_p260c.c --- src/hal/drivers/hal_p260c.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hal/drivers/hal_p260c.c b/src/hal/drivers/hal_p260c.c index c547281da0..7ae422565f 100644 --- a/src/hal/drivers/hal_p260c.c +++ b/src/hal/drivers/hal_p260c.c @@ -33,7 +33,7 @@ #define MODNAME "hal_p260c" /* module information */ -MODULE_AUTHOR("Colin Whittaker"); +MODULE_AUTHOR("Colin Whittaker for PMC Stone, Inc."); MODULE_DESCRIPTION("Driver for P260C boards in a RS-485 string. Version 1.2"); MODULE_LICENSE("GPL"); From 7cd1dfeeb960e14684275919283a0a1bedaeb7d2 Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 25 Sep 2017 16:51:18 -0500 Subject: [PATCH 115/516] machinetalk/support/unionread.c: silence compile warning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Compiling machinetalk/support/unionread.c machinetalk/support/unionread.c: In function ‘print_container’: machinetalk/support/unionread.c:60:33: warning: \ format ‘%lu’ expects argument of type ‘long unsigned int’, \ but argument 2 has type ‘uint64_t {aka long long unsigned int}’ \ [-Wformat=] printf("submessage length=%lu\n", length); ^ --- src/machinetalk/support/unionread.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/machinetalk/support/unionread.c b/src/machinetalk/support/unionread.c index 79ad04a44d..fed965caf7 100644 --- a/src/machinetalk/support/unionread.c +++ b/src/machinetalk/support/unionread.c @@ -57,7 +57,7 @@ bool print_container(pb_istream_t *stream) if (!pb_decode_varint(stream, &length)) { printf("Parsing field#2 failed: %s\n", PB_GET_ERROR(stream)); } - printf("submessage length=%lu\n", length); + printf("submessage length=%llu\n", length); printf("submessage: %s NML; %s Motion\n", is_NML_container(tag) ? "is" : "not", From 98eb6478cedce22b947d617ec53ef82535438236 Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 25 Sep 2017 16:52:28 -0500 Subject: [PATCH 116/516] scripts/build_docker: updates for Stretch The `mk-cross-builder` scripts are being updated for Stretch, and tags will append `_9` to signify Stretch. --- scripts/build_docker | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/build_docker b/scripts/build_docker index 69d884bc7b..a76d3aab50 100755 --- a/scripts/build_docker +++ b/scripts/build_docker @@ -34,17 +34,17 @@ shift $(($OPTIND - 1)) # Set build parameters case ${TAG} in - amd64) + amd64*) BUILD_OPTS='-b' # Build all binary packages RUN_TESTS='runtests tests' # Run tests on build arch ;; - i386) # Machine arch: i386 + i386*) # Machine arch: i386 BUILD_OPTS="-a i386" # - Set machine arch ;;& - armhf|raspbian) # Machine arch: armhf + armhf*|raspbian*) # Machine arch: armhf BUILD_OPTS="-a armhf" # - Set machine arch ;;& - i386|armhf|raspbian) # Cross-compile/foreign arch + i386*|armhf*|raspbian*) # Cross-compile/foreign arch BUILD_OPTS+=" -B" # - Only build arch binary packages BUILD_OPTS+=" -d" # - Root fs missing build deps; force RUN_TESTS='true' # - Don't run tests From 5b35ca40ba574cdc57250e75592838c935fd4cda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Thu, 5 Oct 2017 18:45:13 +0200 Subject: [PATCH 117/516] mkwrapper: fix incremental update of tool table when modified --- src/machinetalk/mkwrapper/mkwrapper.py | 30 +++++++++++++++----------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/machinetalk/mkwrapper/mkwrapper.py b/src/machinetalk/mkwrapper/mkwrapper.py index a9580633d0..ce1f489920 100644 --- a/src/machinetalk/mkwrapper/mkwrapper.py +++ b/src/machinetalk/mkwrapper/mkwrapper.py @@ -1107,6 +1107,7 @@ def update_io(self, stat): for index, statToolResult in enumerate(stat.tool_table): txToolResult.Clear() resultModified = False + newItem = False if (index == 0 and not self.randomToolChanger): continue @@ -1114,17 +1115,18 @@ def update_io(self, stat): if (statToolResult.id == -1 and not self.randomToolChanger): break # last tool in table, except index = 0 (spindle !) - if len(self.status.io.tool_table) == tableIndex: - self.status.io.tool_table.add() - self.status.io.tool_table[tableIndex].index = tableIndex - self.status.io.tool_table[tableIndex].id = 0 - self.status.io.tool_table[tableIndex].offset.MergeFrom(self.zero_position()) - self.status.io.tool_table[tableIndex].diameter = 0.0 - self.status.io.tool_table[tableIndex].frontangle = 0.0 - self.status.io.tool_table[tableIndex].backangle = 0.0 - self.status.io.tool_table[tableIndex].orientation = 0 - self.status.io.tool_table[tableIndex].comment = "" - self.status.io.tool_table[tableIndex].pocket = 0 + if len(self.status.io.tool_table) == tableIndex: # item added + item = self.status.io.tool_table.add() + item.index = tableIndex + item.id = 0 + item.offset.MergeFrom(self.zero_position()) + item.diameter = 0.0 + item.frontangle = 0.0 + item.backangle = 0.0 + item.orientation = 0 + item.comment = "" + item.pocket = 0 + newItem = True toolResult = self.status.io.tool_table[tableIndex] @@ -1146,7 +1148,10 @@ def update_io(self, stat): if resultModified: txToolResult.index = tableIndex - self.statusTx.io.tool_table.add().CopyFrom(txToolResult) + if newItem: + self.statusTx.io.tool_table.add().CopyFrom(toolResult) # make sure to send update + else: + self.statusTx.io.tool_table.add().CopyFrom(txToolResult) modified = True toolTableChanged = True @@ -2269,5 +2274,6 @@ def main(): print("threads stopped") sys.exit(0) + if __name__ == "__main__": main() From 4031804c963485f2303a7fc7687541a7f462fae3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Fri, 6 Oct 2017 12:16:07 +0200 Subject: [PATCH 118/516] Makefile: enforce creation of symlinks --- src/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Makefile b/src/Makefile index 5e7f8164c8..1d3085e176 100755 --- a/src/Makefile +++ b/src/Makefile @@ -151,10 +151,10 @@ ifeq ($(RUN_IN_PLACE)+$(BUILD_DRIVERS),yes+yes) \( 0`stat -c %u ../libexec/rtapi_app_$$f 2>/dev/null` \ -ne 0 -o ! -u ../libexec/rtapi_app_$$f \) \ && need_setuid=1; \ - ln -s $(EMC2_HOME)/rtlib/prubin/pru_generic.bin ../rtlib/$$f/pru_generic.bin; \ - ln -s $(EMC2_HOME)/rtlib/prubin/pru_generic.dbg ../rtlib/$$f/pru_generic.dbg; \ - ln -s $(EMC2_HOME)/rtlib/prubin/pru_decamux.bin ../rtlib/$$f/pru_decamux.bin; \ - ln -s $(EMC2_HOME)/rtlib/prubin/pru_decamux.dbg ../rtlib/$$f/pru_decamux.dbg; \ + ln -sf $(EMC2_HOME)/rtlib/prubin/pru_generic.bin ../rtlib/$$f/pru_generic.bin; \ + ln -sf $(EMC2_HOME)/rtlib/prubin/pru_generic.dbg ../rtlib/$$f/pru_generic.dbg; \ + ln -sf $(EMC2_HOME)/rtlib/prubin/pru_decamux.bin ../rtlib/$$f/pru_decamux.bin; \ + ln -sf $(EMC2_HOME)/rtlib/prubin/pru_decamux.dbg ../rtlib/$$f/pru_decamux.dbg; \ done; \ test "$$need_setuid" = 1 && \ $(VECHO) -n "You now need to run 'sudo make setuid' " && \ From 3e14e2ce4aa94e86eb2aae3dc54f2d40db6a725c Mon Sep 17 00:00:00 2001 From: Mick Date: Fri, 6 Oct 2017 16:56:25 +0100 Subject: [PATCH 119/516] Force creation of symlinks for armhf pru_*.* binaries Prevents any warnings etc. when an updated package is installed on top of an existing package which also made the symlinks. Signed-off-by: Mick --- debian/posix-postinst.add | 8 ++++---- debian/rt-preempt-postinst.add | 8 ++++---- debian/xenomai-postinst.add | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/debian/posix-postinst.add b/debian/posix-postinst.add index a05ea7f88f..7fdefcbc73 100644 --- a/debian/posix-postinst.add +++ b/debian/posix-postinst.add @@ -7,7 +7,7 @@ rm -f /usr/lib/linuxcnc/posix/pru_decamux.bin rm -f /usr/lib/linuxcnc/posix/pru_decamux.dbg # make symlinks to BBB pru_*.* -ln -s /usr/lib/linuxcnc/prubin/pru_generic.bin /usr/lib/linuxcnc/posix/pru_generic.bin -ln -s /usr/lib/linuxcnc/prubin/pru_generic.dbg /usr/lib/linuxcnc/posix/pru_generic.dbg -ln -s /usr/lib/linuxcnc/prubin/pru_decamux.bin /usr/lib/linuxcnc/posix/pru_decamux.bin -ln -s /usr/lib/linuxcnc/prubin/pru_decamux.dbg /usr/lib/linuxcnc/posix/pru_decamux.dbg +ln -sf /usr/lib/linuxcnc/prubin/pru_generic.bin /usr/lib/linuxcnc/posix/pru_generic.bin +ln -sf /usr/lib/linuxcnc/prubin/pru_generic.dbg /usr/lib/linuxcnc/posix/pru_generic.dbg +ln -sf /usr/lib/linuxcnc/prubin/pru_decamux.bin /usr/lib/linuxcnc/posix/pru_decamux.bin +ln -sf /usr/lib/linuxcnc/prubin/pru_decamux.dbg /usr/lib/linuxcnc/posix/pru_decamux.dbg diff --git a/debian/rt-preempt-postinst.add b/debian/rt-preempt-postinst.add index 1747b3faab..9eec2b68c2 100644 --- a/debian/rt-preempt-postinst.add +++ b/debian/rt-preempt-postinst.add @@ -7,7 +7,7 @@ rm -f /usr/lib/linuxcnc/rt-preempt/pru_decamux.bin rm -f /usr/lib/linuxcnc/rt-preempt/pru_decamux.dbg # make symlinks to BBB pru_*.* -ln -s /usr/lib/linuxcnc/prubin/pru_generic.bin /usr/lib/linuxcnc/rt-preempt/pru_generic.bin -ln -s /usr/lib/linuxcnc/prubin/pru_generic.dbg /usr/lib/linuxcnc/rt-preempt/pru_generic.dbg -ln -s /usr/lib/linuxcnc/prubin/pru_decamux.bin /usr/lib/linuxcnc/rt-preempt/pru_decamux.bin -ln -s /usr/lib/linuxcnc/prubin/pru_decamux.dbg /usr/lib/linuxcnc/rt-preempt/pru_decamux.dbg +ln -sf /usr/lib/linuxcnc/prubin/pru_generic.bin /usr/lib/linuxcnc/rt-preempt/pru_generic.bin +ln -sf /usr/lib/linuxcnc/prubin/pru_generic.dbg /usr/lib/linuxcnc/rt-preempt/pru_generic.dbg +ln -sf /usr/lib/linuxcnc/prubin/pru_decamux.bin /usr/lib/linuxcnc/rt-preempt/pru_decamux.bin +ln -sf /usr/lib/linuxcnc/prubin/pru_decamux.dbg /usr/lib/linuxcnc/rt-preempt/pru_decamux.dbg diff --git a/debian/xenomai-postinst.add b/debian/xenomai-postinst.add index 67ef61ea13..d895fb1e2c 100644 --- a/debian/xenomai-postinst.add +++ b/debian/xenomai-postinst.add @@ -7,7 +7,7 @@ rm -f /usr/lib/linuxcnc/xenomai/pru_decamux.bin rm -f /usr/lib/linuxcnc/xenomai/pru_decamux.dbg # make symlinks to BBB pru_*.* -ln -s /usr/lib/linuxcnc/prubin/pru_generic.bin /usr/lib/linuxcnc/xenomai/pru_generic.bin -ln -s /usr/lib/linuxcnc/prubin/pru_generic.dbg /usr/lib/linuxcnc/xenomai/pru_generic.dbg -ln -s /usr/lib/linuxcnc/prubin/pru_decamux.bin /usr/lib/linuxcnc/xenomai/pru_decamux.bin -ln -s /usr/lib/linuxcnc/prubin/pru_decamux.dbg /usr/lib/linuxcnc/xenomai/pru_decamux.dbg +ln -sf /usr/lib/linuxcnc/prubin/pru_generic.bin /usr/lib/linuxcnc/xenomai/pru_generic.bin +ln -sf /usr/lib/linuxcnc/prubin/pru_generic.dbg /usr/lib/linuxcnc/xenomai/pru_generic.dbg +ln -sf /usr/lib/linuxcnc/prubin/pru_decamux.bin /usr/lib/linuxcnc/xenomai/pru_decamux.bin +ln -sf /usr/lib/linuxcnc/prubin/pru_decamux.dbg /usr/lib/linuxcnc/xenomai/pru_decamux.dbg From afa2892b740f8a1e28903598ae9724de8f3fce29 Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 25 Sep 2017 21:38:26 -0500 Subject: [PATCH 120/516] Update to CZMQ v. 4.0 API Update to CZMQ v. 4.0 API in preparation for Stretch. Implementation follows the [zsock manual][1] and [CZMQ 4.0.0 NEWS][2]. Fixes #1152 [3]. [1]: http://czmq.zeromq.org/manual:zsock [2]: https://github.com/zeromq/czmq/commit/052d2504 [3]: https://github.com/machinekit/machinekit/issues/1152 --- debian/control.in | 2 +- src/configure.ac | 2 +- src/emc/rs274ngc/previewmodule.cc | 25 ++++++------- src/hal/utils/halcmd_rtapiapp.cc | 15 ++++---- src/machinetalk/haltalk/haltalk_bridge.cc | 8 ++--- src/machinetalk/haltalk/haltalk_main.cc | 29 +++++++-------- src/machinetalk/include/mk-service.hh | 3 +- src/machinetalk/lib/mk_service.cc | 8 ++--- src/machinetalk/messagebus/messagebus.cc | 36 +++++++++---------- src/machinetalk/messagebus/rtproxy.cc | 10 +++--- src/machinetalk/messagebus/rtproxy.hh | 2 +- src/machinetalk/webtalk/webtalk.hh | 2 +- .../webtalk/webtalk_defaultpolicy.cc | 18 +++++----- src/machinetalk/webtalk/webtalk_echo.cc | 6 ++-- src/machinetalk/webtalk/webtalk_jsonpolicy.cc | 4 +-- src/machinetalk/webtalk/webtalk_main.cc | 8 ++--- .../webtalk/webtalk_pbzws_policy.cc | 28 +++++++-------- src/machinetalk/webtalk/webtalk_wsproxy.cc | 14 ++++---- src/machinetalk/webtalk/webtalk_zws_policy.cc | 4 +-- src/rtapi/rtapi_app.cc | 17 +++++---- src/rtapi/rtapi_msgd.cc | 15 ++++---- 21 files changed, 121 insertions(+), 135 deletions(-) diff --git a/debian/control.in b/debian/control.in index 56d6ec6785..d352acab18 100644 --- a/debian/control.in +++ b/debian/control.in @@ -9,7 +9,7 @@ Build-Depends: debhelper (>= 6), libxmu-headers, python (>= 2.6.6-3~), python-dev (>= 2.6.6-3~), cython (>= 0.19), dh-python, pkg-config, psmisc, python-tk, libxaw7-dev, libboost-serialization-dev, - libzmq3-dev (>= 4.0.4), libczmq-dev (>= 2.2.0), libjansson-dev (>= 2.5), + libzmq3-dev (>= 4.0.4), libczmq-dev (>= 4.0.0), libjansson-dev (>= 2.5), libwebsockets-dev (>= 1.2.2), python-zmq (>= 14.0.1), procps, liburiparser-dev, libssl-dev, python-setuptools, diff --git a/src/configure.ac b/src/configure.ac index 00d9906fb9..7518d02840 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -939,7 +939,7 @@ AC_ARG_ENABLE(dev, # NML ############################################################################## -PKG_CHECK_MODULES([CZMQ], [libczmq > 2.0], +PKG_CHECK_MODULES([CZMQ], [libczmq > 4.0], [ AC_DEFINE(HAVE_CZMQ, [], [zeroMQ czmq library available]) USE_CZMQ=yes diff --git a/src/emc/rs274ngc/previewmodule.cc b/src/emc/rs274ngc/previewmodule.cc index 86964bcf91..0333ec8866 100644 --- a/src/emc/rs274ngc/previewmodule.cc +++ b/src/emc/rs274ngc/previewmodule.cc @@ -35,8 +35,7 @@ using namespace google::protobuf; #include "czmq.h" #include "pbutil.hh" // hal/haltalk -static zctx_t *z_context; -static void *z_preview, *z_status; // sockets +static zsock_t *z_preview, *z_status; static const char *istat_topic = "status"; static int batch_limit = 100; static const char *p_client = "preview"; //NULL; // single client for now @@ -104,9 +103,6 @@ static void preview_end() static int z_init(void) { - if (!z_context) - z_context = zctx_new (); - // const char *uri = getenv("PREVIEW_URI"); // if (uri) z_preview_uri = uri; // uri = getenv("STATUS_URI"); @@ -120,16 +116,16 @@ static int z_init(void) GOOGLE_PROTOBUF_VERIFY_VERSION; - z_preview = zsocket_new (z_context, ZMQ_XPUB); + z_preview = zsock_new (ZMQ_XPUB); #if 0 - rc = zsocket_bind(z_preview, z_preview_uri); + rc = zsock_bind(z_preview, z_preview_uri); assert (rc != 0); #endif - z_status = zsocket_new (z_context, ZMQ_XPUB); + z_status = zsock_new (ZMQ_XPUB); assert(z_status); #if 0 - rc = zsocket_bind(z_status, z_status_uri); + rc = zsock_bind(z_status, z_status_uri); assert (rc != 0); #endif @@ -149,7 +145,8 @@ static void z_shutdown(void) fprintf(stderr, "preview: %zu containers %zu preview msgs %zu bytes avg=%zu bytes/container\n", n_containers, n_messages, n_bytes, n_bytes/n_containers); } - zctx_destroy(&z_context); + zsock_destroy(&z_preview); + zsock_destroy(&z_status); } char _parameter_file_name[LINELEN]; @@ -1306,13 +1303,13 @@ static PyObject *bind_sockets(PyObject *self, PyObject *args) { if(!PyArg_ParseTuple(args, "ss", &preview_uri, &status_uri)) return NULL; int rc; - rc = zsocket_bind(z_preview, "%s", preview_uri); + rc = zsock_bind(z_preview, "%s", preview_uri); if(!rc) { PyErr_Format(PyExc_RuntimeError, "binding preview socket to '%s' failed", preview_uri); return NULL; } - rc = zsocket_bind(z_status, "%s", status_uri); + rc = zsock_bind(z_status, "%s", status_uri); if(!rc) { PyErr_Format(PyExc_RuntimeError, "binding status socket to '%s' failed", status_uri); @@ -1321,8 +1318,8 @@ static PyObject *bind_sockets(PyObject *self, PyObject *args) { // usleep(300 *1000); // avoid slow joiner syndrome return Py_BuildValue("(ss)", - zsocket_last_endpoint(z_preview), - zsocket_last_endpoint(z_status)); + zsock_last_endpoint(z_preview), + zsock_last_endpoint(z_status)); } static PyMethodDef gcode_methods[] = { diff --git a/src/hal/utils/halcmd_rtapiapp.cc b/src/hal/utils/halcmd_rtapiapp.cc index 25d401605c..bdc0feabb0 100644 --- a/src/hal/utils/halcmd_rtapiapp.cc +++ b/src/hal/utils/halcmd_rtapiapp.cc @@ -17,8 +17,7 @@ using namespace google::protobuf; static machinetalk::Container command, reply; -static zctx_t *z_context; -static void *z_command; +static zsock_t *z_command; static int timeout = 5000; static std::string errormsg; int proto_debug; @@ -279,22 +278,20 @@ int rtapi_connect(int instance, char *uri, const char *svc_uuid) } #endif - z_context = zctx_new (); - assert(z_context); - z_command = zsocket_new (z_context, ZMQ_DEALER); + z_command = zsock_new (ZMQ_DEALER); assert(z_command); char z_ident[30]; snprintf(z_ident, sizeof(z_ident), "halcmd%d",getpid()); - zsocket_set_identity(z_command, z_ident); - zsocket_set_linger(z_command, 0); + zsock_set_identity(z_command, z_ident); + zsock_set_linger(z_command, 0); - if (zsocket_connect(z_command, "%s", uri)) { + if (zsock_connect(z_command, "%s", uri)) { perror("connect"); return -EINVAL; } - zsocket_set_rcvtimeo (z_command, timeout * ZMQ_POLL_MSEC); + zsock_set_rcvtimeo (z_command, timeout * ZMQ_POLL_MSEC); return rtapi_ping(instance); } diff --git a/src/machinetalk/haltalk/haltalk_bridge.cc b/src/machinetalk/haltalk/haltalk_bridge.cc index c5f11c4305..9277404b5e 100644 --- a/src/machinetalk/haltalk/haltalk_bridge.cc +++ b/src/machinetalk/haltalk/haltalk_bridge.cc @@ -142,11 +142,11 @@ static int bridge_fsm(htself_t *self, bridgeevent_t event) case BSTATE_RETRY_PROBE: case BSTATE_CONNECT: - bridge->z_bridge = zsocket_new (self->z_context, ZMQ_XSUB); - retval = zsocket_connect(bridge->z_bridge, self->cfg->bridgecomp_updateuri); + bridge->z_bridge = zsock_new (self->z_context, ZMQ_XSUB); + retval = zsock_connect(bridge->z_bridge, self->cfg->bridgecomp_updateuri); assert (retval == 0); - bridge->z_bridge_cmd = zsocket_new (self->z_context, ZMQ_DEALER); - retval = zsocket_connect(bridge->z_bridge_cmd, self->cfg->bridgecomp_cmduri); + bridge->z_bridge_cmd = zsock_new (self->z_context, ZMQ_DEALER); + retval = zsock_connect(bridge->z_bridge_cmd, self->cfg->bridgecomp_cmduri); assert (retval == 0); break; diff --git a/src/machinetalk/haltalk/haltalk_main.cc b/src/machinetalk/haltalk/haltalk_main.cc index f72bc341a9..efa1c8c9b1 100644 --- a/src/machinetalk/haltalk/haltalk_main.cc +++ b/src/machinetalk/haltalk/haltalk_main.cc @@ -153,16 +153,13 @@ zmq_init(htself_t *self) assert(self->signal_fd > -1); } - // suppress default handling of signals in zctx_new() + // suppress default handling of signals in zsock_new() // since we're using signalfd() - // must happen before zctx_new() + // must happen before zsock_new() zsys_handler_set(NULL); mk_netopts_t *np = &self->netopts; - np->z_context = zctx_new (); - assert(np->z_context); - np->z_loop = zloop_new(); assert (np->z_loop); @@ -175,10 +172,10 @@ zmq_init(htself_t *self) mk_socket_t *ms = &self->mksock[SVC_HALGROUP]; ms->dnssd_subtype = HALGROUP_DNSSD_SUBTYPE; ms->tag = "halgroup"; - ms->socket = zsocket_new (self->netopts.z_context, ZMQ_XPUB); + ms->socket = zsock_new (ZMQ_XPUB); assert(ms->socket); - zsocket_set_linger(ms->socket, 0); - zsocket_set_xpub_verbose(ms->socket, 1); + zsock_set_linger(ms->socket, 0); + zsock_set_xpub_verbose(ms->socket, 1); if (mk_bindsocket(np, ms)) return -1; assert(ms->port > -1); @@ -191,10 +188,10 @@ zmq_init(htself_t *self) ms = &self->mksock[SVC_HALRCOMP]; ms->dnssd_subtype = HALRCOMP_DNSSD_SUBTYPE; ms->tag = "halrcomp"; - ms->socket = zsocket_new (self->netopts.z_context, ZMQ_XPUB); + ms->socket = zsock_new (ZMQ_XPUB); assert(ms->socket); - zsocket_set_linger(ms->socket, 0); - zsocket_set_xpub_verbose(ms->socket, 1); + zsock_set_linger(ms->socket, 0); + zsock_set_xpub_verbose(ms->socket, 1); if (mk_bindsocket(np, ms)) return -1; assert(ms->port > -1); @@ -207,10 +204,10 @@ zmq_init(htself_t *self) ms = &self->mksock[SVC_HALRCMD]; ms->dnssd_subtype = HALRCMD_DNSSD_SUBTYPE; ms->tag = "halrcmd"; - ms->socket = zsocket_new (self->netopts.z_context, ZMQ_ROUTER); + ms->socket = zsock_new (ZMQ_ROUTER); assert(ms->socket); - zsocket_set_linger(ms->socket, 0); - zsocket_set_identity (ms->socket, self->cfg->modname); + zsock_set_linger(ms->socket, 0); + zsock_set_identity (ms->socket, self->cfg->modname); if (mk_bindsocket(np, ms)) return -1; assert(ms->port > -1); @@ -469,8 +466,8 @@ int main (int argc, char *argv[]) ht_zeroconf_withdraw(&self); // probably should run zloop here until deregister complete - // shutdown zmq context - zctx_destroy(&self.netopts.z_context); + // shutdown zmq socket + zsock_destroy(&self.mksock[SVC_HALGROUP].socket); hal_cleanup(&self); diff --git a/src/machinetalk/include/mk-service.hh b/src/machinetalk/include/mk-service.hh index 838f133966..a8d3ccd043 100644 --- a/src/machinetalk/include/mk-service.hh +++ b/src/machinetalk/include/mk-service.hh @@ -16,7 +16,6 @@ typedef struct { // these must be set by caller: const char *rundir; // for IPC sockets int rtapi_instance; // defaults to 0 - zctx_t *z_context; zloop_t *z_loop; AvahiCzmqPoll *av_loop; // Avahi CZMQ event loop adapter @@ -47,7 +46,7 @@ typedef struct { typedef struct { int port; // otpionally may be set by caller - void *socket; // must be set by caller + zsock_t *socket; // must be set by caller const char *dnssd_subtype; // must be set by caller const char *tag; // must be set by caller diff --git a/src/machinetalk/lib/mk_service.cc b/src/machinetalk/lib/mk_service.cc index 4e795cbe7b..9a1ca40b5f 100644 --- a/src/machinetalk/lib/mk_service.cc +++ b/src/machinetalk/lib/mk_service.cc @@ -108,7 +108,7 @@ static int bind_ifs(mk_socket_t *s, const argvec_t &ifs) uri = "tcp://" + ifs[i] + ":" + boost::lexical_cast(s->port); } // use this port number for the rest of the ifs - s->port = zsocket_bind(s->socket, "%s", uri.c_str()); + s->port = zsock_bind(s->socket, "%s", uri.c_str()); if (s->port < 0) { syslog_async(LOG_ERR, "bind to '%s' failed: %s", uri.c_str(), strerror(errno)); @@ -153,8 +153,8 @@ int mk_bindsocket(mk_netopts_t *n, mk_socket_t *s) // if there are any V6 interfaces/addresses, // enable V6 on socket now if (ifs.size() > 0) { - zsocket_set_ipv6 (s->socket, 1); - assert (zsocket_ipv6 (s->socket) == 1); + zsock_set_ipv6 (s->socket, 1); + assert (zsock_ipv6 (s->socket) == 1); } // and bind them all retval = bind_ifs(s, ifs); @@ -166,7 +166,7 @@ int mk_bindsocket(mk_netopts_t *n, mk_socket_t *s) // use IPC sockets snprintf(buf, sizeof(buf), ZMQIPC_FORMAT, n->rundir, n->rtapi_instance, s->tag, n->service_uuid); - s->port = zsocket_bind(s->socket, "%s", buf); + s->port = zsock_bind(s->socket, "%s", buf); if (s->port < 0) syslog_async(LOG_ERR, "bind(%s): %s\n", buf, strerror(errno)); diff --git a/src/machinetalk/messagebus/messagebus.cc b/src/machinetalk/messagebus/messagebus.cc index e7e678d6bd..d7a5934ebe 100644 --- a/src/machinetalk/messagebus/messagebus.cc +++ b/src/machinetalk/messagebus/messagebus.cc @@ -106,7 +106,7 @@ typedef struct { actormap_t *cmd_subscribers; actormap_t *response_subscribers; int comp_id; - zctx_t *context; + zsock_t *context; zloop_t *loop; register_context_t *command_publisher; register_context_t *response_publisher; @@ -266,33 +266,33 @@ static int zmq_setup(msgbusd_self_t *self) { GOOGLE_PROTOBUF_VERIFY_VERSION; - // suppress default handling of signals in zctx_new() + // suppress default handling of signals in zsock_new() // since we're using signalfd() zsys_handler_set(NULL); - self->context = zctx_new (); + self->context = zsock_new (); assert(self->context); - zctx_set_linger (self->context, 0); + zsock_set_linger (self->context, 0); - self->cmd = zsocket_new (self->context, ZMQ_XPUB); + self->cmd = zsock_new (self->context, ZMQ_XPUB); assert(self->cmd); - zsocket_set_xpub_verbose (self->cmd, 1); - self->command_port = zsocket_bind(self->cmd, self->cmd_uri); + zsock_set_xpub_verbose (self->cmd, 1); + self->command_port = zsock_bind(self->cmd, self->cmd_uri); assert(self->command_port > -1); - self->command_dsn = zsocket_last_endpoint (self->cmd); + self->command_dsn = zsock_last_endpoint (self->cmd); - assert(zsocket_bind(self->cmd, proxy_cmd_uri) > -1); + assert(zsock_bind(self->cmd, proxy_cmd_uri) > -1); - self->response = zsocket_new (self->context, ZMQ_XPUB); + self->response = zsock_new (self->context, ZMQ_XPUB); assert(self->response); - zsocket_set_xpub_verbose (self->response, 1); - self->response_port = zsocket_bind(self->response, self->response_uri); + zsock_set_xpub_verbose (self->response, 1); + self->response_port = zsock_bind(self->response, self->response_uri); assert(self->response_port > -1); - self->response_dsn = zsocket_last_endpoint (self->response); + self->response_dsn = zsock_last_endpoint (self->response); - assert(zsocket_bind(self->response, proxy_response_uri) > -1); + assert(zsock_bind(self->response, proxy_response_uri) > -1); usleep(200 *1000); // avoid slow joiner syndrome @@ -398,7 +398,7 @@ static int rtproxy_setup(msgbusd_self_t *self) { echo.flags = ACTOR_ECHO|TRACE_TO_RT; echo.name = "echo"; - echo.pipe = zthread_fork (self->context, rtproxy_thread, &echo); + echo.pipe = zactor_fork (self->context, rtproxy_thread, &echo); assert (echo.pipe); demo.flags = ACTOR_RESPONDER|TRACE_FROM_RT|TRACE_TO_RT|DESERIALIZE_TO_RT|SERIALIZE_FROM_RT; @@ -411,7 +411,7 @@ static int rtproxy_setup(msgbusd_self_t *self) demo.from_rt_name = "mptx.0.out"; demo.min_delay = 2; // msec demo.max_delay = 200; // msec - demo.pipe = zthread_fork (self->context, rtproxy_thread, &demo); + demo.pipe = zactor_fork (self->context, rtproxy_thread, &demo); assert (demo.pipe); // too.flags = ACTOR_RESPONDER|ACTOR_TRACE; @@ -421,7 +421,7 @@ static int rtproxy_setup(msgbusd_self_t *self) // too.name = "mptx"; // too.to_rt_name = "mptx.0.in"; // too.from_rt_name = "mptx.0.out"; - // too.pipe = zthread_fork (self->context, rtproxy_thread, &too); + // too.pipe = zactor_fork (self->context, rtproxy_thread, &too); // assert (too.pipe); return 0; @@ -668,7 +668,7 @@ int main (int argc, char *argv[]) mb_zeroconf_withdraw(&self); // shutdown zmq context - zctx_destroy (&self.context); + zsock_destroy (&self.context); if (comp_id) hal_exit(comp_id); diff --git a/src/machinetalk/messagebus/rtproxy.cc b/src/machinetalk/messagebus/rtproxy.cc index df863d1cf0..9596f90457 100644 --- a/src/machinetalk/messagebus/rtproxy.cc +++ b/src/machinetalk/messagebus/rtproxy.cc @@ -49,17 +49,17 @@ send_subscribe(void *socket, const char *topic) } void -rtproxy_thread(void *arg, zctx_t *ctx, void *pipe) +rtproxy_thread(void *arg, zsock_t *ctx, void *pipe) { rtproxy_t *self = (rtproxy_t *) arg; int retval; - self->proxy_cmd = zsocket_new (ctx, ZMQ_XSUB); - retval = zsocket_connect(self->proxy_cmd, proxy_cmd_uri); + self->proxy_cmd = zsock_new (ctx, ZMQ_XSUB); + retval = zsock_connect(self->proxy_cmd, proxy_cmd_uri); assert(retval == 0); - self->proxy_response = zsocket_new (ctx, ZMQ_XSUB); - assert(zsocket_connect(self->proxy_response, proxy_response_uri) == 0); + self->proxy_response = zsock_new (ctx, ZMQ_XSUB); + assert(zsock_connect(self->proxy_response, proxy_response_uri) == 0); if (self->flags & (ACTOR_RESPONDER|ACTOR_ECHO|ACTOR_SUBSCRIBER)) { retval = send_subscribe(self->proxy_cmd, self->name); diff --git a/src/machinetalk/messagebus/rtproxy.hh b/src/machinetalk/messagebus/rtproxy.hh index c531cbd808..42b42d1d4d 100644 --- a/src/machinetalk/messagebus/rtproxy.hh +++ b/src/machinetalk/messagebus/rtproxy.hh @@ -42,4 +42,4 @@ typedef struct { } rtproxy_t; -void rtproxy_thread(void *arg, zctx_t *ctx, void *pipe); +void rtproxy_thread(void *arg, zsock_t *ctx, void *pipe); diff --git a/src/machinetalk/webtalk/webtalk.hh b/src/machinetalk/webtalk/webtalk.hh index 9cb75f1182..31e0bd0363 100644 --- a/src/machinetalk/webtalk/webtalk.hh +++ b/src/machinetalk/webtalk/webtalk.hh @@ -238,7 +238,7 @@ int wt_zeroconf_announce(wtself_t *self); int wt_zeroconf_withdraw(wtself_t *self); // webtalk_echo.cc: -void echo_thread(void *args, zctx_t *ctx, void *pipe); +void echo_thread(void *args, zsock_t *ctx, void *pipe); // webtalk_proxy.cc: int callback_http( diff --git a/src/machinetalk/webtalk/webtalk_defaultpolicy.cc b/src/machinetalk/webtalk/webtalk_defaultpolicy.cc index 58f07f2d2c..c68b4d8515 100644 --- a/src/machinetalk/webtalk/webtalk_defaultpolicy.cc +++ b/src/machinetalk/webtalk/webtalk_defaultpolicy.cc @@ -71,19 +71,19 @@ int default_policy(wtself_t *self, } q = q->next; } - wss->socket = zsocket_new (self->netopts.z_context, wss->socket_type); + wss->socket = zsock_new (self->netopts.z_context, wss->socket_type); if (wss->socket == NULL) { lwsl_err("%s %d: cant create ZMQ socket: %s\n", __func__, fd, strerror(errno)); return -1; } if (self->cfg->ipv6) { - zsocket_set_ipv6 (wss->socket, 1); - assert (zsocket_ipv6 (wss->socket) == 1); + zsock_set_ipv6 (wss->socket, 1); + assert (zsock_ipv6 (wss->socket) == 1); } if ((wss->socket_type == ZMQ_DEALER) || (wss->socket_type == ZMQ_ROUTER)) { if (identity) { - zsocket_set_identity (wss->socket, identity); + zsock_set_identity (wss->socket, identity); lwsl_uri("%s %d: set client-provided identity to '%s'\n", __func__,fd, identity); } @@ -96,7 +96,7 @@ int default_policy(wtself_t *self, uuid_generate_time(uuid); char ident[50] = { "ws-"}; uuid_unparse(uuid, &ident[3]); - zsocket_set_identity (wss->socket, ident); + zsock_set_identity (wss->socket, ident); lwsl_uri("%s %d: set autogenerated identity to '%s'\n", __func__,fd, ident); } @@ -129,7 +129,7 @@ int default_policy(wtself_t *self, } lwsl_uri("%s %d: URI= '%s'\n", __func__, fd,uri); - if (zsocket_connect (wss->socket, uri)) { + if (zsock_connect (wss->socket, uri)) { lwsl_err("%s %d: cant connect to %s: %s\n", __func__, fd, uri, strerror(errno)); return -1; @@ -142,7 +142,7 @@ int default_policy(wtself_t *self, } else { lwsl_uri("%s %d: connecting to %s type %d\n", __func__, fd, q->value, wss->socket_type); - if (zsocket_connect (wss->socket, q->value)) { + if (zsock_connect (wss->socket, q->value)) { lwsl_err("%s %d: cant connect to %s: %s\n", __func__, fd, q->value, strerror(errno)); return -1; @@ -151,7 +151,7 @@ int default_policy(wtself_t *self, } } if (!strcmp(q->key,"bind")) { - if (zsocket_bind (wss->socket, q->value) < 0) { + if (zsock_bind (wss->socket, q->value) < 0) { lwsl_err("%s %d: cant bind to %s: %s\n", __func__, fd, q->value, strerror(errno)); return -1; @@ -177,7 +177,7 @@ int default_policy(wtself_t *self, switch (wss->socket_type) { case ZMQ_SUB: - zsocket_set_subscribe (wss->socket, topic); + zsock_set_subscribe (wss->socket, topic); lwsl_uri("%s %d: subscribe topic '%s' on SUB\n", __func__, fd, topic); break; diff --git a/src/machinetalk/webtalk/webtalk_echo.cc b/src/machinetalk/webtalk/webtalk_echo.cc index cff7f4ce8a..037c9e2016 100644 --- a/src/machinetalk/webtalk/webtalk_echo.cc +++ b/src/machinetalk/webtalk/webtalk_echo.cc @@ -20,13 +20,13 @@ void -echo_thread(void *args, zctx_t *ctx, void *pipe) +echo_thread(void *args, zsock_t *ctx, void *pipe) { wtconf_t *conf = (wtconf_t *) args; - void *rs = zsocket_new (ctx, ZMQ_ROUTER); + void *rs = zsock_new (ctx, ZMQ_ROUTER); assert(rs); - zsocket_bind(rs, "inproc://echo"); + zsock_bind(rs, "inproc://echo"); while (1) { zmsg_t *rx = zmsg_recv(rs); diff --git a/src/machinetalk/webtalk/webtalk_jsonpolicy.cc b/src/machinetalk/webtalk/webtalk_jsonpolicy.cc index f4cc067f7b..c6006bf546 100644 --- a/src/machinetalk/webtalk/webtalk_jsonpolicy.cc +++ b/src/machinetalk/webtalk/webtalk_jsonpolicy.cc @@ -71,11 +71,11 @@ json_policy(wtself_t *self, for (int i = 0; i < c.note_size(); i++) { if (c.type() == machinetalk::MT_ZMQ_SUBSCRIBE) { lwsl_fromws("%s: subscribe to '%s'\n", __func__, c.note(i).c_str()); - zsocket_set_subscribe (wss->socket, c.note(i).c_str()); + zsock_set_subscribe (wss->socket, c.note(i).c_str()); } if (c.type() == machinetalk::MT_ZMQ_UNSUBSCRIBE) { lwsl_fromws("%s: unsubscribe from '%s'\n", __func__, c.note(i).c_str()); - zsocket_set_unsubscribe (wss->socket, c.note(i).c_str()); + zsock_set_unsubscribe (wss->socket, c.note(i).c_str()); } } c.Clear(); diff --git a/src/machinetalk/webtalk/webtalk_main.cc b/src/machinetalk/webtalk/webtalk_main.cc index c22f88b1fa..115a30f5a9 100644 --- a/src/machinetalk/webtalk/webtalk_main.cc +++ b/src/machinetalk/webtalk/webtalk_main.cc @@ -131,14 +131,14 @@ zmq_init(wtself_t *self) assert(self->signal_fd > -1); } - // suppress default handling of signals in zctx_new() + // suppress default handling of signals in zsock_new() // since we're using signalfd() - // must happen before zctx_new() + // must happen before zsock_new() zsys_handler_set(NULL); mk_netopts_t *np = &self->netopts; - np->z_context = zctx_new (); + np->z_context = zsock_new (); assert(np->z_context); np->z_loop = zloop_new(); @@ -449,7 +449,7 @@ int main (int argc, char *argv[]) // probably should run zloop here until deregister complete // shutdown zmq context - zctx_destroy(&self.netopts.z_context); + zsock_destroy(&self.netopts.z_context); exit(0); } diff --git a/src/machinetalk/webtalk/webtalk_pbzws_policy.cc b/src/machinetalk/webtalk/webtalk_pbzws_policy.cc index f091f40dd7..df2056d6e4 100644 --- a/src/machinetalk/webtalk/webtalk_pbzws_policy.cc +++ b/src/machinetalk/webtalk/webtalk_pbzws_policy.cc @@ -114,21 +114,21 @@ pbzws_policy(wtself_t *server, switch (type) { case zws::MT_SOCKET: wss->socket_type = self->pzf->stype(); - wss->socket = zsocket_new (server->ctx, wss->socket_type); + wss->socket = zsock_new (server->ctx, wss->socket_type); if (self->cfg->ipv6) { - zsocket_set_ipv6 (wss->socket, 1); - assert (zsocket_ipv6 (wss->socket) == 1); + zsock_set_ipv6 (wss->socket, 1); + assert (zsock_ipv6 (wss->socket) == 1); } switch(self->pzf->sec()) { case zws::SM_ZMQ_PLAIN: - zsocket_set_plain_username (wss->socket, self->pzf->user().c_str()); - zsocket_set_plain_password (wss->socket, self->pzf->passwd().c_str()); + zsock_set_plain_username (wss->socket, self->pzf->user().c_str()); + zsock_set_plain_password (wss->socket, self->pzf->passwd().c_str()); break; default: break; } if (self->pzf->has_identity()) - zsocket_set_identity (wss->socket, self->pzf->identity().c_str()); + zsock_set_identity (wss->socket, self->pzf->identity().c_str()); register_zmq_poller(wss); // fall through @@ -136,9 +136,9 @@ pbzws_policy(wtself_t *server, case zws::MT_CONNECT: for (int i = 0; i < self->pzf->uri_size(); i++) { const char *uri = self->pzf->uri(i).c_str(); - if (zsocket_connect (wss->socket, uri) < 0) { + if (zsock_connect (wss->socket, uri) < 0) { error_tows(self, "connect: endpoint '%s' invalid (%s socket)", - uri, zsocket_type_str (self->wss->socket)); + uri, zsock_type_str (self->wss->socket)); return -1; } } @@ -147,10 +147,10 @@ pbzws_policy(wtself_t *server, case zws::MT_DISCONNECT: for (int i = 0; i < self->pzf->uri_size(); i++) { const char *uri = self->pzf->uri(i).c_str(); - if (zsocket_connect (wss->socket, uri) < 0) { + if (zsock_connect (wss->socket, uri) < 0) { error_tows(self, "disconnect: endpoint '%s' invalid or operation not supported (%s socket)", - uri, zsocket_type_str (self->wss->socket)); + uri, zsock_type_str (self->wss->socket)); return -1; } } @@ -163,7 +163,7 @@ pbzws_policy(wtself_t *server, case zws::MT_PAYLOAD: if (payload_fromws(self->pzf, wss->socket)) { error_tows(self, "sending payload to type %s socket failed", - zsocket_type_str (self->wss->socket)); + zsock_type_str (self->wss->socket)); return -1; } break; @@ -336,9 +336,9 @@ static int handle_subscription(struct pbzws_session *self, zws::frameType type) switch (self->wss->socket_type) { case ZMQ_SUB: if (type == zws::MT_SUBSCRIBE) - zsocket_set_subscribe (self->wss->socket, topic); + zsock_set_subscribe (self->wss->socket, topic); else - zsocket_set_unsubscribe (self->wss->socket, topic); + zsock_set_unsubscribe (self->wss->socket, topic); break; case ZMQ_XSUB: if (type == zws::MT_SUBSCRIBE) @@ -353,7 +353,7 @@ static int handle_subscription(struct pbzws_session *self, zws::frameType type) default: error_tows(self, "cant %ssubscribe on a type %s socket", type == zws::MT_SUBSCRIBE ? "":"un", - zsocket_type_str (self->wss->socket)); + zsock_type_str (self->wss->socket)); return -1; } } diff --git a/src/machinetalk/webtalk/webtalk_wsproxy.cc b/src/machinetalk/webtalk/webtalk_wsproxy.cc index 8e42431161..a72fc0b8d1 100644 --- a/src/machinetalk/webtalk/webtalk_wsproxy.cc +++ b/src/machinetalk/webtalk/webtalk_wsproxy.cc @@ -336,13 +336,13 @@ callback_http(struct libwebsocket_context *context, int retval; // the two/from WS pair pipe - wss->wsq_out = zsocket_new (self->netopts.z_context, ZMQ_PAIR); + wss->wsq_out = zsock_new (self->netopts.z_context, ZMQ_PAIR); assert (wss->wsq_out); - zsocket_bind (wss->wsq_out, "inproc://wsq-%p", wss); + zsock_bind (wss->wsq_out, "inproc://wsq-%p", wss); - wss->wsq_in = zsocket_new (self->netopts.z_context, ZMQ_PAIR); + wss->wsq_in = zsock_new (self->netopts.z_context, ZMQ_PAIR); assert (wss->wsq_in); - zsocket_connect (wss->wsq_in, "inproc://wsq-%p", wss); + zsock_connect (wss->wsq_in, "inproc://wsq-%p", wss); // start watching the to-websocket pipe wss->wsqin_pollitem.socket = wss->wsq_in; @@ -462,9 +462,9 @@ callback_http(struct libwebsocket_context *context, zloop_poller_end (self->netopts.z_loop, &wss->wsqin_pollitem); if (wss->socket != NULL) - zsocket_destroy (self->netopts.z_context, wss->socket); - zsocket_destroy (self->netopts.z_context, wss->wsq_in); - zsocket_destroy (self->netopts.z_context, wss->wsq_out); + zsock_destroy (self->netopts.z_context, wss->socket); + zsock_destroy (self->netopts.z_context, wss->wsq_in); + zsock_destroy (self->netopts.z_context, wss->wsq_out); uriFreeQueryListA(wss->queryList); uriFreeUriMembersA(&wss->u); diff --git a/src/machinetalk/webtalk/webtalk_zws_policy.cc b/src/machinetalk/webtalk/webtalk_zws_policy.cc index 5182672fb5..21d6f47273 100644 --- a/src/machinetalk/webtalk/webtalk_zws_policy.cc +++ b/src/machinetalk/webtalk/webtalk_zws_policy.cc @@ -91,14 +91,14 @@ zws_policy(wtself_t *self, case '1': // subscribe command: { std::string s(data + 1, data + wss->length-2); - zsocket_set_subscribe (wss->socket, s.c_str()); + zsock_set_subscribe (wss->socket, s.c_str()); lwsl_zws("%s: SUB subscribe '%s'\n", __func__, s.c_str()); } break; case '0': // unsubscribe command: { std::string s(data + 1, data + wss->length-2); - zsocket_set_unsubscribe (wss->socket, s.c_str()); + zsock_set_unsubscribe (wss->socket, s.c_str()); lwsl_zws("%s: SUB unsubscribe '%s'\n", __func__, s.c_str()); } break; diff --git a/src/rtapi/rtapi_app.cc b/src/rtapi/rtapi_app.cc index 3a3a355bd2..83a64902bb 100644 --- a/src/rtapi/rtapi_app.cc +++ b/src/rtapi/rtapi_app.cc @@ -1291,17 +1291,16 @@ static int mainloop(size_t argc, char **argv) assert(signal_fd > -1); } - // suppress default handling of signals in zctx_new() + // suppress default handling of signals in zsock_new() // since we're using signalfd() zsys_handler_set(NULL); - zctx_t *z_context = zctx_new (); - void *z_command = zsocket_new (z_context, ZMQ_ROUTER); + zsock_t *z_command = zsock_new (ZMQ_ROUTER); { char z_ident[30]; snprintf(z_ident, sizeof(z_ident), "rtapi_app%d", getpid()); - zsocket_set_identity(z_command, z_ident); - zsocket_set_linger(z_command, 1000); // wait for last reply to drain + zsock_set_identity(z_command, z_ident); + zsock_set_linger(z_command, 1000); // wait for last reply to drain } #ifdef NOTYET @@ -1324,13 +1323,13 @@ static int mainloop(size_t argc, char **argv) z_uri = strdup(uri); } - if ((z_port = zsocket_bind(z_command, z_uri)) == -1) { + if ((z_port = zsock_bind(z_command, z_uri)) == -1) { rtapi_print_msg(RTAPI_MSG_ERR, "cannot bind '%s' - %s\n", z_uri, strerror(errno)); global_data->rtapi_app_pid = 0; exit(EXIT_FAILURE); } else { - z_uri_dsn = zsocket_last_endpoint(z_command); + z_uri_dsn = zsock_last_endpoint(z_command); rtapi_print_msg(RTAPI_MSG_DBG, "rtapi_app: command RPC socket on '%s'\n", z_uri_dsn); } @@ -1341,7 +1340,7 @@ static int mainloop(size_t argc, char **argv) snprintf(uri, sizeof(uri), ZMQIPC_FORMAT, RUNDIR, instance_id, RTAPIMOD, service_uuid); mode_t prev = umask(S_IROTH | S_IWOTH | S_IXOTH); - if ((z_port = zsocket_bind(z_command, "%s", uri )) < 0) { + if ((z_port = zsock_bind(z_command, "%s", uri )) < 0) { rtapi_print_msg(RTAPI_MSG_ERR, "cannot bind IPC socket '%s' - %s\n", uri, strerror(errno)); global_data->rtapi_app_pid = 0; @@ -1412,7 +1411,7 @@ static int mainloop(size_t argc, char **argv) zeroconf_service_withdraw(rtapi_publisher); // shutdown zmq context - zctx_destroy(&z_context); + zsock_destroy(&z_command); // exiting, so deregister our pid, which will make rtapi_msgd exit too global_data->rtapi_app_pid = 0; diff --git a/src/rtapi/rtapi_msgd.cc b/src/rtapi/rtapi_msgd.cc index b151ae9e32..82278ecc16 100644 --- a/src/rtapi/rtapi_msgd.cc +++ b/src/rtapi/rtapi_msgd.cc @@ -984,16 +984,13 @@ int main(int argc, char **argv) memset(argv[i], '\0', strlen(argv[i])); - // suppress default handling of signals in zctx_new() + // suppress default handling of signals in zsock_new() // since we're using signalfd() zsys_handler_set(NULL); netopts.rundir = RUNDIR; netopts.rtapi_instance = rtapi_instance; - netopts.z_context = zctx_new (); - assert(netopts.z_context); - netopts.z_loop = zloop_new (); assert(netopts.z_loop); @@ -1102,10 +1099,10 @@ int main(int argc, char **argv) logpub.port = port; logpub.dnssd_subtype = LOG_DNSSD_SUBTYPE; logpub.tag = "log"; - logpub.socket = zsocket_new (netopts.z_context, ZMQ_XPUB); + logpub.socket = zsock_new (ZMQ_XPUB); - zsocket_set_xpub_verbose (logpub.socket, 1); // enable reception - zsocket_set_linger(logpub.socket, 0); + zsock_set_xpub_verbose (logpub.socket, 1); // enable reception + zsock_set_linger(logpub.socket, 0); if (mk_bindsocket(&netopts, &logpub)) return -1; @@ -1129,7 +1126,7 @@ int main(int argc, char **argv) do { retval = zloop_start(netopts.z_loop); - } while (!(retval || zctx_interrupted)); + } while (!(retval || zsys_interrupted)); // stop the service announcement mk_withdraw(&logpub); @@ -1139,7 +1136,7 @@ int main(int argc, char **argv) avahi_czmq_poll_free(netopts.av_loop); // shutdown zmq context - zctx_destroy(&netopts.z_context); + zsock_destroy(&logpub.socket); cleanup_actions(); closelog(); From ebca177771b1d878a6e11685ad25cfad1e3bfbe2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Fri, 6 Oct 2017 12:09:19 +0200 Subject: [PATCH 121/516] Futher work on CZMQ 4.0 API support --- src/hal/cython/machinekit/rtapi.pyx | 7 +++ src/hal/cython/machinekit/rtapi_app.pxd | 1 + src/hal/utils/halcmd.c | 1 + src/hal/utils/halcmd_rtapiapp.cc | 11 ++++- src/hal/utils/halcmd_rtapiapp.h | 1 + src/machinetalk/haltalk/haltalk.hh | 6 +-- src/machinetalk/haltalk/haltalk_bridge.cc | 11 +++-- src/machinetalk/haltalk/haltalk_command.cc | 6 +-- src/machinetalk/haltalk/haltalk_group.cc | 10 ++--- src/machinetalk/haltalk/haltalk_main.cc | 17 ++++---- src/machinetalk/haltalk/haltalk_rcomp.cc | 8 ++-- src/machinetalk/messagebus/messagebus.cc | 43 ++++++++----------- src/machinetalk/messagebus/rtproxy.cc | 6 +-- src/machinetalk/messagebus/rtproxy.hh | 2 +- .../webtalk/webtalk_defaultpolicy.cc | 2 +- src/rtapi/rtapi_app.cc | 22 ++++++---- src/rtapi/rtapi_msgd.cc | 9 ++-- 17 files changed, 89 insertions(+), 74 deletions(-) diff --git a/src/hal/cython/machinekit/rtapi.pyx b/src/hal/cython/machinekit/rtapi.pyx index c0f6224695..ca05810bde 100644 --- a/src/hal/cython/machinekit/rtapi.pyx +++ b/src/hal/cython/machinekit/rtapi.pyx @@ -305,3 +305,10 @@ def init_RTAPI(**kwargs): if not __rtapicmd: raise RuntimeError('unable to initialize RTAPIcommand - realtime not running?') + +# make sure to close the zmq socket when done +def _cleanup_rtapi(): + rtapi_cleanup() + +import atexit +atexit.register(_cleanup_rtapi) diff --git a/src/hal/cython/machinekit/rtapi_app.pxd b/src/hal/cython/machinekit/rtapi_app.pxd index a7c87f2845..dd4640ffe3 100644 --- a/src/hal/cython/machinekit/rtapi_app.pxd +++ b/src/hal/cython/machinekit/rtapi_app.pxd @@ -12,5 +12,6 @@ cdef extern from "halcmd_rtapiapp.h": int rtapi_callfunc(int instance, const char *func, const char **args) int rtapi_newinst(int instance, const char *comp, const char *instname, const char **args) int rtapi_delinst(int instance, const char *instname) + void rtapi_cleanup() const char *rtapi_rpcerror() diff --git a/src/hal/utils/halcmd.c b/src/hal/utils/halcmd.c index b550cebe42..db0880ea32 100644 --- a/src/hal/utils/halcmd.c +++ b/src/hal/utils/halcmd.c @@ -172,6 +172,7 @@ int halcmd_startup(int quiet, char *uri, const char *svc_uuid) { } void halcmd_shutdown(void) { + rtapi_cleanup(); /* tell the signal handler we might have the mutex */ hal_flag = 1; hal_exit(comp_id); diff --git a/src/hal/utils/halcmd_rtapiapp.cc b/src/hal/utils/halcmd_rtapiapp.cc index bdc0feabb0..0cc0578cdb 100644 --- a/src/hal/utils/halcmd_rtapiapp.cc +++ b/src/hal/utils/halcmd_rtapiapp.cc @@ -17,7 +17,7 @@ using namespace google::protobuf; static machinetalk::Container command, reply; -static zsock_t *z_command; +static zsock_t *z_command = NULL; static int timeout = 5000; static std::string errormsg; int proto_debug; @@ -295,3 +295,12 @@ int rtapi_connect(int instance, char *uri, const char *svc_uuid) return rtapi_ping(instance); } + +void rtapi_cleanup() +{ + if (z_command != NULL) { + zsock_destroy(&z_command); + z_command = NULL; + } +} + diff --git a/src/hal/utils/halcmd_rtapiapp.h b/src/hal/utils/halcmd_rtapiapp.h index ab9775290f..9ba9ebb81d 100644 --- a/src/hal/utils/halcmd_rtapiapp.h +++ b/src/hal/utils/halcmd_rtapiapp.h @@ -23,6 +23,7 @@ extern "C" { int rtapi_delinst(int instance, const char *instname); const char *rtapi_rpcerror(void); + void rtapi_cleanup(); extern int proto_debug; #ifdef __cplusplus diff --git a/src/machinetalk/haltalk/haltalk.hh b/src/machinetalk/haltalk/haltalk.hh index 45df165577..ad14b79596 100644 --- a/src/machinetalk/haltalk/haltalk.hh +++ b/src/machinetalk/haltalk/haltalk.hh @@ -156,18 +156,18 @@ typedef struct htself { int scan_groups(htself_t *self); int release_groups(htself_t *self); int handle_group_timer(zloop_t *loop, int timer_id, void *arg); -int handle_group_input(zloop_t *loop, zmq_pollitem_t *poller, void *arg); +int handle_group_input(zloop_t *loop, zsock_t *socket, void *arg); int ping_groups(htself_t *self); // haltalk_rcomp.cc: int scan_comps(htself_t *self); int release_comps(htself_t *self); -int handle_rcomp_input(zloop_t *loop, zmq_pollitem_t *poller, void *arg); +int handle_rcomp_input(zloop_t *loop, zsock_t *socket, void *arg); int handle_rcomp_timer(zloop_t *loop, int timer_id, void *arg); int ping_comps(htself_t *self); // haltalk_command.cc: -int handle_command_input(zloop_t *loop, zmq_pollitem_t *poller, void *arg); +int handle_command_input(zloop_t *loop, zsock_t *socket, void *arg); // haltalk_introspect.cc: int process_describe(htself_t *self, zmsg_t *from, void *socket); diff --git a/src/machinetalk/haltalk/haltalk_bridge.cc b/src/machinetalk/haltalk/haltalk_bridge.cc index 9277404b5e..c37936cae0 100644 --- a/src/machinetalk/haltalk/haltalk_bridge.cc +++ b/src/machinetalk/haltalk/haltalk_bridge.cc @@ -82,7 +82,7 @@ int bridge_init(htself_t *self) // -- end public functions --- static int -handle_sd_input(zloop_t *loop, zmq_pollitem_t *poller, void *arg) +handle_sd_input(zloop_t *loop, zsock_t *socket, void *arg) { htself_t *self = (htself_t *)arg; struct sockaddr_in remote_addr = {0}; @@ -90,7 +90,7 @@ handle_sd_input(zloop_t *loop, zmq_pollitem_t *poller, void *arg) unsigned char buffer[8192]; // if (poller->revents & ZMQ_POLLIN) { - // size_t len = recvfrom(sd_socket(self->bridge->sdiscover), buffer, sizeof(buffer), 0, + // size_t len = recvfrom(socket, buffer, sizeof(buffer), 0, // (struct sockaddr *)&remote_addr, &addrlen); @@ -120,8 +120,7 @@ prepare_discovery(htself_t *self) // assert(retval == 0); // sd_log(bridge->sdiscover, self->cfg->debug > 1); - // zmq_pollitem_t sd_poller = { 0, sd_socket(bridge->sdiscover), ZMQ_POLLIN }; - // zloop_poller(self->z_loop, &sd_poller, handle_sd_input, self); + // zloop_reader(self->z_loop, sd_socket(bridge->sdiscover), handle_sd_input, self); // bridge->timer_id = zloop_timer(self->z_loop, 500, 1, handle_sd_timer, (void *)self); // one shot // assert(bridge->timer_id > -1); @@ -142,10 +141,10 @@ static int bridge_fsm(htself_t *self, bridgeevent_t event) case BSTATE_RETRY_PROBE: case BSTATE_CONNECT: - bridge->z_bridge = zsock_new (self->z_context, ZMQ_XSUB); + bridge->z_bridge = zsock_new (ZMQ_XSUB); retval = zsock_connect(bridge->z_bridge, self->cfg->bridgecomp_updateuri); assert (retval == 0); - bridge->z_bridge_cmd = zsock_new (self->z_context, ZMQ_DEALER); + bridge->z_bridge_cmd = zsock_new (ZMQ_DEALER); retval = zsock_connect(bridge->z_bridge_cmd, self->cfg->bridgecomp_cmduri); assert (retval == 0); break; diff --git a/src/machinetalk/haltalk/haltalk_command.cc b/src/machinetalk/haltalk/haltalk_command.cc index 0e205bf7e4..662b28555c 100644 --- a/src/machinetalk/haltalk/haltalk_command.cc +++ b/src/machinetalk/haltalk/haltalk_command.cc @@ -33,12 +33,12 @@ static int describe_signal_by_name(htself_t *self, const char *name); static int apply_initial_values(htself_t *self, const machinetalk::Component *pbcomp); int -handle_command_input(zloop_t *loop, zmq_pollitem_t *poller, void *arg) +handle_command_input(zloop_t *loop, zsock_t *socket, void *arg) { int retval = 0; htself_t *self = (htself_t *) arg; - zmsg_t *msg = zmsg_recv(poller->socket); + zmsg_t *msg = zmsg_recv(socket); if (self->cfg->debug > 4) zmsg_dump(msg); @@ -69,7 +69,7 @@ handle_command_input(zloop_t *loop, zmq_pollitem_t *poller, void *arg) fprintf(stderr,"%s: req=%s\n",__func__,s.c_str()); } // a valid protobuf. Interpret and reply as needed. - dispatch_request(self, msg, poller->socket); + dispatch_request(self, msg, socket); } zframe_destroy(&f); zmsg_destroy(&msg); diff --git a/src/machinetalk/haltalk/haltalk_group.cc b/src/machinetalk/haltalk/haltalk_group.cc index b98dcf1b3f..f94cac4bb7 100644 --- a/src/machinetalk/haltalk/haltalk_group.cc +++ b/src/machinetalk/haltalk/haltalk_group.cc @@ -34,10 +34,10 @@ static int scan_group_cb(hal_object_ptr o, foreach_args_t *args); // well as retrieve all current values without constantly broadcasting all // signal names int -handle_group_input(zloop_t *loop, zmq_pollitem_t *poller, void *arg) +handle_group_input(zloop_t *loop, zsock_t *socket, void *arg) { htself_t *self = (htself_t *) arg; - zframe_t *f_subscribe = zframe_recv(poller->socket); + zframe_t *f_subscribe = zframe_recv(socket); const char *s = (const char *) zframe_data(f_subscribe); if ((s == NULL) || ((*s != '\000') && (*s != '\001'))) { @@ -64,7 +64,7 @@ handle_group_input(zloop_t *loop, zmq_pollitem_t *poller, void *arg) self->tx.set_uuid(self->netopts.proc_uuid, sizeof(self->netopts.proc_uuid)); self->tx.set_serial(g->serial++); describe_parameters(self); - describe_group(self, gi->first.c_str(), gi->first.c_str(), poller->socket); + describe_group(self, gi->first.c_str(), gi->first.c_str(), socket); // if first subscriber: activate scanning if (g->timer_id < 0) { // not scanning @@ -90,7 +90,7 @@ handle_group_input(zloop_t *loop, zmq_pollitem_t *poller, void *arg) self->tx.set_uuid(self->netopts.proc_uuid, sizeof(self->netopts.proc_uuid)); self->tx.set_serial(g->serial++); describe_parameters(self); - describe_group(self, gi->first.c_str(), gi->first.c_str(), poller->socket); + describe_group(self, gi->first.c_str(), gi->first.c_str(), socket); rtapi_print_msg(RTAPI_MSG_DBG, "%s: subscribe group='%s' serial=%d", self->cfg->progname, @@ -118,7 +118,7 @@ handle_group_input(zloop_t *loop, zmq_pollitem_t *poller, void *arg) note_printf(self->tx, " %s", g->first.c_str()); } int retval = send_pbcontainer(topic, self->tx, - self->mksock[SVC_HALGROUP].socket); + socket); assert(retval == 0); } } diff --git a/src/machinetalk/haltalk/haltalk_main.cc b/src/machinetalk/haltalk/haltalk_main.cc index efa1c8c9b1..6901b01407 100644 --- a/src/machinetalk/haltalk/haltalk_main.cc +++ b/src/machinetalk/haltalk/haltalk_main.cc @@ -94,18 +94,15 @@ mainloop( htself_t *self) int retval; zloop_t *loop = self->netopts.z_loop; - zmq_pollitem_t signal_poller = { 0, self->signal_fd, ZMQ_POLLIN }; - zmq_pollitem_t group_poller = { self->mksock[SVC_HALGROUP].socket, 0, ZMQ_POLLIN }; - zmq_pollitem_t rcomp_poller = { self->mksock[SVC_HALRCOMP].socket, 0, ZMQ_POLLIN }; - zmq_pollitem_t cmd_poller = { self->mksock[SVC_HALRCMD].socket, 0, ZMQ_POLLIN }; - zloop_set_verbose (loop, self->cfg->debug > 8); - if (self->cfg->trap_signals) + if (self->cfg->trap_signals) { + zmq_pollitem_t signal_poller = { 0, self->signal_fd, ZMQ_POLLIN }; zloop_poller(loop, &signal_poller, handle_signal, self); - zloop_poller(loop, &group_poller, handle_group_input, self); - zloop_poller(loop, &rcomp_poller, handle_rcomp_input, self); - zloop_poller(loop, &cmd_poller, handle_command_input, self); + } + zloop_reader(loop, self->mksock[SVC_HALGROUP].socket, handle_group_input, self); + zloop_reader(loop, self->mksock[SVC_HALRCOMP].socket, handle_rcomp_input, self); + zloop_reader(loop, self->mksock[SVC_HALRCMD].socket, handle_command_input, self); if (self->cfg->keepalive_timer) zloop_timer(loop, self->cfg->keepalive_timer, 0, handle_keepalive_timer, (void *) self); @@ -468,6 +465,8 @@ int main (int argc, char *argv[]) // shutdown zmq socket zsock_destroy(&self.mksock[SVC_HALGROUP].socket); + zsock_destroy(&self.mksock[SVC_HALRCOMP].socket); + zsock_destroy(&self.mksock[SVC_HALRCMD].socket); hal_cleanup(&self); diff --git a/src/machinetalk/haltalk/haltalk_rcomp.cc b/src/machinetalk/haltalk/haltalk_rcomp.cc index e2a8370aa2..b78b4c7332 100644 --- a/src/machinetalk/haltalk/haltalk_rcomp.cc +++ b/src/machinetalk/haltalk/haltalk_rcomp.cc @@ -49,11 +49,11 @@ handle_rcomp_timer(zloop_t *loop, int timer_id, void *arg) // unsubscribe events (\001), for the last unsubscribe // other - any commands sent to the XPUB - dubious how useful this is int -handle_rcomp_input(zloop_t *loop, zmq_pollitem_t *poller, void *arg) +handle_rcomp_input(zloop_t *loop, zsock_t *socket, void *arg) { htself_t *self = (htself_t *) arg; int retval; - zmsg_t *msg = zmsg_recv(poller->socket); + zmsg_t *msg = zmsg_recv(socket); size_t nframes = zmsg_size( msg); if (nframes == 1) { @@ -79,7 +79,7 @@ handle_rcomp_input(zloop_t *loop, zmq_pollitem_t *poller, void *arg) // not found, publish an error message on this topic self->tx.set_type(machinetalk::MT_HALRCOMP_ERROR); note_printf(self->tx, "component '%s' does not exist", topic); - retval = send_pbcontainer(topic, self->tx, self->mksock[SVC_HALRCOMP].socket); + retval = send_pbcontainer(topic, self->tx, socket); assert(retval == 0); } else { @@ -89,7 +89,7 @@ handle_rcomp_input(zloop_t *loop, zmq_pollitem_t *poller, void *arg) self->tx.set_uuid(self->netopts.proc_uuid, sizeof(self->netopts.proc_uuid)); self->tx.set_serial(g->serial++); describe_parameters(self); - describe_comp(self, topic, topic, poller->socket); + describe_comp(self, topic, topic, socket); // first subscriber - activate scanning if (g->timer_id < 0) { // not scanning diff --git a/src/machinetalk/messagebus/messagebus.cc b/src/machinetalk/messagebus/messagebus.cc index d7a5934ebe..aff033f7f3 100644 --- a/src/machinetalk/messagebus/messagebus.cc +++ b/src/machinetalk/messagebus/messagebus.cc @@ -106,7 +106,6 @@ typedef struct { actormap_t *cmd_subscribers; actormap_t *response_subscribers; int comp_id; - zsock_t *context; zloop_t *loop; register_context_t *command_publisher; register_context_t *response_publisher; @@ -116,7 +115,7 @@ typedef struct { } msgbusd_self_t; -static int handle_xpub_in(zloop_t *loop, zmq_pollitem_t *poller, void *arg) +static int handle_xpub_in(zloop_t *loop, zsock_t *socket, void *arg) { msgbusd_self_t *self = (msgbusd_self_t *) arg; actormap_t *map; @@ -124,7 +123,7 @@ static int handle_xpub_in(zloop_t *loop, zmq_pollitem_t *poller, void *arg) char *data, *topic; int retval; - if (poller->socket == self->cmd) { + if (socket == self->cmd) { map = self->cmd_subscribers; rail = "cmd"; } else { @@ -132,7 +131,7 @@ static int handle_xpub_in(zloop_t *loop, zmq_pollitem_t *poller, void *arg) rail = "response"; } - zmsg_t *msg = zmsg_recv(poller->socket); + zmsg_t *msg = zmsg_recv(socket); size_t nframes = zmsg_size( msg); if (nframes == 1) { @@ -173,7 +172,7 @@ static int handle_xpub_in(zloop_t *loop, zmq_pollitem_t *poller, void *arg) snprintf(errmsg, sizeof(errmsg), "rail %s: no such destination: %s", rail, to); rtapi_print_msg(RTAPI_MSG_ERR, "%s: %s\n", progname,errmsg); - if (poller->socket == self->cmd) { + if (socket == self->cmd) { // command was directed to non-existent actor // we wont get a reply from a non-existent actor // so send error message on response rail instead: @@ -203,9 +202,9 @@ static int handle_xpub_in(zloop_t *loop, zmq_pollitem_t *poller, void *arg) if (debug) rtapi_print_msg(RTAPI_MSG_ERR, "forward: %s->%s:\n", from,to); - zstr_sendm(poller->socket, to); // topic - zstr_sendm(poller->socket, from); // destination - zmsg_send(&msg, poller->socket); + zstr_sendm(socket, to); // topic + zstr_sendm(socket, from); // destination + zmsg_send(&msg, socket); } free(from); free(to); @@ -243,12 +242,10 @@ static int mainloop(msgbusd_self_t *self) int retval; zmq_pollitem_t signal_poller = { 0, signal_fd, ZMQ_POLLIN }; - zmq_pollitem_t cmd_poller = { self->cmd, 0, ZMQ_POLLIN }; - zmq_pollitem_t response_poller = { self->response, 0, ZMQ_POLLIN }; zloop_poller(self->loop, &signal_poller, handle_signal, self); - zloop_poller(self->loop, &cmd_poller, handle_xpub_in, self); - zloop_poller(self->loop, &response_poller, handle_xpub_in, self); + zloop_reader(self->loop, self->cmd, handle_xpub_in, self); + zloop_reader(self->loop, self->response, handle_xpub_in, self); do { retval = zloop_start(self->loop); @@ -270,13 +267,9 @@ static int zmq_setup(msgbusd_self_t *self) // since we're using signalfd() zsys_handler_set(NULL); - self->context = zsock_new (); - assert(self->context); - - zsock_set_linger (self->context, 0); - - self->cmd = zsock_new (self->context, ZMQ_XPUB); + self->cmd = zsock_new (ZMQ_XPUB); assert(self->cmd); + zsock_set_linger (self->cmd, 0); zsock_set_xpub_verbose (self->cmd, 1); self->command_port = zsock_bind(self->cmd, self->cmd_uri); assert(self->command_port > -1); @@ -285,8 +278,9 @@ static int zmq_setup(msgbusd_self_t *self) assert(zsock_bind(self->cmd, proxy_cmd_uri) > -1); - self->response = zsock_new (self->context, ZMQ_XPUB); + self->response = zsock_new (ZMQ_XPUB); assert(self->response); + zsock_set_linger (self->response, 0); zsock_set_xpub_verbose (self->response, 1); self->response_port = zsock_bind(self->response, self->response_uri); assert(self->response_port > -1); @@ -398,7 +392,7 @@ static int rtproxy_setup(msgbusd_self_t *self) { echo.flags = ACTOR_ECHO|TRACE_TO_RT; echo.name = "echo"; - echo.pipe = zactor_fork (self->context, rtproxy_thread, &echo); + echo.pipe = zactor_new (rtproxy_thread, &echo); assert (echo.pipe); demo.flags = ACTOR_RESPONDER|TRACE_FROM_RT|TRACE_TO_RT|DESERIALIZE_TO_RT|SERIALIZE_FROM_RT; @@ -411,7 +405,7 @@ static int rtproxy_setup(msgbusd_self_t *self) demo.from_rt_name = "mptx.0.out"; demo.min_delay = 2; // msec demo.max_delay = 200; // msec - demo.pipe = zactor_fork (self->context, rtproxy_thread, &demo); + demo.pipe = zactor_new (rtproxy_thread, &demo); assert (demo.pipe); // too.flags = ACTOR_RESPONDER|ACTOR_TRACE; @@ -421,7 +415,7 @@ static int rtproxy_setup(msgbusd_self_t *self) // too.name = "mptx"; // too.to_rt_name = "mptx.0.in"; // too.from_rt_name = "mptx.0.out"; - // too.pipe = zactor_fork (self->context, rtproxy_thread, &too); + // too.pipe = zactor_new (rtproxy_thread, &too); // assert (too.pipe); return 0; @@ -667,8 +661,9 @@ int main (int argc, char *argv[]) if (self.remote) mb_zeroconf_withdraw(&self); - // shutdown zmq context - zsock_destroy (&self.context); + // shutdown zmq sockets + zsock_destroy (&self.cmd); + zsock_destroy (&self.response); if (comp_id) hal_exit(comp_id); diff --git a/src/machinetalk/messagebus/rtproxy.cc b/src/machinetalk/messagebus/rtproxy.cc index 9596f90457..5f1aa34378 100644 --- a/src/machinetalk/messagebus/rtproxy.cc +++ b/src/machinetalk/messagebus/rtproxy.cc @@ -49,16 +49,16 @@ send_subscribe(void *socket, const char *topic) } void -rtproxy_thread(void *arg, zsock_t *ctx, void *pipe) +rtproxy_thread(void *arg, void *pipe) { rtproxy_t *self = (rtproxy_t *) arg; int retval; - self->proxy_cmd = zsock_new (ctx, ZMQ_XSUB); + self->proxy_cmd = zsock_new (ZMQ_XSUB); retval = zsock_connect(self->proxy_cmd, proxy_cmd_uri); assert(retval == 0); - self->proxy_response = zsock_new (ctx, ZMQ_XSUB); + self->proxy_response = zsock_new (ZMQ_XSUB); assert(zsock_connect(self->proxy_response, proxy_response_uri) == 0); if (self->flags & (ACTOR_RESPONDER|ACTOR_ECHO|ACTOR_SUBSCRIBER)) { diff --git a/src/machinetalk/messagebus/rtproxy.hh b/src/machinetalk/messagebus/rtproxy.hh index 42b42d1d4d..e9c2dfc272 100644 --- a/src/machinetalk/messagebus/rtproxy.hh +++ b/src/machinetalk/messagebus/rtproxy.hh @@ -42,4 +42,4 @@ typedef struct { } rtproxy_t; -void rtproxy_thread(void *arg, zsock_t *ctx, void *pipe); +void rtproxy_thread(void *arg, void *pipe); diff --git a/src/machinetalk/webtalk/webtalk_defaultpolicy.cc b/src/machinetalk/webtalk/webtalk_defaultpolicy.cc index c68b4d8515..ecf0eaca2b 100644 --- a/src/machinetalk/webtalk/webtalk_defaultpolicy.cc +++ b/src/machinetalk/webtalk/webtalk_defaultpolicy.cc @@ -71,7 +71,7 @@ int default_policy(wtself_t *self, } q = q->next; } - wss->socket = zsock_new (self->netopts.z_context, wss->socket_type); + wss->socket = zsock_new (wss->socket_type); if (wss->socket == NULL) { lwsl_err("%s %d: cant create ZMQ socket: %s\n", __func__, fd, strerror(errno)); diff --git a/src/rtapi/rtapi_app.cc b/src/rtapi/rtapi_app.cc index 83a64902bb..9460df424c 100644 --- a/src/rtapi/rtapi_app.cc +++ b/src/rtapi/rtapi_app.cc @@ -855,9 +855,9 @@ static int attach_global_segment() // handle commands from zmq socket -static int rtapi_request(zloop_t *loop, zmq_pollitem_t *poller, void *arg) +static int rtapi_request(zloop_t *loop, zsock_t *socket, void *arg) { - zmsg_t *r = zmsg_recv(poller->socket); + zmsg_t *r = zmsg_recv(socket); char *origin = zmsg_popstr (r); zframe_t *request_frame = zmsg_pop (r); static bool force_exit = false; @@ -1081,8 +1081,8 @@ static int rtapi_request(zloop_t *loop, zmq_pollitem_t *poller, void *arg) fprintf(stderr, "reply: %s\n",buffer.c_str()); } } - assert(zstr_sendm (poller->socket, origin) == 0); - if (zframe_send (&reply, poller->socket, 0)) { + assert(zstr_sendm (socket, origin) == 0); + if (zframe_send (&reply, socket, 0)) { rtapi_print_msg(RTAPI_MSG_ERR, "cant serialize to %s (type %d size %zu)", origin ? origin : "NULL", @@ -1180,6 +1180,9 @@ static int s_handle_signal(zloop_t *loop, zmq_pollitem_t *poller, void *arg) static int s_handle_timer(zloop_t *loop, int timer_id, void *args) { + (void)loop; + (void)timer_id; + (void)args; if (global_data->rtapi_msgd_pid == 0) { // cant log this via rtapi_print, since msgd is gone syslog_async(LOG_ERR,"rtapi_msgd went away, exiting\n"); @@ -1353,12 +1356,13 @@ static int mainloop(size_t argc, char **argv) assert(z_loop); zloop_set_verbose(z_loop, debug); - zmq_pollitem_t signal_poller = { 0, signal_fd, ZMQ_POLLIN }; - if (trap_signals) + + if (trap_signals) { + zmq_pollitem_t signal_poller = { 0, signal_fd, ZMQ_POLLIN }; zloop_poller (z_loop, &signal_poller, s_handle_signal, NULL); - - zmq_pollitem_t command_poller = { z_command, 0, ZMQ_POLLIN }; - zloop_poller(z_loop, &command_poller, rtapi_request, NULL); + } + + zloop_reader(z_loop, z_command, rtapi_request, NULL); zloop_timer (z_loop, BACKGROUND_TIMER, 0, s_handle_timer, NULL); diff --git a/src/rtapi/rtapi_msgd.cc b/src/rtapi/rtapi_msgd.cc index 82278ecc16..735f41ce22 100644 --- a/src/rtapi/rtapi_msgd.cc +++ b/src/rtapi/rtapi_msgd.cc @@ -608,9 +608,9 @@ cleanup_actions(void) } // react to subscribe/unsubscribe events -static int logpub_readable_cb(zloop_t *loop, zmq_pollitem_t *poller, void *arg) +static int logpub_readable_cb(zloop_t *loop, zsock_t *socket, void *arg) { - zframe_t *f = zframe_recv(poller->socket); + zframe_t *f = zframe_recv(socket); const char *s = (const char *) zframe_data(f); syslog_async(LOG_ERR, "%s subscribe on '%s'", *s ? "start" : "stop", s+1); @@ -1116,8 +1116,7 @@ int main(int argc, char **argv) zloop_poller (netopts.z_loop, &signal_poller, s_handle_signal, NULL); if (logpub.socket) { - zmq_pollitem_t logpub_poller = { logpub.socket, 0, ZMQ_POLLIN }; - zloop_poller (netopts.z_loop, &logpub_poller, logpub_readable_cb, NULL); + zloop_reader (netopts.z_loop, logpub.socket, logpub_readable_cb, NULL); } polltimer_id = zloop_timer (netopts.z_loop, msg_poll, 0, message_poll_cb, NULL); @@ -1135,7 +1134,7 @@ int main(int argc, char **argv) if (netopts.av_loop) avahi_czmq_poll_free(netopts.av_loop); - // shutdown zmq context + // shutdown zmq sockets zsock_destroy(&logpub.socket); cleanup_actions(); From e9e463855bc5fc53a0f163d373db6569ce963703 Mon Sep 17 00:00:00 2001 From: Mick Date: Sun, 8 Oct 2017 14:17:02 +0100 Subject: [PATCH 122/516] Amend packaging to use libczmq4 for both Jessie and Stretch Remove Stretch specific control files where now redundant. Set libczmq and libzmq versions for both Jessie and Stretch libczmq(4) >= 4.0.2-10 libzmq(3) >= 4.0.4+dfsg-1 This will pull in the existing Stretch Debian packages and the Machinekit specific Jessie packages. Revert dh_shlibs switches to check package info, which now works. Signed-off-by: Mick --- configs/sim/qqvsim/pru-stepper.var.bak | 119 ------------------- configs/sim/v2-icomp-demo-sim/sim_mm.var.bak | 119 ------------------- debian/configure | 20 +--- debian/control-stretch.in | 8 +- debian/control.in | 4 +- debian/control.posix-stretch.in | 14 --- debian/control.posix.in | 2 +- debian/control.rt-preempt-stretch.in | 2 +- debian/control.rt-preempt.in | 2 +- debian/control.xenomai-stretch.in | 16 --- debian/control.xenomai.in | 2 +- debian/rules.in | 4 +- src/configure.ac | 2 +- 13 files changed, 19 insertions(+), 295 deletions(-) delete mode 100644 configs/sim/qqvsim/pru-stepper.var.bak delete mode 100644 configs/sim/v2-icomp-demo-sim/sim_mm.var.bak delete mode 100644 debian/control.posix-stretch.in delete mode 100644 debian/control.xenomai-stretch.in diff --git a/configs/sim/qqvsim/pru-stepper.var.bak b/configs/sim/qqvsim/pru-stepper.var.bak deleted file mode 100644 index 177637776c..0000000000 --- a/configs/sim/qqvsim/pru-stepper.var.bak +++ /dev/null @@ -1,119 +0,0 @@ -5161 0.000000 -5162 0.000000 -5163 0.000000 -5164 0.000000 -5165 0.000000 -5166 0.000000 -5167 0.000000 -5168 0.000000 -5169 0.000000 -5181 0.000000 -5182 0.000000 -5183 0.000000 -5184 0.000000 -5185 0.000000 -5186 0.000000 -5187 0.000000 -5188 0.000000 -5189 0.000000 -5210 0.000000 -5211 0.000000 -5212 0.000000 -5213 0.000000 -5214 0.000000 -5215 0.000000 -5216 0.000000 -5217 0.000000 -5218 0.000000 -5219 0.000000 -5220 1.000000 -5221 0.000000 -5222 0.000000 -5223 0.000000 -5224 0.000000 -5225 0.000000 -5226 0.000000 -5227 0.000000 -5228 0.000000 -5229 0.000000 -5230 0.000000 -5241 0.000000 -5242 0.000000 -5243 0.000000 -5244 0.000000 -5245 0.000000 -5246 0.000000 -5247 0.000000 -5248 0.000000 -5249 0.000000 -5250 0.000000 -5261 0.000000 -5262 0.000000 -5263 0.000000 -5264 0.000000 -5265 0.000000 -5266 0.000000 -5267 0.000000 -5268 0.000000 -5269 0.000000 -5270 0.000000 -5281 0.000000 -5282 0.000000 -5283 0.000000 -5284 0.000000 -5285 0.000000 -5286 0.000000 -5287 0.000000 -5288 0.000000 -5289 0.000000 -5290 0.000000 -5301 0.000000 -5302 0.000000 -5303 0.000000 -5304 0.000000 -5305 0.000000 -5306 0.000000 -5307 0.000000 -5308 0.000000 -5309 0.000000 -5310 0.000000 -5321 0.000000 -5322 0.000000 -5323 0.000000 -5324 0.000000 -5325 0.000000 -5326 0.000000 -5327 0.000000 -5328 0.000000 -5329 0.000000 -5330 0.000000 -5341 0.000000 -5342 0.000000 -5343 0.000000 -5344 0.000000 -5345 0.000000 -5346 0.000000 -5347 0.000000 -5348 0.000000 -5349 0.000000 -5350 0.000000 -5361 0.000000 -5362 0.000000 -5363 0.000000 -5364 0.000000 -5365 0.000000 -5366 0.000000 -5367 0.000000 -5368 0.000000 -5369 0.000000 -5370 0.000000 -5381 0.000000 -5382 0.000000 -5383 0.000000 -5384 0.000000 -5385 0.000000 -5386 0.000000 -5387 0.000000 -5388 0.000000 -5389 0.000000 -5390 0.000000 diff --git a/configs/sim/v2-icomp-demo-sim/sim_mm.var.bak b/configs/sim/v2-icomp-demo-sim/sim_mm.var.bak deleted file mode 100644 index 177637776c..0000000000 --- a/configs/sim/v2-icomp-demo-sim/sim_mm.var.bak +++ /dev/null @@ -1,119 +0,0 @@ -5161 0.000000 -5162 0.000000 -5163 0.000000 -5164 0.000000 -5165 0.000000 -5166 0.000000 -5167 0.000000 -5168 0.000000 -5169 0.000000 -5181 0.000000 -5182 0.000000 -5183 0.000000 -5184 0.000000 -5185 0.000000 -5186 0.000000 -5187 0.000000 -5188 0.000000 -5189 0.000000 -5210 0.000000 -5211 0.000000 -5212 0.000000 -5213 0.000000 -5214 0.000000 -5215 0.000000 -5216 0.000000 -5217 0.000000 -5218 0.000000 -5219 0.000000 -5220 1.000000 -5221 0.000000 -5222 0.000000 -5223 0.000000 -5224 0.000000 -5225 0.000000 -5226 0.000000 -5227 0.000000 -5228 0.000000 -5229 0.000000 -5230 0.000000 -5241 0.000000 -5242 0.000000 -5243 0.000000 -5244 0.000000 -5245 0.000000 -5246 0.000000 -5247 0.000000 -5248 0.000000 -5249 0.000000 -5250 0.000000 -5261 0.000000 -5262 0.000000 -5263 0.000000 -5264 0.000000 -5265 0.000000 -5266 0.000000 -5267 0.000000 -5268 0.000000 -5269 0.000000 -5270 0.000000 -5281 0.000000 -5282 0.000000 -5283 0.000000 -5284 0.000000 -5285 0.000000 -5286 0.000000 -5287 0.000000 -5288 0.000000 -5289 0.000000 -5290 0.000000 -5301 0.000000 -5302 0.000000 -5303 0.000000 -5304 0.000000 -5305 0.000000 -5306 0.000000 -5307 0.000000 -5308 0.000000 -5309 0.000000 -5310 0.000000 -5321 0.000000 -5322 0.000000 -5323 0.000000 -5324 0.000000 -5325 0.000000 -5326 0.000000 -5327 0.000000 -5328 0.000000 -5329 0.000000 -5330 0.000000 -5341 0.000000 -5342 0.000000 -5343 0.000000 -5344 0.000000 -5345 0.000000 -5346 0.000000 -5347 0.000000 -5348 0.000000 -5349 0.000000 -5350 0.000000 -5361 0.000000 -5362 0.000000 -5363 0.000000 -5364 0.000000 -5365 0.000000 -5366 0.000000 -5367 0.000000 -5368 0.000000 -5369 0.000000 -5370 0.000000 -5381 0.000000 -5382 0.000000 -5383 0.000000 -5384 0.000000 -5385 0.000000 -5386 0.000000 -5387 0.000000 -5388 0.000000 -5389 0.000000 -5390 0.000000 diff --git a/debian/configure b/debian/configure index d43b31853d..a52532e3bd 100755 --- a/debian/configure +++ b/debian/configure @@ -92,14 +92,10 @@ rules_set_kthreads_headers() { done } +# no difference in jessie / stretch additional packages do_posix() { - if [[ $DISTRO_CODENAME == "stretch" ]] ; then - cat control.posix-stretch.in >> control - echo "debian/control: added POSIX threads package for stretch" >&2 - else - cat control.posix.in >> control - echo "debian/control: added POSIX threads package" >&2 - fi + cat control.posix.in >> control + echo "debian/control: added POSIX threads package" >&2 rules_enable_threads posix HAVE_FLAVOR=true } @@ -118,14 +114,10 @@ do_rt-preempt() { HAVE_FLAVOR=true } +# no difference in jessie / stretch additional packages do_xenomai() { - if [[ $DISTRO_CODENAME == "stretch" ]] ; then - cat control.xenomai-stretch.in >> control - echo "debian/control: added xenomai threads package for Stretch" >&2 - else - cat control.xenomai.in >> control - echo "debian/control: added xenomai threads package for Wheezy/Jessie" >&2 - fi + cat control.xenomai.in >> control + echo "debian/control: added xenomai threads package" >&2 # Be sure the -dev files only appear once BUILD_DEPS="${BUILD_DEPS/libxenomai-dev, /}libxenomai-dev, " diff --git a/debian/control-stretch.in b/debian/control-stretch.in index 2a6ab2bae5..6057900cb7 100644 --- a/debian/control-stretch.in +++ b/debian/control-stretch.in @@ -9,8 +9,8 @@ Build-Depends: debhelper (>= 6), libxmu-headers, python (>= 2.6.6-3~), python-dev (>= 2.6.6-3~), cython (>= 0.19), dh-python, pkg-config, psmisc, python-tk, libxaw7-dev, libboost-serialization-dev, - zeromq, czmq, libjansson-dev (>= 2.5), - libwebsockets-dev (>= 1.2.2), procps, + libzmq3-dev (>= 4.0.4), libczmq-dev (>= 4.0.2-10), libjansson-dev (>= 2.5), + libwebsockets-dev (>= 1.2.2), procps, python-zmq, liburiparser-dev, libssl-dev, python-setuptools, uuid-dev, uuid-runtime, libavahi-client-dev, libprotobuf-dev (>= 2.4.1), protobuf-compiler (>= 2.4.1), @@ -51,8 +51,8 @@ Depends: ${shlibs:Depends}, machinekit-rt-threads, @TCL_TK_DEPS@, python-vte, python-xlib, python-gtkglext1, python-configobj, python-protobuf (>= 2.4.1), python-gst-1.0, python-avahi, python-simplejson, python-pyftpdlib, - python-pydot, xdot, zeromq, czmq, - tclreadline, bc, procps, psmisc, + python-pydot, xdot, libzmq3 (>= 4.0.4), libczmq4 (>= 4.0.2-10), + tclreadline, bc, procps, psmisc, python-zmq, gstreamer1.0-plugins-base Description: PC based motion controller for real-time Linux Machinekit is the next-generation Enhanced Machine Controller which diff --git a/debian/control.in b/debian/control.in index d352acab18..1470128457 100644 --- a/debian/control.in +++ b/debian/control.in @@ -9,7 +9,7 @@ Build-Depends: debhelper (>= 6), libxmu-headers, python (>= 2.6.6-3~), python-dev (>= 2.6.6-3~), cython (>= 0.19), dh-python, pkg-config, psmisc, python-tk, libxaw7-dev, libboost-serialization-dev, - libzmq3-dev (>= 4.0.4), libczmq-dev (>= 4.0.0), libjansson-dev (>= 2.5), + libzmq3-dev (>= 4.0.4), libczmq-dev (>= 4.0.2-10), libjansson-dev (>= 2.5), libwebsockets-dev (>= 1.2.2), python-zmq (>= 14.0.1), procps, liburiparser-dev, libssl-dev, python-setuptools, @@ -52,7 +52,7 @@ Depends: ${shlibs:Depends}, machinekit-rt-threads, @TCL_TK_DEPS@, python-vte, python-xlib, python-gtkglext1, python-configobj, python-zmq, python-protobuf (>= 2.4.1), python-gst0.10, python-avahi, python-simplejson, python-pyftpdlib, - python-pydot, xdot, + python-pydot, xdot, libzmq3 (>= 4.0.4), libczmq4 (>= 4.0.2-10), tclreadline, bc, procps, psmisc, gstreamer0.10-plugins-base Description: PC based motion controller for real-time Linux diff --git a/debian/control.posix-stretch.in b/debian/control.posix-stretch.in deleted file mode 100644 index 1f7aa57018..0000000000 --- a/debian/control.posix-stretch.in +++ /dev/null @@ -1,14 +0,0 @@ - -Package: machinekit-posix -Architecture: any -Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime, czmq, zeromq -Provides: machinekit-rt-threads -Breaks: machinekit-dev -Enhances: machinekit -Description: PC based motion controller for real-time Linux - Machinekit is the next-generation Enhanced Machine Controller which - provides motion control for CNC machine tools and robotic - applications (milling, cutting, routing, etc.). - . - This package provides components and drivers that run on a non-realtime - (Posix) system. diff --git a/debian/control.posix.in b/debian/control.posix.in index 2966087bc1..a05182b6f8 100644 --- a/debian/control.posix.in +++ b/debian/control.posix.in @@ -1,7 +1,7 @@ Package: machinekit-posix Architecture: any -Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime +Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime, libzmq3 (>= 4.0.4), libczmq4 (>= 4.0.2-10) Provides: machinekit-rt-threads Breaks: machinekit-dev Enhances: machinekit diff --git a/debian/control.rt-preempt-stretch.in b/debian/control.rt-preempt-stretch.in index a38ee4b5db..12b6cdb0ac 100644 --- a/debian/control.rt-preempt-stretch.in +++ b/debian/control.rt-preempt-stretch.in @@ -1,7 +1,7 @@ Package: machinekit-rt-preempt Architecture: any -Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime, czmq, zeromq, +Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime, libzmq3 (>= 4.0.4), libczmq4 (>= 4.0.2-10), # These Debian-style RT_PREEMPT package names are restricted by # architecture; ARM arch SOCs are all incompatible, so this can't be # easily done for ARM. diff --git a/debian/control.rt-preempt.in b/debian/control.rt-preempt.in index 86ab141781..775d457f42 100644 --- a/debian/control.rt-preempt.in +++ b/debian/control.rt-preempt.in @@ -1,7 +1,7 @@ Package: machinekit-rt-preempt Architecture: any -Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime, +Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime, libzmq3 (>= 4.0.4), libczmq4 (>= 4.0.2-10), # These Debian-style RT_PREEMPT package names are restricted by # architecture; ARM arch SOCs are all incompatible, so this can't be # easily done for ARM. diff --git a/debian/control.xenomai-stretch.in b/debian/control.xenomai-stretch.in deleted file mode 100644 index d0732671cf..0000000000 --- a/debian/control.xenomai-stretch.in +++ /dev/null @@ -1,16 +0,0 @@ - -Package: machinekit-xenomai -Architecture: any -Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime, czmq, zeromq, - xenomai-runtime -Provides: machinekit-rt-threads -Recommends: hostmot2-firmware-all [!armhf] -Breaks: machinekit-dev -Enhances: machinekit -Description: PC based motion controller for real-time Linux - Machinekit is the next-generation Enhanced Machine Controller which - provides motion control for CNC machine tools and robotic - applications (milling, cutting, routing, etc.). - . - This package provides components and drivers that run on a Xenomai - realtime system, with userspace threads. diff --git a/debian/control.xenomai.in b/debian/control.xenomai.in index 908d4cfc08..a806a0ebfb 100644 --- a/debian/control.xenomai.in +++ b/debian/control.xenomai.in @@ -1,7 +1,7 @@ Package: machinekit-xenomai Architecture: any -Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime, +Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime, libzmq3 (>= 4.0.4), libczmq4 (>= 4.0.2-10), xenomai-runtime Provides: machinekit-rt-threads Recommends: hostmot2-firmware-all [!armhf] diff --git a/debian/rules.in b/debian/rules.in index 9338135f02..c2ef81f70c 100755 --- a/debian/rules.in +++ b/debian/rules.in @@ -243,8 +243,8 @@ binary-arch: build install debian/shlibs.local ## ignore missing deps / symbols info for locally built libs ## necessary for Stretch builds until packaged libs can be used for czmq and zeromq - dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info -l debian/machinekit/usr/lib - #dh_shlibdeps -l debian/machinekit/usr/lib + #dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info -l debian/machinekit/usr/lib + dh_shlibdeps -l debian/machinekit/usr/lib dh_gencontrol dh_md5sums dh_builddeb diff --git a/src/configure.ac b/src/configure.ac index 7518d02840..acdb50fa35 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -947,7 +947,7 @@ PKG_CHECK_MODULES([CZMQ], [libczmq > 4.0], PKG_CHECK_MODULES([PROTOBUF], [protobuf > 2.4.0], [ - AC_DEFINE(HAVE_PROTOBUF, [], [zeroMQ czmq library available]) + AC_DEFINE(HAVE_PROTOBUF, [], [protobuf available]) USE_PROTOBUF=yes ],) From b44eeee57bea828a7383293143f8e8027e446764 Mon Sep 17 00:00:00 2001 From: mick Date: Mon, 9 Oct 2017 08:45:09 +0000 Subject: [PATCH 123/516] Make Jessie czmq deps version specific --- debian/control.in | 4 ++-- debian/control.posix.in | 2 +- debian/control.rt-preempt-stretch.in | 2 +- debian/control.rt-preempt.in | 2 +- debian/control.xenomai.in | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/debian/control.in b/debian/control.in index 1470128457..552910cd83 100644 --- a/debian/control.in +++ b/debian/control.in @@ -9,7 +9,7 @@ Build-Depends: debhelper (>= 6), libxmu-headers, python (>= 2.6.6-3~), python-dev (>= 2.6.6-3~), cython (>= 0.19), dh-python, pkg-config, psmisc, python-tk, libxaw7-dev, libboost-serialization-dev, - libzmq3-dev (>= 4.0.4), libczmq-dev (>= 4.0.2-10), libjansson-dev (>= 2.5), + libzmq3-dev (>= 4.0.4~jessie), libczmq-dev (>= 4.0.2-10~jessie), libjansson-dev (>= 2.5), libwebsockets-dev (>= 1.2.2), python-zmq (>= 14.0.1), procps, liburiparser-dev, libssl-dev, python-setuptools, @@ -52,7 +52,7 @@ Depends: ${shlibs:Depends}, machinekit-rt-threads, @TCL_TK_DEPS@, python-vte, python-xlib, python-gtkglext1, python-configobj, python-zmq, python-protobuf (>= 2.4.1), python-gst0.10, python-avahi, python-simplejson, python-pyftpdlib, - python-pydot, xdot, libzmq3 (>= 4.0.4), libczmq4 (>= 4.0.2-10), + python-pydot, xdot, libzmq3 (>= 4.0.4~jessie), libczmq4 (>= 4.0.2-10~jessie), tclreadline, bc, procps, psmisc, gstreamer0.10-plugins-base Description: PC based motion controller for real-time Linux diff --git a/debian/control.posix.in b/debian/control.posix.in index a05182b6f8..2966087bc1 100644 --- a/debian/control.posix.in +++ b/debian/control.posix.in @@ -1,7 +1,7 @@ Package: machinekit-posix Architecture: any -Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime, libzmq3 (>= 4.0.4), libczmq4 (>= 4.0.2-10) +Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime Provides: machinekit-rt-threads Breaks: machinekit-dev Enhances: machinekit diff --git a/debian/control.rt-preempt-stretch.in b/debian/control.rt-preempt-stretch.in index 12b6cdb0ac..0a2d564b5d 100644 --- a/debian/control.rt-preempt-stretch.in +++ b/debian/control.rt-preempt-stretch.in @@ -1,7 +1,7 @@ Package: machinekit-rt-preempt Architecture: any -Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime, libzmq3 (>= 4.0.4), libczmq4 (>= 4.0.2-10), +Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime, # These Debian-style RT_PREEMPT package names are restricted by # architecture; ARM arch SOCs are all incompatible, so this can't be # easily done for ARM. diff --git a/debian/control.rt-preempt.in b/debian/control.rt-preempt.in index 775d457f42..86ab141781 100644 --- a/debian/control.rt-preempt.in +++ b/debian/control.rt-preempt.in @@ -1,7 +1,7 @@ Package: machinekit-rt-preempt Architecture: any -Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime, libzmq3 (>= 4.0.4), libczmq4 (>= 4.0.2-10), +Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime, # These Debian-style RT_PREEMPT package names are restricted by # architecture; ARM arch SOCs are all incompatible, so this can't be # easily done for ARM. diff --git a/debian/control.xenomai.in b/debian/control.xenomai.in index a806a0ebfb..908d4cfc08 100644 --- a/debian/control.xenomai.in +++ b/debian/control.xenomai.in @@ -1,7 +1,7 @@ Package: machinekit-xenomai Architecture: any -Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime, libzmq3 (>= 4.0.4), libczmq4 (>= 4.0.2-10), +Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime, xenomai-runtime Provides: machinekit-rt-threads Recommends: hostmot2-firmware-all [!armhf] From 46a6b58d7d1f634410dd3af7c14a5aa80c581b96 Mon Sep 17 00:00:00 2001 From: Mick Date: Mon, 9 Oct 2017 10:36:26 +0100 Subject: [PATCH 124/516] Remove Wheezy builds from Travis --- .travis.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index fc522e4bd2..41571fbd83 100644 --- a/.travis.yml +++ b/.travis.yml @@ -30,13 +30,7 @@ env: - SFTP_USER="${SFTP_USER:-travis}" - SFTP_ADDR="${SFTP_ADDR:-empty}" matrix: - - TAG=wheezy-64 CMD=run_tests - TAG=jessie-64 CMD=run_tests - - TAG=wheezy-64 CMD=build_deb - - TAG=wheezy-32 CMD=build_deb - - TAG=wheezy-armhf CMD=build_deb FLAV=posix - - TAG=wheezy-armhf CMD=build_deb FLAV=xenomai - - TAG=wheezy-armhf CMD=build_deb FLAV=rt_preempt - TAG=jessie-64 CMD=build_deb - TAG=jessie-32 CMD=build_deb - TAG=jessie-armhf CMD=build_deb FLAV=posix From 4d69805562d4e934001748030df5cb53e57768cb Mon Sep 17 00:00:00 2001 From: Mick Date: Tue, 10 Oct 2017 15:52:29 +0100 Subject: [PATCH 125/516] Extra travis changes for testing --- .travis.yml | 10 +++++----- .travis/docker_run.sh | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 41571fbd83..8ab3086175 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,8 +19,8 @@ services: before_install: - sudo apt-get update -qq - sudo apt-get install -qq sshpass - - gem install package_cloud - - .travis/check_sftp.sh + #- gem install package_cloud + #- .travis/check_sftp.sh env: global: @@ -44,8 +44,8 @@ script: - .travis/docker_run.sh after_success: - - .travis/send_binaries.sh - - test ${TAG} != "raspbian-armhf" && .travis/upload_packagecloud.sh + #- .travis/send_binaries.sh + #- test ${TAG} != "raspbian-armhf" && .travis/upload_packagecloud.sh after_script: - - .travis/send_status.sh + #- .travis/send_status.sh diff --git a/.travis/docker_run.sh b/.travis/docker_run.sh index f74ac10d37..01d419778c 100755 --- a/.travis/docker_run.sh +++ b/.travis/docker_run.sh @@ -3,7 +3,7 @@ cd "$(dirname $0)/.." MACHINEKIT_PATH="/usr/src/machinekit" TRAVIS_PATH="$MACHINEKIT_PATH/.travis" -DOCKER_CONTAINER=${DOCKER_CONTAINER:-"machinekit/mk-builder"} +DOCKER_CONTAINER=${DOCKER_CONTAINER:-"arceye/mk-builder"} COMMITTER_NAME="$(git log -1 --pretty=format:%an)" COMMITTER_EMAIL="$(git log -1 --pretty=format:%ae)" COMMIT_TIMESTAMP="$(git log -1 --pretty=format:%at)" From e8c15963b9ebc8ff7e4cd6f03b1ac3a4429ff62b Mon Sep 17 00:00:00 2001 From: Mick Date: Tue, 10 Oct 2017 16:54:01 +0100 Subject: [PATCH 126/516] Travis script changes to allow package builds --- .travis/build_deb.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis/build_deb.sh b/.travis/build_deb.sh index de70470096..e45ae3698b 100755 --- a/.travis/build_deb.sh +++ b/.travis/build_deb.sh @@ -12,7 +12,7 @@ fi MAJOR_MINOR_VERSION="${MAJOR_MINOR_VERSION:-0.1}" PKGSOURCE="${PKGSOURCE:-travis.${TRAVIS_REPO_SLUG/\//.}}" DEBIAN_SUITE="${DEBIAN_SUITE:-experimental}" -REPO_URL="${REPO_URL:-https://github.com/machinekit/machinekit}" +REPO_URL="${REPO_URL:-https://github.com/machinekit/machinekit-czmq4-tester}" # Compute version if ${IS_PR}; then @@ -57,7 +57,7 @@ cat debian/changelog # debug output cat debian/changelog.old >> debian/changelog # build unsigned packages and sources on amd64 -DEBUILD_OPTS+=" -eDEB_BUILD_OPTIONS=parallel=${JOBS} -us -uc -j${JOBS}" +DEBUILD_OPTS+=" -eDEB_BUILD_OPTIONS=parallel=${JOBS} -us -uc -d -j${JOBS}" if test ${MARCH} = 64; then # create upstream tarball only on amd64 ( @@ -67,7 +67,7 @@ if test ${MARCH} = 64; then ) else # the rest will be binaries only - DEBUILD_OPTS+=" -b" + DEBUILD_OPTS+=" -d -b" fi case "${FLAV}" in From 164a23d751ae5b8afaf8ec91d546728f0026d94d Mon Sep 17 00:00:00 2001 From: Mick Date: Tue, 10 Oct 2017 17:19:47 +0100 Subject: [PATCH 127/516] Add mank to /bin and include in .gitignore because dh_clean keeps wiping it --- .travis/build_deb.sh | 3 +++ bin/.gitignore | 1 + 2 files changed, 4 insertions(+) diff --git a/.travis/build_deb.sh b/.travis/build_deb.sh index e45ae3698b..bc2adb805c 100755 --- a/.travis/build_deb.sh +++ b/.travis/build_deb.sh @@ -56,6 +56,9 @@ EOF cat debian/changelog # debug output cat debian/changelog.old >> debian/changelog +# Whilst using arceye/mk-builder docker image, need -d switch +# because new czmq4 libs were parachuted in and not installed onto the chroot fs + # build unsigned packages and sources on amd64 DEBUILD_OPTS+=" -eDEB_BUILD_OPTIONS=parallel=${JOBS} -us -uc -d -j${JOBS}" if test ${MARCH} = 64; then diff --git a/bin/.gitignore b/bin/.gitignore index ae3300351c..4c306fdd90 100644 --- a/bin/.gitignore +++ b/bin/.gitignore @@ -1,4 +1,5 @@ /* !/machinekit !/profile_axis +!/mank !/.gitignore From a6b4dc83bb6cb817e5f97ff6ecb094e3eadccc1d Mon Sep 17 00:00:00 2001 From: Mick Date: Tue, 10 Oct 2017 17:53:05 +0100 Subject: [PATCH 128/516] Remove ldconfig pointer to /usr/local/lib --- debian/machinekit.install.in | 1 - 1 file changed, 1 deletion(-) diff --git a/debian/machinekit.install.in b/debian/machinekit.install.in index 805b5eea64..149f7a69f7 100644 --- a/debian/machinekit.install.in +++ b/debian/machinekit.install.in @@ -39,4 +39,3 @@ usr/share/applications/* usr/share/desktop-directories/cnc.directory etc/modprobe.d/linuxcnc.conf etc/xdg/menus/applications-merged/cnc.menu -etc/ld.so.conf.d/czmq-zeromq.conf From 906d7cf5086970d369a1640b2de6d758a7e4b366 Mon Sep 17 00:00:00 2001 From: Mick Date: Tue, 10 Oct 2017 18:17:37 +0100 Subject: [PATCH 129/516] Fix dpkg-shlibdeps error due to parachuted in libs --- debian/rules.in | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/debian/rules.in b/debian/rules.in index c2ef81f70c..ec88420c56 100755 --- a/debian/rules.in +++ b/debian/rules.in @@ -243,8 +243,9 @@ binary-arch: build install debian/shlibs.local ## ignore missing deps / symbols info for locally built libs ## necessary for Stretch builds until packaged libs can be used for czmq and zeromq - #dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info -l debian/machinekit/usr/lib - dh_shlibdeps -l debian/machinekit/usr/lib + ## now necessary for hacked mk-builder chroots as libs parachuted in, not installed + dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info -l debian/machinekit/usr/lib + #dh_shlibdeps -l debian/machinekit/usr/lib dh_gencontrol dh_md5sums dh_builddeb From f669617bc28c9f7be7e5599078cbdb348dd50c98 Mon Sep 17 00:00:00 2001 From: Mick Date: Wed, 11 Oct 2017 09:56:36 +0100 Subject: [PATCH 130/516] Revert testing settings back to MK build and upload --- .travis.yml | 10 +++++----- .travis/build_deb.sh | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 8ab3086175..41571fbd83 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,8 +19,8 @@ services: before_install: - sudo apt-get update -qq - sudo apt-get install -qq sshpass - #- gem install package_cloud - #- .travis/check_sftp.sh + - gem install package_cloud + - .travis/check_sftp.sh env: global: @@ -44,8 +44,8 @@ script: - .travis/docker_run.sh after_success: - #- .travis/send_binaries.sh - #- test ${TAG} != "raspbian-armhf" && .travis/upload_packagecloud.sh + - .travis/send_binaries.sh + - test ${TAG} != "raspbian-armhf" && .travis/upload_packagecloud.sh after_script: - #- .travis/send_status.sh + - .travis/send_status.sh diff --git a/.travis/build_deb.sh b/.travis/build_deb.sh index bc2adb805c..84dd51a975 100755 --- a/.travis/build_deb.sh +++ b/.travis/build_deb.sh @@ -12,7 +12,7 @@ fi MAJOR_MINOR_VERSION="${MAJOR_MINOR_VERSION:-0.1}" PKGSOURCE="${PKGSOURCE:-travis.${TRAVIS_REPO_SLUG/\//.}}" DEBIAN_SUITE="${DEBIAN_SUITE:-experimental}" -REPO_URL="${REPO_URL:-https://github.com/machinekit/machinekit-czmq4-tester}" +REPO_URL="${REPO_URL:-https://github.com/machinekit/machinekit}" # Compute version if ${IS_PR}; then From 9c9411e391f1a0393463938406c5617ebde0e2f1 Mon Sep 17 00:00:00 2001 From: Mick Date: Wed, 11 Oct 2017 10:23:27 +0100 Subject: [PATCH 131/516] Correct specific libzmq3 version --- debian/control.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/control.in b/debian/control.in index 552910cd83..380f1ce349 100644 --- a/debian/control.in +++ b/debian/control.in @@ -9,7 +9,7 @@ Build-Depends: debhelper (>= 6), libxmu-headers, python (>= 2.6.6-3~), python-dev (>= 2.6.6-3~), cython (>= 0.19), dh-python, pkg-config, psmisc, python-tk, libxaw7-dev, libboost-serialization-dev, - libzmq3-dev (>= 4.0.4~jessie), libczmq-dev (>= 4.0.2-10~jessie), libjansson-dev (>= 2.5), + libzmq3-dev (>= 4.0.4+dfsg-1~jessie), libczmq-dev (>= 4.0.2-10~jessie), libjansson-dev (>= 2.5), libwebsockets-dev (>= 1.2.2), python-zmq (>= 14.0.1), procps, liburiparser-dev, libssl-dev, python-setuptools, @@ -52,7 +52,7 @@ Depends: ${shlibs:Depends}, machinekit-rt-threads, @TCL_TK_DEPS@, python-vte, python-xlib, python-gtkglext1, python-configobj, python-zmq, python-protobuf (>= 2.4.1), python-gst0.10, python-avahi, python-simplejson, python-pyftpdlib, - python-pydot, xdot, libzmq3 (>= 4.0.4~jessie), libczmq4 (>= 4.0.2-10~jessie), + python-pydot, xdot, libzmq3 (>= 4.0.4+dfsg-1~jessie), libczmq4 (>= 4.0.2-10~jessie), tclreadline, bc, procps, psmisc, gstreamer0.10-plugins-base Description: PC based motion controller for real-time Linux From f29c563dcbfd28ab3a0ba4f31d05e7f0b41cdb82 Mon Sep 17 00:00:00 2001 From: Mick Date: Wed, 11 Oct 2017 10:42:45 +0100 Subject: [PATCH 132/516] Remove redundant ldconfig catalogue path --- debian/extras/etc/ld.so.conf.d/czmq-zeromq.conf | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 debian/extras/etc/ld.so.conf.d/czmq-zeromq.conf diff --git a/debian/extras/etc/ld.so.conf.d/czmq-zeromq.conf b/debian/extras/etc/ld.so.conf.d/czmq-zeromq.conf deleted file mode 100644 index 4f5f49170c..0000000000 --- a/debian/extras/etc/ld.so.conf.d/czmq-zeromq.conf +++ /dev/null @@ -1,2 +0,0 @@ -# Ensure temp czmq and zeromq libs are found -/usr/local/lib From 9a6bc1fda328ce4d16c3fb0cac6f7daa47494f00 Mon Sep 17 00:00:00 2001 From: Mick Date: Thu, 12 Oct 2017 09:27:30 +0100 Subject: [PATCH 133/516] Fix zsock_new|zsock_destroy calls missed in ebca177 --- src/machinetalk/webtalk/webtalk_echo.cc | 2 +- src/machinetalk/webtalk/webtalk_pbzws_policy.cc | 2 +- src/machinetalk/webtalk/webtalk_wsproxy.cc | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/machinetalk/webtalk/webtalk_echo.cc b/src/machinetalk/webtalk/webtalk_echo.cc index 037c9e2016..76a62a695b 100644 --- a/src/machinetalk/webtalk/webtalk_echo.cc +++ b/src/machinetalk/webtalk/webtalk_echo.cc @@ -24,7 +24,7 @@ echo_thread(void *args, zsock_t *ctx, void *pipe) { wtconf_t *conf = (wtconf_t *) args; - void *rs = zsock_new (ctx, ZMQ_ROUTER); + void *rs = zsock_new(ZMQ_ROUTER); assert(rs); zsock_bind(rs, "inproc://echo"); diff --git a/src/machinetalk/webtalk/webtalk_pbzws_policy.cc b/src/machinetalk/webtalk/webtalk_pbzws_policy.cc index df2056d6e4..ae5103e1b8 100644 --- a/src/machinetalk/webtalk/webtalk_pbzws_policy.cc +++ b/src/machinetalk/webtalk/webtalk_pbzws_policy.cc @@ -114,7 +114,7 @@ pbzws_policy(wtself_t *server, switch (type) { case zws::MT_SOCKET: wss->socket_type = self->pzf->stype(); - wss->socket = zsock_new (server->ctx, wss->socket_type); + wss->socket = zsock_new(wss->socket_type); if (self->cfg->ipv6) { zsock_set_ipv6 (wss->socket, 1); assert (zsock_ipv6 (wss->socket) == 1); diff --git a/src/machinetalk/webtalk/webtalk_wsproxy.cc b/src/machinetalk/webtalk/webtalk_wsproxy.cc index a72fc0b8d1..20095e0a18 100644 --- a/src/machinetalk/webtalk/webtalk_wsproxy.cc +++ b/src/machinetalk/webtalk/webtalk_wsproxy.cc @@ -336,11 +336,11 @@ callback_http(struct libwebsocket_context *context, int retval; // the two/from WS pair pipe - wss->wsq_out = zsock_new (self->netopts.z_context, ZMQ_PAIR); + wss->wsq_out = zsock_new(ZMQ_PAIR); assert (wss->wsq_out); zsock_bind (wss->wsq_out, "inproc://wsq-%p", wss); - wss->wsq_in = zsock_new (self->netopts.z_context, ZMQ_PAIR); + wss->wsq_in = zsock_new(ZMQ_PAIR); assert (wss->wsq_in); zsock_connect (wss->wsq_in, "inproc://wsq-%p", wss); @@ -462,9 +462,9 @@ callback_http(struct libwebsocket_context *context, zloop_poller_end (self->netopts.z_loop, &wss->wsqin_pollitem); if (wss->socket != NULL) - zsock_destroy (self->netopts.z_context, wss->socket); - zsock_destroy (self->netopts.z_context, wss->wsq_in); - zsock_destroy (self->netopts.z_context, wss->wsq_out); + zsock_destroy (wss->socket); + zsock_destroy (wss->wsq_in); + zsock_destroy (wss->wsq_out); uriFreeQueryListA(wss->queryList); uriFreeUriMembersA(&wss->u); From def244330d0f056031de62c2f32c9d99e7900d02 Mon Sep 17 00:00:00 2001 From: Mick Date: Thu, 12 Oct 2017 10:37:45 +0100 Subject: [PATCH 134/516] configure.ac allowed an argument of --disable-webtalk to activate it. Logic changed so that --enable-webtalk or --enable-webtalk=yes will enable webtalk build --enable-webtalk=no or --disable-webtalk or no switch at all, will disable the build of webtalk Fixes issue @ https://github.com/machinekit/machinekit/issues/1152#issuecomment-336050599 Signed-off-by: Mick --- src/configure.ac | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/configure.ac b/src/configure.ac index acdb50fa35..6b8d4b2e12 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -983,9 +983,10 @@ PKG_CHECK_MODULES([LWS], libwebsockets, ],) AC_MSG_CHECKING(whether to build webtalk) -AC_ARG_ENABLE(webtalk, - [ --enable-webtalk build Webtalk], - [ +AC_ARG_ENABLE([webtalk], + AS_HELP_STRING([--enable-webtalk="ARG"], [build Webtalk [ARG=yes] ])) + + AS_IF([test "x$enable_webtalk" = "xyes"], [ if test "$USE_LWS" != "yes"; then AC_MSG_ERROR([Please install libwebsockets before building Webtalk.]) fi From b8726bbd58b939ac2b85509cd20782dc9fcf7a94 Mon Sep 17 00:00:00 2001 From: Mick Date: Thu, 12 Oct 2017 14:09:58 +0100 Subject: [PATCH 135/516] Fix other webtalk specific errors missed in ebca177 Signed-off-by: Mick --- src/machinetalk/webtalk/webtalk.hh | 6 +++--- src/machinetalk/webtalk/webtalk_echo.cc | 2 +- src/machinetalk/webtalk/webtalk_main.cc | 10 +++++++--- src/machinetalk/webtalk/webtalk_wsproxy.cc | 6 +++--- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/machinetalk/webtalk/webtalk.hh b/src/machinetalk/webtalk/webtalk.hh index 31e0bd0363..ebf1c91bbf 100644 --- a/src/machinetalk/webtalk/webtalk.hh +++ b/src/machinetalk/webtalk/webtalk.hh @@ -125,7 +125,7 @@ typedef enum protocol_flags { // per-session data typedef struct zws_session_data { - void *socket; // zmq destination + zsock_t *socket; // zmq destination zmq_pollitem_t pollitem; int socket_type; #ifdef LWS_NEW_API @@ -139,8 +139,8 @@ typedef struct zws_session_data { struct libwebsocket *wsiref; struct libwebsocket_context *ctxref; #endif - void *wsq_in; - void *wsq_out; + zsock_t *wsq_in; + zsock_t *wsq_out; zmq_pollitem_t wsqin_pollitem; bool wsqin_poller_active; // false - disabled while send pipe choked diff --git a/src/machinetalk/webtalk/webtalk_echo.cc b/src/machinetalk/webtalk/webtalk_echo.cc index 76a62a695b..fdc2a726f4 100644 --- a/src/machinetalk/webtalk/webtalk_echo.cc +++ b/src/machinetalk/webtalk/webtalk_echo.cc @@ -24,7 +24,7 @@ echo_thread(void *args, zsock_t *ctx, void *pipe) { wtconf_t *conf = (wtconf_t *) args; - void *rs = zsock_new(ZMQ_ROUTER); + zsock_t *rs = zsock_new(ZMQ_ROUTER); assert(rs); zsock_bind(rs, "inproc://echo"); diff --git a/src/machinetalk/webtalk/webtalk_main.cc b/src/machinetalk/webtalk/webtalk_main.cc index 115a30f5a9..fa0570e4c7 100644 --- a/src/machinetalk/webtalk/webtalk_main.cc +++ b/src/machinetalk/webtalk/webtalk_main.cc @@ -138,8 +138,11 @@ zmq_init(wtself_t *self) mk_netopts_t *np = &self->netopts; - np->z_context = zsock_new (); - assert(np->z_context); + // These are the only lines in the entire code base which use np->z_context + // a call to zsock_new() with no arg is invalid + // assuming this is dead code + //np->z_context = zsock_new (); + //assert(np->z_context); np->z_loop = zloop_new(); assert (np->z_loop); @@ -448,8 +451,9 @@ int main (int argc, char *argv[]) mk_withdraw(&self.mksock); // probably should run zloop here until deregister complete + // there is no context, which is presumably what line 144 did // shutdown zmq context - zsock_destroy(&self.netopts.z_context); + //zsock_destroy(&self.netopts.z_context); exit(0); } diff --git a/src/machinetalk/webtalk/webtalk_wsproxy.cc b/src/machinetalk/webtalk/webtalk_wsproxy.cc index 20095e0a18..0ee28a7525 100644 --- a/src/machinetalk/webtalk/webtalk_wsproxy.cc +++ b/src/machinetalk/webtalk/webtalk_wsproxy.cc @@ -462,9 +462,9 @@ callback_http(struct libwebsocket_context *context, zloop_poller_end (self->netopts.z_loop, &wss->wsqin_pollitem); if (wss->socket != NULL) - zsock_destroy (wss->socket); - zsock_destroy (wss->wsq_in); - zsock_destroy (wss->wsq_out); + zsock_destroy (&wss->socket); + zsock_destroy (&wss->wsq_in); + zsock_destroy (&wss->wsq_out); uriFreeQueryListA(wss->queryList); uriFreeUriMembersA(&wss->u); From 41d98f70444e8bdf241b65a4b9c759c50efb6e61 Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 12 Oct 2017 22:12:08 -0500 Subject: [PATCH 136/516] Remove "suspicious line" from Makefile Mixed spaces and tabs in Makefiles are red flags for some tools --- src/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Makefile b/src/Makefile index 1d3085e176..794ecaba76 100755 --- a/src/Makefile +++ b/src/Makefile @@ -140,7 +140,7 @@ modules: userspace ifeq ($(HAVE_KERNEL_THREADS),yes) @test -f ../libexec/linuxcnc_module_helper -a \ - \( `stat -c %u ../libexec/linuxcnc_module_helper` -ne 0 -o \ + \( `stat -c %u ../libexec/linuxcnc_module_helper` -ne 0 -o \ ! -u ../libexec/linuxcnc_module_helper \) \ && need_setuid=1; endif From 5cb1b26a3c7c955cb403590c7b6936578405e97f Mon Sep 17 00:00:00 2001 From: John Morris Date: Sat, 14 Oct 2017 16:20:59 -0500 Subject: [PATCH 137/516] remap/remap-io test: fix test when run without tty Without tty, the `linuxcnc` script redirects stdout to /tmp/linuxcnc.print, and the expected test output is swallowed up. Since the test is a python script, a trivial fix is to do the checking from the script. --- tests/remap/remap-io/checkresult | 2 ++ tests/remap/remap-io/expected | 23 ----------------------- tests/remap/remap-io/test-ui.py | 6 ++++++ tests/remap/remap-io/test.sh | 2 +- 4 files changed, 9 insertions(+), 24 deletions(-) create mode 100755 tests/remap/remap-io/checkresult delete mode 100644 tests/remap/remap-io/expected diff --git a/tests/remap/remap-io/checkresult b/tests/remap/remap-io/checkresult new file mode 100755 index 0000000000..24dc9aa53e --- /dev/null +++ b/tests/remap/remap-io/checkresult @@ -0,0 +1,2 @@ +#!/bin/sh +exit 0 # test failure is indicated by test.sh exit value diff --git a/tests/remap/remap-io/expected b/tests/remap/remap-io/expected deleted file mode 100644 index 978f4598b7..0000000000 --- a/tests/remap/remap-io/expected +++ /dev/null @@ -1,23 +0,0 @@ -********** Testing python remaps -X run_m66 remapping pre: 5399=0.000000 -X run_m66 remapping post: 5399=42.130000 -After M64: s.dout[0] = 1, s.dout[1] = 0 -After M65: s.dout[0] = 0, s.dout[1] = 0 -After M64: s.dout[0] = 1, s.dout[1] = 0 -After M65: s.dout[0] = 0, s.dout[1] = 0 -After M62: s.dout[0] = 1, s.dout[1] = 0 -After M63: s.dout[0] = 0, s.dout[1] = 0 -After M62: s.dout[0] = 1, s.dout[1] = 0 -After M63: s.dout[0] = 0, s.dout[1] = 0 - -********** Testing ngc remaps -X run_m66 remapping pre: 5399=0.000000 -X run_m66 remapping post: 5399=42.130000 -After M64: s.dout[0] = 1, s.dout[1] = 0 -After M65: s.dout[0] = 0, s.dout[1] = 0 -After M64: s.dout[0] = 1, s.dout[1] = 0 -After M65: s.dout[0] = 0, s.dout[1] = 0 -After M62: s.dout[0] = 1, s.dout[1] = 0 -After M63: s.dout[0] = 0, s.dout[1] = 0 -After M62: s.dout[0] = 1, s.dout[1] = 0 -After M63: s.dout[0] = 0, s.dout[1] = 0 diff --git a/tests/remap/remap-io/test-ui.py b/tests/remap/remap-io/test-ui.py index 24375401ed..6cff17456c 100755 --- a/tests/remap/remap-io/test-ui.py +++ b/tests/remap/remap-io/test-ui.py @@ -26,6 +26,12 @@ def do_dout(cmd, with_motion=False): s.poll() print "After %s: s.dout[0] = %s, s.dout[1] = %s" % \ (cmd, s.dout[0], s.dout[1]) + expected_dout0 = 1 if cmd in ('M64', 'M62') else 0 + if s.dout[0] != expected_dout0 or s.dout[1] != 0: + print(" Error: expected s.dout[0] = %d, s.dout[1] = 0" % + expected_dout0) + sys.exit(1) + # M64/M65 test: toggle DIO & verify do_dout('M64') diff --git a/tests/remap/remap-io/test.sh b/tests/remap/remap-io/test.sh index ec838c44e1..62d127fd76 100755 --- a/tests/remap/remap-io/test.sh +++ b/tests/remap/remap-io/test.sh @@ -2,7 +2,7 @@ do_test() { INI=$1 - linuxcnc -r $INI | grep -i m6 + linuxcnc -r $INI } echo "********** Testing python remaps" From 3c95851eecc53faf9576bd3f46d395cb063064f0 Mon Sep 17 00:00:00 2001 From: John Morris Date: Sat, 14 Oct 2017 16:24:54 -0500 Subject: [PATCH 138/516] Shorten syslog_async timeouts for environments with no syslogd With the previous one-second long timeouts and no syslogd running (like in CI), only one line per second would be printed out. This made tests run even more slowly than they should. --- src/rtapi/rtapi_app.cc | 2 +- src/rtapi/rtapi_msgd.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/rtapi/rtapi_app.cc b/src/rtapi/rtapi_app.cc index 9460df424c..161d77b056 100644 --- a/src/rtapi/rtapi_app.cc +++ b/src/rtapi/rtapi_app.cc @@ -1705,7 +1705,7 @@ int main(int argc, char **argv) openlog_async(argv[0], option, LOG_LOCAL1); // setlogmask_async(LOG_UPTO(LOG_DEBUG)); // max out async syslog buffers for slow system in debug mode - tunelog_async(99,1000); + tunelog_async(99,10); if (trap_signals && (getenv("NOSIGHDLR") != NULL)) trap_signals = false; diff --git a/src/rtapi/rtapi_msgd.cc b/src/rtapi/rtapi_msgd.cc index 735f41ce22..292f96ad03 100644 --- a/src/rtapi/rtapi_msgd.cc +++ b/src/rtapi/rtapi_msgd.cc @@ -970,7 +970,7 @@ int main(int argc, char **argv) openlog_async(proctitle, option , SYSLOG_FACILITY); // max out async syslog buffers for slow system in debug mode - tunelog_async(99,1000); + tunelog_async(99,10); // set new process name argv0_len = strlen(argv[0]); From 9308979b9483835ec79a1c286e5be11e36ecc2ce Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 13 Oct 2017 00:20:40 -0500 Subject: [PATCH 139/516] .gitignore debian/*.install --- debian/.gitignore | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/debian/.gitignore b/debian/.gitignore index 32df3da872..dcabddab0c 100644 --- a/debian/.gitignore +++ b/debian/.gitignore @@ -3,8 +3,7 @@ /rules /files /configure.cmdline -/machinekit.install -/machinekit-*-kernel-*.install +/machinekit*.install /machinekit-dev.install # directory artifacts From 0156ec6331b927f8ddc979990310c681f8cbc911 Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 12 Oct 2017 18:53:18 -0500 Subject: [PATCH 140/516] Fold separated Stretch packaging files back This reverts commit 9361d436 and 456eb835. Fold `debian/control-stretch.in` back into `debian/control.in` and `debian/control.rt-preempt-stretch.in` back into `debian/control.rt-preempt.in`. --- debian/configure | 22 ++-------- debian/control-stretch.in | 60 ---------------------------- debian/control.rt-preempt-stretch.in | 17 -------- debian/control.rt-preempt.in | 2 +- 4 files changed, 5 insertions(+), 96 deletions(-) delete mode 100644 debian/control-stretch.in delete mode 100644 debian/control.rt-preempt-stretch.in diff --git a/debian/configure b/debian/configure index a52532e3bd..38c5bbfeb0 100755 --- a/debian/configure +++ b/debian/configure @@ -100,15 +100,9 @@ do_posix() { HAVE_FLAVOR=true } -## cater for fact that Stretch now has it's own rt-preempt kernels do_rt-preempt() { - if [[ $DISTRO_CODENAME == "stretch" ]] ; then - cat control.rt-preempt-stretch.in >> control - echo "debian/control: added RT_PREEMPT threads package for Stretch" >&2 - else - cat control.rt-preempt.in >> control - echo "debian/control: added RT_PREEMPT threads package for Wheezy/Jessie" >&2 - fi + cat control.rt-preempt.in >> control + echo "debian/control: added RT_PREEMPT threads package" >&2 rules_enable_threads rt-preempt HAVE_FLAVOR=true @@ -275,16 +269,8 @@ HAVE_KTHREADS_FLAVOR=false rm -f machinekit-{rtai,xenomai}-kernel-*.install # copy base templates into place -# stretch uses some different packages -if [[ $DISTRO_CODENAME == "stretch" ]] ; then - cp control-stretch.in control - echo "debian/control: copied Stretch base template" >&2 - else - cp control.in control - echo "debian/control: copied base template" >&2 - fi - - +cp control.in control +echo "debian/control: copied base template" >&2 cp rules.in rules; chmod +x rules echo "debian/rules: copied base template" >&2 cp machinekit.install.in machinekit.install diff --git a/debian/control-stretch.in b/debian/control-stretch.in deleted file mode 100644 index 6057900cb7..0000000000 --- a/debian/control-stretch.in +++ /dev/null @@ -1,60 +0,0 @@ -Source: machinekit -Section: misc -Priority: extra -Maintainer: John Morris -Build-Depends: debhelper (>= 6), - autoconf (>= 2.63), automake, libboost-python-dev, libgl1-mesa-dev, - libglu1-mesa-dev, libgtk2.0-dev, libmodbus-dev (>= 3.0), libudev-dev, - libncurses-dev, libreadline-dev, libusb-1.0-0-dev, libxmu-dev, - libxmu-headers, python (>= 2.6.6-3~), python-dev (>= 2.6.6-3~), - cython (>= 0.19), dh-python, - pkg-config, psmisc, python-tk, libxaw7-dev, libboost-serialization-dev, - libzmq3-dev (>= 4.0.4), libczmq-dev (>= 4.0.2-10), libjansson-dev (>= 2.5), - libwebsockets-dev (>= 1.2.2), procps, python-zmq, - liburiparser-dev, libssl-dev, python-setuptools, - uuid-dev, uuid-runtime, libavahi-client-dev, - libprotobuf-dev (>= 2.4.1), protobuf-compiler (>= 2.4.1), - python-protobuf (>= 2.4.1), libprotoc-dev (>= 2.4.1), - python-simplejson, libtk-img, libboost-thread-dev, - python-pyftpdlib, @BUILD_DEPS@ @TCL_TK_BUILD_DEPS@ -Standards-Version: 2.1.0 - -######################################################################### -## not built any more, components of it are in flavour packages -## -#Package: machinekit-dev -#Architecture: any -#Depends: make, g++, @TCL_TK_BUILD_DEPS@, -# ${shlibs:Depends}, ${misc:Depends}, -# machinekit (= ${binary:Version}), -# yapps2-runtime -#Section: libs -#Description: PC based motion controller for real-time Linux -# Machinekit is the next-generation Enhanced Machine Controller which -# provides motion control for CNC machine tools and robotic -# applications (milling, cutting, routing, etc.). -# . -# This package includes files needed to build new realtime components and -# alternate front-ends for machinekit -######################################################################### - -Package: machinekit -Breaks: linuxcnc -Replaces: linuxcnc -Architecture: any -Depends: ${shlibs:Depends}, machinekit-rt-threads, @TCL_TK_DEPS@, - @DEPS@ bwidget (>= 1.7), libtk-img (>=1.13), - ${python:Depends}, ${misc:Depends}, - python-tk, python-imaging, python-imaging-tk, - python-gnome2, python-glade2, - python-numpy, python-gtksourceview2, - python-vte, python-xlib, python-gtkglext1, python-configobj, - python-protobuf (>= 2.4.1), python-gst-1.0, - python-avahi, python-simplejson, python-pyftpdlib, - python-pydot, xdot, libzmq3 (>= 4.0.4), libczmq4 (>= 4.0.2-10), - tclreadline, bc, procps, psmisc, python-zmq, - gstreamer1.0-plugins-base -Description: PC based motion controller for real-time Linux - Machinekit is the next-generation Enhanced Machine Controller which - provides motion control for CNC machine tools and robotic - applications (milling, cutting, routing, etc.). diff --git a/debian/control.rt-preempt-stretch.in b/debian/control.rt-preempt-stretch.in deleted file mode 100644 index 0a2d564b5d..0000000000 --- a/debian/control.rt-preempt-stretch.in +++ /dev/null @@ -1,17 +0,0 @@ - -Package: machinekit-rt-preempt -Architecture: any -Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime, -# These Debian-style RT_PREEMPT package names are restricted by -# architecture; ARM arch SOCs are all incompatible, so this can't be -# easily done for ARM. - linux-image-rt-686-pae [i386], linux-image-rt-amd64 [amd64] -Provides: machinekit-rt-threads -Suggests: hostmot2-firmware-all [!armhf] -Enhances: machinekit -Description: PC based motion controller for real-time Linux - Machinekit is the next-generation Enhanced Machine Controller which - provides motion control for CNC machine tools and robotic - applications (milling, cutting, routing, etc.). - . - This package provides components and drivers that run on an RT-Preempt system. diff --git a/debian/control.rt-preempt.in b/debian/control.rt-preempt.in index 86ab141781..e77df3376f 100644 --- a/debian/control.rt-preempt.in +++ b/debian/control.rt-preempt.in @@ -5,7 +5,7 @@ Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime, # These Debian-style RT_PREEMPT package names are restricted by # architecture; ARM arch SOCs are all incompatible, so this can't be # easily done for ARM. - linux-image-4.1.19-rt22mah [i386], linux-image-4.1.19-rt22mah [amd64] + linux-image-rt-686-pae [i386], linux-image-rt-amd64 [amd64] Provides: machinekit-rt-threads Suggests: hostmot2-firmware-all [!armhf] Breaks: machinekit-dev From f5d050f0096da101b3f14d7be85ce6a0c3bd7a52 Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 13 Oct 2017 09:47:30 -0500 Subject: [PATCH 141/516] Rework packaging for Stretch - `debian/configure`: - Remove kthreads support - Remove Wheezy support: fix tcl/tk version at 8.6 - `debian/control`: - Remove package versions from build deps; almost never needed - Fix gstreamer version to 1.0, available in Jessie and Stretch - Remove kthreads snippets - Remove explicit `libzmq3` and `libczmq4` deps - Let `shlibdeps` figure it out --- debian/configure | 170 +--------------------------- debian/control.in | 18 +-- debian/control.rtai-kernel.in | 14 --- debian/control.xenomai-kernel.in | 14 --- debian/machinekit-kernel.install.in | 4 - 5 files changed, 13 insertions(+), 207 deletions(-) delete mode 100644 debian/control.rtai-kernel.in delete mode 100644 debian/control.xenomai-kernel.in delete mode 100644 debian/machinekit-kernel.install.in diff --git a/debian/configure b/debian/configure index 38c5bbfeb0..bf8e9d03b9 100755 --- a/debian/configure +++ b/debian/configure @@ -4,9 +4,6 @@ # # Configure source package dependencies -# List of supported kernel arches for kthreads -KTHREAD_ARCHES="i386 amd64" - # Distro info # # This should run on non-Debian distros; lsb_release is only used for @@ -35,64 +32,6 @@ rules_enable_threads() { echo "debian/rules: enabled ${FLAVOR} threads" >&2 } -guess_arch_from_kver() { - # utility to make a guess at the kernel header arch from the - # kernel version; this works for Debian kernels, and 'any' is - # correct for the RTAI kernel packages in the Machinekit Debian - # archive - KVER=$1 - case $KVER in - *-?86 | *-?86-pae) echo i386 ;; - *-amd64) echo amd64 ;; - *) echo any ;; # For non-Debian kernel package naming - esac -} - -kernel_build_dep() { - # generate Build-Depends: for kernels, restricting to a build arch - # where applicable - KVER=$1 - local BUILD_DEP=linux-headers-${KVER} - if test $(guess_arch_from_kver ${KVER}) != any; then - # Only require these headers for the corresponding ARCH - BUILD_DEP+=" [$(guess_arch_from_kver ${KVER})]" - fi - echo $BUILD_DEP - echo "debian/control: added Build-Depends: ${BUILD_DEP}" >&2 -} - -rules_set_kthreads_headers() { - # set list of kernel sources in debian/rules - FLAVOR=$1; shift - # do nothing if no headers found - test -n "$*" || return 0 - - # Loop through each supported kthreads arch; add any kvers that - # look like an arch match to the appropriate kernel headers list - for ARCH in $KTHREAD_ARCHES; do - # construct list of kernel source directories - local HEADERS= - for v in $*; do - # skip incompatible arches - test "$(guess_arch_from_kver ${v})" = $ARCH -o \ - "$(guess_arch_from_kver ${v})" = any || continue - HEADERS+=" /usr/src/linux-headers-${v}" - done - # if the list is not empty, add it in debian/rules; e.g. - # HEADERS_XENOMAI_KERNEL_i386 = \ - # --with-xenomai-kernel-sources="/usr/src/linux-headers-" - if test -n "$HEADERS"; then - echo "debian/rules: set kernel headers for ${FLAVOR}-${ARCH}:" >&2 - for h in ${HEADERS}; do echo " ${h}" >&2; done - HEADERS="--with-${FLAVOR}-sources='${HEADERS}'" - HEADERS_VAR=HEADERS_$(echo $FLAVOR | tr 'a-z-' 'A-Z_')_${ARCH} - sed -i rules \ - -e "s@^#\(${HEADERS_VAR}\) .*@\1 = ${HEADERS}@" - fi - done -} - -# no difference in jessie / stretch additional packages do_posix() { cat control.posix.in >> control echo "debian/control: added POSIX threads package" >&2 @@ -108,13 +47,12 @@ do_rt-preempt() { HAVE_FLAVOR=true } -# no difference in jessie / stretch additional packages do_xenomai() { cat control.xenomai.in >> control echo "debian/control: added xenomai threads package" >&2 # Be sure the -dev files only appear once - BUILD_DEPS="${BUILD_DEPS/libxenomai-dev, /}libxenomai-dev, " + BUILD_DEPS+=", libxenomai-dev" echo "debian/control: added Xenomai (userland) threads package" \ "with Build-Depends:" >&2 echo " libxenomai-dev" >&2 @@ -122,75 +60,6 @@ do_xenomai() { HAVE_FLAVOR=true } -do_xenomai_kernel() { - KVER=$1 - # Be sure the -dev files only appear once - BUILD_DEPS="${BUILD_DEPS/libxenomai-dev, /}libxenomai-dev, " - # Headers package is conveniently named after the kver - BUILD_DEPS+="$(kernel_build_dep ${KVER}), " - # Add '...install' and 'control' file with substitutions - sed machinekit-kernel.install.in \ - -e "s/@KVER@/${KVER}/" \ - -e "s/@FLAVOR@/xenomai-kernel/" \ - > machinekit-xenomai-kernel-${KVER}.install - echo "debian/machinekit-xenomai-kernel-${KVER}.install: added" >&2 - sed control.xenomai-kernel.in \ - -e "s/@KVER@/$KVER/g" \ - -e "s/@ARCH@/$(guess_arch_from_kver ${KVER})/g" \ - >> control - echo "debian/control: Added Xenomai kernel threads ${KVER}" >&2 - echo " with Build-Depends:" >&2 - echo " libxenomai-dev" >&2 - rules_enable_threads xenomai-kernel - XENOMAI_KERNEL_HEADERS+=" ${KVER}" - HAVE_FLAVOR=true - HAVE_KTHREADS_FLAVOR=true -} - -do_rtai_kernel() { - KVER=$1 - # Be sure the -dev files only appear once - BUILD_DEPS="${BUILD_DEPS/librtai-dev, /}librtai-dev, " - # Headers package is conveniently named after the kver - BUILD_DEPS+="$(kernel_build_dep ${KVER}), " - # Add '...install' and 'control' file with substitutions - sed machinekit-kernel.install.in \ - -e "s/@KVER@/${KVER}/" \ - -e "s/@FLAVOR@/rtai-kernel/" \ - > machinekit-rtai-kernel-${KVER}.install - echo "debian/machinekit-xenomai-kernel-${KVER}.install: added" >&2 - sed control.rtai-kernel.in \ - -e "s/@KVER@/$KVER/g" \ - -e "s/@ARCH@/$(guess_arch_from_kver ${KVER})/g" \ - >> control - echo "debian/control: Added RTAI kernel threads ${KVER}" >&2 - echo " with Build-Depends:" >&2 - echo " librtai-dev" >&2 - rules_enable_threads rtai-kernel - RTAI_KERNEL_HEADERS+=" ${KVER}" - HAVE_FLAVOR=true - HAVE_KTHREADS_FLAVOR=true -} - -do_tcl_tk_version() { - TCL_TK_VER="$1" - if test -z "$TCL_TK_VER"; then - # No -t option specified; to ensure a reproducible package, - # use the latest version from the distro - TCL_TK_VER=8.6 - case "$DISTRO_ID" in - Debian) test "${DISTRO_RELEASE/.*/}" -lt 8 && TCL_TK_VER=8.5 ;; - Raspbian)test "${DISTRO_RELEASE/.*/}" -lt 8 && TCL_TK_VER=8.5 ;; - Ubuntu) test "${DISTRO_RELEASE/.*/}" -lt 14 && TCL_TK_VER=8.5 ;; - neon) test "${DISTRO_RELEASE/.*/}" -lt 14 && TCL_TK_VER=8.5 ;; - *) usage "Unknown distro '${DISTRO_ID}'" ;; - esac - fi - TCL_TK_BUILD_DEPS="tcl${TCL_TK_VER}-dev, tk${TCL_TK_VER}-dev" - TCL_TK_DEPS="tcl${TCL_TK_VER}, tk${TCL_TK_VER}" - echo "debian/control: Set tcl/tk build deps to version $TCL_TK_VER" >&2 -} - ## Set version for packages by altering changelog ## Write new version info then prepend existing one, for use in changes file ## Allows command line builds and builds outside of Travis environment to set meaningful version numbers @@ -241,10 +110,6 @@ usage() { echo " -x build Xenomai threads" echo " -c rewrite changelog to set package version from git commit" echo " -s create source tarball for non binary package builds" - echo " -X build Xenomai-kernel threads ***" - echo " -R build RTAI-kernel threads ***" - echo " -t set tcl/tk version" - echo " *** Argument may be repeated for multiple kernels" } >&2 exit 1 } @@ -256,17 +121,12 @@ test "$1" != --help || usage # These need to be in a certain order: # - Base template copy first # - do_ functions next -# - replace BUILD_DEPS and *_KERNEL_HEADERS last +# - replace BUILD_DEPS last # (when lists are fully populated) # set defaults BUILD_DEPS= # List of Build-Depends -DEPS= # List of Depends HAVE_FLAVOR=false -HAVE_KTHREADS_FLAVOR=false - -# delete old files -rm -f machinekit-{rtai,xenomai}-kernel-*.install # copy base templates into place cp control.in control @@ -277,43 +137,21 @@ cp machinekit.install.in machinekit.install echo "debian/machinekit.install.in: copied base template" >&2 # read command line options -while getopts dprxcsR:X:t:?h ARG; do +while getopts prxcs?h ARG; do case $ARG in p) do_posix ;; r) do_rt-preempt ;; x) do_xenomai ;; c) do_changelog ;; # set new changelog with package versions from git s) do_source_tarball ;; # create tarball for non binary builds - R) do_rtai_kernel "$OPTARG" ;; - X) do_xenomai_kernel "$OPTARG" ;; - t) TCL_TK_VER="$OPTARG" ;; - ?|h) usage ;; *) usage "Unknown arg: '-$ARG'" ;; esac done -# Determine tcl/tk version -do_tcl_tk_version "$TCL_TK_VER" - -# Set kthreads headers -rules_set_kthreads_headers xenomai-kernel $XENOMAI_KERNEL_HEADERS -rules_set_kthreads_headers rtai-kernel $RTAI_KERNEL_HEADERS - -# Kthreads need `kmod` for both build and runtime deps -if $HAVE_KTHREADS_FLAVOR; then - BUILD_DEPS+='kmod, ' - DEPS+='kmod, ' - echo "usr/libexec/linuxcnc/linuxcnc_module_helper" >> \ - machinekit.install -fi - # Set control Build-Depends: sed -i control \ - -e "s/@BUILD_DEPS@/${BUILD_DEPS}/" \ - -e "s/@DEPS@/${DEPS}/" \ - -e "s/@TCL_TK_BUILD_DEPS@/${TCL_TK_BUILD_DEPS}/" \ - -e "s/@TCL_TK_DEPS@/${TCL_TK_DEPS}/" + -e "s/@BUILD_DEPS@/${BUILD_DEPS}/" echo "debian/control: add final Build-Depends: list" >&2 # Warn if no flavor configured diff --git a/debian/control.in b/debian/control.in index 380f1ce349..80650f415d 100644 --- a/debian/control.in +++ b/debian/control.in @@ -6,10 +6,10 @@ Build-Depends: debhelper (>= 6), autoconf (>= 2.63), automake, libboost-python-dev, libgl1-mesa-dev, libglu1-mesa-dev, libgtk2.0-dev, libmodbus-dev (>= 3.0), libudev-dev, libncurses-dev, libreadline-dev, libusb-1.0-0-dev, libxmu-dev, - libxmu-headers, python (>= 2.6.6-3~), python-dev (>= 2.6.6-3~), + libxmu-headers, python (>= 2.6.6), python-dev (>= 2.6.6), cython (>= 0.19), dh-python, pkg-config, psmisc, python-tk, libxaw7-dev, libboost-serialization-dev, - libzmq3-dev (>= 4.0.4+dfsg-1~jessie), libczmq-dev (>= 4.0.2-10~jessie), libjansson-dev (>= 2.5), + libzmq3-dev (>= 4.0.4), libczmq-dev (>= 4.0.2), libjansson-dev (>= 2.5), libwebsockets-dev (>= 1.2.2), python-zmq (>= 14.0.1), procps, liburiparser-dev, libssl-dev, python-setuptools, @@ -17,7 +17,7 @@ Build-Depends: debhelper (>= 6), libprotobuf-dev (>= 2.4.1), protobuf-compiler (>= 2.4.1), python-protobuf (>= 2.4.1), libprotoc-dev (>= 2.4.1), python-simplejson, libtk-img, libboost-thread-dev, - python-pyftpdlib, @BUILD_DEPS@ @TCL_TK_BUILD_DEPS@ + python-pyftpdlib, tcl8.6-dev, tk8.6-dev @BUILD_DEPS@ Standards-Version: 2.1.0 ######################################################################### @@ -25,7 +25,7 @@ Standards-Version: 2.1.0 ## #Package: machinekit-dev #Architecture: any -#Depends: make, g++, @TCL_TK_BUILD_DEPS@, +#Depends: make, g++, tcl8.6, tk8.6, # ${shlibs:Depends}, ${misc:Depends}, # machinekit (= ${binary:Version}), # yapps2-runtime @@ -43,18 +43,18 @@ Package: machinekit Breaks: linuxcnc Replaces: linuxcnc Architecture: any -Depends: ${shlibs:Depends}, machinekit-rt-threads, @TCL_TK_DEPS@, - @DEPS@ bwidget (>= 1.7), libtk-img (>=1.13), +Depends: ${shlibs:Depends}, machinekit-rt-threads, tcl8.6, tk8.6, + bwidget (>= 1.7), libtk-img (>=1.13), ${python:Depends}, ${misc:Depends}, python-tk, python-imaging, python-imaging-tk, python-gnome2, python-glade2, python-numpy, python-gtksourceview2, python-vte, python-xlib, python-gtkglext1, python-configobj, - python-zmq, python-protobuf (>= 2.4.1), python-gst0.10, + python-zmq, python-protobuf (>= 2.4.1), python-avahi, python-simplejson, python-pyftpdlib, - python-pydot, xdot, libzmq3 (>= 4.0.4+dfsg-1~jessie), libczmq4 (>= 4.0.2-10~jessie), + python-pydot, xdot, tclreadline, bc, procps, psmisc, - gstreamer0.10-plugins-base + python-gst-1.0, gstreamer1.0-plugins-base Description: PC based motion controller for real-time Linux Machinekit is the next-generation Enhanced Machine Controller which provides motion control for CNC machine tools and robotic diff --git a/debian/control.rtai-kernel.in b/debian/control.rtai-kernel.in deleted file mode 100644 index 1797238651..0000000000 --- a/debian/control.rtai-kernel.in +++ /dev/null @@ -1,14 +0,0 @@ - -Package: machinekit-rtai-kernel-@KVER@ -Architecture: @ARCH@ -Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, - linux-image-@KVER@, librtai1 -Provides: machinekit-rt-threads, machinekit-rtai-kernel -Suggests: hostmot2-firmware-all [!armhf] -Enhances: machinekit -Description: PC based motion controller for real-time Linux - Machinekit is the next-generation Enhanced Machine Controller which - provides motion control for CNC machine tools and robotic - applications (milling, cutting, routing, etc.). - . - This package provides components and drivers that run on an RTAI system. diff --git a/debian/control.xenomai-kernel.in b/debian/control.xenomai-kernel.in deleted file mode 100644 index bf7872b805..0000000000 --- a/debian/control.xenomai-kernel.in +++ /dev/null @@ -1,14 +0,0 @@ - -Package: machinekit-xenomai-kernel-@KVER@ -Architecture: @ARCH@ -Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, - linux-image-@KVER@, xenomai-runtime -Provides: machinekit-rt-threads, machinekit-xenomai-kernel -Suggests: hostmot2-firmware-all [!armhf] -Enhances: machinekit -Description: PC based motion controller for real-time Linux - Machinekit is the next-generation Enhanced Machine Controller which - provides motion control for CNC machine tools and robotic - applications (milling, cutting, routing, etc.). - . - This package provides components and drivers for Xenomai kernel threads. diff --git a/debian/machinekit-kernel.install.in b/debian/machinekit-kernel.install.in deleted file mode 100644 index 98012a7ba1..0000000000 --- a/debian/machinekit-kernel.install.in +++ /dev/null @@ -1,4 +0,0 @@ -lib/modules/@KVER@/linuxcnc/Module.symvers -lib/modules/@KVER@/linuxcnc/*.ko -usr/lib/linuxcnc/ulapi-@FLAVOR@.so -usr/libexec/linuxcnc/rtapi_app_@FLAVOR@ From bf91f0da8bf4098c392dbd9a69a895def5ae1203 Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 13 Oct 2017 09:53:26 -0500 Subject: [PATCH 142/516] scripts/build_{docker,source_package}: update for Stretch - Updates for new `$TAG` format, `${ARCH}_${DISTRO_VER}` - Disable Xenomai threads for Stretch - Remove raspbian support --- scripts/build_docker | 27 +++++++++++++++++++-------- scripts/build_source_package | 4 ++-- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/scripts/build_docker b/scripts/build_docker index a76d3aab50..f7bab95b05 100755 --- a/scripts/build_docker +++ b/scripts/build_docker @@ -11,7 +11,7 @@ # Configuration from environment, CL args and defaults CMD=${CMD:-shell} IMAGE=${IMAGE:-dovetailautomata/mk-cross-builder} -TAG=${TAG:-amd64} +TAG=${TAG:-amd64_9} JOBS=${JOBS:-2} BUILD_SOURCE=${BUILD_SOURCE:-true} # update Changelog & source pkg @@ -33,18 +33,19 @@ shift $(($OPTIND - 1)) ########################################################### # Set build parameters +# Arch-specific: case ${TAG} in - amd64*) + amd64_*) BUILD_OPTS='-b' # Build all binary packages RUN_TESTS='runtests tests' # Run tests on build arch ;; - i386*) # Machine arch: i386 + i386_*) # Machine arch: i386 BUILD_OPTS="-a i386" # - Set machine arch - ;;& - armhf*|raspbian*) # Machine arch: armhf + ;;& # Fall through + armhf_*) # Machine arch: armhf BUILD_OPTS="-a armhf" # - Set machine arch - ;;& - i386*|armhf*|raspbian*) # Cross-compile/foreign arch + ;;& # Fall through + i386_*|armhf_*) # Cross-compile/foreign arch BUILD_OPTS+=" -B" # - Only build arch binary packages BUILD_OPTS+=" -d" # - Root fs missing build deps; force RUN_TESTS='true' # - Don't run tests @@ -53,6 +54,16 @@ case ${TAG} in *) echo "Warning: unknown tag '${TAG}'" >&2 ;; esac +# Distro-specific: +case ${TAG} in + *_8) + PKG_CONFIGURE_ARGS="-prx" # Enable Xenomai + ;; + *) + PKG_CONFIGURE_ARGS="-pr" # Build posix and preempt-rt threads + ;; +esac + # DH_VERBOSE turn on verbose package debuilds ! ${MK_PACKAGE_VERBOSE:-false} || export DH_VERBOSE=1 @@ -101,7 +112,7 @@ case $CMD in ) BUILD_CL=( bash -xec " # configure source package - debian/configure -prxt 8.6; + debian/configure ${PKG_CONFIGURE_ARGS}; # update Changelog and build source package $SCRIPT_DIR/build_source_package $BUILD_SOURCE diff --git a/scripts/build_source_package b/scripts/build_source_package index 8cb5d3ab6d..13bec83aaf 100755 --- a/scripts/build_source_package +++ b/scripts/build_source_package @@ -14,8 +14,8 @@ SOURCE_DIR=$(readlink -f $(dirname ${0})/..) test ${TRAVIS_PULL_REQUEST:-false} = false && IS_PR=false || IS_PR=true case $TAG in - amd64|i386|armhf) DISTRO=jessie ;; - raspbian) DISTRO=raspbian ;; + *_8) DISTRO=jessie ;; + *_9) DISTRO=stretch ;; esac COMMIT_TIMESTAMP="$(git log -1 --pretty=format:%at)" From fe46df8a7479a47860a1bb16caafc0b18608ce33 Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 13 Oct 2017 09:55:32 -0500 Subject: [PATCH 143/516] build_docker script: add tty-friendly options to 'shell' cmd --- scripts/build_docker | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build_docker b/scripts/build_docker index f7bab95b05..5679fe6ebe 100755 --- a/scripts/build_docker +++ b/scripts/build_docker @@ -88,7 +88,7 @@ export TAG declare -a BUILD_CL DOCKER_EXTRA_OPTS case $CMD in "shell"|"") # Interactive shell (default) - DOCKER_EXTRA_OPTS=( --privileged ) + DOCKER_EXTRA_OPTS=( --privileged --interactive --tty ) if test -z "$*"; then BUILD_CL=( bash -i ) else From 9f3b11647f64599b262abcfe9a125a5b17b79394 Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 13 Oct 2017 12:51:03 -0500 Subject: [PATCH 144/516] Revert 18d3df2d and 906d7cf5 Deps are restored; drop `dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info` --- debian/rules.in | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/debian/rules.in b/debian/rules.in index ec88420c56..605316c45a 100755 --- a/debian/rules.in +++ b/debian/rules.in @@ -241,11 +241,7 @@ binary-arch: build install cat debian/machinekit/DEBIAN/shlibs debian/shlibs.pre > \ debian/shlibs.local - ## ignore missing deps / symbols info for locally built libs - ## necessary for Stretch builds until packaged libs can be used for czmq and zeromq - ## now necessary for hacked mk-builder chroots as libs parachuted in, not installed - dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info -l debian/machinekit/usr/lib - #dh_shlibdeps -l debian/machinekit/usr/lib + dh_shlibdeps -l debian/machinekit/usr/lib dh_gencontrol dh_md5sums dh_builddeb From c977e67cf897d5cda3e622894f62cee537ae6205 Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 13 Oct 2017 11:56:02 -0500 Subject: [PATCH 145/516] debian packaging: don't overwrite source-controlled changelog Instead, create a new `changelog.new` and point `dpkg-source` to it --- debian/.gitignore | 3 +++ debian/rules.in | 7 ++++++- scripts/build_docker | 4 ++++ scripts/build_source_package | 19 +++++++++++-------- 4 files changed, 24 insertions(+), 9 deletions(-) diff --git a/debian/.gitignore b/debian/.gitignore index dcabddab0c..5712f306e5 100644 --- a/debian/.gitignore +++ b/debian/.gitignore @@ -6,6 +6,9 @@ /machinekit*.install /machinekit-dev.install +# generated by scripts/build_source_package +/changelog.new + # directory artifacts /tmp /machinekit*/ diff --git a/debian/rules.in b/debian/rules.in index 605316c45a..a742bf94c1 100755 --- a/debian/rules.in +++ b/debian/rules.in @@ -242,7 +242,12 @@ binary-arch: build install cat debian/machinekit/DEBIAN/shlibs debian/shlibs.pre > \ debian/shlibs.local dh_shlibdeps -l debian/machinekit/usr/lib - dh_gencontrol +# # Use any changelog generated by scripts/build_source_package + if test -f debian/changelog.new; then \ + dh_gencontrol -- -ldebian/changelog.new; \ + else \ + dh_gencontrol; \ + fi dh_md5sums dh_builddeb diff --git a/scripts/build_docker b/scripts/build_docker index 5679fe6ebe..f65b2819b2 100755 --- a/scripts/build_docker +++ b/scripts/build_docker @@ -110,6 +110,10 @@ case $CMD in -e TRAVIS_REPO=$TRAVIS_REPO -e TRAVIS_REPO_SLUG=$TRAVIS_REPO_SLUG ) + + # Set changelog location + BUILD_OPTS+=" --changes-option=-ldebian/changelog.new" + BUILD_CL=( bash -xec " # configure source package debian/configure ${PKG_CONFIGURE_ARGS}; diff --git a/scripts/build_source_package b/scripts/build_source_package index 13bec83aaf..851b585ec8 100755 --- a/scripts/build_source_package +++ b/scripts/build_source_package @@ -8,6 +8,10 @@ # Whether to actually build the source BUILD_SOURCE=$1 +if test "$1" != "true" -a "$1" != "false"; then + echo "Usage: $0 [ true | false ]" >&2 + exit 1 +fi # Computed variables SOURCE_DIR=$(readlink -f $(dirname ${0})/..) @@ -81,8 +85,7 @@ echo "RELEASE=$RELEASE" cd ${SOURCE_DIR} -mv debian/changelog debian/changelog.orig -cat > debian/changelog < debian/changelog.new <> debian/changelog +cat debian/changelog.new # debug output +cat debian/changelog >> debian/changelog.new -if test "$BUILD_SOURCE" = true; then - set -x # Let user see +if $BUILD_SOURCE; then + set -x # Let user see what's going on # create .orig tarball git archive HEAD | \ - bzip2 -z | tee ../machinekit_${VERSION}.orig.tar.bz2 >/dev/null + bzip2 -z | dd of=../machinekit_${VERSION}.orig.tar.bz2 # build source package - dpkg-source -b . + dpkg-source -l${PWD}/debian/changelog.new -b . fi From 42679f2e2ad39dad3c3b24b3f2a0f525a80c97b7 Mon Sep 17 00:00:00 2001 From: John Morris Date: Sat, 14 Oct 2017 13:43:01 -0500 Subject: [PATCH 146/516] build_docker: clean up tests script - Also add `flavor` cmd output for debugging --- scripts/build_docker | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/scripts/build_docker b/scripts/build_docker index f65b2819b2..de8028659d 100755 --- a/scripts/build_docker +++ b/scripts/build_docker @@ -129,20 +129,22 @@ case $CMD in "test") # RIP build and regression tests BUILD_CL=( bash -xec " # Set up build: \`autoconf\` and \`make\` - cd src; - ./autogen.sh; - ./configure --host=\$HOST_MULTIARCH; + ( + cd src; + ./autogen.sh; + ./configure --host=\$HOST_MULTIARCH; + ) # Build - make -j${JOBS}; + make -C src -j${JOBS}; # Set up runtime: setuid, environment, ini - sudo make setuid >& /dev/null || true; - cd ..; + sudo make -C src setuid; . scripts/rip-environment; echo -e 'ANNOUNCE_IPV4=0\nANNOUNCE_IPV6=0' >> \ etc/linuxcnc/machinekit.ini; - tail etc/linuxcnc/machinekit.ini; + tail -2 etc/linuxcnc/machinekit.ini; + flavor; # Run regression tests ${RUN_TESTS}" From 6053f9c3b72b7f771594e379f7b2dc346528ead6 Mon Sep 17 00:00:00 2001 From: John Morris Date: Sat, 14 Oct 2017 14:56:21 -0500 Subject: [PATCH 147/516] scripts/build_docker: only build posix threads for tests --- scripts/build_docker | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build_docker b/scripts/build_docker index de8028659d..b989a8bce3 100755 --- a/scripts/build_docker +++ b/scripts/build_docker @@ -132,7 +132,7 @@ case $CMD in ( cd src; ./autogen.sh; - ./configure --host=\$HOST_MULTIARCH; + ./configure --host=\$HOST_MULTIARCH --with-posix; ) # Build From f538eb802e530b5061767acc876bab1613df8da2 Mon Sep 17 00:00:00 2001 From: John Morris Date: Sat, 14 Oct 2017 12:38:39 -0500 Subject: [PATCH 148/516] Docker builds: Add test debug options These can be set temporarily to debug failing tests on Travis CI --- scripts/build_docker | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/scripts/build_docker b/scripts/build_docker index b989a8bce3..bff7919482 100755 --- a/scripts/build_docker +++ b/scripts/build_docker @@ -1,11 +1,8 @@ #!/bin/bash -e # -# Build/cross-build Machinekit in Docker +# Build/cross-build packages and test Machinekit in Docker # -# This script can be run manually or in Travis CI. Sample manual -# usage, `$PWD` is the `src/` directory: -# -# .travis/docker_build.sh +# This script can be run manually or in Travis CI ########################################################### # Configuration from environment, CL args and defaults @@ -37,7 +34,7 @@ shift $(($OPTIND - 1)) case ${TAG} in amd64_*) BUILD_OPTS='-b' # Build all binary packages - RUN_TESTS='runtests tests' # Run tests on build arch + RUN_TESTS='runtests' # Run tests on build arch ;; i386_*) # Machine arch: i386 BUILD_OPTS="-a i386" # - Set machine arch @@ -127,6 +124,10 @@ case $CMD in ) ;; "test") # RIP build and regression tests + if "$TEST_DEBUG" = true; then + DOCKER_EXTRA_OPTS=( -e MSGD_OPTS=-s -e DEBUG=5 ) + fi + TEST_ARGS="${TEST_ARGS:-tests}" BUILD_CL=( bash -xec " # Set up build: \`autoconf\` and \`make\` ( @@ -147,7 +148,7 @@ case $CMD in flavor; # Run regression tests - ${RUN_TESTS}" + ${RUN_TESTS} ${TEST_ARGS}" ) ;; *) echo "Unkown command '$CMD'" >&2; exit 1 ;; From ffad5d794a57a36d93a8d85dddc3a74be088ba3f Mon Sep 17 00:00:00 2001 From: John Morris Date: Sat, 14 Oct 2017 15:19:48 -0500 Subject: [PATCH 149/516] scripts/build_docker: don't exit if make setuid fails --- scripts/build_docker | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build_docker b/scripts/build_docker index bff7919482..7d11ab3f7a 100755 --- a/scripts/build_docker +++ b/scripts/build_docker @@ -140,7 +140,7 @@ case $CMD in make -C src -j${JOBS}; # Set up runtime: setuid, environment, ini - sudo make -C src setuid; + sudo make -C src setuid || true; # Don't exit if this fails . scripts/rip-environment; echo -e 'ANNOUNCE_IPV4=0\nANNOUNCE_IPV6=0' >> \ etc/linuxcnc/machinekit.ini; From 1eafbda8ced27117f88d57503a50fbe72d12ca55 Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 13 Oct 2017 12:51:39 -0500 Subject: [PATCH 150/516] Update scripts/build_packagecloud_upload for new tag format --- scripts/build_packagecloud_upload | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/scripts/build_packagecloud_upload b/scripts/build_packagecloud_upload index ad9aa47e4a..db97dfe970 100755 --- a/scripts/build_packagecloud_upload +++ b/scripts/build_packagecloud_upload @@ -44,8 +44,8 @@ test -n "$TAG" || error "TAG not set" # Set up case $TAG in - raspbian) DISTRO=raspbian; exit_nice "FIXME: not pushing Raspbian packages" ;; - amd64|i386|armhf) DISTRO=jessie ;; + *_8) DISTRO=jessie ;; + *_9) DISTRO=stretch ;; *) error "Unknown tag '$TAG'" ;; esac @@ -56,10 +56,14 @@ PACKAGECLOUD_ARCHIVE=${PACKAGECLOUD_USER}/${PACKAGECLOUD_REPO}/debian/${DISTRO} ################################################ # Deploy -if [ "${TAG}" = "amd64" ]; then - set -x # Show user -# package_cloud push ${PACKAGECLOUD_ARCHIVE} ../*.dsc -else - set -x # Show user -fi -#package_cloud push ${PACKAGECLOUD_ARCHIVE} ../*_$TAG.deb +case "${TAG}" in + *) + set -x # Show user what's happening + ;;& # fall through + amd64_*) + # Push source packages on amd64 native arch only + package_cloud push ${PACKAGECLOUD_ARCHIVE} ../*.dsc + ;; +esac +# Push binary packages +package_cloud push ${PACKAGECLOUD_ARCHIVE} ../*_$TAG.deb From bbc1b24a143d5b52937c9971e00fc0d4a0628b51 Mon Sep 17 00:00:00 2001 From: John Morris Date: Sat, 14 Oct 2017 16:23:27 -0500 Subject: [PATCH 151/516] build_docker: exec the `docker run` command The `docker run` command is the last thing that runs; `exec` it for elegance, and so it doesn't complain when the script changes from under it. --- scripts/build_docker | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build_docker b/scripts/build_docker index 7d11ab3f7a..77767b0833 100755 --- a/scripts/build_docker +++ b/scripts/build_docker @@ -169,7 +169,7 @@ set -x # Show user the command # - Set hostname to $IMAGE:$TAG (replace `/` and `:` with `-`) # - Run build command as set above # hide --it -docker run \ +exec docker run \ --rm \ "${DOCKER_EXTRA_OPTS[@]}" \ -u $DUID:$DGID -e USER=${USER} \ From 0fe6559dc6258505c152cba9bc617df63ad60198 Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 16 Oct 2017 11:44:18 -0500 Subject: [PATCH 152/516] debian/configure: add mode to only generate debian/control Make it easier to transplant into mk-cross-builder by only requiring `debian/configure` and `debian/control.*` be copied over --- debian/configure | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/debian/configure b/debian/configure index bf8e9d03b9..0813a29a80 100755 --- a/debian/configure +++ b/debian/configure @@ -18,6 +18,9 @@ fi # Work out of the debian/ directory cd "$(dirname $0)" +# mk-cross-builder mode: only need the `control` file +test -f changelog && CONTROL_ONLY=false || CONTROL_ONLY=true + # Put command into a file so that later automatic invocations can # re-run echo $0 $* > configure.cmdline @@ -25,6 +28,8 @@ echo $0 $* > configure.cmdline rules_enable_threads() { # enable thread flavors in debian/rules; e.g. # THREADS_POSIX = --with-posix + # ...unnecessary for control-only + ! $CONTROL_ONLY || return 0 FLAVOR=$1 FLAVOR_VAR=THREADS_$(echo $FLAVOR | tr 'a-z-' 'A-Z_') sed -i rules \ @@ -131,13 +136,15 @@ HAVE_FLAVOR=false # copy base templates into place cp control.in control echo "debian/control: copied base template" >&2 -cp rules.in rules; chmod +x rules -echo "debian/rules: copied base template" >&2 -cp machinekit.install.in machinekit.install -echo "debian/machinekit.install.in: copied base template" >&2 +if ! $CONTROL_ONLY; then + cp rules.in rules; chmod +x rules + echo "debian/rules: copied base template" >&2 + cp machinekit.install.in machinekit.install + echo "debian/machinekit.install.in: copied base template" >&2 +fi # read command line options -while getopts prxcs?h ARG; do +while getopts prxcsd?h ARG; do case $ARG in p) do_posix ;; r) do_rt-preempt ;; From 7cb8797a798ba459e0f6828ccf8fcf046e3934a7 Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 16 Oct 2017 10:37:24 -0500 Subject: [PATCH 153/516] build_docker: Add means to update container /etc/passwd If the current user ID is not 1000, hard-coded into the container's /etc/passwd entry for the travis user, then build and run a new image with updated /etc/passwd Also, allow `$UID_GID` to be overridden from environment. --- scripts/build_docker | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/scripts/build_docker b/scripts/build_docker index 77767b0833..64c62263a1 100755 --- a/scripts/build_docker +++ b/scripts/build_docker @@ -68,7 +68,7 @@ esac export DEB_BUILD_OPTIONS="parallel=${JOBS}" # UID/GID to carry into Docker -DUID=`id -u`; DGID=`id -g` +UID_GID=${UID_GID:-`id -u`:`id -g`} # Bind source directory: parent of $PWD for packages BIND_SOURCE_DIR="$(readlink -f $PWD/..)" @@ -154,6 +154,21 @@ case $CMD in *) echo "Unkown command '$CMD'" >&2; exit 1 ;; esac +########################################################### +# Update container image with custom /etc/passwd + +if test ${UID_GID/:*/} != 1000; then + echo "Updating /etc/passwd for UID $TRAVIS_UID" >&2 + NEWTAG=${TAG}_custom + docker build -t ${IMAGE}:${NEWTAG} - < Date: Thu, 19 Oct 2017 12:30:29 -0500 Subject: [PATCH 154/516] .travis scripts: no-op readability cleanups - Change structure for readability - Add comments - Print info messages during execution --- .travis/check_sftp.sh | 43 +++++++++++++++++++++------------------- .travis/send_binaries.sh | 26 +++++++++++++++--------- .travis/send_status.sh | 32 ++++++++++++++++++------------ 3 files changed, 59 insertions(+), 42 deletions(-) diff --git a/.travis/check_sftp.sh b/.travis/check_sftp.sh index d2eff10d05..967287612b 100755 --- a/.travis/check_sftp.sh +++ b/.travis/check_sftp.sh @@ -1,5 +1,11 @@ #!/bin/bash -e # do not enable verbosity as the decryption keys will be visible on the logs +# +# check_sftp.sh +# +# Check if SFTP is available +# - Yes: upload an info file with information about the build +# - No: touch ~/no_sftp to signal SFTP unavailable to send_binaries/send_status die () { echo $1 @@ -7,14 +13,17 @@ die () { exit 0 } -# make sure SFTP_ADDR is defined and not empty -if [ "${SFTP_ADDR}" != "empty" ] && \ - [ "${TRAVIS_SECURE_ENV_VARS}" = "true" ]; -then - # test conection - FILE="${TRAVIS_REPO_SLUG//\//.}_${TRAVIS_BRANCH}_${TRAVIS_JOB_NUMBER}" +# Ensure SFTP is possible +if [ -z "${SFTP_ADDR}" -o "${SFTP_ADDR}" = "empty"]; then + die "SFTP not available: \$SFTP_ADDR undefined" +elif [ "${TRAVIS_SECURE_ENV_VARS}" = "false" ]; then + die "SFTP not available: TRAVIS_SECURE_ENV_VARS=${TRAVIS_SECURE_ENV_VARS}" +fi + +# test conection +FILE="${TRAVIS_REPO_SLUG//\//.}_${TRAVIS_BRANCH}_${TRAVIS_JOB_NUMBER}" - cat >${TRAVIS_BUILD_DIR}/../${FILE} << EOF +cat >${TRAVIS_BUILD_DIR}/../${FILE} << EOF TRAVIS_BRANCH=${TRAVIS_BRANCH} TRAVIS_BUILD_DIR=${TRAVIS_BUILD_DIR} TRAVIS_BUILD_ID=${TRAVIS_BUILD_ID} @@ -28,23 +37,17 @@ CMD=${CMD} FLAV=${FLAV} EOF - cat >${TRAVIS_BUILD_DIR}/../sftp_cmds <${TRAVIS_BUILD_DIR}/../sftp_cmds <&2 + exit 0 +elif [ "${TRAVIS_TEST_RESULT}" -ne 0 ]; then + echo "Skipping package upload after build failure" >&2 + exit 0 +elif [ -f ~/no_sftp ]; then + echo "Skipping package upload: disabled with '~/no_sftp' file" >&2 exit 0 fi -# skip upload on failure -if [ "${TRAVIS_TEST_RESULT}" -eq 0 ] && [ ! -f ~/no_sftp ]; then - cd ${TRAVIS_BUILD_DIR} - tar cvzf ${FILE} -C deploy . +FILE="${TRAVIS_REPO_SLUG//\//.}_${TRAVIS_BRANCH}_${TRAVIS_JOB_NUMBER}.tgz" + +cd ${TRAVIS_BUILD_DIR} +tar cvzf ${FILE} -C deploy . cat >sftp_cmds <&2 + exit 0 +fi + +FILE="${TRAVIS_REPO_SLUG//\//.}_${TRAVIS_BRANCH}_${TRAVIS_JOB_NUMBER}_" +if [ ${TRAVIS_TEST_RESULT} ]; then + FILE+="passed" +else + FILE+="failed" +fi - touch ${FILE} - cat >sftp_cmds <sftp_cmds < Date: Wed, 12 Oct 2016 03:56:25 +0000 Subject: [PATCH 155/516] Point Travis at new Docker build scripts Fixes #1228 --- .travis.yml | 92 +++++++++++++++++++++++++++++++--------- .travis/check_sftp.sh | 1 - .travis/send_binaries.sh | 2 +- 3 files changed, 73 insertions(+), 22 deletions(-) diff --git a/.travis.yml b/.travis.yml index 41571fbd83..b6e754451a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,31 @@ +# This Travis CI config calls scripts that use the following defaults, +# which can (and some should) be overridden in the Travis CI repo +# settings. +# +# Package build `build_docker` script: +# - IMAGE: dovetailautomata/mk-cross-builder +# Docker image to pull for build +# - MK_PACKAGE_VERBOSE: false +# Build verbosely with `make V=1` +# - JOBS: 2 +# Make parallel jobs, `make -j2` +# - DEBIAN_SUITE: experimental +# Debian package suite +# - MAJOR_MINOR_VERSION: 0.1 +# Override Machinekit package base version +# - PKGSOURCE: ${TRAVIS_REPO} +# Identifier added to package release suggesting package origin +# - TEST_ARGS: (empty) +# For CMD=test only; set as needed for debugging, e.g. `-v tests/hm2-idrom` +# - TEST_DEBUG: false +# For CMD=test only; set to `true` to send test debug output to stderr +# +# Package upload `build_upload_packagecloud` script: +# - PACKAGECLOUD_USER, PACKAGECLOUD_TOKEN, PACKAGECLOUD_REPO: no defaults +# Packagecloud.io user credentials and package repository +# - DEPLOY_BRANCH: master +# Git branch for which to deploy packages + sudo: required notifications: @@ -11,41 +39,65 @@ notifications: on_failure: always on_start: never -language: bash +# Cache: In $HOME/.ccache; inserts /usr/lib/ccache into $PATH +# https://docs.travis-ci.com/user/caching/#ccache-cache +language: c +cache: ccache services: - docker before_install: - - sudo apt-get update -qq - - sudo apt-get install -qq sshpass - - gem install package_cloud - .travis/check_sftp.sh env: global: - - ROOT=/opt/rootfs - - JOBS=2 - - SFTP_PORT="${SFTP_PORT:-22}" - - SFTP_USER="${SFTP_USER:-travis}" - - SFTP_ADDR="${SFTP_ADDR:-empty}" + - IMAGE=${IMAGE:-dovetailautomata/mk-cross-builder} + - MK_PACKAGE_VERBOSE=${MK_PACKAGE_VERBOSE:-false} + - JOBS=${JOBS:-2} + - TEST_DEBUG=false + - TEST_ARGS= matrix: - - TAG=jessie-64 CMD=run_tests - - TAG=jessie-64 CMD=build_deb - - TAG=jessie-32 CMD=build_deb - - TAG=jessie-armhf CMD=build_deb FLAV=posix - - TAG=jessie-armhf CMD=build_deb FLAV=xenomai - - TAG=jessie-armhf CMD=build_deb FLAV=rt_preempt - - TAG=raspbian-armhf CMD=build_deb FLAV=posix - - TAG=raspbian-armhf CMD=build_deb FLAV=xenomai - - TAG=raspbian-armhf CMD=build_deb FLAV=rt_preempt + # Tests + # - Reduce total build time by starting longest jobs first + - TAG=amd64_9 CMD=test + - TAG=amd64_8 CMD=test + # Packages + # - Stretch + - TAG=amd64_9 CMD=deb + - TAG=i386_9 CMD=deb + - TAG=armhf_9 CMD=deb + # - Jessie + - TAG=amd64_8 CMD=deb + - TAG=i386_8 CMD=deb + - TAG=armhf_8 CMD=deb + +addons: + apt: + packages: + - lftp + - sshpass + +before_install: + # Show environment for debugging purposes + - env + # Pull the Docker build image + - docker pull "${IMAGE}:${TAG}" + # Clear ccache stats + - ccache -z + # Install the packagecloud gem for pushing packages + - gem install package_cloud script: - - .travis/docker_run.sh + - scripts/build_docker -i $IMAGE -t $TAG -c $CMD after_success: - .travis/send_binaries.sh - - test ${TAG} != "raspbian-armhf" && .travis/upload_packagecloud.sh + # Upload packages to packagecloud.io + - test -z "PACKAGECLOUD_USER" || gem install package_cloud + - test -z "PACKAGECLOUD_USER" || scripts/build_packagecloud_upload + # Show ccache stats + - ccache -s after_script: - .travis/send_status.sh diff --git a/.travis/check_sftp.sh b/.travis/check_sftp.sh index 967287612b..5cb40b2e71 100755 --- a/.travis/check_sftp.sh +++ b/.travis/check_sftp.sh @@ -34,7 +34,6 @@ TRAVIS_JOB_ID=${TRAVIS_JOB_ID} TRAVIS_PULL_REQUEST=${TRAVIS_PULL_REQUEST} TAG=${TAG} CMD=${CMD} -FLAV=${FLAV} EOF cat >${TRAVIS_BUILD_DIR}/../sftp_cmds <&2 exit 0 elif [ "${TRAVIS_TEST_RESULT}" -ne 0 ]; then From aa0245d168cd540cc505e90f8474e00015709e1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Fri, 20 Oct 2017 11:09:04 +0200 Subject: [PATCH 156/516] cython/rtapi: fix identity comparison --- src/hal/cython/machinekit/rtapi.pyx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hal/cython/machinekit/rtapi.pyx b/src/hal/cython/machinekit/rtapi.pyx index ca05810bde..bba8b2a48e 100644 --- a/src/hal/cython/machinekit/rtapi.pyx +++ b/src/hal/cython/machinekit/rtapi.pyx @@ -156,7 +156,7 @@ def classify_comp(comp): if not comp in hal.components: return CS_NOT_LOADED c = hal.components[comp] - if c.type is not hal.TYPE_RT: + if c.type != hal.TYPE_RT: return CS_NOT_RT if not c.has_ctor: return CS_RTLOADED_NOT_INSTANTIABLE From 83b35ce7b5fad05ad7fb52a1f31f51e3bf3d7f54 Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 20 Oct 2017 12:44:44 -0500 Subject: [PATCH 157/516] Move hal_bb_gpio sources to own subdir & wrap lines This should be a no-op: - Move hal_bb_gpio sources to `hal/drivers/hal_bb_gpio` - Set indentation to 4 spaces and re-wrap long lines --- src/Makefile | 2 +- src/hal/drivers/beaglebone_gpio.h | 184 ------ src/hal/drivers/hal_bb_gpio.c | 486 --------------- src/hal/drivers/hal_bb_gpio/beaglebone_gpio.h | 185 ++++++ src/hal/drivers/hal_bb_gpio/hal_bb_gpio.c | 579 ++++++++++++++++++ 5 files changed, 765 insertions(+), 671 deletions(-) delete mode 100644 src/hal/drivers/beaglebone_gpio.h delete mode 100644 src/hal/drivers/hal_bb_gpio.c create mode 100644 src/hal/drivers/hal_bb_gpio/beaglebone_gpio.h create mode 100644 src/hal/drivers/hal_bb_gpio/hal_bb_gpio.c diff --git a/src/Makefile b/src/Makefile index 794ecaba76..48d9f6cf2d 100755 --- a/src/Makefile +++ b/src/Makefile @@ -1397,7 +1397,7 @@ endif ifdef TARGET_PLATFORM_BEAGLEBONE ifeq ($(BUILD_SYS),user-dso) obj-$(CONFIG_HAL_GPIO) += hal_bb_gpio.o -hal_bb_gpio-objs := hal/drivers/hal_bb_gpio.o +hal_bb_gpio-objs := hal/drivers/hal_bb_gpio/hal_bb_gpio.o obj-$(CONFIG_PEPPER) += pepper.o pepper-objs := hal/components/pepper.o $(MATHSTUB) endif diff --git a/src/hal/drivers/beaglebone_gpio.h b/src/hal/drivers/beaglebone_gpio.h deleted file mode 100644 index a1d31b459a..0000000000 --- a/src/hal/drivers/beaglebone_gpio.h +++ /dev/null @@ -1,184 +0,0 @@ -#ifndef _BEAGLEBONE_GPIO_H_ -#define _BEAGLEBONE_GPIO_H_ - -#define CONTROL_MODULE_START_ADDR 0x44E10000 -#define CONTROL_MODULE_END_ADDR 0x44E11FFF -#define CONTROL_MODULE_SIZE (CONTROL_MODULE_END_ADDR - CONTROL_MODULE_START_ADDR) - -#define CM_PER_ADDR 0x44E00000 -#define CM_PER_LEN 1024 -#define CM_PER_GPIO1_CLKCTRL_OFFSET 0xAC -#define CM_PER_GPIO_CLKCTRL_MODMODE_MASK 0x00000003 -#define CM_PER_GPIO_CLKCTRL_MODMODE_ENABLED 0x00000002 -#define CM_PER_GPIO_CLKCTRL_MODMODE_DISABLED 0x00000000 - -#define PIN_RX_DISABLED 0 -#define PIN_RX_ENABLED (1<<5) - -#define PIN_PULLUD_DISABLED 0 -#define PIN_PULLUD_ENABLED (1<<3) - -#define PIN_PULLUP (1<<4) -#define PIN_PULLDOWN 0 - -#define PIN_SLEW_FAST 0 -#define PIN_SLEW_SLOW (1<<6) - - -#define PIN_MODE0 0 -#define PIN_MODE1 1 -#define PIN_MODE2 2 -#define PIN_MODE3 3 -#define PIN_MODE4 4 -#define PIN_MODE5 5 -#define PIN_MODE6 6 -#define PIN_MODE7 7 - - -#define CONF_GPIO1_28 0x878 - - - -#define GPIO_SIZE 0x2000 -#define GPIO0_START_ADDR 0x44E07000 -#define GPIO1_START_ADDR 0x4804C000 -#define GPIO2_START_ADDR 0x481AC000 -#define GPIO3_START_ADDR 0x481AE000 - -#define GPIO_OE 0x134 -#define GPIO_SETDATAOUT 0x194 -#define GPIO_CLEARDATAOUT 0x190 -#define GPIO_DATAIN 0x138 - -typedef struct { - volatile void *gpio_addr; - volatile unsigned int *oe_reg; - volatile unsigned int *setdataout_reg; - volatile unsigned int *clrdataout_reg; - volatile unsigned int *datain_reg; -} bb_gpio_port; - -typedef struct { - bb_gpio_port *port; - char port_num; - char pin_num; - unsigned short control_offset; - char claimed; -} bb_gpio_pin; - -volatile void *control_module; - -bb_gpio_port *gpio_ports[4]; - -bb_gpio_pin user_led_gpio_pins[4] = { - { NULL, 1, 21, 0x854, 0 }, // led0, gpmc_a5 - { NULL, 1, 22, 0x858, 0 }, // led1, gpmc_a6 - { NULL, 1, 23, 0x85C, 0 }, // led2, gpmc_a7 - { NULL, 1, 24, 0x860, 0 } // led3, gpmc_a8 -}; - -bb_gpio_pin p8_pins[47] = { - { NULL, -1, -1, -1, 1 }, // 0 unused - { NULL, -1, -1, -1, 1 }, // 1 GND - { NULL, -1, -1, -1, 1 }, // 2 GND - { NULL, 1, 6, 0x818, 0 }, // pin 3, gpmc_ad6 - { NULL, 1, 7, 0x81C, 0 }, // pin 4, gpmc_ad7 - { NULL, 1, 2, 0x808, 0 }, // pin 5, gpmc_ad2 - { NULL, 1, 3, 0x80C, 0 }, // pin 6, gpmc_ad3 - { NULL, 2, 2, 0x890, 0 }, // pin 7, gpmc_advn_ale - { NULL, 2, 3, 0x894, 0 }, // pin 8, gpmc_oen_ren - { NULL, 2, 5, 0x89C, 0 }, // pin 9, gpmc_ben0_cle - { NULL, 2, 4, 0x898, 0 }, // pin 10, gpmc_wen - { NULL, 1, 13, 0x834, 0 }, // pin 11, gpmc_ad13 - { NULL, 1, 12, 0x830, 0 }, // pin 12, GPMC_AD12 - { NULL, 0, 23, 0x824, 0 }, // pin 13, gpmc_ad9 - { NULL, 0, 26, 0x828, 0 }, // pin 14, gpmc_ad10 - { NULL, 1, 15, 0x83C, 0 }, // pin 15, gpmc_ad15 - { NULL, 1, 14, 0x838, 0 }, // pin 16, gpmc_ad14 - { NULL, 0, 27, 0x82C, 0 }, // pin 17, gpmc_ad11 - { NULL, 2, 1, 0x88C, 0 }, // pin 18, gpmc_clk_mux0 - { NULL, 0, 22, 0x820, 0 }, // pin 19, gpmc_ad8 - { NULL, 1, 31, 0x884, 0 }, // pin 20, gpmc_csn2 - { NULL, 1, 30, 0x880, 0 }, // pin 21, gpmc_csn1 - { NULL, 1, 5, 0x814, 0 }, // pin 22, gpmc_ad5 - { NULL, 1, 4, 0x810, 0 }, // pin 23, gpmc_ad4 - { NULL, 1, 1, 0x804, 0 }, // pin 24, gpmc_ad1 - { NULL, 1, 0, 0x800, 0 }, // pin 25, gpmc_ad0 - { NULL, 1, 29, 0x87C, 0 }, // pin 26, gpmc_csn0 - { NULL, 2, 22, 0x8E0, 0 }, // pin 27, lcd_vsync - { NULL, 2, 24, 0x8E8, 0 }, // pin 28, lcd_pclk - { NULL, 2, 23, 0x8E4, 0 }, // pin 29, lcd_hsync - { NULL, 2, 25, 0x8EC, 0 }, // pin 30, lcd_ac_bias_en - { NULL, 0, 10, 0x8D8, 0 }, // pin 31, lcd_data14 - { NULL, 0, 11, 0x8DC, 0 }, // pin 32, lcd_data15 - { NULL, 0, 9, 0x8D4, 0 }, // pin 33, lcd_data13 - { NULL, 2, 17, 0x8CC, 0 }, // pin 34, lcd_data11 - { NULL, 0, 8, 0x8D0, 0 }, // pin 35, lcd_data12 - { NULL, 2, 16, 0x8C8, 0 }, // pin 36, lcd_data10 - { NULL, 2, 14, 0x8C0, 0 }, // pin 37, lcd_data8 - { NULL, 2, 15, 0x8C4, 0 }, // pin 38, lcd_data9 - { NULL, 2, 12, 0x8B8, 0 }, // pin 39, lcd_data6 - { NULL, 2, 13, 0x8BC, 0 }, // pin 40, lcd_data7 - { NULL, 2, 10, 0x8B0, 0 }, // pin 41, lcd_data4 - { NULL, 2, 11, 0x8B4, 0 }, // pin 42, lcd_data5 - { NULL, 2, 8, 0x8A8, 0 }, // pin 43, lcd_data2 - { NULL, 2, 9, 0x8AC, 0 }, // pin 44, lcd_data3 - { NULL, 2, 6, 0x8A0, 0 }, // pin 45, lcd_data0 - { NULL, 2, 7, 0x8A4, 0 } // pin 46, lcd_data1 -}; - -bb_gpio_pin p9_pins[47] = { - { NULL, -1, -1, -1, 1 }, // 0 unused - { NULL, -1, -1, -1, 1 }, // 1 GND - { NULL, -1, -1, -1, 1 }, // 2 GND - { NULL, -1, -1, -1, 1 }, // 3 3.3v - { NULL, -1, -1, -1, 1 }, // 4 3.v - { NULL, -1, -1, -1, 1 }, // 5 Vdd 5v - { NULL, -1, -1, -1, 1 }, // 6 Vdd 5v - { NULL, -1, -1, -1, 1 }, // 7 Sys 5v - { NULL, -1, -1, -1, 1 }, // 8 Sys 5v - { NULL, -1, -1, -1, 1 }, // 9 power button - { NULL, -1, -1, -1, 1 }, // 10 sys_reset - { NULL, 0, 30, 0x870, 0 }, // pin 11, gpmc_wait0 - { NULL, 1, 28, 0x878, 0 }, // pin 12, gpmc_ben1 - { NULL, 0, 31, 0x874, 0 }, // pin 13, gpmc_wpn - { NULL, 1, 18, 0x848, 0 }, // pin 14, gpmc_a2 - { NULL, 1, 16, 0x840, 0 }, // pin 15, gpmc_a0 - { NULL, 1, 19, 0x84C, 0 }, // pin 16, gpmc_a3 - { NULL, 0, 5, 0x95C, 0 }, // pin 17, spi0_cs0 - { NULL, 0, 4, 0x958, 0 }, // pin 18, spi0_d1 - { NULL, 0, 13, 0x97C, 0 }, // pin 19, uart1_rtsn - { NULL, 0, 12, 0x978, 0 }, // pin 20, uart1_ctsn - { NULL, 0, 3, 0x954, 0 }, // pin 21, spi0_d0 - { NULL, 0, 2, 0x950, 0 }, // pin 22, spi0_sclk - { NULL, 1, 17, 0x844, 0 }, // pin 23, gpmc_a1 - { NULL, 0, 15, 0x984, 0 }, // pin 24, uart1_txd - { NULL, 3, 21, 0x9AC, 0 }, // pin 25, mcasp0_ahclkx - { NULL, 0, 14, 0x980, 0 }, // pin 26, uart1_rxd - { NULL, 3, 19, 0x9A4, 0 }, // pin 27, mcasp0_fsr - { NULL, 3, 17, 0x99C, 0 }, // pin 28, mcasp0_ahclkr - { NULL, 3, 15, 0x994, 0 }, // pin 29, mcasp0_fsx - { NULL, 3, 16, 0x998, 0 }, // pin 30, mcasp0_axr0 - { NULL, 3, 14, 0x990, 0 }, // pin 31, mcasp0_aclkx - { NULL, -1, -1, -1, 1 }, // 32 VADC - { NULL, -1, -1, -1, 1 }, // 33 AIN4 - { NULL, -1, -1, -1, 1 }, // 34 AGND - { NULL, -1, -1, -1, 1 }, // 35 AIN6 - { NULL, -1, -1, -1, 1 }, // 36 AIN5 - { NULL, -1, -1, -1, 1 }, // 37 AIN2 - { NULL, -1, -1, -1, 1 }, // 38 AIN3 - { NULL, -1, -1, -1, 1 }, // 39 AIN0 - { NULL, -1, -1, -1, 1 }, // 40 AIN1 -// { NULL, 3, 20, 0x9A8, 0 }, // pin 41, mcasp0_axr1 NOTE 41 and 42 each have two signals connected - { NULL, 0, 20, 0x9B4, 0 }, // pin 41, xdma_event_intr1 - { NULL, 0, 7, 0x964, 0 }, // pin 42, ecap0_in_pwm0_out -// { NULL, 3, 18, 0x9A0, 0 }, // pin 42, mcasp0_aclkr - { NULL, -1, -1, -1, 1 }, // 43 GND - { NULL, -1, -1, -1, 1 }, // 44 GND - { NULL, -1, -1, -1, 1 }, // 45 GND - { NULL, -1, -1, -1, 1 }, // 46 GND -}; - - - -#endif diff --git a/src/hal/drivers/hal_bb_gpio.c b/src/hal/drivers/hal_bb_gpio.c deleted file mode 100644 index 283dd410c3..0000000000 --- a/src/hal/drivers/hal_bb_gpio.c +++ /dev/null @@ -1,486 +0,0 @@ -/******************************************************************** -* Description: hal_bb_gpio.c -* Driver for the BeagleBone GPIO pins -* -* Author: Ian McMahon -* License: GPL Version 2 -* Copyright (c) 2013. -* -********************************************************************/ - - -#include "rtapi.h" -#include "rtapi_app.h" - -#include "hal.h" - -#include -#include -#include -#include -#include -#include - -#include "beaglebone_gpio.h" - -#if !defined(BUILD_SYS_USER_DSO) -#error "This driver is for usermode threads only" -#endif -#if !defined(TARGET_PLATFORM_BEAGLEBONE) -#error "This driver is for the BeagleBone platform only" -#endif - -#define MODNAME "hal_bb_gpio" - -MODULE_AUTHOR("Ian McMahon"); -MODULE_DESCRIPTION("Driver for BeagleBone GPIO pins"); -MODULE_LICENSE("GPL"); - -#define HEADERS 2 -#define PINS_PER_HEADER 46 - -typedef struct { - hal_bit_t* led_pins[4]; - hal_bit_t* input_pins[PINS_PER_HEADER * HEADERS]; // array of pointers to bivts - hal_bit_t* output_pins[PINS_PER_HEADER * HEADERS]; // array of pointers to bits - hal_bit_t *led_inv[4]; - hal_bit_t *input_inv[PINS_PER_HEADER * HEADERS]; - hal_bit_t *output_inv[PINS_PER_HEADER * HEADERS]; -} port_data_t; - -static port_data_t *port_data; - -static const char *modname = MODNAME; - -static void write_port(void *arg, long period); -static void read_port(void *arg, long period); - -static off_t start_addr_for_port(int port); -static void configure_pin(bb_gpio_pin *pin, char mode); - -static int comp_id; -static int num_ports; - -static char *user_leds; -RTAPI_MP_STRING(user_leds, "user leds, comma separated. 0-3"); - -static char *input_pins; -RTAPI_MP_STRING(input_pins, "input pins, comma separated. P8 pins add 800, P9 pins add 900"); - -static char *output_pins; -RTAPI_MP_STRING(output_pins, "output pins, comma separated. P8 pins add 800, P9 pins add 900"); - -void configure_control_module() { - int fd = open("/dev/mem", O_RDWR); - - control_module = mmap(0, CONTROL_MODULE_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, CONTROL_MODULE_START_ADDR); - - if(control_module == MAP_FAILED) { - rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: Unable to map Control Module: %s", modname, strerror(errno)); - exit(1); - } - - close(fd); -} - -void configure_gpio_port(int n) { - volatile void *cm_per; // pointer to clock manager registers - volatile unsigned int *regptr; - unsigned int regvalue; - - int fd = open("/dev/mem", O_RDWR); - - gpio_ports[n] = hal_malloc(sizeof(bb_gpio_port)); - - // need to verify that port is enabled and clocked before accessing it - // port 0 is always mapped, the others need checked - if ( n > 0 ) { - cm_per = mmap(0,CM_PER_LEN, PROT_READ | PROT_WRITE, MAP_SHARED, fd, CM_PER_ADDR); - if(cm_per == MAP_FAILED) { - rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: Unable to map Clock Module: %s\n", modname, strerror(errno)); - exit(1); - } - // point at CM_PER_GPIOn_CLKCTRL register for port n - regptr = cm_per + CM_PER_GPIO1_CLKCTRL_OFFSET + 4*(n-1); - regvalue = *regptr; - // check for port enabled - if ( (regvalue & CM_PER_GPIO_CLKCTRL_MODMODE_MASK ) != CM_PER_GPIO_CLKCTRL_MODMODE_ENABLED ) { - rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: GPIO Port %d is not enabled in device tree\n", modname, n); - exit(1); - } - munmap((void *)cm_per, CM_PER_LEN); - } - - gpio_ports[n]->gpio_addr = mmap(0, GPIO_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, start_addr_for_port(n)); - - if(gpio_ports[n]->gpio_addr == MAP_FAILED) { - rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: Unable to map GPIO: %s", modname, strerror(errno)); - exit(1); - } - - gpio_ports[n]->oe_reg = gpio_ports[n]->gpio_addr + GPIO_OE; - gpio_ports[n]->setdataout_reg = gpio_ports[n]->gpio_addr + GPIO_SETDATAOUT; - gpio_ports[n]->clrdataout_reg = gpio_ports[n]->gpio_addr + GPIO_CLEARDATAOUT; - gpio_ports[n]->datain_reg = gpio_ports[n]->gpio_addr + GPIO_DATAIN; - - - rtapi_print("memmapped gpio port %d to %p, oe: %p, set: %p, clr: %p\n", n, gpio_ports[n]->gpio_addr, gpio_ports[n]->oe_reg, gpio_ports[n]->setdataout_reg, gpio_ports[n]->clrdataout_reg); - - close(fd); -} - -int rtapi_app_main(void) { - char name[HAL_NAME_LEN + 1]; - int n, retval; - char *data, *token; - - num_ports = 1; - n = 0; // port number... only one for now - - // init driver - comp_id = hal_init(modname); - if(comp_id < 0) { - rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: hal_init() failed\n", modname); - return -1; - } - - // allocate port memory - port_data = hal_malloc(num_ports * sizeof(port_data_t)); - if(port_data == 0) { - rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: hal_malloc() failed\n", modname); - hal_exit(comp_id); - return -1; - } - - // map control module memory - configure_control_module(); - - // configure userleds - if(user_leds != NULL) { - data = user_leds; - while((token = strtok(data, ",")) != NULL) { - int led = strtol(token, NULL, 10); - - data = NULL; - - if(user_led_gpio_pins[led].claimed != 0) { - rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: userled%d is not available as a GPIO.\n", modname, led); - hal_exit(comp_id); - return -1; - } - - // Add HAL pin - retval = hal_pin_bit_newf(HAL_IN, &(port_data->led_pins[led]), comp_id, "bb_gpio.userled%d", led); - - if(retval < 0) { - rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: userled %d could not export pin, err: %d\n", modname, led, retval); - hal_exit(comp_id); - return -1; - } - - // Add HAL pin - retval = hal_pin_bit_newf(HAL_IN, &(port_data->led_inv[led]), comp_id, "bb_gpio.userled%d.invert", led); - - if(retval < 0) { - rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: userled %d could not export pin, err: %d\n", modname, led, retval); - hal_exit(comp_id); - return -1; - } - - // Initialize HAL pin - *(port_data->led_inv[led]) = 0; - - int gpio_num = user_led_gpio_pins[led].port_num; - // configure gpio port if necessary - if(gpio_ports[gpio_num] == NULL) { - configure_gpio_port(gpio_num); - } - - user_led_gpio_pins[led].port = gpio_ports[gpio_num]; - - configure_pin(&user_led_gpio_pins[led], 'O'); - } - } - - // configure input pins - if(input_pins != NULL) { - data = input_pins; - while((token = strtok(data, ",")) != NULL) { - int pin = strtol(token, NULL, 10); - int header; - bb_gpio_pin *bbpin; - - // Fixup old pin numbering scheme: - // P8/P9 was 1xx/2xx, now 8xx/9xx - if (pin < 300) - pin += 700; - - if(pin < 801 || pin > 946 || (pin > 846 && pin < 901)) { - rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: invalid pin number '%d'. Valid pins are 801-846 for P8 pins, 901-946 for P9 pins.\n", modname, pin); - hal_exit(comp_id); - return -1; - } - - if(pin < 900) { - pin -= 800; - bbpin = &p8_pins[pin]; - header = 8; - } else { - pin -= 900; - bbpin = &p9_pins[pin]; - header = 9; - } - - if(bbpin->claimed != 0) { - rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: pin p%d.%02d is not available as a GPIO.\n", modname, header, pin); - hal_exit(comp_id); - return -1; - } - - data = NULL; // after the first call, subsequent calls to strtok need to be on NULL - - // Add HAL pin - retval = hal_pin_bit_newf(HAL_OUT, &(port_data->input_pins[pin + (header - 8)*PINS_PER_HEADER]), comp_id, "bb_gpio.p%d.in-%02d", header, pin); - - if(retval < 0) { - rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: pin p%d.%02d could not export pin, err: %d\n", modname, header, pin, retval); - hal_exit(comp_id); - return -1; - } - - // Add HAL pin - retval = hal_pin_bit_newf(HAL_IN, &(port_data->input_inv[pin + (header - 8)*PINS_PER_HEADER]), comp_id, "bb_gpio.p%d.in-%02d.invert", header, pin); - - if(retval < 0) { - rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: pin p%d.%02d could not export pin, err: %d\n", modname, header, pin, retval); - hal_exit(comp_id); - return -1; - } - - // Initialize HAL pin - *(port_data->input_inv[pin + (header - 8)*PINS_PER_HEADER]) = 0; - - int gpio_num = bbpin->port_num; - - // configure gpio port if necessary - if(gpio_ports[gpio_num] == NULL) { - configure_gpio_port(gpio_num); - } - - bbpin->port = gpio_ports[gpio_num]; - - configure_pin(bbpin, 'U'); - rtapi_print("pin %d maps to pin %d-%d, mode %d\n", pin, bbpin->port_num, bbpin->pin_num, bbpin->claimed); - } - } - - // configure output pins - if(output_pins != NULL) { - data = output_pins; - while((token = strtok(data, ",")) != NULL) { - int pin = strtol(token, NULL, 10); - int header; - bb_gpio_pin *bbpin; - - // Fixup old pin numbering scheme: - // P8/P9 was 1xx/2xx, now 8xx/9xx - if (pin < 300) - pin += 700; - - if(pin < 801 || pin > 946 || (pin > 846 && pin < 901)) { - rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: invalid pin number '%d'. Valid pins are 801-846 for P8 pins, 901-946 for P9 pins.\n", modname, pin); - hal_exit(comp_id); - return -1; - } - - if(pin < 900) { - pin -= 800; - bbpin = &p8_pins[pin]; - header = 8; - } else { - pin -= 900; - bbpin = &p9_pins[pin]; - header = 9; - } - - if(bbpin->claimed != 0) { - rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: pin p%d.%02d is not available as a GPIO.\n", modname, header, pin); - hal_exit(comp_id); - return -1; - } - - data = NULL; // after the first call, subsequent calls to strtok need to be on NULL - - // Add HAL pin - retval = hal_pin_bit_newf(HAL_IN, &(port_data->output_pins[pin + (header - 8)*PINS_PER_HEADER]), comp_id, "bb_gpio.p%d.out-%02d", header, pin); - - if(retval < 0) { - rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: pin p%d.%02d could not export pin, err: %d\n", modname, header, pin, retval); - hal_exit(comp_id); - return -1; - } - - // Add HAL pin - retval = hal_pin_bit_newf(HAL_IN, &(port_data->output_inv[pin + (header - 8)*PINS_PER_HEADER]), comp_id, "bb_gpio.p%d.out-%02d.invert", header, pin); - - if(retval < 0) { - rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: pin p%d.%02d could not export pin, err: %d\n", modname, header, pin, retval); - hal_exit(comp_id); - return -1; - } - - // Initialize HAL pin - *(port_data->output_inv[pin + (header - 8)*PINS_PER_HEADER]) = 0; - - int gpio_num = bbpin->port_num; - - // configure gpio port if necessary - if(gpio_ports[gpio_num] == NULL) { - configure_gpio_port(gpio_num); - } - - bbpin->port = gpio_ports[gpio_num]; - - configure_pin(bbpin, 'O'); - } - } - - - // export functions - rtapi_snprintf(name, sizeof(name), "bb_gpio.write"); - retval = hal_export_funct(name, write_port, port_data, 0, 0, comp_id); - if(retval < 0) { - rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: port %d write funct export failed\n", modname, n); - hal_exit(comp_id); - return -1; - } - - rtapi_snprintf(name, sizeof(name), "bb_gpio.read"); - retval = hal_export_funct(name, read_port, port_data, 0, 0, comp_id); - if(retval < 0) { - rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: port %d read funct export failed\n", modname, n); - hal_exit(comp_id); - return -1; - } - - rtapi_print_msg(RTAPI_MSG_INFO, "%s: installed driver\n", modname); - - hal_ready(comp_id); - - return 0; -} - -void rtapi_app_exit(void) { - - hal_exit(comp_id); -} - -static void write_port(void *arg, long period) { - int i; - port_data_t *port = (port_data_t *)arg; - - // set userled states - for(i=0; i<4; i++) { - if(port->led_pins[i] == NULL) continue; // short circuit if hal hasn't malloc'd a bit at this location - - bb_gpio_pin pin = user_led_gpio_pins[i]; - - if(pin.claimed != 'O') continue; // if we somehow get here but the pin isn't claimed as output, short circuit - - if((*port->led_pins[i] ^ *(port->led_inv[i])) == 0) - *(pin.port->clrdataout_reg) = (1 << pin.pin_num); - else - *(pin.port->setdataout_reg) = (1 << pin.pin_num); - } - - // set output states - for(i=1; i<=HEADERS*PINS_PER_HEADER; i++) { - if(port->output_pins[i] == NULL) continue; // short circuit if hal hasn't malloc'd a bit at this location - - bb_gpio_pin pin; - - if(ioutput_pins[i] ^ *(port->output_inv[i])) == 0) - *(pin.port->clrdataout_reg) = (1 << pin.pin_num); - else - *(pin.port->setdataout_reg) = (1 << pin.pin_num); - } -} - - -static void read_port(void *arg, long period) { - int i; - port_data_t *port = (port_data_t *)arg; - - // read input states - for(i=1; i<=HEADERS*PINS_PER_HEADER; i++) { - if(port->input_pins[i] == NULL) continue; // short circuit if hal hasn't malloc'd a bit at this location - - bb_gpio_pin pin; - - if(iinput_pins[i] = ((*(pin.port->datain_reg) & (1 << pin.pin_num)) >> pin.pin_num) ^ *(port->input_inv[i]); - } -} - - - -off_t start_addr_for_port(int port) { - switch(port) { - case 0: - return GPIO0_START_ADDR; - break; - case 1: - return GPIO1_START_ADDR; - break; - case 2: - return GPIO2_START_ADDR; - break; - case 3: - return GPIO3_START_ADDR; - break; - default: - return -1; - break; - } -} - - -void configure_pin(bb_gpio_pin *pin, char mode) { - volatile unsigned int *control_reg = control_module + pin->control_offset; - pin->claimed = mode; - switch(mode) { - case 'O': - *(pin->port->oe_reg) &= ~(1 << pin->pin_num); // 0 in OE is output enable - *control_reg = PIN_MODE7 | PIN_PULLUD_DISABLED | PIN_RX_DISABLED; - break; - case 'I': - *(pin->port->oe_reg) |= (1 << pin->pin_num); // 1 in OE is input - *control_reg = PIN_MODE7 | PIN_PULLUD_DISABLED | PIN_RX_ENABLED; - break; - case 'U': - *(pin->port->oe_reg) |= (1 << pin->pin_num); // 1 in OE is input - *control_reg = PIN_MODE7 | PIN_PULLUD_ENABLED | PIN_PULLUP | PIN_RX_ENABLED; - break; - case 'D': - *(pin->port->oe_reg) |= (1 << pin->pin_num); // 1 in OE is input - *control_reg = PIN_MODE7 | PIN_PULLUD_ENABLED | PIN_PULLDOWN | PIN_RX_ENABLED; - break; - default: - break; - } -} diff --git a/src/hal/drivers/hal_bb_gpio/beaglebone_gpio.h b/src/hal/drivers/hal_bb_gpio/beaglebone_gpio.h new file mode 100644 index 0000000000..9476aaefc0 --- /dev/null +++ b/src/hal/drivers/hal_bb_gpio/beaglebone_gpio.h @@ -0,0 +1,185 @@ +#ifndef _BEAGLEBONE_GPIO_H_ +#define _BEAGLEBONE_GPIO_H_ + +#define CONTROL_MODULE_START_ADDR 0x44E10000 +#define CONTROL_MODULE_END_ADDR 0x44E11FFF +#define CONTROL_MODULE_SIZE (CONTROL_MODULE_END_ADDR - CONTROL_MODULE_START_ADDR) + +#define CM_PER_ADDR 0x44E00000 +#define CM_PER_LEN 1024 +#define CM_PER_GPIO1_CLKCTRL_OFFSET 0xAC +#define CM_PER_GPIO_CLKCTRL_MODMODE_MASK 0x00000003 +#define CM_PER_GPIO_CLKCTRL_MODMODE_ENABLED 0x00000002 +#define CM_PER_GPIO_CLKCTRL_MODMODE_DISABLED 0x00000000 + +#define PIN_RX_DISABLED 0 +#define PIN_RX_ENABLED (1<<5) + +#define PIN_PULLUD_DISABLED 0 +#define PIN_PULLUD_ENABLED (1<<3) + +#define PIN_PULLUP (1<<4) +#define PIN_PULLDOWN 0 + +#define PIN_SLEW_FAST 0 +#define PIN_SLEW_SLOW (1<<6) + + +#define PIN_MODE0 0 +#define PIN_MODE1 1 +#define PIN_MODE2 2 +#define PIN_MODE3 3 +#define PIN_MODE4 4 +#define PIN_MODE5 5 +#define PIN_MODE6 6 +#define PIN_MODE7 7 + + +#define CONF_GPIO1_28 0x878 + + + +#define GPIO_SIZE 0x2000 +#define GPIO0_START_ADDR 0x44E07000 +#define GPIO1_START_ADDR 0x4804C000 +#define GPIO2_START_ADDR 0x481AC000 +#define GPIO3_START_ADDR 0x481AE000 + +#define GPIO_OE 0x134 +#define GPIO_SETDATAOUT 0x194 +#define GPIO_CLEARDATAOUT 0x190 +#define GPIO_DATAIN 0x138 + +typedef struct { + volatile void *gpio_addr; + volatile unsigned int *oe_reg; + volatile unsigned int *setdataout_reg; + volatile unsigned int *clrdataout_reg; + volatile unsigned int *datain_reg; +} bb_gpio_port; + +typedef struct { + bb_gpio_port *port; + char port_num; + char pin_num; + unsigned short control_offset; + char claimed; +} bb_gpio_pin; + +volatile void *control_module; + +bb_gpio_port *gpio_ports[4]; + +bb_gpio_pin user_led_gpio_pins[4] = { + { NULL, 1, 21, 0x854, 0 }, // led0, gpmc_a5 + { NULL, 1, 22, 0x858, 0 }, // led1, gpmc_a6 + { NULL, 1, 23, 0x85C, 0 }, // led2, gpmc_a7 + { NULL, 1, 24, 0x860, 0 } // led3, gpmc_a8 +}; + +bb_gpio_pin p8_pins[47] = { + { NULL, -1, -1, -1, 1 }, // 0 unused + { NULL, -1, -1, -1, 1 }, // 1 GND + { NULL, -1, -1, -1, 1 }, // 2 GND + { NULL, 1, 6, 0x818, 0 }, // pin 3, gpmc_ad6 + { NULL, 1, 7, 0x81C, 0 }, // pin 4, gpmc_ad7 + { NULL, 1, 2, 0x808, 0 }, // pin 5, gpmc_ad2 + { NULL, 1, 3, 0x80C, 0 }, // pin 6, gpmc_ad3 + { NULL, 2, 2, 0x890, 0 }, // pin 7, gpmc_advn_ale + { NULL, 2, 3, 0x894, 0 }, // pin 8, gpmc_oen_ren + { NULL, 2, 5, 0x89C, 0 }, // pin 9, gpmc_ben0_cle + { NULL, 2, 4, 0x898, 0 }, // pin 10, gpmc_wen + { NULL, 1, 13, 0x834, 0 }, // pin 11, gpmc_ad13 + { NULL, 1, 12, 0x830, 0 }, // pin 12, GPMC_AD12 + { NULL, 0, 23, 0x824, 0 }, // pin 13, gpmc_ad9 + { NULL, 0, 26, 0x828, 0 }, // pin 14, gpmc_ad10 + { NULL, 1, 15, 0x83C, 0 }, // pin 15, gpmc_ad15 + { NULL, 1, 14, 0x838, 0 }, // pin 16, gpmc_ad14 + { NULL, 0, 27, 0x82C, 0 }, // pin 17, gpmc_ad11 + { NULL, 2, 1, 0x88C, 0 }, // pin 18, gpmc_clk_mux0 + { NULL, 0, 22, 0x820, 0 }, // pin 19, gpmc_ad8 + { NULL, 1, 31, 0x884, 0 }, // pin 20, gpmc_csn2 + { NULL, 1, 30, 0x880, 0 }, // pin 21, gpmc_csn1 + { NULL, 1, 5, 0x814, 0 }, // pin 22, gpmc_ad5 + { NULL, 1, 4, 0x810, 0 }, // pin 23, gpmc_ad4 + { NULL, 1, 1, 0x804, 0 }, // pin 24, gpmc_ad1 + { NULL, 1, 0, 0x800, 0 }, // pin 25, gpmc_ad0 + { NULL, 1, 29, 0x87C, 0 }, // pin 26, gpmc_csn0 + { NULL, 2, 22, 0x8E0, 0 }, // pin 27, lcd_vsync + { NULL, 2, 24, 0x8E8, 0 }, // pin 28, lcd_pclk + { NULL, 2, 23, 0x8E4, 0 }, // pin 29, lcd_hsync + { NULL, 2, 25, 0x8EC, 0 }, // pin 30, lcd_ac_bias_en + { NULL, 0, 10, 0x8D8, 0 }, // pin 31, lcd_data14 + { NULL, 0, 11, 0x8DC, 0 }, // pin 32, lcd_data15 + { NULL, 0, 9, 0x8D4, 0 }, // pin 33, lcd_data13 + { NULL, 2, 17, 0x8CC, 0 }, // pin 34, lcd_data11 + { NULL, 0, 8, 0x8D0, 0 }, // pin 35, lcd_data12 + { NULL, 2, 16, 0x8C8, 0 }, // pin 36, lcd_data10 + { NULL, 2, 14, 0x8C0, 0 }, // pin 37, lcd_data8 + { NULL, 2, 15, 0x8C4, 0 }, // pin 38, lcd_data9 + { NULL, 2, 12, 0x8B8, 0 }, // pin 39, lcd_data6 + { NULL, 2, 13, 0x8BC, 0 }, // pin 40, lcd_data7 + { NULL, 2, 10, 0x8B0, 0 }, // pin 41, lcd_data4 + { NULL, 2, 11, 0x8B4, 0 }, // pin 42, lcd_data5 + { NULL, 2, 8, 0x8A8, 0 }, // pin 43, lcd_data2 + { NULL, 2, 9, 0x8AC, 0 }, // pin 44, lcd_data3 + { NULL, 2, 6, 0x8A0, 0 }, // pin 45, lcd_data0 + { NULL, 2, 7, 0x8A4, 0 } // pin 46, lcd_data1 +}; + +bb_gpio_pin p9_pins[47] = { + { NULL, -1, -1, -1, 1 }, // 0 unused + { NULL, -1, -1, -1, 1 }, // 1 GND + { NULL, -1, -1, -1, 1 }, // 2 GND + { NULL, -1, -1, -1, 1 }, // 3 3.3v + { NULL, -1, -1, -1, 1 }, // 4 3.v + { NULL, -1, -1, -1, 1 }, // 5 Vdd 5v + { NULL, -1, -1, -1, 1 }, // 6 Vdd 5v + { NULL, -1, -1, -1, 1 }, // 7 Sys 5v + { NULL, -1, -1, -1, 1 }, // 8 Sys 5v + { NULL, -1, -1, -1, 1 }, // 9 power button + { NULL, -1, -1, -1, 1 }, // 10 sys_reset + { NULL, 0, 30, 0x870, 0 }, // pin 11, gpmc_wait0 + { NULL, 1, 28, 0x878, 0 }, // pin 12, gpmc_ben1 + { NULL, 0, 31, 0x874, 0 }, // pin 13, gpmc_wpn + { NULL, 1, 18, 0x848, 0 }, // pin 14, gpmc_a2 + { NULL, 1, 16, 0x840, 0 }, // pin 15, gpmc_a0 + { NULL, 1, 19, 0x84C, 0 }, // pin 16, gpmc_a3 + { NULL, 0, 5, 0x95C, 0 }, // pin 17, spi0_cs0 + { NULL, 0, 4, 0x958, 0 }, // pin 18, spi0_d1 + { NULL, 0, 13, 0x97C, 0 }, // pin 19, uart1_rtsn + { NULL, 0, 12, 0x978, 0 }, // pin 20, uart1_ctsn + { NULL, 0, 3, 0x954, 0 }, // pin 21, spi0_d0 + { NULL, 0, 2, 0x950, 0 }, // pin 22, spi0_sclk + { NULL, 1, 17, 0x844, 0 }, // pin 23, gpmc_a1 + { NULL, 0, 15, 0x984, 0 }, // pin 24, uart1_txd + { NULL, 3, 21, 0x9AC, 0 }, // pin 25, mcasp0_ahclkx + { NULL, 0, 14, 0x980, 0 }, // pin 26, uart1_rxd + { NULL, 3, 19, 0x9A4, 0 }, // pin 27, mcasp0_fsr + { NULL, 3, 17, 0x99C, 0 }, // pin 28, mcasp0_ahclkr + { NULL, 3, 15, 0x994, 0 }, // pin 29, mcasp0_fsx + { NULL, 3, 16, 0x998, 0 }, // pin 30, mcasp0_axr0 + { NULL, 3, 14, 0x990, 0 }, // pin 31, mcasp0_aclkx + { NULL, -1, -1, -1, 1 }, // 32 VADC + { NULL, -1, -1, -1, 1 }, // 33 AIN4 + { NULL, -1, -1, -1, 1 }, // 34 AGND + { NULL, -1, -1, -1, 1 }, // 35 AIN6 + { NULL, -1, -1, -1, 1 }, // 36 AIN5 + { NULL, -1, -1, -1, 1 }, // 37 AIN2 + { NULL, -1, -1, -1, 1 }, // 38 AIN3 + { NULL, -1, -1, -1, 1 }, // 39 AIN0 + { NULL, -1, -1, -1, 1 }, // 40 AIN1 +// NOTE 41 and 42 each have two signals connected +// { NULL, 3, 20, 0x9A8, 0 }, // pin 41, mcasp0_axr1 + { NULL, 0, 20, 0x9B4, 0 }, // pin 41, xdma_event_intr1 + { NULL, 0, 7, 0x964, 0 }, // pin 42, ecap0_in_pwm0_out +// { NULL, 3, 18, 0x9A0, 0 }, // pin 42, mcasp0_aclkr + { NULL, -1, -1, -1, 1 }, // 43 GND + { NULL, -1, -1, -1, 1 }, // 44 GND + { NULL, -1, -1, -1, 1 }, // 45 GND + { NULL, -1, -1, -1, 1 }, // 46 GND +}; + + + +#endif diff --git a/src/hal/drivers/hal_bb_gpio/hal_bb_gpio.c b/src/hal/drivers/hal_bb_gpio/hal_bb_gpio.c new file mode 100644 index 0000000000..716c27e8ed --- /dev/null +++ b/src/hal/drivers/hal_bb_gpio/hal_bb_gpio.c @@ -0,0 +1,579 @@ +/******************************************************************** + * Description: hal_bb_gpio.c + * Driver for the BeagleBone GPIO pins + * + * Author: Ian McMahon + * License: GPL Version 2 + * Copyright (c) 2013. + * + ********************************************************************/ + + +#include "rtapi.h" +#include "rtapi_app.h" + +#include "hal.h" + +#include +#include +#include +#include +#include +#include + +#include "beaglebone_gpio.h" + +#if !defined(BUILD_SYS_USER_DSO) +#error "This driver is for usermode threads only" +#endif +#if !defined(TARGET_PLATFORM_BEAGLEBONE) +#error "This driver is for the BeagleBone platform only" +#endif + +#define MODNAME "hal_bb_gpio" + +MODULE_AUTHOR("Ian McMahon"); +MODULE_DESCRIPTION("Driver for BeagleBone GPIO pins"); +MODULE_LICENSE("GPL"); + +#define HEADERS 2 +#define PINS_PER_HEADER 46 + +typedef struct { + hal_bit_t* led_pins[4]; + // array of pointers to bivts + hal_bit_t* input_pins[PINS_PER_HEADER * HEADERS]; + // array of pointers to bits + hal_bit_t* output_pins[PINS_PER_HEADER * HEADERS]; + hal_bit_t *led_inv[4]; + hal_bit_t *input_inv[PINS_PER_HEADER * HEADERS]; + hal_bit_t *output_inv[PINS_PER_HEADER * HEADERS]; +} port_data_t; + +static port_data_t *port_data; + +static const char *modname = MODNAME; + +static void write_port(void *arg, long period); +static void read_port(void *arg, long period); + +static off_t start_addr_for_port(int port); +static void configure_pin(bb_gpio_pin *pin, char mode); + +static int comp_id; +static int num_ports; + +static char *user_leds; +RTAPI_MP_STRING(user_leds, "user leds, comma separated. 0-3"); + +static char *input_pins; +RTAPI_MP_STRING( + input_pins, + "input pins, comma separated. P8 pins add 800, P9 pins add 900"); + +static char *output_pins; +RTAPI_MP_STRING( + output_pins, + "output pins, comma separated. P8 pins add 800, P9 pins add 900"); + +void configure_control_module() { + int fd = open("/dev/mem", O_RDWR); + + control_module = mmap(0, CONTROL_MODULE_SIZE, PROT_READ | PROT_WRITE, + MAP_SHARED, fd, CONTROL_MODULE_START_ADDR); + + if (control_module == MAP_FAILED) { + rtapi_print_msg( + RTAPI_MSG_ERR, "%s: ERROR: Unable to map Control Module: %s", + modname, strerror(errno)); + exit(1); + } + + close(fd); +} + +void configure_gpio_port(int n) { + volatile void *cm_per; // pointer to clock manager registers + volatile unsigned int *regptr; + unsigned int regvalue; + + int fd = open("/dev/mem", O_RDWR); + + gpio_ports[n] = hal_malloc(sizeof(bb_gpio_port)); + + // need to verify that port is enabled and clocked before accessing it + // port 0 is always mapped, the others need checked + if ( n > 0 ) { + cm_per = mmap(0,CM_PER_LEN, PROT_READ | PROT_WRITE, MAP_SHARED, + fd, CM_PER_ADDR); + if (cm_per == MAP_FAILED) { + rtapi_print_msg( + RTAPI_MSG_ERR, "%s: ERROR: Unable to map Clock Module: %s\n", + modname, strerror(errno)); + exit(1); + } + // point at CM_PER_GPIOn_CLKCTRL register for port n + regptr = cm_per + CM_PER_GPIO1_CLKCTRL_OFFSET + 4*(n-1); + regvalue = *regptr; + // check for port enabled + if ( (regvalue & CM_PER_GPIO_CLKCTRL_MODMODE_MASK ) + != CM_PER_GPIO_CLKCTRL_MODMODE_ENABLED ) { + rtapi_print_msg( + RTAPI_MSG_ERR, + "%s: ERROR: GPIO Port %d is not enabled in device tree\n", + modname, n); + exit(1); + } + munmap((void *)cm_per, CM_PER_LEN); + } + + gpio_ports[n]->gpio_addr = mmap(0, GPIO_SIZE, PROT_READ | PROT_WRITE, + MAP_SHARED, fd, start_addr_for_port(n)); + + if (gpio_ports[n]->gpio_addr == MAP_FAILED) { + rtapi_print_msg( + RTAPI_MSG_ERR, "%s: ERROR: Unable to map GPIO: %s", + modname, strerror(errno)); + exit(1); + } + + gpio_ports[n]->oe_reg = gpio_ports[n]->gpio_addr + GPIO_OE; + gpio_ports[n]->setdataout_reg = gpio_ports[n]->gpio_addr + GPIO_SETDATAOUT; + gpio_ports[n]->clrdataout_reg = gpio_ports[n]->gpio_addr + GPIO_CLEARDATAOUT; + gpio_ports[n]->datain_reg = gpio_ports[n]->gpio_addr + GPIO_DATAIN; + + + rtapi_print( + "memmapped gpio port %d to %p, oe: %p, set: %p, clr: %p\n", + n, gpio_ports[n]->gpio_addr, gpio_ports[n]->oe_reg, + gpio_ports[n]->setdataout_reg, gpio_ports[n]->clrdataout_reg); + + close(fd); +} + +int rtapi_app_main(void) { + char name[HAL_NAME_LEN + 1]; + int n, retval; + char *data, *token; + + num_ports = 1; + n = 0; // port number... only one for now + + // init driver + comp_id = hal_init(modname); + if (comp_id < 0) { + rtapi_print_msg( + RTAPI_MSG_ERR, "%s: ERROR: hal_init() failed\n", modname); + return -1; + } + + // allocate port memory + port_data = hal_malloc(num_ports * sizeof(port_data_t)); + if (port_data == 0) { + rtapi_print_msg( + RTAPI_MSG_ERR, "%s: ERROR: hal_malloc() failed\n", modname); + hal_exit(comp_id); + return -1; + } + + // map control module memory + configure_control_module(); + + // configure userleds + if (user_leds != NULL) { + data = user_leds; + while ((token = strtok(data, ",")) != NULL) { + int led = strtol(token, NULL, 10); + + data = NULL; + + if (user_led_gpio_pins[led].claimed != 0) { + rtapi_print_msg( + RTAPI_MSG_ERR, + "%s: ERROR: userled%d is not available as a GPIO.\n", + modname, led); + hal_exit(comp_id); + return -1; + } + + // Add HAL pin + retval = hal_pin_bit_newf( + HAL_IN, &(port_data->led_pins[led]), comp_id, + "bb_gpio.userled%d", led); + + if (retval < 0) { + rtapi_print_msg( + RTAPI_MSG_ERR, + "%s: ERROR: userled %d could not export pin, err: %d\n", + modname, led, retval); + hal_exit(comp_id); + return -1; + } + + // Add HAL pin + retval = hal_pin_bit_newf( + HAL_IN, &(port_data->led_inv[led]), comp_id, + "bb_gpio.userled%d.invert", led); + + if (retval < 0) { + rtapi_print_msg( + RTAPI_MSG_ERR, + "%s: ERROR: userled %d could not export pin, err: %d\n", + modname, led, retval); + hal_exit(comp_id); + return -1; + } + + // Initialize HAL pin + *(port_data->led_inv[led]) = 0; + + int gpio_num = user_led_gpio_pins[led].port_num; + // configure gpio port if necessary + if (gpio_ports[gpio_num] == NULL) { + configure_gpio_port(gpio_num); + } + + user_led_gpio_pins[led].port = gpio_ports[gpio_num]; + + configure_pin(&user_led_gpio_pins[led], 'O'); + } + } + + // configure input pins + if (input_pins != NULL) { + data = input_pins; + while ((token = strtok(data, ",")) != NULL) { + int pin = strtol(token, NULL, 10); + int header; + bb_gpio_pin *bbpin; + + // Fixup old pin numbering scheme: + // P8/P9 was 1xx/2xx, now 8xx/9xx + if (pin < 300) + pin += 700; + + if (pin < 801 || pin > 946 || (pin > 846 && pin < 901)) { + rtapi_print_msg( + RTAPI_MSG_ERR, "%s: ERROR: invalid pin number '%d'. Valid " + "pins are 801-846 for P8 pins, 901-946 for P9 pins.\n", + modname, pin); + hal_exit(comp_id); + return -1; + } + + if (pin < 900) { + pin -= 800; + bbpin = &p8_pins[pin]; + header = 8; + } else { + pin -= 900; + bbpin = &p9_pins[pin]; + header = 9; + } + + if (bbpin->claimed != 0) { + rtapi_print_msg( + RTAPI_MSG_ERR, + "%s: ERROR: pin p%d.%02d is not available as a GPIO.\n", + modname, header, pin); + hal_exit(comp_id); + return -1; + } + + data = NULL; // after the first call, subsequent calls to + // strtok need to be on NULL + + // Add HAL pin + retval = hal_pin_bit_newf( + HAL_OUT, + &(port_data->input_pins[pin + (header - 8)*PINS_PER_HEADER]), + comp_id, "bb_gpio.p%d.in-%02d", header, pin); + + if (retval < 0) { + rtapi_print_msg( + RTAPI_MSG_ERR, + "%s: ERROR: pin p%d.%02d could not export pin, err: %d\n", + modname, header, pin, retval); + hal_exit(comp_id); + return -1; + } + + // Add HAL pin + retval = hal_pin_bit_newf( + HAL_IN, + &(port_data->input_inv[pin + (header - 8)*PINS_PER_HEADER]), + comp_id, "bb_gpio.p%d.in-%02d.invert", header, pin); + + if (retval < 0) { + rtapi_print_msg( + RTAPI_MSG_ERR, + "%s: ERROR: pin p%d.%02d could not export pin, err: %d\n", + modname, header, pin, retval); + hal_exit(comp_id); + return -1; + } + + // Initialize HAL pin + *(port_data->input_inv[pin + (header - 8)*PINS_PER_HEADER]) = 0; + + int gpio_num = bbpin->port_num; + + // configure gpio port if necessary + if (gpio_ports[gpio_num] == NULL) { + configure_gpio_port(gpio_num); + } + + bbpin->port = gpio_ports[gpio_num]; + + configure_pin(bbpin, 'U'); + rtapi_print( + "pin %d maps to pin %d-%d, mode %d\n", pin, bbpin->port_num, + bbpin->pin_num, bbpin->claimed); + } + } + + // configure output pins + if (output_pins != NULL) { + data = output_pins; + while ((token = strtok(data, ",")) != NULL) { + int pin = strtol(token, NULL, 10); + int header; + bb_gpio_pin *bbpin; + + // Fixup old pin numbering scheme: + // P8/P9 was 1xx/2xx, now 8xx/9xx + if (pin < 300) + pin += 700; + + if (pin < 801 || pin > 946 || (pin > 846 && pin < 901)) { + rtapi_print_msg( + RTAPI_MSG_ERR, "%s: ERROR: invalid pin number '%d'. Valid " + "pins are 801-846 for P8 pins, 901-946 for P9 pins.\n", + modname, pin); + hal_exit(comp_id); + return -1; + } + + if (pin < 900) { + pin -= 800; + bbpin = &p8_pins[pin]; + header = 8; + } else { + pin -= 900; + bbpin = &p9_pins[pin]; + header = 9; + } + + if (bbpin->claimed != 0) { + rtapi_print_msg( + RTAPI_MSG_ERR, + "%s: ERROR: pin p%d.%02d is not available as a GPIO.\n", + modname, header, pin); + hal_exit(comp_id); + return -1; + } + + data = NULL; // after the first call, subsequent calls to + // strtok need to be on NULL + + // Add HAL pin + retval = hal_pin_bit_newf( + HAL_IN, + &(port_data->output_pins[pin + (header - 8)*PINS_PER_HEADER]), + comp_id, "bb_gpio.p%d.out-%02d", header, pin); + + if (retval < 0) { + rtapi_print_msg( + RTAPI_MSG_ERR, + "%s: ERROR: pin p%d.%02d could not export pin, err: %d\n", + modname, header, pin, retval); + hal_exit(comp_id); + return -1; + } + + // Add HAL pin + retval = hal_pin_bit_newf( + HAL_IN, + &(port_data->output_inv[pin + (header - 8)*PINS_PER_HEADER]), + comp_id, "bb_gpio.p%d.out-%02d.invert", header, pin); + + if (retval < 0) { + rtapi_print_msg( + RTAPI_MSG_ERR, + "%s: ERROR: pin p%d.%02d could not export pin, err: %d\n", + modname, header, pin, retval); + hal_exit(comp_id); + return -1; + } + + // Initialize HAL pin + *(port_data->output_inv[pin + (header - 8)*PINS_PER_HEADER]) = 0; + + int gpio_num = bbpin->port_num; + + // configure gpio port if necessary + if (gpio_ports[gpio_num] == NULL) { + configure_gpio_port(gpio_num); + } + + bbpin->port = gpio_ports[gpio_num]; + + configure_pin(bbpin, 'O'); + } + } + + + // export functions + rtapi_snprintf(name, sizeof(name), "bb_gpio.write"); + retval = hal_export_funct(name, write_port, port_data, 0, 0, comp_id); + if (retval < 0) { + rtapi_print_msg( + RTAPI_MSG_ERR, + "%s: ERROR: port %d write funct export failed\n", modname, n); + hal_exit(comp_id); + return -1; + } + + rtapi_snprintf(name, sizeof(name), "bb_gpio.read"); + retval = hal_export_funct(name, read_port, port_data, 0, 0, comp_id); + if (retval < 0) { + rtapi_print_msg( + RTAPI_MSG_ERR, "%s: ERROR: port %d read funct export failed\n", + modname, n); + hal_exit(comp_id); + return -1; + } + + rtapi_print_msg(RTAPI_MSG_INFO, "%s: installed driver\n", modname); + + hal_ready(comp_id); + + return 0; +} + +void rtapi_app_exit(void) { + + hal_exit(comp_id); +} + +static void write_port(void *arg, long period) { + int i; + port_data_t *port = (port_data_t *)arg; + + // set userled states + for (i=0; i<4; i++) { + // short circuit if hal hasn't malloc'd a bit at this location + if (port->led_pins[i] == NULL) continue; + + bb_gpio_pin pin = user_led_gpio_pins[i]; + + // if we somehow get here but the pin isn't claimed as output, + // short circuit + if (pin.claimed != 'O') continue; + + if ((*port->led_pins[i] ^ *(port->led_inv[i])) == 0) + *(pin.port->clrdataout_reg) = (1 << pin.pin_num); + else + *(pin.port->setdataout_reg) = (1 << pin.pin_num); + } + + // set output states + for (i=1; i<=HEADERS*PINS_PER_HEADER; i++) { + // short circuit if hal hasn't malloc'd a bit at this location + if (port->output_pins[i] == NULL) continue; + + bb_gpio_pin pin; + + if (ioutput_pins[i] ^ *(port->output_inv[i])) == 0) + *(pin.port->clrdataout_reg) = (1 << pin.pin_num); + else + *(pin.port->setdataout_reg) = (1 << pin.pin_num); + } +} + + +static void read_port(void *arg, long period) { + int i; + port_data_t *port = (port_data_t *)arg; + + // read input states + for (i=1; i<=HEADERS*PINS_PER_HEADER; i++) { + // short circuit if hal hasn't malloc'd a bit at this location + if (port->input_pins[i] == NULL) continue; + + bb_gpio_pin pin; + + if (iinput_pins[i] = + ((*(pin.port->datain_reg) & (1 << pin.pin_num)) >> pin.pin_num) + ^ *(port->input_inv[i]); + } +} + + + +off_t start_addr_for_port(int port) { + switch(port) { + case 0: + return GPIO0_START_ADDR; + break; + case 1: + return GPIO1_START_ADDR; + break; + case 2: + return GPIO2_START_ADDR; + break; + case 3: + return GPIO3_START_ADDR; + break; + default: + return -1; + break; + } +} + + +void configure_pin(bb_gpio_pin *pin, char mode) { + volatile unsigned int *control_reg = control_module + pin->control_offset; + pin->claimed = mode; + switch(mode) { + case 'O': + *(pin->port->oe_reg) &= ~(1 << pin->pin_num); // 0 in OE is output enable + *control_reg = PIN_MODE7 | PIN_PULLUD_DISABLED | PIN_RX_DISABLED; + break; + case 'I': + *(pin->port->oe_reg) |= (1 << pin->pin_num); // 1 in OE is input + *control_reg = PIN_MODE7 | PIN_PULLUD_DISABLED | PIN_RX_ENABLED; + break; + case 'U': + *(pin->port->oe_reg) |= (1 << pin->pin_num); // 1 in OE is input + *control_reg = PIN_MODE7 | PIN_PULLUD_ENABLED | PIN_PULLUP | PIN_RX_ENABLED; + break; + case 'D': + *(pin->port->oe_reg) |= (1 << pin->pin_num); // 1 in OE is input + *control_reg = PIN_MODE7 | PIN_PULLUD_ENABLED | PIN_PULLDOWN | PIN_RX_ENABLED; + break; + default: + break; + } +} From 41a5deff2ab9463ae53213aa3d3195f6b34d7a27 Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 20 Oct 2017 21:29:26 -0500 Subject: [PATCH 158/516] hal_bb_gpio: Fix bb_gpio.*.in-*.invert pin direction --- src/hal/drivers/hal_bb_gpio/hal_bb_gpio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hal/drivers/hal_bb_gpio/hal_bb_gpio.c b/src/hal/drivers/hal_bb_gpio/hal_bb_gpio.c index 716c27e8ed..dedcbfaacc 100644 --- a/src/hal/drivers/hal_bb_gpio/hal_bb_gpio.c +++ b/src/hal/drivers/hal_bb_gpio/hal_bb_gpio.c @@ -300,7 +300,7 @@ int rtapi_app_main(void) { // Add HAL pin retval = hal_pin_bit_newf( - HAL_IN, + HAL_OUT, &(port_data->input_inv[pin + (header - 8)*PINS_PER_HEADER]), comp_id, "bb_gpio.p%d.in-%02d.invert", header, pin); From b58f6e8348e1cac5fb1947fb6df254aaf5f7ec66 Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 20 Oct 2017 13:55:10 -0500 Subject: [PATCH 159/516] hal_bb_gpio: add PocketBeagle GPIOs - Add PocketBeagle GPIO pin data - Add new `board={BeagleBone,PocketBeagle}` driver option, default BB - Set macros for per-board info - Work macros into logic - Add `get_pin_data.py` script to help scrape new future boards --- src/hal/drivers/hal_bb_gpio/beaglebone_gpio.h | 122 +++++++++++++- src/hal/drivers/hal_bb_gpio/get_pin_data.py | 125 +++++++++++++++ src/hal/drivers/hal_bb_gpio/hal_bb_gpio.c | 151 ++++++++++-------- 3 files changed, 333 insertions(+), 65 deletions(-) create mode 100755 src/hal/drivers/hal_bb_gpio/get_pin_data.py diff --git a/src/hal/drivers/hal_bb_gpio/beaglebone_gpio.h b/src/hal/drivers/hal_bb_gpio/beaglebone_gpio.h index 9476aaefc0..108196a8e0 100644 --- a/src/hal/drivers/hal_bb_gpio/beaglebone_gpio.h +++ b/src/hal/drivers/hal_bb_gpio/beaglebone_gpio.h @@ -50,6 +50,8 @@ #define GPIO_CLEARDATAOUT 0x190 #define GPIO_DATAIN 0x138 +#define HEADERS 2 + typedef struct { volatile void *gpio_addr; volatile unsigned int *oe_reg; @@ -77,7 +79,38 @@ bb_gpio_pin user_led_gpio_pins[4] = { { NULL, 1, 24, 0x860, 0 } // led3, gpmc_a8 }; -bb_gpio_pin p8_pins[47] = { +// Max pins per header for all boards +#define MAX_PINS_PER_HEADER 46 + +// board ID: Must set this in rtapi_app_main() +extern int board_id; + +// Per-board info macros; depend on board_id +// - Add new boards to BOARD_MACRO as needed +# define BOARD_MACRO(name) ( \ + (board_id == BEAGLEBONE) ? BEAGLEBONE_ ## name \ + : POCKETBEAGLE_ ## name \ + ) +#define HLO_PINS BOARD_MACRO(HLO_PINS) +#define HHI_PINS BOARD_MACRO(HHI_PINS) +#define PINS_PER_HEADER BOARD_MACRO(PINS_PER_HEADER) +#define HLO_HEADER BOARD_MACRO(HLO_HEADER) +#define HHI_HEADER BOARD_MACRO(HHI_HEADER) +#define HLO_BASEPIN (HLO_HEADER * 100) +#define HHI_BASEPIN (HHI_HEADER * 100) +#define HLO_FIRSTPIN (HLO_HEADER * 100 + 1) +#define HHI_FIRSTPIN (HHI_HEADER * 100 + 1) +#define HLO_LASTPIN (HLO_HEADER * 100 + PINS_PER_HEADER) +#define HHI_LASTPIN (HHI_HEADER * 100 + PINS_PER_HEADER) + + +// BeagleBone definitions +#define BEAGLEBONE 0 // board ID +#define BEAGLEBONE_PINS_PER_HEADER 46 +#define BEAGLEBONE_HLO_HEADER 8 +#define BEAGLEBONE_HHI_HEADER 9 + +bb_gpio_pin BEAGLEBONE_HLO_PINS[BEAGLEBONE_PINS_PER_HEADER+1] = { { NULL, -1, -1, -1, 1 }, // 0 unused { NULL, -1, -1, -1, 1 }, // 1 GND { NULL, -1, -1, -1, 1 }, // 2 GND @@ -127,7 +160,7 @@ bb_gpio_pin p8_pins[47] = { { NULL, 2, 7, 0x8A4, 0 } // pin 46, lcd_data1 }; -bb_gpio_pin p9_pins[47] = { +bb_gpio_pin BEAGLEBONE_HHI_PINS[BEAGLEBONE_PINS_PER_HEADER+1] = { { NULL, -1, -1, -1, 1 }, // 0 unused { NULL, -1, -1, -1, 1 }, // 1 GND { NULL, -1, -1, -1, 1 }, // 2 GND @@ -180,6 +213,91 @@ bb_gpio_pin p9_pins[47] = { { NULL, -1, -1, -1, 1 }, // 46 GND }; +// PocketBeagle definitions +#define POCKETBEAGLE 1 // board ID +#define POCKETBEAGLE_PINS_PER_HEADER 36 +#define POCKETBEAGLE_HLO_HEADER 1 +#define POCKETBEAGLE_HHI_HEADER 2 + +bb_gpio_pin POCKETBEAGLE_HLO_PINS[POCKETBEAGLE_PINS_PER_HEADER+1] = { + { NULL, -1, -1, -1, 0 }, // pin 0 + { NULL, -1, -1, -1, 0 }, // pin 1 + { NULL, 2, 23, 0x8e4, 0 }, // pin 2 + { NULL, -1, -1, -1, 0 }, // pin 3 + { NULL, 2, 25, 0x8ec, 0 }, // pin 4 + { NULL, -1, -1, -1, 0 }, // pin 5 + { NULL, 0, 5, 0x95c, 0 }, // pin 6 + { NULL, -1, -1, -1, 0 }, // pin 7 + { NULL, 0, 2, 0x950, 0 }, // pin 8 + { NULL, -1, -1, -1, 0 }, // pin 9 + { NULL, 0, 3, 0x954, 0 }, // pin 10 + { NULL, -1, -1, -1, 0 }, // pin 11 + { NULL, 0, 4, 0x958, 0 }, // pin 12 + { NULL, -1, -1, -1, 0 }, // pin 13 + { NULL, -1, -1, -1, 0 }, // pin 14 + { NULL, -1, -1, -1, 0 }, // pin 15 + { NULL, -1, -1, -1, 0 }, // pin 16 + { NULL, -1, -1, -1, 0 }, // pin 17 + { NULL, -1, -1, -1, 0 }, // pin 18 + { NULL, -1, -1, -1, 0 }, // pin 19 + { NULL, 0, 20, 0x9b4, 0 }, // pin 20 + { NULL, -1, -1, -1, 0 }, // pin 21 + { NULL, -1, -1, -1, 0 }, // pin 22 + { NULL, -1, -1, -1, 0 }, // pin 23 + { NULL, -1, -1, -1, 0 }, // pin 24 + { NULL, -1, -1, -1, 0 }, // pin 25 + { NULL, 0, 12, 0x978, 0 }, // pin 26 + { NULL, -1, -1, -1, 0 }, // pin 27 + { NULL, 0, 13, 0x97c, 0 }, // pin 28 + { NULL, 3, 21, 0x9ac, 0 }, // pin 29 + { NULL, 1, 11, 0x974, 0 }, // pin 30 + { NULL, 3, 18, 0x9a0, 0 }, // pin 31 + { NULL, 1, 10, 0x970, 0 }, // pin 32 + { NULL, 3, 15, 0x994, 0 }, // pin 33 + { NULL, 0, 26, 0x828, 0 }, // pin 34 + { NULL, 2, 24, 0x8e8, 0 }, // pin 35 + { NULL, 3, 14, 0x990, 0 }, // pin 36 +}; + +bb_gpio_pin POCKETBEAGLE_HHI_PINS[POCKETBEAGLE_PINS_PER_HEADER+1] = { + { NULL, -1, -1, -1, 0 }, // pin 0 + { NULL, 1, 18, 0x848, 0 }, // pin 1 + { NULL, 1, 27, 0x86c, 0 }, // pin 2 + { NULL, 0, 23, 0x824, 0 }, // pin 3 + { NULL, 1, 26, 0x868, 0 }, // pin 4 + { NULL, 0, 30, 0x870, 0 }, // pin 5 + { NULL, 1, 25, 0x864, 0 }, // pin 6 + { NULL, 0, 31, 0x874, 0 }, // pin 7 + { NULL, 1, 28, 0x878, 0 }, // pin 8 + { NULL, 0, 15, 0x984, 0 }, // pin 9 + { NULL, 1, 20, 0x850, 0 }, // pin 10 + { NULL, 0, 14, 0x980, 0 }, // pin 11 + { NULL, -1, -1, -1, 0 }, // pin 12 + { NULL, -1, -1, -1, 0 }, // pin 13 + { NULL, -1, -1, -1, 0 }, // pin 14 + { NULL, -1, -1, -1, 0 }, // pin 15 + { NULL, -1, -1, -1, 0 }, // pin 16 + { NULL, 2, 1, 0x88c, 0 }, // pin 17 + { NULL, 1, 15, 0x83c, 0 }, // pin 18 + { NULL, 0, 27, 0x82c, 0 }, // pin 19 + { NULL, 2, 0, 0x888, 0 }, // pin 20 + { NULL, -1, -1, -1, 0 }, // pin 21 + { NULL, 1, 14, 0x838, 0 }, // pin 22 + { NULL, -1, -1, -1, 0 }, // pin 23 + { NULL, 1, 16, 0x840, 0 }, // pin 24 + { NULL, 1, 9, 0x96c, 0 }, // pin 25 + { NULL, -1, -1, -1, 0 }, // pin 26 + { NULL, 1, 8, 0x968, 0 }, // pin 27 + { NULL, 3, 20, 0x9a8, 0 }, // pin 28 + { NULL, 0, 7, 0x964, 0 }, // pin 29 + { NULL, 3, 17, 0x99c, 0 }, // pin 30 + { NULL, 0, 19, 0x9b0, 0 }, // pin 31 + { NULL, 3, 16, 0x998, 0 }, // pin 32 + { NULL, 1, 13, 0x834, 0 }, // pin 33 + { NULL, 3, 19, 0x9a4, 0 }, // pin 34 + { NULL, 2, 22, 0x8e0, 0 }, // pin 35 + { NULL, -1, -1, -1, 0 }, // pin 36 +}; #endif diff --git a/src/hal/drivers/hal_bb_gpio/get_pin_data.py b/src/hal/drivers/hal_bb_gpio/get_pin_data.py new file mode 100755 index 0000000000..b38e576dff --- /dev/null +++ b/src/hal/drivers/hal_bb_gpio/get_pin_data.py @@ -0,0 +1,125 @@ +#!/usr/bin/python + +import re, sys, os +from pprint import pprint + +class hexint(int): + '''Int class that prints as hex''' + def __str__(self): return hex(self) + def __repr__(self): return hex(self) + +def pinmux_pin(pins={}): + '''Get pin control offset''' + + dirname = "/sys/bus/platform/drivers/pinctrl-single/44e10800.pinmux/of_node" + pin_re = re.compile(r'^pinmux_P([0-9])_([0-9]*)_.*_pin$') + for n in os.listdir(dirname): + m = pin_re.match(n) + if not m: continue + header, num = [int(i) for i in m.groups()] + if (header,num) not in pins: + pins[(header,num)] = dict(header=header, num=num) + if 'offset' in pins[(header,num)]: continue + with open("%s/%s/pinctrl-single,pins" % (dirname,n), 'r') as f: + b = f.read(8) + # 0x800 base + 2nd word + pins[(header,num)]['offset'] = hexint(((8+ord(b[2]))<<8) + (ord(b[3]))) + return pins + +def gpio_info(pins={}): + '''Get pin direction, gpio chip and number''' + + # Get GPIO info + ocp_dir = "/sys/devices/platform/ocp" + gpios = {} + # - Get list of gpio devices + gpio_dirs = [i for i in os.listdir(ocp_dir) if i.endswith('.gpio') ] + # - Get port + gpiochip_re = re.compile(r'^gpiochip([0-9]*)$') + for d in gpio_dirs: + dirname = "%s/%s" % (ocp_dir,d) + chipdirs = [i for i in os.listdir(dirname) + if gpiochip_re.match(i) ] + if len(chipdirs) != 1: + print "Error: want exactly one 'gpiochip*' entry in %d" % dirname + sys.exit(1) + chipno = int(gpiochip_re.match(chipdirs[0]).group(1)) + gpios[chipno] = dict( + dirname="%s/gpiochip%s" % (dirname, chipno)) + gpio_re = re.compile(r'^gpio([0-9]*)$') + p_re = re.compile(r'^P([0-9]*)_([0-9]*)$') + for chip, info in gpios.items(): + dirname = info['dirname'] + for gpioname in os.listdir('%s/gpio' % dirname): + gpionum = int(gpio_re.match(gpioname).group(1)) + + gpio_dir = '%s/gpio/gpio%d' % (dirname, gpionum) + with open("%s/label" % gpio_dir, 'r') as f: + m = p_re.match(f.read()) + header = int(m.group(1)) + pin_num = int(m.group(2)) + with open("%s/direction" % gpio_dir, 'r') as f: + direction = f.read()[:-1] + pin = pins.setdefault((header,pin_num),{}) + pin['header'] = header + pin['direction'] = direction + pin['chip'] = chip + pin['gpio'] = gpionum + pin['chipgpio'] = gpionum - (32*chip) + return pins + +def pinctrl_names(pins={}): + '''Get pin function names''' + + ocp_dir = "/sys/firmware/devicetree/base/ocp" + pinmux_re = re.compile(r'^P([0-9])_([0-9]*)_pinmux$') + for sub_dir in os.listdir(ocp_dir): + m = pinmux_re.match(sub_dir) + if not m: continue + header, num = [int(i) for i in m.groups()] + with open("%s/%s/pinctrl-names" % (ocp_dir,sub_dir), 'r') as f: + pins.setdefault((header, num), {})['funcs'] = f.read().split(chr(0))[:-1] + return pins + + +def print_beaglebone_gpio_h(pins, board_name, board_id): + '''Format pin data suitable for appending to beaglebone_gpio.h''' + + max_pins = 0; hlo = 100; hhi = 0 + for header, pin in pins: + if header > hhi: hhi = header + if header < hlo: hlo = header + if max_pins < pin: max_pins = pin + + print "#define %s %d // board ID" % (board_name, board_id) + print "#define %s_PINS_PER_HEADER %d" % (board_name, max_pins) + print "#define %s_HLO_HEADER %d" % (board_name, hlo) + print "#define %s_HHI_HEADER %d" % (board_name, hhi) + + for h,n in ((hlo, "HLO"), (hhi,"HHI")): + print "pb_gpio_pin %s_%s_PINS[%s_PINS_PER_HEADER+1] = {" % ( + board_name, n, board_name) + print + for p in range(max_pins): + data = pins.get((h,p), dict(chip=-1, num=p, offset=-1, chipgpio=-1)) + print ("\t{ NULL, %(chip)2d, %(chipgpio)2d, %(offset)5s, 0 }, " + "// pin %(num)d" % data) + print "};" + print + +# Command line args +if len(sys.argv) != 3: + sys.stderr.write("Usage: $s BOARDNAME ID\n") + sys.exit(1) +board_name = sys.argv[1] +board_id = int(sys.argv[2]) + +# Scrape sysfs for pin data +pins = {} +pinmux_pin(pins) +gpio_info(pins) +pinctrl_names(pins) + +# Print pin data +#pprint(pins) +print_beaglebone_gpio_h(pins, board_name, board_id) diff --git a/src/hal/drivers/hal_bb_gpio/hal_bb_gpio.c b/src/hal/drivers/hal_bb_gpio/hal_bb_gpio.c index dedcbfaacc..c5fe54e40a 100644 --- a/src/hal/drivers/hal_bb_gpio/hal_bb_gpio.c +++ b/src/hal/drivers/hal_bb_gpio/hal_bb_gpio.c @@ -23,9 +23,6 @@ #include "beaglebone_gpio.h" -#if !defined(BUILD_SYS_USER_DSO) -#error "This driver is for usermode threads only" -#endif #if !defined(TARGET_PLATFORM_BEAGLEBONE) #error "This driver is for the BeagleBone platform only" #endif @@ -36,18 +33,15 @@ MODULE_AUTHOR("Ian McMahon"); MODULE_DESCRIPTION("Driver for BeagleBone GPIO pins"); MODULE_LICENSE("GPL"); -#define HEADERS 2 -#define PINS_PER_HEADER 46 - typedef struct { hal_bit_t* led_pins[4]; // array of pointers to bivts - hal_bit_t* input_pins[PINS_PER_HEADER * HEADERS]; + hal_bit_t* input_pins[MAX_PINS_PER_HEADER * HEADERS]; // array of pointers to bits - hal_bit_t* output_pins[PINS_PER_HEADER * HEADERS]; + hal_bit_t* output_pins[MAX_PINS_PER_HEADER * HEADERS]; hal_bit_t *led_inv[4]; - hal_bit_t *input_inv[PINS_PER_HEADER * HEADERS]; - hal_bit_t *output_inv[PINS_PER_HEADER * HEADERS]; + hal_bit_t *input_inv[MAX_PINS_PER_HEADER * HEADERS]; + hal_bit_t *output_inv[MAX_PINS_PER_HEADER * HEADERS]; } port_data_t; static port_data_t *port_data; @@ -69,12 +63,24 @@ RTAPI_MP_STRING(user_leds, "user leds, comma separated. 0-3"); static char *input_pins; RTAPI_MP_STRING( input_pins, - "input pins, comma separated. P8 pins add 800, P9 pins add 900"); + "input pins, comma separated. P8 pins add 800, P9 900, P1 100, etc."); static char *output_pins; RTAPI_MP_STRING( output_pins, - "output pins, comma separated. P8 pins add 800, P9 pins add 900"); + "output pins, comma separated. P8 pins add 800, P9 900, P1 100, etc."); + +// Board-specific configuration variables +// +// Boards have two headers; call the lower-numbered 'lo' and the +// higher-numbered 'hi' +// +// - The board name command-line arg +static char *board; +// - Board ID code +int board_id; + +RTAPI_MP_STRING(board, "board name. BeagleBone (default), PocketBeagle"); void configure_control_module() { int fd = open("/dev/mem", O_RDWR); @@ -84,7 +90,8 @@ void configure_control_module() { if (control_module == MAP_FAILED) { rtapi_print_msg( - RTAPI_MSG_ERR, "%s: ERROR: Unable to map Control Module: %s", + RTAPI_MSG_ERR, + "%s: ERROR: Unable to map Control Module: %s", modname, strerror(errno)); exit(1); } @@ -155,6 +162,8 @@ int rtapi_app_main(void) { char name[HAL_NAME_LEN + 1]; int n, retval; char *data, *token; + int header; +# define PIN_HEADER (header?HHI_HEADER:HLO_HEADER) num_ports = 1; n = 0; // port number... only one for now @@ -179,6 +188,20 @@ int rtapi_app_main(void) { // map control module memory configure_control_module(); + // configure board + if ((! board) || (strncmp(board, "BeagleBone", 9) == 0)) + // BeagleBone (default) + board_id = BEAGLEBONE; + else if (strncmp(board, "PocketBeagle", 9) == 0) + // PocketBeagle + board_id = POCKETBEAGLE; + else { + rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: unknown board '%s'.\n", + modname, board); + hal_exit(comp_id); + return -1; + } + // configure userleds if (user_leds != NULL) { data = user_leds; @@ -244,7 +267,6 @@ int rtapi_app_main(void) { data = input_pins; while ((token = strtok(data, ",")) != NULL) { int pin = strtol(token, NULL, 10); - int header; bb_gpio_pin *bbpin; // Fixup old pin numbering scheme: @@ -252,30 +274,31 @@ int rtapi_app_main(void) { if (pin < 300) pin += 700; - if (pin < 801 || pin > 946 || (pin > 846 && pin < 901)) { + if (pin < HLO_FIRSTPIN || pin > (HHI_LASTPIN) || + (pin > (HLO_LASTPIN) && pin < HHI_FIRSTPIN)) { rtapi_print_msg( RTAPI_MSG_ERR, "%s: ERROR: invalid pin number '%d'. Valid " - "pins are 801-846 for P8 pins, 901-946 for P9 pins.\n", - modname, pin); + "pins are %d-%d and %d-%d.\n", modname, pin, + HLO_FIRSTPIN, HLO_LASTPIN, HHI_FIRSTPIN, HHI_LASTPIN); hal_exit(comp_id); return -1; } - if (pin < 900) { - pin -= 800; - bbpin = &p8_pins[pin]; - header = 8; + if (pin < HHI_BASEPIN) { + pin -= HLO_BASEPIN; + bbpin = &HLO_PINS[pin]; + header = 0; } else { - pin -= 900; - bbpin = &p9_pins[pin]; - header = 9; + pin -= HHI_BASEPIN; + bbpin = &HHI_PINS[pin]; + header = 1; } if (bbpin->claimed != 0) { rtapi_print_msg( RTAPI_MSG_ERR, "%s: ERROR: pin p%d.%02d is not available as a GPIO.\n", - modname, header, pin); + modname, PIN_HEADER, pin); hal_exit(comp_id); return -1; } @@ -286,14 +309,14 @@ int rtapi_app_main(void) { // Add HAL pin retval = hal_pin_bit_newf( HAL_OUT, - &(port_data->input_pins[pin + (header - 8)*PINS_PER_HEADER]), - comp_id, "bb_gpio.p%d.in-%02d", header, pin); + &(port_data->input_pins[pin + header*PINS_PER_HEADER]), + comp_id, "bb_gpio.p%d.in-%02d", PIN_HEADER, pin); if (retval < 0) { rtapi_print_msg( RTAPI_MSG_ERR, "%s: ERROR: pin p%d.%02d could not export pin, err: %d\n", - modname, header, pin, retval); + modname, PIN_HEADER, pin, retval); hal_exit(comp_id); return -1; } @@ -301,20 +324,20 @@ int rtapi_app_main(void) { // Add HAL pin retval = hal_pin_bit_newf( HAL_OUT, - &(port_data->input_inv[pin + (header - 8)*PINS_PER_HEADER]), - comp_id, "bb_gpio.p%d.in-%02d.invert", header, pin); + &(port_data->input_inv[pin + header*PINS_PER_HEADER]), + comp_id, "bb_gpio.p%d.in-%02d.invert", PIN_HEADER, pin); if (retval < 0) { rtapi_print_msg( RTAPI_MSG_ERR, "%s: ERROR: pin p%d.%02d could not export pin, err: %d\n", - modname, header, pin, retval); + modname, PIN_HEADER, pin, retval); hal_exit(comp_id); return -1; } // Initialize HAL pin - *(port_data->input_inv[pin + (header - 8)*PINS_PER_HEADER]) = 0; + *(port_data->input_inv[pin + header*PINS_PER_HEADER]) = 0; int gpio_num = bbpin->port_num; @@ -337,56 +360,59 @@ int rtapi_app_main(void) { data = output_pins; while ((token = strtok(data, ",")) != NULL) { int pin = strtol(token, NULL, 10); - int header; bb_gpio_pin *bbpin; - // Fixup old pin numbering scheme: - // P8/P9 was 1xx/2xx, now 8xx/9xx - if (pin < 300) - pin += 700; + if (board_id == BEAGLEBONE) { + // Fixup old pin numbering scheme: + // P8/P9 was 1xx/2xx, now 8xx/9xx + if (pin < 300) + pin += 700; + } - if (pin < 801 || pin > 946 || (pin > 846 && pin < 901)) { + if (pin < HLO_FIRSTPIN || pin > (HHI_LASTPIN) || + (pin > (HLO_LASTPIN) && pin < HHI_FIRSTPIN)) { rtapi_print_msg( RTAPI_MSG_ERR, "%s: ERROR: invalid pin number '%d'. Valid " - "pins are 801-846 for P8 pins, 901-946 for P9 pins.\n", - modname, pin); + "pins are %d-%d and %d-%d.\n", modname, pin, + HLO_FIRSTPIN, HLO_LASTPIN, HHI_FIRSTPIN, HHI_LASTPIN); hal_exit(comp_id); return -1; } - if (pin < 900) { - pin -= 800; - bbpin = &p8_pins[pin]; - header = 8; + if (pin < HHI_BASEPIN) { + pin -= HLO_BASEPIN; + bbpin = &HLO_PINS[pin]; + header = 0; } else { - pin -= 900; - bbpin = &p9_pins[pin]; - header = 9; + pin -= HHI_BASEPIN; + bbpin = &HHI_PINS[pin]; + header = 1; } if (bbpin->claimed != 0) { rtapi_print_msg( RTAPI_MSG_ERR, "%s: ERROR: pin p%d.%02d is not available as a GPIO.\n", - modname, header, pin); + modname, PIN_HEADER, pin); hal_exit(comp_id); return -1; } data = NULL; // after the first call, subsequent calls to - // strtok need to be on NULL + // strtok need to be on NULL + // Add HAL pin retval = hal_pin_bit_newf( HAL_IN, - &(port_data->output_pins[pin + (header - 8)*PINS_PER_HEADER]), - comp_id, "bb_gpio.p%d.out-%02d", header, pin); + &(port_data->output_pins[pin + header*PINS_PER_HEADER]), + comp_id, "bb_gpio.p%d.out-%02d", PIN_HEADER, pin); if (retval < 0) { rtapi_print_msg( RTAPI_MSG_ERR, "%s: ERROR: pin p%d.%02d could not export pin, err: %d\n", - modname, header, pin, retval); + modname, PIN_HEADER, pin, retval); hal_exit(comp_id); return -1; } @@ -394,20 +420,20 @@ int rtapi_app_main(void) { // Add HAL pin retval = hal_pin_bit_newf( HAL_IN, - &(port_data->output_inv[pin + (header - 8)*PINS_PER_HEADER]), - comp_id, "bb_gpio.p%d.out-%02d.invert", header, pin); + &(port_data->output_inv[pin + header*PINS_PER_HEADER]), + comp_id, "bb_gpio.p%d.out-%02d.invert", PIN_HEADER, pin); if (retval < 0) { rtapi_print_msg( RTAPI_MSG_ERR, "%s: ERROR: pin p%d.%02d could not export pin, err: %d\n", - modname, header, pin, retval); + modname, PIN_HEADER, pin, retval); hal_exit(comp_id); return -1; } // Initialize HAL pin - *(port_data->output_inv[pin + (header - 8)*PINS_PER_HEADER]) = 0; + *(port_data->output_inv[pin + header*PINS_PER_HEADER]) = 0; int gpio_num = bbpin->port_num; @@ -485,9 +511,9 @@ static void write_port(void *arg, long period) { bb_gpio_pin pin; if (iinput_pins[i] = - ((*(pin.port->datain_reg) & (1 << pin.pin_num)) >> pin.pin_num) + ((*(pin.port->datain_reg) & (1 << pin.pin_num)) >> pin.pin_num) ^ *(port->input_inv[i]); } } From 27a17ddbf04e9bdb5b8a38b4d1b12746c3d12cca Mon Sep 17 00:00:00 2001 From: Mick Date: Sat, 21 Oct 2017 15:05:02 +0100 Subject: [PATCH 160/516] Revert travis/send_binaries script --- .travis/send_binaries.sh | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/.travis/send_binaries.sh b/.travis/send_binaries.sh index ef176e0160..ae5bce0457 100755 --- a/.travis/send_binaries.sh +++ b/.travis/send_binaries.sh @@ -1,25 +1,15 @@ #!/bin/bash -e -# -# send_binaries.sh -# -# After a successful package build, upload build result to an SFTP -# server if available -if [ "${CMD}" != "deb" ]; then - echo "Skipping package upload for command '${CMD}'" >&2 - exit 0 -elif [ "${TRAVIS_TEST_RESULT}" -ne 0 ]; then - echo "Skipping package upload after build failure" >&2 - exit 0 -elif [ -f ~/no_sftp ]; then - echo "Skipping package upload: disabled with '~/no_sftp' file" >&2 +FILE="${TRAVIS_REPO_SLUG//\//.}_${TRAVIS_BRANCH}_${TRAVIS_JOB_NUMBER}.tgz" + +if [ "${CMD}" = "run_tests" ]; then exit 0 fi -FILE="${TRAVIS_REPO_SLUG//\//.}_${TRAVIS_BRANCH}_${TRAVIS_JOB_NUMBER}.tgz" - -cd ${TRAVIS_BUILD_DIR} -tar cvzf ${FILE} -C deploy . +# skip upload on failure +if [ "${TRAVIS_TEST_RESULT}" -eq 0 ] && [ ! -f ~/no_sftp ]; then + cd ${TRAVIS_BUILD_DIR} + tar cvzf ${FILE} -C deploy . cat >sftp_cmds < Date: Sat, 21 Oct 2017 16:25:51 +0100 Subject: [PATCH 161/516] Reinstate and add test to see where deploy is --- .travis/send_binaries.sh | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.travis/send_binaries.sh b/.travis/send_binaries.sh index ae5bce0457..43c0ad2540 100755 --- a/.travis/send_binaries.sh +++ b/.travis/send_binaries.sh @@ -8,8 +8,13 @@ fi # skip upload on failure if [ "${TRAVIS_TEST_RESULT}" -eq 0 ] && [ ! -f ~/no_sftp ]; then - cd ${TRAVIS_BUILD_DIR} - tar cvzf ${FILE} -C deploy . + if [ -d ${ROOTFS}/${MACHINEKIT_PATH}/deploy ]; then + cd ${TRAVIS_BUILD_DIR} + tar cvzf ${FILE} -C ${ROOTFS}/${MACHINEKIT_PATH}/deploy . + else + echo "${ROOTFS}/${MACHINEKIT_PATH}/deploy is missing"; + ls -alR ${ROOTFS}/${MACHINEKIT_PATH}/ + fi cat >sftp_cmds < Date: Sun, 22 Oct 2017 12:18:24 +0100 Subject: [PATCH 162/516] Minor text change for build status, to test upload system --- README.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.asciidoc b/README.asciidoc index ce0ae033d2..dfe236500d 100644 --- a/README.asciidoc +++ b/README.asciidoc @@ -1,4 +1,4 @@ -Travis: image:https://travis-ci.org/machinekit/machinekit.svg?branch=master["Travis Build Status", link="https://travis-ci.org/machinekit/machinekit"] +Machinekit: image:https://jenkins.machinekit.io/buildStatus/icon?job=machinekit-builder[] Manpages: image:https://jenkins.machinekit.io/buildStatus/icon?job=machinekit-manpages[] From 47c74268b3278dfbbca086a9d82606bf6b096fdc Mon Sep 17 00:00:00 2001 From: Mick Date: Sun, 22 Oct 2017 15:01:28 +0100 Subject: [PATCH 163/516] Minor edit to readme, test server side misbehaving script --- README.asciidoc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.asciidoc b/README.asciidoc index dfe236500d..b26f3641b6 100644 --- a/README.asciidoc +++ b/README.asciidoc @@ -36,8 +36,7 @@ Please go to link:http://www.machinekit.io/[www.machinekit.io] for this and all including documentation. -History -------- +== History The open-source Machinekit project forked from the open-source LinuxCNC project (http://www.linuxcnc.org) in 2014. At the present time, identifiers such as From cc5b20797b9c7483ed19058a86f9bbd16c18660b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Mon, 23 Oct 2017 10:44:27 +0200 Subject: [PATCH 164/516] hal_bb_gpio: fix invert pin direction --- src/hal/drivers/hal_bb_gpio/hal_bb_gpio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hal/drivers/hal_bb_gpio/hal_bb_gpio.c b/src/hal/drivers/hal_bb_gpio/hal_bb_gpio.c index c5fe54e40a..fddaa4eeef 100644 --- a/src/hal/drivers/hal_bb_gpio/hal_bb_gpio.c +++ b/src/hal/drivers/hal_bb_gpio/hal_bb_gpio.c @@ -323,7 +323,7 @@ int rtapi_app_main(void) { // Add HAL pin retval = hal_pin_bit_newf( - HAL_OUT, + HAL_IN, &(port_data->input_inv[pin + header*PINS_PER_HEADER]), comp_id, "bb_gpio.p%d.in-%02d.invert", PIN_HEADER, pin); From a62595881db4d871502eb7e407184d21d86a724c Mon Sep 17 00:00:00 2001 From: Mick Date: Wed, 25 Oct 2017 10:34:19 +0100 Subject: [PATCH 165/516] Change method of changelog generation to make uniform Rationalise package naming strings by removing upstream-id which dragged in the builder details Signed-off-by: Mick --- .travis/build_deb.sh | 4 ++-- debian/.gitignore | 3 +-- debian/{changelog => changelog.in} | 0 debian/configure | 18 ++++++------------ debian/rules.in | 8 ++------ scripts/build_docker | 3 --- scripts/build_source_package | 18 ++++++++++-------- 7 files changed, 21 insertions(+), 33 deletions(-) rename debian/{changelog => changelog.in} (100%) diff --git a/.travis/build_deb.sh b/.travis/build_deb.sh index 84dd51a975..67a1bda83b 100755 --- a/.travis/build_deb.sh +++ b/.travis/build_deb.sh @@ -43,7 +43,7 @@ RELEASE="1${UPSTREAM}.git${SHA1SHORT}~1${DISTRO}" # Generate debian/changelog entry # # https://www.debian.org/doc/debian-policy/ch-source.html#s-dpkgchangelog -mv debian/changelog debian/changelog.old +rm -f debian/changelog cat > debian/changelog <> debian/changelog +cat debian/changelog.in >> debian/changelog # Whilst using arceye/mk-builder docker image, need -d switch # because new czmq4 libs were parachuted in and not installed onto the chroot fs diff --git a/debian/.gitignore b/debian/.gitignore index 5712f306e5..57862d68aa 100644 --- a/debian/.gitignore +++ b/debian/.gitignore @@ -4,10 +4,9 @@ /files /configure.cmdline /machinekit*.install -/machinekit-dev.install # generated by scripts/build_source_package -/changelog.new +/changelog # directory artifacts /tmp diff --git a/debian/changelog b/debian/changelog.in similarity index 100% rename from debian/changelog rename to debian/changelog.in diff --git a/debian/configure b/debian/configure index 0813a29a80..473238ff6f 100755 --- a/debian/configure +++ b/debian/configure @@ -18,9 +18,6 @@ fi # Work out of the debian/ directory cd "$(dirname $0)" -# mk-cross-builder mode: only need the `control` file -test -f changelog && CONTROL_ONLY=false || CONTROL_ONLY=true - # Put command into a file so that later automatic invocations can # re-run echo $0 $* > configure.cmdline @@ -29,7 +26,6 @@ rules_enable_threads() { # enable thread flavors in debian/rules; e.g. # THREADS_POSIX = --with-posix # ...unnecessary for control-only - ! $CONTROL_ONLY || return 0 FLAVOR=$1 FLAVOR_VAR=THREADS_$(echo $FLAVOR | tr 'a-z-' 'A-Z_') sed -i rules \ @@ -76,7 +72,7 @@ do_changelog() { COMMITTER="$(git show -s --pretty=%an $(git rev-parse --short HEAD))" EMAIL="$(git show -s --format='%ae' $(git rev-parse --short HEAD))" - mv changelog changelog.old + rm -f changelog cat > changelog <> changelog +cat changelog.in >> changelog echo "New package version number added to changelog" } @@ -136,12 +132,10 @@ HAVE_FLAVOR=false # copy base templates into place cp control.in control echo "debian/control: copied base template" >&2 -if ! $CONTROL_ONLY; then - cp rules.in rules; chmod +x rules - echo "debian/rules: copied base template" >&2 - cp machinekit.install.in machinekit.install - echo "debian/machinekit.install.in: copied base template" >&2 -fi +cp rules.in rules; chmod +x rules +echo "debian/rules: copied base template" >&2 +cp machinekit.install.in machinekit.install +echo "debian/machinekit.install.in: copied base template" >&2 # read command line options while getopts prxcsd?h ARG; do diff --git a/debian/rules.in b/debian/rules.in index a742bf94c1..4bc35311b6 100755 --- a/debian/rules.in +++ b/debian/rules.in @@ -242,12 +242,8 @@ binary-arch: build install cat debian/machinekit/DEBIAN/shlibs debian/shlibs.pre > \ debian/shlibs.local dh_shlibdeps -l debian/machinekit/usr/lib -# # Use any changelog generated by scripts/build_source_package - if test -f debian/changelog.new; then \ - dh_gencontrol -- -ldebian/changelog.new; \ - else \ - dh_gencontrol; \ - fi + dh_gencontrol + dh_md5sums dh_builddeb diff --git a/scripts/build_docker b/scripts/build_docker index 64c62263a1..77f1ad45c9 100755 --- a/scripts/build_docker +++ b/scripts/build_docker @@ -108,9 +108,6 @@ case $CMD in -e TRAVIS_REPO_SLUG=$TRAVIS_REPO_SLUG ) - # Set changelog location - BUILD_OPTS+=" --changes-option=-ldebian/changelog.new" - BUILD_CL=( bash -xec " # configure source package debian/configure ${PKG_CONFIGURE_ARGS}; diff --git a/scripts/build_source_package b/scripts/build_source_package index 851b585ec8..d63c04a317 100755 --- a/scripts/build_source_package +++ b/scripts/build_source_package @@ -56,7 +56,8 @@ UPSTREAM_ID=${PKGSOURCE//[-_]/}.${PR_OR_BRANCH//[-_]/} VERSION="${MAJOR_MINOR_VERSION}.${TIMESTAMP}.git${SHA1SHORT}" # Final release -RELEASE="1${UPSTREAM_ID}~1${DISTRO}" +#RELEASE="1${UPSTREAM_ID}~1${DISTRO}" +RELEASE="1~${DISTRO}" ########################################################### # Debug output @@ -82,24 +83,25 @@ echo "RELEASE=$RELEASE" # Generate debian/changelog entry # # https://www.debian.org/doc/debian-policy/ch-source.html#s-dpkgchangelog - +# cd ${SOURCE_DIR} -cat > debian/changelog.new < debian/changelog < $(date -R) EOF + echo "New changelog entry:" -cat debian/changelog.new # debug output -cat debian/changelog >> debian/changelog.new +cat debian/changelog # debug output +cat debian/changelog.in >> debian/changelog if $BUILD_SOURCE; then set -x # Let user see what's going on @@ -109,5 +111,5 @@ if $BUILD_SOURCE; then bzip2 -z | dd of=../machinekit_${VERSION}.orig.tar.bz2 # build source package - dpkg-source -l${PWD}/debian/changelog.new -b . + dpkg-source -b . fi From 79af7401d2c6e399f5c0a6d3295cd9b483e6af63 Mon Sep 17 00:00:00 2001 From: Mick Date: Wed, 25 Oct 2017 14:54:34 +0100 Subject: [PATCH 166/516] Fix upgrade --- debian/armhf.postrm.in | 5 ----- debian/rules.in | 3 --- 2 files changed, 8 deletions(-) delete mode 100755 debian/armhf.postrm.in diff --git a/debian/armhf.postrm.in b/debian/armhf.postrm.in deleted file mode 100755 index b8dcf3c393..0000000000 --- a/debian/armhf.postrm.in +++ /dev/null @@ -1,5 +0,0 @@ - -# remove the whole dir and contents, uninstall will have left it -# because the symlinks still exist - -rm -r -d -f /usr/lib/linuxcnc diff --git a/debian/rules.in b/debian/rules.in index 4bc35311b6..3f7e44e70d 100755 --- a/debian/rules.in +++ b/debian/rules.in @@ -202,9 +202,6 @@ endif cat debian/posix-postinst.add >> debian/machinekit-posix.postinst; \ cat debian/rt-preempt-postinst.add >> debian/machinekit-rt-preempt.postinst; \ cat debian/xenomai-postinst.add >> debian/machinekit-xenomai.postinst; \ - cat debian/armhf.postrm.in >> debian/machinekit-posix.postrm; \ - cat debian/armhf.postrm.in >> debian/machinekit-rt-preempt.postrm; \ - cat debian/armhf.postrm.in >> debian/machinekit-xenomai.postrm; \ echo "usr/lib/linuxcnc/prubin/*" >> debian/machinekit-posix.install; \ echo "usr/lib/linuxcnc/prubin/*" >> debian/machinekit-rt-preempt.install; \ echo "usr/lib/linuxcnc/prubin/*" >> debian/machinekit-xenomai.install; \ From 745dbc135cf463c395213e907e9067990a0f7b5a Mon Sep 17 00:00:00 2001 From: Mikhail Vydrenko Date: Thu, 26 Oct 2017 20:27:27 +0600 Subject: [PATCH 167/516] 1st code, not working, not tested --- src/hal/drivers/hal_gpio_h3.c | 411 +++++++++++++++++++++++++++ src/hal/drivers/hal_gpio_h3_demo.hal | 24 ++ 2 files changed, 435 insertions(+) create mode 100644 src/hal/drivers/hal_gpio_h3.c create mode 100644 src/hal/drivers/hal_gpio_h3_demo.hal diff --git a/src/hal/drivers/hal_gpio_h3.c b/src/hal/drivers/hal_gpio_h3.c new file mode 100644 index 0000000000..70c7bfd347 --- /dev/null +++ b/src/hal/drivers/hal_gpio_h3.c @@ -0,0 +1,411 @@ +/******************************************************************** + * Description: hal_gpio_h3.c + * Driver for the Orange Pi (H3 SoC) GPIO pins + * + * Author: Mikhail Vydrenko (mikhail@vydrenko.ru) + * + ********************************************************************/ + +#include "rtapi.h" /* RTAPI realtime OS API */ +#include "rtapi_bitops.h" +#include "rtapi_app.h" /* RTAPI realtime module decls */ + /* this also includes config.h */ +#include "hal.h" /* HAL public API decls */ + +#include +#include +#include +#include +#include +#include +#include +#include + + + + +#if !defined(TARGET_PLATFORM_ORANGEPI) + #error "This driver is for the OrangePi platform only" +#endif + +MODULE_AUTHOR("Mikhail Vydrenko"); +MODULE_DESCRIPTION("Driver for the Orange Pi (H3 SoC) GPIO pins"); +MODULE_LICENSE("GPL"); + + + + +#define PHY_MEM_BLOCK_SIZE 4096 +#define GPIO_PHY_MEM_OFFSET1 0x01C20800 // GPIO_A .. GPIO_I +#define GPIO_PHY_MEM_OFFSET2 0x01F02C00 // GPIO_L +#define GPIO_PIN_COUNT 43 +#define USE_GPIO_PORT_L 0 // 0 = don't use port L + +enum +{ + GPIO_A, GPIO_B, GPIO_C, GPIO_D, GPIO_E, // 22, 0, 19, 18, 16, + GPIO_F, GPIO_G, GPIO_H, GPIO_I, GPIO_L // 7, 14, 0, 0, 12 pins +}; + +#if USE_GPIO_PORT_L + #define GPIO_PORT_COUNT 10 + uint32_t * vrt_block_addr[2]; +#else + #define GPIO_PORT_COUNT 9 + uint32_t * vrt_block_addr[1]; +#endif + +struct _GPIO_PORT_REG_t +{ + uint32_t config[4]; + uint32_t data[1]; + uint32_t drive[2]; + uint32_t pull[2]; +}; + +struct _GPIO_LIST_t +{ + int8_t port; + int8_t pin; +}; + + + + +static struct _GPIO_PORT_REG_t * _GPIO_port_reg[GPIO_PORT_COUNT] = {0}; + +static const struct _GPIO_LIST_t _GPIO_LIST[GPIO_PIN_COUNT] = { + // dummy + {-4, 0}, + + // general pins 1-40 1 2 + {-2, 0}, {-3, 0}, // +3.3V +5V + {GPIO_A, 12}, {-3, 0}, // PA12 +5V + {GPIO_A, 11}, {-1, 0}, // PA11 GND + {GPIO_A, 6}, {GPIO_A, 13}, // PA6 PA13 + {-1, 0}, {GPIO_A, 14}, // GND PA14 + {GPIO_A, 1}, {GPIO_D, 14}, // PA1 PD14 + {GPIO_A, 0}, {-1, 0}, // PA0 GND + {GPIO_A, 3}, {GPIO_C, 4}, // PA3 PC4 + {-2, 0}, {GPIO_C, 7}, // +3.3V PC7 + {GPIO_C, 0}, {-1, 0}, // PC0 GND + {GPIO_C, 1}, {GPIO_A, 2}, // PC1 PA2 + {GPIO_C, 2}, {GPIO_C, 3}, // PC2 PC3 + {-1, 0}, {GPIO_A, 21}, // GND PA21 + {GPIO_A, 19}, {GPIO_A, 18}, // PA19 PA18 + {GPIO_A, 7}, {-1, 0}, // PA7 GND + {GPIO_A, 8}, {GPIO_G, 8}, // PA8 PG8 + {GPIO_A, 9}, {-1, 0}, // PA9 GND + {GPIO_A, 10}, {GPIO_G, 9}, // PA10 PG9 + {GPIO_A, 20}, {GPIO_G, 6}, // PA20 PG6 + {-1, 0}, {GPIO_G, 7}, // GND PG7 + + // pins 41,42 are serial console TX,RX pins + {GPIO_A, 4}, {GPIO_A, 5} // PA4 PA5 +}; + +static const uint8_t _available_pins[GPIO_PIN_COUNT] = { + // dummy + 0, + + // general pins 1-40 + 0, 0, + 1, 0, + 1, 0, + 1, 1, + 0, 1, + 1, 1, + 1, 0, + 1, 1, + 0, 1, + 1, 0, + 1, 1, + 1, 1, + 0, 1, + 1, 1, + 1, 0, + 1, 1, + 1, 0, + 1, 1, + 1, 1, + 0, 1, + + // pins 41,42 are serial console TX,RX pins + 1, 1 +}; + +static int32_t comp_id; // component ID + +hal_bit_t **port_data; + +static uint8_t input_pins_list[GPIO_PIN_COUNT] = {0}; +static uint8_t input_pins_count = 0; +static int8_t *input_pins; +RTAPI_MP_STRING(input_pins, "input pins, comma separated"); + +static uint8_t output_pins_list[GPIO_PIN_COUNT] = {0}; +static uint8_t output_pins_count = 0; +static int8_t *output_pins; +RTAPI_MP_STRING(output_pins, "output pins, comma separated"); + + + + + +static void write_port(void *arg, long period); +static void read_port(void *arg, long period); + + + + +int32_t rtapi_app_main(void) +{ + int32_t mem_fd; + uint32_t vrt_offset = 0; + off_t phy_block_addr = 0; + int32_t n, retval; + int8_t *data, *token; + int32_t pin; + + + comp_id = hal_init("hal_gpio_h3"); + if (comp_id < 0) + { + rtapi_print_msg(RTAPI_MSG_ERR, "hal_gpio_h3: ERROR: hal_init() failed\n"); + return -1; + } + + + // open physical memory file + if ( (mem_fd = open("/dev/mem", O_RDWR|O_SYNC) ) < 0 ) + { + rtapi_print_msg(RTAPI_MSG_ERR, "hal_gpio_h3: ERROR: can't open /dev/mem file\n"); + return -1; + } + + // calculate phy memory block start + vrt_offset = GPIO_PHY_MEM_OFFSET1 % PHY_MEM_BLOCK_SIZE; + phy_block_addr = GPIO_PHY_MEM_OFFSET1 - vrt_offset; + + // make a block of phy memory visible in our user space + vrt_block_addr[0] = mmap( + NULL, // Any adddress in our space + PHY_MEM_BLOCK_SIZE, // Map length + PROT_READ | PROT_WRITE, // Enable reading & writting to mapped memory + MAP_SHARED, // Shared with other processes + mem_fd, // File to map + phy_block_addr // Offset to GPIO peripheral + ); + + // exit program if mmap is failed + if (vrt_block_addr[0] == MAP_FAILED) + { + rtapi_print_msg(RTAPI_MSG_ERR, "hal_gpio_h3: ERROR: mmap() failed\n"); + return -1; + } + + // adjust offset to correct value + vrt_offset >>= 2; + + // add correct address values to global GPIO array + for ( uint32_t p = GPIO_A; p <= GPIO_I; ++p ) + { + _GPIO_port_reg[p] = (struct _GPIO_PORT_REG_t *) (vrt_block_addr[0] + vrt_offset + p*0x24); + } + +#if USE_GPIO_PORT_L + // calculate phy memory block start + vrt_offset = GPIO_PHY_MEM_OFFSET2 % PHY_MEM_BLOCK_SIZE; + phy_block_addr = GPIO_PHY_MEM_OFFSET2 - vrt_offset; + + // make a block of phy memory visible in our user space + vrt_block_addr[1] = mmap( + NULL, // Any adddress in our space + PHY_MEM_BLOCK_SIZE, // Map length + PROT_READ | PROT_WRITE, // Enable reading & writting to mapped memory + MAP_SHARED, // Shared with other processes + mem_fd, // File to map + phy_block_addr // Offset to GPIO peripheral + ); + + // exit program if mmap is failed + if (vrt_block_addr[1] == MAP_FAILED) + { + rtapi_print_msg(RTAPI_MSG_ERR, "hal_gpio_h3: ERROR: mmap() failed\n"); + return -1; + } + + // adjust offset to correct value + vrt_offset >>= 2; + + // add correct address values to global GPIO array + _GPIO_port_reg[GPIO_L] = (struct _GPIO_PORT_REG_t *) (vrt_block_addr[1] + vrt_offset + 0*0x24); +#endif + + // no need to keep phy memory file open after mmap + close(mem_fd); + + + port_data = hal_malloc(GPIO_PIN_COUNT); + if (port_data == 0) + { + rtapi_print_msg(RTAPI_MSG_ERR, "hal_gpio_h3: ERROR: hal_malloc() failed\n"); + hal_exit(comp_id); + return -1; + } + + // configure input pins + if (input_pins != NULL) + { + data = input_pins; + + while ((token = strtok(data, ",")) != NULL) + { + pin = strtol(token, NULL, 10); + + if ( pin < 0 || pin >= GPIO_PIN_COUNT || !_available_pins[pin] ) + { + rtapi_print_msg(RTAPI_MSG_ERR, + "hal_gpio_h3: ERROR: invalid pin number %d\n", pin); + hal_exit(comp_id); + return -1; + } + + input_pins_list[input_pins_count] = pin; + ++input_pins_count; + + // TODO - configure OrangePi pin as input + + retval = hal_pin_bit_newf(HAL_OUT, &port_data[pin], comp_id, + "hal_gpio_h3.pin-%02d-in", pin); + if (retval < 0) + { + rtapi_print_msg(RTAPI_MSG_ERR, + "hal_gpio_h3: ERROR: pin %d export failed\n", pin); + hal_exit(comp_id); + return -1; + } + } + + data = NULL; // after the first call, subsequent calls to + // strtok need to be on NULL + } + + // configure output pins + if (output_pins != NULL) + { + data = output_pins; + + while ((token = strtok(data, ",")) != NULL) + { + pin = strtol(token, NULL, 10); + + if ( pin < 0 || pin >= GPIO_PIN_COUNT || !_available_pins[pin] ) + { + rtapi_print_msg(RTAPI_MSG_ERR, + "hal_gpio_h3: ERROR: invalid pin number %d\n", pin); + hal_exit(comp_id); + return -1; + } + + // check - if pin already exported as input + for ( n = input_pins_count; n--; ) + { + if ( input_pins_list[n] == pin ) + { + rtapi_print_msg(RTAPI_MSG_ERR, + "hal_gpio_h3: ERROR: output pin %d exported before as input\n", pin); + break; + } + } + + // this pin is free and can be exported as output + if ( n < 0 ) + { + output_pins_list[output_pins_count] = pin; + ++output_pins_count; + + // TODO - configure OrangePi pin as output + + retval = hal_pin_bit_newf(HAL_IN, &port_data[pin], comp_id, + "hal_gpio_h3.pin-%02d-out", pin); + if (retval < 0) + { + rtapi_print_msg(RTAPI_MSG_ERR, + "hal_gpio_h3: ERROR: pin %d export failed\n", pin); + hal_exit(comp_id); + return -1; + } + } + } + + data = NULL; // after the first call, subsequent calls to + // strtok need to be on NULL + } + + + retval = hal_export_funct("hal_gpio_h3.write", write_port, 0, 0, 0, comp_id); + if (retval < 0) + { + rtapi_print_msg(RTAPI_MSG_ERR, "hal_gpio_h3: ERROR: write funct export failed\n"); + hal_exit(comp_id); + return -1; + } + + retval = hal_export_funct("hal_gpio_h3.read", read_port, 0, 0, 0, comp_id); + if (retval < 0) + { + rtapi_print_msg(RTAPI_MSG_ERR, "hal_gpio_h3: ERROR: read funct export failed\n"); + hal_exit(comp_id); + return -1; + } + + rtapi_print_msg(RTAPI_MSG_INFO, "hal_gpio_h3: installed driver\n"); + hal_ready(comp_id); + + return 0; +} + +void rtapi_app_exit(void) +{ + // unlink phy space from our user space + munmap(vrt_block_addr[0], PHY_MEM_BLOCK_SIZE); +#if USE_GPIO_PORT_L + munmap(vrt_block_addr[1], PHY_MEM_BLOCK_SIZE); +#endif + + hal_exit(comp_id); +} + + + + +static void write_port(void *arg, long period) +{ + static int8_t n = 0; + + // set GPIO output pins state from the port_data array + for ( n = output_pins_count; n--; ) + { + if ( *(port_data[output_pins_list[n]]) ) + { + // TODO - set GPIO pin + } + else + { + // TODO - clear GPIO pin + } + } +} + +static void read_port(void *arg, long period) +{ + static int8_t n = 0; + + // put GPIO input pins state into the port_data array + for ( n = input_pins_count; n--; ) + { + // TODO - make real reading of pins state + *port_data[input_pins_list[n]] = 0; + } +} diff --git a/src/hal/drivers/hal_gpio_h3_demo.hal b/src/hal/drivers/hal_gpio_h3_demo.hal new file mode 100644 index 0000000000..9aa4a98480 --- /dev/null +++ b/src/hal/drivers/hal_gpio_h3_demo.hal @@ -0,0 +1,24 @@ +# stepgen demo using orange pi (H3) hal_gpio_h3 driver + +loadrt hal_gpio_h3 output_pins=3,5,7,8 +newthread fast 100000 +newthread slow 1000000 + +loadrt stepgen step_type=5 ctrl_type=v + +net a stepgen.0.phase-A => hal_gpio_h3.pin-03-out +net b stepgen.0.phase-B => hal_gpio_h3.pin-05-out +net c stepgen.0.phase-C => hal_gpio_h3.pin-07-out +net d stepgen.0.phase-D => hal_gpio_h3.pin-08-out + +net speed stepgen.0.velocity-cmd + +addf stepgen.update-freq slow +addf stepgen.make-pulses fast +addf hal_gpio_h3.write fast + +setp stepgen.0.enable 1 +sets speed 5000 +start + + From 3765e4603663d93bd80b9eb8029435ab3c1b5408 Mon Sep 17 00:00:00 2001 From: John Morris Date: Tue, 24 Oct 2017 12:19:11 -0500 Subject: [PATCH 168/516] hal_temp_bbb.py: CRAMPS pull-up resistor configurable In `adc2r_cramps()`, add an `R_PU` arg so the function is reusable for circuits that use the same voltage divider configuration as the CRAMPS but with different component values. Plumb this to a new `hal_temp_bbb.py --r_pu VAL` command-line argument. Also adapt @cdsteinkuehler's excellent description of the circuit [1] for the comments. [1]: https://groups.google.com/d/msg/machinekit/wZ8KAKqV7yo/blG1yZ0rBAAJ --- src/hal/user_comps/hal_temp_bbb.py | 44 ++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/src/hal/user_comps/hal_temp_bbb.py b/src/hal/user_comps/hal_temp_bbb.py index 4ef704c201..5a75f72aa1 100755 --- a/src/hal/user_comps/hal_temp_bbb.py +++ b/src/hal/user_comps/hal_temp_bbb.py @@ -89,23 +89,36 @@ def adc2r_bebopr(pin): return R_T -# The CRAMPS board thermistor input has one side grounded and the other side -# pulled high through a 1.00K resistor to 1.8V. Following this is a 4.7K -# resistor, some protection diodes, and filtering capacitors. The ADC voltage -# read is the filtered voltage across the thermistor. -def adc2r_cramps(pin): - V_adc = pin.rawValue * 1.8 / 4096.0 - V_T = 0.0 # Voltage across the thermistor - R_PU = 2000.0 #Pull-up resistence - I_PU = 0.0 # Current flowing through the pull-up resistor - R_T = 0.0 # Resistance of the thermistor - - V_T = V_adc - +# CRAMPS board: A voltage divider is formed by a pull-up resistor, +# tied to 1.8V VDD_ADC, and thermistor, tied to ground. The ADC +# directly reads the thermistor voltage (V_T). All the thermistor +# current flows through the pull-up (I_PU), and those two values are +# used to calculate the thermistor resistance. The pull-up resistance +# R_PU is 2k on the CRAMPS, and may be supplied to reuse this function +# for custom circuits. V_adc is 1.8V, and resolution is 12 bits for +# 4096 possible values. + +# Irrelevant to these calculations, in the CRAMPS, the voltage divider +# feeds a 4.7K resistor and two capacitors which form an RC filter to +# reduce noise. The BBB presents almost no load on its ADC input pins +# (just leakage current through CMOS inputs), so there is essentially +# zero voltage across the 4.7K resistor unless the thermistor is +# changing value very rapidly (or there is noise on the line). + +# https://groups.google.com/d/msg/machinekit/wZ8KAKqV7yo/blG1yZ0rBAAJ + +def adc2r_cramps(pin, + # Pull-up resistence + R_PU = 2000): + # Voltage across the thermistor + V_T = pin.rawValue * 1.8 / 4096.0 + + # Current flowing through the pull-up resistor # No dividing by zero or negative voltages despite what the ADC says! # Clip to a small positive value I_PU = max((1.8 - V_T ) / R_PU, 0.000001) + # Resistance of the thermistor R_T = V_T / I_PU return R_T @@ -138,7 +151,7 @@ def adc2Temp(pin): if(args.cape_board == 'BeBoPr'): R = adc2r_bebopr(pin) elif (args.cape_board == 'CRAMPS'): - R = adc2r_cramps(pin) + R = adc2r_cramps(pin, args.r_pu) else: print("Invalid -b cape name: %s" % args.cape_board) print("Valid names are: BeBoPr, CRAMPS") @@ -172,6 +185,9 @@ def checkAdcInput(pin): parser.add_argument('-c', '--channels', help='Komma separated list of channels and thermistors to use e.g. 01:semitec_103GT_2,02:epcos_B57560G1104', required=True) parser.add_argument('-f', '--filter_size', help='Size of the low pass filter to use', default=10) parser.add_argument('-b', '--cape_board', help='Type of cape used', default='BeBoPr') +parser.add_argument('-r', '--r_pu', default=2000, type=float, + help='Divider pull-up resistor value (default 2k Ohms)') + args = parser.parse_args() From 213801dfe8410fa0bd778c644b7ae4d6f51b7e68 Mon Sep 17 00:00:00 2001 From: John Morris Date: Tue, 24 Oct 2017 13:06:32 -0500 Subject: [PATCH 169/516] Add McShane TR91 10k NTC thermistor table --- share/fdm/thermistor_tables/TR91.txt | 204 +++++++++++++++++++++++++++ 1 file changed, 204 insertions(+) create mode 100644 share/fdm/thermistor_tables/TR91.txt diff --git a/share/fdm/thermistor_tables/TR91.txt b/share/fdm/thermistor_tables/TR91.txt new file mode 100644 index 0000000000..bff25ca19a --- /dev/null +++ b/share/fdm/thermistor_tables/TR91.txt @@ -0,0 +1,204 @@ +# TR91/TS91 SERIES 10K OHM THERMISTORS ±1°C OVER 0°C TO 100°C +# Based on FENWALL CURVE 16 +# Similar to "J" Curve +# Type: NTC +# See: +# - http://mcshaneinc.com/html/Sens_TS91HP.html +# - http://mcshaneinc.com/html/TS91_Specs.html +# - Values from http://mcshaneinc.com/img/product/Probe/TS91ResTemp.csv +# +# Python resistance R to temp w/Steinhart-Hart equation: +# A = 1.129241E-03; B = 2.341077E-04; C = 8.775468E-08 +# kelvin_to_celsius = 273.15 +# temp_celsius = 1/(A + B*(ln(R)) + C*(ln(R))**3) - kelvin_to_celsius +-40 336600 0.0 +-39 315000 0.0 +-38 295000 0.0 +-37 276400 0.0 +-36 259000 0.0 +-35 242800 0.0 +-34 227800 0.0 +-33 213800 0.0 +-32 200600 0.0 +-31 188400 0.0 +-30 177000 0.0 +-29 166400 0.0 +-28 156500 0.0 +-27 147200 0.0 +-26 138500 0.0 +-25 130400 0.0 +-24 122900 0.0 +-23 115800 0.0 +-22 109100 0.0 +-21 102900 0.0 +-20 97120 0.0 +-19 91660 0.0 +-18 86540 0.0 +-17 81720 0.0 +-16 77220 0.0 +-15 72980 0.0 +-14 69000 0.0 +-13 65260 0.0 +-12 61760 0.0 +-11 58460 0.0 +-10 55340 0.0 +-9 52420 0.0 +-8 49660 0.0 +-7 47080 0.0 +-6 44640 0.0 +-5 42340 0.0 +-4 40160 0.0 +-3 38120 0.0 +-2 36200 0.0 +-1 34380 0.0 +0 32660 0.0 +1 31040 0.0 +2 29500 0.0 +3 28060 0.0 +4 26680 0.0 +5 25400 0.0 +6 24180 0.0 +7 23020 0.0 +8 21920 0.0 +9 20880 0.0 +10 19900 0.0 +11 18970 0.0 +12 18090 0.0 +13 17260 0.0 +14 16460 0.0 +15 15710 0.0 +16 15000 0.0 +17 14320 0.0 +18 13680 0.0 +19 13070 0.0 +20 12490 0.0 +21 11940 0.0 +22 11420 0.0 +23 10920 0.0 +24 10450 0.0 +25 10000 0.0 +26 9574 0.0 +27 9166 0.0 +28 8778 0.0 +29 8408 0.0 +30 8058 0.0 +31 7722 0.0 +32 7404 0.0 +33 7098 0.0 +34 6808 0.0 +35 6532 0.0 +36 6268 0.0 +37 6016 0.0 +38 5776 0.0 +39 5546 0.0 +40 5326 0.0 +41 5118 0.0 +42 4918 0.0 +43 4726 0.0 +44 4544 0.0 +45 4368 0.0 +46 4202 0.0 +47 4042 0.0 +48 3888 0.0 +49 3742 0.0 +50 3602 0.0 +51 3468 0.0 +52 3340 0.0 +53 3216 0.0 +54 3098 0.0 +55 2986 0.0 +56 2878 0.0 +57 2774 0.0 +58 2674 0.0 +59 2580 0.0 +60 2488 0.0 +61 2400 0.0 +62 2316 0.0 +63 2234 0.0 +64 2158 0.0 +65 2082 0.0 +66 2012 0.0 +67 1942 0.0 +68 1876 0.0 +69 1813 0.0 +70 1751 0.0 +71 1693 0.0 +72 1637 0.0 +73 1582 0.0 +74 1530 0.0 +75 1480 0.0 +76 1432 0.0 +77 1385 0.0 +78 1341 0.0 +79 1298 0.0 +80 1256 0.0 +81 1216 0.0 +82 1178 0.0 +83 1141 0.0 +84 1105 0.0 +85 1071 0.0 +86 1038 0.0 +87 1006 0.0 +88 975.0 0.0 +89 945.2 0.0 +90 916.4 0.0 +91 888.8 0.0 +92 862.0 0.0 +93 836.4 0.0 +94 811.4 0.0 +95 787.4 0.0 +96 764.2 0.0 +97 741.8 0.0 +98 720.2 0.0 +99 699.4 0.0 +100 679.2 0.0 +101 659.6 0.0 +102 640.8 0.0 +103 622.6 0.0 +104 605.0 0.0 +105 588.0 0.0 +106 571.4 0.0 +107 555.6 0.0 +108 540.2 0.0 +109 525.2 0.0 +110 510.8 0.0 +111 496.8 0.0 +112 483.2 0.0 +113 470.2 0.0 +114 457.4 0.0 +115 445.2 0.0 +116 433.4 0.0 +117 421.8 0.0 +118 410.6 0.0 +119 399.8 0.0 +120 389.4 0.0 +121 379.2 0.0 +122 369.4 0.0 +123 359.8 0.0 +124 350.6 0.0 +125 341.6 0.0 +126 332.8 0.0 +127 324.4 0.0 +128 316.2 0.0 +129 308.2 0.0 +130 300.6 0.0 +131 293.0 0.0 +132 285.8 0.0 +133 278.8 0.0 +134 272.0 0.0 +135 265.2 0.0 +136 258.8 0.0 +137 252.6 0.0 +138 246.4 0.0 +139 240.6 0.0 +140 234.8 0.0 +141 229.2 0.0 +142 223.8 0.0 +143 218.4 0.0 +144 213.4 0.0 +145 208.4 0.0 +146 203.6 0.0 +147 198.8 0.0 +148 194.2 0.0 +149 189.7 0.0 +150 185.4 0.0 From e0e3bba684c379d137b0164bf36d4b93940e25e2 Mon Sep 17 00:00:00 2001 From: John Morris Date: Tue, 24 Oct 2017 13:35:30 -0500 Subject: [PATCH 170/516] Usability improvements to fdm.r2temp python module - Raise exception upon detecting error - Allow specifying thermistor tables in non-standard locations --- lib/python/fdm/r2temp.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/python/fdm/r2temp.py b/lib/python/fdm/r2temp.py index 761e87b5ad..bfadcc79a2 100755 --- a/lib/python/fdm/r2temp.py +++ b/lib/python/fdm/r2temp.py @@ -16,8 +16,7 @@ def __init__(self, name): self.loadTable(name) if len(self.thermistor_table_raw) == 0: - sys.stderr.write('thermistor_table_raw table not found\n') - exit(1) + raise RuntimeError('thermistor_table_raw table not found') # Shuffle array to make three lists of values (Temp, Resistane, Alpha) # so we can use bisect to efficiently do table lookups @@ -31,12 +30,14 @@ def loadTable(self, name): localInputFile = os.path.join(os.getcwd(), 'thermistor_tables', name + '.txt') systemInputFile = os.path.join(c.datadir, 'fdm', 'thermistor_tables', name + '.txt') - if os.path.exists(localInputFile): + if os.path.exists(name): + inputFile = name + elif os.path.exists(localInputFile): inputFile = localInputFile elif os.path.exists(systemInputFile): inputFile = systemInputFile else: - sys.stderr.write('Thermistor table was not found\n') + raise RuntimeError('Thermistor table was not found') with open(inputFile, "r") as f: self.thermistor_table_raw = [] @@ -76,4 +77,4 @@ def r2t(self, R_T): #print((r2temp.r2t(5000))) #r2temp2 = R2Temp("5") #print((r2temp2.r2t(5000))) -#print((r2temp.r2t(5000))) \ No newline at end of file +#print((r2temp.r2t(5000))) From 96893d0e31935da41a6a394cdceee12522b7ee65 Mon Sep 17 00:00:00 2001 From: Mikhail Vydrenko Date: Sat, 28 Oct 2017 21:44:10 +0600 Subject: [PATCH 171/516] Correct work with GPIO registers, Untested --- src/hal/drivers/hal_gpio_h3.c | 96 ++++++++++++++++++++++++----------- 1 file changed, 66 insertions(+), 30 deletions(-) diff --git a/src/hal/drivers/hal_gpio_h3.c b/src/hal/drivers/hal_gpio_h3.c index 70c7bfd347..31412d5a95 100644 --- a/src/hal/drivers/hal_gpio_h3.c +++ b/src/hal/drivers/hal_gpio_h3.c @@ -74,7 +74,8 @@ struct _GPIO_LIST_t static struct _GPIO_PORT_REG_t * _GPIO_port_reg[GPIO_PORT_COUNT] = {0}; -static const struct _GPIO_LIST_t _GPIO_LIST[GPIO_PIN_COUNT] = { +static const struct _GPIO_LIST_t _GPIO_LIST[GPIO_PIN_COUNT] = +{ // dummy {-4, 0}, @@ -104,7 +105,8 @@ static const struct _GPIO_LIST_t _GPIO_LIST[GPIO_PIN_COUNT] = { {GPIO_A, 4}, {GPIO_A, 5} // PA4 PA5 }; -static const uint8_t _available_pins[GPIO_PIN_COUNT] = { +static const uint8_t _available_pins[GPIO_PIN_COUNT] = +{ // dummy 0, @@ -158,6 +160,21 @@ static void read_port(void *arg, long period); +static void config_pin_as_input(int32_t n) +{ + _GPIO_port_reg[_GPIO_LIST[n].port]->config[_GPIO_LIST[n].pin / 8] &= + ~(0b1111 << (_GPIO_LIST[n].pin % 8 * 4)); +} + +static void config_pin_as_output(int32_t n) +{ + _GPIO_port_reg[_GPIO_LIST[n].port]->config[_GPIO_LIST[n].pin / 8] &= + ~(0b1110 << (_GPIO_LIST[n].pin % 8 * 4)); +} + + + + int32_t rtapi_app_main(void) { int32_t mem_fd; @@ -171,7 +188,8 @@ int32_t rtapi_app_main(void) comp_id = hal_init("hal_gpio_h3"); if (comp_id < 0) { - rtapi_print_msg(RTAPI_MSG_ERR, "hal_gpio_h3: ERROR: hal_init() failed\n"); + rtapi_print_msg(RTAPI_MSG_ERR, + "hal_gpio_h3: ERROR: hal_init() failed\n"); return -1; } @@ -179,7 +197,8 @@ int32_t rtapi_app_main(void) // open physical memory file if ( (mem_fd = open("/dev/mem", O_RDWR|O_SYNC) ) < 0 ) { - rtapi_print_msg(RTAPI_MSG_ERR, "hal_gpio_h3: ERROR: can't open /dev/mem file\n"); + rtapi_print_msg(RTAPI_MSG_ERR, + "hal_gpio_h3: ERROR: can't open /dev/mem file\n"); return -1; } @@ -189,12 +208,12 @@ int32_t rtapi_app_main(void) // make a block of phy memory visible in our user space vrt_block_addr[0] = mmap( - NULL, // Any adddress in our space - PHY_MEM_BLOCK_SIZE, // Map length - PROT_READ | PROT_WRITE, // Enable reading & writting to mapped memory - MAP_SHARED, // Shared with other processes - mem_fd, // File to map - phy_block_addr // Offset to GPIO peripheral + NULL, // Any adddress in our space + PHY_MEM_BLOCK_SIZE, // Map length + PROT_READ | PROT_WRITE, // Enable reading & writting to mapped memory + MAP_SHARED, // Shared with other processes + mem_fd, // File to map + phy_block_addr // Offset to GPIO peripheral ); // exit program if mmap is failed @@ -210,7 +229,9 @@ int32_t rtapi_app_main(void) // add correct address values to global GPIO array for ( uint32_t p = GPIO_A; p <= GPIO_I; ++p ) { - _GPIO_port_reg[p] = (struct _GPIO_PORT_REG_t *) (vrt_block_addr[0] + vrt_offset + p*0x24); + _GPIO_port_reg[p] = + (struct _GPIO_PORT_REG_t *) + (vrt_block_addr[0] + vrt_offset + p*0x24); } #if USE_GPIO_PORT_L @@ -220,12 +241,12 @@ int32_t rtapi_app_main(void) // make a block of phy memory visible in our user space vrt_block_addr[1] = mmap( - NULL, // Any adddress in our space - PHY_MEM_BLOCK_SIZE, // Map length - PROT_READ | PROT_WRITE, // Enable reading & writting to mapped memory - MAP_SHARED, // Shared with other processes - mem_fd, // File to map - phy_block_addr // Offset to GPIO peripheral + NULL, // Any adddress in our space + PHY_MEM_BLOCK_SIZE, // Map length + PROT_READ | PROT_WRITE, // Enable reading & writting to mapped memory + MAP_SHARED, // Shared with other processes + mem_fd, // File to map + phy_block_addr // Offset to GPIO peripheral ); // exit program if mmap is failed @@ -239,7 +260,9 @@ int32_t rtapi_app_main(void) vrt_offset >>= 2; // add correct address values to global GPIO array - _GPIO_port_reg[GPIO_L] = (struct _GPIO_PORT_REG_t *) (vrt_block_addr[1] + vrt_offset + 0*0x24); + _GPIO_port_reg[GPIO_L] = + (struct _GPIO_PORT_REG_t *) + (vrt_block_addr[1] + vrt_offset + 0*0x24); #endif // no need to keep phy memory file open after mmap @@ -249,7 +272,8 @@ int32_t rtapi_app_main(void) port_data = hal_malloc(GPIO_PIN_COUNT); if (port_data == 0) { - rtapi_print_msg(RTAPI_MSG_ERR, "hal_gpio_h3: ERROR: hal_malloc() failed\n"); + rtapi_print_msg(RTAPI_MSG_ERR, + "hal_gpio_h3: ERROR: hal_malloc() failed\n"); hal_exit(comp_id); return -1; } @@ -266,7 +290,8 @@ int32_t rtapi_app_main(void) if ( pin < 0 || pin >= GPIO_PIN_COUNT || !_available_pins[pin] ) { rtapi_print_msg(RTAPI_MSG_ERR, - "hal_gpio_h3: ERROR: invalid pin number %d\n", pin); + "hal_gpio_h3: ERROR: " + "invalid pin number %d\n", pin); hal_exit(comp_id); return -1; } @@ -274,7 +299,8 @@ int32_t rtapi_app_main(void) input_pins_list[input_pins_count] = pin; ++input_pins_count; - // TODO - configure OrangePi pin as input + // configure OrangePi pin as input + config_pin_as_input(pin); retval = hal_pin_bit_newf(HAL_OUT, &port_data[pin], comp_id, "hal_gpio_h3.pin-%02d-in", pin); @@ -314,7 +340,8 @@ int32_t rtapi_app_main(void) if ( input_pins_list[n] == pin ) { rtapi_print_msg(RTAPI_MSG_ERR, - "hal_gpio_h3: ERROR: output pin %d exported before as input\n", pin); + "hal_gpio_h3: ERROR: " + "output pin %d exported before as input\n", pin); break; } } @@ -325,7 +352,8 @@ int32_t rtapi_app_main(void) output_pins_list[output_pins_count] = pin; ++output_pins_count; - // TODO - configure OrangePi pin as output + // configure OrangePi pin as output + config_pin_as_output(pin); retval = hal_pin_bit_newf(HAL_IN, &port_data[pin], comp_id, "hal_gpio_h3.pin-%02d-out", pin); @@ -344,10 +372,11 @@ int32_t rtapi_app_main(void) } - retval = hal_export_funct("hal_gpio_h3.write", write_port, 0, 0, 0, comp_id); + retval = hal_export_funct("hal_gpio_h3.write", write_port, 0,0,0, comp_id); if (retval < 0) { - rtapi_print_msg(RTAPI_MSG_ERR, "hal_gpio_h3: ERROR: write funct export failed\n"); + rtapi_print_msg(RTAPI_MSG_ERR, + "hal_gpio_h3: ERROR: write funct export failed\n"); hal_exit(comp_id); return -1; } @@ -355,7 +384,8 @@ int32_t rtapi_app_main(void) retval = hal_export_funct("hal_gpio_h3.read", read_port, 0, 0, 0, comp_id); if (retval < 0) { - rtapi_print_msg(RTAPI_MSG_ERR, "hal_gpio_h3: ERROR: read funct export failed\n"); + rtapi_print_msg(RTAPI_MSG_ERR, + "hal_gpio_h3: ERROR: read funct export failed\n"); hal_exit(comp_id); return -1; } @@ -389,11 +419,15 @@ static void write_port(void *arg, long period) { if ( *(port_data[output_pins_list[n]]) ) { - // TODO - set GPIO pin + // set GPIO pin + _GPIO_port_reg[_GPIO_LIST[n].port]->data |= + (1UL << _GPIO_LIST[n].pin); } else { - // TODO - clear GPIO pin + // clear GPIO pin + _GPIO_port_reg[_GPIO_LIST[n].port]->data &= + ~(1UL << _GPIO_LIST[n].pin); } } } @@ -405,7 +439,9 @@ static void read_port(void *arg, long period) // put GPIO input pins state into the port_data array for ( n = input_pins_count; n--; ) { - // TODO - make real reading of pins state - *port_data[input_pins_list[n]] = 0; + *port_data[input_pins_list[n]] = + ((1UL << n) & _GPIO_port_reg[_GPIO_LIST[n].port]->data) ? + 1 : + 0 ; } } From 2bb5f87e6f9f9e3bb4e166d2d75e30d36e445bd3 Mon Sep 17 00:00:00 2001 From: Mikhail Vydrenko Date: Sat, 28 Oct 2017 21:52:13 +0600 Subject: [PATCH 172/516] Correct set of a 4 bits value --- src/hal/drivers/hal_gpio_h3.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/hal/drivers/hal_gpio_h3.c b/src/hal/drivers/hal_gpio_h3.c index 31412d5a95..45cebef79d 100644 --- a/src/hal/drivers/hal_gpio_h3.c +++ b/src/hal/drivers/hal_gpio_h3.c @@ -169,7 +169,9 @@ static void config_pin_as_input(int32_t n) static void config_pin_as_output(int32_t n) { _GPIO_port_reg[_GPIO_LIST[n].port]->config[_GPIO_LIST[n].pin / 8] &= - ~(0b1110 << (_GPIO_LIST[n].pin % 8 * 4)); + ~(0b1111 << (_GPIO_LIST[n].pin % 8 * 4)); + _GPIO_port_reg[_GPIO_LIST[n].port]->config[_GPIO_LIST[n].pin / 8] |= + (0b0001 << (_GPIO_LIST[n].pin % 8 * 4)); } From 76e5575b4739a1c794e7f6c8e24c0851cc469be6 Mon Sep 17 00:00:00 2001 From: Mikhail Vydrenko Date: Sat, 28 Oct 2017 22:43:24 +0600 Subject: [PATCH 173/516] Fixed compilation errors --- src/hal/drivers/hal_gpio_h3.c | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/src/hal/drivers/hal_gpio_h3.c b/src/hal/drivers/hal_gpio_h3.c index 45cebef79d..e35baca978 100644 --- a/src/hal/drivers/hal_gpio_h3.c +++ b/src/hal/drivers/hal_gpio_h3.c @@ -7,26 +7,14 @@ ********************************************************************/ #include "rtapi.h" /* RTAPI realtime OS API */ -#include "rtapi_bitops.h" #include "rtapi_app.h" /* RTAPI realtime module decls */ /* this also includes config.h */ #include "hal.h" /* HAL public API decls */ - -#include -#include #include #include -#include -#include -#include -#include - -#if !defined(TARGET_PLATFORM_ORANGEPI) - #error "This driver is for the OrangePi platform only" -#endif MODULE_AUTHOR("Mikhail Vydrenko"); MODULE_DESCRIPTION("Driver for the Orange Pi (H3 SoC) GPIO pins"); @@ -58,7 +46,7 @@ enum struct _GPIO_PORT_REG_t { uint32_t config[4]; - uint32_t data[1]; + uint32_t data; uint32_t drive[2]; uint32_t pull[2]; }; @@ -229,11 +217,11 @@ int32_t rtapi_app_main(void) vrt_offset >>= 2; // add correct address values to global GPIO array - for ( uint32_t p = GPIO_A; p <= GPIO_I; ++p ) + for ( n = GPIO_A; n <= GPIO_I; ++n ) { - _GPIO_port_reg[p] = + _GPIO_port_reg[n] = (struct _GPIO_PORT_REG_t *) - (vrt_block_addr[0] + vrt_offset + p*0x24); + (vrt_block_addr[0] + vrt_offset + n*0x24); } #if USE_GPIO_PORT_L From 0d75c2c47f45032daeb44aa20e958be8786069b9 Mon Sep 17 00:00:00 2001 From: Mikhail Vydrenko Date: Sun, 29 Oct 2017 23:01:00 +0600 Subject: [PATCH 174/516] Fixed driver initialization errors --- src/hal/drivers/hal_gpio_h3.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/hal/drivers/hal_gpio_h3.c b/src/hal/drivers/hal_gpio_h3.c index e35baca978..e102cc64bb 100644 --- a/src/hal/drivers/hal_gpio_h3.c +++ b/src/hal/drivers/hal_gpio_h3.c @@ -301,10 +301,10 @@ int32_t rtapi_app_main(void) hal_exit(comp_id); return -1; } - } - data = NULL; // after the first call, subsequent calls to - // strtok need to be on NULL + data = NULL; // after the first call, subsequent calls to + // strtok need to be on NULL + } } // configure output pins @@ -355,10 +355,10 @@ int32_t rtapi_app_main(void) return -1; } } - } - data = NULL; // after the first call, subsequent calls to - // strtok need to be on NULL + data = NULL; // after the first call, subsequent calls to + // strtok need to be on NULL + } } From bca18872e28e8a6648e125d1d4aa76a17c679885 Mon Sep 17 00:00:00 2001 From: Mikhail Vydrenko Date: Mon, 30 Oct 2017 22:19:47 +0600 Subject: [PATCH 175/516] Fixed runtime errors --- src/hal/drivers/hal_gpio_h3.c | 46 ++++++++++++++++++++++++----------- 1 file changed, 32 insertions(+), 14 deletions(-) diff --git a/src/hal/drivers/hal_gpio_h3.c b/src/hal/drivers/hal_gpio_h3.c index e102cc64bb..6efe2b0c0d 100644 --- a/src/hal/drivers/hal_gpio_h3.c +++ b/src/hal/drivers/hal_gpio_h3.c @@ -148,13 +148,13 @@ static void read_port(void *arg, long period); -static void config_pin_as_input(int32_t n) +static void config_pin_as_input(uint8_t n) { _GPIO_port_reg[_GPIO_LIST[n].port]->config[_GPIO_LIST[n].pin / 8] &= ~(0b1111 << (_GPIO_LIST[n].pin % 8 * 4)); } -static void config_pin_as_output(int32_t n) +static void config_pin_as_output(uint8_t n) { _GPIO_port_reg[_GPIO_LIST[n].port]->config[_GPIO_LIST[n].pin / 8] &= ~(0b1111 << (_GPIO_LIST[n].pin % 8 * 4)); @@ -172,7 +172,7 @@ int32_t rtapi_app_main(void) off_t phy_block_addr = 0; int32_t n, retval; int8_t *data, *token; - int32_t pin; + uint8_t pin; comp_id = hal_init("hal_gpio_h3"); @@ -275,7 +275,7 @@ int32_t rtapi_app_main(void) while ((token = strtok(data, ",")) != NULL) { - pin = strtol(token, NULL, 10); + pin = (uint8_t) strtol(token, NULL, 10); if ( pin < 0 || pin >= GPIO_PIN_COUNT || !_available_pins[pin] ) { @@ -314,7 +314,7 @@ int32_t rtapi_app_main(void) while ((token = strtok(data, ",")) != NULL) { - pin = strtol(token, NULL, 10); + pin = (uint8_t) strtol(token, NULL, 10); if ( pin < 0 || pin >= GPIO_PIN_COUNT || !_available_pins[pin] ) { @@ -400,6 +400,11 @@ void rtapi_app_exit(void) +#define pd_pin output_pins_list[n] // port_data pin ID +#define g_pin _GPIO_LIST[pd_pin].pin // GPIO pin ID +#define g_prt _GPIO_LIST[pd_pin].port // GPIO port ID +#define g_prt_data _GPIO_port_reg[g_prt]->data // GPIO port data value + static void write_port(void *arg, long period) { static int8_t n = 0; @@ -407,21 +412,32 @@ static void write_port(void *arg, long period) // set GPIO output pins state from the port_data array for ( n = output_pins_count; n--; ) { - if ( *(port_data[output_pins_list[n]]) ) + if ( *(port_data[pd_pin]) ) { // set GPIO pin - _GPIO_port_reg[_GPIO_LIST[n].port]->data |= - (1UL << _GPIO_LIST[n].pin); + g_prt_data |= (1 << g_pin); } else { // clear GPIO pin - _GPIO_port_reg[_GPIO_LIST[n].port]->data &= - ~(1UL << _GPIO_LIST[n].pin); + g_prt_data &= ~(1 << g_pin); } } } +#undef pd_pin +#undef g_pin +#undef g_prt +#undef g_prt_data + + + + +#define pd_pin input_pins_list[n] +#define g_pin _GPIO_LIST[pd_pin].pin +#define g_prt _GPIO_LIST[pd_pin].port +#define g_prt_data _GPIO_port_reg[g_prt]->data + static void read_port(void *arg, long period) { static int8_t n = 0; @@ -429,9 +445,11 @@ static void read_port(void *arg, long period) // put GPIO input pins state into the port_data array for ( n = input_pins_count; n--; ) { - *port_data[input_pins_list[n]] = - ((1UL << n) & _GPIO_port_reg[_GPIO_LIST[n].port]->data) ? - 1 : - 0 ; + *port_data[pd_pin] = (1 << g_pin) & g_prt_data ? 1 : 0; } } + +#undef pd_pin +#undef g_pin +#undef g_prt +#undef g_prt_data From bc44ff17ad0bff0296d6c2c3236f708ffdda5bc8 Mon Sep 17 00:00:00 2001 From: Mikhail Vydrenko Date: Thu, 2 Nov 2017 10:34:43 +0600 Subject: [PATCH 176/516] Added the comp_name var for log messages --- src/hal/drivers/hal_gpio_h3.c | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/src/hal/drivers/hal_gpio_h3.c b/src/hal/drivers/hal_gpio_h3.c index 6efe2b0c0d..69dbd5f322 100644 --- a/src/hal/drivers/hal_gpio_h3.c +++ b/src/hal/drivers/hal_gpio_h3.c @@ -60,6 +60,8 @@ struct _GPIO_LIST_t +static const uint8_t * comp_name = "hal_gpio_h3"; + static struct _GPIO_PORT_REG_t * _GPIO_port_reg[GPIO_PORT_COUNT] = {0}; static const struct _GPIO_LIST_t _GPIO_LIST[GPIO_PIN_COUNT] = @@ -179,7 +181,7 @@ int32_t rtapi_app_main(void) if (comp_id < 0) { rtapi_print_msg(RTAPI_MSG_ERR, - "hal_gpio_h3: ERROR: hal_init() failed\n"); + "%s: ERROR: hal_init() failed\n", comp_name); return -1; } @@ -188,7 +190,7 @@ int32_t rtapi_app_main(void) if ( (mem_fd = open("/dev/mem", O_RDWR|O_SYNC) ) < 0 ) { rtapi_print_msg(RTAPI_MSG_ERR, - "hal_gpio_h3: ERROR: can't open /dev/mem file\n"); + "%s: ERROR: can't open /dev/mem file\n", comp_name); return -1; } @@ -209,7 +211,7 @@ int32_t rtapi_app_main(void) // exit program if mmap is failed if (vrt_block_addr[0] == MAP_FAILED) { - rtapi_print_msg(RTAPI_MSG_ERR, "hal_gpio_h3: ERROR: mmap() failed\n"); + rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: mmap() failed\n", comp_name); return -1; } @@ -242,7 +244,7 @@ int32_t rtapi_app_main(void) // exit program if mmap is failed if (vrt_block_addr[1] == MAP_FAILED) { - rtapi_print_msg(RTAPI_MSG_ERR, "hal_gpio_h3: ERROR: mmap() failed\n"); + rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: mmap() failed\n", comp_name); return -1; } @@ -263,7 +265,7 @@ int32_t rtapi_app_main(void) if (port_data == 0) { rtapi_print_msg(RTAPI_MSG_ERR, - "hal_gpio_h3: ERROR: hal_malloc() failed\n"); + "%s: ERROR: hal_malloc() failed\n", comp_name); hal_exit(comp_id); return -1; } @@ -280,8 +282,8 @@ int32_t rtapi_app_main(void) if ( pin < 0 || pin >= GPIO_PIN_COUNT || !_available_pins[pin] ) { rtapi_print_msg(RTAPI_MSG_ERR, - "hal_gpio_h3: ERROR: " - "invalid pin number %d\n", pin); + "%s: ERROR: " + "invalid pin number %d\n", comp_name, pin); hal_exit(comp_id); return -1; } @@ -297,7 +299,7 @@ int32_t rtapi_app_main(void) if (retval < 0) { rtapi_print_msg(RTAPI_MSG_ERR, - "hal_gpio_h3: ERROR: pin %d export failed\n", pin); + "%s: ERROR: pin %d export failed\n", comp_name, pin); hal_exit(comp_id); return -1; } @@ -319,7 +321,7 @@ int32_t rtapi_app_main(void) if ( pin < 0 || pin >= GPIO_PIN_COUNT || !_available_pins[pin] ) { rtapi_print_msg(RTAPI_MSG_ERR, - "hal_gpio_h3: ERROR: invalid pin number %d\n", pin); + "%s: ERROR: invalid pin number %d\n", comp_name, pin); hal_exit(comp_id); return -1; } @@ -330,8 +332,9 @@ int32_t rtapi_app_main(void) if ( input_pins_list[n] == pin ) { rtapi_print_msg(RTAPI_MSG_ERR, - "hal_gpio_h3: ERROR: " - "output pin %d exported before as input\n", pin); + "%s: ERROR: " + "output pin %d exported before as input\n", + comp_name, pin); break; } } @@ -350,7 +353,7 @@ int32_t rtapi_app_main(void) if (retval < 0) { rtapi_print_msg(RTAPI_MSG_ERR, - "hal_gpio_h3: ERROR: pin %d export failed\n", pin); + "%s: ERROR: pin %d export failed\n", comp_name, pin); hal_exit(comp_id); return -1; } @@ -366,7 +369,7 @@ int32_t rtapi_app_main(void) if (retval < 0) { rtapi_print_msg(RTAPI_MSG_ERR, - "hal_gpio_h3: ERROR: write funct export failed\n"); + "%s: ERROR: write funct export failed\n", comp_name); hal_exit(comp_id); return -1; } @@ -375,12 +378,12 @@ int32_t rtapi_app_main(void) if (retval < 0) { rtapi_print_msg(RTAPI_MSG_ERR, - "hal_gpio_h3: ERROR: read funct export failed\n"); + "%s: ERROR: read funct export failed\n", comp_name); hal_exit(comp_id); return -1; } - rtapi_print_msg(RTAPI_MSG_INFO, "hal_gpio_h3: installed driver\n"); + rtapi_print_msg(RTAPI_MSG_INFO, "%s: installed driver\n", comp_name); hal_ready(comp_id); return 0; From 982859c190a0c7f7f67c92875d2a6fae11dd7f98 Mon Sep 17 00:00:00 2001 From: Mikhail Vydrenko Date: Thu, 2 Nov 2017 15:22:17 +0600 Subject: [PATCH 177/516] Added pins inverting functionality --- src/hal/drivers/hal_gpio_h3.c | 89 ++++++++++++++++++++++++++--------- 1 file changed, 67 insertions(+), 22 deletions(-) diff --git a/src/hal/drivers/hal_gpio_h3.c b/src/hal/drivers/hal_gpio_h3.c index 69dbd5f322..a3306196a4 100644 --- a/src/hal/drivers/hal_gpio_h3.c +++ b/src/hal/drivers/hal_gpio_h3.c @@ -128,7 +128,9 @@ static const uint8_t _available_pins[GPIO_PIN_COUNT] = static int32_t comp_id; // component ID -hal_bit_t **port_data; +hal_bit_t **port_data; // port data pins states +hal_bit_t **port_data_inv; // port data inverted pins states +hal_bit_t *port_param_inv; // port params for the pins invert states static uint8_t input_pins_list[GPIO_PIN_COUNT] = {0}; static uint8_t input_pins_count = 0; @@ -175,6 +177,7 @@ int32_t rtapi_app_main(void) int32_t n, retval; int8_t *data, *token; uint8_t pin; + int8_t name[HAL_NAME_LEN + 1]; comp_id = hal_init("hal_gpio_h3"); @@ -261,8 +264,11 @@ int32_t rtapi_app_main(void) close(mem_fd); - port_data = hal_malloc(GPIO_PIN_COUNT); - if (port_data == 0) + // allocate some space for the port data arrays (normal & inverted) + port_data = hal_malloc(GPIO_PIN_COUNT); + port_data_inv = hal_malloc(GPIO_PIN_COUNT); + port_param_inv = hal_malloc(GPIO_PIN_COUNT); + if (port_data == 0 || port_data_inv == 0 || port_param_inv == 0) { rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: hal_malloc() failed\n", comp_name); @@ -282,8 +288,7 @@ int32_t rtapi_app_main(void) if ( pin < 0 || pin >= GPIO_PIN_COUNT || !_available_pins[pin] ) { rtapi_print_msg(RTAPI_MSG_ERR, - "%s: ERROR: " - "invalid pin number %d\n", comp_name, pin); + "%s: ERROR: invalid pin number %d\n", comp_name, pin); hal_exit(comp_id); return -1; } @@ -294,12 +299,25 @@ int32_t rtapi_app_main(void) // configure OrangePi pin as input config_pin_as_input(pin); - retval = hal_pin_bit_newf(HAL_OUT, &port_data[pin], comp_id, - "hal_gpio_h3.pin-%02d-in", pin); + // normal pin function + retval = hal_pin_bit_newf(HAL_OUT, &port_data[pin], + comp_id, "%s.pin-%02d-in", comp_name, pin); + if (retval < 0) + { + rtapi_print_msg(RTAPI_MSG_ERR, + "%s: ERROR: input pin %d export failed\n", comp_name, pin); + hal_exit(comp_id); + return -1; + } + + // inverted pin function + retval = hal_pin_bit_newf(HAL_OUT, &port_data_inv[pin], + comp_id, "%s.pin-%02d-in-not", comp_name, pin); if (retval < 0) { rtapi_print_msg(RTAPI_MSG_ERR, - "%s: ERROR: pin %d export failed\n", comp_name, pin); + "%s: ERROR: inverted input pin %d export failed\n", + comp_name, pin); hal_exit(comp_id); return -1; } @@ -332,8 +350,7 @@ int32_t rtapi_app_main(void) if ( input_pins_list[n] == pin ) { rtapi_print_msg(RTAPI_MSG_ERR, - "%s: ERROR: " - "output pin %d exported before as input\n", + "%s: ERROR: output pin %d exported before as input\n", comp_name, pin); break; } @@ -348,12 +365,26 @@ int32_t rtapi_app_main(void) // configure OrangePi pin as output config_pin_as_output(pin); - retval = hal_pin_bit_newf(HAL_IN, &port_data[pin], comp_id, - "hal_gpio_h3.pin-%02d-out", pin); + // normal pin function + retval = hal_pin_bit_newf(HAL_IN, &port_data[pin], + comp_id, "%s.pin-%02d-out", comp_name, pin); if (retval < 0) { rtapi_print_msg(RTAPI_MSG_ERR, - "%s: ERROR: pin %d export failed\n", comp_name, pin); + "%s: ERROR: output pin %d export failed\n", + comp_name, pin); + hal_exit(comp_id); + return -1; + } + + // inverted pin parameter + retval = hal_param_bit_newf(HAL_RW, &port_param_inv[pin], + comp_id, "%s.pin-%02d-out-invert", comp_name, pin); + if (retval < 0) + { + rtapi_print_msg(RTAPI_MSG_ERR, + "%s: ERROR: output pin %d invert param export failed\n", + comp_name, pin); hal_exit(comp_id); return -1; } @@ -364,8 +395,9 @@ int32_t rtapi_app_main(void) } } - - retval = hal_export_funct("hal_gpio_h3.write", write_port, 0,0,0, comp_id); + // export port WRITE function + rtapi_snprintf(name, sizeof(name), "%s.write", comp_name); + retval = hal_export_funct(name, write_port, 0, 0, 0, comp_id); if (retval < 0) { rtapi_print_msg(RTAPI_MSG_ERR, @@ -374,7 +406,9 @@ int32_t rtapi_app_main(void) return -1; } - retval = hal_export_funct("hal_gpio_h3.read", read_port, 0, 0, 0, comp_id); + // export port READ function + rtapi_snprintf(name, sizeof(name), "%s.read", comp_name); + retval = hal_export_funct(name, read_port, 0, 0, 0, comp_id); if (retval < 0) { rtapi_print_msg(RTAPI_MSG_ERR, @@ -383,9 +417,11 @@ int32_t rtapi_app_main(void) return -1; } + // driver is ready to use rtapi_print_msg(RTAPI_MSG_INFO, "%s: installed driver\n", comp_name); hal_ready(comp_id); + // no errors return 0; } @@ -415,15 +451,15 @@ static void write_port(void *arg, long period) // set GPIO output pins state from the port_data array for ( n = output_pins_count; n--; ) { - if ( *(port_data[pd_pin]) ) + if ( *(port_data[pd_pin]) ^ port_param_inv[pd_pin] ) { - // set GPIO pin - g_prt_data |= (1 << g_pin); + // clear GPIO pin + g_prt_data &= ~(1 << g_pin); } else { - // clear GPIO pin - g_prt_data &= ~(1 << g_pin); + // set GPIO pin + g_prt_data |= (1 << g_pin); } } } @@ -448,7 +484,16 @@ static void read_port(void *arg, long period) // put GPIO input pins state into the port_data array for ( n = input_pins_count; n--; ) { - *port_data[pd_pin] = (1 << g_pin) & g_prt_data ? 1 : 0; + if ( ((1 << g_pin) & g_prt_data) ) + { + *port_data[pd_pin] = 1; + *port_data_inv[pd_pin] = 0; + } + else + { + *port_data[pd_pin] = 0; + *port_data_inv[pd_pin] = 1; + } } } From 8800a7f2cd4aec84fecffff2722eda36a864272f Mon Sep 17 00:00:00 2001 From: Devin Hughes Date: Thu, 2 Nov 2017 08:06:54 -0400 Subject: [PATCH 178/516] Allow RT threads to specify nowait --- src/hal/lib/hal_thread.c | 5 ++++- src/rtapi/rtapi_task.c | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/hal/lib/hal_thread.c b/src/hal/lib/hal_thread.c index 0c60d03996..2f0166ade7 100644 --- a/src/hal/lib/hal_thread.c +++ b/src/hal/lib/hal_thread.c @@ -117,7 +117,10 @@ static void thread_task(void *arg) // support actual period measurement (get the starting value right) fa.last_start_time = rtapi_get_time(); - rtapi_wait(thread->flags); + // If a nowait thread is idle, this becomes a tight loop that + // effectively spinlocks a single core processor. Allow the thread + // to sleep and give other threads some cpu time. + rtapi_wait(thread->flags & ~TF_NOWAIT); continue; } diff --git a/src/rtapi/rtapi_task.c b/src/rtapi/rtapi_task.c index 6cd0e80319..96ef058ffe 100644 --- a/src/rtapi/rtapi_task.c +++ b/src/rtapi/rtapi_task.c @@ -165,12 +165,14 @@ int _rtapi_task_new(const rtapi_task_args_t *args) { return -EINVAL; } + /* Allow RT threads to use nowait. Required for external timing. if ((args->flags & (TF_NOWAIT|TF_NONRT)) == TF_NOWAIT) { rtapi_print_msg(RTAPI_MSG_ERR,"task '%s' : nowait flag invalid for RT thread\n", args->name); rtapi_mutex_give(&(rtapi_data->mutex)); return -EINVAL; } + */ // task slot found; reserve it and release lock rtapi_print_msg(RTAPI_MSG_DBG, From a7f568bdc1f3b9a71c04cd1f6df30d98a2c3e073 Mon Sep 17 00:00:00 2001 From: Devin Hughes Date: Sun, 4 Dec 2016 17:13:06 -0500 Subject: [PATCH 179/516] Change motion outputs to use the queue structure and allow cutter compensation --- src/emc/rs274ngc/interp_convert.cc | 28 +++----- src/emc/rs274ngc/interp_queue.cc | 104 +++++++++++++++++++++++++++++ src/emc/rs274ngc/interp_queue.hh | 8 +++ 3 files changed, 120 insertions(+), 20 deletions(-) diff --git a/src/emc/rs274ngc/interp_convert.cc b/src/emc/rs274ngc/interp_convert.cc index f160b39932..18afcc1734 100644 --- a/src/emc/rs274ngc/interp_convert.cc +++ b/src/emc/rs274ngc/interp_convert.cc @@ -3066,25 +3066,17 @@ int Interp::convert_m(block_pointer block, //!< pointer to a block of RS27 return convert_remapped_code(block, settings, STEP_M_5, 'm', block->m_modes[5]); } else if ((block->m_modes[5] == 62) && ONCE_M(5)) { - CHKS((settings->cutter_comp_side), - (_("Cannot set motion output with cutter radius compensation on"))); // XXX CHKS((!block->p_flag), _("No valid P word with M62")); - SET_MOTION_OUTPUT_BIT(round_to_int(block->p_number)); + enqueue_SET_MOTION_OUTPUT_BIT(round_to_int(block->p_number)); } else if ((block->m_modes[5] == 63) && ONCE_M(5)) { - CHKS((settings->cutter_comp_side), - (_("Cannot set motion digital output with cutter radius compensation on"))); // XXX CHKS((!block->p_flag), _("No valid P word with M63")); - CLEAR_MOTION_OUTPUT_BIT(round_to_int(block->p_number)); + enqueue_CLEAR_MOTION_OUTPUT_BIT(round_to_int(block->p_number)); } else if ((block->m_modes[5] == 64) && ONCE_M(5)){ - CHKS((settings->cutter_comp_side), - (_("Cannot set auxiliary digital output with cutter radius compensation on"))); // XXX CHKS((!block->p_flag), _("No valid P word with M64")); - SET_AUX_OUTPUT_BIT(round_to_int(block->p_number)); + enqueue_SET_AUX_OUTPUT_BIT(round_to_int(block->p_number)); } else if ((block->m_modes[5] == 65) && ONCE_M(5)) { - CHKS((settings->cutter_comp_side), - (_("Cannot set auxiliary digital output with cutter radius compensation on"))); // XXX CHKS((!block->p_flag), _("No valid P word with M65")); - CLEAR_AUX_OUTPUT_BIT(round_to_int(block->p_number)); + enqueue_CLEAR_AUX_OUTPUT_BIT(round_to_int(block->p_number)); } else if ((block->m_modes[5] == 66) && ONCE_M(5)){ //P-word = digital channel @@ -3157,17 +3149,13 @@ int Interp::convert_m(block_pointer block, //!< pointer to a block of RS27 //E-word = analog channel //Q-word = analog value - CHKS((settings->cutter_comp_side), - (_("Cannot set motion analog output with cutter radius compensation on"))); // XXX - CHKS((!block->e_flag) || (round_to_int(block->e_number) < 0), (_("Invalid analog index with M67"))); - SET_MOTION_OUTPUT_VALUE(round_to_int(block->e_number), block->q_number); + CHKS((!block->e_flag) || (round_to_int(block->e_number) < 0), (_("Invalid analog index with M67"))); + enqueue_MOTION_OUTPUT_VALUE(round_to_int(block->e_number), block->q_number); } else if ((block->m_modes[5] == 68) && ONCE_M(5)) { //E-word = analog channel //Q-word = analog value - CHKS((settings->cutter_comp_side), - (_("Cannot set auxiliary analog output with cutter radius compensation on"))); // XXX - CHKS((!block->e_flag) || (round_to_int(block->e_number) < 0), (_("Invalid analog index with M68"))); - SET_AUX_OUTPUT_VALUE(round_to_int(block->e_number), block->q_number); + CHKS((!block->e_flag) || (round_to_int(block->e_number) < 0), (_("Invalid analog index with M68"))); + enqueue_AUX_OUTPUT_VALUE(round_to_int(block->e_number), block->q_number); } if ((block->m_modes[6] != -1) && ONCE_M(6)){ diff --git a/src/emc/rs274ngc/interp_queue.cc b/src/emc/rs274ngc/interp_queue.cc index a66b22c03b..c552920884 100644 --- a/src/emc/rs274ngc/interp_queue.cc +++ b/src/emc/rs274ngc/interp_queue.cc @@ -240,6 +240,86 @@ void enqueue_SET_SPINDLE_SPEED(double speed) { qc().push_back(q); } +void enqueue_SET_MOTION_OUTPUT_BIT(int index) { + if(qc().empty()) { + if(debug_qc) printf("immediate motion output on\n"); + SET_MOTION_OUTPUT_BIT(index); + return; + } + queued_canon q; + q.type = QSET_MOTION_OUTPUT; + q.data.mcommand.p_number = index; + if(debug_qc) printf("enqueue motion output on\n"); + qc().push_back(q); +} + +void enqueue_CLEAR_MOTION_OUTPUT_BIT(int index) { + if(qc().empty()) { + if(debug_qc) printf("immediate motion output off\n"); + CLEAR_MOTION_OUTPUT_BIT(index); + return; + } + queued_canon q; + q.type = QCLEAR_MOTION_OUTPUT; + q.data.mcommand.p_number = index; + if(debug_qc) printf("enqueue motion output off\n"); + qc().push_back(q); +} + +void enqueue_SET_AUX_OUTPUT_BIT(int index) { + if(qc().empty()) { + if(debug_qc) printf("immediate aux output on\n"); + SET_AUX_OUTPUT_BIT(index); + return; + } + queued_canon q; + q.type = QSET_AUX_OUTPUT; + q.data.mcommand.p_number = index; + if(debug_qc) printf("enqueue aux output on\n"); + qc().push_back(q); +} + +void enqueue_CLEAR_AUX_OUTPUT_BIT(int index) { + if(qc().empty()) { + if(debug_qc) printf("immediate aux output off\n"); + CLEAR_AUX_OUTPUT_BIT(index); + return; + } + queued_canon q; + q.type = QCLEAR_AUX_OUTPUT; + q.data.mcommand.p_number = index; + if(debug_qc) printf("enqueue aux output off\n"); + qc().push_back(q); +} + +void enqueue_MOTION_OUTPUT_VALUE(int index, double value) { + if(qc().empty()) { + if(debug_qc) printf("immediate motion output value change\n"); + SET_MOTION_OUTPUT_VALUE(index, value); + return; + } + queued_canon q; + q.type = QMOTION_OUTPUT_VALUE; + q.data.mcommand.p_number = index; + q.data.mcommand.q_number = value; + if(debug_qc) printf("enqueue motion output value change\n"); + qc().push_back(q); +} + +void enqueue_AUX_OUTPUT_VALUE(int index, double value) { + if(qc().empty()) { + if(debug_qc) printf("immediate aux output value change\n"); + SET_AUX_OUTPUT_VALUE(index, value); + return; + } + queued_canon q; + q.type = QAUX_OUTPUT_VALUE; + q.data.mcommand.p_number = index; + q.data.mcommand.q_number = value; + if(debug_qc) printf("enqueue aux output value change\n"); + qc().push_back(q); +} + void enqueue_COMMENT(const char *c) { if(qc().empty()) { if(debug_qc) printf("immediate comment \"%s\"\n", c); @@ -522,6 +602,30 @@ void dequeue_canons(setup_pointer settings) { if(debug_qc) printf("issuing set spindle speed\n"); SET_SPINDLE_SPEED(q.data.set_spindle_speed.speed); break; + case QSET_MOTION_OUTPUT: + if(debug_qc) printf("issuing set motion output\n"); + SET_MOTION_OUTPUT_BIT((int)q.data.mcommand.p_number); + break; + case QCLEAR_MOTION_OUTPUT: + if(debug_qc) printf("issuing clear motion output\n"); + CLEAR_MOTION_OUTPUT_BIT((int)q.data.mcommand.p_number); + break; + case QSET_AUX_OUTPUT: + if(debug_qc) printf("issuing set aux output\n"); + SET_AUX_OUTPUT_BIT((int)q.data.mcommand.p_number); + break; + case QCLEAR_AUX_OUTPUT: + if(debug_qc) printf("issuing clear aux output\n"); + CLEAR_AUX_OUTPUT_BIT((int)q.data.mcommand.p_number); + break; + case QMOTION_OUTPUT_VALUE: + if(debug_qc) printf("issuing set motion output value\n"); + SET_MOTION_OUTPUT_VALUE((int)q.data.mcommand.p_number, q.data.mcommand.q_number); + break; + case QAUX_OUTPUT_VALUE: + if(debug_qc) printf("issuing set aux output value\n"); + SET_AUX_OUTPUT_VALUE((int)q.data.mcommand.p_number, q.data.mcommand.q_number); + break; case QCOMMENT: if(debug_qc) printf("issuing comment\n"); COMMENT(q.data.comment.comment); diff --git a/src/emc/rs274ngc/interp_queue.hh b/src/emc/rs274ngc/interp_queue.hh index d734757050..dbd6c409a9 100644 --- a/src/emc/rs274ngc/interp_queue.hh +++ b/src/emc/rs274ngc/interp_queue.hh @@ -14,6 +14,8 @@ enum queued_canon_type {QSTRAIGHT_TRAVERSE, QSTRAIGHT_FEED, QARC_FEED, QSET_FEED QMIST_ON, QMIST_OFF, QFLOOD_ON, QFLOOD_OFF, QSTART_SPINDLE_CLOCKWISE, QSTART_SPINDLE_COUNTERCLOCKWISE, QSTOP_SPINDLE_TURNING, QSET_SPINDLE_MODE, QSET_SPINDLE_SPEED, + QSET_MOTION_OUTPUT,QCLEAR_MOTION_OUTPUT,QSET_AUX_OUTPUT,QCLEAR_AUX_OUTPUT, + QMOTION_OUTPUT_VALUE,QAUX_OUTPUT_VALUE, QCOMMENT, QM_USER_COMMAND,QSTART_CHANGE, QORIENT_SPINDLE, QWAIT_ORIENT_SPINDLE_COMPLETE}; @@ -108,6 +110,12 @@ void enqueue_START_SPINDLE_COUNTERCLOCKWISE(void); void enqueue_STOP_SPINDLE_TURNING(void); void enqueue_SET_SPINDLE_MODE(double mode); void enqueue_SET_SPINDLE_SPEED(double speed); +void enqueue_SET_MOTION_OUTPUT_BIT(int index); +void enqueue_CLEAR_MOTION_OUTPUT_BIT(int index); +void enqueue_SET_AUX_OUTPUT_BIT(int index); +void enqueue_CLEAR_AUX_OUTPUT_BIT(int index); +void enqueue_MOTION_OUTPUT_VALUE(int index, double value); +void enqueue_AUX_OUTPUT_VALUE(int index, double value); void enqueue_COMMENT(const char *c); int enqueue_STRAIGHT_FEED(setup_pointer settings, int l, double dx, double dy, double dz, From ac46eb905a4e989c2d5fa34c92f8af20cde6f0f0 Mon Sep 17 00:00:00 2001 From: Mikhail Vydrenko Date: Fri, 3 Nov 2017 14:35:10 +0600 Subject: [PATCH 180/516] Added reset_port function (not optimized) --- src/hal/drivers/hal_gpio_h3.c | 102 ++++++++++++++++++++++++++++++++-- 1 file changed, 98 insertions(+), 4 deletions(-) diff --git a/src/hal/drivers/hal_gpio_h3.c b/src/hal/drivers/hal_gpio_h3.c index a3306196a4..af81f2e665 100644 --- a/src/hal/drivers/hal_gpio_h3.c +++ b/src/hal/drivers/hal_gpio_h3.c @@ -131,6 +131,10 @@ static int32_t comp_id; // component ID hal_bit_t **port_data; // port data pins states hal_bit_t **port_data_inv; // port data inverted pins states hal_bit_t *port_param_inv; // port params for the pins invert states +hal_bit_t *port_param_reset; // port params for the pins reset states +hal_u32_t *port_reset_time; + +long long port_write_time = 0; static uint8_t input_pins_list[GPIO_PIN_COUNT] = {0}; static uint8_t input_pins_count = 0; @@ -142,11 +146,14 @@ static uint8_t output_pins_count = 0; static int8_t *output_pins; RTAPI_MP_STRING(output_pins, "output pins, comma separated"); +static unsigned long ns2tsc_factor; +#define ns2tsc(x) (((x) * (unsigned long long)ns2tsc_factor) >> 12) static void write_port(void *arg, long period); +static void reset_port(void *arg, long period); static void read_port(void *arg, long period); @@ -180,6 +187,15 @@ int32_t rtapi_app_main(void) int8_t name[HAL_NAME_LEN + 1]; +#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,0) &&0//FIXME + // this calculation fits in a 32-bit unsigned + // as long as CPUs are under about 6GHz + ns2tsc_factor = (cpu_khz << 6) / 15625ul; +#else + ns2tsc_factor = 1ll<<12; +#endif + + comp_id = hal_init("hal_gpio_h3"); if (comp_id < 0) { @@ -265,10 +281,14 @@ int32_t rtapi_app_main(void) // allocate some space for the port data arrays (normal & inverted) - port_data = hal_malloc(GPIO_PIN_COUNT); - port_data_inv = hal_malloc(GPIO_PIN_COUNT); - port_param_inv = hal_malloc(GPIO_PIN_COUNT); - if (port_data == 0 || port_data_inv == 0 || port_param_inv == 0) + port_data = hal_malloc(GPIO_PIN_COUNT); + port_data_inv = hal_malloc(GPIO_PIN_COUNT); + port_param_inv = hal_malloc(GPIO_PIN_COUNT); + port_param_reset = hal_malloc(GPIO_PIN_COUNT); + port_reset_time = hal_malloc(1); + if ( port_data == 0 || port_data_inv == 0 || + port_param_inv == 0 || port_param_reset == 0 || + port_reset_time == 0 ) { rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: hal_malloc() failed\n", comp_name); @@ -388,6 +408,18 @@ int32_t rtapi_app_main(void) hal_exit(comp_id); return -1; } + + // reset pin parameter + retval = hal_param_bit_newf(HAL_RW, &port_param_reset[pin], + comp_id, "%s.pin-%02d-out-reset", comp_name, pin); + if (retval < 0) + { + rtapi_print_msg(RTAPI_MSG_ERR, + "%s: ERROR: output pin %d reset param export failed\n", + comp_name, pin); + hal_exit(comp_id); + return -1; + } } data = NULL; // after the first call, subsequent calls to @@ -395,6 +427,17 @@ int32_t rtapi_app_main(void) } } + // export port reset time parameter + retval = hal_param_u32_newf(HAL_RW, port_reset_time, + comp_id, "%s.reset-time", comp_name); + if (retval < 0) + { + rtapi_print_msg(RTAPI_MSG_ERR, + "%s: ERROR: reset-time param export failed\n", comp_name, pin); + hal_exit(comp_id); + return -1; + } + // export port WRITE function rtapi_snprintf(name, sizeof(name), "%s.write", comp_name); retval = hal_export_funct(name, write_port, 0, 0, 0, comp_id); @@ -417,6 +460,17 @@ int32_t rtapi_app_main(void) return -1; } + // export port RESET function + rtapi_snprintf(name, sizeof(name), "%s.reset", comp_name); + retval = hal_export_funct(name, reset_port, 0, 0, 0, comp_id); + if (retval < 0) + { + rtapi_print_msg(RTAPI_MSG_ERR, + "%s: ERROR: reset funct export failed\n", comp_name); + hal_exit(comp_id); + return -1; + } + // driver is ready to use rtapi_print_msg(RTAPI_MSG_INFO, "%s: installed driver\n", comp_name); hal_ready(comp_id); @@ -462,6 +516,46 @@ static void write_port(void *arg, long period) g_prt_data |= (1 << g_pin); } } + + // save write time for the reset function + port_write_time = rtapi_get_clocks(); +} + +static void reset_port(void *arg, long period) +{ + static int8_t n = 0; + static long long deadline, reset_time_tsc; + + // adjust reset time + if(*port_reset_time > period/4) *port_reset_time = period/4; + reset_time_tsc = ns2tsc(*port_reset_time); + + // set deadline time and make a busy waiting + deadline = port_write_time + reset_time_tsc; + while(rtapi_get_clocks() < deadline) {} + + // reset pin states + for ( n = output_pins_count; n--; ) + { + // do nothing if pin reset param = 0 or pin already reset + if ( !port_param_reset[pd_pin] || !(*(port_data[pd_pin])) ) continue; + + // reset pin + if ( port_param_inv[pd_pin] ) + { + // clear pin state + *port_data[pd_pin] = 0; + // clear GPIO pin + g_prt_data &= ~(1 << g_pin); + } + else + { + // set pin state + *port_data[pd_pin] = 1; + // set GPIO pin + g_prt_data |= (1 << g_pin); + } + } } #undef pd_pin From 8d96d782348ac96cf61f837d8a6b58a051e3a522 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Tue, 7 Nov 2017 14:56:59 +0100 Subject: [PATCH 181/516] mkwrapper: fix order of increments --- src/machinetalk/mkwrapper/mkwrapper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/machinetalk/mkwrapper/mkwrapper.py b/src/machinetalk/mkwrapper/mkwrapper.py index ce1f489920..5373aaa8c0 100644 --- a/src/machinetalk/mkwrapper/mkwrapper.py +++ b/src/machinetalk/mkwrapper/mkwrapper.py @@ -950,7 +950,7 @@ def update_config(self, stat): value = float(self.ini.find('DISPLAY', 'MIN_ANGULAR_VELOCITY') or 0.01) modified |= self.update_config_value('min_angular_velocity', value) - value = self.ini.find('DISPLAY', 'INCREMENTS') or '1.0 0.1 0.01 0.001' + value = self.ini.find('DISPLAY', 'INCREMENTS') or '0.001 0.01 0.1 1.0' modified |= self.update_config_value('increments', value) value = self.ini.find('DISPLAY', 'GRIDS') or '' From 90db2af695bb01b55c1b2fae82436eb052d781bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Tue, 7 Nov 2017 16:58:58 +0100 Subject: [PATCH 182/516] mklauncher: fix importance file loading --- src/machinetalk/mklauncher/mklauncher.py | 3 +++ src/machinetalk/mklauncher/test_mklauncher.py | 2 ++ 2 files changed, 5 insertions(+) diff --git a/src/machinetalk/mklauncher/mklauncher.py b/src/machinetalk/mklauncher/mklauncher.py index 31e1af4852..709bf1be5a 100644 --- a/src/machinetalk/mklauncher/mklauncher.py +++ b/src/machinetalk/mklauncher/mklauncher.py @@ -41,9 +41,12 @@ def __init__(self, config_file): self._importances = {} def __setitem__(self, launcher_id, importance): + launcher_id = launcher_id.lower() self._importances[launcher_id] = importance def __getitem__(self, launcher_id): + ''' getitem is case insensitive since configparser does not use case sensitive key names ''' + launcher_id = launcher_id.lower() if launcher_id in self._importances: return self._importances[launcher_id] else: diff --git a/src/machinetalk/mklauncher/test_mklauncher.py b/src/machinetalk/mklauncher/test_mklauncher.py index df0db15eb9..b2925a8a11 100644 --- a/src/machinetalk/mklauncher/test_mklauncher.py +++ b/src/machinetalk/mklauncher/test_mklauncher.py @@ -65,6 +65,8 @@ def test_reading_launcher_importances_works(valid_importance_file): assert importances['/foo/bar/baz:myconfig'] == 10 assert importances['/foo/bar/baz:anotherconfig'] == 2 + assert importances['/foo/bar/baz:Myconfig'] == 10 + assert importances['/foo/bar/baz:AnotherConfig'] == 2 def test_writing_launcher_importances_works(tmpdir): From e0ba25aea58020c6b52a2325208058e43fcf45da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Sat, 11 Nov 2017 14:34:52 +0100 Subject: [PATCH 183/516] configs: make mkwrapper demos more clear --- .../Fabrikator-Mini-CRAMPS/README.md | 23 +++++++++++++++++++ .../BeagleBone/Fabrikator-Mini-CRAMPS/run.py | 1 + .../ARM/BeagleBone/MendelMax-CRAMPS/README.md | 23 +++++++++++++++++++ .../ARM/BeagleBone/MendelMax-CRAMPS/run.py | 1 + 4 files changed, 48 insertions(+) diff --git a/configs/ARM/BeagleBone/Fabrikator-Mini-CRAMPS/README.md b/configs/ARM/BeagleBone/Fabrikator-Mini-CRAMPS/README.md index 316f6d2d95..31bbfc6b27 100644 --- a/configs/ARM/BeagleBone/Fabrikator-Mini-CRAMPS/README.md +++ b/configs/ARM/BeagleBone/Fabrikator-Mini-CRAMPS/README.md @@ -1,3 +1,26 @@ # Fabrikator Mini CRAMPS configuration for Machinekit 3D printer configuration using Machinekits Python API for the Turnigy Fabrikator Mini. + +The configuration uses `mkwrapper` to service the [Machineface](https://github.com/qtquickvcp/Machineface) UI +from the `~/Machineface` directory. + +## Setup +To get started download the [Machineface](https://github.com/qtquickvcp/Machineface) UI to your home directory: + +```bash +cd +git clone https://github.com/qtquickvcp/Machineface.git +``` + +Then download and install the [MachinekitClient](https://github.com/qtquickvcp/QtQuickVcp#download). + +## Running + +To start this configuration either use `mklauncher` or directly start it via the `run.p`. + +```bash +./run.py +``` + +Once started connect via the MachinekitClient. diff --git a/configs/ARM/BeagleBone/Fabrikator-Mini-CRAMPS/run.py b/configs/ARM/BeagleBone/Fabrikator-Mini-CRAMPS/run.py index 7767731a26..d584e57cc7 100755 --- a/configs/ARM/BeagleBone/Fabrikator-Mini-CRAMPS/run.py +++ b/configs/ARM/BeagleBone/Fabrikator-Mini-CRAMPS/run.py @@ -13,6 +13,7 @@ try: launcher.check_installation() launcher.cleanup_session() + launcher.ensure_mklauncher() launcher.load_bbio_file('cramps2_cape.bbio') launcher.start_process("configserver -n MendelMax ~/Machineface") launcher.start_process('linuxcnc fabrikator-mini.ini') diff --git a/configs/ARM/BeagleBone/MendelMax-CRAMPS/README.md b/configs/ARM/BeagleBone/MendelMax-CRAMPS/README.md index 664ddd8853..2472ae1802 100644 --- a/configs/ARM/BeagleBone/MendelMax-CRAMPS/README.md +++ b/configs/ARM/BeagleBone/MendelMax-CRAMPS/README.md @@ -5,3 +5,26 @@ This configuration does not use the PRU pin hunting fix. If you want enable this please take a look at the Fabrikator-Mini-CRAMPS configuration. + +The configuration uses `mkwrapper` to service the [Machineface](https://github.com/qtquickvcp/Machineface) UI +from the `~/Machineface` directory. + +## Setup +To get started download the [Machineface](https://github.com/qtquickvcp/Machineface) UI to your home directory: + +```bash +cd +git clone https://github.com/qtquickvcp/Machineface.git +``` + +Then download and install the [MachinekitClient](https://github.com/qtquickvcp/QtQuickVcp#download). + +## Running + +To start this configuration either use `mklauncher` or directly start it via the `run.p`. + +```bash +./run.py +``` + +Once started connect via the MachinekitClient. diff --git a/configs/ARM/BeagleBone/MendelMax-CRAMPS/run.py b/configs/ARM/BeagleBone/MendelMax-CRAMPS/run.py index 9cf879df5c..d21e3b49cd 100755 --- a/configs/ARM/BeagleBone/MendelMax-CRAMPS/run.py +++ b/configs/ARM/BeagleBone/MendelMax-CRAMPS/run.py @@ -13,6 +13,7 @@ try: launcher.check_installation() launcher.cleanup_session() + launcher.ensure_mklauncher() launcher.load_bbio_file('cramps2_cape.bbio') launcher.start_process("configserver -n MendelMax ~/Machineface") launcher.start_process('linuxcnc CRAMPS.ini') From ea844576f2170021f29ffd6356b9fde65b4bbbaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Tue, 14 Nov 2017 19:23:05 +0100 Subject: [PATCH 184/516] Fix incorrect values on iocontrol.0.tool-prep-pocket With nonrandom toolchanger, previously this pin showed the internal array index, but it should be the P word from the tool table instead. --- src/emc/iotask/ioControl.cc | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/src/emc/iotask/ioControl.cc b/src/emc/iotask/ioControl.cc index e49f8d852d..25210c28cb 100644 --- a/src/emc/iotask/ioControl.cc +++ b/src/emc/iotask/ioControl.cc @@ -94,7 +94,9 @@ struct iocontrol_str { // the following pins are needed for toolchanging //tool-prepare hal_bit_t *tool_prepare; /* output, pin that notifies HAL it needs to prepare a tool */ - hal_s32_t *tool_prep_pocket;/* output, pin that holds the tool number to be prepared, only valid when tool-prepare=TRUE */ + hal_s32_t *tool_prep_pocket;/* output, pin that holds the P word from the tool table entry matching the tool to be prepared, + only valid when tool-prepare=TRUE */ + hal_s32_t *tool_prep_index; /* internal array index of prepped tool above */ hal_s32_t *tool_prep_number;/* output, pin that holds the tool number to be prepared, only valid when tool-prepare=TRUE */ hal_s32_t *tool_number; /* output, pin that holds the tool number currently in the spindle */ hal_bit_t *tool_prepared; /* input, pin that notifies that the tool has been prepared */ @@ -445,6 +447,18 @@ int iocontrol_hal_init(void) hal_exit(comp_id); return -1; } + + // tool-prep-index + retval = hal_pin_s32_newf(HAL_OUT, &(iocontrol_data->tool_prep_index), comp_id, + "iocontrol.%d.tool-prep-index", n); + if (retval < 0) { + rtapi_print_msg(RTAPI_MSG_ERR, + "IOCONTROL: ERROR: iocontrol %d param tool-prep-index export failed with err=%i\n", + n, retval); + hal_exit(comp_id); + return -1; + } + // tool-prep-pocket retval = hal_pin_s32_newf(HAL_OUT, &(iocontrol_data->tool_prep_pocket), comp_id, "iocontrol.%d.tool-prep-pocket", n); @@ -530,7 +544,8 @@ void hal_init_pins(void) *(iocontrol_data->lube)=0; /* lube output pin */ *(iocontrol_data->tool_prepare)=0; /* output, pin that notifies HAL it needs to prepare a tool */ *(iocontrol_data->tool_prep_number)=0; /* output, pin that holds the tool number to be prepared, only valid when tool-prepare=TRUE */ - *(iocontrol_data->tool_prep_pocket)=0; /* output, pin that holds the tool number to be prepared, only valid when tool-prepare=TRUE */ + *(iocontrol_data->tool_prep_pocket)=0; /* output, pin that holds the P word from the tool to be prepared, only valid when tool-prepare=TRUE */ + *(iocontrol_data->tool_prep_index)=0; /* output, param that holds the internal index of the tool to be prepared, for debug */ *(iocontrol_data->tool_change)=0; /* output, notifies a tool-change should happen (emc should be in the tool-change position) */ } @@ -632,7 +647,7 @@ void reload_tool_number(int toolno) { int read_tool_inputs(void) { if (*iocontrol_data->tool_prepare && *iocontrol_data->tool_prepared) { - emcioStatus.tool.pocketPrepped = *(iocontrol_data->tool_prep_pocket); //check if tool has been prepared + emcioStatus.tool.pocketPrepped = *(iocontrol_data->tool_prep_index); //check if tool has been prepared *(iocontrol_data->tool_prepare) = 0; emcioStatus.status = RCS_DONE; // we finally finished to do tool-changing, signal task with RCS_DONE return 10; //prepped finished @@ -650,6 +665,7 @@ int read_tool_inputs(void) emcioStatus.tool.pocketPrepped = -1; //reset the tool preped number, -1 to permit tool 0 to be loaded *(iocontrol_data->tool_prep_number) = 0; //likewise in HAL *(iocontrol_data->tool_prep_pocket) = 0; //likewise in HAL + *(iocontrol_data->tool_prep_index) = 0; //likewise in HAL *(iocontrol_data->tool_change) = 0; //also reset the tool change signal emcioStatus.status = RCS_DONE; // we finally finished to do tool-changing, signal task with RCS_DONE return 11; //change finished @@ -847,7 +863,8 @@ int main(int argc, char *argv[]) if(random_toolchanger && p == 0) break; /* set tool number first */ - *(iocontrol_data->tool_prep_pocket) = p; + *(iocontrol_data->tool_prep_index) = p; + *(iocontrol_data->tool_prep_pocket) = random_toolchanger? p: fms[p]; if(!random_toolchanger && p == 0) { *(iocontrol_data->tool_prep_number) = 0; } else { From 5e5bb641fc4b4131410b6095eea1559dece9c8b2 Mon Sep 17 00:00:00 2001 From: Mick Date: Sat, 18 Nov 2017 14:48:04 +0000 Subject: [PATCH 185/516] Test Debian version and disable gst audio for Stretch --- src/emc/usr_intf/gmoccapy/gmoccapy.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/emc/usr_intf/gmoccapy/gmoccapy.py b/src/emc/usr_intf/gmoccapy/gmoccapy.py index a5e81a8a71..2000bf23c6 100755 --- a/src/emc/usr_intf/gmoccapy/gmoccapy.py +++ b/src/emc/usr_intf/gmoccapy/gmoccapy.py @@ -96,9 +96,16 @@ def excepthook( exc_type, exc_obj, exc_tb ): LIBDIR = os.path.join( BASE, "lib", "python" ) sys.path.insert( 0, LIBDIR ) +global debver +with open("/etc/debian_version") as f: + debver = f.read()[0] +print debver + # as now we know the libdir path we can import our own modules from gmoccapy import widgets # a class to handle the widgets -from gmoccapy import player # a class to handle sounds +# Stretch does not have a gst module available +if debver < 9: + from gmoccapy import player # a class to handle sounds from gmoccapy import notification # this is the module we use for our error handling from gmoccapy import preferences # this handles the preferences from gmoccapy import getiniinfo # this handles the INI File reading so checking is done in that module @@ -238,7 +245,10 @@ def __init__( self ): self._init_dynamic_tabs() self._init_tooleditor() self._init_themes() - self._init_audio() + # Stretch does not have a gst module available + global debver + if debver < 9: + self._init_audio() self._init_gremlin() self._init_hide_cursor() self._init_keyboard() From cc3cad8f830e42019f4d0d7888f286312a1ce8fe Mon Sep 17 00:00:00 2001 From: Mick Date: Sat, 18 Nov 2017 15:43:04 +0000 Subject: [PATCH 186/516] Revert Jessie back to python-gst0.10 and remove dep for Stretch --- debian/configure | 7 ++++- debian/control.in | 2 +- debian/control.stretch.in | 60 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 debian/control.stretch.in diff --git a/debian/configure b/debian/configure index 473238ff6f..8e524eb706 100755 --- a/debian/configure +++ b/debian/configure @@ -130,7 +130,12 @@ BUILD_DEPS= # List of Build-Depends HAVE_FLAVOR=false # copy base templates into place -cp control.in control +## need python-gst0.10 for Jessie, none for Stretch +if [ "$DISTRO_CODENAME" == "stretch" ]; then + cp control.stretch.in control +else + cp control.in control +fi echo "debian/control: copied base template" >&2 cp rules.in rules; chmod +x rules echo "debian/rules: copied base template" >&2 diff --git a/debian/control.in b/debian/control.in index 80650f415d..1bb17b7c27 100644 --- a/debian/control.in +++ b/debian/control.in @@ -54,7 +54,7 @@ Depends: ${shlibs:Depends}, machinekit-rt-threads, tcl8.6, tk8.6, python-avahi, python-simplejson, python-pyftpdlib, python-pydot, xdot, tclreadline, bc, procps, psmisc, - python-gst-1.0, gstreamer1.0-plugins-base + python-gst0.10 Description: PC based motion controller for real-time Linux Machinekit is the next-generation Enhanced Machine Controller which provides motion control for CNC machine tools and robotic diff --git a/debian/control.stretch.in b/debian/control.stretch.in new file mode 100644 index 0000000000..361184f99c --- /dev/null +++ b/debian/control.stretch.in @@ -0,0 +1,60 @@ +Source: machinekit +Section: misc +Priority: extra +Maintainer: John Morris +Build-Depends: debhelper (>= 6), + autoconf (>= 2.63), automake, libboost-python-dev, libgl1-mesa-dev, + libglu1-mesa-dev, libgtk2.0-dev, libmodbus-dev (>= 3.0), libudev-dev, + libncurses-dev, libreadline-dev, libusb-1.0-0-dev, libxmu-dev, + libxmu-headers, python (>= 2.6.6), python-dev (>= 2.6.6), + cython (>= 0.19), dh-python, + pkg-config, psmisc, python-tk, libxaw7-dev, libboost-serialization-dev, + libzmq3-dev (>= 4.0.4), libczmq-dev (>= 4.0.2), libjansson-dev (>= 2.5), + libwebsockets-dev (>= 1.2.2), + python-zmq (>= 14.0.1), procps, + liburiparser-dev, libssl-dev, python-setuptools, + uuid-dev, uuid-runtime, libavahi-client-dev, + libprotobuf-dev (>= 2.4.1), protobuf-compiler (>= 2.4.1), + python-protobuf (>= 2.4.1), libprotoc-dev (>= 2.4.1), + python-simplejson, libtk-img, libboost-thread-dev, + python-pyftpdlib, tcl8.6-dev, tk8.6-dev @BUILD_DEPS@ +Standards-Version: 2.1.0 + +######################################################################### +## not built any more, components of it are in flavour packages +## +#Package: machinekit-dev +#Architecture: any +#Depends: make, g++, tcl8.6, tk8.6, +# ${shlibs:Depends}, ${misc:Depends}, +# machinekit (= ${binary:Version}), +# yapps2-runtime +#Section: libs +#Description: PC based motion controller for real-time Linux +# Machinekit is the next-generation Enhanced Machine Controller which +# provides motion control for CNC machine tools and robotic +# applications (milling, cutting, routing, etc.). +# . +# This package includes files needed to build new realtime components and +# alternate front-ends for machinekit +######################################################################### + +Package: machinekit +Breaks: linuxcnc +Replaces: linuxcnc +Architecture: any +Depends: ${shlibs:Depends}, machinekit-rt-threads, tcl8.6, tk8.6, + bwidget (>= 1.7), libtk-img (>=1.13), + ${python:Depends}, ${misc:Depends}, + python-tk, python-imaging, python-imaging-tk, + python-gnome2, python-glade2, + python-numpy, python-gtksourceview2, + python-vte, python-xlib, python-gtkglext1, python-configobj, + python-zmq, python-protobuf (>= 2.4.1), + python-avahi, python-simplejson, python-pyftpdlib, + python-pydot, xdot, + tclreadline, bc, procps, psmisc +Description: PC based motion controller for real-time Linux + Machinekit is the next-generation Enhanced Machine Controller which + provides motion control for CNC machine tools and robotic + applications (milling, cutting, routing, etc.). From de6b617c6188b7b12b9f324385eadc97da918a8a Mon Sep 17 00:00:00 2001 From: bas Date: Sat, 18 Nov 2017 17:38:13 +0100 Subject: [PATCH 187/516] Makefile: machinetalk protobuf jplan and interpolator linking see also: https://github.com/machinekit/Machinekit-HAL/pull/27/commits/369d82ac6b86aece36ef2b86d78de54b29948c3b jplan and interpolator were not properly linked --- src/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Makefile b/src/Makefile index 48d9f6cf2d..17c967e302 100755 --- a/src/Makefile +++ b/src/Makefile @@ -1611,10 +1611,10 @@ motmod-objs += libnml/posemath/sincos.o $(MATHSTUB) # vtexport-objs += hal/vtable-example/vcode.o obj-m += jplan.o -jplan-objs := hal/jplanner/jplan.o +jplan-objs := hal/jplanner/jplan.o machinetalk/build/machinetalk/protobuf/jplan.npb.o obj-m += interpolate.o -interpolate-objs := hal/interpolator/interpolate.o +interpolate-objs := hal/interpolator/interpolate.o machinetalk/build/machinetalk/protobuf/ros.npb.o obj-m += icomp.o icomp-objs := hal/icomp-example/icomp.o From 73b03dc664dde94d64dbfc37bb2f799302d17857 Mon Sep 17 00:00:00 2001 From: Mick Date: Sat, 18 Nov 2017 16:49:07 +0000 Subject: [PATCH 188/516] Added conditional distro dependant disable of gst module to gscreen too --- src/emc/usr_intf/gscreen/gscreen.py | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/src/emc/usr_intf/gscreen/gscreen.py b/src/emc/usr_intf/gscreen/gscreen.py index 4680f5f9f1..8c63ecda07 100755 --- a/src/emc/usr_intf/gscreen/gscreen.py +++ b/src/emc/usr_intf/gscreen/gscreen.py @@ -60,16 +60,27 @@ except: print "**** GSCREEN INFO: You don't seem to have pynotify installed" +global debver +with open("/etc/debian_version") as f: + debver = f.read()[0] +#print debver + # try to add ability for audio feedback to user. -try: + +# Stretch does not have a gst module available +if debver < 9: + try: + _AUDIO_AVAILABLE = False + import pygst + pygst.require("0.10") + import gst + _AUDIO_AVAILABLE = True + print "**** GSCREEN INFO: audio available!" + except: + print "**** GSCREEN INFO: no audio alerts available - PYGST libray not installed?" +else: _AUDIO_AVAILABLE = False - import pygst - pygst.require("0.10") - import gst - _AUDIO_AVAILABLE = True - print "**** GSCREEN INFO: audio available!" -except: - print "**** GSCREEN INFO: no audio alerts available - PYGST libray not installed?" + # BASE is the absolute path to linuxcnc base # libdir is the path to Gscreen python files From f8c9b800d93559357d6620405d0d83d224a32391 Mon Sep 17 00:00:00 2001 From: John Morris Date: Tue, 3 Jan 2017 20:30:09 -0600 Subject: [PATCH 189/516] stdglue.py: turn `change_epilog()` into generator function The functionality to return `INTERP_EXECUTE_FINISH` in a python remap function has always existed, but was broken until PR linuxcnc/linuxcnc#135. The fix revealed a bug in the standard remap `change_epilog()` function, which was not written as a python generator function. Thanks to @dhwiezel for discovering and reporting this bug. Fixes linuxcnc/linuxcnc#217. Signed-off-by: John Morris john@zultron.com --- nc_files/remap_lib/python-stdglue/stdglue.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/nc_files/remap_lib/python-stdglue/stdglue.py b/nc_files/remap_lib/python-stdglue/stdglue.py index 1f5f8d2dfc..cdc1112601 100644 --- a/nc_files/remap_lib/python-stdglue/stdglue.py +++ b/nc_files/remap_lib/python-stdglue/stdglue.py @@ -173,17 +173,17 @@ def change_epilog(self, **words): r = self.blocks[self.remap_level].executing_remap self.set_errormsg("the %s remap procedure %s did not return a value" % (r.name,r.remap_ngc if r.remap_ngc else r.remap_py)) - return INTERP_ERROR + yield INTERP_ERROR # this is relevant only when using iocontrol-v2. if self.params[5600] > 0.0: if self.params[5601] < 0.0: self.set_errormsg("Toolchanger hard fault %d" % (int(self.params[5601]))) - return INTERP_ERROR + yield INTERP_ERROR print "change_epilog: Toolchanger soft fault %d" % int(self.params[5601]) if self.blocks[self.remap_level].builtin_used: #print "---------- M6 builtin recursion, nothing to do" - return INTERP_OK + yield INTERP_OK else: if self.return_value > 0.0: # commit change @@ -195,13 +195,13 @@ def change_epilog(self, **words): # cause a sync() self.set_tool_parameters() self.toolchange_flag = True - return INTERP_EXECUTE_FINISH + yield INTERP_EXECUTE_FINISH else: self.set_errormsg("M6 aborted (return code %.1f)" % (self.return_value)) - return INTERP_ERROR + yield INTERP_ERROR except Exception, e: self.set_errormsg("M6/change_epilog: %s" % (e)) - return INTERP_ERROR + yield INTERP_ERROR # REMAP=M61 modalgroup=6 prolog=settool_prolog ngc=settool epilog=settool_epilog # exposed parameters: # # From 7a384a3c865bb6aa238a8548da6074c5974fc1dc Mon Sep 17 00:00:00 2001 From: Mick Date: Thu, 30 Nov 2017 09:54:30 +0000 Subject: [PATCH 190/516] Add support for Debian Buster package builds Remove dependency on python-gtksourceview2 deprecated in Buster Amend packaging to support Buster package builds arceye/mk-cross-builder:amd64|armhf|i386 needs specifically selecting but otherwise build process is identical and no custom packages reqd. Signed-off-by: Mick --- debian/configure | 7 +++-- debian/control.buster.in | 60 ++++++++++++++++++++++++++++++++++++ debian/rules.in | 3 +- scripts/build_docker | 3 ++ scripts/build_source_package | 1 + 5 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 debian/control.buster.in diff --git a/debian/configure b/debian/configure index 8e524eb706..dbac482972 100755 --- a/debian/configure +++ b/debian/configure @@ -12,7 +12,7 @@ if test -x /usr/bin/lsb_release; then DISTRO_ID=$(lsb_release -is) # Debian or Ubuntu DISTRO_RELEASE=$(lsb_release -rs) # 8.1, 14.04, etc. - DISTRO_CODENAME=$(lsb_release -cs) # wheezy | jessie | stretch + DISTRO_CODENAME=$(lsb_release -cs) # wheezy | jessie | stretch | buster fi # Work out of the debian/ directory @@ -130,12 +130,15 @@ BUILD_DEPS= # List of Build-Depends HAVE_FLAVOR=false # copy base templates into place -## need python-gst0.10 for Jessie, none for Stretch +## need python-gst0.10 for Jessie, none for Stretch, no python-gtksourceview2 for Buster if [ "$DISTRO_CODENAME" == "stretch" ]; then cp control.stretch.in control +elif [ "$DISTRO_CODENAME" == "buster" ]; then + cp control.buster.in control else cp control.in control fi + echo "debian/control: copied base template" >&2 cp rules.in rules; chmod +x rules echo "debian/rules: copied base template" >&2 diff --git a/debian/control.buster.in b/debian/control.buster.in new file mode 100644 index 0000000000..0b5f4480c4 --- /dev/null +++ b/debian/control.buster.in @@ -0,0 +1,60 @@ +Source: machinekit +Section: misc +Priority: extra +Maintainer: John Morris +Build-Depends: debhelper (>= 6), + autoconf (>= 2.63), automake, libboost-python-dev, libgl1-mesa-dev, + libglu1-mesa-dev, libgtk2.0-dev, libmodbus-dev (>= 3.0), libudev-dev, + libncurses-dev, libreadline-dev, libusb-1.0-0-dev, libxmu-dev, + libxmu-headers, python (>= 2.6.6), python-dev (>= 2.6.6), + cython (>= 0.19), dh-python, + pkg-config, psmisc, python-tk, libxaw7-dev, libboost-serialization-dev, + libzmq3-dev (>= 4.0.4), libczmq-dev (>= 4.0.2), libjansson-dev (>= 2.5), + libwebsockets-dev (>= 1.2.2), + python-zmq (>= 14.0.1), procps, + liburiparser-dev, libssl-dev, python-setuptools, + uuid-dev, uuid-runtime, libavahi-client-dev, + libprotobuf-dev (>= 2.4.1), protobuf-compiler (>= 2.4.1), + python-protobuf (>= 2.4.1), libprotoc-dev (>= 2.4.1), + python-simplejson, libtk-img, libboost-thread-dev, + python-pyftpdlib, tcl8.6-dev, tk8.6-dev @BUILD_DEPS@ +Standards-Version: 2.1.0 + +######################################################################### +## not built any more, components of it are in flavour packages +## +#Package: machinekit-dev +#Architecture: any +#Depends: make, g++, tcl8.6, tk8.6, +# ${shlibs:Depends}, ${misc:Depends}, +# machinekit (= ${binary:Version}), +# yapps2-runtime +#Section: libs +#Description: PC based motion controller for real-time Linux +# Machinekit is the next-generation Enhanced Machine Controller which +# provides motion control for CNC machine tools and robotic +# applications (milling, cutting, routing, etc.). +# . +# This package includes files needed to build new realtime components and +# alternate front-ends for machinekit +######################################################################### + +Package: machinekit +Breaks: linuxcnc +Replaces: linuxcnc +Architecture: any +Depends: ${shlibs:Depends}, machinekit-rt-threads, tcl8.6, tk8.6, + bwidget (>= 1.7), libtk-img (>=1.13), + ${python:Depends}, ${misc:Depends}, + python-tk, python-imaging, python-imaging-tk, + python-gnome2, python-glade2, + python-numpy, + python-vte, python-xlib, python-gtkglext1, python-configobj, + python-zmq, python-protobuf (>= 2.4.1), + python-avahi, python-simplejson, python-pyftpdlib, + python-pydot, xdot, + tclreadline, bc, procps, psmisc +Description: PC based motion controller for real-time Linux + Machinekit is the next-generation Enhanced Machine Controller which + provides motion control for CNC machine tools and robotic + applications (milling, cutting, routing, etc.). diff --git a/debian/rules.in b/debian/rules.in index 3f7e44e70d..ecec8d73bc 100755 --- a/debian/rules.in +++ b/debian/rules.in @@ -238,7 +238,8 @@ binary-arch: build install cat debian/machinekit/DEBIAN/shlibs debian/shlibs.pre > \ debian/shlibs.local - dh_shlibdeps -l debian/machinekit/usr/lib + #enable buster builds to work with problematic shlib deps in current packages + dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info -l debian/machinekit/usr/lib dh_gencontrol dh_md5sums diff --git a/scripts/build_docker b/scripts/build_docker index 77f1ad45c9..47d8890e78 100755 --- a/scripts/build_docker +++ b/scripts/build_docker @@ -3,6 +3,9 @@ # Build/cross-build packages and test Machinekit in Docker # # This script can be run manually or in Travis CI +# +# NB. for Buster builds, IMAGE needs to be set to 'arceye/mk-cross-builder' +# and tag to amd64_10, armhf_10 or i386_10 ########################################################### # Configuration from environment, CL args and defaults diff --git a/scripts/build_source_package b/scripts/build_source_package index d63c04a317..4b273d6dd2 100755 --- a/scripts/build_source_package +++ b/scripts/build_source_package @@ -20,6 +20,7 @@ test ${TRAVIS_PULL_REQUEST:-false} = false && IS_PR=false || IS_PR=true case $TAG in *_8) DISTRO=jessie ;; *_9) DISTRO=stretch ;; + *_10) DISTRO=buster ;; esac COMMIT_TIMESTAMP="$(git log -1 --pretty=format:%at)" From aa48d56efbe8ec7367764827ec05b6283061cc0b Mon Sep 17 00:00:00 2001 From: Mick Date: Thu, 30 Nov 2017 10:59:05 +0000 Subject: [PATCH 191/516] Remove defunct kernel threads options in rules.in and configure.ac --- debian/rules.in | 12 ++---------- src/configure.ac | 34 +++++++++++++++++----------------- 2 files changed, 19 insertions(+), 27 deletions(-) diff --git a/debian/rules.in b/debian/rules.in index ecec8d73bc..45d42c50d3 100755 --- a/debian/rules.in +++ b/debian/rules.in @@ -26,8 +26,8 @@ endif THREADS_POSIX = --without-posix THREADS_RT_PREEMPT = --without-rt-preempt THREADS_XENOMAI = --without-xenomai -THREADS_XENOMAI_KERNEL = --without-xenomai-kernel -THREADS_RTAI_KERNEL = --without-rtai-kernel +#THREADS_XENOMAI_KERNEL = --without-xenomai-kernel +#THREADS_RTAI_KERNEL = --without-rtai-kernel # Kernel threads need a list of configured header source directories # for each architecture @@ -81,10 +81,6 @@ build-stamp: debian/control $(THREADS_POSIX) \ $(THREADS_RT_PREEMPT) \ $(THREADS_XENOMAI) \ - $(THREADS_XENOMAI_KERNEL) \ - $(THREADS_RTAI_KERNEL) \ - $(HEADERS_XENOMAI_KERNEL_$(DEB_HOST_ARCH)) \ - $(HEADERS_RTAI_KERNEL_$(DEB_HOST_ARCH)) \ --sysconfdir=/etc \ --mandir=/usr/share/man \ --enable-emcweb @@ -107,10 +103,6 @@ ifneq ($(wildcard src/configure src/Makefile.inc),) $(THREADS_POSIX) \ $(THREADS_RT_PREEMPT) \ $(THREADS_XENOMAI) \ - $(THREADS_XENOMAI_KERNEL) \ - $(THREADS_RTAI_KERNEL) \ - $(HEADERS_XENOMAI_KERNEL_$(DEB_HOST_ARCH)) \ - $(HEADERS_RTAI_KERNEL_$(DEB_HOST_ARCH)) \ --sysconfdir=/etc \ --mandir=/usr/share/man \ --enable-emcweb diff --git a/src/configure.ac b/src/configure.ac index 6b8d4b2e12..442d391f28 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -2333,26 +2333,26 @@ then AC_MSG_ERROR([awk not found]) fi -if test -n "${rtai_kernels}${xenomai_kernels}${shmdrv_kernels}"; then +#if test -n "${rtai_kernels}${xenomai_kernels}${shmdrv_kernels}"; then # Kernel module tools only needed for kthreads - AC_PATH_PROG(INSMOD, insmod, "none", $SPATH) - if test $INSMOD = "none" - then - AC_MSG_ERROR([insmod not found]) - fi +# AC_PATH_PROG(INSMOD, insmod, "none", $SPATH) +# if test $INSMOD = "none" +# then +# AC_MSG_ERROR([insmod not found]) +# fi - AC_PATH_PROG(RMMOD, rmmod, "none", $SPATH) - if test $RMMOD = "none" - then - AC_MSG_ERROR([rmmod not found]) - fi +# AC_PATH_PROG(RMMOD, rmmod, "none", $SPATH) +# if test $RMMOD = "none" +# then +# AC_MSG_ERROR([rmmod not found]) +# fi - AC_PATH_PROG(LSMOD, lsmod, "none", $SPATH) - if test $LSMOD = "none" - then - AC_MSG_ERROR([lsmod not found]) - fi -fi +# AC_PATH_PROG(LSMOD, lsmod, "none", $SPATH) +# if test $LSMOD = "none" +# then +# AC_MSG_ERROR([lsmod not found]) +# fi +#fi AC_PATH_PROG(PIDOF, pidof, "none", $SPATH) if test $PIDOF = "none" From e69adaaaef452654438c29aa3493d67bf8b5c218 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Sat, 2 Dec 2017 09:54:07 +0100 Subject: [PATCH 192/516] previewmodule: fix arc position --- src/emc/rs274ngc/previewmodule.cc | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/src/emc/rs274ngc/previewmodule.cc b/src/emc/rs274ngc/previewmodule.cc index 0333ec8866..2cf3694abb 100644 --- a/src/emc/rs274ngc/previewmodule.cc +++ b/src/emc/rs274ngc/previewmodule.cc @@ -263,6 +263,7 @@ static PyObject *callback; static int interp_error; static int last_sequence_number; static double _pos_x, _pos_y, _pos_z, _pos_a, _pos_b, _pos_c, _pos_u, _pos_v, _pos_w; +CANON_PLANE _pl; EmcPose tool_offset; static InterpBase *pinterp; @@ -315,7 +316,30 @@ void ARC_FEED(int line_number, double second_axis, int rotation, double axis_end_point, double a_position, double b_position, double c_position, double u_position, double v_position, double w_position) { - // XXX: set _pos_* + double x, y, z; + if (_pl == CANON_PLANE_XY) { + x = first_end; + y = second_end; + z = axis_end_point; + } + else if (_pl == CANON_PLANE_XZ) { + x = second_end; + y = axis_end_point; + z = first_end; + } + else if (_pl == CANON_PLANE_YZ) { + x = axis_end_point; + y = first_end; + z = second_end; + } + else { + x = _pos_x; + y = _pos_y; + z = _pos_z; + } + _pos_x = x; _pos_y = y; _pos_z = z; + _pos_a=a_position; _pos_b=b_position; _pos_c=c_position; + _pos_u=u_position; _pos_v=v_position; _pos_w=w_position; maybe_new_line(line_number); if(interp_error) return; // PyObject *result = @@ -338,6 +362,9 @@ void ARC_FEED(int line_number, p->set_axis_end_point(axis_end_point); machinetalk::Position *pos = p->mutable_pos(); + pos->set_x(x); + pos->set_y(y); + pos->set_z(z); pos->set_a(a_position); pos->set_b(b_position); pos->set_c(c_position); @@ -493,6 +520,7 @@ void SET_XY_ROTATION(double t) { void USE_LENGTH_UNITS(CANON_UNITS u) { } void SELECT_PLANE(CANON_PLANE pl) { + _pl = pl; maybe_new_line(); // if(interp_error) return; @@ -1007,6 +1035,7 @@ static PyObject *parse_file(PyObject *self, PyObject *args) { _pos_x = _pos_y = _pos_z = _pos_a = _pos_b = _pos_c = 0; _pos_u = _pos_v = _pos_w = 0; + _pl = CANON_PLANE_XY; note_printf(istat, "open '%s'", f); publish_istat(machinetalk::INTERP_RUNNING); From efdea5939cd212450a81233d849fe0471d38cfd8 Mon Sep 17 00:00:00 2001 From: Mick Date: Sat, 2 Dec 2017 16:13:40 +0000 Subject: [PATCH 193/516] Add note to emcled.cc re Stretch onwards Appears not worth the effort of converting this to use ip a and ip route to replace ifconfig and netstat respectively. The output is different and would require a re-write of something it is unlikely anyone uses. The package net-tools is still available, so test for netstat and ifconfig and warn users that they need to install that package if not found. --- src/emc/usr_intf/emclcd.cc | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/emc/usr_intf/emclcd.cc b/src/emc/usr_intf/emclcd.cc index 94884f08a9..c90b3c78aa 100644 --- a/src/emc/usr_intf/emclcd.cc +++ b/src/emc/usr_intf/emclcd.cc @@ -23,6 +23,11 @@ * * Supported interfaces include Serial and USB. * +* NOTE: Some of programs whose output is parsed (ifconfig and netstat) +* are from the package net-tools. +* This ceased to be installed by default from Debian Stretch +* and will need installing specifically for this program to +* have a chance of working. ********************************************************************/ #include @@ -1701,6 +1706,13 @@ int main(int argc, char *argv[]) initMain(); printf("emclcd starting\n"); + // net-tools not installed by default Stretch onwards, see header + if( (access("/bin/netstat", F_OK ) == -1) || + (access("/sbin/ifconfig", F_OK ) == -1) ){ + fprintf(stderr, "Package net-tools required to run emclcd\n"); + exit(1); + } + // process local arguments strncpy(server, DEFAULT_SERVER, strlen(DEFAULT_SERVER) + 1); while((opt = getopt_long(argc, argv, "p:d:a", longopts, NULL)) != -1) { From f92a73f1ac444bcea0bc2b3f5113df85b3b6121d Mon Sep 17 00:00:00 2001 From: Mick Date: Tue, 5 Dec 2017 14:28:08 +0000 Subject: [PATCH 194/516] dpkg-buildpackage has been complaining that level 6 is deprecated for years! --- debian/compat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/compat b/debian/compat index 1e8b314962..ec635144f6 100644 --- a/debian/compat +++ b/debian/compat @@ -1 +1 @@ -6 +9 From 081cc70a0cae4a67ea31850ed16223c3ae88c0e2 Mon Sep 17 00:00:00 2001 From: Evgeny Sabelskiy Date: Wed, 6 Dec 2017 13:26:56 +0300 Subject: [PATCH 195/516] add support for soc boards with pre-programmed fpga --- src/hal/drivers/mesa-hostmot2/hm2_soc_ol.c | 25 +++++++++++++++++++--- src/hal/drivers/mesa-hostmot2/hm2_soc_ol.h | 1 + 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/hal/drivers/mesa-hostmot2/hm2_soc_ol.c b/src/hal/drivers/mesa-hostmot2/hm2_soc_ol.c index 912eef4fa9..2ca568b6d4 100644 --- a/src/hal/drivers/mesa-hostmot2/hm2_soc_ol.c +++ b/src/hal/drivers/mesa-hostmot2/hm2_soc_ol.c @@ -146,6 +146,9 @@ RTAPI_IP_INT(no_init_llio, "debugging - if 1, do not set any llio fields (like n static int num = 0; RTAPI_IP_INT(num, "hm2 instance number, used for .."); +static int already_programmed = 0; +RTAPI_IP_INT(already_programmed, "if 1 - fpga is already programmed and defined in current device tree"); + static int comp_id = -1; /* derive configfs folder from instance name which is unique */ @@ -440,9 +443,24 @@ static int hm2_soc_register(hm2_soc_t *brd, void *fwid, size_t fwid_len, int ins brd->llio.reset = hm2_soc_reset; - // hm2_register will downcall on those if firmware= given - brd->llio.program_fpga = hm2_soc_program_fpga; - brd->llio.verify_firmware = hm2_soc_verify_firmware; + if (!brd->already_programmed) { + // hm2_register will downcall on those if firmware= given + brd->llio.program_fpga = hm2_soc_program_fpga; + brd->llio.verify_firmware = hm2_soc_verify_firmware; + } else { + // we need this branch for soc boards with pre-programmed fpga + // so, we assume that fpga programmed from u-boot or later and + // active device tree have generic-uio compatible hm2-socfpga0 node + LL_DBG("mapping pre-programmed hm2_soc_ol_board %s\n", brd->name); + // set fpga state flag to "programmed" + brd->fpga_state = DTOV_STAT_APPLIED; + // try to map hm2 using available /sys/class/uio* + int r = hm2_soc_mmap(brd); + if (r) { + LL_ERR("preloaded_soc_mmap_fail %s, err=%d", brd->name, r); + return -EINVAL; + } + } // if descriptor= is given, // read it (see rtapi_app_main) and pass it up to hm2_register() @@ -538,6 +556,7 @@ static int instantiate(const int argc, const char**argv) } brd->no_init_llio = no_init_llio; brd->debug = debug; + brd->already_programmed = already_programmed; if(num == -1){ LL_ERR("num set to -1 by previous instance. Set a valid board number"); return -1; diff --git a/src/hal/drivers/mesa-hostmot2/hm2_soc_ol.h b/src/hal/drivers/mesa-hostmot2/hm2_soc_ol.h index dfaa5250cb..99e052e090 100644 --- a/src/hal/drivers/mesa-hostmot2/hm2_soc_ol.h +++ b/src/hal/drivers/mesa-hostmot2/hm2_soc_ol.h @@ -56,5 +56,6 @@ typedef struct { int no_init_llio; int num; int debug; + int already_programmed; } hm2_soc_t; From 95e3f4bd17fa8111229e973e7bbe55970653bcfb Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 8 Dec 2017 14:28:57 -0600 Subject: [PATCH 196/516] build_packagecloud_upload: fix package push --- scripts/build_packagecloud_upload | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/build_packagecloud_upload b/scripts/build_packagecloud_upload index db97dfe970..6ce93ae283 100755 --- a/scripts/build_packagecloud_upload +++ b/scripts/build_packagecloud_upload @@ -48,6 +48,7 @@ case $TAG in *_9) DISTRO=stretch ;; *) error "Unknown tag '$TAG'" ;; esac +ARCH=${TAG/_*/} PACKAGECLOUD_REPO=${PACKAGECLOUD_REPO:-machinekit} PACKAGECLOUD_ARCHIVE=${PACKAGECLOUD_USER}/${PACKAGECLOUD_REPO}/debian/${DISTRO} @@ -66,4 +67,4 @@ case "${TAG}" in ;; esac # Push binary packages -package_cloud push ${PACKAGECLOUD_ARCHIVE} ../*_$TAG.deb +package_cloud push ${PACKAGECLOUD_ARCHIVE} ../*_$ARCH.deb From 2264a1c42c012d7772a1f882e93a039c04421780 Mon Sep 17 00:00:00 2001 From: Evgeny Sabelskiy Date: Sun, 10 Dec 2017 21:10:39 +0300 Subject: [PATCH 197/516] Add support for building a RPM package. --- pkg/rpm/README.md | 123 +++++++++++ pkg/rpm/machinekit.spec | 455 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 578 insertions(+) create mode 100644 pkg/rpm/README.md create mode 100644 pkg/rpm/machinekit.spec diff --git a/pkg/rpm/README.md b/pkg/rpm/README.md new file mode 100644 index 0000000000..af215e70cc --- /dev/null +++ b/pkg/rpm/README.md @@ -0,0 +1,123 @@ +# MachineKit packaging for RPM + +## Fedora + +prepare build ARM machine, [Fedora 27](https://arm.fedoraproject.org) and [Raspberry Pi 3](https://www.raspberrypi.org) is a great choice + +download and write to SD card (8 Gb minimum 10 class is recommended) Fedora Minimal image, boot machine and open terminal (ssh or physical) + +### install prerequisites + +under root permissions: + +```bash +dnf install wget curl rpm-build rpmdevtools +wget https://github.com/machinekit/machinekit/raw/pkg/rpm/machinekit.spec +``` + +```bash +dnf builddep --spec machinekit.spec +``` + +or if you want to build machinekit-xenomai (requires xenomai, xenomai-libs and xenomai-devel packages): + +```bash +dnf builddep --spec -D "with_xenomai 1" machinekit.spec +``` + +```bash +useradd mockbuild +``` + +### prepare build environment + +```bash +su - mockbuild +mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} +echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros +wget https://github.com/machinekit/machinekit/raw/pkg/rpm/machinekit.spec +spectool -g -C $HOME/rpmbuild/SOURCES machinekit.spec +``` + +### build rpms + +under mockbuild user permissions: + +```bash +rpmbuild -ba machinekit.spec +``` + +or if you want to build machinekit-xenomai + +```bash +rpmbuild -ba --with xenomai machinekit.spec +``` + +The results will be in $HOME/rpmbuild/RPMS/armv7hl/ + +```bash +machinekit-0.1.0-2.armv7hl.rpm +machinekit-devel-0.1.0-2.armv7hl.rpm +machinekit-rt-preempt-0.1.0-2.armv7hl.rpm +machinekit-xenomai-0.1.0-2.armv7hl.rpm +``` + +### creating a repository on build machine (just as an example) + +under root permissions: + +```bash +dnf install createrepo httpd +cd /var/www/html +mkdir -p fedora/armv7hl/machinekit +cp -f $(su - mockbuild -c "echo \$HOME")/rpmbuild/RPMS/armv7hl/*.rpm fedora/27/armv7hl/machinekit/ +createrepo /var/www/html/fedora/27/armv7hl/machinekit +``` + +```bash +systemctl enable httpd.service +systemctl start httpd.service +firewall-cmd --add-service=http --permanent +firewall-cmd --add-service=https --permanent +firewall-cmd --reload +``` + +### client setup + +create machinekit repo file /etc/yum.repos.d/machinekit.repo + +```bash +[machinekit] +name=Machinekit Fedora $releasever - $basearch +failovermethod=priority +baseurl=http://[BUILD_MACHINE_HOSTNAME]/fedora/$releasever/$basearch/base +enabled=1 +gpgcheck=0 +``` + +Now, just do a + +```bash +dnf install machinekit +``` + +and if required + +```bash +dnf install machinekit-rt-preempt +``` + +### run machinekit on client + +add user machinekit, for example: + +```bash +useradd machinekit +``` + +run machinekit + +```bash +su - machinekit +machinekit +``` diff --git a/pkg/rpm/machinekit.spec b/pkg/rpm/machinekit.spec new file mode 100644 index 0000000000..77c69e0ef7 --- /dev/null +++ b/pkg/rpm/machinekit.spec @@ -0,0 +1,455 @@ +# Default values are --without-xenomai --with-rtpreempt + +%bcond_without rtpreempt +%bcond_with xenomai + +%global commit master +%global gittag GIT-TAG +%global shortcommit master + +Summary: Marchine Kit +Vendor: MachineKit +Packager: MachineKit +Name: machinekit +Version: 0.1.0 +Release: 2 +Epoch: 0 +License: GNU +Group: Machine Control/Daemons +URL: http://www.machinekit.io + +Source0: https://github.com/machinekit/%{name}/archive/%{commit}/%{name}-%{shortcommit}.tar.gz#/%{name}-%{version}.tar.gz + +Conflicts: linuxcnc + +Requires: rsyslog +Requires: libstdc++ +Requires: python2 psmisc procps-ng bc +Requires: czmq zeromq python2-zmq jansson libwebsockets protobuf +Requires: bwidget tkimg +Requires: uriparser openssl libuuid libmodbus libusb glib2 +Requires: gtk2 tcl tcl-tclreadline tk readline libXaw python2-tkinter mesa-libGLU +Requires: python2-simplejson python2-numpy python2-xlib pygtkglext python2-configobj python-avahi +Requires: pygtk2-libglade gnome-python2 python2-protobuf >= 2.4.1 +Requires: python2-Cython python2-pyftpdlib boost-python python-xdot python2-pydot + +BuildRequires: libstdc++-devel gcc gcc-c++ +BuildRequires: pkgconf bwidget redhat-lsb autoconf automake +BuildRequires: libudev-devel protobuf-compiler protobuf-devel +BuildRequires: czmq-devel zeromq-devel jansson-devel libwebsockets-devel +BuildRequires: uriparser-devel openssl-devel libuuid-devel avahi-devel libmodbus-devel libusb-devel glib2-devel +BuildRequires: gtk2-devel tcl-devel tk-devel readline-devel libXaw-devel boost-devel mesa-libGLU-devel +BuildRequires: python2-zmq python2-Cython python2-pyftpdlib python2-protobuf python2-devel python2-tkinter +BuildRequires: python2-simplejson + +AutoReq: no + +%description +PC based motion controller for real-time Linux + Machinekit is the next-generation Enhanced Machine Controller which + provides motion control for CNC machine tools and robotic + applications (milling, cutting, routing, etc.). + . + This package provides components and drivers that run on a non-realtime + (Posix) system. + +%if 0%{with rtpreempt} +%package rt-preempt +Summary: MachineKit components and drivers that run on an RT-Preempt system +Group: Machine Control/Daemons +Requires: %{name} = %{version}-%{release} +AutoReq: no + +%description rt-preempt +PC based motion controller for real-time Linux + Machinekit is the next-generation Enhanced Machine Controller which + provides motion control for CNC machine tools and robotic + applications (milling, cutting, routing, etc.). + . + This package provides components and drivers that run on an RT-Preempt system. +%endif + +%if 0%{with xenomai} +%package xenomai +Summary: MachineKit components and drivers that run on a Xenomai system +Group: Machine Control/Daemons +Requires: %{name} = %{version}-%{release} +Requires: xenomai xenomai-libs +BuildRequires: xenomai-devel +AutoReq: no + +%description xenomai +PC based motion controller for real-time Linux + Machinekit is the next-generation Enhanced Machine Controller which + provides motion control for CNC machine tools and robotic + applications (milling, cutting, routing, etc.). + . + This package provides components and drivers that run on a Xenomai system. +%endif + +%package devel +Summary: Development files for MachineKit +Group: Machine Control/Daemons +Requires: %{name} = %{version}-%{release} + +%description devel + This package contains libraries and header files needed for + developing software that uses MachineKit. + +%prep +%autosetup -n %{name}-%{commit} + +%build +cd src +./autogen.sh +./configure --prefix=/usr \ + %{?_with_xenomai} \ + %{?_with_rtpreempt} \ + --with-posix \ + --enable-usermode-pci \ + --sysconfdir=/etc \ + --with-rundir=/var/run \ + --mandir=/usr/share/man \ + --enable-emcweb + +# temporary patch - remove all "-o root" +sed -i "s/ -o root//g" Makefile + +make -j2 +touch build-stamp + +%install +# Clean up in case there is trash left from a previous build +rm -rf $RPM_BUILD_ROOT + +cd src && make install DESTDIR=$RPM_BUILD_ROOT +# cd %{getenv:TESTBUILDPATH}/../src && make install DESTDIR=$RPM_BUILD_ROOT + +# atm is not required +# install -m644 packages/rpm/machinekit.service $RPM_BUILD_ROOT%{_unitdir}/machinekit.service + +####################################################################### +## Scriplets section ## +####################################################################### + +%preun +rm -f %{_libdir}/linuxcnc/posix/pru_generic.bin || : +rm -f %{_libdir}/linuxcnc/posix/pru_generic.dbg || : +rm -f %{_libdir}/linuxcnc/posix/pru_decamux.bin || : +rm -f %{_libdir}/linuxcnc/posix/pru_decamux.dbg || : + +%post +# ensure the links do not pre-exist, from previous installs. +# or user work-arounds, which will produce error messages +rm -f %{_libdir}/linuxcnc/posix/pru_generic.bin || : +rm -f %{_libdir}/linuxcnc/posix/pru_generic.dbg || : +rm -f %{_libdir}/linuxcnc/posix/pru_decamux.bin || : +rm -f %{_libdir}/linuxcnc/posix/pru_decamux.dbg || : + +# make symlinks to BBB pru_*.* +ln -sf %{_libdir}/linuxcnc/prubin/pru_generic.bin %{_libdir}/linuxcnc/posix/pru_generic.bin +ln -sf %{_libdir}/linuxcnc/prubin/pru_generic.dbg %{_libdir}/linuxcnc/posix/pru_generic.dbg +ln -sf %{_libdir}/linuxcnc/prubin/pru_decamux.bin %{_libdir}/linuxcnc/posix/pru_decamux.bin +ln -sf %{_libdir}/linuxcnc/prubin/pru_decamux.dbg %{_libdir}/linuxcnc/posix/pru_decamux.dbg + +# setup emcweb var files +rm -rf %{_var}/cache/linuxcnc/www || : +mkdir -p %{_var}/cache/linuxcnc/www/data +chmod a+rw %{_var}/cache/linuxcnc/www/data + +# add symbolic links to static files +cd %{_datarootdir}/linuxcnc/doc-root +find -type d -exec mkdir --parents -- %{_var}/cache/linuxcnc/www/{} \; +find -type f -exec ln -s -- %{_datarootdir}/linuxcnc/doc-root/{} %{_var}/cache/linuxcnc/www/{} \; + +# if it doesnt exist, create /var/log/linuxcnc.log and make it publically readable +# touch /var/log/linuxcnc.log +# chmod ugo+r /var/log/linuxcnc.log + +# Until rebranded completely solve corner cases like this +if [ -f "%{_datarootdir}/linuxcnc" ]; then + if [ ! -f "%{_datarootdir}/machinekit" ]; then + ln -s %{_datarootdir}/linuxcnc %{_datarootdir}/machinekit || : + fi +fi + +/sbin/ldconfig > /dev/null 2>&1 || : + +%postun +if [ $1 -eq 0 ] ; then + rm -f %{_libdir}/linuxcnc/posix/pru_generic.bin || : + rm -f %{_libdir}/linuxcnc/posix/pru_generic.dbg || : + rm -f %{_libdir}/linuxcnc/posix/pru_decamux.bin || : + rm -f %{_libdir}/linuxcnc/posix/pru_decamux.dbg || : + + if [ -L "%{_datarootdir}/machinekit" ]; then + rm -f %{_datarootdir}/machinekit || : + fi + + rm -rf %{_var}/cache/linuxcnc || : +fi + +%if 0%{with rtpreempt} +%post rt-preempt +# ensure the links do not pre-exist, from previous installs +# or user work-arounds, which will produce error messages +rm -f %{_libdir}/linuxcnc/rt-preempt/pru_generic.bin || : +rm -f %{_libdir}/linuxcnc/rt-preempt/pru_generic.dbg || : +rm -f %{_libdir}/linuxcnc/rt-preempt/pru_decamux.bin || : +rm -f %{_libdir}/linuxcnc/rt-preempt/pru_decamux.dbg || : + +# make symlinks to BBB pru_*.* +ln -sf %{_libdir}/linuxcnc/prubin/pru_generic.bin %{_libdir}/linuxcnc/rt-preempt/pru_generic.bin +ln -sf %{_libdir}/linuxcnc/prubin/pru_generic.dbg %{_libdir}/linuxcnc/rt-preempt/pru_generic.dbg +ln -sf %{_libdir}/linuxcnc/prubin/pru_decamux.bin %{_libdir}/linuxcnc/rt-preempt/pru_decamux.bin +ln -sf %{_libdir}/linuxcnc/prubin/pru_decamux.dbg %{_libdir}/linuxcnc/rt-preempt/pru_decamux.dbg + +%preun rt-preempt +rm -f %{_libdir}/linuxcnc/rt-preempt/pru_generic.bin || : +rm -f %{_libdir}/linuxcnc/rt-preempt/pru_generic.dbg || : +rm -f %{_libdir}/linuxcnc/rt-preempt/pru_decamux.bin || : +rm -f %{_libdir}/linuxcnc/rt-preempt/pru_decamux.dbg || : + +%postun rt-preempt +if [ $1 -eq 0 ] ; then + rm -f %{_libdir}/linuxcnc/rt-preempt/pru_generic.bin || : + rm -f %{_libdir}/linuxcnc/rt-preempt/pru_generic.dbg || : + rm -f %{_libdir}/linuxcnc/rt-preempt/pru_decamux.bin || : + rm -f %{_libdir}/linuxcnc/rt-preempt/pru_decamux.dbg || : +fi +%endif + +%if 0%{with xenomai} +%post xenomai +# ensure the links do not pre-exist, from previous installs +# or user work-arounds, which will produce error messages +rm -f %{_libdir}/linuxcnc/xenomai/pru_generic.bin || : +rm -f %{_libdir}/linuxcnc/xenomai/pru_generic.dbg || : +rm -f %{_libdir}/linuxcnc/xenomai/pru_decamux.bin || : +rm -f %{_libdir}/linuxcnc/xenomai/pru_decamux.dbg || : + +# make symlinks to BBB pru_*.* +ln -sf %{_libdir}/linuxcnc/prubin/pru_generic.bin %{_libdir}/linuxcnc/xenomai/pru_generic.bin +ln -sf %{_libdir}/linuxcnc/prubin/pru_generic.dbg %{_libdir}/linuxcnc/xenomai/pru_generic.dbg +ln -sf %{_libdir}/linuxcnc/prubin/pru_decamux.bin %{_libdir}/linuxcnc/xenomai/pru_decamux.bin +ln -sf %{_libdir}/linuxcnc/prubin/pru_decamux.dbg %{_libdir}/linuxcnc/xenomai/pru_decamux.dbg + +%preun xenomai +rm -f %{_libdir}/linuxcnc/xenomai/pru_generic.bin || : +rm -f %{_libdir}/linuxcnc/xenomai/pru_generic.dbg || : +rm -f %{_libdir}/linuxcnc/xenomai/pru_decamux.bin || : +rm -f %{_libdir}/linuxcnc/xenomai/pru_decamux.dbg || : + +%postun xenomai +if [ $1 -eq 0 ] ; then + rm -f %{_libdir}/linuxcnc/xenomai/pru_generic.bin || : + rm -f %{_libdir}/linuxcnc/xenomai/pru_generic.dbg || : + rm -f %{_libdir}/linuxcnc/xenomai/pru_decamux.bin || : + rm -f %{_libdir}/linuxcnc/xenomai/pru_decamux.dbg || : +fi +%endif + +####################################################################### +## Files section ## +####################################################################### + +%files +%defattr(-,root,root) + +%dir %{_sysconfdir}/linuxcnc +%attr(0644,root,root) %config %{_sysconfdir}/linuxcnc/* +%attr(0644,root,root) %config %{_sysconfdir}/rsyslog.d/linuxcnc.conf +%attr(0644,root,root) %config %{_sysconfdir}/security/limits.d/machinekit.conf +%attr(0644,root,root) %config %{_sysconfdir}/udev/rules.d/50-shmdrv.rules +%attr(0644,root,root) %config %{_sysconfdir}/X11/app-defaults/* +%attr(0755,root,root) %{_bindir}/* + +# libs +%attr(0755,root,root) %{_libdir}/compat.so +%attr(0755,root,root) %{_libdir}/hal.so +%attr(0755,root,root) %{_libdir}/rtapi.so +%attr(0755,root,root) %{_libdir}/shmcommon.so +%attr(0755,root,root) %{_libdir}/libcanterp.so.0 +%attr(0755,root,root) %{_libdir}/liblinuxcnchal.so.0 +%attr(0755,root,root) %{_libdir}/liblinuxcncini.so.0 +%attr(0755,root,root) %{_libdir}/liblinuxcncshm.so.0 +%attr(0755,root,root) %{_libdir}/liblinuxcnculapi.so.0 +%attr(0755,root,root) %{_libdir}/libmachinetalk-npb.so.0 +%attr(0755,root,root) %{_libdir}/libmachinetalk-pb2++.so.0 +%attr(0755,root,root) %{_libdir}/libmtalk.so.0 +%attr(0755,root,root) %{_libdir}/libnml.so.0 +%attr(0755,root,root) %{_libdir}/libposemath.so.0 +%attr(0755,root,root) %{_libdir}/libpyplugin.so.0 +%attr(0755,root,root) %{_libdir}/librs274.so.0 +%attr(0755,root,root) %{_libdir}/librtapi_math.so.0 + +%exclude %{_libdir}/libcanterp.so +%exclude %{_libdir}/liblinuxcnchal.so +%exclude %{_libdir}/liblinuxcncini.so +%exclude %{_libdir}/liblinuxcncshm.so +%exclude %{_libdir}/liblinuxcnculapi.so +%exclude %{_libdir}/libmachinetalk-npb.so +%exclude %{_libdir}/libmachinetalk-pb2++.so +%exclude %{_libdir}/libmtalk.so +%exclude %{_libdir}/librtapi_math.so +%exclude %{_libdir}/librs274.so +%exclude %{_libdir}/libpyplugin.so +%exclude %{_libdir}/libposemath.so +%exclude %{_libdir}/libnml.so + +%dir %{_libdir}/tcltk/linuxcnc +%dir %{_libdir}/tcltk/linuxcnc/bin +%dir %{_libdir}/tcltk/linuxcnc/msgs +%dir %{_libdir}/tcltk/linuxcnc/scripts + +%attr(-,root,root) %{_libdir}/tcltk/linuxcnc/*.tcl +%attr(0755,root,root) %{_libdir}/tcltk/linuxcnc/hal.so +%attr(0755,root,root) %{_libdir}/tcltk/linuxcnc/linuxcnc.so +%attr(0755,root,root) %{_libdir}/tcltk/linuxcnc/bin/* +%attr(0644,root,root) %{_libdir}/tcltk/linuxcnc/msgs/* +%attr(-,root,root) %{_libdir}/tcltk/linuxcnc/scripts/* + +%dir %{python2_sitearch}/drivers +%{python2_sitearch}/drivers/*.py* +%dir %{python2_sitearch}/fdm +%dir %{python2_sitearch}/fdm/config +%{python2_sitearch}/fdm/*.py* +%{python2_sitearch}/fdm/config/*.py* +%dir %{python2_sitearch}/gladevcp +%{python2_sitearch}/gladevcp/*.py* +%{python2_sitearch}/gladevcp/*.glade +%dir %{python2_sitearch}/gmoccapy +%{python2_sitearch}/gmoccapy/*.py* +%dir %{python2_sitearch}/gscreen +%{python2_sitearch}/gscreen/*.py* +%dir %{python2_sitearch}/machinekit +%dir %{python2_sitearch}/machinekit/nosetests +%{python2_sitearch}/machinekit/*.py* +%{python2_sitearch}/machinekit/nosetests/*.py* +# why these files there ? +%attr(0755,root,root) %{python2_sitearch}/machinekit/compat.so +%attr(0755,root,root) %{python2_sitearch}/machinekit/hal.so +%attr(0755,root,root) %{python2_sitearch}/machinekit/rtapi.so +%attr(0755,root,root) %{python2_sitearch}/machinekit/shmcommon.so +%dir %{python2_sitearch}/machinetalk +%dir %{python2_sitearch}/machinetalk/protobuf +%{python2_sitearch}/machinetalk/*.py* +%{python2_sitearch}/machinetalk/protobuf/*.py* +%dir %{python2_sitearch}/rs274 +%{python2_sitearch}/rs274/*.py* +%dir %{python2_sitearch}/stepconf +%{python2_sitearch}/stepconf/*.py* +%dir %{python2_sitearch}/touchy +%{python2_sitearch}/touchy/*.py* +%{python2_sitearch}/*.py* +%attr(0755,root,root) %{python2_sitearch}/gcode.so +%attr(0755,root,root) %{python2_sitearch}/_hal.so +%attr(0755,root,root) %{python2_sitearch}/lineardeltakins.so +%attr(0755,root,root) %{python2_sitearch}/linuxcnc.so +%attr(0755,root,root) %{python2_sitearch}/minigl.so +%attr(0755,root,root) %{python2_sitearch}/preview.so +%attr(0755,root,root) %{python2_sitearch}/_togl.so + +%dir %{_libexecdir}/linuxcnc +%attr(0755,root,root) %{_libexecdir}/linuxcnc/pci_read +%attr(0755,root,root) %{_libexecdir}/linuxcnc/pci_write +%attr(0755,root,root) %{_libexecdir}/linuxcnc/inivar +%attr(0755,root,root) %{_libexecdir}/linuxcnc/flavor +%attr(0755,root,root) %{_libexecdir}/linuxcnc/rtapi_msgd + +%dir %{_datarootdir}/axis +%dir %{_datarootdir}/axis/images +%dir %{_datarootdir}/axis/tcl +%attr(0644,root,root) %{_datarootdir}/axis/images/* +%attr(0644,root,root) %{_datarootdir}/axis/tcl/* + +%dir %{_datarootdir}/fdm +%dir %{_datarootdir}/fdm/thermistor_tables +%attr(0644,root,root) %{_datarootdir}/fdm/thermistor_tables/* + +%dir %{_datarootdir}/glade3 +%dir %{_datarootdir}/glade3/catalogs +%dir %{_datarootdir}/glade3/pixmaps +%attr(0644,root,root) %{_datarootdir}/glade3/catalogs/* +%attr(0644,root,root) %{_datarootdir}/glade3/pixmaps/* + +%dir %{_datarootdir}/gmoccapy +%dir %{_datarootdir}/gmoccapy/images +%attr(0644,root,root) %{_datarootdir}/gmoccapy/*.glade +%attr(0644,root,root) %{_datarootdir}/gmoccapy/images/* + +%dir %{_datarootdir}/gscreen +%dir %{_datarootdir}/gscreen/images +%dir %{_datarootdir}/gscreen/skins +%dir %{_datarootdir}/gscreen/skins/9_axis +%dir %{_datarootdir}/gscreen/skins/gaxis +%dir %{_datarootdir}/gscreen/skins/gaxis_no_plot +%dir %{_datarootdir}/gscreen/skins/industrial +%attr(0644,root,root) %{_datarootdir}/gscreen/images/* +%attr(0644,root,root) %{_datarootdir}/gscreen/skins/9_axis/* +%attr(0644,root,root) %{_datarootdir}/gscreen/skins/gaxis/* +%attr(0644,root,root) %{_datarootdir}/gscreen/skins/gaxis_no_plot/* +%attr(0644,root,root) %{_datarootdir}/gscreen/skins/industrial/* + +%dir %{_datarootdir}/gtksourceview-2.0 +%dir %{_datarootdir}/gtksourceview-2.0/language-specs +%attr(0644,root,root) %{_datarootdir}/gtksourceview-2.0/language-specs/* + +%dir %{_datarootdir}/linuxcnc +%dir %{_datarootdir}/linuxcnc/doc-root +%dir %{_datarootdir}/linuxcnc/examples +%dir %{_datarootdir}/linuxcnc/pncconf +%dir %{_datarootdir}/linuxcnc/ncfiles +%dir %{_datarootdir}/linuxcnc/stepconf +%attr(-,root,root) %{_datarootdir}/linuxcnc/*.glade +%attr(-,root,root) %{_datarootdir}/linuxcnc/*.ui +%attr(-,root,root) %{_datarootdir}/linuxcnc/*.nml +%attr(-,root,root) %{_datarootdir}/linuxcnc/*.gif +%attr(-,root,root) %{_datarootdir}/linuxcnc/*.png +%attr(-,root,root) %{_datarootdir}/linuxcnc/doc-root/* +%attr(-,root,root) %{_datarootdir}/linuxcnc/examples/* +%attr(-,root,root) %{_datarootdir}/linuxcnc/pncconf/* +%attr(-,root,root) %{_datarootdir}/linuxcnc/ncfiles/* +%attr(-,root,root) %{_datarootdir}/linuxcnc/stepconf/*.glade + +%attr(0644,root,root) %{_datarootdir}/locale/*/LC_MESSAGES/*.mo + +%dir %{_docdir}/linuxcnc +%attr(0644,root,root) %{_docdir}/linuxcnc/axis_light_background +%attr(0644,root,root) %{_docdir}/linuxcnc/xlinuxcnc.asciidoc +%attr(0644,root,root) %{_docdir}/linuxcnc/tklinuxcnc.asciidoc +%attr(0644,root,root) %{_docdir}/linuxcnc/README.axis + +# posix api +%dir %{_libdir}/linuxcnc/posix +%attr(0755,root,root) %{_libdir}/linuxcnc/posix/*.so +%attr(0755,root,root) %{_libdir}/linuxcnc/ulapi-posix.so +%attr(4711,root,root) %{_libexecdir}/linuxcnc/rtapi_app_posix + +%if 0%{with rtpreempt} +%files rt-preempt +%defattr(-,root,root) + +%dir %{_libdir}/linuxcnc/rt-preempt +%attr(0755,root,root) %{_libdir}/linuxcnc/rt-preempt/*.so +%attr(0755,root,root) %{_libdir}/linuxcnc/ulapi-rt-preempt.so +%attr(4711,root,root) %{_libexecdir}/linuxcnc/rtapi_app_rt-preempt +%endif + +%if 0%{with xenomai} +%files xenomai +%defattr(-,root,root) + +%dir %{_libdir}/linuxcnc/xenomai +%attr(0755,root,root) %{_libdir}/linuxcnc/xenomai/*.so +%attr(0755,root,root) %{_libdir}/linuxcnc/ulapi-xenomai.so +%attr(4711,root,root) %{_libexecdir}/linuxcnc/rtapi_app_xenomai +%endif + +%files devel +%defattr(-,root,root) +%attr(0644,root,root) %{_includedir}/linuxcnc/* +%attr(0644,root,root) %{_libdir}/liblinuxcnc.a +%dir %{_datarootdir}/linuxcnc +%attr(0644,root,root) %{_datarootdir}/linuxcnc/Makefile.inc +%attr(0644,root,root) %{_datarootdir}/linuxcnc/Makefile.modinc From 30023f00c3a02724bebff8b6c00b4129afba4eb0 Mon Sep 17 00:00:00 2001 From: Evgeny Sabelskiy Date: Mon, 11 Dec 2017 10:26:19 +0300 Subject: [PATCH 198/516] fix build for x86_64 --- pkg/rpm/machinekit.spec | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pkg/rpm/machinekit.spec b/pkg/rpm/machinekit.spec index 77c69e0ef7..d3ef7003c2 100644 --- a/pkg/rpm/machinekit.spec +++ b/pkg/rpm/machinekit.spec @@ -108,12 +108,22 @@ cd src --with-posix \ --enable-usermode-pci \ --sysconfdir=/etc \ +%ifarch x86_64 + --libdir=/usr/lib64 \ +%endif --with-rundir=/var/run \ --mandir=/usr/share/man \ --enable-emcweb # temporary patch - remove all "-o root" sed -i "s/ -o root//g" Makefile +%ifarch x86_64 +# fix destination path for emc2 tcl and rtl +sed -i "s/EMC2_TCL_DIR=\/usr\/lib\//EMC2_TCL_DIR=\/usr\/lib64\//" Makefile.inc +sed -i "s/EMC2_RTLIB_BASE_DIR=\/usr\/lib\//EMC2_RTLIB_BASE_DIR=\/usr\/lib64\//" Makefile.inc +sed -i "s/EMC2_TCL_LIB_DIR = \/usr\/lib\//EMC2_TCL_LIB_DIR = \/usr\/lib64\//" Makefile.inc +sed -i 's/tcldir = \${prefix}\/lib\//tcldir = \${prefix}\/lib64\//' Makefile.inc +%endif make -j2 touch build-stamp From 5da9b476b6a67e4cb51aaf1ffff9a9b23966734d Mon Sep 17 00:00:00 2001 From: Evgeny Sabelskiy Date: Mon, 11 Dec 2017 10:38:18 +0300 Subject: [PATCH 199/516] fix warning, fix default configure options --- pkg/rpm/machinekit.spec | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/pkg/rpm/machinekit.spec b/pkg/rpm/machinekit.spec index d3ef7003c2..66911dc238 100644 --- a/pkg/rpm/machinekit.spec +++ b/pkg/rpm/machinekit.spec @@ -103,8 +103,12 @@ Requires: %{name} = %{version}-%{release} cd src ./autogen.sh ./configure --prefix=/usr \ - %{?_with_xenomai} \ - %{?_with_rtpreempt} \ +%if %{with xenomai} + --with-xenomai \ +%endif +%if %{with rtpreempt} + --with-rt-preempt \ +%endif --with-posix \ --enable-usermode-pci \ --sysconfdir=/etc \ @@ -303,7 +307,6 @@ fi %exclude %{_libdir}/libmtalk.so %exclude %{_libdir}/librtapi_math.so %exclude %{_libdir}/librs274.so -%exclude %{_libdir}/libpyplugin.so %exclude %{_libdir}/libposemath.so %exclude %{_libdir}/libnml.so From 58ce7e5eba1d1e891653ab2c134c3a281c1e463e Mon Sep 17 00:00:00 2001 From: Evgeny Sabelskiy Date: Mon, 11 Dec 2017 11:51:28 +0300 Subject: [PATCH 200/516] add instruction for x86_64, mainly to get rid of emphasis on arm --- pkg/rpm/README.md | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/pkg/rpm/README.md b/pkg/rpm/README.md index af215e70cc..46e7ab4455 100644 --- a/pkg/rpm/README.md +++ b/pkg/rpm/README.md @@ -1,10 +1,12 @@ # MachineKit packaging for RPM -## Fedora +## Fedora {i686, x86_64, armv7} -prepare build ARM machine, [Fedora 27](https://arm.fedoraproject.org) and [Raspberry Pi 3](https://www.raspberrypi.org) is a great choice +### prepare a build machine -download and write to SD card (8 Gb minimum 10 class is recommended) Fedora Minimal image, boot machine and open terminal (ssh or physical) +* i686 and x86_64 - no special recommendations, any amd or intel box with latest stable Fedora is okay +* armv7 - [Fedora 27](https://arm.fedoraproject.org) and [Raspberry Pi 3](https://www.raspberrypi.org) is a great choice + download and write to SD card (8 Gb minimum 10 class is recommended) Fedora Minimal image, boot machine and open terminal (ssh or physical) ### install prerequisites @@ -66,6 +68,8 @@ machinekit-xenomai-0.1.0-2.armv7hl.rpm under root permissions: +__ARMv7:__ + ```bash dnf install createrepo httpd cd /var/www/html @@ -74,6 +78,16 @@ cp -f $(su - mockbuild -c "echo \$HOME")/rpmbuild/RPMS/armv7hl/*.rpm fedora/27/a createrepo /var/www/html/fedora/27/armv7hl/machinekit ``` +__x86_64:__ + +```bash +dnf install createrepo httpd +cd /var/www/html +mkdir -p fedora/x86_64/machinekit +cp -f $(su - mockbuild -c "echo \$HOME")/rpmbuild/RPMS/x86_64/*.rpm fedora/27/x86_64/machinekit/ +createrepo /var/www/html/fedora/27/x86_64/machinekit +``` + ```bash systemctl enable httpd.service systemctl start httpd.service From 41d9d58ee1606b28883f791994050c34eee47184 Mon Sep 17 00:00:00 2001 From: Evgeny Sabelskiy Date: Mon, 11 Dec 2017 13:31:18 +0300 Subject: [PATCH 201/516] fix typo in summary --- pkg/rpm/machinekit.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/rpm/machinekit.spec b/pkg/rpm/machinekit.spec index 66911dc238..a242fb9f86 100644 --- a/pkg/rpm/machinekit.spec +++ b/pkg/rpm/machinekit.spec @@ -7,7 +7,7 @@ %global gittag GIT-TAG %global shortcommit master -Summary: Marchine Kit +Summary: Machine Kit Vendor: MachineKit Packager: MachineKit Name: machinekit From ba394c6803c6dc955dcad5e53b94153cb4c18539 Mon Sep 17 00:00:00 2001 From: Mikhail Vydrenko Date: Fri, 15 Dec 2017 01:13:00 +0600 Subject: [PATCH 202/516] Fixed GPIO registers addresses --- src/hal/drivers/hal_gpio_h3.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/hal/drivers/hal_gpio_h3.c b/src/hal/drivers/hal_gpio_h3.c index af81f2e665..a24614de13 100644 --- a/src/hal/drivers/hal_gpio_h3.c +++ b/src/hal/drivers/hal_gpio_h3.c @@ -24,22 +24,22 @@ MODULE_LICENSE("GPL"); #define PHY_MEM_BLOCK_SIZE 4096 -#define GPIO_PHY_MEM_OFFSET1 0x01C20800 // GPIO_A .. GPIO_I +#define GPIO_PHY_MEM_OFFSET1 0x01C20800 // GPIO_A .. GPIO_G #define GPIO_PHY_MEM_OFFSET2 0x01F02C00 // GPIO_L #define GPIO_PIN_COUNT 43 #define USE_GPIO_PORT_L 0 // 0 = don't use port L enum { - GPIO_A, GPIO_B, GPIO_C, GPIO_D, GPIO_E, // 22, 0, 19, 18, 16, - GPIO_F, GPIO_G, GPIO_H, GPIO_I, GPIO_L // 7, 14, 0, 0, 12 pins + GPIO_A, GPIO_B, GPIO_C, GPIO_D, + GPIO_E, GPIO_F, GPIO_G, GPIO_L }; #if USE_GPIO_PORT_L - #define GPIO_PORT_COUNT 10 + #define GPIO_PORT_COUNT 8 uint32_t * vrt_block_addr[2]; #else - #define GPIO_PORT_COUNT 9 + #define GPIO_PORT_COUNT 7 uint32_t * vrt_block_addr[1]; #endif @@ -235,14 +235,14 @@ int32_t rtapi_app_main(void) } // adjust offset to correct value - vrt_offset >>= 2; + vrt_block_addr[0] += (vrt_offset/4); // add correct address values to global GPIO array - for ( n = GPIO_A; n <= GPIO_I; ++n ) + for ( n = GPIO_A; n <= GPIO_G; ++n ) { _GPIO_port_reg[n] = (struct _GPIO_PORT_REG_t *) - (vrt_block_addr[0] + vrt_offset + n*0x24); + (vrt_block_addr[0] + n*(0x24/4)); } #if USE_GPIO_PORT_L @@ -268,12 +268,10 @@ int32_t rtapi_app_main(void) } // adjust offset to correct value - vrt_offset >>= 2; + vrt_block_addr[1] += (vrt_offset/4); // add correct address values to global GPIO array - _GPIO_port_reg[GPIO_L] = - (struct _GPIO_PORT_REG_t *) - (vrt_block_addr[1] + vrt_offset + 0*0x24); + _GPIO_port_reg[GPIO_L] = (struct _GPIO_PORT_REG_t *) vrt_block_addr[1]; #endif // no need to keep phy memory file open after mmap From 889b8a64820ae042b6388c6a5b34ccd2d6a8aa89 Mon Sep 17 00:00:00 2001 From: Mick Date: Mon, 18 Dec 2017 14:35:59 +0000 Subject: [PATCH 203/516] Convert all `python` commands, to `python2` In Debian the symlink /usr/bin/python points to /usr/bin/python2.7 In other distros such a Gentoo, it points to /usr/bin/python3.6, which is the default python version. By specifying the python version as 2, machinekit will build and operate on other distros, without the default python version having to be reset globally. Since Debian has symlink for `/usr/bin/python2`, which also points to `/usr/bin/python2.7`, the change has no effect there. Signed-off-by: Mick --- configs/ARM/BeagleBone/BeBoPr++/Pepper/ReadTemp.py | 2 +- configs/ARM/BeagleBone/BeBoPr++/Pololu/ReadTemp.py | 2 +- configs/ARM/BeagleBone/BeBoPr++/ReadTemp.py | 2 +- configs/ARM/BeagleBone/BeBoPr-Bridge/ReadTemp.py | 2 +- configs/ARM/BeagleBone/BeBoPr/ReadTemp.py | 2 +- configs/ARM/BeagleBone/Fabrikator-Mini-CRAMPS/run.py | 2 +- configs/ARM/BeagleBone/MendelMax-CRAMPS/run.py | 2 +- configs/ARM/BeagleBone/PocketNC/ReadTemp.py | 2 +- configs/ARM/BeagleBone/Replicape/hal_hwconfig_replicape | 2 +- configs/ARM/BeagleBone/Replicape/hal_pwm_replicape | 2 +- configs/ARM/BeagleBone/Replicape/hal_temp_bbb | 2 +- configs/apps/gladevcp/colored-label/coloredlabel.py | 2 +- configs/apps/gladevcp/complex/complex.py | 2 +- configs/apps/gladevcp/templates/classhandler.py | 2 +- configs/apps/gladevcp/templates/classhandler_persistent.py | 2 +- configs/sim/axis/gladevcp-jwp.py | 2 +- configs/sim/axis/gladevcp/probe.py | 2 +- .../python/gladevcp-handler.py | 2 +- configs/sim/gmoccapy/gmoccapy_plasma/plasma.py | 2 +- configs/sim/gmoccapy/gmoccapy_plasma/signals.py | 2 +- configs/sim/qqvsim/etc/systemd/system/qqvsim-run.service | 2 +- configs/sim/qqvsim/etc/systemd/system/qqvsim.service | 2 +- configs/sim/qqvsim/run.py | 2 +- lib/python/drivers/ADS7828.py | 2 +- lib/python/drivers/MCP23017.py | 2 +- lib/python/drivers/PCA9685.py | 2 +- lib/python/fdm/r2temp.py | 2 +- lib/python/gladevcp/calculatorwidget.py | 2 +- lib/python/gladevcp/combi_dro.py | 2 +- lib/python/gladevcp/drowidget.py | 2 +- lib/python/gladevcp/gladebuilder.py | 2 +- lib/python/gladevcp/hal_actions.py | 2 +- lib/python/gladevcp/hal_dial.py | 2 +- lib/python/gladevcp/hal_filechooser.py | 2 +- lib/python/gladevcp/hal_gremlin.py | 2 +- lib/python/gladevcp/hal_gremlin_plus.py | 2 +- lib/python/gladevcp/hal_mdihistory.py | 2 +- lib/python/gladevcp/hal_pyngcgui.py | 2 +- lib/python/gladevcp/hal_sourceview.py | 2 +- lib/python/gladevcp/iconview.py | 2 +- lib/python/gladevcp/jogwheel.py | 2 +- lib/python/gladevcp/makepins.py | 2 +- lib/python/gladevcp/offsetpage_widget.py | 2 +- lib/python/gladevcp/offsetwidget.py | 2 +- lib/python/gladevcp/overridewidget.py | 2 +- lib/python/gladevcp/persistence.py | 2 +- lib/python/gladevcp/speedcontrol.py | 2 +- lib/python/gladevcp/tooledit_widget.py | 2 +- lib/python/gladevcp/xembed.py | 2 +- lib/python/gremlin_view.py | 2 +- lib/python/hal.py | 2 +- lib/python/hal_glib.py | 2 +- lib/python/popupkeyboard.py | 2 +- lib/python/pyngcgui.py | 2 +- lib/python/rs274/OpenGLTk.py | 2 +- lib/python/rs274/options.py | 2 +- nosetests/test_compat.py | 2 +- nosetests/test_groups.py | 2 +- nosetests/test_mk_hal_basics.py | 2 +- nosetests/test_netcmd.py | 2 +- nosetests/test_pinops.py | 2 +- nosetests/test_ring.py | 2 +- nosetests/test_ring_intracomp.py | 2 +- nosetests/test_ringdemo.py | 2 +- nosetests/test_rtapi.py | 2 +- nosetests/test_streamring.py | 2 +- nosetests/unittest_icomp.py | 2 +- nosetests/unittest_instbindings.py | 2 +- nosetests/unittest_or2.py | 2 +- scripts/decode_dmesg | 2 +- scripts/fix-tp-loading | 2 +- scripts/g1-to-g23 | 2 +- scripts/gcode-to-ngc | 2 +- scripts/platform-is-supported | 2 +- scripts/torture.py | 2 +- share/fdm/thermistor_tables/Marlin_converter/ConvertTable.py | 2 +- src/emc/usr_intf/axis/scripts/debuglevel.py | 2 +- src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py | 2 +- src/emc/usr_intf/axis/scripts/image-to-gcode.py | 2 +- src/emc/usr_intf/axis/scripts/lintini.py | 4 ++-- src/emc/usr_intf/axis/scripts/mdi.py | 2 +- src/emc/usr_intf/axis/scripts/teach-in.py | 4 ++-- src/emc/usr_intf/axis/scripts/tracking-test.py | 2 +- src/emc/usr_intf/gmoccapy/dialogs.py | 2 +- src/emc/usr_intf/gmoccapy/getiniinfo.py | 2 +- src/emc/usr_intf/gmoccapy/gmoccapy.py | 4 ++-- src/emc/usr_intf/gmoccapy/notification.py | 2 +- src/emc/usr_intf/gmoccapy/player.py | 2 +- src/emc/usr_intf/gmoccapy/widgets.py | 2 +- src/emc/usr_intf/gremlin/gremlin-run | 2 +- src/emc/usr_intf/gremlin/gremlin.py | 2 +- src/emc/usr_intf/gscreen/gscreen.py | 2 +- src/emc/usr_intf/pncconf/pncconf.py | 4 ++-- src/emc/usr_intf/stepconf/build_HAL.py | 2 +- src/emc/usr_intf/stepconf/build_INI.py | 4 ++-- src/emc/usr_intf/stepconf/pages.py | 2 +- src/emc/usr_intf/stepconf/stepconf.py | 2 +- src/emc/usr_intf/touchy/touchy.py | 2 +- src/hal/cython/examples/component.py | 2 +- src/hal/cython/examples/heaptrace.py | 2 +- src/hal/cython/examples/internal.py | 2 +- src/hal/cython/examples/test_instance.py | 2 +- src/hal/cython/test.py | 2 +- src/hal/drivers/hal_bb_gpio/get_pin_data.py | 2 +- src/hal/icomp-example/lut5.py | 2 +- src/hal/lib/hal.py | 2 +- src/hal/support/pasm/reval.py | 2 +- src/hal/user_comps/gladevcp.py | 2 +- src/hal/user_comps/hal_gpio_mcp23017.py | 2 +- src/hal/user_comps/hal_gy86.py | 2 +- src/hal/user_comps/hal_input.py | 2 +- src/hal/user_comps/hal_pwm_pca9685.py | 2 +- src/hal/user_comps/hal_storage.py | 2 +- src/hal/user_comps/hal_temp_ads7828.py | 2 +- src/hal/user_comps/hal_temp_atlas.py | 2 +- src/hal/user_comps/hal_temp_bbb.py | 2 +- src/hal/user_comps/pyvcp.py | 2 +- src/hal/user_comps/vismach/5axisgui.py | 2 +- src/hal/user_comps/vismach/hbmgui.py | 2 +- src/hal/user_comps/vismach/hexagui.py | 2 +- src/hal/user_comps/vismach/maho600gui.py | 2 +- src/hal/user_comps/vismach/max5gui.py | 2 +- src/hal/user_comps/vismach/puma560gui.py | 2 +- src/hal/user_comps/vismach/pumagui.py | 2 +- src/hal/user_comps/vismach/rostock.py | 2 +- src/hal/user_comps/vismach/scaragui.py | 2 +- src/hal/utils/comp.g | 2 +- src/hal/utils/halgui/halgui.py | 2 +- src/hal/utils/instcomp.g | 2 +- src/hal/utils/yapps.py | 4 ++-- src/machinetalk/config-service/configserver.py | 2 +- src/machinetalk/mklauncher/mklauncher.py | 2 +- src/machinetalk/mkwrapper/emcstatusclient.py | 2 +- src/machinetalk/mkwrapper/mkwrapper.py | 2 +- src/machinetalk/msgcomponents/zmqringsub.py | 2 +- src/machinetalk/nanopb/generator/nanopb_generator.py | 2 +- src/machinetalk/nanopb/generator/protoc-gen-nanopb | 2 +- src/machinetalk/proto/scripts/protoc-gen-depends | 2 +- src/machinetalk/proto/setup.py | 2 +- src/machinetalk/support/pb2json.py | 2 +- src/machinetalk/tutorial/json-ws/json-ws-micromot-client.py | 2 +- src/machinetalk/tutorial/json-ws/micromot-server.py | 2 +- src/machinetalk/tutorial/motorctrl/motorctrl.py | 2 +- src/machinetalk/tutorial/zeroconf/resolve.py | 2 +- src/machinetalk/videoserver/videoserver.py | 2 +- src/machinetalk/webtalk/tests/zws-proto-testclient.py | 2 +- src/machinetalk/webtalk/wszmqproxy-test.py | 2 +- src/modsilent.py | 2 +- src/po/fixpaths.py | 2 +- tests/hal-link-unlink/hallink.py | 2 +- tests/halui-jogging/test-ui.py | 2 +- tests/interp/subroutine-return/test-ui.py | 2 +- tests/motion-logger/mountaindew/test-ui.py | 2 +- tests/motion/g0/checkresult | 2 +- tests/remap/remap-io/remap.py | 2 +- tests/remap/remap-io/test-ui.py | 2 +- tests/remap/remap-io/toplevel.py | 2 +- tests/remap/remap-reentry/toplevel.py | 2 +- tests/remap/sequencing/permute.py | 2 +- tests/threads.0/checkresult | 2 +- tests/toolchanger/m61/test-ui.py | 2 +- tests/trajectory-planner/circular-arcs/linuxcnc_control.py | 2 +- tests/trajectory-planner/circular-arcs/machine_setup.py | 2 +- tests/trajectory-planner/circular-arcs/run_all_tests.py | 2 +- 164 files changed, 170 insertions(+), 170 deletions(-) diff --git a/configs/ARM/BeagleBone/BeBoPr++/Pepper/ReadTemp.py b/configs/ARM/BeagleBone/BeBoPr++/Pepper/ReadTemp.py index f05fa18138..fd74b38cc0 100755 --- a/configs/ARM/BeagleBone/BeBoPr++/Pepper/ReadTemp.py +++ b/configs/ARM/BeagleBone/BeBoPr++/Pepper/ReadTemp.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 ######################################################################## # Description: temp.py # diff --git a/configs/ARM/BeagleBone/BeBoPr++/Pololu/ReadTemp.py b/configs/ARM/BeagleBone/BeBoPr++/Pololu/ReadTemp.py index f05fa18138..fd74b38cc0 100755 --- a/configs/ARM/BeagleBone/BeBoPr++/Pololu/ReadTemp.py +++ b/configs/ARM/BeagleBone/BeBoPr++/Pololu/ReadTemp.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 ######################################################################## # Description: temp.py # diff --git a/configs/ARM/BeagleBone/BeBoPr++/ReadTemp.py b/configs/ARM/BeagleBone/BeBoPr++/ReadTemp.py index f05fa18138..fd74b38cc0 100755 --- a/configs/ARM/BeagleBone/BeBoPr++/ReadTemp.py +++ b/configs/ARM/BeagleBone/BeBoPr++/ReadTemp.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 ######################################################################## # Description: temp.py # diff --git a/configs/ARM/BeagleBone/BeBoPr-Bridge/ReadTemp.py b/configs/ARM/BeagleBone/BeBoPr-Bridge/ReadTemp.py index f05fa18138..fd74b38cc0 100755 --- a/configs/ARM/BeagleBone/BeBoPr-Bridge/ReadTemp.py +++ b/configs/ARM/BeagleBone/BeBoPr-Bridge/ReadTemp.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 ######################################################################## # Description: temp.py # diff --git a/configs/ARM/BeagleBone/BeBoPr/ReadTemp.py b/configs/ARM/BeagleBone/BeBoPr/ReadTemp.py index f05fa18138..fd74b38cc0 100755 --- a/configs/ARM/BeagleBone/BeBoPr/ReadTemp.py +++ b/configs/ARM/BeagleBone/BeBoPr/ReadTemp.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 ######################################################################## # Description: temp.py # diff --git a/configs/ARM/BeagleBone/Fabrikator-Mini-CRAMPS/run.py b/configs/ARM/BeagleBone/Fabrikator-Mini-CRAMPS/run.py index d584e57cc7..8a528899d5 100755 --- a/configs/ARM/BeagleBone/Fabrikator-Mini-CRAMPS/run.py +++ b/configs/ARM/BeagleBone/Fabrikator-Mini-CRAMPS/run.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 import sys import os diff --git a/configs/ARM/BeagleBone/MendelMax-CRAMPS/run.py b/configs/ARM/BeagleBone/MendelMax-CRAMPS/run.py index d21e3b49cd..e06914c922 100755 --- a/configs/ARM/BeagleBone/MendelMax-CRAMPS/run.py +++ b/configs/ARM/BeagleBone/MendelMax-CRAMPS/run.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 import sys import os diff --git a/configs/ARM/BeagleBone/PocketNC/ReadTemp.py b/configs/ARM/BeagleBone/PocketNC/ReadTemp.py index f05fa18138..fd74b38cc0 100644 --- a/configs/ARM/BeagleBone/PocketNC/ReadTemp.py +++ b/configs/ARM/BeagleBone/PocketNC/ReadTemp.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 ######################################################################## # Description: temp.py # diff --git a/configs/ARM/BeagleBone/Replicape/hal_hwconfig_replicape b/configs/ARM/BeagleBone/Replicape/hal_hwconfig_replicape index a4d9842076..dae3f63b6f 100755 --- a/configs/ARM/BeagleBone/Replicape/hal_hwconfig_replicape +++ b/configs/ARM/BeagleBone/Replicape/hal_hwconfig_replicape @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 # encoding: utf-8 # vim: set sw=4 sts=4 et: diff --git a/configs/ARM/BeagleBone/Replicape/hal_pwm_replicape b/configs/ARM/BeagleBone/Replicape/hal_pwm_replicape index 89897511ed..3dc24bd02b 100755 --- a/configs/ARM/BeagleBone/Replicape/hal_pwm_replicape +++ b/configs/ARM/BeagleBone/Replicape/hal_pwm_replicape @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 # encoding: utf-8 # vim: set sw=4 sts=4 et: diff --git a/configs/ARM/BeagleBone/Replicape/hal_temp_bbb b/configs/ARM/BeagleBone/Replicape/hal_temp_bbb index 7a5ae801b1..b457e0d059 100755 --- a/configs/ARM/BeagleBone/Replicape/hal_temp_bbb +++ b/configs/ARM/BeagleBone/Replicape/hal_temp_bbb @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 # encoding: utf-8 ######################################################################## diff --git a/configs/apps/gladevcp/colored-label/coloredlabel.py b/configs/apps/gladevcp/colored-label/coloredlabel.py index 1541aaf43d..3b46196980 100644 --- a/configs/apps/gladevcp/colored-label/coloredlabel.py +++ b/configs/apps/gladevcp/colored-label/coloredlabel.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # vim: sts=4 sw=4 et # This is a component of Machinekit # complex.py Copyright 2011 Michael Haberler diff --git a/configs/apps/gladevcp/complex/complex.py b/configs/apps/gladevcp/complex/complex.py index cee52b2416..3c063834e9 100644 --- a/configs/apps/gladevcp/complex/complex.py +++ b/configs/apps/gladevcp/complex/complex.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # vim: sts=4 sw=4 et # This is a component of Machinekit # complex.py Copyright 2010 Michael Haberler diff --git a/configs/apps/gladevcp/templates/classhandler.py b/configs/apps/gladevcp/templates/classhandler.py index 6fa09e95d3..c0a907b8be 100644 --- a/configs/apps/gladevcp/templates/classhandler.py +++ b/configs/apps/gladevcp/templates/classhandler.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # vim: sts=4 sw=4 et # This is a component of Machinekit # classhandler.py Copyright 2010 Michael Haberler diff --git a/configs/apps/gladevcp/templates/classhandler_persistent.py b/configs/apps/gladevcp/templates/classhandler_persistent.py index ccd465a0a6..b02d31eb17 100644 --- a/configs/apps/gladevcp/templates/classhandler_persistent.py +++ b/configs/apps/gladevcp/templates/classhandler_persistent.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # vim: sts=4 sw=4 et # This is a component of Machinekit # classhandler_persistent.py Copyright 2010 Michael Haberler diff --git a/configs/sim/axis/gladevcp-jwp.py b/configs/sim/axis/gladevcp-jwp.py index a51999cd10..a244e9b315 100644 --- a/configs/sim/axis/gladevcp-jwp.py +++ b/configs/sim/axis/gladevcp-jwp.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # demo interface to motion jog-while-paused features diff --git a/configs/sim/axis/gladevcp/probe.py b/configs/sim/axis/gladevcp/probe.py index 01baae4fc3..fa4829b014 100644 --- a/configs/sim/axis/gladevcp/probe.py +++ b/configs/sim/axis/gladevcp/probe.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # vim: sts=4 sw=4 et # This is a component of Machinekit # probe.py Copyright 2010 Michael Haberler diff --git a/configs/sim/axis/remap/manual-toolchange-with-tool-length-switch/python/gladevcp-handler.py b/configs/sim/axis/remap/manual-toolchange-with-tool-length-switch/python/gladevcp-handler.py index 3170e2acb8..ab598c7d7d 100644 --- a/configs/sim/axis/remap/manual-toolchange-with-tool-length-switch/python/gladevcp-handler.py +++ b/configs/sim/axis/remap/manual-toolchange-with-tool-length-switch/python/gladevcp-handler.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 import hal diff --git a/configs/sim/gmoccapy/gmoccapy_plasma/plasma.py b/configs/sim/gmoccapy/gmoccapy_plasma/plasma.py index 9b9744570c..d56238de70 100644 --- a/configs/sim/gmoccapy/gmoccapy_plasma/plasma.py +++ b/configs/sim/gmoccapy/gmoccapy_plasma/plasma.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # -*- coding:UTF-8 -*- """ This file will control some options of the gmoccapy plasma screen diff --git a/configs/sim/gmoccapy/gmoccapy_plasma/signals.py b/configs/sim/gmoccapy/gmoccapy_plasma/signals.py index e19aabd194..6088a0c0b5 100644 --- a/configs/sim/gmoccapy/gmoccapy_plasma/signals.py +++ b/configs/sim/gmoccapy/gmoccapy_plasma/signals.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # -*- coding:UTF-8 -*- """ This file will control some options of the gmoccapy plasma screen diff --git a/configs/sim/qqvsim/etc/systemd/system/qqvsim-run.service b/configs/sim/qqvsim/etc/systemd/system/qqvsim-run.service index 4441f47bb6..f4bd751d90 100644 --- a/configs/sim/qqvsim/etc/systemd/system/qqvsim-run.service +++ b/configs/sim/qqvsim/etc/systemd/system/qqvsim-run.service @@ -5,7 +5,7 @@ After=syslog.target network.target qqvsim.target [Service] Type=simple ExecStart=/bin/bash -a -c "source /home/ysli/proj/machinekit/scripts/rip-environment && \ - /usr/bin/python /home/ysli/proj/remote-ui/qqvsim/run.py" + /usr/bin/python2 /home/ysli/proj/remote-ui/qqvsim/run.py" User=ysli LimitMEMLOCK=33554432 diff --git a/configs/sim/qqvsim/etc/systemd/system/qqvsim.service b/configs/sim/qqvsim/etc/systemd/system/qqvsim.service index b610d139c3..3d9407087a 100644 --- a/configs/sim/qqvsim/etc/systemd/system/qqvsim.service +++ b/configs/sim/qqvsim/etc/systemd/system/qqvsim.service @@ -5,7 +5,7 @@ After=syslog.target network.target [Service] Type=simple ExecStart=/bin/bash -a -c "source /home/pi/proj/machinekit/scripts/rip-environment && \ - /usr/bin/python /home/pi/proj/machinekit/bin/mklauncher /home/pi/proj/remote-ui/qqvsim" + /usr/bin/python2 /home/pi/proj/machinekit/bin/mklauncher /home/pi/proj/remote-ui/qqvsim" ExecStopPost=/bin/bash -a -c "/home/pi/bin/linuxcnc_stop" User=pi LimitMEMLOCK=33554432 diff --git a/configs/sim/qqvsim/run.py b/configs/sim/qqvsim/run.py index 51b53c0d63..8809dba51e 100755 --- a/configs/sim/qqvsim/run.py +++ b/configs/sim/qqvsim/run.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 import sys import os diff --git a/lib/python/drivers/ADS7828.py b/lib/python/drivers/ADS7828.py index f0e71193ed..dbdacbd456 100755 --- a/lib/python/drivers/ADS7828.py +++ b/lib/python/drivers/ADS7828.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 import smbus diff --git a/lib/python/drivers/MCP23017.py b/lib/python/drivers/MCP23017.py index d2c487535e..86283441de 100755 --- a/lib/python/drivers/MCP23017.py +++ b/lib/python/drivers/MCP23017.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 import smbus diff --git a/lib/python/drivers/PCA9685.py b/lib/python/drivers/PCA9685.py index 606082fc61..0893a24344 100755 --- a/lib/python/drivers/PCA9685.py +++ b/lib/python/drivers/PCA9685.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 import time import smbus diff --git a/lib/python/fdm/r2temp.py b/lib/python/fdm/r2temp.py index bfadcc79a2..933128a7a8 100755 --- a/lib/python/fdm/r2temp.py +++ b/lib/python/fdm/r2temp.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 import bisect import os diff --git a/lib/python/gladevcp/calculatorwidget.py b/lib/python/gladevcp/calculatorwidget.py index d054f678ab..45766aabce 100644 --- a/lib/python/gladevcp/calculatorwidget.py +++ b/lib/python/gladevcp/calculatorwidget.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # GladeVcp Widget - calculator input # This widgets allows simple calculations. # The result can be returned for further use. diff --git a/lib/python/gladevcp/combi_dro.py b/lib/python/gladevcp/combi_dro.py index b837bfeac0..5d16ae14c0 100644 --- a/lib/python/gladevcp/combi_dro.py +++ b/lib/python/gladevcp/combi_dro.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # GladeVcp Widget - DRO widget, showing all 3 reference types # This widgets displays linuxcnc axis position information. diff --git a/lib/python/gladevcp/drowidget.py b/lib/python/gladevcp/drowidget.py index 72d71d4953..40f2f23979 100644 --- a/lib/python/gladevcp/drowidget.py +++ b/lib/python/gladevcp/drowidget.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # GladeVcp Widget - DRO label widget # This widgets displays linuxcnc axis position information. # diff --git a/lib/python/gladevcp/gladebuilder.py b/lib/python/gladevcp/gladebuilder.py index 94805e88c2..034e2d4289 100644 --- a/lib/python/gladevcp/gladebuilder.py +++ b/lib/python/gladevcp/gladebuilder.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # vim: sts=4 sw=4 et import gtk diff --git a/lib/python/gladevcp/hal_actions.py b/lib/python/gladevcp/hal_actions.py index dfadf45608..d19e7d5648 100644 --- a/lib/python/gladevcp/hal_actions.py +++ b/lib/python/gladevcp/hal_actions.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # vim: sts=4 sw=4 et # GladeVcp actions # diff --git a/lib/python/gladevcp/hal_dial.py b/lib/python/gladevcp/hal_dial.py index 853a3f6a56..1c00bad7eb 100644 --- a/lib/python/gladevcp/hal_dial.py +++ b/lib/python/gladevcp/hal_dial.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # hal_dial.py # a pygtk widget that implements a dial with HAL pins diff --git a/lib/python/gladevcp/hal_filechooser.py b/lib/python/gladevcp/hal_filechooser.py index 8602dc16a4..8b69bb9819 100644 --- a/lib/python/gladevcp/hal_filechooser.py +++ b/lib/python/gladevcp/hal_filechooser.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # vim: sts=4 sw=4 et # GladeVcp FileChooser related widgets # diff --git a/lib/python/gladevcp/hal_gremlin.py b/lib/python/gladevcp/hal_gremlin.py index f1f4fe9e0b..81c5a56b08 100644 --- a/lib/python/gladevcp/hal_gremlin.py +++ b/lib/python/gladevcp/hal_gremlin.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # vim: sts=4 sw=4 et # GladeVcp Widgets # diff --git a/lib/python/gladevcp/hal_gremlin_plus.py b/lib/python/gladevcp/hal_gremlin_plus.py index 0702787cd0..31c0ae1cda 100644 --- a/lib/python/gladevcp/hal_gremlin_plus.py +++ b/lib/python/gladevcp/hal_gremlin_plus.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 #------------------------------------------------------------------------------ # Copyright: 2013 diff --git a/lib/python/gladevcp/hal_mdihistory.py b/lib/python/gladevcp/hal_mdihistory.py index 939dc90cee..e8356a2489 100644 --- a/lib/python/gladevcp/hal_mdihistory.py +++ b/lib/python/gladevcp/hal_mdihistory.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # vim: sts=4 sw=4 et # GladeVcp MDI history widget # diff --git a/lib/python/gladevcp/hal_pyngcgui.py b/lib/python/gladevcp/hal_pyngcgui.py index 91a849f1dc..7489d744b1 100644 --- a/lib/python/gladevcp/hal_pyngcgui.py +++ b/lib/python/gladevcp/hal_pyngcgui.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 #------------------------------------------------------------------------------ # Copyright: 2013 diff --git a/lib/python/gladevcp/hal_sourceview.py b/lib/python/gladevcp/hal_sourceview.py index afe327529a..c0b70ad674 100644 --- a/lib/python/gladevcp/hal_sourceview.py +++ b/lib/python/gladevcp/hal_sourceview.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # vim: sts=4 sw=4 et # GladeVcp actions # diff --git a/lib/python/gladevcp/iconview.py b/lib/python/gladevcp/iconview.py index 3a3a4be0d2..1dd87db9d2 100755 --- a/lib/python/gladevcp/iconview.py +++ b/lib/python/gladevcp/iconview.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 ''' This IconView widget shows the contents of the currently selected diff --git a/lib/python/gladevcp/jogwheel.py b/lib/python/gladevcp/jogwheel.py index 3a66ebe314..47336c10f9 100644 --- a/lib/python/gladevcp/jogwheel.py +++ b/lib/python/gladevcp/jogwheel.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # GladeVcp Widget # JogWheel widget, to simulate a real jogwheel diff --git a/lib/python/gladevcp/makepins.py b/lib/python/gladevcp/makepins.py index 5a22f05e2b..dba096d4f1 100644 --- a/lib/python/gladevcp/makepins.py +++ b/lib/python/gladevcp/makepins.py @@ -1,4 +1,4 @@ -#!/usr/bin/python2.4 +#!/usr/bin/python2 # -*- encoding: utf-8 -*- # GLADE_VCP # Copyright 2010 Chris Morley diff --git a/lib/python/gladevcp/offsetpage_widget.py b/lib/python/gladevcp/offsetpage_widget.py index 37af00ad19..b5acacfb1e 100755 --- a/lib/python/gladevcp/offsetpage_widget.py +++ b/lib/python/gladevcp/offsetpage_widget.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # GladeVcp Widget - offsetpage # # Copyright (c) 2013 Chris Morley diff --git a/lib/python/gladevcp/offsetwidget.py b/lib/python/gladevcp/offsetwidget.py index 69572d43d5..8798c31b82 100644 --- a/lib/python/gladevcp/offsetwidget.py +++ b/lib/python/gladevcp/offsetwidget.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # GladeVcp Widget - DRO label widget # This widgets displays linuxcnc axis position information. # diff --git a/lib/python/gladevcp/overridewidget.py b/lib/python/gladevcp/overridewidget.py index 2be2469a20..5cf232623a 100644 --- a/lib/python/gladevcp/overridewidget.py +++ b/lib/python/gladevcp/overridewidget.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # GladeVcp Widget - override widget # This widgets controls linuxcnc's override rate # diff --git a/lib/python/gladevcp/persistence.py b/lib/python/gladevcp/persistence.py index 9ea069470a..e507c6618d 100644 --- a/lib/python/gladevcp/persistence.py +++ b/lib/python/gladevcp/persistence.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # vim: sts=4 sw=4 et # This is a component of EMC # util.py Copyright 2010 Michael Haberler diff --git a/lib/python/gladevcp/speedcontrol.py b/lib/python/gladevcp/speedcontrol.py index 3744f55f4c..d1a8546a3b 100755 --- a/lib/python/gladevcp/speedcontrol.py +++ b/lib/python/gladevcp/speedcontrol.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # -*- coding:UTF-8 -*- # GladeVcp Widget diff --git a/lib/python/gladevcp/tooledit_widget.py b/lib/python/gladevcp/tooledit_widget.py index 859c2d1883..53dd40dc4f 100644 --- a/lib/python/gladevcp/tooledit_widget.py +++ b/lib/python/gladevcp/tooledit_widget.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # GladeVcp Widget - tooledit # # Copyright (c) 2012 Chris Morley diff --git a/lib/python/gladevcp/xembed.py b/lib/python/gladevcp/xembed.py index 205f429eb6..985c8a9c8b 100644 --- a/lib/python/gladevcp/xembed.py +++ b/lib/python/gladevcp/xembed.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # vim: sts=4 sw=4 et """ XEmbed helper functions to allow correct embeding inside Axis diff --git a/lib/python/gremlin_view.py b/lib/python/gremlin_view.py index bef1d6add5..a420b3e8ef 100644 --- a/lib/python/gremlin_view.py +++ b/lib/python/gremlin_view.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 #------------------------------------------------------------------------------ # Copyright: 2013 diff --git a/lib/python/hal.py b/lib/python/hal.py index 9906990371..20179f937a 100644 --- a/lib/python/hal.py +++ b/lib/python/hal.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # vim: sts=4 sw=4 et """ diff --git a/lib/python/hal_glib.py b/lib/python/hal_glib.py index 25705cc673..9e8ee605e9 100644 --- a/lib/python/hal_glib.py +++ b/lib/python/hal_glib.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # vim: sts=4 sw=4 et import _hal, hal, gobject diff --git a/lib/python/popupkeyboard.py b/lib/python/popupkeyboard.py index a3f90e27c8..dc883b69a0 100644 --- a/lib/python/popupkeyboard.py +++ b/lib/python/popupkeyboard.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 #------------------------------------------------------------------------------ # Copyright: 2013 diff --git a/lib/python/pyngcgui.py b/lib/python/pyngcgui.py index 963c9d8af5..5e5620b8af 100644 --- a/lib/python/pyngcgui.py +++ b/lib/python/pyngcgui.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # Notes: # 1) ini file items: diff --git a/lib/python/rs274/OpenGLTk.py b/lib/python/rs274/OpenGLTk.py index a9834fb649..68b7a58072 100755 --- a/lib/python/rs274/OpenGLTk.py +++ b/lib/python/rs274/OpenGLTk.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # This file is from PyOpenGL-2.0.1.07. That distribution's license is # """License :: OSI Approved :: BSD License""", diff --git a/lib/python/rs274/options.py b/lib/python/rs274/options.py index 48249eac8f..14c52efe73 100644 --- a/lib/python/rs274/options.py +++ b/lib/python/rs274/options.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # This is a component of AXIS, a front-end for emc # Copyright 2004, 2005, 2006 Jeff Epler # diff --git a/nosetests/test_compat.py b/nosetests/test_compat.py index aede5d77a4..12650112e3 100644 --- a/nosetests/test_compat.py +++ b/nosetests/test_compat.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 from nose import with_setup from machinekit.nosetests.realtime import setup_module,teardown_module diff --git a/nosetests/test_groups.py b/nosetests/test_groups.py index 352eb0563f..4d74110868 100644 --- a/nosetests/test_groups.py +++ b/nosetests/test_groups.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 from nose import with_setup from machinekit.nosetests.realtime import setup_module,teardown_module diff --git a/nosetests/test_mk_hal_basics.py b/nosetests/test_mk_hal_basics.py index cbc5dd4c3c..52045d3de8 100644 --- a/nosetests/test_mk_hal_basics.py +++ b/nosetests/test_mk_hal_basics.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 from nose import with_setup from machinekit.nosetests.realtime import setup_module,teardown_module diff --git a/nosetests/test_netcmd.py b/nosetests/test_netcmd.py index e867d023b8..2dba291683 100644 --- a/nosetests/test_netcmd.py +++ b/nosetests/test_netcmd.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 from nose import with_setup diff --git a/nosetests/test_pinops.py b/nosetests/test_pinops.py index 5ed7d828f9..4dffd2d833 100644 --- a/nosetests/test_pinops.py +++ b/nosetests/test_pinops.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 from nose import with_setup from machinekit.nosetests.realtime import setup_module,teardown_module diff --git a/nosetests/test_ring.py b/nosetests/test_ring.py index 6869cdeba5..7a95d9921a 100644 --- a/nosetests/test_ring.py +++ b/nosetests/test_ring.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 import os,time,sys from nose import with_setup diff --git a/nosetests/test_ring_intracomp.py b/nosetests/test_ring_intracomp.py index cf2168ad39..a137d407c7 100644 --- a/nosetests/test_ring_intracomp.py +++ b/nosetests/test_ring_intracomp.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # create a ring # assure records written can be read back diff --git a/nosetests/test_ringdemo.py b/nosetests/test_ringdemo.py index 92355b2078..ef1f50735a 100644 --- a/nosetests/test_ringdemo.py +++ b/nosetests/test_ringdemo.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 import os,time,sys from nose import with_setup diff --git a/nosetests/test_rtapi.py b/nosetests/test_rtapi.py index 41d964503a..e09be44ae3 100644 --- a/nosetests/test_rtapi.py +++ b/nosetests/test_rtapi.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 import os import time import sys diff --git a/nosetests/test_streamring.py b/nosetests/test_streamring.py index 7ea961ba08..11b9971af4 100644 --- a/nosetests/test_streamring.py +++ b/nosetests/test_streamring.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # create a ring # assure records written can be read back diff --git a/nosetests/unittest_icomp.py b/nosetests/unittest_icomp.py index bd85ea87d9..f10ab5775b 100644 --- a/nosetests/unittest_icomp.py +++ b/nosetests/unittest_icomp.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # icomp is the demo/test comp for the HAL instantiation API # it has the following parameters: diff --git a/nosetests/unittest_instbindings.py b/nosetests/unittest_instbindings.py index 180bb8dce3..2e9767316b 100644 --- a/nosetests/unittest_instbindings.py +++ b/nosetests/unittest_instbindings.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # verify the cython inst bindings diff --git a/nosetests/unittest_or2.py b/nosetests/unittest_or2.py index e733ba35cb..98cb7316de 100644 --- a/nosetests/unittest_or2.py +++ b/nosetests/unittest_or2.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 from nose import with_setup from machinekit.nosetests.realtime import setup_module ,teardown_module diff --git a/scripts/decode_dmesg b/scripts/decode_dmesg index 2ba29ec416..d40b7bcb77 100755 --- a/scripts/decode_dmesg +++ b/scripts/decode_dmesg @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 """\ This script decodes hex floats (e.g., in dmesg) into real floats. In the future maybe it will do other emc2-specific dmesg decoding. diff --git a/scripts/fix-tp-loading b/scripts/fix-tp-loading index 868c9e2693..c517857e0a 100644 --- a/scripts/fix-tp-loading +++ b/scripts/fix-tp-loading @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 import sys,os import fileinput inplace = 1 diff --git a/scripts/g1-to-g23 b/scripts/g1-to-g23 index 99838751e0..775fa51181 100755 --- a/scripts/g1-to-g23 +++ b/scripts/g1-to-g23 @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 # -*- coding: utf-8 -*- # Copyright 2013 Frank Tkalcevic (frank@franksworkshop.com.au) diff --git a/scripts/gcode-to-ngc b/scripts/gcode-to-ngc index 056d83653b..a6ebecf4ef 100755 --- a/scripts/gcode-to-ngc +++ b/scripts/gcode-to-ngc @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 # -*- coding: utf-8 -*- # Copyright 2015 Alexander Roessler (mail AT roessler DOT systems) diff --git a/scripts/platform-is-supported b/scripts/platform-is-supported index 611440625a..fb301e064a 100755 --- a/scripts/platform-is-supported +++ b/scripts/platform-is-supported @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 # # This script returns 0 when run on a platform supported by the current # branch of LinuxCNC, and 1 when run on an unsupported platform. It is diff --git a/scripts/torture.py b/scripts/torture.py index 1cafd8d8f2..445fed95bb 100755 --- a/scripts/torture.py +++ b/scripts/torture.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 # Copyright (C) 2012 Jeff Epler # # This program is free software; you can redistribute it and/or modify diff --git a/share/fdm/thermistor_tables/Marlin_converter/ConvertTable.py b/share/fdm/thermistor_tables/Marlin_converter/ConvertTable.py index 2ad11bd8f1..8c8ec00c3b 100755 --- a/share/fdm/thermistor_tables/Marlin_converter/ConvertTable.py +++ b/share/fdm/thermistor_tables/Marlin_converter/ConvertTable.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 # encoding: utf-8 """ ConvertTable.py diff --git a/src/emc/usr_intf/axis/scripts/debuglevel.py b/src/emc/usr_intf/axis/scripts/debuglevel.py index 6a6e3ac67b..2fa8e86b4c 100644 --- a/src/emc/usr_intf/axis/scripts/debuglevel.py +++ b/src/emc/usr_intf/axis/scripts/debuglevel.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 import sys, os import gettext BASE = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), "..")) diff --git a/src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py b/src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py index 1c95299840..93d1ba0ad0 100644 --- a/src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py +++ b/src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 import sys, os import gettext BASE = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), "..")) diff --git a/src/emc/usr_intf/axis/scripts/image-to-gcode.py b/src/emc/usr_intf/axis/scripts/image-to-gcode.py index 9f7f8d089d..03ed65701a 100644 --- a/src/emc/usr_intf/axis/scripts/image-to-gcode.py +++ b/src/emc/usr_intf/axis/scripts/image-to-gcode.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 ## image-to-gcode is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by the diff --git a/src/emc/usr_intf/axis/scripts/lintini.py b/src/emc/usr_intf/axis/scripts/lintini.py index 011a335d91..1b4fbcc67c 100644 --- a/src/emc/usr_intf/axis/scripts/lintini.py +++ b/src/emc/usr_intf/axis/scripts/lintini.py @@ -1,5 +1,5 @@ -#!/usr/bin/env python -#!/usr/bin/python +#!/usr/bin/env python2 +#!/usr/bin/python2 # This is a component of AXIS, a front-end for LinuxCNC # Copyright 2004, 2005, 2006 Jeff Epler and # Chris Radek diff --git a/src/emc/usr_intf/axis/scripts/mdi.py b/src/emc/usr_intf/axis/scripts/mdi.py index 0ee8190bfa..773d1e3b46 100644 --- a/src/emc/usr_intf/axis/scripts/mdi.py +++ b/src/emc/usr_intf/axis/scripts/mdi.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # This is a component of AXIS, a front-end for LinuxCNC # Copyright 2004, 2005, 2006 Jeff Epler # diff --git a/src/emc/usr_intf/axis/scripts/teach-in.py b/src/emc/usr_intf/axis/scripts/teach-in.py index c81541c60b..91f90a38fe 100755 --- a/src/emc/usr_intf/axis/scripts/teach-in.py +++ b/src/emc/usr_intf/axis/scripts/teach-in.py @@ -1,6 +1,6 @@ -#!/usr/bin/python +#!/usr/bin/python2 """Usage: - python teach.py nmlfile outputfile + python2 teach.py nmlfile outputfile If outputfile is not specified, writes to standard output. You must ". scripts/rip-environment" before running this script, if you use diff --git a/src/emc/usr_intf/axis/scripts/tracking-test.py b/src/emc/usr_intf/axis/scripts/tracking-test.py index eaad1e6852..2b2b308336 100755 --- a/src/emc/usr_intf/axis/scripts/tracking-test.py +++ b/src/emc/usr_intf/axis/scripts/tracking-test.py @@ -1,4 +1,4 @@ -#!/usr/bin/python2.4 +#!/usr/bin/python2 # Copyright 2007 Ben Lipkowitz # You may distribute this software under the GNU GPL v2 or later # diff --git a/src/emc/usr_intf/gmoccapy/dialogs.py b/src/emc/usr_intf/gmoccapy/dialogs.py index 1fc952c4ba..f644953726 100644 --- a/src/emc/usr_intf/gmoccapy/dialogs.py +++ b/src/emc/usr_intf/gmoccapy/dialogs.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 ''' This class is used to handle the dialogs from gmoccapy, diff --git a/src/emc/usr_intf/gmoccapy/getiniinfo.py b/src/emc/usr_intf/gmoccapy/getiniinfo.py index e2a86c169a..87a15537c8 100644 --- a/src/emc/usr_intf/gmoccapy/getiniinfo.py +++ b/src/emc/usr_intf/gmoccapy/getiniinfo.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 ''' This class is used to get information from a config.ini file, diff --git a/src/emc/usr_intf/gmoccapy/gmoccapy.py b/src/emc/usr_intf/gmoccapy/gmoccapy.py index 2000bf23c6..3b32aea5e2 100755 --- a/src/emc/usr_intf/gmoccapy/gmoccapy.py +++ b/src/emc/usr_intf/gmoccapy/gmoccapy.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 # -*- coding:UTF-8 -*- """ A try of a new GUI for LinuxCNC based on gladevcp and Python @@ -537,7 +537,7 @@ def __init__( self ): False, bool ) ) # check the highlighting type - # the following would load the python language + # the following would load the python2 language # self.widgets.gcode_view.set_language("python") LANGDIR = os.path.join( BASE, "share", "gtksourceview-2.0", "language-specs" ) file_path = os.path.join( LANGDIR, "gcode.lang" ) diff --git a/src/emc/usr_intf/gmoccapy/notification.py b/src/emc/usr_intf/gmoccapy/notification.py index 3588534975..bb5a7ee7a9 100755 --- a/src/emc/usr_intf/gmoccapy/notification.py +++ b/src/emc/usr_intf/gmoccapy/notification.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 ''' This widget can be used to show small popup windows showing messages. diff --git a/src/emc/usr_intf/gmoccapy/player.py b/src/emc/usr_intf/gmoccapy/player.py index 27bf593688..e794197574 100644 --- a/src/emc/usr_intf/gmoccapy/player.py +++ b/src/emc/usr_intf/gmoccapy/player.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 ''' This class is used to handle sound messages from gmoccapy, diff --git a/src/emc/usr_intf/gmoccapy/widgets.py b/src/emc/usr_intf/gmoccapy/widgets.py index f808b0d766..d80330e152 100644 --- a/src/emc/usr_intf/gmoccapy/widgets.py +++ b/src/emc/usr_intf/gmoccapy/widgets.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 ''' This class is just to handle the widgets of gmoccapy, diff --git a/src/emc/usr_intf/gremlin/gremlin-run b/src/emc/usr_intf/gremlin/gremlin-run index aad2c2a751..6923f6575e 100755 --- a/src/emc/usr_intf/gremlin/gremlin-run +++ b/src/emc/usr_intf/gremlin/gremlin-run @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 import sys import os diff --git a/src/emc/usr_intf/gremlin/gremlin.py b/src/emc/usr_intf/gremlin/gremlin.py index bfa055fa3b..eccb144369 100755 --- a/src/emc/usr_intf/gremlin/gremlin.py +++ b/src/emc/usr_intf/gremlin/gremlin.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 # Copyright (C) 2009-2012 # Jeff Epler , # Pavel Shramov , diff --git a/src/emc/usr_intf/gscreen/gscreen.py b/src/emc/usr_intf/gscreen/gscreen.py index 8c63ecda07..0ca7ea0e60 100755 --- a/src/emc/usr_intf/gscreen/gscreen.py +++ b/src/emc/usr_intf/gscreen/gscreen.py @@ -1,4 +1,4 @@ -#!/usr/bin/python2.4 +#!/usr/bin/python2 # Gscreen a GUI for linuxcnc cnc controller # Chris Morley copyright 2012 diff --git a/src/emc/usr_intf/pncconf/pncconf.py b/src/emc/usr_intf/pncconf/pncconf.py index 741dd1cce1..fe34d9ea20 100755 --- a/src/emc/usr_intf/pncconf/pncconf.py +++ b/src/emc/usr_intf/pncconf/pncconf.py @@ -1,4 +1,4 @@ -#!/usr/bin/python2.4 +#!/usr/bin/python2 # -*- encoding: utf-8 -*- # This is pncconf, a graphical configuration editor for LinuxCNC # Chris Morley copyright 2009 @@ -1400,7 +1400,7 @@ def write_inifile(self, base): print >>file, "png = image-to-gcode" print >>file, "gif = image-to-gcode" print >>file, "jpg = image-to-gcode" - print >>file, "py = python" + print >>file, "py = python2" print >>file print >>file, "[TASK]" diff --git a/src/emc/usr_intf/stepconf/build_HAL.py b/src/emc/usr_intf/stepconf/build_HAL.py index 087916a9db..2ce1b22659 100755 --- a/src/emc/usr_intf/stepconf/build_HAL.py +++ b/src/emc/usr_intf/stepconf/build_HAL.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # # This is stepconf, a graphical configuration editor for LinuxCNC # Copyright 2007 Jeff Epler diff --git a/src/emc/usr_intf/stepconf/build_INI.py b/src/emc/usr_intf/stepconf/build_INI.py index 402c8643fa..db7bf1fbea 100644 --- a/src/emc/usr_intf/stepconf/build_INI.py +++ b/src/emc/usr_intf/stepconf/build_INI.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # # This is stepconf, a graphical configuration editor for Machinekit # Copyright 2007 Jeff Epler @@ -90,7 +90,7 @@ def write_inifile(self, base): print >>file, "png = image-to-gcode" print >>file, "gif = image-to-gcode" print >>file, "jpg = image-to-gcode" - print >>file, "py = python" + print >>file, "py = python2" print >>file print >>file, "[TASK]" diff --git a/src/emc/usr_intf/stepconf/pages.py b/src/emc/usr_intf/stepconf/pages.py index bfbe035697..08e7336cad 100755 --- a/src/emc/usr_intf/stepconf/pages.py +++ b/src/emc/usr_intf/stepconf/pages.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # -*- encoding: utf-8 -*- # # This is stepconf, a graphical configuration editor for LinuxCNC diff --git a/src/emc/usr_intf/stepconf/stepconf.py b/src/emc/usr_intf/stepconf/stepconf.py index e4ed6f461b..5a9ec3a0b2 100755 --- a/src/emc/usr_intf/stepconf/stepconf.py +++ b/src/emc/usr_intf/stepconf/stepconf.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # -*- encoding: utf-8 -*- # # This is stepconf, a graphical configuration editor for Machinekit diff --git a/src/emc/usr_intf/touchy/touchy.py b/src/emc/usr_intf/touchy/touchy.py index 3b821fcbf0..59cc55b71b 100755 --- a/src/emc/usr_intf/touchy/touchy.py +++ b/src/emc/usr_intf/touchy/touchy.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # Touchy is Copyright (c) 2009 Chris Radek diff --git a/src/hal/cython/examples/component.py b/src/hal/cython/examples/component.py index b9ebe0702b..c1396dd714 100644 --- a/src/hal/cython/examples/component.py +++ b/src/hal/cython/examples/component.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # vim: sts=4 sw=4 et # basic HAL operations: diff --git a/src/hal/cython/examples/heaptrace.py b/src/hal/cython/examples/heaptrace.py index 226b14acbf..f10a85b0e2 100644 --- a/src/hal/cython/examples/heaptrace.py +++ b/src/hal/cython/examples/heaptrace.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # vim: sts=4 sw=4 et # HAL internals introspection - the hal_data descriptor diff --git a/src/hal/cython/examples/internal.py b/src/hal/cython/examples/internal.py index 545c3954fc..a4cf7b709c 100644 --- a/src/hal/cython/examples/internal.py +++ b/src/hal/cython/examples/internal.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # vim: sts=4 sw=4 et # HAL internals introspection - the hal_data descriptor diff --git a/src/hal/cython/examples/test_instance.py b/src/hal/cython/examples/test_instance.py index 8fc14c24da..7d9242f3e1 100644 --- a/src/hal/cython/examples/test_instance.py +++ b/src/hal/cython/examples/test_instance.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 from machinekit import hal diff --git a/src/hal/cython/test.py b/src/hal/cython/test.py index bc7f87d754..09d3bdf60e 100644 --- a/src/hal/cython/test.py +++ b/src/hal/cython/test.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # vim: sts=4 sw=4 et import time diff --git a/src/hal/drivers/hal_bb_gpio/get_pin_data.py b/src/hal/drivers/hal_bb_gpio/get_pin_data.py index b38e576dff..4759e983d1 100755 --- a/src/hal/drivers/hal_bb_gpio/get_pin_data.py +++ b/src/hal/drivers/hal_bb_gpio/get_pin_data.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 import re, sys, os from pprint import pprint diff --git a/src/hal/icomp-example/lut5.py b/src/hal/icomp-example/lut5.py index d724fa3025..e1977fee4c 100644 --- a/src/hal/icomp-example/lut5.py +++ b/src/hal/icomp-example/lut5.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 # script to determine function value for lut5.9 given a # boolean expression using inputs 0-4 (named i0..i4) diff --git a/src/hal/lib/hal.py b/src/hal/lib/hal.py index 9906990371..20179f937a 100644 --- a/src/hal/lib/hal.py +++ b/src/hal/lib/hal.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # vim: sts=4 sw=4 et """ diff --git a/src/hal/support/pasm/reval.py b/src/hal/support/pasm/reval.py index 24d76f8a16..fa6bd14dfe 100755 --- a/src/hal/support/pasm/reval.py +++ b/src/hal/support/pasm/reval.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 import sys import struct diff --git a/src/hal/user_comps/gladevcp.py b/src/hal/user_comps/gladevcp.py index aef3c3fd71..0de95d5c49 100644 --- a/src/hal/user_comps/gladevcp.py +++ b/src/hal/user_comps/gladevcp.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # vim: sts=4 sw=4 et # This is a component of EMC # gladevcp Copyright 2010 Chris Morley diff --git a/src/hal/user_comps/hal_gpio_mcp23017.py b/src/hal/user_comps/hal_gpio_mcp23017.py index d23c1e911f..34a6031ba7 100755 --- a/src/hal/user_comps/hal_gpio_mcp23017.py +++ b/src/hal/user_comps/hal_gpio_mcp23017.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 # encoding: utf-8 """ Gpio.py diff --git a/src/hal/user_comps/hal_gy86.py b/src/hal/user_comps/hal_gy86.py index aca885e2be..e9f3388845 100755 --- a/src/hal/user_comps/hal_gy86.py +++ b/src/hal/user_comps/hal_gy86.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 # read GY-86 10DOF board via i2c, mirror values to HAL pins diff --git a/src/hal/user_comps/hal_input.py b/src/hal/user_comps/hal_input.py index 6515782103..a50c52d82f 100644 --- a/src/hal/user_comps/hal_input.py +++ b/src/hal/user_comps/hal_input.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 # Copyright 2007 Jeff Epler # # This program is free software; you can redistribute it and/or modify diff --git a/src/hal/user_comps/hal_pwm_pca9685.py b/src/hal/user_comps/hal_pwm_pca9685.py index 13213db637..89e4976cc5 100755 --- a/src/hal/user_comps/hal_pwm_pca9685.py +++ b/src/hal/user_comps/hal_pwm_pca9685.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 # encoding: utf-8 """ Pwm.py diff --git a/src/hal/user_comps/hal_storage.py b/src/hal/user_comps/hal_storage.py index 47678996b2..04edd2614e 100755 --- a/src/hal/user_comps/hal_storage.py +++ b/src/hal/user_comps/hal_storage.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 # encoding: utf-8 """ Storage.py diff --git a/src/hal/user_comps/hal_temp_ads7828.py b/src/hal/user_comps/hal_temp_ads7828.py index 8cce31fb75..07200d8ccb 100755 --- a/src/hal/user_comps/hal_temp_ads7828.py +++ b/src/hal/user_comps/hal_temp_ads7828.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 # encoding: utf-8 """ Temperature.py diff --git a/src/hal/user_comps/hal_temp_atlas.py b/src/hal/user_comps/hal_temp_atlas.py index b5be20e03c..1f94f6848c 100644 --- a/src/hal/user_comps/hal_temp_atlas.py +++ b/src/hal/user_comps/hal_temp_atlas.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 # encoding: utf-8 """ Temperature.py diff --git a/src/hal/user_comps/hal_temp_bbb.py b/src/hal/user_comps/hal_temp_bbb.py index 5a75f72aa1..eab2853689 100755 --- a/src/hal/user_comps/hal_temp_bbb.py +++ b/src/hal/user_comps/hal_temp_bbb.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 # encoding: utf-8 ######################################################################## diff --git a/src/hal/user_comps/pyvcp.py b/src/hal/user_comps/pyvcp.py index 15ffbd78ca..3a136adecf 100755 --- a/src/hal/user_comps/pyvcp.py +++ b/src/hal/user_comps/pyvcp.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # This is a component of emc # Copyright 2007 Anders Wallin # diff --git a/src/hal/user_comps/vismach/5axisgui.py b/src/hal/user_comps/vismach/5axisgui.py index bc9c3aa4a5..600769965f 100755 --- a/src/hal/user_comps/vismach/5axisgui.py +++ b/src/hal/user_comps/vismach/5axisgui.py @@ -1,4 +1,4 @@ -#!/usr/bin/python2.4 +#!/usr/bin/python2 # Copyright 2007 Chris Radek # Derived from a work by John Kasunich and Jeff Epler # diff --git a/src/hal/user_comps/vismach/hbmgui.py b/src/hal/user_comps/vismach/hbmgui.py index 60c3a922cf..c10f0eb863 100755 --- a/src/hal/user_comps/vismach/hbmgui.py +++ b/src/hal/user_comps/vismach/hbmgui.py @@ -1,4 +1,4 @@ -#!/usr/bin/python2.4 +#!/usr/bin/python2 # # Visulization model of a Horizontal Boring Mill with quill # diff --git a/src/hal/user_comps/vismach/hexagui.py b/src/hal/user_comps/vismach/hexagui.py index b1cda5fa0f..3e748f544e 100755 --- a/src/hal/user_comps/vismach/hexagui.py +++ b/src/hal/user_comps/vismach/hexagui.py @@ -1,4 +1,4 @@ -#!/usr/bin/python2.4 +#!/usr/bin/python2 # Copyright 2007 Ben Lipkowitz # You may distribute this software under the GNU GPL v2 or later # diff --git a/src/hal/user_comps/vismach/maho600gui.py b/src/hal/user_comps/vismach/maho600gui.py index 2ad78fcdf1..bc5e1fb815 100755 --- a/src/hal/user_comps/vismach/maho600gui.py +++ b/src/hal/user_comps/vismach/maho600gui.py @@ -1,4 +1,4 @@ -#!/usr/bin/python2.4 +#!/usr/bin/python2 # # Visulization model of U of Akron's Maho 600C with 2-axis NC table # diff --git a/src/hal/user_comps/vismach/max5gui.py b/src/hal/user_comps/vismach/max5gui.py index 951f71bb69..4abd83b3e3 100755 --- a/src/hal/user_comps/vismach/max5gui.py +++ b/src/hal/user_comps/vismach/max5gui.py @@ -1,4 +1,4 @@ -#!/usr/bin/python2.4 +#!/usr/bin/python2 # # Visulization model of Chris's MAX-NC mill, as modified to 5-axis # diff --git a/src/hal/user_comps/vismach/puma560gui.py b/src/hal/user_comps/vismach/puma560gui.py index 6a93adf657..a574a89c48 100755 --- a/src/hal/user_comps/vismach/puma560gui.py +++ b/src/hal/user_comps/vismach/puma560gui.py @@ -1,4 +1,4 @@ -#!/usr/bin/python2.4 +#!/usr/bin/python2 # Copyright 2009 Alex Joni # # This program is free software; you can redistribute it and/or modify diff --git a/src/hal/user_comps/vismach/pumagui.py b/src/hal/user_comps/vismach/pumagui.py index 1c0013b307..09ae81b6d2 100755 --- a/src/hal/user_comps/vismach/pumagui.py +++ b/src/hal/user_comps/vismach/pumagui.py @@ -1,4 +1,4 @@ -#!/usr/bin/python2.4 +#!/usr/bin/python2 # Copyright 2007 John Kasunich and Jeff Epler # # This program is free software; you can redistribute it and/or modify diff --git a/src/hal/user_comps/vismach/rostock.py b/src/hal/user_comps/vismach/rostock.py index ba82b9e335..285f6490f6 100644 --- a/src/hal/user_comps/vismach/rostock.py +++ b/src/hal/user_comps/vismach/rostock.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 # Copyright 2013 Jeff Epler # # This program is free software; you can redistribute it and/or modify diff --git a/src/hal/user_comps/vismach/scaragui.py b/src/hal/user_comps/vismach/scaragui.py index 23ebfec299..225bfbe2c1 100755 --- a/src/hal/user_comps/vismach/scaragui.py +++ b/src/hal/user_comps/vismach/scaragui.py @@ -1,4 +1,4 @@ -#!/usr/bin/python2.4 +#!/usr/bin/python2 # Copyright 2007 John Kasunich and Jeff Epler # # This program is free software; you can redistribute it and/or modify diff --git a/src/hal/utils/comp.g b/src/hal/utils/comp.g index e4f8353313..f5edc94da7 100644 --- a/src/hal/utils/comp.g +++ b/src/hal/utils/comp.g @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 # This is 'comp', a tool to write HAL boilerplate # Copyright 2006 Jeff Epler # diff --git a/src/hal/utils/halgui/halgui.py b/src/hal/utils/halgui/halgui.py index 4a3dfe9165..836395de61 100755 --- a/src/hal/utils/halgui/halgui.py +++ b/src/hal/utils/halgui/halgui.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/hal/utils/instcomp.g b/src/hal/utils/instcomp.g index a1b805563c..538b4ab3cc 100644 --- a/src/hal/utils/instcomp.g +++ b/src/hal/utils/instcomp.g @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 # This is 'instcomp', a tool to write instantiated components for # Machinekit # diff --git a/src/hal/utils/yapps.py b/src/hal/utils/yapps.py index c501ce3f73..e1f8e67511 100755 --- a/src/hal/utils/yapps.py +++ b/src/hal/utils/yapps.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 # # Yapps 2 - yet another python parser system @@ -84,7 +84,7 @@ def generate(inputfilename, outputfilename='', dump=0, **flags): optlist, args = getopt.getopt(sys.argv[1:], 'f:', ['help', 'dump', 'use-devel-grammar']) if not args or len(args) > 2: print >>sys.stderr, 'Usage:' - print >>sys.stderr, ' python', sys.argv[0], '[flags] input.g [output.py]' + print >>sys.stderr, ' python2', sys.argv[0], '[flags] input.g [output.py]' print >>sys.stderr, 'Flags:' print >>sys.stderr, (' --dump' + ' '*40)[:35] + 'Dump out grammar information' print >>sys.stderr, (' --use-devel-grammar' + ' '*40)[:35] + 'Use the devel grammar parser from yapps_grammar.py instead of the stable grammar from grammar.py' diff --git a/src/machinetalk/config-service/configserver.py b/src/machinetalk/config-service/configserver.py index d639389959..d9a85d9f0a 100755 --- a/src/machinetalk/config-service/configserver.py +++ b/src/machinetalk/config-service/configserver.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 import os import sys from stat import S_ISREG, S_ISDIR diff --git a/src/machinetalk/mklauncher/mklauncher.py b/src/machinetalk/mklauncher/mklauncher.py index 709bf1be5a..3111d893e2 100644 --- a/src/machinetalk/mklauncher/mklauncher.py +++ b/src/machinetalk/mklauncher/mklauncher.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 import os import sys diff --git a/src/machinetalk/mkwrapper/emcstatusclient.py b/src/machinetalk/mkwrapper/emcstatusclient.py index 29e51bd803..3a523ebc89 100755 --- a/src/machinetalk/mkwrapper/emcstatusclient.py +++ b/src/machinetalk/mkwrapper/emcstatusclient.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 import zmq import sys diff --git a/src/machinetalk/mkwrapper/mkwrapper.py b/src/machinetalk/mkwrapper/mkwrapper.py index 5373aaa8c0..632cd3a772 100644 --- a/src/machinetalk/mkwrapper/mkwrapper.py +++ b/src/machinetalk/mkwrapper/mkwrapper.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 # -*- coding: UTF-8 -* import os import sys diff --git a/src/machinetalk/msgcomponents/zmqringsub.py b/src/machinetalk/msgcomponents/zmqringsub.py index 0fe8831f75..8ce8754885 100644 --- a/src/machinetalk/msgcomponents/zmqringsub.py +++ b/src/machinetalk/msgcomponents/zmqringsub.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # # run as python zmqringsub.py [[destination] [optional list of ring names]] # diff --git a/src/machinetalk/nanopb/generator/nanopb_generator.py b/src/machinetalk/nanopb/generator/nanopb_generator.py index 9a0b57a239..8eaeaf13db 100755 --- a/src/machinetalk/nanopb/generator/nanopb_generator.py +++ b/src/machinetalk/nanopb/generator/nanopb_generator.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 '''Generate header file for nanopb from a ProtoBuf FileDescriptorSet.''' nanopb_version = "nanopb-0.3.3-dev" diff --git a/src/machinetalk/nanopb/generator/protoc-gen-nanopb b/src/machinetalk/nanopb/generator/protoc-gen-nanopb index 2de56216c2..b7493019a3 100755 --- a/src/machinetalk/nanopb/generator/protoc-gen-nanopb +++ b/src/machinetalk/nanopb/generator/protoc-gen-nanopb @@ -10,4 +10,4 @@ # --plugin= on the command line. MYPATH=$(dirname "$0") -exec python "$MYPATH/nanopb_generator.py" --protoc-plugin +exec python2 "$MYPATH/nanopb_generator.py" --protoc-plugin diff --git a/src/machinetalk/proto/scripts/protoc-gen-depends b/src/machinetalk/proto/scripts/protoc-gen-depends index aeef974992..d95d71162f 100755 --- a/src/machinetalk/proto/scripts/protoc-gen-depends +++ b/src/machinetalk/proto/scripts/protoc-gen-depends @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # protoc plugin to generate dependeny files # # the .d file format is rather project specific diff --git a/src/machinetalk/proto/setup.py b/src/machinetalk/proto/setup.py index 42b7081274..1471cb07c5 100644 --- a/src/machinetalk/proto/setup.py +++ b/src/machinetalk/proto/setup.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 from distutils.core import setup diff --git a/src/machinetalk/support/pb2json.py b/src/machinetalk/support/pb2json.py index 80c21ca23f..62ce2eee51 100644 --- a/src/machinetalk/support/pb2json.py +++ b/src/machinetalk/support/pb2json.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # vim: sts=4 sw=4 et """ diff --git a/src/machinetalk/tutorial/json-ws/json-ws-micromot-client.py b/src/machinetalk/tutorial/json-ws/json-ws-micromot-client.py index ca77e2d19a..c8ab093c31 100644 --- a/src/machinetalk/tutorial/json-ws/json-ws-micromot-client.py +++ b/src/machinetalk/tutorial/json-ws/json-ws-micromot-client.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 # examaple websockets command line client # reads JSON-encoded log messages off the msgd Websocket server diff --git a/src/machinetalk/tutorial/json-ws/micromot-server.py b/src/machinetalk/tutorial/json-ws/micromot-server.py index 539eb60f05..eafa6a33c9 100644 --- a/src/machinetalk/tutorial/json-ws/micromot-server.py +++ b/src/machinetalk/tutorial/json-ws/micromot-server.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 import os,time,sys import zmq import time diff --git a/src/machinetalk/tutorial/motorctrl/motorctrl.py b/src/machinetalk/tutorial/motorctrl/motorctrl.py index d6cf9e6f81..5c61a24f22 100644 --- a/src/machinetalk/tutorial/motorctrl/motorctrl.py +++ b/src/machinetalk/tutorial/motorctrl/motorctrl.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # vim: sts=4 sw=4 et # This is a component of LinuxCNC # classhandler.py Copyright 2010 Michael Haberler diff --git a/src/machinetalk/tutorial/zeroconf/resolve.py b/src/machinetalk/tutorial/zeroconf/resolve.py index 5bf6c66721..7b41f8422e 100644 --- a/src/machinetalk/tutorial/zeroconf/resolve.py +++ b/src/machinetalk/tutorial/zeroconf/resolve.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 # # example how to retrieve machinekit service URI's via zeroconf diff --git a/src/machinetalk/videoserver/videoserver.py b/src/machinetalk/videoserver/videoserver.py index 1721238c4e..a73aba7ae0 100644 --- a/src/machinetalk/videoserver/videoserver.py +++ b/src/machinetalk/videoserver/videoserver.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 import os import sys diff --git a/src/machinetalk/webtalk/tests/zws-proto-testclient.py b/src/machinetalk/webtalk/tests/zws-proto-testclient.py index c6a2079669..70cbe4c2d2 100644 --- a/src/machinetalk/webtalk/tests/zws-proto-testclient.py +++ b/src/machinetalk/webtalk/tests/zws-proto-testclient.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 # # ZWS1.0 - protobuf - encoded variant, with or without base64 wrapping # diff --git a/src/machinetalk/webtalk/wszmqproxy-test.py b/src/machinetalk/webtalk/wszmqproxy-test.py index ed3768aab7..19d43ad9ae 100644 --- a/src/machinetalk/webtalk/wszmqproxy-test.py +++ b/src/machinetalk/webtalk/wszmqproxy-test.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 # examaple websockets command line client # reads JSON-encoded log messages off the msgd Websocket server diff --git a/src/modsilent.py b/src/modsilent.py index 854ec1891c..1e2791e1c2 100644 --- a/src/modsilent.py +++ b/src/modsilent.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 import re import sys diff --git a/src/po/fixpaths.py b/src/po/fixpaths.py index d17e763735..bd19b28507 100755 --- a/src/po/fixpaths.py +++ b/src/po/fixpaths.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 import getopt import os import string diff --git a/tests/hal-link-unlink/hallink.py b/tests/hal-link-unlink/hallink.py index b3831e583a..0c60955b15 100755 --- a/tests/hal-link-unlink/hallink.py +++ b/tests/hal-link-unlink/hallink.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 import subprocess import hal diff --git a/tests/halui-jogging/test-ui.py b/tests/halui-jogging/test-ui.py index abe200f8b4..7e68092071 100755 --- a/tests/halui-jogging/test-ui.py +++ b/tests/halui-jogging/test-ui.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 import linuxcnc import hal diff --git a/tests/interp/subroutine-return/test-ui.py b/tests/interp/subroutine-return/test-ui.py index 44da17f531..774b4bb27b 100755 --- a/tests/interp/subroutine-return/test-ui.py +++ b/tests/interp/subroutine-return/test-ui.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 import linuxcnc import hal diff --git a/tests/motion-logger/mountaindew/test-ui.py b/tests/motion-logger/mountaindew/test-ui.py index c6089cbe3b..3ef974e21d 100755 --- a/tests/motion-logger/mountaindew/test-ui.py +++ b/tests/motion-logger/mountaindew/test-ui.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 import linuxcnc import hal diff --git a/tests/motion/g0/checkresult b/tests/motion/g0/checkresult index cd931f230f..cd67d4cfd6 100755 --- a/tests/motion/g0/checkresult +++ b/tests/motion/g0/checkresult @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 import sys import os diff --git a/tests/remap/remap-io/remap.py b/tests/remap/remap-io/remap.py index 73e7d71593..5084f9ee3c 100644 --- a/tests/remap/remap-io/remap.py +++ b/tests/remap/remap-io/remap.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 import linuxcnc import emccanon import interpreter diff --git a/tests/remap/remap-io/test-ui.py b/tests/remap/remap-io/test-ui.py index 6cff17456c..8f1afaee39 100755 --- a/tests/remap/remap-io/test-ui.py +++ b/tests/remap/remap-io/test-ui.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 import linuxcnc, hal import sys diff --git a/tests/remap/remap-io/toplevel.py b/tests/remap/remap-io/toplevel.py index a1e95854f5..949a375163 100755 --- a/tests/remap/remap-io/toplevel.py +++ b/tests/remap/remap-io/toplevel.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 import remap def __init__(self): diff --git a/tests/remap/remap-reentry/toplevel.py b/tests/remap/remap-reentry/toplevel.py index a1e95854f5..949a375163 100755 --- a/tests/remap/remap-reentry/toplevel.py +++ b/tests/remap/remap-reentry/toplevel.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 import remap def __init__(self): diff --git a/tests/remap/sequencing/permute.py b/tests/remap/sequencing/permute.py index 82e8df8ae3..dd0c65f703 100644 --- a/tests/remap/sequencing/permute.py +++ b/tests/remap/sequencing/permute.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python2 #http://stackoverflow.com/questions/361/generate-list-of-all-possible-permutations-of-a-string def nextPermutation(perm): k0 = None diff --git a/tests/threads.0/checkresult b/tests/threads.0/checkresult index d145dee44e..39c459bd73 100755 --- a/tests/threads.0/checkresult +++ b/tests/threads.0/checkresult @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/python2 import sys l = [int(line.strip()) for line in open(sys.argv[1])] diff --git a/tests/toolchanger/m61/test-ui.py b/tests/toolchanger/m61/test-ui.py index 33522338a9..a78acca1f3 100755 --- a/tests/toolchanger/m61/test-ui.py +++ b/tests/toolchanger/m61/test-ui.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 import linuxcnc import hal diff --git a/tests/trajectory-planner/circular-arcs/linuxcnc_control.py b/tests/trajectory-planner/circular-arcs/linuxcnc_control.py index 3319693168..696e1dff3a 100644 --- a/tests/trajectory-planner/circular-arcs/linuxcnc_control.py +++ b/tests/trajectory-planner/circular-arcs/linuxcnc_control.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 '''Copied from m61-test''' import linuxcnc diff --git a/tests/trajectory-planner/circular-arcs/machine_setup.py b/tests/trajectory-planner/circular-arcs/machine_setup.py index 9bf5d74845..851d942a21 100755 --- a/tests/trajectory-planner/circular-arcs/machine_setup.py +++ b/tests/trajectory-planner/circular-arcs/machine_setup.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 '''Copied from m61-test''' import linuxcnc diff --git a/tests/trajectory-planner/circular-arcs/run_all_tests.py b/tests/trajectory-planner/circular-arcs/run_all_tests.py index 3757fd9999..c907f79081 100644 --- a/tests/trajectory-planner/circular-arcs/run_all_tests.py +++ b/tests/trajectory-planner/circular-arcs/run_all_tests.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 '''Copied from m61-test''' import linuxcnc From d58610dc0c9e5c6772e825d3cd176c9bf84a3e29 Mon Sep 17 00:00:00 2001 From: Mick Date: Sat, 23 Dec 2017 09:11:45 +0000 Subject: [PATCH 204/516] Change all instances of `/usr/bin/env python2` to `/usr/bin/python2` Whilst the two shebangs atop python scripts are interchangable in Debian currently, there is no knowing what using `env` to determine the interpreter would result in on other distros that for instance are not Debian based. In the very worst scenario, this means that creating a single symlink in `/usr/bin/python2` will enable ALL python scripts to work on any distro. (Thus far not aware of a distro which does not already have that symlink, as part of the python2.7 installation.) Signed-off-by: Mick --- configs/apps/gladevcp/colored-label/coloredlabel.py | 2 +- configs/apps/gladevcp/complex/complex.py | 2 +- configs/apps/gladevcp/templates/classhandler.py | 2 +- configs/apps/gladevcp/templates/classhandler_persistent.py | 2 +- configs/sim/axis/gladevcp-jwp.py | 2 +- configs/sim/axis/gladevcp/probe.py | 2 +- .../python/gladevcp-handler.py | 2 +- configs/sim/gmoccapy/gmoccapy_plasma/plasma.py | 2 +- configs/sim/gmoccapy/gmoccapy_plasma/signals.py | 2 +- lib/python/gladevcp/calculatorwidget.py | 2 +- lib/python/gladevcp/combi_dro.py | 2 +- lib/python/gladevcp/drowidget.py | 2 +- lib/python/gladevcp/gladebuilder.py | 2 +- lib/python/gladevcp/hal_actions.py | 2 +- lib/python/gladevcp/hal_dial.py | 2 +- lib/python/gladevcp/hal_filechooser.py | 2 +- lib/python/gladevcp/hal_gremlin.py | 2 +- lib/python/gladevcp/hal_gremlin_plus.py | 2 +- lib/python/gladevcp/hal_mdihistory.py | 2 +- lib/python/gladevcp/hal_pyngcgui.py | 2 +- lib/python/gladevcp/hal_sourceview.py | 2 +- lib/python/gladevcp/iconview.py | 2 +- lib/python/gladevcp/jogwheel.py | 2 +- lib/python/gladevcp/offsetpage_widget.py | 2 +- lib/python/gladevcp/offsetwidget.py | 2 +- lib/python/gladevcp/overridewidget.py | 2 +- lib/python/gladevcp/persistence.py | 2 +- lib/python/gladevcp/speedcontrol.py | 2 +- lib/python/gladevcp/tooledit_widget.py | 2 +- lib/python/gladevcp/xembed.py | 2 +- lib/python/gremlin_view.py | 2 +- lib/python/hal.py | 2 +- lib/python/hal_glib.py | 2 +- lib/python/popupkeyboard.py | 2 +- lib/python/pyngcgui.py | 2 +- lib/python/rs274/OpenGLTk.py | 2 +- lib/python/rs274/options.py | 2 +- nosetests/test_compat.py | 2 +- nosetests/test_groups.py | 2 +- nosetests/test_mk_hal_basics.py | 2 +- nosetests/test_netcmd.py | 2 +- nosetests/test_pinops.py | 2 +- nosetests/test_ring.py | 2 +- nosetests/test_ring_intracomp.py | 2 +- nosetests/test_ringdemo.py | 2 +- nosetests/test_rtapi.py | 2 +- nosetests/test_streamring.py | 2 +- nosetests/unittest_icomp.py | 2 +- nosetests/unittest_instbindings.py | 2 +- nosetests/unittest_or2.py | 2 +- scripts/hal-graph | 2 +- src/emc/usr_intf/axis/scripts/axis-remote.py | 2 +- src/emc/usr_intf/axis/scripts/axis.py | 2 +- src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py | 2 +- src/emc/usr_intf/axis/scripts/lintini.py | 2 +- src/emc/usr_intf/axis/scripts/linuxcnctop.py | 2 +- src/emc/usr_intf/axis/scripts/mdi.py | 2 +- src/emc/usr_intf/gmoccapy/dialogs.py | 2 +- src/emc/usr_intf/gmoccapy/getiniinfo.py | 2 +- src/emc/usr_intf/gmoccapy/notification.py | 2 +- src/emc/usr_intf/gmoccapy/player.py | 2 +- src/emc/usr_intf/gmoccapy/widgets.py | 2 +- src/emc/usr_intf/stepconf/build_HAL.py | 2 +- src/emc/usr_intf/stepconf/build_INI.py | 2 +- src/emc/usr_intf/stepconf/pages.py | 2 +- src/emc/usr_intf/stepconf/stepconf.py | 2 +- src/emc/usr_intf/touchy/touchy.py | 2 +- src/hal/cython/examples/component.py | 2 +- src/hal/cython/examples/heaptrace.py | 2 +- src/hal/cython/examples/internal.py | 2 +- src/hal/cython/examples/test_instance.py | 2 +- src/hal/cython/test.py | 2 +- src/hal/lib/hal.py | 2 +- src/hal/user_comps/gladevcp.py | 2 +- src/hal/user_comps/pyvcp.py | 2 +- src/hal/utils/halgui/halgui.py | 2 +- src/machinetalk/mklauncher/mklauncher.py | 2 +- src/machinetalk/msgcomponents/zmqringsub.py | 2 +- src/machinetalk/proto/scripts/protoc-gen-depends | 2 +- src/machinetalk/proto/setup.py | 2 +- src/machinetalk/support/pb2json.py | 2 +- src/machinetalk/tutorial/json-ws/micromot-server.py | 2 +- src/machinetalk/tutorial/motorctrl/motorctrl.py | 2 +- src/po/fixpaths.py | 2 +- tests/halui-jogging/test-ui.py | 2 +- tests/interp/subroutine-return/test-ui.py | 2 +- tests/motion-logger/mountaindew/test-ui.py | 2 +- tests/remap/remap-io/test-ui.py | 2 +- tests/toolchanger/m61/test-ui.py | 2 +- tests/trajectory-planner/circular-arcs/linuxcnc_control.py | 2 +- tests/trajectory-planner/circular-arcs/machine_setup.py | 2 +- tests/trajectory-planner/circular-arcs/run_all_tests.py | 2 +- 92 files changed, 92 insertions(+), 92 deletions(-) diff --git a/configs/apps/gladevcp/colored-label/coloredlabel.py b/configs/apps/gladevcp/colored-label/coloredlabel.py index 3b46196980..ce4c5d3db7 100644 --- a/configs/apps/gladevcp/colored-label/coloredlabel.py +++ b/configs/apps/gladevcp/colored-label/coloredlabel.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # vim: sts=4 sw=4 et # This is a component of Machinekit # complex.py Copyright 2011 Michael Haberler diff --git a/configs/apps/gladevcp/complex/complex.py b/configs/apps/gladevcp/complex/complex.py index 3c063834e9..8bcd5d8ccf 100644 --- a/configs/apps/gladevcp/complex/complex.py +++ b/configs/apps/gladevcp/complex/complex.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # vim: sts=4 sw=4 et # This is a component of Machinekit # complex.py Copyright 2010 Michael Haberler diff --git a/configs/apps/gladevcp/templates/classhandler.py b/configs/apps/gladevcp/templates/classhandler.py index c0a907b8be..c939acbef7 100644 --- a/configs/apps/gladevcp/templates/classhandler.py +++ b/configs/apps/gladevcp/templates/classhandler.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # vim: sts=4 sw=4 et # This is a component of Machinekit # classhandler.py Copyright 2010 Michael Haberler diff --git a/configs/apps/gladevcp/templates/classhandler_persistent.py b/configs/apps/gladevcp/templates/classhandler_persistent.py index b02d31eb17..5d7fb237dd 100644 --- a/configs/apps/gladevcp/templates/classhandler_persistent.py +++ b/configs/apps/gladevcp/templates/classhandler_persistent.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # vim: sts=4 sw=4 et # This is a component of Machinekit # classhandler_persistent.py Copyright 2010 Michael Haberler diff --git a/configs/sim/axis/gladevcp-jwp.py b/configs/sim/axis/gladevcp-jwp.py index a244e9b315..59647e5e3e 100644 --- a/configs/sim/axis/gladevcp-jwp.py +++ b/configs/sim/axis/gladevcp-jwp.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # demo interface to motion jog-while-paused features diff --git a/configs/sim/axis/gladevcp/probe.py b/configs/sim/axis/gladevcp/probe.py index fa4829b014..6d8229c9d5 100644 --- a/configs/sim/axis/gladevcp/probe.py +++ b/configs/sim/axis/gladevcp/probe.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # vim: sts=4 sw=4 et # This is a component of Machinekit # probe.py Copyright 2010 Michael Haberler diff --git a/configs/sim/axis/remap/manual-toolchange-with-tool-length-switch/python/gladevcp-handler.py b/configs/sim/axis/remap/manual-toolchange-with-tool-length-switch/python/gladevcp-handler.py index ab598c7d7d..ab4ae3da46 100644 --- a/configs/sim/axis/remap/manual-toolchange-with-tool-length-switch/python/gladevcp-handler.py +++ b/configs/sim/axis/remap/manual-toolchange-with-tool-length-switch/python/gladevcp-handler.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 import hal diff --git a/configs/sim/gmoccapy/gmoccapy_plasma/plasma.py b/configs/sim/gmoccapy/gmoccapy_plasma/plasma.py index d56238de70..edd5499bc1 100644 --- a/configs/sim/gmoccapy/gmoccapy_plasma/plasma.py +++ b/configs/sim/gmoccapy/gmoccapy_plasma/plasma.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # -*- coding:UTF-8 -*- """ This file will control some options of the gmoccapy plasma screen diff --git a/configs/sim/gmoccapy/gmoccapy_plasma/signals.py b/configs/sim/gmoccapy/gmoccapy_plasma/signals.py index 6088a0c0b5..8b684e2336 100644 --- a/configs/sim/gmoccapy/gmoccapy_plasma/signals.py +++ b/configs/sim/gmoccapy/gmoccapy_plasma/signals.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # -*- coding:UTF-8 -*- """ This file will control some options of the gmoccapy plasma screen diff --git a/lib/python/gladevcp/calculatorwidget.py b/lib/python/gladevcp/calculatorwidget.py index 45766aabce..cb7f156466 100644 --- a/lib/python/gladevcp/calculatorwidget.py +++ b/lib/python/gladevcp/calculatorwidget.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # GladeVcp Widget - calculator input # This widgets allows simple calculations. # The result can be returned for further use. diff --git a/lib/python/gladevcp/combi_dro.py b/lib/python/gladevcp/combi_dro.py index 5d16ae14c0..de5b0f9e61 100644 --- a/lib/python/gladevcp/combi_dro.py +++ b/lib/python/gladevcp/combi_dro.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # GladeVcp Widget - DRO widget, showing all 3 reference types # This widgets displays linuxcnc axis position information. diff --git a/lib/python/gladevcp/drowidget.py b/lib/python/gladevcp/drowidget.py index 40f2f23979..781fb3b284 100644 --- a/lib/python/gladevcp/drowidget.py +++ b/lib/python/gladevcp/drowidget.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # GladeVcp Widget - DRO label widget # This widgets displays linuxcnc axis position information. # diff --git a/lib/python/gladevcp/gladebuilder.py b/lib/python/gladevcp/gladebuilder.py index 034e2d4289..f48fd9ea97 100644 --- a/lib/python/gladevcp/gladebuilder.py +++ b/lib/python/gladevcp/gladebuilder.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # vim: sts=4 sw=4 et import gtk diff --git a/lib/python/gladevcp/hal_actions.py b/lib/python/gladevcp/hal_actions.py index d19e7d5648..cc606052d4 100644 --- a/lib/python/gladevcp/hal_actions.py +++ b/lib/python/gladevcp/hal_actions.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # vim: sts=4 sw=4 et # GladeVcp actions # diff --git a/lib/python/gladevcp/hal_dial.py b/lib/python/gladevcp/hal_dial.py index 1c00bad7eb..1cb7ff5dc3 100644 --- a/lib/python/gladevcp/hal_dial.py +++ b/lib/python/gladevcp/hal_dial.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # hal_dial.py # a pygtk widget that implements a dial with HAL pins diff --git a/lib/python/gladevcp/hal_filechooser.py b/lib/python/gladevcp/hal_filechooser.py index 8b69bb9819..42784b6a80 100644 --- a/lib/python/gladevcp/hal_filechooser.py +++ b/lib/python/gladevcp/hal_filechooser.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # vim: sts=4 sw=4 et # GladeVcp FileChooser related widgets # diff --git a/lib/python/gladevcp/hal_gremlin.py b/lib/python/gladevcp/hal_gremlin.py index 81c5a56b08..8c8689375f 100644 --- a/lib/python/gladevcp/hal_gremlin.py +++ b/lib/python/gladevcp/hal_gremlin.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # vim: sts=4 sw=4 et # GladeVcp Widgets # diff --git a/lib/python/gladevcp/hal_gremlin_plus.py b/lib/python/gladevcp/hal_gremlin_plus.py index 31c0ae1cda..0c70b3443a 100644 --- a/lib/python/gladevcp/hal_gremlin_plus.py +++ b/lib/python/gladevcp/hal_gremlin_plus.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 #------------------------------------------------------------------------------ # Copyright: 2013 diff --git a/lib/python/gladevcp/hal_mdihistory.py b/lib/python/gladevcp/hal_mdihistory.py index e8356a2489..7c41d5ae81 100644 --- a/lib/python/gladevcp/hal_mdihistory.py +++ b/lib/python/gladevcp/hal_mdihistory.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # vim: sts=4 sw=4 et # GladeVcp MDI history widget # diff --git a/lib/python/gladevcp/hal_pyngcgui.py b/lib/python/gladevcp/hal_pyngcgui.py index 7489d744b1..41479c207f 100644 --- a/lib/python/gladevcp/hal_pyngcgui.py +++ b/lib/python/gladevcp/hal_pyngcgui.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 #------------------------------------------------------------------------------ # Copyright: 2013 diff --git a/lib/python/gladevcp/hal_sourceview.py b/lib/python/gladevcp/hal_sourceview.py index c0b70ad674..8bfa3ed344 100644 --- a/lib/python/gladevcp/hal_sourceview.py +++ b/lib/python/gladevcp/hal_sourceview.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # vim: sts=4 sw=4 et # GladeVcp actions # diff --git a/lib/python/gladevcp/iconview.py b/lib/python/gladevcp/iconview.py index 1dd87db9d2..1e25e9ddd9 100755 --- a/lib/python/gladevcp/iconview.py +++ b/lib/python/gladevcp/iconview.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 ''' This IconView widget shows the contents of the currently selected diff --git a/lib/python/gladevcp/jogwheel.py b/lib/python/gladevcp/jogwheel.py index 47336c10f9..4a173bf2b7 100644 --- a/lib/python/gladevcp/jogwheel.py +++ b/lib/python/gladevcp/jogwheel.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # GladeVcp Widget # JogWheel widget, to simulate a real jogwheel diff --git a/lib/python/gladevcp/offsetpage_widget.py b/lib/python/gladevcp/offsetpage_widget.py index b5acacfb1e..7f79989f99 100755 --- a/lib/python/gladevcp/offsetpage_widget.py +++ b/lib/python/gladevcp/offsetpage_widget.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # GladeVcp Widget - offsetpage # # Copyright (c) 2013 Chris Morley diff --git a/lib/python/gladevcp/offsetwidget.py b/lib/python/gladevcp/offsetwidget.py index 8798c31b82..62a423cbf2 100644 --- a/lib/python/gladevcp/offsetwidget.py +++ b/lib/python/gladevcp/offsetwidget.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # GladeVcp Widget - DRO label widget # This widgets displays linuxcnc axis position information. # diff --git a/lib/python/gladevcp/overridewidget.py b/lib/python/gladevcp/overridewidget.py index 5cf232623a..0c27697a45 100644 --- a/lib/python/gladevcp/overridewidget.py +++ b/lib/python/gladevcp/overridewidget.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # GladeVcp Widget - override widget # This widgets controls linuxcnc's override rate # diff --git a/lib/python/gladevcp/persistence.py b/lib/python/gladevcp/persistence.py index e507c6618d..3640fcf9cd 100644 --- a/lib/python/gladevcp/persistence.py +++ b/lib/python/gladevcp/persistence.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # vim: sts=4 sw=4 et # This is a component of EMC # util.py Copyright 2010 Michael Haberler diff --git a/lib/python/gladevcp/speedcontrol.py b/lib/python/gladevcp/speedcontrol.py index d1a8546a3b..bbd4ffc5c2 100755 --- a/lib/python/gladevcp/speedcontrol.py +++ b/lib/python/gladevcp/speedcontrol.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # -*- coding:UTF-8 -*- # GladeVcp Widget diff --git a/lib/python/gladevcp/tooledit_widget.py b/lib/python/gladevcp/tooledit_widget.py index 53dd40dc4f..8b8dacbd78 100644 --- a/lib/python/gladevcp/tooledit_widget.py +++ b/lib/python/gladevcp/tooledit_widget.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # GladeVcp Widget - tooledit # # Copyright (c) 2012 Chris Morley diff --git a/lib/python/gladevcp/xembed.py b/lib/python/gladevcp/xembed.py index 985c8a9c8b..c4ea7ca7ff 100644 --- a/lib/python/gladevcp/xembed.py +++ b/lib/python/gladevcp/xembed.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # vim: sts=4 sw=4 et """ XEmbed helper functions to allow correct embeding inside Axis diff --git a/lib/python/gremlin_view.py b/lib/python/gremlin_view.py index a420b3e8ef..736e46ecbe 100644 --- a/lib/python/gremlin_view.py +++ b/lib/python/gremlin_view.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 #------------------------------------------------------------------------------ # Copyright: 2013 diff --git a/lib/python/hal.py b/lib/python/hal.py index 20179f937a..448e3026a6 100644 --- a/lib/python/hal.py +++ b/lib/python/hal.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # vim: sts=4 sw=4 et """ diff --git a/lib/python/hal_glib.py b/lib/python/hal_glib.py index 9e8ee605e9..1192aaee0e 100644 --- a/lib/python/hal_glib.py +++ b/lib/python/hal_glib.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # vim: sts=4 sw=4 et import _hal, hal, gobject diff --git a/lib/python/popupkeyboard.py b/lib/python/popupkeyboard.py index dc883b69a0..28fbcfbfff 100644 --- a/lib/python/popupkeyboard.py +++ b/lib/python/popupkeyboard.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 #------------------------------------------------------------------------------ # Copyright: 2013 diff --git a/lib/python/pyngcgui.py b/lib/python/pyngcgui.py index 5e5620b8af..d7dccb7d0e 100644 --- a/lib/python/pyngcgui.py +++ b/lib/python/pyngcgui.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # Notes: # 1) ini file items: diff --git a/lib/python/rs274/OpenGLTk.py b/lib/python/rs274/OpenGLTk.py index 68b7a58072..bc31d8c867 100755 --- a/lib/python/rs274/OpenGLTk.py +++ b/lib/python/rs274/OpenGLTk.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # This file is from PyOpenGL-2.0.1.07. That distribution's license is # """License :: OSI Approved :: BSD License""", diff --git a/lib/python/rs274/options.py b/lib/python/rs274/options.py index 14c52efe73..11daa66bc3 100644 --- a/lib/python/rs274/options.py +++ b/lib/python/rs274/options.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # This is a component of AXIS, a front-end for emc # Copyright 2004, 2005, 2006 Jeff Epler # diff --git a/nosetests/test_compat.py b/nosetests/test_compat.py index 12650112e3..278ab0cead 100644 --- a/nosetests/test_compat.py +++ b/nosetests/test_compat.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 from nose import with_setup from machinekit.nosetests.realtime import setup_module,teardown_module diff --git a/nosetests/test_groups.py b/nosetests/test_groups.py index 4d74110868..9f0d7ac8a5 100644 --- a/nosetests/test_groups.py +++ b/nosetests/test_groups.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 from nose import with_setup from machinekit.nosetests.realtime import setup_module,teardown_module diff --git a/nosetests/test_mk_hal_basics.py b/nosetests/test_mk_hal_basics.py index 52045d3de8..06b3d59415 100644 --- a/nosetests/test_mk_hal_basics.py +++ b/nosetests/test_mk_hal_basics.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 from nose import with_setup from machinekit.nosetests.realtime import setup_module,teardown_module diff --git a/nosetests/test_netcmd.py b/nosetests/test_netcmd.py index 2dba291683..2a2f1436e6 100644 --- a/nosetests/test_netcmd.py +++ b/nosetests/test_netcmd.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 from nose import with_setup diff --git a/nosetests/test_pinops.py b/nosetests/test_pinops.py index 4dffd2d833..57d9f56e55 100644 --- a/nosetests/test_pinops.py +++ b/nosetests/test_pinops.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 from nose import with_setup from machinekit.nosetests.realtime import setup_module,teardown_module diff --git a/nosetests/test_ring.py b/nosetests/test_ring.py index 7a95d9921a..f337df1483 100644 --- a/nosetests/test_ring.py +++ b/nosetests/test_ring.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 import os,time,sys from nose import with_setup diff --git a/nosetests/test_ring_intracomp.py b/nosetests/test_ring_intracomp.py index a137d407c7..631ca8dc09 100644 --- a/nosetests/test_ring_intracomp.py +++ b/nosetests/test_ring_intracomp.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # create a ring # assure records written can be read back diff --git a/nosetests/test_ringdemo.py b/nosetests/test_ringdemo.py index ef1f50735a..5e84c48f5b 100644 --- a/nosetests/test_ringdemo.py +++ b/nosetests/test_ringdemo.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 import os,time,sys from nose import with_setup diff --git a/nosetests/test_rtapi.py b/nosetests/test_rtapi.py index e09be44ae3..0aaecb23a1 100644 --- a/nosetests/test_rtapi.py +++ b/nosetests/test_rtapi.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 import os import time import sys diff --git a/nosetests/test_streamring.py b/nosetests/test_streamring.py index 11b9971af4..0ecfc6d448 100644 --- a/nosetests/test_streamring.py +++ b/nosetests/test_streamring.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # create a ring # assure records written can be read back diff --git a/nosetests/unittest_icomp.py b/nosetests/unittest_icomp.py index f10ab5775b..3c90db6be1 100644 --- a/nosetests/unittest_icomp.py +++ b/nosetests/unittest_icomp.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # icomp is the demo/test comp for the HAL instantiation API # it has the following parameters: diff --git a/nosetests/unittest_instbindings.py b/nosetests/unittest_instbindings.py index 2e9767316b..93ee631d6a 100644 --- a/nosetests/unittest_instbindings.py +++ b/nosetests/unittest_instbindings.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # verify the cython inst bindings diff --git a/nosetests/unittest_or2.py b/nosetests/unittest_or2.py index 98cb7316de..ca9b7ae35f 100644 --- a/nosetests/unittest_or2.py +++ b/nosetests/unittest_or2.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 from nose import with_setup from machinekit.nosetests.realtime import setup_module ,teardown_module diff --git a/scripts/hal-graph b/scripts/hal-graph index 464d1e0e08..2c4a5c7584 100755 --- a/scripts/hal-graph +++ b/scripts/hal-graph @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # # Copyright (C) 2015 Jakob Flierl # diff --git a/src/emc/usr_intf/axis/scripts/axis-remote.py b/src/emc/usr_intf/axis/scripts/axis-remote.py index 49ade212a2..5f6cee0a6c 100755 --- a/src/emc/usr_intf/axis/scripts/axis-remote.py +++ b/src/emc/usr_intf/axis/scripts/axis-remote.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # This is a component of AXIS, a front-end for LinuxCNC # Copyright 2006 Jeff Epler and # Chris Radek diff --git a/src/emc/usr_intf/axis/scripts/axis.py b/src/emc/usr_intf/axis/scripts/axis.py index e2fe18003b..e9eb632f0f 100755 --- a/src/emc/usr_intf/axis/scripts/axis.py +++ b/src/emc/usr_intf/axis/scripts/axis.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # This is a component of AXIS, a front-end for LinuxCNC # Copyright 2004, 2005, 2006, 2007, 2008, 2009 # Jeff Epler and Chris Radek diff --git a/src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py b/src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py index 93d1ba0ad0..c1ba38a17c 100644 --- a/src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py +++ b/src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 import sys, os import gettext BASE = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), "..")) diff --git a/src/emc/usr_intf/axis/scripts/lintini.py b/src/emc/usr_intf/axis/scripts/lintini.py index 1b4fbcc67c..3703e81d63 100644 --- a/src/emc/usr_intf/axis/scripts/lintini.py +++ b/src/emc/usr_intf/axis/scripts/lintini.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 #!/usr/bin/python2 # This is a component of AXIS, a front-end for LinuxCNC # Copyright 2004, 2005, 2006 Jeff Epler and diff --git a/src/emc/usr_intf/axis/scripts/linuxcnctop.py b/src/emc/usr_intf/axis/scripts/linuxcnctop.py index 1449a09b73..eaafae893d 100644 --- a/src/emc/usr_intf/axis/scripts/linuxcnctop.py +++ b/src/emc/usr_intf/axis/scripts/linuxcnctop.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # This is a component of AXIS, a front-end for linuxcnc # Copyright 2004, 2005, 2006 Jeff Epler # and Chris Radek diff --git a/src/emc/usr_intf/axis/scripts/mdi.py b/src/emc/usr_intf/axis/scripts/mdi.py index 773d1e3b46..2c6b8ef123 100644 --- a/src/emc/usr_intf/axis/scripts/mdi.py +++ b/src/emc/usr_intf/axis/scripts/mdi.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # This is a component of AXIS, a front-end for LinuxCNC # Copyright 2004, 2005, 2006 Jeff Epler # diff --git a/src/emc/usr_intf/gmoccapy/dialogs.py b/src/emc/usr_intf/gmoccapy/dialogs.py index f644953726..5c299f137f 100644 --- a/src/emc/usr_intf/gmoccapy/dialogs.py +++ b/src/emc/usr_intf/gmoccapy/dialogs.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 ''' This class is used to handle the dialogs from gmoccapy, diff --git a/src/emc/usr_intf/gmoccapy/getiniinfo.py b/src/emc/usr_intf/gmoccapy/getiniinfo.py index 87a15537c8..ba458b2297 100644 --- a/src/emc/usr_intf/gmoccapy/getiniinfo.py +++ b/src/emc/usr_intf/gmoccapy/getiniinfo.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 ''' This class is used to get information from a config.ini file, diff --git a/src/emc/usr_intf/gmoccapy/notification.py b/src/emc/usr_intf/gmoccapy/notification.py index bb5a7ee7a9..2720bcf3b8 100755 --- a/src/emc/usr_intf/gmoccapy/notification.py +++ b/src/emc/usr_intf/gmoccapy/notification.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 ''' This widget can be used to show small popup windows showing messages. diff --git a/src/emc/usr_intf/gmoccapy/player.py b/src/emc/usr_intf/gmoccapy/player.py index e794197574..43b84a6a87 100644 --- a/src/emc/usr_intf/gmoccapy/player.py +++ b/src/emc/usr_intf/gmoccapy/player.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 ''' This class is used to handle sound messages from gmoccapy, diff --git a/src/emc/usr_intf/gmoccapy/widgets.py b/src/emc/usr_intf/gmoccapy/widgets.py index d80330e152..9089c6236b 100644 --- a/src/emc/usr_intf/gmoccapy/widgets.py +++ b/src/emc/usr_intf/gmoccapy/widgets.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 ''' This class is just to handle the widgets of gmoccapy, diff --git a/src/emc/usr_intf/stepconf/build_HAL.py b/src/emc/usr_intf/stepconf/build_HAL.py index 2ce1b22659..1d351bc0de 100755 --- a/src/emc/usr_intf/stepconf/build_HAL.py +++ b/src/emc/usr_intf/stepconf/build_HAL.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # # This is stepconf, a graphical configuration editor for LinuxCNC # Copyright 2007 Jeff Epler diff --git a/src/emc/usr_intf/stepconf/build_INI.py b/src/emc/usr_intf/stepconf/build_INI.py index db7bf1fbea..a50eb57e3b 100644 --- a/src/emc/usr_intf/stepconf/build_INI.py +++ b/src/emc/usr_intf/stepconf/build_INI.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # # This is stepconf, a graphical configuration editor for Machinekit # Copyright 2007 Jeff Epler diff --git a/src/emc/usr_intf/stepconf/pages.py b/src/emc/usr_intf/stepconf/pages.py index 08e7336cad..6f0a54a397 100755 --- a/src/emc/usr_intf/stepconf/pages.py +++ b/src/emc/usr_intf/stepconf/pages.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # -*- encoding: utf-8 -*- # # This is stepconf, a graphical configuration editor for LinuxCNC diff --git a/src/emc/usr_intf/stepconf/stepconf.py b/src/emc/usr_intf/stepconf/stepconf.py index 5a9ec3a0b2..6c7077bbbe 100755 --- a/src/emc/usr_intf/stepconf/stepconf.py +++ b/src/emc/usr_intf/stepconf/stepconf.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # -*- encoding: utf-8 -*- # # This is stepconf, a graphical configuration editor for Machinekit diff --git a/src/emc/usr_intf/touchy/touchy.py b/src/emc/usr_intf/touchy/touchy.py index 59cc55b71b..12d80b4170 100755 --- a/src/emc/usr_intf/touchy/touchy.py +++ b/src/emc/usr_intf/touchy/touchy.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # Touchy is Copyright (c) 2009 Chris Radek diff --git a/src/hal/cython/examples/component.py b/src/hal/cython/examples/component.py index c1396dd714..8822d31e59 100644 --- a/src/hal/cython/examples/component.py +++ b/src/hal/cython/examples/component.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # vim: sts=4 sw=4 et # basic HAL operations: diff --git a/src/hal/cython/examples/heaptrace.py b/src/hal/cython/examples/heaptrace.py index f10a85b0e2..753edbc6bd 100644 --- a/src/hal/cython/examples/heaptrace.py +++ b/src/hal/cython/examples/heaptrace.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # vim: sts=4 sw=4 et # HAL internals introspection - the hal_data descriptor diff --git a/src/hal/cython/examples/internal.py b/src/hal/cython/examples/internal.py index a4cf7b709c..8b3c5090d7 100644 --- a/src/hal/cython/examples/internal.py +++ b/src/hal/cython/examples/internal.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # vim: sts=4 sw=4 et # HAL internals introspection - the hal_data descriptor diff --git a/src/hal/cython/examples/test_instance.py b/src/hal/cython/examples/test_instance.py index 7d9242f3e1..a3029c5d89 100644 --- a/src/hal/cython/examples/test_instance.py +++ b/src/hal/cython/examples/test_instance.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 from machinekit import hal diff --git a/src/hal/cython/test.py b/src/hal/cython/test.py index 09d3bdf60e..d31f4c4004 100644 --- a/src/hal/cython/test.py +++ b/src/hal/cython/test.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # vim: sts=4 sw=4 et import time diff --git a/src/hal/lib/hal.py b/src/hal/lib/hal.py index 20179f937a..448e3026a6 100644 --- a/src/hal/lib/hal.py +++ b/src/hal/lib/hal.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # vim: sts=4 sw=4 et """ diff --git a/src/hal/user_comps/gladevcp.py b/src/hal/user_comps/gladevcp.py index 0de95d5c49..6451610a13 100644 --- a/src/hal/user_comps/gladevcp.py +++ b/src/hal/user_comps/gladevcp.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # vim: sts=4 sw=4 et # This is a component of EMC # gladevcp Copyright 2010 Chris Morley diff --git a/src/hal/user_comps/pyvcp.py b/src/hal/user_comps/pyvcp.py index 3a136adecf..fb1ccf7ed4 100755 --- a/src/hal/user_comps/pyvcp.py +++ b/src/hal/user_comps/pyvcp.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # This is a component of emc # Copyright 2007 Anders Wallin # diff --git a/src/hal/utils/halgui/halgui.py b/src/hal/utils/halgui/halgui.py index 836395de61..3d8cdc24f4 100755 --- a/src/hal/utils/halgui/halgui.py +++ b/src/hal/utils/halgui/halgui.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/machinetalk/mklauncher/mklauncher.py b/src/machinetalk/mklauncher/mklauncher.py index 3111d893e2..9c04d72519 100644 --- a/src/machinetalk/mklauncher/mklauncher.py +++ b/src/machinetalk/mklauncher/mklauncher.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 import os import sys diff --git a/src/machinetalk/msgcomponents/zmqringsub.py b/src/machinetalk/msgcomponents/zmqringsub.py index 8ce8754885..aa321f7da0 100644 --- a/src/machinetalk/msgcomponents/zmqringsub.py +++ b/src/machinetalk/msgcomponents/zmqringsub.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # # run as python zmqringsub.py [[destination] [optional list of ring names]] # diff --git a/src/machinetalk/proto/scripts/protoc-gen-depends b/src/machinetalk/proto/scripts/protoc-gen-depends index d95d71162f..d81e64f272 100755 --- a/src/machinetalk/proto/scripts/protoc-gen-depends +++ b/src/machinetalk/proto/scripts/protoc-gen-depends @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # protoc plugin to generate dependeny files # # the .d file format is rather project specific diff --git a/src/machinetalk/proto/setup.py b/src/machinetalk/proto/setup.py index 1471cb07c5..144a1d7fe4 100644 --- a/src/machinetalk/proto/setup.py +++ b/src/machinetalk/proto/setup.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 from distutils.core import setup diff --git a/src/machinetalk/support/pb2json.py b/src/machinetalk/support/pb2json.py index 62ce2eee51..cdaeb95b4b 100644 --- a/src/machinetalk/support/pb2json.py +++ b/src/machinetalk/support/pb2json.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # vim: sts=4 sw=4 et """ diff --git a/src/machinetalk/tutorial/json-ws/micromot-server.py b/src/machinetalk/tutorial/json-ws/micromot-server.py index eafa6a33c9..4f546cebb5 100644 --- a/src/machinetalk/tutorial/json-ws/micromot-server.py +++ b/src/machinetalk/tutorial/json-ws/micromot-server.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 import os,time,sys import zmq import time diff --git a/src/machinetalk/tutorial/motorctrl/motorctrl.py b/src/machinetalk/tutorial/motorctrl/motorctrl.py index 5c61a24f22..ac32913c11 100644 --- a/src/machinetalk/tutorial/motorctrl/motorctrl.py +++ b/src/machinetalk/tutorial/motorctrl/motorctrl.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 # vim: sts=4 sw=4 et # This is a component of LinuxCNC # classhandler.py Copyright 2010 Michael Haberler diff --git a/src/po/fixpaths.py b/src/po/fixpaths.py index bd19b28507..6dec262f6d 100755 --- a/src/po/fixpaths.py +++ b/src/po/fixpaths.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 import getopt import os import string diff --git a/tests/halui-jogging/test-ui.py b/tests/halui-jogging/test-ui.py index 7e68092071..5651a7953c 100755 --- a/tests/halui-jogging/test-ui.py +++ b/tests/halui-jogging/test-ui.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 import linuxcnc import hal diff --git a/tests/interp/subroutine-return/test-ui.py b/tests/interp/subroutine-return/test-ui.py index 774b4bb27b..0404ea227a 100755 --- a/tests/interp/subroutine-return/test-ui.py +++ b/tests/interp/subroutine-return/test-ui.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 import linuxcnc import hal diff --git a/tests/motion-logger/mountaindew/test-ui.py b/tests/motion-logger/mountaindew/test-ui.py index 3ef974e21d..a4e8207848 100755 --- a/tests/motion-logger/mountaindew/test-ui.py +++ b/tests/motion-logger/mountaindew/test-ui.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 import linuxcnc import hal diff --git a/tests/remap/remap-io/test-ui.py b/tests/remap/remap-io/test-ui.py index 8f1afaee39..c0df76d81d 100755 --- a/tests/remap/remap-io/test-ui.py +++ b/tests/remap/remap-io/test-ui.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 import linuxcnc, hal import sys diff --git a/tests/toolchanger/m61/test-ui.py b/tests/toolchanger/m61/test-ui.py index a78acca1f3..c53d443810 100755 --- a/tests/toolchanger/m61/test-ui.py +++ b/tests/toolchanger/m61/test-ui.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 import linuxcnc import hal diff --git a/tests/trajectory-planner/circular-arcs/linuxcnc_control.py b/tests/trajectory-planner/circular-arcs/linuxcnc_control.py index 696e1dff3a..2feb2b9c10 100644 --- a/tests/trajectory-planner/circular-arcs/linuxcnc_control.py +++ b/tests/trajectory-planner/circular-arcs/linuxcnc_control.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 '''Copied from m61-test''' import linuxcnc diff --git a/tests/trajectory-planner/circular-arcs/machine_setup.py b/tests/trajectory-planner/circular-arcs/machine_setup.py index 851d942a21..5013f4e320 100755 --- a/tests/trajectory-planner/circular-arcs/machine_setup.py +++ b/tests/trajectory-planner/circular-arcs/machine_setup.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 '''Copied from m61-test''' import linuxcnc diff --git a/tests/trajectory-planner/circular-arcs/run_all_tests.py b/tests/trajectory-planner/circular-arcs/run_all_tests.py index c907f79081..3d16db8443 100644 --- a/tests/trajectory-planner/circular-arcs/run_all_tests.py +++ b/tests/trajectory-planner/circular-arcs/run_all_tests.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python2 '''Copied from m61-test''' import linuxcnc From d1ddf3673f2a0961a4979d87d1cb911c9354d927 Mon Sep 17 00:00:00 2001 From: Mick Date: Sun, 24 Dec 2017 10:56:47 +0000 Subject: [PATCH 205/516] Further python to python2 conversions in non .py files --- bin/profile_axis | 4 ++-- .../velocity-extruding/slic3r-postprocess.sh | 4 ++-- .../Fabrikator-Mini-CRAMPS/launcher.ini | 2 +- .../BeagleBone/MendelMax-CRAMPS/launcher.ini | 2 +- configs/sim/qqvsim/go.sh | 2 +- configs/sim/qqvsim/launcher.ini | 2 +- scripts/linuxcnc.in | 2 +- scripts/linuxcnc_info | 4 ++-- scripts/swish | 2 +- src/configure.ac | 4 ++-- src/emc/rs274ngc/preview/rs274preview.py | 4 ++-- src/machinetalk/mklauncher/test_mklauncher.py | 4 ++-- .../msgcomponents/pbring/pbring-demo.py | 2 +- src/machinetalk/msgcomponents/ringread.py | 2 +- src/machinetalk/msgcomponents/ringwrite.py | 2 +- src/machinetalk/msgcomponents/zmqringpub.py | 2 +- src/machinetalk/msgcomponents/zmqringsub.py | 2 +- .../nanopb/generator/protoc-gen-nanopb.bat | 2 +- src/machinetalk/scripts/extract-mottypes | 2 +- src/machinetalk/scripts/extract-nmltypes | 2 +- src/machinetalk/tutorial/protobuf/Makefile | 20 +++++++++---------- tests/hal-link-unlink/test.sh | 2 +- tests/halmodule.0/test.sh | 2 +- tests/interp/bad/test.sh | 2 +- .../circular-arcs/profile-run.sh | 2 +- .../circular-arcs/test-all.sh | 2 +- .../circular-arcs/test-debug.sh | 2 +- .../circular-arcs/test-lengths.sh | 2 +- .../circular-arcs/test-optimization.sh | 2 +- .../circular-arcs/test-release.sh | 2 +- 30 files changed, 45 insertions(+), 45 deletions(-) diff --git a/bin/profile_axis b/bin/profile_axis index 0ea35e58e8..38a00bc64a 100755 --- a/bin/profile_axis +++ b/bin/profile_axis @@ -1,4 +1,4 @@ #!/bin/bash SCRIPT_LOCATION=$(dirname $(readlink -f $0)) -python -mcProfile -o axis.profile $SCRIPT_LOCATION/axis "$@" -(echo sort cumulative; echo stats 20) | python -mpstats axis.profile +python2 -mcProfile -o axis.profile $SCRIPT_LOCATION/axis "$@" +(echo sort cumulative; echo stats 20) | python2 -mpstats axis.profile diff --git a/configs/ARM/BeagleBone/BeBoPr-Bridge/velocity-extruding/slic3r-postprocess.sh b/configs/ARM/BeagleBone/BeBoPr-Bridge/velocity-extruding/slic3r-postprocess.sh index 81fa6a746a..869b025d6b 100755 --- a/configs/ARM/BeagleBone/BeBoPr-Bridge/velocity-extruding/slic3r-postprocess.sh +++ b/configs/ARM/BeagleBone/BeBoPr-Bridge/velocity-extruding/slic3r-postprocess.sh @@ -84,7 +84,7 @@ sed -e 's|^M109 |M104 |' \ "M66-added_$1" > "cleaned_$1" rm "M66-added_$1" -python ./cleanup-for-velocity-extrusion.py \ +python2 ./cleanup-for-velocity-extrusion.py \ "cleaned_$1" "$perimeters_extrusion_width" \ "$infill_extrusion_width" \ "$layer_height" \ @@ -111,7 +111,7 @@ rm "result-cleaned_$1" #G0 Z9.000 F18000.000 ; move to next layer (44) #M68 E4 Q0.2 # -python ./correct-retract-on-next-layer.py "cleaned_$1" +python2 ./correct-retract-on-next-layer.py "cleaned_$1" rm "cleaned_$1" #convert g1 line segments to g2 or g3 if possible diff --git a/configs/ARM/BeagleBone/Fabrikator-Mini-CRAMPS/launcher.ini b/configs/ARM/BeagleBone/Fabrikator-Mini-CRAMPS/launcher.ini index 6ab07fec5d..1ae17084c9 100644 --- a/configs/ARM/BeagleBone/Fabrikator-Mini-CRAMPS/launcher.ini +++ b/configs/ARM/BeagleBone/Fabrikator-Mini-CRAMPS/launcher.ini @@ -5,5 +5,5 @@ type = FDM [MendelMax] name = MendelMax CRAMPS description = DIY 3D printer -command = python run.py +command = python2 run.py variant = with one extruder \ No newline at end of file diff --git a/configs/ARM/BeagleBone/MendelMax-CRAMPS/launcher.ini b/configs/ARM/BeagleBone/MendelMax-CRAMPS/launcher.ini index 6ab07fec5d..1ae17084c9 100644 --- a/configs/ARM/BeagleBone/MendelMax-CRAMPS/launcher.ini +++ b/configs/ARM/BeagleBone/MendelMax-CRAMPS/launcher.ini @@ -5,5 +5,5 @@ type = FDM [MendelMax] name = MendelMax CRAMPS description = DIY 3D printer -command = python run.py +command = python2 run.py variant = with one extruder \ No newline at end of file diff --git a/configs/sim/qqvsim/go.sh b/configs/sim/qqvsim/go.sh index 1dd63a3a84..62077cf545 100755 --- a/configs/sim/qqvsim/go.sh +++ b/configs/sim/qqvsim/go.sh @@ -13,4 +13,4 @@ ulimit -S -c unlimited # no limit on core dump size # for remote-ui mklauncher . & -python run.py # set_debug_level() inside run.py +python2 run.py # set_debug_level() inside run.py diff --git a/configs/sim/qqvsim/launcher.ini b/configs/sim/qqvsim/launcher.ini index 78bddf3dfe..ae8d6fefdc 100644 --- a/configs/sim/qqvsim/launcher.ini +++ b/configs/sim/qqvsim/launcher.ini @@ -1,5 +1,5 @@ [MendelMax-Sim] name = QtQuickVcp SIM description = Machineface simulator -command = python run.py +command = python2 run.py variant = software simulator diff --git a/scripts/linuxcnc.in b/scripts/linuxcnc.in index cccf76b86e..7f806de671 100644 --- a/scripts/linuxcnc.in +++ b/scripts/linuxcnc.in @@ -758,7 +758,7 @@ else fi ;; *.py) - if ! python $CFGFILE ; then + if ! python2 $CFGFILE ; then Cleanup exit -1 fi diff --git a/scripts/linuxcnc_info b/scripts/linuxcnc_info index 8de81478c1..1c5d70a1b7 100755 --- a/scripts/linuxcnc_info +++ b/scripts/linuxcnc_info @@ -86,9 +86,9 @@ show " cpu MHz" $(parse_cpuinfo "cpu MHz") show " parport" $(cat /proc/ioports|grep parport) show " serial" $(cat /proc/ioports|grep serial) echo -echo "Varsions:" +echo "Versions:" show " gcc" $(gcc --version|head -1) -show " python" $(python --version 2>&1) +show " python" $(python2 --version 2>&1) show " git" $(git --version) show " tcl" $(echo "puts $::tcl_version"|tclsh) show " tk" $(echo "puts $::tk_version;destroy ."|wish) diff --git a/scripts/swish b/scripts/swish index adaec6f732..b0d9420659 100755 --- a/scripts/swish +++ b/scripts/swish @@ -18,7 +18,7 @@ SRCDIR=$(cd "$MYDIR/../src"; pwd) SWISHINDEX="$SRCDIR/.swishindex" function makerelative () { -python -c ' +python2 -c ' import os, sys here = os.getcwd() parents = [here + "/"] diff --git a/src/configure.ac b/src/configure.ac index 442d391f28..89308b1a05 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -2423,7 +2423,7 @@ AC_ARG_WITH(python, [ PYTHON=$withval ],[ - PYTHON=python + PYTHON=python2 ]) AC_PATH_PROG(PYTHON,$PYTHON,"none") if test $PYTHON = "none" @@ -3120,7 +3120,7 @@ done cat machinekitcfg.py-tmp2 > $BUILD_TOPLEVEL/lib/python/machinekit/config.py rm machinekitcfg.py-tmp2 AC_MSG_CHECKING(usability of $BUILD_TOPLEVEL/lib/python/machinekit/config.py) -python $BUILD_TOPLEVEL/lib/python/machinekit/config.py +python2 $BUILD_TOPLEVEL/lib/python/machinekit/config.py AC_MSG_RESULT(done) ############################################################################## diff --git a/src/emc/rs274ngc/preview/rs274preview.py b/src/emc/rs274ngc/preview/rs274preview.py index 08caa3870a..e0644b6165 100644 --- a/src/emc/rs274ngc/preview/rs274preview.py +++ b/src/emc/rs274ngc/preview/rs274preview.py @@ -1,9 +1,9 @@ # # interpret a g-code file, and generate preview commands # -# run as python rs274preview.py +# run as python2 rs274preview.py # to abort after first second: -# python rs274preview.py -a +# python2 rs274preview.py -a import sys import getopt diff --git a/src/machinetalk/mklauncher/test_mklauncher.py b/src/machinetalk/mklauncher/test_mklauncher.py index b2925a8a11..313b703fea 100644 --- a/src/machinetalk/mklauncher/test_mklauncher.py +++ b/src/machinetalk/mklauncher/test_mklauncher.py @@ -22,7 +22,7 @@ def single_launcher_file(tmpdir): [demo] name = Demo config description = My super demo -command = python run.py +command = python2 run.py variant = default ''' ini = tmpdir.join('launcher.ini') @@ -42,7 +42,7 @@ def test_reading_single_launcher_file_works(context, single_launcher_file): assert len(launchers) == 1 assert launchers[0].name == 'Demo config' assert launchers[0].description == 'My super demo' - assert launchers[0].command == 'python run.py' + assert launchers[0].command == 'python2 run.py' assert launchers[0].info.variant == 'default' diff --git a/src/machinetalk/msgcomponents/pbring/pbring-demo.py b/src/machinetalk/msgcomponents/pbring/pbring-demo.py index 20791d69ed..6f66179ac1 100644 --- a/src/machinetalk/msgcomponents/pbring/pbring-demo.py +++ b/src/machinetalk/msgcomponents/pbring/pbring-demo.py @@ -5,7 +5,7 @@ # # run as: # halrun -I pbring-demo.hal -# python pbring-demo.py +# python2 pbring-demo.py import time,os from machinetalk.protobuf.types_pb2 import * diff --git a/src/machinetalk/msgcomponents/ringread.py b/src/machinetalk/msgcomponents/ringread.py index 5247077825..6965177f46 100644 --- a/src/machinetalk/msgcomponents/ringread.py +++ b/src/machinetalk/msgcomponents/ringread.py @@ -5,7 +5,7 @@ # # run as: # halrun -I ringwrite.hal -# python ringread.py +# python2 ringread.py import os, time from machinekit import hal diff --git a/src/machinetalk/msgcomponents/ringwrite.py b/src/machinetalk/msgcomponents/ringwrite.py index 8a55f3a669..6f293f5ec9 100644 --- a/src/machinetalk/msgcomponents/ringwrite.py +++ b/src/machinetalk/msgcomponents/ringwrite.py @@ -1,7 +1,7 @@ # HAL ring example # run as: # halrun -I recordread.hal -# python ringwrite..py +# python2 ringwrite..py # # create new rings # inspect rings diff --git a/src/machinetalk/msgcomponents/zmqringpub.py b/src/machinetalk/msgcomponents/zmqringpub.py index e0cebc79be..de230bb2d9 100644 --- a/src/machinetalk/msgcomponents/zmqringpub.py +++ b/src/machinetalk/msgcomponents/zmqringpub.py @@ -12,7 +12,7 @@ # # in a separate window, start the subscriber demo: # -# python zmqringsub.py tcp://127.0.0.1:5555 +# python2 zmqringsub.py tcp://127.0.0.1:5555 # # adapted from: https://github.com/zeromq/pyzmq/tree/master/examples/pubsub diff --git a/src/machinetalk/msgcomponents/zmqringsub.py b/src/machinetalk/msgcomponents/zmqringsub.py index aa321f7da0..cb16e163af 100644 --- a/src/machinetalk/msgcomponents/zmqringsub.py +++ b/src/machinetalk/msgcomponents/zmqringsub.py @@ -1,6 +1,6 @@ #!/usr/bin/python2 # -# run as python zmqringsub.py [[destination] [optional list of ring names]] +# run as python2 zmqringsub.py [[destination] [optional list of ring names]] # # see also zmqringpub.py and zmqdemo.hal # diff --git a/src/machinetalk/nanopb/generator/protoc-gen-nanopb.bat b/src/machinetalk/nanopb/generator/protoc-gen-nanopb.bat index 7624984e58..6963b91d50 100644 --- a/src/machinetalk/nanopb/generator/protoc-gen-nanopb.bat +++ b/src/machinetalk/nanopb/generator/protoc-gen-nanopb.bat @@ -9,4 +9,4 @@ :: --plugin= on the command line. set mydir=%~dp0 -python "%mydir%\nanopb_generator.py" --protoc-plugin +python2 "%mydir%\nanopb_generator.py" --protoc-plugin diff --git a/src/machinetalk/scripts/extract-mottypes b/src/machinetalk/scripts/extract-mottypes index bfc635a108..e6178b4b38 100755 --- a/src/machinetalk/scripts/extract-mottypes +++ b/src/machinetalk/scripts/extract-mottypes @@ -7,7 +7,7 @@ egrep "^[[:space:]]+EMCMOT_" $1 | \ sed -e "s/^\s*//g" -e "s/,.*$//g" -e 's/;.*$//g' -e 's/\s.*$//g' | uniq |\ -python -c "`cat < profile.log & linuxcnc -r circular_arcs.ini & LOCAL_LCNC_PID=$! echo $LOCAL_LCNC_PID -(python machine_setup.py $1 && say_done) || say_failed +(python2 machine_setup.py $1 && say_done) || say_failed #fg #End profiling pkill -9 axis diff --git a/tests/trajectory-planner/circular-arcs/test-all.sh b/tests/trajectory-planner/circular-arcs/test-all.sh index f7334af466..8f2a0fb395 100755 --- a/tests/trajectory-planner/circular-arcs/test-all.sh +++ b/tests/trajectory-planner/circular-arcs/test-all.sh @@ -8,5 +8,5 @@ fi cp position.blank position.txt #Assume build without TP debug logging enabled linuxcnc $1 > test.log & -python run_all_tests.py +python2 run_all_tests.py fg diff --git a/tests/trajectory-planner/circular-arcs/test-debug.sh b/tests/trajectory-planner/circular-arcs/test-debug.sh index 9a20e83b9f..234fcf8d3d 100755 --- a/tests/trajectory-planner/circular-arcs/test-debug.sh +++ b/tests/trajectory-planner/circular-arcs/test-debug.sh @@ -4,7 +4,7 @@ set -o monitor cp position.blank configs/position.txt rm configs/constraints.log linuxcnc $1 > test.log & -python machine_setup.py $2 +python2 machine_setup.py $2 fg ./process_runlog.sh test.log #if [ -a movement.log ] diff --git a/tests/trajectory-planner/circular-arcs/test-lengths.sh b/tests/trajectory-planner/circular-arcs/test-lengths.sh index 4e1160032f..12e505be55 100755 --- a/tests/trajectory-planner/circular-arcs/test-lengths.sh +++ b/tests/trajectory-planner/circular-arcs/test-lengths.sh @@ -3,7 +3,7 @@ set -o monitor ./build-debug.sh cp position.blank position.txt linuxcnc $1 > test.log & -python machine_setup.py $2 +python2 machine_setup.py $2 fg ./save_lengths.sh test.log #if [ -a length_data.log ] diff --git a/tests/trajectory-planner/circular-arcs/test-optimization.sh b/tests/trajectory-planner/circular-arcs/test-optimization.sh index ecd313572b..47c3a5fbeb 100755 --- a/tests/trajectory-planner/circular-arcs/test-optimization.sh +++ b/tests/trajectory-planner/circular-arcs/test-optimization.sh @@ -8,7 +8,7 @@ set -o monitorA ./build-debug.sh cp position.blank position.txt linuxcnc -r circular_arcs.ini > test.log & -python machine_setup.py $1 && say_done +python2 machine_setup.py $1 && say_done fg ./save_activate.sh test.log exit $1 diff --git a/tests/trajectory-planner/circular-arcs/test-release.sh b/tests/trajectory-planner/circular-arcs/test-release.sh index 335bfb758a..96b89d1326 100755 --- a/tests/trajectory-planner/circular-arcs/test-release.sh +++ b/tests/trajectory-planner/circular-arcs/test-release.sh @@ -8,7 +8,7 @@ if [ -f "$2" ] then FILENAME="../"$2 fi -python machine_setup.py $FILENAME +python2 machine_setup.py $FILENAME fg ./process_runlog.sh test.log #if [ -a movement.log ] From 03f2ee2e719ed9897b96aab12ee9bad7167a60b8 Mon Sep 17 00:00:00 2001 From: Mick Date: Sun, 24 Dec 2017 15:51:57 +0000 Subject: [PATCH 206/516] Fix runtests for Stretch and Buster Quite a few runtests rely upon linuxcncrsh used in conjunction with `tcping` or `nc` The netcat package containing these binaries has been deprecated, starting at Stretch, along with a lot of the old net-utils. (Even ifconfig is not available unless specifically installed, from the package net-tools) Add a `skip` script to those tests which require deprecated binaries to test for presence and skip if not found. Not doing so will cause the failure of that and every subsequent test because the linuxcnc/halcmd processes are left running. Signed-off-by: Mick --- tests/linuxcncrsh/skip | 15 +++++++++++++++ tests/mdi-queue/oword-queue-buster/skip | 15 +++++++++++++++ tests/mdi-queue/simple-queue-buster/skip | 15 +++++++++++++++ tests/t0/nonrandom/skip | 15 +++++++++++++++ tests/t0/random-with-t0/skip | 15 +++++++++++++++ tests/t0/random-without-t0/skip | 15 +++++++++++++++ .../toolno-pocket-differ/nonrandom/skip | 15 +++++++++++++++ .../toolchanger/toolno-pocket-differ/random/skip | 15 +++++++++++++++ 8 files changed, 120 insertions(+) create mode 100755 tests/linuxcncrsh/skip create mode 100755 tests/mdi-queue/oword-queue-buster/skip create mode 100755 tests/mdi-queue/simple-queue-buster/skip create mode 100755 tests/t0/nonrandom/skip create mode 100755 tests/t0/random-with-t0/skip create mode 100755 tests/t0/random-without-t0/skip create mode 100755 tests/toolchanger/toolno-pocket-differ/nonrandom/skip create mode 100755 tests/toolchanger/toolno-pocket-differ/random/skip diff --git a/tests/linuxcncrsh/skip b/tests/linuxcncrsh/skip new file mode 100755 index 0000000000..2af8b9811e --- /dev/null +++ b/tests/linuxcncrsh/skip @@ -0,0 +1,15 @@ +#!/bin/bash +# -*-shell-script-*- + +# Skip the linuxcncrsh test if neither of the netcat binaries it uses are installed +# this typically happens on Stretch and above, then screws up all the subsequent tests + +if [ -x /usr/bin/tcping ]; then + exit 0 +else + if [ -x /usr/bin/nc ]; then + exit 0 + else + exit 1 + fi +fi diff --git a/tests/mdi-queue/oword-queue-buster/skip b/tests/mdi-queue/oword-queue-buster/skip new file mode 100755 index 0000000000..2af8b9811e --- /dev/null +++ b/tests/mdi-queue/oword-queue-buster/skip @@ -0,0 +1,15 @@ +#!/bin/bash +# -*-shell-script-*- + +# Skip the linuxcncrsh test if neither of the netcat binaries it uses are installed +# this typically happens on Stretch and above, then screws up all the subsequent tests + +if [ -x /usr/bin/tcping ]; then + exit 0 +else + if [ -x /usr/bin/nc ]; then + exit 0 + else + exit 1 + fi +fi diff --git a/tests/mdi-queue/simple-queue-buster/skip b/tests/mdi-queue/simple-queue-buster/skip new file mode 100755 index 0000000000..2af8b9811e --- /dev/null +++ b/tests/mdi-queue/simple-queue-buster/skip @@ -0,0 +1,15 @@ +#!/bin/bash +# -*-shell-script-*- + +# Skip the linuxcncrsh test if neither of the netcat binaries it uses are installed +# this typically happens on Stretch and above, then screws up all the subsequent tests + +if [ -x /usr/bin/tcping ]; then + exit 0 +else + if [ -x /usr/bin/nc ]; then + exit 0 + else + exit 1 + fi +fi diff --git a/tests/t0/nonrandom/skip b/tests/t0/nonrandom/skip new file mode 100755 index 0000000000..2af8b9811e --- /dev/null +++ b/tests/t0/nonrandom/skip @@ -0,0 +1,15 @@ +#!/bin/bash +# -*-shell-script-*- + +# Skip the linuxcncrsh test if neither of the netcat binaries it uses are installed +# this typically happens on Stretch and above, then screws up all the subsequent tests + +if [ -x /usr/bin/tcping ]; then + exit 0 +else + if [ -x /usr/bin/nc ]; then + exit 0 + else + exit 1 + fi +fi diff --git a/tests/t0/random-with-t0/skip b/tests/t0/random-with-t0/skip new file mode 100755 index 0000000000..2af8b9811e --- /dev/null +++ b/tests/t0/random-with-t0/skip @@ -0,0 +1,15 @@ +#!/bin/bash +# -*-shell-script-*- + +# Skip the linuxcncrsh test if neither of the netcat binaries it uses are installed +# this typically happens on Stretch and above, then screws up all the subsequent tests + +if [ -x /usr/bin/tcping ]; then + exit 0 +else + if [ -x /usr/bin/nc ]; then + exit 0 + else + exit 1 + fi +fi diff --git a/tests/t0/random-without-t0/skip b/tests/t0/random-without-t0/skip new file mode 100755 index 0000000000..2af8b9811e --- /dev/null +++ b/tests/t0/random-without-t0/skip @@ -0,0 +1,15 @@ +#!/bin/bash +# -*-shell-script-*- + +# Skip the linuxcncrsh test if neither of the netcat binaries it uses are installed +# this typically happens on Stretch and above, then screws up all the subsequent tests + +if [ -x /usr/bin/tcping ]; then + exit 0 +else + if [ -x /usr/bin/nc ]; then + exit 0 + else + exit 1 + fi +fi diff --git a/tests/toolchanger/toolno-pocket-differ/nonrandom/skip b/tests/toolchanger/toolno-pocket-differ/nonrandom/skip new file mode 100755 index 0000000000..2af8b9811e --- /dev/null +++ b/tests/toolchanger/toolno-pocket-differ/nonrandom/skip @@ -0,0 +1,15 @@ +#!/bin/bash +# -*-shell-script-*- + +# Skip the linuxcncrsh test if neither of the netcat binaries it uses are installed +# this typically happens on Stretch and above, then screws up all the subsequent tests + +if [ -x /usr/bin/tcping ]; then + exit 0 +else + if [ -x /usr/bin/nc ]; then + exit 0 + else + exit 1 + fi +fi diff --git a/tests/toolchanger/toolno-pocket-differ/random/skip b/tests/toolchanger/toolno-pocket-differ/random/skip new file mode 100755 index 0000000000..2af8b9811e --- /dev/null +++ b/tests/toolchanger/toolno-pocket-differ/random/skip @@ -0,0 +1,15 @@ +#!/bin/bash +# -*-shell-script-*- + +# Skip the linuxcncrsh test if neither of the netcat binaries it uses are installed +# this typically happens on Stretch and above, then screws up all the subsequent tests + +if [ -x /usr/bin/tcping ]; then + exit 0 +else + if [ -x /usr/bin/nc ]; then + exit 0 + else + exit 1 + fi +fi From a066d4afb47d86fb8296112086da787a4ea06ef9 Mon Sep 17 00:00:00 2001 From: Sergey Alirzaev Date: Wed, 27 Dec 2017 01:44:31 +0300 Subject: [PATCH 207/516] hal_gpio_h3: allocate proper amount of memory --- src/hal/drivers/hal_gpio_h3.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/hal/drivers/hal_gpio_h3.c b/src/hal/drivers/hal_gpio_h3.c index a24614de13..025105ddfa 100644 --- a/src/hal/drivers/hal_gpio_h3.c +++ b/src/hal/drivers/hal_gpio_h3.c @@ -279,11 +279,11 @@ int32_t rtapi_app_main(void) // allocate some space for the port data arrays (normal & inverted) - port_data = hal_malloc(GPIO_PIN_COUNT); - port_data_inv = hal_malloc(GPIO_PIN_COUNT); - port_param_inv = hal_malloc(GPIO_PIN_COUNT); - port_param_reset = hal_malloc(GPIO_PIN_COUNT); - port_reset_time = hal_malloc(1); + port_data = hal_malloc(GPIO_PIN_COUNT * sizeof(hal_bit_t *)); + port_data_inv = hal_malloc(GPIO_PIN_COUNT * sizeof(hal_bit_t *)); + port_param_inv = hal_malloc(GPIO_PIN_COUNT * sizeof(hal_bit_t)); + port_param_reset = hal_malloc(GPIO_PIN_COUNT * sizeof(hal_bit_t)); + port_reset_time = hal_malloc(sizeof(hal_u32_t)); if ( port_data == 0 || port_data_inv == 0 || port_param_inv == 0 || port_param_reset == 0 || port_reset_time == 0 ) From eb1d01ebe94f4131da662b9850b696ca054d97f1 Mon Sep 17 00:00:00 2001 From: Sergey Alirzaev Date: Wed, 27 Dec 2017 20:08:26 +0300 Subject: [PATCH 208/516] hal_gpio_h3_demo: enable fp in the slow thread as required by stepgen --- src/hal/drivers/hal_gpio_h3_demo.hal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hal/drivers/hal_gpio_h3_demo.hal b/src/hal/drivers/hal_gpio_h3_demo.hal index 9aa4a98480..909e9f82ef 100644 --- a/src/hal/drivers/hal_gpio_h3_demo.hal +++ b/src/hal/drivers/hal_gpio_h3_demo.hal @@ -2,7 +2,7 @@ loadrt hal_gpio_h3 output_pins=3,5,7,8 newthread fast 100000 -newthread slow 1000000 +newthread slow 1000000 fp loadrt stepgen step_type=5 ctrl_type=v From 012ba1cce1b0162674c284d191a73401d2c677ce Mon Sep 17 00:00:00 2001 From: Mikhail Vydrenko Date: Fri, 29 Dec 2017 00:12:55 +0600 Subject: [PATCH 209/516] Added new platform, named "H3 SoC" --- src/Makefile | 9 +++++++ src/configure.ac | 51 +++++++++++++++++++++++++++++++++-- src/hal/drivers/hal_gpio_h3.c | 7 +++++ 3 files changed, 65 insertions(+), 2 deletions(-) diff --git a/src/Makefile b/src/Makefile index 17c967e302..c2553e4112 100755 --- a/src/Makefile +++ b/src/Makefile @@ -1406,6 +1406,11 @@ obj-m += hal_arm335xQEP.o hal_arm335xQEP-objs := hal/drivers/hal_arm335xQEP.o $(MATHSTUB) endif +ifdef TARGET_PLATFORM_H3 +obj-$(CONFIG_HAL_GPIO) += hal_gpio_h3.o +hal_gpio-objs := hal/drivers/hal_gpio_h3.o +endif + ifdef TARGET_PLATFORM_CHIP obj-$(CONFIG_HAL_GPIO) += hal_chip_gpio.o hal_chip_gpio-objs := hal/drivers/hal_chip_gpio.o hal/drivers/chip/mmap_gpio.o @@ -1849,6 +1854,10 @@ $(RTLIBDIR)/hal_arm335xQEP$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_arm335xQEP endif endif +ifdef TARGET_PLATFORM_H3 +$(RTLIBDIR)/hal_gpio_h3$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_gpio-objs)) +endif + ifdef TARGET_PLATFORM_CHIP $(RTLIBDIR)/hal_chip_gpio$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_chip_gpio-objs)) endif diff --git a/src/configure.ac b/src/configure.ac index 89308b1a05..664369c1d3 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -480,11 +480,12 @@ KSOURCE_LOCATION_HINTS=$(echo \ # TARGET_PLATFORM_PC # TARGET_PLATFORM_SOCFPGA # TARGET_PLATFORM_BEAGLEBONE +# TARGET_PLATFORM_H3 # TARGET_PLATFORM_CHIP # TARGET_PLATFORM_RASPBERRY # TARGET_PLATFORM_ZEDBOARD # -# Platforms. set by --with-platform-{pc,beaglebone,chip,socfpga,raspberry,zedboard} +# Platforms. set by --with-platform-{pc,beaglebone,h3,chip,socfpga,raspberry,zedboard} # see Section 2.3 to enable other platforms, and 2.7 to AC_DEFINE it # xenomai equivalent of pkg-config @@ -498,7 +499,7 @@ XENO_CONFIG= # Configure several basic features: # # - some etc/linuxcnc/machinekit.ini values # # - the MKUUID instance UUID # -# - Platform (PC, Raspberry Pi, CHIP, BeagleBone,SocFpga, Zedboard) # +# - Platform (PC, Raspberry Pi, CHIP, BeagleBone, H3 SoC, SocFpga, Zedboard) # # - Common shared memory driver # # - Parport I/O mode (portable or inb/outb) # # - emcweb UI # @@ -618,6 +619,35 @@ AC_ARG_WITH(platform-beaglebone, esac ]) +AC_ARG_WITH(platform-h3, + [AS_HELP_STRING( + [--with-platform-h3], + [Build for H3 SoC platform (default for ARM arch)])], + [ + case $with_platform_h3 in + (y*) + TARGET_PLATFORM_H3=true + platform_specified=true + platform_h3_reason="$cmdl_enab_msg" + ;; + (*) + TARGET_PLATFORM_H3=false + platform_h3_reason="$cmdl_disab_msg" + ;; + esac + ], + [ + case $host_cpu in + (arm*) + TARGET_PLATFORM_H3=unk + ;; + (*) + TARGET_PLATFORM_H3=false + platform_h3_reason="$arch_disab_msg" + ;; + esac + ]) + AC_ARG_WITH(platform-chip, [AS_HELP_STRING( [--with-platform-chip], @@ -722,6 +752,10 @@ if $platform_specified; then TARGET_PLATFORM_BEAGLEBONE=false platform_beaglebone_reason="$cmdl_notspec_msg" fi + if test $TARGET_PLATFORM_H3 = unk; then + TARGET_PLATFORM_H3=false + platform_h3_reason="$cmdl_notspec_msg" + fi if test $TARGET_PLATFORM_CHIP = unk; then TARGET_PLATFORM_CHIP=false platform_chip_reason="$cmdl_notspec_msg" @@ -750,6 +784,10 @@ else TARGET_PLATFORM_BEAGLEBONE=true platform_beaglebone_reason="$arch_enab_msg" fi + if test $TARGET_PLATFORM_H3 = unk; then + TARGET_PLATFORM_H3=true + platform_h3_reason="$arch_enab_msg" + fi if test $TARGET_PLATFORM_CHIP = unk; then TARGET_PLATFORM_CHIP=true platform_chip_reason="$arch_enab_msg" @@ -777,6 +815,9 @@ AC_MSG_RESULT([$platform_pc_reason]) AC_MSG_CHECKING(platform-beaglebone) AC_MSG_RESULT([$platform_beaglebone_reason]) +AC_MSG_CHECKING(platform-h3) +AC_MSG_RESULT([$platform_h3_reason]) + AC_MSG_CHECKING(platform-chip) AC_MSG_RESULT([$platform_chip_reason]) @@ -1847,6 +1888,12 @@ if $TARGET_PLATFORM_BEAGLEBONE; then fi AC_SUBST(TARGET_PLATFORM_BEAGLEBONE,$target_platform_beaglebone_val) +if $TARGET_PLATFORM_H3; then + AC_DEFINE(TARGET_PLATFORM_H3, [], [build for H3 SoC platform]) + target_platform_h3_val=yes +fi +AC_SUBST(TARGET_PLATFORM_H3,$target_platform_h3_val) + if $TARGET_PLATFORM_CHIP; then AC_DEFINE(TARGET_PLATFORM_CHIP, [], [build for Chip platform]) target_platform_chip_val=yes diff --git a/src/hal/drivers/hal_gpio_h3.c b/src/hal/drivers/hal_gpio_h3.c index 025105ddfa..58bf1a62a6 100644 --- a/src/hal/drivers/hal_gpio_h3.c +++ b/src/hal/drivers/hal_gpio_h3.c @@ -16,6 +16,13 @@ +#if !defined(TARGET_PLATFORM_H3) +#error "This driver is for the H3 SoC platform only" +#endif + + + + MODULE_AUTHOR("Mikhail Vydrenko"); MODULE_DESCRIPTION("Driver for the Orange Pi (H3 SoC) GPIO pins"); MODULE_LICENSE("GPL"); From fa9372ded13019ff2e709fcee08e5dfdec7df6ed Mon Sep 17 00:00:00 2001 From: Mikhail Vydrenko Date: Sat, 30 Dec 2017 01:27:15 +0600 Subject: [PATCH 210/516] Fixed a couple of typos --- src/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Makefile b/src/Makefile index c2553e4112..75ed1ce00a 100755 --- a/src/Makefile +++ b/src/Makefile @@ -1408,7 +1408,7 @@ endif ifdef TARGET_PLATFORM_H3 obj-$(CONFIG_HAL_GPIO) += hal_gpio_h3.o -hal_gpio-objs := hal/drivers/hal_gpio_h3.o +hal_gpio_h3-objs := hal/drivers/hal_gpio_h3.o endif ifdef TARGET_PLATFORM_CHIP @@ -1855,7 +1855,7 @@ endif endif ifdef TARGET_PLATFORM_H3 -$(RTLIBDIR)/hal_gpio_h3$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_gpio-objs)) +$(RTLIBDIR)/hal_gpio_h3$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_gpio_h3-objs)) endif ifdef TARGET_PLATFORM_CHIP From 6a07d5c4840c32ca5dd94eebb3607d8ed228b054 Mon Sep 17 00:00:00 2001 From: Mikhail Vydrenko Date: Sat, 30 Dec 2017 01:42:51 +0600 Subject: [PATCH 211/516] 1st try to fix building of a module --- src/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Makefile b/src/Makefile index 75ed1ce00a..3e65d09115 100755 --- a/src/Makefile +++ b/src/Makefile @@ -1855,6 +1855,7 @@ endif endif ifdef TARGET_PLATFORM_H3 +$(RTLIBDIR)/hal_gpio$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_gpio-objs)) $(RTLIBDIR)/hal_gpio_h3$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_gpio_h3-objs)) endif From aa5bfb03c97aebfa5f786505ffd41e7656dffdfb Mon Sep 17 00:00:00 2001 From: ArcEye Date: Sat, 30 Dec 2017 13:55:35 +0000 Subject: [PATCH 212/516] Add specific TARGET_PLATFORM_H3 var Required to get configure value into Makefile via the AC_SUBST() mechanism --- src/Makefile.inc.in | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Makefile.inc.in b/src/Makefile.inc.in index 9ddd85076d..cc751161d0 100644 --- a/src/Makefile.inc.in +++ b/src/Makefile.inc.in @@ -197,6 +197,7 @@ TARGET_PLATFORM_BEAGLEBONE = @TARGET_PLATFORM_BEAGLEBONE@ TARGET_PLATFORM_CHIP = @TARGET_PLATFORM_CHIP@ TARGET_PLATFORM_RASPBERRY = @TARGET_PLATFORM_RASPBERRY@ TARGET_PLATFORM_ZEDBOARD = @TARGET_PLATFORM_ZEDBOARD@ +TARGET_PLATFORM_H3 = @TARGET_PLATFORM_H3@ HARDY_AMD64_WORKAROUND=@HARDY_AMD64_WORKAROUND@ PRECISE_MULTILIB_BUG=@PRECISE_MULTILIB_BUG@ From e0f51e5a3af6b0b9a5aa08710075469888a7e273 Mon Sep 17 00:00:00 2001 From: ArcEye Date: Sat, 30 Dec 2017 14:03:01 +0000 Subject: [PATCH 213/516] Remove duplication of hal_gpio build Might have resulted in the `hal_gpio` module being built from the `hal_gpio_h3` object file, depending upon the execution order and whether the `--with-platform-xxx` switches were used --- src/Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Makefile b/src/Makefile index 3e65d09115..75ed1ce00a 100755 --- a/src/Makefile +++ b/src/Makefile @@ -1855,7 +1855,6 @@ endif endif ifdef TARGET_PLATFORM_H3 -$(RTLIBDIR)/hal_gpio$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_gpio-objs)) $(RTLIBDIR)/hal_gpio_h3$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_gpio_h3-objs)) endif From 57d0cd85b302caf8028f3c618fcc3d8adc3bf0b0 Mon Sep 17 00:00:00 2001 From: ArcEye Date: Wed, 3 Jan 2018 16:21:05 +0000 Subject: [PATCH 214/516] Set slow (servo) thread to floating point This changed back to being a requirement with the multicore merge. Will default to no floating point. --- src/hal/drivers/hal_gpio_demo.hal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hal/drivers/hal_gpio_demo.hal b/src/hal/drivers/hal_gpio_demo.hal index 217c528ac6..2b516f279f 100644 --- a/src/hal/drivers/hal_gpio_demo.hal +++ b/src/hal/drivers/hal_gpio_demo.hal @@ -2,7 +2,7 @@ loadrt hal_gpio newthread fast 100000 -newthread slow 1000000 +newthread slow 1000000 fp loadrt stepgen step_type=5 ctrl_type=v From 7df587cc8f24bbf78c49633f96f8daf4cf27d77d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Thu, 4 Jan 2018 14:44:25 +0100 Subject: [PATCH 215/516] hal/i_components: add dummy_stepgen --- src/hal/i_components/dummy_stepgen.icomp | 43 ++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/hal/i_components/dummy_stepgen.icomp diff --git a/src/hal/i_components/dummy_stepgen.icomp b/src/hal/i_components/dummy_stepgen.icomp new file mode 100644 index 0000000000..118c5f45d8 --- /dev/null +++ b/src/hal/i_components/dummy_stepgen.icomp @@ -0,0 +1,43 @@ +component dummy_stepgen """ + A dummy stepgen compatible component. Just feeds back the position-cmd"""; + +pin in s32 rawcounts; +pin out s32 counts; +pin in float position-scale; +pin in float position-cmd; +pin in float velocity-cmd; +pin in bit enable; +pin out float position-fb; +pin in float frequency; +pin io float maxvel; +pin io float maxaccel; +pin io u32 steplen; +pin io u32 stepspace; +pin io u32 dirsetup; +pin io u32 dirhold; +pin io u32 dirdelay; +pin out bit step; +pin out bit dir; +pin out bit up; +pin out bit down; + +variable hal_float_t current_position = 0.0; + +function read; +function write; + +license "GPL"; +author "Alexander Roessler"; +;; + +FUNCTION(read) +{ + current_position = position_cmd; + return 0; +} + +FUNCTION(write) +{ + position_fb = current_position; + return 0; +} From 13d39c8b7138a81b3c870588e6cae91e2d7b42f6 Mon Sep 17 00:00:00 2001 From: Mick Date: Mon, 22 Jan 2018 15:51:27 +0000 Subject: [PATCH 216/516] Create README from original notes in https://github.com/machinekit/machinekit/pull/1338 Contain a lot of information and links that otherwise will be lost Suggested this at the time, but it has not been forthcoming. Signed-off-by: Mick --- src/hal/drivers/hal_gpio_h3-README | 32 ++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/hal/drivers/hal_gpio_h3-README diff --git a/src/hal/drivers/hal_gpio_h3-README b/src/hal/drivers/hal_gpio_h3-README new file mode 100644 index 0000000000..4dfa47a958 --- /dev/null +++ b/src/hal/drivers/hal_gpio_h3-README @@ -0,0 +1,32 @@ +(From the original PR text by @MX-Master) + +I have some files for those people who wants to make a quick test of GPIO driver with Orange Pi One board. + +I made two MicroSD images (8Gb, 16Gb) with a couple of HOWTO files. MicroSD image - it's Debian Jessie (built by Armbian) with real-time kernel (4.13, RT-PREEMPT), +with Machinekit and some tweaks installed: + +8GB image +http://topcnc.ru/opi1_cnc/opi1_machinekit_8G.rar + +16GB image +http://topcnc.ru/opi1_cnc/opi1_machinekit_16G.rar + +HOWTOs: + +Hardware.pdf +http://topcnc.ru/opi1_cnc/1%20-%20Hardware.pdf + +Copy SD image to SD card.pdf +http://topcnc.ru/opi1_cnc/2%20-%20copy%20SD%20image%20to%20SD%20card.pdf + +Control.pdf +http://topcnc.ru/opi1_cnc/3%20-%20Control.pdf + +Remote Control.pdf +http://topcnc.ru/opi1_cnc/4%20-%20Remote%20Control.pdf + +Machinekit, LinuxCNC and GPIO.pdf +http://topcnc.ru/opi1_cnc/5%20-%20Machinekit,%20LinuxCNC%20and%20GPIO.pdf + +Wiring.pdf +http://topcnc.ru/opi1_cnc/6%20-%20Wiring.pdf \ No newline at end of file From e750641dbabd394b821609a093077e32bb201c23 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Tue, 19 Dec 2017 21:48:02 -0600 Subject: [PATCH 217/516] posemath: Adapt upstream changes - import from linuxcnc #5724d8f59. This is based on inspection of rcslib-2014.04.29 but is not a direct copy as the API was changed from taking pointers to taking copies when it comes to inputs that are not changed. One of the atan2 calls is also changed. Closes #1350 Author: Jepler@unpythonic.net Signed-off-by: Mick --- src/libnml/posemath/_posemath.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/libnml/posemath/_posemath.c b/src/libnml/posemath/_posemath.c index abac764df7..2ce03dfce2 100644 --- a/src/libnml/posemath/_posemath.c +++ b/src/libnml/posemath/_posemath.c @@ -523,14 +523,14 @@ int pmMatZyxConvert(PmRotationMatrix const * const m, PmEulerZyx * const zyx) { zyx->y = rtapi_atan2(-m->x.z, pmSqrt(pmSq(m->x.x) + pmSq(m->x.y))); - if (rtapi_fabs(zyx->y - (2 * PM_PI)) < ZYX_Y_FUZZ) { + if (fabs(zyx->y - PM_PI_2) < ZYX_Y_FUZZ) { zyx->z = 0.0; - zyx->y = (2 * PM_PI); /* force it */ - zyx->x = rtapi_atan2(m->y.x, m->y.y); - } else if (rtapi_fabs(zyx->y + (2 * PM_PI)) < ZYX_Y_FUZZ) { + zyx->y = PM_PI_2; /* force it */ + zyx->x = atan2(m->y.x, m->y.y); + } else if (fabs(zyx->y + PM_PI_2) < ZYX_Y_FUZZ) { zyx->z = 0.0; - zyx->y = -(2 * PM_PI); /* force it */ - zyx->x = -rtapi_atan2(m->y.z, m->y.y); + zyx->y = -PM_PI_2; /* force it */ + zyx->x = -atan2(m->y.z, m->y.y); } else { zyx->z = rtapi_atan2(m->x.y, m->x.x); zyx->x = rtapi_atan2(m->y.z, m->z.z); @@ -543,13 +543,13 @@ int pmMatRpyConvert(PmRotationMatrix const * const m, PmRpy * const rpy) { rpy->p = rtapi_atan2(-m->x.z, pmSqrt(pmSq(m->x.x) + pmSq(m->x.y))); - if (rtapi_fabs(rpy->p - (2 * PM_PI)) < RPY_P_FUZZ) { - rpy->r = rtapi_atan2(m->y.x, m->y.y); - rpy->p = (2 * PM_PI); /* force it */ + if (fabs(rpy->p - PM_PI_2) < RPY_P_FUZZ) { + rpy->r = atan2(m->y.x, m->y.y); + rpy->p = PM_PI_2; /* force it */ rpy->y = 0.0; - } else if (rtapi_fabs(rpy->p + (2 * PM_PI)) < RPY_P_FUZZ) { - rpy->r = -rtapi_atan2(m->y.z, m->y.y); - rpy->p = -(2 * PM_PI); /* force it */ + } else if (fabs(rpy->p + PM_PI_2) < RPY_P_FUZZ) { + rpy->r = -atan2(m->y.x, m->y.y); + rpy->p = -PM_PI_2; /* force it */ rpy->y = 0.0; } else { rpy->r = rtapi_atan2(m->y.z, m->z.z); From a229ec9dd8d054977659cc07f55f6d876c03ae20 Mon Sep 17 00:00:00 2001 From: Mikhail Vydrenko Date: Sun, 18 Feb 2018 11:44:21 +0600 Subject: [PATCH 218/516] [H3 port/pin names support] 1st untested code --- src/hal/drivers/hal_gpio_h3.c | 500 +++++++++++++++++++++++----------- 1 file changed, 340 insertions(+), 160 deletions(-) diff --git a/src/hal/drivers/hal_gpio_h3.c b/src/hal/drivers/hal_gpio_h3.c index 58bf1a62a6..65827bb808 100644 --- a/src/hal/drivers/hal_gpio_h3.c +++ b/src/hal/drivers/hal_gpio_h3.c @@ -33,23 +33,14 @@ MODULE_LICENSE("GPL"); #define PHY_MEM_BLOCK_SIZE 4096 #define GPIO_PHY_MEM_OFFSET1 0x01C20800 // GPIO_A .. GPIO_G #define GPIO_PHY_MEM_OFFSET2 0x01F02C00 // GPIO_L -#define GPIO_PIN_COUNT 43 -#define USE_GPIO_PORT_L 0 // 0 = don't use port L +#define GPIO_PORT_COUNT 8 enum { - GPIO_A, GPIO_B, GPIO_C, GPIO_D, + GPIO_A, GPIO_B, GPIO_C, GPIO_D, // GPIO_B actually unused GPIO_E, GPIO_F, GPIO_G, GPIO_L }; -#if USE_GPIO_PORT_L - #define GPIO_PORT_COUNT 8 - uint32_t * vrt_block_addr[2]; -#else - #define GPIO_PORT_COUNT 7 - uint32_t * vrt_block_addr[1]; -#endif - struct _GPIO_PORT_REG_t { uint32_t config[4]; @@ -58,10 +49,24 @@ struct _GPIO_PORT_REG_t uint32_t pull[2]; }; -struct _GPIO_LIST_t +struct _GPIO_PIN_t { int8_t port; int8_t pin; + int8_t OPI_pin; +}; + +struct _OPI_PIN_t +{ + int8_t H3_pin; + int8_t valid; +}; + +struct _GPIO_PORT_t +{ + int8_t name; + int8_t pins_count; + int8_t id_offset; }; @@ -69,70 +74,93 @@ struct _GPIO_LIST_t static const uint8_t * comp_name = "hal_gpio_h3"; -static struct _GPIO_PORT_REG_t * _GPIO_port_reg[GPIO_PORT_COUNT] = {0}; +static struct _GPIO_PORT_REG_t * _GPIO[GPIO_PORT_COUNT] = {0}; -static const struct _GPIO_LIST_t _GPIO_LIST[GPIO_PIN_COUNT] = +static const struct _GPIO_PIN_t _H3_pins[] = { - // dummy - {-4, 0}, - - // general pins 1-40 1 2 - {-2, 0}, {-3, 0}, // +3.3V +5V - {GPIO_A, 12}, {-3, 0}, // PA12 +5V - {GPIO_A, 11}, {-1, 0}, // PA11 GND - {GPIO_A, 6}, {GPIO_A, 13}, // PA6 PA13 - {-1, 0}, {GPIO_A, 14}, // GND PA14 - {GPIO_A, 1}, {GPIO_D, 14}, // PA1 PD14 - {GPIO_A, 0}, {-1, 0}, // PA0 GND - {GPIO_A, 3}, {GPIO_C, 4}, // PA3 PC4 - {-2, 0}, {GPIO_C, 7}, // +3.3V PC7 - {GPIO_C, 0}, {-1, 0}, // PC0 GND - {GPIO_C, 1}, {GPIO_A, 2}, // PC1 PA2 - {GPIO_C, 2}, {GPIO_C, 3}, // PC2 PC3 - {-1, 0}, {GPIO_A, 21}, // GND PA21 - {GPIO_A, 19}, {GPIO_A, 18}, // PA19 PA18 - {GPIO_A, 7}, {-1, 0}, // PA7 GND - {GPIO_A, 8}, {GPIO_G, 8}, // PA8 PG8 - {GPIO_A, 9}, {-1, 0}, // PA9 GND - {GPIO_A, 10}, {GPIO_G, 9}, // PA10 PG9 - {GPIO_A, 20}, {GPIO_G, 6}, // PA20 PG6 - {-1, 0}, {GPIO_G, 7}, // GND PG7 - - // pins 41,42 are serial console TX,RX pins - {GPIO_A, 4}, {GPIO_A, 5} // PA4 PA5 + // 0 - 21 + {GPIO_A, 0,13},{GPIO_A, 1,11},{GPIO_A, 2,22},{GPIO_A, 3,15},{GPIO_A, 4, 0}, + {GPIO_A, 5, 0},{GPIO_A, 6, 7},{GPIO_A, 7,29},{GPIO_A, 8,31},{GPIO_A, 9,33}, + {GPIO_A,10,35},{GPIO_A,11, 5},{GPIO_A,12, 3},{GPIO_A,13, 8},{GPIO_A,14,10}, + {GPIO_A,15, 0},{GPIO_A,16, 0},{GPIO_A,17, 0},{GPIO_A,18,28},{GPIO_A,19,27}, + {GPIO_A,20,37},{GPIO_A,21,26}, + // 22 - 40 + {GPIO_C, 0,19},{GPIO_C, 1,21},{GPIO_C, 2,23},{GPIO_C, 3,24},{GPIO_C, 4,16}, + {GPIO_C, 5, 0},{GPIO_C, 6, 0},{GPIO_C, 7,18},{GPIO_C, 8, 0},{GPIO_C, 9, 0}, + {GPIO_C,10, 0},{GPIO_C,11, 0},{GPIO_C,12, 0},{GPIO_C,13, 0},{GPIO_C,14, 0}, + {GPIO_C,15, 0},{GPIO_C,16, 0},{GPIO_C,17, 0},{GPIO_C,18, 0}, + // 41 - 58 + {GPIO_D, 0, 0},{GPIO_D, 1, 0},{GPIO_D, 2, 0},{GPIO_D, 3, 0},{GPIO_D, 4, 0}, + {GPIO_D, 5, 0},{GPIO_D, 6, 0},{GPIO_D, 7, 0},{GPIO_D, 8, 0},{GPIO_D, 9, 0}, + {GPIO_D,10, 0},{GPIO_D,11, 0},{GPIO_D,12, 0},{GPIO_D,13, 0},{GPIO_D,14,12}, + {GPIO_D,15, 0},{GPIO_D,16, 0},{GPIO_D,17, 0}, + // 59 - 74 + {GPIO_E, 0, 0},{GPIO_E, 1, 0},{GPIO_E, 2, 0},{GPIO_E, 3, 0},{GPIO_E, 4, 0}, + {GPIO_E, 5, 0},{GPIO_E, 6, 0},{GPIO_E, 7, 0},{GPIO_E, 8, 0},{GPIO_E, 9, 0}, + {GPIO_E,10, 0},{GPIO_E,11, 0},{GPIO_E,12, 0},{GPIO_E,13, 0},{GPIO_E,14, 0}, + {GPIO_E,15, 0}, + // 75 - 81 + {GPIO_F, 0, 0},{GPIO_F, 1, 0},{GPIO_F, 2, 0},{GPIO_F, 3, 0},{GPIO_F, 4, 0}, + {GPIO_F, 5, 0},{GPIO_F, 6, 0}, + // 82 - 95 + {GPIO_G, 0, 0},{GPIO_G, 1, 0},{GPIO_G, 2, 0},{GPIO_G, 3, 0},{GPIO_G, 4, 0}, + {GPIO_G, 5, 0},{GPIO_G, 6,38},{GPIO_G, 7,40},{GPIO_G, 8,32},{GPIO_G, 9,36}, + {GPIO_G,10, 0},{GPIO_G,11, 0},{GPIO_G,12, 0},{GPIO_G,13, 0}, + // 96 - 107 + {GPIO_L, 0, 0},{GPIO_L, 1, 0},{GPIO_L, 2, 0},{GPIO_L, 3, 0},{GPIO_L, 4, 0}, + {GPIO_L, 5, 0},{GPIO_L, 6, 0},{GPIO_L, 7, 0},{GPIO_L, 8, 0},{GPIO_L, 9, 0}, + {GPIO_L,10, 0},{GPIO_L,11, 0} }; -static const uint8_t _available_pins[GPIO_PIN_COUNT] = +#define H3_PINS_COUNT (sizeof _H3_pins / sizeof _H3_pins[0]) + +static const struct _GPIO_PORT_t _GPIO_port_info[] = +{ + {'A',22, 0}, + {'B', 0,22}, // actually unused + {'C',19,22}, + {'D',18,41}, + {'E',16,59}, + {'F', 7,75}, + {'G',14,82}, + {'L',12,96} +}; + +static const struct _OPI_PIN_t _OPI_pins[] = { // dummy - 0, + {-4,0}, // general pins 1-40 - 0, 0, - 1, 0, - 1, 0, - 1, 1, - 0, 1, - 1, 1, - 1, 0, - 1, 1, - 0, 1, - 1, 0, - 1, 1, - 1, 1, - 0, 1, - 1, 1, - 1, 0, - 1, 1, - 1, 0, - 1, 1, - 1, 1, - 0, 1, - - // pins 41,42 are serial console TX,RX pins - 1, 1 + {-2,0}, {-3,0}, // +3.3V +5V + {12,1}, {-3,0}, // PA12 +5V + {11,1}, {-1,0}, // PA11 GND + {6,1}, {13,1}, // PA6 PA13 + {-1,0}, {14,1}, // GND PA14 + {1,1}, {55,1}, // PA1 PD14 + {0,1}, {-1,0}, // PA0 GND + {3,1}, {26,1}, // PA3 PC4 + {-2,0}, {29,1}, // +3.3V PC7 + {22,1}, {-1,0}, // PC0 GND + {23,1}, {2,1}, // PC1 PA2 + {24,1}, {25,1}, // PC2 PC3 + {-1,0}, {21,1}, // GND PA21 + {19,1}, {18,1}, // PA19 PA18 + {7,1}, {-1,0}, // PA7 GND + {8,1}, {90,1}, // PA8 PG8 + {9,1}, {-1,0}, // PA9 GND + {10,1}, {91,1}, // PA10 PG9 + {20,1}, {88,1}, // PA20 PG6 + {-1,0}, {89,1}, // GND PG7 + + // pins 41/42 are serial console TX,RX pins + {4,1}, {5,1} // PA4 PA5 }; +#define OPI_PINS_COUNT (sizeof _OPI_pins / sizeof _OPI_pins[0]) + +static uint32_t *vrt_block_addr[2]; + static int32_t comp_id; // component ID hal_bit_t **port_data; // port data pins states @@ -143,12 +171,12 @@ hal_u32_t *port_reset_time; long long port_write_time = 0; -static uint8_t input_pins_list[GPIO_PIN_COUNT] = {0}; +static uint8_t input_pins_list[H3_PINS_COUNT] = {0}; static uint8_t input_pins_count = 0; static int8_t *input_pins; RTAPI_MP_STRING(input_pins, "input pins, comma separated"); -static uint8_t output_pins_list[GPIO_PIN_COUNT] = {0}; +static uint8_t output_pins_list[H3_PINS_COUNT] = {0}; static uint8_t output_pins_count = 0; static int8_t *output_pins; RTAPI_MP_STRING(output_pins, "output pins, comma separated"); @@ -168,16 +196,16 @@ static void read_port(void *arg, long period); static void config_pin_as_input(uint8_t n) { - _GPIO_port_reg[_GPIO_LIST[n].port]->config[_GPIO_LIST[n].pin / 8] &= - ~(0b1111 << (_GPIO_LIST[n].pin % 8 * 4)); + _GPIO[_H3_pins[n].port]->config[_H3_pins[n].pin / 8] &= + ~(0b1111 << (_H3_pins[n].pin % 8 * 4)); } static void config_pin_as_output(uint8_t n) { - _GPIO_port_reg[_GPIO_LIST[n].port]->config[_GPIO_LIST[n].pin / 8] &= - ~(0b1111 << (_GPIO_LIST[n].pin % 8 * 4)); - _GPIO_port_reg[_GPIO_LIST[n].port]->config[_GPIO_LIST[n].pin / 8] |= - (0b0001 << (_GPIO_LIST[n].pin % 8 * 4)); + _GPIO[_H3_pins[n].port]->config[_H3_pins[n].pin / 8] &= + ~(0b1111 << (_H3_pins[n].pin % 8 * 4)); + _GPIO[_H3_pins[n].port]->config[_H3_pins[n].pin / 8] |= + (0b0001 << (_H3_pins[n].pin % 8 * 4)); } @@ -203,7 +231,7 @@ int32_t rtapi_app_main(void) #endif - comp_id = hal_init("hal_gpio_h3"); + comp_id = hal_init(comp_name); if (comp_id < 0) { rtapi_print_msg(RTAPI_MSG_ERR, @@ -247,12 +275,11 @@ int32_t rtapi_app_main(void) // add correct address values to global GPIO array for ( n = GPIO_A; n <= GPIO_G; ++n ) { - _GPIO_port_reg[n] = + _GPIO[n] = (struct _GPIO_PORT_REG_t *) (vrt_block_addr[0] + n*(0x24/4)); } -#if USE_GPIO_PORT_L // calculate phy memory block start vrt_offset = GPIO_PHY_MEM_OFFSET2 % PHY_MEM_BLOCK_SIZE; phy_block_addr = GPIO_PHY_MEM_OFFSET2 - vrt_offset; @@ -278,18 +305,17 @@ int32_t rtapi_app_main(void) vrt_block_addr[1] += (vrt_offset/4); // add correct address values to global GPIO array - _GPIO_port_reg[GPIO_L] = (struct _GPIO_PORT_REG_t *) vrt_block_addr[1]; -#endif + _GPIO[GPIO_L] = (struct _GPIO_PORT_REG_t *) vrt_block_addr[1]; // no need to keep phy memory file open after mmap close(mem_fd); // allocate some space for the port data arrays (normal & inverted) - port_data = hal_malloc(GPIO_PIN_COUNT * sizeof(hal_bit_t *)); - port_data_inv = hal_malloc(GPIO_PIN_COUNT * sizeof(hal_bit_t *)); - port_param_inv = hal_malloc(GPIO_PIN_COUNT * sizeof(hal_bit_t)); - port_param_reset = hal_malloc(GPIO_PIN_COUNT * sizeof(hal_bit_t)); + port_data = hal_malloc(H3_PINS_COUNT * sizeof(hal_bit_t *)); + port_data_inv = hal_malloc(H3_PINS_COUNT * sizeof(hal_bit_t *)); + port_param_inv = hal_malloc(H3_PINS_COUNT * sizeof(hal_bit_t)); + port_param_reset = hal_malloc(H3_PINS_COUNT * sizeof(hal_bit_t)); port_reset_time = hal_malloc(sizeof(hal_u32_t)); if ( port_data == 0 || port_data_inv == 0 || port_param_inv == 0 || port_param_reset == 0 || @@ -301,144 +327,300 @@ int32_t rtapi_app_main(void) return -1; } + +#define INVALID_PIN_MSG_AND_RETURN \ + rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: invalid pin %s\n",\ + comp_name, token);\ + hal_exit(comp_id);\ + return -1; + +#define PIN_EXPORT_FAILED_MSG_AND_RETURN \ + rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: pin %s export failed\n",\ + comp_name, token);\ + hal_exit(comp_id);\ + return -1; + + // configure input pins if (input_pins != NULL) { data = input_pins; + // break input_pins string by comma while ((token = strtok(data, ",")) != NULL) { - pin = (uint8_t) strtol(token, NULL, 10); + // get token's size + size_t len = strlen(token); + + // ignore empty tokens + if ( len < 1 ) continue; - if ( pin < 0 || pin >= GPIO_PIN_COUNT || !_available_pins[pin] ) + // if we have the GPIO pin name + if ( *token[0] == 'P' && len >= 3 && len <= 4 ) { - rtapi_print_msg(RTAPI_MSG_ERR, - "%s: ERROR: invalid pin number %d\n", comp_name, pin); - hal_exit(comp_id); - return -1; + uint8_t pin_found = 0; + + // trying to find a valid port name + for ( int8_t p = GPIO_PORT_COUNT; p--; ) + { + // if valid port name found + if ( *token[1] == _GPIO_port_info[p].name ) + { + // trying to find a correct pin number + pin = (uint8_t) strtol(token[2], NULL, 10); + + // if a correct pin number wasn't found + if ( pin >= _GPIO_port_info[p].pins_count ) + { + INVALID_PIN_MSG_AND_RETURN; + } + + // correct pin number found + pin += _GPIO_port_info[p].id_offset; + pin_found = 1; + + // export H3 pin input function + retval = hal_pin_bit_newf(HAL_OUT, + &port_data[pin], comp_id, + "%s.pin-%s-in", comp_name, token); + if (retval < 0) + { + PIN_EXPORT_FAILED_MSG_AND_RETURN; + } + + // export H3 pin inverted input function + retval = hal_pin_bit_newf(HAL_OUT, + &port_data_inv[pin], comp_id, + "%s.pin-%s-in-not", comp_name, token); + if (retval < 0) + { + PIN_EXPORT_FAILED_MSG_AND_RETURN; + } + } + } + + // if valid port name wasn't found + if ( !pin_found ) + { + INVALID_PIN_MSG_AND_RETURN; + } } + // if we have the OPI pin number + else if ( *token[0] >= '0' && *token[0] <= '9' && len <= 2 ) + { + // trying to find a correct pin number + pin = (uint8_t) strtol(token, NULL, 10); - input_pins_list[input_pins_count] = pin; - ++input_pins_count; + // if a correct pin number wasn't found + if ( pin < 1 || pin >= OPI_PINS_COUNT || !_OPI_pins[pin].valid ) + { + INVALID_PIN_MSG_AND_RETURN; + } - // configure OrangePi pin as input - config_pin_as_input(pin); + // correct pin number found + pin = _OPI_pins[pin].H3_pin; - // normal pin function - retval = hal_pin_bit_newf(HAL_OUT, &port_data[pin], - comp_id, "%s.pin-%02d-in", comp_name, pin); - if (retval < 0) - { - rtapi_print_msg(RTAPI_MSG_ERR, - "%s: ERROR: input pin %d export failed\n", comp_name, pin); - hal_exit(comp_id); - return -1; - } + // export OPI pin input function + retval = hal_pin_bit_newf(HAL_OUT, &port_data[pin], comp_id, + "%s.pin-%02d-in", comp_name, _H3_pins[pin].OPI_pin); + if (retval < 0) + { + PIN_EXPORT_FAILED_MSG_AND_RETURN; + } - // inverted pin function - retval = hal_pin_bit_newf(HAL_OUT, &port_data_inv[pin], - comp_id, "%s.pin-%02d-in-not", comp_name, pin); - if (retval < 0) + // export OPI pin inverted input function + retval = hal_pin_bit_newf(HAL_OUT, &port_data_inv[pin], + comp_id, "%s.pin-%02d-in-not", comp_name, + _H3_pins[pin].OPI_pin); + if (retval < 0) + { + PIN_EXPORT_FAILED_MSG_AND_RETURN; + } + } + // we have unknown pin + else { - rtapi_print_msg(RTAPI_MSG_ERR, - "%s: ERROR: inverted input pin %d export failed\n", - comp_name, pin); - hal_exit(comp_id); - return -1; + INVALID_PIN_MSG_AND_RETURN; } + // add OPI pin id to the input pins list + input_pins_list[input_pins_count] = pin; + ++input_pins_count; + + // configure OrangePi pin as input + config_pin_as_input(pin); + data = NULL; // after the first call, subsequent calls to // strtok need to be on NULL } } + // configure output pins if (output_pins != NULL) { data = output_pins; + // break input_pins string by comma while ((token = strtok(data, ",")) != NULL) { - pin = (uint8_t) strtol(token, NULL, 10); + // get token's size + size_t len = strlen(token); - if ( pin < 0 || pin >= GPIO_PIN_COUNT || !_available_pins[pin] ) - { - rtapi_print_msg(RTAPI_MSG_ERR, - "%s: ERROR: invalid pin number %d\n", comp_name, pin); - hal_exit(comp_id); - return -1; - } + // ignore empty tokens + if ( len < 1 ) continue; - // check - if pin already exported as input - for ( n = input_pins_count; n--; ) + // if we have the GPIO pin name + if ( *token[0] == 'P' && len >= 3 && len <= 4 ) { - if ( input_pins_list[n] == pin ) + uint8_t pin_found = 0; + + // trying to find a valid port name + for ( int8_t p = GPIO_PORT_COUNT; p--; ) { - rtapi_print_msg(RTAPI_MSG_ERR, - "%s: ERROR: output pin %d exported before as input\n", - comp_name, pin); - break; + // if valid port name found + if ( *token[1] == _GPIO_port_info[p].name ) + { + // trying to find a correct pin number + pin = (uint8_t) strtol(token[2], NULL, 10); + + // if a correct pin number wasn't found + if ( pin >= _GPIO_port_info[p].pins_count ) + { + INVALID_PIN_MSG_AND_RETURN; + } + + // correct pin number found + pin += _GPIO_port_info[p].id_offset; + pin_found = 1; + + // export H3 pin output function + retval = hal_pin_bit_newf(HAL_IN, &port_data[pin], + comp_id, "%s.pin-%s-out", comp_name, token); + if (retval < 0) + { + PIN_EXPORT_FAILED_MSG_AND_RETURN; + } + + // inverted H3 pin parameter + retval = hal_param_bit_newf(HAL_RW, + &port_param_inv[pin], comp_id, + "%s.pin-%s-out-invert", comp_name, token); + if (retval < 0) + { + rtapi_print_msg(RTAPI_MSG_ERR, + "%s: ERROR: output pin %s " + "invert param export failed\n", + comp_name, token); + hal_exit(comp_id); + return -1; + } + + // reset H3 pin parameter + retval = hal_param_bit_newf(HAL_RW, + &port_param_reset[pin], comp_id, + "%s.pin-%s-out-reset", comp_name, token); + if (retval < 0) + { + rtapi_print_msg(RTAPI_MSG_ERR, + "%s: ERROR: output pin %s " + "reset param export failed\n", + comp_name, token); + hal_exit(comp_id); + return -1; + } + } } - } - // this pin is free and can be exported as output - if ( n < 0 ) + // if valid port name wasn't found + if ( !pin_found ) + { + INVALID_PIN_MSG_AND_RETURN; + } + } + // if we have the OPI pin number + else if ( *token[0] >= '0' && *token[0] <= '9' && len <= 2 ) { - output_pins_list[output_pins_count] = pin; - ++output_pins_count; + // trying to find a correct pin number + pin = (uint8_t) strtol(token, NULL, 10); - // configure OrangePi pin as output - config_pin_as_output(pin); + // if a correct pin number wasn't found + if ( pin < 1 || pin >= OPI_PINS_COUNT || + !_OPI_pins[pin].valid ) + { + INVALID_PIN_MSG_AND_RETURN; + } + + // correct pin number found + pin = _OPI_pins[pin].H3_pin; - // normal pin function + // export OPI pin output function retval = hal_pin_bit_newf(HAL_IN, &port_data[pin], - comp_id, "%s.pin-%02d-out", comp_name, pin); + comp_id, "%s.pin-%02d-out", comp_name, + _H3_pins[pin].OPI_pin); if (retval < 0) { - rtapi_print_msg(RTAPI_MSG_ERR, - "%s: ERROR: output pin %d export failed\n", - comp_name, pin); - hal_exit(comp_id); - return -1; + PIN_EXPORT_FAILED_MSG_AND_RETURN; } - // inverted pin parameter + // inverted OPI pin parameter retval = hal_param_bit_newf(HAL_RW, &port_param_inv[pin], - comp_id, "%s.pin-%02d-out-invert", comp_name, pin); + comp_id, "%s.pin-%02d-out-invert", comp_name, + _H3_pins[pin].OPI_pin); if (retval < 0) { rtapi_print_msg(RTAPI_MSG_ERR, - "%s: ERROR: output pin %d invert param export failed\n", - comp_name, pin); + "%s: ERROR: output pin %s " + "invert param export failed\n", + comp_name, token); hal_exit(comp_id); return -1; } - // reset pin parameter - retval = hal_param_bit_newf(HAL_RW, &port_param_reset[pin], - comp_id, "%s.pin-%02d-out-reset", comp_name, pin); + // reset OPI pin parameter + retval = hal_param_bit_newf(HAL_RW, + &port_param_reset[pin], comp_id, + "%s.pin-%02d-out-reset", comp_name, _H3_pins[pin].OPI_pin); if (retval < 0) { rtapi_print_msg(RTAPI_MSG_ERR, - "%s: ERROR: output pin %d reset param export failed\n", - comp_name, pin); + "%s: ERROR: output pin %s " + "reset param export failed\n", + comp_name, token); hal_exit(comp_id); return -1; } } + // we have unknown pin + else + { + INVALID_PIN_MSG_AND_RETURN; + } + + // add pin id to the output pins list + output_pins_list[output_pins_count] = pin; + ++output_pins_count; + + // configure pin as output + config_pin_as_output(pin); data = NULL; // after the first call, subsequent calls to // strtok need to be on NULL } } + +#undef INVALID_PIN_MSG_AND_RETURN +#undef PIN_EXPORT_FAILED_MSG_AND_RETURN + + // export port reset time parameter retval = hal_param_u32_newf(HAL_RW, port_reset_time, comp_id, "%s.reset-time", comp_name); if (retval < 0) { rtapi_print_msg(RTAPI_MSG_ERR, - "%s: ERROR: reset-time param export failed\n", comp_name, pin); + "%s: ERROR: reset-time param export failed\n", comp_name); hal_exit(comp_id); return -1; } @@ -488,9 +670,7 @@ void rtapi_app_exit(void) { // unlink phy space from our user space munmap(vrt_block_addr[0], PHY_MEM_BLOCK_SIZE); -#if USE_GPIO_PORT_L munmap(vrt_block_addr[1], PHY_MEM_BLOCK_SIZE); -#endif hal_exit(comp_id); } @@ -498,10 +678,10 @@ void rtapi_app_exit(void) -#define pd_pin output_pins_list[n] // port_data pin ID -#define g_pin _GPIO_LIST[pd_pin].pin // GPIO pin ID -#define g_prt _GPIO_LIST[pd_pin].port // GPIO port ID -#define g_prt_data _GPIO_port_reg[g_prt]->data // GPIO port data value +#define pd_pin output_pins_list[n] // port_data pin ID +#define g_pin _H3_pins[pd_pin].pin // GPIO pin ID +#define g_prt _H3_pins[pd_pin].port // GPIO port ID +#define g_prt_data _GPIO[g_prt]->data // GPIO port data value static void write_port(void *arg, long period) { @@ -572,9 +752,9 @@ static void reset_port(void *arg, long period) #define pd_pin input_pins_list[n] -#define g_pin _GPIO_LIST[pd_pin].pin -#define g_prt _GPIO_LIST[pd_pin].port -#define g_prt_data _GPIO_port_reg[g_prt]->data +#define g_pin _H3_pins[pd_pin].pin +#define g_prt _H3_pins[pd_pin].port +#define g_prt_data _GPIO[g_prt]->data static void read_port(void *arg, long period) { From d55f298775f9e47503ed85f6e5e933b8a2ec8119 Mon Sep 17 00:00:00 2001 From: Mikhail Vydrenko Date: Sun, 18 Feb 2018 13:17:42 +0600 Subject: [PATCH 219/516] [H3 port/pin names support] fixed build errors --- src/hal/drivers/hal_gpio_h3.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/hal/drivers/hal_gpio_h3.c b/src/hal/drivers/hal_gpio_h3.c index 65827bb808..1d1ae58c00 100644 --- a/src/hal/drivers/hal_gpio_h3.c +++ b/src/hal/drivers/hal_gpio_h3.c @@ -216,7 +216,7 @@ int32_t rtapi_app_main(void) int32_t mem_fd; uint32_t vrt_offset = 0; off_t phy_block_addr = 0; - int32_t n, retval; + int32_t n, retval, p; int8_t *data, *token; uint8_t pin; int8_t name[HAL_NAME_LEN + 1]; @@ -356,15 +356,15 @@ int32_t rtapi_app_main(void) if ( len < 1 ) continue; // if we have the GPIO pin name - if ( *token[0] == 'P' && len >= 3 && len <= 4 ) + if ( token[0] == 'P' && len >= 3 && len <= 4 ) { uint8_t pin_found = 0; // trying to find a valid port name - for ( int8_t p = GPIO_PORT_COUNT; p--; ) + for ( p = GPIO_PORT_COUNT; p--; ) { // if valid port name found - if ( *token[1] == _GPIO_port_info[p].name ) + if ( token[1] == _GPIO_port_info[p].name ) { // trying to find a correct pin number pin = (uint8_t) strtol(token[2], NULL, 10); @@ -406,7 +406,7 @@ int32_t rtapi_app_main(void) } } // if we have the OPI pin number - else if ( *token[0] >= '0' && *token[0] <= '9' && len <= 2 ) + else if ( token[0] >= '0' && token[0] <= '9' && len <= 2 ) { // trying to find a correct pin number pin = (uint8_t) strtol(token, NULL, 10); @@ -471,15 +471,15 @@ int32_t rtapi_app_main(void) if ( len < 1 ) continue; // if we have the GPIO pin name - if ( *token[0] == 'P' && len >= 3 && len <= 4 ) + if ( token[0] == 'P' && len >= 3 && len <= 4 ) { uint8_t pin_found = 0; // trying to find a valid port name - for ( int8_t p = GPIO_PORT_COUNT; p--; ) + for ( p = GPIO_PORT_COUNT; p--; ) { // if valid port name found - if ( *token[1] == _GPIO_port_info[p].name ) + if ( token[1] == _GPIO_port_info[p].name ) { // trying to find a correct pin number pin = (uint8_t) strtol(token[2], NULL, 10); @@ -539,7 +539,7 @@ int32_t rtapi_app_main(void) } } // if we have the OPI pin number - else if ( *token[0] >= '0' && *token[0] <= '9' && len <= 2 ) + else if ( token[0] >= '0' && token[0] <= '9' && len <= 2 ) { // trying to find a correct pin number pin = (uint8_t) strtol(token, NULL, 10); From cc0f4ba60c7e64951ed3e0f6fcf5e3cfb5c09da0 Mon Sep 17 00:00:00 2001 From: Mikhail Vydrenko Date: Sun, 18 Feb 2018 17:26:21 +0600 Subject: [PATCH 220/516] [H3 port/pin names support] fixed runtime errors --- src/hal/drivers/hal_gpio_h3.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/hal/drivers/hal_gpio_h3.c b/src/hal/drivers/hal_gpio_h3.c index 1d1ae58c00..364490e371 100644 --- a/src/hal/drivers/hal_gpio_h3.c +++ b/src/hal/drivers/hal_gpio_h3.c @@ -367,7 +367,7 @@ int32_t rtapi_app_main(void) if ( token[1] == _GPIO_port_info[p].name ) { // trying to find a correct pin number - pin = (uint8_t) strtol(token[2], NULL, 10); + pin = (uint8_t) strtol(&token[2], NULL, 10); // if a correct pin number wasn't found if ( pin >= _GPIO_port_info[p].pins_count ) @@ -396,6 +396,8 @@ int32_t rtapi_app_main(void) { PIN_EXPORT_FAILED_MSG_AND_RETURN; } + + break; } } @@ -482,7 +484,7 @@ int32_t rtapi_app_main(void) if ( token[1] == _GPIO_port_info[p].name ) { // trying to find a correct pin number - pin = (uint8_t) strtol(token[2], NULL, 10); + pin = (uint8_t) strtol(&token[2], NULL, 10); // if a correct pin number wasn't found if ( pin >= _GPIO_port_info[p].pins_count ) @@ -529,6 +531,8 @@ int32_t rtapi_app_main(void) hal_exit(comp_id); return -1; } + + break; } } From c083409fc5f667ad9a95c833dab65beb8ad92bd7 Mon Sep 17 00:00:00 2001 From: bdebruijn Date: Wed, 14 Mar 2018 15:11:21 +0100 Subject: [PATCH 221/516] src/rtapi/userpci/list.h: fixes for compiling C++ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit C++ chockes on variables named "new" /home/bas/projects/machinekit/include/userpci/list.h:60:49: error: expected ‘,’ or ‘...’ before ‘new’ static inline void __list_add(struct list_head *new, invalid conversion error of void pointer: /machinekit/include/userpci/list.h:118:25: error: invalid conversion from ‘void*’ to ‘list_head*’ [-fpermissive] entry->prev = (void *) 0; --- src/rtapi/userpci/list.h | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/rtapi/userpci/list.h b/src/rtapi/userpci/list.h index 94a5b9dab8..804c2f67f7 100644 --- a/src/rtapi/userpci/list.h +++ b/src/rtapi/userpci/list.h @@ -57,14 +57,14 @@ struct list_head { * This is only for internal list manipulation where we know * the prev/next entries already! */ -static inline void __list_add(struct list_head *new, +static inline void __list_add(struct list_head *nw, struct list_head *prev, struct list_head *next) { - next->prev = new; - new->next = next; - new->prev = prev; - prev->next = new; + next->prev = nw; + nw->next = next; + nw->prev = prev; + prev->next = nw; } /** @@ -75,9 +75,9 @@ static inline void __list_add(struct list_head *new, * Insert a new entry after the specified head. * This is good for implementing stacks. */ -static inline void list_add(struct list_head *new, struct list_head *head) +static inline void list_add(struct list_head *nw, struct list_head *head) { - __list_add(new, head, head->next); + __list_add(nw, head, head->next); } /** @@ -88,9 +88,9 @@ static inline void list_add(struct list_head *new, struct list_head *head) * Insert a new entry before the specified head. * This is useful for implementing queues. */ -static inline void list_add_tail(struct list_head *new, struct list_head *head) +static inline void list_add_tail(struct list_head *nw, struct list_head *head) { - __list_add(new, head->prev, head); + __list_add(nw, head->prev, head); } /* @@ -114,8 +114,8 @@ static inline void __list_del(struct list_head *prev, struct list_head *next) static inline void list_del(struct list_head *entry) { __list_del(entry->prev, entry->next); - entry->next = (void *) 0; - entry->prev = (void *) 0; + entry->next = (struct list_head *) 0; + entry->prev = (struct list_head *) 0; } /** From 1c43255c108d4d0ffa29a632f6f831f393f2a477 Mon Sep 17 00:00:00 2001 From: Karl Jacobs Date: Sun, 25 Mar 2018 14:20:17 +0200 Subject: [PATCH 222/516] Replicape configuration updated for Debian Stretch on BeagleBoneBlack with kernel 4.14.x rt-preempt and Delta printer support --- .../BeagleBone/Replicape-Stretch/.gitignore | 6 + .../ARM.Replicape.A4A/IMPORTANT_NOTE | 3 + .../ARM.Replicape.A4A/hal_hwconfig_replicape | 161 ++++ .../ARM.Replicape.A4A/hal_pwm_replicape | 126 +++ .../ARM.Replicape.A4A/hal_temp_bbb | 269 ++++++ .../ARM.Replicape.A4A/replicape.hal | 794 ++++++++++++++++++ .../ARM.Replicape.A4A/replicape.ini | 369 ++++++++ .../ARM.Replicape.A4A/reset.comp | 69 ++ .../ARM.Replicape.A4A/run.py | 31 + .../ARM.Replicape.A4A/setup.sh | 17 + .../ARM.Replicape.A4A/thermistor_check.comp | 135 +++ .../Replicape-Stretch/ARM.Replicape.B3/README | 41 + .../ARM.Replicape.B3/replicape.ini | 369 ++++++++ .../ARM.Replicape.B3/replicape.py | 26 + .../ARM.Replicape.B3/replicape/__init__.py | 13 + .../ARM.Replicape.B3/replicape/base.py | 443 ++++++++++ .../ARM.Replicape.B3/replicape/extrusion.py | 247 ++++++ .../replicape/hal/hal_bbb_temp | 255 ++++++ .../replicape/hal/hal_replicape_A4_hwconfig | 139 +++ .../replicape/hal/hal_replicape_B3_hwconfig | 154 ++++ .../replicape/hal/hal_replicape_dac | 100 +++ .../replicape/hal/hal_replicape_pwm | 134 +++ .../ARM.Replicape.B3/replicape/hardware.py | 293 +++++++ .../replicape/io_muxn_bit.icomp | 90 ++ .../ARM.Replicape.B3/replicape/muxn_bit.icomp | 84 ++ .../ARM.Replicape.B3/replicape/reset.icomp | 71 ++ .../replicape/set_pru_gpio.sh | 16 + .../ARM.Replicape.B3/replicape/temperature.py | 218 +++++ .../replicape/thermistor_check.icomp | 136 +++ .../Replicape-Stretch/ARM.Replicape.B3/run.py | 48 ++ .../ARM.Replicape.B3/setup.sh | 17 + .../BeagleBone/Replicape-Stretch/README.md | 145 ++++ .../BeagleBone/Replicape-Stretch/launcher.ini | 8 + .../Replicape-Stretch/subroutines/g22.ngc | 41 + .../Replicape-Stretch/subroutines/g23.ngc | 41 + .../Replicape-Stretch/subroutines/g28.ngc | 60 ++ .../Replicape-Stretch/subroutines/g29.ngc | 19 + .../Replicape-Stretch/subroutines/g29_1.ngc | 11 + .../Replicape-Stretch/subroutines/g29_2.ngc | 20 + .../Replicape-Stretch/subroutines/g30.ngc | 27 + .../Replicape-Stretch/subroutines/m104.ngc | 18 + .../Replicape-Stretch/subroutines/m106.ngc | 18 + .../Replicape-Stretch/subroutines/m107.ngc | 18 + .../Replicape-Stretch/subroutines/m109.ngc | 9 + .../Replicape-Stretch/subroutines/m140.ngc | 14 + .../Replicape-Stretch/subroutines/m141.ngc | 14 + .../Replicape-Stretch/subroutines/m190.ngc | 5 + .../Replicape-Stretch/subroutines/m191.ngc | 5 + .../Replicape-Stretch/subroutines/m200.ngc | 4 + .../Replicape-Stretch/subroutines/m207.ngc | 6 + .../Replicape-Stretch/subroutines/m221.ngc | 4 + .../Replicape-Stretch/subroutines/m226.ngc | 3 + .../Replicape-Stretch/subroutines/m280.ngc | 3 + .../Replicape-Stretch/subroutines/m300.ngc | 36 + .../Replicape-Stretch/subroutines/m400.ngc | 3 + .../Replicape-Stretch/subroutines/m420.ngc | 39 + .../Replicape-Stretch/subroutines/m700.ngc | 15 + .../Replicape-Stretch/subroutines/m701.ngc | 15 + .../Replicape-Stretch/subroutines/m702.ngc | 15 + .../Replicape-Stretch/subroutines/m710.ngc | 28 + 60 files changed, 5518 insertions(+) create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/.gitignore create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/IMPORTANT_NOTE create mode 100755 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/hal_hwconfig_replicape create mode 100755 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/hal_pwm_replicape create mode 100755 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/hal_temp_bbb create mode 100755 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/replicape.hal create mode 100755 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/replicape.ini create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/reset.comp create mode 100755 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/run.py create mode 100755 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/setup.sh create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/thermistor_check.comp create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/README create mode 100755 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape.ini create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape.py create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/__init__.py create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/base.py create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/extrusion.py create mode 100755 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/hal/hal_bbb_temp create mode 100755 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/hal/hal_replicape_A4_hwconfig create mode 100755 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/hal/hal_replicape_B3_hwconfig create mode 100755 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/hal/hal_replicape_dac create mode 100755 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/hal/hal_replicape_pwm create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/hardware.py create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/io_muxn_bit.icomp create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/muxn_bit.icomp create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/reset.icomp create mode 100755 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/set_pru_gpio.sh create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/temperature.py create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/thermistor_check.icomp create mode 100755 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/run.py create mode 100755 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/setup.sh create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/README.md create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/launcher.ini create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/subroutines/g22.ngc create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/subroutines/g23.ngc create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/subroutines/g28.ngc create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/subroutines/g29.ngc create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/subroutines/g29_1.ngc create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/subroutines/g29_2.ngc create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/subroutines/g30.ngc create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m104.ngc create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m106.ngc create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m107.ngc create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m109.ngc create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m140.ngc create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m141.ngc create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m190.ngc create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m191.ngc create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m200.ngc create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m207.ngc create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m221.ngc create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m226.ngc create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m280.ngc create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m300.ngc create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m400.ngc create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m420.ngc create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m700.ngc create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m701.ngc create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m702.ngc create mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m710.ngc diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/.gitignore b/configs/ARM/BeagleBone/Replicape-Stretch/.gitignore new file mode 100644 index 0000000000..f1ed09f326 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/.gitignore @@ -0,0 +1,6 @@ +*.sw[op] +*.pyc +*.bak +rs274ngc.var +local +tool.tbl diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/IMPORTANT_NOTE b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/IMPORTANT_NOTE new file mode 100644 index 0000000000..d701fff6e5 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/IMPORTANT_NOTE @@ -0,0 +1,3 @@ +This folder (ARM.Replicape.A4A) is deprecated, and is only compatible with Machinekit 2015 version and Replicape Rev A4A. + +The ARM.Replicape.B3 folder works on Machinekit 2016-11, and is compatible with Replicape B3 and A4A despite the name. diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/hal_hwconfig_replicape b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/hal_hwconfig_replicape new file mode 100755 index 0000000000..4afb1cefbb --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/hal_hwconfig_replicape @@ -0,0 +1,161 @@ +#!/usr/bin/python +# encoding: utf-8 +# vim: set sw=4 sts=4 et: + +''' +A machinekit/LinuxCNC user module for Replicape hardware config + +Configure the steppers on Replicape A4/A4A through HAL +Driver mode pins are connected through a bit shifter and +hence accessible with SPI. Current limit is through an DAC chip. + +The settings are populated when the "enable" pin is turned on + +The following pins are exported +* enable + Enable the steppers +* stepper.x.microstepping + Microstepping settings for steppers 0 to 5. + Value is treated as 1/2^x, e.g. 5 means 1/32 microstepping mode. +* stepper.x.decay + True for slow decay +* stepper.x.current + Current settings for steppers 0 to 5. + Value is treated as current in Amps +* watchdog + A pin that toggles at every loop informing HAL that this component is alive + +Copyright (C) 2013 Sam Wong +GNU GPL Version 2.0 or (at your option) any later version +''' + +import argparse +import glob +import sys +import time + +import hal +from spi import SPI + +parser = argparse.ArgumentParser(description='HAL component to configure Replicape hardware') +parser.add_argument('-n','--name', help='HAL component name',required=True) +args = parser.parse_args() + +# Initialize SPI +spi2_0 = None +spi2_1 = None + +# Load SPI module +try: + # init the SPI for the DAC + try: + spi2_0 = SPI((0, 0)) + except IOError: + spi2_0 = SPI((1, 0)) + spi2_0.mode = 1 + + # Init the SPI for the serial to parallel + try: + spi2_1 = SPI((0, 1)) + except IOError: + spi2_1 = SPI((1, 1)) + spi2_1.mode = 0 +except IOError: + print("Unable to set up SPI") + exit(-1) + +# Initialize HAL +h = hal.component(args.name) +enablePin = h.newpin("enable", hal.HAL_BIT, hal.HAL_IN) + +N = 5 # We have 5 steppers +microsteppingPins = [None] * N +decayPins = [None] * N +currentPins = [None] * N + +vRef = 3.3 +rSense = 0.1 + +for i in range(0,N): + microsteppingPins[i] = h.newparam(("stepper.%d.microstepping" % i), hal.HAL_U32, hal.HAL_RW) + decayPins[i] = h.newparam(("stepper.%d.decay" % i), hal.HAL_BIT, hal.HAL_RW) + currentPins[i] = h.newparam(("stepper.%d.current" % i), hal.HAL_FLOAT, hal.HAL_RW) +halWatchdogPin = h.newpin("watchdog", hal.HAL_BIT, hal.HAL_OUT) +h.ready() + +''' +The bits in the shift register are as follows (Rev A4) : +Bit - name - init val +D0 = - = Don't Care +D1 = MODE2 = 0 +D2 = MODE1 = 0 +D3 = MODE0 = 0 +D4 = nENABLE = 0 - Enabled +D5 = DECAY = 0 - Slow decay +D6 = nSLEEP = 1 - Not sleeping +D7 = nRESET = 1 - Not in reset mode +''' + +def commit(): + ''' Turn on the stepper chips ''' + + # Writing the current + for i in range(0,N): + vOut = currentPins[i].value * 5.0 * rSense + dacVal = int((vOut * 256.0) / vRef) + spi2_0.write([ \ + (dacVal & 0xF0) >> 4 | (i << 4), \ + (dacVal & 0x0F) << 4]) + spi2_0.write([0xA0, 0xFF]) # Commits to output + + # Writing the modes + bytes = [] + for i in range(0,N): + state = decayPins[i].value << 5 | \ + ((microsteppingPins[i].value & 0x04) >> 2) << 1 | \ + ((microsteppingPins[i].value & 0x02) >> 1) << 2 | \ + ((microsteppingPins[i].value & 0x01) >> 0) << 3 | \ + 0 << 4 | 1 << 6 | 1 << 7 + bytes.append(state) + # Reverse the writting orders due to serial chain sequence + spi2_1.write(bytes[::-1]) + +def reset(): + ''' Reset the stepper chip ''' + bytes = [] + for i in range(0,N): + state = 1 << 4 | 0 << 6 | 0 << 7 + bytes.append(state) + # Reverse the writting orders due to serial chain sequence + spi2_1.write(bytes[::-1]) + +def turnOff(): + ''' Turn off all stepper chips ''' + bytes = [] + for i in range(0,N): + state = 1 << 4 | 0 << 6 | 1 << 7 + bytes.append(state) + # Reverse the writting orders due to serial chain sequence + spi2_1.write(bytes[::-1]) + +watchdog = True +try: + oldEnable = False + reset() + time.sleep(0.05) + while (True): + enable = enablePin.value + if (enable and not oldEnable): + commit() + if (oldEnable and not enable): + turnOff() + oldEnable = enable + + watchdog = not watchdog + halWatchdogPin.value = watchdog + time.sleep(0.05) +except BaseException as e: + reset() + print(("exiting HAL component %s: %s") % (args.name, e)) + h.exit() + diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/hal_pwm_replicape b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/hal_pwm_replicape new file mode 100755 index 0000000000..0348ccd84b --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/hal_pwm_replicape @@ -0,0 +1,126 @@ +#!/usr/bin/python +# encoding: utf-8 +# vim: set sw=4 sts=4 et: + +''' +A machinekit/LinuxCNC user module for Replicape PWM control + +The PWM is enabled when the "enable" pin is turned on + +The following pins are exported +* enable + Enable the PWM +* out.x + PWM output for channel 0 to 15. Values are from 0.0 to 1.0 +* watchdog + A pin that toggles at every loop informing HAL that this component is alive + +Copyright (C) 2013 Sam Wong +GNU GPL Version 2.0 or (at your option) any later version +''' + +import argparse +import glob +import sys +import time + +import hal +import smbus + +parser = argparse.ArgumentParser(description='HAL component to configure Replicape hardware') +parser.add_argument('-n','--name', help='HAL component name',required=True) +parser.add_argument('-d', '--debug', help='Debug - Turn off all output and exit', action='store_true') +args = parser.parse_args() + +PCA9685_ADDR = 0x70 +PCA9685_MODE1 = 0x0 +PCA9685_PRESCALE = 0xFE +PCA9685_ALL_LED_ON_L = 0xFA +N = 16 + +bus = None +try: + try: + bus = smbus.SMBus(2) + except IOError: + bus = smbus.SMBus(1) +except IOError: + print("Unable to set up PWM chip") + exit(-1) + +def initChip(): + bus.write_byte(0x00, 0x06) # Broadcast Reset + time.sleep(0.01) + + freq = 100 + prescaleval = 25000000 + prescaleval /= 4096 + prescaleval /= float(freq) + prescaleval -= 1 + prescale = int(prescaleval + 0.5) + + bus.write_byte_data(PCA9685_ADDR, PCA9685_MODE1, 0x11) # Sleep + bus.write_byte_data(PCA9685_ADDR, PCA9685_PRESCALE, prescale) + bus.write_byte_data(PCA9685_ADDR, PCA9685_MODE1, 0x21) # Out of sleep + time.sleep(0.01) + bus.write_byte_data(PCA9685_ADDR, PCA9685_MODE1, 0xA1) # Restart, AI, Allcall + +def turnOff(): + bus.write_i2c_block_data(PCA9685_ADDR, PCA9685_ALL_LED_ON_L, [0, 0, 0, 0x10]); # All off + if (not args.debug): + for i in range(0,N): + onPins[i].value = 0 + oldOutputs[i] = 0 + +for i in range(0,N): + oldOutputs = 0.0 + +if (not args.debug): + # Initialize HAL + h = hal.component(args.name) + enablePin = h.newpin("enable", hal.HAL_BIT, hal.HAL_IN) + halWatchdogPin = h.newpin("watchdog", hal.HAL_BIT, hal.HAL_OUT) + outPins = [None] * N + onPins = [None] * N + oldOutputs = [0] * N + for i in range(0,N): + outPins[i] = h.newpin(("%d.out" % i), hal.HAL_FLOAT, hal.HAL_IN) + onPins[i] = h.newpin(("%d.on" % i), hal.HAL_BIT, hal.HAL_OUT) + onPins[i].value = 0 + h.ready() + +initChip() +turnOff() + +if (args.debug): + exit(0) + +def commit(): + for i in range(0,N): + if (outPins[i].value != oldOutputs[i]): + oldOutputs[i] = outPins[i].value + off = min(1.0, oldOutputs[i]) + off = int(off * 4095) + onPins[i].value = off > 0 + bytes = [0x00, 0x00, off & 0xFF, off >> 8] + bus.write_i2c_block_data(PCA9685_ADDR, 0x06 + (4 * i), bytes) + +watchdog = True +try: + oldEnable = False + while (True): + watchdog = not watchdog + enable = enablePin.value + if (enable): + commit() + if (oldEnable and not enable): + turnOff() + oldEnable = enable + + halWatchdogPin.value = watchdog + time.sleep(0.05) +except BaseException as e: + turnOff() + print(("exiting HAL component %s: %s") % (args.name, e)) + h.exit() + diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/hal_temp_bbb b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/hal_temp_bbb new file mode 100755 index 0000000000..00c8f389f9 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/hal_temp_bbb @@ -0,0 +1,269 @@ +#!/usr/bin/python +# encoding: utf-8 + +######################################################################## +# Description: temp.py # +# This code reads an ADC input on the BeagleBone and converts the # +# resulting value into a temperature according to the thermistor # +# type, accounting for the analog input circuty as implemented on # +# the BeBoPr cape # +# # +# Author(s): Charles Steinkuehler # +# License: GNU GPL Version 2.0 or (at your option) any later version. # +# # +# Major Changes: # +# 2013-June Charles Steinkuehler # +# Initial version # +# 2014-July Alexander Roessler # +# Port to the R2Temp component # +######################################################################## +# Copyright (C) 2013 Charles Steinkuehler # +# # +# # +# This program 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 2 # +# of the License, or (at your option) any later version. # +# # +# This program 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 this program; if not, write to the Free Software # +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # +# 02110-1301, USA. # +# # +# THE AUTHORS OF THIS PROGRAM ACCEPT ABSOLUTELY NO LIABILITY FOR # +# ANY HARM OR LOSS RESULTING FROM ITS USE. IT IS _EXTREMELY_ UNWISE # +# TO RELY ON SOFTWARE ALONE FOR SAFETY. Any machinery capable of # +# harming persons must have provisions for completely removing power # +# from all motors, etc, before persons enter any danger area. All # +# machinery must be designed to comply with local and national safety # +# codes, and the authors of this software can not, and do not, take # +# any responsibility for such compliance. # +######################################################################## + +import argparse +import glob +import sys +import time + +import hal +from fdm.r2temp import R2Temp + + +# The BeBoPr board thermistor input has one side grounded and the other side +# pulled high through a 2.05K resistor to 3.6V. Following this is a 470R +# resistor, some protection diodes, and a voltage divider cosisting of two +# 10.0K resistors. The ADC voltage read is the voltage across the lower 10K +# resistor in the 470R + 10K + 10K series chain +def adc2r_bebopr(pin): + V_adc = pin.rawValue * 1.8 / 4096.0 + + V_T = 0.0 # Voltage across the thermistor (and the 470R + 10K + 10K resistor chain) + I_PU = 0.0 # Current flowing through the 2.05K pull-up resistor + R_TD = 0.0 # Resistance of thermistor and the 470R + 10K + 10K divider chain in parallel + R_T = 0.0 # Resistance of the thermistor + + V_T = V_adc * 2.0470 + + # No dividing by zero or negative voltages despite what the ADC says! + # Clip to a small positive value + I_PU = max((3.6 - V_T) / 2050, 0.000001) + + R_TD = V_T / I_PU + + # Acutal resistance can't be negative, but we can get a negative value + # from the equation below for some real ADC values, so clip to avoid + # reporting crazy temperature values or dividing by zero + if R_TD >= 20470: + R_TD = 20470 - 0.1 + + # 1 / Rtotal = 1 / ( 1 / R1 + 1 / R2 ) + # R2 = ( R1 * Rtotal ) / ( R1 - Rtotal ) + R_T = (20470 * R_TD) / (20470 - R_TD) + + # print "V_adc: %f V_T: %f R_TD: %f R_T: %f" % (V_adc, V_T, R_TD, R_T) + + return R_T + +# The CRAMPS board thermistor input has one side grounded and the other side +# pulled high through a 1.00K resistor to 1.8V. Following this is a 4.7K +# resistor, some protection diodes, and filtering capacitors. The ADC voltage +# read is the filtered voltage across the thermistor. +def adc2r_cramps(pin): + V_adc = pin.rawValue * 1.8 / 4096.0 + V_T = 0.0 # Voltage across the thermistor + R_PU = 2000.0 #Pull-up resistence + I_PU = 0.0 # Current flowing through the pull-up resistor + R_T = 0.0 # Resistance of the thermistor + + V_T = V_adc + + # No dividing by zero or negative voltages despite what the ADC says! + # Clip to a small positive value + I_PU = max((1.8 - V_T ) / R_PU, 0.000001) + + R_T = V_T / I_PU + + return R_T + +# The Replicape board thermistor input is pulled up to ADC (1.8v) with 4.7k. +# VADC ---- 4.7k --- [SENSE] -- [Thermistor] --- GND +def adc2r_replicape(pin): + V_adc = pin.rawValue * 1.8 / 4096.0 + V_T = 0.0 # Voltage across the thermistor + R_PU = 4700.0 #Pull-up resistence + I_PU = 0.0 # Current flowing through the pull-up resistor + R_T = 0.0 # Resistance of the thermistor + + V_T = V_adc + + # No dividing by zero or negative voltages despite what the ADC says! + # Clip to a small positive value + I_PU = max((1.8 - V_T ) / R_PU, 0.000001) + + R_T = V_T / I_PU + + return R_T + +class Pin: + def __init__(self, pin): + self.pin = pin + self.r2temp = None + self.halValuePin = None + self.halRawPin = None + self.filterSamples = [] + self.filterSize = 10 + self.rawValue = 0.0 + self.filename = "" + self.filterSamples = [] + self.rawValue = 0.0 + + def addSample(self, value): + self.filterSamples.append(value) + if (len(self.filterSamples) > self.filterSize): + self.filterSamples.pop(0) + sampleSum = 0.0 + for sample in self.filterSamples: + sampleSum += sample + self.rawValue = sampleSum / len(self.filterSamples) + + +def adc2Temp(pin): + if(args.cape_board == 'BeBoPr'): + R = adc2r_bebopr(pin) + elif (args.cape_board == 'CRAMPS'): + R = adc2r_cramps(pin) + elif (args.cape_board == 'Replicape'): + R = adc2r_replicape(pin) + else: + print("Invalid -b cape name: %s" % args.cape_board) + print("Valid names are: BeBoPr, CRAMPS, Replicape") + sys.exit(1) + return round(pin.r2temp.r2t(R) * 10.0) / 10.0 + + +def getHalName(pin): + return "ch-" + '{0:02d}'.format(pin.pin) + + +def checkAdcInput(pin): + syspath = '/sys/devices/ocp.*/44e0d000.tscadc/tiadc/iio:device0/' + tempName = glob.glob(syspath + 'in_voltage' + str(pin.pin) + '_raw') + pin.filename = tempName[0] + try: + if len(pin.filename) > 0: + f = open(pin.filename, 'r') + f.close() + time.sleep(0.001) + else: + raise UserWarning('Bad Filename') + except (UserWarning, IOError): + print(("Cannot read ADC input: %s" % pin.filename)) + sys.exit(1) + + +parser = argparse.ArgumentParser(description='HAL component to read ADC values and convert to temperature') +parser.add_argument('-n','--name', help='HAL component name',required=True) +parser.add_argument('-i', '--interval', help='Adc update interval', default=0.2) +parser.add_argument('-c', '--channels', help='Komma separated list of channels and thermistors to use e.g. 01:semitec_103GT_2,02:epcos_B57560G1104', required=True) +parser.add_argument('-f', '--filter_size', help='Size of the low pass filter to use', default=10) +parser.add_argument('-b', '--cape_board', help='Type of cape used', default='BeBoPr') +parser.add_argument('-d', '--debug', help='Debug - prints the values in console and exit', action='store_true') + +args = parser.parse_args() + +updateInterval = float(args.interval) +filterSize = int(args.filter_size) +error = False +watchdog = True + +# Create pins +pins = [] + +if (args.channels != ""): + channelsRaw = args.channels.split(',') + for channel in channelsRaw: + pinRaw = channel.split(':') + if (len(pinRaw) != 2): + print(("wrong input")) + sys.exit(1) + pin = Pin(int(pinRaw[0])) + if ((pin.pin > 7) or (pin.pin < 0)): + print(("Pin not available")) + sys.exit(1) + checkAdcInput(pin) + if (pinRaw[1] != "none"): + pin.r2temp = R2Temp(pinRaw[1]) + pin.filterSize = filterSize + pins.append(pin) + + +if (not args.debug): + # Initialize HAL + h = hal.component(args.name) + for pin in pins: + pin.halRawPin = h.newpin(getHalName(pin) + ".raw", hal.HAL_FLOAT, hal.HAL_OUT) + if (pin.r2temp is not None): + pin.halValuePin = h.newpin(getHalName(pin) + ".value", hal.HAL_FLOAT, hal.HAL_OUT) + halErrorPin = h.newpin("error", hal.HAL_BIT, hal.HAL_OUT) + halNoErrorPin = h.newpin("no-error", hal.HAL_BIT, hal.HAL_OUT) + halWatchdogPin = h.newpin("watchdog", hal.HAL_BIT, hal.HAL_OUT) + h.ready() + + halErrorPin.value = error + halNoErrorPin.value = not error + halWatchdogPin.value = watchdog + +try: + while (True): + try: + for pin in pins: + with open(pin.filename, 'r') as f: + value = float(f.readline()) + pin.addSample(value) + if (not args.debug): + pin.halRawPin.value = pin.rawValue + if (pin.r2temp is not None): + pin.halValuePin.value = adc2Temp(pin) + else: + print(("%s - raw: %d, temp: %0.1f") % (getHalName(pin), pin.rawValue, adc2Temp(pin))) + error = False + except IOError as e: + print(("Error in reading temperature %s: %s" % (pin.filename, e))) + error = True + + if (not args.debug): + halErrorPin.value = error + halNoErrorPin.value = not error + watchdog = not watchdog + halWatchdogPin.value = watchdog + time.sleep(updateInterval) +except BaseException as e: + print(("exiting HAL component %s: %s") % (args.name, e)) + if (not args.debug): + h.exit() + diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/replicape.hal b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/replicape.hal new file mode 100755 index 0000000000..e128efad3a --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/replicape.hal @@ -0,0 +1,794 @@ +# ####################################### +# +# HAL file for BeagleBone + BeBoPr cape with 4 steppers +# +# Derived from example hm2-stepper config +# +# ######################################## + +# Launch the setup script to make sure hardware setup looks good +loadusr -w ./setup.sh + +# ################################### +# Core EMC/HAL Loads +# ################################### + +# kinematics +loadrt trivkins + +# motion controller, get name and thread periods from ini file +# trajectory planner +loadrt tp +loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=4 num_aio=50 num_dio=20 tp=tp kins=trivkins + +# load low-level drivers +loadrt hal_bb_gpio output_pins= input_pins=810,809,924,818,923,925,916,918,911,913 +loadrt [PRUCONF](DRIVER) prucode=$(HAL_RTMOD_DIR)/[PRUCONF](PRUBIN) [PRUCONF](CONFIG) halname=hpg +loadrt at_pid names=pid.e0-temp,pid.hbp-temp +loadrt limit1 names=limit1.e0-heater,limit1.hbp-heater +loadrt scale names=scale.e0-fan-comp +loadrt thermistor_check names=thermistor-check.e0,thermistor-check.hbp +loadrt not names=not.e0-temp-range,not.hbp-temp-range,not.e0-error,not.hbp-error +loadrt wcomp names=wcomp.e0-temp-range,wcomp.hbp-temp-range,wcomp.e0-temp-limit,wcomp.hbp-temp-limit +loadrt sum2 names=sum2.e0-temp-range-neg,sum2.e0-temp-range-pos,sum2.hbp-temp-range-neg,sum2.hbp-temp-range-pos,sum2.extrude-rate-adj +loadrt mux2 names=mux2.ve-base-vel,mux2.jog-velocity-signed,mux2.system-fan +loadrt logic names=estopchain,and2.e0-no-error,and2.hbp-no-error personality=0x103,0x102,0x102 # and 3 and 2 inputs +loadrt comp names=comp.e0-active,comp.hbp-active +loadrt watchdog num_inputs=3 + +loadrt hypot names=hypot.nozzle-vel +loadrt mult2 names=mult2.nozzle-discharge,mult2.filament-dia,mult2.filament-area,mult2.extrude-accel-adj,mult2.ve-jog-dtg,mult2.retract-vel-neg,mult2.extrude-rate-scaled,mult2.jog-velocity-neg +loadrt div2 names=div2.extrude-rate,div2.retract-time,div2.ve-jog-time +loadrt mux4 names=mux4.ve +loadrt oneshot names=oneshot.retract,oneshot.ve-jog +loadrt ddt names=ddt.extruder-accel +loadrt or2 names=or2.ve-jog-enable +loadrt reset names=reset.extruder-en1,reset.extruder-en2 + +# Python user-mode HAL module to read ADC value and generate a thermostat output for PWM +# c = analog input channel and thermistor table +loadusr -Wn Therm ./hal_temp_bbb -n Therm -c 04:[EXTRUDER_0]THERMISTOR,06:[HBP]THERMISTOR -b Replicape +loadusr -Wn Pwm ./hal_pwm_replicape -n Pwm +loadusr -Wn HwConfig ./hal_hwconfig_replicape -n HwConfig + +# ################################################ +# THREADS +# ################################################ + +addf hpg.capture-position servo-thread +addf bb_gpio.read servo-thread +addf bb_gpio.write servo-thread +addf motion-command-handler servo-thread +addf motion-controller servo-thread +addf hpg.update servo-thread + +# E0 +addf scale.e0-fan-comp servo-thread +addf pid.e0-temp.do-pid-calcs servo-thread +addf limit1.e0-heater servo-thread +addf sum2.e0-temp-range-neg servo-thread +addf sum2.e0-temp-range-pos servo-thread +addf wcomp.e0-temp-range servo-thread +addf not.e0-temp-range servo-thread +addf wcomp.e0-temp-limit servo-thread +addf and2.e0-no-error servo-thread +addf not.e0-error servo-thread +addf comp.e0-active servo-thread + +# HBP +addf pid.hbp-temp.do-pid-calcs servo-thread +addf sum2.hbp-temp-range-neg servo-thread +addf sum2.hbp-temp-range-pos servo-thread +addf wcomp.hbp-temp-range servo-thread +addf not.hbp-temp-range servo-thread +addf wcomp.hbp-temp-limit servo-thread +addf limit1.hbp-heater servo-thread +addf and2.hbp-no-error servo-thread +addf not.hbp-error servo-thread +addf comp.hbp-active servo-thread + +# Estop chain and System +addf mux2.system-fan servo-thread +addf thermistor-check.e0 servo-thread +addf thermistor-check.hbp servo-thread +addf watchdog.set-timeouts servo-thread +addf watchdog.process servo-thread +addf estopchain servo-thread + +# velocity extruding +addf hypot.nozzle-vel servo-thread +addf mult2.nozzle-discharge servo-thread +addf mult2.filament-dia servo-thread +addf mult2.filament-area servo-thread +addf div2.extrude-rate servo-thread +addf mult2.extrude-rate-scaled servo-thread +addf ddt.extruder-accel servo-thread +addf sum2.extrude-rate-adj servo-thread +addf mult2.extrude-accel-adj servo-thread +addf mult2.jog-velocity-neg servo-thread +addf mux2.jog-velocity-signed servo-thread +addf div2.ve-jog-time servo-thread +addf oneshot.ve-jog servo-thread +addf or2.ve-jog-enable servo-thread +addf mux2.ve-base-vel servo-thread +addf mult2.ve-jog-dtg servo-thread +addf mult2.retract-vel-neg servo-thread +addf reset.extruder-en1 servo-thread +addf reset.extruder-en2 servo-thread +addf div2.retract-time servo-thread +addf oneshot.retract servo-thread +addf mux4.ve servo-thread + +# ################################### +# UI remote component definition +# ################################### + +# Limit emperature changes report (epsilon) at every 0.1 +sete 1 0.1 + +newcomp fdm-e0 timer=100 +newpin fdm-e0 fdm-e0.temp.meas float in eps=1 +newpin fdm-e0 fdm-e0.temp.set float io +newpin fdm-e0 fdm-e0.temp.standby float in +newpin fdm-e0 fdm-e0.temp.limit.min float in +newpin fdm-e0 fdm-e0.temp.limit.max float in +newpin fdm-e0 fdm-e0.temp.in-range bit in +newpin fdm-e0 fdm-e0.error bit in +newpin fdm-e0 fdm-e0.active bit in +ready fdm-e0 + +newcomp fdm-hbp timer=100 +newpin fdm-hbp fdm-hbp.temp.meas float in eps=1 +newpin fdm-hbp fdm-hbp.temp.set float io +newpin fdm-hbp fdm-hbp.temp.standby float in +newpin fdm-hbp fdm-hbp.temp.limit.min float in +newpin fdm-hbp fdm-hbp.temp.limit.max float in +newpin fdm-hbp fdm-hbp.temp.in-range bit in +newpin fdm-hbp fdm-hbp.error bit in +newpin fdm-hbp fdm-hbp.active bit in +ready fdm-hbp + +newcomp fdm-ve-jog timer=100 +newpin fdm-ve-jog fdm-ve-jog.distance float io +newpin fdm-ve-jog fdm-ve-jog.velocity float io +newpin fdm-ve-jog fdm-ve-jog.direction bit io +newpin fdm-ve-jog fdm-ve-jog.trigger bit io +newpin fdm-ve-jog fdm-ve-jog.continous bit out +newpin fdm-ve-jog fdm-ve-jog.dtg float in +newpin fdm-ve-jog fdm-ve-jog.max-velocity float in +ready fdm-ve-jog + +newcomp fdm-ve-params timer=100 +newpin fdm-ve-params fdm-ve-params.filament-dia float io +newpin fdm-ve-params fdm-ve-params.retract-vel float io +newpin fdm-ve-params fdm-ve-params.retract-len float io +newpin fdm-ve-params fdm-ve-params.extrude-scale float io +newpin fdm-ve-params fdm-ve-params.accel-adj-gain float io +ready fdm-ve-params + +newcomp fdm-e0-pid timer=100 +newpin fdm-e0-pid fdm-e0-pid.Pgain float io +newpin fdm-e0-pid fdm-e0-pid.Igain float io +newpin fdm-e0-pid fdm-e0-pid.Dgain float io +newpin fdm-e0-pid fdm-e0-pid.maxerrorI float io +newpin fdm-e0-pid fdm-e0-pid.bias float io +newpin fdm-e0-pid fdm-e0-pid.max float in +newpin fdm-e0-pid fdm-e0-pid.min float in +newpin fdm-e0-pid fdm-e0-pid.command float io +newpin fdm-e0-pid fdm-e0-pid.feedback float in +newpin fdm-e0-pid fdm-e0-pid.output float in +ready fdm-e0-pid + +# ###################################################### +# Axis-of-motion Specific Configs (not the GUI) +# ###################################################### + +# ################ +# X [0] Axis +# ################ + +# axis enable chain +net main_enable => hpg.stepgen.00.enable + +# position command and feedback +net emcmot.00.pos-cmd <= axis.0.motor-pos-cmd +net emcmot.00.pos-cmd => hpg.stepgen.00.position-cmd + +net motor.00.pos-fb <= hpg.stepgen.00.position-fb +net motor.00.pos-fb => axis.0.motor-pos-fb + + +# timing parameters +setp hpg.stepgen.00.dirsetup [AXIS_0]DIRSETUP +setp hpg.stepgen.00.dirhold [AXIS_0]DIRHOLD + +setp hpg.stepgen.00.steplen [AXIS_0]STEPLEN +setp hpg.stepgen.00.stepspace [AXIS_0]STEPSPACE + +setp hpg.stepgen.00.position-scale [AXIS_0]SCALE + +setp hpg.stepgen.00.maxvel [AXIS_0]STEPGEN_MAX_VEL +setp hpg.stepgen.00.maxaccel [AXIS_0]STEPGEN_MAX_ACC + +setp hpg.stepgen.00.steppin [AXIS_0]STEPPIN +setp hpg.stepgen.00.dirpin [AXIS_0]DIRPIN + + +# ################ +# Y [1] Axis +# ################ + +# axis enable chain +net main_enable => hpg.stepgen.01.enable + +# position command and feedback +net emcmot.01.pos-cmd <= axis.1.motor-pos-cmd +net emcmot.01.pos-cmd => hpg.stepgen.01.position-cmd + +net motor.01.pos-fb <= hpg.stepgen.01.position-fb +net motor.01.pos-fb => axis.1.motor-pos-fb + + +# timing parameters +setp hpg.stepgen.01.dirsetup [AXIS_1]DIRSETUP +setp hpg.stepgen.01.dirhold [AXIS_1]DIRHOLD + +setp hpg.stepgen.01.steplen [AXIS_1]STEPLEN +setp hpg.stepgen.01.stepspace [AXIS_1]STEPSPACE + +setp hpg.stepgen.01.position-scale [AXIS_1]SCALE + +setp hpg.stepgen.01.maxvel [AXIS_1]STEPGEN_MAX_VEL +setp hpg.stepgen.01.maxaccel [AXIS_1]STEPGEN_MAX_ACC + +setp hpg.stepgen.01.steppin [AXIS_1]STEPPIN +setp hpg.stepgen.01.dirpin [AXIS_1]DIRPIN + + +# ################ +# Z [2] Axis +# ################ + +# axis enable chain +net main_enable => hpg.stepgen.02.enable + +# position command and feedback +net emcmot.02.pos-cmd <= axis.2.motor-pos-cmd +net emcmot.02.pos-cmd => hpg.stepgen.02.position-cmd + +net motor.02.pos-fb <= hpg.stepgen.02.position-fb +net motor.02.pos-fb => axis.2.motor-pos-fb + + +# timing parameters +setp hpg.stepgen.02.dirsetup [AXIS_2]DIRSETUP +setp hpg.stepgen.02.dirhold [AXIS_2]DIRHOLD + +setp hpg.stepgen.02.steplen [AXIS_2]STEPLEN +setp hpg.stepgen.02.stepspace [AXIS_2]STEPSPACE + +setp hpg.stepgen.02.position-scale [AXIS_2]SCALE + +setp hpg.stepgen.02.maxvel [AXIS_2]STEPGEN_MAX_VEL +setp hpg.stepgen.02.maxaccel [AXIS_2]STEPGEN_MAX_ACC + +setp hpg.stepgen.02.steppin [AXIS_2]STEPPIN +setp hpg.stepgen.02.dirpin [AXIS_2]DIRPIN + + +# ################ +# A [3] Axis (Extruder) +# ################ + +# axis enable chain +# Take Z axis signal for enable +net main_enable => hpg.stepgen.03.enable + +net ve.xvel axis.0.joint-vel-cmd => hypot.nozzle-vel.in0 +net ve.yvel axis.1.joint-vel-cmd => hypot.nozzle-vel.in1 +net ve.zvel axis.2.joint-vel-cmd => hypot.nozzle-vel.in2 +net ve.nozzle-vel <= hypot.nozzle-vel.out + +# multiply area with speed and we get discharge (mm^3 per second) +net ve.cross-section => mult2.nozzle-discharge.in0 +net ve.nozzle-vel => mult2.nozzle-discharge.in1 +net ve.nozzle-discharge <= mult2.nozzle-discharge.out + +# calculate filament cross section area +# PI divided by 4 +setp mult2.filament-area.in0 0.78539816339 +net ve.filament-dia => mult2.filament-dia.in0 +net ve.filament-dia => mult2.filament-dia.in1 +net ve.filament-dia-squared mult2.filament-dia.out => mult2.filament-area.in1 +net ve.filament-area <= mult2.filament-area.out + +# calculate extrude rate +net ve.nozzle-discharge => div2.extrude-rate.in0 +net ve.filament-area => div2.extrude-rate.in1 +net ve.extrude-rate <= div2.extrude-rate.out + +# scale extrude rate +net ve.extrude-rate => mult2.extrude-rate-scaled.in0 +net ve.extrude-scale => mult2.extrude-rate-scaled.in1 +net ve.extrude-rate-scaled <= mult2.extrude-rate-scaled.out + +# these are used for a small offset in velocity during acceleration (buildup pressure inside +# the nozzle because of the current speed. Take the maximum accel you've specified in .ini +# get acceleration into lincurve +net ve.extrude-rate-scaled => ddt.extruder-accel.in +net ve.extrude-accel <= ddt.extruder-accel.out +net ve.extrude-accel => mult2.extrude-accel-adj.in0 +net ve.extrude-accel-adj-gain => mult2.extrude-accel-adj.in1 +net ve.extrude-accel-adj <= mult2.extrude-accel-adj.out +# get adjusted speed for adding to current speed during acceleration +net ve.extrude-rate-scaled => sum2.extrude-rate-adj.in0 +net ve.extrude-accel-adj => sum2.extrude-rate-adj.in1 +net ve.extrude-rate-adj <= sum2.extrude-rate-adj.out + +# Velocity extruding jog support +net ve.jog-velocity => mult2.jog-velocity-neg.in0 +setp mult2.jog-velocity-neg.in1 -1.0 +net ve.jog-velocity-neg <= mult2.jog-velocity-neg.out +net ve.jog-velocity => mux2.jog-velocity-signed.in0 +net ve.jog-velocity-neg => mux2.jog-velocity-signed.in1 +net ve.jog-direction => mux2.jog-velocity-signed.sel +net ve.jog-velocity-signed <= mux2.jog-velocity-signed.out + +net ve.jog-distance => div2.ve-jog-time.in0 +net ve.jog-velocity => div2.ve-jog-time.in1 +net ve.jog-time <= div2.ve-jog-time.out + +net ve.jog-trigger => oneshot.ve-jog.in +net ve.jog-time => oneshot.ve-jog.width +setp oneshot.ve-jog.rising 1 +setp oneshot.ve-jog.falling 1 +setp oneshot.ve-jog.retriggerable 1 +net ve.jog-active <= oneshot.ve-jog.out + +net ve.jog-continous => or2.ve-jog-enable.in0 +net ve.jog-active => or2.ve-jog-enable.in1 +net ve.jog-enable <= or2.ve-jog-enable.out + +net ve.jog-enable => mux2.ve-base-vel.sel +setp mux2.ve-base-vel.in0 0.0 +net ve.jog-velocity-signed => mux2.ve-base-vel.in1 +net ve.base-vel <= mux2.ve-base-vel.out + +net ve.jog-time-left <= oneshot.ve-jog.time-left +net ve.jog-velocity => mult2.ve-jog-dtg.in0 +net ve.jog-time-left => mult2.ve-jog-dtg.in1 +net ve.jog-dtg <= mult2.ve-jog-dtg.out + +# negative retract velocity +net ve.retract-vel => mult2.retract-vel-neg.in0 +setp mult2.retract-vel-neg.in1 -1.0 +net ve.retract-vel-neg <= mult2.retract-vel-neg.out + +# disable extruder on jog +setp reset.extruder-en1.rising 1 +setp reset.extruder-en1.falling 1 +setp reset.extruder-en1.retriggerable 1 +setp reset.extruder-en1.reset-bit 0 +net ve.jog-trigger => reset.extruder-en1.trigger +net ve.extruder-en <= reset.extruder-en1.out-bit + +setp reset.extruder-en2.rising 1 +setp reset.extruder-en2.falling 0 +setp reset.extruder-en2.retriggerable 1 +setp reset.extruder-en2.reset-bit 0 +net ve.jog-continous => reset.extruder-en2.trigger +net ve.extruder-en <= reset.extruder-en2.out-bit + +# now the solution of Andy Pugh for automatically retracting/priming +#00 = motion without extrusion / extruder jogging +#01 = retract +#10 = motion with extrusion +#11 = pre-charge +net ve.base-vel => mux4.ve.in0 +net ve.retract-vel-neg => mux4.ve.in1 +net ve.extrude-rate-adj => mux4.ve.in2 +net ve.retract-vel => mux4.ve.in3 +net ve.extrude-vel <= mux4.ve.out + +# calculate retract time +net ve.retract-len => div2.retract-time.in0 +net ve.retract-vel => div2.retract-time.in1 +net ve.retract-time <= div2.retract-time.out + +# We want the retract-charge to run for a fixed time: +# when sel0 set to "1" meaning motion with extrusion" the on the rising edge +# there will temporarily be also sel1 which is high, meaning a pre-charge because the +# sel combination is 11 +# when sel1 set to "0" meaning decoupling motion with extrusion" then the falling edge +# will trigger a 01 combination, meaning a retract +net ve.extruder-en => oneshot.retract.in mux4.ve.sel1 +net ve.retract oneshot.retract.out => mux4.ve.sel0 motion.feed-hold +# trigger a retract/unretract move when extruder is enable or disabled +setp oneshot.retract.rising 1 +setp oneshot.retract.falling 1 +setp oneshot.retract.retriggerable 1 +#by setting the width, the automatic retract/precharge can be disabled +net ve.retract-time => oneshot.retract.width + +net ve.extrude-vel => hpg.stepgen.03.velocity-cmd +sets ve.retract-len [EXTRUDER_0]RETRACT_LEN +sets ve.retract-vel [EXTRUDER_0]RETRACT_VEL +sets ve.filament-dia [EXTRUDER_0]FILAMENT_DIA +sets ve.extrude-accel-adj-gain 0.1 +sets ve.extrude-scale 1.0 + +# timing parameters +# Velocity control mode +setp hpg.stepgen.03.control-type 1 +setp hpg.stepgen.03.dirsetup [AXIS_3]DIRSETUP +setp hpg.stepgen.03.dirhold [AXIS_3]DIRHOLD + +setp hpg.stepgen.03.steplen [AXIS_3]STEPLEN +setp hpg.stepgen.03.stepspace [AXIS_3]STEPSPACE + +setp hpg.stepgen.03.position-scale [AXIS_3]SCALE + +setp hpg.stepgen.03.maxvel [AXIS_3]STEPGEN_MAX_VEL +setp hpg.stepgen.03.maxaccel [AXIS_3]STEPGEN_MAX_ACC + +setp hpg.stepgen.03.steppin [AXIS_3]STEPPIN +setp hpg.stepgen.03.dirpin [AXIS_3]DIRPIN + + +# ################################################## +# Standard I/O - EStop, Enables, Limit Switches, Etc +# ################################################## + +# create signals for tool loading loopback +net tool-prep-loop iocontrol.0.tool-prepare => iocontrol.0.tool-prepared +net tool-change-loop iocontrol.0.tool-change => iocontrol.0.tool-changed + +# Machine power +net main_enable <= axis.0.amp-enable-out => HwConfig.enable => Pwm.enable + +# Microstepping and Mode +# value = 1/2^value. e.g. 5 means 1/32 microstepping. +setp HwConfig.stepper.0.microstepping 5 +setp HwConfig.stepper.1.microstepping 5 +setp HwConfig.stepper.2.microstepping 5 +setp HwConfig.stepper.3.microstepping 5 +setp HwConfig.stepper.4.microstepping 5 +setp HwConfig.stepper.0.current 1.8 +setp HwConfig.stepper.1.current 1.8 +setp HwConfig.stepper.2.current 1.2 +setp HwConfig.stepper.3.current 1.2 +setp HwConfig.stepper.4.current 1.8 + +# FAN_1 = Pwm.8.out +# System Fan at FAN_1 +# FAN_3 = Pwm.10.out +# Extruder Fan at FAN_3 +setp mux2.system-fan.in1 1 +setp mux2.system-fan.in0 0 +net main_enable => mux2.system-fan.sel +net system-fan.pwm <= mux2.system-fan.out => Pwm.8.out +# => Pwm.10.out + +# FAN_2 = Pwm.9.out + +# ################ +# Limit Switches +# ################ +newsig limit-x-min bit +newsig limit-x-max bit +newsig limit-y-min bit +newsig limit-y-max bit +newsig limit-z-min bit +newsig limit-z-max bit + +net limit-x-min <= bb_gpio.p9.in-25 +net limit-x-max <= bb_gpio.p9.in-11 +net limit-y-min <= bb_gpio.p9.in-23 +net limit-y-max <= bb_gpio.p9.in-16 +net limit-z-min <= bb_gpio.p9.in-13 +net limit-z-max <= bb_gpio.p9.in-18 + +# Adjust as needed for your switch polarity +# setp bb_gpio.p8.in-08.invert 0 + +# Uncomment if you actually have limit switches setup +# You probably want to setup homing in the INI file, as well +net limit-x-min => axis.0.home-sw-in +net limit-x-min => axis.0.neg-lim-sw-in +#net limit-x-max => axis.0.pos-lim-sw-in +net limit-y-max => axis.1.home-sw-in +#net limit-y-min => axis.1.neg-lim-sw-in +net limit-y-max => axis.1.pos-lim-sw-in +net limit-z-max => axis.2.home-sw-in +#net limit-z-min => axis.2.neg-lim-sw-in +net limit-z-max => axis.2.pos-lim-sw-in + +# ################################################## +# PWM and Temperature Signals +# ################################################## + +# Extruder 0 temperature control +# -------------------------------------------------------------------------- +newsig e0.temp.set float +newsig e0.temp.meas float +newsig e0.temp.range.pos_error float +newsig e0.temp.range.neg_error float +newsig e0.temp.range.max float +newsig e0.temp.range.min float +newsig e0.temp.in-range bit +newsig e0.temp.pwm float +newsig e0.temp.pwm.max float +newsig e0.temp.limit.min float +newsig e0.temp.limit.max float +newsig e0.temp.standby float +newsig e0.temp.in-limit bit +newsig e0.therm-ok bit +newsig e0.no-error bit +newsig e0.error bit +newsig e0.active bit + +net e0.temp.meas <= Therm.ch-04.value + +# PID +net main_enable => pid.e0-temp.enable +net e0.temp.meas => pid.e0-temp.feedback +net e0.temp.set => pid.e0-temp.command +net e0.heater <= pid.e0-temp.output +net e0.heater => limit1.e0-heater.in +net e0.heaterl <= limit1.e0-heater.out + +# Limit heater PWM to positive values +# PWM mimics hm2 implementation, which generates output for negative values +setp limit1.e0-heater.min 0.0 +setp limit1.e0-heater.max 1.0 +net e0.temp.pwm.max => pid.e0-temp.maxoutput +sets e0.temp.pwm.max [EXTRUDER_0]PWM_MAX + +# Temperature checking +net e0.temp.set => sum2.e0-temp-range-pos.in0 +net e0.temp.range.pos_error => sum2.e0-temp-range-pos.in1 +net e0.temp.set => sum2.e0-temp-range-neg.in0 +net e0.temp.range.neg_error => sum2.e0-temp-range-neg.in1 + +net e0.temp.range.min sum2.e0-temp-range-neg.out => wcomp.e0-temp-range.min +net e0.temp.range.max sum2.e0-temp-range-pos.out => wcomp.e0-temp-range.max +net e0.temp.meas => wcomp.e0-temp-range.in +#the output of wcomp.e0-temp-range will say if measured temperature is in range of set value +#this needs to be coupled to a digital input for M66 readout +net e0.temp.in-range <= wcomp.e0-temp-range.out + +# limit the output temperature to prevent damage when thermistor is broken/removed +net e0.temp.limit.min => wcomp.e0-temp-limit.min +net e0.temp.limit.max => wcomp.e0-temp-limit.max +net e0.temp.meas => wcomp.e0-temp-limit.in +net e0.temp.in-limit <= wcomp.e0-temp-limit.out + +# check the thermistor +net e0.temp.meas => thermistor-check.e0.temp +net e0.temp.in-range => not.e0-temp-range.in +net e0.temp.in-range_n <= not.e0-temp-range.out +net e0.temp.in-range_n => thermistor-check.e0.enable +net e0.heaterl => thermistor-check.e0.pid +net e0.therm-ok <= thermistor-check.e0.no-error + +# no error chain +net e0.therm-ok => and2.e0-no-error.in-00 +net e0.temp.in-limit => and2.e0-no-error.in-01 +net e0.no-error <= and2.e0-no-error.and +net e0.no-error => not.e0-error.in +net e0.error <= not.e0-error.out + +# PID control linking +net e0.pid.Pgain fdm-e0-pid.Pgain <=> pid.e0-temp.Pgain +net e0.pid.Igain fdm-e0-pid.Igain <=> pid.e0-temp.Igain +net e0.pid.Dgain fdm-e0-pid.Dgain <=> pid.e0-temp.Dgain +net e0.pid.maxerrorI fdm-e0-pid.maxerrorI <=> pid.e0-temp.maxerrorI +net e0.temp.limit.min => fdm-e0-pid.min +net e0.temp.limit.max => fdm-e0-pid.max +net e0.temp.set <=> fdm-e0-pid.command +net e0.temp.meas => fdm-e0-pid.feedback +net e0.heater => fdm-e0-pid.output + +# PID parameters +sets e0.pid.Pgain [EXTRUDER_0]PID_PGAIN +sets e0.pid.Igain [EXTRUDER_0]PID_IGAIN +sets e0.pid.Dgain [EXTRUDER_0]PID_DGAIN +# sets e0.pid.maxerrorI [EXTRUDER_0]PID_MAXERRORI + +# Parameters +sets e0.temp.range.pos_error [EXTRUDER_0]TEMP_RANGE_POS_ERROR +sets e0.temp.range.neg_error [EXTRUDER_0]TEMP_RANGE_NEG_ERROR +sets e0.temp.limit.min [EXTRUDER_0]TEMP_LIMIT_MIN +sets e0.temp.limit.max [EXTRUDER_0]TEMP_LIMIT_MAX +sets e0.temp.standby [EXTRUDER_0]TEMP_STANDBY + +# Thermistor checking +setp thermistor-check.e0.wait 9.0 +setp thermistor-check.e0.min-pid 1.5 # disable0.25 +setp thermistor-check.e0.min-temp 1.5 +net e0.pid.bias => thermistor-check.e0.bias + +# Output pin +net e0.heaterl => Pwm.5.out +net e0.active <= Pwm.5.on + +# Bed temperature control +# ---------------------------------------------------------------------------- +newsig hbp.temp.set float +newsig hbp.temp.meas float +newsig hbp.temp.range.pos_error float +newsig hbp.temp.range.neg_error float +newsig hbp.temp.range.max float +newsig hbp.temp.range.min float +newsig hbp.temp.in-range bit +newsig hbp.temp.pwm float +newsig hbp.temp.pwm.max float +newsig hbp.temp.limit.min float +newsig hbp.temp.limit.max float +newsig hbp.temp.standby float +newsig hbp.temp.in-limit bit +newsig hbp.therm-ok bit +newsig hbp.no-error bit +newsig hbp.error bit +newsig hbp.active bit + +net hbp.temp.meas <= Therm.ch-06.value + +# PID +net main_enable => pid.hbp-temp.enable +net hbp.temp.meas => pid.hbp-temp.feedback +net hbp.temp.set => pid.hbp-temp.command +net hbp.heater <= pid.hbp-temp.output +net hbp.heater => limit1.hbp-heater.in +net hbp.heaterl <= limit1.hbp-heater.out + +# Limit heater PWM to positive values +# PWM mimics hm2 implementation, which generates output for negative values +setp limit1.hbp-heater.min 0 +setp limit1.hbp-heater.max [HBP]PWM_MAX +net hbp.temp.pwm.max => pid.hbp-temp.maxoutput +sets hbp.temp.pwm.max [HBP]PWM_MAX + +# Temperature checking +net hbp.temp.set => sum2.hbp-temp-range-pos.in0 +net hbp.temp.range.pos_error => sum2.hbp-temp-range-pos.in1 +net hbp.temp.set => sum2.hbp-temp-range-neg.in0 +net hbp.temp.range.neg_error => sum2.hbp-temp-range-neg.in1 + +net hbp.temp.range.min sum2.hbp-temp-range-neg.out => wcomp.hbp-temp-range.min +net hbp.temp.range.max sum2.hbp-temp-range-pos.out => wcomp.hbp-temp-range.max +net hbp.temp.meas => wcomp.hbp-temp-range.in +#the output of wcomp.e0-temp-range will say if measured temperature is in range of set value +#this needs to be coupled to a digital input for M66 readout +net hbp.temp.in-range <= wcomp.hbp-temp-range.out + +# limit the output temperature to prevent damage when thermistor is broken/removed +net hbp.temp.limit.min => wcomp.hbp-temp-limit.min +net hbp.temp.limit.max => wcomp.hbp-temp-limit.max +net hbp.temp.meas => wcomp.hbp-temp-limit.in +net hbp.temp.in-limit <= wcomp.hbp-temp-limit.out + +# check the thermistor +net hbp.temp.meas => thermistor-check.hbp.temp +net hbp.temp.in-range => not.hbp-temp-range.in +net hbp.temp.in-range_n <= not.hbp-temp-range.out +net hbp.temp.in-range_n => thermistor-check.hbp.enable +net hbp.heaterl => thermistor-check.hbp.pid +net hbp.therm-ok <= thermistor-check.hbp.no-error + +# no error chain +net hbp.therm-ok => and2.hbp-no-error.in-00 +net hbp.temp.in-limit => and2.hbp-no-error.in-01 +net hbp.no-error <= and2.hbp-no-error.and +net hbp.no-error => not.hbp-error.in +net hbp.error <= not.hbp-error.out + +# PID parameters +#setp pid.hbp-temp.FF0 0 +#setp pid.hbp-temp.FF1 0 +#setp pid.hbp-temp.FF2 0 +setp pid.hbp-temp.Pgain [HBP]PID_PGAIN +setp pid.hbp-temp.Igain [HBP]PID_IGAIN +setp pid.hbp-temp.Dgain [HBP]PID_DGAIN +# setp pid.hbp-temp.maxerrorI [HBP]PID_MAXERRORI +setp pid.hbp-temp.bias [HBP]PID_BIAS + +# Parameters +sets hbp.temp.range.pos_error [HBP]TEMP_RANGE_POS_ERROR +sets hbp.temp.range.neg_error [HBP]TEMP_RANGE_NEG_ERROR +sets hbp.temp.limit.min [HBP]TEMP_LIMIT_MIN +sets hbp.temp.limit.max [HBP]TEMP_LIMIT_MAX +sets hbp.temp.standby [HBP]TEMP_STANDBY + +# Thermistor checking +setp thermistor-check.hbp.wait 30.0 +setp thermistor-check.hbp.min-pid 1.1 # disable +setp thermistor-check.hbp.min-temp 1.5 + +# Output pin +net hbp.heaterl => Pwm.4.out +net hbp.active <= Pwm.4.on + +# ################################################## +# Motion AIO and DIO +# ################################################## + +net hbp.temp.set <= motion.analog-out-io-00 +net e0.temp.set <= motion.analog-out-io-02 + +net ve.cross-section <= motion.analog-out-41 +net ve.filament-dia <= motion.analog-out-io-44 +net ve.jog-velocity <= motion.analog-out-io-45 +net ve.jog-distance <= motion.analog-out-io-46 + +net probe.enable <= motion.digital-out-00 +net ve.extruder-en <= motion.digital-out-io-01 +net ve.jog-trigger <= motion.digital-out-io-02 + +net hbp.temp.meas => motion.analog-in-00 +net e0.temp.meas => motion.analog-in-02 + +net hbp.temp.in-range => motion.digital-in-00 +net e0.temp.in-range => motion.digital-in-02 +net ve.jog-trigger => motion.digital-in-12 + +# ################################################## +# UI linking +# ################################################## + +net hbp.temp.meas => fdm-hbp.temp.meas +net hbp.temp.set <=> fdm-hbp.temp.set +net hbp.temp.standby => fdm-hbp.temp.standby +net hbp.temp.limit.min => fdm-hbp.temp.limit.min +net hbp.temp.limit.max => fdm-hbp.temp.limit.max +net hbp.temp.in-range => fdm-hbp.temp.in-range +net hbp.error => fdm-hbp.error +net hbp.active => fdm-hbp.active +net e0.temp.meas => fdm-e0.temp.meas +net e0.temp.set <=> fdm-e0.temp.set +net e0.temp.standby => fdm-e0.temp.standby +net e0.temp.limit.min => fdm-e0.temp.limit.min +net e0.temp.limit.max => fdm-e0.temp.limit.max +net e0.temp.in-range => fdm-e0.temp.in-range +net e0.error => fdm-e0.error +net e0.active => fdm-e0.active + +net ve.jog-trigger <=> fdm-ve-jog.trigger +net ve.jog-continous <= fdm-ve-jog.continous +net ve.jog-velocity <=> fdm-ve-jog.velocity +net ve.jog-distance <=> fdm-ve-jog.distance +net ve.jog-direction <=> fdm-ve-jog.direction +net ve.jog-dtg => fdm-ve-jog.dtg +sets ve.jog-velocity [TRAJ]DEFAULT_ANGULAR_VELOCITY +setp fdm-ve-jog.max-velocity [AXIS_3]MAX_VELOCITY +net ve.filament-dia <=> fdm-ve-params.filament-dia +net ve.retract-vel <=> fdm-ve-params.retract-vel +net ve.retract-len <=> fdm-ve-params.retract-len +net ve.extrude-scale <=> fdm-ve-params.extrude-scale +net ve.extrude-accel-adj-gain <=> fdm-ve-params.accel-adj-gain + + +# ################################################## +# Watchdog & EStop +# ################################################## + +setp watchdog.timeout-0 0.2 +setp watchdog.timeout-1 0.2 +setp watchdog.timeout-2 0.2 +net hwconfig-watchdog <= HwConfig.watchdog => watchdog.input-0 +net pwm-watchdog <= Pwm.watchdog => watchdog.input-1 +net therm-watchdog <= Therm.watchdog => watchdog.input-2 + +net temp-ok <= Therm.no-error => estopchain.in-00 +net e0.no-error => estopchain.in-01 +net hbp.no-error => estopchain.in-02 +#net driver.x.fault => estopchain.in-03 <= bb_gpio.p8.in-10 +#net driver.y.fault => estopchain.in-04 <= bb_gpio.p8.in-09 +#net driver.z.fault => estopchain.in-05 <= bb_gpio.p9.in-24 +#net driver.e0.fault => estopchain.in-06 <= bb_gpio.p8.in-18 + +net estop-loop <= estopchain.and => iocontrol.0.emc-enable-in + +# start haltalk server +loadusr -W haltalk + diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/replicape.ini b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/replicape.ini new file mode 100755 index 0000000000..e9c3a04e66 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/replicape.ini @@ -0,0 +1,369 @@ +[PRUCONF] +DRIVER=hal_pru_generic +CONFIG=pru=0 num_stepgens=4 num_pwmgens=0 +PRUBIN=xenomai/pru_generic.bin + +[EMC] +# Name of machine, for use with display, etc. +MACHINE = Replicape + +# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others +#DEBUG = 0x00000003 +#DEBUG = 0x00000007 +DEBUG = 0 + +[DISPLAY] +# Name of display program, e.g., tkemc +DISPLAY = mkwrapper + +# Touchy currently won't work without some hardware buttons/jog-wheel +#DISPLAY = touchy + +# Cycle time, in seconds, that display will sleep between polls +CYCLE_TIME = 0.100 + +# Path to help file +HELP_FILE = tklinucnc.txt + +# Initial display setting for position, RELATIVE or MACHINE +POSITION_OFFSET = RELATIVE + +# Initial display setting for position, COMMANDED or ACTUAL +POSITION_FEEDBACK = ACTUAL + +# Highest value that will be allowed for feed override, 1.0 = 100% +MAX_FEED_OVERRIDE = 2.0 + +# Prefix to be used +PROGRAM_PREFIX = /home/sam/linuxcnc/nc_files + +# Introductory graphic +INTRO_GRAPHIC = machinekit.gif +INTRO_TIME = 5 + +# Increments for the JOG section +INCREMENTS = 10 1 0.1 0.01 + +[FILTER] +PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image +PROGRAM_EXTENSION = .py Python Script +png = image-to-gcode +gif = image-to-gcode +jpg = image-to-gcode +py = python + + +[TASK] +# Name of task controller program, e.g., milltask +TASK = milltask +# Cycle time, in seconds, that task controller will sleep between polls +CYCLE_TIME = 0.010 + + +[RS274NGC] + +# File containing interpreter variables +PARAMETER_FILE = pru-stepper.var +SUBROUTINE_PATH = /home/sam/linuxcnc/subroutines + +# remapping Machinekit FDM GCodes +REMAP=G22 modalgroup=1 ngc=g22 +REMAP=G23 modalgroup=1 ngc=g23 +REMAP=G28 modalgroup=1 argspec=xyza ngc=g28 +REMAP=G29 modalgroup=1 ngc=g29 +REMAP=G29.1 modalgroup=1 argspec=xyz ngc=g29_1 +REMAP=G29.2 modalgroup=1 argspec=xyz ngc=g29_2 +REMAP=G30 modalgroup=1 argspec=pxy ngc=g30 +REMAP=M104 modalgroup=10 argspec=iPt ngc=m104 +REMAP=M106 modalgroup=10 argspec=iPt ngc=m106 +REMAP=M107 modalgroup=10 argspec=it ngc=m107 +REMAP=M109 modalgroup=10 argspec=tP ngc=m109 +REMAP=M140 modalgroup=10 argspec=iP ngc=m140 +REMAP=M141 modalgroup=10 argspec=iP ngc=m141 +REMAP=M190 modalgroup=10 argspec=P ngc=m190 +REMAP=M191 modalgroup=10 argspec=P ngc=m191 +REMAP=M200 modalgroup=10 argspec=D ngc=m200 +REMAP=M226 modalgroup=10 ngc=m226 +REMAP=M280 modalgroup=10 argspec=itP ngc=m280 +REMAP=M300 modalgroup=10 argspec=iqP ngc=m300 +REMAP=M400 modalgroup=10 ngc=m400 +REMAP=M420 modalgroup=10 argspec=itredp ngc=m420 +REMAP=M700 modalgroup=10 argspec=iP ngc=m700 +#REMAP=M601 modalgroup=10 argspec=SP ngc=m601 + +# enable ini parameter passing +FEATURES = 4 + +[EMCMOT] +EMCMOT = motmod + +# Timeout for comm to emcmot, in seconds +COMM_TIMEOUT = 1.0 +# Interval between tries to emcmot, in seconds +COMM_WAIT = 0.010 + +# Servo task period, in nanoseconds +# SERVO_PERIOD = 1000000 +SERVO_PERIOD = 2500000 + + +[HAL] + +# The run script first uses halcmd to execute any HALFILE +# files, and then to execute any individual HALCMD commands. + +# list of hal config files to run through halcmd +# files are executed in the order in which they appear + +HALFILE = replicape.hal + +# list of halcmd commands to execute +# commands are executed in the order in which they appear +#HALCMD = save neta + +#HALUI = halui +#POSTGUI_HALFILE = 3D.postgui.hal + + +[TRAJ] + +AXES = 3 +COORDINATES = X Y Z +DEFAULT_VELOCITY = 20 +MAX_VELOCITY = 2000 +LINEAR_UNITS = mm +TIME_UNITS = s +ANGULAR_UNITS = degree +CYCLE_TIME = 0.010 + +MIN_LINEAR_VELOCITY = 5 +MAX_LINEAR_VELOCITY = 100 +DEFAULT_LINEAR_VELOCITY = 20 +MIN_ANGULAR_VELOCITY = 1 +MAX_ANGULAR_VELOCITY = 50 +DEFAULT_ANGULAR_VELOCITY = 10 + +ARC_BLEND_ENABLE = 1 +ARC_BLEND_FALLBACK_ENABLE = 0 +ARC_BLEND_OPTIMIZATION_DEPTH = 10 +ARC_BLEND_GAP_CYCLES = 4 +ARC_BLEND_RAMP_FREQ = 20 + + +[AXIS_0] + +# +# Step timing is 40 us steplen + 40 us stepspace +# That gives 80 us step period = 12.5 KHz step freq +# +# Bah, even software stepping can handle that, hm2 doesnt buy you much with +# such slow steppers. +# +# Scale is 200 steps/rev * 5 revs/inch = 1000 steps/inch +# +# This gives a maxvel of 12.5/1 = 12.5 ips +# + +TYPE = LINEAR +MAX_VELOCITY = 400.0 +MAX_ACCELERATION = 600.0 +# Set Stepgen max 20% higher than the axis +STEPGEN_MAX_VEL = 500.0 +STEPGEN_MAX_ACC = 800.0 + +BACKLASH = 0.000 + +SCALE = 91.428571 + +MIN_LIMIT = 0 +MAX_LIMIT = 193.5 + +FERROR = 1.0 +MIN_FERROR = 0.25 + +HOME = 3 +HOME_OFFSET = -0.500 +HOME_IGNORE_LIMITS = YES +HOME_USE_INDEX = NO +HOME_SEQUENCE = 1 +HOME_SEARCH_VEL = -25 +HOME_LATCH_VEL = -5 + +# these are in nanoseconds +DIRSETUP = 200 +DIRHOLD = 200 +STEPLEN = 1000 +STEPSPACE = 1000 +STEPPIN = 817 +DIRPIN = 826 + + +[AXIS_1] + +TYPE = LINEAR +MAX_VELOCITY = 400.0 +MAX_ACCELERATION = 600.0 +# Set Stepgen max 20% higher than the axis +STEPGEN_MAX_VEL = 500.0 +STEPGEN_MAX_ACC = 800.0 + +BACKLASH = 0.000 + +SCALE = 91.428571 + +MIN_LIMIT = 0 +MAX_LIMIT = 214 + +FERROR = 1.0 +MIN_FERROR = 0.25 + +HOME = 212 +HOME_OFFSET = 215.00 +HOME_IGNORE_LIMITS = YES +HOME_USE_INDEX = NO +HOME_SEQUENCE = 1 + +# Set to zero if you don't have physical home/limit switches +# Set to the desired homing and latch velocity if you have switches +# See: https://github.com/machinekit/machinekit-docs +HOME_SEARCH_VEL = 25.0 +HOME_LATCH_VEL = 5.0 + +# these are in nanoseconds +DIRSETUP = 200 +DIRHOLD = 200 +STEPLEN = 1000 +STEPSPACE = 1000 +# STEPPIN = 812 +# DIRPIN = 819 +STEPPIN = 811 +DIRPIN = 816 + + +[AXIS_2] + +TYPE = LINEAR +MAX_VELOCITY = 20 +MAX_ACCELERATION = 3000.0 +# Set Stepgen max 20% higher than the axis +STEPGEN_MAX_VEL = 25.0 +STEPGEN_MAX_ACC = 3600.0 + +BACKLASH = 0.000 + +SCALE = -1280 + +MIN_LIMIT = 0.0 +MAX_LIMIT = 105 + +FERROR = 1.0 +MIN_FERROR = 0.25 + +HOME = 100.000 +HOME_OFFSET = 102.00 +HOME_IGNORE_LIMITS = YES +HOME_USE_INDEX = NO +HOME_SEQUENCE = 0 + +# Set to zero if you don't have physical home/limit switches +# Set to the desired homing and latch velocity if you have switches +# See: https://github.com/machinekit/machinekit-docs +HOME_SEARCH_VEL = 20.0 +HOME_LATCH_VEL = 5.0 + +# these are in nanoseconds +DIRSETUP = 200 +DIRHOLD = 200 +STEPLEN = 1000 +STEPSPACE = 1000 +STEPPIN = 813 +DIRPIN = 814 + + +[AXIS_3] + +TYPE = ANGULAR +MAX_VELOCITY = 80 +MAX_ACCELERATION = 3000.0 +# Set Stepgen max 20% higher than the axis +STEPGEN_MAX_VEL = 100.0 +STEPGEN_MAX_ACC = 3750.0 + +BACKLASH = 0.000 + +SCALE = 430 + +MIN_LIMIT = -2147483647 +MAX_LIMIT = 2147483647 + +FERROR = 1.0 +MIN_FERROR = 0.25 + +HOME = 0.000 +HOME_OFFSET = 0.00 +HOME_IGNORE_LIMITS = YES +HOME_USE_INDEX = NO +HOME_SEQUENCE = 0 + +# Set to zero if you don't have physical home/limit switches +# Set to the desired homing and latch velocity if you have switches +# See: https://github.com/machinekit/machinekit-docs +HOME_SEARCH_VEL = 0.0 +HOME_LATCH_VEL = 0.0 + +# these are in nanoseconds +DIRSETUP = 200 +DIRHOLD = 200 +STEPLEN = 1000 +STEPSPACE = 1000 +STEPPIN = 912 +DIRPIN = 815 + +[EMCIO] +# Name of IO controller program, e.g., io +EMCIO = io +# cycle time, in seconds +CYCLE_TIME = 0.100 +# tool table file +TOOL_TABLE = tool.tbl + +[FDM] +VELOCITY_EXTRUSION_ENABLE = 1 + +[EXTRUDER_0] +PID_PGAIN = 0.06 +PID_IGAIN = 0.0005 +PID_DGAIN = 0.3 +# PID_PGAIN = 0.11381434 +# PID_IGAIN = 0.00140295 +# PID_DGAIN = 2.30829711 +PID_MAXERRORI = 0.2 +PID_BIAS = 0.0 +PWM_MAX = 1.0 +TEMP_RANGE_POS_ERROR = 1.0 +TEMP_RANGE_NEG_ERROR = -1.0 +TEMP_LIMIT_MIN = 0.0 +TEMP_LIMIT_MAX = 300.0 +TEMP_STANDBY = 150.0 +THERMISTOR = epcos_B57560G1104 + +RETRACT_LEN = 3 +RETRACT_VEL = 60.0 + +FILAMENT_DIA = 3.05 + +FAN_BIAS = 0.56 + +[HBP] +PID_PGAIN = 0.05367 +PID_IGAIN = 0.001875 +PID_DGAIN = 0.3879 +PID_MAXERRORI = 1.0 +PID_BIAS = 0.0 +PWM_MAX = 1.0 +TEMP_RANGE_POS_ERROR = 1.0 +TEMP_RANGE_NEG_ERROR = -1.0 +TEMP_LIMIT_MIN = 0.0 +TEMP_LIMIT_MAX = 120.0 +TEMP_STANDBY = 60.0 +THERMISTOR = epcos_B57560G1104 diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/reset.comp b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/reset.comp new file mode 100644 index 0000000000..327ce73898 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/reset.comp @@ -0,0 +1,69 @@ +/****************************************************************************** + * + * Copyright (C) 2015 Alexander Rössler + * + * + * This module resets a IO signal + * + ****************************************************************************** + * + * This program 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 2 + * of the License, or (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + * + * THE AUTHORS OF THIS PROGRAM ACCEPT ABSOLUTELY NO LIABILITY FOR + * ANY HARM OR LOSS RESULTING FROM ITS USE. IT IS _EXTREMELY_ UNWISE + * TO RELY ON SOFTWARE ALONE FOR SAFETY. Any machinery capable of + * harming persons must have provisions for completely removing power + * from all motors, etc, before persons enter any danger area. All + * machinery must be designed to comply with local and national safety + * codes, and the authors of this software can not, and do not, take + * any responsibility for such compliance. + * + * This code was written as part of the LinuxCNC project. For more + * information, go to www.linuxcnc.org. + * + ******************************************************************************/ + +component reset "Resets a IO signal"; +pin in bit trigger "Trigger input"; +pin io u32 out_u32 = 0 "Unsigned 32 bit integer output value"; +pin in u32 reset_u32 = 0 "Unsigned 32 bit integer reset value"; +pin io s32 out_s32 = 0 "Signed 32 bit integer output value"; +pin in s32 reset_s32 = 0 "Signed 32 bit integer reset value"; +pin io float out_float = 0.0 "Float output value"; +pin in float reset_float = 0.0 "Float reset value"; +pin io bit out_bit = 0 "Bit integer output value"; +pin in bit reset_bit = 0 "Bit reset value"; +pin in bit retriggerable = 1 "Allow additional edges to reset"; +pin in bit rising = 1 "Trigger on rising edge"; +pin in bit falling = 0 "Trigger on falling edge"; +function _ fp "Update the output value"; +description """ +Component to reset IO signals. +"""; +license "GPL"; +variable bool last_trigger = 0; +;; +FUNCTION(_) { + if (((rising && (trigger == 1)) || (falling && (trigger == 0))) + && (trigger != last_trigger)) + { + out_u32 = reset_u32; + out_s32 = reset_s32; + out_float = reset_float; + out_bit = reset_bit; + } + last_trigger = trigger; +} diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/run.py b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/run.py new file mode 100755 index 0000000000..bd8a168428 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/run.py @@ -0,0 +1,31 @@ +#!/usr/bin/python + +import sys +import os +import subprocess +import importlib +import argparse +from time import * +from machinekit import launcher + +launcher.register_exit_handler() +#launcher.set_debug_level(5) +os.chdir(os.path.dirname(os.path.realpath(__file__))) + +try: + launcher.check_installation() + launcher.cleanup_session() + launcher.install_comp('thermistor_check.comp') + launcher.install_comp('reset.comp') + # Video Streaming: you might need to create your own config + # launcher.start_process("videoserver --ini ~/video.ini Webcam1") + # Remote Control: Get a Machineface at ARM.Replicape.A4A.vel/ + launcher.start_process("configserver -n Replicape ~/Machineface/") + launcher.start_process('linuxcnc replicape.ini') +except subprocess.CalledProcessError: + launcher.end_session() + sys.exit(1) + +while True: + sleep(1) + launcher.check_processes() diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/setup.sh b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/setup.sh new file mode 100755 index 0000000000..291cc92a01 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/setup.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +SLOTS=/sys/devices/bone_capemgr.*/slots +for DTBO in BB-BONE-REPLICAP ; do + if grep -q $DTBO $SLOTS ; then + echo $DTBO overlay found + else + echo $DTBO overlay not found + exit 1 + fi +done; + +if [ ! -r /sys/class/uio/uio0 ] ; then + echo PRU control files not found in /sys/class/uio/uio0 >&2 + exit 1; +fi + diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/thermistor_check.comp b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/thermistor_check.comp new file mode 100644 index 0000000000..7e6833107c --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/thermistor_check.comp @@ -0,0 +1,135 @@ +/****************************************************************************** + * + * Copyright (C) 2014 Alexander Rössler + * + * + * This module checks the functionality of thermistors + * + ****************************************************************************** + * + * This program 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 2 + * of the License, or (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + * + * THE AUTHORS OF THIS PROGRAM ACCEPT ABSOLUTELY NO LIABILITY FOR + * ANY HARM OR LOSS RESULTING FROM ITS USE. IT IS _EXTREMELY_ UNWISE + * TO RELY ON SOFTWARE ALONE FOR SAFETY. Any machinery capable of + * harming persons must have provisions for completely removing power + * from all motors, etc, before persons enter any danger area. All + * machinery must be designed to comply with local and national safety + * codes, and the authors of this software can not, and do not, take + * any responsibility for such compliance. + * + * This code was written as part of the LinuxCNC project. For more + * information, go to www.linuxcnc.org. + * + ******************************************************************************/ + +component thermistor_check "LinuxCNC HAL component for checking functionality of thermistors"; +pin in float temp "Temperature input"; +pin in float min_temp "The minimum temperature change that should count"; +pin in float pid "Output of PID control"; +pin in float min_pid "The minimum PID control output to react to"; +pin in float bias "Bias for the PID input. Can be used to correct errors due to cooling."; +pin in float wait "Time to wait before triggering an error in secods"; +pin in bit enable "Enables or disables the component, out is TRUE when disabled"; +pin out bit no_error "Output value -> TRUE when the thermistor works as exspected"; +pin out bit error "Error value -> FALSE when the thermistor works as exspected"; +function _ fp "Update the output value"; +description """ +Component for checking functionality of thermistors +.LP +TODO +"""; +license "GPL"; +variable float last_temp = 0.0; +variable bool last_enable = 0; +variable float oldwait = 0.0; +variable int t_secs = 0; +variable int t_nsecs = 0; +variable int c_secs = 0; +variable int c_nsecs = 0; +variable bool start = 0; +;; +FUNCTION(_) { + bool active; + float temp_change; + float time; + + if (wait != oldwait) + { + time = wait; + if (time < 0) time = 0; // no negative timeout periods + // new timeout, convert to secs/ns + oldwait = time; + t_secs = time; + time -= t_secs; + t_nsecs = (1e9 * time); + + if (enable) { + // reset + start = 1; + } + } + + if ((enable) && (pid >= (min_pid+bias))) + { + if (start == 1) + { + // reset + c_secs = t_secs; + c_nsecs = t_nsecs; + last_temp = temp; + start = 0; + } + else + { + c_nsecs -= period; + if (c_nsecs < 0) + { + c_nsecs += 1000000000; + if (c_secs > 0) + { + c_secs--; + } + else + { + start = 1; // restart + } + } + + if (start == 1) + { + temp_change = temp - last_temp; + + if (temp_change >= min_temp) // correct + { + no_error = 1; + error = 0; + } + else + { + no_error = 0; + error = 1; + } + } + } + } + else + { + start = 1; + no_error = 1; + error = 0; + } +} diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/README b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/README new file mode 100644 index 0000000000..09768b8ad7 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/README @@ -0,0 +1,41 @@ +*** Analog Output + +| # | Name | +|-----------+--------------------------------| +| 0 | HBP target temperature | +| 1 | HBC target temperature | +| 2 - 11 | E0-E9 target temperature | +| 12 -15 | Fan0-Fan3 speed (M106) | +| 41 | VE line cross section | +| 44 | VE filament diameter | +| 45 | VE jog velocity | +| 46 | VE jog distance | +| 47 | VE retract length | +| 48 | VE retract velocity | +| 49 | VE extrude scale | + +*** Analog Input + +| # | Name | +|-----------+------------------------------| +| 0 | HBP measured temperature | +| 1 | HBC measured temperature | +| 2 - 11 | E0-E9 measured temperature | + + +*** Digital Output + +| # | Name | +|----+-----------------------| +| 1 | Extruder enable | +| 12 | VE jog trigger | +| 13 | VE jog continuous | +| 14 | VE jog direction | + +*** Digital Input + +| # | Name | +|--------+----------------------------| +| 0 | HBP temperature in range | +| 1 | HBC temperature in range | +| 2 - 11 | E0-E9 temperature in range | diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape.ini b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape.ini new file mode 100755 index 0000000000..80a65ad8fb --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape.ini @@ -0,0 +1,369 @@ +[FDM] +# Replicape specific section +BOARD_REV = B3A +# Comment out if this is not a Core XY +#CORE_XY = 1 +# Enable persisted system fan? Connected to the last fan port +SYSTEM_FAN = 1 +# Number of fans,must be >=1 if SYSTEM_FAN = 1 +NUM_FANS = 4 +# How many extruders? +EXTRUDERS = 1 +# Velocity extrusion mode (The only mode supported!) +VELOCITY_EXTRUSION_ENABLE = 1 + +[TRAJ] +AXES = 3 +COORDINATES = X Y Z +DEFAULT_VELOCITY = 20 +MAX_VELOCITY = 200 +# in machine units/s (mm/s) +MAX_ACCELERATION = 2000 +# in machine units/s² +# Input for pru pin minvel to avoid pru hunting (XYZ only!) +MIN_VELOCITY = 0.001 +LINEAR_UNITS = mm +TIME_UNITS = s +ANGULAR_UNITS = degree +CYCLE_TIME = 0.010 + +ARC_BLEND_ENABLE = 1 +ARC_BLEND_FALLBACK_ENABLE = 0 +ARC_BLEND_OPTIMIZATION_DEPTH = 70 +ARC_BLEND_GAP_CYCLES = 4 +ARC_BLEND_RAMP_FREQ = 20 + +[AXIS_0] +# for a delta printer, these are joint values. +# J0 = X motor = C tower in the back +# J1 = Y motor = A tower left +# J2 = Z motor = B tower right +# the limits are in joint coordinates +# different from marlin, the limits and home offsets are measured +# from the ball joints on the carriages when they are at the top (limit switch) +# position to the ball joints on the effector +# when the nozzle is at zero distance from the build plate. +TYPE = LINEAR +FERROR = 1.0 +MIN_FERROR = 0.25 + +# Replicape specific settings: +# +# Override which motor driver to use (0 to 4) +# If not specified, will use the default one +# Axis connected to motor driver 0 +# PORT = 0 +# Axis connected to motor driver 0,1 +# PORT = 0,1 +# +# Specify the motor driver current limit in Amp +# Set all motor driver current limit to 1A +# CURRENT = 1 +# Set the motor of port 1 to current limit to 0.5A +# CURRENT_PORT_1 = 0.5 +# +# The scale parameter can also be specified per port +# Might be useful for two Z axis driven but two motors +# Set scale (steps per mm) to 100 for all ports +# SCALE = 100 +# Set scale of port 1 to 200 +# SCALE_PORT_1 = 200 +CURRENT = 0.5 + +# Axis speed settings in machine units/s (=mm/s) and mm/s² +MAX_VELOCITY = 200.0 +MAX_ACCELERATION = 2400.0 + +# Steps per millimeters +SCALE = 100 + +# Axis limit +MIN_LIMIT = -1.0 +MAX_LIMIT = 438.0 + +# Homing configuration (See http://linuxcnc.org/docs/html/config/ini-homing.html) +# If switch at min. position, specify negative values for VELs parameters, +# use positive values otherwise + +# For Rev A4A, please connect the end stops to +# X1 if search direction is towards min, +# X2 if search direction is towards max. +# (Same for Y and Z) +# +# For Rev B3, always connect to X1 (as well as Y1 and Z1) regardless of the search vel. +# trigger end switch with search vel +HOME_SEARCH_VEL = 20 +# latch vel same sign as search vel: back off and trigger again with slow speed +# this is for mechanical switches. Optical detectors w/o hysteresis use opposite sign +HOME_LATCH_VEL = 1.0 +HOME_SEQUENCE = 0 +# adjust HOME_OFFSET for each joint so that nozzle touches (paper method) +# close to tower C (joint 0 = tower C in the back) +# this value is for a Kossel Mini which has a Marlin DELTA_HEIGHT ~ 248mm +HOME_OFFSET = 434.15 +#HOME for Kossel is at the top of the build space, must be lower than HOME_OFFSET for latch vel with same sign +HOME = 425 +# approach HOME with FINAL_VEL +HOME_FINAL_VEL = 40 +HOME_IGNORE_LIMITS = YES +VOLATILE_HOME = 0 +INCREMENTS = 1 10 + +[AXIS_1] +TYPE = LINEAR +FERROR = 1.0 +MIN_FERROR = 0.25 + +CURRENT = 0.5 + +MAX_VELOCITY = 200.0 +MAX_ACCELERATION = 2400.0 + +# GT2-16 Teeth (2mm per teeth) +# 16*200 steps / 16 teeth / 2 mm = 100 +SCALE = 100 + +MIN_LIMIT = 1.0 +MAX_LIMIT = 438 + +HOME_SEARCH_VEL = 20 +HOME_LATCH_VEL = 1.0 +HOME_SEQUENCE = 0 +HOME_OFFSET = 435.0 +HOME = 425 +HOME_FINAL_VEL = 40 +HOME_IGNORE_LIMITS = YES +VOLATILE_HOME = 0 +INCREMENTS = 1 10 + +[AXIS_2] +TYPE = LINEAR +FERROR = 1.0 +MIN_FERROR = 0.25 + +CURRENT = 0.5 + +MAX_VELOCITY = 200 +MAX_ACCELERATION = 2400.0 + +SCALE = 100 + +MIN_LIMIT = -1.0 +MAX_LIMIT = 438 + +HOME_SEARCH_VEL = 20 +HOME_LATCH_VEL = 1.0 +HOME_SEQUENCE = 0 +HOME_OFFSET = 434.45 +HOME = 425 +HOME_FINAL_VEL = 40 +HOME_IGNORE_LIMITS = YES +VOLATILE_HOME = 0 +# new: Z home position for delta printer in world coordinates near top +HOME_DELTA_Z = 245.0 +INCREMENTS = 1 10 + +[EXTRUDER_0] +# Steps per millimeters +SCALE = 450 + +# Retraction settings in mm and mm/s) +RETRACT_LENGHT = 3 +RETRACT_VEL = 50.0 +# Filament diameter +FILAMENT_DIA = 1.78 +# Extrusion motor port +PORT = 3 +CURRENT = 0.5 + +# PID parameters +PID_PGAIN = 0.05 +PID_IGAIN = 0.0001 +PID_DGAIN = 0.3 +PID_MAXERRORI = 1.0 +PID_BIAS = 0.33 + +# Maximum PWM output (0 to 1) +# Useful to tune down if the heater is too powerful +# or to limit the power consumption of the heated bed +PWM_MAX = 1.0 + +# "in-range" definition +TEMP_RANGE_POS_ERROR = 1.0 +TEMP_RANGE_NEG_ERROR = -1.0 + +# Temperature range (for safety checks and UI) +TEMP_LIMIT_MIN = 0.0 +TEMP_LIMIT_MAX = 280.0 + +# Default Standby temperature +TEMP_STANDBY = 150.0 + +# Thermistor (Conversion table must be defined in /usr/share/fdm/thermistor_tables) +THERMISTOR = epcos_B57560G1104 + +[EXTRUDER_1] +SCALE = 430 +RETRACT_LENGTH = 3 +RETRACT_VEL = 50.0 +PORT = 4 +CURRENT = 0.8 + +PID_PGAIN = 0.06 +PID_IGAIN = 0.0005 +PID_DGAIN = 0.3 +PID_MAXERRORI = 0.2 +PID_BIAS = 0.0 +PWM_MAX = 1.0 +TEMP_RANGE_POS_ERROR = 1.0 +TEMP_RANGE_NEG_ERROR = -1.0 +TEMP_LIMIT_MIN = -300.0 +TEMP_LIMIT_MAX = 280.0 +TEMP_STANDBY = 150.0 +THERMISTOR = epcos_B57560G1104 + +[HBP] +# Heated Bed Platform +PID_PGAIN = 0.05367 +PID_IGAIN = 0.001875 +PID_DGAIN = 0.3879 +PID_MAXERRORI = 1.0 +PID_BIAS = 0.25 +PWM_MAX = 1.0 +TEMP_RANGE_POS_ERROR = 2.0 +TEMP_RANGE_NEG_ERROR = -2.0 +TEMP_LIMIT_MIN = 0.0 +TEMP_LIMIT_MAX = 120.0 +TEMP_STANDBY = 60.0 +THERMISTOR = semitec_103GT_2 + + +#-------------------------------------------------- +# Machinekit configuration follows +# +# Integrator needs not to touch the settings below +#-------------------------------------------------- + +[EMC] +# Name of machine, for use with display, etc. +MACHINE = Replicape + +# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others +#DEBUG = 0x00000003 +#DEBUG = 0x00000007 +DEBUG = 0 + +[MACHINE] +# Machine configuration for delta printer +# when calibrating, if a move at the center (0,0) is actual +# lower than should be (moves into the bed) , then decrease +# the delta radius + +DELTA_R = 105.8 + +# now when the effector travels over the bed in a straight line +# insert a fineliner in the effector and draw a 10x10 cm square +# measure the square and decrease the rod length if the drawing is +# bigger than should be. After that do the delta radius correction +CF_ROD = 214.0 + +[DISPLAY] +DISPLAY = mkwrapper +CYCLE_TIME = 0.100 +HELP_FILE = tklinucnc.txt + +INTRO_GRAPHIC = +INTRO_TIME = 0 +POSITION_OFFSET = RELATIVE +POSITION_FEEDBACK = ACTUAL + +MAX_FEED_OVERRIDE = 2.0 +INCREMENTS = 10 3 1 + +# Folder for saving uploaded gcodes +#PROGRAM_PREFIX = /tmp/machinekit.ftp +PROGRAM_PREFIX = ~/machinekit/nc_files +[FILTER] +PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image +PROGRAM_EXTENSION = .py Python Script +png = image-to-gcode +gif = image-to-gcode +jpg = image-to-gcode +py = python +gcode = cat + +[TASK] +TASK = milltask +CYCLE_TIME = 0.010 + +[RS274NGC] +RS274NGC_STARTUP_CODE = G64 P0.001 +PARAMETER_FILE = rs274ngc.var +SUBROUTINE_PATH = local:../subroutines + +# Extruder retract +REMAP=G22 modalgroup=1 ngc=g22 +# Extruder unretract +REMAP=G23 modalgroup=1 ngc=g23 + +# homing, probing etc. +REMAP=G28 modalgroup=1 argspec=xyza ngc=g28 +REMAP=G29 modalgroup=1 ngc=g29 +REMAP=G29.1 modalgroup=1 argspec=xyz ngc=g29_1 +REMAP=G29.2 modalgroup=1 argspec=xyz ngc=g29_2 +REMAP=G30 modalgroup=1 argspec=pxy ngc=g30 +REMAP=M207 modalgroup=10 argspec=PQ ngc=m207 +REMAP=M221 modalgroup=10 argspec=P ngc=m221 +REMAP=M226 modalgroup=10 ngc=m226 +REMAP=M300 modalgroup=10 argspec=iqP ngc=m300 +REMAP=M420 modalgroup=10 argspec=itredp ngc=m420 + +# Temperature management +REMAP=M104 modalgroup=10 argspec=iPt ngc=m104 +REMAP=M109 modalgroup=10 argspec=tP ngc=m109 +REMAP=M140 modalgroup=10 argspec=iP ngc=m140 +REMAP=M141 modalgroup=10 argspec=iP ngc=m141 +REMAP=M190 modalgroup=10 argspec=P ngc=m190 +REMAP=M191 modalgroup=10 argspec=P ngc=m191 + +# Fan +REMAP=M106 modalgroup=10 argspec=iPt ngc=m106 +REMAP=M107 modalgroup=10 argspec=it ngc=m107 + +# Filament diameter, cross section +REMAP=M200 modalgroup=10 argspec=D ngc=m200 +REMAP=M700 modalgroup=10 argspec=iP ngc=m700 +REMAP=M701 modalgroup=10 argspec=iP ngc=m701 +REMAP=M702 modalgroup=10 argspec=iP ngc=m702 +REMAP=M710 modalgroup=10 argspec=epq ngc=m710 + +# TODO: Servo +REMAP=M280 modalgroup=10 argspec=itP ngc=m280 + +REMAP=M6 modalgroup=6 ngc=tool-change + +# Pause (G4 P0) +REMAP=M400 modalgroup=10 ngc=m400 + +# enable ini parameter passing +FEATURES = 4 + +[EMCMOT] +EMCMOT = motmod +COMM_TIMEOUT = 1.0 +COMM_WAIT = 0.010 +SERVO_PERIOD = 1000000 + +[HAL] +HALFILE = replicape.py +HALUI = halui + +[HALUI] + +[EMCIO] +EMCIO = io +CYCLE_TIME = 0.100 +TOOL_TABLE = tool.tbl +TOOL_CHANGE_AT_G30 = 0 +TOOL_CHANGE_QUILL_UP = 0 + diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape.py b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape.py new file mode 100644 index 0000000000..76a82dfa90 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape.py @@ -0,0 +1,26 @@ +#!/usr/bin/python2 +# encoding: utf-8 + +""" +replicape.py + +Machinekit HAL for Replicape Rev B3 + +Copyright (c) 2016 Sam Wong +Adaptation to Debian Stretch and kernel 4.14.x, extensions as in README.md: +Copyright (c) Karl Jacobs + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +""" + +from replicape import base +from machinekit import hal + +base.init_hardware() + +hal.loadusr('haltalk', wait=True) + diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/__init__.py b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/__init__.py new file mode 100644 index 0000000000..6a4948a588 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/__init__.py @@ -0,0 +1,13 @@ +""" +replicape modules + +Machinekit HAL for Replicape Rev B3 + +Copyright (c) 2016 Sam Wong + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +""" diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/base.py b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/base.py new file mode 100644 index 0000000000..15ba85bf2a --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/base.py @@ -0,0 +1,443 @@ +#!/usr/bin/python2 +# encoding: utf-8 + +import os +import subprocess +from machinekit import rtapi as rtapi +from machinekit import hal +from machinekit import config + +import hardware +from temperature import ExtruderTemperature, HbpTemperature +import re +from extrusion import Extruder + +SERVO_THREAD = 'servo-thread' +HARDWARE_PATH = os.path.dirname(os.path.realpath(__file__)) + '/' +BOARD_REV = '' +AXIS_TOTAL = 0 +NUM_FANS = 0 +FAN_IO_START = 12 +EXTRUDER_TOTAL = 1 +DEFAULT_CURRENT = 0.5 + +def check_version(): + global BOARD_REV +# we use a 4.14.18-ti-rt-r33 kernel and have enable_uboot_overlays=1 +# in /boot/uEnv.txt +# u-boot overlays do not use the slots file, so we take the board +# version from the INI file +# is there any way to find not just the loaded cape name, but also +# its version (short of reading the cape eeprom)? +# we check in /sys/proc/cmdline for the REPLICAPE cape +# +# with open('/sys/devices/platform/bone_capemgr/slots', 'r') as file: +# content = file.read() + content = subprocess.check_output(['cat','/proc/cmdline']) + if re.search('capes=BB-BONE-REPLICAP', content) is None: + raise RuntimeError('Replicape not found. Is the cape mounted?') + + content = config.find('FDM','BOARD_REV') + if (content is not None) and (content in ['B3A', 'A4A']): + BOARD_REV = content + else: + raise RuntimeError('BOARD_REV not set in ini file. Set to B3A or A4A!') + +def setup_enable_chain(): + """ + Create enable and enable_inv signal for the system + """ + main_enable = hal.net('main-enable', 'axis.0.amp-enable-out') + + n = rtapi.newinst('not', 'main-enable.not') + hal.addf(n.name, SERVO_THREAD) + + main_enable_inv = hal.newsig('main-enable-inv', hal.HAL_BIT) + n.pin('in').link('main-enable') + n.pin('out').link('main-enable-inv') + + return (main_enable, main_enable_inv) + +def setup_joints(): + """ + Create joints commands and feedbacks signal for the system + """ + commands = [None] * AXIS_TOTAL + feedbacks = [None] * AXIS_TOTAL + for i in xrange(AXIS_TOTAL): + commands[i] = hal.newsig('machine.joint.%d.command' % i, hal.HAL_FLOAT) + feedbacks[i] = hal.newsig('machine.joint.%d.feedback' % i, hal.HAL_FLOAT) + + core_xy = config.find('FDM','CORE_XY') + if core_xy is not None and int(core_xy) > 0: + sum_cmd_a = rtapi.newinst('sum2', 'corexy.sum2.cmd.a') + sum_fb_x = rtapi.newinst('sum2', 'corexy.sum2.fb.x') + sum_cmd_b = rtapi.newinst('sum2', 'corexy.sum2.cmd.b') + sum_fb_y = rtapi.newinst('sum2', 'corexy.sum2.fb.y') + hal.addf(sum_cmd_a.name, SERVO_THREAD) + hal.addf(sum_cmd_b.name, SERVO_THREAD) + hal.addf(sum_fb_x.name, SERVO_THREAD) + hal.addf(sum_fb_y.name, SERVO_THREAD) + + sum_cmd_a.pin('gain0').set(1) + sum_cmd_a.pin('gain1').set(1) + sum_cmd_b.pin('gain0').set(1) + sum_cmd_b.pin('gain1').set(-1) + + sum_fb_x.pin('gain0').set(0.5) + sum_fb_x.pin('gain1').set(0.5) + sum_fb_y.pin('gain0').set(0.5) + sum_fb_y.pin('gain1').set(-0.5) + + corex_cmd = hal.newsig('machine.joint.corex.command', hal.HAL_FLOAT) + corey_cmd = hal.newsig('machine.joint.corey.command', hal.HAL_FLOAT) + + corex_cmd.link('axis.0.motor-pos-cmd') + corey_cmd.link('axis.1.motor-pos-cmd') + + sum_cmd_a.pin('in0').link(corex_cmd) + sum_cmd_a.pin('in1').link(corey_cmd) + sum_cmd_b.pin('in0').link(corex_cmd) + sum_cmd_b.pin('in1').link(corey_cmd) + sum_cmd_a.pin('out').link(commands[0]) + sum_cmd_b.pin('out').link(commands[1]) + + sum_fb_x.pin('in0').link(feedbacks[0]) + sum_fb_x.pin('in1').link(feedbacks[1]) + sum_fb_y.pin('in0').link(feedbacks[0]) + sum_fb_y.pin('in1').link(feedbacks[1]) + sum_fb_x.pin('out').link('axis.0.motor-pos-fb') + sum_fb_y.pin('out').link('axis.1.motor-pos-fb') + else: + commands[0].link('axis.0.motor-pos-cmd') + feedbacks[0].link('axis.0.motor-pos-fb') + commands[1].link('axis.1.motor-pos-cmd') + feedbacks[1].link('axis.1.motor-pos-fb') + + for i in xrange(AXIS_TOTAL): + if i >= 2: + commands[i].link('axis.%d.motor-pos-cmd' % i) + feedbacks[i].link('axis.%d.motor-pos-fb' % i) + + return (commands, feedbacks) + +def setup_axis(replicape, command, feedback, nr): + section = 'AXIS_%d' % nr + port_str = config.find(section, 'PORT', str(nr)) + ports = re.split('\s*,\s*', port_str) + + replicape.get_pru_pin('%s.position-fb' % replicape.get_stepgen(ports[0])).link(feedback) + for port in ports: + sg = replicape.get_stepgen(port) + replicape.get_pru_pin('%s.position-cmd' % (sg)).link(command) + replicape.get_pru_pin('%s.position-scale' % (sg)) \ + .set(float( + config.find(section, 'SCALE_PORT_%s' % port, config.find(section, 'SCALE', 'SCALE must be defined')) + )) + replicape.get_pru_pin('%s.enable' % (sg)).link('main-enable') + replicape.set_motor_current( + replicape.get_motor_port(port), + float( + config.find(section, 'CURRENT_PORT_%s' % port, config.find(section, 'CURRENT', DEFAULT_CURRENT)) + )) + +def setup_extruder(replicape, extruder, nr): + section = 'EXTRUDER_%d' % nr + port_str = str(config.find(section, 'PORT', str(nr + 3))) # Extruder starts at port 3, after XYZ + ports = re.split('\s*,\s*', port_str) + + for port in ports: + sg = replicape.get_stepgen(port) + replicape.get_pru_pin('%s.control-type' % (sg)).set(1) + replicape.get_pru_pin('%s.velocity-cmd' % (sg)).link(extruder.extrude_vel_sig) + replicape.get_pru_pin('%s.position-scale' % (sg)) \ + .set(float( + config.find(section, 'SCALE_PORT_%s' % port, config.find(section, 'SCALE', 'SCALE must be defined')) + )) + replicape.get_pru_pin('%s.enable' % (sg)).link('main-enable') + replicape.set_motor_current( + replicape.get_motor_port(port), + float( + config.find(section, 'CURRENT_PORT_%s' % port, config.find(section, 'CURRENT', DEFAULT_CURRENT)) + )) + +def setup_extruders(replicape, extruder_sel_sig): + motion_vel_sig = hal.newsig('ve-motion-vel', hal.HAL_FLOAT) + motion_vel_sig.link('motion.current-vel') + + extruders = [None] * EXTRUDER_TOTAL + for i in xrange(EXTRUDER_TOTAL): + extruders[i] = Extruder(i, motion_vel_sig, config) + setup_extruder(replicape, extruders[i], i) + + shared_signals = [ + # Shared Signal Type Attribute fdm-ve-jog fdm-ve-params analog- or digital-io + ('enable', hal.HAL_BIT, 'enable_sig', None, None, 1), + ('cross-section', hal.HAL_FLOAT, 'cross_section_sig', None, None, 41), + ('jog-vel', hal.HAL_FLOAT, 'jog_vel_sig', 'velocity', None, 45), + ('jog-direction', hal.HAL_BIT, 'jog_direction_sig', 'direction', None, 14), + ('jog-distance', hal.HAL_FLOAT, 'jog_distance_sig', 'distance', None, 46), + ('jog-trigger', hal.HAL_BIT, 'jog_trigger_sig', 'trigger', None, 12), + ('jog-continuous',hal.HAL_BIT, 'jog_continuous_sig','continuous', None, 13), + ('jog-dtg', hal.HAL_FLOAT, 'jog_dtg_sig', 'dtg', None, None), + ('max-jog-vel', hal.HAL_FLOAT, 'max_jog_vel_sig', 'max-velocity',None, None), + ('filament-dia', hal.HAL_FLOAT, 'filament_dia_sig', None, 'filament-dia', 44), + ('extrude-scale', hal.HAL_FLOAT, 'extrude_scale_sig', None, 'extrude-scale', 49), + ('accel-gain', hal.HAL_FLOAT, 'accel_gain_sig', None, 'accel-adj-gain', None), + ('retract-vel', hal.HAL_FLOAT, 'retract_vel_sig', None, 'retract-vel', 48), + ('retract-len', hal.HAL_FLOAT, 'retract_len_sig', None, 'retract-len', 47), + + ('extrude-vel', hal.HAL_FLOAT, 'extrude_vel_sig', None, None, None), + ('retracting', hal.HAL_BIT , 'retracting_sig', None, None, None), + ] + + comp_jog = hal.RemoteComponent('fdm-ve-jog', timer=100) + comp_params = hal.RemoteComponent('fdm-ve-params', timer=100) + + for (signal_name, signal_type, attr_name, comp_jog_name, comp_params_name, io_pin) in shared_signals: + signal = hal.newsig('ve.%s' % signal_name, signal_type) + comp_dir_type = hal.HAL_IO + + if signal_name == 'jog-dtg' or signal_name == 'max-jog-vel' or signal_name == 'extrude-vel': + mux_type = 'muxn' + comp_dir_type = hal.HAL_IN + elif signal_name == 'retracting': + mux_type = 'muxn_bit' + comp_dir_type = hal.HAL_IN + else: + mux_type = 'io_muxn' if signal_type == hal.HAL_FLOAT else 'io_muxn_bit' + + mux = rtapi.newinst( + mux_type, + 'ex.mux%d.%s' % (EXTRUDER_TOTAL, signal_name), + pincount=EXTRUDER_TOTAL) + hal.addf(mux.name, SERVO_THREAD) + mux.pin('out').link(signal) + mux.pin('sel').link(extruder_sel_sig) + for j in xrange(EXTRUDER_TOTAL): + mux.pin('in%i' % j).link(getattr(extruders[j], attr_name)) + + if comp_jog_name is not None: + pin = comp_jog.newpin(comp_jog_name, signal_type, comp_dir_type) + pin.link(signal) + if comp_params_name is not None: + pin = comp_params.newpin(comp_params_name, signal_type, comp_dir_type) + pin.link(signal) + if io_pin is not None: + if signal_type == hal.HAL_FLOAT: + signal.link('motion.analog-out-io-%d' % io_pin) + else: + signal.link('motion.digital-out-io-%02i' % io_pin) + + hal.Signal('ve.retracting').link('motion.feed-hold') + + extruder_sel_sig.link('iocontrol.0.tool-prep-number') + comp_jog.newpin('extruder-sel', hal.HAL_S32, hal.HAL_IN).link(extruder_sel_sig) + comp_jog.newpin('extruder-count', hal.HAL_U32, hal.HAL_IN).set(EXTRUDER_TOTAL) + + comp_jog.ready() + comp_params.ready() + +def setup_system_fan(replicape): + en = config.find('FDM','SYSTEM_FAN', 0) + if int(en) == 0: + return + + fan_sig = hal.newsig('fan-output', hal.HAL_FLOAT) + replicape.get_fan_pwm_pin(3).link(fan_sig) + fan_sig.set(1.0) + +def setup_fans(replicape): + if NUM_FANS == 0: + return + en = config.find('FDM','SYSTEM_FAN', 0) + fan_out = [None] * NUM_FANS + fan_scale = [None] * NUM_FANS + fan_in = [None] * NUM_FANS + #on-board pwm input is 0.0 to 1.0, M106 sends 0 to 255 + for i in xrange(NUM_FANS): + fan_out[i] = hal.newsig('fan-out-%d' % i, hal.HAL_FLOAT) + replicape.get_fan_pwm_pin(i).link(fan_out[i]) + # the system fan is connected to the last fan pwm output + if (int(en) > 0) and (i == NUM_FANS-1): + fan_out[i].set(1.0) + else: + fan_in[i] = hal.newsig('fan-in-%d' % i, hal.HAL_FLOAT) + fan_in[i].link('motion.analog-out-io-%d' % (FAN_IO_START + i)) + fan_scale[i] = rtapi.newinst('div2', 'fan%d.div2.scale-pwm' % i) + hal.addf(fan_scale[i].name, SERVO_THREAD) + fan_scale[i].pin('in0').link(fan_in[i]) + fan_scale[i].pin('in1').set(255.0) + fan_scale[i].pin('out').link(fan_out[i]) + + +def setup_limit_switches(replicape): + limit_x_sig = hal.newsig('limit-x', hal.HAL_BIT) + limit_x_sig.link('axis.0.home-sw-in') + limit_x_pos = config.find('AXIS_0', 'HOME_SEARCH_VEL', 0) + if limit_x_pos < 0: + replicape.get_limit_pin('X', False).link(limit_x_sig) + limit_x_sig.link('axis.0.neg-lim-sw-in') + if limit_x_pos > 0: + replicape.get_limit_pin('X', True).link(limit_x_sig) + limit_x_sig.link('axis.0.pos-lim-sw-in') + + limit_y_sig = hal.newsig('limit-y', hal.HAL_BIT) + limit_y_sig.link('axis.1.home-sw-in') + limit_y_pos = config.find('AXIS_1', 'HOME_SEARCH_VEL', 0) + if limit_y_pos < 0: + replicape.get_limit_pin('Y', False).link(limit_y_sig) + limit_y_sig.link('axis.1.neg-lim-sw-in') + if limit_y_pos > 0: + replicape.get_limit_pin('Y', True).link(limit_y_sig) + limit_y_sig.link('axis.1.pos-lim-sw-in') + + limit_z_sig = hal.newsig('limit-z', hal.HAL_BIT) + limit_z_sig.link('axis.2.home-sw-in') + limit_z_pos = config.find('AXIS_2', 'HOME_SEARCH_VEL', 0) + if limit_z_pos < 0: + replicape.get_limit_pin('Z', False).link(limit_z_sig) + limit_z_sig.link('axis.2.neg-lim-sw-in') + if limit_z_pos > 0: + replicape.get_limit_pin('Z', True).link(limit_z_sig) + limit_z_sig.link('axis.2.pos-lim-sw-in') + + probe_pin = replicape.get_probe_pin(); + if probe_pin is not None: + probe_sig = hal.newsig('limit-probe', hal.HAL_BIT) + probe_sig.link(probe_pin) + probe_sig.link('motion.probe-input') + +def setup_estop(error_sigs, watchdog_sigs, estop_reset, thread): + # Create estop signal chain + estop_user = hal.Signal('estop-user', hal.HAL_BIT) + estop_user.link('iocontrol.0.user-enable-out') + + estop_reset.link('iocontrol.0.user-request-enable') + + estop_out = hal.Signal('estop-clear', hal.HAL_BIT) + estop_out.link('iocontrol.0.emc-enable-in') + + estop_latch = rtapi.newinst('estop_latch', 'estop.estop-latch') + hal.addf(estop_latch.name, thread) + estop_latch.pin('ok-in').link(estop_user) + estop_latch.pin('reset').link(estop_reset) + estop_latch.pin('ok-out').link(estop_out) + + watchdog_sigs = [] # TODO: Fix watchdog code + if len(watchdog_sigs) > 0: + watchdog_ok_sig = hal.newsig('estop.watchdog-ok', hal.HAL_BIT) + watchdog_error_sig = hal.newsig('estop.watchdog-error', hal.HAL_BIT) + watchdog = rtapi.newinst('watchdog', 'estop.watchdog', pincount=len(watchdog_sigs)) + hal.addf(watchdog.name, thread) + for n, sig in watchdog_sigs: + watchdog.pin('input-%02d' % n).link(sig) + watchdog.pin('enable').set(True) + watchdog.pin('ok-out').link(watchdog_ok_sig) + + watchdog_not = rtapi.newinst('not', 'estop.watchdog.not') + hal.addf(watchdog_not.name, thread) + watchdog_not.pin('in').link(watchdog_ok_sig) + watchdog_not.pin('out').link(watchdog_error_sig) + + error_sigs.append(watchdog_error_sig) + + num = len(error_sigs) + if num > 0: + estop_fault = hal.Signal('estop-fault', hal.HAL_BIT) + orn = rtapi.newinst('orn', 'estop.or%i.error' % num, pincount=num) + hal.addf(orn.name, thread) + for n, sig in enumerate(error_sigs): + orn.pin('in%i' % n).link(sig) + orn.pin('out').link(estop_fault) + estop_latch.pin('fault-in').link(estop_fault) + +def connect_tool_changer(): + p = hal.Signal('tool-prepared', hal.HAL_BIT) + p.link('iocontrol.0.tool-prepare') + p.link('iocontrol.0.tool-prepared') + c = hal.Signal('tool-changed', hal.HAL_BIT) + c.link('iocontrol.0.tool-change') + c.link('iocontrol.0.tool-changed') + +def init_hardware(): + config.load_ini(os.environ['INI_FILE_NAME']) + check_version() +# we need to make the gpio pins used by the pru visible to userspace (??) in /sys/class/gpio + os.system('sudo ' + HARDWARE_PATH + 'set_pru_gpio.sh') + rtapi.init_RTAPI() + error_sigs = [] + watchdog_sigs = [] + + global AXIS_TOTAL + AXIS_TOTAL = int(config.find('TRAJ', 'AXES', '3')) + if AXIS_TOTAL < 3: + raise RuntimeError("AXES must be >= 3") + + global EXTRUDER_TOTAL + EXTRUDER_TOTAL = int(config.find('FDM', 'EXTRUDERS', '1')) + if EXTRUDER_TOTAL < 1: + raise RuntimeError("EXTRUDERS must be >= 1") + + global NUM_FANS + NUM_FANS = int(config.find('FDM','NUM_FANS', 4)) + system_fan = int(config.find('FDM','SYSTEM_FAN', 0)) + if (NUM_FANS < system_fan): + raise RuntimeError("NUM_FANS must be >= 1 if SYSTEM_FAN > 0") + if (NUM_FANS > 4) or (NUM_FANS < 0 ): + raise RuntimeError("NUM_FANS must be > 0 and < 5") + + rtapi.loadrt('tp') + if config.find('MACHINE','DELTA_R') is not None: + kinematics = 'lineardeltakins' + rtapi.loadrt(kinematics) + hal.Pin('lineardeltakins.L').set(config.find('MACHINE', 'CF_ROD')) + hal.Pin('lineardeltakins.R').set(config.find('MACHINE', 'DELTA_R')) + else: + kinematics = 'trivkins' + rtapi.loadrt(kinematics) + + rtapi.loadrt(config.find('EMCMOT', 'EMCMOT'), + servo_period_nsec=config.find('EMCMOT', 'SERVO_PERIOD'), + num_joints=str(AXIS_TOTAL), + num_aio=51, + num_dio=21, + kins = kinematics) + + hal.addf('motion-command-handler', SERVO_THREAD) + hal.addf('motion-controller', SERVO_THREAD) + + estop_reset = hal.newsig('estop-reset', hal.HAL_BIT) + (main_enable, main_enable_inv) = setup_enable_chain() + + if BOARD_REV == 'B3A': + replicape = hardware.ReplicapeB3A() + if BOARD_REV == 'A4A': + replicape = hardware.ReplicapeA4A() + watchdog_sigs.extend(replicape.get_watchdog_sigs()) + replicape.link_enable(main_enable, main_enable_inv) + + (joint_commands, joint_feedbacks) = setup_joints() + for i in xrange(AXIS_TOTAL): + setup_axis(replicape, joint_commands[i], joint_feedbacks[i], i) + setup_limit_switches(replicape) + + extruder_sel_sig = hal.newsig('extruder-sel', hal.HAL_S32) + setup_extruders(replicape, extruder_sel_sig) + + for i in xrange(EXTRUDER_TOTAL): + t = ExtruderTemperature(replicape, i, main_enable, estop_reset) + error_sigs.append(t.get_error_sig()) + watchdog_sigs.append(t.get_temp_watchdog_sig()) + + if config.find('HBP', 'THERMISTOR'): + t = HbpTemperature(replicape, main_enable, estop_reset) + error_sigs.append(t.get_error_sig()) + watchdog_sigs.append(t.get_temp_watchdog_sig()) + +# setup_system_fan(replicape) + setup_fans(replicape) + setup_estop(error_sigs, watchdog_sigs, estop_reset, SERVO_THREAD) + connect_tool_changer() + + diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/extrusion.py b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/extrusion.py new file mode 100644 index 0000000000..f3a8b4988b --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/extrusion.py @@ -0,0 +1,247 @@ +#!/usr/bin/python2 +# encoding: utf-8 + +from machinekit import rtapi +from machinekit import hal +from machinekit import config +import os +import math + +SERVO_THREAD = 'servo-thread' + +class Extruder(object): + def __init__(self, nr, motion_vel_sig, config): + self.nr = nr + self._init_signals() + self._init_extrude(motion_vel_sig) + self._init_jog() + self._init_config(config) + + def _init_signals(self): + # Input signal + self.enable_sig = hal.newsig('ve%d.enable' % self.nr, hal.HAL_BIT) + self.cross_section_sig = hal.newsig('ve%d.cross-section' % self.nr, hal.HAL_FLOAT) + + self.jog_vel_sig = hal.newsig('ve%d.jog-vel' % self.nr, hal.HAL_FLOAT) + self.jog_direction_sig = hal.newsig('ve%d.jog-direction' % self.nr, hal.HAL_BIT) + self.jog_distance_sig = hal.newsig('ve%d.jog-distance' % self.nr, hal.HAL_FLOAT) + self.jog_trigger_sig = hal.newsig('ve%d.jog-trigger' % self.nr, hal.HAL_BIT) + self.jog_continuous_sig = hal.newsig('ve%d.jog-continuous' % self.nr, hal.HAL_BIT) + self.jog_dtg_sig = hal.newsig('ve%d.jog-dtg' % self.nr, hal.HAL_FLOAT) + + # Intermediate signal + self.jog_vel_output_sig = hal.newsig('ve%d.jog-vel-output' % self.nr, hal.HAL_FLOAT) + + # Parameter signal + self.filament_dia_sig = hal.newsig('ve%d.filament-dia' % self.nr, hal.HAL_FLOAT) + self.extrude_scale_sig = hal.newsig('ve%d.extrude-scale' % self.nr, hal.HAL_FLOAT) + self.accel_gain_sig = hal.newsig('ve%d.accel-gain' % self.nr, hal.HAL_FLOAT) + self.max_jog_vel_sig = hal.newsig('ve%d.max-jog-vel' % self.nr, hal.HAL_FLOAT) + + self.retract_vel_sig = hal.newsig('ve%d.retract-vel' % self.nr, hal.HAL_FLOAT) + self.retract_len_sig = hal.newsig('ve%d.retract-len' % self.nr, hal.HAL_FLOAT) + + # Output signal + self.extrude_vel_sig = hal.newsig('ve%d.extrude-vel' % self.nr, hal.HAL_FLOAT) + self.retracting_sig = hal.newsig('ve%d.retracting' % self.nr, hal.HAL_BIT) + + def _init_extrude(self, motion_vel_sig): + material_flowrate_sig = hal.newsig('ve%d.material-flowrate' % self.nr, hal.HAL_FLOAT) + material_flowrate = rtapi.newinst('mult2', 've%d.mult2.material-flowrate' % self.nr) + hal.addf(material_flowrate.name, SERVO_THREAD) + material_flowrate.pin('in0').link(motion_vel_sig) + material_flowrate.pin('in1').link(self.cross_section_sig) + material_flowrate.pin('out').link(material_flowrate_sig) + + filament_dia_sq_sig = hal.newsig('ve%d.filament-dia-sq' % self.nr, hal.HAL_FLOAT) + filament_dia_sq = rtapi.newinst('mult2', 've%d.mult2.filament-dia-sq' % self.nr) + hal.addf(filament_dia_sq.name, SERVO_THREAD) + filament_dia_sq.pin('in0').link(self.filament_dia_sig) + filament_dia_sq.pin('in1').link(self.filament_dia_sig) + filament_dia_sq.pin('out').link(filament_dia_sq_sig) + + filament_area_sig = hal.newsig('ve%d.filament-area' % self.nr, hal.HAL_FLOAT) + filament_area = rtapi.newinst('mult2', 've%d.mult2.filament-area' % self.nr) + hal.addf(filament_area.name, SERVO_THREAD) + filament_area.pin('in0').link(filament_dia_sq_sig) + filament_area.pin('in1').set(math.pi / 4) + filament_area.pin('out').link(filament_area_sig) + + extrude_rate_sig = hal.newsig('ve%d.extrude-rate' % self.nr, hal.HAL_FLOAT) + extrude_rate = rtapi.newinst('div2', 've%d.div2.extrude-rate' % self.nr) + hal.addf(extrude_rate.name, SERVO_THREAD) + extrude_rate.pin('in0').link(material_flowrate_sig) + extrude_rate.pin('in1').link(filament_area_sig) + extrude_rate.pin('out').link(extrude_rate_sig) + + extrude_rate_scaled_sig = hal.newsig('ve%d.extrude-rate-scaled' % self.nr, hal.HAL_FLOAT) + extrude_rate_scaled = rtapi.newinst('mult2', 've%d.mult2.extrude-rate-scaled' % self.nr) + hal.addf(extrude_rate_scaled.name, SERVO_THREAD) + extrude_rate_scaled.pin('in0').link(extrude_rate_sig) + extrude_rate_scaled.pin('in1').link(self.extrude_scale_sig) + extrude_rate_scaled.pin('out').link(extrude_rate_scaled_sig) + + extrude_accel_sig = hal.newsig('ve%d.extrude-accel' % self.nr, hal.HAL_FLOAT) + extrude_accel = rtapi.newinst('ddt', 've%d.ddt.extrude-accel' % self.nr) + hal.addf(extrude_accel.name, SERVO_THREAD) + extrude_accel.pin('in').link(extrude_rate_scaled_sig) + extrude_accel.pin('out').link(extrude_accel_sig) + + extrude_accel_adj_sig = hal.newsig('ve%d.extrude-accel-adj' % self.nr, hal.HAL_FLOAT) + extrude_accel_adj = rtapi.newinst('mult2', 've%d.mult2.extrude-accel-adj' % self.nr) + hal.addf(extrude_accel_adj.name, SERVO_THREAD) + extrude_accel_adj.pin('in0').link(extrude_accel_sig) + extrude_accel_adj.pin('in1').link(self.accel_gain_sig) + extrude_accel_adj.pin('out').link(extrude_accel_adj_sig) + + extrude_rate_comp_sig = hal.newsig('ve%d.extrude-rate-comp' % self.nr, hal.HAL_FLOAT) + extrude_rate_comp = rtapi.newinst('sum2', 've%d.sum2.extrude-rate-comp' % self.nr) + hal.addf(extrude_rate_comp.name, SERVO_THREAD) + extrude_rate_comp.pin('in0').link(extrude_rate_scaled_sig) + extrude_rate_comp.pin('in1').link(extrude_accel_adj_sig) + extrude_rate_comp.pin('out').link(extrude_rate_comp_sig) + + retract_vel_neg_sig = hal.newsig('ve%d.retract-vel-neg' % self.nr, hal.HAL_FLOAT) + retract_time_sig = hal.newsig('ve%d.retract-time' % self.nr, hal.HAL_FLOAT) + + retract_vel_neg = rtapi.newinst('neg', 've%d.neg.retract-vel-neg' % self.nr) + hal.addf(retract_vel_neg.name, SERVO_THREAD) + retract_vel_neg.pin('in').link(self.retract_vel_sig) + retract_vel_neg.pin('out').link(retract_vel_neg_sig) + + retract_time = rtapi.newinst('div2', 've%d.div2.retract-time' % self.nr) + hal.addf(retract_time.name, SERVO_THREAD) + retract_time.pin('in0').link(self.retract_len_sig) + retract_time.pin('in1').link(self.retract_vel_sig) + retract_time.pin('out').link(retract_time_sig) + + retracting_delay = rtapi.newinst('oneshot', 've%d.oneshot.retracting' % self.nr) + hal.addf(retracting_delay.name, SERVO_THREAD) + retracting_delay.pin('rising').set(True) + retracting_delay.pin('falling').set(True) + retracting_delay.pin('retriggerable').set(True) + retracting_delay.pin('width').link(retract_time_sig) + retracting_delay.pin('in').link(self.enable_sig) + retracting_delay.pin('out').link(self.retracting_sig) + + extrude_vel = rtapi.newinst('mux4', 've%d.mux4.extrude-vel' % self.nr) + hal.addf(extrude_vel.name, SERVO_THREAD) + extrude_vel.pin('sel0').link(self.retracting_sig) + extrude_vel.pin('sel1').link(self.enable_sig) + extrude_vel.pin('in0').link(self.jog_vel_output_sig) + extrude_vel.pin('in1').link(retract_vel_neg_sig) + extrude_vel.pin('in2').link(extrude_rate_comp_sig) + extrude_vel.pin('in3').link(self.retract_vel_sig) + extrude_vel.pin('out').link(self.extrude_vel_sig) + + def _init_jog(self): + jog_vel_limited_sig = hal.newsig('ve%d.jog-vel-limited' % self.nr, hal.HAL_FLOAT) + jog_vel_limit = rtapi.newinst('limit1', 've%d.limit1.jog-vel-limit' % self.nr) + hal.addf(jog_vel_limit.name, SERVO_THREAD) + jog_vel_limit.pin('in').link(self.jog_vel_sig) + jog_vel_limit.pin('out').link(jog_vel_limited_sig) + jog_vel_limit.pin('min').set(0.01) + jog_vel_limit.pin('max').link(self.max_jog_vel_sig) + + jog_vel_limited_neg_sig = hal.newsig('ve%d.jog-vel-limited-neg' % self.nr, hal.HAL_FLOAT) + jog_vel_limited_neg = rtapi.newinst('neg', 've%d.neg.jog-vel-limited-neg' % self.nr) + hal.addf(jog_vel_limited_neg.name, SERVO_THREAD) + jog_vel_limited_neg.pin('in').link(jog_vel_limited_sig) + jog_vel_limited_neg.pin('out').link(jog_vel_limited_neg_sig) + + jog_vel_signed_sig = hal.newsig('ve%d.jog-vel-signed' % self.nr, hal.HAL_FLOAT) + jog_vel_signed = rtapi.newinst('mux2', 've%d.mux2.jog-vel-signed' % self.nr) + hal.addf(jog_vel_signed.name, SERVO_THREAD) + jog_vel_signed.pin('in0').link(jog_vel_limited_sig) + jog_vel_signed.pin('in1').link(jog_vel_limited_neg_sig) + jog_vel_signed.pin('sel').link(self.jog_direction_sig) + jog_vel_signed.pin('out').link(jog_vel_signed_sig) + + jog_time_sig = hal.newsig('ve%d.jog-time' % self.nr, hal.HAL_FLOAT) + jog_time_left_sig = hal.newsig('ve%d.jog-time-left' % self.nr, hal.HAL_FLOAT) + jog_time = rtapi.newinst('div2', 've%d.div2.jog-time' % self.nr) + hal.addf(jog_time.name, SERVO_THREAD) + jog_time.pin('in0').link(self.jog_distance_sig) + jog_time.pin('in1').link(jog_vel_limited_sig) + jog_time.pin('out').link(jog_time_sig) + + jog_single_sig = hal.newsig('ve%d.jog-single' % self.nr, hal.HAL_BIT) + jog_single_oneshot = rtapi.newinst('oneshot', 've%d.oneshot.jog-single' % self.nr) + hal.addf(jog_single_oneshot.name, SERVO_THREAD) + jog_single_oneshot.pin('in').link(self.jog_trigger_sig) + jog_single_oneshot.pin('width').link(jog_time_sig) + jog_single_oneshot.pin('time-left').link(jog_time_left_sig) + jog_single_oneshot.pin('rising').set(True) + jog_single_oneshot.pin('falling').set(False) + jog_single_oneshot.pin('retriggerable').set(1) + jog_single_oneshot.pin('out').link(jog_single_sig) + + jog_reset_trigger = rtapi.newinst('reset', 've%d.reset.jog-trigger' % self.nr) + hal.addf(jog_reset_trigger.name, SERVO_THREAD) + jog_reset_trigger.pin('trigger').link(jog_single_sig) + jog_reset_trigger.pin('rising').set(False) + jog_reset_trigger.pin('falling').set(True) + jog_reset_trigger.pin('reset-bit').set(False) + jog_reset_trigger.pin('out-bit').link(self.jog_trigger_sig) + + jog_enable_sig = hal.newsig('ve%d.jog-enable' % self.nr, hal.HAL_BIT) + jog_enable = rtapi.newinst('or2', 've%d.or2.jog-enable' % self.nr) + hal.addf(jog_enable.name, SERVO_THREAD) + jog_enable.pin('in0').link(self.jog_continuous_sig) + jog_enable.pin('in1').link(jog_single_sig) + jog_enable.pin('out').link(jog_enable_sig) + + jog_vel_output = rtapi.newinst('mux2', 've%d.mux2.jog-vel-output' % self.nr) + hal.addf(jog_vel_output.name, SERVO_THREAD) + jog_vel_output.pin('in0').set(0.0) + jog_vel_output.pin('in1').link(jog_vel_signed_sig) + jog_vel_output.pin('sel').link(jog_enable_sig) + jog_vel_output.pin('out').link(self.jog_vel_output_sig) + + jog_dtg = rtapi.newinst('mult2', 've%d.mult2.jog-dtg' % self.nr) + hal.addf(jog_dtg.name, SERVO_THREAD) + jog_dtg.pin('in0').link(jog_vel_limited_sig) + jog_dtg.pin('in1').link(jog_time_left_sig) + jog_dtg.pin('out').link(self.jog_dtg_sig) + + disable1 = rtapi.newinst('reset', 've%d.reset.on-jog-single' % self.nr) + hal.addf(disable1.name, SERVO_THREAD) + disable1.pin('trigger').link(self.jog_trigger_sig) + disable1.pin('rising').set(True) + disable1.pin('falling').set(False) + disable1.pin('retriggerable').set(True) + disable1.pin('reset-bit').set(False) + disable1.pin('out-bit').link(self.enable_sig) + + disable2 = rtapi.newinst('reset', 've%d.reset.on-jog-continuous' % self.nr) + hal.addf(disable2.name, SERVO_THREAD) + disable2.pin('trigger').link(self.jog_continuous_sig) + disable2.pin('rising').set(True) + disable2.pin('falling').set(False) + disable2.pin('retriggerable').set(True) + disable2.pin('reset-bit').set(False) + disable2.pin('out-bit').link(self.enable_sig) + + def _init_config(self, config): + configs = [ + (self.filament_dia_sig, ['FILAMENT_DIAMETER', 'FILAMENT_DIA'], '3'), + (self.extrude_scale_sig, ['EXTRUDE_SCALE'], '1'), + (self.accel_gain_sig, ['ACCELERATION_GAIN'], '0.05'), + (self.max_jog_vel_sig, ['MAX_JOG_VELOCITY', 'MAX_VELOCITY'], '40'), + (self.retract_len_sig, ['RETRACT_LENGTH', 'RETRACT_LEN'], '3'), + (self.retract_vel_sig, ['RETRACT_VELOCITY', 'RETRACT_VEL'], '60') + ] + for i in configs: + (signal, config_names, config_default) = i + v = None + for config_name in config_names: + v = config.find('EXTRUDER_%d' % self.nr, config_name) + if v is not None: + break + if v is None: + v = config_default + if v is None: + raise ValueError('Config [EXTRUDER_%d] %s must be defined' % (self.nr, config_names[0])) + float_v = float(v) + signal.set(float_v) + diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/hal/hal_bbb_temp b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/hal/hal_bbb_temp new file mode 100755 index 0000000000..c793096627 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/hal/hal_bbb_temp @@ -0,0 +1,255 @@ +#!/usr/bin/python +# encoding: utf-8 + +######################################################################## +# Description: temp.py # +# This code reads an ADC input on the BeagleBone and converts the # +# resulting value into a temperature according to the thermistor # +# type, accounting for the analog input circuty as implemented on # +# the BeBoPr cape # +# # +# Author(s): Charles Steinkuehler # +# License: GNU GPL Version 2.0 or (at your option) any later version. # +# # +# Major Changes: # +# 2013-June Charles Steinkuehler # +# Initial version # +# 2014-July Alexander Roessler # +# Port to the R2Temp component # +# 2016,2017 Sam Wong # +# Port to BeagleBone Black/Replicape # +######################################################################## +# Copyright (C) 2013 Charles Steinkuehler # +# # +# # +# This program 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 2 # +# of the License, or (at your option) any later version. # +# # +# This program 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 this program; if not, write to the Free Software # +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # +# 02110-1301, USA. # +# # +# THE AUTHORS OF THIS PROGRAM ACCEPT ABSOLUTELY NO LIABILITY FOR # +# ANY HARM OR LOSS RESULTING FROM ITS USE. IT IS _EXTREMELY_ UNWISE # +# TO RELY ON SOFTWARE ALONE FOR SAFETY. Any machinery capable of # +# harming persons must have provisions for completely removing power # +# from all motors, etc, before persons enter any danger area. All # +# machinery must be designed to comply with local and national safety # +# codes, and the authors of this software can not, and do not, take # +# any responsibility for such compliance. # +######################################################################## + +import argparse +import glob +import sys +import time +import re + +import hal +from fdm.r2temp import R2Temp + + +# The BeBoPr board thermistor input has one side grounded and the other side +# pulled high through a 2.05K resistor to 3.6V. Following this is a 470R +# resistor, some protection diodes, and a voltage divider cosisting of two +# 10.0K resistors. The ADC voltage read is the voltage across the lower 10K +# resistor in the 470R + 10K + 10K series chain +def adc2r_bebopr(pin): + V_adc = pin.rawValue * 1.8 / 4096.0 + + V_T = 0.0 # Voltage across the thermistor (and the 470R + 10K + 10K resistor chain) + I_PU = 0.0 # Current flowing through the 2.05K pull-up resistor + R_TD = 0.0 # Resistance of thermistor and the 470R + 10K + 10K divider chain in parallel + R_T = 0.0 # Resistance of the thermistor + + V_T = V_adc * 2.0470 + + # No dividing by zero or negative voltages despite what the ADC says! + # Clip to a small positive value + I_PU = max((3.6 - V_T) / 2050, 0.000001) + + R_TD = V_T / I_PU + + # Acutal resistance can't be negative, but we can get a negative value + # from the equation below for some real ADC values, so clip to avoid + # reporting crazy temperature values or dividing by zero + if R_TD >= 20470: + R_TD = 20470 - 0.1 + + # 1 / Rtotal = 1 / ( 1 / R1 + 1 / R2 ) + # R2 = ( R1 * Rtotal ) / ( R1 - Rtotal ) + R_T = (20470 * R_TD) / (20470 - R_TD) + + # print "V_adc: %f V_T: %f R_TD: %f R_T: %f" % (V_adc, V_T, R_TD, R_T) + + return R_T + +# The CRAMPS board thermistor input has one side grounded and the other side +# pulled high through a 1.00K resistor to 1.8V. Following this is a 4.7K +# resistor, some protection diodes, and filtering capacitors. The ADC voltage +# read is the filtered voltage across the thermistor. +def adc2r_cramps(pin): + V_adc = pin.rawValue * 1.8 / 4096.0 + V_T = 0.0 # Voltage across the thermistor + R_PU = 2000.0 #Pull-up resistence + I_PU = 0.0 # Current flowing through the pull-up resistor + R_T = 0.0 # Resistance of the thermistor + + V_T = V_adc + + # No dividing by zero or negative voltages despite what the ADC says! + # Clip to a small positive value + I_PU = max((1.8 - V_T ) / R_PU, 0.000001) + + R_T = V_T / I_PU + + return R_T + +# The Replicape board thermistor input is pulled up to ADC (1.8v) with 4.7k. +# VADC ---- 4.7k --- [SENSE] -- [Thermistor] --- GND +def adc2r_replicape(pin): + V_adc = pin.rawValue * 1.8 / 4096.0 + V_T = 0.0 # Voltage across the thermistor + R_PU = 4700.0 #Pull-up resistence + I_PU = 0.0 # Current flowing through the pull-up resistor + R_T = 0.0 # Resistance of the thermistor + + V_T = V_adc + + # No dividing by zero or negative voltages despite what the ADC says! + # Clip to a small positive value + I_PU = max((1.8 - V_T ) / R_PU, 0.000001) + + R_T = V_T / I_PU + + return R_T + +class Pin: + def __init__(self, pin): + self.pin = pin + self.r2temp = None + self.halValuePin = None + self.halRawPin = None + self.filterSamples = [] + self.filterSize = 10 + self.rawValue = 0.0 + self.filename = "" + self.filterSamples = [] + self.rawValue = 0.0 + + def addSample(self, value): + self.filterSamples.append(value) + if (len(self.filterSamples) > self.filterSize): + self.filterSamples.pop(0) + sampleSum = 0.0 + for sample in self.filterSamples: + sampleSum += sample + self.rawValue = sampleSum / len(self.filterSamples) + + +def adc2Temp(pin): + if(args.cape_board == 'BeBoPr'): + R = adc2r_bebopr(pin) + elif (args.cape_board == 'CRAMPS'): + R = adc2r_cramps(pin) + elif (args.cape_board == 'Replicape'): + R = adc2r_replicape(pin) + else: + print("Invalid -b cape name: %s" % args.cape_board) + print("Valid names are: BeBoPr, CRAMPS, Replicape") + sys.exit(1) + return round(pin.r2temp.r2t(R) * 10.0) / 10.0 + +def checkAdcInput(pin): + syspath = '/sys/bus/iio/devices/iio:device0/' + tempName = glob.glob(syspath + 'in_voltage' + str(pin.pin) + '_raw') + pin.filename = tempName[0] + try: + if len(pin.filename) > 0: + f = open(pin.filename, 'r') + f.close() + time.sleep(0.001) + else: + raise UserWarning('Bad Filename') + except (UserWarning, IOError): + print(("Cannot read ADC input: %s" % pin.filename)) + sys.exit(1) + + +parser = argparse.ArgumentParser(description='HAL component to read ADC values and convert to temperature') +parser.add_argument('-n','--name', help='HAL component name',required=True) +parser.add_argument('-c', '--channel', help='ADC channel number', required=True) +parser.add_argument('-t', '--thermistor', help='Thermistors to use e.g. epcos_B57560G1104', required=True) +parser.add_argument('-i', '--interval', help='Adc update interval', default=0.2) +parser.add_argument('-f', '--filter_size', help='Size of the low pass filter to use', default=10) +parser.add_argument('-b', '--cape_board', help='Type of cape used', default='BeBoPr') +parser.add_argument('-d', '--debug', help='Debug - prints the values in console and exit', action='store_true') + +args = parser.parse_args() + +updateInterval = float(args.interval) +filterSize = int(args.filter_size) +error = False +watchdog = True + +pin = Pin(int(args.channel)) +checkAdcInput(pin) +if (args.thermistor != "none"): + pin.r2temp = R2Temp(args.thermistor) +pin.filterSize = filterSize + +if (not args.debug): + # Initialize HAL + h = hal.component(args.name) + pin.halRawPin = h.newpin("raw", hal.HAL_FLOAT, hal.HAL_OUT) + if (pin.r2temp is not None): + pin.halValuePin = h.newpin("value", hal.HAL_FLOAT, hal.HAL_OUT) + halErrorPin = h.newpin("error", hal.HAL_BIT, hal.HAL_OUT) + halNoErrorPin = h.newpin("no-error", hal.HAL_BIT, hal.HAL_OUT) + halWatchdogPin = h.newpin("watchdog", hal.HAL_BIT, hal.HAL_OUT) + h.ready() + + halErrorPin.value = error + halNoErrorPin.value = not error + halWatchdogPin.value = watchdog + +try: + while (True): + try: + with open(pin.filename, 'r') as f: + value = float(f.readline()) + pin.addSample(value) + if (not args.debug): + pin.halRawPin.value = pin.rawValue + if (pin.r2temp is not None): + pin.halValuePin.value = adc2Temp(pin) + else: + + if (pin.r2temp is not None): + print(("raw: %d, temp: %0.1f") % (pin.rawValue, adc2Temp(pin))) + else: + print(("raw: %d") % (pin.rawValue)) + error = False + except IOError as e: + print(("Error in reading temperature %s: %s" % (pin.filename, e))) + error = True + + if (not args.debug): + halErrorPin.value = error + halNoErrorPin.value = not error + watchdog = not watchdog + halWatchdogPin.value = watchdog + + time.sleep(updateInterval) +except BaseException as e: + print(("exiting HAL component %s: %s") % (args.name, e)) + if (not args.debug): + h.exit() diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/hal/hal_replicape_A4_hwconfig b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/hal/hal_replicape_A4_hwconfig new file mode 100755 index 0000000000..e0ac3e6e2d --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/hal/hal_replicape_A4_hwconfig @@ -0,0 +1,139 @@ +#!/usr/bin/python +# encoding: utf-8 +# vim: set sw=4 sts=4 et: + +''' +A machinekit/LinuxCNC user module for Replicape A4 hardware config + +Controlling various parameters that are exposed through bit-shifters. + +The settings are populated when the "enable" pin is turned on (rising edge) + +The following pins are exported +* enable [IN] + Enable the steppers +* stepper.x.microstepping [IN] + Microstepping settings for steppers 0 to 5. + Value is treated as 1/2^x, e.g. 5 means 1/32 microstepping mode. +* stepper.x.decay [IN] + True for slow decay +* watchdog + A pin that toggles at every loop informing HAL that this component is alive + +Copyright (C) 2013 Sam Wong + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +''' + +import argparse +import glob +import sys +import time + +import hal +from spi import SPI + +parser = argparse.ArgumentParser(description='HAL component to configure Replicape hardware') +parser.add_argument('-n','--name', help='HAL component name',required=True) +args = parser.parse_args() + +# Initialize SPI +spi_shifter = None + +# Load SPI module +try: + # Init the SPI for the serial to parallel + try: + spi_shifter = SPI((0, 1)) + except IOError: + spi_shifter = SPI((1, 1)) + spi_shifter.mode = 0 +except IOError: + print("Unable to set up SPI") + exit(-1) + +# Initialize HAL +h = hal.component(args.name) +enablePin = h.newpin("enable", hal.HAL_BIT, hal.HAL_IN) + +N = 5 # We have 5 steppers +microsteppingPins = [None] * N +decayPins = [None] * N + +for i in range(0,N): + microsteppingPins[i] = h.newpin(("stepper.%d.microstepping" % i), hal.HAL_U32, hal.HAL_IN) + decayPins[i] = h.newpin(("stepper.%d.decay" % i), hal.HAL_BIT, hal.HAL_IN) +halWatchdogPin = h.newpin("watchdog", hal.HAL_BIT, hal.HAL_OUT) +h.ready() + +''' +The bits in the shift register are as follows (Rev A4) : +Bit - name - init val +D0 = - = Don't Care +D1 = MODE2 = 0 +D2 = MODE1 = 0 +D3 = MODE0 = 0 +D4 = nENABLE = 0 - Enabled +D5 = DECAY = 0 - Slow decay +D6 = nSLEEP = 1 - Not sleeping +D7 = nRESET = 1 - Not in reset mode +''' + +def commit(): + ''' Turn on the stepper chips ''' + + # Writing the modes + bytes = [] + for i in range(0,N): + state = decayPins[i].value << 5 | \ + ((microsteppingPins[i].value & 0x04) >> 2) << 1 | \ + ((microsteppingPins[i].value & 0x02) >> 1) << 2 | \ + ((microsteppingPins[i].value & 0x01) >> 0) << 3 | \ + 0 << 4 | 1 << 6 | 1 << 7 + bytes.append(state) + # Reverse the writting orders due to serial chain sequence + spi_shifter.write(bytes[::-1]) + +def reset(): + ''' Reset the stepper chip ''' + bytes = [] + for i in range(0,N): + state = 1 << 4 | 0 << 6 | 0 << 7 + bytes.append(state) + # Reverse the writting orders due to serial chain sequence + spi_shifter.write(bytes[::-1]) + +def turnOff(): + ''' Turn off all stepper chips ''' + bytes = [] + for i in range(0,N): + state = 1 << 4 | 0 << 6 | 1 << 7 + bytes.append(state) + # Reverse the writting orders due to serial chain sequence + spi_shifter.write(bytes[::-1]) + +watchdog = True +try: + oldEnable = False + reset() + time.sleep(0.05) + while (True): + enable = enablePin.value + if (enable and not oldEnable): + commit() + if (oldEnable and not enable): + turnOff() + oldEnable = enable + + watchdog = not watchdog + halWatchdogPin.value = watchdog + time.sleep(0.05) +except BaseException as e: + reset() + print(("exiting HAL component %s: %s") % (args.name, e)) + h.exit() + diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/hal/hal_replicape_B3_hwconfig b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/hal/hal_replicape_B3_hwconfig new file mode 100755 index 0000000000..4e8ee44a60 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/hal/hal_replicape_B3_hwconfig @@ -0,0 +1,154 @@ +#!/usr/bin/python +# encoding: utf-8 +# vim: set sw=4 sts=4 et: + +''' +A machinekit/LinuxCNC user module for Replicape B3 hardware config + +Controlling various parameters that are exposed through bit-shifters. + +The settings are populated when the "enable" pin is turned on (rising edge) + +The following pins are exported +* enable [IN] + Enable the steppers +* stepper.x.mode [IN] + 0 means stealthChop, 1 means spreadCycle +* watchdog [OUT] + A pin that toggles at every loop informing HAL that this component is alive + +Copyright (c) 2013 Sam Wong + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +''' + +import argparse +import sys +import time + +import hal +from spi import SPI + +parser = argparse.ArgumentParser(description='HAL component to configure Replicape hardware') +parser.add_argument('-n','--name', help='HAL component name', required=True) +args = parser.parse_args() + +# Initialize SPI +spi_shifter = None + +# Load SPI module +try: + # Init the SPI for the serial to parallel + try: + spi_shifter = SPI((0, 1)) + except IOError: + spi_shifter = SPI((1, 1)) + spi_shifter.mode = 0 +except IOError: + print("Unable to set up SPI") + exit(-1) + +# Initialize HAL +h = hal.component(args.name) +enablePin = h.newpin("enable", hal.HAL_BIT, hal.HAL_IN) + +N = 5 # We have 5 steppers +modePins = [None] * N + +for i in xrange(N): + modePins[i] = h.newpin(("stepper.%d.mode" % i), hal.HAL_U32, hal.HAL_IN) +halWatchdogPin = h.newpin("watchdog", hal.HAL_BIT, hal.HAL_OUT) +h.ready() + +''' +The bits in the shift register are as follows (Rev B3) : +Bit - name - init val +D0 = (0) EN_XYZ = 1 (Disable) + (1) SERVO_0_EN = 0 (Disable) + (2) SERVO_1_EN = 0 (Disable) + (3) EN_Extruders = 1 (Disable) + (4) Stepper_Tristate = 1 (Tied) +D1 = CFG5 = 0 (Chopper blank time: 0=16 cycles, 1=24 cycles) +D2 = CFG4 = 0 (Chopper hysteresis: 0=5, 1=9) +D3 = CFG0 = 0 (Chopper off time: 0=140 cycles, 1=236 cycles) +D4 = CFG2 = 0 +D5 = CFG2_Tristate = 0 (Hi-Z) +D6 = CFG1 = 0 +D7 = CFG1_Tristate = 0 (Hi-Z) stealthChop +''' + +def commit(): + ''' Committing what has been specified in HAL ''' + + # Writing the modes + bytes = [] + for i in range(0,N): + # State: CFG2 CFG1 Microsteps + # Interpolation + # Chopper Mode + # 0x0*: open open 16 Y stealthChop + # 0x1*: open open 16 Y stealthChop + # 0x2*: GND open 2 Y spreadCycle + # 0x3*: VCC open 4 Y spreadCycle + # 0x4*: open open 16 Y stealthChop + # 0x5*: open open 16 Y stealthChop + # 0x6*: GND open 2 Y spreadCycle + # 0x7*: VCC open 4 Y spreadCycle + # 0x8*: open GND 16 Y spreadCycle + # 0x9*: open GND 16 Y stealthChop + # 0xA*: GND GND 1 N spreadCycle + # 0xB*: VCC GND 4 N spreadCycle + # 0xC*: open VCC 4 Y stealthChop + # 0xD*: open VCC 4 Y stealthChop + # 0xE*: GND VCC 2 N spreadCycle + # 0xF*: VCC VCC 16 N spreadCycle + state = modePins[i].value & 0xFE + if (i == 0 or i == 3) and not enablePin.value: + state = state | 1 + if (i == 4): + state = state | 1 + bytes.append(state) + # Reverse the writting orders due to serial chain sequence + spi_shifter.write(bytes[::-1]) + +def reset(): + ''' Turn off the stepper chips ''' + + # Writing the modes + bytes = [] + for i in range(0,N): + state = modePins[i].value & 0xFE + if (i == 0 or i == 3): + state = state | 1 + if (i == 4): + state = state | 1 + bytes.append(state) + # Reverse the writting orders due to serial chain sequence + spi_shifter.write(bytes[::-1]) + +watchdog = True +try: + oldEnable = False + commit() + time.sleep(0.05) + while (True): + enable = enablePin.value + # Only commit the new values when enable changes + if (enable and not oldEnable): + commit() + if (oldEnable and not enable): + commit() + oldEnable = enable + + watchdog = not watchdog + halWatchdogPin.value = watchdog + time.sleep(0.05) +except BaseException as e: + reset() + print(("exiting HAL component %s: %s") % (args.name, e)) + h.exit() + diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/hal/hal_replicape_dac b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/hal/hal_replicape_dac new file mode 100755 index 0000000000..a48198354b --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/hal/hal_replicape_dac @@ -0,0 +1,100 @@ +#!/usr/bin/python +# encoding: utf-8 +# vim: set sw=4 sts=4 et: + +''' +A machinekit/LinuxCNC user module for Replicape A4A DAC control +Interface with DAC088S085 on SPI for stepper driver current limit + +The settings are populated when the "enable" pin is turned on (rising edge) + +The following pins are exported +* enable + Enable the steppers +* x.current + Current settings for steppers 0 to 4. + Value is treated as current in Amps +* watchdog + A pin that toggles at every loop informing HAL that this component is alive + +Copyright (C) 2013 Sam Wong + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +''' + +import argparse +import glob +import sys +import time + +import hal +from spi import SPI + +parser = argparse.ArgumentParser(description='HAL component to configure Replicape hardware') +parser.add_argument('-n','--name', help='HAL component name',required=True) +args = parser.parse_args() + +# Initialize SPI +spi_dac = None + +# Load SPI module +try: + # init the SPI for the DAC + try: + spi_dac = SPI((0, 0)) + except IOError: + spi_dac = SPI((1, 0)) + spi_dac.mode = 1 + +except IOError: + print("Unable to set up SPI") + exit(-1) + +# Initialize HAL +h = hal.component(args.name) +enablePin = h.newpin("enable", hal.HAL_BIT, hal.HAL_IN) + +N = 5 # We have 5 steppers +currentPins = [0] * N + +vRef = 3.3 +rSense = 0.1 + +for i in range(0,N): + currentPins[i] = h.newpin(("%d.current" % i), hal.HAL_FLOAT, hal.HAL_IN) +halWatchdogPin = h.newpin("watchdog", hal.HAL_BIT, hal.HAL_OUT) +h.ready() + +def commit(): + # Writing the current + for i in xrange(N): + vOut = currentPins[i].value * 5.0 * rSense + dacVal = int((vOut * 256.0) / vRef) + spi_dac.write([ \ + (dacVal & 0xF0) >> 4 | (i << 4), \ + (dacVal & 0x0F) << 4]) + spi_dac.write([0xA0, 0xFF]) # Commits to output + +watchdog = True +try: + oldEnable = False + commit() + time.sleep(0.05) + while (True): + enable = enablePin.value + if (enable and not oldEnable): + commit() + oldEnable = enable + + watchdog = not watchdog + halWatchdogPin.value = watchdog + time.sleep(0.05) +except BaseException as e: + reset() + print(("exiting HAL component %s: %s") % (args.name, e)) + h.exit() + diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/hal/hal_replicape_pwm b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/hal/hal_replicape_pwm new file mode 100755 index 0000000000..0f8b373f42 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/hal/hal_replicape_pwm @@ -0,0 +1,134 @@ +#!/usr/bin/python +# encoding: utf-8 +# vim: set sw=4 sts=4 et: + +''' +A machinekit/LinuxCNC user module for Replicape PWM control +Interface with PCA9685 on SMBus + +The PWM is enabled when the "enable" pin is turned on + +The following pins are exported +* enable + Enable the PWM +* out.x + PWM output for channel 0 to 15. Values are from 0.0 to 1.0 +* watchdog + A pin that toggles at every loop informing HAL that this component is alive + +Copyright (c) 2013 Sam Wong + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +''' + +import argparse +import glob +import sys +import time + +import hal +import smbus + +parser = argparse.ArgumentParser(description='HAL component to configure Replicape hardware') +parser.add_argument('-n', '--name', help='HAL component name', required=True) +parser.add_argument('-b', '--bus_id', help='I2C bus id', default=2) +# 0x70 is the ALL Call address of PCA9685 +parser.add_argument('-a', '--address', help='I2C device address', default=0x70) +parser.add_argument('-i', '--interval', help='HAL update loop interval', default=0.05) +parser.add_argument('-d', '--debug', help='Debug - Turn off all output and exit', action='store_true') +args = parser.parse_args() + +loop_interval = float(args.interval) +PCA9685_ADDR = int(args.address) +PCA9685_MODE1 = 0x0 +PCA9685_PRESCALE = 0xFE +PCA9685_ALL_LED_ON_L = 0xFA +N = 16 + +bus = None +try: + bus = smbus.SMBus(int(args.bus_id)) +except IOError: + print("Unable to set up PWM chip") + exit(-1) + +def initChip(): + bus.write_byte(0x00, 0x06) # Broadcast Reset + time.sleep(0.01) + + freq = 100 + prescaleval = 25000000 + prescaleval /= 4096 + prescaleval /= float(freq) + prescaleval -= 1 + prescale = int(prescaleval + 0.5) + + bus.write_byte_data(PCA9685_ADDR, PCA9685_MODE1, 0x11) # Sleep + bus.write_byte_data(PCA9685_ADDR, PCA9685_PRESCALE, prescale) + bus.write_byte_data(PCA9685_ADDR, PCA9685_MODE1, 0x21) # Out of sleep + time.sleep(0.01) + bus.write_byte_data(PCA9685_ADDR, PCA9685_MODE1, 0xA1) # Restart, AI, Allcall + +def turnOff(): + bus.write_i2c_block_data(PCA9685_ADDR, PCA9685_ALL_LED_ON_L, [0, 0, 0, 0x10]); # All off + if (not args.debug): + for i in range(0,N): + onPins[i].value = 0 + oldOutputs[i] = 0 + +for i in range(0,N): + oldOutputs = 0.0 + +if (not args.debug): + # Initialize HAL + h = hal.component(args.name) + enablePin = h.newpin("enable", hal.HAL_BIT, hal.HAL_IN) + halWatchdogPin = h.newpin("watchdog", hal.HAL_BIT, hal.HAL_OUT) + outPins = [None] * N + onPins = [None] * N + oldOutputs = [0] * N + for i in range(0,N): + outPins[i] = h.newpin(("%d.out" % i), hal.HAL_FLOAT, hal.HAL_IN) + onPins[i] = h.newpin(("%d.on" % i), hal.HAL_BIT, hal.HAL_OUT) + onPins[i].value = 0 + h.ready() + +initChip() +turnOff() + +if (args.debug): + exit(0) + +def commit(): + for i in range(0,N): + if (outPins[i].value != oldOutputs[i]): + oldOutputs[i] = outPins[i].value + off = min(1.0, oldOutputs[i]) + off = int(off * 4095) + onPins[i].value = off > 0 + bytes = [0x00, 0x00, off & 0xFF, off >> 8] + bus.write_i2c_block_data(PCA9685_ADDR, 0x06 + (4 * i), bytes) + +watchdog = True +try: + oldEnable = False + while True: + watchdog = not watchdog + enable = enablePin.value + if enable: + commit() + if oldEnable and not enable: + turnOff() + oldEnable = enable + + halWatchdogPin.value = watchdog + time.sleep(loop_interval) +except BaseException as e: + turnOff() + print(("exiting HAL component %s: %s") % (args.name, e)) + h.exit() + diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/hardware.py b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/hardware.py new file mode 100644 index 0000000000..5b3f48e916 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/hardware.py @@ -0,0 +1,293 @@ +#!/usr/bin/python2 +# encoding: utf-8 + +from machinekit import rtapi +from machinekit import hal +from machinekit import config +import os + +SERVO_THREAD = 'servo-thread' +USR_HAL_PATH = os.path.dirname(os.path.realpath(__file__)) + '/hal/' + +class Replicape(object): + def __init__(self): + self.pru = rtapi.loadrt('hal_pru_generic', + pru=0, num_stepgens=5, num_pwmgens=0, halname='hpg', + prucode='%s/rt-preempt/pru_generic.bin' % (config.Config().EMC2_RTLIB_DIR)) +# 4.14.18-ti-rt-r33 kernel and rt-preempt + hal.addf('hpg.capture-position', SERVO_THREAD) + hal.addf('hpg.update', SERVO_THREAD) + hal.addf('bb_gpio.read', SERVO_THREAD) + hal.addf('bb_gpio.write', SERVO_THREAD) + minvel = config.find('TRAJ','MIN_VELOCITY', 0.001) + for i in xrange(5): + self.get_pru_pin('stepgen.%02i.dirsetup' % i).set(200) + self.get_pru_pin('stepgen.%02i.dirhold' % i).set(200) + self.get_pru_pin('stepgen.%02i.steplen' % i).set(1000) + self.get_pru_pin('stepgen.%02i.stepspace' % i).set(1000) + self.get_pru_pin('stepgen.%02i.dirpin' % i).set(self.pru_dir_pin(i)) + self.get_pru_pin('stepgen.%02i.steppin' % i).set(self.pru_step_pin(i)) +# setting to zero: pru_generic adapts to maximum velocity and acceleration +# see http://www.machinekit.io/docs/man/man9/hal_pru_generic/ + self.get_pru_pin('stepgen.%02i.maxvel' % i).set(0) + self.get_pru_pin('stepgen.%02i.maxaccel' % i).set(0) + +# use new pru stepgen minvel pin to avoid pru hunting problem (without PID loop) +# see this discussion https://groups.google.com/forum/#!topic/machinekit/ATEwvfgoIb4 +# except for extruder(s) + if i < 3 : + self.get_pru_pin('stepgen.%02i.minvel' % i).set(minvel) + + self.pwm = hal.loadusr(USR_HAL_PATH + 'hal_replicape_pwm', + name='replicape_pwm', + wait_name='replicape_pwm') + + self.watchdog_sigs = [] + for pin in self.get_watchdog_pins(): + s = hal.newsig('replicape.watchdog.%d' % len(self.watchdog_sigs), hal.HAL_BIT) + pin.link(s) + self.watchdog_sigs.append(s) + + def get_pru_pin(self, pin_name): + return hal.Pin('hpg.%s' % pin_name) + + def get_gpio_pin(self, pin_name): + return hal.Pin('bb_gpio.%s' % pin_name) + + def pru_step_pin(self, nr): + if nr == 0: + return 817 + if nr == 1: + return 812 + if nr == 2: + return 813 + if nr == 3: + return 912 + if nr == 4: + return 811 + raise ValueError('Axis out of range') + + def pru_dir_pin(self, nr): + if nr == 0: + return 826 + if nr == 1: + return 819 + if nr == 2: + return 814 + if nr == 3: + return 815 + if nr == 4: + return 816 + raise ValueError('Axis out of range') + + def link_enable(self, enable_sig, enable_inv_sig): + raise NotImplementedError() + + def set_motor_current(self, port, current): + raise NotImplementedError() + + def get_watchdog_pins(self): + raise NotImplementedError() + + def get_watchdog_sigs(self): + return self.watchdog_sigs + + def link_to_pwm(self, port, signal): + self.pwm.pin('%i.out' % port).link(signal) + + def get_stepgen(self, port): + return 'stepgen.%02i' % self.get_motor_port(port) + + def get_motor_port(self, port): + port = str(port) + if port == 'X' or port == '0': + return 0 + if port == 'Y' or port == '1': + return 1 + if port == 'Z' or port == '2': + return 2 + if port == 'E' or port == 'E1' or port == '3': + return 3 + if port == 'H' or port == 'E2' or port == '4': + return 4 + raise ValueError('Port %s is unknown' % port) + + def get_limit_pin(self, axis, is_max): + raise NotImplementedError() + + def get_probe_pin(self): + raise NotImplementedError() + + def get_fan_pwm_pin(self, index): + raise NotImplementedError() + + def get_fan_on_pin(self, index): + raise NotImplementedError() + + def get_extruder_pwm_pin(self, index): + raise NotImplementedError() + + def get_extruder_on_pin(self, index): + raise NotImplementedError() + + def get_hbp_pwm_pin(self): + raise NotImplementedError() + + def get_hbp_on_pin(self): + raise NotImplementedError() + + def get_extruder_adc_channel(self, index): + if index == 0: return 4 + if index == 1: return 5 + raise ValueError('index must be 0 to 1') + + def get_hbp_adc_channel(self): + return 6 + +class ReplicapeB3A(Replicape): + def __init__(self): + self.gpio = rtapi.loadrt('hal_bb_gpio', + output_pins='941', + input_pins='810,809,924,818,923,925,928,918,911,913') + + self.hwconfig = hal.loadusr(USR_HAL_PATH + 'hal_replicape_B3_hwconfig', + name='replicape_hwconfig', + wait_name='replicape_hwconfig') + + for i in xrange(5): + # Default: spreadMode, microstepping=1/16 + self.hwconfig.pin('stepper.%i.mode' % i).set(config.find('FDM','STEPPER_%i_MODE' % i, 0x80)) + + super(ReplicapeB3A, self).__init__() + + def link_enable(self, enable_sig, enable_inv_sig): + self.get_gpio_pin('p9.out-41').link(enable_inv_sig) + self.hwconfig.pin('enable').link(enable_sig) + self.pwm.pin('enable').link(enable_sig) + for i in xrange(5): + self.get_pru_pin('stepgen.%02i.enable' % i).link(enable_sig) + + def set_motor_current(self, port, current): + if port < 0 or port > 4: + raise ValueError('Port must be 0 to 4') + if current < 0 or current > 1.5: + raise ValueError('Current must be 0 to 1.5') + value = current / 3.84 + self.pwm.pin('%i.out' % (port + 11)).set(value) + + def get_watchdog_pins(self): + return [self.hwconfig.pin('watchdog'), self.pwm.pin('watchdog')] + + def get_limit_pin(self, axis, is_max): + # Return END_STOP_*_1 pins in all situations + if axis == 'X': return self.get_gpio_pin('p9.in-25') + if axis == 'Y': return self.get_gpio_pin('p9.in-23') + if axis == 'Z': return self.get_gpio_pin('p9.in-13') + raise NotImplementedError() + + def get_probe_pin(self): + return self.get_gpio_pin('p9.in-18') + + def get_fan_pwm_pin(self, index): + if index < 0 or index > 3: + raise ValueError('index must be 0 to 3') + return self.pwm.pin('%i.out' % (index + 7)) + + def get_fan_on_pin(self, index): + if index < 0 or index > 3: + raise ValueError('index must be 0 to 3') + return self.pwm.pin('%i.on' % (index + 7)) + + def get_extruder_pwm_pin(self, index): + if index == 0: return self.pwm.pin('5.out') + if index == 1: return self.pwm.pin('3.out') + raise ValueError('index must be 0 to 1') + + def get_extruder_on_pin(self, index): + if index == 0: return self.pwm.pin('5.on') + if index == 1: return self.pwm.pin('3.on') + raise ValueError('index must be 0 to 1') + + def get_hbp_pwm_pin(self): + return self.pwm.pin('4.out') + + def get_hbp_on_pin(self): + return self.pwm.pin('4.on') + +class ReplicapeA4A(Replicape): + def __init__(self): + self.gpio = rtapi.loadrt('hal_bb_gpio', + output_pins='', + input_pins='810,809,924,818,923,925,916,918,911,913') + + self.dac = hal.loadusr(USR_HAL_PATH + 'hal_replicape_dac', + name='replicape_dac', + wait_name='replicape_dac') + + self.hwconfig = hal.loadusr(USR_HAL_PATH + 'hal_replicape_A4_hwconfig', + name='replicape_hwconfig', + wait_name='replicape_hwconfig') + + for i in xrange(5): + # Default: microstepping=1/32, fast decay + self.hwconfig.pin('stepper.%i.microstepping' % i).set(config.find('FDM','STEPPER_%i_MICROSTEPPING' % i, 5)) + self.hwconfig.pin('stepper.%i.decay' % i).set(config.find('FDM','STEPPER_%i_DECAY' % i, 0)) + + super(ReplicapeA4A, self).__init__() + + def link_enable(self, enable_sig, enable_inv_sig): + self.dac.pin('enable').link(enable_sig) + self.hwconfig.pin('enable').link(enable_sig) + self.pwm.pin('enable').link(enable_sig) + for i in xrange(5): + self.get_pru_pin('stepgen.%02i.enable' % i).link(enable_sig) + + def set_motor_current(self, port, current): + if port < 0 or port > 4: + raise ValueError('Port must be 0 to 4') + if current < 0 or current > 1.5: + raise ValueError('Current must be 0 to 1.5') + self.dac.pin('%i.current' % port).set(current) + + def get_watchdog_pins(self): + return [self.hwconfig.pin('watchdog'), self.pwm.pin('watchdog'), self.dac.pin('watchdog')] + + def get_limit_pin(self, axis, is_max): + if axis == 'X' and not is_max: return self.get_gpio_pin('p9.in-25') + if axis == 'X' and is_max: return self.get_gpio_pin('p9.in-11') + if axis == 'Y' and not is_max: return self.get_gpio_pin('p9.in-23') + if axis == 'Y' and is_max: return self.get_gpio_pin('p9.in-16') + if axis == 'Z' and not is_max: return self.get_gpio_pin('p9.in-13') + if axis == 'Z' and is_max: return self.get_gpio_pin('p9.in-18') + raise NotImplementedError() + + def get_probe_pin(self): + return None + + def get_fan_pwm_pin(self, index): + if index == 3 or index == 4: return self.pwm.pin('%i.out' % (index - 3 + 14)) + if index < 3: return self.pwm.pin('%i.out' % (index + 8)) + if index == 5: return self.pwm.pin('%i.out' % (7)) + raise ValueError('index must be 0 to 5') + + def get_fan_on_pin(self, index): + if index == 3 or index == 4: return self.pwm.pin('%i.on' % (index - 3 + 14)) + if index < 3: return self.pwm.pin('%i.on' % (index + 8)) + if index == 5: return self.pwm.pin('%i.on' % (7)) + raise ValueError('index must be 0 to 5') + + def get_extruder_pwm_pin(self, index): + if index == 0: return self.pwm.pin('5.out') + if index == 1: return self.pwm.pin('3.out') + raise ValueError('index must be 0 to 1') + + def get_extruder_on_pin(self, index): + if index == 0: return self.pwm.pin('5.on') + if index == 1: return self.pwm.pin('3.on') + raise ValueError('index must be 0 to 1') + + def get_hbp_pwm_pin(self): + return self.pwm.pin('4.out') + + def get_hbp_on_pin(self): + return self.pwm.pin('4.on') diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/io_muxn_bit.icomp b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/io_muxn_bit.icomp new file mode 100644 index 0000000000..238b58fc3a --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/io_muxn_bit.icomp @@ -0,0 +1,90 @@ +/****************************************************************************** + * + * Copyright (C) 2015 Alexander Rössler + * + * + * This module acts as multiplexing gate for IO sinnals + * + ****************************************************************************** + * + * This program 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 2 + * of the License, or (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + * + * THE AUTHORS OF THIS PROGRAM ACCEPT ABSOLUTELY NO LIABILITY FOR + * ANY HARM OR LOSS RESULTING FROM ITS USE. IT IS _EXTREMELY_ UNWISE + * TO RELY ON SOFTWARE ALONE FOR SAFETY. Any machinery capable of + * harming persons must have provisions for completely removing power + * from all motors, etc, before persons enter any danger area. All + * machinery must be designed to comply with local and national safety + * codes, and the authors of this software can not, and do not, take + * any responsibility for such compliance. + * + * This code was written as part of the LinuxCNC project. For more + * information, go to www.linuxcnc.org. + * + ******************************************************************************/ +component io_muxn_bit "Gate one of N input bit values"; +pin in s32 sel = 0; +pin io bit out +""" +Follows the value of *in* whereas M is the value of the *sel* input. +If *sel* is not in the range of available inputs 0 is output. +"""; +pin io bit in#.[pincount]; + +variable hal_s32_t last_sel = -1; // will apply input to output on start-up +variable hal_bit_t last_in = 0; +variable hal_bit_t last_out = 0; + +instanceparam int pincount = 2; + +option MAXCOUNT 16; + +function _ fp; +license "GPL"; +author "Sam Wong"; +;; +FUNCTION(_) +{ + if ((sel < 0) || (sel >= local_pincount)) + { + return 0; // incorrect sel, we change nothing + } + + if (sel != last_sel) + { + out = in_(sel); + last_sel = sel; + last_out = out; + last_in = in_(sel); + } + else + { + if (last_out != out) + { + in_(sel) = out; + last_out = out; + last_in = out; + } + else if (last_in != in_(sel)) + { + out = in_(sel); + last_in = in_(sel); + last_out = in_(sel); + } + } + + return 0; +} diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/muxn_bit.icomp b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/muxn_bit.icomp new file mode 100644 index 0000000000..32ffe8335b --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/muxn_bit.icomp @@ -0,0 +1,84 @@ +/****************************************************************************** + * + * Copyright (C) 2015 Alexander Rössler + * + * + * This module acts as multiplexing gate for IO sinnals + * + ****************************************************************************** + * + * This program 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 2 + * of the License, or (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + * + * THE AUTHORS OF THIS PROGRAM ACCEPT ABSOLUTELY NO LIABILITY FOR + * ANY HARM OR LOSS RESULTING FROM ITS USE. IT IS _EXTREMELY_ UNWISE + * TO RELY ON SOFTWARE ALONE FOR SAFETY. Any machinery capable of + * harming persons must have provisions for completely removing power + * from all motors, etc, before persons enter any danger area. All + * machinery must be designed to comply with local and national safety + * codes, and the authors of this software can not, and do not, take + * any responsibility for such compliance. + * + * This code was written as part of the LinuxCNC project. For more + * information, go to www.linuxcnc.org. + * + ******************************************************************************/ +component muxn_bit "Gate one of N input bit values"; +pin in s32 sel = 0; +pin out bit out +""" +Follows the value of *in* whereas M is the value of the *sel* input. +If *sel* is not in the range of available inputs 0 is output. +"""; +pin in bit in#.[pincount]; + +variable hal_s32_t last_sel = -1; // will apply input to output on start-up +variable hal_bit_t last_in = 0; +variable hal_bit_t last_out = 0; + +instanceparam int pincount = 2; + +option MAXCOUNT 16; + +function _ fp; +license "GPL"; +author "Sam Wong"; +;; +FUNCTION(_) +{ + if ((sel < 0) || (sel >= local_pincount)) + { + return 0; // incorrect sel, we change nothing + } + + if (sel != last_sel) + { + out = in_(sel); + last_sel = sel; + last_out = out; + last_in = in_(sel); + } + else + { + if (last_in != in_(sel)) + { + out = in_(sel); + last_in = in_(sel); + last_out = in_(sel); + } + } + + return 0; +} diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/reset.icomp b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/reset.icomp new file mode 100644 index 0000000000..a8952a399b --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/reset.icomp @@ -0,0 +1,71 @@ +/****************************************************************************** + * + * Copyright (C) 2015 Alexander Rössler + * + * + * This module resets a IO signal + * + ****************************************************************************** + * + * This program 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 2 + * of the License, or (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + * + * THE AUTHORS OF THIS PROGRAM ACCEPT ABSOLUTELY NO LIABILITY FOR + * ANY HARM OR LOSS RESULTING FROM ITS USE. IT IS _EXTREMELY_ UNWISE + * TO RELY ON SOFTWARE ALONE FOR SAFETY. Any machinery capable of + * harming persons must have provisions for completely removing power + * from all motors, etc, before persons enter any danger area. All + * machinery must be designed to comply with local and national safety + * codes, and the authors of this software can not, and do not, take + * any responsibility for such compliance. + * + * This code was written as part of the LinuxCNC project. For more + * information, go to www.linuxcnc.org. + * + ******************************************************************************/ + +component reset "Resets a IO signal"; +pin in bit trigger "Trigger input"; +pin io u32 out_u32 = 0 "Unsigned 32 bit integer output value"; +pin in u32 reset_u32 = 0 "Unsigned 32 bit integer reset value"; +pin io s32 out_s32 = 0 "Signed 32 bit integer output value"; +pin in s32 reset_s32 = 0 "Signed 32 bit integer reset value"; +pin io float out_float = 0.0 "Float output value"; +pin in float reset_float = 0.0 "Float reset value"; +pin io bit out_bit = 0 "Bit integer output value"; +pin in bit reset_bit = 0 "Bit reset value"; +pin in bit retriggerable = 1 "Allow additional edges to reset"; +pin in bit rising = 1 "Trigger on rising edge"; +pin in bit falling = 0 "Trigger on falling edge"; +function _ fp "Update the output value"; +description """ +Component to reset IO signals. +"""; +license "GPL"; +variable hal_bit_t last_trigger = 0; +;; +FUNCTION(_) { + if (((rising && (trigger == 1)) || (falling && (trigger == 0))) + && (trigger != last_trigger)) + { + out_u32 = reset_u32; + out_s32 = reset_s32; + out_float = reset_float; + out_bit = reset_bit; + } + last_trigger = trigger; + + return 0; +} diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/set_pru_gpio.sh b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/set_pru_gpio.sh new file mode 100755 index 0000000000..417323ece0 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/set_pru_gpio.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +if [ ! -r /sys/class/gpio/gpio61 ] ; then +# Output-Ports (pru)) + for Port in 45 44 23 26 47 46 27 22 61 60 + do + echo "$Port" > /sys/class/gpio/export +#wait until exported gpio is available + while [ ! -r /sys/class/gpio/gpio${Port} ]; + do + : + done +#set to output low + echo "low" > /sys/class/gpio/gpio${Port}/direction + done; +fi diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/temperature.py b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/temperature.py new file mode 100644 index 0000000000..c471948194 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/temperature.py @@ -0,0 +1,218 @@ +#!/usr/bin/python2 +# encoding: utf-8 + +from machinekit import rtapi +from machinekit import hal +from machinekit import config +import os +import math + +SERVO_THREAD = 'servo-thread' +USR_HAL_PATH = os.path.dirname(os.path.realpath(__file__)) + '/hal/' + +class Temperature(object): + def __init__(self, temp_hal, pwm_pin, on_pin, + enable_sig, estop_reset_sig, + config_name, comp_name, hal_name, motion_pin_number): + self.temp_hal = temp_hal + + comp = hal.RemoteComponent(comp_name, timer=100) + comp_limit_min_pin = comp.newpin('temp.limit.min', hal.HAL_FLOAT, hal.HAL_IN) + comp_limit_max_pin = comp.newpin('temp.limit.max', hal.HAL_FLOAT, hal.HAL_IN) + comp_standby_pin = comp.newpin('temp.standby', hal.HAL_FLOAT, hal.HAL_IN) + comp_meas_pin = comp.newpin('temp.meas', hal.HAL_FLOAT, hal.HAL_IN) + comp_set_pin = comp.newpin('temp.set', hal.HAL_FLOAT, hal.HAL_IO) + comp_in_range_pin = comp.newpin('temp.in-range', hal.HAL_BIT, hal.HAL_IN) + comp_active_pin = comp.newpin('active', hal.HAL_BIT, hal.HAL_IN) + comp_error_pin = comp.newpin('error', hal.HAL_BIT, hal.HAL_IN) + comp.ready() + + # -- General Signals -- + meas_sig = hal.newsig('%s.meas' % hal_name, hal.HAL_FLOAT) + meas_sig.link(temp_hal.pin('value')) + meas_sig.link(comp_meas_pin) + meas_sig.link('motion.analog-in-%02d' % motion_pin_number) + + set_sig = hal.newsig('%s.set' % hal_name, hal.HAL_FLOAT) + set_sig.link(comp_set_pin) + set_sig.link('motion.analog-out-io-%02d' % motion_pin_number) + + limit_min_sig = hal.newsig('%s.limit.min' % hal_name, hal.HAL_FLOAT) + limit_min_sig.link(comp_limit_min_pin) + limit_min_sig.set(config.find(config_name, 'TEMP_LIMIT_MIN', 0.0)) + + limit_max_sig = hal.newsig('%s.limit.max' % hal_name, hal.HAL_FLOAT) + limit_max_sig.link(comp_limit_max_pin) + limit_max_sig.set(config.find(config_name, 'TEMP_LIMIT_MAX', 30.0)) + + standby_sig = hal.newsig('%s.standby' % hal_name, hal.HAL_FLOAT) + standby_sig.link(comp_standby_pin) + standby_sig.set(config.find(config_name, 'TEMP_STANDBY', 15.0)) + + on_sig = hal.newsig('%s.on' % hal_name, hal.HAL_BIT) + on_sig.link(on_pin) + on_sig.link(comp_active_pin) + + error_sig = hal.newsig('%s.error' % hal_name, hal.HAL_BIT) + self.error_sig = error_sig + error_sig.link(comp_error_pin) + + self.temp_watchdog_sig = hal.newsig('%s.watchdog' % hal_name, hal.HAL_BIT) + temp_hal.pin('watchdog').link(self.temp_watchdog_sig) + + # -- Measurement -- + + # In-Range Signal + in_range_sig = hal.newsig('%s.in-range' % hal_name, hal.HAL_BIT) + in_range_sig.link(comp_in_range_pin) + in_range_sig.link('motion.digital-in-%02d' % motion_pin_number) + + range_lb_sum = rtapi.newinst('sum2', '%s.range.lb.sum2' % hal_name) + hal.addf(range_lb_sum.name, SERVO_THREAD) + range_ub_sum = rtapi.newinst('sum2', '%s.range.ub.sum2' % hal_name) + hal.addf(range_ub_sum.name, SERVO_THREAD) + range_lb_sig = hal.newsig('%s.range.lb' % hal_name, hal.HAL_FLOAT) + range_ub_sig = hal.newsig('%s.range.ub' % hal_name, hal.HAL_FLOAT) + + range_lb_sum.pin('in0').link(set_sig) + range_lb_sum.pin('in1').set(float(config.find(config_name, 'TEMP_RANGE_NEG_ERROR', -1.0))) + range_lb_sum.pin('out').link(range_lb_sig) + range_ub_sum.pin('in0').link(set_sig) + range_ub_sum.pin('in1').set(float(config.find(config_name, 'TEMP_RANGE_POS_ERROR', 1.0))) + range_ub_sum.pin('out').link(range_ub_sig) + + range_wcomp = rtapi.newinst('wcomp', '%s.range.wcomp' % hal_name) + hal.addf(range_wcomp.name, SERVO_THREAD) + range_wcomp.pin('min').link(range_lb_sig) + range_wcomp.pin('max').link(range_ub_sig) + range_wcomp.pin('in').link(meas_sig) + range_wcomp.pin('out').link(in_range_sig) + + # -- Output -- + pwm_raw_sig = hal.newsig('%s.pwm_raw' % hal_name, hal.HAL_FLOAT) + pwm_sig = hal.newsig('%s.pwm' % hal_name, hal.HAL_FLOAT) + pwm_max = float(config.find(config_name, 'PWM_MAX', 1.0)) + + # PID + pid = rtapi.newinst('at_pid', '%s.pid' % hal_name) + hal.addf(pid.name + '.do-pid-calcs', SERVO_THREAD) + pid.pin('enable').link(enable_sig) + pid.pin('feedback').link(meas_sig) + pid.pin('command').link(set_sig) + pid.pin('output').link(pwm_raw_sig) + pid.pin('maxoutput').set(pwm_max) + pid.pin('Pgain').set(float(config.find(config_name, 'PID_PGAIN', 0))) + pid.pin('Igain').set(float(config.find(config_name, 'PID_IGAIN', 0))) + pid.pin('Dgain').set(float(config.find(config_name, 'PID_DGAIN', 0))) + pid.pin('maxerrorI').set(float(config.find(config_name, 'PID_MAXERRORI', 1.0))) + pid.pin('bias').set(float(config.find(config_name, 'PID_BIAS', 0.0))) + + # PWM Limit (PID can output negative values) + pwm_limit = rtapi.newinst('limit1', '%s.limit1.pwm' % hal_name) + hal.addf(pwm_limit.name, SERVO_THREAD) + pwm_limit.pin('min').set(0.0) + pwm_limit.pin('max').set(pwm_max) + pwm_limit.pin('in').link(pwm_raw_sig) + pwm_limit.pin('out').link(pwm_sig) + + pwm_pin.link(pwm_sig) + + # -- Safety Check -- + check_limit_ok_sig = hal.newsig('%s.check.limit-ok' % hal_name, hal.HAL_BIT) + + limit_wcomp = rtapi.newinst('wcomp', '%s.check.limit.wcomp' % hal_name) + hal.addf(limit_wcomp.name, SERVO_THREAD) + limit_wcomp.pin('min').link(limit_min_sig) + limit_wcomp.pin('max').link(limit_max_sig) + limit_wcomp.pin('in').link(meas_sig) + limit_wcomp.pin('out').link(check_limit_ok_sig) + + out_range_sig = hal.newsig('%s.out-range' % hal_name, hal.HAL_BIT) + out_range_not = rtapi.newinst('not', '%s.out-range.not' % hal_name) + hal.addf(out_range_not.name, SERVO_THREAD) + out_range_not.pin('in').link(in_range_sig) + out_range_not.pin('out').link(out_range_sig) + + thermistor_check_enable_sig = hal.newsig('%s.check.therm.enable' % hal_name, hal.HAL_BIT) + thermistor_check_enable_and = rtapi.newinst('and2', '%s.check.therm.enable.and2' % hal_name) + hal.addf(thermistor_check_enable_and.name, SERVO_THREAD) + thermistor_check_enable_and.pin('in0').link(enable_sig) + thermistor_check_enable_and.pin('in1').link(out_range_sig) + thermistor_check_enable_and.pin('out').link(thermistor_check_enable_sig) + + check_thermistor_ok_sig = hal.newsig('%s.check.therm-ok' % hal_name, hal.HAL_BIT) + thermistor_check = rtapi.newinst('thermistor_check', '%s.check.therm-check' % hal_name) + hal.addf(thermistor_check.name, SERVO_THREAD) + thermistor_check.pin('enable').link(thermistor_check_enable_sig) + thermistor_check.pin('pid').link(pwm_sig) + thermistor_check.pin('temp').link(meas_sig) + thermistor_check.pin('min-pid').set(float(config.find(config_name, 'CHECK_MIN_PID', 0.25))) + thermistor_check.pin('min-temp').set(float(config.find(config_name, 'CHECK_MIN_TEMP', 2.0))) + thermistor_check.pin('wait').set(float(config.find(config_name, 'CHECK_WAIT', 30.0))) + thermistor_check.pin('no-error').link(check_thermistor_ok_sig) + + check_all_ok_sig = hal.newsig('%s.check.all-ok' % hal_name, hal.HAL_BIT) + check_all_ok = rtapi.newinst('and2', '%s.check.all.and2' % hal_name) + hal.addf(check_all_ok.name, SERVO_THREAD) + check_all_ok.pin('in0').link(check_limit_ok_sig) + check_all_ok.pin('in1').link(check_thermistor_ok_sig) + check_all_ok.pin('out').link(check_all_ok_sig) + + check_error_sig = hal.newsig('%s.check.error' % hal_name, hal.HAL_BIT) + check_error = rtapi.newinst('not', '%s.check.error.not' % hal_name) + hal.addf(check_error.name, SERVO_THREAD) + check_error.pin('in').link(check_all_ok_sig) + check_error.pin('out').link(check_error_sig) + + error_latch = rtapi.newinst('flipflop', '%s.check.error.flipflop' % hal_name) + hal.addf(error_latch.name, SERVO_THREAD) + error_latch.pin('set').link(check_error_sig) + error_latch.pin('reset').link(estop_reset_sig) + error_latch.pin('out').link(error_sig) + + def get_temp_watchdog_sig(self): + return self.temp_watchdog_sig + + def get_error_sig(self): + return self.error_sig + + +class ExtruderTemperature(Temperature): + def __init__(self, replicape, index, enable_sig, estop_reset_sig): + config_name = 'EXTRUDER_%s' % (index) + thermistor = config.find(config_name, 'THERMISTOR', '') + if thermistor == '': + raise ValueError('[%s] THERMISTOR must be defined' % (config_name)) + + temp_hal = hal.loadusr(USR_HAL_PATH + 'hal_bbb_temp', + name='Therm%s' % (index), + wait_name='Therm%s' % (index), + cape_board='Replicape', + channel=replicape.get_extruder_adc_channel(index), + thermistor=thermistor) + + super(ExtruderTemperature, self).__init__( + temp_hal, replicape.get_extruder_pwm_pin(index), replicape.get_extruder_on_pin(index), + enable_sig, estop_reset_sig, + config_name, 'fdm-e%s' % (index), 'temp.e%s' % (index), + index + 2 + ) + +class HbpTemperature(Temperature): + def __init__(self, replicape, enable_sig, estop_reset_sig): + config_name = 'HBP' + thermistor = config.find(config_name, 'THERMISTOR', '') + if thermistor == '': + raise ValueError('[%s] THERMISTOR must be defined' % (config_name)) + + temp_hal = hal.loadusr(USR_HAL_PATH + 'hal_bbb_temp', + name='ThermHbp', + wait_name='ThermHbp', + cape_board='Replicape', + channel=replicape.get_hbp_adc_channel(), + thermistor=thermistor) + + super(HbpTemperature, self).__init__( + temp_hal, replicape.get_hbp_pwm_pin(), replicape.get_hbp_on_pin(), + enable_sig, estop_reset_sig, + config_name, 'fdm-hbp', 'temp.hbp', 0) diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/thermistor_check.icomp b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/thermistor_check.icomp new file mode 100644 index 0000000000..8ba950b963 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/replicape/thermistor_check.icomp @@ -0,0 +1,136 @@ +/****************************************************************************** + * + * Copyright (C) 2014 Alexander Rössler + * + * + * This module checks the functionality of thermistors + * + ****************************************************************************** + * + * This program 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 2 + * of the License, or (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + * + * THE AUTHORS OF THIS PROGRAM ACCEPT ABSOLUTELY NO LIABILITY FOR + * ANY HARM OR LOSS RESULTING FROM ITS USE. IT IS _EXTREMELY_ UNWISE + * TO RELY ON SOFTWARE ALONE FOR SAFETY. Any machinery capable of + * harming persons must have provisions for completely removing power + * from all motors, etc, before persons enter any danger area. All + * machinery must be designed to comply with local and national safety + * codes, and the authors of this software can not, and do not, take + * any responsibility for such compliance. + * + * This code was written as part of the LinuxCNC project. For more + * information, go to www.linuxcnc.org. + * + ******************************************************************************/ + +component thermistor_check "LinuxCNC HAL component for checking functionality of thermistors"; +pin in float temp "Temperature input"; +pin in float min_temp "The minimum temperature change that should count"; +pin in float pid "Output of PID control"; +pin in float min_pid "The minimum PID control output to react to"; +pin in float bias "Bias for the PID input. Can be used to correct errors due to cooling."; +pin in float wait "Time to wait before triggering an error in secods"; +pin in bit enable "Enables or disables the component, out is TRUE when disabled"; +pin out bit no_error "Output value -> TRUE when the thermistor works as exspected"; +pin out bit error "Error value -> FALSE when the thermistor works as exspected"; +function _ fp "Update the output value"; +description """ +Component for checking functionality of thermistors +.LP +TODO +"""; +license "GPL"; +variable hal_float_t last_temp = 0.0; +variable hal_bit_t last_enable = 0; +variable hal_float_t oldwait = 0.0; +variable long t_secs = 0; +variable long t_nsecs = 0; +variable long c_secs = 0; +variable long c_nsecs = 0; +variable hal_bit_t start = 0; +;; +FUNCTION(_) { + hal_float_t temp_change; + hal_float_t time; + + if (wait != oldwait) + { + time = wait; + if (time < 0.0) time = 0.0; // no negative timeout periods + // new timeout, convert to secs/ns + oldwait = time; + t_secs = (long)time; + time -= (hal_float_t)t_secs; + t_nsecs = (long)(1.0e9 * time); + + if (enable) { + // reset + start = 1; + } + } + + if ((enable) && (pid >= (min_pid+bias))) + { + if (start == 1) + { + // reset + c_secs = t_secs; + c_nsecs = t_nsecs; + last_temp = temp; + start = 0; + } + else + { + c_nsecs -= period; + if (c_nsecs < 0) + { + c_nsecs += 1000000000; + if (c_secs > 0) + { + c_secs--; + } + else + { + start = 1; // restart + } + } + + if (start == 1) + { + temp_change = temp - last_temp; + + if (temp_change >= min_temp) // correct + { + no_error = 1; + error = 0; + } + else + { + no_error = 0; + error = 1; + } + } + } + } + else + { + start = 1; + no_error = 1; + error = 0; + } + + return 0; +} diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/run.py b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/run.py new file mode 100755 index 0000000000..cc20205d55 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/run.py @@ -0,0 +1,48 @@ +#!/usr/bin/python2 + +import sys +import os +import errno +import subprocess +import importlib +import argparse +from time import * +from machinekit import launcher + +def mkdir_p(path): + """ 'mkdir -p' in Python """ + try: + os.makedirs(path) + except OSError as exc: # Python <=2.5 + if exc.errno == errno.EEXIST and os.path.isdir(path): + pass + else: + raise + +launcher.register_exit_handler() +# leave debug level off. Setting debug_level(5) will cause cpu overload and will stop +# your printer with joint errors! +# +#launcher.set_debug_level(5) +os.chdir(os.path.dirname(os.path.realpath(__file__))) +#mkdir_p('/tmp/machinekit.ftp') # Create a folder for uploading gcodes + +try: + launcher.check_installation() + launcher.cleanup_session() + launcher.install_comp('replicape/thermistor_check.icomp') + launcher.install_comp('replicape/io_muxn_bit.icomp') + launcher.install_comp('replicape/muxn_bit.icomp') + launcher.install_comp('replicape/reset.icomp') + # Video Streaming: you might need to create your own config + # launcher.start_process("videoserver --ini ~/video.ini Webcam1") + # Remote Control: Get a Machineface at ARM.Replicape.A4A.vel/ + launcher.start_process("configserver -n Replicape ~/Machineface/") + launcher.start_process('linuxcnc replicape.ini') +except subprocess.CalledProcessError: + launcher.end_session() + sys.exit(1) + +while True: + sleep(1) + launcher.check_processes() diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/setup.sh b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/setup.sh new file mode 100755 index 0000000000..e70a417b97 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.B3/setup.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# this file is not needed nor functional for Replicape on Debian Stretch +SLOTS=/sys/devices/bone_capemgr.*/slots +for DTBO in BB-BONE-REPLICAP ; do + if grep -q $DTBO $SLOTS ; then + echo $DTBO overlay found + else + echo $DTBO overlay not found + exit 1 + fi +done; + +if [ ! -r /sys/class/uio/uio0 ] ; then + echo PRU control files not found in /sys/class/uio/uio0 >&2 + exit 1; +fi + diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/README.md b/configs/ARM/BeagleBone/Replicape-Stretch/README.md new file mode 100644 index 0000000000..10b2ba4498 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/README.md @@ -0,0 +1,145 @@ +Replicape Configuration for Debian Stretch and 4.14.x kernel with Delta printer support +======================================================================================= + +This is an update to the work of *Sam Wong* on a fork from github.com/sam0737/machinekit-replicape, which makes the Replicape board useful for Machinekit and 3D printers in velocity extrusion mode. +This configuration is adapted) to Machinekit on Debian Stretch +with an rt-preempt kernel and extended in functionality as described below, notably with support for Delta printers. + +This is to make the Replicape board usable in Machinekit, essentially this contains: + +* Python HAL script linking up the hardware, GPIO, velocity extrusion controlling and exposing remote UI HAL. +* Python HAL module for PWM controlling (Replicape uses a dedicated PWM controller) +* Python HAL module for Stepper configuration such as Enable, Microstepping, Decay, and DAC configuration for the stepper current settings. +* Reprap GCode remap + +Main changes compared to the master branch of github.com/sam0737/machinekit-replicape +------------------------------------------------------------------------------------- + +* adapt to Machinekit on Debian Stretch with 4.14.x rt-preempt kernel and u-boot overlays: + + * using rt-preempt instead of xenomai + * add BOARD_REV variable in ini-file, as u-boot overlays seem not to publish + the Replicape board version in dmesg or cmdline + * check for installed REPLICAPE overlay in /proc/cmdline + * export GPIO pins used by pru stepgen (in "set_pru_gpio.sh", not done by REPLICAPE overlay) + * change "localpincount" to "local_pincount" in icomps to make them compile + +* use the stepgen.xx.minvel pin to avoid "pru hunting" + +* add support for delta printers (lineardeltakins) + * detected by looking for DELTA_R in ini file + * add cartesian HOME-DELTA_Z in ini file so that G28 can be modified to go to Z coordinate at top of build space + instead of Z=0 +* copy more G- and M-code mappings to ../subroutines from /usr/share/linuxcnc/ncfiles/remap-subroutines/fdm/ +* implement M106 (pwm fan control) +* implement M710 (jog filament), M207 (set retract parameters), M221 (set extrusion scale) +* modify G28 to home to X0,Y0,Z(HOME-DELTA_Z) and to disable extrusion + +Prerequisites +------------- + +### BeagleBoneBlack software preparation + +* Machinekit on BeagleBoneBlack + * This configuration is adapted to Machinekit on Debian Stretch with the rt-preempt kernel 4.14.18-ti-rt-r33, to be found at + + + * the present configuration uses an image including the machinekit package: + microSD/Standalone: (machinekit) Based on Debian Stretch with 4.14.x rt kernel with U-Boot Overlays, + specifically: bone-debian-9.3-machinekit-armhf-2018-02-11-4gb.img.xz + An update to kernel 4.14.25-ti-rt-r38 was tested as well (but needed the addition of the PRU overlay, which was optional in the earlier kernel, see below). + Note that the Debian/machinekit packages are frequently updated. + + * make sure your boot loader is not too old, must support u-boot overlays, see above link for instructions to update. + * ssh to BeagleBoneBlack from your host computer and login. If you want X11 support, you will have to "sudo apt-get install xauth" and "touch ~/.Xauthority" + * make sure /boot/uEnv.txt has the following entries (cape_universal not enabled): + +``` + enable_uboot_overlays=1 + #enable_uboot_cape_universal=1 + disable_uboot_overlay_audio=1 + uboot_overlay_pru=/lib/firmware/AM335X-PRU-UIO-00A0.dtbo + cmdline=coherent_pool=1M net.ifnames=0 quiet +``` + + * optional: flash eMMC, instructions see above link + + * this config assumes that there is no "sudo" password required, which was the default in the above Debian Stretch image. + +### If the cape is plugged in and powered on, it should be detected: +``` +cat /proc/cmdline +``` +should show an entry +``` +uboot_detected_capes=BB-BONE-REPLICAP +``` +You can also check the boot protocol on the BBB serial interface for the following entries (board version B3A): +``` +BeagleBone: cape eeprom: i2c_probe: 0x54: /lib/firmware/BB-BONE-REPLICAP-0B3A.dtbo [0xfdcc4bf] +``` +and +``` +uboot_overlays: loading /lib/firmware/BB-BONE-REPLICAP-0B3A.dtbo ... +``` +* Install the following python module, which is used in the HAL +``` +sudo pip install spi +``` +* Copy the Replicape-Stretch configuration to your machinekit configs directory and +``` +cd ~/machinekit/configs/Replicape-Stretch +``` +* Edit the replicape.ini file according to your needs. The included ini file is for a Kossel Mini delta printer. Be sure to set the new BOARD_REV entry to the actual Replicape board revison (B3A or A4A) of your hardware. See for specifics about delta printer setup. +* make sure that ARM.Replicape.B3/replicape/set_pru_gpio.sh is executable. If not +``` +chmod +x ARM.Replicape.B3/replicape/set_pru_gpio.sh +``` + +* Clone Machineface under your BBB user home directory: +``` +cd ~/ +git clone https://github.com/machinekit/Machineface +``` +* Enable Machinekit to accept remote connections: +edit /etc/linuxcnc/machinekit.ini, change REMOTE to 1 + +* Install a machinekit client for your host computer from + +* start mklauncher on BBB (watch the period): +``` +cd ~/machinekit/configs/machinekit-replicape +mklauncher . +``` +* Start the machinekit client on your host computer. Be aware that for a delta printer the jog controls of Machineface work on the joints (carriages on the towers) and not on the cartesian x,y,z coordinates. Switching to teleop mode does not (yet) work in the version (March 2018) that I used. You can however jog the extruder. You can change the filament diameter on the Settings tab, or by adding M200 D[filament_diameter] to the start G-code. + + +### Slicing for velocity extrusion + +* For Cura 3.1.2, machinekit velocity extrusion G-code is created with the "NGCWriter" plugin written by Alexander Rössler. As of March 19, 2018, this is now an official Cura plugin, so you can install it via Plugins > Browse Plugins. For an older version you can get NGCWriter from . Read for explanations. For the Linux version of Cura 3.2.1 (AppImage), copy the NGCWriter folder to ~/.local/share/cura/3.2/plugins/ + Slice and save the file using the "RS-274 GCode file (*.ngc)" option. The NGCWriter postprocessing scripts can also be used to process GCode of other slicers. + + +License +------- +The MIT License (MIT) + +Copyright (c) 2015 Sam Wong + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/launcher.ini b/configs/ARM/BeagleBone/Replicape-Stretch/launcher.ini new file mode 100644 index 0000000000..7eef478bc2 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/launcher.ini @@ -0,0 +1,8 @@ +[DEFAULT] +manufacturer = Sam and Karl +type = FDM + +[ARM.Replicape] +name = ARM.Replicape +description = Replicape powered FDM printer +command = python2 ARM.Replicape.B3/run.py diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/g22.ngc b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/g22.ngc new file mode 100644 index 0000000000..e17473ba2d --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/g22.ngc @@ -0,0 +1,41 @@ +o sub +o100 if [#<_ini[FDM]VELOCITY_EXTRUSION_ENABLE> EQ 1] + #502=1 ; extruder enable index + M65 P#502 +o100 else + #500=#<_a> + o110 if [#<_selected_tool> EQ 0] + #501=#<_ini[EXTRUDER_0]RETRACT_LENGTH> + #502=#<_ini[EXTRUDER_0]RETRACT_VEL> + o110 else if [#<_selected_tool> EQ 1] + #501=#<_ini[EXTRUDER_1]RETRACT_LENGTH> + #502=#<_ini[EXTRUDER_1]RETRACT_VEL> + o110 else if [#<_selected_tool> EQ 2] + #501=#<_ini[EXTRUDER_2]RETRACT_LENGTH> + #502=#<_ini[EXTRUDER_2]RETRACT_VEL> + o110 else if [#<_selected_tool> EQ 3] + #501=#<_ini[EXTRUDER_3]RETRACT_LENGTH> + #502=#<_ini[EXTRUDER_3]RETRACT_VEL> + o110 else if [#<_selected_tool> EQ 4] + #501=#<_ini[EXTRUDER_4]RETRACT_LENGTH> + #502=#<_ini[EXTRUDER_4]RETRACT_VEL> + o110 else if [#<_selected_tool> EQ 5] + #501=#<_ini[EXTRUDER_5]RETRACT_LENGTH> + #502=#<_ini[EXTRUDER_5]RETRACT_VEL> + o110 else if [#<_selected_tool> EQ 6] + #501=#<_ini[EXTRUDER_6]RETRACT_LENGTH> + #502=#<_ini[EXTRUDER_6]RETRACT_VEL> + o110 else if [#<_selected_tool> EQ 7] + #501=#<_ini[EXTRUDER_7]RETRACT_LENGTH> + #502=#<_ini[EXTRUDER_7]RETRACT_VEL> + o110 else if [#<_selected_tool> EQ 8] + #501=#<_ini[EXTRUDER_8]RETRACT_LENGTH> + #502=#<_ini[EXTRUDER_8]RETRACT_VEL> + o110 else if [#<_selected_tool> EQ 9] + #501=#<_ini[EXTRUDER_9]RETRACT_LENGTH> + #502=#<_ini[EXTRUDER_9]RETRACT_VEL> + o110 endif + G1 A[#500+#501] F#502 + G92 A#500 +o100 endif +o end sub diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/g23.ngc b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/g23.ngc new file mode 100644 index 0000000000..b6317137f5 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/g23.ngc @@ -0,0 +1,41 @@ +o sub +o100 if [#<_ini[FDM]VELOCITY_EXTRUSION_ENABLE> EQ 1] + #502=1 ; extruder enable index + M64 P#502 +o100 else + #500=#<_a> + o110 if [#<_selected_tool> EQ 0] + #501=#<_ini[EXTRUDER_0]RETRACT_LENGTH> + #502=#<_ini[EXTRUDER_0]RETRACT_VEL> + o110 else if [#<_selected_tool> EQ 1] + #501=#<_ini[EXTRUDER_1]RETRACT_LENGTH> + #502=#<_ini[EXTRUDER_1]RETRACT_VEL> + o110 else if [#<_selected_tool> EQ 2] + #501=#<_ini[EXTRUDER_2]RETRACT_LENGTH> + #502=#<_ini[EXTRUDER_2]RETRACT_VEL> + o110 else if [#<_selected_tool> EQ 3] + #501=#<_ini[EXTRUDER_3]RETRACT_LENGTH> + #502=#<_ini[EXTRUDER_3]RETRACT_VEL> + o110 else if [#<_selected_tool> EQ 4] + #501=#<_ini[EXTRUDER_4]RETRACT_LENGTH> + #502=#<_ini[EXTRUDER_4]RETRACT_VEL> + o110 else if [#<_selected_tool> EQ 5] + #501=#<_ini[EXTRUDER_5]RETRACT_LENGTH> + #502=#<_ini[EXTRUDER_5]RETRACT_VEL> + o110 else if [#<_selected_tool> EQ 6] + #501=#<_ini[EXTRUDER_6]RETRACT_LENGTH> + #502=#<_ini[EXTRUDER_6]RETRACT_VEL> + o110 else if [#<_selected_tool> EQ 7] + #501=#<_ini[EXTRUDER_7]RETRACT_LENGTH> + #502=#<_ini[EXTRUDER_7]RETRACT_VEL> + o110 else if [#<_selected_tool> EQ 8] + #501=#<_ini[EXTRUDER_8]RETRACT_LENGTH> + #502=#<_ini[EXTRUDER_8]RETRACT_VEL> + o110 else if [#<_selected_tool> EQ 9] + #501=#<_ini[EXTRUDER_9]RETRACT_LENGTH> + #502=#<_ini[EXTRUDER_9]RETRACT_VEL> + o110 endif + G1 A[#500-#501] F#502 + G92 A#500 +o100 endif +o end sub diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/g28.ngc b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/g28.ngc new file mode 100644 index 0000000000..64a2598c5c --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/g28.ngc @@ -0,0 +1,60 @@ +o sub +#500=0; home x +#501=0; home y +#502=0; home z +#503=0; home a +#504=38; probe selection io index +#505=38; probe enable io index +o90 if [#<_ini[FDM]VELOCITY_EXTRUSION_ENABLE> EQ 1] + #506 = 1; extruder enable io index + M65 P#506 +o90 endif +o100 if [EXISTS[#] or EXISTS[#] or EXISTS[#] or EXISTS[#]] + o110 if [EXISTS[#]] + #500=1; + o110 endif + o111 if [EXISTS[#]] + #501=1; + o111 endif + o112 if [EXISTS[#]] + #502=1; + o112 endif + o113 if [EXISTS[#]] + #503=1 + o113 endif +o100 else + #500=1; home x + #501=1; home y + #502=1; home z + #503=1; home a +o100 endif +; M65 P#505; disable probe sensor if it was enabled +o101 if [#500 EQ 1] + G0 X0 + ; M68 E#504 Q1; select probe + ; M64 P#505; enable probe sensor + ; G38.2 X-100.0 F100; probe X axis + ; M65 P#505; disable probe sensor +o101 endif +o102 if [#501 EQ 1] + G0 Y0 + ; M68 E#504 Q2; select probe + ; M64 P#505; enable probe sensor + ; G38.2 Y-100.0 F100; probe Y axis + ; M65 P#505; disable probe sensor +o102 endif +o103 if [#502 EQ 1] + ;G0 Z0 + ; for DELTA printer, go to top of build space + G0 Z#<_ini[AXIS_2]HOME_DELTA_Z> + ; M68 E#504 Q3; select probe + ; M64 P#505; enable probe sensor + ; G38.2 Z-10.0 F100; probe Z axis + ; M65 P#505; disable probe sensor +o103 endif +o104 if [#503 EQ 1] + o114 if [#<_ini[FDM]VELOCITY_EXTRUSION_ENABLE> EQ 0] + G92 A0; set extruder axis to 0 + o114 endif +o104 endif +o end sub diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/g29.ngc b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/g29.ngc new file mode 100644 index 0000000000..d1e613170e --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/g29.ngc @@ -0,0 +1,19 @@ +o sub +o100 if [EXISTS[#<_ini[PROBE]HBP_TEMP>]] + M190 S#<_ini[PROBE]HBP_TEMP> +o100 endif +#501=38; probe selection io index +#502=0; probe enable io index +M65 P#502; disable probe sensor if it was enabled +M68 E#501 Q0; select probe +G10 L2 P1 Z0.0; reset z offset +G0 Z#<_ini[PROBE]START_Z> +G43 H#<_ini[PROBE]TOOL_NR> +G0 X#<_ini[P0]X> Y#<_ini[P0]Y> +M64 P#502; enable probe sensor +G38.2 Z#<_ini[AXIS_2]MIN_LIMIT> F#<_ini[PROBE]SEARCH_VEL>; probe Z axis +M65 P#502; disable probe sensor +G10 L20 P1 Z0.0; set Z offset +G49 +G0 X#<_ini[P0]X> Y#<_ini[P0]Y> Z#<_ini[PROBE]END_Z> +o end sub \ No newline at end of file diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/g29_1.ngc b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/g29_1.ngc new file mode 100644 index 0000000000..dd73fe035b --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/g29_1.ngc @@ -0,0 +1,11 @@ +o sub +o100 if [EXISTS[#]] + G10 L1 P#<_ini[PROBE]TOOL_NR> X# +o100 endif +o101 if [EXISTS[#]] + G10 L1 P#<_ini[PROBE]TOOL_NR> Y# +o101 endif +o102 if [EXISTS[#]] + G10 L1 P#<_ini[PROBE]TOOL_NR> Z# +o102 endif +o end sub \ No newline at end of file diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/g29_2.ngc b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/g29_2.ngc new file mode 100644 index 0000000000..4c6c242d1a --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/g29_2.ngc @@ -0,0 +1,20 @@ +o sub +o100 if [EXISTS[#]] + G43 H#<_ini[PROBE]TOOL_NR> + G10 L1 P#<_ini[PROBE]TOOL_NR> X[[#<_x>+#]*-1] + G49 + G10 L20 P1 X# +o100 endif +o101 if [EXISTS[#]] + G43 H#<_ini[PROBE]TOOL_NR> + G10 L1 P#<_ini[PROBE]TOOL_NR> Y[[#<_y>+#]*-1] + G49 + G10 L20 P1 Y# +o101 endif +o102 if [EXISTS[#]] + G43 H#<_ini[PROBE]TOOL_NR> + G10 L1 P#<_ini[PROBE]TOOL_NR> Z[[#<_z>+#]*-1] + G49 + G10 L20 P1 Z# +o102 endif +o end sub \ No newline at end of file diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/g30.ngc b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/g30.ngc new file mode 100644 index 0000000000..417682493e --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/g30.ngc @@ -0,0 +1,27 @@ +o sub +o100 if [EXISTS[#<_ini[PROBE]HBP_TEMP>]] + M190 S#<_ini[PROBE]HBP_TEMP> +o100 endif +#501=38; probe selection io index +#502=0; probe enable io index +#510=#<_x>; probe x +#511=#<_y>; probe y +o101 if [EXISTS[#]] + #510=# +o101 endif +o102 if [EXISTS[#]] + #511=# +o102 endif +M65 P#502; disable probe sensor if it was enabled +M68 E#501 Q0; select probe +G10 L2 P1 Z0.0; reset z offset +G0 Z#<_ini[PROBE]START_Z> +G43 H#<_ini[PROBE]TOOL_NR> +G0 X#510 Y#511 +M64 P#502; enable probe sensor +G38.2 Z#<_ini[AXIS_2]MIN_LIMIT> F#<_ini[PROBE]SEARCH_VEL>; probe Z axis +M65 P#502; disable probe sensor +G10 L20 P1 Z0.0; set Z offset +G49 +G0 X#514 Y#515 Z#<_ini[PROBE]END_Z> +o end sub \ No newline at end of file diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m104.ngc b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m104.ngc new file mode 100644 index 0000000000..1639b2fc81 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m104.ngc @@ -0,0 +1,18 @@ +o sub +#500=2; extruder io start index +#501=0; not synchronized +#502=#500 +o100 if [EXISTS[#]] + o110 if [# EQ 1] + #501=0 + o110 endif +o100 endif +o101 if [EXISTS[#]] + #502=[#+#500] +o101 endif +o102 if [#501 EQ 1] + M67 E#502 Q#

+o102 else + M68 E#502 Q#

+o102 endif +o end sub diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m106.ngc b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m106.ngc new file mode 100644 index 0000000000..b6bfd5e762 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m106.ngc @@ -0,0 +1,18 @@ +o sub +#500=12; fan io start index +#501=1; synchronized +#502=#500 +o100 if [EXISTS[#]] + o110 if [# EQ 1] + #501=0 + o110 endif +o100 endif +o101 if [EXISTS[#]] + #502=[#+#500] +o101 endif +o102 if [#501 EQ 1] + M67 E#502 Q#

+o102 else + M68 E#502 Q#

+o102 endif +o end sub diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m107.ngc b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m107.ngc new file mode 100644 index 0000000000..2a15f9dc03 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m107.ngc @@ -0,0 +1,18 @@ +o sub +#500=12; fan io start index +#501=0; not synchronized +#502=#500 +o100 if [EXISTS[#]] + o110 if [# EQ 1] + #501=0 + o110 endif +o100 endif +o101 if [EXISTS[#]] + #502=[#+#500] +o101 endif +o102 if [#501 EQ 1] + M67 E#502 Q0 +o102 else + M68 E#502 Q0 +o102 endif +o end sub diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m109.ngc b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m109.ngc new file mode 100644 index 0000000000..ca21aba72b --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m109.ngc @@ -0,0 +1,9 @@ +o sub +#500=2; extruder io start index +#502=#500 +o100 if [EXISTS[#]] + #502=[#+#500] +o100 endif +M68 E#502 Q#

+M66 P#502 L3 Q1000 +o end sub diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m140.ngc b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m140.ngc new file mode 100644 index 0000000000..73b6052506 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m140.ngc @@ -0,0 +1,14 @@ +o sub +#501=0; not synchronized +#502=0; hbp index +o100 if [EXISTS[#]] + o110 if [# EQ 1] + #501=0 + o110 endif +o100 endif +o101 if [#501 EQ 1] + M67 E#502 Q#

+o101 else + M68 E#502 Q#

+o101 endif +o end sub diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m141.ngc b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m141.ngc new file mode 100644 index 0000000000..36dc63fd32 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m141.ngc @@ -0,0 +1,14 @@ +o sub +#501=0; not synchronized +#502=1; hbc index +o100 if [EXISTS[#]] + o110 if [# EQ 1] + #501=0 + o110 endif +o100 endif +o101 if [#501 EQ 1] + M67 E#502 Q#

+o101 else + M68 E#502 Q#

+o101 endif +o end sub diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m190.ngc b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m190.ngc new file mode 100644 index 0000000000..5046e167d0 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m190.ngc @@ -0,0 +1,5 @@ +o sub +#502=0; hbp index +M68 E#502 Q#

+M66 P#502 L3 Q1000 +o end sub diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m191.ngc b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m191.ngc new file mode 100644 index 0000000000..94589d830e --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m191.ngc @@ -0,0 +1,5 @@ +o sub +#502=1; hbc index +M68 E#502 Q#

+M66 P#502 L3 Q1000 +o end sub diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m200.ngc b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m200.ngc new file mode 100644 index 0000000000..e652609378 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m200.ngc @@ -0,0 +1,4 @@ +o sub +#500=44 ; filament diameter index +M68 E#500 Q# +o endsub diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m207.ngc b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m207.ngc new file mode 100644 index 0000000000..1bbb9f3cc3 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m207.ngc @@ -0,0 +1,6 @@ +o sub +#500=47 ; retract length index +#501=48 ; retract velocity index +M68 E#500 Q#

+M68 E#501 Q# +o endsub diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m221.ngc b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m221.ngc new file mode 100644 index 0000000000..5db275739a --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m221.ngc @@ -0,0 +1,4 @@ +o sub +#500=49 ; extrude scale index +M68 E#500 Q#

+o endsub diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m226.ngc b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m226.ngc new file mode 100644 index 0000000000..591a2c4c8e --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m226.ngc @@ -0,0 +1,3 @@ +o sub + M1 +o end sub diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m280.ngc b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m280.ngc new file mode 100644 index 0000000000..cfa70dfab1 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m280.ngc @@ -0,0 +1,3 @@ +o sub +(debug, This is not implemented yet) +o end sub diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m300.ngc b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m300.ngc new file mode 100644 index 0000000000..26e66ba5ad --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m300.ngc @@ -0,0 +1,36 @@ +o sub +#500=39; buzzer frequency index +#501=40; buzzer duration index +#502=2; buzzer trigger index +#503=0; not synchronized +o100 if [EXISTS[#]] + o110 if [# EQ 1] + #503=0 + o110 endif +o100 endif +o101 if [#503 EQ 1] + o111 if [EXISTS[#]] + M67 E#500 Q#; frequency + o111 endif + M67 E[#500+1] Q#

; duration + o113 if [#[#502+100] EQ 1]; trigger beep + M63 P#502 + #[#502+100]=0 + o113 else + M62 P#502 + #[#502+100]=1 + o113 endif +o101 else + o121 if [EXISTS[#]] + M68 E#500 Q#; frequency + o121 endif + M68 E[#500+1] Q#

; duration + o123 if [#[#502+100] EQ 1]; trigger beep + M65 P#502 + #[#502+100]=0 + o123 else + M64 P#502 + #[#502+100]=1 + o123 endif +o101 endif +o end sub diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m400.ngc b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m400.ngc new file mode 100644 index 0000000000..3345a41dd1 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m400.ngc @@ -0,0 +1,3 @@ +o sub + G4 P0 +o end sub diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m420.ngc b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m420.ngc new file mode 100644 index 0000000000..7f5102b04e --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m420.ngc @@ -0,0 +1,39 @@ +o sub +#500=26; light io start index +#501=0; not synchronized +#502=#500 +o104 if [EXISTS[#]] + #502=[#*4+#500] +o104 endif +#503=[#502+1] +#504=[#502+2] +#505=[#502+3] +o100 if [EXISTS[#]] + o110 if [#501 EQ 1] + M67 E#502 Q# + o110 else + M68 E#502 Q# + o110 endif +o100 endif +o101 if [EXISTS[#]] + o111 if [#501 EQ 1] + M67 E#503 Q# + o111 else + M68 E#503 Q# + o111 endif +o101 endif +o102 if [EXISTS[#]] + o112 if [#501 EQ 1] + M67 E#504 Q# + o112 else + M68 E#504 Q# + o112 endif +o102 endif +o103 if [EXISTS[#

]] + o113 if [#501 EQ 1] + M67 E#505 Q#

+ o113 else + M68 E#505 Q#

+ o113 endif +o103 endif +o end sub diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m700.ngc b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m700.ngc new file mode 100644 index 0000000000..3e03669f19 --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m700.ngc @@ -0,0 +1,15 @@ +o sub +#500=41; filament area index +#501=1; synchronized +#502=#500 +o100 if [EXISTS[#]] + o110 if [# EQ 1] + #501=0 + o110 endif +o100 endif +o101 if [#501 EQ 1] + M67 E#502 Q#

+o101 else + M68 E#502 Q#

+o101 endif +o end sub diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m701.ngc b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m701.ngc new file mode 100644 index 0000000000..b8973d78cd --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m701.ngc @@ -0,0 +1,15 @@ +o sub +#500=42; line width index +#501=1; synchronized +#502=#500 +o100 if [EXISTS[#]] + o110 if [# EQ 1] + #501=0 + o110 endif +o100 endif +o101 if [#501 EQ 1] + M67 E#502 Q#

+o101 else + M68 E#502 Q#

+o101 endif +o end sub diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m702.ngc b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m702.ngc new file mode 100644 index 0000000000..8c30f95e4e --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m702.ngc @@ -0,0 +1,15 @@ +o sub +#500=43; line height index +#501=1; synchronized +#502=#500 +o100 if [EXISTS[#]] + o110 if [# EQ 1] + #501=0 + o110 endif +o100 endif +o101 if [#501 EQ 1] + M67 E#502 Q#

+o101 else + M68 E#502 Q#

+o101 endif +o end sub diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m710.ngc b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m710.ngc new file mode 100644 index 0000000000..73cb349e1a --- /dev/null +++ b/configs/ARM/BeagleBone/Replicape-Stretch/subroutines/m710.ngc @@ -0,0 +1,28 @@ +o sub +#500=45; jog velocity index +#501=46; jog length index +#502=12; jog trigger index +#503=13; jog continuous index +#504=14; jog direction index +o100 if [EXISTS[#]] + o110 if [# LT 0] + M68 E#500 Q[# * -1]; inverse velocity + M64 P#504 + o110 else + M68 E#500 Q#; velocity + M65 P#504 + o110 endif +o100 endif +o101 if [EXISTS[#

]] + M68 E#501 Q#

; length +o101 endif +o102 if [EXISTS[#]] + o112 if [# EQ 1]; trigger continuous + M64 P#503 + o112 else + M65 P#503 + o112 endif +o102 else + M64 P#502 +o102 endif +o end sub From b090ccd6c2d757c6c3e2820ac315d3c86a5fcc52 Mon Sep 17 00:00:00 2001 From: Karl Jacobs Date: Tue, 27 Mar 2018 10:34:31 +0200 Subject: [PATCH 223/516] Removed unneeded ARM.Replicape.A4A folder --- .../ARM.Replicape.A4A/IMPORTANT_NOTE | 3 - .../ARM.Replicape.A4A/hal_hwconfig_replicape | 161 ---- .../ARM.Replicape.A4A/hal_pwm_replicape | 126 --- .../ARM.Replicape.A4A/hal_temp_bbb | 269 ------ .../ARM.Replicape.A4A/replicape.hal | 794 ------------------ .../ARM.Replicape.A4A/replicape.ini | 369 -------- .../ARM.Replicape.A4A/reset.comp | 69 -- .../ARM.Replicape.A4A/run.py | 31 - .../ARM.Replicape.A4A/setup.sh | 17 - .../ARM.Replicape.A4A/thermistor_check.comp | 135 --- 10 files changed, 1974 deletions(-) delete mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/IMPORTANT_NOTE delete mode 100755 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/hal_hwconfig_replicape delete mode 100755 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/hal_pwm_replicape delete mode 100755 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/hal_temp_bbb delete mode 100755 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/replicape.hal delete mode 100755 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/replicape.ini delete mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/reset.comp delete mode 100755 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/run.py delete mode 100755 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/setup.sh delete mode 100644 configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/thermistor_check.comp diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/IMPORTANT_NOTE b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/IMPORTANT_NOTE deleted file mode 100644 index d701fff6e5..0000000000 --- a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/IMPORTANT_NOTE +++ /dev/null @@ -1,3 +0,0 @@ -This folder (ARM.Replicape.A4A) is deprecated, and is only compatible with Machinekit 2015 version and Replicape Rev A4A. - -The ARM.Replicape.B3 folder works on Machinekit 2016-11, and is compatible with Replicape B3 and A4A despite the name. diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/hal_hwconfig_replicape b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/hal_hwconfig_replicape deleted file mode 100755 index 4afb1cefbb..0000000000 --- a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/hal_hwconfig_replicape +++ /dev/null @@ -1,161 +0,0 @@ -#!/usr/bin/python -# encoding: utf-8 -# vim: set sw=4 sts=4 et: - -''' -A machinekit/LinuxCNC user module for Replicape hardware config - -Configure the steppers on Replicape A4/A4A through HAL -Driver mode pins are connected through a bit shifter and -hence accessible with SPI. Current limit is through an DAC chip. - -The settings are populated when the "enable" pin is turned on - -The following pins are exported -* enable - Enable the steppers -* stepper.x.microstepping - Microstepping settings for steppers 0 to 5. - Value is treated as 1/2^x, e.g. 5 means 1/32 microstepping mode. -* stepper.x.decay - True for slow decay -* stepper.x.current - Current settings for steppers 0 to 5. - Value is treated as current in Amps -* watchdog - A pin that toggles at every loop informing HAL that this component is alive - -Copyright (C) 2013 Sam Wong -GNU GPL Version 2.0 or (at your option) any later version -''' - -import argparse -import glob -import sys -import time - -import hal -from spi import SPI - -parser = argparse.ArgumentParser(description='HAL component to configure Replicape hardware') -parser.add_argument('-n','--name', help='HAL component name',required=True) -args = parser.parse_args() - -# Initialize SPI -spi2_0 = None -spi2_1 = None - -# Load SPI module -try: - # init the SPI for the DAC - try: - spi2_0 = SPI((0, 0)) - except IOError: - spi2_0 = SPI((1, 0)) - spi2_0.mode = 1 - - # Init the SPI for the serial to parallel - try: - spi2_1 = SPI((0, 1)) - except IOError: - spi2_1 = SPI((1, 1)) - spi2_1.mode = 0 -except IOError: - print("Unable to set up SPI") - exit(-1) - -# Initialize HAL -h = hal.component(args.name) -enablePin = h.newpin("enable", hal.HAL_BIT, hal.HAL_IN) - -N = 5 # We have 5 steppers -microsteppingPins = [None] * N -decayPins = [None] * N -currentPins = [None] * N - -vRef = 3.3 -rSense = 0.1 - -for i in range(0,N): - microsteppingPins[i] = h.newparam(("stepper.%d.microstepping" % i), hal.HAL_U32, hal.HAL_RW) - decayPins[i] = h.newparam(("stepper.%d.decay" % i), hal.HAL_BIT, hal.HAL_RW) - currentPins[i] = h.newparam(("stepper.%d.current" % i), hal.HAL_FLOAT, hal.HAL_RW) -halWatchdogPin = h.newpin("watchdog", hal.HAL_BIT, hal.HAL_OUT) -h.ready() - -''' -The bits in the shift register are as follows (Rev A4) : -Bit - name - init val -D0 = - = Don't Care -D1 = MODE2 = 0 -D2 = MODE1 = 0 -D3 = MODE0 = 0 -D4 = nENABLE = 0 - Enabled -D5 = DECAY = 0 - Slow decay -D6 = nSLEEP = 1 - Not sleeping -D7 = nRESET = 1 - Not in reset mode -''' - -def commit(): - ''' Turn on the stepper chips ''' - - # Writing the current - for i in range(0,N): - vOut = currentPins[i].value * 5.0 * rSense - dacVal = int((vOut * 256.0) / vRef) - spi2_0.write([ \ - (dacVal & 0xF0) >> 4 | (i << 4), \ - (dacVal & 0x0F) << 4]) - spi2_0.write([0xA0, 0xFF]) # Commits to output - - # Writing the modes - bytes = [] - for i in range(0,N): - state = decayPins[i].value << 5 | \ - ((microsteppingPins[i].value & 0x04) >> 2) << 1 | \ - ((microsteppingPins[i].value & 0x02) >> 1) << 2 | \ - ((microsteppingPins[i].value & 0x01) >> 0) << 3 | \ - 0 << 4 | 1 << 6 | 1 << 7 - bytes.append(state) - # Reverse the writting orders due to serial chain sequence - spi2_1.write(bytes[::-1]) - -def reset(): - ''' Reset the stepper chip ''' - bytes = [] - for i in range(0,N): - state = 1 << 4 | 0 << 6 | 0 << 7 - bytes.append(state) - # Reverse the writting orders due to serial chain sequence - spi2_1.write(bytes[::-1]) - -def turnOff(): - ''' Turn off all stepper chips ''' - bytes = [] - for i in range(0,N): - state = 1 << 4 | 0 << 6 | 1 << 7 - bytes.append(state) - # Reverse the writting orders due to serial chain sequence - spi2_1.write(bytes[::-1]) - -watchdog = True -try: - oldEnable = False - reset() - time.sleep(0.05) - while (True): - enable = enablePin.value - if (enable and not oldEnable): - commit() - if (oldEnable and not enable): - turnOff() - oldEnable = enable - - watchdog = not watchdog - halWatchdogPin.value = watchdog - time.sleep(0.05) -except BaseException as e: - reset() - print(("exiting HAL component %s: %s") % (args.name, e)) - h.exit() - diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/hal_pwm_replicape b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/hal_pwm_replicape deleted file mode 100755 index 0348ccd84b..0000000000 --- a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/hal_pwm_replicape +++ /dev/null @@ -1,126 +0,0 @@ -#!/usr/bin/python -# encoding: utf-8 -# vim: set sw=4 sts=4 et: - -''' -A machinekit/LinuxCNC user module for Replicape PWM control - -The PWM is enabled when the "enable" pin is turned on - -The following pins are exported -* enable - Enable the PWM -* out.x - PWM output for channel 0 to 15. Values are from 0.0 to 1.0 -* watchdog - A pin that toggles at every loop informing HAL that this component is alive - -Copyright (C) 2013 Sam Wong -GNU GPL Version 2.0 or (at your option) any later version -''' - -import argparse -import glob -import sys -import time - -import hal -import smbus - -parser = argparse.ArgumentParser(description='HAL component to configure Replicape hardware') -parser.add_argument('-n','--name', help='HAL component name',required=True) -parser.add_argument('-d', '--debug', help='Debug - Turn off all output and exit', action='store_true') -args = parser.parse_args() - -PCA9685_ADDR = 0x70 -PCA9685_MODE1 = 0x0 -PCA9685_PRESCALE = 0xFE -PCA9685_ALL_LED_ON_L = 0xFA -N = 16 - -bus = None -try: - try: - bus = smbus.SMBus(2) - except IOError: - bus = smbus.SMBus(1) -except IOError: - print("Unable to set up PWM chip") - exit(-1) - -def initChip(): - bus.write_byte(0x00, 0x06) # Broadcast Reset - time.sleep(0.01) - - freq = 100 - prescaleval = 25000000 - prescaleval /= 4096 - prescaleval /= float(freq) - prescaleval -= 1 - prescale = int(prescaleval + 0.5) - - bus.write_byte_data(PCA9685_ADDR, PCA9685_MODE1, 0x11) # Sleep - bus.write_byte_data(PCA9685_ADDR, PCA9685_PRESCALE, prescale) - bus.write_byte_data(PCA9685_ADDR, PCA9685_MODE1, 0x21) # Out of sleep - time.sleep(0.01) - bus.write_byte_data(PCA9685_ADDR, PCA9685_MODE1, 0xA1) # Restart, AI, Allcall - -def turnOff(): - bus.write_i2c_block_data(PCA9685_ADDR, PCA9685_ALL_LED_ON_L, [0, 0, 0, 0x10]); # All off - if (not args.debug): - for i in range(0,N): - onPins[i].value = 0 - oldOutputs[i] = 0 - -for i in range(0,N): - oldOutputs = 0.0 - -if (not args.debug): - # Initialize HAL - h = hal.component(args.name) - enablePin = h.newpin("enable", hal.HAL_BIT, hal.HAL_IN) - halWatchdogPin = h.newpin("watchdog", hal.HAL_BIT, hal.HAL_OUT) - outPins = [None] * N - onPins = [None] * N - oldOutputs = [0] * N - for i in range(0,N): - outPins[i] = h.newpin(("%d.out" % i), hal.HAL_FLOAT, hal.HAL_IN) - onPins[i] = h.newpin(("%d.on" % i), hal.HAL_BIT, hal.HAL_OUT) - onPins[i].value = 0 - h.ready() - -initChip() -turnOff() - -if (args.debug): - exit(0) - -def commit(): - for i in range(0,N): - if (outPins[i].value != oldOutputs[i]): - oldOutputs[i] = outPins[i].value - off = min(1.0, oldOutputs[i]) - off = int(off * 4095) - onPins[i].value = off > 0 - bytes = [0x00, 0x00, off & 0xFF, off >> 8] - bus.write_i2c_block_data(PCA9685_ADDR, 0x06 + (4 * i), bytes) - -watchdog = True -try: - oldEnable = False - while (True): - watchdog = not watchdog - enable = enablePin.value - if (enable): - commit() - if (oldEnable and not enable): - turnOff() - oldEnable = enable - - halWatchdogPin.value = watchdog - time.sleep(0.05) -except BaseException as e: - turnOff() - print(("exiting HAL component %s: %s") % (args.name, e)) - h.exit() - diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/hal_temp_bbb b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/hal_temp_bbb deleted file mode 100755 index 00c8f389f9..0000000000 --- a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/hal_temp_bbb +++ /dev/null @@ -1,269 +0,0 @@ -#!/usr/bin/python -# encoding: utf-8 - -######################################################################## -# Description: temp.py # -# This code reads an ADC input on the BeagleBone and converts the # -# resulting value into a temperature according to the thermistor # -# type, accounting for the analog input circuty as implemented on # -# the BeBoPr cape # -# # -# Author(s): Charles Steinkuehler # -# License: GNU GPL Version 2.0 or (at your option) any later version. # -# # -# Major Changes: # -# 2013-June Charles Steinkuehler # -# Initial version # -# 2014-July Alexander Roessler # -# Port to the R2Temp component # -######################################################################## -# Copyright (C) 2013 Charles Steinkuehler # -# # -# # -# This program 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 2 # -# of the License, or (at your option) any later version. # -# # -# This program 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 this program; if not, write to the Free Software # -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # -# 02110-1301, USA. # -# # -# THE AUTHORS OF THIS PROGRAM ACCEPT ABSOLUTELY NO LIABILITY FOR # -# ANY HARM OR LOSS RESULTING FROM ITS USE. IT IS _EXTREMELY_ UNWISE # -# TO RELY ON SOFTWARE ALONE FOR SAFETY. Any machinery capable of # -# harming persons must have provisions for completely removing power # -# from all motors, etc, before persons enter any danger area. All # -# machinery must be designed to comply with local and national safety # -# codes, and the authors of this software can not, and do not, take # -# any responsibility for such compliance. # -######################################################################## - -import argparse -import glob -import sys -import time - -import hal -from fdm.r2temp import R2Temp - - -# The BeBoPr board thermistor input has one side grounded and the other side -# pulled high through a 2.05K resistor to 3.6V. Following this is a 470R -# resistor, some protection diodes, and a voltage divider cosisting of two -# 10.0K resistors. The ADC voltage read is the voltage across the lower 10K -# resistor in the 470R + 10K + 10K series chain -def adc2r_bebopr(pin): - V_adc = pin.rawValue * 1.8 / 4096.0 - - V_T = 0.0 # Voltage across the thermistor (and the 470R + 10K + 10K resistor chain) - I_PU = 0.0 # Current flowing through the 2.05K pull-up resistor - R_TD = 0.0 # Resistance of thermistor and the 470R + 10K + 10K divider chain in parallel - R_T = 0.0 # Resistance of the thermistor - - V_T = V_adc * 2.0470 - - # No dividing by zero or negative voltages despite what the ADC says! - # Clip to a small positive value - I_PU = max((3.6 - V_T) / 2050, 0.000001) - - R_TD = V_T / I_PU - - # Acutal resistance can't be negative, but we can get a negative value - # from the equation below for some real ADC values, so clip to avoid - # reporting crazy temperature values or dividing by zero - if R_TD >= 20470: - R_TD = 20470 - 0.1 - - # 1 / Rtotal = 1 / ( 1 / R1 + 1 / R2 ) - # R2 = ( R1 * Rtotal ) / ( R1 - Rtotal ) - R_T = (20470 * R_TD) / (20470 - R_TD) - - # print "V_adc: %f V_T: %f R_TD: %f R_T: %f" % (V_adc, V_T, R_TD, R_T) - - return R_T - -# The CRAMPS board thermistor input has one side grounded and the other side -# pulled high through a 1.00K resistor to 1.8V. Following this is a 4.7K -# resistor, some protection diodes, and filtering capacitors. The ADC voltage -# read is the filtered voltage across the thermistor. -def adc2r_cramps(pin): - V_adc = pin.rawValue * 1.8 / 4096.0 - V_T = 0.0 # Voltage across the thermistor - R_PU = 2000.0 #Pull-up resistence - I_PU = 0.0 # Current flowing through the pull-up resistor - R_T = 0.0 # Resistance of the thermistor - - V_T = V_adc - - # No dividing by zero or negative voltages despite what the ADC says! - # Clip to a small positive value - I_PU = max((1.8 - V_T ) / R_PU, 0.000001) - - R_T = V_T / I_PU - - return R_T - -# The Replicape board thermistor input is pulled up to ADC (1.8v) with 4.7k. -# VADC ---- 4.7k --- [SENSE] -- [Thermistor] --- GND -def adc2r_replicape(pin): - V_adc = pin.rawValue * 1.8 / 4096.0 - V_T = 0.0 # Voltage across the thermistor - R_PU = 4700.0 #Pull-up resistence - I_PU = 0.0 # Current flowing through the pull-up resistor - R_T = 0.0 # Resistance of the thermistor - - V_T = V_adc - - # No dividing by zero or negative voltages despite what the ADC says! - # Clip to a small positive value - I_PU = max((1.8 - V_T ) / R_PU, 0.000001) - - R_T = V_T / I_PU - - return R_T - -class Pin: - def __init__(self, pin): - self.pin = pin - self.r2temp = None - self.halValuePin = None - self.halRawPin = None - self.filterSamples = [] - self.filterSize = 10 - self.rawValue = 0.0 - self.filename = "" - self.filterSamples = [] - self.rawValue = 0.0 - - def addSample(self, value): - self.filterSamples.append(value) - if (len(self.filterSamples) > self.filterSize): - self.filterSamples.pop(0) - sampleSum = 0.0 - for sample in self.filterSamples: - sampleSum += sample - self.rawValue = sampleSum / len(self.filterSamples) - - -def adc2Temp(pin): - if(args.cape_board == 'BeBoPr'): - R = adc2r_bebopr(pin) - elif (args.cape_board == 'CRAMPS'): - R = adc2r_cramps(pin) - elif (args.cape_board == 'Replicape'): - R = adc2r_replicape(pin) - else: - print("Invalid -b cape name: %s" % args.cape_board) - print("Valid names are: BeBoPr, CRAMPS, Replicape") - sys.exit(1) - return round(pin.r2temp.r2t(R) * 10.0) / 10.0 - - -def getHalName(pin): - return "ch-" + '{0:02d}'.format(pin.pin) - - -def checkAdcInput(pin): - syspath = '/sys/devices/ocp.*/44e0d000.tscadc/tiadc/iio:device0/' - tempName = glob.glob(syspath + 'in_voltage' + str(pin.pin) + '_raw') - pin.filename = tempName[0] - try: - if len(pin.filename) > 0: - f = open(pin.filename, 'r') - f.close() - time.sleep(0.001) - else: - raise UserWarning('Bad Filename') - except (UserWarning, IOError): - print(("Cannot read ADC input: %s" % pin.filename)) - sys.exit(1) - - -parser = argparse.ArgumentParser(description='HAL component to read ADC values and convert to temperature') -parser.add_argument('-n','--name', help='HAL component name',required=True) -parser.add_argument('-i', '--interval', help='Adc update interval', default=0.2) -parser.add_argument('-c', '--channels', help='Komma separated list of channels and thermistors to use e.g. 01:semitec_103GT_2,02:epcos_B57560G1104', required=True) -parser.add_argument('-f', '--filter_size', help='Size of the low pass filter to use', default=10) -parser.add_argument('-b', '--cape_board', help='Type of cape used', default='BeBoPr') -parser.add_argument('-d', '--debug', help='Debug - prints the values in console and exit', action='store_true') - -args = parser.parse_args() - -updateInterval = float(args.interval) -filterSize = int(args.filter_size) -error = False -watchdog = True - -# Create pins -pins = [] - -if (args.channels != ""): - channelsRaw = args.channels.split(',') - for channel in channelsRaw: - pinRaw = channel.split(':') - if (len(pinRaw) != 2): - print(("wrong input")) - sys.exit(1) - pin = Pin(int(pinRaw[0])) - if ((pin.pin > 7) or (pin.pin < 0)): - print(("Pin not available")) - sys.exit(1) - checkAdcInput(pin) - if (pinRaw[1] != "none"): - pin.r2temp = R2Temp(pinRaw[1]) - pin.filterSize = filterSize - pins.append(pin) - - -if (not args.debug): - # Initialize HAL - h = hal.component(args.name) - for pin in pins: - pin.halRawPin = h.newpin(getHalName(pin) + ".raw", hal.HAL_FLOAT, hal.HAL_OUT) - if (pin.r2temp is not None): - pin.halValuePin = h.newpin(getHalName(pin) + ".value", hal.HAL_FLOAT, hal.HAL_OUT) - halErrorPin = h.newpin("error", hal.HAL_BIT, hal.HAL_OUT) - halNoErrorPin = h.newpin("no-error", hal.HAL_BIT, hal.HAL_OUT) - halWatchdogPin = h.newpin("watchdog", hal.HAL_BIT, hal.HAL_OUT) - h.ready() - - halErrorPin.value = error - halNoErrorPin.value = not error - halWatchdogPin.value = watchdog - -try: - while (True): - try: - for pin in pins: - with open(pin.filename, 'r') as f: - value = float(f.readline()) - pin.addSample(value) - if (not args.debug): - pin.halRawPin.value = pin.rawValue - if (pin.r2temp is not None): - pin.halValuePin.value = adc2Temp(pin) - else: - print(("%s - raw: %d, temp: %0.1f") % (getHalName(pin), pin.rawValue, adc2Temp(pin))) - error = False - except IOError as e: - print(("Error in reading temperature %s: %s" % (pin.filename, e))) - error = True - - if (not args.debug): - halErrorPin.value = error - halNoErrorPin.value = not error - watchdog = not watchdog - halWatchdogPin.value = watchdog - time.sleep(updateInterval) -except BaseException as e: - print(("exiting HAL component %s: %s") % (args.name, e)) - if (not args.debug): - h.exit() - diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/replicape.hal b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/replicape.hal deleted file mode 100755 index e128efad3a..0000000000 --- a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/replicape.hal +++ /dev/null @@ -1,794 +0,0 @@ -# ####################################### -# -# HAL file for BeagleBone + BeBoPr cape with 4 steppers -# -# Derived from example hm2-stepper config -# -# ######################################## - -# Launch the setup script to make sure hardware setup looks good -loadusr -w ./setup.sh - -# ################################### -# Core EMC/HAL Loads -# ################################### - -# kinematics -loadrt trivkins - -# motion controller, get name and thread periods from ini file -# trajectory planner -loadrt tp -loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=4 num_aio=50 num_dio=20 tp=tp kins=trivkins - -# load low-level drivers -loadrt hal_bb_gpio output_pins= input_pins=810,809,924,818,923,925,916,918,911,913 -loadrt [PRUCONF](DRIVER) prucode=$(HAL_RTMOD_DIR)/[PRUCONF](PRUBIN) [PRUCONF](CONFIG) halname=hpg -loadrt at_pid names=pid.e0-temp,pid.hbp-temp -loadrt limit1 names=limit1.e0-heater,limit1.hbp-heater -loadrt scale names=scale.e0-fan-comp -loadrt thermistor_check names=thermistor-check.e0,thermistor-check.hbp -loadrt not names=not.e0-temp-range,not.hbp-temp-range,not.e0-error,not.hbp-error -loadrt wcomp names=wcomp.e0-temp-range,wcomp.hbp-temp-range,wcomp.e0-temp-limit,wcomp.hbp-temp-limit -loadrt sum2 names=sum2.e0-temp-range-neg,sum2.e0-temp-range-pos,sum2.hbp-temp-range-neg,sum2.hbp-temp-range-pos,sum2.extrude-rate-adj -loadrt mux2 names=mux2.ve-base-vel,mux2.jog-velocity-signed,mux2.system-fan -loadrt logic names=estopchain,and2.e0-no-error,and2.hbp-no-error personality=0x103,0x102,0x102 # and 3 and 2 inputs -loadrt comp names=comp.e0-active,comp.hbp-active -loadrt watchdog num_inputs=3 - -loadrt hypot names=hypot.nozzle-vel -loadrt mult2 names=mult2.nozzle-discharge,mult2.filament-dia,mult2.filament-area,mult2.extrude-accel-adj,mult2.ve-jog-dtg,mult2.retract-vel-neg,mult2.extrude-rate-scaled,mult2.jog-velocity-neg -loadrt div2 names=div2.extrude-rate,div2.retract-time,div2.ve-jog-time -loadrt mux4 names=mux4.ve -loadrt oneshot names=oneshot.retract,oneshot.ve-jog -loadrt ddt names=ddt.extruder-accel -loadrt or2 names=or2.ve-jog-enable -loadrt reset names=reset.extruder-en1,reset.extruder-en2 - -# Python user-mode HAL module to read ADC value and generate a thermostat output for PWM -# c = analog input channel and thermistor table -loadusr -Wn Therm ./hal_temp_bbb -n Therm -c 04:[EXTRUDER_0]THERMISTOR,06:[HBP]THERMISTOR -b Replicape -loadusr -Wn Pwm ./hal_pwm_replicape -n Pwm -loadusr -Wn HwConfig ./hal_hwconfig_replicape -n HwConfig - -# ################################################ -# THREADS -# ################################################ - -addf hpg.capture-position servo-thread -addf bb_gpio.read servo-thread -addf bb_gpio.write servo-thread -addf motion-command-handler servo-thread -addf motion-controller servo-thread -addf hpg.update servo-thread - -# E0 -addf scale.e0-fan-comp servo-thread -addf pid.e0-temp.do-pid-calcs servo-thread -addf limit1.e0-heater servo-thread -addf sum2.e0-temp-range-neg servo-thread -addf sum2.e0-temp-range-pos servo-thread -addf wcomp.e0-temp-range servo-thread -addf not.e0-temp-range servo-thread -addf wcomp.e0-temp-limit servo-thread -addf and2.e0-no-error servo-thread -addf not.e0-error servo-thread -addf comp.e0-active servo-thread - -# HBP -addf pid.hbp-temp.do-pid-calcs servo-thread -addf sum2.hbp-temp-range-neg servo-thread -addf sum2.hbp-temp-range-pos servo-thread -addf wcomp.hbp-temp-range servo-thread -addf not.hbp-temp-range servo-thread -addf wcomp.hbp-temp-limit servo-thread -addf limit1.hbp-heater servo-thread -addf and2.hbp-no-error servo-thread -addf not.hbp-error servo-thread -addf comp.hbp-active servo-thread - -# Estop chain and System -addf mux2.system-fan servo-thread -addf thermistor-check.e0 servo-thread -addf thermistor-check.hbp servo-thread -addf watchdog.set-timeouts servo-thread -addf watchdog.process servo-thread -addf estopchain servo-thread - -# velocity extruding -addf hypot.nozzle-vel servo-thread -addf mult2.nozzle-discharge servo-thread -addf mult2.filament-dia servo-thread -addf mult2.filament-area servo-thread -addf div2.extrude-rate servo-thread -addf mult2.extrude-rate-scaled servo-thread -addf ddt.extruder-accel servo-thread -addf sum2.extrude-rate-adj servo-thread -addf mult2.extrude-accel-adj servo-thread -addf mult2.jog-velocity-neg servo-thread -addf mux2.jog-velocity-signed servo-thread -addf div2.ve-jog-time servo-thread -addf oneshot.ve-jog servo-thread -addf or2.ve-jog-enable servo-thread -addf mux2.ve-base-vel servo-thread -addf mult2.ve-jog-dtg servo-thread -addf mult2.retract-vel-neg servo-thread -addf reset.extruder-en1 servo-thread -addf reset.extruder-en2 servo-thread -addf div2.retract-time servo-thread -addf oneshot.retract servo-thread -addf mux4.ve servo-thread - -# ################################### -# UI remote component definition -# ################################### - -# Limit emperature changes report (epsilon) at every 0.1 -sete 1 0.1 - -newcomp fdm-e0 timer=100 -newpin fdm-e0 fdm-e0.temp.meas float in eps=1 -newpin fdm-e0 fdm-e0.temp.set float io -newpin fdm-e0 fdm-e0.temp.standby float in -newpin fdm-e0 fdm-e0.temp.limit.min float in -newpin fdm-e0 fdm-e0.temp.limit.max float in -newpin fdm-e0 fdm-e0.temp.in-range bit in -newpin fdm-e0 fdm-e0.error bit in -newpin fdm-e0 fdm-e0.active bit in -ready fdm-e0 - -newcomp fdm-hbp timer=100 -newpin fdm-hbp fdm-hbp.temp.meas float in eps=1 -newpin fdm-hbp fdm-hbp.temp.set float io -newpin fdm-hbp fdm-hbp.temp.standby float in -newpin fdm-hbp fdm-hbp.temp.limit.min float in -newpin fdm-hbp fdm-hbp.temp.limit.max float in -newpin fdm-hbp fdm-hbp.temp.in-range bit in -newpin fdm-hbp fdm-hbp.error bit in -newpin fdm-hbp fdm-hbp.active bit in -ready fdm-hbp - -newcomp fdm-ve-jog timer=100 -newpin fdm-ve-jog fdm-ve-jog.distance float io -newpin fdm-ve-jog fdm-ve-jog.velocity float io -newpin fdm-ve-jog fdm-ve-jog.direction bit io -newpin fdm-ve-jog fdm-ve-jog.trigger bit io -newpin fdm-ve-jog fdm-ve-jog.continous bit out -newpin fdm-ve-jog fdm-ve-jog.dtg float in -newpin fdm-ve-jog fdm-ve-jog.max-velocity float in -ready fdm-ve-jog - -newcomp fdm-ve-params timer=100 -newpin fdm-ve-params fdm-ve-params.filament-dia float io -newpin fdm-ve-params fdm-ve-params.retract-vel float io -newpin fdm-ve-params fdm-ve-params.retract-len float io -newpin fdm-ve-params fdm-ve-params.extrude-scale float io -newpin fdm-ve-params fdm-ve-params.accel-adj-gain float io -ready fdm-ve-params - -newcomp fdm-e0-pid timer=100 -newpin fdm-e0-pid fdm-e0-pid.Pgain float io -newpin fdm-e0-pid fdm-e0-pid.Igain float io -newpin fdm-e0-pid fdm-e0-pid.Dgain float io -newpin fdm-e0-pid fdm-e0-pid.maxerrorI float io -newpin fdm-e0-pid fdm-e0-pid.bias float io -newpin fdm-e0-pid fdm-e0-pid.max float in -newpin fdm-e0-pid fdm-e0-pid.min float in -newpin fdm-e0-pid fdm-e0-pid.command float io -newpin fdm-e0-pid fdm-e0-pid.feedback float in -newpin fdm-e0-pid fdm-e0-pid.output float in -ready fdm-e0-pid - -# ###################################################### -# Axis-of-motion Specific Configs (not the GUI) -# ###################################################### - -# ################ -# X [0] Axis -# ################ - -# axis enable chain -net main_enable => hpg.stepgen.00.enable - -# position command and feedback -net emcmot.00.pos-cmd <= axis.0.motor-pos-cmd -net emcmot.00.pos-cmd => hpg.stepgen.00.position-cmd - -net motor.00.pos-fb <= hpg.stepgen.00.position-fb -net motor.00.pos-fb => axis.0.motor-pos-fb - - -# timing parameters -setp hpg.stepgen.00.dirsetup [AXIS_0]DIRSETUP -setp hpg.stepgen.00.dirhold [AXIS_0]DIRHOLD - -setp hpg.stepgen.00.steplen [AXIS_0]STEPLEN -setp hpg.stepgen.00.stepspace [AXIS_0]STEPSPACE - -setp hpg.stepgen.00.position-scale [AXIS_0]SCALE - -setp hpg.stepgen.00.maxvel [AXIS_0]STEPGEN_MAX_VEL -setp hpg.stepgen.00.maxaccel [AXIS_0]STEPGEN_MAX_ACC - -setp hpg.stepgen.00.steppin [AXIS_0]STEPPIN -setp hpg.stepgen.00.dirpin [AXIS_0]DIRPIN - - -# ################ -# Y [1] Axis -# ################ - -# axis enable chain -net main_enable => hpg.stepgen.01.enable - -# position command and feedback -net emcmot.01.pos-cmd <= axis.1.motor-pos-cmd -net emcmot.01.pos-cmd => hpg.stepgen.01.position-cmd - -net motor.01.pos-fb <= hpg.stepgen.01.position-fb -net motor.01.pos-fb => axis.1.motor-pos-fb - - -# timing parameters -setp hpg.stepgen.01.dirsetup [AXIS_1]DIRSETUP -setp hpg.stepgen.01.dirhold [AXIS_1]DIRHOLD - -setp hpg.stepgen.01.steplen [AXIS_1]STEPLEN -setp hpg.stepgen.01.stepspace [AXIS_1]STEPSPACE - -setp hpg.stepgen.01.position-scale [AXIS_1]SCALE - -setp hpg.stepgen.01.maxvel [AXIS_1]STEPGEN_MAX_VEL -setp hpg.stepgen.01.maxaccel [AXIS_1]STEPGEN_MAX_ACC - -setp hpg.stepgen.01.steppin [AXIS_1]STEPPIN -setp hpg.stepgen.01.dirpin [AXIS_1]DIRPIN - - -# ################ -# Z [2] Axis -# ################ - -# axis enable chain -net main_enable => hpg.stepgen.02.enable - -# position command and feedback -net emcmot.02.pos-cmd <= axis.2.motor-pos-cmd -net emcmot.02.pos-cmd => hpg.stepgen.02.position-cmd - -net motor.02.pos-fb <= hpg.stepgen.02.position-fb -net motor.02.pos-fb => axis.2.motor-pos-fb - - -# timing parameters -setp hpg.stepgen.02.dirsetup [AXIS_2]DIRSETUP -setp hpg.stepgen.02.dirhold [AXIS_2]DIRHOLD - -setp hpg.stepgen.02.steplen [AXIS_2]STEPLEN -setp hpg.stepgen.02.stepspace [AXIS_2]STEPSPACE - -setp hpg.stepgen.02.position-scale [AXIS_2]SCALE - -setp hpg.stepgen.02.maxvel [AXIS_2]STEPGEN_MAX_VEL -setp hpg.stepgen.02.maxaccel [AXIS_2]STEPGEN_MAX_ACC - -setp hpg.stepgen.02.steppin [AXIS_2]STEPPIN -setp hpg.stepgen.02.dirpin [AXIS_2]DIRPIN - - -# ################ -# A [3] Axis (Extruder) -# ################ - -# axis enable chain -# Take Z axis signal for enable -net main_enable => hpg.stepgen.03.enable - -net ve.xvel axis.0.joint-vel-cmd => hypot.nozzle-vel.in0 -net ve.yvel axis.1.joint-vel-cmd => hypot.nozzle-vel.in1 -net ve.zvel axis.2.joint-vel-cmd => hypot.nozzle-vel.in2 -net ve.nozzle-vel <= hypot.nozzle-vel.out - -# multiply area with speed and we get discharge (mm^3 per second) -net ve.cross-section => mult2.nozzle-discharge.in0 -net ve.nozzle-vel => mult2.nozzle-discharge.in1 -net ve.nozzle-discharge <= mult2.nozzle-discharge.out - -# calculate filament cross section area -# PI divided by 4 -setp mult2.filament-area.in0 0.78539816339 -net ve.filament-dia => mult2.filament-dia.in0 -net ve.filament-dia => mult2.filament-dia.in1 -net ve.filament-dia-squared mult2.filament-dia.out => mult2.filament-area.in1 -net ve.filament-area <= mult2.filament-area.out - -# calculate extrude rate -net ve.nozzle-discharge => div2.extrude-rate.in0 -net ve.filament-area => div2.extrude-rate.in1 -net ve.extrude-rate <= div2.extrude-rate.out - -# scale extrude rate -net ve.extrude-rate => mult2.extrude-rate-scaled.in0 -net ve.extrude-scale => mult2.extrude-rate-scaled.in1 -net ve.extrude-rate-scaled <= mult2.extrude-rate-scaled.out - -# these are used for a small offset in velocity during acceleration (buildup pressure inside -# the nozzle because of the current speed. Take the maximum accel you've specified in .ini -# get acceleration into lincurve -net ve.extrude-rate-scaled => ddt.extruder-accel.in -net ve.extrude-accel <= ddt.extruder-accel.out -net ve.extrude-accel => mult2.extrude-accel-adj.in0 -net ve.extrude-accel-adj-gain => mult2.extrude-accel-adj.in1 -net ve.extrude-accel-adj <= mult2.extrude-accel-adj.out -# get adjusted speed for adding to current speed during acceleration -net ve.extrude-rate-scaled => sum2.extrude-rate-adj.in0 -net ve.extrude-accel-adj => sum2.extrude-rate-adj.in1 -net ve.extrude-rate-adj <= sum2.extrude-rate-adj.out - -# Velocity extruding jog support -net ve.jog-velocity => mult2.jog-velocity-neg.in0 -setp mult2.jog-velocity-neg.in1 -1.0 -net ve.jog-velocity-neg <= mult2.jog-velocity-neg.out -net ve.jog-velocity => mux2.jog-velocity-signed.in0 -net ve.jog-velocity-neg => mux2.jog-velocity-signed.in1 -net ve.jog-direction => mux2.jog-velocity-signed.sel -net ve.jog-velocity-signed <= mux2.jog-velocity-signed.out - -net ve.jog-distance => div2.ve-jog-time.in0 -net ve.jog-velocity => div2.ve-jog-time.in1 -net ve.jog-time <= div2.ve-jog-time.out - -net ve.jog-trigger => oneshot.ve-jog.in -net ve.jog-time => oneshot.ve-jog.width -setp oneshot.ve-jog.rising 1 -setp oneshot.ve-jog.falling 1 -setp oneshot.ve-jog.retriggerable 1 -net ve.jog-active <= oneshot.ve-jog.out - -net ve.jog-continous => or2.ve-jog-enable.in0 -net ve.jog-active => or2.ve-jog-enable.in1 -net ve.jog-enable <= or2.ve-jog-enable.out - -net ve.jog-enable => mux2.ve-base-vel.sel -setp mux2.ve-base-vel.in0 0.0 -net ve.jog-velocity-signed => mux2.ve-base-vel.in1 -net ve.base-vel <= mux2.ve-base-vel.out - -net ve.jog-time-left <= oneshot.ve-jog.time-left -net ve.jog-velocity => mult2.ve-jog-dtg.in0 -net ve.jog-time-left => mult2.ve-jog-dtg.in1 -net ve.jog-dtg <= mult2.ve-jog-dtg.out - -# negative retract velocity -net ve.retract-vel => mult2.retract-vel-neg.in0 -setp mult2.retract-vel-neg.in1 -1.0 -net ve.retract-vel-neg <= mult2.retract-vel-neg.out - -# disable extruder on jog -setp reset.extruder-en1.rising 1 -setp reset.extruder-en1.falling 1 -setp reset.extruder-en1.retriggerable 1 -setp reset.extruder-en1.reset-bit 0 -net ve.jog-trigger => reset.extruder-en1.trigger -net ve.extruder-en <= reset.extruder-en1.out-bit - -setp reset.extruder-en2.rising 1 -setp reset.extruder-en2.falling 0 -setp reset.extruder-en2.retriggerable 1 -setp reset.extruder-en2.reset-bit 0 -net ve.jog-continous => reset.extruder-en2.trigger -net ve.extruder-en <= reset.extruder-en2.out-bit - -# now the solution of Andy Pugh for automatically retracting/priming -#00 = motion without extrusion / extruder jogging -#01 = retract -#10 = motion with extrusion -#11 = pre-charge -net ve.base-vel => mux4.ve.in0 -net ve.retract-vel-neg => mux4.ve.in1 -net ve.extrude-rate-adj => mux4.ve.in2 -net ve.retract-vel => mux4.ve.in3 -net ve.extrude-vel <= mux4.ve.out - -# calculate retract time -net ve.retract-len => div2.retract-time.in0 -net ve.retract-vel => div2.retract-time.in1 -net ve.retract-time <= div2.retract-time.out - -# We want the retract-charge to run for a fixed time: -# when sel0 set to "1" meaning motion with extrusion" the on the rising edge -# there will temporarily be also sel1 which is high, meaning a pre-charge because the -# sel combination is 11 -# when sel1 set to "0" meaning decoupling motion with extrusion" then the falling edge -# will trigger a 01 combination, meaning a retract -net ve.extruder-en => oneshot.retract.in mux4.ve.sel1 -net ve.retract oneshot.retract.out => mux4.ve.sel0 motion.feed-hold -# trigger a retract/unretract move when extruder is enable or disabled -setp oneshot.retract.rising 1 -setp oneshot.retract.falling 1 -setp oneshot.retract.retriggerable 1 -#by setting the width, the automatic retract/precharge can be disabled -net ve.retract-time => oneshot.retract.width - -net ve.extrude-vel => hpg.stepgen.03.velocity-cmd -sets ve.retract-len [EXTRUDER_0]RETRACT_LEN -sets ve.retract-vel [EXTRUDER_0]RETRACT_VEL -sets ve.filament-dia [EXTRUDER_0]FILAMENT_DIA -sets ve.extrude-accel-adj-gain 0.1 -sets ve.extrude-scale 1.0 - -# timing parameters -# Velocity control mode -setp hpg.stepgen.03.control-type 1 -setp hpg.stepgen.03.dirsetup [AXIS_3]DIRSETUP -setp hpg.stepgen.03.dirhold [AXIS_3]DIRHOLD - -setp hpg.stepgen.03.steplen [AXIS_3]STEPLEN -setp hpg.stepgen.03.stepspace [AXIS_3]STEPSPACE - -setp hpg.stepgen.03.position-scale [AXIS_3]SCALE - -setp hpg.stepgen.03.maxvel [AXIS_3]STEPGEN_MAX_VEL -setp hpg.stepgen.03.maxaccel [AXIS_3]STEPGEN_MAX_ACC - -setp hpg.stepgen.03.steppin [AXIS_3]STEPPIN -setp hpg.stepgen.03.dirpin [AXIS_3]DIRPIN - - -# ################################################## -# Standard I/O - EStop, Enables, Limit Switches, Etc -# ################################################## - -# create signals for tool loading loopback -net tool-prep-loop iocontrol.0.tool-prepare => iocontrol.0.tool-prepared -net tool-change-loop iocontrol.0.tool-change => iocontrol.0.tool-changed - -# Machine power -net main_enable <= axis.0.amp-enable-out => HwConfig.enable => Pwm.enable - -# Microstepping and Mode -# value = 1/2^value. e.g. 5 means 1/32 microstepping. -setp HwConfig.stepper.0.microstepping 5 -setp HwConfig.stepper.1.microstepping 5 -setp HwConfig.stepper.2.microstepping 5 -setp HwConfig.stepper.3.microstepping 5 -setp HwConfig.stepper.4.microstepping 5 -setp HwConfig.stepper.0.current 1.8 -setp HwConfig.stepper.1.current 1.8 -setp HwConfig.stepper.2.current 1.2 -setp HwConfig.stepper.3.current 1.2 -setp HwConfig.stepper.4.current 1.8 - -# FAN_1 = Pwm.8.out -# System Fan at FAN_1 -# FAN_3 = Pwm.10.out -# Extruder Fan at FAN_3 -setp mux2.system-fan.in1 1 -setp mux2.system-fan.in0 0 -net main_enable => mux2.system-fan.sel -net system-fan.pwm <= mux2.system-fan.out => Pwm.8.out -# => Pwm.10.out - -# FAN_2 = Pwm.9.out - -# ################ -# Limit Switches -# ################ -newsig limit-x-min bit -newsig limit-x-max bit -newsig limit-y-min bit -newsig limit-y-max bit -newsig limit-z-min bit -newsig limit-z-max bit - -net limit-x-min <= bb_gpio.p9.in-25 -net limit-x-max <= bb_gpio.p9.in-11 -net limit-y-min <= bb_gpio.p9.in-23 -net limit-y-max <= bb_gpio.p9.in-16 -net limit-z-min <= bb_gpio.p9.in-13 -net limit-z-max <= bb_gpio.p9.in-18 - -# Adjust as needed for your switch polarity -# setp bb_gpio.p8.in-08.invert 0 - -# Uncomment if you actually have limit switches setup -# You probably want to setup homing in the INI file, as well -net limit-x-min => axis.0.home-sw-in -net limit-x-min => axis.0.neg-lim-sw-in -#net limit-x-max => axis.0.pos-lim-sw-in -net limit-y-max => axis.1.home-sw-in -#net limit-y-min => axis.1.neg-lim-sw-in -net limit-y-max => axis.1.pos-lim-sw-in -net limit-z-max => axis.2.home-sw-in -#net limit-z-min => axis.2.neg-lim-sw-in -net limit-z-max => axis.2.pos-lim-sw-in - -# ################################################## -# PWM and Temperature Signals -# ################################################## - -# Extruder 0 temperature control -# -------------------------------------------------------------------------- -newsig e0.temp.set float -newsig e0.temp.meas float -newsig e0.temp.range.pos_error float -newsig e0.temp.range.neg_error float -newsig e0.temp.range.max float -newsig e0.temp.range.min float -newsig e0.temp.in-range bit -newsig e0.temp.pwm float -newsig e0.temp.pwm.max float -newsig e0.temp.limit.min float -newsig e0.temp.limit.max float -newsig e0.temp.standby float -newsig e0.temp.in-limit bit -newsig e0.therm-ok bit -newsig e0.no-error bit -newsig e0.error bit -newsig e0.active bit - -net e0.temp.meas <= Therm.ch-04.value - -# PID -net main_enable => pid.e0-temp.enable -net e0.temp.meas => pid.e0-temp.feedback -net e0.temp.set => pid.e0-temp.command -net e0.heater <= pid.e0-temp.output -net e0.heater => limit1.e0-heater.in -net e0.heaterl <= limit1.e0-heater.out - -# Limit heater PWM to positive values -# PWM mimics hm2 implementation, which generates output for negative values -setp limit1.e0-heater.min 0.0 -setp limit1.e0-heater.max 1.0 -net e0.temp.pwm.max => pid.e0-temp.maxoutput -sets e0.temp.pwm.max [EXTRUDER_0]PWM_MAX - -# Temperature checking -net e0.temp.set => sum2.e0-temp-range-pos.in0 -net e0.temp.range.pos_error => sum2.e0-temp-range-pos.in1 -net e0.temp.set => sum2.e0-temp-range-neg.in0 -net e0.temp.range.neg_error => sum2.e0-temp-range-neg.in1 - -net e0.temp.range.min sum2.e0-temp-range-neg.out => wcomp.e0-temp-range.min -net e0.temp.range.max sum2.e0-temp-range-pos.out => wcomp.e0-temp-range.max -net e0.temp.meas => wcomp.e0-temp-range.in -#the output of wcomp.e0-temp-range will say if measured temperature is in range of set value -#this needs to be coupled to a digital input for M66 readout -net e0.temp.in-range <= wcomp.e0-temp-range.out - -# limit the output temperature to prevent damage when thermistor is broken/removed -net e0.temp.limit.min => wcomp.e0-temp-limit.min -net e0.temp.limit.max => wcomp.e0-temp-limit.max -net e0.temp.meas => wcomp.e0-temp-limit.in -net e0.temp.in-limit <= wcomp.e0-temp-limit.out - -# check the thermistor -net e0.temp.meas => thermistor-check.e0.temp -net e0.temp.in-range => not.e0-temp-range.in -net e0.temp.in-range_n <= not.e0-temp-range.out -net e0.temp.in-range_n => thermistor-check.e0.enable -net e0.heaterl => thermistor-check.e0.pid -net e0.therm-ok <= thermistor-check.e0.no-error - -# no error chain -net e0.therm-ok => and2.e0-no-error.in-00 -net e0.temp.in-limit => and2.e0-no-error.in-01 -net e0.no-error <= and2.e0-no-error.and -net e0.no-error => not.e0-error.in -net e0.error <= not.e0-error.out - -# PID control linking -net e0.pid.Pgain fdm-e0-pid.Pgain <=> pid.e0-temp.Pgain -net e0.pid.Igain fdm-e0-pid.Igain <=> pid.e0-temp.Igain -net e0.pid.Dgain fdm-e0-pid.Dgain <=> pid.e0-temp.Dgain -net e0.pid.maxerrorI fdm-e0-pid.maxerrorI <=> pid.e0-temp.maxerrorI -net e0.temp.limit.min => fdm-e0-pid.min -net e0.temp.limit.max => fdm-e0-pid.max -net e0.temp.set <=> fdm-e0-pid.command -net e0.temp.meas => fdm-e0-pid.feedback -net e0.heater => fdm-e0-pid.output - -# PID parameters -sets e0.pid.Pgain [EXTRUDER_0]PID_PGAIN -sets e0.pid.Igain [EXTRUDER_0]PID_IGAIN -sets e0.pid.Dgain [EXTRUDER_0]PID_DGAIN -# sets e0.pid.maxerrorI [EXTRUDER_0]PID_MAXERRORI - -# Parameters -sets e0.temp.range.pos_error [EXTRUDER_0]TEMP_RANGE_POS_ERROR -sets e0.temp.range.neg_error [EXTRUDER_0]TEMP_RANGE_NEG_ERROR -sets e0.temp.limit.min [EXTRUDER_0]TEMP_LIMIT_MIN -sets e0.temp.limit.max [EXTRUDER_0]TEMP_LIMIT_MAX -sets e0.temp.standby [EXTRUDER_0]TEMP_STANDBY - -# Thermistor checking -setp thermistor-check.e0.wait 9.0 -setp thermistor-check.e0.min-pid 1.5 # disable0.25 -setp thermistor-check.e0.min-temp 1.5 -net e0.pid.bias => thermistor-check.e0.bias - -# Output pin -net e0.heaterl => Pwm.5.out -net e0.active <= Pwm.5.on - -# Bed temperature control -# ---------------------------------------------------------------------------- -newsig hbp.temp.set float -newsig hbp.temp.meas float -newsig hbp.temp.range.pos_error float -newsig hbp.temp.range.neg_error float -newsig hbp.temp.range.max float -newsig hbp.temp.range.min float -newsig hbp.temp.in-range bit -newsig hbp.temp.pwm float -newsig hbp.temp.pwm.max float -newsig hbp.temp.limit.min float -newsig hbp.temp.limit.max float -newsig hbp.temp.standby float -newsig hbp.temp.in-limit bit -newsig hbp.therm-ok bit -newsig hbp.no-error bit -newsig hbp.error bit -newsig hbp.active bit - -net hbp.temp.meas <= Therm.ch-06.value - -# PID -net main_enable => pid.hbp-temp.enable -net hbp.temp.meas => pid.hbp-temp.feedback -net hbp.temp.set => pid.hbp-temp.command -net hbp.heater <= pid.hbp-temp.output -net hbp.heater => limit1.hbp-heater.in -net hbp.heaterl <= limit1.hbp-heater.out - -# Limit heater PWM to positive values -# PWM mimics hm2 implementation, which generates output for negative values -setp limit1.hbp-heater.min 0 -setp limit1.hbp-heater.max [HBP]PWM_MAX -net hbp.temp.pwm.max => pid.hbp-temp.maxoutput -sets hbp.temp.pwm.max [HBP]PWM_MAX - -# Temperature checking -net hbp.temp.set => sum2.hbp-temp-range-pos.in0 -net hbp.temp.range.pos_error => sum2.hbp-temp-range-pos.in1 -net hbp.temp.set => sum2.hbp-temp-range-neg.in0 -net hbp.temp.range.neg_error => sum2.hbp-temp-range-neg.in1 - -net hbp.temp.range.min sum2.hbp-temp-range-neg.out => wcomp.hbp-temp-range.min -net hbp.temp.range.max sum2.hbp-temp-range-pos.out => wcomp.hbp-temp-range.max -net hbp.temp.meas => wcomp.hbp-temp-range.in -#the output of wcomp.e0-temp-range will say if measured temperature is in range of set value -#this needs to be coupled to a digital input for M66 readout -net hbp.temp.in-range <= wcomp.hbp-temp-range.out - -# limit the output temperature to prevent damage when thermistor is broken/removed -net hbp.temp.limit.min => wcomp.hbp-temp-limit.min -net hbp.temp.limit.max => wcomp.hbp-temp-limit.max -net hbp.temp.meas => wcomp.hbp-temp-limit.in -net hbp.temp.in-limit <= wcomp.hbp-temp-limit.out - -# check the thermistor -net hbp.temp.meas => thermistor-check.hbp.temp -net hbp.temp.in-range => not.hbp-temp-range.in -net hbp.temp.in-range_n <= not.hbp-temp-range.out -net hbp.temp.in-range_n => thermistor-check.hbp.enable -net hbp.heaterl => thermistor-check.hbp.pid -net hbp.therm-ok <= thermistor-check.hbp.no-error - -# no error chain -net hbp.therm-ok => and2.hbp-no-error.in-00 -net hbp.temp.in-limit => and2.hbp-no-error.in-01 -net hbp.no-error <= and2.hbp-no-error.and -net hbp.no-error => not.hbp-error.in -net hbp.error <= not.hbp-error.out - -# PID parameters -#setp pid.hbp-temp.FF0 0 -#setp pid.hbp-temp.FF1 0 -#setp pid.hbp-temp.FF2 0 -setp pid.hbp-temp.Pgain [HBP]PID_PGAIN -setp pid.hbp-temp.Igain [HBP]PID_IGAIN -setp pid.hbp-temp.Dgain [HBP]PID_DGAIN -# setp pid.hbp-temp.maxerrorI [HBP]PID_MAXERRORI -setp pid.hbp-temp.bias [HBP]PID_BIAS - -# Parameters -sets hbp.temp.range.pos_error [HBP]TEMP_RANGE_POS_ERROR -sets hbp.temp.range.neg_error [HBP]TEMP_RANGE_NEG_ERROR -sets hbp.temp.limit.min [HBP]TEMP_LIMIT_MIN -sets hbp.temp.limit.max [HBP]TEMP_LIMIT_MAX -sets hbp.temp.standby [HBP]TEMP_STANDBY - -# Thermistor checking -setp thermistor-check.hbp.wait 30.0 -setp thermistor-check.hbp.min-pid 1.1 # disable -setp thermistor-check.hbp.min-temp 1.5 - -# Output pin -net hbp.heaterl => Pwm.4.out -net hbp.active <= Pwm.4.on - -# ################################################## -# Motion AIO and DIO -# ################################################## - -net hbp.temp.set <= motion.analog-out-io-00 -net e0.temp.set <= motion.analog-out-io-02 - -net ve.cross-section <= motion.analog-out-41 -net ve.filament-dia <= motion.analog-out-io-44 -net ve.jog-velocity <= motion.analog-out-io-45 -net ve.jog-distance <= motion.analog-out-io-46 - -net probe.enable <= motion.digital-out-00 -net ve.extruder-en <= motion.digital-out-io-01 -net ve.jog-trigger <= motion.digital-out-io-02 - -net hbp.temp.meas => motion.analog-in-00 -net e0.temp.meas => motion.analog-in-02 - -net hbp.temp.in-range => motion.digital-in-00 -net e0.temp.in-range => motion.digital-in-02 -net ve.jog-trigger => motion.digital-in-12 - -# ################################################## -# UI linking -# ################################################## - -net hbp.temp.meas => fdm-hbp.temp.meas -net hbp.temp.set <=> fdm-hbp.temp.set -net hbp.temp.standby => fdm-hbp.temp.standby -net hbp.temp.limit.min => fdm-hbp.temp.limit.min -net hbp.temp.limit.max => fdm-hbp.temp.limit.max -net hbp.temp.in-range => fdm-hbp.temp.in-range -net hbp.error => fdm-hbp.error -net hbp.active => fdm-hbp.active -net e0.temp.meas => fdm-e0.temp.meas -net e0.temp.set <=> fdm-e0.temp.set -net e0.temp.standby => fdm-e0.temp.standby -net e0.temp.limit.min => fdm-e0.temp.limit.min -net e0.temp.limit.max => fdm-e0.temp.limit.max -net e0.temp.in-range => fdm-e0.temp.in-range -net e0.error => fdm-e0.error -net e0.active => fdm-e0.active - -net ve.jog-trigger <=> fdm-ve-jog.trigger -net ve.jog-continous <= fdm-ve-jog.continous -net ve.jog-velocity <=> fdm-ve-jog.velocity -net ve.jog-distance <=> fdm-ve-jog.distance -net ve.jog-direction <=> fdm-ve-jog.direction -net ve.jog-dtg => fdm-ve-jog.dtg -sets ve.jog-velocity [TRAJ]DEFAULT_ANGULAR_VELOCITY -setp fdm-ve-jog.max-velocity [AXIS_3]MAX_VELOCITY -net ve.filament-dia <=> fdm-ve-params.filament-dia -net ve.retract-vel <=> fdm-ve-params.retract-vel -net ve.retract-len <=> fdm-ve-params.retract-len -net ve.extrude-scale <=> fdm-ve-params.extrude-scale -net ve.extrude-accel-adj-gain <=> fdm-ve-params.accel-adj-gain - - -# ################################################## -# Watchdog & EStop -# ################################################## - -setp watchdog.timeout-0 0.2 -setp watchdog.timeout-1 0.2 -setp watchdog.timeout-2 0.2 -net hwconfig-watchdog <= HwConfig.watchdog => watchdog.input-0 -net pwm-watchdog <= Pwm.watchdog => watchdog.input-1 -net therm-watchdog <= Therm.watchdog => watchdog.input-2 - -net temp-ok <= Therm.no-error => estopchain.in-00 -net e0.no-error => estopchain.in-01 -net hbp.no-error => estopchain.in-02 -#net driver.x.fault => estopchain.in-03 <= bb_gpio.p8.in-10 -#net driver.y.fault => estopchain.in-04 <= bb_gpio.p8.in-09 -#net driver.z.fault => estopchain.in-05 <= bb_gpio.p9.in-24 -#net driver.e0.fault => estopchain.in-06 <= bb_gpio.p8.in-18 - -net estop-loop <= estopchain.and => iocontrol.0.emc-enable-in - -# start haltalk server -loadusr -W haltalk - diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/replicape.ini b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/replicape.ini deleted file mode 100755 index e9c3a04e66..0000000000 --- a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/replicape.ini +++ /dev/null @@ -1,369 +0,0 @@ -[PRUCONF] -DRIVER=hal_pru_generic -CONFIG=pru=0 num_stepgens=4 num_pwmgens=0 -PRUBIN=xenomai/pru_generic.bin - -[EMC] -# Name of machine, for use with display, etc. -MACHINE = Replicape - -# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others -#DEBUG = 0x00000003 -#DEBUG = 0x00000007 -DEBUG = 0 - -[DISPLAY] -# Name of display program, e.g., tkemc -DISPLAY = mkwrapper - -# Touchy currently won't work without some hardware buttons/jog-wheel -#DISPLAY = touchy - -# Cycle time, in seconds, that display will sleep between polls -CYCLE_TIME = 0.100 - -# Path to help file -HELP_FILE = tklinucnc.txt - -# Initial display setting for position, RELATIVE or MACHINE -POSITION_OFFSET = RELATIVE - -# Initial display setting for position, COMMANDED or ACTUAL -POSITION_FEEDBACK = ACTUAL - -# Highest value that will be allowed for feed override, 1.0 = 100% -MAX_FEED_OVERRIDE = 2.0 - -# Prefix to be used -PROGRAM_PREFIX = /home/sam/linuxcnc/nc_files - -# Introductory graphic -INTRO_GRAPHIC = machinekit.gif -INTRO_TIME = 5 - -# Increments for the JOG section -INCREMENTS = 10 1 0.1 0.01 - -[FILTER] -PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image -PROGRAM_EXTENSION = .py Python Script -png = image-to-gcode -gif = image-to-gcode -jpg = image-to-gcode -py = python - - -[TASK] -# Name of task controller program, e.g., milltask -TASK = milltask -# Cycle time, in seconds, that task controller will sleep between polls -CYCLE_TIME = 0.010 - - -[RS274NGC] - -# File containing interpreter variables -PARAMETER_FILE = pru-stepper.var -SUBROUTINE_PATH = /home/sam/linuxcnc/subroutines - -# remapping Machinekit FDM GCodes -REMAP=G22 modalgroup=1 ngc=g22 -REMAP=G23 modalgroup=1 ngc=g23 -REMAP=G28 modalgroup=1 argspec=xyza ngc=g28 -REMAP=G29 modalgroup=1 ngc=g29 -REMAP=G29.1 modalgroup=1 argspec=xyz ngc=g29_1 -REMAP=G29.2 modalgroup=1 argspec=xyz ngc=g29_2 -REMAP=G30 modalgroup=1 argspec=pxy ngc=g30 -REMAP=M104 modalgroup=10 argspec=iPt ngc=m104 -REMAP=M106 modalgroup=10 argspec=iPt ngc=m106 -REMAP=M107 modalgroup=10 argspec=it ngc=m107 -REMAP=M109 modalgroup=10 argspec=tP ngc=m109 -REMAP=M140 modalgroup=10 argspec=iP ngc=m140 -REMAP=M141 modalgroup=10 argspec=iP ngc=m141 -REMAP=M190 modalgroup=10 argspec=P ngc=m190 -REMAP=M191 modalgroup=10 argspec=P ngc=m191 -REMAP=M200 modalgroup=10 argspec=D ngc=m200 -REMAP=M226 modalgroup=10 ngc=m226 -REMAP=M280 modalgroup=10 argspec=itP ngc=m280 -REMAP=M300 modalgroup=10 argspec=iqP ngc=m300 -REMAP=M400 modalgroup=10 ngc=m400 -REMAP=M420 modalgroup=10 argspec=itredp ngc=m420 -REMAP=M700 modalgroup=10 argspec=iP ngc=m700 -#REMAP=M601 modalgroup=10 argspec=SP ngc=m601 - -# enable ini parameter passing -FEATURES = 4 - -[EMCMOT] -EMCMOT = motmod - -# Timeout for comm to emcmot, in seconds -COMM_TIMEOUT = 1.0 -# Interval between tries to emcmot, in seconds -COMM_WAIT = 0.010 - -# Servo task period, in nanoseconds -# SERVO_PERIOD = 1000000 -SERVO_PERIOD = 2500000 - - -[HAL] - -# The run script first uses halcmd to execute any HALFILE -# files, and then to execute any individual HALCMD commands. - -# list of hal config files to run through halcmd -# files are executed in the order in which they appear - -HALFILE = replicape.hal - -# list of halcmd commands to execute -# commands are executed in the order in which they appear -#HALCMD = save neta - -#HALUI = halui -#POSTGUI_HALFILE = 3D.postgui.hal - - -[TRAJ] - -AXES = 3 -COORDINATES = X Y Z -DEFAULT_VELOCITY = 20 -MAX_VELOCITY = 2000 -LINEAR_UNITS = mm -TIME_UNITS = s -ANGULAR_UNITS = degree -CYCLE_TIME = 0.010 - -MIN_LINEAR_VELOCITY = 5 -MAX_LINEAR_VELOCITY = 100 -DEFAULT_LINEAR_VELOCITY = 20 -MIN_ANGULAR_VELOCITY = 1 -MAX_ANGULAR_VELOCITY = 50 -DEFAULT_ANGULAR_VELOCITY = 10 - -ARC_BLEND_ENABLE = 1 -ARC_BLEND_FALLBACK_ENABLE = 0 -ARC_BLEND_OPTIMIZATION_DEPTH = 10 -ARC_BLEND_GAP_CYCLES = 4 -ARC_BLEND_RAMP_FREQ = 20 - - -[AXIS_0] - -# -# Step timing is 40 us steplen + 40 us stepspace -# That gives 80 us step period = 12.5 KHz step freq -# -# Bah, even software stepping can handle that, hm2 doesnt buy you much with -# such slow steppers. -# -# Scale is 200 steps/rev * 5 revs/inch = 1000 steps/inch -# -# This gives a maxvel of 12.5/1 = 12.5 ips -# - -TYPE = LINEAR -MAX_VELOCITY = 400.0 -MAX_ACCELERATION = 600.0 -# Set Stepgen max 20% higher than the axis -STEPGEN_MAX_VEL = 500.0 -STEPGEN_MAX_ACC = 800.0 - -BACKLASH = 0.000 - -SCALE = 91.428571 - -MIN_LIMIT = 0 -MAX_LIMIT = 193.5 - -FERROR = 1.0 -MIN_FERROR = 0.25 - -HOME = 3 -HOME_OFFSET = -0.500 -HOME_IGNORE_LIMITS = YES -HOME_USE_INDEX = NO -HOME_SEQUENCE = 1 -HOME_SEARCH_VEL = -25 -HOME_LATCH_VEL = -5 - -# these are in nanoseconds -DIRSETUP = 200 -DIRHOLD = 200 -STEPLEN = 1000 -STEPSPACE = 1000 -STEPPIN = 817 -DIRPIN = 826 - - -[AXIS_1] - -TYPE = LINEAR -MAX_VELOCITY = 400.0 -MAX_ACCELERATION = 600.0 -# Set Stepgen max 20% higher than the axis -STEPGEN_MAX_VEL = 500.0 -STEPGEN_MAX_ACC = 800.0 - -BACKLASH = 0.000 - -SCALE = 91.428571 - -MIN_LIMIT = 0 -MAX_LIMIT = 214 - -FERROR = 1.0 -MIN_FERROR = 0.25 - -HOME = 212 -HOME_OFFSET = 215.00 -HOME_IGNORE_LIMITS = YES -HOME_USE_INDEX = NO -HOME_SEQUENCE = 1 - -# Set to zero if you don't have physical home/limit switches -# Set to the desired homing and latch velocity if you have switches -# See: https://github.com/machinekit/machinekit-docs -HOME_SEARCH_VEL = 25.0 -HOME_LATCH_VEL = 5.0 - -# these are in nanoseconds -DIRSETUP = 200 -DIRHOLD = 200 -STEPLEN = 1000 -STEPSPACE = 1000 -# STEPPIN = 812 -# DIRPIN = 819 -STEPPIN = 811 -DIRPIN = 816 - - -[AXIS_2] - -TYPE = LINEAR -MAX_VELOCITY = 20 -MAX_ACCELERATION = 3000.0 -# Set Stepgen max 20% higher than the axis -STEPGEN_MAX_VEL = 25.0 -STEPGEN_MAX_ACC = 3600.0 - -BACKLASH = 0.000 - -SCALE = -1280 - -MIN_LIMIT = 0.0 -MAX_LIMIT = 105 - -FERROR = 1.0 -MIN_FERROR = 0.25 - -HOME = 100.000 -HOME_OFFSET = 102.00 -HOME_IGNORE_LIMITS = YES -HOME_USE_INDEX = NO -HOME_SEQUENCE = 0 - -# Set to zero if you don't have physical home/limit switches -# Set to the desired homing and latch velocity if you have switches -# See: https://github.com/machinekit/machinekit-docs -HOME_SEARCH_VEL = 20.0 -HOME_LATCH_VEL = 5.0 - -# these are in nanoseconds -DIRSETUP = 200 -DIRHOLD = 200 -STEPLEN = 1000 -STEPSPACE = 1000 -STEPPIN = 813 -DIRPIN = 814 - - -[AXIS_3] - -TYPE = ANGULAR -MAX_VELOCITY = 80 -MAX_ACCELERATION = 3000.0 -# Set Stepgen max 20% higher than the axis -STEPGEN_MAX_VEL = 100.0 -STEPGEN_MAX_ACC = 3750.0 - -BACKLASH = 0.000 - -SCALE = 430 - -MIN_LIMIT = -2147483647 -MAX_LIMIT = 2147483647 - -FERROR = 1.0 -MIN_FERROR = 0.25 - -HOME = 0.000 -HOME_OFFSET = 0.00 -HOME_IGNORE_LIMITS = YES -HOME_USE_INDEX = NO -HOME_SEQUENCE = 0 - -# Set to zero if you don't have physical home/limit switches -# Set to the desired homing and latch velocity if you have switches -# See: https://github.com/machinekit/machinekit-docs -HOME_SEARCH_VEL = 0.0 -HOME_LATCH_VEL = 0.0 - -# these are in nanoseconds -DIRSETUP = 200 -DIRHOLD = 200 -STEPLEN = 1000 -STEPSPACE = 1000 -STEPPIN = 912 -DIRPIN = 815 - -[EMCIO] -# Name of IO controller program, e.g., io -EMCIO = io -# cycle time, in seconds -CYCLE_TIME = 0.100 -# tool table file -TOOL_TABLE = tool.tbl - -[FDM] -VELOCITY_EXTRUSION_ENABLE = 1 - -[EXTRUDER_0] -PID_PGAIN = 0.06 -PID_IGAIN = 0.0005 -PID_DGAIN = 0.3 -# PID_PGAIN = 0.11381434 -# PID_IGAIN = 0.00140295 -# PID_DGAIN = 2.30829711 -PID_MAXERRORI = 0.2 -PID_BIAS = 0.0 -PWM_MAX = 1.0 -TEMP_RANGE_POS_ERROR = 1.0 -TEMP_RANGE_NEG_ERROR = -1.0 -TEMP_LIMIT_MIN = 0.0 -TEMP_LIMIT_MAX = 300.0 -TEMP_STANDBY = 150.0 -THERMISTOR = epcos_B57560G1104 - -RETRACT_LEN = 3 -RETRACT_VEL = 60.0 - -FILAMENT_DIA = 3.05 - -FAN_BIAS = 0.56 - -[HBP] -PID_PGAIN = 0.05367 -PID_IGAIN = 0.001875 -PID_DGAIN = 0.3879 -PID_MAXERRORI = 1.0 -PID_BIAS = 0.0 -PWM_MAX = 1.0 -TEMP_RANGE_POS_ERROR = 1.0 -TEMP_RANGE_NEG_ERROR = -1.0 -TEMP_LIMIT_MIN = 0.0 -TEMP_LIMIT_MAX = 120.0 -TEMP_STANDBY = 60.0 -THERMISTOR = epcos_B57560G1104 diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/reset.comp b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/reset.comp deleted file mode 100644 index 327ce73898..0000000000 --- a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/reset.comp +++ /dev/null @@ -1,69 +0,0 @@ -/****************************************************************************** - * - * Copyright (C) 2015 Alexander Rössler - * - * - * This module resets a IO signal - * - ****************************************************************************** - * - * This program 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 2 - * of the License, or (at your option) any later version. - * - * This program 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 this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301, USA. - * - * THE AUTHORS OF THIS PROGRAM ACCEPT ABSOLUTELY NO LIABILITY FOR - * ANY HARM OR LOSS RESULTING FROM ITS USE. IT IS _EXTREMELY_ UNWISE - * TO RELY ON SOFTWARE ALONE FOR SAFETY. Any machinery capable of - * harming persons must have provisions for completely removing power - * from all motors, etc, before persons enter any danger area. All - * machinery must be designed to comply with local and national safety - * codes, and the authors of this software can not, and do not, take - * any responsibility for such compliance. - * - * This code was written as part of the LinuxCNC project. For more - * information, go to www.linuxcnc.org. - * - ******************************************************************************/ - -component reset "Resets a IO signal"; -pin in bit trigger "Trigger input"; -pin io u32 out_u32 = 0 "Unsigned 32 bit integer output value"; -pin in u32 reset_u32 = 0 "Unsigned 32 bit integer reset value"; -pin io s32 out_s32 = 0 "Signed 32 bit integer output value"; -pin in s32 reset_s32 = 0 "Signed 32 bit integer reset value"; -pin io float out_float = 0.0 "Float output value"; -pin in float reset_float = 0.0 "Float reset value"; -pin io bit out_bit = 0 "Bit integer output value"; -pin in bit reset_bit = 0 "Bit reset value"; -pin in bit retriggerable = 1 "Allow additional edges to reset"; -pin in bit rising = 1 "Trigger on rising edge"; -pin in bit falling = 0 "Trigger on falling edge"; -function _ fp "Update the output value"; -description """ -Component to reset IO signals. -"""; -license "GPL"; -variable bool last_trigger = 0; -;; -FUNCTION(_) { - if (((rising && (trigger == 1)) || (falling && (trigger == 0))) - && (trigger != last_trigger)) - { - out_u32 = reset_u32; - out_s32 = reset_s32; - out_float = reset_float; - out_bit = reset_bit; - } - last_trigger = trigger; -} diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/run.py b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/run.py deleted file mode 100755 index bd8a168428..0000000000 --- a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/run.py +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/python - -import sys -import os -import subprocess -import importlib -import argparse -from time import * -from machinekit import launcher - -launcher.register_exit_handler() -#launcher.set_debug_level(5) -os.chdir(os.path.dirname(os.path.realpath(__file__))) - -try: - launcher.check_installation() - launcher.cleanup_session() - launcher.install_comp('thermistor_check.comp') - launcher.install_comp('reset.comp') - # Video Streaming: you might need to create your own config - # launcher.start_process("videoserver --ini ~/video.ini Webcam1") - # Remote Control: Get a Machineface at ARM.Replicape.A4A.vel/ - launcher.start_process("configserver -n Replicape ~/Machineface/") - launcher.start_process('linuxcnc replicape.ini') -except subprocess.CalledProcessError: - launcher.end_session() - sys.exit(1) - -while True: - sleep(1) - launcher.check_processes() diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/setup.sh b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/setup.sh deleted file mode 100755 index 291cc92a01..0000000000 --- a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/setup.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -SLOTS=/sys/devices/bone_capemgr.*/slots -for DTBO in BB-BONE-REPLICAP ; do - if grep -q $DTBO $SLOTS ; then - echo $DTBO overlay found - else - echo $DTBO overlay not found - exit 1 - fi -done; - -if [ ! -r /sys/class/uio/uio0 ] ; then - echo PRU control files not found in /sys/class/uio/uio0 >&2 - exit 1; -fi - diff --git a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/thermistor_check.comp b/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/thermistor_check.comp deleted file mode 100644 index 7e6833107c..0000000000 --- a/configs/ARM/BeagleBone/Replicape-Stretch/ARM.Replicape.A4A/thermistor_check.comp +++ /dev/null @@ -1,135 +0,0 @@ -/****************************************************************************** - * - * Copyright (C) 2014 Alexander Rössler - * - * - * This module checks the functionality of thermistors - * - ****************************************************************************** - * - * This program 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 2 - * of the License, or (at your option) any later version. - * - * This program 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 this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301, USA. - * - * THE AUTHORS OF THIS PROGRAM ACCEPT ABSOLUTELY NO LIABILITY FOR - * ANY HARM OR LOSS RESULTING FROM ITS USE. IT IS _EXTREMELY_ UNWISE - * TO RELY ON SOFTWARE ALONE FOR SAFETY. Any machinery capable of - * harming persons must have provisions for completely removing power - * from all motors, etc, before persons enter any danger area. All - * machinery must be designed to comply with local and national safety - * codes, and the authors of this software can not, and do not, take - * any responsibility for such compliance. - * - * This code was written as part of the LinuxCNC project. For more - * information, go to www.linuxcnc.org. - * - ******************************************************************************/ - -component thermistor_check "LinuxCNC HAL component for checking functionality of thermistors"; -pin in float temp "Temperature input"; -pin in float min_temp "The minimum temperature change that should count"; -pin in float pid "Output of PID control"; -pin in float min_pid "The minimum PID control output to react to"; -pin in float bias "Bias for the PID input. Can be used to correct errors due to cooling."; -pin in float wait "Time to wait before triggering an error in secods"; -pin in bit enable "Enables or disables the component, out is TRUE when disabled"; -pin out bit no_error "Output value -> TRUE when the thermistor works as exspected"; -pin out bit error "Error value -> FALSE when the thermistor works as exspected"; -function _ fp "Update the output value"; -description """ -Component for checking functionality of thermistors -.LP -TODO -"""; -license "GPL"; -variable float last_temp = 0.0; -variable bool last_enable = 0; -variable float oldwait = 0.0; -variable int t_secs = 0; -variable int t_nsecs = 0; -variable int c_secs = 0; -variable int c_nsecs = 0; -variable bool start = 0; -;; -FUNCTION(_) { - bool active; - float temp_change; - float time; - - if (wait != oldwait) - { - time = wait; - if (time < 0) time = 0; // no negative timeout periods - // new timeout, convert to secs/ns - oldwait = time; - t_secs = time; - time -= t_secs; - t_nsecs = (1e9 * time); - - if (enable) { - // reset - start = 1; - } - } - - if ((enable) && (pid >= (min_pid+bias))) - { - if (start == 1) - { - // reset - c_secs = t_secs; - c_nsecs = t_nsecs; - last_temp = temp; - start = 0; - } - else - { - c_nsecs -= period; - if (c_nsecs < 0) - { - c_nsecs += 1000000000; - if (c_secs > 0) - { - c_secs--; - } - else - { - start = 1; // restart - } - } - - if (start == 1) - { - temp_change = temp - last_temp; - - if (temp_change >= min_temp) // correct - { - no_error = 1; - error = 0; - } - else - { - no_error = 0; - error = 1; - } - } - } - } - else - { - start = 1; - no_error = 1; - error = 0; - } -} From c53d4e1fef545f25b10390d3ad2c4d50b38d62c4 Mon Sep 17 00:00:00 2001 From: Mick Date: Sun, 1 Apr 2018 17:28:12 +0100 Subject: [PATCH 224/516] Add BCM2835 hardware to recognised processor types for RPi3 Fixes #1223 Signed-off-by: Mick --- src/hal/drivers/cpuinfo.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/hal/drivers/cpuinfo.c b/src/hal/drivers/cpuinfo.c index b33cdc381a..3b1abdf554 100644 --- a/src/hal/drivers/cpuinfo.c +++ b/src/hal/drivers/cpuinfo.c @@ -41,6 +41,8 @@ char *get_cpuinfo_revision(char *revision) rpi_found = 1; else if (strcmp(hardware, "BCM2709") == 0) rpi_found = 1; + else if (strcmp(hardware, "BCM2835") == 0) + rpi_found = 1; sscanf(buffer, "Revision : %s", revision); } fclose(fp); From 51a53956f6d7d78b52d9b10a76e62e084946479e Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Thu, 5 Apr 2018 11:47:21 +0200 Subject: [PATCH 225/516] Add socfpga hostmot2 memory peek/poke utility Signed-off-by: Michael Brown --- src/hal/utils/Submakefile | 11 ++++ src/hal/utils/mksocmemio.c | 101 +++++++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+) create mode 100644 src/hal/utils/mksocmemio.c diff --git a/src/hal/utils/Submakefile b/src/hal/utils/Submakefile index 0a01601822..12aeca856c 100644 --- a/src/hal/utils/Submakefile +++ b/src/hal/utils/Submakefile @@ -33,6 +33,17 @@ $(call TOOBJSDEPS, $(HALCMDCCSRCS)) : EXTRAFLAGS = \ $(PROTOBUF_LIBS) $(CZMQ_LIBS) $(AVAHI_LIBS) -lm -lstdc++ TARGETS += ../bin/halcmd +ifdef TARGET_PLATFORM_SOCFPGA +HM2UTILRCS := hal/utils/mksocmemio.c +$(call TOOBJSDEPS, $(HM2UTILRCS)) : EXTRAFLAGS = -Wall -Werror -std=c99 +USERSRCS += $(HM2UTILRCS) +../bin/mksocmemio: $(call TOOBJS, $(HM2UTILRCS)) + $(ECHO) Linking $(notdir $@) + @mkdir -p $(dir $@) + $(Q)$(CC) $(LDFLAGS) -g -Wall -o $@ $^ +TARGETS += ../bin/mksocmemio +endif + ifdef HAVE_GTK HALMETERSRCS := \ hal/utils/meter.c \ diff --git a/src/hal/utils/mksocmemio.c b/src/hal/utils/mksocmemio.c new file mode 100644 index 0000000000..5d128b4d7f --- /dev/null +++ b/src/hal/utils/mksocmemio.c @@ -0,0 +1,101 @@ +#include +#include +#include + +#include +#include +#include + +#define HW_REGS_SPAN ( 65536 ) + +//#define MAX_ADDR 65533 (higher creates no output error) +#define MAX_ADDR 1020 + +static void show_usage(void) +{ + printf("mksocmemio: Utility to read or write hm2socfpga memory locatons\n"); + printf("Note: the mksocfpga uio0 driver needs to be active\n "); + printf("To input Hexadecimal Address and data values, preceed the number with 0x:\n"); + printf("Usage options:\n"); + printf(" -h For this help message.\n"); + printf(" -r For reading an address: [-r

]\n"); + printf(" -w For writing an address: [-w
]\n"); +} + + +int main ( int argc, char *argv[] ) +{ + void *virtual_base; + void *h2p_lw_axi_mem_addr=NULL; + int fd; + u_int32_t index, inval; + + // Open /dev/uio0 + if ( ( fd = open ( "/dev/uio0", ( O_RDWR | O_SYNC ) ) ) == -1 ) { + printf ( " ERROR: could not open \"/dev/uio0\"...\n" ); + return ( 1 ); + } + + // get virtual addr that maps to physical + virtual_base = mmap( NULL, HW_REGS_SPAN, ( PROT_READ | PROT_WRITE ), MAP_SHARED, fd, 0); + + if ( virtual_base == MAP_FAILED ) { + printf ( " ERROR: mmap() failed...\n" ); + + close ( fd ); + return ( 1 ); + } + // Get the base address that maps to the device + // assign pointer + h2p_lw_axi_mem_addr=virtual_base; + if (argc > 2) { + if(argv[2][0] == '0' && argv[2][1] == 'x') { + printf("Hex address value input found\n"); + index = (u_int32_t) strtoul(argv[2], NULL, 16); + } + else { + printf("Assuming decimal address value input\n"); + index = (u_int32_t) strtoul(argv[2], NULL, 10); + } + u_int32_t value = *((u_int32_t *)(h2p_lw_axi_mem_addr + index)); + + switch (argv[1][1]) { + case 'r': + printf("Read: "); + printf("Address 0x%08X\t%u\n \tvalue = 0x%08X\t%u \n", index, index, value, value); + break; + case 'w': + if (argc == 4) { + printf("Write: "); +// printf("Address 0x%08X\t %u will be set to\nvalue 0x%08X \t %u \n", index, index, value, value); + if(argv[3][0] == '0' && argv[3][1] == 'x') { + inval = (u_int32_t) strtoul(argv[3], NULL, 16); + } + else { + inval = (u_int32_t) strtoul(argv[3], NULL, 10); + } + *((u_int32_t *)(h2p_lw_axi_mem_addr + index)) = inval; + printf("Wrote: 0x%08X\t %u\tto Address --> 0x%08X\t%u \n", inval, inval, index, index); + } else { + printf("Value missing use: mksocmemio -h to show valid options and argunemts\n"); + } + break; + default: + printf("Wrong option: %s\n use: mksocmemio -h to show valid options and argunemts\n", argv[1]); + break; + } + + } + else if (argc == 2) { + switch (argv[1][1]){ + case 'h': + show_usage(); + break; + default: + printf("Wrong option %s\n use: mksocmemio -h to show valid options and argunemts\n", argv[1]); + break; + } + } + close ( fd ); + return (0); +} From a82174f3a936615cd965fb6e69e0a15f12d78116 Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 6 Apr 2018 12:22:58 -0500 Subject: [PATCH 226/516] scripts/realtime: fix debug output and return status - Run `rtapi_app` when `$DEBUG` not set; fixup for 0e7b70fd - When `$DEBUG` set, print out command line for `rtapi_msgd` and `rtapi_app` - When `rtapi_msgd` or `rtapi_app` startup fails, exit with non-zero status - Print all script output to stderr --- scripts/realtime.in | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/scripts/realtime.in b/scripts/realtime.in index 3c7f714fde..44a92b3cbb 100644 --- a/scripts/realtime.in +++ b/scripts/realtime.in @@ -180,17 +180,24 @@ Load(){ # rtapi_msgd creates the global segment containing the error ring buffer # so start this first: - ${rtapi_msgd} --instance=$MK_INSTANCE $NAME_CMD \ - --rtmsglevel=$DEBUG \ - --usrmsglevel=$DEBUG \ - --halsize=$HAL_SIZE $MSGD_OPTS || \ - (echo "rtapi_msgd startup failed - aborting"; exit $?) + local cmd=(${rtapi_msgd} --instance=$MK_INSTANCE $NAME_CMD + --rtmsglevel=$DEBUG + --usrmsglevel=$DEBUG + --halsize=$HAL_SIZE $MSGD_OPTS) + [ $DEBUG -eq 0 ] || echo "rtapi_msgd command: ${cmd[@]}" >&2 + "${cmd[@]}" || ( + e=$?; echo "rtapi_msgd startup failed - aborting" >&2; exit $e) # rtapi_app_ now handles the kernel module loading # for kthreads as needed + local cmd=(${rtapi_app} --instance=$MK_INSTANCE $RTAPI_APP_OPTS) if [ $DEBUG -gt 0 ] ; then - ${rtapi_app} --instance=$MK_INSTANCE $RTAPI_APP_OPTS || \ - (echo "rtapi_app startup failed - aborting"; exit $?) + echo "rtapi_app command: ${cmd[@]}" >&2 + "${cmd[@]}" || ( + e=$?; echo "rtapi_app startup failed; aborting" >&2; exit $e) + else + "${cmd[@]}" 2>&1 || ( + e=$?; echo "rtapi_app startup failed; aborting" >&2; exit $e) fi # wait until rtapi_app responds, meaning setup is complete # this avoids startup races @@ -333,7 +340,8 @@ CheckUnloaded(){ MSGD_PID=`$PIDOF msgd:$MK_INSTANCE` if [ "$MSGD_PID" != "" ] ; then - echo "instance $MK_INSTANCE still running - process msgd:$MK_INSTANCE present (pid $MSGD_PID) !" + echo "instance $MK_INSTANCE still running;" \ + "process msgd:$MK_INSTANCE present (pid $MSGD_PID) !" >&2 exit 1 fi @@ -343,8 +351,9 @@ CheckUnloaded(){ RTAPI_PID=`$PIDOF rtapi:$MK_INSTANCE` if [ "$RTAPI_PID" != "" ] ; then - echo "instance $MK_INSTANCE inproperly shutdown!" - echo "msgd:$MK_INSTANCE gone, but rtapi:$MK_INSTANCE alive (pid $RTAPI_PID)" + echo "instance $MK_INSTANCE inproperly shutdown!" >&2 + echo "msgd:$MK_INSTANCE gone," \ + "but rtapi:$MK_INSTANCE alive (pid $RTAPI_PID)" >&2 exit 1 fi @@ -359,9 +368,11 @@ CheckUnloaded(){ for seg in `ls $POSIXSHM 2>/dev/null` ; do if pids=`fuser $seg 2>/dev/null` ; then - echo instance $MK_INSTANCE: shared memory $seg still in use by pid: $pids ! + echo "instance $MK_INSTANCE: " \ + "shared memory $seg still in use by pid: $pids !" >&2 else - echo instance $MK_INSTANCE: leftover shared memory $seg unused, removing + echo "instance $MK_INSTANCE: " \ + "leftover shared memory $seg unused, removing" >&2 rm -f $seg fi done @@ -376,7 +387,7 @@ CheckUnloaded(){ for module in $MODULES_UNLOAD ; do # check to see if the module is installed if $LSMOD | awk '{print $1}' | grep -x $module >/dev/null ; then - echo "ERROR: Could not unload '$module'" + echo "ERROR: Could not unload '$module'" >&2 STATUS=error fi done From 948a0a9d5396b50e1fb7e85829400a6cf02004ae Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 6 Apr 2018 17:29:22 -0500 Subject: [PATCH 227/516] Fix rtapi.0 test, broken on Ubuntu Linker errors: ../../lib/liblinuxcnculapi.so: undefined reference to `syslog_async' ../../lib/liblinuxcnculapi.so: undefined reference to `async_log_open' ../../lib/liblinuxcnculapi.so: undefined reference to `openlog_async' --- tests/rtapi.0/test.sh | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tests/rtapi.0/test.sh b/tests/rtapi.0/test.sh index 4e922b4584..37373feead 100755 --- a/tests/rtapi.0/test.sh +++ b/tests/rtapi.0/test.sh @@ -1,17 +1,22 @@ #!/bin/sh rm -f rtapi_test -#set -e +set -e gcc -g -DULAPI \ -I../../include \ rtapi_test.c \ - ../../lib/libmtalk.so ../../lib/liblinuxcnculapi.so -o rtapi_test + ../../lib/libmtalk.so \ + ../../lib/liblinuxcnculapi.so \ + ../../lib/liblinuxcnchal.so \ + -o rtapi_test realtime stop +set +e ./rtapi_test if [ $? -ne 1 ]; then echo "rtapi_test: expected 1, got " $? exit 1; fi +set -e realtime start ./rtapi_test if [ $? -ne 0 ]; then From 1d63f5feb1ceb5ada885f87eac1977f791dd4c1d Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 5 Apr 2018 16:02:53 -0500 Subject: [PATCH 228/516] hal_object_selectors.h: remove dupicate `yield_match()` decl --- src/hal/lib/hal_object_selectors.h | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/hal/lib/hal_object_selectors.h b/src/hal/lib/hal_object_selectors.h index 80d8499a22..aeec2ea26f 100644 --- a/src/hal/lib/hal_object_selectors.h +++ b/src/hal/lib/hal_object_selectors.h @@ -23,18 +23,6 @@ // plus two user-definable void pointers (user_ptr1 and user_ptr2). // these can be extended as needed. -//-------------------------------------------------------------------- -// use this selector to retrieve a pointer to a HAL object descriptor -// selected by the standard selection (type, object ID/object name): -// -// selector-specific arguments: -// -// returned HAL object descriptor or NULL if not found -// .user_ptr1 = NULL, // holy water - init to zero -// }; -int yield_match(hal_object_ptr o, foreach_args_t *args); - - //-------------------------------------------------------------------- // use this selector to retrieve the name of a HAL object // selected by the standard selection (type, object ID/object name prefix): From c95d1d92d4f12cd1ac1c2a0f9169899bf77cf1f7 Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 6 Apr 2018 19:53:15 +0000 Subject: [PATCH 229/516] halcmd_commands.c: fix module unloading return status Unload failures for v2 comps not reported --- src/hal/utils/halcmd_commands.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hal/utils/halcmd_commands.c b/src/hal/utils/halcmd_commands.c index c329e1c09e..3e3ecc5e3b 100644 --- a/src/hal/utils/halcmd_commands.c +++ b/src/hal/utils/halcmd_commands.c @@ -1518,7 +1518,7 @@ int do_unloadrt_cmd(char *name) goto FATAL; args.user_arg1 = 0; // now unload those which exported vtables - halg_foreach(1, &args, unload_rt_cb); + ret = halg_foreach(1, &args, unload_rt_cb); if (ret < 0) goto FATAL; return 0; From 080f48d753766246ed8763e7b6236efc91a30580 Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 6 Apr 2018 00:19:01 +0000 Subject: [PATCH 230/516] Fix out-of-tree module loading An out-of-tree RT module is loaded with `halcmd loadrt out/of/tree/module-path`. However, the module loading code confuses the module's path and name on both ULAPI (`halcmd`) and RTAPI (`rtapi_app`) sides. This patch separates them out again, using the path's basename for the module name. --- src/hal/utils/halcmd_commands.c | 10 ++++++++-- src/rtapi/rtapi_app.cc | 24 ++++++++++++++++-------- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/src/hal/utils/halcmd_commands.c b/src/hal/utils/halcmd_commands.c index 3e3ecc5e3b..eee6a4ede5 100644 --- a/src/hal/utils/halcmd_commands.c +++ b/src/hal/utils/halcmd_commands.c @@ -1215,13 +1215,19 @@ bool inst_name_exists(const int use_halmutex, char *name) } } -int loadrt(const int use_halmutex, char *mod_name, char *args[]) +int loadrt(const int use_halmutex, char *mod_path, char *args[]) { char *cp1; int n, retval; char arg_string[MAX_CMD_LEN+1]; - retval = rtapi_loadrt(rtapi_instance, mod_name, (const char **)args); + // Get the basename of args->name + char *mod_name = mod_path; // default case: module loaded by rpath + for (int i=0; mod_path[i] != 0; i++) + if (mod_path[i] == '/') + mod_name = mod_path + i + 1; + + retval = rtapi_loadrt(rtapi_instance, mod_path, (const char **)args); if ( retval != 0 ) { halcmd_error("insmod failed, returned %d:\n%s\n" "See %s for more information.\n", diff --git a/src/rtapi/rtapi_app.cc b/src/rtapi/rtapi_app.cc index 161d77b056..b6be19afc2 100644 --- a/src/rtapi/rtapi_app.cc +++ b/src/rtapi/rtapi_app.cc @@ -577,30 +577,37 @@ static int do_callfunc_cmd(int instance, static int do_load_cmd(int instance, - string name, + string path, pbstringarray_t args, machinetalk::Container &pbreply) { - char module_name[PATH_MAX]; + char module_path[PATH_MAX]; int retval; + // For modules given as paths, use the path basename as the module name + string name = path; + if (name.find_last_of("/") != string::npos) + name = name.substr(name.find_last_of("/") + 1); + if (modules.count(name) == 0) { if (kernel_threads(flavor)) { string cmdargs = pbconcat(args, " ", "'"); - retval = run_module_helper("insert %s %s", name.c_str(), cmdargs.c_str()); + retval = run_module_helper( + "insert %s %s", path.c_str(), cmdargs.c_str()); if (retval) { - note_printf(pbreply, "couldnt insmod %s - see dmesg\n", name.c_str()); + note_printf( + pbreply, "couldnt insmod %s - see dmesg\n", path.c_str()); } else { modules[name] = modinfo(); loading_order.push_back(name); } return retval; } else { - strncpy(module_name, (name + flavor->mod_ext).c_str(), + strncpy(module_path, (path + flavor->mod_ext).c_str(), PATH_MAX); modinfo_t mi = modinfo_t(); - mi.handle = dlopen(module_name, RTLD_GLOBAL |RTLD_NOW); + mi.handle = dlopen(module_path, RTLD_GLOBAL |RTLD_NOW); if (!mi.handle) { string errmsg(dlerror()); note_printf(pbreply, "%s: dlopen: %s", @@ -610,7 +617,7 @@ static int do_load_cmd(int instance, } // first load of a module. Record default instanceparams // so they can be replayed before newinst - record_instparms(module_name, mi); + record_instparms(module_path, mi); // retrieve the address of rtapi_switch_struct // so rtapi functions can be called and members @@ -653,7 +660,7 @@ static int do_load_cmd(int instance, loading_order.push_back(name); rtapi_print_msg(RTAPI_MSG_DBG, "%s: loaded from %s\n", - name.c_str(), module_name); + name.c_str(), module_path); return 0; } } else { @@ -1805,6 +1812,7 @@ static int record_instparms(char *fname, modinfo_t &mi) // so walk the rpath and stat boost::split(tokens, rp, boost::is_any_of(":"), boost::algorithm::token_compress_on); + tokens.push_back(string(fname)); for(i = 0; i < tokens.size() && csize < 0; i++) { pn = tokens[i]+ "/" + fname; From 27e256dba71aec7395941bc3fd98d09ec42d9bcf Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Sat, 7 Apr 2018 01:24:49 +0200 Subject: [PATCH 231/516] Fix for joint.x following error and added missing () in hal file Signed-off-by: Michael Brown --- configs/hm2-soc-stepper/5i25-soc-cramps.ini | 39 +++++-------------- .../hm2-soc-stepper-5i25-cramps.hal | 2 +- 2 files changed, 11 insertions(+), 30 deletions(-) diff --git a/configs/hm2-soc-stepper/5i25-soc-cramps.ini b/configs/hm2-soc-stepper/5i25-soc-cramps.ini index 85fb1b7985..038807894e 100644 --- a/configs/hm2-soc-stepper/5i25-soc-cramps.ini +++ b/configs/hm2-soc-stepper/5i25-soc-cramps.ini @@ -9,7 +9,6 @@ DRIVER=hm2_soc_ol BOARD=5i25 CONFIG="firmware=socfpga/dtbo/DE0_Nano_SoC_Cramps.3x24.dtbo num_pwmgens=6 num_stepgens=8" -#CONFIG="firmware=socfpga/dtbo/DE0_Nano_SoC_Cramps.Cramps_3x24_dpll_irq_adc_cap_spi.dtbo num_pwmgens=2 num_stepgens=8" DEVNAME=hm2-socfpga0 @@ -175,10 +174,8 @@ SCALE = 320 MIN_LIMIT = -100.0 MAX_LIMIT = 100.0 -#FERROR = 0.050 -#MIN_FERROR = 0.005 -FERROR = 2.0 -MIN_FERROR = 0.20 +FERROR = 800 +MIN_FERROR = 200 HOME = 0.000 HOME_OFFSET = 0.10 @@ -194,8 +191,6 @@ STEPLEN = 1900 STEPSPACE = 1900 - - [AXIS_1] TYPE = LINEAR @@ -216,11 +211,8 @@ SCALE = 640 MIN_LIMIT = -1000.0 MAX_LIMIT = 1000.0 -#FERROR = 0.050 -#MIN_FERROR = 0.005 - -FERROR = 2.0 -MIN_FERROR = 0.20 +FERROR = 800 +MIN_FERROR = 200 HOME = 0.000 @@ -231,15 +223,10 @@ HOME_USE_INDEX = NO HOME_IGNORE_LIMITS = NO # these are in nanoseconds -#DIRSETUP = 200 -#DIRHOLD = 200 -#STEPLEN = 40000 -#STEPSPACE = 40000 - -DIRSETUP = 30 -DIRHOLD = 30 -STEPLEN = 30 -STEPSPACE = 30 +DIRSETUP = 650 +DIRHOLD = 650 +STEPLEN = 1900 +STEPSPACE = 1900 @@ -259,8 +246,8 @@ SCALE = -1000 MIN_LIMIT = -100.0 MAX_LIMIT = 100.0 -FERROR = 12.6 -MIN_FERROR = 1.26 +FERROR = 800 +MIN_FERROR = 200 HOME = 0.0 HOME_OFFSET = 0.0 @@ -270,18 +257,12 @@ HOME_USE_INDEX = NO HOME_IGNORE_LIMITS = NO # these are in nanoseconds -#DIRSETUP = 200 -#DIRHOLD = 200 -#STEPLEN = 40000 -#STEPSPACE = 40000 - DIRSETUP = 650 DIRHOLD = 650 STEPLEN = 1900 STEPSPACE = 1900 - [EMCIO] # Name of IO controller program, e.g., io diff --git a/configs/hm2-soc-stepper/hm2-soc-stepper-5i25-cramps.hal b/configs/hm2-soc-stepper/hm2-soc-stepper-5i25-cramps.hal index b024bd6b17..93ee6a6d71 100644 --- a/configs/hm2-soc-stepper/hm2-soc-stepper-5i25-cramps.hal +++ b/configs/hm2-soc-stepper/hm2-soc-stepper-5i25-cramps.hal @@ -38,7 +38,7 @@ loadrt tp loadrt hostmot2 # load low-level driver -newinst [HOSTMOT2](DRIVER) [HOSTMOT2]DEVNAME -- config=[HOSTMOT2](CONFIG) debug=1 +newinst [HOSTMOT2](DRIVER) [HOSTMOT2](DEVNAME) -- config=[HOSTMOT2](CONFIG) debug=1 loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES #tp=tp kins=trivkins From 2c7c73708bb10a9fcc415e00e3caef979049fc35 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Sat, 7 Apr 2018 01:26:40 +0200 Subject: [PATCH 232/516] Added new hm2 soc demo config without bitfile load for desktop use (bitfile loaded via u boot) Signed-off-by: Michael Brown --- .../5i25-soc-cramps_no-fw-load.ini | 277 ++++++++++++++++++ 1 file changed, 277 insertions(+) create mode 100644 configs/hm2-soc-stepper/5i25-soc-cramps_no-fw-load.ini diff --git a/configs/hm2-soc-stepper/5i25-soc-cramps_no-fw-load.ini b/configs/hm2-soc-stepper/5i25-soc-cramps_no-fw-load.ini new file mode 100644 index 0000000000..d425abde15 --- /dev/null +++ b/configs/hm2-soc-stepper/5i25-soc-cramps_no-fw-load.ini @@ -0,0 +1,277 @@ + +#The hm2 sample stepper config should be pretty close. Copy an existing say +#5I20.ini file to 5i25-probx.ini or some such, replace the BOARD with 5i25, +#delete the firmware string on the loadrt hm2 line and you should be pretty +#close. The hm2-soc-stepper file may need some changes as well for any GPIO may not +#make sense with the 5i25 config + +[HOSTMOT2] +DRIVER=hm2_soc_ol +BOARD=5i25 +CONFIG="num_pwmgens=6 num_stepgens=8" +#CONFIG="firmware=socfpga/dtbo/DE0_Nano_SoC_Cramps.3x24.dtbo num_pwmgens=6 num_stepgens=8" +DEVNAME=hm2-socfpga0 already_programmed=1 + + + + +[EMC] + +#- Version of this INI file +VERSION = $Revision$ + +# Name of machine, for use with display, etc. +MACHINE = HM2-Soc-OL-Stepper + +# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others +#DEBUG = 0x00000003 +DEBUG = 0x00000007 +#DEBUG = 0 + + + + +[DISPLAY] + +# Name of display program, e.g., tkemc +#DISPLAY = tkemc +DISPLAY = axis + +# Cycle time, in seconds, that display will sleep between polls +CYCLE_TIME = 0.200 + +# Path to help file +#HELP_FILE = tklinucnc.txt + +# Initial display setting for position, RELATIVE or MACHINE +POSITION_OFFSET = RELATIVE + +# Initial display setting for position, COMMANDED or ACTUAL +POSITION_FEEDBACK = ACTUAL + +# Highest value that will be allowed for feed override, 1.0 = 100% +MAX_FEED_OVERRIDE = 1.5 + +# Prefix to be used +PROGRAM_PREFIX = ../../nc_files/ + +# Introductory graphic +INTRO_GRAPHIC = machinekit.gif +INTRO_TIME = 2 + +# Increments for the JOG section +INCREMENTS = 10 1 0.1 0.01 + + +#PYVCP = 3D.Temps.panel.xml + +[FILTER] +PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image +PROGRAM_EXTENSION = .py Python Script +png = image-to-gcode +gif = image-to-gcode +jpg = image-to-gcode +py = python + + +[TASK] + +# Name of task controller program, e.g., milltask +TASK = milltask + +# Cycle time, in seconds, that task controller will sleep between polls +CYCLE_TIME = 0.010 + + + + +[RS274NGC] + +# File containing interpreter variables +PARAMETER_FILE = hm2-soc-stepper.var + + + + +[EMCMOT] + +EMCMOT = motmod + +# Timeout for comm to emcmot, in seconds +COMM_TIMEOUT = 1.0 + +# Interval between tries to emcmot, in seconds +COMM_WAIT = 0.010 + +#+ Base task period, in nanosecs - this is the fastest thread in the machine +BASE_PERIOD = 200000 + +#- Servo task period, in nanosecs - will be rounded to an int multiple of BASE_PERIOD +SERVO_PERIOD = 2100000 + + +[HAL] + +# The run script first uses halcmd to execute any HALFILE +# files, and then to execute any individual HALCMD commands. + +# list of hal config files to run through halcmd +# files are executed in the order in which they appear + +HALFILE = hm2-soc-stepper-5i25-cramps.hal + +# list of halcmd commands to execute +# commands are executed in the order in which they appear +#HALCMD = save neta + + +[TRAJ] + +AXES = 3 +COORDINATES = X Y Z +#HOME = 0 0 0 +LINEAR_UNITS = mm +ANGULAR_UNITS = degree +CYCLE_TIME = 0.010 + +DEFAULT_VELOCITY = 15 +MAX_VELOCITY = 3000 +DEFAULT_ACCELERATION = 6000 +MAX_ACCELERATION = 8000 +MAX_LINEAR_VELOCITY = 2000.00 + + +[AXIS_0] + +# +# Step timing is 40 us steplen + 40 us stepspace +# That gives 80 us step period = 12.5 KHz step freq +# +# Bah, even software stepping can handle that, hm2 doesnt buy you much with +# such slow steppers. +# +# Scale is 200 steps/rev * 5 revs/inch = 1000 steps/inch +# +# This gives a maxvel of 12.5/1 = 12.5 ips +# + + +TYPE = LINEAR +MAX_VELOCITY = 200 +MAX_ACCELERATION = 1000 +STEPGEN_MAX_VEL = 250 +STEPGEN_MAX_ACC = 1250 +# Set Stepgen max 20% higher than the axis + +#STEPGEN_MAX_VEL = 12 +#STEPGEN_MAX_ACC = 24 + +#BACKLASH = 0.000 + +# scale is 200 steps/rev * 5 revs/inch +#SCALE = 1000 +SCALE = 320 + +MIN_LIMIT = -100.0 +MAX_LIMIT = 100.0 + +FERROR = 800 +MIN_FERROR = 200 + +HOME = 0.000 +HOME_OFFSET = 0.10 +#HOME_SEARCH_VEL = 0.10 +#HOME_LATCH_VEL = -0.01 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = NO + +# these are in nanoseconds +DIRSETUP = 650 +DIRHOLD = 650 +STEPLEN = 1900 +STEPSPACE = 1900 + + +[AXIS_1] + +TYPE = LINEAR +MAX_VELOCITY = 20000 +MAX_ACCELERATION = 100000 +STEPGEN_MAX_VEL = 25000 +STEPGEN_MAX_ACC = 125000 +# Set Stepgen max 20% higher than the axis +#STEPGEN_MAX_VEL = 12 +#STEPGEN_MAX_ACC = 24 + +#BACKLASH = 0.000 + +#SCALE = 1000 +#SCALE = 1250 +SCALE = 640 + +MIN_LIMIT = -1000.0 +MAX_LIMIT = 1000.0 + +FERROR = 800 +MIN_FERROR = 200 + + +HOME = 0.000 +HOME_OFFSET = -0.10 +#HOME_SEARCH_VEL = 0.10 +#HOME_LATCH_VEL = -0.01 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = NO + +# these are in nanoseconds +DIRSETUP = 650 +DIRHOLD = 650 +STEPLEN = 1900 +STEPSPACE = 1900 + + + +[AXIS_2] + +TYPE = LINEAR +MAX_VELOCITY = 10 +#MAX_ACCELERATION = 20 +# Set Stepgen max 20% higher than the axis +STEPGEN_MAX_VEL = 12 +STEPGEN_MAX_ACC = 24 + +BACKLASH = 0.000 + +SCALE = -1000 + +MIN_LIMIT = -100.0 +MAX_LIMIT = 100.0 + +FERROR = 800 +MIN_FERROR = 200 + +HOME = 0.0 +HOME_OFFSET = 0.0 +#HOME_SEARCH_VEL = 0.10 +#HOME_LATCH_VEL = -0.01 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = NO + +# these are in nanoseconds +DIRSETUP = 650 +DIRHOLD = 650 +STEPLEN = 1900 +STEPSPACE = 1900 + + +[EMCIO] + +# Name of IO controller program, e.g., io +EMCIO = io + +# cycle time, in seconds +CYCLE_TIME = 0.100 + +# tool table file +TOOL_TABLE = tool.tbl + From aa6901dcd948bf734420c4d97dba48672cc4f452 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Thu, 12 Apr 2018 16:36:06 +0200 Subject: [PATCH 233/516] mkwrapper: fix problem when tool table has no comment --- src/machinetalk/mkwrapper/mkwrapper.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/machinetalk/mkwrapper/mkwrapper.py b/src/machinetalk/mkwrapper/mkwrapper.py index 632cd3a772..1aafd74023 100644 --- a/src/machinetalk/mkwrapper/mkwrapper.py +++ b/src/machinetalk/mkwrapper/mkwrapper.py @@ -705,10 +705,10 @@ def load_tool_table(self, io, txIo): txToolResult.CopyFrom(toolResult) id = toolResult.id if id in toolMap: - toolResult.pocket = toolMap[id]['pocket'] - toolResult.comment = toolMap[id]['comment'] - txToolResult.pocket = toolMap[id]['pocket'] - txToolResult.comment = toolMap[id]['comment'] + toolResult.pocket = toolMap[id]['pocket'] or 0 + toolResult.comment = toolMap[id]['comment'] or '' + txToolResult.pocket = toolMap[id]['pocket'] or 0 + txToolResult.comment = toolMap[id]['comment'] or '' def update_tool_table(self, toolTable): if self.toolTablePath is '': From 4fb8f51097314dd51a1ef7d0a99029a78bbd5e86 Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 16 Apr 2018 17:03:07 -0500 Subject: [PATCH 234/516] Makefile.modinc: add EXTRA_RTFLAGS to EXTRA_CFLAGS Out-of-tree build system needs a way of adding CFLAGS to RT compile commands, such as Sascha Ittner's EtherCAT RT comp, which must include the EtherLab header files. --- src/Makefile.modinc.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Makefile.modinc.in b/src/Makefile.modinc.in index cc5dd37528..b14718c73e 100644 --- a/src/Makefile.modinc.in +++ b/src/Makefile.modinc.in @@ -73,7 +73,7 @@ else include @EMC2_HOME@/share/linuxcnc/Makefile.inc endif -EXTRA_CFLAGS := $(RTFLAGS) \ +EXTRA_CFLAGS := $(RTFLAGS) $(EXTRA_RTFLAGS) \ -D__MODULE__ \ $(call cc-option,-mieee-fp) \ $(KERNEL_MATH_CFLAGS) From f24392aa51f433d39d4337a6b9e8270ad8236668 Mon Sep 17 00:00:00 2001 From: Mick Date: Wed, 9 May 2018 15:53:05 +0100 Subject: [PATCH 235/516] Add new Rpi3B revision numbers to have them recognised. Signed-off-by: Mick --- src/hal/drivers/cpuinfo.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/hal/drivers/cpuinfo.c b/src/hal/drivers/cpuinfo.c index 3b1abdf554..b81e566413 100644 --- a/src/hal/drivers/cpuinfo.c +++ b/src/hal/drivers/cpuinfo.c @@ -76,7 +76,9 @@ int get_rpi_revision(void) (strcmp(revision, "a22042") == 0)) return 3; else if ((strcmp(revision, "a22082") == 0) || - (strcmp(revision, "a02082") == 0)) + (strcmp(revision, "a02082") == 0) || + (strcmp(revision, "a32082") == 0) || + (strcmp(revision, "a020d3") == 0)) return 4; else // assume rev 5 return 5; From 92a1346486f5e87d50415b74e578f60868aa026f Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 3 May 2018 20:59:16 +0000 Subject: [PATCH 236/516] Port sittner's add-task-pll-functions.patch to Machinekit See https://github.com/sittner/linuxcnc-ethercat/pull/51; this commit based on patch from linuxcnc-ethercat commit c84a868b --- src/rtapi/rt-preempt.c | 26 ++++++++++++++++++++++++-- src/rtapi/rt-preempt.h | 2 ++ src/rtapi/rtapi.h | 29 ++++++++++++++++++++++++++++- src/rtapi/rtapi_common.c | 4 ++++ src/rtapi/rtapi_common.h | 2 ++ src/rtapi/rtapi_task.c | 30 ++++++++++++++++++++++++++++++ src/rtapi/ulapi_autoload.c | 2 ++ 7 files changed, 92 insertions(+), 3 deletions(-) diff --git a/src/rtapi/rt-preempt.c b/src/rtapi/rt-preempt.c index 22e9a5c84d..3230a1f114 100644 --- a/src/rtapi/rt-preempt.c +++ b/src/rtapi/rt-preempt.c @@ -328,7 +328,7 @@ static void *realtime_thread(void *arg) { clock_gettime(CLOCK_MONOTONIC, &extra_task_data[task_id(task)].next_time); _rtapi_advance_time(&extra_task_data[task_id(task)].next_time, - task->period, 0); + task->period + task->pll_correction, 0); _rtapi_task_update_stats_hook(); // inital stats update @@ -423,7 +423,7 @@ int _rtapi_wait_hook(const int flags) { clock_nanosleep(CLOCK_MONOTONIC, TIMER_ABSTIME, &extra_task_data[task_id(task)].next_time, NULL); _rtapi_advance_time(&extra_task_data[task_id(task)].next_time, - task->period, 0); + task->period + task->pll_correction, 0); clock_gettime(CLOCK_MONOTONIC, &ts); if (ts.tv_sec > extra_task_data[task_id(task)].next_time.tv_sec || (ts.tv_sec == extra_task_data[task_id(task)].next_time.tv_sec @@ -478,4 +478,26 @@ int _rtapi_task_self_hook(void) { return -EINVAL; } +long long _rtapi_task_pll_get_reference_hook(void) { + int task_id = _rtapi_task_self_hook(); + if (task_id < 0) return 0; + return extra_task_data[task_id].next_time.tv_sec * 1000000000LL + + extra_task_data[task_id].next_time.tv_nsec; +} + +int _rtapi_task_pll_set_correction_hook(long value) { + int task_id = _rtapi_task_self_hook(); + task_data *task = &task_array[task_id]; + if (task <= 0) return -EINVAL; + if (value > task->pll_correction_limit) + value = task->pll_correction_limit; + if (value < -(task->pll_correction_limit)) + value = -(task->pll_correction_limit); + task->pll_correction = value; + rtapi_print_msg(RTAPI_MSG_DBG, + "Task %d pll correction set to %ld\n", + task_id, value); + return 0; +} + #endif /* RTAPI */ diff --git a/src/rtapi/rt-preempt.h b/src/rtapi/rt-preempt.h index 7d9ef6cb3e..7bb7e1600c 100644 --- a/src/rtapi/rt-preempt.h +++ b/src/rtapi/rt-preempt.h @@ -50,6 +50,8 @@ #define HAVE_RTAPI_WAIT_HOOK #define HAVE_RTAPI_TASK_SELF_HOOK #define HAVE_RTAPI_TASK_UPDATE_STATS_HOOK +#define HAVE_RTAPI_TASK_PLL_GET_REFERENCE_HOOK +#define HAVE_RTAPI_TASK_PLL_SET_CORRECTION_HOOK #if !defined(__i386__) && !defined(__x86_64__) #define HAVE_RTAPI_GET_CLOCKS_HOOK // needed for e.g. ARM, see rtapi_time.c diff --git a/src/rtapi/rtapi.h b/src/rtapi/rtapi.h index 72f0f1286e..7d4efab6e8 100644 --- a/src/rtapi/rtapi.h +++ b/src/rtapi/rtapi.h @@ -655,6 +655,30 @@ typedef long int (*rtapi_delay_max_t)(void); rtapi_switch->rtapi_delay_max() extern long int _rtapi_delay_max(void); +/** Support external clock tracking for linuxcnc-ethercat */ +#define RTAPI_TASK_PLL_SUPPORT + +/** 'rtapi_task_pll_get_reference()' gets the reference timestamp + for the start of the current cycle. + Returns 0 if not called from within task context or on + platforms that do not support this. +*/ +typedef long long (*rtapi_task_pll_get_reference_t)(void); +#define rtapi_task_pll_get_reference() \ + rtapi_switch->rtapi_task_pll_get_reference() +extern long long _rtapi_task_pll_get_reference(void); + +/** 'rtapi_task_pll_set_correction()' sets the correction value for + the next scheduling cycle of the current task. This could be + used to synchronize the task cycle to external sources. + Returns -EINVAL if not called from within task context or on + platforms that do not support this. +*/ +typedef int (*rtapi_task_pll_set_correction_t)(long); +#define rtapi_task_pll_set_correction(value) \ + rtapi_switch->rtapi_task_pll_set_correction(value) +extern int _rtapi_task_pll_set_correction(long value); + #endif /* RTAPI */ /** rtapi_get_time returns the current time in nanoseconds. Depending @@ -1080,10 +1104,14 @@ typedef struct { rtapi_clock_set_period_t rtapi_clock_set_period; rtapi_delay_t rtapi_delay; rtapi_delay_max_t rtapi_delay_max; + rtapi_task_pll_get_reference_t rtapi_task_pll_get_reference; + rtapi_task_pll_set_correction_t rtapi_task_pll_set_correction; #else rtapi_dummy_t rtapi_clock_set_period; rtapi_dummy_t rtapi_delay; rtapi_dummy_t rtapi_delay_max; + rtapi_dummy_t rtapi_task_pll_get_reference; + rtapi_dummy_t rtapi_task_pll_set_correction; #endif rtapi_get_time_t rtapi_get_time; rtapi_get_clocks_t rtapi_get_clocks; @@ -1140,7 +1168,6 @@ typedef struct { rtapi_heap_status_t rtapi_heap_status; rtapi_heap_setflags_t rtapi_heap_setflags; rtapi_heap_walk_freelist_t rtapi_heap_walk_freelist; - } rtapi_switch_t; // using code is responsible to define this: diff --git a/src/rtapi/rtapi_common.c b/src/rtapi/rtapi_common.c index 9645214d49..bbd8c3be07 100644 --- a/src/rtapi/rtapi_common.c +++ b/src/rtapi/rtapi_common.c @@ -93,10 +93,14 @@ static rtapi_switch_t rtapi_switch_struct = { .rtapi_clock_set_period = &_rtapi_clock_set_period, .rtapi_delay = &_rtapi_delay, .rtapi_delay_max = &_rtapi_delay_max, + .rtapi_task_pll_get_reference = &_rtapi_task_pll_get_reference, + .rtapi_task_pll_set_correction = &_rtapi_task_pll_set_correction, #else .rtapi_clock_set_period = &_rtapi_dummy, .rtapi_delay = &_rtapi_dummy, .rtapi_delay_max = &_rtapi_dummy, + .rtapi_task_pll_get_reference = &_rtapi_dummy, + .rtapi_task_pll_set_correction = &_rtapi_dummy, #endif .rtapi_get_time = &_rtapi_get_time, .rtapi_get_clocks = &_rtapi_get_clocks, diff --git a/src/rtapi/rtapi_common.h b/src/rtapi/rtapi_common.h index ca69c59b94..8cbb336cc9 100644 --- a/src/rtapi/rtapi_common.h +++ b/src/rtapi/rtapi_common.h @@ -150,6 +150,8 @@ typedef struct { size_t stacksize; int period; int ratio; + long pll_correction; + long pll_correction_limit; task_state_t state; /* task state */ int prio; /* priority */ int owner; /* owning module */ diff --git a/src/rtapi/rtapi_task.c b/src/rtapi/rtapi_task.c index 96ef058ffe..38c76e351b 100644 --- a/src/rtapi/rtapi_task.c +++ b/src/rtapi/rtapi_task.c @@ -346,6 +346,10 @@ int _rtapi_task_start(int task_id, unsigned long int period_nsec) { task->period = period_nsec; task->ratio = period_nsec / period; + // limit PLL correction values to +/-1% of cycle time + task->pll_correction_limit = period_nsec / 100; + task->pll_correction = 0; + rtapi_print_msg(RTAPI_MSG_DBG, "rtapi_task_start: starting task %d '%s'\n", task_id, task->name); @@ -353,6 +357,7 @@ int _rtapi_task_start(int task_id, unsigned long int period_nsec) { return _rtapi_task_start_hook(task,task_id,0); } + #else /* kernel RTAPI */ int _rtapi_task_start(int task_id, unsigned long int period_nsec) { int retval; @@ -520,5 +525,30 @@ int _rtapi_task_self(void) { #endif } +#ifdef HAVE_RTAPI_TASK_PLL_GET_REFERENCE_HOOK +long long _rtapi_task_pll_get_reference_hook(void); +#endif + +long long _rtapi_task_pll_get_reference(void) { +#ifdef HAVE_RTAPI_TASK_PLL_GET_REFERENCE_HOOK + return _rtapi_task_pll_get_reference_hook(); +#else + return 0; +#endif +} + +#ifdef HAVE_RTAPI_TASK_PLL_SET_CORRECTION_HOOK +int _rtapi_task_pll_set_correction_hook(long); +#endif + +int _rtapi_task_pll_set_correction(long value) { +#ifdef HAVE_RTAPI_TASK_PLL_SET_CORRECTION_HOOK + return _rtapi_task_pll_set_correction_hook(value); +#else + return 0; +#endif +} + + #endif /* RTAPI */ diff --git a/src/rtapi/ulapi_autoload.c b/src/rtapi/ulapi_autoload.c index 05405d5170..7de2fee0af 100644 --- a/src/rtapi/ulapi_autoload.c +++ b/src/rtapi/ulapi_autoload.c @@ -116,6 +116,8 @@ static rtapi_switch_t dummy_ulapi_switch_struct = { .rtapi_clock_set_period = &_ulapi_dummy, .rtapi_delay = &_ulapi_dummy, .rtapi_delay_max = &_ulapi_dummy, + .rtapi_task_pll_get_reference = &_ulapi_dummy, + .rtapi_task_pll_set_correction = &_ulapi_dummy, .rtapi_get_time = (rtapi_get_time_t) &_ulapi_dummy, .rtapi_get_clocks = (rtapi_get_clocks_t) &_ulapi_dummy, From b172fedc032a28438b2afbab2ea44db091379a1d Mon Sep 17 00:00:00 2001 From: John Morris Date: Sat, 12 May 2018 03:00:27 +0000 Subject: [PATCH 237/516] Test rtapi_task_pll_set_correction() This tests rtapi_task_pll_set_correction() by setting a target, running 2000 cycles, averaging error from the last 1000 cycles, and testing that error is less than 1% of a period. This is intended to be liberal enough to pass even on posix threads. The first target is 0, the second target is 10 periods in the future. --- tests/pll_correction/checkresult | 37 ++++++++++ tests/pll_correction/pll_correction.comp | 88 ++++++++++++++++++++++++ tests/pll_correction/pll_correction.hal | 27 ++++++++ tests/pll_correction/pll_time.h | 1 + tests/pll_correction/test.sh | 5 ++ 5 files changed, 158 insertions(+) create mode 100755 tests/pll_correction/checkresult create mode 100644 tests/pll_correction/pll_correction.comp create mode 100644 tests/pll_correction/pll_correction.hal create mode 100644 tests/pll_correction/pll_time.h create mode 100755 tests/pll_correction/test.sh diff --git a/tests/pll_correction/checkresult b/tests/pll_correction/checkresult new file mode 100755 index 0000000000..f4ee70a17a --- /dev/null +++ b/tests/pll_correction/checkresult @@ -0,0 +1,37 @@ +#!/usr/bin/python + +import sys +import os + +# Params from test.hal +period = 1000000 +# Params from pll_correction.comp +numsamps = 1000 + +os.chdir(os.path.dirname(os.path.realpath(__file__))) + +with open("result", 'r') as f: + with open("stderr", 'a') as log: + for line in f: + line = line.rstrip('[ \n]') + (cycle_count, period_actual, pll_err, samp_avg, phase_diff) = ( + [int(s) for s in line.split(' ')]) + + if cycle_count == 2*numsamps: + log.write("%s\n" % line) + if abs(samp_avg) > period/100: + log.write("0 PLL didn't converge: abs(%d) > %d/100\n" % ( + samp_avg, period)) + sys.exit(-1) + else: + log.write("0 PLL converged: abs(%d) <= %d/100\n" % ( + samp_avg, period)) + if cycle_count == 4*numsamps: + log.write("%s\n" % line) + if abs(samp_avg) > period/100: + log.write("10 PLL didn't converge: abs(%d) > %d/100\n" % ( + samp_avg, period)) + sys.exit(-1) + else: + log.write("10 PLL converged: abs(%d) <= %d/100\n" % ( + samp_avg, period)) diff --git a/tests/pll_correction/pll_correction.comp b/tests/pll_correction/pll_correction.comp new file mode 100644 index 0000000000..c668ac19a7 --- /dev/null +++ b/tests/pll_correction/pll_correction.comp @@ -0,0 +1,88 @@ +component pll_correction; + +// Cumulative difference between expected and actual period +pin out s32 pll_err = 0; +// Actual period of this cycle +pin out s32 period_actual; +// expected cycle start time +pin out u32 time_base_hi = 0; +pin out u32 time_base_lo = 0; +// cycle start time +pin out u32 now_hi; +pin out u32 now_lo; +// previous cycle start time +pin out u32 prev_hi; +pin out u32 prev_lo; +// PLL reference +pin out u32 ref_hi; +pin out u32 ref_lo; +// Number of cycles +pin out u32 cycle_count = 0; + +// Buffer for average +variable int numsamps = 1000; +variable int samps[1000]; +variable int samp_last; +pin out s32 samp_avg; + +// PLL settings +pin out bit pll_on; +variable int pll_periods = 10; // Lock on to this many phases in the future +// Monitor phase difference +pin out s32 phase_diff; + +function _; +license "GPL"; +;; + +// time_set(foo, bar) splits ull bar into foo_hi and foo_lo +#define time_set(dst, src) do { \ + dst ## _hi = (uint32_t) (src>>32); \ + dst ## _lo = (uint32_t) src; \ + } while (0) + +// time(foo) returns ull of joined foo_hi and foo_lo +#define time(src) \ + ((unsigned long long) \ + ((((unsigned long long) src ## _hi) << 32) + src ## _lo)) \ + +#define min(x,y) (x numsamps*2)) ? 0 : period*pll_periods); + + // Adjust phase + rtapi_task_pll_set_correction(-pll_err); + + // Get reference (unused) + time_set(ref, rtapi_task_pll_get_reference()); + + // Averages + samps[(samp_last++)%numsamps] = pll_err; + samp_avg = 0; + for (int i=0; i sampler.0.pin.0 +net period-actual pc.period-actual => sampler.0.pin.1 +net pll-err pc.pll-err => sampler.0.pin.2 +net samp-avg pc.samp-avg => sampler.0.pin.3 +net phase-diff pc.phase-diff => sampler.0.pin.4 + +# Start threads and wait for userland sampler to exit +start + +# Load userland sampler comp +# - LinuxCNC +#loadusr -Wn halsampler halsampler -N halsampler -n 100 +# - Machinekit +loadusr -w halsampler -n 4000 + diff --git a/tests/pll_correction/pll_time.h b/tests/pll_correction/pll_time.h new file mode 100644 index 0000000000..854f35f928 --- /dev/null +++ b/tests/pll_correction/pll_time.h @@ -0,0 +1 @@ +typedef long long int TIME; diff --git a/tests/pll_correction/test.sh b/tests/pll_correction/test.sh new file mode 100755 index 0000000000..efbfbce002 --- /dev/null +++ b/tests/pll_correction/test.sh @@ -0,0 +1,5 @@ +#!/bin/bash -e + +COMP="$(which halcompile || which comp)" +$COMP --install pll_correction.comp 1>&2 +halrun -f pll_correction.hal From 0c71ecc640bb308c4968ebcf0949b2c03e797404 Mon Sep 17 00:00:00 2001 From: John Morris Date: Wed, 16 May 2018 17:17:36 -0500 Subject: [PATCH 238/516] Fixup 080f48d7, "Fix out-of-tree module loading" Commit 080f48d7 failed to address this case, calling `loadrt` from the python rtapi module. --- src/hal/cython/machinekit/rtapi.pyx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hal/cython/machinekit/rtapi.pyx b/src/hal/cython/machinekit/rtapi.pyx index bba8b2a48e..934d6c1f3e 100644 --- a/src/hal/cython/machinekit/rtapi.pyx +++ b/src/hal/cython/machinekit/rtapi.pyx @@ -218,7 +218,7 @@ class RTAPIcommand: if r: raise RuntimeError("rtapi_loadrt '%s' failed: %s" % (args,strerror(-r))) - return hal.components[name] + return hal.components[name.split('/')[-1]] def unloadrt(self,char *name, int instance=0): if name == NULL: From 3a4e3cbe9ab6c7e886fc3c0595df17e33bad0ac7 Mon Sep 17 00:00:00 2001 From: John Morris Date: Wed, 16 May 2018 18:00:00 -0500 Subject: [PATCH 239/516] tests/pll_correction: fix integer overflow error; desensitize A MK [Jenkins build for an unrelated PR][1] failed in this test, meaning that this test's parameters are too restrictive, even for non-RT POSIX threads. This commit: - Fixes an integer overflow that caused it to fail on systems with very high jitter - Desensitizes the test by only requiring most of the final samples to be within 1% of the total phase offset Other changes: - Add README.md - Parameterize PERIOD & NUMSAMPS [1]: https://jenkins.machinekit.io/job/machinekit-PR-builder/68/console --- tests/pll_correction/README.md | 20 ++++++++++ tests/pll_correction/checkresult | 51 +++++++++++------------- tests/pll_correction/params.py.sh | 10 +++++ tests/pll_correction/pll_correction.comp | 28 ++++++++----- tests/pll_correction/pll_correction.hal | 13 +++--- tests/pll_correction/test.sh | 4 ++ 6 files changed, 84 insertions(+), 42 deletions(-) create mode 100644 tests/pll_correction/README.md create mode 100644 tests/pll_correction/params.py.sh diff --git a/tests/pll_correction/README.md b/tests/pll_correction/README.md new file mode 100644 index 0000000000..9452b7753b --- /dev/null +++ b/tests/pll_correction/README.md @@ -0,0 +1,20 @@ +This tests @sittner's [add-task-pll-functions.patch][1] as ported to +Machinekit in [PR #1373][2]. + +The test .hal file starts the custom `pll_correction` component, and a +`halsampler` takes `numsamps*4` samples (`numsamps` configured in +`params.py.sh`). + +The `pll_correction.comp` HAL component sets the phase to ten times +the period. The first `numsamps*3` samples should be enough time to +lock the phase, and the final `numsamps` samples are counted to see +how many are within 1% of the expected phase difference. + +Finally, the python `checkresult` script parses the `halsampler` +output, checking the final sample. Most of the samples' PLL phase +error must be within 1% of the total phase shift, or the test is +deemed to have failed. (This is set very loosely in order to succeed +even on systems with pathological jitter.) + +[1]: https://github.com/sittner/linuxcnc-ethercat/blob/c84a868b/patches/add-task-pll-functions.patch +[2]: https://github.com/machinekit/machinekit/pull/1373 diff --git a/tests/pll_correction/checkresult b/tests/pll_correction/checkresult index f4ee70a17a..2b61dc3c17 100755 --- a/tests/pll_correction/checkresult +++ b/tests/pll_correction/checkresult @@ -1,37 +1,32 @@ #!/usr/bin/python -import sys -import os +import sys, os -# Params from test.hal -period = 1000000 +# Source params.py.sh +execfile(os.path.join(os.path.dirname(__file__), "params.py.sh")) +# Params from pll_correction.hal +period = int(PERIOD) # Params from pll_correction.comp -numsamps = 1000 +numsamps = int(NUMSAMPS) +# Number of periods in the future to lock onto +pll_periods = int(PLL_PERIODS) os.chdir(os.path.dirname(os.path.realpath(__file__))) +# Read last line of file with open("result", 'r') as f: - with open("stderr", 'a') as log: - for line in f: - line = line.rstrip('[ \n]') - (cycle_count, period_actual, pll_err, samp_avg, phase_diff) = ( - [int(s) for s in line.split(' ')]) + for line in f: + line = line.rstrip('[ \n]') + +(cycle_count, period_actual, pll_err, samp_avg, phase_diff, mode) = ( + [int(s) for s in line.split(' ')]) - if cycle_count == 2*numsamps: - log.write("%s\n" % line) - if abs(samp_avg) > period/100: - log.write("0 PLL didn't converge: abs(%d) > %d/100\n" % ( - samp_avg, period)) - sys.exit(-1) - else: - log.write("0 PLL converged: abs(%d) <= %d/100\n" % ( - samp_avg, period)) - if cycle_count == 4*numsamps: - log.write("%s\n" % line) - if abs(samp_avg) > period/100: - log.write("10 PLL didn't converge: abs(%d) > %d/100\n" % ( - samp_avg, period)) - sys.exit(-1) - else: - log.write("10 PLL converged: abs(%d) <= %d/100\n" % ( - samp_avg, period)) +target = period * pll_periods +if mode < 500: + sys.stderr.write( + "PLL didn't converge: samples w/ <1%% error = %d/%d\n" % + (mode,numsamps)) + with open("result", "r") as f: # Dump results to stderr + for line in f: + sys.stderr.write(line) + sys.exit(-1) diff --git a/tests/pll_correction/params.py.sh b/tests/pll_correction/params.py.sh new file mode 100644 index 0000000000..f700bb311b --- /dev/null +++ b/tests/pll_correction/params.py.sh @@ -0,0 +1,10 @@ +# This file is sourced both by test.sh and checkresult (python)!!! + +# Period +PERIOD=1000000 + +# Number of samples; max 1000 (or adjust `samps` in `pll_correction.comp`) +NUMSAMPS=1000 + +# Number of periods in the future to lock onto +PLL_PERIODS=10 diff --git a/tests/pll_correction/pll_correction.comp b/tests/pll_correction/pll_correction.comp index c668ac19a7..17d03ff098 100644 --- a/tests/pll_correction/pll_correction.comp +++ b/tests/pll_correction/pll_correction.comp @@ -20,14 +20,18 @@ pin out u32 ref_lo; pin out u32 cycle_count = 0; // Buffer for average -variable int numsamps = 1000; +// - Number of samples here must match numsamps in checkresult +// - Number of samples here must be 1/4 halsampler -n ### in pll_correction.hal +pin in u32 numsamps; variable int samps[1000]; variable int samp_last; pin out s32 samp_avg; +// Mode: number of samples where pll error under 1% of period +pin out u32 mode; + // PLL settings -pin out bit pll_on; -variable int pll_periods = 10; // Lock on to this many phases in the future +pin in u32 pll_periods; // Lock on to this many phases in the future // Monitor phase difference pin out s32 phase_diff; @@ -66,9 +70,7 @@ FUNCTION(_) { phase_diff = time(now) - time(time_base); // Incremental phase error - pll_err = phase_diff - ( - // Maintain 0 err in beginning, period*pll_periods later - !(pll_on = (cycle_count > numsamps*2)) ? 0 : period*pll_periods); + pll_err = phase_diff - period*pll_periods; // Adjust phase rtapi_task_pll_set_correction(-pll_err); @@ -76,11 +78,19 @@ FUNCTION(_) { // Get reference (unused) time_set(ref, rtapi_task_pll_get_reference()); - // Averages + // Average samps[(samp_last++)%numsamps] = pll_err; samp_avg = 0; - for (int i=0; i sampler.0.pin.1 net pll-err pc.pll-err => sampler.0.pin.2 net samp-avg pc.samp-avg => sampler.0.pin.3 net phase-diff pc.phase-diff => sampler.0.pin.4 +net mode pc.mode => sampler.0.pin.5 # Start threads and wait for userland sampler to exit start # Load userland sampler comp # - LinuxCNC -#loadusr -Wn halsampler halsampler -N halsampler -n 100 +#loadusr -Wn halsampler halsampler -N halsampler -n 2000 # - Machinekit -loadusr -w halsampler -n 4000 +loadusr -w halsampler -n $(NUMSAMPS_X4) diff --git a/tests/pll_correction/test.sh b/tests/pll_correction/test.sh index efbfbce002..5f1f7badcf 100755 --- a/tests/pll_correction/test.sh +++ b/tests/pll_correction/test.sh @@ -2,4 +2,8 @@ COMP="$(which halcompile || which comp)" $COMP --install pll_correction.comp 1>&2 +# Read parameters +. params.py.sh +export NUMSAMPS PERIOD PLL_PERIODS +export NUMSAMPS_X4=$(($NUMSAMPS * 4)) halrun -f pll_correction.hal From 9a29f1230978798ae51ea906bd2a00f369cb893b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Thu, 7 Jun 2018 09:53:01 +0200 Subject: [PATCH 240/516] cleanup parts of the Python code --- lib/python/machinekit/halfile.py | 1 + lib/python/machinekit/launcher.py | 15 ++++----- lib/python/machinekit/service.py | 31 +++++++++++-------- .../config-service/configserver.py | 1 + src/machinetalk/mklauncher/mklauncher.py | 3 +- src/machinetalk/mkwrapper/mkwrapper.py | 27 +++++++--------- 6 files changed, 42 insertions(+), 36 deletions(-) diff --git a/lib/python/machinekit/halfile.py b/lib/python/machinekit/halfile.py index 67e202de17..78379d7781 100644 --- a/lib/python/machinekit/halfile.py +++ b/lib/python/machinekit/halfile.py @@ -1,3 +1,4 @@ +# coding=utf-8 import os import ConfigParser from machinekit import rtapi,hal diff --git a/lib/python/machinekit/launcher.py b/lib/python/machinekit/launcher.py index 8e0de20443..831efd53c2 100644 --- a/lib/python/machinekit/launcher.py +++ b/lib/python/machinekit/launcher.py @@ -1,3 +1,4 @@ +# coding=utf-8 import os import sys from time import * @@ -23,7 +24,7 @@ def check_command(command): shell=True) process.wait() if process.returncode != 0: - print((command + ' not found, check Machinekit installation')) + print(command + ' not found, check Machinekit installation') sys.exit(1) @@ -46,7 +47,7 @@ def cleanup_session(): pid = int(line.split(None, 1)[0]) pids.append(pid) - if pids != []: + if any(pids): stop_realtime() sys.stdout.write("cleaning up leftover session... ") sys.stdout.flush() @@ -75,7 +76,7 @@ def start_process(command, check=True, wait=1.0): if check: sleep(wait) process.poll() - if (process.returncode is not None): + if process.returncode is not None: raise subprocess.CalledProcessError(process.returncode, command, None) _processes.append(process) sys.stdout.write('done\n') @@ -84,8 +85,8 @@ def start_process(command, check=True, wait=1.0): # stops a registered process by its name def stop_process(command): for process in _processes: - processCommand = process.command.split(None, 1)[0] - if command == processCommand: + process_command = process.command.split(None, 1)[0] + if command == process_command: sys.stdout.write('stopping ' + command + '... ') sys.stdout.flush() os.killpg(process.pid, signal.SIGTERM) @@ -117,8 +118,8 @@ def load_hal_file(filename, ini=None): if ini is not None: from machinekit import config config.load_ini(ini) - globals = {} - execfile(filename, globals) + globals_ = {} + execfile(filename, globals_) else: command = 'halcmd' if ini is not None: diff --git a/lib/python/machinekit/service.py b/lib/python/machinekit/service.py index 04042bd828..d3b4e60175 100644 --- a/lib/python/machinekit/service.py +++ b/lib/python/machinekit/service.py @@ -1,16 +1,19 @@ +# coding=utf-8 import avahi import dbus import os import uuid -class ZeroconfService: +class ZeroconfService(object): """A simple class to publish a network service with zeroconf using avahi. """ def __init__(self, name, port, stype="_http._tcp", subtype=None, - domain="", host="", text="", loopback=False): + domain="", host="", text=None, loopback=False): + if text is None: + text = [] self.name = name self.stype = stype self.domain = domain @@ -61,12 +64,12 @@ def unpublish(self): self.group.Reset() -class Service: +class Service(object): """A simple class to publish a Machinekit network service using zeroconf. """ def __init__(self, type, svcUuid, dsn, port, name=None, host=None, - loopback=False, debug=False): + loopback=False, debug=False): self.dsn = dsn self.svcUuid = svcUuid self.type = type @@ -92,15 +95,17 @@ def __init__(self, type, svcUuid, dsn, port, name=None, host=None, if self.debug: print(('service: ' + 'dsname = ' + self.dsn + - ' port = ' + str(self.port) + - ' txtrec = ' + str(self.statusTxtrec) + - ' name = ' + self.name)) - - self.statusService = ZeroconfService(self.name, self.port, - stype=self.stype, - subtype=self.subtype, - text=self.statusTxtrec, - loopback=self.loopback) + ' port = ' + str(self.port) + + ' txtrec = ' + str(self.statusTxtrec) + + ' name = ' + self.name)) + + self.statusService = ZeroconfService( + self.name, self.port, + stype=self.stype, + subtype=self.subtype, + text=self.statusTxtrec, + loopback=self.loopback, + ) def publish(self): self.statusService.publish() diff --git a/src/machinetalk/config-service/configserver.py b/src/machinetalk/config-service/configserver.py index d9a85d9f0a..cb08462d69 100755 --- a/src/machinetalk/config-service/configserver.py +++ b/src/machinetalk/config-service/configserver.py @@ -1,4 +1,5 @@ #!/usr/bin/python2 +# coding=utf-8 import os import sys from stat import S_ISREG, S_ISDIR diff --git a/src/machinetalk/mklauncher/mklauncher.py b/src/machinetalk/mklauncher/mklauncher.py index 9c04d72519..a6daba2331 100644 --- a/src/machinetalk/mklauncher/mklauncher.py +++ b/src/machinetalk/mklauncher/mklauncher.py @@ -1,4 +1,5 @@ #!/usr/bin/python2 +# coding=utf-8 import os import sys @@ -539,7 +540,7 @@ def _process_command_socket(self, s): for launcher in self.rx.launcher: if not launcher.HasField('index') \ or not launcher.HasField('importance'): - self._send_command_wrong_params() + self._send_command_wrong_params(identity) continue index = launcher.index diff --git a/src/machinetalk/mkwrapper/mkwrapper.py b/src/machinetalk/mkwrapper/mkwrapper.py index 1aafd74023..e1dc614ad4 100644 --- a/src/machinetalk/mkwrapper/mkwrapper.py +++ b/src/machinetalk/mkwrapper/mkwrapper.py @@ -1,8 +1,6 @@ #!/usr/bin/python2 # -*- coding: UTF-8 -* import os -import sys -from stat import * import zmq import threading import multiprocessing @@ -28,7 +26,6 @@ from google.protobuf.message import DecodeError from machinetalk.protobuf.message_pb2 import Container -from machinetalk.protobuf.config_pb2 import * from machinetalk.protobuf.types_pb2 import * from machinetalk.protobuf.status_pb2 import * from machinetalk.protobuf.preview_pb2 import * @@ -48,7 +45,7 @@ def getFreePort(): return port -class CustomFTPHandler(FTPHandler): +class CustomFTPHandler(object, FTPHandler): def on_file_received(self, file): # do something when a file has been received @@ -138,7 +135,7 @@ def stop(self): self.shutdown.set() -class PreviewCanonData(): +class PreviewCanonData(object): def __init__(self): self.tools = [] self.randomToolchanger = False @@ -149,7 +146,7 @@ def __init__(self): self.linearUnits = 1.0 -class PreviewCanon(): +class PreviewCanon(object): def __init__(self, canon, debug=False): self.c = canon self.debug = debug @@ -187,7 +184,7 @@ def get_block_delete(self): # Preview class works concurrently using multiprocessing # Queues are used for communication -class Preview(): +class Preview(object): def __init__(self, stat, randomToolchanger=False, parameterFile="", initcode="", debug=False): self.debug = debug self.filename = "" @@ -369,7 +366,7 @@ def do_preview(self): print("Preview exiting") -class StatusValues(): +class StatusValues(object): def __init__(self): self.io = EmcStatusIo() @@ -386,7 +383,7 @@ def clear(self): self.interp.Clear() -class LinuxCNCWrapper(): +class LinuxCNCWrapper(object): def __init__(self, context, host='', loopback=False, iniFile=None, svcUuid=None, @@ -580,7 +577,7 @@ def process_sockets(self): poll.register(self.statusSocket, zmq.POLLIN) poll.register(self.errorSocket, zmq.POLLIN) poll.register(self.commandSocket, zmq.POLLIN) - + next_poll = time.time() + self.pollInterval polldelay = (self.pollInterval) * 1000 # convert to ms while not self.shutdown.is_set(): @@ -591,7 +588,7 @@ def process_sockets(self): self.process_error(self.errorSocket) if self.commandSocket in s and s[self.commandSocket] == zmq.POLLIN: self.process_command(self.commandSocket) - + polldelay = (next_poll - time.time()) * 1000 # convert to ms if (polldelay > 0): continue @@ -927,7 +924,7 @@ def update_config(self, stat): modified |= self.update_config_value('min_spindle_override', value) value = float(self.ini.find('DISPLAY', 'DEFAULT_SPINDLE_SPEED') or 1) - modified |= self.update_config_value('default_spindle_speed', value) + modified |= self.update_config_value('default_spindle_speed', value) value = float(self.ini.find('DISPLAY', 'DEFAULT_LINEAR_VELOCITY') or 0.25) modified |= self.update_config_value('default_linear_velocity', value) @@ -1000,7 +997,7 @@ def update_config(self, stat): elif angularUnits in ['rad', 'radian']: angularUnitsConverted = ANGULAR_UNITS_RADIAN elif angularUnits in ['grad', 'gon']: - angularUnitsConverted = ANGULAR_UNTIS_GRAD + angularUnitsConverted = ANGULAR_UNITS_GRAD else: angularUnitsConverted = ANGULAR_UNITS_DEGREES modified |= self.update_config_value('angular_units', angularUnitsConverted) @@ -1439,7 +1436,7 @@ def update_error(self, error): return kind, text = error - text = unicode(text, 'utf-8') + text = text.encode('utf-8') self.txError.note.append(text) if (kind == linuxcnc.NML_ERROR): @@ -1913,7 +1910,7 @@ def process_command(self, socket): adaptiveFeed = self.rx.emc_command_params.enable self.command.set_adaptive_feed(adaptiveFeed) if self.rx.HasField('ticket'): - self.wait_complete(identit, self.rx.ticket) + self.wait_complete(identity, self.rx.ticket) else: self.send_command_wrong_params(identity) From 0c2b5bddb8d1e8ea77b77a0d647dfb0e13e29c40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Thu, 7 Jun 2018 09:58:59 +0200 Subject: [PATCH 241/516] python/servicediscovery: fix py23 problems --- lib/python/servicediscovery.py | 91 ++++++++++++++++++---------------- 1 file changed, 48 insertions(+), 43 deletions(-) diff --git a/lib/python/servicediscovery.py b/lib/python/servicediscovery.py index c0f476d3a9..32191686db 100644 --- a/lib/python/servicediscovery.py +++ b/lib/python/servicediscovery.py @@ -1,29 +1,32 @@ +# coding=utf-8 +from __future__ import print_function +from __future__ import print_function + +import pprint import sys -import os -import gtk.gdk import gobject -import glib -import socket try: import avahi, dbus, gtk -except ImportError, e: - print "Sorry, to use this tool you need to install Avahi and python-dbus.\n Error: %s" % e +except ImportError as e: + print("Sorry, to use this tool you need to install Avahi and python-dbus.\n Error: %s" % e) sys.exit(1) -except Exception, e: - print "Failed to initialize: %s" % e +except Exception as e: + print("Failed to initialize: %s" % e) sys.exit(1) try: from dbus import DBusException import dbus.glib -except ImportError, e: +except ImportError as e: pass + class Arg(object): pass -class curry: + +class curry(object): def __init__(self, fun, *args, **kwargs): self.fun = fun self.pending = args[:] @@ -38,31 +41,33 @@ def __call__(self, *args, **kwargs): return self.fun(*(self.pending + args), **kw) + class ServiceDiscovery(gobject.GObject): __gtype_name__ = 'ServiceDiscovery' __gsignals__ = { - 'avahi': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_STRING,)), - 'service-resolved' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,)), - 'new-service' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,)), - 'service-removed' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,)), - 'resolve-error' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_STRING,)), - } + 'avahi': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_STRING,)), + 'service-resolved': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,)), + 'new-service': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,)), + 'service-removed': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,)), + 'resolve-error': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_STRING,)), + } def __init__(self, debug=False): gobject.GObject.__init__(self) self.debug = debug - self.domain = "" + self.domain = "" + self.server = None try: self.system_bus = dbus.SystemBus() self.system_bus.add_signal_receiver(self.avahi_dbus_connect_cb, "NameOwnerChanged", "org.freedesktop.DBus", arg0="org.freedesktop.Avahi") - except dbus.DBusException, e: + except dbus.DBusException as e: pprint.pprint(e) sys.exit(1) - self.service_browsers = {} - self.start_service_discovery(None, None, None) + self.service_browsers = {} + self.start_service_discovery(None, None, None) def avahi_dbus_connect_cb(self, a, connect, disconnect): if connect != "": @@ -73,13 +78,13 @@ def avahi_dbus_connect_cb(self, a, connect, disconnect): self.start_service_discovery(None, None, None) def siocgifname(self, interface): - if interface <= 0: - return "any" - else: - return self.server.GetNetworkInterfaceNameByIndex(interface) + if interface <= 0: + return "any" + else: + return self.server.GetNetworkInterfaceNameByIndex(interface) def service_resolved(self, interface, protocol, name, type, - domain, host, aprotocol, address, port, txt, flags,**kwargs): + domain, host, aprotocol, address, port, txt, flags, **kwargs): r = Arg() r.interface = self.siocgifname(interface) r.protocol = protocol @@ -93,12 +98,12 @@ def service_resolved(self, interface, protocol, name, type, r.txt = avahi.txt_array_to_string_array(txt) r.flags = flags r.kwargs = kwargs - self.emit('service-resolved',r) + self.emit('service-resolved', r) - def print_error(self, err,**kwargs): + def print_error(self, err, **kwargs): self.emit('resolve-error', str(err)) - def new_service(self, interface, protocol, name, type, domain, flags,**kwargs): + def new_service(self, interface, protocol, name, type, domain, flags, **kwargs): r = Arg() r.interface = self.siocgifname(interface) r.protocol = protocol @@ -107,13 +112,13 @@ def new_service(self, interface, protocol, name, type, domain, flags,**kwargs): r.domain = domain r.flags = flags r.kwargs = kwargs - self.emit('new-service',r) + self.emit('new-service', r) self.server.ResolveService(interface, protocol, name, type, domain, avahi.PROTO_INET, dbus.UInt32(0), reply_handler=curry(self.service_resolved, **kwargs), error_handler=curry(self.print_error, **kwargs)) - def remove_service(self, interface, protocol, name, type, domain, flags,**kwargs): + def remove_service(self, interface, protocol, name, type, domain, flags, **kwargs): r = Arg() r.interface = self.siocgifname(interface) @@ -123,11 +128,11 @@ def remove_service(self, interface, protocol, name, type, domain, flags,**kwargs r.domain = domain r.flags = flags r.kwargs = kwargs - self.emit('service-removed',r) + self.emit('service-removed', r) def add_service_type(self, interface, protocol, type, domain, **kwargs): - if self.service_browsers.has_key((interface, protocol, type, domain)): - return + if self.service_browsers.has_key((interface, protocol, type, domain)): + return b = dbus.Interface(self.system_bus.get_object(avahi.DBUS_NAME, self.server.ServiceBrowserNew(interface, @@ -136,23 +141,23 @@ def add_service_type(self, interface, protocol, type, domain, **kwargs): domain, dbus.UInt32(0))), avahi.DBUS_INTERFACE_SERVICE_BROWSER) - b.connect_to_signal('ItemNew', curry(self.new_service, **kwargs)) + b.connect_to_signal('ItemNew', curry(self.new_service, **kwargs)) b.connect_to_signal('ItemRemove', curry(self.remove_service, **kwargs)) - self.service_browsers[(interface, protocol, type, domain)] = b + self.service_browsers[(interface, protocol, type, domain)] = b def start_service_discovery(self, component, verb, applet): - if len(self.domain) != 0: - return - try: + if len(self.domain) != 0: + return + try: self.server = dbus.Interface(self.system_bus.get_object(avahi.DBUS_NAME, avahi.DBUS_PATH_SERVER), avahi.DBUS_INTERFACE_SERVER) self.domain = self.server.GetDomainName() - except: - print "Check that the Avahi daemon is running!" - return + except: + print ("Check that the Avahi daemon is running!") + return def stop_service_discovery(self, component, verb, applet): - if len(self.domain) == 0: - return + if len(self.domain) == 0: + return pass From cdb1e83cfc8335f46a61a9049f8edc276bc74f0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Thu, 7 Jun 2018 10:56:53 +0200 Subject: [PATCH 242/516] Squashed 'src/machinetalk/proto/' changes from a7b0855d4..441735f0f 441735f0f Merge pull request #85 from machinekoder/add-emc-status-ui-messge ca7d07fe7 update Python stuff 7d10a0dd5 add EMCStatusUI message 33f563528 Merge pull request #84 from machinekoder/master 7dedea9c2 adding generated python files 458a830da preparing PyPi 1.0.8 package git-subtree-dir: src/machinetalk/proto git-subtree-split: 441735f0f90382e40e43e99cf271bbadf4a75586 --- README.md | 1 + python/machinetalk/__init__.py | 0 python/machinetalk/protobuf/__init__.py | 0 python/machinetalk/protobuf/canon_pb2.py | 1626 +++++++++ python/machinetalk/protobuf/config_pb2.py | 462 +++ python/machinetalk/protobuf/emcclass_pb2.py | 171 + python/machinetalk/protobuf/firmware_pb2.py | 169 + python/machinetalk/protobuf/jplan_pb2.py | 138 + python/machinetalk/protobuf/log_pb2.py | 104 + python/machinetalk/protobuf/message_pb2.py | 910 ++++++ python/machinetalk/protobuf/motcmds_pb2.py | 841 +++++ python/machinetalk/protobuf/nanopb_pb2.py | 258 ++ python/machinetalk/protobuf/object_pb2.py | 1546 +++++++++ python/machinetalk/protobuf/preview_pb2.py | 538 +++ python/machinetalk/protobuf/ros_pb2.py | 286 ++ .../machinetalk/protobuf/rtapi_message_pb2.py | 93 + .../machinetalk/protobuf/rtapicommand_pb2.py | 157 + python/machinetalk/protobuf/status_pb2.py | 2492 ++++++++++++++ python/machinetalk/protobuf/task_pb2.py | 350 ++ python/machinetalk/protobuf/test_pb2.py | 201 ++ python/machinetalk/protobuf/types_pb2.py | 2903 +++++++++++++++++ python/machinetalk/protobuf/value_pb2.py | 178 + scripts/README.md | 13 + scripts/distribute-python | 3 + setup.cfg | 8 +- setup.py | 254 +- src/machinetalk/protobuf/message.proto | 1 + src/machinetalk/protobuf/status.proto | 17 + 28 files changed, 13577 insertions(+), 143 deletions(-) create mode 100644 python/machinetalk/__init__.py create mode 100644 python/machinetalk/protobuf/__init__.py create mode 100644 python/machinetalk/protobuf/canon_pb2.py create mode 100644 python/machinetalk/protobuf/config_pb2.py create mode 100644 python/machinetalk/protobuf/emcclass_pb2.py create mode 100644 python/machinetalk/protobuf/firmware_pb2.py create mode 100644 python/machinetalk/protobuf/jplan_pb2.py create mode 100644 python/machinetalk/protobuf/log_pb2.py create mode 100644 python/machinetalk/protobuf/message_pb2.py create mode 100644 python/machinetalk/protobuf/motcmds_pb2.py create mode 100644 python/machinetalk/protobuf/nanopb_pb2.py create mode 100644 python/machinetalk/protobuf/object_pb2.py create mode 100644 python/machinetalk/protobuf/preview_pb2.py create mode 100644 python/machinetalk/protobuf/ros_pb2.py create mode 100644 python/machinetalk/protobuf/rtapi_message_pb2.py create mode 100644 python/machinetalk/protobuf/rtapicommand_pb2.py create mode 100644 python/machinetalk/protobuf/status_pb2.py create mode 100644 python/machinetalk/protobuf/task_pb2.py create mode 100644 python/machinetalk/protobuf/test_pb2.py create mode 100644 python/machinetalk/protobuf/types_pb2.py create mode 100644 python/machinetalk/protobuf/value_pb2.py create mode 100644 scripts/README.md create mode 100755 scripts/distribute-python diff --git a/README.md b/README.md index 6d62c4fb58..14f4ff5249 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,7 @@ pip install machinetalk-protobuf Alternatively you can install the Python modules directly from the source code. ```sh +make python setup.py build sudo python setup.py install ``` diff --git a/python/machinetalk/__init__.py b/python/machinetalk/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/python/machinetalk/protobuf/__init__.py b/python/machinetalk/protobuf/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/python/machinetalk/protobuf/canon_pb2.py b/python/machinetalk/protobuf/canon_pb2.py new file mode 100644 index 0000000000..b4b6924db0 --- /dev/null +++ b/python/machinetalk/protobuf/canon_pb2.py @@ -0,0 +1,1626 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: machinetalk/protobuf/canon.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from machinetalk.protobuf import nanopb_pb2 as machinetalk_dot_protobuf_dot_nanopb__pb2 +from machinetalk.protobuf import types_pb2 as machinetalk_dot_protobuf_dot_types__pb2 +from machinetalk.protobuf import emcclass_pb2 as machinetalk_dot_protobuf_dot_emcclass__pb2 +from machinetalk.protobuf import motcmds_pb2 as machinetalk_dot_protobuf_dot_motcmds__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='machinetalk/protobuf/canon.proto', + package='machinetalk', + syntax='proto2', + serialized_pb=_b('\n machinetalk/protobuf/canon.proto\x12\x0bmachinetalk\x1a!machinetalk/protobuf/nanopb.proto\x1a machinetalk/protobuf/types.proto\x1a#machinetalk/protobuf/emcclass.proto\x1a\"machinetalk/protobuf/motcmds.proto\"l\n\x10\x45mc_Traj_Set_G5x\x12$\n\x06origin\x18\n \x02(\x0b\x32\x14.machinetalk.EmcPose\x12+\n\tg5x_index\x18\x14 \x02(\x0e\x32\x18.machinetalk.OriginIndex:\x05\x92?\x02Hd\"?\n\x10\x45mc_Traj_Set_G92\x12$\n\x06origin\x18\n \x02(\x0b\x32\x14.machinetalk.EmcPose:\x05\x92?\x02He\"0\n\x15\x45mc_Traj_Set_Rotation\x12\x10\n\x08rotation\x18\n \x02(\x01:\x05\x92?\x02Hf\"\xbd\x01\n\x14\x45mc_Traj_Linear_Move\x12%\n\x04type\x18\n \x02(\x0e\x32\x17.machinetalk.MotionType\x12!\n\x03\x65nd\x18\x14 \x02(\x0b\x32\x14.machinetalk.EmcPose\x12\x0b\n\x03vel\x18\x1e \x02(\x01\x12\x12\n\nini_maxvel\x18( \x02(\x01\x12\x0b\n\x03\x61\x63\x63\x18\x32 \x02(\x01\x12\x11\n\tfeed_mode\x18< \x02(\x08\x12\x13\n\x0bindexrotary\x18\x46 \x02(\x05:\x05\x92?\x02Hg\"\xa3\x01\n\x0e\x45mc_Traj_Probe\x12%\n\x04type\x18\n \x02(\x0e\x32\x17.machinetalk.MotionType\x12!\n\x03pos\x18\x14 \x02(\x0b\x32\x14.machinetalk.EmcPose\x12\x0b\n\x03vel\x18\x1e \x02(\x01\x12\x12\n\nini_maxvel\x18( \x02(\x01\x12\x0b\n\x03\x61\x63\x63\x18\x32 \x02(\x01\x12\x12\n\nprobe_type\x18< \x02(\r:\x05\x92?\x02Hh\"\x8c\x02\n\x16\x45mc_Traj_Circular_Move\x12%\n\x04type\x18\n \x02(\x0e\x32\x17.machinetalk.MotionType\x12!\n\x03\x65nd\x18\x14 \x02(\x0b\x32\x14.machinetalk.EmcPose\x12(\n\x06\x63\x65nter\x18\x19 \x02(\x0b\x32\x18.machinetalk.PmCartesian\x12(\n\x06normal\x18\x1b \x02(\x0b\x32\x18.machinetalk.PmCartesian\x12\x0b\n\x03vel\x18\x1e \x02(\x01\x12\x12\n\nini_maxvel\x18( \x02(\x01\x12\x0b\n\x03\x61\x63\x63\x18\x32 \x02(\x01\x12\x11\n\tfeed_mode\x18< \x02(\x08\x12\x0c\n\x04turn\x18\x46 \x02(\x05:\x05\x92?\x02Hi\"l\n\x12\x45mc_Traj_Rigid_Tap\x12!\n\x03pos\x18\x14 \x02(\x0b\x32\x14.machinetalk.EmcPose\x12\x0b\n\x03vel\x18\x1e \x02(\x01\x12\x12\n\nini_maxvel\x18( \x02(\x01\x12\x0b\n\x03\x61\x63\x63\x18\x32 \x02(\x01:\x05\x92?\x02Hj\"`\n\x16\x45mc_Traj_Set_Term_Cond\x12,\n\x04\x63ond\x18\n \x02(\x0e\x32\x1e.machinetalk.TermConditionType\x12\x11\n\ttolerance\x18\x14 \x02(\x01:\x05\x92?\x02Hk\"U\n\x18\x45mc_Traj_Set_Spindlesync\x12\x1b\n\x13\x66\x65\x65\x64_per_revolution\x18\n \x02(\x01\x12\x15\n\rvelocity_mode\x18\x14 \x02(\x08:\x05\x92?\x02Hl\"&\n\x0e\x45mc_Traj_Delay\x12\r\n\x05\x64\x65lay\x18\n \x02(\x01:\x05\x92?\x02Hm\"P\n\x0e\x45mc_Spindle_On\x12\x10\n\x05speed\x18\n \x02(\x01:\x01\x30\x12\x11\n\x06\x66\x61\x63tor\x18\x14 \x02(\x01:\x01\x30\x12\x12\n\x07xoffset\x18\x1e \x02(\x01:\x01\x30:\x05\x92?\x02Hn\"J\n\x11\x45mc_Spindle_Speed\x12\r\n\x05speed\x18\n \x02(\x01\x12\x0e\n\x06\x66\x61\x63tor\x18\x14 \x02(\x01\x12\x0f\n\x07xoffset\x18\x1e \x02(\x01:\x05\x92?\x02Ho\"[\n\x12\x45mc_Spindle_Orient\x12\x13\n\x0borientation\x18\n \x02(\x01\x12)\n\x04mode\x18\x14 \x02(\x0e\x32\x1b.machinetalk.CanonDirection:\x05\x92?\x02Hp\":\n Emc_Spindle_Wait_Orient_Complete\x12\x0f\n\x07timeout\x18\n \x02(\x01:\x05\x92?\x02Hq\"\xb0\x01\n\x13\x45mc_Tool_Set_Offset\x12\x0e\n\x06pocket\x18\n \x02(\x05\x12\x0e\n\x06toolno\x18\x0f \x02(\x05\x12$\n\x06offset\x18\x14 \x02(\x0b\x32\x14.machinetalk.EmcPose\x12\x10\n\x08\x64iameter\x18\x1e \x02(\x01\x12\x12\n\nfrontangle\x18( \x02(\x01\x12\x11\n\tbackangle\x18\x32 \x02(\x01\x12\x13\n\x0borientation\x18< \x02(\x05:\x05\x92?\x02Hr\"B\n\x13\x45mc_Traj_Set_Offset\x12$\n\x06offset\x18\n \x02(\x0b\x32\x14.machinetalk.EmcPose:\x05\x92?\x02Hs\"7\n\x10\x45mc_Tool_Prepare\x12\x0e\n\x06pocket\x18\n \x02(\x05\x12\x0c\n\x04tool\x18\x14 \x02(\x05:\x05\x92?\x02Ht\"*\n\x13\x45mc_Tool_Set_Number\x12\x0c\n\x04tool\x18\n \x02(\x05:\x05\x92?\x02Hu\"-\n\x16\x45mc_Traj_Set_Fo_Enable\x12\x0c\n\x04mode\x18\n \x02(\x08:\x05\x92?\x02Hv\"-\n\x16\x45mc_Traj_Set_So_Enable\x12\x0c\n\x04mode\x18\n \x02(\x08:\x05\x92?\x02Hw\"-\n\x16\x45mc_Traj_Set_Fh_Enable\x12\x0c\n\x04mode\x18\n \x02(\x08:\x05\x92?\x02Hx\",\n\x13\x45mc_Motion_Adaptive\x12\x0e\n\x06status\x18\n \x02(\x08:\x05\x92?\x02Hy\":\n\x14\x45mc_Operator_Display\x12\n\n\x02id\x18\n \x02(\x05\x12\x0f\n\x07\x64isplay\x18\x14 \x02(\t:\x05\x92?\x02Hz\"4\n\x11\x45mc_Operator_Text\x12\n\n\x02id\x18\n \x02(\x05\x12\x0c\n\x04text\x18\x14 \x02(\t:\x05\x92?\x02H{\"6\n\x12\x45mc_Operator_Error\x12\n\n\x02id\x18\n \x02(\x05\x12\r\n\x05\x65rror\x18\x14 \x02(\t:\x05\x92?\x02H|\"T\n\x13\x45mc_Motion_Set_Dout\x12\r\n\x05index\x18\n \x02(\r\x12\r\n\x05start\x18\x14 \x02(\x08\x12\x0b\n\x03\x65nd\x18\x1e \x02(\x08\x12\x0b\n\x03now\x18( \x02(\x08:\x05\x92?\x02H}\"T\n\x13\x45mc_Motion_Set_Aout\x12\r\n\x05index\x18\n \x02(\r\x12\r\n\x05start\x18\x14 \x02(\x01\x12\x0b\n\x03\x65nd\x18\x1e \x02(\x01\x12\x0b\n\x03now\x18( \x02(\x08:\x05\x92?\x02H~\"\x91\x01\n\x12\x45mc_Aux_Input_Wait\x12\r\n\x05index\x18\n \x02(\r\x12*\n\ninput_type\x18\x14 \x02(\x0e\x32\x16.machinetalk.InputType\x12(\n\twait_type\x18\x1e \x02(\x0e\x32\x15.machinetalk.WaitType\x12\x0f\n\x07timeout\x18( \x02(\x01:\x05\x92?\x02H\x7f\",\n\x14\x45mc_Exec_Plugin_Ca1l\x12\x0c\n\x04\x63\x61ll\x18\x14 \x02(\x0c:\x06\x92?\x03H\x80\x01\"*\n\x12\x45mc_Io_Plugin_Call\x12\x0c\n\x04\x63\x61ll\x18\x14 \x02(\x0c:\x06\x92?\x03H\x81\x01') + , + dependencies=[machinetalk_dot_protobuf_dot_nanopb__pb2.DESCRIPTOR,machinetalk_dot_protobuf_dot_types__pb2.DESCRIPTOR,machinetalk_dot_protobuf_dot_emcclass__pb2.DESCRIPTOR,machinetalk_dot_protobuf_dot_motcmds__pb2.DESCRIPTOR,]) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + + + + +_EMC_TRAJ_SET_G5X = _descriptor.Descriptor( + name='Emc_Traj_Set_G5x', + full_name='machinetalk.Emc_Traj_Set_G5x', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='origin', full_name='machinetalk.Emc_Traj_Set_G5x.origin', index=0, + number=10, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='g5x_index', full_name='machinetalk.Emc_Traj_Set_G5x.g5x_index', index=1, + number=20, type=14, cpp_type=8, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hd')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=191, + serialized_end=299, +) + + +_EMC_TRAJ_SET_G92 = _descriptor.Descriptor( + name='Emc_Traj_Set_G92', + full_name='machinetalk.Emc_Traj_Set_G92', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='origin', full_name='machinetalk.Emc_Traj_Set_G92.origin', index=0, + number=10, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002He')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=301, + serialized_end=364, +) + + +_EMC_TRAJ_SET_ROTATION = _descriptor.Descriptor( + name='Emc_Traj_Set_Rotation', + full_name='machinetalk.Emc_Traj_Set_Rotation', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='rotation', full_name='machinetalk.Emc_Traj_Set_Rotation.rotation', index=0, + number=10, type=1, cpp_type=5, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hf')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=366, + serialized_end=414, +) + + +_EMC_TRAJ_LINEAR_MOVE = _descriptor.Descriptor( + name='Emc_Traj_Linear_Move', + full_name='machinetalk.Emc_Traj_Linear_Move', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='type', full_name='machinetalk.Emc_Traj_Linear_Move.type', index=0, + number=10, type=14, cpp_type=8, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='end', full_name='machinetalk.Emc_Traj_Linear_Move.end', index=1, + number=20, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='vel', full_name='machinetalk.Emc_Traj_Linear_Move.vel', index=2, + number=30, type=1, cpp_type=5, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='ini_maxvel', full_name='machinetalk.Emc_Traj_Linear_Move.ini_maxvel', index=3, + number=40, type=1, cpp_type=5, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='acc', full_name='machinetalk.Emc_Traj_Linear_Move.acc', index=4, + number=50, type=1, cpp_type=5, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='feed_mode', full_name='machinetalk.Emc_Traj_Linear_Move.feed_mode', index=5, + number=60, type=8, cpp_type=7, label=2, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='indexrotary', full_name='machinetalk.Emc_Traj_Linear_Move.indexrotary', index=6, + number=70, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hg')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=417, + serialized_end=606, +) + + +_EMC_TRAJ_PROBE = _descriptor.Descriptor( + name='Emc_Traj_Probe', + full_name='machinetalk.Emc_Traj_Probe', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='type', full_name='machinetalk.Emc_Traj_Probe.type', index=0, + number=10, type=14, cpp_type=8, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='pos', full_name='machinetalk.Emc_Traj_Probe.pos', index=1, + number=20, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='vel', full_name='machinetalk.Emc_Traj_Probe.vel', index=2, + number=30, type=1, cpp_type=5, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='ini_maxvel', full_name='machinetalk.Emc_Traj_Probe.ini_maxvel', index=3, + number=40, type=1, cpp_type=5, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='acc', full_name='machinetalk.Emc_Traj_Probe.acc', index=4, + number=50, type=1, cpp_type=5, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='probe_type', full_name='machinetalk.Emc_Traj_Probe.probe_type', index=5, + number=60, type=13, cpp_type=3, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hh')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=609, + serialized_end=772, +) + + +_EMC_TRAJ_CIRCULAR_MOVE = _descriptor.Descriptor( + name='Emc_Traj_Circular_Move', + full_name='machinetalk.Emc_Traj_Circular_Move', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='type', full_name='machinetalk.Emc_Traj_Circular_Move.type', index=0, + number=10, type=14, cpp_type=8, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='end', full_name='machinetalk.Emc_Traj_Circular_Move.end', index=1, + number=20, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='center', full_name='machinetalk.Emc_Traj_Circular_Move.center', index=2, + number=25, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='normal', full_name='machinetalk.Emc_Traj_Circular_Move.normal', index=3, + number=27, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='vel', full_name='machinetalk.Emc_Traj_Circular_Move.vel', index=4, + number=30, type=1, cpp_type=5, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='ini_maxvel', full_name='machinetalk.Emc_Traj_Circular_Move.ini_maxvel', index=5, + number=40, type=1, cpp_type=5, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='acc', full_name='machinetalk.Emc_Traj_Circular_Move.acc', index=6, + number=50, type=1, cpp_type=5, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='feed_mode', full_name='machinetalk.Emc_Traj_Circular_Move.feed_mode', index=7, + number=60, type=8, cpp_type=7, label=2, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='turn', full_name='machinetalk.Emc_Traj_Circular_Move.turn', index=8, + number=70, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hi')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=775, + serialized_end=1043, +) + + +_EMC_TRAJ_RIGID_TAP = _descriptor.Descriptor( + name='Emc_Traj_Rigid_Tap', + full_name='machinetalk.Emc_Traj_Rigid_Tap', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='pos', full_name='machinetalk.Emc_Traj_Rigid_Tap.pos', index=0, + number=20, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='vel', full_name='machinetalk.Emc_Traj_Rigid_Tap.vel', index=1, + number=30, type=1, cpp_type=5, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='ini_maxvel', full_name='machinetalk.Emc_Traj_Rigid_Tap.ini_maxvel', index=2, + number=40, type=1, cpp_type=5, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='acc', full_name='machinetalk.Emc_Traj_Rigid_Tap.acc', index=3, + number=50, type=1, cpp_type=5, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hj')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1045, + serialized_end=1153, +) + + +_EMC_TRAJ_SET_TERM_COND = _descriptor.Descriptor( + name='Emc_Traj_Set_Term_Cond', + full_name='machinetalk.Emc_Traj_Set_Term_Cond', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='cond', full_name='machinetalk.Emc_Traj_Set_Term_Cond.cond', index=0, + number=10, type=14, cpp_type=8, label=2, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='tolerance', full_name='machinetalk.Emc_Traj_Set_Term_Cond.tolerance', index=1, + number=20, type=1, cpp_type=5, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hk')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1155, + serialized_end=1251, +) + + +_EMC_TRAJ_SET_SPINDLESYNC = _descriptor.Descriptor( + name='Emc_Traj_Set_Spindlesync', + full_name='machinetalk.Emc_Traj_Set_Spindlesync', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='feed_per_revolution', full_name='machinetalk.Emc_Traj_Set_Spindlesync.feed_per_revolution', index=0, + number=10, type=1, cpp_type=5, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='velocity_mode', full_name='machinetalk.Emc_Traj_Set_Spindlesync.velocity_mode', index=1, + number=20, type=8, cpp_type=7, label=2, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hl')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1253, + serialized_end=1338, +) + + +_EMC_TRAJ_DELAY = _descriptor.Descriptor( + name='Emc_Traj_Delay', + full_name='machinetalk.Emc_Traj_Delay', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='delay', full_name='machinetalk.Emc_Traj_Delay.delay', index=0, + number=10, type=1, cpp_type=5, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hm')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1340, + serialized_end=1378, +) + + +_EMC_SPINDLE_ON = _descriptor.Descriptor( + name='Emc_Spindle_On', + full_name='machinetalk.Emc_Spindle_On', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='speed', full_name='machinetalk.Emc_Spindle_On.speed', index=0, + number=10, type=1, cpp_type=5, label=2, + has_default_value=True, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='factor', full_name='machinetalk.Emc_Spindle_On.factor', index=1, + number=20, type=1, cpp_type=5, label=2, + has_default_value=True, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='xoffset', full_name='machinetalk.Emc_Spindle_On.xoffset', index=2, + number=30, type=1, cpp_type=5, label=2, + has_default_value=True, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hn')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1380, + serialized_end=1460, +) + + +_EMC_SPINDLE_SPEED = _descriptor.Descriptor( + name='Emc_Spindle_Speed', + full_name='machinetalk.Emc_Spindle_Speed', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='speed', full_name='machinetalk.Emc_Spindle_Speed.speed', index=0, + number=10, type=1, cpp_type=5, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='factor', full_name='machinetalk.Emc_Spindle_Speed.factor', index=1, + number=20, type=1, cpp_type=5, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='xoffset', full_name='machinetalk.Emc_Spindle_Speed.xoffset', index=2, + number=30, type=1, cpp_type=5, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Ho')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1462, + serialized_end=1536, +) + + +_EMC_SPINDLE_ORIENT = _descriptor.Descriptor( + name='Emc_Spindle_Orient', + full_name='machinetalk.Emc_Spindle_Orient', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='orientation', full_name='machinetalk.Emc_Spindle_Orient.orientation', index=0, + number=10, type=1, cpp_type=5, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='mode', full_name='machinetalk.Emc_Spindle_Orient.mode', index=1, + number=20, type=14, cpp_type=8, label=2, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hp')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1538, + serialized_end=1629, +) + + +_EMC_SPINDLE_WAIT_ORIENT_COMPLETE = _descriptor.Descriptor( + name='Emc_Spindle_Wait_Orient_Complete', + full_name='machinetalk.Emc_Spindle_Wait_Orient_Complete', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='timeout', full_name='machinetalk.Emc_Spindle_Wait_Orient_Complete.timeout', index=0, + number=10, type=1, cpp_type=5, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hq')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1631, + serialized_end=1689, +) + + +_EMC_TOOL_SET_OFFSET = _descriptor.Descriptor( + name='Emc_Tool_Set_Offset', + full_name='machinetalk.Emc_Tool_Set_Offset', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='pocket', full_name='machinetalk.Emc_Tool_Set_Offset.pocket', index=0, + number=10, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='toolno', full_name='machinetalk.Emc_Tool_Set_Offset.toolno', index=1, + number=15, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='offset', full_name='machinetalk.Emc_Tool_Set_Offset.offset', index=2, + number=20, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='diameter', full_name='machinetalk.Emc_Tool_Set_Offset.diameter', index=3, + number=30, type=1, cpp_type=5, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='frontangle', full_name='machinetalk.Emc_Tool_Set_Offset.frontangle', index=4, + number=40, type=1, cpp_type=5, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='backangle', full_name='machinetalk.Emc_Tool_Set_Offset.backangle', index=5, + number=50, type=1, cpp_type=5, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='orientation', full_name='machinetalk.Emc_Tool_Set_Offset.orientation', index=6, + number=60, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hr')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1692, + serialized_end=1868, +) + + +_EMC_TRAJ_SET_OFFSET = _descriptor.Descriptor( + name='Emc_Traj_Set_Offset', + full_name='machinetalk.Emc_Traj_Set_Offset', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='offset', full_name='machinetalk.Emc_Traj_Set_Offset.offset', index=0, + number=10, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hs')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1870, + serialized_end=1936, +) + + +_EMC_TOOL_PREPARE = _descriptor.Descriptor( + name='Emc_Tool_Prepare', + full_name='machinetalk.Emc_Tool_Prepare', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='pocket', full_name='machinetalk.Emc_Tool_Prepare.pocket', index=0, + number=10, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='tool', full_name='machinetalk.Emc_Tool_Prepare.tool', index=1, + number=20, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Ht')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1938, + serialized_end=1993, +) + + +_EMC_TOOL_SET_NUMBER = _descriptor.Descriptor( + name='Emc_Tool_Set_Number', + full_name='machinetalk.Emc_Tool_Set_Number', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='tool', full_name='machinetalk.Emc_Tool_Set_Number.tool', index=0, + number=10, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hu')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1995, + serialized_end=2037, +) + + +_EMC_TRAJ_SET_FO_ENABLE = _descriptor.Descriptor( + name='Emc_Traj_Set_Fo_Enable', + full_name='machinetalk.Emc_Traj_Set_Fo_Enable', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='mode', full_name='machinetalk.Emc_Traj_Set_Fo_Enable.mode', index=0, + number=10, type=8, cpp_type=7, label=2, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hv')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2039, + serialized_end=2084, +) + + +_EMC_TRAJ_SET_SO_ENABLE = _descriptor.Descriptor( + name='Emc_Traj_Set_So_Enable', + full_name='machinetalk.Emc_Traj_Set_So_Enable', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='mode', full_name='machinetalk.Emc_Traj_Set_So_Enable.mode', index=0, + number=10, type=8, cpp_type=7, label=2, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hw')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2086, + serialized_end=2131, +) + + +_EMC_TRAJ_SET_FH_ENABLE = _descriptor.Descriptor( + name='Emc_Traj_Set_Fh_Enable', + full_name='machinetalk.Emc_Traj_Set_Fh_Enable', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='mode', full_name='machinetalk.Emc_Traj_Set_Fh_Enable.mode', index=0, + number=10, type=8, cpp_type=7, label=2, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hx')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2133, + serialized_end=2178, +) + + +_EMC_MOTION_ADAPTIVE = _descriptor.Descriptor( + name='Emc_Motion_Adaptive', + full_name='machinetalk.Emc_Motion_Adaptive', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='status', full_name='machinetalk.Emc_Motion_Adaptive.status', index=0, + number=10, type=8, cpp_type=7, label=2, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hy')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2180, + serialized_end=2224, +) + + +_EMC_OPERATOR_DISPLAY = _descriptor.Descriptor( + name='Emc_Operator_Display', + full_name='machinetalk.Emc_Operator_Display', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='machinetalk.Emc_Operator_Display.id', index=0, + number=10, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='display', full_name='machinetalk.Emc_Operator_Display.display', index=1, + number=20, type=9, cpp_type=9, label=2, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hz')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2226, + serialized_end=2284, +) + + +_EMC_OPERATOR_TEXT = _descriptor.Descriptor( + name='Emc_Operator_Text', + full_name='machinetalk.Emc_Operator_Text', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='machinetalk.Emc_Operator_Text.id', index=0, + number=10, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='text', full_name='machinetalk.Emc_Operator_Text.text', index=1, + number=20, type=9, cpp_type=9, label=2, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002H{')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2286, + serialized_end=2338, +) + + +_EMC_OPERATOR_ERROR = _descriptor.Descriptor( + name='Emc_Operator_Error', + full_name='machinetalk.Emc_Operator_Error', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='machinetalk.Emc_Operator_Error.id', index=0, + number=10, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='error', full_name='machinetalk.Emc_Operator_Error.error', index=1, + number=20, type=9, cpp_type=9, label=2, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002H|')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2340, + serialized_end=2394, +) + + +_EMC_MOTION_SET_DOUT = _descriptor.Descriptor( + name='Emc_Motion_Set_Dout', + full_name='machinetalk.Emc_Motion_Set_Dout', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='index', full_name='machinetalk.Emc_Motion_Set_Dout.index', index=0, + number=10, type=13, cpp_type=3, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='start', full_name='machinetalk.Emc_Motion_Set_Dout.start', index=1, + number=20, type=8, cpp_type=7, label=2, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='end', full_name='machinetalk.Emc_Motion_Set_Dout.end', index=2, + number=30, type=8, cpp_type=7, label=2, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='now', full_name='machinetalk.Emc_Motion_Set_Dout.now', index=3, + number=40, type=8, cpp_type=7, label=2, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002H}')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2396, + serialized_end=2480, +) + + +_EMC_MOTION_SET_AOUT = _descriptor.Descriptor( + name='Emc_Motion_Set_Aout', + full_name='machinetalk.Emc_Motion_Set_Aout', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='index', full_name='machinetalk.Emc_Motion_Set_Aout.index', index=0, + number=10, type=13, cpp_type=3, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='start', full_name='machinetalk.Emc_Motion_Set_Aout.start', index=1, + number=20, type=1, cpp_type=5, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='end', full_name='machinetalk.Emc_Motion_Set_Aout.end', index=2, + number=30, type=1, cpp_type=5, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='now', full_name='machinetalk.Emc_Motion_Set_Aout.now', index=3, + number=40, type=8, cpp_type=7, label=2, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002H~')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2482, + serialized_end=2566, +) + + +_EMC_AUX_INPUT_WAIT = _descriptor.Descriptor( + name='Emc_Aux_Input_Wait', + full_name='machinetalk.Emc_Aux_Input_Wait', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='index', full_name='machinetalk.Emc_Aux_Input_Wait.index', index=0, + number=10, type=13, cpp_type=3, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='input_type', full_name='machinetalk.Emc_Aux_Input_Wait.input_type', index=1, + number=20, type=14, cpp_type=8, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='wait_type', full_name='machinetalk.Emc_Aux_Input_Wait.wait_type', index=2, + number=30, type=14, cpp_type=8, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='timeout', full_name='machinetalk.Emc_Aux_Input_Wait.timeout', index=3, + number=40, type=1, cpp_type=5, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002H\177')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2569, + serialized_end=2714, +) + + +_EMC_EXEC_PLUGIN_CA1L = _descriptor.Descriptor( + name='Emc_Exec_Plugin_Ca1l', + full_name='machinetalk.Emc_Exec_Plugin_Ca1l', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='call', full_name='machinetalk.Emc_Exec_Plugin_Ca1l.call', index=0, + number=20, type=12, cpp_type=9, label=2, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\200\001')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2716, + serialized_end=2760, +) + + +_EMC_IO_PLUGIN_CALL = _descriptor.Descriptor( + name='Emc_Io_Plugin_Call', + full_name='machinetalk.Emc_Io_Plugin_Call', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='call', full_name='machinetalk.Emc_Io_Plugin_Call.call', index=0, + number=20, type=12, cpp_type=9, label=2, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\201\001')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2762, + serialized_end=2804, +) + +_EMC_TRAJ_SET_G5X.fields_by_name['origin'].message_type = machinetalk_dot_protobuf_dot_emcclass__pb2._EMCPOSE +_EMC_TRAJ_SET_G5X.fields_by_name['g5x_index'].enum_type = machinetalk_dot_protobuf_dot_types__pb2._ORIGININDEX +_EMC_TRAJ_SET_G92.fields_by_name['origin'].message_type = machinetalk_dot_protobuf_dot_emcclass__pb2._EMCPOSE +_EMC_TRAJ_LINEAR_MOVE.fields_by_name['type'].enum_type = machinetalk_dot_protobuf_dot_motcmds__pb2._MOTIONTYPE +_EMC_TRAJ_LINEAR_MOVE.fields_by_name['end'].message_type = machinetalk_dot_protobuf_dot_emcclass__pb2._EMCPOSE +_EMC_TRAJ_PROBE.fields_by_name['type'].enum_type = machinetalk_dot_protobuf_dot_motcmds__pb2._MOTIONTYPE +_EMC_TRAJ_PROBE.fields_by_name['pos'].message_type = machinetalk_dot_protobuf_dot_emcclass__pb2._EMCPOSE +_EMC_TRAJ_CIRCULAR_MOVE.fields_by_name['type'].enum_type = machinetalk_dot_protobuf_dot_motcmds__pb2._MOTIONTYPE +_EMC_TRAJ_CIRCULAR_MOVE.fields_by_name['end'].message_type = machinetalk_dot_protobuf_dot_emcclass__pb2._EMCPOSE +_EMC_TRAJ_CIRCULAR_MOVE.fields_by_name['center'].message_type = machinetalk_dot_protobuf_dot_emcclass__pb2._PMCARTESIAN +_EMC_TRAJ_CIRCULAR_MOVE.fields_by_name['normal'].message_type = machinetalk_dot_protobuf_dot_emcclass__pb2._PMCARTESIAN +_EMC_TRAJ_RIGID_TAP.fields_by_name['pos'].message_type = machinetalk_dot_protobuf_dot_emcclass__pb2._EMCPOSE +_EMC_TRAJ_SET_TERM_COND.fields_by_name['cond'].enum_type = machinetalk_dot_protobuf_dot_types__pb2._TERMCONDITIONTYPE +_EMC_SPINDLE_ORIENT.fields_by_name['mode'].enum_type = machinetalk_dot_protobuf_dot_types__pb2._CANONDIRECTION +_EMC_TOOL_SET_OFFSET.fields_by_name['offset'].message_type = machinetalk_dot_protobuf_dot_emcclass__pb2._EMCPOSE +_EMC_TRAJ_SET_OFFSET.fields_by_name['offset'].message_type = machinetalk_dot_protobuf_dot_emcclass__pb2._EMCPOSE +_EMC_AUX_INPUT_WAIT.fields_by_name['input_type'].enum_type = machinetalk_dot_protobuf_dot_types__pb2._INPUTTYPE +_EMC_AUX_INPUT_WAIT.fields_by_name['wait_type'].enum_type = machinetalk_dot_protobuf_dot_types__pb2._WAITTYPE +DESCRIPTOR.message_types_by_name['Emc_Traj_Set_G5x'] = _EMC_TRAJ_SET_G5X +DESCRIPTOR.message_types_by_name['Emc_Traj_Set_G92'] = _EMC_TRAJ_SET_G92 +DESCRIPTOR.message_types_by_name['Emc_Traj_Set_Rotation'] = _EMC_TRAJ_SET_ROTATION +DESCRIPTOR.message_types_by_name['Emc_Traj_Linear_Move'] = _EMC_TRAJ_LINEAR_MOVE +DESCRIPTOR.message_types_by_name['Emc_Traj_Probe'] = _EMC_TRAJ_PROBE +DESCRIPTOR.message_types_by_name['Emc_Traj_Circular_Move'] = _EMC_TRAJ_CIRCULAR_MOVE +DESCRIPTOR.message_types_by_name['Emc_Traj_Rigid_Tap'] = _EMC_TRAJ_RIGID_TAP +DESCRIPTOR.message_types_by_name['Emc_Traj_Set_Term_Cond'] = _EMC_TRAJ_SET_TERM_COND +DESCRIPTOR.message_types_by_name['Emc_Traj_Set_Spindlesync'] = _EMC_TRAJ_SET_SPINDLESYNC +DESCRIPTOR.message_types_by_name['Emc_Traj_Delay'] = _EMC_TRAJ_DELAY +DESCRIPTOR.message_types_by_name['Emc_Spindle_On'] = _EMC_SPINDLE_ON +DESCRIPTOR.message_types_by_name['Emc_Spindle_Speed'] = _EMC_SPINDLE_SPEED +DESCRIPTOR.message_types_by_name['Emc_Spindle_Orient'] = _EMC_SPINDLE_ORIENT +DESCRIPTOR.message_types_by_name['Emc_Spindle_Wait_Orient_Complete'] = _EMC_SPINDLE_WAIT_ORIENT_COMPLETE +DESCRIPTOR.message_types_by_name['Emc_Tool_Set_Offset'] = _EMC_TOOL_SET_OFFSET +DESCRIPTOR.message_types_by_name['Emc_Traj_Set_Offset'] = _EMC_TRAJ_SET_OFFSET +DESCRIPTOR.message_types_by_name['Emc_Tool_Prepare'] = _EMC_TOOL_PREPARE +DESCRIPTOR.message_types_by_name['Emc_Tool_Set_Number'] = _EMC_TOOL_SET_NUMBER +DESCRIPTOR.message_types_by_name['Emc_Traj_Set_Fo_Enable'] = _EMC_TRAJ_SET_FO_ENABLE +DESCRIPTOR.message_types_by_name['Emc_Traj_Set_So_Enable'] = _EMC_TRAJ_SET_SO_ENABLE +DESCRIPTOR.message_types_by_name['Emc_Traj_Set_Fh_Enable'] = _EMC_TRAJ_SET_FH_ENABLE +DESCRIPTOR.message_types_by_name['Emc_Motion_Adaptive'] = _EMC_MOTION_ADAPTIVE +DESCRIPTOR.message_types_by_name['Emc_Operator_Display'] = _EMC_OPERATOR_DISPLAY +DESCRIPTOR.message_types_by_name['Emc_Operator_Text'] = _EMC_OPERATOR_TEXT +DESCRIPTOR.message_types_by_name['Emc_Operator_Error'] = _EMC_OPERATOR_ERROR +DESCRIPTOR.message_types_by_name['Emc_Motion_Set_Dout'] = _EMC_MOTION_SET_DOUT +DESCRIPTOR.message_types_by_name['Emc_Motion_Set_Aout'] = _EMC_MOTION_SET_AOUT +DESCRIPTOR.message_types_by_name['Emc_Aux_Input_Wait'] = _EMC_AUX_INPUT_WAIT +DESCRIPTOR.message_types_by_name['Emc_Exec_Plugin_Ca1l'] = _EMC_EXEC_PLUGIN_CA1L +DESCRIPTOR.message_types_by_name['Emc_Io_Plugin_Call'] = _EMC_IO_PLUGIN_CALL + +Emc_Traj_Set_G5x = _reflection.GeneratedProtocolMessageType('Emc_Traj_Set_G5x', (_message.Message,), dict( + DESCRIPTOR = _EMC_TRAJ_SET_G5X, + __module__ = 'machinetalk.protobuf.canon_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Emc_Traj_Set_G5x) + )) +_sym_db.RegisterMessage(Emc_Traj_Set_G5x) + +Emc_Traj_Set_G92 = _reflection.GeneratedProtocolMessageType('Emc_Traj_Set_G92', (_message.Message,), dict( + DESCRIPTOR = _EMC_TRAJ_SET_G92, + __module__ = 'machinetalk.protobuf.canon_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Emc_Traj_Set_G92) + )) +_sym_db.RegisterMessage(Emc_Traj_Set_G92) + +Emc_Traj_Set_Rotation = _reflection.GeneratedProtocolMessageType('Emc_Traj_Set_Rotation', (_message.Message,), dict( + DESCRIPTOR = _EMC_TRAJ_SET_ROTATION, + __module__ = 'machinetalk.protobuf.canon_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Emc_Traj_Set_Rotation) + )) +_sym_db.RegisterMessage(Emc_Traj_Set_Rotation) + +Emc_Traj_Linear_Move = _reflection.GeneratedProtocolMessageType('Emc_Traj_Linear_Move', (_message.Message,), dict( + DESCRIPTOR = _EMC_TRAJ_LINEAR_MOVE, + __module__ = 'machinetalk.protobuf.canon_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Emc_Traj_Linear_Move) + )) +_sym_db.RegisterMessage(Emc_Traj_Linear_Move) + +Emc_Traj_Probe = _reflection.GeneratedProtocolMessageType('Emc_Traj_Probe', (_message.Message,), dict( + DESCRIPTOR = _EMC_TRAJ_PROBE, + __module__ = 'machinetalk.protobuf.canon_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Emc_Traj_Probe) + )) +_sym_db.RegisterMessage(Emc_Traj_Probe) + +Emc_Traj_Circular_Move = _reflection.GeneratedProtocolMessageType('Emc_Traj_Circular_Move', (_message.Message,), dict( + DESCRIPTOR = _EMC_TRAJ_CIRCULAR_MOVE, + __module__ = 'machinetalk.protobuf.canon_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Emc_Traj_Circular_Move) + )) +_sym_db.RegisterMessage(Emc_Traj_Circular_Move) + +Emc_Traj_Rigid_Tap = _reflection.GeneratedProtocolMessageType('Emc_Traj_Rigid_Tap', (_message.Message,), dict( + DESCRIPTOR = _EMC_TRAJ_RIGID_TAP, + __module__ = 'machinetalk.protobuf.canon_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Emc_Traj_Rigid_Tap) + )) +_sym_db.RegisterMessage(Emc_Traj_Rigid_Tap) + +Emc_Traj_Set_Term_Cond = _reflection.GeneratedProtocolMessageType('Emc_Traj_Set_Term_Cond', (_message.Message,), dict( + DESCRIPTOR = _EMC_TRAJ_SET_TERM_COND, + __module__ = 'machinetalk.protobuf.canon_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Emc_Traj_Set_Term_Cond) + )) +_sym_db.RegisterMessage(Emc_Traj_Set_Term_Cond) + +Emc_Traj_Set_Spindlesync = _reflection.GeneratedProtocolMessageType('Emc_Traj_Set_Spindlesync', (_message.Message,), dict( + DESCRIPTOR = _EMC_TRAJ_SET_SPINDLESYNC, + __module__ = 'machinetalk.protobuf.canon_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Emc_Traj_Set_Spindlesync) + )) +_sym_db.RegisterMessage(Emc_Traj_Set_Spindlesync) + +Emc_Traj_Delay = _reflection.GeneratedProtocolMessageType('Emc_Traj_Delay', (_message.Message,), dict( + DESCRIPTOR = _EMC_TRAJ_DELAY, + __module__ = 'machinetalk.protobuf.canon_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Emc_Traj_Delay) + )) +_sym_db.RegisterMessage(Emc_Traj_Delay) + +Emc_Spindle_On = _reflection.GeneratedProtocolMessageType('Emc_Spindle_On', (_message.Message,), dict( + DESCRIPTOR = _EMC_SPINDLE_ON, + __module__ = 'machinetalk.protobuf.canon_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Emc_Spindle_On) + )) +_sym_db.RegisterMessage(Emc_Spindle_On) + +Emc_Spindle_Speed = _reflection.GeneratedProtocolMessageType('Emc_Spindle_Speed', (_message.Message,), dict( + DESCRIPTOR = _EMC_SPINDLE_SPEED, + __module__ = 'machinetalk.protobuf.canon_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Emc_Spindle_Speed) + )) +_sym_db.RegisterMessage(Emc_Spindle_Speed) + +Emc_Spindle_Orient = _reflection.GeneratedProtocolMessageType('Emc_Spindle_Orient', (_message.Message,), dict( + DESCRIPTOR = _EMC_SPINDLE_ORIENT, + __module__ = 'machinetalk.protobuf.canon_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Emc_Spindle_Orient) + )) +_sym_db.RegisterMessage(Emc_Spindle_Orient) + +Emc_Spindle_Wait_Orient_Complete = _reflection.GeneratedProtocolMessageType('Emc_Spindle_Wait_Orient_Complete', (_message.Message,), dict( + DESCRIPTOR = _EMC_SPINDLE_WAIT_ORIENT_COMPLETE, + __module__ = 'machinetalk.protobuf.canon_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Emc_Spindle_Wait_Orient_Complete) + )) +_sym_db.RegisterMessage(Emc_Spindle_Wait_Orient_Complete) + +Emc_Tool_Set_Offset = _reflection.GeneratedProtocolMessageType('Emc_Tool_Set_Offset', (_message.Message,), dict( + DESCRIPTOR = _EMC_TOOL_SET_OFFSET, + __module__ = 'machinetalk.protobuf.canon_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Emc_Tool_Set_Offset) + )) +_sym_db.RegisterMessage(Emc_Tool_Set_Offset) + +Emc_Traj_Set_Offset = _reflection.GeneratedProtocolMessageType('Emc_Traj_Set_Offset', (_message.Message,), dict( + DESCRIPTOR = _EMC_TRAJ_SET_OFFSET, + __module__ = 'machinetalk.protobuf.canon_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Emc_Traj_Set_Offset) + )) +_sym_db.RegisterMessage(Emc_Traj_Set_Offset) + +Emc_Tool_Prepare = _reflection.GeneratedProtocolMessageType('Emc_Tool_Prepare', (_message.Message,), dict( + DESCRIPTOR = _EMC_TOOL_PREPARE, + __module__ = 'machinetalk.protobuf.canon_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Emc_Tool_Prepare) + )) +_sym_db.RegisterMessage(Emc_Tool_Prepare) + +Emc_Tool_Set_Number = _reflection.GeneratedProtocolMessageType('Emc_Tool_Set_Number', (_message.Message,), dict( + DESCRIPTOR = _EMC_TOOL_SET_NUMBER, + __module__ = 'machinetalk.protobuf.canon_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Emc_Tool_Set_Number) + )) +_sym_db.RegisterMessage(Emc_Tool_Set_Number) + +Emc_Traj_Set_Fo_Enable = _reflection.GeneratedProtocolMessageType('Emc_Traj_Set_Fo_Enable', (_message.Message,), dict( + DESCRIPTOR = _EMC_TRAJ_SET_FO_ENABLE, + __module__ = 'machinetalk.protobuf.canon_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Emc_Traj_Set_Fo_Enable) + )) +_sym_db.RegisterMessage(Emc_Traj_Set_Fo_Enable) + +Emc_Traj_Set_So_Enable = _reflection.GeneratedProtocolMessageType('Emc_Traj_Set_So_Enable', (_message.Message,), dict( + DESCRIPTOR = _EMC_TRAJ_SET_SO_ENABLE, + __module__ = 'machinetalk.protobuf.canon_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Emc_Traj_Set_So_Enable) + )) +_sym_db.RegisterMessage(Emc_Traj_Set_So_Enable) + +Emc_Traj_Set_Fh_Enable = _reflection.GeneratedProtocolMessageType('Emc_Traj_Set_Fh_Enable', (_message.Message,), dict( + DESCRIPTOR = _EMC_TRAJ_SET_FH_ENABLE, + __module__ = 'machinetalk.protobuf.canon_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Emc_Traj_Set_Fh_Enable) + )) +_sym_db.RegisterMessage(Emc_Traj_Set_Fh_Enable) + +Emc_Motion_Adaptive = _reflection.GeneratedProtocolMessageType('Emc_Motion_Adaptive', (_message.Message,), dict( + DESCRIPTOR = _EMC_MOTION_ADAPTIVE, + __module__ = 'machinetalk.protobuf.canon_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Emc_Motion_Adaptive) + )) +_sym_db.RegisterMessage(Emc_Motion_Adaptive) + +Emc_Operator_Display = _reflection.GeneratedProtocolMessageType('Emc_Operator_Display', (_message.Message,), dict( + DESCRIPTOR = _EMC_OPERATOR_DISPLAY, + __module__ = 'machinetalk.protobuf.canon_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Emc_Operator_Display) + )) +_sym_db.RegisterMessage(Emc_Operator_Display) + +Emc_Operator_Text = _reflection.GeneratedProtocolMessageType('Emc_Operator_Text', (_message.Message,), dict( + DESCRIPTOR = _EMC_OPERATOR_TEXT, + __module__ = 'machinetalk.protobuf.canon_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Emc_Operator_Text) + )) +_sym_db.RegisterMessage(Emc_Operator_Text) + +Emc_Operator_Error = _reflection.GeneratedProtocolMessageType('Emc_Operator_Error', (_message.Message,), dict( + DESCRIPTOR = _EMC_OPERATOR_ERROR, + __module__ = 'machinetalk.protobuf.canon_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Emc_Operator_Error) + )) +_sym_db.RegisterMessage(Emc_Operator_Error) + +Emc_Motion_Set_Dout = _reflection.GeneratedProtocolMessageType('Emc_Motion_Set_Dout', (_message.Message,), dict( + DESCRIPTOR = _EMC_MOTION_SET_DOUT, + __module__ = 'machinetalk.protobuf.canon_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Emc_Motion_Set_Dout) + )) +_sym_db.RegisterMessage(Emc_Motion_Set_Dout) + +Emc_Motion_Set_Aout = _reflection.GeneratedProtocolMessageType('Emc_Motion_Set_Aout', (_message.Message,), dict( + DESCRIPTOR = _EMC_MOTION_SET_AOUT, + __module__ = 'machinetalk.protobuf.canon_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Emc_Motion_Set_Aout) + )) +_sym_db.RegisterMessage(Emc_Motion_Set_Aout) + +Emc_Aux_Input_Wait = _reflection.GeneratedProtocolMessageType('Emc_Aux_Input_Wait', (_message.Message,), dict( + DESCRIPTOR = _EMC_AUX_INPUT_WAIT, + __module__ = 'machinetalk.protobuf.canon_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Emc_Aux_Input_Wait) + )) +_sym_db.RegisterMessage(Emc_Aux_Input_Wait) + +Emc_Exec_Plugin_Ca1l = _reflection.GeneratedProtocolMessageType('Emc_Exec_Plugin_Ca1l', (_message.Message,), dict( + DESCRIPTOR = _EMC_EXEC_PLUGIN_CA1L, + __module__ = 'machinetalk.protobuf.canon_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Emc_Exec_Plugin_Ca1l) + )) +_sym_db.RegisterMessage(Emc_Exec_Plugin_Ca1l) + +Emc_Io_Plugin_Call = _reflection.GeneratedProtocolMessageType('Emc_Io_Plugin_Call', (_message.Message,), dict( + DESCRIPTOR = _EMC_IO_PLUGIN_CALL, + __module__ = 'machinetalk.protobuf.canon_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Emc_Io_Plugin_Call) + )) +_sym_db.RegisterMessage(Emc_Io_Plugin_Call) + + +_EMC_TRAJ_SET_G5X.has_options = True +_EMC_TRAJ_SET_G5X._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hd')) +_EMC_TRAJ_SET_G92.has_options = True +_EMC_TRAJ_SET_G92._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002He')) +_EMC_TRAJ_SET_ROTATION.has_options = True +_EMC_TRAJ_SET_ROTATION._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hf')) +_EMC_TRAJ_LINEAR_MOVE.has_options = True +_EMC_TRAJ_LINEAR_MOVE._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hg')) +_EMC_TRAJ_PROBE.has_options = True +_EMC_TRAJ_PROBE._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hh')) +_EMC_TRAJ_CIRCULAR_MOVE.has_options = True +_EMC_TRAJ_CIRCULAR_MOVE._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hi')) +_EMC_TRAJ_RIGID_TAP.has_options = True +_EMC_TRAJ_RIGID_TAP._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hj')) +_EMC_TRAJ_SET_TERM_COND.has_options = True +_EMC_TRAJ_SET_TERM_COND._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hk')) +_EMC_TRAJ_SET_SPINDLESYNC.has_options = True +_EMC_TRAJ_SET_SPINDLESYNC._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hl')) +_EMC_TRAJ_DELAY.has_options = True +_EMC_TRAJ_DELAY._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hm')) +_EMC_SPINDLE_ON.has_options = True +_EMC_SPINDLE_ON._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hn')) +_EMC_SPINDLE_SPEED.has_options = True +_EMC_SPINDLE_SPEED._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Ho')) +_EMC_SPINDLE_ORIENT.has_options = True +_EMC_SPINDLE_ORIENT._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hp')) +_EMC_SPINDLE_WAIT_ORIENT_COMPLETE.has_options = True +_EMC_SPINDLE_WAIT_ORIENT_COMPLETE._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hq')) +_EMC_TOOL_SET_OFFSET.has_options = True +_EMC_TOOL_SET_OFFSET._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hr')) +_EMC_TRAJ_SET_OFFSET.has_options = True +_EMC_TRAJ_SET_OFFSET._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hs')) +_EMC_TOOL_PREPARE.has_options = True +_EMC_TOOL_PREPARE._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Ht')) +_EMC_TOOL_SET_NUMBER.has_options = True +_EMC_TOOL_SET_NUMBER._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hu')) +_EMC_TRAJ_SET_FO_ENABLE.has_options = True +_EMC_TRAJ_SET_FO_ENABLE._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hv')) +_EMC_TRAJ_SET_SO_ENABLE.has_options = True +_EMC_TRAJ_SET_SO_ENABLE._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hw')) +_EMC_TRAJ_SET_FH_ENABLE.has_options = True +_EMC_TRAJ_SET_FH_ENABLE._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hx')) +_EMC_MOTION_ADAPTIVE.has_options = True +_EMC_MOTION_ADAPTIVE._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hy')) +_EMC_OPERATOR_DISPLAY.has_options = True +_EMC_OPERATOR_DISPLAY._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002Hz')) +_EMC_OPERATOR_TEXT.has_options = True +_EMC_OPERATOR_TEXT._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002H{')) +_EMC_OPERATOR_ERROR.has_options = True +_EMC_OPERATOR_ERROR._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002H|')) +_EMC_MOTION_SET_DOUT.has_options = True +_EMC_MOTION_SET_DOUT._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002H}')) +_EMC_MOTION_SET_AOUT.has_options = True +_EMC_MOTION_SET_AOUT._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002H~')) +_EMC_AUX_INPUT_WAIT.has_options = True +_EMC_AUX_INPUT_WAIT._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\002H\177')) +_EMC_EXEC_PLUGIN_CA1L.has_options = True +_EMC_EXEC_PLUGIN_CA1L._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\200\001')) +_EMC_IO_PLUGIN_CALL.has_options = True +_EMC_IO_PLUGIN_CALL._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\201\001')) +# @@protoc_insertion_point(module_scope) diff --git a/python/machinetalk/protobuf/config_pb2.py b/python/machinetalk/protobuf/config_pb2.py new file mode 100644 index 0000000000..612ec3aee0 --- /dev/null +++ b/python/machinetalk/protobuf/config_pb2.py @@ -0,0 +1,462 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: machinetalk/protobuf/config.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf.internal import enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from machinetalk.protobuf import nanopb_pb2 as machinetalk_dot_protobuf_dot_nanopb__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='machinetalk/protobuf/config.proto', + package='machinetalk', + syntax='proto2', + serialized_pb=_b('\n!machinetalk/protobuf/config.proto\x12\x0bmachinetalk\x1a!machinetalk/protobuf/nanopb.proto\"V\n\x04\x46ile\x12\x0c\n\x04name\x18\x01 \x02(\t\x12*\n\x08\x65ncoding\x18\x02 \x02(\x0e\x32\x18.machinetalk.FileContent\x12\x0c\n\x04\x62lob\x18\x03 \x01(\x0c:\x06\x92?\x03H\xc8\x01\"\x95\x01\n\x0b\x41pplication\x12\x0c\n\x04name\x18\x01 \x02(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12*\n\x04type\x18\x03 \x01(\x0e\x32\x1c.machinetalk.ApplicationType\x12\x0e\n\x06weburi\x18\x04 \x01(\t\x12\x1f\n\x04\x66ile\x18\x05 \x03(\x0b\x32\x11.machinetalk.File:\x06\x92?\x03H\xc9\x01\"1\n\nStdoutLine\x12\r\n\x05index\x18\x01 \x02(\x05\x12\x0c\n\x04line\x18\x02 \x01(\t:\x06\x92?\x03H\xca\x01\"Y\n\x0bMachineInfo\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\x14\n\x0cmanufacturer\x18\x02 \x01(\t\x12\r\n\x05model\x18\x03 \x01(\t\x12\x0f\n\x07variant\x18\x04 \x01(\t:\x06\x92?\x03H\xcb\x01\"\xc8\x02\n\x08Launcher\x12\r\n\x05index\x18\x01 \x02(\x05\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12 \n\x05image\x18\x04 \x01(\x0b\x32\x11.machinetalk.File\x12&\n\x04info\x18\x05 \x01(\x0b\x32\x18.machinetalk.MachineInfo\x12\x0f\n\x07running\x18\x06 \x01(\x08\x12\x13\n\x0bterminating\x18\x07 \x01(\x08\x12\x0f\n\x07\x63ommand\x18\x08 \x01(\t\x12\r\n\x05shell\x18\t \x01(\x08\x12\'\n\x06output\x18\n \x03(\x0b\x32\x17.machinetalk.StdoutLine\x12\x12\n\nreturncode\x18\x0b \x01(\x05\x12\x0f\n\x07workdir\x18\x0c \x01(\t\x12\x10\n\x08priority\x18\r \x01(\r\x12\x12\n\nimportance\x18\x0e \x01(\r:\x06\x92?\x03H\xcc\x01*<\n\x0f\x41pplicationType\x12\x0b\n\x07QT5_QML\x10\x01\x12\x0c\n\x08GLADEVCP\x10\x02\x12\x0e\n\nJAVASCRIPT\x10\x03*&\n\x0b\x46ileContent\x12\r\n\tCLEARTEXT\x10\x01\x12\x08\n\x04ZLIB\x10\x02') + , + dependencies=[machinetalk_dot_protobuf_dot_nanopb__pb2.DESCRIPTOR,]) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +_APPLICATIONTYPE = _descriptor.EnumDescriptor( + name='ApplicationType', + full_name='machinetalk.ApplicationType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='QT5_QML', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='GLADEVCP', index=1, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='JAVASCRIPT', index=2, number=3, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=798, + serialized_end=858, +) +_sym_db.RegisterEnumDescriptor(_APPLICATIONTYPE) + +ApplicationType = enum_type_wrapper.EnumTypeWrapper(_APPLICATIONTYPE) +_FILECONTENT = _descriptor.EnumDescriptor( + name='FileContent', + full_name='machinetalk.FileContent', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='CLEARTEXT', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ZLIB', index=1, number=2, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=860, + serialized_end=898, +) +_sym_db.RegisterEnumDescriptor(_FILECONTENT) + +FileContent = enum_type_wrapper.EnumTypeWrapper(_FILECONTENT) +QT5_QML = 1 +GLADEVCP = 2 +JAVASCRIPT = 3 +CLEARTEXT = 1 +ZLIB = 2 + + + +_FILE = _descriptor.Descriptor( + name='File', + full_name='machinetalk.File', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='name', full_name='machinetalk.File.name', index=0, + number=1, type=9, cpp_type=9, label=2, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='encoding', full_name='machinetalk.File.encoding', index=1, + number=2, type=14, cpp_type=8, label=2, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='blob', full_name='machinetalk.File.blob', index=2, + number=3, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\310\001')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=85, + serialized_end=171, +) + + +_APPLICATION = _descriptor.Descriptor( + name='Application', + full_name='machinetalk.Application', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='name', full_name='machinetalk.Application.name', index=0, + number=1, type=9, cpp_type=9, label=2, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='description', full_name='machinetalk.Application.description', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='type', full_name='machinetalk.Application.type', index=2, + number=3, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='weburi', full_name='machinetalk.Application.weburi', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='file', full_name='machinetalk.Application.file', index=4, + number=5, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\311\001')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=174, + serialized_end=323, +) + + +_STDOUTLINE = _descriptor.Descriptor( + name='StdoutLine', + full_name='machinetalk.StdoutLine', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='index', full_name='machinetalk.StdoutLine.index', index=0, + number=1, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='line', full_name='machinetalk.StdoutLine.line', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\312\001')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=325, + serialized_end=374, +) + + +_MACHINEINFO = _descriptor.Descriptor( + name='MachineInfo', + full_name='machinetalk.MachineInfo', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='type', full_name='machinetalk.MachineInfo.type', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='manufacturer', full_name='machinetalk.MachineInfo.manufacturer', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='model', full_name='machinetalk.MachineInfo.model', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='variant', full_name='machinetalk.MachineInfo.variant', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\313\001')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=376, + serialized_end=465, +) + + +_LAUNCHER = _descriptor.Descriptor( + name='Launcher', + full_name='machinetalk.Launcher', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='index', full_name='machinetalk.Launcher.index', index=0, + number=1, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='name', full_name='machinetalk.Launcher.name', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='description', full_name='machinetalk.Launcher.description', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='image', full_name='machinetalk.Launcher.image', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='info', full_name='machinetalk.Launcher.info', index=4, + number=5, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='running', full_name='machinetalk.Launcher.running', index=5, + number=6, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='terminating', full_name='machinetalk.Launcher.terminating', index=6, + number=7, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='command', full_name='machinetalk.Launcher.command', index=7, + number=8, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='shell', full_name='machinetalk.Launcher.shell', index=8, + number=9, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='output', full_name='machinetalk.Launcher.output', index=9, + number=10, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='returncode', full_name='machinetalk.Launcher.returncode', index=10, + number=11, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='workdir', full_name='machinetalk.Launcher.workdir', index=11, + number=12, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='priority', full_name='machinetalk.Launcher.priority', index=12, + number=13, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='importance', full_name='machinetalk.Launcher.importance', index=13, + number=14, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\314\001')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=468, + serialized_end=796, +) + +_FILE.fields_by_name['encoding'].enum_type = _FILECONTENT +_APPLICATION.fields_by_name['type'].enum_type = _APPLICATIONTYPE +_APPLICATION.fields_by_name['file'].message_type = _FILE +_LAUNCHER.fields_by_name['image'].message_type = _FILE +_LAUNCHER.fields_by_name['info'].message_type = _MACHINEINFO +_LAUNCHER.fields_by_name['output'].message_type = _STDOUTLINE +DESCRIPTOR.message_types_by_name['File'] = _FILE +DESCRIPTOR.message_types_by_name['Application'] = _APPLICATION +DESCRIPTOR.message_types_by_name['StdoutLine'] = _STDOUTLINE +DESCRIPTOR.message_types_by_name['MachineInfo'] = _MACHINEINFO +DESCRIPTOR.message_types_by_name['Launcher'] = _LAUNCHER +DESCRIPTOR.enum_types_by_name['ApplicationType'] = _APPLICATIONTYPE +DESCRIPTOR.enum_types_by_name['FileContent'] = _FILECONTENT + +File = _reflection.GeneratedProtocolMessageType('File', (_message.Message,), dict( + DESCRIPTOR = _FILE, + __module__ = 'machinetalk.protobuf.config_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.File) + )) +_sym_db.RegisterMessage(File) + +Application = _reflection.GeneratedProtocolMessageType('Application', (_message.Message,), dict( + DESCRIPTOR = _APPLICATION, + __module__ = 'machinetalk.protobuf.config_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Application) + )) +_sym_db.RegisterMessage(Application) + +StdoutLine = _reflection.GeneratedProtocolMessageType('StdoutLine', (_message.Message,), dict( + DESCRIPTOR = _STDOUTLINE, + __module__ = 'machinetalk.protobuf.config_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.StdoutLine) + )) +_sym_db.RegisterMessage(StdoutLine) + +MachineInfo = _reflection.GeneratedProtocolMessageType('MachineInfo', (_message.Message,), dict( + DESCRIPTOR = _MACHINEINFO, + __module__ = 'machinetalk.protobuf.config_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.MachineInfo) + )) +_sym_db.RegisterMessage(MachineInfo) + +Launcher = _reflection.GeneratedProtocolMessageType('Launcher', (_message.Message,), dict( + DESCRIPTOR = _LAUNCHER, + __module__ = 'machinetalk.protobuf.config_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Launcher) + )) +_sym_db.RegisterMessage(Launcher) + + +_FILE.has_options = True +_FILE._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\310\001')) +_APPLICATION.has_options = True +_APPLICATION._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\311\001')) +_STDOUTLINE.has_options = True +_STDOUTLINE._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\312\001')) +_MACHINEINFO.has_options = True +_MACHINEINFO._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\313\001')) +_LAUNCHER.has_options = True +_LAUNCHER._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\314\001')) +# @@protoc_insertion_point(module_scope) diff --git a/python/machinetalk/protobuf/emcclass_pb2.py b/python/machinetalk/protobuf/emcclass_pb2.py new file mode 100644 index 0000000000..a811a5b4b1 --- /dev/null +++ b/python/machinetalk/protobuf/emcclass_pb2.py @@ -0,0 +1,171 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: machinetalk/protobuf/emcclass.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from machinetalk.protobuf import nanopb_pb2 as machinetalk_dot_protobuf_dot_nanopb__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='machinetalk/protobuf/emcclass.proto', + package='machinetalk', + syntax='proto2', + serialized_pb=_b('\n#machinetalk/protobuf/emcclass.proto\x12\x0bmachinetalk\x1a!machinetalk/protobuf/nanopb.proto\"6\n\x0bPmCartesian\x12\t\n\x01x\x18\n \x01(\x01\x12\t\n\x01y\x18\x14 \x01(\x01\x12\t\n\x01z\x18\x1e \x01(\x01:\x06\x92?\x03H\xac\x02\"{\n\x07\x45mcPose\x12&\n\x04tran\x18\n \x02(\x0b\x32\x18.machinetalk.PmCartesian\x12\t\n\x01\x61\x18\x14 \x01(\x01\x12\t\n\x01\x62\x18\x1e \x01(\x01\x12\t\n\x01\x63\x18( \x01(\x01\x12\t\n\x01u\x18\x32 \x01(\x01\x12\t\n\x01v\x18< \x01(\x01\x12\t\n\x01w\x18\x46 \x01(\x01:\x06\x92?\x03H\xad\x02') + , + dependencies=[machinetalk_dot_protobuf_dot_nanopb__pb2.DESCRIPTOR,]) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + + + + +_PMCARTESIAN = _descriptor.Descriptor( + name='PmCartesian', + full_name='machinetalk.PmCartesian', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='x', full_name='machinetalk.PmCartesian.x', index=0, + number=10, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='y', full_name='machinetalk.PmCartesian.y', index=1, + number=20, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='z', full_name='machinetalk.PmCartesian.z', index=2, + number=30, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\254\002')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=87, + serialized_end=141, +) + + +_EMCPOSE = _descriptor.Descriptor( + name='EmcPose', + full_name='machinetalk.EmcPose', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='tran', full_name='machinetalk.EmcPose.tran', index=0, + number=10, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='a', full_name='machinetalk.EmcPose.a', index=1, + number=20, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='b', full_name='machinetalk.EmcPose.b', index=2, + number=30, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='c', full_name='machinetalk.EmcPose.c', index=3, + number=40, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='u', full_name='machinetalk.EmcPose.u', index=4, + number=50, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='v', full_name='machinetalk.EmcPose.v', index=5, + number=60, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='w', full_name='machinetalk.EmcPose.w', index=6, + number=70, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\255\002')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=143, + serialized_end=266, +) + +_EMCPOSE.fields_by_name['tran'].message_type = _PMCARTESIAN +DESCRIPTOR.message_types_by_name['PmCartesian'] = _PMCARTESIAN +DESCRIPTOR.message_types_by_name['EmcPose'] = _EMCPOSE + +PmCartesian = _reflection.GeneratedProtocolMessageType('PmCartesian', (_message.Message,), dict( + DESCRIPTOR = _PMCARTESIAN, + __module__ = 'machinetalk.protobuf.emcclass_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.PmCartesian) + )) +_sym_db.RegisterMessage(PmCartesian) + +EmcPose = _reflection.GeneratedProtocolMessageType('EmcPose', (_message.Message,), dict( + DESCRIPTOR = _EMCPOSE, + __module__ = 'machinetalk.protobuf.emcclass_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.EmcPose) + )) +_sym_db.RegisterMessage(EmcPose) + + +_PMCARTESIAN.has_options = True +_PMCARTESIAN._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\254\002')) +_EMCPOSE.has_options = True +_EMCPOSE._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\255\002')) +# @@protoc_insertion_point(module_scope) diff --git a/python/machinetalk/protobuf/firmware_pb2.py b/python/machinetalk/protobuf/firmware_pb2.py new file mode 100644 index 0000000000..a35cc52821 --- /dev/null +++ b/python/machinetalk/protobuf/firmware_pb2.py @@ -0,0 +1,169 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: machinetalk/protobuf/firmware.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from machinetalk.protobuf import nanopb_pb2 as machinetalk_dot_protobuf_dot_nanopb__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='machinetalk/protobuf/firmware.proto', + package='machinetalk', + syntax='proto2', + serialized_pb=_b('\n#machinetalk/protobuf/firmware.proto\x12\x0bmachinetalk\x1a!machinetalk/protobuf/nanopb.proto\"6\n\tConnector\x12\x13\n\x04name\x18\x01 \x01(\tB\x05\x92?\x02\x08\x14\x12\x0c\n\x04pins\x18\x02 \x01(\x0f:\x06\x92?\x03H\xfc\x02\"\xc4\x01\n\x08\x46irmware\x12\x18\n\tbuild_sha\x18\x01 \x01(\tB\x05\x92?\x02\x08(\x12\x1f\n\x10\x66pga_part_number\x18\x02 \x01(\tB\x05\x92?\x02\x08\x14\x12\x30\n\tconnector\x18\x03 \x03(\x0b\x32\x16.machinetalk.ConnectorB\x05\x92?\x02\x10\x10\x12\x10\n\x08num_leds\x18\x04 \x01(\x0f\x12\x19\n\nboard_name\x18\x05 \x01(\tB\x05\x92?\x02\x08\x1e\x12\x16\n\x07\x63omment\x18\x06 \x01(\tB\x05\x92?\x02\x08P:\x06\x92?\x03H\x81\x03') + , + dependencies=[machinetalk_dot_protobuf_dot_nanopb__pb2.DESCRIPTOR,]) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + + + + +_CONNECTOR = _descriptor.Descriptor( + name='Connector', + full_name='machinetalk.Connector', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='name', full_name='machinetalk.Connector.name', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\010\024'))), + _descriptor.FieldDescriptor( + name='pins', full_name='machinetalk.Connector.pins', index=1, + number=2, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\374\002')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=87, + serialized_end=141, +) + + +_FIRMWARE = _descriptor.Descriptor( + name='Firmware', + full_name='machinetalk.Firmware', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='build_sha', full_name='machinetalk.Firmware.build_sha', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\010('))), + _descriptor.FieldDescriptor( + name='fpga_part_number', full_name='machinetalk.Firmware.fpga_part_number', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\010\024'))), + _descriptor.FieldDescriptor( + name='connector', full_name='machinetalk.Firmware.connector', index=2, + number=3, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\020\020'))), + _descriptor.FieldDescriptor( + name='num_leds', full_name='machinetalk.Firmware.num_leds', index=3, + number=4, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='board_name', full_name='machinetalk.Firmware.board_name', index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\010\036'))), + _descriptor.FieldDescriptor( + name='comment', full_name='machinetalk.Firmware.comment', index=5, + number=6, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\010P'))), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\201\003')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=144, + serialized_end=340, +) + +_FIRMWARE.fields_by_name['connector'].message_type = _CONNECTOR +DESCRIPTOR.message_types_by_name['Connector'] = _CONNECTOR +DESCRIPTOR.message_types_by_name['Firmware'] = _FIRMWARE + +Connector = _reflection.GeneratedProtocolMessageType('Connector', (_message.Message,), dict( + DESCRIPTOR = _CONNECTOR, + __module__ = 'machinetalk.protobuf.firmware_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Connector) + )) +_sym_db.RegisterMessage(Connector) + +Firmware = _reflection.GeneratedProtocolMessageType('Firmware', (_message.Message,), dict( + DESCRIPTOR = _FIRMWARE, + __module__ = 'machinetalk.protobuf.firmware_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Firmware) + )) +_sym_db.RegisterMessage(Firmware) + + +_CONNECTOR.fields_by_name['name'].has_options = True +_CONNECTOR.fields_by_name['name']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\010\024')) +_CONNECTOR.has_options = True +_CONNECTOR._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\374\002')) +_FIRMWARE.fields_by_name['build_sha'].has_options = True +_FIRMWARE.fields_by_name['build_sha']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\010(')) +_FIRMWARE.fields_by_name['fpga_part_number'].has_options = True +_FIRMWARE.fields_by_name['fpga_part_number']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\010\024')) +_FIRMWARE.fields_by_name['connector'].has_options = True +_FIRMWARE.fields_by_name['connector']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\020\020')) +_FIRMWARE.fields_by_name['board_name'].has_options = True +_FIRMWARE.fields_by_name['board_name']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\010\036')) +_FIRMWARE.fields_by_name['comment'].has_options = True +_FIRMWARE.fields_by_name['comment']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\010P')) +_FIRMWARE.has_options = True +_FIRMWARE._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\201\003')) +# @@protoc_insertion_point(module_scope) diff --git a/python/machinetalk/protobuf/jplan_pb2.py b/python/machinetalk/protobuf/jplan_pb2.py new file mode 100644 index 0000000000..a69507efa7 --- /dev/null +++ b/python/machinetalk/protobuf/jplan_pb2.py @@ -0,0 +1,138 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: machinetalk/protobuf/jplan.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from machinetalk.protobuf import nanopb_pb2 as machinetalk_dot_protobuf_dot_nanopb__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='machinetalk/protobuf/jplan.proto', + package='machinetalk', + syntax='proto2', + serialized_pb=_b('\n machinetalk/protobuf/jplan.proto\x12\x0bmachinetalk\x1a!machinetalk/protobuf/nanopb.proto\"W\n\nJplanJoint\x12\x0f\n\x07pos_cmd\x18\x01 \x01(\x01\x12\x0f\n\x07max_vel\x18\x02 \x01(\x01\x12\x0f\n\x07max_acc\x18\x03 \x01(\x01\x12\x0e\n\x06\x65nable\x18\x04 \x01(\x08:\x06\x92?\x03H\xe0\x02\"E\n\x0cJplanCommand\x12-\n\x05joint\x18\x02 \x03(\x0b\x32\x17.machinetalk.JplanJointB\x05\x92?\x02\x10\n:\x06\x92?\x03H\xe2\x02') + , + dependencies=[machinetalk_dot_protobuf_dot_nanopb__pb2.DESCRIPTOR,]) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + + + + +_JPLANJOINT = _descriptor.Descriptor( + name='JplanJoint', + full_name='machinetalk.JplanJoint', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='pos_cmd', full_name='machinetalk.JplanJoint.pos_cmd', index=0, + number=1, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='max_vel', full_name='machinetalk.JplanJoint.max_vel', index=1, + number=2, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='max_acc', full_name='machinetalk.JplanJoint.max_acc', index=2, + number=3, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='enable', full_name='machinetalk.JplanJoint.enable', index=3, + number=4, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\340\002')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=84, + serialized_end=171, +) + + +_JPLANCOMMAND = _descriptor.Descriptor( + name='JplanCommand', + full_name='machinetalk.JplanCommand', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='joint', full_name='machinetalk.JplanCommand.joint', index=0, + number=2, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\020\n'))), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\342\002')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=173, + serialized_end=242, +) + +_JPLANCOMMAND.fields_by_name['joint'].message_type = _JPLANJOINT +DESCRIPTOR.message_types_by_name['JplanJoint'] = _JPLANJOINT +DESCRIPTOR.message_types_by_name['JplanCommand'] = _JPLANCOMMAND + +JplanJoint = _reflection.GeneratedProtocolMessageType('JplanJoint', (_message.Message,), dict( + DESCRIPTOR = _JPLANJOINT, + __module__ = 'machinetalk.protobuf.jplan_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.JplanJoint) + )) +_sym_db.RegisterMessage(JplanJoint) + +JplanCommand = _reflection.GeneratedProtocolMessageType('JplanCommand', (_message.Message,), dict( + DESCRIPTOR = _JPLANCOMMAND, + __module__ = 'machinetalk.protobuf.jplan_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.JplanCommand) + )) +_sym_db.RegisterMessage(JplanCommand) + + +_JPLANJOINT.has_options = True +_JPLANJOINT._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\340\002')) +_JPLANCOMMAND.fields_by_name['joint'].has_options = True +_JPLANCOMMAND.fields_by_name['joint']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\020\n')) +_JPLANCOMMAND.has_options = True +_JPLANCOMMAND._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\342\002')) +# @@protoc_insertion_point(module_scope) diff --git a/python/machinetalk/protobuf/log_pb2.py b/python/machinetalk/protobuf/log_pb2.py new file mode 100644 index 0000000000..315e59bccb --- /dev/null +++ b/python/machinetalk/protobuf/log_pb2.py @@ -0,0 +1,104 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: machinetalk/protobuf/log.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from machinetalk.protobuf import nanopb_pb2 as machinetalk_dot_protobuf_dot_nanopb__pb2 +from machinetalk.protobuf import types_pb2 as machinetalk_dot_protobuf_dot_types__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='machinetalk/protobuf/log.proto', + package='machinetalk', + syntax='proto2', + serialized_pb=_b('\n\x1emachinetalk/protobuf/log.proto\x12\x0bmachinetalk\x1a!machinetalk/protobuf/nanopb.proto\x1a machinetalk/protobuf/types.proto\"\x8a\x01\n\nLogMessage\x12&\n\x06origin\x18\n \x02(\x0e\x32\x16.machinetalk.MsgOrigin\x12\x0b\n\x03pid\x18\x14 \x02(\x05\x12$\n\x05level\x18\x1e \x02(\x0e\x32\x15.machinetalk.MsgLevel\x12\x0b\n\x03tag\x18( \x02(\t\x12\x0c\n\x04text\x18\x32 \x02(\t:\x06\x92?\x03H\x90\x03') + , + dependencies=[machinetalk_dot_protobuf_dot_nanopb__pb2.DESCRIPTOR,machinetalk_dot_protobuf_dot_types__pb2.DESCRIPTOR,]) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + + + + +_LOGMESSAGE = _descriptor.Descriptor( + name='LogMessage', + full_name='machinetalk.LogMessage', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='origin', full_name='machinetalk.LogMessage.origin', index=0, + number=10, type=14, cpp_type=8, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='pid', full_name='machinetalk.LogMessage.pid', index=1, + number=20, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='level', full_name='machinetalk.LogMessage.level', index=2, + number=30, type=14, cpp_type=8, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='tag', full_name='machinetalk.LogMessage.tag', index=3, + number=40, type=9, cpp_type=9, label=2, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='text', full_name='machinetalk.LogMessage.text', index=4, + number=50, type=9, cpp_type=9, label=2, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\220\003')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=117, + serialized_end=255, +) + +_LOGMESSAGE.fields_by_name['origin'].enum_type = machinetalk_dot_protobuf_dot_types__pb2._MSGORIGIN +_LOGMESSAGE.fields_by_name['level'].enum_type = machinetalk_dot_protobuf_dot_types__pb2._MSGLEVEL +DESCRIPTOR.message_types_by_name['LogMessage'] = _LOGMESSAGE + +LogMessage = _reflection.GeneratedProtocolMessageType('LogMessage', (_message.Message,), dict( + DESCRIPTOR = _LOGMESSAGE, + __module__ = 'machinetalk.protobuf.log_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.LogMessage) + )) +_sym_db.RegisterMessage(LogMessage) + + +_LOGMESSAGE.has_options = True +_LOGMESSAGE._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\220\003')) +# @@protoc_insertion_point(module_scope) diff --git a/python/machinetalk/protobuf/message_pb2.py b/python/machinetalk/protobuf/message_pb2.py new file mode 100644 index 0000000000..30c22ee003 --- /dev/null +++ b/python/machinetalk/protobuf/message_pb2.py @@ -0,0 +1,910 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: machinetalk/protobuf/message.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from machinetalk.protobuf import nanopb_pb2 as machinetalk_dot_protobuf_dot_nanopb__pb2 +from machinetalk.protobuf import types_pb2 as machinetalk_dot_protobuf_dot_types__pb2 +from machinetalk.protobuf import object_pb2 as machinetalk_dot_protobuf_dot_object__pb2 +from machinetalk.protobuf import log_pb2 as machinetalk_dot_protobuf_dot_log__pb2 +from machinetalk.protobuf import motcmds_pb2 as machinetalk_dot_protobuf_dot_motcmds__pb2 +from machinetalk.protobuf import task_pb2 as machinetalk_dot_protobuf_dot_task__pb2 +from machinetalk.protobuf import canon_pb2 as machinetalk_dot_protobuf_dot_canon__pb2 +from machinetalk.protobuf import value_pb2 as machinetalk_dot_protobuf_dot_value__pb2 +from machinetalk.protobuf import rtapicommand_pb2 as machinetalk_dot_protobuf_dot_rtapicommand__pb2 +from machinetalk.protobuf import rtapi_message_pb2 as machinetalk_dot_protobuf_dot_rtapi__message__pb2 +from machinetalk.protobuf import config_pb2 as machinetalk_dot_protobuf_dot_config__pb2 +from machinetalk.protobuf import preview_pb2 as machinetalk_dot_protobuf_dot_preview__pb2 +from machinetalk.protobuf import status_pb2 as machinetalk_dot_protobuf_dot_status__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='machinetalk/protobuf/message.proto', + package='machinetalk', + syntax='proto2', + serialized_pb=_b('\n\"machinetalk/protobuf/message.proto\x12\x0bmachinetalk\x1a!machinetalk/protobuf/nanopb.proto\x1a machinetalk/protobuf/types.proto\x1a!machinetalk/protobuf/object.proto\x1a\x1emachinetalk/protobuf/log.proto\x1a\"machinetalk/protobuf/motcmds.proto\x1a\x1fmachinetalk/protobuf/task.proto\x1a machinetalk/protobuf/canon.proto\x1a machinetalk/protobuf/value.proto\x1a\'machinetalk/protobuf/rtapicommand.proto\x1a(machinetalk/protobuf/rtapi_message.proto\x1a!machinetalk/protobuf/config.proto\x1a\"machinetalk/protobuf/preview.proto\x1a!machinetalk/protobuf/status.proto\"\xed\"\n\tContainer\x12(\n\x04type\x18\x01 \x02(\x0e\x32\x1a.machinetalk.ContainerType\x12\x0b\n\x03tsc\x18\x07 \x01(\x10\x12,\n\x07preview\x18\x08 \x03(\x0b\x32\x14.machinetalk.PreviewB\x05\x92?\x02\x18\x03\x12*\n\x06motcmd\x18\t \x01(\x0b\x32\x1a.machinetalk.MotionCommand\x12*\n\x07motstat\x18\n \x01(\x0b\x32\x19.machinetalk.MotionStatus\x12\x1c\n\rlegacy_motcmd\x18\x0b \x01(\x0c\x42\x05\x92?\x02\x18\x03\x12\x1d\n\x0elegacy_motstat\x18\x0c \x01(\x0c\x42\x05\x92?\x02\x18\x03\x12\x31\n\rrtapi_message\x18\r \x01(\x0b\x32\x1a.machinetalk.RTAPI_Message\x12\x31\n\ntask_reply\x18\x0e \x01(\x0b\x32\x16.machinetalk.TaskReplyB\x05\x92?\x02\x18\x03\x12\x30\n\rticket_update\x18\x0f \x01(\x0b\x32\x19.machinetalk.TicketUpdate\x12\x15\n\x06syslog\x18\x12 \x01(\x0c\x42\x05\x92?\x02\x18\x03\x12\x19\n\nlegacy_nml\x18\x13 \x01(\x0c\x42\x05\x92?\x02\x18\x03\x12\x1f\n\x10legacy_motconfig\x18\x14 \x01(\x0c\x42\x05\x92?\x02\x18\x03\x12\x0e\n\x06tv_sec\x18\x15 \x01(\x05\x12\x0f\n\x07tv_nsec\x18\x16 \x01(\x05\x12\r\n\x05topic\x18\x17 \x01(\t\x12\x16\n\x0ereply_required\x18\x18 \x01(\x08\x12>\n\x0cinterp_state\x18\x19 \x01(\x0e\x32!.machinetalk.InterpreterStateTypeB\x05\x92?\x02\x18\x03\x12\x13\n\x0binterp_name\x18\x1a \x01(\t\x12\x0c\n\x04rsvp\x18\x1e \x01(\x05\x12/\n\x0bin_reply_to\x18! \x01(\x0e\x32\x1a.machinetalk.ContainerType\x12+\n\nrcs_status\x18# \x01(\x0e\x32\x17.machinetalk.RCS_STATUS\x12\'\n\x06status\x18( \x01(\x0e\x32\x17.machinetalk.StatusType\x12\x0e\n\x06serial\x18- \x01(\x05\x12\x14\n\x0creply_serial\x18\x32 \x01(\x05\x12\x0e\n\x06ticket\x18\x37 \x01(\x05\x12\x14\n\x0creply_ticket\x18< \x01(\x05\x12\x10\n\x08sequence\x18> \x01(\x05\x12\x0e\n\x06\x63redit\x18\x41 \x01(\x05\x12\x13\n\x0bline_number\x18\x42 \x01(\x05\x12\x13\n\x04name\x18\x43 \x01(\tB\x05\x92?\x02\x18\x03\x12\x0c\n\x04note\x18\x44 \x03(\t\x12\x0f\n\x07retcode\x18\x45 \x01(\x05\x12\x13\n\x04uuid\x18H \x01(\x0c\x42\x05\x92?\x02\x18\x03\x12\r\n\x05trace\x18K \x01(\x08\x12\x10\n\x08instance\x18M \x01(\x05\x12(\n\x05value\x18U \x03(\x0b\x32\x12.machinetalk.ValueB\x05\x92?\x02\x18\x03\x12\x32\n\x08rtapicmd\x18V \x01(\x0b\x32\x19.machinetalk.RTAPICommandB\x05\x92?\x02\x18\x03\x12\x45\n\x14service_announcement\x18X \x03(\x0b\x32 .machinetalk.ServiceAnnouncementB\x05\x92?\x02\x18\x03\x12+\n\x04\x63omp\x18\x64 \x03(\x0b\x32\x16.machinetalk.ComponentB\x05\x92?\x02\x18\x03\x12$\n\x03pin\x18\x02 \x03(\x0b\x32\x10.machinetalk.PinB\x05\x92?\x02\x18\x03\x12*\n\x06signal\x18\x03 \x03(\x0b\x32\x13.machinetalk.SignalB\x05\x92?\x02\x18\x03\x12(\n\x05param\x18g \x03(\x0b\x32\x12.machinetalk.ParamB\x05\x92?\x02\x18\x03\x12*\n\x06thread\x18h \x03(\x0b\x32\x13.machinetalk.ThreadB\x05\x92?\x02\x18\x03\x12&\n\x04ring\x18i \x03(\x0b\x32\x11.machinetalk.RingB\x05\x92?\x02\x18\x03\x12(\n\x05group\x18j \x03(\x0b\x32\x12.machinetalk.GroupB\x05\x92?\x02\x18\x03\x12*\n\x06member\x18k \x03(\x0b\x32\x13.machinetalk.MemberB\x05\x92?\x02\x18\x03\x12.\n\x08\x66unction\x18l \x03(\x0b\x32\x15.machinetalk.FunctionB\x05\x92?\x02\x18\x03\x12\x37\n\x07pparams\x18m \x01(\x0b\x32\x1f.machinetalk.ProtocolParametersB\x05\x92?\x02\x18\x03\x12*\n\x06vtable\x18n \x03(\x0b\x32\x13.machinetalk.VtableB\x05\x92?\x02\x18\x03\x12&\n\x04inst\x18o \x03(\x0b\x32\x11.machinetalk.InstB\x05\x92?\x02\x18\x03\x12,\n\x03\x61pp\x18x \x03(\x0b\x32\x18.machinetalk.ApplicationB\x05\x92?\x02\x18\x03\x12/\n\x08launcher\x18\x82\x01 \x03(\x0b\x32\x15.machinetalk.LauncherB\x05\x92?\x02\x18\x03\x12\x15\n\x05index\x18\x83\x01 \x01(\x05\x42\x05\x92?\x02\x18\x03\x12\x33\n\x0blog_message\x18W \x01(\x0b\x32\x17.machinetalk.LogMessageB\x05\x92?\x02\x18\x03\x12\x37\n\ttpexecute\x18\xc8\x01 \x01(\x0b\x32\x1c.machinetalk.TaskPlanExecuteB\x05\x92?\x02\x18\x03\x12?\n\rtpblockdelete\x18\xc9\x01 \x01(\x0b\x32 .machinetalk.TaskPlanBlockDeleteB\x05\x92?\x02\x18\x03\x12\x41\n\x0etpoptionalstop\x18\xca\x01 \x01(\x0b\x32!.machinetalk.TaskPlanOptionalStopB\x05\x92?\x02\x18\x03\x12\x31\n\x06tpopen\x18\xcb\x01 \x01(\x0b\x32\x19.machinetalk.TaskPlanOpenB\x05\x92?\x02\x18\x03\x12:\n\x0etaskplan_reply\x18\xd2\x01 \x01(\x0b\x32\x1a.machinetalk.TaskPlanReplyB\x05\x92?\x02\x18\x03\x12\x34\n\x0ctraj_set_g5x\x18\xac\x02 \x01(\x0b\x32\x1d.machinetalk.Emc_Traj_Set_G5x\x12\x34\n\x0ctraj_set_g92\x18\xb6\x02 \x01(\x0b\x32\x1d.machinetalk.Emc_Traj_Set_G92\x12>\n\x11traj_set_rotation\x18\xc0\x02 \x01(\x0b\x32\".machinetalk.Emc_Traj_Set_Rotation\x12<\n\x10traj_linear_move\x18\xca\x02 \x01(\x0b\x32!.machinetalk.Emc_Traj_Linear_Move\x12\x30\n\ntraj_probe\x18\xd4\x02 \x01(\x0b\x32\x1b.machinetalk.Emc_Traj_Probe\x12@\n\x12traj_circular_move\x18\xde\x02 \x01(\x0b\x32#.machinetalk.Emc_Traj_Circular_Move\x12\x38\n\x0etraj_rigid_tap\x18\xe8\x02 \x01(\x0b\x32\x1f.machinetalk.Emc_Traj_Rigid_Tap\x12@\n\x12traj_set_term_cond\x18\xf2\x02 \x01(\x0b\x32#.machinetalk.Emc_Traj_Set_Term_Cond\x12\x44\n\x14traj_set_spindlesync\x18\xfc\x02 \x01(\x0b\x32%.machinetalk.Emc_Traj_Set_Spindlesync\x12\x30\n\ntraj_delay\x18\x86\x03 \x01(\x0b\x32\x1b.machinetalk.Emc_Traj_Delay\x12\x30\n\nspindle_on\x18\x90\x03 \x01(\x0b\x32\x1b.machinetalk.Emc_Spindle_On\x12\x36\n\rspindle_speed\x18\x9a\x03 \x01(\x0b\x32\x1e.machinetalk.Emc_Spindle_Speed\x12\x38\n\x0espindle_orient\x18\xa4\x03 \x01(\x0b\x32\x1f.machinetalk.Emc_Spindle_Orient\x12T\n\x1cspindle_wait_orient_complete\x18\xae\x03 \x01(\x0b\x32-.machinetalk.Emc_Spindle_Wait_Orient_Complete\x12\x39\n\x0etool_set_offet\x18\xb8\x03 \x01(\x0b\x32 .machinetalk.Emc_Tool_Set_Offset\x12:\n\x0ftraj_set_offset\x18\xc2\x03 \x01(\x0b\x32 .machinetalk.Emc_Traj_Set_Offset\x12\x34\n\x0ctool_prepare\x18\xcc\x03 \x01(\x0b\x32\x1d.machinetalk.Emc_Tool_Prepare\x12:\n\x0ftool_set_number\x18\xd6\x03 \x01(\x0b\x32 .machinetalk.Emc_Tool_Set_Number\x12@\n\x12traj_set_fo_enable\x18\xe0\x03 \x01(\x0b\x32#.machinetalk.Emc_Traj_Set_Fo_Enable\x12@\n\x12traj_set_so_enable\x18\xea\x03 \x01(\x0b\x32#.machinetalk.Emc_Traj_Set_So_Enable\x12@\n\x12traj_set_fh_enable\x18\xf4\x03 \x01(\x0b\x32#.machinetalk.Emc_Traj_Set_Fh_Enable\x12:\n\x0fmotion_adaptive\x18\xfe\x03 \x01(\x0b\x32 .machinetalk.Emc_Motion_Adaptive\x12<\n\x10operator_display\x18\x88\x04 \x01(\x0b\x32!.machinetalk.Emc_Operator_Display\x12\x36\n\roperator_text\x18\x92\x04 \x01(\x0b\x32\x1e.machinetalk.Emc_Operator_Text\x12\x38\n\x0eoperator_error\x18\x9c\x04 \x01(\x0b\x32\x1f.machinetalk.Emc_Operator_Error\x12:\n\x0fmotion_set_dout\x18\xa6\x04 \x01(\x0b\x32 .machinetalk.Emc_Motion_Set_Dout\x12:\n\x0fmotion_set_aout\x18\xb0\x04 \x01(\x0b\x32 .machinetalk.Emc_Motion_Set_Aout\x12\x38\n\x0e\x61ux_input_wait\x18\xba\x04 \x01(\x0b\x32\x1f.machinetalk.Emc_Aux_Input_Wait\x12<\n\x10\x65xec_plugin_call\x18\xc4\x04 \x01(\x0b\x32!.machinetalk.Emc_Exec_Plugin_Ca1l\x12\x38\n\x0eio_plugin_call\x18\xce\x04 \x01(\x0b\x32\x1f.machinetalk.Emc_Io_Plugin_Call\x12?\n\x11\x65mc_status_config\x18\xd8\x04 \x01(\x0b\x32\x1c.machinetalk.EmcStatusConfigB\x05\x92?\x02\x18\x03\x12?\n\x11\x65mc_status_motion\x18\xd9\x04 \x01(\x0b\x32\x1c.machinetalk.EmcStatusMotionB\x05\x92?\x02\x18\x03\x12\x37\n\remc_status_io\x18\xda\x04 \x01(\x0b\x32\x18.machinetalk.EmcStatusIoB\x05\x92?\x02\x18\x03\x12;\n\x0f\x65mc_status_task\x18\xdb\x04 \x01(\x0b\x32\x1a.machinetalk.EmcStatusTaskB\x05\x92?\x02\x18\x03\x12?\n\x11\x65mc_status_interp\x18\xdc\x04 \x01(\x0b\x32\x1c.machinetalk.EmcStatusInterpB\x05\x92?\x02\x18\x03\x12\x37\n\remc_status_ui\x18\xdd\x04 \x01(\x0b\x32\x18.machinetalk.EmcStatusUIB\x05\x92?\x02\x18\x03\x12\x45\n\x12\x65mc_command_params\x18\xe2\x04 \x01(\x0b\x32!.machinetalk.EmcCommandParametersB\x05\x92?\x02\x18\x03:\x06\x92?\x03H\xf4\x03') + , + dependencies=[machinetalk_dot_protobuf_dot_nanopb__pb2.DESCRIPTOR,machinetalk_dot_protobuf_dot_types__pb2.DESCRIPTOR,machinetalk_dot_protobuf_dot_object__pb2.DESCRIPTOR,machinetalk_dot_protobuf_dot_log__pb2.DESCRIPTOR,machinetalk_dot_protobuf_dot_motcmds__pb2.DESCRIPTOR,machinetalk_dot_protobuf_dot_task__pb2.DESCRIPTOR,machinetalk_dot_protobuf_dot_canon__pb2.DESCRIPTOR,machinetalk_dot_protobuf_dot_value__pb2.DESCRIPTOR,machinetalk_dot_protobuf_dot_rtapicommand__pb2.DESCRIPTOR,machinetalk_dot_protobuf_dot_rtapi__message__pb2.DESCRIPTOR,machinetalk_dot_protobuf_dot_config__pb2.DESCRIPTOR,machinetalk_dot_protobuf_dot_preview__pb2.DESCRIPTOR,machinetalk_dot_protobuf_dot_status__pb2.DESCRIPTOR,]) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + + + + +_CONTAINER = _descriptor.Descriptor( + name='Container', + full_name='machinetalk.Container', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='type', full_name='machinetalk.Container.type', index=0, + number=1, type=14, cpp_type=8, label=2, + has_default_value=False, default_value=2, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='tsc', full_name='machinetalk.Container.tsc', index=1, + number=7, type=16, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='preview', full_name='machinetalk.Container.preview', index=2, + number=8, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='motcmd', full_name='machinetalk.Container.motcmd', index=3, + number=9, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='motstat', full_name='machinetalk.Container.motstat', index=4, + number=10, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='legacy_motcmd', full_name='machinetalk.Container.legacy_motcmd', index=5, + number=11, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='legacy_motstat', full_name='machinetalk.Container.legacy_motstat', index=6, + number=12, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='rtapi_message', full_name='machinetalk.Container.rtapi_message', index=7, + number=13, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='task_reply', full_name='machinetalk.Container.task_reply', index=8, + number=14, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='ticket_update', full_name='machinetalk.Container.ticket_update', index=9, + number=15, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='syslog', full_name='machinetalk.Container.syslog', index=10, + number=18, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='legacy_nml', full_name='machinetalk.Container.legacy_nml', index=11, + number=19, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='legacy_motconfig', full_name='machinetalk.Container.legacy_motconfig', index=12, + number=20, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='tv_sec', full_name='machinetalk.Container.tv_sec', index=13, + number=21, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='tv_nsec', full_name='machinetalk.Container.tv_nsec', index=14, + number=22, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='topic', full_name='machinetalk.Container.topic', index=15, + number=23, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='reply_required', full_name='machinetalk.Container.reply_required', index=16, + number=24, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='interp_state', full_name='machinetalk.Container.interp_state', index=17, + number=25, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='interp_name', full_name='machinetalk.Container.interp_name', index=18, + number=26, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='rsvp', full_name='machinetalk.Container.rsvp', index=19, + number=30, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='in_reply_to', full_name='machinetalk.Container.in_reply_to', index=20, + number=33, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=2, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='rcs_status', full_name='machinetalk.Container.rcs_status', index=21, + number=35, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=-1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='status', full_name='machinetalk.Container.status', index=22, + number=40, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='serial', full_name='machinetalk.Container.serial', index=23, + number=45, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='reply_serial', full_name='machinetalk.Container.reply_serial', index=24, + number=50, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='ticket', full_name='machinetalk.Container.ticket', index=25, + number=55, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='reply_ticket', full_name='machinetalk.Container.reply_ticket', index=26, + number=60, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='sequence', full_name='machinetalk.Container.sequence', index=27, + number=62, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='credit', full_name='machinetalk.Container.credit', index=28, + number=65, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='line_number', full_name='machinetalk.Container.line_number', index=29, + number=66, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='name', full_name='machinetalk.Container.name', index=30, + number=67, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='note', full_name='machinetalk.Container.note', index=31, + number=68, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='retcode', full_name='machinetalk.Container.retcode', index=32, + number=69, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='uuid', full_name='machinetalk.Container.uuid', index=33, + number=72, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='trace', full_name='machinetalk.Container.trace', index=34, + number=75, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='instance', full_name='machinetalk.Container.instance', index=35, + number=77, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='value', full_name='machinetalk.Container.value', index=36, + number=85, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='rtapicmd', full_name='machinetalk.Container.rtapicmd', index=37, + number=86, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='service_announcement', full_name='machinetalk.Container.service_announcement', index=38, + number=88, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='comp', full_name='machinetalk.Container.comp', index=39, + number=100, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='pin', full_name='machinetalk.Container.pin', index=40, + number=2, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='signal', full_name='machinetalk.Container.signal', index=41, + number=3, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='param', full_name='machinetalk.Container.param', index=42, + number=103, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='thread', full_name='machinetalk.Container.thread', index=43, + number=104, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='ring', full_name='machinetalk.Container.ring', index=44, + number=105, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='group', full_name='machinetalk.Container.group', index=45, + number=106, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='member', full_name='machinetalk.Container.member', index=46, + number=107, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='function', full_name='machinetalk.Container.function', index=47, + number=108, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='pparams', full_name='machinetalk.Container.pparams', index=48, + number=109, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='vtable', full_name='machinetalk.Container.vtable', index=49, + number=110, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='inst', full_name='machinetalk.Container.inst', index=50, + number=111, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='app', full_name='machinetalk.Container.app', index=51, + number=120, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='launcher', full_name='machinetalk.Container.launcher', index=52, + number=130, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='index', full_name='machinetalk.Container.index', index=53, + number=131, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='log_message', full_name='machinetalk.Container.log_message', index=54, + number=87, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='tpexecute', full_name='machinetalk.Container.tpexecute', index=55, + number=200, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='tpblockdelete', full_name='machinetalk.Container.tpblockdelete', index=56, + number=201, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='tpoptionalstop', full_name='machinetalk.Container.tpoptionalstop', index=57, + number=202, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='tpopen', full_name='machinetalk.Container.tpopen', index=58, + number=203, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='taskplan_reply', full_name='machinetalk.Container.taskplan_reply', index=59, + number=210, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='traj_set_g5x', full_name='machinetalk.Container.traj_set_g5x', index=60, + number=300, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='traj_set_g92', full_name='machinetalk.Container.traj_set_g92', index=61, + number=310, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='traj_set_rotation', full_name='machinetalk.Container.traj_set_rotation', index=62, + number=320, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='traj_linear_move', full_name='machinetalk.Container.traj_linear_move', index=63, + number=330, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='traj_probe', full_name='machinetalk.Container.traj_probe', index=64, + number=340, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='traj_circular_move', full_name='machinetalk.Container.traj_circular_move', index=65, + number=350, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='traj_rigid_tap', full_name='machinetalk.Container.traj_rigid_tap', index=66, + number=360, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='traj_set_term_cond', full_name='machinetalk.Container.traj_set_term_cond', index=67, + number=370, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='traj_set_spindlesync', full_name='machinetalk.Container.traj_set_spindlesync', index=68, + number=380, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='traj_delay', full_name='machinetalk.Container.traj_delay', index=69, + number=390, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='spindle_on', full_name='machinetalk.Container.spindle_on', index=70, + number=400, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='spindle_speed', full_name='machinetalk.Container.spindle_speed', index=71, + number=410, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='spindle_orient', full_name='machinetalk.Container.spindle_orient', index=72, + number=420, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='spindle_wait_orient_complete', full_name='machinetalk.Container.spindle_wait_orient_complete', index=73, + number=430, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='tool_set_offet', full_name='machinetalk.Container.tool_set_offet', index=74, + number=440, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='traj_set_offset', full_name='machinetalk.Container.traj_set_offset', index=75, + number=450, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='tool_prepare', full_name='machinetalk.Container.tool_prepare', index=76, + number=460, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='tool_set_number', full_name='machinetalk.Container.tool_set_number', index=77, + number=470, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='traj_set_fo_enable', full_name='machinetalk.Container.traj_set_fo_enable', index=78, + number=480, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='traj_set_so_enable', full_name='machinetalk.Container.traj_set_so_enable', index=79, + number=490, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='traj_set_fh_enable', full_name='machinetalk.Container.traj_set_fh_enable', index=80, + number=500, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='motion_adaptive', full_name='machinetalk.Container.motion_adaptive', index=81, + number=510, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='operator_display', full_name='machinetalk.Container.operator_display', index=82, + number=520, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='operator_text', full_name='machinetalk.Container.operator_text', index=83, + number=530, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='operator_error', full_name='machinetalk.Container.operator_error', index=84, + number=540, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='motion_set_dout', full_name='machinetalk.Container.motion_set_dout', index=85, + number=550, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='motion_set_aout', full_name='machinetalk.Container.motion_set_aout', index=86, + number=560, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='aux_input_wait', full_name='machinetalk.Container.aux_input_wait', index=87, + number=570, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='exec_plugin_call', full_name='machinetalk.Container.exec_plugin_call', index=88, + number=580, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='io_plugin_call', full_name='machinetalk.Container.io_plugin_call', index=89, + number=590, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='emc_status_config', full_name='machinetalk.Container.emc_status_config', index=90, + number=600, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='emc_status_motion', full_name='machinetalk.Container.emc_status_motion', index=91, + number=601, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='emc_status_io', full_name='machinetalk.Container.emc_status_io', index=92, + number=602, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='emc_status_task', full_name='machinetalk.Container.emc_status_task', index=93, + number=603, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='emc_status_interp', full_name='machinetalk.Container.emc_status_interp', index=94, + number=604, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='emc_status_ui', full_name='machinetalk.Container.emc_status_ui', index=95, + number=605, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + _descriptor.FieldDescriptor( + name='emc_command_params', full_name='machinetalk.Container.emc_command_params', index=96, + number=610, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003'))), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\364\003')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=514, + serialized_end=4975, +) + +_CONTAINER.fields_by_name['type'].enum_type = machinetalk_dot_protobuf_dot_types__pb2._CONTAINERTYPE +_CONTAINER.fields_by_name['preview'].message_type = machinetalk_dot_protobuf_dot_preview__pb2._PREVIEW +_CONTAINER.fields_by_name['motcmd'].message_type = machinetalk_dot_protobuf_dot_motcmds__pb2._MOTIONCOMMAND +_CONTAINER.fields_by_name['motstat'].message_type = machinetalk_dot_protobuf_dot_motcmds__pb2._MOTIONSTATUS +_CONTAINER.fields_by_name['rtapi_message'].message_type = machinetalk_dot_protobuf_dot_rtapi__message__pb2._RTAPI_MESSAGE +_CONTAINER.fields_by_name['task_reply'].message_type = machinetalk_dot_protobuf_dot_task__pb2._TASKREPLY +_CONTAINER.fields_by_name['ticket_update'].message_type = machinetalk_dot_protobuf_dot_task__pb2._TICKETUPDATE +_CONTAINER.fields_by_name['interp_state'].enum_type = machinetalk_dot_protobuf_dot_types__pb2._INTERPRETERSTATETYPE +_CONTAINER.fields_by_name['in_reply_to'].enum_type = machinetalk_dot_protobuf_dot_types__pb2._CONTAINERTYPE +_CONTAINER.fields_by_name['rcs_status'].enum_type = machinetalk_dot_protobuf_dot_types__pb2._RCS_STATUS +_CONTAINER.fields_by_name['status'].enum_type = machinetalk_dot_protobuf_dot_types__pb2._STATUSTYPE +_CONTAINER.fields_by_name['value'].message_type = machinetalk_dot_protobuf_dot_value__pb2._VALUE +_CONTAINER.fields_by_name['rtapicmd'].message_type = machinetalk_dot_protobuf_dot_rtapicommand__pb2._RTAPICOMMAND +_CONTAINER.fields_by_name['service_announcement'].message_type = machinetalk_dot_protobuf_dot_object__pb2._SERVICEANNOUNCEMENT +_CONTAINER.fields_by_name['comp'].message_type = machinetalk_dot_protobuf_dot_object__pb2._COMPONENT +_CONTAINER.fields_by_name['pin'].message_type = machinetalk_dot_protobuf_dot_object__pb2._PIN +_CONTAINER.fields_by_name['signal'].message_type = machinetalk_dot_protobuf_dot_object__pb2._SIGNAL +_CONTAINER.fields_by_name['param'].message_type = machinetalk_dot_protobuf_dot_object__pb2._PARAM +_CONTAINER.fields_by_name['thread'].message_type = machinetalk_dot_protobuf_dot_object__pb2._THREAD +_CONTAINER.fields_by_name['ring'].message_type = machinetalk_dot_protobuf_dot_object__pb2._RING +_CONTAINER.fields_by_name['group'].message_type = machinetalk_dot_protobuf_dot_object__pb2._GROUP +_CONTAINER.fields_by_name['member'].message_type = machinetalk_dot_protobuf_dot_object__pb2._MEMBER +_CONTAINER.fields_by_name['function'].message_type = machinetalk_dot_protobuf_dot_object__pb2._FUNCTION +_CONTAINER.fields_by_name['pparams'].message_type = machinetalk_dot_protobuf_dot_object__pb2._PROTOCOLPARAMETERS +_CONTAINER.fields_by_name['vtable'].message_type = machinetalk_dot_protobuf_dot_object__pb2._VTABLE +_CONTAINER.fields_by_name['inst'].message_type = machinetalk_dot_protobuf_dot_object__pb2._INST +_CONTAINER.fields_by_name['app'].message_type = machinetalk_dot_protobuf_dot_config__pb2._APPLICATION +_CONTAINER.fields_by_name['launcher'].message_type = machinetalk_dot_protobuf_dot_config__pb2._LAUNCHER +_CONTAINER.fields_by_name['log_message'].message_type = machinetalk_dot_protobuf_dot_log__pb2._LOGMESSAGE +_CONTAINER.fields_by_name['tpexecute'].message_type = machinetalk_dot_protobuf_dot_task__pb2._TASKPLANEXECUTE +_CONTAINER.fields_by_name['tpblockdelete'].message_type = machinetalk_dot_protobuf_dot_task__pb2._TASKPLANBLOCKDELETE +_CONTAINER.fields_by_name['tpoptionalstop'].message_type = machinetalk_dot_protobuf_dot_task__pb2._TASKPLANOPTIONALSTOP +_CONTAINER.fields_by_name['tpopen'].message_type = machinetalk_dot_protobuf_dot_task__pb2._TASKPLANOPEN +_CONTAINER.fields_by_name['taskplan_reply'].message_type = machinetalk_dot_protobuf_dot_task__pb2._TASKPLANREPLY +_CONTAINER.fields_by_name['traj_set_g5x'].message_type = machinetalk_dot_protobuf_dot_canon__pb2._EMC_TRAJ_SET_G5X +_CONTAINER.fields_by_name['traj_set_g92'].message_type = machinetalk_dot_protobuf_dot_canon__pb2._EMC_TRAJ_SET_G92 +_CONTAINER.fields_by_name['traj_set_rotation'].message_type = machinetalk_dot_protobuf_dot_canon__pb2._EMC_TRAJ_SET_ROTATION +_CONTAINER.fields_by_name['traj_linear_move'].message_type = machinetalk_dot_protobuf_dot_canon__pb2._EMC_TRAJ_LINEAR_MOVE +_CONTAINER.fields_by_name['traj_probe'].message_type = machinetalk_dot_protobuf_dot_canon__pb2._EMC_TRAJ_PROBE +_CONTAINER.fields_by_name['traj_circular_move'].message_type = machinetalk_dot_protobuf_dot_canon__pb2._EMC_TRAJ_CIRCULAR_MOVE +_CONTAINER.fields_by_name['traj_rigid_tap'].message_type = machinetalk_dot_protobuf_dot_canon__pb2._EMC_TRAJ_RIGID_TAP +_CONTAINER.fields_by_name['traj_set_term_cond'].message_type = machinetalk_dot_protobuf_dot_canon__pb2._EMC_TRAJ_SET_TERM_COND +_CONTAINER.fields_by_name['traj_set_spindlesync'].message_type = machinetalk_dot_protobuf_dot_canon__pb2._EMC_TRAJ_SET_SPINDLESYNC +_CONTAINER.fields_by_name['traj_delay'].message_type = machinetalk_dot_protobuf_dot_canon__pb2._EMC_TRAJ_DELAY +_CONTAINER.fields_by_name['spindle_on'].message_type = machinetalk_dot_protobuf_dot_canon__pb2._EMC_SPINDLE_ON +_CONTAINER.fields_by_name['spindle_speed'].message_type = machinetalk_dot_protobuf_dot_canon__pb2._EMC_SPINDLE_SPEED +_CONTAINER.fields_by_name['spindle_orient'].message_type = machinetalk_dot_protobuf_dot_canon__pb2._EMC_SPINDLE_ORIENT +_CONTAINER.fields_by_name['spindle_wait_orient_complete'].message_type = machinetalk_dot_protobuf_dot_canon__pb2._EMC_SPINDLE_WAIT_ORIENT_COMPLETE +_CONTAINER.fields_by_name['tool_set_offet'].message_type = machinetalk_dot_protobuf_dot_canon__pb2._EMC_TOOL_SET_OFFSET +_CONTAINER.fields_by_name['traj_set_offset'].message_type = machinetalk_dot_protobuf_dot_canon__pb2._EMC_TRAJ_SET_OFFSET +_CONTAINER.fields_by_name['tool_prepare'].message_type = machinetalk_dot_protobuf_dot_canon__pb2._EMC_TOOL_PREPARE +_CONTAINER.fields_by_name['tool_set_number'].message_type = machinetalk_dot_protobuf_dot_canon__pb2._EMC_TOOL_SET_NUMBER +_CONTAINER.fields_by_name['traj_set_fo_enable'].message_type = machinetalk_dot_protobuf_dot_canon__pb2._EMC_TRAJ_SET_FO_ENABLE +_CONTAINER.fields_by_name['traj_set_so_enable'].message_type = machinetalk_dot_protobuf_dot_canon__pb2._EMC_TRAJ_SET_SO_ENABLE +_CONTAINER.fields_by_name['traj_set_fh_enable'].message_type = machinetalk_dot_protobuf_dot_canon__pb2._EMC_TRAJ_SET_FH_ENABLE +_CONTAINER.fields_by_name['motion_adaptive'].message_type = machinetalk_dot_protobuf_dot_canon__pb2._EMC_MOTION_ADAPTIVE +_CONTAINER.fields_by_name['operator_display'].message_type = machinetalk_dot_protobuf_dot_canon__pb2._EMC_OPERATOR_DISPLAY +_CONTAINER.fields_by_name['operator_text'].message_type = machinetalk_dot_protobuf_dot_canon__pb2._EMC_OPERATOR_TEXT +_CONTAINER.fields_by_name['operator_error'].message_type = machinetalk_dot_protobuf_dot_canon__pb2._EMC_OPERATOR_ERROR +_CONTAINER.fields_by_name['motion_set_dout'].message_type = machinetalk_dot_protobuf_dot_canon__pb2._EMC_MOTION_SET_DOUT +_CONTAINER.fields_by_name['motion_set_aout'].message_type = machinetalk_dot_protobuf_dot_canon__pb2._EMC_MOTION_SET_AOUT +_CONTAINER.fields_by_name['aux_input_wait'].message_type = machinetalk_dot_protobuf_dot_canon__pb2._EMC_AUX_INPUT_WAIT +_CONTAINER.fields_by_name['exec_plugin_call'].message_type = machinetalk_dot_protobuf_dot_canon__pb2._EMC_EXEC_PLUGIN_CA1L +_CONTAINER.fields_by_name['io_plugin_call'].message_type = machinetalk_dot_protobuf_dot_canon__pb2._EMC_IO_PLUGIN_CALL +_CONTAINER.fields_by_name['emc_status_config'].message_type = machinetalk_dot_protobuf_dot_status__pb2._EMCSTATUSCONFIG +_CONTAINER.fields_by_name['emc_status_motion'].message_type = machinetalk_dot_protobuf_dot_status__pb2._EMCSTATUSMOTION +_CONTAINER.fields_by_name['emc_status_io'].message_type = machinetalk_dot_protobuf_dot_status__pb2._EMCSTATUSIO +_CONTAINER.fields_by_name['emc_status_task'].message_type = machinetalk_dot_protobuf_dot_status__pb2._EMCSTATUSTASK +_CONTAINER.fields_by_name['emc_status_interp'].message_type = machinetalk_dot_protobuf_dot_status__pb2._EMCSTATUSINTERP +_CONTAINER.fields_by_name['emc_status_ui'].message_type = machinetalk_dot_protobuf_dot_status__pb2._EMCSTATUSUI +_CONTAINER.fields_by_name['emc_command_params'].message_type = machinetalk_dot_protobuf_dot_status__pb2._EMCCOMMANDPARAMETERS +DESCRIPTOR.message_types_by_name['Container'] = _CONTAINER + +Container = _reflection.GeneratedProtocolMessageType('Container', (_message.Message,), dict( + DESCRIPTOR = _CONTAINER, + __module__ = 'machinetalk.protobuf.message_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Container) + )) +_sym_db.RegisterMessage(Container) + + +_CONTAINER.fields_by_name['preview'].has_options = True +_CONTAINER.fields_by_name['preview']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['legacy_motcmd'].has_options = True +_CONTAINER.fields_by_name['legacy_motcmd']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['legacy_motstat'].has_options = True +_CONTAINER.fields_by_name['legacy_motstat']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['task_reply'].has_options = True +_CONTAINER.fields_by_name['task_reply']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['syslog'].has_options = True +_CONTAINER.fields_by_name['syslog']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['legacy_nml'].has_options = True +_CONTAINER.fields_by_name['legacy_nml']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['legacy_motconfig'].has_options = True +_CONTAINER.fields_by_name['legacy_motconfig']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['interp_state'].has_options = True +_CONTAINER.fields_by_name['interp_state']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['name'].has_options = True +_CONTAINER.fields_by_name['name']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['uuid'].has_options = True +_CONTAINER.fields_by_name['uuid']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['value'].has_options = True +_CONTAINER.fields_by_name['value']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['rtapicmd'].has_options = True +_CONTAINER.fields_by_name['rtapicmd']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['service_announcement'].has_options = True +_CONTAINER.fields_by_name['service_announcement']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['comp'].has_options = True +_CONTAINER.fields_by_name['comp']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['pin'].has_options = True +_CONTAINER.fields_by_name['pin']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['signal'].has_options = True +_CONTAINER.fields_by_name['signal']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['param'].has_options = True +_CONTAINER.fields_by_name['param']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['thread'].has_options = True +_CONTAINER.fields_by_name['thread']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['ring'].has_options = True +_CONTAINER.fields_by_name['ring']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['group'].has_options = True +_CONTAINER.fields_by_name['group']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['member'].has_options = True +_CONTAINER.fields_by_name['member']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['function'].has_options = True +_CONTAINER.fields_by_name['function']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['pparams'].has_options = True +_CONTAINER.fields_by_name['pparams']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['vtable'].has_options = True +_CONTAINER.fields_by_name['vtable']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['inst'].has_options = True +_CONTAINER.fields_by_name['inst']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['app'].has_options = True +_CONTAINER.fields_by_name['app']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['launcher'].has_options = True +_CONTAINER.fields_by_name['launcher']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['index'].has_options = True +_CONTAINER.fields_by_name['index']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['log_message'].has_options = True +_CONTAINER.fields_by_name['log_message']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['tpexecute'].has_options = True +_CONTAINER.fields_by_name['tpexecute']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['tpblockdelete'].has_options = True +_CONTAINER.fields_by_name['tpblockdelete']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['tpoptionalstop'].has_options = True +_CONTAINER.fields_by_name['tpoptionalstop']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['tpopen'].has_options = True +_CONTAINER.fields_by_name['tpopen']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['taskplan_reply'].has_options = True +_CONTAINER.fields_by_name['taskplan_reply']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['emc_status_config'].has_options = True +_CONTAINER.fields_by_name['emc_status_config']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['emc_status_motion'].has_options = True +_CONTAINER.fields_by_name['emc_status_motion']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['emc_status_io'].has_options = True +_CONTAINER.fields_by_name['emc_status_io']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['emc_status_task'].has_options = True +_CONTAINER.fields_by_name['emc_status_task']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['emc_status_interp'].has_options = True +_CONTAINER.fields_by_name['emc_status_interp']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['emc_status_ui'].has_options = True +_CONTAINER.fields_by_name['emc_status_ui']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.fields_by_name['emc_command_params'].has_options = True +_CONTAINER.fields_by_name['emc_command_params']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\030\003')) +_CONTAINER.has_options = True +_CONTAINER._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\364\003')) +# @@protoc_insertion_point(module_scope) diff --git a/python/machinetalk/protobuf/motcmds_pb2.py b/python/machinetalk/protobuf/motcmds_pb2.py new file mode 100644 index 0000000000..72880e7198 --- /dev/null +++ b/python/machinetalk/protobuf/motcmds_pb2.py @@ -0,0 +1,841 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: machinetalk/protobuf/motcmds.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf.internal import enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from machinetalk.protobuf import emcclass_pb2 as machinetalk_dot_protobuf_dot_emcclass__pb2 +from machinetalk.protobuf import nanopb_pb2 as machinetalk_dot_protobuf_dot_nanopb__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='machinetalk/protobuf/motcmds.proto', + package='machinetalk', + syntax='proto2', + serialized_pb=_b('\n\"machinetalk/protobuf/motcmds.proto\x12\x0bmachinetalk\x1a#machinetalk/protobuf/emcclass.proto\x1a!machinetalk/protobuf/nanopb.proto\"\xa7\x07\n\rMotionCommand\x12(\n\x07\x63ommand\x18\n \x02(\x0e\x32\x17.machinetalk.cmd_code_t\x12\x12\n\ncommandNum\x18\x14 \x02(\x07\x12\x14\n\x0cmotor_offset\x18\x1e \x01(\x01\x12\x10\n\x08maxLimit\x18( \x01(\x01\x12\x10\n\x08minLimit\x18\x32 \x01(\x01\x12!\n\x03pos\x18< \x01(\x0b\x32\x14.machinetalk.EmcPose\x12(\n\x06\x63\x65nter\x18\x46 \x01(\x0b\x32\x18.machinetalk.PmCartesian\x12(\n\x06normal\x18P \x01(\x0b\x32\x18.machinetalk.PmCartesian\x12\x0c\n\x04turn\x18Z \x01(\x07\x12\x0b\n\x03vel\x18\x64 \x01(\x01\x12\x12\n\nini_maxvel\x18n \x01(\x01\x12,\n\x0bmotion_type\x18x \x01(\x0e\x32\x17.machinetalk.MotionType\x12\x14\n\x0bspindlesync\x18\x82\x01 \x01(\x01\x12\x0c\n\x03\x61\x63\x63\x18\x8c\x01 \x01(\x01\x12\x11\n\x08\x62\x61\x63klash\x18\x96\x01 \x01(\x01\x12\x0b\n\x02id\x18\xa0\x01 \x01(\x07\x12\x11\n\x08termCond\x18\xaa\x01 \x01(\x07\x12\x12\n\ttolerance\x18\xb4\x01 \x01(\x01\x12\r\n\x04\x61xis\x18\xbe\x01 \x01(\x07\x12\x0e\n\x05scale\x18\xc8\x01 \x01(\x01\x12\x0f\n\x06offset\x18\xd2\x01 \x01(\x01\x12\r\n\x04home\x18\xdc\x01 \x01(\x01\x12\x17\n\x0ehome_final_vel\x18\xe6\x01 \x01(\x01\x12\x13\n\nsearch_vel\x18\xf0\x01 \x01(\x01\x12\x12\n\tlatch_vel\x18\xfa\x01 \x01(\x01\x12\x0e\n\x05\x66lags\x18\x84\x02 \x01(\x07\x12\x16\n\rhome_sequence\x18\x8e\x02 \x01(\x07\x12\x16\n\rvolatile_home\x18\x98\x02 \x01(\x07\x12\x12\n\tminFerror\x18\xa2\x02 \x01(\x01\x12\x12\n\tmaxFerror\x18\xac\x02 \x01(\x01\x12\x0f\n\x06wdWait\x18\xb6\x02 \x01(\x07\x12\x0e\n\x05\x64\x65\x62ug\x18\xc0\x02 \x01(\x07\x12\x0c\n\x03now\x18\xca\x02 \x01(\x05\x12\x0c\n\x03out\x18\xd4\x02 \x01(\x05\x12\x0e\n\x05start\x18\xde\x02 \x01(\x05\x12\x0c\n\x03\x65nd\x18\xe8\x02 \x01(\x05\x12\r\n\x04mode\x18\xf2\x02 \x01(\x05\x12\x15\n\x0c\x63omp_nominal\x18\xfc\x02 \x01(\x01\x12\x15\n\x0c\x63omp_forward\x18\x86\x03 \x01(\x01\x12\x15\n\x0c\x63omp_reverse\x18\x90\x03 \x01(\x01\x12\x13\n\nprobe_type\x18\x9a\x03 \x01(\x05\x12*\n\x0btool_offset\x18\xa4\x03 \x01(\x0b\x32\x14.machinetalk.EmcPose:\x06\x92?\x03H\xd8\x04\"\xba\x01\n\x0cMotionStatus\x12,\n\x0b\x63ommandEcho\x18\n \x02(\x0e\x32\x17.machinetalk.cmd_code_t\x12\x16\n\x0e\x63ommandNumEcho\x18\x14 \x02(\x07\x12\x30\n\rcommandStatus\x18\x1e \x02(\x0e\x32\x19.machinetalk.cmd_status_t\x12*\n\x0c\x63\x61rte_pos_fb\x18( \x01(\x0b\x32\x14.machinetalk.EmcPose:\x06\x92?\x03H\xd9\x04*\xdc\x01\n\nMotionType\x12\x19\n\x15_EMC_MOTION_TYPE_NONE\x10\x00\x12\x1d\n\x19_EMC_MOTION_TYPE_TRAVERSE\x10\x01\x12\x19\n\x15_EMC_MOTION_TYPE_FEED\x10\x02\x12\x18\n\x14_EMC_MOTION_TYPE_ARC\x10\x03\x12\x1f\n\x1b_EMC_MOTION_TYPE_TOOLCHANGE\x10\x04\x12\x1c\n\x18_EMC_MOTION_TYPE_PROBING\x10\x05\x12 \n\x1c_EMC_MOTION_TYPE_INDEXROTARY\x10\x06*\xfb\x0b\n\ncmd_code_t\x12\x11\n\x0c\x45MCMOT_ABORT\x10\xa0\x1f\x12\x16\n\x11\x45MCMOT_AXIS_ABORT\x10\xa1\x1f\x12\x12\n\rEMCMOT_ENABLE\x10\xa2\x1f\x12\x13\n\x0e\x45MCMOT_DISABLE\x10\xa3\x1f\x12\x1c\n\x17\x45MCMOT_ENABLE_AMPLIFIER\x10\xa4\x1f\x12\x1d\n\x18\x45MCMOT_DISABLE_AMPLIFIER\x10\xa5\x1f\x12\x1b\n\x16\x45MCMOT_ENABLE_WATCHDOG\x10\xa6\x1f\x12\x1c\n\x17\x45MCMOT_DISABLE_WATCHDOG\x10\xa7\x1f\x12\x1a\n\x15\x45MCMOT_ACTIVATE_JOINT\x10\xa8\x1f\x12\x1c\n\x17\x45MCMOT_DEACTIVATE_JOINT\x10\xa9\x1f\x12\x11\n\x0c\x45MCMOT_PAUSE\x10\xaa\x1f\x12\x12\n\rEMCMOT_RESUME\x10\xab\x1f\x12\x10\n\x0b\x45MCMOT_STEP\x10\xac\x1f\x12\x10\n\x0b\x45MCMOT_FREE\x10\xad\x1f\x12\x11\n\x0c\x45MCMOT_COORD\x10\xae\x1f\x12\x12\n\rEMCMOT_TELEOP\x10\xaf\x1f\x12\x19\n\x14\x45MCMOT_SPINDLE_SCALE\x10\xb0\x1f\x12\x15\n\x10\x45MCMOT_SS_ENABLE\x10\xb1\x1f\x12\x16\n\x11\x45MCMOT_FEED_SCALE\x10\xb2\x1f\x12\x15\n\x10\x45MCMOT_FS_ENABLE\x10\xb3\x1f\x12\x15\n\x10\x45MCMOT_FH_ENABLE\x10\xb4\x1f\x12\x15\n\x10\x45MCMOT_AF_ENABLE\x10\xb5\x1f\x12\x1b\n\x16\x45MCMOT_OVERRIDE_LIMITS\x10\xb6\x1f\x12\x10\n\x0b\x45MCMOT_HOME\x10\xb7\x1f\x12\x12\n\rEMCMOT_UNHOME\x10\xb8\x1f\x12\x14\n\x0f\x45MCMOT_JOG_CONT\x10\xb9\x1f\x12\x14\n\x0f\x45MCMOT_JOG_INCR\x10\xba\x1f\x12\x13\n\x0e\x45MCMOT_JOG_ABS\x10\xbb\x1f\x12\x14\n\x0f\x45MCMOT_SET_LINE\x10\xbc\x1f\x12\x16\n\x11\x45MCMOT_SET_CIRCLE\x10\xbd\x1f\x12\x1d\n\x18\x45MCMOT_SET_TELEOP_VECTOR\x10\xbe\x1f\x12\x1d\n\x18\x45MCMOT_CLEAR_PROBE_FLAGS\x10\xbf\x1f\x12\x11\n\x0c\x45MCMOT_PROBE\x10\xc0\x1f\x12\x15\n\x10\x45MCMOT_RIGID_TAP\x10\xc1\x1f\x12\x1f\n\x1a\x45MCMOT_SET_POSITION_LIMITS\x10\xc2\x1f\x12\x18\n\x13\x45MCMOT_SET_BACKLASH\x10\xc3\x1f\x12\x1a\n\x15\x45MCMOT_SET_MIN_FERROR\x10\xc4\x1f\x12\x1a\n\x15\x45MCMOT_SET_MAX_FERROR\x10\xc5\x1f\x12\x13\n\x0e\x45MCMOT_SET_VEL\x10\xc6\x1f\x12\x19\n\x14\x45MCMOT_SET_VEL_LIMIT\x10\xc7\x1f\x12\x1f\n\x1a\x45MCMOT_SET_JOINT_VEL_LIMIT\x10\xc8\x1f\x12\x1f\n\x1a\x45MCMOT_SET_JOINT_ACC_LIMIT\x10\xc9\x1f\x12\x13\n\x0e\x45MCMOT_SET_ACC\x10\xca\x1f\x12\x19\n\x14\x45MCMOT_SET_TERM_COND\x10\xcb\x1f\x12\x18\n\x13\x45MCMOT_SET_NUM_AXES\x10\xcc\x1f\x12\x1a\n\x15\x45MCMOT_SET_WORLD_HOME\x10\xcd\x1f\x12\x1d\n\x18\x45MCMOT_SET_HOMING_PARAMS\x10\xce\x1f\x12\x15\n\x10\x45MCMOT_SET_DEBUG\x10\xcf\x1f\x12\x14\n\x0f\x45MCMOT_SET_DOUT\x10\xd0\x1f\x12\x14\n\x0f\x45MCMOT_SET_AOUT\x10\xd1\x1f\x12\x1b\n\x16\x45MCMOT_SET_SPINDLESYNC\x10\xd2\x1f\x12\x16\n\x11\x45MCMOT_SPINDLE_ON\x10\xd3\x1f\x12\x17\n\x12\x45MCMOT_SPINDLE_OFF\x10\xd4\x1f\x12\x1c\n\x17\x45MCMOT_SPINDLE_INCREASE\x10\xd5\x1f\x12\x1c\n\x17\x45MCMOT_SPINDLE_DECREASE\x10\xd6\x1f\x12 \n\x1b\x45MCMOT_SPINDLE_BRAKE_ENGAGE\x10\xd7\x1f\x12!\n\x1c\x45MCMOT_SPINDLE_BRAKE_RELEASE\x10\xd8\x1f\x12\x1c\n\x17\x45MCMOT_SET_MOTOR_OFFSET\x10\xd9\x1f\x12\x1a\n\x15\x45MCMOT_SET_JOINT_COMP\x10\xda\x1f\x12\x16\n\x11\x45MCMOT_SET_OFFSET\x10\xdb\x1f*\xad\x01\n\x0c\x63md_status_t\x12\x15\n\x11\x45MCMOT_COMMAND_OK\x10\x00\x12\"\n\x1e\x45MCMOT_COMMAND_UNKNOWN_COMMAND\x10\x01\x12\"\n\x1e\x45MCMOT_COMMAND_INVALID_COMMAND\x10\x02\x12!\n\x1d\x45MCMOT_COMMAND_INVALID_PARAMS\x10\x03\x12\x1b\n\x17\x45MCMOT_COMMAND_BAD_EXEC\x10\x04') + , + dependencies=[machinetalk_dot_protobuf_dot_emcclass__pb2.DESCRIPTOR,machinetalk_dot_protobuf_dot_nanopb__pb2.DESCRIPTOR,]) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +_MOTIONTYPE = _descriptor.EnumDescriptor( + name='MotionType', + full_name='machinetalk.MotionType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='_EMC_MOTION_TYPE_NONE', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='_EMC_MOTION_TYPE_TRAVERSE', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='_EMC_MOTION_TYPE_FEED', index=2, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='_EMC_MOTION_TYPE_ARC', index=3, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='_EMC_MOTION_TYPE_TOOLCHANGE', index=4, number=4, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='_EMC_MOTION_TYPE_PROBING', index=5, number=5, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='_EMC_MOTION_TYPE_INDEXROTARY', index=6, number=6, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=1251, + serialized_end=1471, +) +_sym_db.RegisterEnumDescriptor(_MOTIONTYPE) + +MotionType = enum_type_wrapper.EnumTypeWrapper(_MOTIONTYPE) +_CMD_CODE_T = _descriptor.EnumDescriptor( + name='cmd_code_t', + full_name='machinetalk.cmd_code_t', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='EMCMOT_ABORT', index=0, number=4000, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_AXIS_ABORT', index=1, number=4001, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_ENABLE', index=2, number=4002, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_DISABLE', index=3, number=4003, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_ENABLE_AMPLIFIER', index=4, number=4004, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_DISABLE_AMPLIFIER', index=5, number=4005, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_ENABLE_WATCHDOG', index=6, number=4006, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_DISABLE_WATCHDOG', index=7, number=4007, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_ACTIVATE_JOINT', index=8, number=4008, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_DEACTIVATE_JOINT', index=9, number=4009, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_PAUSE', index=10, number=4010, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_RESUME', index=11, number=4011, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_STEP', index=12, number=4012, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_FREE', index=13, number=4013, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_COORD', index=14, number=4014, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_TELEOP', index=15, number=4015, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_SPINDLE_SCALE', index=16, number=4016, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_SS_ENABLE', index=17, number=4017, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_FEED_SCALE', index=18, number=4018, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_FS_ENABLE', index=19, number=4019, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_FH_ENABLE', index=20, number=4020, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_AF_ENABLE', index=21, number=4021, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_OVERRIDE_LIMITS', index=22, number=4022, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_HOME', index=23, number=4023, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_UNHOME', index=24, number=4024, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_JOG_CONT', index=25, number=4025, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_JOG_INCR', index=26, number=4026, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_JOG_ABS', index=27, number=4027, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_SET_LINE', index=28, number=4028, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_SET_CIRCLE', index=29, number=4029, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_SET_TELEOP_VECTOR', index=30, number=4030, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_CLEAR_PROBE_FLAGS', index=31, number=4031, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_PROBE', index=32, number=4032, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_RIGID_TAP', index=33, number=4033, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_SET_POSITION_LIMITS', index=34, number=4034, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_SET_BACKLASH', index=35, number=4035, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_SET_MIN_FERROR', index=36, number=4036, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_SET_MAX_FERROR', index=37, number=4037, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_SET_VEL', index=38, number=4038, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_SET_VEL_LIMIT', index=39, number=4039, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_SET_JOINT_VEL_LIMIT', index=40, number=4040, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_SET_JOINT_ACC_LIMIT', index=41, number=4041, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_SET_ACC', index=42, number=4042, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_SET_TERM_COND', index=43, number=4043, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_SET_NUM_AXES', index=44, number=4044, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_SET_WORLD_HOME', index=45, number=4045, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_SET_HOMING_PARAMS', index=46, number=4046, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_SET_DEBUG', index=47, number=4047, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_SET_DOUT', index=48, number=4048, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_SET_AOUT', index=49, number=4049, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_SET_SPINDLESYNC', index=50, number=4050, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_SPINDLE_ON', index=51, number=4051, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_SPINDLE_OFF', index=52, number=4052, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_SPINDLE_INCREASE', index=53, number=4053, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_SPINDLE_DECREASE', index=54, number=4054, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_SPINDLE_BRAKE_ENGAGE', index=55, number=4055, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_SPINDLE_BRAKE_RELEASE', index=56, number=4056, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_SET_MOTOR_OFFSET', index=57, number=4057, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_SET_JOINT_COMP', index=58, number=4058, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_SET_OFFSET', index=59, number=4059, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=1474, + serialized_end=3005, +) +_sym_db.RegisterEnumDescriptor(_CMD_CODE_T) + +cmd_code_t = enum_type_wrapper.EnumTypeWrapper(_CMD_CODE_T) +_CMD_STATUS_T = _descriptor.EnumDescriptor( + name='cmd_status_t', + full_name='machinetalk.cmd_status_t', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='EMCMOT_COMMAND_OK', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_COMMAND_UNKNOWN_COMMAND', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_COMMAND_INVALID_COMMAND', index=2, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_COMMAND_INVALID_PARAMS', index=3, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMCMOT_COMMAND_BAD_EXEC', index=4, number=4, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=3008, + serialized_end=3181, +) +_sym_db.RegisterEnumDescriptor(_CMD_STATUS_T) + +cmd_status_t = enum_type_wrapper.EnumTypeWrapper(_CMD_STATUS_T) +_EMC_MOTION_TYPE_NONE = 0 +_EMC_MOTION_TYPE_TRAVERSE = 1 +_EMC_MOTION_TYPE_FEED = 2 +_EMC_MOTION_TYPE_ARC = 3 +_EMC_MOTION_TYPE_TOOLCHANGE = 4 +_EMC_MOTION_TYPE_PROBING = 5 +_EMC_MOTION_TYPE_INDEXROTARY = 6 +EMCMOT_ABORT = 4000 +EMCMOT_AXIS_ABORT = 4001 +EMCMOT_ENABLE = 4002 +EMCMOT_DISABLE = 4003 +EMCMOT_ENABLE_AMPLIFIER = 4004 +EMCMOT_DISABLE_AMPLIFIER = 4005 +EMCMOT_ENABLE_WATCHDOG = 4006 +EMCMOT_DISABLE_WATCHDOG = 4007 +EMCMOT_ACTIVATE_JOINT = 4008 +EMCMOT_DEACTIVATE_JOINT = 4009 +EMCMOT_PAUSE = 4010 +EMCMOT_RESUME = 4011 +EMCMOT_STEP = 4012 +EMCMOT_FREE = 4013 +EMCMOT_COORD = 4014 +EMCMOT_TELEOP = 4015 +EMCMOT_SPINDLE_SCALE = 4016 +EMCMOT_SS_ENABLE = 4017 +EMCMOT_FEED_SCALE = 4018 +EMCMOT_FS_ENABLE = 4019 +EMCMOT_FH_ENABLE = 4020 +EMCMOT_AF_ENABLE = 4021 +EMCMOT_OVERRIDE_LIMITS = 4022 +EMCMOT_HOME = 4023 +EMCMOT_UNHOME = 4024 +EMCMOT_JOG_CONT = 4025 +EMCMOT_JOG_INCR = 4026 +EMCMOT_JOG_ABS = 4027 +EMCMOT_SET_LINE = 4028 +EMCMOT_SET_CIRCLE = 4029 +EMCMOT_SET_TELEOP_VECTOR = 4030 +EMCMOT_CLEAR_PROBE_FLAGS = 4031 +EMCMOT_PROBE = 4032 +EMCMOT_RIGID_TAP = 4033 +EMCMOT_SET_POSITION_LIMITS = 4034 +EMCMOT_SET_BACKLASH = 4035 +EMCMOT_SET_MIN_FERROR = 4036 +EMCMOT_SET_MAX_FERROR = 4037 +EMCMOT_SET_VEL = 4038 +EMCMOT_SET_VEL_LIMIT = 4039 +EMCMOT_SET_JOINT_VEL_LIMIT = 4040 +EMCMOT_SET_JOINT_ACC_LIMIT = 4041 +EMCMOT_SET_ACC = 4042 +EMCMOT_SET_TERM_COND = 4043 +EMCMOT_SET_NUM_AXES = 4044 +EMCMOT_SET_WORLD_HOME = 4045 +EMCMOT_SET_HOMING_PARAMS = 4046 +EMCMOT_SET_DEBUG = 4047 +EMCMOT_SET_DOUT = 4048 +EMCMOT_SET_AOUT = 4049 +EMCMOT_SET_SPINDLESYNC = 4050 +EMCMOT_SPINDLE_ON = 4051 +EMCMOT_SPINDLE_OFF = 4052 +EMCMOT_SPINDLE_INCREASE = 4053 +EMCMOT_SPINDLE_DECREASE = 4054 +EMCMOT_SPINDLE_BRAKE_ENGAGE = 4055 +EMCMOT_SPINDLE_BRAKE_RELEASE = 4056 +EMCMOT_SET_MOTOR_OFFSET = 4057 +EMCMOT_SET_JOINT_COMP = 4058 +EMCMOT_SET_OFFSET = 4059 +EMCMOT_COMMAND_OK = 0 +EMCMOT_COMMAND_UNKNOWN_COMMAND = 1 +EMCMOT_COMMAND_INVALID_COMMAND = 2 +EMCMOT_COMMAND_INVALID_PARAMS = 3 +EMCMOT_COMMAND_BAD_EXEC = 4 + + + +_MOTIONCOMMAND = _descriptor.Descriptor( + name='MotionCommand', + full_name='machinetalk.MotionCommand', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='command', full_name='machinetalk.MotionCommand.command', index=0, + number=10, type=14, cpp_type=8, label=2, + has_default_value=False, default_value=4000, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='commandNum', full_name='machinetalk.MotionCommand.commandNum', index=1, + number=20, type=7, cpp_type=3, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='motor_offset', full_name='machinetalk.MotionCommand.motor_offset', index=2, + number=30, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='maxLimit', full_name='machinetalk.MotionCommand.maxLimit', index=3, + number=40, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='minLimit', full_name='machinetalk.MotionCommand.minLimit', index=4, + number=50, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='pos', full_name='machinetalk.MotionCommand.pos', index=5, + number=60, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='center', full_name='machinetalk.MotionCommand.center', index=6, + number=70, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='normal', full_name='machinetalk.MotionCommand.normal', index=7, + number=80, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='turn', full_name='machinetalk.MotionCommand.turn', index=8, + number=90, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='vel', full_name='machinetalk.MotionCommand.vel', index=9, + number=100, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='ini_maxvel', full_name='machinetalk.MotionCommand.ini_maxvel', index=10, + number=110, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='motion_type', full_name='machinetalk.MotionCommand.motion_type', index=11, + number=120, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='spindlesync', full_name='machinetalk.MotionCommand.spindlesync', index=12, + number=130, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='acc', full_name='machinetalk.MotionCommand.acc', index=13, + number=140, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='backlash', full_name='machinetalk.MotionCommand.backlash', index=14, + number=150, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='id', full_name='machinetalk.MotionCommand.id', index=15, + number=160, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='termCond', full_name='machinetalk.MotionCommand.termCond', index=16, + number=170, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='tolerance', full_name='machinetalk.MotionCommand.tolerance', index=17, + number=180, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='axis', full_name='machinetalk.MotionCommand.axis', index=18, + number=190, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='scale', full_name='machinetalk.MotionCommand.scale', index=19, + number=200, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='offset', full_name='machinetalk.MotionCommand.offset', index=20, + number=210, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='home', full_name='machinetalk.MotionCommand.home', index=21, + number=220, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='home_final_vel', full_name='machinetalk.MotionCommand.home_final_vel', index=22, + number=230, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='search_vel', full_name='machinetalk.MotionCommand.search_vel', index=23, + number=240, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='latch_vel', full_name='machinetalk.MotionCommand.latch_vel', index=24, + number=250, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='flags', full_name='machinetalk.MotionCommand.flags', index=25, + number=260, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='home_sequence', full_name='machinetalk.MotionCommand.home_sequence', index=26, + number=270, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='volatile_home', full_name='machinetalk.MotionCommand.volatile_home', index=27, + number=280, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='minFerror', full_name='machinetalk.MotionCommand.minFerror', index=28, + number=290, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='maxFerror', full_name='machinetalk.MotionCommand.maxFerror', index=29, + number=300, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='wdWait', full_name='machinetalk.MotionCommand.wdWait', index=30, + number=310, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='debug', full_name='machinetalk.MotionCommand.debug', index=31, + number=320, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='now', full_name='machinetalk.MotionCommand.now', index=32, + number=330, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='out', full_name='machinetalk.MotionCommand.out', index=33, + number=340, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='start', full_name='machinetalk.MotionCommand.start', index=34, + number=350, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='end', full_name='machinetalk.MotionCommand.end', index=35, + number=360, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='mode', full_name='machinetalk.MotionCommand.mode', index=36, + number=370, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='comp_nominal', full_name='machinetalk.MotionCommand.comp_nominal', index=37, + number=380, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='comp_forward', full_name='machinetalk.MotionCommand.comp_forward', index=38, + number=390, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='comp_reverse', full_name='machinetalk.MotionCommand.comp_reverse', index=39, + number=400, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='probe_type', full_name='machinetalk.MotionCommand.probe_type', index=40, + number=410, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='tool_offset', full_name='machinetalk.MotionCommand.tool_offset', index=41, + number=420, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\330\004')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=124, + serialized_end=1059, +) + + +_MOTIONSTATUS = _descriptor.Descriptor( + name='MotionStatus', + full_name='machinetalk.MotionStatus', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='commandEcho', full_name='machinetalk.MotionStatus.commandEcho', index=0, + number=10, type=14, cpp_type=8, label=2, + has_default_value=False, default_value=4000, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='commandNumEcho', full_name='machinetalk.MotionStatus.commandNumEcho', index=1, + number=20, type=7, cpp_type=3, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='commandStatus', full_name='machinetalk.MotionStatus.commandStatus', index=2, + number=30, type=14, cpp_type=8, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='carte_pos_fb', full_name='machinetalk.MotionStatus.carte_pos_fb', index=3, + number=40, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\331\004')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1062, + serialized_end=1248, +) + +_MOTIONCOMMAND.fields_by_name['command'].enum_type = _CMD_CODE_T +_MOTIONCOMMAND.fields_by_name['pos'].message_type = machinetalk_dot_protobuf_dot_emcclass__pb2._EMCPOSE +_MOTIONCOMMAND.fields_by_name['center'].message_type = machinetalk_dot_protobuf_dot_emcclass__pb2._PMCARTESIAN +_MOTIONCOMMAND.fields_by_name['normal'].message_type = machinetalk_dot_protobuf_dot_emcclass__pb2._PMCARTESIAN +_MOTIONCOMMAND.fields_by_name['motion_type'].enum_type = _MOTIONTYPE +_MOTIONCOMMAND.fields_by_name['tool_offset'].message_type = machinetalk_dot_protobuf_dot_emcclass__pb2._EMCPOSE +_MOTIONSTATUS.fields_by_name['commandEcho'].enum_type = _CMD_CODE_T +_MOTIONSTATUS.fields_by_name['commandStatus'].enum_type = _CMD_STATUS_T +_MOTIONSTATUS.fields_by_name['carte_pos_fb'].message_type = machinetalk_dot_protobuf_dot_emcclass__pb2._EMCPOSE +DESCRIPTOR.message_types_by_name['MotionCommand'] = _MOTIONCOMMAND +DESCRIPTOR.message_types_by_name['MotionStatus'] = _MOTIONSTATUS +DESCRIPTOR.enum_types_by_name['MotionType'] = _MOTIONTYPE +DESCRIPTOR.enum_types_by_name['cmd_code_t'] = _CMD_CODE_T +DESCRIPTOR.enum_types_by_name['cmd_status_t'] = _CMD_STATUS_T + +MotionCommand = _reflection.GeneratedProtocolMessageType('MotionCommand', (_message.Message,), dict( + DESCRIPTOR = _MOTIONCOMMAND, + __module__ = 'machinetalk.protobuf.motcmds_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.MotionCommand) + )) +_sym_db.RegisterMessage(MotionCommand) + +MotionStatus = _reflection.GeneratedProtocolMessageType('MotionStatus', (_message.Message,), dict( + DESCRIPTOR = _MOTIONSTATUS, + __module__ = 'machinetalk.protobuf.motcmds_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.MotionStatus) + )) +_sym_db.RegisterMessage(MotionStatus) + + +_MOTIONCOMMAND.has_options = True +_MOTIONCOMMAND._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\330\004')) +_MOTIONSTATUS.has_options = True +_MOTIONSTATUS._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\331\004')) +# @@protoc_insertion_point(module_scope) diff --git a/python/machinetalk/protobuf/nanopb_pb2.py b/python/machinetalk/protobuf/nanopb_pb2.py new file mode 100644 index 0000000000..7f1f8f16b2 --- /dev/null +++ b/python/machinetalk/protobuf/nanopb_pb2.py @@ -0,0 +1,258 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: machinetalk/protobuf/nanopb.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf.internal import enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='machinetalk/protobuf/nanopb.proto', + package='', + syntax='proto2', + serialized_pb=_b('\n!machinetalk/protobuf/nanopb.proto\x1a google/protobuf/descriptor.proto\"\x80\x02\n\rNanoPBOptions\x12\x10\n\x08max_size\x18\x01 \x01(\x05\x12\x11\n\tmax_count\x18\x02 \x01(\x05\x12&\n\x08int_size\x18\x07 \x01(\x0e\x32\x08.IntSize:\nIS_DEFAULT\x12$\n\x04type\x18\x03 \x01(\x0e\x32\n.FieldType:\nFT_DEFAULT\x12\x18\n\nlong_names\x18\x04 \x01(\x08:\x04true\x12\x1c\n\rpacked_struct\x18\x05 \x01(\x08:\x05\x66\x61lse\x12\x1b\n\x0cskip_message\x18\x06 \x01(\x08:\x05\x66\x61lse\x12\x18\n\tno_unions\x18\x08 \x01(\x08:\x05\x66\x61lse\x12\r\n\x05msgid\x18\t \x01(\r*Z\n\tFieldType\x12\x0e\n\nFT_DEFAULT\x10\x00\x12\x0f\n\x0b\x46T_CALLBACK\x10\x01\x12\x0e\n\nFT_POINTER\x10\x04\x12\r\n\tFT_STATIC\x10\x02\x12\r\n\tFT_IGNORE\x10\x03*D\n\x07IntSize\x12\x0e\n\nIS_DEFAULT\x10\x00\x12\x08\n\x04IS_8\x10\x08\x12\t\n\x05IS_16\x10\x10\x12\t\n\x05IS_32\x10 \x12\t\n\x05IS_64\x10@:E\n\x0enanopb_fileopt\x12\x1c.google.protobuf.FileOptions\x18\xf2\x07 \x01(\x0b\x32\x0e.NanoPBOptions:G\n\rnanopb_msgopt\x12\x1f.google.protobuf.MessageOptions\x18\xf2\x07 \x01(\x0b\x32\x0e.NanoPBOptions:E\n\x0enanopb_enumopt\x12\x1c.google.protobuf.EnumOptions\x18\xf2\x07 \x01(\x0b\x32\x0e.NanoPBOptions:>\n\x06nanopb\x12\x1d.google.protobuf.FieldOptions\x18\xf2\x07 \x01(\x0b\x32\x0e.NanoPBOptionsB\x1a\n\x18\x66i.kapsi.koti.jpa.nanopb') + , + dependencies=[google_dot_protobuf_dot_descriptor__pb2.DESCRIPTOR,]) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +_FIELDTYPE = _descriptor.EnumDescriptor( + name='FieldType', + full_name='FieldType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='FT_DEFAULT', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='FT_CALLBACK', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='FT_POINTER', index=2, number=4, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='FT_STATIC', index=3, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='FT_IGNORE', index=4, number=3, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=330, + serialized_end=420, +) +_sym_db.RegisterEnumDescriptor(_FIELDTYPE) + +FieldType = enum_type_wrapper.EnumTypeWrapper(_FIELDTYPE) +_INTSIZE = _descriptor.EnumDescriptor( + name='IntSize', + full_name='IntSize', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='IS_DEFAULT', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='IS_8', index=1, number=8, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='IS_16', index=2, number=16, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='IS_32', index=3, number=32, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='IS_64', index=4, number=64, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=422, + serialized_end=490, +) +_sym_db.RegisterEnumDescriptor(_INTSIZE) + +IntSize = enum_type_wrapper.EnumTypeWrapper(_INTSIZE) +FT_DEFAULT = 0 +FT_CALLBACK = 1 +FT_POINTER = 4 +FT_STATIC = 2 +FT_IGNORE = 3 +IS_DEFAULT = 0 +IS_8 = 8 +IS_16 = 16 +IS_32 = 32 +IS_64 = 64 + +NANOPB_FILEOPT_FIELD_NUMBER = 1010 +nanopb_fileopt = _descriptor.FieldDescriptor( + name='nanopb_fileopt', full_name='nanopb_fileopt', index=0, + number=1010, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=True, extension_scope=None, + options=None) +NANOPB_MSGOPT_FIELD_NUMBER = 1010 +nanopb_msgopt = _descriptor.FieldDescriptor( + name='nanopb_msgopt', full_name='nanopb_msgopt', index=1, + number=1010, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=True, extension_scope=None, + options=None) +NANOPB_ENUMOPT_FIELD_NUMBER = 1010 +nanopb_enumopt = _descriptor.FieldDescriptor( + name='nanopb_enumopt', full_name='nanopb_enumopt', index=2, + number=1010, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=True, extension_scope=None, + options=None) +NANOPB_FIELD_NUMBER = 1010 +nanopb = _descriptor.FieldDescriptor( + name='nanopb', full_name='nanopb', index=3, + number=1010, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=True, extension_scope=None, + options=None) + + +_NANOPBOPTIONS = _descriptor.Descriptor( + name='NanoPBOptions', + full_name='NanoPBOptions', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='max_size', full_name='NanoPBOptions.max_size', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='max_count', full_name='NanoPBOptions.max_count', index=1, + number=2, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='int_size', full_name='NanoPBOptions.int_size', index=2, + number=7, type=14, cpp_type=8, label=1, + has_default_value=True, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='type', full_name='NanoPBOptions.type', index=3, + number=3, type=14, cpp_type=8, label=1, + has_default_value=True, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='long_names', full_name='NanoPBOptions.long_names', index=4, + number=4, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=True, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='packed_struct', full_name='NanoPBOptions.packed_struct', index=5, + number=5, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='skip_message', full_name='NanoPBOptions.skip_message', index=6, + number=6, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='no_unions', full_name='NanoPBOptions.no_unions', index=7, + number=8, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='msgid', full_name='NanoPBOptions.msgid', index=8, + number=9, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=72, + serialized_end=328, +) + +_NANOPBOPTIONS.fields_by_name['int_size'].enum_type = _INTSIZE +_NANOPBOPTIONS.fields_by_name['type'].enum_type = _FIELDTYPE +DESCRIPTOR.message_types_by_name['NanoPBOptions'] = _NANOPBOPTIONS +DESCRIPTOR.enum_types_by_name['FieldType'] = _FIELDTYPE +DESCRIPTOR.enum_types_by_name['IntSize'] = _INTSIZE +DESCRIPTOR.extensions_by_name['nanopb_fileopt'] = nanopb_fileopt +DESCRIPTOR.extensions_by_name['nanopb_msgopt'] = nanopb_msgopt +DESCRIPTOR.extensions_by_name['nanopb_enumopt'] = nanopb_enumopt +DESCRIPTOR.extensions_by_name['nanopb'] = nanopb + +NanoPBOptions = _reflection.GeneratedProtocolMessageType('NanoPBOptions', (_message.Message,), dict( + DESCRIPTOR = _NANOPBOPTIONS, + __module__ = 'machinetalk.protobuf.nanopb_pb2' + # @@protoc_insertion_point(class_scope:NanoPBOptions) + )) +_sym_db.RegisterMessage(NanoPBOptions) + +nanopb_fileopt.message_type = _NANOPBOPTIONS +google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(nanopb_fileopt) +nanopb_msgopt.message_type = _NANOPBOPTIONS +google_dot_protobuf_dot_descriptor__pb2.MessageOptions.RegisterExtension(nanopb_msgopt) +nanopb_enumopt.message_type = _NANOPBOPTIONS +google_dot_protobuf_dot_descriptor__pb2.EnumOptions.RegisterExtension(nanopb_enumopt) +nanopb.message_type = _NANOPBOPTIONS +google_dot_protobuf_dot_descriptor__pb2.FieldOptions.RegisterExtension(nanopb) + +DESCRIPTOR.has_options = True +DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('\n\030fi.kapsi.koti.jpa.nanopb')) +# @@protoc_insertion_point(module_scope) diff --git a/python/machinetalk/protobuf/object_pb2.py b/python/machinetalk/protobuf/object_pb2.py new file mode 100644 index 0000000000..f10339ae45 --- /dev/null +++ b/python/machinetalk/protobuf/object_pb2.py @@ -0,0 +1,1546 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: machinetalk/protobuf/object.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from machinetalk.protobuf import nanopb_pb2 as machinetalk_dot_protobuf_dot_nanopb__pb2 +from machinetalk.protobuf import types_pb2 as machinetalk_dot_protobuf_dot_types__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='machinetalk/protobuf/object.proto', + package='machinetalk', + syntax='proto2', + serialized_pb=_b('\n!machinetalk/protobuf/object.proto\x12\x0bmachinetalk\x1a!machinetalk/protobuf/nanopb.proto\x1a machinetalk/protobuf/types.proto\",\n\x08Instance\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\n\n\x02id\x18\x02 \x01(\x0f:\x06\x92?\x03H\xbc\x05\"\xb7\x01\n\x13ServiceAnnouncement\x12\'\n\x05stype\x18\x01 \x02(\x0e\x32\x18.machinetalk.ServiceType\x12\x12\n\x07version\x18\x02 \x02(\x07:\x01\x30\x12\x13\n\x08instance\x18\x03 \x02(\x07:\x01\x30\x12$\n\x03\x61pi\x18\x08 \x02(\x0e\x32\x17.machinetalk.ServiceAPI\x12\x0b\n\x03uri\x18\x06 \x02(\t\x12\x13\n\x0b\x64\x65scription\x18\x07 \x01(\t:\x06\x92?\x03H\xbd\x05\"\xab\x01\n\nOriginator\x12\'\n\x06origin\x18\x01 \x01(\x0e\x32\x17.machinetalk.OriginType\x12)\n\x06\x64\x65tail\x18\x02 \x01(\x0e\x32\x19.machinetalk.OriginDetail\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\n\n\x02id\x18\x04 \x01(\x0f\x12\'\n\x08instance\x18\x05 \x01(\x0b\x32\x15.machinetalk.Instance:\x06\x92?\x03H\xbe\x05\"\x8b\x01\n\x07\x41nError\x12\x12\n\nerror_code\x18\x01 \x02(\x0f\x12\'\n\x08severity\x18\x02 \x01(\x0e\x32\x15.machinetalk.Severity\x12\x12\n\nerror_text\x18\x03 \x01(\t\x12\'\n\x06origin\x18\x04 \x01(\x0b\x32\x17.machinetalk.Originator:\x06\x92?\x03H\xbf\x05\"\x8e\x02\n\x03Pin\x12$\n\x04type\x18\x01 \x01(\x0e\x32\x16.machinetalk.ValueType\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0e\n\x06handle\x18\x03 \x01(\x07\x12)\n\x03\x64ir\x18\x04 \x01(\x0e\x32\x1c.machinetalk.HalPinDirection\x12\x0e\n\x06halbit\x18\x05 \x01(\x08\x12\x10\n\x08halfloat\x18\x06 \x01(\x01\x12\x0e\n\x06hals32\x18\x07 \x01(\x0f\x12\x0e\n\x06halu32\x18\x08 \x01(\x07\x12\r\n\x05owner\x18\t \x01(\x0f\x12\x0e\n\x06linked\x18\n \x01(\x08\x12\x0f\n\x07oldname\x18\x0b \x01(\t\x12\x0f\n\x07\x65psilon\x18\x0c \x01(\x01\x12\r\n\x05\x66lags\x18\r \x01(\x07:\x06\x92?\x03H\xc0\x05\"\xe6\x01\n\x06Signal\x12$\n\x04type\x18\x01 \x01(\x0e\x32\x16.machinetalk.ValueType\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0e\n\x06handle\x18\x03 \x01(\x07\x12\x0e\n\x06halbit\x18\x05 \x01(\x08\x12\x10\n\x08halfloat\x18\x06 \x01(\x01\x12\x0e\n\x06hals32\x18\x07 \x01(\x0f\x12\x0e\n\x06halu32\x18\x08 \x01(\x07\x12\x0e\n\x06strval\x18\t \x01(\t\x12\x0c\n\x04\x62lob\x18\n \x01(\x0c\x12\x0f\n\x07readers\x18\x0b \x01(\x07\x12\x0f\n\x07writers\x18\x0c \x01(\x07\x12\x0e\n\x06\x62idirs\x18\r \x01(\x07:\x06\x92?\x03H\xc1\x05\"\xa2\x02\n\x05Param\x12$\n\x04type\x18\x01 \x01(\x0e\x32\x16.machinetalk.ValueType\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0e\n\x06handle\x18\x03 \x01(\x07\x12\x0e\n\x06halbit\x18\x05 \x01(\x08\x12\x10\n\x08halfloat\x18\x06 \x01(\x01\x12\x0e\n\x06hals32\x18\x07 \x01(\x0f\x12\x0e\n\x06halu32\x18\x08 \x01(\x07\x12\x0e\n\x06strval\x18\t \x01(\t\x12\x0c\n\x04\x62lob\x18\n \x01(\x0c\x12+\n\x03\x64ir\x18\x0b \x01(\x0e\x32\x1e.machinetalk.HalParamDirection\x12\x0f\n\x07oldname\x18\x0c \x01(\t\x12\r\n\x05owner\x18\r \x01(\x0f\x12\x0f\n\x07runtime\x18\x0e \x01(\x0f\x12\x0f\n\x07maytime\x18\x0f \x01(\x0f:\x06\x92?\x03H\xc2\x05\"\xca\x01\n\x08\x46unction\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0e\n\x06handle\x18\x02 \x01(\x07\x12\x10\n\x08owner_id\x18\x03 \x01(\x07\x12\r\n\x05users\x18\x04 \x01(\x07\x12\x0f\n\x07runtime\x18\x05 \x01(\x07\x12\x0f\n\x07maxtime\x18\x06 \x01(\x07\x12\x11\n\treentrant\x18\x07 \x01(\x08\x12\'\n\x04type\x18\x08 \x01(\x0e\x32\x19.machinetalk.HalFunctType\x12\x19\n\x11maxtime_increased\x18\t \x01(\x08:\x06\x92?\x03H\xc3\x05\"\x94\x01\n\x06Thread\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0e\n\x06handle\x18\x02 \x01(\x07\x12\x0f\n\x07uses_fp\x18\x03 \x01(\x08\x12\x0e\n\x06period\x18\x04 \x01(\x07\x12\x10\n\x08priority\x18\x05 \x01(\x0f\x12\x0f\n\x07task_id\x18\x06 \x01(\x07\x12\x0e\n\x06\x63pu_id\x18\x07 \x01(\x07\x12\x10\n\x08\x66unction\x18\x08 \x03(\t:\x06\x92?\x03H\xc4\x05\"\xe6\x02\n\tComponent\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05ninst\x18\x02 \x01(\x07\x12\x0f\n\x07\x63omp_id\x18\x04 \x01(\x0f\x12\x0c\n\x04type\x18\x05 \x01(\x07\x12\r\n\x05state\x18\x06 \x01(\x07\x12\x13\n\x0blast_update\x18\x07 \x01(\x07\x12\x12\n\nlast_bound\x18\x08 \x01(\x07\x12\x14\n\x0clast_unbound\x18\t \x01(\x07\x12\x0b\n\x03pid\x18\n \x01(\x07\x12\x0c\n\x04\x61rgs\x18\x0b \x01(\t\x12\r\n\x05timer\x18\x0c \x01(\x0f\x12\x10\n\x08userarg1\x18\x0e \x01(\x0f\x12\x10\n\x08userarg2\x18\x0f \x01(\x0f\x12\x1d\n\x03pin\x18\x10 \x03(\x0b\x32\x10.machinetalk.Pin\x12!\n\x05param\x18\x11 \x03(\x0b\x32\x12.machinetalk.Param\x12$\n\x05\x66unct\x18\x13 \x03(\x0b\x32\x15.machinetalk.Function\x12\x11\n\tno_create\x18\x12 \x01(\x08:\x06\x92?\x03H\xc5\x05\"\xee\x01\n\x04Ring\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0e\n\x06handle\x18\x02 \x01(\x07\x12\r\n\x05owner\x18\x03 \x01(\x0f\x12\x0e\n\x06stream\x18\x04 \x01(\x08\x12\x0e\n\x06wmutex\x18\x05 \x01(\x08\x12\x0e\n\x06rmutex\x18\x06 \x01(\x08\x12\x11\n\trtapi_shm\x18\x07 \x01(\x08\x12\x0e\n\x06reader\x18\x08 \x01(\x0f\x12\x0e\n\x06writer\x18\t \x01(\x0f\x12\x12\n\ntotal_size\x18\n \x01(\x0f\x12\x12\n\nscratchpad\x18\x0b \x01(\x0f\x12\x13\n\x0bring_shmkey\x18\x0c \x01(\x0f\x12\x11\n\tencodings\x18\r \x01(\x07:\x06\x92?\x03H\xc6\x05\"\xe5\x01\n\x06Member\x12&\n\x05mtype\x18\x01 \x01(\x0e\x32\x17.machinetalk.ObjectType\x12\x10\n\x08userarg1\x18\x02 \x01(\x0f\x12\x0f\n\x07\x65psilon\x18\x03 \x01(\x01\x12#\n\x06signal\x18\x04 \x01(\x0b\x32\x13.machinetalk.Signal\x12\x11\n\tgroupname\x18\x05 \x01(\t\x12\x0e\n\x06handle\x18\x06 \x01(\x07\x12\x1d\n\x03pin\x18\x07 \x01(\x0b\x32\x10.machinetalk.Pin\x12!\n\x05param\x18\x08 \x01(\x0b\x32\x12.machinetalk.Param:\x06\x92?\x03H\xc7\x05\"\x88\x01\n\x05Group\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0e\n\x06handle\x18\x02 \x01(\x07\x12\x10\n\x08userarg1\x18\x04 \x01(\x0f\x12\x10\n\x08userarg2\x18\x05 \x01(\x0f\x12\x10\n\x08refcount\x18\x06 \x01(\x0f\x12#\n\x06member\x18\x07 \x03(\x0b\x32\x13.machinetalk.Member:\x06\x92?\x03H\xc8\x05\"_\n\x12ProtocolParameters\x12\x17\n\x0fkeepalive_timer\x18\x01 \x01(\x0f\x12\x13\n\x0bgroup_timer\x18\x02 \x01(\x0f\x12\x13\n\x0brcomp_timer\x18\x03 \x01(\x0f:\x06\x92?\x03H\xc9\x05\"\x84\x01\n\x06Vtable\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0e\n\x06handle\x18\x02 \x01(\x07\x12\x10\n\x08owner_id\x18\x03 \x01(\x0f\x12\x0f\n\x07\x63ontext\x18\x05 \x01(\x07\x12\x10\n\x08refcount\x18\x06 \x01(\x0f\x12\x0f\n\x07version\x18\x07 \x01(\x0f\x12\x0e\n\x06vtable\x18\x08 \x01(\x06:\x06\x92?\x03H\xca\x05\"\xc9\x01\n\x04Inst\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07\x63omp_id\x18\x02 \x01(\x0f\x12\x0f\n\x07inst_id\x18\x03 \x01(\x07\x12\x11\n\tinst_size\x18\x04 \x01(\x07\x12\x0e\n\x06vtable\x18\x05 \x01(\x06\x12\x1d\n\x03pin\x18\x10 \x03(\x0b\x32\x10.machinetalk.Pin\x12!\n\x05param\x18\x11 \x03(\x0b\x32\x12.machinetalk.Param\x12$\n\x05\x66unct\x18\x13 \x03(\x0b\x32\x15.machinetalk.Function:\x06\x92?\x03H\xcb\x05') + , + dependencies=[machinetalk_dot_protobuf_dot_nanopb__pb2.DESCRIPTOR,machinetalk_dot_protobuf_dot_types__pb2.DESCRIPTOR,]) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + + + + +_INSTANCE = _descriptor.Descriptor( + name='Instance', + full_name='machinetalk.Instance', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='name', full_name='machinetalk.Instance.name', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='id', full_name='machinetalk.Instance.id', index=1, + number=2, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\274\005')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=119, + serialized_end=163, +) + + +_SERVICEANNOUNCEMENT = _descriptor.Descriptor( + name='ServiceAnnouncement', + full_name='machinetalk.ServiceAnnouncement', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='stype', full_name='machinetalk.ServiceAnnouncement.stype', index=0, + number=1, type=14, cpp_type=8, label=2, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='version', full_name='machinetalk.ServiceAnnouncement.version', index=1, + number=2, type=7, cpp_type=3, label=2, + has_default_value=True, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='instance', full_name='machinetalk.ServiceAnnouncement.instance', index=2, + number=3, type=7, cpp_type=3, label=2, + has_default_value=True, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='api', full_name='machinetalk.ServiceAnnouncement.api', index=3, + number=8, type=14, cpp_type=8, label=2, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='uri', full_name='machinetalk.ServiceAnnouncement.uri', index=4, + number=6, type=9, cpp_type=9, label=2, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='description', full_name='machinetalk.ServiceAnnouncement.description', index=5, + number=7, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\275\005')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=166, + serialized_end=349, +) + + +_ORIGINATOR = _descriptor.Descriptor( + name='Originator', + full_name='machinetalk.Originator', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='origin', full_name='machinetalk.Originator.origin', index=0, + number=1, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=10, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='detail', full_name='machinetalk.Originator.detail', index=1, + number=2, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=10, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='name', full_name='machinetalk.Originator.name', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='id', full_name='machinetalk.Originator.id', index=3, + number=4, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='instance', full_name='machinetalk.Originator.instance', index=4, + number=5, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\276\005')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=352, + serialized_end=523, +) + + +_ANERROR = _descriptor.Descriptor( + name='AnError', + full_name='machinetalk.AnError', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='error_code', full_name='machinetalk.AnError.error_code', index=0, + number=1, type=15, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='severity', full_name='machinetalk.AnError.severity', index=1, + number=2, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='error_text', full_name='machinetalk.AnError.error_text', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='origin', full_name='machinetalk.AnError.origin', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\277\005')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=526, + serialized_end=665, +) + + +_PIN = _descriptor.Descriptor( + name='Pin', + full_name='machinetalk.Pin', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='type', full_name='machinetalk.Pin.type', index=0, + number=1, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='name', full_name='machinetalk.Pin.name', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='handle', full_name='machinetalk.Pin.handle', index=2, + number=3, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='dir', full_name='machinetalk.Pin.dir', index=3, + number=4, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=16, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='halbit', full_name='machinetalk.Pin.halbit', index=4, + number=5, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='halfloat', full_name='machinetalk.Pin.halfloat', index=5, + number=6, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='hals32', full_name='machinetalk.Pin.hals32', index=6, + number=7, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='halu32', full_name='machinetalk.Pin.halu32', index=7, + number=8, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='owner', full_name='machinetalk.Pin.owner', index=8, + number=9, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='linked', full_name='machinetalk.Pin.linked', index=9, + number=10, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='oldname', full_name='machinetalk.Pin.oldname', index=10, + number=11, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='epsilon', full_name='machinetalk.Pin.epsilon', index=11, + number=12, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='flags', full_name='machinetalk.Pin.flags', index=12, + number=13, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\300\005')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=668, + serialized_end=938, +) + + +_SIGNAL = _descriptor.Descriptor( + name='Signal', + full_name='machinetalk.Signal', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='type', full_name='machinetalk.Signal.type', index=0, + number=1, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='name', full_name='machinetalk.Signal.name', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='handle', full_name='machinetalk.Signal.handle', index=2, + number=3, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='halbit', full_name='machinetalk.Signal.halbit', index=3, + number=5, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='halfloat', full_name='machinetalk.Signal.halfloat', index=4, + number=6, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='hals32', full_name='machinetalk.Signal.hals32', index=5, + number=7, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='halu32', full_name='machinetalk.Signal.halu32', index=6, + number=8, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='strval', full_name='machinetalk.Signal.strval', index=7, + number=9, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='blob', full_name='machinetalk.Signal.blob', index=8, + number=10, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='readers', full_name='machinetalk.Signal.readers', index=9, + number=11, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='writers', full_name='machinetalk.Signal.writers', index=10, + number=12, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='bidirs', full_name='machinetalk.Signal.bidirs', index=11, + number=13, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\301\005')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=941, + serialized_end=1171, +) + + +_PARAM = _descriptor.Descriptor( + name='Param', + full_name='machinetalk.Param', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='type', full_name='machinetalk.Param.type', index=0, + number=1, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='name', full_name='machinetalk.Param.name', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='handle', full_name='machinetalk.Param.handle', index=2, + number=3, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='halbit', full_name='machinetalk.Param.halbit', index=3, + number=5, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='halfloat', full_name='machinetalk.Param.halfloat', index=4, + number=6, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='hals32', full_name='machinetalk.Param.hals32', index=5, + number=7, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='halu32', full_name='machinetalk.Param.halu32', index=6, + number=8, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='strval', full_name='machinetalk.Param.strval', index=7, + number=9, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='blob', full_name='machinetalk.Param.blob', index=8, + number=10, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='dir', full_name='machinetalk.Param.dir', index=9, + number=11, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=64, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='oldname', full_name='machinetalk.Param.oldname', index=10, + number=12, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='owner', full_name='machinetalk.Param.owner', index=11, + number=13, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='runtime', full_name='machinetalk.Param.runtime', index=12, + number=14, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='maytime', full_name='machinetalk.Param.maytime', index=13, + number=15, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\302\005')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1174, + serialized_end=1464, +) + + +_FUNCTION = _descriptor.Descriptor( + name='Function', + full_name='machinetalk.Function', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='name', full_name='machinetalk.Function.name', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='handle', full_name='machinetalk.Function.handle', index=1, + number=2, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='owner_id', full_name='machinetalk.Function.owner_id', index=2, + number=3, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='users', full_name='machinetalk.Function.users', index=3, + number=4, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='runtime', full_name='machinetalk.Function.runtime', index=4, + number=5, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='maxtime', full_name='machinetalk.Function.maxtime', index=5, + number=6, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='reentrant', full_name='machinetalk.Function.reentrant', index=6, + number=7, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='type', full_name='machinetalk.Function.type', index=7, + number=8, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='maxtime_increased', full_name='machinetalk.Function.maxtime_increased', index=8, + number=9, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\303\005')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1467, + serialized_end=1669, +) + + +_THREAD = _descriptor.Descriptor( + name='Thread', + full_name='machinetalk.Thread', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='name', full_name='machinetalk.Thread.name', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='handle', full_name='machinetalk.Thread.handle', index=1, + number=2, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='uses_fp', full_name='machinetalk.Thread.uses_fp', index=2, + number=3, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='period', full_name='machinetalk.Thread.period', index=3, + number=4, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='priority', full_name='machinetalk.Thread.priority', index=4, + number=5, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='task_id', full_name='machinetalk.Thread.task_id', index=5, + number=6, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='cpu_id', full_name='machinetalk.Thread.cpu_id', index=6, + number=7, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='function', full_name='machinetalk.Thread.function', index=7, + number=8, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\304\005')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1672, + serialized_end=1820, +) + + +_COMPONENT = _descriptor.Descriptor( + name='Component', + full_name='machinetalk.Component', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='name', full_name='machinetalk.Component.name', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='ninst', full_name='machinetalk.Component.ninst', index=1, + number=2, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='comp_id', full_name='machinetalk.Component.comp_id', index=2, + number=4, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='type', full_name='machinetalk.Component.type', index=3, + number=5, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='state', full_name='machinetalk.Component.state', index=4, + number=6, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='last_update', full_name='machinetalk.Component.last_update', index=5, + number=7, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='last_bound', full_name='machinetalk.Component.last_bound', index=6, + number=8, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='last_unbound', full_name='machinetalk.Component.last_unbound', index=7, + number=9, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='pid', full_name='machinetalk.Component.pid', index=8, + number=10, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='args', full_name='machinetalk.Component.args', index=9, + number=11, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='timer', full_name='machinetalk.Component.timer', index=10, + number=12, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='userarg1', full_name='machinetalk.Component.userarg1', index=11, + number=14, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='userarg2', full_name='machinetalk.Component.userarg2', index=12, + number=15, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='pin', full_name='machinetalk.Component.pin', index=13, + number=16, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='param', full_name='machinetalk.Component.param', index=14, + number=17, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='funct', full_name='machinetalk.Component.funct', index=15, + number=19, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='no_create', full_name='machinetalk.Component.no_create', index=16, + number=18, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\305\005')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1823, + serialized_end=2181, +) + + +_RING = _descriptor.Descriptor( + name='Ring', + full_name='machinetalk.Ring', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='name', full_name='machinetalk.Ring.name', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='handle', full_name='machinetalk.Ring.handle', index=1, + number=2, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='owner', full_name='machinetalk.Ring.owner', index=2, + number=3, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='stream', full_name='machinetalk.Ring.stream', index=3, + number=4, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='wmutex', full_name='machinetalk.Ring.wmutex', index=4, + number=5, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='rmutex', full_name='machinetalk.Ring.rmutex', index=5, + number=6, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='rtapi_shm', full_name='machinetalk.Ring.rtapi_shm', index=6, + number=7, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='reader', full_name='machinetalk.Ring.reader', index=7, + number=8, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='writer', full_name='machinetalk.Ring.writer', index=8, + number=9, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='total_size', full_name='machinetalk.Ring.total_size', index=9, + number=10, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='scratchpad', full_name='machinetalk.Ring.scratchpad', index=10, + number=11, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='ring_shmkey', full_name='machinetalk.Ring.ring_shmkey', index=11, + number=12, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='encodings', full_name='machinetalk.Ring.encodings', index=12, + number=13, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\306\005')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2184, + serialized_end=2422, +) + + +_MEMBER = _descriptor.Descriptor( + name='Member', + full_name='machinetalk.Member', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='mtype', full_name='machinetalk.Member.mtype', index=0, + number=1, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='userarg1', full_name='machinetalk.Member.userarg1', index=1, + number=2, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='epsilon', full_name='machinetalk.Member.epsilon', index=2, + number=3, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='signal', full_name='machinetalk.Member.signal', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='groupname', full_name='machinetalk.Member.groupname', index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='handle', full_name='machinetalk.Member.handle', index=5, + number=6, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='pin', full_name='machinetalk.Member.pin', index=6, + number=7, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='param', full_name='machinetalk.Member.param', index=7, + number=8, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\307\005')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2425, + serialized_end=2654, +) + + +_GROUP = _descriptor.Descriptor( + name='Group', + full_name='machinetalk.Group', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='name', full_name='machinetalk.Group.name', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='handle', full_name='machinetalk.Group.handle', index=1, + number=2, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='userarg1', full_name='machinetalk.Group.userarg1', index=2, + number=4, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='userarg2', full_name='machinetalk.Group.userarg2', index=3, + number=5, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='refcount', full_name='machinetalk.Group.refcount', index=4, + number=6, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='member', full_name='machinetalk.Group.member', index=5, + number=7, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\310\005')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2657, + serialized_end=2793, +) + + +_PROTOCOLPARAMETERS = _descriptor.Descriptor( + name='ProtocolParameters', + full_name='machinetalk.ProtocolParameters', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='keepalive_timer', full_name='machinetalk.ProtocolParameters.keepalive_timer', index=0, + number=1, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='group_timer', full_name='machinetalk.ProtocolParameters.group_timer', index=1, + number=2, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='rcomp_timer', full_name='machinetalk.ProtocolParameters.rcomp_timer', index=2, + number=3, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\311\005')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2795, + serialized_end=2890, +) + + +_VTABLE = _descriptor.Descriptor( + name='Vtable', + full_name='machinetalk.Vtable', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='name', full_name='machinetalk.Vtable.name', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='handle', full_name='machinetalk.Vtable.handle', index=1, + number=2, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='owner_id', full_name='machinetalk.Vtable.owner_id', index=2, + number=3, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='context', full_name='machinetalk.Vtable.context', index=3, + number=5, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='refcount', full_name='machinetalk.Vtable.refcount', index=4, + number=6, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='version', full_name='machinetalk.Vtable.version', index=5, + number=7, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='vtable', full_name='machinetalk.Vtable.vtable', index=6, + number=8, type=6, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\312\005')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2893, + serialized_end=3025, +) + + +_INST = _descriptor.Descriptor( + name='Inst', + full_name='machinetalk.Inst', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='name', full_name='machinetalk.Inst.name', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='comp_id', full_name='machinetalk.Inst.comp_id', index=1, + number=2, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='inst_id', full_name='machinetalk.Inst.inst_id', index=2, + number=3, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='inst_size', full_name='machinetalk.Inst.inst_size', index=3, + number=4, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='vtable', full_name='machinetalk.Inst.vtable', index=4, + number=5, type=6, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='pin', full_name='machinetalk.Inst.pin', index=5, + number=16, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='param', full_name='machinetalk.Inst.param', index=6, + number=17, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='funct', full_name='machinetalk.Inst.funct', index=7, + number=19, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\313\005')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=3028, + serialized_end=3229, +) + +_SERVICEANNOUNCEMENT.fields_by_name['stype'].enum_type = machinetalk_dot_protobuf_dot_types__pb2._SERVICETYPE +_SERVICEANNOUNCEMENT.fields_by_name['api'].enum_type = machinetalk_dot_protobuf_dot_types__pb2._SERVICEAPI +_ORIGINATOR.fields_by_name['origin'].enum_type = machinetalk_dot_protobuf_dot_types__pb2._ORIGINTYPE +_ORIGINATOR.fields_by_name['detail'].enum_type = machinetalk_dot_protobuf_dot_types__pb2._ORIGINDETAIL +_ORIGINATOR.fields_by_name['instance'].message_type = _INSTANCE +_ANERROR.fields_by_name['severity'].enum_type = machinetalk_dot_protobuf_dot_types__pb2._SEVERITY +_ANERROR.fields_by_name['origin'].message_type = _ORIGINATOR +_PIN.fields_by_name['type'].enum_type = machinetalk_dot_protobuf_dot_types__pb2._VALUETYPE +_PIN.fields_by_name['dir'].enum_type = machinetalk_dot_protobuf_dot_types__pb2._HALPINDIRECTION +_SIGNAL.fields_by_name['type'].enum_type = machinetalk_dot_protobuf_dot_types__pb2._VALUETYPE +_PARAM.fields_by_name['type'].enum_type = machinetalk_dot_protobuf_dot_types__pb2._VALUETYPE +_PARAM.fields_by_name['dir'].enum_type = machinetalk_dot_protobuf_dot_types__pb2._HALPARAMDIRECTION +_FUNCTION.fields_by_name['type'].enum_type = machinetalk_dot_protobuf_dot_types__pb2._HALFUNCTTYPE +_COMPONENT.fields_by_name['pin'].message_type = _PIN +_COMPONENT.fields_by_name['param'].message_type = _PARAM +_COMPONENT.fields_by_name['funct'].message_type = _FUNCTION +_MEMBER.fields_by_name['mtype'].enum_type = machinetalk_dot_protobuf_dot_types__pb2._OBJECTTYPE +_MEMBER.fields_by_name['signal'].message_type = _SIGNAL +_MEMBER.fields_by_name['pin'].message_type = _PIN +_MEMBER.fields_by_name['param'].message_type = _PARAM +_GROUP.fields_by_name['member'].message_type = _MEMBER +_INST.fields_by_name['pin'].message_type = _PIN +_INST.fields_by_name['param'].message_type = _PARAM +_INST.fields_by_name['funct'].message_type = _FUNCTION +DESCRIPTOR.message_types_by_name['Instance'] = _INSTANCE +DESCRIPTOR.message_types_by_name['ServiceAnnouncement'] = _SERVICEANNOUNCEMENT +DESCRIPTOR.message_types_by_name['Originator'] = _ORIGINATOR +DESCRIPTOR.message_types_by_name['AnError'] = _ANERROR +DESCRIPTOR.message_types_by_name['Pin'] = _PIN +DESCRIPTOR.message_types_by_name['Signal'] = _SIGNAL +DESCRIPTOR.message_types_by_name['Param'] = _PARAM +DESCRIPTOR.message_types_by_name['Function'] = _FUNCTION +DESCRIPTOR.message_types_by_name['Thread'] = _THREAD +DESCRIPTOR.message_types_by_name['Component'] = _COMPONENT +DESCRIPTOR.message_types_by_name['Ring'] = _RING +DESCRIPTOR.message_types_by_name['Member'] = _MEMBER +DESCRIPTOR.message_types_by_name['Group'] = _GROUP +DESCRIPTOR.message_types_by_name['ProtocolParameters'] = _PROTOCOLPARAMETERS +DESCRIPTOR.message_types_by_name['Vtable'] = _VTABLE +DESCRIPTOR.message_types_by_name['Inst'] = _INST + +Instance = _reflection.GeneratedProtocolMessageType('Instance', (_message.Message,), dict( + DESCRIPTOR = _INSTANCE, + __module__ = 'machinetalk.protobuf.object_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Instance) + )) +_sym_db.RegisterMessage(Instance) + +ServiceAnnouncement = _reflection.GeneratedProtocolMessageType('ServiceAnnouncement', (_message.Message,), dict( + DESCRIPTOR = _SERVICEANNOUNCEMENT, + __module__ = 'machinetalk.protobuf.object_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.ServiceAnnouncement) + )) +_sym_db.RegisterMessage(ServiceAnnouncement) + +Originator = _reflection.GeneratedProtocolMessageType('Originator', (_message.Message,), dict( + DESCRIPTOR = _ORIGINATOR, + __module__ = 'machinetalk.protobuf.object_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Originator) + )) +_sym_db.RegisterMessage(Originator) + +AnError = _reflection.GeneratedProtocolMessageType('AnError', (_message.Message,), dict( + DESCRIPTOR = _ANERROR, + __module__ = 'machinetalk.protobuf.object_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.AnError) + )) +_sym_db.RegisterMessage(AnError) + +Pin = _reflection.GeneratedProtocolMessageType('Pin', (_message.Message,), dict( + DESCRIPTOR = _PIN, + __module__ = 'machinetalk.protobuf.object_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Pin) + )) +_sym_db.RegisterMessage(Pin) + +Signal = _reflection.GeneratedProtocolMessageType('Signal', (_message.Message,), dict( + DESCRIPTOR = _SIGNAL, + __module__ = 'machinetalk.protobuf.object_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Signal) + )) +_sym_db.RegisterMessage(Signal) + +Param = _reflection.GeneratedProtocolMessageType('Param', (_message.Message,), dict( + DESCRIPTOR = _PARAM, + __module__ = 'machinetalk.protobuf.object_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Param) + )) +_sym_db.RegisterMessage(Param) + +Function = _reflection.GeneratedProtocolMessageType('Function', (_message.Message,), dict( + DESCRIPTOR = _FUNCTION, + __module__ = 'machinetalk.protobuf.object_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Function) + )) +_sym_db.RegisterMessage(Function) + +Thread = _reflection.GeneratedProtocolMessageType('Thread', (_message.Message,), dict( + DESCRIPTOR = _THREAD, + __module__ = 'machinetalk.protobuf.object_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Thread) + )) +_sym_db.RegisterMessage(Thread) + +Component = _reflection.GeneratedProtocolMessageType('Component', (_message.Message,), dict( + DESCRIPTOR = _COMPONENT, + __module__ = 'machinetalk.protobuf.object_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Component) + )) +_sym_db.RegisterMessage(Component) + +Ring = _reflection.GeneratedProtocolMessageType('Ring', (_message.Message,), dict( + DESCRIPTOR = _RING, + __module__ = 'machinetalk.protobuf.object_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Ring) + )) +_sym_db.RegisterMessage(Ring) + +Member = _reflection.GeneratedProtocolMessageType('Member', (_message.Message,), dict( + DESCRIPTOR = _MEMBER, + __module__ = 'machinetalk.protobuf.object_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Member) + )) +_sym_db.RegisterMessage(Member) + +Group = _reflection.GeneratedProtocolMessageType('Group', (_message.Message,), dict( + DESCRIPTOR = _GROUP, + __module__ = 'machinetalk.protobuf.object_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Group) + )) +_sym_db.RegisterMessage(Group) + +ProtocolParameters = _reflection.GeneratedProtocolMessageType('ProtocolParameters', (_message.Message,), dict( + DESCRIPTOR = _PROTOCOLPARAMETERS, + __module__ = 'machinetalk.protobuf.object_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.ProtocolParameters) + )) +_sym_db.RegisterMessage(ProtocolParameters) + +Vtable = _reflection.GeneratedProtocolMessageType('Vtable', (_message.Message,), dict( + DESCRIPTOR = _VTABLE, + __module__ = 'machinetalk.protobuf.object_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Vtable) + )) +_sym_db.RegisterMessage(Vtable) + +Inst = _reflection.GeneratedProtocolMessageType('Inst', (_message.Message,), dict( + DESCRIPTOR = _INST, + __module__ = 'machinetalk.protobuf.object_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Inst) + )) +_sym_db.RegisterMessage(Inst) + + +_INSTANCE.has_options = True +_INSTANCE._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\274\005')) +_SERVICEANNOUNCEMENT.has_options = True +_SERVICEANNOUNCEMENT._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\275\005')) +_ORIGINATOR.has_options = True +_ORIGINATOR._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\276\005')) +_ANERROR.has_options = True +_ANERROR._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\277\005')) +_PIN.has_options = True +_PIN._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\300\005')) +_SIGNAL.has_options = True +_SIGNAL._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\301\005')) +_PARAM.has_options = True +_PARAM._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\302\005')) +_FUNCTION.has_options = True +_FUNCTION._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\303\005')) +_THREAD.has_options = True +_THREAD._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\304\005')) +_COMPONENT.has_options = True +_COMPONENT._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\305\005')) +_RING.has_options = True +_RING._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\306\005')) +_MEMBER.has_options = True +_MEMBER._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\307\005')) +_GROUP.has_options = True +_GROUP._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\310\005')) +_PROTOCOLPARAMETERS.has_options = True +_PROTOCOLPARAMETERS._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\311\005')) +_VTABLE.has_options = True +_VTABLE._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\312\005')) +_INST.has_options = True +_INST._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\313\005')) +# @@protoc_insertion_point(module_scope) diff --git a/python/machinetalk/protobuf/preview_pb2.py b/python/machinetalk/protobuf/preview_pb2.py new file mode 100644 index 0000000000..d9dbb4d60f --- /dev/null +++ b/python/machinetalk/protobuf/preview_pb2.py @@ -0,0 +1,538 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: machinetalk/protobuf/preview.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf.internal import enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from machinetalk.protobuf import nanopb_pb2 as machinetalk_dot_protobuf_dot_nanopb__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='machinetalk/protobuf/preview.proto', + package='machinetalk', + syntax='proto2', + serialized_pb=_b('\n\"machinetalk/protobuf/preview.proto\x12\x0bmachinetalk\x1a!machinetalk/protobuf/nanopb.proto\"u\n\x08Position\x12\t\n\x01x\x18\x03 \x01(\x01\x12\t\n\x01y\x18\x04 \x01(\x01\x12\t\n\x01z\x18\x05 \x01(\x01\x12\t\n\x01\x61\x18\x06 \x01(\x01\x12\t\n\x01\x62\x18\x07 \x01(\x01\x12\t\n\x01\x63\x18\x08 \x01(\x01\x12\t\n\x01u\x18\t \x01(\x01\x12\t\n\x01v\x18\n \x01(\x01\x12\t\n\x01w\x18\x0b \x01(\x01:\x06\x92?\x03H\xa0\x06\"\xd9\x04\n\x07Preview\x12(\n\x04type\x18\x01 \x02(\x0e\x32\x1a.machinetalk.PreviewOpType\x12\x13\n\x0bline_number\x18\x02 \x01(\x05\x12\"\n\x03pos\x18\x03 \x01(\x0b\x32\x15.machinetalk.Position\x12\x11\n\tfirst_end\x18\x04 \x01(\x01\x12\x12\n\nsecond_end\x18\x05 \x01(\x01\x12\x12\n\nfirst_axis\x18\x06 \x01(\x01\x12\x13\n\x0bsecond_axis\x18\x07 \x01(\x01\x12\x10\n\x08rotation\x18\x08 \x01(\x05\x12\x16\n\x0e\x61xis_end_point\x18\t \x01(\x01\x12\x13\n\x0bxy_rotation\x18\n \x01(\x01\x12\r\n\x05plane\x18\x0b \x01(\x05\x12\x0c\n\x04rate\x18\x0c \x01(\x01\x12\x11\n\tfeed_mode\x18\r \x01(\x05\x12\x0c\n\x04time\x18\x0e \x01(\x01\x12\x0c\n\x04text\x18\x0f \x01(\t\x12\x15\n\rangular_units\x18\x65 \x01(\x01\x12\x14\n\x0clength_units\x18\x66 \x01(\x01\x12\x11\n\tprobetype\x18g \x01(\x05\x12\x33\n\x04kins\x18h \x01(\x0e\x32\x1b.machinetalk.KinematicsType:\x08KT_JOINT\x12\x10\n\x08\x61xismask\x18i \x01(\x05\x12\x10\n\x08g5_index\x18j \x01(\x05\x12\x0e\n\x06pocket\x18k \x01(\x05\x12&\n\x05stype\x18n \x01(\x0e\x32\x17.machinetalk.SourceType\x12\x10\n\x08\x66ilename\x18o \x01(\t\x12\x11\n\tcmdstring\x18p \x01(\t\x12\x12\n\ncall_level\x18q \x01(\x05:\x06\x92?\x03H\xa1\x06*=\n\x0eKinematicsType\x12\x0c\n\x08KT_JOINT\x10\x01\x12\x0f\n\x0bKT_TRIVKINS\x10\x02\x12\x0c\n\x08KT_DELTA\x10\x03*\xe3\x03\n\rPreviewOpType\x12\x15\n\x11PV_STRAIGHT_PROBE\x10\x01\x12\x10\n\x0cPV_RIGID_TAP\x10\x02\x12\x14\n\x10PV_STRAIGHT_FEED\x10\x03\x12\x0f\n\x0bPV_ARC_FEED\x10\x04\x12\x18\n\x14PV_STRAIGHT_TRAVERSE\x10\x05\x12\x15\n\x11PV_SET_G5X_OFFSET\x10\x06\x12\x15\n\x11PV_SET_G92_OFFSET\x10\x07\x12\x16\n\x12PV_SET_XY_ROTATION\x10\x08\x12\x13\n\x0fPV_SELECT_PLANE\x10\t\x12\x18\n\x14PV_SET_TRAVERSE_RATE\x10\n\x12\x14\n\x10PV_SET_FEED_RATE\x10\x0b\x12\x12\n\x0ePV_CHANGE_TOOL\x10\x0c\x12\x19\n\x15PV_CHANGE_TOOL_NUMBER\x10\r\x12\x0c\n\x08PV_DWELL\x10\x0e\x12\x0e\n\nPV_MESSAGE\x10\x0f\x12\x0e\n\nPV_COMMENT\x10\x10\x12\x16\n\x12PV_USE_TOOL_OFFSET\x10\x11\x12\x11\n\rPV_SET_PARAMS\x10\x12\x12\x14\n\x10PV_SET_FEED_MODE\x10\x13\x12\x15\n\x11PV_SOURCE_CONTEXT\x10\x14\x12\x14\n\x10PV_PREVIEW_START\x10\x15\x12\x12\n\x0ePV_PREVIEW_END\x10\x16*F\n\nSourceType\x12\x0f\n\x0bST_NGC_FILE\x10\x01\x12\x11\n\rST_NGC_STRING\x10\x02\x12\x14\n\x10ST_PYTHON_METHOD\x10\x03') + , + dependencies=[machinetalk_dot_protobuf_dot_nanopb__pb2.DESCRIPTOR,]) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +_KINEMATICSTYPE = _descriptor.EnumDescriptor( + name='KinematicsType', + full_name='machinetalk.KinematicsType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='KT_JOINT', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='KT_TRIVKINS', index=1, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='KT_DELTA', index=2, number=3, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=809, + serialized_end=870, +) +_sym_db.RegisterEnumDescriptor(_KINEMATICSTYPE) + +KinematicsType = enum_type_wrapper.EnumTypeWrapper(_KINEMATICSTYPE) +_PREVIEWOPTYPE = _descriptor.EnumDescriptor( + name='PreviewOpType', + full_name='machinetalk.PreviewOpType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='PV_STRAIGHT_PROBE', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PV_RIGID_TAP', index=1, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PV_STRAIGHT_FEED', index=2, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PV_ARC_FEED', index=3, number=4, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PV_STRAIGHT_TRAVERSE', index=4, number=5, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PV_SET_G5X_OFFSET', index=5, number=6, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PV_SET_G92_OFFSET', index=6, number=7, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PV_SET_XY_ROTATION', index=7, number=8, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PV_SELECT_PLANE', index=8, number=9, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PV_SET_TRAVERSE_RATE', index=9, number=10, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PV_SET_FEED_RATE', index=10, number=11, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PV_CHANGE_TOOL', index=11, number=12, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PV_CHANGE_TOOL_NUMBER', index=12, number=13, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PV_DWELL', index=13, number=14, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PV_MESSAGE', index=14, number=15, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PV_COMMENT', index=15, number=16, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PV_USE_TOOL_OFFSET', index=16, number=17, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PV_SET_PARAMS', index=17, number=18, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PV_SET_FEED_MODE', index=18, number=19, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PV_SOURCE_CONTEXT', index=19, number=20, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PV_PREVIEW_START', index=20, number=21, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PV_PREVIEW_END', index=21, number=22, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=873, + serialized_end=1356, +) +_sym_db.RegisterEnumDescriptor(_PREVIEWOPTYPE) + +PreviewOpType = enum_type_wrapper.EnumTypeWrapper(_PREVIEWOPTYPE) +_SOURCETYPE = _descriptor.EnumDescriptor( + name='SourceType', + full_name='machinetalk.SourceType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='ST_NGC_FILE', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ST_NGC_STRING', index=1, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ST_PYTHON_METHOD', index=2, number=3, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=1358, + serialized_end=1428, +) +_sym_db.RegisterEnumDescriptor(_SOURCETYPE) + +SourceType = enum_type_wrapper.EnumTypeWrapper(_SOURCETYPE) +KT_JOINT = 1 +KT_TRIVKINS = 2 +KT_DELTA = 3 +PV_STRAIGHT_PROBE = 1 +PV_RIGID_TAP = 2 +PV_STRAIGHT_FEED = 3 +PV_ARC_FEED = 4 +PV_STRAIGHT_TRAVERSE = 5 +PV_SET_G5X_OFFSET = 6 +PV_SET_G92_OFFSET = 7 +PV_SET_XY_ROTATION = 8 +PV_SELECT_PLANE = 9 +PV_SET_TRAVERSE_RATE = 10 +PV_SET_FEED_RATE = 11 +PV_CHANGE_TOOL = 12 +PV_CHANGE_TOOL_NUMBER = 13 +PV_DWELL = 14 +PV_MESSAGE = 15 +PV_COMMENT = 16 +PV_USE_TOOL_OFFSET = 17 +PV_SET_PARAMS = 18 +PV_SET_FEED_MODE = 19 +PV_SOURCE_CONTEXT = 20 +PV_PREVIEW_START = 21 +PV_PREVIEW_END = 22 +ST_NGC_FILE = 1 +ST_NGC_STRING = 2 +ST_PYTHON_METHOD = 3 + + + +_POSITION = _descriptor.Descriptor( + name='Position', + full_name='machinetalk.Position', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='x', full_name='machinetalk.Position.x', index=0, + number=3, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='y', full_name='machinetalk.Position.y', index=1, + number=4, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='z', full_name='machinetalk.Position.z', index=2, + number=5, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='a', full_name='machinetalk.Position.a', index=3, + number=6, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='b', full_name='machinetalk.Position.b', index=4, + number=7, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='c', full_name='machinetalk.Position.c', index=5, + number=8, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='u', full_name='machinetalk.Position.u', index=6, + number=9, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='v', full_name='machinetalk.Position.v', index=7, + number=10, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='w', full_name='machinetalk.Position.w', index=8, + number=11, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\240\006')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=86, + serialized_end=203, +) + + +_PREVIEW = _descriptor.Descriptor( + name='Preview', + full_name='machinetalk.Preview', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='type', full_name='machinetalk.Preview.type', index=0, + number=1, type=14, cpp_type=8, label=2, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='line_number', full_name='machinetalk.Preview.line_number', index=1, + number=2, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='pos', full_name='machinetalk.Preview.pos', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='first_end', full_name='machinetalk.Preview.first_end', index=3, + number=4, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='second_end', full_name='machinetalk.Preview.second_end', index=4, + number=5, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='first_axis', full_name='machinetalk.Preview.first_axis', index=5, + number=6, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='second_axis', full_name='machinetalk.Preview.second_axis', index=6, + number=7, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='rotation', full_name='machinetalk.Preview.rotation', index=7, + number=8, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='axis_end_point', full_name='machinetalk.Preview.axis_end_point', index=8, + number=9, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='xy_rotation', full_name='machinetalk.Preview.xy_rotation', index=9, + number=10, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='plane', full_name='machinetalk.Preview.plane', index=10, + number=11, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='rate', full_name='machinetalk.Preview.rate', index=11, + number=12, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='feed_mode', full_name='machinetalk.Preview.feed_mode', index=12, + number=13, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='time', full_name='machinetalk.Preview.time', index=13, + number=14, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='text', full_name='machinetalk.Preview.text', index=14, + number=15, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='angular_units', full_name='machinetalk.Preview.angular_units', index=15, + number=101, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='length_units', full_name='machinetalk.Preview.length_units', index=16, + number=102, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='probetype', full_name='machinetalk.Preview.probetype', index=17, + number=103, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='kins', full_name='machinetalk.Preview.kins', index=18, + number=104, type=14, cpp_type=8, label=1, + has_default_value=True, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='axismask', full_name='machinetalk.Preview.axismask', index=19, + number=105, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='g5_index', full_name='machinetalk.Preview.g5_index', index=20, + number=106, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='pocket', full_name='machinetalk.Preview.pocket', index=21, + number=107, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='stype', full_name='machinetalk.Preview.stype', index=22, + number=110, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='filename', full_name='machinetalk.Preview.filename', index=23, + number=111, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='cmdstring', full_name='machinetalk.Preview.cmdstring', index=24, + number=112, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='call_level', full_name='machinetalk.Preview.call_level', index=25, + number=113, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\241\006')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=206, + serialized_end=807, +) + +_PREVIEW.fields_by_name['type'].enum_type = _PREVIEWOPTYPE +_PREVIEW.fields_by_name['pos'].message_type = _POSITION +_PREVIEW.fields_by_name['kins'].enum_type = _KINEMATICSTYPE +_PREVIEW.fields_by_name['stype'].enum_type = _SOURCETYPE +DESCRIPTOR.message_types_by_name['Position'] = _POSITION +DESCRIPTOR.message_types_by_name['Preview'] = _PREVIEW +DESCRIPTOR.enum_types_by_name['KinematicsType'] = _KINEMATICSTYPE +DESCRIPTOR.enum_types_by_name['PreviewOpType'] = _PREVIEWOPTYPE +DESCRIPTOR.enum_types_by_name['SourceType'] = _SOURCETYPE + +Position = _reflection.GeneratedProtocolMessageType('Position', (_message.Message,), dict( + DESCRIPTOR = _POSITION, + __module__ = 'machinetalk.protobuf.preview_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Position) + )) +_sym_db.RegisterMessage(Position) + +Preview = _reflection.GeneratedProtocolMessageType('Preview', (_message.Message,), dict( + DESCRIPTOR = _PREVIEW, + __module__ = 'machinetalk.protobuf.preview_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Preview) + )) +_sym_db.RegisterMessage(Preview) + + +_POSITION.has_options = True +_POSITION._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\240\006')) +_PREVIEW.has_options = True +_PREVIEW._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\241\006')) +# @@protoc_insertion_point(module_scope) diff --git a/python/machinetalk/protobuf/ros_pb2.py b/python/machinetalk/protobuf/ros_pb2.py new file mode 100644 index 0000000000..4db39399ba --- /dev/null +++ b/python/machinetalk/protobuf/ros_pb2.py @@ -0,0 +1,286 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: machinetalk/protobuf/ros.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from machinetalk.protobuf import nanopb_pb2 as machinetalk_dot_protobuf_dot_nanopb__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='machinetalk/protobuf/ros.proto', + package='machinetalk', + syntax='proto2', + serialized_pb=_b('\n\x1emachinetalk/protobuf/ros.proto\x12\x0bmachinetalk\x1a!machinetalk/protobuf/nanopb.proto\"+\n\x04Time\x12\x0c\n\x04secs\x18\x01 \x01(\r\x12\r\n\x05nsecs\x18\x02 \x01(\r:\x06\x92?\x03H\xf3\x02\"X\n\x06Header\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12 \n\x05stamp\x18\x02 \x01(\x0b\x32\x11.machinetalk.Time\x12\x17\n\x08\x66rame_id\x18\x03 \x01(\tB\x05\x92?\x02\x08\x14:\x06\x92?\x03H\xf4\x02\"\xc3\x01\n\x14JointTrajectoryPoint\x12\x18\n\tpositions\x18\x01 \x03(\x01\x42\x05\x92?\x02\x10\n\x12\x19\n\nvelocities\x18\x02 \x03(\x01\x42\x05\x92?\x02\x10\n\x12\x1c\n\raccelerations\x18\x03 \x03(\x01\x42\x05\x92?\x02\x10\n\x12\x15\n\x06\x65\x66\x66ort\x18\x04 \x03(\x01\x42\x05\x92?\x02\x10\n\x12\x17\n\x0ftime_from_start\x18\x05 \x01(\x01\x12\x10\n\x08\x64uration\x18\x07 \x01(\x01\x12\x0e\n\x06serial\x18\x08 \x01(\r:\x06\x92?\x03H\xf5\x02\"\x86\x01\n\x0fJointTrajectory\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.machinetalk.Header\x12\x13\n\x0bjoint_names\x18\x02 \x03(\t\x12\x31\n\x06points\x18\x03 \x03(\x0b\x32!.machinetalk.JointTrajectoryPoint:\x06\x92?\x03H\xf6\x02') + , + dependencies=[machinetalk_dot_protobuf_dot_nanopb__pb2.DESCRIPTOR,]) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + + + + +_TIME = _descriptor.Descriptor( + name='Time', + full_name='machinetalk.Time', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='secs', full_name='machinetalk.Time.secs', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='nsecs', full_name='machinetalk.Time.nsecs', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\363\002')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=82, + serialized_end=125, +) + + +_HEADER = _descriptor.Descriptor( + name='Header', + full_name='machinetalk.Header', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='seq', full_name='machinetalk.Header.seq', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='stamp', full_name='machinetalk.Header.stamp', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='frame_id', full_name='machinetalk.Header.frame_id', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\010\024'))), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\364\002')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=127, + serialized_end=215, +) + + +_JOINTTRAJECTORYPOINT = _descriptor.Descriptor( + name='JointTrajectoryPoint', + full_name='machinetalk.JointTrajectoryPoint', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='positions', full_name='machinetalk.JointTrajectoryPoint.positions', index=0, + number=1, type=1, cpp_type=5, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\020\n'))), + _descriptor.FieldDescriptor( + name='velocities', full_name='machinetalk.JointTrajectoryPoint.velocities', index=1, + number=2, type=1, cpp_type=5, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\020\n'))), + _descriptor.FieldDescriptor( + name='accelerations', full_name='machinetalk.JointTrajectoryPoint.accelerations', index=2, + number=3, type=1, cpp_type=5, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\020\n'))), + _descriptor.FieldDescriptor( + name='effort', full_name='machinetalk.JointTrajectoryPoint.effort', index=3, + number=4, type=1, cpp_type=5, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\020\n'))), + _descriptor.FieldDescriptor( + name='time_from_start', full_name='machinetalk.JointTrajectoryPoint.time_from_start', index=4, + number=5, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='duration', full_name='machinetalk.JointTrajectoryPoint.duration', index=5, + number=7, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='serial', full_name='machinetalk.JointTrajectoryPoint.serial', index=6, + number=8, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\365\002')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=218, + serialized_end=413, +) + + +_JOINTTRAJECTORY = _descriptor.Descriptor( + name='JointTrajectory', + full_name='machinetalk.JointTrajectory', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='header', full_name='machinetalk.JointTrajectory.header', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='joint_names', full_name='machinetalk.JointTrajectory.joint_names', index=1, + number=2, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='points', full_name='machinetalk.JointTrajectory.points', index=2, + number=3, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\366\002')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=416, + serialized_end=550, +) + +_HEADER.fields_by_name['stamp'].message_type = _TIME +_JOINTTRAJECTORY.fields_by_name['header'].message_type = _HEADER +_JOINTTRAJECTORY.fields_by_name['points'].message_type = _JOINTTRAJECTORYPOINT +DESCRIPTOR.message_types_by_name['Time'] = _TIME +DESCRIPTOR.message_types_by_name['Header'] = _HEADER +DESCRIPTOR.message_types_by_name['JointTrajectoryPoint'] = _JOINTTRAJECTORYPOINT +DESCRIPTOR.message_types_by_name['JointTrajectory'] = _JOINTTRAJECTORY + +Time = _reflection.GeneratedProtocolMessageType('Time', (_message.Message,), dict( + DESCRIPTOR = _TIME, + __module__ = 'machinetalk.protobuf.ros_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Time) + )) +_sym_db.RegisterMessage(Time) + +Header = _reflection.GeneratedProtocolMessageType('Header', (_message.Message,), dict( + DESCRIPTOR = _HEADER, + __module__ = 'machinetalk.protobuf.ros_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Header) + )) +_sym_db.RegisterMessage(Header) + +JointTrajectoryPoint = _reflection.GeneratedProtocolMessageType('JointTrajectoryPoint', (_message.Message,), dict( + DESCRIPTOR = _JOINTTRAJECTORYPOINT, + __module__ = 'machinetalk.protobuf.ros_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.JointTrajectoryPoint) + )) +_sym_db.RegisterMessage(JointTrajectoryPoint) + +JointTrajectory = _reflection.GeneratedProtocolMessageType('JointTrajectory', (_message.Message,), dict( + DESCRIPTOR = _JOINTTRAJECTORY, + __module__ = 'machinetalk.protobuf.ros_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.JointTrajectory) + )) +_sym_db.RegisterMessage(JointTrajectory) + + +_TIME.has_options = True +_TIME._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\363\002')) +_HEADER.fields_by_name['frame_id'].has_options = True +_HEADER.fields_by_name['frame_id']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\010\024')) +_HEADER.has_options = True +_HEADER._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\364\002')) +_JOINTTRAJECTORYPOINT.fields_by_name['positions'].has_options = True +_JOINTTRAJECTORYPOINT.fields_by_name['positions']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\020\n')) +_JOINTTRAJECTORYPOINT.fields_by_name['velocities'].has_options = True +_JOINTTRAJECTORYPOINT.fields_by_name['velocities']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\020\n')) +_JOINTTRAJECTORYPOINT.fields_by_name['accelerations'].has_options = True +_JOINTTRAJECTORYPOINT.fields_by_name['accelerations']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\020\n')) +_JOINTTRAJECTORYPOINT.fields_by_name['effort'].has_options = True +_JOINTTRAJECTORYPOINT.fields_by_name['effort']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\020\n')) +_JOINTTRAJECTORYPOINT.has_options = True +_JOINTTRAJECTORYPOINT._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\365\002')) +_JOINTTRAJECTORY.has_options = True +_JOINTTRAJECTORY._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\366\002')) +# @@protoc_insertion_point(module_scope) diff --git a/python/machinetalk/protobuf/rtapi_message_pb2.py b/python/machinetalk/protobuf/rtapi_message_pb2.py new file mode 100644 index 0000000000..ad6e6254f9 --- /dev/null +++ b/python/machinetalk/protobuf/rtapi_message_pb2.py @@ -0,0 +1,93 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: machinetalk/protobuf/rtapi_message.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from machinetalk.protobuf import nanopb_pb2 as machinetalk_dot_protobuf_dot_nanopb__pb2 +from machinetalk.protobuf import value_pb2 as machinetalk_dot_protobuf_dot_value__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='machinetalk/protobuf/rtapi_message.proto', + package='machinetalk', + syntax='proto2', + serialized_pb=_b('\n(machinetalk/protobuf/rtapi_message.proto\x12\x0bmachinetalk\x1a!machinetalk/protobuf/nanopb.proto\x1a machinetalk/protobuf/value.proto\"\x7f\n\rRTAPI_Message\x12\x10\n\x08msglevel\x18\n \x02(\x05\x12,\n\x06\x66ormat\x18\x14 \x02(\t:\x15*** uninitialized ***B\x05\x92?\x02\x08\x64\x12&\n\x03\x61rg\x18\x1e \x03(\x0b\x32\x12.machinetalk.ValueB\x05\x92?\x02\x10\n:\x06\x92?\x03H\xe8\x07') + , + dependencies=[machinetalk_dot_protobuf_dot_nanopb__pb2.DESCRIPTOR,machinetalk_dot_protobuf_dot_value__pb2.DESCRIPTOR,]) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + + + + +_RTAPI_MESSAGE = _descriptor.Descriptor( + name='RTAPI_Message', + full_name='machinetalk.RTAPI_Message', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='msglevel', full_name='machinetalk.RTAPI_Message.msglevel', index=0, + number=10, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='format', full_name='machinetalk.RTAPI_Message.format', index=1, + number=20, type=9, cpp_type=9, label=2, + has_default_value=True, default_value=_b("*** uninitialized ***").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\010d'))), + _descriptor.FieldDescriptor( + name='arg', full_name='machinetalk.RTAPI_Message.arg', index=2, + number=30, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\020\n'))), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\350\007')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=126, + serialized_end=253, +) + +_RTAPI_MESSAGE.fields_by_name['arg'].message_type = machinetalk_dot_protobuf_dot_value__pb2._VALUE +DESCRIPTOR.message_types_by_name['RTAPI_Message'] = _RTAPI_MESSAGE + +RTAPI_Message = _reflection.GeneratedProtocolMessageType('RTAPI_Message', (_message.Message,), dict( + DESCRIPTOR = _RTAPI_MESSAGE, + __module__ = 'machinetalk.protobuf.rtapi_message_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.RTAPI_Message) + )) +_sym_db.RegisterMessage(RTAPI_Message) + + +_RTAPI_MESSAGE.fields_by_name['format'].has_options = True +_RTAPI_MESSAGE.fields_by_name['format']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\010d')) +_RTAPI_MESSAGE.fields_by_name['arg'].has_options = True +_RTAPI_MESSAGE.fields_by_name['arg']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\020\n')) +_RTAPI_MESSAGE.has_options = True +_RTAPI_MESSAGE._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\350\007')) +# @@protoc_insertion_point(module_scope) diff --git a/python/machinetalk/protobuf/rtapicommand_pb2.py b/python/machinetalk/protobuf/rtapicommand_pb2.py new file mode 100644 index 0000000000..5ee645b43e --- /dev/null +++ b/python/machinetalk/protobuf/rtapicommand_pb2.py @@ -0,0 +1,157 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: machinetalk/protobuf/rtapicommand.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from machinetalk.protobuf import nanopb_pb2 as machinetalk_dot_protobuf_dot_nanopb__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='machinetalk/protobuf/rtapicommand.proto', + package='machinetalk', + syntax='proto2', + serialized_pb=_b('\n\'machinetalk/protobuf/rtapicommand.proto\x12\x0bmachinetalk\x1a!machinetalk/protobuf/nanopb.proto\"\xf7\x01\n\x0cRTAPICommand\x12\x10\n\x08instance\x18\x01 \x02(\x05\x12\x0f\n\x07modname\x18\x02 \x01(\t\x12\x13\n\x0brt_msglevel\x18\x03 \x01(\x05\x12\x15\n\ruser_msglevel\x18\x04 \x01(\x05\x12\x0c\n\x04\x61rgv\x18\x05 \x03(\t\x12\x12\n\nthreadname\x18\x06 \x01(\t\x12\x14\n\x0cthreadperiod\x18\x07 \x01(\x05\x12\x0e\n\x06use_fp\x18\x08 \x01(\x08\x12\x0b\n\x03\x63pu\x18\t \x01(\x05\x12\x0c\n\x04\x63omp\x18\n \x01(\t\x12\x0c\n\x04\x66unc\x18\x0b \x01(\t\x12\x10\n\x08instname\x18\x0c \x01(\t\x12\r\n\x05\x66lags\x18\r \x01(\x05:\x06\x92?\x03H\x84\x07') + , + dependencies=[machinetalk_dot_protobuf_dot_nanopb__pb2.DESCRIPTOR,]) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + + + + +_RTAPICOMMAND = _descriptor.Descriptor( + name='RTAPICommand', + full_name='machinetalk.RTAPICommand', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='instance', full_name='machinetalk.RTAPICommand.instance', index=0, + number=1, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='modname', full_name='machinetalk.RTAPICommand.modname', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='rt_msglevel', full_name='machinetalk.RTAPICommand.rt_msglevel', index=2, + number=3, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='user_msglevel', full_name='machinetalk.RTAPICommand.user_msglevel', index=3, + number=4, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='argv', full_name='machinetalk.RTAPICommand.argv', index=4, + number=5, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='threadname', full_name='machinetalk.RTAPICommand.threadname', index=5, + number=6, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='threadperiod', full_name='machinetalk.RTAPICommand.threadperiod', index=6, + number=7, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='use_fp', full_name='machinetalk.RTAPICommand.use_fp', index=7, + number=8, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='cpu', full_name='machinetalk.RTAPICommand.cpu', index=8, + number=9, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='comp', full_name='machinetalk.RTAPICommand.comp', index=9, + number=10, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='func', full_name='machinetalk.RTAPICommand.func', index=10, + number=11, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='instname', full_name='machinetalk.RTAPICommand.instname', index=11, + number=12, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='flags', full_name='machinetalk.RTAPICommand.flags', index=12, + number=13, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\204\007')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=92, + serialized_end=339, +) + +DESCRIPTOR.message_types_by_name['RTAPICommand'] = _RTAPICOMMAND + +RTAPICommand = _reflection.GeneratedProtocolMessageType('RTAPICommand', (_message.Message,), dict( + DESCRIPTOR = _RTAPICOMMAND, + __module__ = 'machinetalk.protobuf.rtapicommand_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.RTAPICommand) + )) +_sym_db.RegisterMessage(RTAPICommand) + + +_RTAPICOMMAND.has_options = True +_RTAPICOMMAND._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\204\007')) +# @@protoc_insertion_point(module_scope) diff --git a/python/machinetalk/protobuf/status_pb2.py b/python/machinetalk/protobuf/status_pb2.py new file mode 100644 index 0000000000..2740319e04 --- /dev/null +++ b/python/machinetalk/protobuf/status_pb2.py @@ -0,0 +1,2492 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: machinetalk/protobuf/status.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf.internal import enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from machinetalk.protobuf import nanopb_pb2 as machinetalk_dot_protobuf_dot_nanopb__pb2 +from machinetalk.protobuf import types_pb2 as machinetalk_dot_protobuf_dot_types__pb2 +from machinetalk.protobuf import preview_pb2 as machinetalk_dot_protobuf_dot_preview__pb2 +from machinetalk.protobuf import emcclass_pb2 as machinetalk_dot_protobuf_dot_emcclass__pb2 +from machinetalk.protobuf import motcmds_pb2 as machinetalk_dot_protobuf_dot_motcmds__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='machinetalk/protobuf/status.proto', + package='machinetalk', + syntax='proto2', + serialized_pb=_b('\n!machinetalk/protobuf/status.proto\x12\x0bmachinetalk\x1a!machinetalk/protobuf/nanopb.proto\x1a machinetalk/protobuf/types.proto\x1a\"machinetalk/protobuf/preview.proto\x1a#machinetalk/protobuf/emcclass.proto\x1a\"machinetalk/protobuf/motcmds.proto\"\xc6\x01\n\x0b\x45mcToolData\x12\r\n\x05index\x18\x01 \x02(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\x12\x10\n\x08\x64iameter\x18\x0c \x01(\x01\x12\x12\n\nfrontangle\x18\r \x01(\x01\x12\x11\n\tbackangle\x18\x0e \x01(\x01\x12\x13\n\x0borientation\x18\x0f \x01(\x05\x12%\n\x06offset\x18\x10 \x01(\x0b\x32\x15.machinetalk.Position\x12\x0f\n\x07\x63omment\x18\x11 \x01(\t\x12\x0e\n\x06pocket\x18\x12 \x01(\x05:\x06\x92?\x03H\xcc\x08\"\xd5\x02\n\x13\x45mcStatusMotionAxis\x12\r\n\x05index\x18\x01 \x02(\x05\x12\x0f\n\x07\x65nabled\x18\x02 \x01(\x08\x12\r\n\x05\x66\x61ult\x18\x03 \x01(\x08\x12\x16\n\x0e\x66\x65rror_current\x18\x04 \x01(\x01\x12\x17\n\x0f\x66\x65rror_highmark\x18\x05 \x01(\x01\x12\r\n\x05homed\x18\x06 \x01(\x08\x12\x0e\n\x06homing\x18\x07 \x01(\x08\x12\r\n\x05inpos\x18\x08 \x01(\x08\x12\r\n\x05input\x18\t \x01(\x01\x12\x16\n\x0emax_hard_limit\x18\n \x01(\x08\x12\x16\n\x0emax_soft_limit\x18\x0b \x01(\x08\x12\x16\n\x0emin_hard_limit\x18\x0c \x01(\x08\x12\x16\n\x0emin_soft_limit\x18\r \x01(\x08\x12\x0e\n\x06output\x18\x0e \x01(\x01\x12\x17\n\x0foverride_limits\x18\x0f \x01(\x08\x12\x10\n\x08velocity\x18\x10 \x01(\x01:\x06\x92?\x03H\xcd\x08\"\xa6\x02\n\x13\x45mcStatusConfigAxis\x12\r\n\x05index\x18\x01 \x02(\x05\x12+\n\taxis_type\x18\x02 \x01(\x0e\x32\x18.machinetalk.EmcAxisType\x12\x10\n\x08\x62\x61\x63klash\x18\x03 \x01(\x01\x12\x12\n\nmax_ferror\x18\x04 \x01(\x01\x12\x1a\n\x12max_position_limit\x18\x05 \x01(\x01\x12\x12\n\nmin_ferror\x18\x06 \x01(\x01\x12\x1a\n\x12min_position_limit\x18\x07 \x01(\x01\x12\x15\n\rhome_sequence\x18\t \x01(\x05\x12\x18\n\x10max_acceleration\x18\n \x01(\x01\x12\x14\n\x0cmax_velocity\x18\x0b \x01(\x01\x12\x12\n\nincrements\x18\x0c \x01(\t:\x06\x92?\x03H\xce\x08\"?\n\x13\x45mcProgramExtension\x12\r\n\x05index\x18\x01 \x02(\x05\x12\x11\n\textension\x18\x02 \x01(\t:\x06\x92?\x03H\xcf\x08\"9\n\x11\x45mcStatusAnalogIO\x12\r\n\x05index\x18\x01 \x02(\x05\x12\r\n\x05value\x18\x02 \x01(\x01:\x06\x92?\x03H\xd0\x08\":\n\x12\x45mcStatusDigitalIO\x12\r\n\x05index\x18\x01 \x02(\x05\x12\r\n\x05value\x18\x02 \x01(\x08:\x06\x92?\x03H\xd1\x08\"6\n\x0e\x45mcStatusLimit\x12\r\n\x05index\x18\x01 \x02(\x05\x12\r\n\x05value\x18\x02 \x01(\x05:\x06\x92?\x03H\xd2\x08\"6\n\x0e\x45mcStatusGCode\x12\r\n\x05index\x18\x01 \x02(\x05\x12\r\n\x05value\x18\x02 \x01(\x05:\x06\x92?\x03H\xd3\x08\"6\n\x0e\x45mcStatusMCode\x12\r\n\x05index\x18\x01 \x02(\x05\x12\r\n\x05value\x18\x02 \x01(\x05:\x06\x92?\x03H\xd4\x08\"8\n\x10\x45mcStatusSetting\x12\r\n\x05index\x18\x01 \x02(\x05\x12\r\n\x05value\x18\x02 \x01(\x01:\x06\x92?\x03H\xd5\x08\"\xba\t\n\x0f\x45mcStatusConfig\x12\x1c\n\x14\x64\x65\x66\x61ult_acceleration\x18\x01 \x01(\x01\x12\x0c\n\x04\x61xes\x18\x03 \x01(\x05\x12.\n\x04\x61xis\x18\x04 \x03(\x0b\x32 .machinetalk.EmcStatusConfigAxis\x12\x11\n\taxis_mask\x18\x05 \x01(\x05\x12\x12\n\ncycle_time\x18\x06 \x01(\x01\x12\r\n\x05\x64\x65\x62ug\x18\x07 \x01(\x05\x12\x37\n\x0fkinematics_type\x18\x08 \x01(\x0e\x32\x1e.machinetalk.EmcKinematicsType\x12\x18\n\x10max_acceleration\x18\n \x01(\x01\x12\x14\n\x0cmax_velocity\x18\x0b \x01(\x01\x12\x35\n\x0clinear_units\x18\x0c \x01(\x0e\x32\x1f.machinetalk.EmcLinearUnitsType\x12\x18\n\x10\x64\x65\x66\x61ult_velocity\x18\r \x01(\x01\x12;\n\x11program_extension\x18\x0e \x03(\x0b\x32 .machinetalk.EmcProgramExtension\x12;\n\x0fposition_offset\x18\x0f \x01(\x0e\x32\".machinetalk.EmcPositionOffsetType\x12?\n\x11position_feedback\x18\x10 \x01(\x0e\x32$.machinetalk.EmcPositionFeedbackType\x12\x19\n\x11max_feed_override\x18\x11 \x01(\x01\x12\x19\n\x11min_feed_override\x18\x12 \x01(\x01\x12\x1c\n\x14max_spindle_override\x18\x13 \x01(\x01\x12\x1c\n\x14min_spindle_override\x18\x14 \x01(\x01\x12\x1d\n\x15\x64\x65\x66\x61ult_spindle_speed\x18\x15 \x01(\x01\x12\x1f\n\x17\x64\x65\x66\x61ult_linear_velocity\x18\x16 \x01(\x01\x12\x14\n\x0cmin_velocity\x18\x17 \x01(\x01\x12\x1b\n\x13max_linear_velocity\x18\x18 \x01(\x01\x12\x1b\n\x13min_linear_velocity\x18\x19 \x01(\x01\x12 \n\x18\x64\x65\x66\x61ult_angular_velocity\x18\x1a \x01(\x01\x12\x1c\n\x14max_angular_velocity\x18\x1b \x01(\x01\x12\x1c\n\x14min_angular_velocity\x18\x1c \x01(\x01\x12\x12\n\nincrements\x18\x1d \x01(\t\x12\r\n\x05grids\x18\x1e \x01(\t\x12\r\n\x05lathe\x18\x1f \x01(\x08\x12\x10\n\x08geometry\x18 \x01(\t\x12\x13\n\x0b\x61rcdivision\x18! \x01(\r\x12\x17\n\x0fno_force_homing\x18\" \x01(\x08\x12\x13\n\x0bremote_path\x18# \x01(\t\x12\x31\n\ntime_units\x18$ \x01(\x0e\x32\x1d.machinetalk.EmcTimeUnitsType\x12\x0c\n\x04name\x18% \x01(\t\x12\x37\n\x0cuser_command\x18& \x03(\x0b\x32!.machinetalk.EmcStatusUserCommand\x12\x37\n\rangular_units\x18\' \x01(\x0e\x32 .machinetalk.EmcAngularUnitsType:\x06\x92?\x03H\xd6\x08\"\xfb\x0b\n\x0f\x45mcStatusMotion\x12\x14\n\x0c\x61\x63tive_queue\x18\x01 \x01(\x05\x12.\n\x0f\x61\x63tual_position\x18\x02 \x01(\x0b\x32\x15.machinetalk.Position\x12\x1d\n\x15\x61\x64\x61ptive_feed_enabled\x18\x03 \x01(\x08\x12+\n\x03\x61in\x18\x04 \x03(\x0b\x32\x1e.machinetalk.EmcStatusAnalogIO\x12,\n\x04\x61out\x18\x05 \x03(\x0b\x32\x1e.machinetalk.EmcStatusAnalogIO\x12.\n\x04\x61xis\x18\x06 \x03(\x0b\x32 .machinetalk.EmcStatusMotionAxis\x12\x14\n\x0c\x62lock_delete\x18\x07 \x01(\x08\x12\x14\n\x0c\x63urrent_line\x18\x08 \x01(\x05\x12\x13\n\x0b\x63urrent_vel\x18\t \x01(\x01\x12\x12\n\ndelay_left\x18\n \x01(\x01\x12,\n\x03\x64in\x18\x0b \x03(\x0b\x32\x1f.machinetalk.EmcStatusDigitalIO\x12\x16\n\x0e\x64istance_to_go\x18\x0c \x01(\x01\x12-\n\x04\x64out\x18\r \x03(\x0b\x32\x1f.machinetalk.EmcStatusDigitalIO\x12\"\n\x03\x64tg\x18\x0e \x01(\x0b\x32\x15.machinetalk.Position\x12\x0f\n\x07\x65nabled\x18\x0f \x01(\x08\x12\x19\n\x11\x66\x65\x65\x64_hold_enabled\x18\x10 \x01(\x08\x12\x1d\n\x15\x66\x65\x65\x64_override_enabled\x18\x11 \x01(\x08\x12\x10\n\x08\x66\x65\x65\x64rate\x18\x12 \x01(\x01\x12+\n\tg5x_index\x18\x13 \x01(\x0e\x32\x18.machinetalk.OriginIndex\x12)\n\ng5x_offset\x18\x14 \x01(\x0b\x32\x15.machinetalk.Position\x12)\n\ng92_offset\x18\x15 \x01(\x0b\x32\x15.machinetalk.Position\x12\n\n\x02id\x18\x17 \x01(\x05\x12\r\n\x05inpos\x18\x18 \x01(\x08\x12\x34\n\x15joint_actual_position\x18\x19 \x01(\x0b\x32\x15.machinetalk.Position\x12-\n\x0ejoint_position\x18\x1a \x01(\x0b\x32\x15.machinetalk.Position\x12*\n\x05limit\x18\x1b \x03(\x0b\x32\x1b.machinetalk.EmcStatusLimit\x12\x13\n\x0bmotion_line\x18\x1c \x01(\x05\x12,\n\x0bmotion_type\x18\x1d \x01(\x0e\x32\x17.machinetalk.MotionType\x12\x37\n\x0bmotion_mode\x18\x1e \x01(\x0e\x32\".machinetalk.EmcTrajectoryModeType\x12\x0e\n\x06paused\x18\x1f \x01(\x08\x12\'\n\x08position\x18 \x01(\x0b\x32\x15.machinetalk.Position\x12\x15\n\rprobe_tripped\x18! \x01(\x08\x12\x11\n\tprobe_val\x18\" \x01(\x05\x12.\n\x0fprobed_position\x18# \x01(\x0b\x32\x15.machinetalk.Position\x12\x0f\n\x07probing\x18$ \x01(\x08\x12\r\n\x05queue\x18% \x01(\x05\x12\x12\n\nqueue_full\x18& \x01(\x08\x12\x13\n\x0brotation_xy\x18\' \x01(\x01\x12\x15\n\rspindle_brake\x18( \x01(\x08\x12\x19\n\x11spindle_direction\x18) \x01(\x05\x12\x17\n\x0fspindle_enabled\x18* \x01(\x08\x12\x1a\n\x12spindle_increasing\x18+ \x01(\x05\x12 \n\x18spindle_override_enabled\x18, \x01(\x08\x12\x15\n\rspindle_speed\x18- \x01(\x01\x12\x13\n\x0bspindlerate\x18. \x01(\x01\x12&\n\x05state\x18/ \x01(\x0e\x32\x17.machinetalk.RCS_STATUS\x12\x14\n\x0cmax_velocity\x18\x30 \x01(\x01\x12\x18\n\x10max_acceleration\x18\x31 \x01(\x01\x12\x11\n\trapidrate\x18\x32 \x01(\x01:\x06\x92?\x03H\xd7\x08\"\xee\x01\n\x0b\x45mcStatusIo\x12\r\n\x05\x65stop\x18\x01 \x01(\x08\x12\r\n\x05\x66lood\x18\x02 \x01(\x08\x12\x0c\n\x04lube\x18\x03 \x01(\x08\x12\x12\n\nlube_level\x18\x04 \x01(\x08\x12\x0c\n\x04mist\x18\x05 \x01(\x08\x12*\n\x0btool_offset\x18\x08 \x01(\x0b\x32\x15.machinetalk.Position\x12,\n\ntool_table\x18\t \x03(\x0b\x32\x18.machinetalk.EmcToolData\x12\x16\n\x0epocket_prepped\x18\n \x01(\x05\x12\x17\n\x0ftool_in_spindle\x18\x0b \x01(\x05:\x06\x92?\x03H\xd8\x08\"\xc7\x02\n\rEmcStatusTask\x12\x1a\n\x12\x65\x63ho_serial_number\x18\x01 \x01(\x05\x12\x35\n\nexec_state\x18\x02 \x01(\x0e\x32!.machinetalk.EmcTaskExecStateType\x12\x0c\n\x04\x66ile\x18\x03 \x01(\t\x12\x15\n\rinput_timeout\x18\x04 \x01(\x08\x12\x15\n\roptional_stop\x18\x05 \x01(\x08\x12\x11\n\tread_line\x18\x06 \x01(\x05\x12/\n\ttask_mode\x18\x07 \x01(\x0e\x32\x1c.machinetalk.EmcTaskModeType\x12\x13\n\x0btask_paused\x18\x08 \x01(\x05\x12\x31\n\ntask_state\x18\t \x01(\x0e\x32\x1d.machinetalk.EmcTaskStateType\x12\x13\n\x0btotal_lines\x18\n \x01(\x05:\x06\x92?\x03H\xd9\x08\"\xe4\x02\n\x0f\x45mcStatusInterp\x12\x0f\n\x07\x63ommand\x18\x01 \x01(\t\x12+\n\x06gcodes\x18\x02 \x03(\x0b\x32\x1b.machinetalk.EmcStatusGCode\x12\x35\n\x0cinterp_state\x18\x03 \x01(\x0e\x32\x1f.machinetalk.EmcInterpStateType\x12?\n\x13interpreter_errcode\x18\x04 \x01(\x0e\x32\".machinetalk.EmcInterpExitCodeType\x12+\n\x06mcodes\x18\x05 \x03(\x0b\x32\x1b.machinetalk.EmcStatusMCode\x12/\n\x08settings\x18\x06 \x03(\x0b\x32\x1d.machinetalk.EmcStatusSetting\x12\x35\n\rprogram_units\x18\x07 \x01(\x0e\x32\x1e.machinetalk.EmcCanonUnitsType:\x06\x92?\x03H\xda\x08\"\xe2\x03\n\x14\x45mcCommandParameters\x12\r\n\x05index\x18\x01 \x01(\r\x12\x13\n\x0b\x64\x65\x62ug_level\x18\x02 \x01(\r\x12\x13\n\x0bline_number\x18\x03 \x01(\x05\x12\r\n\x05scale\x18\x04 \x01(\x01\x12\x10\n\x08velocity\x18\x05 \x01(\x01\x12\x10\n\x08\x64istance\x18\x06 \x01(\x01\x12\r\n\x05value\x18\x07 \x01(\x01\x12\x0e\n\x06\x65nable\x18\x08 \x01(\x08\x12\x0f\n\x07\x63ommand\x18\t \x01(\t\x12\x0c\n\x04path\x18\n \x01(\t\x12/\n\ttask_mode\x18\x64 \x01(\x0e\x32\x1c.machinetalk.EmcTaskModeType\x12\x31\n\ntask_state\x18\x65 \x01(\x0e\x32\x1d.machinetalk.EmcTaskStateType\x12\x35\n\ttraj_mode\x18\x66 \x01(\x0e\x32\".machinetalk.EmcTrajectoryModeType\x12\"\n\x04pose\x18g \x01(\x0b\x32\x14.machinetalk.EmcPose\x12+\n\ttool_data\x18h \x01(\x0b\x32\x18.machinetalk.EmcToolData\x12,\n\ntool_table\x18i \x03(\x0b\x32\x18.machinetalk.EmcToolData:\x06\x92?\x03H\xdb\x08\">\n\x14\x45mcStatusUserCommand\x12\r\n\x05index\x18\x01 \x02(\x05\x12\x0f\n\x07\x63ommand\x18\x02 \x01(\t:\x06\x92?\x03H\xdc\x08\"\xa7\x02\n\x0b\x45mcStatusUI\x12\x1d\n\x15spindle_brake_visible\x18\x01 \x01(\x08\x12\x1a\n\x12spindle_cw_visible\x18\x02 \x01(\x08\x12\x1b\n\x13spindle_ccw_visible\x18\x03 \x01(\x08\x12\x1c\n\x14spindle_stop_visible\x18\x04 \x01(\x08\x12\x1c\n\x14spindle_plus_visible\x18\x05 \x01(\x08\x12\x1d\n\x15spindle_minus_visible\x18\x06 \x01(\x08\x12 \n\x18spindle_override_visible\x18\x07 \x01(\x08\x12\x1d\n\x15\x63oolant_flood_visible\x18\x08 \x01(\x08\x12\x1c\n\x14\x63oolant_mist_visible\x18\t \x01(\x08:\x06\x92?\x03H\xdd\x08*\xe7\x02\n\x14\x45mcTaskExecStateType\x12\x17\n\x13\x45MC_TASK_EXEC_ERROR\x10\x01\x12\x16\n\x12\x45MC_TASK_EXEC_DONE\x10\x02\x12$\n EMC_TASK_EXEC_WAITING_FOR_MOTION\x10\x03\x12*\n&EMC_TASK_EXEC_WAITING_FOR_MOTION_QUEUE\x10\x04\x12 \n\x1c\x45MC_TASK_EXEC_WAITING_FOR_IO\x10\x05\x12+\n\'EMC_TASK_EXEC_WAITING_FOR_MOTION_AND_IO\x10\x07\x12#\n\x1f\x45MC_TASK_EXEC_WAITING_FOR_DELAY\x10\x08\x12(\n$EMC_TASK_EXEC_WAITING_FOR_SYSTEM_CMD\x10\t\x12.\n*EMC_TASK_EXEC_WAITING_FOR_SPINDLE_ORIENTED\x10\n*\x84\x01\n\x12\x45mcInterpStateType\x12\x18\n\x14\x45MC_TASK_INTERP_IDLE\x10\x01\x12\x1b\n\x17\x45MC_TASK_INTERP_READING\x10\x02\x12\x1a\n\x16\x45MC_TASK_INTERP_PAUSED\x10\x03\x12\x1b\n\x17\x45MC_TASK_INTERP_WAITING\x10\x04*\xc8\x01\n\x15\x45mcInterpExitCodeType\x12\x16\n\x12\x45MC_INTERP_EXIT_OK\x10\x00\x12\x18\n\x14\x45MC_INTERP_EXIT_EXIT\x10\x01\x12\"\n\x1e\x45MC_INTERP_EXIT_EXECUTE_FINISH\x10\x02\x12\x1b\n\x17\x45MC_INTERP_EXIT_ENDFILE\x10\x03\x12!\n\x1d\x45MC_INTERP_EXIT_FILE_NOT_OPEN\x10\x04\x12\x19\n\x15\x45MC_INTERP_EXIT_ERROR\x10\x05*{\n\x11\x45mcKinematicsType\x12\x17\n\x13KINEMATICS_IDENTITY\x10\x01\x12\x1b\n\x17KINEMATICS_FORWARD_ONLY\x10\x02\x12\x1b\n\x17KINEMATICS_INVERSE_ONLY\x10\x03\x12\x13\n\x0fKINEMATICS_BOTH\x10\x04*b\n\x15\x45mcTrajectoryModeType\x12\x16\n\x12\x45MC_TRAJ_MODE_FREE\x10\x01\x12\x17\n\x13\x45MC_TRAJ_MODE_COORD\x10\x02\x12\x18\n\x14\x45MC_TRAJ_MODE_TELEOP\x10\x03*Q\n\x11\x45mcCanonUnitsType\x12\x14\n\x10\x43\x41NON_UNITS_INCH\x10\x01\x12\x12\n\x0e\x43\x41NON_UNITS_MM\x10\x02\x12\x12\n\x0e\x43\x41NON_UNITS_CM\x10\x03*U\n\x12\x45mcLinearUnitsType\x12\x15\n\x11LINEAR_UNITS_INCH\x10\x01\x12\x13\n\x0fLINEAR_UNITS_MM\x10\x02\x12\x13\n\x0fLINEAR_UNITS_CM\x10\x03*b\n\x13\x45mcAngularUnitsType\x12\x19\n\x15\x41NGULAR_UNITS_DEGREES\x10\x01\x12\x18\n\x14\x41NGULAR_UNITS_RADIAN\x10\x02\x12\x16\n\x12\x41NGULAR_UNITS_GRAD\x10\x03*@\n\x10\x45mcTimeUnitsType\x12\x15\n\x11TIME_UNITS_MINUTE\x10\x01\x12\x15\n\x11TIME_UNITS_SECOND\x10\x02*Z\n\x0f\x45mcTaskModeType\x12\x18\n\x14\x45MC_TASK_MODE_MANUAL\x10\x01\x12\x16\n\x12\x45MC_TASK_MODE_AUTO\x10\x02\x12\x15\n\x11\x45MC_TASK_MODE_MDI\x10\x03*{\n\x10\x45mcTaskStateType\x12\x18\n\x14\x45MC_TASK_STATE_ESTOP\x10\x01\x12\x1e\n\x1a\x45MC_TASK_STATE_ESTOP_RESET\x10\x02\x12\x16\n\x12\x45MC_TASK_STATE_OFF\x10\x03\x12\x15\n\x11\x45MC_TASK_STATE_ON\x10\x04*8\n\x0b\x45mcAxisType\x12\x13\n\x0f\x45MC_AXIS_LINEAR\x10\x01\x12\x14\n\x10\x45MC_AXIS_ANGULAR\x10\x02*V\n\x15\x45mcPositionOffsetType\x12\x1e\n\x1a\x45MC_CONFIG_RELATIVE_OFFSET\x10\x01\x12\x1d\n\x19\x45MC_CONFIG_MACHINE_OFFSET\x10\x02*\\\n\x17\x45mcPositionFeedbackType\x12\x1e\n\x1a\x45MC_CONFIG_ACTUAL_FEEDBACK\x10\x01\x12!\n\x1d\x45MC_CONFIG_COMMANDED_FEEDBACK\x10\x02') + , + dependencies=[machinetalk_dot_protobuf_dot_nanopb__pb2.DESCRIPTOR,machinetalk_dot_protobuf_dot_types__pb2.DESCRIPTOR,machinetalk_dot_protobuf_dot_preview__pb2.DESCRIPTOR,machinetalk_dot_protobuf_dot_emcclass__pb2.DESCRIPTOR,machinetalk_dot_protobuf_dot_motcmds__pb2.DESCRIPTOR,]) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +_EMCTASKEXECSTATETYPE = _descriptor.EnumDescriptor( + name='EmcTaskExecStateType', + full_name='machinetalk.EmcTaskExecStateType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='EMC_TASK_EXEC_ERROR', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMC_TASK_EXEC_DONE', index=1, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMC_TASK_EXEC_WAITING_FOR_MOTION', index=2, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMC_TASK_EXEC_WAITING_FOR_MOTION_QUEUE', index=3, number=4, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMC_TASK_EXEC_WAITING_FOR_IO', index=4, number=5, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMC_TASK_EXEC_WAITING_FOR_MOTION_AND_IO', index=5, number=7, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMC_TASK_EXEC_WAITING_FOR_DELAY', index=6, number=8, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMC_TASK_EXEC_WAITING_FOR_SYSTEM_CMD', index=7, number=9, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMC_TASK_EXEC_WAITING_FOR_SPINDLE_ORIENTED', index=8, number=10, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=6005, + serialized_end=6364, +) +_sym_db.RegisterEnumDescriptor(_EMCTASKEXECSTATETYPE) + +EmcTaskExecStateType = enum_type_wrapper.EnumTypeWrapper(_EMCTASKEXECSTATETYPE) +_EMCINTERPSTATETYPE = _descriptor.EnumDescriptor( + name='EmcInterpStateType', + full_name='machinetalk.EmcInterpStateType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='EMC_TASK_INTERP_IDLE', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMC_TASK_INTERP_READING', index=1, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMC_TASK_INTERP_PAUSED', index=2, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMC_TASK_INTERP_WAITING', index=3, number=4, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=6367, + serialized_end=6499, +) +_sym_db.RegisterEnumDescriptor(_EMCINTERPSTATETYPE) + +EmcInterpStateType = enum_type_wrapper.EnumTypeWrapper(_EMCINTERPSTATETYPE) +_EMCINTERPEXITCODETYPE = _descriptor.EnumDescriptor( + name='EmcInterpExitCodeType', + full_name='machinetalk.EmcInterpExitCodeType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='EMC_INTERP_EXIT_OK', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMC_INTERP_EXIT_EXIT', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMC_INTERP_EXIT_EXECUTE_FINISH', index=2, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMC_INTERP_EXIT_ENDFILE', index=3, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMC_INTERP_EXIT_FILE_NOT_OPEN', index=4, number=4, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMC_INTERP_EXIT_ERROR', index=5, number=5, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=6502, + serialized_end=6702, +) +_sym_db.RegisterEnumDescriptor(_EMCINTERPEXITCODETYPE) + +EmcInterpExitCodeType = enum_type_wrapper.EnumTypeWrapper(_EMCINTERPEXITCODETYPE) +_EMCKINEMATICSTYPE = _descriptor.EnumDescriptor( + name='EmcKinematicsType', + full_name='machinetalk.EmcKinematicsType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='KINEMATICS_IDENTITY', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='KINEMATICS_FORWARD_ONLY', index=1, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='KINEMATICS_INVERSE_ONLY', index=2, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='KINEMATICS_BOTH', index=3, number=4, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=6704, + serialized_end=6827, +) +_sym_db.RegisterEnumDescriptor(_EMCKINEMATICSTYPE) + +EmcKinematicsType = enum_type_wrapper.EnumTypeWrapper(_EMCKINEMATICSTYPE) +_EMCTRAJECTORYMODETYPE = _descriptor.EnumDescriptor( + name='EmcTrajectoryModeType', + full_name='machinetalk.EmcTrajectoryModeType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='EMC_TRAJ_MODE_FREE', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMC_TRAJ_MODE_COORD', index=1, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMC_TRAJ_MODE_TELEOP', index=2, number=3, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=6829, + serialized_end=6927, +) +_sym_db.RegisterEnumDescriptor(_EMCTRAJECTORYMODETYPE) + +EmcTrajectoryModeType = enum_type_wrapper.EnumTypeWrapper(_EMCTRAJECTORYMODETYPE) +_EMCCANONUNITSTYPE = _descriptor.EnumDescriptor( + name='EmcCanonUnitsType', + full_name='machinetalk.EmcCanonUnitsType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='CANON_UNITS_INCH', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='CANON_UNITS_MM', index=1, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='CANON_UNITS_CM', index=2, number=3, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=6929, + serialized_end=7010, +) +_sym_db.RegisterEnumDescriptor(_EMCCANONUNITSTYPE) + +EmcCanonUnitsType = enum_type_wrapper.EnumTypeWrapper(_EMCCANONUNITSTYPE) +_EMCLINEARUNITSTYPE = _descriptor.EnumDescriptor( + name='EmcLinearUnitsType', + full_name='machinetalk.EmcLinearUnitsType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='LINEAR_UNITS_INCH', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='LINEAR_UNITS_MM', index=1, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='LINEAR_UNITS_CM', index=2, number=3, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=7012, + serialized_end=7097, +) +_sym_db.RegisterEnumDescriptor(_EMCLINEARUNITSTYPE) + +EmcLinearUnitsType = enum_type_wrapper.EnumTypeWrapper(_EMCLINEARUNITSTYPE) +_EMCANGULARUNITSTYPE = _descriptor.EnumDescriptor( + name='EmcAngularUnitsType', + full_name='machinetalk.EmcAngularUnitsType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='ANGULAR_UNITS_DEGREES', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ANGULAR_UNITS_RADIAN', index=1, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ANGULAR_UNITS_GRAD', index=2, number=3, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=7099, + serialized_end=7197, +) +_sym_db.RegisterEnumDescriptor(_EMCANGULARUNITSTYPE) + +EmcAngularUnitsType = enum_type_wrapper.EnumTypeWrapper(_EMCANGULARUNITSTYPE) +_EMCTIMEUNITSTYPE = _descriptor.EnumDescriptor( + name='EmcTimeUnitsType', + full_name='machinetalk.EmcTimeUnitsType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='TIME_UNITS_MINUTE', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='TIME_UNITS_SECOND', index=1, number=2, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=7199, + serialized_end=7263, +) +_sym_db.RegisterEnumDescriptor(_EMCTIMEUNITSTYPE) + +EmcTimeUnitsType = enum_type_wrapper.EnumTypeWrapper(_EMCTIMEUNITSTYPE) +_EMCTASKMODETYPE = _descriptor.EnumDescriptor( + name='EmcTaskModeType', + full_name='machinetalk.EmcTaskModeType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='EMC_TASK_MODE_MANUAL', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMC_TASK_MODE_AUTO', index=1, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMC_TASK_MODE_MDI', index=2, number=3, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=7265, + serialized_end=7355, +) +_sym_db.RegisterEnumDescriptor(_EMCTASKMODETYPE) + +EmcTaskModeType = enum_type_wrapper.EnumTypeWrapper(_EMCTASKMODETYPE) +_EMCTASKSTATETYPE = _descriptor.EnumDescriptor( + name='EmcTaskStateType', + full_name='machinetalk.EmcTaskStateType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='EMC_TASK_STATE_ESTOP', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMC_TASK_STATE_ESTOP_RESET', index=1, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMC_TASK_STATE_OFF', index=2, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMC_TASK_STATE_ON', index=3, number=4, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=7357, + serialized_end=7480, +) +_sym_db.RegisterEnumDescriptor(_EMCTASKSTATETYPE) + +EmcTaskStateType = enum_type_wrapper.EnumTypeWrapper(_EMCTASKSTATETYPE) +_EMCAXISTYPE = _descriptor.EnumDescriptor( + name='EmcAxisType', + full_name='machinetalk.EmcAxisType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='EMC_AXIS_LINEAR', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMC_AXIS_ANGULAR', index=1, number=2, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=7482, + serialized_end=7538, +) +_sym_db.RegisterEnumDescriptor(_EMCAXISTYPE) + +EmcAxisType = enum_type_wrapper.EnumTypeWrapper(_EMCAXISTYPE) +_EMCPOSITIONOFFSETTYPE = _descriptor.EnumDescriptor( + name='EmcPositionOffsetType', + full_name='machinetalk.EmcPositionOffsetType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='EMC_CONFIG_RELATIVE_OFFSET', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMC_CONFIG_MACHINE_OFFSET', index=1, number=2, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=7540, + serialized_end=7626, +) +_sym_db.RegisterEnumDescriptor(_EMCPOSITIONOFFSETTYPE) + +EmcPositionOffsetType = enum_type_wrapper.EnumTypeWrapper(_EMCPOSITIONOFFSETTYPE) +_EMCPOSITIONFEEDBACKTYPE = _descriptor.EnumDescriptor( + name='EmcPositionFeedbackType', + full_name='machinetalk.EmcPositionFeedbackType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='EMC_CONFIG_ACTUAL_FEEDBACK', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='EMC_CONFIG_COMMANDED_FEEDBACK', index=1, number=2, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=7628, + serialized_end=7720, +) +_sym_db.RegisterEnumDescriptor(_EMCPOSITIONFEEDBACKTYPE) + +EmcPositionFeedbackType = enum_type_wrapper.EnumTypeWrapper(_EMCPOSITIONFEEDBACKTYPE) +EMC_TASK_EXEC_ERROR = 1 +EMC_TASK_EXEC_DONE = 2 +EMC_TASK_EXEC_WAITING_FOR_MOTION = 3 +EMC_TASK_EXEC_WAITING_FOR_MOTION_QUEUE = 4 +EMC_TASK_EXEC_WAITING_FOR_IO = 5 +EMC_TASK_EXEC_WAITING_FOR_MOTION_AND_IO = 7 +EMC_TASK_EXEC_WAITING_FOR_DELAY = 8 +EMC_TASK_EXEC_WAITING_FOR_SYSTEM_CMD = 9 +EMC_TASK_EXEC_WAITING_FOR_SPINDLE_ORIENTED = 10 +EMC_TASK_INTERP_IDLE = 1 +EMC_TASK_INTERP_READING = 2 +EMC_TASK_INTERP_PAUSED = 3 +EMC_TASK_INTERP_WAITING = 4 +EMC_INTERP_EXIT_OK = 0 +EMC_INTERP_EXIT_EXIT = 1 +EMC_INTERP_EXIT_EXECUTE_FINISH = 2 +EMC_INTERP_EXIT_ENDFILE = 3 +EMC_INTERP_EXIT_FILE_NOT_OPEN = 4 +EMC_INTERP_EXIT_ERROR = 5 +KINEMATICS_IDENTITY = 1 +KINEMATICS_FORWARD_ONLY = 2 +KINEMATICS_INVERSE_ONLY = 3 +KINEMATICS_BOTH = 4 +EMC_TRAJ_MODE_FREE = 1 +EMC_TRAJ_MODE_COORD = 2 +EMC_TRAJ_MODE_TELEOP = 3 +CANON_UNITS_INCH = 1 +CANON_UNITS_MM = 2 +CANON_UNITS_CM = 3 +LINEAR_UNITS_INCH = 1 +LINEAR_UNITS_MM = 2 +LINEAR_UNITS_CM = 3 +ANGULAR_UNITS_DEGREES = 1 +ANGULAR_UNITS_RADIAN = 2 +ANGULAR_UNITS_GRAD = 3 +TIME_UNITS_MINUTE = 1 +TIME_UNITS_SECOND = 2 +EMC_TASK_MODE_MANUAL = 1 +EMC_TASK_MODE_AUTO = 2 +EMC_TASK_MODE_MDI = 3 +EMC_TASK_STATE_ESTOP = 1 +EMC_TASK_STATE_ESTOP_RESET = 2 +EMC_TASK_STATE_OFF = 3 +EMC_TASK_STATE_ON = 4 +EMC_AXIS_LINEAR = 1 +EMC_AXIS_ANGULAR = 2 +EMC_CONFIG_RELATIVE_OFFSET = 1 +EMC_CONFIG_MACHINE_OFFSET = 2 +EMC_CONFIG_ACTUAL_FEEDBACK = 1 +EMC_CONFIG_COMMANDED_FEEDBACK = 2 + + + +_EMCTOOLDATA = _descriptor.Descriptor( + name='EmcToolData', + full_name='machinetalk.EmcToolData', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='index', full_name='machinetalk.EmcToolData.index', index=0, + number=1, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='id', full_name='machinetalk.EmcToolData.id', index=1, + number=2, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='diameter', full_name='machinetalk.EmcToolData.diameter', index=2, + number=12, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='frontangle', full_name='machinetalk.EmcToolData.frontangle', index=3, + number=13, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='backangle', full_name='machinetalk.EmcToolData.backangle', index=4, + number=14, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='orientation', full_name='machinetalk.EmcToolData.orientation', index=5, + number=15, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='offset', full_name='machinetalk.EmcToolData.offset', index=6, + number=16, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='comment', full_name='machinetalk.EmcToolData.comment', index=7, + number=17, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='pocket', full_name='machinetalk.EmcToolData.pocket', index=8, + number=18, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\314\010')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=229, + serialized_end=427, +) + + +_EMCSTATUSMOTIONAXIS = _descriptor.Descriptor( + name='EmcStatusMotionAxis', + full_name='machinetalk.EmcStatusMotionAxis', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='index', full_name='machinetalk.EmcStatusMotionAxis.index', index=0, + number=1, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='enabled', full_name='machinetalk.EmcStatusMotionAxis.enabled', index=1, + number=2, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='fault', full_name='machinetalk.EmcStatusMotionAxis.fault', index=2, + number=3, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='ferror_current', full_name='machinetalk.EmcStatusMotionAxis.ferror_current', index=3, + number=4, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='ferror_highmark', full_name='machinetalk.EmcStatusMotionAxis.ferror_highmark', index=4, + number=5, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='homed', full_name='machinetalk.EmcStatusMotionAxis.homed', index=5, + number=6, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='homing', full_name='machinetalk.EmcStatusMotionAxis.homing', index=6, + number=7, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='inpos', full_name='machinetalk.EmcStatusMotionAxis.inpos', index=7, + number=8, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='input', full_name='machinetalk.EmcStatusMotionAxis.input', index=8, + number=9, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='max_hard_limit', full_name='machinetalk.EmcStatusMotionAxis.max_hard_limit', index=9, + number=10, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='max_soft_limit', full_name='machinetalk.EmcStatusMotionAxis.max_soft_limit', index=10, + number=11, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='min_hard_limit', full_name='machinetalk.EmcStatusMotionAxis.min_hard_limit', index=11, + number=12, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='min_soft_limit', full_name='machinetalk.EmcStatusMotionAxis.min_soft_limit', index=12, + number=13, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='output', full_name='machinetalk.EmcStatusMotionAxis.output', index=13, + number=14, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='override_limits', full_name='machinetalk.EmcStatusMotionAxis.override_limits', index=14, + number=15, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='velocity', full_name='machinetalk.EmcStatusMotionAxis.velocity', index=15, + number=16, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\315\010')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=430, + serialized_end=771, +) + + +_EMCSTATUSCONFIGAXIS = _descriptor.Descriptor( + name='EmcStatusConfigAxis', + full_name='machinetalk.EmcStatusConfigAxis', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='index', full_name='machinetalk.EmcStatusConfigAxis.index', index=0, + number=1, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='axis_type', full_name='machinetalk.EmcStatusConfigAxis.axis_type', index=1, + number=2, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='backlash', full_name='machinetalk.EmcStatusConfigAxis.backlash', index=2, + number=3, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='max_ferror', full_name='machinetalk.EmcStatusConfigAxis.max_ferror', index=3, + number=4, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='max_position_limit', full_name='machinetalk.EmcStatusConfigAxis.max_position_limit', index=4, + number=5, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='min_ferror', full_name='machinetalk.EmcStatusConfigAxis.min_ferror', index=5, + number=6, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='min_position_limit', full_name='machinetalk.EmcStatusConfigAxis.min_position_limit', index=6, + number=7, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='home_sequence', full_name='machinetalk.EmcStatusConfigAxis.home_sequence', index=7, + number=9, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='max_acceleration', full_name='machinetalk.EmcStatusConfigAxis.max_acceleration', index=8, + number=10, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='max_velocity', full_name='machinetalk.EmcStatusConfigAxis.max_velocity', index=9, + number=11, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='increments', full_name='machinetalk.EmcStatusConfigAxis.increments', index=10, + number=12, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\316\010')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=774, + serialized_end=1068, +) + + +_EMCPROGRAMEXTENSION = _descriptor.Descriptor( + name='EmcProgramExtension', + full_name='machinetalk.EmcProgramExtension', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='index', full_name='machinetalk.EmcProgramExtension.index', index=0, + number=1, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='extension', full_name='machinetalk.EmcProgramExtension.extension', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\317\010')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1070, + serialized_end=1133, +) + + +_EMCSTATUSANALOGIO = _descriptor.Descriptor( + name='EmcStatusAnalogIO', + full_name='machinetalk.EmcStatusAnalogIO', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='index', full_name='machinetalk.EmcStatusAnalogIO.index', index=0, + number=1, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='value', full_name='machinetalk.EmcStatusAnalogIO.value', index=1, + number=2, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\320\010')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1135, + serialized_end=1192, +) + + +_EMCSTATUSDIGITALIO = _descriptor.Descriptor( + name='EmcStatusDigitalIO', + full_name='machinetalk.EmcStatusDigitalIO', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='index', full_name='machinetalk.EmcStatusDigitalIO.index', index=0, + number=1, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='value', full_name='machinetalk.EmcStatusDigitalIO.value', index=1, + number=2, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\321\010')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1194, + serialized_end=1252, +) + + +_EMCSTATUSLIMIT = _descriptor.Descriptor( + name='EmcStatusLimit', + full_name='machinetalk.EmcStatusLimit', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='index', full_name='machinetalk.EmcStatusLimit.index', index=0, + number=1, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='value', full_name='machinetalk.EmcStatusLimit.value', index=1, + number=2, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\322\010')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1254, + serialized_end=1308, +) + + +_EMCSTATUSGCODE = _descriptor.Descriptor( + name='EmcStatusGCode', + full_name='machinetalk.EmcStatusGCode', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='index', full_name='machinetalk.EmcStatusGCode.index', index=0, + number=1, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='value', full_name='machinetalk.EmcStatusGCode.value', index=1, + number=2, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\323\010')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1310, + serialized_end=1364, +) + + +_EMCSTATUSMCODE = _descriptor.Descriptor( + name='EmcStatusMCode', + full_name='machinetalk.EmcStatusMCode', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='index', full_name='machinetalk.EmcStatusMCode.index', index=0, + number=1, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='value', full_name='machinetalk.EmcStatusMCode.value', index=1, + number=2, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\324\010')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1366, + serialized_end=1420, +) + + +_EMCSTATUSSETTING = _descriptor.Descriptor( + name='EmcStatusSetting', + full_name='machinetalk.EmcStatusSetting', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='index', full_name='machinetalk.EmcStatusSetting.index', index=0, + number=1, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='value', full_name='machinetalk.EmcStatusSetting.value', index=1, + number=2, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\325\010')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1422, + serialized_end=1478, +) + + +_EMCSTATUSCONFIG = _descriptor.Descriptor( + name='EmcStatusConfig', + full_name='machinetalk.EmcStatusConfig', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='default_acceleration', full_name='machinetalk.EmcStatusConfig.default_acceleration', index=0, + number=1, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='axes', full_name='machinetalk.EmcStatusConfig.axes', index=1, + number=3, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='axis', full_name='machinetalk.EmcStatusConfig.axis', index=2, + number=4, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='axis_mask', full_name='machinetalk.EmcStatusConfig.axis_mask', index=3, + number=5, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='cycle_time', full_name='machinetalk.EmcStatusConfig.cycle_time', index=4, + number=6, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='debug', full_name='machinetalk.EmcStatusConfig.debug', index=5, + number=7, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='kinematics_type', full_name='machinetalk.EmcStatusConfig.kinematics_type', index=6, + number=8, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='max_acceleration', full_name='machinetalk.EmcStatusConfig.max_acceleration', index=7, + number=10, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='max_velocity', full_name='machinetalk.EmcStatusConfig.max_velocity', index=8, + number=11, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='linear_units', full_name='machinetalk.EmcStatusConfig.linear_units', index=9, + number=12, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='default_velocity', full_name='machinetalk.EmcStatusConfig.default_velocity', index=10, + number=13, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='program_extension', full_name='machinetalk.EmcStatusConfig.program_extension', index=11, + number=14, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='position_offset', full_name='machinetalk.EmcStatusConfig.position_offset', index=12, + number=15, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='position_feedback', full_name='machinetalk.EmcStatusConfig.position_feedback', index=13, + number=16, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='max_feed_override', full_name='machinetalk.EmcStatusConfig.max_feed_override', index=14, + number=17, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='min_feed_override', full_name='machinetalk.EmcStatusConfig.min_feed_override', index=15, + number=18, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='max_spindle_override', full_name='machinetalk.EmcStatusConfig.max_spindle_override', index=16, + number=19, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='min_spindle_override', full_name='machinetalk.EmcStatusConfig.min_spindle_override', index=17, + number=20, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='default_spindle_speed', full_name='machinetalk.EmcStatusConfig.default_spindle_speed', index=18, + number=21, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='default_linear_velocity', full_name='machinetalk.EmcStatusConfig.default_linear_velocity', index=19, + number=22, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='min_velocity', full_name='machinetalk.EmcStatusConfig.min_velocity', index=20, + number=23, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='max_linear_velocity', full_name='machinetalk.EmcStatusConfig.max_linear_velocity', index=21, + number=24, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='min_linear_velocity', full_name='machinetalk.EmcStatusConfig.min_linear_velocity', index=22, + number=25, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='default_angular_velocity', full_name='machinetalk.EmcStatusConfig.default_angular_velocity', index=23, + number=26, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='max_angular_velocity', full_name='machinetalk.EmcStatusConfig.max_angular_velocity', index=24, + number=27, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='min_angular_velocity', full_name='machinetalk.EmcStatusConfig.min_angular_velocity', index=25, + number=28, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='increments', full_name='machinetalk.EmcStatusConfig.increments', index=26, + number=29, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='grids', full_name='machinetalk.EmcStatusConfig.grids', index=27, + number=30, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='lathe', full_name='machinetalk.EmcStatusConfig.lathe', index=28, + number=31, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='geometry', full_name='machinetalk.EmcStatusConfig.geometry', index=29, + number=32, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='arcdivision', full_name='machinetalk.EmcStatusConfig.arcdivision', index=30, + number=33, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='no_force_homing', full_name='machinetalk.EmcStatusConfig.no_force_homing', index=31, + number=34, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='remote_path', full_name='machinetalk.EmcStatusConfig.remote_path', index=32, + number=35, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='time_units', full_name='machinetalk.EmcStatusConfig.time_units', index=33, + number=36, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='name', full_name='machinetalk.EmcStatusConfig.name', index=34, + number=37, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='user_command', full_name='machinetalk.EmcStatusConfig.user_command', index=35, + number=38, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='angular_units', full_name='machinetalk.EmcStatusConfig.angular_units', index=36, + number=39, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\326\010')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1481, + serialized_end=2691, +) + + +_EMCSTATUSMOTION = _descriptor.Descriptor( + name='EmcStatusMotion', + full_name='machinetalk.EmcStatusMotion', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='active_queue', full_name='machinetalk.EmcStatusMotion.active_queue', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='actual_position', full_name='machinetalk.EmcStatusMotion.actual_position', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='adaptive_feed_enabled', full_name='machinetalk.EmcStatusMotion.adaptive_feed_enabled', index=2, + number=3, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='ain', full_name='machinetalk.EmcStatusMotion.ain', index=3, + number=4, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='aout', full_name='machinetalk.EmcStatusMotion.aout', index=4, + number=5, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='axis', full_name='machinetalk.EmcStatusMotion.axis', index=5, + number=6, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='block_delete', full_name='machinetalk.EmcStatusMotion.block_delete', index=6, + number=7, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='current_line', full_name='machinetalk.EmcStatusMotion.current_line', index=7, + number=8, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='current_vel', full_name='machinetalk.EmcStatusMotion.current_vel', index=8, + number=9, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='delay_left', full_name='machinetalk.EmcStatusMotion.delay_left', index=9, + number=10, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='din', full_name='machinetalk.EmcStatusMotion.din', index=10, + number=11, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='distance_to_go', full_name='machinetalk.EmcStatusMotion.distance_to_go', index=11, + number=12, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='dout', full_name='machinetalk.EmcStatusMotion.dout', index=12, + number=13, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='dtg', full_name='machinetalk.EmcStatusMotion.dtg', index=13, + number=14, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='enabled', full_name='machinetalk.EmcStatusMotion.enabled', index=14, + number=15, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='feed_hold_enabled', full_name='machinetalk.EmcStatusMotion.feed_hold_enabled', index=15, + number=16, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='feed_override_enabled', full_name='machinetalk.EmcStatusMotion.feed_override_enabled', index=16, + number=17, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='feedrate', full_name='machinetalk.EmcStatusMotion.feedrate', index=17, + number=18, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='g5x_index', full_name='machinetalk.EmcStatusMotion.g5x_index', index=18, + number=19, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='g5x_offset', full_name='machinetalk.EmcStatusMotion.g5x_offset', index=19, + number=20, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='g92_offset', full_name='machinetalk.EmcStatusMotion.g92_offset', index=20, + number=21, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='id', full_name='machinetalk.EmcStatusMotion.id', index=21, + number=23, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='inpos', full_name='machinetalk.EmcStatusMotion.inpos', index=22, + number=24, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='joint_actual_position', full_name='machinetalk.EmcStatusMotion.joint_actual_position', index=23, + number=25, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='joint_position', full_name='machinetalk.EmcStatusMotion.joint_position', index=24, + number=26, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='limit', full_name='machinetalk.EmcStatusMotion.limit', index=25, + number=27, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='motion_line', full_name='machinetalk.EmcStatusMotion.motion_line', index=26, + number=28, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='motion_type', full_name='machinetalk.EmcStatusMotion.motion_type', index=27, + number=29, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='motion_mode', full_name='machinetalk.EmcStatusMotion.motion_mode', index=28, + number=30, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='paused', full_name='machinetalk.EmcStatusMotion.paused', index=29, + number=31, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='position', full_name='machinetalk.EmcStatusMotion.position', index=30, + number=32, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='probe_tripped', full_name='machinetalk.EmcStatusMotion.probe_tripped', index=31, + number=33, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='probe_val', full_name='machinetalk.EmcStatusMotion.probe_val', index=32, + number=34, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='probed_position', full_name='machinetalk.EmcStatusMotion.probed_position', index=33, + number=35, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='probing', full_name='machinetalk.EmcStatusMotion.probing', index=34, + number=36, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='queue', full_name='machinetalk.EmcStatusMotion.queue', index=35, + number=37, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='queue_full', full_name='machinetalk.EmcStatusMotion.queue_full', index=36, + number=38, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='rotation_xy', full_name='machinetalk.EmcStatusMotion.rotation_xy', index=37, + number=39, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='spindle_brake', full_name='machinetalk.EmcStatusMotion.spindle_brake', index=38, + number=40, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='spindle_direction', full_name='machinetalk.EmcStatusMotion.spindle_direction', index=39, + number=41, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='spindle_enabled', full_name='machinetalk.EmcStatusMotion.spindle_enabled', index=40, + number=42, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='spindle_increasing', full_name='machinetalk.EmcStatusMotion.spindle_increasing', index=41, + number=43, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='spindle_override_enabled', full_name='machinetalk.EmcStatusMotion.spindle_override_enabled', index=42, + number=44, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='spindle_speed', full_name='machinetalk.EmcStatusMotion.spindle_speed', index=43, + number=45, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='spindlerate', full_name='machinetalk.EmcStatusMotion.spindlerate', index=44, + number=46, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='state', full_name='machinetalk.EmcStatusMotion.state', index=45, + number=47, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=-1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='max_velocity', full_name='machinetalk.EmcStatusMotion.max_velocity', index=46, + number=48, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='max_acceleration', full_name='machinetalk.EmcStatusMotion.max_acceleration', index=47, + number=49, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='rapidrate', full_name='machinetalk.EmcStatusMotion.rapidrate', index=48, + number=50, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\327\010')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2694, + serialized_end=4225, +) + + +_EMCSTATUSIO = _descriptor.Descriptor( + name='EmcStatusIo', + full_name='machinetalk.EmcStatusIo', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='estop', full_name='machinetalk.EmcStatusIo.estop', index=0, + number=1, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='flood', full_name='machinetalk.EmcStatusIo.flood', index=1, + number=2, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='lube', full_name='machinetalk.EmcStatusIo.lube', index=2, + number=3, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='lube_level', full_name='machinetalk.EmcStatusIo.lube_level', index=3, + number=4, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='mist', full_name='machinetalk.EmcStatusIo.mist', index=4, + number=5, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='tool_offset', full_name='machinetalk.EmcStatusIo.tool_offset', index=5, + number=8, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='tool_table', full_name='machinetalk.EmcStatusIo.tool_table', index=6, + number=9, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='pocket_prepped', full_name='machinetalk.EmcStatusIo.pocket_prepped', index=7, + number=10, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='tool_in_spindle', full_name='machinetalk.EmcStatusIo.tool_in_spindle', index=8, + number=11, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\330\010')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=4228, + serialized_end=4466, +) + + +_EMCSTATUSTASK = _descriptor.Descriptor( + name='EmcStatusTask', + full_name='machinetalk.EmcStatusTask', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='echo_serial_number', full_name='machinetalk.EmcStatusTask.echo_serial_number', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='exec_state', full_name='machinetalk.EmcStatusTask.exec_state', index=1, + number=2, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='file', full_name='machinetalk.EmcStatusTask.file', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='input_timeout', full_name='machinetalk.EmcStatusTask.input_timeout', index=3, + number=4, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='optional_stop', full_name='machinetalk.EmcStatusTask.optional_stop', index=4, + number=5, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='read_line', full_name='machinetalk.EmcStatusTask.read_line', index=5, + number=6, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='task_mode', full_name='machinetalk.EmcStatusTask.task_mode', index=6, + number=7, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='task_paused', full_name='machinetalk.EmcStatusTask.task_paused', index=7, + number=8, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='task_state', full_name='machinetalk.EmcStatusTask.task_state', index=8, + number=9, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='total_lines', full_name='machinetalk.EmcStatusTask.total_lines', index=9, + number=10, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\331\010')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=4469, + serialized_end=4796, +) + + +_EMCSTATUSINTERP = _descriptor.Descriptor( + name='EmcStatusInterp', + full_name='machinetalk.EmcStatusInterp', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='command', full_name='machinetalk.EmcStatusInterp.command', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='gcodes', full_name='machinetalk.EmcStatusInterp.gcodes', index=1, + number=2, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='interp_state', full_name='machinetalk.EmcStatusInterp.interp_state', index=2, + number=3, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='interpreter_errcode', full_name='machinetalk.EmcStatusInterp.interpreter_errcode', index=3, + number=4, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='mcodes', full_name='machinetalk.EmcStatusInterp.mcodes', index=4, + number=5, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='settings', full_name='machinetalk.EmcStatusInterp.settings', index=5, + number=6, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='program_units', full_name='machinetalk.EmcStatusInterp.program_units', index=6, + number=7, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\332\010')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=4799, + serialized_end=5155, +) + + +_EMCCOMMANDPARAMETERS = _descriptor.Descriptor( + name='EmcCommandParameters', + full_name='machinetalk.EmcCommandParameters', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='index', full_name='machinetalk.EmcCommandParameters.index', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='debug_level', full_name='machinetalk.EmcCommandParameters.debug_level', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='line_number', full_name='machinetalk.EmcCommandParameters.line_number', index=2, + number=3, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='scale', full_name='machinetalk.EmcCommandParameters.scale', index=3, + number=4, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='velocity', full_name='machinetalk.EmcCommandParameters.velocity', index=4, + number=5, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='distance', full_name='machinetalk.EmcCommandParameters.distance', index=5, + number=6, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='value', full_name='machinetalk.EmcCommandParameters.value', index=6, + number=7, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='enable', full_name='machinetalk.EmcCommandParameters.enable', index=7, + number=8, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='command', full_name='machinetalk.EmcCommandParameters.command', index=8, + number=9, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='path', full_name='machinetalk.EmcCommandParameters.path', index=9, + number=10, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='task_mode', full_name='machinetalk.EmcCommandParameters.task_mode', index=10, + number=100, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='task_state', full_name='machinetalk.EmcCommandParameters.task_state', index=11, + number=101, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='traj_mode', full_name='machinetalk.EmcCommandParameters.traj_mode', index=12, + number=102, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='pose', full_name='machinetalk.EmcCommandParameters.pose', index=13, + number=103, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='tool_data', full_name='machinetalk.EmcCommandParameters.tool_data', index=14, + number=104, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='tool_table', full_name='machinetalk.EmcCommandParameters.tool_table', index=15, + number=105, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\333\010')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=5158, + serialized_end=5640, +) + + +_EMCSTATUSUSERCOMMAND = _descriptor.Descriptor( + name='EmcStatusUserCommand', + full_name='machinetalk.EmcStatusUserCommand', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='index', full_name='machinetalk.EmcStatusUserCommand.index', index=0, + number=1, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='command', full_name='machinetalk.EmcStatusUserCommand.command', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\334\010')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=5642, + serialized_end=5704, +) + + +_EMCSTATUSUI = _descriptor.Descriptor( + name='EmcStatusUI', + full_name='machinetalk.EmcStatusUI', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='spindle_brake_visible', full_name='machinetalk.EmcStatusUI.spindle_brake_visible', index=0, + number=1, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='spindle_cw_visible', full_name='machinetalk.EmcStatusUI.spindle_cw_visible', index=1, + number=2, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='spindle_ccw_visible', full_name='machinetalk.EmcStatusUI.spindle_ccw_visible', index=2, + number=3, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='spindle_stop_visible', full_name='machinetalk.EmcStatusUI.spindle_stop_visible', index=3, + number=4, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='spindle_plus_visible', full_name='machinetalk.EmcStatusUI.spindle_plus_visible', index=4, + number=5, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='spindle_minus_visible', full_name='machinetalk.EmcStatusUI.spindle_minus_visible', index=5, + number=6, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='spindle_override_visible', full_name='machinetalk.EmcStatusUI.spindle_override_visible', index=6, + number=7, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='coolant_flood_visible', full_name='machinetalk.EmcStatusUI.coolant_flood_visible', index=7, + number=8, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='coolant_mist_visible', full_name='machinetalk.EmcStatusUI.coolant_mist_visible', index=8, + number=9, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\335\010')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=5707, + serialized_end=6002, +) + +_EMCTOOLDATA.fields_by_name['offset'].message_type = machinetalk_dot_protobuf_dot_preview__pb2._POSITION +_EMCSTATUSCONFIGAXIS.fields_by_name['axis_type'].enum_type = _EMCAXISTYPE +_EMCSTATUSCONFIG.fields_by_name['axis'].message_type = _EMCSTATUSCONFIGAXIS +_EMCSTATUSCONFIG.fields_by_name['kinematics_type'].enum_type = _EMCKINEMATICSTYPE +_EMCSTATUSCONFIG.fields_by_name['linear_units'].enum_type = _EMCLINEARUNITSTYPE +_EMCSTATUSCONFIG.fields_by_name['program_extension'].message_type = _EMCPROGRAMEXTENSION +_EMCSTATUSCONFIG.fields_by_name['position_offset'].enum_type = _EMCPOSITIONOFFSETTYPE +_EMCSTATUSCONFIG.fields_by_name['position_feedback'].enum_type = _EMCPOSITIONFEEDBACKTYPE +_EMCSTATUSCONFIG.fields_by_name['time_units'].enum_type = _EMCTIMEUNITSTYPE +_EMCSTATUSCONFIG.fields_by_name['user_command'].message_type = _EMCSTATUSUSERCOMMAND +_EMCSTATUSCONFIG.fields_by_name['angular_units'].enum_type = _EMCANGULARUNITSTYPE +_EMCSTATUSMOTION.fields_by_name['actual_position'].message_type = machinetalk_dot_protobuf_dot_preview__pb2._POSITION +_EMCSTATUSMOTION.fields_by_name['ain'].message_type = _EMCSTATUSANALOGIO +_EMCSTATUSMOTION.fields_by_name['aout'].message_type = _EMCSTATUSANALOGIO +_EMCSTATUSMOTION.fields_by_name['axis'].message_type = _EMCSTATUSMOTIONAXIS +_EMCSTATUSMOTION.fields_by_name['din'].message_type = _EMCSTATUSDIGITALIO +_EMCSTATUSMOTION.fields_by_name['dout'].message_type = _EMCSTATUSDIGITALIO +_EMCSTATUSMOTION.fields_by_name['dtg'].message_type = machinetalk_dot_protobuf_dot_preview__pb2._POSITION +_EMCSTATUSMOTION.fields_by_name['g5x_index'].enum_type = machinetalk_dot_protobuf_dot_types__pb2._ORIGININDEX +_EMCSTATUSMOTION.fields_by_name['g5x_offset'].message_type = machinetalk_dot_protobuf_dot_preview__pb2._POSITION +_EMCSTATUSMOTION.fields_by_name['g92_offset'].message_type = machinetalk_dot_protobuf_dot_preview__pb2._POSITION +_EMCSTATUSMOTION.fields_by_name['joint_actual_position'].message_type = machinetalk_dot_protobuf_dot_preview__pb2._POSITION +_EMCSTATUSMOTION.fields_by_name['joint_position'].message_type = machinetalk_dot_protobuf_dot_preview__pb2._POSITION +_EMCSTATUSMOTION.fields_by_name['limit'].message_type = _EMCSTATUSLIMIT +_EMCSTATUSMOTION.fields_by_name['motion_type'].enum_type = machinetalk_dot_protobuf_dot_motcmds__pb2._MOTIONTYPE +_EMCSTATUSMOTION.fields_by_name['motion_mode'].enum_type = _EMCTRAJECTORYMODETYPE +_EMCSTATUSMOTION.fields_by_name['position'].message_type = machinetalk_dot_protobuf_dot_preview__pb2._POSITION +_EMCSTATUSMOTION.fields_by_name['probed_position'].message_type = machinetalk_dot_protobuf_dot_preview__pb2._POSITION +_EMCSTATUSMOTION.fields_by_name['state'].enum_type = machinetalk_dot_protobuf_dot_types__pb2._RCS_STATUS +_EMCSTATUSIO.fields_by_name['tool_offset'].message_type = machinetalk_dot_protobuf_dot_preview__pb2._POSITION +_EMCSTATUSIO.fields_by_name['tool_table'].message_type = _EMCTOOLDATA +_EMCSTATUSTASK.fields_by_name['exec_state'].enum_type = _EMCTASKEXECSTATETYPE +_EMCSTATUSTASK.fields_by_name['task_mode'].enum_type = _EMCTASKMODETYPE +_EMCSTATUSTASK.fields_by_name['task_state'].enum_type = _EMCTASKSTATETYPE +_EMCSTATUSINTERP.fields_by_name['gcodes'].message_type = _EMCSTATUSGCODE +_EMCSTATUSINTERP.fields_by_name['interp_state'].enum_type = _EMCINTERPSTATETYPE +_EMCSTATUSINTERP.fields_by_name['interpreter_errcode'].enum_type = _EMCINTERPEXITCODETYPE +_EMCSTATUSINTERP.fields_by_name['mcodes'].message_type = _EMCSTATUSMCODE +_EMCSTATUSINTERP.fields_by_name['settings'].message_type = _EMCSTATUSSETTING +_EMCSTATUSINTERP.fields_by_name['program_units'].enum_type = _EMCCANONUNITSTYPE +_EMCCOMMANDPARAMETERS.fields_by_name['task_mode'].enum_type = _EMCTASKMODETYPE +_EMCCOMMANDPARAMETERS.fields_by_name['task_state'].enum_type = _EMCTASKSTATETYPE +_EMCCOMMANDPARAMETERS.fields_by_name['traj_mode'].enum_type = _EMCTRAJECTORYMODETYPE +_EMCCOMMANDPARAMETERS.fields_by_name['pose'].message_type = machinetalk_dot_protobuf_dot_emcclass__pb2._EMCPOSE +_EMCCOMMANDPARAMETERS.fields_by_name['tool_data'].message_type = _EMCTOOLDATA +_EMCCOMMANDPARAMETERS.fields_by_name['tool_table'].message_type = _EMCTOOLDATA +DESCRIPTOR.message_types_by_name['EmcToolData'] = _EMCTOOLDATA +DESCRIPTOR.message_types_by_name['EmcStatusMotionAxis'] = _EMCSTATUSMOTIONAXIS +DESCRIPTOR.message_types_by_name['EmcStatusConfigAxis'] = _EMCSTATUSCONFIGAXIS +DESCRIPTOR.message_types_by_name['EmcProgramExtension'] = _EMCPROGRAMEXTENSION +DESCRIPTOR.message_types_by_name['EmcStatusAnalogIO'] = _EMCSTATUSANALOGIO +DESCRIPTOR.message_types_by_name['EmcStatusDigitalIO'] = _EMCSTATUSDIGITALIO +DESCRIPTOR.message_types_by_name['EmcStatusLimit'] = _EMCSTATUSLIMIT +DESCRIPTOR.message_types_by_name['EmcStatusGCode'] = _EMCSTATUSGCODE +DESCRIPTOR.message_types_by_name['EmcStatusMCode'] = _EMCSTATUSMCODE +DESCRIPTOR.message_types_by_name['EmcStatusSetting'] = _EMCSTATUSSETTING +DESCRIPTOR.message_types_by_name['EmcStatusConfig'] = _EMCSTATUSCONFIG +DESCRIPTOR.message_types_by_name['EmcStatusMotion'] = _EMCSTATUSMOTION +DESCRIPTOR.message_types_by_name['EmcStatusIo'] = _EMCSTATUSIO +DESCRIPTOR.message_types_by_name['EmcStatusTask'] = _EMCSTATUSTASK +DESCRIPTOR.message_types_by_name['EmcStatusInterp'] = _EMCSTATUSINTERP +DESCRIPTOR.message_types_by_name['EmcCommandParameters'] = _EMCCOMMANDPARAMETERS +DESCRIPTOR.message_types_by_name['EmcStatusUserCommand'] = _EMCSTATUSUSERCOMMAND +DESCRIPTOR.message_types_by_name['EmcStatusUI'] = _EMCSTATUSUI +DESCRIPTOR.enum_types_by_name['EmcTaskExecStateType'] = _EMCTASKEXECSTATETYPE +DESCRIPTOR.enum_types_by_name['EmcInterpStateType'] = _EMCINTERPSTATETYPE +DESCRIPTOR.enum_types_by_name['EmcInterpExitCodeType'] = _EMCINTERPEXITCODETYPE +DESCRIPTOR.enum_types_by_name['EmcKinematicsType'] = _EMCKINEMATICSTYPE +DESCRIPTOR.enum_types_by_name['EmcTrajectoryModeType'] = _EMCTRAJECTORYMODETYPE +DESCRIPTOR.enum_types_by_name['EmcCanonUnitsType'] = _EMCCANONUNITSTYPE +DESCRIPTOR.enum_types_by_name['EmcLinearUnitsType'] = _EMCLINEARUNITSTYPE +DESCRIPTOR.enum_types_by_name['EmcAngularUnitsType'] = _EMCANGULARUNITSTYPE +DESCRIPTOR.enum_types_by_name['EmcTimeUnitsType'] = _EMCTIMEUNITSTYPE +DESCRIPTOR.enum_types_by_name['EmcTaskModeType'] = _EMCTASKMODETYPE +DESCRIPTOR.enum_types_by_name['EmcTaskStateType'] = _EMCTASKSTATETYPE +DESCRIPTOR.enum_types_by_name['EmcAxisType'] = _EMCAXISTYPE +DESCRIPTOR.enum_types_by_name['EmcPositionOffsetType'] = _EMCPOSITIONOFFSETTYPE +DESCRIPTOR.enum_types_by_name['EmcPositionFeedbackType'] = _EMCPOSITIONFEEDBACKTYPE + +EmcToolData = _reflection.GeneratedProtocolMessageType('EmcToolData', (_message.Message,), dict( + DESCRIPTOR = _EMCTOOLDATA, + __module__ = 'machinetalk.protobuf.status_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.EmcToolData) + )) +_sym_db.RegisterMessage(EmcToolData) + +EmcStatusMotionAxis = _reflection.GeneratedProtocolMessageType('EmcStatusMotionAxis', (_message.Message,), dict( + DESCRIPTOR = _EMCSTATUSMOTIONAXIS, + __module__ = 'machinetalk.protobuf.status_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.EmcStatusMotionAxis) + )) +_sym_db.RegisterMessage(EmcStatusMotionAxis) + +EmcStatusConfigAxis = _reflection.GeneratedProtocolMessageType('EmcStatusConfigAxis', (_message.Message,), dict( + DESCRIPTOR = _EMCSTATUSCONFIGAXIS, + __module__ = 'machinetalk.protobuf.status_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.EmcStatusConfigAxis) + )) +_sym_db.RegisterMessage(EmcStatusConfigAxis) + +EmcProgramExtension = _reflection.GeneratedProtocolMessageType('EmcProgramExtension', (_message.Message,), dict( + DESCRIPTOR = _EMCPROGRAMEXTENSION, + __module__ = 'machinetalk.protobuf.status_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.EmcProgramExtension) + )) +_sym_db.RegisterMessage(EmcProgramExtension) + +EmcStatusAnalogIO = _reflection.GeneratedProtocolMessageType('EmcStatusAnalogIO', (_message.Message,), dict( + DESCRIPTOR = _EMCSTATUSANALOGIO, + __module__ = 'machinetalk.protobuf.status_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.EmcStatusAnalogIO) + )) +_sym_db.RegisterMessage(EmcStatusAnalogIO) + +EmcStatusDigitalIO = _reflection.GeneratedProtocolMessageType('EmcStatusDigitalIO', (_message.Message,), dict( + DESCRIPTOR = _EMCSTATUSDIGITALIO, + __module__ = 'machinetalk.protobuf.status_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.EmcStatusDigitalIO) + )) +_sym_db.RegisterMessage(EmcStatusDigitalIO) + +EmcStatusLimit = _reflection.GeneratedProtocolMessageType('EmcStatusLimit', (_message.Message,), dict( + DESCRIPTOR = _EMCSTATUSLIMIT, + __module__ = 'machinetalk.protobuf.status_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.EmcStatusLimit) + )) +_sym_db.RegisterMessage(EmcStatusLimit) + +EmcStatusGCode = _reflection.GeneratedProtocolMessageType('EmcStatusGCode', (_message.Message,), dict( + DESCRIPTOR = _EMCSTATUSGCODE, + __module__ = 'machinetalk.protobuf.status_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.EmcStatusGCode) + )) +_sym_db.RegisterMessage(EmcStatusGCode) + +EmcStatusMCode = _reflection.GeneratedProtocolMessageType('EmcStatusMCode', (_message.Message,), dict( + DESCRIPTOR = _EMCSTATUSMCODE, + __module__ = 'machinetalk.protobuf.status_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.EmcStatusMCode) + )) +_sym_db.RegisterMessage(EmcStatusMCode) + +EmcStatusSetting = _reflection.GeneratedProtocolMessageType('EmcStatusSetting', (_message.Message,), dict( + DESCRIPTOR = _EMCSTATUSSETTING, + __module__ = 'machinetalk.protobuf.status_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.EmcStatusSetting) + )) +_sym_db.RegisterMessage(EmcStatusSetting) + +EmcStatusConfig = _reflection.GeneratedProtocolMessageType('EmcStatusConfig', (_message.Message,), dict( + DESCRIPTOR = _EMCSTATUSCONFIG, + __module__ = 'machinetalk.protobuf.status_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.EmcStatusConfig) + )) +_sym_db.RegisterMessage(EmcStatusConfig) + +EmcStatusMotion = _reflection.GeneratedProtocolMessageType('EmcStatusMotion', (_message.Message,), dict( + DESCRIPTOR = _EMCSTATUSMOTION, + __module__ = 'machinetalk.protobuf.status_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.EmcStatusMotion) + )) +_sym_db.RegisterMessage(EmcStatusMotion) + +EmcStatusIo = _reflection.GeneratedProtocolMessageType('EmcStatusIo', (_message.Message,), dict( + DESCRIPTOR = _EMCSTATUSIO, + __module__ = 'machinetalk.protobuf.status_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.EmcStatusIo) + )) +_sym_db.RegisterMessage(EmcStatusIo) + +EmcStatusTask = _reflection.GeneratedProtocolMessageType('EmcStatusTask', (_message.Message,), dict( + DESCRIPTOR = _EMCSTATUSTASK, + __module__ = 'machinetalk.protobuf.status_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.EmcStatusTask) + )) +_sym_db.RegisterMessage(EmcStatusTask) + +EmcStatusInterp = _reflection.GeneratedProtocolMessageType('EmcStatusInterp', (_message.Message,), dict( + DESCRIPTOR = _EMCSTATUSINTERP, + __module__ = 'machinetalk.protobuf.status_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.EmcStatusInterp) + )) +_sym_db.RegisterMessage(EmcStatusInterp) + +EmcCommandParameters = _reflection.GeneratedProtocolMessageType('EmcCommandParameters', (_message.Message,), dict( + DESCRIPTOR = _EMCCOMMANDPARAMETERS, + __module__ = 'machinetalk.protobuf.status_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.EmcCommandParameters) + )) +_sym_db.RegisterMessage(EmcCommandParameters) + +EmcStatusUserCommand = _reflection.GeneratedProtocolMessageType('EmcStatusUserCommand', (_message.Message,), dict( + DESCRIPTOR = _EMCSTATUSUSERCOMMAND, + __module__ = 'machinetalk.protobuf.status_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.EmcStatusUserCommand) + )) +_sym_db.RegisterMessage(EmcStatusUserCommand) + +EmcStatusUI = _reflection.GeneratedProtocolMessageType('EmcStatusUI', (_message.Message,), dict( + DESCRIPTOR = _EMCSTATUSUI, + __module__ = 'machinetalk.protobuf.status_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.EmcStatusUI) + )) +_sym_db.RegisterMessage(EmcStatusUI) + + +_EMCTOOLDATA.has_options = True +_EMCTOOLDATA._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\314\010')) +_EMCSTATUSMOTIONAXIS.has_options = True +_EMCSTATUSMOTIONAXIS._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\315\010')) +_EMCSTATUSCONFIGAXIS.has_options = True +_EMCSTATUSCONFIGAXIS._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\316\010')) +_EMCPROGRAMEXTENSION.has_options = True +_EMCPROGRAMEXTENSION._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\317\010')) +_EMCSTATUSANALOGIO.has_options = True +_EMCSTATUSANALOGIO._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\320\010')) +_EMCSTATUSDIGITALIO.has_options = True +_EMCSTATUSDIGITALIO._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\321\010')) +_EMCSTATUSLIMIT.has_options = True +_EMCSTATUSLIMIT._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\322\010')) +_EMCSTATUSGCODE.has_options = True +_EMCSTATUSGCODE._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\323\010')) +_EMCSTATUSMCODE.has_options = True +_EMCSTATUSMCODE._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\324\010')) +_EMCSTATUSSETTING.has_options = True +_EMCSTATUSSETTING._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\325\010')) +_EMCSTATUSCONFIG.has_options = True +_EMCSTATUSCONFIG._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\326\010')) +_EMCSTATUSMOTION.has_options = True +_EMCSTATUSMOTION._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\327\010')) +_EMCSTATUSIO.has_options = True +_EMCSTATUSIO._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\330\010')) +_EMCSTATUSTASK.has_options = True +_EMCSTATUSTASK._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\331\010')) +_EMCSTATUSINTERP.has_options = True +_EMCSTATUSINTERP._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\332\010')) +_EMCCOMMANDPARAMETERS.has_options = True +_EMCCOMMANDPARAMETERS._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\333\010')) +_EMCSTATUSUSERCOMMAND.has_options = True +_EMCSTATUSUSERCOMMAND._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\334\010')) +_EMCSTATUSUI.has_options = True +_EMCSTATUSUI._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\335\010')) +# @@protoc_insertion_point(module_scope) diff --git a/python/machinetalk/protobuf/task_pb2.py b/python/machinetalk/protobuf/task_pb2.py new file mode 100644 index 0000000000..f6029fffd3 --- /dev/null +++ b/python/machinetalk/protobuf/task_pb2.py @@ -0,0 +1,350 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: machinetalk/protobuf/task.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from machinetalk.protobuf import types_pb2 as machinetalk_dot_protobuf_dot_types__pb2 +from machinetalk.protobuf import nanopb_pb2 as machinetalk_dot_protobuf_dot_nanopb__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='machinetalk/protobuf/task.proto', + package='machinetalk', + syntax='proto2', + serialized_pb=_b('\n\x1fmachinetalk/protobuf/task.proto\x12\x0bmachinetalk\x1a machinetalk/protobuf/types.proto\x1a!machinetalk/protobuf/nanopb.proto\"8\n\x0fTaskPlanExecute\x12\x0f\n\x07\x63ommand\x18\n \x01(\t\x12\x0c\n\x04line\x18\x1e \x01(\x0f:\x06\x92?\x03H\xb0\t\",\n\x13TaskPlanBlockDelete\x12\r\n\x05state\x18\n \x02(\x08:\x06\x92?\x03H\xb1\t\"-\n\x14TaskPlanOptionalStop\x12\r\n\x05state\x18\n \x02(\x08:\x06\x92?\x03H\xb2\t\"(\n\x0cTaskPlanOpen\x12\x10\n\x08\x66ilename\x18\n \x02(\t:\x06\x92?\x03H\xb3\t\"R\n\rTaskPlanReply\x12\'\n\x03\x63md\x18\n \x02(\x0e\x32\x1a.machinetalk.ContainerType\x12\x10\n\x08\x65rrormsg\x18\x14 \x01(\t:\x06\x92?\x03H\xb4\t\"#\n\tTaskReply\x12\x0e\n\x06ticket\x18\n \x02(\x07:\x06\x92?\x03H\xb5\t\"^\n\x0cTicketUpdate\x12\x0f\n\x07\x63ticket\x18\n \x02(\x07\x12\'\n\x06status\x18\x14 \x02(\x0e\x32\x17.machinetalk.RCS_STATUS\x12\x0c\n\x04text\x18\x1e \x01(\t:\x06\x92?\x03H\xb6\t') + , + dependencies=[machinetalk_dot_protobuf_dot_types__pb2.DESCRIPTOR,machinetalk_dot_protobuf_dot_nanopb__pb2.DESCRIPTOR,]) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + + + + +_TASKPLANEXECUTE = _descriptor.Descriptor( + name='TaskPlanExecute', + full_name='machinetalk.TaskPlanExecute', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='command', full_name='machinetalk.TaskPlanExecute.command', index=0, + number=10, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='line', full_name='machinetalk.TaskPlanExecute.line', index=1, + number=30, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\260\t')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=117, + serialized_end=173, +) + + +_TASKPLANBLOCKDELETE = _descriptor.Descriptor( + name='TaskPlanBlockDelete', + full_name='machinetalk.TaskPlanBlockDelete', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='state', full_name='machinetalk.TaskPlanBlockDelete.state', index=0, + number=10, type=8, cpp_type=7, label=2, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\261\t')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=175, + serialized_end=219, +) + + +_TASKPLANOPTIONALSTOP = _descriptor.Descriptor( + name='TaskPlanOptionalStop', + full_name='machinetalk.TaskPlanOptionalStop', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='state', full_name='machinetalk.TaskPlanOptionalStop.state', index=0, + number=10, type=8, cpp_type=7, label=2, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\262\t')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=221, + serialized_end=266, +) + + +_TASKPLANOPEN = _descriptor.Descriptor( + name='TaskPlanOpen', + full_name='machinetalk.TaskPlanOpen', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='filename', full_name='machinetalk.TaskPlanOpen.filename', index=0, + number=10, type=9, cpp_type=9, label=2, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\263\t')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=268, + serialized_end=308, +) + + +_TASKPLANREPLY = _descriptor.Descriptor( + name='TaskPlanReply', + full_name='machinetalk.TaskPlanReply', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='cmd', full_name='machinetalk.TaskPlanReply.cmd', index=0, + number=10, type=14, cpp_type=8, label=2, + has_default_value=False, default_value=2, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='errormsg', full_name='machinetalk.TaskPlanReply.errormsg', index=1, + number=20, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\264\t')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=310, + serialized_end=392, +) + + +_TASKREPLY = _descriptor.Descriptor( + name='TaskReply', + full_name='machinetalk.TaskReply', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='ticket', full_name='machinetalk.TaskReply.ticket', index=0, + number=10, type=7, cpp_type=3, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\265\t')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=394, + serialized_end=429, +) + + +_TICKETUPDATE = _descriptor.Descriptor( + name='TicketUpdate', + full_name='machinetalk.TicketUpdate', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='cticket', full_name='machinetalk.TicketUpdate.cticket', index=0, + number=10, type=7, cpp_type=3, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='status', full_name='machinetalk.TicketUpdate.status', index=1, + number=20, type=14, cpp_type=8, label=2, + has_default_value=False, default_value=-1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='text', full_name='machinetalk.TicketUpdate.text', index=2, + number=30, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\266\t')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=431, + serialized_end=525, +) + +_TASKPLANREPLY.fields_by_name['cmd'].enum_type = machinetalk_dot_protobuf_dot_types__pb2._CONTAINERTYPE +_TICKETUPDATE.fields_by_name['status'].enum_type = machinetalk_dot_protobuf_dot_types__pb2._RCS_STATUS +DESCRIPTOR.message_types_by_name['TaskPlanExecute'] = _TASKPLANEXECUTE +DESCRIPTOR.message_types_by_name['TaskPlanBlockDelete'] = _TASKPLANBLOCKDELETE +DESCRIPTOR.message_types_by_name['TaskPlanOptionalStop'] = _TASKPLANOPTIONALSTOP +DESCRIPTOR.message_types_by_name['TaskPlanOpen'] = _TASKPLANOPEN +DESCRIPTOR.message_types_by_name['TaskPlanReply'] = _TASKPLANREPLY +DESCRIPTOR.message_types_by_name['TaskReply'] = _TASKREPLY +DESCRIPTOR.message_types_by_name['TicketUpdate'] = _TICKETUPDATE + +TaskPlanExecute = _reflection.GeneratedProtocolMessageType('TaskPlanExecute', (_message.Message,), dict( + DESCRIPTOR = _TASKPLANEXECUTE, + __module__ = 'machinetalk.protobuf.task_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.TaskPlanExecute) + )) +_sym_db.RegisterMessage(TaskPlanExecute) + +TaskPlanBlockDelete = _reflection.GeneratedProtocolMessageType('TaskPlanBlockDelete', (_message.Message,), dict( + DESCRIPTOR = _TASKPLANBLOCKDELETE, + __module__ = 'machinetalk.protobuf.task_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.TaskPlanBlockDelete) + )) +_sym_db.RegisterMessage(TaskPlanBlockDelete) + +TaskPlanOptionalStop = _reflection.GeneratedProtocolMessageType('TaskPlanOptionalStop', (_message.Message,), dict( + DESCRIPTOR = _TASKPLANOPTIONALSTOP, + __module__ = 'machinetalk.protobuf.task_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.TaskPlanOptionalStop) + )) +_sym_db.RegisterMessage(TaskPlanOptionalStop) + +TaskPlanOpen = _reflection.GeneratedProtocolMessageType('TaskPlanOpen', (_message.Message,), dict( + DESCRIPTOR = _TASKPLANOPEN, + __module__ = 'machinetalk.protobuf.task_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.TaskPlanOpen) + )) +_sym_db.RegisterMessage(TaskPlanOpen) + +TaskPlanReply = _reflection.GeneratedProtocolMessageType('TaskPlanReply', (_message.Message,), dict( + DESCRIPTOR = _TASKPLANREPLY, + __module__ = 'machinetalk.protobuf.task_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.TaskPlanReply) + )) +_sym_db.RegisterMessage(TaskPlanReply) + +TaskReply = _reflection.GeneratedProtocolMessageType('TaskReply', (_message.Message,), dict( + DESCRIPTOR = _TASKREPLY, + __module__ = 'machinetalk.protobuf.task_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.TaskReply) + )) +_sym_db.RegisterMessage(TaskReply) + +TicketUpdate = _reflection.GeneratedProtocolMessageType('TicketUpdate', (_message.Message,), dict( + DESCRIPTOR = _TICKETUPDATE, + __module__ = 'machinetalk.protobuf.task_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.TicketUpdate) + )) +_sym_db.RegisterMessage(TicketUpdate) + + +_TASKPLANEXECUTE.has_options = True +_TASKPLANEXECUTE._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\260\t')) +_TASKPLANBLOCKDELETE.has_options = True +_TASKPLANBLOCKDELETE._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\261\t')) +_TASKPLANOPTIONALSTOP.has_options = True +_TASKPLANOPTIONALSTOP._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\262\t')) +_TASKPLANOPEN.has_options = True +_TASKPLANOPEN._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\263\t')) +_TASKPLANREPLY.has_options = True +_TASKPLANREPLY._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\264\t')) +_TASKREPLY.has_options = True +_TASKREPLY._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\265\t')) +_TICKETUPDATE.has_options = True +_TICKETUPDATE._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\266\t')) +# @@protoc_insertion_point(module_scope) diff --git a/python/machinetalk/protobuf/test_pb2.py b/python/machinetalk/protobuf/test_pb2.py new file mode 100644 index 0000000000..162bb0d548 --- /dev/null +++ b/python/machinetalk/protobuf/test_pb2.py @@ -0,0 +1,201 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: machinetalk/protobuf/test.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf.internal import enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from machinetalk.protobuf import emcclass_pb2 as machinetalk_dot_protobuf_dot_emcclass__pb2 +from machinetalk.protobuf import nanopb_pb2 as machinetalk_dot_protobuf_dot_nanopb__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='machinetalk/protobuf/test.proto', + package='machinetalk', + syntax='proto2', + serialized_pb=_b('\n\x1fmachinetalk/protobuf/test.proto\x12\x0bmachinetalk\x1a#machinetalk/protobuf/emcclass.proto\x1a!machinetalk/protobuf/nanopb.proto\"\xb9\x01\n\x05Test1\x12#\n\x02op\x18\n \x02(\x0e\x32\x17.machinetalk.TestOpType\x12!\n\x03\x65nd\x18\x14 \x02(\x0b\x32\x14.machinetalk.EmcPose\x12(\n\x06\x63\x65nter\x18\x1e \x01(\x0b\x32\x18.machinetalk.PmCartesian\x12(\n\x06normal\x18( \x01(\x0b\x32\x18.machinetalk.PmCartesian\x12\x0c\n\x04turn\x18\x32 \x01(\x05:\x06\x92?\x03H\x94\n\"\x0f\n\x05Test2:\x06\x92?\x03H\x95\n\"\x0f\n\x05Test3:\x06\x92?\x03H\x96\n*\"\n\nTestOpType\x12\x08\n\x04LINE\x10\n\x12\n\n\x06\x43IRCLE\x10\x14') + , + dependencies=[machinetalk_dot_protobuf_dot_emcclass__pb2.DESCRIPTOR,machinetalk_dot_protobuf_dot_nanopb__pb2.DESCRIPTOR,]) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +_TESTOPTYPE = _descriptor.EnumDescriptor( + name='TestOpType', + full_name='machinetalk.TestOpType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='LINE', index=0, number=10, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='CIRCLE', index=1, number=20, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=342, + serialized_end=376, +) +_sym_db.RegisterEnumDescriptor(_TESTOPTYPE) + +TestOpType = enum_type_wrapper.EnumTypeWrapper(_TESTOPTYPE) +LINE = 10 +CIRCLE = 20 + + + +_TEST1 = _descriptor.Descriptor( + name='Test1', + full_name='machinetalk.Test1', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='op', full_name='machinetalk.Test1.op', index=0, + number=10, type=14, cpp_type=8, label=2, + has_default_value=False, default_value=10, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='end', full_name='machinetalk.Test1.end', index=1, + number=20, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='center', full_name='machinetalk.Test1.center', index=2, + number=30, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='normal', full_name='machinetalk.Test1.normal', index=3, + number=40, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='turn', full_name='machinetalk.Test1.turn', index=4, + number=50, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\224\n')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=121, + serialized_end=306, +) + + +_TEST2 = _descriptor.Descriptor( + name='Test2', + full_name='machinetalk.Test2', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\225\n')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=308, + serialized_end=323, +) + + +_TEST3 = _descriptor.Descriptor( + name='Test3', + full_name='machinetalk.Test3', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\226\n')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=325, + serialized_end=340, +) + +_TEST1.fields_by_name['op'].enum_type = _TESTOPTYPE +_TEST1.fields_by_name['end'].message_type = machinetalk_dot_protobuf_dot_emcclass__pb2._EMCPOSE +_TEST1.fields_by_name['center'].message_type = machinetalk_dot_protobuf_dot_emcclass__pb2._PMCARTESIAN +_TEST1.fields_by_name['normal'].message_type = machinetalk_dot_protobuf_dot_emcclass__pb2._PMCARTESIAN +DESCRIPTOR.message_types_by_name['Test1'] = _TEST1 +DESCRIPTOR.message_types_by_name['Test2'] = _TEST2 +DESCRIPTOR.message_types_by_name['Test3'] = _TEST3 +DESCRIPTOR.enum_types_by_name['TestOpType'] = _TESTOPTYPE + +Test1 = _reflection.GeneratedProtocolMessageType('Test1', (_message.Message,), dict( + DESCRIPTOR = _TEST1, + __module__ = 'machinetalk.protobuf.test_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Test1) + )) +_sym_db.RegisterMessage(Test1) + +Test2 = _reflection.GeneratedProtocolMessageType('Test2', (_message.Message,), dict( + DESCRIPTOR = _TEST2, + __module__ = 'machinetalk.protobuf.test_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Test2) + )) +_sym_db.RegisterMessage(Test2) + +Test3 = _reflection.GeneratedProtocolMessageType('Test3', (_message.Message,), dict( + DESCRIPTOR = _TEST3, + __module__ = 'machinetalk.protobuf.test_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Test3) + )) +_sym_db.RegisterMessage(Test3) + + +_TEST1.has_options = True +_TEST1._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\224\n')) +_TEST2.has_options = True +_TEST2._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\225\n')) +_TEST3.has_options = True +_TEST3._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\226\n')) +# @@protoc_insertion_point(module_scope) diff --git a/python/machinetalk/protobuf/types_pb2.py b/python/machinetalk/protobuf/types_pb2.py new file mode 100644 index 0000000000..9fe921b113 --- /dev/null +++ b/python/machinetalk/protobuf/types_pb2.py @@ -0,0 +1,2903 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: machinetalk/protobuf/types.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf.internal import enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from machinetalk.protobuf import nanopb_pb2 as machinetalk_dot_protobuf_dot_nanopb__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='machinetalk/protobuf/types.proto', + package='machinetalk', + syntax='proto2', + serialized_pb=_b('\n machinetalk/protobuf/types.proto\x12\x0bmachinetalk\x1a!machinetalk/protobuf/nanopb.proto*\xf7\x01\n\tValueType\x12\x0b\n\x07HAL_BIT\x10\x01\x12\r\n\tHAL_FLOAT\x10\x02\x12\x0b\n\x07HAL_S32\x10\x03\x12\x0b\n\x07HAL_U32\x10\x04\x12\x0b\n\x07HAL_S64\x10\x05\x12\x0b\n\x07HAL_U64\x10\x06\x12\n\n\x06STRING\x10\x07\x12\t\n\x05\x42YTES\x10\x08\x12\t\n\x05INT32\x10\x14\x12\n\n\x06UINT32\x10\x1e\x12\t\n\x05INT64\x10(\x12\n\n\x06UINT64\x10\x32\x12\n\n\x06\x44OUBLE\x10<\x12\x08\n\x04\x42OOL\x10P\x12\r\n\tCARTESIAN\x10\x64\x12\x14\n\x10LEGACY_CARTESIAN\x10n\x12\x08\n\x04POSE\x10x\x12\x10\n\x0bLEGACY_POSE\x10\x82\x01*6\n\x0fHalPinDirection\x12\n\n\x06HAL_IN\x10\x10\x12\x0b\n\x07HAL_OUT\x10 \x12\n\n\x06HAL_IO\x10\x30*,\n\x11HalParamDirection\x12\n\n\x06HAL_RO\x10@\x12\x0b\n\x06HAL_RW\x10\xc0\x01*M\n\x0cHalFunctType\x12\x18\n\x14\x46S_LEGACY_THREADFUNC\x10\x00\x12\x12\n\x0e\x46S_XTHREADFUNC\x10\x01\x12\x0f\n\x0b\x46S_USERLAND\x10\x02*\xdb\x01\n\nObjectType\x12\x16\n\x12HAL_OBJECT_INVALID\x10\x00\x12\x0b\n\x07HAL_PIN\x10\x01\x12\x0e\n\nHAL_SIGNAL\x10\x02\x12\r\n\tHAL_PARAM\x10\x03\x12\x0e\n\nHAL_THREAD\x10\x04\x12\r\n\tHAL_FUNCT\x10\x05\x12\x11\n\rHAL_COMPONENT\x10\x06\x12\x0e\n\nHAL_VTABLE\x10\x07\x12\x0c\n\x08HAL_INST\x10\x08\x12\x0c\n\x08HAL_RING\x10\t\x12\r\n\tHAL_GROUP\x10\n\x12\x0e\n\nHAL_MEMBER\x10\x0b\x12\x0c\n\x08HAL_PLUG\x10\x0c*\x81\x01\n\tmsgidType\x12\x0e\n\tMSGID_MAX\x10\xa0\x1f\x12\x1a\n\x15MSGID_ROUTE_DELIMITER\x10\xa1\x1f\x12\x14\n\x0fMSGID_ERROR_MSG\x10\xa2\x1f\x12\x0f\n\nMSGID_BLOB\x10\xa3\x1f\x12\x11\n\x0cMSGID_STRING\x10\xa4\x1f\x12\x0e\n\tMSGID_HOP\x10\xa5\x1f*\xee\x01\n\nsocketType\x12\x0f\n\x0bST_ZMQ_PAIR\x10\x00\x12\x0e\n\nST_ZMQ_PUB\x10\x01\x12\x0e\n\nST_ZMQ_SUB\x10\x02\x12\x0e\n\nST_ZMQ_REQ\x10\x03\x12\x0e\n\nST_ZMQ_REP\x10\x04\x12\x11\n\rST_ZMQ_DEALER\x10\x05\x12\x11\n\rST_ZMQ_ROUTER\x10\x06\x12\x0f\n\x0bST_ZMQ_PULL\x10\x07\x12\x0f\n\x0bST_ZMQ_PUSH\x10\x08\x12\x0f\n\x0bST_ZMQ_XPUB\x10\t\x12\x0f\n\x0bST_ZMQ_XSUB\x10\n\x12\x11\n\rST_ZMQ_STREAM\x10\x0b\x12\x12\n\x0eST_ZMQ_INVALID\x10\x0f*b\n\x11securityMechanism\x12\x18\n\x0bSM_ZMQ_NONE\x10\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x12\x0f\n\x0bSM_ZMQ_NULL\x10\x00\x12\x10\n\x0cSM_ZMQ_PLAIN\x10\x01\x12\x10\n\x0cSM_ZMQ_CURVE\x10\x02*l\n\nRCS_STATUS\x12!\n\x14UNINITIALIZED_STATUS\x10\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x12\x0c\n\x08RCS_DONE\x10\x01\x12\x0c\n\x08RCS_EXEC\x10\x02\x12\r\n\tRCS_ERROR\x10\x03\x12\x10\n\x0cRCS_RECEIVED\x10\x04*:\n\tMsgOrigin\x12\x0e\n\nMSG_KERNEL\x10\x00\x12\x0e\n\nMSG_RTUSER\x10\x01\x12\r\n\tMSG_ULAPI\x10\x02*\x7f\n\x08MsgLevel\x12\x12\n\x0eRTAPI_MSG_NONE\x10\x00\x12\x11\n\rRTAPI_MSG_ERR\x10\x01\x12\x12\n\x0eRTAPI_MSG_WARN\x10\x02\x12\x12\n\x0eRTAPI_MSG_INFO\x10\x03\x12\x11\n\rRTAPI_MSG_DBG\x10\x04\x12\x11\n\rRTAPI_MSG_ALL\x10\x05*\xa0\x01\n\x0cOriginDetail\x12\x0f\n\x0bUNIX_SIGNAL\x10\n\x12\x15\n\x11INSTANCE_SHUTDOWN\x10\x14\x12\x0e\n\nZMQ_SOCKET\x10\x46\x12\r\n\tNML_LAYER\x10P\x12\r\n\tRCS_LAYER\x10Z\x12\r\n\tCMS_LAYER\x10\x64\x12\x0c\n\x08IP_LAYER\x10n\x12\r\n\tTCP_LAYER\x10x\x12\x0e\n\tPGM_LAYER\x10\x82\x01*\xa5\x01\n\nOriginType\x12\x0b\n\x07PROCESS\x10\n\x12\x0f\n\x0bUSER_THREAD\x10\x14\x12\r\n\tRT_THREAD\x10\x1e\x12\r\n\tCOMPONENT\x10(\x12\x13\n\x0fTHREAD_FUNCTION\x10\x32\x12\x12\n\x0e\x43OMPONENT_INIT\x10<\x12\x12\n\x0e\x43OMPONENT_EXIT\x10\x46\x12\t\n\x05GROUP\x10P\x12\x07\n\x03PIN\x10Z\x12\n\n\x06SIGNAL\x10\x64*:\n\x08Severity\x12\x13\n\x0fS_INFORMATIONAL\x10\x01\x12\r\n\tS_WARNING\x10\x02\x12\n\n\x06S_FAIL\x10\x04*D\n\nStatusType\x12\x0c\n\x08\x45NQUEUED\x10\x01\x12\x0e\n\nPROCESSING\x10\x02\x12\x0c\n\x08\x43OMPLETE\x10\x03\x12\n\n\x06\x46\x41ILED\x10\x04*Y\n\tReplyType\x12\x08\n\x04NONE\x10\x00\x12\x10\n\x0cON_RECEPTION\x10\x01\x12\r\n\tON_QUEUED\x10\x02\x12\x11\n\rON_COMPLETION\x10\x04\x12\x0e\n\tALL_STEPS\x10\xff\x01*\xd6\x02\n\x0bServiceType\x12\x0e\n\nST_LOGGING\x10\x01\x12\r\n\tST_CONFIG\x10\x02\x12\x0c\n\x08ST_REDIS\x10\x03\x12\x0b\n\x07ST_HTTP\x10\x04\x12\x0c\n\x08ST_HTTPS\x10\x05\x12\x10\n\x0cST_WEBSOCKET\x10\x06\x12\x11\n\rST_WEBSOCKETS\x10\x07\x12\x14\n\x10ST_RTAPI_COMMAND\x10\x08\x12\x13\n\x0fST_STP_HALGROUP\x10\t\x12\x13\n\x0fST_STP_HALRCOMP\x10\n\x12\x11\n\rST_STP_INTERP\x10\x0b\x12\x0f\n\x0bST_STP_TASK\x10\x0c\x12\x13\n\x0fST_HAL_RCOMMAND\x10\r\x12\x13\n\x0fST_TASK_COMMAND\x10\x0e\x12\x15\n\x11ST_INTERP_COMMAND\x10\x0f\x12\x19\n\x15ST_MESSAGEBUS_COMMAND\x10\x10\x12\x1a\n\x16ST_MESSAGEBUS_RESPONSE\x10\x11*1\n\nServiceAPI\x12\x13\n\x0fSA_ZMQ_PROTOBUF\x10\x01\x12\x0e\n\nSA_WS_JSON\x10\x02*\x9f\x46\n\rContainerType\x12\x10\n\x0cMT_RTMESSAGE\x10\x02\x12\r\n\tMT_MOTCMD\x10\x03\x12\x10\n\x0cMT_MOTSTATUS\x10\x04\x12\x14\n\x10MT_LEGACY_MOTCMD\x10\x05\x12\x17\n\x13MT_LEGACY_MOTSTATUS\x10\x06\x12\n\n\x06MT_WOU\x10\x07\x12\x10\n\x0cMT_HALUPDATE\x10\x08\x12\x14\n\x10MT_RTAPI_MESSAGE\x10\t\x12\x12\n\x0eMT_LOG_MESSAGE\x10\n\x12\x0e\n\nMT_PREVIEW\x10\x0b\x12\x0f\n\x0bMT_PROGRESS\x10\x0c\x12\x12\n\x0eMT_INTERP_STAT\x10\r\x12\r\n\tMT_SYSLOG\x10\x12\x12\x11\n\rMT_LEGACY_NML\x10\x13\x12\x17\n\x13MT_LEGACY_MOTCONFIG\x10\x14\x12\x16\n\x12MT_STP_UPDATE_FULL\x10\x1a\x12\x11\n\rMT_STP_UPDATE\x10\x1c\x12\x12\n\x0eMT_STP_NOGROUP\x10\x1b\x12\x0f\n\x0bMT_SHUTDOWN\x10-\x12\x17\n\x13MT_CONFIRM_SHUTDOWN\x10\x32\x12\x11\n\rMT_RTMESSAGE0\x10\x1e\x12\x11\n\rMT_RTMESSAGE1\x10\x1f\x12\x11\n\rMT_RTMESSAGE2\x10 \x12\x11\n\rMT_RTMESSAGE3\x10!\x12\x11\n\rMT_RTMESSAGE4\x10\"\x12\x0c\n\x08MT_ASCII\x10\x64\x12\x0e\n\nMT_UNICODE\x10\x65\x12\x0c\n\x08MT_GCODE\x10\x66\x12\r\n\tMT_PYTHON\x10g\x12\r\n\tMT_PICKLE\x10h\x12\n\n\x06MT_TCL\x10i\x12\n\n\x06MT_XML\x10j\x12\x0b\n\x07MT_JSON\x10k\x12\x0b\n\x07MT_JPEG\x10l\x12\n\n\x06MT_PNG\x10m\x12\x0b\n\x07MT_TIFF\x10n\x12\x11\n\rMT_POSTSCRIPT\x10o\x12\n\n\x06MT_SVG\x10p\x12\x15\n\x10MT_ZMQ_SUBSCRIBE\x10\x96\x01\x12\x17\n\x12MT_ZMQ_UNSUBSCRIBE\x10\x97\x01\x12\x0c\n\x07MT_PING\x10\xd2\x01\x12\x18\n\x13MT_PING_ACKNOWLEDGE\x10\xd7\x01\x12\x0e\n\tMT_REJECT\x10\xdc\x01\x12\x0c\n\x07MT_DONE\x10\xf0\x01\x12\x17\n\x12MT_SERVICE_REQUEST\x10\xfa\x01\x12\x1c\n\x17MT_SERVICE_ANNOUNCEMENT\x10\xfb\x01\x12\x15\n\x10MT_SERVICE_PROBE\x10\xfc\x01\x12!\n\x1cMT_MESSAGEBUS_NO_DESTINATION\x10\xff\x01\x12\x15\n\x10MT_HALRCOMP_BIND\x10\x80\x02\x12\x1d\n\x18MT_HALRCOMP_BIND_CONFIRM\x10\x81\x02\x12\x1c\n\x17MT_HALRCOMP_BIND_REJECT\x10\x82\x02\x12\x14\n\x0fMT_HALRCOMP_SET\x10\x83\x02\x12\x1b\n\x16MT_HALRCOMP_SET_REJECT\x10\x84\x02\x12\x14\n\x0fMT_HALRCOMP_ACK\x10\x87\x02\x12\x17\n\x12MT_HALRCOMMAND_SET\x10\x89\x02\x12\x1e\n\x19MT_HALRCOMMAND_SET_REJECT\x10\x8a\x02\x12\x17\n\x12MT_HALRCOMMAND_GET\x10\x8b\x02\x12\x1e\n\x19MT_HALRCOMMAND_GET_REJECT\x10\x8c\x02\x12\x1a\n\x15MT_HALRCOMMAND_CREATE\x10\x8d\x02\x12!\n\x1cMT_HALRCOMMAND_CREATE_REJECT\x10\x8e\x02\x12\x1a\n\x15MT_HALRCOMMAND_DELETE\x10\x8f\x02\x12!\n\x1cMT_HALRCOMMAND_DELETE_REJECT\x10\x90\x02\x12\x17\n\x12MT_HALRCOMMAND_ACK\x10\x91\x02\x12\x19\n\x14MT_HALRCOMMAND_ERROR\x10\x92\x02\x12\x1c\n\x17MT_HALRCOMMAND_DESCRIBE\x10\x94\x02\x12\x1f\n\x1aMT_HALRCOMMAND_DESCRIPTION\x10\x95\x02\x12\x1c\n\x17MT_HALRCOMP_FULL_UPDATE\x10\xa0\x02\x12#\n\x1eMT_HALRCOMP_INCREMENTAL_UPDATE\x10\xa1\x02\x12\x16\n\x11MT_HALRCOMP_ERROR\x10\xa2\x02\x12\x15\n\x10MT_HALGROUP_BIND\x10\xa6\x02\x12\x1d\n\x18MT_HALGROUP_BIND_CONFIRM\x10\xa7\x02\x12\x1c\n\x17MT_HALGROUP_BIND_REJECT\x10\xa8\x02\x12\x1c\n\x17MT_HALGROUP_FULL_UPDATE\x10\xa9\x02\x12#\n\x1eMT_HALGROUP_INCREMENTAL_UPDATE\x10\xaa\x02\x12\x16\n\x11MT_HALGROUP_ERROR\x10\xab\x02\x12\x16\n\x11MT_RTAPI_APP_EXIT\x10\xac\x02\x12\x16\n\x11MT_RTAPI_APP_PING\x10\xad\x02\x12\x18\n\x13MT_RTAPI_APP_LOADRT\x10\xae\x02\x12\x15\n\x10MT_RTAPI_APP_LOG\x10\xaf\x02\x12\x1a\n\x15MT_RTAPI_APP_UNLOADRT\x10\xb1\x02\x12\x19\n\x14MT_RTAPI_APP_NEWINST\x10\xb2\x02\x12\x1b\n\x16MT_RTAPI_APP_NEWTHREAD\x10\xb3\x02\x12\x1b\n\x16MT_RTAPI_APP_DELTHREAD\x10\xb4\x02\x12\x1a\n\x15MT_RTAPI_APP_CALLFUNC\x10\xb5\x02\x12\x17\n\x12MT_RTAPI_APP_REPLY\x10\xb6\x02\x12\x19\n\x14MT_RTAPI_APP_DELINST\x10\xb7\x02\x12\x19\n\x14MT_LIST_APPLICATIONS\x10\xde\x02\x12\x1c\n\x17MT_DESCRIBE_APPLICATION\x10\xdf\x02\x12\x1c\n\x17MT_RETRIEVE_APPLICATION\x10\xe0\x02\x12\x1a\n\x15MT_APPLICATION_DETAIL\x10\xe1\x02\x12\r\n\x08MT_ERROR\x10\xe8\x02\x12\x13\n\x0eMT_FULL_UPDATE\x10\xf2\x02\x12\x1a\n\x15MT_INCREMENTAL_UPDATE\x10\xf3\x02\x12\x12\n\rMT_TASK_REPLY\x10\x90\x03\x12\x15\n\x10MT_TICKET_UPDATE\x10\x91\x03\x12\x15\n\x10MT_CREDIT_UPDATE\x10\xc2\x03\x12\x14\n\x0fMT_EMCMOT_LOWER\x10\xe8\x07\x12\x14\n\x0fMT_EMCMOT_UPPER\x10\xcc\x08\x12\x14\n\x0fMT_EMCMOT_ABORT\x10\xe9\x07\x12\x19\n\x14MT_EMCMOT_AXIS_ABORT\x10\xea\x07\x12\x15\n\x10MT_EMCMOT_ENABLE\x10\xeb\x07\x12\x16\n\x11MT_EMCMOT_DISABLE\x10\xec\x07\x12\x1f\n\x1aMT_EMCMOT_ENABLE_AMPLIFIER\x10\xed\x07\x12 \n\x1bMT_EMCMOT_DISABLE_AMPLIFIER\x10\xee\x07\x12\x1e\n\x19MT_EMCMOT_ENABLE_WATCHDOG\x10\xef\x07\x12\x1f\n\x1aMT_EMCMOT_DISABLE_WATCHDOG\x10\xf0\x07\x12\x1d\n\x18MT_EMCMOT_ACTIVATE_JOINT\x10\xf1\x07\x12\x1f\n\x1aMT_EMCMOT_DEACTIVATE_JOINT\x10\xf2\x07\x12\x14\n\x0fMT_EMCMOT_PAUSE\x10\xf3\x07\x12\x15\n\x10MT_EMCMOT_RESUME\x10\xf4\x07\x12\x13\n\x0eMT_EMCMOT_STEP\x10\xf5\x07\x12\x13\n\x0eMT_EMCMOT_FREE\x10\xf6\x07\x12\x14\n\x0fMT_EMCMOT_COORD\x10\xf7\x07\x12\x15\n\x10MT_EMCMOT_TELEOP\x10\xf8\x07\x12\x1c\n\x17MT_EMCMOT_SPINDLE_SCALE\x10\xf9\x07\x12\x18\n\x13MT_EMCMOT_SS_ENABLE\x10\xfa\x07\x12\x19\n\x14MT_EMCMOT_FEED_SCALE\x10\xfb\x07\x12\x18\n\x13MT_EMCMOT_FS_ENABLE\x10\xfc\x07\x12\x18\n\x13MT_EMCMOT_FH_ENABLE\x10\xfd\x07\x12\x18\n\x13MT_EMCMOT_AF_ENABLE\x10\xfe\x07\x12\x1e\n\x19MT_EMCMOT_OVERRIDE_LIMITS\x10\xff\x07\x12\x13\n\x0eMT_EMCMOT_HOME\x10\x80\x08\x12\x15\n\x10MT_EMCMOT_UNHOME\x10\x81\x08\x12\x17\n\x12MT_EMCMOT_JOG_CONT\x10\x82\x08\x12\x17\n\x12MT_EMCMOT_JOG_INCR\x10\x83\x08\x12\x16\n\x11MT_EMCMOT_JOG_ABS\x10\x84\x08\x12\x17\n\x12MT_EMCMOT_SET_LINE\x10\x85\x08\x12\x19\n\x14MT_EMCMOT_SET_CIRCLE\x10\x86\x08\x12 \n\x1bMT_EMCMOT_SET_TELEOP_VECTOR\x10\x87\x08\x12 \n\x1bMT_EMCMOT_CLEAR_PROBE_FLAGS\x10\x88\x08\x12\x14\n\x0fMT_EMCMOT_PROBE\x10\x89\x08\x12\x18\n\x13MT_EMCMOT_RIGID_TAP\x10\x8a\x08\x12\"\n\x1dMT_EMCMOT_SET_POSITION_LIMITS\x10\x8b\x08\x12\x1b\n\x16MT_EMCMOT_SET_BACKLASH\x10\x8c\x08\x12\x1d\n\x18MT_EMCMOT_SET_MIN_FERROR\x10\x8d\x08\x12\x1d\n\x18MT_EMCMOT_SET_MAX_FERROR\x10\x8e\x08\x12\x16\n\x11MT_EMCMOT_SET_VEL\x10\x8f\x08\x12\x1c\n\x17MT_EMCMOT_SET_VEL_LIMIT\x10\x90\x08\x12\"\n\x1dMT_EMCMOT_SET_JOINT_VEL_LIMIT\x10\x91\x08\x12\"\n\x1dMT_EMCMOT_SET_JOINT_ACC_LIMIT\x10\x92\x08\x12\x16\n\x11MT_EMCMOT_SET_ACC\x10\x93\x08\x12\x1c\n\x17MT_EMCMOT_SET_TERM_COND\x10\x94\x08\x12\x1b\n\x16MT_EMCMOT_SET_NUM_AXES\x10\x95\x08\x12\x1d\n\x18MT_EMCMOT_SET_WORLD_HOME\x10\x96\x08\x12 \n\x1bMT_EMCMOT_SET_HOMING_PARAMS\x10\x97\x08\x12\x18\n\x13MT_EMCMOT_SET_DEBUG\x10\x98\x08\x12\x17\n\x12MT_EMCMOT_SET_DOUT\x10\x99\x08\x12\x17\n\x12MT_EMCMOT_SET_AOUT\x10\x9a\x08\x12\x1e\n\x19MT_EMCMOT_SET_SPINDLESYNC\x10\x9b\x08\x12\x19\n\x14MT_EMCMOT_SPINDLE_ON\x10\x9c\x08\x12\x1a\n\x15MT_EMCMOT_SPINDLE_OFF\x10\x9d\x08\x12\x1f\n\x1aMT_EMCMOT_SPINDLE_INCREASE\x10\x9e\x08\x12\x1f\n\x1aMT_EMCMOT_SPINDLE_DECREASE\x10\x9f\x08\x12#\n\x1eMT_EMCMOT_SPINDLE_BRAKE_ENGAGE\x10\xa0\x08\x12$\n\x1fMT_EMCMOT_SPINDLE_BRAKE_RELEASE\x10\xa1\x08\x12\x1f\n\x1aMT_EMCMOT_SET_MOTOR_OFFSET\x10\xa2\x08\x12\x1d\n\x18MT_EMCMOT_SET_JOINT_COMP\x10\xa3\x08\x12\x19\n\x14MT_EMCMOT_SET_OFFSET\x10\xa4\x08\x12\x19\n\x14MT_EMCMOT_COMMAND_OK\x10\xa5\x08\x12&\n!MT_EMCMOT_COMMAND_UNKNOWN_COMMAND\x10\xa6\x08\x12&\n!MT_EMCMOT_COMMAND_INVALID_COMMAND\x10\xa7\x08\x12%\n MT_EMCMOT_COMMAND_INVALID_PARAMS\x10\xa8\x08\x12\x1f\n\x1aMT_EMCMOT_COMMAND_BAD_EXEC\x10\xa9\x08\x12\x1e\n\x19MT_EMCMOT_MOTION_DISABLED\x10\xaa\x08\x12\x1a\n\x15MT_EMCMOT_MOTION_FREE\x10\xab\x08\x12\x1c\n\x17MT_EMCMOT_MOTION_TELEOP\x10\xac\x08\x12\x1b\n\x16MT_EMCMOT_MOTION_COORD\x10\xad\x08\x12\x19\n\x14MT_EMCMOT_JOINT_FLAG\x10\xae\x08\x12\x1a\n\x15MT_EMCMOT_MOTION_FLAG\x10\xaf\x08\x12\x14\n\x0fMT_PRU_FIRMWARE\x10\x80\x10\x12\x1a\n\x15MT_MESA_5I20_FIRMWARE\x10\xb8\x17\x12\x0c\n\x07MT_BLOB\x10\xa0\x1f\x12\r\n\x08MT_TEST1\x10\x89\'\x12\r\n\x08MT_TEST2\x10\x8a\'\x12\r\n\x08MT_TEST3\x10\x8b\'\x12\x15\n\x10MT_EMC_NML_LOWER\x10\x90N\x12\x15\n\x10MT_EMC_NML_UPPER\x10\xc8\x65\x12\x1a\n\x15MT_EMC_OPERATOR_ERROR\x10\x9bN\x12\x19\n\x14MT_EMC_OPERATOR_TEXT\x10\x9cN\x12\x1c\n\x17MT_EMC_OPERATOR_DISPLAY\x10\x9dN\x12\x10\n\x0bMT_EMC_NULL\x10\xa5N\x12\x15\n\x10MT_EMC_SET_DEBUG\x10\xa6N\x12\x16\n\x11MT_EMC_SYSTEM_CMD\x10\xaeN\x12\x19\n\x14MT_EMC_AXIS_SET_AXIS\x10\xf5N\x12\x1a\n\x15MT_EMC_AXIS_SET_UNITS\x10\xf6N\x12\'\n\"MT_EMC_AXIS_SET_MIN_POSITION_LIMIT\x10\xfbN\x12\'\n\"MT_EMC_AXIS_SET_MAX_POSITION_LIMIT\x10\xfcN\x12\x1d\n\x18MT_EMC_TOOL_START_CHANGE\x10\xd6\x08\x12\x1c\n\x17MT_EMC_EXEC_PLUGIN_CALL\x10\xd8\x08\x12\x1a\n\x15MT_EMC_IO_PLUGIN_CALL\x10\xd9\x08\x12\x1b\n\x16MT_EMC_AXIS_SET_FERROR\x10\xffN\x12\"\n\x1dMT_EMC_AXIS_SET_HOMING_PARAMS\x10\x80O\x12\x1f\n\x1aMT_EMC_AXIS_SET_MIN_FERROR\x10\x83O\x12!\n\x1cMT_EMC_AXIS_SET_MAX_VELOCITY\x10\x84O\x12\x15\n\x10MT_EMC_AXIS_INIT\x10\x86O\x12\x15\n\x10MT_EMC_AXIS_HALT\x10\x87O\x12\x16\n\x11MT_EMC_AXIS_ABORT\x10\x88O\x12\x17\n\x12MT_EMC_AXIS_ENABLE\x10\x89O\x12\x18\n\x13MT_EMC_AXIS_DISABLE\x10\x8aO\x12\x15\n\x10MT_EMC_AXIS_HOME\x10\x8bO\x12\x17\n\x12MT_EMC_AXIS_UNHOME\x10\x97O\x12\x14\n\x0fMT_EMC_AXIS_JOG\x10\x8cO\x12\x19\n\x14MT_EMC_AXIS_INCR_JOG\x10\x8dO\x12\x18\n\x13MT_EMC_AXIS_ABS_JOG\x10\x8eO\x12\x19\n\x14MT_EMC_AXIS_ACTIVATE\x10\x8fO\x12\x1b\n\x16MT_EMC_AXIS_DEACTIVATE\x10\x90O\x12 \n\x1bMT_EMC_AXIS_OVERRIDE_LIMITS\x10\x91O\x12\x1a\n\x15MT_EMC_AXIS_LOAD_COMP\x10\x93O\x12\x1d\n\x18MT_EMC_AXIS_SET_BACKLASH\x10\x96O\x12\x15\n\x10MT_EMC_AXIS_STAT\x10\xd7O\x12\x19\n\x14MT_EMC_TRAJ_SET_AXES\x10\xd9O\x12\x1a\n\x15MT_EMC_TRAJ_SET_UNITS\x10\xdaO\x12\x1f\n\x1aMT_EMC_TRAJ_SET_CYCLE_TIME\x10\xdbO\x12\x19\n\x14MT_EMC_TRAJ_SET_MODE\x10\xdcO\x12\x1d\n\x18MT_EMC_TRAJ_SET_VELOCITY\x10\xddO\x12!\n\x1cMT_EMC_TRAJ_SET_ACCELERATION\x10\xdeO\x12!\n\x1cMT_EMC_TRAJ_SET_MAX_VELOCITY\x10\xdfO\x12%\n MT_EMC_TRAJ_SET_MAX_ACCELERATION\x10\xe0O\x12\x1a\n\x15MT_EMC_TRAJ_SET_SCALE\x10\xe1O\x12\x1e\n\x19MT_EMC_TRAJ_SET_MOTION_ID\x10\xe2O\x12\x15\n\x10MT_EMC_TRAJ_INIT\x10\xe3O\x12\x15\n\x10MT_EMC_TRAJ_HALT\x10\xe4O\x12\x17\n\x12MT_EMC_TRAJ_ENABLE\x10\xe5O\x12\x18\n\x13MT_EMC_TRAJ_DISABLE\x10\xe6O\x12\x16\n\x11MT_EMC_TRAJ_ABORT\x10\xe7O\x12\x16\n\x11MT_EMC_TRAJ_PAUSE\x10\xe8O\x12\x15\n\x10MT_EMC_TRAJ_STEP\x10\xe9O\x12\x17\n\x12MT_EMC_TRAJ_RESUME\x10\xeaO\x12\x16\n\x11MT_EMC_TRAJ_DELAY\x10\xebO\x12\x1c\n\x17MT_EMC_TRAJ_LINEAR_MOVE\x10\xecO\x12\x1e\n\x19MT_EMC_TRAJ_CIRCULAR_MOVE\x10\xedO\x12\x1e\n\x19MT_EMC_TRAJ_SET_TERM_COND\x10\xeeO\x12\x1b\n\x16MT_EMC_TRAJ_SET_OFFSET\x10\xefO\x12\x18\n\x13MT_EMC_TRAJ_SET_G5X\x10\xf0O\x12\x19\n\x14MT_EMC_TRAJ_SET_HOME\x10\xf1O\x12\x1d\n\x18MT_EMC_TRAJ_SET_ROTATION\x10\xf2O\x12\x18\n\x13MT_EMC_TRAJ_SET_G92\x10\xf3O\x12)\n$MT_EMC_TRAJ_CLEAR_PROBE_TRIPPED_FLAG\x10\xf4O\x12\x16\n\x11MT_EMC_TRAJ_PROBE\x10\xf5O\x12\"\n\x1dMT_EMC_TRAJ_SET_TELEOP_ENABLE\x10\xf6O\x12\"\n\x1dMT_EMC_TRAJ_SET_TELEOP_VECTOR\x10\xf7O\x12 \n\x1bMT_EMC_TRAJ_SET_SPINDLESYNC\x10\xf8O\x12\"\n\x1dMT_EMC_TRAJ_SET_SPINDLE_SCALE\x10\xf9O\x12\x1e\n\x19MT_EMC_TRAJ_SET_FO_ENABLE\x10\xfaO\x12\x1e\n\x19MT_EMC_TRAJ_SET_SO_ENABLE\x10\xfbO\x12\x1e\n\x19MT_EMC_TRAJ_SET_FH_ENABLE\x10\xfcO\x12\x1a\n\x15MT_EMC_TRAJ_RIGID_TAP\x10\xfdO\x12 \n\x1bMT_EMC_TRAJ_SET_RAPID_SCALE\x10\xfeO\x12\x15\n\x10MT_EMC_TRAJ_STAT\x10\xbbP\x12\x17\n\x12MT_EMC_MOTION_INIT\x10\xbdP\x12\x17\n\x12MT_EMC_MOTION_HALT\x10\xbeP\x12\x18\n\x13MT_EMC_MOTION_ABORT\x10\xbfP\x12\x1b\n\x16MT_EMC_MOTION_SET_AOUT\x10\xc0P\x12\x1b\n\x16MT_EMC_MOTION_SET_DOUT\x10\xc1P\x12\x1b\n\x16MT_EMC_MOTION_ADAPTIVE\x10\xc2P\x12\x1a\n\x15MT_EMC_SPINDLE_ORIENT\x10\xcdP\x12(\n#MT_EMC_SPINDLE_WAIT_ORIENT_COMPLETE\x10\xceP\x12\x17\n\x12MT_EMC_MOTION_STAT\x10\x9fQ\x12\x15\n\x10MT_EMC_TASK_INIT\x10\x85R\x12\x15\n\x10MT_EMC_TASK_HALT\x10\x86R\x12\x16\n\x11MT_EMC_TASK_ABORT\x10\x87R\x12\x19\n\x14MT_EMC_TASK_SET_MODE\x10\x88R\x12\x1a\n\x15MT_EMC_TASK_SET_STATE\x10\x89R\x12\x1a\n\x15MT_EMC_TASK_PLAN_OPEN\x10\x8aR\x12\x19\n\x14MT_EMC_TASK_PLAN_RUN\x10\x8bR\x12\x1a\n\x15MT_EMC_TASK_PLAN_READ\x10\x8cR\x12\x1d\n\x18MT_EMC_TASK_PLAN_EXECUTE\x10\x8dR\x12\x1b\n\x16MT_EMC_TASK_PLAN_PAUSE\x10\x8eR\x12\x1a\n\x15MT_EMC_TASK_PLAN_STEP\x10\x8fR\x12\x1c\n\x17MT_EMC_TASK_PLAN_RESUME\x10\x90R\x12\x19\n\x14MT_EMC_TASK_PLAN_END\x10\x91R\x12\x1b\n\x16MT_EMC_TASK_PLAN_CLOSE\x10\x92R\x12\x1a\n\x15MT_EMC_TASK_PLAN_INIT\x10\x93R\x12\x1b\n\x16MT_EMC_TASK_PLAN_SYNCH\x10\x94R\x12\'\n\"MT_EMC_TASK_PLAN_SET_OPTIONAL_STOP\x10\x95R\x12&\n!MT_EMC_TASK_PLAN_SET_BLOCK_DELETE\x10\x96R\x12#\n\x1eMT_EMC_TASK_PLAN_OPTIONAL_STOP\x10\x97R\x12\x1b\n\x16MT_EMC_TASK_PLAN_RESET\x10\x98R\x12\x1b\n\x16MT_EMC_TASK_PLAN_REPLY\x10\xa2R\x12\x15\n\x10MT_EMC_TASK_STAT\x10\xe7R\x12\x15\n\x10MT_EMC_TOOL_INIT\x10\xddV\x12\x15\n\x10MT_EMC_TOOL_HALT\x10\xdeV\x12\x16\n\x11MT_EMC_TOOL_ABORT\x10\xdfV\x12\x18\n\x13MT_EMC_TOOL_PREPARE\x10\xe0V\x12\x15\n\x10MT_EMC_TOOL_LOAD\x10\xe1V\x12\x17\n\x12MT_EMC_TOOL_UNLOAD\x10\xe2V\x12 \n\x1bMT_EMC_TOOL_LOAD_TOOL_TABLE\x10\xe3V\x12\x1b\n\x16MT_EMC_TOOL_SET_OFFSET\x10\xe4V\x12\x1b\n\x16MT_EMC_TOOL_SET_NUMBER\x10\xe5V\x12\"\n\x1dMT_EMC_TOOL_UPDATE_TOOL_TABLE\x10\xe6V\x12\x15\n\x10MT_EMC_TOOL_STAT\x10\xbfW\x12\x18\n\x13MT_EMC_AUX_ESTOP_ON\x10\xc6W\x12\x19\n\x14MT_EMC_AUX_ESTOP_OFF\x10\xc7W\x12\x1b\n\x16MT_EMC_AUX_ESTOP_RESET\x10\xc8W\x12\x1a\n\x15MT_EMC_AUX_INPUT_WAIT\x10\xc9W\x12\x14\n\x0fMT_EMC_AUX_STAT\x10\xa3X\x12\x16\n\x11MT_EMC_SPINDLE_ON\x10\xa8X\x12\x17\n\x12MT_EMC_SPINDLE_OFF\x10\xa9X\x12\x1c\n\x17MT_EMC_SPINDLE_INCREASE\x10\xadX\x12\x1c\n\x17MT_EMC_SPINDLE_DECREASE\x10\xaeX\x12\x1c\n\x17MT_EMC_SPINDLE_CONSTANT\x10\xafX\x12!\n\x1cMT_EMC_SPINDLE_BRAKE_RELEASE\x10\xb0X\x12 \n\x1bMT_EMC_SPINDLE_BRAKE_ENGAGE\x10\xb1X\x12\x19\n\x14MT_EMC_SPINDLE_SPEED\x10\xb4X\x12\x18\n\x13MT_EMC_SPINDLE_STAT\x10\x87Y\x12\x1b\n\x16MT_EMC_COOLANT_MIST_ON\x10\x8cY\x12\x1c\n\x17MT_EMC_COOLANT_MIST_OFF\x10\x8dY\x12\x1c\n\x17MT_EMC_COOLANT_FLOOD_ON\x10\x8eY\x12\x1d\n\x18MT_EMC_COOLANT_FLOOD_OFF\x10\x8fY\x12\x18\n\x13MT_EMC_COOLANT_STAT\x10\xebY\x12\x13\n\x0eMT_EMC_LUBE_ON\x10\xf0Y\x12\x14\n\x0fMT_EMC_LUBE_OFF\x10\xf1Y\x12\x15\n\x10MT_EMC_LUBE_STAT\x10\xcfZ\x12\x13\n\x0eMT_EMC_IO_INIT\x10\xd1Z\x12\x13\n\x0eMT_EMC_IO_HALT\x10\xd2Z\x12\x14\n\x0fMT_EMC_IO_ABORT\x10\xd3Z\x12\x1d\n\x18MT_EMC_IO_SET_CYCLE_TIME\x10\xd4Z\x12\x13\n\x0eMT_EMC_IO_STAT\x10\xb3[\x12\x10\n\x0bMT_EMC_INIT\x10\xfd\\\x12\x10\n\x0bMT_EMC_HALT\x10\xfe\\\x12\x11\n\x0cMT_EMC_ABORT\x10\xff\\\x12\x10\n\x0bMT_EMC_STAT\x10\xdf]\x12\x1b\n\x16MT_EMCSTAT_FULL_UPDATE\x10\xd4\x61\x12\"\n\x1dMT_EMCSTAT_INCREMENTAL_UPDATE\x10\xd5\x61\x12\x15\n\x10MT_EMC_NML_ERROR\x10\xde\x61\x12\x14\n\x0fMT_EMC_NML_TEXT\x10\xdf\x61\x12\x17\n\x12MT_EMC_NML_DISPLAY\x10\xe0\x61\x12\x17\n\x12MT_EMCCMD_EXECUTED\x10\xe8\x61\x12\x18\n\x13MT_EMCCMD_COMPLETED\x10\xe9\x61\x12\x1c\n\x17MT_LAUNCHER_FULL_UPDATE\x10\xb8\x62\x12#\n\x1eMT_LAUNCHER_INCREMENTAL_UPDATE\x10\xb9\x62\x12\x16\n\x11MT_LAUNCHER_ERROR\x10\xba\x62\x12\x16\n\x11MT_LAUNCHER_START\x10\xc2\x62\x12\x1a\n\x15MT_LAUNCHER_TERMINATE\x10\xc3\x62\x12\x15\n\x10MT_LAUNCHER_KILL\x10\xc4\x62\x12\x1c\n\x17MT_LAUNCHER_WRITE_STDIN\x10\xc5\x62\x12\x15\n\x10MT_LAUNCHER_CALL\x10\xc6\x62\x12\x19\n\x14MT_LAUNCHER_SHUTDOWN\x10\xc7\x62\x12\x14\n\x0fMT_LAUNCHER_SET\x10\xc8\x62*\xb7\x01\n\x0bOriginIndex\x12\x12\n\x0eORIGIN_UNKNOWN\x10\x00\x12\x0e\n\nORIGIN_G54\x10\x01\x12\x0e\n\nORIGIN_G55\x10\x02\x12\x0e\n\nORIGIN_G56\x10\x03\x12\x0e\n\nORIGIN_G57\x10\x04\x12\x0e\n\nORIGIN_G58\x10\x05\x12\x0e\n\nORIGIN_G59\x10\x06\x12\x10\n\x0cORIGIN_G59_1\x10\x07\x12\x10\n\x0cORIGIN_G59_2\x10\x08\x12\x10\n\x0cORIGIN_G59_3\x10\t*P\n\x11TermConditionType\x12\x1c\n\x18_EMC_TRAJ_TERM_COND_STOP\x10\x01\x12\x1d\n\x19_EMC_TRAJ_TERM_COND_BLEND\x10\x02*W\n\x0e\x43\x61nonDirection\x12\x12\n\x0e_CANON_STOPPED\x10\x01\x12\x14\n\x10_CANON_CLOCKWISE\x10\x02\x12\x1b\n\x17_CANON_COUNTERCLOCKWISE\x10\x03*2\n\tInputType\x12\x11\n\r_ANALOG_INPUT\x10\x00\x12\x12\n\x0e_DIGITAL_INPUT\x10\x01*F\n\x08WaitType\x12\r\n\tIMMEDIATE\x10\x00\x12\x08\n\x04RISE\x10\x01\x12\x08\n\x04\x46\x41LL\x10\x02\x12\x0b\n\x07\x42\x45_HIGH\x10\x03\x12\n\n\x06\x42\x45_LOW\x10\x04*\xaa\x01\n\x14InterpreterStateType\x12\x0f\n\x0bINTERP_IDLE\x10\x01\x12\x12\n\x0eINTERP_RUNNING\x10\x02\x12\x14\n\x10INTERP_SYNC_WAIT\x10\x03\x12\x11\n\rINTERP_PAUSED\x10\x04\x12\x15\n\x11INTERP_QUEUE_WAIT\x10\x05\x12\x15\n\x11INTERP_ABORT_WAIT\x10\x06\x12\x16\n\x12INTERP_STATE_UNSET\x10\x63') + , + dependencies=[machinetalk_dot_protobuf_dot_nanopb__pb2.DESCRIPTOR,]) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +_VALUETYPE = _descriptor.EnumDescriptor( + name='ValueType', + full_name='machinetalk.ValueType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='HAL_BIT', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HAL_FLOAT', index=1, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HAL_S32', index=2, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HAL_U32', index=3, number=4, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HAL_S64', index=4, number=5, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HAL_U64', index=5, number=6, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='STRING', index=6, number=7, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='BYTES', index=7, number=8, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='INT32', index=8, number=20, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='UINT32', index=9, number=30, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='INT64', index=10, number=40, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='UINT64', index=11, number=50, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='DOUBLE', index=12, number=60, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='BOOL', index=13, number=80, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='CARTESIAN', index=14, number=100, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='LEGACY_CARTESIAN', index=15, number=110, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='POSE', index=16, number=120, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='LEGACY_POSE', index=17, number=130, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=85, + serialized_end=332, +) +_sym_db.RegisterEnumDescriptor(_VALUETYPE) + +ValueType = enum_type_wrapper.EnumTypeWrapper(_VALUETYPE) +_HALPINDIRECTION = _descriptor.EnumDescriptor( + name='HalPinDirection', + full_name='machinetalk.HalPinDirection', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='HAL_IN', index=0, number=16, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HAL_OUT', index=1, number=32, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HAL_IO', index=2, number=48, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=334, + serialized_end=388, +) +_sym_db.RegisterEnumDescriptor(_HALPINDIRECTION) + +HalPinDirection = enum_type_wrapper.EnumTypeWrapper(_HALPINDIRECTION) +_HALPARAMDIRECTION = _descriptor.EnumDescriptor( + name='HalParamDirection', + full_name='machinetalk.HalParamDirection', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='HAL_RO', index=0, number=64, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HAL_RW', index=1, number=192, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=390, + serialized_end=434, +) +_sym_db.RegisterEnumDescriptor(_HALPARAMDIRECTION) + +HalParamDirection = enum_type_wrapper.EnumTypeWrapper(_HALPARAMDIRECTION) +_HALFUNCTTYPE = _descriptor.EnumDescriptor( + name='HalFunctType', + full_name='machinetalk.HalFunctType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='FS_LEGACY_THREADFUNC', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='FS_XTHREADFUNC', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='FS_USERLAND', index=2, number=2, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=436, + serialized_end=513, +) +_sym_db.RegisterEnumDescriptor(_HALFUNCTTYPE) + +HalFunctType = enum_type_wrapper.EnumTypeWrapper(_HALFUNCTTYPE) +_OBJECTTYPE = _descriptor.EnumDescriptor( + name='ObjectType', + full_name='machinetalk.ObjectType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='HAL_OBJECT_INVALID', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HAL_PIN', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HAL_SIGNAL', index=2, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HAL_PARAM', index=3, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HAL_THREAD', index=4, number=4, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HAL_FUNCT', index=5, number=5, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HAL_COMPONENT', index=6, number=6, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HAL_VTABLE', index=7, number=7, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HAL_INST', index=8, number=8, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HAL_RING', index=9, number=9, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HAL_GROUP', index=10, number=10, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HAL_MEMBER', index=11, number=11, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='HAL_PLUG', index=12, number=12, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=516, + serialized_end=735, +) +_sym_db.RegisterEnumDescriptor(_OBJECTTYPE) + +ObjectType = enum_type_wrapper.EnumTypeWrapper(_OBJECTTYPE) +_MSGIDTYPE = _descriptor.EnumDescriptor( + name='msgidType', + full_name='machinetalk.msgidType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='MSGID_MAX', index=0, number=4000, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MSGID_ROUTE_DELIMITER', index=1, number=4001, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MSGID_ERROR_MSG', index=2, number=4002, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MSGID_BLOB', index=3, number=4003, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MSGID_STRING', index=4, number=4004, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MSGID_HOP', index=5, number=4005, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=738, + serialized_end=867, +) +_sym_db.RegisterEnumDescriptor(_MSGIDTYPE) + +msgidType = enum_type_wrapper.EnumTypeWrapper(_MSGIDTYPE) +_SOCKETTYPE = _descriptor.EnumDescriptor( + name='socketType', + full_name='machinetalk.socketType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='ST_ZMQ_PAIR', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ST_ZMQ_PUB', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ST_ZMQ_SUB', index=2, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ST_ZMQ_REQ', index=3, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ST_ZMQ_REP', index=4, number=4, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ST_ZMQ_DEALER', index=5, number=5, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ST_ZMQ_ROUTER', index=6, number=6, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ST_ZMQ_PULL', index=7, number=7, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ST_ZMQ_PUSH', index=8, number=8, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ST_ZMQ_XPUB', index=9, number=9, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ST_ZMQ_XSUB', index=10, number=10, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ST_ZMQ_STREAM', index=11, number=11, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ST_ZMQ_INVALID', index=12, number=15, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=870, + serialized_end=1108, +) +_sym_db.RegisterEnumDescriptor(_SOCKETTYPE) + +socketType = enum_type_wrapper.EnumTypeWrapper(_SOCKETTYPE) +_SECURITYMECHANISM = _descriptor.EnumDescriptor( + name='securityMechanism', + full_name='machinetalk.securityMechanism', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='SM_ZMQ_NONE', index=0, number=-1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='SM_ZMQ_NULL', index=1, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='SM_ZMQ_PLAIN', index=2, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='SM_ZMQ_CURVE', index=3, number=2, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=1110, + serialized_end=1208, +) +_sym_db.RegisterEnumDescriptor(_SECURITYMECHANISM) + +securityMechanism = enum_type_wrapper.EnumTypeWrapper(_SECURITYMECHANISM) +_RCS_STATUS = _descriptor.EnumDescriptor( + name='RCS_STATUS', + full_name='machinetalk.RCS_STATUS', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='UNINITIALIZED_STATUS', index=0, number=-1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='RCS_DONE', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='RCS_EXEC', index=2, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='RCS_ERROR', index=3, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='RCS_RECEIVED', index=4, number=4, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=1210, + serialized_end=1318, +) +_sym_db.RegisterEnumDescriptor(_RCS_STATUS) + +RCS_STATUS = enum_type_wrapper.EnumTypeWrapper(_RCS_STATUS) +_MSGORIGIN = _descriptor.EnumDescriptor( + name='MsgOrigin', + full_name='machinetalk.MsgOrigin', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='MSG_KERNEL', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MSG_RTUSER', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MSG_ULAPI', index=2, number=2, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=1320, + serialized_end=1378, +) +_sym_db.RegisterEnumDescriptor(_MSGORIGIN) + +MsgOrigin = enum_type_wrapper.EnumTypeWrapper(_MSGORIGIN) +_MSGLEVEL = _descriptor.EnumDescriptor( + name='MsgLevel', + full_name='machinetalk.MsgLevel', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='RTAPI_MSG_NONE', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='RTAPI_MSG_ERR', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='RTAPI_MSG_WARN', index=2, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='RTAPI_MSG_INFO', index=3, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='RTAPI_MSG_DBG', index=4, number=4, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='RTAPI_MSG_ALL', index=5, number=5, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=1380, + serialized_end=1507, +) +_sym_db.RegisterEnumDescriptor(_MSGLEVEL) + +MsgLevel = enum_type_wrapper.EnumTypeWrapper(_MSGLEVEL) +_ORIGINDETAIL = _descriptor.EnumDescriptor( + name='OriginDetail', + full_name='machinetalk.OriginDetail', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='UNIX_SIGNAL', index=0, number=10, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='INSTANCE_SHUTDOWN', index=1, number=20, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ZMQ_SOCKET', index=2, number=70, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='NML_LAYER', index=3, number=80, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='RCS_LAYER', index=4, number=90, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='CMS_LAYER', index=5, number=100, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='IP_LAYER', index=6, number=110, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='TCP_LAYER', index=7, number=120, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PGM_LAYER', index=8, number=130, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=1510, + serialized_end=1670, +) +_sym_db.RegisterEnumDescriptor(_ORIGINDETAIL) + +OriginDetail = enum_type_wrapper.EnumTypeWrapper(_ORIGINDETAIL) +_ORIGINTYPE = _descriptor.EnumDescriptor( + name='OriginType', + full_name='machinetalk.OriginType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='PROCESS', index=0, number=10, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='USER_THREAD', index=1, number=20, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='RT_THREAD', index=2, number=30, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='COMPONENT', index=3, number=40, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='THREAD_FUNCTION', index=4, number=50, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='COMPONENT_INIT', index=5, number=60, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='COMPONENT_EXIT', index=6, number=70, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='GROUP', index=7, number=80, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PIN', index=8, number=90, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='SIGNAL', index=9, number=100, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=1673, + serialized_end=1838, +) +_sym_db.RegisterEnumDescriptor(_ORIGINTYPE) + +OriginType = enum_type_wrapper.EnumTypeWrapper(_ORIGINTYPE) +_SEVERITY = _descriptor.EnumDescriptor( + name='Severity', + full_name='machinetalk.Severity', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='S_INFORMATIONAL', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='S_WARNING', index=1, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='S_FAIL', index=2, number=4, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=1840, + serialized_end=1898, +) +_sym_db.RegisterEnumDescriptor(_SEVERITY) + +Severity = enum_type_wrapper.EnumTypeWrapper(_SEVERITY) +_STATUSTYPE = _descriptor.EnumDescriptor( + name='StatusType', + full_name='machinetalk.StatusType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='ENQUEUED', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PROCESSING', index=1, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='COMPLETE', index=2, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='FAILED', index=3, number=4, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=1900, + serialized_end=1968, +) +_sym_db.RegisterEnumDescriptor(_STATUSTYPE) + +StatusType = enum_type_wrapper.EnumTypeWrapper(_STATUSTYPE) +_REPLYTYPE = _descriptor.EnumDescriptor( + name='ReplyType', + full_name='machinetalk.ReplyType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='NONE', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ON_RECEPTION', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ON_QUEUED', index=2, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ON_COMPLETION', index=3, number=4, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ALL_STEPS', index=4, number=255, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=1970, + serialized_end=2059, +) +_sym_db.RegisterEnumDescriptor(_REPLYTYPE) + +ReplyType = enum_type_wrapper.EnumTypeWrapper(_REPLYTYPE) +_SERVICETYPE = _descriptor.EnumDescriptor( + name='ServiceType', + full_name='machinetalk.ServiceType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='ST_LOGGING', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ST_CONFIG', index=1, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ST_REDIS', index=2, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ST_HTTP', index=3, number=4, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ST_HTTPS', index=4, number=5, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ST_WEBSOCKET', index=5, number=6, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ST_WEBSOCKETS', index=6, number=7, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ST_RTAPI_COMMAND', index=7, number=8, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ST_STP_HALGROUP', index=8, number=9, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ST_STP_HALRCOMP', index=9, number=10, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ST_STP_INTERP', index=10, number=11, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ST_STP_TASK', index=11, number=12, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ST_HAL_RCOMMAND', index=12, number=13, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ST_TASK_COMMAND', index=13, number=14, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ST_INTERP_COMMAND', index=14, number=15, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ST_MESSAGEBUS_COMMAND', index=15, number=16, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ST_MESSAGEBUS_RESPONSE', index=16, number=17, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=2062, + serialized_end=2404, +) +_sym_db.RegisterEnumDescriptor(_SERVICETYPE) + +ServiceType = enum_type_wrapper.EnumTypeWrapper(_SERVICETYPE) +_SERVICEAPI = _descriptor.EnumDescriptor( + name='ServiceAPI', + full_name='machinetalk.ServiceAPI', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='SA_ZMQ_PROTOBUF', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='SA_WS_JSON', index=1, number=2, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=2406, + serialized_end=2455, +) +_sym_db.RegisterEnumDescriptor(_SERVICEAPI) + +ServiceAPI = enum_type_wrapper.EnumTypeWrapper(_SERVICEAPI) +_CONTAINERTYPE = _descriptor.EnumDescriptor( + name='ContainerType', + full_name='machinetalk.ContainerType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='MT_RTMESSAGE', index=0, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_MOTCMD', index=1, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_MOTSTATUS', index=2, number=4, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_LEGACY_MOTCMD', index=3, number=5, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_LEGACY_MOTSTATUS', index=4, number=6, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_WOU', index=5, number=7, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_HALUPDATE', index=6, number=8, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_RTAPI_MESSAGE', index=7, number=9, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_LOG_MESSAGE', index=8, number=10, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_PREVIEW', index=9, number=11, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_PROGRESS', index=10, number=12, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_INTERP_STAT', index=11, number=13, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_SYSLOG', index=12, number=18, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_LEGACY_NML', index=13, number=19, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_LEGACY_MOTCONFIG', index=14, number=20, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_STP_UPDATE_FULL', index=15, number=26, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_STP_UPDATE', index=16, number=28, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_STP_NOGROUP', index=17, number=27, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_SHUTDOWN', index=18, number=45, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_CONFIRM_SHUTDOWN', index=19, number=50, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_RTMESSAGE0', index=20, number=30, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_RTMESSAGE1', index=21, number=31, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_RTMESSAGE2', index=22, number=32, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_RTMESSAGE3', index=23, number=33, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_RTMESSAGE4', index=24, number=34, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_ASCII', index=25, number=100, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_UNICODE', index=26, number=101, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_GCODE', index=27, number=102, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_PYTHON', index=28, number=103, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_PICKLE', index=29, number=104, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_TCL', index=30, number=105, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_XML', index=31, number=106, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_JSON', index=32, number=107, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_JPEG', index=33, number=108, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_PNG', index=34, number=109, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_TIFF', index=35, number=110, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_POSTSCRIPT', index=36, number=111, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_SVG', index=37, number=112, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_ZMQ_SUBSCRIBE', index=38, number=150, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_ZMQ_UNSUBSCRIBE', index=39, number=151, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_PING', index=40, number=210, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_PING_ACKNOWLEDGE', index=41, number=215, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_REJECT', index=42, number=220, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_DONE', index=43, number=240, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_SERVICE_REQUEST', index=44, number=250, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_SERVICE_ANNOUNCEMENT', index=45, number=251, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_SERVICE_PROBE', index=46, number=252, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_MESSAGEBUS_NO_DESTINATION', index=47, number=255, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_HALRCOMP_BIND', index=48, number=256, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_HALRCOMP_BIND_CONFIRM', index=49, number=257, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_HALRCOMP_BIND_REJECT', index=50, number=258, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_HALRCOMP_SET', index=51, number=259, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_HALRCOMP_SET_REJECT', index=52, number=260, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_HALRCOMP_ACK', index=53, number=263, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_HALRCOMMAND_SET', index=54, number=265, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_HALRCOMMAND_SET_REJECT', index=55, number=266, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_HALRCOMMAND_GET', index=56, number=267, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_HALRCOMMAND_GET_REJECT', index=57, number=268, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_HALRCOMMAND_CREATE', index=58, number=269, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_HALRCOMMAND_CREATE_REJECT', index=59, number=270, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_HALRCOMMAND_DELETE', index=60, number=271, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_HALRCOMMAND_DELETE_REJECT', index=61, number=272, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_HALRCOMMAND_ACK', index=62, number=273, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_HALRCOMMAND_ERROR', index=63, number=274, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_HALRCOMMAND_DESCRIBE', index=64, number=276, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_HALRCOMMAND_DESCRIPTION', index=65, number=277, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_HALRCOMP_FULL_UPDATE', index=66, number=288, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_HALRCOMP_INCREMENTAL_UPDATE', index=67, number=289, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_HALRCOMP_ERROR', index=68, number=290, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_HALGROUP_BIND', index=69, number=294, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_HALGROUP_BIND_CONFIRM', index=70, number=295, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_HALGROUP_BIND_REJECT', index=71, number=296, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_HALGROUP_FULL_UPDATE', index=72, number=297, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_HALGROUP_INCREMENTAL_UPDATE', index=73, number=298, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_HALGROUP_ERROR', index=74, number=299, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_RTAPI_APP_EXIT', index=75, number=300, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_RTAPI_APP_PING', index=76, number=301, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_RTAPI_APP_LOADRT', index=77, number=302, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_RTAPI_APP_LOG', index=78, number=303, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_RTAPI_APP_UNLOADRT', index=79, number=305, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_RTAPI_APP_NEWINST', index=80, number=306, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_RTAPI_APP_NEWTHREAD', index=81, number=307, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_RTAPI_APP_DELTHREAD', index=82, number=308, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_RTAPI_APP_CALLFUNC', index=83, number=309, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_RTAPI_APP_REPLY', index=84, number=310, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_RTAPI_APP_DELINST', index=85, number=311, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_LIST_APPLICATIONS', index=86, number=350, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_DESCRIBE_APPLICATION', index=87, number=351, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_RETRIEVE_APPLICATION', index=88, number=352, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_APPLICATION_DETAIL', index=89, number=353, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_ERROR', index=90, number=360, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_FULL_UPDATE', index=91, number=370, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_INCREMENTAL_UPDATE', index=92, number=371, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_TASK_REPLY', index=93, number=400, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_TICKET_UPDATE', index=94, number=401, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_CREDIT_UPDATE', index=95, number=450, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_LOWER', index=96, number=1000, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_UPPER', index=97, number=1100, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_ABORT', index=98, number=1001, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_AXIS_ABORT', index=99, number=1002, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_ENABLE', index=100, number=1003, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_DISABLE', index=101, number=1004, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_ENABLE_AMPLIFIER', index=102, number=1005, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_DISABLE_AMPLIFIER', index=103, number=1006, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_ENABLE_WATCHDOG', index=104, number=1007, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_DISABLE_WATCHDOG', index=105, number=1008, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_ACTIVATE_JOINT', index=106, number=1009, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_DEACTIVATE_JOINT', index=107, number=1010, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_PAUSE', index=108, number=1011, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_RESUME', index=109, number=1012, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_STEP', index=110, number=1013, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_FREE', index=111, number=1014, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_COORD', index=112, number=1015, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_TELEOP', index=113, number=1016, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_SPINDLE_SCALE', index=114, number=1017, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_SS_ENABLE', index=115, number=1018, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_FEED_SCALE', index=116, number=1019, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_FS_ENABLE', index=117, number=1020, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_FH_ENABLE', index=118, number=1021, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_AF_ENABLE', index=119, number=1022, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_OVERRIDE_LIMITS', index=120, number=1023, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_HOME', index=121, number=1024, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_UNHOME', index=122, number=1025, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_JOG_CONT', index=123, number=1026, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_JOG_INCR', index=124, number=1027, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_JOG_ABS', index=125, number=1028, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_SET_LINE', index=126, number=1029, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_SET_CIRCLE', index=127, number=1030, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_SET_TELEOP_VECTOR', index=128, number=1031, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_CLEAR_PROBE_FLAGS', index=129, number=1032, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_PROBE', index=130, number=1033, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_RIGID_TAP', index=131, number=1034, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_SET_POSITION_LIMITS', index=132, number=1035, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_SET_BACKLASH', index=133, number=1036, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_SET_MIN_FERROR', index=134, number=1037, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_SET_MAX_FERROR', index=135, number=1038, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_SET_VEL', index=136, number=1039, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_SET_VEL_LIMIT', index=137, number=1040, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_SET_JOINT_VEL_LIMIT', index=138, number=1041, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_SET_JOINT_ACC_LIMIT', index=139, number=1042, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_SET_ACC', index=140, number=1043, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_SET_TERM_COND', index=141, number=1044, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_SET_NUM_AXES', index=142, number=1045, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_SET_WORLD_HOME', index=143, number=1046, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_SET_HOMING_PARAMS', index=144, number=1047, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_SET_DEBUG', index=145, number=1048, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_SET_DOUT', index=146, number=1049, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_SET_AOUT', index=147, number=1050, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_SET_SPINDLESYNC', index=148, number=1051, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_SPINDLE_ON', index=149, number=1052, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_SPINDLE_OFF', index=150, number=1053, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_SPINDLE_INCREASE', index=151, number=1054, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_SPINDLE_DECREASE', index=152, number=1055, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_SPINDLE_BRAKE_ENGAGE', index=153, number=1056, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_SPINDLE_BRAKE_RELEASE', index=154, number=1057, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_SET_MOTOR_OFFSET', index=155, number=1058, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_SET_JOINT_COMP', index=156, number=1059, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_SET_OFFSET', index=157, number=1060, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_COMMAND_OK', index=158, number=1061, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_COMMAND_UNKNOWN_COMMAND', index=159, number=1062, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_COMMAND_INVALID_COMMAND', index=160, number=1063, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_COMMAND_INVALID_PARAMS', index=161, number=1064, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_COMMAND_BAD_EXEC', index=162, number=1065, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_MOTION_DISABLED', index=163, number=1066, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_MOTION_FREE', index=164, number=1067, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_MOTION_TELEOP', index=165, number=1068, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_MOTION_COORD', index=166, number=1069, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_JOINT_FLAG', index=167, number=1070, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCMOT_MOTION_FLAG', index=168, number=1071, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_PRU_FIRMWARE', index=169, number=2048, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_MESA_5I20_FIRMWARE', index=170, number=3000, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_BLOB', index=171, number=4000, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_TEST1', index=172, number=5001, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_TEST2', index=173, number=5002, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_TEST3', index=174, number=5003, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_NML_LOWER', index=175, number=10000, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_NML_UPPER', index=176, number=13000, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_OPERATOR_ERROR', index=177, number=10011, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_OPERATOR_TEXT', index=178, number=10012, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_OPERATOR_DISPLAY', index=179, number=10013, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_NULL', index=180, number=10021, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_SET_DEBUG', index=181, number=10022, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_SYSTEM_CMD', index=182, number=10030, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_AXIS_SET_AXIS', index=183, number=10101, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_AXIS_SET_UNITS', index=184, number=10102, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_AXIS_SET_MIN_POSITION_LIMIT', index=185, number=10107, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_AXIS_SET_MAX_POSITION_LIMIT', index=186, number=10108, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TOOL_START_CHANGE', index=187, number=1110, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_EXEC_PLUGIN_CALL', index=188, number=1112, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_IO_PLUGIN_CALL', index=189, number=1113, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_AXIS_SET_FERROR', index=190, number=10111, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_AXIS_SET_HOMING_PARAMS', index=191, number=10112, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_AXIS_SET_MIN_FERROR', index=192, number=10115, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_AXIS_SET_MAX_VELOCITY', index=193, number=10116, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_AXIS_INIT', index=194, number=10118, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_AXIS_HALT', index=195, number=10119, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_AXIS_ABORT', index=196, number=10120, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_AXIS_ENABLE', index=197, number=10121, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_AXIS_DISABLE', index=198, number=10122, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_AXIS_HOME', index=199, number=10123, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_AXIS_UNHOME', index=200, number=10135, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_AXIS_JOG', index=201, number=10124, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_AXIS_INCR_JOG', index=202, number=10125, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_AXIS_ABS_JOG', index=203, number=10126, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_AXIS_ACTIVATE', index=204, number=10127, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_AXIS_DEACTIVATE', index=205, number=10128, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_AXIS_OVERRIDE_LIMITS', index=206, number=10129, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_AXIS_LOAD_COMP', index=207, number=10131, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_AXIS_SET_BACKLASH', index=208, number=10134, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_AXIS_STAT', index=209, number=10199, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_SET_AXES', index=210, number=10201, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_SET_UNITS', index=211, number=10202, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_SET_CYCLE_TIME', index=212, number=10203, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_SET_MODE', index=213, number=10204, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_SET_VELOCITY', index=214, number=10205, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_SET_ACCELERATION', index=215, number=10206, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_SET_MAX_VELOCITY', index=216, number=10207, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_SET_MAX_ACCELERATION', index=217, number=10208, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_SET_SCALE', index=218, number=10209, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_SET_MOTION_ID', index=219, number=10210, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_INIT', index=220, number=10211, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_HALT', index=221, number=10212, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_ENABLE', index=222, number=10213, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_DISABLE', index=223, number=10214, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_ABORT', index=224, number=10215, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_PAUSE', index=225, number=10216, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_STEP', index=226, number=10217, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_RESUME', index=227, number=10218, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_DELAY', index=228, number=10219, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_LINEAR_MOVE', index=229, number=10220, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_CIRCULAR_MOVE', index=230, number=10221, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_SET_TERM_COND', index=231, number=10222, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_SET_OFFSET', index=232, number=10223, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_SET_G5X', index=233, number=10224, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_SET_HOME', index=234, number=10225, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_SET_ROTATION', index=235, number=10226, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_SET_G92', index=236, number=10227, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_CLEAR_PROBE_TRIPPED_FLAG', index=237, number=10228, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_PROBE', index=238, number=10229, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_SET_TELEOP_ENABLE', index=239, number=10230, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_SET_TELEOP_VECTOR', index=240, number=10231, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_SET_SPINDLESYNC', index=241, number=10232, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_SET_SPINDLE_SCALE', index=242, number=10233, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_SET_FO_ENABLE', index=243, number=10234, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_SET_SO_ENABLE', index=244, number=10235, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_SET_FH_ENABLE', index=245, number=10236, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_RIGID_TAP', index=246, number=10237, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_SET_RAPID_SCALE', index=247, number=10238, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TRAJ_STAT', index=248, number=10299, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_MOTION_INIT', index=249, number=10301, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_MOTION_HALT', index=250, number=10302, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_MOTION_ABORT', index=251, number=10303, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_MOTION_SET_AOUT', index=252, number=10304, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_MOTION_SET_DOUT', index=253, number=10305, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_MOTION_ADAPTIVE', index=254, number=10306, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_SPINDLE_ORIENT', index=255, number=10317, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_SPINDLE_WAIT_ORIENT_COMPLETE', index=256, number=10318, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_MOTION_STAT', index=257, number=10399, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TASK_INIT', index=258, number=10501, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TASK_HALT', index=259, number=10502, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TASK_ABORT', index=260, number=10503, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TASK_SET_MODE', index=261, number=10504, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TASK_SET_STATE', index=262, number=10505, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TASK_PLAN_OPEN', index=263, number=10506, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TASK_PLAN_RUN', index=264, number=10507, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TASK_PLAN_READ', index=265, number=10508, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TASK_PLAN_EXECUTE', index=266, number=10509, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TASK_PLAN_PAUSE', index=267, number=10510, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TASK_PLAN_STEP', index=268, number=10511, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TASK_PLAN_RESUME', index=269, number=10512, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TASK_PLAN_END', index=270, number=10513, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TASK_PLAN_CLOSE', index=271, number=10514, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TASK_PLAN_INIT', index=272, number=10515, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TASK_PLAN_SYNCH', index=273, number=10516, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TASK_PLAN_SET_OPTIONAL_STOP', index=274, number=10517, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TASK_PLAN_SET_BLOCK_DELETE', index=275, number=10518, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TASK_PLAN_OPTIONAL_STOP', index=276, number=10519, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TASK_PLAN_RESET', index=277, number=10520, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TASK_PLAN_REPLY', index=278, number=10530, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TASK_STAT', index=279, number=10599, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TOOL_INIT', index=280, number=11101, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TOOL_HALT', index=281, number=11102, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TOOL_ABORT', index=282, number=11103, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TOOL_PREPARE', index=283, number=11104, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TOOL_LOAD', index=284, number=11105, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TOOL_UNLOAD', index=285, number=11106, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TOOL_LOAD_TOOL_TABLE', index=286, number=11107, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TOOL_SET_OFFSET', index=287, number=11108, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TOOL_SET_NUMBER', index=288, number=11109, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TOOL_UPDATE_TOOL_TABLE', index=289, number=11110, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_TOOL_STAT', index=290, number=11199, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_AUX_ESTOP_ON', index=291, number=11206, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_AUX_ESTOP_OFF', index=292, number=11207, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_AUX_ESTOP_RESET', index=293, number=11208, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_AUX_INPUT_WAIT', index=294, number=11209, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_AUX_STAT', index=295, number=11299, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_SPINDLE_ON', index=296, number=11304, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_SPINDLE_OFF', index=297, number=11305, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_SPINDLE_INCREASE', index=298, number=11309, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_SPINDLE_DECREASE', index=299, number=11310, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_SPINDLE_CONSTANT', index=300, number=11311, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_SPINDLE_BRAKE_RELEASE', index=301, number=11312, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_SPINDLE_BRAKE_ENGAGE', index=302, number=11313, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_SPINDLE_SPEED', index=303, number=11316, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_SPINDLE_STAT', index=304, number=11399, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_COOLANT_MIST_ON', index=305, number=11404, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_COOLANT_MIST_OFF', index=306, number=11405, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_COOLANT_FLOOD_ON', index=307, number=11406, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_COOLANT_FLOOD_OFF', index=308, number=11407, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_COOLANT_STAT', index=309, number=11499, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_LUBE_ON', index=310, number=11504, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_LUBE_OFF', index=311, number=11505, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_LUBE_STAT', index=312, number=11599, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_IO_INIT', index=313, number=11601, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_IO_HALT', index=314, number=11602, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_IO_ABORT', index=315, number=11603, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_IO_SET_CYCLE_TIME', index=316, number=11604, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_IO_STAT', index=317, number=11699, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_INIT', index=318, number=11901, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_HALT', index=319, number=11902, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_ABORT', index=320, number=11903, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_STAT', index=321, number=11999, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCSTAT_FULL_UPDATE', index=322, number=12500, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCSTAT_INCREMENTAL_UPDATE', index=323, number=12501, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_NML_ERROR', index=324, number=12510, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_NML_TEXT', index=325, number=12511, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMC_NML_DISPLAY', index=326, number=12512, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCCMD_EXECUTED', index=327, number=12520, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_EMCCMD_COMPLETED', index=328, number=12521, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_LAUNCHER_FULL_UPDATE', index=329, number=12600, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_LAUNCHER_INCREMENTAL_UPDATE', index=330, number=12601, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_LAUNCHER_ERROR', index=331, number=12602, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_LAUNCHER_START', index=332, number=12610, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_LAUNCHER_TERMINATE', index=333, number=12611, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_LAUNCHER_KILL', index=334, number=12612, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_LAUNCHER_WRITE_STDIN', index=335, number=12613, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_LAUNCHER_CALL', index=336, number=12614, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_LAUNCHER_SHUTDOWN', index=337, number=12615, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='MT_LAUNCHER_SET', index=338, number=12616, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=2458, + serialized_end=11449, +) +_sym_db.RegisterEnumDescriptor(_CONTAINERTYPE) + +ContainerType = enum_type_wrapper.EnumTypeWrapper(_CONTAINERTYPE) +_ORIGININDEX = _descriptor.EnumDescriptor( + name='OriginIndex', + full_name='machinetalk.OriginIndex', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='ORIGIN_UNKNOWN', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ORIGIN_G54', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ORIGIN_G55', index=2, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ORIGIN_G56', index=3, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ORIGIN_G57', index=4, number=4, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ORIGIN_G58', index=5, number=5, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ORIGIN_G59', index=6, number=6, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ORIGIN_G59_1', index=7, number=7, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ORIGIN_G59_2', index=8, number=8, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ORIGIN_G59_3', index=9, number=9, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=11452, + serialized_end=11635, +) +_sym_db.RegisterEnumDescriptor(_ORIGININDEX) + +OriginIndex = enum_type_wrapper.EnumTypeWrapper(_ORIGININDEX) +_TERMCONDITIONTYPE = _descriptor.EnumDescriptor( + name='TermConditionType', + full_name='machinetalk.TermConditionType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='_EMC_TRAJ_TERM_COND_STOP', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='_EMC_TRAJ_TERM_COND_BLEND', index=1, number=2, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=11637, + serialized_end=11717, +) +_sym_db.RegisterEnumDescriptor(_TERMCONDITIONTYPE) + +TermConditionType = enum_type_wrapper.EnumTypeWrapper(_TERMCONDITIONTYPE) +_CANONDIRECTION = _descriptor.EnumDescriptor( + name='CanonDirection', + full_name='machinetalk.CanonDirection', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='_CANON_STOPPED', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='_CANON_CLOCKWISE', index=1, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='_CANON_COUNTERCLOCKWISE', index=2, number=3, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=11719, + serialized_end=11806, +) +_sym_db.RegisterEnumDescriptor(_CANONDIRECTION) + +CanonDirection = enum_type_wrapper.EnumTypeWrapper(_CANONDIRECTION) +_INPUTTYPE = _descriptor.EnumDescriptor( + name='InputType', + full_name='machinetalk.InputType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='_ANALOG_INPUT', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='_DIGITAL_INPUT', index=1, number=1, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=11808, + serialized_end=11858, +) +_sym_db.RegisterEnumDescriptor(_INPUTTYPE) + +InputType = enum_type_wrapper.EnumTypeWrapper(_INPUTTYPE) +_WAITTYPE = _descriptor.EnumDescriptor( + name='WaitType', + full_name='machinetalk.WaitType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='IMMEDIATE', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='RISE', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='FALL', index=2, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='BE_HIGH', index=3, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='BE_LOW', index=4, number=4, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=11860, + serialized_end=11930, +) +_sym_db.RegisterEnumDescriptor(_WAITTYPE) + +WaitType = enum_type_wrapper.EnumTypeWrapper(_WAITTYPE) +_INTERPRETERSTATETYPE = _descriptor.EnumDescriptor( + name='InterpreterStateType', + full_name='machinetalk.InterpreterStateType', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='INTERP_IDLE', index=0, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='INTERP_RUNNING', index=1, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='INTERP_SYNC_WAIT', index=2, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='INTERP_PAUSED', index=3, number=4, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='INTERP_QUEUE_WAIT', index=4, number=5, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='INTERP_ABORT_WAIT', index=5, number=6, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='INTERP_STATE_UNSET', index=6, number=99, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=11933, + serialized_end=12103, +) +_sym_db.RegisterEnumDescriptor(_INTERPRETERSTATETYPE) + +InterpreterStateType = enum_type_wrapper.EnumTypeWrapper(_INTERPRETERSTATETYPE) +HAL_BIT = 1 +HAL_FLOAT = 2 +HAL_S32 = 3 +HAL_U32 = 4 +HAL_S64 = 5 +HAL_U64 = 6 +STRING = 7 +BYTES = 8 +INT32 = 20 +UINT32 = 30 +INT64 = 40 +UINT64 = 50 +DOUBLE = 60 +BOOL = 80 +CARTESIAN = 100 +LEGACY_CARTESIAN = 110 +POSE = 120 +LEGACY_POSE = 130 +HAL_IN = 16 +HAL_OUT = 32 +HAL_IO = 48 +HAL_RO = 64 +HAL_RW = 192 +FS_LEGACY_THREADFUNC = 0 +FS_XTHREADFUNC = 1 +FS_USERLAND = 2 +HAL_OBJECT_INVALID = 0 +HAL_PIN = 1 +HAL_SIGNAL = 2 +HAL_PARAM = 3 +HAL_THREAD = 4 +HAL_FUNCT = 5 +HAL_COMPONENT = 6 +HAL_VTABLE = 7 +HAL_INST = 8 +HAL_RING = 9 +HAL_GROUP = 10 +HAL_MEMBER = 11 +HAL_PLUG = 12 +MSGID_MAX = 4000 +MSGID_ROUTE_DELIMITER = 4001 +MSGID_ERROR_MSG = 4002 +MSGID_BLOB = 4003 +MSGID_STRING = 4004 +MSGID_HOP = 4005 +ST_ZMQ_PAIR = 0 +ST_ZMQ_PUB = 1 +ST_ZMQ_SUB = 2 +ST_ZMQ_REQ = 3 +ST_ZMQ_REP = 4 +ST_ZMQ_DEALER = 5 +ST_ZMQ_ROUTER = 6 +ST_ZMQ_PULL = 7 +ST_ZMQ_PUSH = 8 +ST_ZMQ_XPUB = 9 +ST_ZMQ_XSUB = 10 +ST_ZMQ_STREAM = 11 +ST_ZMQ_INVALID = 15 +SM_ZMQ_NONE = -1 +SM_ZMQ_NULL = 0 +SM_ZMQ_PLAIN = 1 +SM_ZMQ_CURVE = 2 +UNINITIALIZED_STATUS = -1 +RCS_DONE = 1 +RCS_EXEC = 2 +RCS_ERROR = 3 +RCS_RECEIVED = 4 +MSG_KERNEL = 0 +MSG_RTUSER = 1 +MSG_ULAPI = 2 +RTAPI_MSG_NONE = 0 +RTAPI_MSG_ERR = 1 +RTAPI_MSG_WARN = 2 +RTAPI_MSG_INFO = 3 +RTAPI_MSG_DBG = 4 +RTAPI_MSG_ALL = 5 +UNIX_SIGNAL = 10 +INSTANCE_SHUTDOWN = 20 +ZMQ_SOCKET = 70 +NML_LAYER = 80 +RCS_LAYER = 90 +CMS_LAYER = 100 +IP_LAYER = 110 +TCP_LAYER = 120 +PGM_LAYER = 130 +PROCESS = 10 +USER_THREAD = 20 +RT_THREAD = 30 +COMPONENT = 40 +THREAD_FUNCTION = 50 +COMPONENT_INIT = 60 +COMPONENT_EXIT = 70 +GROUP = 80 +PIN = 90 +SIGNAL = 100 +S_INFORMATIONAL = 1 +S_WARNING = 2 +S_FAIL = 4 +ENQUEUED = 1 +PROCESSING = 2 +COMPLETE = 3 +FAILED = 4 +NONE = 0 +ON_RECEPTION = 1 +ON_QUEUED = 2 +ON_COMPLETION = 4 +ALL_STEPS = 255 +ST_LOGGING = 1 +ST_CONFIG = 2 +ST_REDIS = 3 +ST_HTTP = 4 +ST_HTTPS = 5 +ST_WEBSOCKET = 6 +ST_WEBSOCKETS = 7 +ST_RTAPI_COMMAND = 8 +ST_STP_HALGROUP = 9 +ST_STP_HALRCOMP = 10 +ST_STP_INTERP = 11 +ST_STP_TASK = 12 +ST_HAL_RCOMMAND = 13 +ST_TASK_COMMAND = 14 +ST_INTERP_COMMAND = 15 +ST_MESSAGEBUS_COMMAND = 16 +ST_MESSAGEBUS_RESPONSE = 17 +SA_ZMQ_PROTOBUF = 1 +SA_WS_JSON = 2 +MT_RTMESSAGE = 2 +MT_MOTCMD = 3 +MT_MOTSTATUS = 4 +MT_LEGACY_MOTCMD = 5 +MT_LEGACY_MOTSTATUS = 6 +MT_WOU = 7 +MT_HALUPDATE = 8 +MT_RTAPI_MESSAGE = 9 +MT_LOG_MESSAGE = 10 +MT_PREVIEW = 11 +MT_PROGRESS = 12 +MT_INTERP_STAT = 13 +MT_SYSLOG = 18 +MT_LEGACY_NML = 19 +MT_LEGACY_MOTCONFIG = 20 +MT_STP_UPDATE_FULL = 26 +MT_STP_UPDATE = 28 +MT_STP_NOGROUP = 27 +MT_SHUTDOWN = 45 +MT_CONFIRM_SHUTDOWN = 50 +MT_RTMESSAGE0 = 30 +MT_RTMESSAGE1 = 31 +MT_RTMESSAGE2 = 32 +MT_RTMESSAGE3 = 33 +MT_RTMESSAGE4 = 34 +MT_ASCII = 100 +MT_UNICODE = 101 +MT_GCODE = 102 +MT_PYTHON = 103 +MT_PICKLE = 104 +MT_TCL = 105 +MT_XML = 106 +MT_JSON = 107 +MT_JPEG = 108 +MT_PNG = 109 +MT_TIFF = 110 +MT_POSTSCRIPT = 111 +MT_SVG = 112 +MT_ZMQ_SUBSCRIBE = 150 +MT_ZMQ_UNSUBSCRIBE = 151 +MT_PING = 210 +MT_PING_ACKNOWLEDGE = 215 +MT_REJECT = 220 +MT_DONE = 240 +MT_SERVICE_REQUEST = 250 +MT_SERVICE_ANNOUNCEMENT = 251 +MT_SERVICE_PROBE = 252 +MT_MESSAGEBUS_NO_DESTINATION = 255 +MT_HALRCOMP_BIND = 256 +MT_HALRCOMP_BIND_CONFIRM = 257 +MT_HALRCOMP_BIND_REJECT = 258 +MT_HALRCOMP_SET = 259 +MT_HALRCOMP_SET_REJECT = 260 +MT_HALRCOMP_ACK = 263 +MT_HALRCOMMAND_SET = 265 +MT_HALRCOMMAND_SET_REJECT = 266 +MT_HALRCOMMAND_GET = 267 +MT_HALRCOMMAND_GET_REJECT = 268 +MT_HALRCOMMAND_CREATE = 269 +MT_HALRCOMMAND_CREATE_REJECT = 270 +MT_HALRCOMMAND_DELETE = 271 +MT_HALRCOMMAND_DELETE_REJECT = 272 +MT_HALRCOMMAND_ACK = 273 +MT_HALRCOMMAND_ERROR = 274 +MT_HALRCOMMAND_DESCRIBE = 276 +MT_HALRCOMMAND_DESCRIPTION = 277 +MT_HALRCOMP_FULL_UPDATE = 288 +MT_HALRCOMP_INCREMENTAL_UPDATE = 289 +MT_HALRCOMP_ERROR = 290 +MT_HALGROUP_BIND = 294 +MT_HALGROUP_BIND_CONFIRM = 295 +MT_HALGROUP_BIND_REJECT = 296 +MT_HALGROUP_FULL_UPDATE = 297 +MT_HALGROUP_INCREMENTAL_UPDATE = 298 +MT_HALGROUP_ERROR = 299 +MT_RTAPI_APP_EXIT = 300 +MT_RTAPI_APP_PING = 301 +MT_RTAPI_APP_LOADRT = 302 +MT_RTAPI_APP_LOG = 303 +MT_RTAPI_APP_UNLOADRT = 305 +MT_RTAPI_APP_NEWINST = 306 +MT_RTAPI_APP_NEWTHREAD = 307 +MT_RTAPI_APP_DELTHREAD = 308 +MT_RTAPI_APP_CALLFUNC = 309 +MT_RTAPI_APP_REPLY = 310 +MT_RTAPI_APP_DELINST = 311 +MT_LIST_APPLICATIONS = 350 +MT_DESCRIBE_APPLICATION = 351 +MT_RETRIEVE_APPLICATION = 352 +MT_APPLICATION_DETAIL = 353 +MT_ERROR = 360 +MT_FULL_UPDATE = 370 +MT_INCREMENTAL_UPDATE = 371 +MT_TASK_REPLY = 400 +MT_TICKET_UPDATE = 401 +MT_CREDIT_UPDATE = 450 +MT_EMCMOT_LOWER = 1000 +MT_EMCMOT_UPPER = 1100 +MT_EMCMOT_ABORT = 1001 +MT_EMCMOT_AXIS_ABORT = 1002 +MT_EMCMOT_ENABLE = 1003 +MT_EMCMOT_DISABLE = 1004 +MT_EMCMOT_ENABLE_AMPLIFIER = 1005 +MT_EMCMOT_DISABLE_AMPLIFIER = 1006 +MT_EMCMOT_ENABLE_WATCHDOG = 1007 +MT_EMCMOT_DISABLE_WATCHDOG = 1008 +MT_EMCMOT_ACTIVATE_JOINT = 1009 +MT_EMCMOT_DEACTIVATE_JOINT = 1010 +MT_EMCMOT_PAUSE = 1011 +MT_EMCMOT_RESUME = 1012 +MT_EMCMOT_STEP = 1013 +MT_EMCMOT_FREE = 1014 +MT_EMCMOT_COORD = 1015 +MT_EMCMOT_TELEOP = 1016 +MT_EMCMOT_SPINDLE_SCALE = 1017 +MT_EMCMOT_SS_ENABLE = 1018 +MT_EMCMOT_FEED_SCALE = 1019 +MT_EMCMOT_FS_ENABLE = 1020 +MT_EMCMOT_FH_ENABLE = 1021 +MT_EMCMOT_AF_ENABLE = 1022 +MT_EMCMOT_OVERRIDE_LIMITS = 1023 +MT_EMCMOT_HOME = 1024 +MT_EMCMOT_UNHOME = 1025 +MT_EMCMOT_JOG_CONT = 1026 +MT_EMCMOT_JOG_INCR = 1027 +MT_EMCMOT_JOG_ABS = 1028 +MT_EMCMOT_SET_LINE = 1029 +MT_EMCMOT_SET_CIRCLE = 1030 +MT_EMCMOT_SET_TELEOP_VECTOR = 1031 +MT_EMCMOT_CLEAR_PROBE_FLAGS = 1032 +MT_EMCMOT_PROBE = 1033 +MT_EMCMOT_RIGID_TAP = 1034 +MT_EMCMOT_SET_POSITION_LIMITS = 1035 +MT_EMCMOT_SET_BACKLASH = 1036 +MT_EMCMOT_SET_MIN_FERROR = 1037 +MT_EMCMOT_SET_MAX_FERROR = 1038 +MT_EMCMOT_SET_VEL = 1039 +MT_EMCMOT_SET_VEL_LIMIT = 1040 +MT_EMCMOT_SET_JOINT_VEL_LIMIT = 1041 +MT_EMCMOT_SET_JOINT_ACC_LIMIT = 1042 +MT_EMCMOT_SET_ACC = 1043 +MT_EMCMOT_SET_TERM_COND = 1044 +MT_EMCMOT_SET_NUM_AXES = 1045 +MT_EMCMOT_SET_WORLD_HOME = 1046 +MT_EMCMOT_SET_HOMING_PARAMS = 1047 +MT_EMCMOT_SET_DEBUG = 1048 +MT_EMCMOT_SET_DOUT = 1049 +MT_EMCMOT_SET_AOUT = 1050 +MT_EMCMOT_SET_SPINDLESYNC = 1051 +MT_EMCMOT_SPINDLE_ON = 1052 +MT_EMCMOT_SPINDLE_OFF = 1053 +MT_EMCMOT_SPINDLE_INCREASE = 1054 +MT_EMCMOT_SPINDLE_DECREASE = 1055 +MT_EMCMOT_SPINDLE_BRAKE_ENGAGE = 1056 +MT_EMCMOT_SPINDLE_BRAKE_RELEASE = 1057 +MT_EMCMOT_SET_MOTOR_OFFSET = 1058 +MT_EMCMOT_SET_JOINT_COMP = 1059 +MT_EMCMOT_SET_OFFSET = 1060 +MT_EMCMOT_COMMAND_OK = 1061 +MT_EMCMOT_COMMAND_UNKNOWN_COMMAND = 1062 +MT_EMCMOT_COMMAND_INVALID_COMMAND = 1063 +MT_EMCMOT_COMMAND_INVALID_PARAMS = 1064 +MT_EMCMOT_COMMAND_BAD_EXEC = 1065 +MT_EMCMOT_MOTION_DISABLED = 1066 +MT_EMCMOT_MOTION_FREE = 1067 +MT_EMCMOT_MOTION_TELEOP = 1068 +MT_EMCMOT_MOTION_COORD = 1069 +MT_EMCMOT_JOINT_FLAG = 1070 +MT_EMCMOT_MOTION_FLAG = 1071 +MT_PRU_FIRMWARE = 2048 +MT_MESA_5I20_FIRMWARE = 3000 +MT_BLOB = 4000 +MT_TEST1 = 5001 +MT_TEST2 = 5002 +MT_TEST3 = 5003 +MT_EMC_NML_LOWER = 10000 +MT_EMC_NML_UPPER = 13000 +MT_EMC_OPERATOR_ERROR = 10011 +MT_EMC_OPERATOR_TEXT = 10012 +MT_EMC_OPERATOR_DISPLAY = 10013 +MT_EMC_NULL = 10021 +MT_EMC_SET_DEBUG = 10022 +MT_EMC_SYSTEM_CMD = 10030 +MT_EMC_AXIS_SET_AXIS = 10101 +MT_EMC_AXIS_SET_UNITS = 10102 +MT_EMC_AXIS_SET_MIN_POSITION_LIMIT = 10107 +MT_EMC_AXIS_SET_MAX_POSITION_LIMIT = 10108 +MT_EMC_TOOL_START_CHANGE = 1110 +MT_EMC_EXEC_PLUGIN_CALL = 1112 +MT_EMC_IO_PLUGIN_CALL = 1113 +MT_EMC_AXIS_SET_FERROR = 10111 +MT_EMC_AXIS_SET_HOMING_PARAMS = 10112 +MT_EMC_AXIS_SET_MIN_FERROR = 10115 +MT_EMC_AXIS_SET_MAX_VELOCITY = 10116 +MT_EMC_AXIS_INIT = 10118 +MT_EMC_AXIS_HALT = 10119 +MT_EMC_AXIS_ABORT = 10120 +MT_EMC_AXIS_ENABLE = 10121 +MT_EMC_AXIS_DISABLE = 10122 +MT_EMC_AXIS_HOME = 10123 +MT_EMC_AXIS_UNHOME = 10135 +MT_EMC_AXIS_JOG = 10124 +MT_EMC_AXIS_INCR_JOG = 10125 +MT_EMC_AXIS_ABS_JOG = 10126 +MT_EMC_AXIS_ACTIVATE = 10127 +MT_EMC_AXIS_DEACTIVATE = 10128 +MT_EMC_AXIS_OVERRIDE_LIMITS = 10129 +MT_EMC_AXIS_LOAD_COMP = 10131 +MT_EMC_AXIS_SET_BACKLASH = 10134 +MT_EMC_AXIS_STAT = 10199 +MT_EMC_TRAJ_SET_AXES = 10201 +MT_EMC_TRAJ_SET_UNITS = 10202 +MT_EMC_TRAJ_SET_CYCLE_TIME = 10203 +MT_EMC_TRAJ_SET_MODE = 10204 +MT_EMC_TRAJ_SET_VELOCITY = 10205 +MT_EMC_TRAJ_SET_ACCELERATION = 10206 +MT_EMC_TRAJ_SET_MAX_VELOCITY = 10207 +MT_EMC_TRAJ_SET_MAX_ACCELERATION = 10208 +MT_EMC_TRAJ_SET_SCALE = 10209 +MT_EMC_TRAJ_SET_MOTION_ID = 10210 +MT_EMC_TRAJ_INIT = 10211 +MT_EMC_TRAJ_HALT = 10212 +MT_EMC_TRAJ_ENABLE = 10213 +MT_EMC_TRAJ_DISABLE = 10214 +MT_EMC_TRAJ_ABORT = 10215 +MT_EMC_TRAJ_PAUSE = 10216 +MT_EMC_TRAJ_STEP = 10217 +MT_EMC_TRAJ_RESUME = 10218 +MT_EMC_TRAJ_DELAY = 10219 +MT_EMC_TRAJ_LINEAR_MOVE = 10220 +MT_EMC_TRAJ_CIRCULAR_MOVE = 10221 +MT_EMC_TRAJ_SET_TERM_COND = 10222 +MT_EMC_TRAJ_SET_OFFSET = 10223 +MT_EMC_TRAJ_SET_G5X = 10224 +MT_EMC_TRAJ_SET_HOME = 10225 +MT_EMC_TRAJ_SET_ROTATION = 10226 +MT_EMC_TRAJ_SET_G92 = 10227 +MT_EMC_TRAJ_CLEAR_PROBE_TRIPPED_FLAG = 10228 +MT_EMC_TRAJ_PROBE = 10229 +MT_EMC_TRAJ_SET_TELEOP_ENABLE = 10230 +MT_EMC_TRAJ_SET_TELEOP_VECTOR = 10231 +MT_EMC_TRAJ_SET_SPINDLESYNC = 10232 +MT_EMC_TRAJ_SET_SPINDLE_SCALE = 10233 +MT_EMC_TRAJ_SET_FO_ENABLE = 10234 +MT_EMC_TRAJ_SET_SO_ENABLE = 10235 +MT_EMC_TRAJ_SET_FH_ENABLE = 10236 +MT_EMC_TRAJ_RIGID_TAP = 10237 +MT_EMC_TRAJ_SET_RAPID_SCALE = 10238 +MT_EMC_TRAJ_STAT = 10299 +MT_EMC_MOTION_INIT = 10301 +MT_EMC_MOTION_HALT = 10302 +MT_EMC_MOTION_ABORT = 10303 +MT_EMC_MOTION_SET_AOUT = 10304 +MT_EMC_MOTION_SET_DOUT = 10305 +MT_EMC_MOTION_ADAPTIVE = 10306 +MT_EMC_SPINDLE_ORIENT = 10317 +MT_EMC_SPINDLE_WAIT_ORIENT_COMPLETE = 10318 +MT_EMC_MOTION_STAT = 10399 +MT_EMC_TASK_INIT = 10501 +MT_EMC_TASK_HALT = 10502 +MT_EMC_TASK_ABORT = 10503 +MT_EMC_TASK_SET_MODE = 10504 +MT_EMC_TASK_SET_STATE = 10505 +MT_EMC_TASK_PLAN_OPEN = 10506 +MT_EMC_TASK_PLAN_RUN = 10507 +MT_EMC_TASK_PLAN_READ = 10508 +MT_EMC_TASK_PLAN_EXECUTE = 10509 +MT_EMC_TASK_PLAN_PAUSE = 10510 +MT_EMC_TASK_PLAN_STEP = 10511 +MT_EMC_TASK_PLAN_RESUME = 10512 +MT_EMC_TASK_PLAN_END = 10513 +MT_EMC_TASK_PLAN_CLOSE = 10514 +MT_EMC_TASK_PLAN_INIT = 10515 +MT_EMC_TASK_PLAN_SYNCH = 10516 +MT_EMC_TASK_PLAN_SET_OPTIONAL_STOP = 10517 +MT_EMC_TASK_PLAN_SET_BLOCK_DELETE = 10518 +MT_EMC_TASK_PLAN_OPTIONAL_STOP = 10519 +MT_EMC_TASK_PLAN_RESET = 10520 +MT_EMC_TASK_PLAN_REPLY = 10530 +MT_EMC_TASK_STAT = 10599 +MT_EMC_TOOL_INIT = 11101 +MT_EMC_TOOL_HALT = 11102 +MT_EMC_TOOL_ABORT = 11103 +MT_EMC_TOOL_PREPARE = 11104 +MT_EMC_TOOL_LOAD = 11105 +MT_EMC_TOOL_UNLOAD = 11106 +MT_EMC_TOOL_LOAD_TOOL_TABLE = 11107 +MT_EMC_TOOL_SET_OFFSET = 11108 +MT_EMC_TOOL_SET_NUMBER = 11109 +MT_EMC_TOOL_UPDATE_TOOL_TABLE = 11110 +MT_EMC_TOOL_STAT = 11199 +MT_EMC_AUX_ESTOP_ON = 11206 +MT_EMC_AUX_ESTOP_OFF = 11207 +MT_EMC_AUX_ESTOP_RESET = 11208 +MT_EMC_AUX_INPUT_WAIT = 11209 +MT_EMC_AUX_STAT = 11299 +MT_EMC_SPINDLE_ON = 11304 +MT_EMC_SPINDLE_OFF = 11305 +MT_EMC_SPINDLE_INCREASE = 11309 +MT_EMC_SPINDLE_DECREASE = 11310 +MT_EMC_SPINDLE_CONSTANT = 11311 +MT_EMC_SPINDLE_BRAKE_RELEASE = 11312 +MT_EMC_SPINDLE_BRAKE_ENGAGE = 11313 +MT_EMC_SPINDLE_SPEED = 11316 +MT_EMC_SPINDLE_STAT = 11399 +MT_EMC_COOLANT_MIST_ON = 11404 +MT_EMC_COOLANT_MIST_OFF = 11405 +MT_EMC_COOLANT_FLOOD_ON = 11406 +MT_EMC_COOLANT_FLOOD_OFF = 11407 +MT_EMC_COOLANT_STAT = 11499 +MT_EMC_LUBE_ON = 11504 +MT_EMC_LUBE_OFF = 11505 +MT_EMC_LUBE_STAT = 11599 +MT_EMC_IO_INIT = 11601 +MT_EMC_IO_HALT = 11602 +MT_EMC_IO_ABORT = 11603 +MT_EMC_IO_SET_CYCLE_TIME = 11604 +MT_EMC_IO_STAT = 11699 +MT_EMC_INIT = 11901 +MT_EMC_HALT = 11902 +MT_EMC_ABORT = 11903 +MT_EMC_STAT = 11999 +MT_EMCSTAT_FULL_UPDATE = 12500 +MT_EMCSTAT_INCREMENTAL_UPDATE = 12501 +MT_EMC_NML_ERROR = 12510 +MT_EMC_NML_TEXT = 12511 +MT_EMC_NML_DISPLAY = 12512 +MT_EMCCMD_EXECUTED = 12520 +MT_EMCCMD_COMPLETED = 12521 +MT_LAUNCHER_FULL_UPDATE = 12600 +MT_LAUNCHER_INCREMENTAL_UPDATE = 12601 +MT_LAUNCHER_ERROR = 12602 +MT_LAUNCHER_START = 12610 +MT_LAUNCHER_TERMINATE = 12611 +MT_LAUNCHER_KILL = 12612 +MT_LAUNCHER_WRITE_STDIN = 12613 +MT_LAUNCHER_CALL = 12614 +MT_LAUNCHER_SHUTDOWN = 12615 +MT_LAUNCHER_SET = 12616 +ORIGIN_UNKNOWN = 0 +ORIGIN_G54 = 1 +ORIGIN_G55 = 2 +ORIGIN_G56 = 3 +ORIGIN_G57 = 4 +ORIGIN_G58 = 5 +ORIGIN_G59 = 6 +ORIGIN_G59_1 = 7 +ORIGIN_G59_2 = 8 +ORIGIN_G59_3 = 9 +_EMC_TRAJ_TERM_COND_STOP = 1 +_EMC_TRAJ_TERM_COND_BLEND = 2 +_CANON_STOPPED = 1 +_CANON_CLOCKWISE = 2 +_CANON_COUNTERCLOCKWISE = 3 +_ANALOG_INPUT = 0 +_DIGITAL_INPUT = 1 +IMMEDIATE = 0 +RISE = 1 +FALL = 2 +BE_HIGH = 3 +BE_LOW = 4 +INTERP_IDLE = 1 +INTERP_RUNNING = 2 +INTERP_SYNC_WAIT = 3 +INTERP_PAUSED = 4 +INTERP_QUEUE_WAIT = 5 +INTERP_ABORT_WAIT = 6 +INTERP_STATE_UNSET = 99 + + +DESCRIPTOR.enum_types_by_name['ValueType'] = _VALUETYPE +DESCRIPTOR.enum_types_by_name['HalPinDirection'] = _HALPINDIRECTION +DESCRIPTOR.enum_types_by_name['HalParamDirection'] = _HALPARAMDIRECTION +DESCRIPTOR.enum_types_by_name['HalFunctType'] = _HALFUNCTTYPE +DESCRIPTOR.enum_types_by_name['ObjectType'] = _OBJECTTYPE +DESCRIPTOR.enum_types_by_name['msgidType'] = _MSGIDTYPE +DESCRIPTOR.enum_types_by_name['socketType'] = _SOCKETTYPE +DESCRIPTOR.enum_types_by_name['securityMechanism'] = _SECURITYMECHANISM +DESCRIPTOR.enum_types_by_name['RCS_STATUS'] = _RCS_STATUS +DESCRIPTOR.enum_types_by_name['MsgOrigin'] = _MSGORIGIN +DESCRIPTOR.enum_types_by_name['MsgLevel'] = _MSGLEVEL +DESCRIPTOR.enum_types_by_name['OriginDetail'] = _ORIGINDETAIL +DESCRIPTOR.enum_types_by_name['OriginType'] = _ORIGINTYPE +DESCRIPTOR.enum_types_by_name['Severity'] = _SEVERITY +DESCRIPTOR.enum_types_by_name['StatusType'] = _STATUSTYPE +DESCRIPTOR.enum_types_by_name['ReplyType'] = _REPLYTYPE +DESCRIPTOR.enum_types_by_name['ServiceType'] = _SERVICETYPE +DESCRIPTOR.enum_types_by_name['ServiceAPI'] = _SERVICEAPI +DESCRIPTOR.enum_types_by_name['ContainerType'] = _CONTAINERTYPE +DESCRIPTOR.enum_types_by_name['OriginIndex'] = _ORIGININDEX +DESCRIPTOR.enum_types_by_name['TermConditionType'] = _TERMCONDITIONTYPE +DESCRIPTOR.enum_types_by_name['CanonDirection'] = _CANONDIRECTION +DESCRIPTOR.enum_types_by_name['InputType'] = _INPUTTYPE +DESCRIPTOR.enum_types_by_name['WaitType'] = _WAITTYPE +DESCRIPTOR.enum_types_by_name['InterpreterStateType'] = _INTERPRETERSTATETYPE + + +# @@protoc_insertion_point(module_scope) diff --git a/python/machinetalk/protobuf/value_pb2.py b/python/machinetalk/protobuf/value_pb2.py new file mode 100644 index 0000000000..fd8192e571 --- /dev/null +++ b/python/machinetalk/protobuf/value_pb2.py @@ -0,0 +1,178 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: machinetalk/protobuf/value.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from machinetalk.protobuf import nanopb_pb2 as machinetalk_dot_protobuf_dot_nanopb__pb2 +from machinetalk.protobuf import emcclass_pb2 as machinetalk_dot_protobuf_dot_emcclass__pb2 +from machinetalk.protobuf import types_pb2 as machinetalk_dot_protobuf_dot_types__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='machinetalk/protobuf/value.proto', + package='machinetalk', + syntax='proto2', + serialized_pb=_b('\n machinetalk/protobuf/value.proto\x12\x0bmachinetalk\x1a!machinetalk/protobuf/nanopb.proto\x1a#machinetalk/protobuf/emcclass.proto\x1a machinetalk/protobuf/types.proto\"\xdf\x02\n\x05Value\x12$\n\x04type\x18\n \x02(\x0e\x32\x16.machinetalk.ValueType\x12\x0e\n\x06halbit\x18\x64 \x01(\x08\x12\x10\n\x08halfloat\x18\x65 \x01(\x01\x12\x0e\n\x06hals32\x18\x66 \x01(\x0f\x12\x0e\n\x06halu32\x18g \x01(\x07\x12\x0f\n\x07v_bytes\x18x \x01(\x0c\x12\x10\n\x07v_int32\x18\x82\x01 \x01(\x0f\x12\x10\n\x07v_int64\x18\x8c\x01 \x01(\x10\x12\x11\n\x08v_uint32\x18\x96\x01 \x01(\x07\x12\x11\n\x08v_uint64\x18\xa0\x01 \x01(\x06\x12\x11\n\x08v_double\x18\xaa\x01 \x01(\x01\x12\x18\n\x08v_string\x18\xb4\x01 \x01(\tB\x05\x92?\x02\x08)\x12\x0f\n\x06v_bool\x18\xbe\x01 \x01(\x08\x12(\n\x05\x63\x61rte\x18\xc8\x01 \x01(\x0b\x32\x18.machinetalk.PmCartesian\x12#\n\x04pose\x18\xdc\x01 \x01(\x0b\x32\x14.machinetalk.EmcPose:\x06\x92?\x03H\xdc\x0b') + , + dependencies=[machinetalk_dot_protobuf_dot_nanopb__pb2.DESCRIPTOR,machinetalk_dot_protobuf_dot_emcclass__pb2.DESCRIPTOR,machinetalk_dot_protobuf_dot_types__pb2.DESCRIPTOR,]) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + + + + +_VALUE = _descriptor.Descriptor( + name='Value', + full_name='machinetalk.Value', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='type', full_name='machinetalk.Value.type', index=0, + number=10, type=14, cpp_type=8, label=2, + has_default_value=False, default_value=1, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='halbit', full_name='machinetalk.Value.halbit', index=1, + number=100, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='halfloat', full_name='machinetalk.Value.halfloat', index=2, + number=101, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='hals32', full_name='machinetalk.Value.hals32', index=3, + number=102, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='halu32', full_name='machinetalk.Value.halu32', index=4, + number=103, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='v_bytes', full_name='machinetalk.Value.v_bytes', index=5, + number=120, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='v_int32', full_name='machinetalk.Value.v_int32', index=6, + number=130, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='v_int64', full_name='machinetalk.Value.v_int64', index=7, + number=140, type=16, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='v_uint32', full_name='machinetalk.Value.v_uint32', index=8, + number=150, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='v_uint64', full_name='machinetalk.Value.v_uint64', index=9, + number=160, type=6, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='v_double', full_name='machinetalk.Value.v_double', index=10, + number=170, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='v_string', full_name='machinetalk.Value.v_string', index=11, + number=180, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\010)'))), + _descriptor.FieldDescriptor( + name='v_bool', full_name='machinetalk.Value.v_bool', index=12, + number=190, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='carte', full_name='machinetalk.Value.carte', index=13, + number=200, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='pose', full_name='machinetalk.Value.pose', index=14, + number=220, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\334\013')), + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=156, + serialized_end=507, +) + +_VALUE.fields_by_name['type'].enum_type = machinetalk_dot_protobuf_dot_types__pb2._VALUETYPE +_VALUE.fields_by_name['carte'].message_type = machinetalk_dot_protobuf_dot_emcclass__pb2._PMCARTESIAN +_VALUE.fields_by_name['pose'].message_type = machinetalk_dot_protobuf_dot_emcclass__pb2._EMCPOSE +DESCRIPTOR.message_types_by_name['Value'] = _VALUE + +Value = _reflection.GeneratedProtocolMessageType('Value', (_message.Message,), dict( + DESCRIPTOR = _VALUE, + __module__ = 'machinetalk.protobuf.value_pb2' + # @@protoc_insertion_point(class_scope:machinetalk.Value) + )) +_sym_db.RegisterMessage(Value) + + +_VALUE.fields_by_name['v_string'].has_options = True +_VALUE.fields_by_name['v_string']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\222?\002\010)')) +_VALUE.has_options = True +_VALUE._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('\222?\003H\334\013')) +# @@protoc_insertion_point(module_scope) diff --git a/scripts/README.md b/scripts/README.md new file mode 100644 index 0000000000..1fed9a4ec2 --- /dev/null +++ b/scripts/README.md @@ -0,0 +1,13 @@ +# Helper Scripts + +## distribute-python + +This script must be run whenever the protobuf files are changed. To +prevent problems when protoc is not installed on a system it makes +sense to dristribute the generated Python files. + +Run this script from the root directory. + +```bash +./script/distribute-python +``` diff --git a/scripts/distribute-python b/scripts/distribute-python new file mode 100755 index 0000000000..e6a3630208 --- /dev/null +++ b/scripts/distribute-python @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +make +cp -rv ./build/python/machinetalk python diff --git a/setup.cfg b/setup.cfg index 224a77957f..2b8bba6c6e 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,2 +1,8 @@ [metadata] -description-file = README.md \ No newline at end of file +description-file = README.md + +[bdist-wheel] +# This flag says that the code is written to work on both Python 2 and Python +# 3. If at all possible, it is good practice to do this. If you cannot, you +# will need to generate wheels for each Python version that you support. +universal=1 diff --git a/setup.py b/setup.py index 42b7081274..5479dce170 100644 --- a/setup.py +++ b/setup.py @@ -1,150 +1,120 @@ -#!/usr/bin/env python - -from distutils.core import setup - -# See README for usage instructions. -import os -import subprocess -import sys -import shutil +"""A setuptools based setup module. +See: +https://packaging.python.org/en/latest/distributing.html +https://github.com/pypa/sampleproject +""" + +from os import path +# Always prefer setuptools over distutils +from setuptools import setup, find_packages +# To use a consistent encoding +from codecs import open PROJECT = 'machinetalk' PROJECT_NAME = '%s-protobuf' % PROJECT DESCRIPTION = "Protobuf Python modules for %s" % PROJECT -VERSION = "v1.0.7" +VERSION = "1.1.0" AUTHOR = "Alexander Roessler" AUTHOR_EMAIL = "alex@machinekoder.com" PROJECT_URL = 'https://github.com/machinekit/%s' % PROJECT_NAME DOWNLOAD_URL = 'https://github.com/machinekit/%s/archive/%s.tar.gz' % (PROJECT_NAME, VERSION) - -# We must use setuptools, not distutils, because we need to use the -# namespace_packages option for the "google" package. -try: - from setuptools import setup, Extension, find_packages -except ImportError: - try: - from ez_setup import use_setuptools - use_setuptools() - from setuptools import setup, Extension, find_packages - except ImportError: - sys.stderr.write( - "Could not import setuptools; make sure you have setuptools or " - "ez_setup installed.\n" - ) - raise - -from distutils.command.clean import clean as _clean - -if sys.version_info[0] == 3: - # Python 3 - from distutils.command.build_py import build_py_2to3 as _build_py -else: - # Python 2 - from distutils.command.build_py import build_py as _build_py -from distutils.spawn import find_executable - -# Find the Protocol Compiler. -if 'PROTOC' in os.environ and os.path.exists(os.environ['PROTOC']): - protoc = os.environ['PROTOC'] -elif os.path.exists("./src/protoc"): - protoc = "./src/protoc" -elif os.path.exists("./src/protoc.exe"): - protoc = "./src/protoc.exe" -elif os.path.exists("./vsprojects/Debug/protoc.exe"): - protoc = "./vsprojects/Debug/protoc.exe" -elif os.path.exists("./vsprojects/Release/protoc.exe"): - protoc = "./vsprojects/Release/protoc.exe" -else: - protoc = find_executable("protoc") - -google_protobuf_includedir = subprocess.check_output(["pkg-config", "--variable=includedir", "protobuf"]).decode().strip() - -def generate_proto(source, require = True): - """Invokes the Protocol Compiler to generate a _pb2.py from the given - .proto file. Does nothing if the output already exists and is newer than - the input.""" - - if not require and not os.path.exists(source): - return - - output = source.replace(".proto", "_pb2.py").replace("./src/", "") - - if (not os.path.exists(output) or - (os.path.exists(source) and - os.path.getmtime(source) > os.path.getmtime(output))): - print("Generating %s..." % output) - - if not os.path.exists(source): - sys.stderr.write("Can't find required file: %s\n" % source) - sys.exit(-1) - - if protoc is None: - sys.stderr.write( - "protoc is not installed nor found in ./src. " - "Please compile it or install the binary package.\n" - ) - sys.exit(-1) - - protoc_command = [protoc, "-I./src", "-I" + google_protobuf_includedir, "--python_out=.", source] - print("Command: %s" % protoc_command) - if subprocess.call(protoc_command) != 0: - sys.exit(-1) - -def create_init(path): - if not os.path.exists(path): - os.mkdir(path) - - initfile = os.path.join(path, '__init__.py') - if not os.path.exists(initfile): - content = "__import__('pkg_resources').declare_namespace(__name__)\n" - with open(initfile, 'w') as f: - f.write(content) - -class clean(_clean): - def run(self): - # delete _init_ files - shutil.rmtree(PROJECT) - - # Delete generated files in the code tree. - for (dirpath, dirnames, filenames) in os.walk("."): - for filename in filenames: - filepath = os.path.join(dirpath, filename) - if filepath.endswith("_pb2.py") or filepath.endswith(".pyc"): - os.remove(filepath) - # _clean is an old-style class, so super() doesn't work. - _clean.run(self) - - -class build_py(_build_py): - def run(self): - source_path = './src/%s/protobuf/' % PROJECT - - # Generate necessary .proto file if it doesn't exist. - for entry in os.listdir(source_path): - filepath = os.path.join(source_path, entry) - if os.path.isfile(filepath) and filepath.endswith('.proto'): - generate_proto(filepath) - - # _build_py is an old-style class, so super() doesn't work. - _build_py.run(self) - -if __name__ == '__main__': - # create __init__ files - create_init(PROJECT) - create_init(PROJECT + '/protobuf') - # start the setup - setup(name=PROJECT_NAME, - version=VERSION, - description=DESCRIPTION, - url=PROJECT_URL, - download_url=DOWNLOAD_URL, - author=AUTHOR, - author_email=AUTHOR_EMAIL, - namespace_packages=[PROJECT], - packages=find_packages(), - install_requires=['setuptools', 'protobuf'], - cmdclass={ - 'clean': clean, - 'build_py': build_py, - } - ) +KEYWORDS = 'protobuf machinekit motion-control hal' + +here = path.abspath(path.dirname(__file__)) + +# Get the long description from the README file +with open(path.join(here, 'README.md'), encoding='utf-8') as f: + long_description = f.read() + +setup( + name=PROJECT_NAME, + + # Versions should comply with PEP440. For a discussion on single-sourcing + # the version across setup.py and the project code, see + # https://packaging.python.org/en/latest/single_source_version.html + version=VERSION, + + description=DESCRIPTION, + long_description=long_description, + + # The project's main homepage. + url=PROJECT_URL, + download_url=DOWNLOAD_URL, + + # Author details + author=AUTHOR, + author_email=AUTHOR_EMAIL, + + # Choose your license + license='MIT', + + # See https://pypi.python.org/pypi?%3Aaction=list_classifiers + classifiers=[ + # How mature is this project? Common values are + # 3 - Alpha + # 4 - Beta + # 5 - Production/Stable + 'Development Status :: 5 - Production/Stable', + + # Indicate who your project is intended for + 'Intended Audience :: Developers', + 'Topic :: Software Development :: Object Brokering', + + # Pick your license as you wish (should match "license" above) + 'License :: OSI Approved :: MIT License', + + # Specify the Python versions you support here. In particular, ensure + # that you indicate whether you support Python 2, Python 3 or both. + 'Programming Language :: Python :: 2', + 'Programming Language :: Python :: 2.7', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.3', + 'Programming Language :: Python :: 3.4', + 'Programming Language :: Python :: 3.5', + ], + + # What does your project relate to? + keywords=KEYWORDS, + + # You can just specify the packages manually here if your project is + # simple. Or you can use find_packages(). + packages=find_packages(where='python', exclude=['contrib', 'docs', 'tests']), + package_dir={'': 'python'}, # Our packages live under src but src is not a package itself + + # Alternatively, if you want to distribute just a my_module.py, uncomment + # this: + #py_modules=["corenlp_protobuf"], + + # List run-time dependencies here. These will be installed by pip when + # your project is installed. For an analysis of "install_requires" vs pip's + # requirements files see: + # https://packaging.python.org/en/latest/requirements.html + install_requires=['protobuf'], + + # List additional groups of dependencies here (e.g. development + # dependencies). You can install these using the following syntax, + # for example: + # $ pip install -e .[dev,test] + extras_require={ + 'dev': ['check-manifest'], + 'test': ['coverage'], + }, + + # If there are data files included in your packages that need to be + # installed, specify them here. If using Python 2.6 or less, then these + # have to be included in MANIFEST.in as well. + package_data={ + }, + + # Although 'package_data' is the preferred approach, in some case you may + # need to place data files outside of your packages. See: + # http://docs.python.org/3.4/distutils/setupscript.html#installing-additional-files # noqa + # In this case, 'data_file' will be installed into '/my_data' + data_files=[], + + # To provide executable scripts, use entry points in preference to the + # "scripts" keyword. Entry points provide cross-platform support and allow + # pip to create the appropriate form of executable for the target platform. + entry_points={ + }, +) diff --git a/src/machinetalk/protobuf/message.proto b/src/machinetalk/protobuf/message.proto index fed2552a8e..1484334519 100644 --- a/src/machinetalk/protobuf/message.proto +++ b/src/machinetalk/protobuf/message.proto @@ -220,6 +220,7 @@ message Container { optional EmcStatusIo emc_status_io = 602 [(nanopb).type = FT_IGNORE]; optional EmcStatusTask emc_status_task = 603 [(nanopb).type = FT_IGNORE]; optional EmcStatusInterp emc_status_interp = 604 [(nanopb).type = FT_IGNORE]; + optional EmcStatusUI emc_status_ui = 605 [(nanopb).type = FT_IGNORE]; optional EmcCommandParameters emc_command_params = 610 [(nanopb).type = FT_IGNORE]; diff --git a/src/machinetalk/protobuf/status.proto b/src/machinetalk/protobuf/status.proto index fc7bf6adf3..3a1f77f9d8 100644 --- a/src/machinetalk/protobuf/status.proto +++ b/src/machinetalk/protobuf/status.proto @@ -497,3 +497,20 @@ message EmcStatusUserCommand { required int32 index = 1; /// User command index. optional string command = 2; /// User command separated by semicolon. E.g. G1A20;G1A0 Remove Filament. } + +/** + * EMC status user interface message. + */ +message EmcStatusUI { + option (nanopb_msgopt).msgid = 1117; + + optional bool spindle_brake_visible = 1; /// Spindle brake control visible + optional bool spindle_cw_visible = 2; /// Spindle CW control visible + optional bool spindle_ccw_visible = 3; /// Spindle CCW control visible + optional bool spindle_stop_visible = 4; /// Spindle stop control visible + optional bool spindle_plus_visible = 5; /// Spindle plus control visible + optional bool spindle_minus_visible = 6; /// Spindle minus control visible + optional bool spindle_override_visible = 7; /// Spindle override control visible + optional bool coolant_flood_visible = 8; /// Coolant flood control visible + optional bool coolant_mist_visible = 9; /// Coolant mist control visible +} From 27ce4ceb91f6f1fe2b831a108df074c49fdf8277 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Thu, 7 Jun 2018 12:33:38 +0200 Subject: [PATCH 243/516] mkwrapper: support new EmcStatusUI probotbuf message --- src/machinetalk/mkwrapper/mkwrapper.py | 133 ++++++++++++++++++++----- 1 file changed, 110 insertions(+), 23 deletions(-) diff --git a/src/machinetalk/mkwrapper/mkwrapper.py b/src/machinetalk/mkwrapper/mkwrapper.py index e1dc614ad4..4570b20e57 100644 --- a/src/machinetalk/mkwrapper/mkwrapper.py +++ b/src/machinetalk/mkwrapper/mkwrapper.py @@ -17,7 +17,7 @@ import codecs import ConfigParser import linuxcnc -from machinekit import service +from machinekit import service, hal from machinekit import config from pyftpdlib.authorizers import DummyAuthorizer @@ -374,6 +374,7 @@ def __init__(self): self.motion = EmcStatusMotion() self.task = EmcStatusTask() self.interp = EmcStatusInterp() + self.ui = EmcStatusUI() def clear(self): self.io.Clear() @@ -381,6 +382,7 @@ def clear(self): self.motion.Clear() self.task.Clear() self.interp.Clear() + self.ui.Clear() class LinuxCNCWrapper(object): @@ -421,6 +423,9 @@ def __init__(self, context, host='', loopback=False, self.interpSubscribed = False self.interpFullUpdate = False self.interpFirstrun = True + self.uiSubscribed = False + self.uiFullUpdate = False + self.uiFirstrun = True self.statusServiceSubscribed = False self.textSubscribed = False @@ -841,6 +846,9 @@ def update_motion_value(self, prop, value): def update_motion_float(self, prop, value): return self.update_proto_float(self.status.motion, self.statusTx.motion, prop, value) + def update_ui_value(self, prop, value): + return self.update_proto_value(self.status.ui, self.statusTx.ui, prop, value) + def update_config(self, stat): modified = False @@ -1412,6 +1420,69 @@ def update_motion(self, stat): elif modified: self.send_motion(self.statusTx.motion, MT_EMCSTAT_INCREMENTAL_UPDATE) + def update_ui(self, _stat): + modified = False + + if self.uiFirstrun: + self.status.ui.spindle_brake_visible = False + self.status.ui.spindle_cw_visible = False + self.status.ui.spindle_ccw_visible = False + self.status.ui.spindle_stop_visible = False + self.status.ui.spindle_plus_visible = False + self.status.ui.spindle_minus_visible = False + self.status.ui.spindle_override_visible = False + self.status.ui.coolant_flood_visible = False + self.status.ui.coolant_mist_visible = False + + modified |= self.update_ui_value('spindle_brake_visible', self.get_ui_element_visible( + "motion.spindle-brake" + )) + modified |= self.update_ui_value('spindle_cw_visible', self.get_ui_element_visible( + "motion.spindle-forward", "motion.spindle-on", "motion.spindle-speed-out", + "motion.spindle-speed-out-abs", "motion.spindle-speed-out-rps", "motion.spindle-speed-out-rps-abs" + )) + modified |= self.update_ui_value('spindle_ccw_visible', self.get_ui_element_visible( + "motion.spindle-reverse", "motion.spindle-speed-out", "motion.spindle-speed-out-abs", + "motion.spindle-speed-out-rps", "motion.spindle-speed-out-rps-abs" + )) + modified |= self.update_ui_value('spindle_stop_visible', self.get_ui_element_visible( + "motion.spindle-forward", "motion.spindle-reverse", "motion.spindle-on", + "motion.spindle-speed-out", "motion.spindle-speed-out-abs", "motion.spindle-speed-out-rps", + "motion.spindle-speed-out-rps-abs" + )) + modified |= self.update_ui_value('spindle_plus_visible', self.get_ui_element_visible( + "motion.spindle-speed-out", "motion.spindle-speed-out-abs", "motion.spindle-speed-out-rps", + "motion.spindle-speed-out-rps-abs" + )) + modified |= self.update_ui_value('spindle_minus_visible', self.get_ui_element_visible( + "motion.spindle-speed-out", "motion.spindle-speed-out-abs", "motion.spindle-speed-out-rps", + "motion.spindle-speed-out-rps-abs" + )) + modified |= self.update_ui_value('spindle_override_visible', self.get_ui_element_visible( + "motion.spindle-speed-out", "motion.spindle-speed-out-abs", "motion.spindle-speed-out-rps", + "motion.spindle-speed-out-rps-abs" + )) + modified |= self.update_ui_value('coolant_flood_visible', self.get_ui_element_visible( + "iocontrol.0.coolant-flood" + )) + modified |= self.update_ui_value('coolant_mist_visible', self.get_ui_element_visible( + "iocontrol.0.coolant-mist" + )) + + if self.uiFullUpdate: + self.add_pparams() + self.send_ui(self.status.ui, MT_EMCSTAT_FULL_UPDATE) + self.uiFullUpdate = False + elif modified: + self.send_ui(self.statusTx.ui, MT_EMCSTAT_INCREMENTAL_UPDATE) + + @staticmethod + def get_ui_element_visible(*hal_pins): + for name in hal_pins: + if hal.pins[name].linked: + return True + return False + def update_status(self, stat): self.statusTx.clear() if (self.ioSubscribed): @@ -1424,6 +1495,8 @@ def update_status(self, stat): self.update_motion(stat) if (self.configSubscribed): self.update_config(stat) + if self.uiSubscribed: + self.update_ui(stat) def update_error(self, error): with self.errorNoteLock: @@ -1465,53 +1538,59 @@ def add_error(self, note): def preview_error(self, error, line): self.add_error("%s\non line %s" % (error, str(line))) - def send_config(self, data, type): + def send_config(self, data, type_): self.txStatus.emc_status_config.MergeFrom(data) if self.debug: print("sending config message") - self.send_status_msg('config', type) + self.send_status_msg('config', type_) - def send_io(self, data, type): + def send_io(self, data, type_): self.txStatus.emc_status_io.MergeFrom(data) if self.debug: print("sending io message") - self.send_status_msg('io', type) + self.send_status_msg('io', type_) - def send_task(self, data, type): + def send_task(self, data, type_): self.txStatus.emc_status_task.MergeFrom(data) if self.debug: print("sending task message") - self.send_status_msg('task', type) + self.send_status_msg('task', type_) - def send_motion(self, data, type): + def send_motion(self, data, type_): self.txStatus.emc_status_motion.MergeFrom(data) if self.debug: print("sending motion message") - self.send_status_msg('motion', type) + self.send_status_msg('motion', type_) - def send_interp(self, data, type): + def send_interp(self, data, type_): self.txStatus.emc_status_interp.MergeFrom(data) if self.debug: print("sending interp message") - self.send_status_msg('interp', type) + self.send_status_msg('interp', type_) - def send_status_msg(self, topic, type): + def send_ui(self, data, type_): + self.txStatus.emc_status_ui.MergeFrom(data) + if self.debug: + print("sending ui message") + self.send_status_msg('ui', type_) + + def send_status_msg(self, topic, type_): with self.statusLock: - self.txStatus.type = type + self.txStatus.type = type_ txBuffer = self.txStatus.SerializeToString() self.statusSocket.send_multipart([topic, txBuffer], zmq.NOBLOCK) self.txStatus.Clear() - def send_error_msg(self, topic, type): + def send_error_msg(self, topic, type_): with self.errorLock: - self.txError.type = type + self.txError.type = type_ txBuffer = self.txError.SerializeToString() self.errorSocket.send_multipart([topic, txBuffer], zmq.NOBLOCK) self.txError.Clear() - def send_command_msg(self, identity, type): + def send_command_msg(self, identity, type_): with self.commandLock: - self.txCommand.type = type + self.txCommand.type = type_ txBuffer = self.txCommand.SerializeToString() self.commandSocket.send_multipart(identity + [txBuffer], zmq.NOBLOCK) self.txCommand.Clear() @@ -1532,6 +1611,8 @@ def ping_status(self): self.send_status_msg('motion', MT_PING) if (self.configSubscribed): self.send_status_msg('config', MT_PING) + if self.uiSubscribed: + self.send_status_msg('ui', MT_PING) def ping_error(self): if self.newErrorSubscription: # not very clear @@ -1567,12 +1648,18 @@ def process_status(self, socket): elif subscription == 'interp': self.interpSubscribed = status self.interpFullUpdate = status - - self.statusServiceSubscribed = self.motionSubscribed \ - or self.taskSubscribed \ - or self.ioSubscribed \ - or self.configSubscribed \ - or self.interpSubscribed + elif subscription == 'ui': + self.uiSubscribed = status + self.uiFullUpdate = status + + self.statusServiceSubscribed = ( + self.motionSubscribed + or self.taskSubscribed + or self.ioSubscribed + or self.configSubscribed + or self.interpSubscribed + or self.uiSubscribed + ) if self.debug: print(("process status called " + subscription + ' ' + str(status))) From 5947d36ebf4df5022d81a5da5b028bf4dfcc8375 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Fri, 15 Jun 2018 10:17:37 +0200 Subject: [PATCH 244/516] mkwrapper: fix new style class problems --- src/machinetalk/mkwrapper/mkwrapper.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/machinetalk/mkwrapper/mkwrapper.py b/src/machinetalk/mkwrapper/mkwrapper.py index 4570b20e57..2aac9f9057 100644 --- a/src/machinetalk/mkwrapper/mkwrapper.py +++ b/src/machinetalk/mkwrapper/mkwrapper.py @@ -45,7 +45,8 @@ def getFreePort(): return port -class CustomFTPHandler(object, FTPHandler): +# noinspection PyClassicStyleClass +class CustomFTPHandler(FTPHandler): def on_file_received(self, file): # do something when a file has been received From 16edc87fd7e17029fc579032b3f5e4dbdfeb451a Mon Sep 17 00:00:00 2001 From: Evgeny Sabelskiy Date: Sat, 16 Jun 2018 14:19:45 +0300 Subject: [PATCH 245/516] return hm2 setsserial module --- src/Makefile | 5 +++-- src/hal/drivers/mesa-hostmot2/setsserial.c | 9 ++++++--- src/rtapi/userpci/Submakefile | 6 +++++- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/Makefile b/src/Makefile index 75ed1ce00a..897e12007d 100755 --- a/src/Makefile +++ b/src/Makefile @@ -1464,7 +1464,7 @@ endif endif ifeq ($(BUILD_HOSTMOT2),yes) -obj-$(CONFIG_HOSTMOT2) += hostmot2.o hm2_7i43.o hm2_7i90.o hm2_pci.o hm2_test.o +obj-$(CONFIG_HOSTMOT2) += hostmot2.o hm2_7i43.o hm2_7i90.o hm2_pci.o hm2_test.o setsserial.o ifeq ($(BUILD_SYS),user-dso) obj-$(CONFIG_HOSTMOT2) += hm2_eth.o hm2_eth-objs := \ @@ -1514,7 +1514,7 @@ hm2_test-objs := \ hal/drivers/mesa-hostmot2/hm2_test.o \ hal/drivers/mesa-hostmot2/bitfile.o \ $(MATHSTUB) -setsserial-objs := \ +setsserial-objs += \ hal/drivers/mesa-hostmot2/setsserial.o \ $(MATHSTUB) endif @@ -1829,6 +1829,7 @@ $(RTLIBDIR)/hostmot2$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hostmot2-objs)) $(RTLIBDIR)/hm2_7i43$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_7i43-objs)) $(RTLIBDIR)/hm2_7i90$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_7i90-objs)) $(RTLIBDIR)/hm2_pci$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_pci-objs)) +$(RTLIBDIR)/setsserial$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(setsserial-objs)) ifeq ($(BUILD_SYS),user-dso) $(RTLIBDIR)/hm2_eth$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_eth-objs)) endif diff --git a/src/hal/drivers/mesa-hostmot2/setsserial.c b/src/hal/drivers/mesa-hostmot2/setsserial.c index a53d5653ba..f9e6072950 100644 --- a/src/hal/drivers/mesa-hostmot2/setsserial.c +++ b/src/hal/drivers/mesa-hostmot2/setsserial.c @@ -18,7 +18,11 @@ // // The code in this file is based on UFLBP.PAS by Peter C. Wallace. -#include +#include "config_module.h" +#include RTAPI_INC_SLAB_H +#include RTAPI_INC_CTYPE_H +#include RTAPI_INC_STRING_H + #include "rtapi.h" #include "rtapi_app.h" #include "hal.h" @@ -35,8 +39,6 @@ MODULE_LICENSE("GPL"); static char *cmd; RTAPI_MP_STRING(cmd, "smart-serial setting commands"); -char **cmd_list; - hostmot2_t *hm2; hm2_sserial_remote_t *remote; @@ -421,6 +423,7 @@ int sslbp_flash(char *fname){ int rtapi_app_main(void) { int cnt; + char **cmd_list; comp_id = hal_init("setsserial"); hal_ready(comp_id); diff --git a/src/rtapi/userpci/Submakefile b/src/rtapi/userpci/Submakefile index 16d4bd6f05..22c0477164 100644 --- a/src/rtapi/userpci/Submakefile +++ b/src/rtapi/userpci/Submakefile @@ -21,8 +21,12 @@ hostmot2-objs += \ rtapi/userpci/device.o \ rtapi/userpci/firmware.o \ rtapi/userpci/string.o -endif +setsserial-objs += \ + rtapi/userpci/device.o \ + rtapi/userpci/firmware.o \ + rtapi/userpci/string.o +endif clean: userpci-clean userpci-clean: From 8997e1e5e00727feab4706aadddf8a1f71af7226 Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 25 Jun 2018 12:14:19 -0500 Subject: [PATCH 246/516] rt-preempt.c: disable pll correction debug messages @luminize reports this fills up logs when `DEBUG=5`. --- src/rtapi/rt-preempt.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/rtapi/rt-preempt.c b/src/rtapi/rt-preempt.c index 3230a1f114..823ae32642 100644 --- a/src/rtapi/rt-preempt.c +++ b/src/rtapi/rt-preempt.c @@ -494,9 +494,9 @@ int _rtapi_task_pll_set_correction_hook(long value) { if (value < -(task->pll_correction_limit)) value = -(task->pll_correction_limit); task->pll_correction = value; - rtapi_print_msg(RTAPI_MSG_DBG, - "Task %d pll correction set to %ld\n", - task_id, value); + /* rtapi_print_msg(RTAPI_MSG_DBG, */ + /* "Task %d pll correction set to %ld\n", */ + /* task_id, value); */ return 0; } From f508e8f26ab8d00487cdfe4de5676a43fcb42688 Mon Sep 17 00:00:00 2001 From: Mick Date: Fri, 29 Jun 2018 16:09:15 +0100 Subject: [PATCH 247/516] Halcmd ringbuffer options error, does not list all options. Signed-off-by: Mick --- src/hal/utils/halcmd_commands.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hal/utils/halcmd_commands.c b/src/hal/utils/halcmd_commands.c index eee6a4ede5..aa41c267c1 100644 --- a/src/hal/utils/halcmd_commands.c +++ b/src/hal/utils/halcmd_commands.c @@ -3419,7 +3419,7 @@ int do_newring_cmd(char *ring, char *ring_size, char **opt) } } else { - halcmd_error("newring: invalid option '%s' (use one or several of: record stream" + halcmd_error("newring: invalid option '%s' (use one or several of: record stream multi" " rtapi hal rmutex wmutex scratchpad=)\n",s); return -EINVAL; } From 6459255ce6319b5a363534f84e12cc328f956676 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Thu, 5 Jul 2018 09:54:08 +0200 Subject: [PATCH 248/516] hal/limit3: whitespace cleanup --- src/hal/i_components/limit3.icomp | 84 +++++++++++++++---------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/src/hal/i_components/limit3.icomp b/src/hal/i_components/limit3.icomp index fef4ffc420..82d9996292 100644 --- a/src/hal/i_components/limit3.icomp +++ b/src/hal/i_components/limit3.icomp @@ -25,16 +25,16 @@ FUNCTION(_) /* apply first order limit */ lin = in; if ( lin < min_ ) { - lin = min_; + lin = min_; } if ( lin > max_ ) { - lin = max_; + lin = max_; } if(load) { - old_in = old_out = out = lin; - old_v = 0.0; - return 0; + old_in = old_out = out = lin; + old_v = 0.0; + return 0; } /* calculate input derivative */ @@ -43,54 +43,54 @@ FUNCTION(_) /* determine v and out that can be reached in one period */ min_v = old_v - maxa * dt; if ( min_v < -maxv ) { - min_v = -maxv; + min_v = -maxv; } max_v = old_v + maxa * dt; if ( max_v > maxv ) { - max_v = maxv; + max_v = maxv; } min_out = old_out + min_v * dt; max_out = old_out + max_v * dt; if ( ( lin >= min_out ) && ( lin <= max_out ) && ( in_v >= min_v ) && ( in_v <= max_v ) ) { - /* we can follow the command without hitting a limit */ - lout = lin; - old_v = ( lout - old_out ) / dt; + /* we can follow the command without hitting a limit */ + lout = lin; + old_v = ( lout - old_out ) / dt; } else { - /* can't follow commanded path while obeying limits */ - /* determine which way we need to ramp to match v */ - if ( in_v > old_v ) { - ramp_a = maxa; - } else { - ramp_a = -maxa; - } - /* determine how long the match would take */ - match_time = ( in_v - old_v ) / ramp_a; - /* where we will be at the end of the match */ - avg_v = ( in_v + old_v + ramp_a * dt ) * 0.5; - est_out = old_out + avg_v * match_time; - /* calculate the expected command position at that time */ - est_in = old_in + in_v * match_time; - /* calculate position error at that time */ - err = est_out - est_in; - /* calculate change in final position if we ramp in the - opposite direction for one period */ - dv = -2.0 * ramp_a * dt; - dp = dv * match_time; - /* decide what to do */ - if ( rtapi_fabs(err+dp*2.0) < rtapi_fabs(err) ) { - ramp_a = -ramp_a; - } - if ( ramp_a < 0.0 ) { - lout = min_out; - old_v = min_v; - } else { - lout = max_out; - old_v = max_v; - } + /* can't follow commanded path while obeying limits */ + /* determine which way we need to ramp to match v */ + if ( in_v > old_v ) { + ramp_a = maxa; + } else { + ramp_a = -maxa; + } + /* determine how long the match would take */ + match_time = ( in_v - old_v ) / ramp_a; + /* where we will be at the end of the match */ + avg_v = ( in_v + old_v + ramp_a * dt ) * 0.5; + est_out = old_out + avg_v * match_time; + /* calculate the expected command position at that time */ + est_in = old_in + in_v * match_time; + /* calculate position error at that time */ + err = est_out - est_in; + /* calculate change in final position if we ramp in the + opposite direction for one period */ + dv = -2.0 * ramp_a * dt; + dp = dv * match_time; + /* decide what to do */ + if ( rtapi_fabs(err+dp*2.0) < rtapi_fabs(err) ) { + ramp_a = -ramp_a; + } + if ( ramp_a < 0.0 ) { + lout = min_out; + old_v = min_v; + } else { + lout = max_out; + old_v = max_v; + } } old_out = lout; old_in = lin; out = lout; -return 0; + return 0; } From bdf10d80a69a09d4890ff4f2cd09b0de48676303 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Thu, 5 Jul 2018 10:25:54 +0200 Subject: [PATCH 249/516] hal/limit3v2: whitespace cleanup --- src/hal/i_components/limit3v2.icomp | 64 ++++++++++++++--------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/src/hal/i_components/limit3v2.icomp b/src/hal/i_components/limit3v2.icomp index 6cc94bb10b..0f3c6cfd96 100644 --- a/src/hal/i_components/limit3v2.icomp +++ b/src/hal/i_components/limit3v2.icomp @@ -22,75 +22,75 @@ FUNCTION(_) hal_float_t lin, lout, dt, in_v, min_v, max_v, ramp_a, avg_v, err, dv, dp; hal_float_t min_out, max_out, match_time, est_in, est_out; - // apply first order limit + // apply first order limit lin = gf(in); - if ( lin < gf(min_) ) + if ( lin < gf(min_) ) lin = gf(min_); - if ( lin > gf(max_) ) + if ( lin > gf(max_) ) lin = gf(max_); - - if(gb(load)) + + if(gb(load)) { sf(out, old_in = old_out = lin); old_v = 0.0; return 0; } - // calculate input derivative + // calculate input derivative dt = (hal_float_t) period * 0.000000001; in_v = (lin - old_in) / dt; - - // determine v and out that can be reached in one period + + // determine v and out that can be reached in one period min_v = old_v - gf(maxa) * dt; - if ( min_v < -gf(maxv) ) + if ( min_v < -gf(maxv) ) min_v = -gf(maxv); max_v = old_v + gf(maxa) * dt; - if ( max_v > gf(maxv) ) + if ( max_v > gf(maxv) ) max_v = gf(maxv); - + min_out = old_out + min_v * dt; max_out = old_out + max_v * dt; - if ( ( lin >= min_out ) && ( lin <= max_out ) && ( in_v >= min_v ) && ( in_v <= max_v ) ) - { - // we can follow the command without hitting a limit + if ( ( lin >= min_out ) && ( lin <= max_out ) && ( in_v >= min_v ) && ( in_v <= max_v ) ) + { + // we can follow the command without hitting a limit lout = lin; old_v = ( lout - old_out ) / dt; - } - else - { - // can't follow commanded path while obeying limits - // determine which way we need to ramp to match v - if ( in_v > old_v ) + } + else + { + // can't follow commanded path while obeying limits + // determine which way we need to ramp to match v + if ( in_v > old_v ) ramp_a = gf(maxa); - else + else ramp_a = -gf(maxa); - // determine how long the match would take + // determine how long the match would take match_time = ( in_v - old_v ) / ramp_a; - // where we will be at the end of the match + // where we will be at the end of the match avg_v = ( in_v + old_v + ramp_a * dt ) * 0.5; est_out = old_out + avg_v * match_time; - // calculate the expected command position at that time + // calculate the expected command position at that time est_in = old_in + in_v * match_time; - // calculate position error at that time + // calculate position error at that time err = est_out - est_in; // calculate change in final position if we ramp in the - //opposite direction for one period + //opposite direction for one period dv = -2.0 * ramp_a * dt; dp = dv * match_time; - // decide what to do + // decide what to do if ( rtapi_fabs(err+dp*2.0) < rtapi_fabs(err) ) ramp_a = -ramp_a; - if ( ramp_a < 0.0 ) - { + if ( ramp_a < 0.0 ) + { lout = min_out; old_v = min_v; - } + } else - { + { lout = max_out; old_v = max_v; - } } + } old_out = lout; old_in = lin; sf(out, lout); From 9287beaf038d2979795882dacf4c952e979a23dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Thu, 5 Jul 2018 10:27:14 +0200 Subject: [PATCH 250/516] hal/limit3: prevent output creeping --- src/hal/i_components/limit3.icomp | 4 +--- src/hal/i_components/limit3v2.icomp | 6 ++---- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/hal/i_components/limit3.icomp b/src/hal/i_components/limit3.icomp index 82d9996292..d41394a0c5 100644 --- a/src/hal/i_components/limit3.icomp +++ b/src/hal/i_components/limit3.icomp @@ -54,7 +54,6 @@ FUNCTION(_) if ( ( lin >= min_out ) && ( lin <= max_out ) && ( in_v >= min_v ) && ( in_v <= max_v ) ) { /* we can follow the command without hitting a limit */ lout = lin; - old_v = ( lout - old_out ) / dt; } else { /* can't follow commanded path while obeying limits */ /* determine which way we need to ramp to match v */ @@ -82,12 +81,11 @@ FUNCTION(_) } if ( ramp_a < 0.0 ) { lout = min_out; - old_v = min_v; } else { lout = max_out; - old_v = max_v; } } + old_v = ( lout - old_out ) / dt; old_out = lout; old_in = lin; out = lout; diff --git a/src/hal/i_components/limit3v2.icomp b/src/hal/i_components/limit3v2.icomp index 0f3c6cfd96..bf2f0deaaa 100644 --- a/src/hal/i_components/limit3v2.icomp +++ b/src/hal/i_components/limit3v2.icomp @@ -54,7 +54,6 @@ FUNCTION(_) { // we can follow the command without hitting a limit lout = lin; - old_v = ( lout - old_out ) / dt; } else { @@ -83,17 +82,16 @@ FUNCTION(_) if ( ramp_a < 0.0 ) { lout = min_out; - old_v = min_v; } else { lout = max_out; - old_v = max_v; } } + old_v = ( lout - old_out ) / dt; old_out = lout; old_in = lin; sf(out, lout); -return 0; + return 0; } From 8d4f112b1167aaf3de7c0ffbf202ef4c5a6b92b4 Mon Sep 17 00:00:00 2001 From: Ga-Ol-St Date: Thu, 12 Jul 2018 00:06:34 +0300 Subject: [PATCH 251/516] Implement Joint angle offsets and Radius offsets for lineardeltakins --- src/emc/kinematics/lineardeltakins-common.h | 43 ++++++++++++++++----- src/emc/kinematics/lineardeltakins.c | 26 +++++++++++-- src/emc/kinematics/lineardeltakins.cc | 4 +- 3 files changed, 59 insertions(+), 14 deletions(-) diff --git a/src/emc/kinematics/lineardeltakins-common.h b/src/emc/kinematics/lineardeltakins-common.h index d3093538e3..75494ede8e 100644 --- a/src/emc/kinematics/lineardeltakins-common.h +++ b/src/emc/kinematics/lineardeltakins-common.h @@ -35,19 +35,24 @@ #include "emcpos.h" #include "rtapi_math.h" -static double L, R, J0off, J1off, J2off; +static double L, R, J0off, J1off, J2off, R1off, R2off, A1off, A2off; static double Ax, Ay, Bx, By, Cx, Cy, L2; #define SQ3 (rtapi_sqrt(3)) +#define ANGLE1 (210) +#define ANGLE2 (330) +#define ANGLE0 (90) +#define RADIAN (M_PI/180) + #define SIN_60 (SQ3/2) #define COS_60 (.5) static double sq(double x) { return x*x; } -static void set_geometry(double r_, double l_, double j0off_, double j1off_, double j2off_) +static void set_geometry(double r_, double l_, double j0off_, double j1off_, double j2off_, double r1off_, double r2off_, double a1off_, double a2off_) { - if((L == l_) && (R == r_) && (J0off == j0off_) && (J1off == j1off_) && (J2off == j2off_)) return; + if((L == l_) && (R == r_) && (J0off == j0off_) && (J1off == j1off_) && (J2off == j2off_) && (R1off == r1off_) && (R2off == r2off_) && (A1off == a1off_)&& (A2off == a2off_)) return; L = l_; R = r_; @@ -58,14 +63,21 @@ static void set_geometry(double r_, double l_, double j0off_, double j1off_, dou J1off = j1off_; J2off = j2off_; - Ax = 0.0; - Ay = R; + R1off = r1off_; + R2off = r2off_; + + A1off = a1off_; + A2off = a2off_; + + + Ax = rtapi_cos(RADIAN * (ANGLE0)) * (R ); // at angle 90 cos will give 0 + Ay = rtapi_sin(RADIAN * (ANGLE0)) * (R ); // at angle 90 sin will give 1 - Bx = -SIN_60 * R; - By = -COS_60 * R; + Bx = rtapi_cos(RADIAN * (ANGLE1 + A1off)) * (R + R1off); + By = rtapi_sin(RADIAN * (ANGLE1 + A1off)) * (R + R1off); - Cx = SIN_60 * R; - Cy = -COS_60 * R; + Cx = rtapi_cos(RADIAN * (ANGLE2 + A2off)) * (R + R2off); + Cy = rtapi_sin(RADIAN * (ANGLE2 + A2off)) * (R + R2off); } static int kinematics_inverse(const EmcPose *pos, double *joints) @@ -149,6 +161,19 @@ static int kinematics_forward(const double *joints, EmcPose *pos) // Horizontal offset of the universal joints on the carriages. #define JOINT_2_OFFSET 0.00 // mm +// Radius offset of on JOINT 1 +#define JOINT_1_RADIUS_OFFSET 0.00 // mm + +// Radius offset of on JOINT 2 +#define JOINT_2_RADIUS_OFFSET 0.00 // mm + +// Angle offset of on JOINT 1 +#define JOINT_1_ANGLE_OFFSET 0.00 // degree + +// Angle offset of on JOINT 1 +#define JOINT_2_ANGLE_OFFSET 0.00 // degree + + // Effective horizontal distance bridged by diagonal push rods. #define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET-DELTA_EFFECTOR_OFFSET-DELTA_CARRIAGE_OFFSET) #endif diff --git a/src/emc/kinematics/lineardeltakins.c b/src/emc/kinematics/lineardeltakins.c index 9969e1c4ef..682f0177bc 100644 --- a/src/emc/kinematics/lineardeltakins.c +++ b/src/emc/kinematics/lineardeltakins.c @@ -24,21 +24,21 @@ struct haldata { - hal_float_t *r, *l, *j0off, *j1off, *j2off; + hal_float_t *r, *l, *j0off, *j1off, *j2off, *r1off, *r2off, *a1off, *a2off; } *haldata; int kinematicsForward(const double * joints, EmcPose * pos, const KINEMATICS_FORWARD_FLAGS * fflags, KINEMATICS_INVERSE_FLAGS * iflags) { - set_geometry(*haldata->r, *haldata->l,*haldata ->j0off,*haldata ->j1off,*haldata ->j2off); + set_geometry(*haldata->r, *haldata->l,*haldata ->j0off,*haldata ->j1off,*haldata ->j2off,*haldata ->r1off,*haldata ->r2off,*haldata ->a1off,*haldata ->a2off); return kinematics_forward(joints, pos); } int kinematicsInverse(const EmcPose *pos, double *joints, const KINEMATICS_INVERSE_FLAGS *iflags, KINEMATICS_FORWARD_FLAGS *fflags) { - set_geometry(*haldata->r, *haldata->l,*haldata ->j0off,*haldata ->j1off,*haldata ->j2off); + set_geometry(*haldata->r, *haldata->l,*haldata ->j0off,*haldata ->j1off,*haldata ->j2off,*haldata ->r1off,*haldata ->r2off,*haldata ->a1off,*haldata ->a2off); return kinematics_inverse(pos, joints); } @@ -94,6 +94,22 @@ int rtapi_app_main(void) retval = hal_pin_float_newf(HAL_IN, &haldata->j2off, comp_id, "lineardeltakins.J2off"); + if(retval == 0) + retval = hal_pin_float_newf(HAL_IN, &haldata->r1off, comp_id, + "lineardeltakins.R1off"); + + if(retval == 0) + retval = hal_pin_float_newf(HAL_IN, &haldata->r2off, comp_id, + "lineardeltakins.R2off"); + + if(retval == 0) + retval = hal_pin_float_newf(HAL_IN, &haldata->a1off, comp_id, + "lineardeltakins.A1off"); + + if(retval == 0) + retval = hal_pin_float_newf(HAL_IN, &haldata->a2off, comp_id, + "lineardeltakins.A2off"); + if(retval == 0) { *haldata->r = DELTA_RADIUS; @@ -101,6 +117,10 @@ int rtapi_app_main(void) *haldata->j0off = JOINT_0_OFFSET; *haldata->j1off = JOINT_1_OFFSET; *haldata->j2off = JOINT_2_OFFSET; + *haldata->r1off = JOINT_1_RADIUS_OFFSET; + *haldata->r2off = JOINT_2_RADIUS_OFFSET; + *haldata->a1off = JOINT_1_ANGLE_OFFSET; + *haldata->a2off = JOINT_2_ANGLE_OFFSET; } if(retval == 0) diff --git a/src/emc/kinematics/lineardeltakins.cc b/src/emc/kinematics/lineardeltakins.cc index f56f689f95..d351809ae3 100644 --- a/src/emc/kinematics/lineardeltakins.cc +++ b/src/emc/kinematics/lineardeltakins.cc @@ -41,12 +41,12 @@ static object inverse(double x, double y, double z) static object get_geometry() { - return make_tuple(R, L ,J0off, J1off, J2off); + return make_tuple(R, L ,J0off, J1off, J2off, R1off, R2off, A1off, A2off); } BOOST_PYTHON_MODULE(lineardeltakins) { - set_geometry(DELTA_RADIUS, DELTA_DIAGONAL_ROD,JOINT_0_OFFSET, JOINT_1_OFFSET, JOINT_2_OFFSET); + set_geometry(DELTA_RADIUS, DELTA_DIAGONAL_ROD,JOINT_0_OFFSET, JOINT_1_OFFSET, JOINT_2_OFFSET, JOINT_1_RADIUS_OFFSET, JOINT_2_RADIUS_OFFSET, JOINT_1_ANGLE_OFFSET, JOINT_2_ANGLE_OFFSET); def("set_geometry", set_geometry); def("get_geometry", get_geometry); def("forward", forward); From f59143cce34cdac3bd75aae4b95b8e43a6540a61 Mon Sep 17 00:00:00 2001 From: Ga-Ol-St Date: Thu, 12 Jul 2018 00:36:13 +0300 Subject: [PATCH 252/516] Adding my CRAMPS Python Configuration for REMOTE MachineClient access --- .../Rostock-4DOF-CRAMPS/CRAMPS.3DOF.ini | 101 ++++ .../Rostock-4DOF-CRAMPS/CRAMPS.4AXIS.inc | 45 ++ .../Rostock-4DOF-CRAMPS/CRAMPS.4DOF.ini | 102 ++++ .../Rostock-4DOF-CRAMPS/CRAMPS.AXIS.inc | 144 ++++++ .../Rostock-4DOF-CRAMPS/CRAMPS.OTHER.inc | 180 +++++++ .../BeagleBone/Rostock-4DOF-CRAMPS/CRAMPS.ini | 466 ++++++++++++++++++ .../BeagleBone/Rostock-4DOF-CRAMPS/README.md | 12 + .../BeagleBone/Rostock-4DOF-CRAMPS/cramps.py | 126 +++++ .../Rostock-4DOF-CRAMPS/cramps2_cape.bbio | 54 ++ .../BeagleBone/Rostock-4DOF-CRAMPS/delta.py | 33 ++ .../Rostock-4DOF-CRAMPS/launcher.ini | 9 + .../Rostock-4DOF-CRAMPS/rostock-3dof.py | 96 ++++ .../Rostock-4DOF-CRAMPS/rostock-4dof.py | 98 ++++ .../ARM/BeagleBone/Rostock-4DOF-CRAMPS/run.py | 29 ++ .../Rostock-4DOF-CRAMPS/storage.ini | 13 + .../BeagleBone/Rostock-4DOF-CRAMPS/tool.tbl | 5 + .../BeagleBone/Rostock-4DOF-CRAMPS/video.ini | 7 + 17 files changed, 1520 insertions(+) create mode 100644 configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/CRAMPS.3DOF.ini create mode 100644 configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/CRAMPS.4AXIS.inc create mode 100644 configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/CRAMPS.4DOF.ini create mode 100644 configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/CRAMPS.AXIS.inc create mode 100644 configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/CRAMPS.OTHER.inc create mode 100644 configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/CRAMPS.ini create mode 100644 configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/README.md create mode 100644 configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/cramps.py create mode 100644 configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/cramps2_cape.bbio create mode 100644 configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/delta.py create mode 100644 configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/launcher.ini create mode 100644 configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/rostock-3dof.py create mode 100644 configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/rostock-4dof.py create mode 100644 configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/run.py create mode 100644 configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/storage.ini create mode 100644 configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/tool.tbl create mode 100644 configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/video.ini diff --git a/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/CRAMPS.3DOF.ini b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/CRAMPS.3DOF.ini new file mode 100644 index 0000000000..ab7e0a416a --- /dev/null +++ b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/CRAMPS.3DOF.ini @@ -0,0 +1,101 @@ +#INCLUDE CRAMPS.AXIS.inc +#INCLUDE CRAMPS.OTHER.inc + +[EMC] + +# Name of machine, for use with display, etc. +MACHINE = Rostock CRAMPS + +# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others +#DEBUG = 0x00000003 +DEBUG = 0x00000007 +#DEBUG = 0 + + +[DISPLAY] + +# Name of display program, e.g., tkemc +DISPLAY = mkwrapper +#DISPLAY = axis +GEOMETRY = XYZ +;PYVCP = 3D.Temps.panel.xml + + +# Cycle time, in seconds, that display will sleep between polls +CYCLE_TIME = 0.200 + +# Path to help file +HELP_FILE = tklinucnc.txt + +# Initial display setting for position, RELATIVE or MACHINE +POSITION_OFFSET = RELATIVE + +# Initial display setting for position, COMMANDED or ACTUAL +POSITION_FEEDBACK = ACTUAL + +# Highest value that will be allowed for feed override, 1.0 = 100% +MAX_FEED_OVERRIDE = 1.5 + +# Display unit for velocity values +TIME_UNITS = s + +# Prefix to be used +PROGRAM_PREFIX = /home/machinekit/machinekit/nc_files/ + +# Introductory graphic +INTRO_GRAPHIC = +INTRO_TIME = 0 + +# Increments for the JOG section +INCREMENTS = 100 10 1 0.1 0.01 + +OPEN_FILE = + +MIN_VELOCITY = 1.0 + +[HAL] + +# The run script first uses halcmd to execute any HALFILE +# files, and then to execute any individual HALCMD commands. + +# list of hal config files to run through halcmd +# files are executed in the order in which they appear + +HALFILE = rostock-3dof.py + +# list of halcmd commands to execute +# commands are executed in the order in which they appear +#HALCMD = save neta + +#POSTGUI_HALFILE = TCT3D.postgui.hal + + +[TRAJ] + +ARC_BLEND_ENABLE = 1 +ARC_BLEND_FALLBACK_ENABLE = 0 +ARC_BLEND_OPTIMIZATION_DEPTH = 70 +ARC_BLEND_GAP_CYCLES = 4 +ARC_BLEND_RAMP_FREQ = 20 + +AXES = 4 +COORDINATES = X Y Z A +MAX_ANGULAR_VELOCITY = 45.00 +DEFAULT_ANGULAR_VELOCITY = 4.50 +LINEAR_UNITS = mm +ANGULAR_UNITS = degree +CYCLE_TIME = 0.010 +DEFAULT_LINEAR_VELOCITY = 20.0 +MAX_LINEAR_VELOCITY = 250.00 +DEFAULT_VELOCITY = 20.00 +MAX_VELOCITY = 250.0 +TIME_UNITS = s +#NO_FORCE_HOMING = 1 + + +[FDM] +VELOCITY_EXTRUSION_ENABLE = 1 +NUM_EXTRUDERS = 1 +NUM_FANS = 2 +NUM_LIGHTS = 0 + diff --git a/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/CRAMPS.4AXIS.inc b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/CRAMPS.4AXIS.inc new file mode 100644 index 0000000000..5d7c16e620 --- /dev/null +++ b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/CRAMPS.4AXIS.inc @@ -0,0 +1,45 @@ +[AXIS_3] +#JOIN 4 +#RotationMotor +#CRAMPS E1 + + +TYPE = ANGULAR +MAX_VELOCITY = 360 +MAX_ACCELERATION = 3000.0 +# Set Stepgen max 20% higher than the axis +STEPGEN_MAX_VEL = 380.0 +STEPGEN_MAX_ACC = 3750.0 + +BACKLASH = 0.000 + +# BDH: set for the RichRap Rostock extruder, +# a modified Greg's Wade. Uses Printrbot injection-molded gears, 16x MS. +#SCALE = 8.8888 +SCALE = 8.8888 +WRAPPED_ROTARY=1 +MIN_LIMIT = -999999999.0 +MAX_LIMIT = 999999999.0 + +FERROR = 1.0 +MIN_FERROR = .25 + +HOME = 0.000 +HOME_OFFSET = 0.00 +#HOME_IGNORE_LIMITS = YES +#HOME_USE_INDEX = YES +HOME_SEQUENCE = 0 + +# Set to zero if you don't have physical home/limit switches +# Set to the desired homing and latch velocity if you have switches +# See: http://www.linuxcnc.org/docs/2.5/html/config/ini_homing.html +#HOME_SEARCH_VEL = 0.0 +#HOME_LATCH_VEL = 0.0 + +# these are in nanoseconds for Allegro A4988 +DIRSETUP = 200 +DIRHOLD = 200 +STEPLEN = 1000 +STEPSPACE = 1000 + + diff --git a/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/CRAMPS.4DOF.ini b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/CRAMPS.4DOF.ini new file mode 100644 index 0000000000..ac770ec522 --- /dev/null +++ b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/CRAMPS.4DOF.ini @@ -0,0 +1,102 @@ +#INCLUDE CRAMPS.AXIS.inc +#INCLUDE CRAMPS.4AXIS.inc +#INCLUDE CRAMPS.OTHER.inc + +[EMC] + +# Name of machine, for use with display, etc. +MACHINE = Rostock 4DOF-CRAMPS + +# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others +#DEBUG = 0x00000003 +DEBUG = 0x00000007 +#DEBUG = 0 + + +[DISPLAY] + +# Name of display program, e.g., tkemc +DISPLAY = mkwrapper +#DISPLAY = axis +GEOMETRY = XYZA +;PYVCP = 3D.Temps.panel.xml + + +# Cycle time, in seconds, that display will sleep between polls +CYCLE_TIME = 0.200 + +# Path to help file +HELP_FILE = tklinucnc.txt + +# Initial display setting for position, RELATIVE or MACHINE +POSITION_OFFSET = RELATIVE + +# Initial display setting for position, COMMANDED or ACTUAL +POSITION_FEEDBACK = ACTUAL + +# Highest value that will be allowed for feed override, 1.0 = 100% +MAX_FEED_OVERRIDE = 1.5 + +# Display unit for velocity values +TIME_UNITS = s + +# Prefix to be used +PROGRAM_PREFIX = /home/machinekit/machinekit/nc_files/ + +# Introductory graphic +INTRO_GRAPHIC = +INTRO_TIME = 0 + +# Increments for the JOG section +INCREMENTS = 100 10 1 0.1 0.01 + +OPEN_FILE = + +MIN_VELOCITY = 1.0 + +[HAL] + +# The run script first uses halcmd to execute any HALFILE +# files, and then to execute any individual HALCMD commands. + +# list of hal config files to run through halcmd +# files are executed in the order in which they appear + +HALFILE = rostock-4dof.py + +# list of halcmd commands to execute +# commands are executed in the order in which they appear +#HALCMD = save neta + +#POSTGUI_HALFILE = TCT3D.postgui.hal + + +[TRAJ] + +ARC_BLEND_ENABLE = 1 +ARC_BLEND_FALLBACK_ENABLE = 0 +ARC_BLEND_OPTIMIZATION_DEPTH = 70 +ARC_BLEND_GAP_CYCLES = 4 +ARC_BLEND_RAMP_FREQ = 20 + +AXES = 4 +COORDINATES = X Y Z A +MAX_ANGULAR_VELOCITY = 45.00 +DEFAULT_ANGULAR_VELOCITY = 4.50 +LINEAR_UNITS = mm +ANGULAR_UNITS = degree +CYCLE_TIME = 0.010 +DEFAULT_LINEAR_VELOCITY = 20.0 +MAX_LINEAR_VELOCITY = 250.00 +DEFAULT_VELOCITY = 20.00 +MAX_VELOCITY = 250.0 +TIME_UNITS = s +#NO_FORCE_HOMING = 1 + + +[FDM] +VELOCITY_EXTRUSION_ENABLE = 1 +NUM_EXTRUDERS = 1 +NUM_FANS = 2 +NUM_LIGHTS = 0 + diff --git a/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/CRAMPS.AXIS.inc b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/CRAMPS.AXIS.inc new file mode 100644 index 0000000000..5dd6aefbdb --- /dev/null +++ b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/CRAMPS.AXIS.inc @@ -0,0 +1,144 @@ +[AXIS_0] + +# +# Step timing is 40 us steplen + 40 us stepspace +# That gives 80 us step period = 12.5 KHz step freq +# +# Bah, even software stepping can handle that, hm2 doesnt buy you much with +# such slow steppers. +# +# Scale is 200 steps/rev * 5 revs/inch = 1000 steps/inch +# +# This gives a maxvel of 12.5/1 = 12.5 ips +# + + +TYPE = LINEAR +MAX_VELOCITY = 150.0 +MAX_ACCELERATION = 1500.0 +# Set Stepgen max 20% higher than the axis +STEPGEN_MAX_VEL = 200.0 +#STEPGEN_MIN_VEL = 0.001 +STEPGEN_MAX_ACC = 2000.0 + +BACKLASH = 0.000 + +# scale is 200 steps/rev * 5 revs/inch +# SCALE = 80.4 -- Artifex +SCALE = -100.0 + +MIN_LIMIT = -100.0 +MAX_LIMIT = 700.0 + +FERROR = 0.1 +#MIN_FERROR = 0.25 +MIN_FERROR = 0.1 + +HOME = 600.000 +HOME_OFFSET = 633.70 +#HOME_IGNORE_LIMITS = YES +HOME_USE_INDEX = NO +HOME_SEQUENCE = 0 + +# Set to zero if you don't have physical home/limit switches +# Set to the desired homing and latch velocity if you have switches +# See: http://www.linuxcnc.org/docs/2.5/html/config/ini_homing.html +HOME_SEARCH_VEL = 50.0 +HOME_LATCH_VEL = 20.0 + +# these are in nanoseconds +DIRSETUP = 200 +DIRHOLD = 200 +STEPLEN = 1000 +STEPSPACE = 1000 + +# Jog increments +#INCREMENTS = 1 10 + + +[AXIS_1] + +TYPE = LINEAR +MAX_VELOCITY = 150.0 +MAX_ACCELERATION = 1500.0 +# Set Stepgen max 20% higher than the axis +STEPGEN_MAX_VEL = 200.0 +#STEPGEN_MIN_VEL = 0.001 +STEPGEN_MAX_ACC = 2000.0 + +BACKLASH = 0.000 + +SCALE = -100 + +MIN_LIMIT = -100.0 +MAX_LIMIT = 700.0 + +FERROR = 0.1 +#MIN_FERROR = 0.25 +MIN_FERROR = 0.1 + +HOME = 600.000 +HOME_OFFSET = 633.70 +#HOME_IGNORE_LIMITS = YES +HOME_USE_INDEX = NO +HOME_SEQUENCE = 0 + +# Set to zero if you don't have physical home/limit switches +# Set to the desired homing and latch velocity if you have switches +# See: http://www.linuxcnc.org/docs/2.5/html/config/ini_homing.html +HOME_SEARCH_VEL = 50.0 +HOME_LATCH_VEL = 20.0 + +# these are in nanoseconds +DIRSETUP = 200 +DIRHOLD = 200 +STEPLEN = 1000 +STEPSPACE = 1000 + +# Jog increments +#INCREMENTS = 1 10 + + +[AXIS_2] + +TYPE = LINEAR +MAX_VELOCITY = 150.0 +MAX_ACCELERATION = 1500.0 +# Set Stepgen max 20% higher than the axis +STEPGEN_MAX_VEL = 200 +#STEPGEN_MIN_VEL = 0.001 +STEPGEN_MAX_ACC = 2000.0 + +BACKLASH = 0.000 + +#SCALE = -1542.036 -- Artifex +SCALE = -100.0 + +MIN_LIMIT = -100.0 +MAX_LIMIT = 700.0 + +FERROR = 0.1 +MIN_FERROR = 0.1 + +HOME = 600.000 +HOME_OFFSET = 633.70 +#HOME_IGNORE_LIMITS = YES +HOME_USE_INDEX = NO +HOME_SEQUENCE = 0 + +# Set to zero if you don't have physical home/limit switches +# Set to the desired homing and latch velocity if you have switches +# See: http://www.linuxcnc.org/docs/2.5/html/config/ini_homing.html +HOME_SEARCH_VEL = 50.0 +HOME_LATCH_VEL = 20.0 + +# these are in nanoseconds +DIRSETUP = 200 +DIRHOLD = 200 +STEPLEN = 1000 +STEPSPACE = 1000 + +# Jog increments +#INCREMENTS = 0.01 0.1 1 + + diff --git a/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/CRAMPS.OTHER.inc b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/CRAMPS.OTHER.inc new file mode 100644 index 0000000000..53be09342e --- /dev/null +++ b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/CRAMPS.OTHER.inc @@ -0,0 +1,180 @@ +[PRUCONF] +DRIVER=hal_pru_generic +PRUBIN=xenomai/pru_generic.bin + +[MACHINE] + +# Machine configuration for delta printer + +DELTA_R = 137.38 + +CF_ROD = 343 +JOINT_1_ANGLE_OFFSET = 0.36 +JOINT_2_ANGLE_OFFSET = -0.09 +JOINT_0_OFFSET = -0.06 +JOINT_1_OFFSET = 0 +JOINT_2_OFFSET = -0.15 + +[FILTER] +PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image +PROGRAM_EXTENSION = .py Python Script +PROGRAM_EXTENSION = .gcode RepRap Flavour GCode + +png = image-to-gcode +gif = image-to-gcode +jpg = image-to-gcode +py = python +gcode = gcode-to-ngc + +[TASK] + +# Name of task controller program, e.g., milltask +TASK = milltask + +# Cycle time, in seconds, that task controller will sleep between polls +CYCLE_TIME = 0.010 + + +[RS274NGC] + +# File containing interpreter variables +PARAMETER_FILE = pru-stepper.var + +# subroutine path for the custom FDM printing .ngc files used for remapping +# use directory in config path until more suitable location. this w.r.t the +# fact that not every machine will have an extruder and/or fan +SUBROUTINE_PATH = /home/machinekit/dev_mk/machinekit/nc_files/remap-subroutines/fdm +#SUBROUTINE_PATH = subroutines + +# remapping Machinekit FDM GCodes +REMAP=G22 modalgroup=1 ngc=g22 +REMAP=G23 modalgroup=1 ngc=g23 +REMAP=G28 modalgroup=1 argspec=xyza ngc=g28 +REMAP=G29 modalgroup=1 ngc=g29 +REMAP=G29.1 modalgroup=1 argspec=xyz ngc=g29_1 +REMAP=G29.2 modalgroup=1 argspec=xyz ngc=g29_2 +REMAP=G30 modalgroup=1 argspec=pxy ngc=g30 +#REMAP=M83 modalgroup=10 ngc= +REMAP=M104 modalgroup=10 argspec=iPt ngc=m104 +REMAP=M106 modalgroup=10 argspec=iPt ngc=m106 +REMAP=M107 modalgroup=10 argspec=it ngc=m107 +REMAP=M109 modalgroup=10 argspec=tP ngc=m109 +REMAP=M140 modalgroup=10 argspec=iP ngc=m140 +REMAP=M141 modalgroup=10 argspec=iP ngc=m141 +REMAP=M190 modalgroup=10 argspec=P ngc=m190 +REMAP=M191 modalgroup=10 argspec=P ngc=m191 +REMAP=M200 modalgroup=10 argspec=D ngc=m200 +REMAP=M207 modalgroup=10 argspec=PQ ngc=m207 +REMAP=M221 modalgroup=10 argspec=P ngc=m221 +REMAP=M226 modalgroup=10 ngc=m226 +REMAP=M280 modalgroup=10 argspec=itP ngc=m280 +REMAP=M300 modalgroup=10 argspec=iqP ngc=m300 +REMAP=M400 modalgroup=10 ngc=m400 +REMAP=M420 modalgroup=10 argspec=itredp ngc=m420 +REMAP=M700 modalgroup=10 argspec=iP ngc=m700 +REMAP=M701 modalgroup=10 argspec=iP ngc=m701 +REMAP=M702 modalgroup=10 argspec=iP ngc=m702 +REMAP=M710 modalgroup=10 argspec=epq ngc=m710 + +# enable ini parameter passing +FEATURES = 4 + + +[EMCMOT] + +EMCMOT = motmod + +# Timeout for comm to emcmot, in seconds +COMM_TIMEOUT = 1.0 + +# Interval between tries to emcmot, in seconds +COMM_WAIT = 0.010 + +# Servo task period, in nanoseconds +SERVO_PERIOD = 1000000 + + +[EXTRUDER_0] +PID_PGAIN = 0.3 +PID_IGAIN = 0.00001 +PID_DGAIN = 0.9375 +PID_MAXERRORI = 1.0 +PID_BIAS = 0.5 +PWM_MAX = 1.0 +TEMP_RANGE_POS_ERROR = 1.0 +TEMP_RANGE_NEG_ERROR = -1.0 +TEMP_RANGE_LOWPASSGAIN = 0.0008 +TEMP_LIMIT_MIN = 0.0 +TEMP_LIMIT_MAX = 300.0 +TEMP_STANDBY = 200.0 +THERMISTOR = epcos_B57560G1104 + +RETRACT_LEN = 4.2 +RETRACT_VEL = 40.0 + +FILAMENT_DIA = 1.75 +EXTRUDE_SCALE = 1.00 + +FAN_BIAS = 0.0 + +MAX_VELOCITY = 32.0 +MAX_ACCELERATION = 3000.0 +# Set Stepgen max 20% higher than the axis +STEPGEN_MAX_VEL = 37.0 +STEPGEN_MIN_VEL = 0.001 +STEPGEN_MAX_ACC = 3600.0 + +#SCALE = -486.15 -- Artifex +#SCALE = 495.0 -- Bulldog XL +#SCALE = -107.0 -- Bulldog Lite Original +#SCALE = -90.0 +#SCALE = 744.530002058 +SCALE = -151.485 + +# these are in nanoseconds +DIRSETUP = 200 +DIRHOLD = 200 +STEPLEN = 1000 +STEPSPACE = 1000 + + +[HBP] +PID_PGAIN = 1.0 +PID_IGAIN = 0.0 +PID_DGAIN = 0.00 +PID_MAXERRORI = 1.0 +PID_BIAS = 0.5 +PWM_MAX = 1.0 +TEMP_RANGE_POS_ERROR = 10.0 +TEMP_RANGE_NEG_ERROR = -2.0 +TEMP_LIMIT_MIN = 0.0 +TEMP_LIMIT_MAX = 150.0 +TEMP_STANDBY = 50.0 +THERMISTOR = epcos_B57560G1104 + + +[PROBE] +COUNT = 0 +SEARCH_VEL = 10.0 +TOOL_NR = 100 +START_Z = 0.0 +END_Z = 1.0 +HBP_TEMP = 50.0 + + +[P0] +X = 0.0 +Y = 0.0 + + +[EMCIO] + +# Name of IO controller program, e.g., io +EMCIO = io + +# cycle time, in seconds +CYCLE_TIME = 0.100 + +# tool table file +TOOL_TABLE = tool.tbl + diff --git a/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/CRAMPS.ini b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/CRAMPS.ini new file mode 100644 index 0000000000..63444095e5 --- /dev/null +++ b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/CRAMPS.ini @@ -0,0 +1,466 @@ +[PRUCONF] +DRIVER=hal_pru_generic +PRUBIN=xenomai/pru_generic.bin + +[EMC] + +# Name of machine, for use with display, etc. +MACHINE = Rostock 4DOF-CRAMPS + +# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others +#DEBUG = 0x00000003 +DEBUG = 0x00000007 +#DEBUG = 0 + + +[MACHINE] + +# Machine configuration for delta printer + +DELTA_R = 137.47 + +CF_ROD = 343 +JOINT_1_ANGLE_OFFSET = 0.71 +JOINT_2_ANGLE_OFFSET = -0.01 +JOINT_0_OFFSET = -0.03 +JOINT_1_OFFSET = -0.14 +JOINT_2_OFFSET = 0.39 + +[DISPLAY] + +# Name of display program, e.g., tkemc +DISPLAY = mkwrapper +#DISPLAY = axis +GEOMETRY = XYZA +;PYVCP = 3D.Temps.panel.xml + + +# Cycle time, in seconds, that display will sleep between polls +CYCLE_TIME = 0.200 + +# Path to help file +HELP_FILE = tklinucnc.txt + +# Initial display setting for position, RELATIVE or MACHINE +POSITION_OFFSET = RELATIVE + +# Initial display setting for position, COMMANDED or ACTUAL +POSITION_FEEDBACK = ACTUAL + +# Highest value that will be allowed for feed override, 1.0 = 100% +MAX_FEED_OVERRIDE = 1.5 + +# Display unit for velocity values +TIME_UNITS = s + +# Prefix to be used +PROGRAM_PREFIX = /home/machinekit/machinekit/nc_files/ + +# Introductory graphic +INTRO_GRAPHIC = +INTRO_TIME = 0 + +# Increments for the JOG section +INCREMENTS = 100 10 1 0.1 0.01 + +OPEN_FILE = + +MIN_VELOCITY = 1.0 + + +[FILTER] +PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image +PROGRAM_EXTENSION = .py Python Script +PROGRAM_EXTENSION = .gcode RepRap Flavour GCode + +png = image-to-gcode +gif = image-to-gcode +jpg = image-to-gcode +py = python +gcode = gcode-to-ngc + +[TASK] + +# Name of task controller program, e.g., milltask +TASK = milltask + +# Cycle time, in seconds, that task controller will sleep between polls +CYCLE_TIME = 0.010 + + +[RS274NGC] + +# File containing interpreter variables +PARAMETER_FILE = pru-stepper.var + +# subroutine path for the custom FDM printing .ngc files used for remapping +# use directory in config path until more suitable location. this w.r.t the +# fact that not every machine will have an extruder and/or fan +SUBROUTINE_PATH = /home/machinekit/dev_mk/machinekit/nc_files/remap-subroutines/fdm +#SUBROUTINE_PATH = subroutines + +# remapping Machinekit FDM GCodes +REMAP=G22 modalgroup=1 ngc=g22 +REMAP=G23 modalgroup=1 ngc=g23 +REMAP=G28 modalgroup=1 argspec=xyza ngc=g28 +REMAP=G29 modalgroup=1 ngc=g29 +REMAP=G29.1 modalgroup=1 argspec=xyz ngc=g29_1 +REMAP=G29.2 modalgroup=1 argspec=xyz ngc=g29_2 +REMAP=G30 modalgroup=1 argspec=pxy ngc=g30 +REMAP=M104 modalgroup=10 argspec=iPt ngc=m104 +REMAP=M106 modalgroup=10 argspec=iPt ngc=m106 +REMAP=M107 modalgroup=10 argspec=it ngc=m107 +REMAP=M109 modalgroup=10 argspec=tP ngc=m109 +REMAP=M140 modalgroup=10 argspec=iP ngc=m140 +REMAP=M141 modalgroup=10 argspec=iP ngc=m141 +REMAP=M190 modalgroup=10 argspec=P ngc=m190 +REMAP=M191 modalgroup=10 argspec=P ngc=m191 +REMAP=M200 modalgroup=10 argspec=D ngc=m200 +REMAP=M207 modalgroup=10 argspec=PQ ngc=m207 +REMAP=M221 modalgroup=10 argspec=P ngc=m221 +REMAP=M226 modalgroup=10 ngc=m226 +REMAP=M280 modalgroup=10 argspec=itP ngc=m280 +REMAP=M300 modalgroup=10 argspec=iqP ngc=m300 +REMAP=M400 modalgroup=10 ngc=m400 +REMAP=M420 modalgroup=10 argspec=itredp ngc=m420 +REMAP=M700 modalgroup=10 argspec=iP ngc=m700 +REMAP=M701 modalgroup=10 argspec=iP ngc=m701 +REMAP=M702 modalgroup=10 argspec=iP ngc=m702 +REMAP=M710 modalgroup=10 argspec=epq ngc=m710 + +# enable ini parameter passing +FEATURES = 4 + + +[EMCMOT] + +EMCMOT = motmod + +# Timeout for comm to emcmot, in seconds +COMM_TIMEOUT = 1.0 + +# Interval between tries to emcmot, in seconds +COMM_WAIT = 0.010 + +# Servo task period, in nanoseconds +SERVO_PERIOD = 1000000 + + +[HAL] + +# The run script first uses halcmd to execute any HALFILE +# files, and then to execute any individual HALCMD commands. + +# list of hal config files to run through halcmd +# files are executed in the order in which they appear + +HALFILE = rostock-4dof.py + +# list of halcmd commands to execute +# commands are executed in the order in which they appear +#HALCMD = save neta + +#POSTGUI_HALFILE = TCT3D.postgui.hal + + +[TRAJ] + +ARC_BLEND_ENABLE = 1 +ARC_BLEND_FALLBACK_ENABLE = 0 +ARC_BLEND_OPTIMIZATION_DEPTH = 70 +ARC_BLEND_GAP_CYCLES = 4 +ARC_BLEND_RAMP_FREQ = 20 + +AXES = 4 +COORDINATES = X Y Z A +MAX_ANGULAR_VELOCITY = 45.00 +DEFAULT_ANGULAR_VELOCITY = 4.50 +LINEAR_UNITS = mm +ANGULAR_UNITS = degree +CYCLE_TIME = 0.010 +DEFAULT_LINEAR_VELOCITY = 20.0 +MAX_LINEAR_VELOCITY = 250.00 +DEFAULT_VELOCITY = 20.00 +MAX_VELOCITY = 250.0 +TIME_UNITS = s +#NO_FORCE_HOMING = 1 + + +[AXIS_0] + +# +# Step timing is 40 us steplen + 40 us stepspace +# That gives 80 us step period = 12.5 KHz step freq +# +# Bah, even software stepping can handle that, hm2 doesnt buy you much with +# such slow steppers. +# +# Scale is 200 steps/rev * 5 revs/inch = 1000 steps/inch +# +# This gives a maxvel of 12.5/1 = 12.5 ips +# + + +TYPE = LINEAR +MAX_VELOCITY = 150.0 +MAX_ACCELERATION = 1500.0 +# Set Stepgen max 20% higher than the axis +STEPGEN_MAX_VEL = 200.0 +#STEPGEN_MIN_VEL = 0.001 +STEPGEN_MAX_ACC = 2000.0 + +BACKLASH = 0.000 + +# scale is 200 steps/rev * 5 revs/inch +# SCALE = 80.4 -- Artifex +SCALE = -100.0 + +MIN_LIMIT = -100.0 +MAX_LIMIT = 700.0 + +FERROR = 0.1 +#MIN_FERROR = 0.25 +MIN_FERROR = 0.1 + +HOME = 600.000 +HOME_OFFSET = 633.70 +#HOME_IGNORE_LIMITS = YES +HOME_USE_INDEX = NO +HOME_SEQUENCE = 0 + +# Set to zero if you don't have physical home/limit switches +# Set to the desired homing and latch velocity if you have switches +# See: http://www.linuxcnc.org/docs/2.5/html/config/ini_homing.html +HOME_SEARCH_VEL = 50.0 +HOME_LATCH_VEL = 20.0 + +# these are in nanoseconds +DIRSETUP = 200 +DIRHOLD = 200 +STEPLEN = 1000 +STEPSPACE = 1000 + +# Jog increments +#INCREMENTS = 1 10 + + +[AXIS_1] + +TYPE = LINEAR +MAX_VELOCITY = 150.0 +MAX_ACCELERATION = 1500.0 +# Set Stepgen max 20% higher than the axis +STEPGEN_MAX_VEL = 200.0 +#STEPGEN_MIN_VEL = 0.001 +STEPGEN_MAX_ACC = 2000.0 + +BACKLASH = 0.000 + +SCALE = -100 + +MIN_LIMIT = -100.0 +MAX_LIMIT = 700.0 + +FERROR = 0.1 +#MIN_FERROR = 0.25 +MIN_FERROR = 0.1 + +HOME = 600.000 +HOME_OFFSET = 633.70 +#HOME_IGNORE_LIMITS = YES +HOME_USE_INDEX = NO +HOME_SEQUENCE = 0 + +# Set to zero if you don't have physical home/limit switches +# Set to the desired homing and latch velocity if you have switches +# See: http://www.linuxcnc.org/docs/2.5/html/config/ini_homing.html +HOME_SEARCH_VEL = 50.0 +HOME_LATCH_VEL = 20.0 + +# these are in nanoseconds +DIRSETUP = 200 +DIRHOLD = 200 +STEPLEN = 1000 +STEPSPACE = 1000 + +# Jog increments +#INCREMENTS = 1 10 + + +[AXIS_2] + +TYPE = LINEAR +MAX_VELOCITY = 150.0 +MAX_ACCELERATION = 1500.0 +# Set Stepgen max 20% higher than the axis +STEPGEN_MAX_VEL = 200 +#STEPGEN_MIN_VEL = 0.001 +STEPGEN_MAX_ACC = 2000.0 + +BACKLASH = 0.000 + +#SCALE = -1542.036 -- Artifex +SCALE = -100.0 + +MIN_LIMIT = -100.0 +MAX_LIMIT = 700.0 + +FERROR = 0.1 +MIN_FERROR = 0.1 + +HOME = 600.000 +HOME_OFFSET = 633.70 +#HOME_IGNORE_LIMITS = YES +HOME_USE_INDEX = NO +HOME_SEQUENCE = 0 + +# Set to zero if you don't have physical home/limit switches +# Set to the desired homing and latch velocity if you have switches +# See: http://www.linuxcnc.org/docs/2.5/html/config/ini_homing.html +HOME_SEARCH_VEL = 50.0 +HOME_LATCH_VEL = 20.0 + +# these are in nanoseconds +DIRSETUP = 200 +DIRHOLD = 200 +STEPLEN = 1000 +STEPSPACE = 1000 + +# Jog increments +#INCREMENTS = 0.01 0.1 1 + +[AXIS_3] +#JOIN 4 +#RotationMotor +#CRAMPS E1 + + +TYPE = ANGULAR +MAX_VELOCITY = 360 +MAX_ACCELERATION = 3000.0 +# Set Stepgen max 20% higher than the axis +STEPGEN_MAX_VEL = 380.0 +STEPGEN_MAX_ACC = 3750.0 + +BACKLASH = 0.000 + +# BDH: set for the RichRap Rostock extruder, +# a modified Greg's Wade. Uses Printrbot injection-molded gears, 16x MS. +#SCALE = 8.8888 +SCALE = 8.8888 +WRAPPED_ROTARY=1 +MIN_LIMIT = -999999999.0 +MAX_LIMIT = 999999999.0 + +FERROR = 1.0 +MIN_FERROR = .25 + +HOME = 0.000 +HOME_OFFSET = 0.00 +#HOME_IGNORE_LIMITS = YES +#HOME_USE_INDEX = YES +HOME_SEQUENCE = 0 + +# Set to zero if you don't have physical home/limit switches +# Set to the desired homing and latch velocity if you have switches +# See: http://www.linuxcnc.org/docs/2.5/html/config/ini_homing.html +#HOME_SEARCH_VEL = 0.0 +#HOME_LATCH_VEL = 0.0 + +# these are in nanoseconds for Allegro A4988 +DIRSETUP = 200 +DIRHOLD = 200 +STEPLEN = 1000 +STEPSPACE = 1000 + + +[FDM] +VELOCITY_EXTRUSION_ENABLE = 1 +NUM_EXTRUDERS = 1 +NUM_FANS = 1 +NUM_LIGHTS = 0 + +[EXTRUDER_0] +PID_PGAIN = 0.3 +PID_IGAIN = 0.00001 +PID_DGAIN = 0.9375 +PID_MAXERRORI = 1.0 +PID_BIAS = 0.5 +PWM_MAX = 1.0 +TEMP_RANGE_POS_ERROR = 1.0 +TEMP_RANGE_NEG_ERROR = -1.0 +TEMP_RANGE_LOWPASSGAIN = 0.0008 +TEMP_LIMIT_MIN = 0.0 +TEMP_LIMIT_MAX = 300.0 +TEMP_STANDBY = 200.0 +THERMISTOR = epcos_B57560G1104 + +RETRACT_LEN = 4.2 +RETRACT_VEL = 40.0 + +FILAMENT_DIA = 1.75 +EXTRUDE_SCALE = 1.00 + +FAN_BIAS = 0.0 + +MAX_VELOCITY = 32.0 +MAX_ACCELERATION = 3000.0 +# Set Stepgen max 20% higher than the axis +STEPGEN_MAX_VEL = 37.0 +STEPGEN_MIN_VEL = 0.001 +STEPGEN_MAX_ACC = 3600.0 + +#SCALE = -486.15 -- Artifex +#SCALE = 495.0 -- Bulldog XL +#SCALE = -107.0 -- Bulldog Lite Original +#SCALE = -90.0 +#SCALE = 744.530002058 +SCALE = -151.485 + +# these are in nanoseconds +DIRSETUP = 200 +DIRHOLD = 200 +STEPLEN = 1000 +STEPSPACE = 1000 + + +[HBP] +PID_PGAIN = 1.0 +PID_IGAIN = 0.0 +PID_DGAIN = 0.00 +PID_MAXERRORI = 1.0 +PID_BIAS = 0.5 +PWM_MAX = 1.0 +TEMP_RANGE_POS_ERROR = 10.0 +TEMP_RANGE_NEG_ERROR = -2.0 +TEMP_LIMIT_MIN = 0.0 +TEMP_LIMIT_MAX = 150.0 +TEMP_STANDBY = 50.0 +THERMISTOR = epcos_B57560G1104 + + +[PROBE] +COUNT = 0 +SEARCH_VEL = 10.0 +TOOL_NR = 100 +START_Z = 0.0 +END_Z = 1.0 +HBP_TEMP = 50.0 + + +[P0] +X = 0.0 +Y = 0.0 + + +[EMCIO] + +# Name of IO controller program, e.g., io +EMCIO = io + +# cycle time, in seconds +CYCLE_TIME = 0.100 + +# tool table file +TOOL_TABLE = tool.tbl + diff --git a/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/README.md b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/README.md new file mode 100644 index 0000000000..1ecf2f6def --- /dev/null +++ b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/README.md @@ -0,0 +1,12 @@ +# GaOlSt CRAMPS configuration for Machinekit + +3D printer configuration using Machinekits Python API for my Rostock Delta. + +This configuration does not use the PRU pin hunting fix. If you want +enable this please take a look at the Fabrikator-Mini-CRAMPS +configuration. +This configuration is using python configuration of HAL, have modular design, support 4 axis for Delta, +using new Joint Angle Offsets and radius offsets to correct hardware build issues, +Configuration is using Velocity Extrusion mode. + +To calibrate Delta use Dial indicator and following resource: http://www.escher3d.com/pages/wizards/wizarddelta.php diff --git a/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/cramps.py b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/cramps.py new file mode 100644 index 0000000000..dc71eb18f9 --- /dev/null +++ b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/cramps.py @@ -0,0 +1,126 @@ +from machinekit import hal +from machinekit import rtapi as rt +from machinekit import config as c + +from fdm.config import base + + +def hardware_read(): + hal.addf('hpg.capture-position', 'servo-thread') + hal.addf('bb_gpio.read', 'servo-thread') + + +def hardware_write(): + hal.addf('hpg.update', 'servo-thread') + hal.addf('bb_gpio.write', 'servo-thread') + + +def init_hardware(): + watchList = [] + + # load low-level drivers + rt.loadrt('hal_bb_gpio', output_pins='816,822,823,824,825,826,914,923,925', input_pins='807,808,809,810,817,911,913') + prubin = '%s/%s' % (c.Config().EMC2_RTLIB_DIR, c.find('PRUCONF', 'PRUBIN')) + rt.loadrt(c.find('PRUCONF', 'DRIVER'), + pru=0, num_stepgens=6, num_pwmgens=6, + prucode=prubin, halname='hpg') + + # Python user-mode HAL module to read ADC value and generate a thermostat output for PWM + defaultThermistor = 'semitec_103GT_2' + hal.loadusr('hal_temp_bbb', + name='temp', + interval=0.05, + filter_size=1, + cape_board='CRAMPS', + channels='04:%s,05:%s,02:%s,03:%s' + % (c.find('HBP', 'THERMISTOR', defaultThermistor), + c.find('EXTRUDER_0', 'THERMISTOR', defaultThermistor), + c.find('EXTRUDER_1', 'THERMISTOR', defaultThermistor), + c.find('EXTRUDER_2', 'THERMISTOR', defaultThermistor)), + wait_name='temp') + watchList.append(['temp', 0.1]) + + base.usrcomp_status('temp', 'temp-hw', thread='servo-thread') + base.usrcomp_watchdog(watchList, 'estop-reset', thread='servo-thread', + errorSignal='watchdog-error',okSignal=None) + + +def setup_hardware(thread): + # PWM + hal.Pin('hpg.pwmgen.00.pwm_period').set(10000000) # 100Hz + hal.Pin('hpg.pwmgen.00.out.00.pin').set(811) + hal.Pin('hpg.pwmgen.00.out.01.pin').set(915) + hal.Pin('hpg.pwmgen.00.out.02.pin').set(927) + hal.Pin('hpg.pwmgen.00.out.03.pin').set(921) + hal.Pin('hpg.pwmgen.00.out.04.pin').set(941) + hal.Pin('hpg.pwmgen.00.out.05.pin').set(922) + # HBP + hal.Pin('hpg.pwmgen.00.out.00.enable').set(True) + hal.Pin('hpg.pwmgen.00.out.00.value').link('hbp-temp-pwm') + # configure extruders + for n in range(0, 3): + hal.Pin('hpg.pwmgen.00.out.%02i.enable' % (n + 1)).set(True) + hal.Pin('hpg.pwmgen.00.out.%02i.value' % (n + 1)).link('e%i-temp-pwm' % n) + # configure fans + for n in range(0, 2): + hal.Pin('hpg.pwmgen.00.out.%02i.enable' % (n + 4)).link('f%i-pwm-enable' % n) + hal.Pin('hpg.pwmgen.00.out.%02i.value' % (n + 4)).link('f%i-pwm' % n) + hal.Signal('f%i-pwm-enable' % n).set(True) + # configure leds + # none + + # GPIO + hal.Pin('bb_gpio.p8.in-08').link('limit-0-home') # X + hal.Pin('bb_gpio.p8.in-07').link('limit-0-max') # X + hal.Pin('bb_gpio.p8.in-10').link('limit-1-home') # Y + hal.Pin('bb_gpio.p8.in-09').link('limit-1-max') # Y + hal.Pin('bb_gpio.p9.in-13').link('limit-2-home') # Z + hal.Pin('bb_gpio.p9.in-11').link('limit-2-max') # Z + # probe ... + + # Adjust as needed for your switch polarity + hal.Pin('bb_gpio.p8.in-08.invert').set(True) + hal.Pin('bb_gpio.p8.in-07.invert').set(True) + hal.Pin('bb_gpio.p8.in-10.invert').set(True) + hal.Pin('bb_gpio.p8.in-09.invert').set(True) + hal.Pin('bb_gpio.p9.in-13.invert').set(True) + hal.Pin('bb_gpio.p9.in-11.invert').set(True) + + # ADC + hal.Pin('temp.ch-04.value').link('hbp-temp-meas') + hal.Pin('temp.ch-05.value').link('e0-temp-meas') + hal.Pin('temp.ch-02.value').link('e1-temp-meas') + hal.Pin('temp.ch-03.value').link('e2-temp-meas') + + # Stepper + hal.Pin('hpg.stepgen.00.steppin').set(813) + hal.Pin('hpg.stepgen.00.dirpin').set(812) + hal.Pin('hpg.stepgen.01.steppin').set(815) + hal.Pin('hpg.stepgen.01.dirpin').set(814) + hal.Pin('hpg.stepgen.02.steppin').set(819) + hal.Pin('hpg.stepgen.02.dirpin').set(818) + hal.Pin('hpg.stepgen.03.steppin').set(916) + hal.Pin('hpg.stepgen.03.dirpin').set(912) + hal.Pin('hpg.stepgen.04.steppin').set(917) + hal.Pin('hpg.stepgen.04.dirpin').set(918) + hal.Pin('hpg.stepgen.05.steppin').set(924) + hal.Pin('hpg.stepgen.05.dirpin').set(926) + + # machine power + hal.Pin('bb_gpio.p9.out-23').link('emcmot-0-enable') + #hal.Pin('bb_gpio.p9.out-23.invert').set(True) + # Monitor estop input from hardware + hal.Pin('bb_gpio.p8.in-17').link('estop-in') + hal.Pin('bb_gpio.p8.in-17.invert').set(True) + # drive estop-sw + hal.Pin('bb_gpio.p8.out-26').link('estop-out') + hal.Pin('bb_gpio.p8.out-26.invert').set(True) + + # Tie machine power signal to the Parport Cape LED + # Feel free to tie any other signal you like to the LED + hal.Pin('bb_gpio.p9.out-25').link('emcmot-0-enable') + # hal.Pin('bb_gpio.p9.out-25.invert').set(True) + + # link emcmot.xx.enable to stepper driver enable signals + hal.Pin('bb_gpio.p9.out-14').link('emcmot-0-enable') + hal.Pin('bb_gpio.p9.out-14.invert').set(True) diff --git a/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/cramps2_cape.bbio b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/cramps2_cape.bbio new file mode 100644 index 0000000000..95a3babaae --- /dev/null +++ b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/cramps2_cape.bbio @@ -0,0 +1,54 @@ +# File: Hand edited to mach ARM.BeagleBone.CRAMPS/setup.sh +# title: CRAMPS Cape 3D Printer +overlay cape-universal +overlay cape-bone-iio +P8_7 in # X Max +P8_8 in # X Min +P8_9 in # Y Max +P8_10 in # Y Min +P8_11 low # FET 1 : Heated Bed +P8_12 low # X Dir +P8_13 low # X Step +P8_14 low # Y Dir +P8_15 low # Y Step +P8_16 high # eMMC Enable +P8_17 in # ESTOP +P8_18 low # Z Dir +P8_19 low # Z Step +# eMMC signals, uncomment *ONLY* if you have disabled the on-board eMMC! +# MachineKit images disable eMMC and HDMI audio by default in uEnv.txt: +# capemgr.disable_partno=BB-BONELT-HDMI,BB-BONE-EMMC-2G +# P8.22 low # Servo 4 +# P8.23 low # Servo 3 +# P8.24 low # Servo 2 +# P8.25 low # Servo 1 + +P8_26 high # ESTOP Out + +P9_11 in # Z Max +P9_12 low # E0 Dir +P9_13 in # Z Min +P9_14 high # Axis Enable, active low +P9_15 low # FET 2 : E0 +P9_16 low # E0 Step +P9_17 low # E1 Step +P9_18 low # E1 Dir +# P9_19 low # I2C SCL +# P9.20 low # I2C SDA +P9_21 low # FET 4 : E1 +P9_22 low # FET 6 +P9_23 low # Machine Power +P9_24 low # E2 Step +P9_25 low # LED +P9_26 low # E2 Dir +P9_27 low # FET 3 : E2 +P9_28 low # SPI CS0 +P9_29 low # SPI MISO +P9_30 low # SPI MOSI +P9_31 low # SPI SCLK + +P9_41 low # FET 5 +P9_91 in # Reserved, connected to P9.41 + +P9_42 low # SPI CS1 +P9_92 in # Reserved, connected to P9.42 diff --git a/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/delta.py b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/delta.py new file mode 100644 index 0000000000..d51c2f5616 --- /dev/null +++ b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/delta.py @@ -0,0 +1,33 @@ +import os + +from machinekit import hal +#from machinekit import rtapi as rt +from machinekit import config as c + +from fdm.config import base + + +def setup_linearDeltaKins(c): +# c.load_ini(os.environ['INI_FILE_NAME']) + + deltaCfRod = c.find('MACHINE', 'CF_ROD') + deltaRadius = c.find('MACHINE', 'DELTA_R') + deltaJoin0Offset = c.find('MACHINE', 'JOINT_0_OFFSET',0) + deltaJoin1Offset = c.find('MACHINE', 'JOINT_1_OFFSET',0) + deltaJoin2Offset = c.find('MACHINE', 'JOINT_2_OFFSET',0) + deltaJoin1AngleOffset = c.find('MACHINE', 'JOINT_1_ANGLE_OFFSET',0) + deltaJoin2AngleOffset = c.find('MACHINE', 'JOINT_2_ANGLE_OFFSET',0) + deltaJoin1RadiusOffset = c.find('MACHINE', 'JOINT_1_RADIUS_OFFSET',0) + deltaJoin2RadiusOffset = c.find('MACHINE', 'JOINT_2_RADIUS_OFFSET',0) + + c.load_ini(os.environ['INI_FILE_NAME']) + + hal.Pin('lineardeltakins.L').set(deltaCfRod) + hal.Pin('lineardeltakins.R').set(deltaRadius) + hal.Pin('lineardeltakins.J0off').set(deltaJoin0Offset) + hal.Pin('lineardeltakins.J1off').set(deltaJoin1Offset) + hal.Pin('lineardeltakins.J2off').set(deltaJoin2Offset) + hal.Pin('lineardeltakins.A1off').set(deltaJoin1AngleOffset) + hal.Pin('lineardeltakins.A2off').set(deltaJoin2AngleOffset) + hal.Pin('lineardeltakins.R1off').set(deltaJoin1RadiusOffset) + hal.Pin('lineardeltakins.R2off').set(deltaJoin2RadiusOffset) diff --git a/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/launcher.ini b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/launcher.ini new file mode 100644 index 0000000000..9e226a3d0e --- /dev/null +++ b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/launcher.ini @@ -0,0 +1,9 @@ +[DEFAULT] +manufacturer = GaOlSt +type = FDM + +[MendelMax] +name = MendelMax CRAMPS +description = DIY 3D printer +command = python run.py +variant = with one extruder \ No newline at end of file diff --git a/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/rostock-3dof.py b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/rostock-3dof.py new file mode 100644 index 0000000000..8dbca486c2 --- /dev/null +++ b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/rostock-3dof.py @@ -0,0 +1,96 @@ +# HAL file for BeagleBone + TCT paralell port cape with 5 steppers and 3D printer board +import os + +from machinekit import rtapi as rt +from machinekit import hal +from machinekit import config as c + +from fdm.config import velocity_extrusion as ve +from fdm.config import base +from fdm.config import storage +from fdm.config import motion +import cramps as hardware +import delta as lineardelta + +# initialize the RTAPI command client +rt.init_RTAPI() +# loads the ini file passed by linuxcnc +c.load_ini(os.environ['INI_FILE_NAME']) + +motion.setup_motion(kinematics='lineardeltakins') +lineardelta.setup_linearDeltaKins(c) + +hardware.init_hardware() +storage.init_storage('storage.ini') + +# reading functions +hardware.hardware_read() +hal.addf('motion-command-handler', 'servo-thread') +hal.addf('motion-controller', 'servo-thread') + +numFans = c.find('FDM', 'NUM_FANS') +numExtruders = c.find('FDM', 'NUM_EXTRUDERS') +numLights = c.find('FDM', 'NUM_LIGHTS') + +# Axis-of-motion Specific Configs (not the GUI) +ve.velocity_extrusion(extruders=numExtruders, thread='servo-thread') +# X [0] Axis +base.setup_stepper(section='AXIS_0', axisIndex=0, stepgenIndex=0, thread='servo-thread') +# Y [1] Axis +base.setup_stepper(section='AXIS_1', axisIndex=1, stepgenIndex=1, thread='servo-thread') +# Z [2] Axis +base.setup_stepper(section='AXIS_2', axisIndex=2, stepgenIndex=2, thread='servo-thread') + +# Extruder, velocity controlled +for i in range(0, numExtruders): + base.setup_stepper(section='EXTRUDER_%i' % i, stepgenIndex=3, + axisIndex=(i+3), thread='servo-thread') + +# Extruder Multiplexer +base.setup_extruder_multiplexer(extruders=numExtruders, thread='servo-thread') + +# Stepper Multiplexer +#multiplexSections = [] +#for i in range(0, numExtruders): +# multiplexSections.append('EXTRUDER_%i' % i) +#base.setup_stepper_multiplexer(stepgenIndex=5, sections=multiplexSections, +# selSignal='extruder-sel', thread='servo-thread') + +# Fans +for i in range(0, numFans): + base.setup_fan('f%i' % i, thread='servo-thread') + +# Temperature Signals +base.create_temperature_control(name='hbp', section='HBP', + hardwareOkSignal='temp-hw-ok', + thread='servo-thread') +for i in range(0, numExtruders): + base.create_temperature_control(name='e%i' % i, section='EXTRUDER_%i' % i, + coolingFan='f%i' % i, + hardwareOkSignal='temp-hw-ok', + thread='servo-thread') + +# LEDs +for i in range(0, numLights): + base.setup_light('l%i' % i, thread='servo-thread') + +# Standard I/O - EStop, Enables, Limit Switches, Etc +errorSignals = ['temp-hw-error', 'watchdog-error', 'hbp-error'] +for i in range(0, numExtruders): + errorSignals.append('e%i-error' % i) +base.setup_estop(errorSignals, thread='servo-thread') +base.setup_tool_loopback() +# Probe +base.setup_probe(thread='servo-thread') +# Setup Hardware +hardware.setup_hardware(thread='servo-thread') + +# write out functions +hardware.hardware_write() + +# Storage +storage.read_storage() + +# start haltalk server after everything is initialized +# else binding the remote components on the UI might fail +hal.loadusr('haltalk', wait=True) diff --git a/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/rostock-4dof.py b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/rostock-4dof.py new file mode 100644 index 0000000000..635b8080ef --- /dev/null +++ b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/rostock-4dof.py @@ -0,0 +1,98 @@ +# HAL file for BeagleBone + TCT paralell port cape with 5 steppers and 3D printer board +import os + +from machinekit import rtapi as rt +from machinekit import hal +from machinekit import config as c + +from fdm.config import velocity_extrusion as ve +from fdm.config import base +from fdm.config import storage +from fdm.config import motion +import cramps as hardware +import delta as lineardelta + +# initialize the RTAPI command client +rt.init_RTAPI() +# loads the ini file passed by linuxcnc +c.load_ini(os.environ['INI_FILE_NAME']) + +motion.setup_motion(kinematics='lineardeltakins') +lineardelta.setup_linearDeltaKins(c) + +hardware.init_hardware() +storage.init_storage('storage.ini') + +# reading functions +hardware.hardware_read() +hal.addf('motion-command-handler', 'servo-thread') +hal.addf('motion-controller', 'servo-thread') + +numFans = c.find('FDM', 'NUM_FANS') +numExtruders = c.find('FDM', 'NUM_EXTRUDERS') +numLights = c.find('FDM', 'NUM_LIGHTS') + +# Axis-of-motion Specific Configs (not the GUI) +ve.velocity_extrusion(extruders=numExtruders, thread='servo-thread') +# X [0] Axis +base.setup_stepper(section='AXIS_0', axisIndex=0, stepgenIndex=0, thread='servo-thread') +# Y [1] Axis +base.setup_stepper(section='AXIS_1', axisIndex=1, stepgenIndex=1, thread='servo-thread') +# Z [2] Axis +base.setup_stepper(section='AXIS_2', axisIndex=2, stepgenIndex=2, thread='servo-thread') +# Rotation [3] Axis +base.setup_stepper(section='AXIS_3', axisIndex=3, stepgenIndex=4, thread='servo-thread') + +# Extruder, velocity controlled +for i in range(0, numExtruders): + base.setup_stepper(section='EXTRUDER_%i' % i, stepgenIndex=3, + velocitySignal='ve-extrude-vel', thread='servo-thread') + +# Extruder Multiplexer +base.setup_extruder_multiplexer(extruders=numExtruders, thread='servo-thread') + +# Stepper Multiplexer +multiplexSections = [] +for i in range(0, numExtruders): + multiplexSections.append('EXTRUDER_%i' % i) +base.setup_stepper_multiplexer(stepgenIndex=5, sections=multiplexSections, + selSignal='extruder-sel', thread='servo-thread') + +# Fans +for i in range(0, numFans): + base.setup_fan('f%i' % i, thread='servo-thread') + +# Temperature Signals +base.create_temperature_control(name='hbp', section='HBP', + hardwareOkSignal='temp-hw-ok', + thread='servo-thread') +for i in range(0, numExtruders): + base.create_temperature_control(name='e%i' % i, section='EXTRUDER_%i' % i, + coolingFan='f%i' % i, + hardwareOkSignal='temp-hw-ok', + thread='servo-thread') + +# LEDs +for i in range(0, numLights): + base.setup_light('l%i' % i, thread='servo-thread') + +# Standard I/O - EStop, Enables, Limit Switches, Etc +errorSignals = ['temp-hw-error', 'watchdog-error', 'hbp-error'] +for i in range(0, numExtruders): + errorSignals.append('e%i-error' % i) +base.setup_estop(errorSignals, thread='servo-thread') +base.setup_tool_loopback() +# Probe +base.setup_probe(thread='servo-thread') +# Setup Hardware +hardware.setup_hardware(thread='servo-thread') + +# write out functions +hardware.hardware_write() + +# Storage +storage.read_storage() + +# start haltalk server after everything is initialized +# else binding the remote components on the UI might fail +hal.loadusr('haltalk', wait=True) diff --git a/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/run.py b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/run.py new file mode 100644 index 0000000000..f8ad518e6a --- /dev/null +++ b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/run.py @@ -0,0 +1,29 @@ +#!/usr/bin/python + +import sys +import os +import subprocess +import time +from machinekit import launcher + +launcher.register_exit_handler() +#launcher.set_debug_level(5) +os.chdir(os.path.dirname(os.path.realpath(__file__))) + +try: + launcher.check_installation() + launcher.cleanup_session() + launcher.load_bbio_file('cramps2_cape.bbio') +# launcher.install_comp('/home/machinekit/dev_mk/machinekit/src/hal/i_components/not.icomp') + if os.path.exists('/dev/video0'): # automatically start videoserver + launcher.start_process('videoserver -i video.ini Webcam1') + launcher.start_process("configserver -n MendelMax ~/Cetus ~/Machineface") + launcher.start_process('linuxcnc CRAMPS.4DOF.ini') + while True: + launcher.check_processes() + time.sleep(1) +except subprocess.CalledProcessError: + launcher.end_session() + sys.exit(1) + +sys.exit(0) diff --git a/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/storage.ini b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/storage.ini new file mode 100644 index 0000000000..ee8dd7aa0c --- /dev/null +++ b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/storage.ini @@ -0,0 +1,13 @@ +[L0] +r = 0.0 +g = 0.0 +b = 0.0 +w = 0.78431372549 + +[E0] +jog-velocity = 0.4 +retract-len = 6.5 +retract-vel = 40.0 +filament-dia = 1.75 +extrude-scale = 1.0 + diff --git a/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/tool.tbl b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/tool.tbl new file mode 100644 index 0000000000..c50d31d3cb --- /dev/null +++ b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/tool.tbl @@ -0,0 +1,5 @@ +T0 P0 ; Extruder 0 +T1 P1 ; Extruder 1 +T2 P2 ; Extruder 2 +T3 P3 ; Extruder 3 +T100 P100 X+35.000000 Z+0.900000 ; probe head \ No newline at end of file diff --git a/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/video.ini b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/video.ini new file mode 100644 index 0000000000..b013946f9b --- /dev/null +++ b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/video.ini @@ -0,0 +1,7 @@ +[Webcam1] +framerate: 30 +resolution: "320x240" +quality: 80 +device: "/dev/video0" +bufferSize: 1 + From 1a8a77accdc3e6e968dbb365abee717f8ca0ffb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Sat, 14 Jul 2018 16:09:58 +0200 Subject: [PATCH 253/516] update videoserver for new mjpg-streamer --- src/machinetalk/videoserver/videoserver.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/machinetalk/videoserver/videoserver.py b/src/machinetalk/videoserver/videoserver.py index a73aba7ae0..9cbc0b769e 100644 --- a/src/machinetalk/videoserver/videoserver.py +++ b/src/machinetalk/videoserver/videoserver.py @@ -14,6 +14,9 @@ from machinekit import config +MJPG_STREAMER_PLUGIN_PATH = '/usr/local/lib/mjpg-streamer/' + + class VideoDevice: process = None service = None @@ -90,7 +93,7 @@ def startVideo(self, deviceId): "dsname = ", videoDevice.dsname, "port =", videoDevice.port)) - libpath = '/usr/local/lib/' + libpath = MJPG_STREAMER_PLUGIN_PATH os.environ['LD_LIBRARY_PATH'] = libpath arguments = "" From 51cffda1c04c0deb526d4425cf06526ab7c80e32 Mon Sep 17 00:00:00 2001 From: John Morris Date: Sun, 15 Jul 2018 16:20:03 -0500 Subject: [PATCH 254/516] scripts/realtime: check for zombies When running in a container, there is no proper `init` process to adopt the orphaned `msgd:x` or `rtapi:x` daemon processes, so when these daemons exit, they are left behind as defunct processes. This isn't inherently a problem, except the realtime script uses e.g. `pidof rtapi:0` to check for a running daemon; however, this can give a false positive. This patch introduces `FindRunningProcs $proc_name` and `CheckRunningProcs $proc_name` to filter out zombie processes and eliminate those false positives. It may also be possible to fix this properly with some scheme to fork off a background process that runs the daemons with the `-f` flag, but in the background, and then use `wait` to properly reap the processes. However, running in containers is not a primary use case, so this simple workaround may be sufficient. --- scripts/realtime.in | 44 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/scripts/realtime.in b/scripts/realtime.in index 44a92b3cbb..3f682e9c86 100644 --- a/scripts/realtime.in +++ b/scripts/realtime.in @@ -12,6 +12,8 @@ RTAPI_INI=@EMC2_SYSTEM_CONFIG_DIR@/rtapi.ini INIVAR=@EMC2_LIBEXEC_DIR@/inivar LSMOD=@LSMOD@ PIDOF=@PIDOF@ +PS=@PS@ +AWK=@AWK@ SHM_DEV=/dev/shmdrv SHM_STAT=/sys/devices/virtual/misc/shmdrv/status @@ -130,6 +132,30 @@ anywait(){ return 1 } +FindRunningProcs() { + # Usage: FindRunningProcs $proc_name + # Find non-zombie procs named $proc_name and echo their PIDs + local proc_name=$1 + local all="$(${PIDOF} ${proc_name})" + if test -z "$all"; then + return # No procs named $proc_name found at all + fi + local live="$(ps -p "$all" -o pid=,s= | ${AWK} '$2 != "Z" {print $1}')" + if test -z "$live"; then + return # No non-zombie procs named $proc_name found + fi + echo $live + return 0 +} + +CheckRunningProcs() { + # Usage: CheckRunningProcs $proc_name + # Return true if there are any non-zombie procs named $proc_name, else false + local proc_name=$1 + local live="$(FindRunningProcs "$proc_name")" + test -n "$live" +} + CheckStatus(){ local res=0 @@ -137,7 +163,7 @@ CheckStatus(){ progs="msgd:${MK_INSTANCE} rtapi:${MK_INSTANCE}" for prog in $progs; do - if test -n "$($PIDOF $prog)"; then + if CheckRunningProcs $prog; then echo "$prog running" >&2 else echo "$prog stopped" >&2 @@ -268,8 +294,7 @@ Unload(){ # shutdown rtapi if it exists - RTAPI_PID=`$PIDOF rtapi:$MK_INSTANCE` - if [ "$RTAPI_PID" != "" ] ; then + if CheckRunningProcs rtapi:$MK_INSTANCE; then if [ $DEBUG -gt 0 ] ; then halcmd shutdown else @@ -303,8 +328,8 @@ Unload(){ sleep 2.5 # and get nasty only if it didnt - MSGD_PID=`$PIDOF msgd:$MK_INSTANCE` - if [ "$MSGD_PID" != "" ] ; then + if CheckRunningProcs msgd:$MK_INSTANCE; then + MSGD_PID=`FindRunningProcs msgd:$MK_INSTANCE` kill -TERM $MSGD_PID # ...and get even nastier if SIGTERM fails. FIXME this needs # to be reviewed; if we get this far, then we might need @@ -338,8 +363,9 @@ CheckUnloaded(){ # if msgd:$MK_INSTANCE is still around, this might still be a running instance # after all - this applies to all flavors - msgd is always there, so cop out - MSGD_PID=`$PIDOF msgd:$MK_INSTANCE` - if [ "$MSGD_PID" != "" ] ; then + + if CheckRunningProcs msgd:$MK_INSTANCE; then + MSGD_PID=`FindRunningProcs msgd:$MK_INSTANCE` echo "instance $MK_INSTANCE still running;" \ "process msgd:$MK_INSTANCE present (pid $MSGD_PID) !" >&2 exit 1 @@ -349,8 +375,8 @@ CheckUnloaded(){ # should be last to exit # this is a noop in kthreads, but clearly an error in uthreads - RTAPI_PID=`$PIDOF rtapi:$MK_INSTANCE` - if [ "$RTAPI_PID" != "" ] ; then + if CheckRunningProcs rtapi:$MK_INSTANCE; then + RTAPI_PID=`FindRunningProcs rtapi:$MK_INSTANCE` echo "instance $MK_INSTANCE inproperly shutdown!" >&2 echo "msgd:$MK_INSTANCE gone," \ "but rtapi:$MK_INSTANCE alive (pid $RTAPI_PID)" >&2 From fe5d1a8c60a5a7859ba21ad75ee13ab0677d9646 Mon Sep 17 00:00:00 2001 From: John Morris Date: Sun, 15 Jul 2018 17:12:34 -0500 Subject: [PATCH 255/516] scripts/realtime: stop faster and smarter - Don't sleep 2.5 seconds every time realtime is stopped. - Fix exit detection for zombies --- scripts/realtime.in | 46 +++++++++++++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/scripts/realtime.in b/scripts/realtime.in index 3f682e9c86..145d9f6120 100644 --- a/scripts/realtime.in +++ b/scripts/realtime.in @@ -120,13 +120,28 @@ done -# wait for a pid to exit +# wait for a process to exit anywait(){ - pid=$1 - for (( n=0; $n<20; $((n++)) )); do + proc_name=$1 + tries=${2:-20} + sig=${3:-0} + pid=$(FindRunningProcs $proc_name) + if test -z "$pid"; then + return 0 # Already exited + fi + + # Kill proc if requested + if test -n "$sig"; then + kill -$sig "$pid" >/dev/null 2>&1 || return 0 + fi + + # Wait to see if it exited + for (( n=0; $n<$tries; $((n++)) )); do # return success if process died - kill -0 "$pid" >/dev/null 2>&1 || return 0 - # otherwise, wait 1/2 second and try again, up to 10 seconds + if ! CheckRunningProcs $proc_name; then + return 0 + fi + # otherwise, wait 1/2 second and try again, up to $tries/2 seconds sleep 0.5 done return 1 @@ -325,19 +340,18 @@ Unload(){ # This helps to debug issues during the critical shutdown phase; # if msgd exited right away those messages would be lost. - sleep 2.5 - - # and get nasty only if it didnt - if CheckRunningProcs msgd:$MK_INSTANCE; then - MSGD_PID=`FindRunningProcs msgd:$MK_INSTANCE` - kill -TERM $MSGD_PID - # ...and get even nastier if SIGTERM fails. FIXME this needs - # to be reviewed; if we get this far, then we might need - # operator intervention, including debugging - if ! anywait $MSGD_PID; then + # Wait 2.5s to see if rtapi_msgd exits on its own + if ! anywait msgd:$MK_INSTANCE 5 ''; then + # It didn't; get nasty + echo "ERROR: msgd:$MK_INSTANCE failed to exit on its own;" \ + "sending SIGTERM" >&2 + if ! anywait msgd:$MK_INSTANCE 20 TERM; then + # ...and get even nastier if SIGTERM fails. FIXME this needs + # to be reviewed; if we get this far, then we might need + # operator intervention, including debugging echo "ERROR: msgd:$MK_INSTANCE failed to exit after SIGTERM;" >&2 echo "sending SIGKILL" >&2 - kill -KILL $MSGD_PID + kill -KILL $(FindRunningProcs msgd:$MK_INSTANCE) fi fi From c29d92028e490907426e371d601e7f8aa0a49d52 Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 16 Jul 2018 14:52:31 -0500 Subject: [PATCH 256/516] scripts/realtime: increase rtapi_msgd exit timeout to 5s A complex HAL component can take a while to exit. Increase the rtapi_msgd exit timeout to allow those comps to exit gracefully. --- scripts/realtime.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/realtime.in b/scripts/realtime.in index 145d9f6120..ccd737dfc9 100644 --- a/scripts/realtime.in +++ b/scripts/realtime.in @@ -340,8 +340,8 @@ Unload(){ # This helps to debug issues during the critical shutdown phase; # if msgd exited right away those messages would be lost. - # Wait 2.5s to see if rtapi_msgd exits on its own - if ! anywait msgd:$MK_INSTANCE 5 ''; then + # Wait 5s to see if rtapi_msgd exits on its own + if ! anywait msgd:$MK_INSTANCE 10 ''; then # It didn't; get nasty echo "ERROR: msgd:$MK_INSTANCE failed to exit on its own;" \ "sending SIGTERM" >&2 From d87462ba5c6a07862854cb8262cb2cf108cf518d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Wed, 18 Jul 2018 11:28:06 +0200 Subject: [PATCH 257/516] previewmodule: make sure to check for error --- src/emc/rs274ngc/previewmodule.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/emc/rs274ngc/previewmodule.cc b/src/emc/rs274ngc/previewmodule.cc index 2cf3694abb..52a47b0c0c 100644 --- a/src/emc/rs274ngc/previewmodule.cc +++ b/src/emc/rs274ngc/previewmodule.cc @@ -522,7 +522,7 @@ void USE_LENGTH_UNITS(CANON_UNITS u) { } void SELECT_PLANE(CANON_PLANE pl) { _pl = pl; maybe_new_line(); - // if(interp_error) return; + if(interp_error) return; machinetalk::Preview *p = output.add_preview(); p->set_type(machinetalk::PV_SELECT_PLANE); @@ -605,7 +605,7 @@ void SET_FEED_RATE(double rate) { void DWELL(double time) { maybe_new_line(); - // if(interp_error) return; + if(interp_error) return; // PyObject *result = // callmethod(callback, "dwell", "f", time); // if(result == NULL) interp_error ++; From 633034aed3b1aad50d6917a644295c561dd2e99c Mon Sep 17 00:00:00 2001 From: bdebruijn Date: Mon, 23 Jul 2018 17:28:56 +0200 Subject: [PATCH 258/516] jplan.c: convert tabs to spaces --- src/hal/jplanner/jplan.c | 220 +++++++++++++++++++-------------------- 1 file changed, 110 insertions(+), 110 deletions(-) diff --git a/src/hal/jplanner/jplan.c b/src/hal/jplanner/jplan.c index 30f0685855..ce185ef0c6 100644 --- a/src/hal/jplanner/jplan.c +++ b/src/hal/jplanner/jplan.c @@ -42,11 +42,11 @@ struct inst_data { // per-joint planner. Returns 1 if planner active. static int update_joint(struct joint *joint, - const bool enable, - const double pos_cmd, - const double max_vel, - const double max_acc, - const double period) + const bool enable, + const double pos_cmd, + const double max_vel, + const double max_acc, + const double period) { double max_dv, tiny_dp, pos_err, vel_req; @@ -58,51 +58,51 @@ static int update_joint(struct joint *joint, tiny_dp = max_dv * period * 0.001; /* calculate desired velocity */ if (enable) { - /* planner enabled, request a velocity that tends to drive - pos_err to zero, but allows for stopping without position - overshoot */ - pos_err = pos_cmd - *(joint->curr_pos); - /* positive and negative errors require some sign flipping to - avoid rtapi_sqrt(negative) */ - if (pos_err > tiny_dp) { - vel_req = -max_dv + - rtapi_sqrt(2.0 * max_acc * pos_err + max_dv * max_dv); - /* mark planner as active */ - active = 1; - } else if (pos_err < -tiny_dp) { - vel_req = max_dv - - rtapi_sqrt(-2.0 * max_acc * pos_err + max_dv * max_dv); - /* mark planner as active */ - active = 1; - } else { - /* within 'tiny_dp' of desired pos, no need to move */ - vel_req = 0.0; - } + /* planner enabled, request a velocity that tends to drive + pos_err to zero, but allows for stopping without position + overshoot */ + pos_err = pos_cmd - *(joint->curr_pos); + /* positive and negative errors require some sign flipping to + avoid rtapi_sqrt(negative) */ + if (pos_err > tiny_dp) { + vel_req = -max_dv + + rtapi_sqrt(2.0 * max_acc * pos_err + max_dv * max_dv); + /* mark planner as active */ + active = 1; + } else if (pos_err < -tiny_dp) { + vel_req = max_dv - + rtapi_sqrt(-2.0 * max_acc * pos_err + max_dv * max_dv); + /* mark planner as active */ + active = 1; + } else { + /* within 'tiny_dp' of desired pos, no need to move */ + vel_req = 0.0; + } } else { - /* planner disabled, request zero velocity */ - vel_req = 0.0; - /* and set command to present position to avoid movement when - next enabled */ - *(joint->pos_cmd) = *(joint->curr_pos); + /* planner disabled, request zero velocity */ + vel_req = 0.0; + /* and set command to present position to avoid movement when + next enabled */ + *(joint->pos_cmd) = *(joint->curr_pos); } /* limit velocity request */ if (vel_req > max_vel) { vel_req = max_vel; } else if (vel_req < - max_vel) { - vel_req = - max_vel; + vel_req = - max_vel; } /* ramp velocity toward request at accel limit */ if (vel_req > *(joint->curr_vel) + max_dv) { - *(joint->curr_vel) += max_dv; + *(joint->curr_vel) += max_dv; } else if (vel_req < *(joint->curr_vel) - max_dv) { - *(joint->curr_vel) -= max_dv; + *(joint->curr_vel) -= max_dv; } else { - *(joint->curr_vel) = vel_req; + *(joint->curr_vel) = vel_req; } /* check for still moving */ if (*(joint->curr_vel) != 0.0) { - /* yes, mark planner active */ - active = 1; + /* yes, mark planner active */ + active = 1; } /* integrate velocity to get new position */ *(joint->curr_pos) += *(joint->curr_vel) * period; @@ -121,50 +121,50 @@ static int update(void *arg, const hal_funct_args_t *fa) int i; if (ringbuffer_attached(&ip->jcmd)) { - // fetch next command if all joints inactive - if (!*(ip->joints_active)) { - - // check for a new command - void *data; - ringsize_t size; - if (record_read(&ip->jcmd, (const void**)&data, &size) == 0) { - - // protobuf-decode it - pb_istream_t stream = pb_istream_from_buffer(data, size); - machinetalk_JplanCommand rx = machinetalk_JplanCommand_init_zero; - if (!pb_decode(&stream, machinetalk_JplanCommand_fields, &rx)) { - rtapi_print_msg(RTAPI_MSG_ERR, "%s: pb_decode(JplanCommand) failed: '%s'", - compname, PB_GET_ERROR(&stream)); - } else { - // decode ok - apply all set fields to driving pins - for (i = 0; i < rx.joint_count; i++) { - struct joint *jp = &ip->joints[i]; - machinetalk_JplanJoint *jc = &rx.joint[i]; - if (jc->has_enable) *(jp->enable) = jc->enable; - if (jc->has_pos_cmd) *(jp->pos_cmd) = jc->pos_cmd; - if (jc->has_max_vel) *(jp->max_vel) = jc->max_vel; - if (jc->has_max_acc) *(jp->max_acc) = jc->max_acc; - } - *(ip->commands) += 1; // count # of queued commands - } - // consume record - record_shift(&ip->jcmd); - } + // fetch next command if all joints inactive + if (!*(ip->joints_active)) { + + // check for a new command + void *data; + ringsize_t size; + if (record_read(&ip->jcmd, (const void**)&data, &size) == 0) { + + // protobuf-decode it + pb_istream_t stream = pb_istream_from_buffer(data, size); + machinetalk_JplanCommand rx = machinetalk_JplanCommand_init_zero; + if (!pb_decode(&stream, machinetalk_JplanCommand_fields, &rx)) { + rtapi_print_msg(RTAPI_MSG_ERR, "%s: pb_decode(JplanCommand) failed: '%s'", + compname, PB_GET_ERROR(&stream)); + } else { + // decode ok - apply all set fields to driving pins + for (i = 0; i < rx.joint_count; i++) { + struct joint *jp = &ip->joints[i]; + machinetalk_JplanJoint *jc = &rx.joint[i]; + if (jc->has_enable) *(jp->enable) = jc->enable; + if (jc->has_pos_cmd) *(jp->pos_cmd) = jc->pos_cmd; + if (jc->has_max_vel) *(jp->max_vel) = jc->max_vel; + if (jc->has_max_acc) *(jp->max_acc) = jc->max_acc; + } + *(ip->commands) += 1; // count # of queued commands + } + // consume record + record_shift(&ip->jcmd); + } } } // apply the commanded values, wherever they came from // (either directly by setting a pin, or by dequeuing a command bool active = 0; for (i = 0; i < ip->count; i++) { - struct joint *jp = &ip->joints[i]; - // plan each joint - // record if any joint active - active |= update_joint(jp, - *(jp->enable), - *(jp->pos_cmd), - *(jp->max_vel), - *(jp->max_acc), - period); + struct joint *jp = &ip->joints[i]; + // plan each joint + // record if any joint active + active |= update_joint(jp, + *(jp->enable), + *(jp->pos_cmd), + *(jp->max_vel), + *(jp->max_acc), + period); } *(ip->joints_active) = active; return 0; @@ -178,10 +178,10 @@ static int instantiate_jplan(const int argc, const char **argv) int inst_id, i; if ((inst_id = hal_inst_create(name, comp_id, - sizeof(struct inst_data) + - count * sizeof(struct joint), - (void **)&ip)) < 0) - return -1; + sizeof(struct inst_data) + + count * sizeof(struct joint), + (void **)&ip)) < 0) + return -1; // instance-level objects ip->count = count; @@ -192,34 +192,34 @@ static int instantiate_jplan(const int argc, const char **argv) unsigned flags; bool queued = 0; if (!hal_ring_attachf(&(ip->jcmd), &flags, "%s.cmd", name)) { - if ((flags & RINGTYPE_MASK) != RINGTYPE_RECORD) { - HALERR("ring %s.cmd not a record mode ring: mode=%d",name, flags & RINGTYPE_MASK); - return -EINVAL; - } - ip->jcmd.header->reader = inst_id; // we're the reader - advisory - if (hal_pin_u32_newf(HAL_OUT, &(ip->commands), inst_id, "%s.commands", name)) - return -1; - queued = 1; + if ((flags & RINGTYPE_MASK) != RINGTYPE_RECORD) { + HALERR("ring %s.cmd not a record mode ring: mode=%d",name, flags & RINGTYPE_MASK); + return -EINVAL; + } + ip->jcmd.header->reader = inst_id; // we're the reader - advisory + if (hal_pin_u32_newf(HAL_OUT, &(ip->commands), inst_id, "%s.commands", name)) + return -1; + queued = 1; } // aggregate joint status, 'or' of all .active if (hal_pin_bit_newf(HAL_OUT, &(ip->joints_active), inst_id, "%s.joints-active", name)) - return -1; + return -1; // per-joint objects for (i = 0; i < ip->count; i++) { - struct joint *jp = &ip->joints[i]; - if (hal_pin_bit_newf(HAL_OUT, &(jp->active), inst_id, "%s.%d.active", name, i) || - hal_pin_bit_newf(HAL_IN, &(jp->enable), inst_id, "%s.%d.enable", name, i) || - hal_pin_float_newf(HAL_OUT, &(jp->curr_pos), inst_id, "%s.%d.curr-pos", name, i) || - hal_pin_float_newf(HAL_OUT, &(jp->curr_vel), inst_id, "%s.%d.curr-vel", name, i)) - return -1; - - hal_pin_dir_t dir = queued ? HAL_OUT : HAL_IN; - if (hal_pin_float_newf(dir, &(jp->pos_cmd), inst_id, "%s.%d.pos-cmd", name, i) || - hal_pin_float_newf(dir, &(jp->max_vel), inst_id, "%s.%d.max-vel", name, i) || - hal_pin_float_newf(dir, &(jp->max_acc), inst_id, "%s.%d.max-acc", name, i)) - return -1; + struct joint *jp = &ip->joints[i]; + if (hal_pin_bit_newf(HAL_OUT, &(jp->active), inst_id, "%s.%d.active", name, i) || + hal_pin_bit_newf(HAL_IN, &(jp->enable), inst_id, "%s.%d.enable", name, i) || + hal_pin_float_newf(HAL_OUT, &(jp->curr_pos), inst_id, "%s.%d.curr-pos", name, i) || + hal_pin_float_newf(HAL_OUT, &(jp->curr_vel), inst_id, "%s.%d.curr-vel", name, i)) + return -1; + + hal_pin_dir_t dir = queued ? HAL_OUT : HAL_IN; + if (hal_pin_float_newf(dir, &(jp->pos_cmd), inst_id, "%s.%d.pos-cmd", name, i) || + hal_pin_float_newf(dir, &(jp->max_vel), inst_id, "%s.%d.max-vel", name, i) || + hal_pin_float_newf(dir, &(jp->max_acc), inst_id, "%s.%d.max-acc", name, i)) + return -1; } hal_export_xfunct_args_t xfunct_args = { .type = FS_XTHREADFUNC, @@ -239,13 +239,13 @@ static int delete_jplan(const char *name, void *inst, const int inst_size) int retval; if (ringbuffer_attached(&ip->jcmd)) { - if ((retval = hal_ring_detach(&ip->jcmd)) < 0) { - rtapi_print_msg(RTAPI_MSG_ERR, - "%s: hal_ring_detach(%s.cmd) failed: %d\n", - compname, name, retval); - return retval; - } - ip->jcmd.header->reader = 0; + if ((retval = hal_ring_detach(&ip->jcmd)) < 0) { + rtapi_print_msg(RTAPI_MSG_ERR, + "%s: hal_ring_detach(%s.cmd) failed: %d\n", + compname, name, retval); + return retval; + } + ip->jcmd.header->reader = 0; } return 0; } @@ -253,11 +253,11 @@ static int delete_jplan(const char *name, void *inst, const int inst_size) int rtapi_app_main(void) { comp_id = hal_xinit(TYPE_RT, 0, 0, - (hal_constructor_t)instantiate_jplan, - delete_jplan, - compname); + (hal_constructor_t)instantiate_jplan, + delete_jplan, + compname); if (comp_id < 0) - return comp_id; + return comp_id; hal_ready(comp_id); return 0; } From 2cec99f29a5562c510a466e488cb5e56480ef514 Mon Sep 17 00:00:00 2001 From: bdebruijn Date: Mon, 23 Jul 2018 18:39:15 +0200 Subject: [PATCH 259/516] jplan.c: introduce homing of planner this commit introduces 2 new pins home-pos home-set when home-set is high, the curr-pos value will be set to the value of home-pos. This will enable aligning the planner so that when the planer is enabled, a move is planned taking this new curr-pos into account. Please note that changing this home-pos (when home-set is made high) will also directly change the curr-pos output pin. --- src/hal/jplanner/jplan.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/hal/jplanner/jplan.c b/src/hal/jplanner/jplan.c index ce185ef0c6..768fc1a476 100644 --- a/src/hal/jplanner/jplan.c +++ b/src/hal/jplanner/jplan.c @@ -27,6 +27,10 @@ struct joint { hal_float_t *curr_pos; // current position hal_float_t *curr_vel; // current velocity + + hal_float_t *home_pos; // "home" position : will be used as curr_pos when + hal_bit_t *home_set; // home_set is high. Thus enabling homing + hal_bit_t * active; // non-zero if motion in progress hal_bit_t *enable; // if zero, motion stops ASAP }; @@ -46,12 +50,23 @@ static int update_joint(struct joint *joint, const double pos_cmd, const double max_vel, const double max_acc, + const double home_pos, + const bool home_set, const double period) { double max_dv, tiny_dp, pos_err, vel_req; bool active = 0; + // If home_set is high, pos_cmd will be set to home_pos + // thus when enabling doing no planning, but enabling homing the output + // curr-pos value to a new value. + // n.b. when home_pos and pos-cmd are equal, there will be no activity + // because there is no position error + if (home_set) { + *(joint->curr_pos) = *(joint->home_pos); + } + /* compute max change in velocity per servo period */ max_dv = max_acc * period; /* compute a tiny position range, to be treated as zero */ @@ -164,6 +179,8 @@ static int update(void *arg, const hal_funct_args_t *fa) *(jp->pos_cmd), *(jp->max_vel), *(jp->max_acc), + *(jp->home_pos), + *(jp->home_set), period); } *(ip->joints_active) = active; @@ -212,7 +229,9 @@ static int instantiate_jplan(const int argc, const char **argv) if (hal_pin_bit_newf(HAL_OUT, &(jp->active), inst_id, "%s.%d.active", name, i) || hal_pin_bit_newf(HAL_IN, &(jp->enable), inst_id, "%s.%d.enable", name, i) || hal_pin_float_newf(HAL_OUT, &(jp->curr_pos), inst_id, "%s.%d.curr-pos", name, i) || - hal_pin_float_newf(HAL_OUT, &(jp->curr_vel), inst_id, "%s.%d.curr-vel", name, i)) + hal_pin_float_newf(HAL_OUT, &(jp->curr_vel), inst_id, "%s.%d.curr-vel", name, i) || + hal_pin_float_newf(HAL_IN, &(jp->home_pos), inst_id, "%s.%d.home-pos", name, i) || + hal_pin_bit_newf(HAL_IN, &(jp->home_set), inst_id, "%s.%d.home-set", name, i)) return -1; hal_pin_dir_t dir = queued ? HAL_OUT : HAL_IN; From 7df15e54034b13f1aa692b2dc6029641929dc573 Mon Sep 17 00:00:00 2001 From: Mick Date: Tue, 31 Jul 2018 15:41:40 +0100 Subject: [PATCH 260/516] Revert inadvertent change to lincurve.icomp. Arose during multicore merge when an older version was committed reversing an earlier fix. Signed-off-by: Mick --- src/hal/i_components/lincurve.icomp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hal/i_components/lincurve.icomp b/src/hal/i_components/lincurve.icomp index e9fbe0e062..20b79b8b45 100644 --- a/src/hal/i_components/lincurve.icomp +++ b/src/hal/i_components/lincurve.icomp @@ -57,7 +57,7 @@ FUNCTION(_) while (x < (x_val(i))) { i--;} f = (x - x_val(i)) / ( x_val(i+1) - x_val(i) ) ; - out_ = ( y_val(i) + f) * (y_val(i+1) - y_val(i) ) ; + out_ = y_val(i) + f * (y_val(i+1) - y_val(i) ) ; out_io = out_; return 0; From e115c1a74c0bded8240145ea7d8cb0f0fa492444 Mon Sep 17 00:00:00 2001 From: Ga-Ol-St Date: Wed, 1 Aug 2018 11:43:42 +0300 Subject: [PATCH 261/516] Requested Code style cleanup after review --- .../BeagleBone/Rostock-4DOF-CRAMPS/delta.py | 1 - .../ARM/BeagleBone/Rostock-4DOF-CRAMPS/run.py | 2 -- src/emc/kinematics/lineardeltakins.c | 27 ++++++++----------- 3 files changed, 11 insertions(+), 19 deletions(-) diff --git a/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/delta.py b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/delta.py index d51c2f5616..88340e6b04 100644 --- a/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/delta.py +++ b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/delta.py @@ -1,7 +1,6 @@ import os from machinekit import hal -#from machinekit import rtapi as rt from machinekit import config as c from fdm.config import base diff --git a/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/run.py b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/run.py index f8ad518e6a..39d86af4ab 100644 --- a/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/run.py +++ b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/run.py @@ -7,14 +7,12 @@ from machinekit import launcher launcher.register_exit_handler() -#launcher.set_debug_level(5) os.chdir(os.path.dirname(os.path.realpath(__file__))) try: launcher.check_installation() launcher.cleanup_session() launcher.load_bbio_file('cramps2_cape.bbio') -# launcher.install_comp('/home/machinekit/dev_mk/machinekit/src/hal/i_components/not.icomp') if os.path.exists('/dev/video0'): # automatically start videoserver launcher.start_process('videoserver -i video.ini Webcam1') launcher.start_process("configserver -n MendelMax ~/Cetus ~/Machineface") diff --git a/src/emc/kinematics/lineardeltakins.c b/src/emc/kinematics/lineardeltakins.c index 682f0177bc..8c601c9c45 100644 --- a/src/emc/kinematics/lineardeltakins.c +++ b/src/emc/kinematics/lineardeltakins.c @@ -66,10 +66,10 @@ int rtapi_app_main(void) vtable_id = hal_export_vtable(name, VTVERSION, &vtk, comp_id); if (vtable_id < 0) { - rtapi_print_msg(RTAPI_MSG_ERR, - "%s: ERROR: hal_export_vtable(%s,%d,%p) failed: %d\n", - name, name, VTVERSION, &vtk, vtable_id ); - return -ENOENT; + rtapi_print_msg(RTAPI_MSG_ERR, + "%s: ERROR: hal_export_vtable(%s,%d,%p) failed: %d\n", + name, name, VTVERSION, &vtk, vtable_id ); + return -ENOENT; } if(retval == 0) @@ -93,34 +93,29 @@ int rtapi_app_main(void) if(retval == 0) retval = hal_pin_float_newf(HAL_IN, &haldata->j2off, comp_id, "lineardeltakins.J2off"); - if(retval == 0) retval = hal_pin_float_newf(HAL_IN, &haldata->r1off, comp_id, "lineardeltakins.R1off"); - if(retval == 0) retval = hal_pin_float_newf(HAL_IN, &haldata->r2off, comp_id, "lineardeltakins.R2off"); - if(retval == 0) retval = hal_pin_float_newf(HAL_IN, &haldata->a1off, comp_id, "lineardeltakins.A1off"); - if(retval == 0) retval = hal_pin_float_newf(HAL_IN, &haldata->a2off, comp_id, "lineardeltakins.A2off"); - if(retval == 0) { *haldata->r = DELTA_RADIUS; *haldata->l = DELTA_DIAGONAL_ROD; - *haldata->j0off = JOINT_0_OFFSET; - *haldata->j1off = JOINT_1_OFFSET; - *haldata->j2off = JOINT_2_OFFSET; - *haldata->r1off = JOINT_1_RADIUS_OFFSET; - *haldata->r2off = JOINT_2_RADIUS_OFFSET; - *haldata->a1off = JOINT_1_ANGLE_OFFSET; - *haldata->a2off = JOINT_2_ANGLE_OFFSET; + *haldata->j0off = JOINT_0_OFFSET; + *haldata->j1off = JOINT_1_OFFSET; + *haldata->j2off = JOINT_2_OFFSET; + *haldata->r1off = JOINT_1_RADIUS_OFFSET; + *haldata->r2off = JOINT_2_RADIUS_OFFSET; + *haldata->a1off = JOINT_1_ANGLE_OFFSET; + *haldata->a2off = JOINT_2_ANGLE_OFFSET; } if(retval == 0) From ebd5f0bdc5adf18515e6ace919657242f5397ccf Mon Sep 17 00:00:00 2001 From: Ga-Ol-St Date: Wed, 1 Aug 2018 11:50:22 +0300 Subject: [PATCH 262/516] Fixing 3DOF configuration - same as in configs/ARM/BeagleBone/MendelMax-CRAMPS/mendelmax.py just added lineardelta configuration --- .../BeagleBone/Rostock-4DOF-CRAMPS/rostock-3dof.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/rostock-3dof.py b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/rostock-3dof.py index 8dbca486c2..b33673576a 100644 --- a/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/rostock-3dof.py +++ b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/rostock-3dof.py @@ -40,21 +40,20 @@ base.setup_stepper(section='AXIS_1', axisIndex=1, stepgenIndex=1, thread='servo-thread') # Z [2] Axis base.setup_stepper(section='AXIS_2', axisIndex=2, stepgenIndex=2, thread='servo-thread') - # Extruder, velocity controlled for i in range(0, numExtruders): base.setup_stepper(section='EXTRUDER_%i' % i, stepgenIndex=3, - axisIndex=(i+3), thread='servo-thread') + velocitySignal='ve-extrude-vel', thread='servo-thread') # Extruder Multiplexer base.setup_extruder_multiplexer(extruders=numExtruders, thread='servo-thread') # Stepper Multiplexer -#multiplexSections = [] -#for i in range(0, numExtruders): -# multiplexSections.append('EXTRUDER_%i' % i) -#base.setup_stepper_multiplexer(stepgenIndex=5, sections=multiplexSections, -# selSignal='extruder-sel', thread='servo-thread') +multiplexSections = [] +for i in range(0, numExtruders): + multiplexSections.append('EXTRUDER_%i' % i) +base.setup_stepper_multiplexer(stepgenIndex=4, sections=multiplexSections, + selSignal='extruder-sel', thread='servo-thread') # Fans for i in range(0, numFans): From 8450bff83a0ef8056283374328f1164d696a27b6 Mon Sep 17 00:00:00 2001 From: Ga-Ol-St Date: Wed, 1 Aug 2018 13:15:13 +0300 Subject: [PATCH 263/516] Switching to 3DOF configuration as default - more usable for community --- .../BeagleBone/Rostock-4DOF-CRAMPS/README.md | 35 ++++++++++++++++++- .../ARM/BeagleBone/Rostock-4DOF-CRAMPS/run.py | 2 +- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/README.md b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/README.md index 1ecf2f6def..69c2c7f9b7 100644 --- a/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/README.md +++ b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/README.md @@ -7,6 +7,39 @@ enable this please take a look at the Fabrikator-Mini-CRAMPS configuration. This configuration is using python configuration of HAL, have modular design, support 4 axis for Delta, using new Joint Angle Offsets and radius offsets to correct hardware build issues, -Configuration is using Velocity Extrusion mode. +Configuration is using Velocity Extrusion mode because Axis A is considered as Rotational Axis. To calibrate Delta use Dial indicator and following resource: http://www.escher3d.com/pages/wizards/wizarddelta.php + + +This config have 2 possible types of configuration +3DOF (default) - 3 degree of freedom (almost same as in configs/ARM/BeagleBone/MendelMax-CRAMPS/ with added lineardelta configuration) +4DOF - 4 degree of freedom (same as 3DOF + 4-th axis with required changes) + +To use 4DOF configuration: +change config filename in "run.py" file from "CRAMPS.3DOF.ini" to "CRAMPS.4DOF.ini" + +Joint offsets are configured in "CRAMPS.OTHER.inc" file under "[MACHINE]" section +new parameters: +JOINT_1_ANGLE_OFFSET - Degree of displacement from ideal JOINT position (positive or negative float value) +JOINT_1_RADIUS_OFFSET - JOINT Radius displacement from DELTA_R (positive or negative float value) +JOINT_2_ANGLE_OFFSET - Degree of displacement from ideal JOINT position (positive or negative float value) +JOINT_2_RADIUS_OFFSET - JOINT Radius displacement from DELTA_R (positive or negative float value) + +If parameter is missing in config - then it considered as "0.00" + +JOINT Angles are considered following way: +if you look at XY plane of LinearDelta printer then X0-Y0 is the center of print area +Line from center to X"DELTA_R"-Y0 points to 0 degree +Line from center to X0-Y"DELTA_R" points to 90 degree - JOINT_0 +JOINT_1 is displaced at 120 degree from JOINT_0 - (90+120) = 210 +JOINT_2 is displaced at 120 degree from JOINT_1 - (210+120) = 330 +and closing the loop +JOINT_0 is displaced at 120 degree from JOINT_2 - (330+120)= 450 = (360+90) = 90 + +in 4DOF configuration we have additional JOINT_3 (Rotational Axis - A) +it's considered as rotational axis on Y axis +Center of rotation going from Y"+DELTA_R",X0,Z0 to Y"-DELTA_R",X0,Z0 +Physicaly it`s looking like rotational device parallel to build plate with center of rotation going from 90 degree to (90+180) = 270 degree. + +4DOF configuration is considered as experimental - currently no slicer exist which can support 4-th axis, but you can use imagination. diff --git a/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/run.py b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/run.py index 39d86af4ab..8e324ec309 100644 --- a/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/run.py +++ b/configs/ARM/BeagleBone/Rostock-4DOF-CRAMPS/run.py @@ -16,7 +16,7 @@ if os.path.exists('/dev/video0'): # automatically start videoserver launcher.start_process('videoserver -i video.ini Webcam1') launcher.start_process("configserver -n MendelMax ~/Cetus ~/Machineface") - launcher.start_process('linuxcnc CRAMPS.4DOF.ini') + launcher.start_process('linuxcnc CRAMPS.3DOF.ini') while True: launcher.check_processes() time.sleep(1) From 5f9256193432dded84f955400a7a13233e744122 Mon Sep 17 00:00:00 2001 From: Alan Condit Date: Fri, 7 Sep 2018 14:52:27 -0700 Subject: [PATCH 264/516] Config changes for CRAMPS and Xylotex to run on Stretch Config changes to CRAMPS and Xylotex to run on Debian Stretch. --- configs/ARM/BeagleBone/CRAMPS/CRAMPS.bbio | 52 +++ configs/ARM/BeagleBone/CRAMPS/CRAMPS.hal | 26 +- configs/ARM/BeagleBone/CRAMPS/CRAMPS.ini | 48 ++- configs/ARM/BeagleBone/CRAMPS/setup.sh | 38 +- configs/ARM/BeagleBone/Xylotex/Xylotex.bbio | 27 ++ configs/ARM/BeagleBone/Xylotex/Xylotex.hal | 67 ++-- configs/ARM/BeagleBone/Xylotex/Xylotex.ini | 386 ++++++++++---------- configs/ARM/BeagleBone/Xylotex/setup.sh | 38 +- 8 files changed, 384 insertions(+), 298 deletions(-) create mode 100644 configs/ARM/BeagleBone/CRAMPS/CRAMPS.bbio mode change 100755 => 100644 configs/ARM/BeagleBone/CRAMPS/CRAMPS.hal mode change 100755 => 100644 configs/ARM/BeagleBone/CRAMPS/CRAMPS.ini mode change 100755 => 100644 configs/ARM/BeagleBone/CRAMPS/setup.sh create mode 100644 configs/ARM/BeagleBone/Xylotex/Xylotex.bbio mode change 100644 => 100755 configs/ARM/BeagleBone/Xylotex/Xylotex.hal mode change 100644 => 100755 configs/ARM/BeagleBone/Xylotex/Xylotex.ini diff --git a/configs/ARM/BeagleBone/CRAMPS/CRAMPS.bbio b/configs/ARM/BeagleBone/CRAMPS/CRAMPS.bbio new file mode 100644 index 0000000000..316172f2d2 --- /dev/null +++ b/configs/ARM/BeagleBone/CRAMPS/CRAMPS.bbio @@ -0,0 +1,52 @@ +# File generated with BB pin configurator +# title: CRAMPS +overlay cape-universal +overlay cape-bone-iio +#overlay cape-univ-emmc +#P8_03 default +#P8_04 default +#P8_05 default +#P8_06 default +P8_07 in #X Max +P8_08 in #X Min +P8_09 in #Y Max +P8_10 in #Y Min +P8_11 low #FET 1 : Heated Bed +P8_12 low #X Dir +P8_13 low #X Step +P8_14 low #Y Dir +P8_15 low #Y Step +P8_16 high #eMMC Enable +P8_17 in #Estop In +P8_18 low #Z Dir +P8_19 low #Z Step +#P8_20 default +#P8_21 default +#P8_22 low #Servo 4 +#P8_23 low #Servo 3 +#P8_24 low #Servo 2 +#P8_25 low #Servo 1 +P8_26 high #Estop out +P9_11 in #Z Max +P9_12 low #E0 Dir +P9_13 in #Z Min +P9_14 high #Axis Enable, act. low +P9_15 low #FET 2 : E0 +P9_16 low #E0 Step +P9_17 low #E1 Step +P9_18 low #E1 Dir +P9_21 low #FET 4 : E1 +P9_22 low #FET 6 +P9_23 low #Machine Power +P9_24 low #E2 Step +#P9_25 low #LED +P9_26 low #E2 Dir +P9_27 low #FET 3 : E2 +#P9_28 spi #SPI CS0 +#P9_29 spi #SPI MISO +#P9_30 spi #SPI MOSI +#P9_31 spi #SPI SCLK +P9_41 low #FET 5 +#P9_42 spics #SPI CS1 +P9_91 in #Reserved, con. to P9.41 +P9_92 in #Reserved, to P9.42 diff --git a/configs/ARM/BeagleBone/CRAMPS/CRAMPS.hal b/configs/ARM/BeagleBone/CRAMPS/CRAMPS.hal old mode 100755 new mode 100644 index 984194d97e..1b2ab66b52 --- a/configs/ARM/BeagleBone/CRAMPS/CRAMPS.hal +++ b/configs/ARM/BeagleBone/CRAMPS/CRAMPS.hal @@ -1,27 +1,30 @@ # ####################################### # -# HAL file for BeagleBone + BeBoPr cape with 4 steppers +# HAL file for BeagleBone + CRAMPS cape with 4 steppers # # Derived from example hm2-stepper config # # ######################################## # Launch the setup script to make sure hardware setup looks good +#loadusr -w /home/machinekit/machinekit/configs/ARM.BeagleBone.CRAMPS/setup.sh loadusr -w ./setup.sh +#loadusr -w config-pin -f ./CRAMPS.bbio # ################################### # Core EMC/HAL Loads # ################################### - # kinematics loadrt trivkins +#loadrt core_xy_kins -# motion controller, get name and thread periods from ini file # trajectory planner loadrt tp -loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES tp=tp kins=trivkins +# motion controller, get name and thread periods from ini file +loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES tp=tp kins=trivkins +#loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES tp=tp kins=core_xy_kins # load low-level drivers loadrt hal_bb_gpio output_pins=816,822,823,824,825,826,914,923,925 input_pins=807,808,809,810,817,911,913 @@ -31,14 +34,16 @@ loadrt limit1 count=2 # Python user-mode HAL module to read ADC value and generate a thermostat output for PWM -# c = analog input channel and thermistor table +# t = Thermistor table (only epcos_B57560G1104 or 1 supported for now) +# a = analog input channel +#loadusr -Wn Therm ./ReadTemp.py -n Therm --num_chan 2 -t 1 1 -a 4 5 loadusr -Wn Therm hal_temp_bbb -n Therm -c 04:epcos_B57560G1104,05:epcos_B57560G1104 -b CRAMPS # ################################################ # THREADS # ################################################ - -addf hpg.capture-position servo-thread +# hpg = [PRUCONF](DRIVER) +addf hpg.capture-position servo-thread addf bb_gpio.read servo-thread addf motion-command-handler servo-thread addf motion-controller servo-thread @@ -46,19 +51,16 @@ addf pid.0.do-pid-calcs servo-thread addf pid.1.do-pid-calcs servo-thread addf limit1.0 servo-thread addf limit1.1 servo-thread -addf hpg.update servo-thread +addf hpg.update servo-thread addf bb_gpio.write servo-thread # ###################################################### # Axis-of-motion Specific Configs (not the GUI) # ###################################################### - - # ################ # X [0] Axis # ################ - # axis enable chain newsig emcmot.00.enable bit sets emcmot.00.enable FALSE @@ -238,7 +240,7 @@ net emcmot.00.enable => bb_gpio.p9.out-23 # Tie machine power signal to the CRAMPS LED # Feel free to tie any other signal you like to the LED -net emcmot.00.enable => bb_gpio.p9.out-25 +#net emcmot.00.enable => bb_gpio.p9.out-25 # ################ # Limit Switches diff --git a/configs/ARM/BeagleBone/CRAMPS/CRAMPS.ini b/configs/ARM/BeagleBone/CRAMPS/CRAMPS.ini old mode 100755 new mode 100644 index bb92463618..abc6aada1e --- a/configs/ARM/BeagleBone/CRAMPS/CRAMPS.ini +++ b/configs/ARM/BeagleBone/CRAMPS/CRAMPS.ini @@ -1,13 +1,16 @@ [PRUCONF] DRIVER=hal_pru_generic CONFIG=pru=0 num_stepgens=4 num_pwmgens=6 -PRUBIN=xenomai/pru_generic.bin - +#PRUBIN=xenomai/pru_generic.bin +PRUBIN=rt-preempt/pru_generic.bin +############################################################################### +# Hardware Abstraction Layer section +############################################################################### [EMC] # Name of machine, for use with display, etc. -MACHINE = MendelMax-CRAMPS +MACHINE = CRAMPS # Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others #DEBUG = 0x00000003 @@ -15,14 +18,14 @@ MACHINE = MendelMax-CRAMPS DEBUG = 0 - - +############################################################################### +# Sections for display options +############################################################################### [DISPLAY] - # Name of display program, e.g., tkemc +DISPLAY = axis #DISPLAY = tkemc #DISPLAY = gscreen -DISPLAY = axis # Touchy currently won't work without some hardware buttons/jog-wheel #DISPLAY = touchy @@ -64,6 +67,9 @@ jpg = image-to-gcode py = python +############################################################################### +# Task controller section +############################################################################### [TASK] # Name of task controller program, e.g., milltask @@ -73,16 +79,16 @@ TASK = milltask CYCLE_TIME = 0.010 - - +############################################################################### +# Part program interpreter section +############################################################################### [RS274NGC] - # File containing interpreter variables PARAMETER_FILE = pru-stepper.var - - - +############################################################################### +# Motion control section +############################################################################### [EMCMOT] EMCMOT = motmod @@ -97,8 +103,9 @@ COMM_WAIT = 0.010 SERVO_PERIOD = 1000000 - - +############################################################################### +# Hardware Abstraction Layer section +############################################################################### [HAL] # The run script first uses halcmd to execute any HALFILE @@ -107,7 +114,7 @@ SERVO_PERIOD = 1000000 # list of hal config files to run through halcmd # files are executed in the order in which they appear -HALFILE = CRAMPS.hal +HALFILE = CRAMPS.hal # list of halcmd commands to execute # commands are executed in the order in which they appear @@ -116,6 +123,9 @@ HALFILE = CRAMPS.hal POSTGUI_HALFILE = 3D.postgui.hal +############################################################################### +# Trajectory planner section +############################################################################### [TRAJ] AXES = 4 @@ -132,6 +142,9 @@ MAX_LINEAR_VELOCITY = 200.00 +############################################################################### +# Axes sections +############################################################################### [AXIS_0] # @@ -186,6 +199,7 @@ STEPSPACE = 1000 +################################################################ [AXIS_1] TYPE = LINEAR @@ -226,6 +240,7 @@ STEPSPACE = 1000 +################################################################ [AXIS_2] TYPE = LINEAR @@ -267,6 +282,7 @@ STEPSPACE = 1000 +################################################################ [AXIS_3] TYPE = ANGULAR diff --git a/configs/ARM/BeagleBone/CRAMPS/setup.sh b/configs/ARM/BeagleBone/CRAMPS/setup.sh old mode 100755 new mode 100644 index 454b4603e5..83af1119d1 --- a/configs/ARM/BeagleBone/CRAMPS/setup.sh +++ b/configs/ARM/BeagleBone/CRAMPS/setup.sh @@ -31,29 +31,21 @@ dir_err () { exit 1 } -SLOTS=/sys/devices/bone_capemgr.*/slots - -# Make sure required device tree overlay(s) are loaded -for DTBO in cape-universal cape-bone-iio ; do - - if grep -q $DTBO $SLOTS ; then - echo $DTBO overlay found - else - echo Loading $DTBO overlay - sudo -A su -c "echo $DTBO > $SLOTS" || dtbo_err - sleep 1 - fi -done; - -if [ ! -r /sys/devices/ocp.*/helper.*/AIN0 ] ; then - echo Analog input files not found in /sys/devices/ocp.*/helper.* >&2 +PRU=/sys/class/uio/uio0 +echo -n "Waiting for $PRU " + +while [ ! -r $PRU ] +do + echo -n "." + sleep 1 +done +echo OK + +if [ ! -r $PRU ] ; then + echo PRU control files not found in $PRU >&2 exit 1; fi -if [ ! -r /sys/class/uio/uio0 ] ; then - echo PRU control files not found in /sys/class/uio/uio0 >&2 - exit 1; -fi # Export GPIO pins: # One pin needs to be exported to enable the low-level clocks for the GPIO @@ -90,7 +82,7 @@ sudo $(which config-pin) -f - <<- EOF P8.19 low # Z Step # eMMC signals, uncomment *ONLY* if you have disabled the on-board eMMC! -# Machinekit images disable eMMC and HDMI audio by default in uEnv.txt: +# MachineKit images disable eMMC and HDMI audio by default in uEnv.txt: # capemgr.disable_partno=BB-BONELT-HDMI,BB-BONE-EMMC-2G # P8.22 low # Servo 4 # P8.23 low # Servo 3 @@ -113,7 +105,7 @@ sudo $(which config-pin) -f - <<- EOF P9.22 low # FET 6 P9.23 low # Machine Power P9.24 low # E2 Step - P9.25 low # LED +# P9.25 low # LED P9.26 low # E2 Dir P9.27 low # FET 3 : E2 P9.28 low # SPI CS0 @@ -124,7 +116,7 @@ sudo $(which config-pin) -f - <<- EOF P9.41 low # FET 5 P9.91 in # Reserved, connected to P9.41 - P9.42 low # SPI CS1 +# P9.42 low # SPI CS1 P9.92 in # Reserved, connected to P9.42 EOF diff --git a/configs/ARM/BeagleBone/Xylotex/Xylotex.bbio b/configs/ARM/BeagleBone/Xylotex/Xylotex.bbio new file mode 100644 index 0000000000..e4236c5015 --- /dev/null +++ b/configs/ARM/BeagleBone/Xylotex/Xylotex.bbio @@ -0,0 +1,27 @@ +# File generated with BB pin configurator +# title: Xylotex +overlay cape-universal +overlay cape-bone-iio +#overlay cape-univ-emmc +P8_07 out # gpio2.2 Enable System +P8_09 in # gpio2.5 ESTOPin +P8_10 in # gpio2.4 XLIM +P8_11 out # gpio1.13 X_Dir +P8_12 out # gpio1.12 X_Step +P8_13 out # gpio0.23 PWM0/SPINDLE +P8_14 in # gpio0.26 YLIM +P8_15 out # gpio1.15 Y_Dir +P8_16 out # gpio1.14 Y_Step +P8_18 in # gpio2.1 ZLIM +P8_19 out # gpio0.22 PWM1 +P8_26 out # ESTOP Out (ENA_LED) +P9_11 out # gpio0.31 A_Step +P9_13 out # gpio0.30 A_Dir +P9_14 out # gpio1.18 PWM2 +P9_15 out # gpio1.16 Z_Step +#P9_17 out # gpio0.5 SCS +#P9_18 in # gpio0.4 SDI +#P9_21 out # gpio0.3 SDO +#P9_22 out # gpio0.2 SCK +P9_23 out # gpio1.17 Z_Dir + diff --git a/configs/ARM/BeagleBone/Xylotex/Xylotex.hal b/configs/ARM/BeagleBone/Xylotex/Xylotex.hal old mode 100644 new mode 100755 index b31459b72b..fc8d9e11e9 --- a/configs/ARM/BeagleBone/Xylotex/Xylotex.hal +++ b/configs/ARM/BeagleBone/Xylotex/Xylotex.hal @@ -2,7 +2,7 @@ # The board also has a pair of a set of four 0805 size jumper resistors # these can be used to output either the standard Spindle/Mist/flood and # input ALIM from the DB25 pins -# or allow BBB SPI singnals to be routed to the DB25 connector instead. +# or allow BBB SPI signals to be routed to the DB25 connector instead. # The ALIM RC buffer Capacitor would need to change if this # option was used. The LIM Switch input signals are pulled to 3V3 through # 10K resistors @@ -15,43 +15,44 @@ # go directly to the BBB # At powerup the LVC541 enable signals are pulled high, disabling the # drivers until -# the BBB and Machinekit pull the enable signal low. +# the BBB and LinuxCNC pull the enable signal low. # ######################################## # Launch the setup script to make sure hardware setup looks good +#loadusr -w /home/machinekit/machinekit/configs/ARM.BeagleBone.Xylotex/setup.sh loadusr -w ./setup.sh +#loadusr -w config-pin -f ./Xylotex.bbio # ################################### # Core EMC/HAL Loads # ################################### - # kinematics loadrt trivkins -# motion controller, get name and thread periods from ini file # trajectory planner loadrt tp -loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES tp=tp kins=trivkins +# motion controller, get name and thread periods from ini file +loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES tp=tp kins=trivkins # load low-level drivers -loadrt hal_bb_gpio output_pins=107,113,119,126,214 input_pins=109,110,114,118,241 -loadrt [PRUCONF](DRIVER) prucode=$(HAL_RTMOD_DIR)/[PRUCONF](PRUBIN) [PRUCONF](CONFIG) halname=hpg -#(JP) Not suing PID loop so comment out +loadrt hal_bb_gpio output_pins=807,811,812,813,815,816,819,826,914,915,923,913,911 input_pins=809,810,814,818 + +loadrt [PRUCONF](DRIVER) prucode=$(LINUXCNC_HOME)/[PRUCONF](PRUBIN) [PRUCONF](CONFIG) halname=hpg pru_period=25000 loadrt pid count=4 loadrt limit1 count=2 # ################################################ # THREADS # ################################################ - +# hpg = [PRUCONF](DRIVER) addf hpg.capture-position servo-thread addf bb_gpio.read servo-thread addf motion-command-handler servo-thread addf motion-controller servo-thread -#(JP) Not doing PID for temperature sensor for PWM output +# Not doing PID for temperature sensor for PWM output addf pid.0.do-pid-calcs servo-thread addf pid.1.do-pid-calcs servo-thread addf pid.2.do-pid-calcs servo-thread @@ -65,11 +66,9 @@ addf bb_gpio.write servo-thread # ###################################################### # Axis-of-motion Specific Configs (not the GUI) # ###################################################### - # ################ # X [0] Axis # ################ - # axis enable chain newsig emcmot.00.enable bit sets emcmot.00.enable FALSE @@ -100,8 +99,8 @@ setp hpg.stepgen.00.maxaccel [AXIS_0]STEPGEN_MAX_ACC setp hpg.stepgen.00.control-type 1 setp hpg.stepgen.00.stepinvert [AXIS_0]STEP_INVERT #setp hpg.stepgen.00.step_type 0 -setp hpg.stepgen.00.steppin 0x4C -setp hpg.stepgen.00.dirpin 0x4D +setp hpg.stepgen.00.steppin 812 +setp hpg.stepgen.00.dirpin 811 # set PID loop gains from inifile setp pid.0.Pgain [AXIS_0]P @@ -114,14 +113,13 @@ setp pid.0.FF2 [AXIS_0]FF2 setp pid.0.deadband [AXIS_0]DEADBAND setp pid.0.maxoutput [AXIS_0]MAX_OUTPUT -#(JP) Add home switch input on DB25-11 +# Add X home switch input on DB25-11 net home-x bb_gpio.p8.in-10 => axis.0.home-sw-in #setp bb_gpio.p8.in-10.invert 1 # ################ # Y [1] Axis # ################ - # axis enable chain newsig emcmot.01.enable bit sets emcmot.01.enable FALSE @@ -152,8 +150,8 @@ setp hpg.stepgen.01.maxaccel [AXIS_1]STEPGEN_MAX_ACC setp hpg.stepgen.01.control-type 1 setp hpg.stepgen.01.stepinvert [AXIS_1]STEP_INVERT #setp hpg.stepgen.01.step_type 0 -setp hpg.stepgen.01.steppin 0x4E -setp hpg.stepgen.01.dirpin 0x4F +setp hpg.stepgen.01.steppin 816 +setp hpg.stepgen.01.dirpin 815 # set PID loop gains from inifile setp pid.1.Pgain [AXIS_1]P @@ -166,15 +164,12 @@ setp pid.1.FF2 [AXIS_1]FF2 setp pid.1.deadband [AXIS_1]DEADBAND setp pid.1.maxoutput [AXIS_1]MAX_OUTPUT - -#(JP) Add home switch input on DB25-12 +# Add Y home switch input on DB25-12 net home-y bb_gpio.p8.in-14 => axis.1.home-sw-in -#setp bb_gpio.p8.in-14.invert 1 # ################ # Z [2] Axis # ################ - # axis enable chain newsig emcmot.02.enable bit sets emcmot.02.enable FALSE @@ -202,11 +197,11 @@ setp hpg.stepgen.02.position-scale [AXIS_2]SCALE setp hpg.stepgen.02.maxvel [AXIS_2]STEPGEN_MAX_VEL setp hpg.stepgen.02.maxaccel [AXIS_2]STEPGEN_MAX_ACC -setp hpg.stepgen.02.control-type 1 +setp hpg.stepgen.02.control-type 1 setp hpg.stepgen.02.stepinvert [AXIS_2]STEP_INVERT #setp hpg.stepgen.02.step_type 0 -setp hpg.stepgen.02.steppin 0x50 -setp hpg.stepgen.02.dirpin 0x51 +setp hpg.stepgen.02.steppin 915 +setp hpg.stepgen.02.dirpin 923 # set PID loop gains from inifile setp pid.2.Pgain [AXIS_2]P @@ -219,15 +214,12 @@ setp pid.2.FF2 [AXIS_2]FF2 setp pid.2.deadband [AXIS_2]DEADBAND setp pid.2.maxoutput [AXIS_2]MAX_OUTPUT - -#(JP) Add home switch input on DB25-13 +# Add Z home switch input on DB25-13 net home-z bb_gpio.p8.in-18 => axis.2.home-sw-in -#setp bb_gpio.p8.in-18.invert 1 # ################ # A [3] Axis # ################ - # axis enable chain newsig emcmot.03.enable bit sets emcmot.03.enable FALSE @@ -258,8 +250,8 @@ setp hpg.stepgen.03.maxaccel [AXIS_3]STEPGEN_MAX_ACC setp hpg.stepgen.03.control-type 1 setp hpg.stepgen.03.stepinvert [AXIS_3]STEP_INVERT #setp hpg.stepgen.03.step_type 0 -setp hpg.stepgen.03.steppin 0x3E -setp hpg.stepgen.03.dirpin 0x3F +setp hpg.stepgen.03.steppin 911 +setp hpg.stepgen.03.dirpin 913 # set PID loop gains from inifile setp pid.3.Pgain [AXIS_3]P @@ -273,9 +265,8 @@ setp pid.3.deadband [AXIS_3]DEADBAND setp pid.3.maxoutput [AXIS_3]MAX_OUTPUT -#(JP) Add home switch input -net home-a bb_gpio.p9.in-41 => axis.3.home-sw-in -#setp bb_gpio.p9.in-41.invert 1 +# Add A home switch input +#net home-a bb_gpio.p9.in-41 => axis.3.home-sw-in # ################################################## # Standard I/O - EStop, Enables, Limit Switches, Etc @@ -291,7 +282,7 @@ net tool-change-loop iocontrol.0.tool-change => iocontrol.0.tool-changed # (LOW) or unactive (HIGH) state # All external Inputs and Outputs on external boards # should have pullups/downs since when the interface board is -# not enabled, it will look disconnected for all signals +# not enabled, it will look dosconnected for all signals # this pin is output on DB25-1 # it is also used to enable the LVC541 driver/receiver on the interface board @@ -316,11 +307,16 @@ setp bb_gpio.p8.out-26.invert 1 #net probe motion.probe-input <= bb_gpio.p8.in-18 #setp bb_gpio.p8.in-18.invert 1 +# this currently goes to an LED on the interface board +# it is simply a duplicate of the enable signal on DB25-1 right now +setp bb_gpio.p8.out-26.invert 1 + # this input signal must be active LOW to allow the system to energize. # this should be fed through an NC STOP type switch from DB25-1 to DB25-10 net estop-in bb_gpio.p8.in-09 => iocontrol.0.emc-enable-in setp bb_gpio.p8.in-09.invert 1 + # This output is on DB25-14 and is currently tied to spindle control (M3/M5) #net Output1 bb_gpio.p8.out-13 => motion.spindle-on #setp bb_gpio.p8.out-13.invert 1 @@ -336,4 +332,3 @@ setp bb_gpio.p8.out-19.invert 1 net Output3 bb_gpio.p9.out-14 => halui.flood.is-on setp bb_gpio.p9.out-14.invert 1 - diff --git a/configs/ARM/BeagleBone/Xylotex/Xylotex.ini b/configs/ARM/BeagleBone/Xylotex/Xylotex.ini old mode 100644 new mode 100755 index a941dd7fdc..c2975d2456 --- a/configs/ARM/BeagleBone/Xylotex/Xylotex.ini +++ b/configs/ARM/BeagleBone/Xylotex/Xylotex.ini @@ -1,38 +1,42 @@ [PRUCONF] DRIVER=hal_pru_generic CONFIG=pru=1 num_stepgens=4 -PRUBIN=xenomai/pru_generic.bin +#PRUBIN=xenomai/pru_generic.bin +#PRUBIN=lib/linuxcnc/rt-preempt/pru_generic.bin +PRUBIN=rt-preempt/pru_generic.bin +############################################################################### +# General section +############################################################################### [EMC] # Name of machine, for use with display, etc. MACHINE = Xylotex # Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others +DEBUG = 0 #DEBUG = 0x00000003 #DEBUG = 0x00000007 -DEBUG = 0 - - +############################################################################### +# Sections for display options +############################################################################### [DISPLAY] -#uncomment the line below if the shuttleexpress is installed -#(JP)GLADEVCP = shuttlexpress.glade -#leave the follwoing two alone - -#EMBED_TAB_NAME = GladeVCP demo -#EMBED_TAB_COMMAND = halcmd loadusr -Wn gladevcp gladevcp -c gladevcp -u shuttlexpress.py -x {XID} shuttlexpress.glade - # Name of display program, e.g., tkemc DISPLAY = axis #DISPLAY = jtgremlin - -#EDITOR = mousepad - # Touchy currently will not work without some hardware buttons/jog-wheel #DISPLAY = touchy +#uncomment the line below if the shuttleexpress is installed +#GLADEVCP = shuttlexpress.glade +#leave the following two alone +#EMBED_TAB_NAME = GladeVCP demo +#EMBED_TAB_COMMAND = halcmd loadusr -Wn gladevcp gladevcp -c gladevcp -u shuttlexpress.py -x {XID} shuttlexpress.glade + +#EDITOR = mousepad + # Cycle time, in seconds, that display will sleep between polls CYCLE_TIME = 0.200 @@ -40,19 +44,22 @@ CYCLE_TIME = 0.200 HELP_FILE = tklinucnc.txt # Initial display setting for position, RELATIVE or MACHINE -POSITION_OFFSET = RELATIVE +POSITION_OFFSET = MACHINE # Initial display setting for position, COMMANDED or ACTUAL POSITION_FEEDBACK = ACTUAL # Highest value that will be allowed for feed override, 1.0 = 100% MAX_FEED_OVERRIDE = 1.0 +MAX_SPINDLE_OVERRIDE = 1.0 +MIN_SPINDLE_OVERRIDE = 0.25 # Prefix to be used +#PROGRAM_PREFIX = /home/machinekit/machinekit/nc_files PROGRAM_PREFIX = ~/machinekit/nc_files/ # Introductory graphic -INTRO_GRAPHIC = machinekit.gif +INTRO_GRAPHIC = linuxcnc.gif INTRO_TIME = 5 # Increments for the JOG section @@ -70,6 +77,9 @@ jpg = image-to-gcode py = python +############################################################################### +# Task controller section +############################################################################### [TASK] # Name of task controller program, e.g., milltask @@ -79,195 +89,215 @@ TASK = milltask CYCLE_TIME = 0.010 - - +############################################################################### +# Part program interpreter section +############################################################################### [RS274NGC] - # File containing interpreter variables PARAMETER_FILE = pru-stepper.var RS274NGC_STARTUP_CODE = G00 G17 G21 G40 G49 G64 P0.1 Q0.1 G80 G90 +############################################################################### +# Motion control section +############################################################################### [EMCMOT] - EMCMOT = motmod - # Timeout for comm to emcmot, in seconds COMM_TIMEOUT = 1.0 - # Interval between tries to emcmot, in seconds COMM_WAIT = 0.010 - # Servo task period, in nanoseconds SERVO_PERIOD = 1000000 - +############################################################################### +# Hardware Abstraction Layer section +############################################################################### [HAL] - +HALUI = halui # The run script first uses halcmd to execute any HALFILE # files, and then to execute any individual HALCMD commands. - -# list of hal config files to run through halcmd -# files are executed in the order in which they appear - HALFILE = Xylotex.hal -#(JP) uncomment the line below if the shuttlexpress jig wheel is used +#HALFILE = custom.hal +# uncomment the line below if the shuttlexpress jig wheel is used #HALFILE = ../../../shuttlexpress.hal - -# list of halcmd commands to execute -# commands are executed in the order in which they appear +#POSTGUI_HALFILE = Xylotex.postgui.hal +# list of hal config files to run through halcmd +# files are executed in the order in which they appear #HALCMD = save neta -HALUI = halui -POSTGUI_HALFILE = Xylotex.postgui.hal +############################################################################### +# Hardware Abstraction Layer User Interface section +############################################################################### +[HALUI] +MDI_COMMAND = G0 X0 Y0 Z0 +MDI_COMMAND = G38.2 Z-2 f16 +MDI_COMMAND = G92 Z0.25 +MDI_COMMAND = G0 Z0.75 +MDI_COMMAND = G92 x2 y-.5 -[TRAJ] +############################################################################### +# Trajectory planner section +############################################################################### +[TRAJ] AXES = 4 COORDINATES = X Y Z A +HOME = 1 1 0 2 MAX_ANGULAR_VELOCITY = 45.00 DEFAULT_ANGULAR_VELOCITY = 4.50 LINEAR_UNITS = inch ANGULAR_UNITS = degree CYCLE_TIME = 0.010 DEFAULT_VELOCITY = 2.0 -MAX_LINEAR_VELOCITY = 2.0 +DEFAULT_ACCELERATION = 15.0 +MAX_LINEAR_VELOCITY = 2.6 NO_FORCE_HOMING = 1 +# POSITION_FILE = position.txt +#PROBE_INDEX = 0 +#PROBE_POLARITY = 1 -################################################################ +############################################################################### +# section for main IO controller parameters +############################################################################### +[EMCIO] + +#- Name of IO controller program, e.g., io +EMCIO = io + +#- cycle time, in seconds +CYCLE_TIME = 0.100 + +#- tool table file +TOOL_TABLE = mill.tbl + +#- Tool Change Position specifies the location to move to for a tool change +#TOOL_CHANGE_POSITION = 0 0 2 + +############################################################################### +# Axes sections +############################################################################### [AXIS_0] # -# Step timing is 40 us steplen + 40 us stepspace -# That gives 80 us step period = 12.5 KHz step freq -# -# Bah, even software stepping can handle that, hm2 doesnt buy you much with -# such slow steppers. +# Step timing is 25 us steplen + 25 us stepspace +# That gives 50 us step period = 20 KHz step freq # -# Scale is 200 steps/rev * 5 revs/inch = 1000 steps/inch +# Scale is 200 steps/rev * 5 revs/inch * 2 microsteps = 2000 steps/inch # -# This gives a maxvel of 12.5/1 = 12.5 ips +# This gives a maxvel of 20000/2000 = 10 ips # TYPE = LINEAR -MAX_VELOCITY = 1.0 +MAX_VELOCITY = 2.0 MAX_ACCELERATION = 15.0 # Set Stepgen max 20% higher than the axis -STEPGEN_MAX_VEL = 1.2 +STEPGEN_MAX_VEL = 2.6 STEPGEN_MAX_ACC = 18.75 BACKLASH = 0.000 -# scale is 200 steps/rev * 8 mirostep * 10 tpi -SCALE = 32000 +SCALE = 2000 -MIN_LIMIT = -0.0 -MAX_LIMIT = 20.0 +MIN_LIMIT = -0.0 +MAX_LIMIT = 13.0 -FERROR = .1 -MIN_FERROR = 0.05 +FERROR = .1 +MIN_FERROR = 0.05 -HOME = 0.000 -HOME_OFFSET = 0.00 -HOME_SEARCH_VEL = -.1 -HOME_LATCH_VEL = 0.2 -#HOME_USE_INDEX = YES -#HOME_IGNORE_LIMITS = YES -#HOME_IS_SHARED = 1 -#HOME_SEQUENCE = 2 +HOME = 0.000 +HOME_OFFSET = -0.1 +HOME_SEARCH_VEL = -1.5 +HOME_LATCH_VEL = 0.25 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = YES +HOME_IS_SHARED = 1 +HOME_SEQUENCE = 1 # these are in nanoseconds -DIRSETUP = 1000 -DIRHOLD = 20000 -STEPLEN = 500 -STEPSPACE = 4000 +DIRSETUP = 25000 +DIRHOLD = 25000 +STEPLEN = 25000 +STEPSPACE = 25000 # Set to one for active low step pulses -STEP_INVERT = 0 +STEP_INVERT = 0 # PID tuning params -DEADBAND = 0 -P = 50 -I = 0 -D = 0 -FF0 = 0 -FF1 = 1 -FF2 = 0 -BIAS = 0 -MAX_OUTPUT = 0 - +DEADBAND = 0 +P = 50 +I = 0 +D = 0 +FF0 = 0 +FF1 = 1 +FF2 = 0 +BIAS = 0 +MAX_OUTPUT = 0 ################################################################ [AXIS_1] # -# Step timing is 40 us steplen + 40 us stepspace -# That gives 80 us step period = 12.5 KHz step freq -# -# Bah, even software stepping can handle that, hm2 doesnt buy you much with -# such slow steppers. +# Step timing is 25 us steplen + 25 us stepspace +# That gives 50 us step period = 12.5 KHz step freq # -# Scale is 200 steps/rev * 5 revs/inch = 1000 steps/inch +# Scale is 200 steps/rev * 5 revs/inch * 2 microsteps = 2000 steps/inch # -# This gives a maxvel of 12.5/1 = 12.5 ips +# This gives a maxvel of 20000/2000 = 10 ips # TYPE = LINEAR -MAX_VELOCITY = 1.0 +MAX_VELOCITY = 2.0 MAX_ACCELERATION = 15.0 # Set Stepgen max 20% higher than the axis -STEPGEN_MAX_VEL = 1.2 +STEPGEN_MAX_VEL = 2.6 STEPGEN_MAX_ACC = 18.75 BACKLASH = 0.000 -# scale is 200 steps/rev * 8 mirostep * 10 tpi -SCALE = 32000 +# scale is 200 steps/rev * 2 microstep * 5 tpi = 2000 steps/inch +SCALE = 2000 -MIN_LIMIT = -0.0 -MAX_LIMIT = 20.0 +MIN_LIMIT = -0.0 +MAX_LIMIT = 12.0 -FERROR = .1 -MIN_FERROR = 0.05 +FERROR = .1 +MIN_FERROR = 0.05 -HOME = 0.000 -HOME_OFFSET = 0.00 -HOME_SEARCH_VEL = -.1 -HOME_LATCH_VEL = 0.2 -#HOME_USE_INDEX = YES -#HOME_IGNORE_LIMITS = YES -#HOME_IS_SHARED = 1 -#HOME_SEQUENCE = 2 +HOME = 0.000 +HOME_OFFSET = -0.1 +HOME_SEARCH_VEL = -1.5 +HOME_LATCH_VEL = 0.250 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = YES +HOME_IS_SHARED = 1 +HOME_SEQUENCE = 1 # these are in nanoseconds -DIRSETUP = 1000 -DIRHOLD = 20000 -STEPLEN = 500 -STEPSPACE = 4000 +DIRSETUP = 25000 +DIRHOLD = 25000 +STEPLEN = 25000 +STEPSPACE = 25000 # Set to one for active low step pulses -STEP_INVERT = 0 +STEP_INVERT = 0 # PID tuning params -DEADBAND = 0 -P = 50 -I = 0 -D = 0 -FF0 = 0 -FF1 = 1 -FF2 = 0 -BIAS = 0 -MAX_OUTPUT = 0 +DEADBAND = 0 +P = 50 +I = 0 +D = 0 +FF0 = 0 +FF1 = 1 +FF2 = 0 +BIAS = 0 +MAX_OUTPUT = 0 ################################################################ [AXIS_2] # -# Step timing is 40 us steplen + 40 us stepspace -# That gives 80 us step period = 12.5 KHz step freq -# -# Bah, even software stepping can handle that, hm2 doesnt buy you much with -# such slow steppers. +# Step timing is 25 us steplen + 25 us stepspace +# That gives 50 us step period = 20 KHz step freq # -# Scale is 200 steps/rev * 5 revs/inch = 1000 steps/inch -# -# This gives a maxvel of 12.5/1 = 12.5 ips +# SCALE is 200 steps/rev * 2 microstep * 4:1 gearing * 5 tpi = 8000 steps/inch +# This gives a maxvel of 20000/8000 = 2.5 ips # TYPE = LINEAR MAX_VELOCITY = 1.0 @@ -277,55 +307,50 @@ STEPGEN_MAX_VEL = 1.2 STEPGEN_MAX_ACC = 18.75 BACKLASH = 0.000 -# scale is 200 steps/rev * 8 mirostep * 10 tpi -SCALE = 32000 +# SCALE is 200 steps/rev * 2 microstep * 4:1 gearing * 5 turns/inch = 8000 steps/inch +SCALE = 8000 -MIN_LIMIT = -20.0 -MAX_LIMIT = 20.0 +MIN_LIMIT = 0.0 +MAX_LIMIT = 5.0 FERROR = .1 MIN_FERROR = 0.05 -HOME = 0.000 -HOME_OFFSET = 0.00 -HOME_SEARCH_VEL = -.1 -HOME_LATCH_VEL = 0.2 -#HOME_USE_INDEX = YES -#HOME_IGNORE_LIMITS = YES -#HOME_IS_SHARED = 1 -#HOME_SEQUENCE = 2 +HOME = 0.000 +HOME_OFFSET = 0.00 +HOME_SEARCH_VEL = 1.0 +HOME_LATCH_VEL = -0.250 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = YES +HOME_IS_SHARED = 1 +HOME_SEQUENCE = 0 # these are in nanoseconds -DIRSETUP = 1000 -DIRHOLD = 20000 -STEPLEN = 500 -STEPSPACE = 4000 +DIRSETUP = 25000 +DIRHOLD = 25000 +STEPLEN = 25000 +STEPSPACE = 25000 # Set to one for active low step pulses -STEP_INVERT = 0 +STEP_INVERT = 0 # PID tuning params -DEADBAND = 0 -P = 50 -I = 0 -D = 0 -FF0 = 0 -FF1 = 1 -FF2 = 0 -BIAS = 0 -MAX_OUTPUT = 0 +DEADBAND = 0 +P = 50 +I = 0 +D = 0 +FF0 = 0 +FF1 = 1 +FF2 = 0 +BIAS = 0 +MAX_OUTPUT = 0 ################################################################ [AXIS_3] # -# Step timing is 40 us steplen + 40 us stepspace -# That gives 80 us step period = 12.5 KHz step freq -# -# Bah, even software stepping can handle that, hm2 doesnt buy you much with -# such slow steppers. -# -# Scale is 200 steps/rev * 5 revs/inch = 1000 steps/inch +# Step timing is 25 us steplen + 25 us stepspace +# That gives 50 us step period = 20 KHz step freq # # This gives a maxvel of 12.5/1 = 12.5 ips # @@ -337,8 +362,8 @@ STEPGEN_MAX_VEL = 1.2 STEPGEN_MAX_ACC = 18.75 BACKLASH = 0.000 -# scale is 200 steps/rev * 8 mirostep * 10 tpi -SCALE = 32000 +# SCALE is 200 steps/rev * 2 microstep * 5 revs/inch = 2000 steps/inch +SCALE = 2000 MIN_LIMIT = -0.0 MAX_LIMIT = 15.0 @@ -349,44 +374,29 @@ MIN_FERROR = 0.05 HOME = 0.000 HOME_OFFSET = 0.00 HOME_SEARCH_VEL = -.1 -HOME_LATCH_VEL = 0.2 +HOME_LATCH_VEL = 0.2 #HOME_USE_INDEX = YES #HOME_IGNORE_LIMITS = YES -#HOME_IS_SHARED = 1 -#HOME_SEQUENCE = 2 +#HOME_IS_SHARED = 1 +#HOME_SEQUENCE = 2 # these are in nanoseconds -DIRSETUP = 1000 -DIRHOLD = 20000 -STEPLEN = 500 -STEPSPACE = 4000 +DIRSETUP = 25000 +DIRHOLD = 25000 +STEPLEN = 25000 +STEPSPACE = 25000 # Set to one for active low step pulses -STEP_INVERT = 0 +STEP_INVERT = 0 # PID tuning params -DEADBAND = 0 -P = 50 -I = 0 -D = 0 -FF0 = 0 -FF1 = 1 -FF2 = 0 -BIAS = 0 -MAX_OUTPUT = 0 - - - - -############################ - -[EMCIO] - -# Name of IO controller program, e.g., io -EMCIO = io - -# cycle time, in seconds -CYCLE_TIME = 0.100 +DEADBAND = 0 +P = 50 +I = 0 +D = 0 +FF0 = 0 +FF1 = 1 +FF2 = 0 +BIAS = 0 +MAX_OUTPUT = 0 -# tool table file -TOOL_TABLE = tool.tbl diff --git a/configs/ARM/BeagleBone/Xylotex/setup.sh b/configs/ARM/BeagleBone/Xylotex/setup.sh index a2504a06c1..f5e1de93da 100755 --- a/configs/ARM/BeagleBone/Xylotex/setup.sh +++ b/configs/ARM/BeagleBone/Xylotex/setup.sh @@ -31,27 +31,18 @@ dir_err () { exit 1 } -SLOTS=/sys/devices/bone_capemgr.*/slots +PRU=/sys/class/uio/uio0 +echo -n "Waiting for $PRU " -# Make sure required device tree overlay(s) are loaded -for DTBO in cape-universal cape-bone-iio ; do +while [ ! -r $PRU ] +do + echo -n "." + sleep 1 +done +echo OK - if grep -q $DTBO $SLOTS ; then - echo $DTBO overlay found - else - echo Loading $DTBO overlay - sudo -A bash -c "echo $DTBO > $SLOTS" || dtbo_err - sleep 1 - fi -done; - -if [ ! -r /sys/devices/ocp.*/helper.*/AIN0 ] ; then - echo Analog input files not found in /sys/devices/ocp.*/helper.* >&2 - exit 1; -fi - -if [ ! -r /sys/class/uio/uio0 ] ; then - echo PRU control files not found in /sys/class/uio/uio0 >&2 +if [ ! -r $PRU ] ; then + echo PRU control files not found in $PRU >&2 exit 1; fi @@ -76,6 +67,7 @@ fi sudo $(which config-pin) -f - <<- EOF P8.07 out # gpio2.2 Enable System + P8.09 in # gpio2.5 ESTOPin P8.10 in # gpio2.4 XLIM P8.11 out # gpio1.13 X_Dir P8.12 out # gpio1.12 X_Step @@ -85,15 +77,15 @@ sudo $(which config-pin) -f - <<- EOF P8.16 out # gpio1.14 Y_Step P8.18 in # gpio2.1 ZLIM P8.19 out # gpio0.22 PWM1 + P8.26 out # ESTOP Out (ENA_LED) + P9.11 out # gpio0.31 A_Step + P9.13 out # gpio0.30 A_Dir P9.14 out # gpio1.18 PWM2 P9.15 out # gpio1.16 Z_Step - P9.23 out # gpio1.17 Z_Dir # P9.17 out # gpio0.5 SCS # P9.18 in # gpio0.4 SDI # P9.21 out # gpio0.3 SDO # P9.22 out # gpio0.2 SCK - P9.13 out # gpio0.30 A_Dir - P9.11 out # gpio0.31 A_Step - P8.09 in # gpio2.5 STOPin + P9.23 out # gpio1.17 Z_Dir EOF From 142b752c8090621d8dd13ede5c43a81739cd2654 Mon Sep 17 00:00:00 2001 From: Alan Condit Date: Fri, 7 Sep 2018 14:52:27 -0700 Subject: [PATCH 265/516] Config changes for CRAMPS and Xylotex to run on Stretch Config changes to CRAMPS and Xylotex to run on Debian Stretch. --- configs/ARM/BeagleBone/CRAMPS/CRAMPS.bbio | 52 +++ configs/ARM/BeagleBone/CRAMPS/CRAMPS.hal | 26 +- configs/ARM/BeagleBone/CRAMPS/CRAMPS.ini | 48 ++- configs/ARM/BeagleBone/CRAMPS/setup.sh | 38 +- configs/ARM/BeagleBone/Xylotex/Xylotex.bbio | 27 ++ configs/ARM/BeagleBone/Xylotex/Xylotex.hal | 67 ++-- configs/ARM/BeagleBone/Xylotex/Xylotex.ini | 386 ++++++++++---------- configs/ARM/BeagleBone/Xylotex/setup.sh | 38 +- 8 files changed, 384 insertions(+), 298 deletions(-) create mode 100644 configs/ARM/BeagleBone/CRAMPS/CRAMPS.bbio mode change 100755 => 100644 configs/ARM/BeagleBone/CRAMPS/CRAMPS.hal mode change 100755 => 100644 configs/ARM/BeagleBone/CRAMPS/CRAMPS.ini mode change 100755 => 100644 configs/ARM/BeagleBone/CRAMPS/setup.sh create mode 100644 configs/ARM/BeagleBone/Xylotex/Xylotex.bbio mode change 100644 => 100755 configs/ARM/BeagleBone/Xylotex/Xylotex.hal mode change 100644 => 100755 configs/ARM/BeagleBone/Xylotex/Xylotex.ini diff --git a/configs/ARM/BeagleBone/CRAMPS/CRAMPS.bbio b/configs/ARM/BeagleBone/CRAMPS/CRAMPS.bbio new file mode 100644 index 0000000000..316172f2d2 --- /dev/null +++ b/configs/ARM/BeagleBone/CRAMPS/CRAMPS.bbio @@ -0,0 +1,52 @@ +# File generated with BB pin configurator +# title: CRAMPS +overlay cape-universal +overlay cape-bone-iio +#overlay cape-univ-emmc +#P8_03 default +#P8_04 default +#P8_05 default +#P8_06 default +P8_07 in #X Max +P8_08 in #X Min +P8_09 in #Y Max +P8_10 in #Y Min +P8_11 low #FET 1 : Heated Bed +P8_12 low #X Dir +P8_13 low #X Step +P8_14 low #Y Dir +P8_15 low #Y Step +P8_16 high #eMMC Enable +P8_17 in #Estop In +P8_18 low #Z Dir +P8_19 low #Z Step +#P8_20 default +#P8_21 default +#P8_22 low #Servo 4 +#P8_23 low #Servo 3 +#P8_24 low #Servo 2 +#P8_25 low #Servo 1 +P8_26 high #Estop out +P9_11 in #Z Max +P9_12 low #E0 Dir +P9_13 in #Z Min +P9_14 high #Axis Enable, act. low +P9_15 low #FET 2 : E0 +P9_16 low #E0 Step +P9_17 low #E1 Step +P9_18 low #E1 Dir +P9_21 low #FET 4 : E1 +P9_22 low #FET 6 +P9_23 low #Machine Power +P9_24 low #E2 Step +#P9_25 low #LED +P9_26 low #E2 Dir +P9_27 low #FET 3 : E2 +#P9_28 spi #SPI CS0 +#P9_29 spi #SPI MISO +#P9_30 spi #SPI MOSI +#P9_31 spi #SPI SCLK +P9_41 low #FET 5 +#P9_42 spics #SPI CS1 +P9_91 in #Reserved, con. to P9.41 +P9_92 in #Reserved, to P9.42 diff --git a/configs/ARM/BeagleBone/CRAMPS/CRAMPS.hal b/configs/ARM/BeagleBone/CRAMPS/CRAMPS.hal old mode 100755 new mode 100644 index 984194d97e..1b2ab66b52 --- a/configs/ARM/BeagleBone/CRAMPS/CRAMPS.hal +++ b/configs/ARM/BeagleBone/CRAMPS/CRAMPS.hal @@ -1,27 +1,30 @@ # ####################################### # -# HAL file for BeagleBone + BeBoPr cape with 4 steppers +# HAL file for BeagleBone + CRAMPS cape with 4 steppers # # Derived from example hm2-stepper config # # ######################################## # Launch the setup script to make sure hardware setup looks good +#loadusr -w /home/machinekit/machinekit/configs/ARM.BeagleBone.CRAMPS/setup.sh loadusr -w ./setup.sh +#loadusr -w config-pin -f ./CRAMPS.bbio # ################################### # Core EMC/HAL Loads # ################################### - # kinematics loadrt trivkins +#loadrt core_xy_kins -# motion controller, get name and thread periods from ini file # trajectory planner loadrt tp -loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES tp=tp kins=trivkins +# motion controller, get name and thread periods from ini file +loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES tp=tp kins=trivkins +#loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES tp=tp kins=core_xy_kins # load low-level drivers loadrt hal_bb_gpio output_pins=816,822,823,824,825,826,914,923,925 input_pins=807,808,809,810,817,911,913 @@ -31,14 +34,16 @@ loadrt limit1 count=2 # Python user-mode HAL module to read ADC value and generate a thermostat output for PWM -# c = analog input channel and thermistor table +# t = Thermistor table (only epcos_B57560G1104 or 1 supported for now) +# a = analog input channel +#loadusr -Wn Therm ./ReadTemp.py -n Therm --num_chan 2 -t 1 1 -a 4 5 loadusr -Wn Therm hal_temp_bbb -n Therm -c 04:epcos_B57560G1104,05:epcos_B57560G1104 -b CRAMPS # ################################################ # THREADS # ################################################ - -addf hpg.capture-position servo-thread +# hpg = [PRUCONF](DRIVER) +addf hpg.capture-position servo-thread addf bb_gpio.read servo-thread addf motion-command-handler servo-thread addf motion-controller servo-thread @@ -46,19 +51,16 @@ addf pid.0.do-pid-calcs servo-thread addf pid.1.do-pid-calcs servo-thread addf limit1.0 servo-thread addf limit1.1 servo-thread -addf hpg.update servo-thread +addf hpg.update servo-thread addf bb_gpio.write servo-thread # ###################################################### # Axis-of-motion Specific Configs (not the GUI) # ###################################################### - - # ################ # X [0] Axis # ################ - # axis enable chain newsig emcmot.00.enable bit sets emcmot.00.enable FALSE @@ -238,7 +240,7 @@ net emcmot.00.enable => bb_gpio.p9.out-23 # Tie machine power signal to the CRAMPS LED # Feel free to tie any other signal you like to the LED -net emcmot.00.enable => bb_gpio.p9.out-25 +#net emcmot.00.enable => bb_gpio.p9.out-25 # ################ # Limit Switches diff --git a/configs/ARM/BeagleBone/CRAMPS/CRAMPS.ini b/configs/ARM/BeagleBone/CRAMPS/CRAMPS.ini old mode 100755 new mode 100644 index bb92463618..abc6aada1e --- a/configs/ARM/BeagleBone/CRAMPS/CRAMPS.ini +++ b/configs/ARM/BeagleBone/CRAMPS/CRAMPS.ini @@ -1,13 +1,16 @@ [PRUCONF] DRIVER=hal_pru_generic CONFIG=pru=0 num_stepgens=4 num_pwmgens=6 -PRUBIN=xenomai/pru_generic.bin - +#PRUBIN=xenomai/pru_generic.bin +PRUBIN=rt-preempt/pru_generic.bin +############################################################################### +# Hardware Abstraction Layer section +############################################################################### [EMC] # Name of machine, for use with display, etc. -MACHINE = MendelMax-CRAMPS +MACHINE = CRAMPS # Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others #DEBUG = 0x00000003 @@ -15,14 +18,14 @@ MACHINE = MendelMax-CRAMPS DEBUG = 0 - - +############################################################################### +# Sections for display options +############################################################################### [DISPLAY] - # Name of display program, e.g., tkemc +DISPLAY = axis #DISPLAY = tkemc #DISPLAY = gscreen -DISPLAY = axis # Touchy currently won't work without some hardware buttons/jog-wheel #DISPLAY = touchy @@ -64,6 +67,9 @@ jpg = image-to-gcode py = python +############################################################################### +# Task controller section +############################################################################### [TASK] # Name of task controller program, e.g., milltask @@ -73,16 +79,16 @@ TASK = milltask CYCLE_TIME = 0.010 - - +############################################################################### +# Part program interpreter section +############################################################################### [RS274NGC] - # File containing interpreter variables PARAMETER_FILE = pru-stepper.var - - - +############################################################################### +# Motion control section +############################################################################### [EMCMOT] EMCMOT = motmod @@ -97,8 +103,9 @@ COMM_WAIT = 0.010 SERVO_PERIOD = 1000000 - - +############################################################################### +# Hardware Abstraction Layer section +############################################################################### [HAL] # The run script first uses halcmd to execute any HALFILE @@ -107,7 +114,7 @@ SERVO_PERIOD = 1000000 # list of hal config files to run through halcmd # files are executed in the order in which they appear -HALFILE = CRAMPS.hal +HALFILE = CRAMPS.hal # list of halcmd commands to execute # commands are executed in the order in which they appear @@ -116,6 +123,9 @@ HALFILE = CRAMPS.hal POSTGUI_HALFILE = 3D.postgui.hal +############################################################################### +# Trajectory planner section +############################################################################### [TRAJ] AXES = 4 @@ -132,6 +142,9 @@ MAX_LINEAR_VELOCITY = 200.00 +############################################################################### +# Axes sections +############################################################################### [AXIS_0] # @@ -186,6 +199,7 @@ STEPSPACE = 1000 +################################################################ [AXIS_1] TYPE = LINEAR @@ -226,6 +240,7 @@ STEPSPACE = 1000 +################################################################ [AXIS_2] TYPE = LINEAR @@ -267,6 +282,7 @@ STEPSPACE = 1000 +################################################################ [AXIS_3] TYPE = ANGULAR diff --git a/configs/ARM/BeagleBone/CRAMPS/setup.sh b/configs/ARM/BeagleBone/CRAMPS/setup.sh old mode 100755 new mode 100644 index 454b4603e5..83af1119d1 --- a/configs/ARM/BeagleBone/CRAMPS/setup.sh +++ b/configs/ARM/BeagleBone/CRAMPS/setup.sh @@ -31,29 +31,21 @@ dir_err () { exit 1 } -SLOTS=/sys/devices/bone_capemgr.*/slots - -# Make sure required device tree overlay(s) are loaded -for DTBO in cape-universal cape-bone-iio ; do - - if grep -q $DTBO $SLOTS ; then - echo $DTBO overlay found - else - echo Loading $DTBO overlay - sudo -A su -c "echo $DTBO > $SLOTS" || dtbo_err - sleep 1 - fi -done; - -if [ ! -r /sys/devices/ocp.*/helper.*/AIN0 ] ; then - echo Analog input files not found in /sys/devices/ocp.*/helper.* >&2 +PRU=/sys/class/uio/uio0 +echo -n "Waiting for $PRU " + +while [ ! -r $PRU ] +do + echo -n "." + sleep 1 +done +echo OK + +if [ ! -r $PRU ] ; then + echo PRU control files not found in $PRU >&2 exit 1; fi -if [ ! -r /sys/class/uio/uio0 ] ; then - echo PRU control files not found in /sys/class/uio/uio0 >&2 - exit 1; -fi # Export GPIO pins: # One pin needs to be exported to enable the low-level clocks for the GPIO @@ -90,7 +82,7 @@ sudo $(which config-pin) -f - <<- EOF P8.19 low # Z Step # eMMC signals, uncomment *ONLY* if you have disabled the on-board eMMC! -# Machinekit images disable eMMC and HDMI audio by default in uEnv.txt: +# MachineKit images disable eMMC and HDMI audio by default in uEnv.txt: # capemgr.disable_partno=BB-BONELT-HDMI,BB-BONE-EMMC-2G # P8.22 low # Servo 4 # P8.23 low # Servo 3 @@ -113,7 +105,7 @@ sudo $(which config-pin) -f - <<- EOF P9.22 low # FET 6 P9.23 low # Machine Power P9.24 low # E2 Step - P9.25 low # LED +# P9.25 low # LED P9.26 low # E2 Dir P9.27 low # FET 3 : E2 P9.28 low # SPI CS0 @@ -124,7 +116,7 @@ sudo $(which config-pin) -f - <<- EOF P9.41 low # FET 5 P9.91 in # Reserved, connected to P9.41 - P9.42 low # SPI CS1 +# P9.42 low # SPI CS1 P9.92 in # Reserved, connected to P9.42 EOF diff --git a/configs/ARM/BeagleBone/Xylotex/Xylotex.bbio b/configs/ARM/BeagleBone/Xylotex/Xylotex.bbio new file mode 100644 index 0000000000..e4236c5015 --- /dev/null +++ b/configs/ARM/BeagleBone/Xylotex/Xylotex.bbio @@ -0,0 +1,27 @@ +# File generated with BB pin configurator +# title: Xylotex +overlay cape-universal +overlay cape-bone-iio +#overlay cape-univ-emmc +P8_07 out # gpio2.2 Enable System +P8_09 in # gpio2.5 ESTOPin +P8_10 in # gpio2.4 XLIM +P8_11 out # gpio1.13 X_Dir +P8_12 out # gpio1.12 X_Step +P8_13 out # gpio0.23 PWM0/SPINDLE +P8_14 in # gpio0.26 YLIM +P8_15 out # gpio1.15 Y_Dir +P8_16 out # gpio1.14 Y_Step +P8_18 in # gpio2.1 ZLIM +P8_19 out # gpio0.22 PWM1 +P8_26 out # ESTOP Out (ENA_LED) +P9_11 out # gpio0.31 A_Step +P9_13 out # gpio0.30 A_Dir +P9_14 out # gpio1.18 PWM2 +P9_15 out # gpio1.16 Z_Step +#P9_17 out # gpio0.5 SCS +#P9_18 in # gpio0.4 SDI +#P9_21 out # gpio0.3 SDO +#P9_22 out # gpio0.2 SCK +P9_23 out # gpio1.17 Z_Dir + diff --git a/configs/ARM/BeagleBone/Xylotex/Xylotex.hal b/configs/ARM/BeagleBone/Xylotex/Xylotex.hal old mode 100644 new mode 100755 index b31459b72b..fc8d9e11e9 --- a/configs/ARM/BeagleBone/Xylotex/Xylotex.hal +++ b/configs/ARM/BeagleBone/Xylotex/Xylotex.hal @@ -2,7 +2,7 @@ # The board also has a pair of a set of four 0805 size jumper resistors # these can be used to output either the standard Spindle/Mist/flood and # input ALIM from the DB25 pins -# or allow BBB SPI singnals to be routed to the DB25 connector instead. +# or allow BBB SPI signals to be routed to the DB25 connector instead. # The ALIM RC buffer Capacitor would need to change if this # option was used. The LIM Switch input signals are pulled to 3V3 through # 10K resistors @@ -15,43 +15,44 @@ # go directly to the BBB # At powerup the LVC541 enable signals are pulled high, disabling the # drivers until -# the BBB and Machinekit pull the enable signal low. +# the BBB and LinuxCNC pull the enable signal low. # ######################################## # Launch the setup script to make sure hardware setup looks good +#loadusr -w /home/machinekit/machinekit/configs/ARM.BeagleBone.Xylotex/setup.sh loadusr -w ./setup.sh +#loadusr -w config-pin -f ./Xylotex.bbio # ################################### # Core EMC/HAL Loads # ################################### - # kinematics loadrt trivkins -# motion controller, get name and thread periods from ini file # trajectory planner loadrt tp -loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES tp=tp kins=trivkins +# motion controller, get name and thread periods from ini file +loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES tp=tp kins=trivkins # load low-level drivers -loadrt hal_bb_gpio output_pins=107,113,119,126,214 input_pins=109,110,114,118,241 -loadrt [PRUCONF](DRIVER) prucode=$(HAL_RTMOD_DIR)/[PRUCONF](PRUBIN) [PRUCONF](CONFIG) halname=hpg -#(JP) Not suing PID loop so comment out +loadrt hal_bb_gpio output_pins=807,811,812,813,815,816,819,826,914,915,923,913,911 input_pins=809,810,814,818 + +loadrt [PRUCONF](DRIVER) prucode=$(LINUXCNC_HOME)/[PRUCONF](PRUBIN) [PRUCONF](CONFIG) halname=hpg pru_period=25000 loadrt pid count=4 loadrt limit1 count=2 # ################################################ # THREADS # ################################################ - +# hpg = [PRUCONF](DRIVER) addf hpg.capture-position servo-thread addf bb_gpio.read servo-thread addf motion-command-handler servo-thread addf motion-controller servo-thread -#(JP) Not doing PID for temperature sensor for PWM output +# Not doing PID for temperature sensor for PWM output addf pid.0.do-pid-calcs servo-thread addf pid.1.do-pid-calcs servo-thread addf pid.2.do-pid-calcs servo-thread @@ -65,11 +66,9 @@ addf bb_gpio.write servo-thread # ###################################################### # Axis-of-motion Specific Configs (not the GUI) # ###################################################### - # ################ # X [0] Axis # ################ - # axis enable chain newsig emcmot.00.enable bit sets emcmot.00.enable FALSE @@ -100,8 +99,8 @@ setp hpg.stepgen.00.maxaccel [AXIS_0]STEPGEN_MAX_ACC setp hpg.stepgen.00.control-type 1 setp hpg.stepgen.00.stepinvert [AXIS_0]STEP_INVERT #setp hpg.stepgen.00.step_type 0 -setp hpg.stepgen.00.steppin 0x4C -setp hpg.stepgen.00.dirpin 0x4D +setp hpg.stepgen.00.steppin 812 +setp hpg.stepgen.00.dirpin 811 # set PID loop gains from inifile setp pid.0.Pgain [AXIS_0]P @@ -114,14 +113,13 @@ setp pid.0.FF2 [AXIS_0]FF2 setp pid.0.deadband [AXIS_0]DEADBAND setp pid.0.maxoutput [AXIS_0]MAX_OUTPUT -#(JP) Add home switch input on DB25-11 +# Add X home switch input on DB25-11 net home-x bb_gpio.p8.in-10 => axis.0.home-sw-in #setp bb_gpio.p8.in-10.invert 1 # ################ # Y [1] Axis # ################ - # axis enable chain newsig emcmot.01.enable bit sets emcmot.01.enable FALSE @@ -152,8 +150,8 @@ setp hpg.stepgen.01.maxaccel [AXIS_1]STEPGEN_MAX_ACC setp hpg.stepgen.01.control-type 1 setp hpg.stepgen.01.stepinvert [AXIS_1]STEP_INVERT #setp hpg.stepgen.01.step_type 0 -setp hpg.stepgen.01.steppin 0x4E -setp hpg.stepgen.01.dirpin 0x4F +setp hpg.stepgen.01.steppin 816 +setp hpg.stepgen.01.dirpin 815 # set PID loop gains from inifile setp pid.1.Pgain [AXIS_1]P @@ -166,15 +164,12 @@ setp pid.1.FF2 [AXIS_1]FF2 setp pid.1.deadband [AXIS_1]DEADBAND setp pid.1.maxoutput [AXIS_1]MAX_OUTPUT - -#(JP) Add home switch input on DB25-12 +# Add Y home switch input on DB25-12 net home-y bb_gpio.p8.in-14 => axis.1.home-sw-in -#setp bb_gpio.p8.in-14.invert 1 # ################ # Z [2] Axis # ################ - # axis enable chain newsig emcmot.02.enable bit sets emcmot.02.enable FALSE @@ -202,11 +197,11 @@ setp hpg.stepgen.02.position-scale [AXIS_2]SCALE setp hpg.stepgen.02.maxvel [AXIS_2]STEPGEN_MAX_VEL setp hpg.stepgen.02.maxaccel [AXIS_2]STEPGEN_MAX_ACC -setp hpg.stepgen.02.control-type 1 +setp hpg.stepgen.02.control-type 1 setp hpg.stepgen.02.stepinvert [AXIS_2]STEP_INVERT #setp hpg.stepgen.02.step_type 0 -setp hpg.stepgen.02.steppin 0x50 -setp hpg.stepgen.02.dirpin 0x51 +setp hpg.stepgen.02.steppin 915 +setp hpg.stepgen.02.dirpin 923 # set PID loop gains from inifile setp pid.2.Pgain [AXIS_2]P @@ -219,15 +214,12 @@ setp pid.2.FF2 [AXIS_2]FF2 setp pid.2.deadband [AXIS_2]DEADBAND setp pid.2.maxoutput [AXIS_2]MAX_OUTPUT - -#(JP) Add home switch input on DB25-13 +# Add Z home switch input on DB25-13 net home-z bb_gpio.p8.in-18 => axis.2.home-sw-in -#setp bb_gpio.p8.in-18.invert 1 # ################ # A [3] Axis # ################ - # axis enable chain newsig emcmot.03.enable bit sets emcmot.03.enable FALSE @@ -258,8 +250,8 @@ setp hpg.stepgen.03.maxaccel [AXIS_3]STEPGEN_MAX_ACC setp hpg.stepgen.03.control-type 1 setp hpg.stepgen.03.stepinvert [AXIS_3]STEP_INVERT #setp hpg.stepgen.03.step_type 0 -setp hpg.stepgen.03.steppin 0x3E -setp hpg.stepgen.03.dirpin 0x3F +setp hpg.stepgen.03.steppin 911 +setp hpg.stepgen.03.dirpin 913 # set PID loop gains from inifile setp pid.3.Pgain [AXIS_3]P @@ -273,9 +265,8 @@ setp pid.3.deadband [AXIS_3]DEADBAND setp pid.3.maxoutput [AXIS_3]MAX_OUTPUT -#(JP) Add home switch input -net home-a bb_gpio.p9.in-41 => axis.3.home-sw-in -#setp bb_gpio.p9.in-41.invert 1 +# Add A home switch input +#net home-a bb_gpio.p9.in-41 => axis.3.home-sw-in # ################################################## # Standard I/O - EStop, Enables, Limit Switches, Etc @@ -291,7 +282,7 @@ net tool-change-loop iocontrol.0.tool-change => iocontrol.0.tool-changed # (LOW) or unactive (HIGH) state # All external Inputs and Outputs on external boards # should have pullups/downs since when the interface board is -# not enabled, it will look disconnected for all signals +# not enabled, it will look dosconnected for all signals # this pin is output on DB25-1 # it is also used to enable the LVC541 driver/receiver on the interface board @@ -316,11 +307,16 @@ setp bb_gpio.p8.out-26.invert 1 #net probe motion.probe-input <= bb_gpio.p8.in-18 #setp bb_gpio.p8.in-18.invert 1 +# this currently goes to an LED on the interface board +# it is simply a duplicate of the enable signal on DB25-1 right now +setp bb_gpio.p8.out-26.invert 1 + # this input signal must be active LOW to allow the system to energize. # this should be fed through an NC STOP type switch from DB25-1 to DB25-10 net estop-in bb_gpio.p8.in-09 => iocontrol.0.emc-enable-in setp bb_gpio.p8.in-09.invert 1 + # This output is on DB25-14 and is currently tied to spindle control (M3/M5) #net Output1 bb_gpio.p8.out-13 => motion.spindle-on #setp bb_gpio.p8.out-13.invert 1 @@ -336,4 +332,3 @@ setp bb_gpio.p8.out-19.invert 1 net Output3 bb_gpio.p9.out-14 => halui.flood.is-on setp bb_gpio.p9.out-14.invert 1 - diff --git a/configs/ARM/BeagleBone/Xylotex/Xylotex.ini b/configs/ARM/BeagleBone/Xylotex/Xylotex.ini old mode 100644 new mode 100755 index a941dd7fdc..c2975d2456 --- a/configs/ARM/BeagleBone/Xylotex/Xylotex.ini +++ b/configs/ARM/BeagleBone/Xylotex/Xylotex.ini @@ -1,38 +1,42 @@ [PRUCONF] DRIVER=hal_pru_generic CONFIG=pru=1 num_stepgens=4 -PRUBIN=xenomai/pru_generic.bin +#PRUBIN=xenomai/pru_generic.bin +#PRUBIN=lib/linuxcnc/rt-preempt/pru_generic.bin +PRUBIN=rt-preempt/pru_generic.bin +############################################################################### +# General section +############################################################################### [EMC] # Name of machine, for use with display, etc. MACHINE = Xylotex # Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others +DEBUG = 0 #DEBUG = 0x00000003 #DEBUG = 0x00000007 -DEBUG = 0 - - +############################################################################### +# Sections for display options +############################################################################### [DISPLAY] -#uncomment the line below if the shuttleexpress is installed -#(JP)GLADEVCP = shuttlexpress.glade -#leave the follwoing two alone - -#EMBED_TAB_NAME = GladeVCP demo -#EMBED_TAB_COMMAND = halcmd loadusr -Wn gladevcp gladevcp -c gladevcp -u shuttlexpress.py -x {XID} shuttlexpress.glade - # Name of display program, e.g., tkemc DISPLAY = axis #DISPLAY = jtgremlin - -#EDITOR = mousepad - # Touchy currently will not work without some hardware buttons/jog-wheel #DISPLAY = touchy +#uncomment the line below if the shuttleexpress is installed +#GLADEVCP = shuttlexpress.glade +#leave the following two alone +#EMBED_TAB_NAME = GladeVCP demo +#EMBED_TAB_COMMAND = halcmd loadusr -Wn gladevcp gladevcp -c gladevcp -u shuttlexpress.py -x {XID} shuttlexpress.glade + +#EDITOR = mousepad + # Cycle time, in seconds, that display will sleep between polls CYCLE_TIME = 0.200 @@ -40,19 +44,22 @@ CYCLE_TIME = 0.200 HELP_FILE = tklinucnc.txt # Initial display setting for position, RELATIVE or MACHINE -POSITION_OFFSET = RELATIVE +POSITION_OFFSET = MACHINE # Initial display setting for position, COMMANDED or ACTUAL POSITION_FEEDBACK = ACTUAL # Highest value that will be allowed for feed override, 1.0 = 100% MAX_FEED_OVERRIDE = 1.0 +MAX_SPINDLE_OVERRIDE = 1.0 +MIN_SPINDLE_OVERRIDE = 0.25 # Prefix to be used +#PROGRAM_PREFIX = /home/machinekit/machinekit/nc_files PROGRAM_PREFIX = ~/machinekit/nc_files/ # Introductory graphic -INTRO_GRAPHIC = machinekit.gif +INTRO_GRAPHIC = linuxcnc.gif INTRO_TIME = 5 # Increments for the JOG section @@ -70,6 +77,9 @@ jpg = image-to-gcode py = python +############################################################################### +# Task controller section +############################################################################### [TASK] # Name of task controller program, e.g., milltask @@ -79,195 +89,215 @@ TASK = milltask CYCLE_TIME = 0.010 - - +############################################################################### +# Part program interpreter section +############################################################################### [RS274NGC] - # File containing interpreter variables PARAMETER_FILE = pru-stepper.var RS274NGC_STARTUP_CODE = G00 G17 G21 G40 G49 G64 P0.1 Q0.1 G80 G90 +############################################################################### +# Motion control section +############################################################################### [EMCMOT] - EMCMOT = motmod - # Timeout for comm to emcmot, in seconds COMM_TIMEOUT = 1.0 - # Interval between tries to emcmot, in seconds COMM_WAIT = 0.010 - # Servo task period, in nanoseconds SERVO_PERIOD = 1000000 - +############################################################################### +# Hardware Abstraction Layer section +############################################################################### [HAL] - +HALUI = halui # The run script first uses halcmd to execute any HALFILE # files, and then to execute any individual HALCMD commands. - -# list of hal config files to run through halcmd -# files are executed in the order in which they appear - HALFILE = Xylotex.hal -#(JP) uncomment the line below if the shuttlexpress jig wheel is used +#HALFILE = custom.hal +# uncomment the line below if the shuttlexpress jig wheel is used #HALFILE = ../../../shuttlexpress.hal - -# list of halcmd commands to execute -# commands are executed in the order in which they appear +#POSTGUI_HALFILE = Xylotex.postgui.hal +# list of hal config files to run through halcmd +# files are executed in the order in which they appear #HALCMD = save neta -HALUI = halui -POSTGUI_HALFILE = Xylotex.postgui.hal +############################################################################### +# Hardware Abstraction Layer User Interface section +############################################################################### +[HALUI] +MDI_COMMAND = G0 X0 Y0 Z0 +MDI_COMMAND = G38.2 Z-2 f16 +MDI_COMMAND = G92 Z0.25 +MDI_COMMAND = G0 Z0.75 +MDI_COMMAND = G92 x2 y-.5 -[TRAJ] +############################################################################### +# Trajectory planner section +############################################################################### +[TRAJ] AXES = 4 COORDINATES = X Y Z A +HOME = 1 1 0 2 MAX_ANGULAR_VELOCITY = 45.00 DEFAULT_ANGULAR_VELOCITY = 4.50 LINEAR_UNITS = inch ANGULAR_UNITS = degree CYCLE_TIME = 0.010 DEFAULT_VELOCITY = 2.0 -MAX_LINEAR_VELOCITY = 2.0 +DEFAULT_ACCELERATION = 15.0 +MAX_LINEAR_VELOCITY = 2.6 NO_FORCE_HOMING = 1 +# POSITION_FILE = position.txt +#PROBE_INDEX = 0 +#PROBE_POLARITY = 1 -################################################################ +############################################################################### +# section for main IO controller parameters +############################################################################### +[EMCIO] + +#- Name of IO controller program, e.g., io +EMCIO = io + +#- cycle time, in seconds +CYCLE_TIME = 0.100 + +#- tool table file +TOOL_TABLE = mill.tbl + +#- Tool Change Position specifies the location to move to for a tool change +#TOOL_CHANGE_POSITION = 0 0 2 + +############################################################################### +# Axes sections +############################################################################### [AXIS_0] # -# Step timing is 40 us steplen + 40 us stepspace -# That gives 80 us step period = 12.5 KHz step freq -# -# Bah, even software stepping can handle that, hm2 doesnt buy you much with -# such slow steppers. +# Step timing is 25 us steplen + 25 us stepspace +# That gives 50 us step period = 20 KHz step freq # -# Scale is 200 steps/rev * 5 revs/inch = 1000 steps/inch +# Scale is 200 steps/rev * 5 revs/inch * 2 microsteps = 2000 steps/inch # -# This gives a maxvel of 12.5/1 = 12.5 ips +# This gives a maxvel of 20000/2000 = 10 ips # TYPE = LINEAR -MAX_VELOCITY = 1.0 +MAX_VELOCITY = 2.0 MAX_ACCELERATION = 15.0 # Set Stepgen max 20% higher than the axis -STEPGEN_MAX_VEL = 1.2 +STEPGEN_MAX_VEL = 2.6 STEPGEN_MAX_ACC = 18.75 BACKLASH = 0.000 -# scale is 200 steps/rev * 8 mirostep * 10 tpi -SCALE = 32000 +SCALE = 2000 -MIN_LIMIT = -0.0 -MAX_LIMIT = 20.0 +MIN_LIMIT = -0.0 +MAX_LIMIT = 13.0 -FERROR = .1 -MIN_FERROR = 0.05 +FERROR = .1 +MIN_FERROR = 0.05 -HOME = 0.000 -HOME_OFFSET = 0.00 -HOME_SEARCH_VEL = -.1 -HOME_LATCH_VEL = 0.2 -#HOME_USE_INDEX = YES -#HOME_IGNORE_LIMITS = YES -#HOME_IS_SHARED = 1 -#HOME_SEQUENCE = 2 +HOME = 0.000 +HOME_OFFSET = -0.1 +HOME_SEARCH_VEL = -1.5 +HOME_LATCH_VEL = 0.25 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = YES +HOME_IS_SHARED = 1 +HOME_SEQUENCE = 1 # these are in nanoseconds -DIRSETUP = 1000 -DIRHOLD = 20000 -STEPLEN = 500 -STEPSPACE = 4000 +DIRSETUP = 25000 +DIRHOLD = 25000 +STEPLEN = 25000 +STEPSPACE = 25000 # Set to one for active low step pulses -STEP_INVERT = 0 +STEP_INVERT = 0 # PID tuning params -DEADBAND = 0 -P = 50 -I = 0 -D = 0 -FF0 = 0 -FF1 = 1 -FF2 = 0 -BIAS = 0 -MAX_OUTPUT = 0 - +DEADBAND = 0 +P = 50 +I = 0 +D = 0 +FF0 = 0 +FF1 = 1 +FF2 = 0 +BIAS = 0 +MAX_OUTPUT = 0 ################################################################ [AXIS_1] # -# Step timing is 40 us steplen + 40 us stepspace -# That gives 80 us step period = 12.5 KHz step freq -# -# Bah, even software stepping can handle that, hm2 doesnt buy you much with -# such slow steppers. +# Step timing is 25 us steplen + 25 us stepspace +# That gives 50 us step period = 12.5 KHz step freq # -# Scale is 200 steps/rev * 5 revs/inch = 1000 steps/inch +# Scale is 200 steps/rev * 5 revs/inch * 2 microsteps = 2000 steps/inch # -# This gives a maxvel of 12.5/1 = 12.5 ips +# This gives a maxvel of 20000/2000 = 10 ips # TYPE = LINEAR -MAX_VELOCITY = 1.0 +MAX_VELOCITY = 2.0 MAX_ACCELERATION = 15.0 # Set Stepgen max 20% higher than the axis -STEPGEN_MAX_VEL = 1.2 +STEPGEN_MAX_VEL = 2.6 STEPGEN_MAX_ACC = 18.75 BACKLASH = 0.000 -# scale is 200 steps/rev * 8 mirostep * 10 tpi -SCALE = 32000 +# scale is 200 steps/rev * 2 microstep * 5 tpi = 2000 steps/inch +SCALE = 2000 -MIN_LIMIT = -0.0 -MAX_LIMIT = 20.0 +MIN_LIMIT = -0.0 +MAX_LIMIT = 12.0 -FERROR = .1 -MIN_FERROR = 0.05 +FERROR = .1 +MIN_FERROR = 0.05 -HOME = 0.000 -HOME_OFFSET = 0.00 -HOME_SEARCH_VEL = -.1 -HOME_LATCH_VEL = 0.2 -#HOME_USE_INDEX = YES -#HOME_IGNORE_LIMITS = YES -#HOME_IS_SHARED = 1 -#HOME_SEQUENCE = 2 +HOME = 0.000 +HOME_OFFSET = -0.1 +HOME_SEARCH_VEL = -1.5 +HOME_LATCH_VEL = 0.250 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = YES +HOME_IS_SHARED = 1 +HOME_SEQUENCE = 1 # these are in nanoseconds -DIRSETUP = 1000 -DIRHOLD = 20000 -STEPLEN = 500 -STEPSPACE = 4000 +DIRSETUP = 25000 +DIRHOLD = 25000 +STEPLEN = 25000 +STEPSPACE = 25000 # Set to one for active low step pulses -STEP_INVERT = 0 +STEP_INVERT = 0 # PID tuning params -DEADBAND = 0 -P = 50 -I = 0 -D = 0 -FF0 = 0 -FF1 = 1 -FF2 = 0 -BIAS = 0 -MAX_OUTPUT = 0 +DEADBAND = 0 +P = 50 +I = 0 +D = 0 +FF0 = 0 +FF1 = 1 +FF2 = 0 +BIAS = 0 +MAX_OUTPUT = 0 ################################################################ [AXIS_2] # -# Step timing is 40 us steplen + 40 us stepspace -# That gives 80 us step period = 12.5 KHz step freq -# -# Bah, even software stepping can handle that, hm2 doesnt buy you much with -# such slow steppers. +# Step timing is 25 us steplen + 25 us stepspace +# That gives 50 us step period = 20 KHz step freq # -# Scale is 200 steps/rev * 5 revs/inch = 1000 steps/inch -# -# This gives a maxvel of 12.5/1 = 12.5 ips +# SCALE is 200 steps/rev * 2 microstep * 4:1 gearing * 5 tpi = 8000 steps/inch +# This gives a maxvel of 20000/8000 = 2.5 ips # TYPE = LINEAR MAX_VELOCITY = 1.0 @@ -277,55 +307,50 @@ STEPGEN_MAX_VEL = 1.2 STEPGEN_MAX_ACC = 18.75 BACKLASH = 0.000 -# scale is 200 steps/rev * 8 mirostep * 10 tpi -SCALE = 32000 +# SCALE is 200 steps/rev * 2 microstep * 4:1 gearing * 5 turns/inch = 8000 steps/inch +SCALE = 8000 -MIN_LIMIT = -20.0 -MAX_LIMIT = 20.0 +MIN_LIMIT = 0.0 +MAX_LIMIT = 5.0 FERROR = .1 MIN_FERROR = 0.05 -HOME = 0.000 -HOME_OFFSET = 0.00 -HOME_SEARCH_VEL = -.1 -HOME_LATCH_VEL = 0.2 -#HOME_USE_INDEX = YES -#HOME_IGNORE_LIMITS = YES -#HOME_IS_SHARED = 1 -#HOME_SEQUENCE = 2 +HOME = 0.000 +HOME_OFFSET = 0.00 +HOME_SEARCH_VEL = 1.0 +HOME_LATCH_VEL = -0.250 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = YES +HOME_IS_SHARED = 1 +HOME_SEQUENCE = 0 # these are in nanoseconds -DIRSETUP = 1000 -DIRHOLD = 20000 -STEPLEN = 500 -STEPSPACE = 4000 +DIRSETUP = 25000 +DIRHOLD = 25000 +STEPLEN = 25000 +STEPSPACE = 25000 # Set to one for active low step pulses -STEP_INVERT = 0 +STEP_INVERT = 0 # PID tuning params -DEADBAND = 0 -P = 50 -I = 0 -D = 0 -FF0 = 0 -FF1 = 1 -FF2 = 0 -BIAS = 0 -MAX_OUTPUT = 0 +DEADBAND = 0 +P = 50 +I = 0 +D = 0 +FF0 = 0 +FF1 = 1 +FF2 = 0 +BIAS = 0 +MAX_OUTPUT = 0 ################################################################ [AXIS_3] # -# Step timing is 40 us steplen + 40 us stepspace -# That gives 80 us step period = 12.5 KHz step freq -# -# Bah, even software stepping can handle that, hm2 doesnt buy you much with -# such slow steppers. -# -# Scale is 200 steps/rev * 5 revs/inch = 1000 steps/inch +# Step timing is 25 us steplen + 25 us stepspace +# That gives 50 us step period = 20 KHz step freq # # This gives a maxvel of 12.5/1 = 12.5 ips # @@ -337,8 +362,8 @@ STEPGEN_MAX_VEL = 1.2 STEPGEN_MAX_ACC = 18.75 BACKLASH = 0.000 -# scale is 200 steps/rev * 8 mirostep * 10 tpi -SCALE = 32000 +# SCALE is 200 steps/rev * 2 microstep * 5 revs/inch = 2000 steps/inch +SCALE = 2000 MIN_LIMIT = -0.0 MAX_LIMIT = 15.0 @@ -349,44 +374,29 @@ MIN_FERROR = 0.05 HOME = 0.000 HOME_OFFSET = 0.00 HOME_SEARCH_VEL = -.1 -HOME_LATCH_VEL = 0.2 +HOME_LATCH_VEL = 0.2 #HOME_USE_INDEX = YES #HOME_IGNORE_LIMITS = YES -#HOME_IS_SHARED = 1 -#HOME_SEQUENCE = 2 +#HOME_IS_SHARED = 1 +#HOME_SEQUENCE = 2 # these are in nanoseconds -DIRSETUP = 1000 -DIRHOLD = 20000 -STEPLEN = 500 -STEPSPACE = 4000 +DIRSETUP = 25000 +DIRHOLD = 25000 +STEPLEN = 25000 +STEPSPACE = 25000 # Set to one for active low step pulses -STEP_INVERT = 0 +STEP_INVERT = 0 # PID tuning params -DEADBAND = 0 -P = 50 -I = 0 -D = 0 -FF0 = 0 -FF1 = 1 -FF2 = 0 -BIAS = 0 -MAX_OUTPUT = 0 - - - - -############################ - -[EMCIO] - -# Name of IO controller program, e.g., io -EMCIO = io - -# cycle time, in seconds -CYCLE_TIME = 0.100 +DEADBAND = 0 +P = 50 +I = 0 +D = 0 +FF0 = 0 +FF1 = 1 +FF2 = 0 +BIAS = 0 +MAX_OUTPUT = 0 -# tool table file -TOOL_TABLE = tool.tbl diff --git a/configs/ARM/BeagleBone/Xylotex/setup.sh b/configs/ARM/BeagleBone/Xylotex/setup.sh index a2504a06c1..f5e1de93da 100755 --- a/configs/ARM/BeagleBone/Xylotex/setup.sh +++ b/configs/ARM/BeagleBone/Xylotex/setup.sh @@ -31,27 +31,18 @@ dir_err () { exit 1 } -SLOTS=/sys/devices/bone_capemgr.*/slots +PRU=/sys/class/uio/uio0 +echo -n "Waiting for $PRU " -# Make sure required device tree overlay(s) are loaded -for DTBO in cape-universal cape-bone-iio ; do +while [ ! -r $PRU ] +do + echo -n "." + sleep 1 +done +echo OK - if grep -q $DTBO $SLOTS ; then - echo $DTBO overlay found - else - echo Loading $DTBO overlay - sudo -A bash -c "echo $DTBO > $SLOTS" || dtbo_err - sleep 1 - fi -done; - -if [ ! -r /sys/devices/ocp.*/helper.*/AIN0 ] ; then - echo Analog input files not found in /sys/devices/ocp.*/helper.* >&2 - exit 1; -fi - -if [ ! -r /sys/class/uio/uio0 ] ; then - echo PRU control files not found in /sys/class/uio/uio0 >&2 +if [ ! -r $PRU ] ; then + echo PRU control files not found in $PRU >&2 exit 1; fi @@ -76,6 +67,7 @@ fi sudo $(which config-pin) -f - <<- EOF P8.07 out # gpio2.2 Enable System + P8.09 in # gpio2.5 ESTOPin P8.10 in # gpio2.4 XLIM P8.11 out # gpio1.13 X_Dir P8.12 out # gpio1.12 X_Step @@ -85,15 +77,15 @@ sudo $(which config-pin) -f - <<- EOF P8.16 out # gpio1.14 Y_Step P8.18 in # gpio2.1 ZLIM P8.19 out # gpio0.22 PWM1 + P8.26 out # ESTOP Out (ENA_LED) + P9.11 out # gpio0.31 A_Step + P9.13 out # gpio0.30 A_Dir P9.14 out # gpio1.18 PWM2 P9.15 out # gpio1.16 Z_Step - P9.23 out # gpio1.17 Z_Dir # P9.17 out # gpio0.5 SCS # P9.18 in # gpio0.4 SDI # P9.21 out # gpio0.3 SDO # P9.22 out # gpio0.2 SCK - P9.13 out # gpio0.30 A_Dir - P9.11 out # gpio0.31 A_Step - P8.09 in # gpio2.5 STOPin + P9.23 out # gpio1.17 Z_Dir EOF From 2fd4c42542fafe6fb5c9ce677ab83e734b9be5c0 Mon Sep 17 00:00:00 2001 From: Alan Condit Date: Sun, 9 Sep 2018 12:11:52 -0700 Subject: [PATCH 266/516] Changes to BeBoPr-Bridge config to run on Debian Stretch Changes to BeBoPr-Bridge.ini, BeBoPr-Bridge.hal, setup.bridge.sh, lineardelta.ini and lineardelta.hal to run on Debian Stretch. --- .../BeBoPr-Bridge/BeBoPr-Bridge.bbio | 43 +++++ .../BeBoPr-Bridge/BeBoPr-Bridge.hal | 35 ++-- .../BeBoPr-Bridge/BeBoPr-Bridge.ini | 77 ++++++--- .../BeagleBone/BeBoPr-Bridge/lineardelta.hal | 25 +-- .../BeagleBone/BeBoPr-Bridge/lineardelta.ini | 18 +- .../BeagleBone/BeBoPr-Bridge/setup.bridge.sh | 154 +++++++++--------- 6 files changed, 208 insertions(+), 144 deletions(-) create mode 100644 configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.bbio diff --git a/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.bbio b/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.bbio new file mode 100644 index 0000000000..c00aa509c9 --- /dev/null +++ b/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.bbio @@ -0,0 +1,43 @@ +# File generated with BB pin configurator +# title: Xylotex +overlay cape-universal +overlay cape-bone-iio +#overlay cape-univ-emmc + P8_03 low #gpio1.06 Enable + P8_05 high #gpio1.02 Enable_n + P8_07 high #gpio2.02 Enable_n (ECO location) + P8_08 high #gpio2.03 + P8_09 in #gpio2.05 + P8_10 in #gpio2.04 + P8_13 low #gpio0.23 J2.PWM0-Heater + P8_14 in #gpio0.26 + P8_17 in #gpio0.27 + P8_18 in #gpio2.01 + P8_19 low #gpio0.22 J3.PWM1-Heater + P8_20 out #gpio1.31 E_ENA + P8_21 out #gpio1.30 E_DIR + P8_25 out #gpio1.00 STATUS_LED + P8_27 out #gpio2.22 Z_Step + P8_28 out #gpio2.24 Z_Ena + P8_29 out #gpio2.23 Z_Dir + P8_29 out #gpio2.23 Z_Dir + P8_30 out #gpio0.10 E_Step + P8_31 in #gpio0.10 X_Min + P8_32 in #gpio0.11 X_Max + P8_33 in #gpio0.09 Y_Max + P8_35 in #gpio0.08 Y_Min + P8_36 out #gpio2.16 J4.PWM + P8_37 in #gpio2.14 Z_Max + P8_38 in #gpio2.15 Z_Min + P8_39 out #gpio2.12 Z_Min + P8_40 out #gpio2.13 Y_Ena + P8_41 out #gpio2.10 X_Ena + P8_42 out #gpio2.11 Y_Step + P8_43 out #gpio2.08 X_Step + P8_44 out #gpio2.09 X_Dir + P8_45 low #gpio2.06 PWM1 + P8_46 low #gpio2.07 PWM0 + P9_14 low #gpio1.18 J4.PWM2-Heater +# P9_36 in #THRM2 +# P9_38 in #THRM1 +# P9_40 in #THRM0 diff --git a/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.hal b/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.hal index 9179352e23..79e247da66 100755 --- a/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.hal +++ b/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.hal @@ -8,23 +8,25 @@ # Launch the setup script to make sure hardware setup looks good loadusr -w ./setup.bridge.sh +#loadusr -w config-pin -f ./BeBoPr-Bridge.bbio # ################################### # Core EMC/HAL Loads # ################################### - # kinematics loadrt trivkins -# motion controller, get name and thread periods from ini file # trajectory planner loadrt tp + +# motion controller, get name and thread periods from ini file loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES tp=tp kins=trivkins # load low-level drivers -loadrt hal_bb_gpio output_pins=107,126,217,218,224,226 input_pins=108,109,110,114,117,118 +#loadrt hal_bb_gpio output_pins=107,126,217,218,224,226 input_pins=108,109,110,114,117,118 +loadrt hal_bb_gpio output_pins=807,826,917,918,924,926 input_pins=808,809,810,814,817,818 loadrt [PRUCONF](DRIVER) prucode=$(HAL_RTMOD_DIR)/[PRUCONF](PRUBIN) [PRUCONF](CONFIG) halname=hpg loadrt pid count=2 loadrt limit1 count=2 @@ -38,7 +40,7 @@ loadusr -Wn Therm ./ReadTemp.py -n Therm --num_chan 2 -t 1 1 -a 4 5 # ################################################ # THREADS # ################################################ - +# hpg = [PRUCONF](DRIVER) addf hpg.capture-position servo-thread addf bb_gpio.read servo-thread addf motion-command-handler servo-thread @@ -54,12 +56,9 @@ addf bb_gpio.write servo-thread # ###################################################### # Axis-of-motion Specific Configs (not the GUI) # ###################################################### - - # ################ # X [0] Axis # ################ - # axis enable chain newsig emcmot.00.enable bit sets emcmot.00.enable FALSE @@ -90,9 +89,9 @@ setp hpg.stepgen.00.maxaccel [AXIS_0]STEPGEN_MAX_ACC #setp hpg.stepgen.00.step_type 0 # P8.43 PRU1.out2 -setp hpg.stepgen.00.steppin 0x4C +setp hpg.stepgen.00.steppin 843 # P8.44 PRU1.out4 -setp hpg.stepgen.00.dirpin 0x4D +setp hpg.stepgen.00.dirpin 844 # ################ @@ -129,9 +128,9 @@ setp hpg.stepgen.01.maxaccel [AXIS_1]STEPGEN_MAX_ACC #setp hpg.stepgen.01.step_type 0 # P8.42 PRU1.out5 -setp hpg.stepgen.01.steppin 0x4E +setp hpg.stepgen.01.steppin 842 # P8.39 PRU1.out6 -setp hpg.stepgen.01.dirpin 0x4F +setp hpg.stepgen.01.dirpin 839 # ################ @@ -168,9 +167,9 @@ setp hpg.stepgen.02.maxaccel [AXIS_2]STEPGEN_MAX_ACC #setp hpg.stepgen.02.step_type 0 # P8.27 PRU1.out8 -setp hpg.stepgen.02.steppin 0x50 +setp hpg.stepgen.02.steppin 827 # P8.29 PRU1.out9 -setp hpg.stepgen.02.dirpin 0x51 +setp hpg.stepgen.02.dirpin 829 # ################ @@ -207,9 +206,9 @@ setp hpg.stepgen.03.maxaccel [AXIS_3]STEPGEN_MAX_ACC #setp hpg.stepgen.03.step_type 0 # P8.30 GPIO2.25 -setp hpg.stepgen.03.steppin 0x22 +setp hpg.stepgen.03.steppin 830 # P8.21 GPIO1.30 -setp hpg.stepgen.03.dirpin 0x23 +setp hpg.stepgen.03.dirpin 821 # ################################################## @@ -254,17 +253,17 @@ newsig bed.temp.meas float setp hpg.pwmgen.00.pwm_period 10000000 # J2 E0 Heater PRU1.out1 -setp hpg.pwmgen.00.out.00.pin 0x37 +setp hpg.pwmgen.00.out.00.pin 813 setp hpg.pwmgen.00.out.00.enable 1 setp hpg.pwmgen.00.out.00.value 0.0 # J3 E1 Heater PRU1.out0 -setp hpg.pwmgen.00.out.01.pin 0x36 +setp hpg.pwmgen.00.out.01.pin 819 setp hpg.pwmgen.00.out.01.enable 1 setp hpg.pwmgen.00.out.01.value 0.0 # J4 Bed Heater GPIO2.16 -setp hpg.pwmgen.00.out.02.pin 0x52 +setp hpg.pwmgen.00.out.02.pin 914 setp hpg.pwmgen.00.out.02.enable 1 setp hpg.pwmgen.00.out.02.value 0.0 diff --git a/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.ini b/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.ini index e4510b4727..fa1d3080da 100755 --- a/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.ini +++ b/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.ini @@ -1,28 +1,31 @@ [PRUCONF] DRIVER=hal_pru_generic CONFIG=pru=1 num_stepgens=4 num_pwmgens=3 -PRUBIN=xenomai/pru_generic.bin - +#PRUBIN=xenomai/pru_generic.bin +PRUBIN=rt-preempt/pru_generic.bin +############################################################################### +# Hardware Abstraction Layer section +############################################################################### [EMC] # Name of machine, for use with display, etc. MACHINE = BeBoPr # Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others +DEBUG = 0 #DEBUG = 0x00000003 #DEBUG = 0x00000007 -DEBUG = 0 - - +############################################################################### +# Sections for display options +############################################################################### [DISPLAY] - # Name of display program, e.g., tkemc +DISPLAY = axis #DISPLAY = tkemc #DISPLAY = gscreen -DISPLAY = axis # Touchy currently won't work without some hardware buttons/jog-wheel #DISPLAY = touchy @@ -64,6 +67,9 @@ jpg = image-to-gcode py = python +############################################################################### +# Task controller section +############################################################################### [TASK] # Name of task controller program, e.g., milltask @@ -73,16 +79,17 @@ TASK = milltask CYCLE_TIME = 0.010 - - +############################################################################### +# Part program interpreter section +############################################################################### [RS274NGC] # File containing interpreter variables PARAMETER_FILE = pru-stepper.var - - - +############################################################################### +# Motion control section +############################################################################### [EMCMOT] EMCMOT = motmod @@ -97,8 +104,9 @@ COMM_WAIT = 0.010 SERVO_PERIOD = 1000000 - - +############################################################################### +# Hardware Abstraction Layer section +############################################################################### [HAL] # The run script first uses halcmd to execute any HALFILE @@ -116,6 +124,9 @@ HALFILE = BeBoPr-Bridge.hal POSTGUI_HALFILE = BeBoPr.postgui.hal +############################################################################### +# Trajectory planner section +############################################################################### [TRAJ] AXES = 4 @@ -132,6 +143,9 @@ MAX_LINEAR_VELOCITY = 200.00 +############################################################################### +# Axes sections +############################################################################### [AXIS_0] # @@ -182,6 +196,7 @@ STEPSPACE = 1000 +################################################################ [AXIS_1] TYPE = LINEAR @@ -203,12 +218,16 @@ MIN_FERROR = 0.25 HOME = 0.000 HOME_OFFSET = 0.00 -HOME_SEARCH_VEL = 0.0 -HOME_LATCH_VEL = 0.0 HOME_USE_INDEX = NO HOME_IGNORE_LIMITS = YES HOME_SEQUENCE = 0 +# Set to zero if you don't have physical home/limit switches +# Set to the desired homing and latch velocity if you have switches +# See: https://github.com/machinekit/machinekit-docs +HOME_SEARCH_VEL = 0.0 +HOME_LATCH_VEL = 0.0 + # these are in nanoseconds DIRSETUP = 200 DIRHOLD = 200 @@ -218,6 +237,7 @@ STEPSPACE = 1000 +################################################################ [AXIS_2] TYPE = LINEAR @@ -239,12 +259,16 @@ MIN_FERROR = 0.25 HOME = 0.000 HOME_OFFSET = 0.00 -HOME_SEARCH_VEL = 0.0 -HOME_LATCH_VEL = 0.0 -HOME_USE_INDEX = NO HOME_IGNORE_LIMITS = YES +HOME_USE_INDEX = NO HOME_SEQUENCE = 0 +# Set to zero if you don't have physical home/limit switches +# Set to the desired homing and latch velocity if you have switches +# See: https://github.com/machinekit/machinekit-docs +HOME_SEARCH_VEL = 0.0 +HOME_LATCH_VEL = 0.0 + # these are in nanoseconds DIRSETUP = 200 DIRHOLD = 200 @@ -254,6 +278,7 @@ STEPSPACE = 1000 +################################################################ [AXIS_3] TYPE = ANGULAR @@ -274,14 +299,18 @@ MAX_LIMIT = 999999999.0 FERROR = 1.0 MIN_FERROR = .25 -HOME = 0.0 -HOME_OFFSET = 0.0 -HOME_SEARCH_VEL = 0.0 -HOME_LATCH_VEL = 0.0 -HOME_USE_INDEX = NO +HOME = 0.000 +HOME_OFFSET = 0.00 HOME_IGNORE_LIMITS = YES +HOME_USE_INDEX = NO HOME_SEQUENCE = 0 +# Set to zero if you don't have physical home/limit switches +# Set to the desired homing and latch velocity if you have switches +# See: https://github.com/machinekit/machinekit-docs +HOME_SEARCH_VEL = 0.0 +HOME_LATCH_VEL = 0.0 + # these are in nanoseconds DIRSETUP = 200 DIRHOLD = 200 diff --git a/configs/ARM/BeagleBone/BeBoPr-Bridge/lineardelta.hal b/configs/ARM/BeagleBone/BeBoPr-Bridge/lineardelta.hal index 8314ef6c2e..a77a4bdea9 100644 --- a/configs/ARM/BeagleBone/BeBoPr-Bridge/lineardelta.hal +++ b/configs/ARM/BeagleBone/BeBoPr-Bridge/lineardelta.hal @@ -28,7 +28,8 @@ loadrt tp loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES tp=tp kins=lineardeltakins # load low-level drivers -loadrt hal_bb_gpio output_pins=107,126,217,218,224,226 input_pins=108,109,110,114,117,118 +#loadrt hal_bb_gpio output_pins=107,126,217,218,224,226 input_pins=108,109,110,114,117,118 +loadrt hal_bb_gpio output_pins=807,826,917,918,924,926 input_pins=808,809,810,814,817,818 loadrt [PRUCONF](DRIVER) prucode=$(HAL_RTMOD_DIR)/[PRUCONF](PRUBIN) [PRUCONF](CONFIG) halname=hpg loadrt pid count=2 loadrt limit1 count=2 @@ -103,9 +104,9 @@ setp hpg.stepgen.00.maxaccel [AXIS_0]STEPGEN_MAX_ACC #setp hpg.stepgen.00.step_type 0 # P8.43 PRU1.out2 -setp hpg.stepgen.00.steppin 0x4C +setp hpg.stepgen.00.steppin 843 # P8.44 PRU1.out4 -setp hpg.stepgen.00.dirpin 0x4D +setp hpg.stepgen.00.dirpin 844 # because column C is connected to the X-axis output # the bebopr-bridge signal needs to be X-max means P8.9 @@ -146,9 +147,9 @@ setp hpg.stepgen.01.maxaccel [AXIS_1]STEPGEN_MAX_ACC #setp hpg.stepgen.01.step_type 0 # P8.42 PRU1.out5 -setp hpg.stepgen.01.steppin 0x4E +setp hpg.stepgen.01.steppin 842 # P8.39 PRU1.out6 -setp hpg.stepgen.01.dirpin 0x4F +setp hpg.stepgen.01.dirpin 839 # because column A is connected to the Y-axis output @@ -190,9 +191,9 @@ setp hpg.stepgen.02.maxaccel [AXIS_2]STEPGEN_MAX_ACC #setp hpg.stepgen.02.step_type 0 # P8.27 PRU1.out8 -setp hpg.stepgen.02.steppin 0x50 +setp hpg.stepgen.02.steppin 827 # P8.29 PRU1.out9 -setp hpg.stepgen.02.dirpin 0x51 +setp hpg.stepgen.02.dirpin 829 # because column B is connected to the Z-axis output # the bebopr-bridge signal needs to be Z-max means P8.18 @@ -233,9 +234,9 @@ setp hpg.stepgen.03.maxaccel [AXIS_3]STEPGEN_MAX_ACC #setp hpg.stepgen.03.step_type 0 # P8.30 GPIO2.25 -setp hpg.stepgen.03.steppin 0x22 +setp hpg.stepgen.03.steppin 830 # P8.21 GPIO1.30 -setp hpg.stepgen.03.dirpin 0x23 +setp hpg.stepgen.03.dirpin 821 # ################################################## @@ -280,7 +281,7 @@ newsig fan.speed.set float setp hpg.pwmgen.00.pwm_period 10000000 # J2 E0 Heater PRU1.out1 -setp hpg.pwmgen.00.out.00.pin 0x37 +setp hpg.pwmgen.00.out.00.pin 813 setp hpg.pwmgen.00.out.00.enable 1 setp hpg.pwmgen.00.out.00.value 0.0 @@ -314,7 +315,7 @@ net e0_temp_within_range wcomp.0.out => motion.digital-in-00 # no longer J3 E1 Heater PRU1.out0 # instead used for FAN control # we use scale 255 for compatibility with slicing software -setp hpg.pwmgen.00.out.01.pin 0x36 +setp hpg.pwmgen.00.out.01.pin 819 setp hpg.pwmgen.00.out.01.enable 1 setp hpg.pwmgen.00.out.01.value 0.0 setp hpg.pwmgen.00.out.01.scale 255 @@ -325,7 +326,7 @@ net fan.speed.set => hpg.pwmgen.00.out.01.value # J4 Bed Heater GPIO2.16 -setp hpg.pwmgen.00.out.02.pin 0x52 +setp hpg.pwmgen.00.out.02.pin 914 setp hpg.pwmgen.00.out.02.enable 1 setp hpg.pwmgen.00.out.02.value 0.0 diff --git a/configs/ARM/BeagleBone/BeBoPr-Bridge/lineardelta.ini b/configs/ARM/BeagleBone/BeBoPr-Bridge/lineardelta.ini index 3e5c500ac7..15bde64d22 100644 --- a/configs/ARM/BeagleBone/BeBoPr-Bridge/lineardelta.ini +++ b/configs/ARM/BeagleBone/BeBoPr-Bridge/lineardelta.ini @@ -1,10 +1,8 @@ [PRUCONF] DRIVER=hal_pru_generic CONFIG=pru=1 num_stepgens=4 num_pwmgens=3 -PRUBIN=xenomai/pru_generic.bin - - - +#PRUBIN=xenomai/pru_generic.bin +PRUBIN=rt-preempt/pru_generic.bin [EMC] @@ -12,9 +10,9 @@ PRUBIN=xenomai/pru_generic.bin MACHINE = LinearDelta # Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others +DEBUG = 0 #DEBUG = 0x00000003 #DEBUG = 0x00000007 -DEBUG = 0 @@ -79,9 +77,6 @@ INCREMENTS = 10 1 0.1 0.01 PYVCP = BeBoPr.panel.xml - - - [FILTER] PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image PROGRAM_EXTENSION = .py Python Script @@ -91,8 +86,6 @@ jpg = image-to-gcode py = python - - [TASK] # Name of task controller program, e.g., milltask @@ -371,7 +364,4 @@ EMCIO = io CYCLE_TIME = 0.100 # tool table file -TOOL_TABLE = tool.tbl - - - +TOOL_TABLE = tool.tbl diff --git a/configs/ARM/BeagleBone/BeBoPr-Bridge/setup.bridge.sh b/configs/ARM/BeagleBone/BeBoPr-Bridge/setup.bridge.sh index 5c747e0e53..572006524c 100755 --- a/configs/ARM/BeagleBone/BeBoPr-Bridge/setup.bridge.sh +++ b/configs/ARM/BeagleBone/BeBoPr-Bridge/setup.bridge.sh @@ -31,92 +31,94 @@ dir_err () { exit 1 } -SLOTS=/sys/devices/bone_capemgr.*/slots +PRU=/sys/class/uio/uio0 +echo -n "Waiting for $PRU " -# Export GPIO pins -export_gpio () { - while read PIN DIR JUNK ; do - case "$PIN" in - ""|\#*) - continue ;; - *) - [ -r /sys/class/gpio/gpio$PIN ] && continue - sudo -A su -c "echo $PIN > /sys/class/gpio/export" || pin_err - sudo -A su -c "echo $DIR > /sys/class/gpio/gpio$PIN/direction" || dir_err - ;; - esac - - done -} - -# Identify if a particular cape or overlay is actually loaded -# $1 = cape to look for -cape_loaded() { - grep ,$1\$ $SLOTS | { - # Default to cape not loaded - RET=1 - - # Check for cape - while read SLOT STATUS CAPE JUNK ; do - case $STATUS in - *L ) RET=0 ; break ;; # Cape is loaded - *- ) RET=2 ;; # Cape is present, but not loaded - * ) RET=3 ;; # Unknown status - esac - done - - return $RET - } -} - -# Load a cape -# $1 = cape to load -# $2 = revision (optional) -load_cape () { - echo Loading $1 overlay - sudo -A bash -c "echo $1${2:+:$2} > $SLOTS" || dtbo_err - sleep 1 -} - -# Make sure required device tree overlay(s) are loaded -DTBO=cape-bebopr-brdg -REV=R2 -if cape_loaded $DTBO ; then - echo $DTBO overlay found -else - load_cape $DTBO $REV -fi - -if [ ! -r /sys/bus/iio/devices/iio:device0/in_voltage5_raw ] ; then - echo "Analog input files not found in /sys/bus/iio/devices/iio:device0/" >&2 - exit 1; -fi +while [ ! -r $PRU ] +do + echo -n "." + sleep 1 +done +echo OK -if [ ! -r /sys/class/uio/uio0 ] ; then - echo PRU control files not found in /sys/class/uio/uio0 >&2 +if [ ! -r $PRU ] ; then + echo PRU control files not found in $PRU >&2 exit 1; fi # Using Official overlay, setup pin muxing to match what the HAL file expects # Setup PWM outputs to use GPIO pins -for FILE in /sys/devices/ocp.*/bebopr_pwm_J[234]_pinmux.*/state ; do - if [ -f $FILE ] ; then - sudo -A su -c "echo gpio > $FILE" || bebopr_err pwm: $FILE - fi -done +#for FILE in /sys/devices/ocp.*/bebopr_pwm_J[934]_pinmux.*/state ; do +# if [ -f $FILE ] ; then +# sudo -A su -c "echo gpio > $FILE" || bebopr_err pwm: $FILE +# fi +#done # Setup LED with no trigger, so we can drive it with the GPIO pin # Change this if you want the LED tied to something else (like heartbeat) -FILE=/sys/devices/ocp.*/bebopr_leds.*/leds/bebopr\:status_led/trigger -if [ -f $FILE ] ; then - sudo -A su -c "echo none > $FILE" || bebopr_err led: $FILE -fi - -# Export PWM GPIO pins which are not exported by the overlay -export_gpio <<- EOF - 23 low # P8.13 gpio0.23 PWM0 - 22 low # P8.19 gpio0.22 PWM1 - 50 low # p9.14 gpio1.18 PWM2 +#FILE=/sys/devices/ocp.*/bebopr_leds.*/leds/bebopr\:status_led/trigger +#if [ -f $FILE ] ; then +# sudo -A su -c "echo none > $FILE" || bebopr_err led: $FILE +#fi + +# Export GPIO pins: +# One pin needs to be exported to enable the low-level clocks for the GPIO +# modules (there is probably a better way to do this) +# +# Any GPIO pins driven by the PRU need to have their direction set properly +# here. The PRU does not do any setup of the GPIO, it just yanks on the +# pins and assumes you have the output enables configured already +# +# Direct PRU inputs and outputs do not need to be configured here, the pin +# mux setup (which is handled by the device tree overlay) should be all +# the setup needed. +# +# Any GPIO pins driven by the hal_bb_gpio driver do not need to be +# configured here. The hal_bb_gpio module handles setting the output +# enable bits properly. These pins _can_ however be set here without +# causing problems. You may wish to do this for documentation or to make +# sure the pin starts with a known value as soon as possible. + +sudo $(which config-pin) -f - <<- EOF + + P8.03 low # gpio1.06 Enable + P8.05 high # gpio1.02 Enable_n + P8.07 high # gpio2.02 Enable_n (ECO location) + P8.08 high # gpio2.03 + P8.09 in # gpio2.05 + P8.10 in # gpio2.04 + P8.13 low # gpio0.23 J2.PWM0-Heater + P8.14 in # gpio0.26 + P8.17 in # gpio0.27 + P8.18 in # gpio2.01 + P8.19 low # gpio0.22 J3.PWM1-Heater + P8.20 out # gpio1.31 E_ENA + P8.21 out # gpio1.30 E_DIR + P8.25 out # gpio1.00 STATUS_LED + P8.27 out # gpio2.22 Z_Step + P8.28 out # gpio2.24 Z_Ena + P8.29 out # gpio2.23 Z_Dir + P8.29 out # gpio2.23 Z_Dir + P8.30 out # gpio0.10 E_Step + P8.31 in # gpio0.10 X_Min + P8.32 in # gpio0.11 X_Max + P8.33 in # gpio0.09 Y_Max + P8.35 in # gpio0.08 Y_Min + P8.36 out # gpio2.16 J4.PWM + P8.37 in # gpio2.14 Z_Max + P8.38 in # gpio2.15 Z_Min + P8.39 out # gpio2.12 Z_Min + P8.40 out # gpio2.13 Y_Ena + P8.41 out # gpio2.10 X_Ena + P8.42 out # gpio2.11 Y_Step + P8.43 out # gpio2.08 X_Step + P8.44 out # gpio2.09 X_Dir + P8.45 low # gpio2.06 PWM1 + P8.46 low # gpio2.07 PWM0 + P9.14 low # gpio1.18 J4.PWM2-Heater +# P9.36 in # THRM2 +# P9.38 in # THRM1 +# EOF From 3f088124f44e6ce4af94797b44a8b173e57f71ed Mon Sep 17 00:00:00 2001 From: Daren Date: Mon, 10 Sep 2018 03:49:33 +0000 Subject: [PATCH 267/516] New itripodkins with ABC passthrough --- src/Makefile | 4 + src/emc/kinematics/itripodkins.c | 405 +++++++++++++++++++++++++++++++ 2 files changed, 409 insertions(+) create mode 100644 src/emc/kinematics/itripodkins.c diff --git a/src/Makefile b/src/Makefile index 897e12007d..9f436b24a9 100755 --- a/src/Makefile +++ b/src/Makefile @@ -1570,6 +1570,9 @@ rotatekins-objs := emc/kinematics/rotatekins.o obj-m += tripodkins.o tripodkins-objs := emc/kinematics/tripodkins.o +obj-m += itripodkins.o +itripodkins-objs := emc/kinematics/itripodkins.o + obj-m += lineardeltakins.o lineardeltakins-objs := emc/kinematics/lineardeltakins.o @@ -1893,6 +1896,7 @@ $(RTLIBDIR)/maxkins$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(maxkins-objs)) $(RTLIBDIR)/gantrykins$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(gantrykins-objs)) $(RTLIBDIR)/rotatekins$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(rotatekins-objs)) $(RTLIBDIR)/tripodkins$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(tripodkins-objs)) +$(RTLIBDIR)/itripodkins$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(itripodkins-objs)) $(RTLIBDIR)/lineardeltakins$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(lineardeltakins-objs)) $(RTLIBDIR)/genhexkins$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(genhexkins-objs)) $(RTLIBDIR)/genserkins$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(genserkins-objs)) diff --git a/src/emc/kinematics/itripodkins.c b/src/emc/kinematics/itripodkins.c new file mode 100644 index 0000000000..070f4b64d6 --- /dev/null +++ b/src/emc/kinematics/itripodkins.c @@ -0,0 +1,405 @@ +/******************************************************************** +* Description: itripodkins.c +* Kinematics for 3 axis inverted Tripod machine +* with passthrough for A B C rotational axis. +* +* Derived from a work by Fred Proctor +* +* Author: +* License: GPL Version 2 +* System: Linux +* +* Copyright (c) 2004 All rights reserved. +* +* Last change: +* Added passthrough and forced inverted. - Daren Schwenke +********************************************************************/ + +/* + These kinematics are for a tripod with point vertices. + + Vertices A, B, and C are the base, and vertex D is the controlled point. + Three tripod strut lengths AD, BD, and CD are the joints that move + point D around. + + Point A is the origin, with coordinates (0, 0, 0). Point B lies on the + x axis, with coordinates (Bx, 0, 0). Point C lies in the xy plane, with + coordinates (Cx, Cy, 0). Point D has coordinates (Dx, Dy, Dz). + + The controlled Cartesian values are Dx, Dy, and Dz. A frame attached to + D, say with x parallel to AD and y in the plane ABD, would change its + orientation as the strut lengths changed. The orientation of this frame + relative to the world frame is not computed. + + With respect to the kinematics functions, + + pos->tran.x = Dx + pos->tran.y = Dy + pos->tran.z = Dz + pos->a,b,c = 0 + + joints[0] = AD + joints[1] = BD + joints[2] = CD + + The inverse kinematics have no singularities. Any values for Dx, Dy, and + Dz will yield numerical results. Of course, these may be beyond the + strut length limits, but there are no singular effects like infinite speed. + + The forward kinematics has a singularity due to the triangle inequalities + for triangles ABD, BCD, and CAD. When any of these approach the limit, + Dz is zero and D lies in the base plane. + + The forward kinematics flags, referred to in kinematicsForward and + set in kinematicsInverse, let the forward kinematics select between + the positive and negative values of Dz for given strut values. + Dz > 0 is "above", Dz < 0 is "below". Dz = 0 is the singularity. + + fflags == 0 selects Dz > 0, + fflags != 0 selects Dz < 0. + + The inverse kinematics flags let the inverse kinematics select between + multiple valid solutions of strut lengths for given Cartesian values + for D. There are no multiple solutions: D constrains the strut lengths + completely. So, the inverse flags are ignored. + */ + +#include "kinematics.h" /* these decls */ +#include "rtapi_math.h" + +#define VTVERSION VTKINEMATICS_VERSION1 + +#ifndef __GNUC__ +#ifndef __attribute__ +#define __attribute__(x) +#endif +#endif + +#include "hal.h" + +struct haldata { + hal_float_t *bx, *cx, *cy; +} *haldata = 0; + +#define Bx (*(haldata->bx)) +#define Cx (*(haldata->cx)) +#define Cy (*(haldata->cy)) + +#define sq(x) ((x)*(x)) + +/* + forward kinematics takes three strut lengths and computes Dx, Dy, and Dz + pos->tran.x,y,z, respectively. The forward flag is used to resolve + D above/below the xy plane. The inverse flags are not set since there + are no ambiguities going from world to joint coordinates. + + The forward kins are derived as follows: + + 1. Let x, y, z be Dx, Dy, Dz to save pixels. Cartesian displacement from + D to A, B, and C gives + + AD^2 = x^2 + y^2 + z^2 + BD^2 = (x - Bx)^2 + y^2 + z^2 + CD^2 = (x - Cx)^2 + (y - Cy)^2 + z^2 + + This yields + + I. P = x^2 + y^2 + z^2 + II. Q = x^2 + y^2 + z^2 + sx + III. R = x^2 + y^2 + z^2 + tx + uy + + Where + + P = AD^2, + Q = BD^2 - Bx^2 + R = CD^2 - Cx^2 - Cy^2 + s = -2Bx + t = -2Cx + u = -2Cy + + II - I gives Q - P = sx, so x = (Q - P)/s, s != 0. The constraint on s + means that Bx != 0, or points A and B can't be the same. + + III - II gives R - Q = (t - s)x + uy, so y = (R - Q - (t - s)x)/u, u != 0. + The constraint on u means that Cy != 0, or points A B C can't be collinear. + + Substituting x, y into I gives z = sqrt(P - x^2 - y^2), which has two + solutions. Positive means the tripod is above the xy plane, negative + means below. +*/ +int kinematicsForward(const double * joints, + EmcPose * pos, + const KINEMATICS_FORWARD_FLAGS * fflags, + KINEMATICS_INVERSE_FLAGS * iflags) +{ +#define AD (joints[0]) +#define BD (joints[1]) +#define CD (joints[2]) +#define Dx (pos->tran.x) +#define Dy (pos->tran.y) +#define Dz (pos->tran.z) + double P, Q, R; + double s, t, u; + + P = sq(AD); + Q = sq(BD) - sq(Bx); + R = sq(CD) - sq(Cx) - sq(Cy); + s = -2.0 * Bx; + t = -2.0 * Cx; + u = -2.0 * Cy; + + if (s == 0.0) { + /* points A and B coincident. Fix Bx, #defined up top. */ + return -1; + } + Dx = (Q - P) / s; + + if (u == 0.0) { + /* points A B C are colinear. Fix Cy, #defined up top. */ + return -1; + } + Dy = (R - Q - (t - s) * Dx) / u; + Dz = P - sq(Dx) - sq(Dy); + if (Dz < 0.0) { + /* triangle inequality violated */ + return -1; + } + Dz = rtapi_sqrt(Dz); + if (*fflags) { + Dz = -Dz; + } + + pos->a = joints[3]; + pos->b = joints[4]; + pos->c = joints[5]; + + return 0; + +#undef AD +#undef BD +#undef CD +#undef Dx +#undef Dy +#undef Dz +} + +int kinematicsInverse(const EmcPose * pos, + double * joints, + const KINEMATICS_INVERSE_FLAGS * iflags, + KINEMATICS_FORWARD_FLAGS * fflags) +{ +#define AD (joints[0]) +#define BD (joints[1]) +#define CD (joints[2]) +#define Dx (pos->tran.x) +#define Dy (pos->tran.y) +#define Dz (pos->tran.z) + + AD = rtapi_sqrt(sq(Dx) + sq(Dy) + sq(Dz)); + BD = rtapi_sqrt(sq(Dx - Bx) + sq(Dy) + sq(Dz)); + CD = rtapi_sqrt(sq(Dx - Cx) + sq(Dy - Cy) + sq(Dz)); + + *fflags = 1; +/* if (Dz < 0.0) { + *fflags = 1; + } +*/ + joints[3] = pos->a; + joints[4] = pos->b; + joints[5] = pos->c; + + return 0; + +#undef AD +#undef BD +#undef CD +#undef Dx +#undef Dy +#undef Dz +} + +KINEMATICS_TYPE kinematicsType(void) +{ + return KINEMATICS_BOTH; +} + +#ifdef MAIN + +#include +#include + +/* + Interactive testing of kins. + + Syntax: a.out +*/ +int main(int argc, char *argv[]) +{ +#ifndef BUFFERLEN +#define BUFFERLEN 256 +#endif + char buffer[BUFFERLEN]; + char cmd[BUFFERLEN]; + EmcPose pos, vel; + double joints[3], jointvels[3]; + char inverse; + char flags; + KINEMATICS_FORWARD_FLAGS fflags; + + inverse = 0; /* forwards, by default */ + flags = 0; /* didn't provide flags */ + fflags = 1; /* below xy plane, by default */ + if (argc != 4 || + 1 != sscanf(argv[1], "%lf", &Bx) || + 1 != sscanf(argv[2], "%lf", &Cx) || + 1 != sscanf(argv[3], "%lf", &Cy)) { + fprintf(stderr, "syntax: %s Bx Cx Cy\n", argv[0]); + return 1; + } + + while (! feof(stdin)) { + if (inverse) { + printf("inv> "); + } + else { + printf("fwd> "); + } + fflush(stdout); + + if (NULL == fgets(buffer, BUFFERLEN, stdin)) { + break; + } + if (1 != sscanf(buffer, "%s", cmd)) { + continue; + } + + if (! strcmp(cmd, "quit")) { + break; + } + if (! strcmp(cmd, "i")) { + inverse = 1; + continue; + } + if (! strcmp(cmd, "f")) { + inverse = 0; + continue; + } + if (! strcmp(cmd, "ff")) { + if (1 != sscanf(buffer, "%*s %d", &fflags)) { + printf("need forward flag\n"); + } + continue; + } + + if (inverse) { /* inverse kins */ + if (3 != sscanf(buffer, "%lf %lf %lf", + &pos.tran.x, + &pos.tran.y, + &pos.tran.z)) { + printf("need X Y Z\n"); + continue; + } + if (0 != kinematicsInverse(&pos, joints, NULL, &fflags)) { + printf("inverse kin error\n"); + } + else { + printf("%f\t%f\t%f\n", joints[0], joints[1], joints[2]); + if (0 != kinematicsForward(joints, &pos, &fflags, NULL)) { + printf("forward kin error\n"); + } + else { + printf("%f\t%f\t%f\n", pos.tran.x, pos.tran.y, pos.tran.z); + } + } + } + else { /* forward kins */ + if (flags) { + if (4 != sscanf(buffer, "%lf %lf %lf %d", + &joints[0], + &joints[1], + &joints[2], + &fflags)) { + printf("need 3 strut values and flag\n"); + continue; + } + } + else { + if (3 != sscanf(buffer, "%lf %lf %lf", + &joints[0], + &joints[1], + &joints[2])) { + printf("need 3 strut values\n"); + continue; + } + } + if (0 != kinematicsForward(joints, &pos, &fflags, NULL)) { + printf("forward kin error\n"); + } + else { + printf("%f\t%f\t%f\n", pos.tran.x, pos.tran.y, pos.tran.z); + if (0 != kinematicsInverse(&pos, joints, NULL, &fflags)) { + printf("inverse kin error\n"); + } + else { + printf("%f\t%f\t%f\n", joints[0], joints[1], joints[2]); + } + } + } + } /* end while (! feof(stdin)) */ + + return 0; +} + +#endif /* MAIN */ + +#include "rtapi.h" /* RTAPI realtime OS API */ +#include "rtapi_app.h" /* RTAPI realtime module decls */ +#include "hal.h" + +static vtkins_t vtk = { + .kinematicsForward = kinematicsForward, + .kinematicsInverse = kinematicsInverse, + // .kinematicsHome = kinematicsHome, + .kinematicsType = kinematicsType +}; + +static int comp_id, vtable_id; +static const char *name = "tripodkins"; + +MODULE_LICENSE("GPL"); + +int rtapi_app_main(void) { + int res = 0; + + comp_id = hal_init(name); + if(comp_id < 0) return comp_id; + + vtable_id = hal_export_vtable(name, VTVERSION, &vtk, comp_id); + if (vtable_id < 0) { + rtapi_print_msg(RTAPI_MSG_ERR, + "%s: ERROR: hal_export_vtable(%s,%d,%p) failed: %d\n", + name, name, VTVERSION, &vtk, vtable_id ); + return -ENOENT; + } + + haldata = hal_malloc(sizeof(struct haldata)); + if(!haldata) goto error; + + if((res = hal_pin_float_new("tripodkins.Bx", HAL_IO, &(haldata->bx), comp_id)) < 0) goto error; + if((res = hal_pin_float_new("tripodkins.Cx", HAL_IO, &(haldata->cx), comp_id)) < 0) goto error; + if((res = hal_pin_float_new("tripodkins.Cy", HAL_IO, &(haldata->cy), comp_id)) < 0) goto error; + + Bx = Cx = Cy = 1.0; + hal_ready(comp_id); + return 0; + +error: + hal_exit(comp_id); + return res; +} + +void rtapi_app_exit(void) +{ + hal_remove_vtable(vtable_id); + hal_exit(comp_id); +} From dbe0af1954877ade624b86ab3bacca9d424535d2 Mon Sep 17 00:00:00 2001 From: Daren Schwenke Date: Mon, 10 Sep 2018 04:59:20 -0400 Subject: [PATCH 268/516] Removed check altogether. Always inverted. --- src/emc/kinematics/itripodkins.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/src/emc/kinematics/itripodkins.c b/src/emc/kinematics/itripodkins.c index 070f4b64d6..aa56d3fdab 100644 --- a/src/emc/kinematics/itripodkins.c +++ b/src/emc/kinematics/itripodkins.c @@ -165,9 +165,7 @@ int kinematicsForward(const double * joints, return -1; } Dz = rtapi_sqrt(Dz); - if (*fflags) { - Dz = -Dz; - } + Dz = -Dz; pos->a = joints[3]; pos->b = joints[4]; @@ -200,10 +198,7 @@ int kinematicsInverse(const EmcPose * pos, CD = rtapi_sqrt(sq(Dx - Cx) + sq(Dy - Cy) + sq(Dz)); *fflags = 1; -/* if (Dz < 0.0) { - *fflags = 1; - } -*/ + joints[3] = pos->a; joints[4] = pos->b; joints[5] = pos->c; @@ -364,7 +359,7 @@ static vtkins_t vtk = { }; static int comp_id, vtable_id; -static const char *name = "tripodkins"; +static const char *name = "itripodkins"; MODULE_LICENSE("GPL"); @@ -385,9 +380,9 @@ int rtapi_app_main(void) { haldata = hal_malloc(sizeof(struct haldata)); if(!haldata) goto error; - if((res = hal_pin_float_new("tripodkins.Bx", HAL_IO, &(haldata->bx), comp_id)) < 0) goto error; - if((res = hal_pin_float_new("tripodkins.Cx", HAL_IO, &(haldata->cx), comp_id)) < 0) goto error; - if((res = hal_pin_float_new("tripodkins.Cy", HAL_IO, &(haldata->cy), comp_id)) < 0) goto error; + if((res = hal_pin_float_new("itripodkins.Bx", HAL_IO, &(haldata->bx), comp_id)) < 0) goto error; + if((res = hal_pin_float_new("itripodkins.Cx", HAL_IO, &(haldata->cx), comp_id)) < 0) goto error; + if((res = hal_pin_float_new("itripodkins.Cy", HAL_IO, &(haldata->cy), comp_id)) < 0) goto error; Bx = Cx = Cy = 1.0; hal_ready(comp_id); From b879205045001d53c5832398534ad3f4e957a24b Mon Sep 17 00:00:00 2001 From: Alan Condit Date: Mon, 10 Sep 2018 09:24:43 -0700 Subject: [PATCH 269/516] More work on BeBoPr-Bridge, CRAMPS and Xylotex configs for stretch Trying to figure out which PROGRAM_PREFIX is best to use. --- configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.hal | 2 +- configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.ini | 2 ++ configs/ARM/BeagleBone/BeBoPr-Bridge/lineardelta.ini | 2 ++ configs/ARM/BeagleBone/CRAMPS/CRAMPS.ini | 2 ++ configs/ARM/BeagleBone/Xylotex/Xylotex.ini | 5 +++-- 5 files changed, 10 insertions(+), 3 deletions(-) diff --git a/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.hal b/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.hal index 79e247da66..7e2daa4b09 100755 --- a/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.hal +++ b/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.hal @@ -287,7 +287,7 @@ setp limit1.0.min 0 net bed.temp.meas <= Therm.temp1 net bed.temp.meas => pid.1.feedback -sets bed.temp.set 0 +sets bed.temp.set 0 net bed.temp.set => pid.1.command net bed.heater <= pid.1.output diff --git a/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.ini b/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.ini index fa1d3080da..e41c88404d 100755 --- a/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.ini +++ b/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.ini @@ -47,6 +47,8 @@ MAX_FEED_OVERRIDE = 1.5 # Prefix to be used PROGRAM_PREFIX = ../../../nc_files/ +#PROGRAM_PREFIX = /home/machinekit/machinekit/nc_files/ +#PROGRAM_PREFIX = ~/machinekit/nc_files/ # Introductory graphic INTRO_GRAPHIC = machinekit.gif diff --git a/configs/ARM/BeagleBone/BeBoPr-Bridge/lineardelta.ini b/configs/ARM/BeagleBone/BeBoPr-Bridge/lineardelta.ini index 15bde64d22..6a9d1032ec 100644 --- a/configs/ARM/BeagleBone/BeBoPr-Bridge/lineardelta.ini +++ b/configs/ARM/BeagleBone/BeBoPr-Bridge/lineardelta.ini @@ -66,6 +66,8 @@ MAX_FEED_OVERRIDE = 1.5 # Prefix to be used PROGRAM_PREFIX = ../../../nc_files/ +#PROGRAM_PREFIX = /home/machinekit/machinekit/nc_files/ +#PROGRAM_PREFIX = ~/machinekit/nc_files/ # Introductory graphic INTRO_GRAPHIC = machinekit.gif diff --git a/configs/ARM/BeagleBone/CRAMPS/CRAMPS.ini b/configs/ARM/BeagleBone/CRAMPS/CRAMPS.ini index abc6aada1e..be1eada1d7 100644 --- a/configs/ARM/BeagleBone/CRAMPS/CRAMPS.ini +++ b/configs/ARM/BeagleBone/CRAMPS/CRAMPS.ini @@ -47,6 +47,8 @@ MAX_FEED_OVERRIDE = 1.5 # Prefix to be used PROGRAM_PREFIX = ../../../nc_files/ +#PROGRAM_PREFIX = /home/machinekit/machinekit/nc_files/ +#PROGRAM_PREFIX = ~/machinekit/nc_files/ # Introductory graphic INTRO_GRAPHIC = machinekit.gif diff --git a/configs/ARM/BeagleBone/Xylotex/Xylotex.ini b/configs/ARM/BeagleBone/Xylotex/Xylotex.ini index c2975d2456..46becdb20a 100755 --- a/configs/ARM/BeagleBone/Xylotex/Xylotex.ini +++ b/configs/ARM/BeagleBone/Xylotex/Xylotex.ini @@ -55,8 +55,9 @@ MAX_SPINDLE_OVERRIDE = 1.0 MIN_SPINDLE_OVERRIDE = 0.25 # Prefix to be used -#PROGRAM_PREFIX = /home/machinekit/machinekit/nc_files -PROGRAM_PREFIX = ~/machinekit/nc_files/ +PROGRAM_PREFIX = ../../../nc_files/ +#PROGRAM_PREFIX = /home/machinekit/machinekit/nc_files/ +#PROGRAM_PREFIX = ~/machinekit/nc_files/ # Introductory graphic INTRO_GRAPHIC = linuxcnc.gif From f51306a461e02fc0042b557bb43c84b1fe261e91 Mon Sep 17 00:00:00 2001 From: Mick Date: Fri, 7 Sep 2018 12:42:50 +0100 Subject: [PATCH 270/516] Add instantiated watch component. (HAL) watch component written to help remove need for user to repeatedly poll pin value via `halcmd show pin ` and parse the output. A 'built in' example of this halcmd use is the M109 user M code. Since the changes made to memory allocation and freeing after introduction of instantiated components, this creates a 'corner case' where the HAL heap is eventually exhausted, because the housekeeping tracks and voids the memory used for instances of a component, but does not free them until the main hal_lib exits. machinekit/machinekit-hal/issues/142 relates A demo sim for its use added to configs, showing dummy FDM heater scenario. As a side issue, a new hal sub-dir `/user_icomps` in which watch is built, shows how to build C source code instantiated components within the source tree. Changes to hal_lib.c export functions required for HAL components to properly get and set HAL values Also adds minor component s(mall)counter, used as a pin value change generator for demo sim in seperate commit. Signed-off-by: Mick --- configs/sim/axis/watch-demo-sim/README | 4 + .../watch-demo-sim/axis_manualtoolchange.hal | 10 + configs/sim/axis/watch-demo-sim/axis_mm.ini | 229 ++++++ .../axis/watch-demo-sim/check_constraints.hal | 63 ++ configs/sim/axis/watch-demo-sim/core_sim.hal | 59 ++ .../sim/axis/watch-demo-sim/core_stepper.hal | 55 ++ .../axis/watch-demo-sim/custom_postgui.hal | 28 + .../sim/axis/watch-demo-sim/custompanel.xml | 46 ++ configs/sim/axis/watch-demo-sim/newthread.hal | 1 + configs/sim/axis/watch-demo-sim/server.nml | 46 ++ configs/sim/axis/watch-demo-sim/sim_mm.tbl | 24 + .../watch-demo-sim/sim_spindle_encoder.hal | 39 + .../axis/watch-demo-sim/simulated_home.hal | 32 + .../axis/watch-demo-sim/simulated_limits.hal | 76 ++ configs/sim/axis/watch-demo-sim/tool.tbl | 4 + src/Makefile | 1 + src/hal/lib/hal_lib.c | 15 +- src/hal/user_comps/scounter.comp | 50 ++ src/hal/user_icomps/README | 5 + src/hal/user_icomps/Submakefile | 12 + src/hal/user_icomps/watch.c | 714 ++++++++++++++++++ 21 files changed, 1506 insertions(+), 7 deletions(-) create mode 100644 configs/sim/axis/watch-demo-sim/README create mode 100644 configs/sim/axis/watch-demo-sim/axis_manualtoolchange.hal create mode 100644 configs/sim/axis/watch-demo-sim/axis_mm.ini create mode 100644 configs/sim/axis/watch-demo-sim/check_constraints.hal create mode 100644 configs/sim/axis/watch-demo-sim/core_sim.hal create mode 100644 configs/sim/axis/watch-demo-sim/core_stepper.hal create mode 100644 configs/sim/axis/watch-demo-sim/custom_postgui.hal create mode 100644 configs/sim/axis/watch-demo-sim/custompanel.xml create mode 100644 configs/sim/axis/watch-demo-sim/newthread.hal create mode 100644 configs/sim/axis/watch-demo-sim/server.nml create mode 100644 configs/sim/axis/watch-demo-sim/sim_mm.tbl create mode 100644 configs/sim/axis/watch-demo-sim/sim_spindle_encoder.hal create mode 100644 configs/sim/axis/watch-demo-sim/simulated_home.hal create mode 100644 configs/sim/axis/watch-demo-sim/simulated_limits.hal create mode 100644 configs/sim/axis/watch-demo-sim/tool.tbl create mode 100644 src/hal/user_comps/scounter.comp create mode 100644 src/hal/user_icomps/README create mode 100644 src/hal/user_icomps/Submakefile create mode 100644 src/hal/user_icomps/watch.c diff --git a/configs/sim/axis/watch-demo-sim/README b/configs/sim/axis/watch-demo-sim/README new file mode 100644 index 0000000000..901ab49142 --- /dev/null +++ b/configs/sim/axis/watch-demo-sim/README @@ -0,0 +1,4 @@ +A demo sim for the watch component + +Shows how it could be used to initiate a temperature component and monitor +temperature up to a desired target temperature and beyond. \ No newline at end of file diff --git a/configs/sim/axis/watch-demo-sim/axis_manualtoolchange.hal b/configs/sim/axis/watch-demo-sim/axis_manualtoolchange.hal new file mode 100644 index 0000000000..45dbe63ea5 --- /dev/null +++ b/configs/sim/axis/watch-demo-sim/axis_manualtoolchange.hal @@ -0,0 +1,10 @@ +loadusr -W hal_manualtoolchange + +# in case they were linked already +unlinkp iocontrol.0.tool-change +unlinkp iocontrol.0.tool-changed + +net tool-change hal_manualtoolchange.change iocontrol.0.tool-change +net tool-changed hal_manualtoolchange.changed iocontrol.0.tool-changed +net tool-prep-number hal_manualtoolchange.number iocontrol.0.tool-prep-number + diff --git a/configs/sim/axis/watch-demo-sim/axis_mm.ini b/configs/sim/axis/watch-demo-sim/axis_mm.ini new file mode 100644 index 0000000000..294789a9b3 --- /dev/null +++ b/configs/sim/axis/watch-demo-sim/axis_mm.ini @@ -0,0 +1,229 @@ +# EMC controller parameters for a simulated machine. + +# General note: Comments can either be preceded with a # or ; - either is +# acceptable, although # is in keeping with most linux config files. + +# General section ------------------------------------------------------------- +[EMC] + +# Version of this INI file +VERSION = $Revision$ + +# Name of machine, for use with display, etc. +MACHINE = Machinekit-HAL_-_Watch-Demo-Sim + +# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others +# DEBUG = 0x7FFFFFFF +DEBUG = 0 + +# Sections for display options ------------------------------------------------ +[DISPLAY] + +# Name of display program, e.g., xemc +DISPLAY = axis + +PYVCP = custompanel.xml + +# Cycle time, in seconds, that display will sleep between polls +CYCLE_TIME = 0.100 + +# Path to help file +HELP_FILE = doc/help.txt + +# Initial display setting for position, RELATIVE or MACHINE +POSITION_OFFSET = RELATIVE + +# Initial display setting for position, COMMANDED or ACTUAL +POSITION_FEEDBACK = ACTUAL + +# Highest value that will be allowed for feed override, 1.0 = 100% +MAX_FEED_OVERRIDE = 1.2 +MAX_SPINDLE_OVERRIDE = 1.0 +# Prefix to be used +PROGRAM_PREFIX = ../../nc_files/ + +# Introductory graphic +INTRO_GRAPHIC = machinekit.gif +INTRO_TIME = 5 + +EDITOR = gedit + +INCREMENTS = 1 mm, .01 in, .1mm, 1 mil, .1 mil, 1/8000 in +[FILTER] +PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image +PROGRAM_EXTENSION = .py Python Script + +png = image-to-gcode +gif = image-to-gcode +jpg = image-to-gcode +py = python + +# Task controller section ----------------------------------------------------- +[TASK] + +# Name of task controller program, e.g., milltask +TASK = milltask + +# Cycle time, in seconds, that task controller will sleep between polls +CYCLE_TIME = 0.001 + +# Part program interpreter section -------------------------------------------- +[RS274NGC] + +# File containing interpreter variables +PARAMETER_FILE = sim_mm.var + +FEATURES = 12 + +# Motion control section ------------------------------------------------------ +[EMCMOT] + +EMCMOT = motmod + +# Timeout for comm to emcmot, in seconds +COMM_TIMEOUT = 1.0 + +# Interval between tries to emcmot, in seconds +COMM_WAIT = 0.010 + +# if both BASE_PERIOD and SERVO_PERIOD are unset or 0, motion will not create any threads. +# in this case, threads need to be created explicitly by 'newthread' +# see HALFILE=newthread and [HAL]SERVO_PERIOD below + +# BASE_PERIOD is unused in this configuration but specified in core_sim.hal +BASE_PERIOD = 0 +# Servo task period, in nano-seconds +SERVO_PERIOD = 0 + +# Hardware Abstraction Layer section -------------------------------------------------- +[HAL] + +# The run script first uses halcmd to execute any HALFILE +# files, and then to execute any individual HALCMD commands. +# + +# used in configs/common/newthread.hal +# Servo task period, in nano-seconds +SERVO_PERIOD = 1000000 + + +# list of hal config files to run through halcmd +# files are executed in the order in which they appear +HALFILE = newthread.hal +HALFILE = core_sim.hal +HALFILE = sim_spindle_encoder.hal +HALFILE = axis_manualtoolchange.hal +HALFILE = simulated_home.hal + + +# list of halcmd commands to execute +# commands are executed in the order in which they appear +#HALCMD = save neta + +# Single file that is executed after the GUI has started. Only supported by +# AXIS at this time (only AXIS creates a HAL component of its own) +POSTGUI_HALFILE = custom_postgui.hal + +HALUI = halui + +# Trajectory planner section -------------------------------------------------- +[TRAJ] + +AXES = 3 +COORDINATES = X Y Z +HOME = 0 0 0 +LINEAR_UNITS = mm +ANGULAR_UNITS = degree +CYCLE_TIME = 0.010 +DEFAULT_VELOCITY = 30.48 +MAX_VELOCITY = 53.34 +DEFAULT_ACCELERATION = 508 +MAX_ACCELERATION = 508 +POSITION_FILE = position_mm.txt +ARC_BLEND_ENABLE = 1 +ARC_BLEND_FALLBACK_ENABLE = 1 +ARC_BLEND_OPTIMIZATION_DEPTH = 50 +#Use this setting for no smoothing (for debugging and stress-testing) +ARC_BLEND_SMOOTHING_THRESHOLD = .75 +#Use this setting for "normal" smoothing, i.e. if we blend over more than 40% of a segment +#ARC_BLEND_SMOOTHING_THRESHOLD = 0.40 + +# Axes sections --------------------------------------------------------------- + +# First axis +[AXIS_0] + +TYPE = LINEAR +HOME = 0.000 +MAX_VELOCITY = 30.48 +MAX_ACCELERATION = 508 +BACKLASH = 0.000 +INPUT_SCALE = 157.48 +OUTPUT_SCALE = 1.000 +MIN_LIMIT = -254 +MAX_LIMIT = 254 +FERROR = 1.27 +MIN_FERROR = .254 +HOME_OFFSET = 0.0 +HOME_SEARCH_VEL = 127 +HOME_LATCH_VEL = 25.4 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = NO +HOME_SEQUENCE = 1 +HOME_IS_SHARED = 1 + +# Second axis +[AXIS_1] + +TYPE = LINEAR +HOME = 0.000 +MAX_VELOCITY = 30.48 +MAX_ACCELERATION = 508 +BACKLASH = 0.000 +INPUT_SCALE = 157.48 +OUTPUT_SCALE = 1.000 +MIN_LIMIT = -254 +MAX_LIMIT = 254 +FERROR = 1.27 +MIN_FERROR = .254 +HOME_OFFSET = 0.0 +HOME_SEARCH_VEL = 127 +HOME_LATCH_VEL = 25.4 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = NO +HOME_SEQUENCE = 1 + +# Third axis +[AXIS_2] + +TYPE = LINEAR +HOME = 0.0 +MAX_VELOCITY = 30.48 +MAX_ACCELERATION = 508 +BACKLASH = 0.000 +INPUT_SCALE = 157.48 +OUTPUT_SCALE = 1.000 +MIN_LIMIT = -50.8 +MAX_LIMIT = 101.6 +FERROR = 1.27 +MIN_FERROR = .254 +HOME_OFFSET = 25.4 +HOME_SEARCH_VEL = 127 +HOME_LATCH_VEL = 25.4 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = NO +HOME_SEQUENCE = 0 +HOME_IS_SHARED = 1 + +# section for main IO controller parameters ----------------------------------- +[EMCIO] + +# Name of IO controller program, e.g., io +EMCIO = io + +# cycle time, in seconds +CYCLE_TIME = 0.100 + +# tool table file +TOOL_TABLE = sim_mm.tbl +TOOL_CHANGE_POSITION = 0 0 50.8 diff --git a/configs/sim/axis/watch-demo-sim/check_constraints.hal b/configs/sim/axis/watch-demo-sim/check_constraints.hal new file mode 100644 index 0000000000..c2a432078e --- /dev/null +++ b/configs/sim/axis/watch-demo-sim/check_constraints.hal @@ -0,0 +1,63 @@ +# HAL config file to check vel/acc constraints +# +loadrt wcomp names=wcomp_xacc,wcomp_xvel,wcomp_yacc,wcomp_yvel,wcomp_zacc,wcomp_zvel + +addf wcomp_xacc servo-thread +addf wcomp_xvel servo-thread +addf wcomp_yacc servo-thread +addf wcomp_yvel servo-thread +addf wcomp_zacc servo-thread +addf wcomp_zvel servo-thread + +net Xacc => wcomp_xacc.in +net Xvel => wcomp_xvel.in +net Yacc => wcomp_yacc.in +net Yvel => wcomp_yvel.in +net Zacc => wcomp_zacc.in +net Zvel => wcomp_zvel.in + +net acc-ok-x <= wcomp_xacc.out +net vel-ok-x <= wcomp_xvel.out +net acc-ok-y <= wcomp_yacc.out +net vel-ok-y <= wcomp_yvel.out +net acc-ok-z <= wcomp_zacc.out +net vel-ok-z <= wcomp_zvel.out + +setp wcomp_xacc.max 50.001 +setp wcomp_xacc.min -50.001 +setp wcomp_xvel.max 5.001 +setp wcomp_xvel.min -5.001 +setp wcomp_yacc.max 50.001 +setp wcomp_yacc.min -50.001 +setp wcomp_yvel.max 5.001 +setp wcomp_yvel.min -5.001 +setp wcomp_zacc.max 50.001 +setp wcomp_zacc.min -50.001 +setp wcomp_zvel.max 5.001 +setp wcomp_zvel.min -5.001 + +loadrt match8 names=match_all + +addf match_all servo-thread + +net acc-ok-x => match_all.a0 +setp match_all.b0 1 +net vel-ok-x => match_all.a1 +setp match_all.b1 1 +net acc-ok-y => match_all.a2 +setp match_all.b2 1 +net vel-ok-y => match_all.a3 +setp match_all.b3 1 +net acc-ok-z => match_all.a4 +setp match_all.b4 1 +net vel-ok-z => match_all.a5 +setp match_all.b5 1 + +setp match_all.a6 0 +setp match_all.a7 0 +setp match_all.b6 0 +setp match_all.b7 0 + +setp match_all.in 1 + +net constraints-ok <= match_all.out diff --git a/configs/sim/axis/watch-demo-sim/core_sim.hal b/configs/sim/axis/watch-demo-sim/core_sim.hal new file mode 100644 index 0000000000..6f5d6ce34e --- /dev/null +++ b/configs/sim/axis/watch-demo-sim/core_sim.hal @@ -0,0 +1,59 @@ +# core HAL config file for simulation + +# first load all the RT modules that will be needed +# kinematics +loadrt trivkins +# trajectory planner +loadrt tp +# motion controller, get name and thread periods from ini file +loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES kins=trivkins tp=tp +# load 6 differentiators (for velocity and accel signals +loadrt ddt names=ddt_x,ddt_xv,ddt_y,ddt_yv,ddt_z,ddt_zv +# load additional blocks +loadrt hypot names=vel_xy,vel_xyz + +# add motion controller functions to servo thread +addf motion-command-handler servo-thread +addf motion-controller servo-thread +# link the differentiator functions into the code +addf ddt_x servo-thread +addf ddt_xv servo-thread +addf ddt_y servo-thread +addf ddt_yv servo-thread +addf ddt_z servo-thread +addf ddt_zv servo-thread +addf vel_xy servo-thread +addf vel_xyz servo-thread + +# create HAL signals for position commands from motion module +# loop position commands back to motion module feedback +net Xpos axis.0.motor-pos-cmd => axis.0.motor-pos-fb ddt_x.in +net Ypos axis.1.motor-pos-cmd => axis.1.motor-pos-fb ddt_y.in +net Zpos axis.2.motor-pos-cmd => axis.2.motor-pos-fb ddt_z.in + +# send the position commands thru differentiators to +# generate velocity and accel signals +net Xvel ddt_x.out => ddt_xv.in vel_xy.in0 +net Xacc <= ddt_xv.out +net Yvel ddt_y.out => ddt_yv.in vel_xy.in1 +net Yacc <= ddt_yv.out +net Zvel ddt_z.out => ddt_zv.in vel_xyz.in0 +net Zacc <= ddt_zv.out + +# Cartesian 2- and 3-axis velocities +net XYvel vel_xy.out => vel_xyz.in1 +net XYZvel <= vel_xyz.out + +# estop loopback +net estop-loop iocontrol.0.user-enable-out iocontrol.0.emc-enable-in + +# create signals for tool loading loopback +net tool-prep-loop iocontrol.0.tool-prepare iocontrol.0.tool-prepared +net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed + +loadusr -W scounter + +#newinst watch w1 --- pin_name=scounter.count target_value=71.0 forever=1 +#addf w1.funct servo-thread +#setp scounter.target 1000 +#setp w1.start 1 diff --git a/configs/sim/axis/watch-demo-sim/core_stepper.hal b/configs/sim/axis/watch-demo-sim/core_stepper.hal new file mode 100644 index 0000000000..33f0ece000 --- /dev/null +++ b/configs/sim/axis/watch-demo-sim/core_stepper.hal @@ -0,0 +1,55 @@ +# core HAL config file for steppers + +# first load the core RT modules that will be needed +# kinematics +loadrt trivkins +# motion controller, get name and thread periods from ini file +# trajectory planner +loadrt tp +loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES tp=tp kins=trivkins +# stepper module, three step generators, all three using step/dir +loadrt stepgen step_type=0,0,0 + +# hook functions to base thread (high speed thread for step generation) +addf stepgen.make-pulses base-thread + +# hook functions to servo thread +addf stepgen.capture-position servo-thread +addf motion-command-handler servo-thread +addf motion-controller servo-thread +addf stepgen.update-freq servo-thread + +# connect position commands from motion module to step generator +net Xpos-cmd axis.0.motor-pos-cmd => stepgen.0.position-cmd +net Ypos-cmd axis.1.motor-pos-cmd => stepgen.1.position-cmd +net Zpos-cmd axis.2.motor-pos-cmd => stepgen.2.position-cmd + +# connect position feedback from step generators +# to motion module +net Xpos-fb stepgen.0.position-fb => axis.0.motor-pos-fb +net Ypos-fb stepgen.1.position-fb => axis.1.motor-pos-fb +net Zpos-fb stepgen.2.position-fb => axis.2.motor-pos-fb + +# connect enable signals for step generators +net Xen axis.0.amp-enable-out => stepgen.0.enable +net Yen axis.1.amp-enable-out => stepgen.1.enable +net Zen axis.2.amp-enable-out => stepgen.2.enable + +# connect signals to step pulse generator outputs +net Xstep <= stepgen.0.step +net Xdir <= stepgen.0.dir +net Ystep <= stepgen.1.step +net Ydir <= stepgen.1.dir +net Zstep <= stepgen.2.step +net Zdir <= stepgen.2.dir + +# set stepgen module scaling - get values from ini file +setp stepgen.0.position-scale [AXIS_0]SCALE +setp stepgen.1.position-scale [AXIS_1]SCALE +setp stepgen.2.position-scale [AXIS_2]SCALE + +# set stepgen module accel limits - get values from ini file +setp stepgen.0.maxaccel [AXIS_0]STEPGEN_MAXACCEL +setp stepgen.1.maxaccel [AXIS_1]STEPGEN_MAXACCEL +setp stepgen.2.maxaccel [AXIS_2]STEPGEN_MAXACCEL + diff --git a/configs/sim/axis/watch-demo-sim/custom_postgui.hal b/configs/sim/axis/watch-demo-sim/custom_postgui.hal new file mode 100644 index 0000000000..e5cbe7a5c9 --- /dev/null +++ b/configs/sim/axis/watch-demo-sim/custom_postgui.hal @@ -0,0 +1,28 @@ +# Include your customized HAL commands here +# The commands in this file are run after the AXIS GUI (including PyVCP panel) starts + +## this demonstrates setting of a signal instead of a pin as in some FDM configs +## signal must be created before watch component is loaded +#net awful.signame pyvcp.spinbox.0.param_pin +# +#newinst watch w1 --- pin_name=scounter.count preset_name=awful.signame preset_type=1 target_value=71.0 forever=1 + +newinst watch w1 --- pin_name=scounter.count preset_name=pyvcp.spinbox.0.param_pin preset_type=0 target_value=71.0 forever=1 + +# scounter component loaded in main hal file to ensure active by time addressed here +setp scounter.target 100 + +net sig0 pyvcp.start w1.trigger scounter.trigger +net sig1 pyvcp.multilabel.0.legend0 w1.started +net sig2 pyvcp.multilabel.0.legend1 w1.target-reached +net sig3 pyvcp.count w1.value-out +net sig4 pyvcp.target w1.target-value +net sig5 pyvcp.reset w1.reset + +## reverse logic to blank multilabel when w1.triggered = 0 +loadrt not +addf not.0.funct servo-thread +net sig6 pyvcp.multilabel.0.legend2 not.0.out +net sig7 w1.triggered not.0.in + +addf w1.funct servo-thread \ No newline at end of file diff --git a/configs/sim/axis/watch-demo-sim/custompanel.xml b/configs/sim/axis/watch-demo-sim/custompanel.xml new file mode 100644 index 0000000000..6a37884a7a --- /dev/null +++ b/configs/sim/axis/watch-demo-sim/custompanel.xml @@ -0,0 +1,46 @@ + + + + + + "target" + 0 + 200 + 0 + 1.0 + "2.3f" + ("Arial",14) + 1 + + + + + + + + + ["Heating - Please Wait","Heated - Ready to Use"," "] + ("Arial", 14) + SUNKEN + 5 + True + 2 + + + + "count" + ("Arial",14) + "4.4f" + + + + + diff --git a/configs/sim/axis/watch-demo-sim/newthread.hal b/configs/sim/axis/watch-demo-sim/newthread.hal new file mode 100644 index 0000000000..51ef80c974 --- /dev/null +++ b/configs/sim/axis/watch-demo-sim/newthread.hal @@ -0,0 +1 @@ +newthread servo-thread [HAL]SERVO_PERIOD fp diff --git a/configs/sim/axis/watch-demo-sim/server.nml b/configs/sim/axis/watch-demo-sim/server.nml new file mode 100644 index 0000000000..e1ca20d4a7 --- /dev/null +++ b/configs/sim/axis/watch-demo-sim/server.nml @@ -0,0 +1,46 @@ +# +# Use this NML config on the computer running the realtime parts of emc2 +# in a networked system. The host address should point to the computer +# running the GUI (although this is not critical). +# Change the NML_FILE in emc.ini to server.nml. +# Start emc2 normally, and then run the GUI client. + +# Buffers +# Name Type Host size neut? (old) buffer# MP --- + +# Top-level buffers to EMC +B emcCommand SHMEM localhost 8192 0 0 1 16 1001 TCP=5005 xdr +B emcStatus SHMEM localhost 10240 0 0 2 16 1002 TCP=5005 xdr +B emcError SHMEM localhost 8192 0 0 3 16 1003 TCP=5005 xdr queue + +# These are for the IO controller, EMCIO +B toolCmd SHMEM localhost 1024 0 0 4 16 1004 TCP=5005 xdr +B toolSts SHMEM localhost 4096 0 0 5 16 1005 TCP=5005 xdr +B spindleCmd SHMEM localhost 1024 0 0 6 16 1006 TCP=5005 xdr +B spindleSts SHMEM localhost 1024 0 0 7 16 1007 TCP=5005 xdr + +# Processes +# Name Buffer Type Host Ops server? timeout master? cnum + +P emc emcCommand LOCAL localhost RW 0 1.0 0 0 +P emc emcStatus LOCAL localhost W 0 1.0 0 0 +P emc emcError LOCAL localhost W 0 1.0 0 0 +P emc toolCmd LOCAL localhost W 0 1.0 0 0 +P emc toolSts LOCAL localhost R 0 1.0 0 0 + +P emcsvr emcCommand LOCAL localhost W 1 1.0 1 2 +P emcsvr emcStatus LOCAL localhost R 1 1.0 1 2 +P emcsvr emcError LOCAL localhost R 1 1.0 1 2 +P emcsvr toolCmd LOCAL localhost W 1 1.0 1 2 +P emcsvr toolSts LOCAL localhost R 1 1.0 1 2 +P emcsvr default LOCAL localhost RW 1 1.0 1 2 + +P tool emcError LOCAL localhost W 0 1.0 0 3 +P tool toolCmd LOCAL localhost RW 0 1.0 0 3 +P tool toolSts LOCAL localhost W 0 1.0 0 3 + +P xemc emcCommand REMOTE 192.168.0.14 W 0 10.0 0 10 +P xemc emcStatus REMOTE 192.168.0.14 R 0 10.0 0 10 +P xemc emcError REMOTE 192.168.0.14 R 0 10.0 0 10 +P xemc toolCmd REMOTE 192.168.0.14 W 0 10.0 0 10 +P xemc toolSts REMOTE 192.168.0.14 R 0 10.0 0 10 diff --git a/configs/sim/axis/watch-demo-sim/sim_mm.tbl b/configs/sim/axis/watch-demo-sim/sim_mm.tbl new file mode 100644 index 0000000000..661efb2b0b --- /dev/null +++ b/configs/sim/axis/watch-demo-sim/sim_mm.tbl @@ -0,0 +1,24 @@ +T1 P1 Z0.511 D3 ;3mm end mill +T2 P4 Z0.1 D1.5 ;1.5mm end mill +T3 P3 Z1.273 D5 ;5mm tap drill +T4 P2 Z10 D16 ;16 mm schaftfräser +T5 P5 Z25 D25 ;25'er fräser +T6 P6 Z6 D6 ;tool 6 +T7 P7 Z7 D7 ;7 +T8 P8 Z8 D8 ;8 +T9 P9 Z9 D9 ;9 +T10 P10 Z10 D10 ;10 +T11 P11 Z11 D11 ;11 +T12 P12 Z12 D12 ;12 +T13 P13 Z13 D13 ;13 +T14 P14 Z14 D14 ;14 +T15 P15 Z15 D15 ;15 +T16 P16 Z16 D16 ;16 +T17 P17 Z17 D17 ;17 +T18 P18 Z18 D18 ;18 +T19 P19 Z19 D19 ;19 +T20 P20 Z20 D20 ;20 +T21 P21 Z21 D21 ;21 +T22 P22 Z22 D22 ;22 +T23 P23 Z23 D23 ;23 +T24 P24 Z24 D24 ;24 diff --git a/configs/sim/axis/watch-demo-sim/sim_spindle_encoder.hal b/configs/sim/axis/watch-demo-sim/sim_spindle_encoder.hal new file mode 100644 index 0000000000..20ae6b95f0 --- /dev/null +++ b/configs/sim/axis/watch-demo-sim/sim_spindle_encoder.hal @@ -0,0 +1,39 @@ +# simulated spindle encoder (for spindle-synced moves) +loadrt sim_spindle names=sim_spindle +setp sim_spindle.scale 0.01666667 + +loadrt limit2 names=limit_speed +loadrt lowpass names=spindle_mass +loadrt near names=near_speed + +# this limit doesnt make any sense to me: +setp limit_speed.maxv 5000.0 # rpm/second + +# encoder reset control +# hook up motion controller's sync output +net spindle-index-enable motion.spindle-index-enable <=> sim_spindle.index-enable + +# report our revolution count to the motion controller +net spindle-pos sim_spindle.position-fb => motion.spindle-revs + +# simulate spindle mass +setp spindle_mass.gain .07 + +# spindle speed control +net spindle-speed-cmd motion.spindle-speed-out => limit_speed.in +net spindle-speed-limited limit_speed.out => sim_spindle.velocity-cmd spindle_mass.in + +# for spindle velocity estimate +net spindle-rpm-filtered spindle_mass.out motion.spindle-speed-in near_speed.in2 + +# at-speed detection +setp near_speed.scale 1.1 +setp near_speed.difference 10 + +net spindle-speed-cmd => near_speed.in1 +net spindle-at-speed near_speed.out motion.spindle-at-speed + +addf limit_speed servo-thread +addf spindle_mass servo-thread +addf near_speed servo-thread +addf sim_spindle servo-thread diff --git a/configs/sim/axis/watch-demo-sim/simulated_home.hal b/configs/sim/axis/watch-demo-sim/simulated_home.hal new file mode 100644 index 0000000000..143859e635 --- /dev/null +++ b/configs/sim/axis/watch-demo-sim/simulated_home.hal @@ -0,0 +1,32 @@ +loadrt or2 names=or2_0 +loadrt comp names=comp_x,comp_y,comp_z + +net Xhomeswpos => comp_x.in0 +net Yhomeswpos => comp_y.in0 +net Zhomeswpos => comp_z.in0 + +sets Xhomeswpos 1 +sets Yhomeswpos .5 +sets Zhomeswpos 2 + +net Xpos => comp_x.in1 +net Ypos => comp_y.in1 +net Zpos => comp_z.in1 + +setp comp_x.hyst .02 +setp comp_y.hyst .02 +setp comp_z.hyst .02 + +net Xhomesw <= comp_x.out +net Yhomesw <= comp_y.out => axis.1.home-sw-in +net Zhomesw <= comp_z.out + +net Xhomesw => or2_0.in0 +net Zhomesw => or2_0.in1 +net XZhomesw or2_0.out => axis.0.home-sw-in axis.2.home-sw-in + +addf comp_x servo-thread +addf comp_y servo-thread +addf comp_z servo-thread + +addf or2_0 servo-thread diff --git a/configs/sim/axis/watch-demo-sim/simulated_limits.hal b/configs/sim/axis/watch-demo-sim/simulated_limits.hal new file mode 100644 index 0000000000..b918288776 --- /dev/null +++ b/configs/sim/axis/watch-demo-sim/simulated_limits.hal @@ -0,0 +1,76 @@ +# HAL config file to simulate limit switches using window comparators +# +# first install nine comparators +loadrt wcomp names=wcomp_xmin,wcomp_xmax,wcomp_xhome,wcomp_ymin,wcomp_ymax,wcomp_yhome,wcomp_zmin,wcomp_zmax,wcomp_zhome + +# add comparators to servo thread so they will be evaluated +# every servo period +addf wcomp_xmin servo-thread +addf wcomp_xmax servo-thread +addf wcomp_xhome servo-thread +addf wcomp_ymin servo-thread +addf wcomp_ymax servo-thread +addf wcomp_yhome servo-thread +addf wcomp_zmin servo-thread +addf wcomp_zmax servo-thread +addf wcomp_zhome servo-thread + +# connect position feedback from step generators +# to window comparators +net Xpos-fb => wcomp_xmin.in +net Xpos-fb => wcomp_xmax.in +net Xpos-fb => wcomp_xhome.in +net Ypos-fb => wcomp_ymin.in +net Ypos-fb => wcomp_ymax.in +net Ypos-fb => wcomp_yhome.in +net Zpos-fb => wcomp_zmin.in +net Zpos-fb => wcomp_zmax.in +net Zpos-fb => wcomp_zhome.in + +# connect simulated switch outputs to motion controller +net Xminlim wcomp_xmin.out => axis.0.neg-lim-sw-in +net Xmaxlim wcomp_xmax.out => axis.0.pos-lim-sw-in +net Xhome wcomp_xhome.out => axis.0.home-sw-in + +net Yminlim wcomp_ymin.out => axis.1.neg-lim-sw-in +net Ymaxlim wcomp_ymax.out => axis.1.pos-lim-sw-in +net Yhome wcomp_yhome.out => axis.1.home-sw-in + +net Zminlim wcomp_zmin.out => axis.2.neg-lim-sw-in +net Zmaxlim wcomp_zmax.out => axis.2.pos-lim-sw-in +net Zhome wcomp_zhome.out => axis.2.home-sw-in + +# configure the points at which the simulated switches trip +# X axis first +# set min limit switch to trip at -10.2, release at -1000 +setp wcomp_xmin.max -10.2 +setp wcomp_xmin.min -1000 +# set max limit switch to trip at +10.2, release at +10.21 +setp wcomp_xmax.min 10.20 +setp wcomp_xmax.max 10.21 +# set home switch to trip at 9.5 and release at 9.75 +setp wcomp_xhome.min 9.5 +setp wcomp_xhome.max 9.75 + +# Y axis +# set min limit switch to trip at -10.2, release at -1000 +setp wcomp_ymin.max -10.2 +setp wcomp_ymin.min -1000 +# set max limit switch to trip at +10.2, release at +10.21 +setp wcomp_ymax.min 10.20 +setp wcomp_ymax.max 10.21 +# set home switch to trip at 9.5 and release at 9.75 +setp wcomp_yhome.min 9.5 +setp wcomp_yhome.max 9.75 + +# Z axis +# set min limit switch to trip at -2.1, release at -1000 +setp wcomp_zmin.max -2.1 +setp wcomp_zmin.min -1000 +# set max limit switch to trip at +4.05,release at +5 +setp wcomp_zmax.min 4.05 +setp wcomp_zmax.max 5 +# set home switch to trip at 3.9 and release at 4.1 +setp wcomp_zhome.min 3.9 +setp wcomp_zhome.max 4.1 + diff --git a/configs/sim/axis/watch-demo-sim/tool.tbl b/configs/sim/axis/watch-demo-sim/tool.tbl new file mode 100644 index 0000000000..c0b72de065 --- /dev/null +++ b/configs/sim/axis/watch-demo-sim/tool.tbl @@ -0,0 +1,4 @@ +T1 P1 D0.125000 Z+0.511000 ;1/8 end mill +T2 P2 D0.062500 Z+0.100000 ;1/16 end mill +T3 P3 D0.201000 Z+1.273000 ;#7 tap drill +T99999 P99999 Z+0.100000 ;big tool number diff --git a/src/Makefile b/src/Makefile index 9f436b24a9..3fe599ef0b 100755 --- a/src/Makefile +++ b/src/Makefile @@ -238,6 +238,7 @@ SUBDIRS := \ hal/user_comps/devices \ hal/user_comps/mb2hal \ hal/user_comps \ + hal/user_icomps \ hal/user_comps/vismach \ hal/user_comps/vfs11_vfd \ hal/user_comps/vfdb_vfd \ diff --git a/src/hal/lib/hal_lib.c b/src/hal/lib/hal_lib.c index 514efb2dea..58c0c914dc 100644 --- a/src/hal/lib/hal_lib.c +++ b/src/hal/lib/hal_lib.c @@ -448,13 +448,14 @@ EXPORT_SYMBOL(hal_shmem_base); // ------------ private API: ------------ // found in their respective source files: -/* EXPORT_SYMBOL(halpr_find_comp_by_name); */ -/* EXPORT_SYMBOL(halpr_find_pin_by_name); */ -/* EXPORT_SYMBOL(halpr_find_sig_by_name); */ -/* EXPORT_SYMBOL(halpr_find_param_by_name); */ -/* EXPORT_SYMBOL(halpr_find_thread_by_name); */ -/* EXPORT_SYMBOL(halpr_find_funct_by_name); */ -/* EXPORT_SYMBOL(halpr_find_inst_by_name); */ +EXPORT_SYMBOL(halpr_find_comp_by_name); +EXPORT_SYMBOL(halpr_find_pin_by_name); +EXPORT_SYMBOL(halpr_find_sig_by_name); +EXPORT_SYMBOL(halpr_find_param_by_name); +EXPORT_SYMBOL(halpr_find_thread_by_name); +EXPORT_SYMBOL(halpr_find_funct_by_name); +EXPORT_SYMBOL(halpr_find_inst_by_name); +EXPORT_SYMBOL(hal_data); // hal_comp.c: EXPORT_SYMBOL(halpr_find_owning_comp); diff --git a/src/hal/user_comps/scounter.comp b/src/hal/user_comps/scounter.comp new file mode 100644 index 0000000000..e7c9937d55 --- /dev/null +++ b/src/hal/user_comps/scounter.comp @@ -0,0 +1,50 @@ +// simple userspace counter component +// set target pin to value and will count up to value in half second increments +// I used for generating changing pin values to test reading by other components + +component scounter; + +pin in u32 target = 0; +pin out u32 count = 0; +pin in bit trigger = 0; +pin out bit start = 0; +pin out bit running = 0; +pin out bit stopped = 0; +option singleton yes; +option userspace yes; + +author "ArcEye "; +license "GPL"; +;; + +#include /* Standard input/output definitions */ +#include +#include /* Standard types */ +#include /* UNIX standard function definitions */ + +void user_mainloop(void) +{ +static int inc = 0; + + while(1) + { + if(trigger) + start = 1; + if(start && target > 0) + { + if(!running) + running = 1; + if(count >= target) + { + running = 0; + stopped = 1; + start = 0; + exit(0); + } + else + count = ++inc; + usleep(500000); + } + } + exit(0); +} diff --git a/src/hal/user_icomps/README b/src/hal/user_icomps/README new file mode 100644 index 0000000000..e733dd8b65 --- /dev/null +++ b/src/hal/user_icomps/README @@ -0,0 +1,5 @@ +This dir provides a means of building instantiated components from C source using instcomp +as part of the source tree build + +The easiest way to create instantiated components is using the macro template expanded by instcomp, +for examples see the hal/i_components folder \ No newline at end of file diff --git a/src/hal/user_icomps/Submakefile b/src/hal/user_icomps/Submakefile new file mode 100644 index 0000000000..d07801fb20 --- /dev/null +++ b/src/hal/user_icomps/Submakefile @@ -0,0 +1,12 @@ +## An effective way to build instantiated components from C code +## RTLIBDIR is permanant at present, need to add a job to make it later + +HALUSERICOMPDIR= hal/user_icomps + +HALUSERICOMP_SUBMAKEFILE= $(HALUSERICOMPDIR)/Submakefile + +obj-m += watch.o +# the list of parts +watch-objs := $(HALUSERICOMPDIR)/watch.o + +$(RTLIBDIR)/watch$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(watch-objs)) \ No newline at end of file diff --git a/src/hal/user_icomps/watch.c b/src/hal/user_icomps/watch.c new file mode 100644 index 0000000000..a2aa344a81 --- /dev/null +++ b/src/hal/user_icomps/watch.c @@ -0,0 +1,714 @@ +/******************************************************************** +* Description: watch.c +* +* This file, 'watch.c', is a HAL instantiated component that, +* reads the value of a pin and waits until it reaches a +* specified value and sets a flag. +* It then either ceases to track the pin value or continues to do so. +* +* watch can be passed all parameters required via the argc/argv mechanism +* built into instantiated components. +* +* Passing strings via module params to instantiated components is +* inherently risky, because the kernel module param is only created once, and all +* the instantiations of the component reuse it, irrespective of whether they +* have longer strings and thus overrun the allocated buffer. +* +* Example: +* newinst watch w1 --- pin_name=component.pin preset_name=component.pin \ +* preset_type=0 target_value=100.00 forever=1 iterations=0 +* +* Where: +* pin_name = Name of the pin value to watch (string) +* preset_name = Name of pin to preset with target value (string) +* (could be panel pin or heater temp etc) +* preset_type = Is it a pin or a signal (0 pin, 1 sig) +* target value = Value required (float) +* forever = Keep watching pin after target value reached (bit) +* iterations = Watch for XX iterations only (s32) +* - remember this is thread polls, so may go very quickly +* +* Pins: +* trigger (bit in) - starts the component watching 'pin_name' +* reset (bit in) - stops the component watching 'pin_name' +* (& zeros started, stopped, triggered.) +* value-out (float out) - value of the pin at that poll +* target-reached (bit out) - target value has been reached +* target-value (float in) - value to check for +* target-value-int (s32 in) - value of (int)target-value +* forever - (bit in) - keep watching the pin after target reached +* iterations (s32 in) - ignore target-value and run for X thread polls +* +* Bit flags: +* started (bit, out) - value tracking underway and target not reached +* stopped (bit, out) - value tracking not underway +* triggered (bit, out) - the component has been started and not reset +* (these are just debug flags or possible logic triggers for panel widgets) +* +* Author: ArcEye +* License: GPL Version 2 +* +* Copyright (c) 2018 All rights reserved. +* +* Last change:. +********************************************************************/ + +/** This program is free software; you can redistribute it and/or + modify it under the terms of version 2 of the GNU General + Public License as published by the Free Software Foundation. + This library 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 this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA + + THE AUTHORS OF THIS LIBRARY ACCEPT ABSOLUTELY NO LIABILITY FOR + ANY HARM OR LOSS RESULTING FROM ITS USE. IT IS _EXTREMELY_ UNWISE + TO RELY ON SOFTWARE ALONE FOR SAFETY. Any machinery capable of + harming persons must have provisions for completely removing power + from all motors, etc, before persons enter any danger area. All + machinery must be designed to comply with local and national safety + codes, and the authors of this software can not, and do not, take + any responsibility for such compliance. + + This code was written as part of the Machinekit project... +*/ + + +#include "rtapi.h" +#include "rtapi_app.h" +#include "rtapi_string.h" +#include "rtapi_errno.h" +#include "hal.h" +#include "hal_priv.h" +#include "hal_accessor.h" +#include "hal_internal.h" + +#include +#include +#include +#include /* Standard types */ +#include +#include +#include /* UNIX standard function definitions */ +#include /* File control definitions */ +#include /* Error number definitions */ +#include + +// forward declaration +//int get_pin_value(char *name, char *value); +//int get_common(hal_type_t type, void *d_ptr, char *value); + +static int comp_id; + +static char *compname = "watch"; + +#ifdef MODULE_INFO +MODULE_INFO(machinekit, "component:watch:Watch the value of a HAL pin with options"); +MODULE_INFO(machinekit, "pin:#.trigger:bit:pincount:in::None"); +MODULE_INFO(machinekit, "pin:#.reset:bit:pincount:in::None"); +MODULE_INFO(machinekit, "pin:#.target_reached:bit:pincount:out::None"); +MODULE_INFO(machinekit, "pin:#.value_out:s32:pincount:out::None"); +MODULE_INFO(machinekit, "pin:#.target-value:float:pincount:in::None"); +MODULE_INFO(machinekit, "pin:#.target-value-int:s32:pincount:in::None"); +MODULE_INFO(machinekit, "pin:#.forever:bit:pincount:in::None"); +MODULE_INFO(machinekit, "pin:#.iterations:s32:pincount:in::None"); +MODULE_INFO(machinekit, "pin:#.started:bit:pincount:out:in::None"); +MODULE_INFO(machinekit, "pin:#.stopped:bit:pincount:out:in::None"); +MODULE_INFO(machinekit, "pin:#.triggered:bit:pincount:out::None"); +MODULE_INFO(machinekit, "instanceparam:pincount:int::1"); +MODULE_INFO(machinekit, "license:GPL2"); +MODULE_INFO(machinekit, "author:Arceye"); +MODULE_INFO(machinekit, "funct:watch_:1:"); +MODULE_LICENSE("GPL2"); +#endif // MODULE_INFO +RTAPI_TAG(HAL,HC_INSTANTIABLE); + +// no singleton in instantiated components, just restrict to 1 +// you could create another one to view another pin +#define MAXCOUNT 1 +#define DEFAULTCOUNT 1 + +static int pincount = 1; +RTAPI_IP_INT(pincount, ""); + +struct inst_data + { +// pins + hal_bit_t *_trigger; + hal_bit_t *_reset; + hal_bit_t *_target_reached; + hal_float_t *_value_out; + hal_bit_t *_forever; + hal_s32_t *_iterations; + hal_s32_t *_target_value_int; + hal_float_t *_target_value; +// flags for use in panels etc + hal_bit_t *_started; + hal_bit_t *_stopped; + hal_bit_t *_triggered; +// local copies + int local_pincount; + }; + +static int maxpins __attribute__((unused)) = 1; + +static int watch_(void *arg, const hal_funct_args_t *fa); + +static int instantiate(const int argc, const char**argv); + +static int extra_inst_setup(struct inst_data* ip, const char *name, int argc, const char**argv); + +// var to take pin names passed to newinst +char target_pin_name[HAL_NAME_LEN]; +char preset_name[HAL_NAME_LEN]; +int preset_type; +//////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +static int export_halobjs(struct inst_data *ip, int owner_id, const char *name, const int argc, const char **argv) +{ +char buf[HAL_NAME_LEN + 1]; +int r = 0; + // pins + r = hal_pin_bit_newf(HAL_OUT, &(ip->_started), owner_id, "%s.started", name); + if(r != 0) return r; + + r = hal_pin_bit_newf(HAL_OUT, &(ip->_stopped), owner_id, "%s.stopped", name); + if(r != 0) return r; + + r = hal_pin_bit_newf(HAL_IN, &(ip->_trigger), owner_id, "%s.trigger", name); + if(r != 0) return r; + + r = hal_pin_bit_newf(HAL_OUT, &(ip->_triggered), owner_id, "%s.triggered", name); + if(r != 0) return r; + + r = hal_pin_bit_newf(HAL_IN, &(ip->_reset), owner_id, "%s.reset", name); + if(r != 0) return r; + + r = hal_pin_bit_newf(HAL_OUT, &(ip->_target_reached), owner_id, "%s.target-reached", name); + if(r != 0) return r; + + r = hal_pin_float_newf(HAL_OUT, &(ip->_value_out), owner_id, "%s.value-out", name); + if(r != 0) return r; + + // param pins + r = hal_pin_bit_newf(HAL_IN, &(ip->_forever), owner_id, "%s.forever", name); + if(r != 0) return r; + + r = hal_pin_s32_newf(HAL_IN, &(ip->_iterations), owner_id, "%s.iterations", name); + if(r != 0) return r; + + r = hal_pin_s32_newf(HAL_IN, &(ip->_target_value_int), owner_id, "%s.target-value-int", name); + if(r != 0) return r; + + r = hal_pin_float_newf(HAL_IN, &(ip->_target_value), owner_id, "%s.target-value", name); + if(r != 0) return r; + + // local copies + if(! ip->local_pincount || ip->local_pincount == -1) + ip->local_pincount = DEFAULTCOUNT; + + hal_print_msg(RTAPI_MSG_DBG,"export_halobjs() ip->local_pincount set to %d", ip->local_pincount); + + hal_export_xfunct_args_t __xf = + { + .type = FS_XTHREADFUNC, + .funct.x = watch_, + .arg = ip, + .uses_fp = 1, + .reentrant = 0, + .owner_id = owner_id + }; + + rtapi_snprintf(buf, sizeof(buf),"%s.funct", name); + r = hal_export_xfunctf(&__xf, buf, name); + if(r != 0) + return r; + return 0; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +static int instantiate(const int argc, const char**argv) +{ +struct inst_data *ip; +// argv[0]: component name argv[1]: instance +const char *name = argv[1]; +int r, k; +int inst_id; + + inst_id = hal_inst_create(name, comp_id, sizeof(struct inst_data), (void **)&ip); + if (inst_id < 0) + return -1; + + hal_print_msg(RTAPI_MSG_DBG,"%s inst=%s argc=%d",__FUNCTION__, name, argc); + + hal_print_msg(RTAPI_MSG_DBG,"%s: int instance param: %s=%d",__FUNCTION__,"pincount", pincount); + int pin_param_value = pincount; + if((pin_param_value == -1) || (pin_param_value == 0)) + pin_param_value = DEFAULTCOUNT; + else if((pin_param_value > 0) && (pin_param_value > MAXCOUNT)) + pin_param_value = MAXCOUNT; + ip->local_pincount = pincount = pin_param_value; + hal_print_msg(RTAPI_MSG_DBG,"ip->local_pincount set to %d", pin_param_value); + + r = export_halobjs(ip, inst_id, name, argc, argv); + // if the extra_inst_setup returns non zero will abort module creation + // we could just do it inside instantiate(), but this is cleaner + k = extra_inst_setup(ip, name, argc, argv); + if(k != 0) + return k; + + pincount = -1; + + return r; +} + +int rtapi_app_main(void) +{ + comp_id = hal_xinit(TYPE_RT, 0, 0, instantiate, NULL, compname); + + if (comp_id < 0) + + return -1; + + hal_ready(comp_id); + + return 0; +} + +void rtapi_app_exit(void) +{ + hal_exit(comp_id); +} + +/////////////////////////////////////////////////////////////////////// + +int get_common(hal_type_t type, void *d_ptr, char *value) +{ +// This function assumes that the mutex is held +int retval = 0; +int bitval = 0; +double fval = 0; +long lval = 0; +unsigned long ulval = 0; + + switch (type) + { + case HAL_BIT: + bitval = *(hal_bit_t *) (d_ptr); + sprintf(value, "%d", bitval); + break; + case HAL_FLOAT: + fval = *((hal_float_t *) (d_ptr)); + sprintf(value, "%f", fval); + break; + case HAL_S32: + lval = *((hal_s32_t *) (d_ptr)); + sprintf(value, "%ld", lval); + break; + case HAL_U32: + ulval = *((hal_u32_t *) (d_ptr)); + sprintf(value, "%lu", ulval); + break; + default: + // Shouldn't get here, but just in case... + retval = -EINVAL; + } + + return retval; +} + + + + +int get_pin_value(char *name, char *value) +{ +int retval; +hal_pin_t *pin; +hal_type_t type; +void *d_ptr; + + // get mutex before accessing shared data + rtapi_mutex_get(&(hal_data->mutex)); + + pin = halpr_find_pin_by_name(name); + if(pin == 0) + { + rtapi_mutex_give(&(hal_data->mutex)); + return -EINVAL; + } + else // pin + { + type = pin->type; + d_ptr = (void*)&pin->dummysig; + } + + retval = get_common(type, d_ptr, value); + + rtapi_mutex_give(&(hal_data->mutex)); + if (retval != 0) + hal_print_msg(RTAPI_MSG_DBG, "Error getting value of pin: %s\n", name); + return retval; +} + + +int get_pin_type(char *name, hal_type_t *type) +{ +int retval = 0; +hal_pin_t *pin; + + // get mutex before accessing shared data + rtapi_mutex_get(&(hal_data->mutex)); + + pin = halpr_find_pin_by_name(name); + if(pin == 0) + { + rtapi_mutex_give(&(hal_data->mutex)); + retval = -EINVAL; + } + else // pin + { + *(type) = pin->type; + } + + rtapi_mutex_give(&(hal_data->mutex)); + if (retval != 0) + hal_print_msg(RTAPI_MSG_DBG, "Error getting value of pin: %s\n", name); + return retval; +} + + +int get_sig_type(char *name, hal_type_t *type) +{ +int retval = 0; +hal_sig_t *sig; + + // get mutex before accessing shared data + rtapi_mutex_get(&(hal_data->mutex)); + + sig = halpr_find_sig_by_name(name); + if(sig == 0) + { + rtapi_mutex_give(&(hal_data->mutex)); + retval = -EINVAL; + } + else // sig + { + *(type) = sig->type; + } + + rtapi_mutex_give(&(hal_data->mutex)); + if (retval != 0) + hal_print_msg(RTAPI_MSG_DBG, "Error getting value of signal: %s\n", name); + return retval; +} + + +///////////////////////////////////////////////////////////////////////////////////////// + +int set_common(hal_type_t type, void *d_ptr, char *value) +{ +// This function assumes that the mutex is held +int retval = 0; +double fval; +long lval; +unsigned long ulval; +unsigned long long ullval; +long long llval; +char *cp = value; + + switch (type) { + case HAL_BIT: + if ((strcmp("1", value) == 0) || (strcasecmp("TRUE", value) == 0)) + *(hal_bit_t *) (d_ptr) = 1; + else if ((strcmp("0", value) == 0)|| (strcasecmp("FALSE", value)) == 0) + *(hal_bit_t *) (d_ptr) = 0; + else + { + hal_print_msg(RTAPI_MSG_DBG,"value '%s' invalid for bit\n", value); + retval = -EINVAL; + } + break; + case HAL_FLOAT: + fval = strtod ( value, &cp ); + if ((*cp != '\0') && (!isspace(*cp))) + { + // invalid character(s) in string + hal_print_msg(RTAPI_MSG_DBG,"value '%s' invalid for float\n", value); + retval = -EINVAL; + } + else + *((hal_float_t *) (d_ptr)) = fval; + break; + case HAL_S32: + lval = strtol(value, &cp, 0); + if ((*cp != '\0') && (!isspace(*cp))) + { + // invalid chars in string + hal_print_msg(RTAPI_MSG_DBG,"value '%s' invalid for S32\n", value); + retval = -EINVAL; + } + else + *((hal_s32_t *) (d_ptr)) = lval; + break; + case HAL_U32: + ulval = strtoul(value, &cp, 0); + if ((*cp != '\0') && (!isspace(*cp))) + { + // invalid chars in string + hal_print_msg(RTAPI_MSG_DBG,"value '%s' invalid for U32\n", value); + retval = -EINVAL; + } + else + *((hal_u32_t *) (d_ptr)) = ulval; + break; + default: + // Shouldn't get here, but just in case... + hal_print_msg(RTAPI_MSG_DBG,"bad type %d\n", type); + retval = -EINVAL; + } + return retval; +} + + +int set_sig_value(char *name, char *value) +{ +int retval; +hal_sig_t *sig; +hal_type_t type; +void *d_ptr; + + rtapi_print_msg(RTAPI_MSG_DBG, "setting signal '%s'\n", name); + // get mutex before accessing shared data + rtapi_mutex_get(&(hal_data->mutex)); + // search signal list for name + sig = halpr_find_sig_by_name(name); + if (sig == 0) + { + rtapi_mutex_give(&(hal_data->mutex)); + hal_print_msg(RTAPI_MSG_DBG,"signal '%s' not found\n", name); + return -EINVAL; + } + // found it - does it have a writer? + if (sig->writers > 0) + { + rtapi_mutex_give(&(hal_data->mutex)); + hal_print_msg(RTAPI_MSG_DBG,"signal '%s' already has writer(s)\n", name); + return -EINVAL; + } + // no writer, so we can safely set it + type = sig->type; + d_ptr = sig_value(sig); + retval = set_common(type, d_ptr, value); + rtapi_mutex_give(&(hal_data->mutex)); + if (retval == 0) + hal_print_msg(RTAPI_MSG_DBG,"Signal '%s' set to %s\n", name, value); + else + hal_print_msg(RTAPI_MSG_DBG,"sets failed\n"); + + return retval; +} + + +int set_pin_value(char *name, char *value) +{ +int retval; +hal_pin_t *pin; +hal_type_t type; +void *d_ptr; + + // get mutex before accessing shared data + rtapi_mutex_get(&(hal_data->mutex)); + + pin = halpr_find_pin_by_name(name); + if(pin == 0) + { + rtapi_mutex_give(&(hal_data->mutex)); + return -EINVAL; + } + else // pin + { + type = pin->type; + d_ptr = (void*)&pin->dummysig; + } + + retval = set_common(type, d_ptr, value); + + rtapi_mutex_give(&(hal_data->mutex)); + if (retval != 0) + hal_print_msg(RTAPI_MSG_DBG, "Error setting value of pin: %s\n", name); + return retval; +} + +///////////////// FUNCTION /////////////////////////////////////////////////////////////////////////////////// + +/////////////////////////////////////////////////////////////////////// +// Multi-part logic, not all going to be used +// +// Setting just pin name to watch and target value to watch for +// will see function run until target reached and stop +// +// Setting as above with iterations set, will run function until +// either the target is reached or number of iterations is reached +// whichever is first +// NB iteration rate depends upon thread speed +// +// Setting as above with forever flag set, will cause the target-value +// pin to continue to be updated after the target is reached and the +// target-reached flag is set, to give a live view of the pin value +//////////////////////////////////////////////////////////////////// + +static int watch_(void *arg, const hal_funct_args_t *fa) +{ +long period __attribute__((unused)) = fa_period(fa); +struct inst_data *ip __attribute__((unused)) = arg; + +hal_s32_t n; +hal_float_t valuel = 0.0; +char value[16]; +static int counter = 0; +static hal_float_t valuef = 0.0; +static hal_bit_t latched = 0, triggered = 0; + + if(*(ip->_reset)) + { + *(ip->_started) = 0; + *(ip->_stopped) = 0; + *(ip->_triggered) = latched = 0; + *(ip->_trigger) = 0; + *(ip->_reset) = 0; + *(ip->_value_out) = 0.0; + // come back next poll and wait for trigger + return 0; + } + + if(*(ip->_trigger) && !latched) + { + *(ip->_started) = 1; + *(ip->_stopped) = 0; + *(ip->_triggered) = latched = 1; + *(ip->_trigger) = 0; + } + + if( latched ) // we are running + { + if(! *(ip->_target_reached)) // OK to continue running + { + get_pin_value(target_pin_name, value); + valuel = atof(value); + if(valuef != valuel) // no duplicate tests or prints if unchanged + { + *(ip->_value_out) = valuef = valuel; + // set flag and print message just latched + if( valuef >= *(ip->_target_value) && (! *(ip->_target_reached)) ) + { + hal_print_msg(RTAPI_MSG_DBG, "Target reached: Value = %f Target = %f", valuef, *(ip->_target_value) ); + *(ip->_target_reached) = 1; + *(ip->_stopped) = 1; + *(ip->_started) = 0; + latched = 0; + } + // if still below target continue counter + else if( valuef < *(ip->_target_value) ) + { + counter++; + hal_print_msg(RTAPI_MSG_DBG,"Counter: %d Last value: %f Target = %f", counter, valuef, *(ip->_target_value) ); + } + // if only running for NN iterations + // may reach iterations limit before value matches target + if(*(ip->_iterations) && (*(ip->_iterations) <= counter) ) + { + *(ip->_stopped) = 1; + *(ip->_started) = 0; + latched = 0; + } + } + } + } + // carry on showing pin value after target reached, but not until triggered if not latched + else if(*(ip->_forever) && *(ip->_triggered)) + { + get_pin_value(target_pin_name, value); + *(ip->_value_out) = atof(value); + } + return 0; +} + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +static int extra_inst_setup(struct inst_data *ip, const char *name, int argc, const char**argv) +{ +int x; + + target_pin_name[0] = '\0'; + preset_name[0] = '\0'; + *(ip->_target_value) = -10; + *(ip->_target_value_int) = -1; + *(ip->_iterations) = 0; + *(ip->_forever) = 0; + preset_type = 0; + + // parse args here + for(x = 2; x < argc; x++) + { + const char *c = argv[x]; + if((strstr(c, "pin_name=")) != NULL) + strcpy(target_pin_name, &c[9]); + else if((strstr(c, "preset_name=")) != NULL) + strcpy(preset_name, &c[12]); + else if((strstr(c, "target_value=")) != NULL) + { + *(ip->_target_value) = atof(&c[13]); + *(ip->_target_value_int) = atoi(&c[13]); + } + else if((strstr(c, "forever=")) != NULL) + *(ip->_forever) = atoi(&c[8]); + else if((strstr(c, "iterations=")) != NULL) + *(ip->_iterations) = atoi(&c[11]); + else if((strstr(c, "preset_type=")) != NULL) + preset_type = atoi(&c[12]); + } + + hal_print_msg(RTAPI_MSG_DBG,"pin_name = %s, preset_pin_name = %s, preset_type = %d, target_value = %f, forever = %d, iterations = %d", + target_pin_name, preset_name, preset_type, *(ip->_target_value), *(ip->_forever), *(ip->_iterations) ); + + char buff[16]; + hal_type_t type; + int ret = 0; + + // This section is to preset a pin or signal with the target_value passed to the watch component + // Uses for this include setting the heater component to the temperature required or + // setting a panel widget to the value required to initialise it. + // Wherever possible this should be a pin, the signal option arises from horrible FDM configs + // where signals are created with "meaningful names" and net'd to the pin, instead of just using + // the actual pin name to do stuff. + + if(strlen(preset_name)) + { + if(preset_type == 0) // pin + ret = get_pin_type(preset_name, &type); + else + ret = get_sig_type(preset_name, &type); + + if(ret != 0) + return ret; + + if(type == HAL_FLOAT) + sprintf(buff,"%f", *(ip->_target_value)); + else + sprintf(buff,"%d", *(ip->_target_value_int)); + + if(preset_type == 0) // pin + ret = set_pin_value(preset_name, buff); + else + ret = set_sig_value(preset_name, buff); + } + + return ret; +} + + From 6b209a1e0ee5bfef25dd573ff983dbb030873082 Mon Sep 17 00:00:00 2001 From: Mick Date: Wed, 19 Sep 2018 11:39:27 +0100 Subject: [PATCH 271/516] Update debian/control.xxx.in files Situation at 20092018 ~~~~~~~~~~~~~~~~~~~~~ python-gst1.0 backported to Jessie + Stretch This affects gmoccapy, which uses functions in the old lib, but checks were introduced in https://github.com/machinekit/machinekit/commit/5e5bb64 to remove those if newer distro used. These remain valid as python-gst-0.10 is not available for Stretch and above even though the newer lib is available in Jessie. python-gtksourceview2 is still not available for Buster, but Sid has it, so expect backport soon This is used in gladevcp widgets. python-pil and python-pil.imagegtk active for Sid replacing python-imaging and python-imaging-tk however selecting python-imaging and python-imaging-tk in Stretch actually results in python-pil and python-pil.imagegtk being installed, so will probably completely backport soon. Keep individual control files, so they can easily be amended as things change Signed-off-by: Mick --- debian/configure | 49 +++++++++++++++++++------------- debian/control.buster.in | 2 +- debian/control.sid.in | 60 +++++++++++++++++++++++++++++++++++++++ debian/control.stretch.in | 2 +- 4 files changed, 92 insertions(+), 21 deletions(-) create mode 100644 debian/control.sid.in diff --git a/debian/configure b/debian/configure index dbac482972..de9d88f70b 100755 --- a/debian/configure +++ b/debian/configure @@ -29,7 +29,7 @@ rules_enable_threads() { FLAVOR=$1 FLAVOR_VAR=THREADS_$(echo $FLAVOR | tr 'a-z-' 'A-Z_') sed -i rules \ - -e "s/^${FLAVOR_VAR}[^_].*/${FLAVOR_VAR} = --with-${FLAVOR}/" + -e "s/^${FLAVOR_VAR}[^_].*/${FLAVOR_VAR} = --with-${FLAVOR}/" echo "debian/rules: enabled ${FLAVOR} threads" >&2 } @@ -55,7 +55,7 @@ do_xenomai() { # Be sure the -dev files only appear once BUILD_DEPS+=", libxenomai-dev" echo "debian/control: added Xenomai (userland) threads package" \ - "with Build-Depends:" >&2 + "with Build-Depends:" >&2 echo " libxenomai-dev" >&2 rules_enable_threads xenomai HAVE_FLAVOR=true @@ -103,14 +103,14 @@ cd $OWD usage() { { - test -z "$1" || echo "$1" - echo "Usage: $0 [ arg ... ]" - echo " arg: function:" - echo " -p build POSIX threads" - echo " -r build RT_PREEMPT threads" - echo " -x build Xenomai threads" - echo " -c rewrite changelog to set package version from git commit" - echo " -s create source tarball for non binary package builds" + test -z "$1" || echo "$1" + echo "Usage: $0 [ arg ... ]" + echo " arg: function:" + echo " -p build POSIX threads" + echo " -r build RT_PREEMPT threads" + echo " -x build Xenomai threads" + echo " -c rewrite changelog to set package version from git commit" + echo " -s create source tarball for non binary package builds" } >&2 exit 1 } @@ -129,12 +129,23 @@ test "$1" != --help || usage BUILD_DEPS= # List of Build-Depends HAVE_FLAVOR=false -# copy base templates into place -## need python-gst0.10 for Jessie, none for Stretch, no python-gtksourceview2 for Buster +## copy base templates into place + +## situation at 20092018 +## python-gst1.0 backported to Jessie + Stretch +## python-gtksourceview2 not available for Buster but is for Sid, meaning gladevcp widgets keep working. +## python-pil and python-pil.imagegtk active for Sid replacing python-imaging and python-imaging-tk +## however selecting python-imaging and python-imaging-tk in Stretch actually +## results in python-pil and python-pil.imagegtk being installed, so will probably completely backport soon. + +## Keep individual control files, so they can easily be amended as things change + if [ "$DISTRO_CODENAME" == "stretch" ]; then cp control.stretch.in control elif [ "$DISTRO_CODENAME" == "buster" ]; then cp control.buster.in control +elif [ "$DISTRO_CODENAME" == "sid" ]; then + cp control.sid.in control else cp control.in control fi @@ -148,13 +159,13 @@ echo "debian/machinekit.install.in: copied base template" >&2 # read command line options while getopts prxcsd?h ARG; do case $ARG in - p) do_posix ;; - r) do_rt-preempt ;; - x) do_xenomai ;; - c) do_changelog ;; # set new changelog with package versions from git - s) do_source_tarball ;; # create tarball for non binary builds - ?|h) usage ;; - *) usage "Unknown arg: '-$ARG'" ;; + p) do_posix ;; + r) do_rt-preempt ;; + x) do_xenomai ;; + c) do_changelog ;; # set new changelog with package versions from git + s) do_source_tarball ;; # create tarball for non binary builds + ?|h) usage ;; + *) usage "Unknown arg: '-$ARG'" ;; esac done diff --git a/debian/control.buster.in b/debian/control.buster.in index 0b5f4480c4..837c14466a 100644 --- a/debian/control.buster.in +++ b/debian/control.buster.in @@ -52,7 +52,7 @@ Depends: ${shlibs:Depends}, machinekit-rt-threads, tcl8.6, tk8.6, python-vte, python-xlib, python-gtkglext1, python-configobj, python-zmq, python-protobuf (>= 2.4.1), python-avahi, python-simplejson, python-pyftpdlib, - python-pydot, xdot, + python-pydot, xdot, python-gst-1.0, tclreadline, bc, procps, psmisc Description: PC based motion controller for real-time Linux Machinekit is the next-generation Enhanced Machine Controller which diff --git a/debian/control.sid.in b/debian/control.sid.in new file mode 100644 index 0000000000..4c5acdb7c2 --- /dev/null +++ b/debian/control.sid.in @@ -0,0 +1,60 @@ +Source: machinekit +Section: misc +Priority: extra +Maintainer: John Morris +Build-Depends: debhelper (>= 6), + autoconf (>= 2.63), automake, libboost-python-dev, libgl1-mesa-dev, + libglu1-mesa-dev, libgtk2.0-dev, libmodbus-dev (>= 3.0), libudev-dev, + libncurses-dev, libreadline-dev, libusb-1.0-0-dev, libxmu-dev, + libxmu-headers, python (>= 2.6.6), python-dev (>= 2.6.6), + cython (>= 0.19), dh-python, + pkg-config, psmisc, python-tk, libxaw7-dev, libboost-serialization-dev, + libzmq3-dev (>= 4.0.4), libczmq-dev (>= 4.0.2), libjansson-dev (>= 2.5), + libwebsockets-dev (>= 1.2.2), + python-zmq (>= 14.0.1), procps, + liburiparser-dev, libssl-dev, python-setuptools, + uuid-dev, uuid-runtime, libavahi-client-dev, + libprotobuf-dev (>= 2.4.1), protobuf-compiler (>= 2.4.1), + python-protobuf (>= 2.4.1), libprotoc-dev (>= 2.4.1), + python-simplejson, libtk-img, libboost-thread-dev, + python-pyftpdlib, tcl8.6-dev, tk8.6-dev @BUILD_DEPS@ +Standards-Version: 2.1.0 + +######################################################################### +## not built any more, components of it are in flavour packages +## +#Package: machinekit-dev +#Architecture: any +#Depends: make, g++, tcl8.6, tk8.6, +# ${shlibs:Depends}, ${misc:Depends}, +# machinekit (= ${binary:Version}), +# yapps2-runtime +#Section: libs +#Description: PC based motion controller for real-time Linux +# Machinekit is the next-generation Enhanced Machine Controller which +# provides motion control for CNC machine tools and robotic +# applications (milling, cutting, routing, etc.). +# . +# This package includes files needed to build new realtime components and +# alternate front-ends for machinekit +######################################################################### + +Package: machinekit +Breaks: linuxcnc +Replaces: linuxcnc +Architecture: any +Depends: ${shlibs:Depends}, machinekit-rt-threads, tcl8.6, tk8.6, + bwidget (>= 1.7), libtk-img (>=1.13), + ${python:Depends}, ${misc:Depends}, + python-tk, python-pil, python-pil.imagetk, + python-gnome2, python-glade2, + python-numpy, + python-vte, python-xlib, python-gtkglext1, python-configobj, + python-zmq, python-protobuf (>= 2.4.1), + python-avahi, python-simplejson, python-pyftpdlib, + python-pydot, xdot, python-gst-1.0, python-gtksourceview2, + tclreadline, bc, procps, psmisc +Description: PC based motion controller for real-time Linux + Machinekit is the next-generation Enhanced Machine Controller which + provides motion control for CNC machine tools and robotic + applications (milling, cutting, routing, etc.). diff --git a/debian/control.stretch.in b/debian/control.stretch.in index 361184f99c..bc097cfb95 100644 --- a/debian/control.stretch.in +++ b/debian/control.stretch.in @@ -52,7 +52,7 @@ Depends: ${shlibs:Depends}, machinekit-rt-threads, tcl8.6, tk8.6, python-vte, python-xlib, python-gtkglext1, python-configobj, python-zmq, python-protobuf (>= 2.4.1), python-avahi, python-simplejson, python-pyftpdlib, - python-pydot, xdot, + python-pydot, xdot, python-gst-1.0, python-gtksourceview2, tclreadline, bc, procps, psmisc Description: PC based motion controller for real-time Linux Machinekit is the next-generation Enhanced Machine Controller which From ea9d305697fe2695c57a73b99f2d3413faba610f Mon Sep 17 00:00:00 2001 From: Mick Date: Sun, 1 Apr 2018 16:57:41 +0100 Subject: [PATCH 272/516] Remove most refs to hard kernel threads from Makefiles Signed-off-by: Mick --- src/Makefile | 88 +++++++++++++++++++-------------------- src/Makefile.inc.in | 93 +++++++++++++++++++++--------------------- src/Makefile.modinc.in | 36 ++++++++-------- 3 files changed, 109 insertions(+), 108 deletions(-) diff --git a/src/Makefile b/src/Makefile index 3fe599ef0b..f30ff0813e 100755 --- a/src/Makefile +++ b/src/Makefile @@ -138,12 +138,12 @@ modules: userspace )\ ) -ifeq ($(HAVE_KERNEL_THREADS),yes) - @test -f ../libexec/linuxcnc_module_helper -a \ - \( `stat -c %u ../libexec/linuxcnc_module_helper` -ne 0 -o \ - ! -u ../libexec/linuxcnc_module_helper \) \ - && need_setuid=1; -endif +#ifeq ($(HAVE_KERNEL_THREADS),yes) +# @test -f ../libexec/linuxcnc_module_helper -a \ +# \( `stat -c %u ../libexec/linuxcnc_module_helper` -ne 0 -o \ +# ! -u ../libexec/linuxcnc_module_helper \) \ +# && need_setuid=1; +#endif ifeq ($(RUN_IN_PLACE)+$(BUILD_DRIVERS),yes+yes) for f in $(filter-out %-kernel,$(BUILD_THREAD_FLAVORS)); do \ @@ -275,9 +275,9 @@ SUBDIRS := \ \ po \ -ifeq ($(HAVE_KERNEL_THREADS),yes) -SUBDIRS += module_helper -endif +#ifeq ($(HAVE_KERNEL_THREADS),yes) +#SUBDIRS += module_helper +#endif ifeq ($(BUILD_WEBTALK),yes) SUBDIRS += machinetalk/webtalk @@ -833,13 +833,13 @@ clean: depclean modclean docclean fix_perms = test -f $(1) && chown root $(1) && chmod 4750 $(1) || true ifeq ($(BUILD_DRIVERS),yes) -ifeq ($(HAVE_KERNEL_THREADS),yes) -CHECK_KFLAV_SWITCH=-k -endif +#ifeq ($(HAVE_KERNEL_THREADS),yes) +#CHECK_KFLAV_SWITCH=-k +#endif setuid: -ifeq ($(HAVE_KERNEL_THREADS),yes) - $(call fix_perms,../libexec/linuxcnc_module_helper) -endif +#ifeq ($(HAVE_KERNEL_THREADS),yes) +# $(call fix_perms,../libexec/linuxcnc_module_helper) +#endif $(call fix_perms,../libexec/pci_read) $(call fix_perms,../libexec/pci_write) $(foreach f,$(BUILD_THREAD_FLAVORS),\ @@ -1103,9 +1103,9 @@ endif install-kernel-dep: install-dirs $(SETUID) ../libexec/rtapi_app_* $(DESTDIR)$(EMC2_LIBEXEC_DIR) -ifeq ($(HAVE_KERNEL_THREADS),yes) - $(SETUID) ../libexec/linuxcnc_module_helper $(DESTDIR)$(EMC2_LIBEXEC_DIR) -endif +#ifeq ($(HAVE_KERNEL_THREADS),yes) +# $(SETUID) ../libexec/linuxcnc_module_helper $(DESTDIR)$(EMC2_LIBEXEC_DIR) +#endif ifeq ($(BUILD_DRIVERS),yes) $(SETUID) ../libexec/pci_write $(DESTDIR)$(EMC2_LIBEXEC_DIR) $(SETUID) ../libexec/pci_read $(DESTDIR)$(EMC2_LIBEXEC_DIR) @@ -1134,14 +1134,14 @@ endif done; \ fi; \ done -ifeq ($(USE_SHMDRV),yes) - for srcdir in ../rtlib/shmdrv/*; do \ - kver=`basename $$srcdir`; \ - echo Installing shmdrv.ko module for kernel version $$kver; \ - $(DIR) $(DESTDIR)/lib/modules/$$kver/linuxcnc; \ - $(FILE) $$srcdir/* $(DESTDIR)/lib/modules/$$kver/linuxcnc; \ - done; -endif +#ifeq ($(USE_SHMDRV),yes) +# for srcdir in ../rtlib/shmdrv/*; do \ +# kver=`basename $$srcdir`; \ +# echo Installing shmdrv.ko module for kernel version $$kver; \ +# $(DIR) $(DESTDIR)/lib/modules/$$kver/linuxcnc; \ +# $(FILE) $$srcdir/* $(DESTDIR)/lib/modules/$$kver/linuxcnc; \ +# done; +#endif endif # ! RUN_IN_PLACE CONF=../configs @@ -1440,16 +1440,16 @@ endif # these won't compile as-is with userland threading -ifneq ($(BUILD_SYS),user-dso) -obj-$(CONFIG_HAL_M5I20) += hal_m5i20.o -hal_m5i20-objs := hal/drivers/hal_m5i20.o $(MATHSTUB) -obj-$(CONFIG_HAL_PPMC) += hal_ppmc.o -hal_ppmc-objs := hal/drivers/hal_ppmc.o $(MATHSTUB) -obj-$(CONFIG_OPTO_AC5) += opto_ac5.o -opto_ac5-objs := hal/drivers/opto_ac5.o $(MATHSTUB) -obj-$(CONFIG_HAL_GM) += hal_gm.o -hal_gm-objs := hal/drivers/hal_gm.o $(MATHSTUB) -endif +#ifneq ($(BUILD_SYS),user-dso) +#obj-$(CONFIG_HAL_M5I20) += hal_m5i20.o +#hal_m5i20-objs := hal/drivers/hal_m5i20.o $(MATHSTUB) +#obj-$(CONFIG_HAL_PPMC) += hal_ppmc.o +#hal_ppmc-objs := hal/drivers/hal_ppmc.o $(MATHSTUB) +#obj-$(CONFIG_OPTO_AC5) += opto_ac5.o +#opto_ac5-objs := hal/drivers/opto_ac5.o $(MATHSTUB) +#obj-$(CONFIG_HAL_GM) += hal_gm.o +#hal_gm-objs := hal/drivers/hal_gm.o $(MATHSTUB) +#endif # Gnu make 'expression' syntax is pathetic. What were these guys smoking? # turn on by default @@ -1824,9 +1824,9 @@ $(RTLIBDIR)/hal_parport$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_parport-objs) $(RTLIBDIR)/probe_parport$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(probe_parport-objs)) -ifeq ($(BUILD_SYS),user-dso) +#ifeq ($(BUILD_SYS),user-dso) $(RTLIBDIR)/probe_parport$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(probe_parport-objs)) -endif +#endif ifeq ($(USERMODE_PCI),yes) $(RTLIBDIR)/hostmot2$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hostmot2-objs)) @@ -1834,21 +1834,21 @@ $(RTLIBDIR)/hm2_7i43$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_7i43-objs)) $(RTLIBDIR)/hm2_7i90$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_7i90-objs)) $(RTLIBDIR)/hm2_pci$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_pci-objs)) $(RTLIBDIR)/setsserial$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(setsserial-objs)) -ifeq ($(BUILD_SYS),user-dso) +#ifeq ($(BUILD_SYS),user-dso) $(RTLIBDIR)/hm2_eth$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_eth-objs)) -endif +#endif $(RTLIBDIR)/hm2_test$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_test-objs)) endif ifdef TARGET_PLATFORM_SOCFPGA -ifeq ($(BUILD_SYS),user-dso) +#ifeq ($(BUILD_SYS),user-dso) $(RTLIBDIR)/hostmot2$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hostmot2-objs)) $(RTLIBDIR)/hm2_soc_ol$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_soc_ol-objs)) -endif +#endif endif ifdef TARGET_PLATFORM_BEAGLEBONE -ifeq ($(BUILD_SYS),user-dso) +#ifeq ($(BUILD_SYS),user-dso) $(RTLIBDIR)/hal_pru$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_pru-objs)) $(RTLIBDIR)/hal_pru_generic$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_pru_generic-objs)) $(RTLIBDIR)/hal_prudebug$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_prudebug-objs)) @@ -1856,7 +1856,7 @@ $(RTLIBDIR)/hal_gpio$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_gpio-objs)) $(RTLIBDIR)/hal_bb_gpio$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_bb_gpio-objs)) $(RTLIBDIR)/pepper$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(pepper-objs)) $(RTLIBDIR)/hal_arm335xQEP$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_arm335xQEP-objs)) -endif +#endif endif ifdef TARGET_PLATFORM_H3 diff --git a/src/Makefile.inc.in b/src/Makefile.inc.in index cc751161d0..19813c6834 100644 --- a/src/Makefile.inc.in +++ b/src/Makefile.inc.in @@ -32,28 +32,28 @@ THREADS = $(shell echo $(threads) | tr a-z- A-Z_) HAVE_POSIX_THREADS=@HAVE_POSIX_THREADS@ HAVE_RT_PREEMPT_THREADS=@HAVE_RT_PREEMPT_THREADS@ HAVE_XENOMAI_THREADS=@HAVE_XENOMAI_THREADS@ -HAVE_XENOMAI_KERNEL_THREADS=@HAVE_XENOMAI_KERNEL_THREADS@ -HAVE_RTAI_KERNEL_THREADS=@HAVE_RTAI_KERNEL_THREADS@ +#HAVE_XENOMAI_KERNEL_THREADS=@HAVE_XENOMAI_KERNEL_THREADS@ +#HAVE_RTAI_KERNEL_THREADS=@HAVE_RTAI_KERNEL_THREADS@ # If any kthreads flavor is to be built, set HAVE_KERNEL_THREADS=yes -ifneq ($(filter-out no,\ - $(HAVE_XENOMAI_KERNEL_THREADS) $(HAVE_RTAI_KERNEL_THREADS)),) -HAVE_KERNEL_THREADS=yes -else +#ifneq ($(filter-out no,\ +# $(HAVE_XENOMAI_KERNEL_THREADS) $(HAVE_RTAI_KERNEL_THREADS)),) +#HAVE_KERNEL_THREADS=yes +#else HAVE_KERNEL_THREADS=no -endif +#endif POSIX_THREADS_FLAVOR_ID=@POSIX_THREADS_FLAVOR_ID@ RT_PREEMPT_THREADS_FLAVOR_ID=@RT_PREEMPT_THREADS_FLAVOR_ID@ XENOMAI_THREADS_FLAVOR_ID=@XENOMAI_THREADS_FLAVOR_ID@ -RTAI_KERNEL_THREADS_FLAVOR_ID=@RTAI_KERNEL_THREADS_FLAVOR_ID@ -XENOMAI_KERNEL_THREADS_FLAVOR_ID=@XENOMAI_KERNEL_THREADS_FLAVOR_ID@ +#RTAI_KERNEL_THREADS_FLAVOR_ID=@RTAI_KERNEL_THREADS_FLAVOR_ID@ +#XENOMAI_KERNEL_THREADS_FLAVOR_ID=@XENOMAI_KERNEL_THREADS_FLAVOR_ID@ THREAD_FLAVOR_ID=$($(THREADS)_THREADS_FLAVOR_ID) POSIX_THREADS_BUILD_SYS = user-dso RT_PREEMPT_THREADS_BUILD_SYS = user-dso XENOMAI_THREADS_BUILD_SYS = user-dso -XENOMAI_KERNEL_THREADS_BUILD_SYS = kbuild -RTAI_KERNEL_THREADS_BUILD_SYS = kbuild +#XENOMAI_KERNEL_THREADS_BUILD_SYS = kbuild +#RTAI_KERNEL_THREADS_BUILD_SYS = kbuild BUILD_SYS = $($(THREADS)_THREADS_BUILD_SYS) # Directories @@ -66,11 +66,11 @@ EMC2_HOME=@EMC2_HOME@ LIB_DIR=@EMC2_HOME@/lib # flavor (and kver) subdirectories -ifeq ($(BUILD_SYS),user-dso) +#ifeq ($(BUILD_SYS),user-dso) RTDIR_EXT=$(threads) -else -RTDIR_EXT=$(threads)/$(KERNEL_VERS) -endif +#else +#RTDIR_EXT=$(threads)/$(KERNEL_VERS) +#endif #used for install stuff #but have them here as reference @@ -124,55 +124,56 @@ RUN_IN_PLACE = @RUN_IN_PLACE@ POSIX_THREADS_LDFLAGS = @POSIX_THREADS_LDFLAGS@ RT_PREEMPT_THREADS_LDFLAGS = @RT_PREEMPT_THREADS_LDFLAGS@ XENOMAI_THREADS_LDFLAGS = @XENOMAI_THREADS_LDFLAGS@ -XENOMAI_KERNEL_THREADS_LDFLAGS = @XENOMAI_KERNEL_THREADS_LDFLAGS@ -RTAI_KERNEL_THREADS_LDFLAGS = @RTAI_KERNEL_THREADS_LDFLAGS@ -RT_LDFLAGS = $($(THREADS)_THREADS_LDFLAGS) +#XENOMAI_KERNEL_THREADS_LDFLAGS = @XENOMAI_KERNEL_THREADS_LDFLAGS@ +#RTAI_KERNEL_THREADS_LDFLAGS = @RTAI_KERNEL_THREADS_LDFLAGS@ +#RT_LDFLAGS = $($(THREADS)_THREADS_LDFLAGS) XENOMAI_THREADS_RTS=@XENOMAI_THREADS_RTS@ -XENOMAI_KERNEL_THREADS_RTS=@XENOMAI_KERNEL_THREADS_RTS@ -RTAI_KERNEL_THREADS_RTS=@RTAI_KERNEL_THREADS_RTS@ +#XENOMAI_KERNEL_THREADS_RTS=@XENOMAI_KERNEL_THREADS_RTS@ +#RTAI_KERNEL_THREADS_RTS=@RTAI_KERNEL_THREADS_RTS@ -XENOMAI_KERNEL_THREADS_KERNEL_DIRS = @XENOMAI_KERNEL_THREADS_KERNEL_DIRS@ -RTAI_KERNEL_THREADS_KERNEL_DIRS = @RTAI_KERNEL_THREADS_KERNEL_DIRS@ -SHMDRV_KERNEL_DIRS = @SHMDRV_KERNEL_DIRS@ -KERNEL_DIRS = $($(THREADS)_THREADS_KERNEL_DIRS) +#XENOMAI_KERNEL_THREADS_KERNEL_DIRS = @XENOMAI_KERNEL_THREADS_KERNEL_DIRS@ +#RTAI_KERNEL_THREADS_KERNEL_DIRS = @RTAI_KERNEL_THREADS_KERNEL_DIRS@ +#SHMDRV_KERNEL_DIRS = @SHMDRV_KERNEL_DIRS@ +#KERNEL_DIRS = $($(THREADS)_THREADS_KERNEL_DIRS) -XENOMAI_KERNEL_THREADS_EXTRA_SYMBOLS = @XENOMAI_KERNEL_THREADS_EXTRA_SYMBOLS@ -RTAI_KERNEL_THREADS_EXTRA_SYMBOLS = @RTAI_KERNEL_THREADS_EXTRA_SYMBOLS@ -KBUILD_EXTRA_SYMBOLS = $($(THREADS)_THREADS_EXTRA_SYMBOLS) \ - $(EMC2_RTLIB_DIR)/Module.symvers + +#XENOMAI_KERNEL_THREADS_EXTRA_SYMBOLS = @XENOMAI_KERNEL_THREADS_EXTRA_SYMBOLS@ +#RTAI_KERNEL_THREADS_EXTRA_SYMBOLS = @RTAI_KERNEL_THREADS_EXTRA_SYMBOLS@ +#KBUILD_EXTRA_SYMBOLS = $($(THREADS)_THREADS_EXTRA_SYMBOLS) \ +# $(EMC2_RTLIB_DIR)/Module.symvers POSIX_THREADS_RTFLAGS = @POSIX_THREADS_RTFLAGS@ RT_PREEMPT_THREADS_RTFLAGS = @RT_PREEMPT_THREADS_RTFLAGS@ XENOMAI_THREADS_RTFLAGS = @XENOMAI_THREADS_RTFLAGS@ -XENOMAI_KERNEL_THREADS_RTFLAGS = @XENOMAI_KERNEL_THREADS_RTFLAGS@ -RTAI_KERNEL_THREADS_RTFLAGS = @RTAI_KERNEL_THREADS_RTFLAGS@ +#XENOMAI_KERNEL_THREADS_RTFLAGS = @XENOMAI_KERNEL_THREADS_RTFLAGS@ +#RTAI_KERNEL_THREADS_RTFLAGS = @RTAI_KERNEL_THREADS_RTFLAGS@ THREADS_RTFLAGS = $($(THREADS)_THREADS_RTFLAGS) \ -DTHREAD_FLAVOR_ID=$(THREAD_FLAVOR_ID) RTFLAGS := -I. $(THREADS_RTFLAGS) \ -DRTAPI -D_GNU_SOURCE -D_FORTIFY_SOURCE=0 -XENOMAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS = \ - @XENOMAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS@ -RTAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS = @RTAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS@ -KERNEL_MATH_CFLAGS = $($(THREADS)_THREADS_KERNEL_MATH_CFLAGS) +#XENOMAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS = \ +# @XENOMAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS@ +#RTAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS = @RTAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS@ +#KERNEL_MATH_CFLAGS = $($(THREADS)_THREADS_KERNEL_MATH_CFLAGS) ULFLAGS = -D_GNU_SOURCE -DLOCALE_DIR=\"$(localedir)\" -DPACKAGE=\"$(package)\" POSIX_THREADS_BUILD_SYS = @POSIX_THREADS_BUILD_SYS@ RT_PREEMPT_THREADS_BUILD_SYS = @RT_PREEMPT_THREADS_BUILD_SYS@ XENOMAI_THREADS_BUILD_SYS = @XENOMAI_THREADS_BUILD_SYS@ -XENOMAI_KERNEL_THREADS_BUILD_SYS = @XENOMAI_KERNEL_THREADS_BUILD_SYS@ -RTAI_KERNEL_THREADS_BUILD_SYS = @RTAI_KERNEL_THREADS_BUILD_SYS@ +#XENOMAI_KERNEL_THREADS_BUILD_SYS = @XENOMAI_KERNEL_THREADS_BUILD_SYS@ +#RTAI_KERNEL_THREADS_BUILD_SYS = @RTAI_KERNEL_THREADS_BUILD_SYS@ BUILD_SYS = $($(THREADS)_THREADS_BUILD_SYS) # module extension, used when insmod'ing -ifeq ($(BUILD_SYS),user-dso) +#ifeq ($(BUILD_SYS),user-dso) MODULE_EXT = .so -else -MODULE_EXT = .ko -endif +#else +#MODULE_EXT = .ko +#endif CC = @CC@ CC_FOR_BUILD = @CC_FOR_BUILD@ OBJCOPY = @OBJCOPY@ @@ -185,8 +186,8 @@ HIDRAW_H_USABLE = @HIDRAW_H_USABLE@ POSIX_THREADS_SOURCE = @POSIX_THREADS_SOURCE@ RT_PREEMPT_THREADS_SOURCE = @RT_PREEMPT_THREADS_SOURCE@ XENOMAI_THREADS_SOURCE = @XENOMAI_THREADS_SOURCE@ -XENOMAI_KERNEL_THREADS_SOURCE = @XENOMAI_KERNEL_THREADS_SOURCE@ -RTAI_KERNEL_THREADS_SOURCE = @RTAI_KERNEL_THREADS_SOURCE@ +#XENOMAI_KERNEL_THREADS_SOURCE = @XENOMAI_KERNEL_THREADS_SOURCE@ +#RTAI_KERNEL_THREADS_SOURCE = @RTAI_KERNEL_THREADS_SOURCE@ THREADS_SOURCE = $($(THREADS)_THREADS_SOURCE) BUILD_DRIVERS = @BUILD_DRIVERS@ @@ -202,11 +203,11 @@ TARGET_PLATFORM_H3 = @TARGET_PLATFORM_H3@ HARDY_AMD64_WORKAROUND=@HARDY_AMD64_WORKAROUND@ PRECISE_MULTILIB_BUG=@PRECISE_MULTILIB_BUG@ -ifeq ($(BUILD_SYS),user-dso) +#ifeq ($(BUILD_SYS),user-dso) USERMODE_PCI=@USERMODE_PCI@ -else -USERMODE_PCI=no -endif +#else +#USERMODE_PCI=no +#endif # example programs BUILD_EXAMPLES=@BUILD_EXAMPLES@ diff --git a/src/Makefile.modinc.in b/src/Makefile.modinc.in index b14718c73e..d928d5d1f6 100644 --- a/src/Makefile.modinc.in +++ b/src/Makefile.modinc.in @@ -88,24 +88,24 @@ RTLIBDIR := $(EMC2_RTLIB_DIR) LIBDIR := $(libdir) endif -ifeq ($(BUILD_SYS),kbuild) -EXTRA_CFLAGS += $(call cc-option,-Wframe-larger-than=2560) - -modules: - $(MAKE) \ - -C $(KERNELDIR) \ - KBUILD_EXTRA_SYMBOLS="$(KBUILD_EXTRA_SYMBOLS)" \ - SUBDIRS=`pwd` \ - CC="$(CC)" KBUILD_VERBOSE=$(BUILD_VERBOSE) modules - -clean: - rm *.ko *.mod.c *.o - -install: - cp $(patsubst %.o,%.ko,$(obj-m)) $(DESTDIR)$(RTLIBDIR)/ -endif +#ifeq ($(BUILD_SYS),kbuild) +#EXTRA_CFLAGS += $(call cc-option,-Wframe-larger-than=2560) +# +#modules: +# $(MAKE) \ +# -C $(KERNELDIR) \ +# KBUILD_EXTRA_SYMBOLS="$(KBUILD_EXTRA_SYMBOLS)" \ +# SUBDIRS=`pwd` \ +# CC="$(CC)" KBUILD_VERBOSE=$(BUILD_VERBOSE) modules +# +#clean: +# rm *.ko *.mod.c *.o +# +#install: +# cp $(patsubst %.o,%.ko,$(obj-m)) $(DESTDIR)$(RTLIBDIR)/ +#endif -ifeq ($(BUILD_SYS),user-dso) +#ifeq ($(BUILD_SYS),user-dso) EXTRA_CFLAGS += -fPIC -g -funwind-tables allmodules = $(patsubst %.o,%.so,$(obj-m)) modules: $(allmodules) @@ -132,4 +132,4 @@ $(foreach mod,$(patsubst %.o,%,$(obj-m)),\ $(Q)(echo '{ global : '; tr -s '\0' <$*.exported | xargs -r0 printf '%s;\n' | grep .; echo 'local : * ; };') > $*.ver $(Q)$(CC) -shared -Bsymbolic $(LDFLAGS) -Wl,--version-script,$*.ver -o $@ $^ $(EXTRA_LDFLAGS) $(Q)ld -d -r -o $*.tmp $^ -endif +#endif From b559f93d37d3b51693be319a29e37e017fd31f0a Mon Sep 17 00:00:00 2001 From: Mick Date: Mon, 2 Apr 2018 09:40:32 +0100 Subject: [PATCH 273/516] Further removal of references to hard kernel threads Also remove platform_is_supported script It dates back to Linuxcnc Ubuntu 8 - 10, does not work on Debian and is still looking for rtai kernels Signed-off-by: Mick --- debian/rules.in | 7 ---- scripts/platform-is-supported | 73 ----------------------------------- 2 files changed, 80 deletions(-) delete mode 100755 scripts/platform-is-supported diff --git a/debian/rules.in b/debian/rules.in index 45d42c50d3..7f367c2938 100755 --- a/debian/rules.in +++ b/debian/rules.in @@ -26,8 +26,6 @@ endif THREADS_POSIX = --without-posix THREADS_RT_PREEMPT = --without-rt-preempt THREADS_XENOMAI = --without-xenomai -#THREADS_XENOMAI_KERNEL = --without-xenomai-kernel -#THREADS_RTAI_KERNEL = --without-rtai-kernel # Kernel threads need a list of configured header source directories # for each architecture @@ -36,11 +34,6 @@ THREADS_XENOMAI = --without-xenomai # DEB_HOST_ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH) -#HEADERS_XENOMAI_KERNEL_i386 = --with-xenomai-kernel-sources="" -#HEADERS_XENOMAI_KERNEL_amd64 = --with-xenomai-kernel-sources="" -#HEADERS_RTAI_KERNEL_amd64 = --with-rtai-kernel-sources="" -#HEADERS_RTAI_KERNEL_i386 = --with-rtai-kernel-sources="" - # Parallel make ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) diff --git a/scripts/platform-is-supported b/scripts/platform-is-supported deleted file mode 100755 index fb301e064a..0000000000 --- a/scripts/platform-is-supported +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/python2 -# -# This script returns 0 when run on a platform supported by the current -# branch of LinuxCNC, and 1 when run on an unsupported platform. It is -# intended to guide build automation on whether or not to try to build. -# - -import sys -import subprocess -import re - - -def detect_kernel_flavor(uname): - try: - f = open("/boot/config-%s" % uname) - except IOError: - print "no kernel configuration found for %s" % uname - sys.exit(1) - l = f.read(-1) - f.close() - - config_ipipe = re.search('^CONFIG_IPIPE', l, re.MULTILINE) - config_xeno = re.search('^CONFIG_XENO_', l, re.MULTILINE) - config_rtpreempt = re.search('^CONFIG_PREEMPT_RT', l, re.MULTILINE) - - if config_ipipe and not config_xeno and not config_rtpreempt: - return 'rtai' - elif config_ipipe and config_xeno and not config_rtpreempt: - return 'xenomai' - elif not config_ipipe and not config_xeno and config_rtpreempt: - return 'rtpreempt' - else: - return 'vanilla' - - -# use subprocess.Popen() in this funny way, instead of -# subprocess.check_output(), because check_output() is not in Hardy's -# Python 2.5 - -arch = subprocess.Popen(['dpkg-architecture', '-qDEB_HOST_ARCH'], stdout=subprocess.PIPE).communicate()[0][:-1] -distributor = subprocess.Popen(['lsb_release', '--id', '--short'], stdout=subprocess.PIPE).communicate()[0][:-1] - -release = subprocess.Popen(['lsb_release', '--release', '--short'], stdout=subprocess.PIPE).communicate()[0][:-1] -major, minor = re.split('\.', release) -release_major = int(major) -release_minor = int(minor) - -uname = subprocess.Popen(['uname', '-r'], stdout=subprocess.PIPE).communicate()[0][:-1] -kernel_flavor = detect_kernel_flavor(uname) - -print "arch =", arch -print "distributor =", distributor -print "release =", release -print " major =", release_major -print " minor =", release_minor -print "uname = %s (%s)" % (uname, kernel_flavor) - -if arch != "amd64" and arch != "i386": - print "unsupported architecture!" - sys.exit(1) - -if distributor == 'Ubuntu': - if release_major < 10: - print "release is too old!" - sys.exit(1) - -if kernel_flavor != 'rtai' and kernel_flavor != 'vanilla': - print "unsupported kernel flavor" - sys.exit(1) - -print "this platform is supported!" -sys.exit(0) - From 7de1a37834ed4d1183562718bd92028301719d40 Mon Sep 17 00:00:00 2001 From: Mick Date: Wed, 19 Sep 2018 15:22:02 +0100 Subject: [PATCH 274/516] Remove previous commenting out for clarity after tests --- src/Makefile | 28 ----------------------- src/Makefile.inc.in | 51 ------------------------------------------ src/Makefile.modinc.in | 19 ---------------- 3 files changed, 98 deletions(-) diff --git a/src/Makefile b/src/Makefile index f30ff0813e..d294198eca 100755 --- a/src/Makefile +++ b/src/Makefile @@ -138,13 +138,6 @@ modules: userspace )\ ) -#ifeq ($(HAVE_KERNEL_THREADS),yes) -# @test -f ../libexec/linuxcnc_module_helper -a \ -# \( `stat -c %u ../libexec/linuxcnc_module_helper` -ne 0 -o \ -# ! -u ../libexec/linuxcnc_module_helper \) \ -# && need_setuid=1; -#endif - ifeq ($(RUN_IN_PLACE)+$(BUILD_DRIVERS),yes+yes) for f in $(filter-out %-kernel,$(BUILD_THREAD_FLAVORS)); do \ test -f ../libexec/rtapi_app_$$f -a \ @@ -275,10 +268,6 @@ SUBDIRS := \ \ po \ -#ifeq ($(HAVE_KERNEL_THREADS),yes) -#SUBDIRS += module_helper -#endif - ifeq ($(BUILD_WEBTALK),yes) SUBDIRS += machinetalk/webtalk endif @@ -833,13 +822,7 @@ clean: depclean modclean docclean fix_perms = test -f $(1) && chown root $(1) && chmod 4750 $(1) || true ifeq ($(BUILD_DRIVERS),yes) -#ifeq ($(HAVE_KERNEL_THREADS),yes) -#CHECK_KFLAV_SWITCH=-k -#endif setuid: -#ifeq ($(HAVE_KERNEL_THREADS),yes) -# $(call fix_perms,../libexec/linuxcnc_module_helper) -#endif $(call fix_perms,../libexec/pci_read) $(call fix_perms,../libexec/pci_write) $(foreach f,$(BUILD_THREAD_FLAVORS),\ @@ -1103,9 +1086,6 @@ endif install-kernel-dep: install-dirs $(SETUID) ../libexec/rtapi_app_* $(DESTDIR)$(EMC2_LIBEXEC_DIR) -#ifeq ($(HAVE_KERNEL_THREADS),yes) -# $(SETUID) ../libexec/linuxcnc_module_helper $(DESTDIR)$(EMC2_LIBEXEC_DIR) -#endif ifeq ($(BUILD_DRIVERS),yes) $(SETUID) ../libexec/pci_write $(DESTDIR)$(EMC2_LIBEXEC_DIR) $(SETUID) ../libexec/pci_read $(DESTDIR)$(EMC2_LIBEXEC_DIR) @@ -1134,14 +1114,6 @@ endif done; \ fi; \ done -#ifeq ($(USE_SHMDRV),yes) -# for srcdir in ../rtlib/shmdrv/*; do \ -# kver=`basename $$srcdir`; \ -# echo Installing shmdrv.ko module for kernel version $$kver; \ -# $(DIR) $(DESTDIR)/lib/modules/$$kver/linuxcnc; \ -# $(FILE) $$srcdir/* $(DESTDIR)/lib/modules/$$kver/linuxcnc; \ -# done; -#endif endif # ! RUN_IN_PLACE CONF=../configs diff --git a/src/Makefile.inc.in b/src/Makefile.inc.in index 19813c6834..8640da8d8b 100644 --- a/src/Makefile.inc.in +++ b/src/Makefile.inc.in @@ -32,28 +32,16 @@ THREADS = $(shell echo $(threads) | tr a-z- A-Z_) HAVE_POSIX_THREADS=@HAVE_POSIX_THREADS@ HAVE_RT_PREEMPT_THREADS=@HAVE_RT_PREEMPT_THREADS@ HAVE_XENOMAI_THREADS=@HAVE_XENOMAI_THREADS@ -#HAVE_XENOMAI_KERNEL_THREADS=@HAVE_XENOMAI_KERNEL_THREADS@ -#HAVE_RTAI_KERNEL_THREADS=@HAVE_RTAI_KERNEL_THREADS@ -# If any kthreads flavor is to be built, set HAVE_KERNEL_THREADS=yes -#ifneq ($(filter-out no,\ -# $(HAVE_XENOMAI_KERNEL_THREADS) $(HAVE_RTAI_KERNEL_THREADS)),) -#HAVE_KERNEL_THREADS=yes -#else HAVE_KERNEL_THREADS=no -#endif POSIX_THREADS_FLAVOR_ID=@POSIX_THREADS_FLAVOR_ID@ RT_PREEMPT_THREADS_FLAVOR_ID=@RT_PREEMPT_THREADS_FLAVOR_ID@ XENOMAI_THREADS_FLAVOR_ID=@XENOMAI_THREADS_FLAVOR_ID@ -#RTAI_KERNEL_THREADS_FLAVOR_ID=@RTAI_KERNEL_THREADS_FLAVOR_ID@ -#XENOMAI_KERNEL_THREADS_FLAVOR_ID=@XENOMAI_KERNEL_THREADS_FLAVOR_ID@ THREAD_FLAVOR_ID=$($(THREADS)_THREADS_FLAVOR_ID) POSIX_THREADS_BUILD_SYS = user-dso RT_PREEMPT_THREADS_BUILD_SYS = user-dso XENOMAI_THREADS_BUILD_SYS = user-dso -#XENOMAI_KERNEL_THREADS_BUILD_SYS = kbuild -#RTAI_KERNEL_THREADS_BUILD_SYS = kbuild BUILD_SYS = $($(THREADS)_THREADS_BUILD_SYS) # Directories @@ -66,11 +54,7 @@ EMC2_HOME=@EMC2_HOME@ LIB_DIR=@EMC2_HOME@/lib # flavor (and kver) subdirectories -#ifeq ($(BUILD_SYS),user-dso) RTDIR_EXT=$(threads) -#else -#RTDIR_EXT=$(threads)/$(KERNEL_VERS) -#endif #used for install stuff #but have them here as reference @@ -124,56 +108,27 @@ RUN_IN_PLACE = @RUN_IN_PLACE@ POSIX_THREADS_LDFLAGS = @POSIX_THREADS_LDFLAGS@ RT_PREEMPT_THREADS_LDFLAGS = @RT_PREEMPT_THREADS_LDFLAGS@ XENOMAI_THREADS_LDFLAGS = @XENOMAI_THREADS_LDFLAGS@ -#XENOMAI_KERNEL_THREADS_LDFLAGS = @XENOMAI_KERNEL_THREADS_LDFLAGS@ -#RTAI_KERNEL_THREADS_LDFLAGS = @RTAI_KERNEL_THREADS_LDFLAGS@ -#RT_LDFLAGS = $($(THREADS)_THREADS_LDFLAGS) XENOMAI_THREADS_RTS=@XENOMAI_THREADS_RTS@ -#XENOMAI_KERNEL_THREADS_RTS=@XENOMAI_KERNEL_THREADS_RTS@ -#RTAI_KERNEL_THREADS_RTS=@RTAI_KERNEL_THREADS_RTS@ - -#XENOMAI_KERNEL_THREADS_KERNEL_DIRS = @XENOMAI_KERNEL_THREADS_KERNEL_DIRS@ -#RTAI_KERNEL_THREADS_KERNEL_DIRS = @RTAI_KERNEL_THREADS_KERNEL_DIRS@ -#SHMDRV_KERNEL_DIRS = @SHMDRV_KERNEL_DIRS@ -#KERNEL_DIRS = $($(THREADS)_THREADS_KERNEL_DIRS) - - -#XENOMAI_KERNEL_THREADS_EXTRA_SYMBOLS = @XENOMAI_KERNEL_THREADS_EXTRA_SYMBOLS@ -#RTAI_KERNEL_THREADS_EXTRA_SYMBOLS = @RTAI_KERNEL_THREADS_EXTRA_SYMBOLS@ -#KBUILD_EXTRA_SYMBOLS = $($(THREADS)_THREADS_EXTRA_SYMBOLS) \ -# $(EMC2_RTLIB_DIR)/Module.symvers POSIX_THREADS_RTFLAGS = @POSIX_THREADS_RTFLAGS@ RT_PREEMPT_THREADS_RTFLAGS = @RT_PREEMPT_THREADS_RTFLAGS@ XENOMAI_THREADS_RTFLAGS = @XENOMAI_THREADS_RTFLAGS@ -#XENOMAI_KERNEL_THREADS_RTFLAGS = @XENOMAI_KERNEL_THREADS_RTFLAGS@ -#RTAI_KERNEL_THREADS_RTFLAGS = @RTAI_KERNEL_THREADS_RTFLAGS@ THREADS_RTFLAGS = $($(THREADS)_THREADS_RTFLAGS) \ -DTHREAD_FLAVOR_ID=$(THREAD_FLAVOR_ID) RTFLAGS := -I. $(THREADS_RTFLAGS) \ -DRTAPI -D_GNU_SOURCE -D_FORTIFY_SOURCE=0 -#XENOMAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS = \ -# @XENOMAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS@ -#RTAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS = @RTAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS@ -#KERNEL_MATH_CFLAGS = $($(THREADS)_THREADS_KERNEL_MATH_CFLAGS) - ULFLAGS = -D_GNU_SOURCE -DLOCALE_DIR=\"$(localedir)\" -DPACKAGE=\"$(package)\" POSIX_THREADS_BUILD_SYS = @POSIX_THREADS_BUILD_SYS@ RT_PREEMPT_THREADS_BUILD_SYS = @RT_PREEMPT_THREADS_BUILD_SYS@ XENOMAI_THREADS_BUILD_SYS = @XENOMAI_THREADS_BUILD_SYS@ -#XENOMAI_KERNEL_THREADS_BUILD_SYS = @XENOMAI_KERNEL_THREADS_BUILD_SYS@ -#RTAI_KERNEL_THREADS_BUILD_SYS = @RTAI_KERNEL_THREADS_BUILD_SYS@ BUILD_SYS = $($(THREADS)_THREADS_BUILD_SYS) # module extension, used when insmod'ing -#ifeq ($(BUILD_SYS),user-dso) MODULE_EXT = .so -#else -#MODULE_EXT = .ko -#endif CC = @CC@ CC_FOR_BUILD = @CC_FOR_BUILD@ OBJCOPY = @OBJCOPY@ @@ -186,8 +141,6 @@ HIDRAW_H_USABLE = @HIDRAW_H_USABLE@ POSIX_THREADS_SOURCE = @POSIX_THREADS_SOURCE@ RT_PREEMPT_THREADS_SOURCE = @RT_PREEMPT_THREADS_SOURCE@ XENOMAI_THREADS_SOURCE = @XENOMAI_THREADS_SOURCE@ -#XENOMAI_KERNEL_THREADS_SOURCE = @XENOMAI_KERNEL_THREADS_SOURCE@ -#RTAI_KERNEL_THREADS_SOURCE = @RTAI_KERNEL_THREADS_SOURCE@ THREADS_SOURCE = $($(THREADS)_THREADS_SOURCE) BUILD_DRIVERS = @BUILD_DRIVERS@ @@ -203,11 +156,7 @@ TARGET_PLATFORM_H3 = @TARGET_PLATFORM_H3@ HARDY_AMD64_WORKAROUND=@HARDY_AMD64_WORKAROUND@ PRECISE_MULTILIB_BUG=@PRECISE_MULTILIB_BUG@ -#ifeq ($(BUILD_SYS),user-dso) USERMODE_PCI=@USERMODE_PCI@ -#else -#USERMODE_PCI=no -#endif # example programs BUILD_EXAMPLES=@BUILD_EXAMPLES@ diff --git a/src/Makefile.modinc.in b/src/Makefile.modinc.in index d928d5d1f6..64442f6055 100644 --- a/src/Makefile.modinc.in +++ b/src/Makefile.modinc.in @@ -88,24 +88,6 @@ RTLIBDIR := $(EMC2_RTLIB_DIR) LIBDIR := $(libdir) endif -#ifeq ($(BUILD_SYS),kbuild) -#EXTRA_CFLAGS += $(call cc-option,-Wframe-larger-than=2560) -# -#modules: -# $(MAKE) \ -# -C $(KERNELDIR) \ -# KBUILD_EXTRA_SYMBOLS="$(KBUILD_EXTRA_SYMBOLS)" \ -# SUBDIRS=`pwd` \ -# CC="$(CC)" KBUILD_VERBOSE=$(BUILD_VERBOSE) modules -# -#clean: -# rm *.ko *.mod.c *.o -# -#install: -# cp $(patsubst %.o,%.ko,$(obj-m)) $(DESTDIR)$(RTLIBDIR)/ -#endif - -#ifeq ($(BUILD_SYS),user-dso) EXTRA_CFLAGS += -fPIC -g -funwind-tables allmodules = $(patsubst %.o,%.so,$(obj-m)) modules: $(allmodules) @@ -132,4 +114,3 @@ $(foreach mod,$(patsubst %.o,%,$(obj-m)),\ $(Q)(echo '{ global : '; tr -s '\0' <$*.exported | xargs -r0 printf '%s;\n' | grep .; echo 'local : * ; };') > $*.ver $(Q)$(CC) -shared -Bsymbolic $(LDFLAGS) -Wl,--version-script,$*.ver -o $@ $^ $(EXTRA_LDFLAGS) $(Q)ld -d -r -o $*.tmp $^ -#endif From d5a6d4fbd5d02d60132840409f3e0c0af9676a3f Mon Sep 17 00:00:00 2001 From: Mick Date: Wed, 19 Sep 2018 16:26:20 +0100 Subject: [PATCH 275/516] Further tidying of Makefiles --- src/Makefile | 96 +++++++++++++++++++++++++-------------------- src/Makefile.inc.in | 4 +- 2 files changed, 55 insertions(+), 45 deletions(-) diff --git a/src/Makefile b/src/Makefile index d294198eca..e9fbf5c0fc 100755 --- a/src/Makefile +++ b/src/Makefile @@ -78,12 +78,7 @@ BUILD_ALL_FLAVORS = no BUILD_THREAD_MODULES = yes endif # $(threads) -# if KERNELRELEASE is non-empty, we're in kbuild -ifeq ($(KERNELRELEASE),) BUILD_KBUILD = no -else -BUILD_KBUILD = yes -endif # extract the version from the kernel source version.h ifneq ($(KERNELDIR),) @@ -115,6 +110,8 @@ endif # default target: put before everything else default: +########################################################################################### + ifeq ($(BUILD_ALL_FLAVORS),yes) # Top-level modules target # @@ -156,6 +153,7 @@ endif endif # BUILD_ALL_FLAVORS +############################################################################################# OBJDIR := objects/$(RTDIR_EXT) DEPDIR := depends/$(RTDIR_EXT) @@ -172,6 +170,8 @@ cc-option = $(shell \ echo "$(2)"; \ fi ;) +############################################################################################# + ifeq ($(KERNELRELEASE),) # When KERNELRELEASE is not defined, this is the userspace build. # The "modules" target is the gateway to the kernel module build. @@ -747,15 +747,15 @@ endif # # (don't build when 'BUILD_ALL_FLAVORS' or 'BUILD_THREADS_MODULES' are set; # these are intermediate make runs) -ifeq ($(BUILD_SYS)+$(BUILD_THREAD_MODULES),kbuild+yes) -modules: $(OBJDIR)/.separate-kbuild-artifacts-hack.stamp - mkdir -p $(RTLIBDIR) - $(PYTHON) modsilent.py $(MAKE) \ - -C $(KERNELDIR) \ - SUBDIRS=$(BASEPWD)/$(OBJDIR) \ - CC="$(CC)" KBUILD_VERBOSE=$(BUILD_VERBOSE) modules - cp $(OBJDIR)/Module.symvers $(OBJDIR)/*$(MODULE_EXT) $(RTLIBDIR) -endif # BUILD_SYS == 'kbuild' +#ifeq ($(BUILD_SYS)+$(BUILD_THREAD_MODULES),kbuild+yes) +#modules: $(OBJDIR)/.separate-kbuild-artifacts-hack.stamp +#mkdir -p $(RTLIBDIR) +# $(PYTHON) modsilent.py $(MAKE) \ +# -C $(KERNELDIR) \ +# SUBDIRS=$(BASEPWD)/$(OBJDIR) \ +# CC="$(CC)" KBUILD_VERBOSE=$(BUILD_VERBOSE) modules +# cp $(OBJDIR)/Module.symvers $(OBJDIR)/*$(MODULE_EXT) $(RTLIBDIR) +#endif # BUILD_SYS == 'kbuild' # It looks almost impossible to coerce kbuild into putting build # artifacts outside the source tree. The universal build needs to @@ -773,10 +773,6 @@ $(OBJDIR)/.separate-kbuild-artifacts-hack.stamp: # never follow symbolic links cp -rlfd $(MODULE_SOURCE_DIRS) $(OBJDIR) cp -lf $(MODULE_SOURCES) $(OBJDIR) -ifeq ($(BUILD_SYS),kbuild) - # kbuild needs a full copy of this tree with - cp -rlf halcomp-srcs $(OBJDIR) -endif ln -sf $(BASEPWD)/../bin $(OBJDIR)/.. ln -sf $(BASEPWD)/../scripts $(OBJDIR)/.. touch $@ @@ -869,7 +865,8 @@ MENUS = ../share/menus/CNC.menu \ install-menus install-menu: $(MENUS) mkdir -p $(HOME)/.config/menus/applications-merged cp $< $(HOME)/.config/menus/applications-merged -else + +else ## ifeq($(RUN_IN_PLACE),yes) DOCS_HELP=$(call GLOB,../help/*) NC_FILES=$(filter-out %/butterfly.ngc,$(call GLOB,../nc_files/*)) @@ -1114,7 +1111,7 @@ endif done; \ fi; \ done -endif # ! RUN_IN_PLACE +endif # RUN_IN_PLACE CONF=../configs COMMON=$(CONF)/common @@ -1171,26 +1168,28 @@ $(call CONFILES,core_sim9.hal): %/core_sim9.hal: ../configs/common/core_sim9.hal endif # userspace -ifneq ($(KERNELRELEASE),) -# KERNELRELEASE is non-empty, therefore we are building modules using -# the "kbuild" system. +################################################################################################################# + +#ifneq ($(KERNELRELEASE),) +## KERNELRELEASE is non-empty, therefore we are building modules using +## the "kbuild" system. +## +#INCLUDE_PREFIX = $(BASEPWD) +# # -INCLUDE_PREFIX = $(BASEPWD) - - -# When the Submakefile is included in the kbuild Makefile, the -# module's obj-m and foo-objs definitions may remain in the Submakefile -include $(BASEPWD)/hal/lib/Submakefile -include $(BASEPWD)/machinetalk/Submakefile -include $(BASEPWD)/hal/i_components/Submakefile -include $(BASEPWD)/hal/components/Submakefile -include $(BASEPWD)/hal/vtable-example/Submakefile -include $(BASEPWD)/hal/userfunct-example/Submakefile -include $(BASEPWD)/machinetalk/msgcomponents/Submakefile -include $(BASEPWD)/rtapi/Submakefile -include $(BASEPWD)/rtapi/shmdrv/Submakefile -include $(BASEPWD)/rtapi/rtapi_math/Submakefile -endif # KERNELRELEASE non-empty +## When the Submakefile is included in the kbuild Makefile, the +## module's obj-m and foo-objs definitions may remain in the Submakefile +#include $(BASEPWD)/hal/lib/Submakefile +#include $(BASEPWD)/machinetalk/Submakefile +#include $(BASEPWD)/hal/i_components/Submakefile +#include $(BASEPWD)/hal/components/Submakefile +#include $(BASEPWD)/hal/vtable-example/Submakefile +#include $(BASEPWD)/hal/userfunct-example/Submakefile +#include $(BASEPWD)/machinetalk/msgcomponents/Submakefile +#include $(BASEPWD)/rtapi/Submakefile +#include $(BASEPWD)/rtapi/shmdrv/Submakefile +#include $(BASEPWD)/rtapi/rtapi_math/Submakefile +#endif # KERNELRELEASE non-empty # $(BASEPWD) is used here, instead of relative paths, because that's # what kbuild seems to require @@ -1223,9 +1222,10 @@ EXTRA_CFLAGS = $(RTFLAGS) \ ifdef TARGET_PLATFORM_BEAGLEBONE EXTRA_CFLAGS += -I$(INCLUDE_PREFIX)/hal/support/pru endif -ifeq ($(BUILD_SYS),kbuild) -EXTRA_CFLAGS += $(call cc-option,-Wframe-larger-than=2560) $(call cc-option,-Wno-declaration-after-statement) -endif + +#ifeq ($(BUILD_SYS),kbuild) +#EXTRA_CFLAGS += $(call cc-option,-Wframe-larger-than=2560) $(call cc-option,-Wno-declaration-after-statement) +#endif @@ -1411,7 +1411,7 @@ endif endif # these won't compile as-is with userland threading - +###################################################### #ifneq ($(BUILD_SYS),user-dso) #obj-$(CONFIG_HAL_M5I20) += hal_m5i20.o #hal_m5i20-objs := hal/drivers/hal_m5i20.o $(MATHSTUB) @@ -1422,6 +1422,7 @@ endif #obj-$(CONFIG_HAL_GM) += hal_gm.o #hal_gm-objs := hal/drivers/hal_gm.o $(MATHSTUB) #endif +#################################################### # Gnu make 'expression' syntax is pathetic. What were these guys smoking? # turn on by default @@ -1623,6 +1624,7 @@ tp-objs := $(addprefix emc/tp/, \ TORTOBJS = $(foreach file,$($(patsubst %.o,%,$(1))-objs), $(OBJDIR)/$(file)) +####################################################################################################### # USER_DSO module building # (don't build when 'BUILD_ALL_FLAVORS' or 'BUILD_THREADS_MODULES' are set; @@ -1741,6 +1743,8 @@ $(sort $(CXXRTOBJS)) : $(OBJDIR)/%.o : %.cc $(DEPDIR)/%.d endif # end BUILD_SYS=user-dso +#################################################################################################################################################### + # # ------ not used anymore ------------- # ifeq ($(BUILD_SYS),normal) # modules: $(patsubst %,$(RTLIBDIR)/%,$(obj-m)) @@ -1764,6 +1768,8 @@ endif # end BUILD_SYS=user-dso # $(Q)ld -r -static -S $(LDFLAGS) -o $@ $^ $(EXTRALINK) # endif # end 'normal' +############################################################################################## + # build kernel RTAPI modules ifneq "$(filter normal user-dso,$(BUILD_SYS))" "" #$(RTLIBDIR)/instance$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(instance-objs)) @@ -1892,8 +1898,12 @@ $(shell echo 1>&2 Reading $(words $(READ_RTDEPS))/$(words $(RTDEPS)) realtime de -include $(READ_RTDEPS) $(shell echo 1>&2 Done reading realtime dependencies) endif + endif # build kernel RTAPI modules +############################################################################################### + + # Phony so that it is always rebuilt when requested, not because it # shouldn't exist as a file .PHONY: tags diff --git a/src/Makefile.inc.in b/src/Makefile.inc.in index 8640da8d8b..6f2cc5f8e6 100644 --- a/src/Makefile.inc.in +++ b/src/Makefile.inc.in @@ -53,7 +53,7 @@ exec_prefix=@exec_prefix@ EMC2_HOME=@EMC2_HOME@ LIB_DIR=@EMC2_HOME@/lib -# flavor (and kver) subdirectories +# flavor (and kver) subdirectories #TODO =modules here RTDIR_EXT=$(threads) #used for install stuff @@ -109,7 +109,7 @@ POSIX_THREADS_LDFLAGS = @POSIX_THREADS_LDFLAGS@ RT_PREEMPT_THREADS_LDFLAGS = @RT_PREEMPT_THREADS_LDFLAGS@ XENOMAI_THREADS_LDFLAGS = @XENOMAI_THREADS_LDFLAGS@ -XENOMAI_THREADS_RTS=@XENOMAI_THREADS_RTS@ +XENOMAI_THREADS_RTS=@XENOMAI_THREADS_RTS@ ## ? POSIX_THREADS_RTFLAGS = @POSIX_THREADS_RTFLAGS@ RT_PREEMPT_THREADS_RTFLAGS = @RT_PREEMPT_THREADS_RTFLAGS@ From f19fdabb306d502754eb365eedeb6d7bbcfae511 Mon Sep 17 00:00:00 2001 From: Mick Date: Wed, 19 Sep 2018 17:15:45 +0100 Subject: [PATCH 276/516] Remove kernel threads stuff from scripts/check-system-configuration.sh --- scripts/check-system-configuration.sh | 184 ++++++++++---------------- 1 file changed, 69 insertions(+), 115 deletions(-) diff --git a/scripts/check-system-configuration.sh b/scripts/check-system-configuration.sh index a60e15f9c8..1bdb4fb547 100755 --- a/scripts/check-system-configuration.sh +++ b/scripts/check-system-configuration.sh @@ -15,7 +15,7 @@ get-conf-files() { conf_files="$*" local conflist="" for i in $conf_files; do - conflist+=" $(readlink -e $i)" + conflist+=" $(readlink -e $i)" done echo $conflist } @@ -28,45 +28,45 @@ check-rsyslog() { local nologfile=false if test ! -f $logfile then - echo "Warning: Logfile '$logfile' does not exist." - echo - echo " rsyslogd does not create non-existent log files; be" - echo " sure the (possibly empty) logfile exists and" - echo " restart rsyslogd" - echo - echo " Hint:" - echo " $ sudo touch /var/log/linuxcnc.log" - echo " $ sudo service rsyslog restart" - echo - echo " Gurus: If you intentionally log to another file," - echo " please be aware of where Machinekit logs go for" - echo " debugging purposes" - echo - res=1 - nologfile=true + echo "Warning: Logfile '$logfile' does not exist." + echo + echo " rsyslogd does not create non-existent log files; be" + echo " sure the (possibly empty) logfile exists and" + echo " restart rsyslogd" + echo + echo " Hint:" + echo " $ sudo touch /var/log/linuxcnc.log" + echo " $ sudo service rsyslog restart" + echo + echo " Gurus: If you intentionally log to another file," + echo " please be aware of where Machinekit logs go for" + echo " debugging purposes" + echo + res=1 + nologfile=true fi if test -z "$logconfigs"; then - echo "Warning: No rsyslog.conf found; system log daemon not rsyslogd?" - echo - echo " Please check your syslog configuration for" - echo " rate limiting; an example for rsyslogd can be found in" - echo " src/rtapi/rsyslogd-linuxcnc.conf" - echo + echo "Warning: No rsyslog.conf found; system log daemon not rsyslogd?" + echo + echo " Please check your syslog configuration for" + echo " rate limiting; an example for rsyslogd can be found in" + echo " src/rtapi/rsyslogd-linuxcnc.conf" + echo elif ! grep -q SystemLogRateLimitBurst $logconfigs; then - res=1 - echo "Warning: No rate limit in rsyslogd is set." - echo - echo " The 'rsyslogd' daemon drops logs when incoming at" - echo " higher than the rate configured by" - echo " 'SystemLogRateLimitBurst'. The default rate is lower" - echo " than Machinekit requires when running in debug mode." - echo - echo " Hint:" - echo " $ sudo cp rtapi/rsyslogd-linuxcnc.conf" \ - "/etc/rsyslog.d/linuxcnc.conf" - echo " $ sudo service rsyslog restart" - echo + res=1 + echo "Warning: No rate limit in rsyslogd is set." + echo + echo " The 'rsyslogd' daemon drops logs when incoming at" + echo " higher than the rate configured by" + echo " 'SystemLogRateLimitBurst'. The default rate is lower" + echo " than Machinekit requires when running in debug mode." + echo + echo " Hint:" + echo " $ sudo cp rtapi/rsyslogd-linuxcnc.conf" \ + "/etc/rsyslog.d/linuxcnc.conf" + echo " $ sudo service rsyslog restart" + echo fi test $res -ne 0 && return 1 @@ -77,15 +77,15 @@ check-rsyslog() { if grep -q $tag $logfile >/dev/null 2>/dev/null then # logging works - return 0 + return 0 else - echo "Warning: Logging appears to be not working" - echo - echo " Found rsyslogd configuration and $logfile" - echo " exists, but a test did not appear in the log." - echo " Please investigate." - echo - return 1 + echo "Warning: Logging appears to be not working" + echo + echo " Found rsyslogd configuration and $logfile" + echo " exists, but a test did not appear in the log." + echo " Please investigate." + echo + return 1 fi } @@ -96,7 +96,7 @@ check-rsyslog() { # check-ulimits() { local ulimit_configs="$(get-conf-files \ - /etc/security/limits.conf /etc/security/limits.d/*.conf)" + /etc/security/limits.conf /etc/security/limits.d/*.conf)" # a guess at what a reasonable memlock value should be local reasonable_memlock=32767 @@ -110,91 +110,45 @@ check-ulimits() { local last_ulimit_config local memlock_found=false for f in $ulimit_configs; do - mtmp=$(awk '/^\*[ \t]+(-|soft)[ \t]+memlock/ {m=$4} END {print m}' $f) - if test -n "$mtmp"; then - if test $memlock != 0; then - echo "Warning: Multiple configurations for 'memlock' setting" - echo - echo " Please check configuration in these files:" - echo " $last_ulimit_config" - echo " $f" - echo - return 1 - fi - memlock=$mtmp - memlock_found=true - last_ulimit_config=$f - fi - done - if ! $memlock_found; then - echo "Warning: no configuration for 'memlock' found" + mtmp=$(awk '/^\*[ \t]+(-|soft)[ \t]+memlock/ {m=$4} END {print m}' $f) + if test -n "$mtmp"; then + if test $memlock != 0; then + echo "Warning: Multiple configurations for 'memlock' setting" echo - echo " Hint:" - echo " $ sudo cp rtapi/shmdrv/limits.d-machinekit.conf /etc/security/limits.d/machinekit.conf" - return 1 - fi - - # Next, check the 'memlock' value looks sane - if test $memlock != unlimited && test $memlock -lt $reasonable_memlock; then - echo "Warning: Config 'memlock' value $memlock too small" - echo - echo " Value for 'memlock' in file $last_ulimit_config" - echo " should be raised to $reasonable_memlock or greater" + echo " Please check configuration in these files:" + echo " $last_ulimit_config" + echo " $f" echo return 1 + fi + memlock=$mtmp + memlock_found=true + last_ulimit_config=$f fi -} - - -# -# Check shmdrv udev configuration -# -# The shmdrv converged shared memory driver for kthreads flavors must -# be accessible. Look for a 'shmdrv.rules' file. -check-shmdrv() { - local udev_conf=/etc/udev/rules.d/50-shmdrv.rules - local udev_configs="$(get-conf-files /etc/udev/rules.d/*.rules)" - - # If $udev_conf exists, assume the contents are correct - if test -f $udev_conf; then - return 0 - fi - - # Otherwise, assume any KERNEL=="shmdrv" setting is correct - for f in $udev_configs; do - if grep -q 'KERNEL=="shmdrv"' $f; then - return 0 - fi done - - # If we're here, we found no sign of udev configuration. - echo "Warning: No udev configuration for shmdrv was found." - echo - echo " The user running LinuxCNC must have write access to" - echo " /dev/shmdrv when running kernel threads, which may" - echo " be configured in /etc/udev/rules.d." + if ! $memlock_found; then + echo "Warning: no configuration for 'memlock' found" echo echo " Hint:" - echo " $ sudo cp rtapi/shmdrv/shmdrv.rules $udev_conf" - echo " $ sudo udevadm trigger" + echo " $ sudo cp rtapi/shmdrv/limits.d-machinekit.conf /etc/security/limits.d/machinekit.conf" + return 1 + fi + + # Next, check the 'memlock' value looks sane + if test $memlock != unlimited && test $memlock -lt $reasonable_memlock; then + echo "Warning: Config 'memlock' value $memlock too small" echo + echo " Value for 'memlock' in file $last_ulimit_config" + echo " should be raised to $reasonable_memlock or greater" + echo "" return 1 + fi } HAVE_KERNEL_THREADS=false -while getopts k opt; do - case "$opt" in - k) HAVE_KERNEL_THREADS=true ;; - *) echo "Usage: $0 [ -k ]" >&2; exit 1 ;; - esac -done - res=0 check-rsyslog || res=1 check-ulimits || res=1 -if $HAVE_KERNEL_THREADS; then - check-shmdrv || res=1 -fi exit $res From 92b0b885b8747e31b27d3109fc9413d20301a9e1 Mon Sep 17 00:00:00 2001 From: Mick Date: Sun, 30 Sep 2018 15:09:14 +0100 Subject: [PATCH 277/516] Change hal_spi driver to test for Rpi version Driver was written when only Rpi 1 & 2 existed RPi 3B has a different base address from which everything thereafter is offset from Test version and set base address. Signed-off-by: Mick --- src/hal/drivers/hal_spi.c | 48 +++++++++++++++++++++++++++++++++++---- src/hal/drivers/hal_spi.h | 3 ++- 2 files changed, 46 insertions(+), 5 deletions(-) diff --git a/src/hal/drivers/hal_spi.c b/src/hal/drivers/hal_spi.c index 5541a63715..6aa8866637 100644 --- a/src/hal/drivers/hal_spi.c +++ b/src/hal/drivers/hal_spi.c @@ -29,6 +29,8 @@ #include "hal_spi.h" +#include "cpuinfo.c" + #if !defined(BUILD_SYS_USER_DSO) #error "This driver is for usermode threads only" #endif @@ -93,10 +95,28 @@ static void reset_board(); static int map_gpio(); static void setup_gpio(); static void restore_gpio(); - -int rtapi_app_main(void) { - char name[HAL_NAME_LEN + 1]; - int n, retval; +static int number_of_cores(); + +int rtapi_app_main(void) +{ +char name[HAL_NAME_LEN + 1]; +int n, retval, ncores, rev; + + // check what the board is + // RPi v3 > have different base address + ncores = number_of_cores(); + if ((rev = get_rpi_revision()) < 0) + { + rtapi_print_msg(RTAPI_MSG_ERR, + "unrecognized Raspberry revision, see /proc/cpuinfo\n"); + return -1; + } + + if (rev <= 2 || ncores <= 2) + BCM2835_PERI_BASE = 0x2000000; + else + BCM2835_PERI_BASE = 0x3F000000; + /* initialise driver */ comp_id = hal_init(modname); @@ -115,6 +135,7 @@ int rtapi_app_main(void) { return -1; } + /* configure board */ retval = map_gpio(); if (retval < 0) { @@ -601,3 +622,22 @@ void restore_gpio() { x &= ~(0b111 << (0*3) | 0b111 << (1*3)); BCM2835_GPFSEL1 = x; } + +int number_of_cores() +{ +char str[256]; +int procCount = 0; +FILE *fp; + + if( (fp = fopen("/proc/cpuinfo", "r")) ) + { + while(fgets(str, sizeof str, fp)) + if( !memcmp(str, "processor", 9) ) procCount++; + } + if ( !procCount ) + { + rtapi_print_msg(RTAPI_MSG_ERR,"HAL_GPIO: Unable to get proc count. Defaulting to 2"); + procCount = 2; + } + return procCount; +} \ No newline at end of file diff --git a/src/hal/drivers/hal_spi.h b/src/hal/drivers/hal_spi.h index 87e23a8db4..52fef11d1a 100644 --- a/src/hal/drivers/hal_spi.h +++ b/src/hal/drivers/hal_spi.h @@ -38,7 +38,8 @@ /* Broadcom defines */ -#define BCM2835_PERI_BASE 0x20000000 +//#define BCM2835_PERI_BASE 0x20000000 +unsigned int BCM2835_PERI_BASE; #define BCM2835_GPIO_BASE (BCM2835_PERI_BASE + 0x200000) /* GPIO controller */ #define BCM2835_SPI_BASE (BCM2835_PERI_BASE + 0x204000) /* SPI controller */ From 0ea9f03ea298998525e10e72410f77a77b9cd84c Mon Sep 17 00:00:00 2001 From: Mick Date: Sat, 6 Oct 2018 11:33:51 +0100 Subject: [PATCH 278/516] Greatly simplify FOR_ALL_FLAVORS build logic --- src/Makefile | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/src/Makefile b/src/Makefile index e9fbf5c0fc..15f5129435 100755 --- a/src/Makefile +++ b/src/Makefile @@ -121,22 +121,14 @@ ifeq ($(BUILD_ALL_FLAVORS),yes) # # Following tradition, this incarnation of the modules recipe is # placed far away from all others. -FLAVORUP = $(shell echo $(1) | tr a-z- A-Z_) -FLAVORVAR = $($(call FLAVORUP,$(1))_THREADS_$(2)) + modules: userspace - @$(foreach f,$(BUILD_THREAD_FLAVORS),\ - echo "Making modules for flavor $(f)"; \ - $(if $(findstring kbuild,$(call FLAVORVAR,$(f),BUILD_SYS)),\ - $(foreach kd,$(call FLAVORVAR,$(f),KERNEL_DIRS),\ - echo " kernel source dir $(kd)"; \ - $(MAKE) modules threads=$(f) KERNELDIR=$(kd);\ - ),\ - $(MAKE) modules threads=$(f);\ - )\ - ) + for f in $(BUILD_THREAD_FLAVORS); do \ + $(MAKE) modules threads=$$f; \ + done; \ ifeq ($(RUN_IN_PLACE)+$(BUILD_DRIVERS),yes+yes) - for f in $(filter-out %-kernel,$(BUILD_THREAD_FLAVORS)); do \ + for f in $(BUILD_THREAD_FLAVORS); do \ test -f ../libexec/rtapi_app_$$f -a \ \( 0`stat -c %u ../libexec/rtapi_app_$$f 2>/dev/null` \ -ne 0 -o ! -u ../libexec/rtapi_app_$$f \) \ From d53ca0661d3acc1eaa3e1949037eaa12d2e48c50 Mon Sep 17 00:00:00 2001 From: Mick Date: Sat, 6 Oct 2018 11:52:33 +0100 Subject: [PATCH 279/516] Clean commented out sections after testing --- src/Makefile | 64 ---------------------------------------------------- 1 file changed, 64 deletions(-) diff --git a/src/Makefile b/src/Makefile index 15f5129435..be6b551b5b 100755 --- a/src/Makefile +++ b/src/Makefile @@ -739,15 +739,6 @@ endif # # (don't build when 'BUILD_ALL_FLAVORS' or 'BUILD_THREADS_MODULES' are set; # these are intermediate make runs) -#ifeq ($(BUILD_SYS)+$(BUILD_THREAD_MODULES),kbuild+yes) -#modules: $(OBJDIR)/.separate-kbuild-artifacts-hack.stamp -#mkdir -p $(RTLIBDIR) -# $(PYTHON) modsilent.py $(MAKE) \ -# -C $(KERNELDIR) \ -# SUBDIRS=$(BASEPWD)/$(OBJDIR) \ -# CC="$(CC)" KBUILD_VERBOSE=$(BUILD_VERBOSE) modules -# cp $(OBJDIR)/Module.symvers $(OBJDIR)/*$(MODULE_EXT) $(RTLIBDIR) -#endif # BUILD_SYS == 'kbuild' # It looks almost impossible to coerce kbuild into putting build # artifacts outside the source tree. The universal build needs to @@ -1162,30 +1153,6 @@ endif # userspace ################################################################################################################# -#ifneq ($(KERNELRELEASE),) -## KERNELRELEASE is non-empty, therefore we are building modules using -## the "kbuild" system. -## -#INCLUDE_PREFIX = $(BASEPWD) -# -# -## When the Submakefile is included in the kbuild Makefile, the -## module's obj-m and foo-objs definitions may remain in the Submakefile -#include $(BASEPWD)/hal/lib/Submakefile -#include $(BASEPWD)/machinetalk/Submakefile -#include $(BASEPWD)/hal/i_components/Submakefile -#include $(BASEPWD)/hal/components/Submakefile -#include $(BASEPWD)/hal/vtable-example/Submakefile -#include $(BASEPWD)/hal/userfunct-example/Submakefile -#include $(BASEPWD)/machinetalk/msgcomponents/Submakefile -#include $(BASEPWD)/rtapi/Submakefile -#include $(BASEPWD)/rtapi/shmdrv/Submakefile -#include $(BASEPWD)/rtapi/rtapi_math/Submakefile -#endif # KERNELRELEASE non-empty - -# $(BASEPWD) is used here, instead of relative paths, because that's -# what kbuild seems to require - EXTRA_CFLAGS = $(RTFLAGS) \ $(ARCH_CFLAGS) \ -D__MODULE__ \ @@ -1215,12 +1182,6 @@ ifdef TARGET_PLATFORM_BEAGLEBONE EXTRA_CFLAGS += -I$(INCLUDE_PREFIX)/hal/support/pru endif -#ifeq ($(BUILD_SYS),kbuild) -#EXTRA_CFLAGS += $(call cc-option,-Wframe-larger-than=2560) $(call cc-option,-Wno-declaration-after-statement) -#endif - - - # For each module, there's an addition to obj-m or obj-$(CONFIG_foo) # plus a definition of foo-objs, which contains the full path to the # object file(s) that the module contains. Unfortunately, this setup pollutes @@ -1248,20 +1209,6 @@ endif # rtapi/rtapi_time.o \ # rtapi/rtapi_io.o \ # rtapi/$(THREADS_SOURCE).o -# # Kernel threads need rtapi_module.c -# ifeq ($(BUILD_SYS),kbuild) -# rtapi-objs += rtapi/rtapi_module.o -# endif -# # User threads need rtapi_pci.c -# ifeq ($(BUILD_SYS),user-dso) -# rtapi-objs += rtapi/rtapi_pci.o -# rtapi-objs += rtapi/shmdrv/shmdrvapi.o -# # and rtapi_app_main/exit stubs -# rtapi-objs += rtapi/rtapi_main.o -# # and autodetect/compat checks -# rtapi-objs += rtapi/rtapi_compat.o -# endif - # Subdirectory: rtapi/examples (unneeded?) @@ -1793,32 +1740,22 @@ $(RTLIBDIR)/sampler$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(sampler-objs)) $(RTLIBDIR)/hal_parport$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_parport-objs)) $(RTLIBDIR)/probe_parport$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(probe_parport-objs)) - -#ifeq ($(BUILD_SYS),user-dso) -$(RTLIBDIR)/probe_parport$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(probe_parport-objs)) -#endif - ifeq ($(USERMODE_PCI),yes) $(RTLIBDIR)/hostmot2$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hostmot2-objs)) $(RTLIBDIR)/hm2_7i43$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_7i43-objs)) $(RTLIBDIR)/hm2_7i90$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_7i90-objs)) $(RTLIBDIR)/hm2_pci$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_pci-objs)) $(RTLIBDIR)/setsserial$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(setsserial-objs)) -#ifeq ($(BUILD_SYS),user-dso) $(RTLIBDIR)/hm2_eth$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_eth-objs)) -#endif $(RTLIBDIR)/hm2_test$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_test-objs)) endif ifdef TARGET_PLATFORM_SOCFPGA -#ifeq ($(BUILD_SYS),user-dso) $(RTLIBDIR)/hostmot2$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hostmot2-objs)) $(RTLIBDIR)/hm2_soc_ol$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_soc_ol-objs)) -#endif endif ifdef TARGET_PLATFORM_BEAGLEBONE -#ifeq ($(BUILD_SYS),user-dso) $(RTLIBDIR)/hal_pru$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_pru-objs)) $(RTLIBDIR)/hal_pru_generic$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_pru_generic-objs)) $(RTLIBDIR)/hal_prudebug$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_prudebug-objs)) @@ -1826,7 +1763,6 @@ $(RTLIBDIR)/hal_gpio$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_gpio-objs)) $(RTLIBDIR)/hal_bb_gpio$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_bb_gpio-objs)) $(RTLIBDIR)/pepper$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(pepper-objs)) $(RTLIBDIR)/hal_arm335xQEP$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_arm335xQEP-objs)) -#endif endif ifdef TARGET_PLATFORM_H3 From d8a179bd7d3833e743eba138c121f365cd23fefc Mon Sep 17 00:00:00 2001 From: John Morris Date: Tue, 11 Sep 2018 14:59:39 +0800 Subject: [PATCH 280/516] machinetalk/support/unionread.c: silence compiler warning Compiling src/machinetalk/support/unionread.c machinetalk/support/unionread.c: In function 'print_container': machinetalk/support/unionread.c:60:34: warning: format '%llu' expects argument of type 'long long unsigned int', but argument 2 has type 'uint64_t {aka long unsigned int}' [-Wformat=] printf("submessage length=%llu\n", length); ^ --- src/machinetalk/support/unionread.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/machinetalk/support/unionread.c b/src/machinetalk/support/unionread.c index fed965caf7..79ad04a44d 100644 --- a/src/machinetalk/support/unionread.c +++ b/src/machinetalk/support/unionread.c @@ -57,7 +57,7 @@ bool print_container(pb_istream_t *stream) if (!pb_decode_varint(stream, &length)) { printf("Parsing field#2 failed: %s\n", PB_GET_ERROR(stream)); } - printf("submessage length=%llu\n", length); + printf("submessage length=%lu\n", length); printf("submessage: %s NML; %s Motion\n", is_NML_container(tag) ? "is" : "not", From 18accee5142e8cabca8c26be3ad68b33701a3ba2 Mon Sep 17 00:00:00 2001 From: John Morris Date: Tue, 11 Sep 2018 15:04:45 +0800 Subject: [PATCH 281/516] libnml/posemath/_posemath.c: silence compiler warnings Compiling libnml/posemath/_posemath.c libnml/posemath/_posemath.c: In function 'pmMatZyxConvert': libnml/posemath/_posemath.c:526:9: warning: implicit declaration of function 'fabs' [-Wimplicit-function-declaration] if (fabs(zyx->y - PM_PI_2) < ZYX_Y_FUZZ) { ^~~~ libnml/posemath/_posemath.c:526:9: warning: incompatible implicit declaration of built-in function 'fabs' libnml/posemath/_posemath.c:526:9: note: include '' or provide a declaration of 'fabs' libnml/posemath/_posemath.c:529:11: warning: implicit declaration of function 'atan2' [-Wimplicit-function-declaration] zyx->x = atan2(m->y.x, m->y.y); ^~~~~ libnml/posemath/_posemath.c:529:11: warning: incompatible implicit declaration of built-in function 'atan2' libnml/posemath/_posemath.c:529:11: note: include '' or provide a declaration of 'atan2' libnml/posemath/_posemath.c:533:12: warning: incompatible implicit declaration of built-in function 'atan2' zyx->x = -atan2(m->y.z, m->y.y); ^~~~~ libnml/posemath/_posemath.c:533:12: note: include '' or provide a declaration of 'atan2' libnml/posemath/_posemath.c: In function 'pmMatRpyConvert': libnml/posemath/_posemath.c:546:9: warning: incompatible implicit declaration of built-in function 'fabs' if (fabs(rpy->p - PM_PI_2) < RPY_P_FUZZ) { ^~~~ libnml/posemath/_posemath.c:546:9: note: include '' or provide a declaration of 'fabs' libnml/posemath/_posemath.c:547:11: warning: incompatible implicit declaration of built-in function 'atan2' rpy->r = atan2(m->y.x, m->y.y); ^~~~~ src/libnml/posemath/_posemath.c:547:11: note: include '' or provide a declaration of 'atan2' libnml/posemath/_posemath.c:551:12: warning: incompatible implicit declaration of built-in function 'atan2' rpy->r = -atan2(m->y.x, m->y.y); ^~~~~ libnml/posemath/_posemath.c:551:12: note: include '' or provide a declaration of 'atan2' --- src/libnml/posemath/_posemath.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/libnml/posemath/_posemath.c b/src/libnml/posemath/_posemath.c index 2ce03dfce2..69cd06c917 100644 --- a/src/libnml/posemath/_posemath.c +++ b/src/libnml/posemath/_posemath.c @@ -8,10 +8,10 @@ * Author: * License: LGPL Version 2 * System: Linux -* +* * Copyright (c) 2004 All rights reserved. * -* Last change: +* Last change: ********************************************************************/ #if defined(PM_PRINT_ERROR) && defined(rtai) @@ -432,7 +432,7 @@ int pmMatRotConvert(PmRotationMatrix const * const m, PmRotationVector * const r int pmMatQuatConvert(PmRotationMatrix const * const m, PmQuaternion * const q) { - /* + /* from Stephe's "space" book e1 = (c32 - c23) / 4*e4 e2 = (c13 - c31) / 4*e4 e3 = (c21 - c12) / 4*e4 e4 = sqrt(1 + c11 + c22 + c33) / 2 @@ -442,7 +442,7 @@ int pmMatQuatConvert(PmRotationMatrix const * const m, PmQuaternion * const q) 180* rotation then (0 x y z) = (0 -x -y -z). Thus some generallities can be used: 1) find which of e1, e2, or e3 has the largest magnitude and leave it pos. 2) if e1 is largest then if c21 < 0 then take the - negative for e2 if c31 < 0 then take the negative for e3 3) else if e2 + negative for e2 if c31 < 0 then take the negative for e3 3) else if e2 is largest then if c21 < 0 then take the negative for e1 if c32 < 0 then take the negative for e3 4) else if e3 is larget then if c31 < 0 then take the negative for e1 if c32 < 0 then take the negative for e2 @@ -523,14 +523,14 @@ int pmMatZyxConvert(PmRotationMatrix const * const m, PmEulerZyx * const zyx) { zyx->y = rtapi_atan2(-m->x.z, pmSqrt(pmSq(m->x.x) + pmSq(m->x.y))); - if (fabs(zyx->y - PM_PI_2) < ZYX_Y_FUZZ) { + if (rtapi_fabs(zyx->y - PM_PI_2) < ZYX_Y_FUZZ) { zyx->z = 0.0; zyx->y = PM_PI_2; /* force it */ - zyx->x = atan2(m->y.x, m->y.y); - } else if (fabs(zyx->y + PM_PI_2) < ZYX_Y_FUZZ) { + zyx->x = rtapi_atan2(m->y.x, m->y.y); + } else if (rtapi_fabs(zyx->y + PM_PI_2) < ZYX_Y_FUZZ) { zyx->z = 0.0; zyx->y = -PM_PI_2; /* force it */ - zyx->x = -atan2(m->y.z, m->y.y); + zyx->x = -rtapi_atan2(m->y.z, m->y.y); } else { zyx->z = rtapi_atan2(m->x.y, m->x.x); zyx->x = rtapi_atan2(m->y.z, m->z.z); @@ -543,12 +543,12 @@ int pmMatRpyConvert(PmRotationMatrix const * const m, PmRpy * const rpy) { rpy->p = rtapi_atan2(-m->x.z, pmSqrt(pmSq(m->x.x) + pmSq(m->x.y))); - if (fabs(rpy->p - PM_PI_2) < RPY_P_FUZZ) { - rpy->r = atan2(m->y.x, m->y.y); + if (rtapi_fabs(rpy->p - PM_PI_2) < RPY_P_FUZZ) { + rpy->r = rtapi_atan2(m->y.x, m->y.y); rpy->p = PM_PI_2; /* force it */ rpy->y = 0.0; - } else if (fabs(rpy->p + PM_PI_2) < RPY_P_FUZZ) { - rpy->r = -atan2(m->y.x, m->y.y); + } else if (rtapi_fabs(rpy->p + PM_PI_2) < RPY_P_FUZZ) { + rpy->r = -rtapi_atan2(m->y.x, m->y.y); rpy->p = -PM_PI_2; /* force it */ rpy->y = 0.0; } else { @@ -1017,7 +1017,7 @@ int pmCartUnitEq(PmCartesian * const v) } /*! \todo This is if 0'd out so we can find all the pmCartNorm calls that should - be renamed pmCartUnit. + be renamed pmCartUnit. Later we'll put this back. */ #if 0 @@ -1043,7 +1043,7 @@ int pmCartCartProj(PmCartesian const * const v1, PmCartesian const * const v2, P int r3=1; double d12; double d22; - + r1 = pmCartCartDot(v1, v2, &d12); r2 = pmCartCartDot(v2, v2, &d22); if (!(r1 || r1)){ @@ -1760,7 +1760,7 @@ int pmCircleInit(PmCircle * const circle, pmCartCartAdd(&v, center, &circle->center); /* normalize and redirect normal vector based on turns. If turn is less - than 0, point normal vector in other direction and make turn positive, + than 0, point normal vector in other direction and make turn positive, -1 -> 0, -2 -> 1, etc. */ pmCartUnit(normal, &circle->normal); if (turn < 0) { @@ -1930,7 +1930,7 @@ int pmCircleStretch(PmCircle * const circ, double new_angle, int from_end) pmCartCartSub(&new_start, &circ->center, &circ->rTan); pmCartCartCross(&circ->normal, &circ->rTan, &circ->rPerp); pmCartMag(&circ->rTan, &circ->radius); - } + } //Reduce the spiral proportionally circ->spiral *= (new_angle / circ->angle); // Easy to grow / shrink from start From 488798c33914d75af5e2cd1069fe1c263102ae4e Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Tue, 19 Dec 2017 21:43:07 -0600 Subject: [PATCH 282/516] halui: hide expected ignored-attributes diagnostic in this file --- src/emc/usr_intf/halui.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/emc/usr_intf/halui.cc b/src/emc/usr_intf/halui.cc index e8ea4ea3c7..dc202c22a8 100644 --- a/src/emc/usr_intf/halui.cc +++ b/src/emc/usr_intf/halui.cc @@ -224,6 +224,9 @@ DONE: - spindle-override #define MDI_MAX 64 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wignored-attributes" + #define HAL_FIELDS \ FIELD(hal_bit_t,machine_on) /* pin for setting machine On */ \ FIELD(hal_bit_t,machine_off) /* pin for setting machine Off */ \ @@ -380,6 +383,7 @@ HAL_FIELDS typedef halui_str_base halui_str; typedef halui_str_base local_halui_str; +#pragma GCC diagnostic pop static halui_str *halui_data; static local_halui_str old_halui_data; From a7d881258fb3128986760ceb6e516c80c34f8641 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Mon, 29 May 2017 21:36:09 -0500 Subject: [PATCH 283/516] inihal: Suppress gcc6.3 -Wignored-attributes diagnostics The compiler is warning that the 'attribute((aligned))' specification of hal_float_t is ignored. Ignoring it is harmless (the whole intent is to strip these qualifications, including the volatile qualifications, away; so silence the diagnostic. Signed-off-by: Jeff Epler --- src/emc/ini/inihal.hh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/emc/ini/inihal.hh b/src/emc/ini/inihal.hh index 79d7df8e85..4d3a0c023a 100644 --- a/src/emc/ini/inihal.hh +++ b/src/emc/ini/inihal.hh @@ -67,6 +67,8 @@ struct PTR { struct field { typedef T *type; }; }; +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wignored-attributes" template struct NATIVE {}; template<> struct NATIVE { typedef bool type; }; template<> struct NATIVE { typedef __s32 type; }; @@ -88,5 +90,6 @@ HAL_FIELDS typedef inihal_base ptr_inihal_data; typedef inihal_base value_inihal_data; +#pragma GCC diagnostic pop #endif From 2fabfafac29161d0eb72b8cb43b3dbbb441c30a0 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Wed, 20 Dec 2017 07:17:10 -0600 Subject: [PATCH 284/516] silence warnings from old gcc .. on which -Wignored-attributes is not a known option --- src/emc/ini/inihal.hh | 2 ++ src/emc/usr_intf/halui.cc | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/emc/ini/inihal.hh b/src/emc/ini/inihal.hh index 4d3a0c023a..fabaedd5f3 100644 --- a/src/emc/ini/inihal.hh +++ b/src/emc/ini/inihal.hh @@ -68,7 +68,9 @@ struct PTR { }; #pragma GCC diagnostic push +#if defined(__GNUC__) && (__GNUC__ > 4) #pragma GCC diagnostic ignored "-Wignored-attributes" +#endif template struct NATIVE {}; template<> struct NATIVE { typedef bool type; }; template<> struct NATIVE { typedef __s32 type; }; diff --git a/src/emc/usr_intf/halui.cc b/src/emc/usr_intf/halui.cc index dc202c22a8..d35d13d03d 100644 --- a/src/emc/usr_intf/halui.cc +++ b/src/emc/usr_intf/halui.cc @@ -225,7 +225,9 @@ DONE: - spindle-override #define MDI_MAX 64 #pragma GCC diagnostic push +#if defined(__GNUC__) && (__GNUC__ > 4) #pragma GCC diagnostic ignored "-Wignored-attributes" +#endif #define HAL_FIELDS \ FIELD(hal_bit_t,machine_on) /* pin for setting machine On */ \ From 3beecbab6ae2f72cb7da35a726410e5a0c07a402 Mon Sep 17 00:00:00 2001 From: John Morris Date: Tue, 11 Sep 2018 15:33:08 +0800 Subject: [PATCH 285/516] hal/utils/halcmd_commands.c: fix compiler warnings Compiling src/hal/utils/halcmd_commands.c hal/utils/halcmd_commands.c: In function 'print_comp_entry': hal/utils/halcmd_commands.c:2021:8: warning: this 'else' clause does not guard... [-Wmisleading-indentation] } else ^~~~ hal/utils/halcmd_commands.c:2023:3: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'else' halcmd_output(", u1:%d u2:%d", comp->userarg1, comp->userarg2); ^~~~~~~~~~~~~ --- src/hal/utils/halcmd_commands.c | 104 ++++++++++++++++---------------- 1 file changed, 52 insertions(+), 52 deletions(-) diff --git a/src/hal/utils/halcmd_commands.c b/src/hal/utils/halcmd_commands.c index aa41c267c1..0af6e43e14 100644 --- a/src/hal/utils/halcmd_commands.c +++ b/src/hal/utils/halcmd_commands.c @@ -1975,58 +1975,58 @@ static int print_comp_entry(hal_object_ptr o, foreach_args_t *args) if (match(args->user_ptr1, ho_name(comp))) { - halcmd_output(" %5d %-4s %c%c%c%c %4d %-*s", - ho_id(comp), - type_name(comp), - has_ctor ? 'c': ' ', - has_dtor ? 'd': ' ', - is_hallib ? 'i': ' ', - ' ', - inst_count(0, comp), - HAL_NAME_LEN, - ho_name(comp)); - - switch (comp->type) { - case TYPE_USER: - case TYPE_HALLIB: - - halcmd_output(" %-5d %s", comp->pid, - state_name(comp->state)); - break; - - case TYPE_RT: - halcmd_output(" RT %s", - state_name(comp->state)); - break; - - case TYPE_REMOTE: - halcmd_output(" %-5d %s", comp->pid, - state_name(comp->state)); - time_t now = time(NULL); - if (comp->last_update) { - - halcmd_output(", update:-%ld",-(comp->last_update-now)); - } else - halcmd_output(", update:never"); - - if (comp->last_bound) { - - halcmd_output(", bound:%lds",comp->last_bound-now); - } else - halcmd_output(", bound:never"); - if (comp->last_unbound) { - time_t now = time(NULL); - - halcmd_output(", unbound:%lds", comp->last_unbound-now); - } else - halcmd_output(", unbound:never"); - halcmd_output(", u1:%d u2:%d", comp->userarg1, comp->userarg2); - break; - default: - halcmd_output(" %-5s %s", "", state_name(comp->state)); - } - halcmd_output(", u1:%d u2:%d", comp->userarg1, comp->userarg2); - halcmd_output("\n"); + halcmd_output(" %5d %-4s %c%c%c%c %4d %-*s", + ho_id(comp), + type_name(comp), + has_ctor ? 'c': ' ', + has_dtor ? 'd': ' ', + is_hallib ? 'i': ' ', + ' ', + inst_count(0, comp), + HAL_NAME_LEN, + ho_name(comp)); + + switch (comp->type) { + case TYPE_USER: + case TYPE_HALLIB: + + halcmd_output(" %-5d %s", comp->pid, + state_name(comp->state)); + break; + + case TYPE_RT: + halcmd_output(" RT %s", + state_name(comp->state)); + break; + + case TYPE_REMOTE: + halcmd_output(" %-5d %s", comp->pid, + state_name(comp->state)); + time_t now = time(NULL); + if (comp->last_update) { + + halcmd_output(", update:-%ld",-(comp->last_update-now)); + } else + halcmd_output(", update:never"); + + if (comp->last_bound) { + + halcmd_output(", bound:%lds",comp->last_bound-now); + } else + halcmd_output(", bound:never"); + if (comp->last_unbound) { + time_t now = time(NULL); + + halcmd_output(", unbound:%lds", comp->last_unbound-now); + } else + halcmd_output(", unbound:never"); + halcmd_output(", u1:%d u2:%d", comp->userarg1, comp->userarg2); + break; + default: + halcmd_output(" %-5s %s", "", state_name(comp->state)); + } + halcmd_output(", u1:%d u2:%d", comp->userarg1, comp->userarg2); + halcmd_output("\n"); } return 0; } From 6894e889725fe28b867bbaa2c9f3e0d2ea074b29 Mon Sep 17 00:00:00 2001 From: John Morris Date: Tue, 11 Sep 2018 15:45:31 +0800 Subject: [PATCH 286/516] emc/usr_intf/schedrmt.cc: fix compiler warnings Compiling emc/usr_intf/schedrmt.cc emc/usr_intf/schedrmt.cc: In function 'void* readClient(void*)': emc/usr_intf/schedrmt.cc:1191:7: warning: this 'else' clause does not guard... [-Wmisleading-indentation] else ^~~~ emc/usr_intf/schedrmt.cc:1198:9: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'else' i++; ^ --- src/emc/usr_intf/schedrmt.cc | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/emc/usr_intf/schedrmt.cc b/src/emc/usr_intf/schedrmt.cc index d1576bbcfd..941f245c38 100644 --- a/src/emc/usr_intf/schedrmt.cc +++ b/src/emc/usr_intf/schedrmt.cc @@ -1186,19 +1186,18 @@ void *readClient(void *arg) while (i <= strlen(buf)) { if ((buf[i] != '\n') && (buf[i] != '\r')) { context->inBuf[j] = buf[i]; - j++; - } + j++; + } else - if (j > 0) - { + if (j > 0) { context->inBuf[j] = 0; - if (parseCommand(context) == -1) goto finished; + if (parseCommand(context) == -1) goto finished; j = 0; - } - i++; - } + } + i++; + } buf[0] = 0; - } + } finished: close(context->cliSock); From f45f9df34a5b10cbd858287cc9c7f48d818c39ed Mon Sep 17 00:00:00 2001 From: John Morris Date: Sun, 7 Oct 2018 21:37:56 -0500 Subject: [PATCH 287/516] Silence compiler warnings in emc/usr_intf/emcweb/mongoose.c - Several `-Wformat=` warnings where `%d` used to format `size_t` arg; changed to `%zu` - One `-Wunused-but-set-variable` warning; removed variable emc/usr_intf/emcweb/mongoose.c: In function '_calloc': emc/usr_intf/emcweb/mongoose.c:464:37: warning: format '%d' expects argument of type 'int', but argument 3 has type 'size_t {aka long unsigned int}' [-Wformat=] fprintf(stderr, "Try to calloc %d blocks of %d bytes\n", __nmemb, __size ); ^ emc/usr_intf/emcweb/mongoose.c:464:50: warning: format '%d' expects argument of type 'int', but argument 4 has type 'size_t {aka long unsigned int}' [-Wformat=] fprintf(stderr, "Try to calloc %d blocks of %d bytes\n", __nmemb, __size ); ^ emc/usr_intf/emcweb/mongoose.c: In function '_realloc': emc/usr_intf/emcweb/mongoose.c:470:54: warning: format '%d' expects argument of type 'int', but argument 4 has type 'size_t {aka long unsigned int}' [-Wformat=] fprintf(stderr, "Try to re-alloc ptr %p to size %d bytes\n", __ptr, __size ); ^ emc/usr_intf/emcweb/mongoose.c: In function 'discard_current_request_from_buffer': emc/usr_intf/emcweb/mongoose.c:3700:9: warning: variable 'buffered' set but not used [-Wunused-but-set-variable] char *buffered; ^~~~~~~~ emc/usr_intf/emcweb/mongoose.c: In function 'worker_thread': emc/usr_intf/emcweb/mongoose.c:3890:66: warning: format '%d' expects argument of type 'int', but argument 4 has type 'long unsigned int' [-Wformat=] fprintf(stderr, "%s: error when allocating memory of size %d\n", __func__, sizeof(*conn) + buf_size ); --- src/emc/usr_intf/emcweb/mongoose.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/emc/usr_intf/emcweb/mongoose.c b/src/emc/usr_intf/emcweb/mongoose.c index 6ea61997e4..b94d378698 100644 --- a/src/emc/usr_intf/emcweb/mongoose.c +++ b/src/emc/usr_intf/emcweb/mongoose.c @@ -461,13 +461,13 @@ struct mg_connection { void *_calloc (size_t __nmemb, size_t __size) { - fprintf(stderr, "Try to calloc %d blocks of %d bytes\n", __nmemb, __size ); + fprintf(stderr, "Try to calloc %zu blocks of %zu bytes\n", __nmemb, __size ); return calloc( __nmemb, __size ); } void *_realloc (void *__ptr, size_t __size) { - fprintf(stderr, "Try to re-alloc ptr %p to size %d bytes\n", __ptr, __size ); + fprintf(stderr, "Try to re-alloc ptr %p to size %zu bytes\n", __ptr, __size ); return realloc( __ptr, __size ); } @@ -3697,10 +3697,8 @@ static void close_connection(struct mg_connection *conn) { } static void discard_current_request_from_buffer(struct mg_connection *conn) { - char *buffered; int buffered_len, body_len; - buffered = conn->buf + conn->request_len; buffered_len = conn->data_len - conn->request_len; assert(buffered_len >= 0); @@ -3887,7 +3885,8 @@ static void worker_thread(struct mg_context *ctx) { conn = _calloc(1, sizeof(*conn) + buf_size); if( !conn ) { - fprintf(stderr, "%s: error when allocating memory of size %d\n", __func__, sizeof(*conn) + buf_size ); + fprintf(stderr, "%s: error when allocating memory of size %zu\n", + __func__, sizeof(*conn) + buf_size ); exit(1); } conn->buf_size = buf_size; From 53b8ec29857507a312d1f9cd1eebacd75da71982 Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 8 Oct 2018 13:23:25 +0800 Subject: [PATCH 288/516] emc/usr_intf/emcweb.cc: silence compiler warning Compiling emc/usr_intf/emcweb.cc emc/usr_intf/emcweb.cc: In member function 'void ReqHandler::Exit()': emc/usr_intf/emcweb.cc:221:14: warning: deleting object of polymorphic class type 'WebPage' which has non-virtual destructor might cause undefined behavior [-Wdelete-non-virtual-dtor] delete it->second; ^~~~~~ --- src/emc/usr_intf/emcweb.cc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/emc/usr_intf/emcweb.cc b/src/emc/usr_intf/emcweb.cc index 7772cc9729..11444d9cd1 100644 --- a/src/emc/usr_intf/emcweb.cc +++ b/src/emc/usr_intf/emcweb.cc @@ -119,7 +119,9 @@ class WebPage public: virtual void Init() {}; virtual void Exit() {}; - virtual bool HandleReq(mongoose::web_response &response, mongoose::web_request &request); + virtual bool HandleReq(mongoose::web_response &response, + mongoose::web_request &request); + virtual ~WebPage(){}; }; @@ -355,7 +357,11 @@ void GenerateJson(const char *filename) */ int fd = open(filename, O_WRONLY | O_TRUNC | O_SYNC | O_CREAT, 0666); if (fd >= 0) { - write(fd, buff, strlen(buff)); + if (write(fd, buff, strlen(buff)) < + (ssize_t)strlen(buff)) + fprintf(stderr, + "unable to write DYNAMIC_JSON buffer " + "to file"); fsync(fd); close(fd); } else { From 1c9b04ea2e1e9e3ef20f7a24c30048c18e22e66d Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 8 Oct 2018 13:37:15 +0800 Subject: [PATCH 289/516] hal_p260c.c: silence compiler warning Comment out function, all of whose calls are commented out Compiling realtime hal/drivers/hal_p260c.c hal/drivers/hal_p260c.c:561:13: warning: 'flush_input' defined but not used [-Wunused-function] static void flush_input( int board ) ^~~~~~~~~~~ --- src/hal/drivers/hal_p260c.c | 56 ++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/src/hal/drivers/hal_p260c.c b/src/hal/drivers/hal_p260c.c index 7ae422565f..0ea9adb964 100644 --- a/src/hal/drivers/hal_p260c.c +++ b/src/hal/drivers/hal_p260c.c @@ -558,32 +558,32 @@ static void set_debug( int pin, int val ) ***/ -static void flush_input( int board ) -{ - unsigned char inp; - int cnt = 0; - - // Flush the input data first - while ( read( sfd, &inp, 1 ) > 0 && cnt++ < 1000 ) - { - if ( debug_fd ) - { - write( debug_fd, &inp, 1 ); - } - } - -#ifdef DEBUG_RX - if ( boards[board].readbeforewritecount != NULL ) - { - *(boards[board].readbeforewritecount) = cnt; - } -#endif - if ( cnt ) - { - set_debug( 0, 0 ); - set_debug( 0, 1 ); - } -} +/* static void flush_input( int board ) */ +/* { */ +/* unsigned char inp; */ +/* int cnt = 0; */ + +/* // Flush the input data first */ +/* while ( read( sfd, &inp, 1 ) > 0 && cnt++ < 1000 ) */ +/* { */ +/* if ( debug_fd ) */ +/* { */ +/* write( debug_fd, &inp, 1 ); */ +/* } */ +/* } */ + +/* #ifdef DEBUG_RX */ +/* if ( boards[board].readbeforewritecount != NULL ) */ +/* { */ +/* *(boards[board].readbeforewritecount) = cnt; */ +/* } */ +/* #endif */ +/* if ( cnt ) */ +/* { */ +/* set_debug( 0, 0 ); */ +/* set_debug( 0, 1 ); */ +/* } */ +/* } */ static void wait_tx_empty() { @@ -594,7 +594,7 @@ static void wait_tx_empty() static void send_data( int board ) { #ifdef DEBUG_RX -// flush_input( board ); + /* flush_input( board ); */ #endif // Write protocol data @@ -970,7 +970,7 @@ static void serial_port_task( void *arg, long period ) // Start the transmit to the first board. set_debug( 1, 0 ); // set_debug( 0, 1 ); -// flush_input( 0 ); + /* flush_input( 0 ); */ set_debug( 0, 0 ); // Send data to all boards From 2ade98e30a002e2cd2b64b95f3da0e76aa68c2bd Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 8 Oct 2018 13:42:27 +0800 Subject: [PATCH 290/516] mesa-hostmot2/pktuart.c: silence compiler warning Compiling realtime hal/drivers/mesa-hostmot2/pktuart.c hal/drivers/mesa-hostmot2/pktuart.c: In function 'hm2_pktuart_setup': hal/drivers/mesa-hostmot2/pktuart.c:233:27: warning: suggest parentheses around comparison in operand of '&' [-Wparentheses] if ( (buff >> 22) & 0xff == 0x0) { ^ --- src/hal/drivers/mesa-hostmot2/pktuart.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hal/drivers/mesa-hostmot2/pktuart.c b/src/hal/drivers/mesa-hostmot2/pktuart.c index 7f1101ab4f..dad1f1574b 100755 --- a/src/hal/drivers/mesa-hostmot2/pktuart.c +++ b/src/hal/drivers/mesa-hostmot2/pktuart.c @@ -230,7 +230,7 @@ int hm2_pktuart_setup(char *name, int bitrate, s32 tx_mode, s32 rx_mode, int txc buff = ((u32)rx_mode) & 0x3fc0ffff; // 0011 1111 1100 0000 1111 1111 1111 1111 // the expert user is allowed to pass his own FilterReg value, // otherwise it will be calculated as floor( 0.5*bittime*ClockLow -1 ) - if ( (buff >> 22) & 0xff == 0x0) { + if ( (buff >> 22) & (0xff == 0x0)) { u32 filter_reg = rtapi_floor(0.5*inst->clock_freq/inst->bitrate - 1.0) ; if (filter_reg > 255) filter_reg = 255; From 59a85b8ce0b1bd41a64d64cadd4e8446aa247fc4 Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 8 Oct 2018 13:46:30 +0800 Subject: [PATCH 291/516] mesa-hostmot2/pktuart.c: fix compiler warning Compiling realtime hal/drivers/mesa-hostmot2/pktuart.c In file included from hal/drivers/mesa-hostmot2/pktuart.c:26:0: hal/drivers/mesa-hostmot2/pktuart.c: In function 'hm2_pktuart_read': hal/drivers/mesa-hostmot2/hostmot2.h:50:21: warning: format '%s' expects a matching 'char *' argument [-Wformat=] #define HM2_NAME "hm2" ^ hal/drivers/mesa-hostmot2/hostmot2.h:67:66: note: in expansion of macro 'HM2_NAME' #define HM2_ERR(fmt, args...) rtapi_print_msg(RTAPI_MSG_ERR, HM2_NAME "/%s: " fmt, hm2->llio->name, ## args) ^~~~~~~~ hal/drivers/mesa-hostmot2/pktuart.c:403:9: note: in expansion of macro 'HM2_ERR' HM2_ERR("%s read: hm2->llio->write failure %s\n", name); ^~~~~~~ --- src/hal/drivers/mesa-hostmot2/pktuart.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hal/drivers/mesa-hostmot2/pktuart.c b/src/hal/drivers/mesa-hostmot2/pktuart.c index dad1f1574b..45520d6c1f 100755 --- a/src/hal/drivers/mesa-hostmot2/pktuart.c +++ b/src/hal/drivers/mesa-hostmot2/pktuart.c @@ -400,7 +400,7 @@ int hm2_pktuart_read(char *name, unsigned char data[], u8 *num_frames, u16 *max_ r = hm2->llio->read(hm2->llio, hm2->pktuart.instance[inst].rx_mode_addr, &buff, sizeof(u32)); if (r < 0) { - HM2_ERR("%s read: hm2->llio->write failure %s\n", name); + HM2_ERR("%s read: hm2->llio->write failure\n", name); return -1; // make the error message more detailed } countp = (buff >> 16) & 0x1f; From 723c9fa1b9047d19d189831ed158654464fc02ac Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 8 Oct 2018 13:47:58 +0800 Subject: [PATCH 292/516] mesa-hostmot2/irq.c: silence compiler warning Compiling realtime hal/drivers/mesa-hostmot2/irq.c hal/drivers/mesa-hostmot2/irq.c: In function 'hm2_irq_setup': hal/drivers/mesa-hostmot2/irq.c:40:10: warning: unused variable 'name' [-Wunused-variable] char name[HAL_NAME_LEN + 1]; ^~~~ --- src/hal/drivers/mesa-hostmot2/irq.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/hal/drivers/mesa-hostmot2/irq.c b/src/hal/drivers/mesa-hostmot2/irq.c index d7797e6309..e731316351 100644 --- a/src/hal/drivers/mesa-hostmot2/irq.c +++ b/src/hal/drivers/mesa-hostmot2/irq.c @@ -37,7 +37,6 @@ static int hm2_waitirq(void *void_hm2, const hal_funct_args_t *fa); int hm2_irq_setup(hostmot2_t *hm2, long period) { int r; - char name[HAL_NAME_LEN + 1]; // Fake the module count - if it gets promoted this will be populated // by the module descriptor parse function From c62b916867a74f0d2ff521104888b4f195927c7f Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 8 Oct 2018 13:50:12 +0800 Subject: [PATCH 293/516] classicladder/module_hal.c: silence compiler warning Compiling realtime hal/classicladder/module_hal.c hal/classicladder/module_hal.c: In function 'CopySizesInfosFromModuleParams': hal/classicladder/module_hal.c:294:2: warning: this 'if' clause does not guard... [-Wmisleading-indentation] if ( numFloatOut>0 ) ^~ hal/classicladder/module_hal.c:296:3: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if' GeneralParamsMirror.SizesInfos.nbr_symbols = pSizesInfos->nbr_bits + pSizesInfos->nbr_words ; ^~~~~~~~~~~~~~~~~~~ --- src/hal/classicladder/module_hal.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/hal/classicladder/module_hal.c b/src/hal/classicladder/module_hal.c index 05ae7e71e3..ef5ef03c73 100644 --- a/src/hal/classicladder/module_hal.c +++ b/src/hal/classicladder/module_hal.c @@ -293,12 +293,13 @@ void CopySizesInfosFromModuleParams( void ) { GeneralParamsMirror.SizesInfos.nbr_phys_float_inputs = numFloatIn; if ( numFloatOut>0 ) GeneralParamsMirror.SizesInfos.nbr_phys_float_outputs = numFloatOut; - GeneralParamsMirror.SizesInfos.nbr_symbols = pSizesInfos->nbr_bits + pSizesInfos->nbr_words ; - GeneralParamsMirror.SizesInfos.nbr_symbols += pSizesInfos->nbr_timers + pSizesInfos->nbr_monostables ; - GeneralParamsMirror.SizesInfos.nbr_symbols += pSizesInfos->nbr_counters + pSizesInfos->nbr_timers_iec ; - GeneralParamsMirror.SizesInfos.nbr_symbols += pSizesInfos->nbr_phys_inputs + pSizesInfos->nbr_phys_outputs ; - GeneralParamsMirror.SizesInfos.nbr_symbols += pSizesInfos->nbr_phys_words_inputs + pSizesInfos->nbr_phys_words_outputs; - GeneralParamsMirror.SizesInfos.nbr_symbols += pSizesInfos->nbr_phys_float_inputs + pSizesInfos->nbr_phys_float_outputs + NBR_ERROR_BITS_DEF ; + + GeneralParamsMirror.SizesInfos.nbr_symbols = pSizesInfos->nbr_bits + pSizesInfos->nbr_words ; + GeneralParamsMirror.SizesInfos.nbr_symbols += pSizesInfos->nbr_timers + pSizesInfos->nbr_monostables ; + GeneralParamsMirror.SizesInfos.nbr_symbols += pSizesInfos->nbr_counters + pSizesInfos->nbr_timers_iec ; + GeneralParamsMirror.SizesInfos.nbr_symbols += pSizesInfos->nbr_phys_inputs + pSizesInfos->nbr_phys_outputs ; + GeneralParamsMirror.SizesInfos.nbr_symbols += pSizesInfos->nbr_phys_words_inputs + pSizesInfos->nbr_phys_words_outputs; + GeneralParamsMirror.SizesInfos.nbr_symbols += pSizesInfos->nbr_phys_float_inputs + pSizesInfos->nbr_phys_float_outputs + NBR_ERROR_BITS_DEF ; if (numSymbols < GeneralParamsMirror.SizesInfos.nbr_symbols ) { GeneralParamsMirror.SizesInfos.nbr_symbols = numSymbols; } #endif From 8dfb644081d69203e56e06b8fb4852d7777b297a Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 8 Oct 2018 13:53:26 +0800 Subject: [PATCH 294/516] emc/kinematics/drawbotkins.c: fix compiler warnings The "statement with no effect" warning actually looks indicative of a bug. Yay for compiler warnings! Compiling realtime emc/kinematics/drawbotkins.c emc/kinematics/drawbotkins.c: In function 'drawbot_home': emc/kinematics/drawbotkins.c:293:13: warning: unused variable 'homing' [-Wunused-variable] hal_bit_t homing = 0; ^~~~~~ emc/kinematics/drawbotkins.c: In function 'drawbot_home_a': emc/kinematics/drawbotkins.c:391:13: warning: statement with no effect [-Wunused-value] joint[3].started; ~~~~~~~~^~~~~~~~ --- src/emc/kinematics/drawbotkins.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/emc/kinematics/drawbotkins.c b/src/emc/kinematics/drawbotkins.c index 0c3641929d..865bc3eb03 100644 --- a/src/emc/kinematics/drawbotkins.c +++ b/src/emc/kinematics/drawbotkins.c @@ -290,7 +290,6 @@ void halt_motion(struct hal_joint_t *joints) { void drawbot_home(void *args, long period) { int idx; - hal_bit_t homing = 0; for(idx = 0; idx < 4; ++idx) { *(haldata->joint[idx].home) = 0; @@ -388,8 +387,8 @@ void drawbot_home_a(struct hal_joint_t *joint) { joint[3].tripped = 1; halt_motion(joint); } else if(!joint[3].started) { - joint[3].started; + joint[3].started = 1; *(joint[1].jog) = 1.0; *(joint[3].jog) = -1.0; } -} \ No newline at end of file +} From 6a86379491dccdbeea30964d61d28246ec2524d3 Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 8 Oct 2018 14:28:49 +0800 Subject: [PATCH 295/516] rtapi/rtapi_pci.c: silence compiler warnings Compiling realtime rtapi/rtapi_pci.c rtapi/rtapi_pci.c: In function 'rtapi_pci_get_device': rtapi/rtapi_pci.c:187:3: warning: 'readdir_r' is deprecated [-Wdeprecated-declarations] err = readdir_r(dir, &dirent_buf, &dirent); ^~~ In file included from rtapi/rtapi_pci.c:42:0: /usr/include/dirent.h:183:12: note: declared here extern int readdir_r (DIR *__restrict __dirp, ^~~~~~~~~ rtapi/rtapi_pci.c:254:3: warning: 'readdir_r' is deprecated [-Wdeprecated-declarations] err = readdir_r(dir, &dirent_buf, &dirent); ^~~ In file included from rtapi/rtapi_pci.c:42:0: /usr/include/dirent.h:183:12: note: declared here extern int readdir_r (DIR *__restrict __dirp, ^~~~~~~~~ --- src/rtapi/rtapi_pci.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/rtapi/rtapi_pci.c b/src/rtapi/rtapi_pci.c index d8cfb0f384..7bd4edbc79 100644 --- a/src/rtapi/rtapi_pci.c +++ b/src/rtapi/rtapi_pci.c @@ -133,7 +133,7 @@ struct rtapi_pcidev * rtapi_pci_get_device(__u16 vendor, __u16 device, { int err; DIR *dir; - struct dirent dirent_buf, *dirent; + struct dirent *dirent; ssize_t res; char buf[256], path[256]; struct rtapi_pcidev *dev = NULL; @@ -184,14 +184,17 @@ rtapi_print_msg(RTAPI_MSG_ERR, while (1) { unsigned int tmp; - err = readdir_r(dir, &dirent_buf, &dirent); - if (err) { + dirent = readdir(dir); + if (dirent==NULL) { + if (errno) { rtapi_print_msg(RTAPI_MSG_ERR, "Failed to read UIO-pci-generic sysfs directory. (%s)\n", strerror(errno)); closedir(dir); goto error; - } + } else // end of directory + break; + } if (from && !found_start) { if (strcmp(dirent->d_name, from->busid) == 0) { /* Found the start entry. */ @@ -251,14 +254,17 @@ rtapi_print_msg(RTAPI_MSG_ERR, while (1) { unsigned int tmp; - err = readdir_r(dir, &dirent_buf, &dirent); - if (err) { + dirent = readdir(dir); + if (dirent==NULL) { + if (errno) { rtapi_print_msg(RTAPI_MSG_ERR, "Failed to read UIO directory. (%s)\n", strerror(errno)); closedir(dir); goto error; - } + } else // end of directory + break; + } res = sscanf(dirent->d_name, "uio%u", &tmp); if (res != 1) continue; From 62d93c5783cefcfb7b17a3aa172f211228d3ba3e Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 8 Oct 2018 14:34:20 +0800 Subject: [PATCH 296/516] mesa_7i65.comp: silence compiler warning Compiling realtime halcomp-srcs/hal/drivers/mesa_7i65.c hal/drivers/mesa_7i65.comp: In function 'extra_setup': hal/drivers/mesa_7i65.comp:227:43: warning: passing argument 2 of 'hm2_bspi_set_read_function' from incompatible pointer type [-Wincompatible-pointer-types] r += hm2_bspi_set_read_function(name, &read, __comp_inst); ^ In file included from halcomp-srcs/hal/drivers/mesa_7i65.c:12:0: halcomp-srcs/hal/drivers/../../../hal/drivers/mesa-hostmot2/hostmot2.h:1443:5: note: expected 'int (*)(void *)' but argument is of type 'void (*)(struct __comp_state *)' int hm2_bspi_set_read_function(char *name, int (*func)(void *subdata), void *subdata); ^~~~~~~~~~~~~~~~~~~~~~~~~~ --- src/hal/drivers/mesa_7i65.comp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/hal/drivers/mesa_7i65.comp b/src/hal/drivers/mesa_7i65.comp index 0cd2ae4a90..fd7f605983 100644 --- a/src/hal/drivers/mesa_7i65.comp +++ b/src/hal/drivers/mesa_7i65.comp @@ -50,7 +50,7 @@ include "../../../hal/drivers/mesa-hostmot2/hostmot2.h"; char *bspi_chans[16] = {0,}; RTAPI_MP_ARRAY_STRING(bspi_chans, 16, "BSPI Channel names"); -static void read(struct __comp_state *__comp_inst){ +static int read(struct __comp_state *__comp_inst){ int i; double aout[8]; @@ -153,6 +153,8 @@ static void read(struct __comp_state *__comp_inst){ for(i=0; i < 8; i++) { analogue_in(i) = (double)((s16)((*AD7329_read[i] & 0x1FFF) << 3)) / 3276.8; } + + return 0; } EXTRA_SETUP(){ @@ -224,7 +226,7 @@ EXTRA_SETUP(){ r += hm2_allocate_bspi_tram(name); // Tell the bspi driver which function to call - r += hm2_bspi_set_read_function(name, &read, __comp_inst); + r += hm2_bspi_set_read_function(name, (int (*)(void *))&read, __comp_inst); // no separate write function in this example, but it would be: // r += hm2_bspi_set_write_function(name, &write, __comp_inst); From 2dc1c0bf900db4a4290c190bad0c05ff98cfd95a Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 10 Oct 2014 14:24:50 -0500 Subject: [PATCH 297/516] hal/cython/Submakefile: Fix output non-verbose output looked like: Linking gcc -g [...] ../lib/libmtalk.so.0 compared to: Linking halcmd --- src/hal/cython/Submakefile | 41 +++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/src/hal/cython/Submakefile b/src/hal/cython/Submakefile index 68d98510ba..8a01ca9d78 100644 --- a/src/hal/cython/Submakefile +++ b/src/hal/cython/Submakefile @@ -24,13 +24,14 @@ $(call TOOBJSDEPS, $(HALSO_CXXSRCS)) : EXTRAFLAGS=-fPIC -Ihal/utils -I. $(HALNGMKDIR)/hal.c: $(wildcard $(HALNGMKDIR)/*.pyx $(HALNGMKDIR)/*.pxd) TARGETS += ../lib/python/machinekit/hal.so -../lib/python/machinekit/hal.so: ../lib/liblinuxcnchal.so.0 \ - ../lib/libmtalk.so.0 \ - $(patsubst %.c,objects/%.o,$(HALSO_SRCS)) \ - $(patsubst %.cc,objects/%.o,$(HALSO_CXXSRCS)) - $(ECHO) Linking $($@) +../lib/python/machinekit/hal.so: \ + ../lib/liblinuxcnchal.so.0 \ + ../lib/libmtalk.so.0 \ + $(patsubst %.c,objects/%.o,$(HALSO_SRCS)) \ + $(patsubst %.cc,objects/%.o,$(HALSO_CXXSRCS)) + $(ECHO) Linking $(notdir $@) @mkdir -p $(dir $@) - $(CC) -g $(LDFLAGS) -shared -o $@ $^ + $(Q)$(CC) -g $(LDFLAGS) -shared -o $@ $^ RTAPISO_CSRCS := $(addprefix $(HALNGMKDIR)/, \ @@ -48,14 +49,14 @@ $(call TOOBJSDEPS, $(RTAPISO_CXXSRCS)) : EXTRAFLAGS=-fPIC -Ihal/utils -I. TARGETS += ../lib/python/machinekit/rtapi.so ../lib/python/machinekit/rtapi.so: \ - $(patsubst %.c,objects/%.o,$(RTAPISO_CSRCS)) \ - $(patsubst %.cc,objects/%.o,$(RTAPISO_CXXSRCS)) \ - ../lib/liblinuxcnchal.so.0 \ - ../lib/libmachinetalk-pb2++.so.0 \ - ../lib/libmtalk.so.0 - $(ECHO) Linking $($@) + $(patsubst %.c,objects/%.o,$(RTAPISO_CSRCS)) \ + $(patsubst %.cc,objects/%.o,$(RTAPISO_CXXSRCS)) \ + ../lib/liblinuxcnchal.so.0 \ + ../lib/libmachinetalk-pb2++.so.0 \ + ../lib/libmtalk.so.0 + $(ECHO) Linking $(notdir $@) @mkdir -p $(dir $@) - $(CC) -g $(LDFLAGS) -shared -o $@ $^ + $(Q)$(CC) -g $(LDFLAGS) -shared -o $@ $^ COMPATSO_CSRCS := $(addprefix $(HALNGMKDIR)/, \ @@ -67,11 +68,11 @@ USERSRCS += $(COMPATSO_CSRCS) $(call TOOBJSDEPS, $(COMPATSO_CSRCS)) : EXTRAFLAGS=-fPIC TARGETS += ../lib/python/machinekit/compat.so ../lib/python/machinekit/compat.so: \ - $(patsubst %.c,objects/%.o,$(COMPATSO_CSRCS)) \ - ../lib/liblinuxcnchal.so.0 - $(ECHO) Linking $($@) + $(patsubst %.c,objects/%.o,$(COMPATSO_CSRCS)) \ + ../lib/liblinuxcnchal.so.0 + $(ECHO) Linking $@ @mkdir -p $(dir $@) - $(CC) -g $(LDFLAGS) -shared -o $@ $^ + $(Q)$(CC) -g $(LDFLAGS) -shared -o $@ $^ SHMCOMMONSO_CSRCS := $(addprefix $(HALNGMKDIR)/, \ @@ -82,10 +83,10 @@ USERSRCS += $(SHMCOMMONSO_CSRCS) $(call TOOBJSDEPS, $(SHMCOMMONSO_CSRCS)) : EXTRAFLAGS=-fPIC -Irtapi/shmdrv TARGETS += ../lib/python/machinekit/shmcommon.so ../lib/python/machinekit/shmcommon.so: \ - $(patsubst %.c,objects/%.o,$(SHMCOMMONSO_CSRCS)) - $(ECHO) Linking $($@) + $(patsubst %.c,objects/%.o,$(SHMCOMMONSO_CSRCS)) + $(ECHO) Linking $@ @mkdir -p $(dir $@) - $(CC) -g -shared -o $@ $^ $(LDFLAGS) -lrt + $(Q)$(CC) -g -shared -o $@ $^ $(LDFLAGS) -lrt $(HALNGDIR)/machinekit/%.c: $(addprefix $(HALNGDIR)/machinekit/, %.pyx %.pxd) $(CYTHON) -o $@ $< From f255e5f0e8b58babb2e74fd14802d6406dc46e1d Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 10 Oct 2014 15:21:04 -0500 Subject: [PATCH 298/516] Make non-verbose build output more consistent --- src/Makefile | 4 ++-- src/Makefile.modinc.in | 2 +- src/emc/canterp/Submakefile | 2 +- src/emc/kinematics/Submakefile | 2 +- src/emc/rs274ngc/Submakefile | 2 +- src/hal/cython/Submakefile | 6 +++--- src/rtapi/Submakefile | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/Makefile b/src/Makefile index be6b551b5b..3545d2895c 100755 --- a/src/Makefile +++ b/src/Makefile @@ -1648,7 +1648,7 @@ RTDEPS := $(sort $(patsubst $(OBJDIR)/%.o,$(DEPDIR)/%.d, $(RTOBJS))) # modules: $(patsubst %.o,$(RTLIBDIR)/%.so,$(obj-m)) $(RTLIBDIR)/%.so: - $(ECHO) Linking $@ + $(ECHO) Linking realtime $(threads) $(notdir $@) @mkdir -p $(dir $@) @# link all objects files into a single .so $(Q)$(LD) -d -r -o $(OBJDIR)/$*.tmp $^ @@ -1668,7 +1668,7 @@ $(sort $(RTDEPS)): $(DEPDIR)/%.d: %.c # Rules to make .o (object) files $(sort $(RTOBJS)) : $(OBJDIR)/%.o : %.c $(DEPDIR)/%.d - $(ECHO) Compiling realtime $< + $(ECHO) Compiling realtime $(threads) $< @rm -f $@ @mkdir -p $(dir $@) $(Q)$(CC) -c $(OPT) $(DEBUG) $(EXTRA_CFLAGS) $< -o $@ diff --git a/src/Makefile.modinc.in b/src/Makefile.modinc.in index 64442f6055..bd05553408 100644 --- a/src/Makefile.modinc.in +++ b/src/Makefile.modinc.in @@ -107,7 +107,7 @@ $(foreach mod,$(patsubst %.o,%,$(obj-m)),\ .PHONY: %.so %.so: - $(ECHO) Linking $@ + $(ECHO) Linking $(notdir $@) $(Q)$(LD) -d -r -o $*.tmp $^ $(Q)objcopy -j .rtapi_export -O binary $*.tmp $*.exported diff --git a/src/emc/canterp/Submakefile b/src/emc/canterp/Submakefile index 92d5946e6a..c7c22c3f87 100644 --- a/src/emc/canterp/Submakefile +++ b/src/emc/canterp/Submakefile @@ -3,7 +3,7 @@ USERSRCS += $(LIBCANTERPSRCS) TARGETS += ../lib/libcanterp.so ../lib/libcanterp.so.0 $(call TOOBJSDEPS, $(LIBCANTERPSRCS)) : EXTRAFLAGS=-fPIC ../lib/libcanterp.so.0: $(patsubst %.cc,objects/%.o,$(LIBCANTERPSRCS)) ../lib/liblinuxcncini.so ../lib/librs274.so - $(ECHO) Linking $(notdir $@) + $(ECHO) Creating shared library $(notdir $@) @mkdir -p ../lib @rm -f $@ @$(CXX) $(LDFLAGS) -Wl,-soname,$(notdir $@) -shared -o $@ $^ -ldl diff --git a/src/emc/kinematics/Submakefile b/src/emc/kinematics/Submakefile index f6f091fbf7..de426287e5 100644 --- a/src/emc/kinematics/Submakefile +++ b/src/emc/kinematics/Submakefile @@ -16,7 +16,7 @@ $(call TOOBJS, $(DELTAMODULESRCS)): CFLAGS += -x c++ -Wno-declaration-after-stat DELTAMODULE := ../lib/python/lineardeltakins.so $(DELTAMODULE): $(call TOOBJS, $(DELTAMODULESRCS)) $(ECHO) Linking python module $(notdir $@) - $(CXX) $(LDFLAGS) -shared -o $@ $^ -l$(BOOST_PYTHON_LIB) + $(Q)$(CXX) $(LDFLAGS) -shared -o $@ $^ -l$(BOOST_PYTHON_LIB) PYTARGETS += $(DELTAMODULE) ../bin/genserkins: $(call TOOBJS, $(GENSERKINSSRCS)) \ diff --git a/src/emc/rs274ngc/Submakefile b/src/emc/rs274ngc/Submakefile index 7b7ee0a9dc..d6f57ef77b 100644 --- a/src/emc/rs274ngc/Submakefile +++ b/src/emc/rs274ngc/Submakefile @@ -60,7 +60,7 @@ PYSRCS += $(GCODEMODULESRCS) GCODEMODULE := ../lib/python/gcode.so $(GCODEMODULE): $(call TOOBJS, $(GCODEMODULESRCS)) ../lib/librs274.so.0 $(ECHO) Linking python module $(notdir $@) - $(CXX) $(LDFLAGS) -shared -o $@ $^ -lstdc++ + $(Q)$(CXX) $(LDFLAGS) -shared -o $@ $^ -lstdc++ PYTARGETS += $(GCODEMODULE) diff --git a/src/hal/cython/Submakefile b/src/hal/cython/Submakefile index 8a01ca9d78..82b83ca9ba 100644 --- a/src/hal/cython/Submakefile +++ b/src/hal/cython/Submakefile @@ -29,7 +29,7 @@ TARGETS += ../lib/python/machinekit/hal.so ../lib/libmtalk.so.0 \ $(patsubst %.c,objects/%.o,$(HALSO_SRCS)) \ $(patsubst %.cc,objects/%.o,$(HALSO_CXXSRCS)) - $(ECHO) Linking $(notdir $@) + $(ECHO) Linking python module $(notdir $@) @mkdir -p $(dir $@) $(Q)$(CC) -g $(LDFLAGS) -shared -o $@ $^ @@ -70,7 +70,7 @@ TARGETS += ../lib/python/machinekit/compat.so ../lib/python/machinekit/compat.so: \ $(patsubst %.c,objects/%.o,$(COMPATSO_CSRCS)) \ ../lib/liblinuxcnchal.so.0 - $(ECHO) Linking $@ + $(ECHO) Linking python module $(notdir $@) @mkdir -p $(dir $@) $(Q)$(CC) -g $(LDFLAGS) -shared -o $@ $^ @@ -84,7 +84,7 @@ $(call TOOBJSDEPS, $(SHMCOMMONSO_CSRCS)) : EXTRAFLAGS=-fPIC -Irtapi/shmdrv TARGETS += ../lib/python/machinekit/shmcommon.so ../lib/python/machinekit/shmcommon.so: \ $(patsubst %.c,objects/%.o,$(SHMCOMMONSO_CSRCS)) - $(ECHO) Linking $@ + $(ECHO) Linking python module $(notdir $@) @mkdir -p $(dir $@) $(Q)$(CC) -g -shared -o $@ $^ $(LDFLAGS) -lrt diff --git a/src/rtapi/Submakefile b/src/rtapi/Submakefile index c7dc484114..4e95fcd980 100644 --- a/src/rtapi/Submakefile +++ b/src/rtapi/Submakefile @@ -85,7 +85,7 @@ ULAPISO := ../rtlib/ulapi-$(threads).so $(ULAPISO): ../lib/liblinuxcnchal.so ../lib/liblinuxcncshm.so \ $(call TOOBJS, $(ULAPI_SRCS)) - $(ECHO) Creating shared object $@ + $(ECHO) Creating shared object $(notdir $@) @mkdir -p ../rtlib @rm -f $@ $(Q)$(CC) $(LDFLAGS) -Wl,-soname,$(notdir $@) -shared \ From 3946d5c2ca108b6672e339bbeed75fb265c123fb Mon Sep 17 00:00:00 2001 From: John Morris Date: Sat, 11 Oct 2014 15:01:28 -0500 Subject: [PATCH 299/516] silence 'ldconfig' warning when building Debian packages ldconfig /tmp/machinekit/machinekit/src/../debian/tmp/usr/lib /sbin/ldconfig.real: Can't create temporary cache file /etc/ld.so.cache~: Permission denied make[1]: [install-kernel-indep] Error 1 (ignored) --- src/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Makefile b/src/Makefile index 3545d2895c..3648e82f0b 100755 --- a/src/Makefile +++ b/src/Makefile @@ -934,7 +934,8 @@ endif $(FILE) $(filter ../lib/%.a ../lib/%.so.0,$(TARGETS)) $(DESTDIR)$(libdir) cp --no-dereference $(filter ../lib/%.so, $(TARGETS)) $(DESTDIR)$(libdir) $(FILE) ../rtlib/ulapi-*.so $(DESTDIR)$(EMC2_RTLIB_BASE_DIR) - -ldconfig $(DESTDIR)$(libdir) +# # don't run ldconfig under fakeroot (silence dpkg-build warning) + -test -n "$$FAKED_MODE" || ldconfig $(DESTDIR)$(libdir) $(FILE) $(HEADERS) $(DESTDIR)$(includedir)/linuxcnc/ ifeq ($(USERMODE_PCI),yes) $(FILE) $(USERPCI_HEADERS) $(DESTDIR)$(includedir)/linuxcnc/userpci From a3a31d516e33271818f4f03b445a9d5cb4d22f9d Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 8 Oct 2018 15:26:54 +0800 Subject: [PATCH 300/516] preview.so: clean up `make` output --- src/emc/rs274ngc/Submakefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/emc/rs274ngc/Submakefile b/src/emc/rs274ngc/Submakefile index d6f57ef77b..06bdf21abb 100644 --- a/src/emc/rs274ngc/Submakefile +++ b/src/emc/rs274ngc/Submakefile @@ -78,7 +78,8 @@ $(PREVIEWMODULE): $(call TOOBJS, $(PREVIEWMODULESRCS)) \ ../lib/libmachinetalk-pb2++.so.0 \ ../lib/libmtalk.so $(ECHO) Linking python module $(notdir $@) - $(CXX) $(LDFLAGS) -shared -o $@ $^ -lstdc++ $(CZMQ_LIBS) $(PROTOBUF_LIBS) + $(Q)$(CXX) $(LDFLAGS) -shared -o $@ $^ -lstdc++ $(CZMQ_LIBS) \ + $(PROTOBUF_LIBS) PYTARGETS += $(PREVIEWMODULE) From 830111700f549c728c9a74f4e22a24f5119ddbb3 Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 8 Oct 2018 15:30:30 +0800 Subject: [PATCH 301/516] Makefile: clean up .so -> .so.0 symlinking outptut --- src/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Makefile b/src/Makefile index 3648e82f0b..b5c9c5b45e 100755 --- a/src/Makefile +++ b/src/Makefile @@ -1902,7 +1902,8 @@ objects/var-%: Makefile $(wildcard $(SUBMAKEFILES)) Makefile.inc @sh move-if-change $@.tmp $@ ../lib/%.so: ../lib/%.so.0 - ln -sf $(notdir $<) $@ + $(ECHO) Symlinking $(notdir $<) to $(notdir $@) + $(Q)ln -sf $(notdir $<) $@ cscope: cscope -Rb From 307b9a94c9a3da1c17559b698bd1b1e4362eb8c6 Mon Sep 17 00:00:00 2001 From: John Morris Date: Sun, 5 Oct 2014 04:32:25 -0500 Subject: [PATCH 302/516] hal/drivers/hal_vti.c: silence -Wunused-but-set-variable warnings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Silence warning by incrementing `junk` varible. hal/drivers/hal_vti.c: In function ‘vti_dac_write’: hal/drivers/hal_vti.c:794:11: warning: variable ‘junk’ set but not used [-Wunused-but-set-variable] short junk; ^ --- src/hal/drivers/hal_vti.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/hal/drivers/hal_vti.c b/src/hal/drivers/hal_vti.c index f831b210f6..c3254e2f11 100644 --- a/src/hal/drivers/hal_vti.c +++ b/src/hal/drivers/hal_vti.c @@ -798,6 +798,7 @@ static int vti_dac_write(int axis, short value) } junk = dac->mode; // Read from mode to trigger update dac immediately + junk++; // Silence compiler '-Wunused-value' warnings dac->dac[axis] = value; // Write dac value return 0; From 33b61e5b363ee7056734918c4c36ea0500b3f7ad Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 9 Oct 2014 21:50:54 -0500 Subject: [PATCH 303/516] Link -lprotobuf to liblinuxcnc-pb2++.so dpkg-shlibdeps: warning: symbol _ZN6google8protobuf8internal14WireFormatLite12WriteFixed32EijPN[...] used by debian/machinekit/usr/lib/liblinuxcnc-pb2++.so.0 found in none of the libraries [...] dpkg-shlibdeps: warning: 57 other similar warnings have been skipped (use -v to see them all) --- src/machinetalk/Submakefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/machinetalk/Submakefile b/src/machinetalk/Submakefile index 3ff20ba3c6..c12ae9924c 100644 --- a/src/machinetalk/Submakefile +++ b/src/machinetalk/Submakefile @@ -324,7 +324,8 @@ $(PROTOCXXLIB).0: $(patsubst %.cc,objects/%.o,$(PROTO_CXX_SRCS)) $(ECHO) Linking $(notdir $@) @mkdir -p ../lib @rm -f $@ - $(Q)$(CXX) $(LDFLAGS) -Wl,-soname,$(notdir $@) -shared -o $@ $^ + $(Q)$(CXX) $(LDFLAGS) -Wl,-soname,$(notdir $@) -shared -o $@ $^ \ + $(PROTOBUF_LIBS) # protoc generated headers are exported to ../include ../include/%.h: ./$(NAMESPACEDIR)/$(PBGEN)/%.h From 0c0ac0ab2f813345e7b48e1c2abb401259b10d81 Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 9 Oct 2014 16:06:00 -0500 Subject: [PATCH 304/516] rtapi/Submakefile: don't link avahi libs with rtapi_app `dpkg-shlibdeps` finds it's a useless dependency --- src/rtapi/Submakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rtapi/Submakefile b/src/rtapi/Submakefile index 4e95fcd980..d2c1a985e7 100644 --- a/src/rtapi/Submakefile +++ b/src/rtapi/Submakefile @@ -253,7 +253,7 @@ $(call TOOBJSDEPS, rtapi/$(threads)/rtapi_app.cc): EXTRAFLAGS = \ -o $@ \ $^ \ $(LDFLAGS) $(RT_LDFLAGS) \ - $(PROTOBUF_LIBS) $(CZMQ_LIBS) $(AVAHI_LIBS) $(LTTNG_UST_LIBS) \ + $(PROTOBUF_LIBS) $(CZMQ_LIBS) $(LTTNG_UST_LIBS) \ -lstdc++ -ldl -luuid # $(LIBBACKTRACE) # already linked into libmtalk From 3848858dc2bbf4dd798d236fbdaae0ba090e15f8 Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 9 Oct 2014 22:04:25 -0500 Subject: [PATCH 305/516] remove -lz from LDFLAGS dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/machinekit-posix/usr/libexec/linuxcnc/rtapi_app_posix was not linked against libz.so.1 (it uses none of the library's symbols) --- src/rtapi/Submakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rtapi/Submakefile b/src/rtapi/Submakefile index d2c1a985e7..a05f43018f 100644 --- a/src/rtapi/Submakefile +++ b/src/rtapi/Submakefile @@ -356,7 +356,7 @@ RTAPI_MSGD_CFLAGS := \ RTAPI_MSGD_LDFLAGS := \ $(PROTOBUF_LIBS) $(CZMQ_LIBS) $(AVAHI_LIBS) \ - -lstdc++ -ldl -lz -luuid + -lstdc++ -ldl -luuid # $(LIBBACKTRACE) # already linked into libmtalk From d13decec3324ad969c900214ec558fa8c01bed50 Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 9 Oct 2014 22:15:23 -0500 Subject: [PATCH 306/516] don't link RT_LDFLAGS to rtapi_app dpkg-shlibdeps: warning: package could avoid a useless dependency if [...]/rtapi_app_xenomai-kernel [...]/ulapi-xenomai-kernel.so were not linked against libnative.so.3 (they use none of the library's symbols) --- src/rtapi/Submakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rtapi/Submakefile b/src/rtapi/Submakefile index a05f43018f..5c90fd80d6 100644 --- a/src/rtapi/Submakefile +++ b/src/rtapi/Submakefile @@ -252,7 +252,7 @@ $(call TOOBJSDEPS, rtapi/$(threads)/rtapi_app.cc): EXTRAFLAGS = \ $(RTAPI_APP_RPATH) \ -o $@ \ $^ \ - $(LDFLAGS) $(RT_LDFLAGS) \ + $(LDFLAGS) \ $(PROTOBUF_LIBS) $(CZMQ_LIBS) $(LTTNG_UST_LIBS) \ -lstdc++ -ldl -luuid From dbcae545ff69714cdf13668f5bf1ac5b601bd022 Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 9 Oct 2014 22:19:21 -0500 Subject: [PATCH 307/516] don't link emcweb against libbost_serialization dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/machinekit/usr/bin/emcweb was not linked against libboost_serialization.so.1.49.0 (it uses none of the library's symbols) --- src/configure.ac | 1 - src/emc/usr_intf/Submakefile | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/configure.ac b/src/configure.ac index 664369c1d3..757281feca 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -3099,7 +3099,6 @@ AC_SUBST([SITEPY]) if test "$BUILD_EMCWEB" = yes; then # these are needed for the emcweb interface only - AX_BOOST_SERIALIZATION() AX_BOOST_THREAD() AX_BOOST_SYSTEM() fi diff --git a/src/emc/usr_intf/Submakefile b/src/emc/usr_intf/Submakefile index 027438cb02..409ea0900b 100644 --- a/src/emc/usr_intf/Submakefile +++ b/src/emc/usr_intf/Submakefile @@ -123,7 +123,7 @@ ifeq "$(BUILD_EMCWEB)" "yes" ../lib/librtapi_math.so.0 $(ECHO) Linking $(notdir $@) $(Q)$(CXX) $(LDFLAGS) $(BOOST_LDFLAGS) -o $@ $(ULFLAGS) $^ \ - $(BOOST_SERIALIZATION_LIB) $(BOOST_THREAD_LIB) $(BOOST_SYSTEM_LIB) \ + $(BOOST_THREAD_LIB) $(BOOST_SYSTEM_LIB) \ -lpthread -ldl TARGETS += ../bin/emcweb endif From ace974840c0d99955c45099e3e0baecfd893c94e Mon Sep 17 00:00:00 2001 From: John Morris Date: Wed, 14 Jan 2015 10:38:13 -0600 Subject: [PATCH 308/516] configure.in: Leave -lSM and -lICE out of $XAW_LIBS These aren't used directly and make warnings. dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/machinekit/usr/bin/xlinuxcnc was not linked against libICE.so.6 (it uses none of the library's symbols) dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/machinekit/usr/bin/xlinuxcnc was not linked against libSM.so.6 (it uses none of the library's symbols) Conflicts: src/configure.in --- src/configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/configure.ac b/src/configure.ac index 757281feca..356159d1b2 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -2887,7 +2887,7 @@ fi if test "x$HAVE_XAW" = "xno"; then AC_MSG_WARN([Xaw lib missing, you won't be able to build/run xemc. try installing it with 'apt-get install libxaw7-dev']) else - XAW_LIBS="$X_PRE_LIBS $X_LIBS -lX11 -lXaw -lXt" + XAW_LIBS="-lX11 -lXaw -lXt" fi AC_SUBST([HAVE_XAW]) AC_SUBST([XAW_LIBS]) From 82dd4fdce6cf388f7be4accb0e89a84d6abbf8a1 Mon Sep 17 00:00:00 2001 From: John Morris Date: Sat, 11 Oct 2014 18:48:03 -0500 Subject: [PATCH 309/516] debian/rules.in: dpkg-shlibdeps warning exclusions Add patterns to the `$(SHLIBDEPS_X)` variable that will be prefixed by `-X` and appended to the `dh_shlibdeps` command. Remove old, nonsensical `-l` argument (`/usr/lib` is in the default list already, and `/debian/machinekit/usr/lib` is not a standard path on any system!) --- debian/platform_pc | 0 debian/rules.in | 19 ++++++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 debian/platform_pc diff --git a/debian/platform_pc b/debian/platform_pc new file mode 100644 index 0000000000..e69de29bb2 diff --git a/debian/rules.in b/debian/rules.in index 7f367c2938..5a9528d269 100755 --- a/debian/rules.in +++ b/debian/rules.in @@ -22,6 +22,18 @@ endif # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 +# dpkg-shlibdeps warning exclusions +SHLIBDEPS_X := # add patterns here +# +# The name 'libtk8.6.so' can't be parsed by dpkg-shlibdeps, it seems: +# "can't extract name and version from library name 'libtk8.6.so' +SHLIBDEPS_X += tcltk/linuxcnc/linuxcnc.so dist-packages/_togl _togl.so +# +# libcanterp.so.0 and librs274.so.0: hack for now: see +# https://github.com/machinekit/machinekit/issues/324 +# "symbol ... used by ... found in none of the libraries" +SHLIBDEPS_X += libcanterp.so.0 librs274.so.0 + # Enable/disable thread flavors; all flavors disabled by default THREADS_POSIX = --without-posix THREADS_RT_PREEMPT = --without-rt-preempt @@ -223,10 +235,11 @@ binary-arch: build install cat debian/machinekit/DEBIAN/shlibs debian/shlibs.pre > \ debian/shlibs.local - #enable buster builds to work with problematic shlib deps in current packages - dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info -l debian/machinekit/usr/lib + #enable buster builds to work with problematic shlib deps in current packages + dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info \ + $(foreach p, $(SHLIBDEPS_X), -X $(p)) dh_gencontrol - + dh_md5sums dh_builddeb From 0322325d460a334c40d4dbcecde372160885b78e Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 10 Oct 2014 11:55:59 -0500 Subject: [PATCH 310/516] Move strstore() function to inifile.cc dpkg-shlibdeps: warning: symbol _Z8strstorePKc used by debian/machinekit/usr/lib/libpyplugin.so.0 found in none of the libraries Placed in `inifile.cc`, all `strstore()` using code shares a single `stringtable` in `liblinuxcncini.so.0`. `strstore()` is usually used directly with `.ini` file values, or else with computed strings resulting from those values. In cases where this isn't so clear, the sources are still in a binary object ultimately linked against `liblinuxcncini.so.0`. --- src/emc/pythonplugin/python_plugin.cc | 3 --- src/emc/rs274ngc/interp_internal.hh | 4 ---- src/emc/rs274ngc/interp_o_word.cc | 1 + src/emc/rs274ngc/interp_read.cc | 1 + src/emc/rs274ngc/interp_remap.cc | 1 + src/emc/rs274ngc/rs274ngc_pre.cc | 22 ---------------------- src/libnml/inifile/inifile.cc | 22 ++++++++++++++++++++++ src/libnml/inifile/inifile.h | 3 +++ 8 files changed, 28 insertions(+), 29 deletions(-) diff --git a/src/emc/pythonplugin/python_plugin.cc b/src/emc/pythonplugin/python_plugin.cc index 6564eb4297..4ef1ca8969 100644 --- a/src/emc/pythonplugin/python_plugin.cc +++ b/src/emc/pythonplugin/python_plugin.cc @@ -24,8 +24,6 @@ } while (0) -extern const char *strstore(const char *s); - int PythonPlugin::run_string(const char *cmd, bp::object &retval, bool as_file) { reload(); @@ -383,4 +381,3 @@ PythonPlugin *PythonPlugin::instantiate(struct _inittab *inittab) } return (python_plugin->usable()) ? python_plugin : NULL; } - diff --git a/src/emc/rs274ngc/interp_internal.hh b/src/emc/rs274ngc/interp_internal.hh index fa71a34ea7..7bbe0ca114 100644 --- a/src/emc/rs274ngc/interp_internal.hh +++ b/src/emc/rs274ngc/interp_internal.hh @@ -281,10 +281,6 @@ typedef enum { R_PLANE, OLD_Z } RETRACT_MODE; -// string table - to get rid of strdup/free -const char *strstore(const char *s); - - // Block execution phases in execution order // very carefully check code for sequencing when // adding phases! diff --git a/src/emc/rs274ngc/interp_o_word.cc b/src/emc/rs274ngc/interp_o_word.cc index 249a3fda3c..769bfd83d4 100644 --- a/src/emc/rs274ngc/interp_o_word.cc +++ b/src/emc/rs274ngc/interp_o_word.cc @@ -28,6 +28,7 @@ #include "interp_return.hh" #include "interp_internal.hh" #include "rs274ngc_interp.hh" +#include "inifile.hh" // strstore() namespace bp = boost::python; diff --git a/src/emc/rs274ngc/interp_read.cc b/src/emc/rs274ngc/interp_read.cc index 721d031e20..9b5b69601c 100644 --- a/src/emc/rs274ngc/interp_read.cc +++ b/src/emc/rs274ngc/interp_read.cc @@ -28,6 +28,7 @@ #include "rs274ngc_return.hh" #include "interp_internal.hh" #include "rs274ngc_interp.hh" +#include "inifile.hh" // strstore() /****************************************************************************/ diff --git a/src/emc/rs274ngc/interp_remap.cc b/src/emc/rs274ngc/interp_remap.cc index 663d86cff2..0d7e0135a2 100644 --- a/src/emc/rs274ngc/interp_remap.cc +++ b/src/emc/rs274ngc/interp_remap.cc @@ -24,6 +24,7 @@ #include "rs274ngc_return.hh" #include "rs274ngc_interp.hh" #include "interp_internal.hh" +#include "inifile.hh" // strstore() namespace bp = boost::python; diff --git a/src/emc/rs274ngc/rs274ngc_pre.cc b/src/emc/rs274ngc/rs274ngc_pre.cc index e59bd664ec..cef2e6dcef 100644 --- a/src/emc/rs274ngc/rs274ngc_pre.cc +++ b/src/emc/rs274ngc/rs274ngc_pre.cc @@ -79,8 +79,6 @@ include an option for suppressing superfluous commands. #include #include #include -#include -#include #include "inifile.hh" // INIFILE #include "rs274ngc.hh" @@ -2595,23 +2593,3 @@ FILE *Interp::find_ngc_file(setup_pointer settings,const char *basename, char *f strcpy(foundhere, newFileName); return newFP; } - - -static std::set stringtable; - -const char *strstore(const char *s) -{ - using namespace std; - - if (s == NULL) - throw invalid_argument("strstore(): NULL argument"); - - std::set::iterator it = stringtable.find(s); - if (it == stringtable.end()) { - std::string *p = new std::string(s); - stringtable.insert(*p); - return p->c_str(); - } - return (*it).c_str(); -} - diff --git a/src/libnml/inifile/inifile.cc b/src/libnml/inifile/inifile.cc index 2725416c28..fa291ed741 100644 --- a/src/libnml/inifile/inifile.cc +++ b/src/libnml/inifile/inifile.cc @@ -18,6 +18,9 @@ #include /* strstr() */ #include /* isspace() */ #include +#include /* std::set */ +#include /* std::string */ +#include /* invalid_argument() */ #include "config.h" @@ -672,3 +675,22 @@ iniFindDouble(FILE *fp, const char *tag, const char *section, double *result) IniFile f(false, fp); return(f.Find(result, tag, section)); } + + +static std::set stringtable; + +const char *strstore(const char *s) +{ + using namespace std; + + if (s == NULL) + throw invalid_argument("strstore(): NULL argument"); + + std::set::iterator it = stringtable.find(s); + if (it == stringtable.end()) { + std::string *p = new std::string(s); + stringtable.insert(*p); + return p->c_str(); + } + return (*it).c_str(); +} diff --git a/src/libnml/inifile/inifile.h b/src/libnml/inifile/inifile.h index 341674b9d8..edce4b25cd 100644 --- a/src/libnml/inifile/inifile.h +++ b/src/libnml/inifile/inifile.h @@ -31,6 +31,9 @@ extern const int iniFindInt(FILE *fp, const char *tag, const char *section, int extern const int iniFindDouble(FILE *fp, const char *tag, const char *section, double *result); extern int TildeExpansion(const char *file, char *path, size_t size); +// string table - to get rid of strdup/free +extern const char *strstore(const char *s); + #ifdef __cplusplus } #endif From ce466337c0b3ebf2a2efc12e87b08e6884e35e3b Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 8 Oct 2018 17:02:41 +0800 Subject: [PATCH 311/516] liblinuxcnculapi.so: link in syslog_async dpkg-shlibdeps: warning: symbol syslog_async used by debian/machinekit/usr/lib/liblinuxcnculapi.so.0 found in none of the libraries dpkg-shlibdeps: warning: symbol async_log_open used by debian/machinekit/usr/lib/liblinuxcnculapi.so.0 found in none of the libraries dpkg-shlibdeps: warning: symbol openlog_async used by debian/machinekit/usr/lib/liblinuxcnculapi.so.0 found in none of the libraries --- src/rtapi/Submakefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/rtapi/Submakefile b/src/rtapi/Submakefile index 5c90fd80d6..33e9e88b68 100644 --- a/src/rtapi/Submakefile +++ b/src/rtapi/Submakefile @@ -110,7 +110,8 @@ ULAPI_AUTOLOAD_SRCS := \ rtapi/ulapi_autoload.c \ rtapi/rtapi_compat.c \ rtapi/rtapi_hexdump.c \ - rtapi/rtapi_support.c + rtapi/rtapi_support.c \ + machinetalk/lib/syslog_async.c USERSRCS += $(ULAPI_AUTOLOAD_SRCS) From d1fed9cc341c1f67b054c466f185c1b430092293 Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 8 Oct 2018 17:32:51 +0800 Subject: [PATCH 312/516] tcl/hal.so: don't link in TCL libs dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/machinekit/usr/lib/tcltk/linuxcnc/hal.so was not linked against libz.so.1 (it uses none of the library's symbols) dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/machinekit/usr/lib/tcltk/linuxcnc/hal.so was not linked against libXext.so.6 (it uses none of the library's symbols) dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/machinekit/usr/lib/tcltk/linuxcnc/hal.so was not linked against libXft.so.2 (it uses none of the library's symbols) dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/machinekit/usr/lib/tcltk/linuxcnc/hal.so was not linked against libXss.so.1 (it uses none of the library's symbols) dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/machinekit/usr/lib/tcltk/linuxcnc/hal.so was not linked against libtk8.6.so (it uses none of the library's symbols) dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/machinekit/usr/lib/tcltk/linuxcnc/hal.so was not linked against libXinerama.so.1 (it uses none of the library's symbols) --- src/hal/utils/Submakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hal/utils/Submakefile b/src/hal/utils/Submakefile index 12aeca856c..862bc38111 100644 --- a/src/hal/utils/Submakefile +++ b/src/hal/utils/Submakefile @@ -16,7 +16,7 @@ $(call TOOBJSDEPS, hal/utils/halsh.c) : EXTRAFLAGS += $(TCL_CFLAGS) ../lib/libmtalk.so.0 \ ../lib/librtapi_math.so.0 $(ECHO) Linking $(notdir $@) - $(Q)$(CC) $(LDFLAGS) -shared $^ $(TCL_LIBS) -o $@ + $(Q)$(CC) $(LDFLAGS) -shared $^ -o $@ TARGETS += ../tcl/hal.so $(call TOOBJSDEPS, $(HALCMDCCSRCS)) : EXTRAFLAGS = \ From 673b4d234384a53d653f7da737d63eafb90c81aa Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 8 Oct 2018 17:52:48 +0800 Subject: [PATCH 313/516] debian/rules: fix up ignored shlibdeps - Simplify the `libtk8.6.so` list - Add a few binaries that are linked with unneeded GTK libs (list comes from `PKG_CHECK_MODULES`, outside our control) --- debian/rules.in | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/debian/rules.in b/debian/rules.in index 5a9528d269..410346234b 100755 --- a/debian/rules.in +++ b/debian/rules.in @@ -27,12 +27,16 @@ SHLIBDEPS_X := # add patterns here # # The name 'libtk8.6.so' can't be parsed by dpkg-shlibdeps, it seems: # "can't extract name and version from library name 'libtk8.6.so' -SHLIBDEPS_X += tcltk/linuxcnc/linuxcnc.so dist-packages/_togl _togl.so +SHLIBDEPS_X += linuxcnc.so _togl.so # # libcanterp.so.0 and librs274.so.0: hack for now: see # https://github.com/machinekit/machinekit/issues/324 # "symbol ... used by ... found in none of the libraries" SHLIBDEPS_X += libcanterp.so.0 librs274.so.0 +# +# halmeter classicladder halscope link to $(GTK_LIBS), which includes +# several libs that aren't used (but several that are needed) +SHLIBDEPS_X += halmeter classicladder halscope # Enable/disable thread flavors; all flavors disabled by default THREADS_POSIX = --without-posix From fe36f553e178682ca1a684cdd7828f6008c645e4 Mon Sep 17 00:00:00 2001 From: John Morris Date: Wed, 10 Oct 2018 07:27:04 +0000 Subject: [PATCH 314/516] hal/lib/hal_rcomp.c: Fix compiler warnings `-Wdiscarded-qualifiers` Remove the `const` qualifier from the `hal_compiled_comp_t.pin` field, and deal with the fallout Compiling hal/lib/hal_rcomp.c hal/lib/hal_rcomp.c: In function 'hal_ccomp_report': hal/lib/hal_rcomp.c:309:19: warning: passing argument 1 of 'pin_value' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers] pin_value(pin), cb_data)) < 0) ^~~ In file included from hal/lib/hal_rcomp.c:5:0: hal/lib/hal_priv.h:389:27: note: expected 'hal_pin_t * {aka struct hal_pin *}' but argument is of type 'const hal_pin_t * {aka const struct hal_pin *}' static inline hal_data_u *pin_value(hal_pin_t *pin) { ^~~~~~~~~ --- src/hal/cython/machinekit/hal_component.pyx | 2 +- src/hal/cython/machinekit/hal_util.pxd | 2 +- src/hal/lib/hal_rcomp.c | 2 +- src/hal/lib/hal_rcomp.h | 4 ++-- src/machinetalk/haltalk/haltalk_rcomp.cc | 8 ++++---- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/hal/cython/machinekit/hal_component.pyx b/src/hal/cython/machinekit/hal_component.pyx index 98e09f059f..6200736fb1 100644 --- a/src/hal/cython/machinekit/hal_component.pyx +++ b/src/hal/cython/machinekit/hal_component.pyx @@ -168,7 +168,7 @@ cdef class Component(HALObject): # fail changed() if not one of the above cdef int comp_callback(const int phase, const hal_compiled_comp_t * cc, - const hal_pin_t *p, + hal_pin_t *p, const hal_data_u *value, void *userdata): arg = userdata diff --git a/src/hal/cython/machinekit/hal_util.pxd b/src/hal/cython/machinekit/hal_util.pxd index 54edba3c25..088cfbeb27 100644 --- a/src/hal/cython/machinekit/hal_util.pxd +++ b/src/hal/cython/machinekit/hal_util.pxd @@ -24,7 +24,7 @@ cdef inline int shmoff(char *ptr): return ptr - hal_shmem_base -cdef inline pypin_value(const hal_pin_t *pin): +cdef inline pypin_value(hal_pin_t *pin): return hal2py(pin_type(pin), pin_value(pin)) diff --git a/src/hal/lib/hal_rcomp.c b/src/hal/lib/hal_rcomp.c index df4888b215..c88d9992eb 100644 --- a/src/hal/lib/hal_rcomp.c +++ b/src/hal/lib/hal_rcomp.c @@ -301,7 +301,7 @@ int hal_ccomp_report(hal_compiled_comp_t *cc, for (i = 0; i < cc->n_pins; i++) { if (report_all || RTAPI_BIT_TEST(cc->changed, i)) { - const hal_pin_t *pin = cc->pin[i]; + hal_pin_t *pin = cc->pin[i]; // XXX this is not a good API // drop the fourth argument and pass only the pin // to force accessor use in the report callback diff --git a/src/hal/lib/hal_rcomp.h b/src/hal/lib/hal_rcomp.h index edde67b3c4..94a5753dd3 100644 --- a/src/hal/lib/hal_rcomp.h +++ b/src/hal/lib/hal_rcomp.h @@ -11,7 +11,7 @@ typedef struct { int magic; hal_comp_t *comp; int n_pins; - const hal_pin_t **pin; + hal_pin_t **pin; unsigned long *changed; // bitmap hal_data_u *tracking; // tracking values of monitored pins void *user_data; // uninterpreted by HAL code @@ -35,7 +35,7 @@ typedef enum { typedef int(*comp_report_callback_t)(const int phase, const hal_compiled_comp_t *cc, - const hal_pin_t *pin, + hal_pin_t *pin, const hal_data_u *value, void *cb_data); diff --git a/src/machinetalk/haltalk/haltalk_rcomp.cc b/src/machinetalk/haltalk/haltalk_rcomp.cc index b78b4c7332..97683c76e9 100644 --- a/src/machinetalk/haltalk/haltalk_rcomp.cc +++ b/src/machinetalk/haltalk/haltalk_rcomp.cc @@ -23,14 +23,14 @@ static int comp_report_cb(const int phase, const hal_compiled_comp_t *cc, - const hal_pin_t *pin, + hal_pin_t *pin, const hal_data_u *vp, void *cb_data); static int add_pins_to_items(const int phase, const hal_compiled_comp_t *cc, - const hal_pin_t *pin, + hal_pin_t *pin, const hal_data_u *vp, void *cb_data); @@ -286,7 +286,7 @@ int release_comps(htself_t *self) static int comp_report_cb(const int phase, const hal_compiled_comp_t *cc, - const hal_pin_t *pin, + hal_pin_t *pin, const hal_data_u *vp, void *cb_data) { @@ -323,7 +323,7 @@ comp_report_cb(const int phase, static int add_pins_to_items(const int phase, const hal_compiled_comp_t *cc, - const hal_pin_t *pin, + hal_pin_t *pin, const hal_data_u *vp, void *cb_data) { From f7ea24e7c58d042a642619e08351e9c239d721ff Mon Sep 17 00:00:00 2001 From: John Morris Date: Wed, 10 Oct 2018 15:42:30 +0800 Subject: [PATCH 315/516] hal/lib/hal_object_selectors.c: fix compiler warning The `user_ptr*` atrocity can only be righted with another atrocity. Compiling hal/lib/hal_object_selectors.c src/hal/lib/hal_object_selectors.c: In function 'yield_name': hal/lib/hal_object_selectors.c:23:21: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers] args->user_ptr1 = hh_get_name(o.hdr); ^ --- src/hal/lib/hal_object_selectors.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hal/lib/hal_object_selectors.c b/src/hal/lib/hal_object_selectors.c index 21b9c20261..4ebaf4e4ed 100644 --- a/src/hal/lib/hal_object_selectors.c +++ b/src/hal/lib/hal_object_selectors.c @@ -20,7 +20,7 @@ int yield_match(hal_object_ptr o, foreach_args_t *args) int yield_name(hal_object_ptr o, foreach_args_t *args) { - args->user_ptr1 = hh_get_name(o.hdr); + args->user_ptr1 = (void *)hh_get_name(o.hdr); return 1; // terminate visit on first match } From ca70b569d3dc1d9955f76b0115e07cc846e624f0 Mon Sep 17 00:00:00 2001 From: John Morris Date: Wed, 10 Oct 2018 15:50:12 +0800 Subject: [PATCH 316/516] hal/lib/hal_priv.h: fix compiler warning `-Wdiscarded-qualifiers` Compiling hal/utils/meter.c hal/utils/meter.c: In function 'refresh_value': src/hal/utils/meter.c:582:51: warning: passing argument 2 of 'data_value' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers] value_str = data_value(param_type(probe->param),param_value(probe->param)); ^~~~~~~~~~~ hal/utils/meter.c:130:14: note: expected 'void *' but argument is of type 'const hal_data_u * {aka const union *}' static char *data_value(int type, void *valptr); ^~~~~~~~~~ --- src/hal/lib/hal_priv.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hal/lib/hal_priv.h b/src/hal/lib/hal_priv.h index dc89fb4466..ba832647e8 100644 --- a/src/hal/lib/hal_priv.h +++ b/src/hal/lib/hal_priv.h @@ -380,7 +380,7 @@ static inline hal_data_u *sig_value(hal_sig_t *sig) { return &sig->value; } -static inline const hal_data_u *param_value(const hal_param_t *param) +static inline hal_data_u *param_value(const hal_param_t *param) { return (hal_data_u *)SHMPTR(param->data_ptr); } From e63fe55c062e618909ce41d9887235fcf106094b Mon Sep 17 00:00:00 2001 From: John Morris Date: Wed, 10 Oct 2018 16:26:45 +0800 Subject: [PATCH 317/516] Fix compiler warnings in icomps: `-Wincompatible-pointer-types` The `argv` array's *contents* are supposed to be constant, not the pointer to the array. Fixing the following warning unleashed a whole slew of other warnings where `argv` was defined with constant pointer. Compiling realtime posix hal/icomp-example/icomp.c hal/icomp-example/icomp.c: In function 'instantiate': hal/icomp-example/icomp.c:132:35: warning: passing argument 2 of 'getopt_long' from incompatible pointer type [-Wincompatible-pointer-types] while ((c = getopt_long(argc, argv, ":f:", longopts, NULL)) != -1) { ^~~~ In file included from hal/icomp-example/icomp.c:2:0: /usr/include/getopt.h:173:12: note: expected 'char * const*' but argument is of type 'const char **' extern int getopt_long (int ___argc, char *const *___argv, ^~~~~~~~~~~ --- src/hal/components/encoder_ratiov2.c | 4 ++-- src/hal/components/encoderv2.c | 4 ++-- src/hal/components/pwmgenv2.c | 4 ++-- src/hal/components/stepgenv2.c | 4 ++-- src/hal/icomp-example/icomp.c | 3 ++- src/hal/icomp-example/lutn-demo.c | 2 +- src/hal/lib/hal.h | 5 +++-- src/hal/lib/hal_comp.c | 4 ++-- src/hal/lib/hal_funct.c | 3 ++- src/hal/lib/hal_internal.h | 2 +- src/hal/lib/hal_memory.c | 2 +- src/hal/lib/hal_priv.h | 8 +++++--- src/hal/user_icomps/watch.c | 13 ++++++++----- src/hal/userfunct-example/ufdemo.c | 2 +- src/hal/utils/instcomp.g | 17 ++++++++++++----- 15 files changed, 46 insertions(+), 31 deletions(-) diff --git a/src/hal/components/encoder_ratiov2.c b/src/hal/components/encoder_ratiov2.c index e07907893d..5af73e3519 100644 --- a/src/hal/components/encoder_ratiov2.c +++ b/src/hal/components/encoder_ratiov2.c @@ -199,7 +199,7 @@ static int export_encoder_pair(const char *name, const int inst_id, encoder_pair_t * addr); static int sample(void *arg, const hal_funct_args_t *fa); static int update(void *arg, const hal_funct_args_t *fa); -static int instantiate_encoder_pair(const int argc, const char**argv); +static int instantiate_encoder_pair(const int argc, char* const *argv); static int delete_encoder_pair(const char *name, void *inst, const int inst_size); /*********************************************************************** @@ -250,7 +250,7 @@ void rtapi_app_exit(void) hal_exit(comp_id); } -static int instantiate_encoder_pair(const int argc, const char**argv) +static int instantiate_encoder_pair(const int argc, char* const *argv) { encoder_pair_t *p; int retval; diff --git a/src/hal/components/encoderv2.c b/src/hal/components/encoderv2.c index d722dfa234..629b7545c7 100644 --- a/src/hal/components/encoderv2.c +++ b/src/hal/components/encoderv2.c @@ -203,7 +203,7 @@ static const char *prefix = "encoderv2"; static int export_encoder(const char *name, const int inst_id, counter_t *p); static int update(void *arg, const hal_funct_args_t *fa); static int capture(void *arg, const hal_funct_args_t *fa); -static int instantiate_encoder(const int argc, const char**argv); +static int instantiate_encoder(const int argc, char* const *argv); static int delete_encoder(const char *name, void *inst, const int inst_size); /*********************************************************************** @@ -252,7 +252,7 @@ void rtapi_app_exit(void) hal_exit(comp_id); } -static int instantiate_encoder(const int argc, const char**argv) +static int instantiate_encoder(const int argc, char* const *argv) { counter_t *p; int retval; diff --git a/src/hal/components/pwmgenv2.c b/src/hal/components/pwmgenv2.c index e674532570..5411f99384 100644 --- a/src/hal/components/pwmgenv2.c +++ b/src/hal/components/pwmgenv2.c @@ -187,7 +187,7 @@ static int export_pwmgen(const char *name, const int inst_id, pwmgen_t * addr, const int output_type); static int make_pulses(void *arg, const hal_funct_args_t *fa); static int update(void *arg, const hal_funct_args_t *fa); -static int instantiate_pwmgen(const int argc, const char**argv); +static int instantiate_pwmgen(const int argc, char* const *argv); static int delete_pwmgen(const char *name, void *inst, const int inst_size); /*********************************************************************** @@ -236,7 +236,7 @@ void rtapi_app_exit(void) hal_exit(comp_id); } -static int instantiate_pwmgen(const int argc, const char**argv) +static int instantiate_pwmgen(const int argc, char* const *argv) { pwmgen_t *p; int retval; diff --git a/src/hal/components/stepgenv2.c b/src/hal/components/stepgenv2.c index d66861bd64..4900639167 100644 --- a/src/hal/components/stepgenv2.c +++ b/src/hal/components/stepgenv2.c @@ -504,7 +504,7 @@ static int update_freq(void *arg, const hal_funct_args_t *fa); static int update_pos(void *arg, const hal_funct_args_t *fa); static int setup_user_step_type(void); static CONTROL parse_ctrl_type(const char *ctrl); -static int instantiate_stepgen( const int argc, const char**argv); +static int instantiate_stepgen( const int argc, char* const *argv); static int delete_stepgen(const char *name, void *inst, const int inst_size); @@ -579,7 +579,7 @@ int rtapi_app_main(void) return 0; } -static int instantiate_stepgen(const int argc, const char**argv) +static int instantiate_stepgen(const int argc, char* const *argv) { int retval; const char* name; diff --git a/src/hal/icomp-example/icomp.c b/src/hal/icomp-example/icomp.c index 6ff9c7376e..04677a8c8c 100644 --- a/src/hal/icomp-example/icomp.c +++ b/src/hal/icomp-example/icomp.c @@ -97,7 +97,7 @@ static int export_halobjs(struct inst_data *ip, int owner_id, const char *name) } // constructor - init all HAL pins, params, funct etc here -static int instantiate(const int argc, const char**argv) +static int instantiate(const int argc, char* const *argv) { // argv[0]: component name const char *name = argv[1]; // instance name @@ -130,6 +130,7 @@ static int instantiate(const int argc, const char**argv) }; int c; while ((c = getopt_long(argc, argv, ":f:", longopts, NULL)) != -1) { + // char * const argv[] switch (c) { case 'f': myfile = optarg; diff --git a/src/hal/icomp-example/lutn-demo.c b/src/hal/icomp-example/lutn-demo.c index 359f51772f..3232e07678 100644 --- a/src/hal/icomp-example/lutn-demo.c +++ b/src/hal/icomp-example/lutn-demo.c @@ -76,7 +76,7 @@ static int lutn(void *arg, const hal_funct_args_t *fa) } static int instantiate_lutn(const int argc, - const char**argv) + char* const *argv) { const char *name = argv[1]; struct inst_data *ip; diff --git a/src/hal/lib/hal.h b/src/hal/lib/hal.h index 4c053f8954..b788f24bc9 100644 --- a/src/hal/lib/hal.h +++ b/src/hal/lib/hal.h @@ -293,7 +293,7 @@ typedef enum { // no instparms are applied as all arguments follow the '--' separator // argv = [foo, bar, instparm1=123, instparm2=3.14, --foo, --bar, baz, key=value] // argc = 8 -typedef int (*hal_constructor_t) (const int argc, const char**argv); +typedef int (*hal_constructor_t) (const int argc, char* const *argv); typedef int (*hal_destructor_t) (const char *name, void *inst, const int inst_size); // generic base function @@ -1149,7 +1149,8 @@ static inline int hal_unreference_vtable(int vtable_id) // if the return value < 0, this signifies a HAL library error code. // if the return value is 0, and ureturn is not NULL, // the usrfunct's return value is stored in *ureturn. -int hal_call_usrfunct(const char *name, const int argc, const char **argv, int *ureturn); +int hal_call_usrfunct(const char *name, const int argc, + char * const *argv, int *ureturn); // public instance API: diff --git a/src/hal/lib/hal_comp.c b/src/hal/lib/hal_comp.c index 4a57ad3fe2..3c5c190423 100644 --- a/src/hal/lib/hal_comp.c +++ b/src/hal/lib/hal_comp.c @@ -477,7 +477,7 @@ int free_comp_struct(hal_comp_t * comp) static int create_instance(const hal_funct_args_t *fa) { const int argc = fa_argc(fa); - const char **argv = fa_argv(fa); + char * const *argv = fa_argv(fa); #if 0 HALDBG("'%s' called, arg=%p argc=%d", @@ -510,7 +510,7 @@ static int create_instance(const hal_funct_args_t *fa) static int delete_instance(const hal_funct_args_t *fa) { const int argc = fa_argc(fa); - const char **argv = fa_argv(fa); + char * const *argv = fa_argv(fa); HALDBG("'%s' called, arg=%p argc=%d", fa_funct_name(fa), fa_arg(fa), argc); diff --git a/src/hal/lib/hal_funct.c b/src/hal/lib/hal_funct.c index e893013cab..31e2517ad8 100644 --- a/src/hal/lib/hal_funct.c +++ b/src/hal/lib/hal_funct.c @@ -145,7 +145,8 @@ static int halg_export_xfunctfv(const int use_hal_mutex, } #endif // RTAPI -int hal_call_usrfunct(const char *name, const int argc, const char **argv, int *ureturn) +int hal_call_usrfunct(const char *name, const int argc, char * const *argv, + int *ureturn) { hal_funct_t *funct; int i; diff --git a/src/hal/lib/hal_internal.h b/src/hal/lib/hal_internal.h index 6f000213ef..58a1b1ff87 100644 --- a/src/hal/lib/hal_internal.h +++ b/src/hal/lib/hal_internal.h @@ -74,7 +74,7 @@ int halg_free_argv(const bool use_hal_mutex, char **argv); char **halg_dupargv(const bool use_hal_mutex, const int argc, - const char **argv); + char * const *argv); RTAPI_END_DECLS diff --git a/src/hal/lib/hal_memory.c b/src/hal/lib/hal_memory.c index 5f92ae9ffc..fcc513dbb5 100644 --- a/src/hal/lib/hal_memory.c +++ b/src/hal/lib/hal_memory.c @@ -218,7 +218,7 @@ int halg_free_single_str(char *s) char **halg_dupargv(const bool use_hal_mutex, const int argc, - const char **argv) + char * const *argv) { int i; if (argc > MAX_ARGC) diff --git a/src/hal/lib/hal_priv.h b/src/hal/lib/hal_priv.h index ba832647e8..0614bdcd45 100644 --- a/src/hal/lib/hal_priv.h +++ b/src/hal/lib/hal_priv.h @@ -539,7 +539,7 @@ typedef struct hal_funct_args { // argument vector for FS_USERLAND; 0/NULL for others int argc; - const char **argv; + char * const *argv; } hal_funct_args_t ; // signatures @@ -659,7 +659,8 @@ static inline const char* fa_funct_name(const hal_funct_args_t *fa) } static inline const int fa_argc(const hal_funct_args_t *fa) { return fa->argc; } -static inline const char** fa_argv(const hal_funct_args_t *fa) { return fa->argv; } +static inline char* const * fa_argv( + const hal_funct_args_t *fa) { return fa->argv; } static inline const void * fa_arg(const hal_funct_args_t *fa) { return fa->funct->arg; } @@ -855,7 +856,8 @@ void report_memory_usage(void); char *halg_strdup(const int use_hal_mutex, const char *paramptr); int halg_free_str(char **s); // will set *s to NULL -char **halg_dupargv(const bool use_hal_mutex, const int argc, const char **argv); +char **halg_dupargv(const bool use_hal_mutex, const int argc, + char * const *argv); int halg_free_argv(const bool use_hal_mutex, char **argv); int halg_free_single_str(char *s); diff --git a/src/hal/user_icomps/watch.c b/src/hal/user_icomps/watch.c index a2aa344a81..6ade63df23 100644 --- a/src/hal/user_icomps/watch.c +++ b/src/hal/user_icomps/watch.c @@ -158,9 +158,10 @@ static int maxpins __attribute__((unused)) = 1; static int watch_(void *arg, const hal_funct_args_t *fa); -static int instantiate(const int argc, const char**argv); +static int instantiate(const int argc, char* const *argv); -static int extra_inst_setup(struct inst_data* ip, const char *name, int argc, const char**argv); +static int extra_inst_setup(struct inst_data* ip, const char *name, int argc, + char* const *argv); // var to take pin names passed to newinst char target_pin_name[HAL_NAME_LEN]; @@ -168,7 +169,8 @@ char preset_name[HAL_NAME_LEN]; int preset_type; //////////////////////////////////////////////////////////////////////////////////////////////////////////////// -static int export_halobjs(struct inst_data *ip, int owner_id, const char *name, const int argc, const char **argv) +static int export_halobjs(struct inst_data *ip, int owner_id, const char *name, + const int argc, char * const *argv) { char buf[HAL_NAME_LEN + 1]; int r = 0; @@ -232,7 +234,7 @@ int r = 0; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -static int instantiate(const int argc, const char**argv) +static int instantiate(const int argc, char* const *argv) { struct inst_data *ip; // argv[0]: component name argv[1]: instance @@ -640,7 +642,8 @@ static hal_bit_t latched = 0, triggered = 0; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -static int extra_inst_setup(struct inst_data *ip, const char *name, int argc, const char**argv) +static int extra_inst_setup(struct inst_data *ip, const char *name, + int argc, char* const *argv) { int x; diff --git a/src/hal/userfunct-example/ufdemo.c b/src/hal/userfunct-example/ufdemo.c index 069b0db7f4..db6cab0945 100644 --- a/src/hal/userfunct-example/ufdemo.c +++ b/src/hal/userfunct-example/ufdemo.c @@ -51,7 +51,7 @@ static int xthread_funct(void *arg, const hal_funct_args_t *fa) static int usrfunct_demo(const hal_funct_args_t *fa) { const int argc = fa_argc(fa); - const char **argv = fa_argv(fa); + char * const *argv = fa_argv(fa); rtapi_print_msg(RTAPI_MSG_INFO, "%s: userfunct '%s' called, arg='%s' argc=%d\n", compname, fa_funct_name(fa), (const char *)fa_arg(fa), argc); diff --git a/src/hal/utils/instcomp.g b/src/hal/utils/instcomp.g index 538b4ab3cc..dead10ac2e 100644 --- a/src/hal/utils/instcomp.g +++ b/src/hal/utils/instcomp.g @@ -647,11 +647,13 @@ def prologue(f): print >>f, "static int %s(void *arg, const hal_funct_args_t *fa);\n" % to_c(name) names[name] = 1 - print >>f, "static int instantiate(const int argc, const char**argv);\n" + print >>f, "static int instantiate(const int argc, char* const *argv);\n" # we always have a delete function now - to free local_argv print >>f, "static int delete(const char *name, void *inst, const int inst_size);\n" if options.get("extra_inst_setup") : - print >>f, "static int extra_inst_setup(struct inst_data* ip, const char *name, int argc, const char**argv);\n" + print >>f, "static int extra_inst_setup(\n" \ + "struct inst_data* ip, const char *name, int argc,\n" \ + "char* const *argv);\n" if options.get("extra_inst_cleanup"): print >>f, "static void extra_inst_cleanup(const char *name, void *inst, const int inst_size);\n" @@ -684,7 +686,9 @@ def prologue(f): # ########################### export_halobjs() ###################################################### - print >>f, "static int export_halobjs(struct inst_data *ip, int owner_id, const char *name, const int argc, const char **argv)\n{" + print >>f, "static int export_halobjs(\n" \ + "struct inst_data *ip, int owner_id, const char *name,\n" \ + "const int argc, char * const *argv)\n{" print >>f, " char buf[HAL_NAME_LEN + 1];" print >>f, " int r = 0;" @@ -823,7 +827,7 @@ def prologue(f): ########################### instantiate() ############################################################### print >>f, "\n// constructor - init all HAL pins, funct etc here" - print >>f, "static int instantiate(const int argc, const char**argv)\n{" + print >>f, "static int instantiate(const int argc, char* const *argv)\n{" print >>f, "struct inst_data *ip;" print >>f, "// argv[0]: component name" print >>f, "const char *name = argv[1];" # instance name @@ -970,7 +974,10 @@ def prologue(f): if options.get("extra_inst_setup"): print >>f, "// if the extra_inst_setup returns non zero it will abort the module creation" print >>f, "#undef EXTRA_INST_SETUP" - print >>f, "#define EXTRA_INST_SETUP() static int extra_inst_setup(struct inst_data *ip, const char *name, int argc, const char**argv)" + print >>f, "#define EXTRA_INST_SETUP() \\\n" \ + "static int extra_inst_setup( \\\n" \ + "struct inst_data *ip, const char *name, \\\n" \ + "int argc, char* const *argv)" if options.get("extra_inst_cleanup"): print >>f, "#undef EXTRA_INST_CLEANUP" print >>f, "#define EXTRA_INST_CLEANUP() static void extra_inst_cleanup(const char *name, void *inst, const int inst_size)" From 6c8bff5afc63c0750e0d0fcaba4528d360daf971 Mon Sep 17 00:00:00 2001 From: John Morris Date: Wed, 10 Oct 2018 16:31:36 +0800 Subject: [PATCH 318/516] rtfault.comp: silence compiler warning Compiling realtime posix halcomp-srcs/hal/components/rtfault.c src/hal/components/rtfault.comp: In function '_': hal/components/rtfault.comp:34:2: warning: implicit declaration of function 'printf' [-Wimplicit-function-declaration] printf("fault # %d\n", n--); ^~~~~~ hal/components/rtfault.comp:34:2: warning: incompatible implicit declaration of built-in function 'printf' hal/components/rtfault.comp:34:2: note: include '' or provide a declaration of 'printf' --- src/hal/components/rtfault.comp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/hal/components/rtfault.comp b/src/hal/components/rtfault.comp index d78bf8e3d9..5272e76d0f 100644 --- a/src/hal/components/rtfault.comp +++ b/src/hal/components/rtfault.comp @@ -13,6 +13,7 @@ license "GPL"; #include "rtapi.h" #if defined(BUILD_SYS_USER_DSO) #include +#include #endif #include static bool previous_fault; From 6e4c9e3726e5af48db5081870810befb9b1f82d1 Mon Sep 17 00:00:00 2001 From: John Morris Date: Wed, 10 Oct 2018 16:33:23 +0800 Subject: [PATCH 319/516] user_icomps/watch.c: silence compiler warnings Compiling realtime posix hal/user_icomps/watch.c hal/user_icomps/watch.c: In function 'set_common': hal/user_icomps/watch.c:423:11: warning: unused variable 'llval' [-Wunused-variable] long long llval; ^~~~~ hal/user_icomps/watch.c:422:20: warning: unused variable 'ullval' [-Wunused-variable] unsigned long long ullval; ^~~~~~ hal/user_icomps/watch.c: In function 'watch_': hal/user_icomps/watch.c:577:31: warning: unused variable 'triggered' [-Wunused-variable] static hal_bit_t latched = 0, triggered = 0; ^~~~~~~~~ hal/user_icomps/watch.c:572:11: warning: unused variable 'n' [-Wunused-variable] hal_s32_t n; ^ At top level: hal/user_icomps/watch.c:577:31: warning: 'triggered' defined but not used [-Wunused-variable] static hal_bit_t latched = 0, triggered = 0; ^~~~~~~~~ --- src/hal/user_icomps/watch.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/hal/user_icomps/watch.c b/src/hal/user_icomps/watch.c index 6ade63df23..20949af4a8 100644 --- a/src/hal/user_icomps/watch.c +++ b/src/hal/user_icomps/watch.c @@ -419,8 +419,6 @@ int retval = 0; double fval; long lval; unsigned long ulval; -unsigned long long ullval; -long long llval; char *cp = value; switch (type) { @@ -569,12 +567,11 @@ static int watch_(void *arg, const hal_funct_args_t *fa) long period __attribute__((unused)) = fa_period(fa); struct inst_data *ip __attribute__((unused)) = arg; -hal_s32_t n; hal_float_t valuel = 0.0; char value[16]; static int counter = 0; static hal_float_t valuef = 0.0; -static hal_bit_t latched = 0, triggered = 0; +static hal_bit_t latched = 0; if(*(ip->_reset)) { From d0e1b35659c4a3a9412a73d4796239f5b7687a2f Mon Sep 17 00:00:00 2001 From: John Morris Date: Wed, 10 Oct 2018 16:53:54 +0800 Subject: [PATCH 320/516] conv_float_u64.icomp: silence compiler warning Compiling realtime posix halcomp-srcs/hal/i_components/conv_float_u64.c src/hal/i_components/conv_float_u64.icomp: In function 'conv_float_u64_': hal/i_components/conv_float_u64.icomp:16:5: warning: integer constant is so large that it is unsigned #if 0 != -1 ^~~~~~~ hal/i_components/conv_float_u64.icomp:17:10: warning: integer constant is so large that it is unsigned if(in < 0) { out = 0; out_of_range = 1; return 0; } ^~~~~~~~~~~~~~~~~~~~ hal/i_components/conv_float_u64.icomp:17:40: warning: integer constant is so large that it is unsigned if(in < 0) { out = 0; out_of_range = 1; return 0; } ^~~~~~~~~~~~~ --- src/hal/i_components/Submakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hal/i_components/Submakefile b/src/hal/i_components/Submakefile index e003e4fa9b..08e36ba688 100644 --- a/src/hal/i_components/Submakefile +++ b/src/hal/i_components/Submakefile @@ -129,7 +129,7 @@ hal/i_components/conv_float_s64.icomp: hal/i_components/conv.icomp.in hal/i_comp hal/i_components/conv_float_u64.icomp: hal/i_components/conv.icomp.in hal/i_components/mkconv.sh $(HALCOMP_SUBMAKEFILE) $(ECHO) converting conv for $(notdir $@) - $(Q)sh hal/i_components/mkconv.sh float u64 "" 0 18446744073709551615 < $< > $@ + $(Q)sh hal/i_components/mkconv.sh float u64 "" 0 18446744073709551615UL < $< > $@ hal/i_components/conv_bit_s64.icomp: hal/i_components/conv.icomp.in hal/i_components/mkconv.sh $(HALCOMP_SUBMAKEFILE) $(ECHO) converting conv for $(notdir $@) From 791f9486b90e2f90d226eb1bcb087cb506391b8a Mon Sep 17 00:00:00 2001 From: Mick Date: Wed, 17 Oct 2018 08:56:43 +0100 Subject: [PATCH 321/516] Remove double printed line in event of no match L:1978 halcmd_commands.c Made this change in machinekit-hal repo as part of the compiler silencing commits, but ommitted from machinekit Signed-off-by: Mick --- src/hal/utils/halcmd_commands.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/hal/utils/halcmd_commands.c b/src/hal/utils/halcmd_commands.c index 0af6e43e14..3f13ef0272 100644 --- a/src/hal/utils/halcmd_commands.c +++ b/src/hal/utils/halcmd_commands.c @@ -2020,7 +2020,6 @@ static int print_comp_entry(hal_object_ptr o, foreach_args_t *args) halcmd_output(", unbound:%lds", comp->last_unbound-now); } else halcmd_output(", unbound:never"); - halcmd_output(", u1:%d u2:%d", comp->userarg1, comp->userarg2); break; default: halcmd_output(" %-5s %s", "", state_name(comp->state)); From fcd828280478e87f7618d80ca54960ee33a7de82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Sat, 27 Oct 2018 21:53:22 +0200 Subject: [PATCH 322/516] remove unused Python files --- src/hal/cython/machinekit/__init__.py | 0 src/hal/cython/machinekit/config.py.in | 99 ---------- src/hal/cython/machinekit/halfile.py | 14 -- src/hal/cython/machinekit/launcher.py | 264 ------------------------- src/hal/cython/machinekit/service.py | 109 ---------- 5 files changed, 486 deletions(-) delete mode 100644 src/hal/cython/machinekit/__init__.py delete mode 100644 src/hal/cython/machinekit/config.py.in delete mode 100644 src/hal/cython/machinekit/halfile.py delete mode 100644 src/hal/cython/machinekit/launcher.py delete mode 100644 src/hal/cython/machinekit/service.py diff --git a/src/hal/cython/machinekit/__init__.py b/src/hal/cython/machinekit/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/hal/cython/machinekit/config.py.in b/src/hal/cython/machinekit/config.py.in deleted file mode 100644 index bd2d8a0e1a..0000000000 --- a/src/hal/cython/machinekit/config.py.in +++ /dev/null @@ -1,99 +0,0 @@ -# access configure (and eventually runtime) variables -*-python-*- -# from Python -# -# use like so: -# import machinekit.config -# c = machinekit.config.Config() -# if c.is_rt(): -# .... -# define useful aggregate methods in Config() - this is preferrable to -# tests of raw config variables in usercode -# -# edit src/machinekitcfg.py-tmp.in -# run src/configure -# this will build lib/python/machinekit/config.py -# -# Author: Michael Haberler -# License: GPL Version 2 or later -# Copyright (c) 2013 All rights reserved. -import sys -if sys.version_info >= (3, 0): - import configparser -else: - import ConfigParser as configparser - -_cfg = None # global ConfigParser object - - -# type guessing helpers from http://stackoverflow.com/questions/7019283/automatically-type-cast-parameters-in-python -def __boolify(s): - if s == 'True' or s == 'true': - return True - if s == 'False' or s == 'false': - return False - raise ValueError('Not Boolean Value!') - - -def __estimateType(var): - '''guesses the str representation of the variables type''' - for caster in (__boolify, int, float, str): - try: - return caster(var) - except ValueError: - pass - return var - - -# loads a ini file to the config -def load_ini(iniName): - global _cfg - if _cfg is None: - _cfg = configparser.ConfigParser() - _cfg.read(iniName) - - -# find a config entry, compatible to machinekit.ini -# note: the module acts as singleton -def find(section, option, default=None): - if _cfg is None: - return default - try: - return __estimateType(_cfg.get(section, option)) - except (configparser.NoOptionError, configparser.NoSectionError): - return default - - -class Config(object): - - def does_io(self): - if self.BUILD_DRIVERS: return True - - # automatic substitution by configure starts here - - def __init__(self): - self.GIT_VERSION = "@GIT_VERSION@" - self.GIT_CONFIG_SHA="@GIT_CONFIG_SHA@" - self.EMC2_HOME = "@PROJECT_BINARY_DIR@" - self.MACHINEKIT_INI="@PROJECT_SYSCONF_DIR@/machinekit/machinekit.ini" - self.BUILD_THREAD_FLAVORS="@BUILD_THREAD_FLAVORS@" - - # Directories - self.LIB_DIR="@PROJECT_BINARY_DIR@/lib" - self.EMC2_BIN_DIR="@PROJECT_BIN_DIR@" - self.EMC2_LIBEXEC_DIR="@PROJECT_LIBEXEC_DIR@" - self.EMC2_RTLIB_DIR="@PROJECT_LIBEXEC_DIR@" - self.REALTIME="@PROJECT_BIN_DIR@/realtime" - - self.USE_PORTABLE_PARPORT_IO = "@USE_PORTABLE_PARPORT_IO@" - self.TARGET_PLATFORM_PC = "@TARGET_PLATFORM_PC@" - self.TARGET_PLATFORM_BEAGLEBONE = "@TARGET_PLATFORM_BEAGLEBONE@" - self.TARGET_PLATFORM_RASPBERRY = "@TARGET_PLATFORM_RASPBERRY@" - self.ARCHITECTURE="@ARCHITECTURE@" - - self.USERMODE_PCI="@USERMODE_PCI@" - -# global Config exposes variable to module -__config = Config() -for attr in dir(__config): - if not attr.startswith("__"): - setattr(sys.modules[__name__], attr, getattr(__config, attr)) diff --git a/src/hal/cython/machinekit/halfile.py b/src/hal/cython/machinekit/halfile.py deleted file mode 100644 index a945488487..0000000000 --- a/src/hal/cython/machinekit/halfile.py +++ /dev/null @@ -1,14 +0,0 @@ -import os -import ConfigParser -from machinekit import rtapi,hal,config - -# retrieve the machinekit UUID -cfg = ConfigParser.ConfigParser() -mkini = os.getenv("MACHINEKIT_INI") -if mkini is None: - mkini = config.Config().MACHINEKIT_INI -cfg.read(mkini) -uuid = cfg.get("MACHINEKIT", "MKUUID") - -# open a command channel to rtapi_app -rt = rtapi.RTAPIcommand(uuid=uuid) diff --git a/src/hal/cython/machinekit/launcher.py b/src/hal/cython/machinekit/launcher.py deleted file mode 100644 index 79b8c4f455..0000000000 --- a/src/hal/cython/machinekit/launcher.py +++ /dev/null @@ -1,264 +0,0 @@ -import os -import sys -from time import * -import subprocess -import signal -from machinekit import compat - -_processes = [] -_realtimeStarted = False -_exiting = False - - -# ends a running Machinekit session -def end_session(): - stop_processes() - if _realtimeStarted: # Stop realtime only when explicitely started - stop_realtime() - - -# checks wheter a single command is available or not -def check_command(command): - process = subprocess.Popen('which ' + command, stdout=subprocess.PIPE, - shell=True) - process.wait() - if process.returncode != 0: - print((command + ' not found, check Machinekit installation')) - sys.exit(1) - - -# checks the whole Machinekit installation -def check_installation(): - commands = ['realtime', 'configserver', 'halcmd', 'haltalk', 'webtalk'] - for command in commands: - check_command(command) - - -# checks for a running session and cleans it up if necessary -def cleanup_session(): - pids = [] - commands = ['configserver', 'halcmd', 'haltalk', 'webtalk', 'rtapi'] - process = subprocess.Popen(['ps', '-A'], stdout=subprocess.PIPE) - out, _ = process.communicate() - for line in out.splitlines(): - for command in commands: - if command in line: - pid = int(line.split(None, 1)[0]) - pids.append(pid) - - if pids != []: - stop_realtime() - sys.stdout.write("cleaning up leftover session... ") - sys.stdout.flush() - for pid in pids: - try: - os.killpg(pid, signal.SIGTERM) - except OSError: - pass - sys.stdout.write('done\n') - - -# starts a command, waits for termination and checks the output -def check_process(command): - sys.stdout.write("running " + command.split(None, 1)[0] + "... ") - sys.stdout.flush() - subprocess.check_call(command, shell=True) - sys.stdout.write('done\n') - - -# starts and registers a process -def start_process(command, check=True, wait=1.0): - sys.stdout.write("starting " + command.split(None, 1)[0] + "... ") - sys.stdout.flush() - process = subprocess.Popen(command, shell=True, preexec_fn=os.setsid) - process.command = command - if check: - sleep(wait) - process.poll() - if (process.returncode is not None): - raise subprocess.CalledProcessError(process.returncode, command, None) - _processes.append(process) - sys.stdout.write('done\n') - - -# stops a registered process by its name -def stop_process(command): - for process in _processes: - processCommand = process.command.split(None, 1)[0] - if command == processCommand: - sys.stdout.write('stopping ' + command + '... ') - sys.stdout.flush() - os.killpg(process.pid, signal.SIGTERM) - process.wait() - sys.stdout.write('done\n') - - -# stops all registered processes -def stop_processes(): - for process in _processes: - sys.stdout.write('stopping ' + process.command.split(None, 1)[0] - + '... ') - sys.stdout.flush() - os.killpg(process.pid, signal.SIGTERM) - process.wait() - sys.stdout.write('done\n') - - -# loads a HAL configuraton file -def load_hal_file(filename, ini=None): - sys.stdout.write("loading " + filename + '... ') - sys.stdout.flush() - - _, ext = os.path.splitext(filename) - if ext == '.py': - from machinekit import rtapi - if not rtapi.__rtapicmd: - rtapi.init_RTAPI() - if ini is not None: - from machinekit import config - config.load_ini(ini) - execfile(filename) - else: - command = 'halcmd' - if ini is not None: - command += ' -i ' + ini - command += ' -f ' + filename - subprocess.check_call(command, shell=True) - sys.stdout.write('done\n') - - -# loads a BBIO configuration file -def load_bbio_file(filename): - check_command('config-pin') - sys.stdout.write("loading " + filename + '... ') - sys.stdout.flush() - subprocess.check_call('config-pin -f ' + filename, shell=True) - sys.stdout.write('done\n') - - -# installs a comp RT component -def install_comp(filename): - install = True - base, ext = os.path.splitext(os.path.basename(filename)) - flavor = compat.default_flavor() - moduleDir = compat.get_rtapi_config("RTLIB_DIR") - moduleName = flavor.name + '/' + base + flavor.mod_ext - modulePath = os.path.join(moduleDir, moduleName) - if os.path.exists(modulePath): - compTime = os.path.getmtime(filename) - moduleTime = os.path.getmtime(modulePath) - if (compTime < moduleTime): - install = False - - if install is True: - if ext == '.icomp': - cmdBase = 'instcomp' - else: - cmdBase = 'comp' - sys.stdout.write("installing " + filename + '... ') - sys.stdout.flush() - if os.access(moduleDir, os.W_OK): # if we have write access we might not need sudo - cmd = '%s --install %s' % (cmdBase, filename) - else: - cmd = 'sudo %s --install %s' % (cmdBase, filename) - - subprocess.check_call(cmd, shell=True) - - sys.stdout.write('done\n') - - -# starts realtime -def start_realtime(): - global _realtimeStarted - sys.stdout.write("starting realtime...") - sys.stdout.flush() - subprocess.check_call('realtime start', shell=True) - sys.stdout.write('done\n') - _realtimeStarted = True - - -# stops realtime -def stop_realtime(): - global _realtimeStarted - sys.stdout.write("stopping realtime... ") - sys.stdout.flush() - subprocess.check_call('realtime stop', shell=True) - sys.stdout.write('done\n') - _realtimeStarted = False - - -# rip the Machinekit environment -def rip_environment(path=None, force=False): - if force is False and os.getenv('EMC2_PATH') is not None: # check if already ripped - return - - if path is None: - command = None - scriptFilePath = os.environ['HOME'] + '/.bashrc' - if os.path.exists(scriptFilePath): - with open(scriptFilePath) as f: # use the bashrc - content = f.readlines() - for line in content: - if 'rip-environment' in line: - line = line.strip() - if (line[0] == '.'): - command = line - - scriptFilePath = os.environ['HOME'] + '/machinekit/scripts/rip-environment' - if os.path.exists(scriptFilePath): - command = '. ' + scriptFilePath - - if (command is None): - sys.stderr.write('Unable to rip environment') - sys.exit(1) - else: - command = '. ' + path + '/scripts/rip-environment' - - process = subprocess.Popen(command + ' && env', - stdout=subprocess.PIPE, - shell=True) - for line in process.stdout: - (key, _, value) = line.partition('=') - os.environ[key] = value.rstrip() - - sys.path.append(os.environ['PYTHONPATH']) - - -# checks the running processes and exits when exited -def check_processes(): - for process in _processes: - process.poll() - if (process.returncode is not None): - _processes.remove(process) - end_session() - if (process.returncode != 0): - sys.exit(1) - else: - sys.exit(0) - - -# register exit signal handlers -def register_exit_handler(): - signal.signal(signal.SIGINT, _exitHandler) - signal.signal(signal.SIGTERM, _exitHandler) - - -def _exitHandler(signum, frame): - del signum # unused - del frame # unused - global _exiting - - if not _exiting: - _exiting = True # prevent double execution - end_session() - sys.exit(0) - - -# set the Machinekit debug level -def set_debug_level(level): - os.environ['DEBUG'] = str(level) - - -# set the Machinekit ini -def set_machinekit_ini(ini): - os.environ['MACHINEKIT_INI'] = ini diff --git a/src/hal/cython/machinekit/service.py b/src/hal/cython/machinekit/service.py deleted file mode 100644 index 04042bd828..0000000000 --- a/src/hal/cython/machinekit/service.py +++ /dev/null @@ -1,109 +0,0 @@ -import avahi -import dbus -import os -import uuid - - -class ZeroconfService: - """A simple class to publish a network service with zeroconf using - avahi. - """ - - def __init__(self, name, port, stype="_http._tcp", subtype=None, - domain="", host="", text="", loopback=False): - self.name = name - self.stype = stype - self.domain = domain - self.host = host - self.port = port - self.text = text - self.subtype = subtype - self.loopback = loopback - self.group = None - - def publish(self): - bus = dbus.SystemBus() - server = dbus.Interface( - bus.get_object( - avahi.DBUS_NAME, - avahi.DBUS_PATH_SERVER), - avahi.DBUS_INTERFACE_SERVER) - - g = dbus.Interface( - bus.get_object(avahi.DBUS_NAME, - server.EntryGroupNew()), - avahi.DBUS_INTERFACE_ENTRY_GROUP) - - # insert fqdn in announcement - fqdn = str(server.GetHostNameFqdn()) - text = [t % {'fqdn': fqdn} for t in self.text] - name = self.name % {'fqdn': fqdn} - - iface = avahi.IF_UNSPEC - if self.loopback: - iface = 0 - - g.AddService(iface, avahi.PROTO_INET, dbus.UInt32(0), - name, self.stype, self.domain, self.host, - dbus.UInt16(self.port), text) - - if self.subtype: - g.AddServiceSubtype(iface, - avahi.PROTO_INET, - dbus.UInt32(0), - name, self.stype, self.domain, - self.subtype) - - g.Commit() - self.group = g - - def unpublish(self): - self.group.Reset() - - -class Service: - """A simple class to publish a Machinekit network service using zeroconf. - """ - - def __init__(self, type, svcUuid, dsn, port, name=None, host=None, - loopback=False, debug=False): - self.dsn = dsn - self.svcUuid = svcUuid - self.type = type - self.port = port - self.name = name - self.host = host - self.loopback = loopback - self.debug = debug - - self.stype = '_machinekit._tcp' - self.subtype = '_%s._sub.%s' % (self.type, self.stype) - - if name is None: - pid = os.getpid() - self.name = '%s service on %s pid %i' % \ - (self.type.title(), self.host, pid) - - me = uuid.uuid1() - self.statusTxtrec = [str('dsn=' + self.dsn), - str('uuid=' + self.svcUuid), - str('instance=' + str(me)), - str('service=' + self.type)] - - if self.debug: - print(('service: ' + 'dsname = ' + self.dsn + - ' port = ' + str(self.port) + - ' txtrec = ' + str(self.statusTxtrec) + - ' name = ' + self.name)) - - self.statusService = ZeroconfService(self.name, self.port, - stype=self.stype, - subtype=self.subtype, - text=self.statusTxtrec, - loopback=self.loopback) - - def publish(self): - self.statusService.publish() - - def unpublish(self): - self.statusService.unpublish() From 5e3ef9197e3004ad25fb5448eb0db648bbbb07d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Sat, 27 Oct 2018 21:54:36 +0200 Subject: [PATCH 323/516] blacken and pep8fy the Machinetalk libraries --- .../config-service/configserver.py | 194 +- src/machinetalk/mklauncher/mklauncher.py | 236 +- src/machinetalk/mkwrapper/mkwrapper.py | 2148 ++++++++++------- src/machinetalk/videoserver/videoserver.py | 182 +- 4 files changed, 1578 insertions(+), 1182 deletions(-) diff --git a/src/machinetalk/config-service/configserver.py b/src/machinetalk/config-service/configserver.py index cb08462d69..37b1d9c684 100755 --- a/src/machinetalk/config-service/configserver.py +++ b/src/machinetalk/config-service/configserver.py @@ -8,8 +8,8 @@ import signal import time import argparse +from six.moves import configparser -import ConfigParser from machinekit import service from machinekit import config @@ -20,39 +20,48 @@ class ConfigServer(object): - def __init__(self, context, appDirs=None, topdir=".", - host='', svcUuid=None, debug=False, name=None, - hostInName=True, loopback=False): - if appDirs is None: - appDirs = [] - - self.appDirs = appDirs + def __init__( + self, + context, + app_dirs=None, + topdir=".", + host='', + svc_uuid=None, + debug=False, + name=None, + host_in_name=True, + loopback=False, + ): + if app_dirs is None: + app_dirs = [] + + self.appDirs = app_dirs self.host = host self.loopback = loopback self.name = name self.debug = debug self.shutdown = threading.Event() self.running = False - self.cfg = ConfigParser.ConfigParser() + self.cfg = configparser.ConfigParser() for rootdir in self.appDirs: for root, _, files in os.walk(rootdir): if 'description.ini' in files: inifile = os.path.join(root, 'description.ini') - cfg = ConfigParser.ConfigParser() + cfg = configparser.ConfigParser() cfg.read(inifile) - appName = cfg.get('Default', 'name') + app_name = cfg.get('Default', 'name') description = cfg.get('Default', 'description') - appType = cfg.get('Default', 'type') - self.cfg.add_section(appName) - self.cfg.set(appName, 'description', description) - self.cfg.set(appName, 'type', appType) - self.cfg.set(appName, 'files', root) + app_type = cfg.get('Default', 'type') + self.cfg.add_section(app_name) + self.cfg.set(app_name, 'description', description) + self.cfg.set(app_name, 'type', app_type) + self.cfg.set(app_name, 'files', root) if self.debug: - print(("name: " + cfg.get('Default', 'name'))) - print(("description: " + cfg.get('Default', 'description'))) - print(("type: " + cfg.get('Default', 'type'))) - print(("files: " + root)) + print("name: " + cfg.get('Default', 'name')) + print("description: " + cfg.get('Default', 'description')) + print("type: " + cfg.get('Default', 'type')) + print("files: " + root) self.rx = Container() self.tx = Container() @@ -70,16 +79,18 @@ def __init__(self, context, appDirs=None, topdir=".", if self.name is None: self.name = "Machinekit" - if hostInName: + if host_in_name: self.name += ' on ' + self.host - self.service = service.Service(type='config', - svcUuid=svcUuid, - dsn=self.dsname, - port=self.port, - host=self.host, - name=self.name, - loopback=self.loopback, - debug=self.debug) + self.service = service.Service( + type='config', + svcUuid=svc_uuid, + dsn=self.dsname, + port=self.port, + host=self.host, + name=self.name, + loopback=self.loopback, + debug=self.debug, + ) self.publish() @@ -102,7 +113,7 @@ def publish(self): try: self.service.publish() except Exception as e: - print(('cannot register DNS service' + str(e))) + print('cannot register DNS service' + str(e)) sys.exit(1) def unpublish(self): @@ -111,60 +122,60 @@ def unpublish(self): def stop(self): self.shutdown.set() - def typeToPb(self, type): - if type == 'QT5_QML': + @staticmethod + def type_to_pb(type_): + if type_ == 'QT5_QML': return QT5_QML - elif type == 'GLADEVCP': + elif type_ == 'GLADEVCP': return GLADEVCP - elif type == 'JAVASCRIPT': + elif type_ == 'JAVASCRIPT': return JAVASCRIPT else: - raise TypeError('Unsupported type %s' % type) + raise TypeError('Unsupported type %s' % type_) - def send_msg(self, dest, type): - self.tx.type = type - txBuffer = self.tx.SerializeToString() + def send_msg(self, dest, type_): + self.tx.type = type_ + tx_buffer = self.tx.SerializeToString() if self.debug: - print(("send_msg " + str(self.tx))) + print("send_msg " + str(self.tx)) self.tx.Clear() - self.socket.send_multipart(dest + [txBuffer], zmq.NOBLOCK) + self.socket.send_multipart(dest + [tx_buffer], zmq.NOBLOCK) def list_apps(self, origin): for name in self.cfg.sections(): app = self.tx.app.add() app.name = name app.description = self.cfg.get(name, 'description') - app.type = self.typeToPb(self.cfg.get(name, 'type')) + app.type = self.type_to_pb(self.cfg.get(name, 'type')) self.send_msg(origin, pb.MT_DESCRIBE_APPLICATION) - def add_files(self, basePath, path, app): + def add_files(self, base_path, path, app): if self.debug: - print(("add files " + path)) + print("add files " + path) for f in os.listdir(path): pathname = os.path.join(path, f) mode = os.stat(pathname).st_mode if S_ISREG(mode): - filename = os.path.join(os.path.relpath(path, basePath), f) + filename = os.path.join(os.path.relpath(path, base_path), f) if self.debug: - print(("add " + pathname)) - print(("name " + filename)) - fileBuffer = open(pathname, 'rb').read() - appFile = app.file.add() - appFile.name = filename - appFile.encoding = CLEARTEXT - appFile.blob = fileBuffer + print("add " + pathname) + print("name " + filename) + file_buffer = open(pathname, 'rb').read() + app_file = app.file.add() + app_file.name = filename + app_file.encoding = CLEARTEXT + app_file.blob = file_buffer elif S_ISDIR(mode): - self.add_files(basePath, pathname, app) + self.add_files(base_path, pathname, app) def retrieve_app(self, origin, name): if self.debug: - print(("retrieve app " + name)) + print("retrieve app " + name) app = self.tx.app.add() app.name = name app.description = self.cfg.get(name, 'description') - app.type = self.typeToPb(self.cfg.get(name, 'type')) - self.add_files(self.cfg.get(name, 'files'), - self.cfg.get(name, 'files'), app) + app.type = self.type_to_pb(self.cfg.get(name, 'type')) + self.add_files(self.cfg.get(name, 'files'), self.cfg.get(name, 'files'), app) self.send_msg(origin, pb.MT_APPLICATION_DETAIL) @@ -195,7 +206,7 @@ def process(self, s): self.send_msg(identity, pb.MT_PING_ACKNOWLEDGE) else: - note = "unsupported request type %d" % (self.rx.type) + note = "unsupported request type %d" % self.rx.type self.tx.note.append(note) self.send_msg(identity, pb.MT_ERROR) @@ -203,7 +214,7 @@ def process(self, s): shutdown = False -def _exitHandler(signum, frame): +def _exit_handler(signum, frame): del signum # ignored del frame # ignored global shutdown @@ -212,8 +223,8 @@ def _exitHandler(signum, frame): # register exit signal handlers def register_exit_handler(): - signal.signal(signal.SIGINT, _exitHandler) - signal.signal(signal.SIGTERM, _exitHandler) + signal.signal(signal.SIGINT, _exit_handler) + signal.signal(signal.SIGTERM, _exit_handler) def check_exit(): @@ -222,11 +233,24 @@ def check_exit(): def main(): - parser = argparse.ArgumentParser(description='Configserver is the entry point for Machinetalk based user interfaces') - parser.add_argument('-n', '--name', help='Name of the machine', default="Machinekit") - parser.add_argument('-s', '--suppress_ip', help='Do not show ip of machine in service name', action='store_false') + parser = argparse.ArgumentParser( + description='Configserver is the entry point for Machinetalk based user interfaces' + ) + parser.add_argument( + '-n', '--name', help='Name of the machine', default="Machinekit" + ) + parser.add_argument( + '-s', + '--suppress_ip', + help='Do not show ip of machine in service name', + action='store_false', + ) parser.add_argument('-d', '--debug', help='Enable debug mode', action='store_true') - parser.add_argument('dirs', nargs='*', help="List of directories to scan for user interface configurations") + parser.add_argument( + 'dirs', + nargs='*', + help="List of directories to scan for user interface configurations", + ) args = parser.parse_args() @@ -240,49 +264,51 @@ def main(): sys.stderr.write("MACHINEKIT_INI " + mkini + " does not exist\n") sys.exit(1) - mki = ConfigParser.ConfigParser() + mki = configparser.ConfigParser() mki.read(mkini) uuid = mki.get("MACHINEKIT", "MKUUID") remote = mki.getint("MACHINEKIT", "REMOTE") if remote == 0: - print("Remote communication is deactivated, configserver will use the loopback interfaces") - print(("set REMOTE in " + mkini + " to 1 to enable remote communication")) + print( + "Remote communication is deactivated, configserver will use the loopback interfaces" + ) + print("set REMOTE in " + mkini + " to 1 to enable remote communication") if debug: - print(("announcing configserver")) + print("announcing configserver") context = zmq.Context() context.linger = 0 register_exit_handler() - configService = None + config_service = None try: hostname = '%(fqdn)s' # replaced by service announcement - configService = ConfigServer(context, - svcUuid=uuid, - topdir=".", - host=hostname, - appDirs=args.dirs, - name=args.name, - hostInName=bool(args.suppress_ip), - loopback=(not remote), - debug=debug) - - while configService.running and not check_exit(): + config_service = ConfigServer( + context, + svc_uuid=uuid, + topdir=".", + host=hostname, + app_dirs=args.dirs, + name=args.name, + host_in_name=bool(args.suppress_ip), + loopback=(not remote), + debug=debug, + ) + + while config_service.running and not check_exit(): time.sleep(1) except Exception as e: print("exception") print(e) - except: - print("other exception") if debug: print("stopping threads") - if configService is not None: - configService.stop() + if config_service is not None: + config_service.stop() # wait for all threads to terminate while threading.active_count() > 1: diff --git a/src/machinetalk/mklauncher/mklauncher.py b/src/machinetalk/mklauncher/mklauncher.py index a6daba2331..3a2cd19fb8 100644 --- a/src/machinetalk/mklauncher/mklauncher.py +++ b/src/machinetalk/mklauncher/mklauncher.py @@ -4,6 +4,8 @@ import os import sys import argparse +from dbus import DBusException + import zmq import threading import time @@ -14,6 +16,7 @@ import shlex import dbus import logging +from six.moves import configparser from operator import attrgetter @@ -22,14 +25,16 @@ from google.protobuf.message import DecodeError from machinetalk.protobuf.message_pb2 import Container -from machinetalk.protobuf.config_pb2 import Launcher, MachineInfo, File, StdoutLine, CLEARTEXT +from machinetalk.protobuf.config_pb2 import ( + Launcher, + MachineInfo, + File, + StdoutLine, + CLEARTEXT, +) import machinetalk.protobuf.types_pb2 as pb from machinetalk.protobuf.object_pb2 import ProtocolParameters -if sys.version_info >= (3, 0): - import configparser -else: - import ConfigParser as configparser logger = logging.getLogger('mklauncher') @@ -46,7 +51,7 @@ def __setitem__(self, launcher_id, importance): self._importances[launcher_id] = importance def __getitem__(self, launcher_id): - ''' getitem is case insensitive since configparser does not use case sensitive key names ''' + """ getitem is case insensitive since configparser does not use case sensitive key names """ launcher_id = launcher_id.lower() if launcher_id in self._importances: return self._importances[launcher_id] @@ -82,10 +87,20 @@ def __str__(self): class Mklauncher(object): - def __init__(self, context, launcher_dirs=None, host='', - svc_uuid='', debug=False, name=None, host_in_name=True, - poll_interval=0.5, ping_interval=2.0, loopback=False, - config_dir='~/.config/machinekit/mklauncher'): + def __init__( + self, + context, + launcher_dirs=None, + host='', + svc_uuid='', + debug=False, + name=None, + host_in_name=True, + poll_interval=0.5, + ping_interval=2.0, + loopback=False, + config_dir='~/.config/machinekit/mklauncher', + ): if launcher_dirs is None: launcher_dirs = [] @@ -142,9 +157,10 @@ def stop(self): self._terminate_processes() self.shutdown.set() - def _search_launchers(self, directories): - INI_NAME = 'launcher.ini' - CONFIG_DEFAULTS = { + @staticmethod + def _search_launchers(directories): + ini_name = 'launcher.ini' + config_defaults = { 'name': 'Launcher', 'command': '', 'description': '', @@ -155,7 +171,7 @@ def _search_launchers(self, directories): 'manufacturer': '', 'model': '', 'variant': '', - 'priority': '0' + 'priority': '0', } launchers = [] @@ -163,13 +179,13 @@ def _search_launchers(self, directories): index = 0 for root_dir in directories: for root, _, files in os.walk(root_dir): - if INI_NAME not in files: + if ini_name not in files: continue root = os.path.abspath(os.path.expanduser(root)) - iniFile = os.path.join(root, INI_NAME) - cfg = configparser.ConfigParser(CONFIG_DEFAULTS) - cfg.read(iniFile) + ini_file = os.path.join(root, ini_name) + cfg = configparser.ConfigParser(config_defaults) + cfg.read(ini_file) for section in cfg.sections(): launcher = Launcher() # descriptive data @@ -198,11 +214,11 @@ def _search_launchers(self, directories): if image_file is not '': if not os.path.isabs(image_file): image_file = os.path.join(root, image_file) - fileBuffer = open(image_file, 'rb').read() + file_buffer = open(image_file, 'rb').read() image = File() image.name = os.path.basename(image_file) image.encoding = CLEARTEXT - image.blob = fileBuffer + image.blob = file_buffer launcher.image.MergeFrom(image) launcher.index = index @@ -228,11 +244,15 @@ def _create_sockets(self, context): self.launcher_socket = context.socket(zmq.XPUB) self.launcher_socket.setsockopt(zmq.XPUB_VERBOSE, 1) self.launcher_port = self.launcher_socket.bind_to_random_port(base_uri) - self.launcher_ds_name = self.launcher_socket.get_string(zmq.LAST_ENDPOINT, encoding='utf-8') + self.launcher_ds_name = self.launcher_socket.get_string( + zmq.LAST_ENDPOINT, encoding='utf-8' + ) self.launcher_ds_name = self.launcher_ds_name.replace('0.0.0.0', self.host) self.command_socket = context.socket(zmq.ROUTER) self.command_port = self.command_socket.bind_to_random_port(base_uri) - self.command_ds_name = self.command_socket.get_string(zmq.LAST_ENDPOINT, encoding='utf-8') + self.command_ds_name = self.command_socket.get_string( + zmq.LAST_ENDPOINT, encoding='utf-8' + ) self.command_ds_name = self.command_ds_name.replace('0.0.0.0', self.host) def _process_sockets(self): @@ -255,23 +275,25 @@ def _create_services(self, host_in_name, svc_uuid): self.name = 'Machinekit Launcher' if host_in_name: self.name += ' on ' + self.host - self.launcher_service = \ - service.Service(type='launcher', - svcUuid=svc_uuid, - dsn=self.launcher_ds_name, - port=self.launcher_port, - host=self.host, - name=self.name, - loopback=self.loopback, - debug=self.debug) - self.commandService = \ - service.Service(type='launchercmd', - svcUuid=svc_uuid, - dsn=self.command_ds_name, - port=self.command_port, - host=self.host, - loopback=self.loopback, - debug=self.debug) + self.launcher_service = service.Service( + type='launcher', + svcUuid=svc_uuid, + dsn=self.launcher_ds_name, + port=self.launcher_port, + host=self.host, + name=self.name, + loopback=self.loopback, + debug=self.debug, + ) + self.commandService = service.Service( + type='launchercmd', + svcUuid=svc_uuid, + dsn=self.command_ds_name, + port=self.command_port, + host=self.host, + loopback=self.loopback, + debug=self.debug, + ) def _publish_services(self): # Zeroconf @@ -316,7 +338,9 @@ def _update_launcher_status(self): if returncode is None: if not launcher.running: # update running value if len(launcher.output) > 0: - launcher.ClearField('output') # clear output for new processes + launcher.ClearField( + 'output' + ) # clear output for new processes self.launcher_full_update = True # request a full update tx_launcher.running = True tx_launcher.returncode = 0 @@ -326,10 +350,10 @@ def _update_launcher_status(self): while True: try: line = process.stdout.read() - stdoutLine = StdoutLine() - stdoutLine.index = stdout_index - stdoutLine.line = line - tx_launcher.output.add().MergeFrom(stdoutLine) + stdout_line = StdoutLine() + stdout_line.index = stdout_index + stdout_line.line = line + tx_launcher.output.add().MergeFrom(stdout_line) stdout_index += 1 modified = True except IOError: # process has no new line @@ -358,27 +382,27 @@ def _update_launcher_status(self): elif has_update: self._send_launcher_message(pb.MT_LAUNCHER_INCREMENTAL_UPDATE) - def _send_launcher_message(self, msgType): + def _send_launcher_message(self, msg_type): logger.debug('sending launcher message') - self.tx_container.type = msgType - txBuffer = self.tx_container.SerializeToString() + self.tx_container.type = msg_type + tx_buffer = self.tx_container.SerializeToString() self.tx_container.Clear() - self.launcher_socket.send_multipart(['launcher', txBuffer], zmq.NOBLOCK) + self.launcher_socket.send_multipart(['launcher', tx_buffer], zmq.NOBLOCK) - def _send_command_message(self, identity, msgType): - self.tx.type = msgType - txBuffer = self.tx.SerializeToString() - self.command_socket.send_multipart(identity + [txBuffer], zmq.NOBLOCK) + def _send_command_message(self, identity, msg_type): + self.tx.type = msg_type + tx_buffer = self.tx.SerializeToString() + self.command_socket.send_multipart(identity + [tx_buffer], zmq.NOBLOCK) self.tx.Clear() def _poll(self): while not self.shutdown.is_set(): if self.launcher_subscribed: self._update_launcher_status() - if (self.pingCount == self.ping_ratio): + if self.pingCount == self.ping_ratio: self._send_launcher_message(pb.MT_PING) - if (self.pingCount == self.ping_ratio): + if self.pingCount == self.ping_ratio: self.pingCount = 0 else: self.pingCount += 1 @@ -391,13 +415,15 @@ def _process_launcher_socket(self, s): try: rc = s.recv() subscription = rc[1:] - status = (rc[0] == "\x01") + status = rc[0] == "\x01" if subscription == 'launcher': self.launcher_subscribed = status self.launcher_full_update = status - logger.debug(("process launcher called " + subscription + ' ' + str(status))) + logger.debug( + ("process launcher called " + subscription + ' ' + str(status)) + ) except zmq.ZMQError as e: logger.error('ZMQ error: ' + str(e)) @@ -410,13 +436,15 @@ def _start_process(self, index): if shell is False: command = shlex.split(command) try: - process = subprocess.Popen(command, - shell=shell, - cwd=workdir, - stdout=subprocess.PIPE, - stderr=subprocess.STDOUT, - stdin=subprocess.PIPE, - preexec_fn=os.setsid) + process = subprocess.Popen( + command, + shell=shell, + cwd=workdir, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + stdin=subprocess.PIPE, + preexec_fn=os.setsid, + ) except OSError as e: return False, str(e) process.command = command @@ -443,16 +471,20 @@ def _terminate_processes(self): def _write_to_stdin_of_process(self, index, data): self.processes[index].stdin.write(data) - def _shutdown_system(self): + @staticmethod + def _shutdown_system(): try: system_bus = dbus.SystemBus() - ck_service = system_bus.get_object('org.freedesktop.ConsoleKit', - '/org/freedesktop/ConsoleKit/Manager') - ck_interface = dbus.Interface(ck_service, 'org.freedesktop.ConsoleKit.Manager') + ck_service = system_bus.get_object( + 'org.freedesktop.ConsoleKit', '/org/freedesktop/ConsoleKit/Manager' + ) + ck_interface = dbus.Interface( + ck_service, 'org.freedesktop.ConsoleKit.Manager' + ) stop_method = ck_interface.get_dbus_method("Stop") stop_method() return True - except: + except DBusException: return False def _update_importance(self, launcher): @@ -501,8 +533,7 @@ def _process_command_socket(self, s): elif self.rx.type == pb.MT_LAUNCHER_TERMINATE: if self.rx.HasField('index'): index = self.rx.index - if index >= len(self.container.launcher) \ - or index not in self.processes: + if index >= len(self.container.launcher) or index not in self.processes: self._send_command_wrong_index(identity) else: self._terminate_process(index) @@ -510,19 +541,18 @@ def _process_command_socket(self, s): elif self.rx.type == pb.MT_LAUNCHER_KILL: if self.rx.HasField('index'): index = self.rx.index - if index >= len(self.container.launcher) \ - or index not in self.processes: + if index >= len(self.container.launcher) or index not in self.processes: self._send_command_wrong_index(identity) else: self._kill_process(index) elif self.rx.type == pb.MT_LAUNCHER_WRITE_STDIN: - if self.rx.HasField('index') \ - and self.rx.HasField('name'): # temporarily using the name field + if self.rx.HasField('index') and self.rx.HasField( + 'name' + ): # temporarily using the name field index = self.rx.index name = self.rx.name - if index >= len(self.container.launcher) \ - or index not in self.processes: + if index >= len(self.container.launcher) or index not in self.processes: self._send_command_wrong_index(identity) else: self._write_to_stdin_of_process(index, name) @@ -538,8 +568,9 @@ def _process_command_socket(self, s): elif self.rx.type == pb.MT_LAUNCHER_SET: for launcher in self.rx.launcher: - if not launcher.HasField('index') \ - or not launcher.HasField('importance'): + if not launcher.HasField('index') or not launcher.HasField( + 'importance' + ): self._send_command_wrong_params(identity) continue @@ -557,7 +588,7 @@ def _process_command_socket(self, s): shutdown = False -def _exitHandler(signum, frame): +def _exit_handler(signum, frame): del signum # ignored del frame # ignored global shutdown @@ -566,8 +597,8 @@ def _exitHandler(signum, frame): # register exit signal handlers def register_exit_handler(): - signal.signal(signal.SIGINT, _exitHandler) - signal.signal(signal.SIGTERM, _exitHandler) + signal.signal(signal.SIGINT, _exit_handler) + signal.signal(signal.SIGTERM, _exit_handler) def check_exit(): @@ -576,11 +607,24 @@ def check_exit(): def main(): - parser = argparse.ArgumentParser(description='mklauncher is Machinetalk based session/configuration launcher for Machinekit') - parser.add_argument('-n', '--name', help='Name of the machine', default="Machinekit Launcher") - parser.add_argument('-s', '--suppress_ip', help='Do not show ip of machine in service name', action='store_false') + parser = argparse.ArgumentParser( + description='mklauncher is Machinetalk based session/configuration launcher for Machinekit' + ) + parser.add_argument( + '-n', '--name', help='Name of the machine', default="Machinekit Launcher" + ) + parser.add_argument( + '-s', + '--suppress_ip', + help='Do not show ip of machine in service name', + action='store_false', + ) parser.add_argument('-d', '--debug', help='Enable debug mode', action='store_true') - parser.add_argument('dirs', nargs='*', help="List of directories to scan for launcher configurations") + parser.add_argument( + 'dirs', + nargs='*', + help="List of directories to scan for launcher configurations", + ) args = parser.parse_args() debug = args.debug @@ -605,7 +649,9 @@ def main(): remote = mki.getint("MACHINEKIT", "REMOTE") if remote == 0: - logger.info("Remote communication is deactivated, configserver will use the loopback interfaces") + logger.info( + "Remote communication is deactivated, configserver will use the loopback interfaces" + ) logger.info(("set REMOTE in " + mkini + " to 1 to enable remote communication")) logger.debug("announcing mklauncher") @@ -616,14 +662,16 @@ def main(): register_exit_handler() hostname = '%(fqdn)s' # replaced by service announcement - mklauncher = Mklauncher(context, - svc_uuid=uuid, - host=hostname, - launcher_dirs=args.dirs, - name=args.name, - host_in_name=bool(args.suppress_ip), - loopback=(not remote), - debug=debug) + mklauncher = Mklauncher( + context, + svc_uuid=uuid, + host=hostname, + launcher_dirs=args.dirs, + name=args.name, + host_in_name=bool(args.suppress_ip), + loopback=(not remote), + debug=debug, + ) mklauncher.start() while mklauncher.running and not check_exit(): diff --git a/src/machinetalk/mkwrapper/mkwrapper.py b/src/machinetalk/mkwrapper/mkwrapper.py index 2aac9f9057..cf3948b9dc 100644 --- a/src/machinetalk/mkwrapper/mkwrapper.py +++ b/src/machinetalk/mkwrapper/mkwrapper.py @@ -9,13 +9,13 @@ import socket import signal import argparse -from urlparse import urlparse import shutil import tempfile import subprocess import re import codecs -import ConfigParser +from six.moves import configparser +from six.moves.urllib import parse import linuxcnc from machinekit import service, hal from machinekit import config @@ -33,11 +33,11 @@ from machinetalk.protobuf.object_pb2 import ProtocolParameters -def printError(msg): +def print_error(msg): sys.stderr.write('ERROR: ' + msg + '\n') -def getFreePort(): +def get_free_port(): sock = socket.socket() sock.bind(('', 0)) port = sock.getsockname()[1] @@ -47,20 +47,19 @@ def getFreePort(): # noinspection PyClassicStyleClass class CustomFTPHandler(FTPHandler): - - def on_file_received(self, file): + def on_file_received(self, file_): # do something when a file has been received pass # TODO inform client about new file - def on_incomplete_file_received(self, file): + def on_incomplete_file_received(self, file_): # remove partially uploaded files - os.remove(file) + os.remove(file_) class FileService(threading.Thread): - - def __init__(self, iniFile=None, host='', svcUuid=None, - loopback=False, debug=False): + def __init__( + self, ini_file=None, host='', svc_uuid=None, loopback=False, debug=False + ): self.debug = debug self.host = host self.loopback = loopback @@ -69,26 +68,28 @@ def __init__(self, iniFile=None, host='', svcUuid=None, # Linuxcnc try: - iniFile = iniFile or os.environ.get('INI_FILE_NAME', '/dev/null') - self.ini = linuxcnc.ini(iniFile) + ini_file = ini_file or os.environ.get('INI_FILE_NAME', '/dev/null') + self.ini = linuxcnc.ini(ini_file) self.directory = self.ini.find('DISPLAY', 'PROGRAM_PREFIX') or os.getcwd() self.directory = os.path.expanduser(self.directory) except linuxcnc.error as detail: - printError(str(detail)) + print_error(str(detail)) sys.exit(1) - self.filePort = getFreePort() - self.fileDsname = "ftp://" + self.host + ":" + str(self.filePort) + self.file_port = get_free_port() + self.file_dsname = "ftp://" + self.host + ":" + str(self.file_port) - self.fileService = service.Service(type='file', - svcUuid=svcUuid, - dsn=self.fileDsname, - port=self.filePort, - host=self.host, - loopback=self.loopback, - debug=self.debug) + self.fileService = service.Service( + type='file', + svcUuid=svc_uuid, + dsn=self.file_dsname, + port=self.file_port, + host=self.host, + loopback=self.loopback, + debug=self.debug, + ) - #FTP + # FTP # Instantiate a dummy authorizer for managing 'virtual' users self.authorizer = DummyAuthorizer() @@ -103,7 +104,7 @@ def __init__(self, iniFile=None, host='', svcUuid=None, self.handler.banner = "welcome to the GCode file service" # Instantiate FTP server class and listen on some address - self.address = ('', self.filePort) + self.address = ('', self.file_port) self.server = FTPServer(self.address, self.handler) # set a limit for connections @@ -114,7 +115,7 @@ def __init__(self, iniFile=None, host='', svcUuid=None, try: self.fileService.publish() except Exception as e: - printError('cannot register DNS service' + str(e)) + print_error('cannot register DNS service' + str(e)) sys.exit(1) threading.Thread.__init__(self) @@ -139,12 +140,12 @@ def stop(self): class PreviewCanonData(object): def __init__(self): self.tools = [] - self.randomToolchanger = False - self.parameterFile = "" - self.axisMask = 0x0 - self.blockDelete = False - self.angularUnits = 1.0 - self.linearUnits = 1.0 + self.random_toolchanger = False + self.parameter_file = "" + self.axis_mask = 0x0 + self.block_delete = False + self.angular_units = 1.0 + self.linear_units = 1.0 class PreviewCanon(object): @@ -158,56 +159,81 @@ def check_abort(self): return False def change_tool(self, pocket): - if self.c.randomToolchanger: - self.c.tools[0], self.c.tools[pocket] = self.c.tools[pocket], self.c.tools[0] + if self.c.random_toolchanger: + self.c.tools[0], self.c.tools[pocket] = ( + self.c.tools[pocket], + self.c.tools[0], + ) elif pocket == 0: - self.c.tools[0] = (-1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0) + self.c.tools[0] = ( + -1, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0, + ) else: self.c.tools[0] = self.c.tools[pocket] def get_tool(self, pocket): - if pocket >= 0 and pocket < len(self.c.tools): + if 0 <= pocket < len(self.c.tools): return self.c.tools[pocket] - return (-1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0) + return -1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0 def get_external_angular_units(self): - return self.c.angularUnits or 1.0 + return self.c.angular_units or 1.0 def get_external_length_units(self): - return self.c.linearUnits or 1.0 + return self.c.linear_units or 1.0 def get_axis_mask(self): - return self.c.axisMask + return self.c.axis_mask def get_block_delete(self): - return self.c.blockDelete + return self.c.block_delete # Preview class works concurrently using multiprocessing # Queues are used for communication class Preview(object): - def __init__(self, stat, randomToolchanger=False, parameterFile="", initcode="", debug=False): + def __init__( + self, + stat, + random_toolchanger=False, + parameter_file="", + initcode="", + debug=False, + ): self.debug = debug self.filename = "" self.unitcode = "" self.initcode = initcode self.stat = stat - self.parameterFile = parameterFile - self.randomToolchanger = randomToolchanger + self.parameter_file = parameter_file + self.random_toolchanger = random_toolchanger self.canon = None self.preview = None - self.errorCallback = None + self.error_callback = None # multiprocessing tools - self.bindEvent = multiprocessing.Event() - self.bindCompletedEvent = multiprocessing.Event() - self.previewEvent = multiprocessing.Event() - self.previewCompleteEvent = multiprocessing.Event() - self.shutdownEvent = multiprocessing.Event() - self.errorEvent = multiprocessing.Event() - self.isStarted = multiprocessing.Value('b', False, lock=False) - self.isBound = multiprocessing.Value('b', False, lock=False) - self.isRunning = multiprocessing.Value('b', False, lock=False) + self.bind_event = multiprocessing.Event() + self.bind_completed_event = multiprocessing.Event() + self.preview_event = multiprocessing.Event() + self.preview_completed_event = multiprocessing.Event() + self.shutdown_event = multiprocessing.Event() + self.error_event = multiprocessing.Event() + self.is_started = multiprocessing.Value('b', False, lock=False) + self.is_bound = multiprocessing.Value('b', False, lock=False) + self.is_running = multiprocessing.Value('b', False, lock=False) self.aborted = multiprocessing.Value('b', False, lock=False) self.inqueue = multiprocessing.Queue() # used to send data to the process self.outqueue = multiprocessing.Queue() # used to get data from the process @@ -215,12 +241,12 @@ def __init__(self, stat, randomToolchanger=False, parameterFile="", initcode="", self.process.start() def register_error_callback(self, callback): - self.errorCallback = callback + self.error_callback = callback - def bind(self, previewUri, statusUri): - self.inqueue.put((previewUri, statusUri)) - self.bindEvent.set() - self.bindCompletedEvent.wait() + def bind(self, preview_uri, status_uri): + self.inqueue.put((preview_uri, status_uri)) + self.bind_event.set() + self.bind_completed_event.wait() return self.outqueue.get() def abort(self): @@ -233,7 +259,7 @@ def program_open(self, filename): raise Exception("file does not exist " + filename) def start(self): - if self.isRunning.value is True: + if self.is_running.value is True: raise Exception("Preview already running") # start the monitoring daemon @@ -242,15 +268,15 @@ def start(self): thread.start() def stop(self): - self.shutdownEvent.set() - self.previewCompleteEvent.set() # in case we are monitoring + self.shutdown_event.set() + self.preview_completed_event.set() # in case we are monitoring self.process.join() # make sure to have one process at exit def monitoring_thread(self): - if not self.isBound.value: + if not self.is_bound.value: raise Exception('Preview is not bound') - self.isRunning.value = True + self.is_running.value = True # create temp dir tempdir = tempfile.mkdtemp() @@ -261,15 +287,15 @@ def monitoring_thread(self): for entry in self.stat.tool_table: tools.append(tuple(entry)) canon.tools = tools - temp_parameter = os.path.join(tempdir, os.path.basename(self.parameterFile)) - if os.path.exists(self.parameterFile): - shutil.copy(self.parameterFile, temp_parameter) - canon.parameterFile = temp_parameter - canon.randomToolchanger = self.randomToolchanger - canon.axisMask = self.stat.axis_mask - canon.blockDelete = self.stat.block_delete - canon.angularUnits = self.stat.angular_units - canon.linearUnits = self.stat.linear_units + temp_parameter = os.path.join(tempdir, os.path.basename(self.parameter_file)) + if os.path.exists(self.parameter_file): + shutil.copy(self.parameter_file, temp_parameter) + canon.parameter_file = temp_parameter + canon.random_toolchanger = self.random_toolchanger + canon.axis_mask = self.stat.axis_mask + canon.block_delete = self.stat.block_delete + canon.angular_units = self.stat.angular_units + canon.linear_units = self.stat.linear_units self.unitcode = "G%d" % (20 + (self.stat.linear_units == 1)) # put everything on the process queue @@ -277,98 +303,98 @@ def monitoring_thread(self): self.inqueue.get_nowait() self.inqueue.put((self.filename, self.unitcode, self.initcode, canon)) # release the dragon - self.previewCompleteEvent.clear() - self.previewEvent.set() - self.previewCompleteEvent.wait() + self.preview_completed_event.clear() + self.preview_event.set() + self.preview_completed_event.wait() # handle error events - if self.errorEvent.wait(0.1): + if self.error_event.wait(0.1): (error, line) = self.outqueue.get() - if self.errorCallback is not None: - self.errorCallback(error, line) - self.errorEvent.clear() + if self.error_callback is not None: + self.error_callback(error, line) + self.error_event.clear() # cleanup temp dir shutil.rmtree(tempdir) - self.isRunning.value = False + self.is_running.value = False def run(self): import preview # must be imported in new process to work properly + self.preview = preview - self.isStarted.value = True + self.is_started.value = True # waiting for a bind event - while not self.bindEvent.wait(timeout=0.1): - if self.shutdownEvent.is_set(): # in case someone shuts down when we are not bound - self.isStarted.value = False + while not self.bind_event.wait(timeout=0.1): + if ( + self.shutdown_event.is_set() + ): # in case someone shuts down when we are not bound + self.is_started.value = False # bind the socket here - (previewUri, statusUri) = self.inqueue.get() - (previewUri, statusUri) = self.preview.bind(previewUri, statusUri) - self.outqueue.put((previewUri, statusUri)) - self.isBound.value = True - self.bindCompletedEvent.set() + (preview_uri, status_uri) = self.inqueue.get() + (preview_uri, status_uri) = self.preview.bind(preview_uri, status_uri) + self.outqueue.put((preview_uri, status_uri)) + self.is_bound.value = True + self.bind_completed_event.set() if self.debug: print('Preview socket bound') # wait for preview request or shutdown # event handshaking is used to synchronize the monitoring thread # and the process - while not self.shutdownEvent.is_set(): - if self.previewEvent.wait(timeout=0.1): + while not self.shutdown_event.is_set(): + if self.preview_event.wait(timeout=0.1): self.do_preview() - self.previewCompleteEvent.set() - self.previewEvent.clear() + self.preview_completed_event.set() + self.preview_event.clear() if self.debug: print('Preview process exited') - self.isStarted.value = False + self.is_started.value = False def do_preview(self): # get all stuff that is modified at runtime - (filename, unitcode, initcode, canonData) = self.inqueue.get() + (filename, unitcode, initcode, canon_data) = self.inqueue.get() # make abort possible - canon = PreviewCanon(canonData, self.debug) + canon = PreviewCanon(canon_data, self.debug) self.aborted.value = False - canon.check_abort = lambda : self.aborted.value + canon.check_abort = lambda: self.aborted.value if self.debug: print("Preview starting") - print("Filename: " + filename) - print("Unitcode: " + unitcode) - print("Initcode: " + initcode) + print("Filename: {}".format(filename)) + print("Unitcode: {}".format(unitcode)) + print("Initcode: {}".format(initcode)) try: # here we do all the actual work... (result, last_sequence_number) = self.preview.parse( - filename, - canon, - unitcode, - initcode) + filename, canon, unitcode, initcode + ) # check if we encountered a error during execution if result > self.preview.MIN_ERROR: error = " gcode error: %s " % (self.preview.strerror(result)) line = last_sequence_number - 1 if self.debug: - printError("preview: " + filename) - printError(error + " on line " + str(line)) + print_error("preview: " + filename) + print_error(error + " on line " + str(line)) # pass error through queue self.outqueue.put((error, str(line))) - self.errorEvent.set() + self.error_event.set() except Exception as e: error = "preview error: " + str(e) if self.debug: - printError(error) + print_error(error) self.outqueue.put((error, "0")) - self.errorEvent.set() + self.error_event.set() if self.debug: print("Preview exiting") class StatusValues(object): - def __init__(self): self.io = EmcStatusIo() self.config = EmcStatusConfig() @@ -387,56 +413,63 @@ def clear(self): class LinuxCNCWrapper(object): - - def __init__(self, context, host='', loopback=False, - iniFile=None, svcUuid=None, - pollInterval=None, pingInterval=2, debug=False): + def __init__( + self, + context, + host='', + loopback=False, + ini_file=None, + svc_uuid=None, + poll_interval_s=None, + ping_interval=2, + debug=False, + ): self.debug = debug self.host = host self.loopback = loopback - self.pingInterval = pingInterval + self.ping_interval = ping_interval self.shutdown = threading.Event() self.running = False # synchronization locks - self.commandLock = threading.Lock() - self.statusLock = threading.Lock() - self.errorLock = threading.Lock() - self.errorNoteLock = threading.Lock() + self.command_lock = threading.Lock() + self.status_lock = threading.Lock() + self.error_lock = threading.Lock() + self.error_note_lock = threading.Lock() # status self.status = StatusValues() - self.statusTx = StatusValues() - self.motionSubscribed = False - self.motionFullUpdate = False - self.motionFirstrun = True - self.ioSubscribed = False - self.ioFullUpdate = False - self.ioFirstrun = True - self.ioToolTableCount = 0 - self.ioToolTableLoaded = False - self.taskSubscribed = False - self.taskFullUpdate = False - self.taskFirstrun = True - self.configSubscribed = False - self.configFullUpdate = False - self.configFirstrun = True - self.interpSubscribed = False - self.interpFullUpdate = False - self.interpFirstrun = True - self.uiSubscribed = False - self.uiFullUpdate = False - self.uiFirstrun = True - self.statusServiceSubscribed = False - - self.textSubscribed = False - self.displaySubscribed = False - self.errorSubscribed = False - self.errorServiceSubscribed = False - self.newErrorSubscription = False - - self.linuxcncErrors = [] - self.programExtensions = {} + self.status_tx = StatusValues() + self.motion_subscribed = False + self.motion_full_update = False + self.motion_first_run = True + self.io_subscribed = False + self.io_full_update = False + self.io_first_run = True + self.io_tool_table_count = 0 + self.io_tool_table_loaded = False + self.task_subscribed = False + self.task_full_update = False + self.task_first_run = True + self.config_subscribed = False + self.config_full_update = False + self.config_first_run = True + self.interp_subscribed = False + self.interp_full_update = False + self.interp_first_run = True + self.ui_subscribed = False + self.ui_full_update = False + self.ui_first_run = True + self.status_service_subscribed = False + + self.text_subscribed = False + self.display_subscribed = False + self.error_subscribed = False + self.error_service_subscribed = False + self.new_error_subscription = False + + self.linuxcnc_errors = [] + self.program_extensions = {} # Linuxcnc try: @@ -444,134 +477,169 @@ def __init__(self, context, host='', loopback=False, self.command = linuxcnc.command() self.error = linuxcnc.error_channel() - iniFile = iniFile or os.environ.get('INI_FILE_NAME', '/dev/null') - self.ini = linuxcnc.ini(iniFile) + ini_file = ini_file or os.environ.get('INI_FILE_NAME', '/dev/null') + self.ini = linuxcnc.ini(ini_file) self.directory = self.ini.find('DISPLAY', 'PROGRAM_PREFIX') or os.getcwd() self.directory = os.path.abspath(os.path.expanduser(self.directory)) - self.pollInterval = float(pollInterval or self.ini.find('DISPLAY', 'CYCLE_TIME') or 0.1) - self.interpParameterFile = self.ini.find('RS274NGC', 'PARAMETER_FILE') or "linuxcnc.var" - self.interpParameterFile = os.path.abspath(os.path.expanduser(self.interpParameterFile)) - self.interpInitcode = self.ini.find("EMC", "RS274NGC_STARTUP_CODE") or "" - if self.interpInitcode == "": - self.interpInitcode = self.ini.find("RS274NGC", "RS274NGC_STARTUP_CODE") or "" - self.interpInitcode = self.ini.find("RS274NGC", "RS274NGC_STARTUP_CODE") or "" - self.randomToolChanger = self.ini.find("EMCIO", "RANDOM_TOOL_CHANGER") or 0 + self.poll_interval_s = float( + poll_interval_s or self.ini.find('DISPLAY', 'CYCLE_TIME') or 0.1 + ) + self.interp_parameter_file = ( + self.ini.find('RS274NGC', 'PARAMETER_FILE') or "linuxcnc.var" + ) + self.interp_parameter_file = os.path.abspath( + os.path.expanduser(self.interp_parameter_file) + ) + self.interp_init_code = self.ini.find("EMC", "RS274NGC_STARTUP_CODE") or "" + if self.interp_init_code == "": + self.interp_init_code = ( + self.ini.find("RS274NGC", "RS274NGC_STARTUP_CODE") or "" + ) + self.interp_init_code = ( + self.ini.find("RS274NGC", "RS274NGC_STARTUP_CODE") or "" + ) + self.random_tool_changer = ( + self.ini.find("EMCIO", "RANDOM_TOOL_CHANGER") or 0 + ) # setup program extensions extensions = self.ini.findall("FILTER", "PROGRAM_EXTENSION") for line in extensions: - splitted = line.split(' ') - splitted = splitted[0].split(',') - for extension in splitted: + split_line = line.split(' ') + split_line = split_line[0].split(',') + for extension in split_line: if extension[0] == '.': extension = extension[1:] program = self.ini.find("FILTER", extension) or "" if program is not "": - self.programExtensions[extension] = program + self.program_extensions[extension] = program # initialize total line count - self.totalLines = 0 + self.total_lines = 0 # initialize tool table path - self.toolTablePath = self.ini.find('EMCIO', 'TOOL_TABLE') or '' - if self.toolTablePath is not '': - self.toolTablePath = os.path.abspath(os.path.expanduser(self.toolTablePath)) + self.tool_table_path = self.ini.find('EMCIO', 'TOOL_TABLE') or '' + if self.tool_table_path is not '': + self.tool_table_path = os.path.abspath( + os.path.expanduser(self.tool_table_path) + ) # If specified in the ini, try to open the default file - openFile = self.ini.find('DISPLAY', 'OPEN_FILE') or "" - openFile = openFile.strip('"') # quote signs are allowed - if openFile != "": - openFile = os.path.abspath(os.path.expanduser(openFile)) - fileName = os.path.basename(openFile) - filePath = os.path.join(self.directory, fileName) - shutil.copy(openFile, filePath) + open_file = self.ini.find('DISPLAY', 'OPEN_FILE') or "" + open_file = open_file.strip('"') # quote signs are allowed + if open_file != "": + open_file = os.path.abspath(os.path.expanduser(open_file)) + file_name = os.path.basename(open_file) + file_path = os.path.join(self.directory, file_name) + shutil.copy(open_file, file_path) if self.debug: - print(str("loading default file " + openFile)) - filePath = self.preprocess_program(filePath) + print("loading default file {}".format(open_file)) + file_path = self.preprocess_program(file_path) self.command.mode(linuxcnc.MODE_AUTO) self.command.wait_complete() - self.command.program_open(filePath) + self.command.program_open(file_path) except linuxcnc.error as detail: - printError(str(detail)) + print_error(str(detail)) sys.exit(1) - if self.pingInterval > 0: - self.pingRatio = math.floor(self.pingInterval / self.pollInterval) + if self.ping_interval > 0: + self.ping_ratio = math.floor(self.ping_interval / self.poll_interval_s) else: - self.pingRatio = -1 - self.pingCount = 0 + self.ping_ratio = -1 + self.ping_count = 0 - self.rx = Container() # Used by the command socket - self.txStatus = Container() # Status socket - PUB-SUB - self.txCommand = Container() # Command socket - ROUTER-DEALER - self.txError = Container() # Error socket - PUB-SUB + self.rx = Container() # Used by the command socket + self.tx_status = Container() # Status socket - PUB-SUB + self.tx_command = Container() # Command socket - ROUTER-DEALER + self.tx_error = Container() # Error socket - PUB-SUB self.context = context - self.baseUri = "tcp://" + self.base_uri = "tcp://" if self.loopback: - self.baseUri += '127.0.0.1' + self.base_uri += '127.0.0.1' else: - self.baseUri += '*' - self.statusSocket = context.socket(zmq.XPUB) - self.statusSocket.setsockopt(zmq.XPUB_VERBOSE, 1) - self.statusPort = self.statusSocket.bind_to_random_port(self.baseUri) - self.statusDsname = self.statusSocket.get_string(zmq.LAST_ENDPOINT, encoding='utf-8') - self.statusDsname = self.statusDsname.replace('0.0.0.0', self.host) - self.errorSocket = context.socket(zmq.XPUB) - self.errorSocket.setsockopt(zmq.XPUB_VERBOSE, 1) - self.errorPort = self.errorSocket.bind_to_random_port(self.baseUri) - self.errorDsname = self.errorSocket.get_string(zmq.LAST_ENDPOINT, encoding='utf-8') - self.errorDsname = self.errorDsname.replace('0.0.0.0', self.host) - self.commandSocket = context.socket(zmq.ROUTER) - self.commandPort = self.commandSocket.bind_to_random_port(self.baseUri) - self.commandDsname = self.commandSocket.get_string(zmq.LAST_ENDPOINT, encoding='utf-8') - self.commandDsname = self.commandDsname.replace('0.0.0.0', self.host) - self.preview = Preview(stat=self.stat, - randomToolchanger=self.randomToolChanger, - parameterFile=self.interpParameterFile, - initcode=self.interpInitcode, - debug=self.debug) - (self.previewDsname, self.previewstatusDsname) = \ - self.preview.bind(self.baseUri + ':*', self.baseUri + ':*') - self.previewDsname = self.previewDsname.replace('0.0.0.0', self.host) - self.previewstatusDsname = self.previewstatusDsname.replace('0.0.0.0', self.host) + self.base_uri += '*' + self.status_socket = context.socket(zmq.XPUB) + self.status_socket.setsockopt(zmq.XPUB_VERBOSE, 1) + self.status_port = self.status_socket.bind_to_random_port(self.base_uri) + self.status_dsname = self.status_socket.get_string( + zmq.LAST_ENDPOINT, encoding='utf-8' + ) + self.status_dsname = self.status_dsname.replace('0.0.0.0', self.host) + self.error_socket = context.socket(zmq.XPUB) + self.error_socket.setsockopt(zmq.XPUB_VERBOSE, 1) + self.error_port = self.error_socket.bind_to_random_port(self.base_uri) + self.error_dsname = self.error_socket.get_string( + zmq.LAST_ENDPOINT, encoding='utf-8' + ) + self.error_dsname = self.error_dsname.replace('0.0.0.0', self.host) + self.command_socket = context.socket(zmq.ROUTER) + self.command_port = self.command_socket.bind_to_random_port(self.base_uri) + self.command_dsname = self.command_socket.get_string( + zmq.LAST_ENDPOINT, encoding='utf-8' + ) + self.command_dsname = self.command_dsname.replace('0.0.0.0', self.host) + self.preview = Preview( + stat=self.stat, + random_toolchanger=self.random_tool_changer, + parameter_file=self.interp_parameter_file, + initcode=self.interp_init_code, + debug=self.debug, + ) + (self.preview_dsname, self.previewstatus_dsname) = self.preview.bind( + self.base_uri + ':*', self.base_uri + ':*' + ) + self.preview_dsname = self.preview_dsname.replace('0.0.0.0', self.host) + self.previewstatus_dsname = self.previewstatus_dsname.replace( + '0.0.0.0', self.host + ) self.preview.register_error_callback(self.preview_error) - self.previewPort = urlparse(self.previewDsname).port - self.previewstatusPort = urlparse(self.previewstatusDsname).port - - self.statusService = service.Service(type='status', - svcUuid=svcUuid, - dsn=self.statusDsname, - port=self.statusPort, - host=self.host, - loopback=self.loopback, - debug=self.debug) - self.errorService = service.Service(type='error', - svcUuid=svcUuid, - dsn=self.errorDsname, - port=self.errorPort, - host=self.host, - loopback=self.loopback, - debug=self.debug) - self.commandService = service.Service(type='command', - svcUuid=svcUuid, - dsn=self.commandDsname, - port=self.commandPort, - host=self.host, - loopback=self.loopback, - debug=self.debug) - self.previewService = service.Service(type='preview', - svcUuid=svcUuid, - dsn=self.previewDsname, - port=self.previewPort, - host=self.host, - loopback=self.loopback, - debug=self.debug) - self.previewstatusService = service.Service(type='previewstatus', - svcUuid=svcUuid, - dsn=self.previewstatusDsname, - port=self.previewstatusPort, - host=self.host, - loopback=self.loopback, - debug=self.debug) + self.preview_port = parse.urlparse(self.preview_dsname).port + self.previewstatus_port = parse.urlparse(self.previewstatus_dsname).port + + self.status_service = service.Service( + type='status', + svcUuid=svc_uuid, + dsn=self.status_dsname, + port=self.status_port, + host=self.host, + loopback=self.loopback, + debug=self.debug, + ) + self.error_service = service.Service( + type='error', + svcUuid=svc_uuid, + dsn=self.error_dsname, + port=self.error_port, + host=self.host, + loopback=self.loopback, + debug=self.debug, + ) + self.command_service = service.Service( + type='command', + svcUuid=svc_uuid, + dsn=self.command_dsname, + port=self.command_port, + host=self.host, + loopback=self.loopback, + debug=self.debug, + ) + self.preview_service = service.Service( + type='preview', + svcUuid=svc_uuid, + dsn=self.preview_dsname, + port=self.preview_port, + host=self.host, + loopback=self.loopback, + debug=self.debug, + ) + self.previewstatus_service = service.Service( + type='previewstatus', + svcUuid=svc_uuid, + dsn=self.previewstatus_dsname, + port=self.previewstatus_port, + host=self.host, + loopback=self.loopback, + debug=self.debug, + ) self.publish() @@ -580,47 +648,47 @@ def __init__(self, context, host='', loopback=False, def process_sockets(self): poll = zmq.Poller() - poll.register(self.statusSocket, zmq.POLLIN) - poll.register(self.errorSocket, zmq.POLLIN) - poll.register(self.commandSocket, zmq.POLLIN) + poll.register(self.status_socket, zmq.POLLIN) + poll.register(self.error_socket, zmq.POLLIN) + poll.register(self.command_socket, zmq.POLLIN) - next_poll = time.time() + self.pollInterval - polldelay = (self.pollInterval) * 1000 # convert to ms + next_poll = time.time() + self.poll_interval_s + poll_delay = self.poll_interval_s * 1000 # convert to ms while not self.shutdown.is_set(): - s = dict(poll.poll(polldelay)) - if self.statusSocket in s and s[self.statusSocket] == zmq.POLLIN: - self.process_status(self.statusSocket) - if self.errorSocket in s and s[self.errorSocket] == zmq.POLLIN: - self.process_error(self.errorSocket) - if self.commandSocket in s and s[self.commandSocket] == zmq.POLLIN: - self.process_command(self.commandSocket) - - polldelay = (next_poll - time.time()) * 1000 # convert to ms - if (polldelay > 0): + s = dict(poll.poll(poll_delay)) + if self.status_socket in s and s[self.status_socket] == zmq.POLLIN: + self.process_status(self.status_socket) + if self.error_socket in s and s[self.error_socket] == zmq.POLLIN: + self.process_error(self.error_socket) + if self.command_socket in s and s[self.command_socket] == zmq.POLLIN: + self.process_command(self.command_socket) + + poll_delay = (next_poll - time.time()) * 1000 # convert to ms + if poll_delay > 0: continue - next_poll = time.time() + self.pollInterval - polldelay = (self.pollInterval) * 1000 # convert to ms + next_poll = time.time() + self.poll_interval_s + poll_delay = self.poll_interval_s * 1000 # convert to ms try: - if (self.statusServiceSubscribed): + if self.status_service_subscribed: self.stat.poll() self.update_status(self.stat) - if (self.pingCount == self.pingRatio): + if self.ping_count == self.ping_ratio: self.ping_status() - if (self.errorServiceSubscribed): + if self.error_service_subscribed: error = self.error.poll() self.update_error(error) - if (self.pingCount == self.pingRatio): + if self.ping_count == self.ping_ratio: self.ping_error() except linuxcnc.error as detail: - printError(str(detail)) + print_error(str(detail)) self.stop() - if (self.pingCount == self.pingRatio): - self.pingCount = 0 + if self.ping_count == self.ping_ratio: + self.ping_count = 0 else: - self.pingCount += 1 + self.ping_count += 1 self.unpublish() self.running = False @@ -629,43 +697,43 @@ def process_sockets(self): def publish(self): # Zeroconf try: - self.statusService.publish() - self.errorService.publish() - self.commandService.publish() - self.previewService.publish() - self.previewstatusService.publish() + self.status_service.publish() + self.error_service.publish() + self.command_service.publish() + self.preview_service.publish() + self.previewstatus_service.publish() except Exception as e: - printError('cannot register DNS service' + str(e)) + print_error('cannot register DNS service' + str(e)) sys.exit(1) def unpublish(self): - self.statusService.unpublish() - self.errorService.unpublish() - self.commandService.unpublish() - self.previewService.unpublish() - self.previewstatusService.unpublish() + self.status_service.unpublish() + self.error_service.unpublish() + self.command_service.unpublish() + self.preview_service.unpublish() + self.previewstatus_service.unpublish() def stop(self): self.shutdown.set() self.preview.stop() # handle program extensions - def preprocess_program(self, filePath): - fileName, extension = os.path.splitext(filePath) + def preprocess_program(self, file_path): + file_name, extension = os.path.splitext(file_path) extension = extension[1:] # remove dot - if extension in self.programExtensions: - program = self.programExtensions[extension] - newFileName = fileName + '.ngc' + if extension in self.program_extensions: + program = self.program_extensions[extension] + new_file_name = file_name + '.ngc' try: - outFile = open(newFileName, 'w') - process = subprocess.Popen([program, filePath], stdout=outFile) - #subprocess.check_output([program, filePath], + out_file = open(new_file_name, 'w') + process = subprocess.Popen([program, file_path], stdout=out_file) + # subprocess.check_output([program, filePath], unused_out, err = process.communicate() retcode = process.poll() if retcode: raise subprocess.CalledProcessError(retcode, '', output=err) - outFile.close() - filePath = newFileName + out_file.close() + file_path = new_file_name except IOError as e: self.add_error(str(e)) return '' @@ -673,65 +741,83 @@ def preprocess_program(self, filePath): self.add_error('%s failed: %s' % (program, str(e))) return '' # get number of lines - with open(filePath) as f: - self.totalLines = sum(1 for line in f) - return filePath + with open(file_path) as f: + self.total_lines = sum(1 for _ in f) + return file_path - def load_tool_table(self, io, txIo): - if self.toolTablePath is '': + def load_tool_table(self, io, tx_io): + if self.tool_table_path is '': return - lines = [] - with codecs.open(self.toolTablePath, 'r', encoding='utf-8') as file: - lines = file.readlines() + with codecs.open(self.tool_table_path, 'r', encoding='utf-8') as f: + lines = f.readlines() # parsing pocket number and comment, not emc status object - toolMap = {} + tool_map = {} regex = re.compile(r'(?:.*?T(\d+))(?:.*?P(\d+))?(?:.*;(.*))?', re.IGNORECASE) for line in lines: match = regex.match(line) if match: - id = int(match.group(1)) + id_ = int(match.group(1)) pocket = match.group(2) comment = match.group(3) if pocket == '': pocket = 0 - toolMap[id] = {'pocket': int(pocket), 'comment': comment} - - for i, toolResult in enumerate(io.tool_table): - txToolResult = None - for result in txIo.tool_table: - if result.index == toolResult.index: - txToolResult = result - if not txToolResult: - txToolResult = txIo.tool_table.add() - txToolResult.CopyFrom(toolResult) - id = toolResult.id - if id in toolMap: - toolResult.pocket = toolMap[id]['pocket'] or 0 - toolResult.comment = toolMap[id]['comment'] or '' - txToolResult.pocket = toolMap[id]['pocket'] or 0 - txToolResult.comment = toolMap[id]['comment'] or '' - - def update_tool_table(self, toolTable): - if self.toolTablePath is '': + tool_map[id_] = {'pocket': int(pocket), 'comment': comment} + + for i, tool_result in enumerate(io.tool_table): + tx_tool_result = None + for result in tx_io.tool_table: + if result.index == tool_result.index: + tx_tool_result = result + if not tx_tool_result: + tx_tool_result = tx_io.tool_table.add() + tx_tool_result.CopyFrom(tool_result) + id_ = tool_result.id + if id_ in tool_map: + tool_result.pocket = tool_map[id_]['pocket'] or 0 + tool_result.comment = tool_map[id_]['comment'] or '' + tx_tool_result.pocket = tool_map[id_]['pocket'] or 0 + tx_tool_result.comment = tool_map[id_]['comment'] or '' + + def update_tool_table(self, tool_table): + if self.tool_table_path is '': return False - with codecs.open(self.toolTablePath, 'w', encoding='utf-8') as file: - for tool in toolTable: - line = 'T%d P%d D%f X%+f Y%+f Z%+f A%+f B%+f C%+f U%+f V%+f W%+f I%+f J%+f Q%d ;%s\n' \ - % (tool.id, tool.pocket, tool.diameter, tool.offset.x, tool.offset.y, tool.offset.z, - tool.offset.a, tool.offset.b, tool.offset.c, tool.offset.u, tool.offset.v, tool.offset.w, - tool.frontangle, tool.backangle, tool.orientation, tool.comment) - file.write(line) + with codecs.open(self.tool_table_path, 'w', encoding='utf-8') as f: + for tool in tool_table: + line = ( + 'T%d P%d D%f X%+f Y%+f Z%+f A%+f B%+f C%+f U%+f V%+f W%+f I%+f J%+f Q%d ;%s\n' + % ( + tool.id, + tool.pocket, + tool.diameter, + tool.offset.x, + tool.offset.y, + tool.offset.z, + tool.offset.a, + tool.offset.b, + tool.offset.c, + tool.offset.u, + tool.offset.v, + tool.offset.w, + tool.frontangle, + tool.backangle, + tool.orientation, + tool.comment, + ) + ) + f.write(line) return True - def notEqual(self, a, b): + @staticmethod + def not_equal(a, b): threshold = 0.0001 return abs(a - b) > threshold - def zero_position(self): + @staticmethod + def zero_position(): position = Position() position.x = 0.0 position.y = 0.0 @@ -744,116 +830,137 @@ def zero_position(self): position.w = 0.0 return position - def check_position(self, oldPosition, newPosition): + @staticmethod + def check_position(old_position, new_position): modified = False - txPosition = Position() + tx_position = Position() - if self.notEqual(oldPosition.x, newPosition[0]): - txPosition.x = newPosition[0] + if LinuxCNCWrapper.not_equal(old_position.x, new_position[0]): + tx_position.x = new_position[0] modified = True - if self.notEqual(oldPosition.y, newPosition[1]): - txPosition.y = newPosition[1] + if LinuxCNCWrapper.not_equal(old_position.y, new_position[1]): + tx_position.y = new_position[1] modified = True - if self.notEqual(oldPosition.z, newPosition[2]): - txPosition.z = newPosition[2] + if LinuxCNCWrapper.not_equal(old_position.z, new_position[2]): + tx_position.z = new_position[2] modified = True - if self.notEqual(oldPosition.a, newPosition[3]): - txPosition.a = newPosition[3] + if LinuxCNCWrapper.not_equal(old_position.a, new_position[3]): + tx_position.a = new_position[3] modified = True - if self.notEqual(oldPosition.b, newPosition[4]): - txPosition.b = newPosition[4] + if LinuxCNCWrapper.not_equal(old_position.b, new_position[4]): + tx_position.b = new_position[4] modified = True - if self.notEqual(oldPosition.c, newPosition[5]): - txPosition.c = newPosition[5] + if LinuxCNCWrapper.not_equal(old_position.c, new_position[5]): + tx_position.c = new_position[5] modified = True - if self.notEqual(oldPosition.u, newPosition[6]): - txPosition.u = newPosition[6] + if LinuxCNCWrapper.not_equal(old_position.u, new_position[6]): + tx_position.u = new_position[6] modified = True - if self.notEqual(oldPosition.v, newPosition[7]): - txPosition.v = newPosition[7] + if LinuxCNCWrapper.not_equal(old_position.v, new_position[7]): + tx_position.v = new_position[7] modified = True - if self.notEqual(oldPosition.w, newPosition[8]): - txPosition.w = newPosition[8] + if LinuxCNCWrapper.not_equal(old_position.w, new_position[8]): + tx_position.w = new_position[8] modified = True if modified: - return True, txPosition + return True, tx_position else: - del txPosition + del tx_position return False, None - def update_proto_value(self, obj, txObj, prop, value): + @staticmethod + def update_proto_value(obj, tx_obj, prop, value): if getattr(obj, prop) != value: setattr(obj, prop, value) - setattr(txObj, prop, value) + setattr(tx_obj, prop, value) return True return False - def update_proto_float(self, obj, txObj, prop, value): - if self.notEqual(getattr(obj, prop), value): + @staticmethod + def update_proto_float(obj, tx_obj, prop, value): + if LinuxCNCWrapper.not_equal(getattr(obj, prop), value): setattr(obj, prop, value) - setattr(txObj, prop, value) + setattr(tx_obj, prop, value) return True return False - def update_proto_list(self, obj, txObj, txObjItem, prop, values, default): + @staticmethod + def update_proto_list(obj, tx_obj, tx_obj_item, prop, values, default): modified = False for index, value in enumerate(values): - txObjItem.Clear() - objModified = False + tx_obj_item.Clear() + obj_modified = False if len(obj) == index: obj.add() obj[index].index = index setattr(obj[index], prop, default) - objItem = obj[index] - objModified |= self.update_proto_value(objItem, txObjItem, prop, value) + obj_item = obj[index] + obj_modified |= LinuxCNCWrapper.update_proto_value( + obj_item, tx_obj_item, prop, value + ) - if objModified: - txObjItem.index = index - txObj.add().CopyFrom(txObjItem) + if obj_modified: + tx_obj_item.index = index + tx_obj.add().CopyFrom(tx_obj_item) modified = True return modified - def update_proto_position(self, obj, txObj, prop, value): - modified, txPosition = self.check_position(getattr(obj, prop), value) + @staticmethod + def update_proto_position(obj, tx_obj, prop, value): + modified, tx_position = LinuxCNCWrapper.check_position( + getattr(obj, prop), value + ) if modified: - getattr(obj, prop).MergeFrom(txPosition) - getattr(txObj, prop).CopyFrom(txPosition) + getattr(obj, prop).MergeFrom(tx_position) + getattr(tx_obj, prop).CopyFrom(tx_position) - del txPosition + del tx_position return modified def update_config_value(self, prop, value): - return self.update_proto_value(self.status.config, self.statusTx.config, prop, value) + return self.update_proto_value( + self.status.config, self.status_tx.config, prop, value + ) def update_config_float(self, prop, value): - return self.update_proto_float(self.status.config, self.statusTx.config, prop, value) + return self.update_proto_float( + self.status.config, self.status_tx.config, prop, value + ) def update_io_value(self, prop, value): - return self.update_proto_value(self.status.io, self.statusTx.io, prop, value) + return self.update_proto_value(self.status.io, self.status_tx.io, prop, value) def update_task_value(self, prop, value): - return self.update_proto_value(self.status.task, self.statusTx.task, prop, value) + return self.update_proto_value( + self.status.task, self.status_tx.task, prop, value + ) def update_interp_value(self, prop, value): - return self.update_proto_value(self.status.interp, self.statusTx.interp, prop, value) + return self.update_proto_value( + self.status.interp, self.status_tx.interp, prop, value + ) def update_motion_value(self, prop, value): - return self.update_proto_value(self.status.motion, self.statusTx.motion, prop, value) + return self.update_proto_value( + self.status.motion, self.status_tx.motion, prop, value + ) def update_motion_float(self, prop, value): - return self.update_proto_float(self.status.motion, self.statusTx.motion, prop, value) + return self.update_proto_float( + self.status.motion, self.status_tx.motion, prop, value + ) def update_ui_value(self, prop, value): - return self.update_proto_value(self.status.ui, self.statusTx.ui, prop, value) + return self.update_proto_value(self.status.ui, self.status_tx.ui, prop, value) def update_config(self, stat): modified = False - if self.configFirstrun: + if self.config_first_run: self.status.config.default_acceleration = 0.0 self.status.config.angular_units = ANGULAR_UNITS_DEGREES self.status.config.axes = 0 @@ -888,37 +995,41 @@ def update_config(self, stat): self.status.config.remote_path = "" self.status.config.time_units = TIME_UNITS_MINUTE self.status.config.name = "" - self.configFirstrun = False + self.config_first_run = False extensions = self.ini.findall("FILTER", "PROGRAM_EXTENSION") - txObjItem = EmcProgramExtension() + tx_obj_item = EmcProgramExtension() obj = self.status.config.program_extension - txObj = self.statusTx.config.program_extension - modified |= self.update_proto_list(obj, txObj, txObjItem, - 'extension', extensions, '') - del txObjItem + tx_obj = self.status_tx.config.program_extension + modified |= self.update_proto_list( + obj, tx_obj, tx_obj_item, 'extension', extensions, '' + ) + del tx_obj_item commands = self.ini.findall("DISPLAY", "USER_COMMAND") - txObjItem = EmcStatusUserCommand() + tx_obj_item = EmcStatusUserCommand() obj = self.status.config.user_command - txObj = self.statusTx.config.user_command - modified |= self.update_proto_list(obj, txObj, txObjItem, - 'command', commands, '') - del txObjItem - - positionOffset = self.ini.find('DISPLAY', 'POSITION_OFFSET') or 'RELATIVE' - if positionOffset == 'MACHINE': - positionOffset = EMC_CONFIG_MACHINE_OFFSET + tx_obj = self.status_tx.config.user_command + modified |= self.update_proto_list( + obj, tx_obj, tx_obj_item, 'command', commands, '' + ) + del tx_obj_item + + position_offset = self.ini.find('DISPLAY', 'POSITION_OFFSET') or 'RELATIVE' + if position_offset == 'MACHINE': + position_offset = EMC_CONFIG_MACHINE_OFFSET else: - positionOffset = EMC_CONFIG_RELATIVE_OFFSET - modified |= self.update_config_value('position_offset', positionOffset) - - positionFeedback = self.ini.find('DISPLAY', 'POSITION_FEEDBACK') or 'ACTUAL' - if positionFeedback == 'COMMANDED': - positionFeedback = EMC_CONFIG_COMMANDED_FEEDBACK + position_offset = EMC_CONFIG_RELATIVE_OFFSET + modified |= self.update_config_value('position_offset', position_offset) + + position_feedback = ( + self.ini.find('DISPLAY', 'POSITION_FEEDBACK') or 'ACTUAL' + ) + if position_feedback == 'COMMANDED': + position_feedback = EMC_CONFIG_COMMANDED_FEEDBACK else: - positionFeedback = EMC_CONFIG_ACTUAL_FEEDBACK - modified |= self.update_config_value('position_feedback', positionFeedback) + position_feedback = EMC_CONFIG_ACTUAL_FEEDBACK + modified |= self.update_config_value('position_feedback', position_feedback) value = float(self.ini.find('DISPLAY', 'MAX_FEED_OVERRIDE') or 1.2) modified |= self.update_config_value('max_feed_override', value) @@ -980,36 +1091,38 @@ def update_config(self, stat): value = float(self.ini.find('TRAJ', 'MAX_ACCELERATION') or 20.0) modified |= self.update_config_value('max_acceleration', value) - timeUnits = str(self.ini.find('DISPLAY', 'TIME_UNITS') or 'min') - if (timeUnits in ['min', 'minute']): - timeUnitsConverted = TIME_UNITS_MINUTE - elif (timeUnits in ['s', 'second']): - timeUnitsConverted = TIME_UNITS_SECOND + time_units = str(self.ini.find('DISPLAY', 'TIME_UNITS') or 'min') + if time_units in ['min', 'minute']: + time_units_converted = TIME_UNITS_MINUTE + elif time_units in ['s', 'second']: + time_units_converted = TIME_UNITS_SECOND else: - timeUnitsConverted = TIME_UNITS_MINUTE - modified |= self.update_config_value('time_units', timeUnitsConverted) - - linearUnits = str(self.ini.find('TRAJ', 'LINEAR_UNITS') or 'mm') - if linearUnits in ['mm', 'metric']: - linearUnitsConverted = LINEAR_UNITS_MM - elif linearUnits in ['in', 'inch', 'imperial']: - linearUnitsConverted = LINEAR_UNITS_INCH - elif linearUnits in ['cm']: - linearUnitsConverted = LINEAR_UNITS_CM + time_units_converted = TIME_UNITS_MINUTE + modified |= self.update_config_value('time_units', time_units_converted) + + linear_units = str(self.ini.find('TRAJ', 'LINEAR_UNITS') or 'mm') + if linear_units in ['mm', 'metric']: + linear_units_converted = LINEAR_UNITS_MM + elif linear_units in ['in', 'inch', 'imperial']: + linear_units_converted = LINEAR_UNITS_INCH + elif linear_units in ['cm']: + linear_units_converted = LINEAR_UNITS_CM else: - linearUnitsConverted = LINEAR_UNITS_MM - modified |= self.update_config_value('linear_units', linearUnitsConverted) - - angularUnits = str(self.ini.find('TRAJ', 'ANGULAR_UNITS') or 'deg') - if angularUnits in ['deg', 'degree']: - angularUnitsConverted = ANGULAR_UNITS_DEGREES - elif angularUnits in ['rad', 'radian']: - angularUnitsConverted = ANGULAR_UNITS_RADIAN - elif angularUnits in ['grad', 'gon']: - angularUnitsConverted = ANGULAR_UNITS_GRAD + linear_units_converted = LINEAR_UNITS_MM + modified |= self.update_config_value('linear_units', linear_units_converted) + + angular_units = str(self.ini.find('TRAJ', 'ANGULAR_UNITS') or 'deg') + if angular_units in ['deg', 'degree']: + angular_units_converted = ANGULAR_UNITS_DEGREES + elif angular_units in ['rad', 'radian']: + angular_units_converted = ANGULAR_UNITS_RADIAN + elif angular_units in ['grad', 'gon']: + angular_units_converted = ANGULAR_UNITS_GRAD else: - angularUnitsConverted = ANGULAR_UNITS_DEGREES - modified |= self.update_config_value('angular_units', angularUnitsConverted) + angular_units_converted = ANGULAR_UNITS_DEGREES + modified |= self.update_config_value( + 'angular_units', angular_units_converted + ) modified |= self.update_config_value('remote_path', self.directory) @@ -1025,10 +1138,10 @@ def update_config(self, stat): modified |= self.update_config_float('default_acceleration', stat.acceleration) modified |= self.update_config_float('default_velocity', stat.velocity) - txAxis = EmcStatusConfigAxis() - for index, statAxis in enumerate(stat.axis): - txAxis.Clear() - axisModified = False + tx_axis = EmcStatusConfigAxis() + for index, stat_axis in enumerate(stat.axis): + tx_axis.Clear() + axis_modified = False if index == stat.axes: break @@ -1048,48 +1161,61 @@ def update_config(self, stat): self.status.config.axis[index].increments = "" axis = self.status.config.axis[index] - axisName = 'AXIS_%i' % index - value = int(self.ini.find(axisName, 'HOME_SEQUENCE') or -1) - axisModified |= self.update_proto_value(axis, txAxis, - 'home_sequence', value) + axis_name = 'AXIS_%i' % index + value = int(self.ini.find(axis_name, 'HOME_SEQUENCE') or -1) + axis_modified |= self.update_proto_value( + axis, tx_axis, 'home_sequence', value + ) - value = float(self.ini.find(axisName, 'MAX_VELOCITY') or 0.0) - axisModified |= self.update_proto_value(axis, txAxis, - 'max_velocity', value) + value = float(self.ini.find(axis_name, 'MAX_VELOCITY') or 0.0) + axis_modified |= self.update_proto_value( + axis, tx_axis, 'max_velocity', value + ) - value = float(self.ini.find(axisName, 'MAX_ACCELERATION') or 0.0) - axisModified |= self.update_proto_value(axis, txAxis, - 'max_acceleration', value) + value = float(self.ini.find(axis_name, 'MAX_ACCELERATION') or 0.0) + axis_modified |= self.update_proto_value( + axis, tx_axis, 'max_acceleration', value + ) - value = self.ini.find(axisName, 'INCREMENTS') or '' - axisModified |= self.update_proto_value(axis, txAxis, - 'increments', value) + value = self.ini.find(axis_name, 'INCREMENTS') or '' + axis_modified |= self.update_proto_value( + axis, tx_axis, 'increments', value + ) axis = self.status.config.axis[index] - axisModified |= self.update_proto_value(axis, txAxis, 'axis_type', statAxis['axisType']) - - for name in ['backlash', 'max_ferror', 'max_position_limit', - 'min_ferror', 'min_position_limit']: - axisModified |= self.update_proto_float(axis, txAxis, name, statAxis[name]) + axis_modified |= self.update_proto_value( + axis, tx_axis, 'axis_type', stat_axis['axisType'] + ) + + for name in [ + 'backlash', + 'max_ferror', + 'max_position_limit', + 'min_ferror', + 'min_position_limit', + ]: + axis_modified |= self.update_proto_float( + axis, tx_axis, name, stat_axis[name] + ) - if axisModified: - txAxis.index = index - self.statusTx.config.axis.add().CopyFrom(txAxis) + if axis_modified: + tx_axis.index = index + self.status_tx.config.axis.add().CopyFrom(tx_axis) modified = True - del txAxis + del tx_axis - if self.configFullUpdate: + if self.config_full_update: self.add_pparams() self.send_config(self.status.config, MT_EMCSTAT_FULL_UPDATE) - self.configFullUpdate = False + self.config_full_update = False elif modified: - self.send_config(self.statusTx.config, MT_EMCSTAT_INCREMENTAL_UPDATE) + self.send_config(self.status_tx.config, MT_EMCSTAT_INCREMENTAL_UPDATE) def update_io(self, stat): modified = False - if self.ioFirstrun: + if self.io_first_run: self.status.io.estop = 0 self.status.io.flood = 0 self.status.io.lube = 0 @@ -1098,32 +1224,40 @@ def update_io(self, stat): self.status.io.pocket_prepped = 0 self.status.io.tool_in_spindle = 0 self.status.io.tool_offset.MergeFrom(self.zero_position()) - self.ioFirstrun = False - - for name in ['estop', 'flood', 'lube', 'lube_level', 'mist', - 'pocket_prepped', 'tool_in_spindle']: + self.io_first_run = False + + for name in [ + 'estop', + 'flood', + 'lube', + 'lube_level', + 'mist', + 'pocket_prepped', + 'tool_in_spindle', + ]: modified |= self.update_io_value(name, getattr(stat, name)) - modified |= self.update_proto_position(self.status.io, self.statusTx.io, - 'tool_offset', stat.tool_offset) + modified |= self.update_proto_position( + self.status.io, self.status_tx.io, 'tool_offset', stat.tool_offset + ) - txToolResult = EmcToolData() - toolTableChanged = False - tableIndex = 0 - for index, statToolResult in enumerate(stat.tool_table): - txToolResult.Clear() - resultModified = False - newItem = False + tx_tool_result = EmcToolData() + tool_table_changed = False + table_index = 0 + for index, stat_tool_result in enumerate(stat.tool_table): + tx_tool_result.Clear() + result_modified = False + new_item = False - if (index == 0 and not self.randomToolChanger): + if index == 0 and not self.random_tool_changer: continue - if (statToolResult.id == -1 and not self.randomToolChanger): + if stat_tool_result.id == -1 and not self.random_tool_changer: break # last tool in table, except index = 0 (spindle !) - if len(self.status.io.tool_table) == tableIndex: # item added + if len(self.status.io.tool_table) == table_index: # item added item = self.status.io.tool_table.add() - item.index = tableIndex + item.index = table_index item.id = 0 item.offset.MergeFrom(self.zero_position()) item.diameter = 0.0 @@ -1132,69 +1266,74 @@ def update_io(self, stat): item.orientation = 0 item.comment = "" item.pocket = 0 - newItem = True + new_item = True - toolResult = self.status.io.tool_table[tableIndex] + tool_result = self.status.io.tool_table[table_index] for name in ['id', 'orientation']: - value = getattr(statToolResult, name) - resultModified |= self.update_proto_value(toolResult, txToolResult, - name, value) + value = getattr(stat_tool_result, name) + result_modified |= self.update_proto_value( + tool_result, tx_tool_result, name, value + ) for name in ['diameter', 'frontangle', 'backangle']: - value = getattr(statToolResult, name) - resultModified |= self.update_proto_float(toolResult, txToolResult, - name, value) + value = getattr(stat_tool_result, name) + result_modified |= self.update_proto_float( + tool_result, tx_tool_result, name, value + ) position = range(0, 9) for i, axis in enumerate(['x', 'y', 'z', 'a', 'b', 'c', 'u', 'v', 'w']): - value = getattr(statToolResult, axis + 'offset') + value = getattr(stat_tool_result, axis + 'offset') position[i] = value - resultModified |= self.update_proto_position(toolResult, txToolResult, - 'offset', position) - - if resultModified: - txToolResult.index = tableIndex - if newItem: - self.statusTx.io.tool_table.add().CopyFrom(toolResult) # make sure to send update + result_modified |= self.update_proto_position( + tool_result, tx_tool_result, 'offset', position + ) + + if result_modified: + tx_tool_result.index = table_index + if new_item: + self.status_tx.io.tool_table.add().CopyFrom( + tool_result + ) # make sure to send update else: - self.statusTx.io.tool_table.add().CopyFrom(txToolResult) + self.status_tx.io.tool_table.add().CopyFrom(tx_tool_result) modified = True - toolTableChanged = True + tool_table_changed = True - tableIndex += 1 + table_index += 1 # cleanup dead entries - while tableIndex < len(self.status.io.tool_table): + while table_index < len(self.status.io.tool_table): del self.status.io.tool_table[-1] # check if new tool table is smaller # if so we need to send empty messages (only index) to the subscribers - if tableIndex < self.ioToolTableCount: - for i in range(tableIndex, self.ioToolTableCount): - txToolResult.Clear() - txToolResult.index = i - self.statusTx.io.tool_table.add().CopyFrom(txToolResult) - toolTableChanged = True - self.ioToolTableCount = tableIndex - - if toolTableChanged or self.ioToolTableLoaded: + if table_index < self.io_tool_table_count: + for i in range(table_index, self.io_tool_table_count): + tx_tool_result.Clear() + tx_tool_result.index = i + self.status_tx.io.tool_table.add().CopyFrom(tx_tool_result) + tool_table_changed = True + self.io_tool_table_count = table_index + + if tool_table_changed or self.io_tool_table_loaded: # update pocket and comment from tool table file - self.load_tool_table(self.status.io, self.statusTx.io) - self.ioToolTableLoaded = False + self.load_tool_table(self.status.io, self.status_tx.io) + self.io_tool_table_loaded = False modified = True - del txToolResult + del tx_tool_result - if self.ioFullUpdate: + if self.io_full_update: self.add_pparams() self.send_io(self.status.io, MT_EMCSTAT_FULL_UPDATE) - self.ioFullUpdate = False + self.io_full_update = False elif modified: - self.send_io(self.statusTx.io, MT_EMCSTAT_INCREMENTAL_UPDATE) + self.send_io(self.status_tx.io, MT_EMCSTAT_INCREMENTAL_UPDATE) def update_task(self, stat): modified = False - if self.taskFirstrun: + if self.task_first_run: self.status.task.echo_serial_number = 0 self.status.task.exec_state = EMC_TASK_EXEC_ERROR self.status.task.file = "" @@ -1205,67 +1344,78 @@ def update_task(self, stat): self.status.task.task_paused = 0 self.status.task.task_state = EMC_TASK_STATE_ESTOP self.status.task.total_lines = 0 - self.taskFirstrun = False - - for name in ['echo_serial_number', 'exec_state', 'file', - 'input_timeout', 'optional_stop', 'read_line', - 'task_mode', 'task_paused', 'task_state']: + self.task_first_run = False + + for name in [ + 'echo_serial_number', + 'exec_state', + 'file', + 'input_timeout', + 'optional_stop', + 'read_line', + 'task_mode', + 'task_paused', + 'task_state', + ]: modified |= self.update_task_value(name, getattr(stat, name)) - modified |= self.update_task_value('total_lines', self.totalLines) + modified |= self.update_task_value('total_lines', self.total_lines) - if self.taskFullUpdate: + if self.task_full_update: self.add_pparams() self.send_task(self.status.task, MT_EMCSTAT_FULL_UPDATE) - self.taskFullUpdate = False + self.task_full_update = False elif modified: - self.send_task(self.statusTx.task, MT_EMCSTAT_INCREMENTAL_UPDATE) + self.send_task(self.status_tx.task, MT_EMCSTAT_INCREMENTAL_UPDATE) def update_interp(self, stat): modified = False - if self.interpFirstrun: + if self.interp_first_run: self.status.interp.command = "" self.status.interp.interp_state = EMC_TASK_INTERP_IDLE self.status.interp.interpreter_errcode = 0 self.status.interp.program_units = CANON_UNITS_INCH - self.interpFirstrun = False + self.interp_first_run = False for name in ['command', 'interp_state', 'interpreter_errcode', 'program_units']: modified |= self.update_interp_value(name, getattr(stat, name)) - txObjItem = EmcStatusGCode() + tx_obj_item = EmcStatusGCode() obj = self.status.interp.gcodes - txObj = self.statusTx.interp.gcodes - modified |= self.update_proto_list(obj, txObj, txObjItem, - 'value', stat.gcodes, 0) - del txObjItem + tx_obj = self.status_tx.interp.gcodes + modified |= self.update_proto_list( + obj, tx_obj, tx_obj_item, 'value', stat.gcodes, 0 + ) + del tx_obj_item - txObjItem = EmcStatusMCode() + tx_obj_item = EmcStatusMCode() obj = self.status.interp.mcodes - txObj = self.statusTx.interp.mcodes - modified |= self.update_proto_list(obj, txObj, txObjItem, - 'value', stat.mcodes, 0) - del txObjItem + tx_obj = self.status_tx.interp.mcodes + modified |= self.update_proto_list( + obj, tx_obj, tx_obj_item, 'value', stat.mcodes, 0 + ) + del tx_obj_item - txObjItem = EmcStatusSetting() + tx_obj_item = EmcStatusSetting() obj = self.status.interp.settings - txObj = self.statusTx.interp.settings - modified |= self.update_proto_list(obj, txObj, txObjItem, - 'value', stat.settings, 0.0) - del txObjItem + tx_obj = self.status_tx.interp.settings + modified |= self.update_proto_list( + obj, tx_obj, tx_obj_item, 'value', stat.settings, 0.0 + ) + del tx_obj_item - if self.interpFullUpdate: + if self.interp_full_update: self.add_pparams() self.send_interp(self.status.interp, MT_EMCSTAT_FULL_UPDATE) - self.interpFullUpdate = False + self.interp_full_update = False elif modified: - self.send_interp(self.statusTx.interp, MT_EMCSTAT_INCREMENTAL_UPDATE) + self.send_interp(self.status_tx.interp, MT_EMCSTAT_INCREMENTAL_UPDATE) def update_motion(self, stat): modified = False - if self.motionFirstrun: + if self.motion_first_run: self.status.motion.active_queue = 0 self.status.motion.actual_position.MergeFrom(self.zero_position()) self.status.motion.adaptive_feed_enabled = False @@ -1309,69 +1459,109 @@ def update_motion(self, stat): self.status.motion.state = UNINITIALIZED_STATUS self.status.motion.max_velocity = 0.0 self.status.motion.max_acceleration = 0.0 - self.motionFirstrun = False - - for name in ['active_queue', 'adaptive_feed_enabled', 'block_delete', - 'current_line', 'enabled', 'feed_hold_enabled', - 'feed_override_enabled', 'g5x_index', 'id', 'inpos', - 'motion_line', 'motion_type', 'motion_mode', 'paused', - 'probe_tripped', 'probe_val', 'probing', 'queue', - 'queue_full', 'spindle_brake', 'spindle_direction', - 'spindle_enabled', 'spindle_increasing', - 'spindle_override_enabled', 'state']: + self.motion_first_run = False + + for name in [ + 'active_queue', + 'adaptive_feed_enabled', + 'block_delete', + 'current_line', + 'enabled', + 'feed_hold_enabled', + 'feed_override_enabled', + 'g5x_index', + 'id', + 'inpos', + 'motion_line', + 'motion_type', + 'motion_mode', + 'paused', + 'probe_tripped', + 'probe_val', + 'probing', + 'queue', + 'queue_full', + 'spindle_brake', + 'spindle_direction', + 'spindle_enabled', + 'spindle_increasing', + 'spindle_override_enabled', + 'state', + ]: modified |= self.update_motion_value(name, getattr(stat, name)) - for name in ['current_vel', 'delay_left', 'distance_to_go', - 'feedrate', 'rapidrate', 'rotation_xy', 'spindle_speed', - 'spindlerate', 'max_acceleration', 'max_velocity']: + for name in [ + 'current_vel', + 'delay_left', + 'distance_to_go', + 'feedrate', + 'rapidrate', + 'rotation_xy', + 'spindle_speed', + 'spindlerate', + 'max_acceleration', + 'max_velocity', + ]: modified |= self.update_motion_float(name, getattr(stat, name)) - for name in ['actual_position', 'dtg', 'g5x_offset', 'g92_offset', - 'joint_actual_position', 'joint_position', 'position', - 'probed_position']: - modified |= self.update_proto_position(self.status.motion, - self.statusTx.motion, - name, getattr(stat, name)) - - txObjItem = EmcStatusAnalogIO() + for name in [ + 'actual_position', + 'dtg', + 'g5x_offset', + 'g92_offset', + 'joint_actual_position', + 'joint_position', + 'position', + 'probed_position', + ]: + modified |= self.update_proto_position( + self.status.motion, self.status_tx.motion, name, getattr(stat, name) + ) + + tx_obj_item = EmcStatusAnalogIO() obj = self.status.motion.ain - txObj = self.statusTx.motion.ain - modified |= self.update_proto_list(obj, txObj, txObjItem, - 'value', stat.ain, 0.0) - del txObjItem + tx_obj = self.status_tx.motion.ain + modified |= self.update_proto_list( + obj, tx_obj, tx_obj_item, 'value', stat.ain, 0.0 + ) + del tx_obj_item - txObjItem = EmcStatusAnalogIO() + tx_obj_item = EmcStatusAnalogIO() obj = self.status.motion.aout - txObj = self.statusTx.motion.aout - modified |= self.update_proto_list(obj, txObj, txObjItem, - 'value', stat.aout, 0.0) - del txObjItem + tx_obj = self.status_tx.motion.aout + modified |= self.update_proto_list( + obj, tx_obj, tx_obj_item, 'value', stat.aout, 0.0 + ) + del tx_obj_item - txObjItem = EmcStatusDigitalIO() + tx_obj_item = EmcStatusDigitalIO() obj = self.status.motion.din - txObj = self.statusTx.motion.din - modified |= self.update_proto_list(obj, txObj, txObjItem, - 'value', stat.din, False) - del txObjItem + tx_obj = self.status_tx.motion.din + modified |= self.update_proto_list( + obj, tx_obj, tx_obj_item, 'value', stat.din, False + ) + del tx_obj_item - txObjItem = EmcStatusDigitalIO() + tx_obj_item = EmcStatusDigitalIO() obj = self.status.motion.dout - txObj = self.statusTx.motion.dout - modified |= self.update_proto_list(obj, txObj, txObjItem, - 'value', stat.dout, False) - del txObjItem + tx_obj = self.status_tx.motion.dout + modified |= self.update_proto_list( + obj, tx_obj, tx_obj_item, 'value', stat.dout, False + ) + del tx_obj_item - txObjItem = EmcStatusLimit() + tx_obj_item = EmcStatusLimit() obj = self.status.motion.limit - txObj = self.statusTx.motion.limit - modified |= self.update_proto_list(obj, txObj, txObjItem, - 'value', stat.limit, False) - del txObjItem + tx_obj = self.status_tx.motion.limit + modified |= self.update_proto_list( + obj, tx_obj, tx_obj_item, 'value', stat.limit, False + ) + del tx_obj_item - txAxis = EmcStatusMotionAxis() - for index, statAxis in enumerate(stat.axis): - txAxis.Clear() - axisModified = False + tx_axis = EmcStatusMotionAxis() + for index, stat_axis in enumerate(stat.axis): + tx_axis.Clear() + axis_modified = False if index == stat.axes: break @@ -1396,35 +1586,50 @@ def update_motion(self, stat): self.status.motion.axis[index].velocity = 0.0 axis = self.status.motion.axis[index] - for name in ['enabled', 'fault', 'homed', 'homing', - 'inpos', 'max_hard_limit', 'max_soft_limit', - 'min_hard_limit', 'min_soft_limit', - 'override_limits']: - axisModified |= self.update_proto_value(axis, txAxis, - name, statAxis[name]) - - for name in ['ferror_current', 'ferror_highmark', 'input', - 'output', 'velocity']: - axisModified |= self.update_proto_float(axis, txAxis, - name, statAxis[name]) - - if axisModified: - txAxis.index = index - self.statusTx.motion.axis.add().CopyFrom(txAxis) + for name in [ + 'enabled', + 'fault', + 'homed', + 'homing', + 'inpos', + 'max_hard_limit', + 'max_soft_limit', + 'min_hard_limit', + 'min_soft_limit', + 'override_limits', + ]: + axis_modified |= self.update_proto_value( + axis, tx_axis, name, stat_axis[name] + ) + + for name in [ + 'ferror_current', + 'ferror_highmark', + 'input', + 'output', + 'velocity', + ]: + axis_modified |= self.update_proto_float( + axis, tx_axis, name, stat_axis[name] + ) + + if axis_modified: + tx_axis.index = index + self.status_tx.motion.axis.add().CopyFrom(tx_axis) modified = True - del txAxis + del tx_axis - if self.motionFullUpdate: + if self.motion_full_update: self.add_pparams() self.send_motion(self.status.motion, MT_EMCSTAT_FULL_UPDATE) - self.motionFullUpdate = False + self.motion_full_update = False elif modified: - self.send_motion(self.statusTx.motion, MT_EMCSTAT_INCREMENTAL_UPDATE) + self.send_motion(self.status_tx.motion, MT_EMCSTAT_INCREMENTAL_UPDATE) def update_ui(self, _stat): modified = False - if self.uiFirstrun: + if self.ui_first_run: self.status.ui.spindle_brake_visible = False self.status.ui.spindle_cw_visible = False self.status.ui.spindle_ccw_visible = False @@ -1435,47 +1640,85 @@ def update_ui(self, _stat): self.status.ui.coolant_flood_visible = False self.status.ui.coolant_mist_visible = False - modified |= self.update_ui_value('spindle_brake_visible', self.get_ui_element_visible( - "motion.spindle-brake" - )) - modified |= self.update_ui_value('spindle_cw_visible', self.get_ui_element_visible( - "motion.spindle-forward", "motion.spindle-on", "motion.spindle-speed-out", - "motion.spindle-speed-out-abs", "motion.spindle-speed-out-rps", "motion.spindle-speed-out-rps-abs" - )) - modified |= self.update_ui_value('spindle_ccw_visible', self.get_ui_element_visible( - "motion.spindle-reverse", "motion.spindle-speed-out", "motion.spindle-speed-out-abs", - "motion.spindle-speed-out-rps", "motion.spindle-speed-out-rps-abs" - )) - modified |= self.update_ui_value('spindle_stop_visible', self.get_ui_element_visible( - "motion.spindle-forward", "motion.spindle-reverse", "motion.spindle-on", - "motion.spindle-speed-out", "motion.spindle-speed-out-abs", "motion.spindle-speed-out-rps", - "motion.spindle-speed-out-rps-abs" - )) - modified |= self.update_ui_value('spindle_plus_visible', self.get_ui_element_visible( - "motion.spindle-speed-out", "motion.spindle-speed-out-abs", "motion.spindle-speed-out-rps", - "motion.spindle-speed-out-rps-abs" - )) - modified |= self.update_ui_value('spindle_minus_visible', self.get_ui_element_visible( - "motion.spindle-speed-out", "motion.spindle-speed-out-abs", "motion.spindle-speed-out-rps", - "motion.spindle-speed-out-rps-abs" - )) - modified |= self.update_ui_value('spindle_override_visible', self.get_ui_element_visible( - "motion.spindle-speed-out", "motion.spindle-speed-out-abs", "motion.spindle-speed-out-rps", - "motion.spindle-speed-out-rps-abs" - )) - modified |= self.update_ui_value('coolant_flood_visible', self.get_ui_element_visible( - "iocontrol.0.coolant-flood" - )) - modified |= self.update_ui_value('coolant_mist_visible', self.get_ui_element_visible( - "iocontrol.0.coolant-mist" - )) - - if self.uiFullUpdate: + modified |= self.update_ui_value( + 'spindle_brake_visible', + self.get_ui_element_visible("motion.spindle-brake"), + ) + modified |= self.update_ui_value( + 'spindle_cw_visible', + self.get_ui_element_visible( + "motion.spindle-forward", + "motion.spindle-on", + "motion.spindle-speed-out", + "motion.spindle-speed-out-abs", + "motion.spindle-speed-out-rps", + "motion.spindle-speed-out-rps-abs", + ), + ) + modified |= self.update_ui_value( + 'spindle_ccw_visible', + self.get_ui_element_visible( + "motion.spindle-reverse", + "motion.spindle-speed-out", + "motion.spindle-speed-out-abs", + "motion.spindle-speed-out-rps", + "motion.spindle-speed-out-rps-abs", + ), + ) + modified |= self.update_ui_value( + 'spindle_stop_visible', + self.get_ui_element_visible( + "motion.spindle-forward", + "motion.spindle-reverse", + "motion.spindle-on", + "motion.spindle-speed-out", + "motion.spindle-speed-out-abs", + "motion.spindle-speed-out-rps", + "motion.spindle-speed-out-rps-abs", + ), + ) + modified |= self.update_ui_value( + 'spindle_plus_visible', + self.get_ui_element_visible( + "motion.spindle-speed-out", + "motion.spindle-speed-out-abs", + "motion.spindle-speed-out-rps", + "motion.spindle-speed-out-rps-abs", + ), + ) + modified |= self.update_ui_value( + 'spindle_minus_visible', + self.get_ui_element_visible( + "motion.spindle-speed-out", + "motion.spindle-speed-out-abs", + "motion.spindle-speed-out-rps", + "motion.spindle-speed-out-rps-abs", + ), + ) + modified |= self.update_ui_value( + 'spindle_override_visible', + self.get_ui_element_visible( + "motion.spindle-speed-out", + "motion.spindle-speed-out-abs", + "motion.spindle-speed-out-rps", + "motion.spindle-speed-out-rps-abs", + ), + ) + modified |= self.update_ui_value( + 'coolant_flood_visible', + self.get_ui_element_visible("iocontrol.0.coolant-flood"), + ) + modified |= self.update_ui_value( + 'coolant_mist_visible', + self.get_ui_element_visible("iocontrol.0.coolant-mist"), + ) + + if self.ui_full_update: self.add_pparams() self.send_ui(self.status.ui, MT_EMCSTAT_FULL_UPDATE) - self.uiFullUpdate = False + self.ui_full_update = False elif modified: - self.send_ui(self.statusTx.ui, MT_EMCSTAT_INCREMENTAL_UPDATE) + self.send_ui(self.status_tx.ui, MT_EMCSTAT_INCREMENTAL_UPDATE) @staticmethod def get_ui_element_visible(*hal_pins): @@ -1485,236 +1728,242 @@ def get_ui_element_visible(*hal_pins): return False def update_status(self, stat): - self.statusTx.clear() - if (self.ioSubscribed): + self.status_tx.clear() + if self.io_subscribed: self.update_io(stat) - if (self.taskSubscribed): + if self.task_subscribed: self.update_task(stat) - if (self.interpSubscribed): + if self.interp_subscribed: self.update_interp(stat) - if (self.motionSubscribed): + if self.motion_subscribed: self.update_motion(stat) - if (self.configSubscribed): + if self.config_subscribed: self.update_config(stat) - if self.uiSubscribed: + if self.ui_subscribed: self.update_ui(stat) def update_error(self, error): - with self.errorNoteLock: - for linuxcncError in self.linuxcncErrors: - self.txError.note.append(linuxcncError) + with self.error_note_lock: + for linuxcnc_error in self.linuxcnc_errors: + self.tx_error.note.append(linuxcnc_error) self.send_error_msg('error', MT_EMC_NML_ERROR) - self.linuxcncErrors = [] + self.linuxcnc_errors = [] if not error: return kind, text = error text = text.encode('utf-8') - self.txError.note.append(text) + self.tx_error.note.append(text) - if (kind == linuxcnc.NML_ERROR): - if self.errorSubscribed: + if kind == linuxcnc.NML_ERROR: + if self.error_subscribed: self.send_error_msg('error', MT_EMC_NML_ERROR) - elif (kind == linuxcnc.OPERATOR_ERROR): - if self.errorSubscribed: + elif kind == linuxcnc.OPERATOR_ERROR: + if self.error_subscribed: self.send_error_msg('error', MT_EMC_OPERATOR_ERROR) - elif (kind == linuxcnc.NML_TEXT): - if self.textSubscribed: + elif kind == linuxcnc.NML_TEXT: + if self.text_subscribed: self.send_error_msg('text', MT_EMC_NML_TEXT) - elif (kind == linuxcnc.OPERATOR_TEXT): - if self.textSubscribed: + elif kind == linuxcnc.OPERATOR_TEXT: + if self.text_subscribed: self.send_error_msg('text', MT_EMC_OPERATOR_TEXT) - elif (kind == linuxcnc.NML_DISPLAY): - if self.displaySubscribed: + elif kind == linuxcnc.NML_DISPLAY: + if self.display_subscribed: self.send_error_msg('display', MT_EMC_NML_DISPLAY) - elif (kind == linuxcnc.OPERATOR_DISPLAY): - if self.displaySubscribed: + elif kind == linuxcnc.OPERATOR_DISPLAY: + if self.display_subscribed: self.send_error_msg('display', MT_EMC_OPERATOR_DISPLAY) def add_error(self, note): - with self.errorNoteLock: - self.linuxcncErrors.append(note) + with self.error_note_lock: + self.linuxcnc_errors.append(note) def preview_error(self, error, line): self.add_error("%s\non line %s" % (error, str(line))) def send_config(self, data, type_): - self.txStatus.emc_status_config.MergeFrom(data) + self.tx_status.emc_status_config.MergeFrom(data) if self.debug: print("sending config message") self.send_status_msg('config', type_) def send_io(self, data, type_): - self.txStatus.emc_status_io.MergeFrom(data) + self.tx_status.emc_status_io.MergeFrom(data) if self.debug: print("sending io message") self.send_status_msg('io', type_) def send_task(self, data, type_): - self.txStatus.emc_status_task.MergeFrom(data) + self.tx_status.emc_status_task.MergeFrom(data) if self.debug: print("sending task message") self.send_status_msg('task', type_) def send_motion(self, data, type_): - self.txStatus.emc_status_motion.MergeFrom(data) + self.tx_status.emc_status_motion.MergeFrom(data) if self.debug: print("sending motion message") self.send_status_msg('motion', type_) def send_interp(self, data, type_): - self.txStatus.emc_status_interp.MergeFrom(data) + self.tx_status.emc_status_interp.MergeFrom(data) if self.debug: print("sending interp message") self.send_status_msg('interp', type_) def send_ui(self, data, type_): - self.txStatus.emc_status_ui.MergeFrom(data) + self.tx_status.emc_status_ui.MergeFrom(data) if self.debug: print("sending ui message") self.send_status_msg('ui', type_) def send_status_msg(self, topic, type_): - with self.statusLock: - self.txStatus.type = type_ - txBuffer = self.txStatus.SerializeToString() - self.statusSocket.send_multipart([topic, txBuffer], zmq.NOBLOCK) - self.txStatus.Clear() + with self.status_lock: + self.tx_status.type = type_ + tx_buffer = self.tx_status.SerializeToString() + self.status_socket.send_multipart([topic, tx_buffer], zmq.NOBLOCK) + self.tx_status.Clear() def send_error_msg(self, topic, type_): - with self.errorLock: - self.txError.type = type_ - txBuffer = self.txError.SerializeToString() - self.errorSocket.send_multipart([topic, txBuffer], zmq.NOBLOCK) - self.txError.Clear() + with self.error_lock: + self.tx_error.type = type_ + tx_buffer = self.tx_error.SerializeToString() + self.error_socket.send_multipart([topic, tx_buffer], zmq.NOBLOCK) + self.tx_error.Clear() def send_command_msg(self, identity, type_): - with self.commandLock: - self.txCommand.type = type_ - txBuffer = self.txCommand.SerializeToString() - self.commandSocket.send_multipart(identity + [txBuffer], zmq.NOBLOCK) - self.txCommand.Clear() + with self.command_lock: + self.tx_command.type = type_ + tx_buffer = self.tx_command.SerializeToString() + self.command_socket.send_multipart(identity + [tx_buffer], zmq.NOBLOCK) + self.tx_command.Clear() def add_pparams(self): parameters = ProtocolParameters() - parameters.keepalive_timer = int(self.pingInterval * 1000.0) - self.txStatus.pparams.MergeFrom(parameters) + parameters.keepalive_timer = int(self.ping_interval * 1000.0) + self.tx_status.pparams.MergeFrom(parameters) def ping_status(self): - if (self.ioSubscribed): + if self.io_subscribed: self.send_status_msg('io', MT_PING) - if (self.taskSubscribed): + if self.task_subscribed: self.send_status_msg('task', MT_PING) - if (self.interpSubscribed): + if self.interp_subscribed: self.send_status_msg('interp', MT_PING) - if (self.motionSubscribed): + if self.motion_subscribed: self.send_status_msg('motion', MT_PING) - if (self.configSubscribed): + if self.config_subscribed: self.send_status_msg('config', MT_PING) - if self.uiSubscribed: + if self.ui_subscribed: self.send_status_msg('ui', MT_PING) def ping_error(self): - if self.newErrorSubscription: # not very clear + if self.new_error_subscription: # not very clear self.add_pparams() - self.newErrorSubscription = False + self.new_error_subscription = False - if (self.errorSubscribed): + if self.error_subscribed: self.send_error_msg('error', MT_PING) - if (self.textSubscribed): + if self.text_subscribed: self.send_error_msg('text', MT_PING) - if (self.displaySubscribed): + if self.display_subscribed: self.send_error_msg('display', MT_PING) - def process_status(self, socket): + def process_status(self, zmq_socket): try: - with self.statusLock: - rc = socket.recv() + with self.status_lock: + rc = zmq_socket.recv() subscription = rc[1:] - status = (rc[0] == "\x01") + status = rc[0] == "\x01" if subscription == 'motion': - self.motionSubscribed = status - self.motionFullUpdate = status + self.motion_subscribed = status + self.motion_full_update = status elif subscription == 'task': - self.taskSubscribed = status - self.taskFullUpdate = status + self.task_subscribed = status + self.task_full_update = status elif subscription == 'io': - self.ioSubscribed = status - self.ioFullUpdate = status + self.io_subscribed = status + self.io_full_update = status elif subscription == 'config': - self.configSubscribed = status - self.configFullUpdate = status + self.config_subscribed = status + self.config_full_update = status elif subscription == 'interp': - self.interpSubscribed = status - self.interpFullUpdate = status + self.interp_subscribed = status + self.interp_full_update = status elif subscription == 'ui': - self.uiSubscribed = status - self.uiFullUpdate = status - - self.statusServiceSubscribed = ( - self.motionSubscribed - or self.taskSubscribed - or self.ioSubscribed - or self.configSubscribed - or self.interpSubscribed - or self.uiSubscribed - ) + self.ui_subscribed = status + self.ui_full_update = status + + self.status_service_subscribed = ( + self.motion_subscribed + or self.task_subscribed + or self.io_subscribed + or self.config_subscribed + or self.interp_subscribed + or self.ui_subscribed + ) if self.debug: - print(("process status called " + subscription + ' ' + str(status))) - print(("status service subscribed: " + str(self.statusServiceSubscribed))) + print("process status called {} {}".format(subscription, status)) + print( + "status service subscribed: {}".format( + self.status_service_subscribed + ) + ) except zmq.ZMQError as e: - printError('ZMQ error: ' + str(e)) + print_error('ZMQ error: {}'.format(e)) - def process_error(self, socket): + def process_error(self, zmq_socket): try: - with self.errorLock: - rc = socket.recv() + with self.error_lock: + rc = zmq_socket.recv() subscription = rc[1:] - status = (rc[0] == "\x01") + status = rc[0] == "\x01" if subscription == 'error': - self.newErrorSubscription = status - self.errorSubscribed = status + self.new_error_subscription = status + self.error_subscribed = status elif subscription == 'text': - self.newErrorSubscription = status - self.textSubscribed = status + self.new_error_subscription = status + self.text_subscribed = status elif subscription == 'display': - self.newErrorSubscription = status - self.displaySubscribed = status + self.new_error_subscription = status + self.display_subscribed = status - self.errorServiceSubscribed = self.errorSubscribed \ - or self.textSubscribed \ - or self.displaySubscribed + self.error_service_subscribed = ( + self.error_subscribed or self.text_subscribed or self.display_subscribed + ) if self.debug: - print(("process error called " + subscription + ' ' + str(status))) - print(("error service subscribed: " + str(self.errorServiceSubscribed))) + print("process error called {} {}".format(subscription, status)) + print( + "error service subscribed: {}".format(self.error_service_subscribed) + ) except zmq.ZMQError as e: - printError('ZMQ error: ' + str(e)) + print_error('ZMQ error: {}'.format(e)) def get_active_gcodes(self): - rawGcodes = self.stat.gcodes + raw_gcodes = self.stat.gcodes gcodes = [] - for rawGCode in rawGcodes: + for rawGCode in raw_gcodes: if rawGCode > -1: gcodes.append('G' + str(rawGCode / 10.0)) return ' '.join(gcodes) def send_command_wrong_params(self, identity, note="wrong parameters"): - self.txCommand.note.append(note) + self.tx_command.note.append(note) self.send_command_msg(identity, MT_ERROR) def send_command_completed(self, identity, ticket): - self.txCommand.reply_ticket = ticket + self.tx_command.reply_ticket = ticket self.send_command_msg(identity, MT_EMCCMD_COMPLETED) def send_command_executed(self, identity, ticket): - self.txCommand.reply_ticket = ticket + self.tx_command.reply_ticket = ticket self.send_command_msg(identity, MT_EMCCMD_EXECUTED) def command_completion_process(self, event): @@ -1724,38 +1973,42 @@ def command_completion_process(self, event): def command_completion_thread(self, identity, ticket): event = multiprocessing.Event() # wait in separate process to prevent GIL from causing problems - multiprocessing.Process(target=self.command_completion_process, - args=(event,)).start() + multiprocessing.Process( + target=self.command_completion_process, args=(event,) + ).start() # wait until the command is completed event.wait() self.send_command_completed(identity, ticket) if self.debug: - print('command #%i from %s completed' % (ticket, identity)) + print('command #{} from {} completed'.format(ticket, identity)) def wait_complete(self, identity, ticket): self.send_command_executed(identity, ticket) if self.debug: - print('waiting for command #%ifrom %s to complete' % (ticket, identity)) + print( + 'waiting for command #{} from {} to complete'.format(ticket, identity) + ) # kick off the monitoring thread - threading.Thread(target=self.command_completion_thread, - args=(identity, ticket, )).start() + threading.Thread( + target=self.command_completion_thread, args=(identity, ticket) + ).start() - def process_command(self, socket): - with self.commandLock: - frames = socket.recv_multipart() + def process_command(self, zmq_socket): + with self.command_lock: + frames = zmq_socket.recv_multipart() identity = frames[:-1] # multipart id message = frames[-1] # last frame if self.debug: - print("process command called, id: %s" % identity) + print("process command called, id: {}".format(identity)) try: self.rx.ParseFromString(message) except DecodeError as e: - note = 'Protobuf Decode Error: ' + str(e) + note = 'Protobuf Decode Error: {}'.format(e) self.send_command_wrong_params(identity, note=note) return @@ -1806,12 +2059,14 @@ def process_command(self, socket): self.send_command_wrong_params(identity) elif self.rx.type == MT_EMC_TASK_PLAN_RUN: - if self.rx.HasField('emc_command_params') \ - and self.rx.emc_command_params.HasField('line_number') \ - and self.rx.HasField('interp_name'): + if ( + self.rx.HasField('emc_command_params') + and self.rx.emc_command_params.HasField('line_number') + and self.rx.HasField('interp_name') + ): if self.rx.interp_name == 'execute': - lineNumber = self.rx.emc_command_params.line_number - self.command.auto(linuxcnc.AUTO_RUN, lineNumber) + line_number = self.rx.emc_command_params.line_number + self.command.auto(linuxcnc.AUTO_RUN, line_number) if self.rx.HasField('ticket'): self.wait_complete(identity, self.rx.ticket) elif self.rx.interp_name == 'preview': @@ -1830,18 +2085,20 @@ def process_command(self, socket): self.wait_complete(identity, self.rx.ticket) elif self.rx.type == MT_EMC_SET_DEBUG: - if self.rx.HasField('emc_command_params') \ - and self.rx.emc_command_params.HasField('debug_level'): - debugLevel = self.rx.emc_command_params.debug_level - self.command.debug(debugLevel) + if self.rx.HasField( + 'emc_command_params' + ) and self.rx.emc_command_params.HasField('debug_level'): + debug_level = self.rx.emc_command_params.debug_level + self.command.debug(debug_level) if self.rx.HasField('ticket'): self.wait_complete(identity, self.rx.ticket) else: self.send_command_wrong_params(identity) elif self.rx.type == MT_EMC_TRAJ_SET_SCALE: - if self.rx.HasField('emc_command_params') \ - and self.rx.emc_command_params.HasField('scale'): + if self.rx.HasField( + 'emc_command_params' + ) and self.rx.emc_command_params.HasField('scale'): feedrate = self.rx.emc_command_params.scale self.command.feedrate(feedrate) if self.rx.HasField('ticket'): @@ -1850,8 +2107,9 @@ def process_command(self, socket): self.send_command_wrong_params(identity) elif self.rx.type == MT_EMC_TRAJ_SET_RAPID_SCALE: - if self.rx.HasField('emc_command_params') \ - and self.rx.emc_command_params.HasField('scale'): + if self.rx.HasField( + 'emc_command_params' + ) and self.rx.emc_command_params.HasField('scale'): rapidrate = self.rx.emc_command_params.scale self.command.rapidrate(rapidrate) if self.rx.HasField('ticket'): @@ -1870,8 +2128,9 @@ def process_command(self, socket): self.wait_complete(identity, self.rx.ticket) elif self.rx.type == MT_EMC_AXIS_HOME: - if self.rx.HasField('emc_command_params') \ - and self.rx.emc_command_params.HasField('index'): + if self.rx.HasField( + 'emc_command_params' + ) and self.rx.emc_command_params.HasField('index'): axis = self.rx.emc_command_params.index self.command.home(axis) if self.rx.HasField('ticket'): @@ -1880,8 +2139,9 @@ def process_command(self, socket): self.send_command_wrong_params(identity) elif self.rx.type == MT_EMC_AXIS_ABORT: - if self.rx.HasField('emc_command_params') \ - and self.rx.emc_command_params.HasField('index'): + if self.rx.HasField( + 'emc_command_params' + ) and self.rx.emc_command_params.HasField('index'): axis = self.rx.emc_command_params.index self.command.jog(linuxcnc.JOG_STOP, axis) if self.rx.HasField('ticket'): @@ -1890,9 +2150,11 @@ def process_command(self, socket): self.send_command_wrong_params(identity) elif self.rx.type == MT_EMC_AXIS_JOG: - if self.rx.HasField('emc_command_params') \ - and self.rx.emc_command_params.HasField('index') \ - and self.rx.emc_command_params.HasField('velocity'): + if ( + self.rx.HasField('emc_command_params') + and self.rx.emc_command_params.HasField('index') + and self.rx.emc_command_params.HasField('velocity') + ): axis = self.rx.emc_command_params.index velocity = self.rx.emc_command_params.velocity self.command.jog(linuxcnc.JOG_CONTINUOUS, axis, velocity) @@ -1902,10 +2164,12 @@ def process_command(self, socket): self.send_command_wrong_params(identity) elif self.rx.type == MT_EMC_AXIS_INCR_JOG: - if self.rx.HasField('emc_command_params') \ - and self.rx.emc_command_params.HasField('index') \ - and self.rx.emc_command_params.HasField('velocity') \ - and self.rx.emc_command_params.HasField('distance'): + if ( + self.rx.HasField('emc_command_params') + and self.rx.emc_command_params.HasField('index') + and self.rx.emc_command_params.HasField('velocity') + and self.rx.emc_command_params.HasField('distance') + ): axis = self.rx.emc_command_params.index velocity = self.rx.emc_command_params.velocity distance = self.rx.emc_command_params.distance @@ -1916,8 +2180,9 @@ def process_command(self, socket): self.send_command_wrong_params(identity) elif self.rx.type == MT_EMC_TRAJ_SET_MAX_VELOCITY: - if self.rx.HasField('emc_command_params') \ - and self.rx.emc_command_params.HasField('velocity'): + if self.rx.HasField( + 'emc_command_params' + ) and self.rx.emc_command_params.HasField('velocity'): velocity = self.rx.emc_command_params.velocity self.command.maxvel(velocity) if self.rx.HasField('ticket'): @@ -1926,9 +2191,11 @@ def process_command(self, socket): self.send_command_wrong_params(identity) elif self.rx.type == MT_EMC_TASK_PLAN_EXECUTE: - if self.rx.HasField('emc_command_params') \ - and self.rx.emc_command_params.HasField('command') \ - and self.rx.HasField('interp_name'): + if ( + self.rx.HasField('emc_command_params') + and self.rx.emc_command_params.HasField('command') + and self.rx.HasField('interp_name') + ): if self.rx.interp_name == 'execute': command = self.rx.emc_command_params.command self.command.mdi(command) @@ -1948,9 +2215,11 @@ def process_command(self, socket): self.wait_complete(identity, self.rx.ticket) elif self.rx.type == MT_EMC_TASK_SET_MODE: - if self.rx.HasField('emc_command_params') \ - and self.rx.emc_command_params.HasField('task_mode') \ - and self.rx.HasField('interp_name'): + if ( + self.rx.HasField('emc_command_params') + and self.rx.emc_command_params.HasField('task_mode') + and self.rx.HasField('interp_name') + ): if self.rx.interp_name == 'execute': self.command.mode(self.rx.emc_command_params.task_mode) if self.rx.HasField('ticket'): @@ -1964,20 +2233,22 @@ def process_command(self, socket): self.wait_complete(identity, self.rx.ticket) elif self.rx.type == MT_EMC_TASK_PLAN_OPEN: - if self.rx.HasField('emc_command_params') \ - and self.rx.emc_command_params.HasField('path') \ - and self.rx.HasField('interp_name'): - fileName = self.rx.emc_command_params.path - fileName = self.preprocess_program(fileName) - if fileName is not '': + if ( + self.rx.HasField('emc_command_params') + and self.rx.emc_command_params.HasField('path') + and self.rx.HasField('interp_name') + ): + file_name = self.rx.emc_command_params.path + file_name = self.preprocess_program(file_name) + if file_name is not '': if self.rx.interp_name == 'execute': - self.command.program_open(fileName) + self.command.program_open(file_name) if self.rx.HasField('ticket'): self.wait_complete(identity, self.rx.ticket) elif self.rx.interp_name == 'preview': if self.rx.HasField('ticket'): self.send_command_executed(identity, self.rx.ticket) - self.preview.program_open(fileName) + self.preview.program_open(file_name) if self.rx.HasField('ticket'): self.send_command_completed(identity, self.rx.ticket) else: @@ -1993,19 +2264,22 @@ def process_command(self, socket): self.send_command_wrong_params(identity) elif self.rx.type == MT_EMC_MOTION_ADAPTIVE: - if self.rx.HasField('emc_command_params') \ - and self.rx.emc_command_params.HasField('enable'): - adaptiveFeed = self.rx.emc_command_params.enable - self.command.set_adaptive_feed(adaptiveFeed) + if self.rx.HasField( + 'emc_command_params' + ) and self.rx.emc_command_params.HasField('enable'): + adaptive_feed = self.rx.emc_command_params.enable + self.command.set_adaptive_feed(adaptive_feed) if self.rx.HasField('ticket'): self.wait_complete(identity, self.rx.ticket) else: self.send_command_wrong_params(identity) elif self.rx.type == MT_EMC_MOTION_SET_AOUT: - if self.rx.HasField('emc_command_params') \ - and self.rx.emc_command_params.HasField('index') \ - and self.rx.emc_command_params.HasField('value'): + if ( + self.rx.HasField('emc_command_params') + and self.rx.emc_command_params.HasField('index') + and self.rx.emc_command_params.HasField('value') + ): axis = self.rx.emc_command_params.index value = self.rx.emc_command_params.value self.command.set_analog_output(axis, value) @@ -2015,19 +2289,22 @@ def process_command(self, socket): self.send_command_wrong_params(identity) elif self.rx.type == MT_EMC_TASK_PLAN_SET_BLOCK_DELETE: - if self.rx.HasField('emc_command_params') \ - and self.rx.emc_command_params.HasField('enable'): - blockDelete = self.rx.emc_command_params.enable - self.command.set_block_delete(blockDelete) + if self.rx.HasField( + 'emc_command_params' + ) and self.rx.emc_command_params.HasField('enable'): + block_delete = self.rx.emc_command_params.enable + self.command.set_block_delete(block_delete) if self.rx.HasField('ticket'): self.wait_complete(identity, self.rx.ticket) else: self.send_command_wrong_params(identity) elif self.rx.type == MT_EMC_MOTION_SET_DOUT: - if self.rx.HasField('emc_command_params') \ - and self.rx.emc_command_params.HasField('index') \ - and self.rx.emc_command_params.HasField('enable'): + if ( + self.rx.HasField('emc_command_params') + and self.rx.emc_command_params.HasField('index') + and self.rx.emc_command_params.HasField('enable') + ): axis = self.rx.emc_command_params.index value = self.rx.emc_command_params.enable self.command.set_digital_output(axis, value) @@ -2037,29 +2314,33 @@ def process_command(self, socket): self.send_command_wrong_params(identity) elif self.rx.type == MT_EMC_TRAJ_SET_FH_ENABLE: - if self.rx.HasField('emc_command_params') \ - and self.rx.emc_command_params.HasField('enable'): - feedHold = self.rx.emc_command_params.enable - self.command.set_feed_hold(feedHold) + if self.rx.HasField( + 'emc_command_params' + ) and self.rx.emc_command_params.HasField('enable'): + feed_hold = self.rx.emc_command_params.enable + self.command.set_feed_hold(feed_hold) if self.rx.HasField('ticket'): self.wait_complete(identity, self.rx.ticket) else: self.send_command_wrong_params(identity) elif self.rx.type == MT_EMC_TRAJ_SET_FO_ENABLE: - if self.rx.HasField('emc_command_params') \ - and self.rx.emc_command_params.HasField('enable'): - feedOverride = self.rx.emc_command_params.enable - self.command.set_feed_override(feedOverride) + if self.rx.HasField( + 'emc_command_params' + ) and self.rx.emc_command_params.HasField('enable'): + feed_override = self.rx.emc_command_params.enable + self.command.set_feed_override(feed_override) if self.rx.HasField('ticket'): self.wait_complete(identity, self.rx.ticket) else: self.send_command_wrong_params(identity) elif self.rx.type == MT_EMC_AXIS_SET_MAX_POSITION_LIMIT: - if self.rx.HasField('emc_command_params') \ - and self.rx.emc_command_params.HasField('index') \ - and self.rx.emc_command_params.HasField('value'): + if ( + self.rx.HasField('emc_command_params') + and self.rx.emc_command_params.HasField('index') + and self.rx.emc_command_params.HasField('value') + ): axis = self.rx.emc_command_params.index value = self.rx.emc_command_params.value self.command.set_max_limit(axis, value) @@ -2069,9 +2350,11 @@ def process_command(self, socket): self.send_command_wrong_params(identity) elif self.rx.type == MT_EMC_AXIS_SET_MIN_POSITION_LIMIT: - if self.rx.HasField('emc_command_params') \ - and self.rx.emc_command_params.HasField('index') \ - and self.rx.emc_command_params.HasField('value'): + if ( + self.rx.HasField('emc_command_params') + and self.rx.emc_command_params.HasField('index') + and self.rx.emc_command_params.HasField('value') + ): axis = self.rx.emc_command_params.index value = self.rx.emc_command_params.value self.command.set_min_limit(axis, value) @@ -2081,30 +2364,35 @@ def process_command(self, socket): self.send_command_wrong_params(identity) elif self.rx.type == MT_EMC_TASK_PLAN_SET_OPTIONAL_STOP: - if self.rx.HasField('emc_command_params') \ - and self.rx.emc_command_params.HasField('enable'): - optionalStop = self.rx.emc_command_params.enable - self.command.set_optional_stop(optionalStop) + if self.rx.HasField( + 'emc_command_params' + ) and self.rx.emc_command_params.HasField('enable'): + optional_stop = self.rx.emc_command_params.enable + self.command.set_optional_stop(optional_stop) if self.rx.HasField('ticket'): self.wait_complete(identity, self.rx.ticket) else: self.send_command_wrong_params(identity) elif self.rx.type == MT_EMC_TRAJ_SET_SO_ENABLE: - if self.rx.HasField('emc_command_params') \ - and self.rx.emc_command_params.HasField('enable'): - spindleOverride = self.rx.emc_command_params.enable - self.command.set_spindle_override(spindleOverride) + if self.rx.HasField( + 'emc_command_params' + ) and self.rx.emc_command_params.HasField('enable'): + spindle_override = self.rx.emc_command_params.enable + self.command.set_spindle_override(spindle_override) if self.rx.HasField('ticket'): self.wait_complete(identity, self.rx.ticket) else: self.send_command_wrong_params(identity) elif self.rx.type == MT_EMC_SPINDLE_ON: - if self.rx.HasField('emc_command_params') \ - and self.rx.emc_command_params.HasField('velocity'): + if self.rx.HasField( + 'emc_command_params' + ) and self.rx.emc_command_params.HasField('velocity'): speed = self.rx.emc_command_params.velocity - direction = linuxcnc.SPINDLE_FORWARD # always forwward, speed can be signed + direction = ( + linuxcnc.SPINDLE_FORWARD + ) # always forward, speed can be signed self.command.spindle(direction, speed) if self.rx.HasField('ticket'): self.wait_complete(identity, self.rx.ticket) @@ -2132,8 +2420,9 @@ def process_command(self, socket): self.wait_complete(identity, self.rx.ticket) elif self.rx.type == MT_EMC_TRAJ_SET_SPINDLE_SCALE: - if self.rx.HasField('emc_command_params') \ - and self.rx.emc_command_params.HasField('scale'): + if self.rx.HasField( + 'emc_command_params' + ) and self.rx.emc_command_params.HasField('scale'): scale = self.rx.emc_command_params.scale self.command.spindleoverride(scale) if self.rx.HasField('ticket'): @@ -2142,9 +2431,11 @@ def process_command(self, socket): self.send_command_wrong_params(identity) elif self.rx.type == MT_EMC_TASK_SET_STATE: - if self.rx.HasField('emc_command_params') \ - and self.rx.emc_command_params.HasField('task_state') \ - and self.rx.HasField('interp_name'): + if ( + self.rx.HasField('emc_command_params') + and self.rx.emc_command_params.HasField('task_state') + and self.rx.HasField('interp_name') + ): if self.rx.interp_name == 'execute': self.command.state(self.rx.emc_command_params.task_state) if self.rx.HasField('ticket'): @@ -2153,21 +2444,24 @@ def process_command(self, socket): self.send_command_wrong_params(identity) elif self.rx.type == MT_EMC_TRAJ_SET_TELEOP_ENABLE: - if self.rx.HasField('emc_command_params') \ - and self.rx.emc_command_params.HasField('enable'): - teleopEnable = self.rx.emc_command_params.enable - self.command.teleop_enable(teleopEnable) + if self.rx.HasField( + 'emc_command_params' + ) and self.rx.emc_command_params.HasField('enable'): + teleop_enable = self.rx.emc_command_params.enable + self.command.teleop_enable(teleop_enable) if self.rx.HasField('ticket'): self.wait_complete(identity, self.rx.ticket) else: self.send_command_wrong_params(identity) elif self.rx.type == MT_EMC_TRAJ_SET_TELEOP_VECTOR: - if self.rx.HasField('emc_command_params') \ - and self.rx.emc_command_params.HasField('pose') \ - and self.rx.emc_command_params.pose.HasField('a') \ - and self.rx.emc_command_params.pose.HasField('b') \ - and self.rx.emc_command_params.pose.HasField('c'): + if ( + self.rx.HasField('emc_command_params') + and self.rx.emc_command_params.HasField('pose') + and self.rx.emc_command_params.pose.HasField('a') + and self.rx.emc_command_params.pose.HasField('b') + and self.rx.emc_command_params.pose.HasField('c') + ): a = self.rx.emc_command_params.pose.a b = self.rx.emc_command_params.pose.b c = self.rx.emc_command_params.pose.c @@ -2193,21 +2487,23 @@ def process_command(self, socket): elif self.rx.type == MT_EMC_TOOL_LOAD_TOOL_TABLE: self.command.load_tool_table() self.command.wait_complete() # we need to wait for stat to be updated - self.ioToolTableLoaded = True + self.io_tool_table_loaded = True if self.rx.HasField('ticket'): self.send_command_completed(identity, self.rx.ticket) elif self.rx.type == MT_EMC_TOOL_SET_OFFSET: - if self.rx.HasField('emc_command_params') \ - and self.rx.emc_command_params.HasField('tool_data') \ - and self.rx.emc_command_params.tool_data.HasField('offset') \ - and self.rx.emc_command_params.tool_data.HasField('index') \ - and self.rx.emc_command_params.tool_data.offset.HasField('z') \ - and self.rx.emc_command_params.tool_data.offset.HasField('x') \ - and self.rx.emc_command_params.tool_data.HasField('diameter') \ - and self.rx.emc_command_params.tool_data.HasField('frontangle') \ - and self.rx.emc_command_params.tool_data.HasField('backangle') \ - and self.rx.emc_command_params.tool_data.HasField('orientation'): + if ( + self.rx.HasField('emc_command_params') + and self.rx.emc_command_params.HasField('tool_data') + and self.rx.emc_command_params.tool_data.HasField('offset') + and self.rx.emc_command_params.tool_data.HasField('index') + and self.rx.emc_command_params.tool_data.offset.HasField('z') + and self.rx.emc_command_params.tool_data.offset.HasField('x') + and self.rx.emc_command_params.tool_data.HasField('diameter') + and self.rx.emc_command_params.tool_data.HasField('frontangle') + and self.rx.emc_command_params.tool_data.HasField('backangle') + and self.rx.emc_command_params.tool_data.HasField('orientation') + ): toolno = self.rx.emc_command_params.tool_data.index z_offset = self.rx.emc_command_params.tool_data.offset.z x_offset = self.rx.emc_command_params.tool_data.offset.x @@ -2215,8 +2511,15 @@ def process_command(self, socket): frontangle = self.rx.emc_command_params.tool_data.frontangle backangle = self.rx.emc_command_params.tool_data.backangle orientation = self.rx.emc_command_params.tool_data.orientation - self.command.tool_offset(toolno, z_offset, x_offset, diameter, - frontangle, backangle, orientation) + self.command.tool_offset( + toolno, + z_offset, + x_offset, + diameter, + frontangle, + backangle, + orientation, + ) if self.rx.HasField('ticket'): self.wait_complete(identity, self.rx.ticket) else: @@ -2226,7 +2529,9 @@ def process_command(self, socket): if self.rx.HasField('emc_command_params'): if self.rx.HasField('ticket'): self.send_command_executed(identity, self.rx.ticket) - if not self.update_tool_table(self.rx.emc_command_params.tool_table): + if not self.update_tool_table( + self.rx.emc_command_params.tool_table + ): self.add_error('Cannot update tool table') if self.rx.HasField('ticket'): self.send_command_completed(identity, self.rx.ticket) @@ -2234,8 +2539,9 @@ def process_command(self, socket): self.send_command_wrong_params(identity) elif self.rx.type == MT_EMC_TRAJ_SET_MODE: - if self.rx.HasField('emc_command_params') \ - and self.rx.emc_command_params.HasField('traj_mode'): + if self.rx.HasField( + 'emc_command_params' + ) and self.rx.emc_command_params.HasField('traj_mode'): self.command.traj_mode(self.rx.emc_command_params.traj_mode) if self.rx.HasField('ticket'): self.wait_complete(identity, self.rx.ticket) @@ -2243,8 +2549,9 @@ def process_command(self, socket): self.send_command_wrong_params(identity) elif self.rx.type == MT_EMC_AXIS_UNHOME: - if self.rx.HasField('emc_command_params') \ - and self.rx.emc_command_params.HasField('index'): + if self.rx.HasField( + 'emc_command_params' + ) and self.rx.emc_command_params.HasField('index'): axis = self.rx.emc_command_params.index self.command.unhome(axis) if self.rx.HasField('ticket'): @@ -2253,7 +2560,7 @@ def process_command(self, socket): self.send_command_wrong_params(identity) else: - self.txCommand.note.append("unknown command") + self.tx_command.note.append("unknown command") self.send_command_msg(identity, MT_ERROR) except linuxcnc.error as detail: @@ -2261,14 +2568,14 @@ def process_command(self, socket): except UnicodeEncodeError: self.add_error("Please use only ASCII characters") except Exception as e: - printError('uncaught exception ' + str(e)) + print_error('uncaught exception ' + str(e)) self.add_error(str(e)) shutdown = False -def _exitHandler(signum, frame): +def _exit_handler(signum, frame): del signum del frame global shutdown @@ -2277,8 +2584,8 @@ def _exitHandler(signum, frame): # register exit signal handlers def register_exit_handler(): - signal.signal(signal.SIGINT, _exitHandler) - signal.signal(signal.SIGTERM, _exitHandler) + signal.signal(signal.SIGINT, _exit_handler) + signal.signal(signal.SIGTERM, _exit_handler) def check_exit(): @@ -2287,14 +2594,17 @@ def check_exit(): def main(): - parser = argparse.ArgumentParser(description='Mkwrapper is wrapper around the linuxcnc python module as temporary workaround for Machinetalk based user interfaces') + parser = argparse.ArgumentParser( + description='Mkwrapper is wrapper around the linuxcnc python module' + 'as temporary workaround for Machinetalk based user interfaces' + ) parser.add_argument('-ini', help='INI file', default=None) parser.add_argument('-d', '--debug', help='Enable debug mode', action='store_true') args = parser.parse_args() debug = args.debug - iniFile = args.ini + ini_file = args.ini mkconfig = config.Config() mkini = os.getenv("MACHINEKIT_INI") @@ -2304,14 +2614,16 @@ def main(): sys.stderr.write("MACHINEKIT_INI " + mkini + " does not exist\n") sys.exit(1) - mki = ConfigParser.ConfigParser() + mki = configparser.ConfigParser() mki.read(mkini) - mkUuid = mki.get("MACHINEKIT", "MKUUID") + mk_uuid = mki.get("MACHINEKIT", "MKUUID") remote = mki.getint("MACHINEKIT", "REMOTE") if remote == 0: - print("Remote communication is deactivated, mkwrapper will use the loopback interfaces") - print(("set REMOTE in " + mkini + " to 1 to enable remote communication")) + print( + "Remote communication is deactivated, mkwrapper will use the loopback interfaces" + ) + print("set REMOTE in " + mkini + " to 1 to enable remote communication") if debug: print("announcing mkwrapper") @@ -2321,33 +2633,37 @@ def main(): register_exit_handler() - fileService = None + file_service = None mkwrapper = None try: hostname = '%(fqdn)s' # replaced by service announcement - fileService = FileService(iniFile=iniFile, - svcUuid=mkUuid, - host=hostname, - loopback=(not remote), - debug=debug) - fileService.start() - - mkwrapper = LinuxCNCWrapper(context, - host=hostname, - loopback=(not remote), - iniFile=iniFile, - svcUuid=mkUuid, - debug=debug) - - while fileService.running and mkwrapper.running and not check_exit(): + file_service = FileService( + ini_file=ini_file, + svc_uuid=mk_uuid, + host=hostname, + loopback=(not remote), + debug=debug, + ) + file_service.start() + + mkwrapper = LinuxCNCWrapper( + context, + host=hostname, + loopback=(not remote), + ini_file=ini_file, + svc_uuid=mk_uuid, + debug=debug, + ) + + while file_service.running and mkwrapper.running and not check_exit(): time.sleep(1) except Exception as e: - printError("uncaught exception: " + str(e)) + print_error("uncaught exception: " + str(e)) if debug: print("stopping threads") - if fileService is not None: - fileService.stop() + if file_service is not None: + file_service.stop() if mkwrapper is not None: mkwrapper.stop() diff --git a/src/machinetalk/videoserver/videoserver.py b/src/machinetalk/videoserver/videoserver.py index 9cbc0b769e..0cbe4d5ed4 100644 --- a/src/machinetalk/videoserver/videoserver.py +++ b/src/machinetalk/videoserver/videoserver.py @@ -1,15 +1,15 @@ #!/usr/bin/python2 +# coding=utf-8 import os import sys import time -from stat import * import subprocess import threading import socket import argparse +from six.moves import configparser -import ConfigParser from machinekit import service from machinekit import config @@ -17,7 +17,7 @@ MJPG_STREAMER_PLUGIN_PATH = '/usr/local/lib/mjpg-streamer/' -class VideoDevice: +class VideoDevice(object): process = None service = None txtRecord = None @@ -26,16 +26,15 @@ class VideoDevice: resolution = '640x480' quality = 80 device = '/dev/video0' - bufferSize = 1 + buffer_size = 1 port = 0 dsname = '' - zmqUri = '' + zmq_uri = '' + arguments = '' class VideoServer(threading.Thread): - - def __init__(self, inifile, host='', loopback=False, - svc_uuid=None, debug=False): + def __init__(self, inifile, host='', loopback=False, svc_uuid=None, debug=False): threading.Thread.__init__(self) self.inifile = inifile self.host = host @@ -44,33 +43,33 @@ def __init__(self, inifile, host='', loopback=False, self.debug = debug self.videoDevices = {} - self.cfg = ConfigParser.ConfigParser(defaults={'arguments': ''}) + self.cfg = configparser.ConfigParser(defaults={'arguments': ''}) self.cfg.read(self.inifile) if self.debug: - print (("video devices:", self.cfg.sections())) + print("video devices:", self.cfg.sections()) for n in self.cfg.sections(): - videoDevice = VideoDevice() - - videoDevice.framerate = self.cfg.getint(n, 'framerate') - videoDevice.resolution = self.cfg.get(n, 'resolution') - videoDevice.quality = self.cfg.get(n, 'quality') - videoDevice.device = self.cfg.get(n, 'device') - videoDevice.bufferSize = self.cfg.getint(n, 'bufferSize') - videoDevice.arguments = self.cfg.get(n, 'arguments') - self.videoDevices[n] = videoDevice + video_device = VideoDevice() + + video_device.framerate = self.cfg.getint(n, 'framerate') + video_device.resolution = self.cfg.get(n, 'resolution') + video_device.quality = self.cfg.get(n, 'quality') + video_device.device = self.cfg.get(n, 'device') + video_device.buffer_size = self.cfg.getint(n, 'bufferSize') + video_device.arguments = self.cfg.get(n, 'arguments') + self.videoDevices[n] = video_device if self.debug: - print (("framerate:", videoDevice.framerate)) - print (("resolution:", videoDevice.resolution)) - print (("quality:", videoDevice.quality)) - print (("device:", videoDevice.device)) - print (("bufferSize:", videoDevice.bufferSize)) - print (("arguments:", videoDevice.arguments)) - - def startVideo(self, deviceId): - videoDevice = self.videoDevices[deviceId] - - if videoDevice.process is not None: - print ("video device already running") + print("framerate:", video_device.framerate) + print("resolution:", video_device.resolution) + print("quality:", video_device.quality) + print("device:", video_device.device) + print("bufferSize:", video_device.buffer_size) + print("arguments:", video_device.arguments) + + def start_video(self, device_id): + video_device = self.videoDevices[device_id] + + if video_device.process is not None: + print("video device already running") return sock = socket.socket() @@ -78,83 +77,90 @@ def startVideo(self, deviceId): port = sock.getsockname()[1] sock.close() - baseUri = 'tcp://' + base_uri = 'tcp://' if self.loopback: - baseUri += '127.0.0.1' + base_uri += '127.0.0.1' else: - baseUri += '*' + base_uri += '*' - videoDevice.port = port - videoDevice.zmqUri = '%s:%i' % (baseUri, videoDevice.port) - videoDevice.dsname = videoDevice.zmqUri.replace('*', self.host) + video_device.port = port + video_device.zmq_uri = '%s:%i' % (base_uri, video_device.port) + video_device.dsname = video_device.zmq_uri.replace('*', self.host) if self.debug: - print (( - "dsname = ", videoDevice.dsname, - "port =", videoDevice.port)) + print("dsname = ", video_device.dsname, "port =", video_device.port) libpath = MJPG_STREAMER_PLUGIN_PATH os.environ['LD_LIBRARY_PATH'] = libpath arguments = "" - if videoDevice.arguments is not '': - arguments = ' ' + videoDevice.arguments - - command = ['mjpg_streamer -i \"' + libpath + 'input_uvc.so -n' + - ' -f ' + str(videoDevice.framerate) + - ' -r ' + videoDevice.resolution + - ' -q ' + videoDevice.quality + - ' -d ' + videoDevice.device + - '" -o \"' + libpath + 'output_zmqserver.so --address ' + - videoDevice.zmqUri + - ' --buffer_size ' + str(videoDevice.bufferSize) + '\"' + - arguments] + if video_device.arguments is not '': + arguments = ' ' + video_device.arguments + + command = [ + 'mjpg_streamer -i \"{libpath}input_uvc.so -n -f {framerate} -r {resolution} -q {quality} -d {device}" ' + '-o \" {libpath}output_zmqserver.so --address {uri} --buffer_size {buffer_size}\"{args}'.format( + libpath=libpath, + framerate=video_device.framerate, + resolution=video_device.resolution, + quality=video_device.quality, + device=video_device.device, + uri=video_device.zmq_uri, + buffer_size=video_device.buffer_size, + args=arguments, + ) + ] if self.debug: - print (("command:", command)) + print("command:", command) - videoDevice.process = subprocess.Popen(command, shell=True) + video_device.process = subprocess.Popen(command, shell=True) try: - videoDevice.service = service.Service(type='video', - svcUuid=self.svc_uuid, - dsn=videoDevice.dsname, - port=videoDevice.port, - host=self.host, - loopback=self.loopback, - debug=self.debug) - videoDevice.service.publish() + video_device.service = service.Service( + type='video', + svcUuid=self.svc_uuid, + dsn=video_device.dsname, + port=video_device.port, + host=self.host, + loopback=self.loopback, + debug=self.debug, + ) + video_device.service.publish() except Exception as e: - print (('cannot register DNS service', e)) + print('cannot register DNS service', e) - def stopVideo(self, deviceId): - videoDevice = self.videoDevices[deviceId] + def stop_video(self, device_id): + video_device = self.videoDevices[device_id] - if videoDevice.process is None: - print ("video device not running") + if video_device.process is None: + print("video device not running") return - videoDevice.service.unpublish() - videoDevice.process.terminate() - videoDevice.process = None - videoDevice.service = None + video_device.service.unpublish() + video_device.process.terminate() + video_device.process = None + video_device.service = None def run(self): if self.debug: - print ("run called") + print("run called") try: while True: time.sleep(1) except KeyboardInterrupt: for n in self.videoDevices: - videoDevice = self.videoDevices[n] - if videoDevice.process is None: + video_device = self.videoDevices[n] + if video_device.process is None: continue - self.stopVideo(n) + self.stop_video(n) + def main(): - parser = argparse.ArgumentParser(description='Videoserver provides a webcam interface for Machinetalk') + parser = argparse.ArgumentParser( + description='Videoserver provides a webcam interface for Machinetalk' + ) parser.add_argument('-i', '--ini', help='INI file', default='video.ini') parser.add_argument('-d', '--debug', help='Enable debug mode', action='store_true') parser.add_argument('webcams', help='List of webcams to stream', nargs='+') @@ -171,33 +177,33 @@ def main(): sys.stderr.write("MACHINEKIT_INI " + mkini + " does not exist\n") sys.exit(1) - mki = ConfigParser.ConfigParser() + mki = configparser.ConfigParser() mki.read(mkini) - mkUuid = mki.get("MACHINEKIT", "MKUUID") + mk_uuid = mki.get("MACHINEKIT", "MKUUID") remote = mki.getint("MACHINEKIT", "REMOTE") if remote == 0: - print("Remote communication is deactivated, videoserver will use the loopback interfaces") - print(("set REMOTE in " + mkini + " to 1 to enable remote communication")) + print( + "Remote communication is deactivated, videoserver will use the loopback interfaces" + ) + print("set REMOTE in " + mkini + " to 1 to enable remote communication") if debug: - print ("announcing videoserver") + print("announcing videoserver") hostname = '%(fqdn)s' # replaced by service announcement - video = VideoServer(args.ini, - svc_uuid=mkUuid, - host=hostname, - loopback=(not remote), - debug=debug) + video = VideoServer( + args.ini, svc_uuid=mk_uuid, host=hostname, loopback=(not remote), debug=debug + ) video.setDaemon(True) video.start() for webcam in args.webcams: - video.startVideo(webcam) + video.start_video(webcam) while True: time.sleep(1) + if __name__ == "__main__": main() - From 6d6ecf4344f2bc43de5c290bda7c62af8dbf7205 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Sat, 27 Oct 2018 22:25:47 +0200 Subject: [PATCH 324/516] lib/python: blacken and pep8fy --- lib/python/machinekit/halfile.py | 6 +- lib/python/machinekit/launcher.py | 83 +++++++------- lib/python/machinekit/service.py | 105 ++++++++++++------ .../config-service/configserver.py | 4 +- src/machinetalk/mklauncher/mklauncher.py | 8 +- src/machinetalk/mkwrapper/mkwrapper.py | 24 ++-- src/machinetalk/videoserver/videoserver.py | 4 +- 7 files changed, 134 insertions(+), 100 deletions(-) diff --git a/lib/python/machinekit/halfile.py b/lib/python/machinekit/halfile.py index 78379d7781..0c1fa5a43d 100644 --- a/lib/python/machinekit/halfile.py +++ b/lib/python/machinekit/halfile.py @@ -1,10 +1,10 @@ # coding=utf-8 import os -import ConfigParser -from machinekit import rtapi,hal +from six.moves import configparser +from machinekit import rtapi, hal # retrieve the machinekit UUID -cfg = ConfigParser.ConfigParser() +cfg = configparser.ConfigParser() cfg.read(os.getenv("MACHINEKIT_INI")) uuid = cfg.get("MACHINEKIT", "MKUUID") diff --git a/lib/python/machinekit/launcher.py b/lib/python/machinekit/launcher.py index 831efd53c2..a263937055 100644 --- a/lib/python/machinekit/launcher.py +++ b/lib/python/machinekit/launcher.py @@ -7,21 +7,20 @@ from machinekit import compat _processes = [] -_realtimeStarted = False +_realtime_started = False _exiting = False # ends a running Machinekit session def end_session(): stop_processes() - if _realtimeStarted: # Stop realtime only when explicitely started + if _realtime_started: # Stop realtime only when explicitly started stop_realtime() # checks wheter a single command is available or not def check_command(command): - process = subprocess.Popen('which ' + command, stdout=subprocess.PIPE, - shell=True) + process = subprocess.Popen('which ' + command, stdout=subprocess.PIPE, shell=True) process.wait() if process.returncode != 0: print(command + ' not found, check Machinekit installation') @@ -97,15 +96,14 @@ def stop_process(command): # stops all registered processes def stop_processes(): for process in _processes: - sys.stdout.write('stopping ' + process.command.split(None, 1)[0] - + '... ') + sys.stdout.write('stopping ' + process.command.split(None, 1)[0] + '... ') sys.stdout.flush() os.killpg(process.pid, signal.SIGTERM) process.wait() sys.stdout.write('done\n') -# loads a HAL configuraton file +# loads a HAL configuration file def load_hal_file(filename, ini=None): sys.stdout.write("loading " + filename + '... ') sys.stdout.flush() @@ -113,13 +111,16 @@ def load_hal_file(filename, ini=None): _, ext = os.path.splitext(filename) if ext == '.py': from machinekit import rtapi + if not rtapi.__rtapicmd: rtapi.init_RTAPI() if ini is not None: from machinekit import config + config.load_ini(ini) globals_ = {} - execfile(filename, globals_) + with open(filename, 'r') as f: + exec(f.read(), globals_) else: command = 'halcmd' if ini is not None: @@ -143,26 +144,28 @@ def install_comp(filename): install = True base, ext = os.path.splitext(os.path.basename(filename)) flavor = compat.default_flavor() - moduleDir = compat.get_rtapi_config("RTLIB_DIR") - moduleName = flavor.name + '/' + base + flavor.mod_ext - modulePath = os.path.join(moduleDir, moduleName) - if os.path.exists(modulePath): - compTime = os.path.getmtime(filename) - moduleTime = os.path.getmtime(modulePath) - if (compTime < moduleTime): + module_dir = compat.get_rtapi_config("RTLIB_DIR") + module_name = flavor.name + '/' + base + flavor.mod_ext + module_path = os.path.join(module_dir, module_name) + if os.path.exists(module_path): + comp_time = os.path.getmtime(filename) + module_time = os.path.getmtime(module_path) + if comp_time < module_time: install = False if install is True: if ext == '.icomp': - cmdBase = 'instcomp' + cmd_base = 'instcomp' else: - cmdBase = 'comp' + cmd_base = 'comp' sys.stdout.write("installing " + filename + '... ') sys.stdout.flush() - if os.access(moduleDir, os.W_OK): # if we have write access we might not need sudo - cmd = '%s --install %s' % (cmdBase, filename) + if os.access( + module_dir, os.W_OK + ): # if we have write access we might not need sudo + cmd = '{} --install {}'.format(cmd_base, filename) else: - cmd = 'sudo %s --install %s' % (cmdBase, filename) + cmd = 'sudo {} --install {}'.format(cmd_base, filename) subprocess.check_call(cmd, shell=True) @@ -171,54 +174,52 @@ def install_comp(filename): # starts realtime def start_realtime(): - global _realtimeStarted + global _realtime_started sys.stdout.write("starting realtime...") sys.stdout.flush() subprocess.check_call('realtime start', shell=True) sys.stdout.write('done\n') - _realtimeStarted = True + _realtime_started = True # stops realtime def stop_realtime(): - global _realtimeStarted + global _realtime_started sys.stdout.write("stopping realtime... ") sys.stdout.flush() subprocess.check_call('realtime stop', shell=True) sys.stdout.write('done\n') - _realtimeStarted = False + _realtime_started = False # rip the Machinekit environment def rip_environment(path=None, force=False): - if force is False and os.getenv('EMC2_PATH') is not None: # check if already ripped + if force is False and os.getenv('EMC2_PATH') is not None: # check if already ripped return if path is None: command = None - scriptFilePath = os.environ['HOME'] + '/.bashrc' - if os.path.exists(scriptFilePath): - with open(scriptFilePath) as f: # use the bashrc + script_file_path = os.environ['HOME'] + '/.bashrc' + if os.path.exists(script_file_path): + with open(script_file_path) as f: # use the bashrc content = f.readlines() for line in content: if 'rip-environment' in line: line = line.strip() - if (line[0] == '.'): + if line[0] == '.': command = line - scriptFilePath = os.environ['HOME'] + '/machinekit/scripts/rip-environment' - if os.path.exists(scriptFilePath): - command = '. ' + scriptFilePath + script_file_path = os.environ['HOME'] + '/machinekit/scripts/rip-environment' + if os.path.exists(script_file_path): + command = '. ' + script_file_path - if (command is None): + if command is None: sys.stderr.write('Unable to rip environment') sys.exit(1) else: command = '. ' + path + '/scripts/rip-environment' - process = subprocess.Popen(command + ' && env', - stdout=subprocess.PIPE, - shell=True) + process = subprocess.Popen(command + ' && env', stdout=subprocess.PIPE, shell=True) for line in process.stdout: (key, _, value) = line.partition('=') os.environ[key] = value.rstrip() @@ -230,10 +231,10 @@ def rip_environment(path=None, force=False): def check_processes(): for process in _processes: process.poll() - if (process.returncode is not None): + if process.returncode is not None: _processes.remove(process) end_session() - if (process.returncode != 0): + if process.returncode != 0: sys.exit(1) else: sys.exit(0) @@ -241,11 +242,11 @@ def check_processes(): # register exit signal handlers def register_exit_handler(): - signal.signal(signal.SIGINT, _exitHandler) - signal.signal(signal.SIGTERM, _exitHandler) + signal.signal(signal.SIGINT, _exit_handler) + signal.signal(signal.SIGTERM, _exit_handler) -def _exitHandler(signum, frame): +def _exit_handler(signum, frame): del signum # unused del frame # unused global _exiting diff --git a/lib/python/machinekit/service.py b/lib/python/machinekit/service.py index d3b4e60175..3acdcfa5ec 100644 --- a/lib/python/machinekit/service.py +++ b/lib/python/machinekit/service.py @@ -6,12 +6,21 @@ class ZeroconfService(object): - """A simple class to publish a network service with zeroconf using - avahi. + """ + A simple class to publish a network service with zeroconf using avahi. """ - def __init__(self, name, port, stype="_http._tcp", subtype=None, - domain="", host="", text=None, loopback=False): + def __init__( + self, + name, + port, + stype="_http._tcp", + subtype=None, + domain="", + host="", + text=None, + loopback=False, + ): if text is None: text = [] self.name = name @@ -27,15 +36,14 @@ def __init__(self, name, port, stype="_http._tcp", subtype=None, def publish(self): bus = dbus.SystemBus() server = dbus.Interface( - bus.get_object( - avahi.DBUS_NAME, - avahi.DBUS_PATH_SERVER), - avahi.DBUS_INTERFACE_SERVER) + bus.get_object(avahi.DBUS_NAME, avahi.DBUS_PATH_SERVER), + avahi.DBUS_INTERFACE_SERVER, + ) g = dbus.Interface( - bus.get_object(avahi.DBUS_NAME, - server.EntryGroupNew()), - avahi.DBUS_INTERFACE_ENTRY_GROUP) + bus.get_object(avahi.DBUS_NAME, server.EntryGroupNew()), + avahi.DBUS_INTERFACE_ENTRY_GROUP, + ) # insert fqdn in announcement fqdn = str(server.GetHostNameFqdn()) @@ -46,16 +54,28 @@ def publish(self): if self.loopback: iface = 0 - g.AddService(iface, avahi.PROTO_INET, dbus.UInt32(0), - name, self.stype, self.domain, self.host, - dbus.UInt16(self.port), text) + g.AddService( + iface, + avahi.PROTO_INET, + dbus.UInt32(0), + name, + self.stype, + self.domain, + self.host, + dbus.UInt16(self.port), + text, + ) if self.subtype: - g.AddServiceSubtype(iface, - avahi.PROTO_INET, - dbus.UInt32(0), - name, self.stype, self.domain, - self.subtype) + g.AddServiceSubtype( + iface, + avahi.PROTO_INET, + dbus.UInt32(0), + name, + self.stype, + self.domain, + self.subtype, + ) g.Commit() self.group = g @@ -65,14 +85,24 @@ def unpublish(self): class Service(object): - """A simple class to publish a Machinekit network service using zeroconf. + """ + A simple class to publish a Machinekit network service using zeroconf. """ - def __init__(self, type, svcUuid, dsn, port, name=None, host=None, - loopback=False, debug=False): + def __init__( + self, + type_, + svc_uuid, + dsn, + port, + name=None, + host=None, + loopback=False, + debug=False, + ): self.dsn = dsn - self.svcUuid = svcUuid - self.type = type + self.svc_uuid = svc_uuid + self.type = type_ self.port = port self.name = name self.host = host @@ -84,26 +114,29 @@ def __init__(self, type, svcUuid, dsn, port, name=None, host=None, if name is None: pid = os.getpid() - self.name = '%s service on %s pid %i' % \ - (self.type.title(), self.host, pid) + self.name = '%s service on %s pid %i' % (self.type.title(), self.host, pid) me = uuid.uuid1() - self.statusTxtrec = [str('dsn=' + self.dsn), - str('uuid=' + self.svcUuid), - str('instance=' + str(me)), - str('service=' + self.type)] + self.status_txtrec = [ + str('dsn=' + self.dsn), + str('uuid=' + self.svc_uuid), + str('instance=' + str(me)), + str('service=' + self.type), + ] if self.debug: - print(('service: ' + 'dsname = ' + self.dsn + - ' port = ' + str(self.port) + - ' txtrec = ' + str(self.statusTxtrec) + - ' name = ' + self.name)) + print( + 'service: dsname = {dsn} port = {port} txtrec = {txt} name = {name}'.format( + dsn=self.dsn, port=self.port, txt=self.status_txtrec, name=self.name + ) + ) self.statusService = ZeroconfService( - self.name, self.port, + self.name, + self.port, stype=self.stype, subtype=self.subtype, - text=self.statusTxtrec, + text=self.status_txtrec, loopback=self.loopback, ) diff --git a/src/machinetalk/config-service/configserver.py b/src/machinetalk/config-service/configserver.py index 37b1d9c684..aaec6a76bf 100755 --- a/src/machinetalk/config-service/configserver.py +++ b/src/machinetalk/config-service/configserver.py @@ -82,8 +82,8 @@ def __init__( if host_in_name: self.name += ' on ' + self.host self.service = service.Service( - type='config', - svcUuid=svc_uuid, + type_='config', + svc_uuid=svc_uuid, dsn=self.dsname, port=self.port, host=self.host, diff --git a/src/machinetalk/mklauncher/mklauncher.py b/src/machinetalk/mklauncher/mklauncher.py index 3a2cd19fb8..5790b1413f 100644 --- a/src/machinetalk/mklauncher/mklauncher.py +++ b/src/machinetalk/mklauncher/mklauncher.py @@ -276,8 +276,8 @@ def _create_services(self, host_in_name, svc_uuid): if host_in_name: self.name += ' on ' + self.host self.launcher_service = service.Service( - type='launcher', - svcUuid=svc_uuid, + type_='launcher', + svc_uuid=svc_uuid, dsn=self.launcher_ds_name, port=self.launcher_port, host=self.host, @@ -286,8 +286,8 @@ def _create_services(self, host_in_name, svc_uuid): debug=self.debug, ) self.commandService = service.Service( - type='launchercmd', - svcUuid=svc_uuid, + type_='launchercmd', + svc_uuid=svc_uuid, dsn=self.command_ds_name, port=self.command_port, host=self.host, diff --git a/src/machinetalk/mkwrapper/mkwrapper.py b/src/machinetalk/mkwrapper/mkwrapper.py index cf3948b9dc..cf7551c4af 100644 --- a/src/machinetalk/mkwrapper/mkwrapper.py +++ b/src/machinetalk/mkwrapper/mkwrapper.py @@ -80,8 +80,8 @@ def __init__( self.file_dsname = "ftp://" + self.host + ":" + str(self.file_port) self.fileService = service.Service( - type='file', - svcUuid=svc_uuid, + type_='file', + svc_uuid=svc_uuid, dsn=self.file_dsname, port=self.file_port, host=self.host, @@ -596,8 +596,8 @@ def __init__( self.previewstatus_port = parse.urlparse(self.previewstatus_dsname).port self.status_service = service.Service( - type='status', - svcUuid=svc_uuid, + type_='status', + svc_uuid=svc_uuid, dsn=self.status_dsname, port=self.status_port, host=self.host, @@ -605,8 +605,8 @@ def __init__( debug=self.debug, ) self.error_service = service.Service( - type='error', - svcUuid=svc_uuid, + type_='error', + svc_uuid=svc_uuid, dsn=self.error_dsname, port=self.error_port, host=self.host, @@ -614,8 +614,8 @@ def __init__( debug=self.debug, ) self.command_service = service.Service( - type='command', - svcUuid=svc_uuid, + type_='command', + svc_uuid=svc_uuid, dsn=self.command_dsname, port=self.command_port, host=self.host, @@ -623,8 +623,8 @@ def __init__( debug=self.debug, ) self.preview_service = service.Service( - type='preview', - svcUuid=svc_uuid, + type_='preview', + svc_uuid=svc_uuid, dsn=self.preview_dsname, port=self.preview_port, host=self.host, @@ -632,8 +632,8 @@ def __init__( debug=self.debug, ) self.previewstatus_service = service.Service( - type='previewstatus', - svcUuid=svc_uuid, + type_='previewstatus', + svc_uuid=svc_uuid, dsn=self.previewstatus_dsname, port=self.previewstatus_port, host=self.host, diff --git a/src/machinetalk/videoserver/videoserver.py b/src/machinetalk/videoserver/videoserver.py index 0cbe4d5ed4..6c95f61007 100644 --- a/src/machinetalk/videoserver/videoserver.py +++ b/src/machinetalk/videoserver/videoserver.py @@ -118,8 +118,8 @@ def start_video(self, device_id): try: video_device.service = service.Service( - type='video', - svcUuid=self.svc_uuid, + type_='video', + svc_uuid=self.svc_uuid, dsn=video_device.dsname, port=video_device.port, host=self.host, From a484d8e9d6e6234511f306e230be832d1b0c20bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Sat, 27 Oct 2018 22:40:15 +0200 Subject: [PATCH 325/516] hal/cython: add init again --- src/hal/cython/machinekit/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/hal/cython/machinekit/__init__.py diff --git a/src/hal/cython/machinekit/__init__.py b/src/hal/cython/machinekit/__init__.py new file mode 100644 index 0000000000..e69de29bb2 From fcfe8c9c39846974d8cb81a61f74cfd09141f674 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Wed, 17 May 2017 10:34:07 +0200 Subject: [PATCH 326/516] hal/hostmot2: make watchdog timeout_ns a pin --- src/hal/drivers/mesa-hostmot2/hostmot2.c | 2 +- src/hal/drivers/mesa-hostmot2/hostmot2.h | 5 +--- src/hal/drivers/mesa-hostmot2/watchdog.c | 29 ++++++++++++------------ 3 files changed, 16 insertions(+), 20 deletions(-) diff --git a/src/hal/drivers/mesa-hostmot2/hostmot2.c b/src/hal/drivers/mesa-hostmot2/hostmot2.c index 79e624621c..fe56bb4724 100755 --- a/src/hal/drivers/mesa-hostmot2/hostmot2.c +++ b/src/hal/drivers/mesa-hostmot2/hostmot2.c @@ -1760,7 +1760,7 @@ void hm2_unregister(hm2_lowlevel_io_t *llio) { // if there's a watchdog, set it to safe the board right away if (hm2->watchdog.num_instances > 0) { hm2->watchdog.instance[0].enable = 1; - hm2->watchdog.instance[0].hal.param.timeout_ns = 1; + (*hm2->watchdog.instance[0].hal.pin.timeout_ns) = 1; hm2_watchdog_force_write(hm2); } diff --git a/src/hal/drivers/mesa-hostmot2/hostmot2.h b/src/hal/drivers/mesa-hostmot2/hostmot2.h index 2f6c0cb03d..b17ff1fdfc 100644 --- a/src/hal/drivers/mesa-hostmot2/hostmot2.h +++ b/src/hal/drivers/mesa-hostmot2/hostmot2.h @@ -985,12 +985,9 @@ typedef struct { struct { hal_bit_t *has_bit; + hal_u32_t *timeout_ns; } pin; - struct { - hal_u32_t timeout_ns; - } param; - } hal; u32 written_timeout_ns; diff --git a/src/hal/drivers/mesa-hostmot2/watchdog.c b/src/hal/drivers/mesa-hostmot2/watchdog.c index 5b69f2d11b..905d475d49 100755 --- a/src/hal/drivers/mesa-hostmot2/watchdog.c +++ b/src/hal/drivers/mesa-hostmot2/watchdog.c @@ -166,16 +166,15 @@ int hm2_watchdog_parse_md(hostmot2_t *hm2, int md_index) { goto fail1; } - // params - r = hal_param_u32_newf( - HAL_RW, - &(hm2->watchdog.instance[0].hal.param.timeout_ns), + r = hal_pin_u32_newf( + HAL_IO, + &(hm2->watchdog.instance[0].hal.pin.timeout_ns), hm2->llio->comp_id, "%s.watchdog.timeout_ns", hm2->llio->name ); if (r < 0) { - HM2_ERR("error adding param, aborting\n"); + HM2_ERR("error adding pin, aborting\n"); r = -EINVAL; goto fail1; } @@ -207,7 +206,7 @@ int hm2_watchdog_parse_md(hostmot2_t *hm2, int md_index) { // *hm2->watchdog.instance[0].hal.pin.has_bit = 0; - hm2->watchdog.instance[0].hal.param.timeout_ns = 5 * 1000 * 1000; // default timeout is 5 milliseconds + *hm2->watchdog.instance[0].hal.pin.timeout_ns = 5 * 1000 * 1000; // default timeout is 5 milliseconds hm2->watchdog.instance[0].enable = 0; // the first pet_watchdog will turn it on return hm2->watchdog.num_instances; @@ -232,7 +231,7 @@ void hm2_watchdog_print_module(hostmot2_t *hm2) { HM2_PRINT(" reset_addr: 0x%04X\n", hm2->watchdog.reset_addr); for (i = 0; i < hm2->watchdog.num_instances; i ++) { HM2_PRINT(" instance %d:\n", i); - HM2_PRINT(" param timeout_ns = %u\n", hm2->watchdog.instance[i].hal.param.timeout_ns); + HM2_PRINT(" pin timeout_ns = %u\n", (*hm2->watchdog.instance[i].hal.pin.timeout_ns)); HM2_PRINT(" pin has_bit = %d\n", (*hm2->watchdog.instance[i].hal.pin.has_bit)); HM2_PRINT(" reg timer = 0x%08X\n", hm2->watchdog.timer_reg[i]); } @@ -268,11 +267,11 @@ void hm2_watchdog_force_write(hostmot2_t *hm2) { linking with gcc, but kbuild links directly with ld; instead, use kernel-supplied functions; in this case, replace __udivdi3 with do_div */ - tmp = ((u64)hm2->watchdog.instance[0].hal.param.timeout_ns * + tmp = ((u64)(*hm2->watchdog.instance[0].hal.pin.timeout_ns) * hm2->watchdog.clock_frequency); do_div(tmp,(u64)(1000 * 1000 * 1000)) - 1; #else - tmp = ((u64)hm2->watchdog.instance[0].hal.param.timeout_ns * + tmp = ((u64)(*hm2->watchdog.instance[0].hal.pin.timeout_ns) * hm2->watchdog.clock_frequency / (1000 * 1000 * 1000)) - 1; #endif if (tmp < 0x80000000) { @@ -281,14 +280,14 @@ void hm2_watchdog_force_write(hostmot2_t *hm2) { // truncate watchdog timeout tmp = 0x7FFFFFFF; hm2->watchdog.timer_reg[0] = tmp; - hm2->watchdog.instance[0].hal.param.timeout_ns = (tmp + 1) / ((double)hm2->watchdog.clock_frequency / (double)(1000 * 1000 * 1000)); - HM2_ERR("requested watchdog timeout is out of range, setting it to max: %u ns\n", hm2->watchdog.instance[0].hal.param.timeout_ns); + *hm2->watchdog.instance[0].hal.pin.timeout_ns = (tmp + 1) / ((double)hm2->watchdog.clock_frequency / (double)(1000 * 1000 * 1000)); + HM2_ERR("requested watchdog timeout is out of range, setting it to max: %u ns\n", (*hm2->watchdog.instance[0].hal.pin.timeout_ns)); } } // set the watchdog timeout (we'll check for i/o errors later) hm2->llio->write(hm2->llio, hm2->watchdog.timer_addr, hm2->watchdog.timer_reg, (hm2->watchdog.num_instances * sizeof(u32))); - hm2->watchdog.instance[0].written_timeout_ns = hm2->watchdog.instance[0].hal.param.timeout_ns; + hm2->watchdog.instance[0].written_timeout_ns = (*hm2->watchdog.instance[0].hal.pin.timeout_ns); hm2->watchdog.instance[0].written_enable = hm2->watchdog.instance[0].enable; // clear the has-bit bit @@ -328,7 +327,7 @@ void hm2_watchdog_write(hostmot2_t *hm2, long period_ns) { } if ( - (hm2->watchdog.instance[0].hal.param.timeout_ns == hm2->watchdog.instance[0].written_timeout_ns) + ((*hm2->watchdog.instance[0].hal.pin.timeout_ns) == hm2->watchdog.instance[0].written_timeout_ns) && (hm2->watchdog.instance[0].enable == hm2->watchdog.instance[0].written_enable) ) { @@ -336,10 +335,10 @@ void hm2_watchdog_write(hostmot2_t *hm2, long period_ns) { } // if the requested timeout is dangerously short compared to the petting-period, warn the user once - if (hm2->watchdog.instance[0].hal.param.timeout_ns < (1.5 * period_ns)) { + if ((*hm2->watchdog.instance[0].hal.pin.timeout_ns) < (1.5 * period_ns)) { HM2_PRINT( "Watchdog timeout (%u ns) is dangerously short compared to hm2_write() period (%ld ns)\n", - hm2->watchdog.instance[0].hal.param.timeout_ns, + (*hm2->watchdog.instance[0].hal.pin.timeout_ns), period_ns ); } From a62acd2f36bae6b38e1b09e91a5f1313e6b995d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Sun, 11 Nov 2018 10:29:08 +0000 Subject: [PATCH 327/516] hm2/ioport: convert params to pins --- src/hal/drivers/mesa-hostmot2/hostmot2.h | 9 ++---- src/hal/drivers/mesa-hostmot2/ioport.c | 36 ++++++++++++------------ 2 files changed, 21 insertions(+), 24 deletions(-) diff --git a/src/hal/drivers/mesa-hostmot2/hostmot2.h b/src/hal/drivers/mesa-hostmot2/hostmot2.h index b17ff1fdfc..f74d15b7d0 100644 --- a/src/hal/drivers/mesa-hostmot2/hostmot2.h +++ b/src/hal/drivers/mesa-hostmot2/hostmot2.h @@ -250,14 +250,11 @@ typedef struct { hal_bit_t *in; hal_bit_t *in_not; hal_bit_t *out; + hal_bit_t *is_output; + hal_bit_t *is_opendrain; + hal_bit_t *invert_output; } pin; - struct { - hal_bit_t is_output; - hal_bit_t is_opendrain; - hal_bit_t invert_output; - } param; - } hal; } hm2_gpio_instance_t; diff --git a/src/hal/drivers/mesa-hostmot2/ioport.c b/src/hal/drivers/mesa-hostmot2/ioport.c index 5f89c91365..4c9f28db33 100755 --- a/src/hal/drivers/mesa-hostmot2/ioport.c +++ b/src/hal/drivers/mesa-hostmot2/ioport.c @@ -258,34 +258,34 @@ int hm2_ioport_gpio_export_hal(hostmot2_t *hm2) { || (hm2->pin[i].direction == HM2_PIN_DIR_IS_OUTPUT) ) { - r = hal_param_bit_newf( - HAL_RW, - &(hm2->pin[i].instance->hal.param.invert_output), + r = hal_pin_bit_newf( + HAL_IO, + &(hm2->pin[i].instance->hal.pin.invert_output), hm2->llio->comp_id, "%s.gpio.%03d.invert_output", hm2->llio->name, i ); if (r < 0) { - HM2_ERR("error %d adding gpio param, aborting\n", r); + HM2_ERR("error %d adding gpio pin, aborting\n", r); return -EINVAL; } - r = hal_param_bit_newf( - HAL_RW, - &(hm2->pin[i].instance->hal.param.is_opendrain), + r = hal_pin_bit_newf( + HAL_IO, + &(hm2->pin[i].instance->hal.pin.is_opendrain), hm2->llio->comp_id, "%s.gpio.%03d.is_opendrain", hm2->llio->name, i ); if (r < 0) { - HM2_ERR("error %d adding gpio param, aborting\n", r); + HM2_ERR("error %d adding gpio pin, aborting\n", r); return -EINVAL; } - hm2->pin[i].instance->hal.param.invert_output = 0; - hm2->pin[i].instance->hal.param.is_opendrain = 0; + *hm2->pin[i].instance->hal.pin.invert_output = 0; + *hm2->pin[i].instance->hal.pin.is_opendrain = 0; } @@ -311,20 +311,20 @@ int hm2_ioport_gpio_export_hal(hostmot2_t *hm2) { *(hm2->pin[i].instance->hal.pin.out) = 0; // parameters - r = hal_param_bit_newf( - HAL_RW, - &(hm2->pin[i].instance->hal.param.is_output), + r = hal_pin_bit_newf( + HAL_IO, + &(hm2->pin[i].instance->hal.pin.is_output), hm2->llio->comp_id, "%s.gpio.%03d.is_output", hm2->llio->name, i ); if (r < 0) { - HM2_ERR("error %d adding gpio param, aborting\n", r); + HM2_ERR("error %d adding gpio pin, aborting\n", r); return -EINVAL; } - hm2->pin[i].instance->hal.param.is_output = 0; + *hm2->pin[i].instance->hal.pin.is_output = 0; } } @@ -389,7 +389,7 @@ void hm2_ioport_update(hostmot2_t *hm2) { int io_pin = (port * hm2->idrom.port_width) + port_pin; if (hm2->pin[io_pin].gtag == HM2_GTAG_IOPORT) { - if (hm2->pin[io_pin].instance->hal.param.is_output) { + if (*hm2->pin[io_pin].instance->hal.pin.is_output) { hm2->pin[io_pin].direction = HM2_PIN_DIR_IS_OUTPUT; } else { hm2->pin[io_pin].direction = HM2_PIN_DIR_IS_INPUT; @@ -400,14 +400,14 @@ void hm2_ioport_update(hostmot2_t *hm2) { hm2->ioport.ddr_reg[port] |= (1 << port_pin); // set the bit in the ddr register // Open Drain Register - if (hm2->pin[io_pin].instance->hal.param.is_opendrain) { + if (*hm2->pin[io_pin].instance->hal.pin.is_opendrain) { hm2->ioport.open_drain_reg[port] |= (1 << port_pin); // set the bit in the open drain register } else { hm2->ioport.open_drain_reg[port] &= ~(1 << port_pin); // clear the bit in the open drain register } // Invert Output Register - if (hm2->pin[io_pin].instance->hal.param.invert_output) { + if (*hm2->pin[io_pin].instance->hal.pin.invert_output) { hm2->ioport.output_invert_reg[port] |= (1 << port_pin); // set the bit in the output invert register } else { hm2->ioport.output_invert_reg[port] &= ~(1 << port_pin); // clear the bit in the output invert register From eb5b8a0f057824bc0718e8b7909bcbdc0ac32e67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Sun, 11 Nov 2018 10:38:33 +0000 Subject: [PATCH 328/516] hm2/encoder: convert params to pins --- src/hal/drivers/mesa-hostmot2/encoder.c | 68 ++++++++++++------------ src/hal/drivers/mesa-hostmot2/hostmot2.h | 17 +++--- 2 files changed, 41 insertions(+), 44 deletions(-) diff --git a/src/hal/drivers/mesa-hostmot2/encoder.c b/src/hal/drivers/mesa-hostmot2/encoder.c index 05f460110e..ae38ea8445 100755 --- a/src/hal/drivers/mesa-hostmot2/encoder.c +++ b/src/hal/drivers/mesa-hostmot2/encoder.c @@ -85,31 +85,31 @@ static void hm2_encoder_update_control_register(hostmot2_t *hm2, do_flag( &encoder->control_reg[i], - e->hal.param.index_invert, + *e->hal.pin.index_invert, HM2_ENCODER_INDEX_POLARITY ); do_flag( &encoder->control_reg[i], - e->hal.param.index_mask, + *e->hal.pin.index_mask, HM2_ENCODER_INDEX_MASK ); do_flag( &encoder->control_reg[i], - e->hal.param.index_mask_invert, + *e->hal.pin.index_mask_invert, HM2_ENCODER_INDEX_MASK_POLARITY ); do_flag( &encoder->control_reg[i], - e->hal.param.counter_mode, + *e->hal.pin.counter_mode, HM2_ENCODER_COUNTER_MODE ); do_flag( &encoder->control_reg[i], - e->hal.param.filter, + *e->hal.pin.filter, HM2_ENCODER_FILTER ); } @@ -498,51 +498,51 @@ int hm2_encoder_parse_md(hostmot2_t *hm2, hm2_encoder_t *encoder, int md_index, // parameters rtapi_snprintf(name, sizeof(name), "%s.encoder.%02d.scale", hm2->llio->name, i + hm2->encoder_base); - r = hal_param_float_new(name, HAL_RW, &(encoder->instance[i].hal.param.scale), hm2->llio->comp_id); + r = hal_pin_float_new(name, HAL_IO, &(encoder->instance[i].hal.pin.scale), hm2->llio->comp_id); if (r < 0) { - HM2_ERR("error adding param '%s', aborting\n", name); + HM2_ERR("error adding pin '%s', aborting\n", name); goto fail1; } rtapi_snprintf(name, sizeof(name), "%s.encoder.%02d.index-invert", hm2->llio->name, i + hm2->encoder_base); - r = hal_param_bit_new(name, HAL_RW, &(encoder->instance[i].hal.param.index_invert), hm2->llio->comp_id); + r = hal_pin_bit_new(name, HAL_IO, &(encoder->instance[i].hal.pin.index_invert), hm2->llio->comp_id); if (r < 0) { - HM2_ERR("error adding param '%s', aborting\n", name); + HM2_ERR("error adding pin '%s', aborting\n", name); goto fail1; } rtapi_snprintf(name, sizeof(name), "%s.encoder.%02d.index-mask", hm2->llio->name, i + hm2->encoder_base); - r = hal_param_bit_new(name, HAL_RW, &(encoder->instance[i].hal.param.index_mask), hm2->llio->comp_id); + r = hal_pin_bit_new(name, HAL_IO, &(encoder->instance[i].hal.pin.index_mask), hm2->llio->comp_id); if (r < 0) { - HM2_ERR("error adding param '%s', aborting\n", name); + HM2_ERR("error adding pin '%s', aborting\n", name); goto fail1; } rtapi_snprintf(name, sizeof(name), "%s.encoder.%02d.index-mask-invert", hm2->llio->name, i + hm2->encoder_base); - r = hal_param_bit_new(name, HAL_RW, &(encoder->instance[i].hal.param.index_mask_invert), hm2->llio->comp_id); + r = hal_pin_bit_new(name, HAL_IO, &(encoder->instance[i].hal.pin.index_mask_invert), hm2->llio->comp_id); if (r < 0) { - HM2_ERR("error adding param '%s', aborting\n", name); + HM2_ERR("error adding pin '%s', aborting\n", name); goto fail1; } rtapi_snprintf(name, sizeof(name), "%s.encoder.%02d.counter-mode", hm2->llio->name, i + hm2->encoder_base); - r = hal_param_bit_new(name, HAL_RW, &(encoder->instance[i].hal.param.counter_mode), hm2->llio->comp_id); + r = hal_pin_bit_new(name, HAL_IO, &(encoder->instance[i].hal.pin.counter_mode), hm2->llio->comp_id); if (r < 0) { - HM2_ERR("error adding param '%s', aborting\n", name); + HM2_ERR("error adding pin '%s', aborting\n", name); goto fail1; } rtapi_snprintf(name, sizeof(name), "%s.encoder.%02d.filter", hm2->llio->name, i + hm2->encoder_base); - r = hal_param_bit_new(name, HAL_RW, &(encoder->instance[i].hal.param.filter), hm2->llio->comp_id); + r = hal_pin_bit_new(name, HAL_IO, &(encoder->instance[i].hal.pin.filter), hm2->llio->comp_id); if (r < 0) { - HM2_ERR("error adding param '%s', aborting\n", name); + HM2_ERR("error adding pin '%s', aborting\n", name); goto fail1; } rtapi_snprintf(name, sizeof(name), "%s.encoder.%02d.vel-timeout", hm2->llio->name, i + hm2->encoder_base); - r = hal_param_float_new(name, HAL_RW, &(encoder->instance[i].hal.param.vel_timeout), hm2->llio->comp_id); + r = hal_pin_float_new(name, HAL_IO, &(encoder->instance[i].hal.pin.vel_timeout), hm2->llio->comp_id); if (r < 0) { - HM2_ERR("error adding param '%s', aborting\n", name); + HM2_ERR("error adding pin '%s', aborting\n", name); goto fail1; } @@ -555,13 +555,13 @@ int hm2_encoder_parse_md(hostmot2_t *hm2, hm2_encoder_t *encoder, int md_index, *encoder->instance[i].hal.pin.reset = 0; *encoder->instance[i].hal.pin.index_enable = 0; - encoder->instance[i].hal.param.scale = 1.0; - encoder->instance[i].hal.param.index_invert = 0; - encoder->instance[i].hal.param.index_mask = 0; - encoder->instance[i].hal.param.index_mask_invert = 0; - encoder->instance[i].hal.param.counter_mode = 0; - encoder->instance[i].hal.param.filter = 1; - encoder->instance[i].hal.param.vel_timeout = 0.5; + *encoder->instance[i].hal.pin.scale = 1.0; + *encoder->instance[i].hal.pin.index_invert = 0; + *encoder->instance[i].hal.pin.index_mask = 0; + *encoder->instance[i].hal.pin.index_mask_invert = 0; + *encoder->instance[i].hal.pin.counter_mode = 0; + *encoder->instance[i].hal.pin.filter = 1; + *encoder->instance[i].hal.pin.vel_timeout = 0.5; encoder->instance[i].state = HM2_ENCODER_STOPPED; @@ -830,8 +830,8 @@ static void hm2_encoder_instance_update_position(hostmot2_t *hm2, // the scaled position. // - *e->hal.pin.position = *e->hal.pin.count / e->hal.param.scale; - *e->hal.pin.position_latch = *e->hal.pin.count_latch / e->hal.param.scale; + *e->hal.pin.position = *e->hal.pin.count / *e->hal.pin.scale; + *e->hal.pin.position_latch = *e->hal.pin.count_latch / *e->hal.pin.scale; } @@ -848,9 +848,9 @@ static void hm2_encoder_instance_process_tram_read(hostmot2_t *hm2, hm2_encoder_instance_t *e = &encoder->instance[instance]; // sanity check - if (e->hal.param.scale == 0.0) { + if (*e->hal.pin.scale == 0.0) { HM2_ERR("encoder.%02d.scale == 0.0, bogus, setting to 1.0\n", instance); - e->hal.param.scale = 1.0; + *e->hal.pin.scale = 1.0; } hm2_encoder_read_control_register(hm2, encoder); @@ -920,19 +920,19 @@ static void hm2_encoder_instance_process_tram_read(hostmot2_t *hm2, dT_clocks = (time_of_interest - e->prev_event_reg_timestamp) + (e->tsc_num_rollovers << 16); dT_s = (double)dT_clocks * encoder->seconds_per_tsdiv_clock; - if (dT_s >= e->hal.param.vel_timeout) { + if (dT_s >= *e->hal.pin.vel_timeout) { *e->hal.pin.velocity = 0.0; e->state = HM2_ENCODER_STOPPED; break; } - if ((*e->hal.pin.velocity * e->hal.param.scale) > 0.0) { + if ((*e->hal.pin.velocity * *e->hal.pin.scale) > 0.0) { dS_counts = 1; } else { dS_counts = -1; } - dS_pos_units = dS_counts / e->hal.param.scale; + dS_pos_units = dS_counts / *e->hal.pin.scale; // we can calculate velocity only if timestamp changed along with counts if (dT_clocks > 0) { @@ -984,7 +984,7 @@ static void hm2_encoder_instance_process_tram_read(hostmot2_t *hm2, dT_clocks = (time_of_interest - e->prev_event_reg_timestamp) + (e->tsc_num_rollovers << 16); dT_s = (double)dT_clocks * encoder->seconds_per_tsdiv_clock; - dS_pos_units = dS_counts / e->hal.param.scale; + dS_pos_units = dS_counts / *e->hal.pin.scale; // we can calculate velocity only if timestamp changed along with counts if (dT_clocks > 0) { diff --git a/src/hal/drivers/mesa-hostmot2/hostmot2.h b/src/hal/drivers/mesa-hostmot2/hostmot2.h index f74d15b7d0..371a2113c6 100644 --- a/src/hal/drivers/mesa-hostmot2/hostmot2.h +++ b/src/hal/drivers/mesa-hostmot2/hostmot2.h @@ -343,18 +343,15 @@ typedef struct { hal_bit_t *input_a; hal_bit_t *input_b; hal_bit_t *input_idx; + hal_float_t *scale; + hal_bit_t *index_invert; + hal_bit_t *index_mask; + hal_bit_t *index_mask_invert; + hal_bit_t *counter_mode; + hal_bit_t *filter; + hal_float_t *vel_timeout; } pin; - struct { - hal_float_t scale; - hal_bit_t index_invert; - hal_bit_t index_mask; - hal_bit_t index_mask_invert; - hal_bit_t counter_mode; - hal_bit_t filter; - hal_float_t vel_timeout; - } param; - } hal; s32 zero_offset; // *hal.pin.counts == (*hal.pin.rawcounts - zero_offset) From e9549305a26670356dcfd29875f59fc792511fb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Sun, 11 Nov 2018 10:44:24 +0000 Subject: [PATCH 329/516] hm2/resolver: convert params to pins --- src/hal/drivers/mesa-hostmot2/hostmot2.h | 13 ++--- src/hal/drivers/mesa-hostmot2/resolver.c | 68 ++++++++++++------------ 2 files changed, 39 insertions(+), 42 deletions(-) diff --git a/src/hal/drivers/mesa-hostmot2/hostmot2.h b/src/hal/drivers/mesa-hostmot2/hostmot2.h index 371a2113c6..0bcfeb0a03 100644 --- a/src/hal/drivers/mesa-hostmot2/hostmot2.h +++ b/src/hal/drivers/mesa-hostmot2/hostmot2.h @@ -469,14 +469,11 @@ typedef struct { hal_bit_t *reset; hal_bit_t *index_enable; hal_bit_t *error; + hal_float_t *scale; + hal_float_t *vel_scale; + hal_u32_t *index_div; } pin; - struct { - hal_float_t scale; - hal_float_t vel_scale; - hal_u32_t index_div; - } param; - } hal; __s64 accum; @@ -488,8 +485,8 @@ typedef struct { typedef struct { struct { - hal_float_t excitation_khz; - } param; + hal_float_t *excitation_khz; + } pin; } hm2_resolver_global_t; typedef struct { diff --git a/src/hal/drivers/mesa-hostmot2/resolver.c b/src/hal/drivers/mesa-hostmot2/resolver.c index df350bdaaa..ca0ec6cd87 100755 --- a/src/hal/drivers/mesa-hostmot2/resolver.c +++ b/src/hal/drivers/mesa-hostmot2/resolver.c @@ -149,11 +149,11 @@ int hm2_resolver_parse_md(hostmot2_t *hm2, int md_index) { rtapi_snprintf(name, sizeof(name), "%s.resolver.excitation-khz", hm2->llio->name); - ret= hal_param_float_new(name, HAL_RW, - &(hm2->resolver.hal->param.excitation_khz), + ret= hal_pin_float_new(name, HAL_IO, + &(hm2->resolver.hal->pin.excitation_khz), hm2->llio->comp_id); if (ret < 0) { - HM2_ERR("error adding param '%s', aborting\n", name); + HM2_ERR("error adding pin '%s', aborting\n", name); goto fail1; } @@ -244,31 +244,31 @@ int hm2_resolver_parse_md(hostmot2_t *hm2, int md_index) { // parameters rtapi_snprintf(name, sizeof(name), "%s.resolver.%02d.scale", hm2->llio->name, i); - ret= hal_param_float_new(name, HAL_RW, - &(hm2->resolver.instance[i].hal.param.scale), + ret= hal_pin_float_new(name, HAL_IO, + &(hm2->resolver.instance[i].hal.pin.scale), hm2->llio->comp_id); if (ret < 0) { - HM2_ERR("error adding param '%s', aborting\n", name); + HM2_ERR("error adding pin '%s', aborting\n", name); goto fail1; } rtapi_snprintf(name, sizeof(name), "%s.resolver.%02d.velocity-scale", hm2->llio->name, i); - ret= hal_param_float_new(name, HAL_RW, - &(hm2->resolver.instance[i].hal.param.vel_scale), + ret= hal_pin_float_new(name, HAL_IO, + &(hm2->resolver.instance[i].hal.pin.vel_scale), hm2->llio->comp_id); if (ret < 0) { - HM2_ERR("error adding param '%s', aborting\n", name); + HM2_ERR("error adding pin '%s', aborting\n", name); goto fail1; } rtapi_snprintf(name, sizeof(name), "%s.resolver.%02d.index-divisor", hm2->llio->name, i); - ret= hal_param_u32_new(name, HAL_RW, - &(hm2->resolver.instance[i].hal.param.index_div), + ret= hal_pin_u32_new(name, HAL_RW, + &(hm2->resolver.instance[i].hal.pin.index_div), hm2->llio->comp_id); if (ret < 0) { - HM2_ERR("error adding param '%s', aborting\n", name); + HM2_ERR("error adding pin '%s', aborting\n", name); goto fail1; } @@ -278,10 +278,10 @@ int hm2_resolver_parse_md(hostmot2_t *hm2, int md_index) { // *hm2->resolver.instance[i].hal.pin.reset = 0; - hm2->resolver.instance[i].hal.param.scale = 1.0; - hm2->resolver.instance[i].hal.param.vel_scale = 1.0; - hm2->resolver.instance[i].hal.param.index_div = 1; - hm2->resolver.hal->param.excitation_khz = -1; // don't-write + *hm2->resolver.instance[i].hal.pin.scale = 1.0; + *hm2->resolver.instance[i].hal.pin.vel_scale = 1.0; + *hm2->resolver.instance[i].hal.pin.index_div = 1; + *hm2->resolver.hal->pin.excitation_khz = -1; // don't-write hm2->resolver.kHz = (hm2->resolver.clock_frequency / 5000); } } @@ -310,13 +310,13 @@ void hm2_resolver_process_tram_read(hostmot2_t *hm2, long period) { res = &hm2->resolver.instance[i]; // sanity check - if (res->hal.param.scale == 0.0) { + if (*res->hal.pin.scale == 0.0) { HM2_ERR("resolver.%02d.scale == 0.0, bogus, setting to 1.0\n", i); - res->hal.param.scale = 1.0; + *res->hal.pin.scale = 1.0; } - if (res->hal.param.vel_scale == 0.0) { + if (*res->hal.pin.vel_scale == 0.0) { HM2_ERR("resolver.%02d.velocity-scale == 0.0, bogus, setting to 1.0\n", i); - res->hal.param.vel_scale = 1.0; + *res->hal.pin.vel_scale = 1.0; } // PROCESS THE REGISTERS, SET THE PINS @@ -326,9 +326,9 @@ void hm2_resolver_process_tram_read(hostmot2_t *hm2, long period) { if ((res->old_reg > hm2->resolver.position_reg[i]) && (res->old_reg - hm2->resolver.position_reg[i] > 0x80000000)){ res->index_cnts++; if (*res->hal.pin.index_enable){ - int r = (res->index_cnts % res->hal.param.index_div); - if ((res->hal.param.index_div > 1 && r == 1) - || (res->hal.param.index_div == 1 && r == 0)){ + int r = (res->index_cnts % *res->hal.pin.index_div); + if ((*res->hal.pin.index_div > 1 && r == 1) + || (*res->hal.pin.index_div == 1 && r == 0)){ res->offset = (res->accum - hm2->resolver.position_reg[i]); *res->hal.pin.index_enable = 0; } @@ -336,7 +336,7 @@ void hm2_resolver_process_tram_read(hostmot2_t *hm2, long period) { } else if ((res->old_reg < hm2->resolver.position_reg[i]) && (hm2->resolver.position_reg[i] - res->old_reg > 0x80000000)){ res->index_cnts--; - if (*res->hal.pin.index_enable && (res->index_cnts % res->hal.param.index_div == 0)){ + if (*res->hal.pin.index_enable && (res->index_cnts % *res->hal.pin.index_div == 0)){ res->offset = (res->accum - hm2->resolver.position_reg[i] + 0x100000000LL); *res->hal.pin.index_enable = 0; } @@ -352,9 +352,9 @@ void hm2_resolver_process_tram_read(hostmot2_t *hm2, long period) { *res->hal.pin.rawcounts = (res->accum >> 8); *res->hal.pin.count = (res->accum - res->offset) >> 8; *res->hal.pin.position = (res->accum - res->offset) / 4294967296.0 - * res->hal.param.scale; + * *res->hal.pin.scale; *res->hal.pin.velocity = ((hm2->resolver.velocity_reg[i] / 4294967296.0) - * hm2->resolver.kHz * res->hal.param.vel_scale); + * hm2->resolver.kHz * *res->hal.pin.vel_scale); *res->hal.pin.error = *hm2->resolver.status_reg & (1 << i); } } @@ -370,22 +370,22 @@ void hm2_resolver_write(hostmot2_t *hm2, long period){ switch (state){ case 0: // Idle/waiting - if (hm2->resolver.hal->param.excitation_khz < 0){ + if (*hm2->resolver.hal->pin.excitation_khz < 0){ return; } - if (hm2->resolver.hal->param.excitation_khz != hm2->resolver.written_khz){ - if (hm2->resolver.hal->param.excitation_khz > 8){ - hm2->resolver.hal->param.excitation_khz = 10; + if (*hm2->resolver.hal->pin.excitation_khz != hm2->resolver.written_khz){ + if (*hm2->resolver.hal->pin.excitation_khz > 8){ + *hm2->resolver.hal->pin.excitation_khz = 10; hm2->resolver.written_khz = 10; hm2->resolver.kHz = (hm2->resolver.clock_frequency / 5000); cmd_val = 0x803; - } else if (hm2->resolver.hal->param.excitation_khz > 4){ - hm2->resolver.hal->param.excitation_khz = 5; + } else if (*hm2->resolver.hal->pin.excitation_khz > 4){ + *hm2->resolver.hal->pin.excitation_khz = 5; hm2->resolver.written_khz = 5; hm2->resolver.kHz = (hm2->resolver.clock_frequency / 10000); cmd_val = 0x802; - }else{ - hm2->resolver.hal->param.excitation_khz = 2.5; + } else { + *hm2->resolver.hal->pin.excitation_khz = 2.5; hm2->resolver.written_khz = 2.5; hm2->resolver.kHz= (hm2->resolver.clock_frequency / 20000); cmd_val = 0x801; From 7566c2a77a262204615129a40d92166493091a75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Sun, 11 Nov 2018 10:51:27 +0000 Subject: [PATCH 330/516] hm2/pwmgen: convert params to pins --- src/hal/drivers/mesa-hostmot2/hostmot2.h | 13 ++-- src/hal/drivers/mesa-hostmot2/pwmgen.c | 96 ++++++++++++------------ 2 files changed, 53 insertions(+), 56 deletions(-) diff --git a/src/hal/drivers/mesa-hostmot2/hostmot2.h b/src/hal/drivers/mesa-hostmot2/hostmot2.h index 0bcfeb0a03..6695c60441 100644 --- a/src/hal/drivers/mesa-hostmot2/hostmot2.h +++ b/src/hal/drivers/mesa-hostmot2/hostmot2.h @@ -536,13 +536,10 @@ typedef struct { struct { hal_float_t *value; hal_bit_t *enable; + hal_float_t *scale; + hal_s32_t *output_type; } pin; - struct { - hal_float_t scale; - hal_s32_t output_type; - } param; - } hal; // this keeps track of the output_type that we've told the FPGA, so we @@ -558,9 +555,9 @@ typedef struct { // these hal params affect all pwmgen instances typedef struct { struct { - hal_u32_t pwm_frequency; - hal_u32_t pdm_frequency; - } param; + hal_u32_t *pwm_frequency; + hal_u32_t *pdm_frequency; + } pin; } hm2_pwmgen_module_global_t; diff --git a/src/hal/drivers/mesa-hostmot2/pwmgen.c b/src/hal/drivers/mesa-hostmot2/pwmgen.c index 58641c1d2b..a6ed453bcc 100755 --- a/src/hal/drivers/mesa-hostmot2/pwmgen.c +++ b/src/hal/drivers/mesa-hostmot2/pwmgen.c @@ -35,14 +35,14 @@ void hm2_pwmgen_handle_pwm_frequency(hostmot2_t *hm2) { u32 dds; - if (hm2->pwmgen.hal->param.pwm_frequency < 1) { - HM2_ERR("pwmgen.pwm_frequency %d is too low, setting to 1\n", hm2->pwmgen.hal->param.pwm_frequency); - hm2->pwmgen.hal->param.pwm_frequency = 1; + if (*hm2->pwmgen.hal->pin.pwm_frequency < 1) { + HM2_ERR("pwmgen.pwm_frequency %d is too low, setting to 1\n", *hm2->pwmgen.hal->pin.pwm_frequency); + *hm2->pwmgen.hal->pin.pwm_frequency = 1; } // - // hal->param.pwm_frequency is the user's desired PWM frequency in Hz + // hal->pin.pwm_frequency is the user's desired PWM frequency in Hz // // We get to play with PWMClock (frequency at which the PWM counter // runs) and PWMBits (number of bits of the PWM Value Register that @@ -66,7 +66,7 @@ void hm2_pwmgen_handle_pwm_frequency(hostmot2_t *hm2) { // // can we do it with 12 bits? - dds = ((double)hm2->pwmgen.hal->param.pwm_frequency * 65536.0 * 4096.0) / (double)hm2->pwmgen.clock_frequency; + dds = ((double)*hm2->pwmgen.hal->pin.pwm_frequency * 65536.0 * 4096.0) / (double)hm2->pwmgen.clock_frequency; if (dds < 65536) { hm2->pwmgen.pwmgen_master_rate_dds_reg = dds; hm2->pwmgen.pwm_bits = 12; @@ -74,7 +74,7 @@ void hm2_pwmgen_handle_pwm_frequency(hostmot2_t *hm2) { } // try 11 bits - dds = ((double)hm2->pwmgen.hal->param.pwm_frequency * 65536.0 * 2048.0) / (double)hm2->pwmgen.clock_frequency; + dds = ((double)*hm2->pwmgen.hal->pin.pwm_frequency * 65536.0 * 2048.0) / (double)hm2->pwmgen.clock_frequency; if (dds < 65536) { hm2->pwmgen.pwmgen_master_rate_dds_reg = dds; hm2->pwmgen.pwm_bits = 11; @@ -82,7 +82,7 @@ void hm2_pwmgen_handle_pwm_frequency(hostmot2_t *hm2) { } // try 10 bits - dds = ((double)hm2->pwmgen.hal->param.pwm_frequency * 65536.0 * 1024.0) / (double)hm2->pwmgen.clock_frequency; + dds = ((double)*hm2->pwmgen.hal->pin.pwm_frequency * 65536.0 * 1024.0) / (double)hm2->pwmgen.clock_frequency; if (dds < 65536) { hm2->pwmgen.pwmgen_master_rate_dds_reg = dds; hm2->pwmgen.pwm_bits = 10; @@ -90,7 +90,7 @@ void hm2_pwmgen_handle_pwm_frequency(hostmot2_t *hm2) { } // try 9 bits - dds = ((double)hm2->pwmgen.hal->param.pwm_frequency * 65536.0 * 512.0) / (double)hm2->pwmgen.clock_frequency; + dds = ((double)*hm2->pwmgen.hal->pin.pwm_frequency * 65536.0 * 512.0) / (double)hm2->pwmgen.clock_frequency; if (dds < 65536) { hm2->pwmgen.pwmgen_master_rate_dds_reg = dds; hm2->pwmgen.pwm_bits = 9; @@ -100,8 +100,8 @@ void hm2_pwmgen_handle_pwm_frequency(hostmot2_t *hm2) { // no joy, lower frequency until it'll work with 9 bits // From above: // PWMFreq = (ClockHigh * DDS) / (65536 * 2^PWMBits) - hm2->pwmgen.hal->param.pwm_frequency = ((double)hm2->pwmgen.clock_frequency * 65535.0) / (65536.0 * 512.0); - HM2_ERR("max PWM frequency is %d Hz\n", hm2->pwmgen.hal->param.pwm_frequency); + *hm2->pwmgen.hal->pin.pwm_frequency = ((double)hm2->pwmgen.clock_frequency * 65535.0) / (65536.0 * 512.0); + HM2_ERR("max PWM frequency is %d Hz\n", *hm2->pwmgen.hal->pin.pwm_frequency); hm2->pwmgen.pwmgen_master_rate_dds_reg = 65535; hm2->pwmgen.pwm_bits = 9; } @@ -111,14 +111,14 @@ void hm2_pwmgen_handle_pdm_frequency(hostmot2_t *hm2) { u32 dds; - if (hm2->pwmgen.hal->param.pdm_frequency < 1) { - HM2_ERR("pwmgen.pdm_frequency %d is too low, setting to 1\n", hm2->pwmgen.hal->param.pdm_frequency); - hm2->pwmgen.hal->param.pdm_frequency = 1; + if (*hm2->pwmgen.hal->pin.pdm_frequency < 1) { + HM2_ERR("pwmgen.pdm_frequency %d is too low, setting to 1\n", *hm2->pwmgen.hal->pin.pdm_frequency); + *hm2->pwmgen.hal->pin.pdm_frequency = 1; } // - // hal->param.pdm_frequency is the user's desired PDM frequency in Hz + // hal->pin.pdm_frequency is the user's desired PDM frequency in Hz // // We get to play with PDMClock (frequency at which the PDM counter // runs) only - PDMBits (number of bits of the PDM Value Register that @@ -152,14 +152,14 @@ void hm2_pwmgen_handle_pdm_frequency(hostmot2_t *hm2) { // // can we do it with 12 bits? - dds = ((double)hm2->pwmgen.hal->param.pdm_frequency * 65536.0) / (double)hm2->pwmgen.clock_frequency; + dds = ((double)*hm2->pwmgen.hal->pin.pdm_frequency * 65536.0) / (double)hm2->pwmgen.clock_frequency; if (dds == 0) { // too slow, set frequency to minimum // From above: // PulseFreq = (ClockHigh * DDS) / 65536 dds = 1; - hm2->pwmgen.hal->param.pdm_frequency = ((double)hm2->pwmgen.clock_frequency * (double)dds) / 65536.0; - HM2_ERR("min PDM frequency is %d Hz\n", hm2->pwmgen.hal->param.pdm_frequency); + *hm2->pwmgen.hal->pin.pdm_frequency = ((double)hm2->pwmgen.clock_frequency * (double)dds) / 65536.0; + HM2_ERR("min PDM frequency is %d Hz\n", *hm2->pwmgen.hal->pin.pdm_frequency); hm2->pwmgen.pdmgen_master_rate_dds_reg = 1; return; } @@ -173,8 +173,8 @@ void hm2_pwmgen_handle_pdm_frequency(hostmot2_t *hm2) { // user wants too much, lower frequency until it'll work with 12 bits // From above: // PulseFreq = (ClockHigh * DDS) / 65536 - hm2->pwmgen.hal->param.pdm_frequency = ((double)hm2->pwmgen.clock_frequency * 65535.0) / 65536.0; - HM2_ERR("max PDM frequency is %d Hz\n", hm2->pwmgen.hal->param.pdm_frequency); + *hm2->pwmgen.hal->pin.pdm_frequency = ((double)hm2->pwmgen.clock_frequency * 65535.0) / 65536.0; + HM2_ERR("max PDM frequency is %d Hz\n", *hm2->pwmgen.hal->pin.pdm_frequency); hm2->pwmgen.pdmgen_master_rate_dds_reg = 65535; } @@ -220,7 +220,7 @@ void hm2_pwmgen_force_write(hostmot2_t *hm2) { hm2->pwmgen.pwm_mode_reg[i] = pwm_width; - switch (hm2->pwmgen.instance[i].hal.param.output_type) { + switch (*hm2->pwmgen.instance[i].hal.pin.output_type) { case HM2_PWMGEN_OUTPUT_TYPE_PWM: { // leave the Output Mode bits 0 double_buffered = 1; @@ -248,7 +248,7 @@ void hm2_pwmgen_force_write(hostmot2_t *hm2) { default: { // unknown pwm mode! complain and switch to pwm/dir HM2_ERR( "invalid pwmgen output_type %d requested\n", - hm2->pwmgen.instance[i].hal.param.output_type + *hm2->pwmgen.instance[i].hal.pin.output_type ); HM2_ERR( "supported .output-type values are: %d (PWM & Dir), %d (Up & Down), %d (PDM & Dir), and %d (Dir & PWM)\n", @@ -258,7 +258,7 @@ void hm2_pwmgen_force_write(hostmot2_t *hm2) { HM2_PWMGEN_OUTPUT_TYPE_PWM_SWAPPED ); HM2_ERR("switching to 1 (PWM & Dir)\n"); - hm2->pwmgen.instance[i].hal.param.output_type = HM2_PWMGEN_OUTPUT_TYPE_PWM; + *hm2->pwmgen.instance[i].hal.pin.output_type = HM2_PWMGEN_OUTPUT_TYPE_PWM; double_buffered = 1; // leave the Output Mode bits 0 break; @@ -286,12 +286,12 @@ void hm2_pwmgen_force_write(hostmot2_t *hm2) { if ((*hm2->llio->io_error) != 0) return; for (i = 0; i < hm2->pwmgen.num_instances; i ++) { - hm2->pwmgen.instance[i].written_output_type = hm2->pwmgen.instance[i].hal.param.output_type; + hm2->pwmgen.instance[i].written_output_type = *hm2->pwmgen.instance[i].hal.pin.output_type; hm2->pwmgen.instance[i].written_enable = *hm2->pwmgen.instance[i].hal.pin.enable; } - hm2->pwmgen.written_pwm_frequency = hm2->pwmgen.hal->param.pwm_frequency; - hm2->pwmgen.written_pdm_frequency = hm2->pwmgen.hal->param.pdm_frequency; + hm2->pwmgen.written_pwm_frequency = *hm2->pwmgen.hal->pin.pwm_frequency; + hm2->pwmgen.written_pdm_frequency = *hm2->pwmgen.hal->pin.pdm_frequency; } @@ -308,14 +308,14 @@ void hm2_pwmgen_write(hostmot2_t *hm2) { // check output type for (i = 0; i < hm2->pwmgen.num_instances; i ++) { - if (hm2->pwmgen.instance[i].hal.param.output_type != hm2->pwmgen.instance[i].written_output_type) { + if (*hm2->pwmgen.instance[i].hal.pin.output_type != hm2->pwmgen.instance[i].written_output_type) { goto force_write; } } // check pwm & pdm frequency - if (hm2->pwmgen.hal->param.pwm_frequency != hm2->pwmgen.written_pwm_frequency) goto force_write; - if (hm2->pwmgen.hal->param.pdm_frequency != hm2->pwmgen.written_pdm_frequency) goto force_write; + if (*hm2->pwmgen.hal->pin.pwm_frequency != hm2->pwmgen.written_pwm_frequency) goto force_write; + if (*hm2->pwmgen.hal->pin.pdm_frequency != hm2->pwmgen.written_pdm_frequency) goto force_write; // update enable register? for (i = 0; i < hm2->pwmgen.num_instances; i ++) { @@ -428,32 +428,32 @@ int hm2_pwmgen_parse_md(hostmot2_t *hm2, int md_index) { // these hal parameters affect all pwmgen instances - r = hal_param_u32_newf( - HAL_RW, - &(hm2->pwmgen.hal->param.pwm_frequency), + r = hal_pin_u32_newf( + HAL_IO, + &(hm2->pwmgen.hal->pin.pwm_frequency), hm2->llio->comp_id, "%s.pwmgen.pwm_frequency", hm2->llio->name ); if (r < 0) { - HM2_ERR("error adding pwmgen.pwm_frequency param, aborting\n"); + HM2_ERR("error adding pwmgen.pwm_frequency pin, aborting\n"); goto fail1; } - hm2->pwmgen.hal->param.pwm_frequency = 20000; + *hm2->pwmgen.hal->pin.pwm_frequency = 20000; hm2->pwmgen.written_pwm_frequency = 0; - r = hal_param_u32_newf( - HAL_RW, - &(hm2->pwmgen.hal->param.pdm_frequency), + r = hal_pin_u32_newf( + HAL_IO, + &(hm2->pwmgen.hal->pin.pdm_frequency), hm2->llio->comp_id, "%s.pwmgen.pdm_frequency", hm2->llio->name ); if (r < 0) { - HM2_ERR("error adding pwmgen.pdm_frequency param, aborting\n"); + HM2_ERR("error adding pwmgen.pdm_frequency pin, aborting\n"); goto fail1; } - hm2->pwmgen.hal->param.pdm_frequency = 20000; + *hm2->pwmgen.hal->pin.pdm_frequency = 20000; hm2->pwmgen.written_pdm_frequency = 0; @@ -476,30 +476,30 @@ int hm2_pwmgen_parse_md(hostmot2_t *hm2, int md_index) { // parameters rtapi_snprintf(name, sizeof(name), "%s.pwmgen.%02d.scale", hm2->llio->name, i); - r = hal_param_float_new(name, HAL_RW, &(hm2->pwmgen.instance[i].hal.param.scale), hm2->llio->comp_id); + r = hal_pin_float_new(name, HAL_IO, &(hm2->pwmgen.instance[i].hal.pin.scale), hm2->llio->comp_id); if (r < 0) { - HM2_ERR("error adding param '%s', aborting\n", name); + HM2_ERR("error adding pin '%s', aborting\n", name); goto fail1; } - r = hal_param_s32_newf( - HAL_RW, - &(hm2->pwmgen.instance[i].hal.param.output_type), + r = hal_pin_s32_newf( + HAL_IO, + &(hm2->pwmgen.instance[i].hal.pin.output_type), hm2->llio->comp_id, "%s.pwmgen.%02d.output-type", hm2->llio->name, i ); if (r < 0) { - HM2_ERR("error adding param, aborting\n"); + HM2_ERR("error adding pin, aborting\n"); goto fail1; } // init hal objects *(hm2->pwmgen.instance[i].hal.pin.enable) = 0; *(hm2->pwmgen.instance[i].hal.pin.value) = 0.0; - hm2->pwmgen.instance[i].hal.param.scale = 1.0; - hm2->pwmgen.instance[i].hal.param.output_type = HM2_PWMGEN_OUTPUT_TYPE_PWM; + *(hm2->pwmgen.instance[i].hal.pin.scale) = 1.0; + *(hm2->pwmgen.instance[i].hal.pin.output_type) = HM2_PWMGEN_OUTPUT_TYPE_PWM; hm2->pwmgen.instance[i].written_output_type = -666; // force an update at the start hm2->pwmgen.instance[i].written_enable = -666; // force an update at the start @@ -585,13 +585,13 @@ void hm2_pwmgen_prepare_tram_write(hostmot2_t *hm2) { continue; } - scaled_value = *hm2->pwmgen.instance[i].hal.pin.value / hm2->pwmgen.instance[i].hal.param.scale; + scaled_value = *hm2->pwmgen.instance[i].hal.pin.value / *hm2->pwmgen.instance[i].hal.pin.scale; abs_duty_cycle = rtapi_fabs(scaled_value); if (abs_duty_cycle > 1.0) abs_duty_cycle = 1.0; // duty_cycle goes from 0.0 to 1.0, and needs to be puffed out to pwm_bits (if it's pwm) or 12 (if it's pdm) - if (hm2->pwmgen.instance[i].hal.param.output_type == HM2_PWMGEN_OUTPUT_TYPE_PDM) { + if (*hm2->pwmgen.instance[i].hal.pin.output_type == HM2_PWMGEN_OUTPUT_TYPE_PDM) { bits = 12; } else { bits = hm2->pwmgen.pwm_bits; From 5153529eb017a34833c1c3c3c79bdfccc2ca58b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Sun, 11 Nov 2018 10:53:01 +0000 Subject: [PATCH 331/516] hm2/capsense: convert params to pins --- src/hal/drivers/mesa-hostmot2/capsense.c | 14 +++++++------- src/hal/drivers/mesa-hostmot2/hostmot2.h | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/hal/drivers/mesa-hostmot2/capsense.c b/src/hal/drivers/mesa-hostmot2/capsense.c index a0203ced1a..137821a1fd 100644 --- a/src/hal/drivers/mesa-hostmot2/capsense.c +++ b/src/hal/drivers/mesa-hostmot2/capsense.c @@ -109,29 +109,29 @@ int hm2_capsense_parse_md(hostmot2_t *hm2, int md_index) { // parameters /* // these hal parameters affect all capsense instances - r = hal_param_u32_newf( - HAL_RW, - &(hm2->capsense.hal->param.capsense_hysteresis), + r = hal_pin_u32_newf( + HAL_IO, + &(hm2->capsense.hal->pin.capsense_hysteresis), hm2->llio->comp_id, "%s.capsense.capsense_hysteresis", hm2->llio->name ); if (r < 0) { - HM2_ERR("error adding capsense.capsense_hysteresis param, aborting\n"); + HM2_ERR("error adding capsense.capsense_hysteresis pin, aborting\n"); goto fail1; } - hm2->capsense.hal->param.capsense_hysteresis = 0x33333333; + hm2->capsense.hal->pin.capsense_hysteresis = 0x33333333; // hm2->capsense.written_capsense_hysteresis_reg = 0; */ rtapi_snprintf(name, sizeof(name), "%s.capsense.%02d.hysteresis", hm2->llio->name, 0); - r = hal_pin_u32_new(name, HAL_IN, &(hm2->capsense.hal->param.capsense_hysteresis), hm2->llio->comp_id); + r = hal_pin_u32_new(name, HAL_IN, &(hm2->capsense.hal->pin.capsense_hysteresis), hm2->llio->comp_id); if (r < 0) { HM2_ERR("error adding capsense.hysteresis pin, aborting\n"); goto fail1; } - *hm2->capsense.hal->param.capsense_hysteresis = 0x33333333; + *hm2->capsense.hal->pin.capsense_hysteresis = 0x33333333; for (i = 0; i < hm2->capsense.num_instances; i ++) { // pins diff --git a/src/hal/drivers/mesa-hostmot2/hostmot2.h b/src/hal/drivers/mesa-hostmot2/hostmot2.h index 6695c60441..561f962650 100644 --- a/src/hal/drivers/mesa-hostmot2/hostmot2.h +++ b/src/hal/drivers/mesa-hostmot2/hostmot2.h @@ -1093,7 +1093,7 @@ typedef struct { typedef struct { struct { hal_u32_t *capsense_hysteresis; - } param; + } pin; } hm2_capsense_module_global_t; typedef struct { From 4b2c7d7a160ed94f90895ca134700c4a2a9f49d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Sun, 11 Nov 2018 10:54:06 +0000 Subject: [PATCH 332/516] hm2: convert params to pins --- src/hal/drivers/mesa-hostmot2/hostmot2.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/hal/drivers/mesa-hostmot2/hostmot2.h b/src/hal/drivers/mesa-hostmot2/hostmot2.h index 561f962650..f97a06bd26 100644 --- a/src/hal/drivers/mesa-hostmot2/hostmot2.h +++ b/src/hal/drivers/mesa-hostmot2/hostmot2.h @@ -374,7 +374,7 @@ typedef struct { } hm2_encoder_instance_t; -// these hal params affect all encoder instances +// these hal pins affect all encoder instances typedef struct { struct { hal_u32_t *sample_frequency; @@ -552,7 +552,7 @@ typedef struct { } hm2_pwmgen_instance_t; -// these hal params affect all pwmgen instances +// these hal pins affect all pwmgen instances typedef struct { struct { hal_u32_t *pwm_frequency; @@ -572,7 +572,7 @@ typedef struct { // module-global HAL objects... hm2_pwmgen_module_global_t *hal; - // these keep track of the most recent hal->param.p{d,w}m_frequency + // these keep track of the most recent hal->pin.p{d,w}m_frequency // that we've told the FPGA about, so we know if we need to update it u32 written_pwm_frequency; u32 written_pdm_frequency; @@ -646,7 +646,7 @@ typedef struct { u32 clock_frequency; u8 version; - // these keep track of the most recent hal->param.p{d,w}m_frequency + // these keep track of the most recent hal->pin.p{d,w}m_frequency // that we've told the FPGA about, so we know if we need to update it u32 written_pwm_frequency; @@ -762,7 +762,7 @@ typedef struct { } hm2_stepgen_instance_t; -// these hal params affect all stepgen instances +// these hal pins affect all stepgen instances typedef struct { struct { hal_s32_t *dpll_timer_num; @@ -1089,7 +1089,7 @@ typedef struct { } hm2_capsense_instance_t; -// these hal params affect all pwmgen instances +// these hal pins affect all pwmgen instances typedef struct { struct { hal_u32_t *capsense_hysteresis; @@ -1100,7 +1100,7 @@ typedef struct { int num_instances; hm2_capsense_instance_t *instance; - // these keep track of the most recent hal->param.p{d,w}m_frequency + // these keep track of the most recent hal->pin.p{d,w}m_frequency // that we've told the FPGA about, so we know if we need to update it u32 written_capsense_hysteresis_reg; From ce9235893708e56b236b9ad260ebb8e4d9ff4da8 Mon Sep 17 00:00:00 2001 From: bdebruijn Date: Mon, 12 Nov 2018 11:31:12 +0100 Subject: [PATCH 333/516] scripts/linuxcnc.in: more meaningful instructions --- scripts/linuxcnc.in | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/scripts/linuxcnc.in b/scripts/linuxcnc.in index 7f806de671..6b93f3cf40 100644 --- a/scripts/linuxcnc.in +++ b/scripts/linuxcnc.in @@ -207,11 +207,26 @@ function ErrorCheck () { fi echo "\ -Machinekit terminated with an error. You can find more information in the log: +Machinekit terminated with an error. For simple cases more information +can be found in the following files: $HOME/linuxcnc_debug.txt -and $HOME/linuxcnc_print.txt -as well as in the output of the shell command 'dmesg' and in the terminal" + +For other cases get more meaningfull information by restarting after + export DEBUG=5 + +and look at the output of: + /var/log/linuxcnc.log + dmesg + +When looking for errors, specifically look for libraries that fail to load +by looking for lines with 'insmod failed' as per example below. + +insmod failed, returned -1: +do_load_cmd: dlopen: nonexistant-component.so: cannot open shared object file: +No such file or directory + +For getting help, please have a look here: www.machinekit.io/docs/getting-help/" else @WISH@ $LINUXCNC_TCL_DIR/show_errors.tcl $DEBUG_FILE $PRINT_FILE fi From e6fbdde4fed4433c439eee9f96dbcc768d083342 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Sun, 11 Nov 2018 11:02:59 +0000 Subject: [PATCH 334/516] hm2: convert params to pins --- src/hal/drivers/mesa-hostmot2/hm2_7i43.c | 4 +- src/hal/drivers/mesa-hostmot2/hm2_7i90.c | 4 +- .../drivers/mesa-hostmot2/hostmot2-lowlevel.h | 8 +++- src/hal/drivers/mesa-hostmot2/hostmot2.c | 43 +++++++++---------- src/hal/drivers/mesa-hostmot2/pwmgen.c | 2 +- src/hal/drivers/mesa-hostmot2/tp_pwmgen.c | 2 +- src/hal/drivers/mesa-hostmot2/watchdog.c | 6 +-- 7 files changed, 36 insertions(+), 33 deletions(-) diff --git a/src/hal/drivers/mesa-hostmot2/hm2_7i43.c b/src/hal/drivers/mesa-hostmot2/hm2_7i43.c index 8571f721b6..1d36c94e94 100644 --- a/src/hal/drivers/mesa-hostmot2/hm2_7i43.c +++ b/src/hal/drivers/mesa-hostmot2/hm2_7i43.c @@ -215,7 +215,7 @@ int hm2_7i43_read(hm2_lowlevel_io_t *this, u32 addr, void *buffer, int size) { if (hm2_7i43_epp_check_for_timeout(board)) { THIS_PRINT("EPP timeout on data cycle of read(addr=0x%04x, size=%d)\n", addr, size); - (*this->io_error) = 1; + (*this->hal->pin.io_error) = 1; this->needs_reset = 1; hm2_7i43_epp_clear_timeout(board); return 0; // fail @@ -245,7 +245,7 @@ int hm2_7i43_write(hm2_lowlevel_io_t *this, u32 addr, void *buffer, int size) { if (hm2_7i43_epp_check_for_timeout(board)) { THIS_PRINT("EPP timeout on data cycle of write(addr=0x%04x, size=%d)\n", addr, size); - (*this->io_error) = 1; + (*this->hal->pin.io_error) = 1; this->needs_reset = 1; hm2_7i43_epp_clear_timeout(board); return 0; diff --git a/src/hal/drivers/mesa-hostmot2/hm2_7i90.c b/src/hal/drivers/mesa-hostmot2/hm2_7i90.c index 8075f638c2..fb5e66cf81 100644 --- a/src/hal/drivers/mesa-hostmot2/hm2_7i90.c +++ b/src/hal/drivers/mesa-hostmot2/hm2_7i90.c @@ -191,7 +191,7 @@ int hm2_7i90_read(hm2_lowlevel_io_t *this, u32 addr, void *buffer, int size) { if (hm2_7i90_epp_check_for_timeout(board)) { THIS_PRINT("EPP timeout on data cycle of read(addr=0x%04x, size=%d)\n", addr, size); - (*this->io_error) = 1; + (*this->hal->pin.io_error) = 1; this->needs_reset = 1; hm2_7i90_epp_clear_timeout(board); return 0; // fail @@ -221,7 +221,7 @@ int hm2_7i90_write(hm2_lowlevel_io_t *this, u32 addr, void *buffer, int size) { if (hm2_7i90_epp_check_for_timeout(board)) { THIS_PRINT("EPP timeout on data cycle of write(addr=0x%04x, size=%d)\n", addr, size); - (*this->io_error) = 1; + (*this->hal->pin.io_error) = 1; this->needs_reset = 1; hm2_7i90_epp_clear_timeout(board); return 0; diff --git a/src/hal/drivers/mesa-hostmot2/hostmot2-lowlevel.h b/src/hal/drivers/mesa-hostmot2/hostmot2-lowlevel.h index 2cedae713f..95b5e3b828 100644 --- a/src/hal/drivers/mesa-hostmot2/hostmot2-lowlevel.h +++ b/src/hal/drivers/mesa-hostmot2/hostmot2-lowlevel.h @@ -61,6 +61,12 @@ typedef struct hm2_lowlevel_io_struct hm2_lowlevel_io_t; +typedef struct { + struct { + hal_bit_t *io_error; + } pin; +} hm2_low_level_io_global_t; + // FIXME: this is really a lowlevel io *instance*, or maybe a "board" struct hm2_lowlevel_io_struct { char name[HAL_NAME_LEN+1]; @@ -98,7 +104,7 @@ struct hm2_lowlevel_io_struct { // hostmot2 driver call into llio to reset the hardware and start // driving it again. // - hal_bit_t *io_error; + hm2_low_level_io_global_t *hal; // this gets set to TRUE when the llio driver detects an io_error, and // by the hm2 watchdog (if present) when it detects a watchdog bite diff --git a/src/hal/drivers/mesa-hostmot2/hostmot2.c b/src/hal/drivers/mesa-hostmot2/hostmot2.c index fe56bb4724..d7ed92e93f 100755 --- a/src/hal/drivers/mesa-hostmot2/hostmot2.c +++ b/src/hal/drivers/mesa-hostmot2/hostmot2.c @@ -80,10 +80,10 @@ static int hm2_read(void *void_hm2, const hal_funct_args_t *fa) { long period = fa_current_period(fa); // if there are comm problems, wait for the user to fix it - if ((*hm2->llio->io_error) != 0) return -1; + if ((*hm2->llio->hal->pin.io_error) != 0) return -1; hm2_tram_read(hm2); - if ((*hm2->llio->io_error) != 0) return -1; + if ((*hm2->llio->hal->pin.io_error) != 0) return -1; hm2_watchdog_process_tram_read(hm2); hm2_ioport_gpio_process_tram_read(hm2); hm2_encoder_process_tram_read(hm2, &hm2->encoder, period); @@ -109,7 +109,7 @@ static int hm2_write(void *void_hm2, const hal_funct_args_t *fa) { long period = fa_current_period(fa); // if there are comm problems, wait for the user to fix it - if ((*hm2->llio->io_error) != 0) return -1; + if ((*hm2->llio->hal->pin.io_error) != 0) return -1; hm2_ioport_gpio_prepare_tram_write(hm2); hm2_pwmgen_prepare_tram_write(hm2); @@ -144,7 +144,7 @@ static int hm2_read_gpio(void *void_hm2, const hal_funct_args_t *fa) { hostmot2_t *hm2 = void_hm2; // if there are comm problems, wait for the user to fix it - if ((*hm2->llio->io_error) != 0) return -1; + if ((*hm2->llio->hal->pin.io_error) != 0) return -1; hm2_ioport_gpio_read(hm2); return 0; @@ -156,7 +156,7 @@ static int hm2_write_gpio(void *void_hm2, const hal_funct_args_t *fa) { long period = fa_current_period(fa); // if there are comm problems, wait for the user to fix it - if ((*hm2->llio->io_error) != 0) return -1; + if ((*hm2->llio->hal->pin.io_error) != 0) return -1; hm2_ioport_gpio_write(hm2); hm2_watchdog_write(hm2, period); @@ -891,7 +891,7 @@ static int hm2_parse_module_descriptors(hostmot2_t *hm2) { md_accepted = hm2_ioport_parse_md(hm2, md_index); - if ((*hm2->llio->io_error) != 0) { + if ((*hm2->llio->hal->pin.io_error) != 0) { HM2_ERR("IO error while parsing Module Descriptor %d\n", md_index); return -EIO; } @@ -1013,7 +1013,7 @@ static int hm2_parse_module_descriptors(hostmot2_t *hm2) { } - if ((*hm2->llio->io_error) != 0) { + if ((*hm2->llio->hal->pin.io_error) != 0) { HM2_ERR("IO error while parsing Module Descriptor %d\n", md_index); return -EIO; } @@ -1338,25 +1338,24 @@ int hm2_register(hm2_lowlevel_io_t *llio, char *config_string) { // { - int r; - char name[HAL_NAME_LEN + 1]; - - llio->io_error = (hal_bit_t *)hal_malloc(sizeof(hal_bit_t)); - if (llio->io_error == NULL) { + llio->hal = (hm2_low_level_io_global_t *)hal_malloc(sizeof(hm2_low_level_io_global_t)); + if (llio->hal == NULL) { HM2_ERR("out of memory!\n"); - r = -ENOMEM; - goto fail0; + return -ENOMEM; } - - (*llio->io_error) = 0; - - rtapi_snprintf(name, sizeof(name), "%s.io_error", llio->name); - r = hal_param_bit_new(name, HAL_RW, llio->io_error, llio->comp_id); + r = hal_pin_bit_newf( + HAL_IO, + &(llio->hal->pin.io_error), + llio->comp_id, + "%s.io_error", + llio->name + ); if (r < 0) { - HM2_ERR("error adding param '%s', aborting\n", name); + HM2_ERR("error %d adding pin io_error pin, aborting\n", r); r = -EINVAL; goto fail0; } + *llio->hal->pin.io_error = 0; } @@ -1614,7 +1613,7 @@ int hm2_register(hm2_lowlevel_io_t *llio, char *config_string) { // final check for comm errors // - if ((*hm2->llio->io_error) != 0) { + if ((*hm2->llio->hal->pin.io_error) != 0) { HM2_ERR("comm errors while initializing firmware!\n"); goto fail1; } @@ -1651,7 +1650,6 @@ int hm2_register(hm2_lowlevel_io_t *llio, char *config_string) { // { - int r; hal_export_xfunct_args_t read_args = { .type = FS_XTHREADFUNC, @@ -1692,7 +1690,6 @@ int hm2_register(hm2_lowlevel_io_t *llio, char *config_string) { // if (hm2->llio->threadsafe) { - int r; hal_export_xfunct_args_t read_gpio_args = { .type = FS_XTHREADFUNC, diff --git a/src/hal/drivers/mesa-hostmot2/pwmgen.c b/src/hal/drivers/mesa-hostmot2/pwmgen.c index a6ed453bcc..11ed5a463b 100755 --- a/src/hal/drivers/mesa-hostmot2/pwmgen.c +++ b/src/hal/drivers/mesa-hostmot2/pwmgen.c @@ -283,7 +283,7 @@ void hm2_pwmgen_force_write(hostmot2_t *hm2) { hm2->llio->write(hm2->llio, hm2->pwmgen.pwmgen_master_rate_dds_addr, &hm2->pwmgen.pwmgen_master_rate_dds_reg, sizeof(u32)); hm2->llio->write(hm2->llio, hm2->pwmgen.pdmgen_master_rate_dds_addr, &hm2->pwmgen.pdmgen_master_rate_dds_reg, sizeof(u32)); - if ((*hm2->llio->io_error) != 0) return; + if ((*hm2->llio->hal->pin.io_error) != 0) return; for (i = 0; i < hm2->pwmgen.num_instances; i ++) { hm2->pwmgen.instance[i].written_output_type = *hm2->pwmgen.instance[i].hal.pin.output_type; diff --git a/src/hal/drivers/mesa-hostmot2/tp_pwmgen.c b/src/hal/drivers/mesa-hostmot2/tp_pwmgen.c index 41865c4ae1..035fc141ba 100755 --- a/src/hal/drivers/mesa-hostmot2/tp_pwmgen.c +++ b/src/hal/drivers/mesa-hostmot2/tp_pwmgen.c @@ -136,7 +136,7 @@ void hm2_tp_pwmgen_force_write(hostmot2_t *hm2) { hm2->llio->write(hm2->llio, hm2->tp_pwmgen.enable_addr, hm2->tp_pwmgen.enable_reg, (hm2->tp_pwmgen.num_instances * sizeof(u32))); hm2->llio->write(hm2->llio, hm2->tp_pwmgen.pwmgen_master_rate_dds_addr, &hm2->tp_pwmgen.pwmgen_master_rate_dds_reg, sizeof(u32)); - if ((*hm2->llio->io_error) != 0) return; + if ((*hm2->llio->hal->pin.io_error) != 0) return; for (i = 0; i < hm2->tp_pwmgen.num_instances; i ++) { hm2->tp_pwmgen.instance[i].written_faultpolarity = *hm2->tp_pwmgen.instance[i].hal.pin.faultpolarity; diff --git a/src/hal/drivers/mesa-hostmot2/watchdog.c b/src/hal/drivers/mesa-hostmot2/watchdog.c index 905d475d49..0e4dd2d87e 100755 --- a/src/hal/drivers/mesa-hostmot2/watchdog.c +++ b/src/hal/drivers/mesa-hostmot2/watchdog.c @@ -52,7 +52,7 @@ void hm2_watchdog_process_tram_read(hostmot2_t *hm2) { if (hm2->watchdog.num_instances == 0) return; // if there are comm problems, wait for the user to fix it - if ((*hm2->llio->io_error) != 0) return; + if ((*hm2->llio->hal->pin.io_error) != 0) return; // if we've already noticed the board needs to be reset, don't re-read // the watchdog has-bit bit @@ -300,7 +300,7 @@ void hm2_watchdog_write(hostmot2_t *hm2, long period_ns) { if (hm2->watchdog.num_instances != 1) return; // if there are comm problems, wait for the user to fix it - if ((*hm2->llio->io_error) != 0) return; + if ((*hm2->llio->hal->pin.io_error) != 0) return; // if the watchdog has bit, wait for the user to reset it if (*hm2->watchdog.instance[0].hal.pin.has_bit) return; @@ -317,7 +317,7 @@ void hm2_watchdog_write(hostmot2_t *hm2, long period_ns) { // write all settings out to the FPGA hm2_force_write(hm2); - if ((*hm2->llio->io_error) != 0) { + if ((*hm2->llio->hal->pin.io_error) != 0) { HM2_PRINT("error recovery failed\n"); return; } From c6c0657db26b3100152c9a2988e0a89a6210f009 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Sun, 11 Nov 2018 11:05:53 +0000 Subject: [PATCH 335/516] hm2/sserial: convert params to pins --- src/hal/drivers/mesa-hostmot2/sserial.c | 36 ++++++++++++------------- src/hal/drivers/mesa-hostmot2/sserial.h | 6 ++--- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/hal/drivers/mesa-hostmot2/sserial.c b/src/hal/drivers/mesa-hostmot2/sserial.c index decfa2133f..e210bb0474 100644 --- a/src/hal/drivers/mesa-hostmot2/sserial.c +++ b/src/hal/drivers/mesa-hostmot2/sserial.c @@ -340,39 +340,39 @@ int hm2_sserial_setup_channel(hostmot2_t *hm2, hm2_sserial_instance_t *inst, int hm2->llio->name, index); return -EINVAL; } - r = hal_param_u32_newf(HAL_RW, &(inst->fault_inc), + r = hal_pin_u32_newf(HAL_IO, &(inst->fault_inc), hm2->llio->comp_id, "%s.sserial.port-%1d.fault-inc", hm2->llio->name, index); if (r < 0) { - HM2_ERR("error adding parameter %s.sserial.port-%1d.fault-inc" + HM2_ERR("error adding pin %s.sserial.port-%1d.fault-inc" " aborting\n",hm2->llio->name, index); return -EINVAL; } - r = hal_param_u32_newf(HAL_RW, &(inst->fault_dec), + r = hal_pin_u32_newf(HAL_IO, &(inst->fault_dec), hm2->llio->comp_id, "%s.sserial.port-%1d.fault-dec", hm2->llio->name, index); if (r < 0) { - HM2_ERR("error adding parameter %s.sserial.port-%1d.fault-dec" + HM2_ERR("error adding pin %s.sserial.port-%1d.fault-dec" " aborting\n",hm2->llio->name, index); return -EINVAL; } - r = hal_param_u32_newf(HAL_RW, &(inst->fault_lim), + r = hal_pin_u32_newf(HAL_IO, &(inst->fault_lim), hm2->llio->comp_id, "%s.sserial.port-%1d.fault-lim", hm2->llio->name, index); if (r < 0) { - HM2_ERR("error adding parameter %s.sserial.port-%1d.fault-lim" + HM2_ERR("error adding pin %s.sserial.port-%1d.fault-lim" " aborting\n",hm2->llio->name, index); return -EINVAL; } //parameter defaults; - inst->fault_dec = 1; - inst->fault_inc = 10; - inst->fault_lim = 200; + *inst->fault_dec = 1; + *inst->fault_inc = 10; + *inst->fault_lim = 200; // setup read-back in all modes @@ -1218,16 +1218,16 @@ void hm2_sserial_prepare_tram_write(hostmot2_t *hm2, long period){ break; } - if (*inst->fault_count > inst->fault_lim) { + if (*inst->fault_count > *inst->fault_lim) { // If there have been a large percentage of misses, for quite // a long time, it's time to take it seriously. HM2_ERR("Smart Serial Comms Error: " "There have been more than %i errors in %i " "thread executions at least %i times. " "See other error messages for details.\n", - inst->fault_dec, - inst->fault_inc, - inst->fault_lim); + *inst->fault_dec, + *inst->fault_inc, + *inst->fault_lim); HM2_ERR("***Smart Serial Port %i will be stopped***\n",i); *inst->state = 0x20; *inst->run = 0; @@ -1244,7 +1244,7 @@ void hm2_sserial_prepare_tram_write(hostmot2_t *hm2, long period){ "if this is happening frequently.\n", i, hm2->llio->name, i); } - *inst->fault_count += inst->fault_inc; + *inst->fault_count += *inst->fault_inc; *inst->command_reg_write = 0x80000000; // set bit31 for ignored cmd break; // give the register chance to clear } @@ -1259,11 +1259,11 @@ void hm2_sserial_prepare_tram_write(hostmot2_t *hm2, long period){ i, ffs(f) - 1); } } - *inst->fault_count += inst->fault_inc; + *inst->fault_count += *inst->fault_inc; } - if (*inst->fault_count > inst->fault_dec) { - *inst->fault_count -= inst->fault_dec; + if (*inst->fault_count > *inst->fault_dec) { + *inst->fault_count -= *inst->fault_dec; } else { @@ -1366,7 +1366,7 @@ void hm2_sserial_prepare_tram_write(hostmot2_t *hm2, long period){ } HM2_ERR("sserial_write:" "Timeout waiting for CMD to clear\n"); - *inst->fault_count += inst->fault_inc; + *inst->fault_count += *inst->fault_inc; // carry on, nothing much we can do about it } *inst->state &= 0x0F; diff --git a/src/hal/drivers/mesa-hostmot2/sserial.h b/src/hal/drivers/mesa-hostmot2/sserial.h index 7628339108..7a72384c45 100644 --- a/src/hal/drivers/mesa-hostmot2/sserial.h +++ b/src/hal/drivers/mesa-hostmot2/sserial.h @@ -242,9 +242,9 @@ typedef struct { u32 *data_reg_read; u32 *data_reg_write; hal_u32_t *fault_count; - hal_u32_t fault_inc; - hal_u32_t fault_dec; - hal_u32_t fault_lim; + hal_u32_t *fault_inc; + hal_u32_t *fault_dec; + hal_u32_t *fault_lim; hal_bit_t *run; hal_u32_t *state; From a10a7aa229c8a59ed3b3271128776f7791060d95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Thu, 15 Nov 2018 17:31:17 +0100 Subject: [PATCH 336/516] Squashed 'src/machinetalk/proto/' changes from 441735f0f9..6ca7c99806 6ca7c99806 Merge pull request #86 from machinekoder/fix-security 2c4db3edfd update npm package to fix security vulnerability 6c52a98b0a enable support for Python 3.6/3.7 git-subtree-dir: src/machinetalk/proto git-subtree-split: 6ca7c99806401179ece164b07dc87852bfa8df9c --- dist/machinetalk-protobuf.js | 21332 +++++++++++++---------- dist/machinetalk-protobuf.min.js | 107 +- dist/machinetalk-protobuf.min.js.gz | Bin 59564 -> 61896 bytes dist/machinetalk-protobuf.min.map.json | 2 +- package.json | 8 +- setup.py | 2 + src/machinetalk/protobuf/jplan.proto | 2 +- 7 files changed, 11936 insertions(+), 9517 deletions(-) diff --git a/dist/machinetalk-protobuf.js b/dist/machinetalk-protobuf.js index 497906699a..6bb93331be 100644 --- a/dist/machinetalk-protobuf.js +++ b/dist/machinetalk-protobuf.js @@ -1,12 +1,14 @@ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}(g.machinetalk || (g.machinetalk = {})).protobuf = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 1) { - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } - } - queue.push(new Item(fun, args)); - if (queue.length === 1 && !draining) { - setTimeout(drainQueue, 0); - } -}; - -// v8 likes predictible objects -function Item(fun, array) { - this.fun = fun; - this.array = array; -} -Item.prototype.run = function () { - this.fun.apply(null, this.array); -}; -process.title = 'browser'; -process.browser = true; -process.env = {}; -process.argv = []; -process.version = ''; // empty string to avoid regexp issues -process.versions = {}; - -function noop() {} - -process.on = noop; -process.addListener = noop; -process.once = noop; -process.off = noop; -process.removeListener = noop; -process.removeAllListeners = noop; -process.emit = noop; - -process.binding = function (name) { - throw new Error('process.binding is not supported'); -}; - -process.cwd = function () { return '/' }; -process.chdir = function (dir) { - throw new Error('process.chdir is not supported'); -}; -process.umask = function() { return 0; }; +},{"./machinetalk/protobuf/canon.js":1,"./machinetalk/protobuf/config.js":2,"./machinetalk/protobuf/emcclass.js":3,"./machinetalk/protobuf/firmware.js":4,"./machinetalk/protobuf/jplan.js":5,"./machinetalk/protobuf/log.js":6,"./machinetalk/protobuf/message.js":7,"./machinetalk/protobuf/motcmds.js":8,"./machinetalk/protobuf/nanopb.js":9,"./machinetalk/protobuf/object.js":10,"./machinetalk/protobuf/preview.js":11,"./machinetalk/protobuf/ros.js":12,"./machinetalk/protobuf/rtapi_message.js":13,"./machinetalk/protobuf/rtapicommand.js":14,"./machinetalk/protobuf/status.js":15,"./machinetalk/protobuf/task.js":16,"./machinetalk/protobuf/test.js":17,"./machinetalk/protobuf/types.js":18,"./machinetalk/protobuf/value.js":19}],21:[function(require,module,exports){ -},{}],21:[function(require,module,exports){ -(function (process){ +},{}],22:[function(require,module,exports){ /* - Copyright 2013 Daniel Wirtz + Copyright 2013-2014 Daniel Wirtz Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -33120,10053 +35184,10401 @@ process.umask = function() { return 0; }; */ /** - * @license protobuf.js (c) 2013 Daniel Wirtz + * @license bytebuffer.js (c) 2015 Daniel Wirtz + * Backing buffer: ArrayBuffer, Accessor: Uint8Array * Released under the Apache License, Version 2.0 - * see: https://github.com/dcodeIO/protobuf.js for details + * see: https://github.com/dcodeIO/bytebuffer.js for details */ (function(global, factory) { /* AMD */ if (typeof define === 'function' && define["amd"]) - define(["bytebuffer"], factory); - /* CommonJS */ else if (typeof require === "function" && typeof module === "object" && module && module["exports"]) - module["exports"] = factory(require("bytebuffer"), true); + define(["long"], factory); + /* CommonJS */ else if (typeof require === 'function' && typeof module === "object" && module && module["exports"]) + module['exports'] = (function() { + var Long; try { Long = require("long"); } catch (e) {} + return factory(Long); + })(); /* Global */ else - (global["dcodeIO"] = global["dcodeIO"] || {})["ProtoBuf"] = factory(global["dcodeIO"]["ByteBuffer"]); + (global["dcodeIO"] = global["dcodeIO"] || {})["ByteBuffer"] = factory(global["dcodeIO"]["Long"]); -})(this, function(ByteBuffer, isCommonJS) { +})(this, function(Long) { "use strict"; /** - * The ProtoBuf namespace. - * @exports ProtoBuf - * @namespace + * Constructs a new ByteBuffer. + * @class The swiss army knife for binary data in JavaScript. + * @exports ByteBuffer + * @constructor + * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}. + * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to + * {@link ByteBuffer.DEFAULT_ENDIAN}. + * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to + * {@link ByteBuffer.DEFAULT_NOASSERT}. * @expose */ - var ProtoBuf = {}; + var ByteBuffer = function(capacity, littleEndian, noAssert) { + if (typeof capacity === 'undefined') + capacity = ByteBuffer.DEFAULT_CAPACITY; + if (typeof littleEndian === 'undefined') + littleEndian = ByteBuffer.DEFAULT_ENDIAN; + if (typeof noAssert === 'undefined') + noAssert = ByteBuffer.DEFAULT_NOASSERT; + if (!noAssert) { + capacity = capacity | 0; + if (capacity < 0) + throw RangeError("Illegal capacity"); + littleEndian = !!littleEndian; + noAssert = !!noAssert; + } - /** - * @type {!function(new: ByteBuffer, ...[*])} - * @expose - */ - ProtoBuf.ByteBuffer = ByteBuffer; + /** + * Backing ArrayBuffer. + * @type {!ArrayBuffer} + * @expose + */ + this.buffer = capacity === 0 ? EMPTY_BUFFER : new ArrayBuffer(capacity); - /** - * @type {?function(new: Long, ...[*])} - * @expose - */ - ProtoBuf.Long = ByteBuffer.Long || null; + /** + * Uint8Array utilized to manipulate the backing buffer. Becomes `null` if the backing buffer has a capacity of `0`. + * @type {?Uint8Array} + * @expose + */ + this.view = capacity === 0 ? null : new Uint8Array(this.buffer); + + /** + * Absolute read/write offset. + * @type {number} + * @expose + * @see ByteBuffer#flip + * @see ByteBuffer#clear + */ + this.offset = 0; + + /** + * Marked offset. + * @type {number} + * @expose + * @see ByteBuffer#mark + * @see ByteBuffer#reset + */ + this.markedOffset = -1; + + /** + * Absolute limit of the contained data. Set to the backing buffer's capacity upon allocation. + * @type {number} + * @expose + * @see ByteBuffer#flip + * @see ByteBuffer#clear + */ + this.limit = capacity; + + /** + * Whether to use little endian byte order, defaults to `false` for big endian. + * @type {boolean} + * @expose + */ + this.littleEndian = littleEndian; + + /** + * Whether to skip assertions of offsets and values, defaults to `false`. + * @type {boolean} + * @expose + */ + this.noAssert = noAssert; + }; /** - * ProtoBuf.js version. + * ByteBuffer version. * @type {string} * @const * @expose */ - ProtoBuf.VERSION = "5.0.0"; + ByteBuffer.VERSION = "5.0.1"; /** - * Wire types. - * @type {Object.} + * Little endian constant that can be used instead of its boolean value. Evaluates to `true`. + * @type {boolean} * @const * @expose */ - ProtoBuf.WIRE_TYPES = {}; + ByteBuffer.LITTLE_ENDIAN = true; /** - * Varint wire type. - * @type {number} + * Big endian constant that can be used instead of its boolean value. Evaluates to `false`. + * @type {boolean} + * @const * @expose */ - ProtoBuf.WIRE_TYPES.VARINT = 0; + ByteBuffer.BIG_ENDIAN = false; /** - * Fixed 64 bits wire type. + * Default initial capacity of `16`. * @type {number} - * @const * @expose */ - ProtoBuf.WIRE_TYPES.BITS64 = 1; + ByteBuffer.DEFAULT_CAPACITY = 16; /** - * Length delimited wire type. - * @type {number} - * @const + * Default endianess of `false` for big endian. + * @type {boolean} * @expose */ - ProtoBuf.WIRE_TYPES.LDELIM = 2; + ByteBuffer.DEFAULT_ENDIAN = ByteBuffer.BIG_ENDIAN; /** - * Start group wire type. - * @type {number} - * @const + * Default no assertions flag of `false`. + * @type {boolean} * @expose */ - ProtoBuf.WIRE_TYPES.STARTGROUP = 3; + ByteBuffer.DEFAULT_NOASSERT = false; /** - * End group wire type. - * @type {number} + * A `Long` class for representing a 64-bit two's-complement integer value. May be `null` if Long.js has not been loaded + * and int64 support is not available. + * @type {?Long} * @const + * @see https://github.com/dcodeIO/long.js * @expose */ - ProtoBuf.WIRE_TYPES.ENDGROUP = 4; + ByteBuffer.Long = Long || null; /** - * Fixed 32 bits wire type. - * @type {number} - * @const - * @expose + * @alias ByteBuffer.prototype + * @inner */ - ProtoBuf.WIRE_TYPES.BITS32 = 5; + var ByteBufferPrototype = ByteBuffer.prototype; /** - * Packable wire types. - * @type {!Array.} + * An indicator used to reliably determine if an object is a ByteBuffer or not. + * @type {boolean} * @const * @expose + * @private */ - ProtoBuf.PACKABLE_WIRE_TYPES = [ - ProtoBuf.WIRE_TYPES.VARINT, - ProtoBuf.WIRE_TYPES.BITS64, - ProtoBuf.WIRE_TYPES.BITS32 - ]; + ByteBufferPrototype.__isByteBuffer__; + + Object.defineProperty(ByteBufferPrototype, "__isByteBuffer__", { + value: true, + enumerable: false, + configurable: false + }); + + // helpers /** - * Types. - * @dict - * @type {!Object.} - * @const - * @expose + * @type {!ArrayBuffer} + * @inner */ - ProtoBuf.TYPES = { - // According to the protobuf spec. - "int32": { - name: "int32", - wireType: ProtoBuf.WIRE_TYPES.VARINT, - defaultValue: 0 - }, - "uint32": { - name: "uint32", - wireType: ProtoBuf.WIRE_TYPES.VARINT, - defaultValue: 0 - }, - "sint32": { - name: "sint32", - wireType: ProtoBuf.WIRE_TYPES.VARINT, - defaultValue: 0 - }, - "int64": { - name: "int64", - wireType: ProtoBuf.WIRE_TYPES.VARINT, - defaultValue: ProtoBuf.Long ? ProtoBuf.Long.ZERO : undefined - }, - "uint64": { - name: "uint64", - wireType: ProtoBuf.WIRE_TYPES.VARINT, - defaultValue: ProtoBuf.Long ? ProtoBuf.Long.UZERO : undefined - }, - "sint64": { - name: "sint64", - wireType: ProtoBuf.WIRE_TYPES.VARINT, - defaultValue: ProtoBuf.Long ? ProtoBuf.Long.ZERO : undefined - }, - "bool": { - name: "bool", - wireType: ProtoBuf.WIRE_TYPES.VARINT, - defaultValue: false - }, - "double": { - name: "double", - wireType: ProtoBuf.WIRE_TYPES.BITS64, - defaultValue: 0 - }, - "string": { - name: "string", - wireType: ProtoBuf.WIRE_TYPES.LDELIM, - defaultValue: "" - }, - "bytes": { - name: "bytes", - wireType: ProtoBuf.WIRE_TYPES.LDELIM, - defaultValue: null // overridden in the code, must be a unique instance - }, - "fixed32": { - name: "fixed32", - wireType: ProtoBuf.WIRE_TYPES.BITS32, - defaultValue: 0 - }, - "sfixed32": { - name: "sfixed32", - wireType: ProtoBuf.WIRE_TYPES.BITS32, - defaultValue: 0 - }, - "fixed64": { - name: "fixed64", - wireType: ProtoBuf.WIRE_TYPES.BITS64, - defaultValue: ProtoBuf.Long ? ProtoBuf.Long.UZERO : undefined - }, - "sfixed64": { - name: "sfixed64", - wireType: ProtoBuf.WIRE_TYPES.BITS64, - defaultValue: ProtoBuf.Long ? ProtoBuf.Long.ZERO : undefined - }, - "float": { - name: "float", - wireType: ProtoBuf.WIRE_TYPES.BITS32, - defaultValue: 0 - }, - "enum": { - name: "enum", - wireType: ProtoBuf.WIRE_TYPES.VARINT, - defaultValue: 0 - }, - "message": { - name: "message", - wireType: ProtoBuf.WIRE_TYPES.LDELIM, - defaultValue: null - }, - "group": { - name: "group", - wireType: ProtoBuf.WIRE_TYPES.STARTGROUP, - defaultValue: null - } - }; + var EMPTY_BUFFER = new ArrayBuffer(0); /** - * Valid map key types. - * @type {!Array.>} - * @const - * @expose + * String.fromCharCode reference for compile-time renaming. + * @type {function(...number):string} + * @inner */ - ProtoBuf.MAP_KEY_TYPES = [ - ProtoBuf.TYPES["int32"], - ProtoBuf.TYPES["sint32"], - ProtoBuf.TYPES["sfixed32"], - ProtoBuf.TYPES["uint32"], - ProtoBuf.TYPES["fixed32"], - ProtoBuf.TYPES["int64"], - ProtoBuf.TYPES["sint64"], - ProtoBuf.TYPES["sfixed64"], - ProtoBuf.TYPES["uint64"], - ProtoBuf.TYPES["fixed64"], - ProtoBuf.TYPES["bool"], - ProtoBuf.TYPES["string"], - ProtoBuf.TYPES["bytes"] - ]; + var stringFromCharCode = String.fromCharCode; /** - * Minimum field id. - * @type {number} - * @const - * @expose + * Creates a source function for a string. + * @param {string} s String to read from + * @returns {function():number|null} Source function returning the next char code respectively `null` if there are + * no more characters left. + * @throws {TypeError} If the argument is invalid + * @inner */ - ProtoBuf.ID_MIN = 1; + function stringSource(s) { + var i=0; return function() { + return i < s.length ? s.charCodeAt(i++) : null; + }; + } /** - * Maximum field id. - * @type {number} - * @const - * @expose + * Creates a destination function for a string. + * @returns {function(number=):undefined|string} Destination function successively called with the next char code. + * Returns the final string when called without arguments. + * @inner */ - ProtoBuf.ID_MAX = 0x1FFFFFFF; + function stringDestination() { + var cs = [], ps = []; return function() { + if (arguments.length === 0) + return ps.join('')+stringFromCharCode.apply(String, cs); + if (cs.length + arguments.length > 1024) + ps.push(stringFromCharCode.apply(String, cs)), + cs.length = 0; + Array.prototype.push.apply(cs, arguments); + }; + } /** - * If set to `true`, field names will be converted from underscore notation to camel case. Defaults to `false`. - * Must be set prior to parsing. - * @type {boolean} + * Gets the accessor type. + * @returns {Function} `Buffer` under node.js, `Uint8Array` respectively `DataView` in the browser (classes) * @expose */ - ProtoBuf.convertFieldsToCamelCase = false; - + ByteBuffer.accessor = function() { + return Uint8Array; + }; /** - * By default, messages are populated with (setX, set_x) accessors for each field. This can be disabled by - * setting this to `false` prior to building messages. - * @type {boolean} + * Allocates a new ByteBuffer backed by a buffer of the specified capacity. + * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}. + * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to + * {@link ByteBuffer.DEFAULT_ENDIAN}. + * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to + * {@link ByteBuffer.DEFAULT_NOASSERT}. + * @returns {!ByteBuffer} * @expose */ - ProtoBuf.populateAccessors = true; + ByteBuffer.allocate = function(capacity, littleEndian, noAssert) { + return new ByteBuffer(capacity, littleEndian, noAssert); + }; /** - * By default, messages are populated with default values if a field is not present on the wire. To disable - * this behavior, set this setting to `false`. - * @type {boolean} + * Concatenates multiple ByteBuffers into one. + * @param {!Array.} buffers Buffers to concatenate + * @param {(string|boolean)=} encoding String encoding if `buffers` contains a string ("base64", "hex", "binary", + * defaults to "utf8") + * @param {boolean=} littleEndian Whether to use little or big endian byte order for the resulting ByteBuffer. Defaults + * to {@link ByteBuffer.DEFAULT_ENDIAN}. + * @param {boolean=} noAssert Whether to skip assertions of offsets and values for the resulting ByteBuffer. Defaults to + * {@link ByteBuffer.DEFAULT_NOASSERT}. + * @returns {!ByteBuffer} Concatenated ByteBuffer * @expose */ - ProtoBuf.populateDefaults = true; - - /** - * @alias ProtoBuf.Util - * @expose - */ - ProtoBuf.Util = (function() { - "use strict"; - - /** - * ProtoBuf utilities. - * @exports ProtoBuf.Util - * @namespace - */ - var Util = {}; - - /** - * Flag if running in node or not. - * @type {boolean} - * @const - * @expose - */ - Util.IS_NODE = !!( - typeof process === 'object' && process+'' === '[object process]' && !process['browser'] - ); - - /** - * Constructs a XMLHttpRequest object. - * @return {XMLHttpRequest} - * @throws {Error} If XMLHttpRequest is not supported - * @expose - */ - Util.XHR = function() { - // No dependencies please, ref: http://www.quirksmode.org/js/xmlhttp.html - var XMLHttpFactories = [ - function () {return new XMLHttpRequest()}, - function () {return new ActiveXObject("Msxml2.XMLHTTP")}, - function () {return new ActiveXObject("Msxml3.XMLHTTP")}, - function () {return new ActiveXObject("Microsoft.XMLHTTP")} - ]; - /** @type {?XMLHttpRequest} */ - var xhr = null; - for (var i=0;i 0) capacity += length; + } + if (capacity === 0) + return new ByteBuffer(0, littleEndian, noAssert); + var bb = new ByteBuffer(capacity, littleEndian, noAssert), + bi; + i=0; while (i} - * @expose + * Tests if the specified type is a ByteBuffer. + * @param {*} bb ByteBuffer to test + * @returns {boolean} `true` if it is a ByteBuffer, otherwise `false` + * @expose */ - ProtoBuf.Lang = { - - // Characters always ending a statement - DELIM: /[\s\{\}=;:\[\],'"\(\)<>]/g, - - // Field rules - RULE: /^(?:required|optional|repeated|map)$/, - - // Field types - TYPE: /^(?:double|float|int32|uint32|sint32|int64|uint64|sint64|fixed32|sfixed32|fixed64|sfixed64|bool|string|bytes)$/, + ByteBuffer.isByteBuffer = function(bb) { + return (bb && bb["__isByteBuffer__"]) === true; + }; + /** + * Gets the backing buffer type. + * @returns {Function} `Buffer` under node.js, `ArrayBuffer` in the browser (classes) + * @expose + */ + ByteBuffer.type = function() { + return ArrayBuffer; + }; + /** + * Wraps a buffer or a string. Sets the allocated ByteBuffer's {@link ByteBuffer#offset} to `0` and its + * {@link ByteBuffer#limit} to the length of the wrapped data. + * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string|!Array.} buffer Anything that can be wrapped + * @param {(string|boolean)=} encoding String encoding if `buffer` is a string ("base64", "hex", "binary", defaults to + * "utf8") + * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to + * {@link ByteBuffer.DEFAULT_ENDIAN}. + * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to + * {@link ByteBuffer.DEFAULT_NOASSERT}. + * @returns {!ByteBuffer} A ByteBuffer wrapping `buffer` + * @expose + */ + ByteBuffer.wrap = function(buffer, encoding, littleEndian, noAssert) { + if (typeof encoding !== 'string') { + noAssert = littleEndian; + littleEndian = encoding; + encoding = undefined; + } + if (typeof buffer === 'string') { + if (typeof encoding === 'undefined') + encoding = "utf8"; + switch (encoding) { + case "base64": + return ByteBuffer.fromBase64(buffer, littleEndian); + case "hex": + return ByteBuffer.fromHex(buffer, littleEndian); + case "binary": + return ByteBuffer.fromBinary(buffer, littleEndian); + case "utf8": + return ByteBuffer.fromUTF8(buffer, littleEndian); + case "debug": + return ByteBuffer.fromDebug(buffer, littleEndian); + default: + throw Error("Unsupported encoding: "+encoding); + } + } + if (buffer === null || typeof buffer !== 'object') + throw TypeError("Illegal buffer"); + var bb; + if (ByteBuffer.isByteBuffer(buffer)) { + bb = ByteBufferPrototype.clone.call(buffer); + bb.markedOffset = -1; + return bb; + } + if (buffer instanceof Uint8Array) { // Extract ArrayBuffer from Uint8Array + bb = new ByteBuffer(0, littleEndian, noAssert); + if (buffer.length > 0) { // Avoid references to more than one EMPTY_BUFFER + bb.buffer = buffer.buffer; + bb.offset = buffer.byteOffset; + bb.limit = buffer.byteOffset + buffer.byteLength; + bb.view = new Uint8Array(buffer.buffer); + } + } else if (buffer instanceof ArrayBuffer) { // Reuse ArrayBuffer + bb = new ByteBuffer(0, littleEndian, noAssert); + if (buffer.byteLength > 0) { + bb.buffer = buffer; + bb.offset = 0; + bb.limit = buffer.byteLength; + bb.view = buffer.byteLength > 0 ? new Uint8Array(buffer) : null; + } + } else if (Object.prototype.toString.call(buffer) === "[object Array]") { // Create from octets + bb = new ByteBuffer(buffer.length, littleEndian, noAssert); + bb.limit = buffer.length; + for (var i=0; i} value Array of booleans to write + * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted. + * @returns {!ByteBuffer} + * @expose + */ + ByteBufferPrototype.writeBitSet = function(value, offset) { + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (!(value instanceof Array)) + throw TypeError("Illegal BitSet: Not an array"); + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 0 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); + } + + var start = offset, + bits = value.length, + bytes = (bits >> 3), + bit = 0, + k; + + offset += this.writeVarint32(bits,offset); + + while(bytes--) { + k = (!!value[bit++] & 1) | + ((!!value[bit++] & 1) << 1) | + ((!!value[bit++] & 1) << 2) | + ((!!value[bit++] & 1) << 3) | + ((!!value[bit++] & 1) << 4) | + ((!!value[bit++] & 1) << 5) | + ((!!value[bit++] & 1) << 6) | + ((!!value[bit++] & 1) << 7); + this.writeByte(k,offset++); + } + + if(bit < bits) { + var m = 0; k = 0; + while(bit < bits) k = k | ((!!value[bit++] & 1) << (m++)); + this.writeByte(k,offset++); + } + + if (relative) { + this.offset = offset; + return this; + } + return offset - start; + } - // Type definitions - TYPEDEF: /^[a-zA-Z][a-zA-Z_0-9]*$/, + /** + * Reads a BitSet as an array of booleans. + * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted. + * @returns {Array + * @expose + */ + ByteBufferPrototype.readBitSet = function(offset) { + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + + var ret = this.readVarint32(offset), + bits = ret.value, + bytes = (bits >> 3), + bit = 0, + value = [], + k; + + offset += ret.length; + + while(bytes--) { + k = this.readByte(offset++); + value[bit++] = !!(k & 0x01); + value[bit++] = !!(k & 0x02); + value[bit++] = !!(k & 0x04); + value[bit++] = !!(k & 0x08); + value[bit++] = !!(k & 0x10); + value[bit++] = !!(k & 0x20); + value[bit++] = !!(k & 0x40); + value[bit++] = !!(k & 0x80); + } + + if(bit < bits) { + var m = 0; + k = this.readByte(offset++); + while(bit < bits) value[bit++] = !!((k >> (m++)) & 1); + } + + if (relative) { + this.offset = offset; + } + return value; + } + /** + * Reads the specified number of bytes. + * @param {number} length Number of bytes to read + * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted. + * @returns {!ByteBuffer} + * @expose + */ + ByteBufferPrototype.readBytes = function(length, offset) { + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + length > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+length+") <= "+this.buffer.byteLength); + } + var slice = this.slice(offset, offset + length); + if (relative) this.offset += length; + return slice; + }; - // Type references - TYPEREF: /^(?:\.?[a-zA-Z_][a-zA-Z_0-9]*)+$/, + /** + * Writes a payload of bytes. This is an alias of {@link ByteBuffer#append}. + * @function + * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to write. If `source` is a ByteBuffer, its offsets + * will be modified according to the performed read operation. + * @param {(string|number)=} encoding Encoding if `data` is a string ("base64", "hex", "binary", defaults to "utf8") + * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes + * written if omitted. + * @returns {!ByteBuffer} this + * @expose + */ + ByteBufferPrototype.writeBytes = ByteBufferPrototype.append; - // Fully qualified type references - FQTYPEREF: /^(?:\.[a-zA-Z][a-zA-Z_0-9]*)+$/, + // types/ints/int8 - // All numbers - NUMBER: /^-?(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+|([0-9]*(\.[0-9]*)?([Ee][+-]?[0-9]+)?)|inf|nan)$/, + /** + * Writes an 8bit signed integer. + * @param {number} value Value to write + * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted. + * @returns {!ByteBuffer} this + * @expose + */ + ByteBufferPrototype.writeInt8 = function(value, offset) { + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (typeof value !== 'number' || value % 1 !== 0) + throw TypeError("Illegal value: "+value+" (not an integer)"); + value |= 0; + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 0 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); + } + offset += 1; + var capacity0 = this.buffer.byteLength; + if (offset > capacity0) + this.resize((capacity0 *= 2) > offset ? capacity0 : offset); + offset -= 1; + this.view[offset] = value; + if (relative) this.offset += 1; + return this; + }; - // Decimal numbers - NUMBER_DEC: /^(?:[1-9][0-9]*|0)$/, + /** + * Writes an 8bit signed integer. This is an alias of {@link ByteBuffer#writeInt8}. + * @function + * @param {number} value Value to write + * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted. + * @returns {!ByteBuffer} this + * @expose + */ + ByteBufferPrototype.writeByte = ByteBufferPrototype.writeInt8; - // Hexadecimal numbers - NUMBER_HEX: /^0[xX][0-9a-fA-F]+$/, + /** + * Reads an 8bit signed integer. + * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted. + * @returns {number} Value read + * @expose + */ + ByteBufferPrototype.readInt8 = function(offset) { + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 1 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+1+") <= "+this.buffer.byteLength); + } + var value = this.view[offset]; + if ((value & 0x80) === 0x80) value = -(0xFF - value + 1); // Cast to signed + if (relative) this.offset += 1; + return value; + }; - // Octal numbers - NUMBER_OCT: /^0[0-7]+$/, + /** + * Reads an 8bit signed integer. This is an alias of {@link ByteBuffer#readInt8}. + * @function + * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted. + * @returns {number} Value read + * @expose + */ + ByteBufferPrototype.readByte = ByteBufferPrototype.readInt8; - // Floating point numbers - NUMBER_FLT: /^([0-9]*(\.[0-9]*)?([Ee][+-]?[0-9]+)?|inf|nan)$/, + /** + * Writes an 8bit unsigned integer. + * @param {number} value Value to write + * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted. + * @returns {!ByteBuffer} this + * @expose + */ + ByteBufferPrototype.writeUint8 = function(value, offset) { + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (typeof value !== 'number' || value % 1 !== 0) + throw TypeError("Illegal value: "+value+" (not an integer)"); + value >>>= 0; + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 0 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); + } + offset += 1; + var capacity1 = this.buffer.byteLength; + if (offset > capacity1) + this.resize((capacity1 *= 2) > offset ? capacity1 : offset); + offset -= 1; + this.view[offset] = value; + if (relative) this.offset += 1; + return this; + }; - // Booleans - BOOL: /^(?:true|false)$/i, + /** + * Writes an 8bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint8}. + * @function + * @param {number} value Value to write + * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted. + * @returns {!ByteBuffer} this + * @expose + */ + ByteBufferPrototype.writeUInt8 = ByteBufferPrototype.writeUint8; - // Id numbers - ID: /^(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+)$/, + /** + * Reads an 8bit unsigned integer. + * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted. + * @returns {number} Value read + * @expose + */ + ByteBufferPrototype.readUint8 = function(offset) { + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 1 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+1+") <= "+this.buffer.byteLength); + } + var value = this.view[offset]; + if (relative) this.offset += 1; + return value; + }; - // Negative id numbers (enum values) - NEGID: /^\-?(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+)$/, + /** + * Reads an 8bit unsigned integer. This is an alias of {@link ByteBuffer#readUint8}. + * @function + * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted. + * @returns {number} Value read + * @expose + */ + ByteBufferPrototype.readUInt8 = ByteBufferPrototype.readUint8; - // Whitespaces - WHITESPACE: /\s/, + // types/ints/int16 - // All strings - STRING: /(?:"([^"\\]*(?:\\.[^"\\]*)*)")|(?:'([^'\\]*(?:\\.[^'\\]*)*)')/g, + /** + * Writes a 16bit signed integer. + * @param {number} value Value to write + * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted. + * @throws {TypeError} If `offset` or `value` is not a valid number + * @throws {RangeError} If `offset` is out of bounds + * @expose + */ + ByteBufferPrototype.writeInt16 = function(value, offset) { + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (typeof value !== 'number' || value % 1 !== 0) + throw TypeError("Illegal value: "+value+" (not an integer)"); + value |= 0; + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 0 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); + } + offset += 2; + var capacity2 = this.buffer.byteLength; + if (offset > capacity2) + this.resize((capacity2 *= 2) > offset ? capacity2 : offset); + offset -= 2; + if (this.littleEndian) { + this.view[offset+1] = (value & 0xFF00) >>> 8; + this.view[offset ] = value & 0x00FF; + } else { + this.view[offset] = (value & 0xFF00) >>> 8; + this.view[offset+1] = value & 0x00FF; + } + if (relative) this.offset += 2; + return this; + }; - // Double quoted strings - STRING_DQ: /(?:"([^"\\]*(?:\\.[^"\\]*)*)")/g, + /** + * Writes a 16bit signed integer. This is an alias of {@link ByteBuffer#writeInt16}. + * @function + * @param {number} value Value to write + * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted. + * @throws {TypeError} If `offset` or `value` is not a valid number + * @throws {RangeError} If `offset` is out of bounds + * @expose + */ + ByteBufferPrototype.writeShort = ByteBufferPrototype.writeInt16; - // Single quoted strings - STRING_SQ: /(?:'([^'\\]*(?:\\.[^'\\]*)*)')/g + /** + * Reads a 16bit signed integer. + * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted. + * @returns {number} Value read + * @throws {TypeError} If `offset` is not a valid number + * @throws {RangeError} If `offset` is out of bounds + * @expose + */ + ByteBufferPrototype.readInt16 = function(offset) { + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 2 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+2+") <= "+this.buffer.byteLength); + } + var value = 0; + if (this.littleEndian) { + value = this.view[offset ]; + value |= this.view[offset+1] << 8; + } else { + value = this.view[offset ] << 8; + value |= this.view[offset+1]; + } + if ((value & 0x8000) === 0x8000) value = -(0xFFFF - value + 1); // Cast to signed + if (relative) this.offset += 2; + return value; }; /** - * @alias ProtoBuf.DotProto + * Reads a 16bit signed integer. This is an alias of {@link ByteBuffer#readInt16}. + * @function + * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted. + * @returns {number} Value read + * @throws {TypeError} If `offset` is not a valid number + * @throws {RangeError} If `offset` is out of bounds * @expose */ - ProtoBuf.DotProto = (function(ProtoBuf, Lang) { - "use strict"; + ByteBufferPrototype.readShort = ByteBufferPrototype.readInt16; - /** - * Utilities to parse .proto files. - * @exports ProtoBuf.DotProto - * @namespace - */ - var DotProto = {}; + /** + * Writes a 16bit unsigned integer. + * @param {number} value Value to write + * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted. + * @throws {TypeError} If `offset` or `value` is not a valid number + * @throws {RangeError} If `offset` is out of bounds + * @expose + */ + ByteBufferPrototype.writeUint16 = function(value, offset) { + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (typeof value !== 'number' || value % 1 !== 0) + throw TypeError("Illegal value: "+value+" (not an integer)"); + value >>>= 0; + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 0 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); + } + offset += 2; + var capacity3 = this.buffer.byteLength; + if (offset > capacity3) + this.resize((capacity3 *= 2) > offset ? capacity3 : offset); + offset -= 2; + if (this.littleEndian) { + this.view[offset+1] = (value & 0xFF00) >>> 8; + this.view[offset ] = value & 0x00FF; + } else { + this.view[offset] = (value & 0xFF00) >>> 8; + this.view[offset+1] = value & 0x00FF; + } + if (relative) this.offset += 2; + return this; + }; - /** - * Constructs a new Tokenizer. - * @exports ProtoBuf.DotProto.Tokenizer - * @class prototype tokenizer - * @param {string} proto Proto to tokenize - * @constructor - */ - var Tokenizer = function(proto) { + /** + * Writes a 16bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint16}. + * @function + * @param {number} value Value to write + * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted. + * @throws {TypeError} If `offset` or `value` is not a valid number + * @throws {RangeError} If `offset` is out of bounds + * @expose + */ + ByteBufferPrototype.writeUInt16 = ByteBufferPrototype.writeUint16; - /** - * Source to parse. - * @type {string} - * @expose - */ - this.source = proto+""; + /** + * Reads a 16bit unsigned integer. + * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted. + * @returns {number} Value read + * @throws {TypeError} If `offset` is not a valid number + * @throws {RangeError} If `offset` is out of bounds + * @expose + */ + ByteBufferPrototype.readUint16 = function(offset) { + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 2 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+2+") <= "+this.buffer.byteLength); + } + var value = 0; + if (this.littleEndian) { + value = this.view[offset ]; + value |= this.view[offset+1] << 8; + } else { + value = this.view[offset ] << 8; + value |= this.view[offset+1]; + } + if (relative) this.offset += 2; + return value; + }; - /** - * Current index. - * @type {number} - * @expose - */ - this.index = 0; + /** + * Reads a 16bit unsigned integer. This is an alias of {@link ByteBuffer#readUint16}. + * @function + * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted. + * @returns {number} Value read + * @throws {TypeError} If `offset` is not a valid number + * @throws {RangeError} If `offset` is out of bounds + * @expose + */ + ByteBufferPrototype.readUInt16 = ByteBufferPrototype.readUint16; - /** - * Current line. - * @type {number} - * @expose - */ - this.line = 1; + // types/ints/int32 - /** - * Token stack. - * @type {!Array.} - * @expose - */ - this.stack = []; + /** + * Writes a 32bit signed integer. + * @param {number} value Value to write + * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. + * @expose + */ + ByteBufferPrototype.writeInt32 = function(value, offset) { + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (typeof value !== 'number' || value % 1 !== 0) + throw TypeError("Illegal value: "+value+" (not an integer)"); + value |= 0; + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 0 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); + } + offset += 4; + var capacity4 = this.buffer.byteLength; + if (offset > capacity4) + this.resize((capacity4 *= 2) > offset ? capacity4 : offset); + offset -= 4; + if (this.littleEndian) { + this.view[offset+3] = (value >>> 24) & 0xFF; + this.view[offset+2] = (value >>> 16) & 0xFF; + this.view[offset+1] = (value >>> 8) & 0xFF; + this.view[offset ] = value & 0xFF; + } else { + this.view[offset ] = (value >>> 24) & 0xFF; + this.view[offset+1] = (value >>> 16) & 0xFF; + this.view[offset+2] = (value >>> 8) & 0xFF; + this.view[offset+3] = value & 0xFF; + } + if (relative) this.offset += 4; + return this; + }; - /** - * Opening character of the current string read, if any. - * @type {?string} - * @private - */ - this._stringOpen = null; - }; + /** + * Writes a 32bit signed integer. This is an alias of {@link ByteBuffer#writeInt32}. + * @param {number} value Value to write + * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. + * @expose + */ + ByteBufferPrototype.writeInt = ByteBufferPrototype.writeInt32; - /** - * @alias ProtoBuf.DotProto.Tokenizer.prototype - * @inner - */ - var TokenizerPrototype = Tokenizer.prototype; + /** + * Reads a 32bit signed integer. + * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. + * @returns {number} Value read + * @expose + */ + ByteBufferPrototype.readInt32 = function(offset) { + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 4 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+4+") <= "+this.buffer.byteLength); + } + var value = 0; + if (this.littleEndian) { + value = this.view[offset+2] << 16; + value |= this.view[offset+1] << 8; + value |= this.view[offset ]; + value += this.view[offset+3] << 24 >>> 0; + } else { + value = this.view[offset+1] << 16; + value |= this.view[offset+2] << 8; + value |= this.view[offset+3]; + value += this.view[offset ] << 24 >>> 0; + } + value |= 0; // Cast to signed + if (relative) this.offset += 4; + return value; + }; - /** - * Reads a string beginning at the current index. - * @return {string} - * @private - */ - TokenizerPrototype._readString = function() { - var re = this._stringOpen === '"' - ? Lang.STRING_DQ - : Lang.STRING_SQ; - re.lastIndex = this.index - 1; // Include the open quote - var match = re.exec(this.source); - if (!match) - throw Error("unterminated string"); - this.index = re.lastIndex; - this.stack.push(this._stringOpen); - this._stringOpen = null; - return match[1]; - }; + /** + * Reads a 32bit signed integer. This is an alias of {@link ByteBuffer#readInt32}. + * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `4` if omitted. + * @returns {number} Value read + * @expose + */ + ByteBufferPrototype.readInt = ByteBufferPrototype.readInt32; - /** - * Gets the next token and advances by one. - * @return {?string} Token or `null` on EOF - * @expose - */ - TokenizerPrototype.next = function() { - if (this.stack.length > 0) - return this.stack.shift(); - if (this.index >= this.source.length) - return null; - if (this._stringOpen !== null) - return this._readString(); + /** + * Writes a 32bit unsigned integer. + * @param {number} value Value to write + * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. + * @expose + */ + ByteBufferPrototype.writeUint32 = function(value, offset) { + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (typeof value !== 'number' || value % 1 !== 0) + throw TypeError("Illegal value: "+value+" (not an integer)"); + value >>>= 0; + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 0 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); + } + offset += 4; + var capacity5 = this.buffer.byteLength; + if (offset > capacity5) + this.resize((capacity5 *= 2) > offset ? capacity5 : offset); + offset -= 4; + if (this.littleEndian) { + this.view[offset+3] = (value >>> 24) & 0xFF; + this.view[offset+2] = (value >>> 16) & 0xFF; + this.view[offset+1] = (value >>> 8) & 0xFF; + this.view[offset ] = value & 0xFF; + } else { + this.view[offset ] = (value >>> 24) & 0xFF; + this.view[offset+1] = (value >>> 16) & 0xFF; + this.view[offset+2] = (value >>> 8) & 0xFF; + this.view[offset+3] = value & 0xFF; + } + if (relative) this.offset += 4; + return this; + }; - var repeat, - prev, - next; - do { - repeat = false; + /** + * Writes a 32bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint32}. + * @function + * @param {number} value Value to write + * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. + * @expose + */ + ByteBufferPrototype.writeUInt32 = ByteBufferPrototype.writeUint32; - // Strip white spaces - while (Lang.WHITESPACE.test(next = this.source.charAt(this.index))) { - if (next === '\n') - ++this.line; - if (++this.index === this.source.length) - return null; - } + /** + * Reads a 32bit unsigned integer. + * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. + * @returns {number} Value read + * @expose + */ + ByteBufferPrototype.readUint32 = function(offset) { + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 4 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+4+") <= "+this.buffer.byteLength); + } + var value = 0; + if (this.littleEndian) { + value = this.view[offset+2] << 16; + value |= this.view[offset+1] << 8; + value |= this.view[offset ]; + value += this.view[offset+3] << 24 >>> 0; + } else { + value = this.view[offset+1] << 16; + value |= this.view[offset+2] << 8; + value |= this.view[offset+3]; + value += this.view[offset ] << 24 >>> 0; + } + if (relative) this.offset += 4; + return value; + }; - // Strip comments - if (this.source.charAt(this.index) === '/') { - ++this.index; - if (this.source.charAt(this.index) === '/') { // Line - while (this.source.charAt(++this.index) !== '\n') - if (this.index == this.source.length) - return null; - ++this.index; - ++this.line; - repeat = true; - } else if ((next = this.source.charAt(this.index)) === '*') { /* Block */ - do { - if (next === '\n') - ++this.line; - if (++this.index === this.source.length) - return null; - prev = next; - next = this.source.charAt(this.index); - } while (prev !== '*' || next !== '/'); - ++this.index; - repeat = true; - } else - return '/'; - } - } while (repeat); + /** + * Reads a 32bit unsigned integer. This is an alias of {@link ByteBuffer#readUint32}. + * @function + * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. + * @returns {number} Value read + * @expose + */ + ByteBufferPrototype.readUInt32 = ByteBufferPrototype.readUint32; - if (this.index === this.source.length) - return null; + // types/ints/int64 - // Read the next token - var end = this.index; - Lang.DELIM.lastIndex = 0; - var delim = Lang.DELIM.test(this.source.charAt(end++)); - if (!delim) - while(end < this.source.length && !Lang.DELIM.test(this.source.charAt(end))) - ++end; - var token = this.source.substring(this.index, this.index = end); - if (token === '"' || token === "'") - this._stringOpen = token; - return token; - }; + if (Long) { /** - * Peeks for the next token. - * @return {?string} Token or `null` on EOF + * Writes a 64bit signed integer. + * @param {number|!Long} value Value to write + * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted. + * @returns {!ByteBuffer} this * @expose */ - TokenizerPrototype.peek = function() { - if (this.stack.length === 0) { - var token = this.next(); - if (token === null) - return null; - this.stack.push(token); + ByteBufferPrototype.writeInt64 = function(value, offset) { + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (typeof value === 'number') + value = Long.fromNumber(value); + else if (typeof value === 'string') + value = Long.fromString(value); + else if (!(value && value instanceof Long)) + throw TypeError("Illegal value: "+value+" (not an integer or Long)"); + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 0 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); } - return this.stack[0]; + if (typeof value === 'number') + value = Long.fromNumber(value); + else if (typeof value === 'string') + value = Long.fromString(value); + offset += 8; + var capacity6 = this.buffer.byteLength; + if (offset > capacity6) + this.resize((capacity6 *= 2) > offset ? capacity6 : offset); + offset -= 8; + var lo = value.low, + hi = value.high; + if (this.littleEndian) { + this.view[offset+3] = (lo >>> 24) & 0xFF; + this.view[offset+2] = (lo >>> 16) & 0xFF; + this.view[offset+1] = (lo >>> 8) & 0xFF; + this.view[offset ] = lo & 0xFF; + offset += 4; + this.view[offset+3] = (hi >>> 24) & 0xFF; + this.view[offset+2] = (hi >>> 16) & 0xFF; + this.view[offset+1] = (hi >>> 8) & 0xFF; + this.view[offset ] = hi & 0xFF; + } else { + this.view[offset ] = (hi >>> 24) & 0xFF; + this.view[offset+1] = (hi >>> 16) & 0xFF; + this.view[offset+2] = (hi >>> 8) & 0xFF; + this.view[offset+3] = hi & 0xFF; + offset += 4; + this.view[offset ] = (lo >>> 24) & 0xFF; + this.view[offset+1] = (lo >>> 16) & 0xFF; + this.view[offset+2] = (lo >>> 8) & 0xFF; + this.view[offset+3] = lo & 0xFF; + } + if (relative) this.offset += 8; + return this; }; /** - * Skips a specific token and throws if it differs. - * @param {string} expected Expected token - * @throws {Error} If the actual token differs + * Writes a 64bit signed integer. This is an alias of {@link ByteBuffer#writeInt64}. + * @param {number|!Long} value Value to write + * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted. + * @returns {!ByteBuffer} this + * @expose */ - TokenizerPrototype.skip = function(expected) { - var actual = this.next(); - if (actual !== expected) - throw Error("illegal '"+actual+"', '"+expected+"' expected"); - }; + ByteBufferPrototype.writeLong = ByteBufferPrototype.writeInt64; /** - * Omits an optional token. - * @param {string} expected Expected optional token - * @returns {boolean} `true` if the token exists + * Reads a 64bit signed integer. + * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted. + * @returns {!Long} + * @expose */ - TokenizerPrototype.omit = function(expected) { - if (this.peek() === expected) { - this.next(); - return true; + ByteBufferPrototype.readInt64 = function(offset) { + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 8 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+8+") <= "+this.buffer.byteLength); } - return false; + var lo = 0, + hi = 0; + if (this.littleEndian) { + lo = this.view[offset+2] << 16; + lo |= this.view[offset+1] << 8; + lo |= this.view[offset ]; + lo += this.view[offset+3] << 24 >>> 0; + offset += 4; + hi = this.view[offset+2] << 16; + hi |= this.view[offset+1] << 8; + hi |= this.view[offset ]; + hi += this.view[offset+3] << 24 >>> 0; + } else { + hi = this.view[offset+1] << 16; + hi |= this.view[offset+2] << 8; + hi |= this.view[offset+3]; + hi += this.view[offset ] << 24 >>> 0; + offset += 4; + lo = this.view[offset+1] << 16; + lo |= this.view[offset+2] << 8; + lo |= this.view[offset+3]; + lo += this.view[offset ] << 24 >>> 0; + } + var value = new Long(lo, hi, false); + if (relative) this.offset += 8; + return value; }; /** - * Returns a string representation of this object. - * @return {string} String representation as of "Tokenizer(index/length)" + * Reads a 64bit signed integer. This is an alias of {@link ByteBuffer#readInt64}. + * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted. + * @returns {!Long} * @expose */ - TokenizerPrototype.toString = function() { - return "Tokenizer ("+this.index+"/"+this.source.length+" at line "+this.line+")"; - }; + ByteBufferPrototype.readLong = ByteBufferPrototype.readInt64; /** - * @alias ProtoBuf.DotProto.Tokenizer + * Writes a 64bit unsigned integer. + * @param {number|!Long} value Value to write + * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted. + * @returns {!ByteBuffer} this * @expose */ - DotProto.Tokenizer = Tokenizer; - - /** - * Constructs a new Parser. - * @exports ProtoBuf.DotProto.Parser - * @class prototype parser - * @param {string} source Source - * @constructor - */ - var Parser = function(source) { - - /** - * Tokenizer. - * @type {!ProtoBuf.DotProto.Tokenizer} - * @expose - */ - this.tn = new Tokenizer(source); - - /** - * Whether parsing proto3 or not. - * @type {boolean} - */ - this.proto3 = false; + ByteBufferPrototype.writeUint64 = function(value, offset) { + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (typeof value === 'number') + value = Long.fromNumber(value); + else if (typeof value === 'string') + value = Long.fromString(value); + else if (!(value && value instanceof Long)) + throw TypeError("Illegal value: "+value+" (not an integer or Long)"); + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 0 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); + } + if (typeof value === 'number') + value = Long.fromNumber(value); + else if (typeof value === 'string') + value = Long.fromString(value); + offset += 8; + var capacity7 = this.buffer.byteLength; + if (offset > capacity7) + this.resize((capacity7 *= 2) > offset ? capacity7 : offset); + offset -= 8; + var lo = value.low, + hi = value.high; + if (this.littleEndian) { + this.view[offset+3] = (lo >>> 24) & 0xFF; + this.view[offset+2] = (lo >>> 16) & 0xFF; + this.view[offset+1] = (lo >>> 8) & 0xFF; + this.view[offset ] = lo & 0xFF; + offset += 4; + this.view[offset+3] = (hi >>> 24) & 0xFF; + this.view[offset+2] = (hi >>> 16) & 0xFF; + this.view[offset+1] = (hi >>> 8) & 0xFF; + this.view[offset ] = hi & 0xFF; + } else { + this.view[offset ] = (hi >>> 24) & 0xFF; + this.view[offset+1] = (hi >>> 16) & 0xFF; + this.view[offset+2] = (hi >>> 8) & 0xFF; + this.view[offset+3] = hi & 0xFF; + offset += 4; + this.view[offset ] = (lo >>> 24) & 0xFF; + this.view[offset+1] = (lo >>> 16) & 0xFF; + this.view[offset+2] = (lo >>> 8) & 0xFF; + this.view[offset+3] = lo & 0xFF; + } + if (relative) this.offset += 8; + return this; }; /** - * @alias ProtoBuf.DotProto.Parser.prototype - * @inner + * Writes a 64bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint64}. + * @function + * @param {number|!Long} value Value to write + * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted. + * @returns {!ByteBuffer} this + * @expose */ - var ParserPrototype = Parser.prototype; + ByteBufferPrototype.writeUInt64 = ByteBufferPrototype.writeUint64; /** - * Parses the source. - * @returns {!Object} - * @throws {Error} If the source cannot be parsed + * Reads a 64bit unsigned integer. + * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted. + * @returns {!Long} * @expose */ - ParserPrototype.parse = function() { - var topLevel = { - "name": "[ROOT]", // temporary - "package": null, - "messages": [], - "enums": [], - "imports": [], - "options": {}, - "services": [] - // "syntax": undefined - }; - var token, - head = true; - try { - while (token = this.tn.next()) { - switch (token) { - case 'package': - if (!head || topLevel["package"] !== null) - throw Error("unexpected 'package'"); - token = this.tn.next(); - if (!Lang.TYPEREF.test(token)) - throw Error("illegal package name: " + token); - this.tn.skip(";"); - topLevel["package"] = token; - break; - case 'import': - if (!head) - throw Error("unexpected 'import'"); - token = this.tn.peek(); - if (token === "public") // ignored - this.tn.next(); - token = this._readString(); - this.tn.skip(";"); - topLevel["imports"].push(token); - break; - case 'syntax': - if (!head) - throw Error("unexpected 'syntax'"); - this.tn.skip("="); - if ((topLevel["syntax"] = this._readString()) === "proto3") - this.proto3 = true; - this.tn.skip(";"); - break; - case 'message': - this._parseMessage(topLevel, null); - head = false; - break; - case 'enum': - this._parseEnum(topLevel); - head = false; - break; - case 'option': - this._parseOption(topLevel); - break; - case 'service': - this._parseService(topLevel); - break; - case 'extend': - this._parseExtend(topLevel); - break; - default: - throw Error("unexpected '" + token + "'"); - } - } - } catch (e) { - e.message = "Parse error at line "+this.tn.line+": " + e.message; - throw e; + ByteBufferPrototype.readUint64 = function(offset) { + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 8 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+8+") <= "+this.buffer.byteLength); } - delete topLevel["name"]; - return topLevel; + var lo = 0, + hi = 0; + if (this.littleEndian) { + lo = this.view[offset+2] << 16; + lo |= this.view[offset+1] << 8; + lo |= this.view[offset ]; + lo += this.view[offset+3] << 24 >>> 0; + offset += 4; + hi = this.view[offset+2] << 16; + hi |= this.view[offset+1] << 8; + hi |= this.view[offset ]; + hi += this.view[offset+3] << 24 >>> 0; + } else { + hi = this.view[offset+1] << 16; + hi |= this.view[offset+2] << 8; + hi |= this.view[offset+3]; + hi += this.view[offset ] << 24 >>> 0; + offset += 4; + lo = this.view[offset+1] << 16; + lo |= this.view[offset+2] << 8; + lo |= this.view[offset+3]; + lo += this.view[offset ] << 24 >>> 0; + } + var value = new Long(lo, hi, true); + if (relative) this.offset += 8; + return value; }; /** - * Parses the specified source. - * @returns {!Object} - * @throws {Error} If the source cannot be parsed + * Reads a 64bit unsigned integer. This is an alias of {@link ByteBuffer#readUint64}. + * @function + * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted. + * @returns {!Long} * @expose */ - Parser.parse = function(source) { - return new Parser(source).parse(); - }; + ByteBufferPrototype.readUInt64 = ByteBufferPrototype.readUint64; - // ----- Conversion ------ + } // Long - /** - * Converts a numerical string to an id. - * @param {string} value - * @param {boolean=} mayBeNegative - * @returns {number} - * @inner - */ - function mkId(value, mayBeNegative) { - var id = -1, - sign = 1; - if (value.charAt(0) == '-') { - sign = -1; - value = value.substring(1); - } - if (Lang.NUMBER_DEC.test(value)) - id = parseInt(value); - else if (Lang.NUMBER_HEX.test(value)) - id = parseInt(value.substring(2), 16); - else if (Lang.NUMBER_OCT.test(value)) - id = parseInt(value.substring(1), 8); - else - throw Error("illegal id value: " + (sign < 0 ? '-' : '') + value); - id = (sign*id)|0; // Force to 32bit - if (!mayBeNegative && id < 0) - throw Error("illegal id value: " + (sign < 0 ? '-' : '') + value); - return id; - } - /** - * Converts a numerical string to a number. - * @param {string} val - * @returns {number} - * @inner - */ - function mkNumber(val) { - var sign = 1; - if (val.charAt(0) == '-') { - sign = -1; - val = val.substring(1); - } - if (Lang.NUMBER_DEC.test(val)) - return sign * parseInt(val, 10); - else if (Lang.NUMBER_HEX.test(val)) - return sign * parseInt(val.substring(2), 16); - else if (Lang.NUMBER_OCT.test(val)) - return sign * parseInt(val.substring(1), 8); - else if (val === 'inf') - return sign * Infinity; - else if (val === 'nan') - return NaN; - else if (Lang.NUMBER_FLT.test(val)) - return sign * parseFloat(val); - throw Error("illegal number value: " + (sign < 0 ? '-' : '') + val); - } + // types/floats/float32 - // ----- Reading ------ + /* + ieee754 - https://github.com/feross/ieee754 - /** - * Reads a string. - * @returns {string} - * @private - */ - ParserPrototype._readString = function() { - var value = "", - token, - delim; - do { - delim = this.tn.next(); - if (delim !== "'" && delim !== '"') - throw Error("illegal string delimiter: "+delim); - value += this.tn.next(); - this.tn.skip(delim); - token = this.tn.peek(); - } while (token === '"' || token === '"'); // multi line? - return value; - }; + The MIT License (MIT) - /** - * Reads a value. - * @param {boolean=} mayBeTypeRef - * @returns {number|boolean|string} - * @private - */ - ParserPrototype._readValue = function(mayBeTypeRef) { - var token = this.tn.peek(), - value; - if (token === '"' || token === "'") - return this._readString(); - this.tn.next(); - if (Lang.NUMBER.test(token)) - return mkNumber(token); - if (Lang.BOOL.test(token)) - return (token.toLowerCase() === 'true'); - if (mayBeTypeRef && Lang.TYPEREF.test(token)) - return token; - throw Error("illegal value: "+token); + Copyright (c) Feross Aboukhadijeh - }; + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: - // ----- Parsing constructs ----- + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. - /** - * Parses a namespace option. - * @param {!Object} parent Parent definition - * @param {boolean=} isList - * @private - */ - ParserPrototype._parseOption = function(parent, isList) { - var token = this.tn.next(), - custom = false; - if (token === '(') { - custom = true; - token = this.tn.next(); - } - if (!Lang.TYPEREF.test(token)) - // we can allow options of the form google.protobuf.* since they will just get ignored anyways - // if (!/google\.protobuf\./.test(token)) // FIXME: Why should that not be a valid typeref? - throw Error("illegal option name: "+token); - var name = token; - if (custom) { // (my_method_option).foo, (my_method_option), some_method_option, (foo.my_option).bar - this.tn.skip(')'); - name = '('+name+')'; - token = this.tn.peek(); - if (Lang.FQTYPEREF.test(token)) { - name += token; - this.tn.next(); - } - } - this.tn.skip('='); - this._parseOptionValue(parent, name); - if (!isList) - this.tn.skip(";"); - }; + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + */ - /** - * Sets an option on the specified options object. - * @param {!Object.} options - * @param {string} name - * @param {string|number|boolean} value - * @inner - */ - function setOption(options, name, value) { - if (typeof options[name] === 'undefined') - options[name] = value; - else { - if (!Array.isArray(options[name])) - options[name] = [ options[name] ]; - options[name].push(value); - } + /** + * Reads an IEEE754 float from a byte array. + * @param {!Array} buffer + * @param {number} offset + * @param {boolean} isLE + * @param {number} mLen + * @param {number} nBytes + * @returns {number} + * @inner + */ + function ieee754_read(buffer, offset, isLE, mLen, nBytes) { + var e, m, + eLen = nBytes * 8 - mLen - 1, + eMax = (1 << eLen) - 1, + eBias = eMax >> 1, + nBits = -7, + i = isLE ? (nBytes - 1) : 0, + d = isLE ? -1 : 1, + s = buffer[offset + i]; + + i += d; + + e = s & ((1 << (-nBits)) - 1); + s >>= (-nBits); + nBits += eLen; + for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} + + m = e & ((1 << (-nBits)) - 1); + e >>= (-nBits); + nBits += mLen; + for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} + + if (e === 0) { + e = 1 - eBias; + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity); + } else { + m = m + Math.pow(2, mLen); + e = e - eBias; } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen); + } - /** - * Parses an option value. - * @param {!Object} parent - * @param {string} name - * @private - */ - ParserPrototype._parseOptionValue = function(parent, name) { - var token = this.tn.peek(); - if (token !== '{') { // Plain value - setOption(parent["options"], name, this._readValue(true)); - } else { // Aggregate options - this.tn.skip("{"); - while ((token = this.tn.next()) !== '}') { - if (!Lang.NAME.test(token)) - throw Error("illegal option name: " + name + "." + token); - if (this.tn.omit(":")) - setOption(parent["options"], name + "." + token, this._readValue(true)); - else - this._parseOptionValue(parent, name + "." + token); - } - } - }; + /** + * Writes an IEEE754 float to a byte array. + * @param {!Array} buffer + * @param {number} value + * @param {number} offset + * @param {boolean} isLE + * @param {number} mLen + * @param {number} nBytes + * @inner + */ + function ieee754_write(buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c, + eLen = nBytes * 8 - mLen - 1, + eMax = (1 << eLen) - 1, + eBias = eMax >> 1, + rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0), + i = isLE ? 0 : (nBytes - 1), + d = isLE ? 1 : -1, + s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0; - /** - * Parses a service definition. - * @param {!Object} parent Parent definition - * @private - */ - ParserPrototype._parseService = function(parent) { - var token = this.tn.next(); - if (!Lang.NAME.test(token)) - throw Error("illegal service name at line "+this.tn.line+": "+token); - var name = token; - var svc = { - "name": name, - "rpc": {}, - "options": {} - }; - this.tn.skip("{"); - while ((token = this.tn.next()) !== '}') { - if (token === "option") - this._parseOption(svc); - else if (token === 'rpc') - this._parseServiceRPC(svc); - else - throw Error("illegal service token: "+token); - } - this.tn.omit(";"); - parent["services"].push(svc); - }; + value = Math.abs(value); - /** - * Parses a RPC service definition of the form ['rpc', name, (request), 'returns', (response)]. - * @param {!Object} svc Service definition - * @private - */ - ParserPrototype._parseServiceRPC = function(svc) { - var type = "rpc", - token = this.tn.next(); - if (!Lang.NAME.test(token)) - throw Error("illegal rpc service method name: "+token); - var name = token; - var method = { - "request": null, - "response": null, - "request_stream": false, - "response_stream": false, - "options": {} - }; - this.tn.skip("("); - token = this.tn.next(); - if (token.toLowerCase() === "stream") { - method["request_stream"] = true; - token = this.tn.next(); + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0; + e = eMax; + } else { + e = Math.floor(Math.log(value) / Math.LN2); + if (value * (c = Math.pow(2, -e)) < 1) { + e--; + c *= 2; } - if (!Lang.TYPEREF.test(token)) - throw Error("illegal rpc service request type: "+token); - method["request"] = token; - this.tn.skip(")"); - token = this.tn.next(); - if (token.toLowerCase() !== "returns") - throw Error("illegal rpc service request type delimiter: "+token); - this.tn.skip("("); - token = this.tn.next(); - if (token.toLowerCase() === "stream") { - method["response_stream"] = true; - token = this.tn.next(); + if (e + eBias >= 1) { + value += rt / c; + } else { + value += rt * Math.pow(2, 1 - eBias); } - method["response"] = token; - this.tn.skip(")"); - token = this.tn.peek(); - if (token === '{') { - this.tn.next(); - while ((token = this.tn.next()) !== '}') { - if (token === 'option') - this._parseOption(method); - else - throw Error("illegal rpc service token: " + token); - } - this.tn.omit(";"); - } else - this.tn.skip(";"); - if (typeof svc[type] === 'undefined') - svc[type] = {}; - svc[type][name] = method; - }; - - /** - * Parses a message definition. - * @param {!Object} parent Parent definition - * @param {!Object=} fld Field definition if this is a group - * @returns {!Object} - * @private - */ - ParserPrototype._parseMessage = function(parent, fld) { - var isGroup = !!fld, - token = this.tn.next(); - var msg = { - "name": "", - "fields": [], - "enums": [], - "messages": [], - "options": {}, - "services": [], - "oneofs": {} - // "extensions": undefined - }; - if (!Lang.NAME.test(token)) - throw Error("illegal "+(isGroup ? "group" : "message")+" name: "+token); - msg["name"] = token; - if (isGroup) { - this.tn.skip("="); - fld["id"] = mkId(this.tn.next()); - msg["isGroup"] = true; + if (value * c >= 2) { + e++; + c /= 2; } - token = this.tn.peek(); - if (token === '[' && fld) - this._parseFieldOptions(fld); - this.tn.skip("{"); - while ((token = this.tn.next()) !== '}') { - if (Lang.RULE.test(token)) - this._parseMessageField(msg, token); - else if (token === "oneof") - this._parseMessageOneOf(msg); - else if (token === "enum") - this._parseEnum(msg); - else if (token === "message") - this._parseMessage(msg); - else if (token === "option") - this._parseOption(msg); - else if (token === "service") - this._parseService(msg); - else if (token === "extensions") - this._parseExtensions(msg); - else if (token === "extend") - this._parseExtend(msg); - else if (token === "reserved") - this._parseMessageReserved(msg); - else if (Lang.TYPEREF.test(token)) { - if (!this.proto3) - throw Error("illegal field rule: "+token); - this._parseMessageField(msg, "optional", token); - } else - throw Error("illegal message token: "+token); + + if (e + eBias >= eMax) { + m = 0; + e = eMax; + } else if (e + eBias >= 1) { + m = (value * c - 1) * Math.pow(2, mLen); + e = e + eBias; + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); + e = 0; } - this.tn.omit(";"); - parent["messages"].push(msg); - return msg; - }; + } - /** - * Parses a message's reserved ids / names statement. - * @param {!Object} msg Message definition - * @private - */ - ParserPrototype._parseMessageReserved = function(msg) { - // TODO: This currently just skips a reserved statement for compatibility. - // Valid formats are - // reserved 2, 15, 9 to 11; - // for reserved ids or - // reserved "foo", "bar"; - // for reserved names. - while (this.tn.peek() !== ';') - this.tn.next(); - this.tn.skip(";"); - }; + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} - /** - * Parses a message field. - * @param {!Object} msg Message definition - * @param {string} rule Field rule - * @param {string=} type Field type if already known (never known for maps) - * @returns {!Object} Field descriptor - * @private - */ - ParserPrototype._parseMessageField = function(msg, rule, type) { - if (!Lang.RULE.test(rule)) - throw Error("illegal message field rule: "+rule); - var fld = { - "rule": rule, - "type": "", - "name": "", - "options": {}, - "id": 0 - }; - var token; - if (rule === "map") { + e = (e << mLen) | m; + eLen += mLen; + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} - if (type) - throw Error("illegal type: " + type); - this.tn.skip('<'); - token = this.tn.next(); - if (!Lang.TYPE.test(token) && !Lang.TYPEREF.test(token)) - throw Error("illegal message field type: " + token); - fld["keytype"] = token; - this.tn.skip(','); - token = this.tn.next(); - if (!Lang.TYPE.test(token) && !Lang.TYPEREF.test(token)) - throw Error("illegal message field: " + token); - fld["type"] = token; - this.tn.skip('>'); - token = this.tn.next(); - if (!Lang.NAME.test(token)) - throw Error("illegal message field name: " + token); - fld["name"] = token; - this.tn.skip("="); - fld["id"] = mkId(this.tn.next()); - token = this.tn.peek(); - if (token === '[') - this._parseFieldOptions(fld); - this.tn.skip(";"); + buffer[offset + i - d] |= s * 128; + } - } else { + /** + * Writes a 32bit float. + * @param {number} value Value to write + * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. + * @returns {!ByteBuffer} this + * @expose + */ + ByteBufferPrototype.writeFloat32 = function(value, offset) { + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (typeof value !== 'number') + throw TypeError("Illegal value: "+value+" (not a number)"); + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 0 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); + } + offset += 4; + var capacity8 = this.buffer.byteLength; + if (offset > capacity8) + this.resize((capacity8 *= 2) > offset ? capacity8 : offset); + offset -= 4; + ieee754_write(this.view, value, offset, this.littleEndian, 23, 4); + if (relative) this.offset += 4; + return this; + }; - type = typeof type !== 'undefined' ? type : this.tn.next(); + /** + * Writes a 32bit float. This is an alias of {@link ByteBuffer#writeFloat32}. + * @function + * @param {number} value Value to write + * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. + * @returns {!ByteBuffer} this + * @expose + */ + ByteBufferPrototype.writeFloat = ByteBufferPrototype.writeFloat32; - if (type === "group") { + /** + * Reads a 32bit float. + * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. + * @returns {number} + * @expose + */ + ByteBufferPrototype.readFloat32 = function(offset) { + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 4 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+4+") <= "+this.buffer.byteLength); + } + var value = ieee754_read(this.view, offset, this.littleEndian, 23, 4); + if (relative) this.offset += 4; + return value; + }; - // "A [legacy] group simply combines a nested message type and a field into a single declaration. In your - // code, you can treat this message just as if it had a Result type field called result (the latter name is - // converted to lower-case so that it does not conflict with the former)." - var grp = this._parseMessage(msg, fld); - if (!/^[A-Z]/.test(grp["name"])) - throw Error('illegal group name: '+grp["name"]); - fld["type"] = grp["name"]; - fld["name"] = grp["name"].toLowerCase(); - this.tn.omit(";"); + /** + * Reads a 32bit float. This is an alias of {@link ByteBuffer#readFloat32}. + * @function + * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. + * @returns {number} + * @expose + */ + ByteBufferPrototype.readFloat = ByteBufferPrototype.readFloat32; - } else { + // types/floats/float64 - if (!Lang.TYPE.test(type) && !Lang.TYPEREF.test(type)) - throw Error("illegal message field type: " + type); - fld["type"] = type; - token = this.tn.next(); - if (!Lang.NAME.test(token)) - throw Error("illegal message field name: " + token); - fld["name"] = token; - this.tn.skip("="); - fld["id"] = mkId(this.tn.next()); - token = this.tn.peek(); - if (token === "[") - this._parseFieldOptions(fld); - this.tn.skip(";"); + /** + * Writes a 64bit float. + * @param {number} value Value to write + * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted. + * @returns {!ByteBuffer} this + * @expose + */ + ByteBufferPrototype.writeFloat64 = function(value, offset) { + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (typeof value !== 'number') + throw TypeError("Illegal value: "+value+" (not a number)"); + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 0 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); + } + offset += 8; + var capacity9 = this.buffer.byteLength; + if (offset > capacity9) + this.resize((capacity9 *= 2) > offset ? capacity9 : offset); + offset -= 8; + ieee754_write(this.view, value, offset, this.littleEndian, 52, 8); + if (relative) this.offset += 8; + return this; + }; - } - } - msg["fields"].push(fld); - return fld; - }; + /** + * Writes a 64bit float. This is an alias of {@link ByteBuffer#writeFloat64}. + * @function + * @param {number} value Value to write + * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted. + * @returns {!ByteBuffer} this + * @expose + */ + ByteBufferPrototype.writeDouble = ByteBufferPrototype.writeFloat64; - /** - * Parses a message oneof. - * @param {!Object} msg Message definition - * @private - */ - ParserPrototype._parseMessageOneOf = function(msg) { - var token = this.tn.next(); - if (!Lang.NAME.test(token)) - throw Error("illegal oneof name: "+token); - var name = token, - fld; - var fields = []; - this.tn.skip("{"); - while ((token = this.tn.next()) !== "}") { - fld = this._parseMessageField(msg, "optional", token); - fld["oneof"] = name; - fields.push(fld["id"]); - } - this.tn.omit(";"); - msg["oneofs"][name] = fields; - }; + /** + * Reads a 64bit float. + * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted. + * @returns {number} + * @expose + */ + ByteBufferPrototype.readFloat64 = function(offset) { + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 8 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+8+") <= "+this.buffer.byteLength); + } + var value = ieee754_read(this.view, offset, this.littleEndian, 52, 8); + if (relative) this.offset += 8; + return value; + }; - /** - * Parses a set of field option definitions. - * @param {!Object} fld Field definition - * @private - */ - ParserPrototype._parseFieldOptions = function(fld) { - this.tn.skip("["); - var token, - first = true; - while ((token = this.tn.peek()) !== ']') { - if (!first) - this.tn.skip(","); - this._parseOption(fld, true); - first = false; - } - this.tn.next(); - }; + /** + * Reads a 64bit float. This is an alias of {@link ByteBuffer#readFloat64}. + * @function + * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted. + * @returns {number} + * @expose + */ + ByteBufferPrototype.readDouble = ByteBufferPrototype.readFloat64; - /** - * Parses an enum. - * @param {!Object} msg Message definition - * @private - */ - ParserPrototype._parseEnum = function(msg) { - var enm = { - "name": "", - "values": [], - "options": {} - }; - var token = this.tn.next(); - if (!Lang.NAME.test(token)) - throw Error("illegal name: "+token); - enm["name"] = token; - this.tn.skip("{"); - while ((token = this.tn.next()) !== '}') { - if (token === "option") - this._parseOption(enm); - else { - if (!Lang.NAME.test(token)) - throw Error("illegal name: "+token); - this.tn.skip("="); - var val = { - "name": token, - "id": mkId(this.tn.next(), true) - }; - token = this.tn.peek(); - if (token === "[") - this._parseFieldOptions({ "options": {} }); - this.tn.skip(";"); - enm["values"].push(val); - } - } - this.tn.omit(";"); - msg["enums"].push(enm); - }; - /** - * Parses an extensions statement. - * @param {!Object} msg Message object - * @private - */ - ParserPrototype._parseExtensions = function(msg) { - var token = this.tn.next(), - range = []; - if (token === "min") - range.push(ProtoBuf.ID_MIN); - else if (token === "max") - range.push(ProtoBuf.ID_MAX); - else - range.push(mkNumber(token)); - this.tn.skip("to"); - token = this.tn.next(); - if (token === "min") - range.push(ProtoBuf.ID_MIN); - else if (token === "max") - range.push(ProtoBuf.ID_MAX); - else - range.push(mkNumber(token)); - this.tn.skip(";"); - msg["extensions"] = range; - }; + // types/varints/varint32 - /** - * Parses an extend block. - * @param {!Object} parent Parent object - * @private - */ - ParserPrototype._parseExtend = function(parent) { - var token = this.tn.next(); - if (!Lang.TYPEREF.test(token)) - throw Error("illegal extend reference: "+token); - var ext = { - "ref": token, - "fields": [] - }; - this.tn.skip("{"); - while ((token = this.tn.next()) !== '}') { - if (Lang.RULE.test(token)) - this._parseMessageField(ext, token); - else if (Lang.TYPEREF.test(token)) { - if (!this.proto3) - throw Error("illegal field rule: "+token); - this._parseMessageField(ext, "optional", token); - } else - throw Error("illegal extend token: "+token); - } - this.tn.omit(";"); - parent["messages"].push(ext); - return ext; - }; + /** + * Maximum number of bytes required to store a 32bit base 128 variable-length integer. + * @type {number} + * @const + * @expose + */ + ByteBuffer.MAX_VARINT32_BYTES = 5; - // ----- General ----- + /** + * Calculates the actual number of bytes required to store a 32bit base 128 variable-length integer. + * @param {number} value Value to encode + * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT32_BYTES} + * @expose + */ + ByteBuffer.calculateVarint32 = function(value) { + // ref: src/google/protobuf/io/coded_stream.cc + value = value >>> 0; + if (value < 1 << 7 ) return 1; + else if (value < 1 << 14) return 2; + else if (value < 1 << 21) return 3; + else if (value < 1 << 28) return 4; + else return 5; + }; - /** - * Returns a string representation of this parser. - * @returns {string} - */ - ParserPrototype.toString = function() { - return "Parser at line "+this.tn.line; - }; + /** + * Zigzag encodes a signed 32bit integer so that it can be effectively used with varint encoding. + * @param {number} n Signed 32bit integer + * @returns {number} Unsigned zigzag encoded 32bit integer + * @expose + */ + ByteBuffer.zigZagEncode32 = function(n) { + return (((n |= 0) << 1) ^ (n >> 31)) >>> 0; // ref: src/google/protobuf/wire_format_lite.h + }; - /** - * @alias ProtoBuf.DotProto.Parser - * @expose - */ - DotProto.Parser = Parser; + /** + * Decodes a zigzag encoded signed 32bit integer. + * @param {number} n Unsigned zigzag encoded 32bit integer + * @returns {number} Signed 32bit integer + * @expose + */ + ByteBuffer.zigZagDecode32 = function(n) { + return ((n >>> 1) ^ -(n & 1)) | 0; // // ref: src/google/protobuf/wire_format_lite.h + }; - return DotProto; + /** + * Writes a 32bit base 128 variable-length integer. + * @param {number} value Value to write + * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes + * written if omitted. + * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written + * @expose + */ + ByteBufferPrototype.writeVarint32 = function(value, offset) { + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (typeof value !== 'number' || value % 1 !== 0) + throw TypeError("Illegal value: "+value+" (not an integer)"); + value |= 0; + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 0 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); + } + var size = ByteBuffer.calculateVarint32(value), + b; + offset += size; + var capacity10 = this.buffer.byteLength; + if (offset > capacity10) + this.resize((capacity10 *= 2) > offset ? capacity10 : offset); + offset -= size; + value >>>= 0; + while (value >= 0x80) { + b = (value & 0x7f) | 0x80; + this.view[offset++] = b; + value >>>= 7; + } + this.view[offset++] = value; + if (relative) { + this.offset = offset; + return this; + } + return size; + }; - })(ProtoBuf, ProtoBuf.Lang); + /** + * Writes a zig-zag encoded (signed) 32bit base 128 variable-length integer. + * @param {number} value Value to write + * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes + * written if omitted. + * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written + * @expose + */ + ByteBufferPrototype.writeVarint32ZigZag = function(value, offset) { + return this.writeVarint32(ByteBuffer.zigZagEncode32(value), offset); + }; /** - * @alias ProtoBuf.Reflect + * Reads a 32bit base 128 variable-length integer. + * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes + * written if omitted. + * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read + * and the actual number of bytes read. + * @throws {Error} If it's not a valid varint. Has a property `truncated = true` if there is not enough data available + * to fully decode the varint. * @expose */ - ProtoBuf.Reflect = (function(ProtoBuf) { - "use strict"; + ByteBufferPrototype.readVarint32 = function(offset) { + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 1 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+1+") <= "+this.buffer.byteLength); + } + var c = 0, + value = 0 >>> 0, + b; + do { + if (!this.noAssert && offset > this.limit) { + var err = Error("Truncated"); + err['truncated'] = true; + throw err; + } + b = this.view[offset++]; + if (c < 5) + value |= (b & 0x7f) << (7*c); + ++c; + } while ((b & 0x80) !== 0); + value |= 0; + if (relative) { + this.offset = offset; + return value; + } + return { + "value": value, + "length": c + }; + }; + + /** + * Reads a zig-zag encoded (signed) 32bit base 128 variable-length integer. + * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes + * written if omitted. + * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read + * and the actual number of bytes read. + * @throws {Error} If it's not a valid varint + * @expose + */ + ByteBufferPrototype.readVarint32ZigZag = function(offset) { + var val = this.readVarint32(offset); + if (typeof val === 'object') + val["value"] = ByteBuffer.zigZagDecode32(val["value"]); + else + val = ByteBuffer.zigZagDecode32(val); + return val; + }; + + // types/varints/varint64 + + if (Long) { /** - * Reflection types. - * @exports ProtoBuf.Reflect - * @namespace + * Maximum number of bytes required to store a 64bit base 128 variable-length integer. + * @type {number} + * @const + * @expose */ - var Reflect = {}; + ByteBuffer.MAX_VARINT64_BYTES = 10; /** - * Constructs a Reflect base class. - * @exports ProtoBuf.Reflect.T - * @constructor - * @abstract - * @param {!ProtoBuf.Builder} builder Builder reference - * @param {?ProtoBuf.Reflect.T} parent Parent object - * @param {string} name Object name - */ - var T = function(builder, parent, name) { - - /** - * Builder reference. - * @type {!ProtoBuf.Builder} - * @expose - */ - this.builder = builder; - - /** - * Parent object. - * @type {?ProtoBuf.Reflect.T} - * @expose - */ - this.parent = parent; - - /** - * Object name in namespace. - * @type {string} - * @expose - */ - this.name = name; - - /** - * Fully qualified class name - * @type {string} - * @expose - */ - this.className; - }; - - /** - * @alias ProtoBuf.Reflect.T.prototype - * @inner - */ - var TPrototype = T.prototype; - - /** - * Returns the fully qualified name of this object. - * @returns {string} Fully qualified name as of ".PATH.TO.THIS" + * Calculates the actual number of bytes required to store a 64bit base 128 variable-length integer. + * @param {number|!Long} value Value to encode + * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT64_BYTES} * @expose */ - TPrototype.fqn = function() { - var name = this.name, - ptr = this; - do { - ptr = ptr.parent; - if (ptr == null) - break; - name = ptr.name+"."+name; - } while (true); - return name; + ByteBuffer.calculateVarint64 = function(value) { + if (typeof value === 'number') + value = Long.fromNumber(value); + else if (typeof value === 'string') + value = Long.fromString(value); + // ref: src/google/protobuf/io/coded_stream.cc + var part0 = value.toInt() >>> 0, + part1 = value.shiftRightUnsigned(28).toInt() >>> 0, + part2 = value.shiftRightUnsigned(56).toInt() >>> 0; + if (part2 == 0) { + if (part1 == 0) { + if (part0 < 1 << 14) + return part0 < 1 << 7 ? 1 : 2; + else + return part0 < 1 << 21 ? 3 : 4; + } else { + if (part1 < 1 << 14) + return part1 < 1 << 7 ? 5 : 6; + else + return part1 < 1 << 21 ? 7 : 8; + } + } else + return part2 < 1 << 7 ? 9 : 10; }; /** - * Returns a string representation of this Reflect object (its fully qualified name). - * @param {boolean=} includeClass Set to true to include the class name. Defaults to false. - * @return String representation + * Zigzag encodes a signed 64bit integer so that it can be effectively used with varint encoding. + * @param {number|!Long} value Signed long + * @returns {!Long} Unsigned zigzag encoded long * @expose */ - TPrototype.toString = function(includeClass) { - return (includeClass ? this.className + " " : "") + this.fqn(); + ByteBuffer.zigZagEncode64 = function(value) { + if (typeof value === 'number') + value = Long.fromNumber(value, false); + else if (typeof value === 'string') + value = Long.fromString(value, false); + else if (value.unsigned !== false) value = value.toSigned(); + // ref: src/google/protobuf/wire_format_lite.h + return value.shiftLeft(1).xor(value.shiftRight(63)).toUnsigned(); }; /** - * Builds this type. - * @throws {Error} If this type cannot be built directly + * Decodes a zigzag encoded signed 64bit integer. + * @param {!Long|number} value Unsigned zigzag encoded long or JavaScript number + * @returns {!Long} Signed long * @expose */ - TPrototype.build = function() { - throw Error(this.toString(true)+" cannot be built directly"); + ByteBuffer.zigZagDecode64 = function(value) { + if (typeof value === 'number') + value = Long.fromNumber(value, false); + else if (typeof value === 'string') + value = Long.fromString(value, false); + else if (value.unsigned !== false) value = value.toSigned(); + // ref: src/google/protobuf/wire_format_lite.h + return value.shiftRightUnsigned(1).xor(value.and(Long.ONE).toSigned().negate()).toSigned(); }; /** - * @alias ProtoBuf.Reflect.T + * Writes a 64bit base 128 variable-length integer. + * @param {number|Long} value Value to write + * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes + * written if omitted. + * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written. * @expose */ - Reflect.T = T; - - /** - * Constructs a new Namespace. - * @exports ProtoBuf.Reflect.Namespace - * @param {!ProtoBuf.Builder} builder Builder reference - * @param {?ProtoBuf.Reflect.Namespace} parent Namespace parent - * @param {string} name Namespace name - * @param {Object.=} options Namespace options - * @param {string?} syntax The syntax level of this definition (e.g., proto3) - * @constructor - * @extends ProtoBuf.Reflect.T - */ - var Namespace = function(builder, parent, name, options, syntax) { - T.call(this, builder, parent, name); - - /** - * @override - */ - this.className = "Namespace"; - - /** - * Children inside the namespace. - * @type {!Array.} - */ - this.children = []; - - /** - * Options. - * @type {!Object.} - */ - this.options = options || {}; - - /** - * Syntax level (e.g., proto2 or proto3). - * @type {!string} - */ - this.syntax = syntax || "proto2"; + ByteBufferPrototype.writeVarint64 = function(value, offset) { + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (typeof value === 'number') + value = Long.fromNumber(value); + else if (typeof value === 'string') + value = Long.fromString(value); + else if (!(value && value instanceof Long)) + throw TypeError("Illegal value: "+value+" (not an integer or Long)"); + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 0 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); + } + if (typeof value === 'number') + value = Long.fromNumber(value, false); + else if (typeof value === 'string') + value = Long.fromString(value, false); + else if (value.unsigned !== false) value = value.toSigned(); + var size = ByteBuffer.calculateVarint64(value), + part0 = value.toInt() >>> 0, + part1 = value.shiftRightUnsigned(28).toInt() >>> 0, + part2 = value.shiftRightUnsigned(56).toInt() >>> 0; + offset += size; + var capacity11 = this.buffer.byteLength; + if (offset > capacity11) + this.resize((capacity11 *= 2) > offset ? capacity11 : offset); + offset -= size; + switch (size) { + case 10: this.view[offset+9] = (part2 >>> 7) & 0x01; + case 9 : this.view[offset+8] = size !== 9 ? (part2 ) | 0x80 : (part2 ) & 0x7F; + case 8 : this.view[offset+7] = size !== 8 ? (part1 >>> 21) | 0x80 : (part1 >>> 21) & 0x7F; + case 7 : this.view[offset+6] = size !== 7 ? (part1 >>> 14) | 0x80 : (part1 >>> 14) & 0x7F; + case 6 : this.view[offset+5] = size !== 6 ? (part1 >>> 7) | 0x80 : (part1 >>> 7) & 0x7F; + case 5 : this.view[offset+4] = size !== 5 ? (part1 ) | 0x80 : (part1 ) & 0x7F; + case 4 : this.view[offset+3] = size !== 4 ? (part0 >>> 21) | 0x80 : (part0 >>> 21) & 0x7F; + case 3 : this.view[offset+2] = size !== 3 ? (part0 >>> 14) | 0x80 : (part0 >>> 14) & 0x7F; + case 2 : this.view[offset+1] = size !== 2 ? (part0 >>> 7) | 0x80 : (part0 >>> 7) & 0x7F; + case 1 : this.view[offset ] = size !== 1 ? (part0 ) | 0x80 : (part0 ) & 0x7F; + } + if (relative) { + this.offset += size; + return this; + } else { + return size; + } }; /** - * @alias ProtoBuf.Reflect.Namespace.prototype - * @inner - */ - var NamespacePrototype = Namespace.prototype = Object.create(T.prototype); - - /** - * Returns an array of the namespace's children. - * @param {ProtoBuf.Reflect.T=} type Filter type (returns instances of this type only). Defaults to null (all children). - * @return {Array.} + * Writes a zig-zag encoded 64bit base 128 variable-length integer. + * @param {number|Long} value Value to write + * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes + * written if omitted. + * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written. * @expose */ - NamespacePrototype.getChildren = function(type) { - type = type || null; - if (type == null) - return this.children.slice(); - var children = []; - for (var i=0, k=this.children.length; i>>= 0; + if (offset < 0 || offset + 1 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+1+") <= "+this.buffer.byteLength); + } + // ref: src/google/protobuf/io/coded_stream.cc + var start = offset, + part0 = 0, + part1 = 0, + part2 = 0, + b = 0; + b = this.view[offset++]; part0 = (b & 0x7F) ; if ( b & 0x80 ) { + b = this.view[offset++]; part0 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) { + b = this.view[offset++]; part0 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) { + b = this.view[offset++]; part0 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) { + b = this.view[offset++]; part1 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) { + b = this.view[offset++]; part1 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) { + b = this.view[offset++]; part1 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) { + b = this.view[offset++]; part1 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) { + b = this.view[offset++]; part2 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) { + b = this.view[offset++]; part2 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) { + throw Error("Buffer overrun"); }}}}}}}}}} + var value = Long.fromBits(part0 | (part1 << 28), (part1 >>> 4) | (part2) << 24, false); + if (relative) { + this.offset = offset; + return value; + } else { + return { + 'value': value, + 'length': offset-start + }; } - this.children.push(child); }; /** - * Gets a child by its name or id. - * @param {string|number} nameOrId Child name or id - * @return {?ProtoBuf.Reflect.T} The child or null if not found + * Reads a zig-zag encoded 64bit base 128 variable-length integer. Requires Long.js. + * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes + * read if omitted. + * @returns {!Long|!{value: Long, length: number}} The value read if offset is omitted, else the value read and + * the actual number of bytes read. + * @throws {Error} If it's not a valid varint * @expose */ - NamespacePrototype.getChild = function(nameOrId) { - var key = typeof nameOrId === 'number' ? 'id' : 'name'; - for (var i=0, k=this.children.length; i} qn Qualified name to resolve - * @param {boolean=} excludeNonNamespace Excludes non-namespace types, defaults to `false` - * @return {?ProtoBuf.Reflect.Namespace} The resolved type or null if not found - * @expose - */ - NamespacePrototype.resolve = function(qn, excludeNonNamespace) { - var part = typeof qn === 'string' ? qn.split(".") : qn, - ptr = this, - i = 0; - if (part[i] === "") { // Fully qualified name, e.g. ".My.Message' - while (ptr.parent !== null) - ptr = ptr.parent; - i++; - } - var child; - do { - do { - if (!(ptr instanceof Reflect.Namespace)) { - ptr = null; - break; - } - child = ptr.getChild(part[i]); - if (!child || !(child instanceof Reflect.T) || (excludeNonNamespace && !(child instanceof Reflect.Namespace))) { - ptr = null; - break; - } - ptr = child; i++; - } while (i < part.length); - if (ptr != null) - break; // Found - // Else search the parent - if (this.parent !== null) - return this.parent.resolve(qn, excludeNonNamespace); - } while (ptr != null); - return ptr; - }; + } // Long - /** - * Determines the shortest qualified name of the specified type, if any, relative to this namespace. - * @param {!ProtoBuf.Reflect.T} t Reflection type - * @returns {string} The shortest qualified name or, if there is none, the fqn - * @expose - */ - NamespacePrototype.qn = function(t) { - var part = [], ptr = t; - do { - part.unshift(ptr.name); - ptr = ptr.parent; - } while (ptr !== null); - for (var len=1; len <= part.length; len++) { - var qn = part.slice(part.length-len); - if (t === this.resolve(qn, t instanceof Reflect.Namespace)) - return qn.join("."); - } - return t.fqn(); - }; - /** - * Builds the namespace and returns the runtime counterpart. - * @return {Object.} Runtime namespace - * @expose - */ - NamespacePrototype.build = function() { - /** @dict */ - var ns = {}; - var children = this.children; - for (var i=0, k=children.length, child; i} - */ - NamespacePrototype.buildOpt = function() { - var opt = {}, - keys = Object.keys(this.options); - for (var i=0, k=keys.length; i>>= 0; + if (offset < 0 || offset + 0 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); + } + // UTF8 strings do not contain zero bytes in between except for the zero character, so: + k = utfx.calculateUTF16asUTF8(stringSource(str))[1]; + offset += k+1; + var capacity12 = this.buffer.byteLength; + if (offset > capacity12) + this.resize((capacity12 *= 2) > offset ? capacity12 : offset); + offset -= k+1; + utfx.encodeUTF16toUTF8(stringSource(str), function(b) { + this.view[offset++] = b; + }.bind(this)); + this.view[offset++] = 0; + if (relative) { + this.offset = offset; + return this; + } + return k; + }; - /** - * Gets the value assigned to the option with the specified name. - * @param {string=} name Returns the option value if specified, otherwise all options are returned. - * @return {*|Object.}null} Option value or NULL if there is no such option - */ - NamespacePrototype.getOption = function(name) { - if (typeof name === 'undefined') - return this.options; - return typeof this.options[name] !== 'undefined' ? this.options[name] : null; - }; + /** + * Reads a NULL-terminated UTF8 encoded string. For this to work the string read must not contain any NULL characters + * itself. + * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes + * read if omitted. + * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string + * read and the actual number of bytes read. + * @expose + */ + ByteBufferPrototype.readCString = function(offset) { + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 1 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+1+") <= "+this.buffer.byteLength); + } + var start = offset, + temp; + // UTF8 strings do not contain zero bytes in between except for the zero character itself, so: + var sd, b = -1; + utfx.decodeUTF8toUTF16(function() { + if (b === 0) return null; + if (offset >= this.limit) + throw RangeError("Illegal range: Truncated data, "+offset+" < "+this.limit); + b = this.view[offset++]; + return b === 0 ? null : b; + }.bind(this), sd = stringDestination(), true); + if (relative) { + this.offset = offset; + return sd(); + } else { + return { + "string": sd(), + "length": offset - start + }; + } + }; - /** - * @alias ProtoBuf.Reflect.Namespace - * @expose - */ - Reflect.Namespace = Namespace; + // types/strings/istring - /** - * Constructs a new Element implementation that checks and converts values for a - * particular field type, as appropriate. - * - * An Element represents a single value: either the value of a singular field, - * or a value contained in one entry of a repeated field or map field. This - * class does not implement these higher-level concepts; it only encapsulates - * the low-level typechecking and conversion. - * - * @exports ProtoBuf.Reflect.Element - * @param {{name: string, wireType: number}} type Resolved data type - * @param {ProtoBuf.Reflect.T|null} resolvedType Resolved type, if relevant - * (e.g. submessage field). - * @param {boolean} isMapKey Is this element a Map key? The value will be - * converted to string form if so. - * @param {string} syntax Syntax level of defining message type, e.g., - * proto2 or proto3. - * @constructor - */ - var Element = function(type, resolvedType, isMapKey, syntax) { - - /** - * Element type, as a string (e.g., int32). - * @type {{name: string, wireType: number}} - */ - this.type = type; - - /** - * Element type reference to submessage or enum definition, if needed. - * @type {ProtoBuf.Reflect.T|null} - */ - this.resolvedType = resolvedType; + /** + * Writes a length as uint32 prefixed UTF8 encoded string. + * @param {string} str String to write + * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes + * written if omitted. + * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written + * @expose + * @see ByteBuffer#writeVarint32 + */ + ByteBufferPrototype.writeIString = function(str, offset) { + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (typeof str !== 'string') + throw TypeError("Illegal str: Not a string"); + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 0 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); + } + var start = offset, + k; + k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1]; + offset += 4+k; + var capacity13 = this.buffer.byteLength; + if (offset > capacity13) + this.resize((capacity13 *= 2) > offset ? capacity13 : offset); + offset -= 4+k; + if (this.littleEndian) { + this.view[offset+3] = (k >>> 24) & 0xFF; + this.view[offset+2] = (k >>> 16) & 0xFF; + this.view[offset+1] = (k >>> 8) & 0xFF; + this.view[offset ] = k & 0xFF; + } else { + this.view[offset ] = (k >>> 24) & 0xFF; + this.view[offset+1] = (k >>> 16) & 0xFF; + this.view[offset+2] = (k >>> 8) & 0xFF; + this.view[offset+3] = k & 0xFF; + } + offset += 4; + utfx.encodeUTF16toUTF8(stringSource(str), function(b) { + this.view[offset++] = b; + }.bind(this)); + if (offset !== start + 4 + k) + throw RangeError("Illegal range: Truncated data, "+offset+" == "+(offset+4+k)); + if (relative) { + this.offset = offset; + return this; + } + return offset - start; + }; - /** - * Element is a map key. - * @type {boolean} - */ - this.isMapKey = isMapKey; + /** + * Reads a length as uint32 prefixed UTF8 encoded string. + * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes + * read if omitted. + * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string + * read and the actual number of bytes read. + * @expose + * @see ByteBuffer#readVarint32 + */ + ByteBufferPrototype.readIString = function(offset) { + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 4 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+4+") <= "+this.buffer.byteLength); + } + var start = offset; + var len = this.readUint32(offset); + var str = this.readUTF8String(len, ByteBuffer.METRICS_BYTES, offset += 4); + offset += str['length']; + if (relative) { + this.offset = offset; + return str['string']; + } else { + return { + 'string': str['string'], + 'length': offset - start + }; + } + }; - /** - * Syntax level of defining message type, e.g., proto2 or proto3. - * @type {string} - */ - this.syntax = syntax; + // types/strings/utf8string - if (isMapKey && ProtoBuf.MAP_KEY_TYPES.indexOf(type) < 0) - throw Error("Invalid map key type: " + type.name); - }; + /** + * Metrics representing number of UTF8 characters. Evaluates to `c`. + * @type {string} + * @const + * @expose + */ + ByteBuffer.METRICS_CHARS = 'c'; - var ElementPrototype = Element.prototype; + /** + * Metrics representing number of bytes. Evaluates to `b`. + * @type {string} + * @const + * @expose + */ + ByteBuffer.METRICS_BYTES = 'b'; - /** - * Obtains a (new) default value for the specified type. - * @param type {string|{name: string, wireType: number}} Field type - * @returns {*} Default value - * @inner - */ - function mkDefault(type) { - if (typeof type === 'string') - type = ProtoBuf.TYPES[type]; - if (typeof type.defaultValue === 'undefined') - throw Error("default value for type "+type.name+" is not supported"); - if (type == ProtoBuf.TYPES["bytes"]) - return new ByteBuffer(0); - return type.defaultValue; + /** + * Writes an UTF8 encoded string. + * @param {string} str String to write + * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted. + * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written. + * @expose + */ + ByteBufferPrototype.writeUTF8String = function(str, offset) { + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 0 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); } - - /** - * Returns the default value for this field in proto3. - * @function - * @param type {string|{name: string, wireType: number}} the field type - * @returns {*} Default value - */ - Element.defaultFieldValue = mkDefault; - - /** - * Makes a Long from a value. - * @param {{low: number, high: number, unsigned: boolean}|string|number} value Value - * @param {boolean=} unsigned Whether unsigned or not, defaults to reuse it from Long-like objects or to signed for - * strings and numbers - * @returns {!Long} - * @throws {Error} If the value cannot be converted to a Long - * @inner - */ - function mkLong(value, unsigned) { - if (value && typeof value.low === 'number' && typeof value.high === 'number' && typeof value.unsigned === 'boolean' - && value.low === value.low && value.high === value.high) - return new ProtoBuf.Long(value.low, value.high, typeof unsigned === 'undefined' ? value.unsigned : unsigned); - if (typeof value === 'string') - return ProtoBuf.Long.fromString(value, unsigned || false, 10); - if (typeof value === 'number') - return ProtoBuf.Long.fromNumber(value, unsigned || false); - throw Error("not convertible to Long"); + var k; + var start = offset; + k = utfx.calculateUTF16asUTF8(stringSource(str))[1]; + offset += k; + var capacity14 = this.buffer.byteLength; + if (offset > capacity14) + this.resize((capacity14 *= 2) > offset ? capacity14 : offset); + offset -= k; + utfx.encodeUTF16toUTF8(stringSource(str), function(b) { + this.view[offset++] = b; + }.bind(this)); + if (relative) { + this.offset = offset; + return this; } + return offset - start; + }; - /** - * Checks if the given value can be set for an element of this type (singular - * field or one element of a repeated field or map). - * @param {*} value Value to check - * @return {*} Verified, maybe adjusted, value - * @throws {Error} If the value cannot be verified for this element slot - * @expose - */ - ElementPrototype.verifyValue = function(value) { - var fail = function(val, msg) { - throw Error("Illegal value for "+this.toString(true)+" of type "+this.type.name+": "+val+" ("+msg+")"); - }.bind(this); - switch (this.type) { - // Signed 32bit - case ProtoBuf.TYPES["int32"]: - case ProtoBuf.TYPES["sint32"]: - case ProtoBuf.TYPES["sfixed32"]: - // Account for !NaN: value === value - if (typeof value !== 'number' || (value === value && value % 1 !== 0)) - fail(typeof value, "not an integer"); - return value > 4294967295 ? value | 0 : value; + /** + * Writes an UTF8 encoded string. This is an alias of {@link ByteBuffer#writeUTF8String}. + * @function + * @param {string} str String to write + * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted. + * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written. + * @expose + */ + ByteBufferPrototype.writeString = ByteBufferPrototype.writeUTF8String; - // Unsigned 32bit - case ProtoBuf.TYPES["uint32"]: - case ProtoBuf.TYPES["fixed32"]: - if (typeof value !== 'number' || (value === value && value % 1 !== 0)) - fail(typeof value, "not an integer"); - return value < 0 ? value >>> 0 : value; + /** + * Calculates the number of UTF8 characters of a string. JavaScript itself uses UTF-16, so that a string's + * `length` property does not reflect its actual UTF8 size if it contains code points larger than 0xFFFF. + * @param {string} str String to calculate + * @returns {number} Number of UTF8 characters + * @expose + */ + ByteBuffer.calculateUTF8Chars = function(str) { + return utfx.calculateUTF16asUTF8(stringSource(str))[0]; + }; - // Signed 64bit - case ProtoBuf.TYPES["int64"]: - case ProtoBuf.TYPES["sint64"]: - case ProtoBuf.TYPES["sfixed64"]: { - if (ProtoBuf.Long) - try { - return mkLong(value, false); - } catch (e) { - fail(typeof value, e.message); - } - else - fail(typeof value, "requires Long.js"); - } + /** + * Calculates the number of UTF8 bytes of a string. + * @param {string} str String to calculate + * @returns {number} Number of UTF8 bytes + * @expose + */ + ByteBuffer.calculateUTF8Bytes = function(str) { + return utfx.calculateUTF16asUTF8(stringSource(str))[1]; + }; - // Unsigned 64bit - case ProtoBuf.TYPES["uint64"]: - case ProtoBuf.TYPES["fixed64"]: { - if (ProtoBuf.Long) - try { - return mkLong(value, true); - } catch (e) { - fail(typeof value, e.message); - } - else - fail(typeof value, "requires Long.js"); - } + /** + * Calculates the number of UTF8 bytes of a string. This is an alias of {@link ByteBuffer.calculateUTF8Bytes}. + * @function + * @param {string} str String to calculate + * @returns {number} Number of UTF8 bytes + * @expose + */ + ByteBuffer.calculateString = ByteBuffer.calculateUTF8Bytes; - // Bool - case ProtoBuf.TYPES["bool"]: - if (typeof value !== 'boolean') - fail(typeof value, "not a boolean"); - return value; + /** + * Reads an UTF8 encoded string. + * @param {number} length Number of characters or bytes to read. + * @param {string=} metrics Metrics specifying what `length` is meant to count. Defaults to + * {@link ByteBuffer.METRICS_CHARS}. + * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes + * read if omitted. + * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string + * read and the actual number of bytes read. + * @expose + */ + ByteBufferPrototype.readUTF8String = function(length, metrics, offset) { + if (typeof metrics === 'number') { + offset = metrics; + metrics = undefined; + } + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (typeof metrics === 'undefined') metrics = ByteBuffer.METRICS_CHARS; + if (!this.noAssert) { + if (typeof length !== 'number' || length % 1 !== 0) + throw TypeError("Illegal length: "+length+" (not an integer)"); + length |= 0; + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 0 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); + } + var i = 0, + start = offset, + sd; + if (metrics === ByteBuffer.METRICS_CHARS) { // The same for node and the browser + sd = stringDestination(); + utfx.decodeUTF8(function() { + return i < length && offset < this.limit ? this.view[offset++] : null; + }.bind(this), function(cp) { + ++i; utfx.UTF8toUTF16(cp, sd); + }); + if (i !== length) + throw RangeError("Illegal range: Truncated data, "+i+" == "+length); + if (relative) { + this.offset = offset; + return sd(); + } else { + return { + "string": sd(), + "length": offset - start + }; + } + } else if (metrics === ByteBuffer.METRICS_BYTES) { + if (!this.noAssert) { + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + length > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+length+") <= "+this.buffer.byteLength); + } + var k = offset + length; + utfx.decodeUTF8toUTF16(function() { + return offset < k ? this.view[offset++] : null; + }.bind(this), sd = stringDestination(), this.noAssert); + if (offset !== k) + throw RangeError("Illegal range: Truncated data, "+offset+" == "+k); + if (relative) { + this.offset = offset; + return sd(); + } else { + return { + 'string': sd(), + 'length': offset - start + }; + } + } else + throw TypeError("Unsupported metrics: "+metrics); + }; - // Float - case ProtoBuf.TYPES["float"]: - case ProtoBuf.TYPES["double"]: - if (typeof value !== 'number') - fail(typeof value, "not a number"); - return value; + /** + * Reads an UTF8 encoded string. This is an alias of {@link ByteBuffer#readUTF8String}. + * @function + * @param {number} length Number of characters or bytes to read + * @param {number=} metrics Metrics specifying what `n` is meant to count. Defaults to + * {@link ByteBuffer.METRICS_CHARS}. + * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes + * read if omitted. + * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string + * read and the actual number of bytes read. + * @expose + */ + ByteBufferPrototype.readString = ByteBufferPrototype.readUTF8String; - // Length-delimited string - case ProtoBuf.TYPES["string"]: - if (typeof value !== 'string' && !(value && value instanceof String)) - fail(typeof value, "not a string"); - return ""+value; // Convert String object to string + // types/strings/vstring - // Length-delimited bytes - case ProtoBuf.TYPES["bytes"]: - if (ByteBuffer.isByteBuffer(value)) - return value; - return ByteBuffer.wrap(value, "base64"); + /** + * Writes a length as varint32 prefixed UTF8 encoded string. + * @param {string} str String to write + * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes + * written if omitted. + * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written + * @expose + * @see ByteBuffer#writeVarint32 + */ + ByteBufferPrototype.writeVString = function(str, offset) { + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (typeof str !== 'string') + throw TypeError("Illegal str: Not a string"); + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 0 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); + } + var start = offset, + k, l; + k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1]; + l = ByteBuffer.calculateVarint32(k); + offset += l+k; + var capacity15 = this.buffer.byteLength; + if (offset > capacity15) + this.resize((capacity15 *= 2) > offset ? capacity15 : offset); + offset -= l+k; + offset += this.writeVarint32(k, offset); + utfx.encodeUTF16toUTF8(stringSource(str), function(b) { + this.view[offset++] = b; + }.bind(this)); + if (offset !== start+k+l) + throw RangeError("Illegal range: Truncated data, "+offset+" == "+(offset+k+l)); + if (relative) { + this.offset = offset; + return this; + } + return offset - start; + }; - // Constant enum value - case ProtoBuf.TYPES["enum"]: { - var values = this.resolvedType.getChildren(ProtoBuf.Reflect.Enum.Value); - for (i=0; i>>= 0; + if (offset < 0 || offset + 1 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+1+") <= "+this.buffer.byteLength); + } + var start = offset; + var len = this.readVarint32(offset); + var str = this.readUTF8String(len['value'], ByteBuffer.METRICS_BYTES, offset += len['length']); + offset += str['length']; + if (relative) { + this.offset = offset; + return str['string']; + } else { + return { + 'string': str['string'], + 'length': offset - start + }; + } + }; - if (this.syntax === 'proto3') { - // proto3: just make sure it's an integer. - if (typeof value !== 'number' || (value === value && value % 1 !== 0)) - fail(typeof value, "not an integer"); - if (value > 4294967295 || value < 0) - fail(typeof value, "not in range for uint32") - return value; - } else { - // proto2 requires enum values to be valid. - fail(value, "not a valid enum value"); - } - } - // Embedded message - case ProtoBuf.TYPES["group"]: - case ProtoBuf.TYPES["message"]: { - if (!value || typeof value !== 'object') - fail(typeof value, "object expected"); - if (value instanceof this.resolvedType.clazz) - return value; - if (value instanceof ProtoBuf.Builder.Message) { - // Mismatched type: Convert to object (see: https://github.com/dcodeIO/ProtoBuf.js/issues/180) - var obj = {}; - for (var i in value) - if (value.hasOwnProperty(i)) - obj[i] = value[i]; - value = obj; - } - // Else let's try to construct one from a key-value object - return new (this.resolvedType.clazz)(value); // May throw for a hundred of reasons - } - } - - // We should never end here - throw Error("[INTERNAL] Illegal value for "+this.toString(true)+": "+value+" (undefined type "+this.type+")"); - }; - - /** - * Calculates the byte length of an element on the wire. - * @param {number} id Field number - * @param {*} value Field value - * @returns {number} Byte length - * @throws {Error} If the value cannot be calculated - * @expose - */ - ElementPrototype.calculateLength = function(id, value) { - if (value === null) return 0; // Nothing to encode - // Tag has already been written - var n; - switch (this.type) { - case ProtoBuf.TYPES["int32"]: - return value < 0 ? ByteBuffer.calculateVarint64(value) : ByteBuffer.calculateVarint32(value); - case ProtoBuf.TYPES["uint32"]: - return ByteBuffer.calculateVarint32(value); - case ProtoBuf.TYPES["sint32"]: - return ByteBuffer.calculateVarint32(ByteBuffer.zigZagEncode32(value)); - case ProtoBuf.TYPES["fixed32"]: - case ProtoBuf.TYPES["sfixed32"]: - case ProtoBuf.TYPES["float"]: - return 4; - case ProtoBuf.TYPES["int64"]: - case ProtoBuf.TYPES["uint64"]: - return ByteBuffer.calculateVarint64(value); - case ProtoBuf.TYPES["sint64"]: - return ByteBuffer.calculateVarint64(ByteBuffer.zigZagEncode64(value)); - case ProtoBuf.TYPES["fixed64"]: - case ProtoBuf.TYPES["sfixed64"]: - return 8; - case ProtoBuf.TYPES["bool"]: - return 1; - case ProtoBuf.TYPES["enum"]: - return ByteBuffer.calculateVarint32(value); - case ProtoBuf.TYPES["double"]: - return 8; - case ProtoBuf.TYPES["string"]: - n = ByteBuffer.calculateUTF8Bytes(value); - return ByteBuffer.calculateVarint32(n) + n; - case ProtoBuf.TYPES["bytes"]: - if (value.remaining() < 0) - throw Error("Illegal value for "+this.toString(true)+": "+value.remaining()+" bytes remaining"); - return ByteBuffer.calculateVarint32(value.remaining()) + value.remaining(); - case ProtoBuf.TYPES["message"]: - n = this.resolvedType.calculate(value); - return ByteBuffer.calculateVarint32(n) + n; - case ProtoBuf.TYPES["group"]: - n = this.resolvedType.calculate(value); - return n + ByteBuffer.calculateVarint32((id << 3) | ProtoBuf.WIRE_TYPES.ENDGROUP); - } - // We should never end here - throw Error("[INTERNAL] Illegal value to encode in "+this.toString(true)+": "+value+" (unknown type)"); - }; - /** - * Encodes a value to the specified buffer. Does not encode the key. - * @param {number} id Field number - * @param {*} value Field value - * @param {ByteBuffer} buffer ByteBuffer to encode to - * @return {ByteBuffer} The ByteBuffer for chaining - * @throws {Error} If the value cannot be encoded - * @expose - */ - ElementPrototype.encodeValue = function(id, value, buffer) { - if (value === null) return buffer; // Nothing to encode - // Tag has already been written - - switch (this.type) { - // 32bit signed varint - case ProtoBuf.TYPES["int32"]: - // "If you use int32 or int64 as the type for a negative number, the resulting varint is always ten bytes - // long – it is, effectively, treated like a very large unsigned integer." (see #122) - if (value < 0) - buffer.writeVarint64(value); - else - buffer.writeVarint32(value); - break; - - // 32bit unsigned varint - case ProtoBuf.TYPES["uint32"]: - buffer.writeVarint32(value); - break; - - // 32bit varint zig-zag - case ProtoBuf.TYPES["sint32"]: - buffer.writeVarint32ZigZag(value); - break; + /** + * Appends some data to this ByteBuffer. This will overwrite any contents behind the specified offset up to the appended + * data's length. + * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to append. If `source` is a ByteBuffer, its offsets + * will be modified according to the performed read operation. + * @param {(string|number)=} encoding Encoding if `data` is a string ("base64", "hex", "binary", defaults to "utf8") + * @param {number=} offset Offset to append at. Will use and increase {@link ByteBuffer#offset} by the number of bytes + * written if omitted. + * @returns {!ByteBuffer} this + * @expose + * @example A relative `<01 02>03.append(<04 05>)` will result in `<01 02 04 05>, 04 05|` + * @example An absolute `<01 02>03.append(04 05>, 1)` will result in `<01 04>05, 04 05|` + */ + ByteBufferPrototype.append = function(source, encoding, offset) { + if (typeof encoding === 'number' || typeof encoding !== 'string') { + offset = encoding; + encoding = undefined; + } + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 0 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); + } + if (!(source instanceof ByteBuffer)) + source = ByteBuffer.wrap(source, encoding); + var length = source.limit - source.offset; + if (length <= 0) return this; // Nothing to append + offset += length; + var capacity16 = this.buffer.byteLength; + if (offset > capacity16) + this.resize((capacity16 *= 2) > offset ? capacity16 : offset); + offset -= length; + this.view.set(source.view.subarray(source.offset, source.limit), offset); + source.offset += length; + if (relative) this.offset += length; + return this; + }; - // Fixed unsigned 32bit - case ProtoBuf.TYPES["fixed32"]: - buffer.writeUint32(value); - break; + /** + * Appends this ByteBuffer's contents to another ByteBuffer. This will overwrite any contents at and after the + specified offset up to the length of this ByteBuffer's data. + * @param {!ByteBuffer} target Target ByteBuffer + * @param {number=} offset Offset to append to. Will use and increase {@link ByteBuffer#offset} by the number of bytes + * read if omitted. + * @returns {!ByteBuffer} this + * @expose + * @see ByteBuffer#append + */ + ByteBufferPrototype.appendTo = function(target, offset) { + target.append(this, offset); + return this; + }; - // Fixed signed 32bit - case ProtoBuf.TYPES["sfixed32"]: - buffer.writeInt32(value); - break; + /** + * Enables or disables assertions of argument types and offsets. Assertions are enabled by default but you can opt to + * disable them if your code already makes sure that everything is valid. + * @param {boolean} assert `true` to enable assertions, otherwise `false` + * @returns {!ByteBuffer} this + * @expose + */ + ByteBufferPrototype.assert = function(assert) { + this.noAssert = !assert; + return this; + }; - // 64bit varint as-is - case ProtoBuf.TYPES["int64"]: - case ProtoBuf.TYPES["uint64"]: - buffer.writeVarint64(value); // throws - break; + /** + * Gets the capacity of this ByteBuffer's backing buffer. + * @returns {number} Capacity of the backing buffer + * @expose + */ + ByteBufferPrototype.capacity = function() { + return this.buffer.byteLength; + }; + /** + * Clears this ByteBuffer's offsets by setting {@link ByteBuffer#offset} to `0` and {@link ByteBuffer#limit} to the + * backing buffer's capacity. Discards {@link ByteBuffer#markedOffset}. + * @returns {!ByteBuffer} this + * @expose + */ + ByteBufferPrototype.clear = function() { + this.offset = 0; + this.limit = this.buffer.byteLength; + this.markedOffset = -1; + return this; + }; - // 64bit varint zig-zag - case ProtoBuf.TYPES["sint64"]: - buffer.writeVarint64ZigZag(value); // throws - break; + /** + * Creates a cloned instance of this ByteBuffer, preset with this ByteBuffer's values for {@link ByteBuffer#offset}, + * {@link ByteBuffer#markedOffset} and {@link ByteBuffer#limit}. + * @param {boolean=} copy Whether to copy the backing buffer or to return another view on the same, defaults to `false` + * @returns {!ByteBuffer} Cloned instance + * @expose + */ + ByteBufferPrototype.clone = function(copy) { + var bb = new ByteBuffer(0, this.littleEndian, this.noAssert); + if (copy) { + bb.buffer = new ArrayBuffer(this.buffer.byteLength); + bb.view = new Uint8Array(bb.buffer); + } else { + bb.buffer = this.buffer; + bb.view = this.view; + } + bb.offset = this.offset; + bb.markedOffset = this.markedOffset; + bb.limit = this.limit; + return bb; + }; - // Fixed unsigned 64bit - case ProtoBuf.TYPES["fixed64"]: - buffer.writeUint64(value); // throws - break; + /** + * Compacts this ByteBuffer to be backed by a {@link ByteBuffer#buffer} of its contents' length. Contents are the bytes + * between {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. Will set `offset = 0` and `limit = capacity` and + * adapt {@link ByteBuffer#markedOffset} to the same relative position if set. + * @param {number=} begin Offset to start at, defaults to {@link ByteBuffer#offset} + * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit} + * @returns {!ByteBuffer} this + * @expose + */ + ByteBufferPrototype.compact = function(begin, end) { + if (typeof begin === 'undefined') begin = this.offset; + if (typeof end === 'undefined') end = this.limit; + if (!this.noAssert) { + if (typeof begin !== 'number' || begin % 1 !== 0) + throw TypeError("Illegal begin: Not an integer"); + begin >>>= 0; + if (typeof end !== 'number' || end % 1 !== 0) + throw TypeError("Illegal end: Not an integer"); + end >>>= 0; + if (begin < 0 || begin > end || end > this.buffer.byteLength) + throw RangeError("Illegal range: 0 <= "+begin+" <= "+end+" <= "+this.buffer.byteLength); + } + if (begin === 0 && end === this.buffer.byteLength) + return this; // Already compacted + var len = end - begin; + if (len === 0) { + this.buffer = EMPTY_BUFFER; + this.view = null; + if (this.markedOffset >= 0) this.markedOffset -= begin; + this.offset = 0; + this.limit = 0; + return this; + } + var buffer = new ArrayBuffer(len); + var view = new Uint8Array(buffer); + view.set(this.view.subarray(begin, end)); + this.buffer = buffer; + this.view = view; + if (this.markedOffset >= 0) this.markedOffset -= begin; + this.offset = 0; + this.limit = len; + return this; + }; - // Fixed signed 64bit - case ProtoBuf.TYPES["sfixed64"]: - buffer.writeInt64(value); // throws - break; + /** + * Creates a copy of this ByteBuffer's contents. Contents are the bytes between {@link ByteBuffer#offset} and + * {@link ByteBuffer#limit}. + * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}. + * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}. + * @returns {!ByteBuffer} Copy + * @expose + */ + ByteBufferPrototype.copy = function(begin, end) { + if (typeof begin === 'undefined') begin = this.offset; + if (typeof end === 'undefined') end = this.limit; + if (!this.noAssert) { + if (typeof begin !== 'number' || begin % 1 !== 0) + throw TypeError("Illegal begin: Not an integer"); + begin >>>= 0; + if (typeof end !== 'number' || end % 1 !== 0) + throw TypeError("Illegal end: Not an integer"); + end >>>= 0; + if (begin < 0 || begin > end || end > this.buffer.byteLength) + throw RangeError("Illegal range: 0 <= "+begin+" <= "+end+" <= "+this.buffer.byteLength); + } + if (begin === end) + return new ByteBuffer(0, this.littleEndian, this.noAssert); + var capacity = end - begin, + bb = new ByteBuffer(capacity, this.littleEndian, this.noAssert); + bb.offset = 0; + bb.limit = capacity; + if (bb.markedOffset >= 0) bb.markedOffset -= begin; + this.copyTo(bb, 0, begin, end); + return bb; + }; - // Bool - case ProtoBuf.TYPES["bool"]: - if (typeof value === 'string') - buffer.writeVarint32(value.toLowerCase() === 'false' ? 0 : !!value); - else - buffer.writeVarint32(value ? 1 : 0); - break; + /** + * Copies this ByteBuffer's contents to another ByteBuffer. Contents are the bytes between {@link ByteBuffer#offset} and + * {@link ByteBuffer#limit}. + * @param {!ByteBuffer} target Target ByteBuffer + * @param {number=} targetOffset Offset to copy to. Will use and increase the target's {@link ByteBuffer#offset} + * by the number of bytes copied if omitted. + * @param {number=} sourceOffset Offset to start copying from. Will use and increase {@link ByteBuffer#offset} by the + * number of bytes copied if omitted. + * @param {number=} sourceLimit Offset to end copying from, defaults to {@link ByteBuffer#limit} + * @returns {!ByteBuffer} this + * @expose + */ + ByteBufferPrototype.copyTo = function(target, targetOffset, sourceOffset, sourceLimit) { + var relative, + targetRelative; + if (!this.noAssert) { + if (!ByteBuffer.isByteBuffer(target)) + throw TypeError("Illegal target: Not a ByteBuffer"); + } + targetOffset = (targetRelative = typeof targetOffset === 'undefined') ? target.offset : targetOffset | 0; + sourceOffset = (relative = typeof sourceOffset === 'undefined') ? this.offset : sourceOffset | 0; + sourceLimit = typeof sourceLimit === 'undefined' ? this.limit : sourceLimit | 0; - // Constant enum value - case ProtoBuf.TYPES["enum"]: - buffer.writeVarint32(value); - break; + if (targetOffset < 0 || targetOffset > target.buffer.byteLength) + throw RangeError("Illegal target range: 0 <= "+targetOffset+" <= "+target.buffer.byteLength); + if (sourceOffset < 0 || sourceLimit > this.buffer.byteLength) + throw RangeError("Illegal source range: 0 <= "+sourceOffset+" <= "+this.buffer.byteLength); - // 32bit float - case ProtoBuf.TYPES["float"]: - buffer.writeFloat32(value); - break; + var len = sourceLimit - sourceOffset; + if (len === 0) + return target; // Nothing to copy - // 64bit float - case ProtoBuf.TYPES["double"]: - buffer.writeFloat64(value); - break; + target.ensureCapacity(targetOffset + len); - // Length-delimited string - case ProtoBuf.TYPES["string"]: - buffer.writeVString(value); - break; + target.view.set(this.view.subarray(sourceOffset, sourceLimit), targetOffset); - // Length-delimited bytes - case ProtoBuf.TYPES["bytes"]: - if (value.remaining() < 0) - throw Error("Illegal value for "+this.toString(true)+": "+value.remaining()+" bytes remaining"); - var prevOffset = value.offset; - buffer.writeVarint32(value.remaining()); - buffer.append(value); - value.offset = prevOffset; - break; + if (relative) this.offset += len; + if (targetRelative) target.offset += len; - // Embedded message - case ProtoBuf.TYPES["message"]: - var bb = new ByteBuffer().LE(); - this.resolvedType.encode(value, bb); - buffer.writeVarint32(bb.offset); - buffer.append(bb.flip()); - break; + return this; + }; - // Legacy group - case ProtoBuf.TYPES["group"]: - this.resolvedType.encode(value, buffer); - buffer.writeVarint32((id << 3) | ProtoBuf.WIRE_TYPES.ENDGROUP); - break; + /** + * Makes sure that this ByteBuffer is backed by a {@link ByteBuffer#buffer} of at least the specified capacity. If the + * current capacity is exceeded, it will be doubled. If double the current capacity is less than the required capacity, + * the required capacity will be used instead. + * @param {number} capacity Required capacity + * @returns {!ByteBuffer} this + * @expose + */ + ByteBufferPrototype.ensureCapacity = function(capacity) { + var current = this.buffer.byteLength; + if (current < capacity) + return this.resize((current *= 2) > capacity ? current : capacity); + return this; + }; - default: - // We should never end here - throw Error("[INTERNAL] Illegal value to encode in "+this.toString(true)+": "+value+" (unknown type)"); - } - return buffer; - }; + /** + * Overwrites this ByteBuffer's contents with the specified value. Contents are the bytes between + * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. + * @param {number|string} value Byte value to fill with. If given as a string, the first character is used. + * @param {number=} begin Begin offset. Will use and increase {@link ByteBuffer#offset} by the number of bytes + * written if omitted. defaults to {@link ByteBuffer#offset}. + * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}. + * @returns {!ByteBuffer} this + * @expose + * @example `someByteBuffer.clear().fill(0)` fills the entire backing buffer with zeroes + */ + ByteBufferPrototype.fill = function(value, begin, end) { + var relative = typeof begin === 'undefined'; + if (relative) begin = this.offset; + if (typeof value === 'string' && value.length > 0) + value = value.charCodeAt(0); + if (typeof begin === 'undefined') begin = this.offset; + if (typeof end === 'undefined') end = this.limit; + if (!this.noAssert) { + if (typeof value !== 'number' || value % 1 !== 0) + throw TypeError("Illegal value: "+value+" (not an integer)"); + value |= 0; + if (typeof begin !== 'number' || begin % 1 !== 0) + throw TypeError("Illegal begin: Not an integer"); + begin >>>= 0; + if (typeof end !== 'number' || end % 1 !== 0) + throw TypeError("Illegal end: Not an integer"); + end >>>= 0; + if (begin < 0 || begin > end || end > this.buffer.byteLength) + throw RangeError("Illegal range: 0 <= "+begin+" <= "+end+" <= "+this.buffer.byteLength); + } + if (begin >= end) + return this; // Nothing to fill + while (begin < end) this.view[begin++] = value; + if (relative) this.offset = begin; + return this; + }; - /** - * Decode one element value from the specified buffer. - * @param {ByteBuffer} buffer ByteBuffer to decode from - * @param {number} wireType The field wire type - * @param {number} id The field number - * @return {*} Decoded value - * @throws {Error} If the field cannot be decoded - * @expose - */ - ElementPrototype.decode = function(buffer, wireType, id) { - if (wireType != this.type.wireType) - throw Error("Unexpected wire type for element"); + /** + * Makes this ByteBuffer ready for a new sequence of write or relative read operations. Sets `limit = offset` and + * `offset = 0`. Make sure always to flip a ByteBuffer when all relative read or write operations are complete. + * @returns {!ByteBuffer} this + * @expose + */ + ByteBufferPrototype.flip = function() { + this.limit = this.offset; + this.offset = 0; + return this; + }; + /** + * Marks an offset on this ByteBuffer to be used later. + * @param {number=} offset Offset to mark. Defaults to {@link ByteBuffer#offset}. + * @returns {!ByteBuffer} this + * @throws {TypeError} If `offset` is not a valid number + * @throws {RangeError} If `offset` is out of bounds + * @see ByteBuffer#reset + * @expose + */ + ByteBufferPrototype.mark = function(offset) { + offset = typeof offset === 'undefined' ? this.offset : offset; + if (!this.noAssert) { + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 0 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); + } + this.markedOffset = offset; + return this; + }; + /** + * Sets the byte order. + * @param {boolean} littleEndian `true` for little endian byte order, `false` for big endian + * @returns {!ByteBuffer} this + * @expose + */ + ByteBufferPrototype.order = function(littleEndian) { + if (!this.noAssert) { + if (typeof littleEndian !== 'boolean') + throw TypeError("Illegal littleEndian: Not a boolean"); + } + this.littleEndian = !!littleEndian; + return this; + }; - var value, nBytes; - switch (this.type) { - // 32bit signed varint - case ProtoBuf.TYPES["int32"]: - return buffer.readVarint32() | 0; + /** + * Switches (to) little endian byte order. + * @param {boolean=} littleEndian Defaults to `true`, otherwise uses big endian + * @returns {!ByteBuffer} this + * @expose + */ + ByteBufferPrototype.LE = function(littleEndian) { + this.littleEndian = typeof littleEndian !== 'undefined' ? !!littleEndian : true; + return this; + }; - // 32bit unsigned varint - case ProtoBuf.TYPES["uint32"]: - return buffer.readVarint32() >>> 0; - - // 32bit signed varint zig-zag - case ProtoBuf.TYPES["sint32"]: - return buffer.readVarint32ZigZag() | 0; - - // Fixed 32bit unsigned - case ProtoBuf.TYPES["fixed32"]: - return buffer.readUint32() >>> 0; - - case ProtoBuf.TYPES["sfixed32"]: - return buffer.readInt32() | 0; - - // 64bit signed varint - case ProtoBuf.TYPES["int64"]: - return buffer.readVarint64(); - - // 64bit unsigned varint - case ProtoBuf.TYPES["uint64"]: - return buffer.readVarint64().toUnsigned(); - - // 64bit signed varint zig-zag - case ProtoBuf.TYPES["sint64"]: - return buffer.readVarint64ZigZag(); - - // Fixed 64bit unsigned - case ProtoBuf.TYPES["fixed64"]: - return buffer.readUint64(); - - // Fixed 64bit signed - case ProtoBuf.TYPES["sfixed64"]: - return buffer.readInt64(); - - // Bool varint - case ProtoBuf.TYPES["bool"]: - return !!buffer.readVarint32(); + /** + * Switches (to) big endian byte order. + * @param {boolean=} bigEndian Defaults to `true`, otherwise uses little endian + * @returns {!ByteBuffer} this + * @expose + */ + ByteBufferPrototype.BE = function(bigEndian) { + this.littleEndian = typeof bigEndian !== 'undefined' ? !bigEndian : false; + return this; + }; + /** + * Prepends some data to this ByteBuffer. This will overwrite any contents before the specified offset up to the + * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer + * will be resized and its contents moved accordingly. + * @param {!ByteBuffer|string|!ArrayBuffer} source Data to prepend. If `source` is a ByteBuffer, its offset will be + * modified according to the performed read operation. + * @param {(string|number)=} encoding Encoding if `data` is a string ("base64", "hex", "binary", defaults to "utf8") + * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes + * prepended if omitted. + * @returns {!ByteBuffer} this + * @expose + * @example A relative `00<01 02 03>.prepend(<04 05>)` results in `<04 05 01 02 03>, 04 05|` + * @example An absolute `00<01 02 03>.prepend(<04 05>, 2)` results in `04<05 02 03>, 04 05|` + */ + ByteBufferPrototype.prepend = function(source, encoding, offset) { + if (typeof encoding === 'number' || typeof encoding !== 'string') { + offset = encoding; + encoding = undefined; + } + var relative = typeof offset === 'undefined'; + if (relative) offset = this.offset; + if (!this.noAssert) { + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: "+offset+" (not an integer)"); + offset >>>= 0; + if (offset < 0 || offset + 0 > this.buffer.byteLength) + throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); + } + if (!(source instanceof ByteBuffer)) + source = ByteBuffer.wrap(source, encoding); + var len = source.limit - source.offset; + if (len <= 0) return this; // Nothing to prepend + var diff = len - offset; + if (diff > 0) { // Not enough space before offset, so resize + move + var buffer = new ArrayBuffer(this.buffer.byteLength + diff); + var view = new Uint8Array(buffer); + view.set(this.view.subarray(offset, this.buffer.byteLength), len); + this.buffer = buffer; + this.view = view; + this.offset += diff; + if (this.markedOffset >= 0) this.markedOffset += diff; + this.limit += diff; + offset += diff; + } else { + var arrayView = new Uint8Array(this.buffer); + } + this.view.set(source.view.subarray(source.offset, source.limit), offset - len); - // Constant enum value (varint) - case ProtoBuf.TYPES["enum"]: - // The following Builder.Message#set will already throw - return buffer.readVarint32(); + source.offset = source.limit; + if (relative) + this.offset -= len; + return this; + }; - // 32bit float - case ProtoBuf.TYPES["float"]: - return buffer.readFloat(); + /** + * Prepends this ByteBuffer to another ByteBuffer. This will overwrite any contents before the specified offset up to the + * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer + * will be resized and its contents moved accordingly. + * @param {!ByteBuffer} target Target ByteBuffer + * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes + * prepended if omitted. + * @returns {!ByteBuffer} this + * @expose + * @see ByteBuffer#prepend + */ + ByteBufferPrototype.prependTo = function(target, offset) { + target.prepend(this, offset); + return this; + }; + /** + * Prints debug information about this ByteBuffer's contents. + * @param {function(string)=} out Output function to call, defaults to console.log + * @expose + */ + ByteBufferPrototype.printDebug = function(out) { + if (typeof out !== 'function') out = console.log.bind(console); + out( + this.toString()+"\n"+ + "-------------------------------------------------------------------\n"+ + this.toDebug(/* columns */ true) + ); + }; - // 64bit float - case ProtoBuf.TYPES["double"]: - return buffer.readDouble(); + /** + * Gets the number of remaining readable bytes. Contents are the bytes between {@link ByteBuffer#offset} and + * {@link ByteBuffer#limit}, so this returns `limit - offset`. + * @returns {number} Remaining readable bytes. May be negative if `offset > limit`. + * @expose + */ + ByteBufferPrototype.remaining = function() { + return this.limit - this.offset; + }; + /** + * Resets this ByteBuffer's {@link ByteBuffer#offset}. If an offset has been marked through {@link ByteBuffer#mark} + * before, `offset` will be set to {@link ByteBuffer#markedOffset}, which will then be discarded. If no offset has been + * marked, sets `offset = 0`. + * @returns {!ByteBuffer} this + * @see ByteBuffer#mark + * @expose + */ + ByteBufferPrototype.reset = function() { + if (this.markedOffset >= 0) { + this.offset = this.markedOffset; + this.markedOffset = -1; + } else { + this.offset = 0; + } + return this; + }; + /** + * Resizes this ByteBuffer to be backed by a buffer of at least the given capacity. Will do nothing if already that + * large or larger. + * @param {number} capacity Capacity required + * @returns {!ByteBuffer} this + * @throws {TypeError} If `capacity` is not a number + * @throws {RangeError} If `capacity < 0` + * @expose + */ + ByteBufferPrototype.resize = function(capacity) { + if (!this.noAssert) { + if (typeof capacity !== 'number' || capacity % 1 !== 0) + throw TypeError("Illegal capacity: "+capacity+" (not an integer)"); + capacity |= 0; + if (capacity < 0) + throw RangeError("Illegal capacity: 0 <= "+capacity); + } + if (this.buffer.byteLength < capacity) { + var buffer = new ArrayBuffer(capacity); + var view = new Uint8Array(buffer); + view.set(this.view); + this.buffer = buffer; + this.view = view; + } + return this; + }; + /** + * Reverses this ByteBuffer's contents. + * @param {number=} begin Offset to start at, defaults to {@link ByteBuffer#offset} + * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit} + * @returns {!ByteBuffer} this + * @expose + */ + ByteBufferPrototype.reverse = function(begin, end) { + if (typeof begin === 'undefined') begin = this.offset; + if (typeof end === 'undefined') end = this.limit; + if (!this.noAssert) { + if (typeof begin !== 'number' || begin % 1 !== 0) + throw TypeError("Illegal begin: Not an integer"); + begin >>>= 0; + if (typeof end !== 'number' || end % 1 !== 0) + throw TypeError("Illegal end: Not an integer"); + end >>>= 0; + if (begin < 0 || begin > end || end > this.buffer.byteLength) + throw RangeError("Illegal range: 0 <= "+begin+" <= "+end+" <= "+this.buffer.byteLength); + } + if (begin === end) + return this; // Nothing to reverse + Array.prototype.reverse.call(this.view.subarray(begin, end)); + return this; + }; + /** + * Skips the next `length` bytes. This will just advance + * @param {number} length Number of bytes to skip. May also be negative to move the offset back. + * @returns {!ByteBuffer} this + * @expose + */ + ByteBufferPrototype.skip = function(length) { + if (!this.noAssert) { + if (typeof length !== 'number' || length % 1 !== 0) + throw TypeError("Illegal length: "+length+" (not an integer)"); + length |= 0; + } + var offset = this.offset + length; + if (!this.noAssert) { + if (offset < 0 || offset > this.buffer.byteLength) + throw RangeError("Illegal length: 0 <= "+this.offset+" + "+length+" <= "+this.buffer.byteLength); + } + this.offset = offset; + return this; + }; - // Length-delimited string - case ProtoBuf.TYPES["string"]: - return buffer.readVString(); + /** + * Slices this ByteBuffer by creating a cloned instance with `offset = begin` and `limit = end`. + * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}. + * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}. + * @returns {!ByteBuffer} Clone of this ByteBuffer with slicing applied, backed by the same {@link ByteBuffer#buffer} + * @expose + */ + ByteBufferPrototype.slice = function(begin, end) { + if (typeof begin === 'undefined') begin = this.offset; + if (typeof end === 'undefined') end = this.limit; + if (!this.noAssert) { + if (typeof begin !== 'number' || begin % 1 !== 0) + throw TypeError("Illegal begin: Not an integer"); + begin >>>= 0; + if (typeof end !== 'number' || end % 1 !== 0) + throw TypeError("Illegal end: Not an integer"); + end >>>= 0; + if (begin < 0 || begin > end || end > this.buffer.byteLength) + throw RangeError("Illegal range: 0 <= "+begin+" <= "+end+" <= "+this.buffer.byteLength); + } + var bb = this.clone(); + bb.offset = begin; + bb.limit = end; + return bb; + }; + /** + * Returns a copy of the backing buffer that contains this ByteBuffer's contents. Contents are the bytes between + * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. + * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory if + * possible. Defaults to `false` + * @returns {!ArrayBuffer} Contents as an ArrayBuffer + * @expose + */ + ByteBufferPrototype.toBuffer = function(forceCopy) { + var offset = this.offset, + limit = this.limit; + if (!this.noAssert) { + if (typeof offset !== 'number' || offset % 1 !== 0) + throw TypeError("Illegal offset: Not an integer"); + offset >>>= 0; + if (typeof limit !== 'number' || limit % 1 !== 0) + throw TypeError("Illegal limit: Not an integer"); + limit >>>= 0; + if (offset < 0 || offset > limit || limit > this.buffer.byteLength) + throw RangeError("Illegal range: 0 <= "+offset+" <= "+limit+" <= "+this.buffer.byteLength); + } + // NOTE: It's not possible to have another ArrayBuffer reference the same memory as the backing buffer. This is + // possible with Uint8Array#subarray only, but we have to return an ArrayBuffer by contract. So: + if (!forceCopy && offset === 0 && limit === this.buffer.byteLength) + return this.buffer; + if (offset === limit) + return EMPTY_BUFFER; + var buffer = new ArrayBuffer(limit - offset); + new Uint8Array(buffer).set(new Uint8Array(this.buffer).subarray(offset, limit), 0); + return buffer; + }; - // Length-delimited bytes - case ProtoBuf.TYPES["bytes"]: { - nBytes = buffer.readVarint32(); - if (buffer.remaining() < nBytes) - throw Error("Illegal number of bytes for "+this.toString(true)+": "+nBytes+" required but got only "+buffer.remaining()); - value = buffer.clone(); // Offset already set - value.limit = value.offset+nBytes; - buffer.offset += nBytes; - return value; - } + /** + * Returns a raw buffer compacted to contain this ByteBuffer's contents. Contents are the bytes between + * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. This is an alias of {@link ByteBuffer#toBuffer}. + * @function + * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory. + * Defaults to `false` + * @returns {!ArrayBuffer} Contents as an ArrayBuffer + * @expose + */ + ByteBufferPrototype.toArrayBuffer = ByteBufferPrototype.toBuffer; - // Length-delimited embedded message - case ProtoBuf.TYPES["message"]: { - nBytes = buffer.readVarint32(); - return this.resolvedType.decode(buffer, nBytes); - } + /** + * Converts the ByteBuffer's contents to a string. + * @param {string=} encoding Output encoding. Returns an informative string representation if omitted but also allows + * direct conversion to "utf8", "hex", "base64" and "binary" encoding. "debug" returns a hex representation with + * highlighted offsets. + * @param {number=} begin Offset to begin at, defaults to {@link ByteBuffer#offset} + * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit} + * @returns {string} String representation + * @throws {Error} If `encoding` is invalid + * @expose + */ + ByteBufferPrototype.toString = function(encoding, begin, end) { + if (typeof encoding === 'undefined') + return "ByteBufferAB(offset="+this.offset+",markedOffset="+this.markedOffset+",limit="+this.limit+",capacity="+this.capacity()+")"; + if (typeof encoding === 'number') + encoding = "utf8", + begin = encoding, + end = begin; + switch (encoding) { + case "utf8": + return this.toUTF8(begin, end); + case "base64": + return this.toBase64(begin, end); + case "hex": + return this.toHex(begin, end); + case "binary": + return this.toBinary(begin, end); + case "debug": + return this.toDebug(); + case "columns": + return this.toColumns(); + default: + throw Error("Unsupported encoding: "+encoding); + } + }; - // Legacy group - case ProtoBuf.TYPES["group"]: - return this.resolvedType.decode(buffer, -1, id); - } + // lxiv-embeddable - // We should never end here - throw Error("[INTERNAL] Illegal decode type"); - }; + /** + * lxiv-embeddable (c) 2014 Daniel Wirtz + * Released under the Apache License, Version 2.0 + * see: https://github.com/dcodeIO/lxiv for details + */ + var lxiv = function() { + "use strict"; /** - * Converts a value from a string to the canonical element type. - * - * Legal only when isMapKey is true. - * - * @param {string} str The string value - * @returns {*} The value + * lxiv namespace. + * @type {!Object.} + * @exports lxiv */ - ElementPrototype.valueFromString = function(str) { - if (!this.isMapKey) { - throw Error("valueFromString() called on non-map-key element"); - } - - switch (this.type) { - case ProtoBuf.TYPES["int32"]: - case ProtoBuf.TYPES["sint32"]: - case ProtoBuf.TYPES["sfixed32"]: - case ProtoBuf.TYPES["uint32"]: - case ProtoBuf.TYPES["fixed32"]: - return this.verifyValue(parseInt(str)); - - case ProtoBuf.TYPES["int64"]: - case ProtoBuf.TYPES["sint64"]: - case ProtoBuf.TYPES["sfixed64"]: - case ProtoBuf.TYPES["uint64"]: - case ProtoBuf.TYPES["fixed64"]: - // Long-based fields support conversions from string already. - return this.verifyValue(str); + var lxiv = {}; - case ProtoBuf.TYPES["bool"]: - return str === "true"; + /** + * Character codes for output. + * @type {!Array.} + * @inner + */ + var aout = [ + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47 + ]; - case ProtoBuf.TYPES["string"]: - return this.verifyValue(str); + /** + * Character codes for input. + * @type {!Array.} + * @inner + */ + var ain = []; + for (var i=0, k=aout.length; i>2)&0x3f]); + t = (b&0x3)<<4; + if ((b = src()) !== null) { + t |= (b>>4)&0xf; + dst(aout[(t|((b>>4)&0xf))&0x3f]); + t = (b&0xf)<<2; + if ((b = src()) !== null) + dst(aout[(t|((b>>6)&0x3))&0x3f]), + dst(aout[b&0x3f]); + else + dst(aout[t&0x3f]), + dst(61); + } else + dst(aout[t&0x3f]), + dst(61), + dst(61); } }; /** - * Converts a value from the canonical element type to a string. - * - * It should be the case that `valueFromString(valueToString(val))` returns - * a value equivalent to `verifyValue(val)` for every legal value of `val` - * according to this element type. - * - * This may be used when the element must be stored or used as a string, - * e.g., as a map key on an Object. - * - * Legal only when isMapKey is true. - * - * @param {*} val The value - * @returns {string} The string form of the value. + * Decodes base64 char codes to bytes. + * @param {!function():number|null} src Characters source as a function returning the next char code respectively + * `null` if there are no more characters left. + * @param {!function(number)} dst Bytes destination as a function successively called with the next byte. + * @throws {Error} If a character code is invalid */ - ElementPrototype.valueToString = function(value) { - if (!this.isMapKey) { - throw Error("valueToString() called on non-map-key element"); + lxiv.decode = function(src, dst) { + var c, t1, t2; + function fail(c) { + throw Error("Illegal character code: "+c); } - - if (this.type === ProtoBuf.TYPES["bytes"]) { - return value.toString("binary"); - } else { - return value.toString(); + while ((c = src()) !== null) { + t1 = ain[c]; + if (typeof t1 === 'undefined') fail(c); + if ((c = src()) !== null) { + t2 = ain[c]; + if (typeof t2 === 'undefined') fail(c); + dst((t1<<2)>>>0|(t2&0x30)>>4); + if ((c = src()) !== null) { + t1 = ain[c]; + if (typeof t1 === 'undefined') + if (c === 61) break; else fail(c); + dst(((t2&0xf)<<4)>>>0|(t1&0x3c)>>2); + if ((c = src()) !== null) { + t2 = ain[c]; + if (typeof t2 === 'undefined') + if (c === 61) break; else fail(c); + dst(((t1&0x3)<<6)>>>0|t2); + } + } + } } }; /** - * @alias ProtoBuf.Reflect.Element - * @expose + * Tests if a string is valid base64. + * @param {string} str String to test + * @returns {boolean} `true` if valid, otherwise `false` */ - Reflect.Element = Element; + lxiv.test = function(str) { + return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(str); + }; - /** - * Constructs a new Message. - * @exports ProtoBuf.Reflect.Message - * @param {!ProtoBuf.Builder} builder Builder reference - * @param {!ProtoBuf.Reflect.Namespace} parent Parent message or namespace - * @param {string} name Message name - * @param {Object.=} options Message options - * @param {boolean=} isGroup `true` if this is a legacy group - * @param {string?} syntax The syntax level of this definition (e.g., proto3) - * @constructor - * @extends ProtoBuf.Reflect.Namespace - */ - var Message = function(builder, parent, name, options, isGroup, syntax) { - Namespace.call(this, builder, parent, name, options, syntax); - - /** - * @override - */ - this.className = "Message"; - - /** - * Extensions range. - * @type {!Array.} - * @expose - */ - this.extensions = [ProtoBuf.ID_MIN, ProtoBuf.ID_MAX]; - - /** - * Runtime message class. - * @type {?function(new:ProtoBuf.Builder.Message)} - * @expose - */ - this.clazz = null; + return lxiv; + }(); - /** - * Whether this is a legacy group or not. - * @type {boolean} - * @expose - */ - this.isGroup = !!isGroup; + // encodings/base64 - // The following cached collections are used to efficiently iterate over or look up fields when decoding. + /** + * Encodes this ByteBuffer's contents to a base64 encoded string. + * @param {number=} begin Offset to begin at, defaults to {@link ByteBuffer#offset}. + * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}. + * @returns {string} Base64 encoded string + * @throws {RangeError} If `begin` or `end` is out of bounds + * @expose + */ + ByteBufferPrototype.toBase64 = function(begin, end) { + if (typeof begin === 'undefined') + begin = this.offset; + if (typeof end === 'undefined') + end = this.limit; + begin = begin | 0; end = end | 0; + if (begin < 0 || end > this.capacity || begin > end) + throw RangeError("begin, end"); + var sd; lxiv.encode(function() { + return begin < end ? this.view[begin++] : null; + }.bind(this), sd = stringDestination()); + return sd(); + }; - /** - * Cached fields. - * @type {?Array.} - * @private - */ - this._fields = null; + /** + * Decodes a base64 encoded string to a ByteBuffer. + * @param {string} str String to decode + * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to + * {@link ByteBuffer.DEFAULT_ENDIAN}. + * @returns {!ByteBuffer} ByteBuffer + * @expose + */ + ByteBuffer.fromBase64 = function(str, littleEndian) { + if (typeof str !== 'string') + throw TypeError("str"); + var bb = new ByteBuffer(str.length/4*3, littleEndian), + i = 0; + lxiv.decode(stringSource(str), function(b) { + bb.view[i++] = b; + }); + bb.limit = i; + return bb; + }; - /** - * Cached fields by id. - * @type {?Object.} - * @private - */ - this._fieldsById = null; + /** + * Encodes a binary string to base64 like `window.btoa` does. + * @param {string} str Binary string + * @returns {string} Base64 encoded string + * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.btoa + * @expose + */ + ByteBuffer.btoa = function(str) { + return ByteBuffer.fromBinary(str).toBase64(); + }; - /** - * Cached fields by name. - * @type {?Object.} - * @private - */ - this._fieldsByName = null; - }; + /** + * Decodes a base64 encoded string to binary like `window.atob` does. + * @param {string} b64 Base64 encoded string + * @returns {string} Binary string + * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.atob + * @expose + */ + ByteBuffer.atob = function(b64) { + return ByteBuffer.fromBase64(b64).toBinary(); + }; - /** - * @alias ProtoBuf.Reflect.Message.prototype - * @inner - */ - var MessagePrototype = Message.prototype = Object.create(Namespace.prototype); + // encodings/binary - /** - * Builds the message and returns the runtime counterpart, which is a fully functional class. - * @see ProtoBuf.Builder.Message - * @param {boolean=} rebuild Whether to rebuild or not, defaults to false - * @return {ProtoBuf.Reflect.Message} Message class - * @throws {Error} If the message cannot be built - * @expose - */ - MessagePrototype.build = function(rebuild) { - if (this.clazz && !rebuild) - return this.clazz; + /** + * Encodes this ByteBuffer to a binary encoded string, that is using only characters 0x00-0xFF as bytes. + * @param {number=} begin Offset to begin at. Defaults to {@link ByteBuffer#offset}. + * @param {number=} end Offset to end at. Defaults to {@link ByteBuffer#limit}. + * @returns {string} Binary encoded string + * @throws {RangeError} If `offset > limit` + * @expose + */ + ByteBufferPrototype.toBinary = function(begin, end) { + if (typeof begin === 'undefined') + begin = this.offset; + if (typeof end === 'undefined') + end = this.limit; + begin |= 0; end |= 0; + if (begin < 0 || end > this.capacity() || begin > end) + throw RangeError("begin, end"); + if (begin === end) + return ""; + var chars = [], + parts = []; + while (begin < end) { + chars.push(this.view[begin++]); + if (chars.length >= 1024) + parts.push(String.fromCharCode.apply(String, chars)), + chars = []; + } + return parts.join('') + String.fromCharCode.apply(String, chars); + }; - // Create the runtime Message class in its own scope - var clazz = (function(ProtoBuf, T) { + /** + * Decodes a binary encoded string, that is using only characters 0x00-0xFF as bytes, to a ByteBuffer. + * @param {string} str String to decode + * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to + * {@link ByteBuffer.DEFAULT_ENDIAN}. + * @returns {!ByteBuffer} ByteBuffer + * @expose + */ + ByteBuffer.fromBinary = function(str, littleEndian) { + if (typeof str !== 'string') + throw TypeError("str"); + var i = 0, + k = str.length, + charCode, + bb = new ByteBuffer(k, littleEndian); + while (i 0xff) + throw RangeError("illegal char code: "+charCode); + bb.view[i++] = charCode; + } + bb.limit = k; + return bb; + }; - var fields = T.getChildren(ProtoBuf.Reflect.Message.Field), - oneofs = T.getChildren(ProtoBuf.Reflect.Message.OneOf); + // encodings/debug - /** - * Constructs a new runtime Message. - * @name ProtoBuf.Builder.Message - * @class Barebone of all runtime messages. - * @param {!Object.|string} values Preset values - * @param {...string} var_args - * @constructor - * @throws {Error} If the message cannot be created - */ - var Message = function(values, var_args) { - ProtoBuf.Builder.Message.call(this); + /** + * Encodes this ByteBuffer to a hex encoded string with marked offsets. Offset symbols are: + * * `<` : offset, + * * `'` : markedOffset, + * * `>` : limit, + * * `|` : offset and limit, + * * `[` : offset and markedOffset, + * * `]` : markedOffset and limit, + * * `!` : offset, markedOffset and limit + * @param {boolean=} columns If `true` returns two columns hex + ascii, defaults to `false` + * @returns {string|!Array.} Debug string or array of lines if `asArray = true` + * @expose + * @example `>00'01 02<03` contains four bytes with `limit=0, markedOffset=1, offset=3` + * @example `00[01 02 03>` contains four bytes with `offset=markedOffset=1, limit=4` + * @example `00|01 02 03` contains four bytes with `offset=limit=1, markedOffset=-1` + * @example `|` contains zero bytes with `offset=limit=0, markedOffset=-1` + */ + ByteBufferPrototype.toDebug = function(columns) { + var i = -1, + k = this.buffer.byteLength, + b, + hex = "", + asc = "", + out = ""; + while (i 32 && b < 127 ? String.fromCharCode(b) : '.'; + } + ++i; + if (columns) { + if (i > 0 && i % 16 === 0 && i !== k) { + while (hex.length < 3*16+3) hex += " "; + out += hex+asc+"\n"; + hex = asc = ""; + } + } + if (i === this.offset && i === this.limit) + hex += i === this.markedOffset ? "!" : "|"; + else if (i === this.offset) + hex += i === this.markedOffset ? "[" : "<"; + else if (i === this.limit) + hex += i === this.markedOffset ? "]" : ">"; + else + hex += i === this.markedOffset ? "'" : (columns || (i !== 0 && i !== k) ? " " : ""); + } + if (columns && hex !== " ") { + while (hex.length < 3*16+3) + hex += " "; + out += hex + asc + "\n"; + } + return columns ? out : hex; + }; - // Create virtual oneof properties - for (var i=0, k=oneofs.length; i 0) { - var value; - // Set field values from a values object - if (arguments.length === 1 && values !== null && typeof values === 'object' && - /* not _another_ Message */ (typeof values.encode !== 'function' || values instanceof Message) && - /* not a repeated field */ !Array.isArray(values) && - /* not a Map */ !(values instanceof ProtoBuf.Map) && - /* not a ByteBuffer */ !ByteBuffer.isByteBuffer(values) && - /* not an ArrayBuffer */ !(values instanceof ArrayBuffer) && - /* not a Long */ !(ProtoBuf.Long && values instanceof ProtoBuf.Long)) { - this.$set(values); - } else // Set field values from arguments, in declaration order - for (i=0, k=arguments.length; i} keyOrObj String key or plain object holding multiple values - * @param {(*|boolean)=} value Value to set if key is a string, otherwise omitted - * @param {boolean=} noAssert Whether to not assert for an actual field / proper value type, defaults to `false` - * @returns {!ProtoBuf.Builder.Message} this - * @throws {Error} If the value cannot be set - * @expose - */ - MessagePrototype.set = function(keyOrObj, value, noAssert) { - if (keyOrObj && typeof keyOrObj === 'object') { - noAssert = value; - for (var ikey in keyOrObj) - if (keyOrObj.hasOwnProperty(ikey) && typeof (value = keyOrObj[ikey]) !== 'undefined') - this.$set(ikey, value, noAssert); - return this; + bb.offset = bb.markedOffset = j; + rs = false; + break; + case '<': + if (!noAssert) { + if (ho) { + fail = true; + break; + } + ho = true; } - var field = T._fieldsByName[keyOrObj]; + bb.offset = j; + rs = false; + break; + case ']': if (!noAssert) { - if (!field) - throw Error(this+"#"+keyOrObj+" is not a field: undefined"); - if (!(field instanceof ProtoBuf.Reflect.Message.Field)) - throw Error(this+"#"+keyOrObj+" is not a field: "+field.toString(true)); - this[field.name] = (value = field.verifyValue(value)); // May throw - } else - this[keyOrObj] = value; - if (field && field.oneof) { // Field is part of an OneOf (not a virtual OneOf field) - var currentField = this[field.oneof.name]; // Virtual field references currently set field - if (value !== null) { - if (currentField !== null && currentField !== field.name) - this[currentField] = null; // Clear currently set field - this[field.oneof.name] = field.name; // Point virtual field at this field - } else if (/* value === null && */currentField === keyOrObj) - this[field.oneof.name] = null; // Clear virtual field (current field explicitly cleared) + if (hl || hm) { + fail = true; + break; + } + hl = hm = true; } - return this; - }; + bb.limit = bb.markedOffset = j; + rs = false; + break; + case '>': + if (!noAssert) { + if (hl) { + fail = true; + break; + } + hl = true; + } + bb.limit = j; + rs = false; + break; + case "'": + if (!noAssert) { + if (hm) { + fail = true; + break; + } + hm = true; + } + bb.markedOffset = j; + rs = false; + break; + case ' ': + rs = false; + break; + default: + if (!noAssert) { + if (rs) { + fail = true; + break; + } + } + b = parseInt(ch+str.charAt(i++), 16); + if (!noAssert) { + if (isNaN(b) || b < 0 || b > 255) + throw TypeError("Illegal str: Not a debug encoded string"); + } + bb.view[j++] = b; + rs = true; + } + if (fail) + throw TypeError("Illegal str: Invalid symbol at "+i); + } + if (!noAssert) { + if (!ho || !hl) + throw TypeError("Illegal str: Missing offset or limit"); + if (j} keyOrObj String key or plain object holding multiple values - * @param {(*|boolean)=} value Value to set if key is a string, otherwise omitted - * @param {boolean=} noAssert Whether to not assert the value, defaults to `false` - * @throws {Error} If the value cannot be set - * @expose - */ - MessagePrototype.$set = MessagePrototype.set; + // encodings/hex - /** - * Gets a field's value. - * @name ProtoBuf.Builder.Message#get - * @function - * @param {string} key Key - * @param {boolean=} noAssert Whether to not assert for an actual field, defaults to `false` - * @return {*} Value - * @throws {Error} If there is no such field - * @expose - */ - MessagePrototype.get = function(key, noAssert) { - if (noAssert) - return this[key]; - var field = T._fieldsByName[key]; - if (!field || !(field instanceof ProtoBuf.Reflect.Message.Field)) - throw Error(this+"#"+key+" is not a field: undefined"); - if (!(field instanceof ProtoBuf.Reflect.Message.Field)) - throw Error(this+"#"+key+" is not a field: "+field.toString(true)); - return this[field.name]; - }; + /** + * Encodes this ByteBuffer's contents to a hex encoded string. + * @param {number=} begin Offset to begin at. Defaults to {@link ByteBuffer#offset}. + * @param {number=} end Offset to end at. Defaults to {@link ByteBuffer#limit}. + * @returns {string} Hex encoded string + * @expose + */ + ByteBufferPrototype.toHex = function(begin, end) { + begin = typeof begin === 'undefined' ? this.offset : begin; + end = typeof end === 'undefined' ? this.limit : end; + if (!this.noAssert) { + if (typeof begin !== 'number' || begin % 1 !== 0) + throw TypeError("Illegal begin: Not an integer"); + begin >>>= 0; + if (typeof end !== 'number' || end % 1 !== 0) + throw TypeError("Illegal end: Not an integer"); + end >>>= 0; + if (begin < 0 || begin > end || end > this.buffer.byteLength) + throw RangeError("Illegal range: 0 <= "+begin+" <= "+end+" <= "+this.buffer.byteLength); + } + var out = new Array(end - begin), + b; + while (begin < end) { + b = this.view[begin++]; + if (b < 0x10) + out.push("0", b.toString(16)); + else out.push(b.toString(16)); + } + return out.join(''); + }; - /** - * Gets a field's value. This is an alias for {@link ProtoBuf.Builder.Message#$get}. - * @name ProtoBuf.Builder.Message#$get - * @function - * @param {string} key Key - * @return {*} Value - * @throws {Error} If there is no such field - * @expose - */ - MessagePrototype.$get = MessagePrototype.get; + /** + * Decodes a hex encoded string to a ByteBuffer. + * @param {string} str String to decode + * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to + * {@link ByteBuffer.DEFAULT_ENDIAN}. + * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to + * {@link ByteBuffer.DEFAULT_NOASSERT}. + * @returns {!ByteBuffer} ByteBuffer + * @expose + */ + ByteBuffer.fromHex = function(str, littleEndian, noAssert) { + if (!noAssert) { + if (typeof str !== 'string') + throw TypeError("Illegal str: Not a string"); + if (str.length % 2 !== 0) + throw TypeError("Illegal str: Length not a multiple of 2"); + } + var k = str.length, + bb = new ByteBuffer((k / 2) | 0, littleEndian), + b; + for (var i=0, j=0; i 255) + throw TypeError("Illegal str: Contains non-hex characters"); + bb.view[j++] = b; + } + bb.limit = j; + return bb; + }; - // Getters and setters + // utfx-embeddable - for (var i=0; i + * Released under the Apache License, Version 2.0 + * see: https://github.com/dcodeIO/utfx for details + */ + var utfx = function() { + "use strict"; - if (T.builder.options['populateAccessors']) - (function(field) { - // set/get[SomeValue] - var Name = field.originalName.replace(/(_[a-zA-Z])/g, function(match) { - return match.toUpperCase().replace('_',''); - }); - Name = Name.substring(0,1).toUpperCase() + Name.substring(1); + /** + * utfx namespace. + * @inner + * @type {!Object.} + */ + var utfx = {}; - // set/get_[some_value] FIXME: Do we really need these? - var name = field.originalName.replace(/([A-Z])/g, function(match) { - return "_"+match; - }); + /** + * Maximum valid code point. + * @type {number} + * @const + */ + utfx.MAX_CODEPOINT = 0x10FFFF; - /** - * The current field's unbound setter function. - * @function - * @param {*} value - * @param {boolean=} noAssert - * @returns {!ProtoBuf.Builder.Message} - * @inner - */ - var setter = function(value, noAssert) { - this[field.name] = noAssert ? value : field.verifyValue(value); - return this; - }; + /** + * Encodes UTF8 code points to UTF8 bytes. + * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point + * respectively `null` if there are no more code points left or a single numeric code point. + * @param {!function(number)} dst Bytes destination as a function successively called with the next byte + */ + utfx.encodeUTF8 = function(src, dst) { + var cp = null; + if (typeof src === 'number') + cp = src, + src = function() { return null; }; + while (cp !== null || (cp = src()) !== null) { + if (cp < 0x80) + dst(cp&0x7F); + else if (cp < 0x800) + dst(((cp>>6)&0x1F)|0xC0), + dst((cp&0x3F)|0x80); + else if (cp < 0x10000) + dst(((cp>>12)&0x0F)|0xE0), + dst(((cp>>6)&0x3F)|0x80), + dst((cp&0x3F)|0x80); + else + dst(((cp>>18)&0x07)|0xF0), + dst(((cp>>12)&0x3F)|0x80), + dst(((cp>>6)&0x3F)|0x80), + dst((cp&0x3F)|0x80); + cp = null; + } + }; - /** - * The current field's unbound getter function. - * @function - * @returns {*} - * @inner - */ - var getter = function() { - return this[field.name]; - }; + /** + * Decodes UTF8 bytes to UTF8 code points. + * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there + * are no more bytes left. + * @param {!function(number)} dst Code points destination as a function successively called with each decoded code point. + * @throws {RangeError} If a starting byte is invalid in UTF8 + * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the + * remaining bytes. + */ + utfx.decodeUTF8 = function(src, dst) { + var a, b, c, d, fail = function(b) { + b = b.slice(0, b.indexOf(null)); + var err = Error(b.toString()); + err.name = "TruncatedError"; + err['bytes'] = b; + throw err; + }; + while ((a = src()) !== null) { + if ((a&0x80) === 0) + dst(a); + else if ((a&0xE0) === 0xC0) + ((b = src()) === null) && fail([a, b]), + dst(((a&0x1F)<<6) | (b&0x3F)); + else if ((a&0xF0) === 0xE0) + ((b=src()) === null || (c=src()) === null) && fail([a, b, c]), + dst(((a&0x0F)<<12) | ((b&0x3F)<<6) | (c&0x3F)); + else if ((a&0xF8) === 0xF0) + ((b=src()) === null || (c=src()) === null || (d=src()) === null) && fail([a, b, c ,d]), + dst(((a&0x07)<<18) | ((b&0x3F)<<12) | ((c&0x3F)<<6) | (d&0x3F)); + else throw RangeError("Illegal starting byte: "+a); + } + }; - if (T.getChild("set"+Name) === null) - /** - * Sets a value. This method is present for each field, but only if there is no name conflict with - * another field. - * @name ProtoBuf.Builder.Message#set[SomeField] - * @function - * @param {*} value Value to set - * @param {boolean=} noAssert Whether to not assert the value, defaults to `false` - * @returns {!ProtoBuf.Builder.Message} this - * @abstract - * @throws {Error} If the value cannot be set - */ - MessagePrototype["set"+Name] = setter; + /** + * Converts UTF16 characters to UTF8 code points. + * @param {!function():number|null} src Characters source as a function returning the next char code respectively + * `null` if there are no more characters left. + * @param {!function(number)} dst Code points destination as a function successively called with each converted code + * point. + */ + utfx.UTF16toUTF8 = function(src, dst) { + var c1, c2 = null; + while (true) { + if ((c1 = c2 !== null ? c2 : src()) === null) + break; + if (c1 >= 0xD800 && c1 <= 0xDFFF) { + if ((c2 = src()) !== null) { + if (c2 >= 0xDC00 && c2 <= 0xDFFF) { + dst((c1-0xD800)*0x400+c2-0xDC00+0x10000); + c2 = null; continue; + } + } + } + dst(c1); + } + if (c2 !== null) dst(c2); + }; - if (T.getChild("set_"+name) === null) - /** - * Sets a value. This method is present for each field, but only if there is no name conflict with - * another field. - * @name ProtoBuf.Builder.Message#set_[some_field] - * @function - * @param {*} value Value to set - * @param {boolean=} noAssert Whether to not assert the value, defaults to `false` - * @returns {!ProtoBuf.Builder.Message} this - * @abstract - * @throws {Error} If the value cannot be set - */ - MessagePrototype["set_"+name] = setter; + /** + * Converts UTF8 code points to UTF16 characters. + * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point + * respectively `null` if there are no more code points left or a single numeric code point. + * @param {!function(number)} dst Characters destination as a function successively called with each converted char code. + * @throws {RangeError} If a code point is out of range + */ + utfx.UTF8toUTF16 = function(src, dst) { + var cp = null; + if (typeof src === 'number') + cp = src, src = function() { return null; }; + while (cp !== null || (cp = src()) !== null) { + if (cp <= 0xFFFF) + dst(cp); + else + cp -= 0x10000, + dst((cp>>10)+0xD800), + dst((cp%0x400)+0xDC00); + cp = null; + } + }; - if (T.getChild("get"+Name) === null) - /** - * Gets a value. This method is present for each field, but only if there is no name conflict with - * another field. - * @name ProtoBuf.Builder.Message#get[SomeField] - * @function - * @abstract - * @return {*} The value - */ - MessagePrototype["get"+Name] = getter; + /** + * Converts and encodes UTF16 characters to UTF8 bytes. + * @param {!function():number|null} src Characters source as a function returning the next char code respectively `null` + * if there are no more characters left. + * @param {!function(number)} dst Bytes destination as a function successively called with the next byte. + */ + utfx.encodeUTF16toUTF8 = function(src, dst) { + utfx.UTF16toUTF8(src, function(cp) { + utfx.encodeUTF8(cp, dst); + }); + }; - if (T.getChild("get_"+name) === null) - /** - * Gets a value. This method is present for each field, but only if there is no name conflict with - * another field. - * @name ProtoBuf.Builder.Message#get_[some_field] - * @function - * @return {*} The value - * @abstract - */ - MessagePrototype["get_"+name] = getter; + /** + * Decodes and converts UTF8 bytes to UTF16 characters. + * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there + * are no more bytes left. + * @param {!function(number)} dst Characters destination as a function successively called with each converted char code. + * @throws {RangeError} If a starting byte is invalid in UTF8 + * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the remaining bytes. + */ + utfx.decodeUTF8toUTF16 = function(src, dst) { + utfx.decodeUTF8(src, function(cp) { + utfx.UTF8toUTF16(cp, dst); + }); + }; - })(field); - } + /** + * Calculates the byte length of an UTF8 code point. + * @param {number} cp UTF8 code point + * @returns {number} Byte length + */ + utfx.calculateCodePoint = function(cp) { + return (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4; + }; - // En-/decoding + /** + * Calculates the number of UTF8 bytes required to store UTF8 code points. + * @param {(!function():number|null)} src Code points source as a function returning the next code point respectively + * `null` if there are no more code points left. + * @returns {number} The number of UTF8 bytes required + */ + utfx.calculateUTF8 = function(src) { + var cp, l=0; + while ((cp = src()) !== null) + l += (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4; + return l; + }; - /** - * Encodes the message. - * @name ProtoBuf.Builder.Message#$encode - * @function - * @param {(!ByteBuffer|boolean)=} buffer ByteBuffer to encode to. Will create a new one and flip it if omitted. - * @param {boolean=} noVerify Whether to not verify field values, defaults to `false` - * @return {!ByteBuffer} Encoded message as a ByteBuffer - * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still - * returns the encoded ByteBuffer in the `encoded` property on the error. - * @expose - * @see ProtoBuf.Builder.Message#encode64 - * @see ProtoBuf.Builder.Message#encodeHex - * @see ProtoBuf.Builder.Message#encodeAB - */ - MessagePrototype.encode = function(buffer, noVerify) { - if (typeof buffer === 'boolean') - noVerify = buffer, - buffer = undefined; - var isNew = false; - if (!buffer) - buffer = new ByteBuffer(), - isNew = true; - var le = buffer.littleEndian; - try { - T.encode(this, buffer.LE(), noVerify); - return (isNew ? buffer.flip() : buffer).LE(le); - } catch (e) { - buffer.LE(le); - throw(e); - } - }; + /** + * Calculates the number of UTF8 code points respectively UTF8 bytes required to store UTF16 char codes. + * @param {(!function():number|null)} src Characters source as a function returning the next char code respectively + * `null` if there are no more characters left. + * @returns {!Array.} The number of UTF8 code points at index 0 and the number of UTF8 bytes required at index 1. + */ + utfx.calculateUTF16asUTF8 = function(src) { + var n=0, l=0; + utfx.UTF16toUTF8(src, function(cp) { + ++n; l += (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4; + }); + return [n,l]; + }; - /** - * Encodes a message using the specified data payload. - * @param {!Object.} data Data payload - * @param {(!ByteBuffer|boolean)=} buffer ByteBuffer to encode to. Will create a new one and flip it if omitted. - * @param {boolean=} noVerify Whether to not verify field values, defaults to `false` - * @return {!ByteBuffer} Encoded message as a ByteBuffer - * @expose - */ - Message.encode = function(data, buffer, noVerify) { - return new Message(data).encode(buffer, noVerify); - }; + return utfx; + }(); - /** - * Calculates the byte length of the message. - * @name ProtoBuf.Builder.Message#calculate - * @function - * @returns {number} Byte length - * @throws {Error} If the message cannot be calculated or if required fields are missing. - * @expose - */ - MessagePrototype.calculate = function() { - return T.calculate(this); - }; + // encodings/utf8 - /** - * Encodes the varint32 length-delimited message. - * @name ProtoBuf.Builder.Message#encodeDelimited - * @function - * @param {(!ByteBuffer|boolean)=} buffer ByteBuffer to encode to. Will create a new one and flip it if omitted. - * @return {!ByteBuffer} Encoded message as a ByteBuffer - * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still - * returns the encoded ByteBuffer in the `encoded` property on the error. - * @expose - */ - MessagePrototype.encodeDelimited = function(buffer) { - var isNew = false; - if (!buffer) - buffer = new ByteBuffer(), - isNew = true; - var enc = new ByteBuffer().LE(); - T.encode(this, enc).flip(); - buffer.writeVarint32(enc.remaining()); - buffer.append(enc); - return isNew ? buffer.flip() : buffer; - }; + /** + * Encodes this ByteBuffer's contents between {@link ByteBuffer#offset} and {@link ByteBuffer#limit} to an UTF8 encoded + * string. + * @returns {string} Hex encoded string + * @throws {RangeError} If `offset > limit` + * @expose + */ + ByteBufferPrototype.toUTF8 = function(begin, end) { + if (typeof begin === 'undefined') begin = this.offset; + if (typeof end === 'undefined') end = this.limit; + if (!this.noAssert) { + if (typeof begin !== 'number' || begin % 1 !== 0) + throw TypeError("Illegal begin: Not an integer"); + begin >>>= 0; + if (typeof end !== 'number' || end % 1 !== 0) + throw TypeError("Illegal end: Not an integer"); + end >>>= 0; + if (begin < 0 || begin > end || end > this.buffer.byteLength) + throw RangeError("Illegal range: 0 <= "+begin+" <= "+end+" <= "+this.buffer.byteLength); + } + var sd; try { + utfx.decodeUTF8toUTF16(function() { + return begin < end ? this.view[begin++] : null; + }.bind(this), sd = stringDestination()); + } catch (e) { + if (begin !== end) + throw RangeError("Illegal range: Truncated data, "+begin+" != "+end); + } + return sd(); + }; - /** - * Directly encodes the message to an ArrayBuffer. - * @name ProtoBuf.Builder.Message#encodeAB - * @function - * @return {ArrayBuffer} Encoded message as ArrayBuffer - * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still - * returns the encoded ArrayBuffer in the `encoded` property on the error. - * @expose - */ - MessagePrototype.encodeAB = function() { - try { - return this.encode().toArrayBuffer(); - } catch (e) { - if (e["encoded"]) e["encoded"] = e["encoded"].toArrayBuffer(); - throw(e); - } - }; + /** + * Decodes an UTF8 encoded string to a ByteBuffer. + * @param {string} str String to decode + * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to + * {@link ByteBuffer.DEFAULT_ENDIAN}. + * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to + * {@link ByteBuffer.DEFAULT_NOASSERT}. + * @returns {!ByteBuffer} ByteBuffer + * @expose + */ + ByteBuffer.fromUTF8 = function(str, littleEndian, noAssert) { + if (!noAssert) + if (typeof str !== 'string') + throw TypeError("Illegal str: Not a string"); + var bb = new ByteBuffer(utfx.calculateUTF16asUTF8(stringSource(str), true)[1], littleEndian, noAssert), + i = 0; + utfx.encodeUTF16toUTF8(stringSource(str), function(b) { + bb.view[i++] = b; + }); + bb.limit = i; + return bb; + }; - /** - * Returns the message as an ArrayBuffer. This is an alias for {@link ProtoBuf.Builder.Message#encodeAB}. - * @name ProtoBuf.Builder.Message#toArrayBuffer - * @function - * @return {ArrayBuffer} Encoded message as ArrayBuffer - * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still - * returns the encoded ArrayBuffer in the `encoded` property on the error. - * @expose - */ - MessagePrototype.toArrayBuffer = MessagePrototype.encodeAB; + return ByteBuffer; +}); + +},{"long":23}],23:[function(require,module,exports){ +/* + Copyright 2013 Daniel Wirtz + Copyright 2009 The Closure Library Authors. All Rights Reserved. - /** - * Directly encodes the message to a node Buffer. - * @name ProtoBuf.Builder.Message#encodeNB - * @function - * @return {!Buffer} - * @throws {Error} If the message cannot be encoded, not running under node.js or if required fields are - * missing. The later still returns the encoded node Buffer in the `encoded` property on the error. - * @expose - */ - MessagePrototype.encodeNB = function() { - try { - return this.encode().toBuffer(); - } catch (e) { - if (e["encoded"]) e["encoded"] = e["encoded"].toBuffer(); - throw(e); - } - }; + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at - /** - * Returns the message as a node Buffer. This is an alias for {@link ProtoBuf.Builder.Message#encodeNB}. - * @name ProtoBuf.Builder.Message#toBuffer - * @function - * @return {!Buffer} - * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still - * returns the encoded node Buffer in the `encoded` property on the error. - * @expose - */ - MessagePrototype.toBuffer = MessagePrototype.encodeNB; + http://www.apache.org/licenses/LICENSE-2.0 - /** - * Directly encodes the message to a base64 encoded string. - * @name ProtoBuf.Builder.Message#encode64 - * @function - * @return {string} Base64 encoded string - * @throws {Error} If the underlying buffer cannot be encoded or if required fields are missing. The later - * still returns the encoded base64 string in the `encoded` property on the error. - * @expose - */ - MessagePrototype.encode64 = function() { - try { - return this.encode().toBase64(); - } catch (e) { - if (e["encoded"]) e["encoded"] = e["encoded"].toBase64(); - throw(e); - } - }; + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS-IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ - /** - * Returns the message as a base64 encoded string. This is an alias for {@link ProtoBuf.Builder.Message#encode64}. - * @name ProtoBuf.Builder.Message#toBase64 - * @function - * @return {string} Base64 encoded string - * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still - * returns the encoded base64 string in the `encoded` property on the error. - * @expose - */ - MessagePrototype.toBase64 = MessagePrototype.encode64; +/** + * @license long.js (c) 2013 Daniel Wirtz + * Released under the Apache License, Version 2.0 + * see: https://github.com/dcodeIO/long.js for details + */ +(function(global, factory) { - /** - * Directly encodes the message to a hex encoded string. - * @name ProtoBuf.Builder.Message#encodeHex - * @function - * @return {string} Hex encoded string - * @throws {Error} If the underlying buffer cannot be encoded or if required fields are missing. The later - * still returns the encoded hex string in the `encoded` property on the error. - * @expose - */ - MessagePrototype.encodeHex = function() { - try { - return this.encode().toHex(); - } catch (e) { - if (e["encoded"]) e["encoded"] = e["encoded"].toHex(); - throw(e); - } - }; + /* AMD */ if (typeof define === 'function' && define["amd"]) + define([], factory); + /* CommonJS */ else if (typeof require === 'function' && typeof module === "object" && module && module["exports"]) + module["exports"] = factory(); + /* Global */ else + (global["dcodeIO"] = global["dcodeIO"] || {})["Long"] = factory(); - /** - * Returns the message as a hex encoded string. This is an alias for {@link ProtoBuf.Builder.Message#encodeHex}. - * @name ProtoBuf.Builder.Message#toHex - * @function - * @return {string} Hex encoded string - * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still - * returns the encoded hex string in the `encoded` property on the error. - * @expose - */ - MessagePrototype.toHex = MessagePrototype.encodeHex; +})(this, function() { + "use strict"; - /** - * Clones a message object or field value to a raw object. - * @param {*} obj Object to clone - * @param {boolean} binaryAsBase64 Whether to include binary data as base64 strings or as a buffer otherwise - * @param {boolean} longsAsStrings Whether to encode longs as strings - * @param {!ProtoBuf.Reflect.T=} resolvedType The resolved field type if a field - * @returns {*} Cloned object - * @inner - */ - function cloneRaw(obj, binaryAsBase64, longsAsStrings, resolvedType) { - if (obj === null || typeof obj !== 'object') { - // Convert enum values to their respective names - if (resolvedType && resolvedType instanceof ProtoBuf.Reflect.Enum) { - var name = ProtoBuf.Reflect.Enum.getName(resolvedType.object, obj); - if (name !== null) - return name; - } - // Pass-through string, number, boolean, null... - return obj; - } - // Convert ByteBuffers to raw buffer or strings - if (ByteBuffer.isByteBuffer(obj)) - return binaryAsBase64 ? obj.toBase64() : obj.toBuffer(); - // Convert Longs to proper objects or strings - if (ProtoBuf.Long.isLong(obj)) - return longsAsStrings ? obj.toString() : ProtoBuf.Long.fromValue(obj); - var clone; - // Clone arrays - if (Array.isArray(obj)) { - clone = []; - obj.forEach(function(v, k) { - clone[k] = cloneRaw(v, binaryAsBase64, longsAsStrings, resolvedType); - }); - return clone; - } - clone = {}; - // Convert maps to objects - if (obj instanceof ProtoBuf.Map) { - var it = obj.entries(); - for (var e = it.next(); !e.done; e = it.next()) - clone[obj.keyElem.valueToString(e.value[0])] = cloneRaw(e.value[1], binaryAsBase64, longsAsStrings, obj.valueElem.resolvedType); - return clone; - } - // Everything else is a non-null object - var type = obj.$type, - field = undefined; - for (var i in obj) - if (obj.hasOwnProperty(i)) { - if (type && (field = type.getChild(i))) - clone[i] = cloneRaw(obj[i], binaryAsBase64, longsAsStrings, field.resolvedType); - else - clone[i] = cloneRaw(obj[i], binaryAsBase64, longsAsStrings); - } - return clone; - } + /** + * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers. + * See the from* functions below for more convenient ways of constructing Longs. + * @exports Long + * @class A Long class for representing a 64 bit two's-complement integer value. + * @param {number} low The low (signed) 32 bits of the long + * @param {number} high The high (signed) 32 bits of the long + * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed + * @constructor + */ + function Long(low, high, unsigned) { - /** - * Returns the message's raw payload. - * @param {boolean=} binaryAsBase64 Whether to include binary data as base64 strings instead of Buffers, defaults to `false` - * @param {boolean} longsAsStrings Whether to encode longs as strings - * @returns {Object.} Raw payload - * @expose - */ - MessagePrototype.toRaw = function(binaryAsBase64, longsAsStrings) { - return cloneRaw(this, !!binaryAsBase64, !!longsAsStrings, this.$type); - }; + /** + * The low 32 bits as a signed value. + * @type {number} + */ + this.low = low | 0; - /** - * Encodes a message to JSON. - * @returns {string} JSON string - * @expose - */ - MessagePrototype.encodeJSON = function() { - return JSON.stringify( - cloneRaw(this, - /* binary-as-base64 */ true, - /* longs-as-strings */ true, - this.$type - ) - ); - }; + /** + * The high 32 bits as a signed value. + * @type {number} + */ + this.high = high | 0; - /** - * Decodes a message from the specified buffer or string. - * @name ProtoBuf.Builder.Message.decode - * @function - * @param {!ByteBuffer|!ArrayBuffer|!Buffer|string} buffer Buffer to decode from - * @param {string=} enc Encoding if buffer is a string: hex, utf8 (not recommended), defaults to base64 - * @return {!ProtoBuf.Builder.Message} Decoded message - * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still - * returns the decoded message with missing fields in the `decoded` property on the error. - * @expose - * @see ProtoBuf.Builder.Message.decode64 - * @see ProtoBuf.Builder.Message.decodeHex - */ - Message.decode = function(buffer, enc) { - if (typeof buffer === 'string') - buffer = ByteBuffer.wrap(buffer, enc ? enc : "base64"); - buffer = ByteBuffer.isByteBuffer(buffer) ? buffer : ByteBuffer.wrap(buffer); // May throw - var le = buffer.littleEndian; - try { - var msg = T.decode(buffer.LE()); - buffer.LE(le); - return msg; - } catch (e) { - buffer.LE(le); - throw(e); - } - }; + /** + * Whether unsigned or not. + * @type {boolean} + */ + this.unsigned = !!unsigned; + } - /** - * Decodes a varint32 length-delimited message from the specified buffer or string. - * @name ProtoBuf.Builder.Message.decodeDelimited - * @function - * @param {!ByteBuffer|!ArrayBuffer|!Buffer|string} buffer Buffer to decode from - * @param {string=} enc Encoding if buffer is a string: hex, utf8 (not recommended), defaults to base64 - * @return {ProtoBuf.Builder.Message} Decoded message or `null` if not enough bytes are available yet - * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still - * returns the decoded message with missing fields in the `decoded` property on the error. - * @expose - */ - Message.decodeDelimited = function(buffer, enc) { - if (typeof buffer === 'string') - buffer = ByteBuffer.wrap(buffer, enc ? enc : "base64"); - buffer = ByteBuffer.isByteBuffer(buffer) ? buffer : ByteBuffer.wrap(buffer); // May throw - if (buffer.remaining() < 1) - return null; - var off = buffer.offset, - len = buffer.readVarint32(); - if (buffer.remaining() < len) { - buffer.offset = off; - return null; - } - try { - var msg = T.decode(buffer.slice(buffer.offset, buffer.offset + len).LE()); - buffer.offset += len; - return msg; - } catch (err) { - buffer.offset += len; - throw err; - } - }; + // The internal representation of a long is the two given signed, 32-bit values. + // We use 32-bit pieces because these are the size of integers on which + // Javascript performs bit-operations. For operations like addition and + // multiplication, we split each number into 16 bit pieces, which can easily be + // multiplied within Javascript's floating-point representation without overflow + // or change in sign. + // + // In the algorithms below, we frequently reduce the negative case to the + // positive case by negating the input(s) and then post-processing the result. + // Note that we must ALWAYS check specially whether those values are MIN_VALUE + // (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as + // a positive number, it overflows back into a negative). Not handling this + // case would often result in infinite recursion. + // + // Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from* + // methods on which they depend. - /** - * Decodes the message from the specified base64 encoded string. - * @name ProtoBuf.Builder.Message.decode64 - * @function - * @param {string} str String to decode from - * @return {!ProtoBuf.Builder.Message} Decoded message - * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still - * returns the decoded message with missing fields in the `decoded` property on the error. - * @expose - */ - Message.decode64 = function(str) { - return Message.decode(str, "base64"); - }; + /** + * An indicator used to reliably determine if an object is a Long or not. + * @type {boolean} + * @const + * @private + */ + Long.prototype.__isLong__; - /** - * Decodes the message from the specified hex encoded string. - * @name ProtoBuf.Builder.Message.decodeHex - * @function - * @param {string} str String to decode from - * @return {!ProtoBuf.Builder.Message} Decoded message - * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still - * returns the decoded message with missing fields in the `decoded` property on the error. - * @expose - */ - Message.decodeHex = function(str) { - return Message.decode(str, "hex"); - }; + Object.defineProperty(Long.prototype, "__isLong__", { + value: true, + enumerable: false, + configurable: false + }); - /** - * Decodes the message from a JSON string. - * @name ProtoBuf.Builder.Message.decodeJSON - * @function - * @param {string} str String to decode from - * @return {!ProtoBuf.Builder.Message} Decoded message - * @throws {Error} If the message cannot be decoded or if required fields are - * missing. - * @expose - */ - Message.decodeJSON = function(str) { - return new Message(JSON.parse(str)); - }; + /** + * @function + * @param {*} obj Object + * @returns {boolean} + * @inner + */ + function isLong(obj) { + return (obj && obj["__isLong__"]) === true; + } - // Utility + /** + * Tests if the specified object is a Long. + * @function + * @param {*} obj Object + * @returns {boolean} + */ + Long.isLong = isLong; - /** - * Returns a string representation of this Message. - * @name ProtoBuf.Builder.Message#toString - * @function - * @return {string} String representation as of ".Fully.Qualified.MessageName" - * @expose - */ - MessagePrototype.toString = function() { - return T.toString(); - }; + /** + * A cache of the Long representations of small integer values. + * @type {!Object} + * @inner + */ + var INT_CACHE = {}; - // Properties + /** + * A cache of the Long representations of small unsigned integer values. + * @type {!Object} + * @inner + */ + var UINT_CACHE = {}; - /** - * Message options. - * @name ProtoBuf.Builder.Message.$options - * @type {Object.} - * @expose - */ - var $optionsS; // cc needs this + /** + * @param {number} value + * @param {boolean=} unsigned + * @returns {!Long} + * @inner + */ + function fromInt(value, unsigned) { + var obj, cachedObj, cache; + if (unsigned) { + value >>>= 0; + if (cache = (0 <= value && value < 256)) { + cachedObj = UINT_CACHE[value]; + if (cachedObj) + return cachedObj; + } + obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true); + if (cache) + UINT_CACHE[value] = obj; + return obj; + } else { + value |= 0; + if (cache = (-128 <= value && value < 128)) { + cachedObj = INT_CACHE[value]; + if (cachedObj) + return cachedObj; + } + obj = fromBits(value, value < 0 ? -1 : 0, false); + if (cache) + INT_CACHE[value] = obj; + return obj; + } + } - /** - * Message options. - * @name ProtoBuf.Builder.Message#$options - * @type {Object.} - * @expose - */ - var $options; + /** + * Returns a Long representing the given 32 bit integer value. + * @function + * @param {number} value The 32 bit integer in question + * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed + * @returns {!Long} The corresponding Long value + */ + Long.fromInt = fromInt; - /** - * Reflection type. - * @name ProtoBuf.Builder.Message.$type - * @type {!ProtoBuf.Reflect.Message} - * @expose - */ - var $typeS; + /** + * @param {number} value + * @param {boolean=} unsigned + * @returns {!Long} + * @inner + */ + function fromNumber(value, unsigned) { + if (isNaN(value) || !isFinite(value)) + return unsigned ? UZERO : ZERO; + if (unsigned) { + if (value < 0) + return UZERO; + if (value >= TWO_PWR_64_DBL) + return MAX_UNSIGNED_VALUE; + } else { + if (value <= -TWO_PWR_63_DBL) + return MIN_VALUE; + if (value + 1 >= TWO_PWR_63_DBL) + return MAX_VALUE; + } + if (value < 0) + return fromNumber(-value, unsigned).neg(); + return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned); + } - /** - * Reflection type. - * @name ProtoBuf.Builder.Message#$type - * @type {!ProtoBuf.Reflect.Message} - * @expose - */ - var $type; + /** + * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned. + * @function + * @param {number} value The number in question + * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed + * @returns {!Long} The corresponding Long value + */ + Long.fromNumber = fromNumber; - if (Object.defineProperty) - Object.defineProperty(Message, '$options', { "value": T.buildOpt() }), - Object.defineProperty(MessagePrototype, "$options", { "value": Message["$options"] }), - Object.defineProperty(Message, "$type", { "value": T }), - Object.defineProperty(MessagePrototype, "$type", { "value": T }); + /** + * @param {number} lowBits + * @param {number} highBits + * @param {boolean=} unsigned + * @returns {!Long} + * @inner + */ + function fromBits(lowBits, highBits, unsigned) { + return new Long(lowBits, highBits, unsigned); + } - return Message; + /** + * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is + * assumed to use 32 bits. + * @function + * @param {number} lowBits The low 32 bits + * @param {number} highBits The high 32 bits + * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed + * @returns {!Long} The corresponding Long value + */ + Long.fromBits = fromBits; - })(ProtoBuf, this); + /** + * @function + * @param {number} base + * @param {number} exponent + * @returns {number} + * @inner + */ + var pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4) - // Static enums and prototyped sub-messages / cached collections - this._fields = []; - this._fieldsById = {}; - this._fieldsByName = {}; - for (var i=0, k=this.children.length, child; i 0) + throw Error('interior hyphen'); + else if (p === 0) { + return fromString(str.substring(1), unsigned, radix).neg(); + } - /** - * Calculates a runtime message's byte length. - * @param {!ProtoBuf.Builder.Message} message Runtime message to encode - * @returns {number} Byte length - * @throws {Error} If required fields are missing or the message cannot be calculated for another reason - * @expose - */ - MessagePrototype.calculate = function(message) { - for (var n=0, i=0, k=this._fields.length, field, val; i>> 3; - switch (wireType) { - case ProtoBuf.WIRE_TYPES.VARINT: - do tag = buf.readUint8(); - while ((tag & 0x80) === 0x80); - break; - case ProtoBuf.WIRE_TYPES.BITS64: - buf.offset += 8; - break; - case ProtoBuf.WIRE_TYPES.LDELIM: - tag = buf.readVarint32(); // reads the varint - buf.offset += tag; // skips n bytes - break; - case ProtoBuf.WIRE_TYPES.STARTGROUP: - skipTillGroupEnd(id, buf); - break; - case ProtoBuf.WIRE_TYPES.ENDGROUP: - if (id === expectedId) - return false; - else - throw Error("Illegal GROUPEND after unknown group: "+id+" ("+expectedId+" expected)"); - case ProtoBuf.WIRE_TYPES.BITS32: - buf.offset += 4; - break; - default: - throw Error("Illegal wire type in unknown group "+expectedId+": "+wireType); + var result = ZERO; + for (var i = 0; i < str.length; i += 8) { + var size = Math.min(8, str.length - i), + value = parseInt(str.substring(i, i + size), radix); + if (size < 8) { + var power = fromNumber(pow_dbl(radix, size)); + result = result.mul(power).add(fromNumber(value)); + } else { + result = result.mul(radixToPower); + result = result.add(fromNumber(value)); } - return true; } + result.unsigned = unsigned; + return result; + } - /** - * Decodes an encoded message and returns the decoded message. - * @param {ByteBuffer} buffer ByteBuffer to decode from - * @param {number=} length Message length. Defaults to decode all the available data. - * @param {number=} expectedGroupEndId Expected GROUPEND id if this is a legacy group - * @return {ProtoBuf.Builder.Message} Decoded message - * @throws {Error} If the message cannot be decoded - * @expose - */ - MessagePrototype.decode = function(buffer, length, expectedGroupEndId) { - length = typeof length === 'number' ? length : -1; - var start = buffer.offset, - msg = new (this.clazz)(), - tag, wireType, id, field; - while (buffer.offset < start+length || (length === -1 && buffer.remaining() > 0)) { - tag = buffer.readVarint32(); - wireType = tag & 0x07; - id = tag >>> 3; - if (wireType === ProtoBuf.WIRE_TYPES.ENDGROUP) { - if (id !== expectedGroupEndId) - throw Error("Illegal group end indicator for "+this.toString(true)+": "+id+" ("+(expectedGroupEndId ? expectedGroupEndId+" expected" : "not a group")+")"); - break; - } - if (!(field = this._fieldsById[id])) { - // "messages created by your new code can be parsed by your old code: old binaries simply ignore the new field when parsing." - switch (wireType) { - case ProtoBuf.WIRE_TYPES.VARINT: - buffer.readVarint32(); - break; - case ProtoBuf.WIRE_TYPES.BITS32: - buffer.offset += 4; - break; - case ProtoBuf.WIRE_TYPES.BITS64: - buffer.offset += 8; - break; - case ProtoBuf.WIRE_TYPES.LDELIM: - var len = buffer.readVarint32(); - buffer.offset += len; - break; - case ProtoBuf.WIRE_TYPES.STARTGROUP: - while (skipTillGroupEnd(id, buffer)) {} - break; - default: - throw Error("Illegal wire type for unknown field "+id+" in "+this.toString(true)+"#decode: "+wireType); - } - continue; - } - if (field.repeated && !field.options["packed"]) { - msg[field.name].push(field.decode(wireType, buffer)); - } else if (field.map) { - var keyval = field.decode(wireType, buffer); - msg[field.name].set(keyval[0], keyval[1]); - } else { - msg[field.name] = field.decode(wireType, buffer); - if (field.oneof) { // Field is part of an OneOf (not a virtual OneOf field) - var currentField = msg[field.oneof.name]; // Virtual field references currently set field - if (currentField !== null && currentField !== field.name) - msg[currentField] = null; // Clear currently set field - msg[field.oneof.name] = field.name; // Point virtual field at this field - } - } - } + /** + * Returns a Long representation of the given string, written using the specified radix. + * @function + * @param {string} str The textual representation of the Long + * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to `false` for signed + * @param {number=} radix The radix in which the text is written (2-36), defaults to 10 + * @returns {!Long} The corresponding Long value + */ + Long.fromString = fromString; - // Check if all required fields are present and set default values for optional fields that are not - for (var i=0, k=this._fields.length; i=} options Options - * @param {!ProtoBuf.Reflect.Message.OneOf=} oneof Enclosing OneOf - * @param {string?} syntax The syntax level of this definition (e.g., proto3) - * @constructor - * @extends ProtoBuf.Reflect.T - */ - var Field = function(builder, message, rule, keytype, type, name, id, options, oneof, syntax) { - T.call(this, builder, message, name); + // NOTE: the compiler should inline these constant values below and then remove these variables, so there should be + // no runtime penalty for these. - /** - * @override - */ - this.className = "Message.Field"; + /** + * @type {number} + * @const + * @inner + */ + var TWO_PWR_16_DBL = 1 << 16; - /** - * Message field required flag. - * @type {boolean} - * @expose - */ - this.required = rule === "required"; + /** + * @type {number} + * @const + * @inner + */ + var TWO_PWR_24_DBL = 1 << 24; - /** - * Message field repeated flag. - * @type {boolean} - * @expose - */ - this.repeated = rule === "repeated"; + /** + * @type {number} + * @const + * @inner + */ + var TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL; - /** - * Message field map flag. - * @type {boolean} - * @expose - */ - this.map = rule === "map"; + /** + * @type {number} + * @const + * @inner + */ + var TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL; - /** - * Message field key type. Type reference string if unresolved, protobuf - * type if resolved. Valid only if this.map === true, null otherwise. - * @type {string|{name: string, wireType: number}|null} - * @expose - */ - this.keyType = keytype || null; + /** + * @type {number} + * @const + * @inner + */ + var TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2; - /** - * Message field type. Type reference string if unresolved, protobuf type if - * resolved. In a map field, this is the value type. - * @type {string|{name: string, wireType: number}} - * @expose - */ - this.type = type; + /** + * @type {!Long} + * @const + * @inner + */ + var TWO_PWR_24 = fromInt(TWO_PWR_24_DBL); - /** - * Resolved type reference inside the global namespace. - * @type {ProtoBuf.Reflect.T|null} - * @expose - */ - this.resolvedType = null; + /** + * @type {!Long} + * @inner + */ + var ZERO = fromInt(0); - /** - * Unique message field id. - * @type {number} - * @expose - */ - this.id = id; + /** + * Signed zero. + * @type {!Long} + */ + Long.ZERO = ZERO; - /** - * Message field options. - * @type {!Object.} - * @dict - * @expose - */ - this.options = options || {}; + /** + * @type {!Long} + * @inner + */ + var UZERO = fromInt(0, true); - /** - * Default value. - * @type {*} - * @expose - */ - this.defaultValue = null; + /** + * Unsigned zero. + * @type {!Long} + */ + Long.UZERO = UZERO; - /** - * Enclosing OneOf. - * @type {?ProtoBuf.Reflect.Message.OneOf} - * @expose - */ - this.oneof = oneof || null; + /** + * @type {!Long} + * @inner + */ + var ONE = fromInt(1); - /** - * Syntax level of this definition (e.g., proto3). - * @type {string} - * @expose - */ - this.syntax = syntax || 'proto2'; + /** + * Signed one. + * @type {!Long} + */ + Long.ONE = ONE; - /** - * Original field name. - * @type {string} - * @expose - */ - this.originalName = this.name; // Used to revert camelcase transformation on naming collisions + /** + * @type {!Long} + * @inner + */ + var UONE = fromInt(1, true); - /** - * Element implementation. Created in build() after types are resolved. - * @type {ProtoBuf.Element} - * @expose - */ - this.element = null; + /** + * Unsigned one. + * @type {!Long} + */ + Long.UONE = UONE; - /** - * Key element implementation, for map fields. Created in build() after - * types are resolved. - * @type {ProtoBuf.Element} - * @expose - */ - this.keyElement = null; + /** + * @type {!Long} + * @inner + */ + var NEG_ONE = fromInt(-1); - // Convert field names to camel case notation if the override is set - if (this.builder.options['convertFieldsToCamelCase'] && !(this instanceof Message.ExtensionField)) - this.name = ProtoBuf.Util.toCamelCase(this.name); - }; + /** + * Signed negative one. + * @type {!Long} + */ + Long.NEG_ONE = NEG_ONE; - /** - * @alias ProtoBuf.Reflect.Message.Field.prototype - * @inner - */ - var FieldPrototype = Field.prototype = Object.create(T.prototype); + /** + * @type {!Long} + * @inner + */ + var MAX_VALUE = fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false); - /** - * Builds the field. - * @override - * @expose - */ - FieldPrototype.build = function() { - this.element = new Element(this.type, this.resolvedType, false, this.syntax); - if (this.map) - this.keyElement = new Element(this.keyType, undefined, true, this.syntax); + /** + * Maximum signed value. + * @type {!Long} + */ + Long.MAX_VALUE = MAX_VALUE; - // In proto3, fields do not have field presence, and every field is set to - // its type's default value ("", 0, 0.0, or false). - if (this.syntax === 'proto3' && !this.repeated && !this.map) - this.defaultValue = Element.defaultFieldValue(this.type); + /** + * @type {!Long} + * @inner + */ + var MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true); - // Otherwise, default values are present when explicitly specified - else if (typeof this.options['default'] !== 'undefined') - this.defaultValue = this.verifyValue(this.options['default']); - }; + /** + * Maximum unsigned value. + * @type {!Long} + */ + Long.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE; - /** - * Checks if the given value can be set for this field. - * @param {*} value Value to check - * @param {boolean=} skipRepeated Whether to skip the repeated value check or not. Defaults to false. - * @return {*} Verified, maybe adjusted, value - * @throws {Error} If the value cannot be set for this field - * @expose - */ - FieldPrototype.verifyValue = function(value, skipRepeated) { - skipRepeated = skipRepeated || false; - var fail = function(val, msg) { - throw Error("Illegal value for "+this.toString(true)+" of type "+this.type.name+": "+val+" ("+msg+")"); - }.bind(this); - if (value === null) { // NULL values for optional fields - if (this.required) - fail(typeof value, "required"); - if (this.syntax === 'proto3' && this.type !== ProtoBuf.TYPES["message"]) - fail(typeof value, "proto3 field without field presence cannot be null"); - return null; - } - var i; - if (this.repeated && !skipRepeated) { // Repeated values as arrays - if (!Array.isArray(value)) - value = [value]; - var res = []; - for (i=0; i 0; + /** + * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer. + * @returns {number} + */ + LongPrototype.toInt = function toInt() { + return this.unsigned ? this.low >>> 0 : this.low; + }; - case ProtoBuf.TYPES["bytes"]: - return value.remaining() > 0; + /** + * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa). + * @returns {number} + */ + LongPrototype.toNumber = function toNumber() { + if (this.unsigned) + return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0); + return this.high * TWO_PWR_32_DBL + (this.low >>> 0); + }; - case ProtoBuf.TYPES["enum"]: - return value !== 0; + /** + * Converts the Long to a string written in the specified radix. + * @param {number=} radix Radix (2-36), defaults to 10 + * @returns {string} + * @override + * @throws {RangeError} If `radix` is out of range + */ + LongPrototype.toString = function toString(radix) { + radix = radix || 10; + if (radix < 2 || 36 < radix) + throw RangeError('radix'); + if (this.isZero()) + return '0'; + if (this.isNegative()) { // Unsigned Longs are never negative + if (this.eq(MIN_VALUE)) { + // We need to change the Long value before it can be negated, so we remove + // the bottom-most digit in this base and then recurse to do the rest. + var radixLong = fromNumber(radix), + div = this.div(radixLong), + rem1 = div.mul(radixLong).sub(this); + return div.toString(radix) + rem1.toInt().toString(radix); + } else + return '-' + this.neg().toString(radix); + } - case ProtoBuf.TYPES["message"]: - return value !== null; - default: - return true; + // Do several (6) digits each time through the loop, so as to + // minimize the calls to the very expensive emulated div. + var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned), + rem = this; + var result = ''; + while (true) { + var remDiv = rem.div(radixToPower), + intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0, + digits = intval.toString(radix); + rem = remDiv; + if (rem.isZero()) + return digits + result; + else { + while (digits.length < 6) + digits = '0' + digits; + result = '' + digits + result; } - }; + } + }; - /** - * Encodes the specified field value to the specified buffer. - * @param {*} value Verified field value - * @param {ByteBuffer} buffer ByteBuffer to encode to - * @param {!ProtoBuf.Builder.Message} message Runtime message - * @return {ByteBuffer} The ByteBuffer for chaining - * @throws {Error} If the field cannot be encoded - * @expose - */ - FieldPrototype.encode = function(value, buffer, message) { - if (this.type === null || typeof this.type !== 'object') - throw Error("[INTERNAL] Unresolved type in "+this.toString(true)+": "+this.type); - if (value === null || (this.repeated && value.length == 0)) - return buffer; // Optional omitted - try { - if (this.repeated) { - var i; - // "Only repeated fields of primitive numeric types (types which use the varint, 32-bit, or 64-bit wire - // types) can be declared 'packed'." - if (this.options["packed"] && ProtoBuf.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType) >= 0) { - // "All of the elements of the field are packed into a single key-value pair with wire type 2 - // (length-delimited). Each element is encoded the same way it would be normally, except without a - // tag preceding it." - buffer.writeVarint32((this.id << 3) | ProtoBuf.WIRE_TYPES.LDELIM); - buffer.ensureCapacity(buffer.offset += 1); // We do not know the length yet, so let's assume a varint of length 1 - var start = buffer.offset; // Remember where the contents begin - for (i=0; i 1) { // We need to move the contents - var contents = buffer.slice(start, buffer.offset); - start += varintLen-1; - buffer.offset = start; - buffer.append(contents); - } - buffer.writeVarint32(len, start-varintLen); - } else { - // "If your message definition has repeated elements (without the [packed=true] option), the encoded - // message has zero or more key-value pairs with the same tag number" - for (i=0; i>> 0; + }; - // Write out the key and val. - buffer.writeVarint32((1 << 3) | this.keyType.wireType); - this.keyElement.encodeValue(1, key, buffer); - buffer.writeVarint32((2 << 3) | this.type.wireType); - this.element.encodeValue(2, val, buffer); - }, this); - } else { - if (this.hasWirePresence(value, message)) { - buffer.writeVarint32((this.id << 3) | this.type.wireType); - this.element.encodeValue(this.id, value, buffer); - } - } - } catch (e) { - throw Error("Illegal value for "+this.toString(true)+": "+value+" ("+e+")"); - } - return buffer; - }; + /** + * Gets the low 32 bits as a signed integer. + * @returns {number} Signed low bits + */ + LongPrototype.getLowBits = function getLowBits() { + return this.low; + }; - /** - * Calculates the length of this field's value on the network level. - * @param {*} value Field value - * @param {!ProtoBuf.Builder.Message} message Runtime message - * @returns {number} Byte length - * @expose - */ - FieldPrototype.calculate = function(value, message) { - value = this.verifyValue(value); // May throw - if (this.type === null || typeof this.type !== 'object') - throw Error("[INTERNAL] Unresolved type in "+this.toString(true)+": "+this.type); - if (value === null || (this.repeated && value.length == 0)) - return 0; // Optional omitted - var n = 0; - try { - if (this.repeated) { - var i, ni; - if (this.options["packed"] && ProtoBuf.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType) >= 0) { - n += ByteBuffer.calculateVarint32((this.id << 3) | ProtoBuf.WIRE_TYPES.LDELIM); - ni = 0; - for (i=0; i>> 0; + }; - n += ByteBuffer.calculateVarint32((this.id << 3) | ProtoBuf.WIRE_TYPES.LDELIM); - n += ByteBuffer.calculateVarint32(length); - n += length; - }, this); - } else { - if (this.hasWirePresence(value, message)) { - n += ByteBuffer.calculateVarint32((this.id << 3) | this.type.wireType); - n += this.element.calculateLength(this.id, value); - } - } - } catch (e) { - throw Error("Illegal value for "+this.toString(true)+": "+value+" ("+e+")"); - } - return n; - }; + /** + * Gets the number of bits needed to represent the absolute value of this Long. + * @returns {number} + */ + LongPrototype.getNumBitsAbs = function getNumBitsAbs() { + if (this.isNegative()) // Unsigned Longs are never negative + return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs(); + var val = this.high != 0 ? this.high : this.low; + for (var bit = 31; bit > 0; bit--) + if ((val & (1 << bit)) != 0) + break; + return this.high != 0 ? bit + 33 : bit + 1; + }; - /** - * Decode the field value from the specified buffer. - * @param {number} wireType Leading wire type - * @param {ByteBuffer} buffer ByteBuffer to decode from - * @param {boolean=} skipRepeated Whether to skip the repeated check or not. Defaults to false. - * @return {*} Decoded value: array for packed repeated fields, [key, value] for - * map fields, or an individual value otherwise. - * @throws {Error} If the field cannot be decoded - * @expose - */ - FieldPrototype.decode = function(wireType, buffer, skipRepeated) { - var value, nBytes; + /** + * Tests if this Long's value equals zero. + * @returns {boolean} + */ + LongPrototype.isZero = function isZero() { + return this.high === 0 && this.low === 0; + }; - // We expect wireType to match the underlying type's wireType unless we see - // a packed repeated field, or unless this is a map field. - var wireTypeOK = - (!this.map && wireType == this.type.wireType) || - (!skipRepeated && this.repeated && this.options["packed"] && - wireType == ProtoBuf.WIRE_TYPES.LDELIM) || - (this.map && wireType == ProtoBuf.WIRE_TYPES.LDELIM); - if (!wireTypeOK) - throw Error("Illegal wire type for field "+this.toString(true)+": "+wireType+" ("+this.type.wireType+" expected)"); + /** + * Tests if this Long's value is negative. + * @returns {boolean} + */ + LongPrototype.isNegative = function isNegative() { + return !this.unsigned && this.high < 0; + }; - // Handle packed repeated fields. - if (wireType == ProtoBuf.WIRE_TYPES.LDELIM && this.repeated && this.options["packed"] && ProtoBuf.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType) >= 0) { - if (!skipRepeated) { - nBytes = buffer.readVarint32(); - nBytes = buffer.offset + nBytes; // Limit - var values = []; - while (buffer.offset < nBytes) - values.push(this.decode(this.type.wireType, buffer, true)); - return values; - } - // Read the next value otherwise... - } + /** + * Tests if this Long's value is positive. + * @returns {boolean} + */ + LongPrototype.isPositive = function isPositive() { + return this.unsigned || this.high >= 0; + }; - // Handle maps. - if (this.map) { - // Read one (key, value) submessage, and return [key, value] - var key = Element.defaultFieldValue(this.keyType); - value = Element.defaultFieldValue(this.type); + /** + * Tests if this Long's value is odd. + * @returns {boolean} + */ + LongPrototype.isOdd = function isOdd() { + return (this.low & 1) === 1; + }; - // Read the length - nBytes = buffer.readVarint32(); - if (buffer.remaining() < nBytes) - throw Error("Illegal number of bytes for "+this.toString(true)+": "+nBytes+" required but got only "+buffer.remaining()); + /** + * Tests if this Long's value is even. + * @returns {boolean} + */ + LongPrototype.isEven = function isEven() { + return (this.low & 1) === 0; + }; - // Get a sub-buffer of this key/value submessage - var msgbuf = buffer.clone(); - msgbuf.limit = msgbuf.offset + nBytes; - buffer.offset += nBytes; + /** + * Tests if this Long's value equals the specified's. + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ + LongPrototype.equals = function equals(other) { + if (!isLong(other)) + other = fromValue(other); + if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1) + return false; + return this.high === other.high && this.low === other.low; + }; - while (msgbuf.remaining() > 0) { - var tag = msgbuf.readVarint32(); - wireType = tag & 0x07; - var id = tag >>> 3; - if (id === 1) { - key = this.keyElement.decode(msgbuf, wireType, id); - } else if (id === 2) { - value = this.element.decode(msgbuf, wireType, id); - } else { - throw Error("Unexpected tag in map field key/value submessage"); - } - } + /** + * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ + LongPrototype.eq = LongPrototype.equals; - return [key, value]; - } + /** + * Tests if this Long's value differs from the specified's. + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ + LongPrototype.notEquals = function notEquals(other) { + return !this.eq(/* validates */ other); + }; - // Handle singular and non-packed repeated field values. - return this.element.decode(buffer, wireType, this.id); - }; + /** + * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ + LongPrototype.neq = LongPrototype.notEquals; - /** - * @alias ProtoBuf.Reflect.Message.Field - * @expose - */ - Reflect.Message.Field = Field; + /** + * Tests if this Long's value is less than the specified's. + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ + LongPrototype.lessThan = function lessThan(other) { + return this.comp(/* validates */ other) < 0; + }; - /** - * Constructs a new Message ExtensionField. - * @exports ProtoBuf.Reflect.Message.ExtensionField - * @param {!ProtoBuf.Builder} builder Builder reference - * @param {!ProtoBuf.Reflect.Message} message Message reference - * @param {string} rule Rule, one of requried, optional, repeated - * @param {string} type Data type, e.g. int32 - * @param {string} name Field name - * @param {number} id Unique field id - * @param {!Object.=} options Options - * @constructor - * @extends ProtoBuf.Reflect.Message.Field - */ - var ExtensionField = function(builder, message, rule, type, name, id, options) { - Field.call(this, builder, message, rule, /* keytype = */ null, type, name, id, options); + /** + * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ + LongPrototype.lt = LongPrototype.lessThan; - /** - * Extension reference. - * @type {!ProtoBuf.Reflect.Extension} - * @expose - */ - this.extension; - }; + /** + * Tests if this Long's value is less than or equal the specified's. + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ + LongPrototype.lessThanOrEqual = function lessThanOrEqual(other) { + return this.comp(/* validates */ other) <= 0; + }; - // Extends Field - ExtensionField.prototype = Object.create(Field.prototype); + /** + * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ + LongPrototype.lte = LongPrototype.lessThanOrEqual; - /** - * @alias ProtoBuf.Reflect.Message.ExtensionField - * @expose - */ - Reflect.Message.ExtensionField = ExtensionField; + /** + * Tests if this Long's value is greater than the specified's. + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ + LongPrototype.greaterThan = function greaterThan(other) { + return this.comp(/* validates */ other) > 0; + }; - /** - * Constructs a new Message OneOf. - * @exports ProtoBuf.Reflect.Message.OneOf - * @param {!ProtoBuf.Builder} builder Builder reference - * @param {!ProtoBuf.Reflect.Message} message Message reference - * @param {string} name OneOf name - * @constructor - * @extends ProtoBuf.Reflect.T - */ - var OneOf = function(builder, message, name) { - T.call(this, builder, message, name); + /** + * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ + LongPrototype.gt = LongPrototype.greaterThan; - /** - * Enclosed fields. - * @type {!Array.} - * @expose - */ - this.fields = []; - }; + /** + * Tests if this Long's value is greater than or equal the specified's. + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ + LongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) { + return this.comp(/* validates */ other) >= 0; + }; - /** - * @alias ProtoBuf.Reflect.Message.OneOf - * @expose - */ - Reflect.Message.OneOf = OneOf; + /** + * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ + LongPrototype.gte = LongPrototype.greaterThanOrEqual; - /** - * Constructs a new Enum. - * @exports ProtoBuf.Reflect.Enum - * @param {!ProtoBuf.Builder} builder Builder reference - * @param {!ProtoBuf.Reflect.T} parent Parent Reflect object - * @param {string} name Enum name - * @param {Object.=} options Enum options - * @param {string?} syntax The syntax level (e.g., proto3) - * @constructor - * @extends ProtoBuf.Reflect.Namespace - */ - var Enum = function(builder, parent, name, options, syntax) { - Namespace.call(this, builder, parent, name, options, syntax); + /** + * Compares this Long's value with the specified's. + * @param {!Long|number|string} other Other value + * @returns {number} 0 if they are the same, 1 if the this is greater and -1 + * if the given one is greater + */ + LongPrototype.compare = function compare(other) { + if (!isLong(other)) + other = fromValue(other); + if (this.eq(other)) + return 0; + var thisNeg = this.isNegative(), + otherNeg = other.isNegative(); + if (thisNeg && !otherNeg) + return -1; + if (!thisNeg && otherNeg) + return 1; + // At this point the sign bits are the same + if (!this.unsigned) + return this.sub(other).isNegative() ? -1 : 1; + // Both are positive if at least one is unsigned + return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1; + }; - /** - * @override - */ - this.className = "Enum"; + /** + * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}. + * @function + * @param {!Long|number|string} other Other value + * @returns {number} 0 if they are the same, 1 if the this is greater and -1 + * if the given one is greater + */ + LongPrototype.comp = LongPrototype.compare; - /** - * Runtime enum object. - * @type {Object.|null} - * @expose - */ - this.object = null; - }; + /** + * Negates this Long's value. + * @returns {!Long} Negated Long + */ + LongPrototype.negate = function negate() { + if (!this.unsigned && this.eq(MIN_VALUE)) + return MIN_VALUE; + return this.not().add(ONE); + }; - /** - * Gets the string name of an enum value. - * @param {!ProtoBuf.Builder.Enum} enm Runtime enum - * @param {number} value Enum value - * @returns {?string} Name or `null` if not present - * @expose - */ - Enum.getName = function(enm, value) { - var keys = Object.keys(enm); - for (var i=0, key; i} - * @expose - */ - EnumPrototype.build = function(rebuild) { - if (this.object && !rebuild) - return this.object; - var enm = new ProtoBuf.Builder.Enum(), - values = this.getChildren(Enum.Value); - for (var i=0, k=values.length; i>> 16; + var a32 = this.high & 0xFFFF; + var a16 = this.low >>> 16; + var a00 = this.low & 0xFFFF; - /** - * Constructs a new Enum Value. - * @exports ProtoBuf.Reflect.Enum.Value - * @param {!ProtoBuf.Builder} builder Builder reference - * @param {!ProtoBuf.Reflect.Enum} enm Enum reference - * @param {string} name Field name - * @param {number} id Unique field id - * @constructor - * @extends ProtoBuf.Reflect.T - */ - var Value = function(builder, enm, name, id) { - T.call(this, builder, enm, name); + var b48 = addend.high >>> 16; + var b32 = addend.high & 0xFFFF; + var b16 = addend.low >>> 16; + var b00 = addend.low & 0xFFFF; - /** - * @override - */ - this.className = "Enum.Value"; + var c48 = 0, c32 = 0, c16 = 0, c00 = 0; + c00 += a00 + b00; + c16 += c00 >>> 16; + c00 &= 0xFFFF; + c16 += a16 + b16; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c32 += a32 + b32; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c48 += a48 + b48; + c48 &= 0xFFFF; + return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned); + }; - /** - * Unique enum value id. - * @type {number} - * @expose - */ - this.id = id; - }; + /** + * Returns the difference of this and the specified Long. + * @param {!Long|number|string} subtrahend Subtrahend + * @returns {!Long} Difference + */ + LongPrototype.subtract = function subtract(subtrahend) { + if (!isLong(subtrahend)) + subtrahend = fromValue(subtrahend); + return this.add(subtrahend.neg()); + }; - // Extends T - Value.prototype = Object.create(T.prototype); + /** + * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}. + * @function + * @param {!Long|number|string} subtrahend Subtrahend + * @returns {!Long} Difference + */ + LongPrototype.sub = LongPrototype.subtract; - /** - * @alias ProtoBuf.Reflect.Enum.Value - * @expose - */ - Reflect.Enum.Value = Value; + /** + * Returns the product of this and the specified Long. + * @param {!Long|number|string} multiplier Multiplier + * @returns {!Long} Product + */ + LongPrototype.multiply = function multiply(multiplier) { + if (this.isZero()) + return ZERO; + if (!isLong(multiplier)) + multiplier = fromValue(multiplier); + if (multiplier.isZero()) + return ZERO; + if (this.eq(MIN_VALUE)) + return multiplier.isOdd() ? MIN_VALUE : ZERO; + if (multiplier.eq(MIN_VALUE)) + return this.isOdd() ? MIN_VALUE : ZERO; - /** - * An extension (field). - * @exports ProtoBuf.Reflect.Extension - * @constructor - * @param {!ProtoBuf.Builder} builder Builder reference - * @param {!ProtoBuf.Reflect.T} parent Parent object - * @param {string} name Object name - * @param {!ProtoBuf.Reflect.Message.Field} field Extension field - */ - var Extension = function(builder, parent, name, field) { - T.call(this, builder, parent, name); + if (this.isNegative()) { + if (multiplier.isNegative()) + return this.neg().mul(multiplier.neg()); + else + return this.neg().mul(multiplier).neg(); + } else if (multiplier.isNegative()) + return this.mul(multiplier.neg()).neg(); - /** - * Extended message field. - * @type {!ProtoBuf.Reflect.Message.Field} - * @expose - */ - this.field = field; - }; + // If both longs are small, use float multiplication + if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24)) + return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned); - // Extends T - Extension.prototype = Object.create(T.prototype); + // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products. + // We can skip products that would overflow. - /** - * @alias ProtoBuf.Reflect.Extension - * @expose - */ - Reflect.Extension = Extension; + var a48 = this.high >>> 16; + var a32 = this.high & 0xFFFF; + var a16 = this.low >>> 16; + var a00 = this.low & 0xFFFF; - /** - * Constructs a new Service. - * @exports ProtoBuf.Reflect.Service - * @param {!ProtoBuf.Builder} builder Builder reference - * @param {!ProtoBuf.Reflect.Namespace} root Root - * @param {string} name Service name - * @param {Object.=} options Options - * @constructor - * @extends ProtoBuf.Reflect.Namespace - */ - var Service = function(builder, root, name, options) { - Namespace.call(this, builder, root, name, options); + var b48 = multiplier.high >>> 16; + var b32 = multiplier.high & 0xFFFF; + var b16 = multiplier.low >>> 16; + var b00 = multiplier.low & 0xFFFF; - /** - * @override - */ - this.className = "Service"; + var c48 = 0, c32 = 0, c16 = 0, c00 = 0; + c00 += a00 * b00; + c16 += c00 >>> 16; + c00 &= 0xFFFF; + c16 += a16 * b00; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c16 += a00 * b16; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c32 += a32 * b00; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c32 += a16 * b16; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c32 += a00 * b32; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; + c48 &= 0xFFFF; + return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned); + }; - /** - * Built runtime service class. - * @type {?function(new:ProtoBuf.Builder.Service)} - */ - this.clazz = null; - }; + /** + * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}. + * @function + * @param {!Long|number|string} multiplier Multiplier + * @returns {!Long} Product + */ + LongPrototype.mul = LongPrototype.multiply; - /** - * @alias ProtoBuf.Reflect.Service.prototype - * @inner - */ - var ServicePrototype = Service.prototype = Object.create(Namespace.prototype); + /** + * Returns this Long divided by the specified. The result is signed if this Long is signed or + * unsigned if this Long is unsigned. + * @param {!Long|number|string} divisor Divisor + * @returns {!Long} Quotient + */ + LongPrototype.divide = function divide(divisor) { + if (!isLong(divisor)) + divisor = fromValue(divisor); + if (divisor.isZero()) + throw Error('division by zero'); + if (this.isZero()) + return this.unsigned ? UZERO : ZERO; + var approx, rem, res; + if (!this.unsigned) { + // This section is only relevant for signed longs and is derived from the + // closure library as a whole. + if (this.eq(MIN_VALUE)) { + if (divisor.eq(ONE) || divisor.eq(NEG_ONE)) + return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE + else if (divisor.eq(MIN_VALUE)) + return ONE; + else { + // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|. + var halfThis = this.shr(1); + approx = halfThis.div(divisor).shl(1); + if (approx.eq(ZERO)) { + return divisor.isNegative() ? ONE : NEG_ONE; + } else { + rem = this.sub(divisor.mul(approx)); + res = approx.add(rem.div(divisor)); + return res; + } + } + } else if (divisor.eq(MIN_VALUE)) + return this.unsigned ? UZERO : ZERO; + if (this.isNegative()) { + if (divisor.isNegative()) + return this.neg().div(divisor.neg()); + return this.neg().div(divisor).neg(); + } else if (divisor.isNegative()) + return this.div(divisor.neg()).neg(); + res = ZERO; + } else { + // The algorithm below has not been made for unsigned longs. It's therefore + // required to take special care of the MSB prior to running it. + if (!divisor.unsigned) + divisor = divisor.toUnsigned(); + if (divisor.gt(this)) + return UZERO; + if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true + return UONE; + res = UZERO; + } - /** - * Builds the service and returns the runtime counterpart, which is a fully functional class. - * @see ProtoBuf.Builder.Service - * @param {boolean=} rebuild Whether to rebuild or not - * @return {Function} Service class - * @throws {Error} If the message cannot be built - * @expose - */ - ServicePrototype.build = function(rebuild) { - if (this.clazz && !rebuild) - return this.clazz; + // Repeat the following until the remainder is less than other: find a + // floating-point that approximates remainder / other *from below*, add this + // into the result, and subtract it from the remainder. It is critical that + // the approximate value is less than or equal to the real value so that the + // remainder never becomes negative. + rem = this; + while (rem.gte(divisor)) { + // Approximate the result of division. This may be a little greater or + // smaller than the actual value. + approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber())); - // Create the runtime Service class in its own scope - return this.clazz = (function(ProtoBuf, T) { + // We will tweak the approximate result by changing it in the 48-th digit or + // the smallest non-fractional digit, whichever is larger. + var log2 = Math.ceil(Math.log(approx) / Math.LN2), + delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48), - /** - * Constructs a new runtime Service. - * @name ProtoBuf.Builder.Service - * @param {function(string, ProtoBuf.Builder.Message, function(Error, ProtoBuf.Builder.Message=))=} rpcImpl RPC implementation receiving the method name and the message - * @class Barebone of all runtime services. - * @constructor - * @throws {Error} If the service cannot be created - */ - var Service = function(rpcImpl) { - ProtoBuf.Builder.Service.call(this); + // Decrease the approximation until it is smaller than the remainder. Note + // that if it is too large, the product overflows and is negative. + approxRes = fromNumber(approx), + approxRem = approxRes.mul(divisor); + while (approxRem.isNegative() || approxRem.gt(rem)) { + approx -= delta; + approxRes = fromNumber(approx, this.unsigned); + approxRem = approxRes.mul(divisor); + } - /** - * Service implementation. - * @name ProtoBuf.Builder.Service#rpcImpl - * @type {!function(string, ProtoBuf.Builder.Message, function(Error, ProtoBuf.Builder.Message=))} - * @expose - */ - this.rpcImpl = rpcImpl || function(name, msg, callback) { - // This is what a user has to implement: A function receiving the method name, the actual message to - // send (type checked) and the callback that's either provided with the error as its first - // argument or null and the actual response message. - setTimeout(callback.bind(this, Error("Not implemented, see: https://github.com/dcodeIO/ProtoBuf.js/wiki/Services")), 0); // Must be async! - }; - }; + // We know the answer can't be zero... and actually, zero would cause + // infinite recursion since we would make no progress. + if (approxRes.isZero()) + approxRes = ONE; - /** - * @alias ProtoBuf.Builder.Service.prototype - * @inner - */ - var ServicePrototype = Service.prototype = Object.create(ProtoBuf.Builder.Service.prototype); + res = res.add(approxRes); + rem = rem.sub(approxRem); + } + return res; + }; - /** - * Asynchronously performs an RPC call using the given RPC implementation. - * @name ProtoBuf.Builder.Service.[Method] - * @function - * @param {!function(string, ProtoBuf.Builder.Message, function(Error, ProtoBuf.Builder.Message=))} rpcImpl RPC implementation - * @param {ProtoBuf.Builder.Message} req Request - * @param {function(Error, (ProtoBuf.Builder.Message|ByteBuffer|Buffer|string)=)} callback Callback receiving - * the error if any and the response either as a pre-parsed message or as its raw bytes - * @abstract - */ + /** + * Returns this Long divided by the specified. This is an alias of {@link Long#divide}. + * @function + * @param {!Long|number|string} divisor Divisor + * @returns {!Long} Quotient + */ + LongPrototype.div = LongPrototype.divide; - /** - * Asynchronously performs an RPC call using the instance's RPC implementation. - * @name ProtoBuf.Builder.Service#[Method] - * @function - * @param {ProtoBuf.Builder.Message} req Request - * @param {function(Error, (ProtoBuf.Builder.Message|ByteBuffer|Buffer|string)=)} callback Callback receiving - * the error if any and the response either as a pre-parsed message or as its raw bytes - * @abstract - */ + /** + * Returns this Long modulo the specified. + * @param {!Long|number|string} divisor Divisor + * @returns {!Long} Remainder + */ + LongPrototype.modulo = function modulo(divisor) { + if (!isLong(divisor)) + divisor = fromValue(divisor); + return this.sub(this.div(divisor).mul(divisor)); + }; - var rpc = T.getChildren(ProtoBuf.Reflect.Service.RPCMethod); - for (var i=0; i} - * @expose - */ - var $optionsS; // cc needs this + /** + * Returns this Long with bits shifted to the left by the given amount. + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ + LongPrototype.shiftLeft = function shiftLeft(numBits) { + if (isLong(numBits)) + numBits = numBits.toInt(); + if ((numBits &= 63) === 0) + return this; + else if (numBits < 32) + return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned); + else + return fromBits(0, this.low << (numBits - 32), this.unsigned); + }; - /** - * Service options. - * @name ProtoBuf.Builder.Service#$options - * @type {Object.} - * @expose - */ - var $options; + /** + * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}. + * @function + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ + LongPrototype.shl = LongPrototype.shiftLeft; - /** - * Reflection type. - * @name ProtoBuf.Builder.Service.$type - * @type {!ProtoBuf.Reflect.Service} - * @expose - */ - var $typeS; + /** + * Returns this Long with bits arithmetically shifted to the right by the given amount. + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ + LongPrototype.shiftRight = function shiftRight(numBits) { + if (isLong(numBits)) + numBits = numBits.toInt(); + if ((numBits &= 63) === 0) + return this; + else if (numBits < 32) + return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned); + else + return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned); + }; - /** - * Reflection type. - * @name ProtoBuf.Builder.Service#$type - * @type {!ProtoBuf.Reflect.Service} - * @expose - */ - var $type; + /** + * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}. + * @function + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ + LongPrototype.shr = LongPrototype.shiftRight; - if (Object.defineProperty) - Object.defineProperty(Service, "$options", { "value": T.buildOpt() }), - Object.defineProperty(ServicePrototype, "$options", { "value": Service["$options"] }), - Object.defineProperty(Service, "$type", { "value": T }), - Object.defineProperty(ServicePrototype, "$type", { "value": T }); + /** + * Returns this Long with bits logically shifted to the right by the given amount. + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ + LongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) { + if (isLong(numBits)) + numBits = numBits.toInt(); + numBits &= 63; + if (numBits === 0) + return this; + else { + var high = this.high; + if (numBits < 32) { + var low = this.low; + return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned); + } else if (numBits === 32) + return fromBits(high, 0, this.unsigned); + else + return fromBits(high >>> (numBits - 32), 0, this.unsigned); + } + }; - return Service; + /** + * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}. + * @function + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ + LongPrototype.shru = LongPrototype.shiftRightUnsigned; - })(ProtoBuf, this); - }; + /** + * Converts this Long to signed. + * @returns {!Long} Signed long + */ + LongPrototype.toSigned = function toSigned() { + if (!this.unsigned) + return this; + return fromBits(this.low, this.high, false); + }; - /** - * @alias ProtoBuf.Reflect.Service - * @expose - */ - Reflect.Service = Service; + /** + * Converts this Long to unsigned. + * @returns {!Long} Unsigned long + */ + LongPrototype.toUnsigned = function toUnsigned() { + if (this.unsigned) + return this; + return fromBits(this.low, this.high, true); + }; - /** - * Abstract service method. - * @exports ProtoBuf.Reflect.Service.Method - * @param {!ProtoBuf.Builder} builder Builder reference - * @param {!ProtoBuf.Reflect.Service} svc Service - * @param {string} name Method name - * @param {Object.=} options Options - * @constructor - * @extends ProtoBuf.Reflect.T - */ - var Method = function(builder, svc, name, options) { - T.call(this, builder, svc, name); + /** + * Converts this Long to its byte representation. + * @param {boolean=} le Whether little or big endian, defaults to big endian + * @returns {!Array.} Byte representation + */ + LongPrototype.toBytes = function(le) { + return le ? this.toBytesLE() : this.toBytesBE(); + } - /** - * @override - */ - this.className = "Service.Method"; + /** + * Converts this Long to its little endian byte representation. + * @returns {!Array.} Little endian byte representation + */ + LongPrototype.toBytesLE = function() { + var hi = this.high, + lo = this.low; + return [ + lo & 0xff, + (lo >>> 8) & 0xff, + (lo >>> 16) & 0xff, + (lo >>> 24) & 0xff, + hi & 0xff, + (hi >>> 8) & 0xff, + (hi >>> 16) & 0xff, + (hi >>> 24) & 0xff + ]; + } - /** - * Options. - * @type {Object.} - * @expose - */ - this.options = options || {}; - }; + /** + * Converts this Long to its big endian byte representation. + * @returns {!Array.} Big endian byte representation + */ + LongPrototype.toBytesBE = function() { + var hi = this.high, + lo = this.low; + return [ + (hi >>> 24) & 0xff, + (hi >>> 16) & 0xff, + (hi >>> 8) & 0xff, + hi & 0xff, + (lo >>> 24) & 0xff, + (lo >>> 16) & 0xff, + (lo >>> 8) & 0xff, + lo & 0xff + ]; + } - /** - * @alias ProtoBuf.Reflect.Service.Method.prototype - * @inner - */ - var MethodPrototype = Method.prototype = Object.create(T.prototype); + return Long; +}); + +},{}],24:[function(require,module,exports){ +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { return [] } + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + +},{}],25:[function(require,module,exports){ +(function (process){ +/* + Copyright 2013 Daniel Wirtz - /** - * Builds the method's '$options' property. - * @name ProtoBuf.Reflect.Service.Method#buildOpt - * @function - * @return {Object.} - */ - MethodPrototype.buildOpt = NamespacePrototype.buildOpt; + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at - /** - * @alias ProtoBuf.Reflect.Service.Method - * @expose - */ - Reflect.Service.Method = Method; + http://www.apache.org/licenses/LICENSE-2.0 - /** - * RPC service method. - * @exports ProtoBuf.Reflect.Service.RPCMethod - * @param {!ProtoBuf.Builder} builder Builder reference - * @param {!ProtoBuf.Reflect.Service} svc Service - * @param {string} name Method name - * @param {string} request Request message name - * @param {string} response Response message name - * @param {boolean} request_stream Whether requests are streamed - * @param {boolean} response_stream Whether responses are streamed - * @param {Object.=} options Options - * @constructor - * @extends ProtoBuf.Reflect.Service.Method - */ - var RPCMethod = function(builder, svc, name, request, response, request_stream, response_stream, options) { - Method.call(this, builder, svc, name, options); + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ - /** - * @override - */ - this.className = "Service.RPCMethod"; +/** + * @license protobuf.js (c) 2013 Daniel Wirtz + * Released under the Apache License, Version 2.0 + * see: https://github.com/dcodeIO/protobuf.js for details + */ +(function(global, factory) { - /** - * Request message name. - * @type {string} - * @expose - */ - this.requestName = request; + /* AMD */ if (typeof define === 'function' && define["amd"]) + define(["bytebuffer"], factory); + /* CommonJS */ else if (typeof require === "function" && typeof module === "object" && module && module["exports"]) + module["exports"] = factory(require("bytebuffer"), true); + /* Global */ else + (global["dcodeIO"] = global["dcodeIO"] || {})["ProtoBuf"] = factory(global["dcodeIO"]["ByteBuffer"]); - /** - * Response message name. - * @type {string} - * @expose - */ - this.responseName = response; +})(this, function(ByteBuffer, isCommonJS) { + "use strict"; - /** - * Whether requests are streamed - * @type {bool} - * @expose - */ - this.requestStream = request_stream; + /** + * The ProtoBuf namespace. + * @exports ProtoBuf + * @namespace + * @expose + */ + var ProtoBuf = {}; - /** - * Whether responses are streamed - * @type {bool} - * @expose - */ - this.responseStream = response_stream; + /** + * @type {!function(new: ByteBuffer, ...[*])} + * @expose + */ + ProtoBuf.ByteBuffer = ByteBuffer; - /** - * Resolved request message type. - * @type {ProtoBuf.Reflect.Message} - * @expose - */ - this.resolvedRequestType = null; + /** + * @type {?function(new: Long, ...[*])} + * @expose + */ + ProtoBuf.Long = ByteBuffer.Long || null; - /** - * Resolved response message type. - * @type {ProtoBuf.Reflect.Message} - * @expose - */ - this.resolvedResponseType = null; - }; + /** + * ProtoBuf.js version. + * @type {string} + * @const + * @expose + */ + ProtoBuf.VERSION = "5.0.3"; - // Extends Method - RPCMethod.prototype = Object.create(Method.prototype); + /** + * Wire types. + * @type {Object.} + * @const + * @expose + */ + ProtoBuf.WIRE_TYPES = {}; - /** - * @alias ProtoBuf.Reflect.Service.RPCMethod - * @expose - */ - Reflect.Service.RPCMethod = RPCMethod; + /** + * Varint wire type. + * @type {number} + * @expose + */ + ProtoBuf.WIRE_TYPES.VARINT = 0; - return Reflect; + /** + * Fixed 64 bits wire type. + * @type {number} + * @const + * @expose + */ + ProtoBuf.WIRE_TYPES.BITS64 = 1; - })(ProtoBuf); + /** + * Length delimited wire type. + * @type {number} + * @const + * @expose + */ + ProtoBuf.WIRE_TYPES.LDELIM = 2; /** - * @alias ProtoBuf.Builder + * Start group wire type. + * @type {number} + * @const * @expose */ - ProtoBuf.Builder = (function(ProtoBuf, Lang, Reflect) { - "use strict"; + ProtoBuf.WIRE_TYPES.STARTGROUP = 3; - /** - * Constructs a new Builder. - * @exports ProtoBuf.Builder - * @class Provides the functionality to build protocol messages. - * @param {Object.=} options Options - * @constructor - */ - var Builder = function(options) { + /** + * End group wire type. + * @type {number} + * @const + * @expose + */ + ProtoBuf.WIRE_TYPES.ENDGROUP = 4; - /** - * Namespace. - * @type {ProtoBuf.Reflect.Namespace} - * @expose - */ - this.ns = new Reflect.Namespace(this, null, ""); // Global namespace + /** + * Fixed 32 bits wire type. + * @type {number} + * @const + * @expose + */ + ProtoBuf.WIRE_TYPES.BITS32 = 5; - /** - * Namespace pointer. - * @type {ProtoBuf.Reflect.T} - * @expose - */ - this.ptr = this.ns; + /** + * Packable wire types. + * @type {!Array.} + * @const + * @expose + */ + ProtoBuf.PACKABLE_WIRE_TYPES = [ + ProtoBuf.WIRE_TYPES.VARINT, + ProtoBuf.WIRE_TYPES.BITS64, + ProtoBuf.WIRE_TYPES.BITS32 + ]; - /** - * Resolved flag. - * @type {boolean} - * @expose - */ - this.resolved = false; + /** + * Types. + * @dict + * @type {!Object.} + * @const + * @expose + */ + ProtoBuf.TYPES = { + // According to the protobuf spec. + "int32": { + name: "int32", + wireType: ProtoBuf.WIRE_TYPES.VARINT, + defaultValue: 0 + }, + "uint32": { + name: "uint32", + wireType: ProtoBuf.WIRE_TYPES.VARINT, + defaultValue: 0 + }, + "sint32": { + name: "sint32", + wireType: ProtoBuf.WIRE_TYPES.VARINT, + defaultValue: 0 + }, + "int64": { + name: "int64", + wireType: ProtoBuf.WIRE_TYPES.VARINT, + defaultValue: ProtoBuf.Long ? ProtoBuf.Long.ZERO : undefined + }, + "uint64": { + name: "uint64", + wireType: ProtoBuf.WIRE_TYPES.VARINT, + defaultValue: ProtoBuf.Long ? ProtoBuf.Long.UZERO : undefined + }, + "sint64": { + name: "sint64", + wireType: ProtoBuf.WIRE_TYPES.VARINT, + defaultValue: ProtoBuf.Long ? ProtoBuf.Long.ZERO : undefined + }, + "bool": { + name: "bool", + wireType: ProtoBuf.WIRE_TYPES.VARINT, + defaultValue: false + }, + "double": { + name: "double", + wireType: ProtoBuf.WIRE_TYPES.BITS64, + defaultValue: 0 + }, + "string": { + name: "string", + wireType: ProtoBuf.WIRE_TYPES.LDELIM, + defaultValue: "" + }, + "bytes": { + name: "bytes", + wireType: ProtoBuf.WIRE_TYPES.LDELIM, + defaultValue: null // overridden in the code, must be a unique instance + }, + "fixed32": { + name: "fixed32", + wireType: ProtoBuf.WIRE_TYPES.BITS32, + defaultValue: 0 + }, + "sfixed32": { + name: "sfixed32", + wireType: ProtoBuf.WIRE_TYPES.BITS32, + defaultValue: 0 + }, + "fixed64": { + name: "fixed64", + wireType: ProtoBuf.WIRE_TYPES.BITS64, + defaultValue: ProtoBuf.Long ? ProtoBuf.Long.UZERO : undefined + }, + "sfixed64": { + name: "sfixed64", + wireType: ProtoBuf.WIRE_TYPES.BITS64, + defaultValue: ProtoBuf.Long ? ProtoBuf.Long.ZERO : undefined + }, + "float": { + name: "float", + wireType: ProtoBuf.WIRE_TYPES.BITS32, + defaultValue: 0 + }, + "enum": { + name: "enum", + wireType: ProtoBuf.WIRE_TYPES.VARINT, + defaultValue: 0 + }, + "message": { + name: "message", + wireType: ProtoBuf.WIRE_TYPES.LDELIM, + defaultValue: null + }, + "group": { + name: "group", + wireType: ProtoBuf.WIRE_TYPES.STARTGROUP, + defaultValue: null + } + }; - /** - * The current building result. - * @type {Object.|null} - * @expose - */ - this.result = null; + /** + * Valid map key types. + * @type {!Array.>} + * @const + * @expose + */ + ProtoBuf.MAP_KEY_TYPES = [ + ProtoBuf.TYPES["int32"], + ProtoBuf.TYPES["sint32"], + ProtoBuf.TYPES["sfixed32"], + ProtoBuf.TYPES["uint32"], + ProtoBuf.TYPES["fixed32"], + ProtoBuf.TYPES["int64"], + ProtoBuf.TYPES["sint64"], + ProtoBuf.TYPES["sfixed64"], + ProtoBuf.TYPES["uint64"], + ProtoBuf.TYPES["fixed64"], + ProtoBuf.TYPES["bool"], + ProtoBuf.TYPES["string"], + ProtoBuf.TYPES["bytes"] + ]; - /** - * Imported files. - * @type {Array.} - * @expose - */ - this.files = {}; + /** + * Minimum field id. + * @type {number} + * @const + * @expose + */ + ProtoBuf.ID_MIN = 1; - /** - * Import root override. - * @type {?string} - * @expose - */ - this.importRoot = null; + /** + * Maximum field id. + * @type {number} + * @const + * @expose + */ + ProtoBuf.ID_MAX = 0x1FFFFFFF; - /** - * Options. - * @type {!Object.} - * @expose - */ - this.options = options || {}; - }; + /** + * If set to `true`, field names will be converted from underscore notation to camel case. Defaults to `false`. + * Must be set prior to parsing. + * @type {boolean} + * @expose + */ + ProtoBuf.convertFieldsToCamelCase = false; - /** - * @alias ProtoBuf.Builder.prototype - * @inner - */ - var BuilderPrototype = Builder.prototype; + /** + * By default, messages are populated with (setX, set_x) accessors for each field. This can be disabled by + * setting this to `false` prior to building messages. + * @type {boolean} + * @expose + */ + ProtoBuf.populateAccessors = true; - // ----- Definition tests ----- + /** + * By default, messages are populated with default values if a field is not present on the wire. To disable + * this behavior, set this setting to `false`. + * @type {boolean} + * @expose + */ + ProtoBuf.populateDefaults = true; + + /** + * @alias ProtoBuf.Util + * @expose + */ + ProtoBuf.Util = (function() { + "use strict"; /** - * Tests if a definition most likely describes a message. - * @param {!Object} def - * @returns {boolean} - * @expose + * ProtoBuf utilities. + * @exports ProtoBuf.Util + * @namespace */ - Builder.isMessage = function(def) { - // Messages require a string name - if (typeof def["name"] !== 'string') - return false; - // Messages do not contain values (enum) or rpc methods (service) - if (typeof def["values"] !== 'undefined' || typeof def["rpc"] !== 'undefined') - return false; - return true; - }; + var Util = {}; /** - * Tests if a definition most likely describes a message field. - * @param {!Object} def - * @returns {boolean} + * Flag if running in node or not. + * @type {boolean} + * @const * @expose */ - Builder.isMessageField = function(def) { - // Message fields require a string rule, name and type and an id - if (typeof def["rule"] !== 'string' || typeof def["name"] !== 'string' || typeof def["type"] !== 'string' || typeof def["id"] === 'undefined') - return false; - return true; - }; + Util.IS_NODE = !!( + typeof process === 'object' && process+'' === '[object process]' && !process['browser'] + ); /** - * Tests if a definition most likely describes an enum. - * @param {!Object} def - * @returns {boolean} + * Constructs a XMLHttpRequest object. + * @return {XMLHttpRequest} + * @throws {Error} If XMLHttpRequest is not supported * @expose */ - Builder.isEnum = function(def) { - // Enums require a string name - if (typeof def["name"] !== 'string') - return false; - // Enums require at least one value - if (typeof def["values"] === 'undefined' || !Array.isArray(def["values"]) || def["values"].length === 0) - return false; - return true; + Util.XHR = function() { + // No dependencies please, ref: http://www.quirksmode.org/js/xmlhttp.html + var XMLHttpFactories = [ + function () {return new XMLHttpRequest()}, + function () {return new ActiveXObject("Msxml2.XMLHTTP")}, + function () {return new ActiveXObject("Msxml3.XMLHTTP")}, + function () {return new ActiveXObject("Microsoft.XMLHTTP")} + ]; + /** @type {?XMLHttpRequest} */ + var xhr = null; + for (var i=0;i} + * @expose + */ + ProtoBuf.Lang = { - /** - * Defines a namespace on top of the current pointer position and places the pointer on it. - * @param {string} namespace - * @return {!ProtoBuf.Builder} this - * @expose - */ - BuilderPrototype.define = function(namespace) { - if (typeof namespace !== 'string' || !Lang.TYPEREF.test(namespace)) - throw Error("illegal namespace: "+namespace); - namespace.split(".").forEach(function(part) { - var ns = this.ptr.getChild(part); - if (ns === null) // Keep existing - this.ptr.addChild(ns = new Reflect.Namespace(this, this.ptr, part)); - this.ptr = ns; - }, this); - return this; - }; + // Characters always ending a statement + DELIM: /[\s\{\}=;:\[\],'"\(\)<>]/g, - /** - * Creates the specified definitions at the current pointer position. - * @param {!Array.} defs Messages, enums or services to create - * @returns {!ProtoBuf.Builder} this - * @throws {Error} If a message definition is invalid - * @expose - */ - BuilderPrototype.create = function(defs) { - if (!defs) - return this; // Nothing to create - if (!Array.isArray(defs)) - defs = [defs]; - else { - if (defs.length === 0) - return this; - defs = defs.slice(); - } + // Field rules + RULE: /^(?:required|optional|repeated|map)$/, - // It's quite hard to keep track of scopes and memory here, so let's do this iteratively. - var stack = [defs]; - while (stack.length > 0) { - defs = stack.pop(); + // Field types + TYPE: /^(?:double|float|int32|uint32|sint32|int64|uint64|sint64|fixed32|sfixed32|fixed64|sfixed64|bool|string|bytes)$/, - if (!Array.isArray(defs)) // Stack always contains entire namespaces - throw Error("not a valid namespace: "+JSON.stringify(defs)); + // Names + NAME: /^[a-zA-Z_][a-zA-Z_0-9]*$/, - while (defs.length > 0) { - var def = defs.shift(); // Namespaces always contain an array of messages, enums and services + // Type definitions + TYPEDEF: /^[a-zA-Z][a-zA-Z_0-9]*$/, - if (Builder.isMessage(def)) { - var obj = new Reflect.Message(this, this.ptr, def["name"], def["options"], def["isGroup"], def["syntax"]); + // Type references + TYPEREF: /^(?:\.?[a-zA-Z_][a-zA-Z_0-9]*)(?:\.[a-zA-Z_][a-zA-Z_0-9]*)*$/, - // Create OneOfs - var oneofs = {}; - if (def["oneofs"]) - Object.keys(def["oneofs"]).forEach(function(name) { - obj.addChild(oneofs[name] = new Reflect.Message.OneOf(this, obj, name)); - }, this); + // Fully qualified type references + FQTYPEREF: /^(?:\.[a-zA-Z_][a-zA-Z_0-9]*)+$/, - // Create fields - if (def["fields"]) - def["fields"].forEach(function(fld) { - if (obj.getChild(fld["id"]|0) !== null) - throw Error("duplicate or invalid field id in "+obj.name+": "+fld['id']); - if (fld["options"] && typeof fld["options"] !== 'object') - throw Error("illegal field options in "+obj.name+"#"+fld["name"]); - var oneof = null; - if (typeof fld["oneof"] === 'string' && !(oneof = oneofs[fld["oneof"]])) - throw Error("illegal oneof in "+obj.name+"#"+fld["name"]+": "+fld["oneof"]); - fld = new Reflect.Message.Field(this, obj, fld["rule"], fld["keytype"], fld["type"], fld["name"], fld["id"], fld["options"], oneof, def["syntax"]); - if (oneof) - oneof.fields.push(fld); - obj.addChild(fld); - }, this); + // All numbers + NUMBER: /^-?(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+|([0-9]*(\.[0-9]*)?([Ee][+-]?[0-9]+)?)|inf|nan)$/, - // Push children to stack - var subObj = []; - if (def["enums"]) - def["enums"].forEach(function(enm) { - subObj.push(enm); - }); - if (def["messages"]) - def["messages"].forEach(function(msg) { - subObj.push(msg); - }); - if (def["services"]) - def["services"].forEach(function(svc) { - subObj.push(svc); - }); + // Decimal numbers + NUMBER_DEC: /^(?:[1-9][0-9]*|0)$/, - // Set extension range - if (def["extensions"]) { - obj.extensions = def["extensions"]; - if (obj.extensions[0] < ProtoBuf.ID_MIN) - obj.extensions[0] = ProtoBuf.ID_MIN; - if (obj.extensions[1] > ProtoBuf.ID_MAX) - obj.extensions[1] = ProtoBuf.ID_MAX; - } + // Hexadecimal numbers + NUMBER_HEX: /^0[xX][0-9a-fA-F]+$/, - // Create on top of current namespace - this.ptr.addChild(obj); - if (subObj.length > 0) { - stack.push(defs); // Push the current level back - defs = subObj; // Continue processing sub level - subObj = null; - this.ptr = obj; // And move the pointer to this namespace - obj = null; - continue; - } - subObj = null; + // Octal numbers + NUMBER_OCT: /^0[0-7]+$/, - } else if (Builder.isEnum(def)) { + // Floating point numbers + NUMBER_FLT: /^([0-9]*(\.[0-9]*)?([Ee][+-]?[0-9]+)?|inf|nan)$/, - obj = new Reflect.Enum(this, this.ptr, def["name"], def["options"], def["syntax"]); - def["values"].forEach(function(val) { - obj.addChild(new Reflect.Enum.Value(this, obj, val["name"], val["id"])); - }, this); - this.ptr.addChild(obj); + // Booleans + BOOL: /^(?:true|false)$/i, - } else if (Builder.isService(def)) { + // Id numbers + ID: /^(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+)$/, - obj = new Reflect.Service(this, this.ptr, def["name"], def["options"]); - Object.keys(def["rpc"]).forEach(function(name) { - var mtd = def["rpc"][name]; - obj.addChild(new Reflect.Service.RPCMethod(this, obj, name, mtd["request"], mtd["response"], !!mtd["request_stream"], !!mtd["response_stream"], mtd["options"])); - }, this); - this.ptr.addChild(obj); + // Negative id numbers (enum values) + NEGID: /^\-?(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+)$/, - } else if (Builder.isExtend(def)) { + // Whitespaces + WHITESPACE: /\s/, - obj = this.ptr.resolve(def["ref"], true); - if (obj) { - def["fields"].forEach(function(fld) { - if (obj.getChild(fld['id']|0) !== null) - throw Error("duplicate extended field id in "+obj.name+": "+fld['id']); - if (fld['id'] < obj.extensions[0] || fld['id'] > obj.extensions[1]) - throw Error("illegal extended field id in "+obj.name+": "+fld['id']+" ("+obj.extensions.join(' to ')+" expected)"); - // Convert extension field names to camel case notation if the override is set - var name = fld["name"]; - if (this.options['convertFieldsToCamelCase']) - name = ProtoBuf.Util.toCamelCase(name); - // see #161: Extensions use their fully qualified name as their runtime key and... - var field = new Reflect.Message.ExtensionField(this, obj, fld["rule"], fld["type"], this.ptr.fqn()+'.'+name, fld["id"], fld["options"]); - // ...are added on top of the current namespace as an extension which is used for - // resolving their type later on (the extension always keeps the original name to - // prevent naming collisions) - var ext = new Reflect.Extension(this, this.ptr, fld["name"], field); - field.extension = ext; - this.ptr.addChild(ext); - obj.addChild(field); - }, this); + // All strings + STRING: /(?:"([^"\\]*(?:\\.[^"\\]*)*)")|(?:'([^'\\]*(?:\\.[^'\\]*)*)')/g, - } else if (!/\.?google\.protobuf\./.test(def["ref"])) // Silently skip internal extensions - throw Error("extended message "+def["ref"]+" is not defined"); + // Double quoted strings + STRING_DQ: /(?:"([^"\\]*(?:\\.[^"\\]*)*)")/g, - } else - throw Error("not a valid definition: "+JSON.stringify(def)); + // Single quoted strings + STRING_SQ: /(?:'([^'\\]*(?:\\.[^'\\]*)*)')/g + }; - def = null; - obj = null; - } - // Break goes here - defs = null; - this.ptr = this.ptr.parent; // Namespace done, continue at parent - } - this.resolved = false; // Require re-resolve - this.result = null; // Require re-build - return this; - }; + /** + * @alias ProtoBuf.DotProto + * @expose + */ + ProtoBuf.DotProto = (function(ProtoBuf, Lang) { + "use strict"; /** - * Propagates syntax to all children. - * @param {!Object} parent - * @inner + * Utilities to parse .proto files. + * @exports ProtoBuf.DotProto + * @namespace */ - function propagateSyntax(parent) { - if (parent['messages']) { - parent['messages'].forEach(function(child) { - child["syntax"] = parent["syntax"]; - propagateSyntax(child); - }); - } - if (parent['enums']) { - parent['enums'].forEach(function(child) { - child["syntax"] = parent["syntax"]; - }); - } - } + var DotProto = {}; /** - * Imports another definition into this builder. - * @param {Object.} json Parsed import - * @param {(string|{root: string, file: string})=} filename Imported file name - * @returns {!ProtoBuf.Builder} this - * @throws {Error} If the definition or file cannot be imported - * @expose + * Constructs a new Tokenizer. + * @exports ProtoBuf.DotProto.Tokenizer + * @class prototype tokenizer + * @param {string} proto Proto to tokenize + * @constructor */ - BuilderPrototype["import"] = function(json, filename) { - var delim = '/'; - - // Make sure to skip duplicate imports - - if (typeof filename === 'string') { - - if (ProtoBuf.Util.IS_NODE) - filename = require("path")['resolve'](filename); - if (this.files[filename] === true) - return this.reset(); - this.files[filename] = true; - - } else if (typeof filename === 'object') { // Object with root, file. - - var root = filename.root; - if (ProtoBuf.Util.IS_NODE) - root = require("path")['resolve'](root); - if (root.indexOf("\\") >= 0 || filename.file.indexOf("\\") >= 0) - delim = '\\'; - var fname = root + delim + filename.file; - if (this.files[fname] === true) - return this.reset(); - this.files[fname] = true; - } - - // Import imports - - if (json['imports'] && json['imports'].length > 0) { - var importRoot, - resetRoot = false; - - if (typeof filename === 'object') { // If an import root is specified, override - - this.importRoot = filename["root"]; resetRoot = true; // ... and reset afterwards - importRoot = this.importRoot; - filename = filename["file"]; - if (importRoot.indexOf("\\") >= 0 || filename.indexOf("\\") >= 0) - delim = '\\'; + var Tokenizer = function(proto) { - } else if (typeof filename === 'string') { + /** + * Source to parse. + * @type {string} + * @expose + */ + this.source = proto+""; - if (this.importRoot) // If import root is overridden, use it - importRoot = this.importRoot; - else { // Otherwise compute from filename - if (filename.indexOf("/") >= 0) { // Unix - importRoot = filename.replace(/\/[^\/]*$/, ""); - if (/* /file.proto */ importRoot === "") - importRoot = "/"; - } else if (filename.indexOf("\\") >= 0) { // Windows - importRoot = filename.replace(/\\[^\\]*$/, ""); - delim = '\\'; - } else - importRoot = "."; - } + /** + * Current index. + * @type {number} + * @expose + */ + this.index = 0; - } else - importRoot = null; + /** + * Current line. + * @type {number} + * @expose + */ + this.line = 1; - for (var i=0; i} + * @expose + */ + this.stack = []; - // Import structures + /** + * Opening character of the current string read, if any. + * @type {?string} + * @private + */ + this._stringOpen = null; + }; - if (json['package']) - this.define(json['package']); - if (json['syntax']) - propagateSyntax(json); - var base = this.ptr; - if (json['options']) - Object.keys(json['options']).forEach(function(key) { - base.options[key] = json['options'][key]; - }); - if (json['messages']) - this.create(json['messages']), - this.ptr = base; - if (json['enums']) - this.create(json['enums']), - this.ptr = base; - if (json['services']) - this.create(json['services']), - this.ptr = base; - if (json['extends']) - this.create(json['extends']); + /** + * @alias ProtoBuf.DotProto.Tokenizer.prototype + * @inner + */ + var TokenizerPrototype = Tokenizer.prototype; - return this.reset(); + /** + * Reads a string beginning at the current index. + * @return {string} + * @private + */ + TokenizerPrototype._readString = function() { + var re = this._stringOpen === '"' + ? Lang.STRING_DQ + : Lang.STRING_SQ; + re.lastIndex = this.index - 1; // Include the open quote + var match = re.exec(this.source); + if (!match) + throw Error("unterminated string"); + this.index = re.lastIndex; + this.stack.push(this._stringOpen); + this._stringOpen = null; + return match[1]; }; /** - * Resolves all namespace objects. - * @throws {Error} If a type cannot be resolved - * @returns {!ProtoBuf.Builder} this + * Gets the next token and advances by one. + * @return {?string} Token or `null` on EOF * @expose */ - BuilderPrototype.resolveAll = function() { - // Resolve all reflected objects - var res; - if (this.ptr == null || typeof this.ptr.type === 'object') - return this; // Done (already resolved) - - if (this.ptr instanceof Reflect.Namespace) { // Resolve children - - this.ptr.children.forEach(function(child) { - this.ptr = child; - this.resolveAll(); - }, this); - - } else if (this.ptr instanceof Reflect.Message.Field) { // Resolve type + TokenizerPrototype.next = function() { + if (this.stack.length > 0) + return this.stack.shift(); + if (this.index >= this.source.length) + return null; + if (this._stringOpen !== null) + return this._readString(); - if (!Lang.TYPE.test(this.ptr.type)) { - if (!Lang.TYPEREF.test(this.ptr.type)) - throw Error("illegal type reference in "+this.ptr.toString(true)+": "+this.ptr.type); - res = (this.ptr instanceof Reflect.Message.ExtensionField ? this.ptr.extension.parent : this.ptr.parent).resolve(this.ptr.type, true); - if (!res) - throw Error("unresolvable type reference in "+this.ptr.toString(true)+": "+this.ptr.type); - this.ptr.resolvedType = res; - if (res instanceof Reflect.Enum) { - this.ptr.type = ProtoBuf.TYPES["enum"]; - if (this.ptr.syntax === 'proto3' && res.syntax !== 'proto3') - throw Error("proto3 message cannot reference proto2 enum"); - } - else if (res instanceof Reflect.Message) - this.ptr.type = res.isGroup ? ProtoBuf.TYPES["group"] : ProtoBuf.TYPES["message"]; - else - throw Error("illegal type reference in "+this.ptr.toString(true)+": "+this.ptr.type); - } else - this.ptr.type = ProtoBuf.TYPES[this.ptr.type]; + var repeat, + prev, + next; + do { + repeat = false; - // If it's a map field, also resolve the key type. The key type can be only a numeric, string, or bool type - // (i.e., no enums or messages), so we don't need to resolve against the current namespace. - if (this.ptr.map) { - if (!Lang.TYPE.test(this.ptr.keyType)) - throw Error("illegal key type for map field in "+this.ptr.toString(true)+": "+this.ptr.keyType); - this.ptr.keyType = ProtoBuf.TYPES[this.ptr.keyType]; + // Strip white spaces + while (Lang.WHITESPACE.test(next = this.source.charAt(this.index))) { + if (next === '\n') + ++this.line; + if (++this.index === this.source.length) + return null; } - } else if (this.ptr instanceof ProtoBuf.Reflect.Service.Method) { - - if (this.ptr instanceof ProtoBuf.Reflect.Service.RPCMethod) { - res = this.ptr.parent.resolve(this.ptr.requestName, true); - if (!res || !(res instanceof ProtoBuf.Reflect.Message)) - throw Error("Illegal type reference in "+this.ptr.toString(true)+": "+this.ptr.requestName); - this.ptr.resolvedRequestType = res; - res = this.ptr.parent.resolve(this.ptr.responseName, true); - if (!res || !(res instanceof ProtoBuf.Reflect.Message)) - throw Error("Illegal type reference in "+this.ptr.toString(true)+": "+this.ptr.responseName); - this.ptr.resolvedResponseType = res; - } else // Should not happen as nothing else is implemented - throw Error("illegal service type in "+this.ptr.toString(true)); + // Strip comments + if (this.source.charAt(this.index) === '/') { + ++this.index; + if (this.source.charAt(this.index) === '/') { // Line + while (this.source.charAt(++this.index) !== '\n') + if (this.index == this.source.length) + return null; + ++this.index; + ++this.line; + repeat = true; + } else if ((next = this.source.charAt(this.index)) === '*') { /* Block */ + do { + if (next === '\n') + ++this.line; + if (++this.index === this.source.length) + return null; + prev = next; + next = this.source.charAt(this.index); + } while (prev !== '*' || next !== '/'); + ++this.index; + repeat = true; + } else + return '/'; + } + } while (repeat); - } else if ( - !(this.ptr instanceof ProtoBuf.Reflect.Message.OneOf) && // Not built - !(this.ptr instanceof ProtoBuf.Reflect.Extension) && // Not built - !(this.ptr instanceof ProtoBuf.Reflect.Enum.Value) // Built in enum - ) - throw Error("illegal object in namespace: "+typeof(this.ptr)+": "+this.ptr); + if (this.index === this.source.length) + return null; - return this.reset(); + // Read the next token + var end = this.index; + Lang.DELIM.lastIndex = 0; + var delim = Lang.DELIM.test(this.source.charAt(end++)); + if (!delim) + while(end < this.source.length && !Lang.DELIM.test(this.source.charAt(end))) + ++end; + var token = this.source.substring(this.index, this.index = end); + if (token === '"' || token === "'") + this._stringOpen = token; + return token; }; /** - * Builds the protocol. This will first try to resolve all definitions and, if this has been successful, - * return the built package. - * @param {(string|Array.)=} path Specifies what to return. If omitted, the entire namespace will be returned. - * @returns {!ProtoBuf.Builder.Message|!Object.} - * @throws {Error} If a type could not be resolved + * Peeks for the next token. + * @return {?string} Token or `null` on EOF * @expose */ - BuilderPrototype.build = function(path) { - this.reset(); - if (!this.resolved) - this.resolveAll(), - this.resolved = true, - this.result = null; // Require re-build - if (this.result === null) // (Re-)Build - this.result = this.ns.build(); - if (!path) - return this.result; - var part = typeof path === 'string' ? path.split(".") : path, - ptr = this.result; // Build namespace pointer (no hasChild etc.) - for (var i=0; i=} contents Initial contents + * Constructs a new Parser. + * @exports ProtoBuf.DotProto.Parser + * @class prototype parser + * @param {string} source Source * @constructor */ - var Map = function(field, contents) { - if (!field.map) - throw Error("field is not a map"); - - /** - * The field corresponding to this map. - * @type {!ProtoBuf.Reflect.Field} - */ - this.field = field; - - /** - * Element instance corresponding to key type. - * @type {!ProtoBuf.Reflect.Element} - */ - this.keyElem = new Reflect.Element(field.keyType, null, true, field.syntax); - - /** - * Element instance corresponding to value type. - * @type {!ProtoBuf.Reflect.Element} - */ - this.valueElem = new Reflect.Element(field.type, field.resolvedType, false, field.syntax); + var Parser = function(source) { /** - * Internal map: stores mapping of (string form of key) -> (key, value) - * pair. - * - * We provide map semantics for arbitrary key types, but we build on top - * of an Object, which has only string keys. In order to avoid the need - * to convert a string key back to its native type in many situations, - * we store the native key value alongside the value. Thus, we only need - * a one-way mapping from a key type to its string form that guarantees - * uniqueness and equality (i.e., str(K1) === str(K2) if and only if K1 - * === K2). - * - * @type {!Object} + * Tokenizer. + * @type {!ProtoBuf.DotProto.Tokenizer} + * @expose */ - this.map = {}; + this.tn = new Tokenizer(source); /** - * Returns the number of elements in the map. + * Whether parsing proto3 or not. + * @type {boolean} */ - Object.defineProperty(this, "size", { - get: function() { return Object.keys(this.map).length; } - }); - - // Fill initial contents from a raw object. - if (contents) { - var keys = Object.keys(contents); - for (var i = 0; i < keys.length; i++) { - var key = this.keyElem.valueFromString(keys[i]); - var val = this.valueElem.verifyValue(contents[keys[i]]); - this.map[this.keyElem.valueToString(key)] = - { key: key, value: val }; - } - } + this.proto3 = false; }; - var MapPrototype = Map.prototype; - /** - * Helper: return an iterator over an array. - * @param {!Array<*>} arr the array - * @returns {!Object} an iterator + * @alias ProtoBuf.DotProto.Parser.prototype * @inner */ - function arrayIterator(arr) { - var idx = 0; - return { - next: function() { - if (idx < arr.length) - return { done: false, value: arr[idx++] }; - return { done: true }; - } - } - } - - /** - * Clears the map. - */ - MapPrototype.clear = function() { - this.map = {}; - }; - - /** - * Deletes a particular key from the map. - * @returns {boolean} Whether any entry with this key was deleted. - */ - MapPrototype["delete"] = function(key) { - var keyValue = this.keyElem.valueToString(this.keyElem.verifyValue(key)); - var hadKey = keyValue in this.map; - delete this.map[keyValue]; - return hadKey; - }; + var ParserPrototype = Parser.prototype; /** - * Returns an iterator over [key, value] pairs in the map. - * @returns {Object} The iterator + * Parses the source. + * @returns {!Object} + * @throws {Error} If the source cannot be parsed + * @expose */ - MapPrototype.entries = function() { - var entries = []; - var strKeys = Object.keys(this.map); - for (var i = 0, entry; i < strKeys.length; i++) - entries.push([(entry=this.map[strKeys[i]]).key, entry.value]); - return arrayIterator(entries); + ParserPrototype.parse = function() { + var topLevel = { + "name": "[ROOT]", // temporary + "package": null, + "messages": [], + "enums": [], + "imports": [], + "options": {}, + "services": [] + // "syntax": undefined + }; + var token, + head = true, + weak; + try { + while (token = this.tn.next()) { + switch (token) { + case 'package': + if (!head || topLevel["package"] !== null) + throw Error("unexpected 'package'"); + token = this.tn.next(); + if (!Lang.TYPEREF.test(token)) + throw Error("illegal package name: " + token); + this.tn.skip(";"); + topLevel["package"] = token; + break; + case 'import': + if (!head) + throw Error("unexpected 'import'"); + token = this.tn.peek(); + if (token === "public" || (weak = token === "weak")) // token ignored + this.tn.next(); + token = this._readString(); + this.tn.skip(";"); + if (!weak) // import ignored + topLevel["imports"].push(token); + break; + case 'syntax': + if (!head) + throw Error("unexpected 'syntax'"); + this.tn.skip("="); + if ((topLevel["syntax"] = this._readString()) === "proto3") + this.proto3 = true; + this.tn.skip(";"); + break; + case 'message': + this._parseMessage(topLevel, null); + head = false; + break; + case 'enum': + this._parseEnum(topLevel); + head = false; + break; + case 'option': + this._parseOption(topLevel); + break; + case 'service': + this._parseService(topLevel); + break; + case 'extend': + this._parseExtend(topLevel); + break; + default: + throw Error("unexpected '" + token + "'"); + } + } + } catch (e) { + e.message = "Parse error at line "+this.tn.line+": " + e.message; + throw e; + } + delete topLevel["name"]; + return topLevel; }; /** - * Returns an iterator over keys in the map. - * @returns {Object} The iterator + * Parses the specified source. + * @returns {!Object} + * @throws {Error} If the source cannot be parsed + * @expose */ - MapPrototype.keys = function() { - var keys = []; - var strKeys = Object.keys(this.map); - for (var i = 0; i < strKeys.length; i++) - keys.push(this.map[strKeys[i]].key); - return arrayIterator(keys); + Parser.parse = function(source) { + return new Parser(source).parse(); }; - /** - * Returns an iterator over values in the map. - * @returns {!Object} The iterator - */ - MapPrototype.values = function() { - var values = []; - var strKeys = Object.keys(this.map); - for (var i = 0; i < strKeys.length; i++) - values.push(this.map[strKeys[i]].value); - return arrayIterator(values); - }; + // ----- Conversion ------ /** - * Iterates over entries in the map, calling a function on each. - * @param {function(this:*, *, *, *)} cb The callback to invoke with value, key, and map arguments. - * @param {Object=} thisArg The `this` value for the callback + * Converts a numerical string to an id. + * @param {string} value + * @param {boolean=} mayBeNegative + * @returns {number} + * @inner */ - MapPrototype.forEach = function(cb, thisArg) { - var strKeys = Object.keys(this.map); - for (var i = 0, entry; i < strKeys.length; i++) - cb.call(thisArg, (entry=this.map[strKeys[i]]).value, entry.key, this); - }; + function mkId(value, mayBeNegative) { + var id = -1, + sign = 1; + if (value.charAt(0) == '-') { + sign = -1; + value = value.substring(1); + } + if (Lang.NUMBER_DEC.test(value)) + id = parseInt(value); + else if (Lang.NUMBER_HEX.test(value)) + id = parseInt(value.substring(2), 16); + else if (Lang.NUMBER_OCT.test(value)) + id = parseInt(value.substring(1), 8); + else + throw Error("illegal id value: " + (sign < 0 ? '-' : '') + value); + id = (sign*id)|0; // Force to 32bit + if (!mayBeNegative && id < 0) + throw Error("illegal id value: " + (sign < 0 ? '-' : '') + value); + return id; + } /** - * Sets a key in the map to the given value. - * @param {*} key The key - * @param {*} value The value - * @returns {!ProtoBuf.Map} The map instance + * Converts a numerical string to a number. + * @param {string} val + * @returns {number} + * @inner */ - MapPrototype.set = function(key, value) { - var keyValue = this.keyElem.verifyValue(key); - var valValue = this.valueElem.verifyValue(value); - this.map[this.keyElem.valueToString(keyValue)] = - { key: keyValue, value: valValue }; - return this; - }; + function mkNumber(val) { + var sign = 1; + if (val.charAt(0) == '-') { + sign = -1; + val = val.substring(1); + } + if (Lang.NUMBER_DEC.test(val)) + return sign * parseInt(val, 10); + else if (Lang.NUMBER_HEX.test(val)) + return sign * parseInt(val.substring(2), 16); + else if (Lang.NUMBER_OCT.test(val)) + return sign * parseInt(val.substring(1), 8); + else if (val === 'inf') + return sign * Infinity; + else if (val === 'nan') + return NaN; + else if (Lang.NUMBER_FLT.test(val)) + return sign * parseFloat(val); + throw Error("illegal number value: " + (sign < 0 ? '-' : '') + val); + } + + // ----- Reading ------ /** - * Gets the value corresponding to a key in the map. - * @param {*} key The key - * @returns {*|undefined} The value, or `undefined` if key not present + * Reads a string. + * @returns {string} + * @private */ - MapPrototype.get = function(key) { - var keyValue = this.keyElem.valueToString(this.keyElem.verifyValue(key)); - if (!(keyValue in this.map)) - return undefined; - return this.map[keyValue].value; + ParserPrototype._readString = function() { + var value = "", + token, + delim; + do { + delim = this.tn.next(); + if (delim !== "'" && delim !== '"') + throw Error("illegal string delimiter: "+delim); + value += this.tn.next(); + this.tn.skip(delim); + token = this.tn.peek(); + } while (token === '"' || token === '"'); // multi line? + return value; }; /** - * Determines whether the given key is present in the map. - * @param {*} key The key - * @returns {boolean} `true` if the key is present + * Reads a value. + * @param {boolean=} mayBeTypeRef + * @returns {number|boolean|string} + * @private */ - MapPrototype.has = function(key) { - var keyValue = this.keyElem.valueToString(this.keyElem.verifyValue(key)); - return (keyValue in this.map); - }; - - return Map; - })(ProtoBuf, ProtoBuf.Reflect); - - - /** - * Loads a .proto string and returns the Builder. - * @param {string} proto .proto file contents - * @param {(ProtoBuf.Builder|string|{root: string, file: string})=} builder Builder to append to. Will create a new one if omitted. - * @param {(string|{root: string, file: string})=} filename The corresponding file name if known. Must be specified for imports. - * @return {ProtoBuf.Builder} Builder to create new messages - * @throws {Error} If the definition cannot be parsed or built - * @expose - */ - ProtoBuf.loadProto = function(proto, builder, filename) { - if (typeof builder === 'string' || (builder && typeof builder["file"] === 'string' && typeof builder["root"] === 'string')) - filename = builder, - builder = undefined; - return ProtoBuf.loadJson(ProtoBuf.DotProto.Parser.parse(proto), builder, filename); - }; - - /** - * Loads a .proto string and returns the Builder. This is an alias of {@link ProtoBuf.loadProto}. - * @function - * @param {string} proto .proto file contents - * @param {(ProtoBuf.Builder|string)=} builder Builder to append to. Will create a new one if omitted. - * @param {(string|{root: string, file: string})=} filename The corresponding file name if known. Must be specified for imports. - * @return {ProtoBuf.Builder} Builder to create new messages - * @throws {Error} If the definition cannot be parsed or built - * @expose - */ - ProtoBuf.protoFromString = ProtoBuf.loadProto; // Legacy - - /** - * Loads a .proto file and returns the Builder. - * @param {string|{root: string, file: string}} filename Path to proto file or an object specifying 'file' with - * an overridden 'root' path for all imported files. - * @param {function(?Error, !ProtoBuf.Builder=)=} callback Callback that will receive `null` as the first and - * the Builder as its second argument on success, otherwise the error as its first argument. If omitted, the - * file will be read synchronously and this function will return the Builder. - * @param {ProtoBuf.Builder=} builder Builder to append to. Will create a new one if omitted. - * @return {?ProtoBuf.Builder|undefined} The Builder if synchronous (no callback specified, will be NULL if the - * request has failed), else undefined - * @expose - */ - ProtoBuf.loadProtoFile = function(filename, callback, builder) { - if (callback && typeof callback === 'object') - builder = callback, - callback = null; - else if (!callback || typeof callback !== 'function') - callback = null; - if (callback) - return ProtoBuf.Util.fetch(typeof filename === 'string' ? filename : filename["root"]+"/"+filename["file"], function(contents) { - if (contents === null) { - callback(Error("Failed to fetch file")); - return; - } - try { - callback(null, ProtoBuf.loadProto(contents, builder, filename)); - } catch (e) { - callback(e); - } - }); - var contents = ProtoBuf.Util.fetch(typeof filename === 'object' ? filename["root"]+"/"+filename["file"] : filename); - return contents === null ? null : ProtoBuf.loadProto(contents, builder, filename); - }; - - /** - * Loads a .proto file and returns the Builder. This is an alias of {@link ProtoBuf.loadProtoFile}. - * @function - * @param {string|{root: string, file: string}} filename Path to proto file or an object specifying 'file' with - * an overridden 'root' path for all imported files. - * @param {function(?Error, !ProtoBuf.Builder=)=} callback Callback that will receive `null` as the first and - * the Builder as its second argument on success, otherwise the error as its first argument. If omitted, the - * file will be read synchronously and this function will return the Builder. - * @param {ProtoBuf.Builder=} builder Builder to append to. Will create a new one if omitted. - * @return {!ProtoBuf.Builder|undefined} The Builder if synchronous (no callback specified, will be NULL if the - * request has failed), else undefined - * @expose - */ - ProtoBuf.protoFromFile = ProtoBuf.loadProtoFile; // Legacy - + ParserPrototype._readValue = function(mayBeTypeRef) { + var token = this.tn.peek(), + value; + if (token === '"' || token === "'") + return this._readString(); + this.tn.next(); + if (Lang.NUMBER.test(token)) + return mkNumber(token); + if (Lang.BOOL.test(token)) + return (token.toLowerCase() === 'true'); + if (mayBeTypeRef && Lang.TYPEREF.test(token)) + return token; + throw Error("illegal value: "+token); - /** - * Constructs a new empty Builder. - * @param {Object.=} options Builder options, defaults to global options set on ProtoBuf - * @return {!ProtoBuf.Builder} Builder - * @expose - */ - ProtoBuf.newBuilder = function(options) { - options = options || {}; - if (typeof options['convertFieldsToCamelCase'] === 'undefined') - options['convertFieldsToCamelCase'] = ProtoBuf.convertFieldsToCamelCase; - if (typeof options['populateAccessors'] === 'undefined') - options['populateAccessors'] = ProtoBuf.populateAccessors; - return new ProtoBuf.Builder(options); - }; + }; - /** - * Loads a .json definition and returns the Builder. - * @param {!*|string} json JSON definition - * @param {(ProtoBuf.Builder|string|{root: string, file: string})=} builder Builder to append to. Will create a new one if omitted. - * @param {(string|{root: string, file: string})=} filename The corresponding file name if known. Must be specified for imports. - * @return {ProtoBuf.Builder} Builder to create new messages - * @throws {Error} If the definition cannot be parsed or built - * @expose - */ - ProtoBuf.loadJson = function(json, builder, filename) { - if (typeof builder === 'string' || (builder && typeof builder["file"] === 'string' && typeof builder["root"] === 'string')) - filename = builder, - builder = null; - if (!builder || typeof builder !== 'object') - builder = ProtoBuf.newBuilder(); - if (typeof json === 'string') - json = JSON.parse(json); - builder["import"](json, filename); - builder.resolveAll(); - return builder; - }; + // ----- Parsing constructs ----- - /** - * Loads a .json file and returns the Builder. - * @param {string|!{root: string, file: string}} filename Path to json file or an object specifying 'file' with - * an overridden 'root' path for all imported files. - * @param {function(?Error, !ProtoBuf.Builder=)=} callback Callback that will receive `null` as the first and - * the Builder as its second argument on success, otherwise the error as its first argument. If omitted, the - * file will be read synchronously and this function will return the Builder. - * @param {ProtoBuf.Builder=} builder Builder to append to. Will create a new one if omitted. - * @return {?ProtoBuf.Builder|undefined} The Builder if synchronous (no callback specified, will be NULL if the - * request has failed), else undefined - * @expose - */ - ProtoBuf.loadJsonFile = function(filename, callback, builder) { - if (callback && typeof callback === 'object') - builder = callback, - callback = null; - else if (!callback || typeof callback !== 'function') - callback = null; - if (callback) - return ProtoBuf.Util.fetch(typeof filename === 'string' ? filename : filename["root"]+"/"+filename["file"], function(contents) { - if (contents === null) { - callback(Error("Failed to fetch file")); - return; - } - try { - callback(null, ProtoBuf.loadJson(JSON.parse(contents), builder, filename)); - } catch (e) { - callback(e); + /** + * Parses a namespace option. + * @param {!Object} parent Parent definition + * @param {boolean=} isList + * @private + */ + ParserPrototype._parseOption = function(parent, isList) { + var token = this.tn.next(), + custom = false; + if (token === '(') { + custom = true; + token = this.tn.next(); + } + if (!Lang.TYPEREF.test(token)) + // we can allow options of the form google.protobuf.* since they will just get ignored anyways + // if (!/google\.protobuf\./.test(token)) // FIXME: Why should that not be a valid typeref? + throw Error("illegal option name: "+token); + var name = token; + if (custom) { // (my_method_option).foo, (my_method_option), some_method_option, (foo.my_option).bar + this.tn.skip(')'); + name = '('+name+')'; + token = this.tn.peek(); + if (Lang.FQTYPEREF.test(token)) { + name += token; + this.tn.next(); } - }); - var contents = ProtoBuf.Util.fetch(typeof filename === 'object' ? filename["root"]+"/"+filename["file"] : filename); - return contents === null ? null : ProtoBuf.loadJson(JSON.parse(contents), builder, filename); - }; - - return ProtoBuf; -}); - -}).call(this,require('_process')) -},{"_process":20,"bytebuffer":22,"fs":19,"path":19}],22:[function(require,module,exports){ -/* - Copyright 2013-2014 Daniel Wirtz - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - */ - -/** - * @license bytebuffer.js (c) 2015 Daniel Wirtz - * Backing buffer: ArrayBuffer, Accessor: Uint8Array - * Released under the Apache License, Version 2.0 - * see: https://github.com/dcodeIO/bytebuffer.js for details - */ -(function(global, factory) { - - /* AMD */ if (typeof define === 'function' && define["amd"]) - define(["long"], factory); - /* CommonJS */ else if (typeof require === 'function' && typeof module === "object" && module && module["exports"]) - module['exports'] = (function() { - var Long; try { Long = require("long"); } catch (e) {} - return factory(Long); - })(); - /* Global */ else - (global["dcodeIO"] = global["dcodeIO"] || {})["ByteBuffer"] = factory(global["dcodeIO"]["Long"]); - -})(this, function(Long) { - "use strict"; - - /** - * Constructs a new ByteBuffer. - * @class The swiss army knife for binary data in JavaScript. - * @exports ByteBuffer - * @constructor - * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}. - * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to - * {@link ByteBuffer.DEFAULT_ENDIAN}. - * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to - * {@link ByteBuffer.DEFAULT_NOASSERT}. - * @expose - */ - var ByteBuffer = function(capacity, littleEndian, noAssert) { - if (typeof capacity === 'undefined') - capacity = ByteBuffer.DEFAULT_CAPACITY; - if (typeof littleEndian === 'undefined') - littleEndian = ByteBuffer.DEFAULT_ENDIAN; - if (typeof noAssert === 'undefined') - noAssert = ByteBuffer.DEFAULT_NOASSERT; - if (!noAssert) { - capacity = capacity | 0; - if (capacity < 0) - throw RangeError("Illegal capacity"); - littleEndian = !!littleEndian; - noAssert = !!noAssert; - } + } + this.tn.skip('='); + this._parseOptionValue(parent, name); + if (!isList) + this.tn.skip(";"); + }; /** - * Backing ArrayBuffer. - * @type {!ArrayBuffer} - * @expose + * Sets an option on the specified options object. + * @param {!Object.} options + * @param {string} name + * @param {string|number|boolean} value + * @inner */ - this.buffer = capacity === 0 ? EMPTY_BUFFER : new ArrayBuffer(capacity); + function setOption(options, name, value) { + if (typeof options[name] === 'undefined') + options[name] = value; + else { + if (!Array.isArray(options[name])) + options[name] = [ options[name] ]; + options[name].push(value); + } + } /** - * Uint8Array utilized to manipulate the backing buffer. Becomes `null` if the backing buffer has a capacity of `0`. - * @type {?Uint8Array} - * @expose + * Parses an option value. + * @param {!Object} parent + * @param {string} name + * @private */ - this.view = capacity === 0 ? null : new Uint8Array(this.buffer); + ParserPrototype._parseOptionValue = function(parent, name) { + var token = this.tn.peek(); + if (token !== '{') { // Plain value + setOption(parent["options"], name, this._readValue(true)); + } else { // Aggregate options + this.tn.skip("{"); + while ((token = this.tn.next()) !== '}') { + if (!Lang.NAME.test(token)) + throw Error("illegal option name: " + name + "." + token); + if (this.tn.omit(":")) + setOption(parent["options"], name + "." + token, this._readValue(true)); + else + this._parseOptionValue(parent, name + "." + token); + } + } + }; /** - * Absolute read/write offset. - * @type {number} - * @expose - * @see ByteBuffer#flip - * @see ByteBuffer#clear + * Parses a service definition. + * @param {!Object} parent Parent definition + * @private */ - this.offset = 0; + ParserPrototype._parseService = function(parent) { + var token = this.tn.next(); + if (!Lang.NAME.test(token)) + throw Error("illegal service name at line "+this.tn.line+": "+token); + var name = token; + var svc = { + "name": name, + "rpc": {}, + "options": {} + }; + this.tn.skip("{"); + while ((token = this.tn.next()) !== '}') { + if (token === "option") + this._parseOption(svc); + else if (token === 'rpc') + this._parseServiceRPC(svc); + else + throw Error("illegal service token: "+token); + } + this.tn.omit(";"); + parent["services"].push(svc); + }; /** - * Marked offset. - * @type {number} - * @expose - * @see ByteBuffer#mark - * @see ByteBuffer#reset + * Parses a RPC service definition of the form ['rpc', name, (request), 'returns', (response)]. + * @param {!Object} svc Service definition + * @private */ - this.markedOffset = -1; + ParserPrototype._parseServiceRPC = function(svc) { + var type = "rpc", + token = this.tn.next(); + if (!Lang.NAME.test(token)) + throw Error("illegal rpc service method name: "+token); + var name = token; + var method = { + "request": null, + "response": null, + "request_stream": false, + "response_stream": false, + "options": {} + }; + this.tn.skip("("); + token = this.tn.next(); + if (token.toLowerCase() === "stream") { + method["request_stream"] = true; + token = this.tn.next(); + } + if (!Lang.TYPEREF.test(token)) + throw Error("illegal rpc service request type: "+token); + method["request"] = token; + this.tn.skip(")"); + token = this.tn.next(); + if (token.toLowerCase() !== "returns") + throw Error("illegal rpc service request type delimiter: "+token); + this.tn.skip("("); + token = this.tn.next(); + if (token.toLowerCase() === "stream") { + method["response_stream"] = true; + token = this.tn.next(); + } + method["response"] = token; + this.tn.skip(")"); + token = this.tn.peek(); + if (token === '{') { + this.tn.next(); + while ((token = this.tn.next()) !== '}') { + if (token === 'option') + this._parseOption(method); + else + throw Error("illegal rpc service token: " + token); + } + this.tn.omit(";"); + } else + this.tn.skip(";"); + if (typeof svc[type] === 'undefined') + svc[type] = {}; + svc[type][name] = method; + }; /** - * Absolute limit of the contained data. Set to the backing buffer's capacity upon allocation. - * @type {number} - * @expose - * @see ByteBuffer#flip - * @see ByteBuffer#clear + * Parses a message definition. + * @param {!Object} parent Parent definition + * @param {!Object=} fld Field definition if this is a group + * @returns {!Object} + * @private */ - this.limit = capacity; + ParserPrototype._parseMessage = function(parent, fld) { + var isGroup = !!fld, + token = this.tn.next(); + var msg = { + "name": "", + "fields": [], + "enums": [], + "messages": [], + "options": {}, + "services": [], + "oneofs": {} + // "extensions": undefined + }; + if (!Lang.NAME.test(token)) + throw Error("illegal "+(isGroup ? "group" : "message")+" name: "+token); + msg["name"] = token; + if (isGroup) { + this.tn.skip("="); + fld["id"] = mkId(this.tn.next()); + msg["isGroup"] = true; + } + token = this.tn.peek(); + if (token === '[' && fld) + this._parseFieldOptions(fld); + this.tn.skip("{"); + while ((token = this.tn.next()) !== '}') { + if (Lang.RULE.test(token)) + this._parseMessageField(msg, token); + else if (token === "oneof") + this._parseMessageOneOf(msg); + else if (token === "enum") + this._parseEnum(msg); + else if (token === "message") + this._parseMessage(msg); + else if (token === "option") + this._parseOption(msg); + else if (token === "service") + this._parseService(msg); + else if (token === "extensions") + if (msg.hasOwnProperty("extensions")) { + msg["extensions"] = msg["extensions"].concat(this._parseExtensionRanges()) + } else { + msg["extensions"] = this._parseExtensionRanges(); + } + else if (token === "reserved") + this._parseIgnored(); // TODO + else if (token === "extend") + this._parseExtend(msg); + else if (Lang.TYPEREF.test(token)) { + if (!this.proto3) + throw Error("illegal field rule: "+token); + this._parseMessageField(msg, "optional", token); + } else + throw Error("illegal message token: "+token); + } + this.tn.omit(";"); + parent["messages"].push(msg); + return msg; + }; /** - * Whether to use little endian byte order, defaults to `false` for big endian. - * @type {boolean} - * @expose + * Parses an ignored statement. + * @private */ - this.littleEndian = typeof littleEndian !== 'undefined' ? !!littleEndian : false; + ParserPrototype._parseIgnored = function() { + while (this.tn.peek() !== ';') + this.tn.next(); + this.tn.skip(";"); + }; /** - * Whether to skip assertions of offsets and values, defaults to `false`. - * @type {boolean} - * @expose + * Parses a message field. + * @param {!Object} msg Message definition + * @param {string} rule Field rule + * @param {string=} type Field type if already known (never known for maps) + * @returns {!Object} Field descriptor + * @private */ - this.noAssert = !!noAssert; - }; - - /** - * ByteBuffer version. - * @type {string} - * @const - * @expose - */ - ByteBuffer.VERSION = "5.0.0"; + ParserPrototype._parseMessageField = function(msg, rule, type) { + if (!Lang.RULE.test(rule)) + throw Error("illegal message field rule: "+rule); + var fld = { + "rule": rule, + "type": "", + "name": "", + "options": {}, + "id": 0 + }; + var token; + if (rule === "map") { - /** - * Little endian constant that can be used instead of its boolean value. Evaluates to `true`. - * @type {boolean} - * @const - * @expose - */ - ByteBuffer.LITTLE_ENDIAN = true; + if (type) + throw Error("illegal type: " + type); + this.tn.skip('<'); + token = this.tn.next(); + if (!Lang.TYPE.test(token) && !Lang.TYPEREF.test(token)) + throw Error("illegal message field type: " + token); + fld["keytype"] = token; + this.tn.skip(','); + token = this.tn.next(); + if (!Lang.TYPE.test(token) && !Lang.TYPEREF.test(token)) + throw Error("illegal message field: " + token); + fld["type"] = token; + this.tn.skip('>'); + token = this.tn.next(); + if (!Lang.NAME.test(token)) + throw Error("illegal message field name: " + token); + fld["name"] = token; + this.tn.skip("="); + fld["id"] = mkId(this.tn.next()); + token = this.tn.peek(); + if (token === '[') + this._parseFieldOptions(fld); + this.tn.skip(";"); - /** - * Big endian constant that can be used instead of its boolean value. Evaluates to `false`. - * @type {boolean} - * @const - * @expose - */ - ByteBuffer.BIG_ENDIAN = false; + } else { - /** - * Default initial capacity of `16`. - * @type {number} - * @expose - */ - ByteBuffer.DEFAULT_CAPACITY = 16; + type = typeof type !== 'undefined' ? type : this.tn.next(); - /** - * Default endianess of `false` for big endian. - * @type {boolean} - * @expose - */ - ByteBuffer.DEFAULT_ENDIAN = ByteBuffer.BIG_ENDIAN; + if (type === "group") { - /** - * Default no assertions flag of `false`. - * @type {boolean} - * @expose - */ - ByteBuffer.DEFAULT_NOASSERT = false; + // "A [legacy] group simply combines a nested message type and a field into a single declaration. In your + // code, you can treat this message just as if it had a Result type field called result (the latter name is + // converted to lower-case so that it does not conflict with the former)." + var grp = this._parseMessage(msg, fld); + if (!/^[A-Z]/.test(grp["name"])) + throw Error('illegal group name: '+grp["name"]); + fld["type"] = grp["name"]; + fld["name"] = grp["name"].toLowerCase(); + this.tn.omit(";"); - /** - * A `Long` class for representing a 64-bit two's-complement integer value. May be `null` if Long.js has not been loaded - * and int64 support is not available. - * @type {?Long} - * @const - * @see https://github.com/dcodeIO/Long.js - * @expose - */ - ByteBuffer.Long = Long || null; + } else { - /** - * @alias ByteBuffer.prototype - * @inner - */ - var ByteBufferPrototype = ByteBuffer.prototype; + if (!Lang.TYPE.test(type) && !Lang.TYPEREF.test(type)) + throw Error("illegal message field type: " + type); + fld["type"] = type; + token = this.tn.next(); + if (!Lang.NAME.test(token)) + throw Error("illegal message field name: " + token); + fld["name"] = token; + this.tn.skip("="); + fld["id"] = mkId(this.tn.next()); + token = this.tn.peek(); + if (token === "[") + this._parseFieldOptions(fld); + this.tn.skip(";"); - /** - * An indicator used to reliably determine if an object is a ByteBuffer or not. - * @type {boolean} - * @const - * @expose - * @private - */ - ByteBufferPrototype.__isByteBuffer__; + } + } + msg["fields"].push(fld); + return fld; + }; - Object.defineProperty(ByteBufferPrototype, "__isByteBuffer__", { - value: true, - enumerable: false, - configurable: false - }); + /** + * Parses a message oneof. + * @param {!Object} msg Message definition + * @private + */ + ParserPrototype._parseMessageOneOf = function(msg) { + var token = this.tn.next(); + if (!Lang.NAME.test(token)) + throw Error("illegal oneof name: "+token); + var name = token, + fld; + var fields = []; + this.tn.skip("{"); + while ((token = this.tn.next()) !== "}") { + fld = this._parseMessageField(msg, "optional", token); + fld["oneof"] = name; + fields.push(fld["id"]); + } + this.tn.omit(";"); + msg["oneofs"][name] = fields; + }; - // helpers + /** + * Parses a set of field option definitions. + * @param {!Object} fld Field definition + * @private + */ + ParserPrototype._parseFieldOptions = function(fld) { + this.tn.skip("["); + var token, + first = true; + while ((token = this.tn.peek()) !== ']') { + if (!first) + this.tn.skip(","); + this._parseOption(fld, true); + first = false; + } + this.tn.next(); + }; - /** - * @type {!ArrayBuffer} - * @inner - */ - var EMPTY_BUFFER = new ArrayBuffer(0); + /** + * Parses an enum. + * @param {!Object} msg Message definition + * @private + */ + ParserPrototype._parseEnum = function(msg) { + var enm = { + "name": "", + "values": [], + "options": {} + }; + var token = this.tn.next(); + if (!Lang.NAME.test(token)) + throw Error("illegal name: "+token); + enm["name"] = token; + this.tn.skip("{"); + while ((token = this.tn.next()) !== '}') { + if (token === "option") + this._parseOption(enm); + else { + if (!Lang.NAME.test(token)) + throw Error("illegal name: "+token); + this.tn.skip("="); + var val = { + "name": token, + "id": mkId(this.tn.next(), true) + }; + token = this.tn.peek(); + if (token === "[") + this._parseFieldOptions({ "options": {} }); + this.tn.skip(";"); + enm["values"].push(val); + } + } + this.tn.omit(";"); + msg["enums"].push(enm); + }; - /** - * String.fromCharCode reference for compile-time renaming. - * @type {function(...number):string} - * @inner - */ - var stringFromCharCode = String.fromCharCode; + /** + * Parses extension / reserved ranges. + * @returns {!Array.>} + * @private + */ + ParserPrototype._parseExtensionRanges = function() { + var ranges = []; + var token, + range, + value; + do { + range = []; + while (true) { + token = this.tn.next(); + switch (token) { + case "min": + value = ProtoBuf.ID_MIN; + break; + case "max": + value = ProtoBuf.ID_MAX; + break; + default: + value = mkNumber(token); + break; + } + range.push(value); + if (range.length === 2) + break; + if (this.tn.peek() !== "to") { + range.push(value); + break; + } + this.tn.next(); + } + ranges.push(range); + } while (this.tn.omit(",")); + this.tn.skip(";"); + return ranges; + }; - /** - * Creates a source function for a string. - * @param {string} s String to read from - * @returns {function():number|null} Source function returning the next char code respectively `null` if there are - * no more characters left. - * @throws {TypeError} If the argument is invalid - * @inner - */ - function stringSource(s) { - var i=0; return function() { - return i < s.length ? s.charCodeAt(i++) : null; + /** + * Parses an extend block. + * @param {!Object} parent Parent object + * @private + */ + ParserPrototype._parseExtend = function(parent) { + var token = this.tn.next(); + if (!Lang.TYPEREF.test(token)) + throw Error("illegal extend reference: "+token); + var ext = { + "ref": token, + "fields": [] + }; + this.tn.skip("{"); + while ((token = this.tn.next()) !== '}') { + if (Lang.RULE.test(token)) + this._parseMessageField(ext, token); + else if (Lang.TYPEREF.test(token)) { + if (!this.proto3) + throw Error("illegal field rule: "+token); + this._parseMessageField(ext, "optional", token); + } else + throw Error("illegal extend token: "+token); + } + this.tn.omit(";"); + parent["messages"].push(ext); + return ext; }; - } - /** - * Creates a destination function for a string. - * @returns {function(number=):undefined|string} Destination function successively called with the next char code. - * Returns the final string when called without arguments. - * @inner - */ - function stringDestination() { - var cs = [], ps = []; return function() { - if (arguments.length === 0) - return ps.join('')+stringFromCharCode.apply(String, cs); - if (cs.length + arguments.length > 1024) - ps.push(stringFromCharCode.apply(String, cs)), - cs.length = 0; - Array.prototype.push.apply(cs, arguments); + // ----- General ----- + + /** + * Returns a string representation of this parser. + * @returns {string} + */ + ParserPrototype.toString = function() { + return "Parser at line "+this.tn.line; }; - } - /** - * Gets the accessor type. - * @returns {Function} `Buffer` under node.js, `Uint8Array` respectively `DataView` in the browser (classes) - * @expose - */ - ByteBuffer.accessor = function() { - return Uint8Array; - }; - /** - * Allocates a new ByteBuffer backed by a buffer of the specified capacity. - * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}. - * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to - * {@link ByteBuffer.DEFAULT_ENDIAN}. - * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to - * {@link ByteBuffer.DEFAULT_NOASSERT}. - * @returns {!ByteBuffer} - * @expose - */ - ByteBuffer.allocate = function(capacity, littleEndian, noAssert) { - return new ByteBuffer(capacity, littleEndian, noAssert); - }; + /** + * @alias ProtoBuf.DotProto.Parser + * @expose + */ + DotProto.Parser = Parser; + + return DotProto; + + })(ProtoBuf, ProtoBuf.Lang); /** - * Concatenates multiple ByteBuffers into one. - * @param {!Array.} buffers Buffers to concatenate - * @param {(string|boolean)=} encoding String encoding if `buffers` contains a string ("base64", "hex", "binary", - * defaults to "utf8") - * @param {boolean=} littleEndian Whether to use little or big endian byte order for the resulting ByteBuffer. Defaults - * to {@link ByteBuffer.DEFAULT_ENDIAN}. - * @param {boolean=} noAssert Whether to skip assertions of offsets and values for the resulting ByteBuffer. Defaults to - * {@link ByteBuffer.DEFAULT_NOASSERT}. - * @returns {!ByteBuffer} Concatenated ByteBuffer + * @alias ProtoBuf.Reflect * @expose */ - ByteBuffer.concat = function(buffers, encoding, littleEndian, noAssert) { - if (typeof encoding === 'boolean' || typeof encoding !== 'string') { - noAssert = littleEndian; - littleEndian = encoding; - encoding = undefined; - } - var capacity = 0; - for (var i=0, k=buffers.length, length; i 0) capacity += length; - } - if (capacity === 0) - return new ByteBuffer(0, littleEndian, noAssert); - var bb = new ByteBuffer(capacity, littleEndian, noAssert), - bi; - i=0; while (i} buffer Anything that can be wrapped - * @param {(string|boolean)=} encoding String encoding if `buffer` is a string ("base64", "hex", "binary", defaults to - * "utf8") - * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to - * {@link ByteBuffer.DEFAULT_ENDIAN}. - * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to - * {@link ByteBuffer.DEFAULT_NOASSERT}. - * @returns {!ByteBuffer} A ByteBuffer wrapping `buffer` - * @expose - */ - ByteBuffer.wrap = function(buffer, encoding, littleEndian, noAssert) { - if (typeof encoding !== 'string') { - noAssert = littleEndian; - littleEndian = encoding; - encoding = undefined; - } - if (typeof buffer === 'string') { - if (typeof encoding === 'undefined') - encoding = "utf8"; - switch (encoding) { - case "base64": - return ByteBuffer.fromBase64(buffer, littleEndian); - case "hex": - return ByteBuffer.fromHex(buffer, littleEndian); - case "binary": - return ByteBuffer.fromBinary(buffer, littleEndian); - case "utf8": - return ByteBuffer.fromUTF8(buffer, littleEndian); - case "debug": - return ByteBuffer.fromDebug(buffer, littleEndian); - default: - throw Error("Unsupported encoding: "+encoding); - } - } - if (buffer === null || typeof buffer !== 'object') - throw TypeError("Illegal buffer"); - var bb; - if (ByteBuffer.isByteBuffer(buffer)) { - bb = ByteBufferPrototype.clone.call(buffer); - bb.markedOffset = -1; - return bb; - } - if (buffer instanceof Uint8Array) { // Extract ArrayBuffer from Uint8Array - bb = new ByteBuffer(0, littleEndian, noAssert); - if (buffer.length > 0) { // Avoid references to more than one EMPTY_BUFFER - bb.buffer = buffer.buffer; - bb.offset = buffer.byteOffset; - bb.limit = buffer.byteOffset + buffer.byteLength; - bb.view = new Uint8Array(buffer.buffer); - } - } else if (buffer instanceof ArrayBuffer) { // Reuse ArrayBuffer - bb = new ByteBuffer(0, littleEndian, noAssert); - if (buffer.byteLength > 0) { - bb.buffer = buffer; - bb.offset = 0; - bb.limit = buffer.byteLength; - bb.view = buffer.byteLength > 0 ? new Uint8Array(buffer) : null; - } - } else if (Object.prototype.toString.call(buffer) === "[object Array]") { // Create from octets - bb = new ByteBuffer(buffer.length, littleEndian, noAssert); - bb.limit = buffer.length; - for (var i=0; i>>= 0; - if (offset < 0 || offset + length > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+length+") <= "+this.buffer.byteLength); - } - var slice = this.slice(offset, offset + length); - if (relative) this.offset += length; - return slice; - }; + /** + * Constructs a Reflect base class. + * @exports ProtoBuf.Reflect.T + * @constructor + * @abstract + * @param {!ProtoBuf.Builder} builder Builder reference + * @param {?ProtoBuf.Reflect.T} parent Parent object + * @param {string} name Object name + */ + var T = function(builder, parent, name) { - /** - * Writes a payload of bytes. This is an alias of {@link ByteBuffer#append}. - * @function - * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to write. If `source` is a ByteBuffer, its offsets - * will be modified according to the performed read operation. - * @param {(string|number)=} encoding Encoding if `data` is a string ("base64", "hex", "binary", defaults to "utf8") - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * written if omitted. - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.writeBytes = ByteBufferPrototype.append; + /** + * Builder reference. + * @type {!ProtoBuf.Builder} + * @expose + */ + this.builder = builder; - // types/ints/int8 + /** + * Parent object. + * @type {?ProtoBuf.Reflect.T} + * @expose + */ + this.parent = parent; - /** - * Writes an 8bit signed integer. - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted. - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.writeInt8 = function(value, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof value !== 'number' || value % 1 !== 0) - throw TypeError("Illegal value: "+value+" (not an integer)"); - value |= 0; - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - offset += 1; - var capacity0 = this.buffer.byteLength; - if (offset > capacity0) - this.resize((capacity0 *= 2) > offset ? capacity0 : offset); - offset -= 1; - this.view[offset] = value; - if (relative) this.offset += 1; - return this; - }; + /** + * Object name in namespace. + * @type {string} + * @expose + */ + this.name = name; - /** - * Writes an 8bit signed integer. This is an alias of {@link ByteBuffer#writeInt8}. - * @function - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted. - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.writeByte = ByteBufferPrototype.writeInt8; + /** + * Fully qualified class name + * @type {string} + * @expose + */ + this.className; + }; - /** - * Reads an 8bit signed integer. - * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted. - * @returns {number} Value read - * @expose - */ - ByteBufferPrototype.readInt8 = function(offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 1 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+1+") <= "+this.buffer.byteLength); - } - var value = this.view[offset]; - if ((value & 0x80) === 0x80) value = -(0xFF - value + 1); // Cast to signed - if (relative) this.offset += 1; - return value; - }; + /** + * @alias ProtoBuf.Reflect.T.prototype + * @inner + */ + var TPrototype = T.prototype; - /** - * Reads an 8bit signed integer. This is an alias of {@link ByteBuffer#readInt8}. - * @function - * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted. - * @returns {number} Value read - * @expose - */ - ByteBufferPrototype.readByte = ByteBufferPrototype.readInt8; + /** + * Returns the fully qualified name of this object. + * @returns {string} Fully qualified name as of ".PATH.TO.THIS" + * @expose + */ + TPrototype.fqn = function() { + var name = this.name, + ptr = this; + do { + ptr = ptr.parent; + if (ptr == null) + break; + name = ptr.name+"."+name; + } while (true); + return name; + }; - /** - * Writes an 8bit unsigned integer. - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted. - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.writeUint8 = function(value, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof value !== 'number' || value % 1 !== 0) - throw TypeError("Illegal value: "+value+" (not an integer)"); - value >>>= 0; - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - offset += 1; - var capacity1 = this.buffer.byteLength; - if (offset > capacity1) - this.resize((capacity1 *= 2) > offset ? capacity1 : offset); - offset -= 1; - this.view[offset] = value; - if (relative) this.offset += 1; - return this; - }; + /** + * Returns a string representation of this Reflect object (its fully qualified name). + * @param {boolean=} includeClass Set to true to include the class name. Defaults to false. + * @return String representation + * @expose + */ + TPrototype.toString = function(includeClass) { + return (includeClass ? this.className + " " : "") + this.fqn(); + }; - /** - * Writes an 8bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint8}. - * @function - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted. - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.writeUInt8 = ByteBufferPrototype.writeUint8; + /** + * Builds this type. + * @throws {Error} If this type cannot be built directly + * @expose + */ + TPrototype.build = function() { + throw Error(this.toString(true)+" cannot be built directly"); + }; - /** - * Reads an 8bit unsigned integer. - * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted. - * @returns {number} Value read - * @expose - */ - ByteBufferPrototype.readUint8 = function(offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 1 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+1+") <= "+this.buffer.byteLength); - } - var value = this.view[offset]; - if (relative) this.offset += 1; - return value; - }; + /** + * @alias ProtoBuf.Reflect.T + * @expose + */ + Reflect.T = T; - /** - * Reads an 8bit unsigned integer. This is an alias of {@link ByteBuffer#readUint8}. - * @function - * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted. - * @returns {number} Value read - * @expose - */ - ByteBufferPrototype.readUInt8 = ByteBufferPrototype.readUint8; + /** + * Constructs a new Namespace. + * @exports ProtoBuf.Reflect.Namespace + * @param {!ProtoBuf.Builder} builder Builder reference + * @param {?ProtoBuf.Reflect.Namespace} parent Namespace parent + * @param {string} name Namespace name + * @param {Object.=} options Namespace options + * @param {string?} syntax The syntax level of this definition (e.g., proto3) + * @constructor + * @extends ProtoBuf.Reflect.T + */ + var Namespace = function(builder, parent, name, options, syntax) { + T.call(this, builder, parent, name); - // types/ints/int16 + /** + * @override + */ + this.className = "Namespace"; - /** - * Writes a 16bit signed integer. - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted. - * @throws {TypeError} If `offset` or `value` is not a valid number - * @throws {RangeError} If `offset` is out of bounds - * @expose - */ - ByteBufferPrototype.writeInt16 = function(value, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof value !== 'number' || value % 1 !== 0) - throw TypeError("Illegal value: "+value+" (not an integer)"); - value |= 0; - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - offset += 2; - var capacity2 = this.buffer.byteLength; - if (offset > capacity2) - this.resize((capacity2 *= 2) > offset ? capacity2 : offset); - offset -= 2; - if (this.littleEndian) { - this.view[offset+1] = (value & 0xFF00) >>> 8; - this.view[offset ] = value & 0x00FF; - } else { - this.view[offset] = (value & 0xFF00) >>> 8; - this.view[offset+1] = value & 0x00FF; - } - if (relative) this.offset += 2; - return this; - }; + /** + * Children inside the namespace. + * @type {!Array.} + */ + this.children = []; - /** - * Writes a 16bit signed integer. This is an alias of {@link ByteBuffer#writeInt16}. - * @function - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted. - * @throws {TypeError} If `offset` or `value` is not a valid number - * @throws {RangeError} If `offset` is out of bounds - * @expose - */ - ByteBufferPrototype.writeShort = ByteBufferPrototype.writeInt16; + /** + * Options. + * @type {!Object.} + */ + this.options = options || {}; - /** - * Reads a 16bit signed integer. - * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted. - * @returns {number} Value read - * @throws {TypeError} If `offset` is not a valid number - * @throws {RangeError} If `offset` is out of bounds - * @expose - */ - ByteBufferPrototype.readInt16 = function(offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 2 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+2+") <= "+this.buffer.byteLength); - } - var value = 0; - if (this.littleEndian) { - value = this.view[offset ]; - value |= this.view[offset+1] << 8; - } else { - value = this.view[offset ] << 8; - value |= this.view[offset+1]; - } - if ((value & 0x8000) === 0x8000) value = -(0xFFFF - value + 1); // Cast to signed - if (relative) this.offset += 2; - return value; - }; + /** + * Syntax level (e.g., proto2 or proto3). + * @type {!string} + */ + this.syntax = syntax || "proto2"; + }; - /** - * Reads a 16bit signed integer. This is an alias of {@link ByteBuffer#readInt16}. - * @function - * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted. - * @returns {number} Value read - * @throws {TypeError} If `offset` is not a valid number - * @throws {RangeError} If `offset` is out of bounds - * @expose - */ - ByteBufferPrototype.readShort = ByteBufferPrototype.readInt16; - - /** - * Writes a 16bit unsigned integer. - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted. - * @throws {TypeError} If `offset` or `value` is not a valid number - * @throws {RangeError} If `offset` is out of bounds - * @expose - */ - ByteBufferPrototype.writeUint16 = function(value, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof value !== 'number' || value % 1 !== 0) - throw TypeError("Illegal value: "+value+" (not an integer)"); - value >>>= 0; - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - offset += 2; - var capacity3 = this.buffer.byteLength; - if (offset > capacity3) - this.resize((capacity3 *= 2) > offset ? capacity3 : offset); - offset -= 2; - if (this.littleEndian) { - this.view[offset+1] = (value & 0xFF00) >>> 8; - this.view[offset ] = value & 0x00FF; - } else { - this.view[offset] = (value & 0xFF00) >>> 8; - this.view[offset+1] = value & 0x00FF; - } - if (relative) this.offset += 2; - return this; - }; - - /** - * Writes a 16bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint16}. - * @function - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted. - * @throws {TypeError} If `offset` or `value` is not a valid number - * @throws {RangeError} If `offset` is out of bounds - * @expose - */ - ByteBufferPrototype.writeUInt16 = ByteBufferPrototype.writeUint16; - - /** - * Reads a 16bit unsigned integer. - * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted. - * @returns {number} Value read - * @throws {TypeError} If `offset` is not a valid number - * @throws {RangeError} If `offset` is out of bounds - * @expose - */ - ByteBufferPrototype.readUint16 = function(offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 2 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+2+") <= "+this.buffer.byteLength); - } - var value = 0; - if (this.littleEndian) { - value = this.view[offset ]; - value |= this.view[offset+1] << 8; - } else { - value = this.view[offset ] << 8; - value |= this.view[offset+1]; - } - if (relative) this.offset += 2; - return value; - }; - - /** - * Reads a 16bit unsigned integer. This is an alias of {@link ByteBuffer#readUint16}. - * @function - * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted. - * @returns {number} Value read - * @throws {TypeError} If `offset` is not a valid number - * @throws {RangeError} If `offset` is out of bounds - * @expose - */ - ByteBufferPrototype.readUInt16 = ByteBufferPrototype.readUint16; - - // types/ints/int32 - - /** - * Writes a 32bit signed integer. - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. - * @expose - */ - ByteBufferPrototype.writeInt32 = function(value, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof value !== 'number' || value % 1 !== 0) - throw TypeError("Illegal value: "+value+" (not an integer)"); - value |= 0; - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - offset += 4; - var capacity4 = this.buffer.byteLength; - if (offset > capacity4) - this.resize((capacity4 *= 2) > offset ? capacity4 : offset); - offset -= 4; - if (this.littleEndian) { - this.view[offset+3] = (value >>> 24) & 0xFF; - this.view[offset+2] = (value >>> 16) & 0xFF; - this.view[offset+1] = (value >>> 8) & 0xFF; - this.view[offset ] = value & 0xFF; - } else { - this.view[offset ] = (value >>> 24) & 0xFF; - this.view[offset+1] = (value >>> 16) & 0xFF; - this.view[offset+2] = (value >>> 8) & 0xFF; - this.view[offset+3] = value & 0xFF; - } - if (relative) this.offset += 4; - return this; - }; - - /** - * Writes a 32bit signed integer. This is an alias of {@link ByteBuffer#writeInt32}. - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. - * @expose - */ - ByteBufferPrototype.writeInt = ByteBufferPrototype.writeInt32; - - /** - * Reads a 32bit signed integer. - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. - * @returns {number} Value read - * @expose - */ - ByteBufferPrototype.readInt32 = function(offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 4 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+4+") <= "+this.buffer.byteLength); - } - var value = 0; - if (this.littleEndian) { - value = this.view[offset+2] << 16; - value |= this.view[offset+1] << 8; - value |= this.view[offset ]; - value += this.view[offset+3] << 24 >>> 0; - } else { - value = this.view[offset+1] << 16; - value |= this.view[offset+2] << 8; - value |= this.view[offset+3]; - value += this.view[offset ] << 24 >>> 0; - } - value |= 0; // Cast to signed - if (relative) this.offset += 4; - return value; - }; - - /** - * Reads a 32bit signed integer. This is an alias of {@link ByteBuffer#readInt32}. - * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `4` if omitted. - * @returns {number} Value read - * @expose - */ - ByteBufferPrototype.readInt = ByteBufferPrototype.readInt32; - - /** - * Writes a 32bit unsigned integer. - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. - * @expose - */ - ByteBufferPrototype.writeUint32 = function(value, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof value !== 'number' || value % 1 !== 0) - throw TypeError("Illegal value: "+value+" (not an integer)"); - value >>>= 0; - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - offset += 4; - var capacity5 = this.buffer.byteLength; - if (offset > capacity5) - this.resize((capacity5 *= 2) > offset ? capacity5 : offset); - offset -= 4; - if (this.littleEndian) { - this.view[offset+3] = (value >>> 24) & 0xFF; - this.view[offset+2] = (value >>> 16) & 0xFF; - this.view[offset+1] = (value >>> 8) & 0xFF; - this.view[offset ] = value & 0xFF; - } else { - this.view[offset ] = (value >>> 24) & 0xFF; - this.view[offset+1] = (value >>> 16) & 0xFF; - this.view[offset+2] = (value >>> 8) & 0xFF; - this.view[offset+3] = value & 0xFF; - } - if (relative) this.offset += 4; - return this; - }; - - /** - * Writes a 32bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint32}. - * @function - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. - * @expose - */ - ByteBufferPrototype.writeUInt32 = ByteBufferPrototype.writeUint32; - - /** - * Reads a 32bit unsigned integer. - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. - * @returns {number} Value read - * @expose - */ - ByteBufferPrototype.readUint32 = function(offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 4 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+4+") <= "+this.buffer.byteLength); - } - var value = 0; - if (this.littleEndian) { - value = this.view[offset+2] << 16; - value |= this.view[offset+1] << 8; - value |= this.view[offset ]; - value += this.view[offset+3] << 24 >>> 0; - } else { - value = this.view[offset+1] << 16; - value |= this.view[offset+2] << 8; - value |= this.view[offset+3]; - value += this.view[offset ] << 24 >>> 0; - } - if (relative) this.offset += 4; - return value; - }; - - /** - * Reads a 32bit unsigned integer. This is an alias of {@link ByteBuffer#readUint32}. - * @function - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. - * @returns {number} Value read - * @expose - */ - ByteBufferPrototype.readUInt32 = ByteBufferPrototype.readUint32; - - // types/ints/int64 - - if (Long) { + /** + * @alias ProtoBuf.Reflect.Namespace.prototype + * @inner + */ + var NamespacePrototype = Namespace.prototype = Object.create(T.prototype); /** - * Writes a 64bit signed integer. - * @param {number|!Long} value Value to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted. - * @returns {!ByteBuffer} this + * Returns an array of the namespace's children. + * @param {ProtoBuf.Reflect.T=} type Filter type (returns instances of this type only). Defaults to null (all children). + * @return {Array.} * @expose */ - ByteBufferPrototype.writeInt64 = function(value, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof value === 'number') - value = Long.fromNumber(value); - else if (typeof value === 'string') - value = Long.fromString(value); - else if (!(value && value instanceof Long)) - throw TypeError("Illegal value: "+value+" (not an integer or Long)"); - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - if (typeof value === 'number') - value = Long.fromNumber(value); - else if (typeof value === 'string') - value = Long.fromString(value); - offset += 8; - var capacity6 = this.buffer.byteLength; - if (offset > capacity6) - this.resize((capacity6 *= 2) > offset ? capacity6 : offset); - offset -= 8; - var lo = value.low, - hi = value.high; - if (this.littleEndian) { - this.view[offset+3] = (lo >>> 24) & 0xFF; - this.view[offset+2] = (lo >>> 16) & 0xFF; - this.view[offset+1] = (lo >>> 8) & 0xFF; - this.view[offset ] = lo & 0xFF; - offset += 4; - this.view[offset+3] = (hi >>> 24) & 0xFF; - this.view[offset+2] = (hi >>> 16) & 0xFF; - this.view[offset+1] = (hi >>> 8) & 0xFF; - this.view[offset ] = hi & 0xFF; - } else { - this.view[offset ] = (hi >>> 24) & 0xFF; - this.view[offset+1] = (hi >>> 16) & 0xFF; - this.view[offset+2] = (hi >>> 8) & 0xFF; - this.view[offset+3] = hi & 0xFF; - offset += 4; - this.view[offset ] = (lo >>> 24) & 0xFF; - this.view[offset+1] = (lo >>> 16) & 0xFF; - this.view[offset+2] = (lo >>> 8) & 0xFF; - this.view[offset+3] = lo & 0xFF; - } - if (relative) this.offset += 8; - return this; + NamespacePrototype.getChildren = function(type) { + type = type || null; + if (type == null) + return this.children.slice(); + var children = []; + for (var i=0, k=this.children.length; i>>= 0; - if (offset < 0 || offset + 8 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+8+") <= "+this.buffer.byteLength); - } - var lo = 0, - hi = 0; - if (this.littleEndian) { - lo = this.view[offset+2] << 16; - lo |= this.view[offset+1] << 8; - lo |= this.view[offset ]; - lo += this.view[offset+3] << 24 >>> 0; - offset += 4; - hi = this.view[offset+2] << 16; - hi |= this.view[offset+1] << 8; - hi |= this.view[offset ]; - hi += this.view[offset+3] << 24 >>> 0; - } else { - hi = this.view[offset+1] << 16; - hi |= this.view[offset+2] << 8; - hi |= this.view[offset+3]; - hi += this.view[offset ] << 24 >>> 0; - offset += 4; - lo = this.view[offset+1] << 16; - lo |= this.view[offset+2] << 8; - lo |= this.view[offset+3]; - lo += this.view[offset ] << 24 >>> 0; + NamespacePrototype.addChild = function(child) { + var other; + if (other = this.getChild(child.name)) { + // Try to revert camelcase transformation on collision + if (other instanceof Message.Field && other.name !== other.originalName && this.getChild(other.originalName) === null) + other.name = other.originalName; // Revert previous first (effectively keeps both originals) + else if (child instanceof Message.Field && child.name !== child.originalName && this.getChild(child.originalName) === null) + child.name = child.originalName; + else + throw Error("Duplicate name in namespace "+this.toString(true)+": "+child.name); } - var value = new Long(lo, hi, false); - if (relative) this.offset += 8; - return value; + this.children.push(child); }; /** - * Reads a 64bit signed integer. This is an alias of {@link ByteBuffer#readInt64}. - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted. - * @returns {!Long} + * Gets a child by its name or id. + * @param {string|number} nameOrId Child name or id + * @return {?ProtoBuf.Reflect.T} The child or null if not found * @expose */ - ByteBufferPrototype.readLong = ByteBufferPrototype.readInt64; + NamespacePrototype.getChild = function(nameOrId) { + var key = typeof nameOrId === 'number' ? 'id' : 'name'; + for (var i=0, k=this.children.length; i} qn Qualified name to resolve + * @param {boolean=} excludeNonNamespace Excludes non-namespace types, defaults to `false` + * @return {?ProtoBuf.Reflect.Namespace} The resolved type or null if not found * @expose */ - ByteBufferPrototype.writeUint64 = function(value, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof value === 'number') - value = Long.fromNumber(value); - else if (typeof value === 'string') - value = Long.fromString(value); - else if (!(value && value instanceof Long)) - throw TypeError("Illegal value: "+value+" (not an integer or Long)"); - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - if (typeof value === 'number') - value = Long.fromNumber(value); - else if (typeof value === 'string') - value = Long.fromString(value); - offset += 8; - var capacity7 = this.buffer.byteLength; - if (offset > capacity7) - this.resize((capacity7 *= 2) > offset ? capacity7 : offset); - offset -= 8; - var lo = value.low, - hi = value.high; - if (this.littleEndian) { - this.view[offset+3] = (lo >>> 24) & 0xFF; - this.view[offset+2] = (lo >>> 16) & 0xFF; - this.view[offset+1] = (lo >>> 8) & 0xFF; - this.view[offset ] = lo & 0xFF; - offset += 4; - this.view[offset+3] = (hi >>> 24) & 0xFF; - this.view[offset+2] = (hi >>> 16) & 0xFF; - this.view[offset+1] = (hi >>> 8) & 0xFF; - this.view[offset ] = hi & 0xFF; - } else { - this.view[offset ] = (hi >>> 24) & 0xFF; - this.view[offset+1] = (hi >>> 16) & 0xFF; - this.view[offset+2] = (hi >>> 8) & 0xFF; - this.view[offset+3] = hi & 0xFF; - offset += 4; - this.view[offset ] = (lo >>> 24) & 0xFF; - this.view[offset+1] = (lo >>> 16) & 0xFF; - this.view[offset+2] = (lo >>> 8) & 0xFF; - this.view[offset+3] = lo & 0xFF; + NamespacePrototype.resolve = function(qn, excludeNonNamespace) { + var part = typeof qn === 'string' ? qn.split(".") : qn, + ptr = this, + i = 0; + if (part[i] === "") { // Fully qualified name, e.g. ".My.Message' + while (ptr.parent !== null) + ptr = ptr.parent; + i++; } - if (relative) this.offset += 8; - return this; + var child; + do { + do { + if (!(ptr instanceof Reflect.Namespace)) { + ptr = null; + break; + } + child = ptr.getChild(part[i]); + if (!child || !(child instanceof Reflect.T) || (excludeNonNamespace && !(child instanceof Reflect.Namespace))) { + ptr = null; + break; + } + ptr = child; i++; + } while (i < part.length); + if (ptr != null) + break; // Found + // Else search the parent + if (this.parent !== null) + return this.parent.resolve(qn, excludeNonNamespace); + } while (ptr != null); + return ptr; }; /** - * Writes a 64bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint64}. - * @function - * @param {number|!Long} value Value to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted. - * @returns {!ByteBuffer} this + * Determines the shortest qualified name of the specified type, if any, relative to this namespace. + * @param {!ProtoBuf.Reflect.T} t Reflection type + * @returns {string} The shortest qualified name or, if there is none, the fqn * @expose */ - ByteBufferPrototype.writeUInt64 = ByteBufferPrototype.writeUint64; + NamespacePrototype.qn = function(t) { + var part = [], ptr = t; + do { + part.unshift(ptr.name); + ptr = ptr.parent; + } while (ptr !== null); + for (var len=1; len <= part.length; len++) { + var qn = part.slice(part.length-len); + if (t === this.resolve(qn, t instanceof Reflect.Namespace)) + return qn.join("."); + } + return t.fqn(); + }; /** - * Reads a 64bit unsigned integer. - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted. - * @returns {!Long} + * Builds the namespace and returns the runtime counterpart. + * @return {Object.} Runtime namespace * @expose */ - ByteBufferPrototype.readUint64 = function(offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 8 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+8+") <= "+this.buffer.byteLength); - } - var lo = 0, - hi = 0; - if (this.littleEndian) { - lo = this.view[offset+2] << 16; - lo |= this.view[offset+1] << 8; - lo |= this.view[offset ]; - lo += this.view[offset+3] << 24 >>> 0; - offset += 4; - hi = this.view[offset+2] << 16; - hi |= this.view[offset+1] << 8; - hi |= this.view[offset ]; - hi += this.view[offset+3] << 24 >>> 0; - } else { - hi = this.view[offset+1] << 16; - hi |= this.view[offset+2] << 8; - hi |= this.view[offset+3]; - hi += this.view[offset ] << 24 >>> 0; - offset += 4; - lo = this.view[offset+1] << 16; - lo |= this.view[offset+2] << 8; - lo |= this.view[offset+3]; - lo += this.view[offset ] << 24 >>> 0; + NamespacePrototype.build = function() { + /** @dict */ + var ns = {}; + var children = this.children; + for (var i=0, k=children.length, child; i} */ - ByteBufferPrototype.readUInt64 = ByteBufferPrototype.readUint64; - - } // Long - - - // types/floats/float32 + NamespacePrototype.buildOpt = function() { + var opt = {}, + keys = Object.keys(this.options); + for (var i=0, k=keys.length; i}null} Option value or NULL if there is no such option + */ + NamespacePrototype.getOption = function(name) { + if (typeof name === 'undefined') + return this.options; + return typeof this.options[name] !== 'undefined' ? this.options[name] : null; + }; - The MIT License (MIT) + /** + * @alias ProtoBuf.Reflect.Namespace + * @expose + */ + Reflect.Namespace = Namespace; - Copyright (c) Feross Aboukhadijeh + /** + * Constructs a new Element implementation that checks and converts values for a + * particular field type, as appropriate. + * + * An Element represents a single value: either the value of a singular field, + * or a value contained in one entry of a repeated field or map field. This + * class does not implement these higher-level concepts; it only encapsulates + * the low-level typechecking and conversion. + * + * @exports ProtoBuf.Reflect.Element + * @param {{name: string, wireType: number}} type Resolved data type + * @param {ProtoBuf.Reflect.T|null} resolvedType Resolved type, if relevant + * (e.g. submessage field). + * @param {boolean} isMapKey Is this element a Map key? The value will be + * converted to string form if so. + * @param {string} syntax Syntax level of defining message type, e.g., + * proto2 or proto3. + * @param {string} name Name of the field containing this element (for error + * messages) + * @constructor + */ + var Element = function(type, resolvedType, isMapKey, syntax, name) { - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: + /** + * Element type, as a string (e.g., int32). + * @type {{name: string, wireType: number}} + */ + this.type = type; - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. + /** + * Element type reference to submessage or enum definition, if needed. + * @type {ProtoBuf.Reflect.T|null} + */ + this.resolvedType = resolvedType; - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - */ + /** + * Element is a map key. + * @type {boolean} + */ + this.isMapKey = isMapKey; - /** - * Reads an IEEE754 float from a byte array. - * @param {!Array} buffer - * @param {number} offset - * @param {boolean} isLE - * @param {number} mLen - * @param {number} nBytes - * @returns {number} - * @inner - */ - function ieee754_read(buffer, offset, isLE, mLen, nBytes) { - var e, m, - eLen = nBytes * 8 - mLen - 1, - eMax = (1 << eLen) - 1, - eBias = eMax >> 1, - nBits = -7, - i = isLE ? (nBytes - 1) : 0, - d = isLE ? -1 : 1, - s = buffer[offset + i]; + /** + * Syntax level of defining message type, e.g., proto2 or proto3. + * @type {string} + */ + this.syntax = syntax; - i += d; + /** + * Name of the field containing this element (for error messages) + * @type {string} + */ + this.name = name; - e = s & ((1 << (-nBits)) - 1); - s >>= (-nBits); - nBits += eLen; - for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} + if (isMapKey && ProtoBuf.MAP_KEY_TYPES.indexOf(type) < 0) + throw Error("Invalid map key type: " + type.name); + }; - m = e & ((1 << (-nBits)) - 1); - e >>= (-nBits); - nBits += mLen; - for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} + var ElementPrototype = Element.prototype; - if (e === 0) { - e = 1 - eBias; - } else if (e === eMax) { - return m ? NaN : ((s ? -1 : 1) * Infinity); - } else { - m = m + Math.pow(2, mLen); - e = e - eBias; + /** + * Obtains a (new) default value for the specified type. + * @param type {string|{name: string, wireType: number}} Field type + * @returns {*} Default value + * @inner + */ + function mkDefault(type) { + if (typeof type === 'string') + type = ProtoBuf.TYPES[type]; + if (typeof type.defaultValue === 'undefined') + throw Error("default value for type "+type.name+" is not supported"); + if (type == ProtoBuf.TYPES["bytes"]) + return new ByteBuffer(0); + return type.defaultValue; } - return (s ? -1 : 1) * m * Math.pow(2, e - mLen); - } - /** - * Writes an IEEE754 float to a byte array. - * @param {!Array} buffer - * @param {number} value - * @param {number} offset - * @param {boolean} isLE - * @param {number} mLen - * @param {number} nBytes - * @inner - */ - function ieee754_write(buffer, value, offset, isLE, mLen, nBytes) { - var e, m, c, - eLen = nBytes * 8 - mLen - 1, - eMax = (1 << eLen) - 1, - eBias = eMax >> 1, - rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0), - i = isLE ? 0 : (nBytes - 1), - d = isLE ? 1 : -1, - s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0; + /** + * Returns the default value for this field in proto3. + * @function + * @param type {string|{name: string, wireType: number}} the field type + * @returns {*} Default value + */ + Element.defaultFieldValue = mkDefault; - value = Math.abs(value); + /** + * Makes a Long from a value. + * @param {{low: number, high: number, unsigned: boolean}|string|number} value Value + * @param {boolean=} unsigned Whether unsigned or not, defaults to reuse it from Long-like objects or to signed for + * strings and numbers + * @returns {!Long} + * @throws {Error} If the value cannot be converted to a Long + * @inner + */ + function mkLong(value, unsigned) { + if (value && typeof value.low === 'number' && typeof value.high === 'number' && typeof value.unsigned === 'boolean' + && value.low === value.low && value.high === value.high) + return new ProtoBuf.Long(value.low, value.high, typeof unsigned === 'undefined' ? value.unsigned : unsigned); + if (typeof value === 'string') + return ProtoBuf.Long.fromString(value, unsigned || false, 10); + if (typeof value === 'number') + return ProtoBuf.Long.fromNumber(value, unsigned || false); + throw Error("not convertible to Long"); + } - if (isNaN(value) || value === Infinity) { - m = isNaN(value) ? 1 : 0; - e = eMax; - } else { - e = Math.floor(Math.log(value) / Math.LN2); - if (value * (c = Math.pow(2, -e)) < 1) { - e--; - c *= 2; - } - if (e + eBias >= 1) { - value += rt / c; - } else { - value += rt * Math.pow(2, 1 - eBias); - } - if (value * c >= 2) { - e++; - c /= 2; - } + ElementPrototype.toString = function() { + return (this.name || '') + (this.isMapKey ? 'map' : 'value') + ' element'; + } - if (e + eBias >= eMax) { - m = 0; - e = eMax; - } else if (e + eBias >= 1) { - m = (value * c - 1) * Math.pow(2, mLen); - e = e + eBias; - } else { - m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); - e = 0; + /** + * Checks if the given value can be set for an element of this type (singular + * field or one element of a repeated field or map). + * @param {*} value Value to check + * @return {*} Verified, maybe adjusted, value + * @throws {Error} If the value cannot be verified for this element slot + * @expose + */ + ElementPrototype.verifyValue = function(value) { + var self = this; + function fail(val, msg) { + throw Error("Illegal value for "+self.toString(true)+" of type "+self.type.name+": "+val+" ("+msg+")"); } - } + switch (this.type) { + // Signed 32bit + case ProtoBuf.TYPES["int32"]: + case ProtoBuf.TYPES["sint32"]: + case ProtoBuf.TYPES["sfixed32"]: + // Account for !NaN: value === value + if (typeof value !== 'number' || (value === value && value % 1 !== 0)) + fail(typeof value, "not an integer"); + return value > 4294967295 ? value | 0 : value; - for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} + // Unsigned 32bit + case ProtoBuf.TYPES["uint32"]: + case ProtoBuf.TYPES["fixed32"]: + if (typeof value !== 'number' || (value === value && value % 1 !== 0)) + fail(typeof value, "not an integer"); + return value < 0 ? value >>> 0 : value; - e = (e << mLen) | m; - eLen += mLen; - for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + // Signed 64bit + case ProtoBuf.TYPES["int64"]: + case ProtoBuf.TYPES["sint64"]: + case ProtoBuf.TYPES["sfixed64"]: { + if (ProtoBuf.Long) + try { + return mkLong(value, false); + } catch (e) { + fail(typeof value, e.message); + } + else + fail(typeof value, "requires Long.js"); + } - buffer[offset + i - d] |= s * 128; - } + // Unsigned 64bit + case ProtoBuf.TYPES["uint64"]: + case ProtoBuf.TYPES["fixed64"]: { + if (ProtoBuf.Long) + try { + return mkLong(value, true); + } catch (e) { + fail(typeof value, e.message); + } + else + fail(typeof value, "requires Long.js"); + } - /** - * Writes a 32bit float. - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.writeFloat32 = function(value, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof value !== 'number') - throw TypeError("Illegal value: "+value+" (not a number)"); - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - offset += 4; - var capacity8 = this.buffer.byteLength; - if (offset > capacity8) - this.resize((capacity8 *= 2) > offset ? capacity8 : offset); - offset -= 4; - ieee754_write(this.view, value, offset, this.littleEndian, 23, 4); - if (relative) this.offset += 4; - return this; - }; + // Bool + case ProtoBuf.TYPES["bool"]: + if (typeof value !== 'boolean') + fail(typeof value, "not a boolean"); + return value; - /** - * Writes a 32bit float. This is an alias of {@link ByteBuffer#writeFloat32}. - * @function - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.writeFloat = ByteBufferPrototype.writeFloat32; + // Float + case ProtoBuf.TYPES["float"]: + case ProtoBuf.TYPES["double"]: + if (typeof value !== 'number') + fail(typeof value, "not a number"); + return value; - /** - * Reads a 32bit float. - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. - * @returns {number} - * @expose - */ - ByteBufferPrototype.readFloat32 = function(offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 4 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+4+") <= "+this.buffer.byteLength); - } - var value = ieee754_read(this.view, offset, this.littleEndian, 23, 4); - if (relative) this.offset += 4; - return value; - }; + // Length-delimited string + case ProtoBuf.TYPES["string"]: + if (typeof value !== 'string' && !(value && value instanceof String)) + fail(typeof value, "not a string"); + return ""+value; // Convert String object to string - /** - * Reads a 32bit float. This is an alias of {@link ByteBuffer#readFloat32}. - * @function - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. - * @returns {number} - * @expose - */ - ByteBufferPrototype.readFloat = ByteBufferPrototype.readFloat32; + // Length-delimited bytes + case ProtoBuf.TYPES["bytes"]: + if (ByteBuffer.isByteBuffer(value)) + return value; + return ByteBuffer.wrap(value, "base64"); - // types/floats/float64 + // Constant enum value + case ProtoBuf.TYPES["enum"]: { + var values = this.resolvedType.getChildren(ProtoBuf.Reflect.Enum.Value); + for (i=0; i>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - offset += 8; - var capacity9 = this.buffer.byteLength; - if (offset > capacity9) - this.resize((capacity9 *= 2) > offset ? capacity9 : offset); - offset -= 8; - ieee754_write(this.view, value, offset, this.littleEndian, 52, 8); - if (relative) this.offset += 8; - return this; - }; + if (this.syntax === 'proto3') { + // proto3: just make sure it's an integer. + if (typeof value !== 'number' || (value === value && value % 1 !== 0)) + fail(typeof value, "not an integer"); + if (value > 4294967295 || value < 0) + fail(typeof value, "not in range for uint32") + return value; + } else { + // proto2 requires enum values to be valid. + fail(value, "not a valid enum value"); + } + } + // Embedded message + case ProtoBuf.TYPES["group"]: + case ProtoBuf.TYPES["message"]: { + if (!value || typeof value !== 'object') + fail(typeof value, "object expected"); + if (value instanceof this.resolvedType.clazz) + return value; + if (value instanceof ProtoBuf.Builder.Message) { + // Mismatched type: Convert to object (see: https://github.com/dcodeIO/ProtoBuf.js/issues/180) + var obj = {}; + for (var i in value) + if (value.hasOwnProperty(i)) + obj[i] = value[i]; + value = obj; + } + // Else let's try to construct one from a key-value object + return new (this.resolvedType.clazz)(value); // May throw for a hundred of reasons + } + } - /** - * Writes a 64bit float. This is an alias of {@link ByteBuffer#writeFloat64}. - * @function - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted. - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.writeDouble = ByteBufferPrototype.writeFloat64; + // We should never end here + throw Error("[INTERNAL] Illegal value for "+this.toString(true)+": "+value+" (undefined type "+this.type+")"); + }; - /** - * Reads a 64bit float. - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted. - * @returns {number} - * @expose - */ - ByteBufferPrototype.readFloat64 = function(offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 8 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+8+") <= "+this.buffer.byteLength); - } - var value = ieee754_read(this.view, offset, this.littleEndian, 52, 8); - if (relative) this.offset += 8; - return value; - }; + /** + * Calculates the byte length of an element on the wire. + * @param {number} id Field number + * @param {*} value Field value + * @returns {number} Byte length + * @throws {Error} If the value cannot be calculated + * @expose + */ + ElementPrototype.calculateLength = function(id, value) { + if (value === null) return 0; // Nothing to encode + // Tag has already been written + var n; + switch (this.type) { + case ProtoBuf.TYPES["int32"]: + return value < 0 ? ByteBuffer.calculateVarint64(value) : ByteBuffer.calculateVarint32(value); + case ProtoBuf.TYPES["uint32"]: + return ByteBuffer.calculateVarint32(value); + case ProtoBuf.TYPES["sint32"]: + return ByteBuffer.calculateVarint32(ByteBuffer.zigZagEncode32(value)); + case ProtoBuf.TYPES["fixed32"]: + case ProtoBuf.TYPES["sfixed32"]: + case ProtoBuf.TYPES["float"]: + return 4; + case ProtoBuf.TYPES["int64"]: + case ProtoBuf.TYPES["uint64"]: + return ByteBuffer.calculateVarint64(value); + case ProtoBuf.TYPES["sint64"]: + return ByteBuffer.calculateVarint64(ByteBuffer.zigZagEncode64(value)); + case ProtoBuf.TYPES["fixed64"]: + case ProtoBuf.TYPES["sfixed64"]: + return 8; + case ProtoBuf.TYPES["bool"]: + return 1; + case ProtoBuf.TYPES["enum"]: + return ByteBuffer.calculateVarint32(value); + case ProtoBuf.TYPES["double"]: + return 8; + case ProtoBuf.TYPES["string"]: + n = ByteBuffer.calculateUTF8Bytes(value); + return ByteBuffer.calculateVarint32(n) + n; + case ProtoBuf.TYPES["bytes"]: + if (value.remaining() < 0) + throw Error("Illegal value for "+this.toString(true)+": "+value.remaining()+" bytes remaining"); + return ByteBuffer.calculateVarint32(value.remaining()) + value.remaining(); + case ProtoBuf.TYPES["message"]: + n = this.resolvedType.calculate(value); + return ByteBuffer.calculateVarint32(n) + n; + case ProtoBuf.TYPES["group"]: + n = this.resolvedType.calculate(value); + return n + ByteBuffer.calculateVarint32((id << 3) | ProtoBuf.WIRE_TYPES.ENDGROUP); + } + // We should never end here + throw Error("[INTERNAL] Illegal value to encode in "+this.toString(true)+": "+value+" (unknown type)"); + }; - /** - * Reads a 64bit float. This is an alias of {@link ByteBuffer#readFloat64}. - * @function - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted. - * @returns {number} - * @expose - */ - ByteBufferPrototype.readDouble = ByteBufferPrototype.readFloat64; + /** + * Encodes a value to the specified buffer. Does not encode the key. + * @param {number} id Field number + * @param {*} value Field value + * @param {ByteBuffer} buffer ByteBuffer to encode to + * @return {ByteBuffer} The ByteBuffer for chaining + * @throws {Error} If the value cannot be encoded + * @expose + */ + ElementPrototype.encodeValue = function(id, value, buffer) { + if (value === null) return buffer; // Nothing to encode + // Tag has already been written + switch (this.type) { + // 32bit signed varint + case ProtoBuf.TYPES["int32"]: + // "If you use int32 or int64 as the type for a negative number, the resulting varint is always ten bytes + // long – it is, effectively, treated like a very large unsigned integer." (see #122) + if (value < 0) + buffer.writeVarint64(value); + else + buffer.writeVarint32(value); + break; - // types/varints/varint32 + // 32bit unsigned varint + case ProtoBuf.TYPES["uint32"]: + buffer.writeVarint32(value); + break; - /** - * Maximum number of bytes required to store a 32bit base 128 variable-length integer. - * @type {number} - * @const - * @expose - */ - ByteBuffer.MAX_VARINT32_BYTES = 5; + // 32bit varint zig-zag + case ProtoBuf.TYPES["sint32"]: + buffer.writeVarint32ZigZag(value); + break; - /** - * Calculates the actual number of bytes required to store a 32bit base 128 variable-length integer. - * @param {number} value Value to encode - * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT32_BYTES} - * @expose - */ - ByteBuffer.calculateVarint32 = function(value) { - // ref: src/google/protobuf/io/coded_stream.cc - value = value >>> 0; - if (value < 1 << 7 ) return 1; - else if (value < 1 << 14) return 2; - else if (value < 1 << 21) return 3; - else if (value < 1 << 28) return 4; - else return 5; - }; + // Fixed unsigned 32bit + case ProtoBuf.TYPES["fixed32"]: + buffer.writeUint32(value); + break; - /** - * Zigzag encodes a signed 32bit integer so that it can be effectively used with varint encoding. - * @param {number} n Signed 32bit integer - * @returns {number} Unsigned zigzag encoded 32bit integer - * @expose - */ - ByteBuffer.zigZagEncode32 = function(n) { - return (((n |= 0) << 1) ^ (n >> 31)) >>> 0; // ref: src/google/protobuf/wire_format_lite.h - }; + // Fixed signed 32bit + case ProtoBuf.TYPES["sfixed32"]: + buffer.writeInt32(value); + break; - /** - * Decodes a zigzag encoded signed 32bit integer. - * @param {number} n Unsigned zigzag encoded 32bit integer - * @returns {number} Signed 32bit integer - * @expose - */ - ByteBuffer.zigZagDecode32 = function(n) { - return ((n >>> 1) ^ -(n & 1)) | 0; // // ref: src/google/protobuf/wire_format_lite.h - }; + // 64bit varint as-is + case ProtoBuf.TYPES["int64"]: + case ProtoBuf.TYPES["uint64"]: + buffer.writeVarint64(value); // throws + break; - /** - * Writes a 32bit base 128 variable-length integer. - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * written if omitted. - * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written - * @expose - */ - ByteBufferPrototype.writeVarint32 = function(value, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof value !== 'number' || value % 1 !== 0) - throw TypeError("Illegal value: "+value+" (not an integer)"); - value |= 0; - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - var size = ByteBuffer.calculateVarint32(value), - b; - offset += size; - var capacity10 = this.buffer.byteLength; - if (offset > capacity10) - this.resize((capacity10 *= 2) > offset ? capacity10 : offset); - offset -= size; - value >>>= 0; - while (value >= 0x80) { - b = (value & 0x7f) | 0x80; - this.view[offset++] = b; - value >>>= 7; - } - this.view[offset++] = value; - if (relative) { - this.offset = offset; - return this; - } - return size; - }; + // 64bit varint zig-zag + case ProtoBuf.TYPES["sint64"]: + buffer.writeVarint64ZigZag(value); // throws + break; - /** - * Writes a zig-zag encoded (signed) 32bit base 128 variable-length integer. - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * written if omitted. - * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written - * @expose - */ - ByteBufferPrototype.writeVarint32ZigZag = function(value, offset) { - return this.writeVarint32(ByteBuffer.zigZagEncode32(value), offset); - }; + // Fixed unsigned 64bit + case ProtoBuf.TYPES["fixed64"]: + buffer.writeUint64(value); // throws + break; - /** - * Reads a 32bit base 128 variable-length integer. - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * written if omitted. - * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read - * and the actual number of bytes read. - * @throws {Error} If it's not a valid varint. Has a property `truncated = true` if there is not enough data available - * to fully decode the varint. - * @expose - */ - ByteBufferPrototype.readVarint32 = function(offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 1 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+1+") <= "+this.buffer.byteLength); - } - var c = 0, - value = 0 >>> 0, - b; - do { - if (!this.noAssert && offset > this.limit) { - var err = Error("Truncated"); - err['truncated'] = true; - throw err; - } - b = this.view[offset++]; - if (c < 5) - value |= (b & 0x7f) << (7*c); - ++c; - } while ((b & 0x80) !== 0); - value |= 0; - if (relative) { - this.offset = offset; - return value; - } - return { - "value": value, - "length": c - }; - }; + // Fixed signed 64bit + case ProtoBuf.TYPES["sfixed64"]: + buffer.writeInt64(value); // throws + break; - /** - * Reads a zig-zag encoded (signed) 32bit base 128 variable-length integer. - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * written if omitted. - * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read - * and the actual number of bytes read. - * @throws {Error} If it's not a valid varint - * @expose - */ - ByteBufferPrototype.readVarint32ZigZag = function(offset) { - var val = this.readVarint32(offset); - if (typeof val === 'object') - val["value"] = ByteBuffer.zigZagDecode32(val["value"]); - else - val = ByteBuffer.zigZagDecode32(val); - return val; - }; + // Bool + case ProtoBuf.TYPES["bool"]: + if (typeof value === 'string') + buffer.writeVarint32(value.toLowerCase() === 'false' ? 0 : !!value); + else + buffer.writeVarint32(value ? 1 : 0); + break; - // types/varints/varint64 + // Constant enum value + case ProtoBuf.TYPES["enum"]: + buffer.writeVarint32(value); + break; - if (Long) { + // 32bit float + case ProtoBuf.TYPES["float"]: + buffer.writeFloat32(value); + break; - /** - * Maximum number of bytes required to store a 64bit base 128 variable-length integer. - * @type {number} - * @const - * @expose - */ - ByteBuffer.MAX_VARINT64_BYTES = 10; + // 64bit float + case ProtoBuf.TYPES["double"]: + buffer.writeFloat64(value); + break; + + // Length-delimited string + case ProtoBuf.TYPES["string"]: + buffer.writeVString(value); + break; + + // Length-delimited bytes + case ProtoBuf.TYPES["bytes"]: + if (value.remaining() < 0) + throw Error("Illegal value for "+this.toString(true)+": "+value.remaining()+" bytes remaining"); + var prevOffset = value.offset; + buffer.writeVarint32(value.remaining()); + buffer.append(value); + value.offset = prevOffset; + break; + + // Embedded message + case ProtoBuf.TYPES["message"]: + var bb = new ByteBuffer().LE(); + this.resolvedType.encode(value, bb); + buffer.writeVarint32(bb.offset); + buffer.append(bb.flip()); + break; + + // Legacy group + case ProtoBuf.TYPES["group"]: + this.resolvedType.encode(value, buffer); + buffer.writeVarint32((id << 3) | ProtoBuf.WIRE_TYPES.ENDGROUP); + break; + + default: + // We should never end here + throw Error("[INTERNAL] Illegal value to encode in "+this.toString(true)+": "+value+" (unknown type)"); + } + return buffer; + }; /** - * Calculates the actual number of bytes required to store a 64bit base 128 variable-length integer. - * @param {number|!Long} value Value to encode - * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT64_BYTES} + * Decode one element value from the specified buffer. + * @param {ByteBuffer} buffer ByteBuffer to decode from + * @param {number} wireType The field wire type + * @param {number} id The field number + * @return {*} Decoded value + * @throws {Error} If the field cannot be decoded * @expose */ - ByteBuffer.calculateVarint64 = function(value) { - if (typeof value === 'number') - value = Long.fromNumber(value); - else if (typeof value === 'string') - value = Long.fromString(value); - // ref: src/google/protobuf/io/coded_stream.cc - var part0 = value.toInt() >>> 0, - part1 = value.shiftRightUnsigned(28).toInt() >>> 0, - part2 = value.shiftRightUnsigned(56).toInt() >>> 0; - if (part2 == 0) { - if (part1 == 0) { - if (part0 < 1 << 14) - return part0 < 1 << 7 ? 1 : 2; - else - return part0 < 1 << 21 ? 3 : 4; - } else { - if (part1 < 1 << 14) - return part1 < 1 << 7 ? 5 : 6; - else - return part1 < 1 << 21 ? 7 : 8; + ElementPrototype.decode = function(buffer, wireType, id) { + if (wireType != this.type.wireType) + throw Error("Unexpected wire type for element"); + + var value, nBytes; + switch (this.type) { + // 32bit signed varint + case ProtoBuf.TYPES["int32"]: + return buffer.readVarint32() | 0; + + // 32bit unsigned varint + case ProtoBuf.TYPES["uint32"]: + return buffer.readVarint32() >>> 0; + + // 32bit signed varint zig-zag + case ProtoBuf.TYPES["sint32"]: + return buffer.readVarint32ZigZag() | 0; + + // Fixed 32bit unsigned + case ProtoBuf.TYPES["fixed32"]: + return buffer.readUint32() >>> 0; + + case ProtoBuf.TYPES["sfixed32"]: + return buffer.readInt32() | 0; + + // 64bit signed varint + case ProtoBuf.TYPES["int64"]: + return buffer.readVarint64(); + + // 64bit unsigned varint + case ProtoBuf.TYPES["uint64"]: + return buffer.readVarint64().toUnsigned(); + + // 64bit signed varint zig-zag + case ProtoBuf.TYPES["sint64"]: + return buffer.readVarint64ZigZag(); + + // Fixed 64bit unsigned + case ProtoBuf.TYPES["fixed64"]: + return buffer.readUint64(); + + // Fixed 64bit signed + case ProtoBuf.TYPES["sfixed64"]: + return buffer.readInt64(); + + // Bool varint + case ProtoBuf.TYPES["bool"]: + return !!buffer.readVarint32(); + + // Constant enum value (varint) + case ProtoBuf.TYPES["enum"]: + // The following Builder.Message#set will already throw + return buffer.readVarint32(); + + // 32bit float + case ProtoBuf.TYPES["float"]: + return buffer.readFloat(); + + // 64bit float + case ProtoBuf.TYPES["double"]: + return buffer.readDouble(); + + // Length-delimited string + case ProtoBuf.TYPES["string"]: + return buffer.readVString(); + + // Length-delimited bytes + case ProtoBuf.TYPES["bytes"]: { + nBytes = buffer.readVarint32(); + if (buffer.remaining() < nBytes) + throw Error("Illegal number of bytes for "+this.toString(true)+": "+nBytes+" required but got only "+buffer.remaining()); + value = buffer.clone(); // Offset already set + value.limit = value.offset+nBytes; + buffer.offset += nBytes; + return value; } - } else - return part2 < 1 << 7 ? 9 : 10; + + // Length-delimited embedded message + case ProtoBuf.TYPES["message"]: { + nBytes = buffer.readVarint32(); + return this.resolvedType.decode(buffer, nBytes); + } + + // Legacy group + case ProtoBuf.TYPES["group"]: + return this.resolvedType.decode(buffer, -1, id); + } + + // We should never end here + throw Error("[INTERNAL] Illegal decode type"); }; /** - * Zigzag encodes a signed 64bit integer so that it can be effectively used with varint encoding. - * @param {number|!Long} value Signed long - * @returns {!Long} Unsigned zigzag encoded long - * @expose + * Converts a value from a string to the canonical element type. + * + * Legal only when isMapKey is true. + * + * @param {string} str The string value + * @returns {*} The value */ - ByteBuffer.zigZagEncode64 = function(value) { - if (typeof value === 'number') - value = Long.fromNumber(value, false); - else if (typeof value === 'string') - value = Long.fromString(value, false); - else if (value.unsigned !== false) value = value.toSigned(); - // ref: src/google/protobuf/wire_format_lite.h - return value.shiftLeft(1).xor(value.shiftRight(63)).toUnsigned(); + ElementPrototype.valueFromString = function(str) { + if (!this.isMapKey) { + throw Error("valueFromString() called on non-map-key element"); + } + + switch (this.type) { + case ProtoBuf.TYPES["int32"]: + case ProtoBuf.TYPES["sint32"]: + case ProtoBuf.TYPES["sfixed32"]: + case ProtoBuf.TYPES["uint32"]: + case ProtoBuf.TYPES["fixed32"]: + return this.verifyValue(parseInt(str)); + + case ProtoBuf.TYPES["int64"]: + case ProtoBuf.TYPES["sint64"]: + case ProtoBuf.TYPES["sfixed64"]: + case ProtoBuf.TYPES["uint64"]: + case ProtoBuf.TYPES["fixed64"]: + // Long-based fields support conversions from string already. + return this.verifyValue(str); + + case ProtoBuf.TYPES["bool"]: + return str === "true"; + + case ProtoBuf.TYPES["string"]: + return this.verifyValue(str); + + case ProtoBuf.TYPES["bytes"]: + return ByteBuffer.fromBinary(str); + } }; /** - * Decodes a zigzag encoded signed 64bit integer. - * @param {!Long|number} value Unsigned zigzag encoded long or JavaScript number - * @returns {!Long} Signed long - * @expose - */ - ByteBuffer.zigZagDecode64 = function(value) { - if (typeof value === 'number') - value = Long.fromNumber(value, false); - else if (typeof value === 'string') - value = Long.fromString(value, false); - else if (value.unsigned !== false) value = value.toSigned(); - // ref: src/google/protobuf/wire_format_lite.h - return value.shiftRightUnsigned(1).xor(value.and(Long.ONE).toSigned().negate()).toSigned(); - }; - - /** - * Writes a 64bit base 128 variable-length integer. - * @param {number|Long} value Value to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * written if omitted. - * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written. - * @expose + * Converts a value from the canonical element type to a string. + * + * It should be the case that `valueFromString(valueToString(val))` returns + * a value equivalent to `verifyValue(val)` for every legal value of `val` + * according to this element type. + * + * This may be used when the element must be stored or used as a string, + * e.g., as a map key on an Object. + * + * Legal only when isMapKey is true. + * + * @param {*} val The value + * @returns {string} The string form of the value. */ - ByteBufferPrototype.writeVarint64 = function(value, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof value === 'number') - value = Long.fromNumber(value); - else if (typeof value === 'string') - value = Long.fromString(value); - else if (!(value && value instanceof Long)) - throw TypeError("Illegal value: "+value+" (not an integer or Long)"); - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - if (typeof value === 'number') - value = Long.fromNumber(value, false); - else if (typeof value === 'string') - value = Long.fromString(value, false); - else if (value.unsigned !== false) value = value.toSigned(); - var size = ByteBuffer.calculateVarint64(value), - part0 = value.toInt() >>> 0, - part1 = value.shiftRightUnsigned(28).toInt() >>> 0, - part2 = value.shiftRightUnsigned(56).toInt() >>> 0; - offset += size; - var capacity11 = this.buffer.byteLength; - if (offset > capacity11) - this.resize((capacity11 *= 2) > offset ? capacity11 : offset); - offset -= size; - switch (size) { - case 10: this.view[offset+9] = (part2 >>> 7) & 0x01; - case 9 : this.view[offset+8] = size !== 9 ? (part2 ) | 0x80 : (part2 ) & 0x7F; - case 8 : this.view[offset+7] = size !== 8 ? (part1 >>> 21) | 0x80 : (part1 >>> 21) & 0x7F; - case 7 : this.view[offset+6] = size !== 7 ? (part1 >>> 14) | 0x80 : (part1 >>> 14) & 0x7F; - case 6 : this.view[offset+5] = size !== 6 ? (part1 >>> 7) | 0x80 : (part1 >>> 7) & 0x7F; - case 5 : this.view[offset+4] = size !== 5 ? (part1 ) | 0x80 : (part1 ) & 0x7F; - case 4 : this.view[offset+3] = size !== 4 ? (part0 >>> 21) | 0x80 : (part0 >>> 21) & 0x7F; - case 3 : this.view[offset+2] = size !== 3 ? (part0 >>> 14) | 0x80 : (part0 >>> 14) & 0x7F; - case 2 : this.view[offset+1] = size !== 2 ? (part0 >>> 7) | 0x80 : (part0 >>> 7) & 0x7F; - case 1 : this.view[offset ] = size !== 1 ? (part0 ) | 0x80 : (part0 ) & 0x7F; + ElementPrototype.valueToString = function(value) { + if (!this.isMapKey) { + throw Error("valueToString() called on non-map-key element"); } - if (relative) { - this.offset += size; - return this; + + if (this.type === ProtoBuf.TYPES["bytes"]) { + return value.toString("binary"); } else { - return size; + return value.toString(); } }; /** - * Writes a zig-zag encoded 64bit base 128 variable-length integer. - * @param {number|Long} value Value to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * written if omitted. - * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written. + * @alias ProtoBuf.Reflect.Element * @expose */ - ByteBufferPrototype.writeVarint64ZigZag = function(value, offset) { - return this.writeVarint64(ByteBuffer.zigZagEncode64(value), offset); - }; + Reflect.Element = Element; /** - * Reads a 64bit base 128 variable-length integer. Requires Long.js. - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * read if omitted. - * @returns {!Long|!{value: Long, length: number}} The value read if offset is omitted, else the value read and - * the actual number of bytes read. - * @throws {Error} If it's not a valid varint - * @expose + * Constructs a new Message. + * @exports ProtoBuf.Reflect.Message + * @param {!ProtoBuf.Builder} builder Builder reference + * @param {!ProtoBuf.Reflect.Namespace} parent Parent message or namespace + * @param {string} name Message name + * @param {Object.=} options Message options + * @param {boolean=} isGroup `true` if this is a legacy group + * @param {string?} syntax The syntax level of this definition (e.g., proto3) + * @constructor + * @extends ProtoBuf.Reflect.Namespace */ - ByteBufferPrototype.readVarint64 = function(offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 1 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+1+") <= "+this.buffer.byteLength); - } - // ref: src/google/protobuf/io/coded_stream.cc - var start = offset, - part0 = 0, - part1 = 0, - part2 = 0, - b = 0; - b = this.view[offset++]; part0 = (b & 0x7F) ; if ( b & 0x80 ) { - b = this.view[offset++]; part0 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) { - b = this.view[offset++]; part0 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) { - b = this.view[offset++]; part0 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) { - b = this.view[offset++]; part1 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) { - b = this.view[offset++]; part1 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) { - b = this.view[offset++]; part1 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) { - b = this.view[offset++]; part1 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) { - b = this.view[offset++]; part2 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) { - b = this.view[offset++]; part2 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) { - throw Error("Buffer overrun"); }}}}}}}}}} - var value = Long.fromBits(part0 | (part1 << 28), (part1 >>> 4) | (part2) << 24, false); - if (relative) { - this.offset = offset; - return value; - } else { - return { - 'value': value, - 'length': offset-start - }; - } - }; + var Message = function(builder, parent, name, options, isGroup, syntax) { + Namespace.call(this, builder, parent, name, options, syntax); - /** - * Reads a zig-zag encoded 64bit base 128 variable-length integer. Requires Long.js. - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * read if omitted. - * @returns {!Long|!{value: Long, length: number}} The value read if offset is omitted, else the value read and - * the actual number of bytes read. - * @throws {Error} If it's not a valid varint - * @expose - */ - ByteBufferPrototype.readVarint64ZigZag = function(offset) { - var val = this.readVarint64(offset); - if (val && val['value'] instanceof Long) - val["value"] = ByteBuffer.zigZagDecode64(val["value"]); - else - val = ByteBuffer.zigZagDecode64(val); - return val; - }; + /** + * @override + */ + this.className = "Message"; - } // Long + /** + * Extensions range. + * @type {!Array.|undefined} + * @expose + */ + this.extensions = undefined; + /** + * Runtime message class. + * @type {?function(new:ProtoBuf.Builder.Message)} + * @expose + */ + this.clazz = null; - // types/strings/cstring + /** + * Whether this is a legacy group or not. + * @type {boolean} + * @expose + */ + this.isGroup = !!isGroup; - /** - * Writes a NULL-terminated UTF8 encoded string. For this to work the specified string must not contain any NULL - * characters itself. - * @param {string} str String to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * contained in `str` + 1 if omitted. - * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written - * @expose - */ - ByteBufferPrototype.writeCString = function(str, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - var i, - k = str.length; - if (!this.noAssert) { - if (typeof str !== 'string') - throw TypeError("Illegal str: Not a string"); - for (i=0; i>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - // UTF8 strings do not contain zero bytes in between except for the zero character, so: - k = utfx.calculateUTF16asUTF8(stringSource(str))[1]; - offset += k+1; - var capacity12 = this.buffer.byteLength; - if (offset > capacity12) - this.resize((capacity12 *= 2) > offset ? capacity12 : offset); - offset -= k+1; - utfx.encodeUTF16toUTF8(stringSource(str), function(b) { - this.view[offset++] = b; - }.bind(this)); - this.view[offset++] = 0; - if (relative) { - this.offset = offset; - return this; - } - return k; - }; + // The following cached collections are used to efficiently iterate over or look up fields when decoding. - /** - * Reads a NULL-terminated UTF8 encoded string. For this to work the string read must not contain any NULL characters - * itself. - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * read if omitted. - * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string - * read and the actual number of bytes read. - * @expose - */ - ByteBufferPrototype.readCString = function(offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 1 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+1+") <= "+this.buffer.byteLength); - } - var start = offset, - temp; - // UTF8 strings do not contain zero bytes in between except for the zero character itself, so: - var sd, b = -1; - utfx.decodeUTF8toUTF16(function() { - if (b === 0) return null; - if (offset >= this.limit) - throw RangeError("Illegal range: Truncated data, "+offset+" < "+this.limit); - b = this.view[offset++]; - return b === 0 ? null : b; - }.bind(this), sd = stringDestination(), true); - if (relative) { - this.offset = offset; - return sd(); - } else { - return { - "string": sd(), - "length": offset - start - }; - } - }; + /** + * Cached fields. + * @type {?Array.} + * @private + */ + this._fields = null; - // types/strings/istring + /** + * Cached fields by id. + * @type {?Object.} + * @private + */ + this._fieldsById = null; - /** - * Writes a length as uint32 prefixed UTF8 encoded string. - * @param {string} str String to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * written if omitted. - * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written - * @expose - * @see ByteBuffer#writeVarint32 - */ - ByteBufferPrototype.writeIString = function(str, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof str !== 'string') - throw TypeError("Illegal str: Not a string"); - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - var start = offset, - k; - k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1]; - offset += 4+k; - var capacity13 = this.buffer.byteLength; - if (offset > capacity13) - this.resize((capacity13 *= 2) > offset ? capacity13 : offset); - offset -= 4+k; - if (this.littleEndian) { - this.view[offset+3] = (k >>> 24) & 0xFF; - this.view[offset+2] = (k >>> 16) & 0xFF; - this.view[offset+1] = (k >>> 8) & 0xFF; - this.view[offset ] = k & 0xFF; - } else { - this.view[offset ] = (k >>> 24) & 0xFF; - this.view[offset+1] = (k >>> 16) & 0xFF; - this.view[offset+2] = (k >>> 8) & 0xFF; - this.view[offset+3] = k & 0xFF; - } - offset += 4; - utfx.encodeUTF16toUTF8(stringSource(str), function(b) { - this.view[offset++] = b; - }.bind(this)); - if (offset !== start + 4 + k) - throw RangeError("Illegal range: Truncated data, "+offset+" == "+(offset+4+k)); - if (relative) { - this.offset = offset; - return this; - } - return offset - start; - }; + /** + * Cached fields by name. + * @type {?Object.} + * @private + */ + this._fieldsByName = null; + }; - /** - * Reads a length as uint32 prefixed UTF8 encoded string. - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * read if omitted. - * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string - * read and the actual number of bytes read. - * @expose - * @see ByteBuffer#readVarint32 - */ - ByteBufferPrototype.readIString = function(offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 4 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+4+") <= "+this.buffer.byteLength); - } - var start = offset; - var len = this.readUint32(offset); - var str = this.readUTF8String(len, ByteBuffer.METRICS_BYTES, offset += 4); - offset += str['length']; - if (relative) { - this.offset = offset; - return str['string']; - } else { - return { - 'string': str['string'], - 'length': offset - start - }; - } - }; + /** + * @alias ProtoBuf.Reflect.Message.prototype + * @inner + */ + var MessagePrototype = Message.prototype = Object.create(Namespace.prototype); - // types/strings/utf8string + /** + * Builds the message and returns the runtime counterpart, which is a fully functional class. + * @see ProtoBuf.Builder.Message + * @param {boolean=} rebuild Whether to rebuild or not, defaults to false + * @return {ProtoBuf.Reflect.Message} Message class + * @throws {Error} If the message cannot be built + * @expose + */ + MessagePrototype.build = function(rebuild) { + if (this.clazz && !rebuild) + return this.clazz; - /** - * Metrics representing number of UTF8 characters. Evaluates to `c`. - * @type {string} - * @const - * @expose - */ - ByteBuffer.METRICS_CHARS = 'c'; + // Create the runtime Message class in its own scope + var clazz = (function(ProtoBuf, T) { - /** - * Metrics representing number of bytes. Evaluates to `b`. - * @type {string} - * @const - * @expose - */ - ByteBuffer.METRICS_BYTES = 'b'; + var fields = T.getChildren(ProtoBuf.Reflect.Message.Field), + oneofs = T.getChildren(ProtoBuf.Reflect.Message.OneOf); - /** - * Writes an UTF8 encoded string. - * @param {string} str String to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted. - * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written. - * @expose - */ - ByteBufferPrototype.writeUTF8String = function(str, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - var k; - var start = offset; - k = utfx.calculateUTF16asUTF8(stringSource(str))[1]; - offset += k; - var capacity14 = this.buffer.byteLength; - if (offset > capacity14) - this.resize((capacity14 *= 2) > offset ? capacity14 : offset); - offset -= k; - utfx.encodeUTF16toUTF8(stringSource(str), function(b) { - this.view[offset++] = b; - }.bind(this)); - if (relative) { - this.offset = offset; - return this; - } - return offset - start; - }; + /** + * Constructs a new runtime Message. + * @name ProtoBuf.Builder.Message + * @class Barebone of all runtime messages. + * @param {!Object.|string} values Preset values + * @param {...string} var_args + * @constructor + * @throws {Error} If the message cannot be created + */ + var Message = function(values, var_args) { + ProtoBuf.Builder.Message.call(this); - /** - * Writes an UTF8 encoded string. This is an alias of {@link ByteBuffer#writeUTF8String}. - * @function - * @param {string} str String to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted. - * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written. - * @expose - */ - ByteBufferPrototype.writeString = ByteBufferPrototype.writeUTF8String; + // Create virtual oneof properties + for (var i=0, k=oneofs.length; i 0) { + var value; + // Set field values from a values object + if (arguments.length === 1 && values !== null && typeof values === 'object' && + /* not _another_ Message */ (typeof values.encode !== 'function' || values instanceof Message) && + /* not a repeated field */ !Array.isArray(values) && + /* not a Map */ !(values instanceof ProtoBuf.Map) && + /* not a ByteBuffer */ !ByteBuffer.isByteBuffer(values) && + /* not an ArrayBuffer */ !(values instanceof ArrayBuffer) && + /* not a Long */ !(ProtoBuf.Long && values instanceof ProtoBuf.Long)) { + this.$set(values); + } else // Set field values from arguments, in declaration order + for (i=0, k=arguments.length; i>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - var i = 0, - start = offset, - sd; - if (metrics === ByteBuffer.METRICS_CHARS) { // The same for node and the browser - sd = stringDestination(); - utfx.decodeUTF8(function() { - return i < length && offset < this.limit ? this.view[offset++] : null; - }.bind(this), function(cp) { - ++i; utfx.UTF8toUTF16(cp, sd); - }); - if (i !== length) - throw RangeError("Illegal range: Truncated data, "+i+" == "+length); - if (relative) { - this.offset = offset; - return sd(); - } else { - return { - "string": sd(), - "length": offset - start + /** + * Adds a value to a repeated field. This is an alias for {@link ProtoBuf.Builder.Message#add}. + * @name ProtoBuf.Builder.Message#$add + * @function + * @param {string} key Field name + * @param {*} value Value to add + * @param {boolean=} noAssert Whether to assert the value or not (asserts by default) + * @returns {!ProtoBuf.Builder.Message} this + * @throws {Error} If the value cannot be added + * @expose + */ + MessagePrototype.$add = MessagePrototype.add; + + /** + * Sets a field's value. + * @name ProtoBuf.Builder.Message#set + * @function + * @param {string|!Object.} keyOrObj String key or plain object holding multiple values + * @param {(*|boolean)=} value Value to set if key is a string, otherwise omitted + * @param {boolean=} noAssert Whether to not assert for an actual field / proper value type, defaults to `false` + * @returns {!ProtoBuf.Builder.Message} this + * @throws {Error} If the value cannot be set + * @expose + */ + MessagePrototype.set = function(keyOrObj, value, noAssert) { + if (keyOrObj && typeof keyOrObj === 'object') { + noAssert = value; + for (var ikey in keyOrObj) { + // Check if virtual oneof field - don't set these + if (keyOrObj.hasOwnProperty(ikey) && typeof (value = keyOrObj[ikey]) !== 'undefined' && T._oneofsByName[ikey] === undefined) + this.$set(ikey, value, noAssert); + } + return this; + } + var field = T._fieldsByName[keyOrObj]; + if (!noAssert) { + if (!field) + throw Error(this+"#"+keyOrObj+" is not a field: undefined"); + if (!(field instanceof ProtoBuf.Reflect.Message.Field)) + throw Error(this+"#"+keyOrObj+" is not a field: "+field.toString(true)); + this[field.name] = (value = field.verifyValue(value)); // May throw + } else + this[keyOrObj] = value; + if (field && field.oneof) { // Field is part of an OneOf (not a virtual OneOf field) + var currentField = this[field.oneof.name]; // Virtual field references currently set field + if (value !== null) { + if (currentField !== null && currentField !== field.name) + this[currentField] = null; // Clear currently set field + this[field.oneof.name] = field.name; // Point virtual field at this field + } else if (/* value === null && */currentField === keyOrObj) + this[field.oneof.name] = null; // Clear virtual field (current field explicitly cleared) + } + return this; }; - } - } else if (metrics === ByteBuffer.METRICS_BYTES) { - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + length > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+length+") <= "+this.buffer.byteLength); - } - var k = offset + length; - utfx.decodeUTF8toUTF16(function() { - return offset < k ? this.view[offset++] : null; - }.bind(this), sd = stringDestination(), this.noAssert); - if (offset !== k) - throw RangeError("Illegal range: Truncated data, "+offset+" == "+k); - if (relative) { - this.offset = offset; - return sd(); - } else { - return { - 'string': sd(), - 'length': offset - start + + /** + * Sets a field's value. This is an alias for [@link ProtoBuf.Builder.Message#set}. + * @name ProtoBuf.Builder.Message#$set + * @function + * @param {string|!Object.} keyOrObj String key or plain object holding multiple values + * @param {(*|boolean)=} value Value to set if key is a string, otherwise omitted + * @param {boolean=} noAssert Whether to not assert the value, defaults to `false` + * @throws {Error} If the value cannot be set + * @expose + */ + MessagePrototype.$set = MessagePrototype.set; + + /** + * Gets a field's value. + * @name ProtoBuf.Builder.Message#get + * @function + * @param {string} key Key + * @param {boolean=} noAssert Whether to not assert for an actual field, defaults to `false` + * @return {*} Value + * @throws {Error} If there is no such field + * @expose + */ + MessagePrototype.get = function(key, noAssert) { + if (noAssert) + return this[key]; + var field = T._fieldsByName[key]; + if (!field || !(field instanceof ProtoBuf.Reflect.Message.Field)) + throw Error(this+"#"+key+" is not a field: undefined"); + if (!(field instanceof ProtoBuf.Reflect.Message.Field)) + throw Error(this+"#"+key+" is not a field: "+field.toString(true)); + return this[field.name]; }; - } - } else - throw TypeError("Unsupported metrics: "+metrics); - }; - /** - * Reads an UTF8 encoded string. This is an alias of {@link ByteBuffer#readUTF8String}. - * @function - * @param {number} length Number of characters or bytes to read - * @param {number=} metrics Metrics specifying what `n` is meant to count. Defaults to - * {@link ByteBuffer.METRICS_CHARS}. - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * read if omitted. - * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string - * read and the actual number of bytes read. - * @expose - */ - ByteBufferPrototype.readString = ByteBufferPrototype.readUTF8String; + /** + * Gets a field's value. This is an alias for {@link ProtoBuf.Builder.Message#$get}. + * @name ProtoBuf.Builder.Message#$get + * @function + * @param {string} key Key + * @return {*} Value + * @throws {Error} If there is no such field + * @expose + */ + MessagePrototype.$get = MessagePrototype.get; - // types/strings/vstring + // Getters and setters - /** - * Writes a length as varint32 prefixed UTF8 encoded string. - * @param {string} str String to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * written if omitted. - * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written - * @expose - * @see ByteBuffer#writeVarint32 - */ - ByteBufferPrototype.writeVString = function(str, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof str !== 'string') - throw TypeError("Illegal str: Not a string"); - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - var start = offset, - k, l; - k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1]; - l = ByteBuffer.calculateVarint32(k); - offset += l+k; - var capacity15 = this.buffer.byteLength; - if (offset > capacity15) - this.resize((capacity15 *= 2) > offset ? capacity15 : offset); - offset -= l+k; - offset += this.writeVarint32(k, offset); - utfx.encodeUTF16toUTF8(stringSource(str), function(b) { - this.view[offset++] = b; - }.bind(this)); - if (offset !== start+k+l) - throw RangeError("Illegal range: Truncated data, "+offset+" == "+(offset+k+l)); - if (relative) { - this.offset = offset; - return this; - } - return offset - start; - }; + for (var i=0; i>>= 0; - if (offset < 0 || offset + 1 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+1+") <= "+this.buffer.byteLength); - } - var start = offset; - var len = this.readVarint32(offset); - var str = this.readUTF8String(len['value'], ByteBuffer.METRICS_BYTES, offset += len['length']); - offset += str['length']; - if (relative) { - this.offset = offset; - return str['string']; - } else { - return { - 'string': str['string'], - 'length': offset - start - }; - } - }; + if (T.builder.options['populateAccessors']) + (function(field) { + // set/get[SomeValue] + var Name = field.originalName.replace(/(_[a-zA-Z])/g, function(match) { + return match.toUpperCase().replace('_',''); + }); + Name = Name.substring(0,1).toUpperCase() + Name.substring(1); + // set/get_[some_value] FIXME: Do we really need these? + var name = field.originalName.replace(/([A-Z])/g, function(match) { + return "_"+match; + }); - /** - * Appends some data to this ByteBuffer. This will overwrite any contents behind the specified offset up to the appended - * data's length. - * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to append. If `source` is a ByteBuffer, its offsets - * will be modified according to the performed read operation. - * @param {(string|number)=} encoding Encoding if `data` is a string ("base64", "hex", "binary", defaults to "utf8") - * @param {number=} offset Offset to append at. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * written if omitted. - * @returns {!ByteBuffer} this - * @expose - * @example A relative `<01 02>03.append(<04 05>)` will result in `<01 02 04 05>, 04 05|` - * @example An absolute `<01 02>03.append(04 05>, 1)` will result in `<01 04>05, 04 05|` - */ - ByteBufferPrototype.append = function(source, encoding, offset) { - if (typeof encoding === 'number' || typeof encoding !== 'string') { - offset = encoding; - encoding = undefined; - } - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - if (!(source instanceof ByteBuffer)) - source = ByteBuffer.wrap(source, encoding); - var length = source.limit - source.offset; - if (length <= 0) return this; // Nothing to append - offset += length; - var capacity16 = this.buffer.byteLength; - if (offset > capacity16) - this.resize((capacity16 *= 2) > offset ? capacity16 : offset); - offset -= length; - this.view.set(source.view.subarray(source.offset, source.limit), offset); - source.offset += length; - if (relative) this.offset += length; - return this; - }; + /** + * The current field's unbound setter function. + * @function + * @param {*} value + * @param {boolean=} noAssert + * @returns {!ProtoBuf.Builder.Message} + * @inner + */ + var setter = function(value, noAssert) { + this[field.name] = noAssert ? value : field.verifyValue(value); + return this; + }; - /** - * Appends this ByteBuffer's contents to another ByteBuffer. This will overwrite any contents at and after the - specified offset up to the length of this ByteBuffer's data. - * @param {!ByteBuffer} target Target ByteBuffer - * @param {number=} offset Offset to append to. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * read if omitted. - * @returns {!ByteBuffer} this - * @expose - * @see ByteBuffer#append - */ - ByteBufferPrototype.appendTo = function(target, offset) { - target.append(this, offset); - return this; - }; + /** + * The current field's unbound getter function. + * @function + * @returns {*} + * @inner + */ + var getter = function() { + return this[field.name]; + }; + + if (T.getChild("set"+Name) === null) + /** + * Sets a value. This method is present for each field, but only if there is no name conflict with + * another field. + * @name ProtoBuf.Builder.Message#set[SomeField] + * @function + * @param {*} value Value to set + * @param {boolean=} noAssert Whether to not assert the value, defaults to `false` + * @returns {!ProtoBuf.Builder.Message} this + * @abstract + * @throws {Error} If the value cannot be set + */ + MessagePrototype["set"+Name] = setter; + + if (T.getChild("set_"+name) === null) + /** + * Sets a value. This method is present for each field, but only if there is no name conflict with + * another field. + * @name ProtoBuf.Builder.Message#set_[some_field] + * @function + * @param {*} value Value to set + * @param {boolean=} noAssert Whether to not assert the value, defaults to `false` + * @returns {!ProtoBuf.Builder.Message} this + * @abstract + * @throws {Error} If the value cannot be set + */ + MessagePrototype["set_"+name] = setter; + + if (T.getChild("get"+Name) === null) + /** + * Gets a value. This method is present for each field, but only if there is no name conflict with + * another field. + * @name ProtoBuf.Builder.Message#get[SomeField] + * @function + * @abstract + * @return {*} The value + */ + MessagePrototype["get"+Name] = getter; + + if (T.getChild("get_"+name) === null) + /** + * Gets a value. This method is present for each field, but only if there is no name conflict with + * another field. + * @name ProtoBuf.Builder.Message#get_[some_field] + * @function + * @return {*} The value + * @abstract + */ + MessagePrototype["get_"+name] = getter; + + })(field); + } + + // En-/decoding + + /** + * Encodes the message. + * @name ProtoBuf.Builder.Message#$encode + * @function + * @param {(!ByteBuffer|boolean)=} buffer ByteBuffer to encode to. Will create a new one and flip it if omitted. + * @param {boolean=} noVerify Whether to not verify field values, defaults to `false` + * @return {!ByteBuffer} Encoded message as a ByteBuffer + * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still + * returns the encoded ByteBuffer in the `encoded` property on the error. + * @expose + * @see ProtoBuf.Builder.Message#encode64 + * @see ProtoBuf.Builder.Message#encodeHex + * @see ProtoBuf.Builder.Message#encodeAB + */ + MessagePrototype.encode = function(buffer, noVerify) { + if (typeof buffer === 'boolean') + noVerify = buffer, + buffer = undefined; + var isNew = false; + if (!buffer) + buffer = new ByteBuffer(), + isNew = true; + var le = buffer.littleEndian; + try { + T.encode(this, buffer.LE(), noVerify); + return (isNew ? buffer.flip() : buffer).LE(le); + } catch (e) { + buffer.LE(le); + throw(e); + } + }; + + /** + * Encodes a message using the specified data payload. + * @param {!Object.} data Data payload + * @param {(!ByteBuffer|boolean)=} buffer ByteBuffer to encode to. Will create a new one and flip it if omitted. + * @param {boolean=} noVerify Whether to not verify field values, defaults to `false` + * @return {!ByteBuffer} Encoded message as a ByteBuffer + * @expose + */ + Message.encode = function(data, buffer, noVerify) { + return new Message(data).encode(buffer, noVerify); + }; + + /** + * Calculates the byte length of the message. + * @name ProtoBuf.Builder.Message#calculate + * @function + * @returns {number} Byte length + * @throws {Error} If the message cannot be calculated or if required fields are missing. + * @expose + */ + MessagePrototype.calculate = function() { + return T.calculate(this); + }; + + /** + * Encodes the varint32 length-delimited message. + * @name ProtoBuf.Builder.Message#encodeDelimited + * @function + * @param {(!ByteBuffer|boolean)=} buffer ByteBuffer to encode to. Will create a new one and flip it if omitted. + * @param {boolean=} noVerify Whether to not verify field values, defaults to `false` + * @return {!ByteBuffer} Encoded message as a ByteBuffer + * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still + * returns the encoded ByteBuffer in the `encoded` property on the error. + * @expose + */ + MessagePrototype.encodeDelimited = function(buffer, noVerify) { + var isNew = false; + if (!buffer) + buffer = new ByteBuffer(), + isNew = true; + var enc = new ByteBuffer().LE(); + T.encode(this, enc, noVerify).flip(); + buffer.writeVarint32(enc.remaining()); + buffer.append(enc); + return isNew ? buffer.flip() : buffer; + }; + + /** + * Directly encodes the message to an ArrayBuffer. + * @name ProtoBuf.Builder.Message#encodeAB + * @function + * @return {ArrayBuffer} Encoded message as ArrayBuffer + * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still + * returns the encoded ArrayBuffer in the `encoded` property on the error. + * @expose + */ + MessagePrototype.encodeAB = function() { + try { + return this.encode().toArrayBuffer(); + } catch (e) { + if (e["encoded"]) e["encoded"] = e["encoded"].toArrayBuffer(); + throw(e); + } + }; + + /** + * Returns the message as an ArrayBuffer. This is an alias for {@link ProtoBuf.Builder.Message#encodeAB}. + * @name ProtoBuf.Builder.Message#toArrayBuffer + * @function + * @return {ArrayBuffer} Encoded message as ArrayBuffer + * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still + * returns the encoded ArrayBuffer in the `encoded` property on the error. + * @expose + */ + MessagePrototype.toArrayBuffer = MessagePrototype.encodeAB; + + /** + * Directly encodes the message to a node Buffer. + * @name ProtoBuf.Builder.Message#encodeNB + * @function + * @return {!Buffer} + * @throws {Error} If the message cannot be encoded, not running under node.js or if required fields are + * missing. The later still returns the encoded node Buffer in the `encoded` property on the error. + * @expose + */ + MessagePrototype.encodeNB = function() { + try { + return this.encode().toBuffer(); + } catch (e) { + if (e["encoded"]) e["encoded"] = e["encoded"].toBuffer(); + throw(e); + } + }; + + /** + * Returns the message as a node Buffer. This is an alias for {@link ProtoBuf.Builder.Message#encodeNB}. + * @name ProtoBuf.Builder.Message#toBuffer + * @function + * @return {!Buffer} + * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still + * returns the encoded node Buffer in the `encoded` property on the error. + * @expose + */ + MessagePrototype.toBuffer = MessagePrototype.encodeNB; + + /** + * Directly encodes the message to a base64 encoded string. + * @name ProtoBuf.Builder.Message#encode64 + * @function + * @return {string} Base64 encoded string + * @throws {Error} If the underlying buffer cannot be encoded or if required fields are missing. The later + * still returns the encoded base64 string in the `encoded` property on the error. + * @expose + */ + MessagePrototype.encode64 = function() { + try { + return this.encode().toBase64(); + } catch (e) { + if (e["encoded"]) e["encoded"] = e["encoded"].toBase64(); + throw(e); + } + }; + + /** + * Returns the message as a base64 encoded string. This is an alias for {@link ProtoBuf.Builder.Message#encode64}. + * @name ProtoBuf.Builder.Message#toBase64 + * @function + * @return {string} Base64 encoded string + * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still + * returns the encoded base64 string in the `encoded` property on the error. + * @expose + */ + MessagePrototype.toBase64 = MessagePrototype.encode64; + + /** + * Directly encodes the message to a hex encoded string. + * @name ProtoBuf.Builder.Message#encodeHex + * @function + * @return {string} Hex encoded string + * @throws {Error} If the underlying buffer cannot be encoded or if required fields are missing. The later + * still returns the encoded hex string in the `encoded` property on the error. + * @expose + */ + MessagePrototype.encodeHex = function() { + try { + return this.encode().toHex(); + } catch (e) { + if (e["encoded"]) e["encoded"] = e["encoded"].toHex(); + throw(e); + } + }; + + /** + * Returns the message as a hex encoded string. This is an alias for {@link ProtoBuf.Builder.Message#encodeHex}. + * @name ProtoBuf.Builder.Message#toHex + * @function + * @return {string} Hex encoded string + * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still + * returns the encoded hex string in the `encoded` property on the error. + * @expose + */ + MessagePrototype.toHex = MessagePrototype.encodeHex; + + /** + * Clones a message object or field value to a raw object. + * @param {*} obj Object to clone + * @param {boolean} binaryAsBase64 Whether to include binary data as base64 strings or as a buffer otherwise + * @param {boolean} longsAsStrings Whether to encode longs as strings + * @param {!ProtoBuf.Reflect.T=} resolvedType The resolved field type if a field + * @returns {*} Cloned object + * @inner + */ + function cloneRaw(obj, binaryAsBase64, longsAsStrings, resolvedType) { + if (obj === null || typeof obj !== 'object') { + // Convert enum values to their respective names + if (resolvedType && resolvedType instanceof ProtoBuf.Reflect.Enum) { + var name = ProtoBuf.Reflect.Enum.getName(resolvedType.object, obj); + if (name !== null) + return name; + } + // Pass-through string, number, boolean, null... + return obj; + } + // Convert ByteBuffers to raw buffer or strings + if (ByteBuffer.isByteBuffer(obj)) + return binaryAsBase64 ? obj.toBase64() : obj.toBuffer(); + // Convert Longs to proper objects or strings + if (ProtoBuf.Long.isLong(obj)) + return longsAsStrings ? obj.toString() : ProtoBuf.Long.fromValue(obj); + var clone; + // Clone arrays + if (Array.isArray(obj)) { + clone = []; + obj.forEach(function(v, k) { + clone[k] = cloneRaw(v, binaryAsBase64, longsAsStrings, resolvedType); + }); + return clone; + } + clone = {}; + // Convert maps to objects + if (obj instanceof ProtoBuf.Map) { + var it = obj.entries(); + for (var e = it.next(); !e.done; e = it.next()) + clone[obj.keyElem.valueToString(e.value[0])] = cloneRaw(e.value[1], binaryAsBase64, longsAsStrings, obj.valueElem.resolvedType); + return clone; + } + // Everything else is a non-null object + var type = obj.$type, + field = undefined; + for (var i in obj) + if (obj.hasOwnProperty(i)) { + if (type && (field = type.getChild(i))) + clone[i] = cloneRaw(obj[i], binaryAsBase64, longsAsStrings, field.resolvedType); + else + clone[i] = cloneRaw(obj[i], binaryAsBase64, longsAsStrings); + } + return clone; + } + + /** + * Returns the message's raw payload. + * @param {boolean=} binaryAsBase64 Whether to include binary data as base64 strings instead of Buffers, defaults to `false` + * @param {boolean} longsAsStrings Whether to encode longs as strings + * @returns {Object.} Raw payload + * @expose + */ + MessagePrototype.toRaw = function(binaryAsBase64, longsAsStrings) { + return cloneRaw(this, !!binaryAsBase64, !!longsAsStrings, this.$type); + }; + + /** + * Encodes a message to JSON. + * @returns {string} JSON string + * @expose + */ + MessagePrototype.encodeJSON = function() { + return JSON.stringify( + cloneRaw(this, + /* binary-as-base64 */ true, + /* longs-as-strings */ true, + this.$type + ) + ); + }; + + /** + * Decodes a message from the specified buffer or string. + * @name ProtoBuf.Builder.Message.decode + * @function + * @param {!ByteBuffer|!ArrayBuffer|!Buffer|string} buffer Buffer to decode from + * @param {(number|string)=} length Message length. Defaults to decode all the remainig data. + * @param {string=} enc Encoding if buffer is a string: hex, utf8 (not recommended), defaults to base64 + * @return {!ProtoBuf.Builder.Message} Decoded message + * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still + * returns the decoded message with missing fields in the `decoded` property on the error. + * @expose + * @see ProtoBuf.Builder.Message.decode64 + * @see ProtoBuf.Builder.Message.decodeHex + */ + Message.decode = function(buffer, length, enc) { + if (typeof length === 'string') + enc = length, + length = -1; + if (typeof buffer === 'string') + buffer = ByteBuffer.wrap(buffer, enc ? enc : "base64"); + else if (!ByteBuffer.isByteBuffer(buffer)) + buffer = ByteBuffer.wrap(buffer); // May throw + var le = buffer.littleEndian; + try { + var msg = T.decode(buffer.LE(), length); + buffer.LE(le); + return msg; + } catch (e) { + buffer.LE(le); + throw(e); + } + }; + + /** + * Decodes a varint32 length-delimited message from the specified buffer or string. + * @name ProtoBuf.Builder.Message.decodeDelimited + * @function + * @param {!ByteBuffer|!ArrayBuffer|!Buffer|string} buffer Buffer to decode from + * @param {string=} enc Encoding if buffer is a string: hex, utf8 (not recommended), defaults to base64 + * @return {ProtoBuf.Builder.Message} Decoded message or `null` if not enough bytes are available yet + * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still + * returns the decoded message with missing fields in the `decoded` property on the error. + * @expose + */ + Message.decodeDelimited = function(buffer, enc) { + if (typeof buffer === 'string') + buffer = ByteBuffer.wrap(buffer, enc ? enc : "base64"); + else if (!ByteBuffer.isByteBuffer(buffer)) + buffer = ByteBuffer.wrap(buffer); // May throw + if (buffer.remaining() < 1) + return null; + var off = buffer.offset, + len = buffer.readVarint32(); + if (buffer.remaining() < len) { + buffer.offset = off; + return null; + } + try { + var msg = T.decode(buffer.slice(buffer.offset, buffer.offset + len).LE()); + buffer.offset += len; + return msg; + } catch (err) { + buffer.offset += len; + throw err; + } + }; + + /** + * Decodes the message from the specified base64 encoded string. + * @name ProtoBuf.Builder.Message.decode64 + * @function + * @param {string} str String to decode from + * @return {!ProtoBuf.Builder.Message} Decoded message + * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still + * returns the decoded message with missing fields in the `decoded` property on the error. + * @expose + */ + Message.decode64 = function(str) { + return Message.decode(str, "base64"); + }; + + /** + * Decodes the message from the specified hex encoded string. + * @name ProtoBuf.Builder.Message.decodeHex + * @function + * @param {string} str String to decode from + * @return {!ProtoBuf.Builder.Message} Decoded message + * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still + * returns the decoded message with missing fields in the `decoded` property on the error. + * @expose + */ + Message.decodeHex = function(str) { + return Message.decode(str, "hex"); + }; + + /** + * Decodes the message from a JSON string. + * @name ProtoBuf.Builder.Message.decodeJSON + * @function + * @param {string} str String to decode from + * @return {!ProtoBuf.Builder.Message} Decoded message + * @throws {Error} If the message cannot be decoded or if required fields are + * missing. + * @expose + */ + Message.decodeJSON = function(str) { + return new Message(JSON.parse(str)); + }; + + // Utility + + /** + * Returns a string representation of this Message. + * @name ProtoBuf.Builder.Message#toString + * @function + * @return {string} String representation as of ".Fully.Qualified.MessageName" + * @expose + */ + MessagePrototype.toString = function() { + return T.toString(); + }; + + // Properties + + /** + * Message options. + * @name ProtoBuf.Builder.Message.$options + * @type {Object.} + * @expose + */ + var $optionsS; // cc needs this + + /** + * Message options. + * @name ProtoBuf.Builder.Message#$options + * @type {Object.} + * @expose + */ + var $options; + + /** + * Reflection type. + * @name ProtoBuf.Builder.Message.$type + * @type {!ProtoBuf.Reflect.Message} + * @expose + */ + var $typeS; + + /** + * Reflection type. + * @name ProtoBuf.Builder.Message#$type + * @type {!ProtoBuf.Reflect.Message} + * @expose + */ + var $type; + + if (Object.defineProperty) + Object.defineProperty(Message, '$options', { "value": T.buildOpt() }), + Object.defineProperty(MessagePrototype, "$options", { "value": Message["$options"] }), + Object.defineProperty(Message, "$type", { "value": T }), + Object.defineProperty(MessagePrototype, "$type", { "value": T }); + + return Message; + + })(ProtoBuf, this); + + // Static enums and prototyped sub-messages / cached collections + this._fields = []; + this._fieldsById = {}; + this._fieldsByName = {}; + this._oneofsByName = {}; + for (var i=0, k=this.children.length, child; i>>= 0; - if (typeof end !== 'number' || end % 1 !== 0) - throw TypeError("Illegal end: Not an integer"); - end >>>= 0; - if (begin < 0 || begin > end || end > this.buffer.byteLength) - throw RangeError("Illegal range: 0 <= "+begin+" <= "+end+" <= "+this.buffer.byteLength); - } - if (begin === 0 && end === this.buffer.byteLength) - return this; // Already compacted - var len = end - begin; - if (len === 0) { - this.buffer = EMPTY_BUFFER; - this.view = null; - if (this.markedOffset >= 0) this.markedOffset -= begin; - this.offset = 0; - this.limit = 0; - return this; + /** + * Skips all data until the end of the specified group has been reached. + * @param {number} expectedId Expected GROUPEND id + * @param {!ByteBuffer} buf ByteBuffer + * @returns {boolean} `true` if a value as been skipped, `false` if the end has been reached + * @throws {Error} If it wasn't possible to find the end of the group (buffer overrun or end tag mismatch) + * @inner + */ + function skipTillGroupEnd(expectedId, buf) { + var tag = buf.readVarint32(), // Throws on OOB + wireType = tag & 0x07, + id = tag >>> 3; + switch (wireType) { + case ProtoBuf.WIRE_TYPES.VARINT: + do tag = buf.readUint8(); + while ((tag & 0x80) === 0x80); + break; + case ProtoBuf.WIRE_TYPES.BITS64: + buf.offset += 8; + break; + case ProtoBuf.WIRE_TYPES.LDELIM: + tag = buf.readVarint32(); // reads the varint + buf.offset += tag; // skips n bytes + break; + case ProtoBuf.WIRE_TYPES.STARTGROUP: + skipTillGroupEnd(id, buf); + break; + case ProtoBuf.WIRE_TYPES.ENDGROUP: + if (id === expectedId) + return false; + else + throw Error("Illegal GROUPEND after unknown group: "+id+" ("+expectedId+" expected)"); + case ProtoBuf.WIRE_TYPES.BITS32: + buf.offset += 4; + break; + default: + throw Error("Illegal wire type in unknown group "+expectedId+": "+wireType); + } + return true; } - var buffer = new ArrayBuffer(len); - var view = new Uint8Array(buffer); - view.set(this.view.subarray(begin, end)); - this.buffer = buffer; - this.view = view; - if (this.markedOffset >= 0) this.markedOffset -= begin; - this.offset = 0; - this.limit = len; - return this; - }; - /** - * Creates a copy of this ByteBuffer's contents. Contents are the bytes between {@link ByteBuffer#offset} and - * {@link ByteBuffer#limit}. - * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}. - * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}. - * @returns {!ByteBuffer} Copy - * @expose - */ - ByteBufferPrototype.copy = function(begin, end) { - if (typeof begin === 'undefined') begin = this.offset; - if (typeof end === 'undefined') end = this.limit; - if (!this.noAssert) { - if (typeof begin !== 'number' || begin % 1 !== 0) - throw TypeError("Illegal begin: Not an integer"); - begin >>>= 0; - if (typeof end !== 'number' || end % 1 !== 0) - throw TypeError("Illegal end: Not an integer"); - end >>>= 0; - if (begin < 0 || begin > end || end > this.buffer.byteLength) - throw RangeError("Illegal range: 0 <= "+begin+" <= "+end+" <= "+this.buffer.byteLength); - } - if (begin === end) - return new ByteBuffer(0, this.littleEndian, this.noAssert); - var capacity = end - begin, - bb = new ByteBuffer(capacity, this.littleEndian, this.noAssert); - bb.offset = 0; - bb.limit = capacity; - if (bb.markedOffset >= 0) bb.markedOffset -= begin; - this.copyTo(bb, 0, begin, end); - return bb; - }; + /** + * Decodes an encoded message and returns the decoded message. + * @param {ByteBuffer} buffer ByteBuffer to decode from + * @param {number=} length Message length. Defaults to decode all remaining data. + * @param {number=} expectedGroupEndId Expected GROUPEND id if this is a legacy group + * @return {ProtoBuf.Builder.Message} Decoded message + * @throws {Error} If the message cannot be decoded + * @expose + */ + MessagePrototype.decode = function(buffer, length, expectedGroupEndId) { + if (typeof length !== 'number') + length = -1; + var start = buffer.offset, + msg = new (this.clazz)(), + tag, wireType, id, field; + while (buffer.offset < start+length || (length === -1 && buffer.remaining() > 0)) { + tag = buffer.readVarint32(); + wireType = tag & 0x07; + id = tag >>> 3; + if (wireType === ProtoBuf.WIRE_TYPES.ENDGROUP) { + if (id !== expectedGroupEndId) + throw Error("Illegal group end indicator for "+this.toString(true)+": "+id+" ("+(expectedGroupEndId ? expectedGroupEndId+" expected" : "not a group")+")"); + break; + } + if (!(field = this._fieldsById[id])) { + // "messages created by your new code can be parsed by your old code: old binaries simply ignore the new field when parsing." + switch (wireType) { + case ProtoBuf.WIRE_TYPES.VARINT: + buffer.readVarint32(); + break; + case ProtoBuf.WIRE_TYPES.BITS32: + buffer.offset += 4; + break; + case ProtoBuf.WIRE_TYPES.BITS64: + buffer.offset += 8; + break; + case ProtoBuf.WIRE_TYPES.LDELIM: + var len = buffer.readVarint32(); + buffer.offset += len; + break; + case ProtoBuf.WIRE_TYPES.STARTGROUP: + while (skipTillGroupEnd(id, buffer)) {} + break; + default: + throw Error("Illegal wire type for unknown field "+id+" in "+this.toString(true)+"#decode: "+wireType); + } + continue; + } + if (field.repeated && !field.options["packed"]) { + msg[field.name].push(field.decode(wireType, buffer)); + } else if (field.map) { + var keyval = field.decode(wireType, buffer); + msg[field.name].set(keyval[0], keyval[1]); + } else { + msg[field.name] = field.decode(wireType, buffer); + if (field.oneof) { // Field is part of an OneOf (not a virtual OneOf field) + var currentField = msg[field.oneof.name]; // Virtual field references currently set field + if (currentField !== null && currentField !== field.name) + msg[currentField] = null; // Clear currently set field + msg[field.oneof.name] = field.name; // Point virtual field at this field + } + } + } - /** - * Copies this ByteBuffer's contents to another ByteBuffer. Contents are the bytes between {@link ByteBuffer#offset} and - * {@link ByteBuffer#limit}. - * @param {!ByteBuffer} target Target ByteBuffer - * @param {number=} targetOffset Offset to copy to. Will use and increase the target's {@link ByteBuffer#offset} - * by the number of bytes copied if omitted. - * @param {number=} sourceOffset Offset to start copying from. Will use and increase {@link ByteBuffer#offset} by the - * number of bytes copied if omitted. - * @param {number=} sourceLimit Offset to end copying from, defaults to {@link ByteBuffer#limit} - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.copyTo = function(target, targetOffset, sourceOffset, sourceLimit) { - var relative, - targetRelative; - if (!this.noAssert) { - if (!ByteBuffer.isByteBuffer(target)) - throw TypeError("Illegal target: Not a ByteBuffer"); - } - targetOffset = (targetRelative = typeof targetOffset === 'undefined') ? target.offset : targetOffset | 0; - sourceOffset = (relative = typeof sourceOffset === 'undefined') ? this.offset : sourceOffset | 0; - sourceLimit = typeof sourceLimit === 'undefined' ? this.limit : sourceLimit | 0; + // Check if all required fields are present and set default values for optional fields that are not + for (var i=0, k=this._fields.length; i target.buffer.byteLength) - throw RangeError("Illegal target range: 0 <= "+targetOffset+" <= "+target.buffer.byteLength); - if (sourceOffset < 0 || sourceLimit > this.buffer.byteLength) - throw RangeError("Illegal source range: 0 <= "+sourceOffset+" <= "+this.buffer.byteLength); + /** + * @alias ProtoBuf.Reflect.Message + * @expose + */ + Reflect.Message = Message; - var len = sourceLimit - sourceOffset; - if (len === 0) - return target; // Nothing to copy + /** + * Constructs a new Message Field. + * @exports ProtoBuf.Reflect.Message.Field + * @param {!ProtoBuf.Builder} builder Builder reference + * @param {!ProtoBuf.Reflect.Message} message Message reference + * @param {string} rule Rule, one of requried, optional, repeated + * @param {string?} keytype Key data type, if any. + * @param {string} type Data type, e.g. int32 + * @param {string} name Field name + * @param {number} id Unique field id + * @param {Object.=} options Options + * @param {!ProtoBuf.Reflect.Message.OneOf=} oneof Enclosing OneOf + * @param {string?} syntax The syntax level of this definition (e.g., proto3) + * @constructor + * @extends ProtoBuf.Reflect.T + */ + var Field = function(builder, message, rule, keytype, type, name, id, options, oneof, syntax) { + T.call(this, builder, message, name); - target.ensureCapacity(targetOffset + len); + /** + * @override + */ + this.className = "Message.Field"; - target.view.set(this.view.subarray(sourceOffset, sourceLimit), targetOffset); + /** + * Message field required flag. + * @type {boolean} + * @expose + */ + this.required = rule === "required"; - if (relative) this.offset += len; - if (targetRelative) target.offset += len; + /** + * Message field repeated flag. + * @type {boolean} + * @expose + */ + this.repeated = rule === "repeated"; - return this; - }; + /** + * Message field map flag. + * @type {boolean} + * @expose + */ + this.map = rule === "map"; - /** - * Makes sure that this ByteBuffer is backed by a {@link ByteBuffer#buffer} of at least the specified capacity. If the - * current capacity is exceeded, it will be doubled. If double the current capacity is less than the required capacity, - * the required capacity will be used instead. - * @param {number} capacity Required capacity - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.ensureCapacity = function(capacity) { - var current = this.buffer.byteLength; - if (current < capacity) - return this.resize((current *= 2) > capacity ? current : capacity); - return this; - }; + /** + * Message field key type. Type reference string if unresolved, protobuf + * type if resolved. Valid only if this.map === true, null otherwise. + * @type {string|{name: string, wireType: number}|null} + * @expose + */ + this.keyType = keytype || null; - /** - * Overwrites this ByteBuffer's contents with the specified value. Contents are the bytes between - * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. - * @param {number|string} value Byte value to fill with. If given as a string, the first character is used. - * @param {number=} begin Begin offset. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * written if omitted. defaults to {@link ByteBuffer#offset}. - * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}. - * @returns {!ByteBuffer} this - * @expose - * @example `someByteBuffer.clear().fill(0)` fills the entire backing buffer with zeroes - */ - ByteBufferPrototype.fill = function(value, begin, end) { - var relative = typeof begin === 'undefined'; - if (relative) begin = this.offset; - if (typeof value === 'string' && value.length > 0) - value = value.charCodeAt(0); - if (typeof begin === 'undefined') begin = this.offset; - if (typeof end === 'undefined') end = this.limit; - if (!this.noAssert) { - if (typeof value !== 'number' || value % 1 !== 0) - throw TypeError("Illegal value: "+value+" (not an integer)"); - value |= 0; - if (typeof begin !== 'number' || begin % 1 !== 0) - throw TypeError("Illegal begin: Not an integer"); - begin >>>= 0; - if (typeof end !== 'number' || end % 1 !== 0) - throw TypeError("Illegal end: Not an integer"); - end >>>= 0; - if (begin < 0 || begin > end || end > this.buffer.byteLength) - throw RangeError("Illegal range: 0 <= "+begin+" <= "+end+" <= "+this.buffer.byteLength); - } - if (begin >= end) - return this; // Nothing to fill - while (begin < end) this.view[begin++] = value; - if (relative) this.offset = begin; - return this; - }; + /** + * Message field type. Type reference string if unresolved, protobuf type if + * resolved. In a map field, this is the value type. + * @type {string|{name: string, wireType: number}} + * @expose + */ + this.type = type; - /** - * Makes this ByteBuffer ready for a new sequence of write or relative read operations. Sets `limit = offset` and - * `offset = 0`. Make sure always to flip a ByteBuffer when all relative read or write operations are complete. - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.flip = function() { - this.limit = this.offset; - this.offset = 0; - return this; - }; - /** - * Marks an offset on this ByteBuffer to be used later. - * @param {number=} offset Offset to mark. Defaults to {@link ByteBuffer#offset}. - * @returns {!ByteBuffer} this - * @throws {TypeError} If `offset` is not a valid number - * @throws {RangeError} If `offset` is out of bounds - * @see ByteBuffer#reset - * @expose - */ - ByteBufferPrototype.mark = function(offset) { - offset = typeof offset === 'undefined' ? this.offset : offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - this.markedOffset = offset; - return this; - }; - /** - * Sets the byte order. - * @param {boolean} littleEndian `true` for little endian byte order, `false` for big endian - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.order = function(littleEndian) { - if (!this.noAssert) { - if (typeof littleEndian !== 'boolean') - throw TypeError("Illegal littleEndian: Not a boolean"); - } - this.littleEndian = !!littleEndian; - return this; - }; + /** + * Resolved type reference inside the global namespace. + * @type {ProtoBuf.Reflect.T|null} + * @expose + */ + this.resolvedType = null; + + /** + * Unique message field id. + * @type {number} + * @expose + */ + this.id = id; + + /** + * Message field options. + * @type {!Object.} + * @dict + * @expose + */ + this.options = options || {}; + + /** + * Default value. + * @type {*} + * @expose + */ + this.defaultValue = null; + + /** + * Enclosing OneOf. + * @type {?ProtoBuf.Reflect.Message.OneOf} + * @expose + */ + this.oneof = oneof || null; - /** - * Switches (to) little endian byte order. - * @param {boolean=} littleEndian Defaults to `true`, otherwise uses big endian - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.LE = function(littleEndian) { - this.littleEndian = typeof littleEndian !== 'undefined' ? !!littleEndian : true; - return this; - }; + /** + * Syntax level of this definition (e.g., proto3). + * @type {string} + * @expose + */ + this.syntax = syntax || 'proto2'; - /** - * Switches (to) big endian byte order. - * @param {boolean=} bigEndian Defaults to `true`, otherwise uses little endian - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.BE = function(bigEndian) { - this.littleEndian = typeof bigEndian !== 'undefined' ? !bigEndian : false; - return this; - }; - /** - * Prepends some data to this ByteBuffer. This will overwrite any contents before the specified offset up to the - * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer - * will be resized and its contents moved accordingly. - * @param {!ByteBuffer|string|!ArrayBuffer} source Data to prepend. If `source` is a ByteBuffer, its offset will be - * modified according to the performed read operation. - * @param {(string|number)=} encoding Encoding if `data` is a string ("base64", "hex", "binary", defaults to "utf8") - * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes - * prepended if omitted. - * @returns {!ByteBuffer} this - * @expose - * @example A relative `00<01 02 03>.prepend(<04 05>)` results in `<04 05 01 02 03>, 04 05|` - * @example An absolute `00<01 02 03>.prepend(<04 05>, 2)` results in `04<05 02 03>, 04 05|` - */ - ByteBufferPrototype.prepend = function(source, encoding, offset) { - if (typeof encoding === 'number' || typeof encoding !== 'string') { - offset = encoding; - encoding = undefined; - } - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - if (!(source instanceof ByteBuffer)) - source = ByteBuffer.wrap(source, encoding); - var len = source.limit - source.offset; - if (len <= 0) return this; // Nothing to prepend - var diff = len - offset; - if (diff > 0) { // Not enough space before offset, so resize + move - var buffer = new ArrayBuffer(this.buffer.byteLength + diff); - var view = new Uint8Array(buffer); - view.set(this.view.subarray(offset, this.buffer.byteLength), len); - this.buffer = buffer; - this.view = view; - this.offset += diff; - if (this.markedOffset >= 0) this.markedOffset += diff; - this.limit += diff; - offset += diff; - } else { - var arrayView = new Uint8Array(this.buffer); - } - this.view.set(source.view.subarray(source.offset, source.limit), offset - len); + /** + * Original field name. + * @type {string} + * @expose + */ + this.originalName = this.name; // Used to revert camelcase transformation on naming collisions - source.offset = source.limit; - if (relative) - this.offset -= len; - return this; - }; + /** + * Element implementation. Created in build() after types are resolved. + * @type {ProtoBuf.Element} + * @expose + */ + this.element = null; - /** - * Prepends this ByteBuffer to another ByteBuffer. This will overwrite any contents before the specified offset up to the - * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer - * will be resized and its contents moved accordingly. - * @param {!ByteBuffer} target Target ByteBuffer - * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes - * prepended if omitted. - * @returns {!ByteBuffer} this - * @expose - * @see ByteBuffer#prepend - */ - ByteBufferPrototype.prependTo = function(target, offset) { - target.prepend(this, offset); - return this; - }; - /** - * Prints debug information about this ByteBuffer's contents. - * @param {function(string)=} out Output function to call, defaults to console.log - * @expose - */ - ByteBufferPrototype.printDebug = function(out) { - if (typeof out !== 'function') out = console.log.bind(console); - out( - this.toString()+"\n"+ - "-------------------------------------------------------------------\n"+ - this.toDebug(/* columns */ true) - ); - }; + /** + * Key element implementation, for map fields. Created in build() after + * types are resolved. + * @type {ProtoBuf.Element} + * @expose + */ + this.keyElement = null; - /** - * Gets the number of remaining readable bytes. Contents are the bytes between {@link ByteBuffer#offset} and - * {@link ByteBuffer#limit}, so this returns `limit - offset`. - * @returns {number} Remaining readable bytes. May be negative if `offset > limit`. - * @expose - */ - ByteBufferPrototype.remaining = function() { - return this.limit - this.offset; - }; - /** - * Resets this ByteBuffer's {@link ByteBuffer#offset}. If an offset has been marked through {@link ByteBuffer#mark} - * before, `offset` will be set to {@link ByteBuffer#markedOffset}, which will then be discarded. If no offset has been - * marked, sets `offset = 0`. - * @returns {!ByteBuffer} this - * @see ByteBuffer#mark - * @expose - */ - ByteBufferPrototype.reset = function() { - if (this.markedOffset >= 0) { - this.offset = this.markedOffset; - this.markedOffset = -1; - } else { - this.offset = 0; - } - return this; - }; - /** - * Resizes this ByteBuffer to be backed by a buffer of at least the given capacity. Will do nothing if already that - * large or larger. - * @param {number} capacity Capacity required - * @returns {!ByteBuffer} this - * @throws {TypeError} If `capacity` is not a number - * @throws {RangeError} If `capacity < 0` - * @expose - */ - ByteBufferPrototype.resize = function(capacity) { - if (!this.noAssert) { - if (typeof capacity !== 'number' || capacity % 1 !== 0) - throw TypeError("Illegal capacity: "+capacity+" (not an integer)"); - capacity |= 0; - if (capacity < 0) - throw RangeError("Illegal capacity: 0 <= "+capacity); - } - if (this.buffer.byteLength < capacity) { - var buffer = new ArrayBuffer(capacity); - var view = new Uint8Array(buffer); - view.set(this.view); - this.buffer = buffer; - this.view = view; - } - return this; - }; - /** - * Reverses this ByteBuffer's contents. - * @param {number=} begin Offset to start at, defaults to {@link ByteBuffer#offset} - * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit} - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.reverse = function(begin, end) { - if (typeof begin === 'undefined') begin = this.offset; - if (typeof end === 'undefined') end = this.limit; - if (!this.noAssert) { - if (typeof begin !== 'number' || begin % 1 !== 0) - throw TypeError("Illegal begin: Not an integer"); - begin >>>= 0; - if (typeof end !== 'number' || end % 1 !== 0) - throw TypeError("Illegal end: Not an integer"); - end >>>= 0; - if (begin < 0 || begin > end || end > this.buffer.byteLength) - throw RangeError("Illegal range: 0 <= "+begin+" <= "+end+" <= "+this.buffer.byteLength); - } - if (begin === end) - return this; // Nothing to reverse - Array.prototype.reverse.call(this.view.subarray(begin, end)); - return this; - }; - /** - * Skips the next `length` bytes. This will just advance - * @param {number} length Number of bytes to skip. May also be negative to move the offset back. - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.skip = function(length) { - if (!this.noAssert) { - if (typeof length !== 'number' || length % 1 !== 0) - throw TypeError("Illegal length: "+length+" (not an integer)"); - length |= 0; - } - var offset = this.offset + length; - if (!this.noAssert) { - if (offset < 0 || offset > this.buffer.byteLength) - throw RangeError("Illegal length: 0 <= "+this.offset+" + "+length+" <= "+this.buffer.byteLength); - } - this.offset = offset; - return this; - }; + // Convert field names to camel case notation if the override is set + if (this.builder.options['convertFieldsToCamelCase'] && !(this instanceof Message.ExtensionField)) + this.name = ProtoBuf.Util.toCamelCase(this.name); + }; - /** - * Slices this ByteBuffer by creating a cloned instance with `offset = begin` and `limit = end`. - * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}. - * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}. - * @returns {!ByteBuffer} Clone of this ByteBuffer with slicing applied, backed by the same {@link ByteBuffer#buffer} - * @expose - */ - ByteBufferPrototype.slice = function(begin, end) { - if (typeof begin === 'undefined') begin = this.offset; - if (typeof end === 'undefined') end = this.limit; - if (!this.noAssert) { - if (typeof begin !== 'number' || begin % 1 !== 0) - throw TypeError("Illegal begin: Not an integer"); - begin >>>= 0; - if (typeof end !== 'number' || end % 1 !== 0) - throw TypeError("Illegal end: Not an integer"); - end >>>= 0; - if (begin < 0 || begin > end || end > this.buffer.byteLength) - throw RangeError("Illegal range: 0 <= "+begin+" <= "+end+" <= "+this.buffer.byteLength); - } - var bb = this.clone(); - bb.offset = begin; - bb.limit = end; - return bb; - }; - /** - * Returns a copy of the backing buffer that contains this ByteBuffer's contents. Contents are the bytes between - * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. - * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory if - * possible. Defaults to `false` - * @returns {!ArrayBuffer} Contents as an ArrayBuffer - * @expose - */ - ByteBufferPrototype.toBuffer = function(forceCopy) { - var offset = this.offset, - limit = this.limit; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: Not an integer"); - offset >>>= 0; - if (typeof limit !== 'number' || limit % 1 !== 0) - throw TypeError("Illegal limit: Not an integer"); - limit >>>= 0; - if (offset < 0 || offset > limit || limit > this.buffer.byteLength) - throw RangeError("Illegal range: 0 <= "+offset+" <= "+limit+" <= "+this.buffer.byteLength); - } - // NOTE: It's not possible to have another ArrayBuffer reference the same memory as the backing buffer. This is - // possible with Uint8Array#subarray only, but we have to return an ArrayBuffer by contract. So: - if (!forceCopy && offset === 0 && limit === this.buffer.byteLength) - return this.buffer; - if (offset === limit) - return EMPTY_BUFFER; - var buffer = new ArrayBuffer(limit - offset); - new Uint8Array(buffer).set(new Uint8Array(this.buffer).subarray(offset, limit), 0); - return buffer; - }; + /** + * @alias ProtoBuf.Reflect.Message.Field.prototype + * @inner + */ + var FieldPrototype = Field.prototype = Object.create(T.prototype); - /** - * Returns a raw buffer compacted to contain this ByteBuffer's contents. Contents are the bytes between - * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. This is an alias of {@link ByteBuffer#toBuffer}. - * @function - * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory. - * Defaults to `false` - * @returns {!ArrayBuffer} Contents as an ArrayBuffer - * @expose - */ - ByteBufferPrototype.toArrayBuffer = ByteBufferPrototype.toBuffer; + /** + * Builds the field. + * @override + * @expose + */ + FieldPrototype.build = function() { + this.element = new Element(this.type, this.resolvedType, false, this.syntax, this.name); + if (this.map) + this.keyElement = new Element(this.keyType, undefined, true, this.syntax, this.name); - /** - * Converts the ByteBuffer's contents to a string. - * @param {string=} encoding Output encoding. Returns an informative string representation if omitted but also allows - * direct conversion to "utf8", "hex", "base64" and "binary" encoding. "debug" returns a hex representation with - * highlighted offsets. - * @param {number=} begin Offset to begin at, defaults to {@link ByteBuffer#offset} - * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit} - * @returns {string} String representation - * @throws {Error} If `encoding` is invalid - * @expose - */ - ByteBufferPrototype.toString = function(encoding, begin, end) { - if (typeof encoding === 'undefined') - return "ByteBufferAB(offset="+this.offset+",markedOffset="+this.markedOffset+",limit="+this.limit+",capacity="+this.capacity()+")"; - if (typeof encoding === 'number') - encoding = "utf8", - begin = encoding, - end = begin; - switch (encoding) { - case "utf8": - return this.toUTF8(begin, end); - case "base64": - return this.toBase64(begin, end); - case "hex": - return this.toHex(begin, end); - case "binary": - return this.toBinary(begin, end); - case "debug": - return this.toDebug(); - case "columns": - return this.toColumns(); - default: - throw Error("Unsupported encoding: "+encoding); - } - }; + // In proto3, fields do not have field presence, and every field is set to + // its type's default value ("", 0, 0.0, or false). + if (this.syntax === 'proto3' && !this.repeated && !this.map) + this.defaultValue = Element.defaultFieldValue(this.type); - // lxiv-embeddable + // Otherwise, default values are present when explicitly specified + else if (typeof this.options['default'] !== 'undefined') + this.defaultValue = this.verifyValue(this.options['default']); + }; - /** - * lxiv-embeddable (c) 2014 Daniel Wirtz - * Released under the Apache License, Version 2.0 - * see: https://github.com/dcodeIO/lxiv for details - */ - var lxiv = function() { - "use strict"; + /** + * Checks if the given value can be set for this field. + * @param {*} value Value to check + * @param {boolean=} skipRepeated Whether to skip the repeated value check or not. Defaults to false. + * @return {*} Verified, maybe adjusted, value + * @throws {Error} If the value cannot be set for this field + * @expose + */ + FieldPrototype.verifyValue = function(value, skipRepeated) { + skipRepeated = skipRepeated || false; + var self = this; + function fail(val, msg) { + throw Error("Illegal value for "+self.toString(true)+" of type "+self.type.name+": "+val+" ("+msg+")"); + } + if (value === null) { // NULL values for optional fields + if (this.required) + fail(typeof value, "required"); + if (this.syntax === 'proto3' && this.type !== ProtoBuf.TYPES["message"]) + fail(typeof value, "proto3 field without field presence cannot be null"); + return null; + } + var i; + if (this.repeated && !skipRepeated) { // Repeated values as arrays + if (!Array.isArray(value)) + value = [value]; + var res = []; + for (i=0; i} - * @exports lxiv + * Determines whether the field will have a presence on the wire given its + * value. + * @param {*} value Verified field value + * @param {!ProtoBuf.Builder.Message} message Runtime message + * @return {boolean} Whether the field will be present on the wire */ - var lxiv = {}; + FieldPrototype.hasWirePresence = function(value, message) { + if (this.syntax !== 'proto3') + return (value !== null); + if (this.oneof && message[this.oneof.name] === this.name) + return true; + switch (this.type) { + case ProtoBuf.TYPES["int32"]: + case ProtoBuf.TYPES["sint32"]: + case ProtoBuf.TYPES["sfixed32"]: + case ProtoBuf.TYPES["uint32"]: + case ProtoBuf.TYPES["fixed32"]: + return value !== 0; + + case ProtoBuf.TYPES["int64"]: + case ProtoBuf.TYPES["sint64"]: + case ProtoBuf.TYPES["sfixed64"]: + case ProtoBuf.TYPES["uint64"]: + case ProtoBuf.TYPES["fixed64"]: + return value.low !== 0 || value.high !== 0; + + case ProtoBuf.TYPES["bool"]: + return value; + + case ProtoBuf.TYPES["float"]: + case ProtoBuf.TYPES["double"]: + return value !== 0.0; + + case ProtoBuf.TYPES["string"]: + return value.length > 0; + + case ProtoBuf.TYPES["bytes"]: + return value.remaining() > 0; + + case ProtoBuf.TYPES["enum"]: + return value !== 0; + + case ProtoBuf.TYPES["message"]: + return value !== null; + default: + return true; + } + }; /** - * Character codes for output. - * @type {!Array.} - * @inner + * Encodes the specified field value to the specified buffer. + * @param {*} value Verified field value + * @param {ByteBuffer} buffer ByteBuffer to encode to + * @param {!ProtoBuf.Builder.Message} message Runtime message + * @return {ByteBuffer} The ByteBuffer for chaining + * @throws {Error} If the field cannot be encoded + * @expose */ - var aout = [ - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47 - ]; + FieldPrototype.encode = function(value, buffer, message) { + if (this.type === null || typeof this.type !== 'object') + throw Error("[INTERNAL] Unresolved type in "+this.toString(true)+": "+this.type); + if (value === null || (this.repeated && value.length == 0)) + return buffer; // Optional omitted + try { + if (this.repeated) { + var i; + // "Only repeated fields of primitive numeric types (types which use the varint, 32-bit, or 64-bit wire + // types) can be declared 'packed'." + if (this.options["packed"] && ProtoBuf.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType) >= 0) { + // "All of the elements of the field are packed into a single key-value pair with wire type 2 + // (length-delimited). Each element is encoded the same way it would be normally, except without a + // tag preceding it." + buffer.writeVarint32((this.id << 3) | ProtoBuf.WIRE_TYPES.LDELIM); + buffer.ensureCapacity(buffer.offset += 1); // We do not know the length yet, so let's assume a varint of length 1 + var start = buffer.offset; // Remember where the contents begin + for (i=0; i 1) { // We need to move the contents + var contents = buffer.slice(start, buffer.offset); + start += varintLen-1; + buffer.offset = start; + buffer.append(contents); + } + buffer.writeVarint32(len, start-varintLen); + } else { + // "If your message definition has repeated elements (without the [packed=true] option), the encoded + // message has zero or more key-value pairs with the same tag number" + for (i=0; i} - * @inner - */ - var ain = []; - for (var i=0, k=aout.length; i>2)&0x3f]); - t = (b&0x3)<<4; - if ((b = src()) !== null) { - t |= (b>>4)&0xf; - dst(aout[(t|((b>>4)&0xf))&0x3f]); - t = (b&0xf)<<2; - if ((b = src()) !== null) - dst(aout[(t|((b>>6)&0x3))&0x3f]), - dst(aout[b&0x3f]); - else - dst(aout[t&0x3f]), - dst(61); - } else - dst(aout[t&0x3f]), - dst(61), - dst(61); + // Write out the key and val. + buffer.writeVarint32((1 << 3) | this.keyType.wireType); + this.keyElement.encodeValue(1, key, buffer); + buffer.writeVarint32((2 << 3) | this.type.wireType); + this.element.encodeValue(2, val, buffer); + }, this); + } else { + if (this.hasWirePresence(value, message)) { + buffer.writeVarint32((this.id << 3) | this.type.wireType); + this.element.encodeValue(this.id, value, buffer); + } + } + } catch (e) { + throw Error("Illegal value for "+this.toString(true)+": "+value+" ("+e+")"); } + return buffer; }; /** - * Decodes base64 char codes to bytes. - * @param {!function():number|null} src Characters source as a function returning the next char code respectively - * `null` if there are no more characters left. - * @param {!function(number)} dst Bytes destination as a function successively called with the next byte. - * @throws {Error} If a character code is invalid + * Calculates the length of this field's value on the network level. + * @param {*} value Field value + * @param {!ProtoBuf.Builder.Message} message Runtime message + * @returns {number} Byte length + * @expose */ - lxiv.decode = function(src, dst) { - var c, t1, t2; - function fail(c) { - throw Error("Illegal character code: "+c); - } - while ((c = src()) !== null) { - t1 = ain[c]; - if (typeof t1 === 'undefined') fail(c); - if ((c = src()) !== null) { - t2 = ain[c]; - if (typeof t2 === 'undefined') fail(c); - dst((t1<<2)>>>0|(t2&0x30)>>4); - if ((c = src()) !== null) { - t1 = ain[c]; - if (typeof t1 === 'undefined') - if (c === 61) break; else fail(c); - dst(((t2&0xf)<<4)>>>0|(t1&0x3c)>>2); - if ((c = src()) !== null) { - t2 = ain[c]; - if (typeof t2 === 'undefined') - if (c === 61) break; else fail(c); - dst(((t1&0x3)<<6)>>>0|t2); - } + FieldPrototype.calculate = function(value, message) { + value = this.verifyValue(value); // May throw + if (this.type === null || typeof this.type !== 'object') + throw Error("[INTERNAL] Unresolved type in "+this.toString(true)+": "+this.type); + if (value === null || (this.repeated && value.length == 0)) + return 0; // Optional omitted + var n = 0; + try { + if (this.repeated) { + var i, ni; + if (this.options["packed"] && ProtoBuf.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType) >= 0) { + n += ByteBuffer.calculateVarint32((this.id << 3) | ProtoBuf.WIRE_TYPES.LDELIM); + ni = 0; + for (i=0; i this.capacity || begin > end) - throw RangeError("begin, end"); - var sd; lxiv.encode(function() { - return begin < end ? this.view[begin++] : null; - }.bind(this), sd = stringDestination()); - return sd(); - }; - - /** - * Decodes a base64 encoded string to a ByteBuffer. - * @param {string} str String to decode - * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to - * {@link ByteBuffer.DEFAULT_ENDIAN}. - * @returns {!ByteBuffer} ByteBuffer - * @expose - */ - ByteBuffer.fromBase64 = function(str, littleEndian) { - if (typeof str !== 'string') - throw TypeError("str"); - var bb = new ByteBuffer(str.length/4*3, littleEndian), - i = 0; - lxiv.decode(stringSource(str), function(b) { - bb.view[i++] = b; - }); - bb.limit = i; - return bb; - }; - - /** - * Encodes a binary string to base64 like `window.btoa` does. - * @param {string} str Binary string - * @returns {string} Base64 encoded string - * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.btoa - * @expose - */ - ByteBuffer.btoa = function(str) { - return ByteBuffer.fromBinary(str).toBase64(); - }; - - /** - * Decodes a base64 encoded string to binary like `window.atob` does. - * @param {string} b64 Base64 encoded string - * @returns {string} Binary string - * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.atob - * @expose - */ - ByteBuffer.atob = function(b64) { - return ByteBuffer.fromBase64(b64).toBinary(); - }; - - // encodings/binary - - /** - * Encodes this ByteBuffer to a binary encoded string, that is using only characters 0x00-0xFF as bytes. - * @param {number=} begin Offset to begin at. Defaults to {@link ByteBuffer#offset}. - * @param {number=} end Offset to end at. Defaults to {@link ByteBuffer#limit}. - * @returns {string} Binary encoded string - * @throws {RangeError} If `offset > limit` - * @expose - */ - ByteBufferPrototype.toBinary = function(begin, end) { - if (typeof begin === 'undefined') - begin = this.offset; - if (typeof end === 'undefined') - end = this.limit; - begin |= 0; end |= 0; - if (begin < 0 || end > this.capacity() || begin > end) - throw RangeError("begin, end"); - if (begin === end) - return ""; - var chars = [], - parts = []; - while (begin < end) { - chars.push(this.view[begin++]); - if (chars.length >= 1024) - parts.push(String.fromCharCode.apply(String, chars)), - chars = []; - } - return parts.join('') + String.fromCharCode.apply(String, chars); - }; - - /** - * Decodes a binary encoded string, that is using only characters 0x00-0xFF as bytes, to a ByteBuffer. - * @param {string} str String to decode - * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to - * {@link ByteBuffer.DEFAULT_ENDIAN}. - * @returns {!ByteBuffer} ByteBuffer - * @expose - */ - ByteBuffer.fromBinary = function(str, littleEndian) { - if (typeof str !== 'string') - throw TypeError("str"); - var i = 0, - k = str.length, - charCode, - bb = new ByteBuffer(k, littleEndian); - while (i 0xff) - throw RangeError("illegal char code: "+charCode); - bb.view[i++] = charCode; - } - bb.limit = k; - return bb; - }; + FieldPrototype.decode = function(wireType, buffer, skipRepeated) { + var value, nBytes; - // encodings/debug + // We expect wireType to match the underlying type's wireType unless we see + // a packed repeated field, or unless this is a map field. + var wireTypeOK = + (!this.map && wireType == this.type.wireType) || + (!skipRepeated && this.repeated && this.options["packed"] && + wireType == ProtoBuf.WIRE_TYPES.LDELIM) || + (this.map && wireType == ProtoBuf.WIRE_TYPES.LDELIM); + if (!wireTypeOK) + throw Error("Illegal wire type for field "+this.toString(true)+": "+wireType+" ("+this.type.wireType+" expected)"); - /** - * Encodes this ByteBuffer to a hex encoded string with marked offsets. Offset symbols are: - * * `<` : offset, - * * `'` : markedOffset, - * * `>` : limit, - * * `|` : offset and limit, - * * `[` : offset and markedOffset, - * * `]` : markedOffset and limit, - * * `!` : offset, markedOffset and limit - * @param {boolean=} columns If `true` returns two columns hex + ascii, defaults to `false` - * @returns {string|!Array.} Debug string or array of lines if `asArray = true` - * @expose - * @example `>00'01 02<03` contains four bytes with `limit=0, markedOffset=1, offset=3` - * @example `00[01 02 03>` contains four bytes with `offset=markedOffset=1, limit=4` - * @example `00|01 02 03` contains four bytes with `offset=limit=1, markedOffset=-1` - * @example `|` contains zero bytes with `offset=limit=0, markedOffset=-1` - */ - ByteBufferPrototype.toDebug = function(columns) { - var i = -1, - k = this.buffer.byteLength, - b, - hex = "", - asc = "", - out = ""; - while (i 32 && b < 127 ? String.fromCharCode(b) : '.'; - } - ++i; - if (columns) { - if (i > 0 && i % 16 === 0 && i !== k) { - while (hex.length < 3*16+3) hex += " "; - out += hex+asc+"\n"; - hex = asc = ""; + // Handle packed repeated fields. + if (wireType == ProtoBuf.WIRE_TYPES.LDELIM && this.repeated && this.options["packed"] && ProtoBuf.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType) >= 0) { + if (!skipRepeated) { + nBytes = buffer.readVarint32(); + nBytes = buffer.offset + nBytes; // Limit + var values = []; + while (buffer.offset < nBytes) + values.push(this.decode(this.type.wireType, buffer, true)); + return values; } + // Read the next value otherwise... } - if (i === this.offset && i === this.limit) - hex += i === this.markedOffset ? "!" : "|"; - else if (i === this.offset) - hex += i === this.markedOffset ? "[" : "<"; - else if (i === this.limit) - hex += i === this.markedOffset ? "]" : ">"; - else - hex += i === this.markedOffset ? "'" : (columns || (i !== 0 && i !== k) ? " " : ""); - } - if (columns && hex !== " ") { - while (hex.length < 3*16+3) - hex += " "; - out += hex + asc + "\n"; - } - return columns ? out : hex; - }; - - /** - * Decodes a hex encoded string with marked offsets to a ByteBuffer. - * @param {string} str Debug string to decode (not be generated with `columns = true`) - * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to - * {@link ByteBuffer.DEFAULT_ENDIAN}. - * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to - * {@link ByteBuffer.DEFAULT_NOASSERT}. - * @returns {!ByteBuffer} ByteBuffer - * @expose - * @see ByteBuffer#toDebug - */ - ByteBuffer.fromDebug = function(str, littleEndian, noAssert) { - var k = str.length, - bb = new ByteBuffer(((k+1)/3)|0, littleEndian, noAssert); - var i = 0, j = 0, ch, b, - rs = false, // Require symbol next - ho = false, hm = false, hl = false, // Already has offset (ho), markedOffset (hm), limit (hl)? - fail = false; - while (i': - if (!noAssert) { - if (hl) { - fail = true; - break; - } - hl = true; - } - bb.limit = j; - rs = false; - break; - case "'": - if (!noAssert) { - if (hm) { - fail = true; - break; - } - hm = true; - } - bb.markedOffset = j; - rs = false; - break; - case ' ': - rs = false; - break; - default: - if (!noAssert) { - if (rs) { - fail = true; - break; - } - } - b = parseInt(ch+str.charAt(i++), 16); - if (!noAssert) { - if (isNaN(b) || b < 0 || b > 255) - throw TypeError("Illegal str: Not a debug encoded string"); - } - bb.view[j++] = b; - rs = true; - } - if (fail) - throw TypeError("Illegal str: Invalid symbol at "+i); - } - if (!noAssert) { - if (!ho || !hl) - throw TypeError("Illegal str: Missing offset or limit"); - if (j>>= 0; - if (typeof end !== 'number' || end % 1 !== 0) - throw TypeError("Illegal end: Not an integer"); - end >>>= 0; - if (begin < 0 || begin > end || end > this.buffer.byteLength) - throw RangeError("Illegal range: 0 <= "+begin+" <= "+end+" <= "+this.buffer.byteLength); - } - var out = new Array(end - begin), - b; - while (begin < end) { - b = this.view[begin++]; - if (b < 0x10) - out.push("0", b.toString(16)); - else out.push(b.toString(16)); - } - return out.join(''); - }; + // Read the length + nBytes = buffer.readVarint32(); + if (buffer.remaining() < nBytes) + throw Error("Illegal number of bytes for "+this.toString(true)+": "+nBytes+" required but got only "+buffer.remaining()); - /** - * Decodes a hex encoded string to a ByteBuffer. - * @param {string} str String to decode - * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to - * {@link ByteBuffer.DEFAULT_ENDIAN}. - * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to - * {@link ByteBuffer.DEFAULT_NOASSERT}. - * @returns {!ByteBuffer} ByteBuffer - * @expose - */ - ByteBuffer.fromHex = function(str, littleEndian, noAssert) { - if (!noAssert) { - if (typeof str !== 'string') - throw TypeError("Illegal str: Not a string"); - if (str.length % 2 !== 0) - throw TypeError("Illegal str: Length not a multiple of 2"); - } - var k = str.length, - bb = new ByteBuffer((k / 2) | 0, littleEndian), - b; - for (var i=0, j=0; i 255) - throw TypeError("Illegal str: Contains non-hex characters"); - bb.view[j++] = b; - } - bb.limit = j; - return bb; - }; + // Get a sub-buffer of this key/value submessage + var msgbuf = buffer.clone(); + msgbuf.limit = msgbuf.offset + nBytes; + buffer.offset += nBytes; - // utfx-embeddable + while (msgbuf.remaining() > 0) { + var tag = msgbuf.readVarint32(); + wireType = tag & 0x07; + var id = tag >>> 3; + if (id === 1) { + key = this.keyElement.decode(msgbuf, wireType, id); + } else if (id === 2) { + value = this.element.decode(msgbuf, wireType, id); + } else { + throw Error("Unexpected tag in map field key/value submessage"); + } + } - /** - * utfx-embeddable (c) 2014 Daniel Wirtz - * Released under the Apache License, Version 2.0 - * see: https://github.com/dcodeIO/utfx for details - */ - var utfx = function() { - "use strict"; + return [key, value]; + } + + // Handle singular and non-packed repeated field values. + return this.element.decode(buffer, wireType, this.id); + }; /** - * utfx namespace. - * @inner - * @type {!Object.} + * @alias ProtoBuf.Reflect.Message.Field + * @expose */ - var utfx = {}; + Reflect.Message.Field = Field; /** - * Maximum valid code point. - * @type {number} - * @const + * Constructs a new Message ExtensionField. + * @exports ProtoBuf.Reflect.Message.ExtensionField + * @param {!ProtoBuf.Builder} builder Builder reference + * @param {!ProtoBuf.Reflect.Message} message Message reference + * @param {string} rule Rule, one of requried, optional, repeated + * @param {string} type Data type, e.g. int32 + * @param {string} name Field name + * @param {number} id Unique field id + * @param {!Object.=} options Options + * @constructor + * @extends ProtoBuf.Reflect.Message.Field */ - utfx.MAX_CODEPOINT = 0x10FFFF; + var ExtensionField = function(builder, message, rule, type, name, id, options) { + Field.call(this, builder, message, rule, /* keytype = */ null, type, name, id, options); + + /** + * Extension reference. + * @type {!ProtoBuf.Reflect.Extension} + * @expose + */ + this.extension; + }; + + // Extends Field + ExtensionField.prototype = Object.create(Field.prototype); /** - * Encodes UTF8 code points to UTF8 bytes. - * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point - * respectively `null` if there are no more code points left or a single numeric code point. - * @param {!function(number)} dst Bytes destination as a function successively called with the next byte + * @alias ProtoBuf.Reflect.Message.ExtensionField + * @expose */ - utfx.encodeUTF8 = function(src, dst) { - var cp = null; - if (typeof src === 'number') - cp = src, - src = function() { return null; }; - while (cp !== null || (cp = src()) !== null) { - if (cp < 0x80) - dst(cp&0x7F); - else if (cp < 0x800) - dst(((cp>>6)&0x1F)|0xC0), - dst((cp&0x3F)|0x80); - else if (cp < 0x10000) - dst(((cp>>12)&0x0F)|0xE0), - dst(((cp>>6)&0x3F)|0x80), - dst((cp&0x3F)|0x80); - else - dst(((cp>>18)&0x07)|0xF0), - dst(((cp>>12)&0x3F)|0x80), - dst(((cp>>6)&0x3F)|0x80), - dst((cp&0x3F)|0x80); - cp = null; - } - }; + Reflect.Message.ExtensionField = ExtensionField; /** - * Decodes UTF8 bytes to UTF8 code points. - * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there - * are no more bytes left. - * @param {!function(number)} dst Code points destination as a function successively called with each decoded code point. - * @throws {RangeError} If a starting byte is invalid in UTF8 - * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the - * remaining bytes. + * Constructs a new Message OneOf. + * @exports ProtoBuf.Reflect.Message.OneOf + * @param {!ProtoBuf.Builder} builder Builder reference + * @param {!ProtoBuf.Reflect.Message} message Message reference + * @param {string} name OneOf name + * @constructor + * @extends ProtoBuf.Reflect.T */ - utfx.decodeUTF8 = function(src, dst) { - var a, b, c, d, fail = function(b) { - b = b.slice(0, b.indexOf(null)); - var err = Error(b.toString()); - err.name = "TruncatedError"; - err['bytes'] = b; - throw err; - }; - while ((a = src()) !== null) { - if ((a&0x80) === 0) - dst(a); - else if ((a&0xE0) === 0xC0) - ((b = src()) === null) && fail([a, b]), - dst(((a&0x1F)<<6) | (b&0x3F)); - else if ((a&0xF0) === 0xE0) - ((b=src()) === null || (c=src()) === null) && fail([a, b, c]), - dst(((a&0x0F)<<12) | ((b&0x3F)<<6) | (c&0x3F)); - else if ((a&0xF8) === 0xF0) - ((b=src()) === null || (c=src()) === null || (d=src()) === null) && fail([a, b, c ,d]), - dst(((a&0x07)<<18) | ((b&0x3F)<<12) | ((c&0x3F)<<6) | (d&0x3F)); - else throw RangeError("Illegal starting byte: "+a); - } + var OneOf = function(builder, message, name) { + T.call(this, builder, message, name); + + /** + * Enclosed fields. + * @type {!Array.} + * @expose + */ + this.fields = []; }; /** - * Converts UTF16 characters to UTF8 code points. - * @param {!function():number|null} src Characters source as a function returning the next char code respectively - * `null` if there are no more characters left. - * @param {!function(number)} dst Code points destination as a function successively called with each converted code - * point. + * @alias ProtoBuf.Reflect.Message.OneOf + * @expose */ - utfx.UTF16toUTF8 = function(src, dst) { - var c1, c2 = null; - while (true) { - if ((c1 = c2 !== null ? c2 : src()) === null) - break; - if (c1 >= 0xD800 && c1 <= 0xDFFF) { - if ((c2 = src()) !== null) { - if (c2 >= 0xDC00 && c2 <= 0xDFFF) { - dst((c1-0xD800)*0x400+c2-0xDC00+0x10000); - c2 = null; continue; - } - } - } - dst(c1); - } - if (c2 !== null) dst(c2); - }; + Reflect.Message.OneOf = OneOf; /** - * Converts UTF8 code points to UTF16 characters. - * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point - * respectively `null` if there are no more code points left or a single numeric code point. - * @param {!function(number)} dst Characters destination as a function successively called with each converted char code. - * @throws {RangeError} If a code point is out of range + * Constructs a new Enum. + * @exports ProtoBuf.Reflect.Enum + * @param {!ProtoBuf.Builder} builder Builder reference + * @param {!ProtoBuf.Reflect.T} parent Parent Reflect object + * @param {string} name Enum name + * @param {Object.=} options Enum options + * @param {string?} syntax The syntax level (e.g., proto3) + * @constructor + * @extends ProtoBuf.Reflect.Namespace */ - utfx.UTF8toUTF16 = function(src, dst) { - var cp = null; - if (typeof src === 'number') - cp = src, src = function() { return null; }; - while (cp !== null || (cp = src()) !== null) { - if (cp <= 0xFFFF) - dst(cp); - else - cp -= 0x10000, - dst((cp>>10)+0xD800), - dst((cp%0x400)+0xDC00); - cp = null; - } + var Enum = function(builder, parent, name, options, syntax) { + Namespace.call(this, builder, parent, name, options, syntax); + + /** + * @override + */ + this.className = "Enum"; + + /** + * Runtime enum object. + * @type {Object.|null} + * @expose + */ + this.object = null; }; /** - * Converts and encodes UTF16 characters to UTF8 bytes. - * @param {!function():number|null} src Characters source as a function returning the next char code respectively `null` - * if there are no more characters left. - * @param {!function(number)} dst Bytes destination as a function successively called with the next byte. + * Gets the string name of an enum value. + * @param {!ProtoBuf.Builder.Enum} enm Runtime enum + * @param {number} value Enum value + * @returns {?string} Name or `null` if not present + * @expose */ - utfx.encodeUTF16toUTF8 = function(src, dst) { - utfx.UTF16toUTF8(src, function(cp) { - utfx.encodeUTF8(cp, dst); - }); + Enum.getName = function(enm, value) { + var keys = Object.keys(enm); + for (var i=0, key; i} + * @expose + */ + EnumPrototype.build = function(rebuild) { + if (this.object && !rebuild) + return this.object; + var enm = new ProtoBuf.Builder.Enum(), + values = this.getChildren(Enum.Value); + for (var i=0, k=values.length; i} The number of UTF8 code points at index 0 and the number of UTF8 bytes required at index 1. + * @alias ProtoBuf.Reflect.Extension + * @expose */ - utfx.calculateUTF16asUTF8 = function(src) { - var n=0, l=0; - utfx.UTF16toUTF8(src, function(cp) { - ++n; l += (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4; - }); - return [n,l]; + Reflect.Extension = Extension; + + /** + * Constructs a new Service. + * @exports ProtoBuf.Reflect.Service + * @param {!ProtoBuf.Builder} builder Builder reference + * @param {!ProtoBuf.Reflect.Namespace} root Root + * @param {string} name Service name + * @param {Object.=} options Options + * @constructor + * @extends ProtoBuf.Reflect.Namespace + */ + var Service = function(builder, root, name, options) { + Namespace.call(this, builder, root, name, options); + + /** + * @override + */ + this.className = "Service"; + + /** + * Built runtime service class. + * @type {?function(new:ProtoBuf.Builder.Service)} + */ + this.clazz = null; }; - return utfx; - }(); + /** + * @alias ProtoBuf.Reflect.Service.prototype + * @inner + */ + var ServicePrototype = Service.prototype = Object.create(Namespace.prototype); + + /** + * Builds the service and returns the runtime counterpart, which is a fully functional class. + * @see ProtoBuf.Builder.Service + * @param {boolean=} rebuild Whether to rebuild or not + * @return {Function} Service class + * @throws {Error} If the message cannot be built + * @expose + */ + ServicePrototype.build = function(rebuild) { + if (this.clazz && !rebuild) + return this.clazz; + + // Create the runtime Service class in its own scope + return this.clazz = (function(ProtoBuf, T) { + + /** + * Constructs a new runtime Service. + * @name ProtoBuf.Builder.Service + * @param {function(string, ProtoBuf.Builder.Message, function(Error, ProtoBuf.Builder.Message=))=} rpcImpl RPC implementation receiving the method name and the message + * @class Barebone of all runtime services. + * @constructor + * @throws {Error} If the service cannot be created + */ + var Service = function(rpcImpl) { + ProtoBuf.Builder.Service.call(this); + + /** + * Service implementation. + * @name ProtoBuf.Builder.Service#rpcImpl + * @type {!function(string, ProtoBuf.Builder.Message, function(Error, ProtoBuf.Builder.Message=))} + * @expose + */ + this.rpcImpl = rpcImpl || function(name, msg, callback) { + // This is what a user has to implement: A function receiving the method name, the actual message to + // send (type checked) and the callback that's either provided with the error as its first + // argument or null and the actual response message. + setTimeout(callback.bind(this, Error("Not implemented, see: https://github.com/dcodeIO/ProtoBuf.js/wiki/Services")), 0); // Must be async! + }; + }; + + /** + * @alias ProtoBuf.Builder.Service.prototype + * @inner + */ + var ServicePrototype = Service.prototype = Object.create(ProtoBuf.Builder.Service.prototype); + + /** + * Asynchronously performs an RPC call using the given RPC implementation. + * @name ProtoBuf.Builder.Service.[Method] + * @function + * @param {!function(string, ProtoBuf.Builder.Message, function(Error, ProtoBuf.Builder.Message=))} rpcImpl RPC implementation + * @param {ProtoBuf.Builder.Message} req Request + * @param {function(Error, (ProtoBuf.Builder.Message|ByteBuffer|Buffer|string)=)} callback Callback receiving + * the error if any and the response either as a pre-parsed message or as its raw bytes + * @abstract + */ + + /** + * Asynchronously performs an RPC call using the instance's RPC implementation. + * @name ProtoBuf.Builder.Service#[Method] + * @function + * @param {ProtoBuf.Builder.Message} req Request + * @param {function(Error, (ProtoBuf.Builder.Message|ByteBuffer|Buffer|string)=)} callback Callback receiving + * the error if any and the response either as a pre-parsed message or as its raw bytes + * @abstract + */ + + var rpc = T.getChildren(ProtoBuf.Reflect.Service.RPCMethod); + for (var i=0; i} + * @expose + */ + var $optionsS; // cc needs this - /** - * Encodes this ByteBuffer's contents between {@link ByteBuffer#offset} and {@link ByteBuffer#limit} to an UTF8 encoded - * string. - * @returns {string} Hex encoded string - * @throws {RangeError} If `offset > limit` - * @expose - */ - ByteBufferPrototype.toUTF8 = function(begin, end) { - if (typeof begin === 'undefined') begin = this.offset; - if (typeof end === 'undefined') end = this.limit; - if (!this.noAssert) { - if (typeof begin !== 'number' || begin % 1 !== 0) - throw TypeError("Illegal begin: Not an integer"); - begin >>>= 0; - if (typeof end !== 'number' || end % 1 !== 0) - throw TypeError("Illegal end: Not an integer"); - end >>>= 0; - if (begin < 0 || begin > end || end > this.buffer.byteLength) - throw RangeError("Illegal range: 0 <= "+begin+" <= "+end+" <= "+this.buffer.byteLength); - } - var sd; try { - utfx.decodeUTF8toUTF16(function() { - return begin < end ? this.view[begin++] : null; - }.bind(this), sd = stringDestination()); - } catch (e) { - if (begin !== end) - throw RangeError("Illegal range: Truncated data, "+begin+" != "+end); - } - return sd(); - }; + /** + * Service options. + * @name ProtoBuf.Builder.Service#$options + * @type {Object.} + * @expose + */ + var $options; - /** - * Decodes an UTF8 encoded string to a ByteBuffer. - * @param {string} str String to decode - * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to - * {@link ByteBuffer.DEFAULT_ENDIAN}. - * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to - * {@link ByteBuffer.DEFAULT_NOASSERT}. - * @returns {!ByteBuffer} ByteBuffer - * @expose - */ - ByteBuffer.fromUTF8 = function(str, littleEndian, noAssert) { - if (!noAssert) - if (typeof str !== 'string') - throw TypeError("Illegal str: Not a string"); - var bb = new ByteBuffer(utfx.calculateUTF16asUTF8(stringSource(str), true)[1], littleEndian, noAssert), - i = 0; - utfx.encodeUTF16toUTF8(stringSource(str), function(b) { - bb.view[i++] = b; - }); - bb.limit = i; - return bb; - }; + /** + * Reflection type. + * @name ProtoBuf.Builder.Service.$type + * @type {!ProtoBuf.Reflect.Service} + * @expose + */ + var $typeS; - return ByteBuffer; -}); - -},{"long":23}],23:[function(require,module,exports){ -/* - Copyright 2013 Daniel Wirtz - Copyright 2009 The Closure Library Authors. All Rights Reserved. + /** + * Reflection type. + * @name ProtoBuf.Builder.Service#$type + * @type {!ProtoBuf.Reflect.Service} + * @expose + */ + var $type; - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at + if (Object.defineProperty) + Object.defineProperty(Service, "$options", { "value": T.buildOpt() }), + Object.defineProperty(ServicePrototype, "$options", { "value": Service["$options"] }), + Object.defineProperty(Service, "$type", { "value": T }), + Object.defineProperty(ServicePrototype, "$type", { "value": T }); - http://www.apache.org/licenses/LICENSE-2.0 + return Service; - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS-IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - */ + })(ProtoBuf, this); + }; -/** - * @license long.js (c) 2013 Daniel Wirtz - * Released under the Apache License, Version 2.0 - * see: https://github.com/dcodeIO/long.js for details - */ -(function(global, factory) { + /** + * @alias ProtoBuf.Reflect.Service + * @expose + */ + Reflect.Service = Service; - /* AMD */ if (typeof define === 'function' && define["amd"]) - define([], factory); - /* CommonJS */ else if (typeof require === 'function' && typeof module === "object" && module && module["exports"]) - module["exports"] = factory(); - /* Global */ else - (global["dcodeIO"] = global["dcodeIO"] || {})["Long"] = factory(); + /** + * Abstract service method. + * @exports ProtoBuf.Reflect.Service.Method + * @param {!ProtoBuf.Builder} builder Builder reference + * @param {!ProtoBuf.Reflect.Service} svc Service + * @param {string} name Method name + * @param {Object.=} options Options + * @constructor + * @extends ProtoBuf.Reflect.T + */ + var Method = function(builder, svc, name, options) { + T.call(this, builder, svc, name); -})(this, function() { - "use strict"; + /** + * @override + */ + this.className = "Service.Method"; - /** - * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers. - * See the from* functions below for more convenient ways of constructing Longs. - * @exports Long - * @class A Long class for representing a 64 bit two's-complement integer value. - * @param {number} low The low (signed) 32 bits of the long - * @param {number} high The high (signed) 32 bits of the long - * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed - * @constructor - */ - function Long(low, high, unsigned) { + /** + * Options. + * @type {Object.} + * @expose + */ + this.options = options || {}; + }; /** - * The low 32 bits as a signed value. - * @type {number} - * @expose + * @alias ProtoBuf.Reflect.Service.Method.prototype + * @inner */ - this.low = low | 0; + var MethodPrototype = Method.prototype = Object.create(T.prototype); /** - * The high 32 bits as a signed value. - * @type {number} - * @expose + * Builds the method's '$options' property. + * @name ProtoBuf.Reflect.Service.Method#buildOpt + * @function + * @return {Object.} */ - this.high = high | 0; + MethodPrototype.buildOpt = NamespacePrototype.buildOpt; /** - * Whether unsigned or not. - * @type {boolean} + * @alias ProtoBuf.Reflect.Service.Method * @expose */ - this.unsigned = !!unsigned; - } + Reflect.Service.Method = Method; - // The internal representation of a long is the two given signed, 32-bit values. - // We use 32-bit pieces because these are the size of integers on which - // Javascript performs bit-operations. For operations like addition and - // multiplication, we split each number into 16 bit pieces, which can easily be - // multiplied within Javascript's floating-point representation without overflow - // or change in sign. - // - // In the algorithms below, we frequently reduce the negative case to the - // positive case by negating the input(s) and then post-processing the result. - // Note that we must ALWAYS check specially whether those values are MIN_VALUE - // (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as - // a positive number, it overflows back into a negative). Not handling this - // case would often result in infinite recursion. - // - // Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from* - // methods on which they depend. + /** + * RPC service method. + * @exports ProtoBuf.Reflect.Service.RPCMethod + * @param {!ProtoBuf.Builder} builder Builder reference + * @param {!ProtoBuf.Reflect.Service} svc Service + * @param {string} name Method name + * @param {string} request Request message name + * @param {string} response Response message name + * @param {boolean} request_stream Whether requests are streamed + * @param {boolean} response_stream Whether responses are streamed + * @param {Object.=} options Options + * @constructor + * @extends ProtoBuf.Reflect.Service.Method + */ + var RPCMethod = function(builder, svc, name, request, response, request_stream, response_stream, options) { + Method.call(this, builder, svc, name, options); - /** - * An indicator used to reliably determine if an object is a Long or not. - * @type {boolean} - * @const - * @expose - * @private - */ - Long.__isLong__; + /** + * @override + */ + this.className = "Service.RPCMethod"; - Object.defineProperty(Long.prototype, "__isLong__", { - value: true, - enumerable: false, - configurable: false - }); + /** + * Request message name. + * @type {string} + * @expose + */ + this.requestName = request; - /** - * @function - * @param {*} obj Object - * @returns {boolean} - * @inner - */ - function isLong(obj) { - return (obj && obj["__isLong__"]) === true; - } + /** + * Response message name. + * @type {string} + * @expose + */ + this.responseName = response; - /** - * Tests if the specified object is a Long. - * @function - * @param {*} obj Object - * @returns {boolean} - * @expose - */ - Long.isLong = isLong; + /** + * Whether requests are streamed + * @type {bool} + * @expose + */ + this.requestStream = request_stream; - /** - * A cache of the Long representations of small integer values. - * @type {!Object} - * @inner - */ - var INT_CACHE = {}; + /** + * Whether responses are streamed + * @type {bool} + * @expose + */ + this.responseStream = response_stream; - /** - * A cache of the Long representations of small unsigned integer values. - * @type {!Object} - * @inner - */ - var UINT_CACHE = {}; + /** + * Resolved request message type. + * @type {ProtoBuf.Reflect.Message} + * @expose + */ + this.resolvedRequestType = null; - /** - * @param {number} value - * @param {boolean=} unsigned - * @returns {!Long} - * @inner - */ - function fromInt(value, unsigned) { - var obj, cachedObj, cache; - if (unsigned) { - value >>>= 0; - if (cache = (0 <= value && value < 256)) { - cachedObj = UINT_CACHE[value]; - if (cachedObj) - return cachedObj; - } - obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true); - if (cache) - UINT_CACHE[value] = obj; - return obj; - } else { - value |= 0; - if (cache = (-128 <= value && value < 128)) { - cachedObj = INT_CACHE[value]; - if (cachedObj) - return cachedObj; - } - obj = fromBits(value, value < 0 ? -1 : 0, false); - if (cache) - INT_CACHE[value] = obj; - return obj; - } - } + /** + * Resolved response message type. + * @type {ProtoBuf.Reflect.Message} + * @expose + */ + this.resolvedResponseType = null; + }; - /** - * Returns a Long representing the given 32 bit integer value. - * @function - * @param {number} value The 32 bit integer in question - * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed - * @returns {!Long} The corresponding Long value - * @expose - */ - Long.fromInt = fromInt; + // Extends Method + RPCMethod.prototype = Object.create(Method.prototype); - /** - * @param {number} value - * @param {boolean=} unsigned - * @returns {!Long} - * @inner - */ - function fromNumber(value, unsigned) { - if (isNaN(value) || !isFinite(value)) - return unsigned ? UZERO : ZERO; - if (unsigned) { - if (value < 0) - return UZERO; - if (value >= TWO_PWR_64_DBL) - return MAX_UNSIGNED_VALUE; - } else { - if (value <= -TWO_PWR_63_DBL) - return MIN_VALUE; - if (value + 1 >= TWO_PWR_63_DBL) - return MAX_VALUE; - } - if (value < 0) - return fromNumber(-value, unsigned).neg(); - return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned); - } + /** + * @alias ProtoBuf.Reflect.Service.RPCMethod + * @expose + */ + Reflect.Service.RPCMethod = RPCMethod; - /** - * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned. - * @function - * @param {number} value The number in question - * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed - * @returns {!Long} The corresponding Long value - * @expose - */ - Long.fromNumber = fromNumber; + return Reflect; - /** - * @param {number} lowBits - * @param {number} highBits - * @param {boolean=} unsigned - * @returns {!Long} - * @inner - */ - function fromBits(lowBits, highBits, unsigned) { - return new Long(lowBits, highBits, unsigned); - } + })(ProtoBuf); /** - * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is - * assumed to use 32 bits. - * @function - * @param {number} lowBits The low 32 bits - * @param {number} highBits The high 32 bits - * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed - * @returns {!Long} The corresponding Long value + * @alias ProtoBuf.Builder * @expose */ - Long.fromBits = fromBits; + ProtoBuf.Builder = (function(ProtoBuf, Lang, Reflect) { + "use strict"; - /** - * @function - * @param {number} base - * @param {number} exponent - * @returns {number} - * @inner - */ - var pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4) + /** + * Constructs a new Builder. + * @exports ProtoBuf.Builder + * @class Provides the functionality to build protocol messages. + * @param {Object.=} options Options + * @constructor + */ + var Builder = function(options) { - /** - * @param {string} str - * @param {(boolean|number)=} unsigned - * @param {number=} radix - * @returns {!Long} - * @inner - */ - function fromString(str, unsigned, radix) { - if (str.length === 0) - throw Error('empty string'); - if (str === "NaN" || str === "Infinity" || str === "+Infinity" || str === "-Infinity") - return ZERO; - if (typeof unsigned === 'number') // For goog.math.long compatibility - radix = unsigned, - unsigned = false; - radix = radix || 10; - if (radix < 2 || 36 < radix) - throw RangeError('radix'); + /** + * Namespace. + * @type {ProtoBuf.Reflect.Namespace} + * @expose + */ + this.ns = new Reflect.Namespace(this, null, ""); // Global namespace - var p; - if ((p = str.indexOf('-')) > 0) - throw Error('interior hyphen'); - else if (p === 0) { - return fromString(str.substring(1), unsigned, radix).neg(); - } + /** + * Namespace pointer. + * @type {ProtoBuf.Reflect.T} + * @expose + */ + this.ptr = this.ns; - // Do several (8) digits each time through the loop, so as to - // minimize the calls to the very expensive emulated div. - var radixToPower = fromNumber(pow_dbl(radix, 8)); + /** + * Resolved flag. + * @type {boolean} + * @expose + */ + this.resolved = false; - var result = ZERO; - for (var i = 0; i < str.length; i += 8) { - var size = Math.min(8, str.length - i), - value = parseInt(str.substring(i, i + size), radix); - if (size < 8) { - var power = fromNumber(pow_dbl(radix, size)); - result = result.mul(power).add(fromNumber(value)); - } else { - result = result.mul(radixToPower); - result = result.add(fromNumber(value)); - } - } - result.unsigned = unsigned; - return result; - } + /** + * The current building result. + * @type {Object.|null} + * @expose + */ + this.result = null; - /** - * Returns a Long representation of the given string, written using the specified radix. - * @function - * @param {string} str The textual representation of the Long - * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to `false` for signed - * @param {number=} radix The radix in which the text is written (2-36), defaults to 10 - * @returns {!Long} The corresponding Long value - * @expose - */ - Long.fromString = fromString; + /** + * Imported files. + * @type {Array.} + * @expose + */ + this.files = {}; + + /** + * Import root override. + * @type {?string} + * @expose + */ + this.importRoot = null; + + /** + * Options. + * @type {!Object.} + * @expose + */ + this.options = options || {}; + }; - /** - * @function - * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val - * @returns {!Long} - * @inner - */ - function fromValue(val) { - if (val /* is compatible */ instanceof Long) - return val; - if (typeof val === 'number') - return fromNumber(val); - if (typeof val === 'string') - return fromString(val); - // Throws for non-objects, converts non-instanceof Long: - return fromBits(val.low, val.high, val.unsigned); - } + /** + * @alias ProtoBuf.Builder.prototype + * @inner + */ + var BuilderPrototype = Builder.prototype; - /** - * Converts the specified value to a Long. - * @function - * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value - * @returns {!Long} - * @expose - */ - Long.fromValue = fromValue; + // ----- Definition tests ----- - // NOTE: the compiler should inline these constant values below and then remove these variables, so there should be - // no runtime penalty for these. + /** + * Tests if a definition most likely describes a message. + * @param {!Object} def + * @returns {boolean} + * @expose + */ + Builder.isMessage = function(def) { + // Messages require a string name + if (typeof def["name"] !== 'string') + return false; + // Messages do not contain values (enum) or rpc methods (service) + if (typeof def["values"] !== 'undefined' || typeof def["rpc"] !== 'undefined') + return false; + return true; + }; - /** - * @type {number} - * @const - * @inner - */ - var TWO_PWR_16_DBL = 1 << 16; + /** + * Tests if a definition most likely describes a message field. + * @param {!Object} def + * @returns {boolean} + * @expose + */ + Builder.isMessageField = function(def) { + // Message fields require a string rule, name and type and an id + if (typeof def["rule"] !== 'string' || typeof def["name"] !== 'string' || typeof def["type"] !== 'string' || typeof def["id"] === 'undefined') + return false; + return true; + }; - /** - * @type {number} - * @const - * @inner - */ - var TWO_PWR_24_DBL = 1 << 24; + /** + * Tests if a definition most likely describes an enum. + * @param {!Object} def + * @returns {boolean} + * @expose + */ + Builder.isEnum = function(def) { + // Enums require a string name + if (typeof def["name"] !== 'string') + return false; + // Enums require at least one value + if (typeof def["values"] === 'undefined' || !Array.isArray(def["values"]) || def["values"].length === 0) + return false; + return true; + }; - /** - * @type {number} - * @const - * @inner - */ - var TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL; + /** + * Tests if a definition most likely describes a service. + * @param {!Object} def + * @returns {boolean} + * @expose + */ + Builder.isService = function(def) { + // Services require a string name and an rpc object + if (typeof def["name"] !== 'string' || typeof def["rpc"] !== 'object' || !def["rpc"]) + return false; + return true; + }; - /** - * @type {number} - * @const - * @inner - */ - var TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL; + /** + * Tests if a definition most likely describes an extended message + * @param {!Object} def + * @returns {boolean} + * @expose + */ + Builder.isExtend = function(def) { + // Extends rquire a string ref + if (typeof def["ref"] !== 'string') + return false; + return true; + }; - /** - * @type {number} - * @const - * @inner - */ - var TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2; + // ----- Building ----- - /** - * @type {!Long} - * @const - * @inner - */ - var TWO_PWR_24 = fromInt(TWO_PWR_24_DBL); + /** + * Resets the pointer to the root namespace. + * @returns {!ProtoBuf.Builder} this + * @expose + */ + BuilderPrototype.reset = function() { + this.ptr = this.ns; + return this; + }; - /** - * @type {!Long} - * @inner - */ - var ZERO = fromInt(0); + /** + * Defines a namespace on top of the current pointer position and places the pointer on it. + * @param {string} namespace + * @return {!ProtoBuf.Builder} this + * @expose + */ + BuilderPrototype.define = function(namespace) { + if (typeof namespace !== 'string' || !Lang.TYPEREF.test(namespace)) + throw Error("illegal namespace: "+namespace); + namespace.split(".").forEach(function(part) { + var ns = this.ptr.getChild(part); + if (ns === null) // Keep existing + this.ptr.addChild(ns = new Reflect.Namespace(this, this.ptr, part)); + this.ptr = ns; + }, this); + return this; + }; - /** - * Signed zero. - * @type {!Long} - * @expose - */ - Long.ZERO = ZERO; + /** + * Creates the specified definitions at the current pointer position. + * @param {!Array.} defs Messages, enums or services to create + * @returns {!ProtoBuf.Builder} this + * @throws {Error} If a message definition is invalid + * @expose + */ + BuilderPrototype.create = function(defs) { + if (!defs) + return this; // Nothing to create + if (!Array.isArray(defs)) + defs = [defs]; + else { + if (defs.length === 0) + return this; + defs = defs.slice(); + } - /** - * @type {!Long} - * @inner - */ - var UZERO = fromInt(0, true); + // It's quite hard to keep track of scopes and memory here, so let's do this iteratively. + var stack = [defs]; + while (stack.length > 0) { + defs = stack.pop(); - /** - * Unsigned zero. - * @type {!Long} - * @expose - */ - Long.UZERO = UZERO; + if (!Array.isArray(defs)) // Stack always contains entire namespaces + throw Error("not a valid namespace: "+JSON.stringify(defs)); - /** - * @type {!Long} - * @inner - */ - var ONE = fromInt(1); + while (defs.length > 0) { + var def = defs.shift(); // Namespaces always contain an array of messages, enums and services - /** - * Signed one. - * @type {!Long} - * @expose - */ - Long.ONE = ONE; + if (Builder.isMessage(def)) { + var obj = new Reflect.Message(this, this.ptr, def["name"], def["options"], def["isGroup"], def["syntax"]); - /** - * @type {!Long} - * @inner - */ - var UONE = fromInt(1, true); + // Create OneOfs + var oneofs = {}; + if (def["oneofs"]) + Object.keys(def["oneofs"]).forEach(function(name) { + obj.addChild(oneofs[name] = new Reflect.Message.OneOf(this, obj, name)); + }, this); - /** - * Unsigned one. - * @type {!Long} - * @expose - */ - Long.UONE = UONE; + // Create fields + if (def["fields"]) + def["fields"].forEach(function(fld) { + if (obj.getChild(fld["id"]|0) !== null) + throw Error("duplicate or invalid field id in "+obj.name+": "+fld['id']); + if (fld["options"] && typeof fld["options"] !== 'object') + throw Error("illegal field options in "+obj.name+"#"+fld["name"]); + var oneof = null; + if (typeof fld["oneof"] === 'string' && !(oneof = oneofs[fld["oneof"]])) + throw Error("illegal oneof in "+obj.name+"#"+fld["name"]+": "+fld["oneof"]); + fld = new Reflect.Message.Field(this, obj, fld["rule"], fld["keytype"], fld["type"], fld["name"], fld["id"], fld["options"], oneof, def["syntax"]); + if (oneof) + oneof.fields.push(fld); + obj.addChild(fld); + }, this); - /** - * @type {!Long} - * @inner - */ - var NEG_ONE = fromInt(-1); + // Push children to stack + var subObj = []; + if (def["enums"]) + def["enums"].forEach(function(enm) { + subObj.push(enm); + }); + if (def["messages"]) + def["messages"].forEach(function(msg) { + subObj.push(msg); + }); + if (def["services"]) + def["services"].forEach(function(svc) { + subObj.push(svc); + }); - /** - * Signed negative one. - * @type {!Long} - * @expose - */ - Long.NEG_ONE = NEG_ONE; + // Set extension ranges + if (def["extensions"]) { + if (typeof def["extensions"][0] === 'number') // pre 5.0.1 + obj.extensions = [ def["extensions"] ]; + else + obj.extensions = def["extensions"]; + } - /** - * @type {!Long} - * @inner - */ - var MAX_VALUE = fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false); + // Create on top of current namespace + this.ptr.addChild(obj); + if (subObj.length > 0) { + stack.push(defs); // Push the current level back + defs = subObj; // Continue processing sub level + subObj = null; + this.ptr = obj; // And move the pointer to this namespace + obj = null; + continue; + } + subObj = null; - /** - * Maximum signed value. - * @type {!Long} - * @expose - */ - Long.MAX_VALUE = MAX_VALUE; + } else if (Builder.isEnum(def)) { - /** - * @type {!Long} - * @inner - */ - var MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true); + obj = new Reflect.Enum(this, this.ptr, def["name"], def["options"], def["syntax"]); + def["values"].forEach(function(val) { + obj.addChild(new Reflect.Enum.Value(this, obj, val["name"], val["id"])); + }, this); + this.ptr.addChild(obj); - /** - * Maximum unsigned value. - * @type {!Long} - * @expose - */ - Long.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE; + } else if (Builder.isService(def)) { - /** - * @type {!Long} - * @inner - */ - var MIN_VALUE = fromBits(0, 0x80000000|0, false); + obj = new Reflect.Service(this, this.ptr, def["name"], def["options"]); + Object.keys(def["rpc"]).forEach(function(name) { + var mtd = def["rpc"][name]; + obj.addChild(new Reflect.Service.RPCMethod(this, obj, name, mtd["request"], mtd["response"], !!mtd["request_stream"], !!mtd["response_stream"], mtd["options"])); + }, this); + this.ptr.addChild(obj); - /** - * Minimum signed value. - * @type {!Long} - * @expose - */ - Long.MIN_VALUE = MIN_VALUE; + } else if (Builder.isExtend(def)) { - /** - * @alias Long.prototype - * @inner - */ - var LongPrototype = Long.prototype; + obj = this.ptr.resolve(def["ref"], true); + if (obj) { + def["fields"].forEach(function(fld) { + if (obj.getChild(fld['id']|0) !== null) + throw Error("duplicate extended field id in "+obj.name+": "+fld['id']); + // Check if field id is allowed to be extended + if (obj.extensions) { + var valid = false; + obj.extensions.forEach(function(range) { + if (fld["id"] >= range[0] && fld["id"] <= range[1]) + valid = true; + }); + if (!valid) + throw Error("illegal extended field id in "+obj.name+": "+fld['id']+" (not within valid ranges)"); + } + // Convert extension field names to camel case notation if the override is set + var name = fld["name"]; + if (this.options['convertFieldsToCamelCase']) + name = ProtoBuf.Util.toCamelCase(name); + // see #161: Extensions use their fully qualified name as their runtime key and... + var field = new Reflect.Message.ExtensionField(this, obj, fld["rule"], fld["type"], this.ptr.fqn()+'.'+name, fld["id"], fld["options"]); + // ...are added on top of the current namespace as an extension which is used for + // resolving their type later on (the extension always keeps the original name to + // prevent naming collisions) + var ext = new Reflect.Extension(this, this.ptr, fld["name"], field); + field.extension = ext; + this.ptr.addChild(ext); + obj.addChild(field); + }, this); - /** - * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer. - * @returns {number} - * @expose - */ - LongPrototype.toInt = function toInt() { - return this.unsigned ? this.low >>> 0 : this.low; - }; + } else if (!/\.?google\.protobuf\./.test(def["ref"])) // Silently skip internal extensions + throw Error("extended message "+def["ref"]+" is not defined"); - /** - * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa). - * @returns {number} - * @expose - */ - LongPrototype.toNumber = function toNumber() { - if (this.unsigned) - return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0); - return this.high * TWO_PWR_32_DBL + (this.low >>> 0); - }; + } else + throw Error("not a valid definition: "+JSON.stringify(def)); - /** - * Converts the Long to a string written in the specified radix. - * @param {number=} radix Radix (2-36), defaults to 10 - * @returns {string} - * @override - * @throws {RangeError} If `radix` is out of range - * @expose - */ - LongPrototype.toString = function toString(radix) { - radix = radix || 10; - if (radix < 2 || 36 < radix) - throw RangeError('radix'); - if (this.isZero()) - return '0'; - if (this.isNegative()) { // Unsigned Longs are never negative - if (this.eq(MIN_VALUE)) { - // We need to change the Long value before it can be negated, so we remove - // the bottom-most digit in this base and then recurse to do the rest. - var radixLong = fromNumber(radix), - div = this.div(radixLong), - rem1 = div.mul(radixLong).sub(this); - return div.toString(radix) + rem1.toInt().toString(radix); - } else - return '-' + this.neg().toString(radix); - } + def = null; + obj = null; + } + // Break goes here + defs = null; + this.ptr = this.ptr.parent; // Namespace done, continue at parent + } + this.resolved = false; // Require re-resolve + this.result = null; // Require re-build + return this; + }; - // Do several (6) digits each time through the loop, so as to - // minimize the calls to the very expensive emulated div. - var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned), - rem = this; - var result = ''; - while (true) { - var remDiv = rem.div(radixToPower), - intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0, - digits = intval.toString(radix); - rem = remDiv; - if (rem.isZero()) - return digits + result; - else { - while (digits.length < 6) - digits = '0' + digits; - result = '' + digits + result; + /** + * Propagates syntax to all children. + * @param {!Object} parent + * @inner + */ + function propagateSyntax(parent) { + if (parent['messages']) { + parent['messages'].forEach(function(child) { + child["syntax"] = parent["syntax"]; + propagateSyntax(child); + }); + } + if (parent['enums']) { + parent['enums'].forEach(function(child) { + child["syntax"] = parent["syntax"]; + }); } } - }; - /** - * Gets the high 32 bits as a signed integer. - * @returns {number} Signed high bits - * @expose - */ - LongPrototype.getHighBits = function getHighBits() { - return this.high; - }; + /** + * Imports another definition into this builder. + * @param {Object.} json Parsed import + * @param {(string|{root: string, file: string})=} filename Imported file name + * @returns {!ProtoBuf.Builder} this + * @throws {Error} If the definition or file cannot be imported + * @expose + */ + BuilderPrototype["import"] = function(json, filename) { + var delim = '/'; - /** - * Gets the high 32 bits as an unsigned integer. - * @returns {number} Unsigned high bits - * @expose - */ - LongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() { - return this.high >>> 0; - }; + // Make sure to skip duplicate imports - /** - * Gets the low 32 bits as a signed integer. - * @returns {number} Signed low bits - * @expose - */ - LongPrototype.getLowBits = function getLowBits() { - return this.low; - }; + if (typeof filename === 'string') { + + if (ProtoBuf.Util.IS_NODE) + filename = require("path")['resolve'](filename); + if (this.files[filename] === true) + return this.reset(); + this.files[filename] = true; + + } else if (typeof filename === 'object') { // Object with root, file. + + var root = filename.root; + if (ProtoBuf.Util.IS_NODE) + root = require("path")['resolve'](root); + if (root.indexOf("\\") >= 0 || filename.file.indexOf("\\") >= 0) + delim = '\\'; + var fname; + if (ProtoBuf.Util.IS_NODE) + fname = require("path")['join'](root, filename.file); + else + fname = root + delim + filename.file; + if (this.files[fname] === true) + return this.reset(); + this.files[fname] = true; + } - /** - * Gets the low 32 bits as an unsigned integer. - * @returns {number} Unsigned low bits - * @expose - */ - LongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() { - return this.low >>> 0; - }; + // Import imports - /** - * Gets the number of bits needed to represent the absolute value of this Long. - * @returns {number} - * @expose - */ - LongPrototype.getNumBitsAbs = function getNumBitsAbs() { - if (this.isNegative()) // Unsigned Longs are never negative - return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs(); - var val = this.high != 0 ? this.high : this.low; - for (var bit = 31; bit > 0; bit--) - if ((val & (1 << bit)) != 0) - break; - return this.high != 0 ? bit + 33 : bit + 1; - }; + if (json['imports'] && json['imports'].length > 0) { + var importRoot, + resetRoot = false; - /** - * Tests if this Long's value equals zero. - * @returns {boolean} - * @expose - */ - LongPrototype.isZero = function isZero() { - return this.high === 0 && this.low === 0; - }; + if (typeof filename === 'object') { // If an import root is specified, override - /** - * Tests if this Long's value is negative. - * @returns {boolean} - * @expose - */ - LongPrototype.isNegative = function isNegative() { - return !this.unsigned && this.high < 0; - }; + this.importRoot = filename["root"]; resetRoot = true; // ... and reset afterwards + importRoot = this.importRoot; + filename = filename["file"]; + if (importRoot.indexOf("\\") >= 0 || filename.indexOf("\\") >= 0) + delim = '\\'; - /** - * Tests if this Long's value is positive. - * @returns {boolean} - * @expose - */ - LongPrototype.isPositive = function isPositive() { - return this.unsigned || this.high >= 0; - }; + } else if (typeof filename === 'string') { - /** - * Tests if this Long's value is odd. - * @returns {boolean} - * @expose - */ - LongPrototype.isOdd = function isOdd() { - return (this.low & 1) === 1; - }; + if (this.importRoot) // If import root is overridden, use it + importRoot = this.importRoot; + else { // Otherwise compute from filename + if (filename.indexOf("/") >= 0) { // Unix + importRoot = filename.replace(/\/[^\/]*$/, ""); + if (/* /file.proto */ importRoot === "") + importRoot = "/"; + } else if (filename.indexOf("\\") >= 0) { // Windows + importRoot = filename.replace(/\\[^\\]*$/, ""); + delim = '\\'; + } else + importRoot = "."; + } - /** - * Tests if this Long's value is even. - * @returns {boolean} - * @expose - */ - LongPrototype.isEven = function isEven() { - return (this.low & 1) === 0; - }; + } else + importRoot = null; - /** - * Tests if this Long's value equals the specified's. - * @param {!Long|number|string} other Other value - * @returns {boolean} - * @expose - */ - LongPrototype.equals = function equals(other) { - if (!isLong(other)) - other = fromValue(other); - if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1) - return false; - return this.high === other.high && this.low === other.low; - }; + for (var i=0; i 0; - }; + if (!Lang.TYPE.test(this.ptr.type)) { + if (!Lang.TYPEREF.test(this.ptr.type)) + throw Error("illegal type reference in "+this.ptr.toString(true)+": "+this.ptr.type); + res = (this.ptr instanceof Reflect.Message.ExtensionField ? this.ptr.extension.parent : this.ptr.parent).resolve(this.ptr.type, true); + if (!res) + throw Error("unresolvable type reference in "+this.ptr.toString(true)+": "+this.ptr.type); + this.ptr.resolvedType = res; + if (res instanceof Reflect.Enum) { + this.ptr.type = ProtoBuf.TYPES["enum"]; + if (this.ptr.syntax === 'proto3' && res.syntax !== 'proto3') + throw Error("proto3 message cannot reference proto2 enum"); + } + else if (res instanceof Reflect.Message) + this.ptr.type = res.isGroup ? ProtoBuf.TYPES["group"] : ProtoBuf.TYPES["message"]; + else + throw Error("illegal type reference in "+this.ptr.toString(true)+": "+this.ptr.type); + } else + this.ptr.type = ProtoBuf.TYPES[this.ptr.type]; - /** - * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - * @expose - */ - LongPrototype.gt = LongPrototype.greaterThan; + // If it's a map field, also resolve the key type. The key type can be only a numeric, string, or bool type + // (i.e., no enums or messages), so we don't need to resolve against the current namespace. + if (this.ptr.map) { + if (!Lang.TYPE.test(this.ptr.keyType)) + throw Error("illegal key type for map field in "+this.ptr.toString(true)+": "+this.ptr.keyType); + this.ptr.keyType = ProtoBuf.TYPES[this.ptr.keyType]; + } - /** - * Tests if this Long's value is greater than or equal the specified's. - * @param {!Long|number|string} other Other value - * @returns {boolean} - * @expose - */ - LongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) { - return this.comp(/* validates */ other) >= 0; - }; + // If it's a repeated and packable field then proto3 mandates it should be packed by + // default + if ( + this.ptr.syntax === 'proto3' && + this.ptr.repeated && this.ptr.options.packed === undefined && + ProtoBuf.PACKABLE_WIRE_TYPES.indexOf(this.ptr.type.wireType) !== -1 + ) { + this.ptr.options.packed = true; + } - /** - * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - * @expose - */ - LongPrototype.gte = LongPrototype.greaterThanOrEqual; + } else if (this.ptr instanceof ProtoBuf.Reflect.Service.Method) { - /** - * Compares this Long's value with the specified's. - * @param {!Long|number|string} other Other value - * @returns {number} 0 if they are the same, 1 if the this is greater and -1 - * if the given one is greater - * @expose - */ - LongPrototype.compare = function compare(other) { - if (!isLong(other)) - other = fromValue(other); - if (this.eq(other)) - return 0; - var thisNeg = this.isNegative(), - otherNeg = other.isNegative(); - if (thisNeg && !otherNeg) - return -1; - if (!thisNeg && otherNeg) - return 1; - // At this point the sign bits are the same - if (!this.unsigned) - return this.sub(other).isNegative() ? -1 : 1; - // Both are positive if at least one is unsigned - return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1; - }; + if (this.ptr instanceof ProtoBuf.Reflect.Service.RPCMethod) { + res = this.ptr.parent.resolve(this.ptr.requestName, true); + if (!res || !(res instanceof ProtoBuf.Reflect.Message)) + throw Error("Illegal type reference in "+this.ptr.toString(true)+": "+this.ptr.requestName); + this.ptr.resolvedRequestType = res; + res = this.ptr.parent.resolve(this.ptr.responseName, true); + if (!res || !(res instanceof ProtoBuf.Reflect.Message)) + throw Error("Illegal type reference in "+this.ptr.toString(true)+": "+this.ptr.responseName); + this.ptr.resolvedResponseType = res; + } else // Should not happen as nothing else is implemented + throw Error("illegal service type in "+this.ptr.toString(true)); - /** - * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}. - * @function - * @param {!Long|number|string} other Other value - * @returns {number} 0 if they are the same, 1 if the this is greater and -1 - * if the given one is greater - * @expose - */ - LongPrototype.comp = LongPrototype.compare; + } else if ( + !(this.ptr instanceof ProtoBuf.Reflect.Message.OneOf) && // Not built + !(this.ptr instanceof ProtoBuf.Reflect.Extension) && // Not built + !(this.ptr instanceof ProtoBuf.Reflect.Enum.Value) // Built in enum + ) + throw Error("illegal object in namespace: "+typeof(this.ptr)+": "+this.ptr); - /** - * Negates this Long's value. - * @returns {!Long} Negated Long - * @expose - */ - LongPrototype.negate = function negate() { - if (!this.unsigned && this.eq(MIN_VALUE)) - return MIN_VALUE; - return this.not().add(ONE); - }; + return this.reset(); + }; - /** - * Negates this Long's value. This is an alias of {@link Long#negate}. - * @function - * @returns {!Long} Negated Long - * @expose - */ - LongPrototype.neg = LongPrototype.negate; + /** + * Builds the protocol. This will first try to resolve all definitions and, if this has been successful, + * return the built package. + * @param {(string|Array.)=} path Specifies what to return. If omitted, the entire namespace will be returned. + * @returns {!ProtoBuf.Builder.Message|!Object.} + * @throws {Error} If a type could not be resolved + * @expose + */ + BuilderPrototype.build = function(path) { + this.reset(); + if (!this.resolved) + this.resolveAll(), + this.resolved = true, + this.result = null; // Require re-build + if (this.result === null) // (Re-)Build + this.result = this.ns.build(); + if (!path) + return this.result; + var part = typeof path === 'string' ? path.split(".") : path, + ptr = this.result; // Build namespace pointer (no hasChild etc.) + for (var i=0; i>> 16; - var a32 = this.high & 0xFFFF; - var a16 = this.low >>> 16; - var a00 = this.low & 0xFFFF; + // ----- Base classes ----- + // Exist for the sole purpose of being able to "... instanceof ProtoBuf.Builder.Message" etc. - var b48 = addend.high >>> 16; - var b32 = addend.high & 0xFFFF; - var b16 = addend.low >>> 16; - var b00 = addend.low & 0xFFFF; + /** + * @alias ProtoBuf.Builder.Message + */ + Builder.Message = function() {}; - var c48 = 0, c32 = 0, c16 = 0, c00 = 0; - c00 += a00 + b00; - c16 += c00 >>> 16; - c00 &= 0xFFFF; - c16 += a16 + b16; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c32 += a32 + b32; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c48 += a48 + b48; - c48 &= 0xFFFF; - return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned); - }; + /** + * @alias ProtoBuf.Builder.Enum + */ + Builder.Enum = function() {}; - /** - * Returns the difference of this and the specified Long. - * @param {!Long|number|string} subtrahend Subtrahend - * @returns {!Long} Difference - * @expose - */ - LongPrototype.subtract = function subtract(subtrahend) { - if (!isLong(subtrahend)) - subtrahend = fromValue(subtrahend); - return this.add(subtrahend.neg()); - }; + /** + * @alias ProtoBuf.Builder.Message + */ + Builder.Service = function() {}; - /** - * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}. - * @function - * @param {!Long|number|string} subtrahend Subtrahend - * @returns {!Long} Difference - * @expose - */ - LongPrototype.sub = LongPrototype.subtract; + return Builder; + + })(ProtoBuf, ProtoBuf.Lang, ProtoBuf.Reflect); /** - * Returns the product of this and the specified Long. - * @param {!Long|number|string} multiplier Multiplier - * @returns {!Long} Product + * @alias ProtoBuf.Map * @expose */ - LongPrototype.multiply = function multiply(multiplier) { - if (this.isZero()) - return ZERO; - if (!isLong(multiplier)) - multiplier = fromValue(multiplier); - if (multiplier.isZero()) - return ZERO; - if (this.eq(MIN_VALUE)) - return multiplier.isOdd() ? MIN_VALUE : ZERO; - if (multiplier.eq(MIN_VALUE)) - return this.isOdd() ? MIN_VALUE : ZERO; - - if (this.isNegative()) { - if (multiplier.isNegative()) - return this.neg().mul(multiplier.neg()); - else - return this.neg().mul(multiplier).neg(); - } else if (multiplier.isNegative()) - return this.mul(multiplier.neg()).neg(); + ProtoBuf.Map = (function(ProtoBuf, Reflect) { + "use strict"; - // If both longs are small, use float multiplication - if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24)) - return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned); + /** + * Constructs a new Map. A Map is a container that is used to implement map + * fields on message objects. It closely follows the ES6 Map API; however, + * it is distinct because we do not want to depend on external polyfills or + * on ES6 itself. + * + * @exports ProtoBuf.Map + * @param {!ProtoBuf.Reflect.Field} field Map field + * @param {Object.=} contents Initial contents + * @constructor + */ + var Map = function(field, contents) { + if (!field.map) + throw Error("field is not a map"); - // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products. - // We can skip products that would overflow. + /** + * The field corresponding to this map. + * @type {!ProtoBuf.Reflect.Field} + */ + this.field = field; - var a48 = this.high >>> 16; - var a32 = this.high & 0xFFFF; - var a16 = this.low >>> 16; - var a00 = this.low & 0xFFFF; + /** + * Element instance corresponding to key type. + * @type {!ProtoBuf.Reflect.Element} + */ + this.keyElem = new Reflect.Element(field.keyType, null, true, field.syntax); - var b48 = multiplier.high >>> 16; - var b32 = multiplier.high & 0xFFFF; - var b16 = multiplier.low >>> 16; - var b00 = multiplier.low & 0xFFFF; + /** + * Element instance corresponding to value type. + * @type {!ProtoBuf.Reflect.Element} + */ + this.valueElem = new Reflect.Element(field.type, field.resolvedType, false, field.syntax); - var c48 = 0, c32 = 0, c16 = 0, c00 = 0; - c00 += a00 * b00; - c16 += c00 >>> 16; - c00 &= 0xFFFF; - c16 += a16 * b00; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c16 += a00 * b16; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c32 += a32 * b00; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c32 += a16 * b16; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c32 += a00 * b32; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; - c48 &= 0xFFFF; - return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned); - }; + /** + * Internal map: stores mapping of (string form of key) -> (key, value) + * pair. + * + * We provide map semantics for arbitrary key types, but we build on top + * of an Object, which has only string keys. In order to avoid the need + * to convert a string key back to its native type in many situations, + * we store the native key value alongside the value. Thus, we only need + * a one-way mapping from a key type to its string form that guarantees + * uniqueness and equality (i.e., str(K1) === str(K2) if and only if K1 + * === K2). + * + * @type {!Object} + */ + this.map = {}; - /** - * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}. - * @function - * @param {!Long|number|string} multiplier Multiplier - * @returns {!Long} Product - * @expose - */ - LongPrototype.mul = LongPrototype.multiply; + /** + * Returns the number of elements in the map. + */ + Object.defineProperty(this, "size", { + get: function() { return Object.keys(this.map).length; } + }); - /** - * Returns this Long divided by the specified. - * @param {!Long|number|string} divisor Divisor - * @returns {!Long} Quotient - * @expose - */ - LongPrototype.divide = function divide(divisor) { - if (!isLong(divisor)) - divisor = fromValue(divisor); - if (divisor.isZero()) - throw Error('division by zero'); - if (this.isZero()) - return this.unsigned ? UZERO : ZERO; - var approx, rem, res; - if (this.eq(MIN_VALUE)) { - if (divisor.eq(ONE) || divisor.eq(NEG_ONE)) - return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE - else if (divisor.eq(MIN_VALUE)) - return ONE; - else { - // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|. - var halfThis = this.shr(1); - approx = halfThis.div(divisor).shl(1); - if (approx.eq(ZERO)) { - return divisor.isNegative() ? ONE : NEG_ONE; - } else { - rem = this.sub(divisor.mul(approx)); - res = approx.add(rem.div(divisor)); - return res; + // Fill initial contents from a raw object. + if (contents) { + var keys = Object.keys(contents); + for (var i = 0; i < keys.length; i++) { + var key = this.keyElem.valueFromString(keys[i]); + var val = this.valueElem.verifyValue(contents[keys[i]]); + this.map[this.keyElem.valueToString(key)] = + { key: key, value: val }; } } - } else if (divisor.eq(MIN_VALUE)) - return this.unsigned ? UZERO : ZERO; - if (this.isNegative()) { - if (divisor.isNegative()) - return this.neg().div(divisor.neg()); - return this.neg().div(divisor).neg(); - } else if (divisor.isNegative()) - return this.div(divisor.neg()).neg(); - - // Repeat the following until the remainder is less than other: find a - // floating-point that approximates remainder / other *from below*, add this - // into the result, and subtract it from the remainder. It is critical that - // the approximate value is less than or equal to the real value so that the - // remainder never becomes negative. - res = ZERO; - rem = this; - while (rem.gte(divisor)) { - // Approximate the result of division. This may be a little greater or - // smaller than the actual value. - approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber())); + }; - // We will tweak the approximate result by changing it in the 48-th digit or - // the smallest non-fractional digit, whichever is larger. - var log2 = Math.ceil(Math.log(approx) / Math.LN2), - delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48), + var MapPrototype = Map.prototype; - // Decrease the approximation until it is smaller than the remainder. Note - // that if it is too large, the product overflows and is negative. - approxRes = fromNumber(approx), - approxRem = approxRes.mul(divisor); - while (approxRem.isNegative() || approxRem.gt(rem)) { - approx -= delta; - approxRes = fromNumber(approx, this.unsigned); - approxRem = approxRes.mul(divisor); + /** + * Helper: return an iterator over an array. + * @param {!Array<*>} arr the array + * @returns {!Object} an iterator + * @inner + */ + function arrayIterator(arr) { + var idx = 0; + return { + next: function() { + if (idx < arr.length) + return { done: false, value: arr[idx++] }; + return { done: true }; + } } + } - // We know the answer can't be zero... and actually, zero would cause - // infinite recursion since we would make no progress. - if (approxRes.isZero()) - approxRes = ONE; + /** + * Clears the map. + */ + MapPrototype.clear = function() { + this.map = {}; + }; - res = res.add(approxRes); - rem = rem.sub(approxRem); - } - return res; - }; + /** + * Deletes a particular key from the map. + * @returns {boolean} Whether any entry with this key was deleted. + */ + MapPrototype["delete"] = function(key) { + var keyValue = this.keyElem.valueToString(this.keyElem.verifyValue(key)); + var hadKey = keyValue in this.map; + delete this.map[keyValue]; + return hadKey; + }; - /** - * Returns this Long divided by the specified. This is an alias of {@link Long#divide}. - * @function - * @param {!Long|number|string} divisor Divisor - * @returns {!Long} Quotient - * @expose - */ - LongPrototype.div = LongPrototype.divide; + /** + * Returns an iterator over [key, value] pairs in the map. + * @returns {Object} The iterator + */ + MapPrototype.entries = function() { + var entries = []; + var strKeys = Object.keys(this.map); + for (var i = 0, entry; i < strKeys.length; i++) + entries.push([(entry=this.map[strKeys[i]]).key, entry.value]); + return arrayIterator(entries); + }; - /** - * Returns this Long modulo the specified. - * @param {!Long|number|string} divisor Divisor - * @returns {!Long} Remainder - * @expose - */ - LongPrototype.modulo = function modulo(divisor) { - if (!isLong(divisor)) - divisor = fromValue(divisor); - return this.sub(this.div(divisor).mul(divisor)); - }; + /** + * Returns an iterator over keys in the map. + * @returns {Object} The iterator + */ + MapPrototype.keys = function() { + var keys = []; + var strKeys = Object.keys(this.map); + for (var i = 0; i < strKeys.length; i++) + keys.push(this.map[strKeys[i]].key); + return arrayIterator(keys); + }; - /** - * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}. - * @function - * @param {!Long|number|string} divisor Divisor - * @returns {!Long} Remainder - * @expose - */ - LongPrototype.mod = LongPrototype.modulo; + /** + * Returns an iterator over values in the map. + * @returns {!Object} The iterator + */ + MapPrototype.values = function() { + var values = []; + var strKeys = Object.keys(this.map); + for (var i = 0; i < strKeys.length; i++) + values.push(this.map[strKeys[i]].value); + return arrayIterator(values); + }; - /** - * Returns the bitwise NOT of this Long. - * @returns {!Long} - * @expose - */ - LongPrototype.not = function not() { - return fromBits(~this.low, ~this.high, this.unsigned); - }; + /** + * Iterates over entries in the map, calling a function on each. + * @param {function(this:*, *, *, *)} cb The callback to invoke with value, key, and map arguments. + * @param {Object=} thisArg The `this` value for the callback + */ + MapPrototype.forEach = function(cb, thisArg) { + var strKeys = Object.keys(this.map); + for (var i = 0, entry; i < strKeys.length; i++) + cb.call(thisArg, (entry=this.map[strKeys[i]]).value, entry.key, this); + }; - /** - * Returns the bitwise AND of this Long and the specified. - * @param {!Long|number|string} other Other Long - * @returns {!Long} - * @expose - */ - LongPrototype.and = function and(other) { - if (!isLong(other)) - other = fromValue(other); - return fromBits(this.low & other.low, this.high & other.high, this.unsigned); - }; + /** + * Sets a key in the map to the given value. + * @param {*} key The key + * @param {*} value The value + * @returns {!ProtoBuf.Map} The map instance + */ + MapPrototype.set = function(key, value) { + var keyValue = this.keyElem.verifyValue(key); + var valValue = this.valueElem.verifyValue(value); + this.map[this.keyElem.valueToString(keyValue)] = + { key: keyValue, value: valValue }; + return this; + }; - /** - * Returns the bitwise OR of this Long and the specified. - * @param {!Long|number|string} other Other Long - * @returns {!Long} - * @expose - */ - LongPrototype.or = function or(other) { - if (!isLong(other)) - other = fromValue(other); - return fromBits(this.low | other.low, this.high | other.high, this.unsigned); - }; + /** + * Gets the value corresponding to a key in the map. + * @param {*} key The key + * @returns {*|undefined} The value, or `undefined` if key not present + */ + MapPrototype.get = function(key) { + var keyValue = this.keyElem.valueToString(this.keyElem.verifyValue(key)); + if (!(keyValue in this.map)) + return undefined; + return this.map[keyValue].value; + }; + + /** + * Determines whether the given key is present in the map. + * @param {*} key The key + * @returns {boolean} `true` if the key is present + */ + MapPrototype.has = function(key) { + var keyValue = this.keyElem.valueToString(this.keyElem.verifyValue(key)); + return (keyValue in this.map); + }; + + return Map; + })(ProtoBuf, ProtoBuf.Reflect); - /** - * Returns the bitwise XOR of this Long and the given one. - * @param {!Long|number|string} other Other Long - * @returns {!Long} - * @expose - */ - LongPrototype.xor = function xor(other) { - if (!isLong(other)) - other = fromValue(other); - return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned); - }; /** - * Returns this Long with bits shifted to the left by the given amount. - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long + * Loads a .proto string and returns the Builder. + * @param {string} proto .proto file contents + * @param {(ProtoBuf.Builder|string|{root: string, file: string})=} builder Builder to append to. Will create a new one if omitted. + * @param {(string|{root: string, file: string})=} filename The corresponding file name if known. Must be specified for imports. + * @return {ProtoBuf.Builder} Builder to create new messages + * @throws {Error} If the definition cannot be parsed or built * @expose */ - LongPrototype.shiftLeft = function shiftLeft(numBits) { - if (isLong(numBits)) - numBits = numBits.toInt(); - if ((numBits &= 63) === 0) - return this; - else if (numBits < 32) - return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned); - else - return fromBits(0, this.low << (numBits - 32), this.unsigned); + ProtoBuf.loadProto = function(proto, builder, filename) { + if (typeof builder === 'string' || (builder && typeof builder["file"] === 'string' && typeof builder["root"] === 'string')) + filename = builder, + builder = undefined; + return ProtoBuf.loadJson(ProtoBuf.DotProto.Parser.parse(proto), builder, filename); }; /** - * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}. + * Loads a .proto string and returns the Builder. This is an alias of {@link ProtoBuf.loadProto}. * @function - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long + * @param {string} proto .proto file contents + * @param {(ProtoBuf.Builder|string)=} builder Builder to append to. Will create a new one if omitted. + * @param {(string|{root: string, file: string})=} filename The corresponding file name if known. Must be specified for imports. + * @return {ProtoBuf.Builder} Builder to create new messages + * @throws {Error} If the definition cannot be parsed or built * @expose */ - LongPrototype.shl = LongPrototype.shiftLeft; + ProtoBuf.protoFromString = ProtoBuf.loadProto; // Legacy /** - * Returns this Long with bits arithmetically shifted to the right by the given amount. - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long + * Loads a .proto file and returns the Builder. + * @param {string|{root: string, file: string}} filename Path to proto file or an object specifying 'file' with + * an overridden 'root' path for all imported files. + * @param {function(?Error, !ProtoBuf.Builder=)=} callback Callback that will receive `null` as the first and + * the Builder as its second argument on success, otherwise the error as its first argument. If omitted, the + * file will be read synchronously and this function will return the Builder. + * @param {ProtoBuf.Builder=} builder Builder to append to. Will create a new one if omitted. + * @return {?ProtoBuf.Builder|undefined} The Builder if synchronous (no callback specified, will be NULL if the + * request has failed), else undefined * @expose */ - LongPrototype.shiftRight = function shiftRight(numBits) { - if (isLong(numBits)) - numBits = numBits.toInt(); - if ((numBits &= 63) === 0) - return this; - else if (numBits < 32) - return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned); - else - return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned); + ProtoBuf.loadProtoFile = function(filename, callback, builder) { + if (callback && typeof callback === 'object') + builder = callback, + callback = null; + else if (!callback || typeof callback !== 'function') + callback = null; + if (callback) + return ProtoBuf.Util.fetch(typeof filename === 'string' ? filename : filename["root"]+"/"+filename["file"], function(contents) { + if (contents === null) { + callback(Error("Failed to fetch file")); + return; + } + try { + callback(null, ProtoBuf.loadProto(contents, builder, filename)); + } catch (e) { + callback(e); + } + }); + var contents = ProtoBuf.Util.fetch(typeof filename === 'object' ? filename["root"]+"/"+filename["file"] : filename); + return contents === null ? null : ProtoBuf.loadProto(contents, builder, filename); }; /** - * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}. + * Loads a .proto file and returns the Builder. This is an alias of {@link ProtoBuf.loadProtoFile}. * @function - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long + * @param {string|{root: string, file: string}} filename Path to proto file or an object specifying 'file' with + * an overridden 'root' path for all imported files. + * @param {function(?Error, !ProtoBuf.Builder=)=} callback Callback that will receive `null` as the first and + * the Builder as its second argument on success, otherwise the error as its first argument. If omitted, the + * file will be read synchronously and this function will return the Builder. + * @param {ProtoBuf.Builder=} builder Builder to append to. Will create a new one if omitted. + * @return {!ProtoBuf.Builder|undefined} The Builder if synchronous (no callback specified, will be NULL if the + * request has failed), else undefined * @expose */ - LongPrototype.shr = LongPrototype.shiftRight; + ProtoBuf.protoFromFile = ProtoBuf.loadProtoFile; // Legacy - /** - * Returns this Long with bits logically shifted to the right by the given amount. - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long - * @expose - */ - LongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) { - if (isLong(numBits)) - numBits = numBits.toInt(); - numBits &= 63; - if (numBits === 0) - return this; - else { - var high = this.high; - if (numBits < 32) { - var low = this.low; - return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned); - } else if (numBits === 32) - return fromBits(high, 0, this.unsigned); - else - return fromBits(high >>> (numBits - 32), 0, this.unsigned); - } - }; /** - * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}. - * @function - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long + * Constructs a new empty Builder. + * @param {Object.=} options Builder options, defaults to global options set on ProtoBuf + * @return {!ProtoBuf.Builder} Builder * @expose */ - LongPrototype.shru = LongPrototype.shiftRightUnsigned; + ProtoBuf.newBuilder = function(options) { + options = options || {}; + if (typeof options['convertFieldsToCamelCase'] === 'undefined') + options['convertFieldsToCamelCase'] = ProtoBuf.convertFieldsToCamelCase; + if (typeof options['populateAccessors'] === 'undefined') + options['populateAccessors'] = ProtoBuf.populateAccessors; + return new ProtoBuf.Builder(options); + }; /** - * Converts this Long to signed. - * @returns {!Long} Signed long + * Loads a .json definition and returns the Builder. + * @param {!*|string} json JSON definition + * @param {(ProtoBuf.Builder|string|{root: string, file: string})=} builder Builder to append to. Will create a new one if omitted. + * @param {(string|{root: string, file: string})=} filename The corresponding file name if known. Must be specified for imports. + * @return {ProtoBuf.Builder} Builder to create new messages + * @throws {Error} If the definition cannot be parsed or built * @expose */ - LongPrototype.toSigned = function toSigned() { - if (!this.unsigned) - return this; - return fromBits(this.low, this.high, false); + ProtoBuf.loadJson = function(json, builder, filename) { + if (typeof builder === 'string' || (builder && typeof builder["file"] === 'string' && typeof builder["root"] === 'string')) + filename = builder, + builder = null; + if (!builder || typeof builder !== 'object') + builder = ProtoBuf.newBuilder(); + if (typeof json === 'string') + json = JSON.parse(json); + builder["import"](json, filename); + builder.resolveAll(); + return builder; }; /** - * Converts this Long to unsigned. - * @returns {!Long} Unsigned long + * Loads a .json file and returns the Builder. + * @param {string|!{root: string, file: string}} filename Path to json file or an object specifying 'file' with + * an overridden 'root' path for all imported files. + * @param {function(?Error, !ProtoBuf.Builder=)=} callback Callback that will receive `null` as the first and + * the Builder as its second argument on success, otherwise the error as its first argument. If omitted, the + * file will be read synchronously and this function will return the Builder. + * @param {ProtoBuf.Builder=} builder Builder to append to. Will create a new one if omitted. + * @return {?ProtoBuf.Builder|undefined} The Builder if synchronous (no callback specified, will be NULL if the + * request has failed), else undefined * @expose */ - LongPrototype.toUnsigned = function toUnsigned() { - if (this.unsigned) - return this; - return fromBits(this.low, this.high, true); + ProtoBuf.loadJsonFile = function(filename, callback, builder) { + if (callback && typeof callback === 'object') + builder = callback, + callback = null; + else if (!callback || typeof callback !== 'function') + callback = null; + if (callback) + return ProtoBuf.Util.fetch(typeof filename === 'string' ? filename : filename["root"]+"/"+filename["file"], function(contents) { + if (contents === null) { + callback(Error("Failed to fetch file")); + return; + } + try { + callback(null, ProtoBuf.loadJson(JSON.parse(contents), builder, filename)); + } catch (e) { + callback(e); + } + }); + var contents = ProtoBuf.Util.fetch(typeof filename === 'object' ? filename["root"]+"/"+filename["file"] : filename); + return contents === null ? null : ProtoBuf.loadJson(JSON.parse(contents), builder, filename); }; - return Long; + return ProtoBuf; }); -},{}]},{},[18])(18) -}); \ No newline at end of file +}).call(this,require('_process')) +},{"_process":24,"bytebuffer":22,"fs":21,"path":21}]},{},[20])(20) +}); diff --git a/dist/machinetalk-protobuf.min.js b/dist/machinetalk-protobuf.min.js index f7d1bfaa69..c37b8a70b9 100644 --- a/dist/machinetalk-protobuf.min.js +++ b/dist/machinetalk-protobuf.min.js @@ -1,58 +1,63 @@ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}(g.machinetalk || (g.machinetalk = {})).protobuf = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o1)for(var r=1;r1024&&(e.push(h.apply(String,t)),t.length=0),Array.prototype.push.apply(t,arguments)}}function i(t,e,r,i,n){var f,o,s=8*n-i-1,h=(1<>1,l=-7,u=r?n-1:0,g=r?-1:1,w=t[e+u];for(u+=g,f=w&(1<<-l)-1,w>>=-l,l+=s;l>0;f=256*f+t[e+u],u+=g,l-=8);for(o=f&(1<<-l)-1,f>>=-l,l+=i;l>0;o=256*o+t[e+u],u+=g,l-=8);if(0===f)f=1-a;else{if(f===h)return o?NaN:1/0*(w?-1:1);o+=Math.pow(2,i),f-=a}return(w?-1:1)*o*Math.pow(2,f-i)}function n(t,e,r,i,n,f){var o,s,h,a=8*f-n-1,l=(1<>1,g=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,w=i?0:f-1,b=i?1:-1,v=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=l):(o=Math.floor(Math.log(e)/Math.LN2),e*(h=Math.pow(2,-o))<1&&(o--,h*=2),e+=o+u>=1?g/h:g*Math.pow(2,1-u),e*h>=2&&(o++,h/=2),o+u>=l?(s=0,o=l):o+u>=1?(s=(e*h-1)*Math.pow(2,n),o+=u):(s=e*Math.pow(2,u-1)*Math.pow(2,n),o=0));n>=8;t[r+w]=255&s,w+=b,s/=256,n-=8);for(o=o<0;t[r+w]=255&o,w+=b,o/=256,a-=8);t[r+w-b]|=128*v}var f=function(t,e,r){if(void 0===t&&(t=f.DEFAULT_CAPACITY),void 0===e&&(e=f.DEFAULT_ENDIAN),void 0===r&&(r=f.DEFAULT_NOASSERT),!r){if((t|=0)<0)throw RangeError("Illegal capacity");e=!!e,r=!!r}this.buffer=0===t?s:new ArrayBuffer(t),this.view=0===t?null:new Uint8Array(this.buffer),this.offset=0,this.markedOffset=-1,this.limit=t,this.littleEndian=e,this.noAssert=r};f.VERSION="5.0.1",f.LITTLE_ENDIAN=!0,f.BIG_ENDIAN=!1,f.DEFAULT_CAPACITY=16,f.DEFAULT_ENDIAN=f.BIG_ENDIAN,f.DEFAULT_NOASSERT=!1,f.Long=t||null;var o=f.prototype;o.__isByteBuffer__,Object.defineProperty(o,"__isByteBuffer__",{value:!0,enumerable:!1,configurable:!1});var s=new ArrayBuffer(0),h=String.fromCharCode;f.accessor=function(){return Uint8Array},f.allocate=function(t,e,r){return new f(t,e,r)},f.concat=function(t,e,r,i){"boolean"!=typeof e&&"string"==typeof e||(i=r,r=e,e=void 0);for(var n,o=0,s=0,h=t.length;s0&&(o+=n);if(0===o)return new f(0,r,i);var a,l=new f(o,r,i);for(s=0;s0&&(n.buffer=t.buffer,n.offset=t.byteOffset,n.limit=t.byteOffset+t.byteLength,n.view=new Uint8Array(t.buffer));else if(t instanceof ArrayBuffer)n=new f(0,r,i),t.byteLength>0&&(n.buffer=t,n.offset=0,n.limit=t.byteLength,n.view=t.byteLength>0?new Uint8Array(t):null);else{if("[object Array]"!==Object.prototype.toString.call(t))throw TypeError("Illegal buffer");n=new f(t.length,r,i),n.limit=t.length;for(var s=0;s>>=0)<0||e+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+0) <= "+this.buffer.byteLength)}var i,n=e,f=t.length,o=f>>3,s=0;for(e+=this.writeVarint32(f,e);o--;)i=1&!!t[s++]|(1&!!t[s++])<<1|(1&!!t[s++])<<2|(1&!!t[s++])<<3|(1&!!t[s++])<<4|(1&!!t[s++])<<5|(1&!!t[s++])<<6|(1&!!t[s++])<<7,this.writeByte(i,e++);if(s>3,o=0,s=[];for(t+=i.length;f--;)r=this.readByte(t++),s[o++]=!!(1&r),s[o++]=!!(2&r),s[o++]=!!(4&r),s[o++]=!!(8&r),s[o++]=!!(16&r),s[o++]=!!(32&r),s[o++]=!!(64&r),s[o++]=!!(128&r);if(o>h++&1)}return e&&(this.offset=t),s},o.readBytes=function(t,e){var r=void 0===e;if(r&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+t>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+"+t+") <= "+this.buffer.byteLength)}var i=this.slice(e,e+t);return r&&(this.offset+=t),i},o.writeBytes=o.append,o.writeInt8=function(t,e){var r=void 0===e;if(r&&(e=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal value: "+t+" (not an integer)");if(t|=0,"number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+0) <= "+this.buffer.byteLength)}e+=1;var i=this.buffer.byteLength;return e>i&&this.resize((i*=2)>e?i:e),e-=1,this.view[e]=t,r&&(this.offset+=1),this},o.writeByte=o.writeInt8,o.readInt8=function(t){var e=void 0===t;if(e&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+1) <= "+this.buffer.byteLength)}var r=this.view[t];return 128==(128&r)&&(r=-(255-r+1)),e&&(this.offset+=1),r},o.readByte=o.readInt8,o.writeUint8=function(t,e){var r=void 0===e;if(r&&(e=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal value: "+t+" (not an integer)");if(t>>>=0,"number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+0) <= "+this.buffer.byteLength)}e+=1;var i=this.buffer.byteLength;return e>i&&this.resize((i*=2)>e?i:e),e-=1,this.view[e]=t,r&&(this.offset+=1),this},o.writeUInt8=o.writeUint8,o.readUint8=function(t){var e=void 0===t;if(e&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+1) <= "+this.buffer.byteLength)}var r=this.view[t];return e&&(this.offset+=1),r},o.readUInt8=o.readUint8,o.writeInt16=function(t,e){var r=void 0===e;if(r&&(e=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal value: "+t+" (not an integer)");if(t|=0,"number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+0) <= "+this.buffer.byteLength)}e+=2;var i=this.buffer.byteLength;return e>i&&this.resize((i*=2)>e?i:e),e-=2,this.littleEndian?(this.view[e+1]=(65280&t)>>>8,this.view[e]=255&t):(this.view[e]=(65280&t)>>>8,this.view[e+1]=255&t),r&&(this.offset+=2),this},o.writeShort=o.writeInt16,o.readInt16=function(t){var e=void 0===t;if(e&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+2>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+2) <= "+this.buffer.byteLength)}var r=0;return this.littleEndian?(r=this.view[t],r|=this.view[t+1]<<8):(r=this.view[t]<<8,r|=this.view[t+1]),32768==(32768&r)&&(r=-(65535-r+1)),e&&(this.offset+=2),r},o.readShort=o.readInt16,o.writeUint16=function(t,e){var r=void 0===e;if(r&&(e=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal value: "+t+" (not an integer)");if(t>>>=0,"number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+0) <= "+this.buffer.byteLength)}e+=2;var i=this.buffer.byteLength;return e>i&&this.resize((i*=2)>e?i:e),e-=2,this.littleEndian?(this.view[e+1]=(65280&t)>>>8,this.view[e]=255&t):(this.view[e]=(65280&t)>>>8,this.view[e+1]=255&t),r&&(this.offset+=2),this},o.writeUInt16=o.writeUint16,o.readUint16=function(t){var e=void 0===t;if(e&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+2>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+2) <= "+this.buffer.byteLength)}var r=0;return this.littleEndian?(r=this.view[t],r|=this.view[t+1]<<8):(r=this.view[t]<<8,r|=this.view[t+1]),e&&(this.offset+=2),r},o.readUInt16=o.readUint16,o.writeInt32=function(t,e){var r=void 0===e;if(r&&(e=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal value: "+t+" (not an integer)");if(t|=0,"number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+0) <= "+this.buffer.byteLength)}e+=4;var i=this.buffer.byteLength;return e>i&&this.resize((i*=2)>e?i:e),e-=4,this.littleEndian?(this.view[e+3]=t>>>24&255,this.view[e+2]=t>>>16&255,this.view[e+1]=t>>>8&255,this.view[e]=255&t):(this.view[e]=t>>>24&255,this.view[e+1]=t>>>16&255,this.view[e+2]=t>>>8&255,this.view[e+3]=255&t),r&&(this.offset+=4),this},o.writeInt=o.writeInt32,o.readInt32=function(t){var e=void 0===t;if(e&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+4) <= "+this.buffer.byteLength)}var r=0;return this.littleEndian?(r=this.view[t+2]<<16,r|=this.view[t+1]<<8,r|=this.view[t],r+=this.view[t+3]<<24>>>0):(r=this.view[t+1]<<16,r|=this.view[t+2]<<8,r|=this.view[t+3],r+=this.view[t]<<24>>>0),r|=0,e&&(this.offset+=4),r},o.readInt=o.readInt32,o.writeUint32=function(t,e){var r=void 0===e;if(r&&(e=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal value: "+t+" (not an integer)");if(t>>>=0,"number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+0) <= "+this.buffer.byteLength)}e+=4;var i=this.buffer.byteLength;return e>i&&this.resize((i*=2)>e?i:e),e-=4,this.littleEndian?(this.view[e+3]=t>>>24&255,this.view[e+2]=t>>>16&255,this.view[e+1]=t>>>8&255,this.view[e]=255&t):(this.view[e]=t>>>24&255,this.view[e+1]=t>>>16&255,this.view[e+2]=t>>>8&255,this.view[e+3]=255&t),r&&(this.offset+=4),this},o.writeUInt32=o.writeUint32,o.readUint32=function(t){var e=void 0===t;if(e&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+4) <= "+this.buffer.byteLength)}var r=0;return this.littleEndian?(r=this.view[t+2]<<16,r|=this.view[t+1]<<8,r|=this.view[t],r+=this.view[t+3]<<24>>>0):(r=this.view[t+1]<<16,r|=this.view[t+2]<<8,r|=this.view[t+3],r+=this.view[t]<<24>>>0),e&&(this.offset+=4),r},o.readUInt32=o.readUint32,t&&(o.writeInt64=function(e,r){var i=void 0===r;if(i&&(r=this.offset),!this.noAssert){if("number"==typeof e)e=t.fromNumber(e);else if("string"==typeof e)e=t.fromString(e);else if(!(e&&e instanceof t))throw TypeError("Illegal value: "+e+" (not an integer or Long)");if("number"!=typeof r||r%1!=0)throw TypeError("Illegal offset: "+r+" (not an integer)");if((r>>>=0)<0||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}"number"==typeof e?e=t.fromNumber(e):"string"==typeof e&&(e=t.fromString(e)),r+=8;var n=this.buffer.byteLength;r>n&&this.resize((n*=2)>r?n:r),r-=8;var f=e.low,o=e.high;return this.littleEndian?(this.view[r+3]=f>>>24&255,this.view[r+2]=f>>>16&255,this.view[r+1]=f>>>8&255,this.view[r]=255&f,r+=4,this.view[r+3]=o>>>24&255,this.view[r+2]=o>>>16&255,this.view[r+1]=o>>>8&255,this.view[r]=255&o):(this.view[r]=o>>>24&255,this.view[r+1]=o>>>16&255,this.view[r+2]=o>>>8&255,this.view[r+3]=255&o,r+=4,this.view[r]=f>>>24&255,this.view[r+1]=f>>>16&255,this.view[r+2]=f>>>8&255,this.view[r+3]=255&f),i&&(this.offset+=8),this},o.writeLong=o.writeInt64,o.readInt64=function(e){var r=void 0===e;if(r&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+8>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+8) <= "+this.buffer.byteLength)}var i=0,n=0;this.littleEndian?(i=this.view[e+2]<<16,i|=this.view[e+1]<<8,i|=this.view[e],i+=this.view[e+3]<<24>>>0,e+=4,n=this.view[e+2]<<16,n|=this.view[e+1]<<8,n|=this.view[e],n+=this.view[e+3]<<24>>>0):(n=this.view[e+1]<<16,n|=this.view[e+2]<<8,n|=this.view[e+3],n+=this.view[e]<<24>>>0,e+=4,i=this.view[e+1]<<16,i|=this.view[e+2]<<8,i|=this.view[e+3],i+=this.view[e]<<24>>>0);var f=new t(i,n,!1);return r&&(this.offset+=8),f},o.readLong=o.readInt64,o.writeUint64=function(e,r){var i=void 0===r;if(i&&(r=this.offset),!this.noAssert){if("number"==typeof e)e=t.fromNumber(e);else if("string"==typeof e)e=t.fromString(e);else if(!(e&&e instanceof t))throw TypeError("Illegal value: "+e+" (not an integer or Long)");if("number"!=typeof r||r%1!=0)throw TypeError("Illegal offset: "+r+" (not an integer)");if((r>>>=0)<0||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}"number"==typeof e?e=t.fromNumber(e):"string"==typeof e&&(e=t.fromString(e)),r+=8;var n=this.buffer.byteLength;r>n&&this.resize((n*=2)>r?n:r),r-=8;var f=e.low,o=e.high;return this.littleEndian?(this.view[r+3]=f>>>24&255,this.view[r+2]=f>>>16&255,this.view[r+1]=f>>>8&255,this.view[r]=255&f,r+=4,this.view[r+3]=o>>>24&255,this.view[r+2]=o>>>16&255,this.view[r+1]=o>>>8&255,this.view[r]=255&o):(this.view[r]=o>>>24&255,this.view[r+1]=o>>>16&255,this.view[r+2]=o>>>8&255,this.view[r+3]=255&o,r+=4,this.view[r]=f>>>24&255,this.view[r+1]=f>>>16&255,this.view[r+2]=f>>>8&255,this.view[r+3]=255&f),i&&(this.offset+=8),this},o.writeUInt64=o.writeUint64,o.readUint64=function(e){var r=void 0===e;if(r&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+8>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+8) <= "+this.buffer.byteLength)}var i=0,n=0;this.littleEndian?(i=this.view[e+2]<<16,i|=this.view[e+1]<<8,i|=this.view[e],i+=this.view[e+3]<<24>>>0,e+=4,n=this.view[e+2]<<16,n|=this.view[e+1]<<8,n|=this.view[e],n+=this.view[e+3]<<24>>>0):(n=this.view[e+1]<<16,n|=this.view[e+2]<<8,n|=this.view[e+3],n+=this.view[e]<<24>>>0,e+=4,i=this.view[e+1]<<16,i|=this.view[e+2]<<8,i|=this.view[e+3],i+=this.view[e]<<24>>>0);var f=new t(i,n,!0);return r&&(this.offset+=8),f},o.readUInt64=o.readUint64),o.writeFloat32=function(t,e){var r=void 0===e;if(r&&(e=this.offset),!this.noAssert){if("number"!=typeof t)throw TypeError("Illegal value: "+t+" (not a number)");if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+0) <= "+this.buffer.byteLength)}e+=4;var i=this.buffer.byteLength;return e>i&&this.resize((i*=2)>e?i:e),e-=4,n(this.view,t,e,this.littleEndian,23,4),r&&(this.offset+=4),this},o.writeFloat=o.writeFloat32,o.readFloat32=function(t){var e=void 0===t;if(e&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+4) <= "+this.buffer.byteLength)}var r=i(this.view,t,this.littleEndian,23,4);return e&&(this.offset+=4),r},o.readFloat=o.readFloat32,o.writeFloat64=function(t,e){var r=void 0===e;if(r&&(e=this.offset),!this.noAssert){if("number"!=typeof t)throw TypeError("Illegal value: "+t+" (not a number)");if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+0) <= "+this.buffer.byteLength)}e+=8;var i=this.buffer.byteLength;return e>i&&this.resize((i*=2)>e?i:e),e-=8,n(this.view,t,e,this.littleEndian,52,8),r&&(this.offset+=8),this},o.writeDouble=o.writeFloat64,o.readFloat64=function(t){var e=void 0===t;if(e&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+8>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+8) <= "+this.buffer.byteLength)}var r=i(this.view,t,this.littleEndian,52,8);return e&&(this.offset+=8),r},o.readDouble=o.readFloat64,f.MAX_VARINT32_BYTES=5,f.calculateVarint32=function(t){return t>>>=0,t<128?1:t<16384?2:t<1<<21?3:t<1<<28?4:5},f.zigZagEncode32=function(t){return((t|=0)<<1^t>>31)>>>0},f.zigZagDecode32=function(t){return t>>>1^-(1&t)|0},o.writeVarint32=function(t,e){var r=void 0===e;if(r&&(e=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal value: "+t+" (not an integer)");if(t|=0,"number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+0) <= "+this.buffer.byteLength)}var i,n=f.calculateVarint32(t);e+=n;var o=this.buffer.byteLength;for(e>o&&this.resize((o*=2)>e?o:e),e-=n,t>>>=0;t>=128;)i=127&t|128,this.view[e++]=i,t>>>=7;return this.view[e++]=t,r?(this.offset=e,this):n},o.writeVarint32ZigZag=function(t,e){return this.writeVarint32(f.zigZagEncode32(t),e)},o.readVarint32=function(t){var e=void 0===t;if(e&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+1) <= "+this.buffer.byteLength)}var r,i=0,n=0;do{if(!this.noAssert&&t>this.limit){var f=Error("Truncated");throw f.truncated=!0,f}r=this.view[t++],i<5&&(n|=(127&r)<<7*i),++i}while(0!=(128&r));return n|=0,e?(this.offset=t,n):{value:n,length:i}},o.readVarint32ZigZag=function(t){var e=this.readVarint32(t);return"object"==typeof e?e.value=f.zigZagDecode32(e.value):e=f.zigZagDecode32(e),e},t&&(f.MAX_VARINT64_BYTES=10,f.calculateVarint64=function(e){"number"==typeof e?e=t.fromNumber(e):"string"==typeof e&&(e=t.fromString(e));var r=e.toInt()>>>0,i=e.shiftRightUnsigned(28).toInt()>>>0,n=e.shiftRightUnsigned(56).toInt()>>>0;return 0==n?0==i?r<16384?r<128?1:2:r<1<<21?3:4:i<16384?i<128?5:6:i<1<<21?7:8:n<128?9:10},f.zigZagEncode64=function(e){return"number"==typeof e?e=t.fromNumber(e,!1):"string"==typeof e?e=t.fromString(e,!1):!1!==e.unsigned&&(e=e.toSigned()),e.shiftLeft(1).xor(e.shiftRight(63)).toUnsigned()},f.zigZagDecode64=function(e){return"number"==typeof e?e=t.fromNumber(e,!1):"string"==typeof e?e=t.fromString(e,!1):!1!==e.unsigned&&(e=e.toSigned()),e.shiftRightUnsigned(1).xor(e.and(t.ONE).toSigned().negate()).toSigned()},o.writeVarint64=function(e,r){var i=void 0===r;if(i&&(r=this.offset),!this.noAssert){if("number"==typeof e)e=t.fromNumber(e);else if("string"==typeof e)e=t.fromString(e);else if(!(e&&e instanceof t))throw TypeError("Illegal value: "+e+" (not an integer or Long)");if("number"!=typeof r||r%1!=0)throw TypeError("Illegal offset: "+r+" (not an integer)");if((r>>>=0)<0||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}"number"==typeof e?e=t.fromNumber(e,!1):"string"==typeof e?e=t.fromString(e,!1):!1!==e.unsigned&&(e=e.toSigned());var n=f.calculateVarint64(e),o=e.toInt()>>>0,s=e.shiftRightUnsigned(28).toInt()>>>0,h=e.shiftRightUnsigned(56).toInt()>>>0;r+=n;var a=this.buffer.byteLength;switch(r>a&&this.resize((a*=2)>r?a:r),r-=n,n){case 10:this.view[r+9]=h>>>7&1;case 9:this.view[r+8]=9!==n?128|h:127&h;case 8:this.view[r+7]=8!==n?s>>>21|128:s>>>21&127;case 7:this.view[r+6]=7!==n?s>>>14|128:s>>>14&127;case 6:this.view[r+5]=6!==n?s>>>7|128:s>>>7&127;case 5:this.view[r+4]=5!==n?128|s:127&s;case 4:this.view[r+3]=4!==n?o>>>21|128:o>>>21&127;case 3:this.view[r+2]=3!==n?o>>>14|128:o>>>14&127;case 2:this.view[r+1]=2!==n?o>>>7|128:o>>>7&127;case 1:this.view[r]=1!==n?128|o:127&o}return i?(this.offset+=n,this):n},o.writeVarint64ZigZag=function(t,e){return this.writeVarint64(f.zigZagEncode64(t),e)},o.readVarint64=function(e){var r=void 0===e;if(r&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+1) <= "+this.buffer.byteLength)}var i=e,n=0,f=0,o=0,s=0;if(s=this.view[e++],n=127&s,128&s&&(s=this.view[e++],n|=(127&s)<<7,(128&s||this.noAssert&&void 0===s)&&(s=this.view[e++],n|=(127&s)<<14,(128&s||this.noAssert&&void 0===s)&&(s=this.view[e++],n|=(127&s)<<21,(128&s||this.noAssert&&void 0===s)&&(s=this.view[e++],f=127&s,(128&s||this.noAssert&&void 0===s)&&(s=this.view[e++],f|=(127&s)<<7,(128&s||this.noAssert&&void 0===s)&&(s=this.view[e++],f|=(127&s)<<14,(128&s||this.noAssert&&void 0===s)&&(s=this.view[e++],f|=(127&s)<<21,(128&s||this.noAssert&&void 0===s)&&(s=this.view[e++],o=127&s,(128&s||this.noAssert&&void 0===s)&&(s=this.view[e++],o|=(127&s)<<7,128&s||this.noAssert&&void 0===s))))))))))throw Error("Buffer overrun");var h=t.fromBits(n|f<<28,f>>>4|o<<24,!1);return r?(this.offset=e,h):{value:h,length:e-i}},o.readVarint64ZigZag=function(e){var r=this.readVarint64(e);return r&&r.value instanceof t?r.value=f.zigZagDecode64(r.value):r=f.zigZagDecode64(r),r}),o.writeCString=function(t,r){var i=void 0===r;i&&(r=this.offset);var n,f=t.length;if(!this.noAssert){if("string"!=typeof t)throw TypeError("Illegal str: Not a string");for(n=0;n>>=0)<0||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}f=l.calculateUTF16asUTF8(e(t))[1],r+=f+1;var o=this.buffer.byteLength;return r>o&&this.resize((o*=2)>r?o:r),r-=f+1,l.encodeUTF16toUTF8(e(t),function(t){this.view[r++]=t}.bind(this)),this.view[r++]=0,i?(this.offset=r,this):f},o.readCString=function(t){var e=void 0===t;if(e&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+1) <= "+this.buffer.byteLength)}var i,n=t,f=-1;return l.decodeUTF8toUTF16(function(){if(0===f)return null;if(t>=this.limit)throw RangeError("Illegal range: Truncated data, "+t+" < "+this.limit);return f=this.view[t++],0===f?null:f}.bind(this),i=r(),!0),e?(this.offset=t,i()):{string:i(),length:t-n}},o.writeIString=function(t,r){var i=void 0===r;if(i&&(r=this.offset),!this.noAssert){if("string"!=typeof t)throw TypeError("Illegal str: Not a string");if("number"!=typeof r||r%1!=0)throw TypeError("Illegal offset: "+r+" (not an integer)");if((r>>>=0)<0||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}var n,f=r;n=l.calculateUTF16asUTF8(e(t),this.noAssert)[1],r+=4+n;var o=this.buffer.byteLength;if(r>o&&this.resize((o*=2)>r?o:r),r-=4+n,this.littleEndian?(this.view[r+3]=n>>>24&255,this.view[r+2]=n>>>16&255,this.view[r+1]=n>>>8&255,this.view[r]=255&n):(this.view[r]=n>>>24&255,this.view[r+1]=n>>>16&255,this.view[r+2]=n>>>8&255,this.view[r+3]=255&n),r+=4,l.encodeUTF16toUTF8(e(t),function(t){this.view[r++]=t}.bind(this)),r!==f+4+n)throw RangeError("Illegal range: Truncated data, "+r+" == "+(r+4+n));return i?(this.offset=r,this):r-f},o.readIString=function(t){var e=void 0===t;if(e&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+4) <= "+this.buffer.byteLength)}var r=t,i=this.readUint32(t),n=this.readUTF8String(i,f.METRICS_BYTES,t+=4);return t+=n.length,e?(this.offset=t,n.string):{string:n.string,length:t-r}},f.METRICS_CHARS="c",f.METRICS_BYTES="b",o.writeUTF8String=function(t,r){var i=void 0===r;if(i&&(r=this.offset),!this.noAssert){if("number"!=typeof r||r%1!=0)throw TypeError("Illegal offset: "+r+" (not an integer)");if((r>>>=0)<0||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}var n,f=r;n=l.calculateUTF16asUTF8(e(t))[1],r+=n;var o=this.buffer.byteLength;return r>o&&this.resize((o*=2)>r?o:r),r-=n,l.encodeUTF16toUTF8(e(t),function(t){this.view[r++]=t}.bind(this)),i?(this.offset=r,this):r-f},o.writeString=o.writeUTF8String,f.calculateUTF8Chars=function(t){return l.calculateUTF16asUTF8(e(t))[0]},f.calculateUTF8Bytes=function(t){return l.calculateUTF16asUTF8(e(t))[1]},f.calculateString=f.calculateUTF8Bytes,o.readUTF8String=function(t,e,i){"number"==typeof e&&(i=e,e=void 0);var n=void 0===i;if(n&&(i=this.offset),void 0===e&&(e=f.METRICS_CHARS),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal length: "+t+" (not an integer)");if(t|=0,"number"!=typeof i||i%1!=0)throw TypeError("Illegal offset: "+i+" (not an integer)");if((i>>>=0)<0||i+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+i+" (+0) <= "+this.buffer.byteLength)}var o,s=0,h=i;if(e===f.METRICS_CHARS){if(o=r(),l.decodeUTF8(function(){return s>>=0)<0||i+t>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+i+" (+"+t+") <= "+this.buffer.byteLength)}var a=i+t;if(l.decodeUTF8toUTF16(function(){return i>>=0)<0||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}var n,o,s=r;n=l.calculateUTF16asUTF8(e(t),this.noAssert)[1],o=f.calculateVarint32(n),r+=o+n;var h=this.buffer.byteLength;if(r>h&&this.resize((h*=2)>r?h:r),r-=o+n,r+=this.writeVarint32(n,r),l.encodeUTF16toUTF8(e(t),function(t){this.view[r++]=t}.bind(this)),r!==s+n+o)throw RangeError("Illegal range: Truncated data, "+r+" == "+(r+n+o));return i?(this.offset=r,this):r-s},o.readVString=function(t){var e=void 0===t;if(e&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+1) <= "+this.buffer.byteLength)}var r=t,i=this.readVarint32(t),n=this.readUTF8String(i.value,f.METRICS_BYTES,t+=i.length);return t+=n.length,e?(this.offset=t,n.string):{string:n.string,length:t-r}},o.append=function(t,e,r){"number"!=typeof e&&"string"==typeof e||(r=e,e=void 0);var i=void 0===r;if(i&&(r=this.offset),!this.noAssert){if("number"!=typeof r||r%1!=0)throw TypeError("Illegal offset: "+r+" (not an integer)");if((r>>>=0)<0||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}t instanceof f||(t=f.wrap(t,e));var n=t.limit-t.offset;if(n<=0)return this;r+=n;var o=this.buffer.byteLength;return r>o&&this.resize((o*=2)>r?o:r),r-=n,this.view.set(t.view.subarray(t.offset,t.limit),r),t.offset+=n,i&&(this.offset+=n),this},o.appendTo=function(t,e){return t.append(this,e),this},o.assert=function(t){return this.noAssert=!t,this},o.capacity=function(){return this.buffer.byteLength},o.clear=function(){return this.offset=0,this.limit=this.buffer.byteLength,this.markedOffset=-1,this},o.clone=function(t){var e=new f(0,this.littleEndian,this.noAssert);return t?(e.buffer=new ArrayBuffer(this.buffer.byteLength),e.view=new Uint8Array(e.buffer)):(e.buffer=this.buffer,e.view=this.view),e.offset=this.offset,e.markedOffset=this.markedOffset,e.limit=this.limit,e},o.compact=function(t,e){if(void 0===t&&(t=this.offset),void 0===e&&(e=this.limit),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal begin: Not an integer");if(t>>>=0,"number"!=typeof e||e%1!=0)throw TypeError("Illegal end: Not an integer");if(e>>>=0,t<0||t>e||e>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+t+" <= "+e+" <= "+this.buffer.byteLength)}if(0===t&&e===this.buffer.byteLength)return this;var r=e-t;if(0===r)return this.buffer=s,this.view=null,this.markedOffset>=0&&(this.markedOffset-=t),this.offset=0,this.limit=0,this;var i=new ArrayBuffer(r),n=new Uint8Array(i);return n.set(this.view.subarray(t,e)),this.buffer=i,this.view=n,this.markedOffset>=0&&(this.markedOffset-=t),this.offset=0,this.limit=r,this},o.copy=function(t,e){if(void 0===t&&(t=this.offset),void 0===e&&(e=this.limit),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal begin: Not an integer");if(t>>>=0,"number"!=typeof e||e%1!=0)throw TypeError("Illegal end: Not an integer");if(e>>>=0,t<0||t>e||e>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+t+" <= "+e+" <= "+this.buffer.byteLength)}if(t===e)return new f(0,this.littleEndian,this.noAssert);var r=e-t,i=new f(r,this.littleEndian,this.noAssert);return i.offset=0,i.limit=r,i.markedOffset>=0&&(i.markedOffset-=t),this.copyTo(i,0,t,e),i},o.copyTo=function(t,e,r,i){var n,o;if(!this.noAssert&&!f.isByteBuffer(t))throw TypeError("Illegal target: Not a ByteBuffer");if(e=(o=void 0===e)?t.offset:0|e,r=(n=void 0===r)?this.offset:0|r,i=void 0===i?this.limit:0|i,e<0||e>t.buffer.byteLength)throw RangeError("Illegal target range: 0 <= "+e+" <= "+t.buffer.byteLength);if(r<0||i>this.buffer.byteLength)throw RangeError("Illegal source range: 0 <= "+r+" <= "+this.buffer.byteLength);var s=i-r;return 0===s?t:(t.ensureCapacity(e+s),t.view.set(this.view.subarray(r,i),e),n&&(this.offset+=s),o&&(t.offset+=s),this)},o.ensureCapacity=function(t){var e=this.buffer.byteLength;return et?e:t):this},o.fill=function(t,e,r){var i=void 0===e;if(i&&(e=this.offset),"string"==typeof t&&t.length>0&&(t=t.charCodeAt(0)),void 0===e&&(e=this.offset),void 0===r&&(r=this.limit),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal value: "+t+" (not an integer)");if(t|=0,"number"!=typeof e||e%1!=0)throw TypeError("Illegal begin: Not an integer");if(e>>>=0,"number"!=typeof r||r%1!=0)throw TypeError("Illegal end: Not an integer");if(r>>>=0,e<0||e>r||r>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+r+" <= "+this.buffer.byteLength)}if(e>=r)return this;for(;e>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}return this.markedOffset=t,this},o.order=function(t){if(!this.noAssert&&"boolean"!=typeof t)throw TypeError("Illegal littleEndian: Not a boolean");return this.littleEndian=!!t,this},o.LE=function(t){return this.littleEndian=void 0===t||!!t,this},o.BE=function(t){return this.littleEndian=void 0!==t&&!t,this},o.prepend=function(t,e,r){"number"!=typeof e&&"string"==typeof e||(r=e,e=void 0);var i=void 0===r;if(i&&(r=this.offset),!this.noAssert){if("number"!=typeof r||r%1!=0)throw TypeError("Illegal offset: "+r+" (not an integer)");if((r>>>=0)<0||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}t instanceof f||(t=f.wrap(t,e));var n=t.limit-t.offset;if(n<=0)return this;var o=n-r;if(o>0){var s=new ArrayBuffer(this.buffer.byteLength+o),h=new Uint8Array(s);h.set(this.view.subarray(r,this.buffer.byteLength),n),this.buffer=s,this.view=h,this.offset+=o,this.markedOffset>=0&&(this.markedOffset+=o),this.limit+=o,r+=o}else{new Uint8Array(this.buffer)}return this.view.set(t.view.subarray(t.offset,t.limit),r-n),t.offset=t.limit,i&&(this.offset-=n),this},o.prependTo=function(t,e){return t.prepend(this,e),this},o.printDebug=function(t){"function"!=typeof t&&(t=console.log.bind(console)),t(this.toString()+"\n-------------------------------------------------------------------\n"+this.toDebug(!0))},o.remaining=function(){return this.limit-this.offset},o.reset=function(){return this.markedOffset>=0?(this.offset=this.markedOffset,this.markedOffset=-1):this.offset=0,this},o.resize=function(t){if(!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal capacity: "+t+" (not an integer)");if((t|=0)<0)throw RangeError("Illegal capacity: 0 <= "+t)}if(this.buffer.byteLength>>=0,"number"!=typeof e||e%1!=0)throw TypeError("Illegal end: Not an integer");if(e>>>=0,t<0||t>e||e>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+t+" <= "+e+" <= "+this.buffer.byteLength)}return t===e?this:(Array.prototype.reverse.call(this.view.subarray(t,e)),this)},o.skip=function(t){if(!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal length: "+t+" (not an integer)");t|=0}var e=this.offset+t;if(!this.noAssert&&(e<0||e>this.buffer.byteLength))throw RangeError("Illegal length: 0 <= "+this.offset+" + "+t+" <= "+this.buffer.byteLength);return this.offset=e,this},o.slice=function(t,e){if(void 0===t&&(t=this.offset),void 0===e&&(e=this.limit),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal begin: Not an integer");if(t>>>=0,"number"!=typeof e||e%1!=0)throw TypeError("Illegal end: Not an integer");if(e>>>=0,t<0||t>e||e>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+t+" <= "+e+" <= "+this.buffer.byteLength)}var r=this.clone();return r.offset=t,r.limit=e,r},o.toBuffer=function(t){var e=this.offset,r=this.limit;if(!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: Not an integer");if(e>>>=0,"number"!=typeof r||r%1!=0)throw TypeError("Illegal limit: Not an integer");if(r>>>=0,e<0||e>r||r>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+r+" <= "+this.buffer.byteLength)}if(!t&&0===e&&r===this.buffer.byteLength)return this.buffer;if(e===r)return s;var i=new ArrayBuffer(r-e);return new Uint8Array(i).set(new Uint8Array(this.buffer).subarray(e,r),0),i},o.toArrayBuffer=o.toBuffer,o.toString=function(t,e,r){if(void 0===t)return"ByteBufferAB(offset="+this.offset+",markedOffset="+this.markedOffset+",limit="+this.limit+",capacity="+this.capacity()+")";switch("number"==typeof t&&(t="utf8",e=t,r=e),t){case"utf8":return this.toUTF8(e,r);case"base64":return this.toBase64(e,r);case"hex":return this.toHex(e,r);case"binary":return this.toBinary(e,r);case"debug":return this.toDebug();case"columns":return this.toColumns();default:throw Error("Unsupported encoding: "+t)}};var a=function(){for(var t={},e=[65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,43,47],r=[],i=0,n=e.length;i>2&63]),n=(3&i)<<4,null!==(i=t())?(n|=i>>4&15,r(e[63&(n|i>>4&15)]),n=(15&i)<<2,null!==(i=t())?(r(e[63&(n|i>>6&3)]),r(e[63&i])):(r(e[63&n]),r(61))):(r(e[63&n]),r(61),r(61))},t.decode=function(t,e){function i(t){throw Error("Illegal character code: "+t)}for(var n,f,o;null!==(n=t());)if(f=r[n],void 0===f&&i(n),null!==(n=t())&&(o=r[n],void 0===o&&i(n),e(f<<2>>>0|(48&o)>>4),null!==(n=t()))){if(void 0===(f=r[n])){if(61===n)break;i(n)}if(e((15&o)<<4>>>0|(60&f)>>2),null!==(n=t())){if(void 0===(o=r[n])){if(61===n)break;i(n)}e((3&f)<<6>>>0|o)}}},t.test=function(t){return/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/.test(t)},t}();o.toBase64=function(t,e){if(void 0===t&&(t=this.offset),void 0===e&&(e=this.limit),t|=0,e|=0,t<0||e>this.capacity||t>e)throw RangeError("begin, end");var i;return a.encode(function(){return tthis.capacity()||t>e)throw RangeError("begin, end");if(t===e)return"";for(var r=[],i=[];t=1024&&(i.push(String.fromCharCode.apply(String,r)),r=[]);return i.join("")+String.fromCharCode.apply(String,r)},f.fromBinary=function(t,e){if("string"!=typeof t)throw TypeError("str");for(var r,i=0,n=t.length,o=new f(n,e);i255)throw RangeError("illegal char code: "+r);o.view[i++]=r}return o.limit=n,o},o.toDebug=function(t){for(var e,r=-1,i=this.buffer.byteLength,n="",f="",o="";r32&&e<127?String.fromCharCode(e):".")),++r,t&&r>0&&r%16==0&&r!==i){for(;n.length<51;)n+=" ";o+=n+f+"\n",n=f=""}r===this.offset&&r===this.limit?n+=r===this.markedOffset?"!":"|":r===this.offset?n+=r===this.markedOffset?"[":"<":r===this.limit?n+=r===this.markedOffset?"]":">":n+=r===this.markedOffset?"'":t||0!==r&&r!==i?" ":""}if(t&&" "!==n){for(;n.length<51;)n+=" ";o+=n+f+"\n"}return t?o:n},f.fromDebug=function(t,e,r){for(var i,n,o=t.length,s=new f((o+1)/3|0,e,r),h=0,a=0,l=!1,u=!1,g=!1,w=!1,b=!1;h":if(!r){if(w){b=!0;break}w=!0}s.limit=a,l=!1;break;case"'":if(!r){if(g){b=!0;break}g=!0}s.markedOffset=a,l=!1;break;case" ":l=!1;break;default:if(!r&&l){b=!0;break}if(n=parseInt(i+t.charAt(h++),16),!r&&(isNaN(n)||n<0||n>255))throw TypeError("Illegal str: Not a debug encoded string");s.view[a++]=n,l=!0}if(b)throw TypeError("Illegal str: Invalid symbol at "+h)}if(!r){if(!u||!w)throw TypeError("Illegal str: Missing offset or limit");if(a>>=0,"number"!=typeof e||e%1!=0)throw TypeError("Illegal end: Not an integer");if(e>>>=0,t<0||t>e||e>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+t+" <= "+e+" <= "+this.buffer.byteLength)}for(var r,i=new Array(e-t);t255))throw TypeError("Illegal str: Contains non-hex characters");o.view[h++]=i}return o.limit=h,o};var l=function(){var t={};return t.MAX_CODEPOINT=1114111,t.encodeUTF8=function(t,e){var r=null;for("number"==typeof t&&(r=t,t=function(){return null});null!==r||null!==(r=t());)r<128?e(127&r):r<2048?(e(r>>6&31|192),e(63&r|128)):r<65536?(e(r>>12&15|224),e(r>>6&63|128),e(63&r|128)):(e(r>>18&7|240),e(r>>12&63|128),e(r>>6&63|128),e(63&r|128)),r=null},t.decodeUTF8=function(t,e){for(var r,i,n,f,o=function(t){t=t.slice(0,t.indexOf(null));var e=Error(t.toString());throw e.name="TruncatedError",e.bytes=t,e};null!==(r=t());)if(0==(128&r))e(r);else if(192==(224&r))null===(i=t())&&o([r,i]),e((31&r)<<6|63&i);else if(224==(240&r))(null===(i=t())||null===(n=t()))&&o([r,i,n]),e((15&r)<<12|(63&i)<<6|63&n);else{if(240!=(248&r))throw RangeError("Illegal starting byte: "+r);(null===(i=t())||null===(n=t())||null===(f=t()))&&o([r,i,n,f]),e((7&r)<<18|(63&i)<<12|(63&n)<<6|63&f)}},t.UTF16toUTF8=function(t,e){for(var r,i=null;;){if(null===(r=null!==i?i:t()))break;r>=55296&&r<=57343&&null!==(i=t())&&i>=56320&&i<=57343?(e(1024*(r-55296)+i-56320+65536),i=null):e(r)}null!==i&&e(i)},t.UTF8toUTF16=function(t,e){var r=null;for("number"==typeof t&&(r=t,t=function(){return null});null!==r||null!==(r=t());)r<=65535?e(r):(r-=65536,e(55296+(r>>10)),e(r%1024+56320)),r=null},t.encodeUTF16toUTF8=function(e,r){t.UTF16toUTF8(e,function(e){t.encodeUTF8(e,r)})},t.decodeUTF8toUTF16=function(e,r){t.decodeUTF8(e,function(e){t.UTF8toUTF16(e,r)})},t.calculateCodePoint=function(t){return t<128?1:t<2048?2:t<65536?3:4},t.calculateUTF8=function(t){for(var e,r=0;null!==(e=t());)r+=e<128?1:e<2048?2:e<65536?3:4;return r},t.calculateUTF16asUTF8=function(e){var r=0,i=0;return t.UTF16toUTF8(e,function(t){++r,i+=t<128?1:t<2048?2:t<65536?3:4}),[r,i]},t}();return o.toUTF8=function(t,e){if(void 0===t&&(t=this.offset),void 0===e&&(e=this.limit),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal begin: Not an integer");if(t>>>=0,"number"!=typeof e||e%1!=0)throw TypeError("Illegal end: Not an integer");if(e>>>=0,t<0||t>e||e>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+t+" <= "+e+" <= "+this.buffer.byteLength)}var i;try{l.decodeUTF8toUTF16(function(){return t>>=0,(h=0<=i&&i<256)&&(e=o[i])?e:(n=s(i,(0|i)<0?-1:0,!0),h&&(o[i]=n),n)):(i|=0,(h=-128<=i&&i<128)&&(e=u[i])?e:(n=s(i,i<0?-1:0,!1),h&&(u[i]=n),n))}function e(i,t){if(isNaN(i)||!isFinite(i))return t?v:c;if(t){if(i<0)return v;if(i>=a)return b}else{if(i<=-d)return E;if(i+1>=d)return p}return i<0?e(-i,t).neg():s(i%f|0,i/f|0,t)}function s(t,n,e){return new i(t,n,e)}function h(i,t,n){if(0===i.length)throw Error("empty string");if("NaN"===i||"Infinity"===i||"+Infinity"===i||"-Infinity"===i)return c;if("number"==typeof t?(n=t,t=!1):t=!!t,(n=n||10)<2||360)throw Error("interior hyphen");if(0===s)return h(i.substring(1),t,n).neg();for(var r=e(g(n,8)),u=c,o=0;o>>0:this.low},q.toNumber=function(){return this.unsigned?(this.high>>>0)*f+(this.low>>>0):this.high*f+(this.low>>>0)},q.toString=function(i){if((i=i||10)<2||36>>0,a=f.toString(i);if(r=o,r.isZero())return a+u;for(;a.length<6;)a="0"+a;u=""+a+u}},q.getHighBits=function(){return this.high},q.getHighBitsUnsigned=function(){return this.high>>>0},q.getLowBits=function(){return this.low},q.getLowBitsUnsigned=function(){return this.low>>>0},q.getNumBitsAbs=function(){if(this.isNegative())return this.eq(E)?64:this.neg().getNumBitsAbs();for(var i=0!=this.high?this.high:this.low,t=31;t>0&&0==(i&1<=0},q.isOdd=function(){return 1==(1&this.low)},q.isEven=function(){return 0==(1&this.low)},q.equals=function(i){return t(i)||(i=r(i)),(this.unsigned===i.unsigned||this.high>>>31!=1||i.high>>>31!=1)&&(this.high===i.high&&this.low===i.low)},q.eq=q.equals,q.notEquals=function(i){return!this.eq(i)},q.neq=q.notEquals,q.lessThan=function(i){return this.comp(i)<0},q.lt=q.lessThan,q.lessThanOrEqual=function(i){return this.comp(i)<=0},q.lte=q.lessThanOrEqual,q.greaterThan=function(i){return this.comp(i)>0},q.gt=q.greaterThan,q.greaterThanOrEqual=function(i){return this.comp(i)>=0},q.gte=q.greaterThanOrEqual,q.compare=function(i){if(t(i)||(i=r(i)),this.eq(i))return 0;var n=this.isNegative(),e=i.isNegative();return n&&!e?-1:!n&&e?1:this.unsigned?i.high>>>0>this.high>>>0||i.high===this.high&&i.low>>>0>this.low>>>0?-1:1:this.sub(i).isNegative()?-1:1},q.comp=q.compare,q.negate=function(){return!this.unsigned&&this.eq(E)?E:this.not().add(w)},q.neg=q.negate,q.add=function(i){t(i)||(i=r(i));var n=this.high>>>16,e=65535&this.high,h=this.low>>>16,u=65535&this.low,o=i.high>>>16,g=65535&i.high,f=i.low>>>16,a=65535&i.low,d=0,l=0,c=0,v=0;return v+=u+a,c+=v>>>16,v&=65535,c+=h+f,l+=c>>>16,c&=65535,l+=e+g,d+=l>>>16,l&=65535,d+=n+o,d&=65535,s(c<<16|v,d<<16|l,this.unsigned)},q.subtract=function(i){return t(i)||(i=r(i)),this.add(i.neg())},q.sub=q.subtract,q.multiply=function(i){if(this.isZero())return c;if(t(i)||(i=r(i)),i.isZero())return c;if(this.eq(E))return i.isOdd()?E:c;if(i.eq(E))return this.isOdd()?E:c;if(this.isNegative())return i.isNegative()?this.neg().mul(i.neg()):this.neg().mul(i).neg();if(i.isNegative())return this.mul(i.neg()).neg();if(this.lt(l)&&i.lt(l))return e(this.toNumber()*i.toNumber(),this.unsigned);var n=this.high>>>16,h=65535&this.high,u=this.low>>>16,o=65535&this.low,g=i.high>>>16,f=65535&i.high,a=i.low>>>16,d=65535&i.low,v=0,w=0,m=0,N=0;return N+=o*d,m+=N>>>16,N&=65535,m+=u*d,w+=m>>>16,m&=65535,m+=o*a,w+=m>>>16,m&=65535,w+=h*d,v+=w>>>16,w&=65535,w+=u*a,v+=w>>>16,w&=65535,w+=o*f,v+=w>>>16,w&=65535,v+=n*d+h*a+u*f+o*g,v&=65535,s(m<<16|N,v<<16|w,this.unsigned)},q.mul=q.multiply,q.divide=function(i){if(t(i)||(i=r(i)),i.isZero())throw Error("division by zero");if(this.isZero())return this.unsigned?v:c;var n,s,h;if(this.unsigned){if(i.unsigned||(i=i.toUnsigned()),i.gt(this))return v;if(i.gt(this.shru(1)))return m;h=v}else{if(this.eq(E)){if(i.eq(w)||i.eq(N))return E;if(i.eq(E))return w;return n=this.shr(1).div(i).shl(1),n.eq(c)?i.isNegative()?w:N:(s=this.sub(i.mul(n)),h=n.add(s.div(i)))}if(i.eq(E))return this.unsigned?v:c;if(this.isNegative())return i.isNegative()?this.neg().div(i.neg()):this.neg().div(i).neg();if(i.isNegative())return this.div(i.neg()).neg();h=c}for(s=this;s.gte(i);){n=Math.max(1,Math.floor(s.toNumber()/i.toNumber()));for(var u=Math.ceil(Math.log(n)/Math.LN2),o=u<=48?1:g(2,u-48),f=e(n),a=f.mul(i);a.isNegative()||a.gt(s);)n-=o,f=e(n,this.unsigned),a=f.mul(i);f.isZero()&&(f=w),h=h.add(f),s=s.sub(a)}return h},q.div=q.divide,q.modulo=function(i){return t(i)||(i=r(i)),this.sub(this.div(i).mul(i))},q.mod=q.modulo,q.not=function(){return s(~this.low,~this.high,this.unsigned)},q.and=function(i){return t(i)||(i=r(i)),s(this.low&i.low,this.high&i.high,this.unsigned)},q.or=function(i){return t(i)||(i=r(i)),s(this.low|i.low,this.high|i.high,this.unsigned)},q.xor=function(i){return t(i)||(i=r(i)),s(this.low^i.low,this.high^i.high,this.unsigned)},q.shiftLeft=function(i){return t(i)&&(i=i.toInt()),0==(i&=63)?this:i<32?s(this.low<>>32-i,this.unsigned):s(0,this.low<>>i|this.high<<32-i,this.high>>i,this.unsigned):s(this.high>>i-32,this.high>=0?0:-1,this.unsigned)},q.shr=q.shiftRight,q.shiftRightUnsigned=function(i){if(t(i)&&(i=i.toInt()),0===(i&=63))return this;var n=this.high;if(i<32){return s(this.low>>>i|n<<32-i,n>>>i,this.unsigned)}return 32===i?s(n,0,this.unsigned):s(n>>>i-32,0,this.unsigned)},q.shru=q.shiftRightUnsigned,q.toSigned=function(){return this.unsigned?s(this.low,this.high,!1):this},q.toUnsigned=function(){return this.unsigned?this:s(this.low,this.high,!0)},q.toBytes=function(i){return i?this.toBytesLE():this.toBytesBE()},q.toBytesLE=function(){var i=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24&255,255&i,i>>>8&255,i>>>16&255,i>>>24&255]},q.toBytesBE=function(){var i=this.high,t=this.low;return[i>>>24&255,i>>>16&255,i>>>8&255,255&i,t>>>24&255,t>>>16&255,t>>>8&255,255&t]},i}); +},{}],24:[function(require,module,exports){ +function defaultSetTimout(){throw new Error("setTimeout has not been defined")}function defaultClearTimeout(){throw new Error("clearTimeout has not been defined")}function runTimeout(e){if(cachedSetTimeout===setTimeout)return setTimeout(e,0);if((cachedSetTimeout===defaultSetTimout||!cachedSetTimeout)&&setTimeout)return cachedSetTimeout=setTimeout,setTimeout(e,0);try{return cachedSetTimeout(e,0)}catch(t){try{return cachedSetTimeout.call(null,e,0)}catch(t){return cachedSetTimeout.call(this,e,0)}}}function runClearTimeout(e){if(cachedClearTimeout===clearTimeout)return clearTimeout(e);if((cachedClearTimeout===defaultClearTimeout||!cachedClearTimeout)&&clearTimeout)return cachedClearTimeout=clearTimeout,clearTimeout(e);try{return cachedClearTimeout(e)}catch(t){try{return cachedClearTimeout.call(null,e)}catch(t){return cachedClearTimeout.call(this,e)}}}function cleanUpNextTick(){draining&¤tQueue&&(draining=!1,currentQueue.length?queue=currentQueue.concat(queue):queueIndex=-1,queue.length&&drainQueue())}function drainQueue(){if(!draining){var e=runTimeout(cleanUpNextTick);draining=!0;for(var t=queue.length;t;){for(currentQueue=queue,queue=[];++queueIndex1)for(var r=1;r]/g,RULE:/^(?:required|optional|repeated|map)$/,TYPE:/^(?:double|float|int32|uint32|sint32|int64|uint64|sint64|fixed32|sfixed32|fixed64|sfixed64|bool|string|bytes)$/,NAME:/^[a-zA-Z_][a-zA-Z_0-9]*$/,TYPEDEF:/^[a-zA-Z][a-zA-Z_0-9]*$/,TYPEREF:/^(?:\.?[a-zA-Z_][a-zA-Z_0-9]*)+$/,FQTYPEREF:/^(?:\.[a-zA-Z][a-zA-Z_0-9]*)+$/,NUMBER:/^-?(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+|([0-9]*(\.[0-9]*)?([Ee][+-]?[0-9]+)?)|inf|nan)$/,NUMBER_DEC:/^(?:[1-9][0-9]*|0)$/,NUMBER_HEX:/^0[xX][0-9a-fA-F]+$/,NUMBER_OCT:/^0[0-7]+$/,NUMBER_FLT:/^([0-9]*(\.[0-9]*)?([Ee][+-]?[0-9]+)?|inf|nan)$/,BOOL:/^(?:true|false)$/i,ID:/^(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+)$/,NEGID:/^\-?(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+)$/,WHITESPACE:/\s/,STRING:/(?:"([^"\\]*(?:\\.[^"\\]*)*)")|(?:'([^'\\]*(?:\\.[^'\\]*)*)')/g,STRING_DQ:/(?:"([^"\\]*(?:\\.[^"\\]*)*)")/g,STRING_SQ:/(?:'([^'\\]*(?:\\.[^'\\]*)*)')/g},i.DotProto=function(e,t){function i(e,i){var r=-1,n=1;if("-"==e.charAt(0)&&(n=-1,e=e.substring(1)),t.NUMBER_DEC.test(e))r=parseInt(e);else if(t.NUMBER_HEX.test(e))r=parseInt(e.substring(2),16);else{if(!t.NUMBER_OCT.test(e))throw Error("illegal id value: "+(0>n?"-":"")+e);r=parseInt(e.substring(1),8)}if(r=n*r|0,!i&&0>r)throw Error("illegal id value: "+(0>n?"-":"")+e);return r}function r(e){var i=1;if("-"==e.charAt(0)&&(i=-1,e=e.substring(1)),t.NUMBER_DEC.test(e))return i*parseInt(e,10);if(t.NUMBER_HEX.test(e))return i*parseInt(e.substring(2),16);if(t.NUMBER_OCT.test(e))return i*parseInt(e.substring(1),8);if("inf"===e)return i*(1/0);if("nan"===e)return NaN;if(t.NUMBER_FLT.test(e))return i*parseFloat(e);throw Error("illegal number value: "+(0>i?"-":"")+e)}function n(e,t,i){"undefined"==typeof e[t]?e[t]=i:(Array.isArray(e[t])||(e[t]=[e[t]]),e[t].push(i))}var s={},o=function(e){this.source=e+"",this.index=0,this.line=1,this.stack=[],this._stringOpen=null},a=o.prototype;a._readString=function(){var e='"'===this._stringOpen?t.STRING_DQ:t.STRING_SQ;e.lastIndex=this.index-1;var i=e.exec(this.source);if(!i)throw Error("unterminated string");return this.index=e.lastIndex,this.stack.push(this._stringOpen),this._stringOpen=null,i[1]},a.next=function(){if(this.stack.length>0)return this.stack.shift();if(this.index>=this.source.length)return null;if(null!==this._stringOpen)return this._readString();var e,i,r;do{for(e=!1;t.WHITESPACE.test(r=this.source.charAt(this.index));)if("\n"===r&&++this.line,++this.index===this.source.length)return null;if("/"===this.source.charAt(this.index))if(++this.index,"/"===this.source.charAt(this.index)){for(;"\n"!==this.source.charAt(++this.index);)if(this.index==this.source.length)return null;++this.index,++this.line,e=!0}else{if("*"!==(r=this.source.charAt(this.index)))return"/";do{if("\n"===r&&++this.line,++this.index===this.source.length)return null;i=r,r=this.source.charAt(this.index)}while("*"!==i||"/"!==r);++this.index,e=!0}}while(e);if(this.index===this.source.length)return null;var n=this.index;t.DELIM.lastIndex=0;var s=t.DELIM.test(this.source.charAt(n++));if(!s)for(;n"),s=this.tn.next(),!t.NAME.test(s))throw Error("illegal message field name: "+s);o.name=s,this.tn.skip("="),o.id=i(this.tn.next()),s=this.tn.peek(),"["===s&&this._parseFieldOptions(o),this.tn.skip(";")}else if(n="undefined"!=typeof n?n:this.tn.next(),"group"===n){var a=this._parseMessage(e,o);if(!/^[A-Z]/.test(a.name))throw Error("illegal group name: "+a.name);o.type=a.name,o.name=a.name.toLowerCase(),this.tn.omit(";")}else{if(!t.TYPE.test(n)&&!t.TYPEREF.test(n))throw Error("illegal message field type: "+n);if(o.type=n,s=this.tn.next(),!t.NAME.test(s))throw Error("illegal message field name: "+s);o.name=s,this.tn.skip("="),o.id=i(this.tn.next()),s=this.tn.peek(),"["===s&&this._parseFieldOptions(o),this.tn.skip(";")}return e.fields.push(o),o},u._parseMessageOneOf=function(e){var i=this.tn.next();if(!t.NAME.test(i))throw Error("illegal oneof name: "+i);var r,n=i,s=[];for(this.tn.skip("{");"}"!==(i=this.tn.next());)r=this._parseMessageField(e,"optional",i),r.oneof=n,s.push(r.id);this.tn.omit(";"),e.oneofs[n]=s},u._parseFieldOptions=function(e){this.tn.skip("[");for(var t,i=!0;"]"!==(t=this.tn.peek());)i||this.tn.skip(","),this._parseOption(e,!0),i=!1;this.tn.next()},u._parseEnum=function(e){var r={name:"",values:[],options:{}},n=this.tn.next();if(!t.NAME.test(n))throw Error("illegal name: "+n);for(r.name=n,this.tn.skip("{");"}"!==(n=this.tn.next());)if("option"===n)this._parseOption(r);else{if(!t.NAME.test(n))throw Error("illegal name: "+n);this.tn.skip("=");var s={name:n,id:i(this.tn.next(),!0)};n=this.tn.peek(),"["===n&&this._parseFieldOptions({options:{}}),this.tn.skip(";"),r.values.push(s)}this.tn.omit(";"),e.enums.push(r)},u._parseExtensions=function(t){var i=this.tn.next(),n=[];"min"===i?n.push(e.ID_MIN):"max"===i?n.push(e.ID_MAX):n.push(r(i)),this.tn.skip("to"),i=this.tn.next(),"min"===i?n.push(e.ID_MIN):"max"===i?n.push(e.ID_MAX):n.push(r(i)),this.tn.skip(";"),t.extensions=n},u._parseExtend=function(e){var i=this.tn.next();if(!t.TYPEREF.test(i))throw Error("illegal extend reference: "+i);var r={ref:i,fields:[]};for(this.tn.skip("{");"}"!==(i=this.tn.next());)if(t.RULE.test(i))this._parseMessageField(r,i);else{if(!t.TYPEREF.test(i))throw Error("illegal extend token: "+i);if(!this.proto3)throw Error("illegal field rule: "+i);this._parseMessageField(r,"optional",i)}return this.tn.omit(";"),e.messages.push(r),r},u.toString=function(){return"Parser at line "+this.tn.line},s.Parser=l,s}(i,i.Lang),i.Reflect=function(t){function i(i){if("string"==typeof i&&(i=t.TYPES[i]),"undefined"==typeof i.defaultValue)throw Error("default value for type "+i.name+" is not supported");return i==t.TYPES.bytes?new e(0):i.defaultValue}function r(e,i){if(e&&"number"==typeof e.low&&"number"==typeof e.high&&"boolean"==typeof e.unsigned&&e.low===e.low&&e.high===e.high)return new t.Long(e.low,e.high,"undefined"==typeof i?e.unsigned:i);if("string"==typeof e)return t.Long.fromString(e,i||!1,10);if("number"==typeof e)return t.Long.fromNumber(e,i||!1);throw Error("not convertible to Long")}function n(e,i){var r=i.readVarint32(),s=7&r,o=r>>>3;switch(s){case t.WIRE_TYPES.VARINT:do r=i.readUint8();while(128===(128&r));break;case t.WIRE_TYPES.BITS64:i.offset+=8;break;case t.WIRE_TYPES.LDELIM:r=i.readVarint32(),i.offset+=r;break;case t.WIRE_TYPES.STARTGROUP:n(o,i);break;case t.WIRE_TYPES.ENDGROUP:if(o===e)return!1;throw Error("Illegal GROUPEND after unknown group: "+o+" ("+e+" expected)");case t.WIRE_TYPES.BITS32:i.offset+=4;break;default:throw Error("Illegal wire type in unknown group "+e+": "+s)}return!0}var s={},o=function(e,t,i){this.builder=e,this.parent=t,this.name=i,this.className},a=o.prototype;a.fqn=function(){for(var e=this.name,t=this;;){if(t=t.parent,null==t)break;e=t.name+"."+e}return e},a.toString=function(e){return(e?this.className+" ":"")+this.fqn()},a.build=function(){throw Error(this.toString(!0)+" cannot be built directly")},s.T=o;var l=function(e,t,i,r,n){o.call(this,e,t,i),this.className="Namespace",this.children=[],this.options=r||{},this.syntax=n||"proto2"},u=l.prototype=Object.create(o.prototype);u.getChildren=function(e){if(e=e||null,null==e)return this.children.slice();for(var t=[],i=0,r=this.children.length;r>i;++i)this.children[i]instanceof e&&t.push(this.children[i]);return t},u.addChild=function(e){var t;if(t=this.getChild(e.name))if(t instanceof p.Field&&t.name!==t.originalName&&null===this.getChild(t.originalName))t.name=t.originalName;else{if(!(e instanceof p.Field&&e.name!==e.originalName&&null===this.getChild(e.originalName)))throw Error("Duplicate name in namespace "+this.toString(!0)+": "+e.name);e.name=e.originalName}this.children.push(e)},u.getChild=function(e){for(var t="number"==typeof e?"id":"name",i=0,r=this.children.length;r>i;++i)if(this.children[i][t]===e)return this.children[i];return null},u.resolve=function(e,t){var i="string"==typeof e?e.split("."):e,r=this,n=0;if(""===i[n]){for(;null!==r.parent;)r=r.parent;n++}var o;do{do{if(!(r instanceof s.Namespace)){r=null;break}if(o=r.getChild(i[n]),!o||!(o instanceof s.T)||t&&!(o instanceof s.Namespace)){r=null;break}r=o,n++}while(nr;++r)e=i[r],e instanceof l&&(t[e.name]=e.build());return Object.defineProperty&&Object.defineProperty(t,"$options",{value:this.buildOpt()}),t},u.buildOpt=function(){for(var e={},t=Object.keys(this.options),i=0,r=t.length;r>i;++i){var n=t[i],s=this.options[t[i]];e[n]=s}return e},u.getOption=function(e){return"undefined"==typeof e?this.options:"undefined"!=typeof this.options[e]?this.options[e]:null},s.Namespace=l;var f=function(e,i,r,n){if(this.type=e,this.resolvedType=i,this.isMapKey=r,this.syntax=n,r&&t.MAP_KEY_TYPES.indexOf(e)<0)throw Error("Invalid map key type: "+e.name)},h=f.prototype;f.defaultFieldValue=i,h.verifyValue=function(i){var n=function(e,t){throw Error("Illegal value for "+this.toString(!0)+" of type "+this.type.name+": "+e+" ("+t+")")}.bind(this);switch(this.type){case t.TYPES.int32:case t.TYPES.sint32:case t.TYPES.sfixed32:return("number"!=typeof i||i===i&&i%1!==0)&&n(typeof i,"not an integer"),i>4294967295?0|i:i;case t.TYPES.uint32:case t.TYPES.fixed32:return("number"!=typeof i||i===i&&i%1!==0)&&n(typeof i,"not an integer"),0>i?i>>>0:i;case t.TYPES.int64:case t.TYPES.sint64:case t.TYPES.sfixed64:if(t.Long)try{return r(i,!1)}catch(s){n(typeof i,s.message)}else n(typeof i,"requires Long.js");case t.TYPES.uint64:case t.TYPES.fixed64:if(t.Long)try{return r(i,!0)}catch(s){n(typeof i,s.message)}else n(typeof i,"requires Long.js");case t.TYPES.bool:return"boolean"!=typeof i&&n(typeof i,"not a boolean"),i;case t.TYPES["float"]:case t.TYPES["double"]:return"number"!=typeof i&&n(typeof i,"not a number"),i;case t.TYPES.string:return"string"==typeof i||i&&i instanceof String||n(typeof i,"not a string"),""+i;case t.TYPES.bytes:return e.isByteBuffer(i)?i:e.wrap(i,"base64");case t.TYPES["enum"]:var o=this.resolvedType.getChildren(t.Reflect.Enum.Value);for(l=0;l4294967295||0>i)&&n(typeof i,"not in range for uint32"),i;n(i,"not a valid enum value");case t.TYPES.group:case t.TYPES.message:if(i&&"object"==typeof i||n(typeof i,"object expected"),i instanceof this.resolvedType.clazz)return i;if(i instanceof t.Builder.Message){var a={};for(var l in i)i.hasOwnProperty(l)&&(a[l]=i[l]);i=a}return new this.resolvedType.clazz(i)}throw Error("[INTERNAL] Illegal value for "+this.toString(!0)+": "+i+" (undefined type "+this.type+")")},h.calculateLength=function(i,r){if(null===r)return 0;var n;switch(this.type){case t.TYPES.int32:return 0>r?e.calculateVarint64(r):e.calculateVarint32(r);case t.TYPES.uint32:return e.calculateVarint32(r);case t.TYPES.sint32:return e.calculateVarint32(e.zigZagEncode32(r));case t.TYPES.fixed32:case t.TYPES.sfixed32:case t.TYPES["float"]:return 4;case t.TYPES.int64:case t.TYPES.uint64:return e.calculateVarint64(r);case t.TYPES.sint64:return e.calculateVarint64(e.zigZagEncode64(r));case t.TYPES.fixed64:case t.TYPES.sfixed64:return 8;case t.TYPES.bool:return 1;case t.TYPES["enum"]:return e.calculateVarint32(r);case t.TYPES["double"]:return 8;case t.TYPES.string:return n=e.calculateUTF8Bytes(r),e.calculateVarint32(n)+n;case t.TYPES.bytes:if(r.remaining()<0)throw Error("Illegal value for "+this.toString(!0)+": "+r.remaining()+" bytes remaining");return e.calculateVarint32(r.remaining())+r.remaining();case t.TYPES.message:return n=this.resolvedType.calculate(r),e.calculateVarint32(n)+n;case t.TYPES.group:return n=this.resolvedType.calculate(r),n+e.calculateVarint32(i<<3|t.WIRE_TYPES.ENDGROUP)}throw Error("[INTERNAL] Illegal value to encode in "+this.toString(!0)+": "+r+" (unknown type)")},h.encodeValue=function(i,r,n){if(null===r)return n;switch(this.type){case t.TYPES.int32:0>r?n.writeVarint64(r):n.writeVarint32(r);break;case t.TYPES.uint32:n.writeVarint32(r);break;case t.TYPES.sint32:n.writeVarint32ZigZag(r);break;case t.TYPES.fixed32:n.writeUint32(r);break;case t.TYPES.sfixed32:n.writeInt32(r);break;case t.TYPES.int64:case t.TYPES.uint64:n.writeVarint64(r);break;case t.TYPES.sint64:n.writeVarint64ZigZag(r);break;case t.TYPES.fixed64:n.writeUint64(r);break;case t.TYPES.sfixed64:n.writeInt64(r);break;case t.TYPES.bool:"string"==typeof r?n.writeVarint32("false"===r.toLowerCase()?0:!!r):n.writeVarint32(r?1:0);break;case t.TYPES["enum"]:n.writeVarint32(r);break;case t.TYPES["float"]:n.writeFloat32(r);break;case t.TYPES["double"]:n.writeFloat64(r);break;case t.TYPES.string:n.writeVString(r);break;case t.TYPES.bytes:if(r.remaining()<0)throw Error("Illegal value for "+this.toString(!0)+": "+r.remaining()+" bytes remaining");var s=r.offset;n.writeVarint32(r.remaining()),n.append(r),r.offset=s;break;case t.TYPES.message:var o=(new e).LE();this.resolvedType.encode(r,o),n.writeVarint32(o.offset),n.append(o.flip());break;case t.TYPES.group:this.resolvedType.encode(r,n),n.writeVarint32(i<<3|t.WIRE_TYPES.ENDGROUP);break;default:throw Error("[INTERNAL] Illegal value to encode in "+this.toString(!0)+": "+r+" (unknown type)")}return n},h.decode=function(e,i,r){if(i!=this.type.wireType)throw Error("Unexpected wire type for element");var n,s;switch(this.type){case t.TYPES.int32:return 0|e.readVarint32();case t.TYPES.uint32:return e.readVarint32()>>>0;case t.TYPES.sint32:return 0|e.readVarint32ZigZag();case t.TYPES.fixed32:return e.readUint32()>>>0;case t.TYPES.sfixed32:return 0|e.readInt32();case t.TYPES.int64:return e.readVarint64();case t.TYPES.uint64:return e.readVarint64().toUnsigned();case t.TYPES.sint64:return e.readVarint64ZigZag();case t.TYPES.fixed64:return e.readUint64();case t.TYPES.sfixed64:return e.readInt64();case t.TYPES.bool:return!!e.readVarint32();case t.TYPES["enum"]:return e.readVarint32();case t.TYPES["float"]:return e.readFloat();case t.TYPES["double"]:return e.readDouble();case t.TYPES.string:return e.readVString();case t.TYPES.bytes:if(s=e.readVarint32(),e.remaining()l;++l)this[s[l].name]=null;for(l=0,u=n.length;u>l;++l){var f=n[l];this[f.name]=f.repeated?[]:f.map?new t.Map(f):null,!f.required&&"proto3"!==i.syntax||null===f.defaultValue||(this[f.name]=f.defaultValue)}if(arguments.length>0){var h;if(1!==arguments.length||null===r||"object"!=typeof r||!("function"!=typeof r.encode||r instanceof o)||Array.isArray(r)||r instanceof t.Map||e.isByteBuffer(r)||r instanceof ArrayBuffer||t.Long&&r instanceof t.Long)for(l=0,u=arguments.length;u>l;++l)"undefined"!=typeof(h=arguments[l])&&this.$set(n[l].name,h);else this.$set(r)}},a=o.prototype=Object.create(t.Builder.Message.prototype);a.add=function(e,r,n){var s=i._fieldsByName[e];if(!n){if(!s)throw Error(this+"#"+e+" is undefined");if(!(s instanceof t.Reflect.Message.Field))throw Error(this+"#"+e+" is not a field: "+s.toString(!0));if(!s.repeated)throw Error(this+"#"+e+" is not a repeated field");r=s.verifyValue(r,!0)}return null===this[e]&&(this[e]=[]),this[e].push(r),this},a.$add=a.add,a.set=function(e,r,n){if(e&&"object"==typeof e){n=r;for(var s in e)e.hasOwnProperty(s)&&"undefined"!=typeof(r=e[s])&&this.$set(s,r,n);return this}var o=i._fieldsByName[e];if(n)this[e]=r;else{if(!o)throw Error(this+"#"+e+" is not a field: undefined");if(!(o instanceof t.Reflect.Message.Field))throw Error(this+"#"+e+" is not a field: "+o.toString(!0));this[o.name]=r=o.verifyValue(r)}if(o&&o.oneof){var a=this[o.oneof.name];null!==r?(null!==a&&a!==o.name&&(this[a]=null),this[o.oneof.name]=o.name):a===e&&(this[o.oneof.name]=null)}return this},a.$set=a.set,a.get=function(e,r){if(r)return this[e];var n=i._fieldsByName[e];if(!(n&&n instanceof t.Reflect.Message.Field))throw Error(this+"#"+e+" is not a field: undefined");if(!(n instanceof t.Reflect.Message.Field))throw Error(this+"#"+e+" is not a field: "+n.toString(!0));return this[n.name]},a.$get=a.get;for(var l=0;ls;s++)if(n=this.children[s],n instanceof m||n instanceof p||n instanceof P){if(r.hasOwnProperty(n.name))throw Error("Illegal reflect child of "+this.toString(!0)+": "+n.toString(!0)+" cannot override static property '"+n.name+"'");r[n.name]=n.build()}else if(n instanceof p.Field)n.build(),this._fields.push(n),this._fieldsById[n.id]=n,this._fieldsByName[n.name]=n;else if(!(n instanceof p.OneOf||n instanceof S))throw Error("Illegal reflect child of "+this.toString(!0)+": "+this.children[s].toString(!0));return this.clazz=r},c.encode=function(e,t,i){for(var r,n,s=null,o=0,a=this._fields.length;a>o;++o)r=this._fields[o],n=e[r.name],r.required&&null===n?null===s&&(s=r):r.encode(i?n:r.verifyValue(n),t,e);if(null!==s){var l=Error("Missing at least one required field for "+this.toString(!0)+": "+s);throw l.encoded=t,l}return t},c.calculate=function(e){for(var t,i,r=0,n=0,s=this._fields.length;s>n;++n){if(t=this._fields[n],i=e[t.name],t.required&&null===i)throw Error("Missing at least one required field for "+this.toString(!0)+": "+t);r+=t.calculate(i,e)}return r},c.decode=function(e,i,r){i="number"==typeof i?i:-1;for(var s,o,a,l,u=e.offset,f=new this.clazz;e.offset0;){if(s=e.readVarint32(),o=7&s,a=s>>>3,o===t.WIRE_TYPES.ENDGROUP){if(a!==r)throw Error("Illegal group end indicator for "+this.toString(!0)+": "+a+" ("+(r?r+" expected":"not a group")+")");break}if(l=this._fieldsById[a]){if(l.repeated&&!l.options.packed)f[l.name].push(l.decode(o,e));else if(l.map){var h=l.decode(o,e);f[l.name].set(h[0],h[1])}else if(f[l.name]=l.decode(o,e), -l.oneof){var p=f[l.oneof.name];null!==p&&p!==l.name&&(f[p]=null),f[l.oneof.name]=l.name}}else switch(o){case t.WIRE_TYPES.VARINT:e.readVarint32();break;case t.WIRE_TYPES.BITS32:e.offset+=4;break;case t.WIRE_TYPES.BITS64:e.offset+=8;break;case t.WIRE_TYPES.LDELIM:var c=e.readVarint32();e.offset+=c;break;case t.WIRE_TYPES.STARTGROUP:for(;n(a,e););break;default:throw Error("Illegal wire type for unknown field "+a+" in "+this.toString(!0)+"#decode: "+o)}}for(var d=0,E=this._fields.length;E>d;++d)if(l=this._fields[d],null===f[l.name])if("proto3"===this.syntax)f[l.name]=l.defaultValue;else{if(l.required){var y=Error("Missing at least one required field for "+this.toString(!0)+": "+l.name);throw y.decoded=f,y}t.populateDefaults&&null!==l.defaultValue&&(f[l.name]=l.defaultValue)}return f},s.Message=p;var d=function(e,i,r,n,s,a,l,u,f,h){o.call(this,e,i,a),this.className="Message.Field",this.required="required"===r,this.repeated="repeated"===r,this.map="map"===r,this.keyType=n||null,this.type=s,this.resolvedType=null,this.id=l,this.options=u||{},this.defaultValue=null,this.oneof=f||null,this.syntax=h||"proto2",this.originalName=this.name,this.element=null,this.keyElement=null,!this.builder.options.convertFieldsToCamelCase||this instanceof p.ExtensionField||(this.name=t.Util.toCamelCase(this.name))},E=d.prototype=Object.create(o.prototype);E.build=function(){this.element=new f(this.type,this.resolvedType,!1,this.syntax),this.map&&(this.keyElement=new f(this.keyType,void 0,!0,this.syntax)),"proto3"!==this.syntax||this.repeated||this.map?"undefined"!=typeof this.options["default"]&&(this.defaultValue=this.verifyValue(this.options["default"])):this.defaultValue=f.defaultFieldValue(this.type)},E.verifyValue=function(e,i){i=i||!1;var r=function(e,t){throw Error("Illegal value for "+this.toString(!0)+" of type "+this.type.name+": "+e+" ("+t+")")}.bind(this);if(null===e)return this.required&&r(typeof e,"required"),"proto3"===this.syntax&&this.type!==t.TYPES.message&&r(typeof e,"proto3 field without field presence cannot be null"),null;var n;if(this.repeated&&!i){Array.isArray(e)||(e=[e]);var s=[];for(n=0;n0;case t.TYPES.bytes:return e.remaining()>0;case t.TYPES["enum"]:return 0!==e;case t.TYPES.message:return null!==e;default:return!0}},E.encode=function(i,r,n){if(null===this.type||"object"!=typeof this.type)throw Error("[INTERNAL] Unresolved type in "+this.toString(!0)+": "+this.type);if(null===i||this.repeated&&0==i.length)return r;try{if(this.repeated){var s;if(this.options.packed&&t.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType)>=0){r.writeVarint32(this.id<<3|t.WIRE_TYPES.LDELIM),r.ensureCapacity(r.offset+=1);var o=r.offset;for(s=0;s1){var u=r.slice(o,r.offset);o+=l-1,r.offset=o,r.append(u)}r.writeVarint32(a,o-l)}else for(s=0;s=0){for(n+=e.calculateVarint32(this.id<<3|t.WIRE_TYPES.LDELIM),o=0,s=0;s=0&&!r){s=i.readVarint32(),s=i.offset+s;for(var a=[];i.offset0;){var h=u.readVarint32();e=7&h;var p=h>>>3;if(1===p)l=this.keyElement.decode(u,e,p);else{if(2!==p)throw Error("Unexpected tag in map field key/value submessage");n=this.element.decode(u,e,p)}}return[l,n]}return this.element.decode(i,e,this.id)},s.Message.Field=d;var y=function(e,t,i,r,n,s,o){d.call(this,e,t,i,null,r,n,s,o),this.extension};y.prototype=Object.create(d.prototype),s.Message.ExtensionField=y;var g=function(e,t,i){o.call(this,e,t,i),this.fields=[]};s.Message.OneOf=g;var m=function(e,t,i,r,n){l.call(this,e,t,i,r,n),this.className="Enum",this.object=null};m.getName=function(e,t){for(var i,r=Object.keys(e),n=0;nn;++n)i[r[n].name]=r[n].id;return Object.defineProperty&&Object.defineProperty(i,"$options",{value:this.buildOpt(),enumerable:!1}),this.object=i},s.Enum=m;var T=function(e,t,i,r){o.call(this,e,t,i),this.className="Enum.Value",this.id=r};T.prototype=Object.create(o.prototype),s.Enum.Value=T;var S=function(e,t,i,r){o.call(this,e,t,i),this.field=r};S.prototype=Object.create(o.prototype),s.Extension=S;var P=function(e,t,i,r){l.call(this,e,t,i,r),this.className="Service",this.clazz=null},w=P.prototype=Object.create(l.prototype);w.build=function(i){return this.clazz&&!i?this.clazz:this.clazz=function(t,i){for(var r=function(e){t.Builder.Service.call(this),this.rpcImpl=e||function(e,t,i){setTimeout(i.bind(this,Error("Not implemented, see: https://github.com/dcodeIO/ProtoBuf.js/wiki/Services")),0)}},n=r.prototype=Object.create(t.Builder.Service.prototype),s=i.getChildren(t.Reflect.Service.RPCMethod),o=0;o0;){if(t=r.pop(),!Array.isArray(t))throw Error("not a valid namespace: "+JSON.stringify(t));for(;t.length>0;){var s=t.shift();if(n.isMessage(s)){var o=new i.Message(this,this.ptr,s.name,s.options,s.isGroup,s.syntax),a={};s.oneofs&&Object.keys(s.oneofs).forEach(function(e){o.addChild(a[e]=new i.Message.OneOf(this,o,e))},this),s.fields&&s.fields.forEach(function(e){if(null!==o.getChild(0|e.id))throw Error("duplicate or invalid field id in "+o.name+": "+e.id);if(e.options&&"object"!=typeof e.options)throw Error("illegal field options in "+o.name+"#"+e.name);var t=null;if("string"==typeof e.oneof&&!(t=a[e.oneof]))throw Error("illegal oneof in "+o.name+"#"+e.name+": "+e.oneof);e=new i.Message.Field(this,o,e.rule,e.keytype,e.type,e.name,e.id,e.options,t,s.syntax),t&&t.fields.push(e),o.addChild(e)},this);var l=[];if(s.enums&&s.enums.forEach(function(e){l.push(e)}),s.messages&&s.messages.forEach(function(e){l.push(e)}),s.services&&s.services.forEach(function(e){l.push(e)}),s.extensions&&(o.extensions=s.extensions,o.extensions[0]e.ID_MAX&&(o.extensions[1]=e.ID_MAX)),this.ptr.addChild(o),l.length>0){r.push(t),t=l,l=null,this.ptr=o,o=null;continue}l=null}else if(n.isEnum(s))o=new i.Enum(this,this.ptr,s.name,s.options,s.syntax),s.values.forEach(function(e){o.addChild(new i.Enum.Value(this,o,e.name,e.id))},this),this.ptr.addChild(o);else if(n.isService(s))o=new i.Service(this,this.ptr,s.name,s.options),Object.keys(s.rpc).forEach(function(e){var t=s.rpc[e];o.addChild(new i.Service.RPCMethod(this,o,e,t.request,t.response,!!t.request_stream,!!t.response_stream,t.options))},this),this.ptr.addChild(o);else{if(!n.isExtend(s))throw Error("not a valid definition: "+JSON.stringify(s));if(o=this.ptr.resolve(s.ref,!0))s.fields.forEach(function(t){if(null!==o.getChild(0|t.id))throw Error("duplicate extended field id in "+o.name+": "+t.id);if(t.ido.extensions[1])throw Error("illegal extended field id in "+o.name+": "+t.id+" ("+o.extensions.join(" to ")+" expected)");var r=t.name;this.options.convertFieldsToCamelCase&&(r=e.Util.toCamelCase(r));var n=new i.Message.ExtensionField(this,o,t.rule,t.type,this.ptr.fqn()+"."+r,t.id,t.options),s=new i.Extension(this,this.ptr,t.name,n);n.extension=s,this.ptr.addChild(s),o.addChild(n)},this);else if(!/\.?google\.protobuf\./.test(s.ref))throw Error("extended message "+s.ref+" is not defined")}s=null,o=null}t=null,this.ptr=this.ptr.parent}return this.resolved=!1,this.result=null,this},s["import"]=function(t,i){var n="/";if("string"==typeof i){if(e.Util.IS_NODE&&(i=require("path").resolve(i)),this.files[i]===!0)return this.reset();this.files[i]=!0}else if("object"==typeof i){var s=i.root;e.Util.IS_NODE&&(s=require("path").resolve(s)),(s.indexOf("\\")>=0||i.file.indexOf("\\")>=0)&&(n="\\");var o=s+n+i.file;if(this.files[o]===!0)return this.reset();this.files[o]=!0}if(t.imports&&t.imports.length>0){var a,l=!1;"object"==typeof i?(this.importRoot=i.root,l=!0,a=this.importRoot,i=i.file,(a.indexOf("\\")>=0||i.indexOf("\\")>=0)&&(n="\\")):"string"==typeof i?this.importRoot?a=this.importRoot:i.indexOf("/")>=0?(a=i.replace(/\/[^\/]*$/,""),""===a&&(a="/")):i.indexOf("\\")>=0?(a=i.replace(/\\[^\\]*$/,""),n="\\"):a=".":a=null;for(var u=0;u]/g,RULE:/^(?:required|optional|repeated|map)$/,TYPE:/^(?:double|float|int32|uint32|sint32|int64|uint64|sint64|fixed32|sfixed32|fixed64|sfixed64|bool|string|bytes)$/,NAME:/^[a-zA-Z_][a-zA-Z_0-9]*$/,TYPEDEF:/^[a-zA-Z][a-zA-Z_0-9]*$/,TYPEREF:/^(?:\.?[a-zA-Z_][a-zA-Z_0-9]*)(?:\.[a-zA-Z_][a-zA-Z_0-9]*)*$/,FQTYPEREF:/^(?:\.[a-zA-Z_][a-zA-Z_0-9]*)+$/,NUMBER:/^-?(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+|([0-9]*(\.[0-9]*)?([Ee][+-]?[0-9]+)?)|inf|nan)$/,NUMBER_DEC:/^(?:[1-9][0-9]*|0)$/,NUMBER_HEX:/^0[xX][0-9a-fA-F]+$/,NUMBER_OCT:/^0[0-7]+$/,NUMBER_FLT:/^([0-9]*(\.[0-9]*)?([Ee][+-]?[0-9]+)?|inf|nan)$/,BOOL:/^(?:true|false)$/i,ID:/^(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+)$/,NEGID:/^\-?(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+)$/,WHITESPACE:/\s/,STRING:/(?:"([^"\\]*(?:\\.[^"\\]*)*)")|(?:'([^'\\]*(?:\\.[^'\\]*)*)')/g,STRING_DQ:/(?:"([^"\\]*(?:\\.[^"\\]*)*)")/g,STRING_SQ:/(?:'([^'\\]*(?:\\.[^'\\]*)*)')/g},i.DotProto=function(e,t){function i(e,i){var r=-1,n=1;if("-"==e.charAt(0)&&(n=-1,e=e.substring(1)),t.NUMBER_DEC.test(e))r=parseInt(e);else if(t.NUMBER_HEX.test(e))r=parseInt(e.substring(2),16);else{if(!t.NUMBER_OCT.test(e))throw Error("illegal id value: "+(n<0?"-":"")+e);r=parseInt(e.substring(1),8)}if(r=n*r|0,!i&&r<0)throw Error("illegal id value: "+(n<0?"-":"")+e);return r}function r(e){var i=1;if("-"==e.charAt(0)&&(i=-1,e=e.substring(1)),t.NUMBER_DEC.test(e))return i*parseInt(e,10);if(t.NUMBER_HEX.test(e))return i*parseInt(e.substring(2),16);if(t.NUMBER_OCT.test(e))return i*parseInt(e.substring(1),8);if("inf"===e)return i*(1/0);if("nan"===e)return NaN;if(t.NUMBER_FLT.test(e))return i*parseFloat(e);throw Error("illegal number value: "+(i<0?"-":"")+e)}function n(e,t,i){void 0===e[t]?e[t]=i:(Array.isArray(e[t])||(e[t]=[e[t]]),e[t].push(i))}var s={},o=function(e){this.source=e+"",this.index=0,this.line=1,this.stack=[],this._stringOpen=null},a=o.prototype;a._readString=function(){var e='"'===this._stringOpen?t.STRING_DQ:t.STRING_SQ;e.lastIndex=this.index-1;var i=e.exec(this.source);if(!i)throw Error("unterminated string");return this.index=e.lastIndex,this.stack.push(this._stringOpen),this._stringOpen=null,i[1]},a.next=function(){if(this.stack.length>0)return this.stack.shift();if(this.index>=this.source.length)return null;if(null!==this._stringOpen)return this._readString();var e,i,r;do{for(e=!1;t.WHITESPACE.test(r=this.source.charAt(this.index));)if("\n"===r&&++this.line,++this.index===this.source.length)return null;if("/"===this.source.charAt(this.index))if(++this.index,"/"===this.source.charAt(this.index)){for(;"\n"!==this.source.charAt(++this.index);)if(this.index==this.source.length)return null;++this.index,++this.line,e=!0}else{if("*"!==(r=this.source.charAt(this.index)))return"/";do{if("\n"===r&&++this.line,++this.index===this.source.length)return null;i=r,r=this.source.charAt(this.index)}while("*"!==i||"/"!==r);++this.index,e=!0}}while(e);if(this.index===this.source.length)return null;var n=this.index;if(t.DELIM.lastIndex=0,!t.DELIM.test(this.source.charAt(n++)))for(;n"),s=this.tn.next(),!t.NAME.test(s))throw Error("illegal message field name: "+s);o.name=s,this.tn.skip("="),o.id=i(this.tn.next()),s=this.tn.peek(),"["===s&&this._parseFieldOptions(o),this.tn.skip(";")}else if("group"===(n=void 0!==n?n:this.tn.next())){var a=this._parseMessage(e,o);if(!/^[A-Z]/.test(a.name))throw Error("illegal group name: "+a.name);o.type=a.name,o.name=a.name.toLowerCase(),this.tn.omit(";")}else{if(!t.TYPE.test(n)&&!t.TYPEREF.test(n))throw Error("illegal message field type: "+n);if(o.type=n,s=this.tn.next(),!t.NAME.test(s))throw Error("illegal message field name: "+s);o.name=s,this.tn.skip("="),o.id=i(this.tn.next()),s=this.tn.peek(),"["===s&&this._parseFieldOptions(o),this.tn.skip(";")}return e.fields.push(o),o},u._parseMessageOneOf=function(e){var i=this.tn.next();if(!t.NAME.test(i))throw Error("illegal oneof name: "+i);var r,n=i,s=[];for(this.tn.skip("{");"}"!==(i=this.tn.next());)r=this._parseMessageField(e,"optional",i),r.oneof=n,s.push(r.id);this.tn.omit(";"),e.oneofs[n]=s},u._parseFieldOptions=function(e){this.tn.skip("[");for(var t=!0;"]"!==this.tn.peek();)t||this.tn.skip(","),this._parseOption(e,!0),t=!1;this.tn.next()},u._parseEnum=function(e){var r={name:"",values:[],options:{}},n=this.tn.next();if(!t.NAME.test(n))throw Error("illegal name: "+n);for(r.name=n,this.tn.skip("{");"}"!==(n=this.tn.next());)if("option"===n)this._parseOption(r);else{if(!t.NAME.test(n))throw Error("illegal name: "+n);this.tn.skip("=");var s={name:n,id:i(this.tn.next(),!0)};n=this.tn.peek(),"["===n&&this._parseFieldOptions({options:{}}),this.tn.skip(";"),r.values.push(s)}this.tn.omit(";"),e.enums.push(r)},u._parseExtensionRanges=function(){var t,i,n,s=[];do{for(i=[];;){switch(t=this.tn.next()){case"min":n=e.ID_MIN;break;case"max":n=e.ID_MAX;break;default:n=r(t)}if(i.push(n),2===i.length)break;if("to"!==this.tn.peek()){i.push(n);break}this.tn.next()}s.push(i)}while(this.tn.omit(","));return this.tn.skip(";"),s},u._parseExtend=function(e){var i=this.tn.next();if(!t.TYPEREF.test(i))throw Error("illegal extend reference: "+i);var r={ref:i,fields:[]};for(this.tn.skip("{");"}"!==(i=this.tn.next());)if(t.RULE.test(i))this._parseMessageField(r,i);else{if(!t.TYPEREF.test(i))throw Error("illegal extend token: "+i);if(!this.proto3)throw Error("illegal field rule: "+i);this._parseMessageField(r,"optional",i)}return this.tn.omit(";"),e.messages.push(r),r},u.toString=function(){return"Parser at line "+this.tn.line},s.Parser=l,s}(i,i.Lang),i.Reflect=function(t){function i(i){if("string"==typeof i&&(i=t.TYPES[i]),void 0===i.defaultValue)throw Error("default value for type "+i.name+" is not supported");return i==t.TYPES.bytes?new e(0):i.defaultValue}function r(e,i){if(e&&"number"==typeof e.low&&"number"==typeof e.high&&"boolean"==typeof e.unsigned&&e.low===e.low&&e.high===e.high)return new t.Long(e.low,e.high,void 0===i?e.unsigned:i);if("string"==typeof e)return t.Long.fromString(e,i||!1,10);if("number"==typeof e)return t.Long.fromNumber(e,i||!1);throw Error("not convertible to Long")}function n(e,i){var r=i.readVarint32(),s=7&r,o=r>>>3;switch(s){case t.WIRE_TYPES.VARINT:do{r=i.readUint8()}while(128==(128&r));break;case t.WIRE_TYPES.BITS64:i.offset+=8;break;case t.WIRE_TYPES.LDELIM:r=i.readVarint32(),i.offset+=r;break;case t.WIRE_TYPES.STARTGROUP:n(o,i);break;case t.WIRE_TYPES.ENDGROUP:if(o===e)return!1;throw Error("Illegal GROUPEND after unknown group: "+o+" ("+e+" expected)");case t.WIRE_TYPES.BITS32:i.offset+=4;break;default:throw Error("Illegal wire type in unknown group "+e+": "+s)}return!0}var s={},o=function(e,t,i){this.builder=e,this.parent=t,this.name=i,this.className},a=o.prototype;a.fqn=function(){for(var e=this.name,t=this;;){if(null==(t=t.parent))break;e=t.name+"."+e}return e},a.toString=function(e){return(e?this.className+" ":"")+this.fqn()},a.build=function(){throw Error(this.toString(!0)+" cannot be built directly")},s.T=o;var l=function(e,t,i,r,n){o.call(this,e,t,i),this.className="Namespace",this.children=[],this.options=r||{},this.syntax=n||"proto2"},u=l.prototype=Object.create(o.prototype);u.getChildren=function(e){if(null==(e=e||null))return this.children.slice();for(var t=[],i=0,r=this.children.length;i4294967295?0|i:i;case t.TYPES.uint32:case t.TYPES.fixed32:return("number"!=typeof i||i===i&&i%1!=0)&&n(typeof i,"not an integer"),i<0?i>>>0:i;case t.TYPES.int64:case t.TYPES.sint64:case t.TYPES.sfixed64:if(t.Long)try{return r(i,!1)}catch(e){n(typeof i,e.message)}else n(typeof i,"requires Long.js");case t.TYPES.uint64:case t.TYPES.fixed64:if(t.Long)try{return r(i,!0)}catch(e){n(typeof i,e.message)}else n(typeof i,"requires Long.js");case t.TYPES.bool:return"boolean"!=typeof i&&n(typeof i,"not a boolean"),i;case t.TYPES.float:case t.TYPES.double:return"number"!=typeof i&&n(typeof i,"not a number"),i;case t.TYPES.string:return"string"==typeof i||i&&i instanceof String||n(typeof i,"not a string"),""+i;case t.TYPES.bytes:return e.isByteBuffer(i)?i:e.wrap(i,"base64");case t.TYPES.enum:var o=this.resolvedType.getChildren(t.Reflect.Enum.Value);for(l=0;l4294967295||i<0)&&n(typeof i,"not in range for uint32"),i;n(i,"not a valid enum value");case t.TYPES.group:case t.TYPES.message:if(i&&"object"==typeof i||n(typeof i,"object expected"),i instanceof this.resolvedType.clazz)return i;if(i instanceof t.Builder.Message){var a={};for(var l in i)i.hasOwnProperty(l)&&(a[l]=i[l]);i=a}return new this.resolvedType.clazz(i)}throw Error("[INTERNAL] Illegal value for "+this.toString(!0)+": "+i+" (undefined type "+this.type+")")},h.calculateLength=function(i,r){if(null===r)return 0;var n;switch(this.type){case t.TYPES.int32:return r<0?e.calculateVarint64(r):e.calculateVarint32(r);case t.TYPES.uint32:return e.calculateVarint32(r);case t.TYPES.sint32:return e.calculateVarint32(e.zigZagEncode32(r));case t.TYPES.fixed32:case t.TYPES.sfixed32:case t.TYPES.float:return 4;case t.TYPES.int64:case t.TYPES.uint64:return e.calculateVarint64(r);case t.TYPES.sint64:return e.calculateVarint64(e.zigZagEncode64(r));case t.TYPES.fixed64:case t.TYPES.sfixed64:return 8;case t.TYPES.bool:return 1;case t.TYPES.enum:return e.calculateVarint32(r);case t.TYPES.double:return 8;case t.TYPES.string:return n=e.calculateUTF8Bytes(r),e.calculateVarint32(n)+n;case t.TYPES.bytes:if(r.remaining()<0)throw Error("Illegal value for "+this.toString(!0)+": "+r.remaining()+" bytes remaining");return e.calculateVarint32(r.remaining())+r.remaining();case t.TYPES.message:return n=this.resolvedType.calculate(r),e.calculateVarint32(n)+n;case t.TYPES.group:return(n=this.resolvedType.calculate(r))+e.calculateVarint32(i<<3|t.WIRE_TYPES.ENDGROUP)}throw Error("[INTERNAL] Illegal value to encode in "+this.toString(!0)+": "+r+" (unknown type)")},h.encodeValue=function(i,r,n){if(null===r)return n;switch(this.type){case t.TYPES.int32:r<0?n.writeVarint64(r):n.writeVarint32(r);break;case t.TYPES.uint32:n.writeVarint32(r);break;case t.TYPES.sint32:n.writeVarint32ZigZag(r);break;case t.TYPES.fixed32:n.writeUint32(r);break;case t.TYPES.sfixed32:n.writeInt32(r);break;case t.TYPES.int64:case t.TYPES.uint64:n.writeVarint64(r);break;case t.TYPES.sint64:n.writeVarint64ZigZag(r);break;case t.TYPES.fixed64:n.writeUint64(r);break;case t.TYPES.sfixed64:n.writeInt64(r);break;case t.TYPES.bool:"string"==typeof r?n.writeVarint32("false"===r.toLowerCase()?0:!!r):n.writeVarint32(r?1:0);break;case t.TYPES.enum:n.writeVarint32(r);break;case t.TYPES.float:n.writeFloat32(r);break;case t.TYPES.double:n.writeFloat64(r);break;case t.TYPES.string:n.writeVString(r);break;case t.TYPES.bytes:if(r.remaining()<0)throw Error("Illegal value for "+this.toString(!0)+": "+r.remaining()+" bytes remaining");var s=r.offset;n.writeVarint32(r.remaining()),n.append(r),r.offset=s;break;case t.TYPES.message:var o=(new e).LE();this.resolvedType.encode(r,o),n.writeVarint32(o.offset),n.append(o.flip());break;case t.TYPES.group:this.resolvedType.encode(r,n),n.writeVarint32(i<<3|t.WIRE_TYPES.ENDGROUP);break;default:throw Error("[INTERNAL] Illegal value to encode in "+this.toString(!0)+": "+r+" (unknown type)")}return n},h.decode=function(e,i,r){if(i!=this.type.wireType)throw Error("Unexpected wire type for element");var n,s;switch(this.type){case t.TYPES.int32:return 0|e.readVarint32();case t.TYPES.uint32:return e.readVarint32()>>>0;case t.TYPES.sint32:return 0|e.readVarint32ZigZag();case t.TYPES.fixed32:return e.readUint32()>>>0;case t.TYPES.sfixed32:return 0|e.readInt32();case t.TYPES.int64:return e.readVarint64();case t.TYPES.uint64:return e.readVarint64().toUnsigned();case t.TYPES.sint64:return e.readVarint64ZigZag();case t.TYPES.fixed64:return e.readUint64();case t.TYPES.sfixed64:return e.readInt64();case t.TYPES.bool:return!!e.readVarint32();case t.TYPES.enum:return e.readVarint32();case t.TYPES.float:return e.readFloat();case t.TYPES.double:return e.readDouble();case t.TYPES.string:return e.readVString();case t.TYPES.bytes:if(s=e.readVarint32(),e.remaining()0){var h;if(1!==arguments.length||null===r||"object"!=typeof r||!("function"!=typeof r.encode||r instanceof o)||Array.isArray(r)||r instanceof t.Map||e.isByteBuffer(r)||r instanceof ArrayBuffer||t.Long&&r instanceof t.Long)for(l=0,u=arguments.length;l0;){if(s=e.readVarint32(),o=7&s,a=s>>>3,o===t.WIRE_TYPES.ENDGROUP){ +if(a!==r)throw Error("Illegal group end indicator for "+this.toString(!0)+": "+a+" ("+(r?r+" expected":"not a group")+")");break}if(l=this._fieldsById[a]){if(l.repeated&&!l.options.packed)f[l.name].push(l.decode(o,e));else if(l.map){var h=l.decode(o,e);f[l.name].set(h[0],h[1])}else if(f[l.name]=l.decode(o,e),l.oneof){var c=f[l.oneof.name];null!==c&&c!==l.name&&(f[c]=null),f[l.oneof.name]=l.name}}else switch(o){case t.WIRE_TYPES.VARINT:e.readVarint32();break;case t.WIRE_TYPES.BITS32:e.offset+=4;break;case t.WIRE_TYPES.BITS64:e.offset+=8;break;case t.WIRE_TYPES.LDELIM:var p=e.readVarint32();e.offset+=p;break;case t.WIRE_TYPES.STARTGROUP:for(;n(a,e););break;default:throw Error("Illegal wire type for unknown field "+a+" in "+this.toString(!0)+"#decode: "+o)}}for(var d=0,E=this._fields.length;d0;case t.TYPES.bytes:return e.remaining()>0;case t.TYPES.enum:return 0!==e;case t.TYPES.message:return null!==e;default:return!0}},E.encode=function(i,r,n){if(null===this.type||"object"!=typeof this.type)throw Error("[INTERNAL] Unresolved type in "+this.toString(!0)+": "+this.type);if(null===i||this.repeated&&0==i.length)return r;try{if(this.repeated){var s;if(this.options.packed&&t.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType)>=0){r.writeVarint32(this.id<<3|t.WIRE_TYPES.LDELIM),r.ensureCapacity(r.offset+=1);var o=r.offset;for(s=0;s1){var u=r.slice(o,r.offset);o+=l-1,r.offset=o,r.append(u)}r.writeVarint32(a,o-l)}else for(s=0;s=0){for(n+=e.calculateVarint32(this.id<<3|t.WIRE_TYPES.LDELIM),o=0,s=0;s=0&&!r){s=i.readVarint32(),s=i.offset+s;for(var o=[];i.offset0;){var u=l.readVarint32();e=7&u;var h=u>>>3;if(1===h)a=this.keyElement.decode(l,e,h);else{if(2!==h)throw Error("Unexpected tag in map field key/value submessage");n=this.element.decode(l,e,h)}}return[a,n]}return this.element.decode(i,e,this.id)},s.Message.Field=d;var y=function(e,t,i,r,n,s,o){d.call(this,e,t,i,null,r,n,s,o),this.extension};y.prototype=Object.create(d.prototype),s.Message.ExtensionField=y;var g=function(e,t,i){o.call(this,e,t,i),this.fields=[]};s.Message.OneOf=g;var m=function(e,t,i,r,n){l.call(this,e,t,i,r,n),this.className="Enum",this.object=null};m.getName=function(e,t){for(var i,r=Object.keys(e),n=0;n0;){if(t=r.pop(),!Array.isArray(t))throw Error("not a valid namespace: "+JSON.stringify(t));for(;t.length>0;){var s=t.shift();if(n.isMessage(s)){var o=new i.Message(this,this.ptr,s.name,s.options,s.isGroup,s.syntax),a={};s.oneofs&&Object.keys(s.oneofs).forEach(function(e){o.addChild(a[e]=new i.Message.OneOf(this,o,e))},this),s.fields&&s.fields.forEach(function(e){if(null!==o.getChild(0|e.id))throw Error("duplicate or invalid field id in "+o.name+": "+e.id);if(e.options&&"object"!=typeof e.options)throw Error("illegal field options in "+o.name+"#"+e.name);var t=null;if("string"==typeof e.oneof&&!(t=a[e.oneof]))throw Error("illegal oneof in "+o.name+"#"+e.name+": "+e.oneof);e=new i.Message.Field(this,o,e.rule,e.keytype,e.type,e.name,e.id,e.options,t,s.syntax),t&&t.fields.push(e),o.addChild(e)},this);var l=[];if(s.enums&&s.enums.forEach(function(e){l.push(e)}),s.messages&&s.messages.forEach(function(e){l.push(e)}),s.services&&s.services.forEach(function(e){l.push(e)}),s.extensions&&("number"==typeof s.extensions[0]?o.extensions=[s.extensions]:o.extensions=s.extensions),this.ptr.addChild(o),l.length>0){r.push(t),t=l,l=null,this.ptr=o,o=null;continue}l=null}else if(n.isEnum(s))o=new i.Enum(this,this.ptr,s.name,s.options,s.syntax),s.values.forEach(function(e){o.addChild(new i.Enum.Value(this,o,e.name,e.id))},this),this.ptr.addChild(o);else if(n.isService(s))o=new i.Service(this,this.ptr,s.name,s.options),Object.keys(s.rpc).forEach(function(e){var t=s.rpc[e];o.addChild(new i.Service.RPCMethod(this,o,e,t.request,t.response,!!t.request_stream,!!t.response_stream,t.options))},this),this.ptr.addChild(o);else{if(!n.isExtend(s))throw Error("not a valid definition: "+JSON.stringify(s));if(o=this.ptr.resolve(s.ref,!0))s.fields.forEach(function(t){if(null!==o.getChild(0|t.id))throw Error("duplicate extended field id in "+o.name+": "+t.id);if(o.extensions){var r=!1;if(o.extensions.forEach(function(e){t.id>=e[0]&&t.id<=e[1]&&(r=!0)}),!r)throw Error("illegal extended field id in "+o.name+": "+t.id+" (not within valid ranges)")}var n=t.name;this.options.convertFieldsToCamelCase&&(n=e.Util.toCamelCase(n));var s=new i.Message.ExtensionField(this,o,t.rule,t.type,this.ptr.fqn()+"."+n,t.id,t.options),a=new i.Extension(this,this.ptr,t.name,s);s.extension=a,this.ptr.addChild(a),o.addChild(s)},this);else if(!/\.?google\.protobuf\./.test(s.ref))throw Error("extended message "+s.ref+" is not defined")}s=null,o=null}t=null,this.ptr=this.ptr.parent}return this.resolved=!1,this.result=null,this},s.import=function(t,i){var n="/";if("string"==typeof i){if(e.Util.IS_NODE&&(i=require("path").resolve(i)),!0===this.files[i])return this.reset();this.files[i]=!0}else if("object"==typeof i){var s=i.root;e.Util.IS_NODE&&(s=require("path").resolve(s)),(s.indexOf("\\")>=0||i.file.indexOf("\\")>=0)&&(n="\\");var o;if(o=e.Util.IS_NODE?require("path").join(s,i.file):s+n+i.file,!0===this.files[o])return this.reset();this.files[o]=!0}if(t.imports&&t.imports.length>0){var a,l=!1;"object"==typeof i?(this.importRoot=i.root,l=!0,a=this.importRoot,i=i.file,(a.indexOf("\\")>=0||i.indexOf("\\")>=0)&&(n="\\")):"string"==typeof i?this.importRoot?a=this.importRoot:i.indexOf("/")>=0?""===(a=i.replace(/\/[^\/]*$/,""))&&(a="/"):i.indexOf("\\")>=0?(a=i.replace(/\\[^\\]*$/,""),n="\\"):a=".":a=null;for(var u=0;u1024&&(t.push(h.apply(String,e)),e.length=0),void Array.prototype.push.apply(e,arguments))}}function i(e,t,r,i,n){var f,o,s=8*n-i-1,h=(1<>1,l=-7,u=r?n-1:0,g=r?-1:1,y=e[t+u];for(u+=g,f=y&(1<<-l)-1,y>>=-l,l+=s;l>0;f=256*f+e[t+u],u+=g,l-=8);for(o=f&(1<<-l)-1,f>>=-l,l+=i;l>0;o=256*o+e[t+u],u+=g,l-=8);if(0===f)f=1-a;else{if(f===h)return o?NaN:(y?-1:1)*(1/0);o+=Math.pow(2,i),f-=a}return(y?-1:1)*o*Math.pow(2,f-i)}function n(e,t,r,i,n,f){var o,s,h,a=8*f-n-1,l=(1<>1,g=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,y=i?0:f-1,b=i?1:-1,w=0>t||0===t&&0>1/t?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=l):(o=Math.floor(Math.log(t)/Math.LN2),t*(h=Math.pow(2,-o))<1&&(o--,h*=2),t+=o+u>=1?g/h:g*Math.pow(2,1-u),t*h>=2&&(o++,h/=2),o+u>=l?(s=0,o=l):o+u>=1?(s=(t*h-1)*Math.pow(2,n),o+=u):(s=t*Math.pow(2,u-1)*Math.pow(2,n),o=0));n>=8;e[r+y]=255&s,y+=b,s/=256,n-=8);for(o=o<0;e[r+y]=255&o,y+=b,o/=256,a-=8);e[r+y-b]|=128*w}var f=function(e,t,r){if("undefined"==typeof e&&(e=f.DEFAULT_CAPACITY),"undefined"==typeof t&&(t=f.DEFAULT_ENDIAN),"undefined"==typeof r&&(r=f.DEFAULT_NOASSERT),!r){if(e=0|e,0>e)throw RangeError("Illegal capacity");t=!!t,r=!!r}this.buffer=0===e?s:new ArrayBuffer(e),this.view=0===e?null:new Uint8Array(this.buffer),this.offset=0,this.markedOffset=-1,this.limit=e,this.littleEndian="undefined"!=typeof t?!!t:!1,this.noAssert=!!r};f.VERSION="5.0.0",f.LITTLE_ENDIAN=!0,f.BIG_ENDIAN=!1,f.DEFAULT_CAPACITY=16,f.DEFAULT_ENDIAN=f.BIG_ENDIAN,f.DEFAULT_NOASSERT=!1,f.Long=e||null;var o=f.prototype;o.__isByteBuffer__,Object.defineProperty(o,"__isByteBuffer__",{value:!0,enumerable:!1,configurable:!1});var s=new ArrayBuffer(0),h=String.fromCharCode;f.accessor=function(){return Uint8Array},f.allocate=function(e,t,r){return new f(e,t,r)},f.concat=function(e,t,r,i){("boolean"==typeof t||"string"!=typeof t)&&(i=r,r=t,t=void 0);for(var n,o=0,s=0,h=e.length;h>s;++s)f.isByteBuffer(e[s])||(e[s]=f.wrap(e[s],t)),n=e[s].limit-e[s].offset,n>0&&(o+=n);if(0===o)return new f(0,r,i);var a,l=new f(o,r,i);for(s=0;h>s;)a=e[s++],n=a.limit-a.offset,0>=n||(l.view.set(a.view.subarray(a.offset,a.limit),l.offset),l.offset+=n);return l.limit=l.offset,l.offset=0,l},f.isByteBuffer=function(e){return(e&&e.__isByteBuffer__)===!0},f.type=function(){return ArrayBuffer},f.wrap=function(e,t,r,i){if("string"!=typeof t&&(i=r,r=t,t=void 0),"string"==typeof e)switch("undefined"==typeof t&&(t="utf8"),t){case"base64":return f.fromBase64(e,r);case"hex":return f.fromHex(e,r);case"binary":return f.fromBinary(e,r);case"utf8":return f.fromUTF8(e,r);case"debug":return f.fromDebug(e,r);default:throw Error("Unsupported encoding: "+t)}if(null===e||"object"!=typeof e)throw TypeError("Illegal buffer");var n;if(f.isByteBuffer(e))return n=o.clone.call(e),n.markedOffset=-1,n;if(e instanceof Uint8Array)n=new f(0,r,i),e.length>0&&(n.buffer=e.buffer,n.offset=e.byteOffset,n.limit=e.byteOffset+e.byteLength,n.view=new Uint8Array(e.buffer));else if(e instanceof ArrayBuffer)n=new f(0,r,i),e.byteLength>0&&(n.buffer=e,n.offset=0,n.limit=e.byteLength,n.view=e.byteLength>0?new Uint8Array(e):null);else{if("[object Array]"!==Object.prototype.toString.call(e))throw TypeError("Illegal buffer");n=new f(e.length,r,i),n.limit=e.length;for(var s=0;s>>=0,0>t||t+e>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+"+e+") <= "+this.buffer.byteLength)}var i=this.slice(t,t+e);return r&&(this.offset+=e),i},o.writeBytes=o.append,o.writeInt8=function(e,t){var r="undefined"==typeof t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e|=0,"number"!=typeof t||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");if(t>>>=0,0>t||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=1;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=1,this.view[t]=e,r&&(this.offset+=1),this},o.writeByte=o.writeInt8,o.readInt8=function(e){var t="undefined"==typeof e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");if(e>>>=0,0>e||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+1) <= "+this.buffer.byteLength)}var r=this.view[e];return 128===(128&r)&&(r=-(255-r+1)),t&&(this.offset+=1),r},o.readByte=o.readInt8,o.writeUint8=function(e,t){var r="undefined"==typeof t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e>>>=0,"number"!=typeof t||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");if(t>>>=0,0>t||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=1;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=1,this.view[t]=e,r&&(this.offset+=1),this},o.writeUInt8=o.writeUint8,o.readUint8=function(e){var t="undefined"==typeof e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");if(e>>>=0,0>e||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+1) <= "+this.buffer.byteLength)}var r=this.view[e];return t&&(this.offset+=1),r},o.readUInt8=o.readUint8,o.writeInt16=function(e,t){var r="undefined"==typeof t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e|=0,"number"!=typeof t||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");if(t>>>=0,0>t||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=2;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=2,this.littleEndian?(this.view[t+1]=(65280&e)>>>8,this.view[t]=255&e):(this.view[t]=(65280&e)>>>8,this.view[t+1]=255&e),r&&(this.offset+=2),this},o.writeShort=o.writeInt16,o.readInt16=function(e){var t="undefined"==typeof e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");if(e>>>=0,0>e||e+2>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+2) <= "+this.buffer.byteLength)}var r=0;return this.littleEndian?(r=this.view[e],r|=this.view[e+1]<<8):(r=this.view[e]<<8,r|=this.view[e+1]),32768===(32768&r)&&(r=-(65535-r+1)),t&&(this.offset+=2),r},o.readShort=o.readInt16,o.writeUint16=function(e,t){var r="undefined"==typeof t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e>>>=0,"number"!=typeof t||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");if(t>>>=0,0>t||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=2;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=2,this.littleEndian?(this.view[t+1]=(65280&e)>>>8,this.view[t]=255&e):(this.view[t]=(65280&e)>>>8,this.view[t+1]=255&e),r&&(this.offset+=2),this},o.writeUInt16=o.writeUint16,o.readUint16=function(e){var t="undefined"==typeof e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");if(e>>>=0,0>e||e+2>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+2) <= "+this.buffer.byteLength)}var r=0;return this.littleEndian?(r=this.view[e],r|=this.view[e+1]<<8):(r=this.view[e]<<8,r|=this.view[e+1]),t&&(this.offset+=2),r},o.readUInt16=o.readUint16,o.writeInt32=function(e,t){var r="undefined"==typeof t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e|=0,"number"!=typeof t||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");if(t>>>=0,0>t||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=4;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=4,this.littleEndian?(this.view[t+3]=e>>>24&255,this.view[t+2]=e>>>16&255,this.view[t+1]=e>>>8&255,this.view[t]=255&e):(this.view[t]=e>>>24&255,this.view[t+1]=e>>>16&255,this.view[t+2]=e>>>8&255,this.view[t+3]=255&e),r&&(this.offset+=4),this},o.writeInt=o.writeInt32,o.readInt32=function(e){var t="undefined"==typeof e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");if(e>>>=0,0>e||e+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+4) <= "+this.buffer.byteLength)}var r=0;return this.littleEndian?(r=this.view[e+2]<<16,r|=this.view[e+1]<<8,r|=this.view[e],r+=this.view[e+3]<<24>>>0):(r=this.view[e+1]<<16,r|=this.view[e+2]<<8,r|=this.view[e+3],r+=this.view[e]<<24>>>0),r|=0,t&&(this.offset+=4),r},o.readInt=o.readInt32,o.writeUint32=function(e,t){var r="undefined"==typeof t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e>>>=0,"number"!=typeof t||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");if(t>>>=0,0>t||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=4;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=4,this.littleEndian?(this.view[t+3]=e>>>24&255,this.view[t+2]=e>>>16&255,this.view[t+1]=e>>>8&255,this.view[t]=255&e):(this.view[t]=e>>>24&255,this.view[t+1]=e>>>16&255,this.view[t+2]=e>>>8&255,this.view[t+3]=255&e),r&&(this.offset+=4),this},o.writeUInt32=o.writeUint32,o.readUint32=function(e){var t="undefined"==typeof e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");if(e>>>=0,0>e||e+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+4) <= "+this.buffer.byteLength)}var r=0;return this.littleEndian?(r=this.view[e+2]<<16,r|=this.view[e+1]<<8,r|=this.view[e],r+=this.view[e+3]<<24>>>0):(r=this.view[e+1]<<16,r|=this.view[e+2]<<8,r|=this.view[e+3],r+=this.view[e]<<24>>>0),t&&(this.offset+=4),r},o.readUInt32=o.readUint32,e&&(o.writeInt64=function(t,r){var i="undefined"==typeof r;if(i&&(r=this.offset),!this.noAssert){if("number"==typeof t)t=e.fromNumber(t);else if("string"==typeof t)t=e.fromString(t);else if(!(t&&t instanceof e))throw TypeError("Illegal value: "+t+" (not an integer or Long)");if("number"!=typeof r||r%1!==0)throw TypeError("Illegal offset: "+r+" (not an integer)");if(r>>>=0,0>r||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}"number"==typeof t?t=e.fromNumber(t):"string"==typeof t&&(t=e.fromString(t)),r+=8;var n=this.buffer.byteLength;r>n&&this.resize((n*=2)>r?n:r),r-=8;var f=t.low,o=t.high;return this.littleEndian?(this.view[r+3]=f>>>24&255,this.view[r+2]=f>>>16&255,this.view[r+1]=f>>>8&255,this.view[r]=255&f,r+=4,this.view[r+3]=o>>>24&255,this.view[r+2]=o>>>16&255,this.view[r+1]=o>>>8&255,this.view[r]=255&o):(this.view[r]=o>>>24&255,this.view[r+1]=o>>>16&255,this.view[r+2]=o>>>8&255,this.view[r+3]=255&o,r+=4,this.view[r]=f>>>24&255,this.view[r+1]=f>>>16&255,this.view[r+2]=f>>>8&255,this.view[r+3]=255&f),i&&(this.offset+=8),this},o.writeLong=o.writeInt64,o.readInt64=function(t){var r="undefined"==typeof t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");if(t>>>=0,0>t||t+8>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+8) <= "+this.buffer.byteLength)}var i=0,n=0;this.littleEndian?(i=this.view[t+2]<<16,i|=this.view[t+1]<<8,i|=this.view[t],i+=this.view[t+3]<<24>>>0,t+=4,n=this.view[t+2]<<16,n|=this.view[t+1]<<8,n|=this.view[t],n+=this.view[t+3]<<24>>>0):(n=this.view[t+1]<<16,n|=this.view[t+2]<<8,n|=this.view[t+3],n+=this.view[t]<<24>>>0,t+=4,i=this.view[t+1]<<16,i|=this.view[t+2]<<8,i|=this.view[t+3],i+=this.view[t]<<24>>>0);var f=new e(i,n,!1);return r&&(this.offset+=8),f},o.readLong=o.readInt64,o.writeUint64=function(t,r){var i="undefined"==typeof r;if(i&&(r=this.offset),!this.noAssert){if("number"==typeof t)t=e.fromNumber(t);else if("string"==typeof t)t=e.fromString(t);else if(!(t&&t instanceof e))throw TypeError("Illegal value: "+t+" (not an integer or Long)");if("number"!=typeof r||r%1!==0)throw TypeError("Illegal offset: "+r+" (not an integer)");if(r>>>=0,0>r||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}"number"==typeof t?t=e.fromNumber(t):"string"==typeof t&&(t=e.fromString(t)),r+=8;var n=this.buffer.byteLength;r>n&&this.resize((n*=2)>r?n:r),r-=8;var f=t.low,o=t.high;return this.littleEndian?(this.view[r+3]=f>>>24&255,this.view[r+2]=f>>>16&255,this.view[r+1]=f>>>8&255,this.view[r]=255&f,r+=4,this.view[r+3]=o>>>24&255,this.view[r+2]=o>>>16&255,this.view[r+1]=o>>>8&255,this.view[r]=255&o):(this.view[r]=o>>>24&255,this.view[r+1]=o>>>16&255,this.view[r+2]=o>>>8&255,this.view[r+3]=255&o,r+=4,this.view[r]=f>>>24&255,this.view[r+1]=f>>>16&255,this.view[r+2]=f>>>8&255,this.view[r+3]=255&f),i&&(this.offset+=8),this},o.writeUInt64=o.writeUint64,o.readUint64=function(t){var r="undefined"==typeof t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");if(t>>>=0,0>t||t+8>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+8) <= "+this.buffer.byteLength)}var i=0,n=0;this.littleEndian?(i=this.view[t+2]<<16,i|=this.view[t+1]<<8,i|=this.view[t],i+=this.view[t+3]<<24>>>0,t+=4,n=this.view[t+2]<<16,n|=this.view[t+1]<<8,n|=this.view[t],n+=this.view[t+3]<<24>>>0):(n=this.view[t+1]<<16,n|=this.view[t+2]<<8,n|=this.view[t+3],n+=this.view[t]<<24>>>0,t+=4,i=this.view[t+1]<<16,i|=this.view[t+2]<<8,i|=this.view[t+3],i+=this.view[t]<<24>>>0);var f=new e(i,n,!0);return r&&(this.offset+=8),f},o.readUInt64=o.readUint64),o.writeFloat32=function(e,t){var r="undefined"==typeof t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e)throw TypeError("Illegal value: "+e+" (not a number)");if("number"!=typeof t||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");if(t>>>=0,0>t||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=4;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=4,n(this.view,e,t,this.littleEndian,23,4),r&&(this.offset+=4),this},o.writeFloat=o.writeFloat32,o.readFloat32=function(e){var t="undefined"==typeof e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");if(e>>>=0,0>e||e+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+4) <= "+this.buffer.byteLength)}var r=i(this.view,e,this.littleEndian,23,4);return t&&(this.offset+=4),r},o.readFloat=o.readFloat32,o.writeFloat64=function(e,t){var r="undefined"==typeof t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e)throw TypeError("Illegal value: "+e+" (not a number)");if("number"!=typeof t||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");if(t>>>=0,0>t||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=8;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=8,n(this.view,e,t,this.littleEndian,52,8),r&&(this.offset+=8),this},o.writeDouble=o.writeFloat64,o.readFloat64=function(e){var t="undefined"==typeof e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");if(e>>>=0,0>e||e+8>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+8) <= "+this.buffer.byteLength)}var r=i(this.view,e,this.littleEndian,52,8);return t&&(this.offset+=8),r},o.readDouble=o.readFloat64,f.MAX_VARINT32_BYTES=5,f.calculateVarint32=function(e){return e>>>=0,128>e?1:16384>e?2:1<<21>e?3:1<<28>e?4:5},f.zigZagEncode32=function(e){return((e|=0)<<1^e>>31)>>>0},f.zigZagDecode32=function(e){return e>>>1^-(1&e)|0},o.writeVarint32=function(e,t){var r="undefined"==typeof t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e|=0,"number"!=typeof t||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");if(t>>>=0,0>t||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}var i,n=f.calculateVarint32(e);t+=n;var o=this.buffer.byteLength;for(t>o&&this.resize((o*=2)>t?o:t),t-=n,e>>>=0;e>=128;)i=127&e|128,this.view[t++]=i,e>>>=7;return this.view[t++]=e,r?(this.offset=t,this):n},o.writeVarint32ZigZag=function(e,t){return this.writeVarint32(f.zigZagEncode32(e),t)},o.readVarint32=function(e){var t="undefined"==typeof e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");if(e>>>=0,0>e||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+1) <= "+this.buffer.byteLength)}var r,i=0,n=0;do{if(!this.noAssert&&e>this.limit){var f=Error("Truncated");throw f.truncated=!0,f}r=this.view[e++],5>i&&(n|=(127&r)<<7*i),++i}while(0!==(128&r));return n|=0,t?(this.offset=e,n):{value:n,length:i}},o.readVarint32ZigZag=function(e){var t=this.readVarint32(e);return"object"==typeof t?t.value=f.zigZagDecode32(t.value):t=f.zigZagDecode32(t),t},e&&(f.MAX_VARINT64_BYTES=10,f.calculateVarint64=function(t){"number"==typeof t?t=e.fromNumber(t):"string"==typeof t&&(t=e.fromString(t));var r=t.toInt()>>>0,i=t.shiftRightUnsigned(28).toInt()>>>0,n=t.shiftRightUnsigned(56).toInt()>>>0;return 0==n?0==i?16384>r?128>r?1:2:1<<21>r?3:4:16384>i?128>i?5:6:1<<21>i?7:8:128>n?9:10},f.zigZagEncode64=function(t){return"number"==typeof t?t=e.fromNumber(t,!1):"string"==typeof t?t=e.fromString(t,!1):t.unsigned!==!1&&(t=t.toSigned()),t.shiftLeft(1).xor(t.shiftRight(63)).toUnsigned()},f.zigZagDecode64=function(t){return"number"==typeof t?t=e.fromNumber(t,!1):"string"==typeof t?t=e.fromString(t,!1):t.unsigned!==!1&&(t=t.toSigned()),t.shiftRightUnsigned(1).xor(t.and(e.ONE).toSigned().negate()).toSigned()},o.writeVarint64=function(t,r){var i="undefined"==typeof r;if(i&&(r=this.offset),!this.noAssert){if("number"==typeof t)t=e.fromNumber(t);else if("string"==typeof t)t=e.fromString(t);else if(!(t&&t instanceof e))throw TypeError("Illegal value: "+t+" (not an integer or Long)");if("number"!=typeof r||r%1!==0)throw TypeError("Illegal offset: "+r+" (not an integer)");if(r>>>=0,0>r||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}"number"==typeof t?t=e.fromNumber(t,!1):"string"==typeof t?t=e.fromString(t,!1):t.unsigned!==!1&&(t=t.toSigned());var n=f.calculateVarint64(t),o=t.toInt()>>>0,s=t.shiftRightUnsigned(28).toInt()>>>0,h=t.shiftRightUnsigned(56).toInt()>>>0;r+=n;var a=this.buffer.byteLength;switch(r>a&&this.resize((a*=2)>r?a:r),r-=n,n){case 10:this.view[r+9]=h>>>7&1;case 9:this.view[r+8]=9!==n?128|h:127&h;case 8:this.view[r+7]=8!==n?s>>>21|128:s>>>21&127;case 7:this.view[r+6]=7!==n?s>>>14|128:s>>>14&127;case 6:this.view[r+5]=6!==n?s>>>7|128:s>>>7&127;case 5:this.view[r+4]=5!==n?128|s:127&s;case 4:this.view[r+3]=4!==n?o>>>21|128:o>>>21&127;case 3:this.view[r+2]=3!==n?o>>>14|128:o>>>14&127;case 2:this.view[r+1]=2!==n?o>>>7|128:o>>>7&127;case 1:this.view[r]=1!==n?128|o:127&o}return i?(this.offset+=n,this):n},o.writeVarint64ZigZag=function(e,t){return this.writeVarint64(f.zigZagEncode64(e),t)},o.readVarint64=function(t){var r="undefined"==typeof t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!==0)throw TypeError("Illegal offset: "+t+" (not an integer)");if(t>>>=0,0>t||t+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+1) <= "+this.buffer.byteLength)}var i=t,n=0,f=0,o=0,s=0;if(s=this.view[t++],n=127&s,128&s&&(s=this.view[t++],n|=(127&s)<<7,(128&s||this.noAssert&&"undefined"==typeof s)&&(s=this.view[t++],n|=(127&s)<<14,(128&s||this.noAssert&&"undefined"==typeof s)&&(s=this.view[t++],n|=(127&s)<<21,(128&s||this.noAssert&&"undefined"==typeof s)&&(s=this.view[t++],f=127&s,(128&s||this.noAssert&&"undefined"==typeof s)&&(s=this.view[t++],f|=(127&s)<<7,(128&s||this.noAssert&&"undefined"==typeof s)&&(s=this.view[t++],f|=(127&s)<<14,(128&s||this.noAssert&&"undefined"==typeof s)&&(s=this.view[t++],f|=(127&s)<<21,(128&s||this.noAssert&&"undefined"==typeof s)&&(s=this.view[t++],o=127&s,(128&s||this.noAssert&&"undefined"==typeof s)&&(s=this.view[t++],o|=(127&s)<<7,128&s||this.noAssert&&"undefined"==typeof s))))))))))throw Error("Buffer overrun");var h=e.fromBits(n|f<<28,f>>>4|o<<24,!1);return r?(this.offset=t,h):{value:h,length:t-i}},o.readVarint64ZigZag=function(t){var r=this.readVarint64(t);return r&&r.value instanceof e?r.value=f.zigZagDecode64(r.value):r=f.zigZagDecode64(r),r}),o.writeCString=function(e,r){var i="undefined"==typeof r;i&&(r=this.offset);var n,f=e.length;if(!this.noAssert){if("string"!=typeof e)throw TypeError("Illegal str: Not a string");for(n=0;f>n;++n)if(0===e.charCodeAt(n))throw RangeError("Illegal str: Contains NULL-characters");if("number"!=typeof r||r%1!==0)throw TypeError("Illegal offset: "+r+" (not an integer)");if(r>>>=0,0>r||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}f=l.calculateUTF16asUTF8(t(e))[1],r+=f+1;var o=this.buffer.byteLength;return r>o&&this.resize((o*=2)>r?o:r),r-=f+1,l.encodeUTF16toUTF8(t(e),function(e){this.view[r++]=e}.bind(this)),this.view[r++]=0,i?(this.offset=r,this):f},o.readCString=function(e){var t="undefined"==typeof e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");if(e>>>=0,0>e||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+1) <= "+this.buffer.byteLength)}var i,n=e,f=-1;return l.decodeUTF8toUTF16(function(){if(0===f)return null;if(e>=this.limit)throw RangeError("Illegal range: Truncated data, "+e+" < "+this.limit);return f=this.view[e++],0===f?null:f}.bind(this),i=r(),!0),t?(this.offset=e,i()):{string:i(),length:e-n}},o.writeIString=function(e,r){var i="undefined"==typeof r;if(i&&(r=this.offset),!this.noAssert){if("string"!=typeof e)throw TypeError("Illegal str: Not a string");if("number"!=typeof r||r%1!==0)throw TypeError("Illegal offset: "+r+" (not an integer)");if(r>>>=0,0>r||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}var n,f=r;n=l.calculateUTF16asUTF8(t(e),this.noAssert)[1],r+=4+n;var o=this.buffer.byteLength;if(r>o&&this.resize((o*=2)>r?o:r),r-=4+n,this.littleEndian?(this.view[r+3]=n>>>24&255,this.view[r+2]=n>>>16&255,this.view[r+1]=n>>>8&255,this.view[r]=255&n):(this.view[r]=n>>>24&255,this.view[r+1]=n>>>16&255,this.view[r+2]=n>>>8&255,this.view[r+3]=255&n),r+=4,l.encodeUTF16toUTF8(t(e),function(e){this.view[r++]=e}.bind(this)),r!==f+4+n)throw RangeError("Illegal range: Truncated data, "+r+" == "+(r+4+n));return i?(this.offset=r,this):r-f},o.readIString=function(e){var t="undefined"==typeof e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");if(e>>>=0,0>e||e+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+4) <= "+this.buffer.byteLength)}var r=e,i=this.readUint32(e),n=this.readUTF8String(i,f.METRICS_BYTES,e+=4);return e+=n.length,t?(this.offset=e,n.string):{string:n.string,length:e-r}},f.METRICS_CHARS="c",f.METRICS_BYTES="b",o.writeUTF8String=function(e,r){var i="undefined"==typeof r;if(i&&(r=this.offset),!this.noAssert){if("number"!=typeof r||r%1!==0)throw TypeError("Illegal offset: "+r+" (not an integer)");if(r>>>=0,0>r||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}var n,f=r;n=l.calculateUTF16asUTF8(t(e))[1],r+=n;var o=this.buffer.byteLength;return r>o&&this.resize((o*=2)>r?o:r),r-=n,l.encodeUTF16toUTF8(t(e),function(e){this.view[r++]=e}.bind(this)),i?(this.offset=r,this):r-f},o.writeString=o.writeUTF8String,f.calculateUTF8Chars=function(e){return l.calculateUTF16asUTF8(t(e))[0]},f.calculateUTF8Bytes=function(e){return l.calculateUTF16asUTF8(t(e))[1]},f.calculateString=f.calculateUTF8Bytes,o.readUTF8String=function(e,t,i){"number"==typeof t&&(i=t,t=void 0);var n="undefined"==typeof i;if(n&&(i=this.offset),"undefined"==typeof t&&(t=f.METRICS_CHARS),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal length: "+e+" (not an integer)");if(e|=0,"number"!=typeof i||i%1!==0)throw TypeError("Illegal offset: "+i+" (not an integer)");if(i>>>=0,0>i||i+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+i+" (+0) <= "+this.buffer.byteLength)}var o,s=0,h=i;if(t===f.METRICS_CHARS){if(o=r(),l.decodeUTF8(function(){return e>s&&i>>=0,0>i||i+e>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+i+" (+"+e+") <= "+this.buffer.byteLength)}var a=i+e;if(l.decodeUTF8toUTF16(function(){return a>i?this.view[i++]:null}.bind(this),o=r(),this.noAssert),i!==a)throw RangeError("Illegal range: Truncated data, "+i+" == "+a);return n?(this.offset=i,o()):{string:o(),length:i-h}}throw TypeError("Unsupported metrics: "+t)},o.readString=o.readUTF8String,o.writeVString=function(e,r){var i="undefined"==typeof r;if(i&&(r=this.offset),!this.noAssert){if("string"!=typeof e)throw TypeError("Illegal str: Not a string");if("number"!=typeof r||r%1!==0)throw TypeError("Illegal offset: "+r+" (not an integer)");if(r>>>=0,0>r||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}var n,o,s=r;n=l.calculateUTF16asUTF8(t(e),this.noAssert)[1],o=f.calculateVarint32(n),r+=o+n;var h=this.buffer.byteLength;if(r>h&&this.resize((h*=2)>r?h:r),r-=o+n,r+=this.writeVarint32(n,r),l.encodeUTF16toUTF8(t(e),function(e){this.view[r++]=e}.bind(this)),r!==s+n+o)throw RangeError("Illegal range: Truncated data, "+r+" == "+(r+n+o));return i?(this.offset=r,this):r-s},o.readVString=function(e){var t="undefined"==typeof e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");if(e>>>=0,0>e||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+1) <= "+this.buffer.byteLength)}var r=e,i=this.readVarint32(e),n=this.readUTF8String(i.value,f.METRICS_BYTES,e+=i.length);return e+=n.length,t?(this.offset=e,n.string):{string:n.string,length:e-r}},o.append=function(e,t,r){("number"==typeof t||"string"!=typeof t)&&(r=t,t=void 0);var i="undefined"==typeof r;if(i&&(r=this.offset),!this.noAssert){if("number"!=typeof r||r%1!==0)throw TypeError("Illegal offset: "+r+" (not an integer)");if(r>>>=0,0>r||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}e instanceof f||(e=f.wrap(e,t));var n=e.limit-e.offset;if(0>=n)return this;r+=n;var o=this.buffer.byteLength;return r>o&&this.resize((o*=2)>r?o:r),r-=n,this.view.set(e.view.subarray(e.offset,e.limit),r),e.offset+=n,i&&(this.offset+=n),this},o.appendTo=function(e,t){return e.append(this,t),this},o.assert=function(e){return this.noAssert=!e,this},o.capacity=function(){return this.buffer.byteLength},o.clear=function(){return this.offset=0,this.limit=this.buffer.byteLength,this.markedOffset=-1,this},o.clone=function(e){var t=new f(0,this.littleEndian,this.noAssert);return e?(t.buffer=new ArrayBuffer(this.buffer.byteLength),t.view=new Uint8Array(t.buffer)):(t.buffer=this.buffer,t.view=this.view),t.offset=this.offset,t.markedOffset=this.markedOffset,t.limit=this.limit,t},o.compact=function(e,t){if("undefined"==typeof e&&(e=this.offset),"undefined"==typeof t&&(t=this.limit),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal begin: Not an integer");if(e>>>=0,"number"!=typeof t||t%1!==0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,0>e||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}if(0===e&&t===this.buffer.byteLength)return this;var r=t-e;if(0===r)return this.buffer=s,this.view=null,this.markedOffset>=0&&(this.markedOffset-=e),this.offset=0,this.limit=0,this;var i=new ArrayBuffer(r),n=new Uint8Array(i);return n.set(this.view.subarray(e,t)),this.buffer=i,this.view=n,this.markedOffset>=0&&(this.markedOffset-=e),this.offset=0,this.limit=r,this},o.copy=function(e,t){if("undefined"==typeof e&&(e=this.offset),"undefined"==typeof t&&(t=this.limit),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal begin: Not an integer");if(e>>>=0,"number"!=typeof t||t%1!==0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,0>e||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}if(e===t)return new f(0,this.littleEndian,this.noAssert);var r=t-e,i=new f(r,this.littleEndian,this.noAssert);return i.offset=0,i.limit=r,i.markedOffset>=0&&(i.markedOffset-=e),this.copyTo(i,0,e,t),i},o.copyTo=function(e,t,r,i){var n,o;if(!this.noAssert&&!f.isByteBuffer(e))throw TypeError("Illegal target: Not a ByteBuffer");if(t=(o="undefined"==typeof t)?e.offset:0|t,r=(n="undefined"==typeof r)?this.offset:0|r,i="undefined"==typeof i?this.limit:0|i,0>t||t>e.buffer.byteLength)throw RangeError("Illegal target range: 0 <= "+t+" <= "+e.buffer.byteLength);if(0>r||i>this.buffer.byteLength)throw RangeError("Illegal source range: 0 <= "+r+" <= "+this.buffer.byteLength);var s=i-r;return 0===s?e:(e.ensureCapacity(t+s),e.view.set(this.view.subarray(r,i),t),n&&(this.offset+=s),o&&(e.offset+=s),this)},o.ensureCapacity=function(e){var t=this.buffer.byteLength;return e>t?this.resize((t*=2)>e?t:e):this},o.fill=function(e,t,r){var i="undefined"==typeof t;if(i&&(t=this.offset),"string"==typeof e&&e.length>0&&(e=e.charCodeAt(0)),"undefined"==typeof t&&(t=this.offset),"undefined"==typeof r&&(r=this.limit),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e|=0,"number"!=typeof t||t%1!==0)throw TypeError("Illegal begin: Not an integer");if(t>>>=0,"number"!=typeof r||r%1!==0)throw TypeError("Illegal end: Not an integer");if(r>>>=0,0>t||t>r||r>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+t+" <= "+r+" <= "+this.buffer.byteLength)}if(t>=r)return this;for(;r>t;)this.view[t++]=e;return i&&(this.offset=t),this},o.flip=function(){return this.limit=this.offset,this.offset=0,this},o.mark=function(e){if(e="undefined"==typeof e?this.offset:e,!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal offset: "+e+" (not an integer)");if(e>>>=0,0>e||e+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+0) <= "+this.buffer.byteLength)}return this.markedOffset=e,this},o.order=function(e){if(!this.noAssert&&"boolean"!=typeof e)throw TypeError("Illegal littleEndian: Not a boolean");return this.littleEndian=!!e,this},o.LE=function(e){ -return this.littleEndian="undefined"!=typeof e?!!e:!0,this},o.BE=function(e){return this.littleEndian="undefined"!=typeof e?!e:!1,this},o.prepend=function(e,t,r){("number"==typeof t||"string"!=typeof t)&&(r=t,t=void 0);var i="undefined"==typeof r;if(i&&(r=this.offset),!this.noAssert){if("number"!=typeof r||r%1!==0)throw TypeError("Illegal offset: "+r+" (not an integer)");if(r>>>=0,0>r||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}e instanceof f||(e=f.wrap(e,t));var n=e.limit-e.offset;if(0>=n)return this;var o=n-r;if(o>0){var s=new ArrayBuffer(this.buffer.byteLength+o),h=new Uint8Array(s);h.set(this.view.subarray(r,this.buffer.byteLength),n),this.buffer=s,this.view=h,this.offset+=o,this.markedOffset>=0&&(this.markedOffset+=o),this.limit+=o,r+=o}else{new Uint8Array(this.buffer)}return this.view.set(e.view.subarray(e.offset,e.limit),r-n),e.offset=e.limit,i&&(this.offset-=n),this},o.prependTo=function(e,t){return e.prepend(this,t),this},o.printDebug=function(e){"function"!=typeof e&&(e=console.log.bind(console)),e(this.toString()+"\n-------------------------------------------------------------------\n"+this.toDebug(!0))},o.remaining=function(){return this.limit-this.offset},o.reset=function(){return this.markedOffset>=0?(this.offset=this.markedOffset,this.markedOffset=-1):this.offset=0,this},o.resize=function(e){if(!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal capacity: "+e+" (not an integer)");if(e|=0,0>e)throw RangeError("Illegal capacity: 0 <= "+e)}if(this.buffer.byteLength>>=0,"number"!=typeof t||t%1!==0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,0>e||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}return e===t?this:(Array.prototype.reverse.call(this.view.subarray(e,t)),this)},o.skip=function(e){if(!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal length: "+e+" (not an integer)");e|=0}var t=this.offset+e;if(!this.noAssert&&(0>t||t>this.buffer.byteLength))throw RangeError("Illegal length: 0 <= "+this.offset+" + "+e+" <= "+this.buffer.byteLength);return this.offset=t,this},o.slice=function(e,t){if("undefined"==typeof e&&(e=this.offset),"undefined"==typeof t&&(t=this.limit),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal begin: Not an integer");if(e>>>=0,"number"!=typeof t||t%1!==0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,0>e||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}var r=this.clone();return r.offset=e,r.limit=t,r},o.toBuffer=function(e){var t=this.offset,r=this.limit;if(!this.noAssert){if("number"!=typeof t||t%1!==0)throw TypeError("Illegal offset: Not an integer");if(t>>>=0,"number"!=typeof r||r%1!==0)throw TypeError("Illegal limit: Not an integer");if(r>>>=0,0>t||t>r||r>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+t+" <= "+r+" <= "+this.buffer.byteLength)}if(!e&&0===t&&r===this.buffer.byteLength)return this.buffer;if(t===r)return s;var i=new ArrayBuffer(r-t);return new Uint8Array(i).set(new Uint8Array(this.buffer).subarray(t,r),0),i},o.toArrayBuffer=o.toBuffer,o.toString=function(e,t,r){if("undefined"==typeof e)return"ByteBufferAB(offset="+this.offset+",markedOffset="+this.markedOffset+",limit="+this.limit+",capacity="+this.capacity()+")";switch("number"==typeof e&&(e="utf8",t=e,r=t),e){case"utf8":return this.toUTF8(t,r);case"base64":return this.toBase64(t,r);case"hex":return this.toHex(t,r);case"binary":return this.toBinary(t,r);case"debug":return this.toDebug();case"columns":return this.toColumns();default:throw Error("Unsupported encoding: "+e)}};var a=function(){for(var e={},t=[65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,43,47],r=[],i=0,n=t.length;n>i;++i)r[t[i]]=i;return e.encode=function(e,r){for(var i,n;null!==(i=e());)r(t[i>>2&63]),n=(3&i)<<4,null!==(i=e())?(n|=i>>4&15,r(t[63&(n|i>>4&15)]),n=(15&i)<<2,null!==(i=e())?(r(t[63&(n|i>>6&3)]),r(t[63&i])):(r(t[63&n]),r(61))):(r(t[63&n]),r(61),r(61))},e.decode=function(e,t){function i(e){throw Error("Illegal character code: "+e)}for(var n,f,o;null!==(n=e());)if(f=r[n],"undefined"==typeof f&&i(n),null!==(n=e())&&(o=r[n],"undefined"==typeof o&&i(n),t(f<<2>>>0|(48&o)>>4),null!==(n=e()))){if(f=r[n],"undefined"==typeof f){if(61===n)break;i(n)}if(t((15&o)<<4>>>0|(60&f)>>2),null!==(n=e())){if(o=r[n],"undefined"==typeof o){if(61===n)break;i(n)}t((3&f)<<6>>>0|o)}}},e.test=function(e){return/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/.test(e)},e}();o.toBase64=function(e,t){if("undefined"==typeof e&&(e=this.offset),"undefined"==typeof t&&(t=this.limit),e=0|e,t=0|t,0>e||t>this.capacity||e>t)throw RangeError("begin, end");var i;return a.encode(function(){return t>e?this.view[e++]:null}.bind(this),i=r()),i()},f.fromBase64=function(e,r){if("string"!=typeof e)throw TypeError("str");var i=new f(e.length/4*3,r),n=0;return a.decode(t(e),function(e){i.view[n++]=e}),i.limit=n,i},f.btoa=function(e){return f.fromBinary(e).toBase64()},f.atob=function(e){return f.fromBase64(e).toBinary()},o.toBinary=function(e,t){if("undefined"==typeof e&&(e=this.offset),"undefined"==typeof t&&(t=this.limit),e|=0,t|=0,0>e||t>this.capacity()||e>t)throw RangeError("begin, end");if(e===t)return"";for(var r=[],i=[];t>e;)r.push(this.view[e++]),r.length>=1024&&(i.push(String.fromCharCode.apply(String,r)),r=[]);return i.join("")+String.fromCharCode.apply(String,r)},f.fromBinary=function(e,t){if("string"!=typeof e)throw TypeError("str");for(var r,i=0,n=e.length,o=new f(n,t);n>i;){if(r=e.charCodeAt(i),r>255)throw RangeError("illegal char code: "+r);o.view[i++]=r}return o.limit=n,o},o.toDebug=function(e){for(var t,r=-1,i=this.buffer.byteLength,n="",f="",o="";i>r;){if(-1!==r&&(t=this.view[r],n+=16>t?"0"+t.toString(16).toUpperCase():t.toString(16).toUpperCase(),e&&(f+=t>32&&127>t?String.fromCharCode(t):".")),++r,e&&r>0&&r%16===0&&r!==i){for(;n.length<51;)n+=" ";o+=n+f+"\n",n=f=""}n+=r===this.offset&&r===this.limit?r===this.markedOffset?"!":"|":r===this.offset?r===this.markedOffset?"[":"<":r===this.limit?r===this.markedOffset?"]":">":r===this.markedOffset?"'":e||0!==r&&r!==i?" ":""}if(e&&" "!==n){for(;n.length<51;)n+=" ";o+=n+f+"\n"}return e?o:n},f.fromDebug=function(e,t,r){for(var i,n,o=e.length,s=new f((o+1)/3|0,t,r),h=0,a=0,l=!1,u=!1,g=!1,y=!1,b=!1;o>h;){switch(i=e.charAt(h++)){case"!":if(!r){if(u||g||y){b=!0;break}u=g=y=!0}s.offset=s.markedOffset=s.limit=a,l=!1;break;case"|":if(!r){if(u||y){b=!0;break}u=y=!0}s.offset=s.limit=a,l=!1;break;case"[":if(!r){if(u||g){b=!0;break}u=g=!0}s.offset=s.markedOffset=a,l=!1;break;case"<":if(!r){if(u){b=!0;break}u=!0}s.offset=a,l=!1;break;case"]":if(!r){if(y||g){b=!0;break}y=g=!0}s.limit=s.markedOffset=a,l=!1;break;case">":if(!r){if(y){b=!0;break}y=!0}s.limit=a,l=!1;break;case"'":if(!r){if(g){b=!0;break}g=!0}s.markedOffset=a,l=!1;break;case" ":l=!1;break;default:if(!r&&l){b=!0;break}if(n=parseInt(i+e.charAt(h++),16),!r&&(isNaN(n)||0>n||n>255))throw TypeError("Illegal str: Not a debug encoded string");s.view[a++]=n,l=!0}if(b)throw TypeError("Illegal str: Invalid symbol at "+h)}if(!r){if(!u||!y)throw TypeError("Illegal str: Missing offset or limit");if(a>>=0,"number"!=typeof t||t%1!==0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,0>e||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}for(var r,i=new Array(t-e);t>e;)r=this.view[e++],16>r?i.push("0",r.toString(16)):i.push(r.toString(16));return i.join("")},f.fromHex=function(e,t,r){if(!r){if("string"!=typeof e)throw TypeError("Illegal str: Not a string");if(e.length%2!==0)throw TypeError("Illegal str: Length not a multiple of 2")}for(var i,n=e.length,o=new f(n/2|0,t),s=0,h=0;n>s;s+=2){if(i=parseInt(e.substring(s,s+2),16),!r&&(!isFinite(i)||0>i||i>255))throw TypeError("Illegal str: Contains non-hex characters");o.view[h++]=i}return o.limit=h,o};var l=function(){var e={};return e.MAX_CODEPOINT=1114111,e.encodeUTF8=function(e,t){var r=null;for("number"==typeof e&&(r=e,e=function(){return null});null!==r||null!==(r=e());)128>r?t(127&r):2048>r?(t(r>>6&31|192),t(63&r|128)):65536>r?(t(r>>12&15|224),t(r>>6&63|128),t(63&r|128)):(t(r>>18&7|240),t(r>>12&63|128),t(r>>6&63|128),t(63&r|128)),r=null},e.decodeUTF8=function(e,t){for(var r,i,n,f,o=function(e){e=e.slice(0,e.indexOf(null));var t=Error(e.toString());throw t.name="TruncatedError",t.bytes=e,t};null!==(r=e());)if(0===(128&r))t(r);else if(192===(224&r))null===(i=e())&&o([r,i]),t((31&r)<<6|63&i);else if(224===(240&r))(null===(i=e())||null===(n=e()))&&o([r,i,n]),t((15&r)<<12|(63&i)<<6|63&n);else{if(240!==(248&r))throw RangeError("Illegal starting byte: "+r);(null===(i=e())||null===(n=e())||null===(f=e()))&&o([r,i,n,f]),t((7&r)<<18|(63&i)<<12|(63&n)<<6|63&f)}},e.UTF16toUTF8=function(e,t){for(var r,i=null;;){if(null===(r=null!==i?i:e()))break;r>=55296&&57343>=r&&null!==(i=e())&&i>=56320&&57343>=i?(t(1024*(r-55296)+i-56320+65536),i=null):t(r)}null!==i&&t(i)},e.UTF8toUTF16=function(e,t){var r=null;for("number"==typeof e&&(r=e,e=function(){return null});null!==r||null!==(r=e());)65535>=r?t(r):(r-=65536,t((r>>10)+55296),t(r%1024+56320)),r=null},e.encodeUTF16toUTF8=function(t,r){e.UTF16toUTF8(t,function(t){e.encodeUTF8(t,r)})},e.decodeUTF8toUTF16=function(t,r){e.decodeUTF8(t,function(t){e.UTF8toUTF16(t,r)})},e.calculateCodePoint=function(e){return 128>e?1:2048>e?2:65536>e?3:4},e.calculateUTF8=function(e){for(var t,r=0;null!==(t=e());)r+=128>t?1:2048>t?2:65536>t?3:4;return r},e.calculateUTF16asUTF8=function(t){var r=0,i=0;return e.UTF16toUTF8(t,function(e){++r,i+=128>e?1:2048>e?2:65536>e?3:4}),[r,i]},e}();return o.toUTF8=function(e,t){if("undefined"==typeof e&&(e=this.offset),"undefined"==typeof t&&(t=this.limit),!this.noAssert){if("number"!=typeof e||e%1!==0)throw TypeError("Illegal begin: Not an integer");if(e>>>=0,"number"!=typeof t||t%1!==0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,0>e||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}var i;try{l.decodeUTF8toUTF16(function(){return t>e?this.view[e++]:null}.bind(this),i=r())}catch(n){if(e!==t)throw RangeError("Illegal range: Truncated data, "+e+" != "+t)}return i()},f.fromUTF8=function(e,r,i){if(!i&&"string"!=typeof e)throw TypeError("Illegal str: Not a string");var n=new f(l.calculateUTF16asUTF8(t(e),!0)[1],r,i),o=0;return l.encodeUTF16toUTF8(t(e),function(e){n.view[o++]=e}),n.limit=o,n},f}); -},{"long":23}],23:[function(require,module,exports){ -!function(i,t){"function"==typeof define&&define.amd?define([],t):"function"==typeof require&&"object"==typeof module&&module&&module.exports?module.exports=t():(i.dcodeIO=i.dcodeIO||{}).Long=t()}(this,function(){"use strict";function i(i,t,n){this.low=0|i,this.high=0|t,this.unsigned=!!n}function t(i){return(i&&i.__isLong__)===!0}function n(i,t){var n,e,h;return t?(i>>>=0,(h=i>=0&&256>i)&&(e=o[i])?e:(n=r(i,0>(0|i)?-1:0,!0),h&&(o[i]=n),n)):(i|=0,(h=i>=-128&&128>i)&&(e=u[i])?e:(n=r(i,0>i?-1:0,!1),h&&(u[i]=n),n))}function e(i,t){if(isNaN(i)||!isFinite(i))return t?w:m;if(t){if(0>i)return w;if(i>=l)return E}else{if(-c>=i)return y;if(i+1>=c)return q}return 0>i?e(-i,t).neg():r(i%d|0,i/d|0,t)}function r(t,n,e){return new i(t,n,e)}function h(i,t,n){if(0===i.length)throw Error("empty string");if("NaN"===i||"Infinity"===i||"+Infinity"===i||"-Infinity"===i)return m;if("number"==typeof t&&(n=t,t=!1),n=n||10,2>n||n>36)throw RangeError("radix");var r;if((r=i.indexOf("-"))>0)throw Error("interior hyphen");if(0===r)return h(i.substring(1),t,n).neg();for(var s=e(g(n,8)),u=m,o=0;of){var d=e(g(n,f));u=u.mul(d).add(e(a))}else u=u.mul(s),u=u.add(e(a))}return u.unsigned=t,u}function s(t){return t instanceof i?t:"number"==typeof t?e(t):"string"==typeof t?h(t):r(t.low,t.high,t.unsigned)}i.__isLong__,Object.defineProperty(i.prototype,"__isLong__",{value:!0,enumerable:!1,configurable:!1}),i.isLong=t;var u={},o={};i.fromInt=n,i.fromNumber=e,i.fromBits=r;var g=Math.pow;i.fromString=h,i.fromValue=s;var f=65536,a=1<<24,d=f*f,l=d*d,c=l/2,v=n(a),m=n(0);i.ZERO=m;var w=n(0,!0);i.UZERO=w;var N=n(1);i.ONE=N;var b=n(1,!0);i.UONE=b;var p=n(-1);i.NEG_ONE=p;var q=r(-1,2147483647,!1);i.MAX_VALUE=q;var E=r(-1,-1,!0);i.MAX_UNSIGNED_VALUE=E;var y=r(0,-2147483648,!1);i.MIN_VALUE=y;var _=i.prototype;return _.toInt=function(){return this.unsigned?this.low>>>0:this.low},_.toNumber=function(){return this.unsigned?(this.high>>>0)*d+(this.low>>>0):this.high*d+(this.low>>>0)},_.toString=function(i){if(i=i||10,2>i||i>36)throw RangeError("radix");if(this.isZero())return"0";if(this.isNegative()){if(this.eq(y)){var t=e(i),n=this.div(t),r=n.mul(t).sub(this);return n.toString(i)+r.toInt().toString(i)}return"-"+this.neg().toString(i)}for(var h=e(g(i,6),this.unsigned),s=this,u="";;){var o=s.div(h),f=s.sub(o.mul(h)).toInt()>>>0,a=f.toString(i);if(s=o,s.isZero())return a+u;for(;a.length<6;)a="0"+a;u=""+a+u}},_.getHighBits=function(){return this.high},_.getHighBitsUnsigned=function(){return this.high>>>0},_.getLowBits=function(){return this.low},_.getLowBitsUnsigned=function(){return this.low>>>0},_.getNumBitsAbs=function(){if(this.isNegative())return this.eq(y)?64:this.neg().getNumBitsAbs();for(var i=0!=this.high?this.high:this.low,t=31;t>0&&0==(i&1<=0},_.isOdd=function(){return 1===(1&this.low)},_.isEven=function(){return 0===(1&this.low)},_.equals=function(i){return t(i)||(i=s(i)),this.unsigned!==i.unsigned&&this.high>>>31===1&&i.high>>>31===1?!1:this.high===i.high&&this.low===i.low},_.eq=_.equals,_.notEquals=function(i){return!this.eq(i)},_.neq=_.notEquals,_.lessThan=function(i){return this.comp(i)<0},_.lt=_.lessThan,_.lessThanOrEqual=function(i){return this.comp(i)<=0},_.lte=_.lessThanOrEqual,_.greaterThan=function(i){return this.comp(i)>0},_.gt=_.greaterThan,_.greaterThanOrEqual=function(i){return this.comp(i)>=0},_.gte=_.greaterThanOrEqual,_.compare=function(i){if(t(i)||(i=s(i)),this.eq(i))return 0;var n=this.isNegative(),e=i.isNegative();return n&&!e?-1:!n&&e?1:this.unsigned?i.high>>>0>this.high>>>0||i.high===this.high&&i.low>>>0>this.low>>>0?-1:1:this.sub(i).isNegative()?-1:1},_.comp=_.compare,_.negate=function(){return!this.unsigned&&this.eq(y)?y:this.not().add(N)},_.neg=_.negate,_.add=function(i){t(i)||(i=s(i));var n=this.high>>>16,e=65535&this.high,h=this.low>>>16,u=65535&this.low,o=i.high>>>16,g=65535&i.high,f=i.low>>>16,a=65535&i.low,d=0,l=0,c=0,v=0;return v+=u+a,c+=v>>>16,v&=65535,c+=h+f,l+=c>>>16,c&=65535,l+=e+g,d+=l>>>16,l&=65535,d+=n+o,d&=65535,r(c<<16|v,d<<16|l,this.unsigned)},_.subtract=function(i){return t(i)||(i=s(i)),this.add(i.neg())},_.sub=_.subtract,_.multiply=function(i){if(this.isZero())return m;if(t(i)||(i=s(i)),i.isZero())return m;if(this.eq(y))return i.isOdd()?y:m;if(i.eq(y))return this.isOdd()?y:m;if(this.isNegative())return i.isNegative()?this.neg().mul(i.neg()):this.neg().mul(i).neg();if(i.isNegative())return this.mul(i.neg()).neg();if(this.lt(v)&&i.lt(v))return e(this.toNumber()*i.toNumber(),this.unsigned);var n=this.high>>>16,h=65535&this.high,u=this.low>>>16,o=65535&this.low,g=i.high>>>16,f=65535&i.high,a=i.low>>>16,d=65535&i.low,l=0,c=0,w=0,N=0;return N+=o*d,w+=N>>>16,N&=65535,w+=u*d,c+=w>>>16,w&=65535,w+=o*a,c+=w>>>16,w&=65535,c+=h*d,l+=c>>>16,c&=65535,c+=u*a,l+=c>>>16,c&=65535,c+=o*f,l+=c>>>16,c&=65535,l+=n*d+h*a+u*f+o*g,l&=65535,r(w<<16|N,l<<16|c,this.unsigned)},_.mul=_.multiply,_.divide=function(i){if(t(i)||(i=s(i)),i.isZero())throw Error("division by zero");if(this.isZero())return this.unsigned?w:m;var n,r,h;if(this.eq(y)){if(i.eq(N)||i.eq(p))return y;if(i.eq(y))return N;var u=this.shr(1);return n=u.div(i).shl(1),n.eq(m)?i.isNegative()?N:p:(r=this.sub(i.mul(n)),h=n.add(r.div(i)))}if(i.eq(y))return this.unsigned?w:m;if(this.isNegative())return i.isNegative()?this.neg().div(i.neg()):this.neg().div(i).neg();if(i.isNegative())return this.div(i.neg()).neg();for(h=m,r=this;r.gte(i);){n=Math.max(1,Math.floor(r.toNumber()/i.toNumber()));for(var o=Math.ceil(Math.log(n)/Math.LN2),f=48>=o?1:g(2,o-48),a=e(n),d=a.mul(i);d.isNegative()||d.gt(r);)n-=f,a=e(n,this.unsigned),d=a.mul(i);a.isZero()&&(a=N),h=h.add(a),r=r.sub(d)}return h},_.div=_.divide,_.modulo=function(i){return t(i)||(i=s(i)),this.sub(this.div(i).mul(i))},_.mod=_.modulo,_.not=function(){return r(~this.low,~this.high,this.unsigned)},_.and=function(i){return t(i)||(i=s(i)),r(this.low&i.low,this.high&i.high,this.unsigned)},_.or=function(i){return t(i)||(i=s(i)),r(this.low|i.low,this.high|i.high,this.unsigned)},_.xor=function(i){return t(i)||(i=s(i)),r(this.low^i.low,this.high^i.high,this.unsigned)},_.shiftLeft=function(i){return t(i)&&(i=i.toInt()),0===(i&=63)?this:32>i?r(this.low<>>32-i,this.unsigned):r(0,this.low<i?r(this.low>>>i|this.high<<32-i,this.high>>i,this.unsigned):r(this.high>>i-32,this.high>=0?0:-1,this.unsigned)},_.shr=_.shiftRight,_.shiftRightUnsigned=function(i){if(t(i)&&(i=i.toInt()),i&=63,0===i)return this;var n=this.high;if(32>i){var e=this.low;return r(e>>>i|n<<32-i,n>>>i,this.unsigned)}return 32===i?r(n,0,this.unsigned):r(n>>>i-32,0,this.unsigned)},_.shru=_.shiftRightUnsigned,_.toSigned=function(){return this.unsigned?r(this.low,this.high,!1):this},_.toUnsigned=function(){return this.unsigned?this:r(this.low,this.high,!0)},i}); -},{}]},{},[18])(18) +},{"_process":24,"bytebuffer":22,"fs":21,"path":21}]},{},[20])(20) }); diff --git a/dist/machinetalk-protobuf.min.js.gz b/dist/machinetalk-protobuf.min.js.gz index a492f4f171850e65dd0971d49d149261220a73c4..1fc558aea4d34a4802d291e57caf1f6fafadcd0b 100644 GIT binary patch literal 61896 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 Ql0(}&-@i`*5z1c%0Jf_92LJ#7 literal 59564 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 a=3}tslVjj+{qNHx{{I1{86w*z0tNtg(nHq( diff --git a/dist/machinetalk-protobuf.min.map.json b/dist/machinetalk-protobuf.min.map.json index aad52e0afd..65a7767489 100644 --- a/dist/machinetalk-protobuf.min.map.json +++ b/dist/machinetalk-protobuf.min.map.json @@ -1 +1 @@ -{"version":3,"sources":["node_modules/browserify/node_modules/browser-pack/_prelude.js","build/js/protoexport.js","build/js/machinetalk/protobuf/emcclass.js","build/js/machinetalk/protobuf/config.js","build/js/machinetalk/protobuf/firmware.js","build/js/machinetalk/protobuf/nanopb.js","build/js/machinetalk/protobuf/preview.js","build/js/machinetalk/protobuf/motcmds.js","build/js/machinetalk/protobuf/test.js","build/js/machinetalk/protobuf/rtapicommand.js","build/js/machinetalk/protobuf/canon.js","build/js/machinetalk/protobuf/log.js","build/js/machinetalk/protobuf/object.js","build/js/machinetalk/protobuf/task.js","build/js/machinetalk/protobuf/types.js","build/js/machinetalk/protobuf/value.js","build/js/machinetalk/protobuf/rtapi_message.js","build/js/machinetalk/protobuf/status.js","build/js/machinetalk/protobuf/message.js","node_modules/protobufjs/dist/protobuf.js","node_modules/browserify/node_modules/process/browser.js","node_modules/protobufjs/node_modules/bytebuffer/dist/bytebuffer.js","node_modules/protobufjs/node_modules/bytebuffer/node_modules/long/dist/long.js"],"names":["module","exports","require","pb","newBuilder","package","options","java_package","messages","name","fields","rule","type","id","default","(nanopb_msgopt).msgid","enums","values","build","(nanopb).max_size","(nanopb).max_count","(nanopb).type","global","factory","define","this","ByteBuffer","isCommonJS","ProtoBuf","Long","VERSION","WIRE_TYPES","VARINT","BITS64","LDELIM","STARTGROUP","ENDGROUP","BITS32","PACKABLE_WIRE_TYPES","TYPES","int32","wireType","defaultValue","uint32","sint32","int64","ZERO","undefined","uint64","UZERO","sint64","bool","double","string","bytes","fixed32","sfixed32","fixed64","sfixed64","float","enum","message","group","MAP_KEY_TYPES","ID_MIN","ID_MAX","convertFieldsToCamelCase","populateAccessors","populateDefaults","Util","IS_NODE","process","XHR","XMLHttpFactories","XMLHttpRequest","ActiveXObject","xhr","i","length","e","Error","fetch","path","callback","fs","readFile","err","data","readFileSync","open","setRequestHeader","overrideMimeType","send","status","responseText","onreadystatechange","readyState","toCamelCase","str","replace","$0","$1","toUpperCase","Lang","DELIM","RULE","TYPE","NAME","TYPEDEF","TYPEREF","FQTYPEREF","NUMBER","NUMBER_DEC","NUMBER_HEX","NUMBER_OCT","NUMBER_FLT","BOOL","ID","NEGID","WHITESPACE","STRING","STRING_DQ","STRING_SQ","DotProto","mkId","value","mayBeNegative","sign","charAt","substring","test","parseInt","mkNumber","val","Infinity","NaN","parseFloat","setOption","Array","isArray","push","Tokenizer","proto","source","index","line","stack","_stringOpen","TokenizerPrototype","prototype","_readString","re","lastIndex","match","exec","next","shift","repeat","prev","end","delim","token","peek","skip","expected","actual","omit","toString","Parser","tn","proto3","ParserPrototype","parse","topLevel","imports","services","head","_parseMessage","_parseEnum","_parseOption","_parseService","_parseExtend","_readValue","mayBeTypeRef","toLowerCase","parent","isList","custom","_parseOptionValue","svc","rpc","_parseServiceRPC","method","request","response","request_stream","response_stream","fld","isGroup","msg","oneofs","_parseFieldOptions","_parseMessageField","_parseMessageOneOf","_parseExtensions","_parseMessageReserved","grp","first","enm","range","ext","ref","Reflect","mkDefault","mkLong","unsigned","low","high","fromString","fromNumber","skipTillGroupEnd","expectedId","buf","tag","readVarint32","readUint8","offset","T","builder","className","TPrototype","fqn","ptr","includeClass","Namespace","syntax","call","children","NamespacePrototype","Object","create","getChildren","slice","k","addChild","child","other","getChild","Message","Field","originalName","nameOrId","key","resolve","qn","excludeNonNamespace","part","split","t","unshift","len","join","ns","defineProperty","buildOpt","opt","keys","getOption","Element","resolvedType","isMapKey","indexOf","ElementPrototype","defaultFieldValue","verifyValue","fail","bind","String","isByteBuffer","wrap","Enum","Value","clazz","Builder","obj","hasOwnProperty","calculateLength","n","calculateVarint64","calculateVarint32","zigZagEncode32","zigZagEncode64","calculateUTF8Bytes","remaining","calculate","encodeValue","buffer","writeVarint64","writeVarint32","writeVarint32ZigZag","writeUint32","writeInt32","writeVarint64ZigZag","writeUint64","writeInt64","writeFloat32","writeFloat64","writeVString","prevOffset","append","bb","LE","encode","flip","decode","nBytes","readVarint32ZigZag","readUint32","readInt32","readVarint64","toUnsigned","readVarint64ZigZag","readUint64","readInt64","readFloat","readDouble","readVString","clone","limit","valueFromString","fromBinary","valueToString","extensions","_fields","_fieldsById","_fieldsByName","MessagePrototype","rebuild","cloneRaw","binaryAsBase64","longsAsStrings","getName","object","toBase64","toBuffer","isLong","fromValue","forEach","v","Map","it","entries","done","keyElem","valueElem","$type","field","OneOf","var_args","repeated","map","required","arguments","ArrayBuffer","$set","add","noAssert","$add","set","keyOrObj","ikey","oneof","currentField","get","$get","ExtensionField","Name","setter","getter","noVerify","isNew","le","littleEndian","encodeDelimited","enc","encodeAB","toArrayBuffer","encodeNB","encode64","encodeHex","toHex","toRaw","encodeJSON","JSON","stringify","decodeDelimited","off","decode64","decodeHex","decodeJSON","Service","Extension","fieldMissing","expectedGroupEndId","start","keyval","keytype","keyType","element","keyElement","FieldPrototype","skipRepeated","res","hasWirePresence","ensureCapacity","varintLen","contents","m","ni","wireTypeOK","msgbuf","extension","EnumPrototype","enumerable","root","ServicePrototype","rpcImpl","setTimeout","RPCMethod","req","resolvedRequestType","TypeError","resolvedResponseType","notABuffer","Method","MethodPrototype","requestName","responseName","requestStream","responseStream","propagateSyntax","resolved","result","files","importRoot","BuilderPrototype","isMessage","def","isMessageField","isEnum","isService","isExtend","reset","namespace","defs","pop","subObj","mtd","json","filename","file","fname","resetRoot","importFilename","$2","base","resolveAll","lookup","arrayIterator","arr","idx","MapPrototype","clear","keyValue","hadKey","entry","strKeys","cb","thisArg","valValue","has","loadProto","loadJson","protoFromString","loadProtoFile","protoFromFile","loadJsonFile","cleanUpNextTick","draining","currentQueue","queue","concat","queueIndex","drainQueue","timeout","run","clearTimeout","Item","fun","array","noop","nextTick","args","apply","title","browser","env","argv","version","versions","on","addListener","once","removeListener","removeAllListeners","emit","binding","cwd","chdir","dir","umask","stringSource","s","charCodeAt","stringDestination","cs","ps","stringFromCharCode","ieee754_read","isLE","mLen","eLen","eMax","eBias","nBits","d","Math","pow","ieee754_write","c","rt","abs","isNaN","floor","log","LN2","capacity","DEFAULT_CAPACITY","DEFAULT_ENDIAN","DEFAULT_NOASSERT","RangeError","EMPTY_BUFFER","view","Uint8Array","markedOffset","LITTLE_ENDIAN","BIG_ENDIAN","ByteBufferPrototype","__isByteBuffer__","configurable","fromCharCode","accessor","allocate","buffers","encoding","bi","subarray","fromBase64","fromHex","fromUTF8","fromDebug","byteOffset","byteLength","readBytes","relative","writeBytes","writeInt8","capacity0","resize","writeByte","readInt8","readByte","writeUint8","capacity1","writeUInt8","readUInt8","writeInt16","capacity2","writeShort","readInt16","readShort","writeUint16","capacity3","writeUInt16","readUint16","readUInt16","capacity4","writeInt","readInt","capacity5","writeUInt32","readUInt32","capacity6","lo","hi","writeLong","readLong","capacity7","writeUInt64","readUInt64","capacity8","writeFloat","readFloat32","capacity9","writeDouble","readFloat64","MAX_VARINT32_BYTES","zigZagDecode32","b","size","capacity10","MAX_VARINT64_BYTES","part0","toInt","part1","shiftRightUnsigned","part2","toSigned","shiftLeft","xor","shiftRight","zigZagDecode64","and","ONE","negate","capacity11","fromBits","writeCString","utfx","calculateUTF16asUTF8","capacity12","encodeUTF16toUTF8","readCString","sd","decodeUTF8toUTF16","writeIString","capacity13","readIString","readUTF8String","METRICS_BYTES","METRICS_CHARS","writeUTF8String","capacity14","writeString","calculateUTF8Chars","calculateString","metrics","decodeUTF8","cp","UTF8toUTF16","readString","l","capacity15","capacity16","appendTo","target","assert","copy","compact","begin","copyTo","targetOffset","sourceOffset","sourceLimit","targetRelative","current","fill","mark","order","BE","bigEndian","prepend","diff","prependTo","printDebug","out","console","toDebug","reverse","forceCopy","toUTF8","toBinary","toColumns","lxiv","aout","ain","src","dst","t1","t2","btoa","atob","b64","chars","parts","charCode","columns","hex","asc","ch","j","rs","ho","hm","hl","isFinite","MAX_CODEPOINT","encodeUTF8","a","UTF16toUTF8","c1","c2","calculateCodePoint","calculateUTF8","fromInt","cachedObj","cache","UINT_CACHE","INT_CACHE","TWO_PWR_64_DBL","MAX_UNSIGNED_VALUE","TWO_PWR_63_DBL","MIN_VALUE","MAX_VALUE","neg","TWO_PWR_32_DBL","lowBits","highBits","radix","p","radixToPower","pow_dbl","min","power","mul","__isLong__","TWO_PWR_16_DBL","TWO_PWR_24_DBL","TWO_PWR_24","UONE","NEG_ONE","LongPrototype","toNumber","isZero","isNegative","eq","radixLong","div","rem1","sub","rem","remDiv","intval","digits","getHighBits","getHighBitsUnsigned","getLowBits","getLowBitsUnsigned","getNumBitsAbs","bit","isPositive","isOdd","isEven","equals","notEquals","neq","lessThan","comp","lt","lessThanOrEqual","lte","greaterThan","gt","greaterThanOrEqual","gte","compare","thisNeg","otherNeg","not","addend","a48","a32","a16","a00","b48","b32","b16","b00","c48","c32","c16","c00","subtract","subtrahend","multiply","multiplier","divide","divisor","approx","halfThis","shr","shl","max","log2","ceil","delta","approxRes","approxRem","modulo","mod","or","numBits","shru"],"mappings":"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","file":"bundle.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n */\r\n\r\n/**\r\n * @license protobuf.js (c) 2013 Daniel Wirtz \r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/protobuf.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (typeof define === 'function' && define[\"amd\"])\r\n define([\"bytebuffer\"], factory);\r\n /* CommonJS */ else if (typeof require === \"function\" && typeof module === \"object\" && module && module[\"exports\"])\r\n module[\"exports\"] = factory(require(\"bytebuffer\"), true);\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"ProtoBuf\"] = factory(global[\"dcodeIO\"][\"ByteBuffer\"]);\r\n\r\n})(this, function(ByteBuffer, isCommonJS) {\r\n \"use strict\";\r\n\r\n /**\r\n * The ProtoBuf namespace.\r\n * @exports ProtoBuf\r\n * @namespace\r\n * @expose\r\n */\r\n var ProtoBuf = {};\r\n\r\n /**\r\n * @type {!function(new: ByteBuffer, ...[*])}\r\n * @expose\r\n */\r\n ProtoBuf.ByteBuffer = ByteBuffer;\r\n\r\n /**\r\n * @type {?function(new: Long, ...[*])}\r\n * @expose\r\n */\r\n ProtoBuf.Long = ByteBuffer.Long || null;\r\n\r\n /**\r\n * ProtoBuf.js version.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.VERSION = \"5.0.0\";\r\n\r\n /**\r\n * Wire types.\r\n * @type {Object.}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES = {};\r\n\r\n /**\r\n * Varint wire type.\r\n * @type {number}\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.VARINT = 0;\r\n\r\n /**\r\n * Fixed 64 bits wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.BITS64 = 1;\r\n\r\n /**\r\n * Length delimited wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.LDELIM = 2;\r\n\r\n /**\r\n * Start group wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.STARTGROUP = 3;\r\n\r\n /**\r\n * End group wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.ENDGROUP = 4;\r\n\r\n /**\r\n * Fixed 32 bits wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.BITS32 = 5;\r\n\r\n /**\r\n * Packable wire types.\r\n * @type {!Array.}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.PACKABLE_WIRE_TYPES = [\r\n ProtoBuf.WIRE_TYPES.VARINT,\r\n ProtoBuf.WIRE_TYPES.BITS64,\r\n ProtoBuf.WIRE_TYPES.BITS32\r\n ];\r\n\r\n /**\r\n * Types.\r\n * @dict\r\n * @type {!Object.}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.TYPES = {\r\n // According to the protobuf spec.\r\n \"int32\": {\r\n name: \"int32\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: 0\r\n },\r\n \"uint32\": {\r\n name: \"uint32\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: 0\r\n },\r\n \"sint32\": {\r\n name: \"sint32\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: 0\r\n },\r\n \"int64\": {\r\n name: \"int64\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.ZERO : undefined\r\n },\r\n \"uint64\": {\r\n name: \"uint64\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.UZERO : undefined\r\n },\r\n \"sint64\": {\r\n name: \"sint64\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.ZERO : undefined\r\n },\r\n \"bool\": {\r\n name: \"bool\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: false\r\n },\r\n \"double\": {\r\n name: \"double\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS64,\r\n defaultValue: 0\r\n },\r\n \"string\": {\r\n name: \"string\",\r\n wireType: ProtoBuf.WIRE_TYPES.LDELIM,\r\n defaultValue: \"\"\r\n },\r\n \"bytes\": {\r\n name: \"bytes\",\r\n wireType: ProtoBuf.WIRE_TYPES.LDELIM,\r\n defaultValue: null // overridden in the code, must be a unique instance\r\n },\r\n \"fixed32\": {\r\n name: \"fixed32\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS32,\r\n defaultValue: 0\r\n },\r\n \"sfixed32\": {\r\n name: \"sfixed32\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS32,\r\n defaultValue: 0\r\n },\r\n \"fixed64\": {\r\n name: \"fixed64\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS64,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.UZERO : undefined\r\n },\r\n \"sfixed64\": {\r\n name: \"sfixed64\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS64,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.ZERO : undefined\r\n },\r\n \"float\": {\r\n name: \"float\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS32,\r\n defaultValue: 0\r\n },\r\n \"enum\": {\r\n name: \"enum\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: 0\r\n },\r\n \"message\": {\r\n name: \"message\",\r\n wireType: ProtoBuf.WIRE_TYPES.LDELIM,\r\n defaultValue: null\r\n },\r\n \"group\": {\r\n name: \"group\",\r\n wireType: ProtoBuf.WIRE_TYPES.STARTGROUP,\r\n defaultValue: null\r\n }\r\n };\r\n\r\n /**\r\n * Valid map key types.\r\n * @type {!Array.>}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.MAP_KEY_TYPES = [\r\n ProtoBuf.TYPES[\"int32\"],\r\n ProtoBuf.TYPES[\"sint32\"],\r\n ProtoBuf.TYPES[\"sfixed32\"],\r\n ProtoBuf.TYPES[\"uint32\"],\r\n ProtoBuf.TYPES[\"fixed32\"],\r\n ProtoBuf.TYPES[\"int64\"],\r\n ProtoBuf.TYPES[\"sint64\"],\r\n ProtoBuf.TYPES[\"sfixed64\"],\r\n ProtoBuf.TYPES[\"uint64\"],\r\n ProtoBuf.TYPES[\"fixed64\"],\r\n ProtoBuf.TYPES[\"bool\"],\r\n ProtoBuf.TYPES[\"string\"],\r\n ProtoBuf.TYPES[\"bytes\"]\r\n ];\r\n\r\n /**\r\n * Minimum field id.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.ID_MIN = 1;\r\n\r\n /**\r\n * Maximum field id.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.ID_MAX = 0x1FFFFFFF;\r\n\r\n /**\r\n * If set to `true`, field names will be converted from underscore notation to camel case. Defaults to `false`.\r\n * Must be set prior to parsing.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ProtoBuf.convertFieldsToCamelCase = false;\r\n\r\n /**\r\n * By default, messages are populated with (setX, set_x) accessors for each field. This can be disabled by\r\n * setting this to `false` prior to building messages.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ProtoBuf.populateAccessors = true;\r\n\r\n /**\r\n * By default, messages are populated with default values if a field is not present on the wire. To disable\r\n * this behavior, set this setting to `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ProtoBuf.populateDefaults = true;\r\n\r\n /**\n * @alias ProtoBuf.Util\n * @expose\n */\n ProtoBuf.Util = (function() {\n \"use strict\";\n\n /**\n * ProtoBuf utilities.\n * @exports ProtoBuf.Util\n * @namespace\n */\n var Util = {};\n\n /**\n * Flag if running in node or not.\n * @type {boolean}\n * @const\n * @expose\n */\n Util.IS_NODE = !!(\n typeof process === 'object' && process+'' === '[object process]' && !process['browser']\n );\n\n /**\n * Constructs a XMLHttpRequest object.\n * @return {XMLHttpRequest}\n * @throws {Error} If XMLHttpRequest is not supported\n * @expose\n */\n Util.XHR = function() {\n // No dependencies please, ref: http://www.quirksmode.org/js/xmlhttp.html\n var XMLHttpFactories = [\n function () {return new XMLHttpRequest()},\n function () {return new ActiveXObject(\"Msxml2.XMLHTTP\")},\n function () {return new ActiveXObject(\"Msxml3.XMLHTTP\")},\n function () {return new ActiveXObject(\"Microsoft.XMLHTTP\")}\n ];\n /** @type {?XMLHttpRequest} */\n var xhr = null;\n for (var i=0;i}\r\n * @expose\r\n */\r\n ProtoBuf.Lang = {\r\n\r\n // Characters always ending a statement\r\n DELIM: /[\\s\\{\\}=;:\\[\\],'\"\\(\\)<>]/g,\r\n\r\n // Field rules\r\n RULE: /^(?:required|optional|repeated|map)$/,\r\n\r\n // Field types\r\n TYPE: /^(?:double|float|int32|uint32|sint32|int64|uint64|sint64|fixed32|sfixed32|fixed64|sfixed64|bool|string|bytes)$/,\r\n\r\n // Names\r\n NAME: /^[a-zA-Z_][a-zA-Z_0-9]*$/,\r\n\r\n // Type definitions\r\n TYPEDEF: /^[a-zA-Z][a-zA-Z_0-9]*$/,\r\n\r\n // Type references\r\n TYPEREF: /^(?:\\.?[a-zA-Z_][a-zA-Z_0-9]*)+$/,\r\n\r\n // Fully qualified type references\r\n FQTYPEREF: /^(?:\\.[a-zA-Z][a-zA-Z_0-9]*)+$/,\r\n\r\n // All numbers\r\n NUMBER: /^-?(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+|([0-9]*(\\.[0-9]*)?([Ee][+-]?[0-9]+)?)|inf|nan)$/,\r\n\r\n // Decimal numbers\r\n NUMBER_DEC: /^(?:[1-9][0-9]*|0)$/,\r\n\r\n // Hexadecimal numbers\r\n NUMBER_HEX: /^0[xX][0-9a-fA-F]+$/,\r\n\r\n // Octal numbers\r\n NUMBER_OCT: /^0[0-7]+$/,\r\n\r\n // Floating point numbers\r\n NUMBER_FLT: /^([0-9]*(\\.[0-9]*)?([Ee][+-]?[0-9]+)?|inf|nan)$/,\r\n\r\n // Booleans\r\n BOOL: /^(?:true|false)$/i,\r\n\r\n // Id numbers\r\n ID: /^(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+)$/,\r\n\r\n // Negative id numbers (enum values)\r\n NEGID: /^\\-?(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+)$/,\r\n\r\n // Whitespaces\r\n WHITESPACE: /\\s/,\r\n\r\n // All strings\r\n STRING: /(?:\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\")|(?:'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)')/g,\r\n\r\n // Double quoted strings\r\n STRING_DQ: /(?:\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\")/g,\r\n\r\n // Single quoted strings\r\n STRING_SQ: /(?:'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)')/g\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.DotProto\r\n * @expose\r\n */\r\n ProtoBuf.DotProto = (function(ProtoBuf, Lang) {\r\n \"use strict\";\r\n\r\n /**\r\n * Utilities to parse .proto files.\r\n * @exports ProtoBuf.DotProto\r\n * @namespace\r\n */\r\n var DotProto = {};\r\n\r\n /**\r\n * Constructs a new Tokenizer.\r\n * @exports ProtoBuf.DotProto.Tokenizer\r\n * @class prototype tokenizer\r\n * @param {string} proto Proto to tokenize\r\n * @constructor\r\n */\r\n var Tokenizer = function(proto) {\r\n\r\n /**\r\n * Source to parse.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.source = proto+\"\";\r\n\r\n /**\r\n * Current index.\r\n * @type {number}\r\n * @expose\r\n */\r\n this.index = 0;\r\n\r\n /**\r\n * Current line.\r\n * @type {number}\r\n * @expose\r\n */\r\n this.line = 1;\r\n\r\n /**\r\n * Token stack.\r\n * @type {!Array.}\r\n * @expose\r\n */\r\n this.stack = [];\r\n\r\n /**\r\n * Opening character of the current string read, if any.\r\n * @type {?string}\r\n * @private\r\n */\r\n this._stringOpen = null;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.DotProto.Tokenizer.prototype\r\n * @inner\r\n */\r\n var TokenizerPrototype = Tokenizer.prototype;\r\n\r\n /**\r\n * Reads a string beginning at the current index.\r\n * @return {string}\r\n * @private\r\n */\r\n TokenizerPrototype._readString = function() {\r\n var re = this._stringOpen === '\"'\r\n ? Lang.STRING_DQ\r\n : Lang.STRING_SQ;\r\n re.lastIndex = this.index - 1; // Include the open quote\r\n var match = re.exec(this.source);\r\n if (!match)\r\n throw Error(\"unterminated string\");\r\n this.index = re.lastIndex;\r\n this.stack.push(this._stringOpen);\r\n this._stringOpen = null;\r\n return match[1];\r\n };\r\n\r\n /**\r\n * Gets the next token and advances by one.\r\n * @return {?string} Token or `null` on EOF\r\n * @expose\r\n */\r\n TokenizerPrototype.next = function() {\r\n if (this.stack.length > 0)\r\n return this.stack.shift();\r\n if (this.index >= this.source.length)\r\n return null;\r\n if (this._stringOpen !== null)\r\n return this._readString();\r\n\r\n var repeat,\r\n prev,\r\n next;\r\n do {\r\n repeat = false;\r\n\r\n // Strip white spaces\r\n while (Lang.WHITESPACE.test(next = this.source.charAt(this.index))) {\r\n if (next === '\\n')\r\n ++this.line;\r\n if (++this.index === this.source.length)\r\n return null;\r\n }\r\n\r\n // Strip comments\r\n if (this.source.charAt(this.index) === '/') {\r\n ++this.index;\r\n if (this.source.charAt(this.index) === '/') { // Line\r\n while (this.source.charAt(++this.index) !== '\\n')\r\n if (this.index == this.source.length)\r\n return null;\r\n ++this.index;\r\n ++this.line;\r\n repeat = true;\r\n } else if ((next = this.source.charAt(this.index)) === '*') { /* Block */\r\n do {\r\n if (next === '\\n')\r\n ++this.line;\r\n if (++this.index === this.source.length)\r\n return null;\r\n prev = next;\r\n next = this.source.charAt(this.index);\r\n } while (prev !== '*' || next !== '/');\r\n ++this.index;\r\n repeat = true;\r\n } else\r\n return '/';\r\n }\r\n } while (repeat);\r\n\r\n if (this.index === this.source.length)\r\n return null;\r\n\r\n // Read the next token\r\n var end = this.index;\r\n Lang.DELIM.lastIndex = 0;\r\n var delim = Lang.DELIM.test(this.source.charAt(end++));\r\n if (!delim)\r\n while(end < this.source.length && !Lang.DELIM.test(this.source.charAt(end)))\r\n ++end;\r\n var token = this.source.substring(this.index, this.index = end);\r\n if (token === '\"' || token === \"'\")\r\n this._stringOpen = token;\r\n return token;\r\n };\r\n\r\n /**\r\n * Peeks for the next token.\r\n * @return {?string} Token or `null` on EOF\r\n * @expose\r\n */\r\n TokenizerPrototype.peek = function() {\r\n if (this.stack.length === 0) {\r\n var token = this.next();\r\n if (token === null)\r\n return null;\r\n this.stack.push(token);\r\n }\r\n return this.stack[0];\r\n };\r\n\r\n /**\r\n * Skips a specific token and throws if it differs.\r\n * @param {string} expected Expected token\r\n * @throws {Error} If the actual token differs\r\n */\r\n TokenizerPrototype.skip = function(expected) {\r\n var actual = this.next();\r\n if (actual !== expected)\r\n throw Error(\"illegal '\"+actual+\"', '\"+expected+\"' expected\");\r\n };\r\n\r\n /**\r\n * Omits an optional token.\r\n * @param {string} expected Expected optional token\r\n * @returns {boolean} `true` if the token exists\r\n */\r\n TokenizerPrototype.omit = function(expected) {\r\n if (this.peek() === expected) {\r\n this.next();\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n /**\r\n * Returns a string representation of this object.\r\n * @return {string} String representation as of \"Tokenizer(index/length)\"\r\n * @expose\r\n */\r\n TokenizerPrototype.toString = function() {\r\n return \"Tokenizer (\"+this.index+\"/\"+this.source.length+\" at line \"+this.line+\")\";\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.DotProto.Tokenizer\r\n * @expose\r\n */\r\n DotProto.Tokenizer = Tokenizer;\r\n\r\n /**\r\n * Constructs a new Parser.\r\n * @exports ProtoBuf.DotProto.Parser\r\n * @class prototype parser\r\n * @param {string} source Source\r\n * @constructor\r\n */\r\n var Parser = function(source) {\r\n\r\n /**\r\n * Tokenizer.\r\n * @type {!ProtoBuf.DotProto.Tokenizer}\r\n * @expose\r\n */\r\n this.tn = new Tokenizer(source);\r\n\r\n /**\r\n * Whether parsing proto3 or not.\r\n * @type {boolean}\r\n */\r\n this.proto3 = false;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.DotProto.Parser.prototype\r\n * @inner\r\n */\r\n var ParserPrototype = Parser.prototype;\r\n\r\n /**\r\n * Parses the source.\r\n * @returns {!Object}\r\n * @throws {Error} If the source cannot be parsed\r\n * @expose\r\n */\r\n ParserPrototype.parse = function() {\r\n var topLevel = {\r\n \"name\": \"[ROOT]\", // temporary\r\n \"package\": null,\r\n \"messages\": [],\r\n \"enums\": [],\r\n \"imports\": [],\r\n \"options\": {},\r\n \"services\": []\r\n // \"syntax\": undefined\r\n };\r\n var token,\r\n head = true;\r\n try {\r\n while (token = this.tn.next()) {\r\n switch (token) {\r\n case 'package':\r\n if (!head || topLevel[\"package\"] !== null)\r\n throw Error(\"unexpected 'package'\");\r\n token = this.tn.next();\r\n if (!Lang.TYPEREF.test(token))\r\n throw Error(\"illegal package name: \" + token);\r\n this.tn.skip(\";\");\r\n topLevel[\"package\"] = token;\r\n break;\r\n case 'import':\r\n if (!head)\r\n throw Error(\"unexpected 'import'\");\r\n token = this.tn.peek();\r\n if (token === \"public\") // ignored\r\n this.tn.next();\r\n token = this._readString();\r\n this.tn.skip(\";\");\r\n topLevel[\"imports\"].push(token);\r\n break;\r\n case 'syntax':\r\n if (!head)\r\n throw Error(\"unexpected 'syntax'\");\r\n this.tn.skip(\"=\");\r\n if ((topLevel[\"syntax\"] = this._readString()) === \"proto3\")\r\n this.proto3 = true;\r\n this.tn.skip(\";\");\r\n break;\r\n case 'message':\r\n this._parseMessage(topLevel, null);\r\n head = false;\r\n break;\r\n case 'enum':\r\n this._parseEnum(topLevel);\r\n head = false;\r\n break;\r\n case 'option':\r\n this._parseOption(topLevel);\r\n break;\r\n case 'service':\r\n this._parseService(topLevel);\r\n break;\r\n case 'extend':\r\n this._parseExtend(topLevel);\r\n break;\r\n default:\r\n throw Error(\"unexpected '\" + token + \"'\");\r\n }\r\n }\r\n } catch (e) {\r\n e.message = \"Parse error at line \"+this.tn.line+\": \" + e.message;\r\n throw e;\r\n }\r\n delete topLevel[\"name\"];\r\n return topLevel;\r\n };\r\n\r\n /**\r\n * Parses the specified source.\r\n * @returns {!Object}\r\n * @throws {Error} If the source cannot be parsed\r\n * @expose\r\n */\r\n Parser.parse = function(source) {\r\n return new Parser(source).parse();\r\n };\r\n\r\n // ----- Conversion ------\r\n\r\n /**\r\n * Converts a numerical string to an id.\r\n * @param {string} value\r\n * @param {boolean=} mayBeNegative\r\n * @returns {number}\r\n * @inner\r\n */\r\n function mkId(value, mayBeNegative) {\r\n var id = -1,\r\n sign = 1;\r\n if (value.charAt(0) == '-') {\r\n sign = -1;\r\n value = value.substring(1);\r\n }\r\n if (Lang.NUMBER_DEC.test(value))\r\n id = parseInt(value);\r\n else if (Lang.NUMBER_HEX.test(value))\r\n id = parseInt(value.substring(2), 16);\r\n else if (Lang.NUMBER_OCT.test(value))\r\n id = parseInt(value.substring(1), 8);\r\n else\r\n throw Error(\"illegal id value: \" + (sign < 0 ? '-' : '') + value);\r\n id = (sign*id)|0; // Force to 32bit\r\n if (!mayBeNegative && id < 0)\r\n throw Error(\"illegal id value: \" + (sign < 0 ? '-' : '') + value);\r\n return id;\r\n }\r\n\r\n /**\r\n * Converts a numerical string to a number.\r\n * @param {string} val\r\n * @returns {number}\r\n * @inner\r\n */\r\n function mkNumber(val) {\r\n var sign = 1;\r\n if (val.charAt(0) == '-') {\r\n sign = -1;\r\n val = val.substring(1);\r\n }\r\n if (Lang.NUMBER_DEC.test(val))\r\n return sign * parseInt(val, 10);\r\n else if (Lang.NUMBER_HEX.test(val))\r\n return sign * parseInt(val.substring(2), 16);\r\n else if (Lang.NUMBER_OCT.test(val))\r\n return sign * parseInt(val.substring(1), 8);\r\n else if (val === 'inf')\r\n return sign * Infinity;\r\n else if (val === 'nan')\r\n return NaN;\r\n else if (Lang.NUMBER_FLT.test(val))\r\n return sign * parseFloat(val);\r\n throw Error(\"illegal number value: \" + (sign < 0 ? '-' : '') + val);\r\n }\r\n\r\n // ----- Reading ------\r\n\r\n /**\r\n * Reads a string.\r\n * @returns {string}\r\n * @private\r\n */\r\n ParserPrototype._readString = function() {\r\n var value = \"\",\r\n token,\r\n delim;\r\n do {\r\n delim = this.tn.next();\r\n if (delim !== \"'\" && delim !== '\"')\r\n throw Error(\"illegal string delimiter: \"+delim);\r\n value += this.tn.next();\r\n this.tn.skip(delim);\r\n token = this.tn.peek();\r\n } while (token === '\"' || token === '\"'); // multi line?\r\n return value;\r\n };\r\n\r\n /**\r\n * Reads a value.\r\n * @param {boolean=} mayBeTypeRef\r\n * @returns {number|boolean|string}\r\n * @private\r\n */\r\n ParserPrototype._readValue = function(mayBeTypeRef) {\r\n var token = this.tn.peek(),\r\n value;\r\n if (token === '\"' || token === \"'\")\r\n return this._readString();\r\n this.tn.next();\r\n if (Lang.NUMBER.test(token))\r\n return mkNumber(token);\r\n if (Lang.BOOL.test(token))\r\n return (token.toLowerCase() === 'true');\r\n if (mayBeTypeRef && Lang.TYPEREF.test(token))\r\n return token;\r\n throw Error(\"illegal value: \"+token);\r\n\r\n };\r\n\r\n // ----- Parsing constructs -----\r\n\r\n /**\r\n * Parses a namespace option.\r\n * @param {!Object} parent Parent definition\r\n * @param {boolean=} isList\r\n * @private\r\n */\r\n ParserPrototype._parseOption = function(parent, isList) {\r\n var token = this.tn.next(),\r\n custom = false;\r\n if (token === '(') {\r\n custom = true;\r\n token = this.tn.next();\r\n }\r\n if (!Lang.TYPEREF.test(token))\r\n // we can allow options of the form google.protobuf.* since they will just get ignored anyways\r\n // if (!/google\\.protobuf\\./.test(token)) // FIXME: Why should that not be a valid typeref?\r\n throw Error(\"illegal option name: \"+token);\r\n var name = token;\r\n if (custom) { // (my_method_option).foo, (my_method_option), some_method_option, (foo.my_option).bar\r\n this.tn.skip(')');\r\n name = '('+name+')';\r\n token = this.tn.peek();\r\n if (Lang.FQTYPEREF.test(token)) {\r\n name += token;\r\n this.tn.next();\r\n }\r\n }\r\n this.tn.skip('=');\r\n this._parseOptionValue(parent, name);\r\n if (!isList)\r\n this.tn.skip(\";\");\r\n };\r\n\r\n /**\r\n * Sets an option on the specified options object.\r\n * @param {!Object.} options\r\n * @param {string} name\r\n * @param {string|number|boolean} value\r\n * @inner\r\n */\r\n function setOption(options, name, value) {\r\n if (typeof options[name] === 'undefined')\r\n options[name] = value;\r\n else {\r\n if (!Array.isArray(options[name]))\r\n options[name] = [ options[name] ];\r\n options[name].push(value);\r\n }\r\n }\r\n\r\n /**\r\n * Parses an option value.\r\n * @param {!Object} parent\r\n * @param {string} name\r\n * @private\r\n */\r\n ParserPrototype._parseOptionValue = function(parent, name) {\r\n var token = this.tn.peek();\r\n if (token !== '{') { // Plain value\r\n setOption(parent[\"options\"], name, this._readValue(true));\r\n } else { // Aggregate options\r\n this.tn.skip(\"{\");\r\n while ((token = this.tn.next()) !== '}') {\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal option name: \" + name + \".\" + token);\r\n if (this.tn.omit(\":\"))\r\n setOption(parent[\"options\"], name + \".\" + token, this._readValue(true));\r\n else\r\n this._parseOptionValue(parent, name + \".\" + token);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Parses a service definition.\r\n * @param {!Object} parent Parent definition\r\n * @private\r\n */\r\n ParserPrototype._parseService = function(parent) {\r\n var token = this.tn.next();\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal service name at line \"+this.tn.line+\": \"+token);\r\n var name = token;\r\n var svc = {\r\n \"name\": name,\r\n \"rpc\": {},\r\n \"options\": {}\r\n };\r\n this.tn.skip(\"{\");\r\n while ((token = this.tn.next()) !== '}') {\r\n if (token === \"option\")\r\n this._parseOption(svc);\r\n else if (token === 'rpc')\r\n this._parseServiceRPC(svc);\r\n else\r\n throw Error(\"illegal service token: \"+token);\r\n }\r\n this.tn.omit(\";\");\r\n parent[\"services\"].push(svc);\r\n };\r\n\r\n /**\r\n * Parses a RPC service definition of the form ['rpc', name, (request), 'returns', (response)].\r\n * @param {!Object} svc Service definition\r\n * @private\r\n */\r\n ParserPrototype._parseServiceRPC = function(svc) {\r\n var type = \"rpc\",\r\n token = this.tn.next();\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal rpc service method name: \"+token);\r\n var name = token;\r\n var method = {\r\n \"request\": null,\r\n \"response\": null,\r\n \"request_stream\": false,\r\n \"response_stream\": false,\r\n \"options\": {}\r\n };\r\n this.tn.skip(\"(\");\r\n token = this.tn.next();\r\n if (token.toLowerCase() === \"stream\") {\r\n method[\"request_stream\"] = true;\r\n token = this.tn.next();\r\n }\r\n if (!Lang.TYPEREF.test(token))\r\n throw Error(\"illegal rpc service request type: \"+token);\r\n method[\"request\"] = token;\r\n this.tn.skip(\")\");\r\n token = this.tn.next();\r\n if (token.toLowerCase() !== \"returns\")\r\n throw Error(\"illegal rpc service request type delimiter: \"+token);\r\n this.tn.skip(\"(\");\r\n token = this.tn.next();\r\n if (token.toLowerCase() === \"stream\") {\r\n method[\"response_stream\"] = true;\r\n token = this.tn.next();\r\n }\r\n method[\"response\"] = token;\r\n this.tn.skip(\")\");\r\n token = this.tn.peek();\r\n if (token === '{') {\r\n this.tn.next();\r\n while ((token = this.tn.next()) !== '}') {\r\n if (token === 'option')\r\n this._parseOption(method);\r\n else\r\n throw Error(\"illegal rpc service token: \" + token);\r\n }\r\n this.tn.omit(\";\");\r\n } else\r\n this.tn.skip(\";\");\r\n if (typeof svc[type] === 'undefined')\r\n svc[type] = {};\r\n svc[type][name] = method;\r\n };\r\n\r\n /**\r\n * Parses a message definition.\r\n * @param {!Object} parent Parent definition\r\n * @param {!Object=} fld Field definition if this is a group\r\n * @returns {!Object}\r\n * @private\r\n */\r\n ParserPrototype._parseMessage = function(parent, fld) {\r\n var isGroup = !!fld,\r\n token = this.tn.next();\r\n var msg = {\r\n \"name\": \"\",\r\n \"fields\": [],\r\n \"enums\": [],\r\n \"messages\": [],\r\n \"options\": {},\r\n \"services\": [],\r\n \"oneofs\": {}\r\n // \"extensions\": undefined\r\n };\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal \"+(isGroup ? \"group\" : \"message\")+\" name: \"+token);\r\n msg[\"name\"] = token;\r\n if (isGroup) {\r\n this.tn.skip(\"=\");\r\n fld[\"id\"] = mkId(this.tn.next());\r\n msg[\"isGroup\"] = true;\r\n }\r\n token = this.tn.peek();\r\n if (token === '[' && fld)\r\n this._parseFieldOptions(fld);\r\n this.tn.skip(\"{\");\r\n while ((token = this.tn.next()) !== '}') {\r\n if (Lang.RULE.test(token))\r\n this._parseMessageField(msg, token);\r\n else if (token === \"oneof\")\r\n this._parseMessageOneOf(msg);\r\n else if (token === \"enum\")\r\n this._parseEnum(msg);\r\n else if (token === \"message\")\r\n this._parseMessage(msg);\r\n else if (token === \"option\")\r\n this._parseOption(msg);\r\n else if (token === \"service\")\r\n this._parseService(msg);\r\n else if (token === \"extensions\")\r\n this._parseExtensions(msg);\r\n else if (token === \"extend\")\r\n this._parseExtend(msg);\r\n else if (token === \"reserved\")\r\n this._parseMessageReserved(msg);\r\n else if (Lang.TYPEREF.test(token)) {\r\n if (!this.proto3)\r\n throw Error(\"illegal field rule: \"+token);\r\n this._parseMessageField(msg, \"optional\", token);\r\n } else\r\n throw Error(\"illegal message token: \"+token);\r\n }\r\n this.tn.omit(\";\");\r\n parent[\"messages\"].push(msg);\r\n return msg;\r\n };\r\n\r\n /**\r\n * Parses a message's reserved ids / names statement.\r\n * @param {!Object} msg Message definition\r\n * @private\r\n */\r\n ParserPrototype._parseMessageReserved = function(msg) {\r\n // TODO: This currently just skips a reserved statement for compatibility.\r\n // Valid formats are\r\n // reserved 2, 15, 9 to 11;\r\n // for reserved ids or\r\n // reserved \"foo\", \"bar\";\r\n // for reserved names.\r\n while (this.tn.peek() !== ';')\r\n this.tn.next();\r\n this.tn.skip(\";\");\r\n };\r\n\r\n /**\r\n * Parses a message field.\r\n * @param {!Object} msg Message definition\r\n * @param {string} rule Field rule\r\n * @param {string=} type Field type if already known (never known for maps)\r\n * @returns {!Object} Field descriptor\r\n * @private\r\n */\r\n ParserPrototype._parseMessageField = function(msg, rule, type) {\r\n if (!Lang.RULE.test(rule))\r\n throw Error(\"illegal message field rule: \"+rule);\r\n var fld = {\r\n \"rule\": rule,\r\n \"type\": \"\",\r\n \"name\": \"\",\r\n \"options\": {},\r\n \"id\": 0\r\n };\r\n var token;\r\n if (rule === \"map\") {\r\n\r\n if (type)\r\n throw Error(\"illegal type: \" + type);\r\n this.tn.skip('<');\r\n token = this.tn.next();\r\n if (!Lang.TYPE.test(token) && !Lang.TYPEREF.test(token))\r\n throw Error(\"illegal message field type: \" + token);\r\n fld[\"keytype\"] = token;\r\n this.tn.skip(',');\r\n token = this.tn.next();\r\n if (!Lang.TYPE.test(token) && !Lang.TYPEREF.test(token))\r\n throw Error(\"illegal message field: \" + token);\r\n fld[\"type\"] = token;\r\n this.tn.skip('>');\r\n token = this.tn.next();\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal message field name: \" + token);\r\n fld[\"name\"] = token;\r\n this.tn.skip(\"=\");\r\n fld[\"id\"] = mkId(this.tn.next());\r\n token = this.tn.peek();\r\n if (token === '[')\r\n this._parseFieldOptions(fld);\r\n this.tn.skip(\";\");\r\n\r\n } else {\r\n\r\n type = typeof type !== 'undefined' ? type : this.tn.next();\r\n\r\n if (type === \"group\") {\r\n\r\n // \"A [legacy] group simply combines a nested message type and a field into a single declaration. In your\r\n // code, you can treat this message just as if it had a Result type field called result (the latter name is\r\n // converted to lower-case so that it does not conflict with the former).\"\r\n var grp = this._parseMessage(msg, fld);\r\n if (!/^[A-Z]/.test(grp[\"name\"]))\r\n throw Error('illegal group name: '+grp[\"name\"]);\r\n fld[\"type\"] = grp[\"name\"];\r\n fld[\"name\"] = grp[\"name\"].toLowerCase();\r\n this.tn.omit(\";\");\r\n\r\n } else {\r\n\r\n if (!Lang.TYPE.test(type) && !Lang.TYPEREF.test(type))\r\n throw Error(\"illegal message field type: \" + type);\r\n fld[\"type\"] = type;\r\n token = this.tn.next();\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal message field name: \" + token);\r\n fld[\"name\"] = token;\r\n this.tn.skip(\"=\");\r\n fld[\"id\"] = mkId(this.tn.next());\r\n token = this.tn.peek();\r\n if (token === \"[\")\r\n this._parseFieldOptions(fld);\r\n this.tn.skip(\";\");\r\n\r\n }\r\n }\r\n msg[\"fields\"].push(fld);\r\n return fld;\r\n };\r\n\r\n /**\r\n * Parses a message oneof.\r\n * @param {!Object} msg Message definition\r\n * @private\r\n */\r\n ParserPrototype._parseMessageOneOf = function(msg) {\r\n var token = this.tn.next();\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal oneof name: \"+token);\r\n var name = token,\r\n fld;\r\n var fields = [];\r\n this.tn.skip(\"{\");\r\n while ((token = this.tn.next()) !== \"}\") {\r\n fld = this._parseMessageField(msg, \"optional\", token);\r\n fld[\"oneof\"] = name;\r\n fields.push(fld[\"id\"]);\r\n }\r\n this.tn.omit(\";\");\r\n msg[\"oneofs\"][name] = fields;\r\n };\r\n\r\n /**\r\n * Parses a set of field option definitions.\r\n * @param {!Object} fld Field definition\r\n * @private\r\n */\r\n ParserPrototype._parseFieldOptions = function(fld) {\r\n this.tn.skip(\"[\");\r\n var token,\r\n first = true;\r\n while ((token = this.tn.peek()) !== ']') {\r\n if (!first)\r\n this.tn.skip(\",\");\r\n this._parseOption(fld, true);\r\n first = false;\r\n }\r\n this.tn.next();\r\n };\r\n\r\n /**\r\n * Parses an enum.\r\n * @param {!Object} msg Message definition\r\n * @private\r\n */\r\n ParserPrototype._parseEnum = function(msg) {\r\n var enm = {\r\n \"name\": \"\",\r\n \"values\": [],\r\n \"options\": {}\r\n };\r\n var token = this.tn.next();\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal name: \"+token);\r\n enm[\"name\"] = token;\r\n this.tn.skip(\"{\");\r\n while ((token = this.tn.next()) !== '}') {\r\n if (token === \"option\")\r\n this._parseOption(enm);\r\n else {\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal name: \"+token);\r\n this.tn.skip(\"=\");\r\n var val = {\r\n \"name\": token,\r\n \"id\": mkId(this.tn.next(), true)\r\n };\r\n token = this.tn.peek();\r\n if (token === \"[\")\r\n this._parseFieldOptions({ \"options\": {} });\r\n this.tn.skip(\";\");\r\n enm[\"values\"].push(val);\r\n }\r\n }\r\n this.tn.omit(\";\");\r\n msg[\"enums\"].push(enm);\r\n };\r\n\r\n /**\r\n * Parses an extensions statement.\r\n * @param {!Object} msg Message object\r\n * @private\r\n */\r\n ParserPrototype._parseExtensions = function(msg) {\r\n var token = this.tn.next(),\r\n range = [];\r\n if (token === \"min\")\r\n range.push(ProtoBuf.ID_MIN);\r\n else if (token === \"max\")\r\n range.push(ProtoBuf.ID_MAX);\r\n else\r\n range.push(mkNumber(token));\r\n this.tn.skip(\"to\");\r\n token = this.tn.next();\r\n if (token === \"min\")\r\n range.push(ProtoBuf.ID_MIN);\r\n else if (token === \"max\")\r\n range.push(ProtoBuf.ID_MAX);\r\n else\r\n range.push(mkNumber(token));\r\n this.tn.skip(\";\");\r\n msg[\"extensions\"] = range;\r\n };\r\n\r\n /**\r\n * Parses an extend block.\r\n * @param {!Object} parent Parent object\r\n * @private\r\n */\r\n ParserPrototype._parseExtend = function(parent) {\r\n var token = this.tn.next();\r\n if (!Lang.TYPEREF.test(token))\r\n throw Error(\"illegal extend reference: \"+token);\r\n var ext = {\r\n \"ref\": token,\r\n \"fields\": []\r\n };\r\n this.tn.skip(\"{\");\r\n while ((token = this.tn.next()) !== '}') {\r\n if (Lang.RULE.test(token))\r\n this._parseMessageField(ext, token);\r\n else if (Lang.TYPEREF.test(token)) {\r\n if (!this.proto3)\r\n throw Error(\"illegal field rule: \"+token);\r\n this._parseMessageField(ext, \"optional\", token);\r\n } else\r\n throw Error(\"illegal extend token: \"+token);\r\n }\r\n this.tn.omit(\";\");\r\n parent[\"messages\"].push(ext);\r\n return ext;\r\n };\r\n\r\n // ----- General -----\r\n\r\n /**\r\n * Returns a string representation of this parser.\r\n * @returns {string}\r\n */\r\n ParserPrototype.toString = function() {\r\n return \"Parser at line \"+this.tn.line;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.DotProto.Parser\r\n * @expose\r\n */\r\n DotProto.Parser = Parser;\r\n\r\n return DotProto;\r\n\r\n })(ProtoBuf, ProtoBuf.Lang);\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect\r\n * @expose\r\n */\r\n ProtoBuf.Reflect = (function(ProtoBuf) {\r\n \"use strict\";\r\n\r\n /**\r\n * Reflection types.\r\n * @exports ProtoBuf.Reflect\r\n * @namespace\r\n */\r\n var Reflect = {};\r\n\r\n /**\r\n * Constructs a Reflect base class.\r\n * @exports ProtoBuf.Reflect.T\r\n * @constructor\r\n * @abstract\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {?ProtoBuf.Reflect.T} parent Parent object\r\n * @param {string} name Object name\r\n */\r\n var T = function(builder, parent, name) {\r\n\r\n /**\r\n * Builder reference.\r\n * @type {!ProtoBuf.Builder}\r\n * @expose\r\n */\r\n this.builder = builder;\r\n\r\n /**\r\n * Parent object.\r\n * @type {?ProtoBuf.Reflect.T}\r\n * @expose\r\n */\r\n this.parent = parent;\r\n\r\n /**\r\n * Object name in namespace.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.name = name;\r\n\r\n /**\r\n * Fully qualified class name\r\n * @type {string}\r\n * @expose\r\n */\r\n this.className;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.T.prototype\r\n * @inner\r\n */\r\n var TPrototype = T.prototype;\r\n\r\n /**\r\n * Returns the fully qualified name of this object.\r\n * @returns {string} Fully qualified name as of \".PATH.TO.THIS\"\r\n * @expose\r\n */\r\n TPrototype.fqn = function() {\r\n var name = this.name,\r\n ptr = this;\r\n do {\r\n ptr = ptr.parent;\r\n if (ptr == null)\r\n break;\r\n name = ptr.name+\".\"+name;\r\n } while (true);\r\n return name;\r\n };\r\n\r\n /**\r\n * Returns a string representation of this Reflect object (its fully qualified name).\r\n * @param {boolean=} includeClass Set to true to include the class name. Defaults to false.\r\n * @return String representation\r\n * @expose\r\n */\r\n TPrototype.toString = function(includeClass) {\r\n return (includeClass ? this.className + \" \" : \"\") + this.fqn();\r\n };\r\n\r\n /**\r\n * Builds this type.\r\n * @throws {Error} If this type cannot be built directly\r\n * @expose\r\n */\r\n TPrototype.build = function() {\r\n throw Error(this.toString(true)+\" cannot be built directly\");\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.T\r\n * @expose\r\n */\r\n Reflect.T = T;\r\n\r\n /**\r\n * Constructs a new Namespace.\r\n * @exports ProtoBuf.Reflect.Namespace\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {?ProtoBuf.Reflect.Namespace} parent Namespace parent\r\n * @param {string} name Namespace name\r\n * @param {Object.=} options Namespace options\r\n * @param {string?} syntax The syntax level of this definition (e.g., proto3)\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.T\r\n */\r\n var Namespace = function(builder, parent, name, options, syntax) {\r\n T.call(this, builder, parent, name);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Namespace\";\r\n\r\n /**\r\n * Children inside the namespace.\r\n * @type {!Array.}\r\n */\r\n this.children = [];\r\n\r\n /**\r\n * Options.\r\n * @type {!Object.}\r\n */\r\n this.options = options || {};\r\n\r\n /**\r\n * Syntax level (e.g., proto2 or proto3).\r\n * @type {!string}\r\n */\r\n this.syntax = syntax || \"proto2\";\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Namespace.prototype\r\n * @inner\r\n */\r\n var NamespacePrototype = Namespace.prototype = Object.create(T.prototype);\r\n\r\n /**\r\n * Returns an array of the namespace's children.\r\n * @param {ProtoBuf.Reflect.T=} type Filter type (returns instances of this type only). Defaults to null (all children).\r\n * @return {Array.}\r\n * @expose\r\n */\r\n NamespacePrototype.getChildren = function(type) {\r\n type = type || null;\r\n if (type == null)\r\n return this.children.slice();\r\n var children = [];\r\n for (var i=0, k=this.children.length; i} qn Qualified name to resolve\r\n * @param {boolean=} excludeNonNamespace Excludes non-namespace types, defaults to `false`\r\n * @return {?ProtoBuf.Reflect.Namespace} The resolved type or null if not found\r\n * @expose\r\n */\r\n NamespacePrototype.resolve = function(qn, excludeNonNamespace) {\r\n var part = typeof qn === 'string' ? qn.split(\".\") : qn,\r\n ptr = this,\r\n i = 0;\r\n if (part[i] === \"\") { // Fully qualified name, e.g. \".My.Message'\r\n while (ptr.parent !== null)\r\n ptr = ptr.parent;\r\n i++;\r\n }\r\n var child;\r\n do {\r\n do {\r\n if (!(ptr instanceof Reflect.Namespace)) {\r\n ptr = null;\r\n break;\r\n }\r\n child = ptr.getChild(part[i]);\r\n if (!child || !(child instanceof Reflect.T) || (excludeNonNamespace && !(child instanceof Reflect.Namespace))) {\r\n ptr = null;\r\n break;\r\n }\r\n ptr = child; i++;\r\n } while (i < part.length);\r\n if (ptr != null)\r\n break; // Found\r\n // Else search the parent\r\n if (this.parent !== null)\r\n return this.parent.resolve(qn, excludeNonNamespace);\r\n } while (ptr != null);\r\n return ptr;\r\n };\r\n\r\n /**\r\n * Determines the shortest qualified name of the specified type, if any, relative to this namespace.\r\n * @param {!ProtoBuf.Reflect.T} t Reflection type\r\n * @returns {string} The shortest qualified name or, if there is none, the fqn\r\n * @expose\r\n */\r\n NamespacePrototype.qn = function(t) {\r\n var part = [], ptr = t;\r\n do {\r\n part.unshift(ptr.name);\r\n ptr = ptr.parent;\r\n } while (ptr !== null);\r\n for (var len=1; len <= part.length; len++) {\r\n var qn = part.slice(part.length-len);\r\n if (t === this.resolve(qn, t instanceof Reflect.Namespace))\r\n return qn.join(\".\");\r\n }\r\n return t.fqn();\r\n };\r\n\r\n /**\r\n * Builds the namespace and returns the runtime counterpart.\r\n * @return {Object.} Runtime namespace\r\n * @expose\r\n */\r\n NamespacePrototype.build = function() {\r\n /** @dict */\r\n var ns = {};\r\n var children = this.children;\r\n for (var i=0, k=children.length, child; i}\r\n */\r\n NamespacePrototype.buildOpt = function() {\r\n var opt = {},\r\n keys = Object.keys(this.options);\r\n for (var i=0, k=keys.length; i}null} Option value or NULL if there is no such option\r\n */\r\n NamespacePrototype.getOption = function(name) {\r\n if (typeof name === 'undefined')\r\n return this.options;\r\n return typeof this.options[name] !== 'undefined' ? this.options[name] : null;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Namespace\r\n * @expose\r\n */\r\n Reflect.Namespace = Namespace;\r\n\r\n /**\r\n * Constructs a new Element implementation that checks and converts values for a\r\n * particular field type, as appropriate.\r\n *\r\n * An Element represents a single value: either the value of a singular field,\r\n * or a value contained in one entry of a repeated field or map field. This\r\n * class does not implement these higher-level concepts; it only encapsulates\r\n * the low-level typechecking and conversion.\r\n *\r\n * @exports ProtoBuf.Reflect.Element\r\n * @param {{name: string, wireType: number}} type Resolved data type\r\n * @param {ProtoBuf.Reflect.T|null} resolvedType Resolved type, if relevant\r\n * (e.g. submessage field).\r\n * @param {boolean} isMapKey Is this element a Map key? The value will be\r\n * converted to string form if so.\r\n * @param {string} syntax Syntax level of defining message type, e.g.,\r\n * proto2 or proto3.\r\n * @constructor\r\n */\r\n var Element = function(type, resolvedType, isMapKey, syntax) {\r\n\r\n /**\r\n * Element type, as a string (e.g., int32).\r\n * @type {{name: string, wireType: number}}\r\n */\r\n this.type = type;\r\n\r\n /**\r\n * Element type reference to submessage or enum definition, if needed.\r\n * @type {ProtoBuf.Reflect.T|null}\r\n */\r\n this.resolvedType = resolvedType;\r\n\r\n /**\r\n * Element is a map key.\r\n * @type {boolean}\r\n */\r\n this.isMapKey = isMapKey;\r\n\r\n /**\r\n * Syntax level of defining message type, e.g., proto2 or proto3.\r\n * @type {string}\r\n */\r\n this.syntax = syntax;\r\n\r\n if (isMapKey && ProtoBuf.MAP_KEY_TYPES.indexOf(type) < 0)\r\n throw Error(\"Invalid map key type: \" + type.name);\r\n };\r\n\r\n var ElementPrototype = Element.prototype;\r\n\r\n /**\r\n * Obtains a (new) default value for the specified type.\r\n * @param type {string|{name: string, wireType: number}} Field type\r\n * @returns {*} Default value\r\n * @inner\r\n */\r\n function mkDefault(type) {\r\n if (typeof type === 'string')\r\n type = ProtoBuf.TYPES[type];\r\n if (typeof type.defaultValue === 'undefined')\r\n throw Error(\"default value for type \"+type.name+\" is not supported\");\r\n if (type == ProtoBuf.TYPES[\"bytes\"])\r\n return new ByteBuffer(0);\r\n return type.defaultValue;\r\n }\r\n\r\n /**\r\n * Returns the default value for this field in proto3.\r\n * @function\r\n * @param type {string|{name: string, wireType: number}} the field type\r\n * @returns {*} Default value\r\n */\r\n Element.defaultFieldValue = mkDefault;\r\n\r\n /**\r\n * Makes a Long from a value.\r\n * @param {{low: number, high: number, unsigned: boolean}|string|number} value Value\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to reuse it from Long-like objects or to signed for\r\n * strings and numbers\r\n * @returns {!Long}\r\n * @throws {Error} If the value cannot be converted to a Long\r\n * @inner\r\n */\r\n function mkLong(value, unsigned) {\r\n if (value && typeof value.low === 'number' && typeof value.high === 'number' && typeof value.unsigned === 'boolean'\r\n && value.low === value.low && value.high === value.high)\r\n return new ProtoBuf.Long(value.low, value.high, typeof unsigned === 'undefined' ? value.unsigned : unsigned);\r\n if (typeof value === 'string')\r\n return ProtoBuf.Long.fromString(value, unsigned || false, 10);\r\n if (typeof value === 'number')\r\n return ProtoBuf.Long.fromNumber(value, unsigned || false);\r\n throw Error(\"not convertible to Long\");\r\n }\r\n\r\n /**\r\n * Checks if the given value can be set for an element of this type (singular\r\n * field or one element of a repeated field or map).\r\n * @param {*} value Value to check\r\n * @return {*} Verified, maybe adjusted, value\r\n * @throws {Error} If the value cannot be verified for this element slot\r\n * @expose\r\n */\r\n ElementPrototype.verifyValue = function(value) {\r\n var fail = function(val, msg) {\r\n throw Error(\"Illegal value for \"+this.toString(true)+\" of type \"+this.type.name+\": \"+val+\" (\"+msg+\")\");\r\n }.bind(this);\r\n switch (this.type) {\r\n // Signed 32bit\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n // Account for !NaN: value === value\r\n if (typeof value !== 'number' || (value === value && value % 1 !== 0))\r\n fail(typeof value, \"not an integer\");\r\n return value > 4294967295 ? value | 0 : value;\r\n\r\n // Unsigned 32bit\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n if (typeof value !== 'number' || (value === value && value % 1 !== 0))\r\n fail(typeof value, \"not an integer\");\r\n return value < 0 ? value >>> 0 : value;\r\n\r\n // Signed 64bit\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n case ProtoBuf.TYPES[\"sfixed64\"]: {\r\n if (ProtoBuf.Long)\r\n try {\r\n return mkLong(value, false);\r\n } catch (e) {\r\n fail(typeof value, e.message);\r\n }\r\n else\r\n fail(typeof value, \"requires Long.js\");\r\n }\r\n\r\n // Unsigned 64bit\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n case ProtoBuf.TYPES[\"fixed64\"]: {\r\n if (ProtoBuf.Long)\r\n try {\r\n return mkLong(value, true);\r\n } catch (e) {\r\n fail(typeof value, e.message);\r\n }\r\n else\r\n fail(typeof value, \"requires Long.js\");\r\n }\r\n\r\n // Bool\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n if (typeof value !== 'boolean')\r\n fail(typeof value, \"not a boolean\");\r\n return value;\r\n\r\n // Float\r\n case ProtoBuf.TYPES[\"float\"]:\r\n case ProtoBuf.TYPES[\"double\"]:\r\n if (typeof value !== 'number')\r\n fail(typeof value, \"not a number\");\r\n return value;\r\n\r\n // Length-delimited string\r\n case ProtoBuf.TYPES[\"string\"]:\r\n if (typeof value !== 'string' && !(value && value instanceof String))\r\n fail(typeof value, \"not a string\");\r\n return \"\"+value; // Convert String object to string\r\n\r\n // Length-delimited bytes\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n if (ByteBuffer.isByteBuffer(value))\r\n return value;\r\n return ByteBuffer.wrap(value, \"base64\");\r\n\r\n // Constant enum value\r\n case ProtoBuf.TYPES[\"enum\"]: {\r\n var values = this.resolvedType.getChildren(ProtoBuf.Reflect.Enum.Value);\r\n for (i=0; i 4294967295 || value < 0)\r\n fail(typeof value, \"not in range for uint32\")\r\n return value;\r\n } else {\r\n // proto2 requires enum values to be valid.\r\n fail(value, \"not a valid enum value\");\r\n }\r\n }\r\n // Embedded message\r\n case ProtoBuf.TYPES[\"group\"]:\r\n case ProtoBuf.TYPES[\"message\"]: {\r\n if (!value || typeof value !== 'object')\r\n fail(typeof value, \"object expected\");\r\n if (value instanceof this.resolvedType.clazz)\r\n return value;\r\n if (value instanceof ProtoBuf.Builder.Message) {\r\n // Mismatched type: Convert to object (see: https://github.com/dcodeIO/ProtoBuf.js/issues/180)\r\n var obj = {};\r\n for (var i in value)\r\n if (value.hasOwnProperty(i))\r\n obj[i] = value[i];\r\n value = obj;\r\n }\r\n // Else let's try to construct one from a key-value object\r\n return new (this.resolvedType.clazz)(value); // May throw for a hundred of reasons\r\n }\r\n }\r\n\r\n // We should never end here\r\n throw Error(\"[INTERNAL] Illegal value for \"+this.toString(true)+\": \"+value+\" (undefined type \"+this.type+\")\");\r\n };\r\n\r\n /**\r\n * Calculates the byte length of an element on the wire.\r\n * @param {number} id Field number\r\n * @param {*} value Field value\r\n * @returns {number} Byte length\r\n * @throws {Error} If the value cannot be calculated\r\n * @expose\r\n */\r\n ElementPrototype.calculateLength = function(id, value) {\r\n if (value === null) return 0; // Nothing to encode\r\n // Tag has already been written\r\n var n;\r\n switch (this.type) {\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n return value < 0 ? ByteBuffer.calculateVarint64(value) : ByteBuffer.calculateVarint32(value);\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n return ByteBuffer.calculateVarint32(value);\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n return ByteBuffer.calculateVarint32(ByteBuffer.zigZagEncode32(value));\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n case ProtoBuf.TYPES[\"float\"]:\r\n return 4;\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n return ByteBuffer.calculateVarint64(value);\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n return ByteBuffer.calculateVarint64(ByteBuffer.zigZagEncode64(value));\r\n case ProtoBuf.TYPES[\"fixed64\"]:\r\n case ProtoBuf.TYPES[\"sfixed64\"]:\r\n return 8;\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n return 1;\r\n case ProtoBuf.TYPES[\"enum\"]:\r\n return ByteBuffer.calculateVarint32(value);\r\n case ProtoBuf.TYPES[\"double\"]:\r\n return 8;\r\n case ProtoBuf.TYPES[\"string\"]:\r\n n = ByteBuffer.calculateUTF8Bytes(value);\r\n return ByteBuffer.calculateVarint32(n) + n;\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n if (value.remaining() < 0)\r\n throw Error(\"Illegal value for \"+this.toString(true)+\": \"+value.remaining()+\" bytes remaining\");\r\n return ByteBuffer.calculateVarint32(value.remaining()) + value.remaining();\r\n case ProtoBuf.TYPES[\"message\"]:\r\n n = this.resolvedType.calculate(value);\r\n return ByteBuffer.calculateVarint32(n) + n;\r\n case ProtoBuf.TYPES[\"group\"]:\r\n n = this.resolvedType.calculate(value);\r\n return n + ByteBuffer.calculateVarint32((id << 3) | ProtoBuf.WIRE_TYPES.ENDGROUP);\r\n }\r\n // We should never end here\r\n throw Error(\"[INTERNAL] Illegal value to encode in \"+this.toString(true)+\": \"+value+\" (unknown type)\");\r\n };\r\n\r\n /**\r\n * Encodes a value to the specified buffer. Does not encode the key.\r\n * @param {number} id Field number\r\n * @param {*} value Field value\r\n * @param {ByteBuffer} buffer ByteBuffer to encode to\r\n * @return {ByteBuffer} The ByteBuffer for chaining\r\n * @throws {Error} If the value cannot be encoded\r\n * @expose\r\n */\r\n ElementPrototype.encodeValue = function(id, value, buffer) {\r\n if (value === null) return buffer; // Nothing to encode\r\n // Tag has already been written\r\n\r\n switch (this.type) {\r\n // 32bit signed varint\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n // \"If you use int32 or int64 as the type for a negative number, the resulting varint is always ten bytes\r\n // long – it is, effectively, treated like a very large unsigned integer.\" (see #122)\r\n if (value < 0)\r\n buffer.writeVarint64(value);\r\n else\r\n buffer.writeVarint32(value);\r\n break;\r\n\r\n // 32bit unsigned varint\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n buffer.writeVarint32(value);\r\n break;\r\n\r\n // 32bit varint zig-zag\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n buffer.writeVarint32ZigZag(value);\r\n break;\r\n\r\n // Fixed unsigned 32bit\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n buffer.writeUint32(value);\r\n break;\r\n\r\n // Fixed signed 32bit\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n buffer.writeInt32(value);\r\n break;\r\n\r\n // 64bit varint as-is\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n buffer.writeVarint64(value); // throws\r\n break;\r\n\r\n // 64bit varint zig-zag\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n buffer.writeVarint64ZigZag(value); // throws\r\n break;\r\n\r\n // Fixed unsigned 64bit\r\n case ProtoBuf.TYPES[\"fixed64\"]:\r\n buffer.writeUint64(value); // throws\r\n break;\r\n\r\n // Fixed signed 64bit\r\n case ProtoBuf.TYPES[\"sfixed64\"]:\r\n buffer.writeInt64(value); // throws\r\n break;\r\n\r\n // Bool\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n if (typeof value === 'string')\r\n buffer.writeVarint32(value.toLowerCase() === 'false' ? 0 : !!value);\r\n else\r\n buffer.writeVarint32(value ? 1 : 0);\r\n break;\r\n\r\n // Constant enum value\r\n case ProtoBuf.TYPES[\"enum\"]:\r\n buffer.writeVarint32(value);\r\n break;\r\n\r\n // 32bit float\r\n case ProtoBuf.TYPES[\"float\"]:\r\n buffer.writeFloat32(value);\r\n break;\r\n\r\n // 64bit float\r\n case ProtoBuf.TYPES[\"double\"]:\r\n buffer.writeFloat64(value);\r\n break;\r\n\r\n // Length-delimited string\r\n case ProtoBuf.TYPES[\"string\"]:\r\n buffer.writeVString(value);\r\n break;\r\n\r\n // Length-delimited bytes\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n if (value.remaining() < 0)\r\n throw Error(\"Illegal value for \"+this.toString(true)+\": \"+value.remaining()+\" bytes remaining\");\r\n var prevOffset = value.offset;\r\n buffer.writeVarint32(value.remaining());\r\n buffer.append(value);\r\n value.offset = prevOffset;\r\n break;\r\n\r\n // Embedded message\r\n case ProtoBuf.TYPES[\"message\"]:\r\n var bb = new ByteBuffer().LE();\r\n this.resolvedType.encode(value, bb);\r\n buffer.writeVarint32(bb.offset);\r\n buffer.append(bb.flip());\r\n break;\r\n\r\n // Legacy group\r\n case ProtoBuf.TYPES[\"group\"]:\r\n this.resolvedType.encode(value, buffer);\r\n buffer.writeVarint32((id << 3) | ProtoBuf.WIRE_TYPES.ENDGROUP);\r\n break;\r\n\r\n default:\r\n // We should never end here\r\n throw Error(\"[INTERNAL] Illegal value to encode in \"+this.toString(true)+\": \"+value+\" (unknown type)\");\r\n }\r\n return buffer;\r\n };\r\n\r\n /**\r\n * Decode one element value from the specified buffer.\r\n * @param {ByteBuffer} buffer ByteBuffer to decode from\r\n * @param {number} wireType The field wire type\r\n * @param {number} id The field number\r\n * @return {*} Decoded value\r\n * @throws {Error} If the field cannot be decoded\r\n * @expose\r\n */\r\n ElementPrototype.decode = function(buffer, wireType, id) {\r\n if (wireType != this.type.wireType)\r\n throw Error(\"Unexpected wire type for element\");\r\n\r\n var value, nBytes;\r\n switch (this.type) {\r\n // 32bit signed varint\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n return buffer.readVarint32() | 0;\r\n\r\n // 32bit unsigned varint\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n return buffer.readVarint32() >>> 0;\r\n\r\n // 32bit signed varint zig-zag\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n return buffer.readVarint32ZigZag() | 0;\r\n\r\n // Fixed 32bit unsigned\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n return buffer.readUint32() >>> 0;\r\n\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n return buffer.readInt32() | 0;\r\n\r\n // 64bit signed varint\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n return buffer.readVarint64();\r\n\r\n // 64bit unsigned varint\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n return buffer.readVarint64().toUnsigned();\r\n\r\n // 64bit signed varint zig-zag\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n return buffer.readVarint64ZigZag();\r\n\r\n // Fixed 64bit unsigned\r\n case ProtoBuf.TYPES[\"fixed64\"]:\r\n return buffer.readUint64();\r\n\r\n // Fixed 64bit signed\r\n case ProtoBuf.TYPES[\"sfixed64\"]:\r\n return buffer.readInt64();\r\n\r\n // Bool varint\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n return !!buffer.readVarint32();\r\n\r\n // Constant enum value (varint)\r\n case ProtoBuf.TYPES[\"enum\"]:\r\n // The following Builder.Message#set will already throw\r\n return buffer.readVarint32();\r\n\r\n // 32bit float\r\n case ProtoBuf.TYPES[\"float\"]:\r\n return buffer.readFloat();\r\n\r\n // 64bit float\r\n case ProtoBuf.TYPES[\"double\"]:\r\n return buffer.readDouble();\r\n\r\n // Length-delimited string\r\n case ProtoBuf.TYPES[\"string\"]:\r\n return buffer.readVString();\r\n\r\n // Length-delimited bytes\r\n case ProtoBuf.TYPES[\"bytes\"]: {\r\n nBytes = buffer.readVarint32();\r\n if (buffer.remaining() < nBytes)\r\n throw Error(\"Illegal number of bytes for \"+this.toString(true)+\": \"+nBytes+\" required but got only \"+buffer.remaining());\r\n value = buffer.clone(); // Offset already set\r\n value.limit = value.offset+nBytes;\r\n buffer.offset += nBytes;\r\n return value;\r\n }\r\n\r\n // Length-delimited embedded message\r\n case ProtoBuf.TYPES[\"message\"]: {\r\n nBytes = buffer.readVarint32();\r\n return this.resolvedType.decode(buffer, nBytes);\r\n }\r\n\r\n // Legacy group\r\n case ProtoBuf.TYPES[\"group\"]:\r\n return this.resolvedType.decode(buffer, -1, id);\r\n }\r\n\r\n // We should never end here\r\n throw Error(\"[INTERNAL] Illegal decode type\");\r\n };\r\n\r\n /**\r\n * Converts a value from a string to the canonical element type.\r\n *\r\n * Legal only when isMapKey is true.\r\n *\r\n * @param {string} str The string value\r\n * @returns {*} The value\r\n */\r\n ElementPrototype.valueFromString = function(str) {\r\n if (!this.isMapKey) {\r\n throw Error(\"valueFromString() called on non-map-key element\");\r\n }\r\n\r\n switch (this.type) {\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n return this.verifyValue(parseInt(str));\r\n\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n case ProtoBuf.TYPES[\"sfixed64\"]:\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n case ProtoBuf.TYPES[\"fixed64\"]:\r\n // Long-based fields support conversions from string already.\r\n return this.verifyValue(str);\r\n\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n return str === \"true\";\r\n\r\n case ProtoBuf.TYPES[\"string\"]:\r\n return this.verifyValue(str);\r\n\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n return ByteBuffer.fromBinary(str);\r\n }\r\n };\r\n\r\n /**\r\n * Converts a value from the canonical element type to a string.\r\n *\r\n * It should be the case that `valueFromString(valueToString(val))` returns\r\n * a value equivalent to `verifyValue(val)` for every legal value of `val`\r\n * according to this element type.\r\n *\r\n * This may be used when the element must be stored or used as a string,\r\n * e.g., as a map key on an Object.\r\n *\r\n * Legal only when isMapKey is true.\r\n *\r\n * @param {*} val The value\r\n * @returns {string} The string form of the value.\r\n */\r\n ElementPrototype.valueToString = function(value) {\r\n if (!this.isMapKey) {\r\n throw Error(\"valueToString() called on non-map-key element\");\r\n }\r\n\r\n if (this.type === ProtoBuf.TYPES[\"bytes\"]) {\r\n return value.toString(\"binary\");\r\n } else {\r\n return value.toString();\r\n }\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Element\r\n * @expose\r\n */\r\n Reflect.Element = Element;\r\n\r\n /**\r\n * Constructs a new Message.\r\n * @exports ProtoBuf.Reflect.Message\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Namespace} parent Parent message or namespace\r\n * @param {string} name Message name\r\n * @param {Object.=} options Message options\r\n * @param {boolean=} isGroup `true` if this is a legacy group\r\n * @param {string?} syntax The syntax level of this definition (e.g., proto3)\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Namespace\r\n */\r\n var Message = function(builder, parent, name, options, isGroup, syntax) {\r\n Namespace.call(this, builder, parent, name, options, syntax);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Message\";\r\n\r\n /**\r\n * Extensions range.\r\n * @type {!Array.}\r\n * @expose\r\n */\r\n this.extensions = [ProtoBuf.ID_MIN, ProtoBuf.ID_MAX];\r\n\r\n /**\r\n * Runtime message class.\r\n * @type {?function(new:ProtoBuf.Builder.Message)}\r\n * @expose\r\n */\r\n this.clazz = null;\r\n\r\n /**\r\n * Whether this is a legacy group or not.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.isGroup = !!isGroup;\r\n\r\n // The following cached collections are used to efficiently iterate over or look up fields when decoding.\r\n\r\n /**\r\n * Cached fields.\r\n * @type {?Array.}\r\n * @private\r\n */\r\n this._fields = null;\r\n\r\n /**\r\n * Cached fields by id.\r\n * @type {?Object.}\r\n * @private\r\n */\r\n this._fieldsById = null;\r\n\r\n /**\r\n * Cached fields by name.\r\n * @type {?Object.}\r\n * @private\r\n */\r\n this._fieldsByName = null;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.prototype\r\n * @inner\r\n */\r\n var MessagePrototype = Message.prototype = Object.create(Namespace.prototype);\r\n\r\n /**\r\n * Builds the message and returns the runtime counterpart, which is a fully functional class.\r\n * @see ProtoBuf.Builder.Message\r\n * @param {boolean=} rebuild Whether to rebuild or not, defaults to false\r\n * @return {ProtoBuf.Reflect.Message} Message class\r\n * @throws {Error} If the message cannot be built\r\n * @expose\r\n */\r\n MessagePrototype.build = function(rebuild) {\r\n if (this.clazz && !rebuild)\r\n return this.clazz;\r\n\r\n // Create the runtime Message class in its own scope\r\n var clazz = (function(ProtoBuf, T) {\r\n\r\n var fields = T.getChildren(ProtoBuf.Reflect.Message.Field),\r\n oneofs = T.getChildren(ProtoBuf.Reflect.Message.OneOf);\r\n\r\n /**\r\n * Constructs a new runtime Message.\r\n * @name ProtoBuf.Builder.Message\r\n * @class Barebone of all runtime messages.\r\n * @param {!Object.|string} values Preset values\r\n * @param {...string} var_args\r\n * @constructor\r\n * @throws {Error} If the message cannot be created\r\n */\r\n var Message = function(values, var_args) {\r\n ProtoBuf.Builder.Message.call(this);\r\n\r\n // Create virtual oneof properties\r\n for (var i=0, k=oneofs.length; i 0) {\r\n var value;\r\n // Set field values from a values object\r\n if (arguments.length === 1 && values !== null && typeof values === 'object' &&\r\n /* not _another_ Message */ (typeof values.encode !== 'function' || values instanceof Message) &&\r\n /* not a repeated field */ !Array.isArray(values) &&\r\n /* not a Map */ !(values instanceof ProtoBuf.Map) &&\r\n /* not a ByteBuffer */ !ByteBuffer.isByteBuffer(values) &&\r\n /* not an ArrayBuffer */ !(values instanceof ArrayBuffer) &&\r\n /* not a Long */ !(ProtoBuf.Long && values instanceof ProtoBuf.Long)) {\r\n this.$set(values);\r\n } else // Set field values from arguments, in declaration order\r\n for (i=0, k=arguments.length; i} keyOrObj String key or plain object holding multiple values\r\n * @param {(*|boolean)=} value Value to set if key is a string, otherwise omitted\r\n * @param {boolean=} noAssert Whether to not assert for an actual field / proper value type, defaults to `false`\r\n * @returns {!ProtoBuf.Builder.Message} this\r\n * @throws {Error} If the value cannot be set\r\n * @expose\r\n */\r\n MessagePrototype.set = function(keyOrObj, value, noAssert) {\r\n if (keyOrObj && typeof keyOrObj === 'object') {\r\n noAssert = value;\r\n for (var ikey in keyOrObj)\r\n if (keyOrObj.hasOwnProperty(ikey) && typeof (value = keyOrObj[ikey]) !== 'undefined')\r\n this.$set(ikey, value, noAssert);\r\n return this;\r\n }\r\n var field = T._fieldsByName[keyOrObj];\r\n if (!noAssert) {\r\n if (!field)\r\n throw Error(this+\"#\"+keyOrObj+\" is not a field: undefined\");\r\n if (!(field instanceof ProtoBuf.Reflect.Message.Field))\r\n throw Error(this+\"#\"+keyOrObj+\" is not a field: \"+field.toString(true));\r\n this[field.name] = (value = field.verifyValue(value)); // May throw\r\n } else\r\n this[keyOrObj] = value;\r\n if (field && field.oneof) { // Field is part of an OneOf (not a virtual OneOf field)\r\n var currentField = this[field.oneof.name]; // Virtual field references currently set field\r\n if (value !== null) {\r\n if (currentField !== null && currentField !== field.name)\r\n this[currentField] = null; // Clear currently set field\r\n this[field.oneof.name] = field.name; // Point virtual field at this field\r\n } else if (/* value === null && */currentField === keyOrObj)\r\n this[field.oneof.name] = null; // Clear virtual field (current field explicitly cleared)\r\n }\r\n return this;\r\n };\r\n\r\n /**\r\n * Sets a field's value. This is an alias for [@link ProtoBuf.Builder.Message#set}.\r\n * @name ProtoBuf.Builder.Message#$set\r\n * @function\r\n * @param {string|!Object.} keyOrObj String key or plain object holding multiple values\r\n * @param {(*|boolean)=} value Value to set if key is a string, otherwise omitted\r\n * @param {boolean=} noAssert Whether to not assert the value, defaults to `false`\r\n * @throws {Error} If the value cannot be set\r\n * @expose\r\n */\r\n MessagePrototype.$set = MessagePrototype.set;\r\n\r\n /**\r\n * Gets a field's value.\r\n * @name ProtoBuf.Builder.Message#get\r\n * @function\r\n * @param {string} key Key\r\n * @param {boolean=} noAssert Whether to not assert for an actual field, defaults to `false`\r\n * @return {*} Value\r\n * @throws {Error} If there is no such field\r\n * @expose\r\n */\r\n MessagePrototype.get = function(key, noAssert) {\r\n if (noAssert)\r\n return this[key];\r\n var field = T._fieldsByName[key];\r\n if (!field || !(field instanceof ProtoBuf.Reflect.Message.Field))\r\n throw Error(this+\"#\"+key+\" is not a field: undefined\");\r\n if (!(field instanceof ProtoBuf.Reflect.Message.Field))\r\n throw Error(this+\"#\"+key+\" is not a field: \"+field.toString(true));\r\n return this[field.name];\r\n };\r\n\r\n /**\r\n * Gets a field's value. This is an alias for {@link ProtoBuf.Builder.Message#$get}.\r\n * @name ProtoBuf.Builder.Message#$get\r\n * @function\r\n * @param {string} key Key\r\n * @return {*} Value\r\n * @throws {Error} If there is no such field\r\n * @expose\r\n */\r\n MessagePrototype.$get = MessagePrototype.get;\r\n\r\n // Getters and setters\r\n\r\n for (var i=0; i} data Data payload\r\n * @param {(!ByteBuffer|boolean)=} buffer ByteBuffer to encode to. Will create a new one and flip it if omitted.\r\n * @param {boolean=} noVerify Whether to not verify field values, defaults to `false`\r\n * @return {!ByteBuffer} Encoded message as a ByteBuffer\r\n * @expose\r\n */\r\n Message.encode = function(data, buffer, noVerify) {\r\n return new Message(data).encode(buffer, noVerify);\r\n };\r\n\r\n /**\r\n * Calculates the byte length of the message.\r\n * @name ProtoBuf.Builder.Message#calculate\r\n * @function\r\n * @returns {number} Byte length\r\n * @throws {Error} If the message cannot be calculated or if required fields are missing.\r\n * @expose\r\n */\r\n MessagePrototype.calculate = function() {\r\n return T.calculate(this);\r\n };\r\n\r\n /**\r\n * Encodes the varint32 length-delimited message.\r\n * @name ProtoBuf.Builder.Message#encodeDelimited\r\n * @function\r\n * @param {(!ByteBuffer|boolean)=} buffer ByteBuffer to encode to. Will create a new one and flip it if omitted.\r\n * @return {!ByteBuffer} Encoded message as a ByteBuffer\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded ByteBuffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encodeDelimited = function(buffer) {\r\n var isNew = false;\r\n if (!buffer)\r\n buffer = new ByteBuffer(),\r\n isNew = true;\r\n var enc = new ByteBuffer().LE();\r\n T.encode(this, enc).flip();\r\n buffer.writeVarint32(enc.remaining());\r\n buffer.append(enc);\r\n return isNew ? buffer.flip() : buffer;\r\n };\r\n\r\n /**\r\n * Directly encodes the message to an ArrayBuffer.\r\n * @name ProtoBuf.Builder.Message#encodeAB\r\n * @function\r\n * @return {ArrayBuffer} Encoded message as ArrayBuffer\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded ArrayBuffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encodeAB = function() {\r\n try {\r\n return this.encode().toArrayBuffer();\r\n } catch (e) {\r\n if (e[\"encoded\"]) e[\"encoded\"] = e[\"encoded\"].toArrayBuffer();\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Returns the message as an ArrayBuffer. This is an alias for {@link ProtoBuf.Builder.Message#encodeAB}.\r\n * @name ProtoBuf.Builder.Message#toArrayBuffer\r\n * @function\r\n * @return {ArrayBuffer} Encoded message as ArrayBuffer\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded ArrayBuffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.toArrayBuffer = MessagePrototype.encodeAB;\r\n\r\n /**\r\n * Directly encodes the message to a node Buffer.\r\n * @name ProtoBuf.Builder.Message#encodeNB\r\n * @function\r\n * @return {!Buffer}\r\n * @throws {Error} If the message cannot be encoded, not running under node.js or if required fields are\r\n * missing. The later still returns the encoded node Buffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encodeNB = function() {\r\n try {\r\n return this.encode().toBuffer();\r\n } catch (e) {\r\n if (e[\"encoded\"]) e[\"encoded\"] = e[\"encoded\"].toBuffer();\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Returns the message as a node Buffer. This is an alias for {@link ProtoBuf.Builder.Message#encodeNB}.\r\n * @name ProtoBuf.Builder.Message#toBuffer\r\n * @function\r\n * @return {!Buffer}\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded node Buffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.toBuffer = MessagePrototype.encodeNB;\r\n\r\n /**\r\n * Directly encodes the message to a base64 encoded string.\r\n * @name ProtoBuf.Builder.Message#encode64\r\n * @function\r\n * @return {string} Base64 encoded string\r\n * @throws {Error} If the underlying buffer cannot be encoded or if required fields are missing. The later\r\n * still returns the encoded base64 string in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encode64 = function() {\r\n try {\r\n return this.encode().toBase64();\r\n } catch (e) {\r\n if (e[\"encoded\"]) e[\"encoded\"] = e[\"encoded\"].toBase64();\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Returns the message as a base64 encoded string. This is an alias for {@link ProtoBuf.Builder.Message#encode64}.\r\n * @name ProtoBuf.Builder.Message#toBase64\r\n * @function\r\n * @return {string} Base64 encoded string\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded base64 string in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.toBase64 = MessagePrototype.encode64;\r\n\r\n /**\r\n * Directly encodes the message to a hex encoded string.\r\n * @name ProtoBuf.Builder.Message#encodeHex\r\n * @function\r\n * @return {string} Hex encoded string\r\n * @throws {Error} If the underlying buffer cannot be encoded or if required fields are missing. The later\r\n * still returns the encoded hex string in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encodeHex = function() {\r\n try {\r\n return this.encode().toHex();\r\n } catch (e) {\r\n if (e[\"encoded\"]) e[\"encoded\"] = e[\"encoded\"].toHex();\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Returns the message as a hex encoded string. This is an alias for {@link ProtoBuf.Builder.Message#encodeHex}.\r\n * @name ProtoBuf.Builder.Message#toHex\r\n * @function\r\n * @return {string} Hex encoded string\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded hex string in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.toHex = MessagePrototype.encodeHex;\r\n\r\n /**\r\n * Clones a message object or field value to a raw object.\r\n * @param {*} obj Object to clone\r\n * @param {boolean} binaryAsBase64 Whether to include binary data as base64 strings or as a buffer otherwise\r\n * @param {boolean} longsAsStrings Whether to encode longs as strings\r\n * @param {!ProtoBuf.Reflect.T=} resolvedType The resolved field type if a field\r\n * @returns {*} Cloned object\r\n * @inner\r\n */\r\n function cloneRaw(obj, binaryAsBase64, longsAsStrings, resolvedType) {\r\n if (obj === null || typeof obj !== 'object') {\r\n // Convert enum values to their respective names\r\n if (resolvedType && resolvedType instanceof ProtoBuf.Reflect.Enum) {\r\n var name = ProtoBuf.Reflect.Enum.getName(resolvedType.object, obj);\r\n if (name !== null)\r\n return name;\r\n }\r\n // Pass-through string, number, boolean, null...\r\n return obj;\r\n }\r\n // Convert ByteBuffers to raw buffer or strings\r\n if (ByteBuffer.isByteBuffer(obj))\r\n return binaryAsBase64 ? obj.toBase64() : obj.toBuffer();\r\n // Convert Longs to proper objects or strings\r\n if (ProtoBuf.Long.isLong(obj))\r\n return longsAsStrings ? obj.toString() : ProtoBuf.Long.fromValue(obj);\r\n var clone;\r\n // Clone arrays\r\n if (Array.isArray(obj)) {\r\n clone = [];\r\n obj.forEach(function(v, k) {\r\n clone[k] = cloneRaw(v, binaryAsBase64, longsAsStrings, resolvedType);\r\n });\r\n return clone;\r\n }\r\n clone = {};\r\n // Convert maps to objects\r\n if (obj instanceof ProtoBuf.Map) {\r\n var it = obj.entries();\r\n for (var e = it.next(); !e.done; e = it.next())\r\n clone[obj.keyElem.valueToString(e.value[0])] = cloneRaw(e.value[1], binaryAsBase64, longsAsStrings, obj.valueElem.resolvedType);\r\n return clone;\r\n }\r\n // Everything else is a non-null object\r\n var type = obj.$type,\r\n field = undefined;\r\n for (var i in obj)\r\n if (obj.hasOwnProperty(i)) {\r\n if (type && (field = type.getChild(i)))\r\n clone[i] = cloneRaw(obj[i], binaryAsBase64, longsAsStrings, field.resolvedType);\r\n else\r\n clone[i] = cloneRaw(obj[i], binaryAsBase64, longsAsStrings);\r\n }\r\n return clone;\r\n }\r\n\r\n /**\r\n * Returns the message's raw payload.\r\n * @param {boolean=} binaryAsBase64 Whether to include binary data as base64 strings instead of Buffers, defaults to `false`\r\n * @param {boolean} longsAsStrings Whether to encode longs as strings\r\n * @returns {Object.} Raw payload\r\n * @expose\r\n */\r\n MessagePrototype.toRaw = function(binaryAsBase64, longsAsStrings) {\r\n return cloneRaw(this, !!binaryAsBase64, !!longsAsStrings, this.$type);\r\n };\r\n\r\n /**\r\n * Encodes a message to JSON.\r\n * @returns {string} JSON string\r\n * @expose\r\n */\r\n MessagePrototype.encodeJSON = function() {\r\n return JSON.stringify(\r\n cloneRaw(this,\r\n /* binary-as-base64 */ true,\r\n /* longs-as-strings */ true,\r\n this.$type\r\n )\r\n );\r\n };\r\n\r\n /**\r\n * Decodes a message from the specified buffer or string.\r\n * @name ProtoBuf.Builder.Message.decode\r\n * @function\r\n * @param {!ByteBuffer|!ArrayBuffer|!Buffer|string} buffer Buffer to decode from\r\n * @param {string=} enc Encoding if buffer is a string: hex, utf8 (not recommended), defaults to base64\r\n * @return {!ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still\r\n * returns the decoded message with missing fields in the `decoded` property on the error.\r\n * @expose\r\n * @see ProtoBuf.Builder.Message.decode64\r\n * @see ProtoBuf.Builder.Message.decodeHex\r\n */\r\n Message.decode = function(buffer, enc) {\r\n if (typeof buffer === 'string')\r\n buffer = ByteBuffer.wrap(buffer, enc ? enc : \"base64\");\r\n buffer = ByteBuffer.isByteBuffer(buffer) ? buffer : ByteBuffer.wrap(buffer); // May throw\r\n var le = buffer.littleEndian;\r\n try {\r\n var msg = T.decode(buffer.LE());\r\n buffer.LE(le);\r\n return msg;\r\n } catch (e) {\r\n buffer.LE(le);\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Decodes a varint32 length-delimited message from the specified buffer or string.\r\n * @name ProtoBuf.Builder.Message.decodeDelimited\r\n * @function\r\n * @param {!ByteBuffer|!ArrayBuffer|!Buffer|string} buffer Buffer to decode from\r\n * @param {string=} enc Encoding if buffer is a string: hex, utf8 (not recommended), defaults to base64\r\n * @return {ProtoBuf.Builder.Message} Decoded message or `null` if not enough bytes are available yet\r\n * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still\r\n * returns the decoded message with missing fields in the `decoded` property on the error.\r\n * @expose\r\n */\r\n Message.decodeDelimited = function(buffer, enc) {\r\n if (typeof buffer === 'string')\r\n buffer = ByteBuffer.wrap(buffer, enc ? enc : \"base64\");\r\n buffer = ByteBuffer.isByteBuffer(buffer) ? buffer : ByteBuffer.wrap(buffer); // May throw\r\n if (buffer.remaining() < 1)\r\n return null;\r\n var off = buffer.offset,\r\n len = buffer.readVarint32();\r\n if (buffer.remaining() < len) {\r\n buffer.offset = off;\r\n return null;\r\n }\r\n try {\r\n var msg = T.decode(buffer.slice(buffer.offset, buffer.offset + len).LE());\r\n buffer.offset += len;\r\n return msg;\r\n } catch (err) {\r\n buffer.offset += len;\r\n throw err;\r\n }\r\n };\r\n\r\n /**\r\n * Decodes the message from the specified base64 encoded string.\r\n * @name ProtoBuf.Builder.Message.decode64\r\n * @function\r\n * @param {string} str String to decode from\r\n * @return {!ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still\r\n * returns the decoded message with missing fields in the `decoded` property on the error.\r\n * @expose\r\n */\r\n Message.decode64 = function(str) {\r\n return Message.decode(str, \"base64\");\r\n };\r\n\r\n /**\r\n * Decodes the message from the specified hex encoded string.\r\n * @name ProtoBuf.Builder.Message.decodeHex\r\n * @function\r\n * @param {string} str String to decode from\r\n * @return {!ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still\r\n * returns the decoded message with missing fields in the `decoded` property on the error.\r\n * @expose\r\n */\r\n Message.decodeHex = function(str) {\r\n return Message.decode(str, \"hex\");\r\n };\r\n\r\n /**\r\n * Decodes the message from a JSON string.\r\n * @name ProtoBuf.Builder.Message.decodeJSON\r\n * @function\r\n * @param {string} str String to decode from\r\n * @return {!ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded or if required fields are\r\n * missing.\r\n * @expose\r\n */\r\n Message.decodeJSON = function(str) {\r\n return new Message(JSON.parse(str));\r\n };\r\n\r\n // Utility\r\n\r\n /**\r\n * Returns a string representation of this Message.\r\n * @name ProtoBuf.Builder.Message#toString\r\n * @function\r\n * @return {string} String representation as of \".Fully.Qualified.MessageName\"\r\n * @expose\r\n */\r\n MessagePrototype.toString = function() {\r\n return T.toString();\r\n };\r\n\r\n // Properties\r\n\r\n /**\r\n * Message options.\r\n * @name ProtoBuf.Builder.Message.$options\r\n * @type {Object.}\r\n * @expose\r\n */\r\n var $optionsS; // cc needs this\r\n\r\n /**\r\n * Message options.\r\n * @name ProtoBuf.Builder.Message#$options\r\n * @type {Object.}\r\n * @expose\r\n */\r\n var $options;\r\n\r\n /**\r\n * Reflection type.\r\n * @name ProtoBuf.Builder.Message.$type\r\n * @type {!ProtoBuf.Reflect.Message}\r\n * @expose\r\n */\r\n var $typeS;\r\n\r\n /**\r\n * Reflection type.\r\n * @name ProtoBuf.Builder.Message#$type\r\n * @type {!ProtoBuf.Reflect.Message}\r\n * @expose\r\n */\r\n var $type;\r\n\r\n if (Object.defineProperty)\r\n Object.defineProperty(Message, '$options', { \"value\": T.buildOpt() }),\r\n Object.defineProperty(MessagePrototype, \"$options\", { \"value\": Message[\"$options\"] }),\r\n Object.defineProperty(Message, \"$type\", { \"value\": T }),\r\n Object.defineProperty(MessagePrototype, \"$type\", { \"value\": T });\r\n\r\n return Message;\r\n\r\n })(ProtoBuf, this);\r\n\r\n // Static enums and prototyped sub-messages / cached collections\r\n this._fields = [];\r\n this._fieldsById = {};\r\n this._fieldsByName = {};\r\n for (var i=0, k=this.children.length, child; i>> 3;\r\n switch (wireType) {\r\n case ProtoBuf.WIRE_TYPES.VARINT:\r\n do tag = buf.readUint8();\r\n while ((tag & 0x80) === 0x80);\r\n break;\r\n case ProtoBuf.WIRE_TYPES.BITS64:\r\n buf.offset += 8;\r\n break;\r\n case ProtoBuf.WIRE_TYPES.LDELIM:\r\n tag = buf.readVarint32(); // reads the varint\r\n buf.offset += tag; // skips n bytes\r\n break;\r\n case ProtoBuf.WIRE_TYPES.STARTGROUP:\r\n skipTillGroupEnd(id, buf);\r\n break;\r\n case ProtoBuf.WIRE_TYPES.ENDGROUP:\r\n if (id === expectedId)\r\n return false;\r\n else\r\n throw Error(\"Illegal GROUPEND after unknown group: \"+id+\" (\"+expectedId+\" expected)\");\r\n case ProtoBuf.WIRE_TYPES.BITS32:\r\n buf.offset += 4;\r\n break;\r\n default:\r\n throw Error(\"Illegal wire type in unknown group \"+expectedId+\": \"+wireType);\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Decodes an encoded message and returns the decoded message.\r\n * @param {ByteBuffer} buffer ByteBuffer to decode from\r\n * @param {number=} length Message length. Defaults to decode all the available data.\r\n * @param {number=} expectedGroupEndId Expected GROUPEND id if this is a legacy group\r\n * @return {ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded\r\n * @expose\r\n */\r\n MessagePrototype.decode = function(buffer, length, expectedGroupEndId) {\r\n length = typeof length === 'number' ? length : -1;\r\n var start = buffer.offset,\r\n msg = new (this.clazz)(),\r\n tag, wireType, id, field;\r\n while (buffer.offset < start+length || (length === -1 && buffer.remaining() > 0)) {\r\n tag = buffer.readVarint32();\r\n wireType = tag & 0x07;\r\n id = tag >>> 3;\r\n if (wireType === ProtoBuf.WIRE_TYPES.ENDGROUP) {\r\n if (id !== expectedGroupEndId)\r\n throw Error(\"Illegal group end indicator for \"+this.toString(true)+\": \"+id+\" (\"+(expectedGroupEndId ? expectedGroupEndId+\" expected\" : \"not a group\")+\")\");\r\n break;\r\n }\r\n if (!(field = this._fieldsById[id])) {\r\n // \"messages created by your new code can be parsed by your old code: old binaries simply ignore the new field when parsing.\"\r\n switch (wireType) {\r\n case ProtoBuf.WIRE_TYPES.VARINT:\r\n buffer.readVarint32();\r\n break;\r\n case ProtoBuf.WIRE_TYPES.BITS32:\r\n buffer.offset += 4;\r\n break;\r\n case ProtoBuf.WIRE_TYPES.BITS64:\r\n buffer.offset += 8;\r\n break;\r\n case ProtoBuf.WIRE_TYPES.LDELIM:\r\n var len = buffer.readVarint32();\r\n buffer.offset += len;\r\n break;\r\n case ProtoBuf.WIRE_TYPES.STARTGROUP:\r\n while (skipTillGroupEnd(id, buffer)) {}\r\n break;\r\n default:\r\n throw Error(\"Illegal wire type for unknown field \"+id+\" in \"+this.toString(true)+\"#decode: \"+wireType);\r\n }\r\n continue;\r\n }\r\n if (field.repeated && !field.options[\"packed\"]) {\r\n msg[field.name].push(field.decode(wireType, buffer));\r\n } else if (field.map) {\r\n var keyval = field.decode(wireType, buffer);\r\n msg[field.name].set(keyval[0], keyval[1]);\r\n } else {\r\n msg[field.name] = field.decode(wireType, buffer);\r\n if (field.oneof) { // Field is part of an OneOf (not a virtual OneOf field)\r\n var currentField = msg[field.oneof.name]; // Virtual field references currently set field\r\n if (currentField !== null && currentField !== field.name)\r\n msg[currentField] = null; // Clear currently set field\r\n msg[field.oneof.name] = field.name; // Point virtual field at this field\r\n }\r\n }\r\n }\r\n\r\n // Check if all required fields are present and set default values for optional fields that are not\r\n for (var i=0, k=this._fields.length; i=} options Options\r\n * @param {!ProtoBuf.Reflect.Message.OneOf=} oneof Enclosing OneOf\r\n * @param {string?} syntax The syntax level of this definition (e.g., proto3)\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.T\r\n */\r\n var Field = function(builder, message, rule, keytype, type, name, id, options, oneof, syntax) {\r\n T.call(this, builder, message, name);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Message.Field\";\r\n\r\n /**\r\n * Message field required flag.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.required = rule === \"required\";\r\n\r\n /**\r\n * Message field repeated flag.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.repeated = rule === \"repeated\";\r\n\r\n /**\r\n * Message field map flag.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.map = rule === \"map\";\r\n\r\n /**\r\n * Message field key type. Type reference string if unresolved, protobuf\r\n * type if resolved. Valid only if this.map === true, null otherwise.\r\n * @type {string|{name: string, wireType: number}|null}\r\n * @expose\r\n */\r\n this.keyType = keytype || null;\r\n\r\n /**\r\n * Message field type. Type reference string if unresolved, protobuf type if\r\n * resolved. In a map field, this is the value type.\r\n * @type {string|{name: string, wireType: number}}\r\n * @expose\r\n */\r\n this.type = type;\r\n\r\n /**\r\n * Resolved type reference inside the global namespace.\r\n * @type {ProtoBuf.Reflect.T|null}\r\n * @expose\r\n */\r\n this.resolvedType = null;\r\n\r\n /**\r\n * Unique message field id.\r\n * @type {number}\r\n * @expose\r\n */\r\n this.id = id;\r\n\r\n /**\r\n * Message field options.\r\n * @type {!Object.}\r\n * @dict\r\n * @expose\r\n */\r\n this.options = options || {};\r\n\r\n /**\r\n * Default value.\r\n * @type {*}\r\n * @expose\r\n */\r\n this.defaultValue = null;\r\n\r\n /**\r\n * Enclosing OneOf.\r\n * @type {?ProtoBuf.Reflect.Message.OneOf}\r\n * @expose\r\n */\r\n this.oneof = oneof || null;\r\n\r\n /**\r\n * Syntax level of this definition (e.g., proto3).\r\n * @type {string}\r\n * @expose\r\n */\r\n this.syntax = syntax || 'proto2';\r\n\r\n /**\r\n * Original field name.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.originalName = this.name; // Used to revert camelcase transformation on naming collisions\r\n\r\n /**\r\n * Element implementation. Created in build() after types are resolved.\r\n * @type {ProtoBuf.Element}\r\n * @expose\r\n */\r\n this.element = null;\r\n\r\n /**\r\n * Key element implementation, for map fields. Created in build() after\r\n * types are resolved.\r\n * @type {ProtoBuf.Element}\r\n * @expose\r\n */\r\n this.keyElement = null;\r\n\r\n // Convert field names to camel case notation if the override is set\r\n if (this.builder.options['convertFieldsToCamelCase'] && !(this instanceof Message.ExtensionField))\r\n this.name = ProtoBuf.Util.toCamelCase(this.name);\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.Field.prototype\r\n * @inner\r\n */\r\n var FieldPrototype = Field.prototype = Object.create(T.prototype);\r\n\r\n /**\r\n * Builds the field.\r\n * @override\r\n * @expose\r\n */\r\n FieldPrototype.build = function() {\r\n this.element = new Element(this.type, this.resolvedType, false, this.syntax);\r\n if (this.map)\r\n this.keyElement = new Element(this.keyType, undefined, true, this.syntax);\r\n\r\n // In proto3, fields do not have field presence, and every field is set to\r\n // its type's default value (\"\", 0, 0.0, or false).\r\n if (this.syntax === 'proto3' && !this.repeated && !this.map)\r\n this.defaultValue = Element.defaultFieldValue(this.type);\r\n\r\n // Otherwise, default values are present when explicitly specified\r\n else if (typeof this.options['default'] !== 'undefined')\r\n this.defaultValue = this.verifyValue(this.options['default']);\r\n };\r\n\r\n /**\r\n * Checks if the given value can be set for this field.\r\n * @param {*} value Value to check\r\n * @param {boolean=} skipRepeated Whether to skip the repeated value check or not. Defaults to false.\r\n * @return {*} Verified, maybe adjusted, value\r\n * @throws {Error} If the value cannot be set for this field\r\n * @expose\r\n */\r\n FieldPrototype.verifyValue = function(value, skipRepeated) {\r\n skipRepeated = skipRepeated || false;\r\n var fail = function(val, msg) {\r\n throw Error(\"Illegal value for \"+this.toString(true)+\" of type \"+this.type.name+\": \"+val+\" (\"+msg+\")\");\r\n }.bind(this);\r\n if (value === null) { // NULL values for optional fields\r\n if (this.required)\r\n fail(typeof value, \"required\");\r\n if (this.syntax === 'proto3' && this.type !== ProtoBuf.TYPES[\"message\"])\r\n fail(typeof value, \"proto3 field without field presence cannot be null\");\r\n return null;\r\n }\r\n var i;\r\n if (this.repeated && !skipRepeated) { // Repeated values as arrays\r\n if (!Array.isArray(value))\r\n value = [value];\r\n var res = [];\r\n for (i=0; i 0;\r\n\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n return value.remaining() > 0;\r\n\r\n case ProtoBuf.TYPES[\"enum\"]:\r\n return value !== 0;\r\n\r\n case ProtoBuf.TYPES[\"message\"]:\r\n return value !== null;\r\n default:\r\n return true;\r\n }\r\n };\r\n\r\n /**\r\n * Encodes the specified field value to the specified buffer.\r\n * @param {*} value Verified field value\r\n * @param {ByteBuffer} buffer ByteBuffer to encode to\r\n * @param {!ProtoBuf.Builder.Message} message Runtime message\r\n * @return {ByteBuffer} The ByteBuffer for chaining\r\n * @throws {Error} If the field cannot be encoded\r\n * @expose\r\n */\r\n FieldPrototype.encode = function(value, buffer, message) {\r\n if (this.type === null || typeof this.type !== 'object')\r\n throw Error(\"[INTERNAL] Unresolved type in \"+this.toString(true)+\": \"+this.type);\r\n if (value === null || (this.repeated && value.length == 0))\r\n return buffer; // Optional omitted\r\n try {\r\n if (this.repeated) {\r\n var i;\r\n // \"Only repeated fields of primitive numeric types (types which use the varint, 32-bit, or 64-bit wire\r\n // types) can be declared 'packed'.\"\r\n if (this.options[\"packed\"] && ProtoBuf.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType) >= 0) {\r\n // \"All of the elements of the field are packed into a single key-value pair with wire type 2\r\n // (length-delimited). Each element is encoded the same way it would be normally, except without a\r\n // tag preceding it.\"\r\n buffer.writeVarint32((this.id << 3) | ProtoBuf.WIRE_TYPES.LDELIM);\r\n buffer.ensureCapacity(buffer.offset += 1); // We do not know the length yet, so let's assume a varint of length 1\r\n var start = buffer.offset; // Remember where the contents begin\r\n for (i=0; i 1) { // We need to move the contents\r\n var contents = buffer.slice(start, buffer.offset);\r\n start += varintLen-1;\r\n buffer.offset = start;\r\n buffer.append(contents);\r\n }\r\n buffer.writeVarint32(len, start-varintLen);\r\n } else {\r\n // \"If your message definition has repeated elements (without the [packed=true] option), the encoded\r\n // message has zero or more key-value pairs with the same tag number\"\r\n for (i=0; i= 0) {\r\n n += ByteBuffer.calculateVarint32((this.id << 3) | ProtoBuf.WIRE_TYPES.LDELIM);\r\n ni = 0;\r\n for (i=0; i= 0) {\r\n if (!skipRepeated) {\r\n nBytes = buffer.readVarint32();\r\n nBytes = buffer.offset + nBytes; // Limit\r\n var values = [];\r\n while (buffer.offset < nBytes)\r\n values.push(this.decode(this.type.wireType, buffer, true));\r\n return values;\r\n }\r\n // Read the next value otherwise...\r\n }\r\n\r\n // Handle maps.\r\n if (this.map) {\r\n // Read one (key, value) submessage, and return [key, value]\r\n var key = Element.defaultFieldValue(this.keyType);\r\n value = Element.defaultFieldValue(this.type);\r\n\r\n // Read the length\r\n nBytes = buffer.readVarint32();\r\n if (buffer.remaining() < nBytes)\r\n throw Error(\"Illegal number of bytes for \"+this.toString(true)+\": \"+nBytes+\" required but got only \"+buffer.remaining());\r\n\r\n // Get a sub-buffer of this key/value submessage\r\n var msgbuf = buffer.clone();\r\n msgbuf.limit = msgbuf.offset + nBytes;\r\n buffer.offset += nBytes;\r\n\r\n while (msgbuf.remaining() > 0) {\r\n var tag = msgbuf.readVarint32();\r\n wireType = tag & 0x07;\r\n var id = tag >>> 3;\r\n if (id === 1) {\r\n key = this.keyElement.decode(msgbuf, wireType, id);\r\n } else if (id === 2) {\r\n value = this.element.decode(msgbuf, wireType, id);\r\n } else {\r\n throw Error(\"Unexpected tag in map field key/value submessage\");\r\n }\r\n }\r\n\r\n return [key, value];\r\n }\r\n\r\n // Handle singular and non-packed repeated field values.\r\n return this.element.decode(buffer, wireType, this.id);\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.Field\r\n * @expose\r\n */\r\n Reflect.Message.Field = Field;\r\n\r\n /**\r\n * Constructs a new Message ExtensionField.\r\n * @exports ProtoBuf.Reflect.Message.ExtensionField\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Message} message Message reference\r\n * @param {string} rule Rule, one of requried, optional, repeated\r\n * @param {string} type Data type, e.g. int32\r\n * @param {string} name Field name\r\n * @param {number} id Unique field id\r\n * @param {!Object.=} options Options\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Message.Field\r\n */\r\n var ExtensionField = function(builder, message, rule, type, name, id, options) {\r\n Field.call(this, builder, message, rule, /* keytype = */ null, type, name, id, options);\r\n\r\n /**\r\n * Extension reference.\r\n * @type {!ProtoBuf.Reflect.Extension}\r\n * @expose\r\n */\r\n this.extension;\r\n };\r\n\r\n // Extends Field\r\n ExtensionField.prototype = Object.create(Field.prototype);\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.ExtensionField\r\n * @expose\r\n */\r\n Reflect.Message.ExtensionField = ExtensionField;\r\n\r\n /**\r\n * Constructs a new Message OneOf.\r\n * @exports ProtoBuf.Reflect.Message.OneOf\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Message} message Message reference\r\n * @param {string} name OneOf name\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.T\r\n */\r\n var OneOf = function(builder, message, name) {\r\n T.call(this, builder, message, name);\r\n\r\n /**\r\n * Enclosed fields.\r\n * @type {!Array.}\r\n * @expose\r\n */\r\n this.fields = [];\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.OneOf\r\n * @expose\r\n */\r\n Reflect.Message.OneOf = OneOf;\r\n\r\n /**\r\n * Constructs a new Enum.\r\n * @exports ProtoBuf.Reflect.Enum\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.T} parent Parent Reflect object\r\n * @param {string} name Enum name\r\n * @param {Object.=} options Enum options\r\n * @param {string?} syntax The syntax level (e.g., proto3)\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Namespace\r\n */\r\n var Enum = function(builder, parent, name, options, syntax) {\r\n Namespace.call(this, builder, parent, name, options, syntax);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Enum\";\r\n\r\n /**\r\n * Runtime enum object.\r\n * @type {Object.|null}\r\n * @expose\r\n */\r\n this.object = null;\r\n };\r\n\r\n /**\r\n * Gets the string name of an enum value.\r\n * @param {!ProtoBuf.Builder.Enum} enm Runtime enum\r\n * @param {number} value Enum value\r\n * @returns {?string} Name or `null` if not present\r\n * @expose\r\n */\r\n Enum.getName = function(enm, value) {\r\n var keys = Object.keys(enm);\r\n for (var i=0, key; i}\r\n * @expose\r\n */\r\n EnumPrototype.build = function(rebuild) {\r\n if (this.object && !rebuild)\r\n return this.object;\r\n var enm = new ProtoBuf.Builder.Enum(),\r\n values = this.getChildren(Enum.Value);\r\n for (var i=0, k=values.length; i=} options Options\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Namespace\r\n */\r\n var Service = function(builder, root, name, options) {\r\n Namespace.call(this, builder, root, name, options);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Service\";\r\n\r\n /**\r\n * Built runtime service class.\r\n * @type {?function(new:ProtoBuf.Builder.Service)}\r\n */\r\n this.clazz = null;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service.prototype\r\n * @inner\r\n */\r\n var ServicePrototype = Service.prototype = Object.create(Namespace.prototype);\r\n\r\n /**\r\n * Builds the service and returns the runtime counterpart, which is a fully functional class.\r\n * @see ProtoBuf.Builder.Service\r\n * @param {boolean=} rebuild Whether to rebuild or not\r\n * @return {Function} Service class\r\n * @throws {Error} If the message cannot be built\r\n * @expose\r\n */\r\n ServicePrototype.build = function(rebuild) {\r\n if (this.clazz && !rebuild)\r\n return this.clazz;\r\n\r\n // Create the runtime Service class in its own scope\r\n return this.clazz = (function(ProtoBuf, T) {\r\n\r\n /**\r\n * Constructs a new runtime Service.\r\n * @name ProtoBuf.Builder.Service\r\n * @param {function(string, ProtoBuf.Builder.Message, function(Error, ProtoBuf.Builder.Message=))=} rpcImpl RPC implementation receiving the method name and the message\r\n * @class Barebone of all runtime services.\r\n * @constructor\r\n * @throws {Error} If the service cannot be created\r\n */\r\n var Service = function(rpcImpl) {\r\n ProtoBuf.Builder.Service.call(this);\r\n\r\n /**\r\n * Service implementation.\r\n * @name ProtoBuf.Builder.Service#rpcImpl\r\n * @type {!function(string, ProtoBuf.Builder.Message, function(Error, ProtoBuf.Builder.Message=))}\r\n * @expose\r\n */\r\n this.rpcImpl = rpcImpl || function(name, msg, callback) {\r\n // This is what a user has to implement: A function receiving the method name, the actual message to\r\n // send (type checked) and the callback that's either provided with the error as its first\r\n // argument or null and the actual response message.\r\n setTimeout(callback.bind(this, Error(\"Not implemented, see: https://github.com/dcodeIO/ProtoBuf.js/wiki/Services\")), 0); // Must be async!\r\n };\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Builder.Service.prototype\r\n * @inner\r\n */\r\n var ServicePrototype = Service.prototype = Object.create(ProtoBuf.Builder.Service.prototype);\r\n\r\n /**\r\n * Asynchronously performs an RPC call using the given RPC implementation.\r\n * @name ProtoBuf.Builder.Service.[Method]\r\n * @function\r\n * @param {!function(string, ProtoBuf.Builder.Message, function(Error, ProtoBuf.Builder.Message=))} rpcImpl RPC implementation\r\n * @param {ProtoBuf.Builder.Message} req Request\r\n * @param {function(Error, (ProtoBuf.Builder.Message|ByteBuffer|Buffer|string)=)} callback Callback receiving\r\n * the error if any and the response either as a pre-parsed message or as its raw bytes\r\n * @abstract\r\n */\r\n\r\n /**\r\n * Asynchronously performs an RPC call using the instance's RPC implementation.\r\n * @name ProtoBuf.Builder.Service#[Method]\r\n * @function\r\n * @param {ProtoBuf.Builder.Message} req Request\r\n * @param {function(Error, (ProtoBuf.Builder.Message|ByteBuffer|Buffer|string)=)} callback Callback receiving\r\n * the error if any and the response either as a pre-parsed message or as its raw bytes\r\n * @abstract\r\n */\r\n\r\n var rpc = T.getChildren(ProtoBuf.Reflect.Service.RPCMethod);\r\n for (var i=0; i}\r\n * @expose\r\n */\r\n var $optionsS; // cc needs this\r\n\r\n /**\r\n * Service options.\r\n * @name ProtoBuf.Builder.Service#$options\r\n * @type {Object.}\r\n * @expose\r\n */\r\n var $options;\r\n\r\n /**\r\n * Reflection type.\r\n * @name ProtoBuf.Builder.Service.$type\r\n * @type {!ProtoBuf.Reflect.Service}\r\n * @expose\r\n */\r\n var $typeS;\r\n\r\n /**\r\n * Reflection type.\r\n * @name ProtoBuf.Builder.Service#$type\r\n * @type {!ProtoBuf.Reflect.Service}\r\n * @expose\r\n */\r\n var $type;\r\n\r\n if (Object.defineProperty)\r\n Object.defineProperty(Service, \"$options\", { \"value\": T.buildOpt() }),\r\n Object.defineProperty(ServicePrototype, \"$options\", { \"value\": Service[\"$options\"] }),\r\n Object.defineProperty(Service, \"$type\", { \"value\": T }),\r\n Object.defineProperty(ServicePrototype, \"$type\", { \"value\": T });\r\n\r\n return Service;\r\n\r\n })(ProtoBuf, this);\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service\r\n * @expose\r\n */\r\n Reflect.Service = Service;\r\n\r\n /**\r\n * Abstract service method.\r\n * @exports ProtoBuf.Reflect.Service.Method\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Service} svc Service\r\n * @param {string} name Method name\r\n * @param {Object.=} options Options\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.T\r\n */\r\n var Method = function(builder, svc, name, options) {\r\n T.call(this, builder, svc, name);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Service.Method\";\r\n\r\n /**\r\n * Options.\r\n * @type {Object.}\r\n * @expose\r\n */\r\n this.options = options || {};\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service.Method.prototype\r\n * @inner\r\n */\r\n var MethodPrototype = Method.prototype = Object.create(T.prototype);\r\n\r\n /**\r\n * Builds the method's '$options' property.\r\n * @name ProtoBuf.Reflect.Service.Method#buildOpt\r\n * @function\r\n * @return {Object.}\r\n */\r\n MethodPrototype.buildOpt = NamespacePrototype.buildOpt;\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service.Method\r\n * @expose\r\n */\r\n Reflect.Service.Method = Method;\r\n\r\n /**\r\n * RPC service method.\r\n * @exports ProtoBuf.Reflect.Service.RPCMethod\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Service} svc Service\r\n * @param {string} name Method name\r\n * @param {string} request Request message name\r\n * @param {string} response Response message name\r\n * @param {boolean} request_stream Whether requests are streamed\r\n * @param {boolean} response_stream Whether responses are streamed\r\n * @param {Object.=} options Options\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Service.Method\r\n */\r\n var RPCMethod = function(builder, svc, name, request, response, request_stream, response_stream, options) {\r\n Method.call(this, builder, svc, name, options);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Service.RPCMethod\";\r\n\r\n /**\r\n * Request message name.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.requestName = request;\r\n\r\n /**\r\n * Response message name.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.responseName = response;\r\n\r\n /**\r\n * Whether requests are streamed\r\n * @type {bool}\r\n * @expose\r\n */\r\n this.requestStream = request_stream;\r\n\r\n /**\r\n * Whether responses are streamed\r\n * @type {bool}\r\n * @expose\r\n */\r\n this.responseStream = response_stream;\r\n\r\n /**\r\n * Resolved request message type.\r\n * @type {ProtoBuf.Reflect.Message}\r\n * @expose\r\n */\r\n this.resolvedRequestType = null;\r\n\r\n /**\r\n * Resolved response message type.\r\n * @type {ProtoBuf.Reflect.Message}\r\n * @expose\r\n */\r\n this.resolvedResponseType = null;\r\n };\r\n\r\n // Extends Method\r\n RPCMethod.prototype = Object.create(Method.prototype);\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service.RPCMethod\r\n * @expose\r\n */\r\n Reflect.Service.RPCMethod = RPCMethod;\r\n\r\n return Reflect;\r\n\r\n })(ProtoBuf);\r\n\r\n /**\r\n * @alias ProtoBuf.Builder\r\n * @expose\r\n */\r\n ProtoBuf.Builder = (function(ProtoBuf, Lang, Reflect) {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a new Builder.\r\n * @exports ProtoBuf.Builder\r\n * @class Provides the functionality to build protocol messages.\r\n * @param {Object.=} options Options\r\n * @constructor\r\n */\r\n var Builder = function(options) {\r\n\r\n /**\r\n * Namespace.\r\n * @type {ProtoBuf.Reflect.Namespace}\r\n * @expose\r\n */\r\n this.ns = new Reflect.Namespace(this, null, \"\"); // Global namespace\r\n\r\n /**\r\n * Namespace pointer.\r\n * @type {ProtoBuf.Reflect.T}\r\n * @expose\r\n */\r\n this.ptr = this.ns;\r\n\r\n /**\r\n * Resolved flag.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.resolved = false;\r\n\r\n /**\r\n * The current building result.\r\n * @type {Object.|null}\r\n * @expose\r\n */\r\n this.result = null;\r\n\r\n /**\r\n * Imported files.\r\n * @type {Array.}\r\n * @expose\r\n */\r\n this.files = {};\r\n\r\n /**\r\n * Import root override.\r\n * @type {?string}\r\n * @expose\r\n */\r\n this.importRoot = null;\r\n\r\n /**\r\n * Options.\r\n * @type {!Object.}\r\n * @expose\r\n */\r\n this.options = options || {};\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Builder.prototype\r\n * @inner\r\n */\r\n var BuilderPrototype = Builder.prototype;\r\n\r\n // ----- Definition tests -----\r\n\r\n /**\r\n * Tests if a definition most likely describes a message.\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isMessage = function(def) {\r\n // Messages require a string name\r\n if (typeof def[\"name\"] !== 'string')\r\n return false;\r\n // Messages do not contain values (enum) or rpc methods (service)\r\n if (typeof def[\"values\"] !== 'undefined' || typeof def[\"rpc\"] !== 'undefined')\r\n return false;\r\n return true;\r\n };\r\n\r\n /**\r\n * Tests if a definition most likely describes a message field.\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isMessageField = function(def) {\r\n // Message fields require a string rule, name and type and an id\r\n if (typeof def[\"rule\"] !== 'string' || typeof def[\"name\"] !== 'string' || typeof def[\"type\"] !== 'string' || typeof def[\"id\"] === 'undefined')\r\n return false;\r\n return true;\r\n };\r\n\r\n /**\r\n * Tests if a definition most likely describes an enum.\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isEnum = function(def) {\r\n // Enums require a string name\r\n if (typeof def[\"name\"] !== 'string')\r\n return false;\r\n // Enums require at least one value\r\n if (typeof def[\"values\"] === 'undefined' || !Array.isArray(def[\"values\"]) || def[\"values\"].length === 0)\r\n return false;\r\n return true;\r\n };\r\n\r\n /**\r\n * Tests if a definition most likely describes a service.\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isService = function(def) {\r\n // Services require a string name and an rpc object\r\n if (typeof def[\"name\"] !== 'string' || typeof def[\"rpc\"] !== 'object' || !def[\"rpc\"])\r\n return false;\r\n return true;\r\n };\r\n\r\n /**\r\n * Tests if a definition most likely describes an extended message\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isExtend = function(def) {\r\n // Extends rquire a string ref\r\n if (typeof def[\"ref\"] !== 'string')\r\n return false;\r\n return true;\r\n };\r\n\r\n // ----- Building -----\r\n\r\n /**\r\n * Resets the pointer to the root namespace.\r\n * @returns {!ProtoBuf.Builder} this\r\n * @expose\r\n */\r\n BuilderPrototype.reset = function() {\r\n this.ptr = this.ns;\r\n return this;\r\n };\r\n\r\n /**\r\n * Defines a namespace on top of the current pointer position and places the pointer on it.\r\n * @param {string} namespace\r\n * @return {!ProtoBuf.Builder} this\r\n * @expose\r\n */\r\n BuilderPrototype.define = function(namespace) {\r\n if (typeof namespace !== 'string' || !Lang.TYPEREF.test(namespace))\r\n throw Error(\"illegal namespace: \"+namespace);\r\n namespace.split(\".\").forEach(function(part) {\r\n var ns = this.ptr.getChild(part);\r\n if (ns === null) // Keep existing\r\n this.ptr.addChild(ns = new Reflect.Namespace(this, this.ptr, part));\r\n this.ptr = ns;\r\n }, this);\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates the specified definitions at the current pointer position.\r\n * @param {!Array.} defs Messages, enums or services to create\r\n * @returns {!ProtoBuf.Builder} this\r\n * @throws {Error} If a message definition is invalid\r\n * @expose\r\n */\r\n BuilderPrototype.create = function(defs) {\r\n if (!defs)\r\n return this; // Nothing to create\r\n if (!Array.isArray(defs))\r\n defs = [defs];\r\n else {\r\n if (defs.length === 0)\r\n return this;\r\n defs = defs.slice();\r\n }\r\n\r\n // It's quite hard to keep track of scopes and memory here, so let's do this iteratively.\r\n var stack = [defs];\r\n while (stack.length > 0) {\r\n defs = stack.pop();\r\n\r\n if (!Array.isArray(defs)) // Stack always contains entire namespaces\r\n throw Error(\"not a valid namespace: \"+JSON.stringify(defs));\r\n\r\n while (defs.length > 0) {\r\n var def = defs.shift(); // Namespaces always contain an array of messages, enums and services\r\n\r\n if (Builder.isMessage(def)) {\r\n var obj = new Reflect.Message(this, this.ptr, def[\"name\"], def[\"options\"], def[\"isGroup\"], def[\"syntax\"]);\r\n\r\n // Create OneOfs\r\n var oneofs = {};\r\n if (def[\"oneofs\"])\r\n Object.keys(def[\"oneofs\"]).forEach(function(name) {\r\n obj.addChild(oneofs[name] = new Reflect.Message.OneOf(this, obj, name));\r\n }, this);\r\n\r\n // Create fields\r\n if (def[\"fields\"])\r\n def[\"fields\"].forEach(function(fld) {\r\n if (obj.getChild(fld[\"id\"]|0) !== null)\r\n throw Error(\"duplicate or invalid field id in \"+obj.name+\": \"+fld['id']);\r\n if (fld[\"options\"] && typeof fld[\"options\"] !== 'object')\r\n throw Error(\"illegal field options in \"+obj.name+\"#\"+fld[\"name\"]);\r\n var oneof = null;\r\n if (typeof fld[\"oneof\"] === 'string' && !(oneof = oneofs[fld[\"oneof\"]]))\r\n throw Error(\"illegal oneof in \"+obj.name+\"#\"+fld[\"name\"]+\": \"+fld[\"oneof\"]);\r\n fld = new Reflect.Message.Field(this, obj, fld[\"rule\"], fld[\"keytype\"], fld[\"type\"], fld[\"name\"], fld[\"id\"], fld[\"options\"], oneof, def[\"syntax\"]);\r\n if (oneof)\r\n oneof.fields.push(fld);\r\n obj.addChild(fld);\r\n }, this);\r\n\r\n // Push children to stack\r\n var subObj = [];\r\n if (def[\"enums\"])\r\n def[\"enums\"].forEach(function(enm) {\r\n subObj.push(enm);\r\n });\r\n if (def[\"messages\"])\r\n def[\"messages\"].forEach(function(msg) {\r\n subObj.push(msg);\r\n });\r\n if (def[\"services\"])\r\n def[\"services\"].forEach(function(svc) {\r\n subObj.push(svc);\r\n });\r\n\r\n // Set extension range\r\n if (def[\"extensions\"]) {\r\n obj.extensions = def[\"extensions\"];\r\n if (obj.extensions[0] < ProtoBuf.ID_MIN)\r\n obj.extensions[0] = ProtoBuf.ID_MIN;\r\n if (obj.extensions[1] > ProtoBuf.ID_MAX)\r\n obj.extensions[1] = ProtoBuf.ID_MAX;\r\n }\r\n\r\n // Create on top of current namespace\r\n this.ptr.addChild(obj);\r\n if (subObj.length > 0) {\r\n stack.push(defs); // Push the current level back\r\n defs = subObj; // Continue processing sub level\r\n subObj = null;\r\n this.ptr = obj; // And move the pointer to this namespace\r\n obj = null;\r\n continue;\r\n }\r\n subObj = null;\r\n\r\n } else if (Builder.isEnum(def)) {\r\n\r\n obj = new Reflect.Enum(this, this.ptr, def[\"name\"], def[\"options\"], def[\"syntax\"]);\r\n def[\"values\"].forEach(function(val) {\r\n obj.addChild(new Reflect.Enum.Value(this, obj, val[\"name\"], val[\"id\"]));\r\n }, this);\r\n this.ptr.addChild(obj);\r\n\r\n } else if (Builder.isService(def)) {\r\n\r\n obj = new Reflect.Service(this, this.ptr, def[\"name\"], def[\"options\"]);\r\n Object.keys(def[\"rpc\"]).forEach(function(name) {\r\n var mtd = def[\"rpc\"][name];\r\n obj.addChild(new Reflect.Service.RPCMethod(this, obj, name, mtd[\"request\"], mtd[\"response\"], !!mtd[\"request_stream\"], !!mtd[\"response_stream\"], mtd[\"options\"]));\r\n }, this);\r\n this.ptr.addChild(obj);\r\n\r\n } else if (Builder.isExtend(def)) {\r\n\r\n obj = this.ptr.resolve(def[\"ref\"], true);\r\n if (obj) {\r\n def[\"fields\"].forEach(function(fld) {\r\n if (obj.getChild(fld['id']|0) !== null)\r\n throw Error(\"duplicate extended field id in \"+obj.name+\": \"+fld['id']);\r\n if (fld['id'] < obj.extensions[0] || fld['id'] > obj.extensions[1])\r\n throw Error(\"illegal extended field id in \"+obj.name+\": \"+fld['id']+\" (\"+obj.extensions.join(' to ')+\" expected)\");\r\n // Convert extension field names to camel case notation if the override is set\r\n var name = fld[\"name\"];\r\n if (this.options['convertFieldsToCamelCase'])\r\n name = ProtoBuf.Util.toCamelCase(name);\r\n // see #161: Extensions use their fully qualified name as their runtime key and...\r\n var field = new Reflect.Message.ExtensionField(this, obj, fld[\"rule\"], fld[\"type\"], this.ptr.fqn()+'.'+name, fld[\"id\"], fld[\"options\"]);\r\n // ...are added on top of the current namespace as an extension which is used for\r\n // resolving their type later on (the extension always keeps the original name to\r\n // prevent naming collisions)\r\n var ext = new Reflect.Extension(this, this.ptr, fld[\"name\"], field);\r\n field.extension = ext;\r\n this.ptr.addChild(ext);\r\n obj.addChild(field);\r\n }, this);\r\n\r\n } else if (!/\\.?google\\.protobuf\\./.test(def[\"ref\"])) // Silently skip internal extensions\r\n throw Error(\"extended message \"+def[\"ref\"]+\" is not defined\");\r\n\r\n } else\r\n throw Error(\"not a valid definition: \"+JSON.stringify(def));\r\n\r\n def = null;\r\n obj = null;\r\n }\r\n // Break goes here\r\n defs = null;\r\n this.ptr = this.ptr.parent; // Namespace done, continue at parent\r\n }\r\n this.resolved = false; // Require re-resolve\r\n this.result = null; // Require re-build\r\n return this;\r\n };\r\n\r\n /**\r\n * Propagates syntax to all children.\r\n * @param {!Object} parent\r\n * @inner\r\n */\r\n function propagateSyntax(parent) {\r\n if (parent['messages']) {\r\n parent['messages'].forEach(function(child) {\r\n child[\"syntax\"] = parent[\"syntax\"];\r\n propagateSyntax(child);\r\n });\r\n }\r\n if (parent['enums']) {\r\n parent['enums'].forEach(function(child) {\r\n child[\"syntax\"] = parent[\"syntax\"];\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Imports another definition into this builder.\r\n * @param {Object.} json Parsed import\r\n * @param {(string|{root: string, file: string})=} filename Imported file name\r\n * @returns {!ProtoBuf.Builder} this\r\n * @throws {Error} If the definition or file cannot be imported\r\n * @expose\r\n */\r\n BuilderPrototype[\"import\"] = function(json, filename) {\r\n var delim = '/';\r\n\r\n // Make sure to skip duplicate imports\r\n\r\n if (typeof filename === 'string') {\r\n\r\n if (ProtoBuf.Util.IS_NODE)\r\n filename = require(\"path\")['resolve'](filename);\r\n if (this.files[filename] === true)\r\n return this.reset();\r\n this.files[filename] = true;\r\n\r\n } else if (typeof filename === 'object') { // Object with root, file.\r\n\r\n var root = filename.root;\r\n if (ProtoBuf.Util.IS_NODE)\r\n root = require(\"path\")['resolve'](root);\r\n if (root.indexOf(\"\\\\\") >= 0 || filename.file.indexOf(\"\\\\\") >= 0)\r\n delim = '\\\\';\r\n var fname = root + delim + filename.file;\r\n if (this.files[fname] === true)\r\n return this.reset();\r\n this.files[fname] = true;\r\n }\r\n\r\n // Import imports\r\n\r\n if (json['imports'] && json['imports'].length > 0) {\r\n var importRoot,\r\n resetRoot = false;\r\n\r\n if (typeof filename === 'object') { // If an import root is specified, override\r\n\r\n this.importRoot = filename[\"root\"]; resetRoot = true; // ... and reset afterwards\r\n importRoot = this.importRoot;\r\n filename = filename[\"file\"];\r\n if (importRoot.indexOf(\"\\\\\") >= 0 || filename.indexOf(\"\\\\\") >= 0)\r\n delim = '\\\\';\r\n\r\n } else if (typeof filename === 'string') {\r\n\r\n if (this.importRoot) // If import root is overridden, use it\r\n importRoot = this.importRoot;\r\n else { // Otherwise compute from filename\r\n if (filename.indexOf(\"/\") >= 0) { // Unix\r\n importRoot = filename.replace(/\\/[^\\/]*$/, \"\");\r\n if (/* /file.proto */ importRoot === \"\")\r\n importRoot = \"/\";\r\n } else if (filename.indexOf(\"\\\\\") >= 0) { // Windows\r\n importRoot = filename.replace(/\\\\[^\\\\]*$/, \"\");\r\n delim = '\\\\';\r\n } else\r\n importRoot = \".\";\r\n }\r\n\r\n } else\r\n importRoot = null;\r\n\r\n for (var i=0; i)=} path Specifies what to return. If omitted, the entire namespace will be returned.\r\n * @returns {!ProtoBuf.Builder.Message|!Object.}\r\n * @throws {Error} If a type could not be resolved\r\n * @expose\r\n */\r\n BuilderPrototype.build = function(path) {\r\n this.reset();\r\n if (!this.resolved)\r\n this.resolveAll(),\r\n this.resolved = true,\r\n this.result = null; // Require re-build\r\n if (this.result === null) // (Re-)Build\r\n this.result = this.ns.build();\r\n if (!path)\r\n return this.result;\r\n var part = typeof path === 'string' ? path.split(\".\") : path,\r\n ptr = this.result; // Build namespace pointer (no hasChild etc.)\r\n for (var i=0; i=} contents Initial contents\r\n * @constructor\r\n */\r\n var Map = function(field, contents) {\r\n if (!field.map)\r\n throw Error(\"field is not a map\");\r\n\r\n /**\r\n * The field corresponding to this map.\r\n * @type {!ProtoBuf.Reflect.Field}\r\n */\r\n this.field = field;\r\n\r\n /**\r\n * Element instance corresponding to key type.\r\n * @type {!ProtoBuf.Reflect.Element}\r\n */\r\n this.keyElem = new Reflect.Element(field.keyType, null, true, field.syntax);\r\n\r\n /**\r\n * Element instance corresponding to value type.\r\n * @type {!ProtoBuf.Reflect.Element}\r\n */\r\n this.valueElem = new Reflect.Element(field.type, field.resolvedType, false, field.syntax);\r\n\r\n /**\r\n * Internal map: stores mapping of (string form of key) -> (key, value)\r\n * pair.\r\n *\r\n * We provide map semantics for arbitrary key types, but we build on top\r\n * of an Object, which has only string keys. In order to avoid the need\r\n * to convert a string key back to its native type in many situations,\r\n * we store the native key value alongside the value. Thus, we only need\r\n * a one-way mapping from a key type to its string form that guarantees\r\n * uniqueness and equality (i.e., str(K1) === str(K2) if and only if K1\r\n * === K2).\r\n *\r\n * @type {!Object}\r\n */\r\n this.map = {};\r\n\r\n /**\r\n * Returns the number of elements in the map.\r\n */\r\n Object.defineProperty(this, \"size\", {\r\n get: function() { return Object.keys(this.map).length; }\r\n });\r\n\r\n // Fill initial contents from a raw object.\r\n if (contents) {\r\n var keys = Object.keys(contents);\r\n for (var i = 0; i < keys.length; i++) {\r\n var key = this.keyElem.valueFromString(keys[i]);\r\n var val = this.valueElem.verifyValue(contents[keys[i]]);\r\n this.map[this.keyElem.valueToString(key)] =\r\n { key: key, value: val };\r\n }\r\n }\r\n };\r\n\r\n var MapPrototype = Map.prototype;\r\n\r\n /**\r\n * Helper: return an iterator over an array.\r\n * @param {!Array<*>} arr the array\r\n * @returns {!Object} an iterator\r\n * @inner\r\n */\r\n function arrayIterator(arr) {\r\n var idx = 0;\r\n return {\r\n next: function() {\r\n if (idx < arr.length)\r\n return { done: false, value: arr[idx++] };\r\n return { done: true };\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Clears the map.\r\n */\r\n MapPrototype.clear = function() {\r\n this.map = {};\r\n };\r\n\r\n /**\r\n * Deletes a particular key from the map.\r\n * @returns {boolean} Whether any entry with this key was deleted.\r\n */\r\n MapPrototype[\"delete\"] = function(key) {\r\n var keyValue = this.keyElem.valueToString(this.keyElem.verifyValue(key));\r\n var hadKey = keyValue in this.map;\r\n delete this.map[keyValue];\r\n return hadKey;\r\n };\r\n\r\n /**\r\n * Returns an iterator over [key, value] pairs in the map.\r\n * @returns {Object} The iterator\r\n */\r\n MapPrototype.entries = function() {\r\n var entries = [];\r\n var strKeys = Object.keys(this.map);\r\n for (var i = 0, entry; i < strKeys.length; i++)\r\n entries.push([(entry=this.map[strKeys[i]]).key, entry.value]);\r\n return arrayIterator(entries);\r\n };\r\n\r\n /**\r\n * Returns an iterator over keys in the map.\r\n * @returns {Object} The iterator\r\n */\r\n MapPrototype.keys = function() {\r\n var keys = [];\r\n var strKeys = Object.keys(this.map);\r\n for (var i = 0; i < strKeys.length; i++)\r\n keys.push(this.map[strKeys[i]].key);\r\n return arrayIterator(keys);\r\n };\r\n\r\n /**\r\n * Returns an iterator over values in the map.\r\n * @returns {!Object} The iterator\r\n */\r\n MapPrototype.values = function() {\r\n var values = [];\r\n var strKeys = Object.keys(this.map);\r\n for (var i = 0; i < strKeys.length; i++)\r\n values.push(this.map[strKeys[i]].value);\r\n return arrayIterator(values);\r\n };\r\n\r\n /**\r\n * Iterates over entries in the map, calling a function on each.\r\n * @param {function(this:*, *, *, *)} cb The callback to invoke with value, key, and map arguments.\r\n * @param {Object=} thisArg The `this` value for the callback\r\n */\r\n MapPrototype.forEach = function(cb, thisArg) {\r\n var strKeys = Object.keys(this.map);\r\n for (var i = 0, entry; i < strKeys.length; i++)\r\n cb.call(thisArg, (entry=this.map[strKeys[i]]).value, entry.key, this);\r\n };\r\n\r\n /**\r\n * Sets a key in the map to the given value.\r\n * @param {*} key The key\r\n * @param {*} value The value\r\n * @returns {!ProtoBuf.Map} The map instance\r\n */\r\n MapPrototype.set = function(key, value) {\r\n var keyValue = this.keyElem.verifyValue(key);\r\n var valValue = this.valueElem.verifyValue(value);\r\n this.map[this.keyElem.valueToString(keyValue)] =\r\n { key: keyValue, value: valValue };\r\n return this;\r\n };\r\n\r\n /**\r\n * Gets the value corresponding to a key in the map.\r\n * @param {*} key The key\r\n * @returns {*|undefined} The value, or `undefined` if key not present\r\n */\r\n MapPrototype.get = function(key) {\r\n var keyValue = this.keyElem.valueToString(this.keyElem.verifyValue(key));\r\n if (!(keyValue in this.map))\r\n return undefined;\r\n return this.map[keyValue].value;\r\n };\r\n\r\n /**\r\n * Determines whether the given key is present in the map.\r\n * @param {*} key The key\r\n * @returns {boolean} `true` if the key is present\r\n */\r\n MapPrototype.has = function(key) {\r\n var keyValue = this.keyElem.valueToString(this.keyElem.verifyValue(key));\r\n return (keyValue in this.map);\r\n };\r\n\r\n return Map;\r\n })(ProtoBuf, ProtoBuf.Reflect);\r\n\r\n\r\n /**\r\n * Loads a .proto string and returns the Builder.\r\n * @param {string} proto .proto file contents\r\n * @param {(ProtoBuf.Builder|string|{root: string, file: string})=} builder Builder to append to. Will create a new one if omitted.\r\n * @param {(string|{root: string, file: string})=} filename The corresponding file name if known. Must be specified for imports.\r\n * @return {ProtoBuf.Builder} Builder to create new messages\r\n * @throws {Error} If the definition cannot be parsed or built\r\n * @expose\r\n */\r\n ProtoBuf.loadProto = function(proto, builder, filename) {\r\n if (typeof builder === 'string' || (builder && typeof builder[\"file\"] === 'string' && typeof builder[\"root\"] === 'string'))\r\n filename = builder,\r\n builder = undefined;\r\n return ProtoBuf.loadJson(ProtoBuf.DotProto.Parser.parse(proto), builder, filename);\r\n };\r\n\r\n /**\r\n * Loads a .proto string and returns the Builder. This is an alias of {@link ProtoBuf.loadProto}.\r\n * @function\r\n * @param {string} proto .proto file contents\r\n * @param {(ProtoBuf.Builder|string)=} builder Builder to append to. Will create a new one if omitted.\r\n * @param {(string|{root: string, file: string})=} filename The corresponding file name if known. Must be specified for imports.\r\n * @return {ProtoBuf.Builder} Builder to create new messages\r\n * @throws {Error} If the definition cannot be parsed or built\r\n * @expose\r\n */\r\n ProtoBuf.protoFromString = ProtoBuf.loadProto; // Legacy\r\n\r\n /**\r\n * Loads a .proto file and returns the Builder.\r\n * @param {string|{root: string, file: string}} filename Path to proto file or an object specifying 'file' with\r\n * an overridden 'root' path for all imported files.\r\n * @param {function(?Error, !ProtoBuf.Builder=)=} callback Callback that will receive `null` as the first and\r\n * the Builder as its second argument on success, otherwise the error as its first argument. If omitted, the\r\n * file will be read synchronously and this function will return the Builder.\r\n * @param {ProtoBuf.Builder=} builder Builder to append to. Will create a new one if omitted.\r\n * @return {?ProtoBuf.Builder|undefined} The Builder if synchronous (no callback specified, will be NULL if the\r\n * request has failed), else undefined\r\n * @expose\r\n */\r\n ProtoBuf.loadProtoFile = function(filename, callback, builder) {\r\n if (callback && typeof callback === 'object')\r\n builder = callback,\r\n callback = null;\r\n else if (!callback || typeof callback !== 'function')\r\n callback = null;\r\n if (callback)\r\n return ProtoBuf.Util.fetch(typeof filename === 'string' ? filename : filename[\"root\"]+\"/\"+filename[\"file\"], function(contents) {\r\n if (contents === null) {\r\n callback(Error(\"Failed to fetch file\"));\r\n return;\r\n }\r\n try {\r\n callback(null, ProtoBuf.loadProto(contents, builder, filename));\r\n } catch (e) {\r\n callback(e);\r\n }\r\n });\r\n var contents = ProtoBuf.Util.fetch(typeof filename === 'object' ? filename[\"root\"]+\"/\"+filename[\"file\"] : filename);\r\n return contents === null ? null : ProtoBuf.loadProto(contents, builder, filename);\r\n };\r\n\r\n /**\r\n * Loads a .proto file and returns the Builder. This is an alias of {@link ProtoBuf.loadProtoFile}.\r\n * @function\r\n * @param {string|{root: string, file: string}} filename Path to proto file or an object specifying 'file' with\r\n * an overridden 'root' path for all imported files.\r\n * @param {function(?Error, !ProtoBuf.Builder=)=} callback Callback that will receive `null` as the first and\r\n * the Builder as its second argument on success, otherwise the error as its first argument. If omitted, the\r\n * file will be read synchronously and this function will return the Builder.\r\n * @param {ProtoBuf.Builder=} builder Builder to append to. Will create a new one if omitted.\r\n * @return {!ProtoBuf.Builder|undefined} The Builder if synchronous (no callback specified, will be NULL if the\r\n * request has failed), else undefined\r\n * @expose\r\n */\r\n ProtoBuf.protoFromFile = ProtoBuf.loadProtoFile; // Legacy\r\n\r\n\r\n /**\r\n * Constructs a new empty Builder.\r\n * @param {Object.=} options Builder options, defaults to global options set on ProtoBuf\r\n * @return {!ProtoBuf.Builder} Builder\r\n * @expose\r\n */\r\n ProtoBuf.newBuilder = function(options) {\r\n options = options || {};\r\n if (typeof options['convertFieldsToCamelCase'] === 'undefined')\r\n options['convertFieldsToCamelCase'] = ProtoBuf.convertFieldsToCamelCase;\r\n if (typeof options['populateAccessors'] === 'undefined')\r\n options['populateAccessors'] = ProtoBuf.populateAccessors;\r\n return new ProtoBuf.Builder(options);\r\n };\r\n\r\n /**\r\n * Loads a .json definition and returns the Builder.\r\n * @param {!*|string} json JSON definition\r\n * @param {(ProtoBuf.Builder|string|{root: string, file: string})=} builder Builder to append to. Will create a new one if omitted.\r\n * @param {(string|{root: string, file: string})=} filename The corresponding file name if known. Must be specified for imports.\r\n * @return {ProtoBuf.Builder} Builder to create new messages\r\n * @throws {Error} If the definition cannot be parsed or built\r\n * @expose\r\n */\r\n ProtoBuf.loadJson = function(json, builder, filename) {\r\n if (typeof builder === 'string' || (builder && typeof builder[\"file\"] === 'string' && typeof builder[\"root\"] === 'string'))\r\n filename = builder,\r\n builder = null;\r\n if (!builder || typeof builder !== 'object')\r\n builder = ProtoBuf.newBuilder();\r\n if (typeof json === 'string')\r\n json = JSON.parse(json);\r\n builder[\"import\"](json, filename);\r\n builder.resolveAll();\r\n return builder;\r\n };\r\n\r\n /**\r\n * Loads a .json file and returns the Builder.\r\n * @param {string|!{root: string, file: string}} filename Path to json file or an object specifying 'file' with\r\n * an overridden 'root' path for all imported files.\r\n * @param {function(?Error, !ProtoBuf.Builder=)=} callback Callback that will receive `null` as the first and\r\n * the Builder as its second argument on success, otherwise the error as its first argument. If omitted, the\r\n * file will be read synchronously and this function will return the Builder.\r\n * @param {ProtoBuf.Builder=} builder Builder to append to. Will create a new one if omitted.\r\n * @return {?ProtoBuf.Builder|undefined} The Builder if synchronous (no callback specified, will be NULL if the\r\n * request has failed), else undefined\r\n * @expose\r\n */\r\n ProtoBuf.loadJsonFile = function(filename, callback, builder) {\r\n if (callback && typeof callback === 'object')\r\n builder = callback,\r\n callback = null;\r\n else if (!callback || typeof callback !== 'function')\r\n callback = null;\r\n if (callback)\r\n return ProtoBuf.Util.fetch(typeof filename === 'string' ? filename : filename[\"root\"]+\"/\"+filename[\"file\"], function(contents) {\r\n if (contents === null) {\r\n callback(Error(\"Failed to fetch file\"));\r\n return;\r\n }\r\n try {\r\n callback(null, ProtoBuf.loadJson(JSON.parse(contents), builder, filename));\r\n } catch (e) {\r\n callback(e);\r\n }\r\n });\r\n var contents = ProtoBuf.Util.fetch(typeof filename === 'object' ? filename[\"root\"]+\"/\"+filename[\"file\"] : filename);\r\n return contents === null ? null : ProtoBuf.loadJson(JSON.parse(contents), builder, filename);\r\n };\r\n\r\n return ProtoBuf;\r\n});\r\n","// shim for using process in browser\n\nvar process = module.exports = {};\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = setTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n clearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n setTimeout(drainQueue, 0);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/*\r\n Copyright 2013-2014 Daniel Wirtz \r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n */\r\n\r\n/**\r\n * @license bytebuffer.js (c) 2015 Daniel Wirtz \r\n * Backing buffer: ArrayBuffer, Accessor: Uint8Array\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/bytebuffer.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (typeof define === 'function' && define[\"amd\"])\r\n define([\"long\"], factory);\r\n /* CommonJS */ else if (typeof require === 'function' && typeof module === \"object\" && module && module[\"exports\"])\r\n module['exports'] = (function() {\r\n var Long; try { Long = require(\"long\"); } catch (e) {}\r\n return factory(Long);\r\n })();\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"ByteBuffer\"] = factory(global[\"dcodeIO\"][\"Long\"]);\r\n\r\n})(this, function(Long) {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a new ByteBuffer.\r\n * @class The swiss army knife for binary data in JavaScript.\r\n * @exports ByteBuffer\r\n * @constructor\r\n * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}.\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @expose\r\n */\r\n var ByteBuffer = function(capacity, littleEndian, noAssert) {\r\n if (typeof capacity === 'undefined')\r\n capacity = ByteBuffer.DEFAULT_CAPACITY;\r\n if (typeof littleEndian === 'undefined')\r\n littleEndian = ByteBuffer.DEFAULT_ENDIAN;\r\n if (typeof noAssert === 'undefined')\r\n noAssert = ByteBuffer.DEFAULT_NOASSERT;\r\n if (!noAssert) {\r\n capacity = capacity | 0;\r\n if (capacity < 0)\r\n throw RangeError(\"Illegal capacity\");\r\n littleEndian = !!littleEndian;\r\n noAssert = !!noAssert;\r\n }\r\n\r\n /**\r\n * Backing ArrayBuffer.\r\n * @type {!ArrayBuffer}\r\n * @expose\r\n */\r\n this.buffer = capacity === 0 ? EMPTY_BUFFER : new ArrayBuffer(capacity);\r\n\r\n /**\r\n * Uint8Array utilized to manipulate the backing buffer. Becomes `null` if the backing buffer has a capacity of `0`.\r\n * @type {?Uint8Array}\r\n * @expose\r\n */\r\n this.view = capacity === 0 ? null : new Uint8Array(this.buffer);\r\n\r\n /**\r\n * Absolute read/write offset.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#flip\r\n * @see ByteBuffer#clear\r\n */\r\n this.offset = 0;\r\n\r\n /**\r\n * Marked offset.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#mark\r\n * @see ByteBuffer#reset\r\n */\r\n this.markedOffset = -1;\r\n\r\n /**\r\n * Absolute limit of the contained data. Set to the backing buffer's capacity upon allocation.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#flip\r\n * @see ByteBuffer#clear\r\n */\r\n this.limit = capacity;\r\n\r\n /**\r\n * Whether to use little endian byte order, defaults to `false` for big endian.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.littleEndian = typeof littleEndian !== 'undefined' ? !!littleEndian : false;\r\n\r\n /**\r\n * Whether to skip assertions of offsets and values, defaults to `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.noAssert = !!noAssert;\r\n };\r\n\r\n /**\r\n * ByteBuffer version.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.VERSION = \"5.0.0\";\r\n\r\n /**\r\n * Little endian constant that can be used instead of its boolean value. Evaluates to `true`.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.LITTLE_ENDIAN = true;\r\n\r\n /**\r\n * Big endian constant that can be used instead of its boolean value. Evaluates to `false`.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.BIG_ENDIAN = false;\r\n\r\n /**\r\n * Default initial capacity of `16`.\r\n * @type {number}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_CAPACITY = 16;\r\n\r\n /**\r\n * Default endianess of `false` for big endian.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_ENDIAN = ByteBuffer.BIG_ENDIAN;\r\n\r\n /**\r\n * Default no assertions flag of `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_NOASSERT = false;\r\n\r\n /**\r\n * A `Long` class for representing a 64-bit two's-complement integer value. May be `null` if Long.js has not been loaded\r\n * and int64 support is not available.\r\n * @type {?Long}\r\n * @const\r\n * @see https://github.com/dcodeIO/Long.js\r\n * @expose\r\n */\r\n ByteBuffer.Long = Long || null;\r\n\r\n /**\r\n * @alias ByteBuffer.prototype\r\n * @inner\r\n */\r\n var ByteBufferPrototype = ByteBuffer.prototype;\r\n\r\n /**\r\n * An indicator used to reliably determine if an object is a ByteBuffer or not.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n * @private\r\n */\r\n ByteBufferPrototype.__isByteBuffer__;\r\n\r\n Object.defineProperty(ByteBufferPrototype, \"__isByteBuffer__\", {\r\n value: true,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n\r\n // helpers\r\n\r\n /**\r\n * @type {!ArrayBuffer}\r\n * @inner\r\n */\r\n var EMPTY_BUFFER = new ArrayBuffer(0);\r\n\r\n /**\r\n * String.fromCharCode reference for compile-time renaming.\r\n * @type {function(...number):string}\r\n * @inner\r\n */\r\n var stringFromCharCode = String.fromCharCode;\r\n\r\n /**\r\n * Creates a source function for a string.\r\n * @param {string} s String to read from\r\n * @returns {function():number|null} Source function returning the next char code respectively `null` if there are\r\n * no more characters left.\r\n * @throws {TypeError} If the argument is invalid\r\n * @inner\r\n */\r\n function stringSource(s) {\r\n var i=0; return function() {\r\n return i < s.length ? s.charCodeAt(i++) : null;\r\n };\r\n }\r\n\r\n /**\r\n * Creates a destination function for a string.\r\n * @returns {function(number=):undefined|string} Destination function successively called with the next char code.\r\n * Returns the final string when called without arguments.\r\n * @inner\r\n */\r\n function stringDestination() {\r\n var cs = [], ps = []; return function() {\r\n if (arguments.length === 0)\r\n return ps.join('')+stringFromCharCode.apply(String, cs);\r\n if (cs.length + arguments.length > 1024)\r\n ps.push(stringFromCharCode.apply(String, cs)),\r\n cs.length = 0;\r\n Array.prototype.push.apply(cs, arguments);\r\n };\r\n }\r\n\r\n /**\r\n * Gets the accessor type.\r\n * @returns {Function} `Buffer` under node.js, `Uint8Array` respectively `DataView` in the browser (classes)\r\n * @expose\r\n */\r\n ByteBuffer.accessor = function() {\r\n return Uint8Array;\r\n };\r\n /**\r\n * Allocates a new ByteBuffer backed by a buffer of the specified capacity.\r\n * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}.\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBuffer.allocate = function(capacity, littleEndian, noAssert) {\r\n return new ByteBuffer(capacity, littleEndian, noAssert);\r\n };\r\n\r\n /**\r\n * Concatenates multiple ByteBuffers into one.\r\n * @param {!Array.} buffers Buffers to concatenate\r\n * @param {(string|boolean)=} encoding String encoding if `buffers` contains a string (\"base64\", \"hex\", \"binary\",\r\n * defaults to \"utf8\")\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order for the resulting ByteBuffer. Defaults\r\n * to {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values for the resulting ByteBuffer. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} Concatenated ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.concat = function(buffers, encoding, littleEndian, noAssert) {\r\n if (typeof encoding === 'boolean' || typeof encoding !== 'string') {\r\n noAssert = littleEndian;\r\n littleEndian = encoding;\r\n encoding = undefined;\r\n }\r\n var capacity = 0;\r\n for (var i=0, k=buffers.length, length; i 0) capacity += length;\r\n }\r\n if (capacity === 0)\r\n return new ByteBuffer(0, littleEndian, noAssert);\r\n var bb = new ByteBuffer(capacity, littleEndian, noAssert),\r\n bi;\r\n i=0; while (i} buffer Anything that can be wrapped\r\n * @param {(string|boolean)=} encoding String encoding if `buffer` is a string (\"base64\", \"hex\", \"binary\", defaults to\r\n * \"utf8\")\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} A ByteBuffer wrapping `buffer`\r\n * @expose\r\n */\r\n ByteBuffer.wrap = function(buffer, encoding, littleEndian, noAssert) {\r\n if (typeof encoding !== 'string') {\r\n noAssert = littleEndian;\r\n littleEndian = encoding;\r\n encoding = undefined;\r\n }\r\n if (typeof buffer === 'string') {\r\n if (typeof encoding === 'undefined')\r\n encoding = \"utf8\";\r\n switch (encoding) {\r\n case \"base64\":\r\n return ByteBuffer.fromBase64(buffer, littleEndian);\r\n case \"hex\":\r\n return ByteBuffer.fromHex(buffer, littleEndian);\r\n case \"binary\":\r\n return ByteBuffer.fromBinary(buffer, littleEndian);\r\n case \"utf8\":\r\n return ByteBuffer.fromUTF8(buffer, littleEndian);\r\n case \"debug\":\r\n return ByteBuffer.fromDebug(buffer, littleEndian);\r\n default:\r\n throw Error(\"Unsupported encoding: \"+encoding);\r\n }\r\n }\r\n if (buffer === null || typeof buffer !== 'object')\r\n throw TypeError(\"Illegal buffer\");\r\n var bb;\r\n if (ByteBuffer.isByteBuffer(buffer)) {\r\n bb = ByteBufferPrototype.clone.call(buffer);\r\n bb.markedOffset = -1;\r\n return bb;\r\n }\r\n if (buffer instanceof Uint8Array) { // Extract ArrayBuffer from Uint8Array\r\n bb = new ByteBuffer(0, littleEndian, noAssert);\r\n if (buffer.length > 0) { // Avoid references to more than one EMPTY_BUFFER\r\n bb.buffer = buffer.buffer;\r\n bb.offset = buffer.byteOffset;\r\n bb.limit = buffer.byteOffset + buffer.byteLength;\r\n bb.view = new Uint8Array(buffer.buffer);\r\n }\r\n } else if (buffer instanceof ArrayBuffer) { // Reuse ArrayBuffer\r\n bb = new ByteBuffer(0, littleEndian, noAssert);\r\n if (buffer.byteLength > 0) {\r\n bb.buffer = buffer;\r\n bb.offset = 0;\r\n bb.limit = buffer.byteLength;\r\n bb.view = buffer.byteLength > 0 ? new Uint8Array(buffer) : null;\r\n }\r\n } else if (Object.prototype.toString.call(buffer) === \"[object Array]\") { // Create from octets\r\n bb = new ByteBuffer(buffer.length, littleEndian, noAssert);\r\n bb.limit = buffer.length;\r\n for (var i=0; i>>= 0;\n if (offset < 0 || offset + length > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+length+\") <= \"+this.buffer.byteLength);\n }\r\n var slice = this.slice(offset, offset + length);\r\n if (relative) this.offset += length;\n return slice;\r\n };\r\n\r\n /**\r\n * Writes a payload of bytes. This is an alias of {@link ByteBuffer#append}.\r\n * @function\r\n * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to write. If `source` is a ByteBuffer, its offsets\r\n * will be modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeBytes = ByteBufferPrototype.append;\r\n\r\n // types/ints/int8\r\n\r\n /**\r\n * Writes an 8bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt8 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 1;\n var capacity0 = this.buffer.byteLength;\n if (offset > capacity0)\n this.resize((capacity0 *= 2) > offset ? capacity0 : offset);\n offset -= 1;\n this.view[offset] = value;\r\n if (relative) this.offset += 1;\n return this;\r\n };\r\n\r\n /**\r\n * Writes an 8bit signed integer. This is an alias of {@link ByteBuffer#writeInt8}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeByte = ByteBufferPrototype.writeInt8;\r\n\r\n /**\r\n * Reads an 8bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt8 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var value = this.view[offset];\r\n if ((value & 0x80) === 0x80) value = -(0xFF - value + 1); // Cast to signed\r\n if (relative) this.offset += 1;\n return value;\r\n };\r\n\r\n /**\r\n * Reads an 8bit signed integer. This is an alias of {@link ByteBuffer#readInt8}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readByte = ByteBufferPrototype.readInt8;\r\n\r\n /**\r\n * Writes an 8bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint8 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 1;\n var capacity1 = this.buffer.byteLength;\n if (offset > capacity1)\n this.resize((capacity1 *= 2) > offset ? capacity1 : offset);\n offset -= 1;\n this.view[offset] = value;\r\n if (relative) this.offset += 1;\n return this;\r\n };\r\n\r\n /**\r\n * Writes an 8bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint8}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt8 = ByteBufferPrototype.writeUint8;\r\n\r\n /**\r\n * Reads an 8bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint8 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var value = this.view[offset];\r\n if (relative) this.offset += 1;\n return value;\r\n };\r\n\r\n /**\r\n * Reads an 8bit unsigned integer. This is an alias of {@link ByteBuffer#readUint8}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt8 = ByteBufferPrototype.readUint8;\r\n\r\n // types/ints/int16\r\n\r\n /**\r\n * Writes a 16bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt16 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 2;\n var capacity2 = this.buffer.byteLength;\n if (offset > capacity2)\n this.resize((capacity2 *= 2) > offset ? capacity2 : offset);\n offset -= 2;\n if (this.littleEndian) {\r\n this.view[offset+1] = (value & 0xFF00) >>> 8;\r\n this.view[offset ] = value & 0x00FF;\r\n } else {\r\n this.view[offset] = (value & 0xFF00) >>> 8;\r\n this.view[offset+1] = value & 0x00FF;\r\n }\r\n if (relative) this.offset += 2;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 16bit signed integer. This is an alias of {@link ByteBuffer#writeInt16}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeShort = ByteBufferPrototype.writeInt16;\r\n\r\n /**\r\n * Reads a 16bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt16 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 2 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+2+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\r\n value = this.view[offset ];\r\n value |= this.view[offset+1] << 8;\r\n } else {\r\n value = this.view[offset ] << 8;\r\n value |= this.view[offset+1];\r\n }\r\n if ((value & 0x8000) === 0x8000) value = -(0xFFFF - value + 1); // Cast to signed\r\n if (relative) this.offset += 2;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 16bit signed integer. This is an alias of {@link ByteBuffer#readInt16}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readShort = ByteBufferPrototype.readInt16;\r\n\r\n /**\r\n * Writes a 16bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint16 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 2;\n var capacity3 = this.buffer.byteLength;\n if (offset > capacity3)\n this.resize((capacity3 *= 2) > offset ? capacity3 : offset);\n offset -= 2;\n if (this.littleEndian) {\r\n this.view[offset+1] = (value & 0xFF00) >>> 8;\r\n this.view[offset ] = value & 0x00FF;\r\n } else {\r\n this.view[offset] = (value & 0xFF00) >>> 8;\r\n this.view[offset+1] = value & 0x00FF;\r\n }\r\n if (relative) this.offset += 2;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 16bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint16}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt16 = ByteBufferPrototype.writeUint16;\r\n\r\n /**\r\n * Reads a 16bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint16 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 2 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+2+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\r\n value = this.view[offset ];\r\n value |= this.view[offset+1] << 8;\r\n } else {\r\n value = this.view[offset ] << 8;\r\n value |= this.view[offset+1];\r\n }\r\n if (relative) this.offset += 2;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 16bit unsigned integer. This is an alias of {@link ByteBuffer#readUint16}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt16 = ByteBufferPrototype.readUint16;\r\n\r\n // types/ints/int32\r\n\r\n /**\r\n * Writes a 32bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity4 = this.buffer.byteLength;\n if (offset > capacity4)\n this.resize((capacity4 *= 2) > offset ? capacity4 : offset);\n offset -= 4;\n if (this.littleEndian) {\n this.view[offset+3] = (value >>> 24) & 0xFF;\n this.view[offset+2] = (value >>> 16) & 0xFF;\n this.view[offset+1] = (value >>> 8) & 0xFF;\n this.view[offset ] = value & 0xFF;\n } else {\n this.view[offset ] = (value >>> 24) & 0xFF;\n this.view[offset+1] = (value >>> 16) & 0xFF;\n this.view[offset+2] = (value >>> 8) & 0xFF;\n this.view[offset+3] = value & 0xFF;\n }\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit signed integer. This is an alias of {@link ByteBuffer#writeInt32}.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt = ByteBufferPrototype.writeInt32;\r\n\r\n /**\r\n * Reads a 32bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\n value = this.view[offset+2] << 16;\n value |= this.view[offset+1] << 8;\n value |= this.view[offset ];\n value += this.view[offset+3] << 24 >>> 0;\n } else {\n value = this.view[offset+1] << 16;\n value |= this.view[offset+2] << 8;\n value |= this.view[offset+3];\n value += this.view[offset ] << 24 >>> 0;\n }\n value |= 0; // Cast to signed\r\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit signed integer. This is an alias of {@link ByteBuffer#readInt32}.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt = ByteBufferPrototype.readInt32;\r\n\r\n /**\r\n * Writes a 32bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity5 = this.buffer.byteLength;\n if (offset > capacity5)\n this.resize((capacity5 *= 2) > offset ? capacity5 : offset);\n offset -= 4;\n if (this.littleEndian) {\n this.view[offset+3] = (value >>> 24) & 0xFF;\n this.view[offset+2] = (value >>> 16) & 0xFF;\n this.view[offset+1] = (value >>> 8) & 0xFF;\n this.view[offset ] = value & 0xFF;\n } else {\n this.view[offset ] = (value >>> 24) & 0xFF;\n this.view[offset+1] = (value >>> 16) & 0xFF;\n this.view[offset+2] = (value >>> 8) & 0xFF;\n this.view[offset+3] = value & 0xFF;\n }\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint32}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt32 = ByteBufferPrototype.writeUint32;\r\n\r\n /**\r\n * Reads a 32bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\n value = this.view[offset+2] << 16;\n value |= this.view[offset+1] << 8;\n value |= this.view[offset ];\n value += this.view[offset+3] << 24 >>> 0;\n } else {\n value = this.view[offset+1] << 16;\n value |= this.view[offset+2] << 8;\n value |= this.view[offset+3];\n value += this.view[offset ] << 24 >>> 0;\n }\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit unsigned integer. This is an alias of {@link ByteBuffer#readUint32}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt32 = ByteBufferPrototype.readUint32;\r\n\r\n // types/ints/int64\r\n\r\n if (Long) {\r\n\r\n /**\r\n * Writes a 64bit signed integer.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n offset += 8;\n var capacity6 = this.buffer.byteLength;\n if (offset > capacity6)\n this.resize((capacity6 *= 2) > offset ? capacity6 : offset);\n offset -= 8;\n var lo = value.low,\r\n hi = value.high;\r\n if (this.littleEndian) {\r\n this.view[offset+3] = (lo >>> 24) & 0xFF;\n this.view[offset+2] = (lo >>> 16) & 0xFF;\n this.view[offset+1] = (lo >>> 8) & 0xFF;\n this.view[offset ] = lo & 0xFF;\n offset += 4;\r\n this.view[offset+3] = (hi >>> 24) & 0xFF;\n this.view[offset+2] = (hi >>> 16) & 0xFF;\n this.view[offset+1] = (hi >>> 8) & 0xFF;\n this.view[offset ] = hi & 0xFF;\n } else {\r\n this.view[offset ] = (hi >>> 24) & 0xFF;\n this.view[offset+1] = (hi >>> 16) & 0xFF;\n this.view[offset+2] = (hi >>> 8) & 0xFF;\n this.view[offset+3] = hi & 0xFF;\n offset += 4;\r\n this.view[offset ] = (lo >>> 24) & 0xFF;\n this.view[offset+1] = (lo >>> 16) & 0xFF;\n this.view[offset+2] = (lo >>> 8) & 0xFF;\n this.view[offset+3] = lo & 0xFF;\n }\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit signed integer. This is an alias of {@link ByteBuffer#writeInt64}.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeLong = ByteBufferPrototype.writeInt64;\r\n\r\n /**\r\n * Reads a 64bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var lo = 0,\r\n hi = 0;\r\n if (this.littleEndian) {\r\n lo = this.view[offset+2] << 16;\n lo |= this.view[offset+1] << 8;\n lo |= this.view[offset ];\n lo += this.view[offset+3] << 24 >>> 0;\n offset += 4;\r\n hi = this.view[offset+2] << 16;\n hi |= this.view[offset+1] << 8;\n hi |= this.view[offset ];\n hi += this.view[offset+3] << 24 >>> 0;\n } else {\r\n hi = this.view[offset+1] << 16;\n hi |= this.view[offset+2] << 8;\n hi |= this.view[offset+3];\n hi += this.view[offset ] << 24 >>> 0;\n offset += 4;\r\n lo = this.view[offset+1] << 16;\n lo |= this.view[offset+2] << 8;\n lo |= this.view[offset+3];\n lo += this.view[offset ] << 24 >>> 0;\n }\r\n var value = new Long(lo, hi, false);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit signed integer. This is an alias of {@link ByteBuffer#readInt64}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readLong = ByteBufferPrototype.readInt64;\r\n\r\n /**\r\n * Writes a 64bit unsigned integer.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n offset += 8;\n var capacity7 = this.buffer.byteLength;\n if (offset > capacity7)\n this.resize((capacity7 *= 2) > offset ? capacity7 : offset);\n offset -= 8;\n var lo = value.low,\r\n hi = value.high;\r\n if (this.littleEndian) {\r\n this.view[offset+3] = (lo >>> 24) & 0xFF;\n this.view[offset+2] = (lo >>> 16) & 0xFF;\n this.view[offset+1] = (lo >>> 8) & 0xFF;\n this.view[offset ] = lo & 0xFF;\n offset += 4;\r\n this.view[offset+3] = (hi >>> 24) & 0xFF;\n this.view[offset+2] = (hi >>> 16) & 0xFF;\n this.view[offset+1] = (hi >>> 8) & 0xFF;\n this.view[offset ] = hi & 0xFF;\n } else {\r\n this.view[offset ] = (hi >>> 24) & 0xFF;\n this.view[offset+1] = (hi >>> 16) & 0xFF;\n this.view[offset+2] = (hi >>> 8) & 0xFF;\n this.view[offset+3] = hi & 0xFF;\n offset += 4;\r\n this.view[offset ] = (lo >>> 24) & 0xFF;\n this.view[offset+1] = (lo >>> 16) & 0xFF;\n this.view[offset+2] = (lo >>> 8) & 0xFF;\n this.view[offset+3] = lo & 0xFF;\n }\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint64}.\r\n * @function\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt64 = ByteBufferPrototype.writeUint64;\r\n\r\n /**\r\n * Reads a 64bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var lo = 0,\r\n hi = 0;\r\n if (this.littleEndian) {\r\n lo = this.view[offset+2] << 16;\n lo |= this.view[offset+1] << 8;\n lo |= this.view[offset ];\n lo += this.view[offset+3] << 24 >>> 0;\n offset += 4;\r\n hi = this.view[offset+2] << 16;\n hi |= this.view[offset+1] << 8;\n hi |= this.view[offset ];\n hi += this.view[offset+3] << 24 >>> 0;\n } else {\r\n hi = this.view[offset+1] << 16;\n hi |= this.view[offset+2] << 8;\n hi |= this.view[offset+3];\n hi += this.view[offset ] << 24 >>> 0;\n offset += 4;\r\n lo = this.view[offset+1] << 16;\n lo |= this.view[offset+2] << 8;\n lo |= this.view[offset+3];\n lo += this.view[offset ] << 24 >>> 0;\n }\r\n var value = new Long(lo, hi, true);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit unsigned integer. This is an alias of {@link ByteBuffer#readUint64}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt64 = ByteBufferPrototype.readUint64;\r\n\r\n } // Long\r\n\r\n\r\n // types/floats/float32\r\n\r\n /*\r\n ieee754 - https://github.com/feross/ieee754\r\n\r\n The MIT License (MIT)\r\n\r\n Copyright (c) Feross Aboukhadijeh\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining a copy\r\n of this software and associated documentation files (the \"Software\"), to deal\r\n in the Software without restriction, including without limitation the rights\r\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n copies of the Software, and to permit persons to whom the Software is\r\n furnished to do so, subject to the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be included in\r\n all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n THE SOFTWARE.\r\n */\r\n\r\n /**\r\n * Reads an IEEE754 float from a byte array.\r\n * @param {!Array} buffer\r\n * @param {number} offset\r\n * @param {boolean} isLE\r\n * @param {number} mLen\r\n * @param {number} nBytes\r\n * @returns {number}\r\n * @inner\r\n */\r\n function ieee754_read(buffer, offset, isLE, mLen, nBytes) {\r\n var e, m,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n nBits = -7,\r\n i = isLE ? (nBytes - 1) : 0,\r\n d = isLE ? -1 : 1,\r\n s = buffer[offset + i];\r\n\r\n i += d;\r\n\r\n e = s & ((1 << (-nBits)) - 1);\r\n s >>= (-nBits);\r\n nBits += eLen;\r\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\r\n\r\n m = e & ((1 << (-nBits)) - 1);\r\n e >>= (-nBits);\r\n nBits += mLen;\r\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\r\n\r\n if (e === 0) {\r\n e = 1 - eBias;\r\n } else if (e === eMax) {\r\n return m ? NaN : ((s ? -1 : 1) * Infinity);\r\n } else {\r\n m = m + Math.pow(2, mLen);\r\n e = e - eBias;\r\n }\r\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\r\n }\r\n\r\n /**\r\n * Writes an IEEE754 float to a byte array.\r\n * @param {!Array} buffer\r\n * @param {number} value\r\n * @param {number} offset\r\n * @param {boolean} isLE\r\n * @param {number} mLen\r\n * @param {number} nBytes\r\n * @inner\r\n */\r\n function ieee754_write(buffer, value, offset, isLE, mLen, nBytes) {\r\n var e, m, c,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0),\r\n i = isLE ? 0 : (nBytes - 1),\r\n d = isLE ? 1 : -1,\r\n s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\r\n\r\n value = Math.abs(value);\r\n\r\n if (isNaN(value) || value === Infinity) {\r\n m = isNaN(value) ? 1 : 0;\r\n e = eMax;\r\n } else {\r\n e = Math.floor(Math.log(value) / Math.LN2);\r\n if (value * (c = Math.pow(2, -e)) < 1) {\r\n e--;\r\n c *= 2;\r\n }\r\n if (e + eBias >= 1) {\r\n value += rt / c;\r\n } else {\r\n value += rt * Math.pow(2, 1 - eBias);\r\n }\r\n if (value * c >= 2) {\r\n e++;\r\n c /= 2;\r\n }\r\n\r\n if (e + eBias >= eMax) {\r\n m = 0;\r\n e = eMax;\r\n } else if (e + eBias >= 1) {\r\n m = (value * c - 1) * Math.pow(2, mLen);\r\n e = e + eBias;\r\n } else {\r\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\r\n e = 0;\r\n }\r\n }\r\n\r\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\r\n\r\n e = (e << mLen) | m;\r\n eLen += mLen;\r\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\r\n\r\n buffer[offset + i - d] |= s * 128;\r\n }\r\n\r\n /**\r\n * Writes a 32bit float.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number')\r\n throw TypeError(\"Illegal value: \"+value+\" (not a number)\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity8 = this.buffer.byteLength;\n if (offset > capacity8)\n this.resize((capacity8 *= 2) > offset ? capacity8 : offset);\n offset -= 4;\n ieee754_write(this.view, value, offset, this.littleEndian, 23, 4);\r\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit float. This is an alias of {@link ByteBuffer#writeFloat32}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat = ByteBufferPrototype.writeFloat32;\r\n\r\n /**\r\n * Reads a 32bit float.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = ieee754_read(this.view, offset, this.littleEndian, 23, 4);\r\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit float. This is an alias of {@link ByteBuffer#readFloat32}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat = ByteBufferPrototype.readFloat32;\r\n\r\n // types/floats/float64\r\n\r\n /**\r\n * Writes a 64bit float.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number')\r\n throw TypeError(\"Illegal value: \"+value+\" (not a number)\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 8;\n var capacity9 = this.buffer.byteLength;\n if (offset > capacity9)\n this.resize((capacity9 *= 2) > offset ? capacity9 : offset);\n offset -= 8;\n ieee754_write(this.view, value, offset, this.littleEndian, 52, 8);\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit float. This is an alias of {@link ByteBuffer#writeFloat64}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeDouble = ByteBufferPrototype.writeFloat64;\r\n\r\n /**\r\n * Reads a 64bit float.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var value = ieee754_read(this.view, offset, this.littleEndian, 52, 8);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit float. This is an alias of {@link ByteBuffer#readFloat64}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readDouble = ByteBufferPrototype.readFloat64;\r\n\r\n\r\n // types/varints/varint32\r\n\r\n /**\r\n * Maximum number of bytes required to store a 32bit base 128 variable-length integer.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.MAX_VARINT32_BYTES = 5;\r\n\r\n /**\r\n * Calculates the actual number of bytes required to store a 32bit base 128 variable-length integer.\r\n * @param {number} value Value to encode\r\n * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT32_BYTES}\r\n * @expose\r\n */\r\n ByteBuffer.calculateVarint32 = function(value) {\r\n // ref: src/google/protobuf/io/coded_stream.cc\r\n value = value >>> 0;\r\n if (value < 1 << 7 ) return 1;\r\n else if (value < 1 << 14) return 2;\r\n else if (value < 1 << 21) return 3;\r\n else if (value < 1 << 28) return 4;\r\n else return 5;\r\n };\r\n\r\n /**\r\n * Zigzag encodes a signed 32bit integer so that it can be effectively used with varint encoding.\r\n * @param {number} n Signed 32bit integer\r\n * @returns {number} Unsigned zigzag encoded 32bit integer\r\n * @expose\r\n */\r\n ByteBuffer.zigZagEncode32 = function(n) {\r\n return (((n |= 0) << 1) ^ (n >> 31)) >>> 0; // ref: src/google/protobuf/wire_format_lite.h\r\n };\r\n\r\n /**\r\n * Decodes a zigzag encoded signed 32bit integer.\r\n * @param {number} n Unsigned zigzag encoded 32bit integer\r\n * @returns {number} Signed 32bit integer\r\n * @expose\r\n */\r\n ByteBuffer.zigZagDecode32 = function(n) {\r\n return ((n >>> 1) ^ -(n & 1)) | 0; // // ref: src/google/protobuf/wire_format_lite.h\r\n };\r\n\r\n /**\r\n * Writes a 32bit base 128 variable-length integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var size = ByteBuffer.calculateVarint32(value),\r\n b;\r\n offset += size;\n var capacity10 = this.buffer.byteLength;\n if (offset > capacity10)\n this.resize((capacity10 *= 2) > offset ? capacity10 : offset);\n offset -= size;\n value >>>= 0;\r\n while (value >= 0x80) {\r\n b = (value & 0x7f) | 0x80;\r\n this.view[offset++] = b;\r\n value >>>= 7;\r\n }\r\n this.view[offset++] = value;\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return size;\r\n };\r\n\r\n /**\r\n * Writes a zig-zag encoded (signed) 32bit base 128 variable-length integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint32ZigZag = function(value, offset) {\r\n return this.writeVarint32(ByteBuffer.zigZagEncode32(value), offset);\r\n };\r\n\r\n /**\r\n * Reads a 32bit base 128 variable-length integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read\r\n * and the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint. Has a property `truncated = true` if there is not enough data available\r\n * to fully decode the varint.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var c = 0,\r\n value = 0 >>> 0,\r\n b;\r\n do {\r\n if (!this.noAssert && offset > this.limit) {\r\n var err = Error(\"Truncated\");\r\n err['truncated'] = true;\r\n throw err;\r\n }\r\n b = this.view[offset++];\r\n if (c < 5)\r\n value |= (b & 0x7f) << (7*c);\r\n ++c;\r\n } while ((b & 0x80) !== 0);\r\n value |= 0;\r\n if (relative) {\r\n this.offset = offset;\r\n return value;\r\n }\r\n return {\r\n \"value\": value,\r\n \"length\": c\r\n };\r\n };\r\n\r\n /**\r\n * Reads a zig-zag encoded (signed) 32bit base 128 variable-length integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read\r\n * and the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint32ZigZag = function(offset) {\r\n var val = this.readVarint32(offset);\r\n if (typeof val === 'object')\r\n val[\"value\"] = ByteBuffer.zigZagDecode32(val[\"value\"]);\r\n else\r\n val = ByteBuffer.zigZagDecode32(val);\r\n return val;\r\n };\r\n\r\n // types/varints/varint64\r\n\r\n if (Long) {\r\n\r\n /**\r\n * Maximum number of bytes required to store a 64bit base 128 variable-length integer.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.MAX_VARINT64_BYTES = 10;\r\n\r\n /**\r\n * Calculates the actual number of bytes required to store a 64bit base 128 variable-length integer.\r\n * @param {number|!Long} value Value to encode\r\n * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT64_BYTES}\r\n * @expose\r\n */\r\n ByteBuffer.calculateVarint64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n // ref: src/google/protobuf/io/coded_stream.cc\r\n var part0 = value.toInt() >>> 0,\r\n part1 = value.shiftRightUnsigned(28).toInt() >>> 0,\r\n part2 = value.shiftRightUnsigned(56).toInt() >>> 0;\r\n if (part2 == 0) {\r\n if (part1 == 0) {\r\n if (part0 < 1 << 14)\r\n return part0 < 1 << 7 ? 1 : 2;\r\n else\r\n return part0 < 1 << 21 ? 3 : 4;\r\n } else {\r\n if (part1 < 1 << 14)\r\n return part1 < 1 << 7 ? 5 : 6;\r\n else\r\n return part1 < 1 << 21 ? 7 : 8;\r\n }\r\n } else\r\n return part2 < 1 << 7 ? 9 : 10;\r\n };\r\n\r\n /**\r\n * Zigzag encodes a signed 64bit integer so that it can be effectively used with varint encoding.\r\n * @param {number|!Long} value Signed long\r\n * @returns {!Long} Unsigned zigzag encoded long\r\n * @expose\r\n */\r\n ByteBuffer.zigZagEncode64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n // ref: src/google/protobuf/wire_format_lite.h\r\n return value.shiftLeft(1).xor(value.shiftRight(63)).toUnsigned();\r\n };\r\n\r\n /**\r\n * Decodes a zigzag encoded signed 64bit integer.\r\n * @param {!Long|number} value Unsigned zigzag encoded long or JavaScript number\r\n * @returns {!Long} Signed long\r\n * @expose\r\n */\r\n ByteBuffer.zigZagDecode64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n // ref: src/google/protobuf/wire_format_lite.h\r\n return value.shiftRightUnsigned(1).xor(value.and(Long.ONE).toSigned().negate()).toSigned();\r\n };\r\n\r\n /**\r\n * Writes a 64bit base 128 variable-length integer.\r\n * @param {number|Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n var size = ByteBuffer.calculateVarint64(value),\r\n part0 = value.toInt() >>> 0,\r\n part1 = value.shiftRightUnsigned(28).toInt() >>> 0,\r\n part2 = value.shiftRightUnsigned(56).toInt() >>> 0;\r\n offset += size;\n var capacity11 = this.buffer.byteLength;\n if (offset > capacity11)\n this.resize((capacity11 *= 2) > offset ? capacity11 : offset);\n offset -= size;\n switch (size) {\r\n case 10: this.view[offset+9] = (part2 >>> 7) & 0x01;\r\n case 9 : this.view[offset+8] = size !== 9 ? (part2 ) | 0x80 : (part2 ) & 0x7F;\r\n case 8 : this.view[offset+7] = size !== 8 ? (part1 >>> 21) | 0x80 : (part1 >>> 21) & 0x7F;\r\n case 7 : this.view[offset+6] = size !== 7 ? (part1 >>> 14) | 0x80 : (part1 >>> 14) & 0x7F;\r\n case 6 : this.view[offset+5] = size !== 6 ? (part1 >>> 7) | 0x80 : (part1 >>> 7) & 0x7F;\r\n case 5 : this.view[offset+4] = size !== 5 ? (part1 ) | 0x80 : (part1 ) & 0x7F;\r\n case 4 : this.view[offset+3] = size !== 4 ? (part0 >>> 21) | 0x80 : (part0 >>> 21) & 0x7F;\r\n case 3 : this.view[offset+2] = size !== 3 ? (part0 >>> 14) | 0x80 : (part0 >>> 14) & 0x7F;\r\n case 2 : this.view[offset+1] = size !== 2 ? (part0 >>> 7) | 0x80 : (part0 >>> 7) & 0x7F;\r\n case 1 : this.view[offset ] = size !== 1 ? (part0 ) | 0x80 : (part0 ) & 0x7F;\r\n }\r\n if (relative) {\r\n this.offset += size;\r\n return this;\r\n } else {\r\n return size;\r\n }\r\n };\r\n\r\n /**\r\n * Writes a zig-zag encoded 64bit base 128 variable-length integer.\r\n * @param {number|Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint64ZigZag = function(value, offset) {\r\n return this.writeVarint64(ByteBuffer.zigZagEncode64(value), offset);\r\n };\r\n\r\n /**\r\n * Reads a 64bit base 128 variable-length integer. Requires Long.js.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!Long|!{value: Long, length: number}} The value read if offset is omitted, else the value read and\r\n * the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n // ref: src/google/protobuf/io/coded_stream.cc\r\n var start = offset,\r\n part0 = 0,\r\n part1 = 0,\r\n part2 = 0,\r\n b = 0;\r\n b = this.view[offset++]; part0 = (b & 0x7F) ; if ( b & 0x80 ) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part2 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part2 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n throw Error(\"Buffer overrun\"); }}}}}}}}}}\r\n var value = Long.fromBits(part0 | (part1 << 28), (part1 >>> 4) | (part2) << 24, false);\r\n if (relative) {\r\n this.offset = offset;\r\n return value;\r\n } else {\r\n return {\r\n 'value': value,\r\n 'length': offset-start\r\n };\r\n }\r\n };\r\n\r\n /**\r\n * Reads a zig-zag encoded 64bit base 128 variable-length integer. Requires Long.js.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!Long|!{value: Long, length: number}} The value read if offset is omitted, else the value read and\r\n * the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint64ZigZag = function(offset) {\r\n var val = this.readVarint64(offset);\r\n if (val && val['value'] instanceof Long)\r\n val[\"value\"] = ByteBuffer.zigZagDecode64(val[\"value\"]);\r\n else\r\n val = ByteBuffer.zigZagDecode64(val);\r\n return val;\r\n };\r\n\r\n } // Long\r\n\r\n\r\n // types/strings/cstring\r\n\r\n /**\r\n * Writes a NULL-terminated UTF8 encoded string. For this to work the specified string must not contain any NULL\r\n * characters itself.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * contained in `str` + 1 if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeCString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n var i,\r\n k = str.length;\r\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n for (i=0; i>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n // UTF8 strings do not contain zero bytes in between except for the zero character, so:\r\n k = utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n offset += k+1;\n var capacity12 = this.buffer.byteLength;\n if (offset > capacity12)\n this.resize((capacity12 *= 2) > offset ? capacity12 : offset);\n offset -= k+1;\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n this.view[offset++] = 0;\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return k;\r\n };\r\n\r\n /**\r\n * Reads a NULL-terminated UTF8 encoded string. For this to work the string read must not contain any NULL characters\r\n * itself.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readCString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n temp;\r\n // UTF8 strings do not contain zero bytes in between except for the zero character itself, so:\r\n var sd, b = -1;\r\n utfx.decodeUTF8toUTF16(function() {\r\n if (b === 0) return null;\r\n if (offset >= this.limit)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" < \"+this.limit);\r\n b = this.view[offset++];\r\n return b === 0 ? null : b;\r\n }.bind(this), sd = stringDestination(), true);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n \"string\": sd(),\r\n \"length\": offset - start\r\n };\r\n }\r\n };\r\n\r\n // types/strings/istring\r\n\r\n /**\r\n * Writes a length as uint32 prefixed UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n * @see ByteBuffer#writeVarint32\r\n */\r\n ByteBufferPrototype.writeIString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n k;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1];\r\n offset += 4+k;\n var capacity13 = this.buffer.byteLength;\n if (offset > capacity13)\n this.resize((capacity13 *= 2) > offset ? capacity13 : offset);\n offset -= 4+k;\n if (this.littleEndian) {\n this.view[offset+3] = (k >>> 24) & 0xFF;\n this.view[offset+2] = (k >>> 16) & 0xFF;\n this.view[offset+1] = (k >>> 8) & 0xFF;\n this.view[offset ] = k & 0xFF;\n } else {\n this.view[offset ] = (k >>> 24) & 0xFF;\n this.view[offset+1] = (k >>> 16) & 0xFF;\n this.view[offset+2] = (k >>> 8) & 0xFF;\n this.view[offset+3] = k & 0xFF;\n }\n offset += 4;\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (offset !== start + 4 + k)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+(offset+4+k));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Reads a length as uint32 prefixed UTF8 encoded string.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n * @see ByteBuffer#readVarint32\r\n */\r\n ByteBufferPrototype.readIString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset;\r\n var len = this.readUint32(offset);\r\n var str = this.readUTF8String(len, ByteBuffer.METRICS_BYTES, offset += 4);\r\n offset += str['length'];\r\n if (relative) {\r\n this.offset = offset;\r\n return str['string'];\r\n } else {\r\n return {\r\n 'string': str['string'],\r\n 'length': offset - start\r\n };\r\n }\r\n };\r\n\r\n // types/strings/utf8string\r\n\r\n /**\r\n * Metrics representing number of UTF8 characters. Evaluates to `c`.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.METRICS_CHARS = 'c';\r\n\r\n /**\r\n * Metrics representing number of bytes. Evaluates to `b`.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.METRICS_BYTES = 'b';\r\n\r\n /**\r\n * Writes an UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUTF8String = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var k;\r\n var start = offset;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n offset += k;\n var capacity14 = this.buffer.byteLength;\n if (offset > capacity14)\n this.resize((capacity14 *= 2) > offset ? capacity14 : offset);\n offset -= k;\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Writes an UTF8 encoded string. This is an alias of {@link ByteBuffer#writeUTF8String}.\r\n * @function\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeString = ByteBufferPrototype.writeUTF8String;\r\n\r\n /**\r\n * Calculates the number of UTF8 characters of a string. JavaScript itself uses UTF-16, so that a string's\r\n * `length` property does not reflect its actual UTF8 size if it contains code points larger than 0xFFFF.\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 characters\r\n * @expose\r\n */\r\n ByteBuffer.calculateUTF8Chars = function(str) {\r\n return utfx.calculateUTF16asUTF8(stringSource(str))[0];\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes of a string.\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 bytes\r\n * @expose\r\n */\r\n ByteBuffer.calculateUTF8Bytes = function(str) {\r\n return utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes of a string. This is an alias of {@link ByteBuffer.calculateUTF8Bytes}.\r\n * @function\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 bytes\r\n * @expose\r\n */\r\n ByteBuffer.calculateString = ByteBuffer.calculateUTF8Bytes;\r\n\r\n /**\r\n * Reads an UTF8 encoded string.\r\n * @param {number} length Number of characters or bytes to read.\r\n * @param {string=} metrics Metrics specifying what `length` is meant to count. Defaults to\r\n * {@link ByteBuffer.METRICS_CHARS}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUTF8String = function(length, metrics, offset) {\r\n if (typeof metrics === 'number') {\r\n offset = metrics;\r\n metrics = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (typeof metrics === 'undefined') metrics = ByteBuffer.METRICS_CHARS;\r\n if (!this.noAssert) {\r\n if (typeof length !== 'number' || length % 1 !== 0)\n throw TypeError(\"Illegal length: \"+length+\" (not an integer)\");\n length |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var i = 0,\r\n start = offset,\r\n sd;\r\n if (metrics === ByteBuffer.METRICS_CHARS) { // The same for node and the browser\r\n sd = stringDestination();\r\n utfx.decodeUTF8(function() {\r\n return i < length && offset < this.limit ? this.view[offset++] : null;\r\n }.bind(this), function(cp) {\r\n ++i; utfx.UTF8toUTF16(cp, sd);\r\n });\r\n if (i !== length)\r\n throw RangeError(\"Illegal range: Truncated data, \"+i+\" == \"+length);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n \"string\": sd(),\r\n \"length\": offset - start\r\n };\r\n }\r\n } else if (metrics === ByteBuffer.METRICS_BYTES) {\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + length > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+length+\") <= \"+this.buffer.byteLength);\n }\r\n var k = offset + length;\r\n utfx.decodeUTF8toUTF16(function() {\r\n return offset < k ? this.view[offset++] : null;\r\n }.bind(this), sd = stringDestination(), this.noAssert);\r\n if (offset !== k)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+k);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n 'string': sd(),\r\n 'length': offset - start\r\n };\r\n }\r\n } else\r\n throw TypeError(\"Unsupported metrics: \"+metrics);\r\n };\r\n\r\n /**\r\n * Reads an UTF8 encoded string. This is an alias of {@link ByteBuffer#readUTF8String}.\r\n * @function\r\n * @param {number} length Number of characters or bytes to read\r\n * @param {number=} metrics Metrics specifying what `n` is meant to count. Defaults to\r\n * {@link ByteBuffer.METRICS_CHARS}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readString = ByteBufferPrototype.readUTF8String;\r\n\r\n // types/strings/vstring\r\n\r\n /**\r\n * Writes a length as varint32 prefixed UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n * @see ByteBuffer#writeVarint32\r\n */\r\n ByteBufferPrototype.writeVString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n k, l;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1];\r\n l = ByteBuffer.calculateVarint32(k);\r\n offset += l+k;\n var capacity15 = this.buffer.byteLength;\n if (offset > capacity15)\n this.resize((capacity15 *= 2) > offset ? capacity15 : offset);\n offset -= l+k;\n offset += this.writeVarint32(k, offset);\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (offset !== start+k+l)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+(offset+k+l));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Reads a length as varint32 prefixed UTF8 encoded string.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n * @see ByteBuffer#readVarint32\r\n */\r\n ByteBufferPrototype.readVString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset;\r\n var len = this.readVarint32(offset);\r\n var str = this.readUTF8String(len['value'], ByteBuffer.METRICS_BYTES, offset += len['length']);\r\n offset += str['length'];\r\n if (relative) {\r\n this.offset = offset;\r\n return str['string'];\r\n } else {\r\n return {\r\n 'string': str['string'],\r\n 'length': offset - start\r\n };\r\n }\r\n };\r\n\r\n\r\n /**\r\n * Appends some data to this ByteBuffer. This will overwrite any contents behind the specified offset up to the appended\r\n * data's length.\r\n * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to append. If `source` is a ByteBuffer, its offsets\r\n * will be modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to append at. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example A relative `<01 02>03.append(<04 05>)` will result in `<01 02 04 05>, 04 05|`\r\n * @example An absolute `<01 02>03.append(04 05>, 1)` will result in `<01 04>05, 04 05|`\r\n */\r\n ByteBufferPrototype.append = function(source, encoding, offset) {\r\n if (typeof encoding === 'number' || typeof encoding !== 'string') {\r\n offset = encoding;\r\n encoding = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (!(source instanceof ByteBuffer))\r\n source = ByteBuffer.wrap(source, encoding);\r\n var length = source.limit - source.offset;\r\n if (length <= 0) return this; // Nothing to append\r\n offset += length;\n var capacity16 = this.buffer.byteLength;\n if (offset > capacity16)\n this.resize((capacity16 *= 2) > offset ? capacity16 : offset);\n offset -= length;\n this.view.set(source.view.subarray(source.offset, source.limit), offset);\r\n source.offset += length;\r\n if (relative) this.offset += length;\n return this;\r\n };\r\n\r\n /**\r\n * Appends this ByteBuffer's contents to another ByteBuffer. This will overwrite any contents at and after the\r\n specified offset up to the length of this ByteBuffer's data.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} offset Offset to append to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @see ByteBuffer#append\r\n */\r\n ByteBufferPrototype.appendTo = function(target, offset) {\r\n target.append(this, offset);\r\n return this;\r\n };\r\n\r\n /**\r\n * Enables or disables assertions of argument types and offsets. Assertions are enabled by default but you can opt to\r\n * disable them if your code already makes sure that everything is valid.\r\n * @param {boolean} assert `true` to enable assertions, otherwise `false`\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.assert = function(assert) {\r\n this.noAssert = !assert;\r\n return this;\r\n };\r\n\r\n /**\r\n * Gets the capacity of this ByteBuffer's backing buffer.\r\n * @returns {number} Capacity of the backing buffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.capacity = function() {\r\n return this.buffer.byteLength;\r\n };\r\n /**\r\n * Clears this ByteBuffer's offsets by setting {@link ByteBuffer#offset} to `0` and {@link ByteBuffer#limit} to the\r\n * backing buffer's capacity. Discards {@link ByteBuffer#markedOffset}.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.clear = function() {\r\n this.offset = 0;\r\n this.limit = this.buffer.byteLength;\r\n this.markedOffset = -1;\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates a cloned instance of this ByteBuffer, preset with this ByteBuffer's values for {@link ByteBuffer#offset},\r\n * {@link ByteBuffer#markedOffset} and {@link ByteBuffer#limit}.\r\n * @param {boolean=} copy Whether to copy the backing buffer or to return another view on the same, defaults to `false`\r\n * @returns {!ByteBuffer} Cloned instance\r\n * @expose\r\n */\r\n ByteBufferPrototype.clone = function(copy) {\r\n var bb = new ByteBuffer(0, this.littleEndian, this.noAssert);\r\n if (copy) {\r\n bb.buffer = new ArrayBuffer(this.buffer.byteLength);\r\n bb.view = new Uint8Array(bb.buffer);\r\n } else {\r\n bb.buffer = this.buffer;\r\n bb.view = this.view;\r\n }\r\n bb.offset = this.offset;\r\n bb.markedOffset = this.markedOffset;\r\n bb.limit = this.limit;\r\n return bb;\r\n };\r\n\r\n /**\r\n * Compacts this ByteBuffer to be backed by a {@link ByteBuffer#buffer} of its contents' length. Contents are the bytes\r\n * between {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. Will set `offset = 0` and `limit = capacity` and\r\n * adapt {@link ByteBuffer#markedOffset} to the same relative position if set.\r\n * @param {number=} begin Offset to start at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.compact = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === 0 && end === this.buffer.byteLength)\r\n return this; // Already compacted\r\n var len = end - begin;\r\n if (len === 0) {\r\n this.buffer = EMPTY_BUFFER;\r\n this.view = null;\r\n if (this.markedOffset >= 0) this.markedOffset -= begin;\r\n this.offset = 0;\r\n this.limit = 0;\r\n return this;\r\n }\r\n var buffer = new ArrayBuffer(len);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view.subarray(begin, end));\r\n this.buffer = buffer;\r\n this.view = view;\r\n if (this.markedOffset >= 0) this.markedOffset -= begin;\r\n this.offset = 0;\r\n this.limit = len;\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates a copy of this ByteBuffer's contents. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}.\r\n * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} Copy\r\n * @expose\r\n */\r\n ByteBufferPrototype.copy = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === end)\r\n return new ByteBuffer(0, this.littleEndian, this.noAssert);\r\n var capacity = end - begin,\r\n bb = new ByteBuffer(capacity, this.littleEndian, this.noAssert);\r\n bb.offset = 0;\r\n bb.limit = capacity;\r\n if (bb.markedOffset >= 0) bb.markedOffset -= begin;\r\n this.copyTo(bb, 0, begin, end);\r\n return bb;\r\n };\r\n\r\n /**\r\n * Copies this ByteBuffer's contents to another ByteBuffer. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} targetOffset Offset to copy to. Will use and increase the target's {@link ByteBuffer#offset}\r\n * by the number of bytes copied if omitted.\r\n * @param {number=} sourceOffset Offset to start copying from. Will use and increase {@link ByteBuffer#offset} by the\r\n * number of bytes copied if omitted.\r\n * @param {number=} sourceLimit Offset to end copying from, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.copyTo = function(target, targetOffset, sourceOffset, sourceLimit) {\r\n var relative,\r\n targetRelative;\r\n if (!this.noAssert) {\r\n if (!ByteBuffer.isByteBuffer(target))\r\n throw TypeError(\"Illegal target: Not a ByteBuffer\");\r\n }\r\n targetOffset = (targetRelative = typeof targetOffset === 'undefined') ? target.offset : targetOffset | 0;\r\n sourceOffset = (relative = typeof sourceOffset === 'undefined') ? this.offset : sourceOffset | 0;\r\n sourceLimit = typeof sourceLimit === 'undefined' ? this.limit : sourceLimit | 0;\r\n\r\n if (targetOffset < 0 || targetOffset > target.buffer.byteLength)\r\n throw RangeError(\"Illegal target range: 0 <= \"+targetOffset+\" <= \"+target.buffer.byteLength);\r\n if (sourceOffset < 0 || sourceLimit > this.buffer.byteLength)\r\n throw RangeError(\"Illegal source range: 0 <= \"+sourceOffset+\" <= \"+this.buffer.byteLength);\r\n\r\n var len = sourceLimit - sourceOffset;\r\n if (len === 0)\r\n return target; // Nothing to copy\r\n\r\n target.ensureCapacity(targetOffset + len);\r\n\r\n target.view.set(this.view.subarray(sourceOffset, sourceLimit), targetOffset);\r\n\r\n if (relative) this.offset += len;\r\n if (targetRelative) target.offset += len;\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Makes sure that this ByteBuffer is backed by a {@link ByteBuffer#buffer} of at least the specified capacity. If the\r\n * current capacity is exceeded, it will be doubled. If double the current capacity is less than the required capacity,\r\n * the required capacity will be used instead.\r\n * @param {number} capacity Required capacity\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.ensureCapacity = function(capacity) {\r\n var current = this.buffer.byteLength;\r\n if (current < capacity)\r\n return this.resize((current *= 2) > capacity ? current : capacity);\r\n return this;\r\n };\r\n\r\n /**\r\n * Overwrites this ByteBuffer's contents with the specified value. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}.\r\n * @param {number|string} value Byte value to fill with. If given as a string, the first character is used.\r\n * @param {number=} begin Begin offset. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted. defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example `someByteBuffer.clear().fill(0)` fills the entire backing buffer with zeroes\r\n */\r\n ByteBufferPrototype.fill = function(value, begin, end) {\r\n var relative = typeof begin === 'undefined';\n if (relative) begin = this.offset;\n if (typeof value === 'string' && value.length > 0)\r\n value = value.charCodeAt(0);\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin >= end)\r\n return this; // Nothing to fill\r\n while (begin < end) this.view[begin++] = value;\r\n if (relative) this.offset = begin;\r\n return this;\r\n };\r\n\r\n /**\r\n * Makes this ByteBuffer ready for a new sequence of write or relative read operations. Sets `limit = offset` and\r\n * `offset = 0`. Make sure always to flip a ByteBuffer when all relative read or write operations are complete.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.flip = function() {\r\n this.limit = this.offset;\r\n this.offset = 0;\r\n return this;\r\n };\r\n /**\r\n * Marks an offset on this ByteBuffer to be used later.\r\n * @param {number=} offset Offset to mark. Defaults to {@link ByteBuffer#offset}.\r\n * @returns {!ByteBuffer} this\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @see ByteBuffer#reset\r\n * @expose\r\n */\r\n ByteBufferPrototype.mark = function(offset) {\r\n offset = typeof offset === 'undefined' ? this.offset : offset;\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n this.markedOffset = offset;\r\n return this;\r\n };\r\n /**\r\n * Sets the byte order.\r\n * @param {boolean} littleEndian `true` for little endian byte order, `false` for big endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.order = function(littleEndian) {\r\n if (!this.noAssert) {\r\n if (typeof littleEndian !== 'boolean')\r\n throw TypeError(\"Illegal littleEndian: Not a boolean\");\r\n }\r\n this.littleEndian = !!littleEndian;\r\n return this;\r\n };\r\n\r\n /**\r\n * Switches (to) little endian byte order.\r\n * @param {boolean=} littleEndian Defaults to `true`, otherwise uses big endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.LE = function(littleEndian) {\r\n this.littleEndian = typeof littleEndian !== 'undefined' ? !!littleEndian : true;\r\n return this;\r\n };\r\n\r\n /**\r\n * Switches (to) big endian byte order.\r\n * @param {boolean=} bigEndian Defaults to `true`, otherwise uses little endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.BE = function(bigEndian) {\r\n this.littleEndian = typeof bigEndian !== 'undefined' ? !bigEndian : false;\r\n return this;\r\n };\r\n /**\r\n * Prepends some data to this ByteBuffer. This will overwrite any contents before the specified offset up to the\r\n * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer\r\n * will be resized and its contents moved accordingly.\r\n * @param {!ByteBuffer|string|!ArrayBuffer} source Data to prepend. If `source` is a ByteBuffer, its offset will be\r\n * modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes\r\n * prepended if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example A relative `00<01 02 03>.prepend(<04 05>)` results in `<04 05 01 02 03>, 04 05|`\r\n * @example An absolute `00<01 02 03>.prepend(<04 05>, 2)` results in `04<05 02 03>, 04 05|`\r\n */\r\n ByteBufferPrototype.prepend = function(source, encoding, offset) {\r\n if (typeof encoding === 'number' || typeof encoding !== 'string') {\r\n offset = encoding;\r\n encoding = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (!(source instanceof ByteBuffer))\r\n source = ByteBuffer.wrap(source, encoding);\r\n var len = source.limit - source.offset;\r\n if (len <= 0) return this; // Nothing to prepend\r\n var diff = len - offset;\r\n if (diff > 0) { // Not enough space before offset, so resize + move\r\n var buffer = new ArrayBuffer(this.buffer.byteLength + diff);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view.subarray(offset, this.buffer.byteLength), len);\r\n this.buffer = buffer;\r\n this.view = view;\r\n this.offset += diff;\r\n if (this.markedOffset >= 0) this.markedOffset += diff;\r\n this.limit += diff;\r\n offset += diff;\r\n } else {\r\n var arrayView = new Uint8Array(this.buffer);\r\n }\r\n this.view.set(source.view.subarray(source.offset, source.limit), offset - len);\r\n\r\n source.offset = source.limit;\r\n if (relative)\r\n this.offset -= len;\r\n return this;\r\n };\r\n\r\n /**\r\n * Prepends this ByteBuffer to another ByteBuffer. This will overwrite any contents before the specified offset up to the\r\n * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer\r\n * will be resized and its contents moved accordingly.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes\r\n * prepended if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @see ByteBuffer#prepend\r\n */\r\n ByteBufferPrototype.prependTo = function(target, offset) {\r\n target.prepend(this, offset);\r\n return this;\r\n };\r\n /**\r\n * Prints debug information about this ByteBuffer's contents.\r\n * @param {function(string)=} out Output function to call, defaults to console.log\r\n * @expose\r\n */\r\n ByteBufferPrototype.printDebug = function(out) {\r\n if (typeof out !== 'function') out = console.log.bind(console);\r\n out(\r\n this.toString()+\"\\n\"+\r\n \"-------------------------------------------------------------------\\n\"+\r\n this.toDebug(/* columns */ true)\r\n );\r\n };\r\n\r\n /**\r\n * Gets the number of remaining readable bytes. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}, so this returns `limit - offset`.\r\n * @returns {number} Remaining readable bytes. May be negative if `offset > limit`.\r\n * @expose\r\n */\r\n ByteBufferPrototype.remaining = function() {\r\n return this.limit - this.offset;\r\n };\r\n /**\r\n * Resets this ByteBuffer's {@link ByteBuffer#offset}. If an offset has been marked through {@link ByteBuffer#mark}\r\n * before, `offset` will be set to {@link ByteBuffer#markedOffset}, which will then be discarded. If no offset has been\r\n * marked, sets `offset = 0`.\r\n * @returns {!ByteBuffer} this\r\n * @see ByteBuffer#mark\r\n * @expose\r\n */\r\n ByteBufferPrototype.reset = function() {\r\n if (this.markedOffset >= 0) {\r\n this.offset = this.markedOffset;\r\n this.markedOffset = -1;\r\n } else {\r\n this.offset = 0;\r\n }\r\n return this;\r\n };\r\n /**\r\n * Resizes this ByteBuffer to be backed by a buffer of at least the given capacity. Will do nothing if already that\r\n * large or larger.\r\n * @param {number} capacity Capacity required\r\n * @returns {!ByteBuffer} this\r\n * @throws {TypeError} If `capacity` is not a number\r\n * @throws {RangeError} If `capacity < 0`\r\n * @expose\r\n */\r\n ByteBufferPrototype.resize = function(capacity) {\r\n if (!this.noAssert) {\r\n if (typeof capacity !== 'number' || capacity % 1 !== 0)\n throw TypeError(\"Illegal capacity: \"+capacity+\" (not an integer)\");\n capacity |= 0;\n if (capacity < 0)\r\n throw RangeError(\"Illegal capacity: 0 <= \"+capacity);\r\n }\r\n if (this.buffer.byteLength < capacity) {\r\n var buffer = new ArrayBuffer(capacity);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view);\r\n this.buffer = buffer;\r\n this.view = view;\r\n }\r\n return this;\r\n };\r\n /**\r\n * Reverses this ByteBuffer's contents.\r\n * @param {number=} begin Offset to start at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.reverse = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === end)\r\n return this; // Nothing to reverse\r\n Array.prototype.reverse.call(this.view.subarray(begin, end));\r\n return this;\r\n };\r\n /**\r\n * Skips the next `length` bytes. This will just advance\r\n * @param {number} length Number of bytes to skip. May also be negative to move the offset back.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.skip = function(length) {\r\n if (!this.noAssert) {\r\n if (typeof length !== 'number' || length % 1 !== 0)\n throw TypeError(\"Illegal length: \"+length+\" (not an integer)\");\n length |= 0;\n }\r\n var offset = this.offset + length;\r\n if (!this.noAssert) {\r\n if (offset < 0 || offset > this.buffer.byteLength)\r\n throw RangeError(\"Illegal length: 0 <= \"+this.offset+\" + \"+length+\" <= \"+this.buffer.byteLength);\r\n }\r\n this.offset = offset;\r\n return this;\r\n };\r\n\r\n /**\r\n * Slices this ByteBuffer by creating a cloned instance with `offset = begin` and `limit = end`.\r\n * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} Clone of this ByteBuffer with slicing applied, backed by the same {@link ByteBuffer#buffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.slice = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var bb = this.clone();\r\n bb.offset = begin;\r\n bb.limit = end;\r\n return bb;\r\n };\r\n /**\r\n * Returns a copy of the backing buffer that contains this ByteBuffer's contents. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}.\r\n * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory if\r\n * possible. Defaults to `false`\r\n * @returns {!ArrayBuffer} Contents as an ArrayBuffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBuffer = function(forceCopy) {\r\n var offset = this.offset,\r\n limit = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: Not an integer\");\n offset >>>= 0;\n if (typeof limit !== 'number' || limit % 1 !== 0)\n throw TypeError(\"Illegal limit: Not an integer\");\n limit >>>= 0;\n if (offset < 0 || offset > limit || limit > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+offset+\" <= \"+limit+\" <= \"+this.buffer.byteLength);\n }\r\n // NOTE: It's not possible to have another ArrayBuffer reference the same memory as the backing buffer. This is\r\n // possible with Uint8Array#subarray only, but we have to return an ArrayBuffer by contract. So:\r\n if (!forceCopy && offset === 0 && limit === this.buffer.byteLength)\r\n return this.buffer;\r\n if (offset === limit)\r\n return EMPTY_BUFFER;\r\n var buffer = new ArrayBuffer(limit - offset);\r\n new Uint8Array(buffer).set(new Uint8Array(this.buffer).subarray(offset, limit), 0);\r\n return buffer;\r\n };\r\n\r\n /**\r\n * Returns a raw buffer compacted to contain this ByteBuffer's contents. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. This is an alias of {@link ByteBuffer#toBuffer}.\r\n * @function\r\n * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory.\r\n * Defaults to `false`\r\n * @returns {!ArrayBuffer} Contents as an ArrayBuffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.toArrayBuffer = ByteBufferPrototype.toBuffer;\r\n\r\n /**\r\n * Converts the ByteBuffer's contents to a string.\r\n * @param {string=} encoding Output encoding. Returns an informative string representation if omitted but also allows\r\n * direct conversion to \"utf8\", \"hex\", \"base64\" and \"binary\" encoding. \"debug\" returns a hex representation with\r\n * highlighted offsets.\r\n * @param {number=} begin Offset to begin at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {string} String representation\r\n * @throws {Error} If `encoding` is invalid\r\n * @expose\r\n */\r\n ByteBufferPrototype.toString = function(encoding, begin, end) {\r\n if (typeof encoding === 'undefined')\r\n return \"ByteBufferAB(offset=\"+this.offset+\",markedOffset=\"+this.markedOffset+\",limit=\"+this.limit+\",capacity=\"+this.capacity()+\")\";\r\n if (typeof encoding === 'number')\r\n encoding = \"utf8\",\r\n begin = encoding,\r\n end = begin;\r\n switch (encoding) {\r\n case \"utf8\":\r\n return this.toUTF8(begin, end);\r\n case \"base64\":\r\n return this.toBase64(begin, end);\r\n case \"hex\":\r\n return this.toHex(begin, end);\r\n case \"binary\":\r\n return this.toBinary(begin, end);\r\n case \"debug\":\r\n return this.toDebug();\r\n case \"columns\":\r\n return this.toColumns();\r\n default:\r\n throw Error(\"Unsupported encoding: \"+encoding);\r\n }\r\n };\r\n\r\n // lxiv-embeddable\r\n\r\n /**\r\n * lxiv-embeddable (c) 2014 Daniel Wirtz \r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/lxiv for details\r\n */\r\n var lxiv = function() {\r\n \"use strict\";\r\n\r\n /**\r\n * lxiv namespace.\r\n * @type {!Object.}\r\n * @exports lxiv\r\n */\r\n var lxiv = {};\r\n\r\n /**\r\n * Character codes for output.\r\n * @type {!Array.}\r\n * @inner\r\n */\r\n var aout = [\r\n 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,\r\n 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102,\r\n 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\r\n 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47\r\n ];\r\n\r\n /**\r\n * Character codes for input.\r\n * @type {!Array.}\r\n * @inner\r\n */\r\n var ain = [];\r\n for (var i=0, k=aout.length; i>2)&0x3f]);\r\n t = (b&0x3)<<4;\r\n if ((b = src()) !== null) {\r\n t |= (b>>4)&0xf;\r\n dst(aout[(t|((b>>4)&0xf))&0x3f]);\r\n t = (b&0xf)<<2;\r\n if ((b = src()) !== null)\r\n dst(aout[(t|((b>>6)&0x3))&0x3f]),\r\n dst(aout[b&0x3f]);\r\n else\r\n dst(aout[t&0x3f]),\r\n dst(61);\r\n } else\r\n dst(aout[t&0x3f]),\r\n dst(61),\r\n dst(61);\r\n }\r\n };\r\n\r\n /**\r\n * Decodes base64 char codes to bytes.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte.\r\n * @throws {Error} If a character code is invalid\r\n */\r\n lxiv.decode = function(src, dst) {\r\n var c, t1, t2;\r\n function fail(c) {\r\n throw Error(\"Illegal character code: \"+c);\r\n }\r\n while ((c = src()) !== null) {\r\n t1 = ain[c];\r\n if (typeof t1 === 'undefined') fail(c);\r\n if ((c = src()) !== null) {\r\n t2 = ain[c];\r\n if (typeof t2 === 'undefined') fail(c);\r\n dst((t1<<2)>>>0|(t2&0x30)>>4);\r\n if ((c = src()) !== null) {\r\n t1 = ain[c];\r\n if (typeof t1 === 'undefined')\r\n if (c === 61) break; else fail(c);\r\n dst(((t2&0xf)<<4)>>>0|(t1&0x3c)>>2);\r\n if ((c = src()) !== null) {\r\n t2 = ain[c];\r\n if (typeof t2 === 'undefined')\r\n if (c === 61) break; else fail(c);\r\n dst(((t1&0x3)<<6)>>>0|t2);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Tests if a string is valid base64.\r\n * @param {string} str String to test\r\n * @returns {boolean} `true` if valid, otherwise `false`\r\n */\r\n lxiv.test = function(str) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(str);\r\n };\r\n\r\n return lxiv;\r\n }();\r\n\r\n // encodings/base64\r\n\r\n /**\r\n * Encodes this ByteBuffer's contents to a base64 encoded string.\r\n * @param {number=} begin Offset to begin at, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}.\r\n * @returns {string} Base64 encoded string\r\n * @throws {RangeError} If `begin` or `end` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBase64 = function(begin, end) {\r\n if (typeof begin === 'undefined')\r\n begin = this.offset;\r\n if (typeof end === 'undefined')\r\n end = this.limit;\r\n begin = begin | 0; end = end | 0;\r\n if (begin < 0 || end > this.capacity || begin > end)\r\n throw RangeError(\"begin, end\");\r\n var sd; lxiv.encode(function() {\r\n return begin < end ? this.view[begin++] : null;\r\n }.bind(this), sd = stringDestination());\r\n return sd();\r\n };\r\n\r\n /**\r\n * Decodes a base64 encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromBase64 = function(str, littleEndian) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"str\");\r\n var bb = new ByteBuffer(str.length/4*3, littleEndian),\r\n i = 0;\r\n lxiv.decode(stringSource(str), function(b) {\r\n bb.view[i++] = b;\r\n });\r\n bb.limit = i;\r\n return bb;\r\n };\r\n\r\n /**\r\n * Encodes a binary string to base64 like `window.btoa` does.\r\n * @param {string} str Binary string\r\n * @returns {string} Base64 encoded string\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.btoa\r\n * @expose\r\n */\r\n ByteBuffer.btoa = function(str) {\r\n return ByteBuffer.fromBinary(str).toBase64();\r\n };\r\n\r\n /**\r\n * Decodes a base64 encoded string to binary like `window.atob` does.\r\n * @param {string} b64 Base64 encoded string\r\n * @returns {string} Binary string\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.atob\r\n * @expose\r\n */\r\n ByteBuffer.atob = function(b64) {\r\n return ByteBuffer.fromBase64(b64).toBinary();\r\n };\r\n\r\n // encodings/binary\r\n\r\n /**\r\n * Encodes this ByteBuffer to a binary encoded string, that is using only characters 0x00-0xFF as bytes.\r\n * @param {number=} begin Offset to begin at. Defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end Offset to end at. Defaults to {@link ByteBuffer#limit}.\r\n * @returns {string} Binary encoded string\r\n * @throws {RangeError} If `offset > limit`\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBinary = function(begin, end) {\r\n if (typeof begin === 'undefined')\r\n begin = this.offset;\r\n if (typeof end === 'undefined')\r\n end = this.limit;\r\n begin |= 0; end |= 0;\r\n if (begin < 0 || end > this.capacity() || begin > end)\r\n throw RangeError(\"begin, end\");\r\n if (begin === end)\r\n return \"\";\r\n var chars = [],\r\n parts = [];\r\n while (begin < end) {\r\n chars.push(this.view[begin++]);\r\n if (chars.length >= 1024)\r\n parts.push(String.fromCharCode.apply(String, chars)),\r\n chars = [];\r\n }\r\n return parts.join('') + String.fromCharCode.apply(String, chars);\r\n };\r\n\r\n /**\r\n * Decodes a binary encoded string, that is using only characters 0x00-0xFF as bytes, to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromBinary = function(str, littleEndian) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"str\");\r\n var i = 0,\r\n k = str.length,\r\n charCode,\r\n bb = new ByteBuffer(k, littleEndian);\r\n while (i 0xff)\r\n throw RangeError(\"illegal char code: \"+charCode);\r\n bb.view[i++] = charCode;\r\n }\r\n bb.limit = k;\r\n return bb;\r\n };\r\n\r\n // encodings/debug\r\n\r\n /**\r\n * Encodes this ByteBuffer to a hex encoded string with marked offsets. Offset symbols are:\r\n * * `<` : offset,\r\n * * `'` : markedOffset,\r\n * * `>` : limit,\r\n * * `|` : offset and limit,\r\n * * `[` : offset and markedOffset,\r\n * * `]` : markedOffset and limit,\r\n * * `!` : offset, markedOffset and limit\r\n * @param {boolean=} columns If `true` returns two columns hex + ascii, defaults to `false`\r\n * @returns {string|!Array.} Debug string or array of lines if `asArray = true`\r\n * @expose\r\n * @example `>00'01 02<03` contains four bytes with `limit=0, markedOffset=1, offset=3`\r\n * @example `00[01 02 03>` contains four bytes with `offset=markedOffset=1, limit=4`\r\n * @example `00|01 02 03` contains four bytes with `offset=limit=1, markedOffset=-1`\r\n * @example `|` contains zero bytes with `offset=limit=0, markedOffset=-1`\r\n */\r\n ByteBufferPrototype.toDebug = function(columns) {\r\n var i = -1,\r\n k = this.buffer.byteLength,\r\n b,\r\n hex = \"\",\r\n asc = \"\",\r\n out = \"\";\r\n while (i 32 && b < 127 ? String.fromCharCode(b) : '.';\r\n }\r\n ++i;\r\n if (columns) {\r\n if (i > 0 && i % 16 === 0 && i !== k) {\r\n while (hex.length < 3*16+3) hex += \" \";\r\n out += hex+asc+\"\\n\";\r\n hex = asc = \"\";\r\n }\r\n }\r\n if (i === this.offset && i === this.limit)\r\n hex += i === this.markedOffset ? \"!\" : \"|\";\r\n else if (i === this.offset)\r\n hex += i === this.markedOffset ? \"[\" : \"<\";\r\n else if (i === this.limit)\r\n hex += i === this.markedOffset ? \"]\" : \">\";\r\n else\r\n hex += i === this.markedOffset ? \"'\" : (columns || (i !== 0 && i !== k) ? \" \" : \"\");\r\n }\r\n if (columns && hex !== \" \") {\r\n while (hex.length < 3*16+3)\r\n hex += \" \";\r\n out += hex + asc + \"\\n\";\r\n }\r\n return columns ? out : hex;\r\n };\r\n\r\n /**\r\n * Decodes a hex encoded string with marked offsets to a ByteBuffer.\r\n * @param {string} str Debug string to decode (not be generated with `columns = true`)\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n * @see ByteBuffer#toDebug\r\n */\r\n ByteBuffer.fromDebug = function(str, littleEndian, noAssert) {\r\n var k = str.length,\r\n bb = new ByteBuffer(((k+1)/3)|0, littleEndian, noAssert);\r\n var i = 0, j = 0, ch, b,\r\n rs = false, // Require symbol next\r\n ho = false, hm = false, hl = false, // Already has offset (ho), markedOffset (hm), limit (hl)?\r\n fail = false;\r\n while (i':\r\n if (!noAssert) {\r\n if (hl) {\r\n fail = true;\r\n break;\r\n }\r\n hl = true;\r\n }\r\n bb.limit = j;\r\n rs = false;\r\n break;\r\n case \"'\":\r\n if (!noAssert) {\r\n if (hm) {\r\n fail = true;\r\n break;\r\n }\r\n hm = true;\r\n }\r\n bb.markedOffset = j;\r\n rs = false;\r\n break;\r\n case ' ':\r\n rs = false;\r\n break;\r\n default:\r\n if (!noAssert) {\r\n if (rs) {\r\n fail = true;\r\n break;\r\n }\r\n }\r\n b = parseInt(ch+str.charAt(i++), 16);\r\n if (!noAssert) {\r\n if (isNaN(b) || b < 0 || b > 255)\r\n throw TypeError(\"Illegal str: Not a debug encoded string\");\r\n }\r\n bb.view[j++] = b;\r\n rs = true;\r\n }\r\n if (fail)\r\n throw TypeError(\"Illegal str: Invalid symbol at \"+i);\r\n }\r\n if (!noAssert) {\r\n if (!ho || !hl)\r\n throw TypeError(\"Illegal str: Missing offset or limit\");\r\n if (j>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var out = new Array(end - begin),\r\n b;\r\n while (begin < end) {\r\n b = this.view[begin++];\r\n if (b < 0x10)\r\n out.push(\"0\", b.toString(16));\r\n else out.push(b.toString(16));\r\n }\r\n return out.join('');\r\n };\r\n\r\n /**\r\n * Decodes a hex encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromHex = function(str, littleEndian, noAssert) {\r\n if (!noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (str.length % 2 !== 0)\r\n throw TypeError(\"Illegal str: Length not a multiple of 2\");\r\n }\r\n var k = str.length,\r\n bb = new ByteBuffer((k / 2) | 0, littleEndian),\r\n b;\r\n for (var i=0, j=0; i 255)\r\n throw TypeError(\"Illegal str: Contains non-hex characters\");\r\n bb.view[j++] = b;\r\n }\r\n bb.limit = j;\r\n return bb;\r\n };\r\n\r\n // utfx-embeddable\r\n\r\n /**\r\n * utfx-embeddable (c) 2014 Daniel Wirtz \r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/utfx for details\r\n */\r\n var utfx = function() {\r\n \"use strict\";\r\n\r\n /**\r\n * utfx namespace.\r\n * @inner\r\n * @type {!Object.}\r\n */\r\n var utfx = {};\r\n\r\n /**\r\n * Maximum valid code point.\r\n * @type {number}\r\n * @const\r\n */\r\n utfx.MAX_CODEPOINT = 0x10FFFF;\r\n\r\n /**\r\n * Encodes UTF8 code points to UTF8 bytes.\r\n * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point\r\n * respectively `null` if there are no more code points left or a single numeric code point.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte\r\n */\r\n utfx.encodeUTF8 = function(src, dst) {\r\n var cp = null;\r\n if (typeof src === 'number')\r\n cp = src,\r\n src = function() { return null; };\r\n while (cp !== null || (cp = src()) !== null) {\r\n if (cp < 0x80)\r\n dst(cp&0x7F);\r\n else if (cp < 0x800)\r\n dst(((cp>>6)&0x1F)|0xC0),\r\n dst((cp&0x3F)|0x80);\r\n else if (cp < 0x10000)\r\n dst(((cp>>12)&0x0F)|0xE0),\r\n dst(((cp>>6)&0x3F)|0x80),\r\n dst((cp&0x3F)|0x80);\r\n else\r\n dst(((cp>>18)&0x07)|0xF0),\r\n dst(((cp>>12)&0x3F)|0x80),\r\n dst(((cp>>6)&0x3F)|0x80),\r\n dst((cp&0x3F)|0x80);\r\n cp = null;\r\n }\r\n };\r\n\r\n /**\r\n * Decodes UTF8 bytes to UTF8 code points.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there\r\n * are no more bytes left.\r\n * @param {!function(number)} dst Code points destination as a function successively called with each decoded code point.\r\n * @throws {RangeError} If a starting byte is invalid in UTF8\r\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the\r\n * remaining bytes.\r\n */\r\n utfx.decodeUTF8 = function(src, dst) {\r\n var a, b, c, d, fail = function(b) {\r\n b = b.slice(0, b.indexOf(null));\r\n var err = Error(b.toString());\r\n err.name = \"TruncatedError\";\r\n err['bytes'] = b;\r\n throw err;\r\n };\r\n while ((a = src()) !== null) {\r\n if ((a&0x80) === 0)\r\n dst(a);\r\n else if ((a&0xE0) === 0xC0)\r\n ((b = src()) === null) && fail([a, b]),\r\n dst(((a&0x1F)<<6) | (b&0x3F));\r\n else if ((a&0xF0) === 0xE0)\r\n ((b=src()) === null || (c=src()) === null) && fail([a, b, c]),\r\n dst(((a&0x0F)<<12) | ((b&0x3F)<<6) | (c&0x3F));\r\n else if ((a&0xF8) === 0xF0)\r\n ((b=src()) === null || (c=src()) === null || (d=src()) === null) && fail([a, b, c ,d]),\r\n dst(((a&0x07)<<18) | ((b&0x3F)<<12) | ((c&0x3F)<<6) | (d&0x3F));\r\n else throw RangeError(\"Illegal starting byte: \"+a);\r\n }\r\n };\r\n\r\n /**\r\n * Converts UTF16 characters to UTF8 code points.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @param {!function(number)} dst Code points destination as a function successively called with each converted code\r\n * point.\r\n */\r\n utfx.UTF16toUTF8 = function(src, dst) {\r\n var c1, c2 = null;\r\n while (true) {\r\n if ((c1 = c2 !== null ? c2 : src()) === null)\r\n break;\r\n if (c1 >= 0xD800 && c1 <= 0xDFFF) {\r\n if ((c2 = src()) !== null) {\r\n if (c2 >= 0xDC00 && c2 <= 0xDFFF) {\r\n dst((c1-0xD800)*0x400+c2-0xDC00+0x10000);\r\n c2 = null; continue;\r\n }\r\n }\r\n }\r\n dst(c1);\r\n }\r\n if (c2 !== null) dst(c2);\r\n };\r\n\r\n /**\r\n * Converts UTF8 code points to UTF16 characters.\r\n * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point\r\n * respectively `null` if there are no more code points left or a single numeric code point.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.\r\n * @throws {RangeError} If a code point is out of range\r\n */\r\n utfx.UTF8toUTF16 = function(src, dst) {\r\n var cp = null;\r\n if (typeof src === 'number')\r\n cp = src, src = function() { return null; };\r\n while (cp !== null || (cp = src()) !== null) {\r\n if (cp <= 0xFFFF)\r\n dst(cp);\r\n else\r\n cp -= 0x10000,\r\n dst((cp>>10)+0xD800),\r\n dst((cp%0x400)+0xDC00);\r\n cp = null;\r\n }\r\n };\r\n\r\n /**\r\n * Converts and encodes UTF16 characters to UTF8 bytes.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively `null`\r\n * if there are no more characters left.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte.\r\n */\r\n utfx.encodeUTF16toUTF8 = function(src, dst) {\r\n utfx.UTF16toUTF8(src, function(cp) {\r\n utfx.encodeUTF8(cp, dst);\r\n });\r\n };\r\n\r\n /**\r\n * Decodes and converts UTF8 bytes to UTF16 characters.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there\r\n * are no more bytes left.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.\r\n * @throws {RangeError} If a starting byte is invalid in UTF8\r\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the remaining bytes.\r\n */\r\n utfx.decodeUTF8toUTF16 = function(src, dst) {\r\n utfx.decodeUTF8(src, function(cp) {\r\n utfx.UTF8toUTF16(cp, dst);\r\n });\r\n };\r\n\r\n /**\r\n * Calculates the byte length of an UTF8 code point.\r\n * @param {number} cp UTF8 code point\r\n * @returns {number} Byte length\r\n */\r\n utfx.calculateCodePoint = function(cp) {\r\n return (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes required to store UTF8 code points.\r\n * @param {(!function():number|null)} src Code points source as a function returning the next code point respectively\r\n * `null` if there are no more code points left.\r\n * @returns {number} The number of UTF8 bytes required\r\n */\r\n utfx.calculateUTF8 = function(src) {\r\n var cp, l=0;\r\n while ((cp = src()) !== null)\r\n l += (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n return l;\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 code points respectively UTF8 bytes required to store UTF16 char codes.\r\n * @param {(!function():number|null)} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @returns {!Array.} The number of UTF8 code points at index 0 and the number of UTF8 bytes required at index 1.\r\n */\r\n utfx.calculateUTF16asUTF8 = function(src) {\r\n var n=0, l=0;\r\n utfx.UTF16toUTF8(src, function(cp) {\r\n ++n; l += (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n });\r\n return [n,l];\r\n };\r\n\r\n return utfx;\r\n }();\r\n\r\n // encodings/utf8\r\n\r\n /**\r\n * Encodes this ByteBuffer's contents between {@link ByteBuffer#offset} and {@link ByteBuffer#limit} to an UTF8 encoded\r\n * string.\r\n * @returns {string} Hex encoded string\r\n * @throws {RangeError} If `offset > limit`\r\n * @expose\r\n */\r\n ByteBufferPrototype.toUTF8 = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var sd; try {\r\n utfx.decodeUTF8toUTF16(function() {\r\n return begin < end ? this.view[begin++] : null;\r\n }.bind(this), sd = stringDestination());\r\n } catch (e) {\r\n if (begin !== end)\r\n throw RangeError(\"Illegal range: Truncated data, \"+begin+\" != \"+end);\r\n }\r\n return sd();\r\n };\r\n\r\n /**\r\n * Decodes an UTF8 encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromUTF8 = function(str, littleEndian, noAssert) {\r\n if (!noAssert)\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n var bb = new ByteBuffer(utfx.calculateUTF16asUTF8(stringSource(str), true)[1], littleEndian, noAssert),\r\n i = 0;\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n bb.view[i++] = b;\r\n });\r\n bb.limit = i;\r\n return bb;\r\n };\r\n\r\n return ByteBuffer;\r\n});\r\n","/*\r\n Copyright 2013 Daniel Wirtz \r\n Copyright 2009 The Closure Library Authors. All Rights Reserved.\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS-IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n */\r\n\r\n/**\r\n * @license long.js (c) 2013 Daniel Wirtz \r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/long.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (typeof define === 'function' && define[\"amd\"])\r\n define([], factory);\r\n /* CommonJS */ else if (typeof require === 'function' && typeof module === \"object\" && module && module[\"exports\"])\r\n module[\"exports\"] = factory();\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"Long\"] = factory();\r\n\r\n})(this, function() {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\r\n * See the from* functions below for more convenient ways of constructing Longs.\r\n * @exports Long\r\n * @class A Long class for representing a 64 bit two's-complement integer value.\r\n * @param {number} low The low (signed) 32 bits of the long\r\n * @param {number} high The high (signed) 32 bits of the long\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @constructor\r\n */\r\n function Long(low, high, unsigned) {\r\n\r\n /**\r\n * The low 32 bits as a signed value.\r\n * @type {number}\r\n * @expose\r\n */\r\n this.low = low | 0;\r\n\r\n /**\r\n * The high 32 bits as a signed value.\r\n * @type {number}\r\n * @expose\r\n */\r\n this.high = high | 0;\r\n\r\n /**\r\n * Whether unsigned or not.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.unsigned = !!unsigned;\r\n }\r\n\r\n // The internal representation of a long is the two given signed, 32-bit values.\r\n // We use 32-bit pieces because these are the size of integers on which\r\n // Javascript performs bit-operations. For operations like addition and\r\n // multiplication, we split each number into 16 bit pieces, which can easily be\r\n // multiplied within Javascript's floating-point representation without overflow\r\n // or change in sign.\r\n //\r\n // In the algorithms below, we frequently reduce the negative case to the\r\n // positive case by negating the input(s) and then post-processing the result.\r\n // Note that we must ALWAYS check specially whether those values are MIN_VALUE\r\n // (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\r\n // a positive number, it overflows back into a negative). Not handling this\r\n // case would often result in infinite recursion.\r\n //\r\n // Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\r\n // methods on which they depend.\r\n\r\n /**\r\n * An indicator used to reliably determine if an object is a Long or not.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n * @private\r\n */\r\n Long.__isLong__;\r\n\r\n Object.defineProperty(Long.prototype, \"__isLong__\", {\r\n value: true,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n\r\n /**\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n * @inner\r\n */\r\n function isLong(obj) {\r\n return (obj && obj[\"__isLong__\"]) === true;\r\n }\r\n\r\n /**\r\n * Tests if the specified object is a Long.\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Long.isLong = isLong;\r\n\r\n /**\r\n * A cache of the Long representations of small integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\n var INT_CACHE = {};\r\n\r\n /**\r\n * A cache of the Long representations of small unsigned integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\n var UINT_CACHE = {};\r\n\r\n /**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromInt(value, unsigned) {\r\n var obj, cachedObj, cache;\r\n if (unsigned) {\r\n value >>>= 0;\r\n if (cache = (0 <= value && value < 256)) {\r\n cachedObj = UINT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true);\r\n if (cache)\r\n UINT_CACHE[value] = obj;\r\n return obj;\r\n } else {\r\n value |= 0;\r\n if (cache = (-128 <= value && value < 128)) {\r\n cachedObj = INT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, value < 0 ? -1 : 0, false);\r\n if (cache)\r\n INT_CACHE[value] = obj;\r\n return obj;\r\n }\r\n }\r\n\r\n /**\r\n * Returns a Long representing the given 32 bit integer value.\r\n * @function\r\n * @param {number} value The 32 bit integer in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @returns {!Long} The corresponding Long value\r\n * @expose\r\n */\r\n Long.fromInt = fromInt;\r\n\r\n /**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromNumber(value, unsigned) {\r\n if (isNaN(value) || !isFinite(value))\r\n return unsigned ? UZERO : ZERO;\r\n if (unsigned) {\r\n if (value < 0)\r\n return UZERO;\r\n if (value >= TWO_PWR_64_DBL)\r\n return MAX_UNSIGNED_VALUE;\r\n } else {\r\n if (value <= -TWO_PWR_63_DBL)\r\n return MIN_VALUE;\r\n if (value + 1 >= TWO_PWR_63_DBL)\r\n return MAX_VALUE;\r\n }\r\n if (value < 0)\r\n return fromNumber(-value, unsigned).neg();\r\n return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);\r\n }\r\n\r\n /**\r\n * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\r\n * @function\r\n * @param {number} value The number in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @returns {!Long} The corresponding Long value\r\n * @expose\r\n */\r\n Long.fromNumber = fromNumber;\r\n\r\n /**\r\n * @param {number} lowBits\r\n * @param {number} highBits\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromBits(lowBits, highBits, unsigned) {\r\n return new Long(lowBits, highBits, unsigned);\r\n }\r\n\r\n /**\r\n * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\r\n * assumed to use 32 bits.\r\n * @function\r\n * @param {number} lowBits The low 32 bits\r\n * @param {number} highBits The high 32 bits\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @returns {!Long} The corresponding Long value\r\n * @expose\r\n */\r\n Long.fromBits = fromBits;\r\n\r\n /**\r\n * @function\r\n * @param {number} base\r\n * @param {number} exponent\r\n * @returns {number}\r\n * @inner\r\n */\r\n var pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4)\r\n\r\n /**\r\n * @param {string} str\r\n * @param {(boolean|number)=} unsigned\r\n * @param {number=} radix\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromString(str, unsigned, radix) {\r\n if (str.length === 0)\r\n throw Error('empty string');\r\n if (str === \"NaN\" || str === \"Infinity\" || str === \"+Infinity\" || str === \"-Infinity\")\r\n return ZERO;\r\n if (typeof unsigned === 'number') // For goog.math.long compatibility\r\n radix = unsigned,\r\n unsigned = false;\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n\r\n var p;\r\n if ((p = str.indexOf('-')) > 0)\r\n throw Error('interior hyphen');\r\n else if (p === 0) {\r\n return fromString(str.substring(1), unsigned, radix).neg();\r\n }\r\n\r\n // Do several (8) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 8));\r\n\r\n var result = ZERO;\r\n for (var i = 0; i < str.length; i += 8) {\r\n var size = Math.min(8, str.length - i),\r\n value = parseInt(str.substring(i, i + size), radix);\r\n if (size < 8) {\r\n var power = fromNumber(pow_dbl(radix, size));\r\n result = result.mul(power).add(fromNumber(value));\r\n } else {\r\n result = result.mul(radixToPower);\r\n result = result.add(fromNumber(value));\r\n }\r\n }\r\n result.unsigned = unsigned;\r\n return result;\r\n }\r\n\r\n /**\r\n * Returns a Long representation of the given string, written using the specified radix.\r\n * @function\r\n * @param {string} str The textual representation of the Long\r\n * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\r\n * @returns {!Long} The corresponding Long value\r\n * @expose\r\n */\r\n Long.fromString = fromString;\r\n\r\n /**\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromValue(val) {\r\n if (val /* is compatible */ instanceof Long)\r\n return val;\r\n if (typeof val === 'number')\r\n return fromNumber(val);\r\n if (typeof val === 'string')\r\n return fromString(val);\r\n // Throws for non-objects, converts non-instanceof Long:\r\n return fromBits(val.low, val.high, val.unsigned);\r\n }\r\n\r\n /**\r\n * Converts the specified value to a Long.\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n Long.fromValue = fromValue;\r\n\r\n // NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\r\n // no runtime penalty for these.\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_16_DBL = 1 << 16;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_24_DBL = 1 << 24;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\r\n\r\n /**\r\n * @type {!Long}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var ZERO = fromInt(0);\r\n\r\n /**\r\n * Signed zero.\r\n * @type {!Long}\r\n * @expose\r\n */\r\n Long.ZERO = ZERO;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var UZERO = fromInt(0, true);\r\n\r\n /**\r\n * Unsigned zero.\r\n * @type {!Long}\r\n * @expose\r\n */\r\n Long.UZERO = UZERO;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var ONE = fromInt(1);\r\n\r\n /**\r\n * Signed one.\r\n * @type {!Long}\r\n * @expose\r\n */\r\n Long.ONE = ONE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var UONE = fromInt(1, true);\r\n\r\n /**\r\n * Unsigned one.\r\n * @type {!Long}\r\n * @expose\r\n */\r\n Long.UONE = UONE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var NEG_ONE = fromInt(-1);\r\n\r\n /**\r\n * Signed negative one.\r\n * @type {!Long}\r\n * @expose\r\n */\r\n Long.NEG_ONE = NEG_ONE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var MAX_VALUE = fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false);\r\n\r\n /**\r\n * Maximum signed value.\r\n * @type {!Long}\r\n * @expose\r\n */\r\n Long.MAX_VALUE = MAX_VALUE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true);\r\n\r\n /**\r\n * Maximum unsigned value.\r\n * @type {!Long}\r\n * @expose\r\n */\r\n Long.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var MIN_VALUE = fromBits(0, 0x80000000|0, false);\r\n\r\n /**\r\n * Minimum signed value.\r\n * @type {!Long}\r\n * @expose\r\n */\r\n Long.MIN_VALUE = MIN_VALUE;\r\n\r\n /**\r\n * @alias Long.prototype\r\n * @inner\r\n */\r\n var LongPrototype = Long.prototype;\r\n\r\n /**\r\n * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\r\n * @returns {number}\r\n * @expose\r\n */\r\n LongPrototype.toInt = function toInt() {\r\n return this.unsigned ? this.low >>> 0 : this.low;\r\n };\r\n\r\n /**\r\n * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\r\n * @returns {number}\r\n * @expose\r\n */\r\n LongPrototype.toNumber = function toNumber() {\r\n if (this.unsigned)\r\n return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0);\r\n return this.high * TWO_PWR_32_DBL + (this.low >>> 0);\r\n };\r\n\r\n /**\r\n * Converts the Long to a string written in the specified radix.\r\n * @param {number=} radix Radix (2-36), defaults to 10\r\n * @returns {string}\r\n * @override\r\n * @throws {RangeError} If `radix` is out of range\r\n * @expose\r\n */\r\n LongPrototype.toString = function toString(radix) {\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n if (this.isZero())\r\n return '0';\r\n if (this.isNegative()) { // Unsigned Longs are never negative\r\n if (this.eq(MIN_VALUE)) {\r\n // We need to change the Long value before it can be negated, so we remove\r\n // the bottom-most digit in this base and then recurse to do the rest.\r\n var radixLong = fromNumber(radix),\r\n div = this.div(radixLong),\r\n rem1 = div.mul(radixLong).sub(this);\r\n return div.toString(radix) + rem1.toInt().toString(radix);\r\n } else\r\n return '-' + this.neg().toString(radix);\r\n }\r\n\r\n // Do several (6) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned),\r\n rem = this;\r\n var result = '';\r\n while (true) {\r\n var remDiv = rem.div(radixToPower),\r\n intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0,\r\n digits = intval.toString(radix);\r\n rem = remDiv;\r\n if (rem.isZero())\r\n return digits + result;\r\n else {\r\n while (digits.length < 6)\r\n digits = '0' + digits;\r\n result = '' + digits + result;\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Gets the high 32 bits as a signed integer.\r\n * @returns {number} Signed high bits\r\n * @expose\r\n */\r\n LongPrototype.getHighBits = function getHighBits() {\r\n return this.high;\r\n };\r\n\r\n /**\r\n * Gets the high 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned high bits\r\n * @expose\r\n */\r\n LongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {\r\n return this.high >>> 0;\r\n };\r\n\r\n /**\r\n * Gets the low 32 bits as a signed integer.\r\n * @returns {number} Signed low bits\r\n * @expose\r\n */\r\n LongPrototype.getLowBits = function getLowBits() {\r\n return this.low;\r\n };\r\n\r\n /**\r\n * Gets the low 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned low bits\r\n * @expose\r\n */\r\n LongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {\r\n return this.low >>> 0;\r\n };\r\n\r\n /**\r\n * Gets the number of bits needed to represent the absolute value of this Long.\r\n * @returns {number}\r\n * @expose\r\n */\r\n LongPrototype.getNumBitsAbs = function getNumBitsAbs() {\r\n if (this.isNegative()) // Unsigned Longs are never negative\r\n return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();\r\n var val = this.high != 0 ? this.high : this.low;\r\n for (var bit = 31; bit > 0; bit--)\r\n if ((val & (1 << bit)) != 0)\r\n break;\r\n return this.high != 0 ? bit + 33 : bit + 1;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value equals zero.\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.isZero = function isZero() {\r\n return this.high === 0 && this.low === 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is negative.\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.isNegative = function isNegative() {\r\n return !this.unsigned && this.high < 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is positive.\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.isPositive = function isPositive() {\r\n return this.unsigned || this.high >= 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is odd.\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.isOdd = function isOdd() {\r\n return (this.low & 1) === 1;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is even.\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.isEven = function isEven() {\r\n return (this.low & 1) === 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value equals the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.equals = function equals(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1)\r\n return false;\r\n return this.high === other.high && this.low === other.low;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.eq = LongPrototype.equals;\r\n\r\n /**\r\n * Tests if this Long's value differs from the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.notEquals = function notEquals(other) {\r\n return !this.eq(/* validates */ other);\r\n };\r\n\r\n /**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.neq = LongPrototype.notEquals;\r\n\r\n /**\r\n * Tests if this Long's value is less than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.lessThan = function lessThan(other) {\r\n return this.comp(/* validates */ other) < 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.lt = LongPrototype.lessThan;\r\n\r\n /**\r\n * Tests if this Long's value is less than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {\r\n return this.comp(/* validates */ other) <= 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.lte = LongPrototype.lessThanOrEqual;\r\n\r\n /**\r\n * Tests if this Long's value is greater than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.greaterThan = function greaterThan(other) {\r\n return this.comp(/* validates */ other) > 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.gt = LongPrototype.greaterThan;\r\n\r\n /**\r\n * Tests if this Long's value is greater than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {\r\n return this.comp(/* validates */ other) >= 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n LongPrototype.gte = LongPrototype.greaterThanOrEqual;\r\n\r\n /**\r\n * Compares this Long's value with the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n * @expose\r\n */\r\n LongPrototype.compare = function compare(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.eq(other))\r\n return 0;\r\n var thisNeg = this.isNegative(),\r\n otherNeg = other.isNegative();\r\n if (thisNeg && !otherNeg)\r\n return -1;\r\n if (!thisNeg && otherNeg)\r\n return 1;\r\n // At this point the sign bits are the same\r\n if (!this.unsigned)\r\n return this.sub(other).isNegative() ? -1 : 1;\r\n // Both are positive if at least one is unsigned\r\n return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1;\r\n };\r\n\r\n /**\r\n * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n * @expose\r\n */\r\n LongPrototype.comp = LongPrototype.compare;\r\n\r\n /**\r\n * Negates this Long's value.\r\n * @returns {!Long} Negated Long\r\n * @expose\r\n */\r\n LongPrototype.negate = function negate() {\r\n if (!this.unsigned && this.eq(MIN_VALUE))\r\n return MIN_VALUE;\r\n return this.not().add(ONE);\r\n };\r\n\r\n /**\r\n * Negates this Long's value. This is an alias of {@link Long#negate}.\r\n * @function\r\n * @returns {!Long} Negated Long\r\n * @expose\r\n */\r\n LongPrototype.neg = LongPrototype.negate;\r\n\r\n /**\r\n * Returns the sum of this and the specified Long.\r\n * @param {!Long|number|string} addend Addend\r\n * @returns {!Long} Sum\r\n * @expose\r\n */\r\n LongPrototype.add = function add(addend) {\r\n if (!isLong(addend))\r\n addend = fromValue(addend);\r\n\r\n // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = addend.high >>> 16;\r\n var b32 = addend.high & 0xFFFF;\r\n var b16 = addend.low >>> 16;\r\n var b00 = addend.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 + b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 + b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 + b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 + b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the difference of this and the specified Long.\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n * @expose\r\n */\r\n LongPrototype.subtract = function subtract(subtrahend) {\r\n if (!isLong(subtrahend))\r\n subtrahend = fromValue(subtrahend);\r\n return this.add(subtrahend.neg());\r\n };\r\n\r\n /**\r\n * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\r\n * @function\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n * @expose\r\n */\r\n LongPrototype.sub = LongPrototype.subtract;\r\n\r\n /**\r\n * Returns the product of this and the specified Long.\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n * @expose\r\n */\r\n LongPrototype.multiply = function multiply(multiplier) {\r\n if (this.isZero())\r\n return ZERO;\r\n if (!isLong(multiplier))\r\n multiplier = fromValue(multiplier);\r\n if (multiplier.isZero())\r\n return ZERO;\r\n if (this.eq(MIN_VALUE))\r\n return multiplier.isOdd() ? MIN_VALUE : ZERO;\r\n if (multiplier.eq(MIN_VALUE))\r\n return this.isOdd() ? MIN_VALUE : ZERO;\r\n\r\n if (this.isNegative()) {\r\n if (multiplier.isNegative())\r\n return this.neg().mul(multiplier.neg());\r\n else\r\n return this.neg().mul(multiplier).neg();\r\n } else if (multiplier.isNegative())\r\n return this.mul(multiplier.neg()).neg();\r\n\r\n // If both longs are small, use float multiplication\r\n if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24))\r\n return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);\r\n\r\n // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\r\n // We can skip products that would overflow.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = multiplier.high >>> 16;\r\n var b32 = multiplier.high & 0xFFFF;\r\n var b16 = multiplier.low >>> 16;\r\n var b00 = multiplier.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 * b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 * b00;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c16 += a00 * b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 * b00;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a16 * b16;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a00 * b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\r\n * @function\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n * @expose\r\n */\r\n LongPrototype.mul = LongPrototype.multiply;\r\n\r\n /**\r\n * Returns this Long divided by the specified.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n * @expose\r\n */\r\n LongPrototype.divide = function divide(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n if (divisor.isZero())\r\n throw Error('division by zero');\r\n if (this.isZero())\r\n return this.unsigned ? UZERO : ZERO;\r\n var approx, rem, res;\r\n if (this.eq(MIN_VALUE)) {\r\n if (divisor.eq(ONE) || divisor.eq(NEG_ONE))\r\n return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE\r\n else if (divisor.eq(MIN_VALUE))\r\n return ONE;\r\n else {\r\n // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\r\n var halfThis = this.shr(1);\r\n approx = halfThis.div(divisor).shl(1);\r\n if (approx.eq(ZERO)) {\r\n return divisor.isNegative() ? ONE : NEG_ONE;\r\n } else {\r\n rem = this.sub(divisor.mul(approx));\r\n res = approx.add(rem.div(divisor));\r\n return res;\r\n }\r\n }\r\n } else if (divisor.eq(MIN_VALUE))\r\n return this.unsigned ? UZERO : ZERO;\r\n if (this.isNegative()) {\r\n if (divisor.isNegative())\r\n return this.neg().div(divisor.neg());\r\n return this.neg().div(divisor).neg();\r\n } else if (divisor.isNegative())\r\n return this.div(divisor.neg()).neg();\r\n\r\n // Repeat the following until the remainder is less than other: find a\r\n // floating-point that approximates remainder / other *from below*, add this\r\n // into the result, and subtract it from the remainder. It is critical that\r\n // the approximate value is less than or equal to the real value so that the\r\n // remainder never becomes negative.\r\n res = ZERO;\r\n rem = this;\r\n while (rem.gte(divisor)) {\r\n // Approximate the result of division. This may be a little greater or\r\n // smaller than the actual value.\r\n approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));\r\n\r\n // We will tweak the approximate result by changing it in the 48-th digit or\r\n // the smallest non-fractional digit, whichever is larger.\r\n var log2 = Math.ceil(Math.log(approx) / Math.LN2),\r\n delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48),\r\n\r\n // Decrease the approximation until it is smaller than the remainder. Note\r\n // that if it is too large, the product overflows and is negative.\r\n approxRes = fromNumber(approx),\r\n approxRem = approxRes.mul(divisor);\r\n while (approxRem.isNegative() || approxRem.gt(rem)) {\r\n approx -= delta;\r\n approxRes = fromNumber(approx, this.unsigned);\r\n approxRem = approxRes.mul(divisor);\r\n }\r\n\r\n // We know the answer can't be zero... and actually, zero would cause\r\n // infinite recursion since we would make no progress.\r\n if (approxRes.isZero())\r\n approxRes = ONE;\r\n\r\n res = res.add(approxRes);\r\n rem = rem.sub(approxRem);\r\n }\r\n return res;\r\n };\r\n\r\n /**\r\n * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n * @expose\r\n */\r\n LongPrototype.div = LongPrototype.divide;\r\n\r\n /**\r\n * Returns this Long modulo the specified.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n * @expose\r\n */\r\n LongPrototype.modulo = function modulo(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n return this.sub(this.div(divisor).mul(divisor));\r\n };\r\n\r\n /**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n * @expose\r\n */\r\n LongPrototype.mod = LongPrototype.modulo;\r\n\r\n /**\r\n * Returns the bitwise NOT of this Long.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n LongPrototype.not = function not() {\r\n return fromBits(~this.low, ~this.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the bitwise AND of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n LongPrototype.and = function and(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low & other.low, this.high & other.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the bitwise OR of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n LongPrototype.or = function or(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low | other.low, this.high | other.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the bitwise XOR of this Long and the given one.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n LongPrototype.xor = function xor(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns this Long with bits shifted to the left by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n * @expose\r\n */\r\n LongPrototype.shiftLeft = function shiftLeft(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned);\r\n else\r\n return fromBits(0, this.low << (numBits - 32), this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n * @expose\r\n */\r\n LongPrototype.shl = LongPrototype.shiftLeft;\r\n\r\n /**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n * @expose\r\n */\r\n LongPrototype.shiftRight = function shiftRight(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned);\r\n else\r\n return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n * @expose\r\n */\r\n LongPrototype.shr = LongPrototype.shiftRight;\r\n\r\n /**\r\n * Returns this Long with bits logically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n * @expose\r\n */\r\n LongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n numBits &= 63;\r\n if (numBits === 0)\r\n return this;\r\n else {\r\n var high = this.high;\r\n if (numBits < 32) {\r\n var low = this.low;\r\n return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned);\r\n } else if (numBits === 32)\r\n return fromBits(high, 0, this.unsigned);\r\n else\r\n return fromBits(high >>> (numBits - 32), 0, this.unsigned);\r\n }\r\n };\r\n\r\n /**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n * @expose\r\n */\r\n LongPrototype.shru = LongPrototype.shiftRightUnsigned;\r\n\r\n /**\r\n * Converts this Long to signed.\r\n * @returns {!Long} Signed long\r\n * @expose\r\n */\r\n LongPrototype.toSigned = function toSigned() {\r\n if (!this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, false);\r\n };\r\n\r\n /**\r\n * Converts this Long to unsigned.\r\n * @returns {!Long} Unsigned long\r\n * @expose\r\n */\r\n LongPrototype.toUnsigned = function toUnsigned() {\r\n if (this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, true);\r\n };\r\n\r\n return Long;\r\n});\r\n"]} \ No newline at end of file +{"version":3,"sources":["node_modules/browser-pack/_prelude.js","build/js/machinetalk/protobuf/canon.js","build/js/machinetalk/protobuf/config.js","build/js/machinetalk/protobuf/emcclass.js","build/js/machinetalk/protobuf/firmware.js","build/js/machinetalk/protobuf/jplan.js","build/js/machinetalk/protobuf/log.js","build/js/machinetalk/protobuf/message.js","build/js/machinetalk/protobuf/motcmds.js","build/js/machinetalk/protobuf/nanopb.js","build/js/machinetalk/protobuf/object.js","build/js/machinetalk/protobuf/preview.js","build/js/machinetalk/protobuf/ros.js","build/js/machinetalk/protobuf/rtapi_message.js","build/js/machinetalk/protobuf/rtapicommand.js","build/js/machinetalk/protobuf/status.js","build/js/machinetalk/protobuf/task.js","build/js/machinetalk/protobuf/test.js","build/js/machinetalk/protobuf/types.js","build/js/machinetalk/protobuf/value.js","build/js/protoexport.js","node_modules/bytebuffer/dist/bytebuffer.js","node_modules/bytebuffer/node_modules/long/dist/long.js","node_modules/process/browser.js","node_modules/protobufjs/dist/protobuf.js"],"names":["module","exports","require","newBuilder","package","syntax","options","java_package","messages","name","fields","rule","type","id","default","(nanopb_msgopt).msgid","enums","values","isNamespace","build","(nanopb).max_size","(nanopb).max_count","(nanopb).type","pb","global","factory","define","Long","e","this","stringSource","s","i","length","charCodeAt","stringDestination","cs","ps","arguments","join","stringFromCharCode","apply","String","push","Array","prototype","ieee754_read","buffer","offset","isLE","mLen","nBytes","m","eLen","eMax","eBias","nBits","d","NaN","Infinity","Math","pow","ieee754_write","value","c","rt","abs","isNaN","floor","log","LN2","ByteBuffer","capacity","littleEndian","noAssert","DEFAULT_CAPACITY","DEFAULT_ENDIAN","DEFAULT_NOASSERT","RangeError","EMPTY_BUFFER","ArrayBuffer","view","Uint8Array","markedOffset","limit","VERSION","LITTLE_ENDIAN","BIG_ENDIAN","ByteBufferPrototype","__isByteBuffer__","Object","defineProperty","enumerable","configurable","fromCharCode","accessor","allocate","concat","buffers","encoding","undefined","k","isByteBuffer","wrap","bi","bb","set","subarray","fromBase64","fromHex","fromBinary","fromUTF8","fromDebug","Error","TypeError","clone","call","byteOffset","byteLength","toString","writeBitSet","relative","start","bits","bytes","bit","writeVarint32","writeByte","readBitSet","ret","readVarint32","readByte","readBytes","slice","writeBytes","append","writeInt8","capacity0","resize","readInt8","writeUint8","capacity1","writeUInt8","readUint8","readUInt8","writeInt16","capacity2","writeShort","readInt16","readShort","writeUint16","capacity3","writeUInt16","readUint16","readUInt16","writeInt32","capacity4","writeInt","readInt32","readInt","writeUint32","capacity5","writeUInt32","readUint32","readUInt32","writeInt64","fromNumber","fromString","capacity6","lo","low","hi","high","writeLong","readInt64","readLong","writeUint64","capacity7","writeUInt64","readUint64","readUInt64","writeFloat32","capacity8","writeFloat","readFloat32","readFloat","writeFloat64","capacity9","writeDouble","readFloat64","readDouble","MAX_VARINT32_BYTES","calculateVarint32","zigZagEncode32","n","zigZagDecode32","b","size","capacity10","writeVarint32ZigZag","err","readVarint32ZigZag","val","MAX_VARINT64_BYTES","calculateVarint64","part0","toInt","part1","shiftRightUnsigned","part2","zigZagEncode64","unsigned","toSigned","shiftLeft","xor","shiftRight","toUnsigned","zigZagDecode64","and","ONE","negate","writeVarint64","capacity11","writeVarint64ZigZag","readVarint64","fromBits","readVarint64ZigZag","writeCString","str","utfx","calculateUTF16asUTF8","capacity12","encodeUTF16toUTF8","bind","readCString","sd","decodeUTF8toUTF16","string","writeIString","capacity13","readIString","len","readUTF8String","METRICS_BYTES","METRICS_CHARS","writeUTF8String","capacity14","writeString","calculateUTF8Chars","calculateUTF8Bytes","calculateString","metrics","decodeUTF8","cp","UTF8toUTF16","readString","writeVString","l","capacity15","readVString","source","capacity16","appendTo","target","assert","clear","copy","compact","begin","end","copyTo","targetOffset","sourceOffset","sourceLimit","targetRelative","ensureCapacity","current","fill","flip","mark","order","LE","BE","bigEndian","prepend","diff","prependTo","printDebug","out","console","toDebug","remaining","reset","reverse","skip","toBuffer","forceCopy","toArrayBuffer","toUTF8","toBase64","toHex","toBinary","toColumns","lxiv","aout","ain","encode","src","dst","t","decode","fail","t1","t2","test","btoa","atob","b64","chars","parts","charCode","columns","hex","asc","toUpperCase","ch","j","rs","ho","hm","hl","charAt","parseInt","substring","isFinite","MAX_CODEPOINT","encodeUTF8","a","indexOf","UTF16toUTF8","c1","c2","calculateCodePoint","calculateUTF8","isLong","obj","fromInt","cachedObj","cache","UINT_CACHE","INT_CACHE","UZERO","ZERO","TWO_PWR_64_DBL","MAX_UNSIGNED_VALUE","TWO_PWR_63_DBL","MIN_VALUE","MAX_VALUE","neg","TWO_PWR_32_DBL","lowBits","highBits","radix","p","radixToPower","pow_dbl","result","min","power","mul","add","fromValue","__isLong__","TWO_PWR_16_DBL","TWO_PWR_24","UONE","NEG_ONE","LongPrototype","toNumber","isZero","isNegative","eq","radixLong","div","rem1","sub","rem","remDiv","intval","digits","getHighBits","getHighBitsUnsigned","getLowBits","getLowBitsUnsigned","getNumBitsAbs","isPositive","isOdd","isEven","equals","other","notEquals","neq","lessThan","comp","lt","lessThanOrEqual","lte","greaterThan","gt","greaterThanOrEqual","gte","compare","thisNeg","otherNeg","not","addend","a48","a32","a16","a00","b48","b32","b16","b00","c48","c32","c16","c00","subtract","subtrahend","multiply","multiplier","divide","divisor","approx","res","shru","shr","shl","max","log2","ceil","delta","approxRes","approxRem","modulo","mod","or","numBits","toBytes","le","toBytesLE","toBytesBE","defaultSetTimout","defaultClearTimeout","runTimeout","fun","cachedSetTimeout","setTimeout","runClearTimeout","marker","cachedClearTimeout","clearTimeout","cleanUpNextTick","draining","currentQueue","queue","queueIndex","drainQueue","timeout","run","Item","array","noop","process","nextTick","args","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","isCommonJS","ProtoBuf","WIRE_TYPES","VARINT","BITS64","LDELIM","STARTGROUP","ENDGROUP","BITS32","PACKABLE_WIRE_TYPES","TYPES","int32","wireType","defaultValue","uint32","sint32","int64","uint64","sint64","bool","double","fixed32","sfixed32","fixed64","sfixed64","float","enum","message","group","MAP_KEY_TYPES","ID_MIN","ID_MAX","convertFieldsToCamelCase","populateAccessors","populateDefaults","Util","IS_NODE","XHR","XMLHttpFactories","XMLHttpRequest","ActiveXObject","xhr","fetch","path","callback","fs","readFile","data","readFileSync","open","setRequestHeader","overrideMimeType","send","status","responseText","onreadystatechange","readyState","toCamelCase","replace","$0","$1","Lang","DELIM","RULE","TYPE","NAME","TYPEDEF","TYPEREF","FQTYPEREF","NUMBER","NUMBER_DEC","NUMBER_HEX","NUMBER_OCT","NUMBER_FLT","BOOL","ID","NEGID","WHITESPACE","STRING","STRING_DQ","STRING_SQ","DotProto","mkId","mayBeNegative","sign","mkNumber","parseFloat","setOption","isArray","Tokenizer","proto","index","line","stack","_stringOpen","TokenizerPrototype","_readString","re","lastIndex","match","exec","next","shift","repeat","prev","token","peek","expected","actual","omit","Parser","tn","proto3","ParserPrototype","parse","weak","topLevel","imports","services","head","_parseMessage","_parseEnum","_parseOption","_parseService","_parseExtend","delim","_readValue","mayBeTypeRef","toLowerCase","parent","isList","custom","_parseOptionValue","svc","rpc","_parseServiceRPC","method","request","response","request_stream","response_stream","fld","isGroup","msg","oneofs","_parseFieldOptions","_parseMessageField","_parseMessageOneOf","hasOwnProperty","_parseExtensionRanges","_parseIgnored","grp","first","enm","range","ranges","ext","ref","Reflect","mkDefault","mkLong","skipTillGroupEnd","expectedId","buf","tag","T","builder","className","TPrototype","fqn","ptr","includeClass","Namespace","children","NamespacePrototype","create","getChildren","addChild","child","getChild","Message","Field","originalName","nameOrId","key","resolve","qn","excludeNonNamespace","part","split","unshift","ns","buildOpt","opt","keys","getOption","Element","resolvedType","isMapKey","ElementPrototype","defaultFieldValue","verifyValue","self","Enum","Value","clazz","Builder","calculateLength","calculate","encodeValue","prevOffset","valueFromString","valueToString","extensions","_fields","_fieldsById","_fieldsByName","MessagePrototype","rebuild","cloneRaw","binaryAsBase64","longsAsStrings","getName","object","forEach","v","Map","it","entries","done","keyElem","valueElem","$type","field","OneOf","var_args","repeated","map","required","$set","$add","keyOrObj","ikey","_oneofsByName","oneof","currentField","get","$get","ExtensionField","Name","setter","getter","noVerify","isNew","encodeDelimited","enc","encodeAB","encodeNB","encode64","encodeHex","toRaw","encodeJSON","JSON","stringify","decodeDelimited","decode64","decodeHex","decodeJSON","Service","Extension","fieldMissing","expectedGroupEndId","keyval","keytype","keyType","element","keyElement","FieldPrototype","skipRepeated","hasWirePresence","varintLen","contents","ni","msgbuf","extension","root","rpcImpl","ServicePrototype","RPCMethod","req","resolvedRequestType","resolvedResponseType","notABuffer","Method","requestName","responseName","requestStream","responseStream","propagateSyntax","resolved","files","importRoot","BuilderPrototype","isMessage","def","isMessageField","isEnum","isService","isExtend","namespace","defs","pop","subObj","mtd","valid","json","filename","file","fname","resetRoot","importFilename","$2","base","resolveAll","packed","lookup","arrayIterator","arr","idx","MapPrototype","keyValue","hadKey","entry","strKeys","cb","thisArg","valValue","has","loadProto","loadJson","protoFromString","loadProtoFile","protoFromFile","loadJsonFile"],"mappings":"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","file":"bundle.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n */\r\n\r\n/**\r\n * @license bytebuffer.js (c) 2015 Daniel Wirtz \r\n * Backing buffer: ArrayBuffer, Accessor: Uint8Array\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/bytebuffer.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (typeof define === 'function' && define[\"amd\"])\r\n define([\"long\"], factory);\r\n /* CommonJS */ else if (typeof require === 'function' && typeof module === \"object\" && module && module[\"exports\"])\r\n module['exports'] = (function() {\r\n var Long; try { Long = require(\"long\"); } catch (e) {}\r\n return factory(Long);\r\n })();\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"ByteBuffer\"] = factory(global[\"dcodeIO\"][\"Long\"]);\r\n\r\n})(this, function(Long) {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a new ByteBuffer.\r\n * @class The swiss army knife for binary data in JavaScript.\r\n * @exports ByteBuffer\r\n * @constructor\r\n * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}.\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @expose\r\n */\r\n var ByteBuffer = function(capacity, littleEndian, noAssert) {\r\n if (typeof capacity === 'undefined')\r\n capacity = ByteBuffer.DEFAULT_CAPACITY;\r\n if (typeof littleEndian === 'undefined')\r\n littleEndian = ByteBuffer.DEFAULT_ENDIAN;\r\n if (typeof noAssert === 'undefined')\r\n noAssert = ByteBuffer.DEFAULT_NOASSERT;\r\n if (!noAssert) {\r\n capacity = capacity | 0;\r\n if (capacity < 0)\r\n throw RangeError(\"Illegal capacity\");\r\n littleEndian = !!littleEndian;\r\n noAssert = !!noAssert;\r\n }\r\n\r\n /**\r\n * Backing ArrayBuffer.\r\n * @type {!ArrayBuffer}\r\n * @expose\r\n */\r\n this.buffer = capacity === 0 ? EMPTY_BUFFER : new ArrayBuffer(capacity);\r\n\r\n /**\r\n * Uint8Array utilized to manipulate the backing buffer. Becomes `null` if the backing buffer has a capacity of `0`.\r\n * @type {?Uint8Array}\r\n * @expose\r\n */\r\n this.view = capacity === 0 ? null : new Uint8Array(this.buffer);\r\n\r\n /**\r\n * Absolute read/write offset.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#flip\r\n * @see ByteBuffer#clear\r\n */\r\n this.offset = 0;\r\n\r\n /**\r\n * Marked offset.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#mark\r\n * @see ByteBuffer#reset\r\n */\r\n this.markedOffset = -1;\r\n\r\n /**\r\n * Absolute limit of the contained data. Set to the backing buffer's capacity upon allocation.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#flip\r\n * @see ByteBuffer#clear\r\n */\r\n this.limit = capacity;\r\n\r\n /**\r\n * Whether to use little endian byte order, defaults to `false` for big endian.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.littleEndian = littleEndian;\r\n\r\n /**\r\n * Whether to skip assertions of offsets and values, defaults to `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.noAssert = noAssert;\r\n };\r\n\r\n /**\r\n * ByteBuffer version.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.VERSION = \"5.0.1\";\r\n\r\n /**\r\n * Little endian constant that can be used instead of its boolean value. Evaluates to `true`.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.LITTLE_ENDIAN = true;\r\n\r\n /**\r\n * Big endian constant that can be used instead of its boolean value. Evaluates to `false`.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.BIG_ENDIAN = false;\r\n\r\n /**\r\n * Default initial capacity of `16`.\r\n * @type {number}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_CAPACITY = 16;\r\n\r\n /**\r\n * Default endianess of `false` for big endian.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_ENDIAN = ByteBuffer.BIG_ENDIAN;\r\n\r\n /**\r\n * Default no assertions flag of `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_NOASSERT = false;\r\n\r\n /**\r\n * A `Long` class for representing a 64-bit two's-complement integer value. May be `null` if Long.js has not been loaded\r\n * and int64 support is not available.\r\n * @type {?Long}\r\n * @const\r\n * @see https://github.com/dcodeIO/long.js\r\n * @expose\r\n */\r\n ByteBuffer.Long = Long || null;\r\n\r\n /**\r\n * @alias ByteBuffer.prototype\r\n * @inner\r\n */\r\n var ByteBufferPrototype = ByteBuffer.prototype;\r\n\r\n /**\r\n * An indicator used to reliably determine if an object is a ByteBuffer or not.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n * @private\r\n */\r\n ByteBufferPrototype.__isByteBuffer__;\r\n\r\n Object.defineProperty(ByteBufferPrototype, \"__isByteBuffer__\", {\r\n value: true,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n\r\n // helpers\r\n\r\n /**\r\n * @type {!ArrayBuffer}\r\n * @inner\r\n */\r\n var EMPTY_BUFFER = new ArrayBuffer(0);\r\n\r\n /**\r\n * String.fromCharCode reference for compile-time renaming.\r\n * @type {function(...number):string}\r\n * @inner\r\n */\r\n var stringFromCharCode = String.fromCharCode;\r\n\r\n /**\r\n * Creates a source function for a string.\r\n * @param {string} s String to read from\r\n * @returns {function():number|null} Source function returning the next char code respectively `null` if there are\r\n * no more characters left.\r\n * @throws {TypeError} If the argument is invalid\r\n * @inner\r\n */\r\n function stringSource(s) {\r\n var i=0; return function() {\r\n return i < s.length ? s.charCodeAt(i++) : null;\r\n };\r\n }\r\n\r\n /**\r\n * Creates a destination function for a string.\r\n * @returns {function(number=):undefined|string} Destination function successively called with the next char code.\r\n * Returns the final string when called without arguments.\r\n * @inner\r\n */\r\n function stringDestination() {\r\n var cs = [], ps = []; return function() {\r\n if (arguments.length === 0)\r\n return ps.join('')+stringFromCharCode.apply(String, cs);\r\n if (cs.length + arguments.length > 1024)\r\n ps.push(stringFromCharCode.apply(String, cs)),\r\n cs.length = 0;\r\n Array.prototype.push.apply(cs, arguments);\r\n };\r\n }\r\n\r\n /**\r\n * Gets the accessor type.\r\n * @returns {Function} `Buffer` under node.js, `Uint8Array` respectively `DataView` in the browser (classes)\r\n * @expose\r\n */\r\n ByteBuffer.accessor = function() {\r\n return Uint8Array;\r\n };\r\n /**\r\n * Allocates a new ByteBuffer backed by a buffer of the specified capacity.\r\n * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}.\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBuffer.allocate = function(capacity, littleEndian, noAssert) {\r\n return new ByteBuffer(capacity, littleEndian, noAssert);\r\n };\r\n\r\n /**\r\n * Concatenates multiple ByteBuffers into one.\r\n * @param {!Array.} buffers Buffers to concatenate\r\n * @param {(string|boolean)=} encoding String encoding if `buffers` contains a string (\"base64\", \"hex\", \"binary\",\r\n * defaults to \"utf8\")\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order for the resulting ByteBuffer. Defaults\r\n * to {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values for the resulting ByteBuffer. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} Concatenated ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.concat = function(buffers, encoding, littleEndian, noAssert) {\r\n if (typeof encoding === 'boolean' || typeof encoding !== 'string') {\r\n noAssert = littleEndian;\r\n littleEndian = encoding;\r\n encoding = undefined;\r\n }\r\n var capacity = 0;\r\n for (var i=0, k=buffers.length, length; i 0) capacity += length;\r\n }\r\n if (capacity === 0)\r\n return new ByteBuffer(0, littleEndian, noAssert);\r\n var bb = new ByteBuffer(capacity, littleEndian, noAssert),\r\n bi;\r\n i=0; while (i} buffer Anything that can be wrapped\r\n * @param {(string|boolean)=} encoding String encoding if `buffer` is a string (\"base64\", \"hex\", \"binary\", defaults to\r\n * \"utf8\")\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} A ByteBuffer wrapping `buffer`\r\n * @expose\r\n */\r\n ByteBuffer.wrap = function(buffer, encoding, littleEndian, noAssert) {\r\n if (typeof encoding !== 'string') {\r\n noAssert = littleEndian;\r\n littleEndian = encoding;\r\n encoding = undefined;\r\n }\r\n if (typeof buffer === 'string') {\r\n if (typeof encoding === 'undefined')\r\n encoding = \"utf8\";\r\n switch (encoding) {\r\n case \"base64\":\r\n return ByteBuffer.fromBase64(buffer, littleEndian);\r\n case \"hex\":\r\n return ByteBuffer.fromHex(buffer, littleEndian);\r\n case \"binary\":\r\n return ByteBuffer.fromBinary(buffer, littleEndian);\r\n case \"utf8\":\r\n return ByteBuffer.fromUTF8(buffer, littleEndian);\r\n case \"debug\":\r\n return ByteBuffer.fromDebug(buffer, littleEndian);\r\n default:\r\n throw Error(\"Unsupported encoding: \"+encoding);\r\n }\r\n }\r\n if (buffer === null || typeof buffer !== 'object')\r\n throw TypeError(\"Illegal buffer\");\r\n var bb;\r\n if (ByteBuffer.isByteBuffer(buffer)) {\r\n bb = ByteBufferPrototype.clone.call(buffer);\r\n bb.markedOffset = -1;\r\n return bb;\r\n }\r\n if (buffer instanceof Uint8Array) { // Extract ArrayBuffer from Uint8Array\r\n bb = new ByteBuffer(0, littleEndian, noAssert);\r\n if (buffer.length > 0) { // Avoid references to more than one EMPTY_BUFFER\r\n bb.buffer = buffer.buffer;\r\n bb.offset = buffer.byteOffset;\r\n bb.limit = buffer.byteOffset + buffer.byteLength;\r\n bb.view = new Uint8Array(buffer.buffer);\r\n }\r\n } else if (buffer instanceof ArrayBuffer) { // Reuse ArrayBuffer\r\n bb = new ByteBuffer(0, littleEndian, noAssert);\r\n if (buffer.byteLength > 0) {\r\n bb.buffer = buffer;\r\n bb.offset = 0;\r\n bb.limit = buffer.byteLength;\r\n bb.view = buffer.byteLength > 0 ? new Uint8Array(buffer) : null;\r\n }\r\n } else if (Object.prototype.toString.call(buffer) === \"[object Array]\") { // Create from octets\r\n bb = new ByteBuffer(buffer.length, littleEndian, noAssert);\r\n bb.limit = buffer.length;\r\n for (var i=0; i} value Array of booleans to write\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeBitSet = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (!(value instanceof Array))\r\n throw TypeError(\"Illegal BitSet: Not an array\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n\r\n var start = offset,\r\n bits = value.length,\r\n bytes = (bits >> 3),\r\n bit = 0,\r\n k;\r\n\r\n offset += this.writeVarint32(bits,offset);\r\n\r\n while(bytes--) {\r\n k = (!!value[bit++] & 1) |\r\n ((!!value[bit++] & 1) << 1) |\r\n ((!!value[bit++] & 1) << 2) |\r\n ((!!value[bit++] & 1) << 3) |\r\n ((!!value[bit++] & 1) << 4) |\r\n ((!!value[bit++] & 1) << 5) |\r\n ((!!value[bit++] & 1) << 6) |\r\n ((!!value[bit++] & 1) << 7);\r\n this.writeByte(k,offset++);\r\n }\r\n\r\n if(bit < bits) {\r\n var m = 0; k = 0;\r\n while(bit < bits) k = k | ((!!value[bit++] & 1) << (m++));\r\n this.writeByte(k,offset++);\r\n }\r\n\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n }\r\n\r\n /**\r\n * Reads a BitSet as an array of booleans.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted.\r\n * @returns {Array\r\n * @expose\r\n */\r\n ByteBufferPrototype.readBitSet = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n\r\n var ret = this.readVarint32(offset),\r\n bits = ret.value,\r\n bytes = (bits >> 3),\r\n bit = 0,\r\n value = [],\r\n k;\r\n\r\n offset += ret.length;\r\n\r\n while(bytes--) {\r\n k = this.readByte(offset++);\r\n value[bit++] = !!(k & 0x01);\r\n value[bit++] = !!(k & 0x02);\r\n value[bit++] = !!(k & 0x04);\r\n value[bit++] = !!(k & 0x08);\r\n value[bit++] = !!(k & 0x10);\r\n value[bit++] = !!(k & 0x20);\r\n value[bit++] = !!(k & 0x40);\r\n value[bit++] = !!(k & 0x80);\r\n }\r\n\r\n if(bit < bits) {\r\n var m = 0;\r\n k = this.readByte(offset++);\r\n while(bit < bits) value[bit++] = !!((k >> (m++)) & 1);\r\n }\r\n\r\n if (relative) {\r\n this.offset = offset;\r\n }\r\n return value;\r\n }\r\n /**\r\n * Reads the specified number of bytes.\r\n * @param {number} length Number of bytes to read\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readBytes = function(length, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + length > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+length+\") <= \"+this.buffer.byteLength);\n }\r\n var slice = this.slice(offset, offset + length);\r\n if (relative) this.offset += length;\n return slice;\r\n };\r\n\r\n /**\r\n * Writes a payload of bytes. This is an alias of {@link ByteBuffer#append}.\r\n * @function\r\n * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to write. If `source` is a ByteBuffer, its offsets\r\n * will be modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeBytes = ByteBufferPrototype.append;\r\n\r\n // types/ints/int8\r\n\r\n /**\r\n * Writes an 8bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt8 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 1;\n var capacity0 = this.buffer.byteLength;\n if (offset > capacity0)\n this.resize((capacity0 *= 2) > offset ? capacity0 : offset);\n offset -= 1;\n this.view[offset] = value;\r\n if (relative) this.offset += 1;\n return this;\r\n };\r\n\r\n /**\r\n * Writes an 8bit signed integer. This is an alias of {@link ByteBuffer#writeInt8}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeByte = ByteBufferPrototype.writeInt8;\r\n\r\n /**\r\n * Reads an 8bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt8 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var value = this.view[offset];\r\n if ((value & 0x80) === 0x80) value = -(0xFF - value + 1); // Cast to signed\r\n if (relative) this.offset += 1;\n return value;\r\n };\r\n\r\n /**\r\n * Reads an 8bit signed integer. This is an alias of {@link ByteBuffer#readInt8}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readByte = ByteBufferPrototype.readInt8;\r\n\r\n /**\r\n * Writes an 8bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint8 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 1;\n var capacity1 = this.buffer.byteLength;\n if (offset > capacity1)\n this.resize((capacity1 *= 2) > offset ? capacity1 : offset);\n offset -= 1;\n this.view[offset] = value;\r\n if (relative) this.offset += 1;\n return this;\r\n };\r\n\r\n /**\r\n * Writes an 8bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint8}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt8 = ByteBufferPrototype.writeUint8;\r\n\r\n /**\r\n * Reads an 8bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint8 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var value = this.view[offset];\r\n if (relative) this.offset += 1;\n return value;\r\n };\r\n\r\n /**\r\n * Reads an 8bit unsigned integer. This is an alias of {@link ByteBuffer#readUint8}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt8 = ByteBufferPrototype.readUint8;\r\n\r\n // types/ints/int16\r\n\r\n /**\r\n * Writes a 16bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt16 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 2;\n var capacity2 = this.buffer.byteLength;\n if (offset > capacity2)\n this.resize((capacity2 *= 2) > offset ? capacity2 : offset);\n offset -= 2;\n if (this.littleEndian) {\r\n this.view[offset+1] = (value & 0xFF00) >>> 8;\r\n this.view[offset ] = value & 0x00FF;\r\n } else {\r\n this.view[offset] = (value & 0xFF00) >>> 8;\r\n this.view[offset+1] = value & 0x00FF;\r\n }\r\n if (relative) this.offset += 2;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 16bit signed integer. This is an alias of {@link ByteBuffer#writeInt16}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeShort = ByteBufferPrototype.writeInt16;\r\n\r\n /**\r\n * Reads a 16bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt16 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 2 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+2+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\r\n value = this.view[offset ];\r\n value |= this.view[offset+1] << 8;\r\n } else {\r\n value = this.view[offset ] << 8;\r\n value |= this.view[offset+1];\r\n }\r\n if ((value & 0x8000) === 0x8000) value = -(0xFFFF - value + 1); // Cast to signed\r\n if (relative) this.offset += 2;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 16bit signed integer. This is an alias of {@link ByteBuffer#readInt16}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readShort = ByteBufferPrototype.readInt16;\r\n\r\n /**\r\n * Writes a 16bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint16 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 2;\n var capacity3 = this.buffer.byteLength;\n if (offset > capacity3)\n this.resize((capacity3 *= 2) > offset ? capacity3 : offset);\n offset -= 2;\n if (this.littleEndian) {\r\n this.view[offset+1] = (value & 0xFF00) >>> 8;\r\n this.view[offset ] = value & 0x00FF;\r\n } else {\r\n this.view[offset] = (value & 0xFF00) >>> 8;\r\n this.view[offset+1] = value & 0x00FF;\r\n }\r\n if (relative) this.offset += 2;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 16bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint16}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt16 = ByteBufferPrototype.writeUint16;\r\n\r\n /**\r\n * Reads a 16bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint16 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 2 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+2+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\r\n value = this.view[offset ];\r\n value |= this.view[offset+1] << 8;\r\n } else {\r\n value = this.view[offset ] << 8;\r\n value |= this.view[offset+1];\r\n }\r\n if (relative) this.offset += 2;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 16bit unsigned integer. This is an alias of {@link ByteBuffer#readUint16}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt16 = ByteBufferPrototype.readUint16;\r\n\r\n // types/ints/int32\r\n\r\n /**\r\n * Writes a 32bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity4 = this.buffer.byteLength;\n if (offset > capacity4)\n this.resize((capacity4 *= 2) > offset ? capacity4 : offset);\n offset -= 4;\n if (this.littleEndian) {\n this.view[offset+3] = (value >>> 24) & 0xFF;\n this.view[offset+2] = (value >>> 16) & 0xFF;\n this.view[offset+1] = (value >>> 8) & 0xFF;\n this.view[offset ] = value & 0xFF;\n } else {\n this.view[offset ] = (value >>> 24) & 0xFF;\n this.view[offset+1] = (value >>> 16) & 0xFF;\n this.view[offset+2] = (value >>> 8) & 0xFF;\n this.view[offset+3] = value & 0xFF;\n }\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit signed integer. This is an alias of {@link ByteBuffer#writeInt32}.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt = ByteBufferPrototype.writeInt32;\r\n\r\n /**\r\n * Reads a 32bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\n value = this.view[offset+2] << 16;\n value |= this.view[offset+1] << 8;\n value |= this.view[offset ];\n value += this.view[offset+3] << 24 >>> 0;\n } else {\n value = this.view[offset+1] << 16;\n value |= this.view[offset+2] << 8;\n value |= this.view[offset+3];\n value += this.view[offset ] << 24 >>> 0;\n }\n value |= 0; // Cast to signed\r\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit signed integer. This is an alias of {@link ByteBuffer#readInt32}.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt = ByteBufferPrototype.readInt32;\r\n\r\n /**\r\n * Writes a 32bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity5 = this.buffer.byteLength;\n if (offset > capacity5)\n this.resize((capacity5 *= 2) > offset ? capacity5 : offset);\n offset -= 4;\n if (this.littleEndian) {\n this.view[offset+3] = (value >>> 24) & 0xFF;\n this.view[offset+2] = (value >>> 16) & 0xFF;\n this.view[offset+1] = (value >>> 8) & 0xFF;\n this.view[offset ] = value & 0xFF;\n } else {\n this.view[offset ] = (value >>> 24) & 0xFF;\n this.view[offset+1] = (value >>> 16) & 0xFF;\n this.view[offset+2] = (value >>> 8) & 0xFF;\n this.view[offset+3] = value & 0xFF;\n }\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint32}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt32 = ByteBufferPrototype.writeUint32;\r\n\r\n /**\r\n * Reads a 32bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\n value = this.view[offset+2] << 16;\n value |= this.view[offset+1] << 8;\n value |= this.view[offset ];\n value += this.view[offset+3] << 24 >>> 0;\n } else {\n value = this.view[offset+1] << 16;\n value |= this.view[offset+2] << 8;\n value |= this.view[offset+3];\n value += this.view[offset ] << 24 >>> 0;\n }\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit unsigned integer. This is an alias of {@link ByteBuffer#readUint32}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt32 = ByteBufferPrototype.readUint32;\r\n\r\n // types/ints/int64\r\n\r\n if (Long) {\r\n\r\n /**\r\n * Writes a 64bit signed integer.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n offset += 8;\n var capacity6 = this.buffer.byteLength;\n if (offset > capacity6)\n this.resize((capacity6 *= 2) > offset ? capacity6 : offset);\n offset -= 8;\n var lo = value.low,\r\n hi = value.high;\r\n if (this.littleEndian) {\r\n this.view[offset+3] = (lo >>> 24) & 0xFF;\n this.view[offset+2] = (lo >>> 16) & 0xFF;\n this.view[offset+1] = (lo >>> 8) & 0xFF;\n this.view[offset ] = lo & 0xFF;\n offset += 4;\r\n this.view[offset+3] = (hi >>> 24) & 0xFF;\n this.view[offset+2] = (hi >>> 16) & 0xFF;\n this.view[offset+1] = (hi >>> 8) & 0xFF;\n this.view[offset ] = hi & 0xFF;\n } else {\r\n this.view[offset ] = (hi >>> 24) & 0xFF;\n this.view[offset+1] = (hi >>> 16) & 0xFF;\n this.view[offset+2] = (hi >>> 8) & 0xFF;\n this.view[offset+3] = hi & 0xFF;\n offset += 4;\r\n this.view[offset ] = (lo >>> 24) & 0xFF;\n this.view[offset+1] = (lo >>> 16) & 0xFF;\n this.view[offset+2] = (lo >>> 8) & 0xFF;\n this.view[offset+3] = lo & 0xFF;\n }\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit signed integer. This is an alias of {@link ByteBuffer#writeInt64}.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeLong = ByteBufferPrototype.writeInt64;\r\n\r\n /**\r\n * Reads a 64bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var lo = 0,\r\n hi = 0;\r\n if (this.littleEndian) {\r\n lo = this.view[offset+2] << 16;\n lo |= this.view[offset+1] << 8;\n lo |= this.view[offset ];\n lo += this.view[offset+3] << 24 >>> 0;\n offset += 4;\r\n hi = this.view[offset+2] << 16;\n hi |= this.view[offset+1] << 8;\n hi |= this.view[offset ];\n hi += this.view[offset+3] << 24 >>> 0;\n } else {\r\n hi = this.view[offset+1] << 16;\n hi |= this.view[offset+2] << 8;\n hi |= this.view[offset+3];\n hi += this.view[offset ] << 24 >>> 0;\n offset += 4;\r\n lo = this.view[offset+1] << 16;\n lo |= this.view[offset+2] << 8;\n lo |= this.view[offset+3];\n lo += this.view[offset ] << 24 >>> 0;\n }\r\n var value = new Long(lo, hi, false);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit signed integer. This is an alias of {@link ByteBuffer#readInt64}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readLong = ByteBufferPrototype.readInt64;\r\n\r\n /**\r\n * Writes a 64bit unsigned integer.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n offset += 8;\n var capacity7 = this.buffer.byteLength;\n if (offset > capacity7)\n this.resize((capacity7 *= 2) > offset ? capacity7 : offset);\n offset -= 8;\n var lo = value.low,\r\n hi = value.high;\r\n if (this.littleEndian) {\r\n this.view[offset+3] = (lo >>> 24) & 0xFF;\n this.view[offset+2] = (lo >>> 16) & 0xFF;\n this.view[offset+1] = (lo >>> 8) & 0xFF;\n this.view[offset ] = lo & 0xFF;\n offset += 4;\r\n this.view[offset+3] = (hi >>> 24) & 0xFF;\n this.view[offset+2] = (hi >>> 16) & 0xFF;\n this.view[offset+1] = (hi >>> 8) & 0xFF;\n this.view[offset ] = hi & 0xFF;\n } else {\r\n this.view[offset ] = (hi >>> 24) & 0xFF;\n this.view[offset+1] = (hi >>> 16) & 0xFF;\n this.view[offset+2] = (hi >>> 8) & 0xFF;\n this.view[offset+3] = hi & 0xFF;\n offset += 4;\r\n this.view[offset ] = (lo >>> 24) & 0xFF;\n this.view[offset+1] = (lo >>> 16) & 0xFF;\n this.view[offset+2] = (lo >>> 8) & 0xFF;\n this.view[offset+3] = lo & 0xFF;\n }\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint64}.\r\n * @function\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt64 = ByteBufferPrototype.writeUint64;\r\n\r\n /**\r\n * Reads a 64bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var lo = 0,\r\n hi = 0;\r\n if (this.littleEndian) {\r\n lo = this.view[offset+2] << 16;\n lo |= this.view[offset+1] << 8;\n lo |= this.view[offset ];\n lo += this.view[offset+3] << 24 >>> 0;\n offset += 4;\r\n hi = this.view[offset+2] << 16;\n hi |= this.view[offset+1] << 8;\n hi |= this.view[offset ];\n hi += this.view[offset+3] << 24 >>> 0;\n } else {\r\n hi = this.view[offset+1] << 16;\n hi |= this.view[offset+2] << 8;\n hi |= this.view[offset+3];\n hi += this.view[offset ] << 24 >>> 0;\n offset += 4;\r\n lo = this.view[offset+1] << 16;\n lo |= this.view[offset+2] << 8;\n lo |= this.view[offset+3];\n lo += this.view[offset ] << 24 >>> 0;\n }\r\n var value = new Long(lo, hi, true);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit unsigned integer. This is an alias of {@link ByteBuffer#readUint64}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt64 = ByteBufferPrototype.readUint64;\r\n\r\n } // Long\r\n\r\n\r\n // types/floats/float32\r\n\r\n /*\r\n ieee754 - https://github.com/feross/ieee754\r\n\r\n The MIT License (MIT)\r\n\r\n Copyright (c) Feross Aboukhadijeh\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining a copy\r\n of this software and associated documentation files (the \"Software\"), to deal\r\n in the Software without restriction, including without limitation the rights\r\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n copies of the Software, and to permit persons to whom the Software is\r\n furnished to do so, subject to the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be included in\r\n all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n THE SOFTWARE.\r\n */\r\n\r\n /**\r\n * Reads an IEEE754 float from a byte array.\r\n * @param {!Array} buffer\r\n * @param {number} offset\r\n * @param {boolean} isLE\r\n * @param {number} mLen\r\n * @param {number} nBytes\r\n * @returns {number}\r\n * @inner\r\n */\r\n function ieee754_read(buffer, offset, isLE, mLen, nBytes) {\r\n var e, m,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n nBits = -7,\r\n i = isLE ? (nBytes - 1) : 0,\r\n d = isLE ? -1 : 1,\r\n s = buffer[offset + i];\r\n\r\n i += d;\r\n\r\n e = s & ((1 << (-nBits)) - 1);\r\n s >>= (-nBits);\r\n nBits += eLen;\r\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\r\n\r\n m = e & ((1 << (-nBits)) - 1);\r\n e >>= (-nBits);\r\n nBits += mLen;\r\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\r\n\r\n if (e === 0) {\r\n e = 1 - eBias;\r\n } else if (e === eMax) {\r\n return m ? NaN : ((s ? -1 : 1) * Infinity);\r\n } else {\r\n m = m + Math.pow(2, mLen);\r\n e = e - eBias;\r\n }\r\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\r\n }\r\n\r\n /**\r\n * Writes an IEEE754 float to a byte array.\r\n * @param {!Array} buffer\r\n * @param {number} value\r\n * @param {number} offset\r\n * @param {boolean} isLE\r\n * @param {number} mLen\r\n * @param {number} nBytes\r\n * @inner\r\n */\r\n function ieee754_write(buffer, value, offset, isLE, mLen, nBytes) {\r\n var e, m, c,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0),\r\n i = isLE ? 0 : (nBytes - 1),\r\n d = isLE ? 1 : -1,\r\n s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\r\n\r\n value = Math.abs(value);\r\n\r\n if (isNaN(value) || value === Infinity) {\r\n m = isNaN(value) ? 1 : 0;\r\n e = eMax;\r\n } else {\r\n e = Math.floor(Math.log(value) / Math.LN2);\r\n if (value * (c = Math.pow(2, -e)) < 1) {\r\n e--;\r\n c *= 2;\r\n }\r\n if (e + eBias >= 1) {\r\n value += rt / c;\r\n } else {\r\n value += rt * Math.pow(2, 1 - eBias);\r\n }\r\n if (value * c >= 2) {\r\n e++;\r\n c /= 2;\r\n }\r\n\r\n if (e + eBias >= eMax) {\r\n m = 0;\r\n e = eMax;\r\n } else if (e + eBias >= 1) {\r\n m = (value * c - 1) * Math.pow(2, mLen);\r\n e = e + eBias;\r\n } else {\r\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\r\n e = 0;\r\n }\r\n }\r\n\r\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\r\n\r\n e = (e << mLen) | m;\r\n eLen += mLen;\r\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\r\n\r\n buffer[offset + i - d] |= s * 128;\r\n }\r\n\r\n /**\r\n * Writes a 32bit float.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number')\r\n throw TypeError(\"Illegal value: \"+value+\" (not a number)\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity8 = this.buffer.byteLength;\n if (offset > capacity8)\n this.resize((capacity8 *= 2) > offset ? capacity8 : offset);\n offset -= 4;\n ieee754_write(this.view, value, offset, this.littleEndian, 23, 4);\r\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit float. This is an alias of {@link ByteBuffer#writeFloat32}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat = ByteBufferPrototype.writeFloat32;\r\n\r\n /**\r\n * Reads a 32bit float.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = ieee754_read(this.view, offset, this.littleEndian, 23, 4);\r\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit float. This is an alias of {@link ByteBuffer#readFloat32}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat = ByteBufferPrototype.readFloat32;\r\n\r\n // types/floats/float64\r\n\r\n /**\r\n * Writes a 64bit float.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number')\r\n throw TypeError(\"Illegal value: \"+value+\" (not a number)\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 8;\n var capacity9 = this.buffer.byteLength;\n if (offset > capacity9)\n this.resize((capacity9 *= 2) > offset ? capacity9 : offset);\n offset -= 8;\n ieee754_write(this.view, value, offset, this.littleEndian, 52, 8);\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit float. This is an alias of {@link ByteBuffer#writeFloat64}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeDouble = ByteBufferPrototype.writeFloat64;\r\n\r\n /**\r\n * Reads a 64bit float.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var value = ieee754_read(this.view, offset, this.littleEndian, 52, 8);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit float. This is an alias of {@link ByteBuffer#readFloat64}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readDouble = ByteBufferPrototype.readFloat64;\r\n\r\n\r\n // types/varints/varint32\r\n\r\n /**\r\n * Maximum number of bytes required to store a 32bit base 128 variable-length integer.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.MAX_VARINT32_BYTES = 5;\r\n\r\n /**\r\n * Calculates the actual number of bytes required to store a 32bit base 128 variable-length integer.\r\n * @param {number} value Value to encode\r\n * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT32_BYTES}\r\n * @expose\r\n */\r\n ByteBuffer.calculateVarint32 = function(value) {\r\n // ref: src/google/protobuf/io/coded_stream.cc\r\n value = value >>> 0;\r\n if (value < 1 << 7 ) return 1;\r\n else if (value < 1 << 14) return 2;\r\n else if (value < 1 << 21) return 3;\r\n else if (value < 1 << 28) return 4;\r\n else return 5;\r\n };\r\n\r\n /**\r\n * Zigzag encodes a signed 32bit integer so that it can be effectively used with varint encoding.\r\n * @param {number} n Signed 32bit integer\r\n * @returns {number} Unsigned zigzag encoded 32bit integer\r\n * @expose\r\n */\r\n ByteBuffer.zigZagEncode32 = function(n) {\r\n return (((n |= 0) << 1) ^ (n >> 31)) >>> 0; // ref: src/google/protobuf/wire_format_lite.h\r\n };\r\n\r\n /**\r\n * Decodes a zigzag encoded signed 32bit integer.\r\n * @param {number} n Unsigned zigzag encoded 32bit integer\r\n * @returns {number} Signed 32bit integer\r\n * @expose\r\n */\r\n ByteBuffer.zigZagDecode32 = function(n) {\r\n return ((n >>> 1) ^ -(n & 1)) | 0; // // ref: src/google/protobuf/wire_format_lite.h\r\n };\r\n\r\n /**\r\n * Writes a 32bit base 128 variable-length integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var size = ByteBuffer.calculateVarint32(value),\r\n b;\r\n offset += size;\n var capacity10 = this.buffer.byteLength;\n if (offset > capacity10)\n this.resize((capacity10 *= 2) > offset ? capacity10 : offset);\n offset -= size;\n value >>>= 0;\r\n while (value >= 0x80) {\r\n b = (value & 0x7f) | 0x80;\r\n this.view[offset++] = b;\r\n value >>>= 7;\r\n }\r\n this.view[offset++] = value;\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return size;\r\n };\r\n\r\n /**\r\n * Writes a zig-zag encoded (signed) 32bit base 128 variable-length integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint32ZigZag = function(value, offset) {\r\n return this.writeVarint32(ByteBuffer.zigZagEncode32(value), offset);\r\n };\r\n\r\n /**\r\n * Reads a 32bit base 128 variable-length integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read\r\n * and the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint. Has a property `truncated = true` if there is not enough data available\r\n * to fully decode the varint.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var c = 0,\r\n value = 0 >>> 0,\r\n b;\r\n do {\r\n if (!this.noAssert && offset > this.limit) {\r\n var err = Error(\"Truncated\");\r\n err['truncated'] = true;\r\n throw err;\r\n }\r\n b = this.view[offset++];\r\n if (c < 5)\r\n value |= (b & 0x7f) << (7*c);\r\n ++c;\r\n } while ((b & 0x80) !== 0);\r\n value |= 0;\r\n if (relative) {\r\n this.offset = offset;\r\n return value;\r\n }\r\n return {\r\n \"value\": value,\r\n \"length\": c\r\n };\r\n };\r\n\r\n /**\r\n * Reads a zig-zag encoded (signed) 32bit base 128 variable-length integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read\r\n * and the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint32ZigZag = function(offset) {\r\n var val = this.readVarint32(offset);\r\n if (typeof val === 'object')\r\n val[\"value\"] = ByteBuffer.zigZagDecode32(val[\"value\"]);\r\n else\r\n val = ByteBuffer.zigZagDecode32(val);\r\n return val;\r\n };\r\n\r\n // types/varints/varint64\r\n\r\n if (Long) {\r\n\r\n /**\r\n * Maximum number of bytes required to store a 64bit base 128 variable-length integer.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.MAX_VARINT64_BYTES = 10;\r\n\r\n /**\r\n * Calculates the actual number of bytes required to store a 64bit base 128 variable-length integer.\r\n * @param {number|!Long} value Value to encode\r\n * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT64_BYTES}\r\n * @expose\r\n */\r\n ByteBuffer.calculateVarint64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n // ref: src/google/protobuf/io/coded_stream.cc\r\n var part0 = value.toInt() >>> 0,\r\n part1 = value.shiftRightUnsigned(28).toInt() >>> 0,\r\n part2 = value.shiftRightUnsigned(56).toInt() >>> 0;\r\n if (part2 == 0) {\r\n if (part1 == 0) {\r\n if (part0 < 1 << 14)\r\n return part0 < 1 << 7 ? 1 : 2;\r\n else\r\n return part0 < 1 << 21 ? 3 : 4;\r\n } else {\r\n if (part1 < 1 << 14)\r\n return part1 < 1 << 7 ? 5 : 6;\r\n else\r\n return part1 < 1 << 21 ? 7 : 8;\r\n }\r\n } else\r\n return part2 < 1 << 7 ? 9 : 10;\r\n };\r\n\r\n /**\r\n * Zigzag encodes a signed 64bit integer so that it can be effectively used with varint encoding.\r\n * @param {number|!Long} value Signed long\r\n * @returns {!Long} Unsigned zigzag encoded long\r\n * @expose\r\n */\r\n ByteBuffer.zigZagEncode64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n // ref: src/google/protobuf/wire_format_lite.h\r\n return value.shiftLeft(1).xor(value.shiftRight(63)).toUnsigned();\r\n };\r\n\r\n /**\r\n * Decodes a zigzag encoded signed 64bit integer.\r\n * @param {!Long|number} value Unsigned zigzag encoded long or JavaScript number\r\n * @returns {!Long} Signed long\r\n * @expose\r\n */\r\n ByteBuffer.zigZagDecode64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n // ref: src/google/protobuf/wire_format_lite.h\r\n return value.shiftRightUnsigned(1).xor(value.and(Long.ONE).toSigned().negate()).toSigned();\r\n };\r\n\r\n /**\r\n * Writes a 64bit base 128 variable-length integer.\r\n * @param {number|Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n var size = ByteBuffer.calculateVarint64(value),\r\n part0 = value.toInt() >>> 0,\r\n part1 = value.shiftRightUnsigned(28).toInt() >>> 0,\r\n part2 = value.shiftRightUnsigned(56).toInt() >>> 0;\r\n offset += size;\n var capacity11 = this.buffer.byteLength;\n if (offset > capacity11)\n this.resize((capacity11 *= 2) > offset ? capacity11 : offset);\n offset -= size;\n switch (size) {\r\n case 10: this.view[offset+9] = (part2 >>> 7) & 0x01;\r\n case 9 : this.view[offset+8] = size !== 9 ? (part2 ) | 0x80 : (part2 ) & 0x7F;\r\n case 8 : this.view[offset+7] = size !== 8 ? (part1 >>> 21) | 0x80 : (part1 >>> 21) & 0x7F;\r\n case 7 : this.view[offset+6] = size !== 7 ? (part1 >>> 14) | 0x80 : (part1 >>> 14) & 0x7F;\r\n case 6 : this.view[offset+5] = size !== 6 ? (part1 >>> 7) | 0x80 : (part1 >>> 7) & 0x7F;\r\n case 5 : this.view[offset+4] = size !== 5 ? (part1 ) | 0x80 : (part1 ) & 0x7F;\r\n case 4 : this.view[offset+3] = size !== 4 ? (part0 >>> 21) | 0x80 : (part0 >>> 21) & 0x7F;\r\n case 3 : this.view[offset+2] = size !== 3 ? (part0 >>> 14) | 0x80 : (part0 >>> 14) & 0x7F;\r\n case 2 : this.view[offset+1] = size !== 2 ? (part0 >>> 7) | 0x80 : (part0 >>> 7) & 0x7F;\r\n case 1 : this.view[offset ] = size !== 1 ? (part0 ) | 0x80 : (part0 ) & 0x7F;\r\n }\r\n if (relative) {\r\n this.offset += size;\r\n return this;\r\n } else {\r\n return size;\r\n }\r\n };\r\n\r\n /**\r\n * Writes a zig-zag encoded 64bit base 128 variable-length integer.\r\n * @param {number|Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint64ZigZag = function(value, offset) {\r\n return this.writeVarint64(ByteBuffer.zigZagEncode64(value), offset);\r\n };\r\n\r\n /**\r\n * Reads a 64bit base 128 variable-length integer. Requires Long.js.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!Long|!{value: Long, length: number}} The value read if offset is omitted, else the value read and\r\n * the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n // ref: src/google/protobuf/io/coded_stream.cc\r\n var start = offset,\r\n part0 = 0,\r\n part1 = 0,\r\n part2 = 0,\r\n b = 0;\r\n b = this.view[offset++]; part0 = (b & 0x7F) ; if ( b & 0x80 ) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part2 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part2 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n throw Error(\"Buffer overrun\"); }}}}}}}}}}\r\n var value = Long.fromBits(part0 | (part1 << 28), (part1 >>> 4) | (part2) << 24, false);\r\n if (relative) {\r\n this.offset = offset;\r\n return value;\r\n } else {\r\n return {\r\n 'value': value,\r\n 'length': offset-start\r\n };\r\n }\r\n };\r\n\r\n /**\r\n * Reads a zig-zag encoded 64bit base 128 variable-length integer. Requires Long.js.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!Long|!{value: Long, length: number}} The value read if offset is omitted, else the value read and\r\n * the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint64ZigZag = function(offset) {\r\n var val = this.readVarint64(offset);\r\n if (val && val['value'] instanceof Long)\r\n val[\"value\"] = ByteBuffer.zigZagDecode64(val[\"value\"]);\r\n else\r\n val = ByteBuffer.zigZagDecode64(val);\r\n return val;\r\n };\r\n\r\n } // Long\r\n\r\n\r\n // types/strings/cstring\r\n\r\n /**\r\n * Writes a NULL-terminated UTF8 encoded string. For this to work the specified string must not contain any NULL\r\n * characters itself.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * contained in `str` + 1 if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeCString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n var i,\r\n k = str.length;\r\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n for (i=0; i>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n // UTF8 strings do not contain zero bytes in between except for the zero character, so:\r\n k = utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n offset += k+1;\n var capacity12 = this.buffer.byteLength;\n if (offset > capacity12)\n this.resize((capacity12 *= 2) > offset ? capacity12 : offset);\n offset -= k+1;\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n this.view[offset++] = 0;\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return k;\r\n };\r\n\r\n /**\r\n * Reads a NULL-terminated UTF8 encoded string. For this to work the string read must not contain any NULL characters\r\n * itself.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readCString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n temp;\r\n // UTF8 strings do not contain zero bytes in between except for the zero character itself, so:\r\n var sd, b = -1;\r\n utfx.decodeUTF8toUTF16(function() {\r\n if (b === 0) return null;\r\n if (offset >= this.limit)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" < \"+this.limit);\r\n b = this.view[offset++];\r\n return b === 0 ? null : b;\r\n }.bind(this), sd = stringDestination(), true);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n \"string\": sd(),\r\n \"length\": offset - start\r\n };\r\n }\r\n };\r\n\r\n // types/strings/istring\r\n\r\n /**\r\n * Writes a length as uint32 prefixed UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n * @see ByteBuffer#writeVarint32\r\n */\r\n ByteBufferPrototype.writeIString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n k;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1];\r\n offset += 4+k;\n var capacity13 = this.buffer.byteLength;\n if (offset > capacity13)\n this.resize((capacity13 *= 2) > offset ? capacity13 : offset);\n offset -= 4+k;\n if (this.littleEndian) {\n this.view[offset+3] = (k >>> 24) & 0xFF;\n this.view[offset+2] = (k >>> 16) & 0xFF;\n this.view[offset+1] = (k >>> 8) & 0xFF;\n this.view[offset ] = k & 0xFF;\n } else {\n this.view[offset ] = (k >>> 24) & 0xFF;\n this.view[offset+1] = (k >>> 16) & 0xFF;\n this.view[offset+2] = (k >>> 8) & 0xFF;\n this.view[offset+3] = k & 0xFF;\n }\n offset += 4;\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (offset !== start + 4 + k)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+(offset+4+k));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Reads a length as uint32 prefixed UTF8 encoded string.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n * @see ByteBuffer#readVarint32\r\n */\r\n ByteBufferPrototype.readIString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset;\r\n var len = this.readUint32(offset);\r\n var str = this.readUTF8String(len, ByteBuffer.METRICS_BYTES, offset += 4);\r\n offset += str['length'];\r\n if (relative) {\r\n this.offset = offset;\r\n return str['string'];\r\n } else {\r\n return {\r\n 'string': str['string'],\r\n 'length': offset - start\r\n };\r\n }\r\n };\r\n\r\n // types/strings/utf8string\r\n\r\n /**\r\n * Metrics representing number of UTF8 characters. Evaluates to `c`.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.METRICS_CHARS = 'c';\r\n\r\n /**\r\n * Metrics representing number of bytes. Evaluates to `b`.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.METRICS_BYTES = 'b';\r\n\r\n /**\r\n * Writes an UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUTF8String = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var k;\r\n var start = offset;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n offset += k;\n var capacity14 = this.buffer.byteLength;\n if (offset > capacity14)\n this.resize((capacity14 *= 2) > offset ? capacity14 : offset);\n offset -= k;\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Writes an UTF8 encoded string. This is an alias of {@link ByteBuffer#writeUTF8String}.\r\n * @function\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeString = ByteBufferPrototype.writeUTF8String;\r\n\r\n /**\r\n * Calculates the number of UTF8 characters of a string. JavaScript itself uses UTF-16, so that a string's\r\n * `length` property does not reflect its actual UTF8 size if it contains code points larger than 0xFFFF.\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 characters\r\n * @expose\r\n */\r\n ByteBuffer.calculateUTF8Chars = function(str) {\r\n return utfx.calculateUTF16asUTF8(stringSource(str))[0];\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes of a string.\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 bytes\r\n * @expose\r\n */\r\n ByteBuffer.calculateUTF8Bytes = function(str) {\r\n return utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes of a string. This is an alias of {@link ByteBuffer.calculateUTF8Bytes}.\r\n * @function\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 bytes\r\n * @expose\r\n */\r\n ByteBuffer.calculateString = ByteBuffer.calculateUTF8Bytes;\r\n\r\n /**\r\n * Reads an UTF8 encoded string.\r\n * @param {number} length Number of characters or bytes to read.\r\n * @param {string=} metrics Metrics specifying what `length` is meant to count. Defaults to\r\n * {@link ByteBuffer.METRICS_CHARS}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUTF8String = function(length, metrics, offset) {\r\n if (typeof metrics === 'number') {\r\n offset = metrics;\r\n metrics = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (typeof metrics === 'undefined') metrics = ByteBuffer.METRICS_CHARS;\r\n if (!this.noAssert) {\r\n if (typeof length !== 'number' || length % 1 !== 0)\n throw TypeError(\"Illegal length: \"+length+\" (not an integer)\");\n length |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var i = 0,\r\n start = offset,\r\n sd;\r\n if (metrics === ByteBuffer.METRICS_CHARS) { // The same for node and the browser\r\n sd = stringDestination();\r\n utfx.decodeUTF8(function() {\r\n return i < length && offset < this.limit ? this.view[offset++] : null;\r\n }.bind(this), function(cp) {\r\n ++i; utfx.UTF8toUTF16(cp, sd);\r\n });\r\n if (i !== length)\r\n throw RangeError(\"Illegal range: Truncated data, \"+i+\" == \"+length);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n \"string\": sd(),\r\n \"length\": offset - start\r\n };\r\n }\r\n } else if (metrics === ByteBuffer.METRICS_BYTES) {\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + length > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+length+\") <= \"+this.buffer.byteLength);\n }\r\n var k = offset + length;\r\n utfx.decodeUTF8toUTF16(function() {\r\n return offset < k ? this.view[offset++] : null;\r\n }.bind(this), sd = stringDestination(), this.noAssert);\r\n if (offset !== k)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+k);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n 'string': sd(),\r\n 'length': offset - start\r\n };\r\n }\r\n } else\r\n throw TypeError(\"Unsupported metrics: \"+metrics);\r\n };\r\n\r\n /**\r\n * Reads an UTF8 encoded string. This is an alias of {@link ByteBuffer#readUTF8String}.\r\n * @function\r\n * @param {number} length Number of characters or bytes to read\r\n * @param {number=} metrics Metrics specifying what `n` is meant to count. Defaults to\r\n * {@link ByteBuffer.METRICS_CHARS}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readString = ByteBufferPrototype.readUTF8String;\r\n\r\n // types/strings/vstring\r\n\r\n /**\r\n * Writes a length as varint32 prefixed UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n * @see ByteBuffer#writeVarint32\r\n */\r\n ByteBufferPrototype.writeVString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n k, l;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1];\r\n l = ByteBuffer.calculateVarint32(k);\r\n offset += l+k;\n var capacity15 = this.buffer.byteLength;\n if (offset > capacity15)\n this.resize((capacity15 *= 2) > offset ? capacity15 : offset);\n offset -= l+k;\n offset += this.writeVarint32(k, offset);\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (offset !== start+k+l)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+(offset+k+l));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Reads a length as varint32 prefixed UTF8 encoded string.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n * @see ByteBuffer#readVarint32\r\n */\r\n ByteBufferPrototype.readVString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset;\r\n var len = this.readVarint32(offset);\r\n var str = this.readUTF8String(len['value'], ByteBuffer.METRICS_BYTES, offset += len['length']);\r\n offset += str['length'];\r\n if (relative) {\r\n this.offset = offset;\r\n return str['string'];\r\n } else {\r\n return {\r\n 'string': str['string'],\r\n 'length': offset - start\r\n };\r\n }\r\n };\r\n\r\n\r\n /**\r\n * Appends some data to this ByteBuffer. This will overwrite any contents behind the specified offset up to the appended\r\n * data's length.\r\n * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to append. If `source` is a ByteBuffer, its offsets\r\n * will be modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to append at. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example A relative `<01 02>03.append(<04 05>)` will result in `<01 02 04 05>, 04 05|`\r\n * @example An absolute `<01 02>03.append(04 05>, 1)` will result in `<01 04>05, 04 05|`\r\n */\r\n ByteBufferPrototype.append = function(source, encoding, offset) {\r\n if (typeof encoding === 'number' || typeof encoding !== 'string') {\r\n offset = encoding;\r\n encoding = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (!(source instanceof ByteBuffer))\r\n source = ByteBuffer.wrap(source, encoding);\r\n var length = source.limit - source.offset;\r\n if (length <= 0) return this; // Nothing to append\r\n offset += length;\n var capacity16 = this.buffer.byteLength;\n if (offset > capacity16)\n this.resize((capacity16 *= 2) > offset ? capacity16 : offset);\n offset -= length;\n this.view.set(source.view.subarray(source.offset, source.limit), offset);\r\n source.offset += length;\r\n if (relative) this.offset += length;\n return this;\r\n };\r\n\r\n /**\r\n * Appends this ByteBuffer's contents to another ByteBuffer. This will overwrite any contents at and after the\r\n specified offset up to the length of this ByteBuffer's data.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} offset Offset to append to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @see ByteBuffer#append\r\n */\r\n ByteBufferPrototype.appendTo = function(target, offset) {\r\n target.append(this, offset);\r\n return this;\r\n };\r\n\r\n /**\r\n * Enables or disables assertions of argument types and offsets. Assertions are enabled by default but you can opt to\r\n * disable them if your code already makes sure that everything is valid.\r\n * @param {boolean} assert `true` to enable assertions, otherwise `false`\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.assert = function(assert) {\r\n this.noAssert = !assert;\r\n return this;\r\n };\r\n\r\n /**\r\n * Gets the capacity of this ByteBuffer's backing buffer.\r\n * @returns {number} Capacity of the backing buffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.capacity = function() {\r\n return this.buffer.byteLength;\r\n };\r\n /**\r\n * Clears this ByteBuffer's offsets by setting {@link ByteBuffer#offset} to `0` and {@link ByteBuffer#limit} to the\r\n * backing buffer's capacity. Discards {@link ByteBuffer#markedOffset}.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.clear = function() {\r\n this.offset = 0;\r\n this.limit = this.buffer.byteLength;\r\n this.markedOffset = -1;\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates a cloned instance of this ByteBuffer, preset with this ByteBuffer's values for {@link ByteBuffer#offset},\r\n * {@link ByteBuffer#markedOffset} and {@link ByteBuffer#limit}.\r\n * @param {boolean=} copy Whether to copy the backing buffer or to return another view on the same, defaults to `false`\r\n * @returns {!ByteBuffer} Cloned instance\r\n * @expose\r\n */\r\n ByteBufferPrototype.clone = function(copy) {\r\n var bb = new ByteBuffer(0, this.littleEndian, this.noAssert);\r\n if (copy) {\r\n bb.buffer = new ArrayBuffer(this.buffer.byteLength);\r\n bb.view = new Uint8Array(bb.buffer);\r\n } else {\r\n bb.buffer = this.buffer;\r\n bb.view = this.view;\r\n }\r\n bb.offset = this.offset;\r\n bb.markedOffset = this.markedOffset;\r\n bb.limit = this.limit;\r\n return bb;\r\n };\r\n\r\n /**\r\n * Compacts this ByteBuffer to be backed by a {@link ByteBuffer#buffer} of its contents' length. Contents are the bytes\r\n * between {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. Will set `offset = 0` and `limit = capacity` and\r\n * adapt {@link ByteBuffer#markedOffset} to the same relative position if set.\r\n * @param {number=} begin Offset to start at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.compact = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === 0 && end === this.buffer.byteLength)\r\n return this; // Already compacted\r\n var len = end - begin;\r\n if (len === 0) {\r\n this.buffer = EMPTY_BUFFER;\r\n this.view = null;\r\n if (this.markedOffset >= 0) this.markedOffset -= begin;\r\n this.offset = 0;\r\n this.limit = 0;\r\n return this;\r\n }\r\n var buffer = new ArrayBuffer(len);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view.subarray(begin, end));\r\n this.buffer = buffer;\r\n this.view = view;\r\n if (this.markedOffset >= 0) this.markedOffset -= begin;\r\n this.offset = 0;\r\n this.limit = len;\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates a copy of this ByteBuffer's contents. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}.\r\n * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} Copy\r\n * @expose\r\n */\r\n ByteBufferPrototype.copy = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === end)\r\n return new ByteBuffer(0, this.littleEndian, this.noAssert);\r\n var capacity = end - begin,\r\n bb = new ByteBuffer(capacity, this.littleEndian, this.noAssert);\r\n bb.offset = 0;\r\n bb.limit = capacity;\r\n if (bb.markedOffset >= 0) bb.markedOffset -= begin;\r\n this.copyTo(bb, 0, begin, end);\r\n return bb;\r\n };\r\n\r\n /**\r\n * Copies this ByteBuffer's contents to another ByteBuffer. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} targetOffset Offset to copy to. Will use and increase the target's {@link ByteBuffer#offset}\r\n * by the number of bytes copied if omitted.\r\n * @param {number=} sourceOffset Offset to start copying from. Will use and increase {@link ByteBuffer#offset} by the\r\n * number of bytes copied if omitted.\r\n * @param {number=} sourceLimit Offset to end copying from, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.copyTo = function(target, targetOffset, sourceOffset, sourceLimit) {\r\n var relative,\r\n targetRelative;\r\n if (!this.noAssert) {\r\n if (!ByteBuffer.isByteBuffer(target))\r\n throw TypeError(\"Illegal target: Not a ByteBuffer\");\r\n }\r\n targetOffset = (targetRelative = typeof targetOffset === 'undefined') ? target.offset : targetOffset | 0;\r\n sourceOffset = (relative = typeof sourceOffset === 'undefined') ? this.offset : sourceOffset | 0;\r\n sourceLimit = typeof sourceLimit === 'undefined' ? this.limit : sourceLimit | 0;\r\n\r\n if (targetOffset < 0 || targetOffset > target.buffer.byteLength)\r\n throw RangeError(\"Illegal target range: 0 <= \"+targetOffset+\" <= \"+target.buffer.byteLength);\r\n if (sourceOffset < 0 || sourceLimit > this.buffer.byteLength)\r\n throw RangeError(\"Illegal source range: 0 <= \"+sourceOffset+\" <= \"+this.buffer.byteLength);\r\n\r\n var len = sourceLimit - sourceOffset;\r\n if (len === 0)\r\n return target; // Nothing to copy\r\n\r\n target.ensureCapacity(targetOffset + len);\r\n\r\n target.view.set(this.view.subarray(sourceOffset, sourceLimit), targetOffset);\r\n\r\n if (relative) this.offset += len;\r\n if (targetRelative) target.offset += len;\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Makes sure that this ByteBuffer is backed by a {@link ByteBuffer#buffer} of at least the specified capacity. If the\r\n * current capacity is exceeded, it will be doubled. If double the current capacity is less than the required capacity,\r\n * the required capacity will be used instead.\r\n * @param {number} capacity Required capacity\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.ensureCapacity = function(capacity) {\r\n var current = this.buffer.byteLength;\r\n if (current < capacity)\r\n return this.resize((current *= 2) > capacity ? current : capacity);\r\n return this;\r\n };\r\n\r\n /**\r\n * Overwrites this ByteBuffer's contents with the specified value. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}.\r\n * @param {number|string} value Byte value to fill with. If given as a string, the first character is used.\r\n * @param {number=} begin Begin offset. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted. defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example `someByteBuffer.clear().fill(0)` fills the entire backing buffer with zeroes\r\n */\r\n ByteBufferPrototype.fill = function(value, begin, end) {\r\n var relative = typeof begin === 'undefined';\n if (relative) begin = this.offset;\n if (typeof value === 'string' && value.length > 0)\r\n value = value.charCodeAt(0);\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin >= end)\r\n return this; // Nothing to fill\r\n while (begin < end) this.view[begin++] = value;\r\n if (relative) this.offset = begin;\r\n return this;\r\n };\r\n\r\n /**\r\n * Makes this ByteBuffer ready for a new sequence of write or relative read operations. Sets `limit = offset` and\r\n * `offset = 0`. Make sure always to flip a ByteBuffer when all relative read or write operations are complete.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.flip = function() {\r\n this.limit = this.offset;\r\n this.offset = 0;\r\n return this;\r\n };\r\n /**\r\n * Marks an offset on this ByteBuffer to be used later.\r\n * @param {number=} offset Offset to mark. Defaults to {@link ByteBuffer#offset}.\r\n * @returns {!ByteBuffer} this\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @see ByteBuffer#reset\r\n * @expose\r\n */\r\n ByteBufferPrototype.mark = function(offset) {\r\n offset = typeof offset === 'undefined' ? this.offset : offset;\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n this.markedOffset = offset;\r\n return this;\r\n };\r\n /**\r\n * Sets the byte order.\r\n * @param {boolean} littleEndian `true` for little endian byte order, `false` for big endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.order = function(littleEndian) {\r\n if (!this.noAssert) {\r\n if (typeof littleEndian !== 'boolean')\r\n throw TypeError(\"Illegal littleEndian: Not a boolean\");\r\n }\r\n this.littleEndian = !!littleEndian;\r\n return this;\r\n };\r\n\r\n /**\r\n * Switches (to) little endian byte order.\r\n * @param {boolean=} littleEndian Defaults to `true`, otherwise uses big endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.LE = function(littleEndian) {\r\n this.littleEndian = typeof littleEndian !== 'undefined' ? !!littleEndian : true;\r\n return this;\r\n };\r\n\r\n /**\r\n * Switches (to) big endian byte order.\r\n * @param {boolean=} bigEndian Defaults to `true`, otherwise uses little endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.BE = function(bigEndian) {\r\n this.littleEndian = typeof bigEndian !== 'undefined' ? !bigEndian : false;\r\n return this;\r\n };\r\n /**\r\n * Prepends some data to this ByteBuffer. This will overwrite any contents before the specified offset up to the\r\n * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer\r\n * will be resized and its contents moved accordingly.\r\n * @param {!ByteBuffer|string|!ArrayBuffer} source Data to prepend. If `source` is a ByteBuffer, its offset will be\r\n * modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes\r\n * prepended if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example A relative `00<01 02 03>.prepend(<04 05>)` results in `<04 05 01 02 03>, 04 05|`\r\n * @example An absolute `00<01 02 03>.prepend(<04 05>, 2)` results in `04<05 02 03>, 04 05|`\r\n */\r\n ByteBufferPrototype.prepend = function(source, encoding, offset) {\r\n if (typeof encoding === 'number' || typeof encoding !== 'string') {\r\n offset = encoding;\r\n encoding = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (!(source instanceof ByteBuffer))\r\n source = ByteBuffer.wrap(source, encoding);\r\n var len = source.limit - source.offset;\r\n if (len <= 0) return this; // Nothing to prepend\r\n var diff = len - offset;\r\n if (diff > 0) { // Not enough space before offset, so resize + move\r\n var buffer = new ArrayBuffer(this.buffer.byteLength + diff);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view.subarray(offset, this.buffer.byteLength), len);\r\n this.buffer = buffer;\r\n this.view = view;\r\n this.offset += diff;\r\n if (this.markedOffset >= 0) this.markedOffset += diff;\r\n this.limit += diff;\r\n offset += diff;\r\n } else {\r\n var arrayView = new Uint8Array(this.buffer);\r\n }\r\n this.view.set(source.view.subarray(source.offset, source.limit), offset - len);\r\n\r\n source.offset = source.limit;\r\n if (relative)\r\n this.offset -= len;\r\n return this;\r\n };\r\n\r\n /**\r\n * Prepends this ByteBuffer to another ByteBuffer. This will overwrite any contents before the specified offset up to the\r\n * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer\r\n * will be resized and its contents moved accordingly.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes\r\n * prepended if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @see ByteBuffer#prepend\r\n */\r\n ByteBufferPrototype.prependTo = function(target, offset) {\r\n target.prepend(this, offset);\r\n return this;\r\n };\r\n /**\r\n * Prints debug information about this ByteBuffer's contents.\r\n * @param {function(string)=} out Output function to call, defaults to console.log\r\n * @expose\r\n */\r\n ByteBufferPrototype.printDebug = function(out) {\r\n if (typeof out !== 'function') out = console.log.bind(console);\r\n out(\r\n this.toString()+\"\\n\"+\r\n \"-------------------------------------------------------------------\\n\"+\r\n this.toDebug(/* columns */ true)\r\n );\r\n };\r\n\r\n /**\r\n * Gets the number of remaining readable bytes. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}, so this returns `limit - offset`.\r\n * @returns {number} Remaining readable bytes. May be negative if `offset > limit`.\r\n * @expose\r\n */\r\n ByteBufferPrototype.remaining = function() {\r\n return this.limit - this.offset;\r\n };\r\n /**\r\n * Resets this ByteBuffer's {@link ByteBuffer#offset}. If an offset has been marked through {@link ByteBuffer#mark}\r\n * before, `offset` will be set to {@link ByteBuffer#markedOffset}, which will then be discarded. If no offset has been\r\n * marked, sets `offset = 0`.\r\n * @returns {!ByteBuffer} this\r\n * @see ByteBuffer#mark\r\n * @expose\r\n */\r\n ByteBufferPrototype.reset = function() {\r\n if (this.markedOffset >= 0) {\r\n this.offset = this.markedOffset;\r\n this.markedOffset = -1;\r\n } else {\r\n this.offset = 0;\r\n }\r\n return this;\r\n };\r\n /**\r\n * Resizes this ByteBuffer to be backed by a buffer of at least the given capacity. Will do nothing if already that\r\n * large or larger.\r\n * @param {number} capacity Capacity required\r\n * @returns {!ByteBuffer} this\r\n * @throws {TypeError} If `capacity` is not a number\r\n * @throws {RangeError} If `capacity < 0`\r\n * @expose\r\n */\r\n ByteBufferPrototype.resize = function(capacity) {\r\n if (!this.noAssert) {\r\n if (typeof capacity !== 'number' || capacity % 1 !== 0)\n throw TypeError(\"Illegal capacity: \"+capacity+\" (not an integer)\");\n capacity |= 0;\n if (capacity < 0)\r\n throw RangeError(\"Illegal capacity: 0 <= \"+capacity);\r\n }\r\n if (this.buffer.byteLength < capacity) {\r\n var buffer = new ArrayBuffer(capacity);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view);\r\n this.buffer = buffer;\r\n this.view = view;\r\n }\r\n return this;\r\n };\r\n /**\r\n * Reverses this ByteBuffer's contents.\r\n * @param {number=} begin Offset to start at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.reverse = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === end)\r\n return this; // Nothing to reverse\r\n Array.prototype.reverse.call(this.view.subarray(begin, end));\r\n return this;\r\n };\r\n /**\r\n * Skips the next `length` bytes. This will just advance\r\n * @param {number} length Number of bytes to skip. May also be negative to move the offset back.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.skip = function(length) {\r\n if (!this.noAssert) {\r\n if (typeof length !== 'number' || length % 1 !== 0)\n throw TypeError(\"Illegal length: \"+length+\" (not an integer)\");\n length |= 0;\n }\r\n var offset = this.offset + length;\r\n if (!this.noAssert) {\r\n if (offset < 0 || offset > this.buffer.byteLength)\r\n throw RangeError(\"Illegal length: 0 <= \"+this.offset+\" + \"+length+\" <= \"+this.buffer.byteLength);\r\n }\r\n this.offset = offset;\r\n return this;\r\n };\r\n\r\n /**\r\n * Slices this ByteBuffer by creating a cloned instance with `offset = begin` and `limit = end`.\r\n * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} Clone of this ByteBuffer with slicing applied, backed by the same {@link ByteBuffer#buffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.slice = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var bb = this.clone();\r\n bb.offset = begin;\r\n bb.limit = end;\r\n return bb;\r\n };\r\n /**\r\n * Returns a copy of the backing buffer that contains this ByteBuffer's contents. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}.\r\n * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory if\r\n * possible. Defaults to `false`\r\n * @returns {!ArrayBuffer} Contents as an ArrayBuffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBuffer = function(forceCopy) {\r\n var offset = this.offset,\r\n limit = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: Not an integer\");\n offset >>>= 0;\n if (typeof limit !== 'number' || limit % 1 !== 0)\n throw TypeError(\"Illegal limit: Not an integer\");\n limit >>>= 0;\n if (offset < 0 || offset > limit || limit > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+offset+\" <= \"+limit+\" <= \"+this.buffer.byteLength);\n }\r\n // NOTE: It's not possible to have another ArrayBuffer reference the same memory as the backing buffer. This is\r\n // possible with Uint8Array#subarray only, but we have to return an ArrayBuffer by contract. So:\r\n if (!forceCopy && offset === 0 && limit === this.buffer.byteLength)\r\n return this.buffer;\r\n if (offset === limit)\r\n return EMPTY_BUFFER;\r\n var buffer = new ArrayBuffer(limit - offset);\r\n new Uint8Array(buffer).set(new Uint8Array(this.buffer).subarray(offset, limit), 0);\r\n return buffer;\r\n };\r\n\r\n /**\r\n * Returns a raw buffer compacted to contain this ByteBuffer's contents. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. This is an alias of {@link ByteBuffer#toBuffer}.\r\n * @function\r\n * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory.\r\n * Defaults to `false`\r\n * @returns {!ArrayBuffer} Contents as an ArrayBuffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.toArrayBuffer = ByteBufferPrototype.toBuffer;\r\n\r\n /**\r\n * Converts the ByteBuffer's contents to a string.\r\n * @param {string=} encoding Output encoding. Returns an informative string representation if omitted but also allows\r\n * direct conversion to \"utf8\", \"hex\", \"base64\" and \"binary\" encoding. \"debug\" returns a hex representation with\r\n * highlighted offsets.\r\n * @param {number=} begin Offset to begin at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {string} String representation\r\n * @throws {Error} If `encoding` is invalid\r\n * @expose\r\n */\r\n ByteBufferPrototype.toString = function(encoding, begin, end) {\r\n if (typeof encoding === 'undefined')\r\n return \"ByteBufferAB(offset=\"+this.offset+\",markedOffset=\"+this.markedOffset+\",limit=\"+this.limit+\",capacity=\"+this.capacity()+\")\";\r\n if (typeof encoding === 'number')\r\n encoding = \"utf8\",\r\n begin = encoding,\r\n end = begin;\r\n switch (encoding) {\r\n case \"utf8\":\r\n return this.toUTF8(begin, end);\r\n case \"base64\":\r\n return this.toBase64(begin, end);\r\n case \"hex\":\r\n return this.toHex(begin, end);\r\n case \"binary\":\r\n return this.toBinary(begin, end);\r\n case \"debug\":\r\n return this.toDebug();\r\n case \"columns\":\r\n return this.toColumns();\r\n default:\r\n throw Error(\"Unsupported encoding: \"+encoding);\r\n }\r\n };\r\n\r\n // lxiv-embeddable\r\n\r\n /**\r\n * lxiv-embeddable (c) 2014 Daniel Wirtz \r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/lxiv for details\r\n */\r\n var lxiv = function() {\r\n \"use strict\";\r\n\r\n /**\r\n * lxiv namespace.\r\n * @type {!Object.}\r\n * @exports lxiv\r\n */\r\n var lxiv = {};\r\n\r\n /**\r\n * Character codes for output.\r\n * @type {!Array.}\r\n * @inner\r\n */\r\n var aout = [\r\n 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,\r\n 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102,\r\n 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\r\n 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47\r\n ];\r\n\r\n /**\r\n * Character codes for input.\r\n * @type {!Array.}\r\n * @inner\r\n */\r\n var ain = [];\r\n for (var i=0, k=aout.length; i>2)&0x3f]);\r\n t = (b&0x3)<<4;\r\n if ((b = src()) !== null) {\r\n t |= (b>>4)&0xf;\r\n dst(aout[(t|((b>>4)&0xf))&0x3f]);\r\n t = (b&0xf)<<2;\r\n if ((b = src()) !== null)\r\n dst(aout[(t|((b>>6)&0x3))&0x3f]),\r\n dst(aout[b&0x3f]);\r\n else\r\n dst(aout[t&0x3f]),\r\n dst(61);\r\n } else\r\n dst(aout[t&0x3f]),\r\n dst(61),\r\n dst(61);\r\n }\r\n };\r\n\r\n /**\r\n * Decodes base64 char codes to bytes.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte.\r\n * @throws {Error} If a character code is invalid\r\n */\r\n lxiv.decode = function(src, dst) {\r\n var c, t1, t2;\r\n function fail(c) {\r\n throw Error(\"Illegal character code: \"+c);\r\n }\r\n while ((c = src()) !== null) {\r\n t1 = ain[c];\r\n if (typeof t1 === 'undefined') fail(c);\r\n if ((c = src()) !== null) {\r\n t2 = ain[c];\r\n if (typeof t2 === 'undefined') fail(c);\r\n dst((t1<<2)>>>0|(t2&0x30)>>4);\r\n if ((c = src()) !== null) {\r\n t1 = ain[c];\r\n if (typeof t1 === 'undefined')\r\n if (c === 61) break; else fail(c);\r\n dst(((t2&0xf)<<4)>>>0|(t1&0x3c)>>2);\r\n if ((c = src()) !== null) {\r\n t2 = ain[c];\r\n if (typeof t2 === 'undefined')\r\n if (c === 61) break; else fail(c);\r\n dst(((t1&0x3)<<6)>>>0|t2);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Tests if a string is valid base64.\r\n * @param {string} str String to test\r\n * @returns {boolean} `true` if valid, otherwise `false`\r\n */\r\n lxiv.test = function(str) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(str);\r\n };\r\n\r\n return lxiv;\r\n }();\r\n\r\n // encodings/base64\r\n\r\n /**\r\n * Encodes this ByteBuffer's contents to a base64 encoded string.\r\n * @param {number=} begin Offset to begin at, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}.\r\n * @returns {string} Base64 encoded string\r\n * @throws {RangeError} If `begin` or `end` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBase64 = function(begin, end) {\r\n if (typeof begin === 'undefined')\r\n begin = this.offset;\r\n if (typeof end === 'undefined')\r\n end = this.limit;\r\n begin = begin | 0; end = end | 0;\r\n if (begin < 0 || end > this.capacity || begin > end)\r\n throw RangeError(\"begin, end\");\r\n var sd; lxiv.encode(function() {\r\n return begin < end ? this.view[begin++] : null;\r\n }.bind(this), sd = stringDestination());\r\n return sd();\r\n };\r\n\r\n /**\r\n * Decodes a base64 encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromBase64 = function(str, littleEndian) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"str\");\r\n var bb = new ByteBuffer(str.length/4*3, littleEndian),\r\n i = 0;\r\n lxiv.decode(stringSource(str), function(b) {\r\n bb.view[i++] = b;\r\n });\r\n bb.limit = i;\r\n return bb;\r\n };\r\n\r\n /**\r\n * Encodes a binary string to base64 like `window.btoa` does.\r\n * @param {string} str Binary string\r\n * @returns {string} Base64 encoded string\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.btoa\r\n * @expose\r\n */\r\n ByteBuffer.btoa = function(str) {\r\n return ByteBuffer.fromBinary(str).toBase64();\r\n };\r\n\r\n /**\r\n * Decodes a base64 encoded string to binary like `window.atob` does.\r\n * @param {string} b64 Base64 encoded string\r\n * @returns {string} Binary string\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.atob\r\n * @expose\r\n */\r\n ByteBuffer.atob = function(b64) {\r\n return ByteBuffer.fromBase64(b64).toBinary();\r\n };\r\n\r\n // encodings/binary\r\n\r\n /**\r\n * Encodes this ByteBuffer to a binary encoded string, that is using only characters 0x00-0xFF as bytes.\r\n * @param {number=} begin Offset to begin at. Defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end Offset to end at. Defaults to {@link ByteBuffer#limit}.\r\n * @returns {string} Binary encoded string\r\n * @throws {RangeError} If `offset > limit`\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBinary = function(begin, end) {\r\n if (typeof begin === 'undefined')\r\n begin = this.offset;\r\n if (typeof end === 'undefined')\r\n end = this.limit;\r\n begin |= 0; end |= 0;\r\n if (begin < 0 || end > this.capacity() || begin > end)\r\n throw RangeError(\"begin, end\");\r\n if (begin === end)\r\n return \"\";\r\n var chars = [],\r\n parts = [];\r\n while (begin < end) {\r\n chars.push(this.view[begin++]);\r\n if (chars.length >= 1024)\r\n parts.push(String.fromCharCode.apply(String, chars)),\r\n chars = [];\r\n }\r\n return parts.join('') + String.fromCharCode.apply(String, chars);\r\n };\r\n\r\n /**\r\n * Decodes a binary encoded string, that is using only characters 0x00-0xFF as bytes, to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromBinary = function(str, littleEndian) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"str\");\r\n var i = 0,\r\n k = str.length,\r\n charCode,\r\n bb = new ByteBuffer(k, littleEndian);\r\n while (i 0xff)\r\n throw RangeError(\"illegal char code: \"+charCode);\r\n bb.view[i++] = charCode;\r\n }\r\n bb.limit = k;\r\n return bb;\r\n };\r\n\r\n // encodings/debug\r\n\r\n /**\r\n * Encodes this ByteBuffer to a hex encoded string with marked offsets. Offset symbols are:\r\n * * `<` : offset,\r\n * * `'` : markedOffset,\r\n * * `>` : limit,\r\n * * `|` : offset and limit,\r\n * * `[` : offset and markedOffset,\r\n * * `]` : markedOffset and limit,\r\n * * `!` : offset, markedOffset and limit\r\n * @param {boolean=} columns If `true` returns two columns hex + ascii, defaults to `false`\r\n * @returns {string|!Array.} Debug string or array of lines if `asArray = true`\r\n * @expose\r\n * @example `>00'01 02<03` contains four bytes with `limit=0, markedOffset=1, offset=3`\r\n * @example `00[01 02 03>` contains four bytes with `offset=markedOffset=1, limit=4`\r\n * @example `00|01 02 03` contains four bytes with `offset=limit=1, markedOffset=-1`\r\n * @example `|` contains zero bytes with `offset=limit=0, markedOffset=-1`\r\n */\r\n ByteBufferPrototype.toDebug = function(columns) {\r\n var i = -1,\r\n k = this.buffer.byteLength,\r\n b,\r\n hex = \"\",\r\n asc = \"\",\r\n out = \"\";\r\n while (i 32 && b < 127 ? String.fromCharCode(b) : '.';\r\n }\r\n ++i;\r\n if (columns) {\r\n if (i > 0 && i % 16 === 0 && i !== k) {\r\n while (hex.length < 3*16+3) hex += \" \";\r\n out += hex+asc+\"\\n\";\r\n hex = asc = \"\";\r\n }\r\n }\r\n if (i === this.offset && i === this.limit)\r\n hex += i === this.markedOffset ? \"!\" : \"|\";\r\n else if (i === this.offset)\r\n hex += i === this.markedOffset ? \"[\" : \"<\";\r\n else if (i === this.limit)\r\n hex += i === this.markedOffset ? \"]\" : \">\";\r\n else\r\n hex += i === this.markedOffset ? \"'\" : (columns || (i !== 0 && i !== k) ? \" \" : \"\");\r\n }\r\n if (columns && hex !== \" \") {\r\n while (hex.length < 3*16+3)\r\n hex += \" \";\r\n out += hex + asc + \"\\n\";\r\n }\r\n return columns ? out : hex;\r\n };\r\n\r\n /**\r\n * Decodes a hex encoded string with marked offsets to a ByteBuffer.\r\n * @param {string} str Debug string to decode (not be generated with `columns = true`)\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n * @see ByteBuffer#toDebug\r\n */\r\n ByteBuffer.fromDebug = function(str, littleEndian, noAssert) {\r\n var k = str.length,\r\n bb = new ByteBuffer(((k+1)/3)|0, littleEndian, noAssert);\r\n var i = 0, j = 0, ch, b,\r\n rs = false, // Require symbol next\r\n ho = false, hm = false, hl = false, // Already has offset (ho), markedOffset (hm), limit (hl)?\r\n fail = false;\r\n while (i':\r\n if (!noAssert) {\r\n if (hl) {\r\n fail = true;\r\n break;\r\n }\r\n hl = true;\r\n }\r\n bb.limit = j;\r\n rs = false;\r\n break;\r\n case \"'\":\r\n if (!noAssert) {\r\n if (hm) {\r\n fail = true;\r\n break;\r\n }\r\n hm = true;\r\n }\r\n bb.markedOffset = j;\r\n rs = false;\r\n break;\r\n case ' ':\r\n rs = false;\r\n break;\r\n default:\r\n if (!noAssert) {\r\n if (rs) {\r\n fail = true;\r\n break;\r\n }\r\n }\r\n b = parseInt(ch+str.charAt(i++), 16);\r\n if (!noAssert) {\r\n if (isNaN(b) || b < 0 || b > 255)\r\n throw TypeError(\"Illegal str: Not a debug encoded string\");\r\n }\r\n bb.view[j++] = b;\r\n rs = true;\r\n }\r\n if (fail)\r\n throw TypeError(\"Illegal str: Invalid symbol at \"+i);\r\n }\r\n if (!noAssert) {\r\n if (!ho || !hl)\r\n throw TypeError(\"Illegal str: Missing offset or limit\");\r\n if (j>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var out = new Array(end - begin),\r\n b;\r\n while (begin < end) {\r\n b = this.view[begin++];\r\n if (b < 0x10)\r\n out.push(\"0\", b.toString(16));\r\n else out.push(b.toString(16));\r\n }\r\n return out.join('');\r\n };\r\n\r\n /**\r\n * Decodes a hex encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromHex = function(str, littleEndian, noAssert) {\r\n if (!noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (str.length % 2 !== 0)\r\n throw TypeError(\"Illegal str: Length not a multiple of 2\");\r\n }\r\n var k = str.length,\r\n bb = new ByteBuffer((k / 2) | 0, littleEndian),\r\n b;\r\n for (var i=0, j=0; i 255)\r\n throw TypeError(\"Illegal str: Contains non-hex characters\");\r\n bb.view[j++] = b;\r\n }\r\n bb.limit = j;\r\n return bb;\r\n };\r\n\r\n // utfx-embeddable\r\n\r\n /**\r\n * utfx-embeddable (c) 2014 Daniel Wirtz \r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/utfx for details\r\n */\r\n var utfx = function() {\r\n \"use strict\";\r\n\r\n /**\r\n * utfx namespace.\r\n * @inner\r\n * @type {!Object.}\r\n */\r\n var utfx = {};\r\n\r\n /**\r\n * Maximum valid code point.\r\n * @type {number}\r\n * @const\r\n */\r\n utfx.MAX_CODEPOINT = 0x10FFFF;\r\n\r\n /**\r\n * Encodes UTF8 code points to UTF8 bytes.\r\n * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point\r\n * respectively `null` if there are no more code points left or a single numeric code point.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte\r\n */\r\n utfx.encodeUTF8 = function(src, dst) {\r\n var cp = null;\r\n if (typeof src === 'number')\r\n cp = src,\r\n src = function() { return null; };\r\n while (cp !== null || (cp = src()) !== null) {\r\n if (cp < 0x80)\r\n dst(cp&0x7F);\r\n else if (cp < 0x800)\r\n dst(((cp>>6)&0x1F)|0xC0),\r\n dst((cp&0x3F)|0x80);\r\n else if (cp < 0x10000)\r\n dst(((cp>>12)&0x0F)|0xE0),\r\n dst(((cp>>6)&0x3F)|0x80),\r\n dst((cp&0x3F)|0x80);\r\n else\r\n dst(((cp>>18)&0x07)|0xF0),\r\n dst(((cp>>12)&0x3F)|0x80),\r\n dst(((cp>>6)&0x3F)|0x80),\r\n dst((cp&0x3F)|0x80);\r\n cp = null;\r\n }\r\n };\r\n\r\n /**\r\n * Decodes UTF8 bytes to UTF8 code points.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there\r\n * are no more bytes left.\r\n * @param {!function(number)} dst Code points destination as a function successively called with each decoded code point.\r\n * @throws {RangeError} If a starting byte is invalid in UTF8\r\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the\r\n * remaining bytes.\r\n */\r\n utfx.decodeUTF8 = function(src, dst) {\r\n var a, b, c, d, fail = function(b) {\r\n b = b.slice(0, b.indexOf(null));\r\n var err = Error(b.toString());\r\n err.name = \"TruncatedError\";\r\n err['bytes'] = b;\r\n throw err;\r\n };\r\n while ((a = src()) !== null) {\r\n if ((a&0x80) === 0)\r\n dst(a);\r\n else if ((a&0xE0) === 0xC0)\r\n ((b = src()) === null) && fail([a, b]),\r\n dst(((a&0x1F)<<6) | (b&0x3F));\r\n else if ((a&0xF0) === 0xE0)\r\n ((b=src()) === null || (c=src()) === null) && fail([a, b, c]),\r\n dst(((a&0x0F)<<12) | ((b&0x3F)<<6) | (c&0x3F));\r\n else if ((a&0xF8) === 0xF0)\r\n ((b=src()) === null || (c=src()) === null || (d=src()) === null) && fail([a, b, c ,d]),\r\n dst(((a&0x07)<<18) | ((b&0x3F)<<12) | ((c&0x3F)<<6) | (d&0x3F));\r\n else throw RangeError(\"Illegal starting byte: \"+a);\r\n }\r\n };\r\n\r\n /**\r\n * Converts UTF16 characters to UTF8 code points.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @param {!function(number)} dst Code points destination as a function successively called with each converted code\r\n * point.\r\n */\r\n utfx.UTF16toUTF8 = function(src, dst) {\r\n var c1, c2 = null;\r\n while (true) {\r\n if ((c1 = c2 !== null ? c2 : src()) === null)\r\n break;\r\n if (c1 >= 0xD800 && c1 <= 0xDFFF) {\r\n if ((c2 = src()) !== null) {\r\n if (c2 >= 0xDC00 && c2 <= 0xDFFF) {\r\n dst((c1-0xD800)*0x400+c2-0xDC00+0x10000);\r\n c2 = null; continue;\r\n }\r\n }\r\n }\r\n dst(c1);\r\n }\r\n if (c2 !== null) dst(c2);\r\n };\r\n\r\n /**\r\n * Converts UTF8 code points to UTF16 characters.\r\n * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point\r\n * respectively `null` if there are no more code points left or a single numeric code point.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.\r\n * @throws {RangeError} If a code point is out of range\r\n */\r\n utfx.UTF8toUTF16 = function(src, dst) {\r\n var cp = null;\r\n if (typeof src === 'number')\r\n cp = src, src = function() { return null; };\r\n while (cp !== null || (cp = src()) !== null) {\r\n if (cp <= 0xFFFF)\r\n dst(cp);\r\n else\r\n cp -= 0x10000,\r\n dst((cp>>10)+0xD800),\r\n dst((cp%0x400)+0xDC00);\r\n cp = null;\r\n }\r\n };\r\n\r\n /**\r\n * Converts and encodes UTF16 characters to UTF8 bytes.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively `null`\r\n * if there are no more characters left.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte.\r\n */\r\n utfx.encodeUTF16toUTF8 = function(src, dst) {\r\n utfx.UTF16toUTF8(src, function(cp) {\r\n utfx.encodeUTF8(cp, dst);\r\n });\r\n };\r\n\r\n /**\r\n * Decodes and converts UTF8 bytes to UTF16 characters.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there\r\n * are no more bytes left.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.\r\n * @throws {RangeError} If a starting byte is invalid in UTF8\r\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the remaining bytes.\r\n */\r\n utfx.decodeUTF8toUTF16 = function(src, dst) {\r\n utfx.decodeUTF8(src, function(cp) {\r\n utfx.UTF8toUTF16(cp, dst);\r\n });\r\n };\r\n\r\n /**\r\n * Calculates the byte length of an UTF8 code point.\r\n * @param {number} cp UTF8 code point\r\n * @returns {number} Byte length\r\n */\r\n utfx.calculateCodePoint = function(cp) {\r\n return (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes required to store UTF8 code points.\r\n * @param {(!function():number|null)} src Code points source as a function returning the next code point respectively\r\n * `null` if there are no more code points left.\r\n * @returns {number} The number of UTF8 bytes required\r\n */\r\n utfx.calculateUTF8 = function(src) {\r\n var cp, l=0;\r\n while ((cp = src()) !== null)\r\n l += (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n return l;\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 code points respectively UTF8 bytes required to store UTF16 char codes.\r\n * @param {(!function():number|null)} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @returns {!Array.} The number of UTF8 code points at index 0 and the number of UTF8 bytes required at index 1.\r\n */\r\n utfx.calculateUTF16asUTF8 = function(src) {\r\n var n=0, l=0;\r\n utfx.UTF16toUTF8(src, function(cp) {\r\n ++n; l += (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n });\r\n return [n,l];\r\n };\r\n\r\n return utfx;\r\n }();\r\n\r\n // encodings/utf8\r\n\r\n /**\r\n * Encodes this ByteBuffer's contents between {@link ByteBuffer#offset} and {@link ByteBuffer#limit} to an UTF8 encoded\r\n * string.\r\n * @returns {string} Hex encoded string\r\n * @throws {RangeError} If `offset > limit`\r\n * @expose\r\n */\r\n ByteBufferPrototype.toUTF8 = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var sd; try {\r\n utfx.decodeUTF8toUTF16(function() {\r\n return begin < end ? this.view[begin++] : null;\r\n }.bind(this), sd = stringDestination());\r\n } catch (e) {\r\n if (begin !== end)\r\n throw RangeError(\"Illegal range: Truncated data, \"+begin+\" != \"+end);\r\n }\r\n return sd();\r\n };\r\n\r\n /**\r\n * Decodes an UTF8 encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromUTF8 = function(str, littleEndian, noAssert) {\r\n if (!noAssert)\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n var bb = new ByteBuffer(utfx.calculateUTF16asUTF8(stringSource(str), true)[1], littleEndian, noAssert),\r\n i = 0;\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n bb.view[i++] = b;\r\n });\r\n bb.limit = i;\r\n return bb;\r\n };\r\n\r\n return ByteBuffer;\r\n});\r\n","/*\r\n Copyright 2013 Daniel Wirtz \r\n Copyright 2009 The Closure Library Authors. All Rights Reserved.\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS-IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n */\r\n\r\n/**\r\n * @license long.js (c) 2013 Daniel Wirtz \r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/long.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (typeof define === 'function' && define[\"amd\"])\r\n define([], factory);\r\n /* CommonJS */ else if (typeof require === 'function' && typeof module === \"object\" && module && module[\"exports\"])\r\n module[\"exports\"] = factory();\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"Long\"] = factory();\r\n\r\n})(this, function() {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\r\n * See the from* functions below for more convenient ways of constructing Longs.\r\n * @exports Long\r\n * @class A Long class for representing a 64 bit two's-complement integer value.\r\n * @param {number} low The low (signed) 32 bits of the long\r\n * @param {number} high The high (signed) 32 bits of the long\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @constructor\r\n */\r\n function Long(low, high, unsigned) {\r\n\r\n /**\r\n * The low 32 bits as a signed value.\r\n * @type {number}\r\n */\r\n this.low = low | 0;\r\n\r\n /**\r\n * The high 32 bits as a signed value.\r\n * @type {number}\r\n */\r\n this.high = high | 0;\r\n\r\n /**\r\n * Whether unsigned or not.\r\n * @type {boolean}\r\n */\r\n this.unsigned = !!unsigned;\r\n }\r\n\r\n // The internal representation of a long is the two given signed, 32-bit values.\r\n // We use 32-bit pieces because these are the size of integers on which\r\n // Javascript performs bit-operations. For operations like addition and\r\n // multiplication, we split each number into 16 bit pieces, which can easily be\r\n // multiplied within Javascript's floating-point representation without overflow\r\n // or change in sign.\r\n //\r\n // In the algorithms below, we frequently reduce the negative case to the\r\n // positive case by negating the input(s) and then post-processing the result.\r\n // Note that we must ALWAYS check specially whether those values are MIN_VALUE\r\n // (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\r\n // a positive number, it overflows back into a negative). Not handling this\r\n // case would often result in infinite recursion.\r\n //\r\n // Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\r\n // methods on which they depend.\r\n\r\n /**\r\n * An indicator used to reliably determine if an object is a Long or not.\r\n * @type {boolean}\r\n * @const\r\n * @private\r\n */\r\n Long.prototype.__isLong__;\r\n\r\n Object.defineProperty(Long.prototype, \"__isLong__\", {\r\n value: true,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n\r\n /**\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n * @inner\r\n */\r\n function isLong(obj) {\r\n return (obj && obj[\"__isLong__\"]) === true;\r\n }\r\n\r\n /**\r\n * Tests if the specified object is a Long.\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n */\r\n Long.isLong = isLong;\r\n\r\n /**\r\n * A cache of the Long representations of small integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\n var INT_CACHE = {};\r\n\r\n /**\r\n * A cache of the Long representations of small unsigned integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\n var UINT_CACHE = {};\r\n\r\n /**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromInt(value, unsigned) {\r\n var obj, cachedObj, cache;\r\n if (unsigned) {\r\n value >>>= 0;\r\n if (cache = (0 <= value && value < 256)) {\r\n cachedObj = UINT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true);\r\n if (cache)\r\n UINT_CACHE[value] = obj;\r\n return obj;\r\n } else {\r\n value |= 0;\r\n if (cache = (-128 <= value && value < 128)) {\r\n cachedObj = INT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, value < 0 ? -1 : 0, false);\r\n if (cache)\r\n INT_CACHE[value] = obj;\r\n return obj;\r\n }\r\n }\r\n\r\n /**\r\n * Returns a Long representing the given 32 bit integer value.\r\n * @function\r\n * @param {number} value The 32 bit integer in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\n Long.fromInt = fromInt;\r\n\r\n /**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromNumber(value, unsigned) {\r\n if (isNaN(value) || !isFinite(value))\r\n return unsigned ? UZERO : ZERO;\r\n if (unsigned) {\r\n if (value < 0)\r\n return UZERO;\r\n if (value >= TWO_PWR_64_DBL)\r\n return MAX_UNSIGNED_VALUE;\r\n } else {\r\n if (value <= -TWO_PWR_63_DBL)\r\n return MIN_VALUE;\r\n if (value + 1 >= TWO_PWR_63_DBL)\r\n return MAX_VALUE;\r\n }\r\n if (value < 0)\r\n return fromNumber(-value, unsigned).neg();\r\n return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);\r\n }\r\n\r\n /**\r\n * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\r\n * @function\r\n * @param {number} value The number in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\n Long.fromNumber = fromNumber;\r\n\r\n /**\r\n * @param {number} lowBits\r\n * @param {number} highBits\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromBits(lowBits, highBits, unsigned) {\r\n return new Long(lowBits, highBits, unsigned);\r\n }\r\n\r\n /**\r\n * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\r\n * assumed to use 32 bits.\r\n * @function\r\n * @param {number} lowBits The low 32 bits\r\n * @param {number} highBits The high 32 bits\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\n Long.fromBits = fromBits;\r\n\r\n /**\r\n * @function\r\n * @param {number} base\r\n * @param {number} exponent\r\n * @returns {number}\r\n * @inner\r\n */\r\n var pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4)\r\n\r\n /**\r\n * @param {string} str\r\n * @param {(boolean|number)=} unsigned\r\n * @param {number=} radix\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromString(str, unsigned, radix) {\r\n if (str.length === 0)\r\n throw Error('empty string');\r\n if (str === \"NaN\" || str === \"Infinity\" || str === \"+Infinity\" || str === \"-Infinity\")\r\n return ZERO;\r\n if (typeof unsigned === 'number') {\r\n // For goog.math.long compatibility\r\n radix = unsigned,\r\n unsigned = false;\r\n } else {\r\n unsigned = !! unsigned;\r\n }\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n\r\n var p;\r\n if ((p = str.indexOf('-')) > 0)\r\n throw Error('interior hyphen');\r\n else if (p === 0) {\r\n return fromString(str.substring(1), unsigned, radix).neg();\r\n }\r\n\r\n // Do several (8) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 8));\r\n\r\n var result = ZERO;\r\n for (var i = 0; i < str.length; i += 8) {\r\n var size = Math.min(8, str.length - i),\r\n value = parseInt(str.substring(i, i + size), radix);\r\n if (size < 8) {\r\n var power = fromNumber(pow_dbl(radix, size));\r\n result = result.mul(power).add(fromNumber(value));\r\n } else {\r\n result = result.mul(radixToPower);\r\n result = result.add(fromNumber(value));\r\n }\r\n }\r\n result.unsigned = unsigned;\r\n return result;\r\n }\r\n\r\n /**\r\n * Returns a Long representation of the given string, written using the specified radix.\r\n * @function\r\n * @param {string} str The textual representation of the Long\r\n * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\r\n * @returns {!Long} The corresponding Long value\r\n */\r\n Long.fromString = fromString;\r\n\r\n /**\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromValue(val) {\r\n if (val /* is compatible */ instanceof Long)\r\n return val;\r\n if (typeof val === 'number')\r\n return fromNumber(val);\r\n if (typeof val === 'string')\r\n return fromString(val);\r\n // Throws for non-objects, converts non-instanceof Long:\r\n return fromBits(val.low, val.high, val.unsigned);\r\n }\r\n\r\n /**\r\n * Converts the specified value to a Long.\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value\r\n * @returns {!Long}\r\n */\r\n Long.fromValue = fromValue;\r\n\r\n // NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\r\n // no runtime penalty for these.\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_16_DBL = 1 << 16;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_24_DBL = 1 << 24;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\r\n\r\n /**\r\n * @type {!Long}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var ZERO = fromInt(0);\r\n\r\n /**\r\n * Signed zero.\r\n * @type {!Long}\r\n */\r\n Long.ZERO = ZERO;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var UZERO = fromInt(0, true);\r\n\r\n /**\r\n * Unsigned zero.\r\n * @type {!Long}\r\n */\r\n Long.UZERO = UZERO;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var ONE = fromInt(1);\r\n\r\n /**\r\n * Signed one.\r\n * @type {!Long}\r\n */\r\n Long.ONE = ONE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var UONE = fromInt(1, true);\r\n\r\n /**\r\n * Unsigned one.\r\n * @type {!Long}\r\n */\r\n Long.UONE = UONE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var NEG_ONE = fromInt(-1);\r\n\r\n /**\r\n * Signed negative one.\r\n * @type {!Long}\r\n */\r\n Long.NEG_ONE = NEG_ONE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var MAX_VALUE = fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false);\r\n\r\n /**\r\n * Maximum signed value.\r\n * @type {!Long}\r\n */\r\n Long.MAX_VALUE = MAX_VALUE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true);\r\n\r\n /**\r\n * Maximum unsigned value.\r\n * @type {!Long}\r\n */\r\n Long.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var MIN_VALUE = fromBits(0, 0x80000000|0, false);\r\n\r\n /**\r\n * Minimum signed value.\r\n * @type {!Long}\r\n */\r\n Long.MIN_VALUE = MIN_VALUE;\r\n\r\n /**\r\n * @alias Long.prototype\r\n * @inner\r\n */\r\n var LongPrototype = Long.prototype;\r\n\r\n /**\r\n * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\r\n * @returns {number}\r\n */\r\n LongPrototype.toInt = function toInt() {\r\n return this.unsigned ? this.low >>> 0 : this.low;\r\n };\r\n\r\n /**\r\n * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\r\n * @returns {number}\r\n */\r\n LongPrototype.toNumber = function toNumber() {\r\n if (this.unsigned)\r\n return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0);\r\n return this.high * TWO_PWR_32_DBL + (this.low >>> 0);\r\n };\r\n\r\n /**\r\n * Converts the Long to a string written in the specified radix.\r\n * @param {number=} radix Radix (2-36), defaults to 10\r\n * @returns {string}\r\n * @override\r\n * @throws {RangeError} If `radix` is out of range\r\n */\r\n LongPrototype.toString = function toString(radix) {\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n if (this.isZero())\r\n return '0';\r\n if (this.isNegative()) { // Unsigned Longs are never negative\r\n if (this.eq(MIN_VALUE)) {\r\n // We need to change the Long value before it can be negated, so we remove\r\n // the bottom-most digit in this base and then recurse to do the rest.\r\n var radixLong = fromNumber(radix),\r\n div = this.div(radixLong),\r\n rem1 = div.mul(radixLong).sub(this);\r\n return div.toString(radix) + rem1.toInt().toString(radix);\r\n } else\r\n return '-' + this.neg().toString(radix);\r\n }\r\n\r\n // Do several (6) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned),\r\n rem = this;\r\n var result = '';\r\n while (true) {\r\n var remDiv = rem.div(radixToPower),\r\n intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0,\r\n digits = intval.toString(radix);\r\n rem = remDiv;\r\n if (rem.isZero())\r\n return digits + result;\r\n else {\r\n while (digits.length < 6)\r\n digits = '0' + digits;\r\n result = '' + digits + result;\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Gets the high 32 bits as a signed integer.\r\n * @returns {number} Signed high bits\r\n */\r\n LongPrototype.getHighBits = function getHighBits() {\r\n return this.high;\r\n };\r\n\r\n /**\r\n * Gets the high 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned high bits\r\n */\r\n LongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {\r\n return this.high >>> 0;\r\n };\r\n\r\n /**\r\n * Gets the low 32 bits as a signed integer.\r\n * @returns {number} Signed low bits\r\n */\r\n LongPrototype.getLowBits = function getLowBits() {\r\n return this.low;\r\n };\r\n\r\n /**\r\n * Gets the low 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned low bits\r\n */\r\n LongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {\r\n return this.low >>> 0;\r\n };\r\n\r\n /**\r\n * Gets the number of bits needed to represent the absolute value of this Long.\r\n * @returns {number}\r\n */\r\n LongPrototype.getNumBitsAbs = function getNumBitsAbs() {\r\n if (this.isNegative()) // Unsigned Longs are never negative\r\n return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();\r\n var val = this.high != 0 ? this.high : this.low;\r\n for (var bit = 31; bit > 0; bit--)\r\n if ((val & (1 << bit)) != 0)\r\n break;\r\n return this.high != 0 ? bit + 33 : bit + 1;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value equals zero.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isZero = function isZero() {\r\n return this.high === 0 && this.low === 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is negative.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isNegative = function isNegative() {\r\n return !this.unsigned && this.high < 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is positive.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isPositive = function isPositive() {\r\n return this.unsigned || this.high >= 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is odd.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isOdd = function isOdd() {\r\n return (this.low & 1) === 1;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is even.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isEven = function isEven() {\r\n return (this.low & 1) === 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value equals the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.equals = function equals(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1)\r\n return false;\r\n return this.high === other.high && this.low === other.low;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.eq = LongPrototype.equals;\r\n\r\n /**\r\n * Tests if this Long's value differs from the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.notEquals = function notEquals(other) {\r\n return !this.eq(/* validates */ other);\r\n };\r\n\r\n /**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.neq = LongPrototype.notEquals;\r\n\r\n /**\r\n * Tests if this Long's value is less than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.lessThan = function lessThan(other) {\r\n return this.comp(/* validates */ other) < 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.lt = LongPrototype.lessThan;\r\n\r\n /**\r\n * Tests if this Long's value is less than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {\r\n return this.comp(/* validates */ other) <= 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.lte = LongPrototype.lessThanOrEqual;\r\n\r\n /**\r\n * Tests if this Long's value is greater than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.greaterThan = function greaterThan(other) {\r\n return this.comp(/* validates */ other) > 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.gt = LongPrototype.greaterThan;\r\n\r\n /**\r\n * Tests if this Long's value is greater than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {\r\n return this.comp(/* validates */ other) >= 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.gte = LongPrototype.greaterThanOrEqual;\r\n\r\n /**\r\n * Compares this Long's value with the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n */\r\n LongPrototype.compare = function compare(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.eq(other))\r\n return 0;\r\n var thisNeg = this.isNegative(),\r\n otherNeg = other.isNegative();\r\n if (thisNeg && !otherNeg)\r\n return -1;\r\n if (!thisNeg && otherNeg)\r\n return 1;\r\n // At this point the sign bits are the same\r\n if (!this.unsigned)\r\n return this.sub(other).isNegative() ? -1 : 1;\r\n // Both are positive if at least one is unsigned\r\n return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1;\r\n };\r\n\r\n /**\r\n * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n */\r\n LongPrototype.comp = LongPrototype.compare;\r\n\r\n /**\r\n * Negates this Long's value.\r\n * @returns {!Long} Negated Long\r\n */\r\n LongPrototype.negate = function negate() {\r\n if (!this.unsigned && this.eq(MIN_VALUE))\r\n return MIN_VALUE;\r\n return this.not().add(ONE);\r\n };\r\n\r\n /**\r\n * Negates this Long's value. This is an alias of {@link Long#negate}.\r\n * @function\r\n * @returns {!Long} Negated Long\r\n */\r\n LongPrototype.neg = LongPrototype.negate;\r\n\r\n /**\r\n * Returns the sum of this and the specified Long.\r\n * @param {!Long|number|string} addend Addend\r\n * @returns {!Long} Sum\r\n */\r\n LongPrototype.add = function add(addend) {\r\n if (!isLong(addend))\r\n addend = fromValue(addend);\r\n\r\n // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = addend.high >>> 16;\r\n var b32 = addend.high & 0xFFFF;\r\n var b16 = addend.low >>> 16;\r\n var b00 = addend.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 + b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 + b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 + b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 + b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the difference of this and the specified Long.\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\n LongPrototype.subtract = function subtract(subtrahend) {\r\n if (!isLong(subtrahend))\r\n subtrahend = fromValue(subtrahend);\r\n return this.add(subtrahend.neg());\r\n };\r\n\r\n /**\r\n * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\r\n * @function\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\n LongPrototype.sub = LongPrototype.subtract;\r\n\r\n /**\r\n * Returns the product of this and the specified Long.\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\n LongPrototype.multiply = function multiply(multiplier) {\r\n if (this.isZero())\r\n return ZERO;\r\n if (!isLong(multiplier))\r\n multiplier = fromValue(multiplier);\r\n if (multiplier.isZero())\r\n return ZERO;\r\n if (this.eq(MIN_VALUE))\r\n return multiplier.isOdd() ? MIN_VALUE : ZERO;\r\n if (multiplier.eq(MIN_VALUE))\r\n return this.isOdd() ? MIN_VALUE : ZERO;\r\n\r\n if (this.isNegative()) {\r\n if (multiplier.isNegative())\r\n return this.neg().mul(multiplier.neg());\r\n else\r\n return this.neg().mul(multiplier).neg();\r\n } else if (multiplier.isNegative())\r\n return this.mul(multiplier.neg()).neg();\r\n\r\n // If both longs are small, use float multiplication\r\n if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24))\r\n return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);\r\n\r\n // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\r\n // We can skip products that would overflow.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = multiplier.high >>> 16;\r\n var b32 = multiplier.high & 0xFFFF;\r\n var b16 = multiplier.low >>> 16;\r\n var b00 = multiplier.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 * b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 * b00;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c16 += a00 * b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 * b00;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a16 * b16;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a00 * b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\r\n * @function\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\n LongPrototype.mul = LongPrototype.multiply;\r\n\r\n /**\r\n * Returns this Long divided by the specified. The result is signed if this Long is signed or\r\n * unsigned if this Long is unsigned.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\n LongPrototype.divide = function divide(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n if (divisor.isZero())\r\n throw Error('division by zero');\r\n if (this.isZero())\r\n return this.unsigned ? UZERO : ZERO;\r\n var approx, rem, res;\r\n if (!this.unsigned) {\r\n // This section is only relevant for signed longs and is derived from the\r\n // closure library as a whole.\r\n if (this.eq(MIN_VALUE)) {\r\n if (divisor.eq(ONE) || divisor.eq(NEG_ONE))\r\n return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE\r\n else if (divisor.eq(MIN_VALUE))\r\n return ONE;\r\n else {\r\n // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\r\n var halfThis = this.shr(1);\r\n approx = halfThis.div(divisor).shl(1);\r\n if (approx.eq(ZERO)) {\r\n return divisor.isNegative() ? ONE : NEG_ONE;\r\n } else {\r\n rem = this.sub(divisor.mul(approx));\r\n res = approx.add(rem.div(divisor));\r\n return res;\r\n }\r\n }\r\n } else if (divisor.eq(MIN_VALUE))\r\n return this.unsigned ? UZERO : ZERO;\r\n if (this.isNegative()) {\r\n if (divisor.isNegative())\r\n return this.neg().div(divisor.neg());\r\n return this.neg().div(divisor).neg();\r\n } else if (divisor.isNegative())\r\n return this.div(divisor.neg()).neg();\r\n res = ZERO;\r\n } else {\r\n // The algorithm below has not been made for unsigned longs. It's therefore\r\n // required to take special care of the MSB prior to running it.\r\n if (!divisor.unsigned)\r\n divisor = divisor.toUnsigned();\r\n if (divisor.gt(this))\r\n return UZERO;\r\n if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true\r\n return UONE;\r\n res = UZERO;\r\n }\r\n\r\n // Repeat the following until the remainder is less than other: find a\r\n // floating-point that approximates remainder / other *from below*, add this\r\n // into the result, and subtract it from the remainder. It is critical that\r\n // the approximate value is less than or equal to the real value so that the\r\n // remainder never becomes negative.\r\n rem = this;\r\n while (rem.gte(divisor)) {\r\n // Approximate the result of division. This may be a little greater or\r\n // smaller than the actual value.\r\n approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));\r\n\r\n // We will tweak the approximate result by changing it in the 48-th digit or\r\n // the smallest non-fractional digit, whichever is larger.\r\n var log2 = Math.ceil(Math.log(approx) / Math.LN2),\r\n delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48),\r\n\r\n // Decrease the approximation until it is smaller than the remainder. Note\r\n // that if it is too large, the product overflows and is negative.\r\n approxRes = fromNumber(approx),\r\n approxRem = approxRes.mul(divisor);\r\n while (approxRem.isNegative() || approxRem.gt(rem)) {\r\n approx -= delta;\r\n approxRes = fromNumber(approx, this.unsigned);\r\n approxRem = approxRes.mul(divisor);\r\n }\r\n\r\n // We know the answer can't be zero... and actually, zero would cause\r\n // infinite recursion since we would make no progress.\r\n if (approxRes.isZero())\r\n approxRes = ONE;\r\n\r\n res = res.add(approxRes);\r\n rem = rem.sub(approxRem);\r\n }\r\n return res;\r\n };\r\n\r\n /**\r\n * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\n LongPrototype.div = LongPrototype.divide;\r\n\r\n /**\r\n * Returns this Long modulo the specified.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\n LongPrototype.modulo = function modulo(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n return this.sub(this.div(divisor).mul(divisor));\r\n };\r\n\r\n /**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\n LongPrototype.mod = LongPrototype.modulo;\r\n\r\n /**\r\n * Returns the bitwise NOT of this Long.\r\n * @returns {!Long}\r\n */\r\n LongPrototype.not = function not() {\r\n return fromBits(~this.low, ~this.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the bitwise AND of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\n LongPrototype.and = function and(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low & other.low, this.high & other.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the bitwise OR of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\n LongPrototype.or = function or(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low | other.low, this.high | other.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the bitwise XOR of this Long and the given one.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\n LongPrototype.xor = function xor(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns this Long with bits shifted to the left by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shiftLeft = function shiftLeft(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned);\r\n else\r\n return fromBits(0, this.low << (numBits - 32), this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shl = LongPrototype.shiftLeft;\r\n\r\n /**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shiftRight = function shiftRight(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned);\r\n else\r\n return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shr = LongPrototype.shiftRight;\r\n\r\n /**\r\n * Returns this Long with bits logically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n numBits &= 63;\r\n if (numBits === 0)\r\n return this;\r\n else {\r\n var high = this.high;\r\n if (numBits < 32) {\r\n var low = this.low;\r\n return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned);\r\n } else if (numBits === 32)\r\n return fromBits(high, 0, this.unsigned);\r\n else\r\n return fromBits(high >>> (numBits - 32), 0, this.unsigned);\r\n }\r\n };\r\n\r\n /**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shru = LongPrototype.shiftRightUnsigned;\r\n\r\n /**\r\n * Converts this Long to signed.\r\n * @returns {!Long} Signed long\r\n */\r\n LongPrototype.toSigned = function toSigned() {\r\n if (!this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, false);\r\n };\r\n\r\n /**\r\n * Converts this Long to unsigned.\r\n * @returns {!Long} Unsigned long\r\n */\r\n LongPrototype.toUnsigned = function toUnsigned() {\r\n if (this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, true);\r\n };\r\n\r\n /**\r\n * Converts this Long to its byte representation.\r\n * @param {boolean=} le Whether little or big endian, defaults to big endian\r\n * @returns {!Array.} Byte representation\r\n */\r\n LongPrototype.toBytes = function(le) {\r\n return le ? this.toBytesLE() : this.toBytesBE();\r\n }\r\n\r\n /**\r\n * Converts this Long to its little endian byte representation.\r\n * @returns {!Array.} Little endian byte representation\r\n */\r\n LongPrototype.toBytesLE = function() {\r\n var hi = this.high,\r\n lo = this.low;\r\n return [\r\n lo & 0xff,\r\n (lo >>> 8) & 0xff,\r\n (lo >>> 16) & 0xff,\r\n (lo >>> 24) & 0xff,\r\n hi & 0xff,\r\n (hi >>> 8) & 0xff,\r\n (hi >>> 16) & 0xff,\r\n (hi >>> 24) & 0xff\r\n ];\r\n }\r\n\r\n /**\r\n * Converts this Long to its big endian byte representation.\r\n * @returns {!Array.} Big endian byte representation\r\n */\r\n LongPrototype.toBytesBE = function() {\r\n var hi = this.high,\r\n lo = this.low;\r\n return [\r\n (hi >>> 24) & 0xff,\r\n (hi >>> 16) & 0xff,\r\n (hi >>> 8) & 0xff,\r\n hi & 0xff,\r\n (lo >>> 24) & 0xff,\r\n (lo >>> 16) & 0xff,\r\n (lo >>> 8) & 0xff,\r\n lo & 0xff\r\n ];\r\n }\r\n\r\n return Long;\r\n});\r\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/*\r\n Copyright 2013 Daniel Wirtz \r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n */\r\n\r\n/**\r\n * @license protobuf.js (c) 2013 Daniel Wirtz \r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/protobuf.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (typeof define === 'function' && define[\"amd\"])\r\n define([\"bytebuffer\"], factory);\r\n /* CommonJS */ else if (typeof require === \"function\" && typeof module === \"object\" && module && module[\"exports\"])\r\n module[\"exports\"] = factory(require(\"bytebuffer\"), true);\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"ProtoBuf\"] = factory(global[\"dcodeIO\"][\"ByteBuffer\"]);\r\n\r\n})(this, function(ByteBuffer, isCommonJS) {\r\n \"use strict\";\r\n\r\n /**\r\n * The ProtoBuf namespace.\r\n * @exports ProtoBuf\r\n * @namespace\r\n * @expose\r\n */\r\n var ProtoBuf = {};\r\n\r\n /**\r\n * @type {!function(new: ByteBuffer, ...[*])}\r\n * @expose\r\n */\r\n ProtoBuf.ByteBuffer = ByteBuffer;\r\n\r\n /**\r\n * @type {?function(new: Long, ...[*])}\r\n * @expose\r\n */\r\n ProtoBuf.Long = ByteBuffer.Long || null;\r\n\r\n /**\r\n * ProtoBuf.js version.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.VERSION = \"5.0.3\";\r\n\r\n /**\r\n * Wire types.\r\n * @type {Object.}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES = {};\r\n\r\n /**\r\n * Varint wire type.\r\n * @type {number}\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.VARINT = 0;\r\n\r\n /**\r\n * Fixed 64 bits wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.BITS64 = 1;\r\n\r\n /**\r\n * Length delimited wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.LDELIM = 2;\r\n\r\n /**\r\n * Start group wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.STARTGROUP = 3;\r\n\r\n /**\r\n * End group wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.ENDGROUP = 4;\r\n\r\n /**\r\n * Fixed 32 bits wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.BITS32 = 5;\r\n\r\n /**\r\n * Packable wire types.\r\n * @type {!Array.}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.PACKABLE_WIRE_TYPES = [\r\n ProtoBuf.WIRE_TYPES.VARINT,\r\n ProtoBuf.WIRE_TYPES.BITS64,\r\n ProtoBuf.WIRE_TYPES.BITS32\r\n ];\r\n\r\n /**\r\n * Types.\r\n * @dict\r\n * @type {!Object.}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.TYPES = {\r\n // According to the protobuf spec.\r\n \"int32\": {\r\n name: \"int32\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: 0\r\n },\r\n \"uint32\": {\r\n name: \"uint32\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: 0\r\n },\r\n \"sint32\": {\r\n name: \"sint32\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: 0\r\n },\r\n \"int64\": {\r\n name: \"int64\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.ZERO : undefined\r\n },\r\n \"uint64\": {\r\n name: \"uint64\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.UZERO : undefined\r\n },\r\n \"sint64\": {\r\n name: \"sint64\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.ZERO : undefined\r\n },\r\n \"bool\": {\r\n name: \"bool\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: false\r\n },\r\n \"double\": {\r\n name: \"double\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS64,\r\n defaultValue: 0\r\n },\r\n \"string\": {\r\n name: \"string\",\r\n wireType: ProtoBuf.WIRE_TYPES.LDELIM,\r\n defaultValue: \"\"\r\n },\r\n \"bytes\": {\r\n name: \"bytes\",\r\n wireType: ProtoBuf.WIRE_TYPES.LDELIM,\r\n defaultValue: null // overridden in the code, must be a unique instance\r\n },\r\n \"fixed32\": {\r\n name: \"fixed32\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS32,\r\n defaultValue: 0\r\n },\r\n \"sfixed32\": {\r\n name: \"sfixed32\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS32,\r\n defaultValue: 0\r\n },\r\n \"fixed64\": {\r\n name: \"fixed64\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS64,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.UZERO : undefined\r\n },\r\n \"sfixed64\": {\r\n name: \"sfixed64\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS64,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.ZERO : undefined\r\n },\r\n \"float\": {\r\n name: \"float\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS32,\r\n defaultValue: 0\r\n },\r\n \"enum\": {\r\n name: \"enum\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: 0\r\n },\r\n \"message\": {\r\n name: \"message\",\r\n wireType: ProtoBuf.WIRE_TYPES.LDELIM,\r\n defaultValue: null\r\n },\r\n \"group\": {\r\n name: \"group\",\r\n wireType: ProtoBuf.WIRE_TYPES.STARTGROUP,\r\n defaultValue: null\r\n }\r\n };\r\n\r\n /**\r\n * Valid map key types.\r\n * @type {!Array.>}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.MAP_KEY_TYPES = [\r\n ProtoBuf.TYPES[\"int32\"],\r\n ProtoBuf.TYPES[\"sint32\"],\r\n ProtoBuf.TYPES[\"sfixed32\"],\r\n ProtoBuf.TYPES[\"uint32\"],\r\n ProtoBuf.TYPES[\"fixed32\"],\r\n ProtoBuf.TYPES[\"int64\"],\r\n ProtoBuf.TYPES[\"sint64\"],\r\n ProtoBuf.TYPES[\"sfixed64\"],\r\n ProtoBuf.TYPES[\"uint64\"],\r\n ProtoBuf.TYPES[\"fixed64\"],\r\n ProtoBuf.TYPES[\"bool\"],\r\n ProtoBuf.TYPES[\"string\"],\r\n ProtoBuf.TYPES[\"bytes\"]\r\n ];\r\n\r\n /**\r\n * Minimum field id.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.ID_MIN = 1;\r\n\r\n /**\r\n * Maximum field id.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.ID_MAX = 0x1FFFFFFF;\r\n\r\n /**\r\n * If set to `true`, field names will be converted from underscore notation to camel case. Defaults to `false`.\r\n * Must be set prior to parsing.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ProtoBuf.convertFieldsToCamelCase = false;\r\n\r\n /**\r\n * By default, messages are populated with (setX, set_x) accessors for each field. This can be disabled by\r\n * setting this to `false` prior to building messages.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ProtoBuf.populateAccessors = true;\r\n\r\n /**\r\n * By default, messages are populated with default values if a field is not present on the wire. To disable\r\n * this behavior, set this setting to `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ProtoBuf.populateDefaults = true;\r\n\r\n /**\r\n * @alias ProtoBuf.Util\r\n * @expose\r\n */\r\n ProtoBuf.Util = (function() {\r\n \"use strict\";\r\n\r\n /**\r\n * ProtoBuf utilities.\r\n * @exports ProtoBuf.Util\r\n * @namespace\r\n */\r\n var Util = {};\r\n\r\n /**\r\n * Flag if running in node or not.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n */\r\n Util.IS_NODE = !!(\r\n typeof process === 'object' && process+'' === '[object process]' && !process['browser']\r\n );\r\n\r\n /**\r\n * Constructs a XMLHttpRequest object.\r\n * @return {XMLHttpRequest}\r\n * @throws {Error} If XMLHttpRequest is not supported\r\n * @expose\r\n */\r\n Util.XHR = function() {\r\n // No dependencies please, ref: http://www.quirksmode.org/js/xmlhttp.html\r\n var XMLHttpFactories = [\r\n function () {return new XMLHttpRequest()},\r\n function () {return new ActiveXObject(\"Msxml2.XMLHTTP\")},\r\n function () {return new ActiveXObject(\"Msxml3.XMLHTTP\")},\r\n function () {return new ActiveXObject(\"Microsoft.XMLHTTP\")}\r\n ];\r\n /** @type {?XMLHttpRequest} */\r\n var xhr = null;\r\n for (var i=0;i}\r\n * @expose\r\n */\r\n ProtoBuf.Lang = {\r\n\r\n // Characters always ending a statement\r\n DELIM: /[\\s\\{\\}=;:\\[\\],'\"\\(\\)<>]/g,\r\n\r\n // Field rules\r\n RULE: /^(?:required|optional|repeated|map)$/,\r\n\r\n // Field types\r\n TYPE: /^(?:double|float|int32|uint32|sint32|int64|uint64|sint64|fixed32|sfixed32|fixed64|sfixed64|bool|string|bytes)$/,\r\n\r\n // Names\r\n NAME: /^[a-zA-Z_][a-zA-Z_0-9]*$/,\r\n\r\n // Type definitions\r\n TYPEDEF: /^[a-zA-Z][a-zA-Z_0-9]*$/,\r\n\r\n // Type references\r\n TYPEREF: /^(?:\\.?[a-zA-Z_][a-zA-Z_0-9]*)(?:\\.[a-zA-Z_][a-zA-Z_0-9]*)*$/,\r\n\r\n // Fully qualified type references\r\n FQTYPEREF: /^(?:\\.[a-zA-Z_][a-zA-Z_0-9]*)+$/,\r\n\r\n // All numbers\r\n NUMBER: /^-?(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+|([0-9]*(\\.[0-9]*)?([Ee][+-]?[0-9]+)?)|inf|nan)$/,\r\n\r\n // Decimal numbers\r\n NUMBER_DEC: /^(?:[1-9][0-9]*|0)$/,\r\n\r\n // Hexadecimal numbers\r\n NUMBER_HEX: /^0[xX][0-9a-fA-F]+$/,\r\n\r\n // Octal numbers\r\n NUMBER_OCT: /^0[0-7]+$/,\r\n\r\n // Floating point numbers\r\n NUMBER_FLT: /^([0-9]*(\\.[0-9]*)?([Ee][+-]?[0-9]+)?|inf|nan)$/,\r\n\r\n // Booleans\r\n BOOL: /^(?:true|false)$/i,\r\n\r\n // Id numbers\r\n ID: /^(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+)$/,\r\n\r\n // Negative id numbers (enum values)\r\n NEGID: /^\\-?(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+)$/,\r\n\r\n // Whitespaces\r\n WHITESPACE: /\\s/,\r\n\r\n // All strings\r\n STRING: /(?:\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\")|(?:'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)')/g,\r\n\r\n // Double quoted strings\r\n STRING_DQ: /(?:\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\")/g,\r\n\r\n // Single quoted strings\r\n STRING_SQ: /(?:'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)')/g\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.DotProto\r\n * @expose\r\n */\r\n ProtoBuf.DotProto = (function(ProtoBuf, Lang) {\r\n \"use strict\";\r\n\r\n /**\r\n * Utilities to parse .proto files.\r\n * @exports ProtoBuf.DotProto\r\n * @namespace\r\n */\r\n var DotProto = {};\r\n\r\n /**\r\n * Constructs a new Tokenizer.\r\n * @exports ProtoBuf.DotProto.Tokenizer\r\n * @class prototype tokenizer\r\n * @param {string} proto Proto to tokenize\r\n * @constructor\r\n */\r\n var Tokenizer = function(proto) {\r\n\r\n /**\r\n * Source to parse.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.source = proto+\"\";\r\n\r\n /**\r\n * Current index.\r\n * @type {number}\r\n * @expose\r\n */\r\n this.index = 0;\r\n\r\n /**\r\n * Current line.\r\n * @type {number}\r\n * @expose\r\n */\r\n this.line = 1;\r\n\r\n /**\r\n * Token stack.\r\n * @type {!Array.}\r\n * @expose\r\n */\r\n this.stack = [];\r\n\r\n /**\r\n * Opening character of the current string read, if any.\r\n * @type {?string}\r\n * @private\r\n */\r\n this._stringOpen = null;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.DotProto.Tokenizer.prototype\r\n * @inner\r\n */\r\n var TokenizerPrototype = Tokenizer.prototype;\r\n\r\n /**\r\n * Reads a string beginning at the current index.\r\n * @return {string}\r\n * @private\r\n */\r\n TokenizerPrototype._readString = function() {\r\n var re = this._stringOpen === '\"'\r\n ? Lang.STRING_DQ\r\n : Lang.STRING_SQ;\r\n re.lastIndex = this.index - 1; // Include the open quote\r\n var match = re.exec(this.source);\r\n if (!match)\r\n throw Error(\"unterminated string\");\r\n this.index = re.lastIndex;\r\n this.stack.push(this._stringOpen);\r\n this._stringOpen = null;\r\n return match[1];\r\n };\r\n\r\n /**\r\n * Gets the next token and advances by one.\r\n * @return {?string} Token or `null` on EOF\r\n * @expose\r\n */\r\n TokenizerPrototype.next = function() {\r\n if (this.stack.length > 0)\r\n return this.stack.shift();\r\n if (this.index >= this.source.length)\r\n return null;\r\n if (this._stringOpen !== null)\r\n return this._readString();\r\n\r\n var repeat,\r\n prev,\r\n next;\r\n do {\r\n repeat = false;\r\n\r\n // Strip white spaces\r\n while (Lang.WHITESPACE.test(next = this.source.charAt(this.index))) {\r\n if (next === '\\n')\r\n ++this.line;\r\n if (++this.index === this.source.length)\r\n return null;\r\n }\r\n\r\n // Strip comments\r\n if (this.source.charAt(this.index) === '/') {\r\n ++this.index;\r\n if (this.source.charAt(this.index) === '/') { // Line\r\n while (this.source.charAt(++this.index) !== '\\n')\r\n if (this.index == this.source.length)\r\n return null;\r\n ++this.index;\r\n ++this.line;\r\n repeat = true;\r\n } else if ((next = this.source.charAt(this.index)) === '*') { /* Block */\r\n do {\r\n if (next === '\\n')\r\n ++this.line;\r\n if (++this.index === this.source.length)\r\n return null;\r\n prev = next;\r\n next = this.source.charAt(this.index);\r\n } while (prev !== '*' || next !== '/');\r\n ++this.index;\r\n repeat = true;\r\n } else\r\n return '/';\r\n }\r\n } while (repeat);\r\n\r\n if (this.index === this.source.length)\r\n return null;\r\n\r\n // Read the next token\r\n var end = this.index;\r\n Lang.DELIM.lastIndex = 0;\r\n var delim = Lang.DELIM.test(this.source.charAt(end++));\r\n if (!delim)\r\n while(end < this.source.length && !Lang.DELIM.test(this.source.charAt(end)))\r\n ++end;\r\n var token = this.source.substring(this.index, this.index = end);\r\n if (token === '\"' || token === \"'\")\r\n this._stringOpen = token;\r\n return token;\r\n };\r\n\r\n /**\r\n * Peeks for the next token.\r\n * @return {?string} Token or `null` on EOF\r\n * @expose\r\n */\r\n TokenizerPrototype.peek = function() {\r\n if (this.stack.length === 0) {\r\n var token = this.next();\r\n if (token === null)\r\n return null;\r\n this.stack.push(token);\r\n }\r\n return this.stack[0];\r\n };\r\n\r\n /**\r\n * Skips a specific token and throws if it differs.\r\n * @param {string} expected Expected token\r\n * @throws {Error} If the actual token differs\r\n */\r\n TokenizerPrototype.skip = function(expected) {\r\n var actual = this.next();\r\n if (actual !== expected)\r\n throw Error(\"illegal '\"+actual+\"', '\"+expected+\"' expected\");\r\n };\r\n\r\n /**\r\n * Omits an optional token.\r\n * @param {string} expected Expected optional token\r\n * @returns {boolean} `true` if the token exists\r\n */\r\n TokenizerPrototype.omit = function(expected) {\r\n if (this.peek() === expected) {\r\n this.next();\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n /**\r\n * Returns a string representation of this object.\r\n * @return {string} String representation as of \"Tokenizer(index/length)\"\r\n * @expose\r\n */\r\n TokenizerPrototype.toString = function() {\r\n return \"Tokenizer (\"+this.index+\"/\"+this.source.length+\" at line \"+this.line+\")\";\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.DotProto.Tokenizer\r\n * @expose\r\n */\r\n DotProto.Tokenizer = Tokenizer;\r\n\r\n /**\r\n * Constructs a new Parser.\r\n * @exports ProtoBuf.DotProto.Parser\r\n * @class prototype parser\r\n * @param {string} source Source\r\n * @constructor\r\n */\r\n var Parser = function(source) {\r\n\r\n /**\r\n * Tokenizer.\r\n * @type {!ProtoBuf.DotProto.Tokenizer}\r\n * @expose\r\n */\r\n this.tn = new Tokenizer(source);\r\n\r\n /**\r\n * Whether parsing proto3 or not.\r\n * @type {boolean}\r\n */\r\n this.proto3 = false;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.DotProto.Parser.prototype\r\n * @inner\r\n */\r\n var ParserPrototype = Parser.prototype;\r\n\r\n /**\r\n * Parses the source.\r\n * @returns {!Object}\r\n * @throws {Error} If the source cannot be parsed\r\n * @expose\r\n */\r\n ParserPrototype.parse = function() {\r\n var topLevel = {\r\n \"name\": \"[ROOT]\", // temporary\r\n \"package\": null,\r\n \"messages\": [],\r\n \"enums\": [],\r\n \"imports\": [],\r\n \"options\": {},\r\n \"services\": []\r\n // \"syntax\": undefined\r\n };\r\n var token,\r\n head = true,\r\n weak;\r\n try {\r\n while (token = this.tn.next()) {\r\n switch (token) {\r\n case 'package':\r\n if (!head || topLevel[\"package\"] !== null)\r\n throw Error(\"unexpected 'package'\");\r\n token = this.tn.next();\r\n if (!Lang.TYPEREF.test(token))\r\n throw Error(\"illegal package name: \" + token);\r\n this.tn.skip(\";\");\r\n topLevel[\"package\"] = token;\r\n break;\r\n case 'import':\r\n if (!head)\r\n throw Error(\"unexpected 'import'\");\r\n token = this.tn.peek();\r\n if (token === \"public\" || (weak = token === \"weak\")) // token ignored\r\n this.tn.next();\r\n token = this._readString();\r\n this.tn.skip(\";\");\r\n if (!weak) // import ignored\r\n topLevel[\"imports\"].push(token);\r\n break;\r\n case 'syntax':\r\n if (!head)\r\n throw Error(\"unexpected 'syntax'\");\r\n this.tn.skip(\"=\");\r\n if ((topLevel[\"syntax\"] = this._readString()) === \"proto3\")\r\n this.proto3 = true;\r\n this.tn.skip(\";\");\r\n break;\r\n case 'message':\r\n this._parseMessage(topLevel, null);\r\n head = false;\r\n break;\r\n case 'enum':\r\n this._parseEnum(topLevel);\r\n head = false;\r\n break;\r\n case 'option':\r\n this._parseOption(topLevel);\r\n break;\r\n case 'service':\r\n this._parseService(topLevel);\r\n break;\r\n case 'extend':\r\n this._parseExtend(topLevel);\r\n break;\r\n default:\r\n throw Error(\"unexpected '\" + token + \"'\");\r\n }\r\n }\r\n } catch (e) {\r\n e.message = \"Parse error at line \"+this.tn.line+\": \" + e.message;\r\n throw e;\r\n }\r\n delete topLevel[\"name\"];\r\n return topLevel;\r\n };\r\n\r\n /**\r\n * Parses the specified source.\r\n * @returns {!Object}\r\n * @throws {Error} If the source cannot be parsed\r\n * @expose\r\n */\r\n Parser.parse = function(source) {\r\n return new Parser(source).parse();\r\n };\r\n\r\n // ----- Conversion ------\r\n\r\n /**\r\n * Converts a numerical string to an id.\r\n * @param {string} value\r\n * @param {boolean=} mayBeNegative\r\n * @returns {number}\r\n * @inner\r\n */\r\n function mkId(value, mayBeNegative) {\r\n var id = -1,\r\n sign = 1;\r\n if (value.charAt(0) == '-') {\r\n sign = -1;\r\n value = value.substring(1);\r\n }\r\n if (Lang.NUMBER_DEC.test(value))\r\n id = parseInt(value);\r\n else if (Lang.NUMBER_HEX.test(value))\r\n id = parseInt(value.substring(2), 16);\r\n else if (Lang.NUMBER_OCT.test(value))\r\n id = parseInt(value.substring(1), 8);\r\n else\r\n throw Error(\"illegal id value: \" + (sign < 0 ? '-' : '') + value);\r\n id = (sign*id)|0; // Force to 32bit\r\n if (!mayBeNegative && id < 0)\r\n throw Error(\"illegal id value: \" + (sign < 0 ? '-' : '') + value);\r\n return id;\r\n }\r\n\r\n /**\r\n * Converts a numerical string to a number.\r\n * @param {string} val\r\n * @returns {number}\r\n * @inner\r\n */\r\n function mkNumber(val) {\r\n var sign = 1;\r\n if (val.charAt(0) == '-') {\r\n sign = -1;\r\n val = val.substring(1);\r\n }\r\n if (Lang.NUMBER_DEC.test(val))\r\n return sign * parseInt(val, 10);\r\n else if (Lang.NUMBER_HEX.test(val))\r\n return sign * parseInt(val.substring(2), 16);\r\n else if (Lang.NUMBER_OCT.test(val))\r\n return sign * parseInt(val.substring(1), 8);\r\n else if (val === 'inf')\r\n return sign * Infinity;\r\n else if (val === 'nan')\r\n return NaN;\r\n else if (Lang.NUMBER_FLT.test(val))\r\n return sign * parseFloat(val);\r\n throw Error(\"illegal number value: \" + (sign < 0 ? '-' : '') + val);\r\n }\r\n\r\n // ----- Reading ------\r\n\r\n /**\r\n * Reads a string.\r\n * @returns {string}\r\n * @private\r\n */\r\n ParserPrototype._readString = function() {\r\n var value = \"\",\r\n token,\r\n delim;\r\n do {\r\n delim = this.tn.next();\r\n if (delim !== \"'\" && delim !== '\"')\r\n throw Error(\"illegal string delimiter: \"+delim);\r\n value += this.tn.next();\r\n this.tn.skip(delim);\r\n token = this.tn.peek();\r\n } while (token === '\"' || token === '\"'); // multi line?\r\n return value;\r\n };\r\n\r\n /**\r\n * Reads a value.\r\n * @param {boolean=} mayBeTypeRef\r\n * @returns {number|boolean|string}\r\n * @private\r\n */\r\n ParserPrototype._readValue = function(mayBeTypeRef) {\r\n var token = this.tn.peek(),\r\n value;\r\n if (token === '\"' || token === \"'\")\r\n return this._readString();\r\n this.tn.next();\r\n if (Lang.NUMBER.test(token))\r\n return mkNumber(token);\r\n if (Lang.BOOL.test(token))\r\n return (token.toLowerCase() === 'true');\r\n if (mayBeTypeRef && Lang.TYPEREF.test(token))\r\n return token;\r\n throw Error(\"illegal value: \"+token);\r\n\r\n };\r\n\r\n // ----- Parsing constructs -----\r\n\r\n /**\r\n * Parses a namespace option.\r\n * @param {!Object} parent Parent definition\r\n * @param {boolean=} isList\r\n * @private\r\n */\r\n ParserPrototype._parseOption = function(parent, isList) {\r\n var token = this.tn.next(),\r\n custom = false;\r\n if (token === '(') {\r\n custom = true;\r\n token = this.tn.next();\r\n }\r\n if (!Lang.TYPEREF.test(token))\r\n // we can allow options of the form google.protobuf.* since they will just get ignored anyways\r\n // if (!/google\\.protobuf\\./.test(token)) // FIXME: Why should that not be a valid typeref?\r\n throw Error(\"illegal option name: \"+token);\r\n var name = token;\r\n if (custom) { // (my_method_option).foo, (my_method_option), some_method_option, (foo.my_option).bar\r\n this.tn.skip(')');\r\n name = '('+name+')';\r\n token = this.tn.peek();\r\n if (Lang.FQTYPEREF.test(token)) {\r\n name += token;\r\n this.tn.next();\r\n }\r\n }\r\n this.tn.skip('=');\r\n this._parseOptionValue(parent, name);\r\n if (!isList)\r\n this.tn.skip(\";\");\r\n };\r\n\r\n /**\r\n * Sets an option on the specified options object.\r\n * @param {!Object.} options\r\n * @param {string} name\r\n * @param {string|number|boolean} value\r\n * @inner\r\n */\r\n function setOption(options, name, value) {\r\n if (typeof options[name] === 'undefined')\r\n options[name] = value;\r\n else {\r\n if (!Array.isArray(options[name]))\r\n options[name] = [ options[name] ];\r\n options[name].push(value);\r\n }\r\n }\r\n\r\n /**\r\n * Parses an option value.\r\n * @param {!Object} parent\r\n * @param {string} name\r\n * @private\r\n */\r\n ParserPrototype._parseOptionValue = function(parent, name) {\r\n var token = this.tn.peek();\r\n if (token !== '{') { // Plain value\r\n setOption(parent[\"options\"], name, this._readValue(true));\r\n } else { // Aggregate options\r\n this.tn.skip(\"{\");\r\n while ((token = this.tn.next()) !== '}') {\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal option name: \" + name + \".\" + token);\r\n if (this.tn.omit(\":\"))\r\n setOption(parent[\"options\"], name + \".\" + token, this._readValue(true));\r\n else\r\n this._parseOptionValue(parent, name + \".\" + token);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Parses a service definition.\r\n * @param {!Object} parent Parent definition\r\n * @private\r\n */\r\n ParserPrototype._parseService = function(parent) {\r\n var token = this.tn.next();\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal service name at line \"+this.tn.line+\": \"+token);\r\n var name = token;\r\n var svc = {\r\n \"name\": name,\r\n \"rpc\": {},\r\n \"options\": {}\r\n };\r\n this.tn.skip(\"{\");\r\n while ((token = this.tn.next()) !== '}') {\r\n if (token === \"option\")\r\n this._parseOption(svc);\r\n else if (token === 'rpc')\r\n this._parseServiceRPC(svc);\r\n else\r\n throw Error(\"illegal service token: \"+token);\r\n }\r\n this.tn.omit(\";\");\r\n parent[\"services\"].push(svc);\r\n };\r\n\r\n /**\r\n * Parses a RPC service definition of the form ['rpc', name, (request), 'returns', (response)].\r\n * @param {!Object} svc Service definition\r\n * @private\r\n */\r\n ParserPrototype._parseServiceRPC = function(svc) {\r\n var type = \"rpc\",\r\n token = this.tn.next();\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal rpc service method name: \"+token);\r\n var name = token;\r\n var method = {\r\n \"request\": null,\r\n \"response\": null,\r\n \"request_stream\": false,\r\n \"response_stream\": false,\r\n \"options\": {}\r\n };\r\n this.tn.skip(\"(\");\r\n token = this.tn.next();\r\n if (token.toLowerCase() === \"stream\") {\r\n method[\"request_stream\"] = true;\r\n token = this.tn.next();\r\n }\r\n if (!Lang.TYPEREF.test(token))\r\n throw Error(\"illegal rpc service request type: \"+token);\r\n method[\"request\"] = token;\r\n this.tn.skip(\")\");\r\n token = this.tn.next();\r\n if (token.toLowerCase() !== \"returns\")\r\n throw Error(\"illegal rpc service request type delimiter: \"+token);\r\n this.tn.skip(\"(\");\r\n token = this.tn.next();\r\n if (token.toLowerCase() === \"stream\") {\r\n method[\"response_stream\"] = true;\r\n token = this.tn.next();\r\n }\r\n method[\"response\"] = token;\r\n this.tn.skip(\")\");\r\n token = this.tn.peek();\r\n if (token === '{') {\r\n this.tn.next();\r\n while ((token = this.tn.next()) !== '}') {\r\n if (token === 'option')\r\n this._parseOption(method);\r\n else\r\n throw Error(\"illegal rpc service token: \" + token);\r\n }\r\n this.tn.omit(\";\");\r\n } else\r\n this.tn.skip(\";\");\r\n if (typeof svc[type] === 'undefined')\r\n svc[type] = {};\r\n svc[type][name] = method;\r\n };\r\n\r\n /**\r\n * Parses a message definition.\r\n * @param {!Object} parent Parent definition\r\n * @param {!Object=} fld Field definition if this is a group\r\n * @returns {!Object}\r\n * @private\r\n */\r\n ParserPrototype._parseMessage = function(parent, fld) {\r\n var isGroup = !!fld,\r\n token = this.tn.next();\r\n var msg = {\r\n \"name\": \"\",\r\n \"fields\": [],\r\n \"enums\": [],\r\n \"messages\": [],\r\n \"options\": {},\r\n \"services\": [],\r\n \"oneofs\": {}\r\n // \"extensions\": undefined\r\n };\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal \"+(isGroup ? \"group\" : \"message\")+\" name: \"+token);\r\n msg[\"name\"] = token;\r\n if (isGroup) {\r\n this.tn.skip(\"=\");\r\n fld[\"id\"] = mkId(this.tn.next());\r\n msg[\"isGroup\"] = true;\r\n }\r\n token = this.tn.peek();\r\n if (token === '[' && fld)\r\n this._parseFieldOptions(fld);\r\n this.tn.skip(\"{\");\r\n while ((token = this.tn.next()) !== '}') {\r\n if (Lang.RULE.test(token))\r\n this._parseMessageField(msg, token);\r\n else if (token === \"oneof\")\r\n this._parseMessageOneOf(msg);\r\n else if (token === \"enum\")\r\n this._parseEnum(msg);\r\n else if (token === \"message\")\r\n this._parseMessage(msg);\r\n else if (token === \"option\")\r\n this._parseOption(msg);\r\n else if (token === \"service\")\r\n this._parseService(msg);\r\n else if (token === \"extensions\")\r\n if (msg.hasOwnProperty(\"extensions\")) {\r\n msg[\"extensions\"] = msg[\"extensions\"].concat(this._parseExtensionRanges())\r\n } else {\r\n msg[\"extensions\"] = this._parseExtensionRanges();\r\n }\r\n else if (token === \"reserved\")\r\n this._parseIgnored(); // TODO\r\n else if (token === \"extend\")\r\n this._parseExtend(msg);\r\n else if (Lang.TYPEREF.test(token)) {\r\n if (!this.proto3)\r\n throw Error(\"illegal field rule: \"+token);\r\n this._parseMessageField(msg, \"optional\", token);\r\n } else\r\n throw Error(\"illegal message token: \"+token);\r\n }\r\n this.tn.omit(\";\");\r\n parent[\"messages\"].push(msg);\r\n return msg;\r\n };\r\n\r\n /**\r\n * Parses an ignored statement.\r\n * @private\r\n */\r\n ParserPrototype._parseIgnored = function() {\r\n while (this.tn.peek() !== ';')\r\n this.tn.next();\r\n this.tn.skip(\";\");\r\n };\r\n\r\n /**\r\n * Parses a message field.\r\n * @param {!Object} msg Message definition\r\n * @param {string} rule Field rule\r\n * @param {string=} type Field type if already known (never known for maps)\r\n * @returns {!Object} Field descriptor\r\n * @private\r\n */\r\n ParserPrototype._parseMessageField = function(msg, rule, type) {\r\n if (!Lang.RULE.test(rule))\r\n throw Error(\"illegal message field rule: \"+rule);\r\n var fld = {\r\n \"rule\": rule,\r\n \"type\": \"\",\r\n \"name\": \"\",\r\n \"options\": {},\r\n \"id\": 0\r\n };\r\n var token;\r\n if (rule === \"map\") {\r\n\r\n if (type)\r\n throw Error(\"illegal type: \" + type);\r\n this.tn.skip('<');\r\n token = this.tn.next();\r\n if (!Lang.TYPE.test(token) && !Lang.TYPEREF.test(token))\r\n throw Error(\"illegal message field type: \" + token);\r\n fld[\"keytype\"] = token;\r\n this.tn.skip(',');\r\n token = this.tn.next();\r\n if (!Lang.TYPE.test(token) && !Lang.TYPEREF.test(token))\r\n throw Error(\"illegal message field: \" + token);\r\n fld[\"type\"] = token;\r\n this.tn.skip('>');\r\n token = this.tn.next();\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal message field name: \" + token);\r\n fld[\"name\"] = token;\r\n this.tn.skip(\"=\");\r\n fld[\"id\"] = mkId(this.tn.next());\r\n token = this.tn.peek();\r\n if (token === '[')\r\n this._parseFieldOptions(fld);\r\n this.tn.skip(\";\");\r\n\r\n } else {\r\n\r\n type = typeof type !== 'undefined' ? type : this.tn.next();\r\n\r\n if (type === \"group\") {\r\n\r\n // \"A [legacy] group simply combines a nested message type and a field into a single declaration. In your\r\n // code, you can treat this message just as if it had a Result type field called result (the latter name is\r\n // converted to lower-case so that it does not conflict with the former).\"\r\n var grp = this._parseMessage(msg, fld);\r\n if (!/^[A-Z]/.test(grp[\"name\"]))\r\n throw Error('illegal group name: '+grp[\"name\"]);\r\n fld[\"type\"] = grp[\"name\"];\r\n fld[\"name\"] = grp[\"name\"].toLowerCase();\r\n this.tn.omit(\";\");\r\n\r\n } else {\r\n\r\n if (!Lang.TYPE.test(type) && !Lang.TYPEREF.test(type))\r\n throw Error(\"illegal message field type: \" + type);\r\n fld[\"type\"] = type;\r\n token = this.tn.next();\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal message field name: \" + token);\r\n fld[\"name\"] = token;\r\n this.tn.skip(\"=\");\r\n fld[\"id\"] = mkId(this.tn.next());\r\n token = this.tn.peek();\r\n if (token === \"[\")\r\n this._parseFieldOptions(fld);\r\n this.tn.skip(\";\");\r\n\r\n }\r\n }\r\n msg[\"fields\"].push(fld);\r\n return fld;\r\n };\r\n\r\n /**\r\n * Parses a message oneof.\r\n * @param {!Object} msg Message definition\r\n * @private\r\n */\r\n ParserPrototype._parseMessageOneOf = function(msg) {\r\n var token = this.tn.next();\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal oneof name: \"+token);\r\n var name = token,\r\n fld;\r\n var fields = [];\r\n this.tn.skip(\"{\");\r\n while ((token = this.tn.next()) !== \"}\") {\r\n fld = this._parseMessageField(msg, \"optional\", token);\r\n fld[\"oneof\"] = name;\r\n fields.push(fld[\"id\"]);\r\n }\r\n this.tn.omit(\";\");\r\n msg[\"oneofs\"][name] = fields;\r\n };\r\n\r\n /**\r\n * Parses a set of field option definitions.\r\n * @param {!Object} fld Field definition\r\n * @private\r\n */\r\n ParserPrototype._parseFieldOptions = function(fld) {\r\n this.tn.skip(\"[\");\r\n var token,\r\n first = true;\r\n while ((token = this.tn.peek()) !== ']') {\r\n if (!first)\r\n this.tn.skip(\",\");\r\n this._parseOption(fld, true);\r\n first = false;\r\n }\r\n this.tn.next();\r\n };\r\n\r\n /**\r\n * Parses an enum.\r\n * @param {!Object} msg Message definition\r\n * @private\r\n */\r\n ParserPrototype._parseEnum = function(msg) {\r\n var enm = {\r\n \"name\": \"\",\r\n \"values\": [],\r\n \"options\": {}\r\n };\r\n var token = this.tn.next();\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal name: \"+token);\r\n enm[\"name\"] = token;\r\n this.tn.skip(\"{\");\r\n while ((token = this.tn.next()) !== '}') {\r\n if (token === \"option\")\r\n this._parseOption(enm);\r\n else {\r\n if (!Lang.NAME.test(token))\r\n throw Error(\"illegal name: \"+token);\r\n this.tn.skip(\"=\");\r\n var val = {\r\n \"name\": token,\r\n \"id\": mkId(this.tn.next(), true)\r\n };\r\n token = this.tn.peek();\r\n if (token === \"[\")\r\n this._parseFieldOptions({ \"options\": {} });\r\n this.tn.skip(\";\");\r\n enm[\"values\"].push(val);\r\n }\r\n }\r\n this.tn.omit(\";\");\r\n msg[\"enums\"].push(enm);\r\n };\r\n\r\n /**\r\n * Parses extension / reserved ranges.\r\n * @returns {!Array.>}\r\n * @private\r\n */\r\n ParserPrototype._parseExtensionRanges = function() {\r\n var ranges = [];\r\n var token,\r\n range,\r\n value;\r\n do {\r\n range = [];\r\n while (true) {\r\n token = this.tn.next();\r\n switch (token) {\r\n case \"min\":\r\n value = ProtoBuf.ID_MIN;\r\n break;\r\n case \"max\":\r\n value = ProtoBuf.ID_MAX;\r\n break;\r\n default:\r\n value = mkNumber(token);\r\n break;\r\n }\r\n range.push(value);\r\n if (range.length === 2)\r\n break;\r\n if (this.tn.peek() !== \"to\") {\r\n range.push(value);\r\n break;\r\n }\r\n this.tn.next();\r\n }\r\n ranges.push(range);\r\n } while (this.tn.omit(\",\"));\r\n this.tn.skip(\";\");\r\n return ranges;\r\n };\r\n\r\n /**\r\n * Parses an extend block.\r\n * @param {!Object} parent Parent object\r\n * @private\r\n */\r\n ParserPrototype._parseExtend = function(parent) {\r\n var token = this.tn.next();\r\n if (!Lang.TYPEREF.test(token))\r\n throw Error(\"illegal extend reference: \"+token);\r\n var ext = {\r\n \"ref\": token,\r\n \"fields\": []\r\n };\r\n this.tn.skip(\"{\");\r\n while ((token = this.tn.next()) !== '}') {\r\n if (Lang.RULE.test(token))\r\n this._parseMessageField(ext, token);\r\n else if (Lang.TYPEREF.test(token)) {\r\n if (!this.proto3)\r\n throw Error(\"illegal field rule: \"+token);\r\n this._parseMessageField(ext, \"optional\", token);\r\n } else\r\n throw Error(\"illegal extend token: \"+token);\r\n }\r\n this.tn.omit(\";\");\r\n parent[\"messages\"].push(ext);\r\n return ext;\r\n };\r\n\r\n // ----- General -----\r\n\r\n /**\r\n * Returns a string representation of this parser.\r\n * @returns {string}\r\n */\r\n ParserPrototype.toString = function() {\r\n return \"Parser at line \"+this.tn.line;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.DotProto.Parser\r\n * @expose\r\n */\r\n DotProto.Parser = Parser;\r\n\r\n return DotProto;\r\n\r\n })(ProtoBuf, ProtoBuf.Lang);\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect\r\n * @expose\r\n */\r\n ProtoBuf.Reflect = (function(ProtoBuf) {\r\n \"use strict\";\r\n\r\n /**\r\n * Reflection types.\r\n * @exports ProtoBuf.Reflect\r\n * @namespace\r\n */\r\n var Reflect = {};\r\n\r\n /**\r\n * Constructs a Reflect base class.\r\n * @exports ProtoBuf.Reflect.T\r\n * @constructor\r\n * @abstract\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {?ProtoBuf.Reflect.T} parent Parent object\r\n * @param {string} name Object name\r\n */\r\n var T = function(builder, parent, name) {\r\n\r\n /**\r\n * Builder reference.\r\n * @type {!ProtoBuf.Builder}\r\n * @expose\r\n */\r\n this.builder = builder;\r\n\r\n /**\r\n * Parent object.\r\n * @type {?ProtoBuf.Reflect.T}\r\n * @expose\r\n */\r\n this.parent = parent;\r\n\r\n /**\r\n * Object name in namespace.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.name = name;\r\n\r\n /**\r\n * Fully qualified class name\r\n * @type {string}\r\n * @expose\r\n */\r\n this.className;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.T.prototype\r\n * @inner\r\n */\r\n var TPrototype = T.prototype;\r\n\r\n /**\r\n * Returns the fully qualified name of this object.\r\n * @returns {string} Fully qualified name as of \".PATH.TO.THIS\"\r\n * @expose\r\n */\r\n TPrototype.fqn = function() {\r\n var name = this.name,\r\n ptr = this;\r\n do {\r\n ptr = ptr.parent;\r\n if (ptr == null)\r\n break;\r\n name = ptr.name+\".\"+name;\r\n } while (true);\r\n return name;\r\n };\r\n\r\n /**\r\n * Returns a string representation of this Reflect object (its fully qualified name).\r\n * @param {boolean=} includeClass Set to true to include the class name. Defaults to false.\r\n * @return String representation\r\n * @expose\r\n */\r\n TPrototype.toString = function(includeClass) {\r\n return (includeClass ? this.className + \" \" : \"\") + this.fqn();\r\n };\r\n\r\n /**\r\n * Builds this type.\r\n * @throws {Error} If this type cannot be built directly\r\n * @expose\r\n */\r\n TPrototype.build = function() {\r\n throw Error(this.toString(true)+\" cannot be built directly\");\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.T\r\n * @expose\r\n */\r\n Reflect.T = T;\r\n\r\n /**\r\n * Constructs a new Namespace.\r\n * @exports ProtoBuf.Reflect.Namespace\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {?ProtoBuf.Reflect.Namespace} parent Namespace parent\r\n * @param {string} name Namespace name\r\n * @param {Object.=} options Namespace options\r\n * @param {string?} syntax The syntax level of this definition (e.g., proto3)\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.T\r\n */\r\n var Namespace = function(builder, parent, name, options, syntax) {\r\n T.call(this, builder, parent, name);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Namespace\";\r\n\r\n /**\r\n * Children inside the namespace.\r\n * @type {!Array.}\r\n */\r\n this.children = [];\r\n\r\n /**\r\n * Options.\r\n * @type {!Object.}\r\n */\r\n this.options = options || {};\r\n\r\n /**\r\n * Syntax level (e.g., proto2 or proto3).\r\n * @type {!string}\r\n */\r\n this.syntax = syntax || \"proto2\";\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Namespace.prototype\r\n * @inner\r\n */\r\n var NamespacePrototype = Namespace.prototype = Object.create(T.prototype);\r\n\r\n /**\r\n * Returns an array of the namespace's children.\r\n * @param {ProtoBuf.Reflect.T=} type Filter type (returns instances of this type only). Defaults to null (all children).\r\n * @return {Array.}\r\n * @expose\r\n */\r\n NamespacePrototype.getChildren = function(type) {\r\n type = type || null;\r\n if (type == null)\r\n return this.children.slice();\r\n var children = [];\r\n for (var i=0, k=this.children.length; i} qn Qualified name to resolve\r\n * @param {boolean=} excludeNonNamespace Excludes non-namespace types, defaults to `false`\r\n * @return {?ProtoBuf.Reflect.Namespace} The resolved type or null if not found\r\n * @expose\r\n */\r\n NamespacePrototype.resolve = function(qn, excludeNonNamespace) {\r\n var part = typeof qn === 'string' ? qn.split(\".\") : qn,\r\n ptr = this,\r\n i = 0;\r\n if (part[i] === \"\") { // Fully qualified name, e.g. \".My.Message'\r\n while (ptr.parent !== null)\r\n ptr = ptr.parent;\r\n i++;\r\n }\r\n var child;\r\n do {\r\n do {\r\n if (!(ptr instanceof Reflect.Namespace)) {\r\n ptr = null;\r\n break;\r\n }\r\n child = ptr.getChild(part[i]);\r\n if (!child || !(child instanceof Reflect.T) || (excludeNonNamespace && !(child instanceof Reflect.Namespace))) {\r\n ptr = null;\r\n break;\r\n }\r\n ptr = child; i++;\r\n } while (i < part.length);\r\n if (ptr != null)\r\n break; // Found\r\n // Else search the parent\r\n if (this.parent !== null)\r\n return this.parent.resolve(qn, excludeNonNamespace);\r\n } while (ptr != null);\r\n return ptr;\r\n };\r\n\r\n /**\r\n * Determines the shortest qualified name of the specified type, if any, relative to this namespace.\r\n * @param {!ProtoBuf.Reflect.T} t Reflection type\r\n * @returns {string} The shortest qualified name or, if there is none, the fqn\r\n * @expose\r\n */\r\n NamespacePrototype.qn = function(t) {\r\n var part = [], ptr = t;\r\n do {\r\n part.unshift(ptr.name);\r\n ptr = ptr.parent;\r\n } while (ptr !== null);\r\n for (var len=1; len <= part.length; len++) {\r\n var qn = part.slice(part.length-len);\r\n if (t === this.resolve(qn, t instanceof Reflect.Namespace))\r\n return qn.join(\".\");\r\n }\r\n return t.fqn();\r\n };\r\n\r\n /**\r\n * Builds the namespace and returns the runtime counterpart.\r\n * @return {Object.} Runtime namespace\r\n * @expose\r\n */\r\n NamespacePrototype.build = function() {\r\n /** @dict */\r\n var ns = {};\r\n var children = this.children;\r\n for (var i=0, k=children.length, child; i}\r\n */\r\n NamespacePrototype.buildOpt = function() {\r\n var opt = {},\r\n keys = Object.keys(this.options);\r\n for (var i=0, k=keys.length; i}null} Option value or NULL if there is no such option\r\n */\r\n NamespacePrototype.getOption = function(name) {\r\n if (typeof name === 'undefined')\r\n return this.options;\r\n return typeof this.options[name] !== 'undefined' ? this.options[name] : null;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Namespace\r\n * @expose\r\n */\r\n Reflect.Namespace = Namespace;\r\n\r\n /**\r\n * Constructs a new Element implementation that checks and converts values for a\r\n * particular field type, as appropriate.\r\n *\r\n * An Element represents a single value: either the value of a singular field,\r\n * or a value contained in one entry of a repeated field or map field. This\r\n * class does not implement these higher-level concepts; it only encapsulates\r\n * the low-level typechecking and conversion.\r\n *\r\n * @exports ProtoBuf.Reflect.Element\r\n * @param {{name: string, wireType: number}} type Resolved data type\r\n * @param {ProtoBuf.Reflect.T|null} resolvedType Resolved type, if relevant\r\n * (e.g. submessage field).\r\n * @param {boolean} isMapKey Is this element a Map key? The value will be\r\n * converted to string form if so.\r\n * @param {string} syntax Syntax level of defining message type, e.g.,\r\n * proto2 or proto3.\r\n * @param {string} name Name of the field containing this element (for error\r\n * messages)\r\n * @constructor\r\n */\r\n var Element = function(type, resolvedType, isMapKey, syntax, name) {\r\n\r\n /**\r\n * Element type, as a string (e.g., int32).\r\n * @type {{name: string, wireType: number}}\r\n */\r\n this.type = type;\r\n\r\n /**\r\n * Element type reference to submessage or enum definition, if needed.\r\n * @type {ProtoBuf.Reflect.T|null}\r\n */\r\n this.resolvedType = resolvedType;\r\n\r\n /**\r\n * Element is a map key.\r\n * @type {boolean}\r\n */\r\n this.isMapKey = isMapKey;\r\n\r\n /**\r\n * Syntax level of defining message type, e.g., proto2 or proto3.\r\n * @type {string}\r\n */\r\n this.syntax = syntax;\r\n\r\n /**\r\n * Name of the field containing this element (for error messages)\r\n * @type {string}\r\n */\r\n this.name = name;\r\n\r\n if (isMapKey && ProtoBuf.MAP_KEY_TYPES.indexOf(type) < 0)\r\n throw Error(\"Invalid map key type: \" + type.name);\r\n };\r\n\r\n var ElementPrototype = Element.prototype;\r\n\r\n /**\r\n * Obtains a (new) default value for the specified type.\r\n * @param type {string|{name: string, wireType: number}} Field type\r\n * @returns {*} Default value\r\n * @inner\r\n */\r\n function mkDefault(type) {\r\n if (typeof type === 'string')\r\n type = ProtoBuf.TYPES[type];\r\n if (typeof type.defaultValue === 'undefined')\r\n throw Error(\"default value for type \"+type.name+\" is not supported\");\r\n if (type == ProtoBuf.TYPES[\"bytes\"])\r\n return new ByteBuffer(0);\r\n return type.defaultValue;\r\n }\r\n\r\n /**\r\n * Returns the default value for this field in proto3.\r\n * @function\r\n * @param type {string|{name: string, wireType: number}} the field type\r\n * @returns {*} Default value\r\n */\r\n Element.defaultFieldValue = mkDefault;\r\n\r\n /**\r\n * Makes a Long from a value.\r\n * @param {{low: number, high: number, unsigned: boolean}|string|number} value Value\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to reuse it from Long-like objects or to signed for\r\n * strings and numbers\r\n * @returns {!Long}\r\n * @throws {Error} If the value cannot be converted to a Long\r\n * @inner\r\n */\r\n function mkLong(value, unsigned) {\r\n if (value && typeof value.low === 'number' && typeof value.high === 'number' && typeof value.unsigned === 'boolean'\r\n && value.low === value.low && value.high === value.high)\r\n return new ProtoBuf.Long(value.low, value.high, typeof unsigned === 'undefined' ? value.unsigned : unsigned);\r\n if (typeof value === 'string')\r\n return ProtoBuf.Long.fromString(value, unsigned || false, 10);\r\n if (typeof value === 'number')\r\n return ProtoBuf.Long.fromNumber(value, unsigned || false);\r\n throw Error(\"not convertible to Long\");\r\n }\r\n\r\n ElementPrototype.toString = function() {\r\n return (this.name || '') + (this.isMapKey ? 'map' : 'value') + ' element';\r\n }\r\n\r\n /**\r\n * Checks if the given value can be set for an element of this type (singular\r\n * field or one element of a repeated field or map).\r\n * @param {*} value Value to check\r\n * @return {*} Verified, maybe adjusted, value\r\n * @throws {Error} If the value cannot be verified for this element slot\r\n * @expose\r\n */\r\n ElementPrototype.verifyValue = function(value) {\r\n var self = this;\r\n function fail(val, msg) {\r\n throw Error(\"Illegal value for \"+self.toString(true)+\" of type \"+self.type.name+\": \"+val+\" (\"+msg+\")\");\r\n }\r\n switch (this.type) {\r\n // Signed 32bit\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n // Account for !NaN: value === value\r\n if (typeof value !== 'number' || (value === value && value % 1 !== 0))\r\n fail(typeof value, \"not an integer\");\r\n return value > 4294967295 ? value | 0 : value;\r\n\r\n // Unsigned 32bit\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n if (typeof value !== 'number' || (value === value && value % 1 !== 0))\r\n fail(typeof value, \"not an integer\");\r\n return value < 0 ? value >>> 0 : value;\r\n\r\n // Signed 64bit\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n case ProtoBuf.TYPES[\"sfixed64\"]: {\r\n if (ProtoBuf.Long)\r\n try {\r\n return mkLong(value, false);\r\n } catch (e) {\r\n fail(typeof value, e.message);\r\n }\r\n else\r\n fail(typeof value, \"requires Long.js\");\r\n }\r\n\r\n // Unsigned 64bit\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n case ProtoBuf.TYPES[\"fixed64\"]: {\r\n if (ProtoBuf.Long)\r\n try {\r\n return mkLong(value, true);\r\n } catch (e) {\r\n fail(typeof value, e.message);\r\n }\r\n else\r\n fail(typeof value, \"requires Long.js\");\r\n }\r\n\r\n // Bool\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n if (typeof value !== 'boolean')\r\n fail(typeof value, \"not a boolean\");\r\n return value;\r\n\r\n // Float\r\n case ProtoBuf.TYPES[\"float\"]:\r\n case ProtoBuf.TYPES[\"double\"]:\r\n if (typeof value !== 'number')\r\n fail(typeof value, \"not a number\");\r\n return value;\r\n\r\n // Length-delimited string\r\n case ProtoBuf.TYPES[\"string\"]:\r\n if (typeof value !== 'string' && !(value && value instanceof String))\r\n fail(typeof value, \"not a string\");\r\n return \"\"+value; // Convert String object to string\r\n\r\n // Length-delimited bytes\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n if (ByteBuffer.isByteBuffer(value))\r\n return value;\r\n return ByteBuffer.wrap(value, \"base64\");\r\n\r\n // Constant enum value\r\n case ProtoBuf.TYPES[\"enum\"]: {\r\n var values = this.resolvedType.getChildren(ProtoBuf.Reflect.Enum.Value);\r\n for (i=0; i 4294967295 || value < 0)\r\n fail(typeof value, \"not in range for uint32\")\r\n return value;\r\n } else {\r\n // proto2 requires enum values to be valid.\r\n fail(value, \"not a valid enum value\");\r\n }\r\n }\r\n // Embedded message\r\n case ProtoBuf.TYPES[\"group\"]:\r\n case ProtoBuf.TYPES[\"message\"]: {\r\n if (!value || typeof value !== 'object')\r\n fail(typeof value, \"object expected\");\r\n if (value instanceof this.resolvedType.clazz)\r\n return value;\r\n if (value instanceof ProtoBuf.Builder.Message) {\r\n // Mismatched type: Convert to object (see: https://github.com/dcodeIO/ProtoBuf.js/issues/180)\r\n var obj = {};\r\n for (var i in value)\r\n if (value.hasOwnProperty(i))\r\n obj[i] = value[i];\r\n value = obj;\r\n }\r\n // Else let's try to construct one from a key-value object\r\n return new (this.resolvedType.clazz)(value); // May throw for a hundred of reasons\r\n }\r\n }\r\n\r\n // We should never end here\r\n throw Error(\"[INTERNAL] Illegal value for \"+this.toString(true)+\": \"+value+\" (undefined type \"+this.type+\")\");\r\n };\r\n\r\n /**\r\n * Calculates the byte length of an element on the wire.\r\n * @param {number} id Field number\r\n * @param {*} value Field value\r\n * @returns {number} Byte length\r\n * @throws {Error} If the value cannot be calculated\r\n * @expose\r\n */\r\n ElementPrototype.calculateLength = function(id, value) {\r\n if (value === null) return 0; // Nothing to encode\r\n // Tag has already been written\r\n var n;\r\n switch (this.type) {\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n return value < 0 ? ByteBuffer.calculateVarint64(value) : ByteBuffer.calculateVarint32(value);\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n return ByteBuffer.calculateVarint32(value);\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n return ByteBuffer.calculateVarint32(ByteBuffer.zigZagEncode32(value));\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n case ProtoBuf.TYPES[\"float\"]:\r\n return 4;\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n return ByteBuffer.calculateVarint64(value);\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n return ByteBuffer.calculateVarint64(ByteBuffer.zigZagEncode64(value));\r\n case ProtoBuf.TYPES[\"fixed64\"]:\r\n case ProtoBuf.TYPES[\"sfixed64\"]:\r\n return 8;\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n return 1;\r\n case ProtoBuf.TYPES[\"enum\"]:\r\n return ByteBuffer.calculateVarint32(value);\r\n case ProtoBuf.TYPES[\"double\"]:\r\n return 8;\r\n case ProtoBuf.TYPES[\"string\"]:\r\n n = ByteBuffer.calculateUTF8Bytes(value);\r\n return ByteBuffer.calculateVarint32(n) + n;\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n if (value.remaining() < 0)\r\n throw Error(\"Illegal value for \"+this.toString(true)+\": \"+value.remaining()+\" bytes remaining\");\r\n return ByteBuffer.calculateVarint32(value.remaining()) + value.remaining();\r\n case ProtoBuf.TYPES[\"message\"]:\r\n n = this.resolvedType.calculate(value);\r\n return ByteBuffer.calculateVarint32(n) + n;\r\n case ProtoBuf.TYPES[\"group\"]:\r\n n = this.resolvedType.calculate(value);\r\n return n + ByteBuffer.calculateVarint32((id << 3) | ProtoBuf.WIRE_TYPES.ENDGROUP);\r\n }\r\n // We should never end here\r\n throw Error(\"[INTERNAL] Illegal value to encode in \"+this.toString(true)+\": \"+value+\" (unknown type)\");\r\n };\r\n\r\n /**\r\n * Encodes a value to the specified buffer. Does not encode the key.\r\n * @param {number} id Field number\r\n * @param {*} value Field value\r\n * @param {ByteBuffer} buffer ByteBuffer to encode to\r\n * @return {ByteBuffer} The ByteBuffer for chaining\r\n * @throws {Error} If the value cannot be encoded\r\n * @expose\r\n */\r\n ElementPrototype.encodeValue = function(id, value, buffer) {\r\n if (value === null) return buffer; // Nothing to encode\r\n // Tag has already been written\r\n\r\n switch (this.type) {\r\n // 32bit signed varint\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n // \"If you use int32 or int64 as the type for a negative number, the resulting varint is always ten bytes\r\n // long – it is, effectively, treated like a very large unsigned integer.\" (see #122)\r\n if (value < 0)\r\n buffer.writeVarint64(value);\r\n else\r\n buffer.writeVarint32(value);\r\n break;\r\n\r\n // 32bit unsigned varint\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n buffer.writeVarint32(value);\r\n break;\r\n\r\n // 32bit varint zig-zag\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n buffer.writeVarint32ZigZag(value);\r\n break;\r\n\r\n // Fixed unsigned 32bit\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n buffer.writeUint32(value);\r\n break;\r\n\r\n // Fixed signed 32bit\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n buffer.writeInt32(value);\r\n break;\r\n\r\n // 64bit varint as-is\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n buffer.writeVarint64(value); // throws\r\n break;\r\n\r\n // 64bit varint zig-zag\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n buffer.writeVarint64ZigZag(value); // throws\r\n break;\r\n\r\n // Fixed unsigned 64bit\r\n case ProtoBuf.TYPES[\"fixed64\"]:\r\n buffer.writeUint64(value); // throws\r\n break;\r\n\r\n // Fixed signed 64bit\r\n case ProtoBuf.TYPES[\"sfixed64\"]:\r\n buffer.writeInt64(value); // throws\r\n break;\r\n\r\n // Bool\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n if (typeof value === 'string')\r\n buffer.writeVarint32(value.toLowerCase() === 'false' ? 0 : !!value);\r\n else\r\n buffer.writeVarint32(value ? 1 : 0);\r\n break;\r\n\r\n // Constant enum value\r\n case ProtoBuf.TYPES[\"enum\"]:\r\n buffer.writeVarint32(value);\r\n break;\r\n\r\n // 32bit float\r\n case ProtoBuf.TYPES[\"float\"]:\r\n buffer.writeFloat32(value);\r\n break;\r\n\r\n // 64bit float\r\n case ProtoBuf.TYPES[\"double\"]:\r\n buffer.writeFloat64(value);\r\n break;\r\n\r\n // Length-delimited string\r\n case ProtoBuf.TYPES[\"string\"]:\r\n buffer.writeVString(value);\r\n break;\r\n\r\n // Length-delimited bytes\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n if (value.remaining() < 0)\r\n throw Error(\"Illegal value for \"+this.toString(true)+\": \"+value.remaining()+\" bytes remaining\");\r\n var prevOffset = value.offset;\r\n buffer.writeVarint32(value.remaining());\r\n buffer.append(value);\r\n value.offset = prevOffset;\r\n break;\r\n\r\n // Embedded message\r\n case ProtoBuf.TYPES[\"message\"]:\r\n var bb = new ByteBuffer().LE();\r\n this.resolvedType.encode(value, bb);\r\n buffer.writeVarint32(bb.offset);\r\n buffer.append(bb.flip());\r\n break;\r\n\r\n // Legacy group\r\n case ProtoBuf.TYPES[\"group\"]:\r\n this.resolvedType.encode(value, buffer);\r\n buffer.writeVarint32((id << 3) | ProtoBuf.WIRE_TYPES.ENDGROUP);\r\n break;\r\n\r\n default:\r\n // We should never end here\r\n throw Error(\"[INTERNAL] Illegal value to encode in \"+this.toString(true)+\": \"+value+\" (unknown type)\");\r\n }\r\n return buffer;\r\n };\r\n\r\n /**\r\n * Decode one element value from the specified buffer.\r\n * @param {ByteBuffer} buffer ByteBuffer to decode from\r\n * @param {number} wireType The field wire type\r\n * @param {number} id The field number\r\n * @return {*} Decoded value\r\n * @throws {Error} If the field cannot be decoded\r\n * @expose\r\n */\r\n ElementPrototype.decode = function(buffer, wireType, id) {\r\n if (wireType != this.type.wireType)\r\n throw Error(\"Unexpected wire type for element\");\r\n\r\n var value, nBytes;\r\n switch (this.type) {\r\n // 32bit signed varint\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n return buffer.readVarint32() | 0;\r\n\r\n // 32bit unsigned varint\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n return buffer.readVarint32() >>> 0;\r\n\r\n // 32bit signed varint zig-zag\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n return buffer.readVarint32ZigZag() | 0;\r\n\r\n // Fixed 32bit unsigned\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n return buffer.readUint32() >>> 0;\r\n\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n return buffer.readInt32() | 0;\r\n\r\n // 64bit signed varint\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n return buffer.readVarint64();\r\n\r\n // 64bit unsigned varint\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n return buffer.readVarint64().toUnsigned();\r\n\r\n // 64bit signed varint zig-zag\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n return buffer.readVarint64ZigZag();\r\n\r\n // Fixed 64bit unsigned\r\n case ProtoBuf.TYPES[\"fixed64\"]:\r\n return buffer.readUint64();\r\n\r\n // Fixed 64bit signed\r\n case ProtoBuf.TYPES[\"sfixed64\"]:\r\n return buffer.readInt64();\r\n\r\n // Bool varint\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n return !!buffer.readVarint32();\r\n\r\n // Constant enum value (varint)\r\n case ProtoBuf.TYPES[\"enum\"]:\r\n // The following Builder.Message#set will already throw\r\n return buffer.readVarint32();\r\n\r\n // 32bit float\r\n case ProtoBuf.TYPES[\"float\"]:\r\n return buffer.readFloat();\r\n\r\n // 64bit float\r\n case ProtoBuf.TYPES[\"double\"]:\r\n return buffer.readDouble();\r\n\r\n // Length-delimited string\r\n case ProtoBuf.TYPES[\"string\"]:\r\n return buffer.readVString();\r\n\r\n // Length-delimited bytes\r\n case ProtoBuf.TYPES[\"bytes\"]: {\r\n nBytes = buffer.readVarint32();\r\n if (buffer.remaining() < nBytes)\r\n throw Error(\"Illegal number of bytes for \"+this.toString(true)+\": \"+nBytes+\" required but got only \"+buffer.remaining());\r\n value = buffer.clone(); // Offset already set\r\n value.limit = value.offset+nBytes;\r\n buffer.offset += nBytes;\r\n return value;\r\n }\r\n\r\n // Length-delimited embedded message\r\n case ProtoBuf.TYPES[\"message\"]: {\r\n nBytes = buffer.readVarint32();\r\n return this.resolvedType.decode(buffer, nBytes);\r\n }\r\n\r\n // Legacy group\r\n case ProtoBuf.TYPES[\"group\"]:\r\n return this.resolvedType.decode(buffer, -1, id);\r\n }\r\n\r\n // We should never end here\r\n throw Error(\"[INTERNAL] Illegal decode type\");\r\n };\r\n\r\n /**\r\n * Converts a value from a string to the canonical element type.\r\n *\r\n * Legal only when isMapKey is true.\r\n *\r\n * @param {string} str The string value\r\n * @returns {*} The value\r\n */\r\n ElementPrototype.valueFromString = function(str) {\r\n if (!this.isMapKey) {\r\n throw Error(\"valueFromString() called on non-map-key element\");\r\n }\r\n\r\n switch (this.type) {\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n return this.verifyValue(parseInt(str));\r\n\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n case ProtoBuf.TYPES[\"sfixed64\"]:\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n case ProtoBuf.TYPES[\"fixed64\"]:\r\n // Long-based fields support conversions from string already.\r\n return this.verifyValue(str);\r\n\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n return str === \"true\";\r\n\r\n case ProtoBuf.TYPES[\"string\"]:\r\n return this.verifyValue(str);\r\n\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n return ByteBuffer.fromBinary(str);\r\n }\r\n };\r\n\r\n /**\r\n * Converts a value from the canonical element type to a string.\r\n *\r\n * It should be the case that `valueFromString(valueToString(val))` returns\r\n * a value equivalent to `verifyValue(val)` for every legal value of `val`\r\n * according to this element type.\r\n *\r\n * This may be used when the element must be stored or used as a string,\r\n * e.g., as a map key on an Object.\r\n *\r\n * Legal only when isMapKey is true.\r\n *\r\n * @param {*} val The value\r\n * @returns {string} The string form of the value.\r\n */\r\n ElementPrototype.valueToString = function(value) {\r\n if (!this.isMapKey) {\r\n throw Error(\"valueToString() called on non-map-key element\");\r\n }\r\n\r\n if (this.type === ProtoBuf.TYPES[\"bytes\"]) {\r\n return value.toString(\"binary\");\r\n } else {\r\n return value.toString();\r\n }\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Element\r\n * @expose\r\n */\r\n Reflect.Element = Element;\r\n\r\n /**\r\n * Constructs a new Message.\r\n * @exports ProtoBuf.Reflect.Message\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Namespace} parent Parent message or namespace\r\n * @param {string} name Message name\r\n * @param {Object.=} options Message options\r\n * @param {boolean=} isGroup `true` if this is a legacy group\r\n * @param {string?} syntax The syntax level of this definition (e.g., proto3)\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Namespace\r\n */\r\n var Message = function(builder, parent, name, options, isGroup, syntax) {\r\n Namespace.call(this, builder, parent, name, options, syntax);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Message\";\r\n\r\n /**\r\n * Extensions range.\r\n * @type {!Array.|undefined}\r\n * @expose\r\n */\r\n this.extensions = undefined;\r\n\r\n /**\r\n * Runtime message class.\r\n * @type {?function(new:ProtoBuf.Builder.Message)}\r\n * @expose\r\n */\r\n this.clazz = null;\r\n\r\n /**\r\n * Whether this is a legacy group or not.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.isGroup = !!isGroup;\r\n\r\n // The following cached collections are used to efficiently iterate over or look up fields when decoding.\r\n\r\n /**\r\n * Cached fields.\r\n * @type {?Array.}\r\n * @private\r\n */\r\n this._fields = null;\r\n\r\n /**\r\n * Cached fields by id.\r\n * @type {?Object.}\r\n * @private\r\n */\r\n this._fieldsById = null;\r\n\r\n /**\r\n * Cached fields by name.\r\n * @type {?Object.}\r\n * @private\r\n */\r\n this._fieldsByName = null;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.prototype\r\n * @inner\r\n */\r\n var MessagePrototype = Message.prototype = Object.create(Namespace.prototype);\r\n\r\n /**\r\n * Builds the message and returns the runtime counterpart, which is a fully functional class.\r\n * @see ProtoBuf.Builder.Message\r\n * @param {boolean=} rebuild Whether to rebuild or not, defaults to false\r\n * @return {ProtoBuf.Reflect.Message} Message class\r\n * @throws {Error} If the message cannot be built\r\n * @expose\r\n */\r\n MessagePrototype.build = function(rebuild) {\r\n if (this.clazz && !rebuild)\r\n return this.clazz;\r\n\r\n // Create the runtime Message class in its own scope\r\n var clazz = (function(ProtoBuf, T) {\r\n\r\n var fields = T.getChildren(ProtoBuf.Reflect.Message.Field),\r\n oneofs = T.getChildren(ProtoBuf.Reflect.Message.OneOf);\r\n\r\n /**\r\n * Constructs a new runtime Message.\r\n * @name ProtoBuf.Builder.Message\r\n * @class Barebone of all runtime messages.\r\n * @param {!Object.|string} values Preset values\r\n * @param {...string} var_args\r\n * @constructor\r\n * @throws {Error} If the message cannot be created\r\n */\r\n var Message = function(values, var_args) {\r\n ProtoBuf.Builder.Message.call(this);\r\n\r\n // Create virtual oneof properties\r\n for (var i=0, k=oneofs.length; i 0) {\r\n var value;\r\n // Set field values from a values object\r\n if (arguments.length === 1 && values !== null && typeof values === 'object' &&\r\n /* not _another_ Message */ (typeof values.encode !== 'function' || values instanceof Message) &&\r\n /* not a repeated field */ !Array.isArray(values) &&\r\n /* not a Map */ !(values instanceof ProtoBuf.Map) &&\r\n /* not a ByteBuffer */ !ByteBuffer.isByteBuffer(values) &&\r\n /* not an ArrayBuffer */ !(values instanceof ArrayBuffer) &&\r\n /* not a Long */ !(ProtoBuf.Long && values instanceof ProtoBuf.Long)) {\r\n this.$set(values);\r\n } else // Set field values from arguments, in declaration order\r\n for (i=0, k=arguments.length; i} keyOrObj String key or plain object holding multiple values\r\n * @param {(*|boolean)=} value Value to set if key is a string, otherwise omitted\r\n * @param {boolean=} noAssert Whether to not assert for an actual field / proper value type, defaults to `false`\r\n * @returns {!ProtoBuf.Builder.Message} this\r\n * @throws {Error} If the value cannot be set\r\n * @expose\r\n */\r\n MessagePrototype.set = function(keyOrObj, value, noAssert) {\r\n if (keyOrObj && typeof keyOrObj === 'object') {\r\n noAssert = value;\r\n for (var ikey in keyOrObj) {\r\n // Check if virtual oneof field - don't set these\r\n if (keyOrObj.hasOwnProperty(ikey) && typeof (value = keyOrObj[ikey]) !== 'undefined' && T._oneofsByName[ikey] === undefined)\r\n this.$set(ikey, value, noAssert);\r\n }\r\n return this;\r\n }\r\n var field = T._fieldsByName[keyOrObj];\r\n if (!noAssert) {\r\n if (!field)\r\n throw Error(this+\"#\"+keyOrObj+\" is not a field: undefined\");\r\n if (!(field instanceof ProtoBuf.Reflect.Message.Field))\r\n throw Error(this+\"#\"+keyOrObj+\" is not a field: \"+field.toString(true));\r\n this[field.name] = (value = field.verifyValue(value)); // May throw\r\n } else\r\n this[keyOrObj] = value;\r\n if (field && field.oneof) { // Field is part of an OneOf (not a virtual OneOf field)\r\n var currentField = this[field.oneof.name]; // Virtual field references currently set field\r\n if (value !== null) {\r\n if (currentField !== null && currentField !== field.name)\r\n this[currentField] = null; // Clear currently set field\r\n this[field.oneof.name] = field.name; // Point virtual field at this field\r\n } else if (/* value === null && */currentField === keyOrObj)\r\n this[field.oneof.name] = null; // Clear virtual field (current field explicitly cleared)\r\n }\r\n return this;\r\n };\r\n\r\n /**\r\n * Sets a field's value. This is an alias for [@link ProtoBuf.Builder.Message#set}.\r\n * @name ProtoBuf.Builder.Message#$set\r\n * @function\r\n * @param {string|!Object.} keyOrObj String key or plain object holding multiple values\r\n * @param {(*|boolean)=} value Value to set if key is a string, otherwise omitted\r\n * @param {boolean=} noAssert Whether to not assert the value, defaults to `false`\r\n * @throws {Error} If the value cannot be set\r\n * @expose\r\n */\r\n MessagePrototype.$set = MessagePrototype.set;\r\n\r\n /**\r\n * Gets a field's value.\r\n * @name ProtoBuf.Builder.Message#get\r\n * @function\r\n * @param {string} key Key\r\n * @param {boolean=} noAssert Whether to not assert for an actual field, defaults to `false`\r\n * @return {*} Value\r\n * @throws {Error} If there is no such field\r\n * @expose\r\n */\r\n MessagePrototype.get = function(key, noAssert) {\r\n if (noAssert)\r\n return this[key];\r\n var field = T._fieldsByName[key];\r\n if (!field || !(field instanceof ProtoBuf.Reflect.Message.Field))\r\n throw Error(this+\"#\"+key+\" is not a field: undefined\");\r\n if (!(field instanceof ProtoBuf.Reflect.Message.Field))\r\n throw Error(this+\"#\"+key+\" is not a field: \"+field.toString(true));\r\n return this[field.name];\r\n };\r\n\r\n /**\r\n * Gets a field's value. This is an alias for {@link ProtoBuf.Builder.Message#$get}.\r\n * @name ProtoBuf.Builder.Message#$get\r\n * @function\r\n * @param {string} key Key\r\n * @return {*} Value\r\n * @throws {Error} If there is no such field\r\n * @expose\r\n */\r\n MessagePrototype.$get = MessagePrototype.get;\r\n\r\n // Getters and setters\r\n\r\n for (var i=0; i} data Data payload\r\n * @param {(!ByteBuffer|boolean)=} buffer ByteBuffer to encode to. Will create a new one and flip it if omitted.\r\n * @param {boolean=} noVerify Whether to not verify field values, defaults to `false`\r\n * @return {!ByteBuffer} Encoded message as a ByteBuffer\r\n * @expose\r\n */\r\n Message.encode = function(data, buffer, noVerify) {\r\n return new Message(data).encode(buffer, noVerify);\r\n };\r\n\r\n /**\r\n * Calculates the byte length of the message.\r\n * @name ProtoBuf.Builder.Message#calculate\r\n * @function\r\n * @returns {number} Byte length\r\n * @throws {Error} If the message cannot be calculated or if required fields are missing.\r\n * @expose\r\n */\r\n MessagePrototype.calculate = function() {\r\n return T.calculate(this);\r\n };\r\n\r\n /**\r\n * Encodes the varint32 length-delimited message.\r\n * @name ProtoBuf.Builder.Message#encodeDelimited\r\n * @function\r\n * @param {(!ByteBuffer|boolean)=} buffer ByteBuffer to encode to. Will create a new one and flip it if omitted.\r\n * @param {boolean=} noVerify Whether to not verify field values, defaults to `false`\r\n * @return {!ByteBuffer} Encoded message as a ByteBuffer\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded ByteBuffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encodeDelimited = function(buffer, noVerify) {\r\n var isNew = false;\r\n if (!buffer)\r\n buffer = new ByteBuffer(),\r\n isNew = true;\r\n var enc = new ByteBuffer().LE();\r\n T.encode(this, enc, noVerify).flip();\r\n buffer.writeVarint32(enc.remaining());\r\n buffer.append(enc);\r\n return isNew ? buffer.flip() : buffer;\r\n };\r\n\r\n /**\r\n * Directly encodes the message to an ArrayBuffer.\r\n * @name ProtoBuf.Builder.Message#encodeAB\r\n * @function\r\n * @return {ArrayBuffer} Encoded message as ArrayBuffer\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded ArrayBuffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encodeAB = function() {\r\n try {\r\n return this.encode().toArrayBuffer();\r\n } catch (e) {\r\n if (e[\"encoded\"]) e[\"encoded\"] = e[\"encoded\"].toArrayBuffer();\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Returns the message as an ArrayBuffer. This is an alias for {@link ProtoBuf.Builder.Message#encodeAB}.\r\n * @name ProtoBuf.Builder.Message#toArrayBuffer\r\n * @function\r\n * @return {ArrayBuffer} Encoded message as ArrayBuffer\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded ArrayBuffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.toArrayBuffer = MessagePrototype.encodeAB;\r\n\r\n /**\r\n * Directly encodes the message to a node Buffer.\r\n * @name ProtoBuf.Builder.Message#encodeNB\r\n * @function\r\n * @return {!Buffer}\r\n * @throws {Error} If the message cannot be encoded, not running under node.js or if required fields are\r\n * missing. The later still returns the encoded node Buffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encodeNB = function() {\r\n try {\r\n return this.encode().toBuffer();\r\n } catch (e) {\r\n if (e[\"encoded\"]) e[\"encoded\"] = e[\"encoded\"].toBuffer();\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Returns the message as a node Buffer. This is an alias for {@link ProtoBuf.Builder.Message#encodeNB}.\r\n * @name ProtoBuf.Builder.Message#toBuffer\r\n * @function\r\n * @return {!Buffer}\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded node Buffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.toBuffer = MessagePrototype.encodeNB;\r\n\r\n /**\r\n * Directly encodes the message to a base64 encoded string.\r\n * @name ProtoBuf.Builder.Message#encode64\r\n * @function\r\n * @return {string} Base64 encoded string\r\n * @throws {Error} If the underlying buffer cannot be encoded or if required fields are missing. The later\r\n * still returns the encoded base64 string in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encode64 = function() {\r\n try {\r\n return this.encode().toBase64();\r\n } catch (e) {\r\n if (e[\"encoded\"]) e[\"encoded\"] = e[\"encoded\"].toBase64();\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Returns the message as a base64 encoded string. This is an alias for {@link ProtoBuf.Builder.Message#encode64}.\r\n * @name ProtoBuf.Builder.Message#toBase64\r\n * @function\r\n * @return {string} Base64 encoded string\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded base64 string in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.toBase64 = MessagePrototype.encode64;\r\n\r\n /**\r\n * Directly encodes the message to a hex encoded string.\r\n * @name ProtoBuf.Builder.Message#encodeHex\r\n * @function\r\n * @return {string} Hex encoded string\r\n * @throws {Error} If the underlying buffer cannot be encoded or if required fields are missing. The later\r\n * still returns the encoded hex string in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encodeHex = function() {\r\n try {\r\n return this.encode().toHex();\r\n } catch (e) {\r\n if (e[\"encoded\"]) e[\"encoded\"] = e[\"encoded\"].toHex();\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Returns the message as a hex encoded string. This is an alias for {@link ProtoBuf.Builder.Message#encodeHex}.\r\n * @name ProtoBuf.Builder.Message#toHex\r\n * @function\r\n * @return {string} Hex encoded string\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded hex string in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.toHex = MessagePrototype.encodeHex;\r\n\r\n /**\r\n * Clones a message object or field value to a raw object.\r\n * @param {*} obj Object to clone\r\n * @param {boolean} binaryAsBase64 Whether to include binary data as base64 strings or as a buffer otherwise\r\n * @param {boolean} longsAsStrings Whether to encode longs as strings\r\n * @param {!ProtoBuf.Reflect.T=} resolvedType The resolved field type if a field\r\n * @returns {*} Cloned object\r\n * @inner\r\n */\r\n function cloneRaw(obj, binaryAsBase64, longsAsStrings, resolvedType) {\r\n if (obj === null || typeof obj !== 'object') {\r\n // Convert enum values to their respective names\r\n if (resolvedType && resolvedType instanceof ProtoBuf.Reflect.Enum) {\r\n var name = ProtoBuf.Reflect.Enum.getName(resolvedType.object, obj);\r\n if (name !== null)\r\n return name;\r\n }\r\n // Pass-through string, number, boolean, null...\r\n return obj;\r\n }\r\n // Convert ByteBuffers to raw buffer or strings\r\n if (ByteBuffer.isByteBuffer(obj))\r\n return binaryAsBase64 ? obj.toBase64() : obj.toBuffer();\r\n // Convert Longs to proper objects or strings\r\n if (ProtoBuf.Long.isLong(obj))\r\n return longsAsStrings ? obj.toString() : ProtoBuf.Long.fromValue(obj);\r\n var clone;\r\n // Clone arrays\r\n if (Array.isArray(obj)) {\r\n clone = [];\r\n obj.forEach(function(v, k) {\r\n clone[k] = cloneRaw(v, binaryAsBase64, longsAsStrings, resolvedType);\r\n });\r\n return clone;\r\n }\r\n clone = {};\r\n // Convert maps to objects\r\n if (obj instanceof ProtoBuf.Map) {\r\n var it = obj.entries();\r\n for (var e = it.next(); !e.done; e = it.next())\r\n clone[obj.keyElem.valueToString(e.value[0])] = cloneRaw(e.value[1], binaryAsBase64, longsAsStrings, obj.valueElem.resolvedType);\r\n return clone;\r\n }\r\n // Everything else is a non-null object\r\n var type = obj.$type,\r\n field = undefined;\r\n for (var i in obj)\r\n if (obj.hasOwnProperty(i)) {\r\n if (type && (field = type.getChild(i)))\r\n clone[i] = cloneRaw(obj[i], binaryAsBase64, longsAsStrings, field.resolvedType);\r\n else\r\n clone[i] = cloneRaw(obj[i], binaryAsBase64, longsAsStrings);\r\n }\r\n return clone;\r\n }\r\n\r\n /**\r\n * Returns the message's raw payload.\r\n * @param {boolean=} binaryAsBase64 Whether to include binary data as base64 strings instead of Buffers, defaults to `false`\r\n * @param {boolean} longsAsStrings Whether to encode longs as strings\r\n * @returns {Object.} Raw payload\r\n * @expose\r\n */\r\n MessagePrototype.toRaw = function(binaryAsBase64, longsAsStrings) {\r\n return cloneRaw(this, !!binaryAsBase64, !!longsAsStrings, this.$type);\r\n };\r\n\r\n /**\r\n * Encodes a message to JSON.\r\n * @returns {string} JSON string\r\n * @expose\r\n */\r\n MessagePrototype.encodeJSON = function() {\r\n return JSON.stringify(\r\n cloneRaw(this,\r\n /* binary-as-base64 */ true,\r\n /* longs-as-strings */ true,\r\n this.$type\r\n )\r\n );\r\n };\r\n\r\n /**\r\n * Decodes a message from the specified buffer or string.\r\n * @name ProtoBuf.Builder.Message.decode\r\n * @function\r\n * @param {!ByteBuffer|!ArrayBuffer|!Buffer|string} buffer Buffer to decode from\r\n * @param {(number|string)=} length Message length. Defaults to decode all the remainig data.\r\n * @param {string=} enc Encoding if buffer is a string: hex, utf8 (not recommended), defaults to base64\r\n * @return {!ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still\r\n * returns the decoded message with missing fields in the `decoded` property on the error.\r\n * @expose\r\n * @see ProtoBuf.Builder.Message.decode64\r\n * @see ProtoBuf.Builder.Message.decodeHex\r\n */\r\n Message.decode = function(buffer, length, enc) {\r\n if (typeof length === 'string')\r\n enc = length,\r\n length = -1;\r\n if (typeof buffer === 'string')\r\n buffer = ByteBuffer.wrap(buffer, enc ? enc : \"base64\");\r\n else if (!ByteBuffer.isByteBuffer(buffer))\r\n buffer = ByteBuffer.wrap(buffer); // May throw\r\n var le = buffer.littleEndian;\r\n try {\r\n var msg = T.decode(buffer.LE(), length);\r\n buffer.LE(le);\r\n return msg;\r\n } catch (e) {\r\n buffer.LE(le);\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Decodes a varint32 length-delimited message from the specified buffer or string.\r\n * @name ProtoBuf.Builder.Message.decodeDelimited\r\n * @function\r\n * @param {!ByteBuffer|!ArrayBuffer|!Buffer|string} buffer Buffer to decode from\r\n * @param {string=} enc Encoding if buffer is a string: hex, utf8 (not recommended), defaults to base64\r\n * @return {ProtoBuf.Builder.Message} Decoded message or `null` if not enough bytes are available yet\r\n * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still\r\n * returns the decoded message with missing fields in the `decoded` property on the error.\r\n * @expose\r\n */\r\n Message.decodeDelimited = function(buffer, enc) {\r\n if (typeof buffer === 'string')\r\n buffer = ByteBuffer.wrap(buffer, enc ? enc : \"base64\");\r\n else if (!ByteBuffer.isByteBuffer(buffer))\r\n buffer = ByteBuffer.wrap(buffer); // May throw\r\n if (buffer.remaining() < 1)\r\n return null;\r\n var off = buffer.offset,\r\n len = buffer.readVarint32();\r\n if (buffer.remaining() < len) {\r\n buffer.offset = off;\r\n return null;\r\n }\r\n try {\r\n var msg = T.decode(buffer.slice(buffer.offset, buffer.offset + len).LE());\r\n buffer.offset += len;\r\n return msg;\r\n } catch (err) {\r\n buffer.offset += len;\r\n throw err;\r\n }\r\n };\r\n\r\n /**\r\n * Decodes the message from the specified base64 encoded string.\r\n * @name ProtoBuf.Builder.Message.decode64\r\n * @function\r\n * @param {string} str String to decode from\r\n * @return {!ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still\r\n * returns the decoded message with missing fields in the `decoded` property on the error.\r\n * @expose\r\n */\r\n Message.decode64 = function(str) {\r\n return Message.decode(str, \"base64\");\r\n };\r\n\r\n /**\r\n * Decodes the message from the specified hex encoded string.\r\n * @name ProtoBuf.Builder.Message.decodeHex\r\n * @function\r\n * @param {string} str String to decode from\r\n * @return {!ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still\r\n * returns the decoded message with missing fields in the `decoded` property on the error.\r\n * @expose\r\n */\r\n Message.decodeHex = function(str) {\r\n return Message.decode(str, \"hex\");\r\n };\r\n\r\n /**\r\n * Decodes the message from a JSON string.\r\n * @name ProtoBuf.Builder.Message.decodeJSON\r\n * @function\r\n * @param {string} str String to decode from\r\n * @return {!ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded or if required fields are\r\n * missing.\r\n * @expose\r\n */\r\n Message.decodeJSON = function(str) {\r\n return new Message(JSON.parse(str));\r\n };\r\n\r\n // Utility\r\n\r\n /**\r\n * Returns a string representation of this Message.\r\n * @name ProtoBuf.Builder.Message#toString\r\n * @function\r\n * @return {string} String representation as of \".Fully.Qualified.MessageName\"\r\n * @expose\r\n */\r\n MessagePrototype.toString = function() {\r\n return T.toString();\r\n };\r\n\r\n // Properties\r\n\r\n /**\r\n * Message options.\r\n * @name ProtoBuf.Builder.Message.$options\r\n * @type {Object.}\r\n * @expose\r\n */\r\n var $optionsS; // cc needs this\r\n\r\n /**\r\n * Message options.\r\n * @name ProtoBuf.Builder.Message#$options\r\n * @type {Object.}\r\n * @expose\r\n */\r\n var $options;\r\n\r\n /**\r\n * Reflection type.\r\n * @name ProtoBuf.Builder.Message.$type\r\n * @type {!ProtoBuf.Reflect.Message}\r\n * @expose\r\n */\r\n var $typeS;\r\n\r\n /**\r\n * Reflection type.\r\n * @name ProtoBuf.Builder.Message#$type\r\n * @type {!ProtoBuf.Reflect.Message}\r\n * @expose\r\n */\r\n var $type;\r\n\r\n if (Object.defineProperty)\r\n Object.defineProperty(Message, '$options', { \"value\": T.buildOpt() }),\r\n Object.defineProperty(MessagePrototype, \"$options\", { \"value\": Message[\"$options\"] }),\r\n Object.defineProperty(Message, \"$type\", { \"value\": T }),\r\n Object.defineProperty(MessagePrototype, \"$type\", { \"value\": T });\r\n\r\n return Message;\r\n\r\n })(ProtoBuf, this);\r\n\r\n // Static enums and prototyped sub-messages / cached collections\r\n this._fields = [];\r\n this._fieldsById = {};\r\n this._fieldsByName = {};\r\n this._oneofsByName = {};\r\n for (var i=0, k=this.children.length, child; i>> 3;\r\n switch (wireType) {\r\n case ProtoBuf.WIRE_TYPES.VARINT:\r\n do tag = buf.readUint8();\r\n while ((tag & 0x80) === 0x80);\r\n break;\r\n case ProtoBuf.WIRE_TYPES.BITS64:\r\n buf.offset += 8;\r\n break;\r\n case ProtoBuf.WIRE_TYPES.LDELIM:\r\n tag = buf.readVarint32(); // reads the varint\r\n buf.offset += tag; // skips n bytes\r\n break;\r\n case ProtoBuf.WIRE_TYPES.STARTGROUP:\r\n skipTillGroupEnd(id, buf);\r\n break;\r\n case ProtoBuf.WIRE_TYPES.ENDGROUP:\r\n if (id === expectedId)\r\n return false;\r\n else\r\n throw Error(\"Illegal GROUPEND after unknown group: \"+id+\" (\"+expectedId+\" expected)\");\r\n case ProtoBuf.WIRE_TYPES.BITS32:\r\n buf.offset += 4;\r\n break;\r\n default:\r\n throw Error(\"Illegal wire type in unknown group \"+expectedId+\": \"+wireType);\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Decodes an encoded message and returns the decoded message.\r\n * @param {ByteBuffer} buffer ByteBuffer to decode from\r\n * @param {number=} length Message length. Defaults to decode all remaining data.\r\n * @param {number=} expectedGroupEndId Expected GROUPEND id if this is a legacy group\r\n * @return {ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded\r\n * @expose\r\n */\r\n MessagePrototype.decode = function(buffer, length, expectedGroupEndId) {\r\n if (typeof length !== 'number')\r\n length = -1;\r\n var start = buffer.offset,\r\n msg = new (this.clazz)(),\r\n tag, wireType, id, field;\r\n while (buffer.offset < start+length || (length === -1 && buffer.remaining() > 0)) {\r\n tag = buffer.readVarint32();\r\n wireType = tag & 0x07;\r\n id = tag >>> 3;\r\n if (wireType === ProtoBuf.WIRE_TYPES.ENDGROUP) {\r\n if (id !== expectedGroupEndId)\r\n throw Error(\"Illegal group end indicator for \"+this.toString(true)+\": \"+id+\" (\"+(expectedGroupEndId ? expectedGroupEndId+\" expected\" : \"not a group\")+\")\");\r\n break;\r\n }\r\n if (!(field = this._fieldsById[id])) {\r\n // \"messages created by your new code can be parsed by your old code: old binaries simply ignore the new field when parsing.\"\r\n switch (wireType) {\r\n case ProtoBuf.WIRE_TYPES.VARINT:\r\n buffer.readVarint32();\r\n break;\r\n case ProtoBuf.WIRE_TYPES.BITS32:\r\n buffer.offset += 4;\r\n break;\r\n case ProtoBuf.WIRE_TYPES.BITS64:\r\n buffer.offset += 8;\r\n break;\r\n case ProtoBuf.WIRE_TYPES.LDELIM:\r\n var len = buffer.readVarint32();\r\n buffer.offset += len;\r\n break;\r\n case ProtoBuf.WIRE_TYPES.STARTGROUP:\r\n while (skipTillGroupEnd(id, buffer)) {}\r\n break;\r\n default:\r\n throw Error(\"Illegal wire type for unknown field \"+id+\" in \"+this.toString(true)+\"#decode: \"+wireType);\r\n }\r\n continue;\r\n }\r\n if (field.repeated && !field.options[\"packed\"]) {\r\n msg[field.name].push(field.decode(wireType, buffer));\r\n } else if (field.map) {\r\n var keyval = field.decode(wireType, buffer);\r\n msg[field.name].set(keyval[0], keyval[1]);\r\n } else {\r\n msg[field.name] = field.decode(wireType, buffer);\r\n if (field.oneof) { // Field is part of an OneOf (not a virtual OneOf field)\r\n var currentField = msg[field.oneof.name]; // Virtual field references currently set field\r\n if (currentField !== null && currentField !== field.name)\r\n msg[currentField] = null; // Clear currently set field\r\n msg[field.oneof.name] = field.name; // Point virtual field at this field\r\n }\r\n }\r\n }\r\n\r\n // Check if all required fields are present and set default values for optional fields that are not\r\n for (var i=0, k=this._fields.length; i=} options Options\r\n * @param {!ProtoBuf.Reflect.Message.OneOf=} oneof Enclosing OneOf\r\n * @param {string?} syntax The syntax level of this definition (e.g., proto3)\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.T\r\n */\r\n var Field = function(builder, message, rule, keytype, type, name, id, options, oneof, syntax) {\r\n T.call(this, builder, message, name);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Message.Field\";\r\n\r\n /**\r\n * Message field required flag.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.required = rule === \"required\";\r\n\r\n /**\r\n * Message field repeated flag.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.repeated = rule === \"repeated\";\r\n\r\n /**\r\n * Message field map flag.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.map = rule === \"map\";\r\n\r\n /**\r\n * Message field key type. Type reference string if unresolved, protobuf\r\n * type if resolved. Valid only if this.map === true, null otherwise.\r\n * @type {string|{name: string, wireType: number}|null}\r\n * @expose\r\n */\r\n this.keyType = keytype || null;\r\n\r\n /**\r\n * Message field type. Type reference string if unresolved, protobuf type if\r\n * resolved. In a map field, this is the value type.\r\n * @type {string|{name: string, wireType: number}}\r\n * @expose\r\n */\r\n this.type = type;\r\n\r\n /**\r\n * Resolved type reference inside the global namespace.\r\n * @type {ProtoBuf.Reflect.T|null}\r\n * @expose\r\n */\r\n this.resolvedType = null;\r\n\r\n /**\r\n * Unique message field id.\r\n * @type {number}\r\n * @expose\r\n */\r\n this.id = id;\r\n\r\n /**\r\n * Message field options.\r\n * @type {!Object.}\r\n * @dict\r\n * @expose\r\n */\r\n this.options = options || {};\r\n\r\n /**\r\n * Default value.\r\n * @type {*}\r\n * @expose\r\n */\r\n this.defaultValue = null;\r\n\r\n /**\r\n * Enclosing OneOf.\r\n * @type {?ProtoBuf.Reflect.Message.OneOf}\r\n * @expose\r\n */\r\n this.oneof = oneof || null;\r\n\r\n /**\r\n * Syntax level of this definition (e.g., proto3).\r\n * @type {string}\r\n * @expose\r\n */\r\n this.syntax = syntax || 'proto2';\r\n\r\n /**\r\n * Original field name.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.originalName = this.name; // Used to revert camelcase transformation on naming collisions\r\n\r\n /**\r\n * Element implementation. Created in build() after types are resolved.\r\n * @type {ProtoBuf.Element}\r\n * @expose\r\n */\r\n this.element = null;\r\n\r\n /**\r\n * Key element implementation, for map fields. Created in build() after\r\n * types are resolved.\r\n * @type {ProtoBuf.Element}\r\n * @expose\r\n */\r\n this.keyElement = null;\r\n\r\n // Convert field names to camel case notation if the override is set\r\n if (this.builder.options['convertFieldsToCamelCase'] && !(this instanceof Message.ExtensionField))\r\n this.name = ProtoBuf.Util.toCamelCase(this.name);\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.Field.prototype\r\n * @inner\r\n */\r\n var FieldPrototype = Field.prototype = Object.create(T.prototype);\r\n\r\n /**\r\n * Builds the field.\r\n * @override\r\n * @expose\r\n */\r\n FieldPrototype.build = function() {\r\n this.element = new Element(this.type, this.resolvedType, false, this.syntax, this.name);\r\n if (this.map)\r\n this.keyElement = new Element(this.keyType, undefined, true, this.syntax, this.name);\r\n\r\n // In proto3, fields do not have field presence, and every field is set to\r\n // its type's default value (\"\", 0, 0.0, or false).\r\n if (this.syntax === 'proto3' && !this.repeated && !this.map)\r\n this.defaultValue = Element.defaultFieldValue(this.type);\r\n\r\n // Otherwise, default values are present when explicitly specified\r\n else if (typeof this.options['default'] !== 'undefined')\r\n this.defaultValue = this.verifyValue(this.options['default']);\r\n };\r\n\r\n /**\r\n * Checks if the given value can be set for this field.\r\n * @param {*} value Value to check\r\n * @param {boolean=} skipRepeated Whether to skip the repeated value check or not. Defaults to false.\r\n * @return {*} Verified, maybe adjusted, value\r\n * @throws {Error} If the value cannot be set for this field\r\n * @expose\r\n */\r\n FieldPrototype.verifyValue = function(value, skipRepeated) {\r\n skipRepeated = skipRepeated || false;\r\n var self = this;\r\n function fail(val, msg) {\r\n throw Error(\"Illegal value for \"+self.toString(true)+\" of type \"+self.type.name+\": \"+val+\" (\"+msg+\")\");\r\n }\r\n if (value === null) { // NULL values for optional fields\r\n if (this.required)\r\n fail(typeof value, \"required\");\r\n if (this.syntax === 'proto3' && this.type !== ProtoBuf.TYPES[\"message\"])\r\n fail(typeof value, \"proto3 field without field presence cannot be null\");\r\n return null;\r\n }\r\n var i;\r\n if (this.repeated && !skipRepeated) { // Repeated values as arrays\r\n if (!Array.isArray(value))\r\n value = [value];\r\n var res = [];\r\n for (i=0; i 0;\r\n\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n return value.remaining() > 0;\r\n\r\n case ProtoBuf.TYPES[\"enum\"]:\r\n return value !== 0;\r\n\r\n case ProtoBuf.TYPES[\"message\"]:\r\n return value !== null;\r\n default:\r\n return true;\r\n }\r\n };\r\n\r\n /**\r\n * Encodes the specified field value to the specified buffer.\r\n * @param {*} value Verified field value\r\n * @param {ByteBuffer} buffer ByteBuffer to encode to\r\n * @param {!ProtoBuf.Builder.Message} message Runtime message\r\n * @return {ByteBuffer} The ByteBuffer for chaining\r\n * @throws {Error} If the field cannot be encoded\r\n * @expose\r\n */\r\n FieldPrototype.encode = function(value, buffer, message) {\r\n if (this.type === null || typeof this.type !== 'object')\r\n throw Error(\"[INTERNAL] Unresolved type in \"+this.toString(true)+\": \"+this.type);\r\n if (value === null || (this.repeated && value.length == 0))\r\n return buffer; // Optional omitted\r\n try {\r\n if (this.repeated) {\r\n var i;\r\n // \"Only repeated fields of primitive numeric types (types which use the varint, 32-bit, or 64-bit wire\r\n // types) can be declared 'packed'.\"\r\n if (this.options[\"packed\"] && ProtoBuf.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType) >= 0) {\r\n // \"All of the elements of the field are packed into a single key-value pair with wire type 2\r\n // (length-delimited). Each element is encoded the same way it would be normally, except without a\r\n // tag preceding it.\"\r\n buffer.writeVarint32((this.id << 3) | ProtoBuf.WIRE_TYPES.LDELIM);\r\n buffer.ensureCapacity(buffer.offset += 1); // We do not know the length yet, so let's assume a varint of length 1\r\n var start = buffer.offset; // Remember where the contents begin\r\n for (i=0; i 1) { // We need to move the contents\r\n var contents = buffer.slice(start, buffer.offset);\r\n start += varintLen-1;\r\n buffer.offset = start;\r\n buffer.append(contents);\r\n }\r\n buffer.writeVarint32(len, start-varintLen);\r\n } else {\r\n // \"If your message definition has repeated elements (without the [packed=true] option), the encoded\r\n // message has zero or more key-value pairs with the same tag number\"\r\n for (i=0; i= 0) {\r\n n += ByteBuffer.calculateVarint32((this.id << 3) | ProtoBuf.WIRE_TYPES.LDELIM);\r\n ni = 0;\r\n for (i=0; i= 0) {\r\n if (!skipRepeated) {\r\n nBytes = buffer.readVarint32();\r\n nBytes = buffer.offset + nBytes; // Limit\r\n var values = [];\r\n while (buffer.offset < nBytes)\r\n values.push(this.decode(this.type.wireType, buffer, true));\r\n return values;\r\n }\r\n // Read the next value otherwise...\r\n }\r\n\r\n // Handle maps.\r\n if (this.map) {\r\n // Read one (key, value) submessage, and return [key, value]\r\n var key = Element.defaultFieldValue(this.keyType);\r\n value = Element.defaultFieldValue(this.type);\r\n\r\n // Read the length\r\n nBytes = buffer.readVarint32();\r\n if (buffer.remaining() < nBytes)\r\n throw Error(\"Illegal number of bytes for \"+this.toString(true)+\": \"+nBytes+\" required but got only \"+buffer.remaining());\r\n\r\n // Get a sub-buffer of this key/value submessage\r\n var msgbuf = buffer.clone();\r\n msgbuf.limit = msgbuf.offset + nBytes;\r\n buffer.offset += nBytes;\r\n\r\n while (msgbuf.remaining() > 0) {\r\n var tag = msgbuf.readVarint32();\r\n wireType = tag & 0x07;\r\n var id = tag >>> 3;\r\n if (id === 1) {\r\n key = this.keyElement.decode(msgbuf, wireType, id);\r\n } else if (id === 2) {\r\n value = this.element.decode(msgbuf, wireType, id);\r\n } else {\r\n throw Error(\"Unexpected tag in map field key/value submessage\");\r\n }\r\n }\r\n\r\n return [key, value];\r\n }\r\n\r\n // Handle singular and non-packed repeated field values.\r\n return this.element.decode(buffer, wireType, this.id);\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.Field\r\n * @expose\r\n */\r\n Reflect.Message.Field = Field;\r\n\r\n /**\r\n * Constructs a new Message ExtensionField.\r\n * @exports ProtoBuf.Reflect.Message.ExtensionField\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Message} message Message reference\r\n * @param {string} rule Rule, one of requried, optional, repeated\r\n * @param {string} type Data type, e.g. int32\r\n * @param {string} name Field name\r\n * @param {number} id Unique field id\r\n * @param {!Object.=} options Options\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Message.Field\r\n */\r\n var ExtensionField = function(builder, message, rule, type, name, id, options) {\r\n Field.call(this, builder, message, rule, /* keytype = */ null, type, name, id, options);\r\n\r\n /**\r\n * Extension reference.\r\n * @type {!ProtoBuf.Reflect.Extension}\r\n * @expose\r\n */\r\n this.extension;\r\n };\r\n\r\n // Extends Field\r\n ExtensionField.prototype = Object.create(Field.prototype);\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.ExtensionField\r\n * @expose\r\n */\r\n Reflect.Message.ExtensionField = ExtensionField;\r\n\r\n /**\r\n * Constructs a new Message OneOf.\r\n * @exports ProtoBuf.Reflect.Message.OneOf\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Message} message Message reference\r\n * @param {string} name OneOf name\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.T\r\n */\r\n var OneOf = function(builder, message, name) {\r\n T.call(this, builder, message, name);\r\n\r\n /**\r\n * Enclosed fields.\r\n * @type {!Array.}\r\n * @expose\r\n */\r\n this.fields = [];\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.OneOf\r\n * @expose\r\n */\r\n Reflect.Message.OneOf = OneOf;\r\n\r\n /**\r\n * Constructs a new Enum.\r\n * @exports ProtoBuf.Reflect.Enum\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.T} parent Parent Reflect object\r\n * @param {string} name Enum name\r\n * @param {Object.=} options Enum options\r\n * @param {string?} syntax The syntax level (e.g., proto3)\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Namespace\r\n */\r\n var Enum = function(builder, parent, name, options, syntax) {\r\n Namespace.call(this, builder, parent, name, options, syntax);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Enum\";\r\n\r\n /**\r\n * Runtime enum object.\r\n * @type {Object.|null}\r\n * @expose\r\n */\r\n this.object = null;\r\n };\r\n\r\n /**\r\n * Gets the string name of an enum value.\r\n * @param {!ProtoBuf.Builder.Enum} enm Runtime enum\r\n * @param {number} value Enum value\r\n * @returns {?string} Name or `null` if not present\r\n * @expose\r\n */\r\n Enum.getName = function(enm, value) {\r\n var keys = Object.keys(enm);\r\n for (var i=0, key; i}\r\n * @expose\r\n */\r\n EnumPrototype.build = function(rebuild) {\r\n if (this.object && !rebuild)\r\n return this.object;\r\n var enm = new ProtoBuf.Builder.Enum(),\r\n values = this.getChildren(Enum.Value);\r\n for (var i=0, k=values.length; i=} options Options\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Namespace\r\n */\r\n var Service = function(builder, root, name, options) {\r\n Namespace.call(this, builder, root, name, options);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Service\";\r\n\r\n /**\r\n * Built runtime service class.\r\n * @type {?function(new:ProtoBuf.Builder.Service)}\r\n */\r\n this.clazz = null;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service.prototype\r\n * @inner\r\n */\r\n var ServicePrototype = Service.prototype = Object.create(Namespace.prototype);\r\n\r\n /**\r\n * Builds the service and returns the runtime counterpart, which is a fully functional class.\r\n * @see ProtoBuf.Builder.Service\r\n * @param {boolean=} rebuild Whether to rebuild or not\r\n * @return {Function} Service class\r\n * @throws {Error} If the message cannot be built\r\n * @expose\r\n */\r\n ServicePrototype.build = function(rebuild) {\r\n if (this.clazz && !rebuild)\r\n return this.clazz;\r\n\r\n // Create the runtime Service class in its own scope\r\n return this.clazz = (function(ProtoBuf, T) {\r\n\r\n /**\r\n * Constructs a new runtime Service.\r\n * @name ProtoBuf.Builder.Service\r\n * @param {function(string, ProtoBuf.Builder.Message, function(Error, ProtoBuf.Builder.Message=))=} rpcImpl RPC implementation receiving the method name and the message\r\n * @class Barebone of all runtime services.\r\n * @constructor\r\n * @throws {Error} If the service cannot be created\r\n */\r\n var Service = function(rpcImpl) {\r\n ProtoBuf.Builder.Service.call(this);\r\n\r\n /**\r\n * Service implementation.\r\n * @name ProtoBuf.Builder.Service#rpcImpl\r\n * @type {!function(string, ProtoBuf.Builder.Message, function(Error, ProtoBuf.Builder.Message=))}\r\n * @expose\r\n */\r\n this.rpcImpl = rpcImpl || function(name, msg, callback) {\r\n // This is what a user has to implement: A function receiving the method name, the actual message to\r\n // send (type checked) and the callback that's either provided with the error as its first\r\n // argument or null and the actual response message.\r\n setTimeout(callback.bind(this, Error(\"Not implemented, see: https://github.com/dcodeIO/ProtoBuf.js/wiki/Services\")), 0); // Must be async!\r\n };\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Builder.Service.prototype\r\n * @inner\r\n */\r\n var ServicePrototype = Service.prototype = Object.create(ProtoBuf.Builder.Service.prototype);\r\n\r\n /**\r\n * Asynchronously performs an RPC call using the given RPC implementation.\r\n * @name ProtoBuf.Builder.Service.[Method]\r\n * @function\r\n * @param {!function(string, ProtoBuf.Builder.Message, function(Error, ProtoBuf.Builder.Message=))} rpcImpl RPC implementation\r\n * @param {ProtoBuf.Builder.Message} req Request\r\n * @param {function(Error, (ProtoBuf.Builder.Message|ByteBuffer|Buffer|string)=)} callback Callback receiving\r\n * the error if any and the response either as a pre-parsed message or as its raw bytes\r\n * @abstract\r\n */\r\n\r\n /**\r\n * Asynchronously performs an RPC call using the instance's RPC implementation.\r\n * @name ProtoBuf.Builder.Service#[Method]\r\n * @function\r\n * @param {ProtoBuf.Builder.Message} req Request\r\n * @param {function(Error, (ProtoBuf.Builder.Message|ByteBuffer|Buffer|string)=)} callback Callback receiving\r\n * the error if any and the response either as a pre-parsed message or as its raw bytes\r\n * @abstract\r\n */\r\n\r\n var rpc = T.getChildren(ProtoBuf.Reflect.Service.RPCMethod);\r\n for (var i=0; i}\r\n * @expose\r\n */\r\n var $optionsS; // cc needs this\r\n\r\n /**\r\n * Service options.\r\n * @name ProtoBuf.Builder.Service#$options\r\n * @type {Object.}\r\n * @expose\r\n */\r\n var $options;\r\n\r\n /**\r\n * Reflection type.\r\n * @name ProtoBuf.Builder.Service.$type\r\n * @type {!ProtoBuf.Reflect.Service}\r\n * @expose\r\n */\r\n var $typeS;\r\n\r\n /**\r\n * Reflection type.\r\n * @name ProtoBuf.Builder.Service#$type\r\n * @type {!ProtoBuf.Reflect.Service}\r\n * @expose\r\n */\r\n var $type;\r\n\r\n if (Object.defineProperty)\r\n Object.defineProperty(Service, \"$options\", { \"value\": T.buildOpt() }),\r\n Object.defineProperty(ServicePrototype, \"$options\", { \"value\": Service[\"$options\"] }),\r\n Object.defineProperty(Service, \"$type\", { \"value\": T }),\r\n Object.defineProperty(ServicePrototype, \"$type\", { \"value\": T });\r\n\r\n return Service;\r\n\r\n })(ProtoBuf, this);\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service\r\n * @expose\r\n */\r\n Reflect.Service = Service;\r\n\r\n /**\r\n * Abstract service method.\r\n * @exports ProtoBuf.Reflect.Service.Method\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Service} svc Service\r\n * @param {string} name Method name\r\n * @param {Object.=} options Options\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.T\r\n */\r\n var Method = function(builder, svc, name, options) {\r\n T.call(this, builder, svc, name);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Service.Method\";\r\n\r\n /**\r\n * Options.\r\n * @type {Object.}\r\n * @expose\r\n */\r\n this.options = options || {};\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service.Method.prototype\r\n * @inner\r\n */\r\n var MethodPrototype = Method.prototype = Object.create(T.prototype);\r\n\r\n /**\r\n * Builds the method's '$options' property.\r\n * @name ProtoBuf.Reflect.Service.Method#buildOpt\r\n * @function\r\n * @return {Object.}\r\n */\r\n MethodPrototype.buildOpt = NamespacePrototype.buildOpt;\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service.Method\r\n * @expose\r\n */\r\n Reflect.Service.Method = Method;\r\n\r\n /**\r\n * RPC service method.\r\n * @exports ProtoBuf.Reflect.Service.RPCMethod\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Service} svc Service\r\n * @param {string} name Method name\r\n * @param {string} request Request message name\r\n * @param {string} response Response message name\r\n * @param {boolean} request_stream Whether requests are streamed\r\n * @param {boolean} response_stream Whether responses are streamed\r\n * @param {Object.=} options Options\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Service.Method\r\n */\r\n var RPCMethod = function(builder, svc, name, request, response, request_stream, response_stream, options) {\r\n Method.call(this, builder, svc, name, options);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Service.RPCMethod\";\r\n\r\n /**\r\n * Request message name.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.requestName = request;\r\n\r\n /**\r\n * Response message name.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.responseName = response;\r\n\r\n /**\r\n * Whether requests are streamed\r\n * @type {bool}\r\n * @expose\r\n */\r\n this.requestStream = request_stream;\r\n\r\n /**\r\n * Whether responses are streamed\r\n * @type {bool}\r\n * @expose\r\n */\r\n this.responseStream = response_stream;\r\n\r\n /**\r\n * Resolved request message type.\r\n * @type {ProtoBuf.Reflect.Message}\r\n * @expose\r\n */\r\n this.resolvedRequestType = null;\r\n\r\n /**\r\n * Resolved response message type.\r\n * @type {ProtoBuf.Reflect.Message}\r\n * @expose\r\n */\r\n this.resolvedResponseType = null;\r\n };\r\n\r\n // Extends Method\r\n RPCMethod.prototype = Object.create(Method.prototype);\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service.RPCMethod\r\n * @expose\r\n */\r\n Reflect.Service.RPCMethod = RPCMethod;\r\n\r\n return Reflect;\r\n\r\n })(ProtoBuf);\r\n\r\n /**\r\n * @alias ProtoBuf.Builder\r\n * @expose\r\n */\r\n ProtoBuf.Builder = (function(ProtoBuf, Lang, Reflect) {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a new Builder.\r\n * @exports ProtoBuf.Builder\r\n * @class Provides the functionality to build protocol messages.\r\n * @param {Object.=} options Options\r\n * @constructor\r\n */\r\n var Builder = function(options) {\r\n\r\n /**\r\n * Namespace.\r\n * @type {ProtoBuf.Reflect.Namespace}\r\n * @expose\r\n */\r\n this.ns = new Reflect.Namespace(this, null, \"\"); // Global namespace\r\n\r\n /**\r\n * Namespace pointer.\r\n * @type {ProtoBuf.Reflect.T}\r\n * @expose\r\n */\r\n this.ptr = this.ns;\r\n\r\n /**\r\n * Resolved flag.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.resolved = false;\r\n\r\n /**\r\n * The current building result.\r\n * @type {Object.|null}\r\n * @expose\r\n */\r\n this.result = null;\r\n\r\n /**\r\n * Imported files.\r\n * @type {Array.}\r\n * @expose\r\n */\r\n this.files = {};\r\n\r\n /**\r\n * Import root override.\r\n * @type {?string}\r\n * @expose\r\n */\r\n this.importRoot = null;\r\n\r\n /**\r\n * Options.\r\n * @type {!Object.}\r\n * @expose\r\n */\r\n this.options = options || {};\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Builder.prototype\r\n * @inner\r\n */\r\n var BuilderPrototype = Builder.prototype;\r\n\r\n // ----- Definition tests -----\r\n\r\n /**\r\n * Tests if a definition most likely describes a message.\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isMessage = function(def) {\r\n // Messages require a string name\r\n if (typeof def[\"name\"] !== 'string')\r\n return false;\r\n // Messages do not contain values (enum) or rpc methods (service)\r\n if (typeof def[\"values\"] !== 'undefined' || typeof def[\"rpc\"] !== 'undefined')\r\n return false;\r\n return true;\r\n };\r\n\r\n /**\r\n * Tests if a definition most likely describes a message field.\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isMessageField = function(def) {\r\n // Message fields require a string rule, name and type and an id\r\n if (typeof def[\"rule\"] !== 'string' || typeof def[\"name\"] !== 'string' || typeof def[\"type\"] !== 'string' || typeof def[\"id\"] === 'undefined')\r\n return false;\r\n return true;\r\n };\r\n\r\n /**\r\n * Tests if a definition most likely describes an enum.\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isEnum = function(def) {\r\n // Enums require a string name\r\n if (typeof def[\"name\"] !== 'string')\r\n return false;\r\n // Enums require at least one value\r\n if (typeof def[\"values\"] === 'undefined' || !Array.isArray(def[\"values\"]) || def[\"values\"].length === 0)\r\n return false;\r\n return true;\r\n };\r\n\r\n /**\r\n * Tests if a definition most likely describes a service.\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isService = function(def) {\r\n // Services require a string name and an rpc object\r\n if (typeof def[\"name\"] !== 'string' || typeof def[\"rpc\"] !== 'object' || !def[\"rpc\"])\r\n return false;\r\n return true;\r\n };\r\n\r\n /**\r\n * Tests if a definition most likely describes an extended message\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isExtend = function(def) {\r\n // Extends rquire a string ref\r\n if (typeof def[\"ref\"] !== 'string')\r\n return false;\r\n return true;\r\n };\r\n\r\n // ----- Building -----\r\n\r\n /**\r\n * Resets the pointer to the root namespace.\r\n * @returns {!ProtoBuf.Builder} this\r\n * @expose\r\n */\r\n BuilderPrototype.reset = function() {\r\n this.ptr = this.ns;\r\n return this;\r\n };\r\n\r\n /**\r\n * Defines a namespace on top of the current pointer position and places the pointer on it.\r\n * @param {string} namespace\r\n * @return {!ProtoBuf.Builder} this\r\n * @expose\r\n */\r\n BuilderPrototype.define = function(namespace) {\r\n if (typeof namespace !== 'string' || !Lang.TYPEREF.test(namespace))\r\n throw Error(\"illegal namespace: \"+namespace);\r\n namespace.split(\".\").forEach(function(part) {\r\n var ns = this.ptr.getChild(part);\r\n if (ns === null) // Keep existing\r\n this.ptr.addChild(ns = new Reflect.Namespace(this, this.ptr, part));\r\n this.ptr = ns;\r\n }, this);\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates the specified definitions at the current pointer position.\r\n * @param {!Array.} defs Messages, enums or services to create\r\n * @returns {!ProtoBuf.Builder} this\r\n * @throws {Error} If a message definition is invalid\r\n * @expose\r\n */\r\n BuilderPrototype.create = function(defs) {\r\n if (!defs)\r\n return this; // Nothing to create\r\n if (!Array.isArray(defs))\r\n defs = [defs];\r\n else {\r\n if (defs.length === 0)\r\n return this;\r\n defs = defs.slice();\r\n }\r\n\r\n // It's quite hard to keep track of scopes and memory here, so let's do this iteratively.\r\n var stack = [defs];\r\n while (stack.length > 0) {\r\n defs = stack.pop();\r\n\r\n if (!Array.isArray(defs)) // Stack always contains entire namespaces\r\n throw Error(\"not a valid namespace: \"+JSON.stringify(defs));\r\n\r\n while (defs.length > 0) {\r\n var def = defs.shift(); // Namespaces always contain an array of messages, enums and services\r\n\r\n if (Builder.isMessage(def)) {\r\n var obj = new Reflect.Message(this, this.ptr, def[\"name\"], def[\"options\"], def[\"isGroup\"], def[\"syntax\"]);\r\n\r\n // Create OneOfs\r\n var oneofs = {};\r\n if (def[\"oneofs\"])\r\n Object.keys(def[\"oneofs\"]).forEach(function(name) {\r\n obj.addChild(oneofs[name] = new Reflect.Message.OneOf(this, obj, name));\r\n }, this);\r\n\r\n // Create fields\r\n if (def[\"fields\"])\r\n def[\"fields\"].forEach(function(fld) {\r\n if (obj.getChild(fld[\"id\"]|0) !== null)\r\n throw Error(\"duplicate or invalid field id in \"+obj.name+\": \"+fld['id']);\r\n if (fld[\"options\"] && typeof fld[\"options\"] !== 'object')\r\n throw Error(\"illegal field options in \"+obj.name+\"#\"+fld[\"name\"]);\r\n var oneof = null;\r\n if (typeof fld[\"oneof\"] === 'string' && !(oneof = oneofs[fld[\"oneof\"]]))\r\n throw Error(\"illegal oneof in \"+obj.name+\"#\"+fld[\"name\"]+\": \"+fld[\"oneof\"]);\r\n fld = new Reflect.Message.Field(this, obj, fld[\"rule\"], fld[\"keytype\"], fld[\"type\"], fld[\"name\"], fld[\"id\"], fld[\"options\"], oneof, def[\"syntax\"]);\r\n if (oneof)\r\n oneof.fields.push(fld);\r\n obj.addChild(fld);\r\n }, this);\r\n\r\n // Push children to stack\r\n var subObj = [];\r\n if (def[\"enums\"])\r\n def[\"enums\"].forEach(function(enm) {\r\n subObj.push(enm);\r\n });\r\n if (def[\"messages\"])\r\n def[\"messages\"].forEach(function(msg) {\r\n subObj.push(msg);\r\n });\r\n if (def[\"services\"])\r\n def[\"services\"].forEach(function(svc) {\r\n subObj.push(svc);\r\n });\r\n\r\n // Set extension ranges\r\n if (def[\"extensions\"]) {\r\n if (typeof def[\"extensions\"][0] === 'number') // pre 5.0.1\r\n obj.extensions = [ def[\"extensions\"] ];\r\n else\r\n obj.extensions = def[\"extensions\"];\r\n }\r\n\r\n // Create on top of current namespace\r\n this.ptr.addChild(obj);\r\n if (subObj.length > 0) {\r\n stack.push(defs); // Push the current level back\r\n defs = subObj; // Continue processing sub level\r\n subObj = null;\r\n this.ptr = obj; // And move the pointer to this namespace\r\n obj = null;\r\n continue;\r\n }\r\n subObj = null;\r\n\r\n } else if (Builder.isEnum(def)) {\r\n\r\n obj = new Reflect.Enum(this, this.ptr, def[\"name\"], def[\"options\"], def[\"syntax\"]);\r\n def[\"values\"].forEach(function(val) {\r\n obj.addChild(new Reflect.Enum.Value(this, obj, val[\"name\"], val[\"id\"]));\r\n }, this);\r\n this.ptr.addChild(obj);\r\n\r\n } else if (Builder.isService(def)) {\r\n\r\n obj = new Reflect.Service(this, this.ptr, def[\"name\"], def[\"options\"]);\r\n Object.keys(def[\"rpc\"]).forEach(function(name) {\r\n var mtd = def[\"rpc\"][name];\r\n obj.addChild(new Reflect.Service.RPCMethod(this, obj, name, mtd[\"request\"], mtd[\"response\"], !!mtd[\"request_stream\"], !!mtd[\"response_stream\"], mtd[\"options\"]));\r\n }, this);\r\n this.ptr.addChild(obj);\r\n\r\n } else if (Builder.isExtend(def)) {\r\n\r\n obj = this.ptr.resolve(def[\"ref\"], true);\r\n if (obj) {\r\n def[\"fields\"].forEach(function(fld) {\r\n if (obj.getChild(fld['id']|0) !== null)\r\n throw Error(\"duplicate extended field id in \"+obj.name+\": \"+fld['id']);\r\n // Check if field id is allowed to be extended\r\n if (obj.extensions) {\r\n var valid = false;\r\n obj.extensions.forEach(function(range) {\r\n if (fld[\"id\"] >= range[0] && fld[\"id\"] <= range[1])\r\n valid = true;\r\n });\r\n if (!valid)\r\n throw Error(\"illegal extended field id in \"+obj.name+\": \"+fld['id']+\" (not within valid ranges)\");\r\n }\r\n // Convert extension field names to camel case notation if the override is set\r\n var name = fld[\"name\"];\r\n if (this.options['convertFieldsToCamelCase'])\r\n name = ProtoBuf.Util.toCamelCase(name);\r\n // see #161: Extensions use their fully qualified name as their runtime key and...\r\n var field = new Reflect.Message.ExtensionField(this, obj, fld[\"rule\"], fld[\"type\"], this.ptr.fqn()+'.'+name, fld[\"id\"], fld[\"options\"]);\r\n // ...are added on top of the current namespace as an extension which is used for\r\n // resolving their type later on (the extension always keeps the original name to\r\n // prevent naming collisions)\r\n var ext = new Reflect.Extension(this, this.ptr, fld[\"name\"], field);\r\n field.extension = ext;\r\n this.ptr.addChild(ext);\r\n obj.addChild(field);\r\n }, this);\r\n\r\n } else if (!/\\.?google\\.protobuf\\./.test(def[\"ref\"])) // Silently skip internal extensions\r\n throw Error(\"extended message \"+def[\"ref\"]+\" is not defined\");\r\n\r\n } else\r\n throw Error(\"not a valid definition: \"+JSON.stringify(def));\r\n\r\n def = null;\r\n obj = null;\r\n }\r\n // Break goes here\r\n defs = null;\r\n this.ptr = this.ptr.parent; // Namespace done, continue at parent\r\n }\r\n this.resolved = false; // Require re-resolve\r\n this.result = null; // Require re-build\r\n return this;\r\n };\r\n\r\n /**\r\n * Propagates syntax to all children.\r\n * @param {!Object} parent\r\n * @inner\r\n */\r\n function propagateSyntax(parent) {\r\n if (parent['messages']) {\r\n parent['messages'].forEach(function(child) {\r\n child[\"syntax\"] = parent[\"syntax\"];\r\n propagateSyntax(child);\r\n });\r\n }\r\n if (parent['enums']) {\r\n parent['enums'].forEach(function(child) {\r\n child[\"syntax\"] = parent[\"syntax\"];\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Imports another definition into this builder.\r\n * @param {Object.} json Parsed import\r\n * @param {(string|{root: string, file: string})=} filename Imported file name\r\n * @returns {!ProtoBuf.Builder} this\r\n * @throws {Error} If the definition or file cannot be imported\r\n * @expose\r\n */\r\n BuilderPrototype[\"import\"] = function(json, filename) {\r\n var delim = '/';\r\n\r\n // Make sure to skip duplicate imports\r\n\r\n if (typeof filename === 'string') {\r\n\r\n if (ProtoBuf.Util.IS_NODE)\r\n filename = require(\"path\")['resolve'](filename);\r\n if (this.files[filename] === true)\r\n return this.reset();\r\n this.files[filename] = true;\r\n\r\n } else if (typeof filename === 'object') { // Object with root, file.\r\n\r\n var root = filename.root;\r\n if (ProtoBuf.Util.IS_NODE)\r\n root = require(\"path\")['resolve'](root);\r\n if (root.indexOf(\"\\\\\") >= 0 || filename.file.indexOf(\"\\\\\") >= 0)\r\n delim = '\\\\';\r\n var fname;\r\n if (ProtoBuf.Util.IS_NODE)\r\n fname = require(\"path\")['join'](root, filename.file);\r\n else\r\n fname = root + delim + filename.file;\r\n if (this.files[fname] === true)\r\n return this.reset();\r\n this.files[fname] = true;\r\n }\r\n\r\n // Import imports\r\n\r\n if (json['imports'] && json['imports'].length > 0) {\r\n var importRoot,\r\n resetRoot = false;\r\n\r\n if (typeof filename === 'object') { // If an import root is specified, override\r\n\r\n this.importRoot = filename[\"root\"]; resetRoot = true; // ... and reset afterwards\r\n importRoot = this.importRoot;\r\n filename = filename[\"file\"];\r\n if (importRoot.indexOf(\"\\\\\") >= 0 || filename.indexOf(\"\\\\\") >= 0)\r\n delim = '\\\\';\r\n\r\n } else if (typeof filename === 'string') {\r\n\r\n if (this.importRoot) // If import root is overridden, use it\r\n importRoot = this.importRoot;\r\n else { // Otherwise compute from filename\r\n if (filename.indexOf(\"/\") >= 0) { // Unix\r\n importRoot = filename.replace(/\\/[^\\/]*$/, \"\");\r\n if (/* /file.proto */ importRoot === \"\")\r\n importRoot = \"/\";\r\n } else if (filename.indexOf(\"\\\\\") >= 0) { // Windows\r\n importRoot = filename.replace(/\\\\[^\\\\]*$/, \"\");\r\n delim = '\\\\';\r\n } else\r\n importRoot = \".\";\r\n }\r\n\r\n } else\r\n importRoot = null;\r\n\r\n for (var i=0; i)=} path Specifies what to return. If omitted, the entire namespace will be returned.\r\n * @returns {!ProtoBuf.Builder.Message|!Object.}\r\n * @throws {Error} If a type could not be resolved\r\n * @expose\r\n */\r\n BuilderPrototype.build = function(path) {\r\n this.reset();\r\n if (!this.resolved)\r\n this.resolveAll(),\r\n this.resolved = true,\r\n this.result = null; // Require re-build\r\n if (this.result === null) // (Re-)Build\r\n this.result = this.ns.build();\r\n if (!path)\r\n return this.result;\r\n var part = typeof path === 'string' ? path.split(\".\") : path,\r\n ptr = this.result; // Build namespace pointer (no hasChild etc.)\r\n for (var i=0; i=} contents Initial contents\r\n * @constructor\r\n */\r\n var Map = function(field, contents) {\r\n if (!field.map)\r\n throw Error(\"field is not a map\");\r\n\r\n /**\r\n * The field corresponding to this map.\r\n * @type {!ProtoBuf.Reflect.Field}\r\n */\r\n this.field = field;\r\n\r\n /**\r\n * Element instance corresponding to key type.\r\n * @type {!ProtoBuf.Reflect.Element}\r\n */\r\n this.keyElem = new Reflect.Element(field.keyType, null, true, field.syntax);\r\n\r\n /**\r\n * Element instance corresponding to value type.\r\n * @type {!ProtoBuf.Reflect.Element}\r\n */\r\n this.valueElem = new Reflect.Element(field.type, field.resolvedType, false, field.syntax);\r\n\r\n /**\r\n * Internal map: stores mapping of (string form of key) -> (key, value)\r\n * pair.\r\n *\r\n * We provide map semantics for arbitrary key types, but we build on top\r\n * of an Object, which has only string keys. In order to avoid the need\r\n * to convert a string key back to its native type in many situations,\r\n * we store the native key value alongside the value. Thus, we only need\r\n * a one-way mapping from a key type to its string form that guarantees\r\n * uniqueness and equality (i.e., str(K1) === str(K2) if and only if K1\r\n * === K2).\r\n *\r\n * @type {!Object}\r\n */\r\n this.map = {};\r\n\r\n /**\r\n * Returns the number of elements in the map.\r\n */\r\n Object.defineProperty(this, \"size\", {\r\n get: function() { return Object.keys(this.map).length; }\r\n });\r\n\r\n // Fill initial contents from a raw object.\r\n if (contents) {\r\n var keys = Object.keys(contents);\r\n for (var i = 0; i < keys.length; i++) {\r\n var key = this.keyElem.valueFromString(keys[i]);\r\n var val = this.valueElem.verifyValue(contents[keys[i]]);\r\n this.map[this.keyElem.valueToString(key)] =\r\n { key: key, value: val };\r\n }\r\n }\r\n };\r\n\r\n var MapPrototype = Map.prototype;\r\n\r\n /**\r\n * Helper: return an iterator over an array.\r\n * @param {!Array<*>} arr the array\r\n * @returns {!Object} an iterator\r\n * @inner\r\n */\r\n function arrayIterator(arr) {\r\n var idx = 0;\r\n return {\r\n next: function() {\r\n if (idx < arr.length)\r\n return { done: false, value: arr[idx++] };\r\n return { done: true };\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Clears the map.\r\n */\r\n MapPrototype.clear = function() {\r\n this.map = {};\r\n };\r\n\r\n /**\r\n * Deletes a particular key from the map.\r\n * @returns {boolean} Whether any entry with this key was deleted.\r\n */\r\n MapPrototype[\"delete\"] = function(key) {\r\n var keyValue = this.keyElem.valueToString(this.keyElem.verifyValue(key));\r\n var hadKey = keyValue in this.map;\r\n delete this.map[keyValue];\r\n return hadKey;\r\n };\r\n\r\n /**\r\n * Returns an iterator over [key, value] pairs in the map.\r\n * @returns {Object} The iterator\r\n */\r\n MapPrototype.entries = function() {\r\n var entries = [];\r\n var strKeys = Object.keys(this.map);\r\n for (var i = 0, entry; i < strKeys.length; i++)\r\n entries.push([(entry=this.map[strKeys[i]]).key, entry.value]);\r\n return arrayIterator(entries);\r\n };\r\n\r\n /**\r\n * Returns an iterator over keys in the map.\r\n * @returns {Object} The iterator\r\n */\r\n MapPrototype.keys = function() {\r\n var keys = [];\r\n var strKeys = Object.keys(this.map);\r\n for (var i = 0; i < strKeys.length; i++)\r\n keys.push(this.map[strKeys[i]].key);\r\n return arrayIterator(keys);\r\n };\r\n\r\n /**\r\n * Returns an iterator over values in the map.\r\n * @returns {!Object} The iterator\r\n */\r\n MapPrototype.values = function() {\r\n var values = [];\r\n var strKeys = Object.keys(this.map);\r\n for (var i = 0; i < strKeys.length; i++)\r\n values.push(this.map[strKeys[i]].value);\r\n return arrayIterator(values);\r\n };\r\n\r\n /**\r\n * Iterates over entries in the map, calling a function on each.\r\n * @param {function(this:*, *, *, *)} cb The callback to invoke with value, key, and map arguments.\r\n * @param {Object=} thisArg The `this` value for the callback\r\n */\r\n MapPrototype.forEach = function(cb, thisArg) {\r\n var strKeys = Object.keys(this.map);\r\n for (var i = 0, entry; i < strKeys.length; i++)\r\n cb.call(thisArg, (entry=this.map[strKeys[i]]).value, entry.key, this);\r\n };\r\n\r\n /**\r\n * Sets a key in the map to the given value.\r\n * @param {*} key The key\r\n * @param {*} value The value\r\n * @returns {!ProtoBuf.Map} The map instance\r\n */\r\n MapPrototype.set = function(key, value) {\r\n var keyValue = this.keyElem.verifyValue(key);\r\n var valValue = this.valueElem.verifyValue(value);\r\n this.map[this.keyElem.valueToString(keyValue)] =\r\n { key: keyValue, value: valValue };\r\n return this;\r\n };\r\n\r\n /**\r\n * Gets the value corresponding to a key in the map.\r\n * @param {*} key The key\r\n * @returns {*|undefined} The value, or `undefined` if key not present\r\n */\r\n MapPrototype.get = function(key) {\r\n var keyValue = this.keyElem.valueToString(this.keyElem.verifyValue(key));\r\n if (!(keyValue in this.map))\r\n return undefined;\r\n return this.map[keyValue].value;\r\n };\r\n\r\n /**\r\n * Determines whether the given key is present in the map.\r\n * @param {*} key The key\r\n * @returns {boolean} `true` if the key is present\r\n */\r\n MapPrototype.has = function(key) {\r\n var keyValue = this.keyElem.valueToString(this.keyElem.verifyValue(key));\r\n return (keyValue in this.map);\r\n };\r\n\r\n return Map;\r\n })(ProtoBuf, ProtoBuf.Reflect);\r\n\r\n\r\n /**\r\n * Loads a .proto string and returns the Builder.\r\n * @param {string} proto .proto file contents\r\n * @param {(ProtoBuf.Builder|string|{root: string, file: string})=} builder Builder to append to. Will create a new one if omitted.\r\n * @param {(string|{root: string, file: string})=} filename The corresponding file name if known. Must be specified for imports.\r\n * @return {ProtoBuf.Builder} Builder to create new messages\r\n * @throws {Error} If the definition cannot be parsed or built\r\n * @expose\r\n */\r\n ProtoBuf.loadProto = function(proto, builder, filename) {\r\n if (typeof builder === 'string' || (builder && typeof builder[\"file\"] === 'string' && typeof builder[\"root\"] === 'string'))\r\n filename = builder,\r\n builder = undefined;\r\n return ProtoBuf.loadJson(ProtoBuf.DotProto.Parser.parse(proto), builder, filename);\r\n };\r\n\r\n /**\r\n * Loads a .proto string and returns the Builder. This is an alias of {@link ProtoBuf.loadProto}.\r\n * @function\r\n * @param {string} proto .proto file contents\r\n * @param {(ProtoBuf.Builder|string)=} builder Builder to append to. Will create a new one if omitted.\r\n * @param {(string|{root: string, file: string})=} filename The corresponding file name if known. Must be specified for imports.\r\n * @return {ProtoBuf.Builder} Builder to create new messages\r\n * @throws {Error} If the definition cannot be parsed or built\r\n * @expose\r\n */\r\n ProtoBuf.protoFromString = ProtoBuf.loadProto; // Legacy\r\n\r\n /**\r\n * Loads a .proto file and returns the Builder.\r\n * @param {string|{root: string, file: string}} filename Path to proto file or an object specifying 'file' with\r\n * an overridden 'root' path for all imported files.\r\n * @param {function(?Error, !ProtoBuf.Builder=)=} callback Callback that will receive `null` as the first and\r\n * the Builder as its second argument on success, otherwise the error as its first argument. If omitted, the\r\n * file will be read synchronously and this function will return the Builder.\r\n * @param {ProtoBuf.Builder=} builder Builder to append to. Will create a new one if omitted.\r\n * @return {?ProtoBuf.Builder|undefined} The Builder if synchronous (no callback specified, will be NULL if the\r\n * request has failed), else undefined\r\n * @expose\r\n */\r\n ProtoBuf.loadProtoFile = function(filename, callback, builder) {\r\n if (callback && typeof callback === 'object')\r\n builder = callback,\r\n callback = null;\r\n else if (!callback || typeof callback !== 'function')\r\n callback = null;\r\n if (callback)\r\n return ProtoBuf.Util.fetch(typeof filename === 'string' ? filename : filename[\"root\"]+\"/\"+filename[\"file\"], function(contents) {\r\n if (contents === null) {\r\n callback(Error(\"Failed to fetch file\"));\r\n return;\r\n }\r\n try {\r\n callback(null, ProtoBuf.loadProto(contents, builder, filename));\r\n } catch (e) {\r\n callback(e);\r\n }\r\n });\r\n var contents = ProtoBuf.Util.fetch(typeof filename === 'object' ? filename[\"root\"]+\"/\"+filename[\"file\"] : filename);\r\n return contents === null ? null : ProtoBuf.loadProto(contents, builder, filename);\r\n };\r\n\r\n /**\r\n * Loads a .proto file and returns the Builder. This is an alias of {@link ProtoBuf.loadProtoFile}.\r\n * @function\r\n * @param {string|{root: string, file: string}} filename Path to proto file or an object specifying 'file' with\r\n * an overridden 'root' path for all imported files.\r\n * @param {function(?Error, !ProtoBuf.Builder=)=} callback Callback that will receive `null` as the first and\r\n * the Builder as its second argument on success, otherwise the error as its first argument. If omitted, the\r\n * file will be read synchronously and this function will return the Builder.\r\n * @param {ProtoBuf.Builder=} builder Builder to append to. Will create a new one if omitted.\r\n * @return {!ProtoBuf.Builder|undefined} The Builder if synchronous (no callback specified, will be NULL if the\r\n * request has failed), else undefined\r\n * @expose\r\n */\r\n ProtoBuf.protoFromFile = ProtoBuf.loadProtoFile; // Legacy\r\n\r\n\r\n /**\r\n * Constructs a new empty Builder.\r\n * @param {Object.=} options Builder options, defaults to global options set on ProtoBuf\r\n * @return {!ProtoBuf.Builder} Builder\r\n * @expose\r\n */\r\n ProtoBuf.newBuilder = function(options) {\r\n options = options || {};\r\n if (typeof options['convertFieldsToCamelCase'] === 'undefined')\r\n options['convertFieldsToCamelCase'] = ProtoBuf.convertFieldsToCamelCase;\r\n if (typeof options['populateAccessors'] === 'undefined')\r\n options['populateAccessors'] = ProtoBuf.populateAccessors;\r\n return new ProtoBuf.Builder(options);\r\n };\r\n\r\n /**\r\n * Loads a .json definition and returns the Builder.\r\n * @param {!*|string} json JSON definition\r\n * @param {(ProtoBuf.Builder|string|{root: string, file: string})=} builder Builder to append to. Will create a new one if omitted.\r\n * @param {(string|{root: string, file: string})=} filename The corresponding file name if known. Must be specified for imports.\r\n * @return {ProtoBuf.Builder} Builder to create new messages\r\n * @throws {Error} If the definition cannot be parsed or built\r\n * @expose\r\n */\r\n ProtoBuf.loadJson = function(json, builder, filename) {\r\n if (typeof builder === 'string' || (builder && typeof builder[\"file\"] === 'string' && typeof builder[\"root\"] === 'string'))\r\n filename = builder,\r\n builder = null;\r\n if (!builder || typeof builder !== 'object')\r\n builder = ProtoBuf.newBuilder();\r\n if (typeof json === 'string')\r\n json = JSON.parse(json);\r\n builder[\"import\"](json, filename);\r\n builder.resolveAll();\r\n return builder;\r\n };\r\n\r\n /**\r\n * Loads a .json file and returns the Builder.\r\n * @param {string|!{root: string, file: string}} filename Path to json file or an object specifying 'file' with\r\n * an overridden 'root' path for all imported files.\r\n * @param {function(?Error, !ProtoBuf.Builder=)=} callback Callback that will receive `null` as the first and\r\n * the Builder as its second argument on success, otherwise the error as its first argument. If omitted, the\r\n * file will be read synchronously and this function will return the Builder.\r\n * @param {ProtoBuf.Builder=} builder Builder to append to. Will create a new one if omitted.\r\n * @return {?ProtoBuf.Builder|undefined} The Builder if synchronous (no callback specified, will be NULL if the\r\n * request has failed), else undefined\r\n * @expose\r\n */\r\n ProtoBuf.loadJsonFile = function(filename, callback, builder) {\r\n if (callback && typeof callback === 'object')\r\n builder = callback,\r\n callback = null;\r\n else if (!callback || typeof callback !== 'function')\r\n callback = null;\r\n if (callback)\r\n return ProtoBuf.Util.fetch(typeof filename === 'string' ? filename : filename[\"root\"]+\"/\"+filename[\"file\"], function(contents) {\r\n if (contents === null) {\r\n callback(Error(\"Failed to fetch file\"));\r\n return;\r\n }\r\n try {\r\n callback(null, ProtoBuf.loadJson(JSON.parse(contents), builder, filename));\r\n } catch (e) {\r\n callback(e);\r\n }\r\n });\r\n var contents = ProtoBuf.Util.fetch(typeof filename === 'object' ? filename[\"root\"]+\"/\"+filename[\"file\"] : filename);\r\n return contents === null ? null : ProtoBuf.loadJson(JSON.parse(contents), builder, filename);\r\n };\r\n\r\n return ProtoBuf;\r\n});\r\n"]} \ No newline at end of file diff --git a/package.json b/package.json index 579e1dafbf..eb2a667854 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,11 @@ { "name": "machinetalk-protobuf", - "version": "1.0.1", + "version": "1.1.01", "description": "Protobuf definitions to communicate with Machinetalk", "main": "js/index.js", "scripts": { - "prepublish": "js/scripts/install.js", - "bundle": "js/scripts/bundle.js" + "prepublish": "js/scripts/install.js", + "bundle": "js/scripts/bundle.js" }, "repository": { "type": "git", @@ -24,7 +24,7 @@ "homepage": "https://github.com/machinekit/machinetalk-protobuf#readme", "dependencies": { "mkdirp": "0.5.1", - "protobufjs": "5.0.0" + "protobufjs": "5.0.3" }, "devDependencies": { "browserify": "^13.0.0", diff --git a/setup.py b/setup.py index 5479dce170..0c617146d2 100644 --- a/setup.py +++ b/setup.py @@ -71,6 +71,8 @@ 'Programming Language :: Python :: 3.3', 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', + 'Programming Language :: Python :: 3.6', + 'Programming Language :: Python :: 3.7', ], # What does your project relate to? diff --git a/src/machinetalk/protobuf/jplan.proto b/src/machinetalk/protobuf/jplan.proto index ce479b6c61..1123e6a602 100644 --- a/src/machinetalk/protobuf/jplan.proto +++ b/src/machinetalk/protobuf/jplan.proto @@ -19,5 +19,5 @@ message JplanJoint { message JplanCommand { option (nanopb_msgopt).msgid = 354; - repeated JplanJoint joint = 2 [(nanopb).max_count = 10];; + repeated JplanJoint joint = 2 [(nanopb).max_count = 10]; }; From 114a7cb82ee077bab661bcd4b24ff2d921523a11 Mon Sep 17 00:00:00 2001 From: ArcEye <770392+ArcEye@users.noreply.github.com> Date: Mon, 26 Nov 2018 15:08:16 +0000 Subject: [PATCH 337/516] Revert "Remove hard kernel threads references" --- debian/rules.in | 7 + scripts/check-system-configuration.sh | 184 ++++++++++++++++---------- scripts/platform-is-supported | 73 ++++++++++ src/Makefile | 160 +++++++++++++++++----- src/Makefile.inc.in | 54 +++++++- src/Makefile.modinc.in | 19 +++ 6 files changed, 391 insertions(+), 106 deletions(-) create mode 100755 scripts/platform-is-supported diff --git a/debian/rules.in b/debian/rules.in index 410346234b..18a614575f 100755 --- a/debian/rules.in +++ b/debian/rules.in @@ -42,6 +42,8 @@ SHLIBDEPS_X += halmeter classicladder halscope THREADS_POSIX = --without-posix THREADS_RT_PREEMPT = --without-rt-preempt THREADS_XENOMAI = --without-xenomai +#THREADS_XENOMAI_KERNEL = --without-xenomai-kernel +#THREADS_RTAI_KERNEL = --without-rtai-kernel # Kernel threads need a list of configured header source directories # for each architecture @@ -50,6 +52,11 @@ THREADS_XENOMAI = --without-xenomai # DEB_HOST_ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH) +#HEADERS_XENOMAI_KERNEL_i386 = --with-xenomai-kernel-sources="" +#HEADERS_XENOMAI_KERNEL_amd64 = --with-xenomai-kernel-sources="" +#HEADERS_RTAI_KERNEL_amd64 = --with-rtai-kernel-sources="" +#HEADERS_RTAI_KERNEL_i386 = --with-rtai-kernel-sources="" + # Parallel make ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) diff --git a/scripts/check-system-configuration.sh b/scripts/check-system-configuration.sh index 1bdb4fb547..a60e15f9c8 100755 --- a/scripts/check-system-configuration.sh +++ b/scripts/check-system-configuration.sh @@ -15,7 +15,7 @@ get-conf-files() { conf_files="$*" local conflist="" for i in $conf_files; do - conflist+=" $(readlink -e $i)" + conflist+=" $(readlink -e $i)" done echo $conflist } @@ -28,45 +28,45 @@ check-rsyslog() { local nologfile=false if test ! -f $logfile then - echo "Warning: Logfile '$logfile' does not exist." - echo - echo " rsyslogd does not create non-existent log files; be" - echo " sure the (possibly empty) logfile exists and" - echo " restart rsyslogd" - echo - echo " Hint:" - echo " $ sudo touch /var/log/linuxcnc.log" - echo " $ sudo service rsyslog restart" - echo - echo " Gurus: If you intentionally log to another file," - echo " please be aware of where Machinekit logs go for" - echo " debugging purposes" - echo - res=1 - nologfile=true + echo "Warning: Logfile '$logfile' does not exist." + echo + echo " rsyslogd does not create non-existent log files; be" + echo " sure the (possibly empty) logfile exists and" + echo " restart rsyslogd" + echo + echo " Hint:" + echo " $ sudo touch /var/log/linuxcnc.log" + echo " $ sudo service rsyslog restart" + echo + echo " Gurus: If you intentionally log to another file," + echo " please be aware of where Machinekit logs go for" + echo " debugging purposes" + echo + res=1 + nologfile=true fi if test -z "$logconfigs"; then - echo "Warning: No rsyslog.conf found; system log daemon not rsyslogd?" - echo - echo " Please check your syslog configuration for" - echo " rate limiting; an example for rsyslogd can be found in" - echo " src/rtapi/rsyslogd-linuxcnc.conf" - echo + echo "Warning: No rsyslog.conf found; system log daemon not rsyslogd?" + echo + echo " Please check your syslog configuration for" + echo " rate limiting; an example for rsyslogd can be found in" + echo " src/rtapi/rsyslogd-linuxcnc.conf" + echo elif ! grep -q SystemLogRateLimitBurst $logconfigs; then - res=1 - echo "Warning: No rate limit in rsyslogd is set." - echo - echo " The 'rsyslogd' daemon drops logs when incoming at" - echo " higher than the rate configured by" - echo " 'SystemLogRateLimitBurst'. The default rate is lower" - echo " than Machinekit requires when running in debug mode." - echo - echo " Hint:" - echo " $ sudo cp rtapi/rsyslogd-linuxcnc.conf" \ - "/etc/rsyslog.d/linuxcnc.conf" - echo " $ sudo service rsyslog restart" - echo + res=1 + echo "Warning: No rate limit in rsyslogd is set." + echo + echo " The 'rsyslogd' daemon drops logs when incoming at" + echo " higher than the rate configured by" + echo " 'SystemLogRateLimitBurst'. The default rate is lower" + echo " than Machinekit requires when running in debug mode." + echo + echo " Hint:" + echo " $ sudo cp rtapi/rsyslogd-linuxcnc.conf" \ + "/etc/rsyslog.d/linuxcnc.conf" + echo " $ sudo service rsyslog restart" + echo fi test $res -ne 0 && return 1 @@ -77,15 +77,15 @@ check-rsyslog() { if grep -q $tag $logfile >/dev/null 2>/dev/null then # logging works - return 0 + return 0 else - echo "Warning: Logging appears to be not working" - echo - echo " Found rsyslogd configuration and $logfile" - echo " exists, but a test did not appear in the log." - echo " Please investigate." - echo - return 1 + echo "Warning: Logging appears to be not working" + echo + echo " Found rsyslogd configuration and $logfile" + echo " exists, but a test did not appear in the log." + echo " Please investigate." + echo + return 1 fi } @@ -96,7 +96,7 @@ check-rsyslog() { # check-ulimits() { local ulimit_configs="$(get-conf-files \ - /etc/security/limits.conf /etc/security/limits.d/*.conf)" + /etc/security/limits.conf /etc/security/limits.d/*.conf)" # a guess at what a reasonable memlock value should be local reasonable_memlock=32767 @@ -110,45 +110,91 @@ check-ulimits() { local last_ulimit_config local memlock_found=false for f in $ulimit_configs; do - mtmp=$(awk '/^\*[ \t]+(-|soft)[ \t]+memlock/ {m=$4} END {print m}' $f) - if test -n "$mtmp"; then - if test $memlock != 0; then - echo "Warning: Multiple configurations for 'memlock' setting" + mtmp=$(awk '/^\*[ \t]+(-|soft)[ \t]+memlock/ {m=$4} END {print m}' $f) + if test -n "$mtmp"; then + if test $memlock != 0; then + echo "Warning: Multiple configurations for 'memlock' setting" + echo + echo " Please check configuration in these files:" + echo " $last_ulimit_config" + echo " $f" + echo + return 1 + fi + memlock=$mtmp + memlock_found=true + last_ulimit_config=$f + fi + done + if ! $memlock_found; then + echo "Warning: no configuration for 'memlock' found" echo - echo " Please check configuration in these files:" - echo " $last_ulimit_config" - echo " $f" + echo " Hint:" + echo " $ sudo cp rtapi/shmdrv/limits.d-machinekit.conf /etc/security/limits.d/machinekit.conf" + return 1 + fi + + # Next, check the 'memlock' value looks sane + if test $memlock != unlimited && test $memlock -lt $reasonable_memlock; then + echo "Warning: Config 'memlock' value $memlock too small" + echo + echo " Value for 'memlock' in file $last_ulimit_config" + echo " should be raised to $reasonable_memlock or greater" echo return 1 - fi - memlock=$mtmp - memlock_found=true - last_ulimit_config=$f fi +} + + +# +# Check shmdrv udev configuration +# +# The shmdrv converged shared memory driver for kthreads flavors must +# be accessible. Look for a 'shmdrv.rules' file. +check-shmdrv() { + local udev_conf=/etc/udev/rules.d/50-shmdrv.rules + local udev_configs="$(get-conf-files /etc/udev/rules.d/*.rules)" + + # If $udev_conf exists, assume the contents are correct + if test -f $udev_conf; then + return 0 + fi + + # Otherwise, assume any KERNEL=="shmdrv" setting is correct + for f in $udev_configs; do + if grep -q 'KERNEL=="shmdrv"' $f; then + return 0 + fi done - if ! $memlock_found; then - echo "Warning: no configuration for 'memlock' found" + + # If we're here, we found no sign of udev configuration. + echo "Warning: No udev configuration for shmdrv was found." + echo + echo " The user running LinuxCNC must have write access to" + echo " /dev/shmdrv when running kernel threads, which may" + echo " be configured in /etc/udev/rules.d." echo echo " Hint:" - echo " $ sudo cp rtapi/shmdrv/limits.d-machinekit.conf /etc/security/limits.d/machinekit.conf" - return 1 - fi - - # Next, check the 'memlock' value looks sane - if test $memlock != unlimited && test $memlock -lt $reasonable_memlock; then - echo "Warning: Config 'memlock' value $memlock too small" + echo " $ sudo cp rtapi/shmdrv/shmdrv.rules $udev_conf" + echo " $ sudo udevadm trigger" echo - echo " Value for 'memlock' in file $last_ulimit_config" - echo " should be raised to $reasonable_memlock or greater" - echo "" return 1 - fi } HAVE_KERNEL_THREADS=false +while getopts k opt; do + case "$opt" in + k) HAVE_KERNEL_THREADS=true ;; + *) echo "Usage: $0 [ -k ]" >&2; exit 1 ;; + esac +done + res=0 check-rsyslog || res=1 check-ulimits || res=1 +if $HAVE_KERNEL_THREADS; then + check-shmdrv || res=1 +fi exit $res diff --git a/scripts/platform-is-supported b/scripts/platform-is-supported new file mode 100755 index 0000000000..fb301e064a --- /dev/null +++ b/scripts/platform-is-supported @@ -0,0 +1,73 @@ +#!/usr/bin/python2 +# +# This script returns 0 when run on a platform supported by the current +# branch of LinuxCNC, and 1 when run on an unsupported platform. It is +# intended to guide build automation on whether or not to try to build. +# + +import sys +import subprocess +import re + + +def detect_kernel_flavor(uname): + try: + f = open("/boot/config-%s" % uname) + except IOError: + print "no kernel configuration found for %s" % uname + sys.exit(1) + l = f.read(-1) + f.close() + + config_ipipe = re.search('^CONFIG_IPIPE', l, re.MULTILINE) + config_xeno = re.search('^CONFIG_XENO_', l, re.MULTILINE) + config_rtpreempt = re.search('^CONFIG_PREEMPT_RT', l, re.MULTILINE) + + if config_ipipe and not config_xeno and not config_rtpreempt: + return 'rtai' + elif config_ipipe and config_xeno and not config_rtpreempt: + return 'xenomai' + elif not config_ipipe and not config_xeno and config_rtpreempt: + return 'rtpreempt' + else: + return 'vanilla' + + +# use subprocess.Popen() in this funny way, instead of +# subprocess.check_output(), because check_output() is not in Hardy's +# Python 2.5 + +arch = subprocess.Popen(['dpkg-architecture', '-qDEB_HOST_ARCH'], stdout=subprocess.PIPE).communicate()[0][:-1] +distributor = subprocess.Popen(['lsb_release', '--id', '--short'], stdout=subprocess.PIPE).communicate()[0][:-1] + +release = subprocess.Popen(['lsb_release', '--release', '--short'], stdout=subprocess.PIPE).communicate()[0][:-1] +major, minor = re.split('\.', release) +release_major = int(major) +release_minor = int(minor) + +uname = subprocess.Popen(['uname', '-r'], stdout=subprocess.PIPE).communicate()[0][:-1] +kernel_flavor = detect_kernel_flavor(uname) + +print "arch =", arch +print "distributor =", distributor +print "release =", release +print " major =", release_major +print " minor =", release_minor +print "uname = %s (%s)" % (uname, kernel_flavor) + +if arch != "amd64" and arch != "i386": + print "unsupported architecture!" + sys.exit(1) + +if distributor == 'Ubuntu': + if release_major < 10: + print "release is too old!" + sys.exit(1) + +if kernel_flavor != 'rtai' and kernel_flavor != 'vanilla': + print "unsupported kernel flavor" + sys.exit(1) + +print "this platform is supported!" +sys.exit(0) + diff --git a/src/Makefile b/src/Makefile index b5c9c5b45e..dfb5b65ce2 100755 --- a/src/Makefile +++ b/src/Makefile @@ -78,7 +78,12 @@ BUILD_ALL_FLAVORS = no BUILD_THREAD_MODULES = yes endif # $(threads) +# if KERNELRELEASE is non-empty, we're in kbuild +ifeq ($(KERNELRELEASE),) BUILD_KBUILD = no +else +BUILD_KBUILD = yes +endif # extract the version from the kernel source version.h ifneq ($(KERNELDIR),) @@ -110,8 +115,6 @@ endif # default target: put before everything else default: -########################################################################################### - ifeq ($(BUILD_ALL_FLAVORS),yes) # Top-level modules target # @@ -121,14 +124,29 @@ ifeq ($(BUILD_ALL_FLAVORS),yes) # # Following tradition, this incarnation of the modules recipe is # placed far away from all others. - +FLAVORUP = $(shell echo $(1) | tr a-z- A-Z_) +FLAVORVAR = $($(call FLAVORUP,$(1))_THREADS_$(2)) modules: userspace - for f in $(BUILD_THREAD_FLAVORS); do \ - $(MAKE) modules threads=$$f; \ - done; \ + @$(foreach f,$(BUILD_THREAD_FLAVORS),\ + echo "Making modules for flavor $(f)"; \ + $(if $(findstring kbuild,$(call FLAVORVAR,$(f),BUILD_SYS)),\ + $(foreach kd,$(call FLAVORVAR,$(f),KERNEL_DIRS),\ + echo " kernel source dir $(kd)"; \ + $(MAKE) modules threads=$(f) KERNELDIR=$(kd);\ + ),\ + $(MAKE) modules threads=$(f);\ + )\ + ) + +ifeq ($(HAVE_KERNEL_THREADS),yes) + @test -f ../libexec/linuxcnc_module_helper -a \ + \( `stat -c %u ../libexec/linuxcnc_module_helper` -ne 0 -o \ + ! -u ../libexec/linuxcnc_module_helper \) \ + && need_setuid=1; +endif ifeq ($(RUN_IN_PLACE)+$(BUILD_DRIVERS),yes+yes) - for f in $(BUILD_THREAD_FLAVORS); do \ + for f in $(filter-out %-kernel,$(BUILD_THREAD_FLAVORS)); do \ test -f ../libexec/rtapi_app_$$f -a \ \( 0`stat -c %u ../libexec/rtapi_app_$$f 2>/dev/null` \ -ne 0 -o ! -u ../libexec/rtapi_app_$$f \) \ @@ -145,7 +163,6 @@ endif endif # BUILD_ALL_FLAVORS -############################################################################################# OBJDIR := objects/$(RTDIR_EXT) DEPDIR := depends/$(RTDIR_EXT) @@ -162,8 +179,6 @@ cc-option = $(shell \ echo "$(2)"; \ fi ;) -############################################################################################# - ifeq ($(KERNELRELEASE),) # When KERNELRELEASE is not defined, this is the userspace build. # The "modules" target is the gateway to the kernel module build. @@ -260,6 +275,10 @@ SUBDIRS := \ \ po \ +ifeq ($(HAVE_KERNEL_THREADS),yes) +SUBDIRS += module_helper +endif + ifeq ($(BUILD_WEBTALK),yes) SUBDIRS += machinetalk/webtalk endif @@ -739,6 +758,15 @@ endif # # (don't build when 'BUILD_ALL_FLAVORS' or 'BUILD_THREADS_MODULES' are set; # these are intermediate make runs) +ifeq ($(BUILD_SYS)+$(BUILD_THREAD_MODULES),kbuild+yes) +modules: $(OBJDIR)/.separate-kbuild-artifacts-hack.stamp + mkdir -p $(RTLIBDIR) + $(PYTHON) modsilent.py $(MAKE) \ + -C $(KERNELDIR) \ + SUBDIRS=$(BASEPWD)/$(OBJDIR) \ + CC="$(CC)" KBUILD_VERBOSE=$(BUILD_VERBOSE) modules + cp $(OBJDIR)/Module.symvers $(OBJDIR)/*$(MODULE_EXT) $(RTLIBDIR) +endif # BUILD_SYS == 'kbuild' # It looks almost impossible to coerce kbuild into putting build # artifacts outside the source tree. The universal build needs to @@ -756,6 +784,10 @@ $(OBJDIR)/.separate-kbuild-artifacts-hack.stamp: # never follow symbolic links cp -rlfd $(MODULE_SOURCE_DIRS) $(OBJDIR) cp -lf $(MODULE_SOURCES) $(OBJDIR) +ifeq ($(BUILD_SYS),kbuild) + # kbuild needs a full copy of this tree with + cp -rlf halcomp-srcs $(OBJDIR) +endif ln -sf $(BASEPWD)/../bin $(OBJDIR)/.. ln -sf $(BASEPWD)/../scripts $(OBJDIR)/.. touch $@ @@ -801,7 +833,13 @@ clean: depclean modclean docclean fix_perms = test -f $(1) && chown root $(1) && chmod 4750 $(1) || true ifeq ($(BUILD_DRIVERS),yes) +ifeq ($(HAVE_KERNEL_THREADS),yes) +CHECK_KFLAV_SWITCH=-k +endif setuid: +ifeq ($(HAVE_KERNEL_THREADS),yes) + $(call fix_perms,../libexec/linuxcnc_module_helper) +endif $(call fix_perms,../libexec/pci_read) $(call fix_perms,../libexec/pci_write) $(foreach f,$(BUILD_THREAD_FLAVORS),\ @@ -848,8 +886,7 @@ MENUS = ../share/menus/CNC.menu \ install-menus install-menu: $(MENUS) mkdir -p $(HOME)/.config/menus/applications-merged cp $< $(HOME)/.config/menus/applications-merged - -else ## ifeq($(RUN_IN_PLACE),yes) +else DOCS_HELP=$(call GLOB,../help/*) NC_FILES=$(filter-out %/butterfly.ngc,$(call GLOB,../nc_files/*)) @@ -1067,6 +1104,9 @@ endif install-kernel-dep: install-dirs $(SETUID) ../libexec/rtapi_app_* $(DESTDIR)$(EMC2_LIBEXEC_DIR) +ifeq ($(HAVE_KERNEL_THREADS),yes) + $(SETUID) ../libexec/linuxcnc_module_helper $(DESTDIR)$(EMC2_LIBEXEC_DIR) +endif ifeq ($(BUILD_DRIVERS),yes) $(SETUID) ../libexec/pci_write $(DESTDIR)$(EMC2_LIBEXEC_DIR) $(SETUID) ../libexec/pci_read $(DESTDIR)$(EMC2_LIBEXEC_DIR) @@ -1095,7 +1135,15 @@ endif done; \ fi; \ done -endif # RUN_IN_PLACE +ifeq ($(USE_SHMDRV),yes) + for srcdir in ../rtlib/shmdrv/*; do \ + kver=`basename $$srcdir`; \ + echo Installing shmdrv.ko module for kernel version $$kver; \ + $(DIR) $(DESTDIR)/lib/modules/$$kver/linuxcnc; \ + $(FILE) $$srcdir/* $(DESTDIR)/lib/modules/$$kver/linuxcnc; \ + done; +endif +endif # ! RUN_IN_PLACE CONF=../configs COMMON=$(CONF)/common @@ -1152,7 +1200,29 @@ $(call CONFILES,core_sim9.hal): %/core_sim9.hal: ../configs/common/core_sim9.hal endif # userspace -################################################################################################################# +ifneq ($(KERNELRELEASE),) +# KERNELRELEASE is non-empty, therefore we are building modules using +# the "kbuild" system. +# +INCLUDE_PREFIX = $(BASEPWD) + + +# When the Submakefile is included in the kbuild Makefile, the +# module's obj-m and foo-objs definitions may remain in the Submakefile +include $(BASEPWD)/hal/lib/Submakefile +include $(BASEPWD)/machinetalk/Submakefile +include $(BASEPWD)/hal/i_components/Submakefile +include $(BASEPWD)/hal/components/Submakefile +include $(BASEPWD)/hal/vtable-example/Submakefile +include $(BASEPWD)/hal/userfunct-example/Submakefile +include $(BASEPWD)/machinetalk/msgcomponents/Submakefile +include $(BASEPWD)/rtapi/Submakefile +include $(BASEPWD)/rtapi/shmdrv/Submakefile +include $(BASEPWD)/rtapi/rtapi_math/Submakefile +endif # KERNELRELEASE non-empty + +# $(BASEPWD) is used here, instead of relative paths, because that's +# what kbuild seems to require EXTRA_CFLAGS = $(RTFLAGS) \ $(ARCH_CFLAGS) \ @@ -1182,6 +1252,11 @@ EXTRA_CFLAGS = $(RTFLAGS) \ ifdef TARGET_PLATFORM_BEAGLEBONE EXTRA_CFLAGS += -I$(INCLUDE_PREFIX)/hal/support/pru endif +ifeq ($(BUILD_SYS),kbuild) +EXTRA_CFLAGS += $(call cc-option,-Wframe-larger-than=2560) $(call cc-option,-Wno-declaration-after-statement) +endif + + # For each module, there's an addition to obj-m or obj-$(CONFIG_foo) # plus a definition of foo-objs, which contains the full path to the @@ -1210,6 +1285,20 @@ endif # rtapi/rtapi_time.o \ # rtapi/rtapi_io.o \ # rtapi/$(THREADS_SOURCE).o +# # Kernel threads need rtapi_module.c +# ifeq ($(BUILD_SYS),kbuild) +# rtapi-objs += rtapi/rtapi_module.o +# endif +# # User threads need rtapi_pci.c +# ifeq ($(BUILD_SYS),user-dso) +# rtapi-objs += rtapi/rtapi_pci.o +# rtapi-objs += rtapi/shmdrv/shmdrvapi.o +# # and rtapi_app_main/exit stubs +# rtapi-objs += rtapi/rtapi_main.o +# # and autodetect/compat checks +# rtapi-objs += rtapi/rtapi_compat.o +# endif + # Subdirectory: rtapi/examples (unneeded?) @@ -1351,18 +1440,17 @@ endif endif # these won't compile as-is with userland threading -###################################################### -#ifneq ($(BUILD_SYS),user-dso) -#obj-$(CONFIG_HAL_M5I20) += hal_m5i20.o -#hal_m5i20-objs := hal/drivers/hal_m5i20.o $(MATHSTUB) -#obj-$(CONFIG_HAL_PPMC) += hal_ppmc.o -#hal_ppmc-objs := hal/drivers/hal_ppmc.o $(MATHSTUB) -#obj-$(CONFIG_OPTO_AC5) += opto_ac5.o -#opto_ac5-objs := hal/drivers/opto_ac5.o $(MATHSTUB) -#obj-$(CONFIG_HAL_GM) += hal_gm.o -#hal_gm-objs := hal/drivers/hal_gm.o $(MATHSTUB) -#endif -#################################################### + +ifneq ($(BUILD_SYS),user-dso) +obj-$(CONFIG_HAL_M5I20) += hal_m5i20.o +hal_m5i20-objs := hal/drivers/hal_m5i20.o $(MATHSTUB) +obj-$(CONFIG_HAL_PPMC) += hal_ppmc.o +hal_ppmc-objs := hal/drivers/hal_ppmc.o $(MATHSTUB) +obj-$(CONFIG_OPTO_AC5) += opto_ac5.o +opto_ac5-objs := hal/drivers/opto_ac5.o $(MATHSTUB) +obj-$(CONFIG_HAL_GM) += hal_gm.o +hal_gm-objs := hal/drivers/hal_gm.o $(MATHSTUB) +endif # Gnu make 'expression' syntax is pathetic. What were these guys smoking? # turn on by default @@ -1564,7 +1652,6 @@ tp-objs := $(addprefix emc/tp/, \ TORTOBJS = $(foreach file,$($(patsubst %.o,%,$(1))-objs), $(OBJDIR)/$(file)) -####################################################################################################### # USER_DSO module building # (don't build when 'BUILD_ALL_FLAVORS' or 'BUILD_THREADS_MODULES' are set; @@ -1683,8 +1770,6 @@ $(sort $(CXXRTOBJS)) : $(OBJDIR)/%.o : %.cc $(DEPDIR)/%.d endif # end BUILD_SYS=user-dso -#################################################################################################################################################### - # # ------ not used anymore ------------- # ifeq ($(BUILD_SYS),normal) # modules: $(patsubst %,$(RTLIBDIR)/%,$(obj-m)) @@ -1708,8 +1793,6 @@ endif # end BUILD_SYS=user-dso # $(Q)ld -r -static -S $(LDFLAGS) -o $@ $^ $(EXTRALINK) # endif # end 'normal' -############################################################################################## - # build kernel RTAPI modules ifneq "$(filter normal user-dso,$(BUILD_SYS))" "" #$(RTLIBDIR)/instance$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(instance-objs)) @@ -1741,22 +1824,32 @@ $(RTLIBDIR)/sampler$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(sampler-objs)) $(RTLIBDIR)/hal_parport$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_parport-objs)) $(RTLIBDIR)/probe_parport$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(probe_parport-objs)) + +ifeq ($(BUILD_SYS),user-dso) +$(RTLIBDIR)/probe_parport$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(probe_parport-objs)) +endif + ifeq ($(USERMODE_PCI),yes) $(RTLIBDIR)/hostmot2$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hostmot2-objs)) $(RTLIBDIR)/hm2_7i43$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_7i43-objs)) $(RTLIBDIR)/hm2_7i90$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_7i90-objs)) $(RTLIBDIR)/hm2_pci$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_pci-objs)) $(RTLIBDIR)/setsserial$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(setsserial-objs)) +ifeq ($(BUILD_SYS),user-dso) $(RTLIBDIR)/hm2_eth$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_eth-objs)) +endif $(RTLIBDIR)/hm2_test$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_test-objs)) endif ifdef TARGET_PLATFORM_SOCFPGA +ifeq ($(BUILD_SYS),user-dso) $(RTLIBDIR)/hostmot2$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hostmot2-objs)) $(RTLIBDIR)/hm2_soc_ol$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_soc_ol-objs)) endif +endif ifdef TARGET_PLATFORM_BEAGLEBONE +ifeq ($(BUILD_SYS),user-dso) $(RTLIBDIR)/hal_pru$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_pru-objs)) $(RTLIBDIR)/hal_pru_generic$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_pru_generic-objs)) $(RTLIBDIR)/hal_prudebug$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_prudebug-objs)) @@ -1765,6 +1858,7 @@ $(RTLIBDIR)/hal_bb_gpio$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_bb_gpio-objs) $(RTLIBDIR)/pepper$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(pepper-objs)) $(RTLIBDIR)/hal_arm335xQEP$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_arm335xQEP-objs)) endif +endif ifdef TARGET_PLATFORM_H3 $(RTLIBDIR)/hal_gpio_h3$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_gpio_h3-objs)) @@ -1827,12 +1921,8 @@ $(shell echo 1>&2 Reading $(words $(READ_RTDEPS))/$(words $(RTDEPS)) realtime de -include $(READ_RTDEPS) $(shell echo 1>&2 Done reading realtime dependencies) endif - endif # build kernel RTAPI modules -############################################################################################### - - # Phony so that it is always rebuilt when requested, not because it # shouldn't exist as a file .PHONY: tags diff --git a/src/Makefile.inc.in b/src/Makefile.inc.in index 6f2cc5f8e6..cc751161d0 100644 --- a/src/Makefile.inc.in +++ b/src/Makefile.inc.in @@ -32,16 +32,28 @@ THREADS = $(shell echo $(threads) | tr a-z- A-Z_) HAVE_POSIX_THREADS=@HAVE_POSIX_THREADS@ HAVE_RT_PREEMPT_THREADS=@HAVE_RT_PREEMPT_THREADS@ HAVE_XENOMAI_THREADS=@HAVE_XENOMAI_THREADS@ +HAVE_XENOMAI_KERNEL_THREADS=@HAVE_XENOMAI_KERNEL_THREADS@ +HAVE_RTAI_KERNEL_THREADS=@HAVE_RTAI_KERNEL_THREADS@ +# If any kthreads flavor is to be built, set HAVE_KERNEL_THREADS=yes +ifneq ($(filter-out no,\ + $(HAVE_XENOMAI_KERNEL_THREADS) $(HAVE_RTAI_KERNEL_THREADS)),) +HAVE_KERNEL_THREADS=yes +else HAVE_KERNEL_THREADS=no +endif POSIX_THREADS_FLAVOR_ID=@POSIX_THREADS_FLAVOR_ID@ RT_PREEMPT_THREADS_FLAVOR_ID=@RT_PREEMPT_THREADS_FLAVOR_ID@ XENOMAI_THREADS_FLAVOR_ID=@XENOMAI_THREADS_FLAVOR_ID@ +RTAI_KERNEL_THREADS_FLAVOR_ID=@RTAI_KERNEL_THREADS_FLAVOR_ID@ +XENOMAI_KERNEL_THREADS_FLAVOR_ID=@XENOMAI_KERNEL_THREADS_FLAVOR_ID@ THREAD_FLAVOR_ID=$($(THREADS)_THREADS_FLAVOR_ID) POSIX_THREADS_BUILD_SYS = user-dso RT_PREEMPT_THREADS_BUILD_SYS = user-dso XENOMAI_THREADS_BUILD_SYS = user-dso +XENOMAI_KERNEL_THREADS_BUILD_SYS = kbuild +RTAI_KERNEL_THREADS_BUILD_SYS = kbuild BUILD_SYS = $($(THREADS)_THREADS_BUILD_SYS) # Directories @@ -53,8 +65,12 @@ exec_prefix=@exec_prefix@ EMC2_HOME=@EMC2_HOME@ LIB_DIR=@EMC2_HOME@/lib -# flavor (and kver) subdirectories #TODO =modules here +# flavor (and kver) subdirectories +ifeq ($(BUILD_SYS),user-dso) RTDIR_EXT=$(threads) +else +RTDIR_EXT=$(threads)/$(KERNEL_VERS) +endif #used for install stuff #but have them here as reference @@ -108,27 +124,55 @@ RUN_IN_PLACE = @RUN_IN_PLACE@ POSIX_THREADS_LDFLAGS = @POSIX_THREADS_LDFLAGS@ RT_PREEMPT_THREADS_LDFLAGS = @RT_PREEMPT_THREADS_LDFLAGS@ XENOMAI_THREADS_LDFLAGS = @XENOMAI_THREADS_LDFLAGS@ +XENOMAI_KERNEL_THREADS_LDFLAGS = @XENOMAI_KERNEL_THREADS_LDFLAGS@ +RTAI_KERNEL_THREADS_LDFLAGS = @RTAI_KERNEL_THREADS_LDFLAGS@ +RT_LDFLAGS = $($(THREADS)_THREADS_LDFLAGS) -XENOMAI_THREADS_RTS=@XENOMAI_THREADS_RTS@ ## ? +XENOMAI_THREADS_RTS=@XENOMAI_THREADS_RTS@ +XENOMAI_KERNEL_THREADS_RTS=@XENOMAI_KERNEL_THREADS_RTS@ +RTAI_KERNEL_THREADS_RTS=@RTAI_KERNEL_THREADS_RTS@ + +XENOMAI_KERNEL_THREADS_KERNEL_DIRS = @XENOMAI_KERNEL_THREADS_KERNEL_DIRS@ +RTAI_KERNEL_THREADS_KERNEL_DIRS = @RTAI_KERNEL_THREADS_KERNEL_DIRS@ +SHMDRV_KERNEL_DIRS = @SHMDRV_KERNEL_DIRS@ +KERNEL_DIRS = $($(THREADS)_THREADS_KERNEL_DIRS) + +XENOMAI_KERNEL_THREADS_EXTRA_SYMBOLS = @XENOMAI_KERNEL_THREADS_EXTRA_SYMBOLS@ +RTAI_KERNEL_THREADS_EXTRA_SYMBOLS = @RTAI_KERNEL_THREADS_EXTRA_SYMBOLS@ +KBUILD_EXTRA_SYMBOLS = $($(THREADS)_THREADS_EXTRA_SYMBOLS) \ + $(EMC2_RTLIB_DIR)/Module.symvers POSIX_THREADS_RTFLAGS = @POSIX_THREADS_RTFLAGS@ RT_PREEMPT_THREADS_RTFLAGS = @RT_PREEMPT_THREADS_RTFLAGS@ XENOMAI_THREADS_RTFLAGS = @XENOMAI_THREADS_RTFLAGS@ +XENOMAI_KERNEL_THREADS_RTFLAGS = @XENOMAI_KERNEL_THREADS_RTFLAGS@ +RTAI_KERNEL_THREADS_RTFLAGS = @RTAI_KERNEL_THREADS_RTFLAGS@ THREADS_RTFLAGS = $($(THREADS)_THREADS_RTFLAGS) \ -DTHREAD_FLAVOR_ID=$(THREAD_FLAVOR_ID) RTFLAGS := -I. $(THREADS_RTFLAGS) \ -DRTAPI -D_GNU_SOURCE -D_FORTIFY_SOURCE=0 +XENOMAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS = \ + @XENOMAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS@ +RTAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS = @RTAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS@ +KERNEL_MATH_CFLAGS = $($(THREADS)_THREADS_KERNEL_MATH_CFLAGS) + ULFLAGS = -D_GNU_SOURCE -DLOCALE_DIR=\"$(localedir)\" -DPACKAGE=\"$(package)\" POSIX_THREADS_BUILD_SYS = @POSIX_THREADS_BUILD_SYS@ RT_PREEMPT_THREADS_BUILD_SYS = @RT_PREEMPT_THREADS_BUILD_SYS@ XENOMAI_THREADS_BUILD_SYS = @XENOMAI_THREADS_BUILD_SYS@ +XENOMAI_KERNEL_THREADS_BUILD_SYS = @XENOMAI_KERNEL_THREADS_BUILD_SYS@ +RTAI_KERNEL_THREADS_BUILD_SYS = @RTAI_KERNEL_THREADS_BUILD_SYS@ BUILD_SYS = $($(THREADS)_THREADS_BUILD_SYS) # module extension, used when insmod'ing +ifeq ($(BUILD_SYS),user-dso) MODULE_EXT = .so +else +MODULE_EXT = .ko +endif CC = @CC@ CC_FOR_BUILD = @CC_FOR_BUILD@ OBJCOPY = @OBJCOPY@ @@ -141,6 +185,8 @@ HIDRAW_H_USABLE = @HIDRAW_H_USABLE@ POSIX_THREADS_SOURCE = @POSIX_THREADS_SOURCE@ RT_PREEMPT_THREADS_SOURCE = @RT_PREEMPT_THREADS_SOURCE@ XENOMAI_THREADS_SOURCE = @XENOMAI_THREADS_SOURCE@ +XENOMAI_KERNEL_THREADS_SOURCE = @XENOMAI_KERNEL_THREADS_SOURCE@ +RTAI_KERNEL_THREADS_SOURCE = @RTAI_KERNEL_THREADS_SOURCE@ THREADS_SOURCE = $($(THREADS)_THREADS_SOURCE) BUILD_DRIVERS = @BUILD_DRIVERS@ @@ -156,7 +202,11 @@ TARGET_PLATFORM_H3 = @TARGET_PLATFORM_H3@ HARDY_AMD64_WORKAROUND=@HARDY_AMD64_WORKAROUND@ PRECISE_MULTILIB_BUG=@PRECISE_MULTILIB_BUG@ +ifeq ($(BUILD_SYS),user-dso) USERMODE_PCI=@USERMODE_PCI@ +else +USERMODE_PCI=no +endif # example programs BUILD_EXAMPLES=@BUILD_EXAMPLES@ diff --git a/src/Makefile.modinc.in b/src/Makefile.modinc.in index bd05553408..d839677054 100644 --- a/src/Makefile.modinc.in +++ b/src/Makefile.modinc.in @@ -88,6 +88,24 @@ RTLIBDIR := $(EMC2_RTLIB_DIR) LIBDIR := $(libdir) endif +ifeq ($(BUILD_SYS),kbuild) +EXTRA_CFLAGS += $(call cc-option,-Wframe-larger-than=2560) + +modules: + $(MAKE) \ + -C $(KERNELDIR) \ + KBUILD_EXTRA_SYMBOLS="$(KBUILD_EXTRA_SYMBOLS)" \ + SUBDIRS=`pwd` \ + CC="$(CC)" KBUILD_VERBOSE=$(BUILD_VERBOSE) modules + +clean: + rm *.ko *.mod.c *.o + +install: + cp $(patsubst %.o,%.ko,$(obj-m)) $(DESTDIR)$(RTLIBDIR)/ +endif + +ifeq ($(BUILD_SYS),user-dso) EXTRA_CFLAGS += -fPIC -g -funwind-tables allmodules = $(patsubst %.o,%.so,$(obj-m)) modules: $(allmodules) @@ -114,3 +132,4 @@ $(foreach mod,$(patsubst %.o,%,$(obj-m)),\ $(Q)(echo '{ global : '; tr -s '\0' <$*.exported | xargs -r0 printf '%s;\n' | grep .; echo 'local : * ; };') > $*.ver $(Q)$(CC) -shared -Bsymbolic $(LDFLAGS) -Wl,--version-script,$*.ver -o $@ $^ $(EXTRA_LDFLAGS) $(Q)ld -d -r -o $*.tmp $^ +endif From 82c5b621ce9f0b970efa8981be31f53d4e0a0521 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Tue, 27 Nov 2018 12:54:20 +0000 Subject: [PATCH 338/516] machinekit/launcher: make sure zombies are exclude from running process checking --- lib/python/machinekit/launcher.py | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/lib/python/machinekit/launcher.py b/lib/python/machinekit/launcher.py index a263937055..0626dab6df 100644 --- a/lib/python/machinekit/launcher.py +++ b/lib/python/machinekit/launcher.py @@ -1,5 +1,6 @@ # coding=utf-8 import os +import shlex import sys from time import * import subprocess @@ -267,11 +268,26 @@ def set_machinekit_ini(ini): os.environ['MACHINEKIT_INI'] = ini -# ensure mklauncher is running -def ensure_mklauncher(): +def _check_for_non_zombie_process(program): try: - subprocess.check_output(['pgrep', 'mklauncher']) - return - except subprocess.CalledProcessError: + # get process ids + pids = subprocess.check_output(shlex.split('pgrep {}'.format(program))).strip() + pids = ' '.join(pids.split('\n')) + # check each id if it is not zombie + ps_out = subprocess.check_output( + shlex.split('ps -p "{}" -o pid=,s='.format(pids)) + ).strip() + lines = ps_out.split('\n') + for line in lines: + pid, status = line.split(' ') + if status != 'Z': + return True + except subprocess.CalledProcessError as e: pass - start_process('mklauncher .') + return False + + +# ensure mklauncher is running +def ensure_mklauncher(): + if not _check_for_non_zombie_process('mklauncher'): + start_process('mklauncher .') From 44df9c0e266500e1f41a0b6731e7595f2d2e8bcf Mon Sep 17 00:00:00 2001 From: Mick Date: Wed, 28 Nov 2018 09:25:59 +0000 Subject: [PATCH 339/516] add back check-system-config --- debian/platform_pc | 0 scripts/check-system-configuration.sh | 184 ++++++++++---------------- 2 files changed, 69 insertions(+), 115 deletions(-) delete mode 100644 debian/platform_pc diff --git a/debian/platform_pc b/debian/platform_pc deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/scripts/check-system-configuration.sh b/scripts/check-system-configuration.sh index a60e15f9c8..1bdb4fb547 100755 --- a/scripts/check-system-configuration.sh +++ b/scripts/check-system-configuration.sh @@ -15,7 +15,7 @@ get-conf-files() { conf_files="$*" local conflist="" for i in $conf_files; do - conflist+=" $(readlink -e $i)" + conflist+=" $(readlink -e $i)" done echo $conflist } @@ -28,45 +28,45 @@ check-rsyslog() { local nologfile=false if test ! -f $logfile then - echo "Warning: Logfile '$logfile' does not exist." - echo - echo " rsyslogd does not create non-existent log files; be" - echo " sure the (possibly empty) logfile exists and" - echo " restart rsyslogd" - echo - echo " Hint:" - echo " $ sudo touch /var/log/linuxcnc.log" - echo " $ sudo service rsyslog restart" - echo - echo " Gurus: If you intentionally log to another file," - echo " please be aware of where Machinekit logs go for" - echo " debugging purposes" - echo - res=1 - nologfile=true + echo "Warning: Logfile '$logfile' does not exist." + echo + echo " rsyslogd does not create non-existent log files; be" + echo " sure the (possibly empty) logfile exists and" + echo " restart rsyslogd" + echo + echo " Hint:" + echo " $ sudo touch /var/log/linuxcnc.log" + echo " $ sudo service rsyslog restart" + echo + echo " Gurus: If you intentionally log to another file," + echo " please be aware of where Machinekit logs go for" + echo " debugging purposes" + echo + res=1 + nologfile=true fi if test -z "$logconfigs"; then - echo "Warning: No rsyslog.conf found; system log daemon not rsyslogd?" - echo - echo " Please check your syslog configuration for" - echo " rate limiting; an example for rsyslogd can be found in" - echo " src/rtapi/rsyslogd-linuxcnc.conf" - echo + echo "Warning: No rsyslog.conf found; system log daemon not rsyslogd?" + echo + echo " Please check your syslog configuration for" + echo " rate limiting; an example for rsyslogd can be found in" + echo " src/rtapi/rsyslogd-linuxcnc.conf" + echo elif ! grep -q SystemLogRateLimitBurst $logconfigs; then - res=1 - echo "Warning: No rate limit in rsyslogd is set." - echo - echo " The 'rsyslogd' daemon drops logs when incoming at" - echo " higher than the rate configured by" - echo " 'SystemLogRateLimitBurst'. The default rate is lower" - echo " than Machinekit requires when running in debug mode." - echo - echo " Hint:" - echo " $ sudo cp rtapi/rsyslogd-linuxcnc.conf" \ - "/etc/rsyslog.d/linuxcnc.conf" - echo " $ sudo service rsyslog restart" - echo + res=1 + echo "Warning: No rate limit in rsyslogd is set." + echo + echo " The 'rsyslogd' daemon drops logs when incoming at" + echo " higher than the rate configured by" + echo " 'SystemLogRateLimitBurst'. The default rate is lower" + echo " than Machinekit requires when running in debug mode." + echo + echo " Hint:" + echo " $ sudo cp rtapi/rsyslogd-linuxcnc.conf" \ + "/etc/rsyslog.d/linuxcnc.conf" + echo " $ sudo service rsyslog restart" + echo fi test $res -ne 0 && return 1 @@ -77,15 +77,15 @@ check-rsyslog() { if grep -q $tag $logfile >/dev/null 2>/dev/null then # logging works - return 0 + return 0 else - echo "Warning: Logging appears to be not working" - echo - echo " Found rsyslogd configuration and $logfile" - echo " exists, but a test did not appear in the log." - echo " Please investigate." - echo - return 1 + echo "Warning: Logging appears to be not working" + echo + echo " Found rsyslogd configuration and $logfile" + echo " exists, but a test did not appear in the log." + echo " Please investigate." + echo + return 1 fi } @@ -96,7 +96,7 @@ check-rsyslog() { # check-ulimits() { local ulimit_configs="$(get-conf-files \ - /etc/security/limits.conf /etc/security/limits.d/*.conf)" + /etc/security/limits.conf /etc/security/limits.d/*.conf)" # a guess at what a reasonable memlock value should be local reasonable_memlock=32767 @@ -110,91 +110,45 @@ check-ulimits() { local last_ulimit_config local memlock_found=false for f in $ulimit_configs; do - mtmp=$(awk '/^\*[ \t]+(-|soft)[ \t]+memlock/ {m=$4} END {print m}' $f) - if test -n "$mtmp"; then - if test $memlock != 0; then - echo "Warning: Multiple configurations for 'memlock' setting" - echo - echo " Please check configuration in these files:" - echo " $last_ulimit_config" - echo " $f" - echo - return 1 - fi - memlock=$mtmp - memlock_found=true - last_ulimit_config=$f - fi - done - if ! $memlock_found; then - echo "Warning: no configuration for 'memlock' found" + mtmp=$(awk '/^\*[ \t]+(-|soft)[ \t]+memlock/ {m=$4} END {print m}' $f) + if test -n "$mtmp"; then + if test $memlock != 0; then + echo "Warning: Multiple configurations for 'memlock' setting" echo - echo " Hint:" - echo " $ sudo cp rtapi/shmdrv/limits.d-machinekit.conf /etc/security/limits.d/machinekit.conf" - return 1 - fi - - # Next, check the 'memlock' value looks sane - if test $memlock != unlimited && test $memlock -lt $reasonable_memlock; then - echo "Warning: Config 'memlock' value $memlock too small" - echo - echo " Value for 'memlock' in file $last_ulimit_config" - echo " should be raised to $reasonable_memlock or greater" + echo " Please check configuration in these files:" + echo " $last_ulimit_config" + echo " $f" echo return 1 + fi + memlock=$mtmp + memlock_found=true + last_ulimit_config=$f fi -} - - -# -# Check shmdrv udev configuration -# -# The shmdrv converged shared memory driver for kthreads flavors must -# be accessible. Look for a 'shmdrv.rules' file. -check-shmdrv() { - local udev_conf=/etc/udev/rules.d/50-shmdrv.rules - local udev_configs="$(get-conf-files /etc/udev/rules.d/*.rules)" - - # If $udev_conf exists, assume the contents are correct - if test -f $udev_conf; then - return 0 - fi - - # Otherwise, assume any KERNEL=="shmdrv" setting is correct - for f in $udev_configs; do - if grep -q 'KERNEL=="shmdrv"' $f; then - return 0 - fi done - - # If we're here, we found no sign of udev configuration. - echo "Warning: No udev configuration for shmdrv was found." - echo - echo " The user running LinuxCNC must have write access to" - echo " /dev/shmdrv when running kernel threads, which may" - echo " be configured in /etc/udev/rules.d." + if ! $memlock_found; then + echo "Warning: no configuration for 'memlock' found" echo echo " Hint:" - echo " $ sudo cp rtapi/shmdrv/shmdrv.rules $udev_conf" - echo " $ sudo udevadm trigger" + echo " $ sudo cp rtapi/shmdrv/limits.d-machinekit.conf /etc/security/limits.d/machinekit.conf" + return 1 + fi + + # Next, check the 'memlock' value looks sane + if test $memlock != unlimited && test $memlock -lt $reasonable_memlock; then + echo "Warning: Config 'memlock' value $memlock too small" echo + echo " Value for 'memlock' in file $last_ulimit_config" + echo " should be raised to $reasonable_memlock or greater" + echo "" return 1 + fi } HAVE_KERNEL_THREADS=false -while getopts k opt; do - case "$opt" in - k) HAVE_KERNEL_THREADS=true ;; - *) echo "Usage: $0 [ -k ]" >&2; exit 1 ;; - esac -done - res=0 check-rsyslog || res=1 check-ulimits || res=1 -if $HAVE_KERNEL_THREADS; then - check-shmdrv || res=1 -fi exit $res From 75d2fe68be7009303c459d3d0e7d0d5a317d93ea Mon Sep 17 00:00:00 2001 From: Mick Date: Wed, 28 Nov 2018 09:26:36 +0000 Subject: [PATCH 340/516] add back rules.in --- debian/rules.in | 7 ------- 1 file changed, 7 deletions(-) diff --git a/debian/rules.in b/debian/rules.in index 18a614575f..410346234b 100755 --- a/debian/rules.in +++ b/debian/rules.in @@ -42,8 +42,6 @@ SHLIBDEPS_X += halmeter classicladder halscope THREADS_POSIX = --without-posix THREADS_RT_PREEMPT = --without-rt-preempt THREADS_XENOMAI = --without-xenomai -#THREADS_XENOMAI_KERNEL = --without-xenomai-kernel -#THREADS_RTAI_KERNEL = --without-rtai-kernel # Kernel threads need a list of configured header source directories # for each architecture @@ -52,11 +50,6 @@ THREADS_XENOMAI = --without-xenomai # DEB_HOST_ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH) -#HEADERS_XENOMAI_KERNEL_i386 = --with-xenomai-kernel-sources="" -#HEADERS_XENOMAI_KERNEL_amd64 = --with-xenomai-kernel-sources="" -#HEADERS_RTAI_KERNEL_amd64 = --with-rtai-kernel-sources="" -#HEADERS_RTAI_KERNEL_i386 = --with-rtai-kernel-sources="" - # Parallel make ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) From eff8f51054265cbaedf07d85d35acd3aeaf062f8 Mon Sep 17 00:00:00 2001 From: Mick Date: Wed, 28 Nov 2018 09:38:23 +0000 Subject: [PATCH 341/516] remove platform-is-supported --- scripts/platform-is-supported | 73 ----------------------------------- 1 file changed, 73 deletions(-) delete mode 100755 scripts/platform-is-supported diff --git a/scripts/platform-is-supported b/scripts/platform-is-supported deleted file mode 100755 index fb301e064a..0000000000 --- a/scripts/platform-is-supported +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/python2 -# -# This script returns 0 when run on a platform supported by the current -# branch of LinuxCNC, and 1 when run on an unsupported platform. It is -# intended to guide build automation on whether or not to try to build. -# - -import sys -import subprocess -import re - - -def detect_kernel_flavor(uname): - try: - f = open("/boot/config-%s" % uname) - except IOError: - print "no kernel configuration found for %s" % uname - sys.exit(1) - l = f.read(-1) - f.close() - - config_ipipe = re.search('^CONFIG_IPIPE', l, re.MULTILINE) - config_xeno = re.search('^CONFIG_XENO_', l, re.MULTILINE) - config_rtpreempt = re.search('^CONFIG_PREEMPT_RT', l, re.MULTILINE) - - if config_ipipe and not config_xeno and not config_rtpreempt: - return 'rtai' - elif config_ipipe and config_xeno and not config_rtpreempt: - return 'xenomai' - elif not config_ipipe and not config_xeno and config_rtpreempt: - return 'rtpreempt' - else: - return 'vanilla' - - -# use subprocess.Popen() in this funny way, instead of -# subprocess.check_output(), because check_output() is not in Hardy's -# Python 2.5 - -arch = subprocess.Popen(['dpkg-architecture', '-qDEB_HOST_ARCH'], stdout=subprocess.PIPE).communicate()[0][:-1] -distributor = subprocess.Popen(['lsb_release', '--id', '--short'], stdout=subprocess.PIPE).communicate()[0][:-1] - -release = subprocess.Popen(['lsb_release', '--release', '--short'], stdout=subprocess.PIPE).communicate()[0][:-1] -major, minor = re.split('\.', release) -release_major = int(major) -release_minor = int(minor) - -uname = subprocess.Popen(['uname', '-r'], stdout=subprocess.PIPE).communicate()[0][:-1] -kernel_flavor = detect_kernel_flavor(uname) - -print "arch =", arch -print "distributor =", distributor -print "release =", release -print " major =", release_major -print " minor =", release_minor -print "uname = %s (%s)" % (uname, kernel_flavor) - -if arch != "amd64" and arch != "i386": - print "unsupported architecture!" - sys.exit(1) - -if distributor == 'Ubuntu': - if release_major < 10: - print "release is too old!" - sys.exit(1) - -if kernel_flavor != 'rtai' and kernel_flavor != 'vanilla': - print "unsupported kernel flavor" - sys.exit(1) - -print "this platform is supported!" -sys.exit(0) - From a9cc288c62f39c5da5b4821118c48189d6129706 Mon Sep 17 00:00:00 2001 From: Mick Date: Wed, 28 Nov 2018 15:12:41 +0000 Subject: [PATCH 342/516] add makefile.modinc.in --- src/Makefile.modinc.in | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/src/Makefile.modinc.in b/src/Makefile.modinc.in index d839677054..bd05553408 100644 --- a/src/Makefile.modinc.in +++ b/src/Makefile.modinc.in @@ -88,24 +88,6 @@ RTLIBDIR := $(EMC2_RTLIB_DIR) LIBDIR := $(libdir) endif -ifeq ($(BUILD_SYS),kbuild) -EXTRA_CFLAGS += $(call cc-option,-Wframe-larger-than=2560) - -modules: - $(MAKE) \ - -C $(KERNELDIR) \ - KBUILD_EXTRA_SYMBOLS="$(KBUILD_EXTRA_SYMBOLS)" \ - SUBDIRS=`pwd` \ - CC="$(CC)" KBUILD_VERBOSE=$(BUILD_VERBOSE) modules - -clean: - rm *.ko *.mod.c *.o - -install: - cp $(patsubst %.o,%.ko,$(obj-m)) $(DESTDIR)$(RTLIBDIR)/ -endif - -ifeq ($(BUILD_SYS),user-dso) EXTRA_CFLAGS += -fPIC -g -funwind-tables allmodules = $(patsubst %.o,%.so,$(obj-m)) modules: $(allmodules) @@ -132,4 +114,3 @@ $(foreach mod,$(patsubst %.o,%,$(obj-m)),\ $(Q)(echo '{ global : '; tr -s '\0' <$*.exported | xargs -r0 printf '%s;\n' | grep .; echo 'local : * ; };') > $*.ver $(Q)$(CC) -shared -Bsymbolic $(LDFLAGS) -Wl,--version-script,$*.ver -o $@ $^ $(EXTRA_LDFLAGS) $(Q)ld -d -r -o $*.tmp $^ -endif From 44efa260666fe871d44c429e0f552514c9345213 Mon Sep 17 00:00:00 2001 From: Mick Date: Wed, 28 Nov 2018 15:34:47 +0000 Subject: [PATCH 343/516] Makefile & Makefile.modinc.in added with modified Makefile.inc.in Signed-off-by: Mick --- src/Makefile | 160 ++++++++++---------------------------------- src/Makefile.inc.in | 64 +++++++++--------- 2 files changed, 67 insertions(+), 157 deletions(-) diff --git a/src/Makefile b/src/Makefile index dfb5b65ce2..b5c9c5b45e 100755 --- a/src/Makefile +++ b/src/Makefile @@ -78,12 +78,7 @@ BUILD_ALL_FLAVORS = no BUILD_THREAD_MODULES = yes endif # $(threads) -# if KERNELRELEASE is non-empty, we're in kbuild -ifeq ($(KERNELRELEASE),) BUILD_KBUILD = no -else -BUILD_KBUILD = yes -endif # extract the version from the kernel source version.h ifneq ($(KERNELDIR),) @@ -115,6 +110,8 @@ endif # default target: put before everything else default: +########################################################################################### + ifeq ($(BUILD_ALL_FLAVORS),yes) # Top-level modules target # @@ -124,29 +121,14 @@ ifeq ($(BUILD_ALL_FLAVORS),yes) # # Following tradition, this incarnation of the modules recipe is # placed far away from all others. -FLAVORUP = $(shell echo $(1) | tr a-z- A-Z_) -FLAVORVAR = $($(call FLAVORUP,$(1))_THREADS_$(2)) + modules: userspace - @$(foreach f,$(BUILD_THREAD_FLAVORS),\ - echo "Making modules for flavor $(f)"; \ - $(if $(findstring kbuild,$(call FLAVORVAR,$(f),BUILD_SYS)),\ - $(foreach kd,$(call FLAVORVAR,$(f),KERNEL_DIRS),\ - echo " kernel source dir $(kd)"; \ - $(MAKE) modules threads=$(f) KERNELDIR=$(kd);\ - ),\ - $(MAKE) modules threads=$(f);\ - )\ - ) - -ifeq ($(HAVE_KERNEL_THREADS),yes) - @test -f ../libexec/linuxcnc_module_helper -a \ - \( `stat -c %u ../libexec/linuxcnc_module_helper` -ne 0 -o \ - ! -u ../libexec/linuxcnc_module_helper \) \ - && need_setuid=1; -endif + for f in $(BUILD_THREAD_FLAVORS); do \ + $(MAKE) modules threads=$$f; \ + done; \ ifeq ($(RUN_IN_PLACE)+$(BUILD_DRIVERS),yes+yes) - for f in $(filter-out %-kernel,$(BUILD_THREAD_FLAVORS)); do \ + for f in $(BUILD_THREAD_FLAVORS); do \ test -f ../libexec/rtapi_app_$$f -a \ \( 0`stat -c %u ../libexec/rtapi_app_$$f 2>/dev/null` \ -ne 0 -o ! -u ../libexec/rtapi_app_$$f \) \ @@ -163,6 +145,7 @@ endif endif # BUILD_ALL_FLAVORS +############################################################################################# OBJDIR := objects/$(RTDIR_EXT) DEPDIR := depends/$(RTDIR_EXT) @@ -179,6 +162,8 @@ cc-option = $(shell \ echo "$(2)"; \ fi ;) +############################################################################################# + ifeq ($(KERNELRELEASE),) # When KERNELRELEASE is not defined, this is the userspace build. # The "modules" target is the gateway to the kernel module build. @@ -275,10 +260,6 @@ SUBDIRS := \ \ po \ -ifeq ($(HAVE_KERNEL_THREADS),yes) -SUBDIRS += module_helper -endif - ifeq ($(BUILD_WEBTALK),yes) SUBDIRS += machinetalk/webtalk endif @@ -758,15 +739,6 @@ endif # # (don't build when 'BUILD_ALL_FLAVORS' or 'BUILD_THREADS_MODULES' are set; # these are intermediate make runs) -ifeq ($(BUILD_SYS)+$(BUILD_THREAD_MODULES),kbuild+yes) -modules: $(OBJDIR)/.separate-kbuild-artifacts-hack.stamp - mkdir -p $(RTLIBDIR) - $(PYTHON) modsilent.py $(MAKE) \ - -C $(KERNELDIR) \ - SUBDIRS=$(BASEPWD)/$(OBJDIR) \ - CC="$(CC)" KBUILD_VERBOSE=$(BUILD_VERBOSE) modules - cp $(OBJDIR)/Module.symvers $(OBJDIR)/*$(MODULE_EXT) $(RTLIBDIR) -endif # BUILD_SYS == 'kbuild' # It looks almost impossible to coerce kbuild into putting build # artifacts outside the source tree. The universal build needs to @@ -784,10 +756,6 @@ $(OBJDIR)/.separate-kbuild-artifacts-hack.stamp: # never follow symbolic links cp -rlfd $(MODULE_SOURCE_DIRS) $(OBJDIR) cp -lf $(MODULE_SOURCES) $(OBJDIR) -ifeq ($(BUILD_SYS),kbuild) - # kbuild needs a full copy of this tree with - cp -rlf halcomp-srcs $(OBJDIR) -endif ln -sf $(BASEPWD)/../bin $(OBJDIR)/.. ln -sf $(BASEPWD)/../scripts $(OBJDIR)/.. touch $@ @@ -833,13 +801,7 @@ clean: depclean modclean docclean fix_perms = test -f $(1) && chown root $(1) && chmod 4750 $(1) || true ifeq ($(BUILD_DRIVERS),yes) -ifeq ($(HAVE_KERNEL_THREADS),yes) -CHECK_KFLAV_SWITCH=-k -endif setuid: -ifeq ($(HAVE_KERNEL_THREADS),yes) - $(call fix_perms,../libexec/linuxcnc_module_helper) -endif $(call fix_perms,../libexec/pci_read) $(call fix_perms,../libexec/pci_write) $(foreach f,$(BUILD_THREAD_FLAVORS),\ @@ -886,7 +848,8 @@ MENUS = ../share/menus/CNC.menu \ install-menus install-menu: $(MENUS) mkdir -p $(HOME)/.config/menus/applications-merged cp $< $(HOME)/.config/menus/applications-merged -else + +else ## ifeq($(RUN_IN_PLACE),yes) DOCS_HELP=$(call GLOB,../help/*) NC_FILES=$(filter-out %/butterfly.ngc,$(call GLOB,../nc_files/*)) @@ -1104,9 +1067,6 @@ endif install-kernel-dep: install-dirs $(SETUID) ../libexec/rtapi_app_* $(DESTDIR)$(EMC2_LIBEXEC_DIR) -ifeq ($(HAVE_KERNEL_THREADS),yes) - $(SETUID) ../libexec/linuxcnc_module_helper $(DESTDIR)$(EMC2_LIBEXEC_DIR) -endif ifeq ($(BUILD_DRIVERS),yes) $(SETUID) ../libexec/pci_write $(DESTDIR)$(EMC2_LIBEXEC_DIR) $(SETUID) ../libexec/pci_read $(DESTDIR)$(EMC2_LIBEXEC_DIR) @@ -1135,15 +1095,7 @@ endif done; \ fi; \ done -ifeq ($(USE_SHMDRV),yes) - for srcdir in ../rtlib/shmdrv/*; do \ - kver=`basename $$srcdir`; \ - echo Installing shmdrv.ko module for kernel version $$kver; \ - $(DIR) $(DESTDIR)/lib/modules/$$kver/linuxcnc; \ - $(FILE) $$srcdir/* $(DESTDIR)/lib/modules/$$kver/linuxcnc; \ - done; -endif -endif # ! RUN_IN_PLACE +endif # RUN_IN_PLACE CONF=../configs COMMON=$(CONF)/common @@ -1200,29 +1152,7 @@ $(call CONFILES,core_sim9.hal): %/core_sim9.hal: ../configs/common/core_sim9.hal endif # userspace -ifneq ($(KERNELRELEASE),) -# KERNELRELEASE is non-empty, therefore we are building modules using -# the "kbuild" system. -# -INCLUDE_PREFIX = $(BASEPWD) - - -# When the Submakefile is included in the kbuild Makefile, the -# module's obj-m and foo-objs definitions may remain in the Submakefile -include $(BASEPWD)/hal/lib/Submakefile -include $(BASEPWD)/machinetalk/Submakefile -include $(BASEPWD)/hal/i_components/Submakefile -include $(BASEPWD)/hal/components/Submakefile -include $(BASEPWD)/hal/vtable-example/Submakefile -include $(BASEPWD)/hal/userfunct-example/Submakefile -include $(BASEPWD)/machinetalk/msgcomponents/Submakefile -include $(BASEPWD)/rtapi/Submakefile -include $(BASEPWD)/rtapi/shmdrv/Submakefile -include $(BASEPWD)/rtapi/rtapi_math/Submakefile -endif # KERNELRELEASE non-empty - -# $(BASEPWD) is used here, instead of relative paths, because that's -# what kbuild seems to require +################################################################################################################# EXTRA_CFLAGS = $(RTFLAGS) \ $(ARCH_CFLAGS) \ @@ -1252,11 +1182,6 @@ EXTRA_CFLAGS = $(RTFLAGS) \ ifdef TARGET_PLATFORM_BEAGLEBONE EXTRA_CFLAGS += -I$(INCLUDE_PREFIX)/hal/support/pru endif -ifeq ($(BUILD_SYS),kbuild) -EXTRA_CFLAGS += $(call cc-option,-Wframe-larger-than=2560) $(call cc-option,-Wno-declaration-after-statement) -endif - - # For each module, there's an addition to obj-m or obj-$(CONFIG_foo) # plus a definition of foo-objs, which contains the full path to the @@ -1285,20 +1210,6 @@ endif # rtapi/rtapi_time.o \ # rtapi/rtapi_io.o \ # rtapi/$(THREADS_SOURCE).o -# # Kernel threads need rtapi_module.c -# ifeq ($(BUILD_SYS),kbuild) -# rtapi-objs += rtapi/rtapi_module.o -# endif -# # User threads need rtapi_pci.c -# ifeq ($(BUILD_SYS),user-dso) -# rtapi-objs += rtapi/rtapi_pci.o -# rtapi-objs += rtapi/shmdrv/shmdrvapi.o -# # and rtapi_app_main/exit stubs -# rtapi-objs += rtapi/rtapi_main.o -# # and autodetect/compat checks -# rtapi-objs += rtapi/rtapi_compat.o -# endif - # Subdirectory: rtapi/examples (unneeded?) @@ -1440,17 +1351,18 @@ endif endif # these won't compile as-is with userland threading - -ifneq ($(BUILD_SYS),user-dso) -obj-$(CONFIG_HAL_M5I20) += hal_m5i20.o -hal_m5i20-objs := hal/drivers/hal_m5i20.o $(MATHSTUB) -obj-$(CONFIG_HAL_PPMC) += hal_ppmc.o -hal_ppmc-objs := hal/drivers/hal_ppmc.o $(MATHSTUB) -obj-$(CONFIG_OPTO_AC5) += opto_ac5.o -opto_ac5-objs := hal/drivers/opto_ac5.o $(MATHSTUB) -obj-$(CONFIG_HAL_GM) += hal_gm.o -hal_gm-objs := hal/drivers/hal_gm.o $(MATHSTUB) -endif +###################################################### +#ifneq ($(BUILD_SYS),user-dso) +#obj-$(CONFIG_HAL_M5I20) += hal_m5i20.o +#hal_m5i20-objs := hal/drivers/hal_m5i20.o $(MATHSTUB) +#obj-$(CONFIG_HAL_PPMC) += hal_ppmc.o +#hal_ppmc-objs := hal/drivers/hal_ppmc.o $(MATHSTUB) +#obj-$(CONFIG_OPTO_AC5) += opto_ac5.o +#opto_ac5-objs := hal/drivers/opto_ac5.o $(MATHSTUB) +#obj-$(CONFIG_HAL_GM) += hal_gm.o +#hal_gm-objs := hal/drivers/hal_gm.o $(MATHSTUB) +#endif +#################################################### # Gnu make 'expression' syntax is pathetic. What were these guys smoking? # turn on by default @@ -1652,6 +1564,7 @@ tp-objs := $(addprefix emc/tp/, \ TORTOBJS = $(foreach file,$($(patsubst %.o,%,$(1))-objs), $(OBJDIR)/$(file)) +####################################################################################################### # USER_DSO module building # (don't build when 'BUILD_ALL_FLAVORS' or 'BUILD_THREADS_MODULES' are set; @@ -1770,6 +1683,8 @@ $(sort $(CXXRTOBJS)) : $(OBJDIR)/%.o : %.cc $(DEPDIR)/%.d endif # end BUILD_SYS=user-dso +#################################################################################################################################################### + # # ------ not used anymore ------------- # ifeq ($(BUILD_SYS),normal) # modules: $(patsubst %,$(RTLIBDIR)/%,$(obj-m)) @@ -1793,6 +1708,8 @@ endif # end BUILD_SYS=user-dso # $(Q)ld -r -static -S $(LDFLAGS) -o $@ $^ $(EXTRALINK) # endif # end 'normal' +############################################################################################## + # build kernel RTAPI modules ifneq "$(filter normal user-dso,$(BUILD_SYS))" "" #$(RTLIBDIR)/instance$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(instance-objs)) @@ -1824,32 +1741,22 @@ $(RTLIBDIR)/sampler$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(sampler-objs)) $(RTLIBDIR)/hal_parport$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_parport-objs)) $(RTLIBDIR)/probe_parport$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(probe_parport-objs)) - -ifeq ($(BUILD_SYS),user-dso) -$(RTLIBDIR)/probe_parport$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(probe_parport-objs)) -endif - ifeq ($(USERMODE_PCI),yes) $(RTLIBDIR)/hostmot2$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hostmot2-objs)) $(RTLIBDIR)/hm2_7i43$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_7i43-objs)) $(RTLIBDIR)/hm2_7i90$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_7i90-objs)) $(RTLIBDIR)/hm2_pci$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_pci-objs)) $(RTLIBDIR)/setsserial$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(setsserial-objs)) -ifeq ($(BUILD_SYS),user-dso) $(RTLIBDIR)/hm2_eth$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_eth-objs)) -endif $(RTLIBDIR)/hm2_test$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_test-objs)) endif ifdef TARGET_PLATFORM_SOCFPGA -ifeq ($(BUILD_SYS),user-dso) $(RTLIBDIR)/hostmot2$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hostmot2-objs)) $(RTLIBDIR)/hm2_soc_ol$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_soc_ol-objs)) endif -endif ifdef TARGET_PLATFORM_BEAGLEBONE -ifeq ($(BUILD_SYS),user-dso) $(RTLIBDIR)/hal_pru$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_pru-objs)) $(RTLIBDIR)/hal_pru_generic$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_pru_generic-objs)) $(RTLIBDIR)/hal_prudebug$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_prudebug-objs)) @@ -1858,7 +1765,6 @@ $(RTLIBDIR)/hal_bb_gpio$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_bb_gpio-objs) $(RTLIBDIR)/pepper$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(pepper-objs)) $(RTLIBDIR)/hal_arm335xQEP$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_arm335xQEP-objs)) endif -endif ifdef TARGET_PLATFORM_H3 $(RTLIBDIR)/hal_gpio_h3$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_gpio_h3-objs)) @@ -1921,8 +1827,12 @@ $(shell echo 1>&2 Reading $(words $(READ_RTDEPS))/$(words $(RTDEPS)) realtime de -include $(READ_RTDEPS) $(shell echo 1>&2 Done reading realtime dependencies) endif + endif # build kernel RTAPI modules +############################################################################################### + + # Phony so that it is always rebuilt when requested, not because it # shouldn't exist as a file .PHONY: tags diff --git a/src/Makefile.inc.in b/src/Makefile.inc.in index cc751161d0..c86ba0e1eb 100644 --- a/src/Makefile.inc.in +++ b/src/Makefile.inc.in @@ -32,28 +32,28 @@ THREADS = $(shell echo $(threads) | tr a-z- A-Z_) HAVE_POSIX_THREADS=@HAVE_POSIX_THREADS@ HAVE_RT_PREEMPT_THREADS=@HAVE_RT_PREEMPT_THREADS@ HAVE_XENOMAI_THREADS=@HAVE_XENOMAI_THREADS@ -HAVE_XENOMAI_KERNEL_THREADS=@HAVE_XENOMAI_KERNEL_THREADS@ -HAVE_RTAI_KERNEL_THREADS=@HAVE_RTAI_KERNEL_THREADS@ +#HAVE_XENOMAI_KERNEL_THREADS=@HAVE_XENOMAI_KERNEL_THREADS@ +#HAVE_RTAI_KERNEL_THREADS=@HAVE_RTAI_KERNEL_THREADS@ # If any kthreads flavor is to be built, set HAVE_KERNEL_THREADS=yes -ifneq ($(filter-out no,\ - $(HAVE_XENOMAI_KERNEL_THREADS) $(HAVE_RTAI_KERNEL_THREADS)),) -HAVE_KERNEL_THREADS=yes -else +#ifneq ($(filter-out no,\ +# $(HAVE_XENOMAI_KERNEL_THREADS) $(HAVE_RTAI_KERNEL_THREADS)),) +#HAVE_KERNEL_THREADS=yes# +#else HAVE_KERNEL_THREADS=no -endif +#endif POSIX_THREADS_FLAVOR_ID=@POSIX_THREADS_FLAVOR_ID@ RT_PREEMPT_THREADS_FLAVOR_ID=@RT_PREEMPT_THREADS_FLAVOR_ID@ XENOMAI_THREADS_FLAVOR_ID=@XENOMAI_THREADS_FLAVOR_ID@ -RTAI_KERNEL_THREADS_FLAVOR_ID=@RTAI_KERNEL_THREADS_FLAVOR_ID@ -XENOMAI_KERNEL_THREADS_FLAVOR_ID=@XENOMAI_KERNEL_THREADS_FLAVOR_ID@ +#RTAI_KERNEL_THREADS_FLAVOR_ID=@RTAI_KERNEL_THREADS_FLAVOR_ID@ +#XENOMAI_KERNEL_THREADS_FLAVOR_ID=@XENOMAI_KERNEL_THREADS_FLAVOR_ID@ THREAD_FLAVOR_ID=$($(THREADS)_THREADS_FLAVOR_ID) POSIX_THREADS_BUILD_SYS = user-dso RT_PREEMPT_THREADS_BUILD_SYS = user-dso XENOMAI_THREADS_BUILD_SYS = user-dso -XENOMAI_KERNEL_THREADS_BUILD_SYS = kbuild -RTAI_KERNEL_THREADS_BUILD_SYS = kbuild +#XENOMAI_KERNEL_THREADS_BUILD_SYS = kbuild +#RTAI_KERNEL_THREADS_BUILD_SYS = kbuild BUILD_SYS = $($(THREADS)_THREADS_BUILD_SYS) # Directories @@ -66,11 +66,11 @@ EMC2_HOME=@EMC2_HOME@ LIB_DIR=@EMC2_HOME@/lib # flavor (and kver) subdirectories -ifeq ($(BUILD_SYS),user-dso) +#ifeq ($(BUILD_SYS),user-dso) RTDIR_EXT=$(threads) -else -RTDIR_EXT=$(threads)/$(KERNEL_VERS) -endif +#else +#RTDIR_EXT=$(threads)/$(KERNEL_VERS) +#endif #used for install stuff #but have them here as reference @@ -124,16 +124,16 @@ RUN_IN_PLACE = @RUN_IN_PLACE@ POSIX_THREADS_LDFLAGS = @POSIX_THREADS_LDFLAGS@ RT_PREEMPT_THREADS_LDFLAGS = @RT_PREEMPT_THREADS_LDFLAGS@ XENOMAI_THREADS_LDFLAGS = @XENOMAI_THREADS_LDFLAGS@ -XENOMAI_KERNEL_THREADS_LDFLAGS = @XENOMAI_KERNEL_THREADS_LDFLAGS@ -RTAI_KERNEL_THREADS_LDFLAGS = @RTAI_KERNEL_THREADS_LDFLAGS@ +#XENOMAI_KERNEL_THREADS_LDFLAGS = @XENOMAI_KERNEL_THREADS_LDFLAGS@ +#RTAI_KERNEL_THREADS_LDFLAGS = @RTAI_KERNEL_THREADS_LDFLAGS@ RT_LDFLAGS = $($(THREADS)_THREADS_LDFLAGS) XENOMAI_THREADS_RTS=@XENOMAI_THREADS_RTS@ XENOMAI_KERNEL_THREADS_RTS=@XENOMAI_KERNEL_THREADS_RTS@ RTAI_KERNEL_THREADS_RTS=@RTAI_KERNEL_THREADS_RTS@ -XENOMAI_KERNEL_THREADS_KERNEL_DIRS = @XENOMAI_KERNEL_THREADS_KERNEL_DIRS@ -RTAI_KERNEL_THREADS_KERNEL_DIRS = @RTAI_KERNEL_THREADS_KERNEL_DIRS@ +#XENOMAI_KERNEL_THREADS_KERNEL_DIRS = @XENOMAI_KERNEL_THREADS_KERNEL_DIRS@ +#RTAI_KERNEL_THREADS_KERNEL_DIRS = @RTAI_KERNEL_THREADS_KERNEL_DIRS@ SHMDRV_KERNEL_DIRS = @SHMDRV_KERNEL_DIRS@ KERNEL_DIRS = $($(THREADS)_THREADS_KERNEL_DIRS) @@ -145,17 +145,17 @@ KBUILD_EXTRA_SYMBOLS = $($(THREADS)_THREADS_EXTRA_SYMBOLS) \ POSIX_THREADS_RTFLAGS = @POSIX_THREADS_RTFLAGS@ RT_PREEMPT_THREADS_RTFLAGS = @RT_PREEMPT_THREADS_RTFLAGS@ XENOMAI_THREADS_RTFLAGS = @XENOMAI_THREADS_RTFLAGS@ -XENOMAI_KERNEL_THREADS_RTFLAGS = @XENOMAI_KERNEL_THREADS_RTFLAGS@ -RTAI_KERNEL_THREADS_RTFLAGS = @RTAI_KERNEL_THREADS_RTFLAGS@ +#XENOMAI_KERNEL_THREADS_RTFLAGS = @XENOMAI_KERNEL_THREADS_RTFLAGS@ +#RTAI_KERNEL_THREADS_RTFLAGS = @RTAI_KERNEL_THREADS_RTFLAGS@ THREADS_RTFLAGS = $($(THREADS)_THREADS_RTFLAGS) \ -DTHREAD_FLAVOR_ID=$(THREAD_FLAVOR_ID) RTFLAGS := -I. $(THREADS_RTFLAGS) \ -DRTAPI -D_GNU_SOURCE -D_FORTIFY_SOURCE=0 -XENOMAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS = \ - @XENOMAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS@ -RTAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS = @RTAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS@ +#XENOMAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS = \ +# @XENOMAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS@ +#RTAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS = @RTAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS@ KERNEL_MATH_CFLAGS = $($(THREADS)_THREADS_KERNEL_MATH_CFLAGS) ULFLAGS = -D_GNU_SOURCE -DLOCALE_DIR=\"$(localedir)\" -DPACKAGE=\"$(package)\" @@ -163,16 +163,16 @@ ULFLAGS = -D_GNU_SOURCE -DLOCALE_DIR=\"$(localedir)\" -DPACKAGE=\"$(package)\" POSIX_THREADS_BUILD_SYS = @POSIX_THREADS_BUILD_SYS@ RT_PREEMPT_THREADS_BUILD_SYS = @RT_PREEMPT_THREADS_BUILD_SYS@ XENOMAI_THREADS_BUILD_SYS = @XENOMAI_THREADS_BUILD_SYS@ -XENOMAI_KERNEL_THREADS_BUILD_SYS = @XENOMAI_KERNEL_THREADS_BUILD_SYS@ -RTAI_KERNEL_THREADS_BUILD_SYS = @RTAI_KERNEL_THREADS_BUILD_SYS@ +#XENOMAI_KERNEL_THREADS_BUILD_SYS = @XENOMAI_KERNEL_THREADS_BUILD_SYS@ +#RTAI_KERNEL_THREADS_BUILD_SYS = @RTAI_KERNEL_THREADS_BUILD_SYS@ BUILD_SYS = $($(THREADS)_THREADS_BUILD_SYS) # module extension, used when insmod'ing -ifeq ($(BUILD_SYS),user-dso) +#ifeq ($(BUILD_SYS),user-dso) MODULE_EXT = .so -else -MODULE_EXT = .ko -endif +#else +#MODULE_EXT = .ko +#endif CC = @CC@ CC_FOR_BUILD = @CC_FOR_BUILD@ OBJCOPY = @OBJCOPY@ @@ -185,8 +185,8 @@ HIDRAW_H_USABLE = @HIDRAW_H_USABLE@ POSIX_THREADS_SOURCE = @POSIX_THREADS_SOURCE@ RT_PREEMPT_THREADS_SOURCE = @RT_PREEMPT_THREADS_SOURCE@ XENOMAI_THREADS_SOURCE = @XENOMAI_THREADS_SOURCE@ -XENOMAI_KERNEL_THREADS_SOURCE = @XENOMAI_KERNEL_THREADS_SOURCE@ -RTAI_KERNEL_THREADS_SOURCE = @RTAI_KERNEL_THREADS_SOURCE@ +#XENOMAI_KERNEL_THREADS_SOURCE = @XENOMAI_KERNEL_THREADS_SOURCE@ +#RTAI_KERNEL_THREADS_SOURCE = @RTAI_KERNEL_THREADS_SOURCE@ THREADS_SOURCE = $($(THREADS)_THREADS_SOURCE) BUILD_DRIVERS = @BUILD_DRIVERS@ From 01ef1632a2934e3e59959ea91a9e01ae37116e02 Mon Sep 17 00:00:00 2001 From: Mick Date: Wed, 28 Nov 2018 15:58:21 +0000 Subject: [PATCH 344/516] Clean Makefile.inc.in of commenting out tests --- src/Makefile.inc.in | 36 +----------------------------------- 1 file changed, 1 insertion(+), 35 deletions(-) diff --git a/src/Makefile.inc.in b/src/Makefile.inc.in index c86ba0e1eb..d066e899ce 100644 --- a/src/Makefile.inc.in +++ b/src/Makefile.inc.in @@ -32,28 +32,16 @@ THREADS = $(shell echo $(threads) | tr a-z- A-Z_) HAVE_POSIX_THREADS=@HAVE_POSIX_THREADS@ HAVE_RT_PREEMPT_THREADS=@HAVE_RT_PREEMPT_THREADS@ HAVE_XENOMAI_THREADS=@HAVE_XENOMAI_THREADS@ -#HAVE_XENOMAI_KERNEL_THREADS=@HAVE_XENOMAI_KERNEL_THREADS@ -#HAVE_RTAI_KERNEL_THREADS=@HAVE_RTAI_KERNEL_THREADS@ -# If any kthreads flavor is to be built, set HAVE_KERNEL_THREADS=yes -#ifneq ($(filter-out no,\ -# $(HAVE_XENOMAI_KERNEL_THREADS) $(HAVE_RTAI_KERNEL_THREADS)),) -#HAVE_KERNEL_THREADS=yes# -#else HAVE_KERNEL_THREADS=no -#endif POSIX_THREADS_FLAVOR_ID=@POSIX_THREADS_FLAVOR_ID@ RT_PREEMPT_THREADS_FLAVOR_ID=@RT_PREEMPT_THREADS_FLAVOR_ID@ XENOMAI_THREADS_FLAVOR_ID=@XENOMAI_THREADS_FLAVOR_ID@ -#RTAI_KERNEL_THREADS_FLAVOR_ID=@RTAI_KERNEL_THREADS_FLAVOR_ID@ -#XENOMAI_KERNEL_THREADS_FLAVOR_ID=@XENOMAI_KERNEL_THREADS_FLAVOR_ID@ THREAD_FLAVOR_ID=$($(THREADS)_THREADS_FLAVOR_ID) POSIX_THREADS_BUILD_SYS = user-dso RT_PREEMPT_THREADS_BUILD_SYS = user-dso XENOMAI_THREADS_BUILD_SYS = user-dso -#XENOMAI_KERNEL_THREADS_BUILD_SYS = kbuild -#RTAI_KERNEL_THREADS_BUILD_SYS = kbuild BUILD_SYS = $($(THREADS)_THREADS_BUILD_SYS) # Directories @@ -65,12 +53,7 @@ exec_prefix=@exec_prefix@ EMC2_HOME=@EMC2_HOME@ LIB_DIR=@EMC2_HOME@/lib -# flavor (and kver) subdirectories -#ifeq ($(BUILD_SYS),user-dso) RTDIR_EXT=$(threads) -#else -#RTDIR_EXT=$(threads)/$(KERNEL_VERS) -#endif #used for install stuff #but have them here as reference @@ -124,16 +107,12 @@ RUN_IN_PLACE = @RUN_IN_PLACE@ POSIX_THREADS_LDFLAGS = @POSIX_THREADS_LDFLAGS@ RT_PREEMPT_THREADS_LDFLAGS = @RT_PREEMPT_THREADS_LDFLAGS@ XENOMAI_THREADS_LDFLAGS = @XENOMAI_THREADS_LDFLAGS@ -#XENOMAI_KERNEL_THREADS_LDFLAGS = @XENOMAI_KERNEL_THREADS_LDFLAGS@ -#RTAI_KERNEL_THREADS_LDFLAGS = @RTAI_KERNEL_THREADS_LDFLAGS@ RT_LDFLAGS = $($(THREADS)_THREADS_LDFLAGS) XENOMAI_THREADS_RTS=@XENOMAI_THREADS_RTS@ XENOMAI_KERNEL_THREADS_RTS=@XENOMAI_KERNEL_THREADS_RTS@ RTAI_KERNEL_THREADS_RTS=@RTAI_KERNEL_THREADS_RTS@ -#XENOMAI_KERNEL_THREADS_KERNEL_DIRS = @XENOMAI_KERNEL_THREADS_KERNEL_DIRS@ -#RTAI_KERNEL_THREADS_KERNEL_DIRS = @RTAI_KERNEL_THREADS_KERNEL_DIRS@ SHMDRV_KERNEL_DIRS = @SHMDRV_KERNEL_DIRS@ KERNEL_DIRS = $($(THREADS)_THREADS_KERNEL_DIRS) @@ -145,17 +124,12 @@ KBUILD_EXTRA_SYMBOLS = $($(THREADS)_THREADS_EXTRA_SYMBOLS) \ POSIX_THREADS_RTFLAGS = @POSIX_THREADS_RTFLAGS@ RT_PREEMPT_THREADS_RTFLAGS = @RT_PREEMPT_THREADS_RTFLAGS@ XENOMAI_THREADS_RTFLAGS = @XENOMAI_THREADS_RTFLAGS@ -#XENOMAI_KERNEL_THREADS_RTFLAGS = @XENOMAI_KERNEL_THREADS_RTFLAGS@ -#RTAI_KERNEL_THREADS_RTFLAGS = @RTAI_KERNEL_THREADS_RTFLAGS@ THREADS_RTFLAGS = $($(THREADS)_THREADS_RTFLAGS) \ -DTHREAD_FLAVOR_ID=$(THREAD_FLAVOR_ID) RTFLAGS := -I. $(THREADS_RTFLAGS) \ -DRTAPI -D_GNU_SOURCE -D_FORTIFY_SOURCE=0 -#XENOMAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS = \ -# @XENOMAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS@ -#RTAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS = @RTAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS@ KERNEL_MATH_CFLAGS = $($(THREADS)_THREADS_KERNEL_MATH_CFLAGS) ULFLAGS = -D_GNU_SOURCE -DLOCALE_DIR=\"$(localedir)\" -DPACKAGE=\"$(package)\" @@ -163,16 +137,10 @@ ULFLAGS = -D_GNU_SOURCE -DLOCALE_DIR=\"$(localedir)\" -DPACKAGE=\"$(package)\" POSIX_THREADS_BUILD_SYS = @POSIX_THREADS_BUILD_SYS@ RT_PREEMPT_THREADS_BUILD_SYS = @RT_PREEMPT_THREADS_BUILD_SYS@ XENOMAI_THREADS_BUILD_SYS = @XENOMAI_THREADS_BUILD_SYS@ -#XENOMAI_KERNEL_THREADS_BUILD_SYS = @XENOMAI_KERNEL_THREADS_BUILD_SYS@ -#RTAI_KERNEL_THREADS_BUILD_SYS = @RTAI_KERNEL_THREADS_BUILD_SYS@ BUILD_SYS = $($(THREADS)_THREADS_BUILD_SYS) -# module extension, used when insmod'ing -#ifeq ($(BUILD_SYS),user-dso) MODULE_EXT = .so -#else -#MODULE_EXT = .ko -#endif + CC = @CC@ CC_FOR_BUILD = @CC_FOR_BUILD@ OBJCOPY = @OBJCOPY@ @@ -185,8 +153,6 @@ HIDRAW_H_USABLE = @HIDRAW_H_USABLE@ POSIX_THREADS_SOURCE = @POSIX_THREADS_SOURCE@ RT_PREEMPT_THREADS_SOURCE = @RT_PREEMPT_THREADS_SOURCE@ XENOMAI_THREADS_SOURCE = @XENOMAI_THREADS_SOURCE@ -#XENOMAI_KERNEL_THREADS_SOURCE = @XENOMAI_KERNEL_THREADS_SOURCE@ -#RTAI_KERNEL_THREADS_SOURCE = @RTAI_KERNEL_THREADS_SOURCE@ THREADS_SOURCE = $($(THREADS)_THREADS_SOURCE) BUILD_DRIVERS = @BUILD_DRIVERS@ From 0f9e7a55805625bea3feb02c0a351df8072a573d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Tue, 4 Dec 2018 15:13:45 +0100 Subject: [PATCH 345/516] lib/python/launcher: fix problems with superfluous whitespace --- lib/python/machinekit/launcher.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/python/machinekit/launcher.py b/lib/python/machinekit/launcher.py index 0626dab6df..1a13c656b5 100644 --- a/lib/python/machinekit/launcher.py +++ b/lib/python/machinekit/launcher.py @@ -279,10 +279,10 @@ def _check_for_non_zombie_process(program): ).strip() lines = ps_out.split('\n') for line in lines: - pid, status = line.split(' ') + pid, status = line.strip().split(' ') if status != 'Z': return True - except subprocess.CalledProcessError as e: + except subprocess.CalledProcessError: pass return False From cb0dbf7ed26d1b0f867107083dd34efaf6d0e230 Mon Sep 17 00:00:00 2001 From: Russell Gower Date: Tue, 4 Dec 2018 17:47:24 +0000 Subject: [PATCH 346/516] Add missing index handling to the pru encoder --- src/hal/drivers/hal_pru_generic/encoder.c | 18 ++++++++++++++++-- .../drivers/hal_pru_generic/hal_pru_generic.h | 2 ++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/hal/drivers/hal_pru_generic/encoder.c b/src/hal/drivers/hal_pru_generic/encoder.c index c3d59ef237..b8434e7350 100644 --- a/src/hal/drivers/hal_pru_generic/encoder.c +++ b/src/hal/drivers/hal_pru_generic/encoder.c @@ -169,12 +169,14 @@ static u64 timebase; /* master timestamp */ void hpg_encoder_read_chan(hal_pru_generic_t *hpg, int instance, int channel) { u16 reg_count; s32 reg_count_diff; + s32 prev_rawcounts; hpg_encoder_instance_t *inst; hpg_encoder_channel_instance_t *e; inst = &hpg->encoder.instance[instance]; e = &hpg->encoder.instance[instance].chan[channel]; + prev_rawcounts = *e->hal.pin.rawcounts; // sanity check if (*(e->hal.pin.scale) == 0.0) { @@ -201,8 +203,19 @@ void hpg_encoder_read_chan(hal_pru_generic_t *hpg, int instance, int channel) { *(e->hal.pin.rawcounts) += reg_count_diff; - e->zero_offset = (s32)e->pru.hdr.count - (s32)e->pru.hdr.Z_capture; - if (e->zero_offset < 0) e->zero_offset += 65536; + + // Check index + if ( *(e->hal.pin.index_enable) && (e->pru.hdr.Z_count != e->prev_Z_count)) { + reg_count_diff = (s32)e->pru.hdr.Z_capture - (s32)e->prev_reg_count; + if (reg_count_diff > 32768) reg_count_diff -= 65536; + if (reg_count_diff < -32768) reg_count_diff += 65536; + + e->zero_offset = prev_rawcounts + reg_count_diff; + *e->hal.pin.index_enable = 0; + } + // the pru increments Z_count each time it sees an index pulse, we need + // to track these even when we are not looking for index events + e->prev_Z_count = e->pru.hdr.Z_count; *(e->hal.pin.count) = *(e->hal.pin.rawcounts) - e->zero_offset; @@ -453,6 +466,7 @@ int export_encoder(hal_pru_generic_t *hpg, int i) *hpg->encoder.instance[i].chan[j].hal.pin.quadrature_error = 0; hpg->encoder.instance[i].chan[j].zero_offset = 0; + hpg->encoder.instance[i].chan[j].prev_Z_count = 0; hpg->encoder.instance[i].chan[j].timestamp = timebase; hpg->encoder.instance[i].chan[j].pulse_count = 0; hpg->encoder.instance[i].chan[j].poll_count = 0; diff --git a/src/hal/drivers/hal_pru_generic/hal_pru_generic.h b/src/hal/drivers/hal_pru_generic/hal_pru_generic.h index bb4a358ad0..a0a1e35516 100644 --- a/src/hal/drivers/hal_pru_generic/hal_pru_generic.h +++ b/src/hal/drivers/hal_pru_generic/hal_pru_generic.h @@ -258,6 +258,8 @@ typedef struct { } hal; + u8 prev_Z_count; // detect index events + s32 zero_offset; // *hal.pin.counts == (*hal.pin.rawcounts - zero_offset) u16 prev_reg_count; // from this and the current count in the register we compute a change-in-counts, which we add to rawcounts From bbdad9250bd497702fd1b316671c1db872bb4712 Mon Sep 17 00:00:00 2001 From: John Morris Date: Wed, 5 Dec 2018 17:34:41 +0800 Subject: [PATCH 347/516] scripts/build_docker: abort package builds on compiler warnings Don't allow any more compile warnings to creep in by aborting package builds when compiler warnings are encountered. The restriction is relaxed for test runs so devs may still use CI to test work in progress. --- .travis.yml | 2 +- scripts/build_docker | 1 + src/Makefile | 8 +++++--- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index b6e754451a..305925f0cb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -48,7 +48,7 @@ services: - docker before_install: - - .travis/check_sftp.sh + - .travis/check_sftp.sh env: global: diff --git a/scripts/build_docker b/scripts/build_docker index 47d8890e78..245444d32f 100755 --- a/scripts/build_docker +++ b/scripts/build_docker @@ -109,6 +109,7 @@ case $CMD in -e TRAVIS_PULL_REQUEST=$TRAVIS_PULL_REQUEST -e TRAVIS_REPO=$TRAVIS_REPO -e TRAVIS_REPO_SLUG=$TRAVIS_REPO_SLUG + -e DPKG_CFLAGS="${DPKG_CFLAGS} -Werror" ) BUILD_CL=( bash -xec " diff --git a/src/Makefile b/src/Makefile index b5c9c5b45e..fc12fa51eb 100755 --- a/src/Makefile +++ b/src/Makefile @@ -371,7 +371,8 @@ DEBUG := -g -Wall -funwind-tables PROFILE_CFLAGS := PROFILE_LDFLAGS := -CFLAGS := $(INCLUDE) $(OPT) $(DEBUG) $(PROFILE_CFLAGS) -DULAPI $(call cc-option,-std=gnu99 -fgnu89-inline) +CFLAGS := $(INCLUDE) $(OPT) $(DEBUG) $(DPKG_CFLAGS) $(PROFILE_CFLAGS) \ + -DULAPI $(call cc-option,-std=gnu99 -fgnu89-inline) # enable runtime comparison of GIT_CONFIG_SHA (config.h) and GIT_BUILD_SHA CFLAGS += -DGIT_BUILD_SHA=\"'$(GIT_BUILD_SHA)'\" @@ -392,7 +393,7 @@ BASE_CXXFLAGS:= $(INCLUDE) $(CXXFLAGS) \ $(ARCH_CFLAGS) CXXFLAGS := $(BASE_CXXFLAGS) -DULAPI -RT_CXXFLAGS := $(BASE_CXXFLAGS) +RT_CXXFLAGS := $(BASE_CXXFLAGS) ifeq ($(RUN_IN_PLACE),yes) LDFLAGS += -L$(LIB_DIR) -Wl,-rpath,$(LIB_DIR) @@ -1672,7 +1673,8 @@ $(sort $(RTOBJS)) : $(OBJDIR)/%.o : %.c $(DEPDIR)/%.d $(ECHO) Compiling realtime $(threads) $< @rm -f $@ @mkdir -p $(dir $@) - $(Q)$(CC) -c $(OPT) $(DEBUG) $(EXTRA_CFLAGS) $< -o $@ + $(Q)$(CC) -c $(OPT) $(DPKG_CFLAGS) $(DEBUG) \ + $(EXTRA_CFLAGS) $< -o $@ # Rules to make .o (object) files from .cc $(sort $(CXXRTOBJS)) : $(OBJDIR)/%.o : %.cc $(DEPDIR)/%.d From b55b54456752c5a9c533d00a2538cbe0f1ed3f86 Mon Sep 17 00:00:00 2001 From: John Morris Date: Wed, 5 Dec 2018 13:45:39 +0800 Subject: [PATCH 348/516] machinetalk/support/unionread.c: silence compiler warning Compiling src/machinetalk/support/unionread.c machinetalk/support/unionread.c: In function 'print_container': machinetalk/support/unionread.c:60:12: warning: format '%lu' expects argument of type 'long unsigned int', but argument 2 has type 'uint64_t {aka long long unsigned int}' [-Wformat=] printf("submessage length=%lu\n", length); ^ I fixed this for 64-bit arches in 9e3eee67, but that simply moved the error over to 32-bit arches. This should fix it permanently. Related to machinekit/machinekit-cnc#45 --- src/machinetalk/support/unionread.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/machinetalk/support/unionread.c b/src/machinetalk/support/unionread.c index 79ad04a44d..20ce7d57eb 100644 --- a/src/machinetalk/support/unionread.c +++ b/src/machinetalk/support/unionread.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -57,7 +58,7 @@ bool print_container(pb_istream_t *stream) if (!pb_decode_varint(stream, &length)) { printf("Parsing field#2 failed: %s\n", PB_GET_ERROR(stream)); } - printf("submessage length=%lu\n", length); + printf("submessage length=%"PRIu64"\n", length); printf("submessage: %s NML; %s Motion\n", is_NML_container(tag) ? "is" : "not", From e207745f52181562d22cacd636bc03721d2c2587 Mon Sep 17 00:00:00 2001 From: John Morris Date: Wed, 5 Dec 2018 16:55:48 +0800 Subject: [PATCH 349/516] rtapi/rtapi_pci.c: silence compiler warnings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Compiling machinetalk/support/unionread.c machinetalk/support/unionread.c: In function ‘print_container’: machinetalk/support/unionread.c:61:5: error: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 2 has type ‘uint64_t’ [-Werror=format=] printf("submessage length=%lu\n", length); ^ --- src/rtapi/rtapi_pci.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/rtapi/rtapi_pci.c b/src/rtapi/rtapi_pci.c index 7bd4edbc79..0a1bf7f70a 100644 --- a/src/rtapi/rtapi_pci.c +++ b/src/rtapi/rtapi_pci.c @@ -653,7 +653,8 @@ int pci_enable_device(struct pci_dev *dev) FILE *stream; char path[256]; int i,r; - unsigned long long L1, L2, L3; + void *L1, *L2; + unsigned long L3; rtapi_print_msg(RTAPI_MSG_DBG, "RTAPI_PCI: Enabling Device %s\n", dev->dev_name); @@ -681,7 +682,7 @@ int pci_enable_device(struct pci_dev *dev) /* ...and read in the data */ for (i=0; i < 6; i++) { - r=fscanf(stream, "%Lx %Lx %Lx", &L1, &L2, &L3); + r=fscanf(stream, "%p %p %lu", &L1, &L2, &L3); if (r != 3) { rtapi_print_msg(RTAPI_MSG_ERR,"Failed to parse \"%s\"\n", path); fclose(stream); From 89c6a0da787487a3d3724b0a4952cbca573bb942 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Sat, 12 Jul 2014 10:23:05 -0500 Subject: [PATCH 350/516] task: silence a warning with gcc 4.8 + boost 1.55.0 This bug with certain boost functions is known upstream https://svn.boost.org/trac/boost/ticket/8546 but is not fixed in the version of boost packaged for debian testing (1.55.0.2) --- src/emc/task/taskmodule.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/emc/task/taskmodule.cc b/src/emc/task/taskmodule.cc index dc7bdf2e2c..e6db99ee94 100644 --- a/src/emc/task/taskmodule.cc +++ b/src/emc/task/taskmodule.cc @@ -209,9 +209,14 @@ static void operator_display(const char *message, int id = 0) { #pragma GCC diagnostic warning "-Wformat-security" +#pragma GCC diagnostic push +#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7))) +#pragma GCC diagnostic ignored "-Wunused-local-typedefs" +#endif BOOST_PYTHON_FUNCTION_OVERLOADS(operator_error_overloads, operator_error, 1,2) BOOST_PYTHON_FUNCTION_OVERLOADS(operator_text_overloads, operator_text, 1,2) BOOST_PYTHON_FUNCTION_OVERLOADS(operator_display_overloads, operator_display, 1,2) +#pragma GCC diagnostic pop static const char *ini_filename() { return emc_inifile; } From e9379ddca48cd0dad2e0759a40ca7150d0bb1a78 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Mon, 14 Jul 2014 09:12:45 -0500 Subject: [PATCH 351/516] libnml: Disable "strict aliasing" This code violates the "strict aliasing" rule of C89, but nobody's likely to fix this. Forbid gcc from making optimizations enabled by the "strict aliasing" rules (an option which exists because so much code was written before optimizers began to systematically make optimizations that were possible in light of the "strict aliasing" rule, like this code), and don't warn about constructs that violate them. --- src/libnml/buffer/tcpmem.cc | 5 +++++ src/libnml/cms/tcp_srv.cc | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/src/libnml/buffer/tcpmem.cc b/src/libnml/buffer/tcpmem.cc index 5555f83648..eb185018ec 100644 --- a/src/libnml/buffer/tcpmem.cc +++ b/src/libnml/buffer/tcpmem.cc @@ -12,6 +12,11 @@ * Last change: ********************************************************************/ +#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4))) +#pragma GCC optimize "-fno-strict-aliasing" +#pragma GCC diagnostic ignored "-Wstrict-aliasing" +#endif + #ifdef __cplusplus extern "C" { #endif diff --git a/src/libnml/cms/tcp_srv.cc b/src/libnml/cms/tcp_srv.cc index 19d9dc5e83..eaa237e9fc 100644 --- a/src/libnml/cms/tcp_srv.cc +++ b/src/libnml/cms/tcp_srv.cc @@ -17,6 +17,10 @@ * which provides TCP specific overrides of the CMS_SERVER_REMOTE_PORT class. ****************************************************************************/ +#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4))) +#pragma GCC optimize "-fno-strict-aliasing" +#pragma GCC diagnostic ignored "-Wstrict-aliasing" +#endif #ifdef __cplusplus extern "C" { From 65f41ecf9242d32b42d7483de5f7e4e061909595 Mon Sep 17 00:00:00 2001 From: John Morris Date: Wed, 5 Dec 2018 17:58:55 +0800 Subject: [PATCH 352/516] remove warning from hal/utils/halcmd_commands.c Replace this reminder with issue machinekit/machinekit-hal#162 --- src/hal/utils/halcmd_commands.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/hal/utils/halcmd_commands.c b/src/hal/utils/halcmd_commands.c index 3f13ef0272..b0328942d7 100644 --- a/src/hal/utils/halcmd_commands.c +++ b/src/hal/utils/halcmd_commands.c @@ -2288,7 +2288,6 @@ static void print_sig_info(int type, char **patterns) static void print_script_sig_info(int type, char **patterns) { -#warning fixme #if 0 int next; hal_sig_t *sig; From d480833ac3416f9111ea4a8faa8b6cbb225f6e84 Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 6 Dec 2018 01:02:10 +0800 Subject: [PATCH 353/516] scripts/build_docker: fix script error --- scripts/build_docker | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build_docker b/scripts/build_docker index 245444d32f..d946ea4c8a 100755 --- a/scripts/build_docker +++ b/scripts/build_docker @@ -125,7 +125,7 @@ case $CMD in ) ;; "test") # RIP build and regression tests - if "$TEST_DEBUG" = true; then + if test "$TEST_DEBUG" = true; then DOCKER_EXTRA_OPTS=( -e MSGD_OPTS=-s -e DEBUG=5 ) fi TEST_ARGS="${TEST_ARGS:-tests}" From 77d6e0572fb17b37605b4aeeb64c1cb27a51eb9e Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 7 Dec 2018 01:02:57 +0800 Subject: [PATCH 354/516] conv_s64_u32, conv_u64_u32: silence compiler warnings on 32-bit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Compiling realtime posix halcomp-srcs/hal/i_components/conv_s64_u32.c hal/i_components/conv_s64_u32.icomp: In function ‘conv_s64_u32_’: hal/i_components/conv_s64_u32.icomp:17:2: warning: this decimal constant is unsigned only in ISO C90 if(in < 0) { out = 0; out_of_range = 1; return 0; } ^ hal/i_components/conv_s64_u32.icomp:17:2: warning: this decimal constant is unsigned only in ISO C90 Linking realtime posix conv_s64_u32.so Compiling realtime posix halcomp-srcs/hal/i_components/conv_u64_u32.c hal/i_components/conv_u64_u32.icomp: In function ‘conv_u64_u32_’: hal/i_components/conv_u64_u32.icomp:17:2: warning: this decimal constant is unsigned only in ISO C90 if(in < 0) { out = 0; out_of_range = 1; return 0; } ^ hal/i_components/conv_u64_u32.icomp:17:2: warning: this decimal constant is unsigned only in ISO C90 Linking realtime posix conv_u64_u32.so --- src/hal/i_components/Submakefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/hal/i_components/Submakefile b/src/hal/i_components/Submakefile index 08e36ba688..d7cdfe0a1e 100644 --- a/src/hal/i_components/Submakefile +++ b/src/hal/i_components/Submakefile @@ -122,19 +122,19 @@ hal/i_components/conv_u32_s32.icomp: hal/i_components/conv.icomp.in hal/i_compon $(Q)sh hal/i_components/mkconv.sh u32 s32 "" -1 2147483647 < $< > $@ ############ added u64 s64 - + hal/i_components/conv_float_s64.icomp: hal/i_components/conv.icomp.in hal/i_components/mkconv.sh $(HALCOMP_SUBMAKEFILE) $(ECHO) converting conv for $(notdir $@) $(Q)sh hal/i_components/mkconv.sh float s64 "" -9223372036854775807-1 9223372036854775807 < $< > $@ - + hal/i_components/conv_float_u64.icomp: hal/i_components/conv.icomp.in hal/i_components/mkconv.sh $(HALCOMP_SUBMAKEFILE) $(ECHO) converting conv for $(notdir $@) $(Q)sh hal/i_components/mkconv.sh float u64 "" 0 18446744073709551615UL < $< > $@ - + hal/i_components/conv_bit_s64.icomp: hal/i_components/conv.icomp.in hal/i_components/mkconv.sh $(HALCOMP_SUBMAKEFILE) $(ECHO) converting conv for $(notdir $@) $(Q)sh hal/i_components/mkconv.sh bit s64 // < $< > $@ - + hal/i_components/conv_bit_u64.icomp: hal/i_components/conv.icomp.in hal/i_components/mkconv.sh $(HALCOMP_SUBMAKEFILE) $(ECHO) converting conv for $(notdir $@) $(Q)sh hal/i_components/mkconv.sh bit u64 // < $< > $@ @@ -173,8 +173,8 @@ hal/i_components/conv_s64_s32.icomp: hal/i_components/conv.icomp.in hal/i_compon hal/i_components/conv_u64_u32.icomp: hal/i_components/conv.icomp.in hal/i_components/mkconv.sh $(HALCOMP_SUBMAKEFILE) $(ECHO) converting conv for $(notdir $@) - $(Q)sh hal/i_components/mkconv.sh u64 u32 "" 0 4294967295 < $< > $@ + $(Q)sh hal/i_components/mkconv.sh u64 u32 "" 0 4294967295UL < $< > $@ hal/i_components/conv_s64_u32.icomp: hal/i_components/conv.icomp.in hal/i_components/mkconv.sh $(HALCOMP_SUBMAKEFILE) $(ECHO) converting conv for $(notdir $@) - $(Q)sh hal/i_components/mkconv.sh s64 u32 "" 0 4294967295 < $< > $@ + $(Q)sh hal/i_components/mkconv.sh s64 u32 "" 0 4294967295UL < $< > $@ From cde4e71c44050f2a90dd325eaa7fcdb3f4848b24 Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 7 Dec 2018 01:24:04 +0800 Subject: [PATCH 355/516] hal/drivers/hal_gpio.c: silence compiler warning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Compiling realtime posix hal/drivers/hal_gpio.c hal/drivers/hal_gpio.c: In function ‘bcm2835_peri_read’: hal/drivers/hal_gpio.c:93:21: warning: unused variable ‘dummy’ [-Wunused-variable] volatile uint32_t dummy = *paddr; --- src/hal/drivers/hal_gpio.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/hal/drivers/hal_gpio.c b/src/hal/drivers/hal_gpio.c index 7c436a3404..699517fa03 100644 --- a/src/hal/drivers/hal_gpio.c +++ b/src/hal/drivers/hal_gpio.c @@ -89,8 +89,7 @@ static __inline__ uint32_t bcm2835_peri_read(volatile uint32_t* paddr) { // Make sure we dont return the _last_ read which might get lost // if subsequent code changes to a different peripheral - uint32_t ret = *paddr; - volatile uint32_t dummy = *paddr; + volatile uint32_t ret = *paddr; return ret; } From 18e675bcd60f7842ee0dd617fb3d2fb7d1cab386 Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 7 Dec 2018 01:39:21 +0800 Subject: [PATCH 356/516] hal/drivers/mesa-hostmot2/hm2_soc_ol.c: silence compiler warnings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See e63fe55c for explanation Compiling realtime posix hal/drivers/mesa-hostmot2/hm2_soc_ol.c hal/drivers/mesa-hostmot2/hm2_soc_ol.c: In function ‘rtapi_app_main’: hal/drivers/mesa-hostmot2/hm2_soc_ol.c:638:40: warning: passing argument 4 of ‘hal_xinit’ from incompatible pointer type comp_id = hal_xinit(TYPE_RT, 0, 0, instantiate, delete, HM2_LLIO_NAME); ^ In file included from hal/drivers/mesa-hostmot2/hm2_soc_ol.c:104:0: ./hal/lib/hal.h:320:5: note: expected ‘hal_constructor_t’ but argument is of type ‘int (*)(const int, const char **)’ int hal_xinit(const int type, ^ --- src/hal/drivers/mesa-hostmot2/hm2_soc_ol.c | 2 +- src/hal/drivers/mesa-hostmot2/hm2_soc_ol.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/hal/drivers/mesa-hostmot2/hm2_soc_ol.c b/src/hal/drivers/mesa-hostmot2/hm2_soc_ol.c index 2ca568b6d4..98cc30ee8d 100644 --- a/src/hal/drivers/mesa-hostmot2/hm2_soc_ol.c +++ b/src/hal/drivers/mesa-hostmot2/hm2_soc_ol.c @@ -495,7 +495,7 @@ static int hm2_soc_munmap(hm2_soc_t *brd) { } -static int instantiate(const int argc, const char**argv) +static int instantiate(const int argc, char* const *argv) { int r = 0, x; size_t nread = 0; diff --git a/src/hal/drivers/mesa-hostmot2/hm2_soc_ol.h b/src/hal/drivers/mesa-hostmot2/hm2_soc_ol.h index 99e052e090..1e580710bc 100644 --- a/src/hal/drivers/mesa-hostmot2/hm2_soc_ol.h +++ b/src/hal/drivers/mesa-hostmot2/hm2_soc_ol.h @@ -47,7 +47,7 @@ typedef struct { const char *uio_dev; // local copy of calling args int argc; - const char **argv; + char* const *argv; void __iomem *base; int len; char *firmware; From f4133b6ddaba6b278e4e094d3337071989f55407 Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 7 Dec 2018 01:53:05 +0800 Subject: [PATCH 357/516] hal/components/pepper.c: silence compiler warning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See https://www.gnu.org/software/gcc/gcc-4.4/changes.html Compiling realtime posix hal/components/pepper.c hal/components/pepper.c:540:1: note: offset of packed bit-field ‘z’ has changed in GCC 4.4 }; ^ --- src/Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Makefile b/src/Makefile index fc12fa51eb..fafd7bb09e 100755 --- a/src/Makefile +++ b/src/Makefile @@ -1314,6 +1314,8 @@ obj-$(CONFIG_HAL_GPIO) += hal_bb_gpio.o hal_bb_gpio-objs := hal/drivers/hal_bb_gpio/hal_bb_gpio.o obj-$(CONFIG_PEPPER) += pepper.o pepper-objs := hal/components/pepper.o $(MATHSTUB) +# Silence warning in GCC 4.4 +$(OBJDIR)/hal/components/pepper.o: EXTRA_CFLAGS += -Wno-packed-bitfield-compat endif obj-m += hal_arm335xQEP.o From 351eb7aef45df63e3d1ce8de7fb24bf8902860f3 Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 7 Dec 2018 01:59:59 +0800 Subject: [PATCH 358/516] src/hal/drivers/hal_arm335xQEP.c: silence compiler warning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This probably fixes a bug, too. Compiling realtime posix hal/drivers/hal_arm335xQEP.c hal/drivers/hal_arm335xQEP.c: In function ‘update’: hal/drivers/hal_arm335xQEP.c:222:13: warning: value computed is not used [-Wunused-value] *(eqep->phase_error_count)++; ^ --- src/hal/drivers/hal_arm335xQEP.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hal/drivers/hal_arm335xQEP.c b/src/hal/drivers/hal_arm335xQEP.c index 39a9e673ef..4482239540 100644 --- a/src/hal/drivers/hal_arm335xQEP.c +++ b/src/hal/drivers/hal_arm335xQEP.c @@ -219,7 +219,7 @@ static void update(void *arg, long period) /* check for phase errors */ if( iflg & PHE ) { - *(eqep->phase_error_count)++; + (*(eqep->phase_error_count))++; } /* clear interrupt flags */ eqep->eqep_reg->QCLR = iflg; From ad15387abd679abcec71f2ab09cae72208d2147b Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 7 Dec 2018 02:03:43 +0800 Subject: [PATCH 359/516] hal/drivers/hal_zed_gpio.c: silence compiler warning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Comment out remaining references to `msg_level`. Ugly, but it follows surrounding code. Compiling realtime posix hal/drivers/hal_zed_gpio.c hal/drivers/hal_zed_gpio.c: In function ‘rtapi_app_main’: hal/drivers/hal_zed_gpio.c:313:16: warning: variable ‘msg_level’ set but not used [-Wunused-but-set-variable] static int msg_level; ^ --- src/hal/drivers/hal_zed_gpio.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/hal/drivers/hal_zed_gpio.c b/src/hal/drivers/hal_zed_gpio.c index 61c16cb24b..b3954b8d23 100644 --- a/src/hal/drivers/hal_zed_gpio.c +++ b/src/hal/drivers/hal_zed_gpio.c @@ -309,13 +309,13 @@ int rtapi_app_main(void) { // zynq and FPGA code revision int rev, zrev; - // save messaging level - static int msg_level; + // save messaging level + /* static int msg_level; */ int n, retval = 0; - - // save message level on entering - msg_level = rtapi_get_msg_level(); - + + // save message level on entering + /* msg_level = rtapi_get_msg_level(); */ + /* force messaging level in: RTAPI_MSG_NONE, RTAPI_MSG_ERR, From bba11cc6ecbb977a23e87f63118bc6ea9897ff3a Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 7 Dec 2018 02:16:33 +0800 Subject: [PATCH 360/516] hal/drivers/hal_gpio_h3.c: silence wacky compiler warnings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This one gets the prize for wacky. Compiling realtime posix hal/drivers/hal_gpio_h3.c hal/drivers/hal_gpio_h3.c:75:36: warning: pointer targets in initialization differ in signedness [-Wpointer-sign] static const uint8_t * comp_name = "hal_gpio_h3"; ^ hal/drivers/hal_gpio_h3.c: In function ‘rtapi_app_main’: hal/drivers/hal_gpio_h3.c:234:24: warning: pointer targets in passing argument 1 of ‘hal_init’ differ in signedness [-Wpointer-sign] comp_id = hal_init(comp_name); ^ In file included from hal/drivers/hal_gpio_h3.c:12:0: ./hal/lib/hal.h:328:19: note: expected ‘const char *’ but argument is of type ‘const uint8_t *’ static inline int hal_init(const char *name) { ^ hal/drivers/hal_gpio_h3.c:311:5: warning: implicit declaration of function ‘close’ [-Wimplicit-function-declaration] close(mem_fd); ^ hal/drivers/hal_gpio_h3.c:350:32: warning: pointer targets in passing argument 1 of ‘strtok’ differ in signedness [-Wpointer-sign] while ((token = strtok(data, ",")) != NULL) ^ In file included from ./rtapi/rtapi_int.h:18:0, from ./rtapi/rtapi.h:85, from hal/drivers/hal_gpio_h3.c:9: /sysroot/usr/include/string.h:348:14: note: expected ‘char * __restrict__’ but argument is of type ‘int8_t *’ extern char *strtok (char *__restrict __s, const char *__restrict __delim) ^ hal/drivers/hal_gpio_h3.c:350:23: warning: pointer targets in assignment differ in signedness [-Wpointer-sign] while ((token = strtok(data, ",")) != NULL) ^ hal/drivers/hal_gpio_h3.c:353:33: warning: pointer targets in passing argument 1 of ‘strlen’ differ in signedness [-Wpointer-sign] size_t len = strlen(token); ^ In file included from ./rtapi/rtapi_int.h:18:0, from ./rtapi/rtapi.h:85, from hal/drivers/hal_gpio_h3.c:9: /sysroot/usr/include/string.h:399:15: note: expected ‘const char *’ but argument is of type ‘int8_t *’ extern size_t strlen (const char *__s) ^ hal/drivers/hal_gpio_h3.c:370:25: warning: implicit declaration of function ‘strtol’ [-Wimplicit-function-declaration] pin = (uint8_t) strtol(&token[2], NULL, 10); ^ hal/drivers/hal_gpio_h3.c:467:32: warning: pointer targets in passing argument 1 of ‘strtok’ differ in signedness [-Wpointer-sign] while ((token = strtok(data, ",")) != NULL) ^ In file included from ./rtapi/rtapi_int.h:18:0, from ./rtapi/rtapi.h:85, from hal/drivers/hal_gpio_h3.c:9: /sysroot/usr/include/string.h:348:14: note: expected ‘char * __restrict__’ but argument is of type ‘int8_t *’ extern char *strtok (char *__restrict __s, const char *__restrict __delim) ^ hal/drivers/hal_gpio_h3.c:467:23: warning: pointer targets in assignment differ in signedness [-Wpointer-sign] while ((token = strtok(data, ",")) != NULL) ^ hal/drivers/hal_gpio_h3.c:470:33: warning: pointer targets in passing argument 1 of ‘strlen’ differ in signedness [-Wpointer-sign] size_t len = strlen(token); ^ In file included from ./rtapi/rtapi_int.h:18:0, from ./rtapi/rtapi.h:85, from hal/drivers/hal_gpio_h3.c:9: /sysroot/usr/include/string.h:399:15: note: expected ‘const char *’ but argument is of type ‘int8_t *’ extern size_t strlen (const char *__s) ^ hal/drivers/hal_gpio_h3.c:633:20: warning: pointer targets in passing argument 1 of ‘rtapi_snprintf’ differ in signedness [-Wpointer-sign] rtapi_snprintf(name, sizeof(name), "%s.write", comp_name); ^ In file included from hal/drivers/hal_gpio_h3.c:9:0: ./rtapi/rtapi.h:323:12: note: expected ‘char *’ but argument is of type ‘int8_t *’ extern int rtapi_snprintf(char *buf, unsigned long int size, ^ hal/drivers/hal_gpio_h3.c:634:31: warning: pointer targets in passing argument 1 of ‘hal_export_funct’ differ in signedness [-Wpointer-sign] retval = hal_export_funct(name, write_port, 0, 0, 0, comp_id); ^ In file included from hal/drivers/hal_gpio_h3.c:12:0: ./hal/lib/hal.h:993:12: note: expected ‘const char *’ but argument is of type ‘int8_t *’ extern int hal_export_funct(const char *name, void (*funct) (void *, long), ^ hal/drivers/hal_gpio_h3.c:644:20: warning: pointer targets in passing argument 1 of ‘rtapi_snprintf’ differ in signedness [-Wpointer-sign] rtapi_snprintf(name, sizeof(name), "%s.read", comp_name); ^ In file included from hal/drivers/hal_gpio_h3.c:9:0: ./rtapi/rtapi.h:323:12: note: expected ‘char *’ but argument is of type ‘int8_t *’ extern int rtapi_snprintf(char *buf, unsigned long int size, ^ hal/drivers/hal_gpio_h3.c:645:31: warning: pointer targets in passing argument 1 of ‘hal_export_funct’ differ in signedness [-Wpointer-sign] retval = hal_export_funct(name, read_port, 0, 0, 0, comp_id); ^ In file included from hal/drivers/hal_gpio_h3.c:12:0: ./hal/lib/hal.h:993:12: note: expected ‘const char *’ but argument is of type ‘int8_t *’ extern int hal_export_funct(const char *name, void (*funct) (void *, long), ^ hal/drivers/hal_gpio_h3.c:655:20: warning: pointer targets in passing argument 1 of ‘rtapi_snprintf’ differ in signedness [-Wpointer-sign] rtapi_snprintf(name, sizeof(name), "%s.reset", comp_name); ^ In file included from hal/drivers/hal_gpio_h3.c:9:0: ./rtapi/rtapi.h:323:12: note: expected ‘char *’ but argument is of type ‘int8_t *’ extern int rtapi_snprintf(char *buf, unsigned long int size, ^ hal/drivers/hal_gpio_h3.c:656:31: warning: pointer targets in passing argument 1 of ‘hal_export_funct’ differ in signedness [-Wpointer-sign] retval = hal_export_funct(name, reset_port, 0, 0, 0, comp_id); ^ In file included from hal/drivers/hal_gpio_h3.c:12:0: ./hal/lib/hal.h:993:12: note: expected ‘const char *’ but argument is of type ‘int8_t *’ extern int hal_export_funct(const char *name, void (*funct) (void *, long), ^ --- src/hal/drivers/hal_gpio_h3.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/hal/drivers/hal_gpio_h3.c b/src/hal/drivers/hal_gpio_h3.c index 364490e371..cf22cc9dbf 100644 --- a/src/hal/drivers/hal_gpio_h3.c +++ b/src/hal/drivers/hal_gpio_h3.c @@ -12,7 +12,7 @@ #include "hal.h" /* HAL public API decls */ #include #include - +#include @@ -72,7 +72,7 @@ struct _GPIO_PORT_t -static const uint8_t * comp_name = "hal_gpio_h3"; +static const char * comp_name = "hal_gpio_h3"; static struct _GPIO_PORT_REG_t * _GPIO[GPIO_PORT_COUNT] = {0}; @@ -173,12 +173,12 @@ long long port_write_time = 0; static uint8_t input_pins_list[H3_PINS_COUNT] = {0}; static uint8_t input_pins_count = 0; -static int8_t *input_pins; +static char *input_pins; RTAPI_MP_STRING(input_pins, "input pins, comma separated"); static uint8_t output_pins_list[H3_PINS_COUNT] = {0}; static uint8_t output_pins_count = 0; -static int8_t *output_pins; +static char *output_pins; RTAPI_MP_STRING(output_pins, "output pins, comma separated"); static unsigned long ns2tsc_factor; @@ -217,9 +217,9 @@ int32_t rtapi_app_main(void) uint32_t vrt_offset = 0; off_t phy_block_addr = 0; int32_t n, retval, p; - int8_t *data, *token; + char *data, *token; uint8_t pin; - int8_t name[HAL_NAME_LEN + 1]; + char name[HAL_NAME_LEN + 1]; #if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,0) &&0//FIXME @@ -367,7 +367,7 @@ int32_t rtapi_app_main(void) if ( token[1] == _GPIO_port_info[p].name ) { // trying to find a correct pin number - pin = (uint8_t) strtol(&token[2], NULL, 10); + pin = (uint8_t) simple_strtol(&token[2], NULL, 10); // if a correct pin number wasn't found if ( pin >= _GPIO_port_info[p].pins_count ) @@ -411,7 +411,7 @@ int32_t rtapi_app_main(void) else if ( token[0] >= '0' && token[0] <= '9' && len <= 2 ) { // trying to find a correct pin number - pin = (uint8_t) strtol(token, NULL, 10); + pin = (uint8_t) simple_strtol(token, NULL, 10); // if a correct pin number wasn't found if ( pin < 1 || pin >= OPI_PINS_COUNT || !_OPI_pins[pin].valid ) @@ -484,7 +484,7 @@ int32_t rtapi_app_main(void) if ( token[1] == _GPIO_port_info[p].name ) { // trying to find a correct pin number - pin = (uint8_t) strtol(&token[2], NULL, 10); + pin = (uint8_t) simple_strtol(&token[2], NULL, 10); // if a correct pin number wasn't found if ( pin >= _GPIO_port_info[p].pins_count ) @@ -546,7 +546,7 @@ int32_t rtapi_app_main(void) else if ( token[0] >= '0' && token[0] <= '9' && len <= 2 ) { // trying to find a correct pin number - pin = (uint8_t) strtol(token, NULL, 10); + pin = (uint8_t) simple_strtol(token, NULL, 10); // if a correct pin number wasn't found if ( pin < 1 || pin >= OPI_PINS_COUNT || From fa0106e5fbf177a92cae5d3c4400a63a44523144 Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 7 Dec 2018 02:45:31 +0800 Subject: [PATCH 361/516] rtapi/xenomai.c: silence compiler warning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Compiling realtime xenomai rtapi/rtapi_main.c rtapi/xenomai.c: In function ‘_rtapi_wait_hook’: rtapi/xenomai.c:382:6: error: ‘return’ with no value, in function returning non-void [-Werror=return-type] return; ^ --- src/rtapi/xenomai.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/rtapi/xenomai.c b/src/rtapi/xenomai.c index 1bb36a496a..d35b4cee2c 100644 --- a/src/rtapi/xenomai.c +++ b/src/rtapi/xenomai.c @@ -379,7 +379,7 @@ int _rtapi_wait_hook(const int flags) { "rt_task_wait_hook: BUG - task_id out of range: %d\n", task_id); // maybe should call a BUG exception here - return; + return 0; } // inquire, fill in @@ -443,6 +443,7 @@ int _rtapi_wait_hook(const int flags) { if (rt_exception_handler) rt_exception_handler(type, &detail, ts); } // else: ok - no overruns; + return 0; } int _rtapi_task_self_hook(void) { From 992c3b14bf29ce7acfb577ab7e1879fa15c2d33f Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 7 Dec 2018 09:57:51 +0800 Subject: [PATCH 362/516] Clean up build output Tweak build output to reduce clutter & long lines; be clear about which threads style when "Depending" --- src/Makefile | 4 ++- src/emc/ini/Submakefile | 6 ++-- src/emc/kinematics/Submakefile | 6 ++-- src/emc/motion/Submakefile | 6 ++-- src/emc/nml_intf/Submakefile | 6 ++-- src/emc/rs274ngc/Submakefile | 6 ++-- src/emc/tp/Submakefile | 6 ++-- src/hal/components/Submakefile | 3 +- src/hal/cython/Submakefile | 3 +- src/hal/drivers/Submakefile | 3 +- src/hal/i_components/Submakefile | 3 +- src/hal/lib/Submakefile | 3 +- src/libnml/buffer/Submakefile | 6 ++-- src/libnml/cms/Submakefile | 6 ++-- src/libnml/inifile/Submakefile | 6 ++-- src/libnml/linklist/Submakefile | 6 ++-- src/libnml/nml/Submakefile | 6 ++-- src/libnml/os_intf/Submakefile | 6 ++-- src/libnml/posemath/Submakefile | 6 ++-- src/libnml/rcs/Submakefile | 6 ++-- src/machinetalk/Submakefile | 42 ++++++++++++++--------- src/machinetalk/lib/Submakefile | 6 ++-- src/machinetalk/msgcomponents/Submakefile | 3 +- src/machinetalk/proto/Makefile | 10 +++--- src/machinetalk/support/Submakefile | 12 ++++--- src/machinetalk/webtalk/Submakefile | 10 +++--- src/rtapi/Submakefile | 11 +++--- 27 files changed, 125 insertions(+), 72 deletions(-) diff --git a/src/Makefile b/src/Makefile index fafd7bb09e..5866aa783e 100755 --- a/src/Makefile +++ b/src/Makefile @@ -818,9 +818,11 @@ endif # ../include. A pair of rules like these will exist in the Submakefile # of each file that contains headers. ../include/%.h: %.h + $(ECHO) Copying header file $@ @mkdir -p $(dir $@) $(Q)-cp $^ $@ ../include/%.hh: %.hh + $(ECHO) Copying header file $@ @mkdir -p $(dir $@) $(Q)-cp $^ $@ @@ -1665,7 +1667,7 @@ $(RTLIBDIR)/%.so: $(sort $(RTDEPS)): $(DEPDIR)/%.d: %.c @mkdir -p $(dir $@) - $(ECHO) Depending $< + $(ECHO) Depending realtime $(threads) $< $(Q)$(call DEP,$(CC),$@ \ $(patsubst depends/%.d,objects/%.o,$@),$@,$(OPT) \ $(DEBUG) $(CPPFLAGS) $(EXTRA_CFLAGS) $<) diff --git a/src/emc/ini/Submakefile b/src/emc/ini/Submakefile index f6768d665b..3e33871567 100644 --- a/src/emc/ini/Submakefile +++ b/src/emc/ini/Submakefile @@ -1,6 +1,8 @@ INCLUDES += emc/ini ../include/%.h: ./emc/ini/%.h - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ ../include/%.hh: ./emc/ini/%.hh - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ diff --git a/src/emc/kinematics/Submakefile b/src/emc/kinematics/Submakefile index de426287e5..8943922fa3 100644 --- a/src/emc/kinematics/Submakefile +++ b/src/emc/kinematics/Submakefile @@ -37,6 +37,8 @@ TARGETS += ../bin/drawbotkins ../include/%.h: ./emc/kinematics/%.h - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ ../include/%.hh: ./emc/kinematics/%.hh - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ diff --git a/src/emc/motion/Submakefile b/src/emc/motion/Submakefile index 3320cd48b5..266ef69c2c 100644 --- a/src/emc/motion/Submakefile +++ b/src/emc/motion/Submakefile @@ -1,6 +1,8 @@ INCLUDES += emc/motion ../include/%.h: ./emc/motion/%.h - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ ../include/%.hh: ./emc/motion/%.hh - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ diff --git a/src/emc/nml_intf/Submakefile b/src/emc/nml_intf/Submakefile index 136bb37a73..e3d45191a7 100644 --- a/src/emc/nml_intf/Submakefile +++ b/src/emc/nml_intf/Submakefile @@ -27,6 +27,8 @@ TARGETS += ../lib/liblinuxcnc.a @$(AR) $(ARFLAGS) $@ $^ ../include/%.h: ./emc/nml_intf/%.h - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ ../include/%.hh: ./emc/nml_intf/%.hh - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ diff --git a/src/emc/rs274ngc/Submakefile b/src/emc/rs274ngc/Submakefile index 06bdf21abb..29fab9afc0 100644 --- a/src/emc/rs274ngc/Submakefile +++ b/src/emc/rs274ngc/Submakefile @@ -50,9 +50,11 @@ TARGETS += ../lib/librs274.so ../lib/librs274.so.0 -lstdc++ -l$(BOOST_PYTHON_LIB) $(PYTHON_LIBS) -ldl ../include/%.h: ./emc/rs274ngc/%.h - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ ../include/%.hh: ./emc/rs274ngc/%.hh - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ GCODEMODULESRCS := emc/rs274ngc/gcodemodule.cc PYSRCS += $(GCODEMODULESRCS) diff --git a/src/emc/tp/Submakefile b/src/emc/tp/Submakefile index 217c7dd800..f954603933 100644 --- a/src/emc/tp/Submakefile +++ b/src/emc/tp/Submakefile @@ -3,9 +3,11 @@ INCLUDES += $(TP_DIR) ../include/%.h: ./$(TP_DIR)/%.h - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ ../include/%.hh: ./$(TP_DIR)/%.hh - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ # obj-m += tp.o diff --git a/src/hal/components/Submakefile b/src/hal/components/Submakefile index eae1b47fa3..4268b3ee53 100644 --- a/src/hal/components/Submakefile +++ b/src/hal/components/Submakefile @@ -95,8 +95,7 @@ halcomp-srcs/%.c: %.comp ../bin/comp $(Q)../bin/comp --require-license -o $@ $< halcomp-srcs/%.mak: %.comp $(HALCOMP_SUBMAKEFILE) - $(ECHO) "Creating $(notdir $@)" - $(ECHO) "Creating $@" + $(ECHO) "Generating comp build rules for $(notdir $<)" @mkdir -p $(dir $@) $(Q)echo "$(notdir $*)-objs := halcomp-srcs/$*.o" > $@.tmp $(Q)echo "\$$(RTLIBDIR)/$(notdir $*)\$$(MODULE_EXT): \\" >> $@.tmp diff --git a/src/hal/cython/Submakefile b/src/hal/cython/Submakefile index 82b83ca9ba..18d457ba79 100644 --- a/src/hal/cython/Submakefile +++ b/src/hal/cython/Submakefile @@ -89,7 +89,8 @@ TARGETS += ../lib/python/machinekit/shmcommon.so $(Q)$(CC) -g -shared -o $@ $^ $(LDFLAGS) -lrt $(HALNGDIR)/machinekit/%.c: $(addprefix $(HALNGDIR)/machinekit/, %.pyx %.pxd) - $(CYTHON) -o $@ $< + $(ECHO) Cython compiling $< + $(Q)$(CYTHON) -o $@ $< clean: cython-clean cython-clean: diff --git a/src/hal/drivers/Submakefile b/src/hal/drivers/Submakefile index 8e65281c69..b634f340da 100644 --- a/src/hal/drivers/Submakefile +++ b/src/hal/drivers/Submakefile @@ -41,7 +41,8 @@ modules: \ INCLUDES += hal/drivers ../include/%.h: ./hal/drivers/%.h - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ # build instructions for the hal_p260c module obj-m += hal_p260c.o diff --git a/src/hal/i_components/Submakefile b/src/hal/i_components/Submakefile index d7cdfe0a1e..8b99ac9c8f 100644 --- a/src/hal/i_components/Submakefile +++ b/src/hal/i_components/Submakefile @@ -65,8 +65,7 @@ halcomp-srcs/%.c: %.icomp ../bin/instcomp $(Q)../bin/instcomp --require-license -o $@ $< halcomp-srcs/%.mak: %.icomp $(HALICOMP_SUBMAKEFILE) - $(ECHO) "Creating $(notdir $@)" - $(ECHO) "Creating $@" + $(ECHO) "Generating icomp build rules for $(notdir $<)" @mkdir -p $(dir $@) $(Q)echo "$(notdir $*)-objs := halcomp-srcs/$*.o" > $@.tmp $(Q)echo "\$$(RTLIBDIR)/$(notdir $*)\$$(MODULE_EXT): \\" >> $@.tmp diff --git a/src/hal/lib/Submakefile b/src/hal/lib/Submakefile index e234097152..d9d7456f97 100644 --- a/src/hal/lib/Submakefile +++ b/src/hal/lib/Submakefile @@ -5,7 +5,8 @@ INCLUDES += $(PBDIR) LIBS := ../lib ../include/%.h: ./hal/lib/%.h - cp $< $@ + $(ECHO) Copying header file $@ + $(Q)cp $< $@ # link in basic nanonpb support routines HALLIBSRCS := $(HALLIBDIR)/hal_lib.c \ diff --git a/src/libnml/buffer/Submakefile b/src/libnml/buffer/Submakefile index 0e346ff709..f0880d624b 100644 --- a/src/libnml/buffer/Submakefile +++ b/src/libnml/buffer/Submakefile @@ -1,6 +1,8 @@ INCLUDES += libnml/buffer ../include/%.h: ./libnml/buffer/%.h - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ ../include/%.hh: ./libnml/buffer/%.hh - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ diff --git a/src/libnml/cms/Submakefile b/src/libnml/cms/Submakefile index e58ab6980f..16268dac96 100644 --- a/src/libnml/cms/Submakefile +++ b/src/libnml/cms/Submakefile @@ -1,6 +1,8 @@ INCLUDES += libnml/cms ../include/%.h: ./libnml/cms/%.h - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ ../include/%.hh: ./libnml/cms/%.hh - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ diff --git a/src/libnml/inifile/Submakefile b/src/libnml/inifile/Submakefile index 8920cb3fac..b0be862857 100644 --- a/src/libnml/inifile/Submakefile +++ b/src/libnml/inifile/Submakefile @@ -1,9 +1,11 @@ INCLUDES += libnml/inifile ../include/%.h: ./libnml/inifile/%.h - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ ../include/%.hh: ./libnml/inifile/%.hh - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ LIBINISRCS := libnml/inifile/inifile.cc $(call TOOBJSDEPS, $(LIBINISRCS)) : EXTRAFLAGS=-fPIC diff --git a/src/libnml/linklist/Submakefile b/src/libnml/linklist/Submakefile index e67746bc6a..5bdfae55ca 100644 --- a/src/libnml/linklist/Submakefile +++ b/src/libnml/linklist/Submakefile @@ -1,6 +1,8 @@ INCLUDES += libnml/linklist ../include/%.h: ./libnml/linklist/%.h - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ ../include/%.hh: ./libnml/linklist/%.hh - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ diff --git a/src/libnml/nml/Submakefile b/src/libnml/nml/Submakefile index 2918dc45cf..b9f1ebd7c8 100644 --- a/src/libnml/nml/Submakefile +++ b/src/libnml/nml/Submakefile @@ -1,6 +1,8 @@ INCLUDES += libnml/nml ../include/%.h: ./libnml/nml/%.h - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ ../include/%.hh: ./libnml/nml/%.hh - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ diff --git a/src/libnml/os_intf/Submakefile b/src/libnml/os_intf/Submakefile index 4af54098f9..1570658bc3 100644 --- a/src/libnml/os_intf/Submakefile +++ b/src/libnml/os_intf/Submakefile @@ -1,6 +1,8 @@ INCLUDES += libnml/os_intf ../include/%.h: ./libnml/os_intf/%.h - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ ../include/%.hh: ./libnml/os_intf/%.hh - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ diff --git a/src/libnml/posemath/Submakefile b/src/libnml/posemath/Submakefile index 6063c608b4..a4717f3462 100644 --- a/src/libnml/posemath/Submakefile +++ b/src/libnml/posemath/Submakefile @@ -12,6 +12,8 @@ TARGETS += ../lib/libposemath.so ../lib/libposemath.so.0 @$(CXX) $(LDFLAGS) -Wl,-soname,$(notdir $@) -shared -o $@ $^ ../include/%.h: ./libnml/posemath/%.h - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ ../include/%.hh: ./libnml/posemath/%.hh - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ diff --git a/src/libnml/rcs/Submakefile b/src/libnml/rcs/Submakefile index 31d6dd0b80..7e3bbfdb5b 100644 --- a/src/libnml/rcs/Submakefile +++ b/src/libnml/rcs/Submakefile @@ -1,6 +1,8 @@ INCLUDES += libnml/rcs ../include/%.h: ./libnml/rcs/%.h - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ ../include/%.hh: ./libnml/rcs/%.hh - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ diff --git a/src/machinetalk/Submakefile b/src/machinetalk/Submakefile index c12ae9924c..456f8d3601 100644 --- a/src/machinetalk/Submakefile +++ b/src/machinetalk/Submakefile @@ -51,10 +51,12 @@ NPBPROTODIR := $(NANOPB)/generator/proto # them present in the PWD in the source tree or have an INCLUDE_PATH set. ../include/%.h: ./$(PBGEN)/$(NAMESPACEDIR)/%.h - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ ../include/%.h: ./$(NANOPB)/%.h - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ # Javascript support @@ -207,7 +209,7 @@ PBDEP_OPT += --vpath=$(DESCDIR)/compiler #objects/$(PROTODIR)/%.d: $(PROTODIR)/%.proto objects/$(PROTODIR)/%.d: %.proto - $(ECHO) "protoc create dependencies for $<" + $(ECHO) "protoc compile dependencies for $<" @mkdir -p objects/$(PROTODIR)/ $(Q)$(PROTOC) \ --plugin=protoc-gen-depends=$(GENDEP) \ @@ -221,14 +223,14 @@ objects/$(PROTODIR)/%.d: %.proto ifneq ($(shell diff -q $(BASEPWD)/$(PROTODIR)/nanopb.proto $(BASEPWD)/$(NPBPROTODIR)/nanopb.proto),) $(error $(PROTODIR)/nanopb.proto and $(NPBPROTODIR)/nanopb.proto do not match; \ the machinetalk/proto subtree might be out of sync) -endif +endif #---------- C++ rules ----------- # # generate .cc/.h from proto files # for command.proto, generated files are: command.pb.cc command.pb.h $(PBGEN)/$(NAMESPACEDIR)/%.pb.cc $(PBGEN)/$(NAMESPACEDIR)/%.pb.h: %.proto - $(ECHO) "protoc create $@ from $<" + $(ECHO) "protoc compile C++ $<" @mkdir -p $(PBGEN) $(Q)$(PROTOC) $(PROTOCXX_FLAGS) \ --proto_path=$(PROTOSRCDIR)/ \ @@ -240,7 +242,7 @@ $(PBGEN)/$(NAMESPACEDIR)/%.pb.cc $(PBGEN)/$(NAMESPACEDIR)/%.pb.h: %.proto # Nanopb: generate *.npb.{c,h} from proto files # these depend on npb options $(PBGEN)/$(NAMESPACEDIR)/%.npb.c $(PBGEN)/$(NAMESPACEDIR)/%.npb.h: %.proto $(NANOPB_SUPPORT) - $(ECHO) "protoc create $@ from $<" + $(ECHO) "protoc compile nanopb C $<" @mkdir -p $(PBGEN)/$(NAMESPACEDIR) $(Q)$(PROTOC) $(PROTOC_FLAGS) \ --plugin=protoc-gen-nanopb=../lib/python/$(NAMESPACEDIR)/protoc-gen-nanopb \ @@ -256,7 +258,7 @@ $(PBGEN)/$(NAMESPACEDIR)/%.npb.c $(PBGEN)/$(NAMESPACEDIR)/%.npb.h: %.proto $(NAN # # generate Python modules from proto files ../lib/python/$(NAMESPACEDIR)/%_pb2.py: %.proto - $(ECHO) "protoc create $@ from $<" + $(ECHO) "protoc compile python $<" @mkdir -p ../lib/python/$(NAMESPACEDIR) $(Q)$(PROTOC) $(PROTOC_FLAGS) \ --proto_path=$(PROTOSRCDIR)/ \ @@ -270,7 +272,7 @@ $(PBGEN)/$(NAMESPACEDIR)/%.npb.c $(PBGEN)/$(NAMESPACEDIR)/%.npb.h: %.proto $(NAN # # generate Javascript modules from proto files $(JSGEN)/%.js: %.proto - $(ECHO) $(PROTO2JS)" create $@ from $<" + $(ECHO) $(PROTO2JS)" compile js $<" @mkdir -p $(JSGEN) $(Q)$(PROTO2JS) $< \ $(PROTOBUFJS_OPT)$(JSNAMESPACE) \ @@ -329,37 +331,45 @@ $(PROTOCXXLIB).0: $(patsubst %.cc,objects/%.o,$(PROTO_CXX_SRCS)) # protoc generated headers are exported to ../include ../include/%.h: ./$(NAMESPACEDIR)/$(PBGEN)/%.h - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ ../include/%.hh: ./$(NAMESPACEDIR)/$(PBGEN)/%.hh - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ # This path is backwards isnt it? # protoc generated headers are exported to ../include ../include/$(NAMESPACEDIR)/%.h: ./$(PBGEN)/$(NAMESPACEDIR)/%.h + $(ECHO) Copying header file $@ @mkdir -p $(dir $@) - cp $^ $@ + $(Q)cp $^ $@ ../include/$(NAMESPACEDIR)/%.hh: ./$(PBGEN)/$(NAMESPACEDIR)/%.hh + $(ECHO) Copying header file $@ @mkdir -p $(dir $@) - cp $^ $@ + $(Q)cp $^ $@ # as are the nanop library headers ../include/$(MACHINETALK)/%.h: ./$(NANOPB)/%.h + $(ECHO) Copying header file $@ @mkdir -p $(dir $@) - cp $^ $@ + $(Q)cp $^ $@ ../include/%.h: ./%.h + $(ECHO) Copying header file $@ @mkdir -p $(dir $@) - cp $^ $@ + $(Q)cp $^ $@ ../include/%.h: ./$(MACHINETALK)/include/%.h + $(ECHO) Copying header file $@ @mkdir -p $(dir $@) - cp $^ $@ + $(Q)cp $^ $@ ../include/%.hh: ./$(MACHINETALK)/include/%.hh + $(ECHO) Copying header file $@ @mkdir -p $(dir $@) - cp $^ $@ + $(Q)cp $^ $@ # those will be compiled USERSRCS += $(NANOPB_C_SRCS) \ diff --git a/src/machinetalk/lib/Submakefile b/src/machinetalk/lib/Submakefile index 999e51bd66..38698dec7e 100644 --- a/src/machinetalk/lib/Submakefile +++ b/src/machinetalk/lib/Submakefile @@ -63,10 +63,12 @@ TARGETS += ../lib/libmtalk.so ../lib/libmtalk.so.0 $(PB2JSONLIB_LDFLAGS) $(LIBBACKTRACE) ../include/%.h: ./$(MACHINETALK)/include/%.h - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ ../include/%.hh: ./$(MACHINETALK)/include/%.hh - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ ifeq ($(BUILD_DEV),yes) diff --git a/src/machinetalk/msgcomponents/Submakefile b/src/machinetalk/msgcomponents/Submakefile index 241b051ab1..0dc6b9f2c3 100644 --- a/src/machinetalk/msgcomponents/Submakefile +++ b/src/machinetalk/msgcomponents/Submakefile @@ -40,7 +40,8 @@ endif ../include/%.h: ./$(MSGCOMP_DIR)/%.h - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ # ifeq ($(BUILD_EXAMPLES),yes) diff --git a/src/machinetalk/proto/Makefile b/src/machinetalk/proto/Makefile index 782701c492..daff17d42a 100644 --- a/src/machinetalk/proto/Makefile +++ b/src/machinetalk/proto/Makefile @@ -146,7 +146,7 @@ install_cpp: $(PROTO_CXX_INCS) install: install_proto install_cpp $(OBJDIR)/%.d: $(SRCDIR)/%.proto - $(ECHO) "protoc create dependencies for $<" + $(ECHO) "protoc compile dependencies for $<" @mkdir -p $(OBJDIR)/ $(Q)$(PROTOC) \ --plugin=protoc-gen-depends=scripts/protoc-gen-depends \ @@ -160,7 +160,7 @@ $(OBJDIR)/%.d: $(SRCDIR)/%.proto # generate .cc/.h from proto files # for command.proto, generated files are: command.pb.cc command.pb.h $(CXXGEN)/%.pb.cc $(CXXGEN)/%.pb.h: $(SRCDIR)/%.proto - $(ECHO) "protoc create $@ from $<" + $(ECHO) "protoc compile C++ $<" @mkdir -p $(CXXGEN) $(Q)$(PROTOC) $(PROTOCXX_FLAGS) \ --proto_path=$(SRCDIR)/ \ @@ -175,7 +175,7 @@ $(CXXGEN)/%.pb.cc $(CXXGEN)/%.pb.h: $(SRCDIR)/%.proto # # generate Python modules from proto files $(PYGEN)/%_pb2.py: $(SRCDIR)/%.proto - $(ECHO) "protoc create $@ from $<" + $(ECHO) "protoc compile python $<" @mkdir -p $(PYGEN) $(Q)$(PROTOC) $(PROTOC_FLAGS) \ --proto_path=$(SRCDIR)/ \ @@ -192,7 +192,7 @@ $(PYGEN)/%/__init__.py: # generate Java packages from proto files define java_from_proto $(call uppercase_file,$(1:$(SRCDIR)/%.proto=$(JAVAGEN)/%.java)): $1 - $(ECHO) "protoc create $$@ from $$<" + $(ECHO) "protoc compile java $$<" @mkdir -p $(JAVAGEN) $(Q)$(PROTOC) $(PROTOC_FLAGS) \ --proto_path=$(SRCDIR)/ \ @@ -210,7 +210,7 @@ $(foreach PROTO,$(PROTO_SPECS),$(eval $(call java_from_proto,$(PROTO)))) # generate $(DOCFORMAT) files from proto files $(DOC_TARGET): $(wildcard $(SRCDIR)/*.proto) #doc_base: - $(ECHO) "protoc create $@ from *.proto" + $(ECHO) "protoc compile doc *.proto" @mkdir -p $(DOCGEN) $(Q)cd $(SRCDIR); \ $(PROTOC) $(PROTOC_FLAGS) \ diff --git a/src/machinetalk/support/Submakefile b/src/machinetalk/support/Submakefile index 2c01500e16..f43b050b18 100644 --- a/src/machinetalk/support/Submakefile +++ b/src/machinetalk/support/Submakefile @@ -78,12 +78,14 @@ $(call TOOBJSDEPS, $(RAWREAD_SRCS)) : EXTRAFLAGS += $(RAWREAD_CCFLAGS) $(Q)$(CC) $(LDFLAGS) -o $@ $^ $(LDFLAGS) $(RAWREAD_LDFLAGS) ../include/%.h: ./$(PBEX)/%.h + $(ECHO) Copying header file $@ @mkdir -p $(dir $@) - cp $^ $@ + $(Q)cp $^ $@ ../include/%.hh: ./$(PBEX)/%.hh + $(ECHO) Copying header file $@ @mkdir -p $(dir $@) - cp $^ $@ + $(Q)cp $^ $@ @@ -101,12 +103,14 @@ $(call TOOBJSDEPS, $(UNIONREAD_SRCS)) : EXTRAFLAGS += $(UNIONREAD_CCFLAGS) $(Q)$(CC) $(LDFLAGS) -o $@ $^ $(LDFLAGS) $(UNIONREAD_LDFLAGS) ../include/%.h: ./$(PBEX)/%.h + $(ECHO) Copying header file $@ @mkdir -p $(dir $@) - cp $^ $@ + $(Q)cp $^ $@ ../include/%.hh: ./$(PBEX)/%.hh + $(ECHO) Copying header file $@ @mkdir -p $(dir $@) - cp $^ $@ + $(Q)cp $^ $@ $(call TOOBJSDEPS, $(PBEX)/sizes.c) : EXTRAFLAGS += diff --git a/src/machinetalk/webtalk/Submakefile b/src/machinetalk/webtalk/Submakefile index 1e63f11303..00c836360f 100644 --- a/src/machinetalk/webtalk/Submakefile +++ b/src/machinetalk/webtalk/Submakefile @@ -58,10 +58,12 @@ TARGETS += ../bin/webtalk ../include/%.h: ./$(WEBTALK_DIR)/%.h - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ ../include/%.hh: ./$(WEBTALK_DIR)/%.hh - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ EXAMPLE_PLUGIN_SRCS := $(addprefix $(WEBTALK_DIR)/, \ @@ -83,7 +85,7 @@ TARGETS += ../lib/webtalk/plugins/example.o ifeq ($(BUILD_DEV),yes) $(WEBTALK_DIR)/zws.pb.cc $(WEBTALK_DIR)/zws.pb.h: $(WEBTALK_DIR)/zws.proto - $(ECHO) "protoc create $@ from $<" + $(ECHO) "protoc compile C++ $<" @mkdir -p $(PBGEN) $(Q)$(PROTOC) $(PROTOCXX_FLAGS) \ --proto_path=$(WEBTALK_DIR)/ \ @@ -93,7 +95,7 @@ $(WEBTALK_DIR)/zws.pb.cc $(WEBTALK_DIR)/zws.pb.h: $(WEBTALK_DIR)/zws.proto # generate Python modules from proto files # useful for testing client with a Python client ../lib/python/zws_pb2.py: $(WEBTALK_DIR)/zws.proto - $(ECHO) "protoc create $@ from $<" + $(ECHO) "protoc compile python $<" @mkdir -p ../lib/python $(Q)$(PROTOC) $(PROTOC_FLAGS) \ --proto_path=$(WEBTALK_DIR)/ \ diff --git a/src/rtapi/Submakefile b/src/rtapi/Submakefile index 33e9e88b68..2cdeece68e 100644 --- a/src/rtapi/Submakefile +++ b/src/rtapi/Submakefile @@ -2,14 +2,17 @@ INCLUDES += rtapi rtapi_export # this covers the userpci and shmdrv directories too, in a bit cludgy way ../include/%.h: ./rtapi/%.h - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ ../include/%.hh: ./rtapi/%.hh - cp $^ $@ + $(ECHO) Copying header file $@ + $(Q)cp $^ $@ ../include/%.h: ./rtapi/shmdrv/%.h - mkdir -p ../include/shmdrv - cp $^ $@ + $(ECHO) Copying header file $@ + @mkdir -p ../include/shmdrv + $(Q)cp $^ $@ ########################################## # Separate sources hack From 78a4f650515a728318de5bbb6c52d3a2bd55ece5 Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 7 Dec 2018 10:01:42 +0800 Subject: [PATCH 363/516] Fix build rules for `conv_*.icomp` - Remove generated files at `make clean` - Regenerate generated files when `Submakefile` is touched to pick up template parameter changes --- src/Makefile | 1 + src/hal/i_components/Submakefile | 2 ++ 2 files changed, 3 insertions(+) diff --git a/src/Makefile b/src/Makefile index 5866aa783e..e4e3749994 100755 --- a/src/Makefile +++ b/src/Makefile @@ -792,6 +792,7 @@ clean: depclean modclean docclean -rm -f $(COPY_CONFIGS) -rm -f $(RTLIBDIR)/*.$(MODULE_EXT) -rm -f hal/components/conv_*.comp + -rm -f hal/i_components/conv_*.icomp -rm -f hal/components/*_bin.h # generated by pasm for bb platform rm -rf ../share/linuxcnc/stepconf -rm -rf ../libexec diff --git a/src/hal/i_components/Submakefile b/src/hal/i_components/Submakefile index 8b99ac9c8f..9d6ab4aae7 100644 --- a/src/hal/i_components/Submakefile +++ b/src/hal/i_components/Submakefile @@ -79,6 +79,8 @@ modules: $(patsubst %.icomp, halcomp-srcs/%.mak, \ $(ICOMPS)) endif # BUILD_ALL_FLAVORS == yes +# Regenerate conv_*.icomp when below rules are touched +$(addprefix hal/i_components/, $(CONVERTERS)): hal/i_components/Submakefile hal/i_components/conv_float_s32.icomp: hal/i_components/conv.icomp.in hal/i_components/mkconv.sh $(HALCOMP_SUBMAKEFILE) $(ECHO) converting conv for $(notdir $@) From fea556023ce51c2fdd1fd6220282ac5e4cf43500 Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 7 Dec 2018 10:32:21 +0800 Subject: [PATCH 364/516] Remove `include/*.h{,h}` from `make clean` --- src/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Makefile b/src/Makefile index e4e3749994..198b27dc93 100755 --- a/src/Makefile +++ b/src/Makefile @@ -796,6 +796,7 @@ clean: depclean modclean docclean -rm -f hal/components/*_bin.h # generated by pasm for bb platform rm -rf ../share/linuxcnc/stepconf -rm -rf ../libexec + -rm -f ../include/*.hh ../include/*.h # So that nothing is built as root, this rule does not depend on the touched # files (Note that files in depends/ might be rebuilt, and there's little that From f7092b5d6f6477548693bf357c5e6086bf6b4980 Mon Sep 17 00:00:00 2001 From: Evgeny Sabelskiy Date: Sat, 8 Dec 2018 13:49:01 +0300 Subject: [PATCH 365/516] patch machinekit src to use tirpc (glibc finally removed rpc), update dependencies, test build --- pkg/rpm/machinekit.spec | 23 ++-- pkg/rpm/machinekit_src_patch_0.1.1.patch | 139 +++++++++++++++++++++++ 2 files changed, 154 insertions(+), 8 deletions(-) create mode 100644 pkg/rpm/machinekit_src_patch_0.1.1.patch diff --git a/pkg/rpm/machinekit.spec b/pkg/rpm/machinekit.spec index a242fb9f86..2e2fa59337 100644 --- a/pkg/rpm/machinekit.spec +++ b/pkg/rpm/machinekit.spec @@ -4,21 +4,22 @@ %bcond_with xenomai %global commit master -%global gittag GIT-TAG -%global shortcommit master Summary: Machine Kit Vendor: MachineKit Packager: MachineKit Name: machinekit -Version: 0.1.0 -Release: 2 +Version: 0.1.1 +Release: 1 Epoch: 0 License: GNU Group: Machine Control/Daemons URL: http://www.machinekit.io -Source0: https://github.com/machinekit/%{name}/archive/%{commit}/%{name}-%{shortcommit}.tar.gz#/%{name}-%{version}.tar.gz +Source0: https://github.com/machinekit/%{name}/archive/%{commit}/%{name}-%{commit}.tar.gz +Source1: https://github.com/machinekit/%{name}/raw/%{commit}/pkg/rpm/machinekit_src_patch_0.1.1.patch + +Patch1: machinekit_src_patch_0.1.1.patch Conflicts: linuxcnc @@ -31,7 +32,7 @@ Requires: uriparser openssl libuuid libmodbus libusb glib2 Requires: gtk2 tcl tcl-tclreadline tk readline libXaw python2-tkinter mesa-libGLU Requires: python2-simplejson python2-numpy python2-xlib pygtkglext python2-configobj python-avahi Requires: pygtk2-libglade gnome-python2 python2-protobuf >= 2.4.1 -Requires: python2-Cython python2-pyftpdlib boost-python python-xdot python2-pydot +Requires: python2-Cython python2-pyftpdlib boost-python2 python-xdot python2-pydot BuildRequires: libstdc++-devel gcc gcc-c++ BuildRequires: pkgconf bwidget redhat-lsb autoconf automake @@ -39,9 +40,15 @@ BuildRequires: libudev-devel protobuf-compiler protobuf-devel BuildRequires: czmq-devel zeromq-devel jansson-devel libwebsockets-devel BuildRequires: uriparser-devel openssl-devel libuuid-devel avahi-devel libmodbus-devel libusb-devel glib2-devel BuildRequires: gtk2-devel tcl-devel tk-devel readline-devel libXaw-devel boost-devel mesa-libGLU-devel -BuildRequires: python2-zmq python2-Cython python2-pyftpdlib python2-protobuf python2-devel python2-tkinter +BuildRequires: python2-zmq python2-pyftpdlib python2-protobuf python2-devel python2-tkinter BuildRequires: python2-simplejson +%if 0%{?fedora} >= 29 +BuildRequires: python3-Cython boost-python2-devel +%else +BuildRequires: python2-Cython +%endif + AutoReq: no %description @@ -97,7 +104,7 @@ Requires: %{name} = %{version}-%{release} developing software that uses MachineKit. %prep -%autosetup -n %{name}-%{commit} +%autosetup -n %{name}-%{commit} -p1 %build cd src diff --git a/pkg/rpm/machinekit_src_patch_0.1.1.patch b/pkg/rpm/machinekit_src_patch_0.1.1.patch new file mode 100644 index 0000000000..1befc7b289 --- /dev/null +++ b/pkg/rpm/machinekit_src_patch_0.1.1.patch @@ -0,0 +1,139 @@ +diff -ru machinekit/src/emc/iotask/Submakefile machinekit-rpm/src/emc/iotask/Submakefile +--- machinekit/src/emc/iotask/Submakefile 2018-12-04 23:01:20.000000000 +0300 ++++ machinekit-rpm/src/emc/iotask/Submakefile 2018-12-07 21:00:18.196045777 +0300 +@@ -4,11 +4,11 @@ + + ../bin/io: $(call TOOBJS, $(IOSRCS)) ../lib/liblinuxcnc.a ../lib/libnml.so.0 ../lib/liblinuxcnchal.so.0 ../lib/liblinuxcncini.so.0 + $(ECHO) Linking $(notdir $@) +- @$(CXX) $(LDFLAGS) -o $@ $^ ++ @$(CXX) $(LDFLAGS) -o $@ $^ -ltirpc + + ../bin/iov2: $(call TOOBJS, $(IOV2SRCS)) ../lib/liblinuxcnc.a ../lib/libnml.so.0 ../lib/liblinuxcnchal.so.0 ../lib/liblinuxcncini.so.0 + $(ECHO) Linking $(notdir $@) +- @$(CXX) $(LDFLAGS) -o $@ $^ ++ @$(CXX) $(LDFLAGS) -o $@ $^ -ltirpc + + TARGETS += ../bin/io ../bin/iov2 + +diff -ru machinekit/src/emc/sai/Submakefile machinekit-rpm/src/emc/sai/Submakefile +--- machinekit/src/emc/sai/Submakefile 2018-12-04 23:01:20.000000000 +0300 ++++ machinekit-rpm/src/emc/sai/Submakefile 2018-12-07 21:04:47.973137108 +0300 +@@ -25,4 +25,4 @@ + ../lib/librtapi_math.so.0 + $(ECHO) Linking $(notdir $@) + $(Q)$(CXX) $(LDFLAGS) $(PROFILE_LDFLAGS) \ +- -o $@ $^ $(ULFLAGS) -l$(BOOST_PYTHON_LIB) $(PYTHON_LIBS) $(LIBREADLINE) ++ -o $@ $^ $(ULFLAGS) -l$(BOOST_PYTHON_LIB) $(PYTHON_LIBS) $(LIBREADLINE) -ltirpc +diff -ru machinekit/src/emc/task/Submakefile machinekit-rpm/src/emc/task/Submakefile +--- machinekit/src/emc/task/Submakefile 2018-12-04 23:01:20.000000000 +0300 ++++ machinekit-rpm/src/emc/task/Submakefile 2018-12-07 20:58:41.643011419 +0300 +@@ -9,7 +9,7 @@ + ../lib/liblinuxcncini.so.0 \ + ../lib/librtapi_math.so.0 + $(ECHO) Linking $(notdir $@) +- @$(CXX) $(LDFLAGS) -o $@ $^ ++ @$(CXX) $(LDFLAGS) -o $@ $^ -ltirpc + TARGETS += ../bin/linuxcncsvr + + # disabled: emc/task/iotaskintf.cc +@@ -42,5 +42,5 @@ + ../lib/libpyplugin.so.0 \ + ../lib/librtapi_math.so.0 + $(ECHO) Linking $(notdir $@) +- $(Q)$(CXX) -o $@ $^ $(LDFLAGS) -l$(BOOST_PYTHON_LIB) $(PYTHON_LIBS) ++ $(Q)$(CXX) -o $@ $^ $(LDFLAGS) -l$(BOOST_PYTHON_LIB) $(PYTHON_LIBS) -ltirpc + TARGETS += ../bin/milltask +diff -ru machinekit/src/emc/usr_intf/Submakefile machinekit-rpm/src/emc/usr_intf/Submakefile +--- machinekit/src/emc/usr_intf/Submakefile 2018-12-04 23:01:20.000000000 +0300 ++++ machinekit-rpm/src/emc/usr_intf/Submakefile 2018-12-07 18:09:02.679113318 +0300 +@@ -60,7 +60,7 @@ + ../lib/liblinuxcncini.so.0 \ + ../lib/librtapi_math.so.0 + $(ECHO) Linking $(notdir $@) +- $(Q)$(CXX) $(LDFLAGS) -o $@ $^ -lpthread ++ $(Q)$(CXX) $(LDFLAGS) -o $@ $^ -lpthread -ltirpc + TARGETS += ../bin/linuxcncrsh + + ../bin/schedrmt: $(call TOOBJS, $(EMCSCHEDSRCS)) \ +@@ -69,7 +69,7 @@ + ../lib/liblinuxcncini.so.0 \ + ../lib/librtapi_math.so.0 + $(ECHO) Linking $(notdir $@) +- $(Q)$(CXX) $(LDFLAGS) -o $@ $^ -lpthread ++ $(Q)$(CXX) $(LDFLAGS) -o $@ $^ -lpthread -ltirpc + TARGETS += ../bin/schedrmt + + ../bin/linuxcnclcd: $(call TOOBJS, $(EMCLCDSRCS)) \ +@@ -78,7 +78,7 @@ + ../lib/liblinuxcncini.so.0 \ + ../lib/librtapi_math.so.0 + $(ECHO) Linking $(notdir $@) +- $(Q)$(CXX) $(LDFLAGS) -o $@ $^ ++ $(Q)$(CXX) $(LDFLAGS) -o $@ $^ -ltirpc + TARGETS += ../bin/linuxcnclcd + + +@@ -89,7 +89,7 @@ + ../lib/liblinuxcnchal.so.0 \ + ../lib/librtapi_math.so.0 + $(ECHO) Linking $(notdir $@) +- $(Q)$(CXX) $(LDFLAGS) -o $@ $^ ++ $(Q)$(CXX) $(LDFLAGS) -o $@ $^ -ltirpc + TARGETS += ../bin/halui + + ifeq "$(HAVE_NCURSES)" "yes" +@@ -99,7 +99,7 @@ + ../lib/liblinuxcncini.so.0 \ + ../lib/librtapi_math.so.0 + $(ECHO) Linking $(notdir $@) +- $(Q)$(CXX) $(LDFLAGS) -o $@ $^ $(KEYSTICKLIBS) ++ $(Q)$(CXX) $(LDFLAGS) -o $@ $^ $(KEYSTICKLIBS) -ltirpc + TARGETS += ../bin/keystick + endif + +@@ -111,7 +111,7 @@ + ../lib/liblinuxcncini.so.0 \ + ../lib/librtapi_math.so.0 + $(ECHO) Linking $(notdir $@) +- $(Q)$(CXX) $(LDFLAGS) -o $@ $^ $(XLIBS) ++ $(Q)$(CXX) $(LDFLAGS) -o $@ $^ $(XLIBS) -ltirpc + TARGETS += ../bin/xlinuxcnc + endif + +@@ -124,6 +124,6 @@ + $(ECHO) Linking $(notdir $@) + $(Q)$(CXX) $(LDFLAGS) $(BOOST_LDFLAGS) -o $@ $(ULFLAGS) $^ \ + $(BOOST_THREAD_LIB) $(BOOST_SYSTEM_LIB) \ +- -lpthread -ldl ++ -lpthread -ldl -ltirpc + TARGETS += ../bin/emcweb + endif +diff -ru machinekit/src/libnml/cms/Submakefile machinekit-rpm/src/libnml/cms/Submakefile +--- machinekit/src/libnml/cms/Submakefile 2018-12-04 23:01:20.000000000 +0300 ++++ machinekit-rpm/src/libnml/cms/Submakefile 2018-12-07 17:46:52.779723011 +0300 +@@ -1,4 +1,4 @@ +-INCLUDES += libnml/cms ++INCLUDES += libnml/cms /usr/include/tirpc + + ../include/%.h: ./libnml/cms/%.h + cp $^ $@ +diff -ru machinekit/src/Makefile machinekit-rpm/src/Makefile +--- machinekit/src/Makefile 2018-12-04 23:01:20.000000000 +0300 ++++ machinekit-rpm/src/Makefile 2018-12-07 16:33:12.354877734 +0300 +@@ -824,12 +824,12 @@ + $(Q)-cp $^ $@ + + +-DIR=install -d -m 0755 -o root +-FILE=install -m 0644 -o root ++DIR=install -d -m 0755 ++FILE=install -m 0644 + TREE=cp -dR + CONFIGFILE=install -m 0644 +-EXE=install -m 0755 -o root +-SETUID=install -m 4755 -o root ++EXE=install -m 0755 ++SETUID=install -m 4755 + GLOB=$(wildcard $(1)) + + ifeq ($(RUN_IN_PLACE),yes) From 554f544e4959f904bbf6cad595c0cd0dc7cbfda4 Mon Sep 17 00:00:00 2001 From: Evgeny Sabelskiy Date: Sat, 8 Dec 2018 14:10:02 +0300 Subject: [PATCH 366/516] update requires and build requires, included missed tirpc --- pkg/rpm/machinekit.spec | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/rpm/machinekit.spec b/pkg/rpm/machinekit.spec index 2e2fa59337..06ca679453 100644 --- a/pkg/rpm/machinekit.spec +++ b/pkg/rpm/machinekit.spec @@ -33,6 +33,7 @@ Requires: gtk2 tcl tcl-tclreadline tk readline libXaw python2-tkinter mesa-libGL Requires: python2-simplejson python2-numpy python2-xlib pygtkglext python2-configobj python-avahi Requires: pygtk2-libglade gnome-python2 python2-protobuf >= 2.4.1 Requires: python2-Cython python2-pyftpdlib boost-python2 python-xdot python2-pydot +Requires: libtirpc BuildRequires: libstdc++-devel gcc gcc-c++ BuildRequires: pkgconf bwidget redhat-lsb autoconf automake @@ -42,6 +43,7 @@ BuildRequires: uriparser-devel openssl-devel libuuid-devel avahi-devel libmodbus BuildRequires: gtk2-devel tcl-devel tk-devel readline-devel libXaw-devel boost-devel mesa-libGLU-devel BuildRequires: python2-zmq python2-pyftpdlib python2-protobuf python2-devel python2-tkinter BuildRequires: python2-simplejson +BuildRequires: libtirpc-devel %if 0%{?fedora} >= 29 BuildRequires: python3-Cython boost-python2-devel From 60664765436db9491fcb181f1ef8202d5ea09342 Mon Sep 17 00:00:00 2001 From: Mick Date: Sun, 9 Dec 2018 15:49:42 +0000 Subject: [PATCH 367/516] Restrict CFLAG -Werror to Jessie and Stretch builds The gcc 8.x used in Buster and above throws many warnings not covered in the commmits to remove them from Jessie and Stretch. Signed-off-by: Mick --- scripts/build_docker | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/scripts/build_docker b/scripts/build_docker index d946ea4c8a..feac0f8293 100755 --- a/scripts/build_docker +++ b/scripts/build_docker @@ -64,6 +64,16 @@ case ${TAG} in ;; esac +# Distro specific warnings level +case ${TAG} in + *_8|*_9) + WERROR_FLAG="-Werror" + ;; + *) + WERROR_FLAG="" # Buster and above have many as yet unresolved warnings + ;; +esac + # DH_VERBOSE turn on verbose package debuilds ! ${MK_PACKAGE_VERBOSE:-false} || export DH_VERBOSE=1 @@ -109,7 +119,7 @@ case $CMD in -e TRAVIS_PULL_REQUEST=$TRAVIS_PULL_REQUEST -e TRAVIS_REPO=$TRAVIS_REPO -e TRAVIS_REPO_SLUG=$TRAVIS_REPO_SLUG - -e DPKG_CFLAGS="${DPKG_CFLAGS} -Werror" + -e DPKG_CFLAGS="${DPKG_CFLAGS} ${WERROR_FLAG}" ) BUILD_CL=( bash -xec " From 1782d682ac2c0873088023320bd7d17f5321c625 Mon Sep 17 00:00:00 2001 From: John Morris Date: Tue, 4 Dec 2018 14:42:41 +0800 Subject: [PATCH 368/516] debian/: no-op commit whitespace changes --- debian/configure | 13 ++++++------- src/Makefile | 2 +- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/debian/configure b/debian/configure index de9d88f70b..33271c2473 100755 --- a/debian/configure +++ b/debian/configure @@ -43,7 +43,7 @@ do_posix() { do_rt-preempt() { cat control.rt-preempt.in >> control echo "debian/control: added RT_PREEMPT threads package" >&2 - + rules_enable_threads rt-preempt HAVE_FLAVOR=true } @@ -82,9 +82,9 @@ machinekit (${MKVERSION}) ${DISTRO_UC}; urgency=low EOF -cat changelog # debug output -cat changelog.in >> changelog -echo "New package version number added to changelog" + cat changelog # debug output + cat changelog.in >> changelog + echo "New package version number added to changelog" } ## Create source orig tarball in format required for creation of debian tarball and .dsc file @@ -143,9 +143,9 @@ HAVE_FLAVOR=false if [ "$DISTRO_CODENAME" == "stretch" ]; then cp control.stretch.in control elif [ "$DISTRO_CODENAME" == "buster" ]; then - cp control.buster.in control + cp control.buster.in control elif [ "$DISTRO_CODENAME" == "sid" ]; then - cp control.sid.in control + cp control.sid.in control else cp control.in control fi @@ -176,4 +176,3 @@ echo "debian/control: add final Build-Depends: list" >&2 # Warn if no flavor configured $HAVE_FLAVOR || usage "WARNING: No thread flavors configured" - diff --git a/src/Makefile b/src/Makefile index 198b27dc93..38327a6b9d 100755 --- a/src/Makefile +++ b/src/Makefile @@ -659,7 +659,7 @@ HEADERS := \ rtapi/shmdrv/shmdrv.h - + ## the "headers" target installs all the header files in ../include .PHONY: headers HEADERS := $(patsubst %,../include/%,$(foreach h,$(HEADERS),$(notdir $h))) From bca8be6b5990d3f28b49a695ddbd7f59845bf93e Mon Sep 17 00:00:00 2001 From: John Morris Date: Tue, 4 Dec 2018 14:44:09 +0800 Subject: [PATCH 369/516] debian/configure: replace mk-cross-builder optimizations Commit a6259588 from PR machinekit/machinekit#1303 improved `debian/changelog` handling, but had to throw away optimizations from commit 0fe6559 (from PR machinekit/machinekit#1293) that reduce the number of files that must be copied over to mk-cross-builder when updating the container. This commit adds back new, simpler optimizations for the same purpose. --- debian/configure | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/debian/configure b/debian/configure index 33271c2473..6ab061ba13 100755 --- a/debian/configure +++ b/debian/configure @@ -26,6 +26,11 @@ rules_enable_threads() { # enable thread flavors in debian/rules; e.g. # THREADS_POSIX = --with-posix # ...unnecessary for control-only + if test -n "$MK_CROSS_BUILDER"; then + # Reduce file req'ts in mk-cross-builder + echo "debian/rules: skip ${FLAVOR} config in mk-cross-builder" >&2 + return + fi FLAVOR=$1 FLAVOR_VAR=THREADS_$(echo $FLAVOR | tr 'a-z-' 'A-Z_') sed -i rules \ @@ -150,11 +155,13 @@ else cp control.in control fi -echo "debian/control: copied base template" >&2 -cp rules.in rules; chmod +x rules -echo "debian/rules: copied base template" >&2 -cp machinekit.install.in machinekit.install -echo "debian/machinekit.install.in: copied base template" >&2 +if test -z "$MK_CROSS_BUILDER"; then # Reduce file req'ts in mk-cross-builder + echo "debian/control: copied base template" >&2 + cp rules.in rules; chmod +x rules + echo "debian/rules: copied base template" >&2 + cp machinekit.install.in machinekit.install + echo "debian/machinekit.install.in: copied base template" >&2 +fi # read command line options while getopts prxcsd?h ARG; do From da603020f2cd0e234c75ddea673e463721cefd70 Mon Sep 17 00:00:00 2001 From: John Morris Date: Tue, 4 Dec 2018 14:48:56 +0800 Subject: [PATCH 370/516] debian/linuxcnc-sim.sharedmimeinfo: remove obsolete symlink The `debian/linuxcnc-sim.sharedmimeinfo` symlink pointed to `debian/linuxcnc.sharedmimeinfo`. When packages were renamed to `machinekit`, I removed the link target in ad308c64, but failed to remove the symlink. --- debian/linuxcnc-sim.sharedmimeinfo | 1 - 1 file changed, 1 deletion(-) delete mode 120000 debian/linuxcnc-sim.sharedmimeinfo diff --git a/debian/linuxcnc-sim.sharedmimeinfo b/debian/linuxcnc-sim.sharedmimeinfo deleted file mode 120000 index bae65fd553..0000000000 --- a/debian/linuxcnc-sim.sharedmimeinfo +++ /dev/null @@ -1 +0,0 @@ -linuxcnc.sharedmimeinfo \ No newline at end of file From 4a83b9ef12b1a125a1cbc6fd6e546e4b3e9f4aca Mon Sep 17 00:00:00 2001 From: John Morris Date: Wed, 5 Dec 2018 13:31:24 +0800 Subject: [PATCH 371/516] Makefile: add `CPPFLAGS` to RT `gcc {%.c,%.cc}` command While updating the Docker images for Jessie CI to replace the emdebian cross-compile toolchain with Linaro's, the RT build mysteriously broke, and I'm unclear why the behavior should be different. (I also wonder if this would obviate any of the monkey-patching in the Dockerfile.) This is related to revs. 0b06a453 and de1ad060 from PR machinekit/machinekit#1077 and issue machinekit/machinekit#1072 --- src/Makefile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Makefile b/src/Makefile index 38327a6b9d..9f9bc472c4 100755 --- a/src/Makefile +++ b/src/Makefile @@ -1679,7 +1679,7 @@ $(sort $(RTOBJS)) : $(OBJDIR)/%.o : %.c $(DEPDIR)/%.d $(ECHO) Compiling realtime $(threads) $< @rm -f $@ @mkdir -p $(dir $@) - $(Q)$(CC) -c $(OPT) $(DPKG_CFLAGS) $(DEBUG) \ + $(Q)$(CC) -c $(OPT) $(DPKG_CFLAGS) $(DEBUG) $(CPPFLAGS) \ $(EXTRA_CFLAGS) $< -o $@ # Rules to make .o (object) files from .cc @@ -1687,7 +1687,8 @@ $(sort $(CXXRTOBJS)) : $(OBJDIR)/%.o : %.cc $(DEPDIR)/%.d $(ECHO) Compiling realtime++ $< @rm -f $@ @mkdir -p $(dir $@) - $(Q)$(CXX) -c $(OPT) $(DEBUG) $(RT_CXXFLAGS) $(EXTRA_CFLAGS) $< -o $@ + $(Q)$(CXX) -c $(OPT) $(DEBUG) $(RT_CXXFLAGS) $(CPPFLAGS) \ + $(EXTRA_CFLAGS) $< -o $@ endif # end BUILD_SYS=user-dso From ee7a9eee3280741dba29a82c7876f8fff6d0e8dc Mon Sep 17 00:00:00 2001 From: John Morris Date: Wed, 5 Dec 2018 15:57:35 +0800 Subject: [PATCH 372/516] .travis: Handle failures in sftp better Long `ls -alR` output exceeds Travis CI's output limit, obscuring the error. It seems like this was probably once used for debugging, and is now not useful. Removed. Reflow the `send_binaries.sh` script to squash indented blocks. Handle case when `${SFTP_PASSWD}` is empty: $ .travis/send_status.sh sshpass: invalid option -- 'P' sshpass: invalid option -- 'o' Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters --- .travis/check_sftp.sh | 4 +++- .travis/send_binaries.sh | 38 ++++++++++++++++++++++++++------------ .travis/send_status.sh | 5 +++++ 3 files changed, 34 insertions(+), 13 deletions(-) diff --git a/.travis/check_sftp.sh b/.travis/check_sftp.sh index 5cb40b2e71..e8e702a703 100755 --- a/.travis/check_sftp.sh +++ b/.travis/check_sftp.sh @@ -23,7 +23,7 @@ fi # test conection FILE="${TRAVIS_REPO_SLUG//\//.}_${TRAVIS_BRANCH}_${TRAVIS_JOB_NUMBER}" -cat >${TRAVIS_BUILD_DIR}/../${FILE} << EOF +cat >${TRAVIS_BUILD_DIR}/../${FILE} << EOF TRAVIS_BRANCH=${TRAVIS_BRANCH} TRAVIS_BUILD_DIR=${TRAVIS_BUILD_DIR} TRAVIS_BUILD_ID=${TRAVIS_BUILD_ID} @@ -50,3 +50,5 @@ sshpass -p ${SFTP_PASSWD} sftp -P ${SFTP_PORT} -o StrictHostKeyChecking=no \ if [ $err -ne 0 ]; then die "Error connecting with sftp. Exit code: ${err}" fi + +echo "Successfully configured sftp" diff --git a/.travis/send_binaries.sh b/.travis/send_binaries.sh index 43c0ad2540..fc0bfa55c7 100755 --- a/.travis/send_binaries.sh +++ b/.travis/send_binaries.sh @@ -3,18 +3,34 @@ FILE="${TRAVIS_REPO_SLUG//\//.}_${TRAVIS_BRANCH}_${TRAVIS_JOB_NUMBER}.tgz" if [ "${CMD}" = "run_tests" ]; then + echo "Skipping upload on regression test run" >&2 exit 0 fi -# skip upload on failure -if [ "${TRAVIS_TEST_RESULT}" -eq 0 ] && [ ! -f ~/no_sftp ]; then - if [ -d ${ROOTFS}/${MACHINEKIT_PATH}/deploy ]; then - cd ${TRAVIS_BUILD_DIR} - tar cvzf ${FILE} -C ${ROOTFS}/${MACHINEKIT_PATH}/deploy . - else - echo "${ROOTFS}/${MACHINEKIT_PATH}/deploy is missing"; - ls -alR ${ROOTFS}/${MACHINEKIT_PATH}/ - fi +if [ "${TRAVIS_TEST_RESULT}" -ne 0 ]; then + echo "Skipping upload on failure" >&2 + exit 0 +fi + +if [ ! -f ~/no_sftp ]; then + echo "Skipping upload when sftp unavailable" >&2 + exit 0 +fi + +if [ -z "${SFTP_PASSWD}" ]; then + echo "Not sending status: sftp parameters unconfigured" >&2 + exit 0 +fi + +if [ ! -d ${ROOTFS}/${MACHINEKIT_PATH}/deploy ]; then + echo "Skipping upload when deploy directory absent" >&2 + exit 1 +fi + + +# Tar up results and ship them out +cd ${TRAVIS_BUILD_DIR} +tar cvzf ${FILE} -C ${ROOTFS}/${MACHINEKIT_PATH}/deploy . cat >sftp_cmds <&2 + exit 0 +fi + FILE="${TRAVIS_REPO_SLUG//\//.}_${TRAVIS_BRANCH}_${TRAVIS_JOB_NUMBER}_" if [ ${TRAVIS_TEST_RESULT} ]; then FILE+="passed" From 70d7c2946a3d79553be4e2012fe840a5364f68ba Mon Sep 17 00:00:00 2001 From: John Morris Date: Wed, 5 Dec 2018 16:50:21 +0800 Subject: [PATCH 373/516] tests/pll_correction: skip test This test is probably badly designed, and even if not it fails too frequently on Travis CI. --- tests/pll_correction/skip | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 tests/pll_correction/skip diff --git a/tests/pll_correction/skip b/tests/pll_correction/skip new file mode 100644 index 0000000000..94249fcb13 --- /dev/null +++ b/tests/pll_correction/skip @@ -0,0 +1,3 @@ +#!/bin/bash +# This test doesn't work reliably, especially on Travis CI. +exit 1 From a5ea53e5b61a334e3e2de58c04320b4fc2d13547 Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 7 Dec 2018 11:34:03 +0800 Subject: [PATCH 374/516] scripts/build_docker: Allocate pseudo-TTY for all runs Ctrl-C & keyboard interrupts now work --- scripts/build_docker | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/build_docker b/scripts/build_docker index feac0f8293..7eef9b3dae 100755 --- a/scripts/build_docker +++ b/scripts/build_docker @@ -98,7 +98,7 @@ export TAG declare -a BUILD_CL DOCKER_EXTRA_OPTS case $CMD in "shell"|"") # Interactive shell (default) - DOCKER_EXTRA_OPTS=( --privileged --interactive --tty ) + DOCKER_EXTRA_OPTS=( --privileged --interactive ) if test -z "$*"; then BUILD_CL=( bash -i ) else @@ -197,6 +197,7 @@ set -x # Show user the command # hide --it exec docker run \ --rm \ + --tty \ "${DOCKER_EXTRA_OPTS[@]}" \ -u ${UID_GID} -e USER=${USER} \ -v ${HOME}:${HOME} -e HOME=${HOME} \ From 5e3b1695b525d96ef3a8a47b1b4fbcaa20b356b0 Mon Sep 17 00:00:00 2001 From: Mick Date: Tue, 11 Dec 2018 16:49:57 +0000 Subject: [PATCH 375/516] Add libmodbus version checks Courtesy of Dale Lukas Peterson and linuxcnc commit https://github.com/LinuxCNC/linuxcnc/pull/106/commits/5bdebef86dce6b56ecbb122f6dde29f85afbef0f Debian sid now includes libmodbus 3.1.4-1 which breaks existing API Can be expected to filter down through the backports Fixes machinekit-hal/issues/166 Signed-off-by: Mick --- src/hal/user_comps/mb2hal/mb2hal.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/hal/user_comps/mb2hal/mb2hal.c b/src/hal/user_comps/mb2hal/mb2hal.c index 1ba9a87015..73d3ea816d 100644 --- a/src/hal/user_comps/mb2hal/mb2hal.c +++ b/src/hal/user_comps/mb2hal/mb2hal.c @@ -359,14 +359,26 @@ retCode get_tx_connection(const int this_mb_tx_num, int *ret_connected) //set response and byte timeout according to each mb_tx timeout.tv_sec = this_mb_tx->mb_response_timeout_ms / 1000; timeout.tv_usec = (this_mb_tx->mb_response_timeout_ms % 1000) * 1000; +#if (LIBMODBUS_VERSION_CHECK(3, 1, 2)) + modbus_set_response_timeout(this_mb_link->modbus, timeout.tv_sec, timeout.tv_usec); +#else modbus_set_response_timeout(this_mb_link->modbus, &timeout); +#endif + //modbus_set_response_timeout(this_mb_link->modbus, &timeout); + //DBG(this_mb_tx->cfg_debug, "mb_tx_num[%d] mb_links[%d] response timeout [%d] ([%d] [%d])", // this_mb_tx_num, this_mb_tx->mb_link_num, this_mb_tx->mb_response_timeout_ms, // (int) timeout.tv_sec, (int) timeout.tv_usec); timeout.tv_sec = this_mb_tx->mb_byte_timeout_ms / 1000; timeout.tv_usec = (this_mb_tx->mb_byte_timeout_ms % 1000) * 1000; +#if (LIBMODBUS_VERSION_CHECK(3, 1, 2)) + modbus_set_byte_timeout(this_mb_link->modbus, timeout.tv_sec, timeout.tv_usec); +#else modbus_set_byte_timeout(this_mb_link->modbus, &timeout); +#endif + //modbus_set_byte_timeout(this_mb_link->modbus, &timeout); + //DBG(this_mb_tx->cfg_debug, "mb_tx_num[%d] mb_links[%d] byte timeout [%d] ([%d] [%d])", // this_mb_tx_num, this_mb_tx->mb_link_num, this_mb_tx->mb_byte_timeout_ms, // (int) timeout.tv_sec, (int) timeout.tv_usec); From b4cd86d23e44e0dd4ee97874f4497534033f5ada Mon Sep 17 00:00:00 2001 From: Blake Atkins Date: Tue, 11 Dec 2018 12:41:02 -0500 Subject: [PATCH 376/516] Add missing backslash to escape quote --- src/machinetalk/videoserver/videoserver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/machinetalk/videoserver/videoserver.py b/src/machinetalk/videoserver/videoserver.py index 6c95f61007..747cea22c0 100644 --- a/src/machinetalk/videoserver/videoserver.py +++ b/src/machinetalk/videoserver/videoserver.py @@ -98,7 +98,7 @@ def start_video(self, device_id): arguments = ' ' + video_device.arguments command = [ - 'mjpg_streamer -i \"{libpath}input_uvc.so -n -f {framerate} -r {resolution} -q {quality} -d {device}" ' + 'mjpg_streamer -i \"{libpath}input_uvc.so -n -f {framerate} -r {resolution} -q {quality} -d {device}\" ' '-o \" {libpath}output_zmqserver.so --address {uri} --buffer_size {buffer_size}\"{args}'.format( libpath=libpath, framerate=video_device.framerate, From 87c9aa2461c2dc2ebe71678b46dcd48d0c62c20e Mon Sep 17 00:00:00 2001 From: Blake Atkins Date: Tue, 11 Dec 2018 17:30:54 -0500 Subject: [PATCH 377/516] Do not escape quotes --- src/machinetalk/videoserver/videoserver.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/machinetalk/videoserver/videoserver.py b/src/machinetalk/videoserver/videoserver.py index 747cea22c0..b5211cf9a0 100644 --- a/src/machinetalk/videoserver/videoserver.py +++ b/src/machinetalk/videoserver/videoserver.py @@ -98,8 +98,8 @@ def start_video(self, device_id): arguments = ' ' + video_device.arguments command = [ - 'mjpg_streamer -i \"{libpath}input_uvc.so -n -f {framerate} -r {resolution} -q {quality} -d {device}\" ' - '-o \" {libpath}output_zmqserver.so --address {uri} --buffer_size {buffer_size}\"{args}'.format( + 'mjpg_streamer -i "{libpath}input_uvc.so -n -f {framerate} -r {resolution} -q {quality} -d {device}" ' + '-o " {libpath}output_zmqserver.so --address {uri} --buffer_size {buffer_size}"{args}'.format( libpath=libpath, framerate=video_device.framerate, resolution=video_device.resolution, From 1de0d8b57014f725dd265c69ce3914051e24b09a Mon Sep 17 00:00:00 2001 From: Raoul Rubien Date: Thu, 20 Dec 2018 10:56:56 +0100 Subject: [PATCH 378/516] squashed feature-xhc-whb04b-6 branch commits (except of hy_vfd* related) --- configs/apps/xhc-whb04b-6/README.md | 4 + .../xhc-whb04b-6/xhc-whb04b-6-post-gui.hal | 6 + configs/apps/xhc-whb04b-6/xhc-whb04b-6.hal | 238 +++ src/Makefile | 1 + src/hal/user_comps/Submakefile | 2 + src/hal/user_comps/xhc-whb04b-6/README.md | 411 ++++ src/hal/user_comps/xhc-whb04b-6/Submakefile | 44 + .../xhc-whb04b-6/buttons-layout-diagram.txt | 15 + .../components-diagram-hal-mode.txt | 26 + .../components-diagram-simulation-mode.txt | 22 + .../xhc-whb04b-6/display-layout-diagram.txt | 79 + .../xhc-whb04b-6/example-configuration.md | 164 ++ src/hal/user_comps/xhc-whb04b-6/hal.cc | 1425 +++++++++++++ src/hal/user_comps/xhc-whb04b-6/hal.h | 564 +++++ src/hal/user_comps/xhc-whb04b-6/main.cc | 223 ++ .../user_comps/xhc-whb04b-6/pendant-types.cc | 159 ++ .../user_comps/xhc-whb04b-6/pendant-types.h | 99 + src/hal/user_comps/xhc-whb04b-6/pendant.cc | 1849 +++++++++++++++++ src/hal/user_comps/xhc-whb04b-6/pendant.h | 622 ++++++ src/hal/user_comps/xhc-whb04b-6/usb.cc | 850 ++++++++ src/hal/user_comps/xhc-whb04b-6/usb.h | 387 ++++ .../user_comps/xhc-whb04b-6/xhc-whb04b6.cc | 720 +++++++ src/hal/user_comps/xhc-whb04b-6/xhc-whb04b6.h | 114 + 23 files changed, 8024 insertions(+) create mode 100644 configs/apps/xhc-whb04b-6/README.md create mode 100644 configs/apps/xhc-whb04b-6/xhc-whb04b-6-post-gui.hal create mode 100644 configs/apps/xhc-whb04b-6/xhc-whb04b-6.hal create mode 100644 src/hal/user_comps/xhc-whb04b-6/README.md create mode 100644 src/hal/user_comps/xhc-whb04b-6/Submakefile create mode 100644 src/hal/user_comps/xhc-whb04b-6/buttons-layout-diagram.txt create mode 100644 src/hal/user_comps/xhc-whb04b-6/components-diagram-hal-mode.txt create mode 100644 src/hal/user_comps/xhc-whb04b-6/components-diagram-simulation-mode.txt create mode 100644 src/hal/user_comps/xhc-whb04b-6/display-layout-diagram.txt create mode 100755 src/hal/user_comps/xhc-whb04b-6/example-configuration.md create mode 100644 src/hal/user_comps/xhc-whb04b-6/hal.cc create mode 100644 src/hal/user_comps/xhc-whb04b-6/hal.h create mode 100755 src/hal/user_comps/xhc-whb04b-6/main.cc create mode 100644 src/hal/user_comps/xhc-whb04b-6/pendant-types.cc create mode 100644 src/hal/user_comps/xhc-whb04b-6/pendant-types.h create mode 100644 src/hal/user_comps/xhc-whb04b-6/pendant.cc create mode 100644 src/hal/user_comps/xhc-whb04b-6/pendant.h create mode 100644 src/hal/user_comps/xhc-whb04b-6/usb.cc create mode 100644 src/hal/user_comps/xhc-whb04b-6/usb.h create mode 100644 src/hal/user_comps/xhc-whb04b-6/xhc-whb04b6.cc create mode 100644 src/hal/user_comps/xhc-whb04b-6/xhc-whb04b6.h diff --git a/configs/apps/xhc-whb04b-6/README.md b/configs/apps/xhc-whb04b-6/README.md new file mode 100644 index 0000000000..2d1b7b2dd6 --- /dev/null +++ b/configs/apps/xhc-whb04b-6/README.md @@ -0,0 +1,4 @@ +# Introduction + +This folder contains a complete configuration for the xhc-whb04b-6 jog dial component. +However, the provided files are to be seen rather as cheat-sheet than a full machinekit configuration. diff --git a/configs/apps/xhc-whb04b-6/xhc-whb04b-6-post-gui.hal b/configs/apps/xhc-whb04b-6/xhc-whb04b-6-post-gui.hal new file mode 100644 index 0000000000..c5d7ead56f --- /dev/null +++ b/configs/apps/xhc-whb04b-6/xhc-whb04b-6-post-gui.hal @@ -0,0 +1,6 @@ +# ###################################################################### +# WHB04B-6 jog dial configuration +# ###################################################################### + +net pdnt.machine.on axisui.notifications-clear + diff --git a/configs/apps/xhc-whb04b-6/xhc-whb04b-6.hal b/configs/apps/xhc-whb04b-6/xhc-whb04b-6.hal new file mode 100644 index 0000000000..0748a634fe --- /dev/null +++ b/configs/apps/xhc-whb04b-6/xhc-whb04b-6.hal @@ -0,0 +1,238 @@ +# ###################################################################### +# WHB04B-6 jog dial configuration +# ###################################################################### + +# BEGIN Note: spindle signals are ususally listed in the main .hal file +# +#net spindle.is-on motion.spindle-on +#net spindle.start halui.spindle.start +#net spindle.stop halui.spindle.stop +#net spindle.forward halui.spindle.forward +# +#net spindle.reverse halui.spindle.reverse +#net spindle.runs-forward motion.spindle-forward +#net spindle.runs-reverse motion.spindle-reverse +# +#net spindle.increase halui.spindle.increase +#net spindle.decrease halui.spindle.decrease +#net spindle.spindle-override.value halui.spindle-override.value +#net spindle.spindle-override.increase halui.spindle-override.increase +#net spindle.spindle-override.decrease halui.spindle-override.decrease +# +#net spindle.velocity.abs-rpm motion.spindle-speed-out-abs +# +# END Note + +# ###################################################################### +# Load components +# ###################################################################### +loadusr -W xhc-whb04b-6 -H [XHC_WHB04B_6_CONFIG]COMPONENT_ARGUMENTS + +loadrt ilowpass names=ilowpass.jog.0,ilowpass.jog.1,ilowpass.jog.2 +addf ilowpass.jog.0 servo-thread +addf ilowpass.jog.1 servo-thread +addf ilowpass.jog.2 servo-thread +setp ilowpass.jog.0.scale 100 +setp ilowpass.jog.1.scale 100 +setp ilowpass.jog.2.scale 100 +setp ilowpass.jog.0.gain 0.007 +setp ilowpass.jog.1.gain 0.007 +setp ilowpass.jog.2.gain 0.007 + +loadrt scale names=scale.axis.0,scale.axis.1,scale.axis.2 +addf scale.axis.0 servo-thread +addf scale.axis.1 servo-thread +addf scale.axis.2 servo-thread +setp scale.axis.0.gain 0.01 +setp scale.axis.1.gain 0.01 +setp scale.axis.2.gain 0.01 +setp scale.axis.0.offset 0 +setp scale.axis.1.offset 0 +setp scale.axis.2.offset 0 + +# ###################################################################### +# Signals configuration +# ###################################################################### + +# Connect emergency stop signals +net pdnt.machine.is-on halui.machine.is-on whb.halui.machine.is-on +net pdnt.machine.on whb.halui.machine.on halui.machine.on +net pdnt.machine.off whb.halui.machine.off halui.machine.off + +# Connect program related signals +net pdnt.program.is-idle whb.halui.program.is-idle halui.program.is-idle +net pdnt.program.is-paused whb.halui.program.is-paused halui.program.is-paused +net pdnt.program.is-running whb.halui.program.is-running halui.program.is-running +net pdnt.program.resume whb.halui.program.resume halui.program.resume +net pdnt.program.pause whb.halui.program.pause halui.program.pause +net pdnt.program.run whb.halui.program.run halui.program.run +net pdnt.program.stop whb.halui.program.stop halui.program.stop + +# Connect "selected axis" signals +net pdnt.joint.X.select whb.halui.joint.x.select halui.joint.0.select +net pdnt.joint.Y.select whb.halui.joint.y.select halui.joint.1.select +net pdnt.joint.Z.select whb.halui.joint.z.select halui.joint.2.select +#net pdnt.joint.A.select whb.halui.joint.a.select halui.joint.3.select +#net pdnt.joint.B.select whb.halui.joint.b.select halui.joint.4.select +#net pdnt.joint.C.select whb.halui.joint.c.select halui.joint.5.select + +# Connect jog signals for step and continuous mode +net pdnt.stepgen.00.maxvel hpg.stepgen.00.maxvel whb.stepgen.00.maxvel +net pdnt.stepgen.01.maxvel hpg.stepgen.01.maxvel whb.stepgen.01.maxvel +net pdnt.stepgen.02.maxvel hpg.stepgen.02.maxvel whb.stepgen.02.maxvel +#net pdnt.stepgen.03.maxvel hpg.stepgen.03.maxvel whb.stepgen.03.maxvel +#net pdnt.stepgen.04.maxvel hpg.stepgen.04.maxvel whb.stepgen.04.maxvel +#net pdnt.stepgen.05.maxvel hpg.stepgen.05.maxvel whb.stepgen.05.maxvel +net pdnt.stepgen.00.position-scale hpg.stepgen.00.position-scale whb.stepgen.00.position-scale +net pdnt.stepgen.01.position-scale hpg.stepgen.01.position-scale whb.stepgen.01.position-scale +net pdnt.stepgen.02.position-scale hpg.stepgen.02.position-scale whb.stepgen.02.position-scale +#net pdnt.stepgen.03.position-scale hpg.stepgen.03.position-scale whb.stepgen.03.position-scale +#net pdnt.stepgen.04.position-scale hpg.stepgen.04.position-scale whb.stepgen.04.position-scale +#net pdnt.stepgen.05.position-scale hpg.stepgen.05.position-scale whb.stepgen.05.position-scale + +net pdnt.axis.0.jog-scale whb.axis.0.jog-scale scale.axis.0.in +net pdnt.axis.1.jog-scale whb.axis.1.jog-scale scale.axis.1.in +net pdnt.axis.2.jog-scale whb.axis.2.jog-scale scale.axis.2.in + +net scale.axis.0.jog-scale scale.axis.0.out axis.0.jog-scale +net scale.axis.1.jog-scale scale.axis.1.out axis.1.jog-scale +net scale.axis.2.jog-scale scale.axis.2.out axis.2.jog-scale + +net pdnt.axis.0.jog-counts whb.axis.0.jog-counts ilowpass.jog.0.in +net pdnt.axis.1.jog-counts whb.axis.1.jog-counts ilowpass.jog.1.in +net pdnt.axis.2.jog-counts whb.axis.2.jog-counts ilowpass.jog.2.in +net pdnt.ilowpass.jog.0.jog-counts ilowpass.jog.0.out axis.0.jog-counts +net pdnt.ilowpass.jog.1.jog-counts ilowpass.jog.1.out axis.1.jog-counts +net pdnt.ilowpass.jog.2.jog-counts ilowpass.jog.2.out axis.2.jog-counts + +#net pdnt.axis.0.jog-counts whb.axis.0.jog-counts axis.0.jog-counts +#net pdnt.axis.1.jog-counts whb.axis.1.jog-counts axis.1.jog-counts +#net pdnt.axis.2.jog-counts whb.axis.2.jog-counts axis.2.jog-counts +#net pdnt.axis.3.jog-counts whb.axis.3.jog-counts axis.3.jog-counts +#net pdnt.axis.4.jog-counts whb.axis.4.jog-counts axis.4.jog-counts +#net pdnt.axis.5.jog-counts whb.axis.5.jog-counts axis.5.jog-counts +net pdnt.axis.0.jog-enable whb.axis.0.jog-enable axis.0.jog-enable +net pdnt.axis.1.jog-enable whb.axis.1.jog-enable axis.1.jog-enable +net pdnt.axis.2.jog-enable whb.axis.2.jog-enable axis.2.jog-enable +#net pdnt.axis.3.jog-enable whb.axis.3.jog-enable axis.3.jog-enable +#net pdnt.axis.4.jog-enable whb.axis.4.jog-enable axis.4.jog-enable +#net pdnt.axis.5.jog-enable whb.axis.5.jog-enable axis.5.jog-enable +#net pdnt.axis.0.jog-scale whb.axis.0.jog-scale axis.0.jog-scale +#net pdnt.axis.1.jog-scale whb.axis.1.jog-scale axis.1.jog-scale +#net pdnt.axis.2.jog-scale whb.axis.2.jog-scale axis.2.jog-scale +#net pdnt.axis.3.jog-scale whb.axis.3.jog-scale axis.3.jog-scale +#net pdnt.axis.4.jog-scale whb.axis.4.jog-scale axis.4.jog-scale +#net pdnt.axis.5.jog-scale whb.axis.5.jog-scale axis.5.jog-scale +net pdnt.axis.0.jog-vel-mode whb.axis.0.jog-vel-mode axis.0.jog-vel-mode +net pdnt.axis.1.jog-vel-mode whb.axis.1.jog-vel-mode axis.1.jog-vel-mode +net pdnt.axis.2.jog-vel-mode whb.axis.2.jog-vel-mode axis.2.jog-vel-mode +#net pdnt.axis.3.jog-vel-mode whb.axis.3.jog-vel-mode axis.3.jog-vel-mode +#net pdnt.axis.4.jog-vel-mode whb.axis.4.jog-vel-mode axis.4.jog-vel-mode +#net pdnt.axis.5.jog-vel-mode whb.axis.5.jog-vel-mode axis.5.jog-vel-mode + +# Connect macro buttons to mdi commands +#net pdnt.macro.11 whb.button.macro-11 halui.mdi-command-11 +#net pdnt.macro.12 whb.button.macro-12 halui.mdi-command-12 +#net pdnt.macro.13 whb.button.macro-13 halui.mdi-command-13 +#net pdnt.macro.1 whb.button.macro-1 halui.mdi-command-01 +#net pdnt.macro.2 whb.button.macro-2 halui.mdi-command-02 +#net pdnt.macro.3 whb.button.macro-3 +#net pdnt.macro.4 whb.button.macro-4 +#net pdnt.macro.5 whb.button.macro-5 halui.mdi-command-05 +net pdnt.home-all whb.button.macro-5 halui.home-all +#net pdnt.macro.6 whb.button.macro-6 halui.mdi-command-06 +#net pdnt.macro.7 whb.button.macro-7 halui.mdi-command-07 +#net pdnt.macro.8 whb.button.macro-8 halui.mdi-command-08 +#net pdnt.macro.9 whb.button.macro-9 halui.mdi-command-09 +#net pdnt.home-all whb.button.macro-10 halui.home-all +#net pdnt.macro.14 whb.button.macro-14 halui.mdi-command-14 +#net pdnt.macro.15 whb.button.macro-15 halui.mdi-command-15 +#net pdnt.macro.16 whb.button.macro-16 halui.mdi-command-16 + +# Connect reset, stop, start/pause/resume buttons to halui +# toggles whb.halui.estop.{activate, reset} which are +# already connected to halui.estop.{activate, reset} via whb.halui.estop.{activate, reset} +net pdnt.button.reset whb.button.reset +# already linked to halui.program.stop via whb.program.stop +net pdnt.button.stop whb.button.stop +# toggles whb.halui.program{run, pause, resume} which are +# already connected to halui.program.{run, pause, resume} via whb.halui.program.{run, pause, resume} +net pdnt.button.start-pause whb.button.start-pause + +# Connect special positions signals +net pdnt.button.m-home whb.button.m-home halui.mdi-command-01 +net pdnt.button.safe-z whb.button.safe-z halui.mdi-command-00 +net pdnt.button.w-home whb.button.w-home halui.mdi-command-05 +net pdnt.button.s-on-off whb.button.s-on-off + +# unused, just exposes pendant interna +net pdnt.button.fn whb.button.fn + +# probe command +net pdnt.button.probe-z whb.button.probe-z halui.mdi-command-02 + +# unused, just exposes pendant interna +net pdnt.button.mode-continuous whb.button.mode-continuous + +# unused, just exposes pendant interna +net pdnt.button.mode-step whb.button.mode-step + +# Connect spindle related signals +net spindle.is-on whb.halui.spindle.is-on +net spindle.stop whb.halui.spindle.stop +net spindle.forward whb.halui.spindle.forward +net spindle.reverse whb.halui.spindle.reverse +net pdnt.button.spindle-plus whb.button.spindle-plus +net pdnt.button.spindle-minus whb.button.spindle-minus +#net spindle.increase whb.halui.spindle.increase +#net spindle.decrease whb.halui.spindle.decrease +net spindle.increase whb.button.macro-3 +net spindle.decrease whb.button.macro-4 +# min/max override depends on [DISPLAY]MIN_SPINDLE_OVERRIDE and [DISPLAY]MAX_SPINDLE_OVERRIDE +net spindle.spindle-override.value whb.halui.spindle-override.value +net spindle.spindle-override.increase whb.halui.spindle-override.increase +net spindle.spindle-override.decrease whb.halui.spindle-override.decrease +net spindle.velocity.abs-rpm whb.motion.spindle-speed-abs + +# Connect machine mode related signals +net pdnt.halui.mode.auto whb.halui.mode.auto halui.mode.auto +net pdnt.halui.mode.joint whb.halui.mode.joint halui.mode.joint +net pdnt.halui.mode.manual whb.halui.mode.manual halui.mode.manual +net pdnt.halui.mode.mdi whb.halui.mode.mdi halui.mode.mdi +net pdnt.halui.mode.is-auto halui.mode.is-auto whb.halui.mode.is-auto +net pdnt.halui.mode.is-joint halui.mode.is-joint whb.halui.mode.is-joint +net pdnt.halui.mode.is-manual halui.mode.is-manual whb.halui.mode.is-manual +net pdnt.halui.mode.is-mdi halui.mode.is-mdi whb.halui.mode.is-mdi + +# Connect feed rate related signals +net pdnt.halui.feed-override.scale whb.halui.feed-override.scale halui.feed-override.scale +net pdnt.halui.feed-override.direct-val whb.halui.feed-override.direct-val halui.feed-override.direct-value +net pdnt.halui.feed-override.counts whb.halui.feed-override.counts halui.feed-override.counts +#net pdnt.halui.feed-override.count-enable whb.halui.feed-override.count-enable halui.feed-override.count-enable +#net pdnt.halui.feed-override.value halui.feed-override.value whb.halui.feed-override.value +setp whb.halui.feed-override.min-value [DISPLAY]MIN_FEED_OVERRIDE +setp whb.halui.feed-override.max-value [DISPLAY]MAX_FEED_OVERRIDE + +# min/max override depends on [DISPLAY]MIN_FEED_OVERRIDE and [DISPLAY]MAX_FEED_OVERRIDE +net pdnt.halui.feed-override.increase whb.halui.feed-override.increase halui.feed-override.increase +net pdnt.halui.feed-override.decrease whb.halui.feed-override.decrease halui.feed-override.decrease +net pdnt.button.feed-plus whb.button.feed-plus +net pdnt.button.feed-minus whb.button.feed-minus + +# For printing the speed F:xxxx on display, the motion.current-vel velocity is used. +net pdnt.motion.current-vel motion.current-vel whb.motion.current-vel + +# Connect axis position related signals +net pdnt.halui.axis.0.pos-feedback halui.axis.0.pos-feedback whb.halui.axis.0.pos-feedback +net pdnt.halui.axis.1.pos-feedback halui.axis.1.pos-feedback whb.halui.axis.1.pos-feedback +net pdnt.halui.axis.2.pos-feedback halui.axis.2.pos-feedback whb.halui.axis.2.pos-feedback +net pdnt.halui.axis.3.pos-feedback halui.axis.3.pos-feedback whb.halui.axis.3.pos-feedback +net pdnt.halui.axis.4.pos-feedback halui.axis.4.pos-feedback whb.halui.axis.4.pos-feedback +net pdnt.halui.axis.5.pos-feedback halui.axis.5.pos-feedback whb.halui.axis.5.pos-feedback +net pdnt.halui.axis.0.pos-relative halui.axis.0.pos-relative whb.halui.axis.0.pos-relative +net pdnt.halui.axis.1.pos-relative halui.axis.1.pos-relative whb.halui.axis.1.pos-relative +net pdnt.halui.axis.2.pos-relative halui.axis.2.pos-relative whb.halui.axis.2.pos-relative +net pdnt.halui.axis.3.pos-relative halui.axis.3.pos-relative whb.halui.axis.3.pos-relative +net pdnt.halui.axis.4.pos-relative halui.axis.4.pos-relative whb.halui.axis.4.pos-relative +net pdnt.halui.axis.5.pos-relative halui.axis.5.pos-relative whb.halui.axis.5.pos-relative + diff --git a/src/Makefile b/src/Makefile index 9f9bc472c4..f53a3d969c 100755 --- a/src/Makefile +++ b/src/Makefile @@ -228,6 +228,7 @@ SUBDIRS := \ hal/user_comps/vfs11_vfd \ hal/user_comps/vfdb_vfd \ hal/user_comps/huanyang-vfd \ + hal/user_comps/xhc-whb04b-6 \ hal/classicladder \ hal/utils \ hal \ diff --git a/src/hal/user_comps/Submakefile b/src/hal/user_comps/Submakefile index 7114f1883d..c04574cbd6 100644 --- a/src/hal/user_comps/Submakefile +++ b/src/hal/user_comps/Submakefile @@ -56,6 +56,7 @@ TARGETS += ../bin/shuttlexpress endif ifdef HAVE_LIBUSB10 + XHC_HB04_SRC = hal/user_comps/xhc-hb04.cc USERSRCS += $(XHC_HB04_SRC) $(call TOOBJSDEPS, $(XHC_HB04_SRC)) : EXTRAFLAGS += $(LIBUSB10_CFLAGS) @@ -63,6 +64,7 @@ $(call TOOBJSDEPS, $(XHC_HB04_SRC)) : EXTRAFLAGS += $(LIBUSB10_CFLAGS) $(ECHO) Linking $(notdir $@) $(Q)$(CC) $(LDFLAGS) -o $@ $^ -lstdc++ $(LIBUSB10_LIBS) TARGETS += ../bin/xhc-hb04 + endif # HAVE_LIBUSB10 ../include/%.h: ./hal/user_comps/%.h diff --git a/src/hal/user_comps/xhc-whb04b-6/README.md b/src/hal/user_comps/xhc-whb04b-6/README.md new file mode 100644 index 0000000000..4324b6b8c8 --- /dev/null +++ b/src/hal/user_comps/xhc-whb04b-6/README.md @@ -0,0 +1,411 @@ +# XHC WHB04B-6 Pendant Component - Developer Information + +* [Introduction](#introduction) +* [Pendant layout](#pendant-layout) + * [Pendant button naming](#pendant-button-naming) + * [An extensive list of HAL pins](#an-extensive-list-of-hal-pins) + * [Even more details](#even-more-details) +* [Protocol description](#protocol-description) + * [Findings](#findings) + * [Received data structure](#received-data-structure) + * [Checksum investigation](#checksum-investigation) + * [Transmission data structure](#transmission-data-structure) + * [Display examples](#display-examples) + * [What we did so far](#what-we-did-so-far) + * [What we didn't](#what-we-didnt) + * [Issues](#issues) + * [Key codes in detail](#key-codes-in-detail) +* [Examples](#examples) + * [USB and key press events](#usb-and-key-press-events) + * [HAL pins](#hal-pins) + * [Run in HAL mode (halrun)](#run-in-hal-mode-halrun) + +## Introduction + +This component provides an interface to the WHB04B-6 pendant. In productive mode the interface is placed in shared memory, where other components can interact with. The component may be alternatively started in simulation mode, which does not require shared memory at all, but allows a user to inspect the device connectivity. + +![Component started in HAL mode.](http://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/rubienr/machinekit/feature-xhc-whb04b-6/src/hal/user_comps/xhc-whb04b-6/components-diagram-hal-mode.txt) + +![Component started in simulation mode.](http://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/rubienr/machinekit/feature-xhc-whb04b-6/src/hal/user_comps/xhc-whb04b-6/components-diagram-simulation-mode.txt) + +## Pendant layout + +The device provides 16 buttons. One button - "Fn" - is used as key +modifier. Any button pressed in combination with the modifier button +generates an alternative event - Macro-n (with n being the macro +number). This holds for any button, even if Macro-n is not written +on the button. We have extended the macros beyond Macro-10 until +Macro-16. The keypad layout is as follows: + +| | | | | | +|:---------------------------:|:----------------:|:----------------------:|:------------------:|:--------------------------:| +| RESET (Macro-11) | Stop (Macro-12) | Start/Pause (Macro-13) | | <On/Off Sw.> | +| Feed + (Macro-1) | Feed- (Macro-2) | Spindle+ (Macro-3) | Spindle- (Macro-4) | | +| M-HOME (Macro-5) | Safe-Z (Macro-6) | W-HOME (Macro-7) | S-ON/OFF (Macro-8) | Fn | +| | | Probe-Z (Macro-9) | | | +| <Axis Rotary Button> | | Macro-10 (Macro-14) | | <Feed Rotary Button> | +| MPG (Macro-15) | | | | Step (Macro-16) | +| | | <Jog Dial> | | | + +* Caution: The buttons' naming and user manual are somewhat unluckily translated. The **MPG** button puts the device into **continuous**, whereas the **Step/Continuous** button into **step mode**. Continuous mode means n jog dial events are translated to "move joint n times with speed x" whereas step mode to "move joint n steps" with a predefined speed. + +### Pendant button naming + +The HAL pin names are derived from text written on the respective button. For example: + +``` +$ xhc-whb04b-6 -p +[...] //! < skipped several lines +hal bit out xhc-whb04b-6.out.button.reset +hal bit out xhc-whb04b-6.out.button.macro-11 +hal bit out xhc-whb04b-6.out.button.stop +hal bit out xhc-whb04b-6.out.button.macro-12 +hal bit out xhc-whb04b-6.out.button.start-pause +hal bit out xhc-whb04b-6.out.button.macro-13 +hal bit out xhc-whb04b-6.out.button.feed-plus +hal bit out xhc-whb04b-6.out.button.macro-1 +hal bit out xhc-whb04b-6.out.button.feed-minus +hal bit out xhc-whb04b-6.out.button.macro-2 +hal bit out xhc-whb04b-6.out.button.spindle-plus +hal bit out xhc-whb04b-6.out.button.macro-3 +hal bit out xhc-whb04b-6.out.button.spindle-minus +hal bit out xhc-whb04b-6.out.button.macro-4 +hal bit out xhc-whb04b-6.out.button.m-home +hal bit out xhc-whb04b-6.out.button.macro-5 +hal bit out xhc-whb04b-6.out.button.safe-z +hal bit out xhc-whb04b-6.out.button.macro-6 +hal bit out xhc-whb04b-6.out.button.w-home +hal bit out xhc-whb04b-6.out.button.macro-7 +hal bit out xhc-whb04b-6.out.button.s-on-off +hal bit out xhc-whb04b-6.out.button.macro-8 +hal bit out xhc-whb04b-6.out.button.fn +hal bit out xhc-whb04b-6.out.button.probe-z +hal bit out xhc-whb04b-6.out.button.macro-9 +hal bit out xhc-whb04b-6.out.button.macro-10 +hal bit out xhc-whb04b-6.out.button.macro-14 +hal bit out xhc-whb04b-6.out.button.mode-continuous +hal bit out xhc-whb04b-6.out.button.macro-15 +hal bit out xhc-whb04b-6.out.button.mode-step +hal bit out xhc-whb04b-6.out.button.macro-16 +[...] //! < skipped several lines +``` + +#### An extensive list of HAL pins + +``` +xhc-whb04b-6 -p +``` +Also refer to section [HAL pins](#hal-pins). + +#### Even more details + +``` +$ ./xhc-whb04b-6 -h +xhc-whb04b-6 version 0.1 Sep 16 2017 14:41:32 + +SYNOPSIS + xhc-whb04b-6 [-h] | [-H] [OPTIONS] + +NAME + xhc-whb04b-6 - jog dial HAL component for the XHC-WHB04B-6 device + +DESCRIPTION + xhc-whb04b-6 is a HAL component that receives events from the XHC-WHB04B-6 device and exposes them to HAL via HAL pins. + +OPTIONS + -h + Prints the synopsis and the most commonly used commands. + + -H + run xhc-whb04b-6 in HAL-mode instead of interactive mode. When in HAL mode commands from device will be exposed to HAL's shred memory. Interactive mode is useful for testing device connectivity and debugging. + + -t + Wait with timeout for USB device then proceed, exit otherwise. Without -t the timeout is implicitly infinite. + + -u, -U + Show received data from device. With -U received and transmitted data will be printed. Output is prefixed with "usb". + + -p + Show HAL pins and HAL related messages. Output is prefixed with "hal". + + -e + Show captured events such as button pressed/released, jog dial, axis rotary button, and feed rotary button event. Output is prefixed with "event".and in case. + + -a + Enable all logging facilities without explicitly specifying each. + + -c + Enable checksum output which is necessary for debugging the checksum generator function. Do not rely on this feature since it will be removed once the generator is implemented. + + -n + Force being silent and not printing any output except of errors. This will also inhibit messages prefixed with "init". + + -s + Specifies the number of pulses that corresponds to a move of one machine unit in [mm] or [inch]. Default is 80. + + -v + The maximum velocity for any axis in machine units per second (same unit as -s). Default is 800. + +EXAMPLES +xhc-whb04b-6 -ue + Prints incoming USB data transfer and generated key pressed/released events. + +xhc-whb04b-6 -p + Prints hal pin names and events distributed to HAL memory. + +xhc-whb04b-6 -Ha + Start in HAL mode and avoid output, except of errors. + +AUTHORS + This component was started by Raoul Rubien (github.com/rubienr) based on predecessor device's component xhc-hb04.cc. https://github.com/machinekit/machinekit/graphs/contributors gives you a more complete list of contributors. + ``` + +## Protocol description +Since the manufacturer's ([Chengdu Xinhecheng Technology Co.,Ltd.](http://cdxhctech.com/)) developers refuse to release any protocol information, we had to reverse engineer the protocol. +After lots of begging we received at least some sort of source code for PHB04 - it was hard to believe that this was serious productive code in terms of programming capability. +However here we list findings and thoughts on the USB communication protocol. + +**Any discussion regarding this topic is welcome!** + +### Findings + +#### Received data structure + +| Byte# | Width | Data | Value | Clarification Needed | +|:------|:------|:----------------------------|:-------------------------|:-:| +| 0x00 | [0:7] | report ID | constant 0x04 | | +| 0x01 | [0:7] | random | | | +| 0x02 | [0:7] | button 1 key code | 0x00-0x10 | | +| 0x03 | [0:7] | button 2 key code | 0x00-0x10 | | +| 0x04 | [0:7] | feed rotary button key code | 0x0d-0x10, 0x1a-0x1c | | +| 0x05 | [0:7] | axis rotary button key code, **if axis in state OFF, display cannot be updated** | 0x11-0x16, 0x06 | * | +| 0x06 | [0:7] | jog dial delta | int8_t | | +| 0x07 | [0:7] | checksum | | * | + +##### Checksum investigation + +* On jog dial, +* on rotary button or +* on button released event: +``` +checksum == random & seed +``` + +* On button pressed event: +``` +//! Works if seed is 0xfe, 0xff, otherwise not reliable. Some equation part must be missing. +//! Not sure whether crc or hand-crafted algorithm is applied. +checksum == random - (keyCode ^ (~seed & random)) +``` + +#### Transmission data structure +``` +USB vendor ID = 0x10ce +USB product ID = 0xeb93 +``` + +Data transmitted is packed as 7 bytes plus a constant leading byte 0x06 +which is the report ID. The data **exclusive report ID** reads as follows: + +| Byte# | Width | Data | Value | Clarification Needed | +|:------|:--------|:---------------------------------------------------------------------|:--------------------|:-:| +| 0x00 | [0:15] | header, **unclear if different headers (commands) can be sent** | constant 0xfdfe | * | +| 0x02 | [0:7] | seed | | * | +| 0x03 | [0:1] | display indicator flags: step mode | 0x00 "CONT xx%", 0x01 "STEP: xx", 0x02 "MPG xx%", 0x03 "xxx%", 0x04 unknown. See [A1, A2](#display-examples): If set step mode, continuous mode otherwise. Caution: Step mode is interpreted even if rotary button has an invalid step position (i.e. 100%). A misleading display information is shown as "STEP: 1.0" and **we consider this as FW bug**. | | +| 0x03 | [2:5] | display indicator flags: **unknown** | | [\*](#display-examples) | +| 0x03 | [6:6] | display indicator flags: reset | See [C2](#display-examples). On reset the asterisk indicating selected X-axis is rendered erroneous. Also flickering of the same area can be observed. **We consider this as FW bug.**| | +| 0x03 | [7:7] | display indicator flags: machine coordinate | See [C3, D1](#display-examples). If set workpiece coordinates, machine coordinates otherwise| | +| 0x04 | [0:15] | axis coordinate on display line 1: integer value | | | +| 0x06 | [0:14] | axis coordinate on display line 1: fraction value | 15bit width but device cuts off to 4 digits, **we consider this as FW bug** | | +| 0x06 | [15:15] | axis coordinate on display line 1: sign | | | +| 0x08 | [0:15] | axis coordinate on display line 2: integer value | | | +| 0x10 | [0:14] | axis coordinate on display line 2: fraction value | **same as axis 1** | | +| 0x10 | [15:15] | axis coordinate on display line 2: sign | | | +| 0x12 | [0:15] | axis coordinate on display line 3: integer value | | | +| 0x14 | [0:14] | axis coordinate on display line 3: fraction value | | | +| 0x14 | [15:15] | axis coordinate on display line 3: sign | **same as axis 1** | | +| 0x16 | [0:15] | feed rate | see [B2](#display-examples)| | +| 0x18 | [0:15] | spindle speed | see [B3, C1](#display-examples)| | +| 0x20 | [0:x] | unclear if the device interprets subsequent bytes | | * | +| 0xn | [0:x] | the **maximum length** is also **unclear** | | * | + +##### Display examples +![LCD display examples.](http://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/rubienr/machinekit/feature-xhc-whb04b-6/src/hal/user_comps/xhc-whb04b-6/display-layout-diagram.txt) + +### What we did so far +* Searched the web and found not 100% related but interesting information on this [site](http://forum.planet-cnc.com/viewtopic.php?f=12&t=1125), and +* this [site](http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Using_A_XHC-HB04_Wireless_MPG_Pendant). +* Politely contacted the manufacturer and requested an interface control document or equivalent information (without success). + +### What we didn't +* Did not install the driver and Mach3 on Windows guest VM and sniff the USB protocol using SOTA tools such as + * Wireshark + * usbmon + +**Any help in that regard is appreciated.** + +### Issues +* if de device is powered on it does not (always) send data on its own to disclose the current rotary buttons' state + * does send most likely if the rotary buttons' state has changed during power-off, but not always +* if the axis rotary button is in "OFF" state, the device does not refresh coordinates on display + +### Key codes in detail + +|Button Name | Key Code | Button Text | Button Alternative Text | +|:------------------------|:---------|:------------|:------------------------| +|reset | 0x01 | RESET | *Macro-11* | +|stop | 0x02 | STOP | *Macro-12* | +|start | 0x03 | Start | Pause | +|feed_plus | 0x04 | Feed+ | Macro-1 | +|feed_minus | 0x05 | Feed- | Macro-2 | +|spindle_plus | 0x06 | Spindle+ | Macro-3 | +|spindle_minus | 0x07 | Spindle- | Macro-4 | +|machine_home | 0x08 | M-HOME | Macro-5 | +|safe_z | 0x09 | Safe-Z | Macro-6 | +|workpiece_home | 0x0a | W-HOME | Macro-7 | +|spindle_on_off | 0x0b | S-ON/OFF | Macro-8 | +|function | 0x0c | Fn | Fn | +|probe_z | 0x0d | Probe-Z | Macro-9 | +|macro10 | 0x10 | Macro-10 | *Macro-13* | +|manual_pulse_generator | 0x0e | MPG | *Macro-14* | +|step_continuous | 0x0f | STEP | Continuous | +|<no button pressed>| 0x00 | <NA> | <NA> | + +| Feed Rotary Button Name | Key Code | Button Text | Button Alternative Text | +|:----------------------------|:---------|:------------|:------------------------| +| speed_0_001 | 0x0d | 0.001 | 2% | +| speed_0_01 | 0x0e | 0.01 | 5% | +| speed_0_1 | 0x0f | 0.1 | 10% | +| speed_1 | 0x10 | 1 | 30% | +| percent_60 | 0x1a | <NA> | 60% | +| percent_100 | 0x1b | | 100% | +| lead | 0x1c | Lead | <NA> | +| <no button pressed> | 0x00 | <NA> | <NA> | + +| Axis Rotary Button Name | Key Code | Button Text | Button Alternative Text | +|:----------------------------|:---------|:------------|:------------------------| +| off | 0x06 | OFF | <NA> | +| x | 0x11 | X | <NA> | +| y | 0x12 | Y | <NA> | +| z | 0x13 | Z | <NA> | +| a | 0x14 | A | <NA> | +| b | 0x15 | B | <NA> | +| c | 0x16 | C | <NA> | +| <no button pressed> | 0x00 | <NA> | <NA> | + +## Examples + +### USB and key press events +Start and show incoming USB data as bytes and interpreted, and show detected events such as: +* on key released/pressed +* on rotary button axis in-/active +* on rotary button feed in-/active +* on jog dial event +* on data interpreted + +``` +$ ../bin/xhc-whb04b-6 -ue +init setting machine configuration to scale=80 max_velocity=800 +init starting in simulation mode +init usb context ... ok +init not waiting for device XHC-WHB04B-6 vendorId=0x10ce productId=0xeb93, will continue in 0s .... ok +init XHC-WHB04B-6 device found +init detaching active kernel driver ... already detached +init claiming interface ... ok +init enabling reception ... ok +in 0x04 ba 00 00 0e 11 00 ba delta 14 => | 04 | ba | | | 0.01( 5%) | X( ) | 0 | ba +event axis inactive ( ) +event axis active X ( ) +event feed inactive ( ) +event feed active 0.01( 5%) +event data interpreted, display data ready +in 0x04 d3 00 00 0e 12 00 d2 delta 14 => | 04 | d3 | | | 0.01( 5%) | Y( ) | 0 | d2 +event axis inactive X ( ) +event axis active Y ( ) +event data interpreted, display data ready +in 0x04 82 01 00 0e 12 00 81 delta 14 => | 04 | 82 | reset | | 0.01( 5%) | Y( ) | 0 | 81 + reset +event pressed event data interpreted, display data ready +in 0x04 bd 00 00 0e 12 00 bc delta 14 => | 04 | bd | | | 0.01( 5%) | Y( ) | 0 | bc +event released reset +event data interpreted, display data ready +in 0x04 9d 00 00 0e 12 01 9c delta 14 => | 04 | 9d | | | 0.01( 5%) | Y( ) | 1 | 9c +event jog dial 1 +event data interpreted, display data ready +in 0x04 de 00 00 0e 12 00 de delta 14 => | 04 | de | | | 0.01( 5%) | Y( ) | 0 | de +event data interpreted, display data ready +^Ctermination requested upon signal number 2 ... +connection lost, cleaning up +``` + +### HAL pins + +Print HAL pins and HAL related status messages. +Hal pins' data types and direction are printed in the very first columns. +For readability reasons all provided HAL pin names contain the pin direction in their name. +Furthermore pin names also explain where a respective pin should be connected to, i.e.: +* the output pin `xhc-whb04b-6.out.jog.counts-neg` should be connected to `jog.counts-neg` input pin, whereas +* the input pin `xhc-whb04b-6.in.halui.max-velocity.value` should be connected to `halui.max-velocity.value` output pin. + +``` +$ ../bin/xhc-whb04b-6 -p +init setting machine configuration to scale=80 max_velocity=800 +init starting in simulation mode +hal initialize simulated HAL memory ... ok +hal bit out xhc-whb04b-6.out.button.reset +hal bit out xhc-whb04b-6.out.button.macro-11 +hal bit out xhc-whb04b-6.out.button.stop +hal bit out xhc-whb04b-6.out.button.macro-12 +hal bit out xhc-whb04b-6.out.button.start-pause +hal bit out xhc-whb04b-6.out.button.macro-13 +hal bit out xhc-whb04b-6.out.button.feed-plus +hal bit out xhc-whb04b-6.out.button.macro-1 +[...] //! < skipped several lines +hal bit out xhc-whb04b-6.out.halui.jog.c.speed-minus +hal s32 out xhc-whb04b-6.out.jog.counts +hal s32 out xhc-whb04b-6.out.jog.counts-neg +hal float out xhc-whb04b-6.out.jog.velocity +hal float in xhc-whb04b-6.in.halui.max-velocity.value +hal float out xhc-whb04b-6.out.jog.increment +hal bit out xhc-whb04b-6.out.halui.home-all +init usb context ... ok +init not waiting for device XHC-WHB04B-6 vendorId=0x10ce productId=0xeb93, will continue in 0s .... ok +init XHC-WHB04B-6 device found +init detaching active kernel driver ... already detached +init claiming interface ... ok +init enabling reception ... ok +^Ctermination requested upon signal number 2 ... +connection lost, cleaning up + +``` + +### Run in HAL mode (halrun) +``` +$ halrun +msgd:0 stopped +rtapi:0 stopped +halcmd: loadusr ../bin/xhc-whb04b-6 -Hup +halcmd: init setting machine configuration to scale=80 max_velocity=800 +hal initialize HAL component in HAL mode xhc-whb04b-6 ... ok +hal initialize shared HAL memory for component id 80 ... ok +hal bit out xhc-whb04b-6.out.button.reset +[...] //! < skipped several lines +init usb context ... ok +init not waiting for device XHC-WHB04B-6 vendorId=0x10ce productId=0xeb93, will continue in 0s .... ok +init XHC-WHB04B-6 device found +init detaching active kernel driver ... already detached +init claiming interface ... ok +init enabling reception ... ok +in 0x04 47 03 00 10 12 00 45 delta 16 => | 04 | 47 | start-pause | | 1( 30%) | Y( ) | 0 | 45 +hal start/stop enabled (pin # 4) +hal OFF no axis active +hal Y axis active +hal step mode is continuous +hal step size 12 +in 0x04 cb 00 00 10 12 00 ca delta 16 => | 04 | cb | | | 1( 30%) | Y( ) | 0 | ca +hal start/stop disabled (pin # 4) +^Ctermination requested upon signal number 2 ... +connection lost, cleaning up + +halcmd: +``` diff --git a/src/hal/user_comps/xhc-whb04b-6/Submakefile b/src/hal/user_comps/xhc-whb04b-6/Submakefile new file mode 100644 index 0000000000..83768e8860 --- /dev/null +++ b/src/hal/user_comps/xhc-whb04b-6/Submakefile @@ -0,0 +1,44 @@ +ifdef HAVE_LIBUSB10 + +XHC_WHB04B6_LIB_DEPENDENCIES = ../lib/liblinuxcnchal.so.0 ../lib/liblinuxcncini.so.0 ../lib/librtapi_math.so.0 ../lib/libmtalk.so ../lib/libmachinetalk-pb2++.so +XHC_WHB04B6_SRC = hal/user_comps/xhc-whb04b-6/hal.cc \ + hal/user_comps/xhc-whb04b-6/usb.cc \ + hal/user_comps/xhc-whb04b-6/pendant-types.cc \ + hal/user_comps/xhc-whb04b-6/pendant.cc \ + hal/user_comps/xhc-whb04b-6/xhc-whb04b6.cc \ + hal/user_comps/xhc-whb04b-6/main.cc + +XHC_WHB04B6_DEBUG = -g -funwind-tables +XHC_WHB04B6_CFLAGS += $(LIBUSB10_CFLAGS) $(XHC_WHB04B6_DEBUG) -Wall -pedantic +XHC_WHB04B6_LIBS = -lstdc++ $(LIBUSB10_LIBS) $(PROTOBUF_LIBS) + +$(call TOOBJSDEPS, $(XHC_WHB04B6_SRC)) : EXTRAFLAGS += $(XHC_WHB04B6_CFLAGS) + +xhc-whb04b6.o xhc-whb04b6.d : xhc-whb04b6.c xhc-whb04b6.h $(XHC_WHB04B6_LIB_DEPENDENCIES) + $(ECHO) Linking $(notdir $@) + $(Q)$(CC) $(LDFLAGS) $(XHC_WHB04B6_LIBS) -o $@ $^ + +pendant-types.o pendant-types.d : pendant-types.c pendant-types.h $(XHC_WHB04B6_LIB_DEPENDENCIES) + $(ECHO) Linking $(notdir $@) + $(Q)$(CC) $(LDFLAGS) $(XHC_WHB04B6_LIBS) -o $@ $^ + +pendant.o pendant.d : pendant.c pendant.h $(XHC_WHB04B6_LIB_DEPENDENCIES) + $(ECHO) Linking $(notdir $@) + $(Q)$(CC) $(LDFLAGS) $(XHC_WHB04B6_LIBS) -o $@ $^ + +hal.o hal.d : hal.c hal.h $(XHC_WHB04B6_LIB_DEPENDENCIES) + $(ECHO) Linking $(notdir $@) + $(Q)$(CC) $(LDFLAGS) $(XHC_WHB04B6_LIBS) -o $@ $^ + +usb.o usb.d : usb.c usb.h $(XHC_WHB04B6_LIB_DEPENDENCIES) + $(ECHO) Linking $(notdir $@) + $(Q)$(CC) $(LDFLAGS) $(XHC_WHB04B6_LIBS) -o $@ $^ + +USERSRCS += $(XHC_WHB04B6_SRC) +../bin/xhc-whb04b-6 xhc-whb04b-6.d : $(call TOOBJS, $(XHC_WHB04B6_SRC)) $(XHC_WHB04B6_LIB_DEPENDENCIES) + $(ECHO) Linking $(notdir $@) + $(Q)$(CC) $(LDFLAGS) $(XHC_WHB04B6_LIBS) -o $@ $^ + +TARGETS += ../bin/xhc-whb04b-6 + +endif # HAVE_LIBUSB10 diff --git a/src/hal/user_comps/xhc-whb04b-6/buttons-layout-diagram.txt b/src/hal/user_comps/xhc-whb04b-6/buttons-layout-diagram.txt new file mode 100644 index 0000000000..94e1203cf1 --- /dev/null +++ b/src/hal/user_comps/xhc-whb04b-6/buttons-layout-diagram.txt @@ -0,0 +1,15 @@ +@startuml +@startsalt +{+ +reset | stop | start| . | <&power-standby> +feed+ | feed- | Spindle+ | spindle- | . +m-home | safe-z | w-home | s-on/off | fn +. | . | probe-z | . | . +. | . | macro10 | . | . +. | <&reload> axis | . | <&reload> speed | . +MPG | . | . | . |step +. | . | . | . | . +. | <&reload> hand wheel| * | . +} +@endsalt +@enduml diff --git a/src/hal/user_comps/xhc-whb04b-6/components-diagram-hal-mode.txt b/src/hal/user_comps/xhc-whb04b-6/components-diagram-hal-mode.txt new file mode 100644 index 0000000000..14c21c8e0b --- /dev/null +++ b/src/hal/user_comps/xhc-whb04b-6/components-diagram-hal-mode.txt @@ -0,0 +1,26 @@ +@startuml +agent WHB04B_6 + +frame HAL_Components { + component ComponentN + component Component2 + component Component1 + component WhbComponent + + cloud SHM { + interface inputs + interface outputs + } + + WhbComponent <-- inputs : r + WhbComponent --> outputs : w + + ComponentN <--> SHM : r/w + Component2 <--> SHM : r/w + Component1 <--> SHM : r/w + WHB04B_6 <-->WhbComponent: USB i/o +} + +caption Fig1: Components diagram in HAL mode usecase. + +@enduml diff --git a/src/hal/user_comps/xhc-whb04b-6/components-diagram-simulation-mode.txt b/src/hal/user_comps/xhc-whb04b-6/components-diagram-simulation-mode.txt new file mode 100644 index 0000000000..a3987d64d4 --- /dev/null +++ b/src/hal/user_comps/xhc-whb04b-6/components-diagram-simulation-mode.txt @@ -0,0 +1,22 @@ +@startuml + +agent WHB04B_6 + +frame Whb_Component { + component WhbComponent + + + interface inputs + interface outputs + + + WhbComponent <-- inputs : r + WhbComponent --> outputs : w + + + WHB04B_6 <-->WhbComponent: USB i/o +} + +caption Fig2: Components diagram in simulation mode usecase. + +@enduml diff --git a/src/hal/user_comps/xhc-whb04b-6/display-layout-diagram.txt b/src/hal/user_comps/xhc-whb04b-6/display-layout-diagram.txt new file mode 100644 index 0000000000..c3337bdb71 --- /dev/null +++ b/src/hal/user_comps/xhc-whb04b-6/display-layout-diagram.txt @@ -0,0 +1,79 @@ +@startuml +@startsalt + +{# +| . | 1 | 2 | 3 +| A | { + .|. | <&signal>| <&battery-empty> <&media-stop>| STP: 1.0 + . | <&star>|X:|+1234|.4561 + . |.|Y:|-1470|.9632 + . |. |Z:|+0|.0000 |. +} | +{ + .|. | <&signal>| <&battery-empty> <&media-stop>| CONT 30% + . | <&star>|X:|+1234|.4561 + . |.|Y:|-1470|.9632 + . |. |Z:|+0|.0000 |. +} | +{ + .|. | <&signal>| <&battery-empty> <&media-stop>| CON:30% + . | <&star>|X:|+1234|.4561 + . |.|Y:|-1470|.9632 + . |. |Z:|+0|.0000 |. +} + +| B | +{ + .|. | <&signal>| <&battery-empty> <&media-stop>| MPG 30% + . | <&star>|X:|+1234|.4561 + . |.|Y:|-1470|.9632 + . |. |Z:|+0|.0000 |.|. +} | +{ + .|. | <&signal>| <&battery-empty> <&media-stop>| F:120 + . | <&star>|X:|+1234|.4561 + . |.|Y:|-1470|.9632 + . |. |Z:|+0|.0000 |.|.|.|.|.|. +} | +{ + .|. | <&signal>| <&battery-empty> <&media-stop>| S:1200 + . | <&star>|X:|+1234|.4561 + . |.|Y:|-1470|.9632 + . |. |Z:|+0|.0000 |.|.|.|. +} + +| C | +{ + .|. | <&signal>| <&battery-empty> <&media-stop>| S:1200 + . | <&star>|X:|+1234|.4561 + . |.|Y:|-1470|.9632 + . |. |Z:|+0|.0000 |.|.|.|. +} | +{ + .|. | <&signal>| <&battery-empty> <&media-stop>| RESET + . | <&star>|X:|+1234|.4561 + . |.|Y:|-1470|.9632 + . |. |Z:|+0|.0000 |.|.|.|.|. +} | +{ + .|. | <&signal>| <&battery-empty> <&media-stop>| CONT 30% + . | <&star>|X1:|+1234|.4561 + . |.|Y1:|-1470|.9632 + . |. |Z1:|+0|.0000 +} + +| D | +{ + .|. | <&signal>| <&battery-empty> <&media-stop>| CONT 30% + . | . |A1:|+1234|.4561 + . |.|B1:|-1470|.9632 + . |<&star> |C1:|+0|.0000 +} { +<&signal> ... signal strength | X,Y-C ... machine coord. +<&star> ... selected axis | X1,Y1-C1 ... workpiece coord. +<&battery-empty> ... battery level +<&media-stop> ... tx indicator +} |* | +} +@endsalt +@enduml diff --git a/src/hal/user_comps/xhc-whb04b-6/example-configuration.md b/src/hal/user_comps/xhc-whb04b-6/example-configuration.md new file mode 100755 index 0000000000..a1d0babbcc --- /dev/null +++ b/src/hal/user_comps/xhc-whb04b-6/example-configuration.md @@ -0,0 +1,164 @@ + +## INI Example + +Define section XHC_WHB04B_6_CONFIG section HAL: + +``` +[XHC_WHB04B_6_CONFIG] +# -a to enable debug output +#COMPONENT_ARGUMENTS = -a +# normal operation mode +COMPONENT_ARGUMENTS = + +[HAL] +HALFILE = .hal +HALFILE = xhc-whb04b-6.hal +... +``` + +## Hal File xhc_whb04b_6.hal Example + +``` +# load the user space component +loadusr -W xhc-whb04b-6 -H [XHC_WHB04B_6_CONFIG]COMPONENT_ARGUMENTS + +# Connect emergency stop signals +net pdnt.machine.is-on halui.machine.is-on whb.halui.machine.is-on +net pdnt.machine.on whb.halui.machine.on halui.machine.on +net pdnt.machine.off whb.halui.machine.off halui.machine.off + +# Connect program related signals +net pdnt.program.is-idle whb.halui.program.is-idle halui.program.is-idle +net pdnt.program.is-paused whb.halui.program.is-paused halui.program.is-paused +net pdnt.program.is-running whb.halui.program.is-running halui.program.is-running +net pdnt.program.resume whb.halui.program.resume halui.program.resume +net pdnt.program.pause whb.halui.program.pause halui.program.pause +net pdnt.program.run whb.halui.program.run halui.program.run +net pdnt.program.stop whb.halui.program.stop halui.program.stop + +# Connect "selected axis" signals +net pdnt.joint.X.select whb.halui.joint.x.select halui.joint.0.select +net pdnt.joint.Y.select whb.halui.joint.y.select halui.joint.1.select +net pdnt.joint.Z.select whb.halui.joint.z.select halui.joint.2.select +#net pdnt.joint.A.select whb.halui.joint.a.select halui.joint.3.select +#net pdnt.joint.B.select whb.halui.joint.b.select halui.joint.4.select +#net pdnt.joint.C.select whb.halui.joint.c.select halui.joint.5.select + +# Connect jog signals for step and continuous mode +net pdnt.stepgen.00.maxvel hpg.stepgen.00.maxvel whb.stepgen.00.maxvel +net pdnt.stepgen.01.maxvel hpg.stepgen.01.maxvel whb.stepgen.01.maxvel +net pdnt.stepgen.02.maxvel hpg.stepgen.02.maxvel whb.stepgen.02.maxvel +#net pdnt.stepgen.03.maxvel hpg.stepgen.03.maxvel whb.stepgen.03.maxvel +#net pdnt.stepgen.04.maxvel hpg.stepgen.04.maxvel whb.stepgen.04.maxvel +#net pdnt.stepgen.05.maxvel hpg.stepgen.05.maxvel whb.stepgen.05.maxvel +net pdnt.stepgen.00.position-scale hpg.stepgen.00.position-scale whb.stepgen.00.position-scale +net pdnt.stepgen.01.position-scale hpg.stepgen.01.position-scale whb.stepgen.01.position-scale +net pdnt.stepgen.02.position-scale hpg.stepgen.02.position-scale whb.stepgen.02.position-scale +#net pdnt.stepgen.03.position-scale hpg.stepgen.03.position-scale whb.stepgen.03.position-scale +#net pdnt.stepgen.04.position-scale hpg.stepgen.04.position-scale whb.stepgen.04.position-scale +#net pdnt.stepgen.05.position-scale hpg.stepgen.05.position-scale whb.stepgen.05.position-scale +net pdnt.axis.0.jog-counts whb.axis.0.jog-counts axis.0.jog-counts +net pdnt.axis.1.jog-counts whb.axis.1.jog-counts axis.1.jog-counts +net pdnt.axis.2.jog-counts whb.axis.2.jog-counts axis.2.jog-counts +#net pdnt.axis.3.jog-counts whb.axis.3.jog-counts axis.3.jog-counts +#net pdnt.axis.4.jog-counts whb.axis.4.jog-counts axis.4.jog-counts +#net pdnt.axis.5.jog-counts whb.axis.5.jog-counts axis.5.jog-counts +net pdnt.axis.0.jog-enable whb.axis.0.jog-enable axis.0.jog-enable +net pdnt.axis.1.jog-enable whb.axis.1.jog-enable axis.1.jog-enable +net pdnt.axis.2.jog-enable whb.axis.2.jog-enable axis.2.jog-enable +#net pdnt.axis.3.jog-enable whb.axis.3.jog-enable axis.3.jog-enable +#net pdnt.axis.4.jog-enable whb.axis.4.jog-enable axis.4.jog-enable +#net pdnt.axis.5.jog-enable whb.axis.5.jog-enable axis.5.jog-enable +net pdnt.axis.0.jog-scale whb.axis.0.jog-scale axis.0.jog-scale +net pdnt.axis.1.jog-scale whb.axis.1.jog-scale axis.1.jog-scale +net pdnt.axis.2.jog-scale whb.axis.2.jog-scale axis.2.jog-scale +#net pdnt.axis.3.jog-scale whb.axis.3.jog-scale axis.3.jog-scale +#net pdnt.axis.4.jog-scale whb.axis.4.jog-scale axis.4.jog-scale +#net pdnt.axis.5.jog-scale whb.axis.5.jog-scale axis.5.jog-scale +net pdnt.axis.0.jog-vel-mode whb.axis.0.jog-vel-mode axis.0.jog-vel-mode +net pdnt.axis.1.jog-vel-mode whb.axis.1.jog-vel-mode axis.1.jog-vel-mode +net pdnt.axis.2.jog-vel-mode whb.axis.2.jog-vel-mode axis.2.jog-vel-mode +#net pdnt.axis.3.jog-vel-mode whb.axis.3.jog-vel-mode axis.3.jog-vel-mode +#net pdnt.axis.4.jog-vel-mode whb.axis.4.jog-vel-mode axis.4.jog-vel-mode +#net pdnt.axis.5.jog-vel-mode whb.axis.5.jog-vel-mode axis.5.jog-vel-mode + +# Connect macro buttons to mdi commands +#net pdnt.macro.11 whb.button.macro-11 halui.mdi-command-11 +#net pdnt.macro.12 whb.button.macro-12 halui.mdi-command-12 +#net pdnt.macro.13 whb.button.macro-13 halui.mdi-command-13 +#net pdnt.macro.1 whb.button.macro-1 halui.mdi-command-01 +#net pdnt.macro.2 whb.button.macro-2 halui.mdi-command-02 +#net pdnt.macro.3 whb.button.macro-3 +#net pdnt.macro.4 whb.button.macro-4 +#net pdnt.macro.5 whb.button.macro-5 halui.mdi-command-05 +#net pdnt.macro.6 whb.button.macro-6 halui.mdi-command-06 +#net pdnt.macro.7 whb.button.macro-7 halui.mdi-command-07 +#net pdnt.macro.8 whb.button.macro-8 halui.mdi-command-08 +#net pdnt.macro.9 whb.button.macro-9 halui.mdi-command-09 +net pdnt.home-all whb.button.macro-10 halui.home-all +#net pdnt.macro.14 whb.button.macro-14 halui.mdi-command-14 +#net pdnt.macro.15 whb.button.macro-15 halui.mdi-command-15 +#net pdnt.macro.16 whb.button.macro-16 halui.mdi-command-16 + +# Connect reset, stop, start/pause/resume buttons to halui +# toggles whb.halui.estop.{activate, reset} which are +# already connected to halui.estop.{activate, reset} via whb.halui.estop.{activate, reset} +net pdnt.button.reset whb.button.reset axisui.notifications-clear +# clear notifications on reset button pressed/released +net pdnt.button.reset axisui.notifications-clear +# already linked to halui.program.stop via whb.program.stop +net pdnt.button.stop whb.button.stop +# toggles whb.halui.program{run, pause, resume} which are +# already connected to halui.program.{run, pause, resume} via whb.halui.program.{run, pause, resume} +net pdnt.button.start-pause whb.button.start-pause + +# Connect special positions signals +net pdnt.button.m-home whb.button.m-home halui.mdi-command-01 +net pdnt.button.safe-z whb.button.safe-z halui.mdi-command-00 +net pdnt.button.w-home whb.button.w-home halui.mdi-command-05 +net pdnt.button.s-on-off whb.button.s-on-off + +# unused, just exposes pendant interna +net pdnt.button.fn whb.button.fn + +#halui.TODO, eventually mdi-command +net pdnt.button.probe-z whb.button.probe-z halui.mdi-command-02 + +# unused, just exposes pendant interna +net pdnt.button.mode-continuous whb.button.mode-continuous + +# unused, just exposes pendant interna +net pdnt.button.mode-step whb.button.mode-step + +# Connect spindle related signals +net spindle.is-on whb.halui.spindle.is-on +net spindle.start whb.halui.spindle.start +net spindle.stop whb.halui.spindle.stop +net pdnt.button.spindle-plus whb.button.spindle-plus +net pdnt.button.spindle-minus whb.button.spindle-minus +net spindle.increase whb.halui.spindle.increase +net spindle.decrease whb.halui.spindle.decrease +# min/max override depends on [DISPLAY]MIN_SPINDLE_OVERRIDE and [DISPLAY]MAX_SPINDLE_OVERRIDE +net spindle.spindle-override.value whb.halui.spindle-override.value +net spindle.spindle-override.increase whb.halui.spindle-override.increase +net spindle.spindle-override.decrease whb.halui.spindle-override.decrease + +# Connect machine mode related signals +net pdnt.halui.mode.auto whb.halui.mode.auto halui.mode.auto +net pdnt.halui.mode.joint whb.halui.mode.joint halui.mode.joint +net pdnt.halui.mode.manual whb.halui.mode.manual halui.mode.manual +net pdnt.halui.mode.mdi whb.halui.mode.mdi halui.mode.mdi +net pdnt.halui.mode.is-auto halui.mode.is-auto whb.halui.mode.is-auto +net pdnt.halui.mode.is-joint halui.mode.is-joint whb.halui.mode.is-joint +net pdnt.halui.mode.is-manual halui.mode.is-manual whb.halui.mode.is-manual +net pdnt.halui.mode.is-mdi halui.mode.is-mdi whb.halui.mode.is-mdi + +# Connect feed rate related signals +net pdnt.halui.feed-override.value halui.feed-override.value whb.halui.feed-override.value +# min/max override depends on [DISPLAY]MIN_FEED_OVERRIDE and [DISPLAY]MAX_FEED_OVERRIDE +net pdnt.halui.feed-override.increase whb.halui.feed-override.increase halui.feed-override.increase +net pdnt.halui.feed-override.decrease whb.halui.feed-override.decrease halui.feed-override.decrease +net pdnt.button.feed-plus whb.button.feed-plus +net pdnt.button.feed-minus whb.button.feed-minus + +``` diff --git a/src/hal/user_comps/xhc-whb04b-6/hal.cc b/src/hal/user_comps/xhc-whb04b-6/hal.cc new file mode 100644 index 0000000000..507a6cd409 --- /dev/null +++ b/src/hal/user_comps/xhc-whb04b-6/hal.cc @@ -0,0 +1,1425 @@ +/* + Copyright (C) 2017 Raoul Rubien (github.com/rubienr) + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This program 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the program; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. + */ + +#include "./hal.h" + +// system includes +#include +#include +#include +#include +#include + +// 3rd party includes + +// local library includes +#include "./pendant.h" + +using std::endl; + +namespace XhcWhb04b6 { + +// ---------------------------------------------------------------------- + +HalMemory::HalMemory() : + in(), + out() +{ +} + +// ---------------------------------------------------------------------- + +HalMemory::~HalMemory() +{ +} + +// ---------------------------------------------------------------------- + + +HalMemory::In::In() +{ +} + +// ---------------------------------------------------------------------- + +HalMemory::Out::Out() +{ +} + +// ---------------------------------------------------------------------- + +void Hal::freeSimulatedPin(void** pin) +{ + if (*pin != nullptr) + { + free(*pin); + pin = nullptr; + } +} + +// ---------------------------------------------------------------------- + +Hal::Hal() : + mButtonNameToIdx(), + mHalCout(&mDevNull), + mStepMode(HandwheelStepmodes::Mode::STEP) +{ +} + +// ---------------------------------------------------------------------- + +Hal::~Hal() +{ + if (!mIsSimulationMode) + { + memory->~HalMemory(); + // documentation tells us to not free hal pins + return; + } + + if (memory == nullptr) + { + return; + } + + freeSimulatedPin((void**)(&memory->in.axisXPosition)); + freeSimulatedPin((void**)(&memory->in.axisYPosition)); + freeSimulatedPin((void**)(&memory->in.axisZPosition)); + freeSimulatedPin((void**)(&memory->in.axisAPosition)); + freeSimulatedPin((void**)(&memory->in.axisBPosition)); + freeSimulatedPin((void**)(&memory->in.axisCPosition)); + + freeSimulatedPin((void**)(&memory->in.axisXPositionRelative)); + freeSimulatedPin((void**)(&memory->in.axisYPositionRelative)); + freeSimulatedPin((void**)(&memory->in.axisZPositionRelative)); + freeSimulatedPin((void**)(&memory->in.axisAPositionRelative)); + freeSimulatedPin((void**)(&memory->in.axisBPositionRelative)); + freeSimulatedPin((void**)(&memory->in.axisCPositionRelative)); + + freeSimulatedPin((void**)(&memory->in.stepgenXMaxVelocity)); + freeSimulatedPin((void**)(&memory->in.stepgenYMaxVelocity)); + freeSimulatedPin((void**)(&memory->in.stepgenZMaxVelocity)); + freeSimulatedPin((void**)(&memory->in.stepgenAMaxVelocity)); + freeSimulatedPin((void**)(&memory->in.stepgenBMaxVelocity)); + freeSimulatedPin((void**)(&memory->in.stepgenCMaxVelocity)); + + freeSimulatedPin((void**)(&memory->in.stepgenXPositionScale)); + freeSimulatedPin((void**)(&memory->in.stepgenYPositionScale)); + freeSimulatedPin((void**)(&memory->in.stepgenZPositionScale)); + freeSimulatedPin((void**)(&memory->in.stepgenAPositionScale)); + freeSimulatedPin((void**)(&memory->in.stepgenBPositionScale)); + freeSimulatedPin((void**)(&memory->in.stepgenCPositionScale)); + + freeSimulatedPin((void**)(&memory->in.spindleIsOn)); + freeSimulatedPin((void**)(&memory->in.spindleOverrideValue)); + freeSimulatedPin((void**)(&memory->in.spindleSpeedAbsRpm)); + + freeSimulatedPin((void**)(&memory->in.feedSpeedUps)); + freeSimulatedPin((void**)(&memory->in.feedOverrideValue)); + freeSimulatedPin((void**)(&memory->in.feedOverrideMinValue)); + freeSimulatedPin((void**)(&memory->in.feedOverrideMaxValue)); + + freeSimulatedPin((void**)(&memory->in.isProgramRunning)); + freeSimulatedPin((void**)(&memory->in.isProgramPaused)); + freeSimulatedPin((void**)(&memory->in.isProgramIdle)); + + freeSimulatedPin((void**)(&memory->in.isModeAuto)); + freeSimulatedPin((void**)(&memory->in.isModeJoint)); + freeSimulatedPin((void**)(&memory->in.isModeManual)); + freeSimulatedPin((void**)(&memory->in.isModeMdi)); + + freeSimulatedPin((void**)(&memory->in.isEmergencyStop)); + + freeSimulatedPin((void**)(&memory->in.isMachineOn)); + + constexpr size_t pinsCount = sizeof(memory->out.button_pin) / sizeof(hal_bit_t * ); + for (size_t idx = 0; idx < pinsCount; idx++) + { + freeSimulatedPin((void**)(&memory->out.button_pin[idx])); + } + + freeSimulatedPin((void**)(&memory->out.axisXJogCounts)); + freeSimulatedPin((void**)(&memory->out.axisYJogCounts)); + freeSimulatedPin((void**)(&memory->out.axisZJogCounts)); + freeSimulatedPin((void**)(&memory->out.axisAJogCounts)); + freeSimulatedPin((void**)(&memory->out.axisBJogCounts)); + freeSimulatedPin((void**)(&memory->out.axisCJogCounts)); + + freeSimulatedPin((void**)(&memory->out.axisXJogEnable)); + freeSimulatedPin((void**)(&memory->out.axisYJogEnable)); + freeSimulatedPin((void**)(&memory->out.axisZJogEnable)); + freeSimulatedPin((void**)(&memory->out.axisAJogEnable)); + freeSimulatedPin((void**)(&memory->out.axisBJogEnable)); + freeSimulatedPin((void**)(&memory->out.axisCJogEnable)); + + freeSimulatedPin((void**)(&memory->out.axisXJogScale)); + freeSimulatedPin((void**)(&memory->out.axisYJogScale)); + freeSimulatedPin((void**)(&memory->out.axisZJogScale)); + freeSimulatedPin((void**)(&memory->out.axisAJogScale)); + freeSimulatedPin((void**)(&memory->out.axisBJogScale)); + freeSimulatedPin((void**)(&memory->out.axisCJogScale)); + + freeSimulatedPin((void**)(&memory->out.axisXSetVelocityMode)); + freeSimulatedPin((void**)(&memory->out.axisYSetVelocityMode)); + freeSimulatedPin((void**)(&memory->out.axisZSetVelocityMode)); + freeSimulatedPin((void**)(&memory->out.axisASetVelocityMode)); + freeSimulatedPin((void**)(&memory->out.axisBSetVelocityMode)); + freeSimulatedPin((void**)(&memory->out.axisCSetVelocityMode)); + + freeSimulatedPin((void**)(&memory->out.feedValueSelected0_001)); + freeSimulatedPin((void**)(&memory->out.feedValueSelected0_01)); + freeSimulatedPin((void**)(&memory->out.feedValueSelected0_1)); + freeSimulatedPin((void**)(&memory->out.feedValueSelected1_0)); + + freeSimulatedPin((void**)(&memory->out.feedOverrideScale)); + freeSimulatedPin((void**)(&memory->out.feedOverrideCountEnable)); + freeSimulatedPin((void**)(&memory->out.feedOverrideDirectValue)); + freeSimulatedPin((void**)(&memory->out.feedOverrideCounts)); + freeSimulatedPin((void**)(&memory->out.feedOverrideDecrease)); + freeSimulatedPin((void**)(&memory->out.feedOverrideIncrease)); + + freeSimulatedPin((void**)(&memory->out.spindleStop)); + freeSimulatedPin((void**)(&memory->out.spindleDoRunForward)); + freeSimulatedPin((void**)(&memory->out.spindleDoRunReverse)); + freeSimulatedPin((void**)(&memory->out.spindleDoDecrease)); + freeSimulatedPin((void**)(&memory->out.spindleDoIncrease)); + freeSimulatedPin((void**)(&memory->out.spindleOverrideDoDecrease)); + freeSimulatedPin((void**)(&memory->out.spindleOverrideDoIncrease)); + + freeSimulatedPin((void**)(&memory->out.jogSpeedValue)); + + freeSimulatedPin((void**)(&memory->out.homeAll)); + + freeSimulatedPin((void**)(&memory->out.jointXSelect)); + freeSimulatedPin((void**)(&memory->out.jointYSelect)); + freeSimulatedPin((void**)(&memory->out.jointZSelect)); + freeSimulatedPin((void**)(&memory->out.jointASelect)); + freeSimulatedPin((void**)(&memory->out.jointBSelect)); + freeSimulatedPin((void**)(&memory->out.jointCSelect)); + + freeSimulatedPin((void**)(&memory->out.isPendantSleeping)); + freeSimulatedPin((void**)(&memory->out.isPendantConnected)); + + freeSimulatedPin((void**)(&memory->out.doRunProgram)); + freeSimulatedPin((void**)(&memory->out.doPauseProgram)); + freeSimulatedPin((void**)(&memory->out.doResumeProgram)); + freeSimulatedPin((void**)(&memory->out.doStopProgram)); + + freeSimulatedPin((void**)(&memory->out.doModeAuto)); + freeSimulatedPin((void**)(&memory->out.doModeJoint)); + freeSimulatedPin((void**)(&memory->out.doModeManual)); + freeSimulatedPin((void**)(&memory->out.doModeMdi)); + + freeSimulatedPin((void**)(&memory->out.doEmergencyStop)); + freeSimulatedPin((void**)(&memory->out.resetEmergencyStop)); + + freeSimulatedPin((void**)(&memory->out.doMachineOn)); + freeSimulatedPin((void**)(&memory->out.doMachineOff)); + + delete memory; +} + +// ---------------------------------------------------------------------- + +int Hal::newSimulatedHalPin(char* pin_name, void** ptr, int s) +{ + *ptr = calloc(s, 1); + assert(*ptr != nullptr); + memset(*ptr, 0, s); + return 0; +} + +// ---------------------------------------------------------------------- + +int Hal::newHalFloat(hal_pin_dir_t direction, hal_float_t** ptr, int componentId, const char* fmt, ...) +{ + char pin_name[256]; + va_list args; + va_start(args, fmt); + vsprintf(pin_name, fmt, args); + va_end(args); + + assert(strlen(pin_name) < HAL_NAME_LEN); + + *mHalCout << "hal float "; + if (direction == HAL_OUT) + { + *mHalCout << "out "; + } + else + { + *mHalCout << "in "; + } + *mHalCout << pin_name << endl; + + assert(ptr != nullptr); + assert(*ptr == nullptr); + + if (mIsSimulationMode) + { + return newSimulatedHalPin(pin_name, (void**)ptr, sizeof(hal_float_t)); + } + else + { + int r = hal_pin_float_new(pin_name, direction, ptr, componentId); + assert(r == 0); + return r; + } +} + +// ---------------------------------------------------------------------- + +int Hal::newHalSigned32(hal_pin_dir_t direction, hal_s32_t** ptr, int componentId, const char* fmt, ...) +{ + char pin_name[256]; + va_list args; + va_start(args, fmt); + vsprintf(pin_name, fmt, args); + va_end(args); + + assert(strlen(pin_name) < HAL_NAME_LEN); + + *mHalCout << "hal s32 "; + if (direction == HAL_OUT) + { + *mHalCout << "out "; + } + else + { + *mHalCout << "in "; + } + *mHalCout << pin_name << endl; + + assert(ptr != nullptr); + assert(*ptr == nullptr); + + if (mIsSimulationMode) + { + return newSimulatedHalPin(pin_name, (void**)ptr, sizeof(hal_s32_t)); + } + else + { + int r = hal_pin_s32_new(pin_name, direction, ptr, componentId); + assert(r == 0); + return r; + } +} + +// ---------------------------------------------------------------------- + +int Hal::newHalUnsigned32(hal_pin_dir_t direction, hal_u32_t** ptr, int componentId, const char* fmt, ...) +{ + char pin_name[256]; + va_list args; + va_start(args, fmt); + vsprintf(pin_name, fmt, args); + va_end(args); + + assert(strlen(pin_name) < HAL_NAME_LEN); + + *mHalCout << "hal u32 "; + if (direction == HAL_OUT) + { + *mHalCout << "out "; + } + else + { + *mHalCout << "in "; + } + *mHalCout << pin_name << endl; + + assert(ptr != nullptr); + assert(*ptr == nullptr); + + if (mIsSimulationMode) + { + return newSimulatedHalPin(pin_name, (void**)ptr, sizeof(hal_u32_t)); + } + else + { + int r = hal_pin_u32_new(pin_name, direction, ptr, componentId); + assert(r == 0); + return r; + } +} + +// ---------------------------------------------------------------------- + +int Hal::newHalBit(hal_pin_dir_t direction, hal_bit_t** ptr, int componentId, const char* fmt, ...) +{ + char pin_name[256]; + va_list args; + va_start(args, fmt); + vsprintf(pin_name, fmt, args); + va_end(args); + + assert(strlen(pin_name) < HAL_NAME_LEN); + + *mHalCout << "hal bit "; + if (direction == HAL_OUT) + { + *mHalCout << "out "; + } + else + { + *mHalCout << "in "; + } + *mHalCout << pin_name << endl; + + assert(ptr != nullptr); + assert(*ptr == nullptr); + + if (mIsSimulationMode) + { + return newSimulatedHalPin(pin_name, (void**)ptr, sizeof(hal_bit_t)); + } + else + { + int r = hal_pin_bit_new(pin_name, direction, ptr, componentId); + assert(r == 0); + return r; + } +} + +// ---------------------------------------------------------------------- + +bool Hal::isSimulationModeEnabled() const +{ + return mIsSimulationMode; +} + +// ---------------------------------------------------------------------- + +void Hal::setSimulationMode(bool isSimulationMode) +{ + this->mIsSimulationMode = isSimulationMode; +} + +// ---------------------------------------------------------------------- + +int Hal::getHalComponentId() const +{ + return mHalCompId; +} + +// ---------------------------------------------------------------------- + +const char* Hal::getHalComponentName() const +{ + return mName; +} + +// ---------------------------------------------------------------------- + +void Hal::init(const MetaButtonCodes* metaButtons, const KeyCodes& keyCodes) +{ + assert(!mIsInitialized); + + if (!mIsSimulationMode) + { + *mHalCout << "hal initialize HAL component in HAL mode " << mName << " ... "; + mHalCompId = hal_init(mName); + if (mHalCompId <= 0) + { + std::cerr << endl << "failed to initialize HAL component " << mName << endl; + exit(EXIT_FAILURE); + } + *mHalCout << "ok" << endl; + + *mHalCout << "hal initialize shared HAL memory for component id " << mHalCompId << " ... "; + memory = reinterpret_cast(hal_malloc(sizeof(HalMemory))); + memory = new(memory) HalMemory(); + } + else + { + *mHalCout << "hal initialize simulated HAL memory " << " ... "; + memory = new HalMemory(); + } + + if (memory == nullptr) + { + std::cerr << "failed to allocate HAL memory" << endl; + exit(EXIT_FAILURE); + } + *mHalCout << "ok" << endl; + + // register all known xhc-whb04b-6 buttons + for (size_t idx = 0; !((metaButtons[idx].key.code == keyCodes.Buttons.undefined.code) && + (metaButtons[idx].modifier.code == keyCodes.Buttons.undefined.code)); idx++) + { + const char* buttonName = nullptr; + if (&metaButtons[idx].modifier == &keyCodes.Buttons.undefined) + { + buttonName = metaButtons[idx].key.text; + } + else + { + buttonName = metaButtons[idx].key.altText; + } + + mButtonNameToIdx[std::string(mComponentPrefix) + ".button." + std::string(buttonName)] = idx; + newHalBit(HAL_OUT, &((memory->out.button_pin)[idx]), mHalCompId, "%s.button.%s", mComponentPrefix, + buttonName); + } + + newHalSigned32(HAL_OUT, &(memory->out.axisXJogCounts), mHalCompId, "%s.axis.0.jog-counts", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.axisXJogEnable), mHalCompId, "%s.axis.0.jog-enable", mComponentPrefix); + newHalFloat(HAL_OUT, &(memory->out.axisXJogScale), mHalCompId, "%s.axis.0.jog-scale", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.axisXSetVelocityMode), mHalCompId, "%s.axis.0.jog-vel-mode", mComponentPrefix); + + newHalSigned32(HAL_OUT, &(memory->out.axisYJogCounts), mHalCompId, "%s.axis.1.jog-counts", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.axisYJogEnable), mHalCompId, "%s.axis.1.jog-enable", mComponentPrefix); + newHalFloat(HAL_OUT, &(memory->out.axisYJogScale), mHalCompId, "%s.axis.1.jog-scale", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.axisYSetVelocityMode), mHalCompId, "%s.axis.1.jog-vel-mode", mComponentPrefix); + + newHalSigned32(HAL_OUT, &(memory->out.axisZJogCounts), mHalCompId, "%s.axis.2.jog-counts", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.axisZJogEnable), mHalCompId, "%s.axis.2.jog-enable", mComponentPrefix); + newHalFloat(HAL_OUT, &(memory->out.axisZJogScale), mHalCompId, "%s.axis.2.jog-scale", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.axisZSetVelocityMode), mHalCompId, "%s.axis.2.jog-vel-mode", mComponentPrefix); + + newHalSigned32(HAL_OUT, &(memory->out.axisAJogCounts), mHalCompId, "%s.axis.3.jog-counts", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.axisAJogEnable), mHalCompId, "%s.axis.3.jog-enable", mComponentPrefix); + newHalFloat(HAL_OUT, &(memory->out.axisAJogScale), mHalCompId, "%s.axis.3.jog-scale", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.axisASetVelocityMode), mHalCompId, "%s.axis.3.jog-vel-mode", mComponentPrefix); + + newHalSigned32(HAL_OUT, &(memory->out.axisBJogCounts), mHalCompId, "%s.axis.4.jog-counts", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.axisBJogEnable), mHalCompId, "%s.axis.4.jog-enable", mComponentPrefix); + newHalFloat(HAL_OUT, &(memory->out.axisBJogScale), mHalCompId, "%s.axis.4.jog-scale", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.axisBSetVelocityMode), mHalCompId, "%s.axis.4.jog-vel-mode", mComponentPrefix); + + newHalSigned32(HAL_OUT, &(memory->out.axisCJogCounts), mHalCompId, "%s.axis.5.jog-counts", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.axisCJogEnable), mHalCompId, "%s.axis.5.jog-enable", mComponentPrefix); + newHalFloat(HAL_OUT, &(memory->out.axisCJogScale), mHalCompId, "%s.axis.5.jog-scale", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.axisCSetVelocityMode), mHalCompId, "%s.axis.5.jog-vel-mode", mComponentPrefix); + + newHalBit(HAL_OUT, &(memory->out.isPendantSleeping), mHalCompId, "%s.pendant.is-sleeping", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.isPendantConnected), mHalCompId, "%s.pendant.is-connected", mComponentPrefix); + + newHalFloat(HAL_IN, &(memory->in.axisXPosition), mHalCompId, "%s.halui.axis.0.pos-feedback", mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.axisYPosition), mHalCompId, "%s.halui.axis.1.pos-feedback", mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.axisZPosition), mHalCompId, "%s.halui.axis.2.pos-feedback", mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.axisAPosition), mHalCompId, "%s.halui.axis.3.pos-feedback", mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.axisBPosition), mHalCompId, "%s.halui.axis.4.pos-feedback", mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.axisCPosition), mHalCompId, "%s.halui.axis.5.pos-feedback", mComponentPrefix); + + newHalFloat(HAL_IN, &(memory->in.axisXPositionRelative), mHalCompId, "%s.halui.axis.0.pos-relative", + mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.axisYPositionRelative), mHalCompId, "%s.halui.axis.1.pos-relative", + mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.axisZPositionRelative), mHalCompId, "%s.halui.axis.2.pos-relative", + mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.axisAPositionRelative), mHalCompId, "%s.halui.axis.3.pos-relative", + mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.axisBPositionRelative), mHalCompId, "%s.halui.axis.4.pos-relative", + mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.axisCPositionRelative), mHalCompId, "%s.halui.axis.5.pos-relative", + mComponentPrefix); + + newHalFloat(HAL_IN, &(memory->in.stepgenXMaxVelocity), mHalCompId, "%s.stepgen.00.maxvel", mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.stepgenXPositionScale), mHalCompId, "%s.stepgen.00.position-scale", + mComponentPrefix); + + newHalFloat(HAL_IN, &(memory->in.stepgenYMaxVelocity), mHalCompId, "%s.stepgen.01.maxvel", mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.stepgenYPositionScale), mHalCompId, "%s.stepgen.01.position-scale", + mComponentPrefix); + + newHalFloat(HAL_IN, &(memory->in.stepgenZMaxVelocity), mHalCompId, "%s.stepgen.02.maxvel", mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.stepgenZPositionScale), mHalCompId, "%s.stepgen.02.position-scale", + mComponentPrefix); + + newHalFloat(HAL_IN, &(memory->in.stepgenAMaxVelocity), mHalCompId, "%s.stepgen.03.maxvel", mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.stepgenAPositionScale), mHalCompId, "%s.stepgen.03.position-scale", + mComponentPrefix); + + newHalFloat(HAL_IN, &(memory->in.stepgenBMaxVelocity), mHalCompId, "%s.stepgen.04.maxvel", mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.stepgenBPositionScale), mHalCompId, "%s.stepgen.04.position-scale", + mComponentPrefix); + + newHalFloat(HAL_IN, &(memory->in.stepgenCMaxVelocity), mHalCompId, "%s.stepgen.05.maxvel", mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.stepgenCPositionScale), mHalCompId, "%s.stepgen.05.position-scale", + mComponentPrefix); + + newHalBit(HAL_OUT, &(memory->out.feedValueSelected0_001), mHalCompId, "%s.halui.feed.selected-0.001", + mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.feedValueSelected0_01), mHalCompId, "%s.halui.feed.selected-0.01", + mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.feedValueSelected0_1), mHalCompId, "%s.halui.feed.selected-0.1", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.feedValueSelected1_0), mHalCompId, "%s.halui.feed.selected-1.0", mComponentPrefix); + + newHalFloat(HAL_OUT, &(memory->out.feedOverrideScale), mHalCompId, "%s.halui.feed-override.scale", + mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.feedOverrideDirectValue), mHalCompId, "%s.halui.feed-override.direct-val", + mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.feedOverrideCountEnable), mHalCompId, "%s.halui.feed-override.count-enable", + mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.feedOverrideValue), mHalCompId, "%s.halui.feed-override.value", mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.feedOverrideMinValue), mHalCompId, "%s.halui.feed-override.min-value", + mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.feedOverrideMaxValue), mHalCompId, "%s.halui.feed-override.max-value", + mComponentPrefix); + newHalSigned32(HAL_OUT, &(memory->out.feedOverrideCounts), mHalCompId, "%s.halui.feed-override.counts", + mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.feedOverrideDecrease), mHalCompId, "%s.halui.feed-override.decrease", + mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.feedOverrideIncrease), mHalCompId, "%s.halui.feed-override.increase", + mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.feedSpeedUps), mHalCompId, "%s.motion.current-vel", mComponentPrefix); + + newHalFloat(HAL_IN, &(memory->in.spindleOverrideValue), mHalCompId, "%s.halui.spindle-override.value", + mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.spindleSpeedAbsRpm), mHalCompId, "%s.motion.spindle-speed-abs", mComponentPrefix); + + newHalBit(HAL_OUT, &(memory->out.spindleDoIncrease), mHalCompId, "%s.halui.spindle.increase", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.spindleDoDecrease), mHalCompId, "%s.halui.spindle.decrease", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.spindleOverrideDoIncrease), mHalCompId, "%s.halui.spindle-override.increase", + mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.spindleOverrideDoDecrease), mHalCompId, "%s.halui.spindle-override.decrease", + mComponentPrefix); + newHalBit(HAL_IN, &(memory->in.spindleIsOn), mHalCompId, "%s.halui.spindle.is-on", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.spindleStop), mHalCompId, "%s.halui.spindle.stop", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.spindleDoRunForward), mHalCompId, "%s.halui.spindle.forward", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.spindleDoRunReverse), mHalCompId, "%s.halui.spindle.reverse", mComponentPrefix); + + newHalBit(HAL_OUT, &(memory->out.doEmergencyStop), mHalCompId, "%s.halui.estop.activate", mComponentPrefix); + newHalBit(HAL_IN, &(memory->in.isEmergencyStop), mHalCompId, "%s.halui.estop.is-activated", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.resetEmergencyStop), mHalCompId, "%s.halui.estop.reset", mComponentPrefix); + + newHalBit(HAL_IN, &(memory->in.isMachineOn), mHalCompId, "%s.halui.machine.is-on", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.doMachineOn), mHalCompId, "%s.halui.machine.on", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.doMachineOff), mHalCompId, "%s.halui.machine.off", mComponentPrefix); + + newHalBit(HAL_IN, &(memory->in.isProgramIdle), mHalCompId, "%s.halui.program.is-idle", mComponentPrefix); + newHalBit(HAL_IN, &(memory->in.isProgramPaused), mHalCompId, "%s.halui.program.is-paused", mComponentPrefix); + newHalBit(HAL_IN, &(memory->in.isProgramRunning), mHalCompId, "%s.halui.program.is-running", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.doResumeProgram), mHalCompId, "%s.halui.program.resume", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.doPauseProgram), mHalCompId, "%s.halui.program.pause", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.doRunProgram), mHalCompId, "%s.halui.program.run", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.doStopProgram), mHalCompId, "%s.halui.program.stop", mComponentPrefix); + + newHalBit(HAL_IN, &(memory->in.isModeAuto), mHalCompId, "%s.halui.mode.is-auto", mComponentPrefix); + newHalBit(HAL_IN, &(memory->in.isModeJoint), mHalCompId, "%s.halui.mode.is-joint", mComponentPrefix); + newHalBit(HAL_IN, &(memory->in.isModeManual), mHalCompId, "%s.halui.mode.is-manual", mComponentPrefix); + newHalBit(HAL_IN, &(memory->in.isModeMdi), mHalCompId, "%s.halui.mode.is-mdi", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.doModeAuto), mHalCompId, "%s.halui.mode.auto", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.doModeJoint), mHalCompId, "%s.halui.mode.joint", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.doModeManual), mHalCompId, "%s.halui.mode.manual", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.doModeMdi), mHalCompId, "%s.halui.mode.mdi", mComponentPrefix); + + newHalBit(HAL_OUT, &(memory->out.jointXSelect), mHalCompId, "%s.halui.joint.x.select", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.jointYSelect), mHalCompId, "%s.halui.joint.y.select", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.jointZSelect), mHalCompId, "%s.halui.joint.z.select", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.jointASelect), mHalCompId, "%s.halui.joint.a.select", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.jointBSelect), mHalCompId, "%s.halui.joint.b.select", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.jointCSelect), mHalCompId, "%s.halui.joint.c.select", mComponentPrefix); + + newHalFloat(HAL_OUT, &(memory->out.jogSpeedValue), mHalCompId, "%s.halui.jog-speed", mComponentPrefix); + + newHalBit(HAL_OUT, &(memory->out.homeAll), mHalCompId, "%s.halui.home-all", mComponentPrefix); + mIsInitialized = true; +} + +// ---------------------------------------------------------------------- + +bool Hal::isInitialized() +{ + return mIsInitialized; +} + +// ---------------------------------------------------------------------- + +hal_float_t Hal::getAxisXPosition(bool absolute) const +{ + if (absolute) + { + return *memory->in.axisXPosition; + } + return *memory->in.axisXPositionRelative; +} + +// ---------------------------------------------------------------------- + +hal_float_t Hal::getAxisYPosition(bool absolute) const +{ + if (absolute) + { + return *memory->in.axisYPosition; + } + return *memory->in.axisYPositionRelative; +} + +// ---------------------------------------------------------------------- + +hal_float_t Hal::getAxisZPosition(bool absolute) const +{ + if (absolute) + { + return *memory->in.axisZPosition; + } + return *memory->in.axisZPositionRelative; +} + +// ---------------------------------------------------------------------- + +hal_float_t Hal::getAxisAPosition(bool absolute) const +{ + if (absolute) + { + return *memory->in.axisAPosition; + } + return *memory->in.axisAPositionRelative; +} + +// ---------------------------------------------------------------------- + +hal_float_t Hal::getAxisBPosition(bool absolute) const +{ + if (absolute) + { + return *memory->in.axisBPosition; + } + return *memory->in.axisBPositionRelative; +} + +// ---------------------------------------------------------------------- + +hal_float_t Hal::getAxisCPosition(bool absolute) const +{ + if (absolute) + { + return *memory->in.axisCPosition; + } + return *memory->in.axisCPositionRelative; +} + + +// ---------------------------------------------------------------------- + +void Hal::setEnableVerbose(bool enable) +{ + if (enable) + { + mHalCout = &std::cout; + } + else + { + mHalCout = &mDevNull; + } +} + +// ---------------------------------------------------------------------- + +void Hal::setNoAxisActive(bool enabled) +{ + *mHalCout << "hal OFF no axis active" << endl; +} + +// ---------------------------------------------------------------------- + +void Hal::setAxisXActive(bool enabled) +{ + *memory->out.jointXSelect = enabled; + *memory->out.axisXJogEnable = enabled; + *mHalCout << "hal X axis active" << endl; +} + +// ---------------------------------------------------------------------- + +void Hal::setAxisYActive(bool enabled) +{ + *memory->out.jointYSelect = enabled; + *memory->out.axisYJogEnable = enabled; + *mHalCout << "hal Y axis active" << endl; +} + +// ---------------------------------------------------------------------- + +void Hal::setAxisZActive(bool enabled) +{ + *memory->out.jointZSelect = enabled; + *memory->out.axisZJogEnable = enabled; + *mHalCout << "hal Z axis active" << endl; +} + +// ---4------------------------------------------------------------------- + +void Hal::setAxisAActive(bool enabled) +{ + *memory->out.jointASelect = enabled; + *memory->out.axisAJogEnable = enabled; + *mHalCout << "hal A axis active" << endl; +} + +// ---------------------------------------------------------------------- + +void Hal::setAxisBActive(bool enabled) +{ + *memory->out.jointBSelect = enabled; + *memory->out.axisBJogEnable = enabled; + *mHalCout << "hal B axis active" << endl; +} + +// ---------------------------------------------------------------------- + +void Hal::setAxisCActive(bool enabled) +{ + *memory->out.jointCSelect = enabled; + *memory->out.axisCJogEnable = enabled; + *mHalCout << "hal C axis active" << endl; +} + +// ---------------------------------------------------------------------- + +void Hal::setStepSize(const hal_float_t& stepSize) +{ + *memory->out.axisXJogScale = stepSize; + *memory->out.axisYJogScale = stepSize; + *memory->out.axisZJogScale = stepSize; + *memory->out.axisAJogScale = stepSize; + *memory->out.axisBJogScale = stepSize; + *memory->out.axisCJogScale = stepSize; + *mHalCout << "hal step size " << stepSize << endl; +} + +// ---------------------------------------------------------------------- + +void Hal::setLead() +{ + std::ios init(NULL); + init.copyfmt(*mHalCout); + *mHalCout << "hal feed rate Lead" << endl; + mHalCout->copyfmt(init); +} + +// ---------------------------------------------------------------------- + +void Hal::setReset(bool enabled) +{ + if (*memory->in.isMachineOn) + { // disable machine + clearStartResumeProgramStates(); + *memory->out.doMachineOff = true; + } + else + { // enable machine + *memory->out.doMachineOn = true; + } + + if (!enabled) + { + *memory->out.doMachineOff = false; + *memory->out.doMachineOn = false; + } + setPin(enabled, KeyCodes::Buttons.reset.text); +} + +// ---------------------------------------------------------------------- + +void Hal::setStop(bool enabled) +{ + clearStartResumeProgramStates(); + *memory->out.doStopProgram = enabled; + setPin(enabled, KeyCodes::Buttons.stop.text); +} + +// ---------------------------------------------------------------------- + +void Hal::setStart(bool enabled) +{ + if (!enabled) + { + // clear auto mode + *memory->out.doModeAuto = false; + } + else + { + // request auto mode + *memory->out.doModeAuto = true; + toggleStartResumeProgram(); + } + setPin(enabled, KeyCodes::Buttons.start.text); +} + +// ---------------------------------------------------------------------- + +bool Hal::getIsMachineOn() const +{ + return *memory->in.isMachineOn; +} + +// ---------------------------------------------------------------------- + +void Hal::setIsPendantSleeping(bool isSleeping) +{ + *memory->out.isPendantSleeping = isSleeping; +} + +// ---------------------------------------------------------------------- + +bool Hal::getIsPendantSleeping() const +{ + return *memory->out.isPendantSleeping; +} + +// ---------------------------------------------------------------------- + +void Hal::setIsPendantConnected(bool isSleeping) +{ + *memory->out.isPendantConnected = isSleeping; +} + +// ---------------------------------------------------------------------- + +bool Hal::getIsPendantConnected() const +{ + return *memory->out.isPendantConnected; +} + +// ---------------------------------------------------------------------- + +void Hal::clearStartResumeProgramStates() +{ + *memory->out.doModeAuto = false; + *memory->out.doPauseProgram = false; + *memory->out.doRunProgram = false; + *memory->out.doResumeProgram = false; +} + +// ---------------------------------------------------------------------- + +void Hal::toggleStartResumeProgram() +{ + if (*memory->in.isProgramPaused) + { + *memory->out.doPauseProgram = false; + *memory->out.doRunProgram = false; + *memory->out.doResumeProgram = true; + } + if (*memory->in.isProgramRunning) + { + *memory->out.doPauseProgram = true; + *memory->out.doRunProgram = false; + *memory->out.doResumeProgram = false; + } + if (*memory->in.isProgramIdle) + { + *memory->out.doPauseProgram = false; + *memory->out.doRunProgram = true; + *memory->out.doResumeProgram = false; + } +} + +// ---------------------------------------------------------------------- + +void Hal::setFeedPlus(bool enabled) +{ + *memory->out.feedOverrideIncrease = enabled; + setPin(enabled, KeyCodes::Buttons.feed_plus.text); +} + +// ---------------------------------------------------------------------- + +void Hal::setFeedMinus(bool enabled) +{ + *memory->out.feedOverrideDecrease = enabled; + setPin(enabled, KeyCodes::Buttons.feed_minus.text); +} + +// ---------------------------------------------------------------------- + +void Hal::setFeedOverrideCountEnable(bool enabled) +{ + *memory->out.feedOverrideCountEnable = enabled; +} + +// ---------------------------------------------------------------------- + +void Hal::setFeedOverrideDirectValue(bool enabled) +{ + *memory->out.feedOverrideDirectValue = enabled; +} + +// ---------------------------------------------------------------------- + +hal_float_t Hal::getFeedOverrideValue() const +{ + return *memory->in.feedOverrideValue; +} + +// ---------------------------------------------------------------------- + +hal_float_t Hal::getFeedOverrideMinValue() const +{ + return *memory->in.feedOverrideMinValue; +} + +// ---------------------------------------------------------------------- + +hal_float_t Hal::getFeedOverrideMaxValue() const +{ + return *memory->in.feedOverrideMaxValue; +} + +// ---------------------------------------------------------------------- + +void Hal::setFeedOverrideCounts(hal_s32_t counts) +{ + *memory->out.feedOverrideCounts = counts; +} + +// ---------------------------------------------------------------------- + +void Hal::setFeedValueSelected0_001(bool selected) +{ + *memory->out.feedValueSelected0_001 = selected; +} + +// ---------------------------------------------------------------------- + +void Hal::setFeedValueSelected0_01(bool selected) +{ + *memory->out.feedValueSelected0_01 = selected; +} + +// ---------------------------------------------------------------------- + +void Hal::setFeedValueSelected0_1(bool selected) +{ + *memory->out.feedValueSelected0_1 = selected; +} + +// ---------------------------------------------------------------------- + +void Hal::setFeedValueSelected1_0(bool selected) +{ + *memory->out.feedValueSelected1_0 = selected; +} + +// ---------------------------------------------------------------------- + +void Hal::setFeedOverrideScale(hal_float_t scale) +{ + *memory->out.feedOverrideScale = scale; +} + +// ---------------------------------------------------------------------- + +hal_float_t Hal::getSpindleSpeedAbsRpm() const +{ + return *memory->in.spindleSpeedAbsRpm; +} + +// ---------------------------------------------------------------------- + +hal_float_t Hal::getFeedUps() const +{ + return *memory->in.feedSpeedUps; +} + +// ---------------------------------------------------------------------- + +void Hal::setSpindlePlus(bool enabled) +{ + if (enabled) + { + *memory->out.spindleOverrideDoIncrease = true; + } + else + { + *memory->out.spindleOverrideDoIncrease = false; + } + setPin(enabled, KeyCodes::Buttons.spindle_plus.text); +} + +// ---------------------------------------------------------------------- + +void Hal::setSpindleMinus(bool enabled) +{ + if (enabled) + { + *memory->out.spindleOverrideDoDecrease = true; + } + else + { + *memory->out.spindleOverrideDoDecrease = false; + } + setPin(enabled, KeyCodes::Buttons.spindle_minus.text); +} + +// ---------------------------------------------------------------------- + +void Hal::setMachineHome(bool enabled) +{ + enableMdiMode(enabled); + *memory->out.homeAll = enabled; + setPin(enabled, KeyCodes::Buttons.machine_home.text); +} + +// ---------------------------------------------------------------------- + +void Hal::setSafeZ(bool enabled) +{ + enableMdiMode(enabled); + setPin(enabled, KeyCodes::Buttons.safe_z.text); +} + +// ---------------------------------------------------------------------- + +void Hal::setWorkpieceHome(bool enabled) +{ + enableMdiMode(enabled); + setPin(enabled, KeyCodes::Buttons.workpiece_home.text); +} + +// ---------------------------------------------------------------------- + +void Hal::toggleSpindleDirection(bool isButtonPressed) +{ + if (isButtonPressed) + { + mIsSpindleDirectionForward = !mIsSpindleDirectionForward; + } + + // on running spindle update direction immediately + if (*memory->in.spindleIsOn) + { + if (isButtonPressed) + { + if (mIsSpindleDirectionForward) + { + *memory->out.spindleDoRunForward = true; + } + else + { + *memory->out.spindleDoRunReverse = true; + } + } + else + { + *memory->out.spindleDoRunForward = false; + *memory->out.spindleDoRunReverse = false; + } + } +} + +// ---------------------------------------------------------------------- + +void Hal::toggleSpindleOnOff(bool isButtonPressed) +{ + if (isButtonPressed) + { + if (*memory->in.spindleIsOn) + { + // on spindle stop + *memory->out.spindleStop = true; + } + else + { + // on spindle start + if (mIsSpindleDirectionForward) + { + *memory->out.spindleDoRunForward = true; + } + else + { + *memory->out.spindleDoRunReverse = true; + } + } + } + else + { + // on button released + *memory->out.spindleStop = false; + *memory->out.spindleDoRunForward = false; + *memory->out.spindleDoRunReverse = false; + } + setPin(isButtonPressed, KeyCodes::Buttons.spindle_on_off.text); +} + +// ---------------------------------------------------------------------- + +void Hal::setProbeZ(bool enabled) +{ + enableMdiMode(enabled); + setPin(enabled, KeyCodes::Buttons.probe_z.text); +} + +// ---------------------------------------------------------------------- + +void Hal::setContinuousMode(bool enabled) +{ + if (enabled) + { + *memory->out.axisXSetVelocityMode = true; + *memory->out.axisYSetVelocityMode = true; + *memory->out.axisZSetVelocityMode = true; + *memory->out.axisASetVelocityMode = true; + *memory->out.axisBSetVelocityMode = true; + *memory->out.axisCSetVelocityMode = true; + *mHalCout << "hal step mode is continuous" << endl; + } + setPin(enabled, KeyCodes::Buttons.manual_pulse_generator.text); +} + +// ---------------------------------------------------------------------- + +void Hal::setStepMode(bool enabled) +{ + if (enabled) + { + *memory->out.axisXSetVelocityMode = false; + *memory->out.axisYSetVelocityMode = false; + *memory->out.axisZSetVelocityMode = false; + *memory->out.axisASetVelocityMode = false; + *memory->out.axisBSetVelocityMode = false; + *memory->out.axisCSetVelocityMode = false; + *mHalCout << "hal step mode is step" << endl; + } + setPin(enabled, KeyCodes::Buttons.step_continuous.text); +} + +// ---------------------------------------------------------------------- + +void Hal::setMacro1(bool enabled) +{ + setPin(enabled, KeyCodes::Buttons.feed_plus.altText); +} + +// ---------------------------------------------------------------------- + +void Hal::setMacro2(bool enabled) +{ + setPin(enabled, KeyCodes::Buttons.feed_minus.altText); +} + +// ---------------------------------------------------------------------- + +void Hal::setMacro3(bool enabled) +{ + if (enabled) + { + if (*memory->in.spindleIsOn) + { + *memory->out.spindleDoIncrease = true; + } + } + else + { + *memory->out.spindleDoIncrease = false; + } + setPin(enabled, KeyCodes::Buttons.spindle_plus.altText); +} + +// ---------------------------------------------------------------------- + +void Hal::setMacro4(bool enabled) +{ + if (enabled) + { + if (*memory->in.spindleIsOn) + { + *memory->out.spindleDoDecrease = true; + } + } + else + { + *memory->out.spindleDoDecrease = false; + } + setPin(enabled, KeyCodes::Buttons.spindle_minus.altText); +} + +// ---------------------------------------------------------------------- + +void Hal::setMacro5(bool enabled) +{ + setPin(enabled, KeyCodes::Buttons.machine_home.altText); +} + +// ---------------------------------------------------------------------- + +void Hal::setMacro6(bool enabled) +{ + setPin(enabled, KeyCodes::Buttons.safe_z.altText); +} + +// ---------------------------------------------------------------------- + +void Hal::setMacro7(bool enabled) +{ + setPin(enabled, KeyCodes::Buttons.workpiece_home.altText); +} + +// ---------------------------------------------------------------------- + +void Hal::setMacro8(bool enabled) +{ + setPin(enabled, KeyCodes::Buttons.spindle_on_off.altText); +} + +// ---------------------------------------------------------------------- + +void Hal::setMacro9(bool enabled) +{ + setPin(enabled, KeyCodes::Buttons.probe_z.altText); +} + +// ---------------------------------------------------------------------- + +void Hal::setMacro10(bool enabled) +{ + enableManualMode(enabled); + setPin(enabled, KeyCodes::Buttons.macro10.text); +} + +// ---------------------------------------------------------------------- + +void Hal::setMacro11(bool enabled) +{ + setPin(enabled, KeyCodes::Buttons.reset.altText); +} + +// ---------------------------------------------------------------------- + +void Hal::setMacro12(bool enabled) +{ + setPin(enabled, KeyCodes::Buttons.stop.altText); +} + +// ---------------------------------------------------------------------- + +void Hal::setMacro13(bool enabled) +{ + setPin(enabled, KeyCodes::Buttons.start.altText); +} + +// ---------------------------------------------------------------------- + +void Hal::setMacro14(bool enabled) +{ + setPin(enabled, KeyCodes::Buttons.macro10.altText); +} + +// ---------------------------------------------------------------------- + +void Hal::setMacro15(bool enabled) +{ + setPin(enabled, KeyCodes::Buttons.manual_pulse_generator.altText); +} + +// ---------------------------------------------------------------------- + +void Hal::setMacro16(bool enabled) +{ + setPin(enabled, KeyCodes::Buttons.step_continuous.altText); +} + +// ---------------------------------------------------------------------- + +void Hal::setPin(bool enabled, size_t pinNumber, const char* pinName) +{ + *mHalCout << "hal " << pinName << ((enabled) ? " enabled" : " disabled") << " (pin # " << pinNumber << ")" + << endl; + *(memory->out.button_pin[pinNumber]) = enabled; +} + +// ---------------------------------------------------------------------- + +void Hal::setPin(bool enabled, const char* pinName) +{ + std::string fullyQualifiedPinName = std::string(mComponentPrefix) + ".button." + pinName; + assert(mButtonNameToIdx.find(fullyQualifiedPinName) != mButtonNameToIdx.end()); + size_t pinNumber = mButtonNameToIdx[fullyQualifiedPinName]; + setPin(enabled, pinNumber, pinName); +} + +// ---------------------------------------------------------------------- + +void Hal::setJogCounts(const HandWheelCounters& counters) +{ + *memory->out.axisXJogCounts = counters.counts(HandWheelCounters::CounterNameToIndex::AXIS_X); + *memory->out.axisYJogCounts = counters.counts(HandWheelCounters::CounterNameToIndex::AXIS_Y); + *memory->out.axisZJogCounts = counters.counts(HandWheelCounters::CounterNameToIndex::AXIS_Z); + *memory->out.axisAJogCounts = counters.counts(HandWheelCounters::CounterNameToIndex::AXIS_A); + *memory->out.axisBJogCounts = counters.counts(HandWheelCounters::CounterNameToIndex::AXIS_B); + *memory->out.axisCJogCounts = counters.counts(HandWheelCounters::CounterNameToIndex::AXIS_C); + if (counters.isLeadCounterActive()) + { + *memory->out.feedOverrideCounts = counters.counts(HandWheelCounters::CounterNameToIndex::LEAD); + } +} + +// ---------------------------------------------------------------------- + +void Hal::setFunction(bool enabled) +{ + setPin(enabled, KeyCodes::Buttons.function.text); +} + +// ---------------------------------------------------------------------- + +bool Hal::trySetManualMode(bool isButtonPressed) +{ + if (isButtonPressed) + { + if (!*memory->in.isModeAuto) + { + *memory->out.doModeManual = true; + return true; + } + } + else + { + *memory->out.doModeManual = false; + } + return false; +} + +// ---------------------------------------------------------------------- + +void Hal::enableManualMode(bool isRisingEdge) +{ + if (isRisingEdge) + { + if (*memory->in.isModeManual || *memory->in.isModeMdi) + { + *memory->out.doModeManual = true; + } + } + else + { + *memory->out.doModeManual = false; + } +} + +// ---------------------------------------------------------------------- + +void Hal::enableMdiMode(bool isRisingEdge) +{ + if (isRisingEdge) + { + if (*memory->in.isModeManual || *memory->in.isModeMdi) + { + *memory->out.doModeMdi = true; + } + } + else + { + *memory->out.doModeMdi = false; + } +} +} diff --git a/src/hal/user_comps/xhc-whb04b-6/hal.h b/src/hal/user_comps/xhc-whb04b-6/hal.h new file mode 100644 index 0000000000..94aa1f0a33 --- /dev/null +++ b/src/hal/user_comps/xhc-whb04b-6/hal.h @@ -0,0 +1,564 @@ +/* + Copyright (C) 2017 Raoul Rubien (github.com/rubienr) + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This program 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the program; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. + */ + +#pragma once + +// local includes +#include "pendant-types.h" + +// system includes +#include +#include +#include +#include + +// 3rd party includes + +// local library includes +#include + +// forward declarations + +namespace XhcWhb04b6 { + +// forward declarations +class MetaButtonCodes; +class KeyCodes; + + +// ---------------------------------------------------------------------- + +//! HAL memory pointers. Each pointer represents an i/o hal pin. + +class HalMemory +{ +public: + struct In + { + public: + //! to be connected to \ref halui.axis.0.pos-feedback + hal_float_t* axisXPosition{nullptr}; + //! to be connected to \ref halui.axis.1.pos-feedback + hal_float_t* axisYPosition{nullptr}; + //! to be connected to \ref halui.axis.2.pos-feedback + hal_float_t* axisZPosition{nullptr}; + //! to be connected to \ref halui.axis.3.pos-feedback + hal_float_t* axisAPosition{nullptr}; + //! to be connected to \ref halui.axis.4.pos-feedback + hal_float_t* axisBPosition{nullptr}; + //! to be connected to \ref halui.axis.5.pos-feedback + hal_float_t* axisCPosition{nullptr}; + + //! to be connected to \ref halui.axis.0.pos-relative + hal_float_t* axisXPositionRelative{nullptr}; + //! to be connected to \ref halui.axis.1.pos-relative + hal_float_t* axisYPositionRelative{nullptr}; + //! to be connected to \ref halui.axis.2.pos-relative + hal_float_t* axisZPositionRelative{nullptr}; + //! to be connected to \ref halui.axis.3.pos-relative + hal_float_t* axisAPositionRelative{nullptr}; + //! to be connected to \ref halui.axis.4.pos-relative + hal_float_t* axisBPositionRelative{nullptr}; + //! to be connected to \ref halui.axis.5.pos-relative + hal_float_t* axisCPositionRelative{nullptr}; + + //! to be connected to \ref stepgen.00.maxvel + hal_float_t* stepgenXMaxVelocity{nullptr}; + //! to be connected to \ref stepgen.01.maxvel + hal_float_t* stepgenYMaxVelocity{nullptr}; + //! to be connected to \ref stepgen.02.maxvel + hal_float_t* stepgenZMaxVelocity{nullptr}; + //! to be connected to \ref stepgen.03.maxvel + hal_float_t* stepgenAMaxVelocity{nullptr}; + //! to be connected to \ref stepgen.04.maxvel + hal_float_t* stepgenBMaxVelocity{nullptr}; + //! to be connected to \ref stepgen.05.maxvel + hal_float_t* stepgenCMaxVelocity{nullptr}; + //! to be connected to \ref stepgen.00.position-scale + hal_float_t* stepgenXPositionScale{nullptr}; + //! to be connected to \ref stepgen.01.position-scale + hal_float_t* stepgenYPositionScale{nullptr}; + //! to be connected to \ref stepgen.02.position-scale + hal_float_t* stepgenZPositionScale{nullptr}; + //! to be connected to \ref stepgen.03.position-scale + hal_float_t* stepgenAPositionScale{nullptr}; + //! to be connected to \ref stepgen.04.position-scale + hal_float_t* stepgenBPositionScale{nullptr}; + //! to be connected to \ref stepgen.05.position-scale + hal_float_t* stepgenCPositionScale{nullptr}; + + //! to be connected to \ref halui.spindle.is-on + hal_bit_t * spindleIsOn{nullptr}; + //! to be connected to \ref halui.spindle-override.value + hal_float_t* spindleOverrideValue{nullptr}; + //! To be connected to an encoded and correctly scaled value of an spindle feedback signal. + //! See also \ref encoder and \ref scale. + hal_float_t* spindleSpeedAbsRpm{nullptr}; + + //! to be connected to \ref motion.current-vel + hal_float_t* feedSpeedUps{nullptr}; + //! to be connected to \ref halui.feed-override.value + hal_float_t* feedOverrideValue{nullptr}; + + //! the minimum feed-override value when in Lead-mode, usually same as [DISPLAY]MIN_FEED_OVERRIDE + hal_float_t* feedOverrideMinValue{nullptr}; + //! the maximum feed-override value when in Lead-mode, usually same as [DISPLAY]MAX_FEED_OVERRIDE + hal_float_t* feedOverrideMaxValue{nullptr}; + + //! to be connected to \ref halui.program.is-running + hal_bit_t* isProgramRunning{nullptr}; + //! to be connected to \ref halui.program.is-paused + hal_bit_t* isProgramPaused{nullptr}; + //! to be connected to \ref halui.program.is-idle + hal_bit_t* isProgramIdle{nullptr}; + + //! to be connected to \ref halui.mode.is-auto + hal_bit_t* isModeAuto{nullptr}; + //! to be connected to \ref halui.mode.is-joint + hal_bit_t* isModeJoint{nullptr}; + //! to be connected to \ref halui.mode.is-manual + hal_bit_t* isModeManual{nullptr}; + //! to be connected to \ref halui.mode.is-mdi + hal_bit_t* isModeMdi{nullptr}; + + //! to be connected to \ref halui.estop.is-activated + hal_bit_t* isEmergencyStop{nullptr}; + + //! to be connected to \ref halui.machine.is-on + hal_bit_t* isMachineOn{nullptr}; + + In(); + }; + + struct Out + { + public: + hal_bit_t* button_pin[64] = {0}; + + //! to be connected to \ref axis.0.jog-counts + hal_s32_t* axisXJogCounts{nullptr}; + //! to be connected to \ref axis.1.jog-counts + hal_s32_t* axisYJogCounts{nullptr}; + //! to be connected to \ref axis.2.jog-counts + hal_s32_t* axisZJogCounts{nullptr}; + //! to be connected to \ref axis.3.jog-counts + hal_s32_t* axisAJogCounts{nullptr}; + //! to be connected to \ref axis.4.jog-counts + hal_s32_t* axisBJogCounts{nullptr}; + //! to be connected to \ref axis.5.jog-counts + hal_s32_t* axisCJogCounts{nullptr}; + + //! to be connected to \ref axis.0.jog-enable + hal_bit_t* axisXJogEnable{nullptr}; + //! to be connected to \ref axis.1.jog-enable + hal_bit_t* axisYJogEnable{nullptr}; + //! to be connected to \ref axis.2.jog-enable + hal_bit_t* axisZJogEnable{nullptr}; + //! to be connected to \ref axis.3.jog-enable + hal_bit_t* axisAJogEnable{nullptr}; + //! to be connected to \ref axis.4.jog-enable + hal_bit_t* axisBJogEnable{nullptr}; + //! to be connected to \ref axis.5.jog-enable + hal_bit_t* axisCJogEnable{nullptr}; + + //! to be connected to \ref axis.0.jog-scale + hal_float_t* axisXJogScale{nullptr}; + //! to be connected to \ref axis.1.jog-scale + hal_float_t* axisYJogScale{nullptr}; + //! to be connected to \ref axis.2.jog-scale + hal_float_t* axisZJogScale{nullptr}; + //! to be connected to \ref axis.3.jog-scale + hal_float_t* axisAJogScale{nullptr}; + //! to be connected to \ref axis.4.jog-scale + hal_float_t* axisBJogScale{nullptr}; + //! to be connected to \ref axis.5.jog-scale + hal_float_t* axisCJogScale{nullptr}; + + //! to be connected to \ref axis.0.jog-vel-mode + hal_bit_t* axisXSetVelocityMode{nullptr}; + //! to be connected to \ref axis.1.jog-vel-mode + hal_bit_t* axisYSetVelocityMode{nullptr}; + //! to be connected to \ref axis.2.jog-vel-mode + hal_bit_t* axisZSetVelocityMode{nullptr}; + //! to be connected to \ref axis.3.jog-vel-mode + hal_bit_t* axisASetVelocityMode{nullptr}; + //! to be connected to \ref axis.4.jog-vel-mode + hal_bit_t* axisBSetVelocityMode{nullptr}; + //! to be connected to \ref axis.5.jog-vel-mode + hal_bit_t* axisCSetVelocityMode{nullptr}; + + hal_bit_t* feedValueSelected0_001{nullptr}; + hal_bit_t* feedValueSelected0_01{nullptr}; + hal_bit_t* feedValueSelected0_1{nullptr}; + hal_bit_t* feedValueSelected1_0{nullptr}; + + //! to be connected to \ref \ref halui.feed-override.scale + hal_float_t* feedOverrideScale{nullptr}; + //! to be connected to \ref halui.feed-override.direct-value + hal_bit_t * feedOverrideDirectValue{nullptr}; + //! to be connected to \ref halui.feed-override.count-enable + hal_bit_t * feedOverrideCountEnable{nullptr}; + //! to be connected to \ref halui.feed-override.counts + hal_s32_t * feedOverrideCounts{nullptr}; + //! to be connected to \ref halui.feed-override.decrease + hal_bit_t * feedOverrideDecrease{nullptr}; + //! to be connected to \ref halui.feed-override.increase + hal_bit_t * feedOverrideIncrease{nullptr}; + + //! to be connected to \ref halui.spindle.stop + hal_bit_t* spindleStop{nullptr}; + //! to be connected to \ref halui.spindle.forward + hal_bit_t* spindleDoRunForward{nullptr}; + //! to be connected to \ref halui.spindle.reverse + hal_bit_t* spindleDoRunReverse{nullptr}; + //! to be connected to halui.spindle.decrease + hal_bit_t* spindleDoDecrease{nullptr}; + //! to be connected to halui.spindle.increase + hal_bit_t* spindleDoIncrease{nullptr}; + //! to be connected to halui.spindle-override.decrease + hal_bit_t* spindleOverrideDoDecrease{nullptr}; + //! to be connected to halui.spindle-override.increase + hal_bit_t* spindleOverrideDoIncrease{nullptr}; + + //! to be connected to \ref halui.jog-speed + hal_float_t* jogSpeedValue{nullptr}; + + //! to be connected to \ref halui.home-all + hal_bit_t* homeAll{nullptr}; + + //!to be connected to \ref halui.joint.N.select + hal_bit_t* jointXSelect{nullptr}; + //!to be connected to \ref halui.joint.N.select + hal_bit_t* jointYSelect{nullptr}; + //!to be connected to \ref halui.joint.N.select + hal_bit_t* jointZSelect{nullptr}; + //!to be connected to \ref halui.joint.N.select + hal_bit_t* jointASelect{nullptr}; + //!to be connected to \ref halui.joint.N.select + hal_bit_t* jointBSelect{nullptr}; + //!to be connected to \ref halui.joint.N.select + hal_bit_t* jointCSelect{nullptr}; + + //! reflects the pendant's idle state + hal_bit_t* isPendantSleeping{nullptr}; + //! reflects pendant's connectivity + hal_bit_t* isPendantConnected{nullptr}; + + //! to be connected to \ref halui.program.run + hal_bit_t* doRunProgram{nullptr}; + //! to be connected to \ref halui.program.pause + hal_bit_t* doPauseProgram{nullptr}; + //! to be connected to \ref halui.program.resume + hal_bit_t* doResumeProgram{nullptr}; + //! to be connected to \ref halui.program.stop + hal_bit_t* doStopProgram{nullptr}; + + //! to be connected to \ref halui.mode.auto + hal_bit_t* doModeAuto{nullptr}; + //! to be connected to \ref halui.mode.joint + hal_bit_t* doModeJoint{nullptr}; + //! to be connected to \ref halui.mode.manual + hal_bit_t* doModeManual{nullptr}; + //! to be connected to \ref halui.mode.mdi + hal_bit_t* doModeMdi{nullptr}; + + //! to be connected to \ref halui.estop.activate + hal_bit_t* doEmergencyStop{nullptr}; + //! to be connected to \ref halui.estop.reset + hal_bit_t* resetEmergencyStop{nullptr}; + + //! to be connected to \ref halui.machine.on + hal_bit_t* doMachineOn{nullptr}; + //! to be connected to \ref halui.machine.off + hal_bit_t* doMachineOff{nullptr}; + + Out(); + }; + + In in; + Out out; + + HalMemory(); + ~HalMemory(); +}; + +// ---------------------------------------------------------------------- + +//! HAL and related parameters +class Hal +{ +public: + Hal(); + ~Hal(); + //! Initializes HAL memory and pins according to simulation mode. Must not be called more than once. + //! If \ref mIsSimulationMode is true heap memory will be used, shared HAL memory otherwise. + //! \ref setIsSimulationMode() must be set before accordingly + void init(const MetaButtonCodes* metaButtons, const KeyCodes& codes); + //! \return true if void init(const MetaButtonCodes*, const KeyCodes&) has been called beforehand, + //! false otherwise + bool isInitialized(); + //! \return true if simulation mode is enabled, false otherwise + bool isSimulationModeEnabled() const; + //! indicates the program has been invoked in hal mode or normal + void setSimulationMode(bool isSimulationMode); + int getHalComponentId() const; + const char* getHalComponentName() const; + //! Enables verbose hal output. + //! \param enable true to enable hal messages, disable otherwise + void setEnableVerbose(bool enable); + //! If set indicates that no other axis is active. + //! \param enabled true if no axis is active, false otherwise + void setNoAxisActive(bool enabled); + //! Sets the A axis to active or disables the same. + //! \param enabled true if axis should be the one and only active + void setAxisXActive(bool enabled); + //! \sa setAxisXActive(bool) + void setAxisYActive(bool enabled); + //! \sa setAxisXActive(bool) + void setAxisZActive(bool enabled); + //! \sa setAxisXActive(bool) + void setAxisAActive(bool enabled); + //! \sa setAxisXActive(bool) + void setAxisBActive(bool enabled); + //! \sa setAxisXActive(bool) + void setAxisCActive(bool enabled); + + //! Sets the new feed rate. The step mode must be set accordingly. + //! \param feedRate the new feed rate independent of step mode + void setStepSize(const hal_float_t& feedRate); + //! If lead is active. + void setLead(); + //! Sets the hal state of the respective pin (reset). Usually called in case the reset + //! button is pressed or released. The pin should be connected to \ref halui.estop.activate. + //! \param enabled the new pin value, (true if the button was pressed, false otherwise) + //! \ref Hal::halInit(const WhbSoftwareButton* , size_t , const WhbKeyCodes&) + //! \sa doEmergencyStop + void setReset(bool enabled); + //! \sa setReset(bool) + void setStop(bool enabled); + //! Toggles the start/pause/resume states. + //! \param enabled true if start/resume is requested, false otherwise + //! \param pinNumber \sa setReset(bool, size_t) + void setStart(bool enabled); + + //! Returns the machine status. + //! \sa HalMemory::In::isMachineOn + //! \return true if machine is on, false otherwise + bool getIsMachineOn() const; + + //! Writes the pendant sleeping status to hal. + //! \sa HalMemory::Out::isPendantSleeping + //! \param isSleeping true if sleeping, false otherwise + void setIsPendantSleeping(bool isSleeping); + //! Returns the pendant sleep state as written to hal. + //! \sa setIsPendantSleeping(bool) + bool getIsPendantSleeping() const; + //! Writes the pendant connection status to hal. + //! \sa HalMemory::Out::isPendantConnected + //! \param isConnected true if connected, false otherwise + void setIsPendantConnected(bool isConnected); + //! Returns the pendant connection state as written to hal. + //! \sa setIsPendantConnected(bool) + //! \return true if connected, false otherwise + bool getIsPendantConnected() const; + + //! \sa setReset(bool, size_t) + void setFeedPlus(bool enabled); + //! \sa setReset(bool, size_t) + void setFeedMinus(bool enabled); + //! Returns the current feed override value. + //! \sa Hal::In::feedOverrideValue + //! \return the current feed override value v: 0 <= v <= 1 + hal_float_t getFeedOverrideValue() const; + //! \sa Hal::In::feedOverrideMinValue + //! \return the currently set minimum feed override value, i.e. 0.2 is equivalent to 20% + hal_float_t getFeedOverrideMinValue() const; + //! \sa Hal::In::feedOverrideMaxValue + //! \return the currently set maximum feed override value, i.e. 1.5 is equivalent to 150% + hal_float_t getFeedOverrideMaxValue() const; + //! \xrefitem HalMemory::Out::feedOverrideCounts setter + void setFeedOverrideCounts(hal_s32_t counts); + //! \xrefitem HalMemory::Out::feedOverrideScale setter + void setFeedOverrideScale(hal_float_t scale); + //! \xrefitem HalMemory::Out::feedOverrideDirectValue setter + void setFeedOverrideCountEnable(bool enabled); + //! \xrefitem HalMemory::Out::feedOverrideDirectValue setter + void setFeedOverrideDirectValue(bool enabled); + //! Returns the feed speed. + //! \return the feed speed in unis per second + hal_float_t getFeedUps() const; + + //! Propagates the feed value 0.001 selection state to hal. + //! \sa Hal::Out::feedValueSelected0_001 + //! \param selected true if 0.001 is selected, false otherwise + void setFeedValueSelected0_001(bool selected); + //! Propagates the feed value 0.01 selection state to hal. + //! \sa Hal::Out::feedValueSelected0_01 + //! \param selected true if 0.01 is selected, false otherwise + void setFeedValueSelected0_01(bool selected); + //! Propagates the feed value 0.1 selection state to hal. + //! \sa Hal::Out::feedValueSelected0_1 + //! \param selected true if 0.1 is selected, false otherwise + void setFeedValueSelected0_1(bool selected); + //! Propagates the feed value 1.0 selection state to hal. + //! \sa Hal::Out::feedValueSelected1_0 + //! \param selected true if 1.0 is selected, false otherwise + void setFeedValueSelected1_0(bool selected); + + //! Returns the spindle speed. + //! \return the spindle speed in rounds per second + hal_float_t getSpindleSpeedAbsRpm() const; + //! \sa setReset(bool, size_t) + void setSpindlePlus(bool enabled); + //! \sa setReset(bool, size_t) + void setSpindleMinus(bool enabled); + //! \sa setReset(bool, size_t) + void setFunction(bool enabled); + //! \sa setReset(bool, size_t) + void setMachineHome(bool enabled); + //! \sa setReset(bool, size_t) + void setSafeZ(bool enabled); + //! \sa setReset(bool, size_t) + void setWorkpieceHome(bool enabled); + //! \sa setReset(bool, size_t) + void toggleSpindleDirection(bool isButtonPressed); + //! \sa setReset(bool, size_t) + void toggleSpindleOnOff(bool isButtonPressed); + //! \sa setReset(bool, size_t) + void setProbeZ(bool enabled); + //! \sa setReset(bool, size_t) + void setContinuousMode(bool enabled); + //! \sa setReset(bool, size_t) + void setStepMode(bool enabled); + //! Sets the hal state of the macro pin. Usually called in case the macro + //! button is pressed or released. A macro button can be any button + //! when pressed together with the modifier key. + //! \param enabled the new pin value, (true if the button was pressed, false otherwise) + //! \param pinNumber The pin number in \ref HalMemory. + //! \sa setReset(bool, size_t) + void setMacro1(bool enabled); + //! \sa setMacro1(bool, size_t) + void setMacro2(bool enabled); + //! \sa setMacro1(bool, size_t) + void setMacro3(bool enabled); + //! \sa setMacro1(bool, size_t) + void setMacro4(bool enabled); + //! \sa setMacro1(bool) + void setMacro5(bool enabled); + //! \sa setMacro1(bool, size_t) + void setMacro6(bool enabled); + //! \sa setMacro1(bool, size_t) + void setMacro7(bool enabled); + //! \sa setMacro1(bool, size_t) + void setMacro8(bool enabled); + //! \sa setMacro1(bool, size_t) + void setMacro9(bool enabled); + //! \sa setMacro1(bool, size_t) + void setMacro10(bool enabled); + //! \sa setMacro1(bool, size_t) + void setMacro11(bool enabled); + //! \sa setMacro1(bool, size_t) + void setMacro12(bool enabled); + //! \sa setMacro1(bool, size_t) + void setMacro13(bool enabled); + //! \sa setMacro1(bool, size_t) + void setMacro14(bool enabled); + //! \sa setMacro1(bool, size_t) + void setMacro15(bool enabled); + //! \sa setMacro1(bool, size_t) + void setMacro16(bool enabled); + + //! Writes the corresponding counter to to each axis' count. + //! \param counters values to propagate to each axis + void setJogCounts(const HandWheelCounters& counters); + + //! Returns the axis position. + //! \param absolute true absolute, false relative + //! \return the absolute or relative position in machine units + hal_float_t getAxisXPosition(bool absolute) const; + //! \xrefitem getAxisXPosition(bool) + hal_float_t getAxisYPosition(bool absolute) const; + //! \xrefitem getAxisXPosition(bool) + hal_float_t getAxisZPosition(bool absolute) const; + //! \xrefitem getAxisXPosition(bool) + hal_float_t getAxisAPosition(bool absolute) const; + //! \xrefitem getAxisXPosition(bool) + hal_float_t getAxisBPosition(bool absolute) const; + //! \xrefitem getAxisXPosition(bool) + hal_float_t getAxisCPosition(bool absolute) const; + + //! Requests manual mode if in MDI mode. Skips request if in AUTO mode. + //! \param isButtonPressed true on button press, false on release + //! \return true on successful request and if isButtonPressed == true, false otherwise + bool trySetManualMode(bool isButtonPressed); + +private: + HalMemory* memory{nullptr}; + std::map mButtonNameToIdx; + bool mIsSimulationMode{false}; + bool mIsInitialized{false}; + const char* mName{"xhc-whb04b-6"}; + const char* mComponentPrefix{"whb"}; + int mHalCompId{-1}; + std::ostream mDevNull{nullptr}; + std::ostream* mHalCout{nullptr}; + HandwheelStepmodes::Mode mStepMode; + bool mIsSpindleDirectionForward{true}; + + //! //! Allocates new hal_bit_t pin according to \ref mIsSimulationMode. If \ref mIsSimulationMode then + //! mallocs memory, hal_pin_bit_new allocation otherwise. + //! \param pin_name the pin name when registered to hal + //! \param ptr will point to the allocated memory + //! \param s size in bytes + //! \return != 0 on error, 0 otherwise + int newSimulatedHalPin(char* pin_name, void** ptr, int s); + //! \sa newBitHalPin(hal_pin_dir_t, hal_bit_t**, int, const char*, ...) + int newHalFloat(hal_pin_dir_t direction, hal_float_t** ptr, int componentId, const char* fmt, ...); + //! \sa newBitHalPin(hal_pin_dir_t, hal_bit_t**, int, const char*, ...) + int newHalSigned32(hal_pin_dir_t direction, hal_s32_t** ptr, int componentId, const char* fmt, ...); + //! \sa newBitHalPin(hal_pin_dir_t, hal_bit_t**, int, const char*, ...) + int newHalUnsigned32(hal_pin_dir_t direction, hal_u32_t** ptr, int componentId, const char* fmt, ...); + //! \param direction module input or output + //! \param ptr will point to the allocated memory + //! \param componentId hal id + //! \param fmt the pin name when registered to hal + //! \param ... va args + //! \return != 0 on error, 0 otherwise + int newHalBit(hal_pin_dir_t direction, hal_bit_t** ptr, int componentId, const char* fmt, ...); + //! allocates new hal pin according to \ref mIsSimulationMode + //! \param pin pointer reference to the memory to be fred + //! \post pin == nullptr + void freeSimulatedPin(void** pin); + //! \param enabled the new pin value + //! \param pinNumber the pin number to set the value + //! \param pinName arbitrary name for logging + void setPin(bool enabled, size_t pinNumber, const char* pinName); + //! \sa setPin(bool, size_t, const char*) + void setPin(bool enabled, const char* pinName); + //! Toggles program states; running, paused, resume. + //! Should be called each time after setStart(true) (\sa setStart(bool)) to stay in sync. + void toggleStartResumeProgram(); + + void clearStartResumeProgramStates(); + + void enableManualMode(bool isRisingEdge); + + void enableMdiMode(bool isRisingEdge); +}; +} diff --git a/src/hal/user_comps/xhc-whb04b-6/main.cc b/src/hal/user_comps/xhc-whb04b-6/main.cc new file mode 100755 index 0000000000..d65fb4a2c3 --- /dev/null +++ b/src/hal/user_comps/xhc-whb04b-6/main.cc @@ -0,0 +1,223 @@ +/* + XHC-WHB04B-6 Wireless MPG pendant LinuxCNC HAL module for LinuxCNC. + Based on XHC-HB04. + + Copyright (C) 2017 Raoul Rubien (github.com/rubienr). + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This program 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the program; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. + */ + +// system includes +#include +#include +#include +#include + +// 3rd party includes +#include + +// local library includes + +// local includes +#include "./xhc-whb04b6.h" + +using std::endl; + +// forward declarations + +// globals +//! link object for signal handler +XhcWhb04b6::XhcWhb04b6Component* WhbComponent{nullptr}; + +// ---------------------------------------------------------------------- + +static int printUsage(const char* programName, const char* deviceName, bool isError = false) +{ + std::ostream* os = &std::cout; + if (isError) + { + os = &std::cerr; + } + *os << programName << " version " << PACKAGE_VERSION << " " << __DATE__ << " " << __TIME__ << endl + << endl + << "SYNOPSIS" << endl + << " " << programName << " [-h | --help] | [-H] [OPTIONS] " << endl + << endl + << "NAME" << endl + << " " << programName << " - jog dial HAL component for the " << deviceName << " device" << endl + << endl + << "DESCRIPTION" << endl + << " " << programName << " is a HAL component that receives events from the " << deviceName << " device " + << "and exposes them to HAL via HAL pins." << endl + << endl + << "OPTIONS" << endl + << " -h, --help" << endl + << " Prints the synopsis and the most commonly used commands." << endl + << endl + << " -H " << endl + << " Run " << programName << " in HAL-mode instead of interactive mode. When in HAL mode " + << "commands from device will be exposed to HAL's shred memory. Interactive mode is useful for " + << "testing device connectivity and debugging." << endl + << endl + << " -t" << endl + << " Wait with timeout for USB device then proceed, exit otherwise. Without -t the timeout is " + << "implicitly infinite." << endl + << endl + << " -u, -U" << endl + << " Show received data from device. With -U received and transmitted data will be printed. " + << "Output is prefixed with \"usb\"." << endl + << endl + << " -p" << endl + << " Show HAL pins and HAL related messages. Output is prefixed with \"hal\"." << endl + << endl + << " -e" << endl + << " Show captured events such as button pressed/released, jog dial, axis rotary button, and " + "feed rotary button event. Output is prefixed with \"event\"." << endl + << endl + << " -a" << endl + << " Enable all logging facilities without explicitly specifying each." << endl + //! this feature must be removed when checksum check is implemented + << endl + << " -c" << endl + << " Enable checksum output which is necessary for debugging the checksum generator function. Do not rely " + "on this feature since it will be removed once the generator is implemented." << endl + << endl + << " -n " << endl + << " Force being silent and not printing any output except of errors. This will also inhibit messages " + "prefixed with \"init\"." << endl + << endl + << "EXAMPLES" << endl + << programName << " -ue" << endl + << " Prints incoming USB data transfer and generated key pressed/released events." << endl + << endl + << programName << " -p" << endl + << " Prints hal pin names and events distributed to HAL memory." << endl + << endl + << programName << " -Ha" << endl + << " Start in HAL mode and avoid output, except of errors." << endl + << endl + << "AUTHORS" << endl + << " This component was started by Raoul Rubien (github.com/rubienr) based on predecessor " + "device's component xhc-hb04.cc. https://github.com/machinekit/machinekit/graphs/contributors " + "gives you a more complete list of contributors." + << endl; + + if (isError) + { + return EXIT_FAILURE; + } + return EXIT_SUCCESS; +} + +// ---------------------------------------------------------------------- +//! called on program termination requested +static void quit(int signal) +{ + if (WhbComponent != nullptr) + { + WhbComponent->requestTermination(signal); + } +} + +// ---------------------------------------------------------------------- + +//! registers signal handler +void registerSignalHandler() +{ + signal(SIGINT, quit); + signal(SIGTERM, quit); +} + +// ---------------------------------------------------------------------- + +bool parseFloat(const char* str, float& out) +{ + std::istringstream iss(str); + if (!(iss >> out)) + { + std::cerr << "no valid value specified: " << str << endl; + return false; + } + return true; +} + +// ---------------------------------------------------------------------- + +int main(int argc, char** argv) +{ + WhbComponent = new XhcWhb04b6::XhcWhb04b6Component(); + + const char* optargs = "phaeHuctnUs:v:"; + for (int opt = getopt(argc, argv, optargs); opt != -1; opt = getopt(argc, argv, optargs)) + { + switch (opt) + { + case 'H': + WhbComponent->setSimulationMode(false); + break; + case 't': + WhbComponent->setWaitWithTimeout(3); + break; + case 'e': + WhbComponent->setEnableVerboseKeyEvents(true); + break; + case 'u': + WhbComponent->enableVerboseInit(true); + WhbComponent->enableVerboseRx(true); + break; + case 'U': + WhbComponent->enableVerboseInit(true); + WhbComponent->enableVerboseRx(true); + WhbComponent->enableVerboseTx(true); + break; + case 'p': + WhbComponent->enableVerboseInit(true); + WhbComponent->enableVerboseHal(true); + break; + case 'a': + WhbComponent->enableVerboseInit(true); + WhbComponent->setEnableVerboseKeyEvents(true); + WhbComponent->enableVerboseRx(true); + WhbComponent->enableVerboseTx(true); + WhbComponent->enableVerboseHal(true); + break; + case 'c': + WhbComponent->enableCrcDebugging(true); + break; + case 'n': + break; + case 'h': + return printUsage(basename(argv[0]), WhbComponent->getName()); + break; + default: + return printUsage(basename(argv[0]), WhbComponent->getName(), true); + break; + } + } + + registerSignalHandler(); + + WhbComponent->run(); + + //! hotfix for https://github.com/machinekit/machinekit/issues/1266 + if (WhbComponent->isSimulationModeEnabled()) + { + google::protobuf::ShutdownProtobufLibrary(); + } + + delete (WhbComponent); + return 0; +} diff --git a/src/hal/user_comps/xhc-whb04b-6/pendant-types.cc b/src/hal/user_comps/xhc-whb04b-6/pendant-types.cc new file mode 100644 index 0000000000..e82e2b5674 --- /dev/null +++ b/src/hal/user_comps/xhc-whb04b-6/pendant-types.cc @@ -0,0 +1,159 @@ +/* + Copyright (C) 2018 Raoul Rubien (github.com/rubienr) + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This program 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the program; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. + */ + +#include "pendant-types.h" + +// system includes +#include +#include +#include + +// 3rd party includes + +// local library includes + +// forward declarations + +namespace XhcWhb04b6 { + +// ---------------------------------------------------------------------- + +void HandWheelCounters::count(int8_t delta) +{ + auto idx = mActiveAxisCounter; + if (mIsLeadCounterActive) + { + idx = CounterNameToIndex::LEAD; + } + + if (CounterNameToIndex::UNDEFINED == idx) + { + return; + } + + int32_t& counter = mCounters[static_cast::type>(idx)]; + int32_t tmp = counter + delta; + + if (mIsLeadCounterActive) + { + tmp = (tmp < mLeadMinValue) ? mLeadMinValue : tmp; + tmp = (tmp > mLeadMaxValue) ? mLeadMaxValue : tmp; + } + + counter = tmp; +} + +// ---------------------------------------------------------------------- + +HandWheelCounters::HandWheelCounters() +{ + mCounters[static_cast::type>(CounterNameToIndex::LEAD)] = 100; +} + +// ---------------------------------------------------------------------- + +int32_t HandWheelCounters::counts() const +{ + if (mIsLeadCounterActive) + { + auto idx = static_cast::type>(CounterNameToIndex::LEAD); + return mCounters[idx]; + } + else + { + assert(mActiveAxisCounter != CounterNameToIndex::UNDEFINED); + auto idx = static_cast::type>(mActiveAxisCounter); + return mCounters[idx]; + } +} + +// ---------------------------------------------------------------------- + +int32_t HandWheelCounters::counts(CounterNameToIndex counterName) const +{ + auto idx = static_cast::type>(counterName); + return mCounters[idx]; +} + +// ---------------------------------------------------------------------- + +void HandWheelCounters::setActiveCounter(CounterNameToIndex activeMode) +{ + mActiveAxisCounter = activeMode; +} + +// ---------------------------------------------------------------------- + +HandWheelCounters::CounterNameToIndex HandWheelCounters::activeCounter() const +{ + return mActiveAxisCounter; +} + +// ---------------------------------------------------------------------- + +bool HandWheelCounters::isLeadCounterActive() const +{ + return mIsLeadCounterActive; +} + +// ---------------------------------------------------------------------- + +void HandWheelCounters::enableLeadCounter(bool isEnabled) +{ + mIsLeadCounterActive = isEnabled; +} + +// ---------------------------------------------------------------------- + +void HandWheelCounters::setLeadValueLimit(int32_t min, int32_t max) +{ + mLeadMinValue = min; + mLeadMaxValue = max; +} + +// ---------------------------------------------------------------------- + +std::ostream& operator<<(std::ostream& os, const HandWheelCounters& data) +{ + std::ios init(NULL); + init.copyfmt(os); + if (data.isLeadCounterActive()) + { + os << "{counts=" << data.counts() + << " activeCounter=LEAD" + << " isLeadActive=" << data.isLeadCounterActive() << "}"; + } + else if (HandWheelCounters::CounterNameToIndex::UNDEFINED == data.activeCounter()) + { + os << "{counts=NA" + << " activeCounter=UNDEFINED" + << " isLeadActive=" << data.isLeadCounterActive() << "}"; + } + else + { + os << "{counts=" << data.counts() + << " activeCounter=" + << static_cast(data.activeCounter()) + << " isLeadActive=" << data.isLeadCounterActive() << "}"; + } + + os.copyfmt(init); + return os; +} +} diff --git a/src/hal/user_comps/xhc-whb04b-6/pendant-types.h b/src/hal/user_comps/xhc-whb04b-6/pendant-types.h new file mode 100644 index 0000000000..e5b449e65d --- /dev/null +++ b/src/hal/user_comps/xhc-whb04b-6/pendant-types.h @@ -0,0 +1,99 @@ +/* + Copyright (C) 2017 Raoul Rubien (github.com/rubienr) + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This program 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the program; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. + */ + +#pragma once + +// system includes +#include +#include +#include + +// 3rd party includes + +// local library includes + +// forward declarations + + +namespace XhcWhb04b6 { + +// ---------------------------------------------------------------------- + +class HandwheelStepmodes +{ +public: + enum class Mode : uint8_t + { + CONTINUOUS = 0, + STEP = 1, + //LEAD = 2, // remove, unused + MODES_COUNT = 2 + }; +}; + +// ---------------------------------------------------------------------- + +class HandWheelCounters +{ +public: + + enum class CounterNameToIndex : uint8_t + { + AXIS_X, + AXIS_Y, + AXIS_Z, + AXIS_A, + AXIS_B, + AXIS_C, + LEAD, + COUNTERS_COUNT, + UNDEFINED + }; + + HandWheelCounters(); + + void count(int8_t delta); + //! Return the currently active counter which is in-/decreased by \xrefitem count(uint8_t). + //! The current counter mode is set via \xrefitem setModeActive(CounterNameToIndex). + //! \return the accumulated counter + int32_t counts() const; + //! Returns the counter which is in-/decreased by \xrefitem count(uint8_t). + //! \param counterName the counter value to return + //! \return the accumulated counter + int32_t counts(CounterNameToIndex counterName) const; + void setActiveCounter(CounterNameToIndex activeMode); + CounterNameToIndex activeCounter() const; + bool isLeadCounterActive() const; + void enableLeadCounter(bool isEnabled); + void setLeadValueLimit(int32_t min, int32_t max); + +protected: + bool mIsLeadCounterActive{false}; + CounterNameToIndex mActiveAxisCounter{HandWheelCounters::CounterNameToIndex::UNDEFINED}; + int32_t mCounters[static_cast::type>(CounterNameToIndex::COUNTERS_COUNT)]{ + 0 + }; + int32_t mLeadMinValue{0}; + int32_t mLeadMaxValue{150}; + +private: +}; + +std::ostream& operator<<(std::ostream& os, const HandWheelCounters& data); +} diff --git a/src/hal/user_comps/xhc-whb04b-6/pendant.cc b/src/hal/user_comps/xhc-whb04b-6/pendant.cc new file mode 100644 index 0000000000..b1cf8b6fe4 --- /dev/null +++ b/src/hal/user_comps/xhc-whb04b-6/pendant.cc @@ -0,0 +1,1849 @@ +/* + Copyright (C) 2017 Raoul Rubien (github.com/rubienr) + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This program 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the program; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. + */ + +#include "pendant.h" + +// system includes +#include +#include +#include +#include +#include +#include + +// 3rd party includes + +// local library includes + +// local includes +#include "./hal.h" +#include "./xhc-whb04b6.h" +#include "./usb.h" + +using std::endl; + +namespace XhcWhb04b6 { + +// ---------------------------------------------------------------------- + +const ButtonsCode KeyCodes::Buttons; +const MetaButtonsCodes KeyCodes::Meta(Buttons); +const AxisRotaryButtonCodes KeyCodes::Axis; +const FeedRotaryButtonCodes KeyCodes::Feed; + +// ---------------------------------------------------------------------- + +KeyEventListener::~KeyEventListener() +{ +} + +// ---------------------------------------------------------------------- + +HandwheelStepModeStepSize::HandwheelStepModeStepSize() : + mSequence{0.001, 0.01, 0.1, 1, 0, 0, 0} +{ +} + +// ---------------------------------------------------------------------- + +HandwheelStepModeStepSize::~HandwheelStepModeStepSize() +{ +} + +// ---------------------------------------------------------------------- + +float HandwheelStepModeStepSize::getStepSize(PositionNameIndex buttonPosition) const +{ + return mSequence[static_cast(buttonPosition)]; +} + +// ---------------------------------------------------------------------- + +bool HandwheelStepModeStepSize::isPermitted(PositionNameIndex buttonPosition) const +{ + return (getStepSize(buttonPosition) > 0); +} + +// ---------------------------------------------------------------------- + +HandwheelContinuousModeStepSize::HandwheelContinuousModeStepSize() : + mSequence{2, 5, 10, 30, 60, 100, 0} +{ +} + +// ---------------------------------------------------------------------- + +HandwheelContinuousModeStepSize::~HandwheelContinuousModeStepSize() +{ +} + +// ---------------------------------------------------------------------- + +float HandwheelContinuousModeStepSize::getStepSize(PositionNameIndex buttonPosition) const +{ + return mSequence[static_cast(buttonPosition)]; +} + +// ---------------------------------------------------------------------- + +bool HandwheelContinuousModeStepSize::isPermitted(PositionNameIndex buttonPosition) const +{ + return (getStepSize(buttonPosition) > 0); +} + +// ---------------------------------------------------------------------- + +HandwheelLeadModeStepSize::HandwheelLeadModeStepSize() : + mSequence{0, 0, 0, 0, 0, 0, 0.01} +{ +} + +// ---------------------------------------------------------------------- + +HandwheelLeadModeStepSize::~HandwheelLeadModeStepSize() +{ +} + +// ---------------------------------------------------------------------- + +float HandwheelLeadModeStepSize::getStepSize(PositionNameIndex buttonPosition) const +{ + return mSequence[static_cast(buttonPosition)]; +} + +// ---------------------------------------------------------------------- + +bool HandwheelLeadModeStepSize::isPermitted(PositionNameIndex buttonPosition) const +{ + return (buttonPosition == PositionNameIndex::LEAD); +} + +// ---------------------------------------------------------------------- + +KeyCode::KeyCode(uint8_t code, const char* text, const char* altText) : + code(code), + text(text), + altText(altText) +{ +} + +// ---------------------------------------------------------------------- + +KeyCode::KeyCode(const KeyCode& other) : + code(other.code), + text(other.text), + altText(other.altText) +{ +} + +// ---------------------------------------------------------------------- + +bool KeyCode::operator==(const KeyCode& other) const +{ + return ((code == other.code) && (text == other.text) && (altText == other.altText)); +} + +// ---------------------------------------------------------------------- + +bool KeyCode::operator!=(const KeyCode& other) const +{ + return !(*this == other); +} + +// ---------------------------------------------------------------------- + +std::ostream& operator<<(std::ostream& os, const KeyCode& data) +{ + std::ios init(NULL); + init.copyfmt(os); + + os << std::hex << std::setfill('0') << "{code=0x" << std::setw(2) << static_cast(data.code) + << " text='" << data.text << "'" + << " altText='" << data.altText << "'}"; + + os.copyfmt(init); + return os; +} + +// ---------------------------------------------------------------------- + +MetaButtonCodes::MetaButtonCodes(const KeyCode& key, const KeyCode& modifier) : + key(key), + modifier(modifier) +{ +} + +// ---------------------------------------------------------------------- + +MetaButtonCodes::~MetaButtonCodes() +{ +} + +// ---------------------------------------------------------------------- + +std::ostream& operator<<(std::ostream& os, const MetaButtonCodes& data) +{ + std::ios init(NULL); + init.copyfmt(os); + os << "{key=" << data.key << " modifier=" << data.modifier << "}"; + os.copyfmt(init); + return os; +} + +// ---------------------------------------------------------------------- + +bool MetaButtonCodes::containsKeys(const KeyCode& key, const KeyCode& modifier) const +{ + return (this->key.code == key.code) && (this->modifier.code == modifier.code); +} + +// ---------------------------------------------------------------------- + +bool MetaButtonCodes::operator==(const MetaButtonCodes& other) const +{ + return (key == other.key) && (modifier == other.modifier); +} + +// ---------------------------------------------------------------------- + +bool MetaButtonCodes::operator!=(const MetaButtonCodes& other) const +{ + return !(*this == other); +} + +// ---------------------------------------------------------------------- + +MetaButtonsCodes::MetaButtonsCodes(const ButtonsCode& buttons) : + reset(buttons.reset, buttons.undefined), + macro11(buttons.reset, buttons.function), + stop(buttons.stop, buttons.undefined), + macro12(buttons.stop, buttons.function), + start(buttons.start, buttons.undefined), + macro13(buttons.start, buttons.function), + feed_plus(buttons.feed_plus, buttons.undefined), + macro1(buttons.feed_plus, buttons.function), + feed_minus(buttons.feed_minus, buttons.undefined), + macro2(buttons.feed_minus, buttons.function), + spindle_plus(buttons.spindle_plus, buttons.undefined), + macro3(buttons.spindle_plus, buttons.function), + spindle_minus(buttons.spindle_minus, buttons.undefined), + macro4(buttons.spindle_minus, buttons.function), + machine_home(buttons.machine_home, buttons.undefined), + macro5(buttons.machine_home, buttons.function), + safe_z(buttons.safe_z, buttons.undefined), + macro6(buttons.safe_z, buttons.function), + workpiece_home(buttons.workpiece_home, buttons.undefined), + macro7(buttons.workpiece_home, buttons.function), + spindle_on_off(buttons.spindle_on_off, buttons.undefined), + macro8(buttons.spindle_on_off, buttons.function), + function(buttons.function, buttons.undefined), + probe_z(buttons.probe_z, buttons.undefined), + macro9(buttons.probe_z, buttons.function), + macro10(buttons.macro10, buttons.undefined), + macro14(buttons.macro10, buttons.function), + manual_pulse_generator(buttons.manual_pulse_generator, buttons.undefined), + macro15(buttons.manual_pulse_generator, buttons.function), + step_continuous(buttons.step_continuous, buttons.undefined), + macro16(buttons.step_continuous, buttons.function), + undefined(buttons.undefined, buttons.undefined), + buttons{ + {&reset}, + {¯o11}, + {&stop}, + {¯o12}, + {&start}, + {¯o13}, + {&feed_plus}, + {¯o1}, + {&feed_minus}, + {¯o2}, + {&spindle_plus}, + {¯o3}, + {&spindle_minus}, + {¯o4}, + {&machine_home}, + {¯o5}, + {&safe_z}, + {¯o6}, + {&workpiece_home}, + {¯o7}, + {&spindle_on_off}, + {¯o8}, + {&function}, + {&probe_z}, + {¯o9}, + {¯o10}, + {¯o14}, + {&manual_pulse_generator}, + {¯o15}, + {&step_continuous}, + {¯o16}, + {&undefined} + } +{ +} + +// ---------------------------------------------------------------------- + +const MetaButtonCodes& MetaButtonsCodes::find(const KeyCode& keyCode, const KeyCode& modifierCode) const +{ + + std::function comparator = [&keyCode, &modifierCode]( + const MetaButtonCodes* metaButton) + { + return metaButton->containsKeys(keyCode, modifierCode); + }; + + std::list::const_iterator button = std::find_if(buttons.begin(), buttons.end(), comparator); + + if (button == buttons.end()) + { + std::cerr << "failed to find metaButton={ keyCode={" << keyCode << "} modifierCode={" << modifierCode << "}}" + << endl; + } + assert(button != buttons.end()); + + return **button; +} + +// ---------------------------------------------------------------------- + +MetaButtonsCodes::~MetaButtonsCodes() +{ +} + +// ---------------------------------------------------------------------- + +Button::Button(const KeyCode& key) : + mKey(&key) +{ +} + +// ---------------------------------------------------------------------- + +Button::~Button() +{ +} + +// ---------------------------------------------------------------------- + +Button& Button::operator=(const Button& other) +{ + mKey = other.mKey; + return *this; +} + +// ---------------------------------------------------------------------- + +AxisRotaryButtonCodes::AxisRotaryButtonCodes() : + off(0x06, "OFF", ""), + x(0x11, "X", ""), + y(0x12, "Y", ""), + z(0x13, "Z", ""), + a(0x14, "A", ""), + b(0x15, "B", ""), + c(0x16, "C", ""), + undefined(0x00, "", ""), + codeMap{ + {off.code, &off}, + {x.code, &x}, + {y.code, &y}, + {z.code, &z}, + {a.code, &a}, + {b.code, &b}, + {c.code, &c}, + {undefined.code, &undefined} + } +{ +} + +// ---------------------------------------------------------------------- + +FeedRotaryButtonCodes::FeedRotaryButtonCodes() : + speed_0_001(0x0d, "0.001", "2%"), + speed_0_01(0x0e, "0.01", "5%"), + speed_0_1(0x0f, "0.1", "10%"), + speed_1(0x10, "1", "30%"), + percent_60(0x1a, "", "60%"), + percent_100(0x1b, "", "100%"), + lead(0x1c, "Lead", ""), + undefined(0x00, "", ""), + codeMap{ + {speed_0_001.code, &speed_0_001}, + {speed_0_01.code, &speed_0_01}, + {speed_0_1.code, &speed_0_1}, + {speed_1.code, &speed_1}, + {percent_60.code, &percent_60}, + {percent_100.code, &percent_100}, + {lead.code, &lead}, + {undefined.code, &undefined} + } +{ +} + +// ---------------------------------------------------------------------- + +ButtonsCode::ButtonsCode() : + reset(0x01, "reset", "macro-11"), + stop(0x02, "stop", "macro-12"), + start(0x03, "start-pause", "macro-13"), + feed_plus(0x04, "feed-plus", "macro-1"), + feed_minus(0x05, "feed-minus", "macro-2"), + spindle_plus(0x06, "spindle-plus", "macro-3"), + spindle_minus(0x07, "spindle-minus", "macro-4"), + machine_home(0x08, "m-home", "macro-5"), + safe_z(0x09, "safe-z", "macro-6"), + workpiece_home(0x0a, "w-home", "macro-7"), + spindle_on_off(0x0b, "s-on-off", "macro-8"), + function(0x0c, "fn", ""), + probe_z(0x0d, "probe-z", "macro-9"), + macro10(0x10, "macro-10", "macro-14"), + manual_pulse_generator(0x0e, "mode-continuous", "macro-15"), + step_continuous(0x0f, "mode-step", "macro-16"), + undefined(0x00, "", ""), + codeMap{ + {reset.code, &reset}, + {stop.code, &stop}, + {start.code, &start}, + {feed_plus.code, &feed_plus}, + {feed_minus.code, &feed_minus}, + {spindle_plus.code, &spindle_plus}, + {spindle_minus.code, &spindle_minus}, + {machine_home.code, &machine_home}, + {safe_z.code, &safe_z}, + {workpiece_home.code, &workpiece_home}, + {spindle_on_off.code, &spindle_on_off}, + {function.code, &function}, + {probe_z.code, &probe_z}, + {macro10.code, ¯o10}, + {manual_pulse_generator.code, &manual_pulse_generator}, + {step_continuous.code, &step_continuous}, + {undefined.code, &undefined} + } +{ +} + +// ---------------------------------------------------------------------- + +const KeyCode& ButtonsCode::getKeyCode(uint8_t keyCode) const +{ + const KeyCode* buttonKeyCode = reinterpret_cast(this); + + while (buttonKeyCode->code != 0) + { + if (buttonKeyCode->code == keyCode) + { + break; + } + buttonKeyCode++; + } + + assert(nullptr != buttonKeyCode); + + return *buttonKeyCode; +} + +// ---------------------------------------------------------------------- + +const KeyCode& Button::keyCode() const +{ + return *mKey; +} + +// ---------------------------------------------------------------------- + +bool Button::setKeyCode(const KeyCode& keyCode) +{ + bool isNewButton = *mKey != keyCode; + mKey = &keyCode; + return isNewButton; +} + +// ---------------------------------------------------------------------- + +std::ostream& operator<<(std::ostream& os, const Button& data) +{ + std::ios init(NULL); + init.copyfmt(os); + os << "{key=" << data.keyCode() << "}"; + os.copyfmt(init); + return os; +} + +// ---------------------------------------------------------------------- + +ToggleButton::ToggleButton(const KeyCode& key, const KeyCode& modifier) : + Button(key), + mModifier(&modifier) +{ +} + +// ---------------------------------------------------------------------- + +ToggleButton::~ToggleButton() +{ +} + +// ---------------------------------------------------------------------- + +std::ostream& operator<<(std::ostream& os, const ToggleButton& data) +{ + std::ios init(NULL); + init.copyfmt(os); + os << "{" << *static_cast(&data) << " modifier=" << data.modifierCode() << "}"; + os.copyfmt(init); + return os; +} + +// ---------------------------------------------------------------------- + +ToggleButton& ToggleButton::operator=(const ToggleButton& other) +{ + Button::operator=(other); + mModifier = other.mModifier; + return *this; +} + +// ---------------------------------------------------------------------- + +const KeyCode& ToggleButton::modifierCode() const +{ + return *mModifier; +} + +// ---------------------------------------------------------------------- + +void ToggleButton::setModifierCode(KeyCode& modifierCode) +{ + mModifier = &modifierCode; +} + +// ---------------------------------------------------------------------- + +bool ToggleButton::containsKeys(const KeyCode& key, const KeyCode& modifier) const +{ + return ((key.code == mKey->code) && (modifier.code == mModifier->code)); +} + +// ---------------------------------------------------------------------- + +RotaryButton::RotaryButton(const KeyCode& keyCode) : + Button(keyCode) +{ +} + +// ---------------------------------------------------------------------- + +RotaryButton::~RotaryButton() +{ +} + +// ---------------------------------------------------------------------- + +std::ostream& operator<<(std::ostream& os, const RotaryButton& data) +{ + std::ios init(NULL); + init.copyfmt(os); + os << "{" << *static_cast(&data) << "}"; + os.copyfmt(init); + return os; +} + +// ---------------------------------------------------------------------- + +RotaryButton& RotaryButton::operator=(const RotaryButton& other) +{ + Button::operator=(other); + return *this; +} + +// ---------------------------------------------------------------------- +const HandwheelStepModeStepSize FeedRotaryButton::mStepStepSizeMapper; +const HandwheelContinuousModeStepSize FeedRotaryButton::mContinuousSizeMapper; +const HandwheelLeadModeStepSize FeedRotaryButton::mLeadStepSizeMapper; + +const std::map FeedRotaryButton::mStepKeycodeLut{ + {&KeyCodes::Feed.speed_0_001, HandwheelStepModeStepSize::PositionNameIndex::RotaryButton0001}, + {&KeyCodes::Feed.speed_0_01, HandwheelStepModeStepSize::PositionNameIndex::RotaryButton0010}, + {&KeyCodes::Feed.speed_0_1, HandwheelStepModeStepSize::PositionNameIndex::RotaryButton0100}, + {&KeyCodes::Feed.speed_1, HandwheelStepModeStepSize::PositionNameIndex::RotaryButton100}, + {&KeyCodes::Feed.percent_60, HandwheelStepModeStepSize::PositionNameIndex::RotaryButtonUndefined}, + {&KeyCodes::Feed.percent_100, HandwheelStepModeStepSize::PositionNameIndex::RotaryButtonUndefined}, + {&KeyCodes::Feed.lead, HandwheelStepModeStepSize::PositionNameIndex::RotaryButtonUndefined} +}; +const std::map FeedRotaryButton::mContinuousKeycodeLut{ + {&KeyCodes::Feed.speed_0_001, HandwheelContinuousModeStepSize::PositionNameIndex::RotaryButton2percent}, + {&KeyCodes::Feed.speed_0_01, HandwheelContinuousModeStepSize::PositionNameIndex::RotaryButton5percent}, + {&KeyCodes::Feed.speed_0_1, HandwheelContinuousModeStepSize::PositionNameIndex::RotaryButton10percent}, + {&KeyCodes::Feed.speed_1, HandwheelContinuousModeStepSize::PositionNameIndex::RotaryButton30percent}, + {&KeyCodes::Feed.percent_60, HandwheelContinuousModeStepSize::PositionNameIndex::RotaryButton60percent}, + {&KeyCodes::Feed.percent_100, HandwheelContinuousModeStepSize::PositionNameIndex::RotaryButton100percent}, + {&KeyCodes::Feed.lead, HandwheelContinuousModeStepSize::PositionNameIndex::RotaryButtonUndefined} +}; +const std::map FeedRotaryButton::mLeadKeycodeLut{ + {&KeyCodes::Feed.speed_0_001, HandwheelLeadModeStepSize::PositionNameIndex::UNDEFINED}, + {&KeyCodes::Feed.speed_0_01, HandwheelLeadModeStepSize::PositionNameIndex::UNDEFINED}, + {&KeyCodes::Feed.speed_0_1, HandwheelLeadModeStepSize::PositionNameIndex::UNDEFINED}, + {&KeyCodes::Feed.speed_1, HandwheelLeadModeStepSize::PositionNameIndex::UNDEFINED}, + {&KeyCodes::Feed.percent_60, HandwheelLeadModeStepSize::PositionNameIndex::UNDEFINED}, + {&KeyCodes::Feed.percent_100, HandwheelLeadModeStepSize::PositionNameIndex::UNDEFINED}, + {&KeyCodes::Feed.lead, HandwheelLeadModeStepSize::PositionNameIndex::LEAD} +}; + +// ---------------------------------------------------------------------- + +FeedRotaryButton::FeedRotaryButton(const KeyCode& keyCode, + HandwheelStepmodes::Mode stepMode, + KeyEventListener* listener) : + RotaryButton(keyCode), + mStepMode(stepMode), + mIsPermitted(false), + mStepSize(0), + mEventListener(listener) +{ +} + +// ---------------------------------------------------------------------- + +FeedRotaryButton::~FeedRotaryButton() +{ +} + + +// ---------------------------------------------------------------------- + +std::ostream& operator<<(std::ostream& os, const FeedRotaryButton& data) +{ + std::ios init(NULL); + init.copyfmt(os); + os << "{" << *static_cast(&data) << " " + << "isPermitted=" << ((data.isPermitted()) ? "TRUE" : "FALSE") << " " + << "stepSize=" << data.stepSize() << " " + << "stepMode=0x" << std::setfill('0') << std::hex << std::setw(2) + << static_cast(data.stepMode()) << "}"; + os.copyfmt(init); + return os; +} + +// ---------------------------------------------------------------------- + +FeedRotaryButton& FeedRotaryButton::operator=(const FeedRotaryButton& other) +{ + RotaryButton::operator=(other); + mStepMode = other.mStepMode; + return *this; +} + +// ---------------------------------------------------------------------- + +bool FeedRotaryButton::setKeyCode(const KeyCode& keyCode) +{ + bool hasChanged = Button::setKeyCode(keyCode); + update(); + return hasChanged; +} + +// ---------------------------------------------------------------------- + +void FeedRotaryButton::setStepMode(HandwheelStepmodes::Mode stepMode) +{ + mStepMode = stepMode; + update(); +} + +// ---------------------------------------------------------------------- + +HandwheelStepmodes::Mode FeedRotaryButton::stepMode() const +{ + return mStepMode; +} + +// ---------------------------------------------------------------------- + +float FeedRotaryButton::stepSize() const +{ + return mStepSize; +} + +// ---------------------------------------------------------------------- + +void FeedRotaryButton::update() +{ + if (*mKey == KeyCodes::Feed.undefined) + { + mIsPermitted = false; + return; + } + + if (*mKey == KeyCodes::Feed.lead) + { + mStepSize = mLeadStepSizeMapper.getStepSize(HandwheelLeadModeStepSize::PositionNameIndex::LEAD); + mIsPermitted = mLeadStepSizeMapper.isPermitted(HandwheelLeadModeStepSize::PositionNameIndex::LEAD); + } + else if (mStepMode == HandwheelStepmodes::Mode::CONTINUOUS) + { + auto enumValue = mContinuousKeycodeLut.find(mKey); + assert(enumValue != mContinuousKeycodeLut.end()); + auto second = enumValue->second; + mStepSize = mContinuousSizeMapper.getStepSize(second); + mIsPermitted = mContinuousSizeMapper.isPermitted(second); + } + else if (mStepMode == HandwheelStepmodes::Mode::STEP) + { + auto enumValue = mStepKeycodeLut.find(mKey); + assert(enumValue != mStepKeycodeLut.end()); + auto second = enumValue->second; + mStepSize = mStepStepSizeMapper.getStepSize(second); + mIsPermitted = mStepStepSizeMapper.isPermitted(second); + } + else + { + assert(false); + } +} + +// ---------------------------------------------------------------------- + +bool FeedRotaryButton::isPermitted() const +{ + return mIsPermitted; +} + +// ---------------------------------------------------------------------- + +AxisRotaryButton::AxisRotaryButton(const KeyCode& keyCode, KeyEventListener* listener) : + RotaryButton(keyCode), + mEventListener(listener) +{ +} + +// ---------------------------------------------------------------------- + +AxisRotaryButton::~AxisRotaryButton() +{ +} + +// ---------------------------------------------------------------------- + +std::ostream& operator<<(std::ostream& os, const AxisRotaryButton& data) +{ + std::ios init(NULL); + init.copyfmt(os); + os << "{" << *static_cast(&data) + << " isPermitted=" << ((data.isPermitted()) ? "TRUE" : "FALSE") << "}"; + os.copyfmt(init); + return os; +} + +// ---------------------------------------------------------------------- + +AxisRotaryButton& AxisRotaryButton::operator=(const AxisRotaryButton& other) +{ + RotaryButton::operator=(other); + return *this; +} + +// ---------------------------------------------------------------------- + +bool AxisRotaryButton::isPermitted() const +{ + return (*mKey != KeyCodes::Axis.undefined) && (*mKey != KeyCodes::Axis.off); +} + +// ---------------------------------------------------------------------- + +Handwheel::Handwheel(const FeedRotaryButton& feedButton, KeyEventListener* listener) : + mCounters(), + mFeedButton(feedButton), + mEventListener(listener), + mWheelCout(&std::cout), + mPrefix("pndnt ") +{ +} + +// ---------------------------------------------------------------------- + +Handwheel::~Handwheel() +{ +} + +// ---------------------------------------------------------------------- + +std::ostream& operator<<(std::ostream& os, const Handwheel& data) +{ + std::ios init(NULL); + init.copyfmt(os); + os << "{counters=" << data.counters() << "}"; + return os; +} + +// ---------------------------------------------------------------------- + +const HandWheelCounters& Handwheel::counters() const +{ + return static_cast( + static_cast(*this).counters() + ); +} + +// ---------------------------------------------------------------------- + +void Handwheel::setEnabled(bool enabled) +{ + mIsEnabled = enabled; +} +// ---------------------------------------------------------------------- + +HandWheelCounters& Handwheel::counters() +{ + return mCounters; +} + +// ---------------------------------------------------------------------- + +void Handwheel::setMode(HandWheelCounters::CounterNameToIndex activeCounterMode) +{ + mCounters.setActiveCounter(activeCounterMode); +} + +// ---------------------------------------------------------------------- + +void Handwheel::count(int8_t delta) +{ + assert(mEventListener != nullptr); + + if (mIsEnabled) + { + mCounters.count(delta); + mEventListener->onJogDialEvent(mCounters, delta); + } + + std::ios init(NULL); + init.copyfmt(*mWheelCout); + *mWheelCout << mPrefix << "handwheel total counts " << std::setfill(' ') << std::setw(5) << mCounters + << endl; + mWheelCout->copyfmt(init); +} + +// ---------------------------------------------------------------------- + +ButtonsState::ButtonsState(KeyEventListener* listener, const ButtonsState* previousState) : + mPressedButtons(), + mCurrentMetaButton(&KeyCodes::Meta.undefined), + mAxisButton(KeyCodes::Axis.undefined, listener), + mFeedButton(KeyCodes::Feed.undefined, HandwheelStepmodes::Mode::CONTINUOUS, listener), + mPreviousState(previousState), + mEventListener(listener) +{ +} + +// ---------------------------------------------------------------------- + +ButtonsState::~ButtonsState() +{ +} + +// ---------------------------------------------------------------------- + +void ButtonsState::update(const KeyCode& keyCode, + const KeyCode& modifierCode, + const KeyCode& axisButton, + const KeyCode& feedButton) +{ + //! propagate push button events + const MetaButtonCodes& newButton = KeyCodes::Meta.find(keyCode, modifierCode); + if (*mCurrentMetaButton != newButton) + { + if (*mCurrentMetaButton != KeyCodes::Meta.undefined) + { + if (mEventListener != nullptr) + { + mEventListener->onButtonReleasedEvent(*mCurrentMetaButton); + } + } + + mCurrentMetaButton = &newButton; + if (*mCurrentMetaButton != KeyCodes::Meta.undefined) + { + if (mEventListener != nullptr) + { + mEventListener->onButtonPressedEvent(*mCurrentMetaButton); + } + } + } + + //! propagate axis rotary button events + const KeyCode& oldAxisKeyCode = mAxisButton.keyCode(); + if (mAxisButton.setKeyCode(axisButton)) + { + mEventListener->onAxisInactiveEvent(oldAxisKeyCode); + mEventListener->onAxisActiveEvent(mAxisButton.keyCode()); + } + + //! propagate feed rotary button events + const KeyCode& oldFeedKeyCode = mFeedButton.keyCode(); + if (mFeedButton.setKeyCode(feedButton)) + { + mEventListener->onFeedInactiveEvent(oldFeedKeyCode); + mEventListener->onFeedActiveEvent(mFeedButton.keyCode()); + } +} + +// ---------------------------------------------------------------------- + +std::ostream& operator<<(std::ostream& os, const ButtonsState& data) +{ + std::ios init(NULL); + init.copyfmt(os); + + os << "{pressed buttons="; + for (const KeyCode* pb : data.pressedButtons()) + { + assert(pb != nullptr); + os << *pb << " "; + } + os << " metaButton=" << *data.currentMetaButton() + << " axisButton=" << data.axisButton() + << " feedButton=" << data.feedButton() << "}"; + os.copyfmt(init); + return os; +} + +// ---------------------------------------------------------------------- + +ButtonsState& ButtonsState::operator=(const ButtonsState& other) +{ + mPressedButtons = other.mPressedButtons; + mCurrentMetaButton = other.mCurrentMetaButton; + mAxisButton = other.mAxisButton; + mFeedButton = other.mFeedButton; + return *this; +} + +// ---------------------------------------------------------------------- + +void ButtonsState::clearPressedButtons() +{ + mPressedButtons.clear(); +} + +// ---------------------------------------------------------------------- + +const std::list& ButtonsState::pressedButtons() const +{ + return mPressedButtons; +} + +// ---------------------------------------------------------------------- + +const MetaButtonCodes* ButtonsState::currentMetaButton() const +{ + return mCurrentMetaButton; +} + +// ---------------------------------------------------------------------- + +const AxisRotaryButton& ButtonsState::axisButton() const +{ + return mAxisButton; +} + +// ---------------------------------------------------------------------- + +const FeedRotaryButton& ButtonsState::feedButton() const +{ + return mFeedButton; +} + +// ---------------------------------------------------------------------- + +FeedRotaryButton& ButtonsState::feedButton() +{ + return mFeedButton; +} + +// ---------------------------------------------------------------------- + +Pendant::Pendant(Hal& hal, UsbOutPackageData& displayOutData) : + mHal(hal), + mPreviousButtonsState(this), + mCurrentButtonsState(this, &mPreviousButtonsState), + mHandWheel(mCurrentButtonsState.feedButton(), this), + mDisplay(mCurrentButtonsState, hal, displayOutData), + mPrefix("pndnt "), + mPendantCout(&std::cout) +{ +} + +// ---------------------------------------------------------------------- + +Pendant::~Pendant() +{ +} + +// ---------------------------------------------------------------------- + +std::ostream& operator<<(std::ostream& os, const Pendant& data) +{ + std::ios init(NULL); + init.copyfmt(os); + + os << "{currentButtonState=" << data.currentButtonsState() << " " + << "previousButtonState=" << data.previousButtonsState() << " " + << "handwheel= " << data.handWheel() << "}"; + return os; +} + +// ---------------------------------------------------------------------- + +void Pendant::processEvent(uint8_t keyCode, + uint8_t modifierCode, + uint8_t rotaryButtonAxisKeyCode, + uint8_t rotaryButtonFeedKeyCode, + int8_t handWheelStepCount) +{ + shiftButtonState(); + + auto key = KeyCodes::Buttons.codeMap.find(keyCode); + auto modifier = KeyCodes::Buttons.codeMap.find(modifierCode); + auto axis = KeyCodes::Axis.codeMap.find(rotaryButtonAxisKeyCode); + auto feed = KeyCodes::Feed.codeMap.find(rotaryButtonFeedKeyCode); + + if (key == KeyCodes::Buttons.codeMap.end()) + { + *mPendantCout << mPrefix << "failed to interpret key code keyCode={" << keyCode << "}" << endl; + } + if (modifier == KeyCodes::Buttons.codeMap.end()) + { + *mPendantCout << mPrefix << "failed to interpret modifier code keyCode={" << modifierCode << "}" << endl; + } + if (axis == KeyCodes::Axis.codeMap.end()) + { + *mPendantCout << mPrefix << "failed to interpret axis code axisCode={" << modifierCode << "}" << endl; + } + if (feed == KeyCodes::Feed.codeMap.end()) + { + *mPendantCout << mPrefix << "failed to interpret axis code axisCode={" << modifierCode << "}" << endl; + } + + processEvent(*key->second, *modifier->second, *axis->second, *feed->second, handWheelStepCount); +} + +// ---------------------------------------------------------------------- + +void Pendant::processEvent(const KeyCode& keyCode, + const KeyCode& modifierCode, + const KeyCode& rotaryButtonAxisKeyCode, + const KeyCode& rotaryButtonFeedKeyCode, + int8_t handWheelStepCount) +{ + mHal.trySetManualMode(true); + mHandWheel.setEnabled(mHal.getIsMachineOn()); + mCurrentButtonsState.update(keyCode, modifierCode, rotaryButtonAxisKeyCode, rotaryButtonFeedKeyCode); + mHandWheel.count(handWheelStepCount); + mDisplay.updateData(); + mHal.trySetManualMode(false); +} + +// ---------------------------------------------------------------------- + +void Pendant::updateDisplayData() +{ + mDisplay.updateData(); +} + +// ---------------------------------------------------------------------- + +void Pendant::clearDisplayData() +{ + mDisplay.clearData(); +} + +// ---------------------------------------------------------------------- + +void Pendant::shiftButtonState() +{ + mPreviousButtonsState = mCurrentButtonsState; + mCurrentButtonsState.clearPressedButtons(); +} + +// ---------------------------------------------------------------------- + +const ButtonsState& Pendant::currentButtonsState() const +{ + return mCurrentButtonsState; +} + +// ---------------------------------------------------------------------- + +const ButtonsState& Pendant::previousButtonsState() const +{ + return mPreviousButtonsState; +} + +// ---------------------------------------------------------------------- + +const Handwheel& Pendant::handWheel() const +{ + return mHandWheel; +} + +// ---------------------------------------------------------------------- + +Handwheel& Pendant::handWheel() +{ + return const_cast(const_cast(this)->handWheel()); +} + +// ---------------------------------------------------------------------- + +bool Pendant::onButtonPressedEvent(const MetaButtonCodes& metaButton) +{ + *mPendantCout << mPrefix << "button pressed event metaButton=" << metaButton << endl; + bool isHandled = false; + if (metaButton == KeyCodes::Meta.reset) + { + mHal.setReset(true); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.stop) + { + mHal.setStop(true); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.start) + { + mHal.setStart(true); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.feed_plus) + { + mHal.setFeedPlus(true); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.feed_minus) + { + mHal.setFeedMinus(true); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.spindle_plus) + { + mHal.setSpindlePlus(true); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.spindle_minus) + { + mHal.setSpindleMinus(true); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.machine_home) + { + mHal.setMachineHome(true); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.safe_z) + { + mHal.setSafeZ(true); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.workpiece_home) + { + mHal.setWorkpieceHome(true); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.spindle_on_off) + { + mHal.toggleSpindleOnOff(true); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.probe_z) + { + mHal.setProbeZ(true); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro10) + { + mHal.setMacro10(true); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.manual_pulse_generator) + { + mCurrentButtonsState.feedButton().setStepMode(HandwheelStepmodes::Mode::CONTINUOUS); + mHal.setContinuousMode(true); + dispatchFeedValueToHal(); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.step_continuous) + { + mCurrentButtonsState.feedButton().setStepMode(HandwheelStepmodes::Mode::STEP); + mHal.setStepMode(true); + dispatchFeedValueToHal(); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro11) + { + mHal.setMacro11(true); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro12) + { + mHal.setMacro12(true); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro13) + { + mHal.setMacro13(true); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro1) + { + mHal.setMacro1(true); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro2) + { + mHal.setMacro2(true); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro3) + { + mHal.setMacro3(true); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro4) + { + mHal.setMacro4(true); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro5) + { + mHal.setMacro5(true); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro6) + { + mHal.setMacro6(true); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro7) + { + mHal.setMacro7(true); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro8) + { + mHal.toggleSpindleDirection(true); + mHal.setMacro8(true); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro9) + { + mHal.setMacro9(true); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro14) + { + mHal.setMacro14(true); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro15) + { + mHal.setMacro15(true); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro16) + { + mHal.setMacro16(true); + isHandled = true; + } + + mDisplay.onButtonPressedEvent(metaButton); + return isHandled; +} + +// ---------------------------------------------------------------------- + +bool Pendant::onButtonReleasedEvent(const MetaButtonCodes& metaButton) +{ + *mPendantCout << mPrefix << "button released event metaButton=" << metaButton << endl; + bool isHandled = false; + if (metaButton == KeyCodes::Meta.reset) + { + mHal.setReset(false); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.stop) + { + mHal.setStop(false); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.start) + { + mHal.setStart(false); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.feed_plus) + { + mHal.setFeedPlus(false); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.feed_minus) + { + mHal.setFeedMinus(false); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.spindle_plus) + { + mHal.setSpindlePlus(false); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.spindle_minus) + { + mHal.setSpindleMinus(false); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.machine_home) + { + mHal.setMachineHome(false); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.safe_z) + { + mHal.setSafeZ(false); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.workpiece_home) + { + mHal.setWorkpieceHome(false); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.spindle_on_off) + { + mHal.toggleSpindleOnOff(false); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.probe_z) + { + mHal.setProbeZ(false); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro10) + { + mHal.setMacro10(false); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.manual_pulse_generator) + { + mHal.setContinuousMode(false); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.step_continuous) + { + mHal.setStepMode(false); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro11) + { + mHal.setMacro11(false); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro12) + { + mHal.setMacro12(false); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro13) + { + mHal.setMacro13(false); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro1) + { + mHal.setMacro1(false); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro2) + { + mHal.setMacro2(false); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro3) + { + mHal.setMacro3(false); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro4) + { + mHal.setMacro4(false); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro5) + { + mHal.setMacro5(false); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro6) + { + mHal.setMacro6(false); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro7) + { + mHal.setMacro7(false); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro8) + { + mHal.toggleSpindleDirection(false); + mHal.setMacro8(false); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro9) + { + mHal.setMacro9(false); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro14) + { + mHal.setMacro14(false); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro15) + { + mHal.setMacro15(false); + isHandled = true; + } + else if (metaButton == KeyCodes::Meta.macro16) + { + mHal.setMacro16(false); + isHandled = true; + } + + mDisplay.onButtonReleasedEvent(metaButton); + return isHandled; +} + +// ---------------------------------------------------------------------- + +void Pendant::onAxisActiveEvent(const KeyCode& axis) +{ + *mPendantCout << mPrefix << "axis active event axis=" << axis + << " axisButton=" << mCurrentButtonsState.axisButton() << endl; + dispatchAxisEventToHandwheel(axis, true); + dispatchAxisEventToHal(axis, true); + mDisplay.onAxisActiveEvent(axis); +} + +// ---------------------------------------------------------------------- + +void Pendant::onAxisInactiveEvent(const KeyCode& axis) +{ + *mPendantCout << mPrefix << "axis inactive event axis=" << axis + << " axisButton=" << mCurrentButtonsState.axisButton() << endl; + dispatchAxisEventToHandwheel(axis, false); + dispatchAxisEventToHal(axis, false); + mDisplay.onAxisInactiveEvent(axis); +} + +// ---------------------------------------------------------------------- + +void Pendant::onFeedActiveEvent(const KeyCode& feed) +{ + (*mPendantCout) << mPrefix << "feed active event feed=" << feed + << " feedButton=" << mCurrentButtonsState.feedButton() << endl; + + dispatchFeedEventToHandwheel(feed, true); + dispatchFeedValueToHal(feed); + dispatchActiveFeedToHal(feed, true); + mDisplay.onFeedActiveEvent(feed); +} + +// ---------------------------------------------------------------------- + +void Pendant::dispatchFeedEventToHandwheel(const KeyCode& feed, bool isActive) +{ + if (feed.code == KeyCodes::Feed.lead.code) + { + mHandWheel.counters().setLeadValueLimit( + mHal.getFeedOverrideMinValue() * 100, + mHal.getFeedOverrideMaxValue() * 100); + mHandWheel.counters().enableLeadCounter(isActive); + } +} + +// ---------------------------------------------------------------------- + +void Pendant::dispatchActiveFeedToHal(const KeyCode& feed, bool isActive) +{ + if (feed.code == KeyCodes::Feed.speed_0_001.code) + { + mHal.setFeedValueSelected0_001(isActive); + } + else if (feed.code == KeyCodes::Feed.speed_0_01.code) + { + mHal.setFeedValueSelected0_01(isActive); + } + else if (feed.code == KeyCodes::Feed.speed_0_1.code) + { + mHal.setFeedValueSelected0_1(isActive); + } + else if (feed.code == KeyCodes::Feed.speed_1.code) + { + mHal.setFeedValueSelected1_0(isActive); + } +} + +// ---------------------------------------------------------------------- + +void Pendant::dispatchFeedValueToHal(const KeyCode& keyCode) +{ + // on feed rotary button change and lead is active + if (keyCode.code == KeyCodes::Feed.lead.code) + { + mHal.setFeedOverrideCountEnable(true); + mHal.setFeedOverrideScale(mCurrentButtonsState.feedButton().stepSize()); + return; + } + // on feed rotary button change and lead is inactive + else + { + mHal.setFeedOverrideCountEnable(false); + } + dispatchFeedValueToHal(); +} + +// ---------------------------------------------------------------------- + +void Pendant::dispatchFeedValueToHal() +{ + // on feed rotary button change + FeedRotaryButton& feedButton = mCurrentButtonsState.feedButton(); + if (feedButton.isPermitted()) + { + float axisJogStepSize = 0; + if (feedButton.stepMode() == HandwheelStepmodes::Mode::STEP) + { + mHal.setFeedOverrideCountEnable(false); + mHal.setStepMode(true); + mHal.setFeedOverrideScale(0.1); + mHal.setFeedOverrideDirectValue(false); + axisJogStepSize = feedButton.stepSize(); + } + else if (feedButton.stepMode() == HandwheelStepmodes::Mode::CONTINUOUS) + { + mHal.setFeedOverrideCountEnable(false); + mHal.setContinuousMode(true); + // On velocity mode set feed-override value to absolute percentage value: counts*scale. + axisJogStepSize = 2; + mHal.setFeedOverrideDirectValue(true); + float feedButtonStepSize = feedButton.stepSize(); + if (feedButtonStepSize >= 10) + { + // on velocity >= 10%: set a coarse grained scale, + // this also affects the Feed+/- increment + mHal.setFeedOverrideScale(0.1); + mHal.setFeedOverrideCounts(feedButtonStepSize * 0.1); + } + else + { + // on velocity < 10%: set a fine grained scale, + // this also affects the Feed+/- increment + mHal.setFeedOverrideScale(0.01); + mHal.setFeedOverrideCounts(feedButtonStepSize * 1); + } + } + else + { + } + mHal.setStepSize(axisJogStepSize); + } + else + { + mHal.setStepSize(0); + } +} + +// ---------------------------------------------------------------------- + +void Pendant::onFeedInactiveEvent(const KeyCode& feed) +{ + *mPendantCout << mPrefix << "feed inactive event feed=" << feed + << " feedButton=" << mCurrentButtonsState.feedButton() << endl; + dispatchFeedEventToHandwheel(feed, false); + dispatchActiveFeedToHal(feed, false); + mDisplay.onFeedInactiveEvent(feed); +} + +// ---------------------------------------------------------------------- + +bool Pendant::onJogDialEvent(const HandWheelCounters& counters, int8_t delta) +{ + + if (HandWheelCounters::CounterNameToIndex::UNDEFINED != counters.activeCounter() && + counters.counts() != 0) + { + *mPendantCout << mPrefix << "wheel event " << counters.counts() << endl; + + if (HandWheelCounters::CounterNameToIndex::LEAD != counters.activeCounter()) + { + mHandWheel.counters().setLeadValueLimit( + mHal.getFeedOverrideMinValue() * 100, + mHal.getFeedOverrideMaxValue() * 100); + } + mHal.setJogCounts(counters); + mDisplay.onJogDialEvent(counters, delta); + return true; + } + return false; +} + +// ---------------------------------------------------------------------- + +void Pendant::dispatchAxisEventToHandwheel(const KeyCode& axis, bool isActive) +{ + if (!isActive) + { + mHandWheel.counters().setActiveCounter(HandWheelCounters::CounterNameToIndex::UNDEFINED); + } + else if (axis.code == KeyCodes::Axis.off.code) + { + mHandWheel.counters().setActiveCounter(HandWheelCounters::CounterNameToIndex::UNDEFINED); + } + else if (axis.code == KeyCodes::Axis.x.code) + { + mHandWheel.counters().setActiveCounter(HandWheelCounters::CounterNameToIndex::AXIS_X); + } + else if (axis.code == KeyCodes::Axis.y.code) + { + mHandWheel.counters().setActiveCounter(HandWheelCounters::CounterNameToIndex::AXIS_Y); + } + else if (axis.code == KeyCodes::Axis.z.code) + { + mHandWheel.counters().setActiveCounter(HandWheelCounters::CounterNameToIndex::AXIS_Z); + } + else if (axis.code == KeyCodes::Axis.a.code) + { + mHandWheel.counters().setActiveCounter(HandWheelCounters::CounterNameToIndex::AXIS_A); + } + else if (axis.code == KeyCodes::Axis.b.code) + { + mHandWheel.counters().setActiveCounter(HandWheelCounters::CounterNameToIndex::AXIS_B); + } + else if (axis.code == KeyCodes::Axis.c.code) + { + mHandWheel.counters().setActiveCounter(HandWheelCounters::CounterNameToIndex::AXIS_C); + } + else if (axis.code == KeyCodes::Axis.undefined.code) + { + mHandWheel.counters().setActiveCounter(HandWheelCounters::CounterNameToIndex::UNDEFINED); + } +} + +// ---------------------------------------------------------------------- + +void Pendant::dispatchAxisEventToHal(const KeyCode& axis, bool isActive) +{ + if (axis.code == KeyCodes::Axis.off.code) + { + mHal.setNoAxisActive(isActive); + } + else if (axis.code == KeyCodes::Axis.x.code) + { + mHal.setAxisXActive(isActive); + } + else if (axis.code == KeyCodes::Axis.y.code) + { + mHal.setAxisYActive(isActive); + } + else if (axis.code == KeyCodes::Axis.z.code) + { + mHal.setAxisZActive(isActive); + } + else if (axis.code == KeyCodes::Axis.a.code) + { + mHal.setAxisAActive(isActive); + } + else if (axis.code == KeyCodes::Axis.b.code) + { + mHal.setAxisBActive(isActive); + } + else if (axis.code == KeyCodes::Axis.c.code) + { + mHal.setAxisCActive(isActive); + } + else if (axis.code == KeyCodes::Axis.undefined.code) + { + mHal.setNoAxisActive(isActive); + } +} + +// ---------------------------------------------------------------------- + +Display::Display(const ButtonsState& currentButtonsState, Hal& hal, UsbOutPackageData& displayData) : + mCurrentButtonsState(currentButtonsState), + mHal(hal), + mDisplayData(displayData), + mAxisPositionMethod(AxisPositionMethod::ABSOLUTE), + mActiveAxisGroup(AxisGroup::XYZ) +{ +} + +// ---------------------------------------------------------------------- + +Display::~Display() +{ +} + +// ---------------------------------------------------------------------- + +bool Display::onButtonPressedEvent(const MetaButtonCodes& metaButton) +{ + if (metaButton == KeyCodes::Meta.manual_pulse_generator) + { + mDisplayData.displayModeFlags.asBitFields.stepMode = + static_cast::type>( + DisplayIndicatorStepMode::StepMode::MANUAL_PULSE_GENERATOR); + return true; + } + else if (metaButton == KeyCodes::Meta.step_continuous) + { + mDisplayData.displayModeFlags.asBitFields.stepMode = + static_cast::type>( + DisplayIndicatorStepMode::StepMode::STEP); + return true; + } + else if (metaButton == KeyCodes::Meta.macro5) + { + mAxisPositionMethod = AxisPositionMethod::ABSOLUTE; + return true; + } + else if (metaButton == KeyCodes::Meta.macro7) + { + mAxisPositionMethod = AxisPositionMethod::RELATIVE; + return true; + } + return false; +} + +// ---------------------------------------------------------------------- + +bool Display::onButtonReleasedEvent(const MetaButtonCodes& metaButton) +{ + return false; +} + +// ---------------------------------------------------------------------- + +void Display::onAxisActiveEvent(const KeyCode& axis) +{ + if ((axis.code == KeyCodes::Axis.x.code) || + (axis.code == KeyCodes::Axis.y.code) || + (axis.code == KeyCodes::Axis.z.code)) + { + mActiveAxisGroup = AxisGroup::XYZ; + } + else + { // a || b || c + mActiveAxisGroup = AxisGroup::ABC; + } +} + +// ---------------------------------------------------------------------- + +void Display::onAxisInactiveEvent(const KeyCode& axis) +{ +} + +// ---------------------------------------------------------------------- + +void Display::onFeedActiveEvent(const KeyCode& feed) +{ + if (mCurrentButtonsState.feedButton().stepMode() == HandwheelStepmodes::Mode::STEP) + { + mDisplayData.displayModeFlags.asBitFields.stepMode = + static_cast::type>( + DisplayIndicatorStepMode::StepMode::STEP); + } + else if (mCurrentButtonsState.feedButton().stepMode() == HandwheelStepmodes::Mode::CONTINUOUS) + { + mDisplayData.displayModeFlags.asBitFields.stepMode = + static_cast::type>( + DisplayIndicatorStepMode::StepMode::MANUAL_PULSE_GENERATOR); + } +} + +// ---------------------------------------------------------------------- + +void Display::onFeedInactiveEvent(const KeyCode& feed) +{ +} + +// ---------------------------------------------------------------------- + +bool Display::onJogDialEvent(const HandWheelCounters& counters, int8_t delta) +{ + return false; +} + +// ---------------------------------------------------------------------- + +void Display::updateData() +{ + mDisplayData.displayModeFlags.asBitFields.isReset = !mHal.getIsMachineOn(); + + uint32_t spindleSpeed = static_cast(mHal.getSpindleSpeedAbsRpm()); + uint32_t feedRate = static_cast(mHal.getFeedUps() * 60); + + assert(spindleSpeed <= std::numeric_limits::max()); + assert(feedRate <= std::numeric_limits::max()); + + mDisplayData.spindleSpeed = spindleSpeed; + mDisplayData.feedRate = feedRate; + + bool isAbsolutePositionRequest = (mAxisPositionMethod == AxisPositionMethod::ABSOLUTE); + mDisplayData.displayModeFlags.asBitFields.isRelativeCoordinate = !isAbsolutePositionRequest; + if (mActiveAxisGroup == AxisGroup::XYZ) + { + mDisplayData.row1Coordinate.setCoordinate(static_cast(mHal.getAxisXPosition(isAbsolutePositionRequest))); + mDisplayData.row2Coordinate.setCoordinate(static_cast(mHal.getAxisYPosition(isAbsolutePositionRequest))); + mDisplayData.row3Coordinate.setCoordinate(static_cast(mHal.getAxisZPosition(isAbsolutePositionRequest))); + } + else + { + mDisplayData.row1Coordinate.setCoordinate(static_cast(mHal.getAxisAPosition(isAbsolutePositionRequest))); + mDisplayData.row2Coordinate.setCoordinate(static_cast(mHal.getAxisBPosition(isAbsolutePositionRequest))); + mDisplayData.row3Coordinate.setCoordinate(static_cast(mHal.getAxisCPosition(isAbsolutePositionRequest))); + } +} + +void Display::clearData() +{ + mDisplayData.feedRate = 0; + mDisplayData.spindleSpeed = 0; + mDisplayData.displayModeFlags.asBitFields.stepMode = + static_cast::type>( + DisplayIndicatorStepMode::StepMode::MANUAL_PULSE_GENERATOR); + mDisplayData.displayModeFlags.asBitFields.isReset = true; + mDisplayData.displayModeFlags.asBitFields.isRelativeCoordinate = false; + mDisplayData.row1Coordinate.clear(); + mDisplayData.row2Coordinate.clear(); + mDisplayData.row3Coordinate.clear(); +} +} + diff --git a/src/hal/user_comps/xhc-whb04b-6/pendant.h b/src/hal/user_comps/xhc-whb04b-6/pendant.h new file mode 100644 index 0000000000..e0c2104448 --- /dev/null +++ b/src/hal/user_comps/xhc-whb04b-6/pendant.h @@ -0,0 +1,622 @@ +/* + Copyright (C) 2017 Raoul Rubien (github.com/rubienr) + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This program 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the program; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. + */ + +#pragma once + +// local includes +#include "pendant-types.h" + +// system includes +#include +#include +#include + +#include + +// 3rd party includes + +// local library includes +#include + +// forward declarations + +// ---------------------------------------------------------------------- + +namespace XhcWhb04b6 { + +// forward declarations +class XhcWhb04b6Component; +class Hal; +class UsbOutPackageData; + +// ---------------------------------------------------------------------- + +//! If hand wheel is in step mode (toggled by Step/Continuous" button) this speed setting is applied. +//! In step mode the step is in machine units distance. +class HandwheelStepModeStepSize +{ +public: + enum class PositionNameIndex : uint8_t + { + RotaryButton0001 = 0, + RotaryButton0010 = 1, + RotaryButton0100 = 2, + RotaryButton100 = 3, + NA0 = 4, + NA1 = 5, + NA2 = 6, + RotaryButtonUndefined = 7, + POSITIONS_COUNT = 8, + }; + + HandwheelStepModeStepSize(); + ~HandwheelStepModeStepSize(); + + //! Translates the button position to step metric units. + //! \param buttonPosition + //! \return the step size in units ℝ ∈ {0.001, 0.01, 0.1, 1.0, -1} + float getStepSize(PositionNameIndex buttonPosition) const; + virtual bool isPermitted(PositionNameIndex buttonPosition) const; + +private: + const float mSequence[static_cast::type>(PositionNameIndex::POSITIONS_COUNT)]; +}; + +// ---------------------------------------------------------------------- + +//! If hand wheel is in continuous mode (toggled by Step/Continuous" button) this speed setting is applied. +//! In continuous mode the step speed is in percent of max-velocity. +class HandwheelContinuousModeStepSize +{ +public: + enum class PositionNameIndex : uint8_t + { + RotaryButton2percent = 0, + RotaryButton5percent = 1, + RotaryButton10percent = 2, + RotaryButton30percent = 3, + RotaryButton60percent = 4, + RotaryButton100percent = 5, + NA0 = 6, + RotaryButtonUndefined = 7, + POSITIONS_COUNT = 8 + }; + + HandwheelContinuousModeStepSize(); + ~HandwheelContinuousModeStepSize(); + + //! Translates the button position to step size in %. + //! \param buttonPosition + //! \return the step size in percent ℕ ∈ {[0, 100], -1} + float getStepSize(PositionNameIndex buttonPosition) const; + virtual bool isPermitted(PositionNameIndex buttonPosition) const; + +private: + const int8_t mSequence[static_cast::type>(PositionNameIndex::POSITIONS_COUNT)]; +}; + +// ---------------------------------------------------------------------- + +//! If hand wheel is in Lead mode (activated by the feed rotary button) this speed setting is applied. +class HandwheelLeadModeStepSize +{ +public: + enum class PositionNameIndex : uint8_t + { + NA0 = 0, + NA1 = 1, + NA2 = 2, + NA3 = 3, + NA4 = 4, + NA5 = 5, + LEAD = 6, + UNDEFINED = 7, + POSITIONS_COUNT = 8 + }; + + HandwheelLeadModeStepSize(); + ~HandwheelLeadModeStepSize(); + + //! Translates the button position to step size. + //! \param buttonPosition + //! \return the step size ℕ ∈ {1.0, -1.0} + float getStepSize(PositionNameIndex buttonPosition) const; + virtual bool isPermitted(PositionNameIndex buttonPosition) const; + +private: + const float mSequence[static_cast::type>(PositionNameIndex::POSITIONS_COUNT)]; +}; + +// ---------------------------------------------------------------------- + +//! pendant button key code description +class KeyCode +{ +public: + const uint8_t code; + //! default button text as written on pendant (if available) + const char* text; + //! alternative button text as written on pendant (if available) + const char* altText; + bool operator==(const KeyCode& other) const; + bool operator!=(const KeyCode& other) const; + KeyCode(uint8_t code, const char* text, const char* altText); + KeyCode(const KeyCode& other); +}; + +// ---------------------------------------------------------------------- + +std::ostream& operator<<(std::ostream& os, const KeyCode& data); + +// ---------------------------------------------------------------------- + +//! meta-button state which is dependent on the "Fn" modifier button's state +class MetaButtonCodes +{ +public: + const KeyCode& key; + const KeyCode& modifier; + + bool operator==(const MetaButtonCodes& other) const; + bool operator!=(const MetaButtonCodes& other) const; + MetaButtonCodes(const KeyCode& key, const KeyCode& modifier); + virtual ~MetaButtonCodes(); + bool containsKeys(const KeyCode& key, const KeyCode& modifier) const; +}; + +// ---------------------------------------------------------------------- + +//! rotary axis selection button related parameters +class AxisRotaryButtonCodes +{ +public: + const KeyCode off; + const KeyCode x; + const KeyCode y; + const KeyCode z; + const KeyCode a; + const KeyCode b; + const KeyCode c; + const KeyCode undefined; + const std::map codeMap; + + AxisRotaryButtonCodes(); +}; + +// ---------------------------------------------------------------------- + +//! rotary feed button related parameters +class FeedRotaryButtonCodes +{ +public: + const KeyCode speed_0_001; + const KeyCode speed_0_01; + const KeyCode speed_0_1; + const KeyCode speed_1; + const KeyCode percent_60; + const KeyCode percent_100; + const KeyCode lead; + const KeyCode undefined; + const std::map codeMap; + + FeedRotaryButtonCodes(); +}; + +// ---------------------------------------------------------------------- + +//! pendant button related parameters +class ButtonsCode +{ +public: + const KeyCode reset; + const KeyCode stop; + const KeyCode start; + const KeyCode feed_plus; + const KeyCode feed_minus; + const KeyCode spindle_plus; + const KeyCode spindle_minus; + const KeyCode machine_home; + const KeyCode safe_z; + const KeyCode workpiece_home; + const KeyCode spindle_on_off; + const KeyCode function; + const KeyCode probe_z; + const KeyCode macro10; + const KeyCode manual_pulse_generator; + const KeyCode step_continuous; + const KeyCode undefined; + const KeyCode& getKeyCode(uint8_t keyCode) const; + const std::map codeMap; + + ButtonsCode(); +}; + +// ---------------------------------------------------------------------- + +class KeyEventListener +{ +public: + //! Called when button is pressed. + //! \param softwareButton the button pressed + //! \return true if a subsequent re-evaluation should be performed. + //! Example: A button event changes the feed rotary buttons step mode from + //! step to continuous. The button must be re-evaluated, otherwise the + //! button state remains untouched until the next button's event. + virtual bool onButtonPressedEvent(const MetaButtonCodes& metaButton) = 0; + //! Called when button is released. + //! \param softwareButton the button released + //! \return true if a subsequent re-evaluation should be performed. + //! Example: A button event changes the feed rotary buttons step mode from + //! step to continuous. The button must be re-evaluated, otherwise the + //! button state remains untouched until the next button's event. + virtual bool onButtonReleasedEvent(const MetaButtonCodes& metaButton) = 0; + virtual void onAxisActiveEvent(const KeyCode& axis) = 0; + virtual void onAxisInactiveEvent(const KeyCode& axis) = 0; + virtual void onFeedActiveEvent(const KeyCode& feed) = 0; + virtual void onFeedInactiveEvent(const KeyCode& feed) = 0; + virtual bool onJogDialEvent(const HandWheelCounters& counters, int8_t delta) = 0; + virtual ~KeyEventListener(); +}; + +// ---------------------------------------------------------------------- + +std::ostream& operator<<(std::ostream& os, const MetaButtonCodes& data); + +// ---------------------------------------------------------------------- + +class MetaButtonsCodes +{ +public: + const MetaButtonCodes reset; + const MetaButtonCodes macro11; + const MetaButtonCodes stop; + const MetaButtonCodes macro12; + const MetaButtonCodes start; + const MetaButtonCodes macro13; + const MetaButtonCodes feed_plus; + const MetaButtonCodes macro1; + const MetaButtonCodes feed_minus; + const MetaButtonCodes macro2; + const MetaButtonCodes spindle_plus; + const MetaButtonCodes macro3; + const MetaButtonCodes spindle_minus; + const MetaButtonCodes macro4; + const MetaButtonCodes machine_home; + const MetaButtonCodes macro5; + const MetaButtonCodes safe_z; + const MetaButtonCodes macro6; + const MetaButtonCodes workpiece_home; + const MetaButtonCodes macro7; + const MetaButtonCodes spindle_on_off; + const MetaButtonCodes macro8; + const MetaButtonCodes function; + const MetaButtonCodes probe_z; + const MetaButtonCodes macro9; + const MetaButtonCodes macro10; + const MetaButtonCodes macro14; + const MetaButtonCodes manual_pulse_generator; + const MetaButtonCodes macro15; + const MetaButtonCodes step_continuous; + const MetaButtonCodes macro16; + const MetaButtonCodes undefined; + + const std::list buttons; + + MetaButtonsCodes(const ButtonsCode& buttons); + ~MetaButtonsCodes(); + + const MetaButtonCodes& find(const KeyCode& keyCode, const KeyCode& modifierCode) const; +}; + +// ---------------------------------------------------------------------- + +class KeyCodes +{ +public: + static const ButtonsCode Buttons; + static const MetaButtonsCodes Meta; + static const AxisRotaryButtonCodes Axis; + static const FeedRotaryButtonCodes Feed; +}; + +// ---------------------------------------------------------------------- + +class Button +{ +public: + Button(const KeyCode& key); + virtual ~Button(); + virtual const KeyCode& keyCode() const; + virtual bool setKeyCode(const KeyCode& keyCode); + Button& operator=(const Button& other); + +protected: + const KeyCode* mKey; +}; + +// ---------------------------------------------------------------------- + +std::ostream& operator<<(std::ostream& os, const Button& data); + +// ---------------------------------------------------------------------- + +//! meta-button state which is dependent on the "Fn" modifier button's state +class ToggleButton : public Button +{ +public: + ToggleButton(const KeyCode& key, const KeyCode& modifier); + virtual ~ToggleButton(); + virtual const KeyCode& modifierCode() const; + virtual void setModifierCode(KeyCode& modifierCode); + bool containsKeys(const KeyCode& key, const KeyCode& modifier) const; + ToggleButton& operator=(const ToggleButton& other); + +private: + const KeyCode* mModifier; +}; + +// ---------------------------------------------------------------------- + +std::ostream& operator<<(std::ostream& os, const ToggleButton& data); + +// ---------------------------------------------------------------------- + +class RotaryButton : public Button +{ +public: + RotaryButton(const KeyCode& keyCode); + virtual ~RotaryButton(); + virtual bool isPermitted() const = 0; + RotaryButton& operator=(const RotaryButton& other); +}; + +// ---------------------------------------------------------------------- + +std::ostream& operator<<(std::ostream& os, const RotaryButton& data); + +// ---------------------------------------------------------------------- + +class FeedRotaryButton : public RotaryButton +{ +public: + FeedRotaryButton(const KeyCode& keyCode = KeyCodes::Feed.undefined, + HandwheelStepmodes::Mode stepMode = HandwheelStepmodes::Mode::CONTINUOUS, + KeyEventListener* listener = nullptr); + ~FeedRotaryButton(); + virtual bool setKeyCode(const KeyCode& keyCode) override; + void setStepMode(HandwheelStepmodes::Mode stepMode); + HandwheelStepmodes::Mode stepMode() const; + float stepSize() const; + bool isPermitted() const override; + FeedRotaryButton& operator=(const FeedRotaryButton& other); + +private: + HandwheelStepmodes::Mode mStepMode; + bool mIsPermitted; + float mStepSize; + KeyEventListener* mEventListener; + + static const HandwheelStepModeStepSize mStepStepSizeMapper; + static const HandwheelContinuousModeStepSize mContinuousSizeMapper; + static const HandwheelLeadModeStepSize mLeadStepSizeMapper; + + static const std::map mStepKeycodeLut; + static const std::map mContinuousKeycodeLut; + static const std::map mLeadKeycodeLut; + + void update(); +}; + +// ---------------------------------------------------------------------- + +std::ostream& operator<<(std::ostream& os, const FeedRotaryButton& data); + +// ---------------------------------------------------------------------- + +class AxisRotaryButton : public RotaryButton +{ +public: + AxisRotaryButton(const KeyCode& keyCode = KeyCodes::Axis.undefined, KeyEventListener* listener = nullptr); + virtual ~AxisRotaryButton(); + bool isPermitted() const override; + AxisRotaryButton& operator=(const AxisRotaryButton& other); + +private: + KeyEventListener* mEventListener; +}; + +// ---------------------------------------------------------------------- + +std::ostream& operator<<(std::ostream& os, const AxisRotaryButton& data); + +// ---------------------------------------------------------------------- + +class Handwheel +{ +public: + Handwheel(const FeedRotaryButton& feedButton, KeyEventListener* listener = nullptr); + ~Handwheel(); + void setMode(HandWheelCounters::CounterNameToIndex mode); + void count(int8_t delta); + const HandWheelCounters& counters() const; + HandWheelCounters& counters(); + //! En-/disables the incremental counter. + //! \param enabled false if counting should be inhibited, true otherwise + void setEnabled(bool enabled); + +private: + HandWheelCounters mCounters; + bool mIsEnabled{false}; + const FeedRotaryButton& mFeedButton; + KeyEventListener * mEventListener; + std::ostream * mWheelCout; + const char * mPrefix; +}; + +// ---------------------------------------------------------------------- + +std::ostream& operator<<(std::ostream& os, const Handwheel& data); + +// ---------------------------------------------------------------------- + +class ButtonsState +{ +public: + ButtonsState(KeyEventListener* listener = nullptr, const ButtonsState* previousState = nullptr); + ~ButtonsState(); + + ButtonsState& operator=(const ButtonsState& other); + + void update(const KeyCode& keyCode, + const KeyCode& modifierCode, + const KeyCode& axisButton, + const KeyCode& feedButton); + + void clearPressedButtons(); + + const std::list& pressedButtons() const; + const MetaButtonCodes* currentMetaButton() const; + const AxisRotaryButton& axisButton() const; + const FeedRotaryButton& feedButton() const; + FeedRotaryButton& feedButton(); + +private: + std::list mPressedButtons; + const MetaButtonCodes* mCurrentMetaButton; + AxisRotaryButton mAxisButton; + FeedRotaryButton mFeedButton; + const ButtonsState* mPreviousState; + KeyEventListener * mEventListener; +}; + +// ---------------------------------------------------------------------- + +std::ostream& operator<<(std::ostream& os, const ButtonsState& data); + +// ---------------------------------------------------------------------- + +class Display : public KeyEventListener +{ +public: + + enum class AxisPositionMethod + { + RELATIVE, + ABSOLUTE + }; + enum class AxisGroup + { + XYZ, + ABC + }; + + Display(const ButtonsState& currentButtonsState, Hal& hal, UsbOutPackageData& displayData); + + Display(); + + ~Display(); + + virtual bool onButtonPressedEvent(const MetaButtonCodes& metaButton) override; + + virtual bool onButtonReleasedEvent(const MetaButtonCodes& metaButton) override; + + virtual void onAxisActiveEvent(const KeyCode& axis) override; + + virtual void onAxisInactiveEvent(const KeyCode& axis) override; + + virtual void onFeedActiveEvent(const KeyCode& feed) override; + + virtual void onFeedInactiveEvent(const KeyCode& feed) override; + + virtual bool onJogDialEvent(const HandWheelCounters& counters, int8_t delta) override; + + void updateData(); + + void clearData(); + +private: + const ButtonsState& mCurrentButtonsState; + Hal & mHal; + UsbOutPackageData & mDisplayData; + AxisPositionMethod mAxisPositionMethod; + AxisGroup mActiveAxisGroup; +}; + +// ---------------------------------------------------------------------- + +class Pendant : public KeyEventListener +{ +public: + Pendant(Hal& hal, UsbOutPackageData& displayOutData); + ~Pendant(); + + void processEvent(uint8_t keyCode, + uint8_t modifierCode, + uint8_t rotaryButtonAxisKeyCode, + uint8_t rotaryButtonFeedKeyCode, + int8_t handWheelStepCount); + + void updateDisplayData(); + void clearDisplayData(); + + const ButtonsState& currentButtonsState() const; + const ButtonsState& previousButtonsState() const; + const Handwheel& handWheel() const; + Handwheel& handWheel(); + + virtual bool onButtonPressedEvent(const MetaButtonCodes& metaButton) override; + virtual bool onButtonReleasedEvent(const MetaButtonCodes& metaButton) override; + virtual void onAxisActiveEvent(const KeyCode& axis) override; + virtual void onAxisInactiveEvent(const KeyCode& axis) override; + virtual void onFeedActiveEvent(const KeyCode& axis) override; + virtual void onFeedInactiveEvent(const KeyCode& axis) override; + virtual bool onJogDialEvent(const HandWheelCounters& counters, int8_t delta) override; + +private: + Hal& mHal; + ButtonsState mPreviousButtonsState; + ButtonsState mCurrentButtonsState; + Handwheel mHandWheel; + Display mDisplay; + + float mScale; + float mMaxVelocity; + + const char * mPrefix; + std::ostream* mPendantCout; + + void shiftButtonState(); + + void processEvent(const KeyCode& keyCode, + const KeyCode& modifierCode, + const KeyCode& rotaryButtonAxisKeyCode, + const KeyCode& rotaryButtonFeedKeyCode, + int8_t handWheelStepCount); + void dispatchFeedEventToHandwheel(const KeyCode& feed, bool isActive); + void dispatchAxisEventToHandwheel(const KeyCode& axis, bool isActive); + void dispatchAxisEventToHal(const KeyCode& axis, bool isActive); + void dispatchActiveFeedToHal(const KeyCode& feed, bool isActive); + void dispatchFeedValueToHal(); + void dispatchFeedValueToHal(const KeyCode& feed); +}; + +// ---------------------------------------------------------------------- + +std::ostream& operator<<(std::ostream& os, const Pendant& data); +} diff --git a/src/hal/user_comps/xhc-whb04b-6/usb.cc b/src/hal/user_comps/xhc-whb04b-6/usb.cc new file mode 100644 index 0000000000..8e05434258 --- /dev/null +++ b/src/hal/user_comps/xhc-whb04b-6/usb.cc @@ -0,0 +1,850 @@ +/* + Copyright (C) 2017 Raoul Rubien (github.com/rubienr). + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This program 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the program; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. + */ + +#include "./usb.h" + +// system includes +#include +#include +#include +#include +#include + +// 3rd party includes + +// local library includes +#include + +// local includes +#include "./hal.h" +#include "./xhc-whb04b6.h" + +using std::endl; + +namespace XhcWhb04b6 { + + +// ---------------------------------------------------------------------- + +//! This callback function passes received libusb transfer to the object +//! interested in the data. +void usbInputResponseCallback(struct libusb_transfer* transfer) +{ + assert(transfer->user_data != nullptr); + UsbRawInputListener* receiver = reinterpret_cast(transfer->user_data); + receiver->onUsbDataReceived(transfer); +} + +// ---------------------------------------------------------------------- + +const ConstantUsbPackages Usb::ConstantPackages; + + +// ---------------------------------------------------------------------- + +UsbOutPackageBlock::UsbOutPackageBlock() : + asBlock() +{ + assert(sizeof(UsbOutPackageBlockBuffer) == sizeof(UsbOutPackageBlockFields)); +} + +// ---------------------------------------------------------------------- + +UsbInPackageBuffer::UsbInPackageBuffer() : + asBuffer{0} +{ + assert(sizeof(asFields) == sizeof(asBuffer)); +} + +// ---------------------------------------------------------------------- + +UsbEmptyPackage::UsbEmptyPackage() : + UsbInPackage(0x04, 0xff, 0, 0, 0, 0, 0, 0xff) +{ +} + +// ---------------------------------------------------------------------- + +bool UsbEmptyPackage::operator==(const UsbInPackage& other) const +{ + // equality constraints: 0x4 0x? 0x0 0x0 0x0 0x0 0x0 0x? + if ((header == other.header) && + // (notAvailable2 == other.notAvailable2) && + (buttonKeyCode1 == other.buttonKeyCode1) && + (buttonKeyCode2 == other.buttonKeyCode2) && + (rotaryButtonFeedKeyCode == other.rotaryButtonFeedKeyCode) && + (rotaryButtonAxisKeyCode == other.rotaryButtonAxisKeyCode) && + (stepCount == other.stepCount) + // && (crc == other.crc) + ) + { + return true; + } + return false; +} + +// ---------------------------------------------------------------------- + +bool UsbEmptyPackage::operator!=(const UsbInPackage& other) const +{ + return !((*this) == other); +} + +// ---------------------------------------------------------------------- + +UsbSleepPackage::UsbSleepPackage() : + UsbInPackage(0x04, 0xff, 0xff, 0xff, 0xff, 0xff, -127, 0xff) +{ +} + +// ---------------------------------------------------------------------- + +bool UsbSleepPackage::operator==(const UsbInPackage& other) const +{ + // equality constraints: 0x4 0x? 0x? 0x? 0x? 0x? 0x? 0x? + if ((header == other.header) + // && (notAvailable2 == other.notAvailable2) + // && (buttonKeyCode1 == other.buttonKeyCode1) + // && (buttonKeyCode2 == other.buttonKeyCode2) + // && (rotaryButtonFeedKeyCode == other.rotaryButtonFeedKeyCode) + // && (rotaryButtonAxisKeyCode == other.rotaryButtonAxisKeyCode) + // && (stepCount == other.stepCount) + // && (crc == other.crc) + ) + { + return true; + } + return false; +} + +// ---------------------------------------------------------------------- + +bool UsbSleepPackage::operator!=(const UsbInPackage& other) const +{ + return !((*this) == other); +} + +// ---------------------------------------------------------------------- + +ConstantUsbPackages::ConstantUsbPackages() : + sleepPackage(), + emptyPackage() +{ +} + +// ---------------------------------------------------------------------- + +uint16_t Usb::getUsbVendorId() const +{ + return usbVendorId; +} + +// ---------------------------------------------------------------------- + +uint16_t Usb::getUsbProductId() const +{ + return usbProductId; +} + +// ---------------------------------------------------------------------- + + +const bool Usb::isDeviceOpen() const +{ + return deviceHandle != nullptr; +} + +// ---------------------------------------------------------------------- + +libusb_context** Usb::getContextReference() +{ + return &context; +} + +// ---------------------------------------------------------------------- + +libusb_context* Usb::getContext() +{ + return context; +} + +// ---------------------------------------------------------------------- + +void Usb::setContext(libusb_context* context) +{ + this->context = context; +} + +// ---------------------------------------------------------------------- + +libusb_device_handle* Usb::getDeviceHandle() +{ + return deviceHandle; +} + +// ---------------------------------------------------------------------- + +void Usb::setDeviceHandle(libusb_device_handle* deviceHandle) +{ + this->deviceHandle = deviceHandle; +} + +// ---------------------------------------------------------------------- + +bool Usb::isWaitForPendantBeforeHalEnabled() const +{ + return isWaitWithTimeout; +} + +// ---------------------------------------------------------------------- + +bool Usb::getDoReconnect() const +{ + return mDoReconnect; +} + +// ---------------------------------------------------------------------- + +void Usb::setDoReconnect(bool doReconnect) +{ + this->mDoReconnect = doReconnect; +} + +// ---------------------------------------------------------------------- + +Usb::Usb(const char* name, OnUsbInputPackageListener& onDataReceivedCallback, Hal& hal) : + sleepState(), + inputPackageBuffer(), + outputPackageBuffer(), + mDataHandler(onDataReceivedCallback), + mRawDataCallback(usbInputResponseCallback), + mHal(hal), + inTransfer(libusb_alloc_transfer(0)), + outTransfer(libusb_alloc_transfer(0)), + verboseTxOut(&devNull), + verboseRxOut(&devNull), + verboseInitOut(&devNull), + mName(name) +{ + gettimeofday(&sleepState.mLastWakeupTimestamp, nullptr); +} + +// ---------------------------------------------------------------------- + +void Usb::sendDisplayData() +{ + outputPackageBuffer.asBlocks.init(&outputPackageData); + + if (mIsSimulationMode) + { + *verboseTxOut << "out 0x" << outputPackageBuffer.asBlocks << endl << + std::dec << "out size " << sizeof(outputPackageBuffer.asBlockArray) << "B " << outputPackageData + << endl; + } + + for (size_t idx = 0; idx < (sizeof(outputPackageBuffer.asBlockArray) / sizeof(UsbOutPackageBlockFields)); idx++) + { + UsbOutPackageBlock& block = outputPackageBuffer.asBlockArray[idx]; + size_t blockSize = sizeof(UsbOutPackageBlock); + // see also + // http://www.beyondlogic.org/usbnutshell/usb6.shtml + // http://libusb.sourceforge.net/api-1.0/group__desc.html + // http://libusb.sourceforge.net/api-1.0/group__misc.html + int r = libusb_control_transfer(deviceHandle, + // send to hid descriptor: bmRequestType == LIBUSB_DT_HID == 0x21 == (interface | endpoint) + LIBUSB_DT_HID, + // bRequest == LIBUSB_REQUEST_SET_CONFIGURATION == 0x09 == set configuration + LIBUSB_REQUEST_SET_CONFIGURATION, + // wValue: if bRequest == LIBUSB_REQUEST_SET_CONFIGURATION the configuration value + 0x0306, + // wIndex, device interface number + 0x00, + // data to transmit + block.asBuffer.asBytes, + // wLength, data length + blockSize, + // transfer timeout[ms] + 0); + + if (r < 0) + { + std::cerr << "transmission failed, try to reconnect ..." << endl; + setDoReconnect(true); + return; + } + } +} + +// ---------------------------------------------------------------------- + +void UsbOutPackageAxisCoordinate::setCoordinate(const float& coordinate) +{ + float coordinateAbs = rtapi_fabs(coordinate); + if (coordinate == coordinateAbs) + { + coordinateSign = 0; + } + else + { + coordinateSign = 1; + } + + uint32_t scaledCoordinate = static_cast(rtapi_rint(coordinateAbs * 10000.0)); + integerValue = static_cast(scaledCoordinate / 10000); + fractionValue = static_cast(scaledCoordinate % 10000); +} + +// ---------------------------------------------------------------------- + +void UsbOutPackageAxisCoordinate::clear() +{ + integerValue = 0; + fractionValue = 0; + coordinateSign = 0; +} + +// ---------------------------------------------------------------------- + +std::ostream& operator<<(std::ostream& os, const UsbOutPackageAxisCoordinate& coordinate) +{ + std::ios init(NULL); + init.copyfmt(os); + os << ((coordinate.coordinateSign == 1) ? "-" : "+") << std::setfill('0') + << std::setw(4) << static_cast(coordinate.integerValue) << "." + << std::setw(4) << static_cast(coordinate.fractionValue); + + os.copyfmt(init); + return os; +} + +// ---------------------------------------------------------------------- + +UsbOutPackageBlockFields::UsbOutPackageBlockFields() : + reportId(0x06), + __padding0(0), + __padding1(0), + __padding2(0), + __padding3(0), + __padding4(0), + __padding5(0), + __padding6(0) +{ +} + +// ---------------------------------------------------------------------- + +void UsbOutPackageBlockFields::init(const void* data) +{ + reportId = 0x06; + __padding0 = reinterpret_cast(data)[0]; + __padding1 = reinterpret_cast(data)[1]; + __padding2 = reinterpret_cast(data)[2]; + __padding3 = reinterpret_cast(data)[3]; + __padding4 = reinterpret_cast(data)[4]; + __padding5 = reinterpret_cast(data)[5]; + __padding6 = reinterpret_cast(data)[6]; +} + +// ---------------------------------------------------------------------- + +std::ostream& operator<<(std::ostream& os, const UsbOutPackageBlockFields& block) +{ + std::ios init(NULL); + init.copyfmt(os); + + os << std::hex << std::setfill('0') << std::setw(2) << static_cast(block.reportId) << std::setw(2) + << static_cast(block.__padding0) << std::setw(2) << static_cast(block.__padding1) + << std::setw(2) << static_cast(block.__padding2) << std::setw(2) + << static_cast(block.__padding3) << std::setw(2) << static_cast(block.__padding4) + << std::setw(2) << static_cast(block.__padding5) << std::setw(2) + << static_cast(block.__padding6); + + os.copyfmt(init); + return os; +} + +// ---------------------------------------------------------------------- + +UsbOutPackageBlocks::UsbOutPackageBlocks() : + block0(), + block1(), + block2() +{ +} + +// ---------------------------------------------------------------------- + +void UsbOutPackageBlocks::init(const UsbOutPackageData* data) +{ + const uint8_t* d = reinterpret_cast(data); + block0.init(d += 0); + block1.init(d += 7); + block2.init(d + 7); +} + +// ---------------------------------------------------------------------- + + +std::ostream& operator<<(std::ostream& os, const UsbOutPackageBlocks& blocks) +{ + return os << blocks.block0 << " " << blocks.block1 << " " << blocks.block2; +} + +// ---------------------------------------------------------------------- + +UsbOutPackageData::UsbOutPackageData() +{ + clear(); +} + +// ---------------------------------------------------------------------- + +void UsbOutPackageData::clear() +{ + header = 0xfdfe; + //! \sa WhbContext::printCrcDebug(const UsbInPackage&, const UsbOutPackageData&) + seed = 0xfe; + displayModeFlags.asByte = 0; + + row1Coordinate.clear(); + row2Coordinate.clear(); + row3Coordinate.clear(); + + feedRate = 0; + spindleSpeed = 0; + padding = 0; +} + +// ---------------------------------------------------------------------- + +std::ostream& operator<<(std::ostream& os, const UsbOutPackageData& data) +{ + std::ios init(NULL); + init.copyfmt(os); + + bool enableMultiLine = false; + if (enableMultiLine) + { + os << std::hex << std::setfill('0') << "header 0x" << std::setw(2) << data.header << endl + << "day of month 0x" + << std::setw(2) + << static_cast(data.seed) << endl << "status 0x" << std::setw(2) + << static_cast(data.displayModeFlags.asByte) << endl << std::dec << "coordinate1 " + << data.row1Coordinate << endl << "coordinate2 " << data.row2Coordinate << endl << "coordinate3 " + << data.row3Coordinate << endl << "feed rate " << data.feedRate << endl << "spindle rps " + << data.spindleSpeed; + } + else + { + os << std::hex << std::setfill('0') << "hdr 0x" << std::setw(4) << data.header << " dom 0x" << std::setw(2) + << static_cast(data.seed) << " status 0x" << std::setw(2) + << static_cast(data.displayModeFlags.asByte) << std::dec << " coord1 " + << data.row1Coordinate << " coord2 " << data.row2Coordinate << " coord3 " + << data.row3Coordinate << " feed " << std::setw(4) << data.feedRate << " spindle rps " + << std::setw(5) << data.spindleSpeed; + } + os.copyfmt(init); + return os; +} + +// ---------------------------------------------------------------------- + +UsbOutPackageBuffer::UsbOutPackageBuffer() : + asBlocks() +{ + if (false) + { + std::cout << "sizeof usb data " << sizeof(UsbOutPackageData) << endl + << " blocks count " << sizeof(UsbOutPackageBlocks) / sizeof(UsbOutPackageBlockFields) << endl + << " sizeof block " << sizeof(UsbOutPackageBlockFields) << endl + << " sizeof blocks " << sizeof(UsbOutPackageBlocks) << endl + << " sizeof array " << sizeof(asBlockArray) << endl + << " sizeof package " << sizeof(UsbOutPackageData) << endl; + } + assert(sizeof(UsbOutPackageBlocks) == sizeof(asBlockArray)); + size_t blocksCount = sizeof(UsbOutPackageBlocks) / sizeof(UsbOutPackageBlockFields); + assert((sizeof(UsbOutPackageData) + blocksCount) == sizeof(UsbOutPackageBlocks)); +} + +// ---------------------------------------------------------------------- + +UsbInPackage::UsbInPackage() : + header(0), + randomByte(0), + buttonKeyCode1(0), + buttonKeyCode2(0), + rotaryButtonFeedKeyCode(0), + rotaryButtonAxisKeyCode(0), + stepCount(0), + crc(0) +{ +} + +// ---------------------------------------------------------------------- + +UsbInPackage::UsbInPackage(const uint8_t notAvailable1, const uint8_t notAvailable2, const uint8_t buttonKeyCode1, + const uint8_t buttonKeyCode2, const uint8_t rotaryButtonFeedKeyCode, + const uint8_t rotaryButtonAxisKeyCode, const int8_t stepCount, const uint8_t crc) : + header(notAvailable1), + randomByte(notAvailable2), + buttonKeyCode1(buttonKeyCode1), + buttonKeyCode2(buttonKeyCode2), + rotaryButtonFeedKeyCode(rotaryButtonFeedKeyCode), + rotaryButtonAxisKeyCode(rotaryButtonAxisKeyCode), + stepCount(stepCount), + crc(crc) +{ +} + +// ---------------------------------------------------------------------- + +void Usb::setSimulationMode(bool isSimulationMode) +{ + mIsSimulationMode = isSimulationMode; +} + +// ---------------------------------------------------------------------- + +void Usb::setIsRunning(bool enableRunning) +{ + mIsRunning = enableRunning; +} + +// ---------------------------------------------------------------------- + +void Usb::requestTermination() +{ + mIsRunning = false; +} + +// ---------------------------------------------------------------------- + +bool Usb::setupAsyncTransfer() +{ + assert(inTransfer != nullptr); + libusb_fill_bulk_transfer(inTransfer, deviceHandle, + (0x1 | LIBUSB_ENDPOINT_IN), inputPackageBuffer.asBuffer, + sizeof(inputPackageBuffer.asBuffer), mRawDataCallback, + //! pass this object as callback data + static_cast(this), + //! timeout[ms] + 750); + int r = libusb_submit_transfer(inTransfer); + assert(0 == r); + return (0 == r); +} + +// ---------------------------------------------------------------------- + +void Usb::onUsbDataReceived(struct libusb_transfer* transfer) +{ + assert(mHal.isInitialized()); + + int expectedPackageSize = static_cast(sizeof(UsbInPackage)); + std::ios init(NULL); + init.copyfmt(*verboseTxOut); + switch (transfer->status) + { + case (LIBUSB_TRANSFER_COMPLETED): + // sleep mode was previously detected, drop current package + if (sleepState.mDropNextInPackage) + { + if (Usb::ConstantPackages.sleepPackage != inputPackageBuffer.asFields) + { + *verboseTxOut << "expected sleep package starting with " << std::hex << std::setfill('0') + << std::setw(2) + << static_cast(Usb::ConstantPackages.sleepPackage.header) + << " but got " << std::hex << std::setfill('0') << std::setw(2) + << static_cast(inputPackageBuffer.asFields.header) << endl; + verboseTxOut->copyfmt(init); + } + + sleepState.mDropNextInPackage = false; + goto ___TRUNCATE_PACKAGE; + } + + if (transfer->actual_length == expectedPackageSize) + { + //! detect pendant going to sleep: + //! when powering off pedant sends two packages + //! 1st: \ref UsbEmptyPackage + //! 2nd: \ref UsbSleepPackage + if (Usb::ConstantPackages.emptyPackage == inputPackageBuffer.asFields) + { + sleepState.mDropNextInPackage = true; + mHal.setIsPendantSleeping(true); + if (mIsSimulationMode) + { + struct timeval now; + gettimeofday(&now, nullptr); + *verboseTxOut << "event going to sleep: device was idle for " + << (now.tv_sec - sleepState.mLastWakeupTimestamp.tv_sec) << " seconds" << endl; + } + } + // on regular package + else + { + if (mHal.getIsPendantSleeping()) + { + mHal.setIsPendantSleeping(false); + if (mIsSimulationMode) + { + struct timeval now; + gettimeofday(&now, nullptr); + *verboseTxOut << "woke up: device was sleeping for " + << (now.tv_sec - sleepState.mLastWakeupTimestamp.tv_sec) << " seconds" + << endl; + } + gettimeofday(&sleepState.mLastWakeupTimestamp, nullptr); + } + } + // pass structured transfer to usb data handler + mDataHandler.onInputDataReceived(inputPackageBuffer.asFields); + } + else + { + std::cerr << "received unexpected package size: expected=" << (transfer->actual_length) << ", current=" + << expectedPackageSize << endl; + } + + if (mIsRunning) + { + setupAsyncTransfer(); + } + + break; + + ___TRUNCATE_PACKAGE: + case (LIBUSB_TRANSFER_TIMED_OUT): + if (mIsRunning) + { + setupAsyncTransfer(); + } + break; + + case (LIBUSB_TRANSFER_CANCELLED): + break; + + case (LIBUSB_TRANSFER_STALL): + case (LIBUSB_TRANSFER_NO_DEVICE): + case (LIBUSB_TRANSFER_OVERFLOW): + case (LIBUSB_TRANSFER_ERROR): + std::cerr << "transfer error: " << transfer->status << endl; + requestTermination(); + break; + + default: + std::cerr << "unknown transfer status: " << transfer->status << endl; + requestTermination(); + break; + } + //libusb_free_transfer(transfer); +} + +// ---------------------------------------------------------------------- + +Usb::~Usb() +{ +} + +// ---------------------------------------------------------------------- + +void Usb::enableVerboseTx(bool enable) +{ + if (enable) + { + verboseTxOut = &std::cout; + } + else + { + verboseTxOut = &devNull; + } +} + +// ---------------------------------------------------------------------- + +void Usb::enableVerboseRx(bool enable) +{ + if (enable) + { + verboseRxOut = &std::cout; + } + else + { + verboseRxOut = &devNull; + } +} + +// ---------------------------------------------------------------------- + +void Usb::enableVerboseInit(bool enable) +{ + if (enable) + { + verboseInitOut = &std::cout; + } + else + { + verboseInitOut = &devNull; + } +} + +// ---------------------------------------------------------------------- + +bool Usb::init() +{ + if (getDoReconnect()) + { + int pauseSecs = 3; + *verboseInitOut << "init pausing " << pauseSecs << "s, waiting for device to be gone ..."; + while ((pauseSecs--) >= 0) + { + *verboseInitOut << "." << std::flush; + sleep(1); + } + setDoReconnect(false); + *verboseInitOut << " done" << endl; + } + + *verboseInitOut << "init usb context ..."; + int r = libusb_init(&context); + if (r != 0) + { + std::cerr << endl << "failed to initialize usb context" << endl; + return false; + } + *verboseInitOut << " ok" << endl; + + libusb_log_level logLevel = LIBUSB_LOG_LEVEL_INFO; + //logLevel = LIBUSB_LOG_LEVEL_DEBUG; + libusb_set_debug(context, logLevel); + + std::ios init(NULL); + init.copyfmt(*verboseInitOut); + if (isWaitWithTimeout) + { + *verboseInitOut << "init waiting maximum " << static_cast(mWaitSecs) << "s for device " + << mName << " vendorId=0x" << std::hex << std::setfill('0') << std::setw(2) << usbVendorId + << " productId=0x" << std::setw(2) << usbProductId << " ..."; + } + else + { + *verboseInitOut << "init not waiting for device " << mName + << " vendorId=0x" << std::hex << std::setfill('0') << std::setw(2) << usbVendorId + << " productId=0x" << std::setw(2) << usbProductId << std::dec + << ", will continue in " << static_cast(mWaitSecs) << "s ..."; + } + verboseInitOut->copyfmt(init); + + do + { + libusb_device** devicesReference; + ssize_t devicesCount = libusb_get_device_list(context, &devicesReference); + if (devicesCount < 0) + { + std::cerr << endl << "failed to get device list" << endl; + return false; + } + + deviceHandle = libusb_open_device_with_vid_pid(context, usbVendorId, usbProductId); + libusb_free_device_list(devicesReference, 1); + *verboseInitOut << "." << std::flush; + if (!isDeviceOpen()) + { + *verboseInitOut << "." << std::flush; + if (isWaitWithTimeout) + { + *verboseInitOut << "." << std::flush; + if ((mWaitSecs--) <= 0) + { + std::cerr << endl << "timeout exceeded, exiting" << endl; + return false; + } + } + sleep(1); + } + } while (!isDeviceOpen() && mIsRunning); + *verboseInitOut << " ok" << endl + << "init " << mName << " device found" << endl; + + if (isDeviceOpen()) + { + *verboseInitOut << "init detaching active kernel driver ..."; + if (libusb_kernel_driver_active(deviceHandle, 0) == 1) + { + int r = libusb_detach_kernel_driver(deviceHandle, 0); + assert(0 == r); + *verboseInitOut << " ok" << endl; + } + else + { + *verboseInitOut << " already detached" << endl; + } + *verboseInitOut << "init claiming interface ..."; + int r = libusb_claim_interface(deviceHandle, 0); + if (r != 0) + { + std::cerr << endl << "failed to claim interface" << endl; + return false; + } + *verboseInitOut << " ok" << endl; + } + return true; +} + +// ---------------------------------------------------------------------- + +void Usb::setWaitWithTimeout(uint8_t waitSecs) +{ + mWaitSecs = waitSecs; + if (mWaitSecs > 0) + { + isWaitWithTimeout = true; + return; + } + isWaitWithTimeout = false; +} + +// ---------------------------------------------------------------------- + +UsbOutPackageData& Usb::getOutputPackageData() +{ + return outputPackageData; +} + +// ---------------------------------------------------------------------- + +SleepDetect::SleepDetect() : + mDropNextInPackage(false), + mLastWakeupTimestamp() +{ +} + +// ---------------------------------------------------------------------- + +UsbRawInputListener::~UsbRawInputListener() +{ +} + +// ---------------------------------------------------------------------- + +OnUsbInputPackageListener::~OnUsbInputPackageListener() +{ +} +} diff --git a/src/hal/user_comps/xhc-whb04b-6/usb.h b/src/hal/user_comps/xhc-whb04b-6/usb.h new file mode 100644 index 0000000000..6371b0985d --- /dev/null +++ b/src/hal/user_comps/xhc-whb04b-6/usb.h @@ -0,0 +1,387 @@ +/* + Copyright (C) 2017 Raoul Rubien (github.com/rubienr) + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This program 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the program; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. + */ + +#pragma once + +// system includes +#include +#include + +// 3rd party includes + +// local library includes + +// local includes + +// forward declarations +struct libusb_device_handle; +struct libusb_context; +struct libusb_transfer; + +namespace XhcWhb04b6 { + +// forward declarations +class Hal; +class Usb; + +// ---------------------------------------------------------------------- + +//! Axis coordinate structure as sent via usb. +//! Caution: do not reorder fields! +class UsbOutPackageAxisCoordinate +{ +public: + uint16_t integerValue; + uint16_t fractionValue :15; + uint16_t coordinateSign :1; + void setCoordinate(const float& coordinate); + void clear(); +} __attribute__((packed)); + + +// ---------------------------------------------------------------------- + +class DisplayIndicatorStepMode +{ +public: + //! \see DisplayIndicatorBitFields::stepMode + enum class StepMode : uint8_t + { + //! Displays "CON:%" according to feed rotary button position: + //! CON:2%, CON:5%, CON:10%, CON:30%, CON:60%, CON:100% + CONTINUOUS = 0x00, + //! Displays "STP: " according to feed rotary button position: + //! STP:0.001, STP:0.01, STP:0.1, STP:1.0. + //! On 60%, 100% or Lead still displays "STP: 1.0" (firmware bug). + STEP = 0x01, + //! Displays "MPG %" according to feed rotary button position: + //! MPG:2%, MPG:5%, MPG:10%, MPG:30%, MPG:60%, MPG:100%. + MANUAL_PULSE_GENERATOR = 0x02, + //! Displays according to feed rotary button position: + //! 2%, 5%, 10%, 30%, 60%, 100%. + PERCENT = 0x03 + }; +}; + +// ---------------------------------------------------------------------- + +//! Caution: do not reorder fields! +class DisplayIndicatorBitFields +{ +public: + //! \see DisplayIndicatorStepMode + uint8_t stepMode : 2; + // TODO: investigate the exact meaning of the yet still unknown bit field + //! unknown flags + uint8_t unknown : 4; + //! if flag set displays "RESET", \ref stepMode otherwise + uint8_t isReset : 1; + //! if flag set axis names are "X1" "X1" ... "C1", "X" "Y" ... "C" otherwise + uint8_t isRelativeCoordinate : 1; +} __attribute__((packed)); + +// ---------------------------------------------------------------------- + +//! Caution: do not reorder fields! +union DisplayIndicator +{ +public: + uint8_t asByte; + DisplayIndicatorBitFields asBitFields; + DisplayIndicator(); +} __attribute__((packed)); + + +// ---------------------------------------------------------------------- + +//! Convenience structure for accessing data fields in output package stream. +//! Caution: do not reorder fields! +class UsbOutPackageData +{ +public: + //! constant: 0xfdfe + uint16_t header; + uint8_t seed; + DisplayIndicator displayModeFlags; + UsbOutPackageAxisCoordinate row1Coordinate; + UsbOutPackageAxisCoordinate row2Coordinate; + UsbOutPackageAxisCoordinate row3Coordinate; + //! on feed+/- button pressed shown on display + uint16_t feedRate; + //! on spindle+/- button pressed shown on display + uint16_t spindleSpeed; + UsbOutPackageData(); + void clear(); + +private: + // TODO: investigate if this is still needed. it was needed when copying data chunks to blocks to avoid invalid read + uint8_t padding; +} __attribute__((packed)); + +// ---------------------------------------------------------------------- + +//! Convenience structure for accessing data in input package stream. +//! Caution: do not reorder fields! +class UsbInPackage +{ +public: + //! constant 0x04 + const uint8_t header; + const uint8_t randomByte; + const uint8_t buttonKeyCode1; + const uint8_t buttonKeyCode2; + const uint8_t rotaryButtonFeedKeyCode; + const uint8_t rotaryButtonAxisKeyCode; + const int8_t stepCount; + const uint8_t crc; + UsbInPackage(); + UsbInPackage(const uint8_t notAvailable1, const uint8_t notAvailable2, const uint8_t buttonKeyCode1, + const uint8_t buttonKeyCode2, const uint8_t rotaryButtonFeedKeyCode, + const uint8_t rotaryButtonAxisKeyCode, const int8_t stepCount, const uint8_t crc); +}__attribute__((packed)); + +// ---------------------------------------------------------------------- + +//! This package is sent as last but one package before xhc-whb04-6 is powered off, +//! and is meant to be used with operator== for comparison. +class UsbEmptyPackage : + public UsbInPackage +{ +public: + + UsbEmptyPackage(); + //! caution: it is not guaranteed that (this == \p other) == (\p other == this) + bool operator==(const UsbInPackage& other) const; + //! \see operator==(const UsbInPackage&) + bool operator!=(const UsbInPackage& other) const; +} __attribute__((packed)); + +// ---------------------------------------------------------------------- + +//! This package is sent as last package before xhc-whb04-6 is powered off, +//! and is meant to be used with operator== for comparison. +class UsbSleepPackage : + public UsbInPackage +{ +public: + UsbSleepPackage(); + //! caution: it is not guaranteed that (this == \p other) == (\p other == this) + bool operator==(const UsbInPackage& other) const; + //! \see operator==(const UsbInPackage&) + bool operator!=(const UsbInPackage& other) const; +} __attribute__((packed)); + +// ---------------------------------------------------------------------- + +//! set of constant usb packages +class ConstantUsbPackages +{ +public: + const UsbSleepPackage sleepPackage; + const UsbEmptyPackage emptyPackage; + ConstantUsbPackages(); +}; + +// ---------------------------------------------------------------------- + +class OnUsbInputPackageListener +{ +public: + //! callback with structured input data + virtual void onInputDataReceived(const UsbInPackage& inPackage) = 0; + + virtual ~OnUsbInputPackageListener(); +}; + +// ---------------------------------------------------------------------- + +class UsbRawInputListener +{ +public: + //! callback with raw input data + virtual void onUsbDataReceived(struct libusb_transfer* transfer) = 0; + + virtual ~UsbRawInputListener(); +}; + +// ---------------------------------------------------------------------- + +//! Convenience structure for initializing a transmission block. +//! Caution: do not reorder fields! +class UsbOutPackageBlockFields +{ +public: + //! constant 0x06 + uint8_t reportId; + uint8_t __padding0; + uint8_t __padding1; + uint8_t __padding2; + uint8_t __padding3; + uint8_t __padding4; + uint8_t __padding5; + uint8_t __padding6; + UsbOutPackageBlockFields(); + void init(const void* data); +} __attribute__((packed)); + +// ---------------------------------------------------------------------- + +//! Convenience structure for accessing a block as byte buffer. +class UsbOutPackageBlockBuffer +{ +public: + uint8_t asBytes[sizeof(UsbOutPackageBlockFields)]; +} __attribute__((packed)); + + +// ---------------------------------------------------------------------- + +union UsbOutPackageBlock +{ +public: + UsbOutPackageBlockBuffer asBuffer; + UsbOutPackageBlockFields asBlock; + UsbOutPackageBlock(); +} __attribute__((packed)); + +// ---------------------------------------------------------------------- + +//! Convenience structure for initializing a transmission package's blocks. +//! Caution: do not reorder fields! +class UsbOutPackageBlocks +{ +public: + UsbOutPackageBlockFields block0; + UsbOutPackageBlockFields block1; + UsbOutPackageBlockFields block2; + UsbOutPackageBlocks(); + void init(const UsbOutPackageData* data); +} __attribute__((packed)); + +// ---------------------------------------------------------------------- + +//! Convenience structure for casting data in package stream. +//! Caution: do not reorder fields! +union UsbOutPackageBuffer +{ +public: + UsbOutPackageBlock asBlockArray[sizeof(UsbOutPackageBlocks) / sizeof(UsbOutPackageBlock)]; + UsbOutPackageBlocks asBlocks; + UsbOutPackageBuffer(); +} __attribute__((packed)); + +// ---------------------------------------------------------------------- + +//! Convenience structure for casting data in package stream. +//! Caution: do not reorder fields! +union UsbInPackageBuffer +{ +public: + const UsbInPackage asFields; + uint8_t asBuffer[sizeof(UsbInPackage)]; + UsbInPackageBuffer(); +} __attribute__((packed)); + +// ---------------------------------------------------------------------- + +//! pendant sleep/idle state parameters +class SleepDetect +{ + friend Usb; + +public: + + SleepDetect(); + +private: + bool mDropNextInPackage; + struct timeval mLastWakeupTimestamp; +}; + +// ---------------------------------------------------------------------- + +//! USB related parameters +class Usb : public UsbRawInputListener +{ +public: + static const ConstantUsbPackages ConstantPackages; + //! \param name device string used for printing messages + //! \param onDataReceivedCallback called when received data is ready + Usb(const char* name, OnUsbInputPackageListener& onDataReceivedCallback, Hal &hal); + ~Usb(); + uint16_t getUsbVendorId() const; + uint16_t getUsbProductId() const; + const bool isDeviceOpen() const; + libusb_context** getContextReference(); + libusb_context* getContext(); + void setContext(libusb_context* context); + libusb_device_handle* getDeviceHandle(); + void setDeviceHandle(libusb_device_handle* deviceHandle); + bool isWaitForPendantBeforeHalEnabled() const; + bool getDoReconnect() const; + void setDoReconnect(bool doReconnect); + void onUsbDataReceived(struct libusb_transfer* transfer) override; + void setSimulationMode(bool isSimulationMode); + void setIsRunning(bool enableRunning); + void requestTermination(); + //! Do offer a HAL memory before calling this method. + //! \sa takeHalMemoryReference(HalMemory *) + bool setupAsyncTransfer(); + void sendDisplayData(); + void enableVerboseTx(bool enable); + void enableVerboseRx(bool enable); + void enableVerboseInit(bool enable); + bool init(); + void setWaitWithTimeout(uint8_t waitSecs); + + UsbOutPackageData& getOutputPackageData(); + +private: + const uint16_t usbVendorId{0x10ce}; + const uint16_t usbProductId{0xeb93}; + libusb_context * context{nullptr}; + libusb_device_handle* deviceHandle{nullptr}; + bool mDoReconnect{false}; + bool isWaitWithTimeout{false}; + bool mIsSimulationMode{false}; + SleepDetect sleepState; + bool mIsRunning{false}; + UsbInPackageBuffer inputPackageBuffer; + UsbOutPackageBuffer outputPackageBuffer; + UsbOutPackageData outputPackageData; + OnUsbInputPackageListener& mDataHandler; + void (* const mRawDataCallback)(struct libusb_transfer*); + Hal & mHal; + struct libusb_transfer* inTransfer{nullptr}; + struct libusb_transfer* outTransfer{nullptr}; + std::ostream devNull{nullptr}; + std::ostream* verboseTxOut{nullptr}; + std::ostream* verboseRxOut{nullptr}; + std::ostream* verboseInitOut{nullptr}; + const char * mName{nullptr}; + uint8_t mWaitSecs{0}; +}; + +// ---------------------------------------------------------------------- + +std::ostream& operator<<(std::ostream& os, const UsbOutPackageAxisCoordinate& coordinate); +std::ostream& operator<<(std::ostream& os, const UsbOutPackageData& data); +std::ostream& operator<<(std::ostream& os, const UsbOutPackageBlockFields& block); +std::ostream& operator<<(std::ostream& os, const UsbOutPackageBlocks& blocks); +} diff --git a/src/hal/user_comps/xhc-whb04b-6/xhc-whb04b6.cc b/src/hal/user_comps/xhc-whb04b-6/xhc-whb04b6.cc new file mode 100644 index 0000000000..598a4782ef --- /dev/null +++ b/src/hal/user_comps/xhc-whb04b-6/xhc-whb04b6.cc @@ -0,0 +1,720 @@ +/* + Copyright (C) 2017 Raoul Rubien (github.com/rubienr) + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This program 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the program; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. + */ + +#include "./xhc-whb04b6.h" + +// system includes +#include +#include +#include +#include +#include + +// 3rd party includes + +// local library includes + +// local includes + +using std::endl; + +namespace XhcWhb04b6 { + +// ---------------------------------------------------------------------- + +void XhcWhb04b6Component::initHal() +{ + mHal.init(mMetaButtons, mKeyCodes); +} + +// ---------------------------------------------------------------------- + +void XhcWhb04b6Component::teardownHal() +{ + hal_exit(mHal.getHalComponentId()); +} + +// ---------------------------------------------------------------------- + +const char* XhcWhb04b6Component::getName() const +{ + return mName; +} + +// ---------------------------------------------------------------------- + +const char* XhcWhb04b6Component::getHalName() const +{ + return mHal.getHalComponentName(); +} + +// ---------------------------------------------------------------------- + +void XhcWhb04b6Component::printCrcDebug(const UsbInPackage& inPackage, const UsbOutPackageData& outPackageBuffer) const +{ + std::ios init(NULL); + init.copyfmt(*mRxCout); + *mRxCout << std::setfill('0') << std::hex; + + // calculate checksum on button released, jog dial or rotary button change + if (inPackage.buttonKeyCode1 == mKeyCodes.Buttons.undefined.code) + { + bool isValid = (inPackage.crc == (inPackage.randomByte & outPackageBuffer.seed)); + + if (isValid) + { + if (mIsCrcDebuggingEnabled) + { + *mRxCout << "crc checksum OK"; + } + } + else + { + *mRxCout << "warn checksum error" << endl; + } + mRxCout->copyfmt(init); + return; + } + + // TODO: implement this experimental code correctly + // once CRC decode/encode is implemented, it can be applied on received usb data + + std::bitset<8> random(inPackage.randomByte), buttonKeyCode(inPackage.buttonKeyCode1), crc(inPackage.crc); + std::bitset<8> delta(0); + + if (inPackage.randomByte > inPackage.crc) + { + delta = inPackage.randomByte - inPackage.crc; + } + else + { + delta = inPackage.crc - inPackage.randomByte; + } + delta = inPackage.randomByte - inPackage.crc; + + if (mIsCrcDebuggingEnabled) + { + *mRxCout << endl; + *mRxCout << "0x key " << std::setw(8) << static_cast(inPackage.buttonKeyCode1) + << " random " << std::setw(8) << static_cast(inPackage.randomByte) + << " crc " << std::setw(8) << static_cast(inPackage.crc) + << " delta " << std::setw(8) << static_cast(delta.to_ulong()) << endl; + + *mRxCout << "0b key " << buttonKeyCode + << " random " << random + << " crc " << crc + << " delta " << delta << endl; + } + + //! \brief On button pressed checksum calculation. + //! Experimental: checksum generator not clear yet, but this is a good starting point. + //! The implementation has several flaws, but works with seed 0xfe and 0xff (which is a bad seed). + //! \sa UsbOutPackageData::seed + //! The checksum implementation does not work reliable with other seeds. + std::bitset<8> seed(outPackageBuffer.seed), nonSeed(~seed); + std::bitset<8> nonSeedAndRandom(nonSeed & random); + std::bitset<8> keyXorNonSeedAndRandom(buttonKeyCode ^ nonSeedAndRandom); + uint16_t expectedCrc = static_cast(inPackage.crc); + uint16_t calculatedCrc = static_cast(0x00ff & + (random.to_ulong() - keyXorNonSeedAndRandom.to_ulong())); + std::bitset<8> calculatedCrcBitset(calculatedCrc); + bool isValid = (calculatedCrc == expectedCrc); + + if (mIsCrcDebuggingEnabled) + { + *mRxCout << endl + << "~seed " << nonSeed << endl + << "random " << random << endl + << " -------- &" << endl + << "~seed & random " << nonSeedAndRandom << endl + << "key " << buttonKeyCode << endl + << " -------- ^" << endl + << "key ^ (~seed & random) " << keyXorNonSeedAndRandom + << " = calculated delta " << std::setw(2) + << static_cast(keyXorNonSeedAndRandom.to_ulong()) + << " vs " << std::setw(2) << static_cast(delta.to_ulong()) + << ((keyXorNonSeedAndRandom == delta) ? " OK" : " FAIL") << endl + << "calculated crc " << calculatedCrcBitset << " " << std::setw(2) << calculatedCrc << " vs " + << std::setw(2) + << expectedCrc << ((isValid) ? " OK" : " FAIL") + << " (random - (key ^ (~seed & random))"; + } + + if (!isValid) + { + *mRxCout << "warn checksum error"; + } + + //assert(calculatedCrc == expectedCrc); + //assert(keyXorNonSeedAndRandom == delta); + + mRxCout->copyfmt(init); +} + +// ---------------------------------------------------------------------- + +//! interprets data packages as delivered by the XHC WHB04B-6 device +void XhcWhb04b6Component::onInputDataReceived(const UsbInPackage& inPackage) +{ + *mRxCout << "in "; + printHexdump(inPackage); + if (inPackage.rotaryButtonFeedKeyCode != KeyCodes::Feed.undefined.code) + { + std::ios init(NULL); + init.copyfmt(*mRxCout); + *mRxCout << " delta " << std::setfill(' ') << std::setw(2) + << static_cast(inPackage.rotaryButtonFeedKeyCode); + mRxCout->copyfmt(init); + } + else + { + *mRxCout << " delta NA"; + } + *mRxCout << " => "; + printInputData(inPackage); + printCrcDebug(inPackage, mUsb.getOutputPackageData()); + *mRxCout << endl; + + uint8_t keyCode = inPackage.buttonKeyCode1; + uint8_t modifierCode = inPackage.buttonKeyCode2; + + // in case key code == undefined + if (keyCode == KeyCodes::Buttons.undefined.code) + { + // swap codes + keyCode = modifierCode; + modifierCode = KeyCodes::Buttons.undefined.code; + } + + // in case key code == "fn" and modifier == defined + if ((keyCode == KeyCodes::Buttons.function.code) && + (modifierCode != KeyCodes::Buttons.undefined.code)) + { + // swap codes + keyCode = modifierCode; + modifierCode = KeyCodes::Buttons.function.code; + } + + // in case of key code == defined and key code != "fn" and modifier == defined and modifier != "fn" + if ((keyCode != KeyCodes::Buttons.undefined.code) && + (modifierCode != KeyCodes::Buttons.undefined.code) && + (modifierCode != KeyCodes::Buttons.function.code)) + { + // last key press overrules last but one key press + keyCode = modifierCode; + modifierCode = KeyCodes::Buttons.undefined.code; + } + + if (keyCode == KeyCodes::Buttons.undefined.code) + { + assert(modifierCode == KeyCodes::Buttons.undefined.code); + } + + if (keyCode == KeyCodes::Buttons.function.code) + { + assert(modifierCode == KeyCodes::Buttons.undefined.code); + } + + mPendant.processEvent(keyCode, modifierCode, + inPackage.rotaryButtonAxisKeyCode, + inPackage.rotaryButtonFeedKeyCode, + inPackage.stepCount); +} + +// ---------------------------------------------------------------------- + +void XhcWhb04b6Component::initWhb() +{ + mIsRunning = true; + mUsb.setIsRunning(true); +} + +// ---------------------------------------------------------------------- + +void XhcWhb04b6Component::requestTermination(int signal) +{ + if (signal >= 0) + { + *mInitCout << "termination requested upon signal number " << signal << " ..." << endl; + } + else + { + *mInitCout << "termination requested ... " << endl; + } + mUsb.requestTermination(); + mIsRunning = false; +} + +// ---------------------------------------------------------------------- + +bool XhcWhb04b6Component::isRunning() const +{ + return mIsRunning; +} + +// ---------------------------------------------------------------------- + +XhcWhb04b6Component::XhcWhb04b6Component() : + mName("XHC-WHB04B-6"), + mHal(), + mKeyCodes(), + mMetaButtons{MetaButtonCodes(mKeyCodes.Buttons.reset, mKeyCodes.Buttons.undefined), + MetaButtonCodes(mKeyCodes.Buttons.reset, mKeyCodes.Buttons.function), + MetaButtonCodes(mKeyCodes.Buttons.stop, mKeyCodes.Buttons.undefined), + MetaButtonCodes(mKeyCodes.Buttons.stop, mKeyCodes.Buttons.function), + MetaButtonCodes(mKeyCodes.Buttons.start, mKeyCodes.Buttons.undefined), + MetaButtonCodes(mKeyCodes.Buttons.start, mKeyCodes.Buttons.function), + MetaButtonCodes(mKeyCodes.Buttons.feed_plus, mKeyCodes.Buttons.undefined), + MetaButtonCodes(mKeyCodes.Buttons.feed_plus, mKeyCodes.Buttons.function), + MetaButtonCodes(mKeyCodes.Buttons.feed_minus, mKeyCodes.Buttons.undefined), + MetaButtonCodes(mKeyCodes.Buttons.feed_minus, mKeyCodes.Buttons.function), + MetaButtonCodes(mKeyCodes.Buttons.spindle_plus, mKeyCodes.Buttons.undefined), + MetaButtonCodes(mKeyCodes.Buttons.spindle_plus, mKeyCodes.Buttons.function), + MetaButtonCodes(mKeyCodes.Buttons.spindle_minus, mKeyCodes.Buttons.undefined), + MetaButtonCodes(mKeyCodes.Buttons.spindle_minus, mKeyCodes.Buttons.function), + MetaButtonCodes(mKeyCodes.Buttons.machine_home, mKeyCodes.Buttons.undefined), + MetaButtonCodes(mKeyCodes.Buttons.machine_home, mKeyCodes.Buttons.function), + MetaButtonCodes(mKeyCodes.Buttons.safe_z, mKeyCodes.Buttons.undefined), + MetaButtonCodes(mKeyCodes.Buttons.safe_z, mKeyCodes.Buttons.function), + MetaButtonCodes(mKeyCodes.Buttons.workpiece_home, mKeyCodes.Buttons.undefined), + MetaButtonCodes(mKeyCodes.Buttons.workpiece_home, mKeyCodes.Buttons.function), + MetaButtonCodes(mKeyCodes.Buttons.spindle_on_off, mKeyCodes.Buttons.undefined), + MetaButtonCodes(mKeyCodes.Buttons.spindle_on_off, mKeyCodes.Buttons.function), + MetaButtonCodes(mKeyCodes.Buttons.function, mKeyCodes.Buttons.undefined), + MetaButtonCodes(mKeyCodes.Buttons.probe_z, mKeyCodes.Buttons.undefined), + MetaButtonCodes(mKeyCodes.Buttons.probe_z, mKeyCodes.Buttons.function), + MetaButtonCodes(mKeyCodes.Buttons.macro10, mKeyCodes.Buttons.undefined), + MetaButtonCodes(mKeyCodes.Buttons.macro10, mKeyCodes.Buttons.function), + MetaButtonCodes(mKeyCodes.Buttons.manual_pulse_generator, mKeyCodes.Buttons.undefined), + MetaButtonCodes(mKeyCodes.Buttons.manual_pulse_generator, mKeyCodes.Buttons.function), + MetaButtonCodes(mKeyCodes.Buttons.step_continuous, mKeyCodes.Buttons.undefined), + MetaButtonCodes(mKeyCodes.Buttons.step_continuous, mKeyCodes.Buttons.function), + //! it is expected to terminate this array with the "undefined" software button + MetaButtonCodes(mKeyCodes.Buttons.undefined, mKeyCodes.Buttons.undefined) + }, + mUsb(mName, *this, mHal), + mTxCout(&mDevNull), + mRxCout(&mDevNull), + mKeyEventCout(&mDevNull), + mHalInitCout(&mDevNull), + mInitCout(&mDevNull), + packageReceivedEventReceiver(*this), + mPendant(mHal, mUsb.getOutputPackageData()) +{ + setSimulationMode(true); + enableVerboseRx(false); + enableVerboseTx(false); + enableVerboseInit(false); + enableVerboseHal(false); +} + +// ---------------------------------------------------------------------- + +XhcWhb04b6Component::~XhcWhb04b6Component() +{ +} + +// ---------------------------------------------------------------------- + +void XhcWhb04b6Component::updateDisplay() +{ + if (mIsRunning) + { + mPendant.updateDisplayData(); + } + else + { + mPendant.clearDisplayData(); + } + mUsb.sendDisplayData(); +} + +// ---------------------------------------------------------------------- + +void XhcWhb04b6Component::printPushButtonText(uint8_t keyCode, uint8_t modifierCode, std::ostream& out) +{ + std::ios init(NULL); + init.copyfmt(out); + int indent = 15; + out << std::setfill(' '); + + // no key code + if (keyCode == mKeyCodes.Buttons.undefined.code) + { + out << std::setw(indent) << ""; + return; + } + + const KeyCode& buttonKeyCode = mKeyCodes.Buttons.getKeyCode(keyCode); + + // print key text + if (modifierCode == mKeyCodes.Buttons.function.code) + { + out << std::setw(indent) << buttonKeyCode.altText; + } + else + { + out << std::setw(indent) << buttonKeyCode.text; + } + out.copyfmt(init); +} + +// ---------------------------------------------------------------------- + +void XhcWhb04b6Component::printRotaryButtonText(const KeyCode* keyCodesBase, uint8_t keyCode, std::ostream& out) +{ + std::ios init(NULL); + init.copyfmt(out); + + // find key code + const KeyCode* buttonKeyCode = keyCodesBase; + while (buttonKeyCode->code != 0) + { + if (buttonKeyCode->code == keyCode) + { + break; + } + buttonKeyCode++; + } + out << std::setw(5) << buttonKeyCode->text << "(" << std::setw(4) << buttonKeyCode->altText << ")"; + out.copyfmt(init); +} + + +// ---------------------------------------------------------------------- + +DisplayIndicator::DisplayIndicator() : + asByte(0) +{ +} + +// ---------------------------------------------------------------------- + +void XhcWhb04b6Component::printInputData(const UsbInPackage& inPackage, std::ostream& out) +{ + std::ios init(NULL); + init.copyfmt(out); + + out << "| " << std::setfill('0') << std::hex << std::setw(2) << static_cast(inPackage.header) + << " | " << std::setw(2) + << static_cast(inPackage.randomByte) << " | "; + out.copyfmt(init); + printPushButtonText(inPackage.buttonKeyCode1, inPackage.buttonKeyCode2, out); + out << " | "; + printPushButtonText(inPackage.buttonKeyCode2, inPackage.buttonKeyCode1, out); + out << " | "; + printRotaryButtonText((KeyCode*)&mKeyCodes.Feed, inPackage.rotaryButtonFeedKeyCode, out); + out << " | "; + printRotaryButtonText((KeyCode*)&mKeyCodes.Axis, inPackage.rotaryButtonAxisKeyCode, out); + out << " | " << std::setfill(' ') << std::setw(3) << static_cast(inPackage.stepCount) << " | " << std::hex + << std::setfill('0') + << std::setw(2) << static_cast(inPackage.crc); + + out.copyfmt(init); +} + + +// ---------------------------------------------------------------------- + +void XhcWhb04b6Component::printHexdump(const UsbInPackage& inPackage, std::ostream& out) +{ + std::ios init(NULL); + init.copyfmt(out); + + out << std::setfill('0') << std::hex << "0x" << std::setw(2) << static_cast(inPackage.header) << " " + << std::setw(2) + << static_cast(inPackage.randomByte) << " " << std::setw(2) + << static_cast(inPackage.buttonKeyCode1) << " " << std::setw(2) + << static_cast(inPackage.buttonKeyCode2) << " " << std::setw(2) + << static_cast(inPackage.rotaryButtonFeedKeyCode) << " " << std::setw(2) + << static_cast(inPackage.rotaryButtonAxisKeyCode) << " " << std::setw(2) + << static_cast(inPackage.stepCount & 0xff) << " " << std::setw(2) + << static_cast(inPackage.crc); + out.copyfmt(init); +} + +// ---------------------------------------------------------------------- + +int XhcWhb04b6Component::run() +{ + if (mHal.isSimulationModeEnabled()) + { + *mInitCout << "init starting in simulation mode" << endl; + } + + bool isHalReady = false; + initWhb(); + initHal(); + + if (!mUsb.isWaitForPendantBeforeHalEnabled() && !mHal.isSimulationModeEnabled()) + { + hal_ready(mHal.getHalComponentId()); + isHalReady = true; + } + + while (isRunning()) + { + mHal.setIsPendantConnected(false); + + initWhb(); + if (!mUsb.init()) + { + return EXIT_FAILURE; + } + + mHal.setIsPendantConnected(true); + + if (!isHalReady && !mHal.isSimulationModeEnabled()) + { + hal_ready(mHal.getHalComponentId()); + isHalReady = true; + } + + if (mUsb.isDeviceOpen()) + { + *mInitCout << "init enabling reception ..."; + if (!enableReceiveAsyncTransfer()) + { + std::cerr << endl << "failed to enable reception" << endl; + return EXIT_FAILURE; + } + *mInitCout << " ok" << endl; + } + process(); + teardownUsb(); + } + teardownHal(); + + return EXIT_SUCCESS; +} + +// ---------------------------------------------------------------------- + +void XhcWhb04b6Component::linuxcncSimulate() +{ +} + +// ---------------------------------------------------------------------- + +bool XhcWhb04b6Component::enableReceiveAsyncTransfer() +{ + return mUsb.setupAsyncTransfer(); +} + +// ---------------------------------------------------------------------- + +void XhcWhb04b6Component::setSimulationMode(bool enableSimulationMode) +{ + mIsSimulationMode = enableSimulationMode; + mHal.setSimulationMode(mIsSimulationMode); + mUsb.setSimulationMode(mIsSimulationMode); +} + +// ---------------------------------------------------------------------- + + +void XhcWhb04b6Component::setUsbContext(libusb_context* context) +{ + mUsb.setContext(context); +} + +// ---------------------------------------------------------------------- + +libusb_device_handle* XhcWhb04b6Component::getUsbDeviceHandle() +{ + return mUsb.getDeviceHandle(); +} + +// ---------------------------------------------------------------------- + +libusb_context* XhcWhb04b6Component::getUsbContext() +{ + return mUsb.getContext(); +} + +// ---------------------------------------------------------------------- + +void XhcWhb04b6Component::process() +{ + if (mUsb.isDeviceOpen()) + { + while (isRunning() && !mUsb.getDoReconnect()) + { + struct timeval timeout; + timeout.tv_sec = 0; + timeout.tv_usec = 200 * 1000; + + int r = libusb_handle_events_timeout_completed(getUsbContext(), &timeout, nullptr); + assert((r == LIBUSB_SUCCESS) || (r == LIBUSB_ERROR_NO_DEVICE) || (r == LIBUSB_ERROR_BUSY) || + (r == LIBUSB_ERROR_TIMEOUT) || (r == LIBUSB_ERROR_INTERRUPTED)); + if (mHal.isSimulationModeEnabled()) + { + linuxcncSimulate(); + } + updateDisplay(); + } + updateDisplay(); + + mHal.setIsPendantConnected(false); + *mInitCout << "connection lost, cleaning up" << endl; + struct timeval tv; + tv.tv_sec = 1; + tv.tv_usec = 0; + int r = libusb_handle_events_timeout_completed(getUsbContext(), &tv, nullptr); + assert(0 == r); + r = libusb_release_interface(getUsbDeviceHandle(), 0); + assert((0 == r) || (r == LIBUSB_ERROR_NO_DEVICE)); + libusb_close(getUsbDeviceHandle()); + mUsb.setDeviceHandle(nullptr); + } +} + +// ---------------------------------------------------------------------- + +void XhcWhb04b6Component::teardownUsb() +{ + libusb_exit(getUsbContext()); + mUsb.setContext(nullptr); +} + +// ---------------------------------------------------------------------- + +void XhcWhb04b6Component::enableVerboseRx(bool enable) +{ + mUsb.enableVerboseRx(enable); + if (enable) + { + mRxCout = &std::cout; + } + else + { + mRxCout = &mDevNull; + } +} + +// ---------------------------------------------------------------------- + +void XhcWhb04b6Component::enableVerboseTx(bool enable) +{ + mUsb.enableVerboseTx(enable); + if (enable) + { + mTxCout = &std::cout; + } + else + { + mTxCout = &mDevNull; + } +} + +// ---------------------------------------------------------------------- + +void XhcWhb04b6Component::enableVerboseHal(bool enable) +{ + mHal.setEnableVerbose(enable); + + if (enable) + { + mHalInitCout = &std::cout; + } + else + { + mHalInitCout = &mDevNull; + } +} + +// ---------------------------------------------------------------------- + +void XhcWhb04b6Component::enableVerboseInit(bool enable) +{ + mUsb.enableVerboseInit(enable); + if (enable) + { + mInitCout = &std::cout; + } + else + { + mInitCout = &mDevNull; + } +} + +// ---------------------------------------------------------------------- + +void XhcWhb04b6Component::printPushButtonText(uint8_t keyCode, uint8_t modifierCode) +{ + printPushButtonText(keyCode, modifierCode, *mRxCout); +} + +// ---------------------------------------------------------------------- + +void XhcWhb04b6Component::printRotaryButtonText(const KeyCode* keyCodesBase, uint8_t keyCode) +{ + printRotaryButtonText(keyCodesBase, keyCode, *mRxCout); +} + +// ---------------------------------------------------------------------- + +void XhcWhb04b6Component::printInputData(const UsbInPackage& inPackage) +{ + printInputData(inPackage, *mRxCout); +} + +// ---------------------------------------------------------------------- + +void XhcWhb04b6Component::printHexdump(const UsbInPackage& inPackage) +{ + printHexdump(inPackage, *mRxCout); +} + +// ---------------------------------------------------------------------- + +void XhcWhb04b6Component::setWaitWithTimeout(uint8_t waitSecs) +{ + mUsb.setWaitWithTimeout(waitSecs); +} + +// ---------------------------------------------------------------------- + +bool XhcWhb04b6Component::isSimulationModeEnabled() const +{ + return mIsSimulationMode; +} + +// ---------------------------------------------------------------------- + +void XhcWhb04b6Component::setEnableVerboseKeyEvents(bool enable) +{ + mUsb.enableVerboseRx(enable); + if (enable) + { + mKeyEventCout = &std::cout; + } + else + { + mKeyEventCout = &mDevNull; + } +} + +// ---------------------------------------------------------------------- + +void XhcWhb04b6Component::enableCrcDebugging(bool enable) +{ + mIsCrcDebuggingEnabled = enable; +} +} diff --git a/src/hal/user_comps/xhc-whb04b-6/xhc-whb04b6.h b/src/hal/user_comps/xhc-whb04b-6/xhc-whb04b6.h new file mode 100644 index 0000000000..6631dd9960 --- /dev/null +++ b/src/hal/user_comps/xhc-whb04b-6/xhc-whb04b6.h @@ -0,0 +1,114 @@ +/* + Copyright (C) 2017 Raoul Rubien (github.com/rubienr) + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This program 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the program; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. + */ + +#pragma once + +// system includes +#include + +// 3rd party includes + +// local includes +#include "./hal.h" +#include "./usb.h" +#include "./pendant.h" + +// forward declarations + +namespace XhcWhb04b6 { + +// forward declarations + +// ---------------------------------------------------------------------- + +//! The XHC WHB04B-6 user space component for Linuxcnc. +class XhcWhb04b6Component : + public OnUsbInputPackageListener +{ +public: + XhcWhb04b6Component(); + virtual ~XhcWhb04b6Component(); + void process(); + void teardownUsb(); + void setUsbContext(libusb_context* context); + libusb_device_handle* getUsbDeviceHandle(); + libusb_context* getUsbContext(); + //! \return the name as specified to \ref XhcWhb04b6Component + const char* getName() const; + //! \return the name as specified to \ref Hal + const char* getHalName() const; + //! callback method received by \ref Usb when a \ref libusb_transfer is received + void onInputDataReceived(const UsbInPackage& inPackage) override; + void initWhb(); + void initHal(); + void teardownHal(); + bool enableReceiveAsyncTransfer(); + void updateDisplay(); + void linuxcncSimulate(); + void requestTermination(int signal = -42); + bool isRunning() const; + int run(); + bool isSimulationModeEnabled() const; + void setSimulationMode(bool enableSimulationMode); + void setEnableVerboseKeyEvents(bool enable); + void enableVerboseRx(bool enable); + void enableVerboseTx(bool enable); + void enableVerboseHal(bool enable); + void enableVerboseInit(bool enable); + void enableCrcDebugging(bool enable); + void setWaitWithTimeout(uint8_t waitSecs = 3); + void printCrcDebug(const UsbInPackage& inPackage, const UsbOutPackageData& outPackageBuffer) const; + void offerHalMemory(); + +private: + const char* mName; + Hal mHal; + const KeyCodes mKeyCodes; + const MetaButtonCodes mMetaButtons[32]; + Usb mUsb; + bool mIsRunning{false}; + bool mIsSimulationMode{false}; + std::ostream mDevNull{nullptr}; + std::ostream * mTxCout; + std::ostream * mRxCout; + std::ostream * mKeyEventCout; + std::ostream * mHalInitCout; + std::ostream * mInitCout; + OnUsbInputPackageListener& packageReceivedEventReceiver; + bool mIsCrcDebuggingEnabled{false}; + Pendant mPendant; + + //! prints human readable output of the push buttons state + void printPushButtonText(uint8_t keyCode, uint8_t modifierCode, std::ostream& out); + //! prints human readable output of the push buttons state to \ref verboseRxOut stream + void printPushButtonText(uint8_t keyCode, uint8_t modifierCode); + //! prints human readable output of the push buttons state to \p out + void printRotaryButtonText(const KeyCode* keyCodesBase, uint8_t keyCode, std::ostream& out); + //! prints human readable output of the rotary button text to \ref verboseRxOut stream + void printRotaryButtonText(const KeyCode* keyCodesBase, uint8_t keyCode); + //! prints human readable output of the rotary button text to \p out + void printInputData(const UsbInPackage& inPackage, std::ostream& out); + //! prints human readable output of the input package to \ref verboseRxOut stream + void printInputData(const UsbInPackage& inPackage); + //! prints human readable output of the input package to \p out + void printHexdump(const UsbInPackage& inPackage, std::ostream& out); + //! prints a hexdump of the input package to \ref verboseRxOut stream + void printHexdump(const UsbInPackage& inPackage); +}; +} From be09734c7182008ddfb64ade54e94693c42094c2 Mon Sep 17 00:00:00 2001 From: Raoul Rubien Date: Thu, 20 Dec 2018 19:34:46 +0000 Subject: [PATCH 379/516] changed retval/looptime/errorcount from hal_param to hal_pin, fixed scaling of ACV/DCV pin, renamed cli arg -V to -U --- src/hal/user_comps/huanyang-vfd/hy_vfd.c | 98 ++++++++++++------------ 1 file changed, 51 insertions(+), 47 deletions(-) diff --git a/src/hal/user_comps/huanyang-vfd/hy_vfd.c b/src/hal/user_comps/huanyang-vfd/hy_vfd.c index 66c68a9485..4da1bd9c24 100644 --- a/src/hal/user_comps/huanyang-vfd/hy_vfd.c +++ b/src/hal/user_comps/huanyang-vfd/hy_vfd.c @@ -82,7 +82,7 @@ typedef struct { hal_float_t *Set_F; // frequency command hal_float_t *Out_F; // actual output frequency hal_float_t *Out_A; // actual output amps - hal_float_t *RoTT; // actual motor rmp (based on VFD parameters) + hal_float_t *RoTT; // actual motor rmp (based on VFD parameters) hal_float_t *DCV; // DC Volts (to be confirmed) hal_float_t *ACV; // AC Volts (to be confirmed) hal_float_t *Cont; @@ -91,20 +91,20 @@ typedef struct { hal_bit_t *spindle_forward; // spindle forward input hal_bit_t *spindle_reverse; // spindle reverse input hal_bit_t *spindle_on; // spinlde on input - hal_float_t *CNTR; // stores the status of the control request - hal_float_t *CNST; // stores the response of the control request + hal_s32_t *CNTR; // stores the status of the control request + hal_s32_t *CNST; // stores the response of the control request hal_bit_t *CNST_Run; // CNST Run bit - hal_bit_t *CNST_Jog; // CNST Jog bit - hal_bit_t *CNST_Command_rf; // CNST Run reverse / forward bit - hal_bit_t *CNST_Running; // CNST Running bit - hal_bit_t *CNST_Jogging; // CNST Jogging bit - hal_bit_t *CNST_Running_rf; // CNST Jog reverse / forward bit - hal_bit_t *CNST_Bracking; // CNST bracking bit - hal_bit_t *CNST_Track_Start; // CNST track start bit + hal_bit_t *CNST_Jog; // CNST Jog bit + hal_bit_t *CNST_Command_rf; // CNST Run reverse / forward bit + hal_bit_t *CNST_Running; // CNST Running bit + hal_bit_t *CNST_Jogging; // CNST Jogging bit + hal_bit_t *CNST_Running_rf; // CNST Jog reverse / forward bit + hal_bit_t *CNST_Bracking; // CNST bracking bit + hal_bit_t *CNST_Track_Start; // CNST track start bit hal_float_t *speed_command; // spindle speed command from EMC - hal_float_t *freq_cmd; // calculated frequency command + hal_float_t *freq_cmd; // calculated frequency command hal_float_t *max_freq; // PD005 Max Operating Frequency hal_float_t *freq_lower_limit; // PD011 Frequency Lower Limit @@ -112,17 +112,17 @@ typedef struct { hal_float_t *rated_motor_current; // PD142 Rated Motor Current - as per motor name plate hal_float_t *rated_motor_rev; // max motor speed (at max_freq). PD144 gets set to value corresponding to RPM at 50Hz - hal_bit_t *hycomm_ok; // the last HYCOMM_OK transactions returned successfully + hal_bit_t *hycomm_ok; // the last HYCOMM_OK transactions returned successfully hal_float_t *max_rpm; // calculated based on VFD max frequency setup parameter - hal_float_t *spindle_speed_fb; // (out) reports current spindle speed - hal_bit_t *spindle_at_speed; // (out) True when spindle is on and at commanded speed - hal_float_t *spindle_at_speed_tolerance; // (in) + hal_float_t *spindle_speed_fb; // (out) reports current spindle speed + hal_bit_t *spindle_at_speed; // (out) True when spindle is on and at commanded speed + hal_float_t *spindle_at_speed_tolerance; // (in) - hal_float_t retval; - hal_s32_t errorcount; - hal_float_t looptime; + hal_s32_t *retval; + hal_s32_t *errorcount; + hal_float_t *looptime; //hal_float_t motor_nameplate_hz; // speeds are scaled in Hz, not RPM //hal_float_t motor_nameplate_RPM; // nameplate RPM at default Hz //hal_float_t rpm_limit; // do-not-exceed output frequency @@ -156,7 +156,7 @@ static struct option long_options[] = { {"target", 1, 0, 't'}, {"max-frequency", 1, 0, 'F'}, {"min-frequency", 1, 0, 'f'}, - {"motor-voltage", 1, 0, 'V'}, + {"motor-voltage", 1, 0, 'U'}, {"motor-current", 1, 0, 'I'}, {"motor-speed", 1, 0, 'S'}, {0,0,0,0} @@ -350,17 +350,17 @@ int write_data(hycomm_param_t *hc_param, hycomm_data_t *hc_data, haldata_t *hald } retval = 0; - haldata->retval = retval; + *(haldata->retval) = retval; return retval; failed: if (hc_param->debug) { printf("write_data: FAILED\n"); } - haldata->retval = retval; - haldata->errorcount++; + *(haldata->retval) = retval; + (*(haldata->errorcount))++; retval = -1; - return retval; + return retval; } int read_setup(hycomm_param_t *hc_param, hycomm_data_t *hc_data, haldata_t *haldata) @@ -373,7 +373,7 @@ int read_setup(hycomm_param_t *hc_param, hycomm_data_t *hc_data, haldata_t *hald return -1; /* but we can signal an error if the other params are null */ if (hc_param==NULL) { - haldata->errorcount++; + (*(haldata->errorcount))++; return -1; } @@ -467,15 +467,15 @@ int read_setup(hycomm_param_t *hc_param, hycomm_data_t *hc_data, haldata_t *hald fflush(NULL); retval = 0; - haldata->retval = retval; + *(haldata->retval) = retval; return retval; failed: if (hc_param->debug) { printf("read_setup: FAILED\n"); } - haldata->retval = retval; - haldata->errorcount++; + *(haldata->retval) = retval; + (*(haldata->errorcount))++; retval = -1; return retval; } @@ -545,7 +545,7 @@ int read_data(hycomm_param_t *hc_param, hycomm_data_t *hc_data, haldata_t *halda hc_data->data = STATUS_DCV; if ((retval = hy_comm(hc_param, hc_data)) != 0) goto failed; - *(haldata->DCV) = hc_data->ret_data; + *(haldata->DCV) = (float)hc_data->ret_data / 10.0f; if (hc_param->debug) { printf("DCV = [%.2X]", hc_data->ret_data); printf("\n"); @@ -554,7 +554,7 @@ int read_data(hycomm_param_t *hc_param, hycomm_data_t *hc_data, haldata_t *halda hc_data->data = STATUS_ACV; if ((retval = hy_comm(hc_param, hc_data)) != 0) goto failed; - *(haldata->ACV) = hc_data->ret_data; + *(haldata->ACV) = (float)hc_data->ret_data / 10.0f; if (hc_param->debug) { printf("ACV = [%.2X]", hc_data->ret_data); printf("\n"); @@ -580,15 +580,15 @@ int read_data(hycomm_param_t *hc_param, hycomm_data_t *hc_data, haldata_t *halda retval = 0; - haldata->retval = retval; + *(haldata->retval) = retval; return retval; failed: if (hc_param->debug) { printf("read_data: FAILED\n"); } - haldata->retval = retval; - haldata->errorcount++; + *(haldata->retval) = retval; + (*(haldata->errorcount))++; retval = -1; return retval; } @@ -609,7 +609,7 @@ int main(int argc, char **argv) float max_freq = 0; float min_freq = 0; - float motor_v = 0; + float motor_u = 0; float motor_i = 0; float motor_speed = 0; @@ -712,9 +712,9 @@ int main(int argc, char **argv) } break; - case 'V': - motor_v = strtof(optarg, &endarg); - if ((*endarg != '\0') || (motor_v < 0.0) || (motor_v > UINT16_MAX)) { + case 'U': + motor_u = strtof(optarg, &endarg); + if ((*endarg != '\0') || (motor_u < 0.0) || (motor_u > UINT16_MAX)) { printf("hy_vfd: ERROR: invalid motor max voltage: %s\n", optarg); retval = -1; goto out_noclose; @@ -811,9 +811,9 @@ int main(int argc, char **argv) if (retval!=0) goto out_closeHAL; retval = hal_pin_bit_newf(HAL_IN, &(haldata->spindle_on), hal_comp_id, "%s.spindle-on", modname); if (retval!=0) goto out_closeHAL; - retval = hal_pin_float_newf(HAL_OUT, &(haldata->CNTR), hal_comp_id, "%s.CNTR", modname); + retval = hal_pin_s32_newf(HAL_OUT, &(haldata->CNTR), hal_comp_id, "%s.CNTR", modname); if (retval!=0) goto out_closeHAL; - retval = hal_pin_float_newf(HAL_OUT, &(haldata->CNST), hal_comp_id, "%s.CNST", modname); + retval = hal_pin_s32_newf(HAL_OUT, &(haldata->CNST), hal_comp_id, "%s.CNST", modname); if (retval!=0) goto out_closeHAL; retval = hal_pin_bit_newf(HAL_OUT, &(haldata->CNST_Run), hal_comp_id, "%s.CNST-run", modname); @@ -852,10 +852,13 @@ int main(int argc, char **argv) retval = hal_pin_bit_newf(HAL_OUT, &(haldata->hycomm_ok), hal_comp_id, "%s.hycomm-ok", modname); if (retval!=0) goto out_closeHAL; - retval = hal_param_s32_newf(HAL_RW, &(haldata->errorcount), hal_comp_id, "%s.error-count", modname); + retval = hal_pin_s32_newf(HAL_OUT, &(haldata->errorcount), hal_comp_id, "%s.error-count", modname); + if (retval!=0) goto out_closeHAL; + + retval = hal_pin_s32_newf(HAL_OUT, &(haldata->retval), hal_comp_id, "%s.retval", modname); if (retval!=0) goto out_closeHAL; - retval = hal_param_float_newf(HAL_RW, &(haldata->retval), hal_comp_id, "%s.retval", modname); + retval = hal_pin_float_newf(HAL_OUT, &(haldata->looptime), hal_comp_id, "%s.loop-time", modname); if (retval!=0) goto out_closeHAL; retval = hal_pin_float_newf(HAL_OUT, &(haldata->spindle_speed_fb), hal_comp_id, "%s.spindle-speed-fb", modname); @@ -889,7 +892,7 @@ int main(int argc, char **argv) *(haldata->max_freq) = max_freq; *(haldata->freq_lower_limit) = min_freq; - *(haldata->rated_motor_voltage) = motor_v; + *(haldata->rated_motor_voltage) = motor_u; *(haldata->rated_motor_current) = motor_i; *(haldata->rated_motor_rev) = motor_speed; @@ -900,8 +903,9 @@ int main(int argc, char **argv) *haldata->spindle_at_speed_tolerance = 0.02; hc_data.slave = slave; - haldata->errorcount = 0; - haldata->looptime = 0.1; + *(haldata->retval) = 0; + *(haldata->errorcount) = 0; + *(haldata->looptime) = 0.1; //haldata->motor_nameplate_hz = 50; // folks in The Colonies typically would use 60Hz and 1730 rpm @@ -969,10 +973,10 @@ int main(int argc, char **argv) // don't want to scan too fast, and shouldn't delay more than a few seconds - if (haldata->looptime < 0.001) haldata->looptime = 0.001; - if (haldata->looptime > 1.0) haldata->looptime = 1.0; - loop_timespec.tv_sec = (time_t)(haldata->looptime); - loop_timespec.tv_nsec = (long)((haldata->looptime - loop_timespec.tv_sec) * 1000000000l); + if ((*(haldata->looptime)) < 0.001) *(haldata->looptime) = 0.001; + if ((*(haldata->looptime)) > 1.0) *(haldata->looptime) = 1.0; + loop_timespec.tv_sec = (time_t)(*(haldata->looptime)); + loop_timespec.tv_nsec = (long)((*(haldata->looptime) - loop_timespec.tv_sec) * 1000000000l); nanosleep(&loop_timespec, &remaining); } From a286f4ae1492648e9a05d516bd4aed265144e77d Mon Sep 17 00:00:00 2001 From: Raoul Rubien Date: Fri, 28 Dec 2018 20:01:31 +0000 Subject: [PATCH 380/516] refined output of --help, added missing signals, fixed log verbosity, removed compiler warning --- src/hal/user_comps/xhc-whb04b-6/hal.cc | 112 +++++++++++------- src/hal/user_comps/xhc-whb04b-6/hal.h | 41 +++++-- src/hal/user_comps/xhc-whb04b-6/main.cc | 14 ++- src/hal/user_comps/xhc-whb04b-6/pendant.cc | 51 +++++++- src/hal/user_comps/xhc-whb04b-6/pendant.h | 5 + .../user_comps/xhc-whb04b-6/xhc-whb04b6.cc | 30 +++-- src/hal/user_comps/xhc-whb04b-6/xhc-whb04b6.h | 7 +- 7 files changed, 182 insertions(+), 78 deletions(-) diff --git a/src/hal/user_comps/xhc-whb04b-6/hal.cc b/src/hal/user_comps/xhc-whb04b-6/hal.cc index 507a6cd409..72d4437ff7 100644 --- a/src/hal/user_comps/xhc-whb04b-6/hal.cc +++ b/src/hal/user_comps/xhc-whb04b-6/hal.cc @@ -182,10 +182,13 @@ Hal::~Hal() freeSimulatedPin((void**)(&memory->out.axisBSetVelocityMode)); freeSimulatedPin((void**)(&memory->out.axisCSetVelocityMode)); - freeSimulatedPin((void**)(&memory->out.feedValueSelected0_001)); - freeSimulatedPin((void**)(&memory->out.feedValueSelected0_01)); - freeSimulatedPin((void**)(&memory->out.feedValueSelected0_1)); - freeSimulatedPin((void**)(&memory->out.feedValueSelected1_0)); + freeSimulatedPin((void**)(&memory->out.feedValueSelected_0_001)); + freeSimulatedPin((void**)(&memory->out.feedValueSelected_0_01)); + freeSimulatedPin((void**)(&memory->out.feedValueSelected_0_1)); + freeSimulatedPin((void**)(&memory->out.feedValueSelected_1_0)); + freeSimulatedPin((void**)(&memory->out.feedValueSelected_60)); + freeSimulatedPin((void**)(&memory->out.feedValueSelected_100)); + freeSimulatedPin((void**)(&memory->out.feedValueSelected_lead)); freeSimulatedPin((void**)(&memory->out.feedOverrideScale)); freeSimulatedPin((void**)(&memory->out.feedOverrideCountEnable)); @@ -194,6 +197,7 @@ Hal::~Hal() freeSimulatedPin((void**)(&memory->out.feedOverrideDecrease)); freeSimulatedPin((void**)(&memory->out.feedOverrideIncrease)); + freeSimulatedPin((void**)(&memory->out.spindleStart)); freeSimulatedPin((void**)(&memory->out.spindleStop)); freeSimulatedPin((void**)(&memory->out.spindleDoRunForward)); freeSimulatedPin((void**)(&memory->out.spindleDoRunReverse)); @@ -202,8 +206,6 @@ Hal::~Hal() freeSimulatedPin((void**)(&memory->out.spindleOverrideDoDecrease)); freeSimulatedPin((void**)(&memory->out.spindleOverrideDoIncrease)); - freeSimulatedPin((void**)(&memory->out.jogSpeedValue)); - freeSimulatedPin((void**)(&memory->out.homeAll)); freeSimulatedPin((void**)(&memory->out.jointXSelect)); @@ -508,29 +510,6 @@ void Hal::init(const MetaButtonCodes* metaButtons, const KeyCodes& keyCodes) newHalFloat(HAL_OUT, &(memory->out.axisCJogScale), mHalCompId, "%s.axis.5.jog-scale", mComponentPrefix); newHalBit(HAL_OUT, &(memory->out.axisCSetVelocityMode), mHalCompId, "%s.axis.5.jog-vel-mode", mComponentPrefix); - newHalBit(HAL_OUT, &(memory->out.isPendantSleeping), mHalCompId, "%s.pendant.is-sleeping", mComponentPrefix); - newHalBit(HAL_OUT, &(memory->out.isPendantConnected), mHalCompId, "%s.pendant.is-connected", mComponentPrefix); - - newHalFloat(HAL_IN, &(memory->in.axisXPosition), mHalCompId, "%s.halui.axis.0.pos-feedback", mComponentPrefix); - newHalFloat(HAL_IN, &(memory->in.axisYPosition), mHalCompId, "%s.halui.axis.1.pos-feedback", mComponentPrefix); - newHalFloat(HAL_IN, &(memory->in.axisZPosition), mHalCompId, "%s.halui.axis.2.pos-feedback", mComponentPrefix); - newHalFloat(HAL_IN, &(memory->in.axisAPosition), mHalCompId, "%s.halui.axis.3.pos-feedback", mComponentPrefix); - newHalFloat(HAL_IN, &(memory->in.axisBPosition), mHalCompId, "%s.halui.axis.4.pos-feedback", mComponentPrefix); - newHalFloat(HAL_IN, &(memory->in.axisCPosition), mHalCompId, "%s.halui.axis.5.pos-feedback", mComponentPrefix); - - newHalFloat(HAL_IN, &(memory->in.axisXPositionRelative), mHalCompId, "%s.halui.axis.0.pos-relative", - mComponentPrefix); - newHalFloat(HAL_IN, &(memory->in.axisYPositionRelative), mHalCompId, "%s.halui.axis.1.pos-relative", - mComponentPrefix); - newHalFloat(HAL_IN, &(memory->in.axisZPositionRelative), mHalCompId, "%s.halui.axis.2.pos-relative", - mComponentPrefix); - newHalFloat(HAL_IN, &(memory->in.axisAPositionRelative), mHalCompId, "%s.halui.axis.3.pos-relative", - mComponentPrefix); - newHalFloat(HAL_IN, &(memory->in.axisBPositionRelative), mHalCompId, "%s.halui.axis.4.pos-relative", - mComponentPrefix); - newHalFloat(HAL_IN, &(memory->in.axisCPositionRelative), mHalCompId, "%s.halui.axis.5.pos-relative", - mComponentPrefix); - newHalFloat(HAL_IN, &(memory->in.stepgenXMaxVelocity), mHalCompId, "%s.stepgen.00.maxvel", mComponentPrefix); newHalFloat(HAL_IN, &(memory->in.stepgenXPositionScale), mHalCompId, "%s.stepgen.00.position-scale", mComponentPrefix); @@ -555,12 +534,43 @@ void Hal::init(const MetaButtonCodes* metaButtons, const KeyCodes& keyCodes) newHalFloat(HAL_IN, &(memory->in.stepgenCPositionScale), mHalCompId, "%s.stepgen.05.position-scale", mComponentPrefix); - newHalBit(HAL_OUT, &(memory->out.feedValueSelected0_001), mHalCompId, "%s.halui.feed.selected-0.001", + newHalBit(HAL_OUT, &(memory->out.isPendantSleeping), mHalCompId, "%s.pendant.is-sleeping", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.isPendantConnected), mHalCompId, "%s.pendant.is-connected", mComponentPrefix); + + newHalFloat(HAL_IN, &(memory->in.axisXPosition), mHalCompId, "%s.halui.axis.0.pos-feedback", mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.axisYPosition), mHalCompId, "%s.halui.axis.1.pos-feedback", mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.axisZPosition), mHalCompId, "%s.halui.axis.2.pos-feedback", mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.axisAPosition), mHalCompId, "%s.halui.axis.3.pos-feedback", mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.axisBPosition), mHalCompId, "%s.halui.axis.4.pos-feedback", mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.axisCPosition), mHalCompId, "%s.halui.axis.5.pos-feedback", mComponentPrefix); + + newHalFloat(HAL_IN, &(memory->in.axisXPositionRelative), mHalCompId, "%s.halui.axis.0.pos-relative", + mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.axisYPositionRelative), mHalCompId, "%s.halui.axis.1.pos-relative", + mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.axisZPositionRelative), mHalCompId, "%s.halui.axis.2.pos-relative", + mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.axisAPositionRelative), mHalCompId, "%s.halui.axis.3.pos-relative", + mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.axisBPositionRelative), mHalCompId, "%s.halui.axis.4.pos-relative", + mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.axisCPositionRelative), mHalCompId, "%s.halui.axis.5.pos-relative", + mComponentPrefix); + + newHalBit(HAL_OUT, &(memory->out.feedValueSelected_0_001), mHalCompId, "%s.halui.feed.selected-0.001", + mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.feedValueSelected_0_01), mHalCompId, "%s.halui.feed.selected-0.01", + mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.feedValueSelected_0_1), mHalCompId, "%s.halui.feed.selected-0.1", + mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.feedValueSelected_1_0), mHalCompId, "%s.halui.feed.selected-1.0", + mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.feedValueSelected_60), mHalCompId, "%s.halui.feed.selected-60", mComponentPrefix); - newHalBit(HAL_OUT, &(memory->out.feedValueSelected0_01), mHalCompId, "%s.halui.feed.selected-0.01", + newHalBit(HAL_OUT, &(memory->out.feedValueSelected_100), mHalCompId, "%s.halui.feed.selected-100", + mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.feedValueSelected_lead), mHalCompId, "%s.halui.feed.selected-lead", mComponentPrefix); - newHalBit(HAL_OUT, &(memory->out.feedValueSelected0_1), mHalCompId, "%s.halui.feed.selected-0.1", mComponentPrefix); - newHalBit(HAL_OUT, &(memory->out.feedValueSelected1_0), mHalCompId, "%s.halui.feed.selected-1.0", mComponentPrefix); newHalFloat(HAL_OUT, &(memory->out.feedOverrideScale), mHalCompId, "%s.halui.feed-override.scale", mComponentPrefix); @@ -591,6 +601,7 @@ void Hal::init(const MetaButtonCodes* metaButtons, const KeyCodes& keyCodes) mComponentPrefix); newHalBit(HAL_OUT, &(memory->out.spindleOverrideDoDecrease), mHalCompId, "%s.halui.spindle-override.decrease", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.spindleStart), mHalCompId, "%s.halui.spindle.start", mComponentPrefix); newHalBit(HAL_IN, &(memory->in.spindleIsOn), mHalCompId, "%s.halui.spindle.is-on", mComponentPrefix); newHalBit(HAL_OUT, &(memory->out.spindleStop), mHalCompId, "%s.halui.spindle.stop", mComponentPrefix); newHalBit(HAL_OUT, &(memory->out.spindleDoRunForward), mHalCompId, "%s.halui.spindle.forward", mComponentPrefix); @@ -628,8 +639,6 @@ void Hal::init(const MetaButtonCodes* metaButtons, const KeyCodes& keyCodes) newHalBit(HAL_OUT, &(memory->out.jointBSelect), mHalCompId, "%s.halui.joint.b.select", mComponentPrefix); newHalBit(HAL_OUT, &(memory->out.jointCSelect), mHalCompId, "%s.halui.joint.c.select", mComponentPrefix); - newHalFloat(HAL_OUT, &(memory->out.jogSpeedValue), mHalCompId, "%s.halui.jog-speed", mComponentPrefix); - newHalBit(HAL_OUT, &(memory->out.homeAll), mHalCompId, "%s.halui.home-all", mComponentPrefix); mIsInitialized = true; } @@ -710,7 +719,7 @@ hal_float_t Hal::getAxisCPosition(bool absolute) const // ---------------------------------------------------------------------- -void Hal::setEnableVerbose(bool enable) +void Hal::enableVerbose(bool enable) { if (enable) { @@ -986,28 +995,49 @@ void Hal::setFeedOverrideCounts(hal_s32_t counts) void Hal::setFeedValueSelected0_001(bool selected) { - *memory->out.feedValueSelected0_001 = selected; + *memory->out.feedValueSelected_0_001 = selected; } // ---------------------------------------------------------------------- void Hal::setFeedValueSelected0_01(bool selected) { - *memory->out.feedValueSelected0_01 = selected; + *memory->out.feedValueSelected_0_01 = selected; } // ---------------------------------------------------------------------- void Hal::setFeedValueSelected0_1(bool selected) { - *memory->out.feedValueSelected0_1 = selected; + *memory->out.feedValueSelected_0_1 = selected; } // ---------------------------------------------------------------------- void Hal::setFeedValueSelected1_0(bool selected) { - *memory->out.feedValueSelected1_0 = selected; + *memory->out.feedValueSelected_1_0 = selected; +} + +// ---------------------------------------------------------------------- + +void Hal::setFeedValueSelected60(bool selected) +{ + *memory->out.feedValueSelected_60 = selected; +} + +// ---------------------------------------------------------------------- + +void Hal::setFeedValueSelected100(bool selected) +{ + *memory->out.feedValueSelected_100 = selected; +} + +// ---------------------------------------------------------------------- + +void Hal::setFeedValueSelectedLead(bool selected) +{ + *memory->out.feedValueSelected_lead = selected; } // ---------------------------------------------------------------------- @@ -1139,11 +1169,13 @@ void Hal::toggleSpindleOnOff(bool isButtonPressed) { *memory->out.spindleDoRunReverse = true; } + *memory->out.spindleStart = true; } } else { // on button released + *memory->out.spindleStart = false; *memory->out.spindleStop = false; *memory->out.spindleDoRunForward = false; *memory->out.spindleDoRunReverse = false; diff --git a/src/hal/user_comps/xhc-whb04b-6/hal.h b/src/hal/user_comps/xhc-whb04b-6/hal.h index 94aa1f0a33..87df465d10 100644 --- a/src/hal/user_comps/xhc-whb04b-6/hal.h +++ b/src/hal/user_comps/xhc-whb04b-6/hal.h @@ -203,10 +203,13 @@ class HalMemory //! to be connected to \ref axis.5.jog-vel-mode hal_bit_t* axisCSetVelocityMode{nullptr}; - hal_bit_t* feedValueSelected0_001{nullptr}; - hal_bit_t* feedValueSelected0_01{nullptr}; - hal_bit_t* feedValueSelected0_1{nullptr}; - hal_bit_t* feedValueSelected1_0{nullptr}; + hal_bit_t* feedValueSelected_0_001{nullptr}; + hal_bit_t* feedValueSelected_0_01{nullptr}; + hal_bit_t* feedValueSelected_0_1{nullptr}; + hal_bit_t* feedValueSelected_1_0{nullptr}; + hal_bit_t* feedValueSelected_60{nullptr}; + hal_bit_t* feedValueSelected_100{nullptr}; + hal_bit_t* feedValueSelected_lead{nullptr}; //! to be connected to \ref \ref halui.feed-override.scale hal_float_t* feedOverrideScale{nullptr}; @@ -221,6 +224,8 @@ class HalMemory //! to be connected to \ref halui.feed-override.increase hal_bit_t * feedOverrideIncrease{nullptr}; + //! to be connected to \ref halui.spindle.start + hal_bit_t* spindleStart{nullptr}; //! to be connected to \ref halui.spindle.stop hal_bit_t* spindleStop{nullptr}; //! to be connected to \ref halui.spindle.forward @@ -236,9 +241,6 @@ class HalMemory //! to be connected to halui.spindle-override.increase hal_bit_t* spindleOverrideDoIncrease{nullptr}; - //! to be connected to \ref halui.jog-speed - hal_float_t* jogSpeedValue{nullptr}; - //! to be connected to \ref halui.home-all hal_bit_t* homeAll{nullptr}; @@ -321,7 +323,7 @@ class Hal const char* getHalComponentName() const; //! Enables verbose hal output. //! \param enable true to enable hal messages, disable otherwise - void setEnableVerbose(bool enable); + void enableVerbose(bool enable); //! If set indicates that no other axis is active. //! \param enabled true if no axis is active, false otherwise void setNoAxisActive(bool enabled); @@ -405,22 +407,37 @@ class Hal hal_float_t getFeedUps() const; //! Propagates the feed value 0.001 selection state to hal. - //! \sa Hal::Out::feedValueSelected0_001 + //! \sa Hal::Out::feedValueSelected_0_001 //! \param selected true if 0.001 is selected, false otherwise void setFeedValueSelected0_001(bool selected); //! Propagates the feed value 0.01 selection state to hal. - //! \sa Hal::Out::feedValueSelected0_01 + //! \sa Hal::Out::feedValueSelected_0_01 //! \param selected true if 0.01 is selected, false otherwise void setFeedValueSelected0_01(bool selected); //! Propagates the feed value 0.1 selection state to hal. - //! \sa Hal::Out::feedValueSelected0_1 + //! \sa Hal::Out::feedValueSelected_0_1 //! \param selected true if 0.1 is selected, false otherwise void setFeedValueSelected0_1(bool selected); //! Propagates the feed value 1.0 selection state to hal. - //! \sa Hal::Out::feedValueSelected1_0 + //! \sa Hal::Out::feedValueSelected_1_0 //! \param selected true if 1.0 is selected, false otherwise void setFeedValueSelected1_0(bool selected); + //! Propagates the feed value 60% selection state to hal. + //! \sa Hal::Out::feedValueSelected_60 + //! \param selected true if 60% is selected, false otherwise + void setFeedValueSelected60(bool selected); + + //! Propagates the feed value 100% selection state to hal. + //! \sa Hal::Out::feedValueSelected_100 + //! \param selected true if 100% is selected, false otherwise + void setFeedValueSelected100(bool selected); + + //! Propagates the feed value Lead selection state to hal. + //! \sa Hal::Out::feedValueSelected_lead + //! \param selected true if Lead is selected, false otherwise + void setFeedValueSelectedLead(bool selected); + //! Returns the spindle speed. //! \return the spindle speed in rounds per second hal_float_t getSpindleSpeedAbsRpm() const; diff --git a/src/hal/user_comps/xhc-whb04b-6/main.cc b/src/hal/user_comps/xhc-whb04b-6/main.cc index d65fb4a2c3..33c81217ce 100755 --- a/src/hal/user_comps/xhc-whb04b-6/main.cc +++ b/src/hal/user_comps/xhc-whb04b-6/main.cc @@ -101,18 +101,18 @@ static int printUsage(const char* programName, const char* deviceName, bool isEr << endl << "EXAMPLES" << endl << programName << " -ue" << endl - << " Prints incoming USB data transfer and generated key pressed/released events." << endl + << " Start in userspace mode (simulation) and prints incoming USB data transfer and generated key pressed/released events." << endl << endl << programName << " -p" << endl - << " Prints hal pin names and events distributed to HAL memory." << endl + << " Start in userspace mode (simulation) and prints HAL pin names and events distributed to HAL memory." << endl << endl - << programName << " -Ha" << endl + << programName << " -Hn" << endl << " Start in HAL mode and avoid output, except of errors." << endl << endl << "AUTHORS" << endl - << " This component was started by Raoul Rubien (github.com/rubienr) based on predecessor " - "device's component xhc-hb04.cc. https://github.com/machinekit/machinekit/graphs/contributors " - "gives you a more complete list of contributors." + << " This component was started by Raoul Rubien based on predecessor " + "device's component xhc-hb04.cc. https://github.com/machinekit/machinekit/graphs/contributors " + "gives you a more complete list of contributors." << endl; if (isError) @@ -172,6 +172,7 @@ int main(int argc, char** argv) WhbComponent->setWaitWithTimeout(3); break; case 'e': + WhbComponent->enableVerbosePendant(true); WhbComponent->setEnableVerboseKeyEvents(true); break; case 'u': @@ -189,6 +190,7 @@ int main(int argc, char** argv) break; case 'a': WhbComponent->enableVerboseInit(true); + WhbComponent->enableVerbosePendant(true); WhbComponent->setEnableVerboseKeyEvents(true); WhbComponent->enableVerboseRx(true); WhbComponent->enableVerboseTx(true); diff --git a/src/hal/user_comps/xhc-whb04b-6/pendant.cc b/src/hal/user_comps/xhc-whb04b-6/pendant.cc index b1cf8b6fe4..5c712e8bbe 100644 --- a/src/hal/user_comps/xhc-whb04b-6/pendant.cc +++ b/src/hal/user_comps/xhc-whb04b-6/pendant.cc @@ -700,7 +700,7 @@ void FeedRotaryButton::update() { auto enumValue = mContinuousKeycodeLut.find(mKey); assert(enumValue != mContinuousKeycodeLut.end()); - auto second = enumValue->second; + auto second = enumValue->second; mStepSize = mContinuousSizeMapper.getStepSize(second); mIsPermitted = mContinuousSizeMapper.isPermitted(second); } @@ -708,7 +708,7 @@ void FeedRotaryButton::update() { auto enumValue = mStepKeycodeLut.find(mKey); assert(enumValue != mStepKeycodeLut.end()); - auto second = enumValue->second; + auto second = enumValue->second; mStepSize = mStepStepSizeMapper.getStepSize(second); mIsPermitted = mStepStepSizeMapper.isPermitted(second); } @@ -797,9 +797,8 @@ std::ostream& operator<<(std::ostream& os, const Handwheel& data) const HandWheelCounters& Handwheel::counters() const { - return static_cast( - static_cast(*this).counters() - ); + Handwheel* self = const_cast(this); + return static_cast(self->counters()); } // ---------------------------------------------------------------------- @@ -817,6 +816,20 @@ HandWheelCounters& Handwheel::counters() // ---------------------------------------------------------------------- +void Handwheel::enableVerbose(bool enable) +{ + if (enable) + { + mWheelCout = &std::cout; + } + else + { + mWheelCout = &mDevNull; + } +} + +// ---------------------------------------------------------------------- + void Handwheel::setMode(HandWheelCounters::CounterNameToIndex activeCounterMode) { mCounters.setActiveCounter(activeCounterMode); @@ -1085,6 +1098,21 @@ void Pendant::shiftButtonState() // ---------------------------------------------------------------------- +void Pendant::enableVerbose(bool enable) +{ + mHandWheel.enableVerbose(enable); + if (enable) + { + mPendantCout = &std::cout; + } + else + { + mPendantCout = &mDevNull; + } +} + +// ---------------------------------------------------------------------- + const ButtonsState& Pendant::currentButtonsState() const { return mCurrentButtonsState; @@ -1507,6 +1535,18 @@ void Pendant::dispatchActiveFeedToHal(const KeyCode& feed, bool isActive) { mHal.setFeedValueSelected1_0(isActive); } + else if (feed.code == KeyCodes::Feed.percent_60.code) + { + mHal.setFeedValueSelected60(isActive); + } + else if (feed.code == KeyCodes::Feed.percent_100.code) + { + mHal.setFeedValueSelected100(isActive); + } + else if (feed.code == KeyCodes::Feed.lead.code) + { + mHal.setFeedValueSelectedLead(isActive); + } } // ---------------------------------------------------------------------- @@ -1846,4 +1886,3 @@ void Display::clearData() mDisplayData.row3Coordinate.clear(); } } - diff --git a/src/hal/user_comps/xhc-whb04b-6/pendant.h b/src/hal/user_comps/xhc-whb04b-6/pendant.h index e0c2104448..618f2f9aaf 100644 --- a/src/hal/user_comps/xhc-whb04b-6/pendant.h +++ b/src/hal/user_comps/xhc-whb04b-6/pendant.h @@ -24,6 +24,7 @@ // system includes #include +#include #include #include @@ -452,6 +453,7 @@ class Handwheel public: Handwheel(const FeedRotaryButton& feedButton, KeyEventListener* listener = nullptr); ~Handwheel(); + void enableVerbose(bool enable); void setMode(HandWheelCounters::CounterNameToIndex mode); void count(int8_t delta); const HandWheelCounters& counters() const; @@ -465,6 +467,7 @@ class Handwheel bool mIsEnabled{false}; const FeedRotaryButton& mFeedButton; KeyEventListener * mEventListener; + std::ostream mDevNull{nullptr}; std::ostream * mWheelCout; const char * mPrefix; }; @@ -575,6 +578,7 @@ class Pendant : public KeyEventListener void updateDisplayData(); void clearDisplayData(); + void enableVerbose(bool enable); const ButtonsState& currentButtonsState() const; const ButtonsState& previousButtonsState() const; const Handwheel& handWheel() const; @@ -599,6 +603,7 @@ class Pendant : public KeyEventListener float mMaxVelocity; const char * mPrefix; + std::ostream mDevNull{nullptr}; std::ostream* mPendantCout; void shiftButtonState(); diff --git a/src/hal/user_comps/xhc-whb04b-6/xhc-whb04b6.cc b/src/hal/user_comps/xhc-whb04b-6/xhc-whb04b6.cc index 598a4782ef..38b236aed1 100644 --- a/src/hal/user_comps/xhc-whb04b-6/xhc-whb04b6.cc +++ b/src/hal/user_comps/xhc-whb04b-6/xhc-whb04b6.cc @@ -309,18 +309,20 @@ XhcWhb04b6Component::XhcWhb04b6Component() : MetaButtonCodes(mKeyCodes.Buttons.undefined, mKeyCodes.Buttons.undefined) }, mUsb(mName, *this, mHal), - mTxCout(&mDevNull), + //mTxCout(&mDevNull), mRxCout(&mDevNull), - mKeyEventCout(&mDevNull), - mHalInitCout(&mDevNull), + //mKeyEventCout(&mDevNull), + //mHalInitCout(&mDevNull), mInitCout(&mDevNull), packageReceivedEventReceiver(*this), mPendant(mHal, mUsb.getOutputPackageData()) { setSimulationMode(true); + enableVerbosePendant(false); enableVerboseRx(false); enableVerboseTx(false); enableVerboseInit(false); + setEnableVerboseKeyEvents(false); enableVerboseHal(false); } @@ -595,6 +597,13 @@ void XhcWhb04b6Component::teardownUsb() // ---------------------------------------------------------------------- +void XhcWhb04b6Component::enableVerbosePendant(bool enable) +{ + mPendant.enableVerbose(enable); +} + +// ---------------------------------------------------------------------- + void XhcWhb04b6Component::enableVerboseRx(bool enable) { mUsb.enableVerboseRx(enable); @@ -613,30 +622,29 @@ void XhcWhb04b6Component::enableVerboseRx(bool enable) void XhcWhb04b6Component::enableVerboseTx(bool enable) { mUsb.enableVerboseTx(enable); - if (enable) + /*if (enable) { mTxCout = &std::cout; } else { mTxCout = &mDevNull; - } + }*/ } // ---------------------------------------------------------------------- void XhcWhb04b6Component::enableVerboseHal(bool enable) { - mHal.setEnableVerbose(enable); - - if (enable) + mHal.enableVerbose(enable); + /*if (enable) { mHalInitCout = &std::cout; } else { mHalInitCout = &mDevNull; - } + }*/ } // ---------------------------------------------------------------------- @@ -701,14 +709,14 @@ bool XhcWhb04b6Component::isSimulationModeEnabled() const void XhcWhb04b6Component::setEnableVerboseKeyEvents(bool enable) { mUsb.enableVerboseRx(enable); - if (enable) + /*if (enable) { mKeyEventCout = &std::cout; } else { mKeyEventCout = &mDevNull; - } + }*/ } // ---------------------------------------------------------------------- diff --git a/src/hal/user_comps/xhc-whb04b-6/xhc-whb04b6.h b/src/hal/user_comps/xhc-whb04b-6/xhc-whb04b6.h index 6631dd9960..db0023c34e 100644 --- a/src/hal/user_comps/xhc-whb04b-6/xhc-whb04b6.h +++ b/src/hal/user_comps/xhc-whb04b-6/xhc-whb04b6.h @@ -67,6 +67,7 @@ class XhcWhb04b6Component : bool isSimulationModeEnabled() const; void setSimulationMode(bool enableSimulationMode); void setEnableVerboseKeyEvents(bool enable); + void enableVerbosePendant(bool enable); void enableVerboseRx(bool enable); void enableVerboseTx(bool enable); void enableVerboseHal(bool enable); @@ -85,10 +86,10 @@ class XhcWhb04b6Component : bool mIsRunning{false}; bool mIsSimulationMode{false}; std::ostream mDevNull{nullptr}; - std::ostream * mTxCout; + //std::ostream * mTxCout; std::ostream * mRxCout; - std::ostream * mKeyEventCout; - std::ostream * mHalInitCout; + //std::ostream * mKeyEventCout; + //std::ostream * mHalInitCout; std::ostream * mInitCout; OnUsbInputPackageListener& packageReceivedEventReceiver; bool mIsCrcDebuggingEnabled{false}; From 2b3acf72edeaa2e359f4c6a5940219f34544d1ba Mon Sep 17 00:00:00 2001 From: alkabal <33371787+alkabal@users.noreply.github.com> Date: Sat, 29 Dec 2018 12:54:03 +0100 Subject: [PATCH 381/516] Add toggle function for Mist/Flood/Lube Add toggle function for Mist/Flood/Lube Mist attached to macro16 Flood attached to macro15 Lube attached to macro2 --- src/hal/user_comps/xhc-whb04b-6/hal.cc | 98 ++++++++++++++++++++++ src/hal/user_comps/xhc-whb04b-6/hal.h | 29 +++++++ src/hal/user_comps/xhc-whb04b-6/pendant.cc | 41 ++++++--- 3 files changed, 158 insertions(+), 10 deletions(-) diff --git a/src/hal/user_comps/xhc-whb04b-6/hal.cc b/src/hal/user_comps/xhc-whb04b-6/hal.cc index 72d4437ff7..a2a272d10a 100644 --- a/src/hal/user_comps/xhc-whb04b-6/hal.cc +++ b/src/hal/user_comps/xhc-whb04b-6/hal.cc @@ -98,6 +98,10 @@ Hal::~Hal() return; } + freeSimulatedPin((void**)(&memory->in.floodIsOn)); + freeSimulatedPin((void**)(&memory->in.mistIsOn)); + freeSimulatedPin((void**)(&memory->in.lubeIsOn)); + freeSimulatedPin((void**)(&memory->in.axisXPosition)); freeSimulatedPin((void**)(&memory->in.axisYPosition)); freeSimulatedPin((void**)(&memory->in.axisZPosition)); @@ -154,6 +158,13 @@ Hal::~Hal() freeSimulatedPin((void**)(&memory->out.button_pin[idx])); } + freeSimulatedPin((void**)(&memory->out.floodStop)); + freeSimulatedPin((void**)(&memory->out.floodStart)); + freeSimulatedPin((void**)(&memory->out.mistStop)); + freeSimulatedPin((void**)(&memory->out.mistStart)); + freeSimulatedPin((void**)(&memory->out.lubeStop)); + freeSimulatedPin((void**)(&memory->out.lubeStart)); + freeSimulatedPin((void**)(&memory->out.axisXJogCounts)); freeSimulatedPin((void**)(&memory->out.axisYJogCounts)); freeSimulatedPin((void**)(&memory->out.axisZJogCounts)); @@ -480,6 +491,18 @@ void Hal::init(const MetaButtonCodes* metaButtons, const KeyCodes& keyCodes) buttonName); } + newHalBit(HAL_IN, &(memory->in.floodIsOn), mHalCompId, "%s.halui.flood.is-on", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.floodStop), mHalCompId, "%s.halui.flood.off", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.floodStart), mHalCompId, "%s.halui.flood.on", mComponentPrefix); + + newHalBit(HAL_IN, &(memory->in.mistIsOn), mHalCompId, "%s.halui.mist.is-on", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.mistStop), mHalCompId, "%s.halui.mist.off", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.mistStart), mHalCompId, "%s.halui.mist.on", mComponentPrefix); + + newHalBit(HAL_IN, &(memory->in.lubeIsOn), mHalCompId, "%s.halui.lube.is-on", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.lubeStop), mHalCompId, "%s.halui.lube.off", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.lubeStart), mHalCompId, "%s.halui.lube.on", mComponentPrefix); + newHalSigned32(HAL_OUT, &(memory->out.axisXJogCounts), mHalCompId, "%s.axis.0.jog-counts", mComponentPrefix); newHalBit(HAL_OUT, &(memory->out.axisXJogEnable), mHalCompId, "%s.axis.0.jog-enable", mComponentPrefix); newHalFloat(HAL_OUT, &(memory->out.axisXJogScale), mHalCompId, "%s.axis.0.jog-scale", mComponentPrefix); @@ -1185,6 +1208,81 @@ void Hal::toggleSpindleOnOff(bool isButtonPressed) // ---------------------------------------------------------------------- +void Hal::toggleFloodOnOff(bool isButtonPressed) +{ + if (isButtonPressed) + { + if (*memory->in.floodIsOn) + { + // on flood stop + *memory->out.floodStop = true; + } + else + { + // on flood start + *memory->out.floodStart = true; + } + } + else + { + // on button released + *memory->out.floodStop = false; + *memory->out.floodStart = false; + } +} + +// ---------------------------------------------------------------------- + +void Hal::toggleMistOnOff(bool isButtonPressed) +{ + if (isButtonPressed) + { + if (*memory->in.mistIsOn) + { + // on mist stop + *memory->out.mistStop = true; + } + else + { + // on mist start + *memory->out.mistStart = true; + } + } + else + { + // on button released + *memory->out.mistStop = false; + *memory->out.mistStart = false; + } +} + +// ---------------------------------------------------------------------- + +void Hal::toggleLubeOnOff(bool isButtonPressed) +{ + if (isButtonPressed) + { + if (*memory->in.lubeIsOn) + { + // on lube stop + *memory->out.lubeStop = true; + } + else + { + // on lube start + *memory->out.lubeStart = true; + } + } + else + { + // on button released + *memory->out.lubeStop = false; + *memory->out.lubeStart = false; + } +} + +// ---------------------------------------------------------------------- + void Hal::setProbeZ(bool enabled) { enableMdiMode(enabled); diff --git a/src/hal/user_comps/xhc-whb04b-6/hal.h b/src/hal/user_comps/xhc-whb04b-6/hal.h index 87df465d10..d54e10d9a7 100644 --- a/src/hal/user_comps/xhc-whb04b-6/hal.h +++ b/src/hal/user_comps/xhc-whb04b-6/hal.h @@ -52,6 +52,14 @@ class HalMemory struct In { public: + + //! to be connected to \ref halui.flood.is-on + hal_bit_t * floodIsOn{nullptr}; + //! to be connected to \ref halui.mist.is-on + hal_bit_t * mistIsOn{nullptr}; + //! to be connected to \ref halui.lube.is-on + hal_bit_t * lubeIsOn{nullptr}; + //! to be connected to \ref halui.axis.0.pos-feedback hal_float_t* axisXPosition{nullptr}; //! to be connected to \ref halui.axis.1.pos-feedback @@ -151,6 +159,21 @@ class HalMemory public: hal_bit_t* button_pin[64] = {0}; + //! to be connected to \ref halui.flood.off + hal_bit_t * floodStop{nullptr}; + //! to be connected to \ref halui.flood.on + hal_bit_t * floodStart{nullptr}; + + //! to be connected to \ref halui.mist.off + hal_bit_t * mistStop{nullptr}; + //! to be connected to \ref halui.mist.on + hal_bit_t * mistStart{nullptr}; + + //! to be connected to \ref halui.lube.off + hal_bit_t * lubeStop{nullptr}; + //! to be connected to \ref halui.lube.on + hal_bit_t * lubeStart{nullptr}; + //! to be connected to \ref axis.0.jog-counts hal_s32_t* axisXJogCounts{nullptr}; //! to be connected to \ref axis.1.jog-counts @@ -458,6 +481,12 @@ class Hal //! \sa setReset(bool, size_t) void toggleSpindleOnOff(bool isButtonPressed); //! \sa setReset(bool, size_t) + void toggleFloodOnOff(bool isButtonPressed); + //! \sa setReset(bool, size_t) + void toggleMistOnOff(bool isButtonPressed); + //! \sa setReset(bool, size_t) + void toggleLubeOnOff(bool isButtonPressed); + //! \sa setReset(bool, size_t) void setProbeZ(bool enabled); //! \sa setReset(bool, size_t) void setContinuousMode(bool enabled); diff --git a/src/hal/user_comps/xhc-whb04b-6/pendant.cc b/src/hal/user_comps/xhc-whb04b-6/pendant.cc index 5c712e8bbe..4c387759ad 100644 --- a/src/hal/user_comps/xhc-whb04b-6/pendant.cc +++ b/src/hal/user_comps/xhc-whb04b-6/pendant.cc @@ -1246,6 +1246,7 @@ bool Pendant::onButtonPressedEvent(const MetaButtonCodes& metaButton) } else if (metaButton == KeyCodes::Meta.macro2) { + mHal.toggleLubeOnOff(true); mHal.setMacro2(true); isHandled = true; } @@ -1292,11 +1293,13 @@ bool Pendant::onButtonPressedEvent(const MetaButtonCodes& metaButton) } else if (metaButton == KeyCodes::Meta.macro15) { + mHal.toggleFloodOnOff(true); mHal.setMacro15(true); isHandled = true; } else if (metaButton == KeyCodes::Meta.macro16) { + mHal.toggleMistOnOff(true); mHal.setMacro16(true); isHandled = true; } @@ -1408,6 +1411,7 @@ bool Pendant::onButtonReleasedEvent(const MetaButtonCodes& metaButton) } else if (metaButton == KeyCodes::Meta.macro2) { + mHal.toggleLubeOnOff(false); mHal.setMacro2(false); isHandled = true; } @@ -1454,11 +1458,13 @@ bool Pendant::onButtonReleasedEvent(const MetaButtonCodes& metaButton) } else if (metaButton == KeyCodes::Meta.macro15) { + mHal.toggleFloodOnOff(false); mHal.setMacro15(false); isHandled = true; } else if (metaButton == KeyCodes::Meta.macro16) { + mHal.toggleMistOnOff(false); mHal.setMacro16(false); isHandled = true; } @@ -1768,16 +1774,31 @@ bool Display::onButtonPressedEvent(const MetaButtonCodes& metaButton) DisplayIndicatorStepMode::StepMode::STEP); return true; } - else if (metaButton == KeyCodes::Meta.macro5) - { - mAxisPositionMethod = AxisPositionMethod::ABSOLUTE; - return true; - } - else if (metaButton == KeyCodes::Meta.macro7) - { - mAxisPositionMethod = AxisPositionMethod::RELATIVE; - return true; - } + + else if (metaButton == KeyCodes::Meta.safe_z) + { + if (mAxisPositionMethod == AxisPositionMethod::ABSOLUTE) + { + mAxisPositionMethod = AxisPositionMethod::RELATIVE; + return true; + } + else if (mAxisPositionMethod == AxisPositionMethod::RELATIVE) + { + mAxisPositionMethod = AxisPositionMethod::ABSOLUTE; + return true; + } + } + +// else if (metaButton == KeyCodes::Meta.macro5) +// { +// mAxisPositionMethod = AxisPositionMethod::ABSOLUTE; +// return true; +// } +// else if (metaButton == KeyCodes::Meta.macro7) +// { +// mAxisPositionMethod = AxisPositionMethod::RELATIVE; +// return true; +// } return false; } From 27e6af6e55c671ebe59c34ac341d7ceac6cd1213 Mon Sep 17 00:00:00 2001 From: Raoul Rubien Date: Mon, 31 Dec 2018 13:28:34 +0000 Subject: [PATCH 382/516] new feature Led - can be used to manipulate spindle speed or feed override --- src/hal/user_comps/xhc-whb04b-6/hal.cc | 437 +++++++++++++----- src/hal/user_comps/xhc-whb04b-6/hal.h | 179 +++++-- src/hal/user_comps/xhc-whb04b-6/main.cc | 130 +++--- .../user_comps/xhc-whb04b-6/pendant-types.h | 2 +- src/hal/user_comps/xhc-whb04b-6/pendant.cc | 150 ++++-- src/hal/user_comps/xhc-whb04b-6/pendant.h | 21 +- src/hal/user_comps/xhc-whb04b-6/usb.cc | 67 ++- .../user_comps/xhc-whb04b-6/xhc-whb04b6.cc | 87 ++-- src/hal/user_comps/xhc-whb04b-6/xhc-whb04b6.h | 12 +- 9 files changed, 774 insertions(+), 311 deletions(-) diff --git a/src/hal/user_comps/xhc-whb04b-6/hal.cc b/src/hal/user_comps/xhc-whb04b-6/hal.cc index 507a6cd409..3871ed493b 100644 --- a/src/hal/user_comps/xhc-whb04b-6/hal.cc +++ b/src/hal/user_comps/xhc-whb04b-6/hal.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2017 Raoul Rubien (github.com/rubienr) + Copyright (C) 2018 Raoul Rubien (github.com/rubienr) This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -25,14 +25,13 @@ #include #include #include +#include // 3rd party includes // local library includes #include "./pendant.h" -using std::endl; - namespace XhcWhb04b6 { // ---------------------------------------------------------------------- @@ -75,10 +74,11 @@ void Hal::freeSimulatedPin(void** pin) // ---------------------------------------------------------------------- -Hal::Hal() : +Hal::Hal(Profiles::HalRequestProfile halRequestProfile) : mButtonNameToIdx(), mHalCout(&mDevNull), - mStepMode(HandwheelStepmodes::Mode::STEP) + mStepMode(HandwheelStepmodes::Mode::STEP), + mHalRequestProfile(halRequestProfile) { } @@ -140,7 +140,6 @@ Hal::~Hal() freeSimulatedPin((void**)(&memory->in.isProgramIdle)); freeSimulatedPin((void**)(&memory->in.isModeAuto)); - freeSimulatedPin((void**)(&memory->in.isModeJoint)); freeSimulatedPin((void**)(&memory->in.isModeManual)); freeSimulatedPin((void**)(&memory->in.isModeMdi)); @@ -182,10 +181,13 @@ Hal::~Hal() freeSimulatedPin((void**)(&memory->out.axisBSetVelocityMode)); freeSimulatedPin((void**)(&memory->out.axisCSetVelocityMode)); - freeSimulatedPin((void**)(&memory->out.feedValueSelected0_001)); - freeSimulatedPin((void**)(&memory->out.feedValueSelected0_01)); - freeSimulatedPin((void**)(&memory->out.feedValueSelected0_1)); - freeSimulatedPin((void**)(&memory->out.feedValueSelected1_0)); + freeSimulatedPin((void**)(&memory->out.feedValueSelected_0_001)); + freeSimulatedPin((void**)(&memory->out.feedValueSelected_0_01)); + freeSimulatedPin((void**)(&memory->out.feedValueSelected_0_1)); + freeSimulatedPin((void**)(&memory->out.feedValueSelected_1_0)); + freeSimulatedPin((void**)(&memory->out.feedValueSelected_60)); + freeSimulatedPin((void**)(&memory->out.feedValueSelected_100)); + freeSimulatedPin((void**)(&memory->out.feedValueSelected_lead)); freeSimulatedPin((void**)(&memory->out.feedOverrideScale)); freeSimulatedPin((void**)(&memory->out.feedOverrideCountEnable)); @@ -194,6 +196,7 @@ Hal::~Hal() freeSimulatedPin((void**)(&memory->out.feedOverrideDecrease)); freeSimulatedPin((void**)(&memory->out.feedOverrideIncrease)); + freeSimulatedPin((void**)(&memory->out.spindleStart)); freeSimulatedPin((void**)(&memory->out.spindleStop)); freeSimulatedPin((void**)(&memory->out.spindleDoRunForward)); freeSimulatedPin((void**)(&memory->out.spindleDoRunReverse)); @@ -202,8 +205,6 @@ Hal::~Hal() freeSimulatedPin((void**)(&memory->out.spindleOverrideDoDecrease)); freeSimulatedPin((void**)(&memory->out.spindleOverrideDoIncrease)); - freeSimulatedPin((void**)(&memory->out.jogSpeedValue)); - freeSimulatedPin((void**)(&memory->out.homeAll)); freeSimulatedPin((void**)(&memory->out.jointXSelect)); @@ -222,7 +223,7 @@ Hal::~Hal() freeSimulatedPin((void**)(&memory->out.doStopProgram)); freeSimulatedPin((void**)(&memory->out.doModeAuto)); - freeSimulatedPin((void**)(&memory->out.doModeJoint)); + //freeSimulatedPin((void**)(&memory->out.doModeJoint)); freeSimulatedPin((void**)(&memory->out.doModeManual)); freeSimulatedPin((void**)(&memory->out.doModeMdi)); @@ -266,7 +267,7 @@ int Hal::newHalFloat(hal_pin_dir_t direction, hal_float_t** ptr, int componentId { *mHalCout << "in "; } - *mHalCout << pin_name << endl; + *mHalCout << pin_name << "\n"; assert(ptr != nullptr); assert(*ptr == nullptr); @@ -304,7 +305,7 @@ int Hal::newHalSigned32(hal_pin_dir_t direction, hal_s32_t** ptr, int componentI { *mHalCout << "in "; } - *mHalCout << pin_name << endl; + *mHalCout << pin_name << "\n"; assert(ptr != nullptr); assert(*ptr == nullptr); @@ -342,7 +343,7 @@ int Hal::newHalUnsigned32(hal_pin_dir_t direction, hal_u32_t** ptr, int componen { *mHalCout << "in "; } - *mHalCout << pin_name << endl; + *mHalCout << pin_name << "\n"; assert(ptr != nullptr); assert(*ptr == nullptr); @@ -380,7 +381,7 @@ int Hal::newHalBit(hal_pin_dir_t direction, hal_bit_t** ptr, int componentId, co { *mHalCout << "in "; } - *mHalCout << pin_name << endl; + *mHalCout << pin_name << "\n"; assert(ptr != nullptr); assert(*ptr == nullptr); @@ -437,10 +438,10 @@ void Hal::init(const MetaButtonCodes* metaButtons, const KeyCodes& keyCodes) mHalCompId = hal_init(mName); if (mHalCompId <= 0) { - std::cerr << endl << "failed to initialize HAL component " << mName << endl; + std::cerr << "\nfailed to initialize HAL component " << mName << "\n"; exit(EXIT_FAILURE); } - *mHalCout << "ok" << endl; + *mHalCout << "ok\n" ; *mHalCout << "hal initialize shared HAL memory for component id " << mHalCompId << " ... "; memory = reinterpret_cast(hal_malloc(sizeof(HalMemory))); @@ -454,10 +455,10 @@ void Hal::init(const MetaButtonCodes* metaButtons, const KeyCodes& keyCodes) if (memory == nullptr) { - std::cerr << "failed to allocate HAL memory" << endl; + std::cerr << "failed to allocate HAL memory\n"; exit(EXIT_FAILURE); } - *mHalCout << "ok" << endl; + *mHalCout << "ok\n"; // register all known xhc-whb04b-6 buttons for (size_t idx = 0; !((metaButtons[idx].key.code == keyCodes.Buttons.undefined.code) && @@ -508,29 +509,6 @@ void Hal::init(const MetaButtonCodes* metaButtons, const KeyCodes& keyCodes) newHalFloat(HAL_OUT, &(memory->out.axisCJogScale), mHalCompId, "%s.axis.5.jog-scale", mComponentPrefix); newHalBit(HAL_OUT, &(memory->out.axisCSetVelocityMode), mHalCompId, "%s.axis.5.jog-vel-mode", mComponentPrefix); - newHalBit(HAL_OUT, &(memory->out.isPendantSleeping), mHalCompId, "%s.pendant.is-sleeping", mComponentPrefix); - newHalBit(HAL_OUT, &(memory->out.isPendantConnected), mHalCompId, "%s.pendant.is-connected", mComponentPrefix); - - newHalFloat(HAL_IN, &(memory->in.axisXPosition), mHalCompId, "%s.halui.axis.0.pos-feedback", mComponentPrefix); - newHalFloat(HAL_IN, &(memory->in.axisYPosition), mHalCompId, "%s.halui.axis.1.pos-feedback", mComponentPrefix); - newHalFloat(HAL_IN, &(memory->in.axisZPosition), mHalCompId, "%s.halui.axis.2.pos-feedback", mComponentPrefix); - newHalFloat(HAL_IN, &(memory->in.axisAPosition), mHalCompId, "%s.halui.axis.3.pos-feedback", mComponentPrefix); - newHalFloat(HAL_IN, &(memory->in.axisBPosition), mHalCompId, "%s.halui.axis.4.pos-feedback", mComponentPrefix); - newHalFloat(HAL_IN, &(memory->in.axisCPosition), mHalCompId, "%s.halui.axis.5.pos-feedback", mComponentPrefix); - - newHalFloat(HAL_IN, &(memory->in.axisXPositionRelative), mHalCompId, "%s.halui.axis.0.pos-relative", - mComponentPrefix); - newHalFloat(HAL_IN, &(memory->in.axisYPositionRelative), mHalCompId, "%s.halui.axis.1.pos-relative", - mComponentPrefix); - newHalFloat(HAL_IN, &(memory->in.axisZPositionRelative), mHalCompId, "%s.halui.axis.2.pos-relative", - mComponentPrefix); - newHalFloat(HAL_IN, &(memory->in.axisAPositionRelative), mHalCompId, "%s.halui.axis.3.pos-relative", - mComponentPrefix); - newHalFloat(HAL_IN, &(memory->in.axisBPositionRelative), mHalCompId, "%s.halui.axis.4.pos-relative", - mComponentPrefix); - newHalFloat(HAL_IN, &(memory->in.axisCPositionRelative), mHalCompId, "%s.halui.axis.5.pos-relative", - mComponentPrefix); - newHalFloat(HAL_IN, &(memory->in.stepgenXMaxVelocity), mHalCompId, "%s.stepgen.00.maxvel", mComponentPrefix); newHalFloat(HAL_IN, &(memory->in.stepgenXPositionScale), mHalCompId, "%s.stepgen.00.position-scale", mComponentPrefix); @@ -555,12 +533,43 @@ void Hal::init(const MetaButtonCodes* metaButtons, const KeyCodes& keyCodes) newHalFloat(HAL_IN, &(memory->in.stepgenCPositionScale), mHalCompId, "%s.stepgen.05.position-scale", mComponentPrefix); - newHalBit(HAL_OUT, &(memory->out.feedValueSelected0_001), mHalCompId, "%s.halui.feed.selected-0.001", + newHalBit(HAL_OUT, &(memory->out.isPendantSleeping), mHalCompId, "%s.pendant.is-sleeping", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.isPendantConnected), mHalCompId, "%s.pendant.is-connected", mComponentPrefix); + + newHalFloat(HAL_IN, &(memory->in.axisXPosition), mHalCompId, "%s.halui.axis.0.pos-feedback", mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.axisYPosition), mHalCompId, "%s.halui.axis.1.pos-feedback", mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.axisZPosition), mHalCompId, "%s.halui.axis.2.pos-feedback", mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.axisAPosition), mHalCompId, "%s.halui.axis.3.pos-feedback", mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.axisBPosition), mHalCompId, "%s.halui.axis.4.pos-feedback", mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.axisCPosition), mHalCompId, "%s.halui.axis.5.pos-feedback", mComponentPrefix); + + newHalFloat(HAL_IN, &(memory->in.axisXPositionRelative), mHalCompId, "%s.halui.axis.0.pos-relative", + mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.axisYPositionRelative), mHalCompId, "%s.halui.axis.1.pos-relative", + mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.axisZPositionRelative), mHalCompId, "%s.halui.axis.2.pos-relative", + mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.axisAPositionRelative), mHalCompId, "%s.halui.axis.3.pos-relative", + mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.axisBPositionRelative), mHalCompId, "%s.halui.axis.4.pos-relative", + mComponentPrefix); + newHalFloat(HAL_IN, &(memory->in.axisCPositionRelative), mHalCompId, "%s.halui.axis.5.pos-relative", + mComponentPrefix); + + newHalBit(HAL_OUT, &(memory->out.feedValueSelected_0_001), mHalCompId, "%s.halui.feed.selected-0.001", + mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.feedValueSelected_0_01), mHalCompId, "%s.halui.feed.selected-0.01", + mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.feedValueSelected_0_1), mHalCompId, "%s.halui.feed.selected-0.1", mComponentPrefix); - newHalBit(HAL_OUT, &(memory->out.feedValueSelected0_01), mHalCompId, "%s.halui.feed.selected-0.01", + newHalBit(HAL_OUT, &(memory->out.feedValueSelected_1_0), mHalCompId, "%s.halui.feed.selected-1.0", + mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.feedValueSelected_60), mHalCompId, "%s.halui.feed.selected-60", + mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.feedValueSelected_100), mHalCompId, "%s.halui.feed.selected-100", + mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.feedValueSelected_lead), mHalCompId, "%s.halui.feed.selected-lead", mComponentPrefix); - newHalBit(HAL_OUT, &(memory->out.feedValueSelected0_1), mHalCompId, "%s.halui.feed.selected-0.1", mComponentPrefix); - newHalBit(HAL_OUT, &(memory->out.feedValueSelected1_0), mHalCompId, "%s.halui.feed.selected-1.0", mComponentPrefix); newHalFloat(HAL_OUT, &(memory->out.feedOverrideScale), mHalCompId, "%s.halui.feed-override.scale", mComponentPrefix); @@ -591,6 +600,7 @@ void Hal::init(const MetaButtonCodes* metaButtons, const KeyCodes& keyCodes) mComponentPrefix); newHalBit(HAL_OUT, &(memory->out.spindleOverrideDoDecrease), mHalCompId, "%s.halui.spindle-override.decrease", mComponentPrefix); + newHalBit(HAL_OUT, &(memory->out.spindleStart), mHalCompId, "%s.halui.spindle.start", mComponentPrefix); newHalBit(HAL_IN, &(memory->in.spindleIsOn), mHalCompId, "%s.halui.spindle.is-on", mComponentPrefix); newHalBit(HAL_OUT, &(memory->out.spindleStop), mHalCompId, "%s.halui.spindle.stop", mComponentPrefix); newHalBit(HAL_OUT, &(memory->out.spindleDoRunForward), mHalCompId, "%s.halui.spindle.forward", mComponentPrefix); @@ -613,11 +623,9 @@ void Hal::init(const MetaButtonCodes* metaButtons, const KeyCodes& keyCodes) newHalBit(HAL_OUT, &(memory->out.doStopProgram), mHalCompId, "%s.halui.program.stop", mComponentPrefix); newHalBit(HAL_IN, &(memory->in.isModeAuto), mHalCompId, "%s.halui.mode.is-auto", mComponentPrefix); - newHalBit(HAL_IN, &(memory->in.isModeJoint), mHalCompId, "%s.halui.mode.is-joint", mComponentPrefix); newHalBit(HAL_IN, &(memory->in.isModeManual), mHalCompId, "%s.halui.mode.is-manual", mComponentPrefix); newHalBit(HAL_IN, &(memory->in.isModeMdi), mHalCompId, "%s.halui.mode.is-mdi", mComponentPrefix); newHalBit(HAL_OUT, &(memory->out.doModeAuto), mHalCompId, "%s.halui.mode.auto", mComponentPrefix); - newHalBit(HAL_OUT, &(memory->out.doModeJoint), mHalCompId, "%s.halui.mode.joint", mComponentPrefix); newHalBit(HAL_OUT, &(memory->out.doModeManual), mHalCompId, "%s.halui.mode.manual", mComponentPrefix); newHalBit(HAL_OUT, &(memory->out.doModeMdi), mHalCompId, "%s.halui.mode.mdi", mComponentPrefix); @@ -628,8 +636,6 @@ void Hal::init(const MetaButtonCodes* metaButtons, const KeyCodes& keyCodes) newHalBit(HAL_OUT, &(memory->out.jointBSelect), mHalCompId, "%s.halui.joint.b.select", mComponentPrefix); newHalBit(HAL_OUT, &(memory->out.jointCSelect), mHalCompId, "%s.halui.joint.c.select", mComponentPrefix); - newHalFloat(HAL_OUT, &(memory->out.jogSpeedValue), mHalCompId, "%s.halui.jog-speed", mComponentPrefix); - newHalBit(HAL_OUT, &(memory->out.homeAll), mHalCompId, "%s.halui.home-all", mComponentPrefix); mIsInitialized = true; } @@ -710,7 +716,7 @@ hal_float_t Hal::getAxisCPosition(bool absolute) const // ---------------------------------------------------------------------- -void Hal::setEnableVerbose(bool enable) +void Hal::enableVerbose(bool enable) { if (enable) { @@ -726,7 +732,7 @@ void Hal::setEnableVerbose(bool enable) void Hal::setNoAxisActive(bool enabled) { - *mHalCout << "hal OFF no axis active" << endl; + *mHalCout << "hal OFF no axis active\n"; } // ---------------------------------------------------------------------- @@ -735,7 +741,7 @@ void Hal::setAxisXActive(bool enabled) { *memory->out.jointXSelect = enabled; *memory->out.axisXJogEnable = enabled; - *mHalCout << "hal X axis active" << endl; + *mHalCout << "hal X axis active\n"; } // ---------------------------------------------------------------------- @@ -744,7 +750,7 @@ void Hal::setAxisYActive(bool enabled) { *memory->out.jointYSelect = enabled; *memory->out.axisYJogEnable = enabled; - *mHalCout << "hal Y axis active" << endl; + *mHalCout << "hal Y axis active\n"; } // ---------------------------------------------------------------------- @@ -753,7 +759,7 @@ void Hal::setAxisZActive(bool enabled) { *memory->out.jointZSelect = enabled; *memory->out.axisZJogEnable = enabled; - *mHalCout << "hal Z axis active" << endl; + *mHalCout << "hal Z axis active\n"; } // ---4------------------------------------------------------------------- @@ -762,7 +768,7 @@ void Hal::setAxisAActive(bool enabled) { *memory->out.jointASelect = enabled; *memory->out.axisAJogEnable = enabled; - *mHalCout << "hal A axis active" << endl; + *mHalCout << "hal A axis active\n"; } // ---------------------------------------------------------------------- @@ -771,7 +777,7 @@ void Hal::setAxisBActive(bool enabled) { *memory->out.jointBSelect = enabled; *memory->out.axisBJogEnable = enabled; - *mHalCout << "hal B axis active" << endl; + *mHalCout << "hal B axis active\n"; } // ---------------------------------------------------------------------- @@ -780,7 +786,7 @@ void Hal::setAxisCActive(bool enabled) { *memory->out.jointCSelect = enabled; *memory->out.axisCJogEnable = enabled; - *mHalCout << "hal C axis active" << endl; + *mHalCout << "hal C axis active\n"; } // ---------------------------------------------------------------------- @@ -793,7 +799,7 @@ void Hal::setStepSize(const hal_float_t& stepSize) *memory->out.axisAJogScale = stepSize; *memory->out.axisBJogScale = stepSize; *memory->out.axisCJogScale = stepSize; - *mHalCout << "hal step size " << stepSize << endl; + *mHalCout << "hal step size " << stepSize << "\n"; } // ---------------------------------------------------------------------- @@ -802,7 +808,7 @@ void Hal::setLead() { std::ios init(NULL); init.copyfmt(*mHalCout); - *mHalCout << "hal feed rate Lead" << endl; + *mHalCout << "hal feed rate Lead\n"; mHalCout->copyfmt(init); } @@ -841,18 +847,19 @@ void Hal::setStop(bool enabled) void Hal::setStart(bool enabled) { - if (!enabled) + if (requestAutoMode(enabled)) { - // clear auto mode - *memory->out.doModeAuto = false; + if (enabled) + { + toggleStartResumeProgram(); + } + setPin(enabled, KeyCodes::Buttons.start.text); } - else + + if (!enabled) { - // request auto mode - *memory->out.doModeAuto = true; - toggleStartResumeProgram(); + setPin(enabled, KeyCodes::Buttons.start.text); } - setPin(enabled, KeyCodes::Buttons.start.text); } // ---------------------------------------------------------------------- @@ -986,28 +993,49 @@ void Hal::setFeedOverrideCounts(hal_s32_t counts) void Hal::setFeedValueSelected0_001(bool selected) { - *memory->out.feedValueSelected0_001 = selected; + *memory->out.feedValueSelected_0_001 = selected; } // ---------------------------------------------------------------------- void Hal::setFeedValueSelected0_01(bool selected) { - *memory->out.feedValueSelected0_01 = selected; + *memory->out.feedValueSelected_0_01 = selected; } // ---------------------------------------------------------------------- void Hal::setFeedValueSelected0_1(bool selected) { - *memory->out.feedValueSelected0_1 = selected; + *memory->out.feedValueSelected_0_1 = selected; } // ---------------------------------------------------------------------- void Hal::setFeedValueSelected1_0(bool selected) { - *memory->out.feedValueSelected1_0 = selected; + *memory->out.feedValueSelected_1_0 = selected; +} + +// ---------------------------------------------------------------------- + +void Hal::setFeedValueSelected60(bool selected) +{ + *memory->out.feedValueSelected_60 = selected; +} + +// ---------------------------------------------------------------------- + +void Hal::setFeedValueSelected100(bool selected) +{ + *memory->out.feedValueSelected_100 = selected; +} + +// ---------------------------------------------------------------------- + +void Hal::setFeedValueSelectedLead(bool selected) +{ + *memory->out.feedValueSelected_lead = selected; } // ---------------------------------------------------------------------- @@ -1063,27 +1091,68 @@ void Hal::setSpindleMinus(bool enabled) // ---------------------------------------------------------------------- -void Hal::setMachineHome(bool enabled) +/** + * Requests machine to go home home. + * The task is performed via MDI command. + */ +void Hal::requestMachineGoHome(bool enabled) { - enableMdiMode(enabled); - *memory->out.homeAll = enabled; - setPin(enabled, KeyCodes::Buttons.machine_home.text); + if (requestMdiMode(enabled)) + { + if (enabled) + { + setPin(enabled, KeyCodes::Buttons.machine_home.text); + } + } + + if (!enabled) + { + setPin(enabled, KeyCodes::Buttons.machine_home.text); + } } // ---------------------------------------------------------------------- +/** + * Sends machine to safe Z position. + * The task is performed via MDI code. + */ void Hal::setSafeZ(bool enabled) { - enableMdiMode(enabled); - setPin(enabled, KeyCodes::Buttons.safe_z.text); + if (requestMdiMode(enabled)) + { + if (enabled) + { + setPin(enabled, KeyCodes::Buttons.safe_z.text); + } + } + + if (!enabled) + { + setPin(enabled, KeyCodes::Buttons.safe_z.text); + } } // ---------------------------------------------------------------------- +/** + * Sends machine to workpiece home position. + * The task is performed via MDI code. + */ void Hal::setWorkpieceHome(bool enabled) { - enableMdiMode(enabled); - setPin(enabled, KeyCodes::Buttons.workpiece_home.text); + if (requestMdiMode(enabled)) + { + if (enabled) + { + setPin(enabled, KeyCodes::Buttons.workpiece_home.text); + } + } + + if (!enabled) + { + setPin(enabled, KeyCodes::Buttons.workpiece_home.text); + } } // ---------------------------------------------------------------------- @@ -1139,11 +1208,13 @@ void Hal::toggleSpindleOnOff(bool isButtonPressed) { *memory->out.spindleDoRunReverse = true; } + *memory->out.spindleStart = true; } } else { // on button released + *memory->out.spindleStart = false; *memory->out.spindleStop = false; *memory->out.spindleDoRunForward = false; *memory->out.spindleDoRunReverse = false; @@ -1153,10 +1224,24 @@ void Hal::toggleSpindleOnOff(bool isButtonPressed) // ---------------------------------------------------------------------- +/** + * Puts machine into probing mode for Z axis. + * The task is performed via MDI code. + */ void Hal::setProbeZ(bool enabled) { - enableMdiMode(enabled); - setPin(enabled, KeyCodes::Buttons.probe_z.text); + if (requestMdiMode(enabled)) + { + if (enabled) + { + setPin(enabled, KeyCodes::Buttons.probe_z.text); + } + } + + if (!enabled) + { + setPin(enabled, KeyCodes::Buttons.probe_z.text); + } } // ---------------------------------------------------------------------- @@ -1171,7 +1256,7 @@ void Hal::setContinuousMode(bool enabled) *memory->out.axisASetVelocityMode = true; *memory->out.axisBSetVelocityMode = true; *memory->out.axisCSetVelocityMode = true; - *mHalCout << "hal step mode is continuous" << endl; + *mHalCout << "hal step mode is continuous\n"; } setPin(enabled, KeyCodes::Buttons.manual_pulse_generator.text); } @@ -1188,7 +1273,7 @@ void Hal::setStepMode(bool enabled) *memory->out.axisASetVelocityMode = false; *memory->out.axisBSetVelocityMode = false; *memory->out.axisCSetVelocityMode = false; - *mHalCout << "hal step mode is step" << endl; + *mHalCout << "hal step mode is step\n"; } setPin(enabled, KeyCodes::Buttons.step_continuous.text); } @@ -1280,9 +1365,26 @@ void Hal::setMacro9(bool enabled) // ---------------------------------------------------------------------- +void Hal::requestMachineHomingAll(bool isRisingEdge) +{ + if (requestManualMode(isRisingEdge)) + { + if (isRisingEdge) + { + *memory->out.homeAll = isRisingEdge; + } + } + + if (!isRisingEdge) + { + *memory->out.homeAll = isRisingEdge; + } +} + +// ---------------------------------------------------------------------- + void Hal::setMacro10(bool enabled) { - enableManualMode(enabled); setPin(enabled, KeyCodes::Buttons.macro10.text); } @@ -1332,8 +1434,7 @@ void Hal::setMacro16(bool enabled) void Hal::setPin(bool enabled, size_t pinNumber, const char* pinName) { - *mHalCout << "hal " << pinName << ((enabled) ? " enabled" : " disabled") << " (pin # " << pinNumber << ")" - << endl; + *mHalCout << "hal " << pinName << ((enabled) ? " enabled" : " disabled") << " (pin # " << pinNumber << ")\n"; *(memory->out.button_pin[pinNumber]) = enabled; } @@ -1351,20 +1452,26 @@ void Hal::setPin(bool enabled, const char* pinName) void Hal::setJogCounts(const HandWheelCounters& counters) { - *memory->out.axisXJogCounts = counters.counts(HandWheelCounters::CounterNameToIndex::AXIS_X); - *memory->out.axisYJogCounts = counters.counts(HandWheelCounters::CounterNameToIndex::AXIS_Y); - *memory->out.axisZJogCounts = counters.counts(HandWheelCounters::CounterNameToIndex::AXIS_Z); - *memory->out.axisAJogCounts = counters.counts(HandWheelCounters::CounterNameToIndex::AXIS_A); - *memory->out.axisBJogCounts = counters.counts(HandWheelCounters::CounterNameToIndex::AXIS_B); - *memory->out.axisCJogCounts = counters.counts(HandWheelCounters::CounterNameToIndex::AXIS_C); if (counters.isLeadCounterActive()) { *memory->out.feedOverrideCounts = counters.counts(HandWheelCounters::CounterNameToIndex::LEAD); } + else + { + requestManualMode(true); + *memory->out.axisXJogCounts = counters.counts(HandWheelCounters::CounterNameToIndex::AXIS_X); + *memory->out.axisYJogCounts = counters.counts(HandWheelCounters::CounterNameToIndex::AXIS_Y); + *memory->out.axisZJogCounts = counters.counts(HandWheelCounters::CounterNameToIndex::AXIS_Z); + *memory->out.axisAJogCounts = counters.counts(HandWheelCounters::CounterNameToIndex::AXIS_A); + *memory->out.axisBJogCounts = counters.counts(HandWheelCounters::CounterNameToIndex::AXIS_B); + *memory->out.axisCJogCounts = counters.counts(HandWheelCounters::CounterNameToIndex::AXIS_C); + requestManualMode(false); + } } // ---------------------------------------------------------------------- + void Hal::setFunction(bool enabled) { setPin(enabled, KeyCodes::Buttons.function.text); @@ -1372,54 +1479,160 @@ void Hal::setFunction(bool enabled) // ---------------------------------------------------------------------- -bool Hal::trySetManualMode(bool isButtonPressed) +bool Hal::requestAutoMode(bool isRisingEdge) { - if (isButtonPressed) + return requestMode(isRisingEdge, memory->out.doModeAuto, memory->in.isModeAuto); +} + +// ---------------------------------------------------------------------- + +bool Hal::requestManualMode(bool isRisingEdge) +{ + return requestMode(isRisingEdge, memory->out.doModeManual, memory->in.isModeManual); +} + +// ---------------------------------------------------------------------- + +/** + * MDI mode is usually to be requested before an MDI code is executed. + */ +bool Hal::requestMdiMode(bool isRisingEdge) +{ + return requestMode(isRisingEdge, memory->out.doModeMdi, memory->in.isModeMdi); +} + +// ---------------------------------------------------------------------- + +bool Hal::requestMode(bool isRisingEdge, hal_bit_t *requestPin, hal_bit_t * modeFeedbackPin) +{ + if (isRisingEdge) { - if (!*memory->in.isModeAuto) + if (true == *modeFeedbackPin) { - *memory->out.doModeManual = true; + // shortcut for mode request which is already active return true; } + // request mode + *requestPin = true; + usleep(mHalRequestProfile.mode.holdMs * 1000); + *requestPin = false; + usleep(mHalRequestProfile.mode.spaceMs * 1000); + return waitForRequestedMode(modeFeedbackPin); } else { - *memory->out.doModeManual = false; + // on button released always clear request + *requestPin = false; + return false; } + return false; } // ---------------------------------------------------------------------- -void Hal::enableManualMode(bool isRisingEdge) +bool Hal::waitForRequestedMode(volatile hal_bit_t * condition) { - if (isRisingEdge) + if(mIsSimulationMode) + { + return true; + } + + useconds_t timeoutMs = mHalRequestProfile.mode.modeCheckLoopTimeoutMs; + unsigned int maxTimeouts = mHalRequestProfile.mode.modeCheckLoops; + unsigned int timeouts = maxTimeouts; + + do { - if (*memory->in.isModeManual || *memory->in.isModeMdi) + if (false == *condition) { - *memory->out.doModeManual = true; + usleep(timeoutMs * 1000); + } + else + { + return true; } + } while ((false == *condition) && (--timeouts) > 0); + + if (false == *condition) + { + auto delay = (maxTimeouts - timeouts) * timeoutMs; + std::cerr << "hal failed to wait for reqested mode. waited " << delay << "ms\n"; + return false; } else { - *memory->out.doModeManual = false; + return true; } + + return false; } // ---------------------------------------------------------------------- -void Hal::enableMdiMode(bool isRisingEdge) +void Hal::spindleIncrease(int8_t count) { - if (isRisingEdge) + std::cout << " spindleIncrease\n"; + spindleSpeedToggle(count, true); +} + +// ---------------------------------------------------------------------- + +void Hal::spindleDecrease(int8_t count) +{ + std::cout << " spindleDecrease\n"; + spindleSpeedToggle(count, false); +} + +// ---------------------------------------------------------------------- + +void Hal::spindleSpeedToggle(int8_t count, bool increase) +{ + hal_bit_t* spindlePin = memory->out.spindleDoIncrease; + if (!increase) { - if (*memory->in.isModeManual || *memory->in.isModeMdi) - { - *memory->out.doModeMdi = true; - } + spindlePin = memory->out.spindleDoDecrease; + } + + for (; count > 0; --count) + { + auto holdMs = mHalRequestProfile.spindle.holdMs; + auto spaceMs = mHalRequestProfile.spindle.spaceMs; + + *spindlePin = true; + usleep(holdMs * 1000); + + *spindlePin = false; + usleep(spaceMs * 1000); + } +} + +// ---------------------------------------------------------------------- + +void Hal::toggleSpindleIncrease() +{ + if (*memory->out.spindleDoIncrease) + { + *memory->out.spindleDoIncrease = false; } else { - *memory->out.doModeMdi = false; + *memory->out.spindleDoIncrease = true; } } + +// ---------------------------------------------------------------------- + +void Hal::toggleSpindleDecrease() +{ + if (*memory->out.spindleDoDecrease) + { + *memory->out.spindleDoDecrease = false; + } + else + { + *memory->out.spindleDoDecrease = true; + } +} + } diff --git a/src/hal/user_comps/xhc-whb04b-6/hal.h b/src/hal/user_comps/xhc-whb04b-6/hal.h index 94aa1f0a33..f1b5c0c973 100644 --- a/src/hal/user_comps/xhc-whb04b-6/hal.h +++ b/src/hal/user_comps/xhc-whb04b-6/hal.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2017 Raoul Rubien (github.com/rubienr) + Copyright (C) 2018 Raoul Rubien (github.com/rubienr) This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -32,6 +32,7 @@ // local library includes #include +#include // forward declarations @@ -40,7 +41,63 @@ namespace XhcWhb04b6 { // forward declarations class MetaButtonCodes; class KeyCodes; +namespace Profiles { +struct ModeRequest; +struct SpindleRequest; +struct HalRequestProfile; +} + +namespace Profiles { + +// ---------------------------------------------------------------------- + +//! Defines hold and space delays for mode requests when pin is toggled. +struct ModeRequest { + const useconds_t holdMs; + const useconds_t spaceMs; + + const uint modeCheckLoops; + const useconds_t modeCheckLoopTimeoutMs; +}; + +// ---------------------------------------------------------------------- + +//! Defines hold and space delays for spindle increment/decrement requests. +struct SpindleRequest { + const useconds_t holdMs; + const useconds_t spaceMs; +}; + +// ---------------------------------------------------------------------- + +//! Overall hal request profile. +struct HalRequestProfile +{ + ModeRequest mode; + SpindleRequest spindle; +}; + +// ---------------------------------------------------------------------- + +//! A slow profile is reasonable for the BeagleBoneBlack especially when using Axis UI. +static constexpr HalRequestProfile halRequestSlowProfile() +{ + //! For BeagleBoneBlack this values seams reasonable, since it is a rather slow hardware. + return HalRequestProfile + { + { + // ModeRequest + 10, 10, // hold, space + 60, 5 // loops, timeout + }, + { + // SpindleRequest + 30, 30, // hold, space + } + }; +} +} // ---------------------------------------------------------------------- @@ -130,8 +187,6 @@ class HalMemory //! to be connected to \ref halui.mode.is-auto hal_bit_t* isModeAuto{nullptr}; - //! to be connected to \ref halui.mode.is-joint - hal_bit_t* isModeJoint{nullptr}; //! to be connected to \ref halui.mode.is-manual hal_bit_t* isModeManual{nullptr}; //! to be connected to \ref halui.mode.is-mdi @@ -203,10 +258,13 @@ class HalMemory //! to be connected to \ref axis.5.jog-vel-mode hal_bit_t* axisCSetVelocityMode{nullptr}; - hal_bit_t* feedValueSelected0_001{nullptr}; - hal_bit_t* feedValueSelected0_01{nullptr}; - hal_bit_t* feedValueSelected0_1{nullptr}; - hal_bit_t* feedValueSelected1_0{nullptr}; + hal_bit_t* feedValueSelected_0_001{nullptr}; + hal_bit_t* feedValueSelected_0_01{nullptr}; + hal_bit_t* feedValueSelected_0_1{nullptr}; + hal_bit_t* feedValueSelected_1_0{nullptr}; + hal_bit_t* feedValueSelected_60{nullptr}; + hal_bit_t* feedValueSelected_100{nullptr}; + hal_bit_t* feedValueSelected_lead{nullptr}; //! to be connected to \ref \ref halui.feed-override.scale hal_float_t* feedOverrideScale{nullptr}; @@ -221,6 +279,8 @@ class HalMemory //! to be connected to \ref halui.feed-override.increase hal_bit_t * feedOverrideIncrease{nullptr}; + //! to be connected to \ref halui.spindle.start + hal_bit_t* spindleStart{nullptr}; //! to be connected to \ref halui.spindle.stop hal_bit_t* spindleStop{nullptr}; //! to be connected to \ref halui.spindle.forward @@ -236,9 +296,6 @@ class HalMemory //! to be connected to halui.spindle-override.increase hal_bit_t* spindleOverrideDoIncrease{nullptr}; - //! to be connected to \ref halui.jog-speed - hal_float_t* jogSpeedValue{nullptr}; - //! to be connected to \ref halui.home-all hal_bit_t* homeAll{nullptr}; @@ -271,8 +328,6 @@ class HalMemory //! to be connected to \ref halui.mode.auto hal_bit_t* doModeAuto{nullptr}; - //! to be connected to \ref halui.mode.joint - hal_bit_t* doModeJoint{nullptr}; //! to be connected to \ref halui.mode.manual hal_bit_t* doModeManual{nullptr}; //! to be connected to \ref halui.mode.mdi @@ -304,7 +359,8 @@ class HalMemory class Hal { public: - Hal(); + Hal(Profiles::HalRequestProfile halRequestProfile=Profiles::halRequestSlowProfile()); + ~Hal(); //! Initializes HAL memory and pins according to simulation mode. Must not be called more than once. //! If \ref mIsSimulationMode is true heap memory will be used, shared HAL memory otherwise. @@ -321,7 +377,7 @@ class Hal const char* getHalComponentName() const; //! Enables verbose hal output. //! \param enable true to enable hal messages, disable otherwise - void setEnableVerbose(bool enable); + void enableVerbose(bool enable); //! If set indicates that no other axis is active. //! \param enabled true if no axis is active, false otherwise void setNoAxisActive(bool enabled); @@ -405,22 +461,37 @@ class Hal hal_float_t getFeedUps() const; //! Propagates the feed value 0.001 selection state to hal. - //! \sa Hal::Out::feedValueSelected0_001 + //! \sa Hal::Out::feedValueSelected_0_001 //! \param selected true if 0.001 is selected, false otherwise void setFeedValueSelected0_001(bool selected); //! Propagates the feed value 0.01 selection state to hal. - //! \sa Hal::Out::feedValueSelected0_01 + //! \sa Hal::Out::feedValueSelected_0_01 //! \param selected true if 0.01 is selected, false otherwise void setFeedValueSelected0_01(bool selected); //! Propagates the feed value 0.1 selection state to hal. - //! \sa Hal::Out::feedValueSelected0_1 + //! \sa Hal::Out::feedValueSelected_0_1 //! \param selected true if 0.1 is selected, false otherwise void setFeedValueSelected0_1(bool selected); //! Propagates the feed value 1.0 selection state to hal. - //! \sa Hal::Out::feedValueSelected1_0 + //! \sa Hal::Out::feedValueSelected_1_0 //! \param selected true if 1.0 is selected, false otherwise void setFeedValueSelected1_0(bool selected); + //! Propagates the feed value 60% selection state to hal. + //! \sa Hal::Out::feedValueSelected_60 + //! \param selected true if 60% is selected, false otherwise + void setFeedValueSelected60(bool selected); + + //! Propagates the feed value 100% selection state to hal. + //! \sa Hal::Out::feedValueSelected_100 + //! \param selected true if 100% is selected, false otherwise + void setFeedValueSelected100(bool selected); + + //! Propagates the feed value Lead selection state to hal. + //! \sa Hal::Out::feedValueSelected_lead + //! \param selected true if Lead is selected, false otherwise + void setFeedValueSelectedLead(bool selected); + //! Returns the spindle speed. //! \return the spindle speed in rounds per second hal_float_t getSpindleSpeedAbsRpm() const; @@ -430,8 +501,10 @@ class Hal void setSpindleMinus(bool enabled); //! \sa setReset(bool, size_t) void setFunction(bool enabled); - //! \sa setReset(bool, size_t) - void setMachineHome(bool enabled); + //! Requests machine to search home for all axis. \ref halui.home-all + void requestMachineHomingAll(bool isRisingEdge); + //! Requests machine to go home (move axis to home position). + void requestMachineGoHome(bool enabled); //! \sa setReset(bool, size_t) void setSafeZ(bool enabled); //! \sa setReset(bool, size_t) @@ -484,6 +557,25 @@ class Hal //! \sa setMacro1(bool, size_t) void setMacro16(bool enabled); + //! Toggles (high then low) spindle increase signal count times. + //! \sa HalMemory::Out::spindleDoIncrease + //! \sa spindleSpeedToggle(int8_t, bool) + //! \sa toggleSpindleIncrease() + void spindleIncrease(int8_t count); + //! Toggles (high then low) spindle decrease signal count times. + //! \sa HalMemory::Out::spindleDoDecrease + //! \sa spindleSpeedToggle(int8_t, bool) + //! \sa toggleSpindleDecrease() + void spindleDecrease(int8_t count); + //! Inverts the spindle increase signal state once. + //! \sa HalMemory::Out::spindleDoIncrease + //! \sa spindleIncrease(int8_t) + void toggleSpindleIncrease(); + //! Inverts the spindle decrease signal state once. + //! \sa HalMemory::Out::spindleDoDecrease + //! \sa spindleDecrease(int8_t) + void toggleSpindleDecrease(); + //! Writes the corresponding counter to to each axis' count. //! \param counters values to propagate to each axis void setJogCounts(const HandWheelCounters& counters); @@ -503,11 +595,6 @@ class Hal //! \xrefitem getAxisXPosition(bool) hal_float_t getAxisCPosition(bool absolute) const; - //! Requests manual mode if in MDI mode. Skips request if in AUTO mode. - //! \param isButtonPressed true on button press, false on release - //! \return true on successful request and if isButtonPressed == true, false otherwise - bool trySetManualMode(bool isButtonPressed); - private: HalMemory* memory{nullptr}; std::map mButtonNameToIdx; @@ -518,8 +605,9 @@ class Hal int mHalCompId{-1}; std::ostream mDevNull{nullptr}; std::ostream* mHalCout{nullptr}; - HandwheelStepmodes::Mode mStepMode; - bool mIsSpindleDirectionForward{true}; + HandwheelStepmodes::Mode mStepMode; + bool mIsSpindleDirectionForward{true}; + Profiles::HalRequestProfile mHalRequestProfile; //! //! Allocates new hal_bit_t pin according to \ref mIsSimulationMode. If \ref mIsSimulationMode then //! mallocs memory, hal_pin_bit_new allocation otherwise. @@ -556,9 +644,38 @@ class Hal void toggleStartResumeProgram(); void clearStartResumeProgramStates(); - - void enableManualMode(bool isRisingEdge); - - void enableMdiMode(bool isRisingEdge); + //! \sa requestManualMode(bool) + bool requestAutoMode(bool isRisingEdge); + //! Requests manual mode if in MDI mode. Skips request if in AUTO mode. + //! \sa requestMode(bool, hal_bit_t*, hal_bit_t*) + //! \param isButtonPressed true on button press, false on release + //! \return true if machine has selected the mode, false otherwise + bool requestManualMode(bool isRisingEdge); + //! \sa requestManualMode(bool) + bool requestMdiMode(bool isRisingEdge); + + //! Polls for condition with timeout and max loops count. + //! Returns if condition is met or number of loops is exhausted. + //! Experience on BeagleBoneBlack with Axis UI revealed that the delay until a mode is switched is + //! approximately 80ms to 150ms. + //! \param condition the condition to be polled + //! \param timeout_ms delay in [ms] in between condition is checks + //! \param max_timeouts maximum number of checks + //! \return true if condition was met, false otherwise + bool waitForRequestedMode(volatile hal_bit_t* condition); + + //! Requests machine mode such as auto, mdi, manual. When toggling it introduces hold and space delay. + //! \sa mModesRequestProfile + //! \param requestPin the (output) pin to toggle for requesting + //! \param modeFeedbackPin the (input) pin reflecting if the mode is set + //! \return on rising edge: true if the machine has selected or is in the desired mode, false otherwise; + //! on falling edge: false + bool requestMode(bool isRisingEdge, hal_bit_t* requestPin, hal_bit_t* modeFeedbackPin); + + //! Toggles n times the spindle increase/decrease pin. + //! \sa Profiles::SindleRequest + //! \param count times to toggle the increase pin + //! \param increase increase pin if true, decrease pin otherwise + void spindleSpeedToggle(int8_t count, bool increase); }; } diff --git a/src/hal/user_comps/xhc-whb04b-6/main.cc b/src/hal/user_comps/xhc-whb04b-6/main.cc index d65fb4a2c3..3f17106624 100755 --- a/src/hal/user_comps/xhc-whb04b-6/main.cc +++ b/src/hal/user_comps/xhc-whb04b-6/main.cc @@ -2,7 +2,7 @@ XHC-WHB04B-6 Wireless MPG pendant LinuxCNC HAL module for LinuxCNC. Based on XHC-HB04. - Copyright (C) 2017 Raoul Rubien (github.com/rubienr). + Copyright (C) 2018 Raoul Rubien (github.com/rubienr). This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -34,8 +34,6 @@ // local includes #include "./xhc-whb04b6.h" -using std::endl; - // forward declarations // globals @@ -51,69 +49,77 @@ static int printUsage(const char* programName, const char* deviceName, bool isEr { os = &std::cerr; } - *os << programName << " version " << PACKAGE_VERSION << " " << __DATE__ << " " << __TIME__ << endl - << endl - << "SYNOPSIS" << endl - << " " << programName << " [-h | --help] | [-H] [OPTIONS] " << endl - << endl - << "NAME" << endl - << " " << programName << " - jog dial HAL component for the " << deviceName << " device" << endl - << endl - << "DESCRIPTION" << endl + *os << programName << " version " << PACKAGE_VERSION << " " << __DATE__ << " " << __TIME__ << "\n" + << "\n" + << "SYNOPSIS\n" + << " " << programName << " [-h | --help] | [-H] [OPTIONS]\n" + << "\n" + << "NAME\n" + << " " << programName << " - jog dial HAL component for the " << deviceName << " device\n" + << "\n" + << "DESCRIPTION\n" << " " << programName << " is a HAL component that receives events from the " << deviceName << " device " - << "and exposes them to HAL via HAL pins." << endl - << endl - << "OPTIONS" << endl - << " -h, --help" << endl - << " Prints the synopsis and the most commonly used commands." << endl - << endl - << " -H " << endl + << "and exposes them to HAL via HAL pins.\n" + << "\n" + << "OPTIONS\n" + << " -h, --help\n" + << " Prints the synopsis and the most commonly used commands.\n" + << "\n" + << " -H\n" << " Run " << programName << " in HAL-mode instead of interactive mode. When in HAL mode " << "commands from device will be exposed to HAL's shred memory. Interactive mode is useful for " - << "testing device connectivity and debugging." << endl - << endl - << " -t" << endl + << "testing device connectivity and debugging.\n" + << "\n" + << " -t\n" << " Wait with timeout for USB device then proceed, exit otherwise. Without -t the timeout is " - << "implicitly infinite." << endl - << endl - << " -u, -U" << endl + << "implicitly infinite.\n" + << "\n" + << " -s, \n" + << " Lead in Spindle mode: " + << "Lead + jogwheel changes the spindle speed. Each tick will increase/decrease the spindle speed.\n" + << "\n" + << " -f, \n" + << " Lead in Feed mode: " + << "Lead + jogwheel changes the feed override. Each tick will increment/decrement the feed override.\n" + << "\n" + << " -u, -U\n" << " Show received data from device. With -U received and transmitted data will be printed. " - << "Output is prefixed with \"usb\"." << endl - << endl - << " -p" << endl - << " Show HAL pins and HAL related messages. Output is prefixed with \"hal\"." << endl - << endl - << " -e" << endl + << "Output is prefixed with \"usb\".\n" + << "\n" + << " -p\n" + << " Show HAL pins and HAL related messages. Output is prefixed with \"hal\".\n" + << "\n" + << " -e\n" << " Show captured events such as button pressed/released, jog dial, axis rotary button, and " - "feed rotary button event. Output is prefixed with \"event\"." << endl - << endl - << " -a" << endl - << " Enable all logging facilities without explicitly specifying each." << endl + "feed rotary button event. Output is prefixed with \"event\".\n" + << "\n" + << " -a\n" + << " Enable all logging facilities without explicitly specifying each.\n" //! this feature must be removed when checksum check is implemented - << endl - << " -c" << endl + << "\n" + << " -c\n" << " Enable checksum output which is necessary for debugging the checksum generator function. Do not rely " - "on this feature since it will be removed once the generator is implemented." << endl - << endl - << " -n " << endl + "on this feature since it will be removed once the generator is implemented.\n" + << "\n" + << " -n\n" << " Force being silent and not printing any output except of errors. This will also inhibit messages " - "prefixed with \"init\"." << endl - << endl - << "EXAMPLES" << endl - << programName << " -ue" << endl - << " Prints incoming USB data transfer and generated key pressed/released events." << endl - << endl - << programName << " -p" << endl - << " Prints hal pin names and events distributed to HAL memory." << endl - << endl - << programName << " -Ha" << endl - << " Start in HAL mode and avoid output, except of errors." << endl - << endl - << "AUTHORS" << endl - << " This component was started by Raoul Rubien (github.com/rubienr) based on predecessor " - "device's component xhc-hb04.cc. https://github.com/machinekit/machinekit/graphs/contributors " - "gives you a more complete list of contributors." - << endl; + "prefixed with \"init\".\n" + << "\n" + << "EXAMPLES\n" + << programName << " -ue\n" + << " Start in userspace mode (simulation) and prints incoming USB data transfer and generated key pressed/released events.\n" + << "\n" + << programName << " -p\n" + << " Start in userspace mode (simulation) and prints HAL pin names and events distributed to HAL memory.\n" + << "\n" + << programName << " -Hn\n" + << " Start in HAL mode and avoid output, except of errors.\n" + << "\n" + << "AUTHORS\n" + << " This component was started by Raoul Rubien based on predecessor " + "device's component xhc-hb04.cc. https://github.com/machinekit/machinekit/graphs/contributors " + "gives you a more complete list of contributors." + << "\n"; if (isError) { @@ -148,7 +154,7 @@ bool parseFloat(const char* str, float& out) std::istringstream iss(str); if (!(iss >> out)) { - std::cerr << "no valid value specified: " << str << endl; + std::cerr << "no valid value specified: " << str << "\n"; return false; } return true; @@ -172,6 +178,7 @@ int main(int argc, char** argv) WhbComponent->setWaitWithTimeout(3); break; case 'e': + WhbComponent->enableVerbosePendant(true); WhbComponent->setEnableVerboseKeyEvents(true); break; case 'u': @@ -189,6 +196,7 @@ int main(int argc, char** argv) break; case 'a': WhbComponent->enableVerboseInit(true); + WhbComponent->enableVerbosePendant(true); WhbComponent->setEnableVerboseKeyEvents(true); WhbComponent->enableVerboseRx(true); WhbComponent->enableVerboseTx(true); @@ -197,6 +205,12 @@ int main(int argc, char** argv) case 'c': WhbComponent->enableCrcDebugging(true); break; + case 's': + WhbComponent->setLeadModeSpindle(); + break; + case 'f': + WhbComponent->setLeadModeFeed(); + break; case 'n': break; case 'h': diff --git a/src/hal/user_comps/xhc-whb04b-6/pendant-types.h b/src/hal/user_comps/xhc-whb04b-6/pendant-types.h index e5b449e65d..d1ca97eab4 100644 --- a/src/hal/user_comps/xhc-whb04b-6/pendant-types.h +++ b/src/hal/user_comps/xhc-whb04b-6/pendant-types.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2017 Raoul Rubien (github.com/rubienr) + Copyright (C) 2018 Raoul Rubien (github.com/rubienr) This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public diff --git a/src/hal/user_comps/xhc-whb04b-6/pendant.cc b/src/hal/user_comps/xhc-whb04b-6/pendant.cc index b1cf8b6fe4..3ba8fb1549 100644 --- a/src/hal/user_comps/xhc-whb04b-6/pendant.cc +++ b/src/hal/user_comps/xhc-whb04b-6/pendant.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2017 Raoul Rubien (github.com/rubienr) + Copyright (C) 2018 Raoul Rubien (github.com/rubienr) This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -26,6 +26,7 @@ #include #include #include +#include // 3rd party includes @@ -36,8 +37,6 @@ #include "./xhc-whb04b6.h" #include "./usb.h" -using std::endl; - namespace XhcWhb04b6 { // ---------------------------------------------------------------------- @@ -314,8 +313,7 @@ const MetaButtonCodes& MetaButtonsCodes::find(const KeyCode& keyCode, const KeyC if (button == buttons.end()) { - std::cerr << "failed to find metaButton={ keyCode={" << keyCode << "} modifierCode={" << modifierCode << "}}" - << endl; + std::cerr << "failed to find metaButton={ keyCode={" << keyCode << "} modifierCode={" << modifierCode << "}}\n"; } assert(button != buttons.end()); @@ -700,7 +698,7 @@ void FeedRotaryButton::update() { auto enumValue = mContinuousKeycodeLut.find(mKey); assert(enumValue != mContinuousKeycodeLut.end()); - auto second = enumValue->second; + auto second = enumValue->second; mStepSize = mContinuousSizeMapper.getStepSize(second); mIsPermitted = mContinuousSizeMapper.isPermitted(second); } @@ -708,7 +706,7 @@ void FeedRotaryButton::update() { auto enumValue = mStepKeycodeLut.find(mKey); assert(enumValue != mStepKeycodeLut.end()); - auto second = enumValue->second; + auto second = enumValue->second; mStepSize = mStepStepSizeMapper.getStepSize(second); mIsPermitted = mStepStepSizeMapper.isPermitted(second); } @@ -797,9 +795,8 @@ std::ostream& operator<<(std::ostream& os, const Handwheel& data) const HandWheelCounters& Handwheel::counters() const { - return static_cast( - static_cast(*this).counters() - ); + Handwheel* self = const_cast(this); + return static_cast(self->counters()); } // ---------------------------------------------------------------------- @@ -817,6 +814,20 @@ HandWheelCounters& Handwheel::counters() // ---------------------------------------------------------------------- +void Handwheel::enableVerbose(bool enable) +{ + if (enable) + { + mWheelCout = &std::cout; + } + else + { + mWheelCout = &mDevNull; + } +} + +// ---------------------------------------------------------------------- + void Handwheel::setMode(HandWheelCounters::CounterNameToIndex activeCounterMode) { mCounters.setActiveCounter(activeCounterMode); @@ -836,8 +847,7 @@ void Handwheel::count(int8_t delta) std::ios init(NULL); init.copyfmt(*mWheelCout); - *mWheelCout << mPrefix << "handwheel total counts " << std::setfill(' ') << std::setw(5) << mCounters - << endl; + *mWheelCout << mPrefix << "wheel total counts " << std::setfill(' ') << std::setw(5) << mCounters << "\n"; mWheelCout->copyfmt(init); } @@ -1006,7 +1016,7 @@ std::ostream& operator<<(std::ostream& os, const Pendant& data) os << "{currentButtonState=" << data.currentButtonsState() << " " << "previousButtonState=" << data.previousButtonsState() << " " - << "handwheel= " << data.handWheel() << "}"; + << "wheel= " << data.handWheel() << "}"; return os; } @@ -1027,19 +1037,19 @@ void Pendant::processEvent(uint8_t keyCode, if (key == KeyCodes::Buttons.codeMap.end()) { - *mPendantCout << mPrefix << "failed to interpret key code keyCode={" << keyCode << "}" << endl; + *mPendantCout << mPrefix << "failed to interpret key code keyCode={" << keyCode << "}\n"; } if (modifier == KeyCodes::Buttons.codeMap.end()) { - *mPendantCout << mPrefix << "failed to interpret modifier code keyCode={" << modifierCode << "}" << endl; + *mPendantCout << mPrefix << "failed to interpret modifier code keyCode={" << modifierCode << "}\n"; } if (axis == KeyCodes::Axis.codeMap.end()) { - *mPendantCout << mPrefix << "failed to interpret axis code axisCode={" << modifierCode << "}" << endl; + *mPendantCout << mPrefix << "failed to interpret axis code axisCode={" << modifierCode << "}\n"; } if (feed == KeyCodes::Feed.codeMap.end()) { - *mPendantCout << mPrefix << "failed to interpret axis code axisCode={" << modifierCode << "}" << endl; + *mPendantCout << mPrefix << "failed to interpret axis code axisCode={" << modifierCode << "}\n"; } processEvent(*key->second, *modifier->second, *axis->second, *feed->second, handWheelStepCount); @@ -1053,12 +1063,10 @@ void Pendant::processEvent(const KeyCode& keyCode, const KeyCode& rotaryButtonFeedKeyCode, int8_t handWheelStepCount) { - mHal.trySetManualMode(true); mHandWheel.setEnabled(mHal.getIsMachineOn()); mCurrentButtonsState.update(keyCode, modifierCode, rotaryButtonAxisKeyCode, rotaryButtonFeedKeyCode); mHandWheel.count(handWheelStepCount); mDisplay.updateData(); - mHal.trySetManualMode(false); } // ---------------------------------------------------------------------- @@ -1085,6 +1093,21 @@ void Pendant::shiftButtonState() // ---------------------------------------------------------------------- +void Pendant::enableVerbose(bool enable) +{ + mHandWheel.enableVerbose(enable); + if (enable) + { + mPendantCout = &std::cout; + } + else + { + mPendantCout = &mDevNull; + } +} + +// ---------------------------------------------------------------------- + const ButtonsState& Pendant::currentButtonsState() const { return mCurrentButtonsState; @@ -1115,7 +1138,7 @@ Handwheel& Pendant::handWheel() bool Pendant::onButtonPressedEvent(const MetaButtonCodes& metaButton) { - *mPendantCout << mPrefix << "button pressed event metaButton=" << metaButton << endl; + *mPendantCout << mPrefix << "button pressed event metaButton=" << metaButton << "\n"; bool isHandled = false; if (metaButton == KeyCodes::Meta.reset) { @@ -1154,7 +1177,7 @@ bool Pendant::onButtonPressedEvent(const MetaButtonCodes& metaButton) } else if (metaButton == KeyCodes::Meta.machine_home) { - mHal.setMachineHome(true); + mHal.requestMachineGoHome(true); isHandled = true; } else if (metaButton == KeyCodes::Meta.safe_z) @@ -1179,6 +1202,7 @@ bool Pendant::onButtonPressedEvent(const MetaButtonCodes& metaButton) } else if (metaButton == KeyCodes::Meta.macro10) { + mHal.requestMachineHomingAll(true); mHal.setMacro10(true); isHandled = true; } @@ -1281,7 +1305,7 @@ bool Pendant::onButtonPressedEvent(const MetaButtonCodes& metaButton) bool Pendant::onButtonReleasedEvent(const MetaButtonCodes& metaButton) { - *mPendantCout << mPrefix << "button released event metaButton=" << metaButton << endl; + *mPendantCout << mPrefix << "button released event metaButton=" << metaButton << "\n"; bool isHandled = false; if (metaButton == KeyCodes::Meta.reset) { @@ -1320,7 +1344,7 @@ bool Pendant::onButtonReleasedEvent(const MetaButtonCodes& metaButton) } else if (metaButton == KeyCodes::Meta.machine_home) { - mHal.setMachineHome(false); + mHal.requestMachineGoHome(false); isHandled = true; } else if (metaButton == KeyCodes::Meta.safe_z) @@ -1345,6 +1369,7 @@ bool Pendant::onButtonReleasedEvent(const MetaButtonCodes& metaButton) } else if (metaButton == KeyCodes::Meta.macro10) { + mHal.requestMachineHomingAll(false); mHal.setMacro10(false); isHandled = true; } @@ -1444,7 +1469,7 @@ bool Pendant::onButtonReleasedEvent(const MetaButtonCodes& metaButton) void Pendant::onAxisActiveEvent(const KeyCode& axis) { *mPendantCout << mPrefix << "axis active event axis=" << axis - << " axisButton=" << mCurrentButtonsState.axisButton() << endl; + << " axisButton=" << mCurrentButtonsState.axisButton() << "\n"; dispatchAxisEventToHandwheel(axis, true); dispatchAxisEventToHal(axis, true); mDisplay.onAxisActiveEvent(axis); @@ -1455,7 +1480,7 @@ void Pendant::onAxisActiveEvent(const KeyCode& axis) void Pendant::onAxisInactiveEvent(const KeyCode& axis) { *mPendantCout << mPrefix << "axis inactive event axis=" << axis - << " axisButton=" << mCurrentButtonsState.axisButton() << endl; + << " axisButton=" << mCurrentButtonsState.axisButton() << "\n"; dispatchAxisEventToHandwheel(axis, false); dispatchAxisEventToHal(axis, false); mDisplay.onAxisInactiveEvent(axis); @@ -1466,7 +1491,7 @@ void Pendant::onAxisInactiveEvent(const KeyCode& axis) void Pendant::onFeedActiveEvent(const KeyCode& feed) { (*mPendantCout) << mPrefix << "feed active event feed=" << feed - << " feedButton=" << mCurrentButtonsState.feedButton() << endl; + << " feedButton=" << mCurrentButtonsState.feedButton() << "\n"; dispatchFeedEventToHandwheel(feed, true); dispatchFeedValueToHal(feed); @@ -1507,6 +1532,18 @@ void Pendant::dispatchActiveFeedToHal(const KeyCode& feed, bool isActive) { mHal.setFeedValueSelected1_0(isActive); } + else if (feed.code == KeyCodes::Feed.percent_60.code) + { + mHal.setFeedValueSelected60(isActive); + } + else if (feed.code == KeyCodes::Feed.percent_100.code) + { + mHal.setFeedValueSelected100(isActive); + } + else if (feed.code == KeyCodes::Feed.lead.code) + { + mHal.setFeedValueSelectedLead(isActive); + } } // ---------------------------------------------------------------------- @@ -1584,7 +1621,7 @@ void Pendant::dispatchFeedValueToHal() void Pendant::onFeedInactiveEvent(const KeyCode& feed) { *mPendantCout << mPrefix << "feed inactive event feed=" << feed - << " feedButton=" << mCurrentButtonsState.feedButton() << endl; + << " feedButton=" << mCurrentButtonsState.feedButton() << "\n"; dispatchFeedEventToHandwheel(feed, false); dispatchActiveFeedToHal(feed, false); mDisplay.onFeedInactiveEvent(feed); @@ -1596,17 +1633,47 @@ bool Pendant::onJogDialEvent(const HandWheelCounters& counters, int8_t delta) { if (HandWheelCounters::CounterNameToIndex::UNDEFINED != counters.activeCounter() && - counters.counts() != 0) + 0 != counters.counts()) { - *mPendantCout << mPrefix << "wheel event " << counters.counts() << endl; + *mPendantCout << mPrefix << "wheel event " << counters.counts() << "\n"; - if (HandWheelCounters::CounterNameToIndex::LEAD != counters.activeCounter()) + if (mIsLeadModeSpindle) { - mHandWheel.counters().setLeadValueLimit( - mHal.getFeedOverrideMinValue() * 100, - mHal.getFeedOverrideMaxValue() * 100); + if (counters.isLeadCounterActive()) + { + mHandWheel.counters().setLeadValueLimit( + std::numeric_limits::min(), + std::numeric_limits::max()); + } + } + else + { + if (!counters.isLeadCounterActive()) + { + mHandWheel.counters().setLeadValueLimit( + mHal.getFeedOverrideMinValue() * 100, + mHal.getFeedOverrideMaxValue() * 100); + } + } + + if (0 != delta) + { + if (counters.isLeadCounterActive() && mIsLeadModeSpindle) + { + if (delta > 0) + { + mHal.toggleSpindleIncrease(); + } + else + { + mHal.toggleSpindleDecrease(); + } + } + else // lead mode is feed + { + mHal.setJogCounts(counters); + } } - mHal.setJogCounts(counters); mDisplay.onJogDialEvent(counters, delta); return true; } @@ -1695,6 +1762,20 @@ void Pendant::dispatchAxisEventToHal(const KeyCode& axis, bool isActive) // ---------------------------------------------------------------------- +void Pendant::setLeadModeSpindle() +{ + mIsLeadModeSpindle = true; +} + +// ---------------------------------------------------------------------- + +void Pendant::setLeadModeFeed() +{ + mIsLeadModeSpindle = false; +} + +// ---------------------------------------------------------------------- + Display::Display(const ButtonsState& currentButtonsState, Hal& hal, UsbOutPackageData& displayData) : mCurrentButtonsState(currentButtonsState), mHal(hal), @@ -1846,4 +1927,3 @@ void Display::clearData() mDisplayData.row3Coordinate.clear(); } } - diff --git a/src/hal/user_comps/xhc-whb04b-6/pendant.h b/src/hal/user_comps/xhc-whb04b-6/pendant.h index e0c2104448..5bc46abe8d 100644 --- a/src/hal/user_comps/xhc-whb04b-6/pendant.h +++ b/src/hal/user_comps/xhc-whb04b-6/pendant.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2017 Raoul Rubien (github.com/rubienr) + Copyright (C) 2018 Raoul Rubien (github.com/rubienr) This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -24,6 +24,7 @@ // system includes #include +#include #include #include @@ -452,6 +453,7 @@ class Handwheel public: Handwheel(const FeedRotaryButton& feedButton, KeyEventListener* listener = nullptr); ~Handwheel(); + void enableVerbose(bool enable); void setMode(HandWheelCounters::CounterNameToIndex mode); void count(int8_t delta); const HandWheelCounters& counters() const; @@ -465,6 +467,7 @@ class Handwheel bool mIsEnabled{false}; const FeedRotaryButton& mFeedButton; KeyEventListener * mEventListener; + std::ostream mDevNull{nullptr}; std::ostream * mWheelCout; const char * mPrefix; }; @@ -575,6 +578,7 @@ class Pendant : public KeyEventListener void updateDisplayData(); void clearDisplayData(); + void enableVerbose(bool enable); const ButtonsState& currentButtonsState() const; const ButtonsState& previousButtonsState() const; const Handwheel& handWheel() const; @@ -588,17 +592,32 @@ class Pendant : public KeyEventListener virtual void onFeedInactiveEvent(const KeyCode& axis) override; virtual bool onJogDialEvent(const HandWheelCounters& counters, int8_t delta) override; + //! Sets Lead mode to spindle: Jog dial will change spindle speed. + //! Note: Switching Lead mode is not supported at runtime, only at start. + //! \sa mIsLeadModeSpindle + //! \sa setLeadModeFeed() + void setLeadModeSpindle(); + + //! Sets Lead mode to feed: Jog dial will change feed override. + //! Note: Switching Lead mode is not supported at runtime, only at start. + //! \sa mIsLeadModeSpindle + //! \sa setLeadModeSpindle() + void setLeadModeFeed(); + private: Hal& mHal; ButtonsState mPreviousButtonsState; ButtonsState mCurrentButtonsState; Handwheel mHandWheel; Display mDisplay; + //! if in Lead mode: if true jog wheel changes the spindle speed, changes the feed overide otherwise + bool mIsLeadModeSpindle = true; float mScale; float mMaxVelocity; const char * mPrefix; + std::ostream mDevNull{nullptr}; std::ostream* mPendantCout; void shiftButtonState(); diff --git a/src/hal/user_comps/xhc-whb04b-6/usb.cc b/src/hal/user_comps/xhc-whb04b-6/usb.cc index 8e05434258..df6869d447 100644 --- a/src/hal/user_comps/xhc-whb04b-6/usb.cc +++ b/src/hal/user_comps/xhc-whb04b-6/usb.cc @@ -35,8 +35,6 @@ #include "./hal.h" #include "./xhc-whb04b6.h" -using std::endl; - namespace XhcWhb04b6 { @@ -253,9 +251,9 @@ void Usb::sendDisplayData() if (mIsSimulationMode) { - *verboseTxOut << "out 0x" << outputPackageBuffer.asBlocks << endl << + *verboseTxOut << "out 0x" << outputPackageBuffer.asBlocks << "\n" << std::dec << "out size " << sizeof(outputPackageBuffer.asBlockArray) << "B " << outputPackageData - << endl; + << "\n"; } for (size_t idx = 0; idx < (sizeof(outputPackageBuffer.asBlockArray) / sizeof(UsbOutPackageBlockFields)); idx++) @@ -284,7 +282,7 @@ void Usb::sendDisplayData() if (r < 0) { - std::cerr << "transmission failed, try to reconnect ..." << endl; + std::cerr << "transmission failed, try to reconnect ...\n"; setDoReconnect(true); return; } @@ -395,7 +393,7 @@ void UsbOutPackageBlocks::init(const UsbOutPackageData* data) const uint8_t* d = reinterpret_cast(data); block0.init(d += 0); block1.init(d += 7); - block2.init(d + 7); + block2.init(d += 7); } // ---------------------------------------------------------------------- @@ -441,13 +439,13 @@ std::ostream& operator<<(std::ostream& os, const UsbOutPackageData& data) bool enableMultiLine = false; if (enableMultiLine) { - os << std::hex << std::setfill('0') << "header 0x" << std::setw(2) << data.header << endl + os << std::hex << std::setfill('0') << "header 0x" << std::setw(2) << data.header << "\n" << "day of month 0x" << std::setw(2) - << static_cast(data.seed) << endl << "status 0x" << std::setw(2) - << static_cast(data.displayModeFlags.asByte) << endl << std::dec << "coordinate1 " - << data.row1Coordinate << endl << "coordinate2 " << data.row2Coordinate << endl << "coordinate3 " - << data.row3Coordinate << endl << "feed rate " << data.feedRate << endl << "spindle rps " + << static_cast(data.seed) << "\nstatus 0x" << std::setw(2) + << static_cast(data.displayModeFlags.asByte) << "\n" << std::dec << "coordinate1 " + << data.row1Coordinate << "\ncoordinate2 " << data.row2Coordinate << "\ncoordinate3 " + << data.row3Coordinate << "\nfeed rate " << data.feedRate << "\nspindle rps " << data.spindleSpeed; } else @@ -470,12 +468,12 @@ UsbOutPackageBuffer::UsbOutPackageBuffer() : { if (false) { - std::cout << "sizeof usb data " << sizeof(UsbOutPackageData) << endl - << " blocks count " << sizeof(UsbOutPackageBlocks) / sizeof(UsbOutPackageBlockFields) << endl - << " sizeof block " << sizeof(UsbOutPackageBlockFields) << endl - << " sizeof blocks " << sizeof(UsbOutPackageBlocks) << endl - << " sizeof array " << sizeof(asBlockArray) << endl - << " sizeof package " << sizeof(UsbOutPackageData) << endl; + std::cout << "sizeof usb data " << sizeof(UsbOutPackageData) << "\n" + << " blocks count " << sizeof(UsbOutPackageBlocks) / sizeof(UsbOutPackageBlockFields) << "\n" + << " sizeof block " << sizeof(UsbOutPackageBlockFields) << "\n" + << " sizeof blocks " << sizeof(UsbOutPackageBlocks) << "\n" + << " sizeof array " << sizeof(asBlockArray) << "\n" + << " sizeof package " << sizeof(UsbOutPackageData) << "\n"; } assert(sizeof(UsbOutPackageBlocks) == sizeof(asBlockArray)); size_t blocksCount = sizeof(UsbOutPackageBlocks) / sizeof(UsbOutPackageBlockFields); @@ -571,7 +569,7 @@ void Usb::onUsbDataReceived(struct libusb_transfer* transfer) << std::setw(2) << static_cast(Usb::ConstantPackages.sleepPackage.header) << " but got " << std::hex << std::setfill('0') << std::setw(2) - << static_cast(inputPackageBuffer.asFields.header) << endl; + << static_cast(inputPackageBuffer.asFields.header) << "\n"; verboseTxOut->copyfmt(init); } @@ -594,7 +592,7 @@ void Usb::onUsbDataReceived(struct libusb_transfer* transfer) struct timeval now; gettimeofday(&now, nullptr); *verboseTxOut << "event going to sleep: device was idle for " - << (now.tv_sec - sleepState.mLastWakeupTimestamp.tv_sec) << " seconds" << endl; + << (now.tv_sec - sleepState.mLastWakeupTimestamp.tv_sec) << " seconds\n"; } } // on regular package @@ -608,8 +606,7 @@ void Usb::onUsbDataReceived(struct libusb_transfer* transfer) struct timeval now; gettimeofday(&now, nullptr); *verboseTxOut << "woke up: device was sleeping for " - << (now.tv_sec - sleepState.mLastWakeupTimestamp.tv_sec) << " seconds" - << endl; + << (now.tv_sec - sleepState.mLastWakeupTimestamp.tv_sec) << " seconds\n"; } gettimeofday(&sleepState.mLastWakeupTimestamp, nullptr); } @@ -620,7 +617,7 @@ void Usb::onUsbDataReceived(struct libusb_transfer* transfer) else { std::cerr << "received unexpected package size: expected=" << (transfer->actual_length) << ", current=" - << expectedPackageSize << endl; + << expectedPackageSize << "\n"; } if (mIsRunning) @@ -645,12 +642,12 @@ void Usb::onUsbDataReceived(struct libusb_transfer* transfer) case (LIBUSB_TRANSFER_NO_DEVICE): case (LIBUSB_TRANSFER_OVERFLOW): case (LIBUSB_TRANSFER_ERROR): - std::cerr << "transfer error: " << transfer->status << endl; + std::cerr << "transfer error: " << transfer->status << "\n"; requestTermination(); break; default: - std::cerr << "unknown transfer status: " << transfer->status << endl; + std::cerr << "unknown transfer status: " << transfer->status << "\n"; requestTermination(); break; } @@ -719,17 +716,17 @@ bool Usb::init() sleep(1); } setDoReconnect(false); - *verboseInitOut << " done" << endl; + *verboseInitOut << " done\n"; } *verboseInitOut << "init usb context ..."; int r = libusb_init(&context); if (r != 0) { - std::cerr << endl << "failed to initialize usb context" << endl; + std::cerr << "\nfailed to initialize usb context\n"; return false; } - *verboseInitOut << " ok" << endl; + *verboseInitOut << " ok\n"; libusb_log_level logLevel = LIBUSB_LOG_LEVEL_INFO; //logLevel = LIBUSB_LOG_LEVEL_DEBUG; @@ -758,7 +755,7 @@ bool Usb::init() ssize_t devicesCount = libusb_get_device_list(context, &devicesReference); if (devicesCount < 0) { - std::cerr << endl << "failed to get device list" << endl; + std::cerr << "\nfailed to get device list\n"; return false; } @@ -773,15 +770,15 @@ bool Usb::init() *verboseInitOut << "." << std::flush; if ((mWaitSecs--) <= 0) { - std::cerr << endl << "timeout exceeded, exiting" << endl; + std::cerr << "\ntimeout exceeded, exiting\n"; return false; } } sleep(1); } } while (!isDeviceOpen() && mIsRunning); - *verboseInitOut << " ok" << endl - << "init " << mName << " device found" << endl; + *verboseInitOut << " ok\n" + << "init " << mName << " device found\n"; if (isDeviceOpen()) { @@ -790,20 +787,20 @@ bool Usb::init() { int r = libusb_detach_kernel_driver(deviceHandle, 0); assert(0 == r); - *verboseInitOut << " ok" << endl; + *verboseInitOut << " ok\n"; } else { - *verboseInitOut << " already detached" << endl; + *verboseInitOut << " already detached\n"; } *verboseInitOut << "init claiming interface ..."; int r = libusb_claim_interface(deviceHandle, 0); if (r != 0) { - std::cerr << endl << "failed to claim interface" << endl; + std::cerr << "\nfailed to claim interface\n"; return false; } - *verboseInitOut << " ok" << endl; + *verboseInitOut << " ok\n"; } return true; } diff --git a/src/hal/user_comps/xhc-whb04b-6/xhc-whb04b6.cc b/src/hal/user_comps/xhc-whb04b-6/xhc-whb04b6.cc index 598a4782ef..720ebc98e1 100644 --- a/src/hal/user_comps/xhc-whb04b-6/xhc-whb04b6.cc +++ b/src/hal/user_comps/xhc-whb04b-6/xhc-whb04b6.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2017 Raoul Rubien (github.com/rubienr) + Copyright (C) 2018 Raoul Rubien (github.com/rubienr) This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -32,8 +32,6 @@ // local includes -using std::endl; - namespace XhcWhb04b6 { // ---------------------------------------------------------------------- @@ -86,7 +84,7 @@ void XhcWhb04b6Component::printCrcDebug(const UsbInPackage& inPackage, const Usb } else { - *mRxCout << "warn checksum error" << endl; + *mRxCout << "warn checksum error\n"; } mRxCout->copyfmt(init); return; @@ -110,16 +108,16 @@ void XhcWhb04b6Component::printCrcDebug(const UsbInPackage& inPackage, const Usb if (mIsCrcDebuggingEnabled) { - *mRxCout << endl; + *mRxCout << "\n"; *mRxCout << "0x key " << std::setw(8) << static_cast(inPackage.buttonKeyCode1) << " random " << std::setw(8) << static_cast(inPackage.randomByte) << " crc " << std::setw(8) << static_cast(inPackage.crc) - << " delta " << std::setw(8) << static_cast(delta.to_ulong()) << endl; + << " delta " << std::setw(8) << static_cast(delta.to_ulong()) << "\n"; *mRxCout << "0b key " << buttonKeyCode << " random " << random << " crc " << crc - << " delta " << delta << endl; + << " delta " << delta << "\n"; } //! \brief On button pressed checksum calculation. @@ -138,18 +136,18 @@ void XhcWhb04b6Component::printCrcDebug(const UsbInPackage& inPackage, const Usb if (mIsCrcDebuggingEnabled) { - *mRxCout << endl - << "~seed " << nonSeed << endl - << "random " << random << endl - << " -------- &" << endl - << "~seed & random " << nonSeedAndRandom << endl - << "key " << buttonKeyCode << endl - << " -------- ^" << endl + *mRxCout << "\n" + << "~seed " << nonSeed << "\n" + << "random " << random << "\n" + << " -------- &\n" + << "~seed & random " << nonSeedAndRandom << "\n" + << "key " << buttonKeyCode << "\n" + << " -------- ^\n" << "key ^ (~seed & random) " << keyXorNonSeedAndRandom << " = calculated delta " << std::setw(2) << static_cast(keyXorNonSeedAndRandom.to_ulong()) << " vs " << std::setw(2) << static_cast(delta.to_ulong()) - << ((keyXorNonSeedAndRandom == delta) ? " OK" : " FAIL") << endl + << ((keyXorNonSeedAndRandom == delta) ? " OK" : " FAIL") << "\n" << "calculated crc " << calculatedCrcBitset << " " << std::setw(2) << calculatedCrc << " vs " << std::setw(2) << expectedCrc << ((isValid) ? " OK" : " FAIL") @@ -189,7 +187,7 @@ void XhcWhb04b6Component::onInputDataReceived(const UsbInPackage& inPackage) *mRxCout << " => "; printInputData(inPackage); printCrcDebug(inPackage, mUsb.getOutputPackageData()); - *mRxCout << endl; + *mRxCout << "\n"; uint8_t keyCode = inPackage.buttonKeyCode1; uint8_t modifierCode = inPackage.buttonKeyCode2; @@ -251,11 +249,11 @@ void XhcWhb04b6Component::requestTermination(int signal) { if (signal >= 0) { - *mInitCout << "termination requested upon signal number " << signal << " ..." << endl; + *mInitCout << "termination requested upon signal number " << signal << " ...\n"; } else { - *mInitCout << "termination requested ... " << endl; + *mInitCout << "termination requested ...\n"; } mUsb.requestTermination(); mIsRunning = false; @@ -309,18 +307,20 @@ XhcWhb04b6Component::XhcWhb04b6Component() : MetaButtonCodes(mKeyCodes.Buttons.undefined, mKeyCodes.Buttons.undefined) }, mUsb(mName, *this, mHal), - mTxCout(&mDevNull), + //mTxCout(&mDevNull), mRxCout(&mDevNull), - mKeyEventCout(&mDevNull), - mHalInitCout(&mDevNull), + //mKeyEventCout(&mDevNull), + //mHalInitCout(&mDevNull), mInitCout(&mDevNull), packageReceivedEventReceiver(*this), mPendant(mHal, mUsb.getOutputPackageData()) { setSimulationMode(true); + enableVerbosePendant(false); enableVerboseRx(false); enableVerboseTx(false); enableVerboseInit(false); + setEnableVerboseKeyEvents(false); enableVerboseHal(false); } @@ -455,7 +455,7 @@ int XhcWhb04b6Component::run() { if (mHal.isSimulationModeEnabled()) { - *mInitCout << "init starting in simulation mode" << endl; + *mInitCout << "init starting in simulation mode\n"; } bool isHalReady = false; @@ -491,10 +491,10 @@ int XhcWhb04b6Component::run() *mInitCout << "init enabling reception ..."; if (!enableReceiveAsyncTransfer()) { - std::cerr << endl << "failed to enable reception" << endl; + std::cerr << "\nfailed to enable reception\n"; return EXIT_FAILURE; } - *mInitCout << " ok" << endl; + *mInitCout << " ok\n"; } process(); teardownUsb(); @@ -572,7 +572,7 @@ void XhcWhb04b6Component::process() updateDisplay(); mHal.setIsPendantConnected(false); - *mInitCout << "connection lost, cleaning up" << endl; + *mInitCout << "connection lost, cleaning up\n"; struct timeval tv; tv.tv_sec = 1; tv.tv_usec = 0; @@ -595,6 +595,13 @@ void XhcWhb04b6Component::teardownUsb() // ---------------------------------------------------------------------- +void XhcWhb04b6Component::enableVerbosePendant(bool enable) +{ + mPendant.enableVerbose(enable); +} + +// ---------------------------------------------------------------------- + void XhcWhb04b6Component::enableVerboseRx(bool enable) { mUsb.enableVerboseRx(enable); @@ -613,30 +620,29 @@ void XhcWhb04b6Component::enableVerboseRx(bool enable) void XhcWhb04b6Component::enableVerboseTx(bool enable) { mUsb.enableVerboseTx(enable); - if (enable) + /*if (enable) { mTxCout = &std::cout; } else { mTxCout = &mDevNull; - } + }*/ } // ---------------------------------------------------------------------- void XhcWhb04b6Component::enableVerboseHal(bool enable) { - mHal.setEnableVerbose(enable); - - if (enable) + mHal.enableVerbose(enable); + /*if (enable) { mHalInitCout = &std::cout; } else { mHalInitCout = &mDevNull; - } + }*/ } // ---------------------------------------------------------------------- @@ -701,14 +707,14 @@ bool XhcWhb04b6Component::isSimulationModeEnabled() const void XhcWhb04b6Component::setEnableVerboseKeyEvents(bool enable) { mUsb.enableVerboseRx(enable); - if (enable) + /*if (enable) { mKeyEventCout = &std::cout; } else { mKeyEventCout = &mDevNull; - } + }*/ } // ---------------------------------------------------------------------- @@ -717,4 +723,19 @@ void XhcWhb04b6Component::enableCrcDebugging(bool enable) { mIsCrcDebuggingEnabled = enable; } + +// ---------------------------------------------------------------------- + +void XhcWhb04b6Component::setLeadModeSpindle() +{ + mPendant.setLeadModeSpindle(); +} + +// ---------------------------------------------------------------------- + +void XhcWhb04b6Component::setLeadModeFeed() +{ + mPendant.setLeadModeFeed(); +} + } diff --git a/src/hal/user_comps/xhc-whb04b-6/xhc-whb04b6.h b/src/hal/user_comps/xhc-whb04b-6/xhc-whb04b6.h index 6631dd9960..a061b78b4f 100644 --- a/src/hal/user_comps/xhc-whb04b-6/xhc-whb04b6.h +++ b/src/hal/user_comps/xhc-whb04b-6/xhc-whb04b6.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2017 Raoul Rubien (github.com/rubienr) + Copyright (C) 2018 Raoul Rubien (github.com/rubienr) This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -67,6 +67,7 @@ class XhcWhb04b6Component : bool isSimulationModeEnabled() const; void setSimulationMode(bool enableSimulationMode); void setEnableVerboseKeyEvents(bool enable); + void enableVerbosePendant(bool enable); void enableVerboseRx(bool enable); void enableVerboseTx(bool enable); void enableVerboseHal(bool enable); @@ -74,7 +75,8 @@ class XhcWhb04b6Component : void enableCrcDebugging(bool enable); void setWaitWithTimeout(uint8_t waitSecs = 3); void printCrcDebug(const UsbInPackage& inPackage, const UsbOutPackageData& outPackageBuffer) const; - void offerHalMemory(); + void setLeadModeSpindle(); + void setLeadModeFeed(); private: const char* mName; @@ -85,10 +87,10 @@ class XhcWhb04b6Component : bool mIsRunning{false}; bool mIsSimulationMode{false}; std::ostream mDevNull{nullptr}; - std::ostream * mTxCout; + //std::ostream * mTxCout; std::ostream * mRxCout; - std::ostream * mKeyEventCout; - std::ostream * mHalInitCout; + //std::ostream * mKeyEventCout; + //std::ostream * mHalInitCout; std::ostream * mInitCout; OnUsbInputPackageListener& packageReceivedEventReceiver; bool mIsCrcDebuggingEnabled{false}; From eb850232ff6c97d7cb6960213e895d81feea3996 Mon Sep 17 00:00:00 2001 From: Alan Condit Date: Tue, 1 Jan 2019 09:15:51 -0800 Subject: [PATCH 383/516] Changes to Xylotex (DB25 Cape) configs to run with CandCNC Mini-IO BOB on X2 mill. --- configs/ARM/BeagleBone/Xylotex/README | 2 +- .../Xylotex/Xylotex.ShuttleXpress.ini | 382 ++++++++++-------- configs/ARM/BeagleBone/Xylotex/Xylotex.bbio | 37 +- configs/ARM/BeagleBone/Xylotex/Xylotex.hal | 46 ++- configs/ARM/BeagleBone/Xylotex/Xylotex.ini | 49 +-- configs/ARM/BeagleBone/Xylotex/setup.sh | 43 -- 6 files changed, 304 insertions(+), 255 deletions(-) diff --git a/configs/ARM/BeagleBone/Xylotex/README b/configs/ARM/BeagleBone/Xylotex/README index 80c5a5cc20..b1fc63b3c2 100644 --- a/configs/ARM/BeagleBone/Xylotex/README +++ b/configs/ARM/BeagleBone/Xylotex/README @@ -12,7 +12,7 @@ Current axis settings: max vel = 1.0 in/s max accel = 15.0 in/s/s -scale = 32000 steps/in +scale = 2000 steps/in Adjust as required for your machine. Make scale negative to invert any axis that is moving 'backwards'. diff --git a/configs/ARM/BeagleBone/Xylotex/Xylotex.ShuttleXpress.ini b/configs/ARM/BeagleBone/Xylotex/Xylotex.ShuttleXpress.ini index 8dcf2d3139..9ff2b4aab3 100644 --- a/configs/ARM/BeagleBone/Xylotex/Xylotex.ShuttleXpress.ini +++ b/configs/ARM/BeagleBone/Xylotex/Xylotex.ShuttleXpress.ini @@ -1,21 +1,27 @@ [PRUCONF] DRIVER=hal_pru_generic -CONFIG=pru=1 num_stepgens=4 -PRUBIN=xenomai/pru_generic.bin - +#CONFIG=pru=1 num_stepgens=4 +CONFIG=prucode=/usr/lib/linuxcnc/rt-preempt/pru_generic.bin pru=1 num_stepgens=4 num_pwmgens=1 +#PRUBIN=xenomai/pru_generic.bin +PRUBIN=rt-preempt/pru_generic.bin + +############################################################################### +# General section +############################################################################### [EMC] # Name of machine, for use with display, etc. -MACHINE = Xylotex +MACHINE = Xylotex-DB25 # Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others +DEBUG = 0 #DEBUG = 0x00000003 #DEBUG = 0x00000007 -DEBUG = 0 - - +############################################################################### +# Sections for display options +############################################################################### [DISPLAY] GLADEVCP = ShuttleXpress.glade @@ -28,6 +34,14 @@ DISPLAY = axis # Touchy currently won't work without some hardware buttons/jog-wheel #DISPLAY = touchy +#uncomment the line below if the shuttleexpress is installed +#GLADEVCP = shuttlexpress.glade +#leave the following two alone +#EMBED_TAB_NAME = GladeVCP demo +#EMBED_TAB_COMMAND = halcmd loadusr -Wn gladevcp gladevcp -c gladevcp -u shuttlexpress.py -x {XID} shuttlexpress.glade + +#EDITOR = mousepad + # Cycle time, in seconds, that display will sleep between polls CYCLE_TIME = 0.0500 @@ -35,16 +49,20 @@ CYCLE_TIME = 0.0500 HELP_FILE = tklinucnc.txt # Initial display setting for position, RELATIVE or MACHINE -POSITION_OFFSET = RELATIVE +POSITION_OFFSET = MACHINE # Initial display setting for position, COMMANDED or ACTUAL POSITION_FEEDBACK = ACTUAL # Highest value that will be allowed for feed override, 1.0 = 100% MAX_FEED_OVERRIDE = 1.5 +MAX_SPINDLE_OVERRIDE = 1.0 +MIN_SPINDLE_OVERRIDE = 0.25 # Prefix to be used -PROGRAM_PREFIX = ../../../nc_files/ +#PROGRAM_PREFIX = ../../../nc_files/ +#PROGRAM_PREFIX = /home/machinekit/machinekit/nc_files/ +PROGRAM_PREFIX = ~/machinekit/nc_files/ # Introductory graphic INTRO_GRAPHIC = machinekit.gif @@ -54,7 +72,7 @@ INTRO_TIME = 5 INCREMENTS = 10 1 0.1 0.01 -#(JP)PYVCP = BeBoPr.panel.xml +#PYVCP = BeBoPr.panel.xml [FILTER] PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image @@ -65,6 +83,9 @@ jpg = image-to-gcode py = python +############################################################################### +# Task controller section +############################################################################### [TASK] # Name of task controller program, e.g., milltask @@ -74,29 +95,30 @@ TASK = milltask CYCLE_TIME = 0.010 - - +############################################################################### +# Part program interpreter section +############################################################################### [RS274NGC] - # File containing interpreter variables PARAMETER_FILE = pru-stepper.var +RS274NGC_STARTUP_CODE = G00 G17 G21 G40 G49 G64 P0.1 Q0.1 G80 G90 +############################################################################### +# Motion control section +############################################################################### [EMCMOT] - EMCMOT = motmod - # Timeout for comm to emcmot, in seconds COMM_TIMEOUT = 1.0 - # Interval between tries to emcmot, in seconds COMM_WAIT = 0.010 - # Servo task period, in nanoseconds SERVO_PERIOD = 1000000 - +############################################################################### +# Hardware Abstraction Layer section +############################################################################### [HAL] - # The run script first uses halcmd to execute any HALFILE # files, and then to execute any individual HALCMD commands. @@ -108,177 +130,232 @@ HALFILE = ../../../common/shuttlexpress.hal # list of halcmd commands to execute # commands are executed in the order in which they appear -#HALCMD = save neta HALUI = halui POSTGUI_HALFILE = ShuttleXpress.postgui.hal +#HALCMD = save neta +############################################################################### +# Hardware Abstraction Layer User Interface section +############################################################################### +[HALUI] +MDI_COMMAND = G0 X0 Y0 Z0 +MDI_COMMAND = G38.2 Z-2 f16 +MDI_COMMAND = G92 Z0.25 +MDI_COMMAND = G0 Z0.75 +MDI_COMMAND = G92 x2 y-.5 + +############################################################################### +# Trajectory planner section +############################################################################### [TRAJ] AXES = 4 COORDINATES = X Y Z A -MAX_ANGULAR_VELOCITY = 45.00 +HOME = 1 1 0 2 +MAX_ANGULAR_VELOCITY = 45.00 DEFAULT_ANGULAR_VELOCITY = 4.50 -LINEAR_UNITS = inch -ANGULAR_UNITS = degree -CYCLE_TIME = 0.010 -DEFAULT_VELOCITY = 2.00 -MAX_LINEAR_VELOCITY =2.00 +LINEAR_UNITS = inch +ANGULAR_UNITS = degree +CYCLE_TIME = 0.010 +DEFAULT_VELOCITY = 2.0 +DEFAULT_ACCELERATION = 15.0 +MAX_LINEAR_VELOCITY = 2.6 +NO_FORCE_HOMING = 1 +# POSITION_FILE = position.txt +#PROBE_INDEX = 0 +#PROBE_POLARITY = 1 + +############################################################################### +# section for main IO controller parameters +############################################################################### +[EMCIO] -################################################################ +#- Name of IO controller program, e.g., io +EMCIO = io + +#- cycle time, in seconds +CYCLE_TIME = 0.100 + +#- tool table file +TOOL_TABLE = mill.tbl + +#- Tool Change Position specifies the location to move to for a tool change +#TOOL_CHANGE_POSITION = 0 0 2 + +############################################################################### +# Axes sections +############################################################################### [AXIS_0] # -# Step timing is 40 us steplen + 40 us stepspace -# That gives 80 us step period = 12.5 KHz step freq +# Step timing is 25 us steplen + 25 us stepspace +# That gives 50 us step period = 20 KHz step freq # -# Bah, even software stepping can handle that, hm2 doesnt buy you much with -# such slow steppers. +# Scale is 200 steps/rev * 5 revs/inch * 2 microsteps = 2000 steps/inch # -# Scale is 200 steps/rev * 5 revs/inch = 1000 steps/inch -# -# This gives a maxvel of 12.5/1 = 12.5 ips +# This gives a maxvel of 20000/2000 = 10 ips # TYPE = LINEAR MAX_VELOCITY = 1.0 MAX_ACCELERATION = 15.0 # Set Stepgen max 20% higher than the axis -STEPGEN_MAX_VEL = 1.2 +STEPGEN_MAX_VEL = 1.6 STEPGEN_MAX_ACC = 18.75 BACKLASH = 0.000 -# scale is 200 steps/rev * 8 mirostep * 10 tpi -SCALE = 32000 +SCALE = 2000 -MIN_LIMIT = -0.0 -MAX_LIMIT = 15.0 +MIN_LIMIT = -0.0 +MAX_LIMIT = 9.125 -FERROR = 1.0 -MIN_FERROR = 0.25 +FERROR = .1 +MIN_FERROR = 0.05 -HOME = 0.000 -HOME_OFFSET = 0.00 -HOME_SEARCH_VEL = -.10 -HOME_LATCH_VEL = .2 -#HOME_USE_INDEX = YES -#HOME_IGNORE_LIMITS = YES +HOME = 0.000 +HOME_OFFSET = -0.1 +HOME_SEARCH_VEL = -0.5 +HOME_LATCH_VEL = 0.25 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = YES +HOME_IS_SHARED = 1 +HOME_SEQUENCE = 1 # these are in nanoseconds -DIRSETUP = 200 -DIRHOLD = 200 -STEPLEN = 1000 -STEPSPACE = 1000 +DIRSETUP = 25000 +DIRHOLD = 25000 +STEPLEN = 25000 +STEPSPACE = 25000 # Set to one for active low step pulses -STEP_INVERT = 0 - +STEP_INVERT = 0 # PID tuning params -DEADBAND = 0 -P = 50 -I = 0 -D = 0 -FF0 = 0 -FF1 = 1 -FF2 = 0 -BIAS = 0 -MAX_OUTPUT = 0 - -################################## +DEADBAND = 0 +P = 50 +I = 0 +D = 0 +FF0 = 0 +FF1 = 1 +FF2 = 0 +BIAS = 0 +MAX_OUTPUT = 0 + +################################################################ [AXIS_1] +# +# Step timing is 25 us steplen + 25 us stepspace +# That gives 50 us step period = 12.5 KHz step freq +# +# Scale is 200 steps/rev * 5 revs/inch * 2 microsteps = 2000 steps/inch +# +# This gives a maxvel of 20000/2000 = 10 ips +# TYPE = LINEAR MAX_VELOCITY = 1.0 MAX_ACCELERATION = 15.0 # Set Stepgen max 20% higher than the axis -STEPGEN_MAX_VEL = 1.2 +STEPGEN_MAX_VEL = 1.6 STEPGEN_MAX_ACC = 18.75 BACKLASH = 0.000 - -SCALE = 32000 +# scale is 200 steps/rev * 2 microstep * 5 tpi = 2000 steps/inch +SCALE = 2000 MIN_LIMIT = 0.0 -MAX_LIMIT = 15.0 +MAX_LIMIT = 5.5 -FERROR = 1.0 -MIN_FERROR = 0.25 +FERROR = .1 +MIN_FERROR = 0.05 -HOME = 0.000 -HOME_OFFSET = 0.00 -HOME_SEARCH_VEL = -.10 -HOME_LATCH_VEL = .20 -#HOME_USE_INDEX = YES -#HOME_IGNORE_LIMITS = YES +HOME = 0.000 +HOME_OFFSET = -0.1 +HOME_SEARCH_VEL = -0.5 +HOME_LATCH_VEL = 0.250 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = YES +HOME_IS_SHARED = 1 +HOME_SEQUENCE = 1 # these are in nanoseconds -DIRSETUP = 200 -DIRHOLD = 200 -STEPLEN = 1000 -STEPSPACE = 1000 +DIRSETUP = 25000 +DIRHOLD = 25000 +STEPLEN = 25000 +STEPSPACE = 25000 # Set to one for active low step pulses -STEP_INVERT = 0 +STEP_INVERT = 0 # PID tuning params -DEADBAND = 0 -P = 50 -I = 0 -D = 0 -FF0 = 0 -FF1 = 1 -FF2 = 0 -BIAS = 0 -MAX_OUTPUT = 0 - -##################################### +DEADBAND = 0 +P = 50 +I = 0 +D = 0 +FF0 = 0 +FF1 = 1 +FF2 = 0 +BIAS = 0 +MAX_OUTPUT = 0 + + +################################################################ [AXIS_2] +# +# Step timing is 25 us steplen + 25 us stepspace +# That gives 50 us step period = 20 KHz step freq +# +# SCALE is 200 steps/rev * 2 microstep * 4:1 gearing * 5 tpi = 8000 steps/inch +# This gives a maxvel of 20000/8000 = 2.5 ips +# TYPE = LINEAR -MAX_VELOCITY = 1.0 -MAX_ACCELERATION = 15.0 +MAX_VELOCITY = 1.0 +MAX_ACCELERATION = 15.0 # Set Stepgen max 20% higher than the axis STEPGEN_MAX_VEL = 1.2 STEPGEN_MAX_ACC = 18.75 BACKLASH = 0.000 +# SCALE is 200 steps/rev * 2 microstep * 4:1 gearing * 5 turns/inch = 8000 steps/inch +SCALE = 8000 -SCALE = 32000 +MIN_LIMIT = 0.0 +MAX_LIMIT = 10.5 -MIN_LIMIT = -10.00 -MAX_LIMIT = 10.0 +FERROR = .1 +MIN_FERROR = 0.05 -FERROR = 1.0 -MIN_FERROR = 0.25 - -HOME = 0.000 -HOME_OFFSET = 0.00 -HOME_SEARCH_VEL = .100 -HOME_LATCH_VEL = -.200 -#HOME_USE_INDEX = YES -#HOME_IGNORE_LIMITS = YES +HOME = 0.000 +HOME_OFFSET = 0.00 +HOME_SEARCH_VEL = 1.0 +HOME_LATCH_VEL = -0.250 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = YES +HOME_IS_SHARED = 1 +HOME_SEQUENCE = 0 # these are in nanoseconds -DIRSETUP = 200 -DIRHOLD = 200 -STEPLEN = 1000 -STEPSPACE = 1000 +DIRSETUP = 25000 +DIRHOLD = 25000 +STEPLEN = 25000 +STEPSPACE = 25000 # Set to one for active low step pulses -STEP_INVERT = 0 +STEP_INVERT = 0 # PID tuning params -DEADBAND = 0 -P = 50 -I = 0 -D = 0 -FF0 = 0 -FF1 = 1 -FF2 = 0 -BIAS = 0 -MAX_OUTPUT = 0 - -############################ +DEADBAND = 0 +P = 50 +I = 0 +D = 0 +FF0 = 0 +FF1 = 1 +FF2 = 0 +BIAS = 0 +MAX_OUTPUT = 0 + +################################################################ [AXIS_3] TYPE = ANGULAR @@ -289,54 +366,41 @@ STEPGEN_MAX_VEL = 1.2 STEPGEN_MAX_ACC = 18.75 BACKLASH = 0.000 - -SCALE = 32000 -#SCALE = -732.32 +# SCALE is 200 steps/rev * 2 microstep * 5 revs/inch = 2000 steps/inch +SCALE = 2000 MIN_LIMIT = -9999.0 MAX_LIMIT = 999999999.0 -FERROR = 1.0 -MIN_FERROR = .25 - -HOME = 0.0 -HOME_OFFSET = 0.0 +FERROR = .1 +MIN_FERROR = 0.05 -HOME_SEARCH_VEL = 0.10 -HOME_LATCH_VEL = -0.2 +HOME = 0.000 +HOME_OFFSET = 0.00 +HOME_SEARCH_VEL = -.1 +HOME_LATCH_VEL = 0.2 #HOME_USE_INDEX = YES #HOME_IGNORE_LIMITS = YES +#HOME_IS_SHARED = 1 +#HOME_SEQUENCE = 2 # these are in nanoseconds -DIRSETUP = 200 -DIRHOLD = 200 -STEPLEN = 1000 -STEPSPACE = 1000 +DIRSETUP = 25000 +DIRHOLD = 25000 +STEPLEN = 25000 +STEPSPACE = 25000 # Set to one for active low step pulses -STEP_INVERT = 0 +STEP_INVERT = 0 # PID tuning params -DEADBAND = 0 -P = 50 -I = 0 -D = 0 -FF0 = 0 -FF1 = 1 -FF2 = 0 -BIAS = 0 -MAX_OUTPUT = 0 - -############################################ - - -[EMCIO] - -# Name of IO controller program, e.g., io -EMCIO = io - -# cycle time, in seconds -CYCLE_TIME = 0.100 +DEADBAND = 0 +P = 50 +I = 0 +D = 0 +FF0 = 0 +FF1 = 1 +FF2 = 0 +BIAS = 0 +MAX_OUTPUT = 0 -# tool table file -TOOL_TABLE = tool.tbl diff --git a/configs/ARM/BeagleBone/Xylotex/Xylotex.bbio b/configs/ARM/BeagleBone/Xylotex/Xylotex.bbio index e4236c5015..c612738dd8 100644 --- a/configs/ARM/BeagleBone/Xylotex/Xylotex.bbio +++ b/configs/ARM/BeagleBone/Xylotex/Xylotex.bbio @@ -1,27 +1,48 @@ # File generated with BB pin configurator # title: Xylotex +# Export GPIO pins: +# One pin needs to be exported to enable the low-level clocks for the GPIO +# modules (there is probably a better way to do this) +# +# Any GPIO pins driven by the PRU need to have their direction set properly +# here. The PRU does not do any setup of the GPIO, it just yanks on the +# pins and assumes you have the output enables configured already +# +# Direct PRU inputs and outputs do not need to be configured here, the pin +# mux setup (which is handled by the device tree overlay) should be all +# the setup needed. +# +# Any GPIO pins driven by the hal_bb_gpio driver do not need to be +# configured here. The hal_bb_gpio module handles setting the output +# enable bits properly. These pins _can_ however be set here without +# causing problems. You may wish to do this for documentation or to make +# sure the pin starts with a known value as soon as possible. + +#sudo $(which config-pin) -f - <<- EOF ## from setup.sh + overlay cape-universal overlay cape-bone-iio #overlay cape-univ-emmc P8_07 out # gpio2.2 Enable System P8_09 in # gpio2.5 ESTOPin P8_10 in # gpio2.4 XLIM -P8_11 out # gpio1.13 X_Dir -P8_12 out # gpio1.12 X_Step +P8_11 out # gpio1.13 X_Dir Used by PRU +P8_12 out # gpio1.12 X_Step Used by PRU P8_13 out # gpio0.23 PWM0/SPINDLE P8_14 in # gpio0.26 YLIM -P8_15 out # gpio1.15 Y_Dir -P8_16 out # gpio1.14 Y_Step +P8_15 out # gpio1.15 Y_Dir Used by PRU +P8_16 out # gpio1.14 Y_Step Used by PRU P8_18 in # gpio2.1 ZLIM P8_19 out # gpio0.22 PWM1 P8_26 out # ESTOP Out (ENA_LED) -P9_11 out # gpio0.31 A_Step -P9_13 out # gpio0.30 A_Dir +P9_11 out # gpio0.31 A_Step Used by PRU +P9_13 out # gpio0.30 A_Dir Used by PRU P9_14 out # gpio1.18 PWM2 -P9_15 out # gpio1.16 Z_Step +P9_15 out # gpio1.16 Z_Step Used by PRU #P9_17 out # gpio0.5 SCS #P9_18 in # gpio0.4 SDI #P9_21 out # gpio0.3 SDO #P9_22 out # gpio0.2 SCK -P9_23 out # gpio1.17 Z_Dir +P9_23 out # gpio1.17 Z_Dir Used by PRU +#EOF from setup.sh \ No newline at end of file diff --git a/configs/ARM/BeagleBone/Xylotex/Xylotex.hal b/configs/ARM/BeagleBone/Xylotex/Xylotex.hal index fc8d9e11e9..0653853dec 100755 --- a/configs/ARM/BeagleBone/Xylotex/Xylotex.hal +++ b/configs/ARM/BeagleBone/Xylotex/Xylotex.hal @@ -15,7 +15,7 @@ # go directly to the BBB # At powerup the LVC541 enable signals are pulled high, disabling the # drivers until -# the BBB and LinuxCNC pull the enable signal low. +# the BBB and MachineKit pull the enable signal low. # ######################################## @@ -23,7 +23,7 @@ # Launch the setup script to make sure hardware setup looks good #loadusr -w /home/machinekit/machinekit/configs/ARM.BeagleBone.Xylotex/setup.sh loadusr -w ./setup.sh -#loadusr -w config-pin -f ./Xylotex.bbio +loadusr -w config-pin -f ./Xylotex.bbio # ################################### # Core EMC/HAL Loads @@ -37,10 +37,10 @@ loadrt tp # motion controller, get name and thread periods from ini file loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES tp=tp kins=trivkins -# load low-level drivers -loadrt hal_bb_gpio output_pins=807,811,812,813,815,816,819,826,914,915,923,913,911 input_pins=809,810,814,818 +# load low-level drivers (must not include pins used by PRU) +loadrt hal_bb_gpio output_pins=807,813,819,826,914,913,911 input_pins=809,810,814,818 -loadrt [PRUCONF](DRIVER) prucode=$(LINUXCNC_HOME)/[PRUCONF](PRUBIN) [PRUCONF](CONFIG) halname=hpg pru_period=25000 +loadrt [PRUCONF](DRIVER) prucode=$(HAL_RTMOD_DIR)/[PRUCONF](PRUBIN) [PRUCONF](CONFIG) halname=hpg pru_period=25000 loadrt pid count=4 loadrt limit1 count=2 @@ -114,7 +114,11 @@ setp pid.0.deadband [AXIS_0]DEADBAND setp pid.0.maxoutput [AXIS_0]MAX_OUTPUT # Add X home switch input on DB25-11 -net home-x bb_gpio.p8.in-10 => axis.0.home-sw-in +#net home-x bb_gpio.p8.in-10 => axis.0.home-sw-in +net both-home-x <= bb_gpio.p8.in-10 +net both-home-x => axis.0.home-sw-in +net both-home-x => axis.0.neg-lim-sw-in +net both-home-x => axis.0.pos-lim-sw-in #setp bb_gpio.p8.in-10.invert 1 # ################ @@ -165,7 +169,12 @@ setp pid.1.deadband [AXIS_1]DEADBAND setp pid.1.maxoutput [AXIS_1]MAX_OUTPUT # Add Y home switch input on DB25-12 -net home-y bb_gpio.p8.in-14 => axis.1.home-sw-in +#net home-y bb_gpio.p8.in-14 => axis.1.home-sw-in +net both-home-y <= bb_gpio.p8.in-14 +net both-home-y => axis.1.home-sw-in +net both-home-y => axis.1.neg-lim-sw-in +net both-home-y => axis.1.pos-lim-sw-in +#setp bb_gpio.p8.in-14.invert 1 # ################ # Z [2] Axis @@ -215,7 +224,12 @@ setp pid.2.deadband [AXIS_2]DEADBAND setp pid.2.maxoutput [AXIS_2]MAX_OUTPUT # Add Z home switch input on DB25-13 -net home-z bb_gpio.p8.in-18 => axis.2.home-sw-in +#net home-z bb_gpio.p8.in-18 => axis.2.home-sw-in +net both-home-z <= bb_gpio.p8.in-18 +net both-home-z => axis.2.home-sw-in +net both-home-z => axis.2.neg-lim-sw-in +net both-home-z => axis.2.pos-lim-sw-in +#setp bb_gpio.p8.in-18.invert 1 # ################ # A [3] Axis @@ -286,12 +300,8 @@ net tool-change-loop iocontrol.0.tool-change => iocontrol.0.tool-changed # this pin is output on DB25-1 # it is also used to enable the LVC541 driver/receiver on the interface board -net machine-on bb_gpio.p8.out-07 bb_gpio.p8.out-26 => halui.machine.is-on -setp bb_gpio.p8.out-07.invert 1 - -# this currently goes to an LED on the interface board -# it is simply a duplicate of the enable signal on DB25-1 right now -setp bb_gpio.p8.out-26.invert 1 +#net machine-on bb_gpio.p8.out-07 bb_gpio.p8.out-26 => halui.machine.is-on +#setp bb_gpio.p8.out-07.invert 1 # this input signal must be active LOW to allow the system to energize. # this should be fed through an NC STOP type switch from DB25-1 to DB25-10 @@ -303,17 +313,19 @@ setp bb_gpio.p8.out-26.invert 1 #net estop-loop iocontrol.0.user-enable-out iocontrol.0.emc-enable-in #setp iocontrol.0.emc-enable-in true -#probe input +#probe input on DB25-15 #net probe motion.probe-input <= bb_gpio.p8.in-18 #setp bb_gpio.p8.in-18.invert 1 # this currently goes to an LED on the interface board # it is simply a duplicate of the enable signal on DB25-1 right now -setp bb_gpio.p8.out-26.invert 1 +#setp bb_gpio.p8.out-26.invert 1 # this input signal must be active LOW to allow the system to energize. # this should be fed through an NC STOP type switch from DB25-1 to DB25-10 -net estop-in bb_gpio.p8.in-09 => iocontrol.0.emc-enable-in +#net estop-in <= halui.machine.is-on +net estop-in => bb_gpio.p8.in-09 +net estop-in => iocontrol.0.emc-enable-in setp bb_gpio.p8.in-09.invert 1 diff --git a/configs/ARM/BeagleBone/Xylotex/Xylotex.ini b/configs/ARM/BeagleBone/Xylotex/Xylotex.ini index c2975d2456..d59aea24c4 100755 --- a/configs/ARM/BeagleBone/Xylotex/Xylotex.ini +++ b/configs/ARM/BeagleBone/Xylotex/Xylotex.ini @@ -1,8 +1,8 @@ [PRUCONF] DRIVER=hal_pru_generic -CONFIG=pru=1 num_stepgens=4 +#CONFIG=pru=1 num_stepgens=4 +CONFIG=prucode=/usr/lib/linuxcnc/rt-preempt/pru_generic.bin pru=1 num_stepgens=4 num_pwmgens=1 #PRUBIN=xenomai/pru_generic.bin -#PRUBIN=lib/linuxcnc/rt-preempt/pru_generic.bin PRUBIN=rt-preempt/pru_generic.bin ############################################################################### @@ -11,7 +11,7 @@ PRUBIN=rt-preempt/pru_generic.bin [EMC] # Name of machine, for use with display, etc. -MACHINE = Xylotex +MACHINE = Xylotex-DB25 # Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others DEBUG = 0 @@ -29,16 +29,10 @@ DISPLAY = axis # Touchy currently will not work without some hardware buttons/jog-wheel #DISPLAY = touchy -#uncomment the line below if the shuttleexpress is installed -#GLADEVCP = shuttlexpress.glade -#leave the following two alone -#EMBED_TAB_NAME = GladeVCP demo -#EMBED_TAB_COMMAND = halcmd loadusr -Wn gladevcp gladevcp -c gladevcp -u shuttlexpress.py -x {XID} shuttlexpress.glade - #EDITOR = mousepad # Cycle time, in seconds, that display will sleep between polls -CYCLE_TIME = 0.200 +CYCLE_TIME = 0.0500 # Path to help file HELP_FILE = tklinucnc.txt @@ -55,11 +49,12 @@ MAX_SPINDLE_OVERRIDE = 1.0 MIN_SPINDLE_OVERRIDE = 0.25 # Prefix to be used -#PROGRAM_PREFIX = /home/machinekit/machinekit/nc_files +#PROGRAM_PREFIX = ../../../nc_files/ +#PROGRAM_PREFIX = /home/machinekit/machinekit/nc_files/ PROGRAM_PREFIX = ~/machinekit/nc_files/ # Introductory graphic -INTRO_GRAPHIC = linuxcnc.gif +INTRO_GRAPHIC = machinekit.gif INTRO_TIME = 5 # Increments for the JOG section @@ -187,24 +182,24 @@ TOOL_TABLE = mill.tbl # This gives a maxvel of 20000/2000 = 10 ips # TYPE = LINEAR -MAX_VELOCITY = 2.0 +MAX_VELOCITY = 1.0 MAX_ACCELERATION = 15.0 # Set Stepgen max 20% higher than the axis -STEPGEN_MAX_VEL = 2.6 +STEPGEN_MAX_VEL = 1.6 STEPGEN_MAX_ACC = 18.75 BACKLASH = 0.000 SCALE = 2000 MIN_LIMIT = -0.0 -MAX_LIMIT = 13.0 +MAX_LIMIT = 9.125 FERROR = .1 MIN_FERROR = 0.05 HOME = 0.000 HOME_OFFSET = -0.1 -HOME_SEARCH_VEL = -1.5 +HOME_SEARCH_VEL = -0.5 HOME_LATCH_VEL = 0.25 HOME_USE_INDEX = NO HOME_IGNORE_LIMITS = YES @@ -243,25 +238,25 @@ MAX_OUTPUT = 0 # This gives a maxvel of 20000/2000 = 10 ips # TYPE = LINEAR -MAX_VELOCITY = 2.0 +MAX_VELOCITY = 1.0 MAX_ACCELERATION = 15.0 # Set Stepgen max 20% higher than the axis -STEPGEN_MAX_VEL = 2.6 +STEPGEN_MAX_VEL = 1.6 STEPGEN_MAX_ACC = 18.75 BACKLASH = 0.000 # scale is 200 steps/rev * 2 microstep * 5 tpi = 2000 steps/inch SCALE = 2000 -MIN_LIMIT = -0.0 -MAX_LIMIT = 12.0 +MIN_LIMIT = 0.0 +MAX_LIMIT = 5.5 FERROR = .1 MIN_FERROR = 0.05 HOME = 0.000 HOME_OFFSET = -0.1 -HOME_SEARCH_VEL = -1.5 +HOME_SEARCH_VEL = -0.5 HOME_LATCH_VEL = 0.250 HOME_USE_INDEX = NO HOME_IGNORE_LIMITS = YES @@ -311,7 +306,7 @@ BACKLASH = 0.000 SCALE = 8000 MIN_LIMIT = 0.0 -MAX_LIMIT = 5.0 +MAX_LIMIT = 10.5 FERROR = .1 MIN_FERROR = 0.05 @@ -355,7 +350,7 @@ MAX_OUTPUT = 0 # This gives a maxvel of 12.5/1 = 12.5 ips # TYPE = ANGULAR -MAX_VELOCITY = 1.0 +MAX_VELOCITY = 0.5 MAX_ACCELERATION = 15.0 # Set Stepgen max 20% higher than the axis STEPGEN_MAX_VEL = 1.2 @@ -365,11 +360,11 @@ BACKLASH = 0.000 # SCALE is 200 steps/rev * 2 microstep * 5 revs/inch = 2000 steps/inch SCALE = 2000 -MIN_LIMIT = -0.0 -MAX_LIMIT = 15.0 +MIN_LIMIT = -9999.0 +MAX_LIMIT = 999999999.0 -FERROR = .1 -MIN_FERROR = 0.05 +FERROR = .1 +MIN_FERROR = 0.05 HOME = 0.000 HOME_OFFSET = 0.00 diff --git a/configs/ARM/BeagleBone/Xylotex/setup.sh b/configs/ARM/BeagleBone/Xylotex/setup.sh index f5e1de93da..5997b13b32 100755 --- a/configs/ARM/BeagleBone/Xylotex/setup.sh +++ b/configs/ARM/BeagleBone/Xylotex/setup.sh @@ -46,46 +46,3 @@ if [ ! -r $PRU ] ; then exit 1; fi -# Export GPIO pins: -# One pin needs to be exported to enable the low-level clocks for the GPIO -# modules (there is probably a better way to do this) -# -# Any GPIO pins driven by the PRU need to have their direction set properly -# here. The PRU does not do any setup of the GPIO, it just yanks on the -# pins and assumes you have the output enables configured already -# -# Direct PRU inputs and outputs do not need to be configured here, the pin -# mux setup (which is handled by the device tree overlay) should be all -# the setup needed. -# -# Any GPIO pins driven by the hal_bb_gpio driver do not need to be -# configured here. The hal_bb_gpio module handles setting the output -# enable bits properly. These pins _can_ however be set here without -# causing problems. You may wish to do this for documentation or to make -# sure the pin starts with a known value as soon as possible. - -sudo $(which config-pin) -f - <<- EOF - - P8.07 out # gpio2.2 Enable System - P8.09 in # gpio2.5 ESTOPin - P8.10 in # gpio2.4 XLIM - P8.11 out # gpio1.13 X_Dir - P8.12 out # gpio1.12 X_Step - P8.13 out # gpio0.23 PWM0/SPINDLE - P8.14 in # gpio0.26 YLIM - P8.15 out # gpio1.15 Y_Dir - P8.16 out # gpio1.14 Y_Step - P8.18 in # gpio2.1 ZLIM - P8.19 out # gpio0.22 PWM1 - P8.26 out # ESTOP Out (ENA_LED) - P9.11 out # gpio0.31 A_Step - P9.13 out # gpio0.30 A_Dir - P9.14 out # gpio1.18 PWM2 - P9.15 out # gpio1.16 Z_Step -# P9.17 out # gpio0.5 SCS -# P9.18 in # gpio0.4 SDI -# P9.21 out # gpio0.3 SDO -# P9.22 out # gpio0.2 SCK - P9.23 out # gpio1.17 Z_Dir -EOF - From 6d41c50aa6e35d07aae964e5caeff68c164febb8 Mon Sep 17 00:00:00 2001 From: John Faith Date: Tue, 1 Jan 2019 13:03:28 -0800 Subject: [PATCH 384/516] scripts/gcode-to-ngc: Convert G4 param to seconds The G4 dwell "P" value in RepRap gcode is specified in milliseconds, but in ngc it is in seconds. Use a lambda in a replacement regex to divide by 1000. See: https://reprap.org/wiki/G-code#G4:_Dwell http://www.linuxcnc.org/docs/2.5/html/gcode/gcode.html#sec:G4-Dwell https://stackoverflow.com/questions/14177592/perform-simple-math-on-regular-expression-output-python --- scripts/gcode-to-ngc | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/gcode-to-ngc b/scripts/gcode-to-ngc index a6ebecf4ef..a2c841a6dc 100755 --- a/scripts/gcode-to-ngc +++ b/scripts/gcode-to-ngc @@ -23,6 +23,7 @@ import re replacements = [ [r'(G(?:0|1|2|3|28|92).*)(?:E)([-\+]?[\d\.].*)', r'\1A\2'], + [r'G4 P([0-9]+)', lambda m: "G4 P" + str(float(m.groups()[0]) / 1000)], [r'G10', r'G22'], [r'G11', r'G23'], [r'(M(?:104|106|109|140|141|190|191).*)(?:S)([\d\.].*)', r'\1P\2'], From 498ad8f4ae946efbbc514faf94491d4eb11a928c Mon Sep 17 00:00:00 2001 From: Evgeny Sabelskiy Date: Sun, 6 Jan 2019 17:56:08 +0300 Subject: [PATCH 385/516] change release number --- pkg/rpm/machinekit.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/rpm/machinekit.spec b/pkg/rpm/machinekit.spec index 06ca679453..f3ce03f433 100644 --- a/pkg/rpm/machinekit.spec +++ b/pkg/rpm/machinekit.spec @@ -10,7 +10,7 @@ Vendor: MachineKit Packager: MachineKit Name: machinekit Version: 0.1.1 -Release: 1 +Release: 2%{?dist} Epoch: 0 License: GNU Group: Machine Control/Daemons From 03a97dff653fe29dfa0de6f9da792bf786eeb21f Mon Sep 17 00:00:00 2001 From: John Morris Date: Tue, 8 Jan 2019 23:40:49 +0800 Subject: [PATCH 386/516] limit3 comp: fix 1st order limit violations and drift This is a rework done for LCNC a year or so ago. It keeps track of the input signal and the min/max limits separately so that when the input signal exceeds a limit, the output doesn't crash into the limit trying to follow it. It also tries to be a little smarter by looking at the input signal velocity to predict when it will come back in limit, and starts accelerating early to meet it. It also fixes the problem where output can drift away from input at zero velocity, fixed separately by @machinekoder back in July. See related discussion at these issues & PRs: https://github.com/LinuxCNC/linuxcnc/issues/240 https://github.com/LinuxCNC/linuxcnc/pull/351 https://github.com/LinuxCNC/linuxcnc/issues/378 https://github.com/LinuxCNC/linuxcnc/pull/396 https://github.com/machinekit/machinekit/pull/1384 --- src/hal/i_components/limit3.icomp | 245 ++++-- src/hal/i_components/limit3v2.icomp | 255 ++++-- tests/limit3/checkresult | 140 +++ tests/limit3/constraints/README.md | 6 + tests/limit3/constraints/checkresult | 1 + tests/limit3/constraints/test.hal | 127 +++ .../limit-accel-and-max}/expected | 0 .../limit-accel-and-max}/test.hal | 7 +- .../limit-max-velocity}/expected | 0 .../limit-max-velocity}/test.hal | 6 +- tests/limit3/lock-on-input-and-limits/README | 4 + .../lock-on-input-and-limits/checkresult | 1 + .../limit3/lock-on-input-and-limits/test.hal | 38 + tests/limit3/min-max-overshoot/README | 4 + tests/limit3/min-max-overshoot/checkresult | 1 + tests/limit3/min-max-overshoot/test.hal | 36 + tests/limit3/runaway/README | 6 + tests/limit3/runaway/checkresult | 1 + tests/limit3/runaway/input | 569 +++++++++++++ tests/limit3/runaway/test.hal | 34 + tests/limit3/sunny-day/README | 4 + tests/limit3/sunny-day/checkresult | 57 ++ tests/limit3/sunny-day/test.hal | 63 ++ tests/limit3v2/checkresult | 140 +++ tests/limit3v2/constraints/README.md | 6 + tests/limit3v2/constraints/checkresult | 1 + tests/limit3v2/constraints/test.hal | 127 +++ tests/limit3v2/limit-accel-and-max/expected | 800 ++++++++++++++++++ .../limit-accel-and-max}/test.hal | 8 +- .../limit-max-velocity}/expected | 0 tests/limit3v2/limit-max-velocity/test.hal | 17 + .../limit3v2/lock-on-input-and-limits/README | 4 + .../lock-on-input-and-limits/checkresult | 1 + .../lock-on-input-and-limits/test.hal | 38 + tests/limit3v2/min-max-overshoot/README | 4 + tests/limit3v2/min-max-overshoot/checkresult | 1 + tests/limit3v2/min-max-overshoot/test.hal | 36 + tests/limit3v2/runaway/README | 6 + tests/limit3v2/runaway/checkresult | 1 + tests/limit3v2/runaway/input | 569 +++++++++++++ tests/limit3v2/runaway/test.hal | 34 + tests/limit3v2/sunny-day/README | 4 + tests/limit3v2/sunny-day/checkresult | 57 ++ tests/limit3v2/sunny-day/test.hal | 63 ++ 44 files changed, 3355 insertions(+), 167 deletions(-) create mode 100755 tests/limit3/checkresult create mode 100644 tests/limit3/constraints/README.md create mode 120000 tests/limit3/constraints/checkresult create mode 100644 tests/limit3/constraints/test.hal rename tests/{limit3.2 => limit3/limit-accel-and-max}/expected (100%) rename tests/{limit3.2 => limit3/limit-accel-and-max}/test.hal (72%) rename tests/{limit3.0 => limit3/limit-max-velocity}/expected (100%) rename tests/{limit3.0 => limit3/limit-max-velocity}/test.hal (67%) create mode 100644 tests/limit3/lock-on-input-and-limits/README create mode 120000 tests/limit3/lock-on-input-and-limits/checkresult create mode 100644 tests/limit3/lock-on-input-and-limits/test.hal create mode 100644 tests/limit3/min-max-overshoot/README create mode 120000 tests/limit3/min-max-overshoot/checkresult create mode 100644 tests/limit3/min-max-overshoot/test.hal create mode 100644 tests/limit3/runaway/README create mode 120000 tests/limit3/runaway/checkresult create mode 100644 tests/limit3/runaway/input create mode 100644 tests/limit3/runaway/test.hal create mode 100644 tests/limit3/sunny-day/README create mode 100755 tests/limit3/sunny-day/checkresult create mode 100644 tests/limit3/sunny-day/test.hal create mode 100755 tests/limit3v2/checkresult create mode 100644 tests/limit3v2/constraints/README.md create mode 120000 tests/limit3v2/constraints/checkresult create mode 100644 tests/limit3v2/constraints/test.hal create mode 100644 tests/limit3v2/limit-accel-and-max/expected rename tests/{limit3.1 => limit3v2/limit-accel-and-max}/test.hal (66%) rename tests/{limit3.1 => limit3v2/limit-max-velocity}/expected (100%) create mode 100644 tests/limit3v2/limit-max-velocity/test.hal create mode 100644 tests/limit3v2/lock-on-input-and-limits/README create mode 120000 tests/limit3v2/lock-on-input-and-limits/checkresult create mode 100644 tests/limit3v2/lock-on-input-and-limits/test.hal create mode 100644 tests/limit3v2/min-max-overshoot/README create mode 120000 tests/limit3v2/min-max-overshoot/checkresult create mode 100644 tests/limit3v2/min-max-overshoot/test.hal create mode 100644 tests/limit3v2/runaway/README create mode 120000 tests/limit3v2/runaway/checkresult create mode 100644 tests/limit3v2/runaway/input create mode 100644 tests/limit3v2/runaway/test.hal create mode 100644 tests/limit3v2/sunny-day/README create mode 100755 tests/limit3v2/sunny-day/checkresult create mode 100644 tests/limit3v2/sunny-day/test.hal diff --git a/src/hal/i_components/limit3.icomp b/src/hal/i_components/limit3.icomp index d41394a0c5..7947e5d423 100644 --- a/src/hal/i_components/limit3.icomp +++ b/src/hal/i_components/limit3.icomp @@ -1,94 +1,191 @@ -component limit3 "Limit the output signal to fall between min and max, limit its slew rate to less than maxv per second, and limit its second derivative to less than maxa per second squared. When the signal is a position, this means that the position, velocity, and acceleration are limited."; +component limit3 """Follow input signal while obeying limits +Limit the output signal to fall between min and max, limit its slew +rate to less than maxv per second, and limit its second derivative to +less than maxa per second squared. When the signal is a position, +this means that the position, velocity, and acceleration are limited."""; pin in float in; pin out float out; -pin in bit load "When TRUE, immediately set \\fBout\\fB to \\fBin\\fR, ignoring maxv and maxa"; +pin in bit load=0 + """When TRUE, immediately set \\fBout\\fB to \\fBin\\fR, ignoring maxv +and maxa"""; pin in float min_=-1e20; pin in float max_=1e20; pin in float maxv=1e20; pin in float maxa=1e20; - -variable hal_float_t old_in; /* previous input */ -variable hal_float_t old_out; /* previous output */ -variable hal_float_t old_v; /* previous 1st derivative */ - +pin in u32 smooth_steps=2 + """Smooth out acceleration this many periods before reaching input or +max/min limit. Higher values avoid oscillation, but will accelerate +slightly more slowly."""; +variable double in_pos_old; +variable double out_old; function _; license "GPL"; ;; #include "rtapi_math.h" -FUNCTION(_) -{ - hal_float_t lin, lout, dt, in_v, min_v, max_v, ramp_a, avg_v, err, dv, dp; - hal_float_t min_out, max_out, match_time, est_in, est_out; +#define SET_NEXT_STATE(_out, _in) \ + do { \ + out_old = out; \ + out = _out; \ + in_pos_old = _in; \ + return 0; \ + } while (0) - /* apply first order limit */ - lin = in; - if ( lin < min_ ) { - lin = min_; - } - if ( lin > max_ ) { - lin = max_; - } +#define VALID_NEXT(pos) ((pos) <= max_pos && (pos) >= min_pos) - if(load) { - old_in = old_out = out = lin; - old_v = 0.0; - return 0; - } +// Distance = avg. velocity * time +#define S_GIVEN_VI_VF_T(vi,vf,t) (((vf) + (vi))/2 * (t)) +// Time = chg. velocity / acceleration +#define T_GIVEN_VI_VF_A(vi,vf,a) (((vf) - (vi)) / (a)) +// Final velocity = initial velocity + acceleration * time +#define VF_GIVEN_VI_A_T(vi,a,t) ((vi) + (a)*(t)) +// A fudge amount for division errors +#define EPSILON 1e-9 + +FUNCTION(_) { + double in_pos_lim, in_vel; + double min_vel, max_vel, min_pos, max_pos; + double stop_pos_max, stop_pos_min; + double stop_time_max, stop_time_min; + double in_vel_time_max, in_vel_time_min; + double out_pos_max, out_pos_min, in_pos_max, in_pos_min; + double ach_pos_min, ach_pos_max; - /* calculate input derivative */ - dt = (hal_float_t) period * 0.000000001; - in_v = (lin - old_in) / dt; - /* determine v and out that can be reached in one period */ - min_v = old_v - maxa * dt; - if ( min_v < -maxv ) { - min_v = -maxv; + double out_vel = (out-out_old)/fperiod; + double goal_pos_min, goal_pos_max, goal_pos_cur; + double pos_diff, vel_diff, goal_pos_prev; + double t, ti, a, v, s; + + if (load) { + // Apply first order limit + in_pos_lim = rtapi_fmin(max_, rtapi_fmax(min_, in)); + SET_NEXT_STATE(in_pos_lim, in_pos_lim); + return 0; } - max_v = old_v + maxa * dt; - if ( max_v > maxv ) { - max_v = maxv; + + // Principal of operation: + // + // 1. Calculate shortest distance (at max acceleration) to + // stop (i.e. reach vel=0) and to match the input velocity + // 2. Compare our projected positions and choose whether to worry + // about the max/min limits or to follow the input signal + // 3. Adjust acceleration according to decision and return + + // 1. Calculate distances and times to stop and match input velocity + // + // Input and output velocity + in_vel = (in - in_pos_old) / fperiod; + out_vel = (out - out_old) / fperiod; + // + // Most negative/positive velocity reachable in one period + min_vel = rtapi_fmax(VF_GIVEN_VI_A_T(out_vel, -maxa, fperiod), -maxv); + max_vel = rtapi_fmin(VF_GIVEN_VI_A_T(out_vel, maxa, fperiod), maxv); + // Most negative/positive position reachable in one period + // - cur. pos + (distance to reach min/max vel in one period) + min_pos = out + min_vel * fperiod; + max_pos = out + max_vel * fperiod; + // + // Shortest possible distance to stop + // - time to decel to 0; start from previous period + stop_time_max = rtapi_fabs(T_GIVEN_VI_VF_A(max_vel, 0.0, maxa)) + fperiod; + stop_time_min = rtapi_fabs(T_GIVEN_VI_VF_A(min_vel, 0.0, maxa)) + fperiod; + // - distance to stop from max_pos/min_pos + stop_pos_max = out + S_GIVEN_VI_VF_T(max_vel, 0.0, stop_time_max); + stop_pos_min = out + S_GIVEN_VI_VF_T(min_vel, 0.0, stop_time_min); + // + // Shortest possible distance to match input velocity + // - time to match input velocity from this period; out runs 1 period behind + in_vel_time_max = rtapi_fabs(T_GIVEN_VI_VF_A(max_vel, in_vel, maxa)) - fperiod; + in_vel_time_min = rtapi_fabs(T_GIVEN_VI_VF_A(min_vel, in_vel, maxa)) - fperiod; + // - output position after velocity match + out_pos_max = max_pos + S_GIVEN_VI_VF_T(max_vel, in_vel, in_vel_time_max); + out_pos_min = min_pos + S_GIVEN_VI_VF_T(min_vel, in_vel, in_vel_time_min); + // - input position after velocity match + in_pos_max = in + in_vel * in_vel_time_max; + in_pos_min = in + in_vel * in_vel_time_min; + + // 2. Choose the current goal: input signal, max limit or min limit + // + // Min/Max limits: + // - assume we're stopping at a limit by default + vel_diff = -out_vel; + ach_pos_min = stop_pos_min; + ach_pos_max = stop_pos_max; + // - are we headed to crash into a min/max limit? + if (stop_pos_max > max_ + EPSILON && !VALID_NEXT(max_)) + goal_pos_min = goal_pos_max = goal_pos_cur = goal_pos_prev = max_; + else if (stop_pos_min < min_ - EPSILON && !VALID_NEXT(min_)) + goal_pos_min = goal_pos_max = goal_pos_cur = goal_pos_prev = min_; + // - if input is outside min/max limit but heading back in, is + // there time to keep heading toward the limit before we need to + // start running to meet the input signal? + else if (in >= max_ && in_pos_max > out_pos_max) + goal_pos_min = goal_pos_max = goal_pos_cur = goal_pos_prev = max_; + else if (in <= min_ && in_pos_min < out_pos_min) + goal_pos_min = goal_pos_max = goal_pos_cur = goal_pos_prev = min_; + // + // Input signal: + // - no min/max constraints; chase the input signal + else { + goal_pos_min = in_pos_min; + goal_pos_max = in_pos_max; + goal_pos_cur = in; + goal_pos_prev = in_pos_old; + vel_diff = out_vel - in_vel; + ach_pos_min = out_pos_min; + ach_pos_max = out_pos_max; } - min_out = old_out + min_v * dt; - max_out = old_out + max_v * dt; - if ( ( lin >= min_out ) && ( lin <= max_out ) && ( in_v >= min_v ) && ( in_v <= max_v ) ) { - /* we can follow the command without hitting a limit */ - lout = lin; - } else { - /* can't follow commanded path while obeying limits */ - /* determine which way we need to ramp to match v */ - if ( in_v > old_v ) { - ramp_a = maxa; - } else { - ramp_a = -maxa; - } - /* determine how long the match would take */ - match_time = ( in_v - old_v ) / ramp_a; - /* where we will be at the end of the match */ - avg_v = ( in_v + old_v + ramp_a * dt ) * 0.5; - est_out = old_out + avg_v * match_time; - /* calculate the expected command position at that time */ - est_in = old_in + in_v * match_time; - /* calculate position error at that time */ - err = est_out - est_in; - /* calculate change in final position if we ramp in the - opposite direction for one period */ - dv = -2.0 * ramp_a * dt; - dp = dv * match_time; - /* decide what to do */ - if ( rtapi_fabs(err+dp*2.0) < rtapi_fabs(err) ) { - ramp_a = -ramp_a; - } - if ( ramp_a < 0.0 ) { - lout = min_out; - } else { - lout = max_out; - } + + // 3. Adjust acceleration + // + // - Difference in position, last cycle + pos_diff = out - goal_pos_prev; + // - Time to reach goal position and velocity with uniform acceleration + if (rtapi_fabs(vel_diff) < EPSILON) + t = 0; + else + t = pos_diff / ((vel_diff + 0) / 2); // t = dp / (avg dv) + + // - If current position and velocity are close enough to reach + // goal position in this period, and maintaining goal velocity + // in the next period doesn't violate acceleration constraints, + // pass the input straight to the output + if (VALID_NEXT(goal_pos_cur) && rtapi_fabs(t) <= fperiod) + SET_NEXT_STATE(goal_pos_cur, in); + + // - If no danger of overshoot, accel at max in direction of goal + if (ach_pos_max < goal_pos_max + EPSILON) + // Max pos. accel toward goal will still fall short + SET_NEXT_STATE(max_pos, in); + if (ach_pos_min > goal_pos_min - EPSILON) + // Max neg. accel toward goal will still fall short + SET_NEXT_STATE(min_pos, in); + + // - If close to reaching goal, try to grease a landing; always + // using max acceleration can result in oscillating around the + // goal but never quite getting things right to 'lock' onto it + if (rtapi_fabs(t) < fperiod * smooth_steps) { + // - Round up the magnitude of time to an integral number of periods +# define SIGN(n) (((n)>=0) ? 1 : -1) + ti = (int)((t - EPSILON*SIGN(t)) / fperiod + SIGN(t)) * fperiod; + // - Uniform acceleration to reach goal in time `ti` + a = (vel_diff - 0) / ti; + v = out_vel + a * fperiod; + s = v * fperiod; + // - Effect new position, within limits + SET_NEXT_STATE(rtapi_fmin(max_pos, rtapi_fmax(min_pos, out + s)), in); } - old_v = ( lout - old_out ) / dt; - old_out = lout; - old_in = lin; - out = lout; - return 0; + // - If moving toward goal and in danger of overshoot, accelerate + // at max in opposite direction of goal + if (goal_pos_max + EPSILON < ach_pos_max && goal_pos_prev > out) + // Heading up from below + SET_NEXT_STATE(min_pos, in); + if (goal_pos_min - EPSILON > ach_pos_min && goal_pos_prev < out) + // Heading down from above + SET_NEXT_STATE(max_pos, in); + + // - Shouldn't get here; coast + SET_NEXT_STATE((min_pos+max_pos)/2, in); } diff --git a/src/hal/i_components/limit3v2.icomp b/src/hal/i_components/limit3v2.icomp index bf2f0deaaa..dea7b50780 100644 --- a/src/hal/i_components/limit3v2.icomp +++ b/src/hal/i_components/limit3v2.icomp @@ -1,97 +1,192 @@ -component limit3v2 "Limit the output signal to fall between min and max, limit its slew rate to less than maxv per second, and limit its second derivative to less than maxa per second squared. When the signal is a position, this means that the position, velocity, and acceleration are limited."; +component limit3v2 """Follow input signal while obeying limits +Limit the output signal to fall between min and max, limit its slew +rate to less than maxv per second, and limit its second derivative to +less than maxa per second squared. When the signal is a position, +this means that the position, velocity, and acceleration are limited."""; pin_ptr in float in; pin_ptr out float out; -pin_ptr in bit load "When TRUE, immediately set \\fBout\\fB to \\fBin\\fR, ignoring maxv and maxa"; +pin_ptr in bit load=0 + """When TRUE, immediately set \\fBout\\fB to \\fBin\\fR, ignoring maxv +and maxa"""; pin_ptr in float min_=-1e20; pin_ptr in float max_=1e20; pin_ptr in float maxv=1e20; pin_ptr in float maxa=1e20; - -variable hal_float_t old_in; /* previous input */ -variable hal_float_t old_out; /* previous output */ -variable hal_float_t old_v; /* previous 1st derivative */ - +pin_ptr in u32 smooth_steps=2 + """Smooth out acceleration this many periods before reaching input or +max/min limit. Higher values avoid oscillation, but will accelerate +slightly more slowly."""; +variable double in_pos_old; +variable double out_old; function _; license "GPL"; ;; #include "rtapi_math.h" -FUNCTION(_) -{ - hal_float_t lin, lout, dt, in_v, min_v, max_v, ramp_a, avg_v, err, dv, dp; - hal_float_t min_out, max_out, match_time, est_in, est_out; - - // apply first order limit - lin = gf(in); - if ( lin < gf(min_) ) - lin = gf(min_); - if ( lin > gf(max_) ) - lin = gf(max_); - - if(gb(load)) - { - sf(out, old_in = old_out = lin); - old_v = 0.0; - return 0; - } - - // calculate input derivative - dt = (hal_float_t) period * 0.000000001; - in_v = (lin - old_in) / dt; - - // determine v and out that can be reached in one period - min_v = old_v - gf(maxa) * dt; - if ( min_v < -gf(maxv) ) - min_v = -gf(maxv); - max_v = old_v + gf(maxa) * dt; - if ( max_v > gf(maxv) ) - max_v = gf(maxv); - - min_out = old_out + min_v * dt; - max_out = old_out + max_v * dt; - if ( ( lin >= min_out ) && ( lin <= max_out ) && ( in_v >= min_v ) && ( in_v <= max_v ) ) - { - // we can follow the command without hitting a limit - lout = lin; +#define SET_NEXT_STATE(_out, _in) \ + do { \ + out_old = gf(out); \ + sf(out,_out); \ + in_pos_old = _in; \ + return 0; \ + } while (0) + +#define VALID_NEXT(pos) ((pos) <= max_pos && (pos) >= min_pos) + +// Distance = avg. velocity * time +#define S_GIVEN_VI_VF_T(vi,vf,t) (((vf) + (vi))/2 * (t)) +// Time = chg. velocity / acceleration +#define T_GIVEN_VI_VF_A(vi,vf,a) (((vf) - (vi)) / (a)) +// Final velocity = initial velocity + acceleration * time +#define VF_GIVEN_VI_A_T(vi,a,t) ((vi) + (a)*(t)) +// A fudge amount for division errors +#define EPSILON 1e-9 + +FUNCTION(_) { + double in_pos_lim, in_vel; + double min_vel, max_vel, min_pos, max_pos; + double stop_pos_max, stop_pos_min; + double stop_time_max, stop_time_min; + double in_vel_time_max, in_vel_time_min; + double out_pos_max, out_pos_min, in_pos_max, in_pos_min; + double ach_pos_min, ach_pos_max; + + double out_vel = (gf(out)-out_old)/fperiod; + double goal_pos_min, goal_pos_max, goal_pos_cur; + double pos_diff, vel_diff, goal_pos_prev; + double t, ti, a, v, s; + + if (gb(load)) { + // Apply first order limit + in_pos_lim = rtapi_fmin(gf(max_), rtapi_fmax(gf(min_), gf(in))); + SET_NEXT_STATE(in_pos_lim, in_pos_lim); + return 0; + } + + // Principal of operation: + // + // 1. Calculate shortest distance (at max acceleration) to + // stop (i.e. reach vel=0) and to match the input velocity + // 2. Compare our projected positions and choose whether to worry + // about the max/min limits or to follow the input signal + // 3. Adjust acceleration according to decision and return + + // 1. Calculate distances and times to stop and match input velocity + // + // Input and output velocity + in_vel = (gf(in) - in_pos_old) / fperiod; + out_vel = (gf(out) - out_old) / fperiod; + // + // Most negative/positive velocity reachable in one period + min_vel = rtapi_fmax(VF_GIVEN_VI_A_T(out_vel, -gf(maxa), fperiod), -gf(maxv)); + max_vel = rtapi_fmin(VF_GIVEN_VI_A_T(out_vel, gf(maxa), fperiod), gf(maxv)); + // Most negative/positive position reachable in one period + // - cur. pos + (distance to reach min/max vel in one period) + min_pos = gf(out) + min_vel * fperiod; + max_pos = gf(out) + max_vel * fperiod; + // + // Shortest possible distance to stop + // - time to decel to 0; start from previous period + stop_time_max = rtapi_fabs(T_GIVEN_VI_VF_A(max_vel, 0.0, gf(maxa))) + fperiod; + stop_time_min = rtapi_fabs(T_GIVEN_VI_VF_A(min_vel, 0.0, gf(maxa))) + fperiod; + // - distance to stop from max_pos/min_pos + stop_pos_max = gf(out) + S_GIVEN_VI_VF_T(max_vel, 0.0, stop_time_max); + stop_pos_min = gf(out) + S_GIVEN_VI_VF_T(min_vel, 0.0, stop_time_min); + // + // Shortest possible distance to match input velocity + // - time to match input velocity from this period; out runs 1 period behind + in_vel_time_max = rtapi_fabs(T_GIVEN_VI_VF_A(max_vel, in_vel, gf(maxa))) - fperiod; + in_vel_time_min = rtapi_fabs(T_GIVEN_VI_VF_A(min_vel, in_vel, gf(maxa))) - fperiod; + // - output position after velocity match + out_pos_max = max_pos + S_GIVEN_VI_VF_T(max_vel, in_vel, in_vel_time_max); + out_pos_min = min_pos + S_GIVEN_VI_VF_T(min_vel, in_vel, in_vel_time_min); + // - input position after velocity match + in_pos_max = gf(in) + in_vel * in_vel_time_max; + in_pos_min = gf(in) + in_vel * in_vel_time_min; + + // 2. Choose the current goal: input signal, max limit or min limit + // + // Min/Max limits: + // - assume we're stopping at a limit by default + vel_diff = -out_vel; + ach_pos_min = stop_pos_min; + ach_pos_max = stop_pos_max; + // - are we headed to crash into a min/max limit? + if (stop_pos_max > gf(max_) + EPSILON && !VALID_NEXT(gf(max_))) + goal_pos_min = goal_pos_max = goal_pos_cur = goal_pos_prev = gf(max_); + else if (stop_pos_min < gf(min_) - EPSILON && !VALID_NEXT(gf(min_))) + goal_pos_min = goal_pos_max = goal_pos_cur = goal_pos_prev = gf(min_); + // - if input is outside min/max limit but heading back in, is + // there time to keep heading toward the limit before we need to + // start running to meet the input signal? + else if (gf(in) >= gf(max_) && in_pos_max > out_pos_max) + goal_pos_min = goal_pos_max = goal_pos_cur = goal_pos_prev = gf(max_); + else if (gf(in) <= gf(min_) && in_pos_min < out_pos_min) + goal_pos_min = goal_pos_max = goal_pos_cur = goal_pos_prev = gf(min_); + // + // Input signal: + // - no min/max constraints; chase the input signal + else { + goal_pos_min = in_pos_min; + goal_pos_max = in_pos_max; + goal_pos_cur = gf(in); + goal_pos_prev = in_pos_old; + vel_diff = out_vel - in_vel; + ach_pos_min = out_pos_min; + ach_pos_max = out_pos_max; } + + // 3. Adjust acceleration + // + // - Difference in position, last cycle + pos_diff = gf(out) - goal_pos_prev; + // - Time to reach goal position and velocity with uniform acceleration + if (rtapi_fabs(vel_diff) < EPSILON) + t = 0; else - { - // can't follow commanded path while obeying limits - // determine which way we need to ramp to match v - if ( in_v > old_v ) - ramp_a = gf(maxa); - else - ramp_a = -gf(maxa); - // determine how long the match would take - match_time = ( in_v - old_v ) / ramp_a; - // where we will be at the end of the match - avg_v = ( in_v + old_v + ramp_a * dt ) * 0.5; - est_out = old_out + avg_v * match_time; - // calculate the expected command position at that time - est_in = old_in + in_v * match_time; - // calculate position error at that time - err = est_out - est_in; - // calculate change in final position if we ramp in the - //opposite direction for one period - dv = -2.0 * ramp_a * dt; - dp = dv * match_time; - // decide what to do - if ( rtapi_fabs(err+dp*2.0) < rtapi_fabs(err) ) - ramp_a = -ramp_a; - if ( ramp_a < 0.0 ) - { - lout = min_out; - } - else - { - lout = max_out; - } + t = pos_diff / ((vel_diff + 0) / 2); // t = dp / (avg dv) + + // - If current position and velocity are close enough to reach + // goal position in this period, and maintaining goal velocity + // in the next period doesn't violate acceleration constraints, + // pass the input straight to the output + if (VALID_NEXT(goal_pos_cur) && rtapi_fabs(t) <= fperiod) + SET_NEXT_STATE(goal_pos_cur, gf(in)); + + // - If no danger of overshoot, accel at max in direction of goal + if (ach_pos_max < goal_pos_max + EPSILON) + // Max pos. accel toward goal will still fall short + SET_NEXT_STATE(max_pos, gf(in)); + if (ach_pos_min > goal_pos_min - EPSILON) + // Max neg. accel toward goal will still fall short + SET_NEXT_STATE(min_pos, gf(in)); + + // - If close to reaching goal, try to grease a landing; always + // using max acceleration can result in oscillating around the + // goal but never quite getting things right to 'lock' onto it + if (rtapi_fabs(t) < fperiod * gu(smooth_steps)) { + // - Round up the magnitude of time to an integral number of periods +# define SIGN(n) (((n)>=0) ? 1 : -1) + ti = (int)((t - EPSILON*SIGN(t)) / fperiod + SIGN(t)) * fperiod; + // - Uniform acceleration to reach goal in time `ti` + a = (vel_diff - 0) / ti; + v = out_vel + a * fperiod; + s = v * fperiod; + // - Effect new position, within limits + SET_NEXT_STATE(rtapi_fmin(max_pos, rtapi_fmax(min_pos, gf(out) + s)), + gf(in)); } - old_v = ( lout - old_out ) / dt; - old_out = lout; - old_in = lin; - sf(out, lout); - return 0; + // - If moving toward goal and in danger of overshoot, accelerate + // at max in opposite direction of goal + if (goal_pos_max + EPSILON < ach_pos_max && goal_pos_prev > gf(out)) + // Heading up from below + SET_NEXT_STATE(min_pos, gf(in)); + if (goal_pos_min - EPSILON > ach_pos_min && goal_pos_prev < gf(out)) + // Heading down from above + SET_NEXT_STATE(max_pos, gf(in)); + + // - Shouldn't get here; coast + SET_NEXT_STATE((min_pos+max_pos)/2, gf(in)); } diff --git a/tests/limit3/checkresult b/tests/limit3/checkresult new file mode 100755 index 0000000000..9b49ad2213 --- /dev/null +++ b/tests/limit3/checkresult @@ -0,0 +1,140 @@ +#!/usr/bin/python2 + +import sys, os, re, math + + +def near(a, b): + fudge_factor = 0.001 + error = abs(a-b) + allowance = abs(a * fudge_factor) + if error <= allowance: + return True + return False + + +def must_decel_to_avoid_pos_violation(sample, out, vel): + """Returns True if maximum deceleration is needed NOW to avoid + violating position constraints.""" + + # Keep going one cycle without any acceleration. + next_out = out + (vel * 0.001) # Assume a 1 ms period. + + # v = v0 + at + # 0 = v0 + at + # t = v0/a + seconds_to_stop = abs(vel) / params['maxa'] + + # figure out which direction we need to accelerate in + if vel > 0: + accel_sign = -1 + else: + accel_sign = 1 + + # r = r0 + v0t + 1/2 at^2 + pos_at_stop = next_out + (vel * seconds_to_stop) + (accel_sign * 0.5 * params['maxa'] * math.pow(seconds_to_stop, 2)) + print "sample=%d, next_out=%.6f, vel=%.6f, seconds_to_stop=%.6f, pos_at_stop=%.6f, min=%.6f, max=%.6f" % \ + (sample, next_out, vel, seconds_to_stop, pos_at_stop, params['min'], params['max']) + if pos_at_stop > (params['max'] * 1.01) or pos_at_stop < (params['min'] * 1.01): + return True + + return False + + +halfile = os.path.join(os.path.dirname(__file__),"test.hal") +param_re = re.compile(r'^setp\s+limit3.0.([^\s]+)\s+([-0-9]+)$') +params = {} +params['min'] = -1e20 +params['max'] = 1e20 +params['maxv'] = 1e20 +params['maxa'] = 1e20 +with open(halfile, 'r') as f: + for line in f: + m = param_re.match(line) + if m is None: continue + params[m.group(1)] = float(m.group(2)) + +result_filename = sys.argv[1] +result_file = open(result_filename, 'r') + +retval = 0 + +for line in result_file.readlines(): + (sample, in_val, out, vel, acc) = line.split()[:5] + sample = int(sample) + in_val = float(in_val) + out = float(out) + vel = float(vel) + acc = float(acc) + + # + # See if we've violated any constraints. + # + + if float(out) > params['max']: + print "max=%.3f, in=%.3f, out=%.3f, max violation on sample %s" % \ + (params['max'], float(in_val), out, sample) + retval = 1 + + if float(out) < params['min']: + print "min=%.3f, in=%.3f, out=%.3f, min violation on sample %s" % \ + (params['min'], float(in_val), out, sample) + retval = 1 + + if abs(vel) > params['maxv']: + print "maxv=%.3f, vel=%.3f, velocity violation on sample %s" % \ + (params['maxv'], vel, sample) + retval = 1 + + if abs(acc) > params['maxa']: + print "maxa=%.3f, acc=%.3f, acceleration violation on sample %s" % \ + (params['maxa'], acc, sample) + retval = 1 + + + # + # See if we're accelerating too sluggishly. + # + + if abs(acc) < params['maxa']: + # Why aren't we accelerating at the max rate? + if abs(vel) == params['maxv']: + # We've already maxed out vel. + pass + elif near(out, params['min']) or near(out, params['max']): + # We're at our position limit. + pass + elif near(out, in_val): + # We're already near our target. + pass + else: + # We have no good reason for not accelerating hard, so fail this test. + print "maxa=%.3f, acc=%.3f, sluggish acceleration on sample %s" % \ + (params['maxa'], acc, sample) + retval = 1 + + + # + # See if our velocity is too sluggish. + # + + if abs(vel) < params['maxv']: + # Why aren't we moving at the max rate? + if abs(acc) == params['maxa']: + # We're still accelerating. + pass + elif near(out, params['min']) or near(out, params['max']): + # We're at our position limit. + pass + elif near(out, in_val): + # We've already reached our target. + pass + elif must_decel_to_avoid_pos_violation(sample, out, vel): + # We're slowing down to avoid violating position constraints. + pass + else: + # We have no good reason for not going fast, so fail this test. + print "maxv=%.3f, vel=%.3f, sluggish velocity on sample %s" % \ + (params['maxv'], vel, sample) + retval = 1 + +sys.exit(retval) diff --git a/tests/limit3/constraints/README.md b/tests/limit3/constraints/README.md new file mode 100644 index 0000000000..41777e44a4 --- /dev/null +++ b/tests/limit3/constraints/README.md @@ -0,0 +1,6 @@ +This test uses a mux to switch the limit3 input signal among a bunch +of options, and verifies that it never violates any of its constraints +(position, velocity, and acceleration). + +The input signals are all the ones available from siggen (sine, cosine, +square, triangle, and sawtooth), plus a loopback of limit3's output. diff --git a/tests/limit3/constraints/checkresult b/tests/limit3/constraints/checkresult new file mode 120000 index 0000000000..e826ab2e5b --- /dev/null +++ b/tests/limit3/constraints/checkresult @@ -0,0 +1 @@ +../checkresult \ No newline at end of file diff --git a/tests/limit3/constraints/test.hal b/tests/limit3/constraints/test.hal new file mode 100644 index 0000000000..89d3301eb5 --- /dev/null +++ b/tests/limit3/constraints/test.hal @@ -0,0 +1,127 @@ +setexact_for_test_suite_only + + +# +# This siggen produces test patters for limit3 to try to follow. +# + +loadrt siggen +setp siggen.0.frequency 2 +setp siggen.0.amplitude 100 +setp siggen.0.offset 0 + +net sine <= siggen.0.sine +net cosine <= siggen.0.cosine +net square <= siggen.0.square +net sawtooth <= siggen.0.sawtooth +net triangle <= siggen.0.triangle + + +# +# This mux selects one of the available input patterns. Later in this +# file, after loading the limit3 component, we'll add the output of +# limit3 as another option in this mux. +# + +loadrt mux_generic config=ff8 + +net sine => mux-gen.00.in-float-00 +net cosine => mux-gen.00.in-float-01 +net square => mux-gen.00.in-float-02 +net sawtooth => mux-gen.00.in-float-03 +net triangle => mux-gen.00.in-float-04 + +net input <= mux-gen.00.out-float + + +# +# Here's the limit3, the component under test. +# +# These pos/vel/accel limits are just a hair above the limits of the +# input sine wave. +# + +loadrt limit3 +setp limit3.0.min -101 +setp limit3.0.max 101 +setp limit3.0.maxv 1500 +setp limit3.0.maxa 15800 + +net input => limit3.0.in +net output <= limit3.0.out +net output => mux-gen.00.in-float-05 + + +# +# Compute the velocity and acceleration of the limit3 output. +# + +loadrt ddt names=ddt.out-accel,ddt.out-vel + +net output => ddt.out-vel.in + +net out-vel <= ddt.out-vel.out +net out-vel => ddt.out-accel.in + +net out-accel <= ddt.out-accel.out + + +# +# This part cycles through the muxed signals. It uses a charge pump to +# generate a high-frequency square wave, and an encoder in counter-mode, +# with a large scale, to produce a slowly growing number (the encoder +# position). The encoder position is converted from a float to a u32, +# and fed to the mux select pin. +# + +loadrt charge_pump + +# The heartbeat toggles every other time the thread runs (so at 500 Hz). +net heartbeat <= charge_pump.0.out + +# The scale of the encoder makes the .position output move forward by +# about 1.0 per second. +loadrt encoder num_chan=1 +setp encoder.0.counter-mode 1 +setp encoder.0.position-scale 500 + +net heartbeat => encoder.0.phase-A +net encoder-position <= encoder.0.position + +loadrt conv_float_u32 +net encoder-position => conv_float_u32.0.in + +net mux-select <= conv_float_u32.0.out +net mux-select => mux-gen.00.sel-int + + +# +# This sampler reports everything we care about out to disk, so we can +# validate it after the realtime part of the test completes. +# + +loadrt sampler depth=1500 cfg=ffffu +net input => sampler.0.pin.0 +net output => sampler.0.pin.1 +net out-vel => sampler.0.pin.2 +net out-accel => sampler.0.pin.3 +net mux-select => sampler.0.pin.4 + + +loadrt threads name1=t period1=1000000 fp1=1 + +addf charge_pump.0.funct t +addf encoder.update-counters t +addf encoder.capture-position t +addf conv_float_u32.0.funct t + +addf siggen.0.update t +addf mux-gen.00 t +addf limit3.0.funct t +addf ddt.out-vel.funct t +addf ddt.out-accel.funct t +addf sampler.0 t + +start + +loadusr -w halsampler -t -n 5100 diff --git a/tests/limit3.2/expected b/tests/limit3/limit-accel-and-max/expected similarity index 100% rename from tests/limit3.2/expected rename to tests/limit3/limit-accel-and-max/expected diff --git a/tests/limit3.2/test.hal b/tests/limit3/limit-accel-and-max/test.hal similarity index 72% rename from tests/limit3.2/test.hal rename to tests/limit3/limit-accel-and-max/test.hal index db996ef3ab..cf7b20f4e8 100644 --- a/tests/limit3.2/test.hal +++ b/tests/limit3/limit-accel-and-max/test.hal @@ -1,11 +1,9 @@ setexact_for_test_suite_only loadrt sampler cfg=f depth=4096 -loadusr -Wn halsampler halsampler -N halsampler -t -n 800 - loadrt limit3 #loadrt blocks limit3=1 -newthread t 1000000 fp +loadrt threads name1=t period1=1000000 setp limit3.0.maxv 500.000000 setp limit3.0.maxa 1000 setp limit3.0.max 160 @@ -18,5 +16,4 @@ addf sampler.0 t setp limit3.0.in 500 start -waitusr -i halsampler - +loadusr -w halsampler -t -n 800 diff --git a/tests/limit3.0/expected b/tests/limit3/limit-max-velocity/expected similarity index 100% rename from tests/limit3.0/expected rename to tests/limit3/limit-max-velocity/expected diff --git a/tests/limit3.0/test.hal b/tests/limit3/limit-max-velocity/test.hal similarity index 67% rename from tests/limit3.0/test.hal rename to tests/limit3/limit-max-velocity/test.hal index a7629c3804..12f69b5d22 100644 --- a/tests/limit3.0/test.hal +++ b/tests/limit3/limit-max-velocity/test.hal @@ -1,11 +1,9 @@ setexact_for_test_suite_only loadrt sampler cfg=f depth=4096 -loadusr -Wn halsampler halsampler -N halsampler -t -n 800 - #loadrt limit3 loadrt limit3 -newthread t 1000000 fp +loadrt threads name1=t period1=1000000 setp limit3.0.maxv 500.000000 net n0 limit3.0.out sampler.0.pin.0 @@ -16,4 +14,4 @@ addf sampler.0 t setp limit3.0.in 500 start -waitusr -i halsampler +loadusr -w halsampler -t -n 800 diff --git a/tests/limit3/lock-on-input-and-limits/README b/tests/limit3/lock-on-input-and-limits/README new file mode 100644 index 0000000000..a96b098024 --- /dev/null +++ b/tests/limit3/lock-on-input-and-limits/README @@ -0,0 +1,4 @@ +This test runs a triangle waveform clipped by max/min limits. + +This is an idealized case that will show weaknesses in locking onto +the input and limits. diff --git a/tests/limit3/lock-on-input-and-limits/checkresult b/tests/limit3/lock-on-input-and-limits/checkresult new file mode 120000 index 0000000000..e826ab2e5b --- /dev/null +++ b/tests/limit3/lock-on-input-and-limits/checkresult @@ -0,0 +1 @@ +../checkresult \ No newline at end of file diff --git a/tests/limit3/lock-on-input-and-limits/test.hal b/tests/limit3/lock-on-input-and-limits/test.hal new file mode 100644 index 0000000000..e6ce3a0dc9 --- /dev/null +++ b/tests/limit3/lock-on-input-and-limits/test.hal @@ -0,0 +1,38 @@ +setexact_for_test_suite_only + +#loadrt sampler cfg=fffffffu depth=1700 +loadrt sampler cfg=ffff depth=3200 + +loadrt limit3 +setp limit3.0.min -50 +setp limit3.0.max 50 +setp limit3.0.maxv 4000 +setp limit3.0.maxa 10000 + +loadrt siggen +setp siggen.0.amplitude 100 + +net in => limit3.0.in +net in => sampler.0.pin.0 +net in <= siggen.0.triangle + +net out <= limit3.0.out +net out => sampler.0.pin.1 + +loadrt ddt names=vel,acc +net out => vel.in +net vel <= vel.out => sampler.0.pin.2 => acc.in +net acc <= acc.out => sampler.0.pin.3 + +loadrt threads name1=t period1=1000000 + +addf sampler.0 t +addf siggen.0.update t +addf limit3.0 t +addf vel t +addf acc t + +start + +loadusr -w halsampler -t -n 800 +#loadusr -w halscope diff --git a/tests/limit3/min-max-overshoot/README b/tests/limit3/min-max-overshoot/README new file mode 100644 index 0000000000..d5f661ab21 --- /dev/null +++ b/tests/limit3/min-max-overshoot/README @@ -0,0 +1,4 @@ +This test reproduces the everyday overshoot/undershoot described in +github issue #240: + + https://github.com/LinuxCNC/linuxcnc/issues/240 diff --git a/tests/limit3/min-max-overshoot/checkresult b/tests/limit3/min-max-overshoot/checkresult new file mode 120000 index 0000000000..e826ab2e5b --- /dev/null +++ b/tests/limit3/min-max-overshoot/checkresult @@ -0,0 +1 @@ +../checkresult \ No newline at end of file diff --git a/tests/limit3/min-max-overshoot/test.hal b/tests/limit3/min-max-overshoot/test.hal new file mode 100644 index 0000000000..c56b360bc3 --- /dev/null +++ b/tests/limit3/min-max-overshoot/test.hal @@ -0,0 +1,36 @@ +setexact_for_test_suite_only + +loadrt sampler cfg=ffff depth=3200 + +loadrt limit3 +setp limit3.0.min -50 +setp limit3.0.max 50 +setp limit3.0.maxv 4000 +setp limit3.0.maxa 10000 + +loadrt siggen +setp siggen.0.amplitude 100 + +net in <= siggen.0.sine +net in => limit3.0.in +net in => sampler.0.pin.0 + +net out <= limit3.0.out +net out => sampler.0.pin.1 + +loadrt ddt names=vel,acc +net out => vel.in +net vel <= vel.out => sampler.0.pin.2 => acc.in +net acc <= acc.out => sampler.0.pin.3 + +loadrt threads name1=t period1=1000000 + +addf siggen.0.update t +addf limit3.0 t +addf vel t +addf acc t +addf sampler.0 t + +start + +loadusr -w halsampler -t -n 800 diff --git a/tests/limit3/runaway/README b/tests/limit3/runaway/README new file mode 100644 index 0000000000..1a5912f07a --- /dev/null +++ b/tests/limit3/runaway/README @@ -0,0 +1,6 @@ +This test reproduces the runaway problem described in github issue #240: + + https://github.com/LinuxCNC/linuxcnc/issues/240 + +The input is a sine wave (sampled from siggen), amplitude 100, that is +abruptly cut off a -42, on the way down on the first cycle. diff --git a/tests/limit3/runaway/checkresult b/tests/limit3/runaway/checkresult new file mode 120000 index 0000000000..e826ab2e5b --- /dev/null +++ b/tests/limit3/runaway/checkresult @@ -0,0 +1 @@ +../checkresult \ No newline at end of file diff --git a/tests/limit3/runaway/input b/tests/limit3/runaway/input new file mode 100644 index 0000000000..71361d56bf --- /dev/null +++ b/tests/limit3/runaway/input @@ -0,0 +1,569 @@ +0.628314 +1.256604 +1.884844 +2.513010 +3.141076 +3.769018 +4.396812 +5.024432 +5.651854 +6.279052 +6.906003 +7.532681 +8.159061 +8.785120 +9.410831 +10.036172 +10.661116 +11.285639 +11.909716 +12.533324 +13.156436 +13.779029 +14.401078 +15.022559 +15.643447 +16.263717 +16.883345 +17.502306 +18.120577 +18.738132 +19.354947 +19.970998 +20.586261 +21.200711 +21.814324 +22.427076 +23.038943 +23.649900 +24.259923 +24.868989 +25.477073 +26.084151 +26.690199 +27.295194 +27.899111 +28.501927 +29.103617 +29.704159 +30.303527 +30.901700 +31.498652 +32.094361 +32.688803 +33.281955 +33.873793 +34.464293 +35.053433 +35.641188 +36.227537 +36.812456 +37.395921 +37.977910 +38.558400 +39.137367 +39.714790 +40.290644 +40.864908 +41.437559 +42.008573 +42.577930 +43.145605 +43.711577 +44.275824 +44.838322 +45.399051 +45.957987 +46.515108 +47.070394 +47.623821 +48.175368 +48.725013 +49.272735 +49.818511 +50.362321 +50.904142 +51.443954 +51.981735 +52.517464 +53.051119 +53.582680 +54.112126 +54.639435 +55.164588 +55.687562 +56.208339 +56.726896 +57.243213 +57.757271 +58.269049 +58.778526 +59.285683 +59.790499 +60.292955 +60.793031 +61.290706 +61.785962 +62.278779 +62.769137 +63.257017 +63.742400 +64.225266 +64.705597 +65.183373 +65.658576 +66.131187 +66.601188 +67.068558 +67.533282 +67.995339 +68.454711 +68.911382 +69.365331 +69.816543 +70.264998 +70.710679 +71.153569 +71.593649 +72.030903 +72.465314 +72.896864 +73.325535 +73.751313 +74.174178 +74.594115 +75.011108 +75.425139 +75.836192 +76.244252 +76.649302 +77.051325 +77.450307 +77.846231 +78.239082 +78.628844 +79.015502 +79.399041 +79.779445 +80.156699 +80.530789 +80.901700 +81.269417 +81.633926 +81.995212 +82.353261 +82.708058 +83.059591 +83.407844 +83.752805 +84.094459 +84.432793 +84.767794 +85.099449 +85.427744 +85.752666 +86.074203 +86.392342 +86.707071 +87.018376 +87.326246 +87.630669 +87.931632 +88.229123 +88.523132 +88.813646 +89.100653 +89.384143 +89.664104 +89.940526 +90.213397 +90.482706 +90.748443 +91.010598 +91.269159 +91.524118 +91.775463 +92.023185 +92.267275 +92.507721 +92.744516 +92.977649 +93.207112 +93.432895 +93.654989 +93.873386 +94.088078 +94.299054 +94.506308 +94.709831 +94.909615 +95.105652 +95.297935 +95.486455 +95.671206 +95.852179 +96.029369 +96.202768 +96.372368 +96.538164 +96.700149 +96.858317 +97.012660 +97.163174 +97.309852 +97.452688 +97.591677 +97.726813 +97.858091 +97.985506 +98.109052 +98.228725 +98.344521 +98.456434 +98.564460 +98.668595 +98.768834 +98.865175 +98.957612 +99.046143 +99.130763 +99.211470 +99.288261 +99.361131 +99.430079 +99.495102 +99.556197 +99.613361 +99.666593 +99.715890 +99.761251 +99.802673 +99.840155 +99.873696 +99.903294 +99.928947 +99.950656 +99.968419 +99.982235 +99.992104 +99.998026 +100.000000 +99.998026 +99.992104 +99.982235 +99.968419 +99.950656 +99.928947 +99.903293 +99.873696 +99.840155 +99.802673 +99.761250 +99.715890 +99.666593 +99.613361 +99.556196 +99.495101 +99.430079 +99.361131 +99.288260 +99.211470 +99.130763 +99.046142 +98.957611 +98.865174 +98.768834 +98.668594 +98.564459 +98.456433 +98.344520 +98.228725 +98.109051 +97.985505 +97.858090 +97.726812 +97.591676 +97.452687 +97.309850 +97.163173 +97.012659 +96.858315 +96.700148 +96.538163 +96.372367 +96.202766 +96.029368 +95.852178 +95.671204 +95.486454 +95.297933 +95.105651 +94.909614 +94.709830 +94.506307 +94.299053 +94.088076 +93.873385 +93.654988 +93.432893 +93.207110 +92.977648 +92.744514 +92.507720 +92.267273 +92.023184 +91.775461 +91.524116 +91.269158 +91.010596 +90.748441 +90.482704 +90.213395 +89.940524 +89.664102 +89.384141 +89.100651 +88.813643 +88.523130 +88.229121 +87.931630 +87.630667 +87.326244 +87.018374 +86.707069 +86.392340 +86.074201 +85.752664 +85.427742 +85.099447 +84.767792 +84.432791 +84.094457 +83.752802 +83.407842 +83.059588 +82.708056 +82.353258 +81.995209 +81.633923 +81.269415 +80.901698 +80.530787 +80.156697 +79.779442 +79.399038 +79.015499 +78.628841 +78.239079 +77.846228 +77.450304 +77.051322 +76.649299 +76.244249 +75.836189 +75.425136 +75.011105 +74.594112 +74.174175 +73.751309 +73.325532 +72.896860 +72.465311 +72.030900 +71.593646 +71.153565 +70.710676 +70.264994 +69.816539 +69.365328 +68.911378 +68.454708 +67.995335 +67.533278 +67.068555 +66.601184 +66.131184 +65.658573 +65.183370 +64.705593 +64.225263 +63.742396 +63.257013 +62.769133 +62.278775 +61.785958 +61.290702 +60.793027 +60.292951 +59.790495 +59.285679 +58.778522 +58.269045 +57.757267 +57.243209 +56.726892 +56.208335 +55.687559 +55.164584 +54.639432 +54.112122 +53.582676 +53.051115 +52.517460 +51.981731 +51.443950 +50.904138 +50.362317 +49.818507 +49.272731 +48.725009 +48.175364 +47.623817 +47.070390 +46.515104 +45.957983 +45.399046 +44.838318 +44.275820 +43.711573 +43.145601 +42.577926 +42.008569 +41.437554 +40.864904 +40.290640 +39.714785 +39.137363 +38.558395 +37.977906 +37.395917 +36.812451 +36.227533 +35.641184 +35.053428 +34.464288 +33.873788 +33.281951 +32.688799 +32.094357 +31.498648 +30.901695 +30.303523 +29.704154 +29.103613 +28.501922 +27.899107 +27.295189 +26.690195 +26.084147 +25.477068 +24.868985 +24.259919 +23.649896 +23.038938 +22.427072 +21.814320 +21.200707 +20.586257 +19.970994 +19.354943 +18.738127 +18.120572 +17.502302 +16.883340 +16.263712 +15.643442 +15.022555 +14.401074 +13.779025 +13.156432 +12.533319 +11.909712 +11.285634 +10.661111 +10.036167 +9.410827 +8.785115 +8.159057 +7.532676 +6.905998 +6.279047 +5.651849 +5.024427 +4.396807 +3.769014 +3.141071 +2.513005 +1.884839 +1.256599 +0.628310 +-0.000005 +-0.628319 +-1.256609 +-1.884849 +-2.513014 +-3.141081 +-3.769023 +-4.396817 +-5.024437 +-5.651858 +-6.279057 +-6.906007 +-7.532685 +-8.159066 +-8.785124 +-9.410836 +-10.036176 +-10.661120 +-11.285643 +-11.909721 +-12.533328 +-13.156441 +-13.779034 +-14.401083 +-15.022564 +-15.643451 +-16.263721 +-16.883349 +-17.502311 +-18.120581 +-18.738136 +-19.354952 +-19.971003 +-20.586266 +-21.200716 +-21.814329 +-22.427081 +-23.038948 +-23.649905 +-24.259928 +-24.868994 +-25.477077 +-26.084155 +-26.690204 +-27.295198 +-27.899115 +-28.501931 +-29.103622 +-29.704163 +-30.303532 +-30.901704 +-31.498657 +-32.094366 +-32.688808 +-33.281959 +-33.873797 +-34.464297 +-35.053437 +-35.641193 +-36.227542 +-36.812460 +-37.395925 +-37.977914 +-38.558404 +-39.137372 +-39.714794 +-40.290648 +-40.864912 +-41.437563 +-42.008578 diff --git a/tests/limit3/runaway/test.hal b/tests/limit3/runaway/test.hal new file mode 100644 index 0000000000..07dbf6e778 --- /dev/null +++ b/tests/limit3/runaway/test.hal @@ -0,0 +1,34 @@ +setexact_for_test_suite_only + +loadrt sampler cfg=ffff depth=3200 +loadrt streamer cfg=f depth=4096 + +loadrt limit3 +setp limit3.0.min -50 +setp limit3.0.max 50 +setp limit3.0.maxv 4000 +setp limit3.0.maxa 10000 + +net in <= streamer.0.pin.0 +net in => limit3.0.in +net in => sampler.0.pin.0 + +net out <= limit3.0.out +net out => sampler.0.pin.1 + +loadrt ddt names=vel,acc +net out => vel.in +net vel <= vel.out => sampler.0.pin.2 => acc.in +net acc <= acc.out => sampler.0.pin.3 + +loadrt threads name1=t period1=1000000 + +addf streamer.0 t +addf limit3.0 t +addf vel t +addf acc t +addf sampler.0 t +start + +loadusr halstreamer input +loadusr -w halsampler -t -n 1500 diff --git a/tests/limit3/sunny-day/README b/tests/limit3/sunny-day/README new file mode 100644 index 0000000000..d2534f805f --- /dev/null +++ b/tests/limit3/sunny-day/README @@ -0,0 +1,4 @@ +This test exposes limit3 to an input signal that it is capable of +following perfectly (but just barely), and verifies that the output +follows the input very closely, while not violating position, velocity, +and acceleration constraints. diff --git a/tests/limit3/sunny-day/checkresult b/tests/limit3/sunny-day/checkresult new file mode 100755 index 0000000000..dd00770d24 --- /dev/null +++ b/tests/limit3/sunny-day/checkresult @@ -0,0 +1,57 @@ +#!/usr/bin/python2 + +import sys +import math + +max_value = 0.0 +min_value = -100.0 + +max_vel = 315 +max_accel = 1975 + +result_filename = sys.argv[1] +result_file = open(result_filename, 'r') + +retval = 0 + +for line in result_file.readlines(): + (line, in_value, in_vel, in_accel, out_value, out_vel, out_accel) = line.split() + in_value = float(in_value) + in_vel = float(in_vel) + in_accel = float(in_accel) + out_value = float(out_value) + out_vel = float(out_vel) + out_accel = float(out_accel) + + + # + # constraints + # + + if out_value > max_value: + print "max=%.3f, out=%.3f, position violation on line %s" % (max_value, out_value, line) + retval = 1 + + if out_value < min_value: + print "min=%.3f, out=%.3f, position violation on line %s" % (min_value, out_value, line) + retval = 1 + + if math.fabs(out_vel) > max_vel: + print "max_vel=%.3f, out_vel=%.3f, velocity violation on line %s" % (max_vel, out_vel, line) + retval = 1 + + if math.fabs(out_accel) > max_accel: + print "max_accel=%.3f, out_accel=%.3f, acceleration violation on line %s" % (max_accel, out_accel, line) + retval = 1 + + + # + # input -> output following + # + + error = math.fabs(in_value - out_value) + if error > 0.0: + print "input=%.6f, output=%.6f, error=%.6f, threshold=%.6f, following failure on line %s" % (in_value, out_value, error, threshold, line) + retval = 1 + +sys.exit(retval) diff --git a/tests/limit3/sunny-day/test.hal b/tests/limit3/sunny-day/test.hal new file mode 100644 index 0000000000..05d57dd3e4 --- /dev/null +++ b/tests/limit3/sunny-day/test.hal @@ -0,0 +1,63 @@ +setexact_for_test_suite_only + +loadrt limit3 + +# These pos/vel/accel limits are just a hair above the limits of the +# input sine wave. +setp limit3.0.min -150 +setp limit3.0.max 50 +setp limit3.0.maxv 630 +setp limit3.0.maxa 4000 + + +loadrt siggen +setp siggen.0.amplitude 50 +setp siggen.0.offset -50 + + +loadrt ddt names=ddt.in-accel,ddt.in-vel,ddt.out-accel,ddt.out-vel + + +loadrt sampler depth=2000 cfg=ffffff + + +# We use the cosine signal as the input so that the velocity and +# acceleration start out at 0, and we offset it by the negative of the +# amplitude so that position start out at 0 too. +net input <= siggen.0.cosine +net input => limit3.0.in +net input => ddt.in-vel.in +net input => sampler.0.pin.0 + +net in-vel <= ddt.in-vel.out +net in-vel => ddt.in-accel.in +net in-vel => sampler.0.pin.1 + +net in-accel <= ddt.in-accel.out +net in-accel => sampler.0.pin.2 + +net output <= limit3.0.out +net output => ddt.out-vel.in +net output => sampler.0.pin.3 + +net out-vel <= ddt.out-vel.out +net out-vel => ddt.out-accel.in +net out-vel => sampler.0.pin.4 + +net out-accel <= ddt.out-accel.out +net out-accel => sampler.0.pin.5 + + +loadrt threads name1=t period1=1000000 fp1=1 + +addf siggen.0.update t +addf limit3.0 t +addf ddt.in-vel t +addf ddt.in-accel t +addf ddt.out-vel t +addf ddt.out-accel t +addf sampler.0 t + +start + +loadusr -w halsampler -t -n 4000 diff --git a/tests/limit3v2/checkresult b/tests/limit3v2/checkresult new file mode 100755 index 0000000000..9b49ad2213 --- /dev/null +++ b/tests/limit3v2/checkresult @@ -0,0 +1,140 @@ +#!/usr/bin/python2 + +import sys, os, re, math + + +def near(a, b): + fudge_factor = 0.001 + error = abs(a-b) + allowance = abs(a * fudge_factor) + if error <= allowance: + return True + return False + + +def must_decel_to_avoid_pos_violation(sample, out, vel): + """Returns True if maximum deceleration is needed NOW to avoid + violating position constraints.""" + + # Keep going one cycle without any acceleration. + next_out = out + (vel * 0.001) # Assume a 1 ms period. + + # v = v0 + at + # 0 = v0 + at + # t = v0/a + seconds_to_stop = abs(vel) / params['maxa'] + + # figure out which direction we need to accelerate in + if vel > 0: + accel_sign = -1 + else: + accel_sign = 1 + + # r = r0 + v0t + 1/2 at^2 + pos_at_stop = next_out + (vel * seconds_to_stop) + (accel_sign * 0.5 * params['maxa'] * math.pow(seconds_to_stop, 2)) + print "sample=%d, next_out=%.6f, vel=%.6f, seconds_to_stop=%.6f, pos_at_stop=%.6f, min=%.6f, max=%.6f" % \ + (sample, next_out, vel, seconds_to_stop, pos_at_stop, params['min'], params['max']) + if pos_at_stop > (params['max'] * 1.01) or pos_at_stop < (params['min'] * 1.01): + return True + + return False + + +halfile = os.path.join(os.path.dirname(__file__),"test.hal") +param_re = re.compile(r'^setp\s+limit3.0.([^\s]+)\s+([-0-9]+)$') +params = {} +params['min'] = -1e20 +params['max'] = 1e20 +params['maxv'] = 1e20 +params['maxa'] = 1e20 +with open(halfile, 'r') as f: + for line in f: + m = param_re.match(line) + if m is None: continue + params[m.group(1)] = float(m.group(2)) + +result_filename = sys.argv[1] +result_file = open(result_filename, 'r') + +retval = 0 + +for line in result_file.readlines(): + (sample, in_val, out, vel, acc) = line.split()[:5] + sample = int(sample) + in_val = float(in_val) + out = float(out) + vel = float(vel) + acc = float(acc) + + # + # See if we've violated any constraints. + # + + if float(out) > params['max']: + print "max=%.3f, in=%.3f, out=%.3f, max violation on sample %s" % \ + (params['max'], float(in_val), out, sample) + retval = 1 + + if float(out) < params['min']: + print "min=%.3f, in=%.3f, out=%.3f, min violation on sample %s" % \ + (params['min'], float(in_val), out, sample) + retval = 1 + + if abs(vel) > params['maxv']: + print "maxv=%.3f, vel=%.3f, velocity violation on sample %s" % \ + (params['maxv'], vel, sample) + retval = 1 + + if abs(acc) > params['maxa']: + print "maxa=%.3f, acc=%.3f, acceleration violation on sample %s" % \ + (params['maxa'], acc, sample) + retval = 1 + + + # + # See if we're accelerating too sluggishly. + # + + if abs(acc) < params['maxa']: + # Why aren't we accelerating at the max rate? + if abs(vel) == params['maxv']: + # We've already maxed out vel. + pass + elif near(out, params['min']) or near(out, params['max']): + # We're at our position limit. + pass + elif near(out, in_val): + # We're already near our target. + pass + else: + # We have no good reason for not accelerating hard, so fail this test. + print "maxa=%.3f, acc=%.3f, sluggish acceleration on sample %s" % \ + (params['maxa'], acc, sample) + retval = 1 + + + # + # See if our velocity is too sluggish. + # + + if abs(vel) < params['maxv']: + # Why aren't we moving at the max rate? + if abs(acc) == params['maxa']: + # We're still accelerating. + pass + elif near(out, params['min']) or near(out, params['max']): + # We're at our position limit. + pass + elif near(out, in_val): + # We've already reached our target. + pass + elif must_decel_to_avoid_pos_violation(sample, out, vel): + # We're slowing down to avoid violating position constraints. + pass + else: + # We have no good reason for not going fast, so fail this test. + print "maxv=%.3f, vel=%.3f, sluggish velocity on sample %s" % \ + (params['maxv'], vel, sample) + retval = 1 + +sys.exit(retval) diff --git a/tests/limit3v2/constraints/README.md b/tests/limit3v2/constraints/README.md new file mode 100644 index 0000000000..41777e44a4 --- /dev/null +++ b/tests/limit3v2/constraints/README.md @@ -0,0 +1,6 @@ +This test uses a mux to switch the limit3 input signal among a bunch +of options, and verifies that it never violates any of its constraints +(position, velocity, and acceleration). + +The input signals are all the ones available from siggen (sine, cosine, +square, triangle, and sawtooth), plus a loopback of limit3's output. diff --git a/tests/limit3v2/constraints/checkresult b/tests/limit3v2/constraints/checkresult new file mode 120000 index 0000000000..e826ab2e5b --- /dev/null +++ b/tests/limit3v2/constraints/checkresult @@ -0,0 +1 @@ +../checkresult \ No newline at end of file diff --git a/tests/limit3v2/constraints/test.hal b/tests/limit3v2/constraints/test.hal new file mode 100644 index 0000000000..d015fa53de --- /dev/null +++ b/tests/limit3v2/constraints/test.hal @@ -0,0 +1,127 @@ +setexact_for_test_suite_only + + +# +# This siggen produces test patters for limit3 to try to follow. +# + +loadrt siggen +setp siggen.0.frequency 2 +setp siggen.0.amplitude 100 +setp siggen.0.offset 0 + +net sine <= siggen.0.sine +net cosine <= siggen.0.cosine +net square <= siggen.0.square +net sawtooth <= siggen.0.sawtooth +net triangle <= siggen.0.triangle + + +# +# This mux selects one of the available input patterns. Later in this +# file, after loading the limit3 component, we'll add the output of +# limit3 as another option in this mux. +# + +loadrt mux_generic config=ff8 + +net sine => mux-gen.00.in-float-00 +net cosine => mux-gen.00.in-float-01 +net square => mux-gen.00.in-float-02 +net sawtooth => mux-gen.00.in-float-03 +net triangle => mux-gen.00.in-float-04 + +net input <= mux-gen.00.out-float + + +# +# Here's the limit3, the component under test. +# +# These pos/vel/accel limits are just a hair above the limits of the +# input sine wave. +# + +newinst limit3v2 limit3.0 +setp limit3.0.min -101 +setp limit3.0.max 101 +setp limit3.0.maxv 1500 +setp limit3.0.maxa 15800 + +net input => limit3.0.in +net output <= limit3.0.out +net output => mux-gen.00.in-float-05 + + +# +# Compute the velocity and acceleration of the limit3 output. +# + +loadrt ddt names=ddt.out-accel,ddt.out-vel + +net output => ddt.out-vel.in + +net out-vel <= ddt.out-vel.out +net out-vel => ddt.out-accel.in + +net out-accel <= ddt.out-accel.out + + +# +# This part cycles through the muxed signals. It uses a charge pump to +# generate a high-frequency square wave, and an encoder in counter-mode, +# with a large scale, to produce a slowly growing number (the encoder +# position). The encoder position is converted from a float to a u32, +# and fed to the mux select pin. +# + +loadrt charge_pump + +# The heartbeat toggles every other time the thread runs (so at 500 Hz). +net heartbeat <= charge_pump.0.out + +# The scale of the encoder makes the .position output move forward by +# about 1.0 per second. +loadrt encoder num_chan=1 +setp encoder.0.counter-mode 1 +setp encoder.0.position-scale 500 + +net heartbeat => encoder.0.phase-A +net encoder-position <= encoder.0.position + +loadrt conv_float_u32 +net encoder-position => conv_float_u32.0.in + +net mux-select <= conv_float_u32.0.out +net mux-select => mux-gen.00.sel-int + + +# +# This sampler reports everything we care about out to disk, so we can +# validate it after the realtime part of the test completes. +# + +loadrt sampler depth=1500 cfg=ffffu +net input => sampler.0.pin.0 +net output => sampler.0.pin.1 +net out-vel => sampler.0.pin.2 +net out-accel => sampler.0.pin.3 +net mux-select => sampler.0.pin.4 + + +loadrt threads name1=t period1=1000000 fp1=1 + +addf charge_pump.0.funct t +addf encoder.update-counters t +addf encoder.capture-position t +addf conv_float_u32.0.funct t + +addf siggen.0.update t +addf mux-gen.00 t +addf limit3.0.funct t +addf ddt.out-vel.funct t +addf ddt.out-accel.funct t +addf sampler.0 t + +start + +loadusr -w halsampler -t -n 5100 diff --git a/tests/limit3v2/limit-accel-and-max/expected b/tests/limit3v2/limit-accel-and-max/expected new file mode 100644 index 0000000000..ebda2f2fda --- /dev/null +++ b/tests/limit3v2/limit-accel-and-max/expected @@ -0,0 +1,800 @@ +0 0.001000 +1 0.003000 +2 0.006000 +3 0.010000 +4 0.015000 +5 0.021000 +6 0.028000 +7 0.036000 +8 0.045000 +9 0.055000 +10 0.066000 +11 0.078000 +12 0.091000 +13 0.105000 +14 0.120000 +15 0.136000 +16 0.153000 +17 0.171000 +18 0.190000 +19 0.210000 +20 0.231000 +21 0.253000 +22 0.276000 +23 0.300000 +24 0.325000 +25 0.351000 +26 0.378000 +27 0.406000 +28 0.435000 +29 0.465000 +30 0.496000 +31 0.528000 +32 0.561000 +33 0.595000 +34 0.630000 +35 0.666000 +36 0.703000 +37 0.741000 +38 0.780000 +39 0.820000 +40 0.861000 +41 0.903000 +42 0.946000 +43 0.990000 +44 1.035000 +45 1.081000 +46 1.128000 +47 1.176000 +48 1.225000 +49 1.275000 +50 1.326000 +51 1.378000 +52 1.431000 +53 1.485000 +54 1.540000 +55 1.596000 +56 1.653000 +57 1.711000 +58 1.770000 +59 1.830000 +60 1.891000 +61 1.953000 +62 2.016000 +63 2.080000 +64 2.145000 +65 2.211000 +66 2.278000 +67 2.346000 +68 2.415000 +69 2.485000 +70 2.556000 +71 2.628000 +72 2.701000 +73 2.775000 +74 2.850000 +75 2.926000 +76 3.003000 +77 3.081000 +78 3.160000 +79 3.240000 +80 3.321000 +81 3.403000 +82 3.486000 +83 3.570000 +84 3.655000 +85 3.741000 +86 3.828000 +87 3.916000 +88 4.005000 +89 4.095000 +90 4.186000 +91 4.278000 +92 4.371000 +93 4.465000 +94 4.560000 +95 4.656000 +96 4.753000 +97 4.851000 +98 4.950000 +99 5.050000 +100 5.151000 +101 5.253000 +102 5.356000 +103 5.460000 +104 5.565000 +105 5.671000 +106 5.778000 +107 5.886000 +108 5.995000 +109 6.105000 +110 6.216000 +111 6.328000 +112 6.441000 +113 6.555000 +114 6.670000 +115 6.786000 +116 6.903000 +117 7.021000 +118 7.140000 +119 7.260000 +120 7.381000 +121 7.503000 +122 7.626000 +123 7.750000 +124 7.875000 +125 8.001000 +126 8.128000 +127 8.256000 +128 8.385000 +129 8.515000 +130 8.646000 +131 8.778000 +132 8.911000 +133 9.045000 +134 9.180000 +135 9.316000 +136 9.453000 +137 9.591000 +138 9.730000 +139 9.870000 +140 10.011000 +141 10.153000 +142 10.296000 +143 10.440000 +144 10.585000 +145 10.731000 +146 10.878000 +147 11.026000 +148 11.175000 +149 11.325000 +150 11.476000 +151 11.628000 +152 11.781000 +153 11.935000 +154 12.090000 +155 12.246000 +156 12.403000 +157 12.561000 +158 12.720000 +159 12.880000 +160 13.041000 +161 13.203000 +162 13.366000 +163 13.530000 +164 13.695000 +165 13.861000 +166 14.028000 +167 14.196000 +168 14.365000 +169 14.535000 +170 14.706000 +171 14.878000 +172 15.051000 +173 15.225000 +174 15.400000 +175 15.576000 +176 15.753000 +177 15.931000 +178 16.110000 +179 16.290000 +180 16.471000 +181 16.653000 +182 16.836000 +183 17.020000 +184 17.205000 +185 17.391000 +186 17.578000 +187 17.766000 +188 17.955000 +189 18.145000 +190 18.336000 +191 18.528000 +192 18.721000 +193 18.915000 +194 19.110000 +195 19.306000 +196 19.503000 +197 19.701000 +198 19.900000 +199 20.100000 +200 20.301000 +201 20.503000 +202 20.706000 +203 20.910000 +204 21.115000 +205 21.321000 +206 21.528000 +207 21.736000 +208 21.945000 +209 22.155000 +210 22.366000 +211 22.578000 +212 22.791000 +213 23.005000 +214 23.220000 +215 23.436000 +216 23.653000 +217 23.871000 +218 24.090000 +219 24.310000 +220 24.531000 +221 24.753000 +222 24.976000 +223 25.200000 +224 25.425000 +225 25.651000 +226 25.878000 +227 26.106000 +228 26.335000 +229 26.565000 +230 26.796000 +231 27.028000 +232 27.261000 +233 27.495000 +234 27.730000 +235 27.966000 +236 28.203000 +237 28.441000 +238 28.680000 +239 28.920000 +240 29.161000 +241 29.403000 +242 29.646000 +243 29.890000 +244 30.135000 +245 30.381000 +246 30.628000 +247 30.876000 +248 31.125000 +249 31.375000 +250 31.626000 +251 31.878000 +252 32.131000 +253 32.385000 +254 32.640000 +255 32.896000 +256 33.153000 +257 33.411000 +258 33.670000 +259 33.930000 +260 34.191000 +261 34.453000 +262 34.716000 +263 34.980000 +264 35.245000 +265 35.511000 +266 35.778000 +267 36.046000 +268 36.315000 +269 36.585000 +270 36.856000 +271 37.128000 +272 37.401000 +273 37.675000 +274 37.950000 +275 38.226000 +276 38.503000 +277 38.781000 +278 39.060000 +279 39.340000 +280 39.621000 +281 39.903000 +282 40.186000 +283 40.470000 +284 40.755000 +285 41.041000 +286 41.328000 +287 41.616000 +288 41.905000 +289 42.195000 +290 42.486000 +291 42.778000 +292 43.071000 +293 43.365000 +294 43.660000 +295 43.956000 +296 44.253000 +297 44.551000 +298 44.850000 +299 45.150000 +300 45.451000 +301 45.753000 +302 46.056000 +303 46.360000 +304 46.665000 +305 46.971000 +306 47.278000 +307 47.586000 +308 47.895000 +309 48.205000 +310 48.516000 +311 48.828000 +312 49.141000 +313 49.455000 +314 49.770000 +315 50.086000 +316 50.403000 +317 50.721000 +318 51.040000 +319 51.360000 +320 51.681000 +321 52.003000 +322 52.326000 +323 52.650000 +324 52.975000 +325 53.301000 +326 53.628000 +327 53.956000 +328 54.285000 +329 54.615000 +330 54.946000 +331 55.278000 +332 55.611000 +333 55.945000 +334 56.280000 +335 56.616000 +336 56.953000 +337 57.291000 +338 57.630000 +339 57.970000 +340 58.311000 +341 58.653000 +342 58.996000 +343 59.340000 +344 59.685000 +345 60.031000 +346 60.378000 +347 60.726000 +348 61.075000 +349 61.425000 +350 61.776000 +351 62.128000 +352 62.481000 +353 62.835000 +354 63.190000 +355 63.546000 +356 63.903000 +357 64.261000 +358 64.620000 +359 64.980000 +360 65.341000 +361 65.703000 +362 66.066000 +363 66.430000 +364 66.795000 +365 67.161000 +366 67.528000 +367 67.896000 +368 68.265000 +369 68.635000 +370 69.006000 +371 69.378000 +372 69.751000 +373 70.125000 +374 70.500000 +375 70.876000 +376 71.253000 +377 71.631000 +378 72.010000 +379 72.390000 +380 72.771000 +381 73.153000 +382 73.536000 +383 73.920000 +384 74.305000 +385 74.691000 +386 75.078000 +387 75.466000 +388 75.855000 +389 76.245000 +390 76.636000 +391 77.028000 +392 77.421000 +393 77.815000 +394 78.210000 +395 78.606000 +396 79.003000 +397 79.401000 +398 79.800000 +399 80.200000 +400 80.599000 +401 80.997000 +402 81.394000 +403 81.790000 +404 82.185000 +405 82.579000 +406 82.972000 +407 83.364000 +408 83.755000 +409 84.145000 +410 84.534000 +411 84.922000 +412 85.309000 +413 85.695000 +414 86.080000 +415 86.464000 +416 86.847000 +417 87.229000 +418 87.610000 +419 87.990000 +420 88.369000 +421 88.747000 +422 89.124000 +423 89.500000 +424 89.875000 +425 90.249000 +426 90.622000 +427 90.994000 +428 91.365000 +429 91.735000 +430 92.104000 +431 92.472000 +432 92.839000 +433 93.205000 +434 93.570000 +435 93.934000 +436 94.297000 +437 94.659000 +438 95.020000 +439 95.380000 +440 95.739000 +441 96.097000 +442 96.454000 +443 96.810000 +444 97.165000 +445 97.519000 +446 97.872000 +447 98.224000 +448 98.575000 +449 98.925000 +450 99.274000 +451 99.622000 +452 99.969000 +453 100.315000 +454 100.660000 +455 101.004000 +456 101.347000 +457 101.689000 +458 102.030000 +459 102.370000 +460 102.709000 +461 103.047000 +462 103.384000 +463 103.720000 +464 104.055000 +465 104.389000 +466 104.722000 +467 105.054000 +468 105.385000 +469 105.715000 +470 106.044000 +471 106.372000 +472 106.699000 +473 107.025000 +474 107.350000 +475 107.674000 +476 107.997000 +477 108.319000 +478 108.640000 +479 108.960000 +480 109.279000 +481 109.597000 +482 109.914000 +483 110.230000 +484 110.545000 +485 110.859000 +486 111.172000 +487 111.484000 +488 111.795000 +489 112.105000 +490 112.414000 +491 112.722000 +492 113.029000 +493 113.335000 +494 113.640000 +495 113.944000 +496 114.247000 +497 114.549000 +498 114.850000 +499 115.150000 +500 115.449000 +501 115.747000 +502 116.044000 +503 116.340000 +504 116.635000 +505 116.929000 +506 117.222000 +507 117.514000 +508 117.805000 +509 118.095000 +510 118.384000 +511 118.672000 +512 118.959000 +513 119.245000 +514 119.530000 +515 119.814000 +516 120.097000 +517 120.379000 +518 120.660000 +519 120.940000 +520 121.219000 +521 121.497000 +522 121.774000 +523 122.050000 +524 122.325000 +525 122.599000 +526 122.872000 +527 123.144000 +528 123.415000 +529 123.685000 +530 123.954000 +531 124.222000 +532 124.489000 +533 124.755000 +534 125.020000 +535 125.284000 +536 125.547000 +537 125.809000 +538 126.070000 +539 126.330000 +540 126.589000 +541 126.847000 +542 127.104000 +543 127.360000 +544 127.615000 +545 127.869000 +546 128.122000 +547 128.374000 +548 128.625000 +549 128.875000 +550 129.124000 +551 129.372000 +552 129.619000 +553 129.865000 +554 130.110000 +555 130.354000 +556 130.597000 +557 130.839000 +558 131.080000 +559 131.320000 +560 131.559000 +561 131.797000 +562 132.034000 +563 132.270000 +564 132.505000 +565 132.739000 +566 132.972000 +567 133.204000 +568 133.435000 +569 133.665000 +570 133.894000 +571 134.122000 +572 134.349000 +573 134.575000 +574 134.800000 +575 135.024000 +576 135.247000 +577 135.469000 +578 135.690000 +579 135.910000 +580 136.129000 +581 136.347000 +582 136.564000 +583 136.780000 +584 136.995000 +585 137.209000 +586 137.422000 +587 137.634000 +588 137.845000 +589 138.055000 +590 138.264000 +591 138.472000 +592 138.679000 +593 138.885000 +594 139.090000 +595 139.294000 +596 139.497000 +597 139.699000 +598 139.900000 +599 140.100000 +600 140.299000 +601 140.497000 +602 140.694000 +603 140.890000 +604 141.085000 +605 141.279000 +606 141.472000 +607 141.664000 +608 141.855000 +609 142.045000 +610 142.234000 +611 142.422000 +612 142.609000 +613 142.795000 +614 142.980000 +615 143.164000 +616 143.347000 +617 143.529000 +618 143.710000 +619 143.890000 +620 144.069000 +621 144.247000 +622 144.424000 +623 144.600000 +624 144.775000 +625 144.949000 +626 145.122000 +627 145.294000 +628 145.465000 +629 145.635000 +630 145.804000 +631 145.972000 +632 146.139000 +633 146.305000 +634 146.470000 +635 146.634000 +636 146.797000 +637 146.959000 +638 147.120000 +639 147.280000 +640 147.439000 +641 147.597000 +642 147.754000 +643 147.910000 +644 148.065000 +645 148.219000 +646 148.372000 +647 148.524000 +648 148.675000 +649 148.825000 +650 148.974000 +651 149.122000 +652 149.269000 +653 149.415000 +654 149.560000 +655 149.704000 +656 149.847000 +657 149.989000 +658 150.130000 +659 150.270000 +660 150.409000 +661 150.547000 +662 150.684000 +663 150.820000 +664 150.955000 +665 151.089000 +666 151.222000 +667 151.354000 +668 151.485000 +669 151.615000 +670 151.744000 +671 151.872000 +672 151.999000 +673 152.125000 +674 152.250000 +675 152.374000 +676 152.497000 +677 152.619000 +678 152.740000 +679 152.860000 +680 152.979000 +681 153.097000 +682 153.214000 +683 153.330000 +684 153.445000 +685 153.559000 +686 153.672000 +687 153.784000 +688 153.895000 +689 154.005000 +690 154.114000 +691 154.222000 +692 154.329000 +693 154.435000 +694 154.540000 +695 154.644000 +696 154.747000 +697 154.849000 +698 154.950000 +699 155.050000 +700 155.149000 +701 155.247000 +702 155.344000 +703 155.440000 +704 155.535000 +705 155.629000 +706 155.722000 +707 155.814000 +708 155.905000 +709 155.995000 +710 156.084000 +711 156.172000 +712 156.259000 +713 156.345000 +714 156.430000 +715 156.514000 +716 156.597000 +717 156.679000 +718 156.760000 +719 156.840000 +720 156.919000 +721 156.997000 +722 157.074000 +723 157.150000 +724 157.225000 +725 157.299000 +726 157.372000 +727 157.444000 +728 157.515000 +729 157.585000 +730 157.654000 +731 157.722000 +732 157.789000 +733 157.855000 +734 157.920000 +735 157.984000 +736 158.047000 +737 158.109000 +738 158.170000 +739 158.230000 +740 158.289000 +741 158.347000 +742 158.404000 +743 158.460000 +744 158.515000 +745 158.569000 +746 158.622000 +747 158.674000 +748 158.725000 +749 158.775000 +750 158.824000 +751 158.872000 +752 158.919000 +753 158.965000 +754 159.010000 +755 159.054000 +756 159.097000 +757 159.139000 +758 159.180000 +759 159.220000 +760 159.259000 +761 159.297000 +762 159.334000 +763 159.370000 +764 159.405000 +765 159.439000 +766 159.472000 +767 159.504000 +768 159.535000 +769 159.565000 +770 159.594000 +771 159.622000 +772 159.649000 +773 159.675000 +774 159.700000 +775 159.724000 +776 159.747000 +777 159.769000 +778 159.790000 +779 159.810000 +780 159.829000 +781 159.847000 +782 159.864000 +783 159.880000 +784 159.895000 +785 159.909000 +786 159.922000 +787 159.934000 +788 159.945000 +789 159.955000 +790 159.964000 +791 159.972000 +792 159.979000 +793 159.985000 +794 159.990000 +795 159.994000 +796 159.997000 +797 159.999000 +798 160.000000 +799 160.000000 diff --git a/tests/limit3.1/test.hal b/tests/limit3v2/limit-accel-and-max/test.hal similarity index 66% rename from tests/limit3.1/test.hal rename to tests/limit3v2/limit-accel-and-max/test.hal index 8bf185701e..cf7b20f4e8 100644 --- a/tests/limit3.1/test.hal +++ b/tests/limit3v2/limit-accel-and-max/test.hal @@ -1,12 +1,12 @@ setexact_for_test_suite_only loadrt sampler cfg=f depth=4096 -loadusr -Wn halsampler halsampler -N halsampler -t -n 800 - loadrt limit3 #loadrt blocks limit3=1 -newthread t 1000000 fp +loadrt threads name1=t period1=1000000 setp limit3.0.maxv 500.000000 +setp limit3.0.maxa 1000 +setp limit3.0.max 160 net n0 limit3.0.out sampler.0.pin.0 @@ -16,4 +16,4 @@ addf sampler.0 t setp limit3.0.in 500 start -waitusr -i halsampler +loadusr -w halsampler -t -n 800 diff --git a/tests/limit3.1/expected b/tests/limit3v2/limit-max-velocity/expected similarity index 100% rename from tests/limit3.1/expected rename to tests/limit3v2/limit-max-velocity/expected diff --git a/tests/limit3v2/limit-max-velocity/test.hal b/tests/limit3v2/limit-max-velocity/test.hal new file mode 100644 index 0000000000..12f69b5d22 --- /dev/null +++ b/tests/limit3v2/limit-max-velocity/test.hal @@ -0,0 +1,17 @@ +setexact_for_test_suite_only + +loadrt sampler cfg=f depth=4096 +#loadrt limit3 +loadrt limit3 +loadrt threads name1=t period1=1000000 +setp limit3.0.maxv 500.000000 + +net n0 limit3.0.out sampler.0.pin.0 + +addf limit3.0 t +addf sampler.0 t + +setp limit3.0.in 500 + +start +loadusr -w halsampler -t -n 800 diff --git a/tests/limit3v2/lock-on-input-and-limits/README b/tests/limit3v2/lock-on-input-and-limits/README new file mode 100644 index 0000000000..a96b098024 --- /dev/null +++ b/tests/limit3v2/lock-on-input-and-limits/README @@ -0,0 +1,4 @@ +This test runs a triangle waveform clipped by max/min limits. + +This is an idealized case that will show weaknesses in locking onto +the input and limits. diff --git a/tests/limit3v2/lock-on-input-and-limits/checkresult b/tests/limit3v2/lock-on-input-and-limits/checkresult new file mode 120000 index 0000000000..e826ab2e5b --- /dev/null +++ b/tests/limit3v2/lock-on-input-and-limits/checkresult @@ -0,0 +1 @@ +../checkresult \ No newline at end of file diff --git a/tests/limit3v2/lock-on-input-and-limits/test.hal b/tests/limit3v2/lock-on-input-and-limits/test.hal new file mode 100644 index 0000000000..e6ce3a0dc9 --- /dev/null +++ b/tests/limit3v2/lock-on-input-and-limits/test.hal @@ -0,0 +1,38 @@ +setexact_for_test_suite_only + +#loadrt sampler cfg=fffffffu depth=1700 +loadrt sampler cfg=ffff depth=3200 + +loadrt limit3 +setp limit3.0.min -50 +setp limit3.0.max 50 +setp limit3.0.maxv 4000 +setp limit3.0.maxa 10000 + +loadrt siggen +setp siggen.0.amplitude 100 + +net in => limit3.0.in +net in => sampler.0.pin.0 +net in <= siggen.0.triangle + +net out <= limit3.0.out +net out => sampler.0.pin.1 + +loadrt ddt names=vel,acc +net out => vel.in +net vel <= vel.out => sampler.0.pin.2 => acc.in +net acc <= acc.out => sampler.0.pin.3 + +loadrt threads name1=t period1=1000000 + +addf sampler.0 t +addf siggen.0.update t +addf limit3.0 t +addf vel t +addf acc t + +start + +loadusr -w halsampler -t -n 800 +#loadusr -w halscope diff --git a/tests/limit3v2/min-max-overshoot/README b/tests/limit3v2/min-max-overshoot/README new file mode 100644 index 0000000000..d5f661ab21 --- /dev/null +++ b/tests/limit3v2/min-max-overshoot/README @@ -0,0 +1,4 @@ +This test reproduces the everyday overshoot/undershoot described in +github issue #240: + + https://github.com/LinuxCNC/linuxcnc/issues/240 diff --git a/tests/limit3v2/min-max-overshoot/checkresult b/tests/limit3v2/min-max-overshoot/checkresult new file mode 120000 index 0000000000..e826ab2e5b --- /dev/null +++ b/tests/limit3v2/min-max-overshoot/checkresult @@ -0,0 +1 @@ +../checkresult \ No newline at end of file diff --git a/tests/limit3v2/min-max-overshoot/test.hal b/tests/limit3v2/min-max-overshoot/test.hal new file mode 100644 index 0000000000..c56b360bc3 --- /dev/null +++ b/tests/limit3v2/min-max-overshoot/test.hal @@ -0,0 +1,36 @@ +setexact_for_test_suite_only + +loadrt sampler cfg=ffff depth=3200 + +loadrt limit3 +setp limit3.0.min -50 +setp limit3.0.max 50 +setp limit3.0.maxv 4000 +setp limit3.0.maxa 10000 + +loadrt siggen +setp siggen.0.amplitude 100 + +net in <= siggen.0.sine +net in => limit3.0.in +net in => sampler.0.pin.0 + +net out <= limit3.0.out +net out => sampler.0.pin.1 + +loadrt ddt names=vel,acc +net out => vel.in +net vel <= vel.out => sampler.0.pin.2 => acc.in +net acc <= acc.out => sampler.0.pin.3 + +loadrt threads name1=t period1=1000000 + +addf siggen.0.update t +addf limit3.0 t +addf vel t +addf acc t +addf sampler.0 t + +start + +loadusr -w halsampler -t -n 800 diff --git a/tests/limit3v2/runaway/README b/tests/limit3v2/runaway/README new file mode 100644 index 0000000000..1a5912f07a --- /dev/null +++ b/tests/limit3v2/runaway/README @@ -0,0 +1,6 @@ +This test reproduces the runaway problem described in github issue #240: + + https://github.com/LinuxCNC/linuxcnc/issues/240 + +The input is a sine wave (sampled from siggen), amplitude 100, that is +abruptly cut off a -42, on the way down on the first cycle. diff --git a/tests/limit3v2/runaway/checkresult b/tests/limit3v2/runaway/checkresult new file mode 120000 index 0000000000..e826ab2e5b --- /dev/null +++ b/tests/limit3v2/runaway/checkresult @@ -0,0 +1 @@ +../checkresult \ No newline at end of file diff --git a/tests/limit3v2/runaway/input b/tests/limit3v2/runaway/input new file mode 100644 index 0000000000..71361d56bf --- /dev/null +++ b/tests/limit3v2/runaway/input @@ -0,0 +1,569 @@ +0.628314 +1.256604 +1.884844 +2.513010 +3.141076 +3.769018 +4.396812 +5.024432 +5.651854 +6.279052 +6.906003 +7.532681 +8.159061 +8.785120 +9.410831 +10.036172 +10.661116 +11.285639 +11.909716 +12.533324 +13.156436 +13.779029 +14.401078 +15.022559 +15.643447 +16.263717 +16.883345 +17.502306 +18.120577 +18.738132 +19.354947 +19.970998 +20.586261 +21.200711 +21.814324 +22.427076 +23.038943 +23.649900 +24.259923 +24.868989 +25.477073 +26.084151 +26.690199 +27.295194 +27.899111 +28.501927 +29.103617 +29.704159 +30.303527 +30.901700 +31.498652 +32.094361 +32.688803 +33.281955 +33.873793 +34.464293 +35.053433 +35.641188 +36.227537 +36.812456 +37.395921 +37.977910 +38.558400 +39.137367 +39.714790 +40.290644 +40.864908 +41.437559 +42.008573 +42.577930 +43.145605 +43.711577 +44.275824 +44.838322 +45.399051 +45.957987 +46.515108 +47.070394 +47.623821 +48.175368 +48.725013 +49.272735 +49.818511 +50.362321 +50.904142 +51.443954 +51.981735 +52.517464 +53.051119 +53.582680 +54.112126 +54.639435 +55.164588 +55.687562 +56.208339 +56.726896 +57.243213 +57.757271 +58.269049 +58.778526 +59.285683 +59.790499 +60.292955 +60.793031 +61.290706 +61.785962 +62.278779 +62.769137 +63.257017 +63.742400 +64.225266 +64.705597 +65.183373 +65.658576 +66.131187 +66.601188 +67.068558 +67.533282 +67.995339 +68.454711 +68.911382 +69.365331 +69.816543 +70.264998 +70.710679 +71.153569 +71.593649 +72.030903 +72.465314 +72.896864 +73.325535 +73.751313 +74.174178 +74.594115 +75.011108 +75.425139 +75.836192 +76.244252 +76.649302 +77.051325 +77.450307 +77.846231 +78.239082 +78.628844 +79.015502 +79.399041 +79.779445 +80.156699 +80.530789 +80.901700 +81.269417 +81.633926 +81.995212 +82.353261 +82.708058 +83.059591 +83.407844 +83.752805 +84.094459 +84.432793 +84.767794 +85.099449 +85.427744 +85.752666 +86.074203 +86.392342 +86.707071 +87.018376 +87.326246 +87.630669 +87.931632 +88.229123 +88.523132 +88.813646 +89.100653 +89.384143 +89.664104 +89.940526 +90.213397 +90.482706 +90.748443 +91.010598 +91.269159 +91.524118 +91.775463 +92.023185 +92.267275 +92.507721 +92.744516 +92.977649 +93.207112 +93.432895 +93.654989 +93.873386 +94.088078 +94.299054 +94.506308 +94.709831 +94.909615 +95.105652 +95.297935 +95.486455 +95.671206 +95.852179 +96.029369 +96.202768 +96.372368 +96.538164 +96.700149 +96.858317 +97.012660 +97.163174 +97.309852 +97.452688 +97.591677 +97.726813 +97.858091 +97.985506 +98.109052 +98.228725 +98.344521 +98.456434 +98.564460 +98.668595 +98.768834 +98.865175 +98.957612 +99.046143 +99.130763 +99.211470 +99.288261 +99.361131 +99.430079 +99.495102 +99.556197 +99.613361 +99.666593 +99.715890 +99.761251 +99.802673 +99.840155 +99.873696 +99.903294 +99.928947 +99.950656 +99.968419 +99.982235 +99.992104 +99.998026 +100.000000 +99.998026 +99.992104 +99.982235 +99.968419 +99.950656 +99.928947 +99.903293 +99.873696 +99.840155 +99.802673 +99.761250 +99.715890 +99.666593 +99.613361 +99.556196 +99.495101 +99.430079 +99.361131 +99.288260 +99.211470 +99.130763 +99.046142 +98.957611 +98.865174 +98.768834 +98.668594 +98.564459 +98.456433 +98.344520 +98.228725 +98.109051 +97.985505 +97.858090 +97.726812 +97.591676 +97.452687 +97.309850 +97.163173 +97.012659 +96.858315 +96.700148 +96.538163 +96.372367 +96.202766 +96.029368 +95.852178 +95.671204 +95.486454 +95.297933 +95.105651 +94.909614 +94.709830 +94.506307 +94.299053 +94.088076 +93.873385 +93.654988 +93.432893 +93.207110 +92.977648 +92.744514 +92.507720 +92.267273 +92.023184 +91.775461 +91.524116 +91.269158 +91.010596 +90.748441 +90.482704 +90.213395 +89.940524 +89.664102 +89.384141 +89.100651 +88.813643 +88.523130 +88.229121 +87.931630 +87.630667 +87.326244 +87.018374 +86.707069 +86.392340 +86.074201 +85.752664 +85.427742 +85.099447 +84.767792 +84.432791 +84.094457 +83.752802 +83.407842 +83.059588 +82.708056 +82.353258 +81.995209 +81.633923 +81.269415 +80.901698 +80.530787 +80.156697 +79.779442 +79.399038 +79.015499 +78.628841 +78.239079 +77.846228 +77.450304 +77.051322 +76.649299 +76.244249 +75.836189 +75.425136 +75.011105 +74.594112 +74.174175 +73.751309 +73.325532 +72.896860 +72.465311 +72.030900 +71.593646 +71.153565 +70.710676 +70.264994 +69.816539 +69.365328 +68.911378 +68.454708 +67.995335 +67.533278 +67.068555 +66.601184 +66.131184 +65.658573 +65.183370 +64.705593 +64.225263 +63.742396 +63.257013 +62.769133 +62.278775 +61.785958 +61.290702 +60.793027 +60.292951 +59.790495 +59.285679 +58.778522 +58.269045 +57.757267 +57.243209 +56.726892 +56.208335 +55.687559 +55.164584 +54.639432 +54.112122 +53.582676 +53.051115 +52.517460 +51.981731 +51.443950 +50.904138 +50.362317 +49.818507 +49.272731 +48.725009 +48.175364 +47.623817 +47.070390 +46.515104 +45.957983 +45.399046 +44.838318 +44.275820 +43.711573 +43.145601 +42.577926 +42.008569 +41.437554 +40.864904 +40.290640 +39.714785 +39.137363 +38.558395 +37.977906 +37.395917 +36.812451 +36.227533 +35.641184 +35.053428 +34.464288 +33.873788 +33.281951 +32.688799 +32.094357 +31.498648 +30.901695 +30.303523 +29.704154 +29.103613 +28.501922 +27.899107 +27.295189 +26.690195 +26.084147 +25.477068 +24.868985 +24.259919 +23.649896 +23.038938 +22.427072 +21.814320 +21.200707 +20.586257 +19.970994 +19.354943 +18.738127 +18.120572 +17.502302 +16.883340 +16.263712 +15.643442 +15.022555 +14.401074 +13.779025 +13.156432 +12.533319 +11.909712 +11.285634 +10.661111 +10.036167 +9.410827 +8.785115 +8.159057 +7.532676 +6.905998 +6.279047 +5.651849 +5.024427 +4.396807 +3.769014 +3.141071 +2.513005 +1.884839 +1.256599 +0.628310 +-0.000005 +-0.628319 +-1.256609 +-1.884849 +-2.513014 +-3.141081 +-3.769023 +-4.396817 +-5.024437 +-5.651858 +-6.279057 +-6.906007 +-7.532685 +-8.159066 +-8.785124 +-9.410836 +-10.036176 +-10.661120 +-11.285643 +-11.909721 +-12.533328 +-13.156441 +-13.779034 +-14.401083 +-15.022564 +-15.643451 +-16.263721 +-16.883349 +-17.502311 +-18.120581 +-18.738136 +-19.354952 +-19.971003 +-20.586266 +-21.200716 +-21.814329 +-22.427081 +-23.038948 +-23.649905 +-24.259928 +-24.868994 +-25.477077 +-26.084155 +-26.690204 +-27.295198 +-27.899115 +-28.501931 +-29.103622 +-29.704163 +-30.303532 +-30.901704 +-31.498657 +-32.094366 +-32.688808 +-33.281959 +-33.873797 +-34.464297 +-35.053437 +-35.641193 +-36.227542 +-36.812460 +-37.395925 +-37.977914 +-38.558404 +-39.137372 +-39.714794 +-40.290648 +-40.864912 +-41.437563 +-42.008578 diff --git a/tests/limit3v2/runaway/test.hal b/tests/limit3v2/runaway/test.hal new file mode 100644 index 0000000000..07dbf6e778 --- /dev/null +++ b/tests/limit3v2/runaway/test.hal @@ -0,0 +1,34 @@ +setexact_for_test_suite_only + +loadrt sampler cfg=ffff depth=3200 +loadrt streamer cfg=f depth=4096 + +loadrt limit3 +setp limit3.0.min -50 +setp limit3.0.max 50 +setp limit3.0.maxv 4000 +setp limit3.0.maxa 10000 + +net in <= streamer.0.pin.0 +net in => limit3.0.in +net in => sampler.0.pin.0 + +net out <= limit3.0.out +net out => sampler.0.pin.1 + +loadrt ddt names=vel,acc +net out => vel.in +net vel <= vel.out => sampler.0.pin.2 => acc.in +net acc <= acc.out => sampler.0.pin.3 + +loadrt threads name1=t period1=1000000 + +addf streamer.0 t +addf limit3.0 t +addf vel t +addf acc t +addf sampler.0 t +start + +loadusr halstreamer input +loadusr -w halsampler -t -n 1500 diff --git a/tests/limit3v2/sunny-day/README b/tests/limit3v2/sunny-day/README new file mode 100644 index 0000000000..d2534f805f --- /dev/null +++ b/tests/limit3v2/sunny-day/README @@ -0,0 +1,4 @@ +This test exposes limit3 to an input signal that it is capable of +following perfectly (but just barely), and verifies that the output +follows the input very closely, while not violating position, velocity, +and acceleration constraints. diff --git a/tests/limit3v2/sunny-day/checkresult b/tests/limit3v2/sunny-day/checkresult new file mode 100755 index 0000000000..dd00770d24 --- /dev/null +++ b/tests/limit3v2/sunny-day/checkresult @@ -0,0 +1,57 @@ +#!/usr/bin/python2 + +import sys +import math + +max_value = 0.0 +min_value = -100.0 + +max_vel = 315 +max_accel = 1975 + +result_filename = sys.argv[1] +result_file = open(result_filename, 'r') + +retval = 0 + +for line in result_file.readlines(): + (line, in_value, in_vel, in_accel, out_value, out_vel, out_accel) = line.split() + in_value = float(in_value) + in_vel = float(in_vel) + in_accel = float(in_accel) + out_value = float(out_value) + out_vel = float(out_vel) + out_accel = float(out_accel) + + + # + # constraints + # + + if out_value > max_value: + print "max=%.3f, out=%.3f, position violation on line %s" % (max_value, out_value, line) + retval = 1 + + if out_value < min_value: + print "min=%.3f, out=%.3f, position violation on line %s" % (min_value, out_value, line) + retval = 1 + + if math.fabs(out_vel) > max_vel: + print "max_vel=%.3f, out_vel=%.3f, velocity violation on line %s" % (max_vel, out_vel, line) + retval = 1 + + if math.fabs(out_accel) > max_accel: + print "max_accel=%.3f, out_accel=%.3f, acceleration violation on line %s" % (max_accel, out_accel, line) + retval = 1 + + + # + # input -> output following + # + + error = math.fabs(in_value - out_value) + if error > 0.0: + print "input=%.6f, output=%.6f, error=%.6f, threshold=%.6f, following failure on line %s" % (in_value, out_value, error, threshold, line) + retval = 1 + +sys.exit(retval) diff --git a/tests/limit3v2/sunny-day/test.hal b/tests/limit3v2/sunny-day/test.hal new file mode 100644 index 0000000000..05d57dd3e4 --- /dev/null +++ b/tests/limit3v2/sunny-day/test.hal @@ -0,0 +1,63 @@ +setexact_for_test_suite_only + +loadrt limit3 + +# These pos/vel/accel limits are just a hair above the limits of the +# input sine wave. +setp limit3.0.min -150 +setp limit3.0.max 50 +setp limit3.0.maxv 630 +setp limit3.0.maxa 4000 + + +loadrt siggen +setp siggen.0.amplitude 50 +setp siggen.0.offset -50 + + +loadrt ddt names=ddt.in-accel,ddt.in-vel,ddt.out-accel,ddt.out-vel + + +loadrt sampler depth=2000 cfg=ffffff + + +# We use the cosine signal as the input so that the velocity and +# acceleration start out at 0, and we offset it by the negative of the +# amplitude so that position start out at 0 too. +net input <= siggen.0.cosine +net input => limit3.0.in +net input => ddt.in-vel.in +net input => sampler.0.pin.0 + +net in-vel <= ddt.in-vel.out +net in-vel => ddt.in-accel.in +net in-vel => sampler.0.pin.1 + +net in-accel <= ddt.in-accel.out +net in-accel => sampler.0.pin.2 + +net output <= limit3.0.out +net output => ddt.out-vel.in +net output => sampler.0.pin.3 + +net out-vel <= ddt.out-vel.out +net out-vel => ddt.out-accel.in +net out-vel => sampler.0.pin.4 + +net out-accel <= ddt.out-accel.out +net out-accel => sampler.0.pin.5 + + +loadrt threads name1=t period1=1000000 fp1=1 + +addf siggen.0.update t +addf limit3.0 t +addf ddt.in-vel t +addf ddt.in-accel t +addf ddt.out-vel t +addf ddt.out-accel t +addf sampler.0 t + +start + +loadusr -w halsampler -t -n 4000 From 2b1a83aa107666d0de062aef3abe4d16d25496fc Mon Sep 17 00:00:00 2001 From: Evgeny Sabelskiy Date: Tue, 8 Jan 2019 21:31:22 +0300 Subject: [PATCH 387/516] add dependency lib for /usr/bin/pncconf --- pkg/rpm/machinekit.spec | 2 +- pkg/rpm/machinekit_src_patch_0.1.1.patch | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/rpm/machinekit.spec b/pkg/rpm/machinekit.spec index f3ce03f433..7222c49308 100644 --- a/pkg/rpm/machinekit.spec +++ b/pkg/rpm/machinekit.spec @@ -31,7 +31,7 @@ Requires: bwidget tkimg Requires: uriparser openssl libuuid libmodbus libusb glib2 Requires: gtk2 tcl tcl-tclreadline tk readline libXaw python2-tkinter mesa-libGLU Requires: python2-simplejson python2-numpy python2-xlib pygtkglext python2-configobj python-avahi -Requires: pygtk2-libglade gnome-python2 python2-protobuf >= 2.4.1 +Requires: pygtk2-libglade gnome-python2 gnome-python2-gnome python2-protobuf >= 2.4.1 Requires: python2-Cython python2-pyftpdlib boost-python2 python-xdot python2-pydot Requires: libtirpc diff --git a/pkg/rpm/machinekit_src_patch_0.1.1.patch b/pkg/rpm/machinekit_src_patch_0.1.1.patch index 1befc7b289..4dfa66268c 100644 --- a/pkg/rpm/machinekit_src_patch_0.1.1.patch +++ b/pkg/rpm/machinekit_src_patch_0.1.1.patch @@ -116,7 +116,7 @@ diff -ru machinekit/src/libnml/cms/Submakefile machinekit-rpm/src/libnml/cms/Sub +INCLUDES += libnml/cms /usr/include/tirpc ../include/%.h: ./libnml/cms/%.h - cp $^ $@ + $(ECHO) Copying header file $@ diff -ru machinekit/src/Makefile machinekit-rpm/src/Makefile --- machinekit/src/Makefile 2018-12-04 23:01:20.000000000 +0300 +++ machinekit-rpm/src/Makefile 2018-12-07 16:33:12.354877734 +0300 From 6a65d84e17103e422e4f83213799ffd486647b04 Mon Sep 17 00:00:00 2001 From: alkabal <33371787+alkabal@users.noreply.github.com> Date: Thu, 10 Jan 2019 09:13:27 +0100 Subject: [PATCH 388/516] revert change 1434 --- src/hal/user_comps/xhc-whb04b-6/hal.cc | 98 ---------------------- src/hal/user_comps/xhc-whb04b-6/hal.h | 29 ------- src/hal/user_comps/xhc-whb04b-6/pendant.cc | 41 +++------ 3 files changed, 10 insertions(+), 158 deletions(-) diff --git a/src/hal/user_comps/xhc-whb04b-6/hal.cc b/src/hal/user_comps/xhc-whb04b-6/hal.cc index a2a272d10a..72d4437ff7 100644 --- a/src/hal/user_comps/xhc-whb04b-6/hal.cc +++ b/src/hal/user_comps/xhc-whb04b-6/hal.cc @@ -98,10 +98,6 @@ Hal::~Hal() return; } - freeSimulatedPin((void**)(&memory->in.floodIsOn)); - freeSimulatedPin((void**)(&memory->in.mistIsOn)); - freeSimulatedPin((void**)(&memory->in.lubeIsOn)); - freeSimulatedPin((void**)(&memory->in.axisXPosition)); freeSimulatedPin((void**)(&memory->in.axisYPosition)); freeSimulatedPin((void**)(&memory->in.axisZPosition)); @@ -158,13 +154,6 @@ Hal::~Hal() freeSimulatedPin((void**)(&memory->out.button_pin[idx])); } - freeSimulatedPin((void**)(&memory->out.floodStop)); - freeSimulatedPin((void**)(&memory->out.floodStart)); - freeSimulatedPin((void**)(&memory->out.mistStop)); - freeSimulatedPin((void**)(&memory->out.mistStart)); - freeSimulatedPin((void**)(&memory->out.lubeStop)); - freeSimulatedPin((void**)(&memory->out.lubeStart)); - freeSimulatedPin((void**)(&memory->out.axisXJogCounts)); freeSimulatedPin((void**)(&memory->out.axisYJogCounts)); freeSimulatedPin((void**)(&memory->out.axisZJogCounts)); @@ -491,18 +480,6 @@ void Hal::init(const MetaButtonCodes* metaButtons, const KeyCodes& keyCodes) buttonName); } - newHalBit(HAL_IN, &(memory->in.floodIsOn), mHalCompId, "%s.halui.flood.is-on", mComponentPrefix); - newHalBit(HAL_OUT, &(memory->out.floodStop), mHalCompId, "%s.halui.flood.off", mComponentPrefix); - newHalBit(HAL_OUT, &(memory->out.floodStart), mHalCompId, "%s.halui.flood.on", mComponentPrefix); - - newHalBit(HAL_IN, &(memory->in.mistIsOn), mHalCompId, "%s.halui.mist.is-on", mComponentPrefix); - newHalBit(HAL_OUT, &(memory->out.mistStop), mHalCompId, "%s.halui.mist.off", mComponentPrefix); - newHalBit(HAL_OUT, &(memory->out.mistStart), mHalCompId, "%s.halui.mist.on", mComponentPrefix); - - newHalBit(HAL_IN, &(memory->in.lubeIsOn), mHalCompId, "%s.halui.lube.is-on", mComponentPrefix); - newHalBit(HAL_OUT, &(memory->out.lubeStop), mHalCompId, "%s.halui.lube.off", mComponentPrefix); - newHalBit(HAL_OUT, &(memory->out.lubeStart), mHalCompId, "%s.halui.lube.on", mComponentPrefix); - newHalSigned32(HAL_OUT, &(memory->out.axisXJogCounts), mHalCompId, "%s.axis.0.jog-counts", mComponentPrefix); newHalBit(HAL_OUT, &(memory->out.axisXJogEnable), mHalCompId, "%s.axis.0.jog-enable", mComponentPrefix); newHalFloat(HAL_OUT, &(memory->out.axisXJogScale), mHalCompId, "%s.axis.0.jog-scale", mComponentPrefix); @@ -1208,81 +1185,6 @@ void Hal::toggleSpindleOnOff(bool isButtonPressed) // ---------------------------------------------------------------------- -void Hal::toggleFloodOnOff(bool isButtonPressed) -{ - if (isButtonPressed) - { - if (*memory->in.floodIsOn) - { - // on flood stop - *memory->out.floodStop = true; - } - else - { - // on flood start - *memory->out.floodStart = true; - } - } - else - { - // on button released - *memory->out.floodStop = false; - *memory->out.floodStart = false; - } -} - -// ---------------------------------------------------------------------- - -void Hal::toggleMistOnOff(bool isButtonPressed) -{ - if (isButtonPressed) - { - if (*memory->in.mistIsOn) - { - // on mist stop - *memory->out.mistStop = true; - } - else - { - // on mist start - *memory->out.mistStart = true; - } - } - else - { - // on button released - *memory->out.mistStop = false; - *memory->out.mistStart = false; - } -} - -// ---------------------------------------------------------------------- - -void Hal::toggleLubeOnOff(bool isButtonPressed) -{ - if (isButtonPressed) - { - if (*memory->in.lubeIsOn) - { - // on lube stop - *memory->out.lubeStop = true; - } - else - { - // on lube start - *memory->out.lubeStart = true; - } - } - else - { - // on button released - *memory->out.lubeStop = false; - *memory->out.lubeStart = false; - } -} - -// ---------------------------------------------------------------------- - void Hal::setProbeZ(bool enabled) { enableMdiMode(enabled); diff --git a/src/hal/user_comps/xhc-whb04b-6/hal.h b/src/hal/user_comps/xhc-whb04b-6/hal.h index d54e10d9a7..87df465d10 100644 --- a/src/hal/user_comps/xhc-whb04b-6/hal.h +++ b/src/hal/user_comps/xhc-whb04b-6/hal.h @@ -52,14 +52,6 @@ class HalMemory struct In { public: - - //! to be connected to \ref halui.flood.is-on - hal_bit_t * floodIsOn{nullptr}; - //! to be connected to \ref halui.mist.is-on - hal_bit_t * mistIsOn{nullptr}; - //! to be connected to \ref halui.lube.is-on - hal_bit_t * lubeIsOn{nullptr}; - //! to be connected to \ref halui.axis.0.pos-feedback hal_float_t* axisXPosition{nullptr}; //! to be connected to \ref halui.axis.1.pos-feedback @@ -159,21 +151,6 @@ class HalMemory public: hal_bit_t* button_pin[64] = {0}; - //! to be connected to \ref halui.flood.off - hal_bit_t * floodStop{nullptr}; - //! to be connected to \ref halui.flood.on - hal_bit_t * floodStart{nullptr}; - - //! to be connected to \ref halui.mist.off - hal_bit_t * mistStop{nullptr}; - //! to be connected to \ref halui.mist.on - hal_bit_t * mistStart{nullptr}; - - //! to be connected to \ref halui.lube.off - hal_bit_t * lubeStop{nullptr}; - //! to be connected to \ref halui.lube.on - hal_bit_t * lubeStart{nullptr}; - //! to be connected to \ref axis.0.jog-counts hal_s32_t* axisXJogCounts{nullptr}; //! to be connected to \ref axis.1.jog-counts @@ -481,12 +458,6 @@ class Hal //! \sa setReset(bool, size_t) void toggleSpindleOnOff(bool isButtonPressed); //! \sa setReset(bool, size_t) - void toggleFloodOnOff(bool isButtonPressed); - //! \sa setReset(bool, size_t) - void toggleMistOnOff(bool isButtonPressed); - //! \sa setReset(bool, size_t) - void toggleLubeOnOff(bool isButtonPressed); - //! \sa setReset(bool, size_t) void setProbeZ(bool enabled); //! \sa setReset(bool, size_t) void setContinuousMode(bool enabled); diff --git a/src/hal/user_comps/xhc-whb04b-6/pendant.cc b/src/hal/user_comps/xhc-whb04b-6/pendant.cc index 4c387759ad..5c712e8bbe 100644 --- a/src/hal/user_comps/xhc-whb04b-6/pendant.cc +++ b/src/hal/user_comps/xhc-whb04b-6/pendant.cc @@ -1246,7 +1246,6 @@ bool Pendant::onButtonPressedEvent(const MetaButtonCodes& metaButton) } else if (metaButton == KeyCodes::Meta.macro2) { - mHal.toggleLubeOnOff(true); mHal.setMacro2(true); isHandled = true; } @@ -1293,13 +1292,11 @@ bool Pendant::onButtonPressedEvent(const MetaButtonCodes& metaButton) } else if (metaButton == KeyCodes::Meta.macro15) { - mHal.toggleFloodOnOff(true); mHal.setMacro15(true); isHandled = true; } else if (metaButton == KeyCodes::Meta.macro16) { - mHal.toggleMistOnOff(true); mHal.setMacro16(true); isHandled = true; } @@ -1411,7 +1408,6 @@ bool Pendant::onButtonReleasedEvent(const MetaButtonCodes& metaButton) } else if (metaButton == KeyCodes::Meta.macro2) { - mHal.toggleLubeOnOff(false); mHal.setMacro2(false); isHandled = true; } @@ -1458,13 +1454,11 @@ bool Pendant::onButtonReleasedEvent(const MetaButtonCodes& metaButton) } else if (metaButton == KeyCodes::Meta.macro15) { - mHal.toggleFloodOnOff(false); mHal.setMacro15(false); isHandled = true; } else if (metaButton == KeyCodes::Meta.macro16) { - mHal.toggleMistOnOff(false); mHal.setMacro16(false); isHandled = true; } @@ -1774,31 +1768,16 @@ bool Display::onButtonPressedEvent(const MetaButtonCodes& metaButton) DisplayIndicatorStepMode::StepMode::STEP); return true; } - - else if (metaButton == KeyCodes::Meta.safe_z) - { - if (mAxisPositionMethod == AxisPositionMethod::ABSOLUTE) - { - mAxisPositionMethod = AxisPositionMethod::RELATIVE; - return true; - } - else if (mAxisPositionMethod == AxisPositionMethod::RELATIVE) - { - mAxisPositionMethod = AxisPositionMethod::ABSOLUTE; - return true; - } - } - -// else if (metaButton == KeyCodes::Meta.macro5) -// { -// mAxisPositionMethod = AxisPositionMethod::ABSOLUTE; -// return true; -// } -// else if (metaButton == KeyCodes::Meta.macro7) -// { -// mAxisPositionMethod = AxisPositionMethod::RELATIVE; -// return true; -// } + else if (metaButton == KeyCodes::Meta.macro5) + { + mAxisPositionMethod = AxisPositionMethod::ABSOLUTE; + return true; + } + else if (metaButton == KeyCodes::Meta.macro7) + { + mAxisPositionMethod = AxisPositionMethod::RELATIVE; + return true; + } return false; } From e72a93eb498ca92f160d04d46f71e2b199379454 Mon Sep 17 00:00:00 2001 From: Mick Date: Sun, 13 Jan 2019 09:36:56 +0000 Subject: [PATCH 389/516] Altered version of ioControl.cc to update tool on homing ATC New version has 4 extra pins but if not used functions as previously. Allows a toolchanger or user to update the current tool in the ATC to the system, so that it is displayed in the GUI and known to NML. Signed-off-by: Mick --- src/emc/iotask/ioControl.cc | 130 +++++++++++++++++++++++++++++++++++- 1 file changed, 127 insertions(+), 3 deletions(-) diff --git a/src/emc/iotask/ioControl.cc b/src/emc/iotask/ioControl.cc index 25210c28cb..1bbdafd667 100644 --- a/src/emc/iotask/ioControl.cc +++ b/src/emc/iotask/ioControl.cc @@ -42,6 +42,21 @@ * * Derived from a work by Fred Proctor & Will Shackleford * +***************************************************************************** +* Amended by ArcEye for initialising ATCs 2011-2019 +* +* When ATC homed or otherwise when machine homed and toolchanger knows the +* current tool number, system and GUI can be updated by setting: +* iocontrol.numtools to number of tools on ATC (default is 6) +* iocontrol.currenttool to current tool number +* iocontrol.update to 1 will start the sequence +* +* iocontrol will issue a toolchange for that tool number, which will not +* result in movement because it is already there, but will update system +* and GUI as to current tool +* +****************************************************************************** +* * Author: * License: GPL Version 2 * System: Linux @@ -80,7 +95,6 @@ static char *ttcomments[CANON_POCKETS_MAX]; static int fms[CANON_POCKETS_MAX]; static int random_toolchanger = 0; - struct iocontrol_str { hal_bit_t *user_enable_out; /* output, TRUE when EMC wants stop */ hal_bit_t *emc_enable_in; /* input, TRUE on any external stop */ @@ -89,8 +103,12 @@ struct iocontrol_str { hal_bit_t *coolant_flood; /* coolant flood output pin */ hal_bit_t *lube; /* lube output pin */ hal_bit_t *lube_level; /* lube level input pin */ - - + // NEW pins to generate auto update of tool number at startup when using + // ArcEye's Triac toolchanger component + hal_s32_t *numtools; /* the number of tools on the ATC */ + hal_s32_t *currenttool; /* input to set current tool at start up */ + hal_bit_t *update; /* flag to update tool number to currenttool */ + hal_bit_t *initialised; /* flag to show if tool updated */ // the following pins are needed for toolchanging //tool-prepare hal_bit_t *tool_prepare; /* output, pin that notifies HAL it needs to prepare a tool */ @@ -259,6 +277,7 @@ static int iniLoad(const char *filename) * * Return Value: Zero on success or -1 if file not found. * + * Side Effects: Default setting used if the parameter not found in * the ini file. * @@ -469,6 +488,56 @@ int iocontrol_hal_init(void) hal_exit(comp_id); return -1; } + +////////// NEW SECTION + + // update + retval = hal_pin_bit_newf(HAL_IN, &(iocontrol_data->update), comp_id, + "iocontrol.%d.update", n); + if (retval < 0) + { + rtapi_print_msg(RTAPI_MSG_ERR, + "IOCONTROL: ERROR: iocontrol %d pin update export failed with err=%i\n",n, retval); + hal_exit(comp_id); + return -1; + } + + // initialised + retval = hal_pin_bit_newf(HAL_IN, &(iocontrol_data->initialised), comp_id, + "iocontrol.%d.initialised", n); + if (retval < 0) + { + rtapi_print_msg(RTAPI_MSG_ERR, + "IOCONTROL: ERROR: iocontrol %d pin initialised export failed with err=%i\n",n, retval); + hal_exit(comp_id); + return -1; + } + + // currenttool + retval = hal_pin_s32_newf(HAL_IN, &(iocontrol_data->currenttool), comp_id, + "iocontrol.%d.currenttool", n); + if (retval < 0) + { + rtapi_print_msg(RTAPI_MSG_ERR, + "IOCONTROL: ERROR: iocontrol %d pin currenttool export failed with err=%i\n", n, retval); + hal_exit(comp_id); + return -1; + } + + // number of tools + retval = hal_pin_s32_newf(HAL_IN, &(iocontrol_data->numtools), comp_id, "iocontrol.%d.numtools", n); + if (retval < 0) + { + rtapi_print_msg(RTAPI_MSG_ERR, + "IOCONTROL: ERROR: iocontrol %d pin numtools export failed with err=%i\n", n, retval); + hal_exit(comp_id); + return -1; + } + +//////////////////////////// + + + // tool-prepared retval = hal_pin_bit_newf(HAL_IN, &(iocontrol_data->tool_prepared), comp_id, "iocontrol.%d.tool-prepared", n); @@ -535,6 +604,21 @@ int iocontrol_hal_init(void) * * Called By: main ********************************************************************/ + +///////////NEW + +void hal_init_pins_once(void) // don't want these pins reset once initialised' +{ + *(iocontrol_data->initialised) = 0; + *(iocontrol_data->currenttool) = 0; + *(iocontrol_data->update) = 0; + *(iocontrol_data->numtools) = 6; + +} + +///////////////////////// + + void hal_init_pins(void) { *(iocontrol_data->user_enable_out)=0; /* output, FALSE when EMC wants stop */ @@ -585,6 +669,13 @@ int read_hal_inputs(void) if (oldval != emcioStatus.lube.level) { retval = 1; } + // NEW CODE + // this triggers a status update, which is the easiest way to force an tool update + // without injecting messages directly into the system + + if( ((*(iocontrol_data->currenttool)) != (*(iocontrol_data->tool_number))) && *(iocontrol_data->update) == 1) + retval = 1; + return retval; } @@ -779,6 +870,13 @@ int main(int argc, char *argv[]) emcioStatus.lube.on = 0; emcioStatus.lube.level = 1; + //////////////////////NEW + + hal_init_pins_once(); // Initialise then don't touch again in estop or whatever + + ////////////////////////// + + while (!done) { // check for inputs from HAL (updates emcioStatus) // returns 1 if any of the HAL pins changed from the last time we checked @@ -821,6 +919,32 @@ int main(int argc, char *argv[]) type = emcioCommand->type; emcioStatus.status = RCS_DONE; +///NEW ArcEye 20122011 //////////////////////////////////// +// +// Want to update Axis with the current toolnumber from the ATC +// Axis does not remember the current tool number, so once only detect from greyscale disc and number +// becomes available to modified io module. +// io triggers a toolchange state, instructing to change to the tool detected +// Because that tool is already current, this component does nothing and passes back a 'toolchanged' signal +// When io receives this it sets the appropriate NML code and axis updates the tool loaded display +////////////////////////////////////////////////////////////////////////////////////////////////////////// + + if(*(iocontrol_data->initialised) == 0) // only do this once + { + if((*(iocontrol_data->currenttool) > 0) && (*(iocontrol_data->currenttool) < *(iocontrol_data->numtools))) + { // if it contains a valid number + *(iocontrol_data->tool_prepare) = 1; + *(iocontrol_data->tool_prep_pocket) = *(iocontrol_data->currenttool); + *(iocontrol_data->tool_prep_number) = *(iocontrol_data->currenttool); + *(iocontrol_data->tool_number) = *(iocontrol_data->currenttool); + *(iocontrol_data->tool_change) = 1; + *(iocontrol_data->initialised) = 1; + emcioStatus.tool.toolInSpindle = *(iocontrol_data->currenttool); + reload_tool_number(emcioStatus.tool.toolInSpindle); + } + } +/////////////////////////////////////////////// + switch (type) { case 0: break; From 5b232c18a0ca426f219b6d0eee64c37c9b98a7be Mon Sep 17 00:00:00 2001 From: Mick Date: Thu, 10 Jan 2019 16:21:26 +0000 Subject: [PATCH 390/516] Ensure machinekit.ini has unique MKUUID in RIP builds If $BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini exists with a unique (non-default) UUID, use that, otherwise insert unique one. If it does not exist, create in normal way but insert unique uuid. Signed-off-by: Mick --- scripts/fix-uuid | 24 ++++++++++++++++++++++++ scripts/machinekit.ini.tmpl.in | 8 ++++++-- src/configure.ac | 18 +++++++++++------- 3 files changed, 41 insertions(+), 9 deletions(-) create mode 100755 scripts/fix-uuid diff --git a/scripts/fix-uuid b/scripts/fix-uuid new file mode 100755 index 0000000000..efb44c877d --- /dev/null +++ b/scripts/fix-uuid @@ -0,0 +1,24 @@ +# !/bin/bash + +if [ "$#" -lt 2 ]; then + echo "fix-uuid requires 2 args, an inifile path and a new MKUUID" + exit -1 +else + INIFILE=$1 + NEWUUID=$2 +fi + +# check machinekit.ini and if it contains old uuid, replace with +# new one from command line + +if [ -f $INIFILE ]; then + LINE=$(grep -F "MKUUID=" $INIFILE) ; + UUID=$(echo "$LINE" | cut -c 8-) ; + # debug echo "LINE = $LINE, NEWUUID = $NEWUUID, UUID = $UUID" ; + if [[ "$UUID" == "a42c8c6b-4025-4f83-ba28-dad21114744a" ]]; then + echo "Old value in $INIFILE replaced with new MKUUID $NEWUUID" + sed -i "s|^MKUUID=.*|MKUUID=$NEWUUID|" $INIFILE + fi +else + echo "Inifile $INIFILE not found" +fi diff --git a/scripts/machinekit.ini.tmpl.in b/scripts/machinekit.ini.tmpl.in index 789deeda88..9fe14d713d 100644 --- a/scripts/machinekit.ini.tmpl.in +++ b/scripts/machinekit.ini.tmpl.in @@ -13,8 +13,12 @@ # use this MKUUID value as a unique key. # # All MKUUID's must be different, so if there are several Machinekit instances -# running on a LAN, there might be collisions -# hence, change this UUID by using the output of 'uuidgen': +# running on a LAN, there might be collisions hence this UUID should always differ +# from the default in scripts/machinekit.ini.tmpl. +# You can alter it yourself with the output from uuidgen if required. +# +# Should you wish to retain the same MKUUID after repo cleans and rebuilds +# keep a backup copy of the file and substitute it as required. MKUUID=a42c8c6b-4025-4f83-ba28-dad21114744a # -------------- enabling remote operation ----------------- diff --git a/src/configure.ac b/src/configure.ac index 356159d1b2..bece09409f 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -3128,18 +3128,22 @@ AC_CONFIG_FILES(machinekitcfg.py-tmp) AC_CONFIG_FILES(../scripts/machinekit.ini.tmpl) AC_OUTPUT -# if there is no machinekit.ini file, use -# the autogenerated one; else dont touch it as the user might have -# adapted it already -AC_MSG_CHECKING(if $BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini exists ) +# if there is no machinekit.ini file, use the autogenerated one; +# else just ensure the MKUUID is unique but dont touch other options +# as the user might have adapted it already + + +AC_MSG_CHECKING(if $BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini exists with valid MKUUID ) if test -e "$BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini"; then - AC_MSG_RESULT(not touching existing $BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini file) + ../scripts/fix-uuid $BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini $MKUUID ; + AC_MSG_RESULT($BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini file exists, ensured MKUUID was unique) else - AC_MSG_RESULT($BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini does not exist - using default version) + AC_MSG_RESULT($BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini does not exist - creating one) mkdir -p $BUILD_TOPLEVEL/etc/linuxcnc cp ../scripts/machinekit.ini.tmpl $BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini - AC_MSG_RESULT(please review and edit $BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini as needed!) + ../scripts/fix-uuid $BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini $MKUUID ; + AC_MSG_RESULT(please review and edit options in $BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini as needed!) fi # clean up machinekitcfg.py: From a7ba9c81f5767125e715f1efa66bd4013f7e079d Mon Sep 17 00:00:00 2001 From: John Morris Date: Tue, 11 Sep 2018 15:28:14 +0800 Subject: [PATCH 391/516] cpusets --- debian/control.buster.in | 2 +- debian/control.in | 4 +- debian/control.stretch.in | 2 +- scripts/latency-test | 2 +- src/Makefile.inc.in | 4 ++ src/configure.ac | 19 ++++++-- src/hal/cython/machinekit/rtapi.pyx | 8 +++- src/hal/cython/machinekit/rtapi_app.pxd | 2 +- src/hal/lib/hal_priv.h | 2 + src/hal/lib/hal_thread.c | 3 ++ src/hal/utils/halcmd_commands.c | 7 ++- src/hal/utils/halcmd_rtapiapp.cc | 6 ++- src/hal/utils/halcmd_rtapiapp.h | 2 +- .../machinetalk/protobuf/rtapicommand.proto | 1 + src/rtapi/rt-preempt.c | 46 +++++++++++++++++++ src/rtapi/rt-preempt.h | 3 ++ src/rtapi/rtapi.h | 1 + src/rtapi/rtapi_app.cc | 1 + src/rtapi/rtapi_common.h | 1 + src/rtapi/rtapi_task.c | 17 ++++--- tests/cpusets/checkresult | 7 +++ tests/cpusets/skip | 33 +++++++++++++ tests/cpusets/test.hal | 6 +++ 23 files changed, 155 insertions(+), 24 deletions(-) create mode 100755 tests/cpusets/checkresult create mode 100755 tests/cpusets/skip create mode 100644 tests/cpusets/test.hal diff --git a/debian/control.buster.in b/debian/control.buster.in index 837c14466a..75771448d8 100644 --- a/debian/control.buster.in +++ b/debian/control.buster.in @@ -17,7 +17,7 @@ Build-Depends: debhelper (>= 6), libprotobuf-dev (>= 2.4.1), protobuf-compiler (>= 2.4.1), python-protobuf (>= 2.4.1), libprotoc-dev (>= 2.4.1), python-simplejson, libtk-img, libboost-thread-dev, - python-pyftpdlib, tcl8.6-dev, tk8.6-dev @BUILD_DEPS@ + python-pyftpdlib, tcl8.6-dev, tk8.6-dev, libcgroup-dev @BUILD_DEPS@ Standards-Version: 2.1.0 ######################################################################### diff --git a/debian/control.in b/debian/control.in index 1bb17b7c27..437db2aee5 100644 --- a/debian/control.in +++ b/debian/control.in @@ -17,7 +17,7 @@ Build-Depends: debhelper (>= 6), libprotobuf-dev (>= 2.4.1), protobuf-compiler (>= 2.4.1), python-protobuf (>= 2.4.1), libprotoc-dev (>= 2.4.1), python-simplejson, libtk-img, libboost-thread-dev, - python-pyftpdlib, tcl8.6-dev, tk8.6-dev @BUILD_DEPS@ + python-pyftpdlib, tcl8.6-dev, tk8.6-dev, libcgroup-dev @BUILD_DEPS@ Standards-Version: 2.1.0 ######################################################################### @@ -53,7 +53,7 @@ Depends: ${shlibs:Depends}, machinekit-rt-threads, tcl8.6, tk8.6, python-zmq, python-protobuf (>= 2.4.1), python-avahi, python-simplejson, python-pyftpdlib, python-pydot, xdot, - tclreadline, bc, procps, psmisc, + tclreadline, bc, procps, psmisc, cgroup-tools, python-gst0.10 Description: PC based motion controller for real-time Linux Machinekit is the next-generation Enhanced Machine Controller which diff --git a/debian/control.stretch.in b/debian/control.stretch.in index bc097cfb95..866a5712df 100644 --- a/debian/control.stretch.in +++ b/debian/control.stretch.in @@ -17,7 +17,7 @@ Build-Depends: debhelper (>= 6), libprotobuf-dev (>= 2.4.1), protobuf-compiler (>= 2.4.1), python-protobuf (>= 2.4.1), libprotoc-dev (>= 2.4.1), python-simplejson, libtk-img, libboost-thread-dev, - python-pyftpdlib, tcl8.6-dev, tk8.6-dev @BUILD_DEPS@ + python-pyftpdlib, tcl8.6-dev, tk8.6-dev, libcgroup-dev @BUILD_DEPS@ Standards-Version: 2.1.0 ######################################################################### diff --git a/scripts/latency-test b/scripts/latency-test index a563b5b1db..774e5fddd8 100755 --- a/scripts/latency-test +++ b/scripts/latency-test @@ -56,7 +56,7 @@ BASE_HUMAN=$(human_time $BASE) SERVO_HUMAN=$(human_time $SERVO) if [ $BASE -eq 0 ]; then cat > lat.hal < 0.6], USE_AVAHI=yes ],) +PKG_CHECK_MODULES([LIBCGROUP], libcgroup, + [ + AC_DEFINE(HAVE_LIBCGROUP, [], [libcgroup library available]) + USE_LIBCGROUP=yes + ],) + AC_MSG_CHECKING(whether to enable NML-using parts) AC_ARG_ENABLE(nml, [ --enable-nml enable NML-using parts], @@ -1452,8 +1458,8 @@ test "$with_posix" = check && with_posix=yes test "$have_librt" = no && with_posix=no AC_MSG_RESULT($with_posix) if test "$with_posix" = yes; then - POSIX_THREADS_LDFLAGS="-lpthread -lrt" - POSIX_THREADS_RTFLAGS="$POSIX_THREADS_RTFLAGS -pthread" + POSIX_THREADS_LDFLAGS="-lpthread -lrt $LIBCGROUP_LIBS" + POSIX_THREADS_RTFLAGS="$POSIX_THREADS_RTFLAGS -pthread $LIBCGROUP_CFLAGS" BUILD_THREAD_FLAVORS="$BUILD_THREAD_FLAVORS posix" fi @@ -1462,8 +1468,9 @@ test "$with_rt_preempt" = check && with_rt_preempt=yes test "$have_librt" = no && with_rt_preempt=no AC_MSG_RESULT($with_rt_preempt) if test "$with_rt_preempt" = yes; then - RT_PREEMPT_THREADS_LDFLAGS="-lpthread -lrt" + RT_PREEMPT_THREADS_LDFLAGS="-lpthread -lrt $LIBCGROUP_LIBS" RT_PREEMPT_THREADS_RTFLAGS="$RT_PREEMPT_THREADS_RTFLAGS -pthread" + RT_PREEMPT_THREADS_RTFLAGS="$RT_PREEMPT_THREADS_RTFLAGS $LIBCGROUP_CFLAGS" BUILD_THREAD_FLAVORS="$BUILD_THREAD_FLAVORS rt-preempt" with_userland_rt_threads=yes fi @@ -1847,6 +1854,9 @@ AC_SUBST([SSL_LIBS]) AC_SUBST([UUID_CFLAGS]) AC_SUBST([UUID_LIBS]) +AC_SUBST([LIBCGROUP_CFLAGS]) +AC_SUBST([LIBCGROUP_LIBS]) + AC_SUBST([USE_CZMQ]) AC_SUBST([USE_PROTOBUF]) AC_SUBST([USE_JANSSON]) @@ -1855,6 +1865,7 @@ AC_SUBST([USE_URIPARSER]) AC_SUBST([USE_AVAHI]) AC_SUBST([USE_SSL]) AC_SUBST([USE_UUID]) +AC_SUBST([USE_LIBCGROUP]) if test "$with_usermode_pci" = yes; then AC_DEFINE([USERMODE_PCI], [], [build PCI drivers with usermode PCI support]) diff --git a/src/hal/cython/machinekit/rtapi.pyx b/src/hal/cython/machinekit/rtapi.pyx index 934d6c1f3e..a3eda50daa 100644 --- a/src/hal/cython/machinekit/rtapi.pyx +++ b/src/hal/cython/machinekit/rtapi.pyx @@ -191,9 +191,13 @@ class RTAPIcommand: if r: raise RuntimeError("cant connect to rtapi: %s" % strerror(-r)) - def newthread(self,char *name, int period, instance=0,fp=0,cpu=-1, flags=0): + def newthread(self,char *name, int period, instance=0, fp=0, cpu=-1, + cgname="", flags=0): cdef char *c_name = name - r = rtapi_newthread(instance, c_name, period, cpu, fp, flags) + cdef char *c_cgname = cgname + if cgname == "": + c_cgname = NULL + r = rtapi_newthread(instance, c_name, period, cpu, cgname, fp, flags) if r: raise RuntimeError("rtapi_newthread failed: %s" % strerror(-r)) diff --git a/src/hal/cython/machinekit/rtapi_app.pxd b/src/hal/cython/machinekit/rtapi_app.pxd index dd4640ffe3..919b391855 100644 --- a/src/hal/cython/machinekit/rtapi_app.pxd +++ b/src/hal/cython/machinekit/rtapi_app.pxd @@ -7,7 +7,7 @@ cdef extern from "halcmd_rtapiapp.h": int rtapi_shutdown(int instance) int rtapi_ping(int instance) int rtapi_newthread(int instance, const char *name, - int period, int cpu, int use_fp, int flags) + int period, int cpu, char *cgname, int use_fp, int flags) int rtapi_delthread(int instance, const char *name) int rtapi_callfunc(int instance, const char *func, const char **args) int rtapi_newinst(int instance, const char *comp, const char *instname, const char **args) diff --git a/src/hal/lib/hal_priv.h b/src/hal/lib/hal_priv.h index 0614bdcd45..05d228fa1c 100644 --- a/src/hal/lib/hal_priv.h +++ b/src/hal/lib/hal_priv.h @@ -599,6 +599,7 @@ typedef struct { int uses_fp; int cpu_id; rtapi_thread_flags_t flags; + char cgname[LINELEN]; } hal_threadargs_t; // extended arguments version of hal_create_thread(). @@ -621,6 +622,7 @@ typedef struct hal_thread { // root: hal_data.threads int cpu_id; /* cpu to bind on, or -1 */ rtapi_thread_flags_t flags; // eg Posix, nowait + char cgname[LINELEN]; // libcgroup name } hal_thread_t; diff --git a/src/hal/lib/hal_thread.c b/src/hal/lib/hal_thread.c index 2f0166ade7..9e3fa10b8e 100644 --- a/src/hal/lib/hal_thread.c +++ b/src/hal/lib/hal_thread.c @@ -177,6 +177,7 @@ int hal_create_xthread(const hal_threadargs_t *args) new->uses_fp = args->uses_fp; new->cpu_id = args->cpu_id; new->flags = args->flags; + strncpy(new->cgname, args->cgname, LINELEN); /* have to create and start a task to run the thread */ if (dlist_empty(&hal_data->threads)) { @@ -240,7 +241,9 @@ int hal_create_xthread(const hal_threadargs_t *args) .cpu_id =new->cpu_id, .name = (char *)ho_name(new), .flags = new->flags, + .cgname = {0}, }; + strncpy(rargs.cgname, new->cgname, LINELEN); retval = rtapi_task_new(&rargs); if (retval < 0) { HALFAIL_RC(EINVAL, "could not create task for thread %s", args->name); diff --git a/src/hal/utils/halcmd_commands.c b/src/hal/utils/halcmd_commands.c index b0328942d7..740271e978 100644 --- a/src/hal/utils/halcmd_commands.c +++ b/src/hal/utils/halcmd_commands.c @@ -4391,6 +4391,7 @@ int do_newthread_cmd(char *name, char *args[]) int i, retval; bool use_fp = false; int cpu = -1; + char cgname[LINELEN] = {0}; char *s; int per = 1000000; int flags = 0; @@ -4414,6 +4415,8 @@ int do_newthread_cmd(char *name, char *args[]) flags |= TF_NOWAIT; continue; } + if (sscanf(s, "cgname=%s", cgname) == 1) + continue; char *cp = s; per = strtol(s, &cp, 0); if ((*cp != '\0') && (!isspace(*cp))) { @@ -4428,7 +4431,8 @@ int do_newthread_cmd(char *name, char *args[]) halcmd_info("specifying 'nowait' without 'posix' makes it easy to lock up RT\n"); } - retval = rtapi_newthread(rtapi_instance, name, per, cpu, (int)use_fp, flags); + retval = rtapi_newthread(rtapi_instance, name, per, cpu, cgname, + (int)use_fp, flags); if (retval) halcmd_error("rc=%d: %s\n",retval,rtapi_rpcerror()); @@ -4670,4 +4674,3 @@ static void print_help_commands(void) printf(" echo, unecho Echo commands from stdin to stderr\n"); printf(" quit, exit Exit from halcmd\n"); } - diff --git a/src/hal/utils/halcmd_rtapiapp.cc b/src/hal/utils/halcmd_rtapiapp.cc index 0cc0578cdb..a930e00933 100644 --- a/src/hal/utils/halcmd_rtapiapp.cc +++ b/src/hal/utils/halcmd_rtapiapp.cc @@ -188,7 +188,9 @@ int rtapi_ping(int instance) return reply.retcode(); } -int rtapi_newthread(int instance, const char *name, int period, int cpu, int use_fp, int flags) +int rtapi_newthread( + int instance, const char *name, int period, int cpu, + char *cgname, int use_fp, int flags) { machinetalk::RTAPICommand *cmd; command.Clear(); @@ -200,6 +202,7 @@ int rtapi_newthread(int instance, const char *name, int period, int cpu, int use cmd->set_cpu(cpu); cmd->set_use_fp(use_fp); cmd->set_flags(flags); + cmd->set_cgname(cgname); int retval = rtapi_rpc(z_command, command, reply); if (retval) @@ -303,4 +306,3 @@ void rtapi_cleanup() z_command = NULL; } } - diff --git a/src/hal/utils/halcmd_rtapiapp.h b/src/hal/utils/halcmd_rtapiapp.h index 9ba9ebb81d..40dce0e288 100644 --- a/src/hal/utils/halcmd_rtapiapp.h +++ b/src/hal/utils/halcmd_rtapiapp.h @@ -11,7 +11,7 @@ extern "C" { int rtapi_shutdown(int instance); int rtapi_ping(int instance); int rtapi_newthread(int instance, const char *name, int period, - int cpu, int use_fp, int flags); + int cpu, char *cgname, int use_fp, int flags); int rtapi_delthread(int instance, const char *name); int rtapi_callfunc(int instance, const char *func, diff --git a/src/machinetalk/proto/src/machinetalk/protobuf/rtapicommand.proto b/src/machinetalk/proto/src/machinetalk/protobuf/rtapicommand.proto index 0579766792..97469b84cc 100644 --- a/src/machinetalk/proto/src/machinetalk/protobuf/rtapicommand.proto +++ b/src/machinetalk/proto/src/machinetalk/protobuf/rtapicommand.proto @@ -22,6 +22,7 @@ message RTAPICommand { optional int32 threadperiod = 7; optional bool use_fp = 8; optional int32 cpu = 9; + optional string cgname = 14; optional string comp = 10; optional string func = 11; diff --git a/src/rtapi/rt-preempt.c b/src/rtapi/rt-preempt.c index 823ae32642..da0f3d2281 100644 --- a/src/rtapi/rt-preempt.c +++ b/src/rtapi/rt-preempt.c @@ -27,6 +27,7 @@ #include "config.h" #include "rtapi.h" #include "rtapi_common.h" +#include /*********************************************************************** * TASK FUNCTIONS * @@ -67,6 +68,8 @@ typedef struct { } extra_task_data_t; extra_task_data_t extra_task_data[RTAPI_MAX_TASKS + 1]; + +int have_cg; // true when libcgroup initialized successfully #endif /* RTAPI */ #ifdef HAVE_RTAPI_GET_CLOCKS_HOOK @@ -90,6 +93,23 @@ int _rtapi_exit(int module_id) { } +#ifdef RTAPI +void _rtapi_module_init_hook(void) +{ + int ret; + + // Initialize libcgroup + have_cg = !(ret = cgroup_init()); + if (have_cg) + rtapi_print_msg(RTAPI_MSG_INFO, "libcgroup initialization succeded\n"); + else + rtapi_print_msg(RTAPI_MSG_INFO, "libcgroup initialization failed: (%d) %s\n", + ret, cgroup_strerror(ret)); +} +#else +void _rtapi_module_init_hook(void) {} +#endif + #ifdef RTAPI static inline int task_id(task_data *task) { @@ -288,6 +308,8 @@ static int realtime_set_priority(task_data *task) { static void *realtime_thread(void *arg) { task_data *task = arg; + int ret; + const char *const cgcontrollers[2] = {"cpuset", NULL}; rtapi_set_task(task); @@ -308,6 +330,30 @@ static void *realtime_thread(void *arg) { if (realtime_set_affinity(task)) goto error; + + // cgroup cpuset + if (task->cgname && task->cgname[0]) { + if (!have_cg) { + rtapi_print_msg( + RTAPI_MSG_ERR, "Task '%s' requested cgroup '%s', " + "but cgroups failed to initialize\n", + task->name, task->cgname); + goto error; + } + + if ((ret = cgroup_change_cgroup_path( + task->cgname, + extra_task_data[task_id(task)].tid, + cgcontrollers))) { + rtapi_print_msg(RTAPI_MSG_ERR, + "Error changing cpuset of task '%s' to '%s': %s\n", + task->name, task->cgname, cgroup_strerror(ret)); + goto error; + } + rtapi_print_msg(RTAPI_MSG_DBG, + "Moved task '%s' to cpuset '%s'", + task->name, task->cgname); + } if (!(task->flags & TF_NONRT)) { if (realtime_set_priority(task)) { #ifdef RTAPI_POSIX // This requires privs - tell user how to obtain them diff --git a/src/rtapi/rt-preempt.h b/src/rtapi/rt-preempt.h index 7bb7e1600c..b69bee8af0 100644 --- a/src/rtapi/rt-preempt.h +++ b/src/rtapi/rt-preempt.h @@ -58,6 +58,9 @@ #endif +/* rtapi_main.c */ +#define HAVE_RTAPI_MODULE_INIT_HOOK // init cgroups + /* misc */ #define HAVE_RTAPI_TASK_FREE #define HAVE_DROP_RESTORE_PRIVS diff --git a/src/rtapi/rtapi.h b/src/rtapi/rtapi.h index 7d4efab6e8..ae13f5f7fd 100644 --- a/src/rtapi/rtapi.h +++ b/src/rtapi/rtapi.h @@ -795,6 +795,7 @@ typedef struct { char *name; int cpu_id; rtapi_thread_flags_t flags; // eg Posix, nowait + char cgname[LINELEN]; } rtapi_task_args_t; diff --git a/src/rtapi/rtapi_app.cc b/src/rtapi/rtapi_app.cc index b6be19afc2..1f351aabec 100644 --- a/src/rtapi/rtapi_app.cc +++ b/src/rtapi/rtapi_app.cc @@ -1013,6 +1013,7 @@ static int rtapi_request(zloop_t *loop, zsock_t *socket, void *arg) args.uses_fp = pbreq.rtapicmd().use_fp(); args.cpu_id = pbreq.rtapicmd().cpu(); args.flags = (rtapi_thread_flags_t) pbreq.rtapicmd().flags(); + strncpy(args.cgname, pbreq.rtapicmd().cgname().c_str(), LINELEN); int retval = create_thread(&args); if (retval < 0) { diff --git a/src/rtapi/rtapi_common.h b/src/rtapi/rtapi_common.h index 8cbb336cc9..4cef6e0905 100644 --- a/src/rtapi/rtapi_common.h +++ b/src/rtapi/rtapi_common.h @@ -159,6 +159,7 @@ typedef struct { void *arg; /* task argument */ int cpu; rtapi_thread_flags_t flags; + char cgname[LINELEN]; } task_data; typedef struct { diff --git a/src/rtapi/rtapi_task.c b/src/rtapi/rtapi_task.c index 38c76e351b..0f009b1cf2 100644 --- a/src/rtapi/rtapi_task.c +++ b/src/rtapi/rtapi_task.c @@ -175,13 +175,15 @@ int _rtapi_task_new(const rtapi_task_args_t *args) { */ // task slot found; reserve it and release lock - rtapi_print_msg(RTAPI_MSG_DBG, - "Creating new task %d '%s:%d': " - "req prio %d (highest=%d lowest=%d) stack=%lu fp=%d flags=%d\n", - task_id, args->name, rtapi_instance, args->prio, - _rtapi_prio_highest(), - _rtapi_prio_lowest(), - args->stacksize, args->uses_fp, args->flags); + rtapi_print_msg( + RTAPI_MSG_DBG, + "Creating new task %d '%s:%d': " + "req prio %d (highest=%d lowest=%d) stack=%lu fp=%d flags=%d " + "cgname=%s\n", + task_id, args->name, rtapi_instance, args->prio, + _rtapi_prio_highest(), + _rtapi_prio_lowest(), + args->stacksize, args->uses_fp, args->flags, args->cgname); task->magic = TASK_MAGIC; /* fill out task structure */ @@ -193,6 +195,7 @@ int _rtapi_task_new(const rtapi_task_args_t *args) { task->flags = args->flags; task->uses_fp = args->uses_fp; task->cpu = args->cpu_id > -1 ? args->cpu_id : rtapi_data->rt_cpu; + strncpy(task->cgname, args->cgname, LINELEN); rtapi_print_msg(RTAPI_MSG_DBG, "Task CPU: %d\n", task->cpu); diff --git a/tests/cpusets/checkresult b/tests/cpusets/checkresult new file mode 100755 index 0000000000..353a2b9092 --- /dev/null +++ b/tests/cpusets/checkresult @@ -0,0 +1,7 @@ +#!/bin/bash +# -*-shell-script-*- + +TEST_DIR=$(dirname $1) +cd $TEST_DIR + +grep -q "^test:0\s\+1" result diff --git a/tests/cpusets/skip b/tests/cpusets/skip new file mode 100755 index 0000000000..c638dc2ce7 --- /dev/null +++ b/tests/cpusets/skip @@ -0,0 +1,33 @@ +#!/bin/bash +# -*-shell-script-*- + +CPUSET_ROOT=/sys/fs/cgroup/cpuset +CPUSET_CPUS=1 + +# Skip the test if any of the below commands fail +set -e + +# Assert the cgtools are available +which cgcreate >&/dev/null + +# Assert we're running POSIX threads +test "$(flavor)" = posix -o "$(flavor)" = rt-preempt + +# Attempt to set up a cgroup with cpuset controller +# +# - Mount the cgroup cpuset controller if needed +# - Probably inadequate; see `partrt`, `create_dir_stubborn()` +test -d $CPUSET_ROOT || \ + mount -t cgroup -o cpuset none $CPUSET_ROOT +# +# - Create a "/rt" cgroup under the cpuset controller +sudo cgcreate -g cpuset:/rt +# +# - Assign CPU to "/rt" cgroup & other tweaks +sudo cgset -r cpuset.mems=0 /rt +sudo cgset -r cpuset.cpus=${CPUSET_CPUS} /rt +sudo cgset -r cpuset.cpu_exclusive=1 /rt +sudo cgset -r cpuset.sched_load_balance=0 /rt +# +# - Check that assignment worked +cgget -n -r cpuset.cpus /rt | grep -q "cpuset.cpus: ${CPUSET_CPUS}" diff --git a/tests/cpusets/test.hal b/tests/cpusets/test.hal new file mode 100644 index 0000000000..ef5f132a92 --- /dev/null +++ b/tests/cpusets/test.hal @@ -0,0 +1,6 @@ +setexact_for_test_suite_only + +newthread test 10000000 cgname=/rt + +loadusr -w ps -C rtapi:0 -wLo comm=,psr= + From 146e4f834f0d37fb7e52c9d721d11c1fdd395301 Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 14 Jan 2019 16:57:09 +0800 Subject: [PATCH 392/516] scripts/build_docker: run `docker pull` Ensure that the Docker image isn't stale by running `docker pull`. --- scripts/build_docker | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/build_docker b/scripts/build_docker index 7eef9b3dae..f1eb0e3568 100755 --- a/scripts/build_docker +++ b/scripts/build_docker @@ -166,7 +166,9 @@ case $CMD in esac ########################################################### -# Update container image with custom /etc/passwd +# Update new container image and add custom /etc/passwd + +docker pull ${IMAGE}:${TAG} if test ${UID_GID/:*/} != 1000; then echo "Updating /etc/passwd for UID $TRAVIS_UID" >&2 From a7a886c12cee7f1236e43c119966a50aa4f1c58f Mon Sep 17 00:00:00 2001 From: John Morris Date: Tue, 9 Oct 2018 18:14:42 +0800 Subject: [PATCH 393/516] rtapi_app: link using $(THREADS)_THREADS_LDFLAGS --- src/rtapi/Submakefile | 1 + 1 file changed, 1 insertion(+) diff --git a/src/rtapi/Submakefile b/src/rtapi/Submakefile index 2cdeece68e..2489df451b 100644 --- a/src/rtapi/Submakefile +++ b/src/rtapi/Submakefile @@ -257,6 +257,7 @@ $(call TOOBJSDEPS, rtapi/$(threads)/rtapi_app.cc): EXTRAFLAGS = \ -o $@ \ $^ \ $(LDFLAGS) \ + $($(THREADS)_THREADS_LDFLAGS) \ $(PROTOBUF_LIBS) $(CZMQ_LIBS) $(LTTNG_UST_LIBS) \ -lstdc++ -ldl -luuid From b8280166aa2cd620303114c01e4df9093f92767d Mon Sep 17 00:00:00 2001 From: Mick Date: Mon, 14 Jan 2019 11:31:20 +0000 Subject: [PATCH 394/516] Change configure.ac to check for RIP build or package --- src/configure.ac | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/configure.ac b/src/configure.ac index bece09409f..58976c10d9 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -3133,19 +3133,26 @@ AC_OUTPUT # as the user might have adapted it already -AC_MSG_CHECKING(if $BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini exists with valid MKUUID ) - -if test -e "$BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini"; then - ../scripts/fix-uuid $BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini $MKUUID ; - AC_MSG_RESULT($BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini file exists, ensured MKUUID was unique) +if test "$RUN_IN_PLACE" = "yes"; then + AC_MSG_CHECKING(if $BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini exists with valid MKUUID ) + if test -e "$BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini"; then + ../scripts/fix-uuid $BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini $MKUUID ; + AC_MSG_RESULT($BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini file exists, ensured MKUUID was unique) + else + AC_MSG_RESULT($BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini does not exist - creating one) + mkdir -p $BUILD_TOPLEVEL/etc/linuxcnc + cp ../scripts/machinekit.ini.tmpl $BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini + ../scripts/fix-uuid $BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini $MKUUID ; + AC_MSG_RESULT(please review and edit options in $BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini as needed!) + fi else - AC_MSG_RESULT($BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini does not exist - creating one) - mkdir -p $BUILD_TOPLEVEL/etc/linuxcnc - cp ../scripts/machinekit.ini.tmpl $BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini - ../scripts/fix-uuid $BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini $MKUUID ; - AC_MSG_RESULT(please review and edit options in $BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini as needed!) + ## if packaging we don't want to give MKUUID a unique uuid yet - else all packages will have same one + AC_MSG_RESULT($BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini does not exist - creating one) + mkdir -p $BUILD_TOPLEVEL/etc/linuxcnc + cp ../scripts/machinekit.ini.tmpl $BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini fi + # clean up machinekitcfg.py: # subsitute "yes" by True # subsitute "no" by False From 22e896750b84079330a6457ada931c430f86a53e Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 12 Oct 2018 12:35:20 +0800 Subject: [PATCH 395/516] Fix linuxcnc script bug When things are really broken, `$HALCMD list comp` may output nothing, yielding the error: /usr/bin/linuxcnc: line 582: [: =: unary operator expected --- scripts/linuxcnc.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/linuxcnc.in b/scripts/linuxcnc.in index 6b93f3cf40..827403d2ce 100644 --- a/scripts/linuxcnc.in +++ b/scripts/linuxcnc.in @@ -594,7 +594,7 @@ function Cleanup() { for i in `seq 10`; do # (the one component is the halcmd itself) - if [ `$HALCMD list comp | wc -w` = 1 ]; then break; fi + if [ "`$HALCMD list comp | wc -w`" = 1 ]; then break; fi sleep .2 done From 77a23d3bf69c70e496d7a8dec69e063454e7f86d Mon Sep 17 00:00:00 2001 From: John Morris Date: Tue, 15 Jan 2019 15:29:18 +0800 Subject: [PATCH 396/516] Fix logging problems The big problem was when `DEBUG=1`, errors weren't being logged; for example, in `sampler.c`, the "SAMPLER: ERROR: depth too large" message wasn't printed, and the only information in the logs was the mysterious "rtapi_app_main(sampler): -12 Cannot allocate memory". This patch also reverts a line commented out in 2694a4b1, causes `rtapi_print()` to always print, and fixes `set_msg_level()` for ULAPI. --- src/hal/utils/halcmd_commands.c | 5 ++--- src/rtapi/rtapi_app.cc | 2 +- src/rtapi/rtapi_support.c | 13 +++++++++---- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/hal/utils/halcmd_commands.c b/src/hal/utils/halcmd_commands.c index 740271e978..e4e068393a 100644 --- a/src/hal/utils/halcmd_commands.c +++ b/src/hal/utils/halcmd_commands.c @@ -1229,9 +1229,8 @@ int loadrt(const int use_halmutex, char *mod_path, char *args[]) retval = rtapi_loadrt(rtapi_instance, mod_path, (const char **)args); if ( retval != 0 ) { - halcmd_error("insmod failed, returned %d:\n%s\n" - "See %s for more information.\n", - retval, rtapi_rpcerror(), logpath); + halcmd_error("insmod failed, returned %d:\n%s\n", + retval, rtapi_rpcerror()); return -1; } diff --git a/src/rtapi/rtapi_app.cc b/src/rtapi/rtapi_app.cc index 1f351aabec..d9796d5caa 100644 --- a/src/rtapi/rtapi_app.cc +++ b/src/rtapi/rtapi_app.cc @@ -1711,7 +1711,7 @@ int main(int argc, char **argv) } openlog_async(argv[0], option, LOG_LOCAL1); - // setlogmask_async(LOG_UPTO(LOG_DEBUG)); + setlogmask_async(LOG_UPTO(LOG_DEBUG)); // max out async syslog buffers for slow system in debug mode tunelog_async(99,10); diff --git a/src/rtapi/rtapi_support.c b/src/rtapi/rtapi_support.c index b7195502b3..512b03dc45 100644 --- a/src/rtapi/rtapi_support.c +++ b/src/rtapi/rtapi_support.c @@ -97,7 +97,7 @@ int vs_ringlogfv(const msg_level_t level, if (get_msg_level() == RTAPI_MSG_NONE) return 0; - if (level >= get_msg_level()) + if (level > get_msg_level()) return 0; msg.hdr.origin = origin; @@ -211,8 +211,13 @@ static int set_msg_level(int new_level) } return old_level; #else - old_level = ulapi_msg_level; - ulapi_msg_level = new_level; + if (global_data) { + old_level = global_data->user_msg_level; + global_data->user_msg_level = new_level; + } else { + old_level = ulapi_msg_level; + ulapi_msg_level = new_level; + } return old_level; #endif } @@ -234,7 +239,7 @@ void rtapi_print(const char *fmt, ...) { va_list args; va_start(args, fmt); - rtapi_msg_handler(RTAPI_MSG_ALL, fmt, args); + rtapi_msg_handler(RTAPI_MSG_ERR, fmt, args); va_end(args); } From 265fe99094308906cf8e22ad43d90cfcbe115ba7 Mon Sep 17 00:00:00 2001 From: John Morris Date: Tue, 15 Jan 2019 12:13:30 +0800 Subject: [PATCH 397/516] limit3 comp: add 'start' pin When 'stop' pin goes low (default high), output goes to zero velocity as quickly as possible while respecting acceleration limits. When disconnected, the original behavior of the component is preserved. This is useful for simulating hardware with an 'enable' signal. --- src/hal/i_components/limit3.icomp | 22 ++++++++++++++++---- tests/limit3/stop-fwd/README | 4 ++++ tests/limit3/stop-fwd/expected | 1 + tests/limit3/stop-fwd/test.hal | 28 +++++++++++++++++++++++++ tests/limit3/stop-rev/README | 5 +++++ tests/limit3/stop-rev/expected | 1 + tests/limit3/stop-rev/test.hal | 34 +++++++++++++++++++++++++++++++ 7 files changed, 91 insertions(+), 4 deletions(-) create mode 100644 tests/limit3/stop-fwd/README create mode 120000 tests/limit3/stop-fwd/expected create mode 100644 tests/limit3/stop-fwd/test.hal create mode 100644 tests/limit3/stop-rev/README create mode 120000 tests/limit3/stop-rev/expected create mode 100644 tests/limit3/stop-rev/test.hal diff --git a/src/hal/i_components/limit3.icomp b/src/hal/i_components/limit3.icomp index 7947e5d423..d78418644f 100644 --- a/src/hal/i_components/limit3.icomp +++ b/src/hal/i_components/limit3.icomp @@ -8,6 +8,10 @@ pin out float out; pin in bit load=0 """When TRUE, immediately set \\fBout\\fB to \\fBin\\fR, ignoring maxv and maxa"""; +pin in bit start=1 + """When FALSE, stop, reducing velocity to zero as quickly as possible, +respecting acceleration limits and ignoring input (overidden by \\fBload\\fR +pin)"""; pin in float min_=-1e20; pin in float max_=1e20; pin in float maxv=1e20; @@ -105,15 +109,25 @@ FUNCTION(_) { in_pos_max = in + in_vel * in_vel_time_max; in_pos_min = in + in_vel * in_vel_time_min; - // 2. Choose the current goal: input signal, max limit or min limit + // 2. Choose the current goal: stop, input signal, max limit or min limit // - // Min/Max limits: - // - assume we're stopping at a limit by default + // Min/Max limits, stop: + // - assume we're stopping by default vel_diff = -out_vel; ach_pos_min = stop_pos_min; ach_pos_max = stop_pos_max; + // - is the start pin cleared? + if (!start) + if (out > stop_pos_min && out < stop_pos_max) + goal_pos_min = goal_pos_max = goal_pos_cur = goal_pos_prev = out; + else if (stop_time_max < stop_time_min) + goal_pos_min = goal_pos_max = goal_pos_cur = goal_pos_prev = + stop_pos_max; + else + goal_pos_min = goal_pos_max = goal_pos_cur = goal_pos_prev = + stop_pos_min; // - are we headed to crash into a min/max limit? - if (stop_pos_max > max_ + EPSILON && !VALID_NEXT(max_)) + else if (stop_pos_max > max_ + EPSILON && !VALID_NEXT(max_)) goal_pos_min = goal_pos_max = goal_pos_cur = goal_pos_prev = max_; else if (stop_pos_min < min_ - EPSILON && !VALID_NEXT(min_)) goal_pos_min = goal_pos_max = goal_pos_cur = goal_pos_prev = min_; diff --git a/tests/limit3/stop-fwd/README b/tests/limit3/stop-fwd/README new file mode 100644 index 0000000000..6383207047 --- /dev/null +++ b/tests/limit3/stop-fwd/README @@ -0,0 +1,4 @@ +This tests the 'start' pin. It replicates the motion in +../limit-accel-and-max, since it sets the same max accel and velocity, +and begins slowing down when input exceeds 80, and as such can reuse +the same 'expected' output. diff --git a/tests/limit3/stop-fwd/expected b/tests/limit3/stop-fwd/expected new file mode 120000 index 0000000000..fce7a3be7e --- /dev/null +++ b/tests/limit3/stop-fwd/expected @@ -0,0 +1 @@ +../limit-accel-and-max/expected \ No newline at end of file diff --git a/tests/limit3/stop-fwd/test.hal b/tests/limit3/stop-fwd/test.hal new file mode 100644 index 0000000000..9e49894902 --- /dev/null +++ b/tests/limit3/stop-fwd/test.hal @@ -0,0 +1,28 @@ +setexact_for_test_suite_only + +# Load comps +loadrt threads name1=t period1=1000000 +loadrt sampler cfg=f depth=4096 +#loadrt sampler cfg=fb depth=4096 +loadrt comp names=stop,load +loadrt limit3 + +# Ramp up velocity +setp limit3.0.in 100000 +setp limit3.0.maxv 500 +setp limit3.0.maxa 1000 + +# Clear 'start' at pos. 80 +setp stop.in1 80 + +# Finish plumbing +net n0 limit3.0.out => stop.in0 => sampler.0.pin.0 +net stop stop.out => limit3.0.start +#net stop stop.out => limit3.0.start => sampler.0.pin.1 +addf stop.funct t +addf limit3.0 t +addf sampler.0 t + +# Go +start +loadusr -w halsampler -t -n 800 diff --git a/tests/limit3/stop-rev/README b/tests/limit3/stop-rev/README new file mode 100644 index 0000000000..137ed476c6 --- /dev/null +++ b/tests/limit3/stop-rev/README @@ -0,0 +1,5 @@ +This tests the 'start' pin on downward motion. It replicates the +motion in ../limit-accel-and-max but in the opposite direction. Since +it sets the same max accel and velocity, and begins slowing down when +input hits -80, with a 'scale' comp to fix velocity, it can reuse the +same 'expected' output. diff --git a/tests/limit3/stop-rev/expected b/tests/limit3/stop-rev/expected new file mode 120000 index 0000000000..fce7a3be7e --- /dev/null +++ b/tests/limit3/stop-rev/expected @@ -0,0 +1 @@ +../limit-accel-and-max/expected \ No newline at end of file diff --git a/tests/limit3/stop-rev/test.hal b/tests/limit3/stop-rev/test.hal new file mode 100644 index 0000000000..263f79760c --- /dev/null +++ b/tests/limit3/stop-rev/test.hal @@ -0,0 +1,34 @@ +setexact_for_test_suite_only + +# Load comps +loadrt threads name1=t period1=1000000 +loadrt sampler cfg=f depth=4096 +#loadrt sampler cfg=fb depth=4096 +loadrt comp names=stop,load +loadrt limit3 +loadrt scale names=neg + +# Ramp up velocity +setp limit3.0.in -100000 +setp limit3.0.maxv 500 +setp limit3.0.maxa 1000 + +# Clear 'start' at pos. 80 +setp stop.in0 -80 + +# Invert output for sampler +setp neg.gain -1 + +# Finish plumbing +net out limit3.0.out => stop.in1 => neg.in +net stop stop.out => limit3.0.start +#net stop stop.out => limit3.0.start => sampler.0.pin.1 +net out-neg neg.out => sampler.0.pin.0 +addf stop.funct t +addf limit3.0 t +addf neg.funct t +addf sampler.0 t + +# Go +start +loadusr -w halsampler -t -n 800 From 945d5d8166416f09e799393150cab7043141bffa Mon Sep 17 00:00:00 2001 From: John Morris Date: Tue, 15 Jan 2019 16:19:02 +0800 Subject: [PATCH 398/516] limit3 comp: Add `out-vel` and `out-acc` output pins --- src/hal/i_components/limit3.icomp | 10 +- tests/limit3/out_acc_vel-pins/checkresult | 31 + tests/limit3/out_acc_vel-pins/expected | 800 ++++++++++++++++++++++ tests/limit3/out_acc_vel-pins/test.hal | 41 ++ 4 files changed, 878 insertions(+), 4 deletions(-) create mode 100755 tests/limit3/out_acc_vel-pins/checkresult create mode 100644 tests/limit3/out_acc_vel-pins/expected create mode 100644 tests/limit3/out_acc_vel-pins/test.hal diff --git a/src/hal/i_components/limit3.icomp b/src/hal/i_components/limit3.icomp index d78418644f..5bf186e57e 100644 --- a/src/hal/i_components/limit3.icomp +++ b/src/hal/i_components/limit3.icomp @@ -5,6 +5,8 @@ less than maxa per second squared. When the signal is a position, this means that the position, velocity, and acceleration are limited."""; pin in float in; pin out float out; +pin out float out_vel; +pin out float out_acc; pin in bit load=0 """When TRUE, immediately set \\fBout\\fB to \\fBin\\fR, ignoring maxv and maxa"""; @@ -30,10 +32,12 @@ license "GPL"; #define SET_NEXT_STATE(_out, _in) \ do { \ + out_acc = ((_out-out)/fperiod-out_vel)/fperiod; \ + out_vel = (_out-out)/fperiod; \ out_old = out; \ out = _out; \ in_pos_old = _in; \ - return 0; \ + return 0; \ } while (0) #define VALID_NEXT(pos) ((pos) <= max_pos && (pos) >= min_pos) @@ -56,7 +60,6 @@ FUNCTION(_) { double out_pos_max, out_pos_min, in_pos_max, in_pos_min; double ach_pos_min, ach_pos_max; - double out_vel = (out-out_old)/fperiod; double goal_pos_min, goal_pos_max, goal_pos_cur; double pos_diff, vel_diff, goal_pos_prev; double t, ti, a, v, s; @@ -78,9 +81,8 @@ FUNCTION(_) { // 1. Calculate distances and times to stop and match input velocity // - // Input and output velocity + // Input velocity in_vel = (in - in_pos_old) / fperiod; - out_vel = (out - out_old) / fperiod; // // Most negative/positive velocity reachable in one period min_vel = rtapi_fmax(VF_GIVEN_VI_A_T(out_vel, -maxa, fperiod), -maxv); diff --git a/tests/limit3/out_acc_vel-pins/checkresult b/tests/limit3/out_acc_vel-pins/checkresult new file mode 100755 index 0000000000..edc372d644 --- /dev/null +++ b/tests/limit3/out_acc_vel-pins/checkresult @@ -0,0 +1,31 @@ +#!/usr/bin/python2 + +# Verify that limit3.out-vel and limit3.out-acc pins are accurate + +import sys + +def near(a, b): + return abs(a-b) < 0.00001 + +result_filename = sys.argv[1] +result_file = open(result_filename, 'r') +retval = 0 + +for line in result_file.readlines(): + # Read columns: one int, five floats + nums = line.split()[:6] + sample = int(nums[0]) + (out, out_vel, out_vel_chk, out_acc, out_acc_chk) = [ + float(n) for n in nums[1:]] + + # limit3 outputs should match ddt comps for vel and acc + if not near(out_vel, out_vel_chk): + print "sample %d: comp vel %.3f != measured vel %.3f" % \ + (sample, out_vel, out_vel_chk) + retval = 1 + if not near(out_acc, out_acc_chk): + print "sample %d: comp acc %.3f != measured acc %.3f" % \ + (sample, out_acc, out_acc_chk) + retval = 1 + +sys.exit(retval) diff --git a/tests/limit3/out_acc_vel-pins/expected b/tests/limit3/out_acc_vel-pins/expected new file mode 100644 index 0000000000..ebda2f2fda --- /dev/null +++ b/tests/limit3/out_acc_vel-pins/expected @@ -0,0 +1,800 @@ +0 0.001000 +1 0.003000 +2 0.006000 +3 0.010000 +4 0.015000 +5 0.021000 +6 0.028000 +7 0.036000 +8 0.045000 +9 0.055000 +10 0.066000 +11 0.078000 +12 0.091000 +13 0.105000 +14 0.120000 +15 0.136000 +16 0.153000 +17 0.171000 +18 0.190000 +19 0.210000 +20 0.231000 +21 0.253000 +22 0.276000 +23 0.300000 +24 0.325000 +25 0.351000 +26 0.378000 +27 0.406000 +28 0.435000 +29 0.465000 +30 0.496000 +31 0.528000 +32 0.561000 +33 0.595000 +34 0.630000 +35 0.666000 +36 0.703000 +37 0.741000 +38 0.780000 +39 0.820000 +40 0.861000 +41 0.903000 +42 0.946000 +43 0.990000 +44 1.035000 +45 1.081000 +46 1.128000 +47 1.176000 +48 1.225000 +49 1.275000 +50 1.326000 +51 1.378000 +52 1.431000 +53 1.485000 +54 1.540000 +55 1.596000 +56 1.653000 +57 1.711000 +58 1.770000 +59 1.830000 +60 1.891000 +61 1.953000 +62 2.016000 +63 2.080000 +64 2.145000 +65 2.211000 +66 2.278000 +67 2.346000 +68 2.415000 +69 2.485000 +70 2.556000 +71 2.628000 +72 2.701000 +73 2.775000 +74 2.850000 +75 2.926000 +76 3.003000 +77 3.081000 +78 3.160000 +79 3.240000 +80 3.321000 +81 3.403000 +82 3.486000 +83 3.570000 +84 3.655000 +85 3.741000 +86 3.828000 +87 3.916000 +88 4.005000 +89 4.095000 +90 4.186000 +91 4.278000 +92 4.371000 +93 4.465000 +94 4.560000 +95 4.656000 +96 4.753000 +97 4.851000 +98 4.950000 +99 5.050000 +100 5.151000 +101 5.253000 +102 5.356000 +103 5.460000 +104 5.565000 +105 5.671000 +106 5.778000 +107 5.886000 +108 5.995000 +109 6.105000 +110 6.216000 +111 6.328000 +112 6.441000 +113 6.555000 +114 6.670000 +115 6.786000 +116 6.903000 +117 7.021000 +118 7.140000 +119 7.260000 +120 7.381000 +121 7.503000 +122 7.626000 +123 7.750000 +124 7.875000 +125 8.001000 +126 8.128000 +127 8.256000 +128 8.385000 +129 8.515000 +130 8.646000 +131 8.778000 +132 8.911000 +133 9.045000 +134 9.180000 +135 9.316000 +136 9.453000 +137 9.591000 +138 9.730000 +139 9.870000 +140 10.011000 +141 10.153000 +142 10.296000 +143 10.440000 +144 10.585000 +145 10.731000 +146 10.878000 +147 11.026000 +148 11.175000 +149 11.325000 +150 11.476000 +151 11.628000 +152 11.781000 +153 11.935000 +154 12.090000 +155 12.246000 +156 12.403000 +157 12.561000 +158 12.720000 +159 12.880000 +160 13.041000 +161 13.203000 +162 13.366000 +163 13.530000 +164 13.695000 +165 13.861000 +166 14.028000 +167 14.196000 +168 14.365000 +169 14.535000 +170 14.706000 +171 14.878000 +172 15.051000 +173 15.225000 +174 15.400000 +175 15.576000 +176 15.753000 +177 15.931000 +178 16.110000 +179 16.290000 +180 16.471000 +181 16.653000 +182 16.836000 +183 17.020000 +184 17.205000 +185 17.391000 +186 17.578000 +187 17.766000 +188 17.955000 +189 18.145000 +190 18.336000 +191 18.528000 +192 18.721000 +193 18.915000 +194 19.110000 +195 19.306000 +196 19.503000 +197 19.701000 +198 19.900000 +199 20.100000 +200 20.301000 +201 20.503000 +202 20.706000 +203 20.910000 +204 21.115000 +205 21.321000 +206 21.528000 +207 21.736000 +208 21.945000 +209 22.155000 +210 22.366000 +211 22.578000 +212 22.791000 +213 23.005000 +214 23.220000 +215 23.436000 +216 23.653000 +217 23.871000 +218 24.090000 +219 24.310000 +220 24.531000 +221 24.753000 +222 24.976000 +223 25.200000 +224 25.425000 +225 25.651000 +226 25.878000 +227 26.106000 +228 26.335000 +229 26.565000 +230 26.796000 +231 27.028000 +232 27.261000 +233 27.495000 +234 27.730000 +235 27.966000 +236 28.203000 +237 28.441000 +238 28.680000 +239 28.920000 +240 29.161000 +241 29.403000 +242 29.646000 +243 29.890000 +244 30.135000 +245 30.381000 +246 30.628000 +247 30.876000 +248 31.125000 +249 31.375000 +250 31.626000 +251 31.878000 +252 32.131000 +253 32.385000 +254 32.640000 +255 32.896000 +256 33.153000 +257 33.411000 +258 33.670000 +259 33.930000 +260 34.191000 +261 34.453000 +262 34.716000 +263 34.980000 +264 35.245000 +265 35.511000 +266 35.778000 +267 36.046000 +268 36.315000 +269 36.585000 +270 36.856000 +271 37.128000 +272 37.401000 +273 37.675000 +274 37.950000 +275 38.226000 +276 38.503000 +277 38.781000 +278 39.060000 +279 39.340000 +280 39.621000 +281 39.903000 +282 40.186000 +283 40.470000 +284 40.755000 +285 41.041000 +286 41.328000 +287 41.616000 +288 41.905000 +289 42.195000 +290 42.486000 +291 42.778000 +292 43.071000 +293 43.365000 +294 43.660000 +295 43.956000 +296 44.253000 +297 44.551000 +298 44.850000 +299 45.150000 +300 45.451000 +301 45.753000 +302 46.056000 +303 46.360000 +304 46.665000 +305 46.971000 +306 47.278000 +307 47.586000 +308 47.895000 +309 48.205000 +310 48.516000 +311 48.828000 +312 49.141000 +313 49.455000 +314 49.770000 +315 50.086000 +316 50.403000 +317 50.721000 +318 51.040000 +319 51.360000 +320 51.681000 +321 52.003000 +322 52.326000 +323 52.650000 +324 52.975000 +325 53.301000 +326 53.628000 +327 53.956000 +328 54.285000 +329 54.615000 +330 54.946000 +331 55.278000 +332 55.611000 +333 55.945000 +334 56.280000 +335 56.616000 +336 56.953000 +337 57.291000 +338 57.630000 +339 57.970000 +340 58.311000 +341 58.653000 +342 58.996000 +343 59.340000 +344 59.685000 +345 60.031000 +346 60.378000 +347 60.726000 +348 61.075000 +349 61.425000 +350 61.776000 +351 62.128000 +352 62.481000 +353 62.835000 +354 63.190000 +355 63.546000 +356 63.903000 +357 64.261000 +358 64.620000 +359 64.980000 +360 65.341000 +361 65.703000 +362 66.066000 +363 66.430000 +364 66.795000 +365 67.161000 +366 67.528000 +367 67.896000 +368 68.265000 +369 68.635000 +370 69.006000 +371 69.378000 +372 69.751000 +373 70.125000 +374 70.500000 +375 70.876000 +376 71.253000 +377 71.631000 +378 72.010000 +379 72.390000 +380 72.771000 +381 73.153000 +382 73.536000 +383 73.920000 +384 74.305000 +385 74.691000 +386 75.078000 +387 75.466000 +388 75.855000 +389 76.245000 +390 76.636000 +391 77.028000 +392 77.421000 +393 77.815000 +394 78.210000 +395 78.606000 +396 79.003000 +397 79.401000 +398 79.800000 +399 80.200000 +400 80.599000 +401 80.997000 +402 81.394000 +403 81.790000 +404 82.185000 +405 82.579000 +406 82.972000 +407 83.364000 +408 83.755000 +409 84.145000 +410 84.534000 +411 84.922000 +412 85.309000 +413 85.695000 +414 86.080000 +415 86.464000 +416 86.847000 +417 87.229000 +418 87.610000 +419 87.990000 +420 88.369000 +421 88.747000 +422 89.124000 +423 89.500000 +424 89.875000 +425 90.249000 +426 90.622000 +427 90.994000 +428 91.365000 +429 91.735000 +430 92.104000 +431 92.472000 +432 92.839000 +433 93.205000 +434 93.570000 +435 93.934000 +436 94.297000 +437 94.659000 +438 95.020000 +439 95.380000 +440 95.739000 +441 96.097000 +442 96.454000 +443 96.810000 +444 97.165000 +445 97.519000 +446 97.872000 +447 98.224000 +448 98.575000 +449 98.925000 +450 99.274000 +451 99.622000 +452 99.969000 +453 100.315000 +454 100.660000 +455 101.004000 +456 101.347000 +457 101.689000 +458 102.030000 +459 102.370000 +460 102.709000 +461 103.047000 +462 103.384000 +463 103.720000 +464 104.055000 +465 104.389000 +466 104.722000 +467 105.054000 +468 105.385000 +469 105.715000 +470 106.044000 +471 106.372000 +472 106.699000 +473 107.025000 +474 107.350000 +475 107.674000 +476 107.997000 +477 108.319000 +478 108.640000 +479 108.960000 +480 109.279000 +481 109.597000 +482 109.914000 +483 110.230000 +484 110.545000 +485 110.859000 +486 111.172000 +487 111.484000 +488 111.795000 +489 112.105000 +490 112.414000 +491 112.722000 +492 113.029000 +493 113.335000 +494 113.640000 +495 113.944000 +496 114.247000 +497 114.549000 +498 114.850000 +499 115.150000 +500 115.449000 +501 115.747000 +502 116.044000 +503 116.340000 +504 116.635000 +505 116.929000 +506 117.222000 +507 117.514000 +508 117.805000 +509 118.095000 +510 118.384000 +511 118.672000 +512 118.959000 +513 119.245000 +514 119.530000 +515 119.814000 +516 120.097000 +517 120.379000 +518 120.660000 +519 120.940000 +520 121.219000 +521 121.497000 +522 121.774000 +523 122.050000 +524 122.325000 +525 122.599000 +526 122.872000 +527 123.144000 +528 123.415000 +529 123.685000 +530 123.954000 +531 124.222000 +532 124.489000 +533 124.755000 +534 125.020000 +535 125.284000 +536 125.547000 +537 125.809000 +538 126.070000 +539 126.330000 +540 126.589000 +541 126.847000 +542 127.104000 +543 127.360000 +544 127.615000 +545 127.869000 +546 128.122000 +547 128.374000 +548 128.625000 +549 128.875000 +550 129.124000 +551 129.372000 +552 129.619000 +553 129.865000 +554 130.110000 +555 130.354000 +556 130.597000 +557 130.839000 +558 131.080000 +559 131.320000 +560 131.559000 +561 131.797000 +562 132.034000 +563 132.270000 +564 132.505000 +565 132.739000 +566 132.972000 +567 133.204000 +568 133.435000 +569 133.665000 +570 133.894000 +571 134.122000 +572 134.349000 +573 134.575000 +574 134.800000 +575 135.024000 +576 135.247000 +577 135.469000 +578 135.690000 +579 135.910000 +580 136.129000 +581 136.347000 +582 136.564000 +583 136.780000 +584 136.995000 +585 137.209000 +586 137.422000 +587 137.634000 +588 137.845000 +589 138.055000 +590 138.264000 +591 138.472000 +592 138.679000 +593 138.885000 +594 139.090000 +595 139.294000 +596 139.497000 +597 139.699000 +598 139.900000 +599 140.100000 +600 140.299000 +601 140.497000 +602 140.694000 +603 140.890000 +604 141.085000 +605 141.279000 +606 141.472000 +607 141.664000 +608 141.855000 +609 142.045000 +610 142.234000 +611 142.422000 +612 142.609000 +613 142.795000 +614 142.980000 +615 143.164000 +616 143.347000 +617 143.529000 +618 143.710000 +619 143.890000 +620 144.069000 +621 144.247000 +622 144.424000 +623 144.600000 +624 144.775000 +625 144.949000 +626 145.122000 +627 145.294000 +628 145.465000 +629 145.635000 +630 145.804000 +631 145.972000 +632 146.139000 +633 146.305000 +634 146.470000 +635 146.634000 +636 146.797000 +637 146.959000 +638 147.120000 +639 147.280000 +640 147.439000 +641 147.597000 +642 147.754000 +643 147.910000 +644 148.065000 +645 148.219000 +646 148.372000 +647 148.524000 +648 148.675000 +649 148.825000 +650 148.974000 +651 149.122000 +652 149.269000 +653 149.415000 +654 149.560000 +655 149.704000 +656 149.847000 +657 149.989000 +658 150.130000 +659 150.270000 +660 150.409000 +661 150.547000 +662 150.684000 +663 150.820000 +664 150.955000 +665 151.089000 +666 151.222000 +667 151.354000 +668 151.485000 +669 151.615000 +670 151.744000 +671 151.872000 +672 151.999000 +673 152.125000 +674 152.250000 +675 152.374000 +676 152.497000 +677 152.619000 +678 152.740000 +679 152.860000 +680 152.979000 +681 153.097000 +682 153.214000 +683 153.330000 +684 153.445000 +685 153.559000 +686 153.672000 +687 153.784000 +688 153.895000 +689 154.005000 +690 154.114000 +691 154.222000 +692 154.329000 +693 154.435000 +694 154.540000 +695 154.644000 +696 154.747000 +697 154.849000 +698 154.950000 +699 155.050000 +700 155.149000 +701 155.247000 +702 155.344000 +703 155.440000 +704 155.535000 +705 155.629000 +706 155.722000 +707 155.814000 +708 155.905000 +709 155.995000 +710 156.084000 +711 156.172000 +712 156.259000 +713 156.345000 +714 156.430000 +715 156.514000 +716 156.597000 +717 156.679000 +718 156.760000 +719 156.840000 +720 156.919000 +721 156.997000 +722 157.074000 +723 157.150000 +724 157.225000 +725 157.299000 +726 157.372000 +727 157.444000 +728 157.515000 +729 157.585000 +730 157.654000 +731 157.722000 +732 157.789000 +733 157.855000 +734 157.920000 +735 157.984000 +736 158.047000 +737 158.109000 +738 158.170000 +739 158.230000 +740 158.289000 +741 158.347000 +742 158.404000 +743 158.460000 +744 158.515000 +745 158.569000 +746 158.622000 +747 158.674000 +748 158.725000 +749 158.775000 +750 158.824000 +751 158.872000 +752 158.919000 +753 158.965000 +754 159.010000 +755 159.054000 +756 159.097000 +757 159.139000 +758 159.180000 +759 159.220000 +760 159.259000 +761 159.297000 +762 159.334000 +763 159.370000 +764 159.405000 +765 159.439000 +766 159.472000 +767 159.504000 +768 159.535000 +769 159.565000 +770 159.594000 +771 159.622000 +772 159.649000 +773 159.675000 +774 159.700000 +775 159.724000 +776 159.747000 +777 159.769000 +778 159.790000 +779 159.810000 +780 159.829000 +781 159.847000 +782 159.864000 +783 159.880000 +784 159.895000 +785 159.909000 +786 159.922000 +787 159.934000 +788 159.945000 +789 159.955000 +790 159.964000 +791 159.972000 +792 159.979000 +793 159.985000 +794 159.990000 +795 159.994000 +796 159.997000 +797 159.999000 +798 160.000000 +799 160.000000 diff --git a/tests/limit3/out_acc_vel-pins/test.hal b/tests/limit3/out_acc_vel-pins/test.hal new file mode 100644 index 0000000000..6afd8bf737 --- /dev/null +++ b/tests/limit3/out_acc_vel-pins/test.hal @@ -0,0 +1,41 @@ +setexact_for_test_suite_only + +loadrt threads name1=t period1=1000000 +loadrt sampler cfg=fffff depth=2048 +loadrt siggen +loadrt limit3 +loadrt ddt names=ddt.out-accel,ddt.out-vel + +addf siggen.0.update t +addf limit3.0.funct t +addf ddt.out-vel.funct t +addf ddt.out-accel.funct t +addf sampler.0 t + +# Set input signal +setp siggen.0.amplitude 75 + +# Set limits +setp limit3.0.min -50 +setp limit3.0.max 50 +setp limit3.0.maxv 4000 +setp limit3.0.maxa 10000 +setp limit3.0.smooth-steps 3 + +# Plumb input +net in siggen.0.sine => limit3.0.in + +# Plumb out-vel and out-accel check comps +net out limit3.0.out => ddt.out-vel.in +net out-vel-chk ddt.out-vel.out => ddt.out-accel.in + +# Plumb sampler +net out => sampler.0.pin.0 +net out-vel limit3.0.out-vel => sampler.0.pin.1 +net out-vel-chk => sampler.0.pin.2 +net out-acc limit3.0.out-acc => sampler.0.pin.3 +net out-acc-chk ddt.out-accel.out => sampler.0.pin.4 + +# Go +start +loadusr -w halsampler -t -n 800 From 3f12cd749a6103b023621491077e3af0db4bf0ee Mon Sep 17 00:00:00 2001 From: John Morris Date: Tue, 15 Jan 2019 17:03:30 +0800 Subject: [PATCH 399/516] limit3 comp: add 'stopped' pin 'stopped' pin goes high when velocity reaches zero --- src/hal/i_components/limit3.icomp | 2 ++ tests/limit3/stopped-pin/checkresult | 43 ++++++++++++++++++++++++++++ tests/limit3/stopped-pin/test.hal | 29 +++++++++++++++++++ 3 files changed, 74 insertions(+) create mode 100755 tests/limit3/stopped-pin/checkresult create mode 100644 tests/limit3/stopped-pin/test.hal diff --git a/src/hal/i_components/limit3.icomp b/src/hal/i_components/limit3.icomp index 5bf186e57e..6bf1366c5f 100644 --- a/src/hal/i_components/limit3.icomp +++ b/src/hal/i_components/limit3.icomp @@ -6,6 +6,7 @@ this means that the position, velocity, and acceleration are limited."""; pin in float in; pin out float out; pin out float out_vel; +pin out bit stopped; pin out float out_acc; pin in bit load=0 """When TRUE, immediately set \\fBout\\fB to \\fBin\\fR, ignoring maxv @@ -34,6 +35,7 @@ license "GPL"; do { \ out_acc = ((_out-out)/fperiod-out_vel)/fperiod; \ out_vel = (_out-out)/fperiod; \ + stopped = (rtapi_fabs(out_vel) < EPSILON); \ out_old = out; \ out = _out; \ in_pos_old = _in; \ diff --git a/tests/limit3/stopped-pin/checkresult b/tests/limit3/stopped-pin/checkresult new file mode 100755 index 0000000000..58568cf989 --- /dev/null +++ b/tests/limit3/stopped-pin/checkresult @@ -0,0 +1,43 @@ +#!/usr/bin/python2 + +# Verify that limit3.stopped pin works + +import sys + +def near(a, b): + return abs(a-b) < 0.00001 + +result_filename = sys.argv[1] +result_file = open(result_filename, 'r') +retval = 0 + +start_low_sample = 400 # when output reaches 80 +stopped_hi_sample = 799 # when output reaches 160 + +for line in result_file.readlines(): + # Read columns: one int, two floats, two bits + nums = line.split() + sample = int(nums[0]) + out = float(nums[1]) + vel = float(nums[2]) + start = int(nums[3]) + stopped = int(nums[4]) + + # Verify that start pin clears at the right time + if sample < start_low_sample and not start: + print "sample %d: start cleared at position %.3f" % (sample, out) + retval = 1 + elif sample >= start_low_sample and start: + print "sample %d: start set at position %.3f" % (sample, out) + retval = 1 + + # Verify that stopped pin sets after output reaches 160 + if sample < stopped_hi_sample and stopped: + print "sample %d: stopped at position %.3f" % (sample, out) + retval = 1 + elif sample >= stopped_hi_sample and not stopped: + print "sample %d: not stopped at position %.3f" % (sample, out) + retval = 1 + + +sys.exit(retval) diff --git a/tests/limit3/stopped-pin/test.hal b/tests/limit3/stopped-pin/test.hal new file mode 100644 index 0000000000..2da2a81495 --- /dev/null +++ b/tests/limit3/stopped-pin/test.hal @@ -0,0 +1,29 @@ +setexact_for_test_suite_only + +# Load comps +loadrt threads name1=t period1=1000000 +loadrt sampler cfg=ffbb depth=2048 +loadrt comp names=stop,load +loadrt limit3 + +addf stop.funct t +addf limit3.0 t +addf sampler.0 t + +# Ramp up velocity +setp limit3.0.in 100000 +setp limit3.0.maxv 500 +setp limit3.0.maxa 1000 + +# Clear 'start' at pos. 80 +setp stop.in1 80 + +# Finish plumbing +net out limit3.0.out => sampler.0.pin.0 => stop.in0 +net vel limit3.0.out-vel => sampler.0.pin.1 +net stop stop.out => sampler.0.pin.2 => limit3.0.start +net stopped limit3.0.stopped => sampler.0.pin.3 + +# Go +start +loadusr -w halsampler -t -n 900 From 306c9fb3b54d0272275c507766be740db30e61b3 Mon Sep 17 00:00:00 2001 From: John Morris Date: Tue, 15 Jan 2019 19:22:57 +0800 Subject: [PATCH 400/516] limit3v2 comp: add 'start' pin When 'stop' pin goes low (default high), output goes to zero velocity as quickly as possible while respecting acceleration limits. When disconnected, the original behavior of the component is preserved. This is useful for simulating hardware with an 'enable' signal. --- src/hal/i_components/limit3v2.icomp | 22 +++++++++++++++---- tests/limit3v2/stop-fwd/README | 4 ++++ tests/limit3v2/stop-fwd/expected | 1 + tests/limit3v2/stop-fwd/test.hal | 28 ++++++++++++++++++++++++ tests/limit3v2/stop-rev/README | 5 +++++ tests/limit3v2/stop-rev/expected | 1 + tests/limit3v2/stop-rev/test.hal | 34 +++++++++++++++++++++++++++++ 7 files changed, 91 insertions(+), 4 deletions(-) create mode 100644 tests/limit3v2/stop-fwd/README create mode 120000 tests/limit3v2/stop-fwd/expected create mode 100644 tests/limit3v2/stop-fwd/test.hal create mode 100644 tests/limit3v2/stop-rev/README create mode 120000 tests/limit3v2/stop-rev/expected create mode 100644 tests/limit3v2/stop-rev/test.hal diff --git a/src/hal/i_components/limit3v2.icomp b/src/hal/i_components/limit3v2.icomp index dea7b50780..d679ee305d 100644 --- a/src/hal/i_components/limit3v2.icomp +++ b/src/hal/i_components/limit3v2.icomp @@ -8,6 +8,10 @@ pin_ptr out float out; pin_ptr in bit load=0 """When TRUE, immediately set \\fBout\\fB to \\fBin\\fR, ignoring maxv and maxa"""; +pin_ptr in bit start=1 + """When FALSE, stop, reducing velocity to zero as quickly as possible, +respecting acceleration limits and ignoring input (overidden by \\fBload\\fR +pin)"""; pin_ptr in float min_=-1e20; pin_ptr in float max_=1e20; pin_ptr in float maxv=1e20; @@ -105,15 +109,25 @@ FUNCTION(_) { in_pos_max = gf(in) + in_vel * in_vel_time_max; in_pos_min = gf(in) + in_vel * in_vel_time_min; - // 2. Choose the current goal: input signal, max limit or min limit + // 2. Choose the current goal: stop, input signal, max limit or min limit // - // Min/Max limits: - // - assume we're stopping at a limit by default + // Min/Max limits, stop: + // - assume we're stopping by default vel_diff = -out_vel; ach_pos_min = stop_pos_min; ach_pos_max = stop_pos_max; + // - is the start pin cleared? + if (!gb(start)) + if (gf(out) > stop_pos_min && gf(out) < stop_pos_max) + goal_pos_min = goal_pos_max = goal_pos_cur = goal_pos_prev = gf(out); + else if (stop_time_max < stop_time_min) + goal_pos_min = goal_pos_max = goal_pos_cur = goal_pos_prev = + stop_pos_max; + else + goal_pos_min = goal_pos_max = goal_pos_cur = goal_pos_prev = + stop_pos_min; // - are we headed to crash into a min/max limit? - if (stop_pos_max > gf(max_) + EPSILON && !VALID_NEXT(gf(max_))) + else if (stop_pos_max > gf(max_) + EPSILON && !VALID_NEXT(gf(max_))) goal_pos_min = goal_pos_max = goal_pos_cur = goal_pos_prev = gf(max_); else if (stop_pos_min < gf(min_) - EPSILON && !VALID_NEXT(gf(min_))) goal_pos_min = goal_pos_max = goal_pos_cur = goal_pos_prev = gf(min_); diff --git a/tests/limit3v2/stop-fwd/README b/tests/limit3v2/stop-fwd/README new file mode 100644 index 0000000000..6383207047 --- /dev/null +++ b/tests/limit3v2/stop-fwd/README @@ -0,0 +1,4 @@ +This tests the 'start' pin. It replicates the motion in +../limit-accel-and-max, since it sets the same max accel and velocity, +and begins slowing down when input exceeds 80, and as such can reuse +the same 'expected' output. diff --git a/tests/limit3v2/stop-fwd/expected b/tests/limit3v2/stop-fwd/expected new file mode 120000 index 0000000000..fce7a3be7e --- /dev/null +++ b/tests/limit3v2/stop-fwd/expected @@ -0,0 +1 @@ +../limit-accel-and-max/expected \ No newline at end of file diff --git a/tests/limit3v2/stop-fwd/test.hal b/tests/limit3v2/stop-fwd/test.hal new file mode 100644 index 0000000000..43fc7c7313 --- /dev/null +++ b/tests/limit3v2/stop-fwd/test.hal @@ -0,0 +1,28 @@ +setexact_for_test_suite_only + +# Load comps +loadrt threads name1=t period1=1000000 +loadrt sampler cfg=f depth=4096 +#loadrt sampler cfg=fb depth=4096 +loadrt comp names=stop,load +newinst limit3v2 limit3.0 + +# Ramp up velocity +setp limit3.0.in 100000 +setp limit3.0.maxv 500 +setp limit3.0.maxa 1000 + +# Clear 'start' at pos. 80 +setp stop.in1 80 + +# Finish plumbing +net n0 limit3.0.out => stop.in0 => sampler.0.pin.0 +net stop stop.out => limit3.0.start +#net stop stop.out => limit3.0.start => sampler.0.pin.1 +addf stop.funct t +addf limit3.0 t +addf sampler.0 t + +# Go +start +loadusr -w halsampler -t -n 800 diff --git a/tests/limit3v2/stop-rev/README b/tests/limit3v2/stop-rev/README new file mode 100644 index 0000000000..137ed476c6 --- /dev/null +++ b/tests/limit3v2/stop-rev/README @@ -0,0 +1,5 @@ +This tests the 'start' pin on downward motion. It replicates the +motion in ../limit-accel-and-max but in the opposite direction. Since +it sets the same max accel and velocity, and begins slowing down when +input hits -80, with a 'scale' comp to fix velocity, it can reuse the +same 'expected' output. diff --git a/tests/limit3v2/stop-rev/expected b/tests/limit3v2/stop-rev/expected new file mode 120000 index 0000000000..fce7a3be7e --- /dev/null +++ b/tests/limit3v2/stop-rev/expected @@ -0,0 +1 @@ +../limit-accel-and-max/expected \ No newline at end of file diff --git a/tests/limit3v2/stop-rev/test.hal b/tests/limit3v2/stop-rev/test.hal new file mode 100644 index 0000000000..78369173e6 --- /dev/null +++ b/tests/limit3v2/stop-rev/test.hal @@ -0,0 +1,34 @@ +setexact_for_test_suite_only + +# Load comps +loadrt threads name1=t period1=1000000 +loadrt sampler cfg=f depth=4096 +#loadrt sampler cfg=fb depth=4096 +loadrt comp names=stop,load +newinst limit3v2 limit3.0 +loadrt scale names=neg + +# Ramp up velocity +setp limit3.0.in -100000 +setp limit3.0.maxv 500 +setp limit3.0.maxa 1000 + +# Clear 'start' at pos. 80 +setp stop.in0 -80 + +# Invert output for sampler +setp neg.gain -1 + +# Finish plumbing +net out limit3.0.out => stop.in1 => neg.in +net stop stop.out => limit3.0.start +#net stop stop.out => limit3.0.start => sampler.0.pin.1 +net out-neg neg.out => sampler.0.pin.0 +addf stop.funct t +addf limit3.0 t +addf neg.funct t +addf sampler.0 t + +# Go +start +loadusr -w halsampler -t -n 800 From 70463497611fde364bbef4433e223fbf10d70670 Mon Sep 17 00:00:00 2001 From: John Morris Date: Tue, 15 Jan 2019 19:34:18 +0800 Subject: [PATCH 401/516] limit3v2 comp: Add `out-vel` and `out-acc` output pins --- src/hal/i_components/limit3v2.icomp | 30 +- tests/limit3v2/out_acc_vel-pins/checkresult | 31 + tests/limit3v2/out_acc_vel-pins/expected | 800 ++++++++++++++++++++ tests/limit3v2/out_acc_vel-pins/test.hal | 41 + 4 files changed, 888 insertions(+), 14 deletions(-) create mode 100755 tests/limit3v2/out_acc_vel-pins/checkresult create mode 100644 tests/limit3v2/out_acc_vel-pins/expected create mode 100644 tests/limit3v2/out_acc_vel-pins/test.hal diff --git a/src/hal/i_components/limit3v2.icomp b/src/hal/i_components/limit3v2.icomp index d679ee305d..3bbc8d234b 100644 --- a/src/hal/i_components/limit3v2.icomp +++ b/src/hal/i_components/limit3v2.icomp @@ -5,6 +5,8 @@ less than maxa per second squared. When the signal is a position, this means that the position, velocity, and acceleration are limited."""; pin_ptr in float in; pin_ptr out float out; +pin_ptr out float out_vel; +pin_ptr out float out_acc; pin_ptr in bit load=0 """When TRUE, immediately set \\fBout\\fB to \\fBin\\fR, ignoring maxv and maxa"""; @@ -28,12 +30,14 @@ license "GPL"; #include "rtapi_math.h" -#define SET_NEXT_STATE(_out, _in) \ - do { \ - out_old = gf(out); \ - sf(out,_out); \ - in_pos_old = _in; \ - return 0; \ +#define SET_NEXT_STATE(_out, _in) \ + do { \ + sf(out_acc, ((_out-gf(out))/fperiod-gf(out_vel))/fperiod); \ + sf(out_vel, (_out-gf(out))/fperiod); \ + out_old = gf(out); \ + sf(out,_out); \ + in_pos_old = _in; \ + return 0; \ } while (0) #define VALID_NEXT(pos) ((pos) <= max_pos && (pos) >= min_pos) @@ -56,7 +60,6 @@ FUNCTION(_) { double out_pos_max, out_pos_min, in_pos_max, in_pos_min; double ach_pos_min, ach_pos_max; - double out_vel = (gf(out)-out_old)/fperiod; double goal_pos_min, goal_pos_max, goal_pos_cur; double pos_diff, vel_diff, goal_pos_prev; double t, ti, a, v, s; @@ -78,13 +81,12 @@ FUNCTION(_) { // 1. Calculate distances and times to stop and match input velocity // - // Input and output velocity + // Input velocity in_vel = (gf(in) - in_pos_old) / fperiod; - out_vel = (gf(out) - out_old) / fperiod; // // Most negative/positive velocity reachable in one period - min_vel = rtapi_fmax(VF_GIVEN_VI_A_T(out_vel, -gf(maxa), fperiod), -gf(maxv)); - max_vel = rtapi_fmin(VF_GIVEN_VI_A_T(out_vel, gf(maxa), fperiod), gf(maxv)); + min_vel = rtapi_fmax(VF_GIVEN_VI_A_T(gf(out_vel), -gf(maxa), fperiod), -gf(maxv)); + max_vel = rtapi_fmin(VF_GIVEN_VI_A_T(gf(out_vel), gf(maxa), fperiod), gf(maxv)); // Most negative/positive position reachable in one period // - cur. pos + (distance to reach min/max vel in one period) min_pos = gf(out) + min_vel * fperiod; @@ -113,7 +115,7 @@ FUNCTION(_) { // // Min/Max limits, stop: // - assume we're stopping by default - vel_diff = -out_vel; + vel_diff = -gf(out_vel); ach_pos_min = stop_pos_min; ach_pos_max = stop_pos_max; // - is the start pin cleared? @@ -146,7 +148,7 @@ FUNCTION(_) { goal_pos_max = in_pos_max; goal_pos_cur = gf(in); goal_pos_prev = in_pos_old; - vel_diff = out_vel - in_vel; + vel_diff = gf(out_vel) - in_vel; ach_pos_min = out_pos_min; ach_pos_max = out_pos_max; } @@ -185,7 +187,7 @@ FUNCTION(_) { ti = (int)((t - EPSILON*SIGN(t)) / fperiod + SIGN(t)) * fperiod; // - Uniform acceleration to reach goal in time `ti` a = (vel_diff - 0) / ti; - v = out_vel + a * fperiod; + v = gf(out_vel) + a * fperiod; s = v * fperiod; // - Effect new position, within limits SET_NEXT_STATE(rtapi_fmin(max_pos, rtapi_fmax(min_pos, gf(out) + s)), diff --git a/tests/limit3v2/out_acc_vel-pins/checkresult b/tests/limit3v2/out_acc_vel-pins/checkresult new file mode 100755 index 0000000000..edc372d644 --- /dev/null +++ b/tests/limit3v2/out_acc_vel-pins/checkresult @@ -0,0 +1,31 @@ +#!/usr/bin/python2 + +# Verify that limit3.out-vel and limit3.out-acc pins are accurate + +import sys + +def near(a, b): + return abs(a-b) < 0.00001 + +result_filename = sys.argv[1] +result_file = open(result_filename, 'r') +retval = 0 + +for line in result_file.readlines(): + # Read columns: one int, five floats + nums = line.split()[:6] + sample = int(nums[0]) + (out, out_vel, out_vel_chk, out_acc, out_acc_chk) = [ + float(n) for n in nums[1:]] + + # limit3 outputs should match ddt comps for vel and acc + if not near(out_vel, out_vel_chk): + print "sample %d: comp vel %.3f != measured vel %.3f" % \ + (sample, out_vel, out_vel_chk) + retval = 1 + if not near(out_acc, out_acc_chk): + print "sample %d: comp acc %.3f != measured acc %.3f" % \ + (sample, out_acc, out_acc_chk) + retval = 1 + +sys.exit(retval) diff --git a/tests/limit3v2/out_acc_vel-pins/expected b/tests/limit3v2/out_acc_vel-pins/expected new file mode 100644 index 0000000000..ebda2f2fda --- /dev/null +++ b/tests/limit3v2/out_acc_vel-pins/expected @@ -0,0 +1,800 @@ +0 0.001000 +1 0.003000 +2 0.006000 +3 0.010000 +4 0.015000 +5 0.021000 +6 0.028000 +7 0.036000 +8 0.045000 +9 0.055000 +10 0.066000 +11 0.078000 +12 0.091000 +13 0.105000 +14 0.120000 +15 0.136000 +16 0.153000 +17 0.171000 +18 0.190000 +19 0.210000 +20 0.231000 +21 0.253000 +22 0.276000 +23 0.300000 +24 0.325000 +25 0.351000 +26 0.378000 +27 0.406000 +28 0.435000 +29 0.465000 +30 0.496000 +31 0.528000 +32 0.561000 +33 0.595000 +34 0.630000 +35 0.666000 +36 0.703000 +37 0.741000 +38 0.780000 +39 0.820000 +40 0.861000 +41 0.903000 +42 0.946000 +43 0.990000 +44 1.035000 +45 1.081000 +46 1.128000 +47 1.176000 +48 1.225000 +49 1.275000 +50 1.326000 +51 1.378000 +52 1.431000 +53 1.485000 +54 1.540000 +55 1.596000 +56 1.653000 +57 1.711000 +58 1.770000 +59 1.830000 +60 1.891000 +61 1.953000 +62 2.016000 +63 2.080000 +64 2.145000 +65 2.211000 +66 2.278000 +67 2.346000 +68 2.415000 +69 2.485000 +70 2.556000 +71 2.628000 +72 2.701000 +73 2.775000 +74 2.850000 +75 2.926000 +76 3.003000 +77 3.081000 +78 3.160000 +79 3.240000 +80 3.321000 +81 3.403000 +82 3.486000 +83 3.570000 +84 3.655000 +85 3.741000 +86 3.828000 +87 3.916000 +88 4.005000 +89 4.095000 +90 4.186000 +91 4.278000 +92 4.371000 +93 4.465000 +94 4.560000 +95 4.656000 +96 4.753000 +97 4.851000 +98 4.950000 +99 5.050000 +100 5.151000 +101 5.253000 +102 5.356000 +103 5.460000 +104 5.565000 +105 5.671000 +106 5.778000 +107 5.886000 +108 5.995000 +109 6.105000 +110 6.216000 +111 6.328000 +112 6.441000 +113 6.555000 +114 6.670000 +115 6.786000 +116 6.903000 +117 7.021000 +118 7.140000 +119 7.260000 +120 7.381000 +121 7.503000 +122 7.626000 +123 7.750000 +124 7.875000 +125 8.001000 +126 8.128000 +127 8.256000 +128 8.385000 +129 8.515000 +130 8.646000 +131 8.778000 +132 8.911000 +133 9.045000 +134 9.180000 +135 9.316000 +136 9.453000 +137 9.591000 +138 9.730000 +139 9.870000 +140 10.011000 +141 10.153000 +142 10.296000 +143 10.440000 +144 10.585000 +145 10.731000 +146 10.878000 +147 11.026000 +148 11.175000 +149 11.325000 +150 11.476000 +151 11.628000 +152 11.781000 +153 11.935000 +154 12.090000 +155 12.246000 +156 12.403000 +157 12.561000 +158 12.720000 +159 12.880000 +160 13.041000 +161 13.203000 +162 13.366000 +163 13.530000 +164 13.695000 +165 13.861000 +166 14.028000 +167 14.196000 +168 14.365000 +169 14.535000 +170 14.706000 +171 14.878000 +172 15.051000 +173 15.225000 +174 15.400000 +175 15.576000 +176 15.753000 +177 15.931000 +178 16.110000 +179 16.290000 +180 16.471000 +181 16.653000 +182 16.836000 +183 17.020000 +184 17.205000 +185 17.391000 +186 17.578000 +187 17.766000 +188 17.955000 +189 18.145000 +190 18.336000 +191 18.528000 +192 18.721000 +193 18.915000 +194 19.110000 +195 19.306000 +196 19.503000 +197 19.701000 +198 19.900000 +199 20.100000 +200 20.301000 +201 20.503000 +202 20.706000 +203 20.910000 +204 21.115000 +205 21.321000 +206 21.528000 +207 21.736000 +208 21.945000 +209 22.155000 +210 22.366000 +211 22.578000 +212 22.791000 +213 23.005000 +214 23.220000 +215 23.436000 +216 23.653000 +217 23.871000 +218 24.090000 +219 24.310000 +220 24.531000 +221 24.753000 +222 24.976000 +223 25.200000 +224 25.425000 +225 25.651000 +226 25.878000 +227 26.106000 +228 26.335000 +229 26.565000 +230 26.796000 +231 27.028000 +232 27.261000 +233 27.495000 +234 27.730000 +235 27.966000 +236 28.203000 +237 28.441000 +238 28.680000 +239 28.920000 +240 29.161000 +241 29.403000 +242 29.646000 +243 29.890000 +244 30.135000 +245 30.381000 +246 30.628000 +247 30.876000 +248 31.125000 +249 31.375000 +250 31.626000 +251 31.878000 +252 32.131000 +253 32.385000 +254 32.640000 +255 32.896000 +256 33.153000 +257 33.411000 +258 33.670000 +259 33.930000 +260 34.191000 +261 34.453000 +262 34.716000 +263 34.980000 +264 35.245000 +265 35.511000 +266 35.778000 +267 36.046000 +268 36.315000 +269 36.585000 +270 36.856000 +271 37.128000 +272 37.401000 +273 37.675000 +274 37.950000 +275 38.226000 +276 38.503000 +277 38.781000 +278 39.060000 +279 39.340000 +280 39.621000 +281 39.903000 +282 40.186000 +283 40.470000 +284 40.755000 +285 41.041000 +286 41.328000 +287 41.616000 +288 41.905000 +289 42.195000 +290 42.486000 +291 42.778000 +292 43.071000 +293 43.365000 +294 43.660000 +295 43.956000 +296 44.253000 +297 44.551000 +298 44.850000 +299 45.150000 +300 45.451000 +301 45.753000 +302 46.056000 +303 46.360000 +304 46.665000 +305 46.971000 +306 47.278000 +307 47.586000 +308 47.895000 +309 48.205000 +310 48.516000 +311 48.828000 +312 49.141000 +313 49.455000 +314 49.770000 +315 50.086000 +316 50.403000 +317 50.721000 +318 51.040000 +319 51.360000 +320 51.681000 +321 52.003000 +322 52.326000 +323 52.650000 +324 52.975000 +325 53.301000 +326 53.628000 +327 53.956000 +328 54.285000 +329 54.615000 +330 54.946000 +331 55.278000 +332 55.611000 +333 55.945000 +334 56.280000 +335 56.616000 +336 56.953000 +337 57.291000 +338 57.630000 +339 57.970000 +340 58.311000 +341 58.653000 +342 58.996000 +343 59.340000 +344 59.685000 +345 60.031000 +346 60.378000 +347 60.726000 +348 61.075000 +349 61.425000 +350 61.776000 +351 62.128000 +352 62.481000 +353 62.835000 +354 63.190000 +355 63.546000 +356 63.903000 +357 64.261000 +358 64.620000 +359 64.980000 +360 65.341000 +361 65.703000 +362 66.066000 +363 66.430000 +364 66.795000 +365 67.161000 +366 67.528000 +367 67.896000 +368 68.265000 +369 68.635000 +370 69.006000 +371 69.378000 +372 69.751000 +373 70.125000 +374 70.500000 +375 70.876000 +376 71.253000 +377 71.631000 +378 72.010000 +379 72.390000 +380 72.771000 +381 73.153000 +382 73.536000 +383 73.920000 +384 74.305000 +385 74.691000 +386 75.078000 +387 75.466000 +388 75.855000 +389 76.245000 +390 76.636000 +391 77.028000 +392 77.421000 +393 77.815000 +394 78.210000 +395 78.606000 +396 79.003000 +397 79.401000 +398 79.800000 +399 80.200000 +400 80.599000 +401 80.997000 +402 81.394000 +403 81.790000 +404 82.185000 +405 82.579000 +406 82.972000 +407 83.364000 +408 83.755000 +409 84.145000 +410 84.534000 +411 84.922000 +412 85.309000 +413 85.695000 +414 86.080000 +415 86.464000 +416 86.847000 +417 87.229000 +418 87.610000 +419 87.990000 +420 88.369000 +421 88.747000 +422 89.124000 +423 89.500000 +424 89.875000 +425 90.249000 +426 90.622000 +427 90.994000 +428 91.365000 +429 91.735000 +430 92.104000 +431 92.472000 +432 92.839000 +433 93.205000 +434 93.570000 +435 93.934000 +436 94.297000 +437 94.659000 +438 95.020000 +439 95.380000 +440 95.739000 +441 96.097000 +442 96.454000 +443 96.810000 +444 97.165000 +445 97.519000 +446 97.872000 +447 98.224000 +448 98.575000 +449 98.925000 +450 99.274000 +451 99.622000 +452 99.969000 +453 100.315000 +454 100.660000 +455 101.004000 +456 101.347000 +457 101.689000 +458 102.030000 +459 102.370000 +460 102.709000 +461 103.047000 +462 103.384000 +463 103.720000 +464 104.055000 +465 104.389000 +466 104.722000 +467 105.054000 +468 105.385000 +469 105.715000 +470 106.044000 +471 106.372000 +472 106.699000 +473 107.025000 +474 107.350000 +475 107.674000 +476 107.997000 +477 108.319000 +478 108.640000 +479 108.960000 +480 109.279000 +481 109.597000 +482 109.914000 +483 110.230000 +484 110.545000 +485 110.859000 +486 111.172000 +487 111.484000 +488 111.795000 +489 112.105000 +490 112.414000 +491 112.722000 +492 113.029000 +493 113.335000 +494 113.640000 +495 113.944000 +496 114.247000 +497 114.549000 +498 114.850000 +499 115.150000 +500 115.449000 +501 115.747000 +502 116.044000 +503 116.340000 +504 116.635000 +505 116.929000 +506 117.222000 +507 117.514000 +508 117.805000 +509 118.095000 +510 118.384000 +511 118.672000 +512 118.959000 +513 119.245000 +514 119.530000 +515 119.814000 +516 120.097000 +517 120.379000 +518 120.660000 +519 120.940000 +520 121.219000 +521 121.497000 +522 121.774000 +523 122.050000 +524 122.325000 +525 122.599000 +526 122.872000 +527 123.144000 +528 123.415000 +529 123.685000 +530 123.954000 +531 124.222000 +532 124.489000 +533 124.755000 +534 125.020000 +535 125.284000 +536 125.547000 +537 125.809000 +538 126.070000 +539 126.330000 +540 126.589000 +541 126.847000 +542 127.104000 +543 127.360000 +544 127.615000 +545 127.869000 +546 128.122000 +547 128.374000 +548 128.625000 +549 128.875000 +550 129.124000 +551 129.372000 +552 129.619000 +553 129.865000 +554 130.110000 +555 130.354000 +556 130.597000 +557 130.839000 +558 131.080000 +559 131.320000 +560 131.559000 +561 131.797000 +562 132.034000 +563 132.270000 +564 132.505000 +565 132.739000 +566 132.972000 +567 133.204000 +568 133.435000 +569 133.665000 +570 133.894000 +571 134.122000 +572 134.349000 +573 134.575000 +574 134.800000 +575 135.024000 +576 135.247000 +577 135.469000 +578 135.690000 +579 135.910000 +580 136.129000 +581 136.347000 +582 136.564000 +583 136.780000 +584 136.995000 +585 137.209000 +586 137.422000 +587 137.634000 +588 137.845000 +589 138.055000 +590 138.264000 +591 138.472000 +592 138.679000 +593 138.885000 +594 139.090000 +595 139.294000 +596 139.497000 +597 139.699000 +598 139.900000 +599 140.100000 +600 140.299000 +601 140.497000 +602 140.694000 +603 140.890000 +604 141.085000 +605 141.279000 +606 141.472000 +607 141.664000 +608 141.855000 +609 142.045000 +610 142.234000 +611 142.422000 +612 142.609000 +613 142.795000 +614 142.980000 +615 143.164000 +616 143.347000 +617 143.529000 +618 143.710000 +619 143.890000 +620 144.069000 +621 144.247000 +622 144.424000 +623 144.600000 +624 144.775000 +625 144.949000 +626 145.122000 +627 145.294000 +628 145.465000 +629 145.635000 +630 145.804000 +631 145.972000 +632 146.139000 +633 146.305000 +634 146.470000 +635 146.634000 +636 146.797000 +637 146.959000 +638 147.120000 +639 147.280000 +640 147.439000 +641 147.597000 +642 147.754000 +643 147.910000 +644 148.065000 +645 148.219000 +646 148.372000 +647 148.524000 +648 148.675000 +649 148.825000 +650 148.974000 +651 149.122000 +652 149.269000 +653 149.415000 +654 149.560000 +655 149.704000 +656 149.847000 +657 149.989000 +658 150.130000 +659 150.270000 +660 150.409000 +661 150.547000 +662 150.684000 +663 150.820000 +664 150.955000 +665 151.089000 +666 151.222000 +667 151.354000 +668 151.485000 +669 151.615000 +670 151.744000 +671 151.872000 +672 151.999000 +673 152.125000 +674 152.250000 +675 152.374000 +676 152.497000 +677 152.619000 +678 152.740000 +679 152.860000 +680 152.979000 +681 153.097000 +682 153.214000 +683 153.330000 +684 153.445000 +685 153.559000 +686 153.672000 +687 153.784000 +688 153.895000 +689 154.005000 +690 154.114000 +691 154.222000 +692 154.329000 +693 154.435000 +694 154.540000 +695 154.644000 +696 154.747000 +697 154.849000 +698 154.950000 +699 155.050000 +700 155.149000 +701 155.247000 +702 155.344000 +703 155.440000 +704 155.535000 +705 155.629000 +706 155.722000 +707 155.814000 +708 155.905000 +709 155.995000 +710 156.084000 +711 156.172000 +712 156.259000 +713 156.345000 +714 156.430000 +715 156.514000 +716 156.597000 +717 156.679000 +718 156.760000 +719 156.840000 +720 156.919000 +721 156.997000 +722 157.074000 +723 157.150000 +724 157.225000 +725 157.299000 +726 157.372000 +727 157.444000 +728 157.515000 +729 157.585000 +730 157.654000 +731 157.722000 +732 157.789000 +733 157.855000 +734 157.920000 +735 157.984000 +736 158.047000 +737 158.109000 +738 158.170000 +739 158.230000 +740 158.289000 +741 158.347000 +742 158.404000 +743 158.460000 +744 158.515000 +745 158.569000 +746 158.622000 +747 158.674000 +748 158.725000 +749 158.775000 +750 158.824000 +751 158.872000 +752 158.919000 +753 158.965000 +754 159.010000 +755 159.054000 +756 159.097000 +757 159.139000 +758 159.180000 +759 159.220000 +760 159.259000 +761 159.297000 +762 159.334000 +763 159.370000 +764 159.405000 +765 159.439000 +766 159.472000 +767 159.504000 +768 159.535000 +769 159.565000 +770 159.594000 +771 159.622000 +772 159.649000 +773 159.675000 +774 159.700000 +775 159.724000 +776 159.747000 +777 159.769000 +778 159.790000 +779 159.810000 +780 159.829000 +781 159.847000 +782 159.864000 +783 159.880000 +784 159.895000 +785 159.909000 +786 159.922000 +787 159.934000 +788 159.945000 +789 159.955000 +790 159.964000 +791 159.972000 +792 159.979000 +793 159.985000 +794 159.990000 +795 159.994000 +796 159.997000 +797 159.999000 +798 160.000000 +799 160.000000 diff --git a/tests/limit3v2/out_acc_vel-pins/test.hal b/tests/limit3v2/out_acc_vel-pins/test.hal new file mode 100644 index 0000000000..6afd8bf737 --- /dev/null +++ b/tests/limit3v2/out_acc_vel-pins/test.hal @@ -0,0 +1,41 @@ +setexact_for_test_suite_only + +loadrt threads name1=t period1=1000000 +loadrt sampler cfg=fffff depth=2048 +loadrt siggen +loadrt limit3 +loadrt ddt names=ddt.out-accel,ddt.out-vel + +addf siggen.0.update t +addf limit3.0.funct t +addf ddt.out-vel.funct t +addf ddt.out-accel.funct t +addf sampler.0 t + +# Set input signal +setp siggen.0.amplitude 75 + +# Set limits +setp limit3.0.min -50 +setp limit3.0.max 50 +setp limit3.0.maxv 4000 +setp limit3.0.maxa 10000 +setp limit3.0.smooth-steps 3 + +# Plumb input +net in siggen.0.sine => limit3.0.in + +# Plumb out-vel and out-accel check comps +net out limit3.0.out => ddt.out-vel.in +net out-vel-chk ddt.out-vel.out => ddt.out-accel.in + +# Plumb sampler +net out => sampler.0.pin.0 +net out-vel limit3.0.out-vel => sampler.0.pin.1 +net out-vel-chk => sampler.0.pin.2 +net out-acc limit3.0.out-acc => sampler.0.pin.3 +net out-acc-chk ddt.out-accel.out => sampler.0.pin.4 + +# Go +start +loadusr -w halsampler -t -n 800 From 63f5552d74248672f93bc60963ed1e9c8991ad5a Mon Sep 17 00:00:00 2001 From: John Morris Date: Tue, 15 Jan 2019 19:36:11 +0800 Subject: [PATCH 402/516] limit3v2 comp: add 'stopped' pin 'stopped' pin goes high when velocity reaches zero --- src/hal/i_components/limit3v2.icomp | 2 ++ tests/limit3v2/stopped-pin/checkresult | 43 ++++++++++++++++++++++++++ tests/limit3v2/stopped-pin/test.hal | 29 +++++++++++++++++ 3 files changed, 74 insertions(+) create mode 100755 tests/limit3v2/stopped-pin/checkresult create mode 100644 tests/limit3v2/stopped-pin/test.hal diff --git a/src/hal/i_components/limit3v2.icomp b/src/hal/i_components/limit3v2.icomp index 3bbc8d234b..a8bfeb36f3 100644 --- a/src/hal/i_components/limit3v2.icomp +++ b/src/hal/i_components/limit3v2.icomp @@ -6,6 +6,7 @@ this means that the position, velocity, and acceleration are limited."""; pin_ptr in float in; pin_ptr out float out; pin_ptr out float out_vel; +pin_ptr out bit stopped; pin_ptr out float out_acc; pin_ptr in bit load=0 """When TRUE, immediately set \\fBout\\fB to \\fBin\\fR, ignoring maxv @@ -34,6 +35,7 @@ license "GPL"; do { \ sf(out_acc, ((_out-gf(out))/fperiod-gf(out_vel))/fperiod); \ sf(out_vel, (_out-gf(out))/fperiod); \ + sb(stopped, (rtapi_fabs(gf(out_vel)) < EPSILON)); \ out_old = gf(out); \ sf(out,_out); \ in_pos_old = _in; \ diff --git a/tests/limit3v2/stopped-pin/checkresult b/tests/limit3v2/stopped-pin/checkresult new file mode 100755 index 0000000000..58568cf989 --- /dev/null +++ b/tests/limit3v2/stopped-pin/checkresult @@ -0,0 +1,43 @@ +#!/usr/bin/python2 + +# Verify that limit3.stopped pin works + +import sys + +def near(a, b): + return abs(a-b) < 0.00001 + +result_filename = sys.argv[1] +result_file = open(result_filename, 'r') +retval = 0 + +start_low_sample = 400 # when output reaches 80 +stopped_hi_sample = 799 # when output reaches 160 + +for line in result_file.readlines(): + # Read columns: one int, two floats, two bits + nums = line.split() + sample = int(nums[0]) + out = float(nums[1]) + vel = float(nums[2]) + start = int(nums[3]) + stopped = int(nums[4]) + + # Verify that start pin clears at the right time + if sample < start_low_sample and not start: + print "sample %d: start cleared at position %.3f" % (sample, out) + retval = 1 + elif sample >= start_low_sample and start: + print "sample %d: start set at position %.3f" % (sample, out) + retval = 1 + + # Verify that stopped pin sets after output reaches 160 + if sample < stopped_hi_sample and stopped: + print "sample %d: stopped at position %.3f" % (sample, out) + retval = 1 + elif sample >= stopped_hi_sample and not stopped: + print "sample %d: not stopped at position %.3f" % (sample, out) + retval = 1 + + +sys.exit(retval) diff --git a/tests/limit3v2/stopped-pin/test.hal b/tests/limit3v2/stopped-pin/test.hal new file mode 100644 index 0000000000..2da2a81495 --- /dev/null +++ b/tests/limit3v2/stopped-pin/test.hal @@ -0,0 +1,29 @@ +setexact_for_test_suite_only + +# Load comps +loadrt threads name1=t period1=1000000 +loadrt sampler cfg=ffbb depth=2048 +loadrt comp names=stop,load +loadrt limit3 + +addf stop.funct t +addf limit3.0 t +addf sampler.0 t + +# Ramp up velocity +setp limit3.0.in 100000 +setp limit3.0.maxv 500 +setp limit3.0.maxa 1000 + +# Clear 'start' at pos. 80 +setp stop.in1 80 + +# Finish plumbing +net out limit3.0.out => sampler.0.pin.0 => stop.in0 +net vel limit3.0.out-vel => sampler.0.pin.1 +net stop stop.out => sampler.0.pin.2 => limit3.0.start +net stopped limit3.0.stopped => sampler.0.pin.3 + +# Go +start +loadusr -w halsampler -t -n 900 From 64d2a570c8a372cab5b17fdbc83a1dbc4c6d246a Mon Sep 17 00:00:00 2001 From: John Morris Date: Tue, 15 Jan 2019 11:14:48 +0800 Subject: [PATCH 403/516] Makefile: Add DPKG_CFLAGS to CXXFLAGS Warnings in C++ sources aren't halting build when `DPKG_CFLAGS=-Werror` set. See mk-cnc issue 45. https://github.com/machinekit/machinekit-cnc/issues/45 --- src/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Makefile b/src/Makefile index f53a3d969c..dc3529bbb0 100755 --- a/src/Makefile +++ b/src/Makefile @@ -388,7 +388,7 @@ endif BASE_CXXFLAGS:= $(INCLUDE) $(CXXFLAGS) \ $(CK_CFLAGS) \ - $(DEBUG) $(OPT) \ + $(DEBUG) $(DPKG_CFLAGS) $(OPT) \ $(PROFILE_CFLAGS) \ -DGIT_BUILD_SHA=\"'$(GIT_BUILD_SHA)'\" \ $(ARCH_CFLAGS) From 13dbf71a9003c9ad099c7572a4ef3c9e3f2efaa5 Mon Sep 17 00:00:00 2001 From: John Morris Date: Tue, 15 Jan 2019 17:39:05 +0800 Subject: [PATCH 404/516] rtapi/rtapi_global.h: silence compiler warning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Compiling hal/user_comps/xhc-whb04b-6/hal.cc In file [...]: rtapi/rtapi_global.h:129:68: error: ISO C++ forbids zero-size array ‘arena’ [-Werror=pedantic] unsigned char arena[0] __attribute__((aligned(RTAPI_CACHELINE))); ^ --- src/rtapi/rtapi_global.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rtapi/rtapi_global.h b/src/rtapi/rtapi_global.h index ca44e4d0a0..16a56685a2 100644 --- a/src/rtapi/rtapi_global.h +++ b/src/rtapi/rtapi_global.h @@ -126,7 +126,7 @@ typedef struct { struct rtapi_heap heap; //size_t heap_size; - unsigned char arena[0] __attribute__((aligned(RTAPI_CACHELINE))); + unsigned char arena[] __attribute__((aligned(RTAPI_CACHELINE))); } global_data_t; From b2ce2f82c9d58601bf5d0b904de0fa2fb266f1ec Mon Sep 17 00:00:00 2001 From: John Morris Date: Tue, 15 Jan 2019 17:57:08 +0800 Subject: [PATCH 405/516] rtapi/rtapi.h: silence compiler warning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Compiling hal/user_comps/xhc-whb04b-6/hal.cc In file [...]: rtapi/rtapi.h:501:15: error: ISO C++ forbids zero-size array ‘buf’ [-Werror=pedantic] char buf[0]; // actual message ^ --- src/rtapi/rtapi.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rtapi/rtapi.h b/src/rtapi/rtapi.h index ae13f5f7fd..7a8168edd9 100644 --- a/src/rtapi/rtapi.h +++ b/src/rtapi/rtapi.h @@ -498,7 +498,7 @@ typedef struct { int pid; // if User RT or ULAPI; 0 for kernel int level; // as passed in to rtapi_print_msg() char tag[TAGSIZE]; // eg program or module name - char buf[0]; // actual message + char buf[]; // actual message } rtapi_msgheader_t; #define rtapi2syslog(level) (level+2) From 063220f2304146d76edbfb7fac92d35342adcc89 Mon Sep 17 00:00:00 2001 From: John Morris Date: Tue, 15 Jan 2019 18:02:35 +0800 Subject: [PATCH 406/516] rtapi/rtapi_io.h: silence compiler warning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Compiling hal/user_comps/xhc-whb04b-6/hal.cc In file [...]: rtapi/rtapi_io.h:71:2: error: extra ‘;’ [-Werror=pedantic] }; ^ --- src/rtapi/rtapi_io.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rtapi/rtapi_io.h b/src/rtapi/rtapi_io.h index 105097bc9e..04cc2f37b6 100644 --- a/src/rtapi/rtapi_io.h +++ b/src/rtapi/rtapi_io.h @@ -68,7 +68,7 @@ static inline unsigned char rtapi_inb(unsigned int port) static inline void rtapi_outw(unsigned short word, unsigned int port) { outw(word,port); -}; +} /** 'rtapi_inw() gets a word from 'port'. Returns the word. May be called from init/cleanup code, and from within realtime tasks. From 6c952e9f1516dd0f5cd1d67fe83bd4ae7f0e17db Mon Sep 17 00:00:00 2001 From: John Morris Date: Wed, 16 Jan 2019 01:00:11 +0800 Subject: [PATCH 407/516] hal/user_comps/xhc-whb04b-6: silence compiler warnings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For some reason the `-pedantic` compiler arg was added on these sources, and for some reason only the Linaro tool chain (only used in Jessie armhf builds) gives the following warning: In file included from hal/user_comps/xhc-whb04b-6/usb.cc:23:0: /usr/include/libusb-1.0/libusb.h:738:4: error: ISO C++ forbids zero-size array ‘dev_capability_data’ [-Werror=pedantic] [0] /* non-standard, but usually working code */ ^ --- src/hal/user_comps/xhc-whb04b-6/Submakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hal/user_comps/xhc-whb04b-6/Submakefile b/src/hal/user_comps/xhc-whb04b-6/Submakefile index 83768e8860..1efd9b3b72 100644 --- a/src/hal/user_comps/xhc-whb04b-6/Submakefile +++ b/src/hal/user_comps/xhc-whb04b-6/Submakefile @@ -9,7 +9,7 @@ XHC_WHB04B6_SRC = hal/user_comps/xhc-whb04b-6/hal.cc \ hal/user_comps/xhc-whb04b-6/main.cc XHC_WHB04B6_DEBUG = -g -funwind-tables -XHC_WHB04B6_CFLAGS += $(LIBUSB10_CFLAGS) $(XHC_WHB04B6_DEBUG) -Wall -pedantic +XHC_WHB04B6_CFLAGS += $(LIBUSB10_CFLAGS) $(XHC_WHB04B6_DEBUG) -Wall XHC_WHB04B6_LIBS = -lstdc++ $(LIBUSB10_LIBS) $(PROTOBUF_LIBS) $(call TOOBJSDEPS, $(XHC_WHB04B6_SRC)) : EXTRAFLAGS += $(XHC_WHB04B6_CFLAGS) From 244d5bf8178727761a946e2660ca48cab808a9a7 Mon Sep 17 00:00:00 2001 From: John Morris Date: Wed, 16 Jan 2019 01:12:12 +0800 Subject: [PATCH 408/516] Fix ccache Adding `-DGIT_BUILD_SHA=$(GIT_BUILD_SHA)` to every single gcc and g++ command breaks ccache. This patch removes that and applies it to the single file that actually uses it. --- src/Makefile | 4 ---- src/rtapi/Submakefile | 3 +++ 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/Makefile b/src/Makefile index f53a3d969c..d654ca2b64 100755 --- a/src/Makefile +++ b/src/Makefile @@ -375,9 +375,6 @@ PROFILE_LDFLAGS := CFLAGS := $(INCLUDE) $(OPT) $(DEBUG) $(DPKG_CFLAGS) $(PROFILE_CFLAGS) \ -DULAPI $(call cc-option,-std=gnu99 -fgnu89-inline) -# enable runtime comparison of GIT_CONFIG_SHA (config.h) and GIT_BUILD_SHA -CFLAGS += -DGIT_BUILD_SHA=\"'$(GIT_BUILD_SHA)'\" - # make ck_pr.h happy: CFLAGS += $(CK_CFLAGS) @@ -390,7 +387,6 @@ BASE_CXXFLAGS:= $(INCLUDE) $(CXXFLAGS) \ $(CK_CFLAGS) \ $(DEBUG) $(OPT) \ $(PROFILE_CFLAGS) \ - -DGIT_BUILD_SHA=\"'$(GIT_BUILD_SHA)'\" \ $(ARCH_CFLAGS) CXXFLAGS := $(BASE_CXXFLAGS) -DULAPI diff --git a/src/rtapi/Submakefile b/src/rtapi/Submakefile index 2489df451b..4dba648148 100644 --- a/src/rtapi/Submakefile +++ b/src/rtapi/Submakefile @@ -356,6 +356,9 @@ RTAPI_MSGD_SRCS = \ RTAPI_MSGD_OBJS := $(call TOOBJS, $(RTAPI_MSGD_SRCS)) +$(call TOOBJS, rtapi/rtapi_msgd.cc): \ + CXXFLAGS += -DGIT_BUILD_SHA=\"'$(GIT_BUILD_SHA)'\" + RTAPI_MSGD_CFLAGS := \ $(PROTOBUF_CFLAGS) $(CZMQ_CFLAGS) $(AVAHI_CFLAGS) From 4ebdbc0719c67bb4f2b908be9f121d82203e4111 Mon Sep 17 00:00:00 2001 From: Mick Date: Mon, 14 Jan 2019 14:54:37 +0000 Subject: [PATCH 409/516] Add packaging control to ensure unique MKUUID is in /etc/linuxcnc/machinekit.ini An install onto a blank canvas will create files with unique MKUUID If dir already exists, if mkuuid file present with valid UUID this trumps all If no mkuuid file but machinekit ini has valid MKUUID, this is used If neither exist or are valid, new generated one used and mkuuid generated. MKUUID is generated on machine installed to, so all MKUUIDs installed after this package change, should be unique --- debian/control.in | 2 +- debian/machinekit.postinst | 44 +++++++++++++++++++++++++++++++++++++- src/configure.ac | 1 - 3 files changed, 44 insertions(+), 3 deletions(-) diff --git a/debian/control.in b/debian/control.in index 1bb17b7c27..0ba8becb95 100644 --- a/debian/control.in +++ b/debian/control.in @@ -54,7 +54,7 @@ Depends: ${shlibs:Depends}, machinekit-rt-threads, tcl8.6, tk8.6, python-avahi, python-simplejson, python-pyftpdlib, python-pydot, xdot, tclreadline, bc, procps, psmisc, - python-gst0.10 + python-gst0.10, uuid-runtime Description: PC based motion controller for real-time Linux Machinekit is the next-generation Enhanced Machine Controller which provides motion control for CNC machine tools and robotic diff --git a/debian/machinekit.postinst b/debian/machinekit.postinst index da262b98c0..449fafe1dd 100755 --- a/debian/machinekit.postinst +++ b/debian/machinekit.postinst @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash #DEBHELPER# @@ -55,4 +55,46 @@ if [ -f "/usr/share/linuxcnc" ]; then fi fi +############################################################################### +INIFILE=/etc/linuxcnc/machinekit.ini +NEWUUID=$(uuidgen) +MKUUIDFILE=no + +# if there is an existing valid mkuuid file - use it +if [ -f /etc/linuxcnc/mkuuid ]; then + UUID=$(echo | cat /etc/linuxcnc/mkuuid) + if [[ "$UUID" == "a42c8c6b-4025-4f83-ba28-dad21114744a" ]]; then + echo "Old void MKUUID in mkuuid $UUID - skipping" + else + echo "Valid MKUUID in mkuuid $UUID - using that" + NEWUUID=$UUID ; + MKUUIDFILE=yes + fi +fi + +# change machinekit.ini MKUUID for new unique one. + +if [ -f $INIFILE ]; then + LINE=$(grep -F "MKUUID=" $INIFILE) ; + UUID=$(echo "$LINE" | cut -c 8-) ; + if [[ "$UUID" == "a42c8c6b-4025-4f83-ba28-dad21114744a" ]]; then + echo "Old value in $INIFILE replaced with new MKUUID $NEWUUID" + sed -i "s|^MKUUID=.*|MKUUID=$NEWUUID|" $INIFILE + else + if [[ "$UUID" != "$NEWUUID" ]] && [[ $MKUUIDFILE == "yes" ]]; then + echo "Value in mkuuid and ini files differ - using mkuuid $NEWUUID" + sed -i "s|^MKUUID=.*|MKUUID=$NEWUUID|" $INIFILE + else + echo "Valid value in ini file $UUID - leaving" + fi + fi +else + echo "ERROR: $INIFILE not found" +fi + +# Ensure mkuuid file holds same UUID + +echo "$NEWUUID" > /etc/linuxcnc/mkuuid + +################################################################################# diff --git a/src/configure.ac b/src/configure.ac index 58976c10d9..138e5457de 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -3147,7 +3147,6 @@ if test "$RUN_IN_PLACE" = "yes"; then fi else ## if packaging we don't want to give MKUUID a unique uuid yet - else all packages will have same one - AC_MSG_RESULT($BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini does not exist - creating one) mkdir -p $BUILD_TOPLEVEL/etc/linuxcnc cp ../scripts/machinekit.ini.tmpl $BUILD_TOPLEVEL/etc/linuxcnc/machinekit.ini fi From 931ada8f07f962c5e8c5b01c7555388c41405006 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Wed, 23 Jan 2019 10:12:08 +0100 Subject: [PATCH 410/516] machinetalk: cleanup PEP8 naming issues --- lib/python/machinekit/service.py | 6 +++--- src/machinetalk/mklauncher/mklauncher.py | 6 +++--- src/machinetalk/mkwrapper/mkwrapper.py | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/python/machinekit/service.py b/lib/python/machinekit/service.py index 3acdcfa5ec..5810ef4b2b 100644 --- a/lib/python/machinekit/service.py +++ b/lib/python/machinekit/service.py @@ -131,7 +131,7 @@ def __init__( ) ) - self.statusService = ZeroconfService( + self.status_service = ZeroconfService( self.name, self.port, stype=self.stype, @@ -141,7 +141,7 @@ def __init__( ) def publish(self): - self.statusService.publish() + self.status_service.publish() def unpublish(self): - self.statusService.unpublish() + self.status_service.unpublish() diff --git a/src/machinetalk/mklauncher/mklauncher.py b/src/machinetalk/mklauncher/mklauncher.py index 5790b1413f..16c326a387 100644 --- a/src/machinetalk/mklauncher/mklauncher.py +++ b/src/machinetalk/mklauncher/mklauncher.py @@ -285,7 +285,7 @@ def _create_services(self, host_in_name, svc_uuid): loopback=self.loopback, debug=self.debug, ) - self.commandService = service.Service( + self.command_service = service.Service( type_='launchercmd', svc_uuid=svc_uuid, dsn=self.command_ds_name, @@ -299,14 +299,14 @@ def _publish_services(self): # Zeroconf try: self.launcher_service.publish() - self.commandService.publish() + self.command_service.publish() except Exception as e: logger.error(('cannot register DNS service' + str(e))) sys.exit(1) def _unpublish_services(self): self.launcher_service.unpublish() - self.commandService.unpublish() + self.command_service.unpublish() def _add_pparams_to_message(self): parameters = ProtocolParameters() diff --git a/src/machinetalk/mkwrapper/mkwrapper.py b/src/machinetalk/mkwrapper/mkwrapper.py index cf7551c4af..ac9cc84700 100644 --- a/src/machinetalk/mkwrapper/mkwrapper.py +++ b/src/machinetalk/mkwrapper/mkwrapper.py @@ -79,7 +79,7 @@ def __init__( self.file_port = get_free_port() self.file_dsname = "ftp://" + self.host + ":" + str(self.file_port) - self.fileService = service.Service( + self.file_service = service.Service( type_='file', svc_uuid=svc_uuid, dsn=self.file_dsname, @@ -113,7 +113,7 @@ def __init__( # Zeroconf try: - self.fileService.publish() + self.file_service.publish() except Exception as e: print_error('cannot register DNS service' + str(e)) sys.exit(1) @@ -128,7 +128,7 @@ def run(self): self.server.serve_forever(timeout=1, blocking=False) self.server.close_all() - self.fileService.unpublish() + self.file_service.unpublish() self.running = False return From 52b63432046aac1667a1baa37f3c5e968cb5bc2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20R=C3=B6ssler?= Date: Wed, 23 Jan 2019 10:12:24 +0100 Subject: [PATCH 411/516] mkwrapper: move tool table update to function --- src/machinetalk/mkwrapper/mkwrapper.py | 61 ++++++++++++++------------ 1 file changed, 34 insertions(+), 27 deletions(-) diff --git a/src/machinetalk/mkwrapper/mkwrapper.py b/src/machinetalk/mkwrapper/mkwrapper.py index ac9cc84700..b2bc2768bc 100644 --- a/src/machinetalk/mkwrapper/mkwrapper.py +++ b/src/machinetalk/mkwrapper/mkwrapper.py @@ -1212,35 +1212,9 @@ def update_config(self, stat): elif modified: self.send_config(self.status_tx.config, MT_EMCSTAT_INCREMENTAL_UPDATE) - def update_io(self, stat): + def update_io_tool_table(self, stat): modified = False - if self.io_first_run: - self.status.io.estop = 0 - self.status.io.flood = 0 - self.status.io.lube = 0 - self.status.io.lube_level = 0 - self.status.io.mist = 0 - self.status.io.pocket_prepped = 0 - self.status.io.tool_in_spindle = 0 - self.status.io.tool_offset.MergeFrom(self.zero_position()) - self.io_first_run = False - - for name in [ - 'estop', - 'flood', - 'lube', - 'lube_level', - 'mist', - 'pocket_prepped', - 'tool_in_spindle', - ]: - modified |= self.update_io_value(name, getattr(stat, name)) - - modified |= self.update_proto_position( - self.status.io, self.status_tx.io, 'tool_offset', stat.tool_offset - ) - tx_tool_result = EmcToolData() tool_table_changed = False table_index = 0 @@ -1323,6 +1297,39 @@ def update_io(self, stat): modified = True del tx_tool_result + return modified + + def update_io(self, stat): + modified = False + + if self.io_first_run: + self.status.io.estop = 0 + self.status.io.flood = 0 + self.status.io.lube = 0 + self.status.io.lube_level = 0 + self.status.io.mist = 0 + self.status.io.pocket_prepped = 0 + self.status.io.tool_in_spindle = 0 + self.status.io.tool_offset.MergeFrom(self.zero_position()) + self.io_first_run = False + + for name in [ + 'estop', + 'flood', + 'lube', + 'lube_level', + 'mist', + 'pocket_prepped', + 'tool_in_spindle', + ]: + modified |= self.update_io_value(name, getattr(stat, name)) + + modified |= self.update_proto_position( + self.status.io, self.status_tx.io, 'tool_offset', stat.tool_offset + ) + + modified |= self.update_io_tool_table(stat) + if self.io_full_update: self.add_pparams() self.send_io(self.status.io, MT_EMCSTAT_FULL_UPDATE) From 1917d88353a54d6f0470ab2fd8b89610353f00af Mon Sep 17 00:00:00 2001 From: bdebruijn Date: Mon, 11 Feb 2019 15:59:22 +0100 Subject: [PATCH 412/516] src/hal/sample_channel: add sample_channel component --- src/Makefile | 6 + src/hal/sample_channel/sample_channel.hal | 35 ++ src/hal/sample_channel/sample_channel_pb.c | 502 ++++++++++++++++++ src/hal/sample_channel/show_hal_sample.py | 56 ++ src/machinetalk/msgcomponents/Submakefile | 1 + src/machinetalk/msgcomponents/pbmsgs.c | 17 +- src/machinetalk/msgcomponents/pbmsgs.h | 1 + .../src/machinetalk/protobuf/sample.proto | 27 + 8 files changed, 639 insertions(+), 6 deletions(-) create mode 100644 src/hal/sample_channel/sample_channel.hal create mode 100644 src/hal/sample_channel/sample_channel_pb.c create mode 100644 src/hal/sample_channel/show_hal_sample.py create mode 100644 src/machinetalk/proto/src/machinetalk/protobuf/sample.proto diff --git a/src/Makefile b/src/Makefile index ecaccc7b0e..be0b34fcbf 100755 --- a/src/Makefile +++ b/src/Makefile @@ -586,6 +586,7 @@ HEADERS := \ machinetalk/build/machinetalk/protobuf/config.pb.h \ machinetalk/build/machinetalk/protobuf/firmware.npb.h \ machinetalk/build/machinetalk/protobuf/jplan.pb.h \ + machinetalk/build/machinetalk/protobuf/sample.pb.h \ machinetalk/build/machinetalk/protobuf/message.npb.h \ machinetalk/build/machinetalk/protobuf/motcmds.pb.h \ machinetalk/build/machinetalk/protobuf/object.npb.h \ @@ -610,6 +611,7 @@ HEADERS := \ machinetalk/build/machinetalk/protobuf/config.npb.h \ machinetalk/build/machinetalk/protobuf/emcclass.pb.h \ machinetalk/build/machinetalk/protobuf/jplan.npb.h \ + machinetalk/build/machinetalk/protobuf/sample.npb.h \ machinetalk/build/machinetalk/protobuf/log.pb.h \ machinetalk/build/machinetalk/protobuf/motcmds.npb.h \ machinetalk/build/machinetalk/protobuf/nanopb.pb.h \ @@ -1539,6 +1541,9 @@ motmod-objs += libnml/posemath/sincos.o $(MATHSTUB) obj-m += jplan.o jplan-objs := hal/jplanner/jplan.o machinetalk/build/machinetalk/protobuf/jplan.npb.o +obj-m += sample_channel_pb.o +sample_channel_pb-objs := hal/sample_channel/sample_channel_pb.o machinetalk/build/machinetalk/protobuf/sample.npb.o + obj-m += interpolate.o interpolate-objs := hal/interpolator/interpolate.o machinetalk/build/machinetalk/protobuf/ros.npb.o @@ -1822,6 +1827,7 @@ $(RTLIBDIR)/hal_gm$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_gm-objs)) $(RTLIBDIR)/tp$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(tp-objs)) $(RTLIBDIR)/ufdemo$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(ufdemo-objs)) $(RTLIBDIR)/jplan$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(jplan-objs)) +$(RTLIBDIR)/sample_channel_pb$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(sample_channel_pb-objs)) $(RTLIBDIR)/interpolate$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(interpolate-objs)) $(RTLIBDIR)/icomp$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(icomp-objs)) $(RTLIBDIR)/lutn-demo$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(lutn-demo-objs)) diff --git a/src/hal/sample_channel/sample_channel.hal b/src/hal/sample_channel/sample_channel.hal new file mode 100644 index 0000000000..95b642d52b --- /dev/null +++ b/src/hal/sample_channel/sample_channel.hal @@ -0,0 +1,35 @@ +# nanopb protobuf descriptors needed for protobuf de/encoding in RT +loadrt pbmsgs + +# signal generator so we have something to see +loadrt siggen + +# create sample_channel instance with pins and ring +# give the type of pins to be created with: samples=bfusUSf +# tell max cycles the ring should be able to contain by: cycles=100 +newinst sample_channel_pb sampler --- samples=bfusUSf cycles=100 + +# create fast (1 ms) thread +newthread fast 1000000 fp +# create slow (0.5 second) thread so we can inspect with a python reader on the ring +newthread slow 500000000 fp + +# add function to thread +addf sampler.record_sample slow +addf siggen.0.update fast + +setp sampler.in-bit.1 1 +setp sampler.in-flt.1 3.14159265359 +setp sampler.in-u32.1 123456 +setp sampler.in-s32.1 -654321 + +#connect sine signal to 2nd float pin +net sine siggen.0.sine sampler.in-flt.2 + +#set low frequency so we can see some changes in the samples +setp siggen.0.frequency 0.125 + +# this will record the pin sample to the ring each time the function is called +setp sampler.record 1 + +start diff --git a/src/hal/sample_channel/sample_channel_pb.c b/src/hal/sample_channel/sample_channel_pb.c new file mode 100644 index 0000000000..03a453bf06 --- /dev/null +++ b/src/hal/sample_channel/sample_channel_pb.c @@ -0,0 +1,502 @@ +/***************************************************************************** + + Instantiatiable recorder with configurable pins + + This recorder puts pin values with a timestamp in a protobuf encoded message + in a HAL ringbuffer. + + See also: + * sample_channel.hal + * show_sample.py + * sample.proto + + Usage: + newinst sample_channel_pb sampler --- samples=bbfusUS cycles=10 + + This will create an instance "sampler" with pins and a ring. + The ring can contain at least 10 cycles of the record_sample.funct + Pins: + * 2 bits + * 1 float + * 1 unsigned 32 + * 1 signed 32 + * 1 unsigned 64 + * 1 signed 64 + Ring: + * sampler.ring + + Author: Bas de Bruijn + License: GPL Version 2 + + Copyright (c) 2019 All rights reserved. + + This program is free software; you can redistribute it and/or + modify it under the terms of version 2 of the GNU General + Public License as published by the Free Software Foundation. + This library 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 this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA + + THE AUTHORS OF THIS LIBRARY ACCEPT ABSOLUTELY NO LIABILITY FOR + ANY HARM OR LOSS RESULTING FROM ITS USE. IT IS _EXTREMELY_ UNWISE + TO RELY ON SOFTWARE ALONE FOR SAFETY. Any machinery capable of + harming persons must have provisions for completely removing power + from all motors, etc, before persons enter any danger area. All + machinery must be designed to comply with local and national safety + codes, and the authors of this software can not, and do not, take + any responsibility for such compliance. + +*****************************************************************************/ + + +#include "rtapi.h" +#include "rtapi_app.h" +#include "rtapi_string.h" +#include "hal.h" +#include "hal_priv.h" +#include "hal_ring.h" + +#include /* for atoi() */ +#include +#include + +MODULE_AUTHOR("Bas de Bruijn"); +MODULE_DESCRIPTION("Instantiable configurable recorder to a HAL ring"); +MODULE_LICENSE("GPLv2"); + +RTAPI_TAG(HAL,HC_INSTANTIABLE); + +#define MAX_PINS 64 // maximum amount of pins, see also sample.proto +#define RB_HEADROOM 1.2 // ringbuffer size overallocation + +static int comp_id; +static char *compname = "sample_channel_pb"; + +struct inst_data{ + // pins + hal_bit_t *record; // pin: when high -> start recording + hal_data_u *pins_in[MAX_PINS]; // pin: array of sample values + hal_u32_t *send_fail; // error counter on the send side + hal_u32_t *dropped; // dropped sampled due to full ring; + + // the ringbuffer + ringbuffer_t sample_ring; + size_t sample_size; + + // other instance data + char samples_cfg[MAX_PINS]; // the samples config string + int nr_samples; // the number of samples + int cycles; // amount of cycles + + const char *name[HAL_NAME_LEN + 1]; // the name of this instance +}; + +// copied from pbring.c +enum { + NBP_SIZE_FAIL = -100, + NBP_ENCODE_FAIL = -101, + NBP_DECODE_FAIL = -102, + RB_RESERVE_FAIL = -103, + RB_WRITE_FAIL = -104, +} rtmsg_errors_t; + + +// copied from pbring.c and adapted where needed +// +// encode message struct in msg according to 'fields', and send off via rb +// return 0 on success or < 0 on failure; see rtmsg_errors_t +// +static int npb_send_msg(const void *msg, const pb_field_t *fields, + ringbuffer_t *rb, const hal_funct_args_t *fa) +{ + void *buffer; + int retval; + size_t size; + + // determine size + pb_ostream_t sstream = PB_OSTREAM_SIZING; + if (!pb_encode(&sstream, fields, msg)) { + rtapi_print_msg(RTAPI_MSG_ERR, + "%s: sizing pb_encode(): %s written=%zu\n", + fa_funct_name(fa), PB_GET_ERROR(&sstream), sstream.bytes_written); + return NBP_SIZE_FAIL; + } + size = sstream.bytes_written; + + // preallocate memory in ringbuffer + if ((retval = record_write_begin(rb, (void **)&buffer, size)) != 0) { + rtapi_print_msg(RTAPI_MSG_ERR, + "%s: record_write_begin(%zu) failed: %d\n", fa_funct_name(fa), + size, retval); + return RB_RESERVE_FAIL; + } + + // zero-copy encode directly into ringbuffer + pb_ostream_t rstream = pb_ostream_from_buffer(buffer, size); + if (!pb_encode(&rstream, fields, msg)) { + rtapi_print_msg(RTAPI_MSG_ERR, + "%s: pb_encode failed: %s, size=%zu written=%zu\n", + fa_funct_name(fa), PB_GET_ERROR(&rstream), size, + rstream.bytes_written); + return NBP_ENCODE_FAIL; + } + + // send it off + if ((retval = record_write_end(rb, buffer, rstream.bytes_written))) { + rtapi_print_msg(RTAPI_MSG_ERR, + "%s: record_write_end(%zu) failed: %d\n", fa_funct_name(fa), + size, retval); + return RB_WRITE_FAIL; + } + return 0; +} + + +static int record_sample(void *arg, const hal_funct_args_t *fa) +{ + int i=0; + int retval; + // get hold of the instance + struct inst_data *ip = arg; + if (*(ip->record) == true) { + // read the values of the pins ip->pins_in[i], up to nr_samples + // depending on the type, put value in ip->sample->arr_sample + // pins are made in order of the config string + for (i = 0; i < ip->nr_samples; i++) { + machinetalk_Sample tx_sample = machinetalk_Sample_init_zero; + tx_sample.has_timestamp = true; + tx_sample.timestamp = fa_thread_start_time(fa); + switch (ip->samples_cfg[i]) + { + case 'b': + case 'B': + tx_sample.has_v_bool = true; + tx_sample.v_bool = get_bit_value(ip->pins_in[i]); + break; + case 'f': + case 'F': + tx_sample.has_v_double = true; + tx_sample.v_double = get_float_value(ip->pins_in[i]); + break; + case 'u': + tx_sample.has_v_uint32 = true; + tx_sample.v_uint32 = get_u32_value(ip->pins_in[i]); + break; + case 's': + tx_sample.has_v_int32 = true; + tx_sample.v_int32 = get_s32_value(ip->pins_in[i]); + break; + case 'U': + tx_sample.has_v_uint64 = true; + tx_sample.v_uint64 = get_u64_value(ip->pins_in[i]); + break; + case 'S': + tx_sample.has_v_int64 = true; + tx_sample.v_int64 = get_s64_value(ip->pins_in[i]); + break; + case HAL_TYPE_MAX: + case HAL_TYPE_UNSPECIFIED: + // should not happen, already checked + break; + } + // copied from pbring.c and adapted as needed + // sample message has been filled and can now be sent off. + if ((retval = npb_send_msg(&tx_sample, machinetalk_Sample_fields, + &ip->sample_ring, fa))) { + rtapi_print_msg(RTAPI_MSG_ERR, + "%s: sending of message failed = %d", compname, retval); + *(ip->send_fail) +=1; + } + } + } + return 0; +} + + +static int calc_sampling_config(struct inst_data *ip) +{ + int i=0, validchar=0; + char character; + // track the amount of valid characters + validchar = 0; + for (i = 0; (character = ip->samples_cfg[i]); i++) { + switch (character) { + case 'b': + case 'B': + validchar++; + break; + case 'f': + case 'F': + validchar++; + break; + case 'u': + validchar++; + break; + case 's': + validchar++; + break; + case 'U': + validchar++; + break; + case 'S': + validchar++; + break; + default: + rtapi_print_msg(RTAPI_MSG_ERR, "invalid character in " + "\"samples=\" string. Needs to be b,f,s,u,S or U\n"); + hal_exit(comp_id); + return -1; + } + ip->nr_samples = validchar; + } + return 0; +} + + +static int export_pins(struct inst_data *ip, const char *name) +{ + int retval=0, i=0, idx=0; + int indexes[6] = {0,0,0,0,0,0}; + char *pin_type; + char character = '-'; + hal_type_t type = HAL_TYPE_UNSPECIFIED; + + // some debug output + for (i = 0; (i < ip->nr_samples); i++) { + hal_print_msg(RTAPI_MSG_DBG,"%s: ip->samples_cfg[%d] = %c", + compname, i, ip->samples_cfg[i]); + } + + // traverse ip->samples_cfg array + // create and name the pin depending on the type and consecutive number + for (i = 0; i < ip->nr_samples; i++) { + + character = ip->samples_cfg[i]; + hal_print_msg(RTAPI_MSG_DBG,"%s: ip->samples_cfg[%d] = %c", compname, + i, character); + switch (character) { + case 'b': + case 'B': + pin_type = "bit"; + type = HAL_BIT; + idx = 0; + break; + case 'f': + case 'F': + pin_type = "flt"; + type = HAL_FLOAT; + idx = 1; + break; + case 'u': + pin_type = "u32"; + type = HAL_U32; + idx = 2; + break; + case 's': + pin_type = "s32"; + type = HAL_S32; + idx = 3; + break; + case 'U': + pin_type = "u64"; + type = HAL_U64; + idx = 4; + break; + case 'S': + pin_type = "s64"; + type = HAL_S64; + idx = 5; + break; + case '-': + default: + type = HAL_TYPE_UNSPECIFIED; + hal_print_msg(RTAPI_MSG_ERR, + "%s: invalid type '%c' for pin %d\n", compname, type, i); + hal_exit(comp_id); + return -1; + } + indexes[idx]++; + hal_print_msg(RTAPI_MSG_DBG, + "%s: new pin name %s.in%d-%s", compname, name, indexes[idx], + pin_type); + // create sample pins + if ((retval = hal_pin_newf(type, HAL_IN, (void **) &ip->pins_in[i], + comp_id, "%s.in-%s.%d", name, pin_type, indexes[idx])) < 0) { + return retval; + } + } + // create misc pins + if (((retval = hal_pin_bit_newf(HAL_IN, &(ip->record), comp_id, + "%s.record", name))) || + ((retval = hal_pin_u32_newf(HAL_IN, &(ip->dropped), comp_id, + "%s.dropped", name))) || + ((retval = hal_pin_u32_newf(HAL_OUT, &(ip->send_fail), comp_id, + "%s.send-fail", name)))) { + return retval; + } + ip->dropped = 0; + return 0; +} + + +static int create_ring(struct inst_data *ip, const char *name) +{ + int retval=0; + // determine the required size of the ringbuffer + size_t sample_size = sizeof(machinetalk_Sample); + size_t rbsize = (sample_size * ip->cycles) * RB_HEADROOM; + + // create the ring queue + if ((retval = hal_ring_newf(rbsize, sample_size, RINGTYPE_RECORD, + "%s.ring", name)) < 0) { + hal_print_msg(RTAPI_MSG_ERR, + "%s: failed to create new ring '%s.ring': %d\n", compname, + name, retval); + return retval; + } + + // attach to the command ringbuffer '.ring' if it exists + // must be record mode + unsigned flags; + if (!hal_ring_attachf(&(ip->sample_ring), &flags, "%s.ring", name)) + { + if ((flags & RINGTYPE_MASK) != RINGTYPE_RECORD) { + HALERR("ring %s.ring not a record mode ring: mode=%d", name, + flags & RINGTYPE_MASK); + return -EINVAL; + } + } + else + { + HALERR("ring %s.ring does not exist", name); + return -EINVAL; + } + return 0; +} + + +static int instantiate_sample_channel_pb(const int argc, const char **argv) +{ + struct inst_data *ip; + const char *name = argv[1]; + int inst_id=0, i=0, j=0, cycles=0; + char samples[MAX_PINS]; + bool has_samples_string=false, has_cycles_string=false; + + // parse arguments + for(i = 2; i < argc; i++) + { + const char *argument = argv[i]; + hal_print_msg(RTAPI_MSG_ERR, + "%s: %s: argument %d = %s\n", compname, name, i, argument); + if((strstr(argument, "samples=")) != NULL) + { + strcpy(samples, &argument[8]); + has_samples_string = true; + } + else if((strstr(argument, "cycles=")) != NULL) + { + cycles = atoi(&argument[7]); + hal_print_msg(RTAPI_MSG_DBG, "cycles = %d", cycles); + has_cycles_string = true; + } + } + // exit if no samples + if (!has_samples_string) + { + hal_print_msg(RTAPI_MSG_ERR, + "%s: %s: ERROR: sample pins must be specified\n", + compname, + name); + return -1; + } + // exit if no cycles + if (!has_cycles_string) + { + hal_print_msg(RTAPI_MSG_ERR, + "%s: %s: ERROR: cycles (nr of samples on the ring) is hot given\n", + compname, name); + return -1; + } + // check if samples string is not void + if (samples[0] == '\0') + { + hal_print_msg(RTAPI_MSG_ERR, + "%s: %s: ERROR: sample pins string is void\n", compname, name); + return -1; + } + // instantiate component + if ((inst_id = hal_inst_create(name, comp_id, + sizeof(struct inst_data), + (void **)&ip)) < 0) + return -1; + + strcpy(ip->samples_cfg, samples); + ip->cycles = cycles; + hal_print_msg(RTAPI_MSG_DBG,"%s: %s: ip->samples_cfg set to %s", + compname, name, ip->samples_cfg); + // calculate amount of pins, types, values in instance data + if (calc_sampling_config(ip) < 0){ + hal_print_msg(RTAPI_MSG_ERR, + "%s: %s: ERROR: setup sampling configuration failed\n", + compname, name); + return -1; + } + hal_print_msg(RTAPI_MSG_DBG, + "%s: %s: ip->nr_samples set to %d", compname, name, ip->nr_samples); + for (j = 0; (j < ip->nr_samples); j++) { + hal_print_msg(RTAPI_MSG_DBG, + "%s: %s: ip->samples_cfg[%d] = %c", compname, name, j, + ip->samples_cfg[j]); + } + hal_print_msg(RTAPI_MSG_DBG, + "%s: %s: ip->samples_cfg is %s", compname, name, ip->samples_cfg); + // create the ring + if ( create_ring(ip, name) < 0 ) { + hal_print_msg(RTAPI_MSG_ERR, + "%s: %s: ERROR: creation of ring failed for instance \n", + compname, name); + return -1; + } + hal_print_msg(RTAPI_MSG_DBG, + "%s: %s: ip->samples_cfg is %s", compname, name, ip->samples_cfg); + // export pins + if ( export_pins(ip, name) < 0 ) { + hal_print_msg(RTAPI_MSG_ERR, + "%s: %s: ERROR: export of pins failed for instance \n", + compname, name); + return -1; + } + // export the function for using it on the thread + hal_export_xfunct_args_t xfunct_args = { + .type = FS_XTHREADFUNC, + .funct.x = record_sample, + .arg = ip, + .uses_fp = 0, + .reentrant = 0, + .owner_id = inst_id + }; + return hal_export_xfunctf(&xfunct_args, "%s.record_sample", name); +} + + +// entry point creating this instance +int rtapi_app_main(void) +{ + comp_id = hal_xinit(TYPE_RT, 0, 0, + (hal_constructor_t)instantiate_sample_channel_pb, NULL, compname); + if (comp_id < 0) return comp_id; + hal_ready(comp_id); + return 0; +} + + +void rtapi_app_exit(void) +{ + hal_exit(comp_id); +} diff --git a/src/hal/sample_channel/show_hal_sample.py b/src/hal/sample_channel/show_hal_sample.py new file mode 100644 index 0000000000..be2c34cf27 --- /dev/null +++ b/src/hal/sample_channel/show_hal_sample.py @@ -0,0 +1,56 @@ +# purpose, get and inspect samples from sample channel component +# prerequisits: +# +# terminal 1 +# halrun -I sample_channel.hal +# +# terminal 2 +# python2 show_hal_sample.py +# +# change pin values in hal in terminal 1 + +import os, time +from machinekit import hal +from machinetalk.protobuf.sample_pb2 import Sample +from machinetalk.protobuf.types_pb2 import * + +# provide the name to attach to +name = "sampler.ring" +sample = 0 +try: + # attach to existing ring + r = hal.Ring(name) + while True: + # inspect the ring: + for i in r: + sample += 1 + print("Sample :%i" % sample) + b = i.tobytes() + s = Sample() + s.ParseFromString(b) + if (s.HasField("v_bool") == True): + v = s.v_bool + t = "bit" + if (s.HasField("v_double") == True): + v = s.v_double + t = "flt" + if (s.HasField("v_uint32") == True): + v = s.v_uint32 + t = "u32" + if (s.HasField("v_int32") == True): + v = s.v_int32 + t = "s32" + if (s.HasField("v_uint64") == True): + v = s.v_uint64 + t = "u64" + if (s.HasField("v_int64") == True): + v = s.v_int64 + t = "s64" + # print out something meaningfull + print("time: %s\n%s -> %s" % (s.timestamp, t, v)) + # consume the sample + r.shift() + time.sleep(0.01) + +except NameError as e: + print(e) diff --git a/src/machinetalk/msgcomponents/Submakefile b/src/machinetalk/msgcomponents/Submakefile index 0dc6b9f2c3..dc0325867b 100644 --- a/src/machinetalk/msgcomponents/Submakefile +++ b/src/machinetalk/msgcomponents/Submakefile @@ -25,6 +25,7 @@ pbmsgs-objs := \ $(PBGEN)/$(NAMESPACEDIR)/preview.npb.o \ $(PBGEN)/$(NAMESPACEDIR)/status.npb.o \ $(PBGEN)/$(NAMESPACEDIR)/ros.npb.o \ + $(PBGEN)/$(NAMESPACEDIR)/sample.npb.o \ $(PBGEN)/$(NAMESPACEDIR)/jplan.npb.o \ $(PBGEN)/$(NAMESPACEDIR)/value.npb.o diff --git a/src/machinetalk/msgcomponents/pbmsgs.c b/src/machinetalk/msgcomponents/pbmsgs.c index c3a1e5d0cb..e1f9b2d902 100644 --- a/src/machinetalk/msgcomponents/pbmsgs.c +++ b/src/machinetalk/msgcomponents/pbmsgs.c @@ -70,19 +70,23 @@ PB_DESCRIPTOR(MotionStatus); PB_DESCRIPTOR(RTAPI_Message); PB_DESCRIPTOR(RTAPICommand); PB_DESCRIPTOR(LogMessage); +PB_DESCRIPTOR(Value); /* PB_DESCRIPTOR(Test1); */ /* PB_DESCRIPTOR(Test2); */ /* PB_DESCRIPTOR(Test3); */ // jplan messages -PB_DESCRIPTOR(JplanJoint) -PB_DESCRIPTOR(JplanCommand) +PB_DESCRIPTOR(JplanJoint); +PB_DESCRIPTOR(JplanCommand); //ros messages -PB_DESCRIPTOR(JointTrajectoryPoint) -PB_DESCRIPTOR(JointTrajectory) -PB_DESCRIPTOR(Header) -PB_DESCRIPTOR(Time) +PB_DESCRIPTOR(JointTrajectoryPoint); +PB_DESCRIPTOR(JointTrajectory); +PB_DESCRIPTOR(Header); +PB_DESCRIPTOR(Time); + +// sample stream message +PB_DESCRIPTOR(Sample); // this likely supersedes the above exports, as it // contains a superset of pb__fields @@ -103,6 +107,7 @@ msginfo_t msginfo[] = { VALUE_MESSAGES \ JPLAN_MESSAGES \ ROS_MESSAGES \ + SAMPLE_MESSAGES \ PB_MSGINFO_DELIMITER }; diff --git a/src/machinetalk/msgcomponents/pbmsgs.h b/src/machinetalk/msgcomponents/pbmsgs.h index 753addfa7e..fd80dfde30 100644 --- a/src/machinetalk/msgcomponents/pbmsgs.h +++ b/src/machinetalk/msgcomponents/pbmsgs.h @@ -32,6 +32,7 @@ typedef struct { #include #include #include +#include #endif // _PBMSGS_H diff --git a/src/machinetalk/proto/src/machinetalk/protobuf/sample.proto b/src/machinetalk/proto/src/machinetalk/protobuf/sample.proto new file mode 100644 index 0000000000..71c82cc857 --- /dev/null +++ b/src/machinetalk/proto/src/machinetalk/protobuf/sample.proto @@ -0,0 +1,27 @@ +syntax = "proto2"; +package machinetalk; + +// This message contains a Sample. +// A sample is a value of a type. +// A sample can contain a timestamp + +// see README.msgid +// msgid base: 360 + +import "machinetalk/protobuf/nanopb.proto"; +import "machinetalk/protobuf/value.proto"; + + +message Sample { + option (nanopb_msgopt).msgid = 361; + + optional fixed64 timestamp = 1; + optional bytes v_bytes = 2; + optional sfixed32 v_int32 = 3; + optional sfixed64 v_int64 = 4; + optional fixed32 v_uint32 = 5; + optional fixed64 v_uint64 = 6; + optional double v_double = 7; + optional string v_string = 8 [(nanopb).max_size = 41]; + optional bool v_bool = 9; +} From b96c02cd230920ddc300dca207dbeb7e55ab1733 Mon Sep 17 00:00:00 2001 From: ArcEye <770392+ArcEye@users.noreply.github.com> Date: Thu, 14 Feb 2019 09:58:06 +0000 Subject: [PATCH 413/516] Add shebang to machinekit script Looks like it has never been there and you don't need it for it to work! --- scripts/machinekit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/machinekit b/scripts/machinekit index 781d6a6eda..5211fb4152 100755 --- a/scripts/machinekit +++ b/scripts/machinekit @@ -1,4 +1,4 @@ -# /bin/bash +# !/bin/bash linuxcnc "$@" From e707d273750272ff469a42bc27804c750735a348 Mon Sep 17 00:00:00 2001 From: Mick Date: Fri, 15 Feb 2019 12:18:47 +0000 Subject: [PATCH 414/516] Add dep uuid-runtime for Stretch and above, missed in original. Signed-off-by: Mick --- debian/control.buster.in | 2 +- debian/control.sid.in | 2 +- debian/control.stretch.in | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/debian/control.buster.in b/debian/control.buster.in index 75771448d8..e601665c3e 100644 --- a/debian/control.buster.in +++ b/debian/control.buster.in @@ -53,7 +53,7 @@ Depends: ${shlibs:Depends}, machinekit-rt-threads, tcl8.6, tk8.6, python-zmq, python-protobuf (>= 2.4.1), python-avahi, python-simplejson, python-pyftpdlib, python-pydot, xdot, python-gst-1.0, - tclreadline, bc, procps, psmisc + tclreadline, bc, procps, psmisc, uuid-runtime Description: PC based motion controller for real-time Linux Machinekit is the next-generation Enhanced Machine Controller which provides motion control for CNC machine tools and robotic diff --git a/debian/control.sid.in b/debian/control.sid.in index 4c5acdb7c2..a0669765a5 100644 --- a/debian/control.sid.in +++ b/debian/control.sid.in @@ -53,7 +53,7 @@ Depends: ${shlibs:Depends}, machinekit-rt-threads, tcl8.6, tk8.6, python-zmq, python-protobuf (>= 2.4.1), python-avahi, python-simplejson, python-pyftpdlib, python-pydot, xdot, python-gst-1.0, python-gtksourceview2, - tclreadline, bc, procps, psmisc + tclreadline, bc, procps, psmisc, uuid-runtime Description: PC based motion controller for real-time Linux Machinekit is the next-generation Enhanced Machine Controller which provides motion control for CNC machine tools and robotic diff --git a/debian/control.stretch.in b/debian/control.stretch.in index 866a5712df..021a954737 100644 --- a/debian/control.stretch.in +++ b/debian/control.stretch.in @@ -53,7 +53,7 @@ Depends: ${shlibs:Depends}, machinekit-rt-threads, tcl8.6, tk8.6, python-zmq, python-protobuf (>= 2.4.1), python-avahi, python-simplejson, python-pyftpdlib, python-pydot, xdot, python-gst-1.0, python-gtksourceview2, - tclreadline, bc, procps, psmisc + tclreadline, bc, procps, psmisc, uuid-runtime Description: PC based motion controller for real-time Linux Machinekit is the next-generation Enhanced Machine Controller which provides motion control for CNC machine tools and robotic From 4a7b6e0d08645d67d794b4022341ddfb16579517 Mon Sep 17 00:00:00 2001 From: John Morris Date: Sat, 16 Feb 2019 13:29:58 +0800 Subject: [PATCH 415/516] Fix python error message for `loadusr(shell=True)` When passing `command` as a list with `shell=True`, the safer form of the call, fix the error message string build for a non-zero return code. --- src/hal/cython/machinekit/hal_loadusr.pyx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hal/cython/machinekit/hal_loadusr.pyx b/src/hal/cython/machinekit/hal_loadusr.pyx index 1422c9a086..949061312e 100644 --- a/src/hal/cython/machinekit/hal_loadusr.pyx +++ b/src/hal/cython/machinekit/hal_loadusr.pyx @@ -35,7 +35,7 @@ def loadusr(command, wait=False, wait_name=None, wait_timeout=5.0, shell=False, # check if process is alive ret = p.returncode if ret is not None: - raise RuntimeError(command + ' exited with return code ' + str(ret)) + raise RuntimeError(' '.join(cmd) + ' exited with return code ' + str(ret)) # check if component exists if (wait_name is not None) and (wait_name in components) and (components[wait_name].state == COMP_READY): return components[wait_name] From 4517e7a8620aa4f2922c376cd20ebd684342f5b4 Mon Sep 17 00:00:00 2001 From: Mick Date: Sat, 16 Feb 2019 16:32:03 +0000 Subject: [PATCH 416/516] Add docs build option directly to build_docker script Enables use of normal docker for machinekit manpage production Signed-off-by: Mick --- scripts/build_docker | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/scripts/build_docker b/scripts/build_docker index f1eb0e3568..b1df023240 100755 --- a/scripts/build_docker +++ b/scripts/build_docker @@ -162,7 +162,15 @@ case $CMD in ${RUN_TESTS} ${TEST_ARGS}" ) ;; - *) echo "Unkown command '$CMD'" >&2; exit 1 ;; + "docs") # Just build docs + BUILD_CL=( bash -xec " + cd src ; + ./autogen.sh ; + ./configure --enable-build-documentation ; + make docpages i_docpages ;" + ) + ;; + *) echo "Unknown command '$CMD'" >&2; exit 1 ;; esac ########################################################### From 4cda0f525883319a43f2f0178e667411ec9d4340 Mon Sep 17 00:00:00 2001 From: Bas de Bruijn Date: Fri, 22 Feb 2019 08:39:56 +0100 Subject: [PATCH 417/516] sample_channel_pb.c: remove case HAL_TYPE_UNSPECIFIED --- src/hal/sample_channel/sample_channel_pb.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/hal/sample_channel/sample_channel_pb.c b/src/hal/sample_channel/sample_channel_pb.c index 03a453bf06..df6337a2a0 100644 --- a/src/hal/sample_channel/sample_channel_pb.c +++ b/src/hal/sample_channel/sample_channel_pb.c @@ -199,10 +199,6 @@ static int record_sample(void *arg, const hal_funct_args_t *fa) tx_sample.has_v_int64 = true; tx_sample.v_int64 = get_s64_value(ip->pins_in[i]); break; - case HAL_TYPE_MAX: - case HAL_TYPE_UNSPECIFIED: - // should not happen, already checked - break; } // copied from pbring.c and adapted as needed // sample message has been filled and can now be sent off. From bf58d5953f2f377f23cd40973acbb09e65fabf62 Mon Sep 17 00:00:00 2001 From: Alan Condit Date: Sat, 23 Feb 2019 20:17:22 -0800 Subject: [PATCH 418/516] Replace rtapi_print( with rtapi_print_msg(RTAPI_MSG_DBG, --- .../drivers/hal_pru_generic/hal_pru_generic.c | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/hal/drivers/hal_pru_generic/hal_pru_generic.c b/src/hal/drivers/hal_pru_generic/hal_pru_generic.c index 30e4747ebc..861506f3c0 100644 --- a/src/hal/drivers/hal_pru_generic/hal_pru_generic.c +++ b/src/hal/drivers/hal_pru_generic/hal_pru_generic.c @@ -217,11 +217,11 @@ int rtapi_app_main(void) hpg->config.name = modname; hpg->config.halname = halname; - rtapi_print("num_pwmgens : %d\n",num_pwmgens); - rtapi_print("num_stepgens: %d\n",num_stepgens); - rtapi_print("num_encoders: %d\n",num_encoders); + rtapi_print_msg(RTAPI_MSG_DBG, "num_pwmgens : %d\n",num_pwmgens); + rtapi_print_msg(RTAPI_MSG_DBG, "num_stepgens: %d\n",num_stepgens); + rtapi_print_msg(RTAPI_MSG_DBG, "num_encoders: %d\n",num_encoders); - rtapi_print("Init pwm\n"); + rtapi_print_msg(RTAPI_MSG_DBG, "Init pwm\n"); // Initialize various functions and generate PRU data ram contents if ((retval = hpg_pwmgen_init(hpg))) { HPG_ERR("ERROR: pwmgen init failed: %d\n", retval); @@ -229,14 +229,14 @@ int rtapi_app_main(void) return -1; } - rtapi_print("Init stepgen\n"); + rtapi_print_msg(RTAPI_MSG_DBG, "Init stepgen\n"); if ((retval = hpg_stepgen_init(hpg))) { HPG_ERR("ERROR: stepgen init failed: %d\n", retval); hal_exit(comp_id); return -1; } - rtapi_print("Init encoder\n"); + rtapi_print_msg(RTAPI_MSG_DBG, "Init encoder\n"); if ((retval = hpg_encoder_init(hpg))) { HPG_ERR("ERROR: encoder init failed: %d\n", retval); hal_exit(comp_id); @@ -394,12 +394,12 @@ int pru_init(int pru, char *filename, int disabled, hal_pru_generic_t *hpg) { if ((retval = assure_module_loaded(UIO_PRUSS))) return retval; -rtapi_print("prussdrv_init\n"); +rtapi_print_msg(RTAPI_MSG_DBG, "prussdrv_init\n"); // Allocate and initialize memory prussdrv_init (); // opens an event out and initializes memory mapping -rtapi_print("prussdrv_open\n"); +rtapi_print_msg(RTAPI_MSG_DBG, "prussdrv_open\n"); if (prussdrv_open(event > -1 ? event : PRU_EVTOUT_0) < 0) return -1; @@ -407,17 +407,17 @@ rtapi_print("prussdrv_open\n"); pruss = &prussdrv; // Map PRU's INTC -rtapi_print("prussdrv_pruintc_init\n"); +rtapi_print_msg(RTAPI_MSG_DBG, "prussdrv_pruintc_init\n"); if (prussdrv_pruintc_init(&pruss_intc_initdata) < 0) return -1; // Maps the PRU DRAM memory to input pointer -rtapi_print("prussdrv_map_prumem\n"); +rtapi_print_msg(RTAPI_MSG_DBG, "prussdrv_map_prumem\n"); if (prussdrv_map_prumem(pru ? PRUSS0_PRU1_DATARAM : PRUSS0_PRU0_DATARAM, (void **) &pru_data_ram) < 0) return -1; -rtapi_print("PRU data ram mapped\n"); +rtapi_print_msg(RTAPI_MSG_DBG, "PRU data ram mapped\n"); rtapi_print_msg(RTAPI_MSG_DBG, "%s: PRU data ram mapped at %p\n", modname, pru_data_ram); From c2fd44a8c6fceef149369752d8c7e7a759e12fba Mon Sep 17 00:00:00 2001 From: Alan Condit Date: Sun, 24 Feb 2019 09:51:29 -0800 Subject: [PATCH 419/516] Changes to BeBoPr+Bridge, CRAMPS and Xylotex configs to keep up with changes in Stretch and Machinekit Now all of the changes to loading hal_pru_generic should be in the corresponding .ini file. --- .../BeBoPr-Bridge/BeBoPr-Bridge.ini | 7 +- configs/ARM/BeagleBone/CRAMPS/CRAMPS.hal | 4 +- configs/ARM/BeagleBone/CRAMPS/CRAMPS.ini | 7 +- configs/ARM/BeagleBone/Xylotex/Xylotex.bbio | 21 - configs/ARM/BeagleBone/Xylotex/Xylotex.hal | 56 +-- configs/ARM/BeagleBone/Xylotex/Xylotex.ini | 17 +- .../ARM/BeagleBone/Xylotex/Xylotex4Axis.hal | 347 +++++++++++++++ .../ARM/BeagleBone/Xylotex/Xylotex4Axis.ini | 403 ++++++++++++++++++ 8 files changed, 774 insertions(+), 88 deletions(-) create mode 100755 configs/ARM/BeagleBone/Xylotex/Xylotex4Axis.hal create mode 100755 configs/ARM/BeagleBone/Xylotex/Xylotex4Axis.ini diff --git a/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.ini b/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.ini index e41c88404d..669696b0b0 100755 --- a/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.ini +++ b/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.ini @@ -1,8 +1,9 @@ [PRUCONF] DRIVER=hal_pru_generic -CONFIG=pru=1 num_stepgens=4 num_pwmgens=3 +#PRUCODE=/usr/lib/linuxcnc/rt-preempt/pru_generic.bin pru=1 halname=hpg num_stepgens=4 num_pwmgens=3 #PRUBIN=xenomai/pru_generic.bin PRUBIN=rt-preempt/pru_generic.bin +CONFIG=pru=1 halname=hpg num_stepgens=4 num_pwmgens=3 ############################################################################### # Hardware Abstraction Layer section @@ -46,9 +47,9 @@ POSITION_FEEDBACK = ACTUAL MAX_FEED_OVERRIDE = 1.5 # Prefix to be used -PROGRAM_PREFIX = ../../../nc_files/ #PROGRAM_PREFIX = /home/machinekit/machinekit/nc_files/ -#PROGRAM_PREFIX = ~/machinekit/nc_files/ +#PROGRAM_PREFIX = ../../../nc_files/ +PROGRAM_PREFIX = ~/machinekit/nc_files/ # Introductory graphic INTRO_GRAPHIC = machinekit.gif diff --git a/configs/ARM/BeagleBone/CRAMPS/CRAMPS.hal b/configs/ARM/BeagleBone/CRAMPS/CRAMPS.hal index 1b2ab66b52..67e3a98d53 100644 --- a/configs/ARM/BeagleBone/CRAMPS/CRAMPS.hal +++ b/configs/ARM/BeagleBone/CRAMPS/CRAMPS.hal @@ -9,7 +9,7 @@ # Launch the setup script to make sure hardware setup looks good #loadusr -w /home/machinekit/machinekit/configs/ARM.BeagleBone.CRAMPS/setup.sh loadusr -w ./setup.sh -#loadusr -w config-pin -f ./CRAMPS.bbio +loadusr -w config-pin -f ./CRAMPS.bbio # ################################### @@ -28,7 +28,7 @@ loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AX # load low-level drivers loadrt hal_bb_gpio output_pins=816,822,823,824,825,826,914,923,925 input_pins=807,808,809,810,817,911,913 -loadrt [PRUCONF](DRIVER) prucode=$(HAL_RTMOD_DIR)/[PRUCONF](PRUBIN) [PRUCONF](CONFIG) halname=hpg +loadrt [PRUCONF](DRIVER) prucode=$(HAL_RTMOD_DIR)/[PRUCONF](PRUBIN) [PRUCONF](CONFIG) loadrt pid count=2 loadrt limit1 count=2 diff --git a/configs/ARM/BeagleBone/CRAMPS/CRAMPS.ini b/configs/ARM/BeagleBone/CRAMPS/CRAMPS.ini index be1eada1d7..10c354c3e8 100644 --- a/configs/ARM/BeagleBone/CRAMPS/CRAMPS.ini +++ b/configs/ARM/BeagleBone/CRAMPS/CRAMPS.ini @@ -1,8 +1,9 @@ [PRUCONF] DRIVER=hal_pru_generic -CONFIG=pru=0 num_stepgens=4 num_pwmgens=6 +#PRUCODE=/usr/lib/linuxcnc/rt-preempt/pru_generic.bin pru=0 halname=hpg num_stepgens=4 num_pwmgens=6 #PRUBIN=xenomai/pru_generic.bin PRUBIN=rt-preempt/pru_generic.bin +CONFIG=pru=0 halname=hpg num_stepgens=4 num_pwmgens=6 ############################################################################### # Hardware Abstraction Layer section @@ -46,9 +47,9 @@ POSITION_FEEDBACK = ACTUAL MAX_FEED_OVERRIDE = 1.5 # Prefix to be used -PROGRAM_PREFIX = ../../../nc_files/ #PROGRAM_PREFIX = /home/machinekit/machinekit/nc_files/ -#PROGRAM_PREFIX = ~/machinekit/nc_files/ +#PROGRAM_PREFIX = ../../../nc_files/ +PROGRAM_PREFIX = ~/machinekit/nc_files/ # Introductory graphic INTRO_GRAPHIC = machinekit.gif diff --git a/configs/ARM/BeagleBone/Xylotex/Xylotex.bbio b/configs/ARM/BeagleBone/Xylotex/Xylotex.bbio index dde6c8075f..0aebca6396 100644 --- a/configs/ARM/BeagleBone/Xylotex/Xylotex.bbio +++ b/configs/ARM/BeagleBone/Xylotex/Xylotex.bbio @@ -1,25 +1,5 @@ # File generated with BB pin configurator # title: Xylotex -# Export GPIO pins: -# One pin needs to be exported to enable the low-level clocks for the GPIO -# modules (there is probably a better way to do this) -# -# Any GPIO pins driven by the PRU need to have their direction set properly -# here. The PRU does not do any setup of the GPIO, it just yanks on the -# pins and assumes you have the output enables configured already -# -# Direct PRU inputs and outputs do not need to be configured here, the pin -# mux setup (which is handled by the device tree overlay) should be all -# the setup needed. -# -# Any GPIO pins driven by the hal_bb_gpio driver do not need to be -# configured here. The hal_bb_gpio module handles setting the output -# enable bits properly. These pins _can_ however be set here without -# causing problems. You may wish to do this for documentation or to make -# sure the pin starts with a known value as soon as possible. - -#sudo $(which config-pin) -f - <<- EOF ## from setup.sh - overlay cape-universal overlay cape-bone-iio #overlay cape-univ-emmc @@ -45,4 +25,3 @@ P9_15 out # gpio1.16 Z_Step Used by PRU #P9_22 out # gpio0.2 SCK P9_23 out # gpio1.17 Z_Dir Used by PRU -#EOF from setup.sh diff --git a/configs/ARM/BeagleBone/Xylotex/Xylotex.hal b/configs/ARM/BeagleBone/Xylotex/Xylotex.hal index 0653853dec..fd51438d16 100755 --- a/configs/ARM/BeagleBone/Xylotex/Xylotex.hal +++ b/configs/ARM/BeagleBone/Xylotex/Xylotex.hal @@ -40,7 +40,8 @@ loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AX # load low-level drivers (must not include pins used by PRU) loadrt hal_bb_gpio output_pins=807,813,819,826,914,913,911 input_pins=809,810,814,818 -loadrt [PRUCONF](DRIVER) prucode=$(HAL_RTMOD_DIR)/[PRUCONF](PRUBIN) [PRUCONF](CONFIG) halname=hpg pru_period=25000 +loadrt [PRUCONF](DRIVER) prucode=$(HAL_RTMOD_DIR)/[PRUCONF](PRUBIN) [PRUCONF](CONFIG) + loadrt pid count=4 loadrt limit1 count=2 @@ -56,7 +57,7 @@ addf motion-controller servo-thread addf pid.0.do-pid-calcs servo-thread addf pid.1.do-pid-calcs servo-thread addf pid.2.do-pid-calcs servo-thread -addf pid.3.do-pid-calcs servo-thread +#addf pid.3.do-pid-calcs servo-thread addf limit1.0 servo-thread addf limit1.1 servo-thread addf hpg.update servo-thread @@ -231,57 +232,6 @@ net both-home-z => axis.2.neg-lim-sw-in net both-home-z => axis.2.pos-lim-sw-in #setp bb_gpio.p8.in-18.invert 1 -# ################ -# A [3] Axis -# ################ -# axis enable chain -newsig emcmot.03.enable bit -sets emcmot.03.enable FALSE - -net emcmot.03.enable <= axis.3.amp-enable-out -net emcmot.03.enable => hpg.stepgen.03.enable pid.3.enable - -# position command and feedback -net emcmot.03.pos-cmd axis.3.motor-pos-cmd => pid.3.command -net emcmot.03.vel-cmd axis.3.joint-vel-cmd => pid.3.command-deriv -net motor.03.pos-fb <= hpg.stepgen.03.position-fb axis.3.motor-pos-fb pid.3.feedback -net motor.03.command pid.3.output hpg.stepgen.03.velocity-cmd -setp pid.3.error-previous-target true -setp pid.3.maxerror .001 - -# timing parameters -setp hpg.stepgen.03.dirsetup [AXIS_3]DIRSETUP -setp hpg.stepgen.03.dirhold [AXIS_3]DIRHOLD - -setp hpg.stepgen.03.steplen [AXIS_3]STEPLEN -setp hpg.stepgen.03.stepspace [AXIS_3]STEPSPACE - -setp hpg.stepgen.03.position-scale [AXIS_3]SCALE - -setp hpg.stepgen.03.maxvel [AXIS_3]STEPGEN_MAX_VEL -setp hpg.stepgen.03.maxaccel [AXIS_3]STEPGEN_MAX_ACC - -setp hpg.stepgen.03.control-type 1 -setp hpg.stepgen.03.stepinvert [AXIS_3]STEP_INVERT -#setp hpg.stepgen.03.step_type 0 -setp hpg.stepgen.03.steppin 911 -setp hpg.stepgen.03.dirpin 913 - -# set PID loop gains from inifile -setp pid.3.Pgain [AXIS_3]P -setp pid.3.Igain [AXIS_3]I -setp pid.3.Dgain [AXIS_3]D -setp pid.3.bias [AXIS_3]BIAS -setp pid.3.FF0 [AXIS_3]FF0 -setp pid.3.FF1 [AXIS_3]FF1 -setp pid.3.FF2 [AXIS_3]FF2 -setp pid.3.deadband [AXIS_3]DEADBAND -setp pid.3.maxoutput [AXIS_3]MAX_OUTPUT - - -# Add A home switch input -#net home-a bb_gpio.p9.in-41 => axis.3.home-sw-in - # ################################################## # Standard I/O - EStop, Enables, Limit Switches, Etc # ################################################## diff --git a/configs/ARM/BeagleBone/Xylotex/Xylotex.ini b/configs/ARM/BeagleBone/Xylotex/Xylotex.ini index 540d25b62a..43a9845c15 100755 --- a/configs/ARM/BeagleBone/Xylotex/Xylotex.ini +++ b/configs/ARM/BeagleBone/Xylotex/Xylotex.ini @@ -1,9 +1,9 @@ [PRUCONF] DRIVER=hal_pru_generic -#CONFIG=pru=1 num_stepgens=4 -CONFIG=prucode=/usr/lib/linuxcnc/rt-preempt/pru_generic.bin pru=1 num_stepgens=4 num_pwmgens=1 +#PRUCODE=/usr/lib/linuxcnc/rt-preempt/pru_generic.bin pru=1 halname=hpg num_stepgens=4 num_pwmgens=1 #PRUBIN=xenomai/pru_generic.bin PRUBIN=rt-preempt/pru_generic.bin +CONFIG=pru=1 halname=hpg num_stepgens=3 ############################################################################### # General section @@ -29,6 +29,12 @@ DISPLAY = axis # Touchy currently will not work without some hardware buttons/jog-wheel #DISPLAY = touchy +#uncomment the line below if the shuttleexpress is installed +#GLADEVCP = shuttlexpress.glade +#leave the following two alone +#EMBED_TAB_NAME = GladeVCP demo +#EMBED_TAB_COMMAND = halcmd loadusr -Wn gladevcp gladevcp -c gladevcp -u shuttlexpress.py -x {XID} shuttlexpress.glade + #EDITOR = mousepad # Cycle time, in seconds, that display will sleep between polls @@ -54,7 +60,7 @@ MIN_SPINDLE_OVERRIDE = 0.25 PROGRAM_PREFIX = ~/machinekit/nc_files/ # Introductory graphic -INTRO_GRAPHIC = linuxcnc.gif +INTRO_GRAPHIC = machinekit.gif INTRO_TIME = 5 # Increments for the JOG section @@ -182,10 +188,9 @@ TOOL_TABLE = mill.tbl # This gives a maxvel of 20000/2000 = 10 ips # TYPE = LINEAR -MAX_VELOCITY = 2.0 +MAX_VELOCITY = 1.0 MAX_ACCELERATION = 15.0 # Set Stepgen max 20% higher than the axis - STEPGEN_MAX_VEL = 1.6 STEPGEN_MAX_ACC = 18.75 @@ -239,7 +244,7 @@ MAX_OUTPUT = 0 # This gives a maxvel of 20000/2000 = 10 ips # TYPE = LINEAR -MAX_VELOCITY = 2.0 +MAX_VELOCITY = 1.0 MAX_ACCELERATION = 15.0 # Set Stepgen max 20% higher than the axis STEPGEN_MAX_VEL = 1.6 diff --git a/configs/ARM/BeagleBone/Xylotex/Xylotex4Axis.hal b/configs/ARM/BeagleBone/Xylotex/Xylotex4Axis.hal new file mode 100755 index 0000000000..783c554605 --- /dev/null +++ b/configs/ARM/BeagleBone/Xylotex/Xylotex4Axis.hal @@ -0,0 +1,347 @@ +# These buffer ALL signals used on the DB25 port +# The board also has a pair of a set of four 0805 size jumper resistors +# these can be used to output either the standard Spindle/Mist/flood and +# input ALIM from the DB25 pins +# or allow BBB SPI signals to be routed to the DB25 connector instead. +# The ALIM RC buffer Capacitor would need to change if this +# option was used. The LIM Switch input signals are pulled to 3V3 through +# 10K resistors +# then go through a 1K resistor and bypassed with a .22uF cap. This is +# the cap that should be removed +# if the SPI port (untested option) is used. The 4 SPI signals are also +# directly routed +# to six through-holes which include 3V3 and GND. This signals are +# otherwise Unbuffered and +# go directly to the BBB +# At powerup the LVC541 enable signals are pulled high, disabling the +# drivers until +# the BBB and MachineKit pull the enable signal low. +# +######################################## + + +# Launch the setup script to make sure hardware setup looks good +#loadusr -w /home/machinekit/machinekit/configs/ARM.BeagleBone.Xylotex/setup.sh +loadusr -w ./setup.sh +loadusr -w config-pin -f ./Xylotex.bbio + +# ################################### +# Core EMC/HAL Loads +# ################################### +# kinematics +loadrt trivkins + +# trajectory planner +loadrt tp + +# motion controller, get name and thread periods from ini file +loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES tp=tp kins=trivkins + +# load low-level drivers (must not include pins used by PRU) +loadrt hal_bb_gpio output_pins=807,813,819,826,914,913,911 input_pins=809,810,814,818 + +loadrt [PRUCONF](DRIVER) prucode=$(HAL_RTMOD_DIR)/[PRUCONF](PRUBIN) [PRUCONF](CONFIG) + +loadrt pid count=4 +loadrt limit1 count=2 + +# ################################################ +# THREADS +# ################################################ +# hpg = [PRUCONF](DRIVER) +addf hpg.capture-position servo-thread +addf bb_gpio.read servo-thread +addf motion-command-handler servo-thread +addf motion-controller servo-thread +# Not doing PID for temperature sensor for PWM output +addf pid.0.do-pid-calcs servo-thread +addf pid.1.do-pid-calcs servo-thread +addf pid.2.do-pid-calcs servo-thread +addf pid.3.do-pid-calcs servo-thread +addf limit1.0 servo-thread +addf limit1.1 servo-thread +addf hpg.update servo-thread +addf bb_gpio.write servo-thread + + +# ###################################################### +# Axis-of-motion Specific Configs (not the GUI) +# ###################################################### +# ################ +# X [0] Axis +# ################ +# axis enable chain +newsig emcmot.00.enable bit +sets emcmot.00.enable FALSE + +net emcmot.00.enable <= axis.0.amp-enable-out +net emcmot.00.enable => hpg.stepgen.00.enable pid.0.enable + +# position command and feedback +net emcmot.00.pos-cmd axis.0.motor-pos-cmd => pid.0.command +net emcmot.00.vel-cmd axis.0.joint-vel-cmd => pid.0.command-deriv +net motor.00.pos-fb <= hpg.stepgen.00.position-fb axis.0.motor-pos-fb pid.0.feedback +net motor.00.command pid.0.output hpg.stepgen.00.velocity-cmd +setp pid.0.error-previous-target true +setp pid.0.maxerror .001 + +# timing parameters +setp hpg.stepgen.00.dirsetup [AXIS_0]DIRSETUP +setp hpg.stepgen.00.dirhold [AXIS_0]DIRHOLD + +setp hpg.stepgen.00.steplen [AXIS_0]STEPLEN +setp hpg.stepgen.00.stepspace [AXIS_0]STEPSPACE + +setp hpg.stepgen.00.position-scale [AXIS_0]SCALE + +setp hpg.stepgen.00.maxvel [AXIS_0]STEPGEN_MAX_VEL +setp hpg.stepgen.00.maxaccel [AXIS_0]STEPGEN_MAX_ACC + +setp hpg.stepgen.00.control-type 1 +setp hpg.stepgen.00.stepinvert [AXIS_0]STEP_INVERT +#setp hpg.stepgen.00.step_type 0 +setp hpg.stepgen.00.steppin 812 +setp hpg.stepgen.00.dirpin 811 + +# set PID loop gains from inifile +setp pid.0.Pgain [AXIS_0]P +setp pid.0.Igain [AXIS_0]I +setp pid.0.Dgain [AXIS_0]D +setp pid.0.bias [AXIS_0]BIAS +setp pid.0.FF0 [AXIS_0]FF0 +setp pid.0.FF1 [AXIS_0]FF1 +setp pid.0.FF2 [AXIS_0]FF2 +setp pid.0.deadband [AXIS_0]DEADBAND +setp pid.0.maxoutput [AXIS_0]MAX_OUTPUT + +# Add X home switch input on DB25-11 +#net home-x bb_gpio.p8.in-10 => axis.0.home-sw-in +net both-home-x <= bb_gpio.p8.in-10 +net both-home-x => axis.0.home-sw-in +net both-home-x => axis.0.neg-lim-sw-in +net both-home-x => axis.0.pos-lim-sw-in +#setp bb_gpio.p8.in-10.invert 1 + +# ################ +# Y [1] Axis +# ################ +# axis enable chain +newsig emcmot.01.enable bit +sets emcmot.01.enable FALSE + +net emcmot.01.enable <= axis.1.amp-enable-out +net emcmot.01.enable => hpg.stepgen.01.enable pid.1.enable + +# position command and feedback +net emcmot.01.pos-cmd axis.1.motor-pos-cmd => pid.1.command +net emcmot.01.vel-cmd axis.1.joint-vel-cmd => pid.1.command-deriv +net motor.01.pos-fb <= hpg.stepgen.01.position-fb axis.1.motor-pos-fb pid.1.feedback +net motor.01.command pid.1.output hpg.stepgen.01.velocity-cmd +setp pid.1.error-previous-target true +setp pid.1.maxerror .001 + +# timing parameters +setp hpg.stepgen.01.dirsetup [AXIS_1]DIRSETUP +setp hpg.stepgen.01.dirhold [AXIS_1]DIRHOLD + +setp hpg.stepgen.01.steplen [AXIS_1]STEPLEN +setp hpg.stepgen.01.stepspace [AXIS_1]STEPSPACE + +setp hpg.stepgen.01.position-scale [AXIS_1]SCALE + +setp hpg.stepgen.01.maxvel [AXIS_1]STEPGEN_MAX_VEL +setp hpg.stepgen.01.maxaccel [AXIS_1]STEPGEN_MAX_ACC + +setp hpg.stepgen.01.control-type 1 +setp hpg.stepgen.01.stepinvert [AXIS_1]STEP_INVERT +#setp hpg.stepgen.01.step_type 0 +setp hpg.stepgen.01.steppin 816 +setp hpg.stepgen.01.dirpin 815 + +# set PID loop gains from inifile +setp pid.1.Pgain [AXIS_1]P +setp pid.1.Igain [AXIS_1]I +setp pid.1.Dgain [AXIS_1]D +setp pid.1.bias [AXIS_1]BIAS +setp pid.1.FF0 [AXIS_1]FF0 +setp pid.1.FF1 [AXIS_1]FF1 +setp pid.1.FF2 [AXIS_1]FF2 +setp pid.1.deadband [AXIS_1]DEADBAND +setp pid.1.maxoutput [AXIS_1]MAX_OUTPUT + +# Add Y home switch input on DB25-12 +#net home-y bb_gpio.p8.in-14 => axis.1.home-sw-in +net both-home-y <= bb_gpio.p8.in-14 +net both-home-y => axis.1.home-sw-in +net both-home-y => axis.1.neg-lim-sw-in +net both-home-y => axis.1.pos-lim-sw-in +#setp bb_gpio.p8.in-14.invert 1 + +# ################ +# Z [2] Axis +# ################ +# axis enable chain +newsig emcmot.02.enable bit +sets emcmot.02.enable FALSE + +net emcmot.02.enable <= axis.2.amp-enable-out +net emcmot.02.enable => hpg.stepgen.02.enable pid.2.enable + +# position command and feedback +net emcmot.02.pos-cmd axis.2.motor-pos-cmd => pid.2.command +net emcmot.02.vel-cmd axis.2.joint-vel-cmd => pid.2.command-deriv +net motor.02.pos-fb <= hpg.stepgen.02.position-fb axis.2.motor-pos-fb pid.2.feedback +net motor.02.command pid.2.output hpg.stepgen.02.velocity-cmd +setp pid.2.error-previous-target true +setp pid.2.maxerror .001 + +# timing parameters +setp hpg.stepgen.02.dirsetup [AXIS_2]DIRSETUP +setp hpg.stepgen.02.dirhold [AXIS_2]DIRHOLD + +setp hpg.stepgen.02.steplen [AXIS_2]STEPLEN +setp hpg.stepgen.02.stepspace [AXIS_2]STEPSPACE + +setp hpg.stepgen.02.position-scale [AXIS_2]SCALE + +setp hpg.stepgen.02.maxvel [AXIS_2]STEPGEN_MAX_VEL +setp hpg.stepgen.02.maxaccel [AXIS_2]STEPGEN_MAX_ACC + +setp hpg.stepgen.02.control-type 1 +setp hpg.stepgen.02.stepinvert [AXIS_2]STEP_INVERT +#setp hpg.stepgen.02.step_type 0 +setp hpg.stepgen.02.steppin 915 +setp hpg.stepgen.02.dirpin 923 + +# set PID loop gains from inifile +setp pid.2.Pgain [AXIS_2]P +setp pid.2.Igain [AXIS_2]I +setp pid.2.Dgain [AXIS_2]D +setp pid.2.bias [AXIS_2]BIAS +setp pid.2.FF0 [AXIS_2]FF0 +setp pid.2.FF1 [AXIS_2]FF1 +setp pid.2.FF2 [AXIS_2]FF2 +setp pid.2.deadband [AXIS_2]DEADBAND +setp pid.2.maxoutput [AXIS_2]MAX_OUTPUT + +# Add Z home switch input on DB25-13 +#net home-z bb_gpio.p8.in-18 => axis.2.home-sw-in +net both-home-z <= bb_gpio.p8.in-18 +net both-home-z => axis.2.home-sw-in +net both-home-z => axis.2.neg-lim-sw-in +net both-home-z => axis.2.pos-lim-sw-in +#setp bb_gpio.p8.in-18.invert 1 + +# ################ +# A [3] Axis +# ################ +# axis enable chain +newsig emcmot.03.enable bit +sets emcmot.03.enable FALSE + +net emcmot.03.enable <= axis.3.amp-enable-out +net emcmot.03.enable => hpg.stepgen.03.enable pid.3.enable + +# position command and feedback +net emcmot.03.pos-cmd axis.3.motor-pos-cmd => pid.3.command +net emcmot.03.vel-cmd axis.3.joint-vel-cmd => pid.3.command-deriv +net motor.03.pos-fb <= hpg.stepgen.03.position-fb axis.3.motor-pos-fb pid.3.feedback +net motor.03.command pid.3.output hpg.stepgen.03.velocity-cmd +setp pid.3.error-previous-target true +setp pid.3.maxerror .001 + +# timing parameters +setp hpg.stepgen.03.dirsetup [AXIS_3]DIRSETUP +setp hpg.stepgen.03.dirhold [AXIS_3]DIRHOLD + +setp hpg.stepgen.03.steplen [AXIS_3]STEPLEN +setp hpg.stepgen.03.stepspace [AXIS_3]STEPSPACE + +setp hpg.stepgen.03.position-scale [AXIS_3]SCALE + +setp hpg.stepgen.03.maxvel [AXIS_3]STEPGEN_MAX_VEL +setp hpg.stepgen.03.maxaccel [AXIS_3]STEPGEN_MAX_ACC + +setp hpg.stepgen.03.control-type 1 +setp hpg.stepgen.03.stepinvert [AXIS_3]STEP_INVERT +#setp hpg.stepgen.03.step_type 0 +setp hpg.stepgen.03.steppin 911 +setp hpg.stepgen.03.dirpin 913 + +# set PID loop gains from inifile +setp pid.3.Pgain [AXIS_3]P +setp pid.3.Igain [AXIS_3]I +setp pid.3.Dgain [AXIS_3]D +setp pid.3.bias [AXIS_3]BIAS +setp pid.3.FF0 [AXIS_3]FF0 +setp pid.3.FF1 [AXIS_3]FF1 +setp pid.3.FF2 [AXIS_3]FF2 +setp pid.3.deadband [AXIS_3]DEADBAND +setp pid.3.maxoutput [AXIS_3]MAX_OUTPUT + + +# Add A home switch input +#net home-a bb_gpio.p9.in-41 => axis.3.home-sw-in + +# ################################################## +# Standard I/O - EStop, Enables, Limit Switches, Etc +# ################################################## + +# create signals for tool loading loopback +net tool-prep-loop iocontrol.0.tool-prepare => iocontrol.0.tool-prepared +net tool-change-loop iocontrol.0.tool-change => iocontrol.0.tool-changed + +# Axis enable and IO control enable signals are all on one pin P8-7 which +# goes to DB25-1 +# and is used to place the LVC541 drivers on the interface board in active +# (LOW) or unactive (HIGH) state +# All external Inputs and Outputs on external boards +# should have pullups/downs since when the interface board is +# not enabled, it will look dosconnected for all signals + +# this pin is output on DB25-1 +# it is also used to enable the LVC541 driver/receiver on the interface board +#net machine-on bb_gpio.p8.out-07 bb_gpio.p8.out-26 => halui.machine.is-on +#setp bb_gpio.p8.out-07.invert 1 + +# this input signal must be active LOW to allow the system to energize. +# this should be fed through an NC STOP type switch from DB25-1 to DB25-10 +#net estop-in bb_gpio.p8.in-09 => iocontrol.0.emc-enable-in +#setp bb_gpio.p8.in-09.invert 1 +#newsig test bit +#sets test 1 +#net test iocontrol.0.emc-enable-in +#net estop-loop iocontrol.0.user-enable-out iocontrol.0.emc-enable-in +#setp iocontrol.0.emc-enable-in true + +#probe input on DB25-15 +#net probe motion.probe-input <= bb_gpio.p8.in-18 +#setp bb_gpio.p8.in-18.invert 1 + +# this currently goes to an LED on the interface board +# it is simply a duplicate of the enable signal on DB25-1 right now +#setp bb_gpio.p8.out-26.invert 1 + +# this input signal must be active LOW to allow the system to energize. +# this should be fed through an NC STOP type switch from DB25-1 to DB25-10 +#net estop-in <= halui.machine.is-on +net estop-in => bb_gpio.p8.in-09 +net estop-in => iocontrol.0.emc-enable-in +setp bb_gpio.p8.in-09.invert 1 + + +# This output is on DB25-14 and is currently tied to spindle control (M3/M5) +#net Output1 bb_gpio.p8.out-13 => motion.spindle-on +#setp bb_gpio.p8.out-13.invert 1 +#net Output1 bb_gpio.p8.out-13 => halui.spindle.is-on +net Output1 bb_gpio.p8.out-13 => motion.spindle-on +setp bb_gpio.p8.out-13.invert 1 + +# This output is on DB25-16 +net Output2 bb_gpio.p8.out-19 => halui.mist.is-on +setp bb_gpio.p8.out-19.invert 1 + +# This output is on DB25-17 (M8/M9) +net Output3 bb_gpio.p9.out-14 => halui.flood.is-on +setp bb_gpio.p9.out-14.invert 1 + diff --git a/configs/ARM/BeagleBone/Xylotex/Xylotex4Axis.ini b/configs/ARM/BeagleBone/Xylotex/Xylotex4Axis.ini new file mode 100755 index 0000000000..b2a4e4e226 --- /dev/null +++ b/configs/ARM/BeagleBone/Xylotex/Xylotex4Axis.ini @@ -0,0 +1,403 @@ +[PRUCONF] +DRIVER=hal_pru_generic +#PRUCODE=/usr/lib/linuxcnc/rt-preempt/pru_generic.bin pru=1 pru_period=25000 halname=hpg num_stepgens=4 num_pwmgens=1 +#PRUBIN=xenomai/pru_generic.bin +PRUBIN=rt-preempt/pru_generic.bin +CONFIG=pru=1 halname=hpg num_stepgens=4 num_pwmgens=1 + +############################################################################### +# General section +############################################################################### +[EMC] + +# Name of machine, for use with display, etc. +MACHINE = Xylotex-DB25 + +# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others +DEBUG = 0 +#DEBUG = 0x00000003 +#DEBUG = 0x00000007 + + +############################################################################### +# Sections for display options +############################################################################### +[DISPLAY] +# Name of display program, e.g., tkemc +DISPLAY = axis +#DISPLAY = jtgremlin +# Touchy currently will not work without some hardware buttons/jog-wheel +#DISPLAY = touchy + +#uncomment the line below if the shuttleexpress is installed +#GLADEVCP = shuttlexpress.glade +#leave the following two alone +#EMBED_TAB_NAME = GladeVCP demo +#EMBED_TAB_COMMAND = halcmd loadusr -Wn gladevcp gladevcp -c gladevcp -u shuttlexpress.py -x {XID} shuttlexpress.glade + +#EDITOR = mousepad + +# Cycle time, in seconds, that display will sleep between polls +CYCLE_TIME = 0.0500 + +# Path to help file +HELP_FILE = tklinucnc.txt + +# Initial display setting for position, RELATIVE or MACHINE +POSITION_OFFSET = MACHINE + +# Initial display setting for position, COMMANDED or ACTUAL +POSITION_FEEDBACK = ACTUAL + +# Highest value that will be allowed for feed override, 1.0 = 100% +MAX_FEED_OVERRIDE = 1.0 +MAX_SPINDLE_OVERRIDE = 1.0 +MIN_SPINDLE_OVERRIDE = 0.25 + +# Prefix to be used +#PROGRAM_PREFIX = ../../../nc_files/ +#PROGRAM_PREFIX = /home/machinekit/machinekit/nc_files/ +PROGRAM_PREFIX = ~/machinekit/nc_files/ + +# Introductory graphic +INTRO_GRAPHIC = machinekit.gif +INTRO_TIME = 5 + +# Increments for the JOG section +INCREMENTS = 10 1 0.1 0.01 + + +[FILTER] + +PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image +PROGRAM_EXTENSION = .py Python Script + +png = image-to-gcode +gif = image-to-gcode +jpg = image-to-gcode +py = python + + +############################################################################### +# Task controller section +############################################################################### +[TASK] + +# Name of task controller program, e.g., milltask +TASK = milltask + +# Cycle time, in seconds, that task controller will sleep between polls +CYCLE_TIME = 0.010 + + +############################################################################### +# Part program interpreter section +############################################################################### +[RS274NGC] +# File containing interpreter variables +PARAMETER_FILE = pru-stepper.var +RS274NGC_STARTUP_CODE = G00 G17 G21 G40 G49 G64 P0.1 Q0.1 G80 G90 + +############################################################################### +# Motion control section +############################################################################### +[EMCMOT] +EMCMOT = motmod +# Timeout for comm to emcmot, in seconds +COMM_TIMEOUT = 1.0 +# Interval between tries to emcmot, in seconds +COMM_WAIT = 0.010 +# Servo task period, in nanoseconds +SERVO_PERIOD = 1000000 + +############################################################################### +# Hardware Abstraction Layer section +############################################################################### +[HAL] +HALUI = halui +# The run script first uses halcmd to execute any HALFILE +# files, and then to execute any individual HALCMD commands. +HALFILE = Xylotex.hal +#HALFILE = custom.hal +# uncomment the line below if the shuttlexpress jig wheel is used +#HALFILE = ../../../shuttlexpress.hal +#POSTGUI_HALFILE = Xylotex.postgui.hal +# list of hal config files to run through halcmd +# files are executed in the order in which they appear +#HALCMD = save neta + +############################################################################### +# Hardware Abstraction Layer User Interface section +############################################################################### +[HALUI] +MDI_COMMAND = G0 X0 Y0 Z0 +MDI_COMMAND = G38.2 Z-2 f16 +MDI_COMMAND = G92 Z0.25 +MDI_COMMAND = G0 Z0.75 +MDI_COMMAND = G92 x2 y-.5 + + +############################################################################### +# Trajectory planner section +############################################################################### +[TRAJ] +AXES = 4 +COORDINATES = X Y Z A +HOME = 1 1 0 2 +MAX_ANGULAR_VELOCITY = 45.00 +DEFAULT_ANGULAR_VELOCITY = 4.50 +LINEAR_UNITS = inch +ANGULAR_UNITS = degree +CYCLE_TIME = 0.010 +DEFAULT_VELOCITY = 2.0 +DEFAULT_ACCELERATION = 15.0 +MAX_LINEAR_VELOCITY = 2.6 +NO_FORCE_HOMING = 1 +# POSITION_FILE = position.txt +#PROBE_INDEX = 0 +#PROBE_POLARITY = 1 + +############################################################################### +# section for main IO controller parameters +############################################################################### +[EMCIO] + +#- Name of IO controller program, e.g., io +EMCIO = io + +#- cycle time, in seconds +CYCLE_TIME = 0.100 + +#- tool table file +TOOL_TABLE = mill.tbl + +#- Tool Change Position specifies the location to move to for a tool change +#TOOL_CHANGE_POSITION = 0 0 2 + +############################################################################### +# Axes sections +############################################################################### +[AXIS_0] + +# +# Step timing is 25 us steplen + 25 us stepspace +# That gives 50 us step period = 20 KHz step freq +# +# Scale is 200 steps/rev * 5 revs/inch * 2 microsteps = 2000 steps/inch +# +# This gives a maxvel of 20000/2000 = 10 ips +# +TYPE = LINEAR +MAX_VELOCITY = 1.0 +MAX_ACCELERATION = 15.0 +# Set Stepgen max 20% higher than the axis +STEPGEN_MAX_VEL = 1.6 +STEPGEN_MAX_ACC = 18.75 + +BACKLASH = 0.000 +SCALE = 2000 + +MIN_LIMIT = -0.1 +MAX_LIMIT = 9.125 + +FERROR = .1 +MIN_FERROR = 0.05 + +HOME = 0.000 +HOME_OFFSET = -0.1 +HOME_SEARCH_VEL = -0.50 +HOME_LATCH_VEL = 0.10 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = YES +HOME_IS_SHARED = 1 +HOME_SEQUENCE = 1 + +# these are in nanoseconds +DIRSETUP = 25000 +DIRHOLD = 25000 +STEPLEN = 25000 +STEPSPACE = 25000 + +# Set to one for active low step pulses +STEP_INVERT = 0 + +# PID tuning params +DEADBAND = 0 +P = 50 +I = 0 +D = 0 +FF0 = 0 +FF1 = 1 +FF2 = 0 +BIAS = 0 +MAX_OUTPUT = 0 + +################################################################ +[AXIS_1] + +# +# Step timing is 25 us steplen + 25 us stepspace +# That gives 50 us step period = 12.5 KHz step freq +# +# Scale is 200 steps/rev * 5 revs/inch * 2 microsteps = 2000 steps/inch +# +# This gives a maxvel of 20000/2000 = 10 ips +# +TYPE = LINEAR +MAX_VELOCITY = 1.0 +MAX_ACCELERATION = 15.0 +# Set Stepgen max 20% higher than the axis +STEPGEN_MAX_VEL = 1.6 +STEPGEN_MAX_ACC = 18.75 + +BACKLASH = 0.000 +# scale is 200 steps/rev * 2 microstep * 5 tpi = 2000 steps/inch +SCALE = 2000 + +MIN_LIMIT = -0.10 +MAX_LIMIT = 5.5 + +FERROR = .1 +MIN_FERROR = 0.05 + +HOME = 0.000 +HOME_OFFSET = -0.1 +HOME_SEARCH_VEL = -0.5 +HOME_LATCH_VEL = 0.10 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = YES +HOME_IS_SHARED = 1 +HOME_SEQUENCE = 1 + +# these are in nanoseconds +DIRSETUP = 25000 +DIRHOLD = 25000 +STEPLEN = 25000 +STEPSPACE = 25000 + +# Set to one for active low step pulses +STEP_INVERT = 0 + +# PID tuning params +DEADBAND = 0 +P = 50 +I = 0 +D = 0 +FF0 = 0 +FF1 = 1 +FF2 = 0 +BIAS = 0 +MAX_OUTPUT = 0 + + +################################################################ +[AXIS_2] + +# +# Step timing is 25 us steplen + 25 us stepspace +# That gives 50 us step period = 20 KHz step freq +# +# SCALE is 200 steps/rev * 2 microstep * 4:1 gearing * 5 tpi = 8000 steps/inch +# This gives a maxvel of 20000/8000 = 2.5 ips +# +TYPE = LINEAR +MAX_VELOCITY = 1.0 +MAX_ACCELERATION = 15.0 +# Set Stepgen max 20% higher than the axis +STEPGEN_MAX_VEL = 1.2 +STEPGEN_MAX_ACC = 18.75 + +BACKLASH = 0.000 +# SCALE is 200 steps/rev * 2 microstep * 4:1 gearing * 5 turns/inch = 8000 steps/inch +SCALE = 8000 + +MIN_LIMIT = 0.0 +MAX_LIMIT = 10.5 + +FERROR = .1 +MIN_FERROR = 0.05 + +HOME = 10.4 +HOME_OFFSET = 10.5 +HOME_SEARCH_VEL = 1.0 +HOME_LATCH_VEL = -0.10 +HOME_USE_INDEX = NO +HOME_IGNORE_LIMITS = YES +HOME_IS_SHARED = 1 +HOME_SEQUENCE = 0 + +# these are in nanoseconds +DIRSETUP = 25000 +DIRHOLD = 25000 +STEPLEN = 25000 +STEPSPACE = 25000 + +# Set to one for active low step pulses +STEP_INVERT = 0 + +# PID tuning params +DEADBAND = 0 +P = 50 +I = 0 +D = 0 +FF0 = 0 +FF1 = 1 +FF2 = 0 +BIAS = 0 +MAX_OUTPUT = 0 + +################################################################ +[AXIS_3] + +# +# Step timing is 25 us steplen + 25 us stepspace +# That gives 50 us step period = 20 KHz step freq +# +# This gives a maxvel of 12.5/1 = 12.5 ips +# +TYPE = ANGULAR +MAX_VELOCITY = 0.5 +MAX_ACCELERATION = 15.0 +# Set Stepgen max 20% higher than the axis +STEPGEN_MAX_VEL = 1.2 +STEPGEN_MAX_ACC = 18.75 + +BACKLASH = 0.000 +# SCALE is 200 steps/rev * 2 microstep * 5 revs/inch = 2000 steps/inch +SCALE = 2000 + +MIN_LIMIT = -9999.0 +MAX_LIMIT = 999999999.0 + +FERROR = .1 +MIN_FERROR = 0.05 + +HOME = 0.000 +HOME_OFFSET = 0.00 +HOME_SEARCH_VEL = -.1 +HOME_LATCH_VEL = 0.2 +#HOME_USE_INDEX = YES +#HOME_IGNORE_LIMITS = YES +#HOME_IS_SHARED = 1 +#HOME_SEQUENCE = 2 + +# these are in nanoseconds +DIRSETUP = 25000 +DIRHOLD = 25000 +STEPLEN = 25000 +STEPSPACE = 25000 + +# Set to one for active low step pulses +STEP_INVERT = 0 + +# PID tuning params +DEADBAND = 0 +P = 50 +I = 0 +D = 0 +FF0 = 0 +FF1 = 1 +FF2 = 0 +BIAS = 0 +MAX_OUTPUT = 0 + From c1a65df600cce59f378a0b19a97ae57752eb5014 Mon Sep 17 00:00:00 2001 From: Alan Condit Date: Mon, 25 Feb 2019 21:20:54 -0800 Subject: [PATCH 420/516] Fixed some more occurrences of rtapi_print affect by change of RTAPI_MSG_ERR to RTAPI_MSG_ALL. --- src/hal/drivers/hal_bb_gpio/hal_bb_gpio.c | 8 ++++---- src/hal/drivers/hal_pru_generic/stepgen.c | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/hal/drivers/hal_bb_gpio/hal_bb_gpio.c b/src/hal/drivers/hal_bb_gpio/hal_bb_gpio.c index fddaa4eeef..38ae48c7e7 100644 --- a/src/hal/drivers/hal_bb_gpio/hal_bb_gpio.c +++ b/src/hal/drivers/hal_bb_gpio/hal_bb_gpio.c @@ -150,8 +150,8 @@ void configure_gpio_port(int n) { gpio_ports[n]->datain_reg = gpio_ports[n]->gpio_addr + GPIO_DATAIN; - rtapi_print( - "memmapped gpio port %d to %p, oe: %p, set: %p, clr: %p\n", + rtapi_print_msg( + RTAPI_MSG_DBG, "memmapped gpio port %d to %p, oe: %p, set: %p, clr: %p\n", n, gpio_ports[n]->gpio_addr, gpio_ports[n]->oe_reg, gpio_ports[n]->setdataout_reg, gpio_ports[n]->clrdataout_reg); @@ -349,8 +349,8 @@ int rtapi_app_main(void) { bbpin->port = gpio_ports[gpio_num]; configure_pin(bbpin, 'U'); - rtapi_print( - "pin %d maps to pin %d-%d, mode %d\n", pin, bbpin->port_num, + rtapi_print_msg( + RTAPI_MSG_DBG, "pin %d maps to pin %d-%d, mode %d\n", pin, bbpin->port_num, bbpin->pin_num, bbpin->claimed); } } diff --git a/src/hal/drivers/hal_pru_generic/stepgen.c b/src/hal/drivers/hal_pru_generic/stepgen.c index c1b4f20968..5e6b974cdc 100644 --- a/src/hal/drivers/hal_pru_generic/stepgen.c +++ b/src/hal/drivers/hal_pru_generic/stepgen.c @@ -594,7 +594,7 @@ int hpg_stepgen_init(hal_pru_generic_t *hpg){ if (hpg->config.num_stepgens <= 0) return 0; -rtapi_print("hpg_stepgen_init\n"); +rtapi_print_msg(RTAPI_MSG_DBG, "hpg_stepgen_init\n"); hpg->stepgen.num_instances = hpg->config.num_stepgens; From 0d82fd4d88d91187a0cf07765b3559fbfc201705 Mon Sep 17 00:00:00 2001 From: Alan Condit Date: Tue, 26 Feb 2019 08:16:53 -0800 Subject: [PATCH 421/516] =?UTF-8?q?Another=20occurrence=20of=20rtapi=5Fpri?= =?UTF-8?q?nt=20affected=20by=20=E2=80=9Clogging=20fix=E2=80=9D=20which=20?= =?UTF-8?q?changed=20rtapi=5Fprint=E2=80=99s=20use=20of=20RTAPI=5FMSG=5FER?= =?UTF-8?q?R=20to=20RTAPI=5FMSG=5FALL.=20Hopefully=20the=20last.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hal/drivers/hal_pru_generic/pwmgen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hal/drivers/hal_pru_generic/pwmgen.c b/src/hal/drivers/hal_pru_generic/pwmgen.c index 0ad14e517a..d8c5f5c2fa 100644 --- a/src/hal/drivers/hal_pru_generic/pwmgen.c +++ b/src/hal/drivers/hal_pru_generic/pwmgen.c @@ -136,7 +136,7 @@ int hpg_pwmgen_init(hal_pru_generic_t *hpg){ if (hpg->config.num_pwmgens <= 0) return 0; -rtapi_print("hpg_pwm_init\n"); +rtapi_print_msg(RTAPI_MSG_DBG, "hpg_pwm_init\n"); // FIXME: Support multiple PWMs like so: num_pwmgens=3,4,2,5 // hpg->pwmgen.num_instances = hpg->config.num_pwmgens; From 04102f5c263113c097d7fc279f71d624bb03192e Mon Sep 17 00:00:00 2001 From: Alan Condit Date: Tue, 26 Feb 2019 14:43:20 -0800 Subject: [PATCH 422/516] Fixed configs in BeBoPr-Bridge, CRAMPS and Xylotex. --- .../BeBoPr-Bridge/BeBoPr-Bridge.bbio | 21 +++--- .../BeBoPr-Bridge/BeBoPr-Bridge.hal | 7 +- .../BeBoPr-Bridge/BeBoPr-Bridge.ini | 43 +++++------ .../BeagleBone/BeBoPr-Bridge/lineardelta.hal | 2 +- .../BeagleBone/BeBoPr-Bridge/lineardelta.ini | 7 +- .../BeagleBone/BeBoPr-Bridge/setup.bridge.sh | 58 --------------- .../CRAMPS/CRAMPS.ShuttleXpress.ini | 54 +++++++++----- configs/ARM/BeagleBone/CRAMPS/CRAMPS.bbio | 20 ++--- configs/ARM/BeagleBone/CRAMPS/CRAMPS.hal | 4 +- configs/ARM/BeagleBone/CRAMPS/CRAMPS.ini | 11 ++- configs/ARM/BeagleBone/CRAMPS/setup.sh | 73 ------------------- .../Xylotex/Xylotex.ShuttleXpress.ini | 4 +- configs/ARM/BeagleBone/Xylotex/Xylotex.bbio | 3 - configs/ARM/BeagleBone/Xylotex/Xylotex.hal | 9 ++- configs/ARM/BeagleBone/Xylotex/Xylotex.ini | 35 +++++---- 15 files changed, 123 insertions(+), 228 deletions(-) diff --git a/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.bbio b/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.bbio index c00aa509c9..826c9a8b28 100644 --- a/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.bbio +++ b/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.bbio @@ -15,13 +15,12 @@ overlay cape-bone-iio P8_18 in #gpio2.01 P8_19 low #gpio0.22 J3.PWM1-Heater P8_20 out #gpio1.31 E_ENA - P8_21 out #gpio1.30 E_DIR + P8_21 out #gpio1.30 E_DIR Used in PRU P8_25 out #gpio1.00 STATUS_LED - P8_27 out #gpio2.22 Z_Step + P8_27 out #gpio2.22 Z_Step Used in PRU P8_28 out #gpio2.24 Z_Ena - P8_29 out #gpio2.23 Z_Dir - P8_29 out #gpio2.23 Z_Dir - P8_30 out #gpio0.10 E_Step + P8_29 out #gpio2.23 Z_Dir Used in PRU + P8_30 out #gpio0.10 E_Step Used in PRU P8_31 in #gpio0.10 X_Min P8_32 in #gpio0.11 X_Max P8_33 in #gpio0.09 Y_Max @@ -29,14 +28,14 @@ overlay cape-bone-iio P8_36 out #gpio2.16 J4.PWM P8_37 in #gpio2.14 Z_Max P8_38 in #gpio2.15 Z_Min - P8_39 out #gpio2.12 Z_Min + P8_39 out #gpio2.12 Y_Dir Used in PRU P8_40 out #gpio2.13 Y_Ena P8_41 out #gpio2.10 X_Ena - P8_42 out #gpio2.11 Y_Step - P8_43 out #gpio2.08 X_Step - P8_44 out #gpio2.09 X_Dir - P8_45 low #gpio2.06 PWM1 - P8_46 low #gpio2.07 PWM0 + P8_42 out #gpio2.11 Y_Step Used in PRU + P8_43 out #gpio2.08 X_Step Used in PRU + P8_44 out #gpio2.09 X_Dir Used in PRU + P8_45 low #gpio2.06 PWM1 Used in PRU + P8_46 low #gpio2.07 PWM0 Used in PRU P9_14 low #gpio1.18 J4.PWM2-Heater # P9_36 in #THRM2 # P9_38 in #THRM1 diff --git a/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.hal b/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.hal index 7e2daa4b09..ae56f2b319 100755 --- a/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.hal +++ b/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.hal @@ -8,7 +8,7 @@ # Launch the setup script to make sure hardware setup looks good loadusr -w ./setup.bridge.sh -#loadusr -w config-pin -f ./BeBoPr-Bridge.bbio +loadusr -w config-pin -f ./BeBoPr-Bridge.bbio # ################################### @@ -24,10 +24,9 @@ loadrt tp loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES tp=tp kins=trivkins -# load low-level drivers -#loadrt hal_bb_gpio output_pins=107,126,217,218,224,226 input_pins=108,109,110,114,117,118 +# load low-level drivers (Must not include pins used in PRU) loadrt hal_bb_gpio output_pins=807,826,917,918,924,926 input_pins=808,809,810,814,817,818 -loadrt [PRUCONF](DRIVER) prucode=$(HAL_RTMOD_DIR)/[PRUCONF](PRUBIN) [PRUCONF](CONFIG) halname=hpg +loadrt [PRUCONF](DRIVER) prucode=$(HAL_RTMOD_DIR)/[PRUCONF](PRUBIN) [PRUCONF](CONFIG) loadrt pid count=2 loadrt limit1 count=2 diff --git a/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.ini b/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.ini index e41c88404d..c9eeb82cd0 100755 --- a/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.ini +++ b/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.ini @@ -1,8 +1,9 @@ [PRUCONF] DRIVER=hal_pru_generic -CONFIG=pru=1 num_stepgens=4 num_pwmgens=3 +#PRUCODE=/usr/lib/linuxcnc/rt-preempt/pru_generic.bin pru=1 halname=hpg num_stepgens=4 num_pwmgens=3 #PRUBIN=xenomai/pru_generic.bin PRUBIN=rt-preempt/pru_generic.bin +CONFIG=pru=1 halname=hpg num_stepgens=4 num_pwmgens=3 ############################################################################### # Hardware Abstraction Layer section @@ -46,9 +47,9 @@ POSITION_FEEDBACK = ACTUAL MAX_FEED_OVERRIDE = 1.5 # Prefix to be used -PROGRAM_PREFIX = ../../../nc_files/ +#PROGRAM_PREFIX = ../../../nc_files/ #PROGRAM_PREFIX = /home/machinekit/machinekit/nc_files/ -#PROGRAM_PREFIX = ~/machinekit/nc_files/ +PROGRAM_PREFIX = ~/machinekit/nc_files/ # Introductory graphic INTRO_GRAPHIC = machinekit.gif @@ -218,18 +219,18 @@ MAX_LIMIT = 250.0 FERROR = 1.0 MIN_FERROR = 0.25 +# Set HOME_SEARCH_VEL and HOME_LATCH_VEL to zero if you don't have physical home/limit switches +# if you have switches set to the desired homing and latch velocity +# See: https://github.com/machinekit/machinekit-docs + HOME = 0.000 HOME_OFFSET = 0.00 +HOME_SEARCH_VEL = 0.0 +HOME_LATCH_VEL = 0.0 HOME_USE_INDEX = NO HOME_IGNORE_LIMITS = YES HOME_SEQUENCE = 0 -# Set to zero if you don't have physical home/limit switches -# Set to the desired homing and latch velocity if you have switches -# See: https://github.com/machinekit/machinekit-docs -HOME_SEARCH_VEL = 0.0 -HOME_LATCH_VEL = 0.0 - # these are in nanoseconds DIRSETUP = 200 DIRHOLD = 200 @@ -259,18 +260,18 @@ MAX_LIMIT = 200.0 FERROR = 1.0 MIN_FERROR = 0.25 +# Set HOME_SEARCH_VEL and HOME_LATCH_VEL to zero if you don't have physical home/limit switches +# if you have switches set to the desired homing and latch velocity +# See: https://github.com/machinekit/machinekit-docs + HOME = 0.000 HOME_OFFSET = 0.00 +HOME_SEARCH_VEL = 0.0 +HOME_LATCH_VEL = 0.0 HOME_IGNORE_LIMITS = YES HOME_USE_INDEX = NO HOME_SEQUENCE = 0 -# Set to zero if you don't have physical home/limit switches -# Set to the desired homing and latch velocity if you have switches -# See: https://github.com/machinekit/machinekit-docs -HOME_SEARCH_VEL = 0.0 -HOME_LATCH_VEL = 0.0 - # these are in nanoseconds DIRSETUP = 200 DIRHOLD = 200 @@ -301,18 +302,18 @@ MAX_LIMIT = 999999999.0 FERROR = 1.0 MIN_FERROR = .25 +# Set HOME_SEARCH_VEL and HOME_LATCH_VEL to zero if you don't have physical home/limit switches +# if you have switches set to the desired homing and latch velocity +# See: https://github.com/machinekit/machinekit-docs + HOME = 0.000 HOME_OFFSET = 0.00 +HOME_SEARCH_VEL = 0.0 +HOME_LATCH_VEL = 0.0 HOME_IGNORE_LIMITS = YES HOME_USE_INDEX = NO HOME_SEQUENCE = 0 -# Set to zero if you don't have physical home/limit switches -# Set to the desired homing and latch velocity if you have switches -# See: https://github.com/machinekit/machinekit-docs -HOME_SEARCH_VEL = 0.0 -HOME_LATCH_VEL = 0.0 - # these are in nanoseconds DIRSETUP = 200 DIRHOLD = 200 diff --git a/configs/ARM/BeagleBone/BeBoPr-Bridge/lineardelta.hal b/configs/ARM/BeagleBone/BeBoPr-Bridge/lineardelta.hal index a77a4bdea9..c3326f119f 100644 --- a/configs/ARM/BeagleBone/BeBoPr-Bridge/lineardelta.hal +++ b/configs/ARM/BeagleBone/BeBoPr-Bridge/lineardelta.hal @@ -30,7 +30,7 @@ loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AX # load low-level drivers #loadrt hal_bb_gpio output_pins=107,126,217,218,224,226 input_pins=108,109,110,114,117,118 loadrt hal_bb_gpio output_pins=807,826,917,918,924,926 input_pins=808,809,810,814,817,818 -loadrt [PRUCONF](DRIVER) prucode=$(HAL_RTMOD_DIR)/[PRUCONF](PRUBIN) [PRUCONF](CONFIG) halname=hpg +loadrt [PRUCONF](DRIVER) prucode=$(HAL_RTMOD_DIR)/[PRUCONF](PRUBIN) [PRUCONF](CONFIG) loadrt pid count=2 loadrt limit1 count=2 diff --git a/configs/ARM/BeagleBone/BeBoPr-Bridge/lineardelta.ini b/configs/ARM/BeagleBone/BeBoPr-Bridge/lineardelta.ini index 6a9d1032ec..b9c97e6a47 100644 --- a/configs/ARM/BeagleBone/BeBoPr-Bridge/lineardelta.ini +++ b/configs/ARM/BeagleBone/BeBoPr-Bridge/lineardelta.ini @@ -1,8 +1,9 @@ [PRUCONF] DRIVER=hal_pru_generic -CONFIG=pru=1 num_stepgens=4 num_pwmgens=3 +#PRUCODE=/usr/lib/linuxcnc/rt-preempt/pru_generic.bin pru=1 halname=hpg num_stepgens=4 num_pwmgens=3 #PRUBIN=xenomai/pru_generic.bin PRUBIN=rt-preempt/pru_generic.bin +CONFIG=pru=1 halname=hpg num_stepgens=4 num_pwmgens=3 [EMC] @@ -65,9 +66,9 @@ POSITION_FEEDBACK = ACTUAL MAX_FEED_OVERRIDE = 1.5 # Prefix to be used -PROGRAM_PREFIX = ../../../nc_files/ #PROGRAM_PREFIX = /home/machinekit/machinekit/nc_files/ -#PROGRAM_PREFIX = ~/machinekit/nc_files/ +#PROGRAM_PREFIX = ../../../nc_files/ +PROGRAM_PREFIX = ~/machinekit/nc_files/ # Introductory graphic INTRO_GRAPHIC = machinekit.gif diff --git a/configs/ARM/BeagleBone/BeBoPr-Bridge/setup.bridge.sh b/configs/ARM/BeagleBone/BeBoPr-Bridge/setup.bridge.sh index 572006524c..e24fa5f4d5 100755 --- a/configs/ARM/BeagleBone/BeBoPr-Bridge/setup.bridge.sh +++ b/configs/ARM/BeagleBone/BeBoPr-Bridge/setup.bridge.sh @@ -62,63 +62,5 @@ fi # sudo -A su -c "echo none > $FILE" || bebopr_err led: $FILE #fi -# Export GPIO pins: -# One pin needs to be exported to enable the low-level clocks for the GPIO -# modules (there is probably a better way to do this) -# -# Any GPIO pins driven by the PRU need to have their direction set properly -# here. The PRU does not do any setup of the GPIO, it just yanks on the -# pins and assumes you have the output enables configured already -# -# Direct PRU inputs and outputs do not need to be configured here, the pin -# mux setup (which is handled by the device tree overlay) should be all -# the setup needed. -# -# Any GPIO pins driven by the hal_bb_gpio driver do not need to be -# configured here. The hal_bb_gpio module handles setting the output -# enable bits properly. These pins _can_ however be set here without -# causing problems. You may wish to do this for documentation or to make -# sure the pin starts with a known value as soon as possible. -sudo $(which config-pin) -f - <<- EOF - - P8.03 low # gpio1.06 Enable - P8.05 high # gpio1.02 Enable_n - P8.07 high # gpio2.02 Enable_n (ECO location) - P8.08 high # gpio2.03 - P8.09 in # gpio2.05 - P8.10 in # gpio2.04 - P8.13 low # gpio0.23 J2.PWM0-Heater - P8.14 in # gpio0.26 - P8.17 in # gpio0.27 - P8.18 in # gpio2.01 - P8.19 low # gpio0.22 J3.PWM1-Heater - P8.20 out # gpio1.31 E_ENA - P8.21 out # gpio1.30 E_DIR - P8.25 out # gpio1.00 STATUS_LED - P8.27 out # gpio2.22 Z_Step - P8.28 out # gpio2.24 Z_Ena - P8.29 out # gpio2.23 Z_Dir - P8.29 out # gpio2.23 Z_Dir - P8.30 out # gpio0.10 E_Step - P8.31 in # gpio0.10 X_Min - P8.32 in # gpio0.11 X_Max - P8.33 in # gpio0.09 Y_Max - P8.35 in # gpio0.08 Y_Min - P8.36 out # gpio2.16 J4.PWM - P8.37 in # gpio2.14 Z_Max - P8.38 in # gpio2.15 Z_Min - P8.39 out # gpio2.12 Z_Min - P8.40 out # gpio2.13 Y_Ena - P8.41 out # gpio2.10 X_Ena - P8.42 out # gpio2.11 Y_Step - P8.43 out # gpio2.08 X_Step - P8.44 out # gpio2.09 X_Dir - P8.45 low # gpio2.06 PWM1 - P8.46 low # gpio2.07 PWM0 - P9.14 low # gpio1.18 J4.PWM2-Heater -# P9.36 in # THRM2 -# P9.38 in # THRM1 -# -EOF diff --git a/configs/ARM/BeagleBone/CRAMPS/CRAMPS.ShuttleXpress.ini b/configs/ARM/BeagleBone/CRAMPS/CRAMPS.ShuttleXpress.ini index 6826ba49eb..dd6f989704 100755 --- a/configs/ARM/BeagleBone/CRAMPS/CRAMPS.ShuttleXpress.ini +++ b/configs/ARM/BeagleBone/CRAMPS/CRAMPS.ShuttleXpress.ini @@ -1,28 +1,33 @@ [PRUCONF] DRIVER=hal_pru_generic -CONFIG=pru=1 num_stepgens=4 num_pwmgens=6 -PRUBIN=xenomai/pru_generic.bin +#PRUCODE=prucode=/usr/lib/linuxcnc/rt-preempt/pru_generic.bin pru=1 halname=hpg num_stepgens=4 num_pwmgens=6 +#PRUBIN=xenomai/pru_generic.bin +PRUBIN=rt-preempt/pru_generic.bin +CONFIG=pru=1 halname=hpg num_stepgens=4 num_pwmgens=6 +############################################################################### +# Hardware Abstraction Layer section +############################################################################### [EMC] # Name of machine, for use with display, etc. MACHINE = MendelMax-CRAMPS # Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others +DEBUG = 0 #DEBUG = 0x00000003 #DEBUG = 0x00000007 -DEBUG = 0 - - +############################################################################### +# Sections for display options +############################################################################### [DISPLAY] - # Name of display program, e.g., tkemc +DISPLAY = axis #DISPLAY = tkemc #DISPLAY = gscreen -DISPLAY = axis # Touchy currently won't work without some hardware buttons/jog-wheel #DISPLAY = touchy @@ -43,7 +48,9 @@ POSITION_FEEDBACK = ACTUAL MAX_FEED_OVERRIDE = 1.5 # Prefix to be used -PROGRAM_PREFIX = ../../../nc_files/ +#PROGRAM_PREFIX = ../../../nc_files/ +#PROGRAM_PREFIX = /home/machinekit/machinekit/nc_files/ +PROGRAM_PREFIX = ~/machinekit/nc_files/ # Introductory graphic INTRO_GRAPHIC = machinekit.gif @@ -65,6 +72,9 @@ jpg = image-to-gcode py = python +############################################################################### +# Task controller section +############################################################################### [TASK] # Name of task controller program, e.g., milltask @@ -74,16 +84,16 @@ TASK = milltask CYCLE_TIME = 0.010 - - +############################################################################### +# Part program interpreter section +############################################################################### [RS274NGC] - # File containing interpreter variables PARAMETER_FILE = pru-stepper.var - - - +############################################################################### +# Motion control section +############################################################################### [EMCMOT] EMCMOT = motmod @@ -98,8 +108,9 @@ COMM_WAIT = 0.010 SERVO_PERIOD = 1000000 - - +############################################################################### +# Hardware Abstraction Layer section +############################################################################### [HAL] # The run script first uses halcmd to execute any HALFILE @@ -108,7 +119,7 @@ SERVO_PERIOD = 1000000 # list of hal config files to run through halcmd # files are executed in the order in which they appear -HALFILE = CRAMPS.hal +HALFILE = CRAMPS.hal HALFILE = ../../../common/shuttlexpress.hal # list of halcmd commands to execute @@ -121,6 +132,9 @@ POSTGUI_HALFILE = 3D.postgui.hal POSTGUI_HALFILE = ShuttleXpress.postgui.hal +############################################################################### +# Trajectory planner section +############################################################################### [TRAJ] AXES = 4 @@ -137,6 +151,9 @@ MAX_LINEAR_VELOCITY = 200.00 +############################################################################### +# Axes sections +############################################################################### [AXIS_0] # @@ -194,6 +211,7 @@ STEP_INVERT = 0 +################################################################ [AXIS_1] TYPE = LINEAR @@ -237,6 +255,7 @@ STEP_INVERT = 0 +################################################################ [AXIS_2] TYPE = LINEAR @@ -281,6 +300,7 @@ STEP_INVERT = 0 +################################################################ [AXIS_3] TYPE = ANGULAR diff --git a/configs/ARM/BeagleBone/CRAMPS/CRAMPS.bbio b/configs/ARM/BeagleBone/CRAMPS/CRAMPS.bbio index 316172f2d2..b6c83962f5 100644 --- a/configs/ARM/BeagleBone/CRAMPS/CRAMPS.bbio +++ b/configs/ARM/BeagleBone/CRAMPS/CRAMPS.bbio @@ -12,14 +12,14 @@ P8_08 in #X Min P8_09 in #Y Max P8_10 in #Y Min P8_11 low #FET 1 : Heated Bed -P8_12 low #X Dir -P8_13 low #X Step -P8_14 low #Y Dir -P8_15 low #Y Step +P8_12 low #X Dir Used in PRU +P8_13 low #X Step Used in PRU +P8_14 low #Y Dir Used in PRU +P8_15 low #Y Step Used in PRU P8_16 high #eMMC Enable P8_17 in #Estop In -P8_18 low #Z Dir -P8_19 low #Z Step +P8_18 low #Z Dir Used in PRU +P8_19 low #Z Step Used in PRU #P8_20 default #P8_21 default #P8_22 low #Servo 4 @@ -28,13 +28,13 @@ P8_19 low #Z Step #P8_25 low #Servo 1 P8_26 high #Estop out P9_11 in #Z Max -P9_12 low #E0 Dir +P9_12 low #E0 Dir Used in PRU P9_13 in #Z Min P9_14 high #Axis Enable, act. low P9_15 low #FET 2 : E0 -P9_16 low #E0 Step -P9_17 low #E1 Step -P9_18 low #E1 Dir +P9_16 low #E0 Step Used in PRU +P9_17 low #E1 Step Used in PRU +P9_18 low #E1 Dir Used in PRU P9_21 low #FET 4 : E1 P9_22 low #FET 6 P9_23 low #Machine Power diff --git a/configs/ARM/BeagleBone/CRAMPS/CRAMPS.hal b/configs/ARM/BeagleBone/CRAMPS/CRAMPS.hal index 1b2ab66b52..67e3a98d53 100644 --- a/configs/ARM/BeagleBone/CRAMPS/CRAMPS.hal +++ b/configs/ARM/BeagleBone/CRAMPS/CRAMPS.hal @@ -9,7 +9,7 @@ # Launch the setup script to make sure hardware setup looks good #loadusr -w /home/machinekit/machinekit/configs/ARM.BeagleBone.CRAMPS/setup.sh loadusr -w ./setup.sh -#loadusr -w config-pin -f ./CRAMPS.bbio +loadusr -w config-pin -f ./CRAMPS.bbio # ################################### @@ -28,7 +28,7 @@ loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AX # load low-level drivers loadrt hal_bb_gpio output_pins=816,822,823,824,825,826,914,923,925 input_pins=807,808,809,810,817,911,913 -loadrt [PRUCONF](DRIVER) prucode=$(HAL_RTMOD_DIR)/[PRUCONF](PRUBIN) [PRUCONF](CONFIG) halname=hpg +loadrt [PRUCONF](DRIVER) prucode=$(HAL_RTMOD_DIR)/[PRUCONF](PRUBIN) [PRUCONF](CONFIG) loadrt pid count=2 loadrt limit1 count=2 diff --git a/configs/ARM/BeagleBone/CRAMPS/CRAMPS.ini b/configs/ARM/BeagleBone/CRAMPS/CRAMPS.ini index be1eada1d7..cd3360dc4a 100644 --- a/configs/ARM/BeagleBone/CRAMPS/CRAMPS.ini +++ b/configs/ARM/BeagleBone/CRAMPS/CRAMPS.ini @@ -1,8 +1,9 @@ [PRUCONF] DRIVER=hal_pru_generic -CONFIG=pru=0 num_stepgens=4 num_pwmgens=6 +#PRUCODE=/usr/lib/linuxcnc/rt-preempt/pru_generic.bin pru=0 halname=hpg num_stepgens=4 num_pwmgens=6 #PRUBIN=xenomai/pru_generic.bin PRUBIN=rt-preempt/pru_generic.bin +CONFIG=pru=0 halname=hpg num_stepgens=4 num_pwmgens=6 ############################################################################### # Hardware Abstraction Layer section @@ -13,9 +14,9 @@ PRUBIN=rt-preempt/pru_generic.bin MACHINE = CRAMPS # Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others +DEBUG = 0 #DEBUG = 0x00000003 #DEBUG = 0x00000007 -DEBUG = 0 ############################################################################### @@ -46,9 +47,9 @@ POSITION_FEEDBACK = ACTUAL MAX_FEED_OVERRIDE = 1.5 # Prefix to be used -PROGRAM_PREFIX = ../../../nc_files/ #PROGRAM_PREFIX = /home/machinekit/machinekit/nc_files/ -#PROGRAM_PREFIX = ~/machinekit/nc_files/ +#PROGRAM_PREFIX = ../../../nc_files/ +PROGRAM_PREFIX = ~/machinekit/nc_files/ # Introductory graphic INTRO_GRAPHIC = machinekit.gif @@ -122,6 +123,8 @@ HALFILE = CRAMPS.hal # commands are executed in the order in which they appear #HALCMD = save neta +HALUI = halui + POSTGUI_HALFILE = 3D.postgui.hal diff --git a/configs/ARM/BeagleBone/CRAMPS/setup.sh b/configs/ARM/BeagleBone/CRAMPS/setup.sh index 83af1119d1..9ef0646b40 100644 --- a/configs/ARM/BeagleBone/CRAMPS/setup.sh +++ b/configs/ARM/BeagleBone/CRAMPS/setup.sh @@ -47,76 +47,3 @@ if [ ! -r $PRU ] ; then fi -# Export GPIO pins: -# One pin needs to be exported to enable the low-level clocks for the GPIO -# modules (there is probably a better way to do this) -# -# Any GPIO pins driven by the PRU need to have their direction set properly -# here. The PRU does not do any setup of the GPIO, it just yanks on the -# pins and assumes you have the output enables configured already -# -# Direct PRU inputs and outputs do not need to be configured here, the pin -# mux setup (which is handled by the device tree overlay) should be all -# the setup needed. -# -# Any GPIO pins driven by the hal_bb_gpio driver do not need to be -# configured here. The hal_bb_gpio module handles setting the output -# enable bits properly. These pins _can_ however be set here without -# causing problems. You may wish to do this for documentation or to make -# sure the pin starts with a known value as soon as possible. - -sudo $(which config-pin) -f - <<- EOF - - P8.07 in # X Max - P8.08 in # X Min - P8.09 in # Y Max - P8.10 in # Y Min - P8.11 low # FET 1 : Heated Bed - P8.12 low # X Dir - P8.13 low # X Step - P8.14 low # Y Dir - P8.15 low # Y Step - P8.16 high # eMMC Enable - P8.17 in # ESTOP - P8.18 low # Z Dir - P8.19 low # Z Step - -# eMMC signals, uncomment *ONLY* if you have disabled the on-board eMMC! -# MachineKit images disable eMMC and HDMI audio by default in uEnv.txt: -# capemgr.disable_partno=BB-BONELT-HDMI,BB-BONE-EMMC-2G -# P8.22 low # Servo 4 -# P8.23 low # Servo 3 -# P8.24 low # Servo 2 -# P8.25 low # Servo 1 - - P8.26 high # ESTOP Out - - P9.11 in # Z Max - P9.12 low # E0 Dir - P9.13 in # Z Min - P9.14 high # Axis Enable, active low - P9.15 low # FET 2 : E0 - P9.16 low # E0 Step - P9.17 low # E1 Step - P9.18 low # E1 Dir -# P9.19 low # I2C SCL -# P9.20 low # I2C SDA - P9.21 low # FET 4 : E1 - P9.22 low # FET 6 - P9.23 low # Machine Power - P9.24 low # E2 Step -# P9.25 low # LED - P9.26 low # E2 Dir - P9.27 low # FET 3 : E2 - P9.28 low # SPI CS0 - P9.29 low # SPI MISO - P9.30 low # SPI MOSI - P9.31 low # SPI SCLK - - P9.41 low # FET 5 - P9.91 in # Reserved, connected to P9.41 - -# P9.42 low # SPI CS1 - P9.92 in # Reserved, connected to P9.42 -EOF - diff --git a/configs/ARM/BeagleBone/Xylotex/Xylotex.ShuttleXpress.ini b/configs/ARM/BeagleBone/Xylotex/Xylotex.ShuttleXpress.ini index 9ff2b4aab3..9b821b3368 100644 --- a/configs/ARM/BeagleBone/Xylotex/Xylotex.ShuttleXpress.ini +++ b/configs/ARM/BeagleBone/Xylotex/Xylotex.ShuttleXpress.ini @@ -1,9 +1,9 @@ [PRUCONF] DRIVER=hal_pru_generic -#CONFIG=pru=1 num_stepgens=4 -CONFIG=prucode=/usr/lib/linuxcnc/rt-preempt/pru_generic.bin pru=1 num_stepgens=4 num_pwmgens=1 +#PRUCODE=/usr/lib/linuxcnc/rt-preempt/pru_generic.bin pru=1 halname=hpg num_stepgens=4 num_pwmgens=1 #PRUBIN=xenomai/pru_generic.bin PRUBIN=rt-preempt/pru_generic.bin +CONFIG=pru=1 halname=hpg num_stepgens=3 ############################################################################### # General section diff --git a/configs/ARM/BeagleBone/Xylotex/Xylotex.bbio b/configs/ARM/BeagleBone/Xylotex/Xylotex.bbio index dde6c8075f..3b0e81bda3 100644 --- a/configs/ARM/BeagleBone/Xylotex/Xylotex.bbio +++ b/configs/ARM/BeagleBone/Xylotex/Xylotex.bbio @@ -18,8 +18,6 @@ # causing problems. You may wish to do this for documentation or to make # sure the pin starts with a known value as soon as possible. -#sudo $(which config-pin) -f - <<- EOF ## from setup.sh - overlay cape-universal overlay cape-bone-iio #overlay cape-univ-emmc @@ -45,4 +43,3 @@ P9_15 out # gpio1.16 Z_Step Used by PRU #P9_22 out # gpio0.2 SCK P9_23 out # gpio1.17 Z_Dir Used by PRU -#EOF from setup.sh diff --git a/configs/ARM/BeagleBone/Xylotex/Xylotex.hal b/configs/ARM/BeagleBone/Xylotex/Xylotex.hal index 0653853dec..1c48e99b3f 100755 --- a/configs/ARM/BeagleBone/Xylotex/Xylotex.hal +++ b/configs/ARM/BeagleBone/Xylotex/Xylotex.hal @@ -35,12 +35,13 @@ loadrt trivkins loadrt tp # motion controller, get name and thread periods from ini file -loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES tp=tp kins=trivkins +loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES tp=tp kins=trivkins # load low-level drivers (must not include pins used by PRU) loadrt hal_bb_gpio output_pins=807,813,819,826,914,913,911 input_pins=809,810,814,818 -loadrt [PRUCONF](DRIVER) prucode=$(HAL_RTMOD_DIR)/[PRUCONF](PRUBIN) [PRUCONF](CONFIG) halname=hpg pru_period=25000 +loadrt [PRUCONF](DRIVER) prucode=$(HAL_RTMOD_DIR)/[PRUCONF](PRUBIN) [PRUCONF](CONFIG) + loadrt pid count=4 loadrt limit1 count=2 @@ -300,12 +301,12 @@ net tool-change-loop iocontrol.0.tool-change => iocontrol.0.tool-changed # this pin is output on DB25-1 # it is also used to enable the LVC541 driver/receiver on the interface board -#net machine-on bb_gpio.p8.out-07 bb_gpio.p8.out-26 => halui.machine.is-on +net machine-on bb_gpio.p8.out-07 bb_gpio.p8.out-26 => halui.machine.is-on #setp bb_gpio.p8.out-07.invert 1 # this input signal must be active LOW to allow the system to energize. # this should be fed through an NC STOP type switch from DB25-1 to DB25-10 -#net estop-in bb_gpio.p8.in-09 => iocontrol.0.emc-enable-in +net estop-in bb_gpio.p8.in-09 => iocontrol.0.emc-enable-in #setp bb_gpio.p8.in-09.invert 1 #newsig test bit #sets test 1 diff --git a/configs/ARM/BeagleBone/Xylotex/Xylotex.ini b/configs/ARM/BeagleBone/Xylotex/Xylotex.ini index 540d25b62a..a6fd65eb3d 100755 --- a/configs/ARM/BeagleBone/Xylotex/Xylotex.ini +++ b/configs/ARM/BeagleBone/Xylotex/Xylotex.ini @@ -1,9 +1,9 @@ [PRUCONF] DRIVER=hal_pru_generic -#CONFIG=pru=1 num_stepgens=4 -CONFIG=prucode=/usr/lib/linuxcnc/rt-preempt/pru_generic.bin pru=1 num_stepgens=4 num_pwmgens=1 +#PRUCODE=/usr/lib/linuxcnc/rt-preempt/pru_generic.bin pru=1 halname=hpg num_stepgens=4 num_pwmgens=1 #PRUBIN=xenomai/pru_generic.bin PRUBIN=rt-preempt/pru_generic.bin +CONFIG=pru=1 halname=hpg num_stepgens=4 num_pwmgens=1 ############################################################################### # General section @@ -29,6 +29,12 @@ DISPLAY = axis # Touchy currently will not work without some hardware buttons/jog-wheel #DISPLAY = touchy +#uncomment the line below if the shuttleexpress is installed +#GLADEVCP = shuttlexpress.glade +#leave the following two alone +#EMBED_TAB_NAME = GladeVCP demo +#EMBED_TAB_COMMAND = halcmd loadusr -Wn gladevcp gladevcp -c gladevcp -u shuttlexpress.py -x {XID} shuttlexpress.glade + #EDITOR = mousepad # Cycle time, in seconds, that display will sleep between polls @@ -54,7 +60,7 @@ MIN_SPINDLE_OVERRIDE = 0.25 PROGRAM_PREFIX = ~/machinekit/nc_files/ # Introductory graphic -INTRO_GRAPHIC = linuxcnc.gif +INTRO_GRAPHIC = machinekit.gif INTRO_TIME = 5 # Increments for the JOG section @@ -182,17 +188,16 @@ TOOL_TABLE = mill.tbl # This gives a maxvel of 20000/2000 = 10 ips # TYPE = LINEAR -MAX_VELOCITY = 2.0 +MAX_VELOCITY = 1.0 MAX_ACCELERATION = 15.0 # Set Stepgen max 20% higher than the axis - STEPGEN_MAX_VEL = 1.6 STEPGEN_MAX_ACC = 18.75 BACKLASH = 0.000 SCALE = 2000 -MIN_LIMIT = -0.0 +MIN_LIMIT = -0.10 MAX_LIMIT = 9.125 FERROR = .1 @@ -200,8 +205,8 @@ MIN_FERROR = 0.05 HOME = 0.000 HOME_OFFSET = -0.1 -HOME_SEARCH_VEL = -0.5 -HOME_LATCH_VEL = 0.25 +HOME_SEARCH_VEL = -0.50 +HOME_LATCH_VEL = 0.10 HOME_USE_INDEX = NO HOME_IGNORE_LIMITS = YES HOME_IS_SHARED = 1 @@ -239,7 +244,7 @@ MAX_OUTPUT = 0 # This gives a maxvel of 20000/2000 = 10 ips # TYPE = LINEAR -MAX_VELOCITY = 2.0 +MAX_VELOCITY = 1.0 MAX_ACCELERATION = 15.0 # Set Stepgen max 20% higher than the axis STEPGEN_MAX_VEL = 1.6 @@ -249,8 +254,8 @@ BACKLASH = 0.000 # scale is 200 steps/rev * 2 microstep * 5 tpi = 2000 steps/inch SCALE = 2000 -MIN_LIMIT = 0.0 -MAX_LIMIT = 5.5 +MIN_LIMIT = -0.10 +MAX_LIMIT = 5.50 FERROR = .1 MIN_FERROR = 0.05 @@ -258,7 +263,7 @@ MIN_FERROR = 0.05 HOME = 0.000 HOME_OFFSET = -0.1 HOME_SEARCH_VEL = -0.5 -HOME_LATCH_VEL = 0.250 +HOME_LATCH_VEL = 0.10 HOME_USE_INDEX = NO HOME_IGNORE_LIMITS = YES HOME_IS_SHARED = 1 @@ -312,10 +317,10 @@ MAX_LIMIT = 10.5 FERROR = .1 MIN_FERROR = 0.05 -HOME = 0.000 -HOME_OFFSET = 0.00 +HOME = 10.4 +HOME_OFFSET = 10.5 HOME_SEARCH_VEL = 1.0 -HOME_LATCH_VEL = -0.250 +HOME_LATCH_VEL = -0.10 HOME_USE_INDEX = NO HOME_IGNORE_LIMITS = YES HOME_IS_SHARED = 1 From 1b1f9f8ccec554f3e57fbec3002541c6f8e8663e Mon Sep 17 00:00:00 2001 From: muggins Date: Tue, 26 Feb 2019 15:06:06 -0800 Subject: [PATCH 423/516] Update Xylotex.hal Commented out line #304/ --- configs/ARM/BeagleBone/Xylotex/Xylotex.hal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/ARM/BeagleBone/Xylotex/Xylotex.hal b/configs/ARM/BeagleBone/Xylotex/Xylotex.hal index 1c48e99b3f..204a620d20 100755 --- a/configs/ARM/BeagleBone/Xylotex/Xylotex.hal +++ b/configs/ARM/BeagleBone/Xylotex/Xylotex.hal @@ -301,7 +301,7 @@ net tool-change-loop iocontrol.0.tool-change => iocontrol.0.tool-changed # this pin is output on DB25-1 # it is also used to enable the LVC541 driver/receiver on the interface board -net machine-on bb_gpio.p8.out-07 bb_gpio.p8.out-26 => halui.machine.is-on +#net machine-on bb_gpio.p8.out-07 bb_gpio.p8.out-26 => halui.machine.is-on #setp bb_gpio.p8.out-07.invert 1 # this input signal must be active LOW to allow the system to energize. From 4db89ee981d7225281f0e97ae42a4852abfa7818 Mon Sep 17 00:00:00 2001 From: ArcEye <770392+ArcEye@users.noreply.github.com> Date: Thu, 28 Feb 2019 09:01:39 +0000 Subject: [PATCH 424/516] Update README.asciidoc --- README.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.asciidoc b/README.asciidoc index b26f3641b6..410a94e0a0 100644 --- a/README.asciidoc +++ b/README.asciidoc @@ -30,7 +30,7 @@ ubiquitous platforms like phones or tablets. == Getting Machinekit -The easiest way to get up-and-running is to install Debian Wheezy and get the binary packages. +The easiest way to get up-and-running is to install Debian Stretch and get the binary packages. Please go to link:http://www.machinekit.io/[www.machinekit.io] for this and all other information, including documentation. From 4c63a809a6d5bf9407565f576794479f5b41d0c7 Mon Sep 17 00:00:00 2001 From: ArcEye <770392+ArcEye@users.noreply.github.com> Date: Thu, 28 Feb 2019 10:27:47 +0000 Subject: [PATCH 425/516] Create pull_request_template.md Add info template for persons pushing PRs who have not read the notice in the PRs section --- .github/pull_request_template.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .github/pull_request_template.md diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000000..6185f637e6 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,9 @@ +Pull Requests to the machinekit repo are closed. + +You may park them here for checking and review and will be contacted to advise you +how to proceed. + +In a short while, another repo will be receiving PRs for machinekit. + +Please ensure your repository and branch containing the PR remain publicly accessable +until it is merged. From b57613484c0656f87a7ff704f4e9b11009586f6a Mon Sep 17 00:00:00 2001 From: Alan Condit Date: Thu, 28 Feb 2019 20:43:30 -0800 Subject: [PATCH 426/516] Fixed some missed changes in Xylotex.ini, Xylotex.hal and setup.sh. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixed setup.sh for CRAMPS — needs to be executable. Both CRAMPS and BeBoPr-Bridge were missing .bbio files. Signed-off-by: Mick --- .../BeBoPr-Bridge/BeBoPr-Bridge.bbio | 21 +++++++- configs/ARM/BeagleBone/CRAMPS/CRAMPS.bbio | 18 +++++++ configs/ARM/BeagleBone/Xylotex/Xylotex.hal | 53 ++++++++++++++++++- configs/ARM/BeagleBone/Xylotex/Xylotex.ini | 5 +- 4 files changed, 91 insertions(+), 6 deletions(-) diff --git a/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.bbio b/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.bbio index 826c9a8b28..da5b1da212 100644 --- a/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.bbio +++ b/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.bbio @@ -1,9 +1,26 @@ # File generated with BB pin configurator -# title: Xylotex +# title: BeBoPr-Bridge +# Export GPIO pins: +# One pin needs to be exported to enable the low-level clocks for the GPIO +# modules (there is probably a better way to do this) +# +# Any GPIO pins driven by the PRU need to have their direction set properly +# here. The PRU does not do any setup of the GPIO, it just yanks on the +# pins and assumes you have the output enables configured already +# +# Direct PRU inputs and outputs do not need to be configured here, the pin +# mux setup (which is handled by the device tree overlay) should be all +# the setup needed. +# +# Any GPIO pins driven by the hal_bb_gpio driver do not need to be +# configured here. The hal_bb_gpio module handles setting the output +# enable bits properly. These pins _can_ however be set here without +# causing problems. You may wish to do this for documentation or to make +# sure the pin starts with a known value as soon as possible. overlay cape-universal overlay cape-bone-iio #overlay cape-univ-emmc - P8_03 low #gpio1.06 Enable +#P8_03 low #gpio1.06 Enable P8_05 high #gpio1.02 Enable_n P8_07 high #gpio2.02 Enable_n (ECO location) P8_08 high #gpio2.03 diff --git a/configs/ARM/BeagleBone/CRAMPS/CRAMPS.bbio b/configs/ARM/BeagleBone/CRAMPS/CRAMPS.bbio index b6c83962f5..c1ce51bbd5 100644 --- a/configs/ARM/BeagleBone/CRAMPS/CRAMPS.bbio +++ b/configs/ARM/BeagleBone/CRAMPS/CRAMPS.bbio @@ -1,5 +1,23 @@ # File generated with BB pin configurator # title: CRAMPS +# Export GPIO pins: +# One pin needs to be exported to enable the low-level clocks for the GPIO +# modules (there is probably a better way to do this) +# +# Any GPIO pins driven by the PRU need to have their direction set properly +# here. The PRU does not do any setup of the GPIO, it just yanks on the +# pins and assumes you have the output enables configured already +# +# Direct PRU inputs and outputs do not need to be configured here, the pin +# mux setup (which is handled by the device tree overlay) should be all +# the setup needed. +# +# Any GPIO pins driven by the hal_bb_gpio driver do not need to be +# configured here. The hal_bb_gpio module handles setting the output +# enable bits properly. These pins _can_ however be set here without +# causing problems. You may wish to do this for documentation or to make +# sure the pin starts with a known value as soon as possible. + overlay cape-universal overlay cape-bone-iio #overlay cape-univ-emmc diff --git a/configs/ARM/BeagleBone/Xylotex/Xylotex.hal b/configs/ARM/BeagleBone/Xylotex/Xylotex.hal index 03725d84ce..204a620d20 100755 --- a/configs/ARM/BeagleBone/Xylotex/Xylotex.hal +++ b/configs/ARM/BeagleBone/Xylotex/Xylotex.hal @@ -57,7 +57,7 @@ addf motion-controller servo-thread addf pid.0.do-pid-calcs servo-thread addf pid.1.do-pid-calcs servo-thread addf pid.2.do-pid-calcs servo-thread -#addf pid.3.do-pid-calcs servo-thread +addf pid.3.do-pid-calcs servo-thread addf limit1.0 servo-thread addf limit1.1 servo-thread addf hpg.update servo-thread @@ -232,6 +232,57 @@ net both-home-z => axis.2.neg-lim-sw-in net both-home-z => axis.2.pos-lim-sw-in #setp bb_gpio.p8.in-18.invert 1 +# ################ +# A [3] Axis +# ################ +# axis enable chain +newsig emcmot.03.enable bit +sets emcmot.03.enable FALSE + +net emcmot.03.enable <= axis.3.amp-enable-out +net emcmot.03.enable => hpg.stepgen.03.enable pid.3.enable + +# position command and feedback +net emcmot.03.pos-cmd axis.3.motor-pos-cmd => pid.3.command +net emcmot.03.vel-cmd axis.3.joint-vel-cmd => pid.3.command-deriv +net motor.03.pos-fb <= hpg.stepgen.03.position-fb axis.3.motor-pos-fb pid.3.feedback +net motor.03.command pid.3.output hpg.stepgen.03.velocity-cmd +setp pid.3.error-previous-target true +setp pid.3.maxerror .001 + +# timing parameters +setp hpg.stepgen.03.dirsetup [AXIS_3]DIRSETUP +setp hpg.stepgen.03.dirhold [AXIS_3]DIRHOLD + +setp hpg.stepgen.03.steplen [AXIS_3]STEPLEN +setp hpg.stepgen.03.stepspace [AXIS_3]STEPSPACE + +setp hpg.stepgen.03.position-scale [AXIS_3]SCALE + +setp hpg.stepgen.03.maxvel [AXIS_3]STEPGEN_MAX_VEL +setp hpg.stepgen.03.maxaccel [AXIS_3]STEPGEN_MAX_ACC + +setp hpg.stepgen.03.control-type 1 +setp hpg.stepgen.03.stepinvert [AXIS_3]STEP_INVERT +#setp hpg.stepgen.03.step_type 0 +setp hpg.stepgen.03.steppin 911 +setp hpg.stepgen.03.dirpin 913 + +# set PID loop gains from inifile +setp pid.3.Pgain [AXIS_3]P +setp pid.3.Igain [AXIS_3]I +setp pid.3.Dgain [AXIS_3]D +setp pid.3.bias [AXIS_3]BIAS +setp pid.3.FF0 [AXIS_3]FF0 +setp pid.3.FF1 [AXIS_3]FF1 +setp pid.3.FF2 [AXIS_3]FF2 +setp pid.3.deadband [AXIS_3]DEADBAND +setp pid.3.maxoutput [AXIS_3]MAX_OUTPUT + + +# Add A home switch input +#net home-a bb_gpio.p9.in-41 => axis.3.home-sw-in + # ################################################## # Standard I/O - EStop, Enables, Limit Switches, Etc # ################################################## diff --git a/configs/ARM/BeagleBone/Xylotex/Xylotex.ini b/configs/ARM/BeagleBone/Xylotex/Xylotex.ini index a6fd65eb3d..9f975809c0 100755 --- a/configs/ARM/BeagleBone/Xylotex/Xylotex.ini +++ b/configs/ARM/BeagleBone/Xylotex/Xylotex.ini @@ -114,7 +114,6 @@ SERVO_PERIOD = 1000000 # Hardware Abstraction Layer section ############################################################################### [HAL] -HALUI = halui # The run script first uses halcmd to execute any HALFILE # files, and then to execute any individual HALCMD commands. HALFILE = Xylotex.hal @@ -149,9 +148,9 @@ DEFAULT_ANGULAR_VELOCITY = 4.50 LINEAR_UNITS = inch ANGULAR_UNITS = degree CYCLE_TIME = 0.010 -DEFAULT_VELOCITY = 2.0 +DEFAULT_VELOCITY = 1.0 DEFAULT_ACCELERATION = 15.0 -MAX_LINEAR_VELOCITY = 2.6 +MAX_LINEAR_VELOCITY = 1.6 NO_FORCE_HOMING = 1 # POSITION_FILE = position.txt #PROBE_INDEX = 0 From 7b593fe5e26770e74461a8b3227e2018982efc43 Mon Sep 17 00:00:00 2001 From: Alan Condit Date: Sat, 2 Mar 2019 15:32:31 -0800 Subject: [PATCH 427/516] Fix permissions on CRAMPS setup.sh --- configs/ARM/BeagleBone/CRAMPS/setup.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 configs/ARM/BeagleBone/CRAMPS/setup.sh diff --git a/configs/ARM/BeagleBone/CRAMPS/setup.sh b/configs/ARM/BeagleBone/CRAMPS/setup.sh old mode 100644 new mode 100755 From f0f8b8359b6c9c4a633ba5e4557c21d4fc605b09 Mon Sep 17 00:00:00 2001 From: Alan Condit Date: Sat, 2 Mar 2019 16:44:41 -0800 Subject: [PATCH 428/516] Fix pinout for BeBoPr-Bridge.bbio Remove extraneous comment in BeBoPr-Bridge.hal Changed BeBoPr-Bridge setup-bridge.sh to setup.sh --- .../BeBoPr-Bridge/BeBoPr-Bridge.bbio | 55 ++++++++----------- .../BeBoPr-Bridge/BeBoPr-Bridge.hal | 5 +- configs/ARM/BeagleBone/BeBoPr-Bridge/setup.sh | 48 ++++++++++++++++ 3 files changed, 74 insertions(+), 34 deletions(-) create mode 100755 configs/ARM/BeagleBone/BeBoPr-Bridge/setup.sh diff --git a/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.bbio b/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.bbio index da5b1da212..229da5effb 100644 --- a/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.bbio +++ b/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.bbio @@ -20,40 +20,31 @@ overlay cape-universal overlay cape-bone-iio #overlay cape-univ-emmc -#P8_03 low #gpio1.06 Enable - P8_05 high #gpio1.02 Enable_n P8_07 high #gpio2.02 Enable_n (ECO location) - P8_08 high #gpio2.03 - P8_09 in #gpio2.05 - P8_10 in #gpio2.04 + P8_08 high #gpio2.03 X_MIN + P8_09 in #gpio2.05 X_MAX + P8_10 in #gpio2.04 Y_MIN + P8_11 out #gpio1.13 X_DIR Used in PRU + P8_12 out #gpio1.12 X_STP Used in PRU P8_13 low #gpio0.23 J2.PWM0-Heater - P8_14 in #gpio0.26 - P8_17 in #gpio0.27 - P8_18 in #gpio2.01 + P8_14 in #gpio0.26 Y_Max + P8_15 out #gpio1.15 Y_DIR Used in PRU + P8_16 out #gpio1_14 Y_STP Used in PRU + P8_17 in #gpio0.27 Z_MIN + P8_18 in #gpio2.01 Z_MAX P8_19 low #gpio0.22 J3.PWM1-Heater - P8_20 out #gpio1.31 E_ENA - P8_21 out #gpio1.30 E_DIR Used in PRU - P8_25 out #gpio1.00 STATUS_LED - P8_27 out #gpio2.22 Z_Step Used in PRU - P8_28 out #gpio2.24 Z_Ena - P8_29 out #gpio2.23 Z_Dir Used in PRU - P8_30 out #gpio0.10 E_Step Used in PRU - P8_31 in #gpio0.10 X_Min - P8_32 in #gpio0.11 X_Max - P8_33 in #gpio0.09 Y_Max - P8_35 in #gpio0.08 Y_Min - P8_36 out #gpio2.16 J4.PWM - P8_37 in #gpio2.14 Z_Max - P8_38 in #gpio2.15 Z_Min - P8_39 out #gpio2.12 Y_Dir Used in PRU - P8_40 out #gpio2.13 Y_Ena - P8_41 out #gpio2.10 X_Ena - P8_42 out #gpio2.11 Y_Step Used in PRU - P8_43 out #gpio2.08 X_Step Used in PRU - P8_44 out #gpio2.09 X_Dir Used in PRU - P8_45 low #gpio2.06 PWM1 Used in PRU - P8_46 low #gpio2.07 PWM0 Used in PRU + P8_26 out #gpio1.29 STATUS_LED P9_14 low #gpio1.18 J4.PWM2-Heater + P9_15 out #gpio1.16 Z_STP Used in PRU + P9_17 out #gpio0.05 B_DIR Used in PRU + P9_18 out #gpio0.04 B_STP Used in PRU + P9_21 out #gpio0.03 A_DIR Used in PRU + P9_22 out #gpio0.02 A_STP Used in PRU + P9_23 out #gpio1_17 Z_DIR Used in PRU + P9_24 out #gpio0.15 SPINDLE + P9_26 out #gpio0.14 AXES_ENA +# P9_32 high #VDD_ADC +# P9_33 in #THRM0 +# P9_34 high #GNDA_ADC +# P9_35 in #THRM1 # P9_36 in #THRM2 -# P9_38 in #THRM1 -# P9_40 in #THRM0 diff --git a/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.hal b/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.hal index ae56f2b319..d3209c80f5 100755 --- a/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.hal +++ b/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.hal @@ -7,7 +7,8 @@ # ######################################## # Launch the setup script to make sure hardware setup looks good -loadusr -w ./setup.bridge.sh +#loadusr -w ./setup.bridge.sh +loadusr -w ./setup.sh loadusr -w config-pin -f ./BeBoPr-Bridge.bbio @@ -39,7 +40,7 @@ loadusr -Wn Therm ./ReadTemp.py -n Therm --num_chan 2 -t 1 1 -a 4 5 # ################################################ # THREADS # ################################################ -# hpg = [PRUCONF](DRIVER) + addf hpg.capture-position servo-thread addf bb_gpio.read servo-thread addf motion-command-handler servo-thread diff --git a/configs/ARM/BeagleBone/BeBoPr-Bridge/setup.sh b/configs/ARM/BeagleBone/BeBoPr-Bridge/setup.sh new file mode 100755 index 0000000000..bba5e9b221 --- /dev/null +++ b/configs/ARM/BeagleBone/BeBoPr-Bridge/setup.sh @@ -0,0 +1,48 @@ +#!/bin/bash +# Copyright 2013 +# Charles Steinkuehler +# +# This program 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 2 of the License, or +# (at your option) any later version. +# +# This program 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 this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +dtbo_err () { + echo "Error loading device tree overlay file: $DTBO" >&2 + exit 1 +} + +pin_err () { + echo "Error exporting pin:$PIN" >&2 + exit 1 +} + +dir_err () { + echo "Error setting direction:$DIR on pin:$PIN" >&2 + exit 1 +} + +PRU=/sys/class/uio/uio0 +echo -n "Waiting for $PRU " + +while [ ! -r $PRU ] +do + echo -n "." + sleep 1 +done +echo OK + +if [ ! -r $PRU ] ; then + echo PRU control files not found in $PRU >&2 + exit 1; +fi + From f97b529b130e2490833f3b0b4fc61121acc71a57 Mon Sep 17 00:00:00 2001 From: Alan Condit Date: Mon, 4 Mar 2019 10:58:22 -0800 Subject: [PATCH 429/516] Fix pin assignments in BeBoPr-Bridge.hal and lineardelta.hal. --- .../BeBoPr-Bridge/BeBoPr-Bridge.hal | 47 +++++++-------- .../BeagleBone/BeBoPr-Bridge/lineardelta.hal | 58 +++++++++---------- 2 files changed, 52 insertions(+), 53 deletions(-) diff --git a/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.hal b/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.hal index d3209c80f5..13564dbfe0 100755 --- a/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.hal +++ b/configs/ARM/BeagleBone/BeBoPr-Bridge/BeBoPr-Bridge.hal @@ -88,10 +88,10 @@ setp hpg.stepgen.00.maxvel [AXIS_0]STEPGEN_MAX_VEL setp hpg.stepgen.00.maxaccel [AXIS_0]STEPGEN_MAX_ACC #setp hpg.stepgen.00.step_type 0 -# P8.43 PRU1.out2 -setp hpg.stepgen.00.steppin 843 -# P8.44 PRU1.out4 -setp hpg.stepgen.00.dirpin 844 +# P8.12 PRU1.out2 +setp hpg.stepgen.00.steppin 812 +# P8.11 PRU1.out4 +setp hpg.stepgen.00.dirpin 811 # ################ @@ -127,10 +127,10 @@ setp hpg.stepgen.01.maxvel [AXIS_1]STEPGEN_MAX_VEL setp hpg.stepgen.01.maxaccel [AXIS_1]STEPGEN_MAX_ACC #setp hpg.stepgen.01.step_type 0 -# P8.42 PRU1.out5 -setp hpg.stepgen.01.steppin 842 -# P8.39 PRU1.out6 -setp hpg.stepgen.01.dirpin 839 +# P8.16 PRU1.out5 +setp hpg.stepgen.01.steppin 816 +# P8.15 PRU1.out6 +setp hpg.stepgen.01.dirpin 815 # ################ @@ -166,10 +166,10 @@ setp hpg.stepgen.02.maxvel [AXIS_2]STEPGEN_MAX_VEL setp hpg.stepgen.02.maxaccel [AXIS_2]STEPGEN_MAX_ACC #setp hpg.stepgen.02.step_type 0 -# P8.27 PRU1.out8 -setp hpg.stepgen.02.steppin 827 -# P8.29 PRU1.out9 -setp hpg.stepgen.02.dirpin 829 +# P9.15 PRU1.out8 +setp hpg.stepgen.02.steppin 915 +# P9.23 PRU1.out9 +setp hpg.stepgen.02.dirpin 923 # ################ @@ -205,10 +205,10 @@ setp hpg.stepgen.03.maxvel [AXIS_3]STEPGEN_MAX_VEL setp hpg.stepgen.03.maxaccel [AXIS_3]STEPGEN_MAX_ACC #setp hpg.stepgen.03.step_type 0 -# P8.30 GPIO2.25 -setp hpg.stepgen.03.steppin 830 -# P8.21 GPIO1.30 -setp hpg.stepgen.03.dirpin 821 +# P9.22 GPIO0.02 +setp hpg.stepgen.03.steppin 922 +# P9.21 GPIO0.03 +setp hpg.stepgen.03.dirpin 921 # ################################################## @@ -223,14 +223,15 @@ net tool-prep-loop iocontrol.0.tool-prepare => iocontrol.0.tool-prepared net tool-change-loop iocontrol.0.tool-change => iocontrol.0.tool-changed # Axis enable signals -net emcmot.00.enable => bb_gpio.p9.out-18 +#net emcmot.00.enable => bb_gpio.p9.out-18 +net emcmot.00.enable => bb_gpio.p9.out-18 bb_gpio.p9.out-17 bb_gpio.p9.out-26 bb_gpio.p9.out-24 setp bb_gpio.p9.out-18.invert 1 -net emcmot.01.enable => bb_gpio.p9.out-17 -setp bb_gpio.p9.out-17.invert 1 -net emcmot.02.enable => bb_gpio.p9.out-26 -setp bb_gpio.p9.out-26.invert 1 -net emcmot.03.enable => bb_gpio.p9.out-24 -setp bb_gpio.p9.out-24.invert 1 +#net emcmot.01.enable => bb_gpio.p9.out-17 +#setp bb_gpio.p9.out-17.invert 1 +#net emcmot.02.enable => bb_gpio.p9.out-26 +#setp bb_gpio.p9.out-26.invert 1 +#net emcmot.03.enable => bb_gpio.p9.out-24 +#setp bb_gpio.p9.out-24.invert 1 # Machine power (BeBoPr Enable) # Enable tied to system Reset_n line (P9.10) diff --git a/configs/ARM/BeagleBone/BeBoPr-Bridge/lineardelta.hal b/configs/ARM/BeagleBone/BeBoPr-Bridge/lineardelta.hal index c3326f119f..3be2dd4939 100644 --- a/configs/ARM/BeagleBone/BeBoPr-Bridge/lineardelta.hal +++ b/configs/ARM/BeagleBone/BeBoPr-Bridge/lineardelta.hal @@ -7,13 +7,14 @@ # ######################################## # Launch the setup script to make sure hardware setup looks good -loadusr -w ./setup.bridge.sh +#loadusr -w ./setup.bridge.sh +loadusr -w ./setup.sh +loadusr -w config-pin -f ./BeBoPr-Bridge.bbio # ################################### # Core EMC/HAL Loads # ################################### - # kinematics #loadrt trivkins loadrt lineardeltakins @@ -27,8 +28,7 @@ setp lineardeltakins.R [MACHINE]DELTA_R loadrt tp loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES tp=tp kins=lineardeltakins -# load low-level drivers -#loadrt hal_bb_gpio output_pins=107,126,217,218,224,226 input_pins=108,109,110,114,117,118 +# load low-level drivers (Must not include pins used in PRU) loadrt hal_bb_gpio output_pins=807,826,917,918,924,926 input_pins=808,809,810,814,817,818 loadrt [PRUCONF](DRIVER) prucode=$(HAL_RTMOD_DIR)/[PRUCONF](PRUBIN) [PRUCONF](CONFIG) loadrt pid count=2 @@ -68,12 +68,9 @@ addf sum2.1 servo-thread # ###################################################### # Axis-of-motion Specific Configs (not the GUI) # ###################################################### - - # ################ # X [0] Axis = column C # ################ - # axis enable chain newsig emcmot.00.enable bit sets emcmot.00.enable FALSE @@ -103,10 +100,10 @@ setp hpg.stepgen.00.maxvel [AXIS_0]STEPGEN_MAX_VEL setp hpg.stepgen.00.maxaccel [AXIS_0]STEPGEN_MAX_ACC #setp hpg.stepgen.00.step_type 0 -# P8.43 PRU1.out2 -setp hpg.stepgen.00.steppin 843 -# P8.44 PRU1.out4 -setp hpg.stepgen.00.dirpin 844 +# P8.12 PRU1.out2 +setp hpg.stepgen.00.steppin 812 +# P8.11 PRU1.out4 +setp hpg.stepgen.00.dirpin 811 # because column C is connected to the X-axis output # the bebopr-bridge signal needs to be X-max means P8.9 @@ -146,10 +143,10 @@ setp hpg.stepgen.01.maxvel [AXIS_1]STEPGEN_MAX_VEL setp hpg.stepgen.01.maxaccel [AXIS_1]STEPGEN_MAX_ACC #setp hpg.stepgen.01.step_type 0 -# P8.42 PRU1.out5 -setp hpg.stepgen.01.steppin 842 -# P8.39 PRU1.out6 -setp hpg.stepgen.01.dirpin 839 +# P8.16 PRU1.out5 +setp hpg.stepgen.01.steppin 816 +# P8.15 PRU1.out6 +setp hpg.stepgen.01.dirpin 815 # because column A is connected to the Y-axis output @@ -190,10 +187,10 @@ setp hpg.stepgen.02.maxvel [AXIS_2]STEPGEN_MAX_VEL setp hpg.stepgen.02.maxaccel [AXIS_2]STEPGEN_MAX_ACC #setp hpg.stepgen.02.step_type 0 -# P8.27 PRU1.out8 -setp hpg.stepgen.02.steppin 827 -# P8.29 PRU1.out9 -setp hpg.stepgen.02.dirpin 829 +# P9.15 PRU1.out8 +setp hpg.stepgen.02.steppin 915 +# P9.23 PRU1.out9 +setp hpg.stepgen.02.dirpin 923 # because column B is connected to the Z-axis output # the bebopr-bridge signal needs to be Z-max means P8.18 @@ -233,10 +230,10 @@ setp hpg.stepgen.03.maxvel [AXIS_3]STEPGEN_MAX_VEL setp hpg.stepgen.03.maxaccel [AXIS_3]STEPGEN_MAX_ACC #setp hpg.stepgen.03.step_type 0 -# P8.30 GPIO2.25 -setp hpg.stepgen.03.steppin 830 -# P8.21 GPIO1.30 -setp hpg.stepgen.03.dirpin 821 +# P9.22 GPIO0.02 +setp hpg.stepgen.03.steppin 922 +# P9.21 GPIO0.03 +setp hpg.stepgen.03.dirpin 921 # ################################################## @@ -251,14 +248,15 @@ net tool-prep-loop iocontrol.0.tool-prepare => iocontrol.0.tool-prepared net tool-change-loop iocontrol.0.tool-change => iocontrol.0.tool-changed # Axis enable signals -net emcmot.00.enable => bb_gpio.p9.out-18 +#net emcmot.00.enable => bb_gpio.p9.out-18 +net emcmot.00.enable => bb_gpio.p9.out-18 bb_gpio.p9.out-17 bb_gpio.p9.out-26 bb_gpio.p9.out-24 setp bb_gpio.p9.out-18.invert 1 -net emcmot.01.enable => bb_gpio.p9.out-17 -setp bb_gpio.p9.out-17.invert 1 -net emcmot.02.enable => bb_gpio.p9.out-26 -setp bb_gpio.p9.out-26.invert 1 -net emcmot.03.enable => bb_gpio.p9.out-24 -setp bb_gpio.p9.out-24.invert 1 +#net emcmot.01.enable => bb_gpio.p9.out-17 +#setp bb_gpio.p9.out-17.invert 1 +#net emcmot.02.enable => bb_gpio.p9.out-26 +#setp bb_gpio.p9.out-26.invert 1 +#net emcmot.03.enable => bb_gpio.p9.out-24 +#setp bb_gpio.p9.out-24.invert 1 # Machine power (BeBoPr Enable) # Enable tied to system Reset_n line (P9.10) From 730837ec4df79bbf0d31d10cf6d4c0c13407d284 Mon Sep 17 00:00:00 2001 From: Mick Date: Wed, 6 Mar 2019 10:16:02 +0000 Subject: [PATCH 430/516] Revert e207745 and b55b544 and remove -Werror CFLAG Commits attempt to remove warnings arising from data types having different sizes under 32 and 64 bit. However assigning void pointers instead of casting `long long uint` to void, to avoid a warning, resulted in non functioning rtapi_pci preventing hm2_pci from working. scripts/build_docker CFLAGS addition of -Werror removed for now. Signed-off-by: Mick --- scripts/build_docker | 5 +++-- src/machinetalk/support/unionread.c | 3 +-- src/rtapi/rtapi_pci.c | 9 ++++----- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/scripts/build_docker b/scripts/build_docker index b1df023240..eb6c9b669f 100755 --- a/scripts/build_docker +++ b/scripts/build_docker @@ -67,10 +67,11 @@ esac # Distro specific warnings level case ${TAG} in *_8|*_9) - WERROR_FLAG="-Werror" + WERROR_FLAG="" # Remove for now until possible to satisfy 32 and 64 bit + # with same data type and have rtapi_pci work ;; *) - WERROR_FLAG="" # Buster and above have many as yet unresolved warnings + WERROR_FLAG="" # Buster and above have many as yet unresolved warnings ;; esac diff --git a/src/machinetalk/support/unionread.c b/src/machinetalk/support/unionread.c index 20ce7d57eb..87b6be4761 100644 --- a/src/machinetalk/support/unionread.c +++ b/src/machinetalk/support/unionread.c @@ -58,8 +58,7 @@ bool print_container(pb_istream_t *stream) if (!pb_decode_varint(stream, &length)) { printf("Parsing field#2 failed: %s\n", PB_GET_ERROR(stream)); } - printf("submessage length=%"PRIu64"\n", length); - + printf("submessage length=%lu\n", length); printf("submessage: %s NML; %s Motion\n", is_NML_container(tag) ? "is" : "not", is_Motion_container(tag) ? "is" : "not"); diff --git a/src/rtapi/rtapi_pci.c b/src/rtapi/rtapi_pci.c index 0a1bf7f70a..6db2c521e5 100644 --- a/src/rtapi/rtapi_pci.c +++ b/src/rtapi/rtapi_pci.c @@ -653,8 +653,7 @@ int pci_enable_device(struct pci_dev *dev) FILE *stream; char path[256]; int i,r; - void *L1, *L2; - unsigned long L3; + unsigned long long L1, L2, L3; rtapi_print_msg(RTAPI_MSG_DBG, "RTAPI_PCI: Enabling Device %s\n", dev->dev_name); @@ -682,11 +681,11 @@ int pci_enable_device(struct pci_dev *dev) /* ...and read in the data */ for (i=0; i < 6; i++) { - r=fscanf(stream, "%p %p %lu", &L1, &L2, &L3); + r=fscanf(stream, "%Lx %Lx %Lx", &L1, &L2, &L3); if (r != 3) { - rtapi_print_msg(RTAPI_MSG_ERR,"Failed to parse \"%s\"\n", path); + rtapi_print_msg(RTAPI_MSG_ERR,"Failed to parse \"%s\"\n", path); fclose(stream); - return -1; + return -1; } dev->resource[i].start = (void*) L1; dev->resource[i].end = (void*) L2; From 504ab1f0afab80c565fdaeb30d9d9073587adde6 Mon Sep 17 00:00:00 2001 From: Mick Date: Thu, 28 Feb 2019 12:51:47 +0000 Subject: [PATCH 431/516] Add specific -lzmq to CFLAGS to prevent DSO errors in later distros. These errors occur with later compilers where despite linkage to a lib, it is not sequenced to the liking of the compiler and throws unknown symbol errors. Has been fixed for comp too in upcoming commit which is part of the single-module-dir work, but this will get the packages to build on later compilers. Signed-off-by: Mick --- src/machinetalk/haltalk/Submakefile | 2 +- src/rtapi/Submakefile | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/machinetalk/haltalk/Submakefile b/src/machinetalk/haltalk/Submakefile index 4b351818d5..2df9949284 100644 --- a/src/machinetalk/haltalk/Submakefile +++ b/src/machinetalk/haltalk/Submakefile @@ -20,7 +20,7 @@ HALTALK_LDFLAGS := \ $(CZMQ_LIBS) \ $(JANSSON_LIBS) \ $(AVAHI_LIBS) \ - -lstdc++ -lm + -lstdc++ -lm -lzmq $(call TOOBJSDEPS, $(HALTALK_SRCS)) : EXTRAFLAGS += $(HALTALK_CXXFLAGS) diff --git a/src/rtapi/Submakefile b/src/rtapi/Submakefile index 4dba648148..0e467337a7 100644 --- a/src/rtapi/Submakefile +++ b/src/rtapi/Submakefile @@ -375,10 +375,10 @@ $(call TOOBJSDEPS, $(RTAPI_MSGD_SRCS)): \ ../lib/liblinuxcncshm.so \ ../lib/liblinuxcncini.so \ ../lib/libmtalk.so.0 \ - ../lib/libmachinetalk-pb2++.so + ../lib/libmachinetalk-pb2++.so $(ECHO) Linking $(notdir $@) @mkdir -p $(dir $@) - $(Q)$(CC) $(LDFLAGS) -o $@ $^ $(RTAPI_MSGD_LDFLAGS) -lrt + $(Q)$(CC) $(LDFLAGS) -o $@ $^ $(RTAPI_MSGD_LDFLAGS) -lrt -lzmq USERSRCS += $(RTAPI_MSGD_SRCS) TARGETS += ../libexec/rtapi_msgd From 116d5b69fcb3dd290cee14539fc0df26af2a9e82 Mon Sep 17 00:00:00 2001 From: John Morris Date: Sat, 9 Mar 2019 16:33:03 +0800 Subject: [PATCH 432/516] Revert "Revert e207745 and b55b544 and remove -Werror CFLAG" Reverting temporary fix to prepare for proper fix. This reverts commit 730837ec4df79bbf0d31d10cf6d4c0c13407d284. --- scripts/build_docker | 3 +-- src/machinetalk/support/unionread.c | 3 ++- src/rtapi/rtapi_pci.c | 5 +++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/scripts/build_docker b/scripts/build_docker index eb6c9b669f..6c67bdea8c 100755 --- a/scripts/build_docker +++ b/scripts/build_docker @@ -67,8 +67,7 @@ esac # Distro specific warnings level case ${TAG} in *_8|*_9) - WERROR_FLAG="" # Remove for now until possible to satisfy 32 and 64 bit - # with same data type and have rtapi_pci work + WERROR_FLAG="-Werror" ;; *) WERROR_FLAG="" # Buster and above have many as yet unresolved warnings diff --git a/src/machinetalk/support/unionread.c b/src/machinetalk/support/unionread.c index 87b6be4761..20ce7d57eb 100644 --- a/src/machinetalk/support/unionread.c +++ b/src/machinetalk/support/unionread.c @@ -58,7 +58,8 @@ bool print_container(pb_istream_t *stream) if (!pb_decode_varint(stream, &length)) { printf("Parsing field#2 failed: %s\n", PB_GET_ERROR(stream)); } - printf("submessage length=%lu\n", length); + printf("submessage length=%"PRIu64"\n", length); + printf("submessage: %s NML; %s Motion\n", is_NML_container(tag) ? "is" : "not", is_Motion_container(tag) ? "is" : "not"); diff --git a/src/rtapi/rtapi_pci.c b/src/rtapi/rtapi_pci.c index 6db2c521e5..a39263e7b7 100644 --- a/src/rtapi/rtapi_pci.c +++ b/src/rtapi/rtapi_pci.c @@ -653,7 +653,8 @@ int pci_enable_device(struct pci_dev *dev) FILE *stream; char path[256]; int i,r; - unsigned long long L1, L2, L3; + void *L1, *L2; + unsigned long L3; rtapi_print_msg(RTAPI_MSG_DBG, "RTAPI_PCI: Enabling Device %s\n", dev->dev_name); @@ -681,7 +682,7 @@ int pci_enable_device(struct pci_dev *dev) /* ...and read in the data */ for (i=0; i < 6; i++) { - r=fscanf(stream, "%Lx %Lx %Lx", &L1, &L2, &L3); + r=fscanf(stream, "%p %p %lu", &L1, &L2, &L3); if (r != 3) { rtapi_print_msg(RTAPI_MSG_ERR,"Failed to parse \"%s\"\n", path); fclose(stream); From 4cd2e9d5e5dcbd00dd08c86c53a24c19fde77c4f Mon Sep 17 00:00:00 2001 From: John Morris Date: Sat, 9 Mar 2019 16:38:27 +0800 Subject: [PATCH 433/516] rtapi/rtapi_pci.c: Fix PCI resource file parsing Fixes a problem introduced in commit e207745f. Thanks to Dennis for reporting the problem and locating the problematic commit on the ML [1]. [1]: https://groups.google.com/d/msg/machinekit/KQFyNEsnblE/gX_-g36tCQAJ --- src/rtapi/rtapi_pci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rtapi/rtapi_pci.c b/src/rtapi/rtapi_pci.c index a39263e7b7..00b8979d75 100644 --- a/src/rtapi/rtapi_pci.c +++ b/src/rtapi/rtapi_pci.c @@ -682,7 +682,7 @@ int pci_enable_device(struct pci_dev *dev) /* ...and read in the data */ for (i=0; i < 6; i++) { - r=fscanf(stream, "%p %p %lu", &L1, &L2, &L3); + r=fscanf(stream, "%p %p %lx", &L1, &L2, &L3); if (r != 3) { rtapi_print_msg(RTAPI_MSG_ERR,"Failed to parse \"%s\"\n", path); fclose(stream); From 62f53dd7b67bb05f02c0f059df33beb468d13b97 Mon Sep 17 00:00:00 2001 From: John Morris Date: Sun, 10 Mar 2019 14:14:49 +0800 Subject: [PATCH 434/516] rtapi/rtapi_pci.c: Remove unnecessary type casting --- src/rtapi/rtapi_pci.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/rtapi/rtapi_pci.c b/src/rtapi/rtapi_pci.c index 00b8979d75..d0f0479e8a 100644 --- a/src/rtapi/rtapi_pci.c +++ b/src/rtapi/rtapi_pci.c @@ -653,8 +653,6 @@ int pci_enable_device(struct pci_dev *dev) FILE *stream; char path[256]; int i,r; - void *L1, *L2; - unsigned long L3; rtapi_print_msg(RTAPI_MSG_DBG, "RTAPI_PCI: Enabling Device %s\n", dev->dev_name); @@ -682,15 +680,15 @@ int pci_enable_device(struct pci_dev *dev) /* ...and read in the data */ for (i=0; i < 6; i++) { - r=fscanf(stream, "%p %p %lx", &L1, &L2, &L3); + r=fscanf(stream, "%p %p %lx", + &dev->resource[i].start, + &dev->resource[i].end, + &dev->resource[i].flags); if (r != 3) { rtapi_print_msg(RTAPI_MSG_ERR,"Failed to parse \"%s\"\n", path); fclose(stream); return -1; } - dev->resource[i].start = (void*) L1; - dev->resource[i].end = (void*) L2; - dev->resource[i].flags = (unsigned long) L3; rtapi_print_msg(RTAPI_MSG_DBG,"Resource %d: %p %p %08lx\n", i, dev->resource[i].start, From 4742e4bd4a8acc2ebe063c703816437c3202f96c Mon Sep 17 00:00:00 2001 From: Mick Date: Thu, 6 Sep 2018 17:19:59 +0100 Subject: [PATCH 435/516] Fix up debian scripts and drop kthreads from Makefile install Signed-off-by: Mick --- debian/machinekit-posix.install.in | 2 +- debian/machinekit-rt-preempt.install.in | 2 +- debian/machinekit-xenomai.install.in | 2 +- ...ix-postinst.add => posix-postinst-arm.add} | 3 ++ debian/posix-postinst-pc.add | 2 ++ ...stinst.add => rt-preempt-postinst-arm.add} | 5 +++- debian/rt-preempt-postinst-pc.add | 3 ++ debian/rules.in | 17 +++++++---- ...-postinst.add => xenomai-postinst-arm.add} | 3 ++ debian/xenomai-postinst-pc.add | 3 ++ src/Makefile | 30 +++++++++---------- 11 files changed, 48 insertions(+), 24 deletions(-) rename debian/{posix-postinst.add => posix-postinst-arm.add} (83%) create mode 100644 debian/posix-postinst-pc.add rename debian/{rt-preempt-postinst.add => rt-preempt-postinst-arm.add} (76%) create mode 100644 debian/rt-preempt-postinst-pc.add rename debian/{xenomai-postinst.add => xenomai-postinst-arm.add} (83%) create mode 100644 debian/xenomai-postinst-pc.add diff --git a/debian/machinekit-posix.install.in b/debian/machinekit-posix.install.in index ec94d9aa2c..c6a86cc298 100644 --- a/debian/machinekit-posix.install.in +++ b/debian/machinekit-posix.install.in @@ -1,4 +1,4 @@ -usr/lib/linuxcnc/posix/*.so +#usr/lib/linuxcnc/posix usr/lib/linuxcnc/ulapi-posix.so usr/libexec/linuxcnc/rtapi_app_posix usr/include/linuxcnc/*.hh diff --git a/debian/machinekit-rt-preempt.install.in b/debian/machinekit-rt-preempt.install.in index 233376029f..d8e0a70bfc 100644 --- a/debian/machinekit-rt-preempt.install.in +++ b/debian/machinekit-rt-preempt.install.in @@ -1,4 +1,4 @@ -usr/lib/linuxcnc/rt-preempt/*.so +#usr/lib/linuxcnc/rt-preempt usr/lib/linuxcnc/ulapi-rt-preempt.so usr/libexec/linuxcnc/rtapi_app_rt-preempt usr/include/linuxcnc/*.hh diff --git a/debian/machinekit-xenomai.install.in b/debian/machinekit-xenomai.install.in index fd029e8185..0864d95324 100644 --- a/debian/machinekit-xenomai.install.in +++ b/debian/machinekit-xenomai.install.in @@ -1,4 +1,4 @@ -usr/lib/linuxcnc/xenomai/* +#usr/lib/linuxcnc/xenomai usr/lib/linuxcnc/ulapi-xenomai.so usr/libexec/linuxcnc/rtapi_app_xenomai usr/include/linuxcnc/*.hh diff --git a/debian/posix-postinst.add b/debian/posix-postinst-arm.add similarity index 83% rename from debian/posix-postinst.add rename to debian/posix-postinst-arm.add index 7fdefcbc73..2e11aaa3e8 100644 --- a/debian/posix-postinst.add +++ b/debian/posix-postinst-arm.add @@ -1,6 +1,9 @@ +# make symlinks to flavours +ln -sf /usr/lib/linuxcnc/modules /usr/lib/linuxcnc/posix # ensure the links do not pre-exist, from previous installs. # or user work-arounds, which will produce error messages +# all now point to /usr/lib/linuxcnc/modules anyway rm -f /usr/lib/linuxcnc/posix/pru_generic.bin rm -f /usr/lib/linuxcnc/posix/pru_generic.dbg rm -f /usr/lib/linuxcnc/posix/pru_decamux.bin diff --git a/debian/posix-postinst-pc.add b/debian/posix-postinst-pc.add new file mode 100644 index 0000000000..8817c067c6 --- /dev/null +++ b/debian/posix-postinst-pc.add @@ -0,0 +1,2 @@ + +ln -sf /usr/lib/linuxcnc/modules /usr/lib/linuxcnc/posix diff --git a/debian/rt-preempt-postinst.add b/debian/rt-preempt-postinst-arm.add similarity index 76% rename from debian/rt-preempt-postinst.add rename to debian/rt-preempt-postinst-arm.add index 9eec2b68c2..04d3c9b693 100644 --- a/debian/rt-preempt-postinst.add +++ b/debian/rt-preempt-postinst-arm.add @@ -1,6 +1,9 @@ +# make symlinks to flavours +ln -sf /usr/lib/linuxcnc/modules /usr/lib/linuxcnc/rt-preempt -# ensure the links do not pre-exist, from previous installs +# ensure the links do not pre-exist, from previous installs. # or user work-arounds, which will produce error messages +# all now point to /usr/lib/linuxcnc/modules anyway rm -f /usr/lib/linuxcnc/rt-preempt/pru_generic.bin rm -f /usr/lib/linuxcnc/rt-preempt/pru_generic.dbg rm -f /usr/lib/linuxcnc/rt-preempt/pru_decamux.bin diff --git a/debian/rt-preempt-postinst-pc.add b/debian/rt-preempt-postinst-pc.add new file mode 100644 index 0000000000..a16ca11f09 --- /dev/null +++ b/debian/rt-preempt-postinst-pc.add @@ -0,0 +1,3 @@ + +ln -sf /usr/lib/linuxcnc/modules /usr/lib/linuxcnc/rt-preempt + diff --git a/debian/rules.in b/debian/rules.in index 410346234b..f57ba4b32a 100755 --- a/debian/rules.in +++ b/debian/rules.in @@ -161,7 +161,11 @@ install: build mkdir -p debian/tmp (cd debian/extras && cp -a * ../tmp) (cd src; export DESTDIR=`pwd`/../debian/tmp; $(MAKE) V=$(DH_VERBOSE) $@) - mkdir -p debian/tmp/usr/lib debian/tmp/usr/include/linuxcnc + mkdir -p debian/tmp/usr/lib/linuxcnc/modules debian/tmp/usr/include/linuxcnc + ## temp symlinks until all paths resolved +# ln -sf debian/tmp/usr/lib/linuxcnc/modules debian/tmp/usr/lib/linuxcnc/posix +# ln -sf debian/tmp/usr/lib/linuxcnc/modules debian/tmp/usr/lib/linuxcnc/rt-preempt +# ln -sf debian/tmp/usr/lib/linuxcnc/modules debian/tmp/usr/lib/linuxcnc/xenomai cp lib/*.a debian/tmp/usr/lib ## if they weren't there we don't care if rm fails rm -f debian/tmp/usr/share/applications/linuxcnc-usermanual*.desktop @@ -194,15 +198,18 @@ endif echo "usr/include/linuxcnc/userpci/*.h" >> debian/machinekit-xenomai.install; \ fi - ## only want this for armhf builds ## + ## only want prubin for armhf builds ## if [ -f debian/platform_pc ] ; then \ + cat debian/posix-postinst-pc.add >> debian/machinekit-posix.postinst; \ + cat debian/rt-preempt-postinst-pc.add >> debian/machinekit-rt-preempt.postinst; \ + cat debian/xenomai-postinst-pc.add >> debian/machinekit-xenomai.postinst; \ rm -f debian/platform_pc; \ else \ mkdir -p debian/tmp/usr/lib/linuxcnc/prubin; \ cp rtlib/prubin/* debian/tmp/usr/lib/linuxcnc/prubin; \ - cat debian/posix-postinst.add >> debian/machinekit-posix.postinst; \ - cat debian/rt-preempt-postinst.add >> debian/machinekit-rt-preempt.postinst; \ - cat debian/xenomai-postinst.add >> debian/machinekit-xenomai.postinst; \ + cat debian/posix-postinst-arm.add >> debian/machinekit-posix.postinst; \ + cat debian/rt-preempt-postinst-arm.add >> debian/machinekit-rt-preempt.postinst; \ + cat debian/xenomai-postinst-arm.add >> debian/machinekit-xenomai.postinst; \ echo "usr/lib/linuxcnc/prubin/*" >> debian/machinekit-posix.install; \ echo "usr/lib/linuxcnc/prubin/*" >> debian/machinekit-rt-preempt.install; \ echo "usr/lib/linuxcnc/prubin/*" >> debian/machinekit-xenomai.install; \ diff --git a/debian/xenomai-postinst.add b/debian/xenomai-postinst-arm.add similarity index 83% rename from debian/xenomai-postinst.add rename to debian/xenomai-postinst-arm.add index d895fb1e2c..d7fb072234 100644 --- a/debian/xenomai-postinst.add +++ b/debian/xenomai-postinst-arm.add @@ -1,6 +1,9 @@ +# make symlinks to flavours +ln -sf /usr/lib/linuxcnc/modules /usr/lib/linuxcnc/xenomai # ensure the links do not pre-exist, from previous installs. # or user work-arounds, which will produce error messages +# all now point to /usr/lib/linuxcnc/modules anyway rm -f /usr/lib/linuxcnc/xenomai/pru_generic.bin rm -f /usr/lib/linuxcnc/xenomai/pru_generic.dbg rm -f /usr/lib/linuxcnc/xenomai/pru_decamux.bin diff --git a/debian/xenomai-postinst-pc.add b/debian/xenomai-postinst-pc.add new file mode 100644 index 0000000000..16fcd2ab34 --- /dev/null +++ b/debian/xenomai-postinst-pc.add @@ -0,0 +1,3 @@ + +ln -sf /usr/lib/linuxcnc/modules /usr/lib/linuxcnc/xenomai + diff --git a/src/Makefile b/src/Makefile index be0b34fcbf..c8f7c06e96 100755 --- a/src/Makefile +++ b/src/Makefile @@ -1081,25 +1081,25 @@ endif $(FILE) ../etc/linuxcnc/rtapi.ini $(DESTDIR)$(sysconfdir)/linuxcnc # RTAPI modules: install userland flavor .so modules into - # e.g. /usr/lib/linuxcnc/modules and kthread flavor .ko - # modules for each kver into e.g. /lib/modules//linuxcnc + # e.g. /usr/lib/linuxcnc/modules + + NO_OF_FLAVOURS := $(words $(BUILD_THREAD_FLAVORS)) + counter=0 + echo "$(NO_OF_FLAVOURS)" + for flavor in $(BUILD_THREAD_FLAVORS); do \ if test $${flavor%-kernel} = $${flavor}; then \ - echo Installing modules for userland flavor $$flavor; \ - $(DIR) $(DESTDIR)$(EMC2_RTLIB_BASE_DIR)/$$flavor; \ - $(FILE) ../rtlib/$$flavor/* \ - $(DESTDIR)$(EMC2_RTLIB_BASE_DIR)/$$flavor; \ - else \ - echo Installing modules for kthreads flavor $$flavor; \ - for srcdir in ../rtlib/$$flavor/*; do \ - kver=`basename $$srcdir`; \ - echo Installing modules for flavor $$flavor, kver $$kver; \ - $(DIR) $(DESTDIR)/lib/modules/$$kver/linuxcnc; \ - $(FILE) $$srcdir/* $(DESTDIR)/lib/modules/$$kver/linuxcnc; \ - done; \ + if test $${counter} = 0; then \ + echo Installing modules for userland flavor $$flavor; \ + $(DIR) $(DESTDIR)$(EMC2_RTLIB_BASE_DIR)/$$flavor; \ + $(FILE) ../rtlib/$$flavor/* \ + $(DESTDIR)$(EMC2_RTLIB_BASE_DIR)/$$flavor; \ + $(eval counter=$(shell echo $$(($(counter)+1)))) \ + fi; \ fi; \ done -endif # RUN_IN_PLACE + +endif # ! RUN_IN_PLACE CONF=../configs COMMON=$(CONF)/common From 395e130314ead7207160552692d0f6f6332b3767 Mon Sep 17 00:00:00 2001 From: Mick Date: Wed, 12 Dec 2018 12:33:32 +0000 Subject: [PATCH 436/516] Modify module paths and various other Makefile changes Signed-off-by: Mick --- debian/machinekit.install.in | 1 + rtlib/modules/README | 2 ++ src/Makefile | 33 +++++++++++++++---------------- src/Makefile.inc.in | 2 +- src/hal/simdrivers/Submakefile | 2 +- src/hal/utils/halcmd_completion.c | 3 ++- src/rtapi/Submakefile | 5 ++++- 7 files changed, 27 insertions(+), 21 deletions(-) create mode 100644 rtlib/modules/README diff --git a/debian/machinekit.install.in b/debian/machinekit.install.in index 149f7a69f7..63d6f59237 100644 --- a/debian/machinekit.install.in +++ b/debian/machinekit.install.in @@ -4,6 +4,7 @@ etc/security/limits.d/machinekit.conf etc/udev/rules.d/50-shmdrv.rules etc/X11/app-defaults/* usr/lib/*.so.* +usr/lib/linuxcnc/modules/*.so usr/lib/tcltk/linuxcnc usr/bin/* usr/lib/python*/*/*.py diff --git a/rtlib/modules/README b/rtlib/modules/README new file mode 100644 index 0000000000..b483f1f763 --- /dev/null +++ b/rtlib/modules/README @@ -0,0 +1,2 @@ +This is the default destination dir for all modules. +The symlinks are for backwards compatibility. diff --git a/src/Makefile b/src/Makefile index c8f7c06e96..e70f66d701 100755 --- a/src/Makefile +++ b/src/Makefile @@ -121,11 +121,14 @@ ifeq ($(BUILD_ALL_FLAVORS),yes) # # Following tradition, this incarnation of the modules recipe is # placed far away from all others. +################################################################################# -modules: userspace +modules: userspace + NO_OF_FLAVOURS=$(words $(BUILD_THREAD_FLAVORS)) + counter=0 for f in $(BUILD_THREAD_FLAVORS); do \ $(MAKE) modules threads=$$f; \ - done; \ + done; ifeq ($(RUN_IN_PLACE)+$(BUILD_DRIVERS),yes+yes) for f in $(BUILD_THREAD_FLAVORS); do \ @@ -133,11 +136,12 @@ ifeq ($(RUN_IN_PLACE)+$(BUILD_DRIVERS),yes+yes) \( 0`stat -c %u ../libexec/rtapi_app_$$f 2>/dev/null` \ -ne 0 -o ! -u ../libexec/rtapi_app_$$f \) \ && need_setuid=1; \ - ln -sf $(EMC2_HOME)/rtlib/prubin/pru_generic.bin ../rtlib/$$f/pru_generic.bin; \ - ln -sf $(EMC2_HOME)/rtlib/prubin/pru_generic.dbg ../rtlib/$$f/pru_generic.dbg; \ - ln -sf $(EMC2_HOME)/rtlib/prubin/pru_decamux.bin ../rtlib/$$f/pru_decamux.bin; \ - ln -sf $(EMC2_HOME)/rtlib/prubin/pru_decamux.dbg ../rtlib/$$f/pru_decamux.dbg; \ - done; \ + ln -sf $(EMC2_HOME)/rtlib/prubin/pru_generic.bin ../rtlib/modules/pru_generic.bin; \ + ln -sf $(EMC2_HOME)/rtlib/prubin/pru_generic.dbg ../rtlib/modules/pru_generic.dbg; \ + ln -sf $(EMC2_HOME)/rtlib/prubin/pru_decamux.bin ../rtlib/modules/pru_decamux.bin; \ + ln -sf $(EMC2_HOME)/rtlib/prubin/pru_decamux.dbg ../rtlib/modules/pru_decamux.dbg; \ + done; + test "$$need_setuid" = 1 && \ $(VECHO) -n "You now need to run 'sudo make setuid' " && \ $(VECHO) "in order to run in place." || true @@ -1083,19 +1087,14 @@ endif # RTAPI modules: install userland flavor .so modules into # e.g. /usr/lib/linuxcnc/modules - NO_OF_FLAVOURS := $(words $(BUILD_THREAD_FLAVORS)) - counter=0 - echo "$(NO_OF_FLAVOURS)" + ##TODO: change $$flavor to modules for install for flavor in $(BUILD_THREAD_FLAVORS); do \ if test $${flavor%-kernel} = $${flavor}; then \ - if test $${counter} = 0; then \ - echo Installing modules for userland flavor $$flavor; \ - $(DIR) $(DESTDIR)$(EMC2_RTLIB_BASE_DIR)/$$flavor; \ - $(FILE) ../rtlib/$$flavor/* \ - $(DESTDIR)$(EMC2_RTLIB_BASE_DIR)/$$flavor; \ - $(eval counter=$(shell echo $$(($(counter)+1)))) \ - fi; \ + echo Installing modules for userland flavor $$flavor; \ + $(DIR) $(DESTDIR)$(EMC2_RTLIB_BASE_DIR)/$$flavor; \ + $(FILE) ../rtlib/$$flavor/* \ + $(DESTDIR)$(EMC2_RTLIB_BASE_DIR)/$$flavor; \ fi; \ done diff --git a/src/Makefile.inc.in b/src/Makefile.inc.in index 975ad78e57..9801e97ba9 100644 --- a/src/Makefile.inc.in +++ b/src/Makefile.inc.in @@ -53,7 +53,7 @@ exec_prefix=@exec_prefix@ EMC2_HOME=@EMC2_HOME@ LIB_DIR=@EMC2_HOME@/lib -RTDIR_EXT=$(threads) +RTDIR_EXT=modules #used for install stuff #but have them here as reference diff --git a/src/hal/simdrivers/Submakefile b/src/hal/simdrivers/Submakefile index ea26311fc6..d0e20a5ed6 100644 --- a/src/hal/simdrivers/Submakefile +++ b/src/hal/simdrivers/Submakefile @@ -14,7 +14,7 @@ $(call TOOBJSDEPS, $(UPARPORT_SRCS)) : EXTRAFLAGS=-fPIC $(UPARPORT_FLAGS) ../rtlib/hal_parport.so: $(call TOOBJS, $(UPARPORT_SRCS)) $(UPARPORT_LIBS) $(ECHO) Linking $(notdir $@) - mkdir -p ../rtlib + mkdir -p ../rtlib/modules @rm -f $@ $(CC) -g $(LDFLAGS) -Wl,-soname,$(notdir $@) \ -shared -o $@ $^ $(UPARPORT_LIBS) diff --git a/src/hal/utils/halcmd_completion.c b/src/hal/utils/halcmd_completion.c index 5640c6b8a8..2dca16bdfc 100644 --- a/src/hal/utils/halcmd_completion.c +++ b/src/hal/utils/halcmd_completion.c @@ -572,7 +572,8 @@ static char *loadrt_generator(const char *text, int state) { return NULL; strcat(rtlibdir,"/"); - strcat(rtlibdir, current_flavor->name); + //strcat(rtlibdir, current_flavor->name); + strcat(rtlibdir, "modules"); strcat(rtlibdir,"/"); if(!state) { diff --git a/src/rtapi/Submakefile b/src/rtapi/Submakefile index 0e467337a7..c0ade4fdcd 100644 --- a/src/rtapi/Submakefile +++ b/src/rtapi/Submakefile @@ -89,7 +89,10 @@ ULAPISO := ../rtlib/ulapi-$(threads).so $(ULAPISO): ../lib/liblinuxcnchal.so ../lib/liblinuxcncshm.so \ $(call TOOBJS, $(ULAPI_SRCS)) $(ECHO) Creating shared object $(notdir $@) - @mkdir -p ../rtlib + @mkdir -p ../rtlib/modules; \ + ln -sf ../rtlib/modules ../rtlib/posix; \ + ln -sf ../rtlib/modules ../rtlib/rt-preempt; \ + ln -sf ../rtlib/modules ../rtlib/xenomai; @rm -f $@ $(Q)$(CC) $(LDFLAGS) -Wl,-soname,$(notdir $@) -shared \ -o $@ $^ $(ULAPISO_LIBS) $(RT_LDFLAGS) \ From 98348946fc83ab2ad1a1c3fa9d99d09d0658ccca Mon Sep 17 00:00:00 2001 From: Mick Date: Thu, 13 Dec 2018 13:45:30 +0000 Subject: [PATCH 437/516] Remove rtai and xenomai_threads refs Signed-off-by: Mick --- rtlib/modules/README | 2 - src/configure.ac | 438 ++++++++++++++++---------------- src/hal/utils/halcmd_commands.c | 2 +- src/rtapi/rtapi_compat.c | 12 +- src/rtapi/rtapi_exception.c | 2 +- src/rtapi/rtapi_msgd.cc | 4 + 6 files changed, 233 insertions(+), 227 deletions(-) delete mode 100644 rtlib/modules/README diff --git a/rtlib/modules/README b/rtlib/modules/README deleted file mode 100644 index b483f1f763..0000000000 --- a/rtlib/modules/README +++ /dev/null @@ -1,2 +0,0 @@ -This is the default destination dir for all modules. -The symlinks are for backwards compatibility. diff --git a/src/configure.ac b/src/configure.ac index 104f2e6072..7e8e277eb6 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -158,12 +158,12 @@ dnl #--------------------------------------------------------# AC_DEFUN([_cfg_flavor_params], [[[posix],[0],[user-dso],[rt-preempt],[.so],[.so],[0]], [[rt-preempt],[1],[user-dso],[rt-preempt],[.so],[.so],[0]], - [[xenomai],[2],[user-dso],[xenomai],[.so],[.so],[FLAVOR_DOES_IO]], - [[xenomai-kernel],[3],[kbuild],[xenomai-kernel],[.ko],[.so],dnl -[FLAVOR_DOES_IO|FLAVOR_KERNEL_BUILD],[rtapi_math]], - [[rtai-kernel],[4],[kbuild],[rtai-kernel],[.ko],[.so],dnl -[FLAVOR_DOES_IO|FLAVOR_KERNEL_BUILD],dnl -[rtai_hal rtai_sched rtapi_math]]]) + [[xenomai],[2],[user-dso],[xenomai],[.so],[.so],[FLAVOR_DOES_IO]]]) +# [[xenomai-kernel],[3],[kbuild],[xenomai-kernel],[.ko],[.so],dnl +#[FLAVOR_DOES_IO|FLAVOR_KERNEL_BUILD],[rtapi_math]], +# [[rtai-kernel],[4],[kbuild],[rtai-kernel],[.ko],[.so],dnl +#[FLAVOR_DOES_IO|FLAVOR_KERNEL_BUILD],dnl +#[rtai_hal rtai_sched rtapi_math]]]) dnl #--------------------------------------------------------# @@ -1175,37 +1175,38 @@ check_xenomai_kernel_source() { } -check_rtai_kernel_source() { - # check if kernel source is an rtai kernel source - # assume check_source_configured() already done - - local ksrc_dir=${1} - if test -z "$ksrc_dir"; then - AC_MSG_ERROR([check_rtai_kernel_source() given empty ksrc_dir]) - fi - - # look for rt_daemonize (older RTAI) or rtai_irq_handler (at least - # RTAI 4.0) or rtai_syscall_hook (RTAI 4.1) function definition - AC_MSG_CHECKING(if $ksrc_dir is an RTAI kernel) - if test -f "$ksrc_dir/Module.symvers" && \ - grep -q '\(rt_daemonize\|rtai_irq_handler\|rtai_syscall_hook\)' \ - "$ksrc_dir/Module.symvers"; then - AC_MSG_RESULT([yes]) - return 0 - else - AC_MSG_RESULT([no]) - return 1 - fi - -} +#check_rtai_kernel_source() { +# # check if kernel source is an rtai kernel source +# # assume check_source_configured() already done +# +# local ksrc_dir=${1} +# if test -z "$ksrc_dir"; then +# AC_MSG_ERROR([check_rtai_kernel_source() given empty ksrc_dir]) +# fi +# +# +# # look for rt_daemonize (older RTAI) or rtai_irq_handler (at least +# # RTAI 4.0) or rtai_syscall_hook (RTAI 4.1) function definition +# AC_MSG_CHECKING(if $ksrc_dir is an RTAI kernel) +# if test -f "$ksrc_dir/Module.symvers" && \ +# grep -q '\(rt_daemonize\|rtai_irq_handler\|rtai_syscall_hook\)' \ +# "$ksrc_dir/Module.symvers"; then +# AC_MSG_RESULT([yes]) +# return 0 +# else +# AC_MSG_RESULT([no]) +# return 1 +# fi +# +#} # xenomai kernel modules will be built for these kernels if # xenomai-kernel threads are enabled -xenomai_kernels='' +#xenomai_kernels='' # RTAI kernel modules will be built for these kernels if # rtai-kernel threads are enabled -rtai_kernels='' +#rtai_kernels='' # shmdrv kernel modules will be built for these kernels if # shmdrv and at least one userspace threads are enabled shmdrv_kernels='' @@ -1253,30 +1254,31 @@ AC_ARG_WITH(xenomai-kernel-sources, # check any RTAI sources specified on command line now # if any found, only build RTAI modules for these kernels -AC_ARG_WITH(rtai-kernel-sources, - [AS_HELP_STRING([--with-rtai-kernel-sources=" ..."], - [directory paths of RTAI kernel source(s), space-separated])], - [# check directories now - if test $with_rtai_kernel_sources = no; then - # ignore this - with_rtai_kernel_sources='' - else - for ksrc_dir in $with_rtai_kernel_sources; do - ksrc_dir=$(readlink -f $ksrc_dir) - # add only configured, confirmed RTAI sources - if check_kernel_source_configured $ksrc_dir && \ - check_rtai_kernel_source $ksrc_dir; then - shmdrv_kernels="$shmdrv_kernels $ksrc_dir" - rtai_kernels="$rtai_kernels $ksrc_dir" - # note this one's been seen - kernel_seen $ksrc_dir - else - AC_MSG_ERROR([invalid RTAI kernel source: $ksrc_dir]) - fi - done - fi - ], - [with_rtai_kernel_sources='']) +#AC_ARG_WITH(rtai-kernel-sources, +# [AS_HELP_STRING([--with-rtai-kernel-sources=" ..."], +# [directory paths of RTAI kernel source(s), space-separated])], +# [# check directories now +# if test $with_rtai_kernel_sources = no; then +# # ignore this +# with_rtai_kernel_sources='' +# else +# for ksrc_dir in $with_rtai_kernel_sources; do +# ksrc_dir=$(readlink -f $ksrc_dir) +# # add only configured, confirmed RTAI sources +# if check_kernel_source_configured $ksrc_dir && \ +# check_rtai_kernel_source $ksrc_dir; then +# shmdrv_kernels="$shmdrv_kernels $ksrc_dir" +# rtai_kernels="$rtai_kernels $ksrc_dir" +# # note this one's been seen +# kernel_seen $ksrc_dir +# else +# AC_MSG_ERROR([invalid RTAI kernel source: $ksrc_dir]) +# fi +# done +# fi +# ], +# [with_rtai_kernel_sources='']) +# # check any shmdrv sources specified on command line now # if any found, build shmdrv modules for these kernels @@ -1340,9 +1342,9 @@ find_kernels() { xenomai_kernels="$xenomai_kernels $location" # if --with-rtai-kernel-sources not explicitly on cmdline and # RTAI kernel detected, add it - test -z "$with_rtai_kernel_sources" && \ - check_rtai_kernel_source $location && \ - rtai_kernels="$rtai_kernels $location" + #test -z "$with_rtai_kernel_sources" && \ + # check_rtai_kernel_source $location && \ + # rtai_kernels="$rtai_kernels $location" done } @@ -1385,40 +1387,40 @@ AC_ARG_WITH(xenomai, test $withval = yes && all_flavors_default=no], [with_xenomai=check]) -AC_ARG_WITH(xenomai-kernel, - [AS_HELP_STRING([--with-xenomai-kernel], - [build Xenomai kernel-space realtime threads (deprecated)])], - [xenomai_kernel_from_cmdline=$withval - test $withval = yes && all_flavors_default=no], - [with_xenomai_kernel=check]) +#AC_ARG_WITH(xenomai-kernel, +# [AS_HELP_STRING([--with-xenomai-kernel], +# [build Xenomai kernel-space realtime threads (deprecated)])], +# [xenomai_kernel_from_cmdline=$withval +# test $withval = yes && all_flavors_default=no], +# [with_xenomai_kernel=check]) # XENOMAI_THREADS_RTS: locate the 'xeno-config' executable -AC_ARG_WITH(xeno-config, - [AS_HELP_STRING([--with-xeno-config=], - [location of the xeno-config executable])], - [xeno_config_from_cmdline=yes], - [ - with_xenomai_config="" - ]) - -AC_ARG_WITH(rtai-kernel, - [AS_HELP_STRING([--with-rtai-kernel], - [build RTAI kernel-space realtime threads modules])], - [test $withval = yes && all_flavors_default=no], - [with_rtai_kernel=check]) +#AC_ARG_WITH(xeno-config, +# [AS_HELP_STRING([--with-xeno-config=], +# [location of the xeno-config executable])], +# [xeno_config_from_cmdline=yes], +# [ +# with_xenomai_config="" +# ]) +# +#AC_ARG_WITH(rtai-kernel, +# [AS_HELP_STRING([--with-rtai-kernel], +# [build RTAI kernel-space realtime threads modules])], +# [test $withval = yes && all_flavors_default=no], +# [with_rtai_kernel=check]) # RTAI_KERNEL_THREADS_RTS: locate the 'rtai-config' executable -AC_ARG_WITH(rtai-config, - [AS_HELP_STRING([--with-rtai-config=], - [location of the rtai-config executable])], - [rtai_config_from_cmdline=yes], - [ - with_rtai_config="" - ]) +#AC_ARG_WITH(rtai-config, +# [AS_HELP_STRING([--with-rtai-config=], +# [location of the rtai-config executable])], +# [rtai_config_from_cmdline=yes], +# [ +# with_rtai_config="" +# ]) # If a --with- flag was found, disable all flavors not # explicitly enabled if test $all_flavors_default = no; then - for f in posix rt_preempt xenomai xenomai_kernel rtai_kernel; do + for f in posix rt_preempt xenomai; do if eval "test \$with_$f = check"; then eval "with_$f=no" fi @@ -1613,107 +1615,107 @@ AC_MSG_RESULT($with_xenomai_kernel) ############################################################################## # RTAI flavor checks - -if test "$with_rtai_kernel" != no; then - # look for rtai-config path - RTAI_KERNEL_THREADS_RTS='' - if test "$rtai_config_from_cmdline" = yes; then - # user-supplied path - RTAI_KERNEL_THREADS_RTS=$with_rtai_config - else - # guess path from defaults - rtai_config_path='' - dirs="$(echo \ - /usr/realtime-`uname -r` /usr/realtime* /usr /usr/src/rtai*)" - for d in $dirs; do - rtai_config_path="$rtai_config_path:$d:$d/bin" - done - AC_PATH_PROGS([RTAI_KERNEL_THREADS_RTS],[rtai-config], - [],[$rtai_config_path]) - fi - # check rtai-config path - if test -n "$RTAI_KERNEL_THREADS_RTS"; then - # path found, so check its validity: --linux-dir should return - # a configured kernel source directory with .config file - AC_MSG_CHECKING([usability of RTAI utility, $RTAI_KERNEL_THREADS_RTS]) - if test -x $RTAI_KERNEL_THREADS_RTS -a \ - -f $($RTAI_KERNEL_THREADS_RTS -o --linux-dir 2>/dev/null)/.config - then - # ShabbyX-style `rtai-config` - RTAI_KERNEL_THREADS_RTS="$RTAI_KERNEL_THREADS_RTS -o" - AC_MSG_RESULT(yes) - elif test -x $RTAI_KERNEL_THREADS_RTS -a \ - -f $($RTAI_KERNEL_THREADS_RTS --linux-dir 2>/dev/null)/.config - then - AC_MSG_RESULT(yes) - else +# +#if test "$with_rtai_kernel" != no; then +# # look for rtai-config path +# RTAI_KERNEL_THREADS_RTS='' +# if test "$rtai_config_from_cmdline" = yes; then +# # user-supplied path +# RTAI_KERNEL_THREADS_RTS=$with_rtai_config +# else +# # guess path from defaults +# rtai_config_path='' +# dirs="$(echo \ +# /usr/realtime-`uname -r` /usr/realtime* /usr /usr/src/rtai*)" +# for d in $dirs; do +# rtai_config_path="$rtai_config_path:$d:$d/bin" +# done +# AC_PATH_PROGS([RTAI_KERNEL_THREADS_RTS],[rtai-config], +# [],[$rtai_config_path]) +# fi +# # check rtai-config path +# if test -n "$RTAI_KERNEL_THREADS_RTS"; then +# # path found, so check its validity: --linux-dir should return +# # a configured kernel source directory with .config file +# AC_MSG_CHECKING([usability of RTAI utility, $RTAI_KERNEL_THREADS_RTS]) +# if test -x $RTAI_KERNEL_THREADS_RTS -a \ +# -f $($RTAI_KERNEL_THREADS_RTS -o --linux-dir 2>/dev/null)/.config +# then +# # ShabbyX-style `rtai-config` +# RTAI_KERNEL_THREADS_RTS="$RTAI_KERNEL_THREADS_RTS -o" +# AC_MSG_RESULT(yes) +# elif test -x $RTAI_KERNEL_THREADS_RTS -a \ +# -f $($RTAI_KERNEL_THREADS_RTS --linux-dir 2>/dev/null)/.config +# then +# AC_MSG_RESULT(yes) +# else RTAI_KERNEL_THREADS_RTS='' - AC_MSG_RESULT(no) - fi - fi - # deal with nothing found in the right way - if test -z "$RTAI_KERNEL_THREADS_RTS"; then - if test "$rtai_config_from_cmdline" = yes; then - # --with-rtai-config specified, but invalid path - AC_MSG_ERROR(--with-rtai-config: "$with_rtai_config": bad path) - elif test "$with_rtai_kernel" = yes; then - # --with-rtai-kernel specified but can't find rtai-config - AC_MSG_ERROR("rtai-config" not found; use --with-rtai-config") - else - with_rtai_kernel=no - fi - fi -fi +# AC_MSG_RESULT(no) +# fi +# fi +# # deal with nothing found in the right way +# if test -z "$RTAI_KERNEL_THREADS_RTS"; then +# if test "$rtai_config_from_cmdline" = yes; then +# # --with-rtai-config specified, but invalid path +# AC_MSG_ERROR(--with-rtai-config: "$with_rtai_config": bad path) +# elif test "$with_rtai_kernel" = yes; then +# # --with-rtai-kernel specified but can't find rtai-config +# AC_MSG_ERROR("rtai-config" not found; use --with-rtai-config") +# else +# with_rtai_kernel=no +# fi +# fi +#fi # Generate RTFLAGS for RTAI -if test $with_rtai_kernel != no -a -n "$rtai_kernels"; then - - RTAI_KERNEL_THREADS_RTFLAGS="$($RTAI_KERNEL_THREADS_RTS --module-cflags) \ - -I$($RTAI_KERNEL_THREADS_RTS --prefix)/include" - RTAI_KERNEL_THREADS_LDFLAGS="$($RTAI_KERNEL_THREADS_RTS --lxrt-ldflags) \ - -llxrt -Wl,-rpath,$($RTAI_KERNEL_THREADS_RTS --library-dir)" - - if test "$host_cpu" = x86_64; then - flags="-msse -mpreferred-stack-boundary=4 -funsafe-math-optimizations" - else - flags="-fno-unsafe-math-optimizations" - fi - RTAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS="$flags" - - RTAI_KERNEL_THREADS_RTDIR=$(readlink -f \ - $($RTAI_KERNEL_THREADS_RTS --module-dir)) -fi -AC_MSG_CHECKING(whether to build RTAI threads) -test -z "$RTAI_KERNEL_THREADS_RTS" && with_rtai_kernel=no -test -z "$rtai_kernels" && with_rtai_kernel=no - +#if test $with_rtai_kernel != no -a -n "$rtai_kernels"; then +# +# RTAI_KERNEL_THREADS_RTFLAGS="$($RTAI_KERNEL_THREADS_RTS --module-cflags) \ +# -I$($RTAI_KERNEL_THREADS_RTS --prefix)/include" +# RTAI_KERNEL_THREADS_LDFLAGS="$($RTAI_KERNEL_THREADS_RTS --lxrt-ldflags) \ +# -llxrt -Wl,-rpath,$($RTAI_KERNEL_THREADS_RTS --library-dir)" +# +# if test "$host_cpu" = x86_64; then +# flags="-msse -mpreferred-stack-boundary=4 -funsafe-math-optimizations" +# else +# flags="-fno-unsafe-math-optimizations" +# fi +# RTAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS="$flags" +# +# RTAI_KERNEL_THREADS_RTDIR=$(readlink -f \ +# $($RTAI_KERNEL_THREADS_RTS --module-dir)) +#fi +#AC_MSG_CHECKING(whether to build RTAI threads) +#test -z "$RTAI_KERNEL_THREADS_RTS" && with_rtai_kernel=no +#test -z "$rtai_kernels" && with_rtai_kernel=no +# # Check the RTAI Module.symvers file -if test $with_rtai_kernel != no; then - RTAI_KERNEL_THREADS_EXTRA_SYMBOLS=`$RTAI_KERNEL_THREADS_RTS \ - --module-dir`/Module.symvers - if ! test -f "${RTAI_KERNEL_THREADS_EXTRA_SYMBOLS}"; then - if test "$with_rtai_kernel" = check; then - with_rtai_kernel=no - else - AC_MSG_ERROR([RTAI build requested but no Module.symvers found]) - fi - fi -fi -test "$with_rtai_kernel" = check && with_rtai_kernel=yes -if test $with_rtai_kernel = yes; then - BUILD_THREAD_FLAVORS="$BUILD_THREAD_FLAVORS rtai-kernel" -fi -AC_MSG_RESULT($with_rtai_kernel) -if test $with_rtai_kernel = yes; then - AC_MSG_CHECKING(RTAI version) - if grep -q rt_free_timers $RTAI_KERNEL_THREADS_EXTRA_SYMBOLS; then - RTAI_VERSION=401 - AC_MSG_RESULT(4.1 or greater) - else - RTAI_VERSION=400 - AC_MSG_RESULT(4.0 or earlier) - fi -fi +#if test $with_rtai_kernel != no; then +# RTAI_KERNEL_THREADS_EXTRA_SYMBOLS=`$RTAI_KERNEL_THREADS_RTS \ +# --module-dir`/Module.symvers +# if ! test -f "${RTAI_KERNEL_THREADS_EXTRA_SYMBOLS}"; then +# if test "$with_rtai_kernel" = check; then +# with_rtai_kernel=no +# else +# AC_MSG_ERROR([RTAI build requested but no Module.symvers found]) +# fi +# fi +#f#i +#test "$with_rtai_kernel" = check && with_rtai_kernel=yes +#if test $with_rtai_kernel = yes; then# +# BUILD_THREAD_FLAVORS="$BUILD_THREAD_FLAVORS rtai-kernel" +#fi +#AC_MSG_RESULT($with_rtai_kernel) +#if test $with_rtai_kernel = yes; then +# AC_MSG_CHECKING(RTAI version) +# if grep -q rt_free_timers $RTAI_KERNEL_THREADS_EXTRA_SYMBOLS; then +# RTAI_VERSION=401 +# AC_MSG_RESULT(4.1 or greater) +# else +# RTAI_VERSION=400 +# AC_MSG_RESULT(4.0 or earlier) +# fi +#fi ############################################################################## # Subsection 2.6 # @@ -1981,47 +1983,47 @@ AC_SUBST([XENOMAI_THREADS_EXTRA_KMODS],[]) AC_SUBST([PRECISE_MULTILIB_BUG],[$PRECISE_MULTILIB_BUG]) # Xenomai kernel settings -if test "$with_xenomai_kernel" = yes; then - AC_DEFINE([HAVE_XENOMAI_KERNEL_THREADS],[],[Build Xenomai kernel threads]) -fi -AC_SUBST([HAVE_XENOMAI_KERNEL_THREADS],[$with_xenomai_kernel]) -AC_SUBST([XENOMAI_KERNEL_THREADS_FLAVOR_ID],_cfg_flavor_id(xenomai-kernel)) -AC_SUBST([XENOMAI_KERNEL_THREADS_BUILD_SYS], - _cfg_flavor_build_sys(xenomai-kernel)) -AC_SUBST([XENOMAI_KERNEL_THREADS_SOURCE],[xenomai-kernel]) +#if test "$with_xenomai_kernel" = yes; then +# AC_DEFINE([HAVE_XENOMAI_KERNEL_THREADS],[],[Build Xenomai kernel threads]) +#fi +#AC_SUBST([HAVE_XENOMAI_KERNEL_THREADS],[$with_xenomai_kernel]) +#AC_SUBST([XENOMAI_KERNEL_THREADS_FLAVOR_ID],_cfg_flavor_id(xenomai-kernel)) +#AC_SUBST([XENOMAI_KERNEL_THREADS_BUILD_SYS], +# _cfg_flavor_build_sys(xenomai-kernel)) +#AC_SUBST([XENOMAI_KERNEL_THREADS_SOURCE],[xenomai-kernel]) # force hard-float for kernel modules -AC_SUBST([XENOMAI_KERNEL_THREADS_RTFLAGS]) -AC_SUBST([XENOMAI_KERNEL_THREADS_LDFLAGS]) -AC_SUBST([XENOMAI_KERNEL_THREADS_RTS]) -AC_SUBST([XENOMAI_KERNEL_THREADS_KERNEL_DIRS],[$xenomai_kernels]) -AC_SUBST([XENOMAI_KERNEL_THREADS_EXTRA_SYMBOLS]) +#AC_SUBST([XENOMAI_KERNEL_THREADS_RTFLAGS]) +#AC_SUBST([XENOMAI_KERNEL_THREADS_LDFLAGS]) +#AC_SUBST([XENOMAI_KERNEL_THREADS_RTS]) +#AC_SUBST([XENOMAI_KERNEL_THREADS_KERNEL_DIRS],[$xenomai_kernels]) +#AC_SUBST([XENOMAI_KERNEL_THREADS_EXTRA_SYMBOLS]) # in-kernel math options -AC_SUBST([XENOMAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS]) -AC_SUBST([XENOMAI_KERNEL_THREADS_RTDIR],[]) -AC_SUBST([XENOMAI_KERNEL_THREADS_EXTRA_KMODS], - "_cfg_flavor_extra_kmods(xenomai-kernel)") +#AC_SUBST([XENOMAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS]) +#AC_SUBST([XENOMAI_KERNEL_THREADS_RTDIR],[]) +#AC_SUBST([XENOMAI_KERNEL_THREADS_EXTRA_KMODS], +# "_cfg_flavor_extra_kmods(xenomai-kernel)") # RTAI settings -if test "$with_rtai_kernel" = yes; then - AC_DEFINE([HAVE_RTAI_KERNEL_THREADS],[],[Build RTAI threads]) -fi -AC_SUBST([HAVE_RTAI_KERNEL_THREADS],[$with_rtai_kernel]) -AC_SUBST([RTAI_KERNEL_THREADS_FLAVOR_ID],_cfg_flavor_id(rtai-kernel)) -AC_SUBST([RTAI_KERNEL_THREADS_BUILD_SYS],_cfg_flavor_build_sys(rtai-kernel)) -AC_SUBST([RTAI_KERNEL_THREADS_SOURCE],[rtai-kernel]) -AC_SUBST([RTAI_KERNEL_THREADS_RTFLAGS]) -AC_SUBST([RTAI_KERNEL_THREADS_LDFLAGS]) -AC_SUBST([RTAI_KERNEL_THREADS_RTS]) -AC_SUBST([RTAI_KERNEL_THREADS_KERNEL_DIRS],[$rtai_kernels]) -AC_SUBST([RTAI_KERNEL_THREADS_EXTRA_SYMBOLS]) -AC_SUBST([RTAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS]) +#if test "$with_rtai_kernel" = yes; then +# AC_DEFINE([HAVE_RTAI_KERNEL_THREADS],[],[Build RTAI threads]) +#fi +#AC_SUBST([HAVE_RTAI_KERNEL_THREADS],[$with_rtai_kernel]) +#AC_SUBST([RTAI_KERNEL_THREADS_FLAVOR_ID],_cfg_flavor_id(rtai-kernel)) +#AC_SUBST([RTAI_KERNEL_THREADS_BUILD_SYS],_cfg_flavor_build_sys(rtai-kernel)) +#AC_SUBST([RTAI_KERNEL_THREADS_SOURCE],[rtai-kernel]) +#AC_SUBST([RTAI_KERNEL_THREADS_RTFLAGS]) +#AC_SUBST([RTAI_KERNEL_THREADS_LDFLAGS]) +#AC_SUBST([RTAI_KERNEL_THREADS_RTS]) +#AC_SUBST([RTAI_KERNEL_THREADS_KERNEL_DIRS],[$rtai_kernels]) +#AC_SUBST([RTAI_KERNEL_THREADS_EXTRA_SYMBOLS]) +#AC_SUBST([RTAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS]) # absolute path of rtai-config rtdir with symlinks dereferenced -AC_SUBST([RTAI_KERNEL_THREADS_RTDIR],[$RTAI_KERNEL_THREADS_RTDIR]) -AC_SUBST([RTAI_KERNEL_THREADS_EXTRA_KMODS], - "_cfg_flavor_extra_kmods(rtai-kernel)") -if test -n "$RTAI_VERSION"; then - AC_DEFINE_UNQUOTED([RTAI_VERSION],$RTAI_VERSION,"RTAI version") -fi +#AC_SUBST([RTAI_KERNEL_THREADS_RTDIR],[$RTAI_KERNEL_THREADS_RTDIR]) +#AC_SUBST([RTAI_KERNEL_THREADS_EXTRA_KMODS], +# "_cfg_flavor_extra_kmods(rtai-kernel)") +#if test -n "$RTAI_VERSION"; then +# AC_DEFINE_UNQUOTED([RTAI_VERSION],$RTAI_VERSION,"RTAI version") +#fi # while we are at it, drop a git scent mark diff --git a/src/hal/utils/halcmd_commands.c b/src/hal/utils/halcmd_commands.c index e4e068393a..e6ad792635 100644 --- a/src/hal/utils/halcmd_commands.c +++ b/src/hal/utils/halcmd_commands.c @@ -2491,7 +2491,7 @@ static void print_thread_stats(hal_thread_t *tptr) // flavor-specific statistics counters switch (flavor) { case RTAPI_XENOMAI_ID: // xenomai-user - case RTAPI_XENOMAI_KERNEL_ID: + //case RTAPI_XENOMAI_KERNEL_ID: halcmd_output(" wait_errors=%d\t", ts->flavor.xeno.wait_errors); diff --git a/src/rtapi/rtapi_compat.c b/src/rtapi/rtapi_compat.c index e525c99dc8..324a65ca2a 100644 --- a/src/rtapi/rtapi_compat.c +++ b/src/rtapi/rtapi_compat.c @@ -188,6 +188,7 @@ flavor_t flavors[] = { .flavor_id = RTAPI_XENOMAI_ID, .flags = XENOMAI_FLAVOR_FLAGS }, +/* { .name = RTAPI_RTAI_KERNEL_NAME, .mod_ext = ".ko", .so_ext = ".so", @@ -203,7 +204,7 @@ flavor_t flavors[] = { .flavor_id = RTAPI_XENOMAI_KERNEL_ID, .flags = XENOMAI_KERNEL_FLAVOR_FLAGS }, - +*/ { .name = RTAPI_NOTLOADED_NAME, .mod_ext = "", .so_ext = "", @@ -264,20 +265,21 @@ flavor_ptr default_flavor(void) exit(1); } - if (kernel_is_rtai()) { +/* if (kernel_is_rtai()) { f = flavor_byid(RTAPI_RTAI_KERNEL_ID); if (check_rtapi_lib((char *)f->name)) return f; } +*/ if (kernel_is_xenomai()) { /* check for userspace first */ f = flavor_byid(RTAPI_XENOMAI_ID); if (check_rtapi_lib((char *)f->name)) return f; /* else look for xenomai_kernel */ - f = flavor_byid(RTAPI_XENOMAI_KERNEL_ID); - if (check_rtapi_lib((char *)f->name)) - return f; + //f = flavor_byid(RTAPI_XENOMAI_KERNEL_ID); + //if (check_rtapi_lib((char *)f->name)) + // return f; } if (kernel_is_rtpreempt()) { f = flavor_byid(RTAPI_RT_PREEMPT_ID); diff --git a/src/rtapi/rtapi_exception.c b/src/rtapi/rtapi_exception.c index f771a843f7..cde9b97fc5 100644 --- a/src/rtapi/rtapi_exception.c +++ b/src/rtapi/rtapi_exception.c @@ -205,7 +205,7 @@ static void log_thread_stats(rtapi_exception_t type, switch (flavor) { case RTAPI_XENOMAI_ID: - case RTAPI_XENOMAI_KERNEL_ID: +// case RTAPI_XENOMAI_KERNEL_ID: if (ts->num_updates) { rtapi_print_msg(RTAPI_MSG_WARN, "wait_errors=%d overruns=%d modesw=%d ctxsw=%d" diff --git a/src/rtapi/rtapi_msgd.cc b/src/rtapi/rtapi_msgd.cc index 292f96ad03..b803281a2b 100644 --- a/src/rtapi/rtapi_msgd.cc +++ b/src/rtapi/rtapi_msgd.cc @@ -466,6 +466,7 @@ static int flavor_and_kernel_compatible(flavor_ptr f) rtapi_instance, f->name); return 1; } + /* if ((f->flavor_id != RTAPI_XENOMAI_ID) && (f->flavor_id != RTAPI_XENOMAI_KERNEL_ID)) { fprintf(stderr, @@ -473,14 +474,17 @@ static int flavor_and_kernel_compatible(flavor_ptr f) rtapi_instance, f->name); return 0; } + */ } + /* if (kernel_is_rtai() && (f->flavor_id != RTAPI_RTAI_KERNEL_ID)) { fprintf(stderr, "MSGD:%d ERROR: trying to start %s RTAPI on an RTAI kernel\n", rtapi_instance, f->name); return 0; } + */ if (kernel_is_rtpreempt() && (f->flavor_id != RTAPI_RT_PREEMPT_ID)) { From c6c1df07dd6a4f761ef024f06315cbe738097807 Mon Sep 17 00:00:00 2001 From: Mick Date: Sat, 15 Dec 2018 09:15:43 +0000 Subject: [PATCH 438/516] Remove debugging and add missing forward slash Signed-off-by: Mick --- src/Makefile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/Makefile b/src/Makefile index e70f66d701..3fc6b42f11 100755 --- a/src/Makefile +++ b/src/Makefile @@ -124,11 +124,9 @@ ifeq ($(BUILD_ALL_FLAVORS),yes) ################################################################################# modules: userspace - NO_OF_FLAVOURS=$(words $(BUILD_THREAD_FLAVORS)) - counter=0 for f in $(BUILD_THREAD_FLAVORS); do \ $(MAKE) modules threads=$$f; \ - done; + done; \ ifeq ($(RUN_IN_PLACE)+$(BUILD_DRIVERS),yes+yes) for f in $(BUILD_THREAD_FLAVORS); do \ From 3ea93225492a3c5f11ea0d93a0ce6f3060edf4fb Mon Sep 17 00:00:00 2001 From: Mick Date: Sat, 15 Dec 2018 10:38:30 +0000 Subject: [PATCH 439/516] Revert Makefile.inc.in path change Signed-off-by: Mick --- src/Makefile.inc.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Makefile.inc.in b/src/Makefile.inc.in index 9801e97ba9..975ad78e57 100644 --- a/src/Makefile.inc.in +++ b/src/Makefile.inc.in @@ -53,7 +53,7 @@ exec_prefix=@exec_prefix@ EMC2_HOME=@EMC2_HOME@ LIB_DIR=@EMC2_HOME@/lib -RTDIR_EXT=modules +RTDIR_EXT=$(threads) #used for install stuff #but have them here as reference From d80462a110631513b9200e3907fb215871b4258d Mon Sep 17 00:00:00 2001 From: Mick Date: Sat, 15 Dec 2018 15:02:42 +0000 Subject: [PATCH 440/516] Move creation of rtlib/modules and symlinks to start of build Signed-off-by: Mick --- src/Makefile | 7 +++++++ src/hal/lib/Submakefile | 11 ++++++++++- src/rtapi/Submakefile | 6 ++---- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/Makefile b/src/Makefile index 3fc6b42f11..289c7596b9 100755 --- a/src/Makefile +++ b/src/Makefile @@ -78,6 +78,13 @@ BUILD_ALL_FLAVORS = no BUILD_THREAD_MODULES = yes endif # $(threads) +#ifneq ($(BUILD_THREAD_FLAVORS),) +#@mkdir -p ../rtlib/modules \ +#for f in $(BUILD_THREAD_FLAVORS); do \ +# ln -s ../rtlib/modules ../rtlib/$$f; \ +#done; +#endif + BUILD_KBUILD = no # extract the version from the kernel source version.h diff --git a/src/hal/lib/Submakefile b/src/hal/lib/Submakefile index d9d7456f97..d0976a8826 100644 --- a/src/hal/lib/Submakefile +++ b/src/hal/lib/Submakefile @@ -8,6 +8,7 @@ LIBS := ../lib $(ECHO) Copying header file $@ $(Q)cp $< $@ + # link in basic nanonpb support routines HALLIBSRCS := $(HALLIBDIR)/hal_lib.c \ $(HALLIBDIR)/hal_group.c \ @@ -55,6 +56,10 @@ HALLIB := ../lib/liblinuxcnchal.so # for now, link in ulapi plus any referenced objs directly # cause: http://fedoraproject.org/wiki/UnderstandingDSOLinkChange +# might seem like strange place to create modules dir, +# but hallib is one of the first to be built, so ensures +# it exists with symlinks, before module build + $(HALLIB).0: \ $(call TOOBJS, $(HALLIBSRCS)) \ $(call TOOBJS, $(ULAPI_AUTOLOAD_SRCS)) \ @@ -64,7 +69,11 @@ $(HALLIB).0: \ $(call TOOBJS, machinetalk/lib/syslog_async.c) \ $(LIBS)/libmachinetalk-pb2++.so $(ECHO) Creating shared library $(notdir $@) - @mkdir -p ../lib + @mkdir -p ../lib \ + @mkdir -p ../rtlib/modules; \ + ln -sf ../rtlib/modules ../rtlib/posix; \ + ln -sf ../rtlib/modules ../rtlib/rt-preempt; \ + ln -sf ../rtlib/modules ../rtlib/xenomai; @rm -f $@ $(Q)$(CC) $(LDFLAGS) -Wl,-rpath,$(EMC2_RTLIB_DIR) \ -Wl,-soname,$(notdir $@) -shared \ diff --git a/src/rtapi/Submakefile b/src/rtapi/Submakefile index c0ade4fdcd..22fa8b0302 100644 --- a/src/rtapi/Submakefile +++ b/src/rtapi/Submakefile @@ -84,15 +84,13 @@ endif $(call TOOBJSDEPS, $(ULAPI_SRCS)): EXTRAFLAGS += \ $(THREADS_RTFLAGS) -fPIC + + ULAPISO := ../rtlib/ulapi-$(threads).so $(ULAPISO): ../lib/liblinuxcnchal.so ../lib/liblinuxcncshm.so \ $(call TOOBJS, $(ULAPI_SRCS)) $(ECHO) Creating shared object $(notdir $@) - @mkdir -p ../rtlib/modules; \ - ln -sf ../rtlib/modules ../rtlib/posix; \ - ln -sf ../rtlib/modules ../rtlib/rt-preempt; \ - ln -sf ../rtlib/modules ../rtlib/xenomai; @rm -f $@ $(Q)$(CC) $(LDFLAGS) -Wl,-soname,$(notdir $@) -shared \ -o $@ $^ $(ULAPISO_LIBS) $(RT_LDFLAGS) \ From 6747ae760328dfd996953eeda1f1e75c935275eb Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 17 Dec 2018 15:01:37 +0800 Subject: [PATCH 441/516] Fix prubin install In `Makefile`, move `prubin` symlinks to sensible place. These links logically should be created with the `prubin` binaries themselves. Fix prubin `make install` and packaging. --- debian/machinekit.install.in | 2 +- src/Makefile | 6 +----- src/hal/drivers/hal_pru_generic/Submakefile | 15 +++++++++++++++ 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/debian/machinekit.install.in b/debian/machinekit.install.in index 63d6f59237..dfd7393abf 100644 --- a/debian/machinekit.install.in +++ b/debian/machinekit.install.in @@ -4,7 +4,7 @@ etc/security/limits.d/machinekit.conf etc/udev/rules.d/50-shmdrv.rules etc/X11/app-defaults/* usr/lib/*.so.* -usr/lib/linuxcnc/modules/*.so +usr/lib/linuxcnc/* usr/lib/tcltk/linuxcnc usr/bin/* usr/lib/python*/*/*.py diff --git a/src/Makefile b/src/Makefile index 289c7596b9..1eae0259dc 100755 --- a/src/Makefile +++ b/src/Makefile @@ -141,11 +141,7 @@ ifeq ($(RUN_IN_PLACE)+$(BUILD_DRIVERS),yes+yes) \( 0`stat -c %u ../libexec/rtapi_app_$$f 2>/dev/null` \ -ne 0 -o ! -u ../libexec/rtapi_app_$$f \) \ && need_setuid=1; \ - ln -sf $(EMC2_HOME)/rtlib/prubin/pru_generic.bin ../rtlib/modules/pru_generic.bin; \ - ln -sf $(EMC2_HOME)/rtlib/prubin/pru_generic.dbg ../rtlib/modules/pru_generic.dbg; \ - ln -sf $(EMC2_HOME)/rtlib/prubin/pru_decamux.bin ../rtlib/modules/pru_decamux.bin; \ - ln -sf $(EMC2_HOME)/rtlib/prubin/pru_decamux.dbg ../rtlib/modules/pru_decamux.dbg; \ - done; + done; test "$$need_setuid" = 1 && \ $(VECHO) -n "You now need to run 'sudo make setuid' " && \ diff --git a/src/hal/drivers/hal_pru_generic/Submakefile b/src/hal/drivers/hal_pru_generic/Submakefile index ae91111af9..6d34f6099d 100644 --- a/src/hal/drivers/hal_pru_generic/Submakefile +++ b/src/hal/drivers/hal_pru_generic/Submakefile @@ -49,8 +49,23 @@ objects/%.bin objects/%.dbg : %.p objects/%.d $(PASM) $(PRU_BIN): $(PRUBINDIR)/%.bin : objects/$(PRU_SRC_DIR)/%.bin cp -f $^ $@ + $(Q)mkdir -p $(RTLIBDIR) + ln -sf ../prubin/$(notdir $@) $(RTLIBDIR)/$(notdir $@) $(PRU_DBG): $(PRUBINDIR)/%.dbg : objects/$(PRU_SRC_DIR)/%.dbg cp -f $^ $@ + $(Q)mkdir -p $(RTLIBDIR) + ln -sf ../prubin/$(notdir $@) $(RTLIBDIR)/$(notdir $@) + +install_prubin: + $(DIR) $(DESTDIR)$(EMC2_RTLIB_BASE_DIR)/prubin +# # Copy .bin and .dbg files to the rtlib/prubin directory + $(FILE) $(PRUBINDIR)/*.bin $(DESTDIR)$(EMC2_RTLIB_BASE_DIR)/prubin + $(FILE) $(PRUBINDIR)/*.dbg $(DESTDIR)$(EMC2_RTLIB_BASE_DIR)/prubin +# # Copy .bin and .dbg symlinks to the rtlib/modules directory + $(DIR) $(DESTDIR)$(EMC2_RTLIB_DIR) + cp -a $(RTLIBDIR)/*.bin $(RTLIBDIR)/*.dbg $(DESTDIR)$(EMC2_RTLIB_DIR) + +install: install_prubin endif From 6d579de0986c8f69f2a8b08e11ff9ff183402775 Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 17 Dec 2018 16:54:40 +0800 Subject: [PATCH 442/516] Prepare for common modules directory - Fix `make modules threads=posix` to make life easier - Move `halcomp-srcs/*` into `objects` directory to clean up build artifacts - Rename `rtapi.so` module to `rtapi_$(threads).so` to prevent name space collisions (really, this needs to be folded into `rtapi_app_$(threads)` - Remove part of the `rtapi/$(threads)/` hack for `rtapi_app_$(threads)` sources --- src/Makefile | 6 ++-- src/hal/components/Submakefile | 49 +++++-------------------- src/hal/i_components/Submakefile | 28 +++++---------- src/hal/lib/Submakefile | 2 +- src/rtapi/Submakefile | 62 +++++++++++++++++--------------- 5 files changed, 54 insertions(+), 93 deletions(-) diff --git a/src/Makefile b/src/Makefile index 1eae0259dc..8108dac54b 100755 --- a/src/Makefile +++ b/src/Makefile @@ -82,7 +82,7 @@ endif # $(threads) #@mkdir -p ../rtlib/modules \ #for f in $(BUILD_THREAD_FLAVORS); do \ # ln -s ../rtlib/modules ../rtlib/$$f; \ -#done; +#done; #endif BUILD_KBUILD = no @@ -130,7 +130,7 @@ ifeq ($(BUILD_ALL_FLAVORS),yes) # placed far away from all others. ################################################################################# -modules: userspace +modules: for f in $(BUILD_THREAD_FLAVORS); do \ $(MAKE) modules threads=$$f; \ done; \ @@ -1086,7 +1086,7 @@ endif $(FILE) ../etc/linuxcnc/rtapi.ini $(DESTDIR)$(sysconfdir)/linuxcnc # RTAPI modules: install userland flavor .so modules into - # e.g. /usr/lib/linuxcnc/modules + # e.g. /usr/lib/linuxcnc/modules ##TODO: change $$flavor to modules for install diff --git a/src/hal/components/Submakefile b/src/hal/components/Submakefile index 4268b3ee53..a037240be2 100644 --- a/src/hal/components/Submakefile +++ b/src/hal/components/Submakefile @@ -6,12 +6,6 @@ HALCOMP_SUBMAKEFILE= hal/components/Submakefile # everything under the sun with every small change #HALCOMP_SUBMAKEFILE= -ifeq ($(BUILD_KBUILD),yes) -COMPS := $(patsubst $(BASEPWD)/%,%,$(wildcard \ - $(BASEPWD)/hal/components/*.comp $(BASEPWD)/hal/drivers/*.comp \ - $(BASEPWD)/machinetalk/msgcomponents/*.comp)) -include $(patsubst %.comp, $(BASEPWD)/halcomp-srcs/%.mak, $(COMPS)) -else COMPS := $(sort $(wildcard hal/components/*.comp)) USER_COMP_COMPS := $(sort $(wildcard hal/user_comps/*.comp)) @@ -39,18 +33,15 @@ ifeq ($(BUILD_DOCS),yes) .PHONY: docpages endif -ifeq ($(TRIVIAL_BUILD)+$(BUILD_THREAD_MODULES),no+yes) --include $(patsubst %.comp, $(BASEPWD)/halcomp-srcs/%.mak,\ +ifeq ($(TRIVIAL_BUILD),no) +-include $(patsubst %.comp, objects/%.mak,\ $(COMPS) $(DRIVER_COMPS) $(MSG_COMPS)) endif # TRIVIAL_BUILD == no -endif # KERNELRELEASE != '' -ifeq ($(BUILD_THREAD_MODULES),yes) obj-m += $(patsubst hal/drivers/%.comp, %.o, \ $(patsubst hal/components/%.comp, %.o, \ $(patsubst machinetalk/msgcomponents/%.comp, %.o, \ $(COMPS) $(DRIVER_COMPS) $(MSG_COMPS)))) -endif $(COMP_DOCPAGES): ../man/man9/%.asciidoc: hal/components/%.comp ../bin/comp $(ECHO) Making comp docpage $(notdir $@) @@ -85,51 +76,27 @@ $(MSG_COMP_DOCPAGES): ../man/man9/%.asciidoc: \ --frontmatter="edit-branch: $(EDIT_BRANCH)" \ -o $@ $< -ifeq ($(BUILD_ALL_FLAVORS),yes) # .c and .mak files are identical for all flavors # # in the top-level make, build them once in a common location -halcomp-srcs/%.c: %.comp ../bin/comp +objects/%.c: %.comp ../bin/comp $(ECHO) "Preprocessing $(notdir $<)" @mkdir -p $(dir $@) $(Q)../bin/comp --require-license -o $@ $< -halcomp-srcs/%.mak: %.comp $(HALCOMP_SUBMAKEFILE) +objects/%.mak: %.comp $(HALCOMP_SUBMAKEFILE) $(ECHO) "Generating comp build rules for $(notdir $<)" @mkdir -p $(dir $@) - $(Q)echo "$(notdir $*)-objs := halcomp-srcs/$*.o" > $@.tmp + $(Q)echo "$(notdir $*)-objs := objects/$*.o" > $@.tmp $(Q)echo "\$$(RTLIBDIR)/$(notdir $*)\$$(MODULE_EXT): \\" >> $@.tmp - $(Q)echo " \$$(OBJDIR)/halcomp-srcs/$*.o" >> $@.tmp + $(Q)echo " \$$(OBJDIR)/objects/$*.o" >> $@.tmp $(Q)mv -f $@.tmp $@ # Generate .c and .mak files before the modules target -modules: $(patsubst %.comp, halcomp-srcs/%.c, \ +modules: $(patsubst %.comp, objects/%.c, \ $(COMPS) $(DRIVER_COMPS) $(MSG_COMPS)) -modules: $(patsubst %.comp, halcomp-srcs/%.mak, \ +modules: $(patsubst %.comp, objects/%.mak, \ $(COMPS) $(DRIVER_COMPS) $(MSG_COMPS)) -endif # BUILD_ALL_FLAVORS == yes - -# ifeq ($(BUILD_THREAD_MODULES),yes) -# # to build flavors separately, source files need to be linked -# # are these still neededby kthreads build? -# # are they used at all? -# HALCOMP_DIR_STAMPS := \ -# halcomp-srcs/hal/components/.dir-stamp \ -# halcomp-srcs/hal/drivers/.dir-stamp -# $(HALCOMP_DIR_STAMPS): -# @mkdir -p $(dir $@) && touch $@ - -# ifeq ($(BUILD_KBUILD),no) -# # do we still need this? These don't seem to be usedin userland threads -# $(OBJDIR)/halcomp-srcs/hal/%.c: halcomp-srcs/hal/%.c \ -# $(patsubst %,$(OBJDIR)/%,$(HALCOMP_DIR_STAMPS)) -# cp $< $@ -# else -# #do we need this? This shouldbe taken care of by the wholesale copy operation -# halcomp-srcs/hal/%.c: $(BASEPWD)/halcomp-srcs/hal/%.c $(HALCOMP_DIR_STAMPS) -# cp $< $@ -# endif -# endif HALSTREAMERSRCS := hal/components/streamer_usr.c USERSRCS += $(HALSTREAMERSRCS) diff --git a/src/hal/i_components/Submakefile b/src/hal/i_components/Submakefile index 9d6ab4aae7..b696a368a6 100644 --- a/src/hal/i_components/Submakefile +++ b/src/hal/i_components/Submakefile @@ -14,11 +14,6 @@ CONVERTERS := \ conv_u64_float.icomp conv_u64_bit.icomp conv_u64_s64.icomp \ conv_u64_s64.icomp conv_u64_u32.icomp conv_s64_s32.icomp conv_s64_u32.icomp -ifeq ($(BUILD_KBUILD),yes) -ICOMPS := $(patsubst $(BASEPWD)/%,%,$(wildcard \ - $(BASEPWD)/$(HALICOMPDIR)/*.icomp )) -include $(patsubst %.icomp, $(BASEPWD)/halcomp-srcs/%.mak, $(ICOMPS)) -else ICOMPS := $(sort $(wildcard $(HALICOMPDIR)/*.icomp) \ $(addprefix hal/i_components/, $(CONVERTERS))) @@ -32,17 +27,14 @@ ifeq ($(BUILD_DOCS),yes) .PHONY: i_docpages endif -ifeq ($(TRIVIAL_BUILD)+$(BUILD_THREAD_MODULES),no+yes) --include $(patsubst %.icomp, $(BASEPWD)/halcomp-srcs/%.mak,\ +ifeq ($(TRIVIAL_BUILD),no) +-include $(patsubst %.icomp, $(BASEPWD)/objects/%.mak,\ $(ICOMPS)) endif # TRIVIAL_BUILD == no -endif -ifeq ($(BUILD_THREAD_MODULES),yes) obj-m += \ $(patsubst hal/i_components/%.icomp, %.o, $(ICOMPS)) -endif ICOMP_DOCPAGES := $(patsubst $(HALICOMPDIR)/%.icomp, ../man/man9/%.asciidoc, \ $(ICOMPS)) @@ -55,29 +47,27 @@ $(ICOMP_DOCPAGES): ../man/man9/%.asciidoc: $(HALICOMPDIR)/%.icomp ../bin/instcom --frontmatter="edit-branch: $(EDIT_BRANCH)" \ -o $@ $< -ifeq ($(BUILD_ALL_FLAVORS),yes) # .c and .mak files are identical for all flavors # -# in the top-level make, build them once in a common location -halcomp-srcs/%.c: %.icomp ../bin/instcomp +# build them once in a common location +objects/%.c: %.icomp ../bin/instcomp $(ECHO) "Preprocessing $(notdir $<)" @mkdir -p $(dir $@) $(Q)../bin/instcomp --require-license -o $@ $< -halcomp-srcs/%.mak: %.icomp $(HALICOMP_SUBMAKEFILE) +objects/%.mak: %.icomp $(HALICOMP_SUBMAKEFILE) $(ECHO) "Generating icomp build rules for $(notdir $<)" @mkdir -p $(dir $@) - $(Q)echo "$(notdir $*)-objs := halcomp-srcs/$*.o" > $@.tmp + $(Q)echo "$(notdir $*)-objs := objects/$*.o" > $@.tmp $(Q)echo "\$$(RTLIBDIR)/$(notdir $*)\$$(MODULE_EXT): \\" >> $@.tmp - $(Q)echo " \$$(OBJDIR)/halcomp-srcs/$*.o" >> $@.tmp + $(Q)echo " \$$(OBJDIR)/objects/$*.o" >> $@.tmp $(Q)mv -f $@.tmp $@ # Generate .c and .mak files before the modules target -modules: $(patsubst %.icomp, halcomp-srcs/%.c, \ +modules: $(patsubst %.icomp, objects/%.c, \ $(ICOMPS) ) -modules: $(patsubst %.icomp, halcomp-srcs/%.mak, \ +modules: $(patsubst %.icomp, objects/%.mak, \ $(ICOMPS)) -endif # BUILD_ALL_FLAVORS == yes # Regenerate conv_*.icomp when below rules are touched $(addprefix hal/i_components/, $(CONVERTERS)): hal/i_components/Submakefile diff --git a/src/hal/lib/Submakefile b/src/hal/lib/Submakefile index d0976a8826..106b845a2d 100644 --- a/src/hal/lib/Submakefile +++ b/src/hal/lib/Submakefile @@ -35,7 +35,7 @@ HALLIBSRCS := $(HALLIBDIR)/hal_lib.c \ HALLIBMTALK_SRCS := $(addprefix $(HALLIBDIR)/, \ halpb.cc) -HALLIBMTALK_CXXFLAGS := -DULAPI $(PROTOBUF_CFLAGS) $(CZMQ_CFLAGS) +HALLIBMTALK_CXXFLAGS := $(PROTOBUF_CFLAGS) $(CZMQ_CFLAGS) HALLIBMTALK_LDFLAGS := $(PROTOBUF_LIBS) $(CZMQ_LIBS) $(call TOOBJSDEPS, $(HALLIBMTALK_SRCS)) : EXTRAFLAGS=-fPIC $(HALLIBMTALK_CXXFLAGS) diff --git a/src/rtapi/Submakefile b/src/rtapi/Submakefile index 22fa8b0302..f0b2838d7b 100644 --- a/src/rtapi/Submakefile +++ b/src/rtapi/Submakefile @@ -227,10 +227,10 @@ TARGETS += $(ULAPI_AUTOLOAD_LIB) $(ULAPI_AUTOLOAD_LIB).0 RTAPI_APP_SRCS := \ - rtapi/$(threads)/rtapi_app.cc \ - rtapi/$(threads)/rtapi_compat.c \ - rtapi/$(threads)/rtapi_hexdump.c \ - rtapi/$(threads)/rtapi_support.c + rtapi/rtapi_app.cc \ + rtapi/rtapi_compat.c \ + rtapi/rtapi_hexdump.c \ + rtapi/rtapi_support.c USERSRCS += $(RTAPI_APP_SRCS) @@ -240,8 +240,10 @@ ifeq ($(RUN_IN_PLACE),yes) RTAPI_APP_RPATH=-Wl,-rpath,$(LIB_DIR) endif -$(call TOOBJSDEPS, rtapi/$(threads)/rtapi_app.cc): EXTRAFLAGS = \ - $(PROTOBUF_CFLAGS) $(CZMQ_CFLAGS) $(LTTNG_UST_CFLAGS) +$(call TOOBJSDEPS, rtapi/rtapi_app.cc): \ + EXTRAFLAGS = $(PROTOBUF_CFLAGS) $(CZMQ_CFLAGS) $(LTTNG_UST_CFLAGS) +$(call TOOBJSDEPS, rtapi/rtapi_app.cc): \ + ../include/machinetalk/protobuf/message.pb.h ../libexec/rtapi_app_$(threads): \ $(call TOOBJS, $(RTAPI_APP_SRCS)) \ @@ -274,17 +276,18 @@ ifeq ($(BUILD_SYS),user-dso) ifeq ($(BUILD_THREAD_MODULES),yes) # the rtapi.so module -obj-$(CONFIG_RTAPI) += rtapi.o - -rtapi-objs := \ - $(patsubst %.c,rtapi/%.o,$(XXAPI_COMMON_SRCS)) \ - rtapi/rtapi_main.o \ - rtapi/rtapi_compat.o -rtapi-objs += machinetalk/support/nanopb.o -rtapi-objs += machinetalk/nanopb/pb_decode.o -rtapi-objs += machinetalk/nanopb/pb_encode.o -rtapi-objs += machinetalk/nanopb/pb_common.o - +obj-$(CONFIG_RTAPI) += rtapi_$(threads).o + +rtapi_$(threads)-objs := \ + $(patsubst %.c, \ + rtapi/%.o,$(XXAPI_COMMON_SRCS) \ + rtapi_main.c \ + rtapi_compat.c \ + ) \ + machinetalk/support/nanopb.o \ + machinetalk/nanopb/pb_decode.o \ + machinetalk/nanopb/pb_encode.o \ + machinetalk/nanopb/pb_common.o ifeq ($(USERMODE_PCI),yes) @@ -292,16 +295,17 @@ ifeq ($(USERMODE_PCI),yes) $(call TOOBJSDEPS, rtapi/rtapi_pci.c): EXTRAFLAGS += $(LIBUDEV_CFLAGS) # link in userland PCI support into rtapi.so -rtapi-objs += rtapi/rtapi_pci.o +rtapi_$(threads)-objs += rtapi/rtapi_pci.o # userland PCI support needs -ludev for rtapi.so -$(RTLIBDIR)/rtapi$(MODULE_EXT): EXTRA_LDFLAGS += $(LIBUDEV_LIBS) +$(RTLIBDIR)/rtapi_$(threads)$(MODULE_EXT): EXTRA_LDFLAGS += $(LIBUDEV_LIBS) endif -$(RTLIBDIR)/rtapi$(MODULE_EXT): EXTRA_LDFLAGS += $(RT_LDFLAGS) +$(RTLIBDIR)/rtapi_$(threads)$(MODULE_EXT): EXTRA_LDFLAGS += $(RT_LDFLAGS) -# rule for kernel module, moved from src/Makefile -$(RTLIBDIR)/rtapi$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(rtapi-objs)) +# rule for threads module, moved from src/Makefile +$(RTLIBDIR)/rtapi_$(threads)$(MODULE_EXT): \ + $(addprefix $(OBJDIR)/,$(rtapi_$(threads)-objs)) endif # BUILD_THREAD_MODULES @@ -313,16 +317,17 @@ else # BUILD_SYS == kbuild obj-$(CONFIG_RTAPI) += rtapi.o -rtapi-objs := \ +rtapi_$(threads)-objs := \ $(patsubst %.c,rtapi/%.o,$(XXAPI_COMMON_SRCS)) \ rtapi/rtapi_module.o -rtapi-objs += machinetalk/support/nanopb.o -rtapi-objs += machinetalk/nanopb/pb_decode.o -rtapi-objs += machinetalk/nanopb/pb_encode.o -rtapi-objs += machinetalk/nanopb/pb_common.o +rtapi_$(threads)-objs += machinetalk/support/nanopb.o +rtapi_$(threads)-objs += machinetalk/nanopb/pb_decode.o +rtapi_$(threads)-objs += machinetalk/nanopb/pb_encode.o +rtapi_$(threads)-objs += machinetalk/nanopb/pb_common.o # rule for kernel module, moved from src/Makefile -$(RTLIBDIR)/rtapi$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(rtapi-objs)) +$(RTLIBDIR)/rtapi_$(threads)$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(rtapi_$(threads)-objs)) +$(info rtapi.so? $(RTLIBDIR)/rtapi_$(threads)$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(rtapi_$(threads)-objs))) endif # BUILD_SYS == kbuild @@ -404,4 +409,3 @@ TARGETS += ../libexec/flavor @mkdir -p $(dir $@) bash $< > $@ TARGETS += ../etc/linuxcnc/rtapi.ini - From df3d611f0b557320f6ff4df041be99517aadf329 Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 17 Dec 2018 20:59:16 +0800 Subject: [PATCH 443/516] Remove recursive per-threads make modules Squash the per-threads e.g. `make modules threads=posix` recursive call. Modules are now built directly into `rtlib/modules`. Related make variables like `RTDIR_EXT`, `BUILD_ALL_FLAVORS` and `BUILD_THREAD_MODULES` are removed. Squashing these breaks the crazy `.mak` file generation, so this is replaced with (equally crazy) macros that do the same thing. --- src/Makefile | 83 ++++++++------------------------ src/Makefile.inc.in | 7 +-- src/Makefile.modinc.in | 6 +-- src/hal/components/Submakefile | 49 +++++++++++-------- src/hal/i_components/Submakefile | 33 +++++-------- src/rtapi/Submakefile | 5 -- src/rtapi/shmdrv/Submakefile | 8 +-- 7 files changed, 71 insertions(+), 120 deletions(-) diff --git a/src/Makefile b/src/Makefile index 8108dac54b..c856c1cd14 100755 --- a/src/Makefile +++ b/src/Makefile @@ -66,18 +66,6 @@ ECHO=@true VECHO=true endif -ifeq ($(threads),) -# if $(threads) wasn't passed in on the command line, rerun make for -# each flavor/(optional)kernel-source combo -BUILD_ALL_FLAVORS = yes -BUILD_THREAD_MODULES = no -else -# $(threads) was passed in; build modules for this flavor and (if -# applicable) kernel-source -BUILD_ALL_FLAVORS = no -BUILD_THREAD_MODULES = yes -endif # $(threads) - #ifneq ($(BUILD_THREAD_FLAVORS),) #@mkdir -p ../rtlib/modules \ #for f in $(BUILD_THREAD_FLAVORS); do \ @@ -108,53 +96,15 @@ endif ifeq ($(BUILD_THREAD_FLAVORS),) $(error Makefile.inc must specify 'BUILD_THREAD_FLAVORS' and other variables) endif -# prevent typos -ifeq "$(filter $(threads),$(BUILD_THREAD_FLAVORS))" "" -$(error "$(threads)" is not a valid RTOS flavor; please pick one of:\ - $(BUILD_THREAD_FLAVORS)) -endif # default target: put before everything else default: -########################################################################################### - -ifeq ($(BUILD_ALL_FLAVORS),yes) -# Top-level modules target -# -# Re-run 'make modules', once for each configured userland threads -# flavor, and once for each detected kernel for each configured kernel -# threads flavor. Set 'threads' and where applicable 'KERNELDIR'. -# -# Following tradition, this incarnation of the modules recipe is -# placed far away from all others. -################################################################################# - -modules: - for f in $(BUILD_THREAD_FLAVORS); do \ - $(MAKE) modules threads=$$f; \ - done; \ - -ifeq ($(RUN_IN_PLACE)+$(BUILD_DRIVERS),yes+yes) - for f in $(BUILD_THREAD_FLAVORS); do \ - test -f ../libexec/rtapi_app_$$f -a \ - \( 0`stat -c %u ../libexec/rtapi_app_$$f 2>/dev/null` \ - -ne 0 -o ! -u ../libexec/rtapi_app_$$f \) \ - && need_setuid=1; \ - done; - - test "$$need_setuid" = 1 && \ - $(VECHO) -n "You now need to run 'sudo make setuid' " && \ - $(VECHO) "in order to run in place." || true -endif - -endif # BUILD_ALL_FLAVORS - ############################################################################################# -OBJDIR := objects/$(RTDIR_EXT) -DEPDIR := depends/$(RTDIR_EXT) -RTLIBDIR := ../rtlib/$(RTDIR_EXT) +OBJDIR := objects/modules +DEPDIR := depends/modules +RTLIBDIR := ../rtlib/modules DEP = $(1) $(CPPFLAGS) -MM -MG -MT "$(2)" $(4) -o $(3).tmp && \ mv -f "$(3)".tmp "$(3)" @@ -741,9 +691,6 @@ endif # This is the gateway into the crazy world of "kbuild", the linux 2.6 system # for building kernel modules. Other kernel module build styles need to be # accomodated here. -# -# (don't build when 'BUILD_ALL_FLAVORS' or 'BUILD_THREADS_MODULES' are set; -# these are intermediate make runs) # It looks almost impossible to coerce kbuild into putting build # artifacts outside the source tree. The universal build needs to @@ -1576,9 +1523,7 @@ TORTOBJS = $(foreach file,$($(patsubst %.o,%,$(1))-objs), $(OBJDIR)/$(file)) ####################################################################################################### # USER_DSO module building -# (don't build when 'BUILD_ALL_FLAVORS' or 'BUILD_THREADS_MODULES' are set; -# these are intermediate make runs) -ifeq ($(BUILD_SYS)+$(BUILD_THREAD_MODULES),user-dso+yes) +ifeq ($(BUILD_SYS),user-dso) EXTRA_CFLAGS += -fPIC RTOBJS := $(sort $(foreach mod,$(obj-m),$(call TORTOBJS,$(mod)))) @@ -1656,9 +1601,23 @@ RTDEPS := $(sort $(patsubst $(OBJDIR)/%.o,$(DEPDIR)/%.d, $(RTOBJS))) # it means that symbols referenced are resolved within the object first, instead of looking # at any symbols exported (maybe by accident) by rtap_app proper. # + +modules: +ifeq ($(RUN_IN_PLACE)+$(BUILD_DRIVERS),yes+yes) + for f in $(BUILD_THREAD_FLAVORS); do \ + test -f ../libexec/rtapi_app_$$f -a \ + \( 0`stat -c %u ../libexec/rtapi_app_$$f 2>/dev/null` \ + -ne 0 -o ! -u ../libexec/rtapi_app_$$f \) \ + && need_setuid=1; \ + done; \ + test "$$need_setuid" = 1 && \ + $(VECHO) -n "You now need to run 'sudo make setuid' " && \ + $(VECHO) "in order to run in place." || true +endif + modules: $(patsubst %.o,$(RTLIBDIR)/%.so,$(obj-m)) $(RTLIBDIR)/%.so: - $(ECHO) Linking realtime $(threads) $(notdir $@) + $(ECHO) Linking realtime $(notdir $@) @mkdir -p $(dir $@) @# link all objects files into a single .so $(Q)$(LD) -d -r -o $(OBJDIR)/$*.tmp $^ @@ -1671,14 +1630,14 @@ $(RTLIBDIR)/%.so: $(sort $(RTDEPS)): $(DEPDIR)/%.d: %.c @mkdir -p $(dir $@) - $(ECHO) Depending realtime $(threads) $< + $(ECHO) Depending realtime $< $(Q)$(call DEP,$(CC),$@ \ $(patsubst depends/%.d,objects/%.o,$@),$@,$(OPT) \ $(DEBUG) $(CPPFLAGS) $(EXTRA_CFLAGS) $<) # Rules to make .o (object) files $(sort $(RTOBJS)) : $(OBJDIR)/%.o : %.c $(DEPDIR)/%.d - $(ECHO) Compiling realtime $(threads) $< + $(ECHO) Compiling realtime $< @rm -f $@ @mkdir -p $(dir $@) $(Q)$(CC) -c $(OPT) $(DPKG_CFLAGS) $(DEBUG) $(CPPFLAGS) \ diff --git a/src/Makefile.inc.in b/src/Makefile.inc.in index 975ad78e57..edf8da6612 100644 --- a/src/Makefile.inc.in +++ b/src/Makefile.inc.in @@ -1,5 +1,5 @@ # -*-makefile-gmake-*- -# @configure_input@ +# @configure_input@ # on @DATE@ # @@ -53,8 +53,6 @@ exec_prefix=@exec_prefix@ EMC2_HOME=@EMC2_HOME@ LIB_DIR=@EMC2_HOME@/lib -RTDIR_EXT=$(threads) - #used for install stuff #but have them here as reference #build system only uses EMC2_RTLIB_DIR when creating rtapi.ini @@ -62,7 +60,7 @@ EMC2_BIN_DIR=@EMC2_BIN_DIR@ EMC2_TCL_DIR=@EMC2_TCL_DIR@ EMC2_HELP_DIR=@EMC2_HELP_DIR@ EMC2_RTLIB_BASE_DIR=@EMC2_RTLIB_DIR@ -EMC2_RTLIB_DIR=$(EMC2_RTLIB_BASE_DIR)/$(RTDIR_EXT) +EMC2_RTLIB_DIR=$(EMC2_RTLIB_BASE_DIR)/modules EMC2_USER_CONFIG_DIR=~/emc2/configs EMC2_SYSTEM_CONFIG_DIR=@EMC2_SYSTEM_CONFIG_DIR@ EMC2_NCFILES_DIR=@EMC2_NCFILES_DIR@ @@ -401,4 +399,3 @@ BOOST_THREAD_LIB=@BOOST_THREAD_LIB@ BOOST_SYSTEM_LIB=@BOOST_SYSTEM_LIB@ #### END CONFIG #### - diff --git a/src/Makefile.modinc.in b/src/Makefile.modinc.in index bd05553408..1e1cf4e46c 100644 --- a/src/Makefile.modinc.in +++ b/src/Makefile.modinc.in @@ -13,13 +13,13 @@ # An example Makefile using Makefile.modinc to build one kernel module from a # single source file would read: -# +# # obj-m += example.o # include .../Makefile.modinc # An example Makefile using Makefile.modinc to build one kernel module from # several source files would read: -# +# # obj-m += complex.o # complex-objs := complex1.o complex2.o complex_main.o # include .../Makefile.modinc @@ -80,7 +80,7 @@ EXTRA_CFLAGS := $(RTFLAGS) $(EXTRA_RTFLAGS) \ ifeq ($(RUN_IN_PLACE),yes) EXTRA_CFLAGS += -I$(EMC2_HOME)/include -RTLIBDIR := $(EMC2_HOME)/rtlib/$(RTDIR_EXT) +RTLIBDIR := $(EMC2_HOME)/rtlib/modules LIBDIR := $(EMC2_HOME)/lib else EXTRA_CFLAGS += -I$(includedir)/linuxcnc diff --git a/src/hal/components/Submakefile b/src/hal/components/Submakefile index a037240be2..36220b964d 100644 --- a/src/hal/components/Submakefile +++ b/src/hal/components/Submakefile @@ -33,11 +33,6 @@ ifeq ($(BUILD_DOCS),yes) .PHONY: docpages endif -ifeq ($(TRIVIAL_BUILD),no) --include $(patsubst %.comp, objects/%.mak,\ - $(COMPS) $(DRIVER_COMPS) $(MSG_COMPS)) -endif # TRIVIAL_BUILD == no - obj-m += $(patsubst hal/drivers/%.comp, %.o, \ $(patsubst hal/components/%.comp, %.o, \ $(patsubst machinetalk/msgcomponents/%.comp, %.o, \ @@ -76,27 +71,39 @@ $(MSG_COMP_DOCPAGES): ../man/man9/%.asciidoc: \ --frontmatter="edit-branch: $(EDIT_BRANCH)" \ -o $@ $< -# .c and .mak files are identical for all flavors -# -# in the top-level make, build them once in a common location +# Build .c sources objects/%.c: %.comp ../bin/comp $(ECHO) "Preprocessing $(notdir $<)" @mkdir -p $(dir $@) $(Q)../bin/comp --require-license -o $@ $< -objects/%.mak: %.comp $(HALCOMP_SUBMAKEFILE) - $(ECHO) "Generating comp build rules for $(notdir $<)" - @mkdir -p $(dir $@) - $(Q)echo "$(notdir $*)-objs := objects/$*.o" > $@.tmp - $(Q)echo "\$$(RTLIBDIR)/$(notdir $*)\$$(MODULE_EXT): \\" >> $@.tmp - $(Q)echo " \$$(OBJDIR)/objects/$*.o" >> $@.tmp - $(Q)mv -f $@.tmp $@ - -# Generate .c and .mak files before the modules target -modules: $(patsubst %.comp, objects/%.c, \ - $(COMPS) $(DRIVER_COMPS) $(MSG_COMPS)) -modules: $(patsubst %.comp, objects/%.mak, \ - $(COMPS) $(DRIVER_COMPS) $(MSG_COMPS)) +# Generate rules for building component.so files +# logic-objs := objects/hal/components/logic.o +# $(RTLIBDIR)/logic$(MODULE_EXT): $(OBJDIR)/objects/hal/components/logic.o +# +# example: $$(call comp_build_rules,hal/components,hal/components/logic.comp) +# +define comp_build_rules +$$(patsubst $$(dir $(1))%.comp,%-objs,$(1)) := \ + $$(patsubst %.comp,objects/%.o,$(1)) +$$(patsubst $(dir $(1))%.comp,$(RTLIBDIR)/%$(MODULE_EXT),$(1)): \ + $(OBJDIR)/objects/$$(patsubst %.comp,%.o,$(1)) + +endef +# +# For hal/components/*.comp: +$(eval $(foreach comp,$(COMPS),$(call comp_build_rules,$(comp)))) +# +# For hal/drivers/*.comp: +$(eval $(foreach comp,$(DRIVER_COMPS),$(call comp_build_rules,$(comp)))) +# +# For machinetalk/msgcomponents/*.comp: +$(eval $(foreach comp,$(MSG_COMPS),$(call comp_build_rules,$(comp)))) + + +#$$(info $(call comp_build_rules,machinetalk/msgcomponents/remote.comp)) +#$$(info $(patsubst $(dir machinetalk/msgcomponents/remote.comp)%.comp,%-objs,machinetalk/msgcomponents/remote.comp) := $(patsubst %.comp,objects/%.o,machinetalk/msgcomponents/remote.comp)) +#$$(info $(patsubst machinetalk/msgcomponents/%.comp,../rtlib/modules/%.so,machinetalk/msgcomponents/remote.comp): objects/modules/objects/$(patsubst %.comp,%.o,machinetalk/msgcomponents/remote.comp)) HALSTREAMERSRCS := hal/components/streamer_usr.c USERSRCS += $(HALSTREAMERSRCS) diff --git a/src/hal/i_components/Submakefile b/src/hal/i_components/Submakefile index b696a368a6..bfbbae9822 100644 --- a/src/hal/i_components/Submakefile +++ b/src/hal/i_components/Submakefile @@ -27,11 +27,6 @@ ifeq ($(BUILD_DOCS),yes) .PHONY: i_docpages endif -ifeq ($(TRIVIAL_BUILD),no) --include $(patsubst %.icomp, $(BASEPWD)/objects/%.mak,\ - $(ICOMPS)) -endif # TRIVIAL_BUILD == no - obj-m += \ $(patsubst hal/i_components/%.icomp, %.o, $(ICOMPS)) @@ -47,27 +42,25 @@ $(ICOMP_DOCPAGES): ../man/man9/%.asciidoc: $(HALICOMPDIR)/%.icomp ../bin/instcom --frontmatter="edit-branch: $(EDIT_BRANCH)" \ -o $@ $< -# .c and .mak files are identical for all flavors -# # build them once in a common location objects/%.c: %.icomp ../bin/instcomp $(ECHO) "Preprocessing $(notdir $<)" @mkdir -p $(dir $@) $(Q)../bin/instcomp --require-license -o $@ $< -objects/%.mak: %.icomp $(HALICOMP_SUBMAKEFILE) - $(ECHO) "Generating icomp build rules for $(notdir $<)" - @mkdir -p $(dir $@) - $(Q)echo "$(notdir $*)-objs := objects/$*.o" > $@.tmp - $(Q)echo "\$$(RTLIBDIR)/$(notdir $*)\$$(MODULE_EXT): \\" >> $@.tmp - $(Q)echo " \$$(OBJDIR)/objects/$*.o" >> $@.tmp - $(Q)mv -f $@.tmp $@ - -# Generate .c and .mak files before the modules target -modules: $(patsubst %.icomp, objects/%.c, \ - $(ICOMPS) ) -modules: $(patsubst %.icomp, objects/%.mak, \ - $(ICOMPS)) +# Generate rules for building i_component.so files +# abs_s32-objs := objects/hal/i_components/abs_s32.o +# $(RTLIBDIR)/abs_s32$(MODULE_EXT): $(OBJDIR)/objects/hal/i_components/abs_s32.o +# +# example: $$(call icomp_build_rules hal/i_components/abs_s32.comp) +define icomp_build_rules +$$(patsubst $(HALICOMPDIR)/%.icomp,%-objs,$(1)) := \ + objects/$$(patsubst %.icomp,%.o,$(1)) +$$(patsubst $(HALICOMPDIR)/%.icomp,$(RTLIBDIR)/%$(MODULE_EXT),$(1)): \ + $(OBJDIR)/objects/$$(patsubst %.icomp,%.o,$(1)) + +endef +$(eval $(foreach icomp,$(ICOMPS),$(call icomp_build_rules,$(icomp)))) # Regenerate conv_*.icomp when below rules are touched $(addprefix hal/i_components/, $(CONVERTERS)): hal/i_components/Submakefile diff --git a/src/rtapi/Submakefile b/src/rtapi/Submakefile index f0b2838d7b..8d7fc79a96 100644 --- a/src/rtapi/Submakefile +++ b/src/rtapi/Submakefile @@ -271,9 +271,6 @@ modules: ../libexec/rtapi_app_$(threads) # USERLAND THREAD STYLES ################################################################## ifeq ($(BUILD_SYS),user-dso) -# Build only during real module build, i.e. when 'make modules -# threads=' -ifeq ($(BUILD_THREAD_MODULES),yes) # the rtapi.so module obj-$(CONFIG_RTAPI) += rtapi_$(threads).o @@ -307,8 +304,6 @@ $(RTLIBDIR)/rtapi_$(threads)$(MODULE_EXT): EXTRA_LDFLAGS += $(RT_LDFLAGS) $(RTLIBDIR)/rtapi_$(threads)$(MODULE_EXT): \ $(addprefix $(OBJDIR)/,$(rtapi_$(threads)-objs)) -endif # BUILD_THREAD_MODULES - ################################################################## # KERNEL THREAD STYLES diff --git a/src/rtapi/shmdrv/Submakefile b/src/rtapi/shmdrv/Submakefile index 3948c947c5..87ef3d0885 100644 --- a/src/rtapi/shmdrv/Submakefile +++ b/src/rtapi/shmdrv/Submakefile @@ -1,7 +1,7 @@ ################################################################## # the shmdrv shared memory allocator module # -# loosely based on: http://www.embrisk.com/notes/shmem.html +# loosely based on: http://www.embrisk.com/notes/shmem.html # Status: public domain # ################################################################## @@ -23,7 +23,7 @@ endif # BUILD_SYS = kbuild # shmdrv module # # build for all kernels in SHMDRV_KERNEL_DIRS -ifeq ($(BUILD_ALL_FLAVORS)+$(USE_SHMDRV),yes+yes) +ifeq ($(USE_SHMDRV),yes) # we have no mapping of kver to kdir, so use a timestamp and do the # whole thing in a big ugly non-Makefile-thonic shell script SHMDRV_SRCS = rtapi/shmdrv/shmdrv.c \ @@ -47,7 +47,7 @@ objects/.shmdrv-built: $(SHMDRV_SRCS) touch $@ modules: objects/.shmdrv-built -endif # BUILD_ALL_FLAVORS && USE_SHMDRV +endif # USE_SHMDRV #------------------------------ # liblinuxcncshm.so shared lib @@ -65,7 +65,7 @@ $(SHMDRVLIB).0: $(call TOOBJS, $(SHMDRVAPISRCS)) @rm -f $@ $(Q)$(CC) $(LDFLAGS) -Wl,-soname,$(notdir $@) -shared \ -o $@ $^ -lrt -USERSRCS += $(SHMDRVAPISRCS) +USERSRCS += $(SHMDRVAPISRCS) TARGETS += $(SHMDRVLIB) $(SHMDRVLIB).0 ifeq ($(BUILD_EXAMPLES),yes) From 1259ca9b685114353ebb010602af2178d76de250 Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 17 Dec 2018 21:55:24 +0800 Subject: [PATCH 444/516] Remove "Separate sources hack" Not needed now that flavors are folded together --- src/rtapi/Submakefile | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/src/rtapi/Submakefile b/src/rtapi/Submakefile index 8d7fc79a96..c4bba55539 100644 --- a/src/rtapi/Submakefile +++ b/src/rtapi/Submakefile @@ -14,25 +14,6 @@ INCLUDES += rtapi rtapi_export @mkdir -p ../include/shmdrv $(Q)cp $^ $@ -########################################## -# Separate sources hack -# -# ulapi.so needs sources to be built separately for each flavor. The -# Makefile rules, and TOOBJS & friends, always build the same source -# file into the same object file. -# -# Hack around this by creating a symlink 'rtapi/' that points -# back to the rtapi directory. Then the same source can be referred -# to as 'rtapi//foo.c' or 'rtapi//foo.c', and thus -# be built into separate object files. - -rtapi/$(threads)/%: rtapi/.flavor-$(threads)-link-create-stamp - @: # do nothing - -rtapi/.flavor-$(threads)-link-create-stamp: - ln -s . rtapi/$(threads) - @touch $@ - ########################################## # Clean up modclean: modclean-rtapi From 9ee78a1a588ce4dc0b2fd5e2091f42d2bca9b4cc Mon Sep 17 00:00:00 2001 From: John Morris Date: Tue, 18 Dec 2018 17:50:29 +0800 Subject: [PATCH 445/516] Start unifying C; redo component build make rules Rename `rtapi.so` to `rtapi_$(threads).so` Only build one `ulapi.so` module Fix `rtapi_app_$(threads)` builds Add macro to build C components: A bunch of component builds broke, so a make macro now builds them with abbreviated syntax; move rules into Submakefiles where possible Remove a lot of kernel threads stuff: - Remove rules in build system - In C code, remove a lot of `#ifdef MODULE` sections for kthreads - In C code, remove a lot of `#if defined(BUILD_SYS_KBUILD)` - Remove rtapi `rtapi_module.c`, `xenomai-kernel.*`, for kthreads Remove empty `$(MATHSTUB)` make variable, perhaps left over from kthreads days --- src/Makefile | 590 ++----------------------- src/emc/kinematics/Submakefile | 43 ++ src/emc/tp/Submakefile | 27 +- src/hal/classicladder/Submakefile | 15 + src/hal/components/Submakefile | 39 +- src/hal/drivers/Submakefile | 128 +++++- src/hal/lib/Submakefile | 2 +- src/hal/sample_channel/Submakefile | 2 + src/hal/simdrivers/Submakefile | 4 +- src/hal/support/Submakefile | 3 + src/hal/userfunct-example/Submakefile | 10 +- src/hal/utils/Submakefile | 3 + src/hal/vtable-example/Submakefile | 18 +- src/rtapi/Submakefile | 108 +++-- src/rtapi/rtai-kernel.c | 230 ---------- src/rtapi/rtai-kernel.h | 49 --- src/rtapi/rtapi.h | 41 +- src/rtapi/rtapi_common.c | 142 +----- src/rtapi/rtapi_common.h | 49 +-- src/rtapi/rtapi_compat.h | 10 - src/rtapi/rtapi_ctype.h | 4 - src/rtapi/rtapi_errno.h | 5 - src/rtapi/rtapi_heap.c | 7 +- src/rtapi/rtapi_hexdump.c | 14 - src/rtapi/rtapi_io.h | 17 +- src/rtapi/rtapi_math/k_standard.c | 39 +- src/rtapi/rtapi_math/mathP.h | 44 +- src/rtapi/rtapi_module.c | 594 -------------------------- src/rtapi/rtapi_shmem.c | 367 +--------------- src/rtapi/rtapi_string.h | 24 -- src/rtapi/rtapi_support.c | 23 +- src/rtapi/rtapi_task.c | 194 +-------- src/rtapi/rtapi_time.c | 18 +- src/rtapi/xenomai-common.h | 1 - src/rtapi/xenomai-kernel.c | 330 -------------- src/rtapi/xenomai-kernel.h | 57 --- src/rtapi/xenomai.c | 10 +- 37 files changed, 427 insertions(+), 2834 deletions(-) create mode 100644 src/hal/sample_channel/Submakefile delete mode 100644 src/rtapi/rtai-kernel.c delete mode 100644 src/rtapi/rtai-kernel.h delete mode 100644 src/rtapi/rtapi_module.c delete mode 100644 src/rtapi/xenomai-common.h delete mode 100644 src/rtapi/xenomai-kernel.c delete mode 100644 src/rtapi/xenomai-kernel.h diff --git a/src/Makefile b/src/Makefile index c856c1cd14..34eaf78d65 100755 --- a/src/Makefile +++ b/src/Makefile @@ -119,9 +119,7 @@ cc-option = $(shell \ ############################################################################################# -ifeq ($(KERNELRELEASE),) -# When KERNELRELEASE is not defined, this is the userspace build. -# The "modules" target is the gateway to the kernel module build. + default: configs userspace modules # Print 'entering' all the time @@ -184,6 +182,7 @@ SUBDIRS := \ hal/user_comps/vfdb_vfd \ hal/user_comps/huanyang-vfd \ hal/user_comps/xhc-whb04b-6 \ + hal/sample_channel \ hal/classicladder \ hal/utils \ hal \ @@ -244,6 +243,23 @@ TODEPS = $(patsubst %.cc,depends/%$(2).d,$(patsubst %.c,depends/%$(2).d,$(1))) TOOBJSDEPS = $(call TOOBJS,$(1),$(2)) $(call TODEPS, $(1),$(2)) +# This macro generates build rules for C components +# Example call & resulting rules: +# $$(call c_comp_build_rules,hal/components/encoder.o,hal/components/othersrc.o) +# obj-m += encoder.o +# encoder-objs := hal/components/encoder.o hal/components/othersrc.o +# $(RTLIBDIR)/encoder$(MODULE_EXT): \ +# hal/components/encoder.o hal/components/othersrc.o +define c_comp_build_rules +obj-m += $$(patsubst $$(dir $(1))%.o,%.o,$(1)) +$$(patsubst $$(dir $(1))%.o,%-objs,$(1)) := $(1) $(2) +$$(patsubst $$(dir $(1))%.o,$(RTLIBDIR)/%$(MODULE_EXT),$(1)): \ + $$(addprefix $(OBJDIR)/,$(1) $(2)) + +endef +# Debugging +#$$(info $(call c_comp_build_rules,hal/components/encoderv2.o)) + SUBMAKEFILES := $(patsubst %,%/Submakefile,$(SUBDIRS)) #$(info SUBMAKEFILES=$(SUBMAKEFILES)) -include $(wildcard $(SUBMAKEFILES)) @@ -688,40 +704,11 @@ userspace: python clean: pythonclean cscopeclean endif -# This is the gateway into the crazy world of "kbuild", the linux 2.6 system -# for building kernel modules. Other kernel module build styles need to be -# accomodated here. - -# It looks almost impossible to coerce kbuild into putting build -# artifacts outside the source tree. The universal build needs to -# keep these artifacts separate for each kthread flavor. To solve -# this, create a link tree in objects/rtapi- with everything -# needed to build kernel modules. -# -# Then in the above 'modules:' target, cd to the link tree and call -# kbuild. -MODULE_SOURCE_DIRS = emc hal libnml rtapi workaround machinetalk -MODULE_SOURCES = Makefile* config* modsilent.py -$(OBJDIR)/.separate-kbuild-artifacts-hack.stamp: - mkdir -p $(OBJDIR) - # hard-link contents of $(MODULE_SOURCE_DIRS) to # $(OBJDIR) - # never follow symbolic links - cp -rlfd $(MODULE_SOURCE_DIRS) $(OBJDIR) - cp -lf $(MODULE_SOURCES) $(OBJDIR) - ln -sf $(BASEPWD)/../bin $(OBJDIR)/.. - ln -sf $(BASEPWD)/../scripts $(OBJDIR)/.. - touch $@ - # These rules clean things up. 'modclean' cleans files generated by 'modules' # (except that it doesn't remove the modules that were copied to rtlib) # 'clean' cleans everything but dependency files, and 'depclean' cleans them # too. modclean: - find -name '.*.cmd' -or -name '*.ko' -or -name '*.mod.c' -or -name '*.mod.o' | xargs rm -f - -rm -rf .tmp_versions - -rm -rf halcomp-srcs - find . -name .tmp_versions |xargs rm -rf - -rm -f $(RTLIBDIR)/*.ko -rm -f $(RTLIBDIR)/*.so depclean: @@ -1101,8 +1088,6 @@ $(call CONFILES,core_sim.hal): %/core_sim.hal: ../configs/common/core_sim.hal $(call CONFILES,core_sim9.hal): %/core_sim9.hal: ../configs/common/core_sim9.hal $(Q)-cp $< $@ -endif # userspace - ################################################################################################################# EXTRA_CFLAGS = $(RTFLAGS) \ @@ -1134,389 +1119,14 @@ ifdef TARGET_PLATFORM_BEAGLEBONE EXTRA_CFLAGS += -I$(INCLUDE_PREFIX)/hal/support/pru endif -# For each module, there's an addition to obj-m or obj-$(CONFIG_foo) -# plus a definition of foo-objs, which contains the full path to the -# object file(s) that the module contains. Unfortunately, this setup pollutes -# the source directory with object files and other temporaries, but I can't -# find a way around it. - -# These lists would be best moved to their respective subdirectories' -# Submakefiles to make this more modular and avoid maintaining -# multiple lists of the same things. This won't work as-is right now -# because the Submakefiles are included in a conditional block that is -# not evaluated during kernel module build. - -# Subdirectory: rtapi - -# obj-$(CONFIG_RTAPI) += rtapi.o - -# # Sources for all thread systems -# rtapi-objs := \ -# rtapi/instance.o \ -# rtapi/rtapi_support.o \ -# rtapi/rtapi_common.o \ -# rtapi/rtapi_task.o \ -# rtapi/rtapi_shmem.o \ -# rtapi/rtapi_ring.o \ -# rtapi/rtapi_time.o \ -# rtapi/rtapi_io.o \ -# rtapi/$(THREADS_SOURCE).o - -# Subdirectory: rtapi/examples (unneeded?) - -# Subdirectory: hal/components -#obj-$(CONFIG_BOSS_PLC) += boss_plc.o -#boss_plc-objs := hal/components/boss_plc.o $(MATHSTUB) -obj-$(CONFIG_ENCODER) += encoder.o -encoder-objs := hal/components/encoder.o $(MATHSTUB) - -obj-$(CONFIG_ENCODER) += encoderv2.o -encoderv2-objs := hal/components/encoderv2.o $(MATHSTUB) - -obj-$(CONFIG_COUNTER) += counter.o -counter-objs := hal/components/counter.o $(MATHSTUB) -obj-$(CONFIG_ENCODER_RATIO) += encoder_ratio.o -encoder_ratio-objs := hal/components/encoder_ratio.o $(MATHSTUB) -obj-$(CONFIG_ENCODER_RATIO) += encoder_ratiov2.o -encoder_ratiov2-objs := hal/components/encoder_ratiov2.o $(MATHSTUB) -obj-$(CONFIG_STEPGEN) += stepgen.o -stepgen-objs := hal/components/stepgen.o $(MATHSTUB) -obj-$(CONFIG_STEPGEN) += stepgenv2.o -stepgenv2-objs := hal/components/stepgenv2.o $(MATHSTUB) -obj-$(CONFIG_LCD) += lcd.o -lcd-objs := hal/components/lcd.o $(MATHSTUB) -obj-$(CONFIG_MATRIX_KB) += matrix_kb.o -matrix_kb-objs := hal/components/matrix_kb.o $(MATHSTUB) -obj-$(CONFIG_MUX_GENERIC) += mux_generic.o -mux_generic-objs := hal/components/mux_generic.o $(MATHSTUB) -obj-$(CONFIG_PWMGEN) += pwmgen.o -pwmgen-objs := hal/components/pwmgen.o $(MATHSTUB) -obj-$(CONFIG_PWMGEN) += pwmgenv2.o -pwmgenv2-objs := hal/components/pwmgenv2.o $(MATHSTUB) -obj-$(CONFIG_SIGGEN) += siggen.o -siggen-objs := hal/components/siggen.o $(MATHSTUB) -obj-$(CONFIG_PID) += threads.o -threads-objs := hal/components/threads.o $(MATHSTUB) -#obj-$(CONFIG_SUPPLY) += supply.o -#supply-objs := hal/components/supply.o $(MATHSTUB) -obj-$(CONFIG_SIM_ENCODER) += sim_encoder.o -sim_encoder-objs := hal/components/sim_encoder.o $(MATHSTUB) -#obj-$(CONFIG_WATCHDOG) += watchdog.o -#watchdog-objs := hal/components/watchdog.o $(MATHSTUB) -#obj-$(CONFIG_MODMATH) += modmath.o -#modmath-objs := hal/components/modmath.o $(MATHSTUB) -obj-$(CONFIG_STREAMER) += streamer.o -streamer-objs := hal/components/streamer.o $(MATHSTUB) -obj-$(CONFIG_SAMPLER) += sampler.o -sampler-objs := hal/components/sampler.o $(MATHSTUB) - -# Subdirectory: hal/support -ifdef TARGET_PLATFORM_BEAGLEBONE -ifeq ($(BUILD_SYS),user-dso) -obj-m += hal_pru.o -hal_pru-objs := hal/components/hal_pru.o hal/support/pru/prussdrv.o $(LIBPTHREAD) -obj-m += hal_prudebug.o -hal_prudebug-objs := hal/components/hal_prudebug.o hal/support/pru/prussdrv.o $(LIBPTHREAD) -endif -endif - -# Subdirectory: hal/drivers -ifeq ($(BUILD_DRIVERS),yes) -#ifeq ($(BUILD_SYS),kbuild) -obj-$(CONFIG_HAL_PARPORT) += hal_parport.o -hal_parport-objs := hal/drivers/hal_parport.o $(MATHSTUB) -obj-$(CONFIG_PCI_8255) += pci_8255.o -pci_8255-objs := hal/drivers/pci_8255.o -obj-$(CONFIG_HAL_TIRO) += hal_tiro.o -hal_tiro-objs := hal/drivers/hal_tiro.o $(MATHSTUB) -obj-$(CONFIG_HAL_STG) += hal_stg.o -hal_stg-objs := hal/drivers/hal_stg.o $(MATHSTUB) -obj-$(CONFIG_HAL_VTI) += hal_vti.o -hal_vti-objs := hal/drivers/hal_vti.o $(MATHSTUB) -#obj-$(CONFIG_HAL_EVOREG) += hal_evoreg.o -#hal_evoreg-objs := hal/drivers/hal_evoreg.o $(MATHSTUB) -obj-$(CONFIG_HAL_MOTENC) += hal_motenc.o -hal_motenc-objs := hal/drivers/hal_motenc.o $(MATHSTUB) -obj-$(CONFIG_HAL_AX521H) += hal_ax5214h.o -hal_ax5214h-objs := hal/drivers/hal_ax5214h.o $(MATHSTUB) -obj-$(CONFIG_HAL_SPEAKER) += hal_speaker.o -hal_speaker-objs := hal/drivers/hal_speaker.o $(MATHSTUB) -obj-$(CONFIG_HAL_SKELETON) += hal_skeleton.o -hal_skeleton-objs := hal/drivers/hal_skeleton.o $(MATHSTUB) - -ifdef TARGET_PLATFORM_RASPBERRY -obj-$(CONFIG_HAL_GPIO) += hal_gpio.o -hal_gpio-objs := hal/drivers/hal_gpio.o hal/drivers/cpuinfo.o -obj-$(CONFIG_HAL_SPI) += hal_spi.o -hal_spi-objs := hal/drivers/hal_spi.o -endif - -ifdef TARGET_PLATFORM_SOCFPGA -ifeq ($(BUILD_SYS),user-dso) -obj-$(CONFIG_HM2_SOC_OL) += hm2_soc_ol.o -hm2_soc_ol-objs := hal/drivers/mesa-hostmot2/hm2_soc_ol.o -endif -endif - -ifdef TARGET_PLATFORM_BEAGLEBONE -ifeq ($(BUILD_SYS),user-dso) -obj-$(CONFIG_HAL_GPIO) += hal_bb_gpio.o -hal_bb_gpio-objs := hal/drivers/hal_bb_gpio/hal_bb_gpio.o -obj-$(CONFIG_PEPPER) += pepper.o -pepper-objs := hal/components/pepper.o $(MATHSTUB) -# Silence warning in GCC 4.4 -$(OBJDIR)/hal/components/pepper.o: EXTRA_CFLAGS += -Wno-packed-bitfield-compat -endif - -obj-m += hal_arm335xQEP.o -hal_arm335xQEP-objs := hal/drivers/hal_arm335xQEP.o $(MATHSTUB) -endif - -ifdef TARGET_PLATFORM_H3 -obj-$(CONFIG_HAL_GPIO) += hal_gpio_h3.o -hal_gpio_h3-objs := hal/drivers/hal_gpio_h3.o -endif - -ifdef TARGET_PLATFORM_CHIP -obj-$(CONFIG_HAL_GPIO) += hal_chip_gpio.o -hal_chip_gpio-objs := hal/drivers/hal_chip_gpio.o hal/drivers/chip/mmap_gpio.o -endif - -ifdef TARGET_PLATFORM_ZEDBOARD -obj-$(CONFIG_HAL_GPIO) += hal_zed_gpio.o -hal_zed_gpio-objs := hal/drivers/hal_zed_gpio.o -obj-$(CONFIG_HAL_CAN) += hal_zed_can.o -hal_zed_can-objs := hal/drivers/hal_zed_can.o -endif - -# hal_pru_generic driver -ifdef TARGET_PLATFORM_BEAGLEBONE -ifeq ($(BUILD_SYS),user-dso) -obj-m += hal_pru_generic.o -hal_pru_generic-objs := \ - hal/drivers/hal_pru_generic/hal_pru_generic.o \ - hal/drivers/hal_pru_generic/pwmgen.o \ - hal/drivers/hal_pru_generic/stepgen.o \ - hal/drivers/hal_pru_generic/encoder.o \ - hal/support/pru/prussdrv.o \ - $(LIBPTHREAD) -endif -endif - -# these won't compile as-is with userland threading -###################################################### -#ifneq ($(BUILD_SYS),user-dso) -#obj-$(CONFIG_HAL_M5I20) += hal_m5i20.o -#hal_m5i20-objs := hal/drivers/hal_m5i20.o $(MATHSTUB) -#obj-$(CONFIG_HAL_PPMC) += hal_ppmc.o -#hal_ppmc-objs := hal/drivers/hal_ppmc.o $(MATHSTUB) -#obj-$(CONFIG_OPTO_AC5) += opto_ac5.o -#opto_ac5-objs := hal/drivers/opto_ac5.o $(MATHSTUB) -#obj-$(CONFIG_HAL_GM) += hal_gm.o -#hal_gm-objs := hal/drivers/hal_gm.o $(MATHSTUB) -#endif -#################################################### - -# Gnu make 'expression' syntax is pathetic. What were these guys smoking? -# turn on by default -BUILD_HOSTMOT2=yes -ifeq ($(USERMODE_PCI),yes) -# reconfirm our intent.. -BUILD_HOSTMOT2=yes -else -#except if userland and USERMODE_PCI isnt set -ifeq ($(BUILD_SYS),user-dso) -BUILD_HOSTMOT2=no -endif -endif - -ifeq ($(BUILD_HOSTMOT2),yes) -obj-$(CONFIG_HOSTMOT2) += hostmot2.o hm2_7i43.o hm2_7i90.o hm2_pci.o hm2_test.o setsserial.o -ifeq ($(BUILD_SYS),user-dso) -obj-$(CONFIG_HOSTMOT2) += hm2_eth.o -hm2_eth-objs := \ - hal/drivers/mesa-hostmot2/hm2_eth.o \ - $(MATHSTUB) -endif -#obj-$(CONFIG_HOSTMOT2) += hostmot2.o hm2_pci.o hm2_7i43.o -hostmot2-objs += \ - hal/drivers/mesa-hostmot2/hostmot2.o \ - hal/drivers/mesa-hostmot2/backported-strings.o \ - hal/drivers/mesa-hostmot2/ioport.o \ - hal/drivers/mesa-hostmot2/encoder.o \ - hal/drivers/mesa-hostmot2/abs_encoder.o\ - hal/drivers/mesa-hostmot2/resolver.o \ - hal/drivers/mesa-hostmot2/pwmgen.o \ - hal/drivers/mesa-hostmot2/tp_pwmgen.o \ - hal/drivers/mesa-hostmot2/sserial.o \ - hal/drivers/mesa-hostmot2/stepgen.o \ - hal/drivers/mesa-hostmot2/bspi.o \ - hal/drivers/mesa-hostmot2/uart.o \ - hal/drivers/mesa-hostmot2/pktuart.o \ - hal/drivers/mesa-hostmot2/watchdog.o \ - hal/drivers/mesa-hostmot2/pins.o \ - hal/drivers/mesa-hostmot2/dpll.o \ - hal/drivers/mesa-hostmot2/irq.o \ - hal/drivers/mesa-hostmot2/led.o \ - hal/drivers/mesa-hostmot2/fwid.o \ - hal/drivers/mesa-hostmot2/tram.o \ - hal/drivers/mesa-hostmot2/raw.o \ - hal/drivers/mesa-hostmot2/nano_soc_adc.o \ - hal/drivers/mesa-hostmot2/capsense.o \ - hal/drivers/mesa-hostmot2/bitfile.o \ - $(MATHSTUB) -hm2_7i90-objs := \ - hal/drivers/mesa-hostmot2/hm2_7i90.o \ - hal/drivers/mesa-hostmot2/bitfile.o \ - $(MATHSTUB) -hm2_7i43-objs := \ - hal/drivers/mesa-hostmot2/hm2_7i43.o \ - hal/drivers/mesa-hostmot2/bitfile.o \ - $(MATHSTUB) -hm2_pci-objs := \ - hal/drivers/mesa-hostmot2/hm2_pci.o \ - hal/drivers/mesa-hostmot2/bitfile.o \ - $(MATHSTUB) -hm2_test-objs := \ - hal/drivers/mesa-hostmot2/hm2_test.o \ - hal/drivers/mesa-hostmot2/bitfile.o \ - $(MATHSTUB) -setsserial-objs += \ - hal/drivers/mesa-hostmot2/setsserial.o \ - $(MATHSTUB) -endif - -ifeq ($(BUILD_HOSTMOT2),yes) -obj-$(CONFIG_HOSTMOT2) += hm2_pci.o -hm2_pci-objs := \ - hal/drivers/mesa-hostmot2/hm2_pci.o \ - hal/drivers/mesa-hostmot2/bitfile.o \ - $(MATHSTUB) -endif - -obj-$(CONFIG_PROBE_PARPORT) += probe_parport.o -probe_parport-objs := hal/drivers/probe_parport.o $(MATHSTUB) -endif - -obj-$(CONFIG_CLASSICLADDER_RT) += classicladder_rt.o -classicladder_rt-objs := hal/classicladder/module_hal.o $(MATHSTUB) -classicladder_rt-objs += hal/classicladder/arithm_eval.o -classicladder_rt-objs += hal/classicladder/arrays.o -classicladder_rt-objs += hal/classicladder/calc.o -classicladder_rt-objs += hal/classicladder/calc_sequential.o -classicladder_rt-objs += hal/classicladder/manager.o -classicladder_rt-objs += hal/classicladder/symbols.o -classicladder_rt-objs += hal/classicladder/vars_access.o - -ifdef SEQUENTIAL_SUPPORT -classicladder_rt-objs += hal/classicladder/calc_sequential_rt.o -endif - -obj-m += scope_rt.o -scope_rt-objs := hal/utils/scope_rt.o $(MATHSTUB) - - -obj-m += trivkins.o -trivkins-objs := emc/kinematics/trivkins.o - -obj-m += XYZACkins.o -XYZACkins-objs := emc/kinematics/XYZACkins.o - -obj-m += 5axiskins.o -5axiskins-objs := emc/kinematics/5axiskins.o - -obj-m += maxkins.o -maxkins-objs := emc/kinematics/maxkins.o - -obj-m += gantrykins.o -gantrykins-objs := emc/kinematics/gantrykins.o - -obj-m += rotatekins.o -rotatekins-objs := emc/kinematics/rotatekins.o - -obj-m += tripodkins.o -tripodkins-objs := emc/kinematics/tripodkins.o - -obj-m += itripodkins.o -itripodkins-objs := emc/kinematics/itripodkins.o - -obj-m += lineardeltakins.o -lineardeltakins-objs := emc/kinematics/lineardeltakins.o - -obj-m += genhexkins.o -genhexkins-objs := emc/kinematics/genhexkins.o -genhexkins-objs += libnml/posemath/_posemath.o -genhexkins-objs += libnml/posemath/sincos.o $(MATHSTUB) - -obj-m += genserkins.o -genserkins-objs := emc/kinematics/genserkins.o -genserkins-objs += libnml/posemath/gomath.o -genserkins-objs += libnml/posemath/sincos.o $(MATHSTUB) - -obj-m += drawbotkins.o -drawbotkins-objs := emc/kinematics/drawbotkins.o -drawbotkins-objs += libnml/posemath/gomath.o -drawbotkins-objs += libnml/posemath/sincos.o $(MATHSTUB) - -obj-m += pumakins.o -pumakins-objs := emc/kinematics/pumakins.o -pumakins-objs += libnml/posemath/_posemath.o -pumakins-objs += libnml/posemath/sincos.o $(MATHSTUB) - -obj-m += scarakins.o -scarakins-objs := emc/kinematics/scarakins.o -scarakins-objs += libnml/posemath/_posemath.o -scarakins-objs += libnml/posemath/sincos.o $(MATHSTUB) - -obj-$(CONFIG_MOTMOD) += motmod.o -motmod-objs := emc/kinematics/cubic.o -motmod-objs += emc/motion/motion.o -motmod-objs += emc/motion/command.o -motmod-objs += emc/motion/control.o -motmod-objs += emc/motion/homing.o -motmod-objs += emc/motion/emcmotglb.o -motmod-objs += emc/motion/emcmotutil.o -motmod-objs += emc/motion/stashf.o -motmod-objs += emc/motion/dbuf.o -motmod-objs += libnml/posemath/_posemath.o -motmod-objs += libnml/posemath/sincos.o $(MATHSTUB) - -# obj-m += vtexport.o -# vtexport-objs := hal/vtable-example/vtexport.o -# vtexport-objs += hal/vtable-example/vcode.o - -obj-m += jplan.o -jplan-objs := hal/jplanner/jplan.o machinetalk/build/machinetalk/protobuf/jplan.npb.o - -obj-m += sample_channel_pb.o -sample_channel_pb-objs := hal/sample_channel/sample_channel_pb.o machinetalk/build/machinetalk/protobuf/sample.npb.o - -obj-m += interpolate.o -interpolate-objs := hal/interpolator/interpolate.o machinetalk/build/machinetalk/protobuf/ros.npb.o - -obj-m += icomp.o -icomp-objs := hal/icomp-example/icomp.o - +################################################################################ +# Misc C components in directories with no Submakefile +$(eval $(call c_comp_build_rules,hal/jplanner/jplan.o)) +$(eval $(call c_comp_build_rules,hal/interpolator/interpolate.o, \ + machinetalk/build/machinetalk/protobuf/ros.npb.o)) +$(eval $(call c_comp_build_rules,hal/icomp-example/icomp.o)) # clashes with component in i_components -obj-m += lutn-demo.o -lutn-demo-objs := hal/icomp-example/lutn-demo.o - -obj-m += ufdemo.o -ufdemo-objs := hal/userfunct-example/ufdemo.o - -obj-m += tp.o -tp-objs := $(addprefix emc/tp/, \ - tc.o \ - tcq.o \ - tp.o \ - tpmain.o \ - blendmath.o \ - spherical_arc.o \ - ) \ - emc/nml_intf/emcpose.o \ - libnml/posemath/_posemath.o \ - libnml/posemath/sincos.o $(MATHSTUB) - +$(eval $(call c_comp_build_rules,hal/icomp-example/lutn-demo.o)) TORTOBJS = $(foreach file,$($(patsubst %.o,%,$(1))-objs), $(OBJDIR)/$(file)) @@ -1653,154 +1263,6 @@ $(sort $(CXXRTOBJS)) : $(OBJDIR)/%.o : %.cc $(DEPDIR)/%.d endif # end BUILD_SYS=user-dso -#################################################################################################################################################### - -# # ------ not used anymore ------------- -# ifeq ($(BUILD_SYS),normal) -# modules: $(patsubst %,$(RTLIBDIR)/%,$(obj-m)) -# RTOBJS := $(sort $(foreach mod,$(obj-m),$(call TORTOBJS,$(mod)))) -# RTDEPS := $(sort $(patsubst objects/%.o,depends/%.d, $(RTOBJS))) - -# $(sort $(RTDEPS)): $(DEPDIR)/%.d: %.c -# @mkdir -p $(dir $@) -# $(ECHO) Depending $< -# $(Q)$(call DEP,$(CC),$@ $(patsubst depends/%.d,objects/%.o,$@),$@,$(EXTRA_CFLAGS) $<) - - -# # Rules to make .o (object) files -# $(sort $(RTOBJS)) : $(OBJDIR)/%.o : %.c -# $(ECHO) Compiling realtime $< -# @mkdir -p $(dir $@) -# $(Q)$(CC) -c -DRTAPI -nostdinc -isystem $(shell $(CC) -print-file-name=include) -I$(KERNELDIR)/include $(EXTRA_CFLAGS) $< -o $@ - -# $(RTLIBDIR)/%.o: -# $(ECHO) Linking $@ -# $(Q)ld -r -static -S $(LDFLAGS) -o $@ $^ $(EXTRALINK) -# endif # end 'normal' - -############################################################################################## - -# build kernel RTAPI modules -ifneq "$(filter normal user-dso,$(BUILD_SYS))" "" -#$(RTLIBDIR)/instance$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(instance-objs)) -#$(RTLIBDIR)/rtapi$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(rtapi-objs)) -$(RTLIBDIR)/classicladder_rt$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(classicladder_rt-objs)) -$(RTLIBDIR)/boss_plc$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(boss_plc-objs)) -$(RTLIBDIR)/encoder$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(encoder-objs)) -$(RTLIBDIR)/encoderv2$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(encoderv2-objs)) -$(RTLIBDIR)/counter$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(counter-objs)) -$(RTLIBDIR)/encoder_ratio$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(encoder_ratio-objs)) -$(RTLIBDIR)/encoder_ratiov2$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(encoder_ratiov2-objs)) -$(RTLIBDIR)/stepgen$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(stepgen-objs)) -$(RTLIBDIR)/stepgenv2$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(stepgenv2-objs)) -$(RTLIBDIR)/lcd$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(lcd-objs)) -$(RTLIBDIR)/matrix_kb$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(matrix_kb-objs)) -$(RTLIBDIR)/mux_generic$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(mux_generic-objs)) -$(RTLIBDIR)/freqgen$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(freqgen-objs)) -$(RTLIBDIR)/pwmgen$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(pwmgen-objs)) -$(RTLIBDIR)/pwmgenv2$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(pwmgenv2-objs)) -$(RTLIBDIR)/siggen$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(siggen-objs)) -$(RTLIBDIR)/at_pid$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(at_pid-objs)) -$(RTLIBDIR)/threads$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(threads-objs)) -$(RTLIBDIR)/supply$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(supply-objs)) -$(RTLIBDIR)/sim_encoder$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(sim_encoder-objs)) -$(RTLIBDIR)/watchdog$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(watchdog-objs)) -$(RTLIBDIR)/modmath$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(modmath-objs)) -$(RTLIBDIR)/streamer$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(streamer-objs)) -$(RTLIBDIR)/sampler$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(sampler-objs)) -$(RTLIBDIR)/hal_parport$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_parport-objs)) -$(RTLIBDIR)/probe_parport$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(probe_parport-objs)) - -ifeq ($(USERMODE_PCI),yes) -$(RTLIBDIR)/hostmot2$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hostmot2-objs)) -$(RTLIBDIR)/hm2_7i43$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_7i43-objs)) -$(RTLIBDIR)/hm2_7i90$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_7i90-objs)) -$(RTLIBDIR)/hm2_pci$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_pci-objs)) -$(RTLIBDIR)/setsserial$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(setsserial-objs)) -$(RTLIBDIR)/hm2_eth$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_eth-objs)) -$(RTLIBDIR)/hm2_test$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_test-objs)) -endif - -ifdef TARGET_PLATFORM_SOCFPGA -$(RTLIBDIR)/hostmot2$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hostmot2-objs)) -$(RTLIBDIR)/hm2_soc_ol$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_soc_ol-objs)) -endif - -ifdef TARGET_PLATFORM_BEAGLEBONE -$(RTLIBDIR)/hal_pru$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_pru-objs)) -$(RTLIBDIR)/hal_pru_generic$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_pru_generic-objs)) -$(RTLIBDIR)/hal_prudebug$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_prudebug-objs)) -$(RTLIBDIR)/hal_gpio$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_gpio-objs)) -$(RTLIBDIR)/hal_bb_gpio$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_bb_gpio-objs)) -$(RTLIBDIR)/pepper$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(pepper-objs)) -$(RTLIBDIR)/hal_arm335xQEP$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_arm335xQEP-objs)) -endif - -ifdef TARGET_PLATFORM_H3 -$(RTLIBDIR)/hal_gpio_h3$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_gpio_h3-objs)) -endif - -ifdef TARGET_PLATFORM_CHIP -$(RTLIBDIR)/hal_chip_gpio$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_chip_gpio-objs)) -endif - -ifdef TARGET_PLATFORM_RASPBERRY -$(RTLIBDIR)/hal_gpio$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_gpio-objs)) -$(RTLIBDIR)/hal_spi$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_spi-objs)) -endif - -ifdef TARGET_PLATFORM_ZEDBOARD -$(RTLIBDIR)/hal_zed_gpio$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_zed_gpio-objs)) -$(RTLIBDIR)/hal_zed_can$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_zed_can-objs)) -endif - -$(RTLIBDIR)/pci_8255$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(pci_8255-objs)) -$(RTLIBDIR)/hal_tiro$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_tiro-objs)) -$(RTLIBDIR)/hal_stg$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_stg-objs)) -$(RTLIBDIR)/hal_vti$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_vti-objs)) -#$(RTLIBDIR)/hal_evoreg$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_evoreg-objs)) -$(RTLIBDIR)/hal_motenc$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_motenc-objs)) -$(RTLIBDIR)/hal_ax5214h$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_ax5214h-objs)) -$(RTLIBDIR)/hal_ppmc$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_ppmc-objs)) -$(RTLIBDIR)/hal_skeleton$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_skeleton-objs)) -$(RTLIBDIR)/hal_speaker$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_speaker-objs)) -$(RTLIBDIR)/opto_ac5$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(opto_ac5-objs)) -$(RTLIBDIR)/scope_rt$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(scope_rt-objs)) -$(RTLIBDIR)/motmod$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(motmod-objs)) -$(RTLIBDIR)/trivkins$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(trivkins-objs)) -$(RTLIBDIR)/XYZACkins$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(XYZACkins-objs)) -$(RTLIBDIR)/5axiskins$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(5axiskins-objs)) -$(RTLIBDIR)/maxkins$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(maxkins-objs)) -$(RTLIBDIR)/gantrykins$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(gantrykins-objs)) -$(RTLIBDIR)/rotatekins$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(rotatekins-objs)) -$(RTLIBDIR)/tripodkins$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(tripodkins-objs)) -$(RTLIBDIR)/itripodkins$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(itripodkins-objs)) -$(RTLIBDIR)/lineardeltakins$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(lineardeltakins-objs)) -$(RTLIBDIR)/genhexkins$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(genhexkins-objs)) -$(RTLIBDIR)/genserkins$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(genserkins-objs)) -$(RTLIBDIR)/drawbotkins$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(drawbotkins-objs)) -$(RTLIBDIR)/pumakins$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(pumakins-objs)) -$(RTLIBDIR)/scarakins$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(scarakins-objs)) -$(RTLIBDIR)/hal_gm$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_gm-objs)) - -$(RTLIBDIR)/tp$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(tp-objs)) -$(RTLIBDIR)/ufdemo$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(ufdemo-objs)) -$(RTLIBDIR)/jplan$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(jplan-objs)) -$(RTLIBDIR)/sample_channel_pb$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(sample_channel_pb-objs)) -$(RTLIBDIR)/interpolate$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(interpolate-objs)) -$(RTLIBDIR)/icomp$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(icomp-objs)) -$(RTLIBDIR)/lutn-demo$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(lutn-demo-objs)) - - -ifeq ($(TRIVIAL_BUILD),no) -READ_RTDEPS = $(wildcard $(RTDEPS)) -$(shell echo 1>&2 Reading $(words $(READ_RTDEPS))/$(words $(RTDEPS)) realtime dependency files) --include $(READ_RTDEPS) -$(shell echo 1>&2 Done reading realtime dependencies) -endif - -endif # build kernel RTAPI modules - ############################################################################################### diff --git a/src/emc/kinematics/Submakefile b/src/emc/kinematics/Submakefile index 8943922fa3..82b5687ae8 100644 --- a/src/emc/kinematics/Submakefile +++ b/src/emc/kinematics/Submakefile @@ -42,3 +42,46 @@ TARGETS += ../bin/drawbotkins ../include/%.hh: ./emc/kinematics/%.hh $(ECHO) Copying header file $@ $(Q)cp $^ $@ + +# C language components +$(eval $(call c_comp_build_rules,emc/kinematics/trivkins.o)) +$(eval $(call c_comp_build_rules,emc/kinematics/XYZACkins.o)) +$(eval $(call c_comp_build_rules,emc/kinematics/5axiskins.o)) +$(eval $(call c_comp_build_rules,emc/kinematics/maxkins.o)) +$(eval $(call c_comp_build_rules,emc/kinematics/gantrykins.o)) +$(eval $(call c_comp_build_rules,emc/kinematics/rotatekins.o)) +$(eval $(call c_comp_build_rules,emc/kinematics/tripodkins.o)) +$(eval $(call c_comp_build_rules,emc/kinematics/itripodkins.o)) +$(eval $(call c_comp_build_rules,emc/kinematics/lineardeltakins.o)) +$(eval $(call c_comp_build_rules,emc/kinematics/genhexkins.o, \ + libnml/posemath/_posemath.o \ + libnml/posemath/sincos.o \ +)) +$(eval $(call c_comp_build_rules,emc/kinematics/genserkins.o, \ + libnml/posemath/gomath.o \ + libnml/posemath/sincos.o \ +)) +$(eval $(call c_comp_build_rules,emc/kinematics/drawbotkins.o, \ + libnml/posemath/gomath.o \ + libnml/posemath/sincos.o \ +)) +$(eval $(call c_comp_build_rules,emc/kinematics/pumakins.o, \ + libnml/posemath/_posemath.o \ + libnml/posemath/sincos.o \ +)) +$(eval $(call c_comp_build_rules,emc/kinematics/scarakins.o, \ + libnml/posemath/_posemath.o \ + libnml/posemath/sincos.o \ +)) +$(eval $(call c_comp_build_rules,emc/kinematics/cubic.o, \ + emc/motion/motion.o \ + emc/motion/command.o \ + emc/motion/control.o \ + emc/motion/homing.o \ + emc/motion/emcmotglb.o \ + emc/motion/emcmotutil.o \ + emc/motion/stashf.o \ + emc/motion/dbuf.o \ + libnml/posemath/_posemath.o \ + libnml/posemath/sincos.o \ +)) diff --git a/src/emc/tp/Submakefile b/src/emc/tp/Submakefile index f954603933..9a9f4ac205 100644 --- a/src/emc/tp/Submakefile +++ b/src/emc/tp/Submakefile @@ -10,20 +10,13 @@ INCLUDES += $(TP_DIR) $(Q)cp $^ $@ -# obj-m += tp.o -# tp-objs := $(addprefix emc/tp/, \ -# tc.o \ -# tcq.o \ -# tp.o \ -# tpmain.o \ -# blendmath.o \ -# spherical_arc.o \ -# ) \ -# emc/nml_intf/emcpose.o \ -# libnml/posemath/_posemath.o \ -# libnml/posemath/sincos.o $(MATHSTUB) - - -# ifneq "$(filter normal user-dso,$(BUILD_SYS))" "" -# $(RTLIBDIR)/tp$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(tp-objs)) -# endif +$(eval $(call c_comp_build_rules,$(TP_DIR)/tp.o, \ + $(TP_DIR)/tcq.o \ + $(TP_DIR)/tc.o \ + $(TP_DIR)/tpmain.o \ + $(TP_DIR)/blendmath.o \ + $(TP_DIR)/spherical_arc.o \ + emc/nml_intf/emcpose.o \ + libnml/posemath/_posemath.o \ + libnml/posemath/sincos.o \ +)) diff --git a/src/hal/classicladder/Submakefile b/src/hal/classicladder/Submakefile index bcf6e13759..3049497120 100644 --- a/src/hal/classicladder/Submakefile +++ b/src/hal/classicladder/Submakefile @@ -50,3 +50,18 @@ USERSRCS += $(CLASSICLADDERSRCS) TARGETS += ../bin/classicladder endif + +# Can't use the macro for this, since there's no classicladder_rt.c file +obj-m += classicladder_rt.o +classicladder_rt-objs := hal/classicladder/module_hal.o +classicladder_rt-objs += hal/classicladder/arithm_eval.o +classicladder_rt-objs += hal/classicladder/arrays.o +classicladder_rt-objs += hal/classicladder/calc.o +classicladder_rt-objs += hal/classicladder/calc_sequential.o +classicladder_rt-objs += hal/classicladder/manager.o +classicladder_rt-objs += hal/classicladder/symbols.o +classicladder_rt-objs += hal/classicladder/vars_access.o +ifdef SEQUENTIAL_SUPPORT +classicladder_rt-objs += hal/classicladder/calc_sequential_rt.o +endif +$(RTLIBDIR)/classicladder_rt.so: $(addprefix $(OBJDIR)/,$(classicladder_rt-objs)) diff --git a/src/hal/components/Submakefile b/src/hal/components/Submakefile index 36220b964d..bf0578b293 100644 --- a/src/hal/components/Submakefile +++ b/src/hal/components/Submakefile @@ -1,9 +1,6 @@ HALCOMP_SUBMAKEFILE= hal/components/Submakefile # for debugging this file - to prevent recompilation of # everything under the sun with every small change -HALCOMP_SUBMAKEFILE= hal/components/Submakefile -# for debugging this file - to prevent recompilation of -# everything under the sun with every small change #HALCOMP_SUBMAKEFILE= COMPS := $(sort $(wildcard hal/components/*.comp)) @@ -78,10 +75,12 @@ objects/%.c: %.comp ../bin/comp $(Q)../bin/comp --require-license -o $@ $< # Generate rules for building component.so files -# logic-objs := objects/hal/components/logic.o -# $(RTLIBDIR)/logic$(MODULE_EXT): $(OBJDIR)/objects/hal/components/logic.o # # example: $$(call comp_build_rules,hal/components,hal/components/logic.comp) +# produces rules: +# logic-objs := objects/hal/components/logic.o +# ../rtlib/modules/remote.so: \ +# objects/modules/objects/machinetalk/msgcomponents/remote.o # define comp_build_rules $$(patsubst $$(dir $(1))%.comp,%-objs,$(1)) := \ @@ -121,9 +120,27 @@ USERSRCS += $(HALSAMPLERSRCS) $(Q)$(CC) $(LDFLAGS) -o $@ $^ TARGETS += ../bin/halsampler -# build instructions for the delayline module -obj-m += delayline.o -# the list of parts -delayline-objs := hal/components/delayline.o $(MATHSTUB) - -$(RTLIBDIR)/delayline$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(delayline-objs)) +# C-language components + +#$$(eval $(call c_comp_build_rules,hal/components/boss_plc.o)) +$(eval $(call c_comp_build_rules,hal/components/encoder.o)) +$(eval $(call c_comp_build_rules,hal/components/encoderv2.o)) +$(eval $(call c_comp_build_rules,hal/components/counter.o)) +$(eval $(call c_comp_build_rules,hal/components/encoder_ratio.o)) +$(eval $(call c_comp_build_rules,hal/components/encoder_ratiov2.o)) +$(eval $(call c_comp_build_rules,hal/components/stepgen.o)) +$(eval $(call c_comp_build_rules,hal/components/stepgenv2.o)) +$(eval $(call c_comp_build_rules,hal/components/lcd.o)) +$(eval $(call c_comp_build_rules,hal/components/matrix_kb.o)) +$(eval $(call c_comp_build_rules,hal/components/mux_generic.o)) +$(eval $(call c_comp_build_rules,hal/components/pwmgen.o)) +$(eval $(call c_comp_build_rules,hal/components/pwmgenv2.o)) +$(eval $(call c_comp_build_rules,hal/components/siggen.o)) +$(eval $(call c_comp_build_rules,hal/components/threads.o)) +#$$(eval $(call c_comp_build_rules,hal/components/supply.o)) +$(eval $(call c_comp_build_rules,hal/components/sim_encoder.o)) +#$$(eval $(call c_comp_build_rules,hal/components/watchdog.o)) +#$$(eval $(call c_comp_build_rules,hal/components/modmath.o)) +$(eval $(call c_comp_build_rules,hal/components/streamer.o)) +$(eval $(call c_comp_build_rules,hal/components/sampler.o)) +$(eval $(call c_comp_build_rules,hal/components/delayline.o)) diff --git a/src/hal/drivers/Submakefile b/src/hal/drivers/Submakefile index b634f340da..0e899938d0 100644 --- a/src/hal/drivers/Submakefile +++ b/src/hal/drivers/Submakefile @@ -47,6 +47,132 @@ INCLUDES += hal/drivers # build instructions for the hal_p260c module obj-m += hal_p260c.o # the list of parts -hal_p260c-objs := hal/drivers/hal_p260c.o $(MATHSTUB) +hal_p260c-objs := hal/drivers/hal_p260c.o $(RTLIBDIR)/hal_p260c$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_p260c-objs)) + +# C-language components +ifeq ($(BUILD_DRIVERS),yes) +$(eval $(call c_comp_build_rules,hal/drivers/hal_parport.o)) +$(eval $(call c_comp_build_rules,hal/drivers/pci_8255.o)) +$(eval $(call c_comp_build_rules,hal/drivers/hal_tiro.o)) +$(eval $(call c_comp_build_rules,hal/drivers/hal_stg.o)) +$(eval $(call c_comp_build_rules,hal/drivers/hal_vti.o)) +#$$(eval $(call c_comp_build_rules,hal/drivers/hal_evoreg.o)) +$(eval $(call c_comp_build_rules,hal/drivers/hal_motenc.o)) +$(eval $(call c_comp_build_rules,hal/drivers/hal_ax5214h.o)) +$(eval $(call c_comp_build_rules,hal/drivers/hal_speaker.o)) +$(eval $(call c_comp_build_rules,hal/drivers/hal_skeleton.o)) + +ifdef TARGET_PLATFORM_RASPBERRY +$(eval $(call c_comp_build_rules,hal/drivers/hal_gpio.o)) +$(eval $(call c_comp_build_rules,hal/drivers/hal_spi.o)) +endif + +ifdef TARGET_PLATFORM_SOCFPGA +$(eval $(call c_comp_build_rules,hal/drivers/mesa-hostmot2/hm2_soc_ol.o)) +endif + +ifdef TARGET_PLATFORM_BEAGLEBONE +$(eval $(call c_comp_build_rules,hal/drivers/hal_bb_gpio/hal_bb_gpio.o)) +$(eval $(call c_comp_build_rules,hal/components/pepper.o)) +# Silence warning in GCC 4.4 +$(OBJDIR)/hal/components/pepper.o: EXTRA_CFLAGS += -Wno-packed-bitfield-compat + +$(eval $(call c_comp_build_rules,hal/drivers/hal_arm335xQEP.o)) +endif + +ifdef TARGET_PLATFORM_H3 +$(eval $(call c_comp_build_rules,hal/drivers/hal_gpio_h3.o)) +endif + +ifdef TARGET_PLATFORM_CHIP +$(eval $(call c_comp_build_rules,hal/drivers/hal_chip_gpio.o)) +endif + +ifdef TARGET_PLATFORM_ZEDBOARD +$(eval $(call c_comp_build_rules,hal/drivers/hal_zed_gpio.o)) +$(eval $(call c_comp_build_rules,hal/drivers/hal_zed_can.o)) +endif + +# hal_pru_generic driver +ifdef TARGET_PLATFORM_BEAGLEBONE +$(eval $(call c_comp_build_rules, \ + hal/drivers/hal_pru_generic/hal_pru_generic.o, \ + hal/drivers/hal_pru_generic/pwmgen.o \ + hal/drivers/hal_pru_generic/stepgen.o \ + hal/drivers/hal_pru_generic/encoder.o \ + hal/support/pru/prussdrv.o \ + $(LIBPTHREAD) + )) +endif + +# these won't compile as-is with userland threading +###################################################### +#$$(eval $(call c_comp_build_rules,hal/drivers/hal_m5i20.o)) +#$$(eval $(call c_comp_build_rules,hal/drivers/hal_ppmc.o)) +#$$(eval $(call c_comp_build_rules,hal/drivers/opto_ac5.o)) +#$$(eval $(call c_comp_build_rules,hal/drivers/hal_gm.o)) +#endif +#################################################### + +# Gnu make 'expression' syntax is pathetic. What were these guys smoking? +# turn on by default +BUILD_HOSTMOT2=yes +ifeq ($(USERMODE_PCI),yes) +# reconfirm our intent.. +BUILD_HOSTMOT2=yes +else +#except if USERMODE_PCI isn't set +BUILD_HOSTMOT2=no +endif + +ifeq ($(BUILD_HOSTMOT2),yes) +$(eval $(call c_comp_build_rules,hal/drivers/mesa-hostmot2/hm2_eth.o)) +$(eval $(call c_comp_build_rules,hal/drivers/mesa-hostmot2/hostmot2.o,\ + hal/drivers/mesa-hostmot2/backported-strings.o \ + hal/drivers/mesa-hostmot2/ioport.o \ + hal/drivers/mesa-hostmot2/encoder.o \ + hal/drivers/mesa-hostmot2/abs_encoder.o\ + hal/drivers/mesa-hostmot2/resolver.o \ + hal/drivers/mesa-hostmot2/pwmgen.o \ + hal/drivers/mesa-hostmot2/tp_pwmgen.o \ + hal/drivers/mesa-hostmot2/sserial.o \ + hal/drivers/mesa-hostmot2/stepgen.o \ + hal/drivers/mesa-hostmot2/bspi.o \ + hal/drivers/mesa-hostmot2/uart.o \ + hal/drivers/mesa-hostmot2/pktuart.o \ + hal/drivers/mesa-hostmot2/watchdog.o \ + hal/drivers/mesa-hostmot2/pins.o \ + hal/drivers/mesa-hostmot2/dpll.o \ + hal/drivers/mesa-hostmot2/irq.o \ + hal/drivers/mesa-hostmot2/led.o \ + hal/drivers/mesa-hostmot2/fwid.o \ + hal/drivers/mesa-hostmot2/tram.o \ + hal/drivers/mesa-hostmot2/raw.o \ + hal/drivers/mesa-hostmot2/nano_soc_adc.o \ + hal/drivers/mesa-hostmot2/capsense.o \ + hal/drivers/mesa-hostmot2/bitfile.o \ +)) +$(eval $(call c_comp_build_rules,hal/drivers/mesa-hostmot2/hm2_7i43.o,\ + hal/drivers/mesa-hostmot2/hm2_7i43.o \ + hal/drivers/mesa-hostmot2/bitfile.o \ +)) +$(eval $(call c_comp_build_rules,hal/drivers/mesa-hostmot2/hm2_7i90.o, \ + hal/drivers/mesa-hostmot2/bitfile.o \ +)) + +$(eval $(call c_comp_build_rules,hal/drivers/mesa-hostmot2/hm2_pci.o, \ + hal/drivers/mesa-hostmot2/bitfile.o \ +)) +$(eval $(call c_comp_build_rules,hal/drivers/mesa-hostmot2/hm2_test.o, \ + hal/drivers/mesa-hostmot2/bitfile.o \ +)) +$(eval $(call c_comp_build_rules,hal/drivers/mesa-hostmot2/setsserial.o)) +$(eval $(call c_comp_build_rules,hal/drivers/mesa-hostmot2/hm2_pci.o, \ + hal/drivers/mesa-hostmot2/bitfile.o \ +)) +endif # BUILD_HOSTMOT2 + +$(eval $(call c_comp_build_rules,hal/drivers/probe_parport.o)) +endif diff --git a/src/hal/lib/Submakefile b/src/hal/lib/Submakefile index 106b845a2d..20ad61f232 100644 --- a/src/hal/lib/Submakefile +++ b/src/hal/lib/Submakefile @@ -92,7 +92,7 @@ PYTARGETS += $(HALMODULE) obj-m += hal_lib.o -hal_lib-objs := hal/lib/hal_lib.o $(MATHSTUB) +hal_lib-objs := hal/lib/hal_lib.o hal_lib-objs += hal/lib/hal_group.o hal_lib-objs += hal/lib/hal_ring.o hal_lib-objs += hal/lib/hal_rcomp.o diff --git a/src/hal/sample_channel/Submakefile b/src/hal/sample_channel/Submakefile new file mode 100644 index 0000000000..b5baabb24b --- /dev/null +++ b/src/hal/sample_channel/Submakefile @@ -0,0 +1,2 @@ +$(eval $(call c_comp_build_rules,hal/sample_channel/sample_channel_pb.o, \ + machinetalk/build/machinetalk/protobuf/sample.npb.o)) diff --git a/src/hal/simdrivers/Submakefile b/src/hal/simdrivers/Submakefile index d0e20a5ed6..fe53559562 100644 --- a/src/hal/simdrivers/Submakefile +++ b/src/hal/simdrivers/Submakefile @@ -3,11 +3,12 @@ ifeq ($(BUILD_SYS),sim) UPARPORT_SRCS := $(addprefix hal/simdrivers/, \ uparport.c) -UPARPORT_LIBS := +UPARPORT_LIBS := UPARPORT_FLAGS := -DSIM -DSIMULATOR -DRTAPI -UULAPI -D__MODULE__ -Drealtime USERSRCS += $(UPARPORT_SRCS) TARGETS += ../rtlib/hal_parport.so + endif $(call TOOBJSDEPS, $(UPARPORT_SRCS)) : EXTRAFLAGS=-fPIC $(UPARPORT_FLAGS) @@ -18,4 +19,3 @@ $(call TOOBJSDEPS, $(UPARPORT_SRCS)) : EXTRAFLAGS=-fPIC $(UPARPORT_FLAGS) @rm -f $@ $(CC) -g $(LDFLAGS) -Wl,-soname,$(notdir $@) \ -shared -o $@ $^ $(UPARPORT_LIBS) - diff --git a/src/hal/support/Submakefile b/src/hal/support/Submakefile index 37be468bf0..5c7590db27 100644 --- a/src/hal/support/Submakefile +++ b/src/hal/support/Submakefile @@ -81,5 +81,8 @@ USERSRCS += $(PRUSSDRV_SRCS) # $(ECHO) Assembling PRU code $@ # $(Q)$(PASM) $(PASM_BINFLAGS) $^ $(basename $@) +# C components +$(eval $(call c_comp_build_rules,hal/components/hal_pru.o, $(LIBPTHREAD))) +$(eval $(call c_comp_build_rules,hal/components/hal_prudebug.o, $(LIBPTHREAD))) endif diff --git a/src/hal/userfunct-example/Submakefile b/src/hal/userfunct-example/Submakefile index 572e8b8b88..e39bfdf252 100644 --- a/src/hal/userfunct-example/Submakefile +++ b/src/hal/userfunct-example/Submakefile @@ -4,12 +4,4 @@ INCLUDES += $(USERFUNCTEXAMPLE_DIR) ../include/%.h: ./$(USERFUNCTEXAMPLE_DIR)/%.h cp $^ $@ -# obj-m += ufdemo.o -# vtexport-objs := \ -# $(USERFUNCTEXAMPLE_DIR)/ufdemo.o - - -# ifneq "$(filter normal user-dso,$(BUILD_SYS))" "" -# $(RTLIBDIR)/ufdemo$(MODULE_EXT): \ -# $(addprefix $(OBJDIR)/,$(ufdemo-objs)) -# endif +$(eval $(call c_comp_build_rules,$(USERFUNCTEXAMPLE_DIR)/ufdemo.o)) diff --git a/src/hal/utils/Submakefile b/src/hal/utils/Submakefile index 862bc38111..c7e61cd862 100644 --- a/src/hal/utils/Submakefile +++ b/src/hal/utils/Submakefile @@ -145,3 +145,6 @@ objects/%.py: %.g ../bin/yapps clean: hal-utils-clean hal-utils-clean: rm -f ../bin/yapps ../lib/python/yapps/*.pyc + +# C language components +$(eval $(call c_comp_build_rules,hal/utils/scope_rt.o)) diff --git a/src/hal/vtable-example/Submakefile b/src/hal/vtable-example/Submakefile index 6e94fb5ef0..f3ad69666b 100644 --- a/src/hal/vtable-example/Submakefile +++ b/src/hal/vtable-example/Submakefile @@ -4,18 +4,8 @@ INCLUDES += $(VTABLEEXAMPLE_DIR) ../include/%.h: ./$(VTABLEEXAMPLE_DIR)/%.h cp $^ $@ -obj-m += vtexport.o -vtexport-objs := \ - $(VTABLEEXAMPLE_DIR)/vtexport.o \ - $(VTABLEEXAMPLE_DIR)/vcode.o +$(eval $(call c_comp_build_rules, \ + hal/vtable-example/vtexport.o, \ + hal/vtable-example/vcode.o)) -obj-m += vtuse.o -vtuse-objs := \ - $(VTABLEEXAMPLE_DIR)/vtuse.o \ - -ifneq "$(filter normal user-dso,$(BUILD_SYS))" "" -$(RTLIBDIR)/vtexport$(MODULE_EXT): \ - $(addprefix $(OBJDIR)/,$(vtexport-objs)) -$(RTLIBDIR)/vtuse$(MODULE_EXT): \ - $(addprefix $(OBJDIR)/,$(vtuse-objs)) -endif +$(eval $(call c_comp_build_rules,$(VTABLEEXAMPLE_DIR)/vtuse.o)) diff --git a/src/rtapi/Submakefile b/src/rtapi/Submakefile index c4bba55539..e7fd6793e6 100644 --- a/src/rtapi/Submakefile +++ b/src/rtapi/Submakefile @@ -19,8 +19,6 @@ INCLUDES += rtapi rtapi_export modclean: modclean-rtapi modclean-rtapi: for flav in $(BUILD_THREAD_FLAVORS); do \ - rm -f rtapi/$$flav; \ - rm -f rtapi/.flavor-$$flav-link-create-stamp; \ rm -f ../lib/ulapi-$$flav.so; \ rm -f ../libexec/rtapi_app_$$flav; \ done @@ -40,8 +38,7 @@ XXAPI_COMMON_SRCS := \ rtapi_shmem.c \ rtapi_time.c \ rtapi_exception.c \ - rtapi_heap.c \ - $(THREADS_SOURCE).c + rtapi_heap.c # rtapi_compat needs to know where rtapi.ini lives %/rtapi_compat.o: \ @@ -55,19 +52,14 @@ XXAPI_COMMON_SRCS := \ # ../lib/ulapi$THREADSTYLE.soiblinuxcnchal.so; # ULAPI_SRCS := \ - $(patsubst %,rtapi/$(threads)/%,$(XXAPI_COMMON_SRCS)) \ - rtapi/$(threads)/ulapi_main.c -ifeq ($(BUILD_SYS),kbuild) -ULAPI_SRCS += rtapi/$(threads)/rtapi_module.c -endif + $(patsubst %,rtapi/%,$(XXAPI_COMMON_SRCS)) \ + rtapi/ulapi_main.c # resolved at loadtime -$(call TOOBJSDEPS, $(ULAPI_SRCS)): EXTRAFLAGS += \ - $(THREADS_RTFLAGS) -fPIC - +$(call TOOBJSDEPS, $(ULAPI_SRCS)): EXTRAFLAGS += -fPIC -ULAPISO := ../rtlib/ulapi-$(threads).so +ULAPISO := ../rtlib/ulapi.so $(ULAPISO): ../lib/liblinuxcnchal.so ../lib/liblinuxcncshm.so \ $(call TOOBJS, $(ULAPI_SRCS)) @@ -78,12 +70,8 @@ $(ULAPISO): ../lib/liblinuxcnchal.so ../lib/liblinuxcncshm.so \ ../lib/liblinuxcncshm.so \ ../lib/liblinuxcnchal.so -# Plumb in the ulapi-.so build during 2nd-level recursive make -# modules run -ifeq ($(BUILD_THREAD_MODULES),yes) USERSRCS += $(ULAPI_SRCS) -modules: $(ULAPISO) -endif +TARGETS += $(ULAPISO) ################################################################## # The ulapi autoload library @@ -226,7 +214,7 @@ $(call TOOBJSDEPS, rtapi/rtapi_app.cc): \ $(call TOOBJSDEPS, rtapi/rtapi_app.cc): \ ../include/machinetalk/protobuf/message.pb.h -../libexec/rtapi_app_$(threads): \ +../libexec/rtapi_app_%: \ $(call TOOBJS, $(RTAPI_APP_SRCS)) \ ../lib/liblinuxcncini.so.0 \ ../lib/liblinuxcncshm.so \ @@ -247,20 +235,26 @@ $(call TOOBJSDEPS, rtapi/rtapi_app.cc): \ # $(LIBBACKTRACE) # already linked into libmtalk -modules: ../libexec/rtapi_app_$(threads) +modules: $(patsubst %, ../libexec/rtapi_app_%, $(BUILD_THREAD_FLAVORS)) + ################################################################## # USERLAND THREAD STYLES ################################################################## -ifeq ($(BUILD_SYS),user-dso) - -# the rtapi.so module -obj-$(CONFIG_RTAPI) += rtapi_$(threads).o - -rtapi_$(threads)-objs := \ - $(patsubst %.c, \ - rtapi/%.o,$(XXAPI_COMMON_SRCS) \ - rtapi_main.c \ - rtapi_compat.c \ +# +# FIXME This needs to be folded into rtapi_app. +# +# The `rtapi_.` module was separate from rtapi_app +# because e.g. `rtapi_app_rtai` could run against multiple kernel +# versions by loading different `rtapi.ko` modules from the correct +# directory. Now that kthreads are gone, there's only one possible +# `rtapi.so` module per `rtapi_app`, so these should be folded +# together. + +rtapi-objs := \ + $(patsubst %.c, rtapi/%.o, \ + $(XXAPI_COMMON_SRCS) \ + rtapi_main.c \ + rtapi_compat.c \ ) \ machinetalk/support/nanopb.o \ machinetalk/nanopb/pb_decode.o \ @@ -273,39 +267,41 @@ ifeq ($(USERMODE_PCI),yes) $(call TOOBJSDEPS, rtapi/rtapi_pci.c): EXTRAFLAGS += $(LIBUDEV_CFLAGS) # link in userland PCI support into rtapi.so -rtapi_$(threads)-objs += rtapi/rtapi_pci.o +rtapi-objs += rtapi/rtapi_pci.o # userland PCI support needs -ludev for rtapi.so -$(RTLIBDIR)/rtapi_$(threads)$(MODULE_EXT): EXTRA_LDFLAGS += $(LIBUDEV_LIBS) +RTAPI_MODULE_EXTRA_LDFLAGS += $(LIBUDEV_LIBS) endif -$(RTLIBDIR)/rtapi_$(threads)$(MODULE_EXT): EXTRA_LDFLAGS += $(RT_LDFLAGS) - -# rule for threads module, moved from src/Makefile -$(RTLIBDIR)/rtapi_$(threads)$(MODULE_EXT): \ - $(addprefix $(OBJDIR)/,$(rtapi_$(threads)-objs)) +RTAPI_MODULE_EXTRA_LDFLAGS += $(RT_LDFLAGS) +# - POSIX +ifeq ($(HAVE_POSIX_THREADS),yes) +rtapi_posix-objs := $(rtapi-objs) rtapi/rt-preempt.o +$(OBJDIR)/rtapi/rt-preempt.o: EXTRA_CFLAGS += -DRTAPI_POSIX +$(RTLIBDIR)/rtapi_posix.so: EXTRA_LDFLAGS += $(RTAPI_MODULE_EXTRA_LDFLAGS) +$(RTLIBDIR)/rtapi_posix.so: \ + $(addprefix $(OBJDIR)/,$(rtapi_posix-objs)) +obj-m += rtapi_posix.o +endif -################################################################## -# KERNEL THREAD STYLES -################################################################## -else # BUILD_SYS == kbuild - -obj-$(CONFIG_RTAPI) += rtapi.o - -rtapi_$(threads)-objs := \ - $(patsubst %.c,rtapi/%.o,$(XXAPI_COMMON_SRCS)) \ - rtapi/rtapi_module.o -rtapi_$(threads)-objs += machinetalk/support/nanopb.o -rtapi_$(threads)-objs += machinetalk/nanopb/pb_decode.o -rtapi_$(threads)-objs += machinetalk/nanopb/pb_encode.o -rtapi_$(threads)-objs += machinetalk/nanopb/pb_common.o - -# rule for kernel module, moved from src/Makefile -$(RTLIBDIR)/rtapi_$(threads)$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(rtapi_$(threads)-objs)) -$(info rtapi.so? $(RTLIBDIR)/rtapi_$(threads)$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(rtapi_$(threads)-objs))) +# - RT_PREEMPT +ifeq ($(HAVE_RT_PREEMPT_THREADS),yes) +rtapi_rt-preempt-objs := $(rtapi-objs) rtapi/rt-preempt.o +$(RTLIBDIR)/rtapi_rt-preempt.so: EXTRA_LDFLAGS += $(RTAPI_MODULE_EXTRA_LDFLAGS) +$(RTLIBDIR)/rtapi_rt-preempt.so: \ + $(addprefix $(OBJDIR)/,$(rtapi_rt-preempt-objs)) +obj-m += rtapi_rt-preempt.o +endif -endif # BUILD_SYS == kbuild +# - Xenomai +ifeq ($(HAVE_XENOMAI_THREADS),yes) +rtapi_xenomai-objs := $(rtapi-objs) rtapi/xenomai.o +$(RTLIBDIR)/rtapi_xenomai.so: EXTRA_LDFLAGS += $(RTAPI_MODULE_EXTRA_LDFLAGS) +$(RTLIBDIR)/rtapi_xenomai.so: \ + $(addprefix $(OBJDIR)/,$(rtapi_xenomai-objs) rtapi/xenomai.o) +obj-m += rtapi_xenomai.o +endif ################################################################## # the kdetect test program diff --git a/src/rtapi/rtai-kernel.c b/src/rtapi/rtai-kernel.c deleted file mode 100644 index acf76b5aa8..0000000000 --- a/src/rtapi/rtai-kernel.c +++ /dev/null @@ -1,230 +0,0 @@ -#include "config.h" -#include "rtapi.h" -#include "rtapi_common.h" - -#include -#include - -#ifdef MODULE -#include // udelay() -#endif - -#ifdef RTAPI -extern rtapi_exception_handler_t rt_exception_handler; -#endif - -/*********************************************************************** -* rtapi_time.c * -************************************************************************/ - -#ifdef RTAPI -void _rtapi_module_timer_stop(void) { - stop_rt_timer(); -#if RTAI_VERSION <= 400 - rt_free_timer(); -#else - rt_free_timers(); -#endif -} - - -void _rtapi_clock_set_period_hook(long int nsecs, RTIME *counts, - RTIME *got_counts) { - rt_set_periodic_mode(); - *counts = nano2count((RTIME) nsecs); - if(count2nano(*counts) > nsecs) (*counts)--; - *got_counts = start_rt_timer(*counts); - rtapi_data->timer_period = count2nano(*got_counts); -} - - -void _rtapi_delay_hook(long int nsec) -{ - udelay(nsec / 1000); -} - -long long int _rtapi_get_time_hook(void) { - //struct timeval tv; - - //AJ: commenting the following code out, as it seems on some systems it - // really breaks - - /* call the kernel's internal implementation of gettimeofday() */ - /* unfortunately timeval has only usec, struct timespec would be - better, it has nsec resolution. Doing this right probably - involves a number of ifdefs based on kernel version and such */ - /*do_gettimeofday(&tv);*/ - /* convert to nanoseconds */ - /*return (tv.tv_sec * 1000000000LL) + (tv.tv_usec * 1000L);*/ - - //reverted to old code for now - /* this is a monstrosity that seems to take several MICROSECONDS!!! - on some boxes. Why the RTAI folks even bothered I have no idea! - If you have any need for speed at all use _rtapi_get_clocks()!! - */ - return rt_get_cpu_time_ns(); -} -#endif /* RTAPI */ - - -/*********************************************************************** -* rtapi_task.c * -************************************************************************/ - -#ifdef RTAPI - -# if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,24) -# define IP(x) ((x)->ip) -# elif defined(__i386__) -# define IP(x) ((x)->eip) -# else -# define IP(x) ((x)->rip) -# endif - -static int _rtapi_trap_handler(int vec, int signo, struct pt_regs *regs, - void *task) { - int task_id = _rtapi_task_self(); - - rtapi_exception_detail_t detail = {0}; - - detail.task_id = task_id; - detail.flavor.rtai.vector = vec; - detail.flavor.rtai.signo = signo; - detail.flavor.rtai.ip = (exc_register_t) IP(regs); - - if (rt_exception_handler) - rt_exception_handler(RTAI_TRAP, &detail, - (task_id > -1) ? - &global_data->thread_status[task_id] : NULL); - - _rtapi_task_pause(task_id); - return 0; -} - - -static void _rtapi_task_wrapper(long task_id) { - task_data *task; - - /* point to the task data */ - task = &task_array[task_id]; - /* call the task function with the task argument */ - (task->taskcode) (task->arg); - /* if the task ever returns, we record that fact */ - task->state = ENDED; - /* and return to end the thread */ - return; -} - -int _rtapi_task_new_hook(task_data *task, int task_id) { - int retval, v; - retval = rt_task_init_cpuid(ostask_array[task_id], _rtapi_task_wrapper, - task_id, task->stacksize, task->prio, - task->uses_fp, 0 /* signal */, task->cpu); - if (retval) return retval; - - /* request to handle traps in the new task */ -#ifdef HAL_NR_FAULTS - for(v=0; v RTAPI_MAX_TASKS)) { - rtapi_print_msg(RTAPI_MSG_ERR, - "_rtapi_wait_hook: BUG - task_id out of range: %d\n", - task_id); - return; - } - rtapi_exception_detail_t detail = {0}; - rtapi_threadstatus_t *ts = &global_data->thread_status[task_id]; - rtapi_exception_t type; - - detail.task_id = task_id; - detail.error_code = result; - - switch (result) { - - case RTE_TMROVRN: - // an immediate return was taken because the time - // deadline has already expired - ts->flavor.rtai.wait_errors++; - type = RTAI_RTE_TMROVRN; - break; - - case RTE_UNBLKD: - // the task was unblocked while sleeping - // an API usage error - ts->api_errors++; - type = RTAI_RTE_UNBLKD; - break; - - default: - // whzat? - ts->other_errors++; - type = RTAI_RTE_UNCLASSIFIED; - } - - if (rt_exception_handler) - rt_exception_handler(type, &detail, ts); - - } -} - -int _rtapi_task_self_hook(void) { - RT_TASK *ptr; - int n; - - /* ask OS for pointer to its data for the current task */ - ptr = rt_whoami(); - if (ptr == NULL) { - /* called from outside a task? */ - return -EINVAL; - } - /* find matching entry in task array */ - n = 1; - while (n <= RTAPI_MAX_TASKS) { - if (ostask_array[n] == ptr) { - /* found a match */ - return n; - } - n++; - } - return -EINVAL; -} -#endif /* RTAPI */ - diff --git a/src/rtapi/rtai-kernel.h b/src/rtapi/rtai-kernel.h deleted file mode 100644 index 38698676d3..0000000000 --- a/src/rtapi/rtai-kernel.h +++ /dev/null @@ -1,49 +0,0 @@ -/******************************************************************** -* Description: rtai.h -* This file defines the differences specific to the -* the RTAI thread system -* -* Copyright 2006-2010 Various Authors -* -* This program 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 2 of the License, or -* (at your option) any later version. -* -* This program 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 this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -********************************************************************/ - -#include /* RT_TASK */ - -#define FLAVOR_FLAGS RTAI_KERNEL_FLAVOR_FLAGS // see rtapi_compat.h - -/* rtapi_module.c */ -#define RT_LINUX_USE_FPU - - -/* rtapi_time.c */ -#define HAVE_RTAPI_MODULE_TIMER_STOP -#define HAVE_RTAPI_CLOCK_SET_PERIOD_HOOK -#ifdef RTAPI // no rt_get_cpu_time_ns() in RTAI userland -#define HAVE_RTAPI_GET_TIME_HOOK -#endif - -/* rtapi_task.c */ - -/* RTAI uses 0 as the highest priority; higher numbers are lower - priority */ -#define INVERSE_PRIO -#define PRIO_LOWEST 0xFFF -#define PRIO_HIGHEST 0 - -#define HAVE_RTAPI_TASK_NEW_HOOK -#define HAVE_RTAPI_WAIT_HOOK -#define HAVE_RTAPI_TASK_SELF_HOOK - diff --git a/src/rtapi/rtapi.h b/src/rtapi/rtapi.h index 7a8168edd9..9740f4f44a 100644 --- a/src/rtapi/rtapi.h +++ b/src/rtapi/rtapi.h @@ -6,7 +6,7 @@ */ /******************************************************************** * Description: rtapi.h -* This file, 'rtapi.h', defines the RTAPI for both +* This file, 'rtapi.h', defines the RTAPI for both * realtime and non-realtime code. * * Author: John Kasunich, Paul Corner @@ -14,7 +14,7 @@ * * Copyright (c) 2004 All rights reserved. * -* Last change: +* Last change: ********************************************************************/ /** This file, 'rtapi.h', defines the RTAPI for both realtime and @@ -83,17 +83,6 @@ #include // provides NULL, offset_of #include "rtapi_int.h" - -/* LINUX_VERSION_CODE for rtapi_{module,io}.c */ -#ifdef MODULE -#ifndef LINUX_VERSION_CODE -#include -#endif -#ifndef KERNEL_VERSION -#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) -#endif -#endif - #include // need RTAPI_CACHELINE for rtapi_global.h @@ -232,7 +221,7 @@ typedef int (*rtapi_exit_t)(int); extern int _rtapi_exit(int module_id); /** 'rtapi_next_handle()' returns a globally unique int ID - + */ typedef int (*rtapi_next_handle_t)(void); #define rtapi_next_handle() \ @@ -507,11 +496,7 @@ typedef struct { /*********************************************************************** * LIGHTWEIGHT MUTEX FUNCTIONS * ************************************************************************/ -#ifdef MODULE /* kernel code */ -#include /* for blocking when needed */ -#else /* userland code */ #include /* for blocking when needed */ -#endif #include "rtapi_bitops.h" /* atomic bit ops for lightweight mutex */ /** These three functions provide a very simple way to do mutual @@ -551,11 +536,7 @@ typedef struct { */ static __inline__ void rtapi_mutex_get(unsigned long *mutex) { while (rtapi_test_and_set_bit(0, mutex)) { -#ifdef MODULE /* kernel code */ - schedule(); -#else /* userland code */ sched_yield(); -#endif } } @@ -689,9 +670,9 @@ extern int _rtapi_task_pll_set_correction(long value); Returns a 64 bit value. The resolution of the returned value may be as good as one nano-second, or as poor as several microseconds. May be called from init/cleanup code, and from within realtime tasks. - + Experience has shown that the implementation of this function in - some RTOS/Kernel combinations is horrible. It can take up to + some RTOS/Kernel combinations is horrible. It can take up to several microseconds, which is at least 100 times longer than it should, and perhaps a thousand times longer. Use it only if you MUST have results in seconds instead of clocks, and use it sparingly. @@ -710,7 +691,7 @@ typedef long long int (*rtapi_get_time_t)(void); rtapi_switch->rtapi_get_time() extern long long int _rtapi_get_time(void); -/** rtapi_get_clocks returns the current time in CPU clocks. It is +/** rtapi_get_clocks returns the current time in CPU clocks. It is fast, since it just reads the TSC in the CPU instead of calling a kernel or RTOS function. Of course, times measured in CPU clocks are not as convenient, but for relative measurements this works @@ -724,7 +705,7 @@ extern long long int _rtapi_get_time(void); one CPU clock, which is usually a few nanoseconds to a fraction of a nanosecond. May be called from init/cleanup code, and from within realtime tasks. - + Note that longlong math may be poorly supported on some platforms, especially in kernel space. Also note that rtapi_print() will NOT print longlongs. Most time measurements are relative, and should @@ -732,7 +713,7 @@ extern long long int _rtapi_get_time(void); where end_time and start_time are longlong values returned from rtapi_get_time, and deltat is an ordinary long int (32 bits). This will work for times up to a second or so, depending on the - CPU clock frequency. It is best used for millisecond and + CPU clock frequency. It is best used for millisecond and microsecond scale measurements though. */ typedef long long int (*rtapi_get_clocks_t)(void); @@ -1040,7 +1021,7 @@ extern rtapi_exception_handler_t _rtapi_set_exception(rtapi_exception_handler_t #include "rtapi_io.h" -#if (defined(RTAPI) && defined(BUILD_DRIVERS)) +#if (defined(RTAPI) && defined(BUILD_DRIVERS)) /** 'rtapi_request_region() reserves I/O memory starting at 'base', going for 'size' bytes, for component 'name'. @@ -1064,7 +1045,7 @@ extern rtapi_exception_handler_t _rtapi_set_exception(rtapi_exception_handler_t # endif } -/** 'rtapi_release_region() releases I/O memory reserved by +/** 'rtapi_release_region() releases I/O memory reserved by 'rtapi_request_region', starting at 'base' and going for 'size' bytes. 'base' and 'size' must exactly match an earlier successful call to rtapi_request_region or the result is undefined. @@ -1175,7 +1156,7 @@ typedef struct { // this extern is not used within RTAPI extern rtapi_switch_t *rtapi_switch; -/** 'rtapi_get_handle()' returns a pointer to the rtapi_switch +/** 'rtapi_get_handle()' returns a pointer to the rtapi_switch structure, such that using code may refernce rtapi methods. */ diff --git a/src/rtapi/rtapi_common.c b/src/rtapi/rtapi_common.c index bbd8c3be07..e433aa9a89 100644 --- a/src/rtapi/rtapi_common.c +++ b/src/rtapi/rtapi_common.c @@ -14,21 +14,16 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +#ifdef ULAPI +#include +#endif + #include "config.h" #include "rtapi.h" #include "rtapi_common.h" #include "rtapi_compat.h" #include "ring.h" -#ifndef MODULE -#include /* strtol() */ -#endif - -#if defined(BUILD_SYS_KBUILD) && defined(ULAPI) -#include /* putchar */ -#endif - - /* these pointers are initialized at startup to point to resource data in the master data structure above all access to the data structure should uses these @@ -39,20 +34,13 @@ that process's memory mapping.) */ -#ifdef BUILD_SYS_USER_DSO -// in the userland threads scenario, there is no point in having this +// in the userland threads scenario, there is no point in having this // in shared memory, so keep it here static rtapi_data_t local_rtapi_data; rtapi_data_t *rtapi_data = &local_rtapi_data; task_data *task_array = local_rtapi_data.task_array; shmem_data *shmem_array = local_rtapi_data.shmem_array; module_data *module_array = local_rtapi_data.module_array; -#else -rtapi_data_t *rtapi_data = NULL; -task_data *task_array = NULL; -shmem_data *shmem_array = NULL; -module_data *module_array = NULL; -#endif // RTAPI: // global_data is exported by rtapi_module.c (kthreads) @@ -60,7 +48,7 @@ module_data *module_array = NULL; // ULAPI: exported in ulapi_autoload.c extern global_data_t *global_data; -/* +/* define the rtapi_switch struct, with pointers to all rtapi_* functions @@ -78,9 +66,15 @@ int _rtapi_dummy(void) { static rtapi_switch_t rtapi_switch_struct = { .git_version = GIT_VERSION, +#ifdef RTAPI .thread_flavor_name = THREAD_FLAVOR_NAME, .thread_flavor_id = THREAD_FLAVOR_ID, .thread_flavor_flags = FLAVOR_FLAGS, +#else + .thread_flavor_name = "ULAPI", + .thread_flavor_id = -1, + .thread_flavor_flags = 0, +#endif // init & exit functions .rtapi_init = &_rtapi_init, @@ -168,18 +162,14 @@ rtapi_switch_t *rtapi_get_handle(void) { EXPORT_SYMBOL(rtapi_get_handle); #endif -#if defined(BUILD_SYS_KBUILD) -int shmdrv_loaded = 1; // implicit -#else int shmdrv_loaded; // set in rtapi_app_main, and ulapi_main -#endif long page_size; // set in rtapi_app_main void rtapi_autorelease_mutex(void *variable) { if (rtapi_data != NULL) rtapi_mutex_give(&(rtapi_data->mutex)); - else + else // programming error rtapi_print_msg(RTAPI_MSG_ERR, "rtapi_autorelease_mutex: rtapi_data == NULL!\n"); @@ -213,7 +203,7 @@ void init_rtapi_data(rtapi_data_t * data) data->magic = RTAPI_MAGIC; /* set version code and flavor ID so other modules can check it */ data->serial = RTAPI_SERIAL; - data->thread_flavor_id = THREAD_FLAVOR_ID; + data->thread_flavor_id = -1; // Unknown at this point data->ring_mutex = 0; /* and get busy */ data->rt_module_count = 0; @@ -314,107 +304,3 @@ int _rtapi_next_handle(void) { return rtapi_add_and_fetch(1, &global_data->next_handle); } - -/* simple_strtol defined in - /usr/src/kernels//include/linux/kernel.h */ -#ifndef MODULE -long int simple_strtol(const char *nptr, char **endptr, int base) { -# ifdef HAVE_RTAPI_SIMPLE_STRTOL_HOOK - return rtapi_simple_strtol_hook(nptr,endptr,base); -# else - return strtol(nptr, endptr, base); -# endif -} -#ifdef RTAPI -EXPORT_SYMBOL(simple_strtol); -#endif -#endif - -#if defined(BUILD_SYS_KBUILD) && defined(ULAPI) -/* This function is disabled everywhere... */ -void _rtapi_printall(void) { - module_data *modules; - task_data *tasks; - shmem_data *shmems; - int n, m; - - if (rtapi_data == NULL) { - rtapi_print_msg(RTAPI_MSG_DBG, "rtapi_data = NULL, not initialized\n"); - return; - } - rtapi_print_msg(RTAPI_MSG_DBG, "rtapi_data = %p\n", - rtapi_data); - rtapi_print_msg(RTAPI_MSG_DBG, " magic = %d\n", - rtapi_data->magic); - rtapi_print_msg(RTAPI_MSG_DBG, " serial = %d\n", - rtapi_data->serial); - rtapi_print_msg(RTAPI_MSG_DBG, " thread_flavor id = %d\n", - rtapi_data->thread_flavor_id); - rtapi_print_msg(RTAPI_MSG_DBG, " mutex = %lu\n", - rtapi_data->mutex); - rtapi_print_msg(RTAPI_MSG_DBG, " rt_module_count = %d\n", - rtapi_data->rt_module_count); - rtapi_print_msg(RTAPI_MSG_DBG, " ul_module_count = %d\n", - rtapi_data->ul_module_count); - rtapi_print_msg(RTAPI_MSG_DBG, " task_count = %d\n", - rtapi_data->task_count); - rtapi_print_msg(RTAPI_MSG_DBG, " shmem_count = %d\n", - rtapi_data->shmem_count); - rtapi_print_msg(RTAPI_MSG_DBG, " timer_running = %d\n", - rtapi_data->timer_running); - rtapi_print_msg(RTAPI_MSG_DBG, " timer_period = %ld\n", - rtapi_data->timer_period); - modules = &(rtapi_data->module_array[0]); - tasks = &(rtapi_data->task_array[0]); - shmems = &(rtapi_data->shmem_array[0]); - rtapi_print_msg(RTAPI_MSG_DBG, " module array = %p\n",modules); - rtapi_print_msg(RTAPI_MSG_DBG, " task array = %p\n", tasks); - rtapi_print_msg(RTAPI_MSG_DBG, " shmem array = %p\n", shmems); - for (n = 0; n <= RTAPI_MAX_MODULES; n++) { - if (modules[n].state != NO_MODULE) { - rtapi_print_msg(RTAPI_MSG_DBG, " module %02d\n", n); - rtapi_print_msg(RTAPI_MSG_DBG, " state = %d\n", - modules[n].state); - rtapi_print_msg(RTAPI_MSG_DBG, " name = %p\n", - modules[n].name); - rtapi_print_msg(RTAPI_MSG_DBG, " name = '%s'\n", - modules[n].name); - } - } - for (n = 0; n <= RTAPI_MAX_TASKS; n++) { - if (tasks[n].state != EMPTY) { - rtapi_print_msg(RTAPI_MSG_DBG, " task %02d\n", n); - rtapi_print_msg(RTAPI_MSG_DBG, " state = %d\n", - tasks[n].state); - rtapi_print_msg(RTAPI_MSG_DBG, " prio = %d\n", - tasks[n].prio); - rtapi_print_msg(RTAPI_MSG_DBG, " owner = %d\n", - tasks[n].owner); - rtapi_print_msg(RTAPI_MSG_DBG, " code = %p\n", - tasks[n].taskcode); - } - } - for (n = 0; n <= RTAPI_MAX_SHMEMS; n++) { - if (shmems[n].key != 0) { - rtapi_print_msg(RTAPI_MSG_DBG, " shmem %02d\n", n); - rtapi_print_msg(RTAPI_MSG_DBG, " key = %d\n", - shmems[n].key); - rtapi_print_msg(RTAPI_MSG_DBG, " rtusers = %d\n", - shmems[n].rtusers); - rtapi_print_msg(RTAPI_MSG_DBG, " ulusers = %d\n", - shmems[n].ulusers); - rtapi_print_msg(RTAPI_MSG_DBG, " size = %ld\n", - shmems[n].size); - rtapi_print_msg(RTAPI_MSG_DBG, " bitmap = "); - for (m = 0; m <= RTAPI_MAX_MODULES; m++) { - if (rtapi_test_bit(m, shmems[n].bitmap)) { - putchar('1'); - } else { - putchar('0'); - } - } - putchar('\n'); - } - } -} -#endif diff --git a/src/rtapi/rtapi_common.h b/src/rtapi/rtapi_common.h index 4cef6e0905..30980682f7 100644 --- a/src/rtapi/rtapi_common.h +++ b/src/rtapi/rtapi_common.h @@ -6,16 +6,16 @@ */ /******************************************************************** * Description: rtapi_common.h -* This file, 'rtapi_common.h', contains typedefs and -* other items common to both the realtime and +* This file, 'rtapi_common.h', contains typedefs and +* other items common to both the realtime and * non-realtime portions of the implementation. * * Author: John Kasunich, Paul Corner * License: LGPL Version 2 -* +* * Copyright (c) 2004 All rights reserved. * -* Last change: +* Last change: ********************************************************************/ /** This file, 'rtapi_common.h', contains typedefs and other items @@ -73,31 +73,21 @@ #include "rtapi_bitops.h" /* test_bit() et al. */ -#if defined(BUILD_SYS_USER_DSO) -#include /* IPC_* */ -#include -#include -#endif - -#if defined(BUILD_SYS_USER_DSO) #include /* IPC_* */ #include #include -#endif #ifndef NULL #define NULL 0 #endif +#ifdef RTAPI /* ULAPI doesn't vary by thread flavor */ #include THREADS_HEADERS /* thread-specific headers */ - - -/* module information */ -#ifdef MODULE -MODULE_AUTHOR("John Kasunich, Fred Proctor, & Paul Corner"); -MODULE_DESCRIPTION("Portable Real Time API"); -MODULE_LICENSE("GPL"); +#else +// These are the same as Xenomai and RT_PREEMPT anyway +#define PRIO_LOWEST 0 +#define PRIO_HIGHEST 99 #endif // RTAPI_MAX_* moved to config.h @@ -209,23 +199,20 @@ typedef struct { task_data task_array[RTAPI_MAX_TASKS + 1]; /* data for tasks */ shmem_data shmem_array[RTAPI_MAX_SHMEMS + 1]; /* data for shared memory */ -#ifdef THREAD_RTAPI_DATA - THREAD_RTAPI_DATA; /* RTAPI data defined in thread system */ -#endif } rtapi_data_t; /* rtapi_common.c */ extern rtapi_data_t *rtapi_data; -#if defined(RTAPI) || defined(MODULE) +#if defined(RTAPI) extern void init_rtapi_data(rtapi_data_t * data); -extern void init_global_data(global_data_t * data, - int instance_id, int hal_size, +extern void init_global_data(global_data_t * data, + int instance_id, int hal_size, int rtlevel, int userlevel, const char *name); #endif -#if defined(RTAPI) && defined(BUILD_SYS_USER_DSO) +#if defined(RTAPI) extern int _next_handle(void); #endif @@ -237,16 +224,6 @@ extern long page_size; // for munmap extern task_data *task_array; -/* $(THREADS).c */ -/* RT_TASK is actually flavor-specific. It ought to be hookified, but - it isn't because the two kthreads flavors both use the same same - for this data type (perhaps because they share history and the - ipipe patch) - */ -#if defined(MODULE) -extern RT_TASK *ostask_array[]; -#endif - /* rtapi_time.c */ #ifdef BUILD_SYS_USER_DSO extern int period; diff --git a/src/rtapi/rtapi_compat.h b/src/rtapi/rtapi_compat.h index 306560e02f..59fda8349e 100644 --- a/src/rtapi/rtapi_compat.h +++ b/src/rtapi/rtapi_compat.h @@ -37,14 +37,6 @@ #define RTPREEMPT_FLAVOR_FLAGS (FLAVOR_DOES_IO) -#define RTAI_KERNEL_FLAVOR_FLAGS (FLAVOR_DOES_IO| \ - FLAVOR_KERNEL_BUILD|\ - FLAVOR_RTAPI_DATA_IN_SHM) - -#define XENOMAI_KERNEL_FLAVOR_FLAGS (FLAVOR_DOES_IO|\ - FLAVOR_KERNEL_BUILD|\ - FLAVOR_RTAPI_DATA_IN_SHM) - #define XENOMAI_FLAVOR_FLAGS (FLAVOR_DOES_IO) @@ -54,7 +46,6 @@ * RTAPI or ULAPI, for instance rtapi_msgd or rtapistat. * * exported by rtapi_compat.c . * ************************************************************************/ -#ifndef MODULE #include // provides PATH_MAX @@ -214,5 +205,4 @@ int rtapi_get_tags(const char *mod_name); SUPPORT_END_DECLS -#endif // MODULE #endif // RTAPI_COMPAT_H diff --git a/src/rtapi/rtapi_ctype.h b/src/rtapi/rtapi_ctype.h index aaed49d865..fbeb3b845f 100644 --- a/src/rtapi/rtapi_ctype.h +++ b/src/rtapi/rtapi_ctype.h @@ -13,8 +13,4 @@ // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -#ifdef MODULE -#include -#else #include -#endif diff --git a/src/rtapi/rtapi_errno.h b/src/rtapi/rtapi_errno.h index a48fd286f4..c15f2df833 100644 --- a/src/rtapi/rtapi_errno.h +++ b/src/rtapi/rtapi_errno.h @@ -13,9 +13,4 @@ // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -#ifdef MODULE -#include -#else #include -#endif - diff --git a/src/rtapi/rtapi_heap.c b/src/rtapi/rtapi_heap.c index 85c0d6a50a..cf53e6cd0e 100644 --- a/src/rtapi/rtapi_heap.c +++ b/src/rtapi/rtapi_heap.c @@ -36,15 +36,11 @@ // so it can be used as a shared memory malloc static void _rtapi_unlocked_free(struct rtapi_heap *h, void *ap); -#ifdef MODULE -#define MSG_ORIGIN MSG_KERNEL -#else #ifdef RTAPI #define MSG_ORIGIN MSG_RTUSER #else #define MSG_ORIGIN MSG_ULAPI #endif -#endif #define HEAP_MUTEX(h) (&(h)->mutex) @@ -331,7 +327,7 @@ int _rtapi_heap_init(struct rtapi_heap *heap, const char *name) heap->requested = 0; heap->allocated = 0; heap->freed = 0; - if (name) + if (name) strncpy(heap->name, name, sizeof(heap->name)); else { #ifdef RTAPI @@ -379,4 +375,3 @@ size_t _rtapi_heap_status(struct rtapi_heap *h, } } } - diff --git a/src/rtapi/rtapi_hexdump.c b/src/rtapi/rtapi_hexdump.c index 1f99b7a4e8..e6a6994728 100644 --- a/src/rtapi/rtapi_hexdump.c +++ b/src/rtapi/rtapi_hexdump.c @@ -18,17 +18,6 @@ #include /* va_start and va_end macros */ -#ifdef MODULE -#include "rtapi_app.h" - -#include -#include -#include -#include - -#else /* user land */ - - #include #include #include @@ -40,14 +29,11 @@ typeof(y) _min2 = (y); \ (void) (&_min1 == &_min2); \ _min1 < _min2 ? _min1 : _min2; }) -#endif // API doc moved to rtapi_hexdump.h -#ifndef MODULE const char hex_asc[] = "0123456789abcdef"; -#endif void rtapi_hex_dump_to_buffer(const void *buf, size_t len, int rowsize, int groupsize, char *linebuf, size_t linebuflen, diff --git a/src/rtapi/rtapi_io.h b/src/rtapi/rtapi_io.h index 04cc2f37b6..d9faa5b175 100644 --- a/src/rtapi/rtapi_io.h +++ b/src/rtapi/rtapi_io.h @@ -6,17 +6,17 @@ * inline functions. * * Copyright 2006-2013 Various Authors -* +* * This program 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 2 of the License, or * (at your option) any later version. -* +* * This program 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 this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA @@ -28,16 +28,7 @@ #include "config.h" // build configuration #include "rtapi.h" // these functions - -#ifdef MODULE -# if LINUX_VERSION_CODE > KERNEL_VERSION(2,4,17) -# include /* inb(), outb() */ -# else -# include /* inb(), outb() */ -# endif -#else -# include /* inb(), outb() */ -#endif +#include /* inb(), outb() */ #ifdef RTAPI_IO diff --git a/src/rtapi/rtapi_math/k_standard.c b/src/rtapi/rtapi_math/k_standard.c index 54c662d2c6..baef666606 100644 --- a/src/rtapi/rtapi_math/k_standard.c +++ b/src/rtapi/rtapi_math/k_standard.c @@ -5,7 +5,7 @@ * * Developed at SunPro, a Sun Microsystems, Inc. business. * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice + * software is freely granted, provided that this notice * is preserved. * ==================================================== */ @@ -19,12 +19,7 @@ static char rcsid[] = "$NetBSD: k_standard.c,v 1.6 1995/05/10 20:46:35 jtc Exp $ extern int libm_errno; -#ifdef MODULE -#include -#define WRITE2(u,v) printk("%.*s",v,u) -#else #define WRITE2(u,v) (v) //rtapi_print("%.*s",v,u) /* FIXME, rtapi or userspace? */ -#endif #ifdef __STDC__ static const double zero = 0.0; /* used as const */ @@ -32,7 +27,7 @@ static const double zero = 0.0; /* used as const */ static double zero = 0.0; /* used as const */ #endif -/* +/* * Standard conformance (non-IEEE) on exception cases. * Mapping: * 1 -- acos(|x|>1) @@ -57,7 +52,7 @@ static double zero = 0.0; /* used as const */ * 20-- pow(0.0,0.0) * 21-- pow(x,y) overflow * 22-- pow(x,y) underflow - * 23-- pow(0,negative) + * 23-- pow(0,negative) * 24-- pow(neg,non-integral) * 25-- sinh(finite) overflow * 26-- sqrt(negative) @@ -81,14 +76,14 @@ static double zero = 0.0; /* used as const */ #ifdef __STDC__ - double __kernel_standard(double x, double y, int type) + double __kernel_standard(double x, double y, int type) #else - double __kernel_standard(x,y,type) + double __kernel_standard(x,y,type) double x,y; int type; #endif { struct exception exc; -#ifndef HUGE_VAL /* this is the only routine that uses HUGE_VAL */ +#ifndef HUGE_VAL /* this is the only routine that uses HUGE_VAL */ #define HUGE_VAL inf double inf = 0.0; @@ -465,7 +460,7 @@ static double zero = 0.0; /* used as const */ /* 0**neg */ exc.type = DOMAIN; exc.name = type < 100 ? "pow" : "powf"; - if (_LIB_VERSION == _SVID_) + if (_LIB_VERSION == _SVID_) exc.retval = zero; else exc.retval = -HUGE_VAL; @@ -483,11 +478,11 @@ static double zero = 0.0; /* used as const */ /* neg**non-integral */ exc.type = DOMAIN; exc.name = type < 100 ? "pow" : "powf"; - if (_LIB_VERSION == _SVID_) + if (_LIB_VERSION == _SVID_) exc.retval = zero; - else + else exc.retval = zero/zero; /* X/Open allow NaN */ - if (_LIB_VERSION == _POSIX_) + if (_LIB_VERSION == _POSIX_) libm_errno = EDOM; else if (!matherr(&exc)) { if (_LIB_VERSION == _SVID_) { @@ -645,7 +640,7 @@ static double zero = 0.0; /* used as const */ (void) WRITE2(": TLOSS error\n", 14); } libm_errno = ERANGE; - } + } break; case 35: case 135: @@ -661,7 +656,7 @@ static double zero = 0.0; /* used as const */ (void) WRITE2(": TLOSS error\n", 14); } libm_errno = ERANGE; - } + } break; case 36: case 136: @@ -677,7 +672,7 @@ static double zero = 0.0; /* used as const */ (void) WRITE2(": TLOSS error\n", 14); } libm_errno = ERANGE; - } + } break; case 37: case 137: @@ -693,7 +688,7 @@ static double zero = 0.0; /* used as const */ (void) WRITE2(": TLOSS error\n", 14); } libm_errno = ERANGE; - } + } break; case 38: case 138: @@ -709,7 +704,7 @@ static double zero = 0.0; /* used as const */ (void) WRITE2(": TLOSS error\n", 14); } libm_errno = ERANGE; - } + } break; case 39: case 139: @@ -725,7 +720,7 @@ static double zero = 0.0; /* used as const */ (void) WRITE2(": TLOSS error\n", 14); } libm_errno = ERANGE; - } + } break; case 40: case 140: @@ -774,5 +769,5 @@ static double zero = 0.0; /* used as const */ } break; } - return exc.retval; + return exc.retval; } diff --git a/src/rtapi/rtapi_math/mathP.h b/src/rtapi/rtapi_math/mathP.h index a9d1e26c7c..727d8dc3cb 100644 --- a/src/rtapi/rtapi_math/mathP.h +++ b/src/rtapi/rtapi_math/mathP.h @@ -4,7 +4,7 @@ * * Developed at SunPro, a Sun Microsystems, Inc. business. * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice + * software is freely granted, provided that this notice * is preserved. * ==================================================== */ @@ -17,11 +17,7 @@ #ifndef _MATH_PRIVATE_H_ #define _MATH_PRIVATE_H_ -#ifdef MODULE -#include -#else #include -#endif #include "rtapi_byteorder.h" #define __P(args) args @@ -88,10 +84,10 @@ extern double __kernel_standard(double x, double y, int type); #if RTAPI_BIG_ENDIAN -typedef union +typedef union { double value; - struct + struct { u_int32_t msw; u_int32_t lsw; @@ -102,10 +98,10 @@ typedef union #if RTAPI_LITTLE_ENDIAN -typedef union +typedef union { double value; - struct + struct { u_int32_t lsw; u_int32_t msw; @@ -200,13 +196,13 @@ do { \ } while (0) /* ieee style elementary functions */ -extern double __ieee754_sqrt __P((double)); -extern double __ieee754_acos __P((double)); -extern double __ieee754_acosh __P((double)); -extern double __ieee754_log __P((double)); -extern double __ieee754_atanh __P((double)); -extern double __ieee754_asin __P((double)); -extern double __ieee754_atan2 __P((double,double)); +extern double __ieee754_sqrt __P((double)); +extern double __ieee754_acos __P((double)); +extern double __ieee754_acosh __P((double)); +extern double __ieee754_log __P((double)); +extern double __ieee754_atanh __P((double)); +extern double __ieee754_asin __P((double)); +extern double __ieee754_atan2 __P((double,double)); extern double __ieee754_exp __P((double)); extern double __ieee754_cosh __P((double)); extern double __ieee754_fmod __P((double,double)); @@ -233,7 +229,7 @@ extern double __ieee754_scalb __P((double,double)); #endif /* fdlibm kernel function */ -extern double __kernel_standard __P((double,double,int)); +extern double __kernel_standard __P((double,double,int)); extern double __kernel_sin __P((double,double,int)); extern double __kernel_cos __P((double,double)); extern double __kernel_tan __P((double,double,int)); @@ -241,13 +237,13 @@ extern int __kernel_rem_pio2 __P((double*,double*,int,int,int,const int*)); /* ieee style elementary float functions */ -extern float __ieee754_sqrtf __P((float)); -extern float __ieee754_acosf __P((float)); -extern float __ieee754_acoshf __P((float)); -extern float __ieee754_logf __P((float)); -extern float __ieee754_atanhf __P((float)); -extern float __ieee754_asinf __P((float)); -extern float __ieee754_atan2f __P((float,float)); +extern float __ieee754_sqrtf __P((float)); +extern float __ieee754_acosf __P((float)); +extern float __ieee754_acoshf __P((float)); +extern float __ieee754_logf __P((float)); +extern float __ieee754_atanhf __P((float)); +extern float __ieee754_asinf __P((float)); +extern float __ieee754_atan2f __P((float,float)); extern float __ieee754_expf __P((float)); extern float __ieee754_coshf __P((float)); extern float __ieee754_fmodf __P((float,float)); diff --git a/src/rtapi/rtapi_module.c b/src/rtapi/rtapi_module.c deleted file mode 100644 index 72ebafdfc1..0000000000 --- a/src/rtapi/rtapi_module.c +++ /dev/null @@ -1,594 +0,0 @@ -/******************************************************************** -* Description: rtapi_module.c -* -* This file, 'rtapi_module.c', implements the -* init_module(), cleanup_module(), rtapi_init(), -* rtapi_exit() and module_delete() functions for kernel -* space thread systems. -* -* It should not be built for userspace thread systems. -* -* Copyright 2006-2013 Various Authors -* -* This program 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 2 of the License, or -* (at your option) any later version. -* -* This program 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 this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -********************************************************************/ - -#include "config.h" // build configuration -#include "rtapi.h" // these functions -#include "rtapi_common.h" // RTAPI macros and decls -#include "ring.h" -#include "rtapi_heap.h" -#include "shmdrv.h" - - -#ifdef MODULE -#include "rtapi_proc.h" /* proc filesystem decls & code */ - -# if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,0) -# include /* NR_CPUS, cpu_online() */ -# endif -#endif - -extern void init_rtapi_data(rtapi_data_t * data); - -#ifdef RTAPI -MODULE_AUTHOR("Michael Haberler"); -MODULE_DESCRIPTION("RTAPI module support - kernel threads"); -MODULE_LICENSE("GPL"); - -// kernel styles do not support multiple instances -// this just numbers this particular instance to fit with the scheme -int rtapi_instance; - -RTAPI_MP_INT(rtapi_instance, "RTAPI instance id"); -EXPORT_SYMBOL(rtapi_instance); - -global_data_t *global_data = NULL; -EXPORT_SYMBOL(global_data); - -rtapi_switch_t *rtapi_switch = NULL; -EXPORT_SYMBOL(rtapi_switch); - -struct rtapi_heap *global_heap = NULL; -EXPORT_SYMBOL(global_heap); - -ringbuffer_t rtapi_message_buffer; // error ring access strcuture - -/* the following are internal functions that do the real work associated - with deleting tasks, etc. They do not check the mutex that protects - the internal data structures. When someone calls an rtapi_xxx_delete() - function, the rtapi funct gets the mutex before calling one of these - internal functions. When internal code that already has the mutex - needs to delete something, it calls these functions directly. -*/ -static int module_delete(int module_id); -extern void _rtapi_module_cleanup_hook(void); - -/*********************************************************************** -* INIT AND SHUTDOWN FUNCTIONS * -************************************************************************/ - -#ifdef HAVE_RTAPI_MODULE_INIT_HOOK -void _rtapi_module_init_hook(void); -#endif - -#ifdef HAVE_RTAPI_MODULE_EXIT_HOOK -void _rtapi_module_exit_hook(void); -#endif - -int init_module(void) { - int n; - struct shm_status sm; - int retval, gsize; - - rtapi_switch = rtapi_get_handle(); - - // first thing: attach global_data - sm.key = OS_KEY(GLOBAL_KEY, rtapi_instance); - sm.size = 0; - sm.flags = 0; - - if ((retval = shmdrv_attach(&sm, (void **)&global_data)) < 0) { - // cant use the message ringbuffer just yet - printk("RTAPI ERROR: can attach global segment: %d", - retval); - return -EINVAL; - } - gsize = sm.size; - - // fail immediately if the global segment isnt in shape yet - // this catches https://github.com/zultron/linuxcnc/issues/49 early - if (global_data->magic != GLOBAL_READY) { - - printk("RTAPI ERROR: bad global magic: 0x%x", - global_data->magic); - - // TBD: remove once cause identified - printk("halsize=%d\n", global_data->hal_size); - printk("msgd pid=%d\n", global_data->rtapi_msgd_pid); - printk("magic=%x\n", global_data->magic); - printk("flavor=%d\n", global_data->rtapi_thread_flavor); - // fail the insmod - return -EINVAL; - } - - // say hello - this now goes through the message ringbuffer - RTAPIINFO("%s %s init", - rtapi_get_handle()->thread_flavor_name, - GIT_VERSION); - - sm.key = OS_KEY(RTAPI_KEY, rtapi_instance); - sm.size = sizeof(rtapi_data_t); - sm.flags = 0; - if ((retval = shmdrv_create(&sm)) < 0) { - RTAPIERR("can create rtapi segment: %d", retval); - return -EINVAL; - } - if ((retval = shmdrv_attach(&sm, (void **)&rtapi_data)) < 0) { - RTAPIERR("cant attach rtapi segment: %d", retval); - return -EINVAL; - } - // this heap is inited in rtapi_msgd.cc - // make it accessible in RTAPI - global_heap = &global_data->heap; - - // make the message ringbuffer accessible - ringbuffer_init(shm_ptr(global_data, global_data->rtapi_messages_ptr), - &rtapi_message_buffer); - rtapi_message_buffer.header->refcount++; // rtapi is 'attached' - - // tag messages originating from RT proper - rtapi_set_logtag("rt"); - - /* this will take care of any threads flavor hook */ - init_rtapi_data(rtapi_data); - - /* check flavor and serial codes */ - if ((rtapi_data->thread_flavor_id != THREAD_FLAVOR_ID) || - (rtapi_data->serial != RTAPI_SERIAL)) { - - if (rtapi_data->thread_flavor_id != THREAD_FLAVOR_ID) - RTAPIERR("flavor mismatch %d vs %d", - rtapi_data->thread_flavor_id, - THREAD_FLAVOR_ID); - - if (rtapi_data->serial != RTAPI_SERIAL) - RTAPIERR("serial mismatch '%d' vs '%d'", - rtapi_data->serial, RTAPI_SERIAL); - - // release rtapi and global shared memory blocks - sm.key = OS_KEY(RTAPI_KEY, rtapi_instance); - sm.size = sizeof(rtapi_data_t); - sm.flags = 0; - if ((retval = shmdrv_detach(&sm)) < 0) - RTAPIERR("shmdrv_detach(rtapi=0x%x,%zu) returns %d", - sm.key, sm.size, retval); - - sm.key = OS_KEY(GLOBAL_KEY, rtapi_instance); - sm.size = gsize; - sm.flags = 0; - if ((retval = shmdrv_detach(&sm)) < 0) - RTAPIERR("shmdrv_detach(global=0x%x,%zu) returns %d", - sm.key, sm.size, retval); - - return -EINVAL; - } - - /* set up local pointers to global data */ - module_array = rtapi_data->module_array; - task_array = rtapi_data->task_array; - shmem_array = rtapi_data->shmem_array; - - /* perform local init */ - for (n = 0; n <= RTAPI_MAX_TASKS; n++) { - ostask_array[n] = NULL; - } - for (n = 0; n <= RTAPI_MAX_SHMEMS; n++) { - shmem_addr_array[n] = NULL; - } - rtapi_data->timer_running = 0; - rtapi_data->timer_period = 0; - max_delay = DEFAULT_MAX_DELAY; - -#ifdef RT_LINUX_USE_FPU - rt_linux_use_fpu(1); -#endif - -#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,0) - /* on SMP machines, we want to put RT code on the last CPU */ - n = NR_CPUS-1; - while ( ! cpu_online(n) ) { - n--; - } - rtapi_data->rt_cpu = n; -#else - /* old kernel, the SMP hooks aren't available, so use CPU 0 */ - rtapi_data->rt_cpu = 0; -#endif - - -#ifdef CONFIG_PROC_FS - /* set up /proc/rtapi */ - if (proc_init() != 0) { - RTAPIWARN("Could not activate /proc entries"); - proc_clean(); - } -#endif - -#ifdef HAVE_RTAPI_MODULE_INIT_HOOK - _rtapi_module_init_hook(); -#endif - - RTAPIINFO("Init complete"); - return 0; -} - -/* This cleanup code attempts to fix any messes left by modules -that fail to load properly, or fail to clean up after themselves */ - -void cleanup_module(void) { - int n; - struct shm_status sm; - int retval; - - if (rtapi_data == NULL) { - /* never got inited, nothing to do */ - return; - } - -#ifdef HAVE_RTAPI_MODULE_EXIT_HOOK - _rtapi_module_exit_hook(); -#endif - - /* grab the mutex */ - rtapi_mutex_get(&(rtapi_data->mutex)); - RTAPIINFO("exit"); - - /* clean up leftover modules (start at 1, we don't use ID 0 */ - for (n = 1; n <= RTAPI_MAX_MODULES; n++) { - if (module_array[n].state == REALTIME) { - RTAPIWARN("module '%s' (ID: %02d) did not " - "call rtapi_exit()", - module_array[n].name, n); - module_delete(n); - } - } - - /* cleaning up modules should clean up everything, if not there has - probably been an unrecoverable internal error.... */ - for (n = 1; n <= RTAPI_MAX_SHMEMS; n++) { - if (shmem_array[n].rtusers > 0) { - RTAPIERR("shared memory block %02d not deleted, " - "%d RT users left", n, - shmem_array[n].rtusers ); - } - } - for (n = 1; n <= RTAPI_MAX_TASKS; n++) { - if (task_array[n].state != EMPTY) { - RTAPIERR("task %02d not deleted", n); - /* probably un-recoverable, but try anyway */ - _rtapi_task_pause(n); - /* rtapi_task_delete should not grab mutex */ - task_array[n].state = DELETE_LOCKED; - _rtapi_task_delete(n); - } - } - if (rtapi_data->timer_running != 0) { -#ifdef HAVE_RTAPI_MODULE_TIMER_STOP - _rtapi_module_timer_stop(); -#endif - rtapi_data->timer_period = 0; - timer_counts = 0; - rtapi_data->timer_running = 0; - max_delay = DEFAULT_MAX_DELAY; - } - rtapi_mutex_give(&(rtapi_data->mutex)); -#ifdef CONFIG_PROC_FS - proc_clean(); -#endif - - sm.key = OS_KEY(RTAPI_KEY, rtapi_instance); - sm.size = sizeof(rtapi_data_t); - sm.flags = 0; - if ((retval = shmdrv_detach(&sm)) < 0) { - RTAPIERR("shmdrv_detach(rtapi) returns %d", - retval); - } - rtapi_data = NULL; - rtapi_message_buffer.header->refcount--; // detach rtapi end - - sm.key = OS_KEY(GLOBAL_KEY, rtapi_instance); - sm.size = sizeof(global_data_t); - sm.flags = 0; - if ((retval = shmdrv_detach(&sm)) < 0) { - RTAPIERR("shmdrv_detach(global) returns %d", - retval); - } - global_data = NULL; - - RTAPIINFO("Exit complete"); - return; -} - -/*********************************************************************** -* GENERAL PURPOSE FUNCTIONS * -************************************************************************/ - -/* all RTAPI init is done when the rtapi kernel module -is insmoded. The rtapi_init() and rtapi_exit() functions -simply register that another module is using the RTAPI. -For other RTOSes, things might be different, especially -if the RTOS does not use modules. */ - -int _rtapi_init(const char *modname) { - int n, module_id; - module_data *module; - - RTAPIDBG("initing module %s", modname); - - /* get the mutex */ - rtapi_mutex_get(&(rtapi_data->mutex)); - - /* find empty spot in module array */ - n = 1; - while ((n <= RTAPI_MAX_MODULES) && (module_array[n].state != NO_MODULE)) { - n++; - } - if (n > RTAPI_MAX_MODULES) { - /* no room */ - rtapi_mutex_give(&(rtapi_data->mutex)); - RTAPIERR("'%s': reached module limit %d", modname, n); - return -EMFILE; - } - - /* we have space for the module */ - module_id = n; - module = &(module_array[n]); - /* update module data */ - module->state = REALTIME; - if (modname != NULL) { - /* use name supplied by caller, truncating if needed */ - rtapi_snprintf(module->name, RTAPI_NAME_LEN, - "%s", modname); - } else { - /* make up a name */ - rtapi_snprintf(module->name, RTAPI_NAME_LEN, - "RTMOD%03d", module_id); - } - rtapi_data->rt_module_count++; - RTAPIDBG("module '%s' loaded, ID: %d", - module->name, module_id); - rtapi_mutex_give(&(rtapi_data->mutex)); - return module_id; -} - -int _rtapi_exit(int module_id) { - int retval; - - rtapi_mutex_get(&(rtapi_data->mutex)); - retval = module_delete(module_id); - rtapi_mutex_give(&(rtapi_data->mutex)); - return retval; -} - -static int module_delete(int module_id) { - module_data *module; - char name[RTAPI_NAME_LEN + 1]; - int n; - - RTAPIDBG("module %d exiting", module_id); - - /* validate module ID */ - if ((module_id < 1) || (module_id > RTAPI_MAX_MODULES)) { - return -EINVAL; - } - - /* point to the module's data */ - module = &(module_array[module_id]); - - /* check module status */ - if (module->state != REALTIME) { - /* not an active realtime module */ - return -EINVAL; - } - /* clean up any mess left behind by the module */ - for (n = 1; n <= RTAPI_MAX_TASKS; n++) { - if ((task_array[n].state != EMPTY) - && (task_array[n].owner == module_id)) { - RTAPIWARN("module '%s' failed to delete task %02d", - module->name, n); - task_array[n].state = DELETE_LOCKED; - _rtapi_task_delete(n); - } - } - for (n = 1; n <= RTAPI_MAX_SHMEMS; n++) { - if (rtapi_test_bit(module_id, shmem_array[n].bitmap)) { - - RTAPIWARN("module '%s' failed to delete shmem %02d rt=%d ul=%d", - module->name, n, - shmem_array[n].rtusers, - shmem_array[n].ulusers); - - // mark block as ready for delete, lock already held - shmem_array[n].magic = SHMEM_MAGIC_DEL_LOCKED; - _rtapi_shmem_delete(n, module_id); - } - } - - rtapi_snprintf(name, RTAPI_NAME_LEN, "%s", module->name); - - /* update module data */ - module->state = NO_MODULE; - module->name[0] = '\0'; - rtapi_data->rt_module_count--; - if (rtapi_data->rt_module_count == 0) { - if (rtapi_data->timer_running != 0) { -#ifdef HAVE_RTAPI_MODULE_TIMER_STOP - _rtapi_module_timer_stop(); -#endif - rtapi_data->timer_period = 0; - timer_counts = 0; - max_delay = DEFAULT_MAX_DELAY; - rtapi_data->timer_running = 0; - } - } - RTAPIDBG("module %d exited, name: '%s'", - module_id, name); - return 0; -} - -#else /* ULAPI */ - -int _rtapi_init(const char *modname) { - int n, module_id; - module_data *module; - struct shm_status sm; - int retval; - - ULAPIDBG("initing module '%s'", modname); - - errno = 0; - - // if not done yet, attach global and rtapi_data segments now - if (global_data == NULL) { - sm.key = OS_KEY(GLOBAL_KEY, rtapi_instance); - sm.size = sizeof(global_data_t); - sm.flags = 0; - if ((retval = shmdrv_attach(&sm, (void **)&global_data)) < 0) { - ULAPIERR(" '%s' - cant attach global segment: %d", - modname, retval); - return -EINVAL; - } - sm.key = OS_KEY(RTAPI_KEY, rtapi_instance); - sm.size = sizeof(rtapi_data_t); - sm.flags = 0; - if ((retval = shmdrv_attach(&sm, (void **)&rtapi_data)) < 0) { - ULAPIERR(" '%s' - cant attach rtapi segment: %d", - modname, retval); - return -EINVAL; - } - } - // I consider this very dubious - there is no reason for ULAPI to start without - // rtapi_data already being inited: -mah - // init_rtapi_data(rtapi_data); - - /* check flavor and serial codes */ - if (rtapi_data->thread_flavor_id != THREAD_FLAVOR_ID) { - /* mismatch - release master shared memory block */ - ULAPIERR(" '%s' - flavor mismatch %d vs %d", - modname, rtapi_data->thread_flavor_id, - THREAD_FLAVOR_ID); - return -EINVAL; - } - if (rtapi_data->serial != RTAPI_SERIAL) { - /* mismatch - release master shared memory block */ - - ULAPIERR("serial mismatch %d vs %d", - rtapi_data->serial, RTAPI_SERIAL); - return -EINVAL; - } - /* set up local pointers to global data */ - module_array = rtapi_data->module_array; - task_array = rtapi_data->task_array; - shmem_array = rtapi_data->shmem_array; - - /* perform local init */ - for (n = 0; n <= RTAPI_MAX_SHMEMS; n++) { - shmem_addr_array[n] = NULL; - } - - /* get the mutex */ - rtapi_mutex_get(&(rtapi_data->mutex)); - /* find empty spot in module array */ - n = 1; - while ((n <= RTAPI_MAX_MODULES) && (module_array[n].state != NO_MODULE)) { - n++; - } - if (n > RTAPI_MAX_MODULES) { - /* no room */ - rtapi_mutex_give(&(rtapi_data->mutex)); - ULAPIERR("reached module limit %d",n); - return -EMFILE; - } - /* we have space for the module */ - module_id = n; - module = &(module_array[n]); - /* update module data */ - module->state = USERSPACE; - if (modname != NULL) { - /* use name supplied by caller, truncating if needed */ - rtapi_snprintf(module->name, RTAPI_NAME_LEN, "%s", modname); - } else { - /* make up a name */ - rtapi_snprintf(module->name, RTAPI_NAME_LEN, "ULMOD%03d", module_id); - } - rtapi_data->ul_module_count++; - rtapi_mutex_give(&(rtapi_data->mutex)); - ULAPIDBG("module '%s' inited, ID = %02d", - module->name, module_id); - return module_id; -} - -int _rtapi_exit(int module_id) { - module_data *module; - int n; - - if (rtapi_data == NULL) { - ULAPIERR("exit called before init"); - return -EINVAL; - } - - ULAPIDBG("module %02d exiting", module_id); - - /* validate module ID */ - if ((module_id < 1) || (module_id > RTAPI_MAX_MODULES)) { - ULAPIERR("bad module id %d", module_id); - return -EINVAL; - } - - /* get mutex */ - rtapi_mutex_get(&(rtapi_data->mutex)); - - /* point to the module's data */ - module = &(module_array[module_id]); - /* check module status */ - if (module->state != USERSPACE) { - ULAPIERR("not a userspace module: %d", module_id); - rtapi_mutex_give(&(rtapi_data->mutex)); - return -EINVAL; - } - /* clean up any mess left behind by the module */ - for (n = 1; n <= RTAPI_MAX_SHMEMS; n++) { - if (rtapi_test_bit(module_id, shmem_array[n].bitmap)) { - ULAPIWARN("module '%s' failed to delete " - "shmem %02d", module->name, n); - // mark block as ready for delete, lock already held - shmem_array[n].magic = SHMEM_MAGIC_DEL_LOCKED; - _rtapi_shmem_delete(n, module_id); - } - } - /* update module data */ - ULAPIDBG("module %02d exited, name = '%s'", - module_id, module->name); - module->state = NO_MODULE; - module->name[0] = '\0'; - rtapi_data->ul_module_count--; - rtapi_mutex_give(&(rtapi_data->mutex)); - return 0; -} - - -#endif /* ULAPI */ - diff --git a/src/rtapi/rtapi_shmem.c b/src/rtapi/rtapi_shmem.c index 349beee125..e1044bf2fa 100644 --- a/src/rtapi/rtapi_shmem.c +++ b/src/rtapi/rtapi_shmem.c @@ -6,17 +6,17 @@ * rtapi.h for more info. * * Copyright 2006-2013 Various Authors -* +* * This program 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 2 of the License, or * (at your option) any later version. -* +* * This program 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 this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA @@ -27,7 +27,6 @@ #include "rtapi_common.h" #include "shmdrv.h" -#ifdef BUILD_SYS_USER_DSO #include #include #include @@ -36,39 +35,10 @@ #include /* rand_r() */ #include /* getuid(), getgid(), sysconf(), ssize_t, _SC_PAGESIZE */ - -#else /* BUILD_SYS_KBUILD */ -# ifdef ULAPI -# include // perror -# include -# include -# include "rtapi/shmdrv/shmdrv.h" -# endif -#endif +#include // memset() #define SHM_PERMISSIONS 0666 -#ifdef BUILD_SYS_KBUILD -# ifdef RTAPI -# define MODULE_STATE REALTIME -# define OUR_API "RTAPI" -# else -# define MODULE_STATE USERSPACE -# define OUR_API "ULAPI" -# endif -#endif - -#if defined(BUILD_SYS_KBUILD) && defined(ULAPI) -static void check_memlock_limit(const char *where); -#endif - - -#ifdef BUILD_SYS_KBUILD -void *shmem_addr_array[RTAPI_MAX_SHMEMS + 1]; -#endif - - -#ifdef BUILD_SYS_USER_DSO /*********************************************************************** * USERLAND THREADS * ************************************************************************/ @@ -215,335 +185,6 @@ int _rtapi_shmem_exists(int userkey) { return shm_common_exists(userkey); } -#else /* BUILD_SYS_KBUILD */ -/*********************************************************************** -* KERNEL THREADS * -************************************************************************/ - -int _rtapi_shmem_new_inst(int userkey, int instance, int module_id, unsigned long int size) { - int n, retval; - int shmem_id; - shmem_data *shmem; - struct shm_status sm; - - int key = OS_KEY(userkey, instance); - - /* key must be non-zero, and also cannot match the key that RTAPI uses */ - if ((key == 0) || (key == OS_KEY(RTAPI_KEY, instance))) { - rtapi_print_msg(RTAPI_MSG_ERR, "RTAPI: ERROR: bad shmem key: 0x%x\n", - key); - return -EINVAL; - } - /* get the mutex */ - rtapi_mutex_get(&(rtapi_data->mutex)); - /* validate module_id */ - if ((module_id < 1) || (module_id > RTAPI_MAX_MODULES)) { - rtapi_mutex_give(&(rtapi_data->mutex)); - rtapi_print_msg(RTAPI_MSG_ERR, "RTAPI: ERROR: bad module ID: %d\n", - module_id); - return -EINVAL; - } - if (module_array[module_id].state != MODULE_STATE) { - rtapi_print_msg(RTAPI_MSG_ERR, - "RTAPI: ERROR: not a " OUR_API " module ID: %d\n", - module_id); - rtapi_mutex_give(&(rtapi_data->mutex)); - return -EINVAL; - } - - /* check if a block is already open for this key */ - for (n = 1; n <= RTAPI_MAX_SHMEMS; n++) { - if (shmem_array[n].key == key) { - /* found a match */ - shmem_id = n; - shmem = &(shmem_array[n]); - /* is it big enough? */ - if (shmem->size < size) { - rtapi_mutex_give(&(rtapi_data->mutex)); - rtapi_print_msg(RTAPI_MSG_ERR, - "RTAPI: ERROR: shmem size mismatch: request: %ld actual: %ld\n", - size, shmem->size); - return -EINVAL; - } - /* is this module already using it? */ - // redefine size == 0 to mean 'attach only, dont create' - if (rtapi_test_bit(module_id, shmem->bitmap) && (size > 0)) { - rtapi_mutex_give(&(rtapi_data->mutex)); - rtapi_print_msg(RTAPI_MSG_WARN, - "RTAPI: Warning: shmem %d key 0x%x already mapped\n", - n, key); - return -EEXIST; - } - /* yes, has it been mapped into kernel space? */ -#ifdef RTAPI - if (shmem->rtusers == 0) { -#endif - /* no, map it and save the address */ - sm.key = key; - sm.size = size; - sm.flags = 0; -#ifdef ULAPI - sm.driver_fd = shmdrv_driver_fd(); -#endif - retval = shmdrv_attach(&sm, &shmem_addr_array[shmem_id]); - if (retval < 0) { - rtapi_mutex_give(&(rtapi_data->mutex)); - rtapi_print_msg(RTAPI_MSG_ERR, - "shmdrv attached failed key=0x%x size=%ld\n", key, size); - return retval; - } - if (shmem_addr_array[shmem_id] == NULL) { - rtapi_print_msg(RTAPI_MSG_ERR, - "RTAPI: ERROR: failed to map shmem %d\n", shmem_id); - rtapi_mutex_give(&(rtapi_data->mutex)); -#ifdef ULAPI - check_memlock_limit("failed to map shmem"); -#endif - return -ENOMEM; - } -#ifdef RTAPI - } -#endif - - // increase refcount only if not already used - if (!rtapi_test_bit(module_id, shmem->bitmap)) { -#ifdef ULAPI - shmem->ulusers++; -#else /* RTAPI */ - shmem->rtusers++; -#endif /* RTAPI */ - } - /* update usage data */ - rtapi_set_bit(module_id, shmem->bitmap); - - /* announce another user for this shmem */ - rtapi_print_msg(RTAPI_MSG_DBG, - "RTAPI: shmem %02d 0x%x opened by module %02d\n", - shmem_id, key, module_id); - /* done */ - rtapi_mutex_give(&(rtapi_data->mutex)); - return shmem_id; - } - } - /* find empty spot in shmem array */ - n = 1; - while ((n <= RTAPI_MAX_SHMEMS) && (shmem_array[n].key != 0)) { - rtapi_print_msg(RTAPI_MSG_DBG, OUR_API ": shmem %d occupied \n",n); - n++; - } - if (n > RTAPI_MAX_SHMEMS) { - /* no room */ - rtapi_mutex_give(&(rtapi_data->mutex)); - rtapi_print_msg(RTAPI_MSG_ERR, "RTAPI: ERROR: reached shmem limit %d\n", - n); - return -EMFILE; - } - /* we have space for the block data */ - rtapi_print_msg(RTAPI_MSG_DBG, OUR_API ": using new shmem %d key 0x%x\n", - n,key); - shmem_id = n; - shmem = &(shmem_array[n]); - - /* get shared memory block from OS and save its address */ - sm.key = key; - sm.size = size; - sm.flags = 0; -#ifdef ULAPI - sm.driver_fd = shmdrv_driver_fd(); -#endif - retval = shmdrv_create(&sm); - if (retval < 0) { - rtapi_mutex_give(&(rtapi_data->mutex)); - rtapi_print_msg(RTAPI_MSG_ERR,"shmdrv create failed key=0x%x size=%ld\n", key, size); - return retval; - } - retval = shmdrv_attach(&sm, &shmem_addr_array[shmem_id]); - if (retval < 0) { - rtapi_mutex_give(&(rtapi_data->mutex)); - rtapi_print_msg(RTAPI_MSG_ERR,"shmdrv attached failed key=0x%x size=%ld\n", key, size); - return retval; - } - if (shmem_addr_array[shmem_id] == NULL) { - rtapi_mutex_give(&(rtapi_data->mutex)); - rtapi_print_msg(RTAPI_MSG_ERR, - "RTAPI: ERROR: could not create shmem %d key 0x%x\n", - n, key); - return -ENOMEM; - } - /* the block has been created, update data */ - rtapi_set_bit(module_id, shmem->bitmap); - shmem->key = key; -#ifdef RTAPI - shmem->rtusers = 1; - shmem->ulusers = 0; -#else /* ULAPI */ - shmem->rtusers = 0; - shmem->ulusers = 1; -#endif /* ULAPI */ - shmem->size = size; - shmem->magic = SHMEM_MAGIC; - shmem->instance = instance; - rtapi_data->shmem_count++; - - /* zero the first word of the shmem area */ - *((long int *) (shmem_addr_array[shmem_id])) = 0; - /* announce the birth of a brand new baby shmem */ - rtapi_print_msg(RTAPI_MSG_DBG, - "RTAPI: shmem %02d created by module %02d key: 0x%x size: %lu\n", - shmem_id, module_id, key, size); - - /* and return the ID to the proud parent */ - rtapi_mutex_give(&(rtapi_data->mutex)); - return shmem_id; -} - -#ifdef ULAPI -static void check_memlock_limit(const char *where) { - static int checked=0; - struct rlimit lim; - int result; - if(checked) return; - checked=1; - - result = getrlimit(RLIMIT_MEMLOCK, &lim); - if(result < 0) { perror("getrlimit"); return; } - if(lim.rlim_cur == (rlim_t)-1) return; // unlimited - if(lim.rlim_cur >= RLIMIT_MEMLOCK_RECOMMENDED) return; // limit is at least recommended - rtapi_print_msg(RTAPI_MSG_ERR, - "RTAPI: Locked memory limit is %luKiB, recommended at least %luKiB.\n" - "This can cause the error '%s'.\n" - "For more information, see\n" - "\thttp://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?LockedMemory\n", - (unsigned long)lim.rlim_cur/1024, RLIMIT_MEMLOCK_RECOMMENDED/1024, where); - return; -} -#endif /* ULAPI */ - - -int _rtapi_shmem_delete_inst(int shmem_id, int instance, int module_id) { - shmem_data *shmem; - int manage_lock, retval; -#ifdef RTAPI - struct shm_status sm; -#endif - - /* validate shmem ID */ - if ((shmem_id < 1) || (shmem_id > RTAPI_MAX_SHMEMS)) { - return -EINVAL; - } - /* point to the shmem's data */ - shmem = &(shmem_array[shmem_id]); - /* is the block valid? */ - if (shmem->key == 0) { - return -EINVAL; - } - /* validate module_id */ - if ((module_id < 1) || (module_id > RTAPI_MAX_MODULES)) { - return -EINVAL; - } - if (module_array[module_id].state != MODULE_STATE) { - return -EINVAL; - } - /* is this module using the block? */ - if (rtapi_test_bit(module_id, shmem->bitmap) == 0) { - return -EINVAL; - } - /* check if we need to manage the mutex */ - manage_lock = (shmem->magic != SHMEM_MAGIC_DEL_LOCKED); - /* if no magic delete lock held is set, get the mutex */ - if (manage_lock) rtapi_mutex_get(&(rtapi_data->mutex)); - /* OK, we're no longer using it */ - rtapi_clear_bit(module_id, shmem->bitmap); -#ifdef ULAPI - shmem->ulusers--; - - if ((shmem->ulusers == 0) && (shmem->rtusers == 0)) { - // shmdrv can detach unused shared memory from userland too - // this will munmap() the segment causing a drop in uattach refcount - // and eventual free by garbage collect in shmdrv - retval = shm_common_detach(shmem->size, shmem_addr_array[shmem_id]); - if (retval) { - rtapi_print_msg(RTAPI_MSG_ERR, - "ULAPI:%d ERROR: shm_common_detach(%02d) failed: %d\n", - rtapi_instance, shmem_id, retval); - } - } - /* unmap the block */ - shmem_addr_array[shmem_id] = NULL; -#else /* RTAPI */ - shmem->rtusers--; -#endif /* RTAPI */ - /* is somebody else still using the block? */ - if ((shmem->ulusers > 0) || (shmem->rtusers > 0)) { - /* yes, we're done for now */ - rtapi_print_msg(RTAPI_MSG_DBG, - "RTAPI: shmem %02d key 0x%x closed by module %02d\n", - shmem_id, shmem->key, module_id); - if (manage_lock) rtapi_mutex_give(&(rtapi_data->mutex)); - return 0; - } - -#ifdef RTAPI - /* no other realtime users, free the shared memory from kernel space */ - shmem_addr_array[shmem_id] = NULL; - shmem->rtusers = 0; - /* are any user processes using the block? */ - if (shmem->ulusers > 0) { - /* yes, we're done for now */ - rtapi_print_msg(RTAPI_MSG_DBG, - "RTAPI: shmem %02d key 0x%x unmapped by module %02d\n", - shmem_id,shmem->key, module_id); - if (manage_lock) rtapi_mutex_give(&(rtapi_data->mutex)); - return 0; - } - - /* no other users at all, this ID is now free */ - sm.key = shmem->key; - sm.size = shmem->size; - sm.flags = 0; - if ((retval = shmdrv_detach(&sm)) < 0) { - rtapi_print_msg(RTAPI_MSG_ERR, - "RTAPI:%d ERROR: shmdrv_detach(%x,%d) fail: %d\n", - rtapi_instance, sm.key, sm.size, retval); - } -#endif /* RTAPI */ - - - /* update the data array and usage count */ - shmem->size = 0; - rtapi_data->shmem_count--; - /* release the lock if needed, print a debug message and return */ - if (manage_lock) rtapi_mutex_give(&(rtapi_data->mutex)); - rtapi_print_msg(RTAPI_MSG_DBG, "RTAPI: shmem %02d key 0x%x freed by module %02d\n", - shmem_id, shmem->key, module_id); - shmem->key = 0; - return 0; -} - -int _rtapi_shmem_getptr_inst(int shmem_id, int instance, void **ptr, - unsigned long int *size) { - /* validate shmem ID */ - if ((shmem_id < 1) || (shmem_id > RTAPI_MAX_SHMEMS)) { - return -EINVAL; - } - /* is the block mapped? */ - if (shmem_addr_array[shmem_id] == NULL) { - return -ENOENT; - } - /* pass memory address back to caller */ - *ptr = shmem_addr_array[shmem_id]; - return 0; -} - -int _rtapi_shmem_exists(int userkey) { - struct shm_status sm; - sm.key = userkey; - - return !shmdrv_status(&sm); -} - -#endif /* BUILD_SYS_KBUILD */ - // implement rtapi_shmem_* calls in terms of _rtapi_shmem_*_inst() diff --git a/src/rtapi/rtapi_string.h b/src/rtapi/rtapi_string.h index 829ec99063..9bc44f0916 100644 --- a/src/rtapi/rtapi_string.h +++ b/src/rtapi/rtapi_string.h @@ -13,28 +13,4 @@ // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -#ifdef MODULE -/* Suspect only very early kernels are missing the basic string functions. - To be sure, see what has been implemented by looking in linux/string.h - and {linux_src_dir}/lib/string.c */ -#include -#include -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0) -#ifndef __HAVE_ARCH_STRCMP /* This flag will be defined if we do */ -#define __HAVE_ARCH_STRCMP /* have strcmp */ -/* some kernels don't have strcmp */ -static int strcmp(const char *cs, const char *ct) -{ - signed char __res; - while (1) { - if ((__res = *cs - *ct++) != 0 || !*cs++) { - break; - } - } - return __res; -} -#endif /* __HAVE_ARCH_STRCMP */ -#endif /* linux 2.4 */ -#else #include -#endif diff --git a/src/rtapi/rtapi_support.c b/src/rtapi/rtapi_support.c index 512b03dc45..4beed3d932 100644 --- a/src/rtapi/rtapi_support.c +++ b/src/rtapi/rtapi_support.c @@ -10,17 +10,17 @@ * RTAPI starts up * * Copyright 2006-2013 Various Authors -* +* * This program 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 2 of the License, or * (at your option) any later version. -* +* * This program 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 this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA @@ -39,16 +39,6 @@ #endif #define RTPRINTBUFFERLEN 256 -#ifdef MODULE -#include "rtapi_app.h" - -#include /* va_* */ -#include /* kernel's vsnprintf */ - -#define MSG_ORIGIN MSG_KERNEL - -#else /* user land */ - #include /* libc's vsnprintf() */ #include #include @@ -58,7 +48,6 @@ #else #define MSG_ORIGIN MSG_ULAPI #endif -#endif static int get_msg_level(void); @@ -157,10 +146,8 @@ void default_rtapi_msg_handler(msg_level_t level, const char *fmt, va_list ap) { static pid_t rtapi_pid; -#if !defined(BUILD_SYS_KBUILD) && !defined(MODULE) if (rtapi_pid == 0) rtapi_pid = getpid(); -#endif vs_ringlogfv(level, rtapi_pid, MSG_ORIGIN, logtag, fmt, ap); } @@ -178,7 +165,7 @@ void rtapi_set_msg_handler(rtapi_msg_handler_t handler) { } // rtapi_get_msg_level and rtapi_set_msg_level moved here -// since they access the global segment +// since they access the global segment // which might not exist during first use // assure we can use message levels before global_data is set up @@ -246,7 +233,7 @@ void rtapi_print(const char *fmt, ...) { void rtapi_print_msg(int level, const char *fmt, ...) { va_list args; - if ((level <= rtapi_get_msg_level()) && + if ((level <= rtapi_get_msg_level()) && (rtapi_get_msg_level() != RTAPI_MSG_NONE)) { va_start(args, fmt); rtapi_msg_handler(level, fmt, args); diff --git a/src/rtapi/rtapi_task.c b/src/rtapi/rtapi_task.c index 0f009b1cf2..f2a31618f3 100644 --- a/src/rtapi/rtapi_task.c +++ b/src/rtapi/rtapi_task.c @@ -12,17 +12,17 @@ * function. * * Copyright 2006-2013 Various Authors -* +* * This program 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 2 of the License, or * (at your option) any later version. -* +* * This program 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 this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA @@ -32,10 +32,6 @@ #include "rtapi.h" // these functions #include "rtapi_common.h" // RTAPI macros and decls -#ifdef MODULE -#include /* kmalloc() */ -#endif - /* These functions are completely different between each userland thread system, so these are defined in rtapi_module.c for kernel @@ -46,12 +42,6 @@ */ -#ifdef MODULE -/* resource data unique to kernel space */ -RT_TASK *ostask_array[RTAPI_MAX_TASKS + 1]; -#endif - - /* priority functions */ /* Some RT systems (well, just RTAI) define lower values as higher @@ -119,25 +109,6 @@ int _rtapi_task_new(const rtapi_task_args_t *args) { /* get the mutex */ rtapi_mutex_get(&(rtapi_data->mutex)); -#ifdef MODULE - /* validate owner */ - if ((args->owner < 1) || (args->owner > RTAPI_MAX_MODULES)) { - rtapi_mutex_give(&(rtapi_data->mutex)); - return -EINVAL; - } - if (module_array[args->owner].state != REALTIME) { - rtapi_mutex_give(&(rtapi_data->mutex)); - return -EINVAL; - } - if ((args->flags & (TF_NONRT|TF_NOWAIT)) != 0) { - rtapi_print_msg(RTAPI_MSG_ERR, - "task '%s' : nowait/posix flags not supported with kthreads\n", - args->name); - rtapi_mutex_give(&(rtapi_data->mutex)); - return -EINVAL; - } -#endif - /* find an empty entry in the task array */ task_id = 1; // tasks start at one! // go through task_array until an empty task slot is found @@ -199,45 +170,10 @@ int _rtapi_task_new(const rtapi_task_args_t *args) { rtapi_print_msg(RTAPI_MSG_DBG, "Task CPU: %d\n", task->cpu); - rtapi_snprintf(task->name, sizeof(task->name), + rtapi_snprintf(task->name, sizeof(task->name), "%s:%d", args->name, rtapi_instance); task->name[sizeof(task->name) - 1] = '\0'; -#ifdef MODULE - /* get space for the OS's task data - this is around 900 bytes, */ - /* so we don't want to statically allocate it for unused tasks. */ - ostask_array[task_id] = kmalloc(sizeof(RT_TASK), GFP_USER); - if (ostask_array[task_id] == NULL) { - rtapi_mutex_give(&(rtapi_data->mutex)); - return -ENOMEM; - } - -#ifdef HAVE_RTAPI_TASK_NEW_HOOK - /* kernel threads: rtapi_task_new_hook() should call OS to - initialize the task - use predetermined or explicitly assigned - CPU */ - retval = _rtapi_task_new_hook(task, task_id); - - if (retval) { - rtapi_print_msg(RTAPI_MSG_ERR, - "rt_task_create failed, rc = %d\n", retval ); - - /* couldn't create task, free task data memory */ - kfree(ostask_array[task_id]); - rtapi_mutex_give(&(rtapi_data->mutex)); - if (retval == ENOMEM) { - /* not enough space for stack */ - return -ENOMEM; - } - /* unknown error */ - return -EINVAL; - } -#endif - - /* the task has been created, update data */ - task->state = PAUSED; - retval = task_id; -#else /* userland thread */ /* userland threads: rtapi_task_new_hook() should perform any thread system-specific tasks, and return task_id or an error code back to the caller (how do we know the diff between an @@ -249,7 +185,6 @@ int _rtapi_task_new(const rtapi_task_args_t *args) { # else retval = task_id; # endif -#endif /* userland thread */ rtapi_data->task_count++; @@ -282,37 +217,6 @@ int _rtapi_task_delete(int task_id) { if (task->state != DELETE_LOCKED) // we don't already hold mutex rtapi_mutex_get(&(rtapi_data->mutex)); -#ifdef MODULE - if ((task->state == PERIODIC) || (task->state == FREERUN)) { - /* task is running, need to stop it */ - rtapi_print_msg(RTAPI_MSG_WARN, - "RTAPI: WARNING: tried to delete task %02d while running\n", - task_id); - _rtapi_task_pause(task_id); - } - /* get rid of it */ - rt_task_delete(ostask_array[task_id]); - /* free kernel memory */ - kfree(ostask_array[task_id]); - /* update data */ - task->prio = 0; - task->owner = 0; - task->taskcode = NULL; - ostask_array[task_id] = NULL; - rtapi_data->task_count--; - /* if no more tasks, stop the timer */ - if (rtapi_data->task_count == 0) { - if (rtapi_data->timer_running != 0) { -# ifdef HAVE_RTAPI_MODULE_TIMER_STOP - _rtapi_module_timer_stop(); -# endif - rtapi_data->timer_period = 0; - max_delay = DEFAULT_MAX_DELAY; - rtapi_data->timer_running = 0; - } - } -#endif /* MODULE */ - #ifdef HAVE_RTAPI_TASK_DELETE_HOOK retval = _rtapi_task_delete_hook(task,task_id); #endif @@ -322,7 +226,7 @@ int _rtapi_task_delete(int task_id) { task->state = EMPTY; task->magic = 0; - rtapi_print_msg(RTAPI_MSG_DBG, "rt_task_delete %d \"%s\"\n", task_id, + rtapi_print_msg(RTAPI_MSG_DBG, "rt_task_delete %d \"%s\"\n", task_id, task->name ); return retval; @@ -333,12 +237,11 @@ int _rtapi_task_delete(int task_id) { int _rtapi_task_start_hook(task_data *task, int task_id, unsigned long int period_nsec); -#ifndef MODULE /* userspace RTAPI */ int _rtapi_task_start(int task_id, unsigned long int period_nsec) { task_data *task; if (task_id < 0 || task_id >= RTAPI_MAX_TASKS) return -EINVAL; - + task = &task_array[task_id]; /* validate task handle */ @@ -361,40 +264,6 @@ int _rtapi_task_start(int task_id, unsigned long int period_nsec) { return _rtapi_task_start_hook(task,task_id,0); } -#else /* kernel RTAPI */ -int _rtapi_task_start(int task_id, unsigned long int period_nsec) { - int retval; - task_data *task; - - /* validate task ID */ - if ((task_id < 1) || (task_id > RTAPI_MAX_TASKS)) { - return -EINVAL; - } - /* point to the task's data */ - task = &(task_array[task_id]); - /* is task ready to be started? */ - if (task->state != PAUSED) { - return -EINVAL; - } - /* can't start periodic tasks if timer isn't running */ - if ((rtapi_data->timer_running == 0) || (rtapi_data->timer_period == 0)) { - rtapi_print_msg(RTAPI_MSG_ERR, - "RTAPI: could not start task: timer isn't running\n"); - return -EINVAL; - } - - if ((retval = _rtapi_task_start_hook(task, task_id, period_nsec))) - return retval; - - /* ok, task is started */ - task->state = PERIODIC; - rtapi_print_msg(RTAPI_MSG_DBG, "RTAPI: start_task id: %02d\n", task_id); - rtapi_print_msg(RTAPI_MSG_DBG, "RTAPI: period_nsec: %ld\n", period_nsec); - return retval; -} -#endif /* kernel threads */ - - #ifdef HAVE_RTAPI_TASK_STOP_HOOK int _rtapi_task_stop_hook(task_data *task, int task_id); #endif @@ -403,7 +272,7 @@ int _rtapi_task_stop(int task_id) { task_data *task; if(task_id < 0 || task_id >= RTAPI_MAX_TASKS) return -EINVAL; - + task = &task_array[task_id]; /* validate task handle */ @@ -423,36 +292,15 @@ int _rtapi_task_pause_hook(task_data *task, int task_id); int _rtapi_task_pause(int task_id) { task_data *task; -#ifdef MODULE - task_state_t oldstate; - int retval; -#endif if(task_id < 0 || task_id >= RTAPI_MAX_TASKS) return -EINVAL; - + task = &task_array[task_id]; - + /* validate task handle */ if (task->magic != TASK_MAGIC) return -EINVAL; -#ifdef MODULE - if ((task->state != PERIODIC) && (task->state != FREERUN)) { - return -EINVAL; - } - /* pause the task */ - oldstate = task->state; - task->state = PAUSED; - // ok for both RTAI and Xenomai - retval = rt_task_suspend(ostask_array[task_id]); - if (retval != 0) { - task->state = oldstate; - return -EINVAL; - } - /* update task data */ - return 0; -#endif - #ifdef HAVE_RTAPI_TASK_PAUSE_HOOK return _rtapi_task_pause_hook(task,task_id); #else @@ -479,34 +327,15 @@ int _rtapi_task_resume_hook(task_data *task, int task_id); int _rtapi_task_resume(int task_id) { task_data *task; -#ifdef MODULE - int retval; -#endif if(task_id < 0 || task_id >= RTAPI_MAX_TASKS) return -EINVAL; - + task = &task_array[task_id]; - + /* validate task handle */ if (task->magic != TASK_MAGIC) return -EINVAL; -#ifdef MODULE - if (task->state != PAUSED) { - return -EINVAL; - } - /* start the task */ - // ok for both RTAI and Xenomai - retval = rt_task_resume(ostask_array[task_id]); - if (retval != 0) { - return -EINVAL; - } - /* update task data */ - task->state = FREERUN; - - return 0; -#endif - #ifdef HAVE_RTAPI_TASK_RESUME_HOOK return _rtapi_task_resume_hook(task,task_id); #else @@ -554,4 +383,3 @@ int _rtapi_task_pll_set_correction(long value) { #endif /* RTAPI */ - diff --git a/src/rtapi/rtapi_time.c b/src/rtapi/rtapi_time.c index 4a2e4d6a76..e281218e18 100644 --- a/src/rtapi/rtapi_time.c +++ b/src/rtapi/rtapi_time.c @@ -5,17 +5,17 @@ * for more info. * * Copyright 2006-2013 Various Authors -* +* * This program 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 2 of the License, or * (at your option) any later version. -* +* * This program 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 this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA @@ -25,16 +25,11 @@ #include "rtapi.h" // these functions #include "rtapi_common.h" // these functions -#ifndef MODULE // kernel threads systems have own timer functions -# include // clock_getres(), clock_gettime() -#endif +#include // clock_getres(), clock_gettime() #ifndef HAVE_RTAPI_GET_CLOCKS_HOOK // find a useable time stamp counter -#ifndef MODULE /* kernel has rdtscll in - arch/x86/include/msr.h; does this - apply to other arches? */ #ifdef MSR_H_USABLE #include #elif defined(__i386__) || defined(__x86_64__) @@ -44,7 +39,6 @@ #error No implementation of rtapi_get_clocks available #define rdtscll(val) (val)=0 #endif -#endif #endif /* HAVE_RTAPI_GET_CLOCKS_HOOK */ long int max_delay = DEFAULT_MAX_DELAY; @@ -60,7 +54,7 @@ unsigned long timer_counts; #ifdef HAVE_RTAPI_CLOCK_SET_PERIOD_HOOK -void _rtapi_clock_set_period_hook(long int nsecs, RTIME *counts, +void _rtapi_clock_set_period_hook(long int nsecs, RTIME *counts, RTIME *got_counts); #endif @@ -186,5 +180,3 @@ long long int _rtapi_get_clocks(void) { return _rtapi_get_clocks_hook(); #endif /* HAVE_RTAPI_GET_CLOCKS_HOOK */ } - - diff --git a/src/rtapi/xenomai-common.h b/src/rtapi/xenomai-common.h deleted file mode 100644 index 16e7021b69..0000000000 --- a/src/rtapi/xenomai-common.h +++ /dev/null @@ -1 +0,0 @@ -#define XENOMAI_INCLUDE(header) diff --git a/src/rtapi/xenomai-kernel.c b/src/rtapi/xenomai-kernel.c deleted file mode 100644 index 7a3129933a..0000000000 --- a/src/rtapi/xenomai-kernel.c +++ /dev/null @@ -1,330 +0,0 @@ -/******************************************************************** -* Copyright (C) 2012 - 2013 John Morris -* Michael Haberler -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU Lesser General Public -* License as published by the Free Software Foundation; either -* version 2.1 of the License, or (at your option) any later version. -* -* This program 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 -* Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public -* License along with this library; if not, write to the Free Software -* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -********************************************************************/ - -#include "config.h" -#include "rtapi.h" -#include "rtapi_common.h" -#include "xenomai-common.h" - -#include XENOMAI_INCLUDE(heap.h) // RT_HEAP, H_SHARED, rt_heap_* -#include XENOMAI_INCLUDE(task.h) // RT_TASK, rt_task_*() - -#ifdef RTAPI /* In kernel land, this is equiv. to MODULE */ -#include // kfree -#include XENOMAI_INCLUDE(timer.h) // rt_timer_*() -#include "procfs_macros.h" // PROC_PRINT() - -#else /* ULAPI */ -#include /* errno */ -#include // getpid() - -#endif - -#define MAX_ERRORS 3 - -#ifdef RTAPI -static rthal_trap_handler_t old_trap_handler; -static int _rtapi_trap_handler(unsigned event, unsigned domid, void *data); - -#endif /* RTAPI */ - -/*********************************************************************** -* RT thread statistics update * -************************************************************************/ -#ifdef RTAPI -int _rtapi_task_update_stats_hook(void) -{ - int task_id = _rtapi_task_self(); - - // paranoia - if ((task_id < 0) || (task_id > RTAPI_MAX_TASKS)) { - rtapi_print_msg(RTAPI_MSG_ERR, - "_rtapi_task_update_stats_hook: BUG -" - " task_id out of range: %d\n", - task_id); - return -ENOENT; - } - - RT_TASK_INFO rtinfo; - int retval = rt_task_inquire(ostask_array[task_id], &rtinfo); - if (retval) { - rtapi_print_msg(RTAPI_MSG_ERR, - "rt_task_inquire() failed: %d\n", - retval); - return -ESRCH; - } - - rtapi_threadstatus_t *ts = &global_data->thread_status[task_id]; - - ts->flavor.xeno.modeswitches = rtinfo.modeswitches; - ts->flavor.xeno.ctxswitches = rtinfo.ctxswitches; - ts->flavor.xeno.pagefaults = rtinfo.pagefaults; - ts->flavor.xeno.exectime = rtinfo.exectime; - ts->flavor.xeno.modeswitches = rtinfo.modeswitches; - ts->flavor.xeno.status = rtinfo.status; - - ts->num_updates++; - - return task_id; -} -#endif - - -/*********************************************************************** -* rtapi_module.c * -************************************************************************/ - -#ifdef RTAPI - -void _rtapi_module_init_hook(void) { - old_trap_handler = \ - rthal_trap_catch((rthal_trap_handler_t) _rtapi_trap_handler); -} - -void _rtapi_module_cleanup_hook(void) { - /* release master shared memory block */ - rthal_trap_catch(old_trap_handler); -} -#endif /* RTAPI */ - - -/*********************************************************************** -* rtapi_time.c * -************************************************************************/ - -#ifdef RTAPI -/* RTAPI time functions */ -long long int _rtapi_get_time_hook(void) { - /* The value returned will represent a count of jiffies if the - native skin is bound to a periodic time base (see - CONFIG_XENO_OPT_NATIVE_PERIOD), or nanoseconds otherwise. */ - return rt_timer_read(); -} - -/* This returns a result in clocks instead of nS, and needs to be used - with care around CPUs that change the clock speed to save power and - other disgusting, non-realtime oriented behavior. But at least it - doesn't take a week every time you call it. -*/ -long long int _rtapi_get_clocks_hook(void) { - return rt_timer_read(); -} - -void _rtapi_clock_set_period_hook(long int nsecs, RTIME *counts, - RTIME *got_counts) { - rtapi_data->timer_period = *got_counts = (RTIME) nsecs; -} - - -void _rtapi_delay_hook(long int nsec) -{ - long long int release = rt_timer_read() + nsec; - while (rt_timer_read() < release); -} -#endif /* RTAPI */ - - -/*********************************************************************** -* rtapi_task.c * -************************************************************************/ - -#ifdef RTAPI -extern int _rtapi_task_self_hook(void); - -extern rtapi_exception_handler_t rt_exception_handler; - -// not better than the builtin Xenomai handler, but at least -// hook into to rtapi_exception_handler - -int _rtapi_trap_handler(unsigned event, unsigned domid, void *data) { - struct pt_regs *regs = data; - xnthread_t *thread = xnpod_current_thread(); ; - - int task_id = _rtapi_task_self_hook(); - - rtapi_exception_detail_t detail = {0}; - - detail.task_id = task_id; - detail.error_code = thread->errcode; - - detail.flavor.xeno.event = event; - detail.flavor.xeno.domid = domid; - detail.flavor.xeno.ip = (exc_register_t) regs->ip; - detail.flavor.xeno.sp = (exc_register_t) regs->sp; - - if (rt_exception_handler) - rt_exception_handler(XK_TRAP, &detail, - (task_id > -1) ? - &global_data->thread_status[task_id] : NULL); - - // forward to default Xenomai trap handler - return ((rthal_trap_handler_t) old_trap_handler)(event, domid, data); -} - -int _rtapi_task_self_hook(void) { - RT_TASK *ptr; - int n; - - /* ask OS for pointer to its data for the current task */ - ptr = rt_task_self(); - - if (ptr == NULL) { - /* called from outside a task? */ - return -EINVAL; - } - /* find matching entry in task array */ - n = 1; - while (n <= RTAPI_MAX_TASKS) { - if (ostask_array[n] == ptr) { - /* found a match */ - return n; - } - n++; - } - return -EINVAL; -} - -int _rtapi_wait_hook(const int flags) { - - if (flags & TF_NOWAIT) - return 0; - - unsigned long overruns = 0; - int result = rt_task_wait_period(&overruns); - - if (result) { - // something went wrong: - - // update stats counters in thread status - _rtapi_task_update_stats_hook(); - - // inquire, fill in - // exception descriptor, and call exception handler - - int task_id = _rtapi_task_self(); - - // paranoid, but you never know; this index off and - // things will go haywire really fast - if ((task_id < 0) || (task_id > RTAPI_MAX_TASKS)) { - rtapi_print_msg(RTAPI_MSG_ERR, - "_rtapi_wait_hook: BUG - task_id out of range: %d\n", - task_id); - // maybe should call a BUG exception here - return; - } - - // task_data *task = &(task_array[task_id]); - rtapi_exception_detail_t detail = {0}; - rtapi_threadstatus_t *ts = &global_data->thread_status[task_id]; - rtapi_exception_t type; - - // exception descriptor - detail.task_id = task_id; - detail.error_code = result; - - switch (result) { - - case -ETIMEDOUT: - // release point was missed - detail.flavor.xeno.overruns = overruns; - - // update thread status in global_data - ts->flavor.xeno.wait_errors++; - ts->flavor.xeno.total_overruns += overruns; - type = XK_ETIMEDOUT; - break; - - case -EWOULDBLOCK: - // returned if rt_task_set_periodic() has not previously - // been called for the calling task. This is clearly - // a Xenomai API usage error. - ts->api_errors++; - type = XK_EWOULDBLOCK; - break; - - case -EINTR: - // returned if rt_task_unblock() has been called for - // the waiting task before the next periodic release - // point has been reached. In this case, the overrun - // counter is reset too. - // a Xenomai API usage error. - ts->api_errors++; - type = XK_EINTR; - break; - - case -EPERM: - // returned if this service was called from a - // context which cannot sleep (e.g. interrupt, - // non-realtime or scheduler locked). - // a Xenomai API usage error. - ts->api_errors++; - type = XK_EPERM; - break; - - default: - // the above should handle all possible returns - // as per manual, so at least leave a scent - // (or what Jeff calls a 'canary value') - ts->other_errors++; - type = XK_UNDOCUMENTED; - } - if (rt_exception_handler) - rt_exception_handler(type, &detail, ts); - } // else: ok - no overruns; -} - - - -int _rtapi_task_new_hook(task_data *task, int task_id) { - rtapi_print_msg(RTAPI_MSG_DBG, - "rt_task_create %d \"%s\" cpu=%d fpu=%d prio=%d\n", - task_id, task->name, task->cpu, task->uses_fp, - task->prio ); - - return rt_task_create(ostask_array[task_id], task->name, task->stacksize, - task->prio, - (task->uses_fp ? T_FPU : 0) | T_CPU(task->cpu)); -} - - -int _rtapi_task_start_hook(task_data *task, int task_id, - unsigned long int period_nsec) { - int retval; - - if ((retval = rt_task_set_periodic(ostask_array[task_id], TM_NOW, - period_nsec)) != 0) { - rtapi_print_msg(RTAPI_MSG_ERR, - "RTAPI: rt_task_set_periodic() task_id %d " - "periodns=%ld returns %d\n", - task_id, period_nsec, retval); - return -EINVAL; - } - if ((retval = rt_task_start(ostask_array[task_id], task->taskcode, - (void*)task->arg )) != 0) { - rtapi_print_msg(RTAPI_MSG_ERR, - "RTAPI: rt_task_start() task_id %d returns %d\n", - task_id, retval); - return -EINVAL; - } - - return 0; -} - - -#endif /* ULAPI */ diff --git a/src/rtapi/xenomai-kernel.h b/src/rtapi/xenomai-kernel.h deleted file mode 100644 index 42cf6885a8..0000000000 --- a/src/rtapi/xenomai-kernel.h +++ /dev/null @@ -1,57 +0,0 @@ -/******************************************************************** -* Description: xenomai-kernel.h -* This file defines the differences specific to the -* the Xenomai kernel thread system -* -* Copyright (C) 2012 - 2013 John Morris -* Michael Haberler -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU Lesser General Public -* License as published by the Free Software Foundation; either -* version 2.1 of the License, or (at your option) any later version. -* -* This program 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 -* Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public -* License along with this library; if not, write to the Free Software -* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -********************************************************************/ - -#define FLAVOR_FLAGS XENOMAI_KERNEL_FLAVOR_FLAGS // see rtapi_compat.h - -#include "xenomai-common.h" -#include XENOMAI_INCLUDE(task.h) /* RT_TASK, rt_task_*() */ - -/* rtapi_common.c */ - -/* Priority functions settings */ - -// Xenomai rt_task priorities are 0: lowest .. 99: highest -#define PRIO_LOWEST 0 -#define PRIO_HIGHEST 99 - - -/* rtapi_module.c */ -#define HAVE_RTAPI_MODULE_INIT_HOOK - -/* rtapi_task.c */ -#define HAVE_RTAPI_TASK_NEW_HOOK -#define HAVE_RTAPI_WAIT_HOOK -#define HAVE_RTAPI_TASK_SELF_HOOK -#define HAVE_RTAPI_TASK_UPDATE_STATS_HOOK - - -/* rtapi_io hooks */ - - -/* rtapi_time.c */ -#ifdef RTAPI -#define HAVE_RTAPI_CLOCK_SET_PERIOD_HOOK -#define HAVE_RTAPI_GET_TIME_HOOK -#define HAVE_RTAPI_GET_CLOCKS_HOOK -#endif - diff --git a/src/rtapi/xenomai.c b/src/rtapi/xenomai.c index d35b4cee2c..9790479b37 100644 --- a/src/rtapi/xenomai.c +++ b/src/rtapi/xenomai.c @@ -22,11 +22,11 @@ ********************************************************************/ #include "config.h" -#include "xenomai-common.h" #include "rtapi.h" #include "rtapi_common.h" #include /* munlockall() */ +#define XENOMAI_INCLUDE(header) #include XENOMAI_INCLUDE(task.h) /* RT_TASK, rt_task_*() */ #include XENOMAI_INCLUDE(timer.h) /* rt_timer_*() */ #include /* sigaction/SIGXCPU handling */ @@ -42,7 +42,7 @@ RT_TASK ostask_array[RTAPI_MAX_TASKS + 1]; // this is needed due to the weirdness of the rt_task_self return value - -// it does _not_ match the address of the RT_TASK structure it was +// it does _not_ match the address of the RT_TASK structure it was // created with RT_TASK *ostask_self[RTAPI_MAX_TASKS + 1]; @@ -271,11 +271,11 @@ void _rtapi_task_wrapper(void * task_id_hack) { /* call the task function with the task argument */ (task->taskcode) (task->arg); - + /* if the task ever returns, we record that fact */ task->state = ENDED; rtapi_print_msg(RTAPI_MSG_ERR, - "ERROR: reached end of wrapper for task %d '%s'\n", + "ERROR: reached end of wrapper for task %d '%s'\n", task_id, task->name); } @@ -310,7 +310,7 @@ int _rtapi_task_start_hook(task_data *task, int task_id) { int prio = (task->flags & TF_NONRT) ? 0 :task->prio; - if ((retval = rt_task_create (&ostask_array[task_id], task->name, + if ((retval = rt_task_create (&ostask_array[task_id], task->name, task->stacksize, prio, uses_fpu | which_cpu | T_JOINABLE) ) != 0) { From 8085d22372531d20970a75a90e104d0914ca3e72 Mon Sep 17 00:00:00 2001 From: John Morris Date: Tue, 8 Jan 2019 23:08:57 +0800 Subject: [PATCH 446/516] SAVE WORK 1 --- debian/rules.in | 2 +- scripts/check-system-configuration.sh | 4 +- scripts/gen-rtapi.ini.sh.in.tmpl | 9 +- scripts/realtime.in | 33 +---- src/configure.ac | 180 -------------------------- 5 files changed, 4 insertions(+), 224 deletions(-) diff --git a/debian/rules.in b/debian/rules.in index f57ba4b32a..945de73547 100755 --- a/debian/rules.in +++ b/debian/rules.in @@ -234,7 +234,7 @@ binary-arch: build install dh_strip dh_compress -X.pdf -X.txt -X.hal -X.ini -X.clp -X.var -X.nml \ -X.tbl -X.xml -Xsample-configs - dh_fixperms -X/linuxcnc_module_helper -X/rtapi_app_ + dh_fixperms -X/rtapi_app_ dh_python2 --ignore-shebangs --no-guessing-versions --no-ext-rename dh_makeshlibs dh_installdeb diff --git a/scripts/check-system-configuration.sh b/scripts/check-system-configuration.sh index 1bdb4fb547..53a5cb0fe4 100755 --- a/scripts/check-system-configuration.sh +++ b/scripts/check-system-configuration.sh @@ -133,7 +133,7 @@ check-ulimits() { echo " $ sudo cp rtapi/shmdrv/limits.d-machinekit.conf /etc/security/limits.d/machinekit.conf" return 1 fi - + # Next, check the 'memlock' value looks sane if test $memlock != unlimited && test $memlock -lt $reasonable_memlock; then echo "Warning: Config 'memlock' value $memlock too small" @@ -145,8 +145,6 @@ check-ulimits() { fi } -HAVE_KERNEL_THREADS=false - res=0 check-rsyslog || res=1 check-ulimits || res=1 diff --git a/scripts/gen-rtapi.ini.sh.in.tmpl b/scripts/gen-rtapi.ini.sh.in.tmpl index b42bec8fd2..d253a041b9 100644 --- a/scripts/gen-rtapi.ini.sh.in.tmpl +++ b/scripts/gen-rtapi.ini.sh.in.tmpl @@ -46,6 +46,7 @@ sysconfdir=@sysconfdir@ # Makefile.inc paths EMC2_HOME=@EMC2_HOME@ RTLIB_DIR=@EMC2_RTLIB_DIR@ +MODULES_DIR=@EMC2_MODULES_DIR@ SYSTEM_CONFIG_DIR=@EMC2_SYSTEM_CONFIG_DIR@ LIBEXEC_DIR=@EMC2_LIBEXEC_DIR@ BIN_DIR=@EMC2_BIN_DIR@ @@ -56,8 +57,6 @@ TARGET_PLATFORM=@TARGET_PLATFORM@ GIT_VERSION=@GIT_VERSION@ RUN_IN_PLACE=@RUN_IN_PLACE@ PIDOF=@PIDOF@ -RTAI_KERNEL_THREADS_RTS="@RTAI_KERNEL_THREADS_RTS@" -USE_SHMDRV=@USE_SHMDRV@ ################################################# @@ -77,16 +76,12 @@ cat <&2 fi -# Other, overridable by environment variables -if [ "$USE_SHMDRV" == "" ] ; then - getvar USE_SHMDRV -fi - if [ "$HAL_SIZE" == "" ] ; then getvar HAL_SIZE fi @@ -85,13 +74,6 @@ if [ "$DEBUG" == "" ] ; then fi DEBUG=$((10#0$DEBUG)) # be sure $DEBUG is some base-10 number -# SHMDRV_OPTS: -# suggested use: SHMDRV_OPTS='debug=3' -# which will log shmdrv operations to the kernel log -if [ "$SHMDRV_OPTS" != "" ] ; then - MSGD_OPTS="$MSGD_OPTS --shmdrv_opts=$SHMDRV_OPTS" -fi - # SYSLOG_TO_STDERR: when set, log to stdout instead of syslog if test -n "$SYSLOG_TO_STDERR"; then MSGD_OPTS+=" -s" @@ -107,19 +89,6 @@ else fi -# Compute module lists -# -# kernel threads also need the rtapi and hal_lib kernel modules -test $BUILD_SYS = kbuild && MODULES="$MODULES rtapi hal_lib" -# -# reverse list of modules for unloading -MODULES_UNLOAD= -for MOD in $MODULES; do - MODULES_UNLOAD="$MOD $MODULES_UNLOAD" -done - - - # wait for a process to exit anywait(){ proc_name=$1 diff --git a/src/configure.ac b/src/configure.ac index 7e8e277eb6..db6bb99de3 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -375,11 +375,6 @@ AC_DEFUN([_cfg_kbuild_flavors],m4_split(_cfg_tmp)) # # math-related CFLAGS used in RTAPI compiles; partly obtained by # _THREADS_RTS -# -# RTAI_KERNEL_THREADS_RTDIR -# -# RTAI only; the directory RTAI modules are contained in, such as -# /usr/realtime/modules, obtained by RTAI_KERNEL_THREADS_RTS --prefix #--------------------------------------------------------# # config.h macros # @@ -1595,128 +1590,6 @@ fi AC_MSG_RESULT($with_xenomai) -AC_MSG_CHECKING(whether to build Xenomai kernel threads) -if test "$with_xenomai_kernel" = check; then - # xenomai-kernel threads are broken in many ways on ARM arch; see - # #63 - $TARGET_PLATFORM_PC && \ - with_xenomai_kernel=yes || \ - with_xenomai_kernel=no -fi -test -z "$xenomai_kernels" && with_xenomai_kernel=no -test -z "$XENOMAI_THREADS_RTS" && with_xenomai_kernel=no -if test $with_xenomai_kernel = yes; then - BUILD_THREAD_FLAVORS="$BUILD_THREAD_FLAVORS xenomai-kernel" -elif test "$xenomai_kernel_from_cmdline" = yes; then - AC_MSG_ERROR([Requested '--with-xenomai-kernel', but unable to configure]) -fi -AC_MSG_RESULT($with_xenomai_kernel) - - -############################################################################## -# RTAI flavor checks -# -#if test "$with_rtai_kernel" != no; then -# # look for rtai-config path -# RTAI_KERNEL_THREADS_RTS='' -# if test "$rtai_config_from_cmdline" = yes; then -# # user-supplied path -# RTAI_KERNEL_THREADS_RTS=$with_rtai_config -# else -# # guess path from defaults -# rtai_config_path='' -# dirs="$(echo \ -# /usr/realtime-`uname -r` /usr/realtime* /usr /usr/src/rtai*)" -# for d in $dirs; do -# rtai_config_path="$rtai_config_path:$d:$d/bin" -# done -# AC_PATH_PROGS([RTAI_KERNEL_THREADS_RTS],[rtai-config], -# [],[$rtai_config_path]) -# fi -# # check rtai-config path -# if test -n "$RTAI_KERNEL_THREADS_RTS"; then -# # path found, so check its validity: --linux-dir should return -# # a configured kernel source directory with .config file -# AC_MSG_CHECKING([usability of RTAI utility, $RTAI_KERNEL_THREADS_RTS]) -# if test -x $RTAI_KERNEL_THREADS_RTS -a \ -# -f $($RTAI_KERNEL_THREADS_RTS -o --linux-dir 2>/dev/null)/.config -# then -# # ShabbyX-style `rtai-config` -# RTAI_KERNEL_THREADS_RTS="$RTAI_KERNEL_THREADS_RTS -o" -# AC_MSG_RESULT(yes) -# elif test -x $RTAI_KERNEL_THREADS_RTS -a \ -# -f $($RTAI_KERNEL_THREADS_RTS --linux-dir 2>/dev/null)/.config -# then -# AC_MSG_RESULT(yes) -# else - RTAI_KERNEL_THREADS_RTS='' -# AC_MSG_RESULT(no) -# fi -# fi -# # deal with nothing found in the right way -# if test -z "$RTAI_KERNEL_THREADS_RTS"; then -# if test "$rtai_config_from_cmdline" = yes; then -# # --with-rtai-config specified, but invalid path -# AC_MSG_ERROR(--with-rtai-config: "$with_rtai_config": bad path) -# elif test "$with_rtai_kernel" = yes; then -# # --with-rtai-kernel specified but can't find rtai-config -# AC_MSG_ERROR("rtai-config" not found; use --with-rtai-config") -# else -# with_rtai_kernel=no -# fi -# fi -#fi - -# Generate RTFLAGS for RTAI -#if test $with_rtai_kernel != no -a -n "$rtai_kernels"; then -# -# RTAI_KERNEL_THREADS_RTFLAGS="$($RTAI_KERNEL_THREADS_RTS --module-cflags) \ -# -I$($RTAI_KERNEL_THREADS_RTS --prefix)/include" -# RTAI_KERNEL_THREADS_LDFLAGS="$($RTAI_KERNEL_THREADS_RTS --lxrt-ldflags) \ -# -llxrt -Wl,-rpath,$($RTAI_KERNEL_THREADS_RTS --library-dir)" -# -# if test "$host_cpu" = x86_64; then -# flags="-msse -mpreferred-stack-boundary=4 -funsafe-math-optimizations" -# else -# flags="-fno-unsafe-math-optimizations" -# fi -# RTAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS="$flags" -# -# RTAI_KERNEL_THREADS_RTDIR=$(readlink -f \ -# $($RTAI_KERNEL_THREADS_RTS --module-dir)) -#fi -#AC_MSG_CHECKING(whether to build RTAI threads) -#test -z "$RTAI_KERNEL_THREADS_RTS" && with_rtai_kernel=no -#test -z "$rtai_kernels" && with_rtai_kernel=no -# -# Check the RTAI Module.symvers file -#if test $with_rtai_kernel != no; then -# RTAI_KERNEL_THREADS_EXTRA_SYMBOLS=`$RTAI_KERNEL_THREADS_RTS \ -# --module-dir`/Module.symvers -# if ! test -f "${RTAI_KERNEL_THREADS_EXTRA_SYMBOLS}"; then -# if test "$with_rtai_kernel" = check; then -# with_rtai_kernel=no -# else -# AC_MSG_ERROR([RTAI build requested but no Module.symvers found]) -# fi -# fi -#f#i -#test "$with_rtai_kernel" = check && with_rtai_kernel=yes -#if test $with_rtai_kernel = yes; then# -# BUILD_THREAD_FLAVORS="$BUILD_THREAD_FLAVORS rtai-kernel" -#fi -#AC_MSG_RESULT($with_rtai_kernel) -#if test $with_rtai_kernel = yes; then -# AC_MSG_CHECKING(RTAI version) -# if grep -q rt_free_timers $RTAI_KERNEL_THREADS_EXTRA_SYMBOLS; then -# RTAI_VERSION=401 -# AC_MSG_RESULT(4.1 or greater) -# else -# RTAI_VERSION=400 -# AC_MSG_RESULT(4.0 or earlier) -# fi -#fi - ############################################################################## # Subsection 2.6 # # Hardware driver detection # @@ -1795,11 +1668,6 @@ test $with_usermode_pci = no \ # - config.h macro definitions # ############################################################################## -# RTDIR: FIXME: needs maintenance (elimination) -# latencyplot only works with RTAI and needs RTDIR -AC_SUBST([RTDIR],$RTAI_KERNEL_THREADS_RTDIR) - - if test "$with_drivers" = yes; then AC_DEFINE(BUILD_DRIVERS, [], [build hardware drivers]) fi @@ -1942,7 +1810,6 @@ AC_SUBST([POSIX_THREADS_BUILD_SYS],_cfg_flavor_build_sys(posix)) AC_SUBST([POSIX_THREADS_SOURCE],[rt-preempt]) AC_SUBST([POSIX_THREADS_RTFLAGS]) AC_SUBST([POSIX_THREADS_LDFLAGS]) -AC_SUBST([POSIX_THREADS_RTDIR],[]) AC_SUBST([POSIX_THREADS_RTS],[]) AC_SUBST([POSIX_THREADS_EXTRA_KMODS],[]) @@ -1956,7 +1823,6 @@ AC_SUBST([RT_PREEMPT_THREADS_BUILD_SYS],_cfg_flavor_build_sys(rt-preempt)) AC_SUBST([RT_PREEMPT_THREADS_SOURCE],[rt-preempt]) AC_SUBST([RT_PREEMPT_THREADS_RTFLAGS]) AC_SUBST([RT_PREEMPT_THREADS_LDFLAGS]) -AC_SUBST([RT_PREEMPT_THREADS_RTDIR],[]) AC_SUBST([RT_PREEMPT_THREADS_RTS],[]) AC_SUBST([RT_PREEMPT_THREADS_EXTRA_KMODS],[]) @@ -1978,54 +1844,9 @@ AC_SUBST([XENOMAI_THREADS_SOURCE],[xenomai]) AC_SUBST([XENOMAI_THREADS_RTFLAGS]) AC_SUBST([XENOMAI_THREADS_LDFLAGS]) AC_SUBST([XENOMAI_THREADS_RTS]) -AC_SUBST([XENOMAI_THREADS_RTDIR],[]) AC_SUBST([XENOMAI_THREADS_EXTRA_KMODS],[]) AC_SUBST([PRECISE_MULTILIB_BUG],[$PRECISE_MULTILIB_BUG]) -# Xenomai kernel settings -#if test "$with_xenomai_kernel" = yes; then -# AC_DEFINE([HAVE_XENOMAI_KERNEL_THREADS],[],[Build Xenomai kernel threads]) -#fi -#AC_SUBST([HAVE_XENOMAI_KERNEL_THREADS],[$with_xenomai_kernel]) -#AC_SUBST([XENOMAI_KERNEL_THREADS_FLAVOR_ID],_cfg_flavor_id(xenomai-kernel)) -#AC_SUBST([XENOMAI_KERNEL_THREADS_BUILD_SYS], -# _cfg_flavor_build_sys(xenomai-kernel)) -#AC_SUBST([XENOMAI_KERNEL_THREADS_SOURCE],[xenomai-kernel]) -# force hard-float for kernel modules -#AC_SUBST([XENOMAI_KERNEL_THREADS_RTFLAGS]) -#AC_SUBST([XENOMAI_KERNEL_THREADS_LDFLAGS]) -#AC_SUBST([XENOMAI_KERNEL_THREADS_RTS]) -#AC_SUBST([XENOMAI_KERNEL_THREADS_KERNEL_DIRS],[$xenomai_kernels]) -#AC_SUBST([XENOMAI_KERNEL_THREADS_EXTRA_SYMBOLS]) -# in-kernel math options -#AC_SUBST([XENOMAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS]) -#AC_SUBST([XENOMAI_KERNEL_THREADS_RTDIR],[]) -#AC_SUBST([XENOMAI_KERNEL_THREADS_EXTRA_KMODS], -# "_cfg_flavor_extra_kmods(xenomai-kernel)") - -# RTAI settings -#if test "$with_rtai_kernel" = yes; then -# AC_DEFINE([HAVE_RTAI_KERNEL_THREADS],[],[Build RTAI threads]) -#fi -#AC_SUBST([HAVE_RTAI_KERNEL_THREADS],[$with_rtai_kernel]) -#AC_SUBST([RTAI_KERNEL_THREADS_FLAVOR_ID],_cfg_flavor_id(rtai-kernel)) -#AC_SUBST([RTAI_KERNEL_THREADS_BUILD_SYS],_cfg_flavor_build_sys(rtai-kernel)) -#AC_SUBST([RTAI_KERNEL_THREADS_SOURCE],[rtai-kernel]) -#AC_SUBST([RTAI_KERNEL_THREADS_RTFLAGS]) -#AC_SUBST([RTAI_KERNEL_THREADS_LDFLAGS]) -#AC_SUBST([RTAI_KERNEL_THREADS_RTS]) -#AC_SUBST([RTAI_KERNEL_THREADS_KERNEL_DIRS],[$rtai_kernels]) -#AC_SUBST([RTAI_KERNEL_THREADS_EXTRA_SYMBOLS]) -#AC_SUBST([RTAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS]) -# absolute path of rtai-config rtdir with symlinks dereferenced -#AC_SUBST([RTAI_KERNEL_THREADS_RTDIR],[$RTAI_KERNEL_THREADS_RTDIR]) -#AC_SUBST([RTAI_KERNEL_THREADS_EXTRA_KMODS], -# "_cfg_flavor_extra_kmods(rtai-kernel)") -#if test -n "$RTAI_VERSION"; then -# AC_DEFINE_UNQUOTED([RTAI_VERSION],$RTAI_VERSION,"RTAI version") -#fi - - # while we are at it, drop a git scent mark GIT_VERSION=unknown GIT_CONFIG_SHA=`../scripts/get-git-sha` @@ -2798,7 +2619,6 @@ m4_foreach([_cfg_flavor],[_cfg_all_flavors],[dnl # These values do not normally need to be changed. rtapi_app=@EMC2_LIBEXEC_DIR@/rtapi_app_[]_cfg_flavor RTS=@_cfg_flavor_upcase(_cfg_flavor)_THREADS_RTS@ -RTDIR=@_cfg_flavor_upcase(_cfg_flavor)_THREADS_RTDIR@ MODULES=@_cfg_flavor_upcase(_cfg_flavor)_THREADS_EXTRA_KMODS@ ]) EOF From 47e7eddc31491ee7aa9ef7d031679e276283fdf0 Mon Sep 17 00:00:00 2001 From: John Morris Date: Tue, 8 Jan 2019 23:09:41 +0800 Subject: [PATCH 447/516] SAVE WORK 2 --- scripts/gen-rtapi.ini.sh.in.tmpl | 1 + scripts/realtime.in | 150 +- src/Makefile | 7 +- src/Makefile.inc.in | 27 +- src/Makefile.modinc.in | 2 +- src/configure.ac | 574 +-- src/emc/motion/mot_priv.h | 20 +- src/emc/tp/tp_types.h | 5 +- src/hal/components/hal_pru.c | 10 +- src/hal/components/hal_prudebug.c | 4 - src/hal/components/mux_generic.c | 2 - src/hal/components/pepper.c | 12 +- src/hal/components/rtfault.comp | 4 +- src/hal/cython/machinekit/compat.pxd | 9 - src/hal/cython/machinekit/compat.pyx | 14 - src/hal/drivers/hal_arm335xQEP.c | 5 - src/hal/drivers/hal_ax5214h.c | 48 +- src/hal/drivers/hal_chip_gpio.c | 3 - src/hal/drivers/hal_gpio.c | 23 +- src/hal/drivers/hal_motenc.c | 38 +- src/hal/drivers/hal_p260c.c | 55 +- src/hal/drivers/hal_parport.c | 26 +- src/hal/drivers/hal_pru_generic/encoder.c | 140 +- .../drivers/hal_pru_generic/hal_pru_generic.c | 17 +- src/hal/drivers/hal_pru_generic/pwmgen.c | 6 +- src/hal/drivers/hal_pru_generic/stepgen.c | 16 +- src/hal/drivers/hal_stg.c | 506 +-- src/hal/drivers/hal_vti.c | 95 +- src/hal/drivers/hal_zed_can.c | 188 +- src/hal/drivers/hal_zed_gpio.c | 139 +- src/hal/drivers/mesa-hostmot2/hm2_7i43.c | 15 +- src/hal/drivers/mesa-hostmot2/hm2_pci.c | 9 +- src/hal/drivers/mesa-hostmot2/hm2_soc_ol.c | 18 +- src/hal/drivers/mesa-hostmot2/hm2_test.c | 59 +- src/hal/drivers/pluto_common.h | 11 - src/hal/drivers/probe_parport.c | 114 +- src/hal/jplanner/jplan.c | 3 +- src/hal/lib/Submakefile | 6 +- src/hal/lib/config_module.h | 16 - src/hal/lib/hal_comp.c | 2 - src/hal/lib/hal_group.c | 1 - src/hal/lib/hal_lib.c | 19 +- src/hal/lib/hal_logging.h | 1 + src/hal/lib/hal_parport.h | 175 - src/hal/lib/hal_priv.h | 10 - src/hal/lib/hal_procfs.c | 158 - src/hal/lib/halmodule.cc | 15 +- src/hal/utils/halrmt.c | 3579 ----------------- src/libnml/posemath/sincos.c | 6 +- src/machinetalk/Submakefile | 2 - src/machinetalk/msgcomponents/Submakefile | 17 +- src/module_helper/Submakefile | 15 - src/module_helper/module_helper.c | 135 - src/module_helper/tests | 41 - src/regressions/check-tests/Submakefile | 6 +- src/rtapi/Submakefile | 30 +- src/rtapi/chkenv.c | 15 +- src/rtapi/flavor.c | 8 +- src/rtapi/rt-preempt.c | 50 +- src/rtapi/rtapi.h | 113 +- src/rtapi/rtapi_app.cc | 582 +-- src/rtapi/rtapi_app.h | 19 +- src/rtapi/rtapi_common.c | 17 +- src/rtapi/rtapi_common.h | 9 +- src/rtapi/rtapi_compat.c | 203 +- src/rtapi/rtapi_compat.h | 12 +- src/rtapi/rtapi_export.h | 10 +- src/rtapi/rtapi_heap.c | 2 +- src/rtapi/rtapi_int.h | 10 - src/rtapi/rtapi_limits.h | 5 - src/rtapi/rtapi_main.c | 10 - src/rtapi/rtapi_math/Submakefile | 51 - src/rtapi/rtapi_msgd.cc | 134 +- src/rtapi/rtapi_pci.c | 18 +- src/rtapi/rtapi_pci.h | 45 +- src/rtapi/rtapi_support.c | 7 - src/rtapi/rtapi_time.c | 41 - src/rtapi/shmdrv/Submakefile | 46 - 78 files changed, 921 insertions(+), 7095 deletions(-) delete mode 100644 src/hal/lib/hal_procfs.c delete mode 100644 src/hal/utils/halrmt.c delete mode 100644 src/module_helper/Submakefile delete mode 100644 src/module_helper/module_helper.c delete mode 100644 src/module_helper/tests diff --git a/scripts/gen-rtapi.ini.sh.in.tmpl b/scripts/gen-rtapi.ini.sh.in.tmpl index d253a041b9..be2644bc7a 100644 --- a/scripts/gen-rtapi.ini.sh.in.tmpl +++ b/scripts/gen-rtapi.ini.sh.in.tmpl @@ -87,6 +87,7 @@ rtapi_msgd=${LIBEXEC_DIR}/rtapi_msgd # directory paths EMC2_HOME=${EMC2_HOME} RTLIB_DIR=${RTLIB_DIR} +MODULES_DIR=${MODULES_DIR} LIBEXEC_DIR=${LIBEXEC_DIR} BIN_DIR=${BIN_DIR} diff --git a/scripts/realtime.in b/scripts/realtime.in index d9d4bbc5fa..a71fb086c1 100644 --- a/scripts/realtime.in +++ b/scripts/realtime.in @@ -155,38 +155,12 @@ CheckStatus(){ fi done - if test $BUILD_SYS = kbuild; then - # check loaded/unloaded status of modules - for MOD in $MODULES_UNLOAD ; do - if $LSMOD | awk '{print $1}' | grep -x $MOD >/dev/null ; then - echo "$MOD loaded" >&2 - else - echo "$MOD not loaded" >&2 - res=1 - fi - done - fi - - # check if shmdrv is loaded, when applicable - if test $BUILD_SYS = 'kbuild' -o $USE_SHMDRV = yes; then - if CheckShm -l; then - echo "shmdrv loaded" >&2 - else - echo "shmdrv not loaded" >&2 - res=1 - fi - fi - return $res } Load(){ - # kernel threads must have shmdrv.ko loaded - # userland threads optionally may use the shmdrv module. - # The shmdrv module is loaded by rtapi_msgd if needed. - # rtapi_msgd creates the global segment containing the error ring buffer # so start this first: @@ -198,8 +172,7 @@ Load(){ "${cmd[@]}" || ( e=$?; echo "rtapi_msgd startup failed - aborting" >&2; exit $e) - # rtapi_app_ now handles the kernel module loading - # for kthreads as needed + # rtapi_app_ local cmd=(${rtapi_app} --instance=$MK_INSTANCE $RTAPI_APP_OPTS) if [ $DEBUG -gt 0 ] ; then echo "rtapi_app command: ${cmd[@]}" >&2 @@ -212,68 +185,8 @@ Load(){ # wait until rtapi_app responds, meaning setup is complete # this avoids startup races halcmd ping - - if test BUILD_SYS = 'kbuild'; then - # help debugging startup issues for kthreads - if [ $DEBUG -gt 0 ] && [ -w /proc/rtapi/debug ] ; then - echo "$DEBUG" > /proc/rtapi/debug - fi - fi -} - -CheckShm(){ - # -l: return success if shmdrv device exists - # -w: wait for shmdrv to be loaded; return success if loaded - - # Skip checks if shmdrv is not applicable - test $BUILD_SYS = 'user-dso' -a $USE_SHMDRV = no && return 0 - - case "$1" in - -l) - # success if shmdrv device exists - test -c $SHM_DEV; return ;; - - -w) - # wait for shmdrv to be loaded; this abomination is needed - # because udev sometimes doesn't have the device ready for - # us in time. - n=0 - while [ $((n++)) -lt 100 ]; do - [ -w $SHM_DEV ] && return 0 - sleep .1 - done - - # $SHM_DEV never became writable after ten seconds - return 1;; - esac } - - -RemoveModules(){ - # Remove a list of modules recursively - # - # When RTAPI shuts down uncleanly, not only hal_lib and rtapi may - # still be loaded, but also comp, motmod, or other modules that - # depend on those. - # - # Check for loaded modules dependent on hal_lib and unload them - # first. - - for MODULE in $*; do - # recurse on any dependent modules in /proc/modules - DEP_MODULES=$(cat /proc/modules | \ - awk '/^'$MODULE' / { mods=$4; gsub(","," ",mods); print mods }') - test "$DEP_MODULES" = - || RemoveModules $DEP_MODULES - - # remove module if still loaded - grep -q "^$MODULE " /proc/modules && \ - $linuxcnc_module_helper remove $MODULE - - done -} - - Unload(){ # shutdown rtapi if it exists @@ -286,14 +199,11 @@ Unload(){ fi fi - if test $USE_SHMDRV = no; then + # remove any linuxcnc-specific POSIX shm segments if they exist + # see src/rtapi/rtapi_shmkeys.h: SHM_FMT - # remove any linuxcnc-specific POSIX shm segments if they exist - # see src/rtapi/rtapi_shmkeys.h: SHM_FMT - - INSTKEY=`printf 'linuxcnc-%d-' $MK_INSTANCE` - rm -f /dev/shm/${INSTKEY}* >/dev/null 2>&1 - fi + INSTKEY=`printf 'linuxcnc-%d-' $MK_INSTANCE` + rm -f /dev/shm/${INSTKEY}* >/dev/null 2>&1 # wait until rtapi_msgd has vanished. This assures @@ -323,27 +233,11 @@ Unload(){ kill -KILL $(FindRunningProcs msgd:$MK_INSTANCE) fi fi - - RemoveModules $MODULES_UNLOAD - - # unload shmdrv, if applicable - if test $BUILD_SYS = 'kbuild' -o $USE_SHMDRV = yes; then - if CheckShm -l; then - # module is loaded; try to force unload, always return success - if test $DEBUG -gt 1; then - echo "realtime unload: notice: attempting to unload shmdrv" >&2 - fi - $linuxcnc_module_helper remove shmdrv 2>/dev/null || true - else - echo -n "realtime unload: warning: " >&2 - echo "shmdrv expected to be loaded, but wasn't" 1>&2 - fi - fi } CheckUnloaded(){ - # if msgd:$MK_INSTANCE is still around, this might still be a running instance + # if msgd:$MK_INSTANCE is still around, this might still be a running instance # after all - this applies to all flavors - msgd is always there, so cop out @@ -356,7 +250,6 @@ CheckUnloaded(){ # if msgd:$MK_INSTANCE isnt running but rtapi:$MK_INSTANCE is, that's bad - msgd # should be last to exit - # this is a noop in kthreads, but clearly an error in uthreads if CheckRunningProcs rtapi:$MK_INSTANCE; then RTAPI_PID=`FindRunningProcs rtapi:$MK_INSTANCE` @@ -366,9 +259,9 @@ CheckUnloaded(){ exit 1 fi - # regardless if shmdrv is loaded or not, Posix shm segments for this - # particular instance should not exist and be in use at this point, which - # could be the case if a HAL usercomp were still hanging around + # Posix shm segments for this particular instance should not exist + # and be in use at this point, which could be the case if a HAL + # usercomp were still hanging around # if any, determine if a process is still using it; complain if so, # else remove with a note @@ -385,24 +278,6 @@ CheckUnloaded(){ rm -f $seg fi done - - # TBD: if fuser /dev/shm indicates a process is using shmdrv, then - # this is likely another instance, so dont try to unload shmdrv - # because it's going to fail anyway - - # checks to see if all modules were unloaded - - STATUS= - for module in $MODULES_UNLOAD ; do - # check to see if the module is installed - if $LSMOD | awk '{print $1}' | grep -x $module >/dev/null ; then - echo "ERROR: Could not unload '$module'" >&2 - STATUS=error - fi - done - if [ -n "$STATUS" ] ; then - exit 1 - fi } CMD=$1 @@ -427,12 +302,6 @@ case "$CMD" in unloadcheck) CheckUnloaded ;; - # for script debugging - shmcheck) - if CheckShm -l; then - echo "shmdrv loaded" >&2; exit 0 - fi - ;; *) echo "Usage: $0 {start|load|stop|unload|restart|force-reload|status}" >&2 exit 1 @@ -440,4 +309,3 @@ case "$CMD" in esac exit 0 - diff --git a/src/Makefile b/src/Makefile index 34eaf78d65..c8c7b28d4f 100755 --- a/src/Makefile +++ b/src/Makefile @@ -245,7 +245,7 @@ TOOBJSDEPS = $(call TOOBJS,$(1),$(2)) $(call TODEPS, $(1),$(2)) # This macro generates build rules for C components # Example call & resulting rules: -# $$(call c_comp_build_rules,hal/components/encoder.o,hal/components/othersrc.o) +# $$(eval $(call c_comp_build_rules,hal/components/encoder.o,hal/components/othersrc.o)) # obj-m += encoder.o # encoder-objs := hal/components/encoder.o hal/components/othersrc.o # $(RTLIBDIR)/encoder$(MODULE_EXT): \ @@ -1132,8 +1132,7 @@ TORTOBJS = $(foreach file,$($(patsubst %.o,%,$(1))-objs), $(OBJDIR)/$(file)) ####################################################################################################### -# USER_DSO module building -ifeq ($(BUILD_SYS),user-dso) +# Module building EXTRA_CFLAGS += -fPIC RTOBJS := $(sort $(foreach mod,$(obj-m),$(call TORTOBJS,$(mod)))) @@ -1261,8 +1260,6 @@ $(sort $(CXXRTOBJS)) : $(OBJDIR)/%.o : %.cc $(DEPDIR)/%.d $(Q)$(CXX) -c $(OPT) $(DEBUG) $(RT_CXXFLAGS) $(CPPFLAGS) \ $(EXTRA_CFLAGS) $< -o $@ -endif # end BUILD_SYS=user-dso - ############################################################################################### diff --git a/src/Makefile.inc.in b/src/Makefile.inc.in index edf8da6612..38c8c5241b 100644 --- a/src/Makefile.inc.in +++ b/src/Makefile.inc.in @@ -32,17 +32,10 @@ THREADS = $(shell echo $(threads) | tr a-z- A-Z_) HAVE_POSIX_THREADS=@HAVE_POSIX_THREADS@ HAVE_RT_PREEMPT_THREADS=@HAVE_RT_PREEMPT_THREADS@ HAVE_XENOMAI_THREADS=@HAVE_XENOMAI_THREADS@ -HAVE_KERNEL_THREADS=no POSIX_THREADS_FLAVOR_ID=@POSIX_THREADS_FLAVOR_ID@ RT_PREEMPT_THREADS_FLAVOR_ID=@RT_PREEMPT_THREADS_FLAVOR_ID@ XENOMAI_THREADS_FLAVOR_ID=@XENOMAI_THREADS_FLAVOR_ID@ -THREAD_FLAVOR_ID=$($(THREADS)_THREADS_FLAVOR_ID) - -POSIX_THREADS_BUILD_SYS = user-dso -RT_PREEMPT_THREADS_BUILD_SYS = user-dso -XENOMAI_THREADS_BUILD_SYS = user-dso -BUILD_SYS = $($(THREADS)_THREADS_BUILD_SYS) # Directories ############# @@ -105,31 +98,16 @@ RUN_IN_PLACE = @RUN_IN_PLACE@ POSIX_THREADS_LDFLAGS = @POSIX_THREADS_LDFLAGS@ RT_PREEMPT_THREADS_LDFLAGS = @RT_PREEMPT_THREADS_LDFLAGS@ XENOMAI_THREADS_LDFLAGS = @XENOMAI_THREADS_LDFLAGS@ -RT_LDFLAGS = $($(THREADS)_THREADS_LDFLAGS) XENOMAI_THREADS_RTS=@XENOMAI_THREADS_RTS@ -XENOMAI_KERNEL_THREADS_RTS=@XENOMAI_KERNEL_THREADS_RTS@ -RTAI_KERNEL_THREADS_RTS=@RTAI_KERNEL_THREADS_RTS@ - -SHMDRV_KERNEL_DIRS = @SHMDRV_KERNEL_DIRS@ -KERNEL_DIRS = $($(THREADS)_THREADS_KERNEL_DIRS) - -XENOMAI_KERNEL_THREADS_EXTRA_SYMBOLS = @XENOMAI_KERNEL_THREADS_EXTRA_SYMBOLS@ -RTAI_KERNEL_THREADS_EXTRA_SYMBOLS = @RTAI_KERNEL_THREADS_EXTRA_SYMBOLS@ -KBUILD_EXTRA_SYMBOLS = $($(THREADS)_THREADS_EXTRA_SYMBOLS) \ - $(EMC2_RTLIB_DIR)/Module.symvers POSIX_THREADS_RTFLAGS = @POSIX_THREADS_RTFLAGS@ RT_PREEMPT_THREADS_RTFLAGS = @RT_PREEMPT_THREADS_RTFLAGS@ XENOMAI_THREADS_RTFLAGS = @XENOMAI_THREADS_RTFLAGS@ -THREADS_RTFLAGS = $($(THREADS)_THREADS_RTFLAGS) \ - -DTHREAD_FLAVOR_ID=$(THREAD_FLAVOR_ID) -RTFLAGS := -I. $(THREADS_RTFLAGS) \ +RTFLAGS := -I. \ -DRTAPI -D_GNU_SOURCE -D_FORTIFY_SOURCE=0 -KERNEL_MATH_CFLAGS = $($(THREADS)_THREADS_KERNEL_MATH_CFLAGS) - ULFLAGS = -D_GNU_SOURCE -DLOCALE_DIR=\"$(localedir)\" -DPACKAGE=\"$(package)\" POSIX_THREADS_BUILD_SYS = @POSIX_THREADS_BUILD_SYS@ @@ -187,9 +165,6 @@ BUILD_DEV=@BUILD_DEV@ # enable not-yet-ported NML parts BUILD_NMLDEP=@BUILD_NMLDEP@ -# shared memory kernel driver -USE_SHMDRV=@USE_SHMDRV@ - # example programs BUILD_EXAMPLES=@BUILD_EXAMPLES@ diff --git a/src/Makefile.modinc.in b/src/Makefile.modinc.in index 1e1cf4e46c..e61f0fed4d 100644 --- a/src/Makefile.modinc.in +++ b/src/Makefile.modinc.in @@ -73,7 +73,7 @@ else include @EMC2_HOME@/share/linuxcnc/Makefile.inc endif -EXTRA_CFLAGS := $(RTFLAGS) $(EXTRA_RTFLAGS) \ +EXTRA_CFLAGS := $(EXTRA_RTFLAGS) \ -D__MODULE__ \ $(call cc-option,-mieee-fp) \ $(KERNEL_MATH_CFLAGS) diff --git a/src/configure.ac b/src/configure.ac index db6bb99de3..116c704073 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -120,7 +120,7 @@ AC_CONFIG_MACRO_DIR(/usr/share/aclocal) # RealTime checking # # Subsection 2.1 - init basic thread style params and declare m4 macros # # Subsection 2.2 - documentation of threads variables to be configured # -# Subsection 2.3 - misc basic features: platform, shmdrv, parport I/O, etc. # +# Subsection 2.3 - misc basic features: platform, parport I/O, etc. # # Subsection 2.4 - kernel detection and RT capability probing # # Subsection 2.5 - thread style configuration # # Subsection 2.6 - userland PCI driver configuration # @@ -131,72 +131,55 @@ AC_CONFIG_MACRO_DIR(/usr/share/aclocal) # Subsection 2.1 # # init basic thread style params # # - the [_cfg_flavor_params] m4 macro lists all flavors # -# - for each flavor, lists name, flavor_id, build_sys and threads_source # +# - for each flavor, lists name, flavor_id and threads_source # # # # define several m4 macros to help manipulate the list # ############################################################################## dnl #--------------------------------------------------------# -dnl # list of all thread styles with FLAVOR_ID and BUILD_SYS # +dnl # list of all thread styles with FLAVOR_ID # dnl # # -dnl # each thread style needs a 4-item m4 tuple set here: # -dnl # flavor-name, flavor-id, build-sys, threads-headers # +dnl # each thread style needs a 3-item m4 tuple set here: # +dnl # flavor-name, flavor-id, threads-headers # dnl # # dnl # flavor-name: lower-case with hyphens # dnl # flavor-id: a unique integer # -dnl # build-sys: one of kbuild or user-dso # dnl # threads-headers: header file from rtapi/*.h (w/o '.h') # dnl # mod_ext: RTAPI module extension, .so or .ko # dnl # so_ext: ULAPI module extension, .so # dnl # flags: see rtapi.h; combine with '|' operator, or 0 # -dnl # extra_kmods: list of extra kmodules to load # dnl # # dnl # these are used in both Makefiles and in config.h, # dnl # and are the single authoritative source for these data # dnl #--------------------------------------------------------# AC_DEFUN([_cfg_flavor_params], - [[[posix],[0],[user-dso],[rt-preempt],[.so],[.so],[0]], - [[rt-preempt],[1],[user-dso],[rt-preempt],[.so],[.so],[0]], - [[xenomai],[2],[user-dso],[xenomai],[.so],[.so],[FLAVOR_DOES_IO]]]) -# [[xenomai-kernel],[3],[kbuild],[xenomai-kernel],[.ko],[.so],dnl -#[FLAVOR_DOES_IO|FLAVOR_KERNEL_BUILD],[rtapi_math]], -# [[rtai-kernel],[4],[kbuild],[rtai-kernel],[.ko],[.so],dnl -#[FLAVOR_DOES_IO|FLAVOR_KERNEL_BUILD],dnl -#[rtai_hal rtai_sched rtapi_math]]]) + [[[posix],[0],[rt-preempt],[.so],[.so],[0]], + [[rt-preempt],[1],[rt-preempt],[.so],[.so],[0]], + [[xenomai],[2],[xenomai],[.so],[.so],[FLAVOR_DOES_IO]]]) dnl #--------------------------------------------------------# dnl # m4 convenience macros for accessing above data # dnl list of all thread styles to be used in macros -dnl posix,rt-preempt,xenomai,xenomai-kernel,rtai +dnl posix,rt-preempt,xenomai AC_DEFUN([_cfg_all_flavors], m4_map_sep([m4_car],[[,]],[_cfg_flavor_params])) dnl _cfg_flavor_id(flavor): return THREAD_FLAVOR_ID -dnl _cfg_flavor_id(xenomai) => 2; _cfg_flavor_id(rtai) => 4 +dnl _cfg_flavor_id(xenomai) => 2; _cfg_flavor_id(posix) => 0 AC_DEFUN([_cfg_flavor_tuple_id],[$2]) AC_DEFUN([_cfg_flavor_id], [m4_foreach([flav],[_cfg_flavor_params], [m4_cond(m4_car(flav),$1, m4_apply([_cfg_flavor_tuple_id],[flav]))])]) -dnl _cfg_flavor_build_sys(flavor): return BUILD_SYS: kbuild or user-dso -dnl for use in Makefiles -dnl _cfg_flavor_build_sys(xenomai) => user-dso; -dnl _cfg_flavor_build_sys(xenomai-kernel) => kbuild; -AC_DEFUN([_cfg_flavor_tuple_build_sys],[$3]) -AC_DEFUN([_cfg_flavor_build_sys], - [m4_foreach([flav],[_cfg_flavor_params], - [m4_cond(m4_car(flav),$1, - m4_apply([_cfg_flavor_tuple_build_sys],[flav]))])]) - dnl _cfg_flavor_threads_headers(flavor): return THREADS_HEADERS dnl for use in config.h dnl _cfg_flavor_threads_headers(xenomai) => rtapi/xenomai.h; dnl _cfg_flavor_threads_headers(posix) => rtapi/rt-preempt.h; -AC_DEFUN([_cfg_flavor_tuple_threads_headers],[$4]) +AC_DEFUN([_cfg_flavor_tuple_threads_headers],[$3]) AC_DEFUN([_cfg_flavor_threads_headers], rtapi/[m4_foreach([flav],[_cfg_flavor_params], [m4_cond(m4_car(flav),$1, @@ -206,7 +189,7 @@ dnl _cfg_flavor_mod_ext(flavor): return RT module extension: .ko or .so dnl for use in rtapi.ini dnl _cfg_flavor_mod_ext(xenomai) => .so; dnl _cfg_flavor_mod_ext(xenomai-kernel) => .ko; -AC_DEFUN([_cfg_flavor_tuple_mod_ext],[$5]) +AC_DEFUN([_cfg_flavor_tuple_mod_ext],[$4]) AC_DEFUN([_cfg_flavor_mod_ext], [m4_foreach([flav],[_cfg_flavor_params], [m4_cond(m4_car(flav),$1, @@ -215,7 +198,7 @@ AC_DEFUN([_cfg_flavor_mod_ext], dnl _cfg_flavor_so_ext(flavor): return plugin filename extension: .so dnl for use in rtapi.ini dnl _cfg_flavor_so_ext(xenomai) => .so -AC_DEFUN([_cfg_flavor_tuple_so_ext],[$6]) +AC_DEFUN([_cfg_flavor_tuple_so_ext],[$5]) AC_DEFUN([_cfg_flavor_so_ext], [m4_foreach([flav],[_cfg_flavor_params], [m4_cond(m4_car(flav),$1, @@ -225,70 +208,21 @@ dnl _cfg_flavor_flags(flavor): flavor flags: integer expression dnl for use in rtapi.ini dnl _cfg_flavor_flags(rt-preempt) => 0 dnl _cfg_flavor_flags(xenomai) => FLAVOR_DOES_IO -dnl _cfg_flavor_flags(xenomai-kernel) => FLAVOR_DOES_IO|FLAVOR_KERNEL_BUILD -AC_DEFUN([_cfg_flavor_tuple_flags],[$7]) +AC_DEFUN([_cfg_flavor_tuple_flags],[$6]) AC_DEFUN([_cfg_flavor_flags], [m4_foreach([flav],[_cfg_flavor_params], [m4_cond(m4_car(flav),$1, m4_apply([_cfg_flavor_tuple_flags],[flav]))])]) -dnl _cfg_flavor_extra_kmods(flavor): extra kernel modules to load for kthreads -dnl for use in rtapi.ini -dnl _cfg_flavor_extra_kmods(xenomai-kernel) => rtapi_math -AC_DEFUN([_cfg_flavor_tuple_extra_kmods],[$8]) -AC_DEFUN([_cfg_flavor_extra_kmods], - [m4_foreach([flav],[_cfg_flavor_params], - [m4_cond(m4_car(flav),$1, - m4_apply([_cfg_flavor_tuple_extra_kmods],[flav]))])]) - dnl _cfg_flavor_upcase(flavor): return uppercase, and dashes->underscores dnl used to generate C preprocessor macro names -dnl _cfg_flavor_ucase(xenomai-kernel) => XENOMAI_KERNEL +dnl _cfg_flavor_ucase(rt-preempt) => RT_PREEMPT AC_DEFUN([_cfg_flavor_upcase],[m4_translit([$*],[a-z-],[A-Z_])]) dnl _cfg_flavor_underscored(flavor): return dashes->underscores dnl used to generate e.g. $with_xenomai_kernel AC_DEFUN([_cfg_flavor_underscored],[m4_translit([$*],[-],[_])]) -dnl _cfg_flavor_BUILD_SYS(flavor): return BUILD_SYS_{KBUILD,USER_DSO} -dnl for use in config.h -dnl _cfg_flavor_BUILD_SYS(xenomai) => BUILD_SYS_USER_DSO; -dnl _cfg_flavor_BUILD_SYS(xenomai-kernel) => BUILD_SYS_KBUILD; -AC_DEFUN([_cfg_flavor_BUILD_SYS], - [BUILD_SYS_[]_cfg_flavor_upcase(_cfg_flavor_build_sys($1))]) - -dnl _cfg_kbuild_flavors: list of kbuild RT thread flavors -AC_DEFUN([_cfg_flavor_tuple_name],[$1]) -m4_foreach([flav],[_cfg_flavor_params], - [m4_cond(_cfg_flavor_build_sys(flav),[kbuild], - [m4_append_uniq([_cfg_tmp],_cfg_flavor_tuple_name(flav),[[ ]])] -)]) - -dnl _cfg_kbuild_flavors => xenomai-kernel,rtai -AC_DEFUN([_cfg_kbuild_flavors],m4_split(_cfg_tmp)) - - -#--------------------------------------------------------# -# Universal build variables and macros -# -# new thread systems introduced here: -# http://wiki.linuxcnc.org/cgi-bin/wiki.pl?RealtimeConfiguratonProposal -# -# at the shell script/makefile level, we have: -# -# $(threads) - one of 'rtai-kernel', 'posix', 'xenomai', 'xenomai-kernel', -# 'rt-preempt' in shell/Makefile -# -# the Makefile will run '$(MAKE) threads= modules' once for -# each flavor configured here. -# -# This is used to generate the upper-case, underscored $(THREADS), -# which is e.g. POSIX or RTAI_KERNEL. -# -# $(THREADS) in turn is used to select the correct configuration -# variables out of Makefile.inc. For example, THREADS_RTFLAGS is set -# to RT_PREEMPT_THREADS_RTFLAGS for the rt-preempt flavor. - ############################################################################## # Subsection 2.2 # @@ -306,8 +240,7 @@ AC_DEFUN([_cfg_kbuild_flavors],m4_split(_cfg_tmp)) # BUILD_THREAD_FLAVORS # # a list of all configured threads systems to build; the complete -# possible list is 'posix rt-preempt xenomai xenomai-kernel -# rtai-kernel' +# possible list is 'posix rt-preempt xenomai' # # _THREADS_RTS # @@ -325,10 +258,6 @@ AC_DEFUN([_cfg_kbuild_flavors],m4_split(_cfg_tmp)) # this is used in config.h to set flavor-specific macros, and set in # cflags for any compile that #includes config.h # -# _THREADS_BUILD_SYS -# -# 'kbuild' for kernel threads, 'user-dso' for user threads -# # _THREADS_SOURCE # # the basename of the flavor's file in src/rtapi; this is usually the @@ -345,34 +274,8 @@ AC_DEFUN([_cfg_kbuild_flavors],m4_split(_cfg_tmp)) # list of LDFLAGS specific to the threads system; also obtained partly # from _THREADS_RTS --ldflags # -# _THREADS_KERNEL_DIRS -# -# for kbuild flavors only (currently); list of directory paths for the -# flavor's configured kernel source trees -# -# paths may be explicitly set on the ./configure command line using -# '--with-xenomai-kernel-sources' or '--with-rtai-kernel-sources' -# -# otherwise kernel sources are automatically detected from standard -# locations, which may be extended using '--with-extra-kernel-sources' -# -# SHMDRV_KERNEL_DIRS -# -# similar to above, a list of directory paths for which to build the -# shmdrv.ko module -# -# as above, paths may be set using '--with-shmdrv-kernel-sources' -# -# --enable-shmdrv builds shmdrv.ko for all configured kernels, -# regardless of whether other kthreads modules will be built; -# shmdrv.ko is always built for kthreads modules -# -# _THREADS_EXTRA_SYMBOLS -# # path name to a Module.symvers file needed by kbuild # -# _THREADS_KERNEL_MATH_CFLAGS -# # math-related CFLAGS used in RTAPI compiles; partly obtained by # _THREADS_RTS @@ -385,25 +288,6 @@ AC_DEFUN([_cfg_kbuild_flavors],m4_split(_cfg_tmp)) # # flavor macros from config.h, set appropriately for each '$(MAKE) # threads= modules' run: -# -# RTAPI_ -# -# for example '#ifdef RTAPI_RTAI_KERNEL' to test if the current flavor -# being built is rtai-kernel - -# THREAD_FLAVOR_NAME -# -# the name of the current flavor, quoted, e.g. "posix" or "rt-preempt" - -# BUILD_SYS_USER_DSO or BUILD_SYS_KBUILD -# -# The former will be defined for userland threads, the latter for -# kernel threads -# -# THREADS_HEADERS -# -# Used by the rtapi system to #include the correct headers for the -# flavor currently being built, e.g. "rtapi/xenomai.h" # RTAPI__ID # @@ -448,18 +332,6 @@ AC_DEFUN([_cfg_kbuild_flavors],m4_split(_cfg_tmp)) # /* build hardware drivers */ # #define BUILD_DRIVERS /**/ # -# -KSOURCE_LOCATION_HINTS=$(echo \ - /usr/src/kernels/* \ - /usr/src/linux-headers-* \ - /lib/modules/*/build \ - ) -# -# Places to look for Xeno and RTAI kernel headers -# -# RedHat-derivatives: (/usr/src/kernels/`uname -r`), -# Debian-derivatives: (/usr/src/linux-headers-`uname -r`) -# Vanilla kernel install: (/lib/modules/`uname -r`/build) # USE_PORTABLE_PARPORT_IO="no" @@ -899,29 +771,6 @@ AC_ARG_ENABLE(proto-js, ]) -AC_MSG_CHECKING(whether to use the common shared memory driver) -AC_ARG_ENABLE(shmdrv, - [ --enable-shmdrv use the common shared memory driver kernel module], - [ - case "$enableval" in - Y*|y*) - USE_SHMDRV=yes - AC_MSG_RESULT([explicitly configuring for common shared memory driver kernel module]) - ;; - N*|n*) - USE_SHMDRV=no - AC_MSG_RESULT([explicitly disabling shared memory driver kernel module]) - ;; - esac - if test -z "USE_SHMDRV"; then - AC_MSG_ERROR([ I dont understand $enableval, just yes or no ]) - fi - ], - [ - USE_SHMDRV=no - AC_MSG_RESULT([default is no]) - ]) - AC_MSG_CHECKING(whether to use inb/outb or ppdev ioctl on the x86 for parport I/O) AC_ARG_ENABLE(portable-parport, [ --enable-portable-parport Build hal_parport using the ppdev ioctl instead of inb/outb], @@ -1087,266 +936,6 @@ AC_PYTHON_MODULE(pyftpdlib.servers, failed to import pyftpdlib.servers - python-pyftpdlib package missing or too old? ) -############################################################################## -# Subsection 2.4 # -# Kernel detection # -# Find all kernels on system and assess realtime capabilities # -############################################################################## - -check_kernel_source_configured() { - # Check if a path is a configured kernel source - local ksrc_dir=${1} - if test -z "$ksrc_dir"; then - AC_MSG_ERROR([check_kernel_source_configured() given empty ksrc_dir]) - fi - - AC_MSG_CHECKING([for configured kernel source in $ksrc_dir]) - # if .config and version.h both exist, then assume it's configured - if test -f "$ksrc_dir/.config" -a \ - \( -f "$ksrc_dir/include/linux/version.h" -o \ - -f "$ksrc_dir/include/generated/uapi/linux/version.h" \); then - AC_MSG_RESULT([found]) - return 0 - else - AC_MSG_RESULT([not found]) - return 1 - fi -} - -check_kernel_source_version() { - # get kernel version from version.h; set variable KVER - # assume check_source_configured() already done - - # Unfortunately, many distributions (redhat, mandrake) have - # #defines inside version.h, so a simple cat|grep|cut test won't - # work... But then again, RH & Mandrake kernels are notorious for - # their use of patches that break the RT patching - Both RTAI and - # RTLinux strongly recommend using a virgin source from - # kernel.org. - - local ksrc_dir=${1} - if test -z "$ksrc_dir"; then - AC_MSG_ERROR([check_kernel_source_version() given empty ksrc_dir]) - fi - - # Get the kernel version from version.h - AC_MSG_CHECKING([kernel version string in $ksrc_dir]) - - if test -e $ksrc_dir/include/linux/utsrelease.h; then - VERSION_FILE=$ksrc_dir/include/linux/utsrelease.h - elif test -e $ksrc_dir/include/generated/utsrelease.h; then - VERSION_FILE=$ksrc_dir/include/generated/utsrelease.h - else - VERSION_FILE=$ksrc_dir/include/linux/version.h - fi - KVER=`$CC -E -dM ${VERSION_FILE} | grep UTS | cut -d '"' -f 2` - - if test -z "$KVER"; then - AC_MSG_RESULT([not found]) - else - AC_MSG_RESULT([$KVER]) - fi -} - -check_xenomai_kernel_source() { - # check if kernel source is a xenomai kernel source - # assume check_source_configured() already done - - local ksrc_dir=${1} - if test -z "$ksrc_dir"; then - AC_MSG_ERROR([check_xenomai_kernel_source() given empty ksrc_dir]) - fi - - # look for CONFIG_XENOMAI variable - AC_MSG_CHECKING(if $ksrc_dir is a xenomai kernel) - if test -f "$ksrc_dir/.config" && \ - grep -q '^CONFIG_XENOMAI=' "$ksrc_dir/.config"; then - AC_MSG_RESULT([yes]) - return 0 - else - AC_MSG_RESULT([no]) - return 1 - fi - -} - - -#check_rtai_kernel_source() { -# # check if kernel source is an rtai kernel source -# # assume check_source_configured() already done -# -# local ksrc_dir=${1} -# if test -z "$ksrc_dir"; then -# AC_MSG_ERROR([check_rtai_kernel_source() given empty ksrc_dir]) -# fi -# -# -# # look for rt_daemonize (older RTAI) or rtai_irq_handler (at least -# # RTAI 4.0) or rtai_syscall_hook (RTAI 4.1) function definition -# AC_MSG_CHECKING(if $ksrc_dir is an RTAI kernel) -# if test -f "$ksrc_dir/Module.symvers" && \ -# grep -q '\(rt_daemonize\|rtai_irq_handler\|rtai_syscall_hook\)' \ -# "$ksrc_dir/Module.symvers"; then -# AC_MSG_RESULT([yes]) -# return 0 -# else -# AC_MSG_RESULT([no]) -# return 1 -# fi -# -#} - -# xenomai kernel modules will be built for these kernels if -# xenomai-kernel threads are enabled -#xenomai_kernels='' -# RTAI kernel modules will be built for these kernels if -# rtai-kernel threads are enabled -#rtai_kernels='' -# shmdrv kernel modules will be built for these kernels if -# shmdrv and at least one userspace threads are enabled -shmdrv_kernels='' -# -# list of kernel sources seen, so we don't check the same ones repeatedly -seen_kernels=' ' -# ...and a function to check and add new -kernel_seen() { - if test "${seen_kernels/ $1 /}" = "$seen_kernels"; then - # not seen - seen_kernels="$seen_kernels $1 " - return 1 - else - # seen - return 0 - fi -} - -# check any xenomai sources specified on command line now -# if any found, only build xenomai modules for these kernels -AC_ARG_WITH(xenomai-kernel-sources, - [AS_HELP_STRING([--with-xenomai-kernel-sources=" ..."], - [directory paths of xenomai kernel source(s), space-separated])], - [# check directories now - if test $with_xenomai_kernel_sources = no; then - # ignore this - with_xenomai_kernel_sources='' - else - for ksrc_dir in $with_xenomai_kernel_sources; do - ksrc_dir=$(readlink -f $ksrc_dir) - # add only configured, confirmed Xenomai sources - if check_kernel_source_configured $ksrc_dir && \ - check_xenomai_kernel_source $ksrc_dir; then - shmdrv_kernels="shmdrv_kernels $ksrc_dir" - xenomai_kernels="$xenomai_kernels $ksrc_dir" - # note this one's been seen - kernel_seen $ksrc_dir - else - AC_MSG_ERROR([invalid xenomai kernel source: $ksrc_dir]) - fi - done - fi - ], - [with_xenomai_kernel_sources='']) - -# check any RTAI sources specified on command line now -# if any found, only build RTAI modules for these kernels -#AC_ARG_WITH(rtai-kernel-sources, -# [AS_HELP_STRING([--with-rtai-kernel-sources=" ..."], -# [directory paths of RTAI kernel source(s), space-separated])], -# [# check directories now -# if test $with_rtai_kernel_sources = no; then -# # ignore this -# with_rtai_kernel_sources='' -# else -# for ksrc_dir in $with_rtai_kernel_sources; do -# ksrc_dir=$(readlink -f $ksrc_dir) -# # add only configured, confirmed RTAI sources -# if check_kernel_source_configured $ksrc_dir && \ -# check_rtai_kernel_source $ksrc_dir; then -# shmdrv_kernels="$shmdrv_kernels $ksrc_dir" -# rtai_kernels="$rtai_kernels $ksrc_dir" -# # note this one's been seen -# kernel_seen $ksrc_dir -# else -# AC_MSG_ERROR([invalid RTAI kernel source: $ksrc_dir]) -# fi -# done -# fi -# ], -# [with_rtai_kernel_sources='']) -# - -# check any shmdrv sources specified on command line now -# if any found, build shmdrv modules for these kernels -AC_ARG_WITH(shmdrv-kernel-sources, - [AS_HELP_STRING([--with-shmdrv-kernel-sources=" ..."], - [directory paths of kernel source(s) to build shmdrv module for])], - [# check directories now - if test $with_shmdrv_kernel_sources = no; then - # ignore --without-shmdrv-kernel-sources - with_shmdrv_kernel_sources='' - else - for ksrc_dir in $with_shmdrv_kernel_sources; do - ksrc_dir=$(readlink -f $ksrc_dir) - # add only new, configured sources - if ! kernel_seen $ksrc_dir && \ - check_kernel_source_configured $ksrc_dir; then - shmdrv_kernels="$shmdrv_kernels $ksrc_dir" - else - AC_MSG_ERROR([invalid kernel source: $ksrc_dir]) - fi - done - fi - ], - [with_shmdrv_kernel_sources='']) - -AC_ARG_WITH(extra_kernel_sources, - [AS_HELP_STRING( - [--with-extra-kernel-sources=" ..."], - [list of extra kernel source directories to search])], - [KSOURCE_LOCATION_HINTS="$KSOURCE_LOCATION_HINTS - $with_extra_kernel_sources"]) - - -find_kernels() { - # find all kernel directories from hints if not told on cmdline - # check kernel source is a valid, configured tree - # add all valid trees to $shmdrv_kernels - # add all valid xenomai and rtai trees to $xenomai_kernels and - # $rtai_kernels, respectively - location_list='' - for location in $KSOURCE_LOCATION_HINTS; do - location=$(readlink -f $location) - - # be sure $location is a directory not already in the list - test -d "$location" || continue - test "${location_list/$location/}" = "${location_list}" || continue - - # if kernel source has been seen, ignore it - kernel_seen $location && continue - - # if kernel source unconfigured, ignore it - check_kernel_source_configured $location || continue - - # if --with-shmdrv-kernel-sources not explicitly on cmdline, add it - test -z "$with_shmdrv_kernel_sources" && \ - shmdrv_kernels="$shmdrv_kernels $location" - # if --with-xenomai-kernel-sources not explicitly on cmdline - # and xenomai kernel detected, add it - test -z "$with_xenomai_kernel_sources" && \ - check_xenomai_kernel_source $location && \ - xenomai_kernels="$xenomai_kernels $location" - # if --with-rtai-kernel-sources not explicitly on cmdline and - # RTAI kernel detected, add it - #test -z "$with_rtai_kernel_sources" && \ - # check_rtai_kernel_source $location && \ - # rtai_kernels="$rtai_kernels $location" - done -} - - -find_kernels - - ############################################################################## # Subsection 2.5 # # Flavor configuration # @@ -1382,36 +971,6 @@ AC_ARG_WITH(xenomai, test $withval = yes && all_flavors_default=no], [with_xenomai=check]) -#AC_ARG_WITH(xenomai-kernel, -# [AS_HELP_STRING([--with-xenomai-kernel], -# [build Xenomai kernel-space realtime threads (deprecated)])], -# [xenomai_kernel_from_cmdline=$withval -# test $withval = yes && all_flavors_default=no], -# [with_xenomai_kernel=check]) -# XENOMAI_THREADS_RTS: locate the 'xeno-config' executable -#AC_ARG_WITH(xeno-config, -# [AS_HELP_STRING([--with-xeno-config=], -# [location of the xeno-config executable])], -# [xeno_config_from_cmdline=yes], -# [ -# with_xenomai_config="" -# ]) -# -#AC_ARG_WITH(rtai-kernel, -# [AS_HELP_STRING([--with-rtai-kernel], -# [build RTAI kernel-space realtime threads modules])], -# [test $withval = yes && all_flavors_default=no], -# [with_rtai_kernel=check]) -# RTAI_KERNEL_THREADS_RTS: locate the 'rtai-config' executable -#AC_ARG_WITH(rtai-config, -# [AS_HELP_STRING([--with-rtai-config=], -# [location of the rtai-config executable])], -# [rtai_config_from_cmdline=yes], -# [ -# with_rtai_config="" -# ]) - - # If a --with- flag was found, disable all flavors not # explicitly enabled if test $all_flavors_default = no; then @@ -1526,10 +1085,6 @@ if test "$with_xenomai" != no -o "$with_xenomai_kernel" != no; then with_xenomai=no fi fi - if test -x "$XENOMAI_THREADS_RTS"; then - # found xeno-config; use same one for kernel threads for consistency - XENOMAI_KERNEL_THREADS_RTS="$XENOMAI_THREADS_RTS" - fi fi if test -n "$XENOMAI_THREADS_RTS"; then @@ -1559,7 +1114,6 @@ if test "$with_xenomai" != no -o "$with_xenomai_kernel" != no; then flags="$flags -fno-stack-protector" fi XENOMAI_THREADS_RTFLAGS="$XENOMAI_THREADS_RTFLAGS $flags" - XENOMAI_KERNEL_THREADS_RTFLAGS="$XENOMAI_KERNEL_THREADS_RTFLAGS -g $flags" # xenomai kernel math options flags="-ffast-math -mhard-float" if test "$($XENOMAI_THREADS_RTS --arch)" = x86; then @@ -1570,12 +1124,10 @@ if test "$with_xenomai" != no -o "$with_xenomai_kernel" != no; then # -mpreferred-stack-boundary=3 on x86_64 arch, so force it. flags="$flags -mpreferred-stack-boundary=4" fi - XENOMAI_KERNEL_THREADS_KERNEL_MATH_CFLAGS="$flags" # ldflags flags="$($XENOMAI_THREADS_RTS --ldflags)" AC_PRUNE_DEFAULT_LDFLAGS(flags) XENOMAI_THREADS_LDFLAGS="$XENOMAI_THREADS_LDFLAGS $flags" - XENOMAI_KERNEL_THREADS_LDFLAGS="$XENOMAI_KERNEL_THREADS_LDFLAGS $flags" fi AC_MSG_CHECKING(whether to build Xenomai userland threads) @@ -1673,12 +1225,6 @@ if test "$with_drivers" = yes; then fi AC_SUBST(BUILD_DRIVERS,[$with_drivers]) -if test "$USE_SHMDRV" = yes; then - AC_DEFINE(USE_SHMDRV, [], [use shm driver module]) -fi -AC_SUBST(USE_SHMDRV) -AC_SUBST(SHMDRV_KERNEL_DIRS,[$shmdrv_kernels]) - AC_SUBST(BUILD_EXAMPLES) if test "$BUILD_EXAMPLES" = yes; then AC_DEFINE(BUILD_EXAMPLES, [], [build programming examples]) @@ -1806,12 +1352,10 @@ if test "$with_posix" = yes; then fi AC_SUBST([HAVE_POSIX_THREADS],[$with_posix]) AC_SUBST([POSIX_THREADS_FLAVOR_ID],_cfg_flavor_id(posix)) -AC_SUBST([POSIX_THREADS_BUILD_SYS],_cfg_flavor_build_sys(posix)) AC_SUBST([POSIX_THREADS_SOURCE],[rt-preempt]) AC_SUBST([POSIX_THREADS_RTFLAGS]) AC_SUBST([POSIX_THREADS_LDFLAGS]) AC_SUBST([POSIX_THREADS_RTS],[]) -AC_SUBST([POSIX_THREADS_EXTRA_KMODS],[]) # RT_PREEMPT settings if test "$with_rt_preempt" = yes; then @@ -1819,12 +1363,10 @@ if test "$with_rt_preempt" = yes; then fi AC_SUBST([HAVE_RT_PREEMPT_THREADS],[$with_rt_preempt]) AC_SUBST([RT_PREEMPT_THREADS_FLAVOR_ID],_cfg_flavor_id(rt-preempt)) -AC_SUBST([RT_PREEMPT_THREADS_BUILD_SYS],_cfg_flavor_build_sys(rt-preempt)) AC_SUBST([RT_PREEMPT_THREADS_SOURCE],[rt-preempt]) AC_SUBST([RT_PREEMPT_THREADS_RTFLAGS]) AC_SUBST([RT_PREEMPT_THREADS_LDFLAGS]) AC_SUBST([RT_PREEMPT_THREADS_RTS],[]) -AC_SUBST([RT_PREEMPT_THREADS_EXTRA_KMODS],[]) # Xenomai general settings if test "$XENOMAI_V2" = true; then @@ -1839,12 +1381,10 @@ if test "$with_xenomai" = yes; then fi AC_SUBST([HAVE_XENOMAI_THREADS],[$with_xenomai]) AC_SUBST([XENOMAI_THREADS_FLAVOR_ID],_cfg_flavor_id(xenomai)) -AC_SUBST([XENOMAI_THREADS_BUILD_SYS],_cfg_flavor_build_sys(xenomai)) AC_SUBST([XENOMAI_THREADS_SOURCE],[xenomai]) AC_SUBST([XENOMAI_THREADS_RTFLAGS]) AC_SUBST([XENOMAI_THREADS_LDFLAGS]) AC_SUBST([XENOMAI_THREADS_RTS]) -AC_SUBST([XENOMAI_THREADS_EXTRA_KMODS],[]) AC_SUBST([PRECISE_MULTILIB_BUG],[$PRECISE_MULTILIB_BUG]) # while we are at it, drop a git scent mark @@ -2062,6 +1602,7 @@ if test "xyes" = "x$RUN_IN_PLACE"; then EMC2_PO_DIR=$EMC2_HOME/share/locale EMC2_HELP_DIR=$EMC2_HOME/help EMC2_RTLIB_DIR=$EMC2_HOME/rtlib + EMC2_MODULES_DIR=$EMC2_RTLIB_DIR/modules LINUXCNC_CONFIG_PATH="~/machinekit/configs:$EMC2_HOME/configs" EMC2_NCFILES_DIR=$EMC2_HOME/nc_files REALTIME=$EMC2_HOME/scripts/realtime @@ -2080,6 +1621,7 @@ else EMC2_PO_DIR=${prefix}/share/locale EMC2_HELP_DIR=${prefix}/share/doc/linuxcnc EMC2_RTLIB_DIR=${prefix}/lib/linuxcnc + EMC2_MODULES_DIR=$EMC2_RTLIB_DIR/modules LINUXCNC_CONFIG_PATH="~/machinekit/configs:${sysconfdir}/linuxcnc/configs:$(fe "$datadir")/linuxcnc/examples/sample-configs" EMC2_NCFILES_DIR=${prefix}/share/linuxcnc/ncfiles REALTIME=${bindir}/realtime @@ -2098,6 +1640,8 @@ AC_DEFINE_UNQUOTED([EMC2_HOME], "$EMC2_HOME", [Prefix or RIP directory]) AC_DEFINE_UNQUOTED([MACHINEKIT_INI], "$MACHINEKIT_INI", [path of global machinekit.ini file]) AC_DEFINE_UNQUOTED([EMC2_BIN_DIR], "$EMC2_BIN_DIR", [Directory for binaries]) AC_DEFINE_UNQUOTED([EMC2_RTLIB_DIR], "$EMC2_RTLIB_DIR", [Directory for ulapi shared objects]) +AC_DEFINE_UNQUOTED([EMC2_MODULES_DIR], "$EMC2_MODULES_DIR", + [Directory for rtapi shared objects]) AC_DEFINE_UNQUOTED([EMC2_PO_DIR], "$EMC2_PO_DIR", [Directory for po/mo translation files]) AC_DEFINE_UNQUOTED([EMC2_NCFILES_DIR], "$EMC2_NCFILES_DIR", [Directory for nc files]) AC_DEFINE_UNQUOTED([EMC2_IMAGE_DIR], "$EMC2_IMAGE_DIR", [Directory for images]) @@ -2111,6 +1655,7 @@ AC_SUBST([EMC2_TCL_DIR]) AC_SUBST([EMC2_TCL_LIB_DIR]) AC_SUBST([EMC2_HELP_DIR]) AC_SUBST([EMC2_RTLIB_DIR]) +AC_SUBST([EMC2_MODULES_DIR]) AC_SUBST([EMC2_LANG_DIR]) AC_SUBST([LINUXCNC_CONFIG_PATH]) AC_SUBST([EMC2_NCFILES_DIR]) @@ -2214,27 +1759,6 @@ then AC_MSG_ERROR([awk not found]) fi -#if test -n "${rtai_kernels}${xenomai_kernels}${shmdrv_kernels}"; then - # Kernel module tools only needed for kthreads -# AC_PATH_PROG(INSMOD, insmod, "none", $SPATH) -# if test $INSMOD = "none" -# then -# AC_MSG_ERROR([insmod not found]) -# fi - -# AC_PATH_PROG(RMMOD, rmmod, "none", $SPATH) -# if test $RMMOD = "none" -# then -# AC_MSG_ERROR([rmmod not found]) -# fi - -# AC_PATH_PROG(LSMOD, lsmod, "none", $SPATH) -# if test $LSMOD = "none" -# then -# AC_MSG_ERROR([lsmod not found]) -# fi -#fi - AC_PATH_PROG(PIDOF, pidof, "none", $SPATH) if test $PIDOF = "none" then @@ -2256,42 +1780,6 @@ fi # MANDB empty is handled in doc/Submakefile AC_PATH_PROG(MANDB, mandb, "") -AC_ARG_WITH(rmmod, - [ --with-rmmod= rmmod variant], - [ - case "$withval" in - "" | y | ye | yes) - AC_MSG_ERROR([You must supply an argument to --with-rmmod.]) - ;; - n | no | none) - RMMOD="" - ;; - *) - RMMOD="$withval" - esac - ], - [ - RMMOD="$EMC2_BIN_DIR/linuxcnc_module_helper remove" - ]) - -AC_ARG_WITH(insmod, - [ --with-insmod= insmod variant], - [ - case "$withval" in - "" | y | ye | yes) - AC_MSG_ERROR([You must supply an argument to --with-insmod.]) - ;; - n | no | none) - INSMOD="" - ;; - *) - INSMOD="$withval" - esac - ], - [ - INSMOD="$EMC2_BIN_DIR/linuxcnc_module_helper insert" - ]) - ############################################################################## # Subsection 3.5 - check for programs needed to build documentation # # # @@ -2475,7 +1963,7 @@ AC_SUBST(BUILD_DOCS) # be used in both kernel space and user space. dnl _cfg_thread_flavor_macros(): define thread flavor IDs -dnl and set RTAPI_, BUILD_SYS_ & THREADS_HEADERS macros +dnl and set RTAPI_ & THREADS_HEADERS macros AC_DEFUN([_cfg_thread_flavor_macros],[dnl m4_foreach([_cfg_flavor],[_cfg_all_flavors],[dnl [#]define RTAPI_[]_cfg_flavor_upcase(_cfg_flavor)[]_ID dnl @@ -2483,21 +1971,6 @@ _cfg_flavor_id(_cfg_flavor) [#]define RTAPI_[]_cfg_flavor_upcase(_cfg_flavor)[]_NAME dnl "_cfg_flavor" ]) -#if ! defined(THREAD_FLAVOR_ID) -// this isn't allowed when building RTAPI -#ifdef RTAPI -#error RTAPI defined but THREAD_FLAVOR_ID not defined -#endif -m4_foreach([_cfg_flavor],[_cfg_all_flavors],[dnl -[#]elif THREAD_FLAVOR_ID == RTAPI_[]_cfg_flavor_upcase(_cfg_flavor)_ID -[#] define RTAPI_[]_cfg_flavor_upcase(_cfg_flavor) -[#] define THREAD_FLAVOR_NAME "_cfg_flavor" -[#] define _cfg_flavor_BUILD_SYS(_cfg_flavor) -[#] define THREADS_HEADERS "_cfg_flavor_threads_headers(_cfg_flavor)" -])dnl -#else -#error unknown value for THREAD_FLAVOR_ID -#endif ]) @@ -2560,7 +2033,7 @@ AH_TOP([/******************************************************************** ] // flavor IDs for the various threads systems -// and conditional to set thread system and build_sys macros +// and conditional to set thread system macros // alter these in configure.ac Subsection 2.0 dnl this needs to be unquoted _cfg_thread_flavor_macros @@ -2619,7 +2092,6 @@ m4_foreach([_cfg_flavor],[_cfg_all_flavors],[dnl # These values do not normally need to be changed. rtapi_app=@EMC2_LIBEXEC_DIR@/rtapi_app_[]_cfg_flavor RTS=@_cfg_flavor_upcase(_cfg_flavor)_THREADS_RTS@ -MODULES=@_cfg_flavor_upcase(_cfg_flavor)_THREADS_EXTRA_KMODS@ ]) EOF EOFOUTER diff --git a/src/emc/motion/mot_priv.h b/src/emc/motion/mot_priv.h index e569aa04ea..77477d8359 100644 --- a/src/emc/motion/mot_priv.h +++ b/src/emc/motion/mot_priv.h @@ -2,10 +2,10 @@ * Description: mot_priv.h * Macros and declarations local to the realtime sources. * -* Author: +* Author: * License: GPL Version 2 * System: Linux -* +* * Copyright (c) 2004 All rights reserved. * * Last change: @@ -117,7 +117,7 @@ typedef struct { hal_float_t debug_float_3; /* RPA: generic param, for debugging */ hal_s32_t debug_s32_0; /* RPA: generic param, for debugging */ hal_s32_t debug_s32_1; /* RPA: generic param, for debugging */ - + hal_bit_t *synch_do[EMCMOT_MAX_DIO]; /* WPI array: output pins for motion synched IO */ hal_bit_t *synch_di[EMCMOT_MAX_DIO]; /* RPI array: input pins for motion synched IO */ hal_bit_t *synch_do_io[EMCMOT_MAX_DIO]; /* RPI array: output io pins for motion synched IO */ @@ -151,7 +151,7 @@ typedef struct { hal_float_t *spindle_speed_out_rps_abs; /* spindle speed output absolute*/ hal_float_t *spindle_speed_cmd_rps; /* spindle speed command without SO applied */ hal_float_t *spindle_speed_in; /* spindle speed measured */ - + // spindle orient hal_float_t *spindle_orient_angle; /* out: desired spindle angle, degrees */ hal_s32_t *spindle_orient_mode; /* out: 0: least travel; 1: cw; 2: ccw */ @@ -248,15 +248,15 @@ enum pause_state { PS_RUNNING=0, // aka 'not paused' /* HAL component ID for motion module */ extern int mot_comp_id; -/* userdefined number of joints. default is EMCMOT_MAX_JOINTS(=8), +/* userdefined number of joints. default is EMCMOT_MAX_JOINTS(=8), but can be altered at motmod insmod time */ extern int num_joints; -/* userdefined number of digital IO. default is 4. (EMCMOT_MAX_DIO=64), +/* userdefined number of digital IO. default is 4. (EMCMOT_MAX_DIO=64), but can be altered at motmod insmod time */ extern int num_dio; -/* userdefined number of analog IO. default is 4. (EMCMOT_MAX_AIO=64), +/* userdefined number of analog IO. default is 4. (EMCMOT_MAX_AIO=64), but can be altered at motmod insmod time */ extern int num_aio; @@ -409,10 +409,4 @@ extern void reportError(const char *fmt, ...) __attribute((format(printf,1,2))); #define GET_JOINT_FAULT_FLAG(joint) ((joint)->flag & EMCMOT_JOINT_FAULT_BIT ? 1 : 0) #define SET_JOINT_FAULT_FLAG(joint,fl) if (fl) (joint)->flag |= EMCMOT_JOINT_FAULT_BIT; else (joint)->flag &= ~EMCMOT_JOINT_FAULT_BIT; - -#if defined(LINUX_VERSION_CODE) && !defined(BUILD_SYS_USER_DSO) -#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,0) -#define HAVE_CPU_KHZ -#endif -#endif #endif /* MOT_PRIV_H */ diff --git a/src/emc/tp/tp_types.h b/src/emc/tp/tp_types.h index 29e1f1e345..0ede6b6939 100644 --- a/src/emc/tp/tp_types.h +++ b/src/emc/tp/tp_types.h @@ -7,7 +7,7 @@ * Author: * License: GPL Version 2 * System: Linux -* +* * Copyright (c) 2004 All rights reserved. * ********************************************************************/ @@ -18,10 +18,7 @@ #include "posemath.h" #include "tc_types.h" #include "tcq.h" - -#if defined(BUILD_SYS_USER_DSO) #include -#endif #define TP_DEFAULT_QUEUE_SIZE 32 /* Minimum length of a segment in cycles (must be greater than 1 to ensure each diff --git a/src/hal/components/hal_pru.c b/src/hal/components/hal_pru.c index c1e7c1daab..adc015fa1c 100644 --- a/src/hal/components/hal_pru.c +++ b/src/hal/components/hal_pru.c @@ -8,10 +8,6 @@ #error "This driver is for the beaglebone platform only" #endif -#if !defined(BUILD_SYS_USER_DSO) -#error "This driver is for usermode threads only" -#endif - #include "rtapi.h" /* RTAPI realtime OS API */ #include "rtapi_compat.h" /* RTAPI support functions */ #include "rtapi_app.h" /* RTAPI realtime module decls */ @@ -110,7 +106,7 @@ static int comp_id; /* component ID */ static const char *modname = MODNAME; // if filename doesnt exist, prefix this path: -char *fw_path = "/lib/firmware/pru/"; +char *fw_path = "/lib/firmware/pru/"; // shared with PRU static unsigned long *pru_data_ram; // points to PRU data RAM @@ -335,7 +331,7 @@ static int setup_pru(int pru, char *filename, int disabled) // default the .bin filename if not given if (!strlen(filename)){ - rtapi_print_msg(RTAPI_MSG_ERR, + rtapi_print_msg(RTAPI_MSG_ERR, "%s: no filename given - default to %s\n", modname, DEFAULT_CODE); filename = DEFAULT_CODE; @@ -346,7 +342,7 @@ static int setup_pru(int pru, char *filename, int disabled) if (!((stat(pru_binpath, &statb) == 0) && S_ISREG(statb.st_mode))) { - rtapi_print_msg(RTAPI_MSG_ERR, + rtapi_print_msg(RTAPI_MSG_ERR, "%s: filename %s does not exist.\n", modname, pru_binpath); // filename not found, prefix fw_path & try that: strcpy(pru_binpath, fw_path); diff --git a/src/hal/components/hal_prudebug.c b/src/hal/components/hal_prudebug.c index d9cbb49498..996e99b06f 100644 --- a/src/hal/components/hal_prudebug.c +++ b/src/hal/components/hal_prudebug.c @@ -8,10 +8,6 @@ #error "This driver is for the beaglebone platform only" #endif -#if !defined(BUILD_SYS_USER_DSO) -#error "This driver is for usermode threads only" -#endif - // try to make sense of IEP and ECAP counters // not part of debugging #define EXPLORE_COUNTERS 1 diff --git a/src/hal/components/mux_generic.c b/src/hal/components/mux_generic.c index 5a31ac2d77..01bd406d65 100644 --- a/src/hal/components/mux_generic.c +++ b/src/hal/components/mux_generic.c @@ -23,10 +23,8 @@ #include "hal.h" #include "hal_priv.h" -#if defined(BUILD_SYS_USER_DSO) #include #include -#endif /* module information */ MODULE_AUTHOR("Andy Pugh"); diff --git a/src/hal/components/pepper.c b/src/hal/components/pepper.c index 22bfdc23ce..70fe9de71e 100644 --- a/src/hal/components/pepper.c +++ b/src/hal/components/pepper.c @@ -6,7 +6,7 @@ * * Author: Bas Laarhoven * License: GPL Version 2 -* +* * Copyright (c) 2014 All rights reserved. * * Last change: 16-04-2014 sjl - created. @@ -93,10 +93,6 @@ MODULE_DESCRIPTION("Pepper Board Configuration Component for EMC HAL"); MODULE_LICENSE("GPL"); -#if !defined( BUILD_SYS_USER_DSO) -#error "This driver is for usermode threads only" -#endif - /*********************************************************************** * STRUCTURES AND GLOBAL VARIABLES * ************************************************************************/ @@ -276,11 +272,11 @@ static void pepper_update( void *arg, long period) * Simple, two state implementation (00 & 11). */ if (*(pepper->io_ena_in) == 0) { - spindle_mosi = + spindle_mosi = enable_sck = 0; state = 0; } else { - spindle_mosi = + spindle_mosi = enable_sck = *(pepper->stepper_ena_in[ 0]) || *(pepper->stepper_ena_in[ 1]) || @@ -412,7 +408,7 @@ static int pepper_export( hal_pepper_t* addr, const char* prefix) { int retval; int i; - + retval = hal_pin_bit_newf( HAL_IN, &(addr->io_ena_in), comp_id, "%s.io-ena.in", prefix); if (retval != 0) { return retval; diff --git a/src/hal/components/rtfault.comp b/src/hal/components/rtfault.comp index 5272e76d0f..09e4224a67 100644 --- a/src/hal/components/rtfault.comp +++ b/src/hal/components/rtfault.comp @@ -11,10 +11,8 @@ license "GPL"; ;; #include "rtapi.h" -#if defined(BUILD_SYS_USER_DSO) #include #include -#endif #include static bool previous_fault; static int n; @@ -23,7 +21,7 @@ FUNCTION(_) { if (previous_fault ^ fault) { n = count; } - previous_fault = fault; + previous_fault = fault; if (n) { #if defined(BUILD_SYS_USER_DSO) // printf() eventually calls write(), which will cause diff --git a/src/hal/cython/machinekit/compat.pxd b/src/hal/cython/machinekit/compat.pxd index 9053213fe5..15990b3ec6 100644 --- a/src/hal/cython/machinekit/compat.pxd +++ b/src/hal/cython/machinekit/compat.pxd @@ -5,28 +5,19 @@ cdef extern from "rtapi_bitops.h": cdef extern from "rtapi_compat.h": cdef int FLAVOR_DOES_IO - cdef int FLAVOR_KERNEL_BUILD cdef int FLAVOR_RTAPI_DATA_IN_SHM cdef int POSIX_FLAVOR_FLAGS cdef int RTPREEMPT_FLAVOR_FLAGS - cdef int RTAI_KERNEL_FLAVOR_FLAGS - cdef int XENOMAI_KERNEL_FLAVOR_FLAGS cdef int XENOMAI_FLAVOR_FLAGS ctypedef struct flavor_t: const char *name const char *mod_ext const char *so_ext - const char *build_sys int flavor_id unsigned long flags - int c_is_module_loaded "is_module_loaded" (const char *module) - int c_load_module "load_module" (const char *module, const char *modargs) - int c_run_module_helper "run_module_helper" (const char *format) - int c_kernel_is_xenomai "kernel_is_xenomai" () - int c_kernel_is_rtai "kernel_is_rtai" () int c_kernel_is_rtpreempt "kernel_is_rtpreempt" () int c_xenomai_gid "xenomai_gid" () diff --git a/src/hal/cython/machinekit/compat.pyx b/src/hal/cython/machinekit/compat.pyx index 595b902d6a..293db105dc 100644 --- a/src/hal/cython/machinekit/compat.pyx +++ b/src/hal/cython/machinekit/compat.pyx @@ -21,24 +21,15 @@ cdef class Flavor: property so_ext: def __get__(self): return self._f.so_ext - property build_sys: - def __get__(self): return self._f.build_sys - property flavorid: def __get__(self): return self._f.flavor_id property flags: def __get__(self): return self._f.flags -def is_module_loaded(m): - return c_is_module_loaded(m) - def kernel_is_xenomai(): return bool(c_kernel_is_xenomai()) -def kernel_is_rtai(): - return bool(c_kernel_is_rtai()) - def kernel_is_rtpreempt(): return bool(c_kernel_is_rtpreempt()) @@ -70,11 +61,6 @@ def default_flavor(): raise RuntimeError("BUG: flavor() failed") return Flavor_Init(f) -def run_module_helper(name): - rc = c_run_module_helper(name) - if rc: - raise RuntimeError("module_helper(%s) failed: %d %s " % (name, rc, strerror(rc))) - def module_path(basename): cdef char result[1024] rc = c_module_path(result, basename) diff --git a/src/hal/drivers/hal_arm335xQEP.c b/src/hal/drivers/hal_arm335xQEP.c index 4482239540..f555ce2b8b 100644 --- a/src/hal/drivers/hal_arm335xQEP.c +++ b/src/hal/drivers/hal_arm335xQEP.c @@ -64,10 +64,6 @@ #error "This driver is for the beaglebone platform only" #endif -#if !defined(BUILD_SYS_USER_DSO) -#error "This driver is for usermode threads only" -#endif - /* Module information */ #define MODNAME "hal_arm335xQEP" MODULE_AUTHOR("Russell Gower"); @@ -525,4 +521,3 @@ static int export_encoder(eqep_t *eqep) return 0; } - diff --git a/src/hal/drivers/hal_ax5214h.c b/src/hal/drivers/hal_ax5214h.c index e149551f85..e41bfe384a 100644 --- a/src/hal/drivers/hal_ax5214h.c +++ b/src/hal/drivers/hal_ax5214h.c @@ -1,37 +1,37 @@ /******************************************************************** * Description: AX5214H.c -* This file, 'AX5214H.c', is a HAL component that -* provides a driver for the Axiom Measurement & Control +* This file, 'AX5214H.c', is a HAL component that +* provides a driver for the Axiom Measurement & Control * AX5241H 48 channel digital I/O board. * * Author: John Kasunich * License: GPL Version 2 -* +* * Copyright (c) 2005 All rights reserved. * -* Last change: +* Last change: ********************************************************************/ /** This file, 'AX5214H.c', is a HAL component that provides a driver for the Axiom Measurement & Control AX5241H 48 channel digital I/O board. - The configuration is determined by a config string passed to + The configuration is determined by a config string passed to insmod when loading the module. The format consists of a base address, followed by a eight character string that sets the - direction of each group of pins, repeated for each card (if + direction of each group of pins, repeated for each card (if more than one card is used). Each character of the direction string is either "I" or "O". The first character sets the - direction of port A on channel 1 (Port 1A), the next sets + direction of port A on channel 1 (Port 1A), the next sets port B on channel 1 (port 1B), the next sets the low nibble - of port C on channel 1 (port 1CL), and the fourth sets the + of port C on channel 1 (port 1CL), and the fourth sets the high nibble of port C on channel 1 (port 1CH). The next four - characters do the same thing for channel 2 (ports 2A, 2B, + characters do the same thing for channel 2 (ports 2A, 2B, 2CL, and 2CH). example: insmod AX5214.o cfg="0x220 IIIOIIOO" - - The example above is for one card, with its base address - set to hex 220, and with 36 channels of input (Ports 1A, + + The example above is for one card, with its base address + set to hex 220, and with 36 channels of input (Ports 1A, 1B, 1CL, 2A, and 2B) and 12 channels of output (Ports 1CH, 2CL, and 2CH). @@ -44,16 +44,16 @@ 'ax5214..in-' and 'ax5214..in--not'. - is the board number, starting from zero. + is the board number, starting from zero. is the pin number, from 0 to 47. - + Note that the driver assumes active LOW signals. This is so that modules such as OPTO-22 will work correctly - (TRUE means output ON, or input energized). If the + (TRUE means output ON, or input energized). If the signals are being used directly without buffering or isolation the inversion needs to be accounted for. - The driver exports two HAL functions for each board, + The driver exports two HAL functions for each board, 'ax5214..read' and 'ax5214..write'. */ @@ -93,11 +93,7 @@ #include "rtapi_app.h" /* RTAPI realtime module decls */ #include "hal.h" /* HAL public API decls */ -#ifdef BUILD_SYS_USER_DSO -#include -#else -#include -#endif +#include /* module information */ MODULE_AUTHOR("John Kasunich"); @@ -263,7 +259,7 @@ void rtapi_app_exit(void) { int n; board_t *board; - + for ( n = 0 ; n < num_boards ; n++ ) { board = &(board_array[n]); /* reset all outputs to high/off */ @@ -305,13 +301,13 @@ static void split_input(unsigned char data, io_pin_t *dest, int num) mask <<= 1; dest++; } -} +} static void read_board(void *arg, long period) { board_t *board; unsigned char indata; - + board = arg; if ( (board->dir_bits & 0x01) == 0 ) { indata = rtapi_inb(board->base_addr+0); @@ -585,7 +581,7 @@ static int export_board(int boardnum, board_t * board) } board->port1config = config; config = 0x80; - + dir = board->dir_bits & 0x10; retval += export_port ( boardnum, 24, &(board->port_2A[0]), 8, dir ); if ( dir == 0 ) { @@ -607,7 +603,7 @@ static int export_board(int boardnum, board_t * board) config |= 0x08; } board->port2config = config; - /* initialize hardware - all outputs high + /* initialize hardware - all outputs high (since outputs are active low) */ outb(board->port1config, board->base_addr+3); outb(0xff, board->base_addr+0); diff --git a/src/hal/drivers/hal_chip_gpio.c b/src/hal/drivers/hal_chip_gpio.c index 1d5da377f0..277bbc0bf8 100644 --- a/src/hal/drivers/hal_chip_gpio.c +++ b/src/hal/drivers/hal_chip_gpio.c @@ -23,9 +23,6 @@ #include "chip/libsoc_mmap_gpio.h" -#if !defined(BUILD_SYS_USER_DSO) -#error "This driver is for usermode threads only" -#endif #if !defined(TARGET_PLATFORM_CHIP) #error "This driver is for the BeagleBone platform only" #endif diff --git a/src/hal/drivers/hal_gpio.c b/src/hal/drivers/hal_gpio.c index 699517fa03..20495c1479 100644 --- a/src/hal/drivers/hal_gpio.c +++ b/src/hal/drivers/hal_gpio.c @@ -9,7 +9,7 @@ * some code taken from the bcm2835 library by:: * * Author: Mike McCauley (mikem@open.com.au) -* Copyright (C) 2011 Mike McCauley +* Copyright (C) 2011 Mike McCauley * see http://www.open.com.au/mikem/bcm2835/ * Copyright (c) 2012 Ben Croston - cpuinfo.* * @@ -18,7 +18,7 @@ s********************************************************************/ #include "rtapi.h" /* RTAPI realtime OS API */ -#include "rtapi_bitops.h" +#include "rtapi_bitops.h" #include "rtapi_app.h" /* RTAPI realtime module decls */ /* this also includes config.h */ #include "hal.h" /* HAL public API decls */ @@ -30,9 +30,6 @@ s********************************************************************/ #define BCM2709_PERI_BASE 0x3F000000 #define BCM2709_GPIO_BASE (BCM2709_PERI_BASE + 0x200000) -#if !defined(BUILD_SYS_USER_DSO) -#error "This driver is for usermode threads only" -#endif #if !defined(TARGET_PLATFORM_RASPBERRY) #error "This driver is for the Raspberry and Raspberry2 platforms only" #endif @@ -182,7 +179,7 @@ static int setup_gpiomem_access(void) static int setup_gpio_access(int rev, int ncores) { - // open /dev/mem + // open /dev/mem if ((mem_fd = open("/dev/mem", O_RDWR|O_SYNC) ) < 0) { rtapi_print_msg(RTAPI_MSG_ERR,"HAL_GPIO: can't open /dev/mem: %d - %s", errno, strerror(errno)); @@ -198,7 +195,7 @@ static int setup_gpio_access(int rev, int ncores) if (gpio == MAP_FAILED) { rtapi_print_msg(RTAPI_MSG_ERR, - "HAL_GPIO: mmap failed: %d - %s\n", + "HAL_GPIO: mmap failed: %d - %s\n", errno, strerror(errno)); return -1;; } @@ -229,7 +226,7 @@ int rtapi_app_main(void) char *endptr; if ((rev = get_rpi_revision()) < 0) { - rtapi_print_msg(RTAPI_MSG_ERR, + rtapi_print_msg(RTAPI_MSG_ERR, "unrecognized Raspberry revision, see /proc/cpuinfo\n"); return -EINVAL; } @@ -284,7 +281,7 @@ int rtapi_app_main(void) } dir_map = strtoul(dir, &endptr,0); if (*endptr) { - rtapi_print_msg(RTAPI_MSG_ERR, + rtapi_print_msg(RTAPI_MSG_ERR, "HAL_GPIO: dir=%s - trailing garbage: '%s'\n", dir, endptr); return -1; @@ -296,7 +293,7 @@ int rtapi_app_main(void) } exclude_map = strtoul(exclude, &endptr,0); if (*endptr) { - rtapi_print_msg(RTAPI_MSG_ERR, + rtapi_print_msg(RTAPI_MSG_ERR, "HAL_GPIO: exclude=%s - trailing garbage: '%s'\n", exclude, endptr); return -1; @@ -332,7 +329,7 @@ int rtapi_app_main(void) } if (retval < 0) { rtapi_print_msg(RTAPI_MSG_ERR, - "HAL_GPIO: ERROR: pin %d export failed with err=%i\n", + "HAL_GPIO: ERROR: pin %d export failed with err=%i\n", n,retval); hal_exit(comp_id); return -1; @@ -375,10 +372,10 @@ static void write_port(void *arg, long period) int n; for (n = 0; n < npins; n++) { - if (exclude_map & RTAPI_BIT(n)) + if (exclude_map & RTAPI_BIT(n)) continue; if (dir_map & RTAPI_BIT(n)) { - if (*(port_data[n])) { + if (*(port_data[n])) { bcm2835_gpio_set(gpios[n]); } else { bcm2835_gpio_clr(gpios[n]); diff --git a/src/hal/drivers/hal_motenc.c b/src/hal/drivers/hal_motenc.c index b77528e37d..11004e7b7d 100644 --- a/src/hal/drivers/hal_motenc.c +++ b/src/hal/drivers/hal_motenc.c @@ -126,9 +126,7 @@ #include "rtapi.h" // RTAPI realtime OS API. #include "rtapi_app.h" // RTAPI realtime module decls. -#if defined(BUILD_SYS_USER_DSO) #include "rtapi_pci.h" -#endif #include "hal.h" // HAL public API decls. #include "motenc.h" // Hardware dependent defines. @@ -210,9 +208,7 @@ typedef struct { typedef struct { // Private data. -#if defined(BUILD_SYS_USER_DSO) struct rtapi_pcidev *pDev; -#endif MotencRegMap *pCard; int boardType; char *pTypeName; @@ -279,11 +275,7 @@ int rtapi_app_main(void) { int i, j; -#if defined(BUILD_SYS_USER_DSO) struct rtapi_pcidev *pDev = NULL; -#else - struct pci_dev *pDev = NULL; -#endif MotencRegMap *pCard = NULL; Device *pDevice; @@ -301,11 +293,7 @@ rtapi_app_main(void) i = 0; // Find a MOTENC card. -#if defined(BUILD_SYS_USER_DSO) while((i < MAX_DEVICES) && ((pDev = rtapi_pci_get_device(MOTENC_VENDOR_ID, MOTENC_DEVICE_ID, pDev)) != NULL)){ -#else - while((i < MAX_DEVICES) && ((pDev = pci_get_device(MOTENC_VENDOR_ID, MOTENC_DEVICE_ID, pDev)) != NULL)){ -#endif // Allocate memory for device object. pDevice = hal_malloc(sizeof(Device)); @@ -314,22 +302,14 @@ rtapi_app_main(void) hal_exit(driver.componentId); return(-ENOMEM); } -#if defined(BUILD_SYS_USER_DSO) pDevice->pDev = pDev; -#endif // Save pointer to device object. driver.deviceTable[i++] = pDevice; - + // Map card into memory. -#if defined(BUILD_SYS_USER_DSO) pCard = (MotencRegMap *)rtapi_pci_ioremap(pDev, 2, sizeof(MotencRegMap)); rtapi_print_msg(RTAPI_MSG_INFO, "MOTENC: Card detected\n"); rtapi_print_msg(RTAPI_MSG_INFO, "MOTENC: Card address @ %p, Len = %d\n", pCard, (int)sizeof(MotencRegMap)); -#else - pCard = (MotencRegMap *)ioremap_nocache(pci_resource_start(pDev, 2), pci_resource_len(pDev, 2)); - rtapi_print_msg(RTAPI_MSG_INFO, "MOTENC: Card detected in slot %2x\n", PCI_SLOT(pDev->devfn)); - rtapi_print_msg(RTAPI_MSG_INFO, "MOTENC: Card address @ %p, Len = %d\n", pCard, (int)pci_resource_len(pDev, 2)); -#endif // Initialize device. Device_Init(pDevice, pCard); rtapi_print_msg(RTAPI_MSG_INFO, "MOTENC: Card is %s, ID: %d\n", pDevice->pTypeName, pDevice->boardID); @@ -338,7 +318,7 @@ rtapi_app_main(void) hal_exit(driver.componentId); return(-ENODEV); } - + if ( driver.idPresent[pDevice->boardID] != 0 ) { // duplicate ID... a strict driver would bail out, but @@ -356,7 +336,7 @@ rtapi_app_main(void) rtapi_print_msg(RTAPI_MSG_WARN, "MOTENC: WARNING, duplicate ID, remapped to %d\n", j); } driver.idPresent[pDevice->boardID] = 1; - + // Export pins, parameters, and functions. if(Device_ExportPinsParametersFunctions(pDevice, driver.componentId)){ hal_exit(driver.componentId); @@ -394,15 +374,11 @@ rtapi_app_exit(void) for(j = 0; j < MOTENC_NUM_DAC_CHANNELS; j++){ pDevice->pCard->dac[j] = MOTENC_DAC_COUNT_ZERO; } - + // Unmap card. -#if defined(BUILD_SYS_USER_DSO) rtapi_pci_iounmap(pDevice->pDev, (void *)(pDevice->pCard)); // Unregister the device rtapi_pci_put_device(pDevice->pDev); -#else - iounmap((void *)(pDevice->pCard)); -#endif // TODO: Free device object when HAL supports free. // hal_free(pDevice); } @@ -450,7 +426,7 @@ Device_Init(Device *this, MotencRegMap *pCard) // Extract board id from first FPGA. The user sets this via jumpers on the card. status = pCard->fpga[0].statusControl; this->boardID = (status & MOTENC_STATUS_BOARD_ID) >> MOTENC_STATUS_BOARD_ID_SHFT; - + // Initialize hardware. for(i = 0; i < this->numFpga; i++){ pCard->fpga[i].digitalIo = MOTENC_DIGITAL_OUT; @@ -481,7 +457,7 @@ Device_ExportPinsParametersFunctions(Device *this, int componentId) rtapi_set_msg_level(RTAPI_MSG_WARN); boardId = this->boardID; - + // Export encoders. error = Device_ExportEncoderPinsParametersFunctions(this, componentId, boardId); @@ -901,7 +877,7 @@ Device_AdcRead(void *arg, long period) pCard->adcDataCommand = MOTENC_ADC_COMMAND_CHN_0_1_2_3; pCard->adcStartConversion = 1; break; - + // Wait for first conversion, start conversion on second 4 channels. case 1: if(Device_AdcRead4(this, 0)){ diff --git a/src/hal/drivers/hal_p260c.c b/src/hal/drivers/hal_p260c.c index 0ea9adb964..76086f2be7 100644 --- a/src/hal/drivers/hal_p260c.c +++ b/src/hal/drivers/hal_p260c.c @@ -26,10 +26,6 @@ #include #include -#if !defined(BUILD_SYS_USER_DSO) -#error "This driver is for usermode threads only" -#endif - #define MODNAME "hal_p260c" /* module information */ @@ -94,7 +90,7 @@ static char *tty_debug; RTAPI_MP_STRING( tty_debug, "Serial port name, /dev/ttyUSB1"); #endif -static int comp_id; +static int comp_id; unsigned long runtime; unsigned long threadtime; @@ -106,7 +102,7 @@ typedef struct _mod_status { hal_s32_t *maxwritetime; hal_s32_t *writecnt; // s32 count of write calls - + hal_bit_t *comm_error; // Currently some board has a communication error hal_bit_t *permanent_error; // Permanent error triggered by comm_error ( Must be reset ) hal_bit_t *reset_permanent; // Input bit to reset permanent error @@ -150,7 +146,7 @@ void write_gpio( int gpio, int on ) {} void configure_output( int gpio ) {} #endif -int rtapi_app_main(void) +int rtapi_app_main(void) { int i, j, retval; char *data, *token; @@ -158,7 +154,7 @@ int rtapi_app_main(void) comp_id = hal_init(modname); - if(comp_id < 0) + if(comp_id < 0) { rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: hal_init() failed\n", modname); return -1; @@ -187,7 +183,7 @@ int rtapi_app_main(void) if ( addrs != NULL ) { data = addrs; - while((token = strtok(data, ",")) != NULL) + while((token = strtok(data, ",")) != NULL) { int add = strtol(token, NULL, 16); @@ -244,7 +240,7 @@ int rtapi_app_main(void) for (j=0;jmaxreadtime), comp_id, "%s.sys_max_read", modname ); - if(retval < 0) + if(retval < 0) { rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: pin maxreadtime could not export pin, err: %d\n", modname, retval); hal_exit(comp_id); return -1; } retval = hal_pin_s32_newf(HAL_IN, &(mstat->maxwritetime), comp_id, "%s.sys_max_write", modname ); - if(retval < 0) + if(retval < 0) { rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: pin maxwritetime could not export pin, err: %d\n", modname, retval); hal_exit(comp_id); return -1; } retval = hal_pin_s32_newf(HAL_IN, &(mstat->writecnt), comp_id, "%s.sys_writecnt", modname ); - if(retval < 0) + if(retval < 0) { rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: pin writecnt could not export pin, err: %d\n", modname, retval); hal_exit(comp_id); return -1; } retval = hal_pin_bit_newf(HAL_OUT, &(mstat->comm_error), comp_id, "%s.rx_comm_error", modname ); - if(retval < 0) + if(retval < 0) { rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: pin comm_error could not export pin, err: %d\n", modname, retval); hal_exit(comp_id); return -1; } retval = hal_pin_bit_newf(HAL_OUT, &(mstat->permanent_error), comp_id, "%s.rx_perm_error", modname ); - if(retval < 0) + if(retval < 0) { rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: pin permanent_error could not export pin, err: %d\n", modname, retval); hal_exit(comp_id); return -1; } retval = hal_pin_bit_newf(HAL_IN, &(mstat->reset_permanent), comp_id, "%s.rx_reset_error", modname ); - if(retval < 0) + if(retval < 0) { rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: pin reset_permanent could not export pin, err: %d\n", modname, retval); hal_exit(comp_id); @@ -345,35 +341,35 @@ int rtapi_app_main(void) // Parameters retval = hal_param_s32_newf(HAL_RW, &(mstat->clear_comm_count), comp_id, "%s.clear_comm_count", modname ); - if(retval < 0) + if(retval < 0) { rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: param clear_comm_count could not create, err: %d\n", modname, retval); hal_exit(comp_id); return -1; } retval = hal_param_s32_newf(HAL_RW, &(mstat->set_perm_count), comp_id, "%s.set_perm_count", modname ); - if(retval < 0) + if(retval < 0) { rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: param set_perm_count could not create, err: %d\n", modname, retval); hal_exit(comp_id); return -1; } retval = hal_param_s32_newf(HAL_RW, &(mstat->min_tx_boards), comp_id, "%s.minimum_tx", modname ); - if(retval < 0) + if(retval < 0) { rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: param minimum_tx could not create, err: %d\n", modname, retval); hal_exit(comp_id); return -1; } retval = hal_param_s32_newf(HAL_RW, &(mstat->max_rx_wait), comp_id, "%s.max_rx_wait", modname ); - if(retval < 0) + if(retval < 0) { rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: param minimum_tx could not create, err: %d\n", modname, retval); hal_exit(comp_id); return -1; } retval = hal_param_bit_newf(HAL_RW, &(mstat->debug_on_error), comp_id, "%s.debug_on_error", modname ); - if(retval < 0) + if(retval < 0) { rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: param debug_on_error could not create, err: %d\n", modname, retval); hal_exit(comp_id); @@ -438,7 +434,7 @@ static int openserial(char *devicename, int baud) options = oldterminfo; rtapi_print_msg(RTAPI_MSG_INFO, "termios\niflag = %08X\noflag = %08X\ncflag = %08X\nlflag = %08X\n", options.c_iflag, options.c_oflag, options.c_cflag, options.c_lflag ); - + // Ignore input break // Check parity options.c_iflag = IGNBRK; @@ -649,7 +645,7 @@ static u8 validate_input_buffer( u8 *input_data, u16 *bits ) // // Count RX valids. // gets called once per cycle for each board. -// +// static int read_counts( int board ) { int ret = 0; @@ -806,7 +802,7 @@ static void read_all_data() // reset timeout t0 = rtapi_get_time(); - + // Check max time between reads if ( last_readtime && *(mstat->maxreadtime) < (t0-last_readtime) ) { @@ -1015,4 +1011,3 @@ static void serial_port_task( void *arg, long period ) runtime = t1 - t0; } - diff --git a/src/hal/drivers/hal_parport.c b/src/hal/drivers/hal_parport.c index e955c5dce9..11990b5787 100644 --- a/src/hal/drivers/hal_parport.c +++ b/src/hal/drivers/hal_parport.c @@ -1,14 +1,14 @@ /******************************************************************** * Description: hal_parport.c -* This file, 'hal_parport.c', is a HAL component that +* This file, 'hal_parport.c', is a HAL component that * provides a driver for the standard PC parallel port. * * Author: John Kasunich * License: GPL Version 2 -* +* * Copyright (c) 2003 All rights reserved. * -* Last change: +* Last change: ********************************************************************/ /** This file, 'hal_parport.c', is a HAL component that provides a @@ -102,9 +102,7 @@ #include "hal.h" /* HAL public API decls */ -#ifdef BUILD_SYS_USER_DSO /* userland builds */ # include -#endif #include "hal_parport.h" @@ -126,7 +124,7 @@ RTAPI_MP_STRING(cfg, "config string"); typedef struct { unsigned short base_addr; /* base I/O address (0x378, etc.) */ unsigned char data_dir; /* non-zero if pins 2-9 are input */ - unsigned char use_control_in; /* non-zero if pins 1, 4, 16, 17 are input */ + unsigned char use_control_in; /* non-zero if pins 1, 4, 16, 17 are input */ hal_bit_t *status_in[10]; /* ptrs for in pins 15, 13, 12, 10, 11 */ hal_bit_t *data_in[16]; /* ptrs for input pins 2 - 9 */ hal_bit_t *data_out[8]; /* ptrs for output pins 2 - 9 */ @@ -205,7 +203,7 @@ int rtapi_app_main(void) #if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,0) &&0//FIXME - // this calculation fits in a 32-bit unsigned + // this calculation fits in a 32-bit unsigned // as long as CPUs are under about 6GHz ns2tsc_factor = (cpu_khz << 6) / 15625ul; #else @@ -220,7 +218,7 @@ int rtapi_app_main(void) rtapi_print ( "config string '%s'\n", cfg ); /* as a RT module, we don't get a nice argc/argv command line, we only get a single string... so we need to tokenize it ourselves */ - /* in addition, it seems that insmod under kernel 2.6 will truncate + /* in addition, it seems that insmod under kernel 2.6 will truncate a string parameter at the first whitespace. So we allow '_' as an alternate token separator. */ cp = cfg; @@ -382,7 +380,7 @@ static void reset_port(void *arg, long period) { parport_t *port = arg; long long deadline, reset_time_tsc; unsigned char outdata = (port->outdata&~port->reset_mask) ^ port->reset_val; - + if(port->reset_time > period/4) port->reset_time = period/4; reset_time_tsc = ns2tsc(port->reset_time); @@ -543,7 +541,7 @@ static int pins_and_params(char *argv[]) if (argv[n] != 0) { /* is the next token 'in' or 'out' ? */ if ((argv[n][0] == 'i') || (argv[n][0] == 'I')) { - /* we aren't picky, anything starting with 'i' means 'in' ;-) + /* we aren't picky, anything starting with 'i' means 'in' ;-) */ data_dir[num_ports] = 1; use_control_in[num_ports] = 0; @@ -555,7 +553,7 @@ static int pins_and_params(char *argv[]) n++; } else if ((argv[n][0] == 'x') || (argv[n][0] == 'X')) { /* experimental: some parports support a bidirectional - * control port. Enable this with pins 2-9 in output mode, + * control port. Enable this with pins 2-9 in output mode, * which gives a very nice 8 outs and 9 ins. */ data_dir[num_ports] = 0; use_control_in[num_ports] = 1; @@ -701,11 +699,11 @@ static int export_port(int portnum, parport_t * port) port->data_out, port->data_inv, port->data_reset, 6); retval += export_output_pin(portnum, 9, port->data_out, port->data_inv, port->data_reset, 7); - retval += hal_param_u32_newf(HAL_RW, &port->reset_time, comp_id, + retval += hal_param_u32_newf(HAL_RW, &port->reset_time, comp_id, "parport.%d.reset-time", portnum); - retval += hal_param_u32_newf(HAL_RW, &port->debug1, comp_id, + retval += hal_param_u32_newf(HAL_RW, &port->debug1, comp_id, "parport.%d.debug1", portnum); - retval += hal_param_u32_newf(HAL_RW, &port->debug2, comp_id, + retval += hal_param_u32_newf(HAL_RW, &port->debug2, comp_id, "parport.%d.debug2", portnum); port->write_time = 0; } diff --git a/src/hal/drivers/hal_pru_generic/encoder.c b/src/hal/drivers/hal_pru_generic/encoder.c index b8434e7350..d3094d7403 100644 --- a/src/hal/drivers/hal_pru_generic/encoder.c +++ b/src/hal/drivers/hal_pru_generic/encoder.c @@ -52,10 +52,6 @@ #error "This driver is for the beaglebone platform only" #endif -#if !defined(BUILD_SYS_USER_DSO) -#error "This driver is for usermode threads only" -#endif - #include "rtapi.h" #include "rtapi_app.h" #include "rtapi_string.h" @@ -83,84 +79,84 @@ const PRU_encoder_LUT_t Counter_LUT = { { // New New Old Old -// Quadrature B A | B A B A +// Quadrature B A | B A B A // x4 Mode ==================== - 1, // 0 0 | 0 0 0 0 - 0, // 0 - | 0 0 0 1 - 2, // - 0 | 0 0 1 0 - 1, // - - | 0 0 1 1 - 2, // 0 + | 0 1 0 0 - 1, // 0 1 | 0 1 0 1 - 1, // - + | 0 1 1 0 - 0, // - 1 | 0 1 1 1 - 0, // + 0 | 1 0 0 0 - 1, // + - | 1 0 0 1 - 1, // 1 0 | 1 0 1 0 - 2, // 1 - | 1 0 1 1 - 1, // + + | 1 1 0 0 - 2, // + 1 | 1 1 0 1 - 0, // 1 + | 1 1 1 0 - 1, // 1 1 | 1 1 1 1 + 1, // 0 0 | 0 0 0 0 + 0, // 0 - | 0 0 0 1 + 2, // - 0 | 0 0 1 0 + 1, // - - | 0 0 1 1 + 2, // 0 + | 0 1 0 0 + 1, // 0 1 | 0 1 0 1 + 1, // - + | 0 1 1 0 + 0, // - 1 | 0 1 1 1 + 0, // + 0 | 1 0 0 0 + 1, // + - | 1 0 0 1 + 1, // 1 0 | 1 0 1 0 + 2, // 1 - | 1 0 1 1 + 1, // + + | 1 1 0 0 + 2, // + 1 | 1 1 0 1 + 0, // 1 + | 1 1 1 0 + 1, // 1 1 | 1 1 1 1 // New New Old Old -// Up/Down B A | B A B A +// Up/Down B A | B A B A // Mode ==================== - 1, // 0 0 | 0 0 0 0 - 1, // 0 - | 0 0 0 1 - 1, // - 0 | 0 0 1 0 - 1, // - - | 0 0 1 1 - 0, // 0 + | 0 1 0 0 - 1, // 0 1 | 0 1 0 1 - 2, // - + | 0 1 1 0 - 1, // - 1 | 0 1 1 1 - 1, // + 0 | 1 0 0 0 - 1, // + - | 1 0 0 1 - 1, // 1 0 | 1 0 1 0 - 1, // 1 - | 1 0 1 1 - 0, // + + | 1 1 0 0 - 1, // + 1 | 1 1 0 1 - 2, // 1 + | 1 1 1 0 - 1, // 1 1 | 1 1 1 1 + 1, // 0 0 | 0 0 0 0 + 1, // 0 - | 0 0 0 1 + 1, // - 0 | 0 0 1 0 + 1, // - - | 0 0 1 1 + 0, // 0 + | 0 1 0 0 + 1, // 0 1 | 0 1 0 1 + 2, // - + | 0 1 1 0 + 1, // - 1 | 0 1 1 1 + 1, // + 0 | 1 0 0 0 + 1, // + - | 1 0 0 1 + 1, // 1 0 | 1 0 1 0 + 1, // 1 - | 1 0 1 1 + 0, // + + | 1 1 0 0 + 1, // + 1 | 1 1 0 1 + 2, // 1 + | 1 1 1 0 + 1, // 1 1 | 1 1 1 1 // New New Old Old -// Counter B A | B A B A +// Counter B A | B A B A // Mode ==================== - 1, // 0 0 | 0 0 0 0 - 1, // 0 - | 0 0 0 1 - 1, // - 0 | 0 0 1 0 - 1, // - - | 0 0 1 1 - 2, // 0 + | 0 1 0 0 - 1, // 0 1 | 0 1 0 1 - 2, // - + | 0 1 1 0 - 1, // - 1 | 0 1 1 1 - 1, // + 0 | 1 0 0 0 - 1, // + - | 1 0 0 1 - 1, // 1 0 | 1 0 1 0 - 1, // 1 - | 1 0 1 1 - 2, // + + | 1 1 0 0 - 1, // + 1 | 1 1 0 1 - 2, // 1 + | 1 1 1 0 - 1, // 1 1 | 1 1 1 1 + 1, // 0 0 | 0 0 0 0 + 1, // 0 - | 0 0 0 1 + 1, // - 0 | 0 0 1 0 + 1, // - - | 0 0 1 1 + 2, // 0 + | 0 1 0 0 + 1, // 0 1 | 0 1 0 1 + 2, // - + | 0 1 1 0 + 1, // - 1 | 0 1 1 1 + 1, // + 0 | 1 0 0 0 + 1, // + - | 1 0 0 1 + 1, // 1 0 | 1 0 1 0 + 1, // 1 - | 1 0 1 1 + 2, // + + | 1 1 0 0 + 1, // + 1 | 1 1 0 1 + 2, // 1 + | 1 1 1 0 + 1, // 1 1 | 1 1 1 1 // New New Old Old -// Quadrature B A | B A B A +// Quadrature B A | B A B A // x1 Mode ==================== - 1, // 0 0 | 0 0 0 0 - 1, // 0 - | 0 0 0 1 - 1, // - 0 | 0 0 1 0 - 1, // - - | 0 0 1 1 - 2, // 0 + | 0 1 0 0 - 1, // 0 1 | 0 1 0 1 - 1, // - + | 0 1 1 0 - 1, // - 1 | 0 1 1 1 - 1, // + 0 | 1 0 0 0 - 1, // + - | 1 0 0 1 - 1, // 1 0 | 1 0 1 0 - 1, // 1 - | 1 0 1 1 - 1, // + + | 1 1 0 0 - 1, // + 1 | 1 1 0 1 - 0, // 1 + | 1 1 1 0 - 1 // 1 1 | 1 1 1 1 + 1, // 0 0 | 0 0 0 0 + 1, // 0 - | 0 0 0 1 + 1, // - 0 | 0 0 1 0 + 1, // - - | 0 0 1 1 + 2, // 0 + | 0 1 0 0 + 1, // 0 1 | 0 1 0 1 + 1, // - + | 0 1 1 0 + 1, // - 1 | 0 1 1 1 + 1, // + 0 | 1 0 0 0 + 1, // + - | 1 0 0 1 + 1, // 1 0 | 1 0 1 0 + 1, // 1 - | 1 0 1 1 + 1, // + + | 1 1 0 0 + 1, // + 1 | 1 1 0 1 + 0, // 1 + | 1 1 1 0 + 1 // 1 1 | 1 1 1 1 } }; static u64 timebase; /* master timestamp */ diff --git a/src/hal/drivers/hal_pru_generic/hal_pru_generic.c b/src/hal/drivers/hal_pru_generic/hal_pru_generic.c index 861506f3c0..05c92e38ea 100644 --- a/src/hal/drivers/hal_pru_generic/hal_pru_generic.c +++ b/src/hal/drivers/hal_pru_generic/hal_pru_generic.c @@ -60,10 +60,6 @@ #error "This driver is for the beaglebone platform only" #endif -#if !defined(BUILD_SYS_USER_DSO) -#error "This driver is for usermode threads only" -#endif - #include RTAPI_INC_LIST_H #include "rtapi.h" /* RTAPI realtime OS API */ #include "rtapi_app.h" /* RTAPI realtime module decls */ @@ -107,7 +103,7 @@ MODULE_LICENSE("GPL"); // Default pin to use for PRU modules...use a pin that does not leave the PRU #define PRU_DEFAULT_PIN 17 -// Start out with default pulse length/width and setup/hold delays of 1 mS (1000000 nS) +// Start out with default pulse length/width and setup/hold delays of 1 mS (1000000 nS) #define DEFAULT_DELAY 1000000 #define f_period_s ((double)(l_period_ns * 1e-9)) @@ -153,7 +149,7 @@ static int comp_id; /* component ID */ static const char *modname = "hal_pru_generic"; // if filename doesnt exist, prefix this path: -char *fw_path = "/lib/firmware/pru/"; +char *fw_path = "/lib/firmware/pru/"; // shared with PRU static unsigned long *pru_data_ram; // points to PRU data RAM @@ -383,7 +379,7 @@ int assure_module_loaded(const char *module) } int pru_init(int pru, char *filename, int disabled, hal_pru_generic_t *hpg) { - + int i; int retval; @@ -445,7 +441,7 @@ rtapi_print_msg(RTAPI_MSG_DBG, "PRU data ram mapped\n"); } int setup_pru(int pru, char *filename, int disabled, hal_pru_generic_t *hpg) { - + int retval; if (event > -1) { @@ -461,7 +457,7 @@ int setup_pru(int pru, char *filename, int disabled, hal_pru_generic_t *hpg) { // default the .bin filename if not given if (!strlen(filename)) filename = DEFAULT_CODE; - + strcpy(pru_binpath, filename); struct stat statb; @@ -605,7 +601,7 @@ int fixup_pin(u32 hal_pin) { break; default: ret = 0; - } + } if (ret == 0) HPG_ERR("Unknown pin: %d\n",(int)hal_pin); @@ -618,4 +614,3 @@ int fixup_pin(u32 hal_pin) { return ret; } - diff --git a/src/hal/drivers/hal_pru_generic/pwmgen.c b/src/hal/drivers/hal_pru_generic/pwmgen.c index d8c5f5c2fa..4b29fe685d 100644 --- a/src/hal/drivers/hal_pru_generic/pwmgen.c +++ b/src/hal/drivers/hal_pru_generic/pwmgen.c @@ -58,10 +58,6 @@ #error "This driver is for the beaglebone platform only" #endif -#if !defined(BUILD_SYS_USER_DSO) -#error "This driver is for usermode threads only" -#endif - #include "rtapi.h" #include "rtapi_app.h" #include "rtapi_string.h" @@ -170,7 +166,7 @@ rtapi_print_msg(RTAPI_MSG_DBG, "hpg_pwm_init\n"); pru_task_add(hpg, &(hpg->pwmgen.instance[i].task)); - if ((r = export_pwmgen(hpg,i)) != 0){ + if ((r = export_pwmgen(hpg,i)) != 0){ HPG_ERR("ERROR: failed to export pwmgen %i: %i\n",i,r); return -1; } diff --git a/src/hal/drivers/hal_pru_generic/stepgen.c b/src/hal/drivers/hal_pru_generic/stepgen.c index 5e6b974cdc..88798af332 100644 --- a/src/hal/drivers/hal_pru_generic/stepgen.c +++ b/src/hal/drivers/hal_pru_generic/stepgen.c @@ -58,17 +58,13 @@ #error "This driver is for the beaglebone platform only" #endif -#if !defined(BUILD_SYS_USER_DSO) -#error "This driver is for usermode threads only" -#endif - // #include RTAPI_INC_LIST_H // #include "rtapi.h" /* RTAPI realtime OS API */ // #include "rtapi_app.h" /* RTAPI realtime module decls */ // #include "rtapi_math.h" // #include "hal.h" /* HAL public API decls */ // #include -// +// // #include // #include // #include @@ -87,16 +83,16 @@ #define f_period_s ((double)(l_period_ns * 1e-9)) -// Start out with default pulse length/width and setup/hold delays of 1 mS (1000000 nS) +// Start out with default pulse length/width and setup/hold delays of 1 mS (1000000 nS) #define DEFAULT_DELAY 1000000 /*********************************************************************** * REALTIME FUNCTIONS * ************************************************************************/ -// +// // read accumulator to figure out where the stepper has gotten to -// +// void hpg_stepgen_read(hal_pru_generic_t *hpg, long l_period_ns) { // Read data from the PRU here... @@ -366,7 +362,7 @@ static void update_stepgen(hal_pru_generic_t *hpg, long l_period_ns, int i) { steps_per_sec_cmd = new_vel * *(s->hal.pin.position_scale); s->pru.rate = steps_per_sec_cmd * (double)0x08000000 * (double) hpg->config.pru_period * 1e-9; - + // clip rate just to be safe...should be limited by code above if ((s->pru.rate < 0x80000000) && (s->pru.rate > 0x03FFFFFF)) { s->pru.rate = 0x03FFFFFF; @@ -615,7 +611,7 @@ rtapi_print_msg(RTAPI_MSG_DBG, "hpg_stepgen_init\n"); hpg->stepgen.instance[i].pru.task.hdr.mode = eMODE_STEP_DIR; pru_task_add(hpg, &(hpg->stepgen.instance[i].task)); - if ((r = export_stepgen(hpg,i)) != 0){ + if ((r = export_stepgen(hpg,i)) != 0){ rtapi_print_msg(RTAPI_MSG_ERR, "%s: ERROR: failed to export stepgen %i: %i\n", hpg->config.name,i,r); return -1; diff --git a/src/hal/drivers/hal_stg.c b/src/hal/drivers/hal_stg.c index 4eb0c3bda7..9527fa1e0d 100644 --- a/src/hal/drivers/hal_stg.c +++ b/src/hal/drivers/hal_stg.c @@ -4,94 +4,94 @@ * * Author: Alex Joni * License: GPL Version 2 -* +* * Copyright (c) 2004 All rights reserved. * see below for aditional notes * -* Last change: +* Last change: ********************************************************************/ /** This is the driver for Servo-To-Go Model I & II board. The board includes 8 channels of quadrature encoder input, 8 channels of analog input and output, 32 bits digital I/O, and an interval timer with interrupt. - + Installation of the driver only realtime: - + insmod hal_stg num_chan=8 dio="IIOO" - autodetects the address or - + insmod hal_stg base=0x200 num_chan=8 dio="IIOO" - + Check your Hardware manual for your base address. - The digital inputs/outputs configuration is determined by a - config string passed to insmod when loading the module. + The digital inputs/outputs configuration is determined by a + config string passed to insmod when loading the module. The format consists by a four character string that sets the direction of each group of pins. Each character of the direction string is either "I" or "O". The first character sets the - direction of port A (Port A - DIO.0-7), the next sets - port B (Port B - DIO.8-15), the next sets port C (Port C - DIO.16-23), + direction of port A (Port A - DIO.0-7), the next sets + port B (Port B - DIO.8-15), the next sets port C (Port C - DIO.16-23), and the fourth sets port D (Port D - DIO.24-31). - + The following items are exported to the HAL. - + Encoders: Parameters: float stg..position-scale (counts per unit) - + Pins: s32 stg..counts float stg..position /todo bit stg..index-enable /todo bit stg..enc-reset-count - + Functions: void stg..capture_position - - + + DACs: Parameters: float stg..dac-offset float stg..dac-gain - + Pins: float stg..dac-value - + Functions: void stg..dac-write - - + + ADC: Parameters: float stg..adc-offset float stg..adc-gain - + Pins: float stg..adc-value - + Functions: void stg..adc-read - - + + Digital In: Pins: bit stg.in- bit stg.in--not - + Functions: void stg.digital-in-read - - + + Digital Out: Parameters: bit stg.out--invert - + Pins: bit stg.out- - + Functions: void stg.digital-out-write @@ -105,7 +105,7 @@ */ -/* Based on STGMEMBS.CPP from the Servo To Go Windows drivers +/* Based on STGMEMBS.CPP from the Servo To Go Windows drivers - Copyright (c) 1996 Servo To Go Inc and released under GPL Version 2 */ /* Also relates to the EMC1 code (very similar to STGMEMBS.CPP) work done by Fred Proctor, Will Shackleford */ @@ -136,9 +136,6 @@ */ #include "config.h" -#ifdef BUILD_SYS_KBUILD -#include -#endif #include "rtapi.h" /* RTAPI realtime OS API */ #include "rtapi_app.h" /* RTAPI realtime module decls */ #include "hal.h" /* HAL public API decls */ @@ -196,7 +193,7 @@ typedef struct { /* dio data */ io_pin port[4][8]; /* holds 4 ports each 8 pins, either input or output */ unsigned char dir_bits; /* remembers config (which port is input which is output) */ - + unsigned char model; } stg_struct; @@ -338,7 +335,7 @@ int rtapi_app_main(void) /* we now should have directions figured out, next is exporting the pins based on that */ mask = 0x01; for ( m = 0 ; m < 4 ; m++ ) { - + /* port, direction, driver */ export_pins(m, (dir_bits & mask), stg_driver); @@ -348,7 +345,7 @@ int rtapi_app_main(void) stg_driver->dir_bits = dir_bits; /* remember direction of each port, will be used in the write / read functions */ stg_dio_init(); - + /* export all the variables for each counter, dac */ for (n = 0; n < num_chan; n++) { /* export all vars */ @@ -380,7 +377,7 @@ int rtapi_app_main(void) /* init counter chip */ stg_counter_init(n); - + retval = export_dac(n, stg_driver); if (retval != 0) { rtapi_print_msg(RTAPI_MSG_ERR, @@ -407,13 +404,13 @@ int rtapi_app_main(void) *(stg_driver->adc_value[n]) = 0; stg_driver->adc_offset[n] = 0.0; stg_driver->adc_gain[n] = 1.0; - + stg_driver->adc_current_chan = -1; /* notify that no conversion has been started yet */ /* init adc chip */ stg_adc_init(n); } - + /* export functions */ retval = hal_export_funct("stg.capture-position", stg_counter_capture, stg_driver, 1, 0, comp_id); @@ -515,18 +512,18 @@ static void stg_counter_capture(void *arg, long period) /* * STG Model 1, stg1 */ - for( n = 0; n < num_chan; n++ ) + for( n = 0; n < num_chan; n++ ) { /* reset and then select current axes pair to be reset by index * Because they index polarity is configurable for the stg2 card be select * even for the odd axes */ stg1_select_index_axis(arg, n); - if (stg1_get_index_pulse_latch(arg, n)) + if (stg1_get_index_pulse_latch(arg, n)) { *(stg->index_latch[n]) = 1; - if ( *(stg->index_enable[n]) == 1 ) + if ( *(stg->index_enable[n]) == 1 ) { // read the value without latching, latching was done on index // remember this as an offset, it will be substracted from nominal @@ -542,8 +539,8 @@ static void stg_counter_capture(void *arg, long period) */ } else { /* NOP, no action needed, since the selection of an index pair is just valid until the next - * pair is selected */ - } + * pair is selected */ + } } else { *(stg->index_latch[n]) = 0; } @@ -556,7 +553,7 @@ static void stg_counter_capture(void *arg, long period) */ // Set IDLEN - for( mask = 0, n = 0; n < num_chan; n++ ) + for( mask = 0, n = 0; n < num_chan; n++ ) { if( *(stg->index_enable[n]) == 1 ) { @@ -564,19 +561,19 @@ static void stg_counter_capture(void *arg, long period) } } stg2_select_index_axes( arg, mask ); - + // Read all latches index_pulse_latches = stg2_get_all_index_pulse_latches( arg ); // set or reset index_latch // index-enable reset if needed - for( n = 0; n < num_chan; n++ ) + for( n = 0; n < num_chan; n++ ) { if( index_pulse_latches & (1<index_latch[n]) = 1; - if ( *(stg->index_enable[n]) == 1 ) + if ( *(stg->index_enable[n]) == 1 ) { // read the value without latching, latching was done on index // remember this as an offset, it will be substracted from nominal @@ -599,17 +596,17 @@ static void stg_counter_capture(void *arg, long period) } // Reset all latches stg2_reset_all_index_latches( arg ); - + } else { // NOP, only models stg1 and stg2, thus should never be reached */ } - for (n = 0; n < num_chan; n++) + for (n = 0; n < num_chan; n++) { /* capture raw counts to latches */ stg_counter_latch(n); /* read raw count, and substract the offset (determined by indexed homing) */ - *(stg->count[n]) = stg_counter_read(n) - stg->offset[n]; + *(stg->count[n]) = stg_counter_read(n) - stg->offset[n]; /* make sure scale isn't zero or tiny to avoid divide error */ if (stg->pos_scale[n] < 0.0) { if (stg->pos_scale[n] > -EPSILON) @@ -625,9 +622,9 @@ static void stg_counter_capture(void *arg, long period) return; } -/* stg_debug_print - * run this function from a very slow, - * e.g. 1sec thread and it will give some information +/* stg_debug_print + * run this function from a very slow, + * e.g. 1sec thread and it will give some information */ /* static void stg_debug_print( void *arg, long period ) @@ -646,27 +643,18 @@ static void stg_debug_print( void *arg, long period ) msg = rtapi_get_msg_level(); rtapi_set_msg_level( STG_MSG_LEVEL ); - if( stg->model == 1 ) + if( stg->model == 1 ) { -//#ifndef BUILD_SYS_KBUILD intc_reg = rtapi_inb(base + INTC); -//#else - intc_reg = inb(base + INTC); -//#endif - rtapi_print_msg(RTAPI_MSG_DBG, "STG: %04d: IXS1 is %s\n", counter, ( intc_reg & IXS1 ) ? "TRUE" : "FALSE" ); + rtapi_print_msg(RTAPI_MSG_DBG, "STG: %04d: IXS1 is %s\n", counter, ( intc_reg & IXS1 ) ? "TRUE" : "FALSE" ); rtapi_print_msg(RTAPI_MSG_DBG, "STG: %04d: IXS0 is %s\n", counter, ( intc_reg & IXS0 ) ? "TRUE" : "FALSE" ); rtapi_print_msg(RTAPI_MSG_DBG, "STG: %04d: IXLVL is active %s\n", counter, ( intc_reg & IXLVL ) ? "TRUE" : "FALSE" ); - } else if (stg->model == 2 ) + } else if (stg->model == 2 ) { -// #ifndef BUILD_SYS_KBUILD idlen_reg = rtapi_inb( base + IDLEN ); seldi_reg = rtapi_inb( base + SELDI ); -// #else - idlen_reg = inb( base + IDLEN ); - seldi_reg = inb( base + SELDI ); -// #endif - + rtapi_print_msg(RTAPI_MSG_DBG, "STG: %04d: IDLEN is 0x%02x\n", counter, idlen_reg ); rtapi_print_msg(RTAPI_MSG_DBG, "STG: %04d: SELDI is 0x%02x\n", counter, seldi_reg ); @@ -686,7 +674,7 @@ static void stg_debug_print( void *arg, long period ) /* stg_dacs_write() - writes all dac's to the board - calls stg_dac_write() */ static void stg_dacs_write(void *arg, long period) -{ +{ stg_struct *stg; double volts; short ncounts, i; @@ -702,8 +690,8 @@ static void stg_dacs_write(void *arg, long period) volts = 10.0; /* compute the value for the DAC, the extra - in there is STG specific */ ncounts = (short) ((((-10.0 - volts) * 0x1FFF) / 20.0) - 1 ); - /* write it to the card */ - stg_dac_write(i, ncounts); + /* write it to the card */ + stg_dac_write(i, ncounts); } return; } @@ -724,14 +712,14 @@ static void stg_dacs_write(void *arg, long period) - and at the end of the function the new conversion is started, so that the data will be available at the next run. This way 8 periods are needed to read 8 ADC's. It is possible to set the board - to do faster conversions (AZ bit on INTC off), but that would make it less + to do faster conversions (AZ bit on INTC off), but that would make it less reliable (autozero takes care of temp. errors).*/ /*! \todo STG_ADC_Improvement (if any user requests it). Another improvement might be to let the user chose what channels he would like for ADC (having only 2 channels might speed things up considerably). */ static void stg_adcs_read(void *arg, long period) -{ +{ stg_struct *stg; double volts; short ncounts; @@ -739,7 +727,7 @@ static void stg_adcs_read(void *arg, long period) stg = arg; i = stg->adc_current_chan; - if ((i >= 0) && (i < num_chan)) { + if ((i >= 0) && (i < num_chan)) { /* we should have the conversion done for adc_num_chan */ ncounts = stg_adc_read(stg,i); volts = ncounts * 10.0 / 4096; @@ -747,7 +735,7 @@ static void stg_adcs_read(void *arg, long period) } /* if adc_num_chan < 0, it's the first time this routine runs thus we don't have any ready data, we simply start the next conversion */ - if (stg->adc_current_chan++ >= num_chan) + if (stg->adc_current_chan++ >= num_chan) stg->adc_current_chan=0; //increase the channel, and roll back to 0 after all chans are done /* select the current channel with the mux, and start the conversion */ @@ -780,7 +768,7 @@ static void split_input(unsigned char data, io_pin *dest, int num) dest++; } return; -} +} // helper function to extract the data out of HAL and place it into a char // written by JMK @@ -815,65 +803,33 @@ static void stg_di_read(void *arg, long period) //reads digital inputs from the stg_struct *stg; unsigned char val; stg=arg; - + if ( (stg->dir_bits & 0x01) == 0) { // if port A is set as input, read the bits if (stg->model == 1) -#ifndef BUILD_SYS_KBUILD val = rtapi_inb(base + DIO_A); -#else /* BUILD_SYS_KBUILD */ - val = inb(base + DIO_A); -#endif /* BUILD_SYS_KBUILD */ else -#ifndef BUILD_SYS_KBUILD val = rtapi_inb(base + PORT_A); -#else /* BUILD_SYS_KBUILD */ - val = inb(base + PORT_A); -#endif /* BUILD_SYS_KBUILD */ split_input(val, &(stg->port[0][0]), 8); } if ( (stg->dir_bits & 0x02) == 0) { // if port B is set as input, read the bits if (stg->model == 1) -#ifndef BUILD_SYS_KBUILD val = rtapi_inb(base + DIO_B); -#else /* BUILD_SYS_KBUILD */ - val = inb(base + DIO_B); -#endif /* BUILD_SYS_KBUILD */ else -#ifndef BUILD_SYS_KBUILD val = rtapi_inb(base + PORT_B); -#else /* BUILD_SYS_KBUILD */ - val = inb(base + PORT_B); -#endif /* BUILD_SYS_KBUILD */ split_input(val, &(stg->port[1][0]), 8); } if ( (stg->dir_bits & 0x04) == 0) { // if port C is set as input, read the bits if (stg->model == 1) -#ifndef BUILD_SYS_KBUILD val = rtapi_inb(base + DIO_C); -#else /* BUILD_SYS_KBUILD */ - val = inb(base + DIO_C); -#endif /* BUILD_SYS_KBUILD */ else -#ifndef BUILD_SYS_KBUILD val = rtapi_inb(base + PORT_C); -#else /* BUILD_SYS_KBUILD */ - val = inb(base + PORT_C); -#endif /* BUILD_SYS_KBUILD */ split_input(val, &(stg->port[2][0]), 8); } if ( (stg->dir_bits & 0x08) == 0) { // if port D is set as input, read the bits if (stg->model == 1) -#ifndef BUILD_SYS_KBUILD val = rtapi_inb(base + DIO_D); -#else /* BUILD_SYS_KBUILD */ - val = inb(base + DIO_D); -#endif /* BUILD_SYS_KBUILD */ else -#ifndef BUILD_SYS_KBUILD val = rtapi_inb(base + PORT_D); -#else /* BUILD_SYS_KBUILD */ - val = inb(base + PORT_D); -#endif /* BUILD_SYS_KBUILD */ split_input(val, &(stg->port[3][0]), 8); } } @@ -887,62 +843,30 @@ static void stg_do_write(void *arg, long period) //writes digital outputs to the if ( (stg->dir_bits & 0x01) != 0) { // if port A is set as output, write the bits val = build_output(&(stg->port[0][0]), 8); if (stg->model == 1) -#ifndef BUILD_SYS_KBUILD rtapi_outb(val, base + DIO_A); -#else /* BUILD_SYS_KBUILD */ - outb(val, base + DIO_A); -#endif /* BUILD_SYS_KBUILD */ else -#ifndef BUILD_SYS_KBUILD rtapi_outb(val, base + PORT_A); -#else /* BUILD_SYS_KBUILD */ - outb(val, base + PORT_A); -#endif /* BUILD_SYS_KBUILD */ } if ( (stg->dir_bits & 0x02) != 0) { // if port B is set as output, write the bits val = build_output(&(stg->port[1][0]), 8); if (stg->model == 1) -#ifndef BUILD_SYS_KBUILD rtapi_outb(val, base + DIO_B); -#else /* BUILD_SYS_KBUILD */ - outb(val, base + DIO_B); -#endif /* BUILD_SYS_KBUILD */ else -#ifndef BUILD_SYS_KBUILD rtapi_outb(val, base + PORT_B); -#else /* BUILD_SYS_KBUILD */ - outb(val, base + PORT_B); -#endif /* BUILD_SYS_KBUILD */ } if ( (stg->dir_bits & 0x04) != 0) { // if port C is set as output, write the bits val = build_output(&(stg->port[2][0]), 8); if (stg->model == 1) -#ifndef BUILD_SYS_KBUILD rtapi_outb(val, base + DIO_C); -#else /* BUILD_SYS_KBUILD */ - outb(val, base + DIO_C); -#endif /* BUILD_SYS_KBUILD */ else -#ifndef BUILD_SYS_KBUILD rtapi_outb(val, base + PORT_C); -#else /* BUILD_SYS_KBUILD */ - outb(val, base + PORT_C); -#endif /* BUILD_SYS_KBUILD */ } if ( (stg->dir_bits & 0x08) != 0) { // if port D is set as output, write the bits val = build_output(&(stg->port[3][0]), 8); if (stg->model == 1) -#ifndef BUILD_SYS_KBUILD rtapi_outb(val, base + DIO_D); -#else /* BUILD_SYS_KBUILD */ - outb(val, base + DIO_D); -#endif /* BUILD_SYS_KBUILD */ else -#ifndef BUILD_SYS_KBUILD rtapi_outb(val, base + PORT_D); -#else /* BUILD_SYS_KBUILD */ - outb(val, base + PORT_D); -#endif /* BUILD_SYS_KBUILD */ } } @@ -958,40 +882,24 @@ static void stg_do_write(void *arg, long period) //writes digital outputs to the /* stg_counter_init() - Initializes the channel - + works the same for both cards (STG & STG2) */ static int stg_counter_init(int ch) { /* Set Counter Command Register - Master Control, Master Reset (MRST), */ /* and Reset address pointer (RADR). */ -#ifndef BUILD_SYS_KBUILD rtapi_outb(0x23, CTRL(ch)); -#else /* BUILD_SYS_KBUILD */ - outb(0x23, CTRL(ch)); -#endif /* BUILD_SYS_KBUILD */ /* Set Counter Command Register - Input Control, OL Load (P3), */ /* and Enable Inputs A and B (INA/B). */ -#ifndef BUILD_SYS_KBUILD rtapi_outb(0x68, CTRL(ch)); -#else /* BUILD_SYS_KBUILD */ - outb(0x68, CTRL(ch)); -#endif /* BUILD_SYS_KBUILD */ /* Set Counter Command Register - Output Control */ -#ifndef BUILD_SYS_KBUILD rtapi_outb(0x80, CTRL(ch)); -#else /* BUILD_SYS_KBUILD */ - outb(0x80, CTRL(ch)); -#endif /* BUILD_SYS_KBUILD */ /* Set Counter Command Register - Quadrature */ -#ifndef BUILD_SYS_KBUILD rtapi_outb(0xC3, CTRL(ch)); -#else /* BUILD_SYS_KBUILD */ - outb(0xC3, CTRL(ch)); -#endif /* BUILD_SYS_KBUILD */ return 0; } @@ -1003,10 +911,10 @@ static int stg_counter_init(int ch) static int stg_dac_init(int ch) { int i; - + /* set all DAC's to 0 on startup */ for (i=0; i < num_chan; i++) { - stg_dac_write(i, 0x1000); //by Xuecheng, 0x1000 coresponds to 0V + stg_dac_write(i, 0x1000); //by Xuecheng, 0x1000 coresponds to 0V } return 0; } @@ -1021,11 +929,7 @@ static int stg_adc_init(int ch) /* not much to setup for the ADC's */ /* only select the mode of operation we will work with AutoZero */ if (stg_driver->model == 1) -#ifndef BUILD_SYS_KBUILD rtapi_outb(0x0f, base + MIO_2); // the second 82C55 is already configured (by running stg_dio_init) -#else /* BUILD_SYS_KBUILD */ - outb(0x0f, base + MIO_2); // the second 82C55 is already configured (by running stg_dio_init) -#endif /* BUILD_SYS_KBUILD */ // we only set bit 8 (AZ) to 1 to enable it return 0; } @@ -1046,105 +950,55 @@ static int stg_dio_init(void) control |= 0x02; if ( (stg_driver->dir_bits & 0x04) == 0) // if port C is set as input, set bits accordingly control |= 0x09; - + if (stg_driver->model == 1) { // write the computed control to MIO_1 -#ifndef BUILD_SYS_KBUILD rtapi_outb(control, base+MIO_1); -#else /* BUILD_SYS_KBUILD */ - outb(control, base+MIO_1); -#endif /* BUILD_SYS_KBUILD */ } else { //model STG2 // write port A,B,C direction to ABC_DIR -#ifndef BUILD_SYS_KBUILD rtapi_outb(control, base+ABC_DIR); -#else /* BUILD_SYS_KBUILD */ - outb(control, base+ABC_DIR); -#endif /* BUILD_SYS_KBUILD */ } - -#ifndef BUILD_SYS_KBUILD + tempINTC = rtapi_inb(base + INTC); -#else /* BUILD_SYS_KBUILD */ - tempINTC = inb(base + INTC); -#endif /* BUILD_SYS_KBUILD */ - + if (stg_driver->model == 1) { // next compute the directions for port D, located on the second 82C55 control = 0x82; - + if ( (stg_driver->dir_bits & 0x08) == 0)// if port D is set as input, set bits accordingly control = 0x92; -#ifndef BUILD_SYS_KBUILD tempIMR = rtapi_inb(base + IMR); // get the current interrupt mask -#else /* BUILD_SYS_KBUILD */ - tempIMR = inb(base + IMR); // get the current interrupt mask -#endif /* BUILD_SYS_KBUILD */ - -#ifndef BUILD_SYS_KBUILD + rtapi_outb(0xff, base + OCW1); //mask off all interrupts -#else /* BUILD_SYS_KBUILD */ - outb(0xff, base + OCW1); //mask off all interrupts -#endif /* BUILD_SYS_KBUILD */ - + // write the computed control to MIO_2 -#ifndef BUILD_SYS_KBUILD rtapi_outb(control, base+MIO_2); -#else /* BUILD_SYS_KBUILD */ - outb(control, base+MIO_2); -#endif /* BUILD_SYS_KBUILD */ - -#ifndef BUILD_SYS_KBUILD + rtapi_outb(tempINTC, base + INTC); //restore interrupt control reg. -#else /* BUILD_SYS_KBUILD */ - outb(tempINTC, base + INTC); //restore interrupt control reg. -#endif /* BUILD_SYS_KBUILD */ - -#ifndef BUILD_SYS_KBUILD + rtapi_outb(tempIMR, base+ OCW1); //restore int mask -#else /* BUILD_SYS_KBUILD */ - outb(tempIMR, base+ OCW1); //restore int mask -#endif /* BUILD_SYS_KBUILD */ } else { //model STG2 - + // save contents of CNTRL0, it will get reinitialized -#ifndef BUILD_SYS_KBUILD tempCtrl0 = rtapi_inb(base+CNTRL0); tempCtrl1 = rtapi_inb(base+CNTRL1); -#else /* BUILD_SYS_KBUILD */ - tempCtrl0 = inb(base+CNTRL0); - tempCtrl1 = inb(base+CNTRL1); -#endif /* BUILD_SYS_KBUILD */ - + // CNTRL0 output, BRDTST input, D output control = 0x82; if ( (stg_driver->dir_bits & 0x08) == 0)// if port D is set as input, set bits accordingly control = 0x8b; - -#ifndef BUILD_SYS_KBUILD + rtapi_outb(0xff, base + CNTRL1); // disable interrupts -#else /* BUILD_SYS_KBUILD */ - outb(0xff, base + CNTRL1); // disable interrupts -#endif /* BUILD_SYS_KBUILD */ - -#ifndef BUILD_SYS_KBUILD + rtapi_outb(control, base + D_DIR); // set port D direction, also resets CNTRL0 -#else /* BUILD_SYS_KBUILD */ - outb(control, base + D_DIR); // set port D direction, also resets CNTRL0 -#endif /* BUILD_SYS_KBUILD */ - -#ifndef BUILD_SYS_KBUILD + rtapi_outb(tempCtrl0, base + CNTRL0); rtapi_outb( (tempCtrl1 & 0x0f) | 0xf0, base + CNTRL1); -#else /* BUILD_SYS_KBUILD */ - outb(tempCtrl0, base + CNTRL0); - outb( (tempCtrl1 & 0x0f) | 0xf0, base + CNTRL1); -#endif /* BUILD_SYS_KBUILD */ } - + return 0; } @@ -1154,13 +1008,9 @@ static int stg_dio_init(void) * these do the actual data exchange with the board * ************************************************************************/ -static void stg_counter_latch(int i) +static void stg_counter_latch(int i) { -#ifndef BUILD_SYS_KBUILD rtapi_outb(0x03, CTRL(i)); -#else /* BUILD_SYS_KBUILD */ - outb(0x03, CTRL(i)); -#endif /* BUILD_SYS_KBUILD */ } @@ -1182,15 +1032,9 @@ static long stg_counter_read(int i) } byte; } pos; -#ifndef BUILD_SYS_KBUILD pos.byte.b0 = rtapi_inb(DATA(i)); pos.byte.b1 = rtapi_inb(DATA(i)); pos.byte.b2 = rtapi_inb(DATA(i)); -#else /* BUILD_SYS_KBUILD */ - pos.byte.b0 = inb(DATA(i)); - pos.byte.b1 = inb(DATA(i)); - pos.byte.b2 = inb(DATA(i)); -#endif /* BUILD_SYS_KBUILD */ if (pos.byte.b2 < 0) { pos.byte.b3 = -1; } else { @@ -1206,11 +1050,11 @@ static void stg1_select_index_axis(void *arg, unsigned int channel) unsigned char byPol = 1; if (stg->model == 1) - { + { /* * Set polarity to low active if that is requested */ - if( *(stg->index_polarity[channel]) == 0 ) + if( *(stg->index_polarity[channel]) == 0 ) { byPol = 0; } @@ -1218,28 +1062,20 @@ static void stg1_select_index_axis(void *arg, unsigned int channel) /* Stg manual p. 21: "The bits are level triggered and cannot be reset if they are active" * So it is save to reset them and only those which are really active will remain */ stg1_reset_index_latch(arg, channel); - + // routine for Model 1 // initialize stuff to poll index pulse byAxis = channel; - + byAxis &= 0x6; // ignore low bit, we check 2 axes at a time byAxis <<= 3; // shift into position for IXS1, IXS0 -#ifndef BUILD_SYS_KBUILD byIntc = rtapi_inb(base + INTC); // get a copy of INTC, we'll change -#else /* BUILD_SYS_KBUILD */ - byIntc = inb(base + INTC); // get a copy of INTC, we'll change -#endif /* BUILD_SYS_KBUILD */ // some bits in it, not all byIntc &= ~(IXLVL | IXS1 | IXS0); // zero bits for axis and polarity byIntc |= byAxis; // put axes address in INTC if (byPol != 0) // is index pulse active high? byIntc |= IXLVL; -#ifndef BUILD_SYS_KBUILD rtapi_outb(byIntc, base + INTC); -#else /* BUILD_SYS_KBUILD */ - outb(byIntc, base + INTC); -#endif /* BUILD_SYS_KBUILD */ } } @@ -1249,11 +1085,7 @@ static void stg2_select_index_axes( void *arg, unsigned char mask ) * writing 0 to the corresponding bit disables the index pulse * writing 1 enables it */ -#ifndef BUILD_SYS_KBUILD rtapi_outb( mask, base + IDLEN ); -#else /* BUILD_SYS_KBUILD */ - outb( mask, base + IDLEN ); -#endif /* BUILD_SYS_KBUILD */ return; } @@ -1265,13 +1097,8 @@ static void stg1_reset_index_latch(void *arg, unsigned int channel) if (stg->model == 1) { // routine for Model 1 -#ifndef BUILD_SYS_KBUILD rtapi_inb(base + ODDRST); //reset index pulse latch for ODD axis rtapi_inb(base + BRDTST); //reset index pulse latch for EVEN axis -#else /* BUILD_SYS_KBUILD */ - inb(base + ODDRST); //reset index pulse latch for ODD axis - inb(base + BRDTST); //reset index pulse latch for EVEN axis -#endif /* BUILD_SYS_KBUILD */ } return; } @@ -1281,29 +1108,20 @@ static void stg2_reset_all_index_latches( void *arg ) stg_struct *stg = arg; if( stg->model == 2 ) { - /* - * stg2 manual p.22, - * writing 0 to IDL resets the index latch, + /* + * stg2 manual p.22, + * writing 0 to IDL resets the index latch, * writing 1 has no effect */ -#ifndef BUILD_SYS_KBUILD rtapi_outb( 0x00, base + IDL); -#else /* BUILD_SYS_KBUILD */ - outb( 0x00, base + IDL); -#endif /* BUILD_SYS_KBUILD */ } return; } unsigned char stg1_get_current_IRR(void) { -#ifndef BUILD_SYS_KBUILD rtapi_outb(base + OCW3, 0x0a); // IRR on next read return rtapi_inb(base + IRR); -#else /* BUILD_SYS_KBUILD */ - outb(base + OCW3, 0x0a); // IRR on next read - return inb(base + IRR); -#endif /* BUILD_SYS_KBUILD */ } static unsigned short stg1_get_index_pulse_latch(void *arg, unsigned int chan) @@ -1332,28 +1150,20 @@ static unsigned char stg2_get_all_index_pulse_latches( void *arg ) unsigned char indexRegister = 0; if( stg-> model == 2 ) -#ifndef BUILD_SYS_KBUILD indexRegister = rtapi_inb( base + IDL ); -#else /* BUILD_SYS_KBUILD */ - indexRegister = inb( base + IDL ); -#endif /* BUILD_SYS_KBUILD */ return indexRegister; } /* stg_dac_write() - writes a dac channel - + works the same for both cards (STG & STG2) */ static int stg_dac_write(int ch, short value) -{ +{ /* write the DAC */ -#ifndef BUILD_SYS_KBUILD rtapi_outw(value, base + DAC_0 + (ch << 1)); -#else /* BUILD_SYS_KBUILD */ - outw(value, base + DAC_0 + (ch << 1)); -#endif /* BUILD_SYS_KBUILD */ return 0; } @@ -1366,70 +1176,36 @@ int stg_adc_start(void *arg, unsigned short wAxis) unsigned char tempCtrl0; stg = arg; - + if (stg->model == 1) { /* do a dummy read from the ADC, just to set the input multiplexer to the right channel */ -#ifndef BUILD_SYS_KBUILD rtapi_inw(base + ADC_0 + (wAxis << 1)); -#else /* BUILD_SYS_KBUILD */ - inw(base + ADC_0 + (wAxis << 1)); -#endif /* BUILD_SYS_KBUILD */ /* wait 4 uS for settling time on the multiplexer and ADC. You probably shouldn't really have a delay in a driver */ -#ifndef BUILD_SYS_KBUILD rtapi_outb(0, 0x80); rtapi_outb(0, 0x80); rtapi_outb(0, 0x80); rtapi_outb(0, 0x80); -#else /* BUILD_SYS_KBUILD */ - outb(0, 0x80); - outb(0, 0x80); - outb(0, 0x80); - outb(0, 0x80); -#endif /* BUILD_SYS_KBUILD */ /* now start conversion */ -#ifndef BUILD_SYS_KBUILD rtapi_outw(0, base + ADC_0 + (wAxis << 1)); -#else /* BUILD_SYS_KBUILD */ - outw(0, base + ADC_0 + (wAxis << 1)); -#endif /* BUILD_SYS_KBUILD */ } else { //model STG2 -#ifndef BUILD_SYS_KBUILD tempCtrl0 = rtapi_inb(base+CNTRL0) & 0x07; // save IRQ -#else /* BUILD_SYS_KBUILD */ - tempCtrl0 = inb(base+CNTRL0) & 0x07; // save IRQ -#endif /* BUILD_SYS_KBUILD */ tempCtrl0 |= (wAxis << 4) | 0x88; //autozero & cal cycle -#ifndef BUILD_SYS_KBUILD rtapi_outb(tempCtrl0, base + CNTRL0); // select channel -#else /* BUILD_SYS_KBUILD */ - outb(tempCtrl0, base + CNTRL0); // select channel -#endif /* BUILD_SYS_KBUILD */ /* wait 4 uS for settling time on the multiplexer and ADC. You probably shouldn't really have a delay in a driver */ -#ifndef BUILD_SYS_KBUILD rtapi_outb(0, 0x80); rtapi_outb(0, 0x80); rtapi_outb(0, 0x80); rtapi_outb(0, 0x80); -#else /* BUILD_SYS_KBUILD */ - outb(0, 0x80); - outb(0, 0x80); - outb(0, 0x80); - outb(0, 0x80); -#endif /* BUILD_SYS_KBUILD */ - + /* now start conversion */ -#ifndef BUILD_SYS_KBUILD rtapi_outw(0, base + ADC_0); -#else /* BUILD_SYS_KBUILD */ - outw(0, base + ADC_0); -#endif /* BUILD_SYS_KBUILD */ } return 0; }; @@ -1442,9 +1218,9 @@ static short stg_adc_read(void *arg, int axis) stg = arg; /* - there must have been a delay between stg_adc_start() and - stg_adc_read(), of 19 usec if autozeroing (we are), 4 usecs - otherwise. In code that calls this, make sure you split these + there must have been a delay between stg_adc_start() and + stg_adc_read(), of 19 usec if autozeroing (we are), 4 usecs + otherwise. In code that calls this, make sure you split these calls up with some intervening code */ @@ -1456,32 +1232,16 @@ static short stg_adc_read(void *arg, int axis) Register) of Interrupt Controller. Don't wait forever though bail out eventually. */ -#ifndef BUILD_SYS_KBUILD for (j = 0; !(rtapi_inb(base + IRR) & 0x08) && (j < 1000); j++); -#else /* BUILD_SYS_KBUILD */ - for (j = 0; !(inb(base + IRR) & 0x08) && (j < 1000); j++); -#endif /* BUILD_SYS_KBUILD */ - -#ifndef BUILD_SYS_KBUILD + j = rtapi_inw(base + ADC_0 + (axis << 1)); -#else /* BUILD_SYS_KBUILD */ - j = inw(base + ADC_0 + (axis << 1)); -#endif /* BUILD_SYS_KBUILD */ } else { //model 2 -#ifndef BUILD_SYS_KBUILD for (j = 0; (rtapi_inb(base + BRDTST) & 0x08) && (j < 1000); j++); -#else /* BUILD_SYS_KBUILD */ - for (j = 0; (inb(base + BRDTST) & 0x08) && (j < 1000); j++); -#endif /* BUILD_SYS_KBUILD */ - -#ifndef BUILD_SYS_KBUILD - j = rtapi_inw(base + ADC_0 + (axis << 1)); -#else /* BUILD_SYS_KBUILD */ - j = inw(base + ADC_0 + (axis << 1)); -#endif /* BUILD_SYS_KBUILD */ - + + j = rtapi_inw(base + ADC_0 + (axis << 1)); + } @@ -1501,12 +1261,12 @@ static short stg_adc_read(void *arg, int axis) static int stg_set_interrupt(short interrupt) { unsigned char tempINTC; - + if (stg_driver->model == 1) tempINTC=0x80; else tempINTC=0x88;//also CAL low, don|t want ADC to calibrate - + switch (interrupt) { case 3: break; case 5: tempINTC |= 4;break; @@ -1517,19 +1277,11 @@ static int stg_set_interrupt(short interrupt) case 12: tempINTC |= 3;break; case 15: tempINTC |= 1;break; default: tempINTC |= 4;break; - } + } if (stg_driver->model == 1) -#ifndef BUILD_SYS_KBUILD rtapi_outb(tempINTC, base + INTC); -#else /* BUILD_SYS_KBUILD */ - outb(tempINTC, base + INTC); -#endif /* BUILD_SYS_KBUILD */ else -#ifndef BUILD_SYS_KBUILD rtapi_outb(tempINTC, base + CNTRL0); -#else /* BUILD_SYS_KBUILD */ - outb(tempINTC, base + CNTRL0); -#endif /* BUILD_SYS_KBUILD */ return 0; } @@ -1548,11 +1300,11 @@ static int stg_init_card() */ if ( (model != 0) && (base != 0) ) { - stg_driver->model = model; + stg_driver->model = model; } else { base = stg_autodetect(); } - + /* * Now check if the settings for a card a ok */ @@ -1567,54 +1319,32 @@ static int stg_init_card() * STG1 */ // initialize INTC as output -#ifndef BUILD_SYS_KBUILD rtapi_outb(0x92, base + MIO_2); -#else /* BUILD_SYS_KBUILD */ - outb(0x92, base + MIO_2); -#endif /* BUILD_SYS_KBUILD */ - + stg_set_interrupt(5); // initialize it to smthg, we won't use it anyways - -#ifndef BUILD_SYS_KBUILD + rtapi_outb(0x1a, base + ICW1); // initialize the 82C59 as single chip (STG docs say so:) rtapi_outb(0x00, base + ICW2); // ICW2 not used, must init it to 0 rtapi_outb(0xff, base + OCW1); // mask off all interrupts -#else /* BUILD_SYS_KBUILD */ - outb(0x1a, base + ICW1); // initialize the 82C59 as single chip (STG docs say so:) - outb(0x00, base + ICW2); // ICW2 not used, must init it to 0 - outb(0xff, base + OCW1); // mask off all interrupts -#endif /* BUILD_SYS_KBUILD */ rtapi_print_msg(RTAPI_MSG_INFO, "STG: Initialised stg%1d card at address %x\n", stg_driver->model, base); - } else if (stg_driver->model == 2 ) { + } else if (stg_driver->model == 2 ) { /* * STG2 */ -#ifndef BUILD_SYS_KBUILD rtapi_outb(0x8b, base + D_DIR); // initialize CONTRL0 output, BRDTST input -#else /* BUILD_SYS_KBUILD */ - outb(0x8b, base + D_DIR); // initialize CONTRL0 output, BRDTST input -#endif /* BUILD_SYS_KBUILD */ - + /* stg2 manual, p.21 * writing 0 to the corresponding bit disables the index pulse * writing 1 enables it */ -#ifndef BUILD_SYS_KBUILD rtapi_outb( 0x00, base + IDLEN ); -#else /* BUILD_SYS_KBUILD */ - outb( 0x00, base + IDLEN ); -#endif /* BUILD_SYS_KBUILD */ /* stg2 manual, p.21 * writing 0 to the corresponding bit selects the index pulse to latch the counter * writing 1 to the corresponding bit selects EXLATCH to latch the counter */ -#ifndef BUILD_SYS_KBUILD rtapi_outb( 0x00, base + SELDI ); -#else /* BUILD_SYS_KBUILD */ - outb( 0x00, base + SELDI ); -#endif /* BUILD_SYS_KBUILD */ stg_set_interrupt(5); // initialize it to something, we won't use it anyways rtapi_print_msg(RTAPI_MSG_INFO, @@ -1623,7 +1353,7 @@ static int stg_init_card() rtapi_print_msg(RTAPI_MSG_ERR, "STG: ERROR: The model stg%1d is not correct\n", stg_driver->model ); return -ENODEV; } - + /* restore saved message level */ rtapi_set_msg_level(msg); @@ -1648,18 +1378,10 @@ unsigned short stg_autodetect() address = i * 0x20 + 0x200; /* does jumper = i? */ -#ifndef BUILD_SYS_KBUILD //if ((rtapi_inb(address + BRDTST) & 0x0f) == i) { // by Xuecheng, not necessary -#else /* BUILD_SYS_KBUILD */ - //if ((inb(address + BRDTST) & 0x0f) == i) { // by Xuecheng, not necessary -#endif /* BUILD_SYS_KBUILD */ k = 0; // var for getting the serial for (j = 0; j < 8; j++) { -#ifndef BUILD_SYS_KBUILD ofs = (rtapi_inb(address + BRDTST) >> 4); -#else /* BUILD_SYS_KBUILD */ - ofs = (inb(address + BRDTST) >> 4); -#endif /* BUILD_SYS_KBUILD */ if (ofs & 8) { /* is SER set? */ ofs = ofs & 7; /* mask for Q2,Q1,Q0 */ @@ -1748,15 +1470,15 @@ static int export_counter(int num, stg_struct *addr) /* - * The index polarity is configurable for the stg1 cards only, + * The index polarity is configurable for the stg1 cards only, * but not for the stg2 cards */ - if( addr->model == 1 ) + if( addr->model == 1 ) { /* export read only HAL pin for index pulse polarity */ retval = hal_pin_bit_newf(HAL_IN, &addr->index_polarity[num], comp_id, "stg.%d.index-polarity", num); - if (retval != 0) + if (retval != 0) { return retval; } @@ -1904,7 +1626,7 @@ static int export_output_pin(int pinnum, io_pin * pin) * This function exports a lot of stuff, which results in a lot of * logging if msg_level is at INFO or ALL. So we save the current value * of msg_level and restore it later. If you actually need to log this - * function's actions, change the second line below + * function's actions, change the second line below */ msg = rtapi_get_msg_level(); rtapi_set_msg_level( STG_MSG_LEVEL ); diff --git a/src/hal/drivers/hal_vti.c b/src/hal/drivers/hal_vti.c index c3254e2f11..73ac53bb47 100644 --- a/src/hal/drivers/hal_vti.c +++ b/src/hal/drivers/hal_vti.c @@ -35,9 +35,9 @@ config string passed to insmod when loading the module. The format consists of a character string that sets the direction of each group of pins. Each character or character pair - of the direction string is one of "I", "O", "ii", "io", "oi" or "oo". - The individual and character pair formats may be used interchangably in - the same string, however the lower case format must always appear in + of the direction string is one of "I", "O", "ii", "io", "oi" or "oo". + The individual and character pair formats may be used interchangably in + the same string, however the lower case format must always appear in pairs. The representatiom of each character or character pair is as follows: I: 8 (0..7) Inputs @@ -153,9 +153,6 @@ */ #include "config.h" -#if !defined(BUILD_SYS_USER_DSO) -#include -#endif #include "rtapi.h" /* RTAPI realtime OS API */ #include "rtapi_app.h" /* RTAPI realtime module decls */ #include @@ -211,13 +208,8 @@ typedef struct { } vti_struct; static vti_struct *vti_driver; -#if defined(BUILD_SYS_USER_DSO) #include "rtapi_pci.h" static struct rtapi_pcidev *dev = NULL; -#else -struct pci_dev *dev = NULL; -struct pci_access *device; -#endif volatile struct encoder *encoder = NULL; volatile struct timer *timer = NULL; volatile struct dac *dac = NULL; @@ -283,7 +275,7 @@ static void vti_do_write(void *arg, long period); //writes digital outputs to th int rtapi_app_main(void) { int retval; - + /* test for number of channels */ if ((num_chan <= 0) || (num_chan > MAX_CHAN)) { rtapi_print_msg(RTAPI_MSG_ERR, @@ -322,9 +314,7 @@ int rtapi_app_main(void) diocount = vti_parse_dio(); if (diocount == -1) { -#if defined(BUILD_SYS_USER_DSO) rtapi_pci_put_device(dev); -#endif rtapi_print_msg(RTAPI_MSG_ERR, "VTI: ERROR: bad config info for port.\n"); return -1; @@ -335,9 +325,7 @@ int rtapi_app_main(void) /* init counter chip */ if (vti_counter_init(num_chan) == -1) { -#if defined(BUILD_SYS_USER_DSO) rtapi_pci_put_device(dev); -#endif rtapi_print_msg(RTAPI_MSG_ERR, "VTI: ERROR: bad config info counter.\n"); return -1; @@ -355,9 +343,7 @@ int rtapi_app_main(void) if (retval != 0) { rtapi_print_msg(RTAPI_MSG_ERR, "VTI: ERROR: vti.counter-capture funct export failed\n"); -#if defined(BUILD_SYS_USER_DSO) rtapi_pci_put_device(dev); -#endif hal_exit(comp_id); return -1; } @@ -369,9 +355,7 @@ int rtapi_app_main(void) if (retval != 0) { rtapi_print_msg(RTAPI_MSG_ERR, "VTI: ERROR: vti.write-dacs funct export failed\n"); -#if defined(BUILD_SYS_USER_DSO) rtapi_pci_put_device(dev); -#endif hal_exit(comp_id); return -1; } @@ -382,9 +366,7 @@ int rtapi_app_main(void) if (retval != 0) { rtapi_print_msg(RTAPI_MSG_ERR, "VTI: ERROR: vti.read-adcs funct export failed\n"); -#if defined(BUILD_SYS_USER_DSO) rtapi_pci_put_device(dev); -#endif hal_exit(comp_id); return -1; } @@ -395,9 +377,7 @@ int rtapi_app_main(void) if (retval != 0) { rtapi_print_msg(RTAPI_MSG_ERR, "VTI: ERROR: vti.di-read funct export failed\n"); -#if defined(BUILD_SYS_USER_DSO) rtapi_pci_put_device(dev); -#endif hal_exit(comp_id); return -1; } @@ -410,9 +390,7 @@ int rtapi_app_main(void) if (retval != 0) { rtapi_print_msg(RTAPI_MSG_ERR, "VTI: ERROR: vti.do-write funct export failed\n"); -#if defined(BUILD_SYS_USER_DSO) rtapi_pci_put_device(dev); -#endif hal_exit(comp_id); return -1; } @@ -470,13 +448,11 @@ static int vti_parse_dio(void) void rtapi_app_exit(void) { -#if defined(BUILD_SYS_USER_DSO) rtapi_pci_iounmap(dev, (void __iomem *)encoder); rtapi_pci_iounmap(dev, (void __iomem *)dac); rtapi_pci_iounmap(dev, (void __iomem *)timer); rtapi_pci_iounmap(dev, (void __iomem *)ip); rtapi_pci_put_device(dev); -#endif hal_exit(comp_id); } @@ -488,7 +464,7 @@ static void vti_counter_capture(void *arg, long period) { vti_struct *vti; int i; - + vti = arg; for (i = 0; i < num_chan; i++) { /* capture raw counts to latches */ @@ -520,7 +496,7 @@ static void vti_dacs_write(void *arg, long period) (*(vti->dac_value[i]) - vti->dac_offset[i]) * vti->dac_gain[i]; /* compute the value for the DAC, the extra - in there is vti specific */ ncounts = ((volts / 10) * 0x7fff) + 0x8000; - + /* write it to the card */ vti_dac_write(i, ncounts); } @@ -528,7 +504,7 @@ static void vti_dacs_write(void *arg, long period) /* The VTI board has no ADCs. Procedure is retained only as a stub, should it be called from elsewhere in the application. */ - + static void vti_adcs_read(void *arg, long period) { return; @@ -599,7 +575,7 @@ static void vti_di_read(void *arg, long period) //reads digital inputs from the split_input(latchedVal, &(vti->port[0][0]), 4); if (vti->dir_bits[1] == 0) split_input(latchedVal, &(vti->port[0][4]), 4); - + /* Get Extended I/O inputs */ if (diocount <= 8) return; // No extended I/O enabled for (i = 1; i < (diocount / 8); i++) { @@ -615,17 +591,17 @@ static void vti_do_write(void *arg, long period) //writes digital outputs to the { vti_struct *vti; int i; - + vti = arg; /* Write ENCDAC onboard outputs */ if (diocount == 0) return; // No DIO encoder->DIO = build_output(&(vti->port[0][0]), 8); if (diocount <= 8) return; // No extended I/O - + /* Write Extended I/O outputs */ for (i = 1; i < diocount / 8; i++) { - dac->DIO[i - 1] = build_output(&(vti->port[i][0]), 8); - } + dac->DIO[i - 1] = build_output(&(vti->port[i][0]), 8); + } } @@ -673,7 +649,7 @@ static int vti_counter_init(int counters) static int vti_dac_init(int channels) { int retval, i; - + encoder->DAC = DAC_IND_MODE; // Enable DACs for output indpendent of watchdog for (i = 0; i < channels; i++) { retval = export_dac(i, vti_driver); @@ -704,7 +680,7 @@ static int vti_dio_init(int nibbles) { unsigned int mask; int i; - + /* we will select the directions of each port */ /* First initialize the 8 on board I/O points */ if (diocount == 0) return 0; // No DIO @@ -755,34 +731,34 @@ static long vti_counter_read(int axis) Longword EncData; static long int lastCount; // static unsigned short lastdac; - + if ((axis >= MAX_CHANS) || (axis < 0)) { return 0x80000000; // Return encoder error value } lastCount = enc_counts[axis]; status = encoder->Status; // latch status from vti board count = encoder->Counter[axis]; // latch count from vti board - + EncData.Long = (long int)enc_counts[axis]; if (status & (1 << axis)) { if (status & (1 << (axis + 4))) { - EncData.Word[1] += 1; + EncData.Word[1] += 1; } else { - EncData.Word[1] -= 1; + EncData.Word[1] -= 1; } } - - + + EncData.Word[0] = count; -// Filter out spurious roll overs / roll unders - if ((EncData.Long - lastCount) > 0x7fff) +// Filter out spurious roll overs / roll unders + if ((EncData.Long - lastCount) > 0x7fff) EncData.Word[1] -= 1; - else + else if ((lastCount - EncData.Long) > 0x7fff) EncData.Word[1] += 1; enc_counts[axis] = EncData.Long; - + return EncData.Long; } @@ -800,7 +776,7 @@ static int vti_dac_write(int axis, short value) junk = dac->mode; // Read from mode to trigger update dac immediately junk++; // Silence compiler '-Wunused-value' warnings dac->dac[axis] = value; // Write dac value - + return 0; } @@ -829,23 +805,10 @@ static int vti_init_card() { int retval=vti_autodetect(); if (retval == 0) { -#if defined(BUILD_SYS_USER_DSO) encoder = (volatile struct encoder *) rtapi_pci_ioremap(dev, 2, sizeof(encoder)); dac = (volatile struct dac *) rtapi_pci_ioremap(dev, 4, sizeof(dac)); timer = (volatile struct timer *) rtapi_pci_ioremap(dev, 3, sizeof(timer)); ip = (volatile struct ip *) rtapi_pci_ioremap(dev, 5, sizeof(ip)); -#else - encoder = (volatile struct encoder *) - ioremap(pci_resource_start(dev, 2), sizeof(encoder)); - dac = - (volatile struct dac *) ioremap(pci_resource_start(dev, - 4), sizeof(dac)); - timer = - (volatile struct timer *) ioremap(pci_resource_start(dev, - 3), sizeof(timer)); - ip = (volatile struct ip *) ioremap(pci_resource_start(dev, 5), - sizeof(ip)); -#endif } else { return (retval); } @@ -866,19 +829,11 @@ static int vti_init_card() /* scans possible addresses for vti cards */ static int vti_autodetect() { -#if defined(BUILD_SYS_USER_DSO) dev = rtapi_pci_get_device(VENDOR, DEVICE, NULL); if (dev) { rtapi_pci_put_device(dev); rtapi_print_msg(RTAPI_MSG_INFO, "VTI: Card detected in slot"); -#else - dev = pci_get_device(VENDOR, DEVICE, dev); - if (dev) { - pci_dev_put(dev); - rtapi_print_msg(RTAPI_MSG_INFO, - "VTI: Card detected in slot: %2x\n", PCI_SLOT(dev->devfn)); -#endif return (0); } else { rtapi_print_msg(RTAPI_MSG_INFO, "VTI: Exiting with auto detect failed\n"); diff --git a/src/hal/drivers/hal_zed_can.c b/src/hal/drivers/hal_zed_can.c index 492c3bdcee..7e6fb36833 100644 --- a/src/hal/drivers/hal_zed_can.c +++ b/src/hal/drivers/hal_zed_can.c @@ -21,34 +21,34 @@ using CAN8 interface board. \details - The number FOC axis controlled is determined by the insmod command - line parameter 'FOC_axis' passed from .hal configuration file. - It accepts a comma separated (no spaces) list of up to 8 numbers - indicating the CAN address of the FOC channel. + The number FOC axis controlled is determined by the insmod command + line parameter 'FOC_axis' passed from .hal configuration file. + It accepts a comma separated (no spaces) list of up to 8 numbers + indicating the CAN address of the FOC channel. \note actually the FOC axis are configured all with address 3 each - axis on a single CAN line in order to stress the system with maximum + axis on a single CAN line in order to stress the system with maximum CAN load. - - A second command line parameter "ctrl_type", selects between position + + A second command line parameter "ctrl_type", selects between position csp, traj-generator, velocity, current, torque control modes - - in order to adapt to different mechanical setup/encoder type the following + + in order to adapt to different mechanical setup/encoder type the following parameters are needed: PPR: pulses per revolution (for 2FOC is always 65536 all encoders are expanded to 16bit) - Screw_ratio: lead screw ratio (mm/turns) such as 5mm/turn - Screw gear: number of teeths of screw pulley - Motor gear: number of teeths of motor pulley + Screw_ratio: lead screw ratio (mm/turns) such as 5mm/turn + Screw gear: number of teeths of screw pulley + Motor gear: number of teeths of motor pulley To use this driver the 2FOC boards must be configured for speed control - and CAN address 3 connecting each axis on a different CAN8 line in a + and CAN address 3 connecting each axis on a different CAN8 line in a point2point configuration. - 2FOC periodic message is configured for: + 2FOC periodic message is configured for: - position(32bit) - velocity(16bit) - Iq(16bit) \par How to compile. - In order to compile, this driver should be placed in the + In order to compile, this driver should be placed in the /machinekit/src/hal/drivers/ directory in the the Makefile in the /machinekit/src directory add the following: ifeq ($(TARGET_PLATFORM), zedboard) @@ -57,7 +57,7 @@ endif in the '# Subdirectory: hal/drivers' section - and add + and add ifeq ($(TARGET_PLATFORM),zedboard) $(RTLIBDIR)/hal_zedcan$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_zedcan-objs)) endif @@ -77,13 +77,10 @@ */ #include "rtapi.h" // rtapi_print_msg() -#include "rtapi_bitops.h" // RTAPI_BIT(n) -#include "rtapi_app.h" // +#include "rtapi_bitops.h" // RTAPI_BIT(n) +#include "rtapi_app.h" // #include "hal.h" -#if !defined(BUILD_SYS_USER_DSO) - #error "This driver is for usermode threads only" -#endif #if !defined(TARGET_PLATFORM_ZEDBOARD) #error "This driver is for the Zedboard platform only" #endif @@ -115,7 +112,7 @@ MODULE_AUTHOR("Claudio Lorini"); MODULE_DESCRIPTION("Driver CAN for Zedboard 2FOC board"); MODULE_LICENSE("GPL"); -// Miscellaneous peripheral +// Miscellaneous peripheral #define PMODA_OUTREG 0x04 #define PMODB_INREG 0x08 #define RESET_CAN_REG 0x00 @@ -164,7 +161,7 @@ typedef struct { // used for debug pourpouses hal_float_t dbg; - + } FOC_data_t; /** \brief Array of FOC_data structs in shared memory, 1 per configured axis */ @@ -212,11 +209,11 @@ bool FOCAxisIsOperationEnable[MAX_FOC_CHAN]={false}; \pre */ static void send_setpoint(void *arg, long period) { - int nbytes; + int nbytes; int n; __s16 setpoint; FOC_data_t *foctxdata = NULL; - + // point to first axis data foctxdata = arg; @@ -225,7 +222,7 @@ static void send_setpoint(void *arg, long period) // giva a fake feedback to machinekit // *(foctxdata->feedback) = *(foctxdata->setpoint); - + // procede to periodic CAN data exchange only if FOC in 'enable operation' if( false != FOCAxisIsOperationEnable[n] ) { @@ -255,26 +252,26 @@ static void send_setpoint(void *arg, long period) \brief Parse incoming CAN messages \params rxframe: incoming message n: CAN channel - FOC_data_t: FOC data image to fill + FOC_data_t: FOC data image to fill \return 0 everything OK -1 */ int ParseMessage(struct can_frame *rxframe, int n, FOC_data_t *focrxdata) { // parse packet type, mask away CAN address switch( ( rxframe->can_id & 0xFFFFFF) ) { - + case 0xFFFF81: - { + { // 0x81FFFF81, here it is a periodic! grab first (4 bytes) data (position). __s32 *pos = NULL; // FOC position feedback is 65536 postions per turn // for a direct drive screw with 1mm x turn 65536.0; // for a direct drive screw with 5mm x turn 65536.0/5.0; - // for 46:22 pulleys and 5mm x turn 65535/(5*46/22) + // for 46:22 pulleys and 5mm x turn 65535/(5*46/22) pos = (__s32*) rxframe->data; - // *(focrxdata->feedback) = (float) *pos / (65536.0/5.0); - *(focrxdata->feedback) = (float) *pos / ( (float)PPR[n] / ( (float)Screw_ratio[n]*((float)Motor_gear[n]/Screw_gear[n]))); + // *(focrxdata->feedback) = (float) *pos / (65536.0/5.0); + *(focrxdata->feedback) = (float) *pos / ( (float)PPR[n] / ( (float)Screw_ratio[n]*((float)Motor_gear[n]/Screw_gear[n]))); } break; @@ -282,7 +279,7 @@ int ParseMessage(struct can_frame *rxframe, int n, FOC_data_t *focrxdata) { // 0x81FFFF82, here it is a status/error packet. hal_u32_t *stat = NULL, *err = NULL; - + stat = (hal_u32_t*) rxframe->data; err = (hal_u32_t*) (rxframe->data+4); *(focrxdata->focstatus) = (hal_u32_t) *stat; @@ -295,8 +292,8 @@ int ParseMessage(struct can_frame *rxframe, int n, FOC_data_t *focrxdata) break; case 0xFFFFFF: - // 0x8xFFFFFF: ok, this is a command NACK, something serious has happened, - // like an set-point overrange or such... + // 0x8xFFFFFF: ok, this is a command NACK, something serious has happened, + // like an set-point overrange or such... // \todo try to mend it. rtapi_print_msg(RTAPI_MSG_ERR,"HAL_ZED_CAN: Error: NACK (0x%X) from CAN%d",rxframe->can_id, n); // hal_exit(comp_id); @@ -336,7 +333,7 @@ WR(map_MiscAddress + PMODA_OUTREG, rmw); // procede to periodic CAN data exchange only if FOC in 'enable operation' if( false != FOCAxisIsOperationEnable[n] ) { - // parse all messages (eventually) in the rx queue + // parse all messages (eventually) in the rx queue do { // read data (hopefully not-blocking) nbytes = read (sock[n], &rxframe[n], sizeof (struct can_frame)); @@ -359,9 +356,9 @@ WR(map_MiscAddress + PMODA_OUTREG, rmw); /** \brief Setup CAN communication with 2FOC board - \details - \pre - \return + \details + \pre + \return 0: everything ok. ....: failed to initialize communication */ static int setup_CAN(int n) @@ -388,13 +385,13 @@ static int setup_CAN(int n) /** \todo error mamagement a palla */ // - rtapi_snprintf(ifr.ifr_name, sizeof(ifr.ifr_name), "can%d",n); + rtapi_snprintf(ifr.ifr_name, sizeof(ifr.ifr_name), "can%d",n); // ioctl (sock[n], SIOCGIFINDEX, &ifr); // addr.can_family = AF_CAN; addr.can_ifindex = ifr.ifr_ifindex; - + rtapi_print_msg(RTAPI_MSG_INFO, "HAL_ZED_CAN: %s at index %d\n", ifr.ifr_name, ifr.ifr_ifindex); // Bind the socket @@ -410,16 +407,16 @@ static int setup_CAN(int n) hal_exit(comp_id); return -1; } - + /* sets the socket read timout to zero */ memset((char*)&tv,0,sizeof(tv)); if(-1 == setsockopt(sock[n], SOL_SOCKET, SO_RCVTIMEO,(char *)&tv,sizeof(tv))) { rtapi_print_msg(RTAPI_MSG_ERR, "HAL_ZED_CAN: Error: cannot set socket RX timeout"); hal_exit(comp_id); return -1; - } + } - // make the socket read non-blocking + // make the socket read non-blocking if(0 != fcntl(sock[n], F_SETFL, fcntl(sock[n], F_GETFL, 0) | O_NONBLOCK)) { rtapi_print_msg(RTAPI_MSG_ERR, "HAL_ZED_CAN: Error: cannot set socket in non-blocking mode"); hal_exit(comp_id); @@ -440,7 +437,7 @@ static int setup_CAN(int n) /** \brief Determine Zynq revision \details Parse data in /proc/cpuinfo for 'Revision' - \return + \return -1: unable to parse /proc/cpuinfo -1: unable to parse a version number nnnn: the one and only revision */ @@ -451,14 +448,14 @@ static int zynq_revision() // parse /proc/cpuinfo for the line: Revision char *rev_line = "Revision"; FILE *f = fopen(path,"r"); - + if (!f) { rtapi_print_msg(RTAPI_MSG_ERR, "HAL_ZED_CAN: can't open %s: %d - %s\n", path, errno, strerror(errno)); hal_exit(comp_id); return -1; } - + while (fgets(line, sizeof(line), f)) { if (!strncmp(line, rev_line, strlen(rev_line))) { s = strchr(line, ':'); @@ -473,16 +470,16 @@ static int zynq_revision() } /** - \brief Parse the control type configuration passed to the module + \brief Parse the control type configuration passed to the module \details Valid configurations are: 'c' for CSP, Contimuous Setpoint Position 'j' for TRAJGEN, Position control with trajectory generator - 'v' for VELOCITY, Velocity control - 'i' for CURRENT, Current (torque) control + 'v' for VELOCITY, Velocity control + 'i' for CURRENT, Current (torque) control 't' for TORQUE, Torque control with sensor feedback - \todo all. - \return - MODE: detected mode + \todo all. + \return + MODE: detected mode INVALID: mode not set or invalid */ static CONTROL parse_ctrl_type(const char *ctrl) { @@ -499,24 +496,24 @@ static CONTROL parse_ctrl_type(const char *ctrl) /** \brief Determine Zedboard FPGA HW revision - \details The FPGA can contain different resources, a version register determine + \details The FPGA can contain different resources, a version register determine the available resources - \todo Do register read for FPGA versioning - \return + \todo Do register read for FPGA versioning + \return 01: the one and only revision */ static int zb_revision() { return 01; } -/** - \brief Export pins for component(s) - \param - num: component number - addr: pointer to array of the num^th FOC channel data +/** + \brief Export pins for component(s) + \param + num: component number + addr: pointer to array of the num^th FOC channel data */ static int exportFOCaxis(int num, FOC_data_t * addr) -{ +{ int retval = 0; // @@ -528,8 +525,8 @@ static int exportFOCaxis(int num, FOC_data_t * addr) rtapi_print_msg(RTAPI_MSG_ERR, "HAL_ZED_CAN: ERROR: pin setpoint export failed with err=%d", retval); hal_exit(comp_id); return -1; - } - // make available position feedback in hal + } + // make available position feedback in hal if ( (retval = hal_pin_float_newf(HAL_OUT, &(addr->feedback), comp_id, "hal_zed_can.%d.feedback", num) ) < 0) { rtapi_print_msg(RTAPI_MSG_ERR, "HAL_ZED_CAN: ERROR: pin feedback export failed with err=%d", retval); hal_exit(comp_id); @@ -548,7 +545,7 @@ static int exportFOCaxis(int num, FOC_data_t * addr) hal_exit(comp_id); return -1; } - // instantiate parameter + // instantiate parameter retval = hal_pin_u32_newf(HAL_OUT, &(addr->focstatus), comp_id, "hal_zed_can.%d.status", num); // check for failed debug space mapping if(retval != 0) { @@ -556,7 +553,7 @@ static int exportFOCaxis(int num, FOC_data_t * addr) hal_exit(comp_id); return -1; } - // instantiate parameter + // instantiate parameter retval = hal_pin_u32_newf(HAL_OUT, &(addr->focerror), comp_id, "hal_zed_can.%d.error", num); // check for failed debug space mapping if(retval != 0) { @@ -571,8 +568,8 @@ static int exportFOCaxis(int num, FOC_data_t * addr) } /** - \brief do a programmable delay in a barbarous way... - \details + \brief do a programmable delay in a barbarous way... + \details \params delaycycle: delay expiration value */ void dodelay(unsigned long delaycycles) { @@ -585,16 +582,16 @@ void dodelay(unsigned long delaycycles) /** \brief Make sure the periodic communication with 2FOC board is on - \details - \pre - \return + \details + \pre + \return 0: everything ok. ....: failed to initialize periodic communication */ int setup_2FOC_periodic() { int nbytes; int n; - // \todo use the global variable for status/error + // \todo use the global variable for status/error FOC_data_t *focrxdata = NULL; // zero contents of databuffers @@ -643,12 +640,12 @@ int setup_2FOC_periodic() rtapi_print_msg(RTAPI_MSG_ERR,"HAL_ZED_CAN: Unable to send 'enable operation' command to axis %d",n); hal_exit(comp_id); exit(-1); - } + } dodelay(20000); } rtapi_print_msg(RTAPI_MSG_INFO, "HAL_ZED_CAN: ShutDown,SwitchOn, EnableOperation sent to all channels."); - + // \todo Check anything possible before waiting for alignment // - errors of any kind // - board switched on and operationenabled @@ -660,7 +657,7 @@ int setup_2FOC_periodic() // wait for completion of the rotor alignment (flag in status message) for (n = 0; n < num_chan; n++) { int nbytes=0; - + do { // read CAN packet nbytes = read (sock[n], &rxframe[n], sizeof (struct can_frame)); @@ -671,9 +668,9 @@ int setup_2FOC_periodic() } } } - // rotor alignment completed + // rotor alignment completed while ( 0 == (*(focrxdata->focstatus) & 0x00020000 ) ); - + // \todo Check anything possible before living control to machinekit: // - errors of any kind // - correct configuration (speed loop) @@ -698,23 +695,23 @@ int rtapi_app_main(void) { // zynq and FPGA code revision int rev, zrev, n; - // save messaging level + // save messaging level static int msg_level; int retval = 0; - - int fdmisc; - // save message level on entering + int fdmisc; + + // save message level on entering msg_level = rtapi_get_msg_level(); - + /* setup messaging level in: RTAPI_MSG_NONE, RTAPI_MSG_ERR, RTAPI_MSG_WARN, RTAPI_MSG_INFO, RTAPI_MSG_DBG, RTAPI_MSG_ALL */ rtapi_set_msg_level(RTAPI_MSG_ALL); - // check Zynq revision + // check Zynq revision if ((zrev = zynq_revision()) < 0) { - // unable to determine zynq revision + // unable to determine zynq revision rtapi_print_msg(RTAPI_MSG_ERR, "HAL_ZED_CAN: ERROR: unable to determine zynq revision"); hal_exit(comp_id); return -1; @@ -722,9 +719,9 @@ int rtapi_app_main(void) // notify zynq revision rtapi_print_msg(RTAPI_MSG_INFO, "HAL_ZED_CAN: Zynq Revision %d \n", zrev); - // check Zedboard FPGA hardware revision + // check Zedboard FPGA hardware revision rev = zb_revision(); - + // do revision specific configuration switch (rev) { case 01: @@ -748,9 +745,9 @@ int rtapi_app_main(void) printf("Map Misc peripheral: virtual 0x%x real 0x%x \n", map_MiscAddress, MISC_ADDR); // parse module parameters in order to find the number - // of configured FOC channels and their CAN address/configuration + // of configured FOC channels and their CAN address/configuration for(n = 0; n < MAX_FOC_CHAN && FOC_axis[n] != -1 ; n++) { - // check for a valid CAN address + // check for a valid CAN address if( (FOC_axis[n] <= 0) || ( FOC_axis[n] > 15) ) { rtapi_print_msg(RTAPI_MSG_ERR, "HAL_ZED_CAN: ERROR: bad CAN address '%i', axis %i", FOC_axis[n], n); hal_exit(comp_id); @@ -763,9 +760,9 @@ int rtapi_app_main(void) hal_exit(comp_id); return -1; } - // found a correctly configured channel + // found a correctly configured channel num_chan++; - // notify + // notify rtapi_print_msg(RTAPI_MSG_INFO, "HAL_ZED_CAN: FOC axis %d with CAN address %d.",n, FOC_axis[n] ); rtapi_print_msg(RTAPI_MSG_INFO, "HAL_ZED_CAN: Motor gear %d, Screw gear %d, Screw ratio %d Encoder PPR %d.", Screw_gear[n], Motor_gear[n], Screw_ratio[n], PPR[n]); } @@ -774,7 +771,7 @@ int rtapi_app_main(void) hal_exit(comp_id); return -1; } - + // allocate shared memory for FOC_data of each axis FOC_data_array = hal_malloc(num_chan * sizeof(FOC_data_t)); if ( 0 == FOC_data_array ) { @@ -839,16 +836,16 @@ int rtapi_app_main(void) return 0; } -/** - \brief Exit component closing communication with EMS +/** + \brief Exit component closing communication with EMS \pre */ void rtapi_app_exit(void) -{ +{ int n; // notify clean termination rtapi_print_msg(RTAPI_MSG_INFO, "HAL_ZED_CAN: component terminated successfully \n"); - + // close CAN sockets for(n = 0; n < num_chan ; n++) { close(sock[n]); @@ -856,4 +853,3 @@ void rtapi_app_exit(void) hal_exit(comp_id); } - diff --git a/src/hal/drivers/hal_zed_gpio.c b/src/hal/drivers/hal_zed_gpio.c index b3954b8d23..99634f6ece 100644 --- a/src/hal/drivers/hal_zed_gpio.c +++ b/src/hal/drivers/hal_zed_gpio.c @@ -18,17 +18,17 @@ \details This driver profides a series of digital IO connected to the PMods connectors JA1, JB1, JC1, JD1, JE1 and Vita connector. - + In order to mantain rt performances the access to the peripheral is done as a memory access to the xilinx-gpio peripheral. - Details of the pheripheral registers structure can be found in the + Details of the pheripheral registers structure can be found in the following document: ug585-Zynq-7000-TRM.pdf (pag.381, pag.1348) \par IO connection table: Pin assignment with CAN8 board (Vita) 55,56,57,58,59,60,61,62 - Led CAN (out) - 63,64,65,66,67,68,69,70 - DIP Switch 1 (in) + 63,64,65,66,67,68,69,70 - DIP Switch 1 (in) 71,72,73,74,75,76,77,78 - J8 Outputs (out) 79,80,81,82,83,84,85 - J6 Inputs (in) 86,87,88,89,90,91,92 - J7 Inputs (in) @@ -38,67 +38,67 @@ \version 00 \date 07.02.2014 compiled from source tree and loaded successfully \version 01 - \date 12.02.2014 Inputs working at last! + \date 12.02.2014 Inputs working at last! \version 02 \date 20.03.2015 Moved to a true rt implementation \version 03 \note \bug - \warning + \warning \todo - \pre - \param + \pre + \param \return */ /** -\brief Zynq gpio peripheral register mapping from ug585-Zynq-7000-TRM.pdf +\brief Zynq gpio peripheral register mapping from ug585-Zynq-7000-TRM.pdf */ /** \brief gpio peripheral base address */ -#define GPIO_BASE 0xE000A000 +#define GPIO_BASE 0xE000A000 -/** \breief This registers enables software to change the value being output. +/** \breief This registers enables software to change the value being output. Only data values with a corresponding deasserted mask bit will be changed. 0: pin value is updated 1: pin is masked */ -#define MASK_DATA_0_LSW 0x00000000 -#define MASK_DATA_0_MSW 0x00000004 -#define MASK_DATA_1_LSW 0x00000008 -#define MASK_DATA_1_MSW 0x0000000C -#define MASK_DATA_2_LSW 0x00000010 -#define MASK_DATA_2_MSW 0x00000014 -#define MASK_DATA_3_LSW 0x00000018 -#define MASK_DATA_3_MSW 0x0000001C - -/** \breief This register controls the value being output when the GPIO -signal is configured as an output. All 32bits of this register are written +#define MASK_DATA_0_LSW 0x00000000 +#define MASK_DATA_0_MSW 0x00000004 +#define MASK_DATA_1_LSW 0x00000008 +#define MASK_DATA_1_MSW 0x0000000C +#define MASK_DATA_2_LSW 0x00000010 +#define MASK_DATA_2_MSW 0x00000014 +#define MASK_DATA_3_LSW 0x00000018 +#define MASK_DATA_3_MSW 0x0000001C + +/** \breief This register controls the value being output when the GPIO +signal is configured as an output. All 32bits of this register are written at one time. */ #define DATA_0 0x00000040 #define DATA_1 0x00000044 #define DATA_2 0x00000048 #define DATA_3 0x0000004C -/** \breief This register enables software to observe the value on the device pin. -If the GPIO signal is configured as an output, then this would normally reflect +/** \breief This register enables software to observe the value on the device pin. +If the GPIO signal is configured as an output, then this would normally reflect the value being driven on the output. Writes to this register are ignored.*/ #define DATA_0_RO 0x00000060 // 00..31 [8:7] cannot be used as inputs, will always return 0 when read. -#define DATA_1_RO 0x00000064 // 32..53 +#define DATA_1_RO 0x00000064 // 32..53 #define DATA_2_RO 0x00000068 // 54..85 #define DATA_3_RO 0x0000006C // 86..117 -/** \breief This register controls whether the IO pin is acting as an input -or an output. Since the input logic is always enabled, this effectively +/** \breief This register controls whether the IO pin is acting as an input +or an output. Since the input logic is always enabled, this effectively enables/disables the output driver. 0: input 1: output */ -#define DIRM_0 0x00000204 -#define DIRM_1 0x00000244 +#define DIRM_0 0x00000204 +#define DIRM_1 0x00000244 #define DIRM_2 0x00000284 #define DIRM_3 0x000002C4 -/** \breief When the IO is configured as an output, this controls whether +/** \breief When the IO is configured as an output, this controls whether the output is enabled or not. When the output is disabled, the pin is tri-stated. 0: disabled 1: enabled */ @@ -107,40 +107,40 @@ the output is enabled or not. When the output is disabled, the pin is tri-stated #define OEN_2 0x00000288 #define OEN_3 0x000002C8 -/** \breief This register shows which bits are currently masked and which -are un-masked/enabled. This register is read only, so masks cannot be +/** \breief This register shows which bits are currently masked and which +are un-masked/enabled. This register is read only, so masks cannot be changed here. 0: interrupt source enabled 1: interrupt source masked */ -#define INT_MASK_0 0x0000020C -#define INT_MASK_1 0x0000024C +#define INT_MASK_0 0x0000020C +#define INT_MASK_1 0x0000024C #define INT_MASK_2 0x0000028C -#define INT_MASK_3 0x000002CC +#define INT_MASK_3 0x000002CC -/** \breief This register is used to enable or unmask a GPIO input for -use as an interrupt source.Writing a 1 to any bit of this register enables/unmasks +/** \breief This register is used to enable or unmask a GPIO input for +use as an interrupt source.Writing a 1 to any bit of this register enables/unmasks that signal for interrupts. */ -#define INT_EN_0 0x00000210 +#define INT_EN_0 0x00000210 #define INT_EN_1 0x00000250 #define INT_EN_2 0x00000290 -#define INT_EN_3 0x000002D0 +#define INT_EN_3 0x000002D0 -/** \breief This register is used to disable or mask a GPIO input for use -as an interrupt source. Writing a 1 to any bit of this register disables/masks +/** \breief This register is used to disable or mask a GPIO input for use +as an interrupt source. Writing a 1 to any bit of this register disables/masks that signal for interrupts. */ -#define INT_DIS_0 0x00000214 +#define INT_DIS_0 0x00000214 #define INT_DIS_1 0x00000254 #define INT_DIS_2 0x00000294 #define INT_DIS_3 0x000002D4 -/** \breief This registers shows if an interrupt event has occurred or not. +/** \breief This registers shows if an interrupt event has occurred or not. Writing a 1 to a bit in this register clears the interrupt status for that bit. */ #define INT_STAT_0 0x00000218 #define INT_STAT_1 0x00000258 #define INT_STAT_2 0x00000298 #define INT_STAT_3 0x000002D8 -/** \breief This register controls whether the interrupt is edge sensitive +/** \breief This register controls whether the interrupt is edge sensitive or level sensitive. 0: level-sensitive 1: edge-sensitive */ @@ -149,21 +149,21 @@ or level sensitive. #define INT_TYPE_2 0x0000029C #define INT_TYPE_3 0x000002DC -/** \breief This register controls whether the interrupt is active-low or +/** \breief This register controls whether the interrupt is active-low or active high (or falling-edge sensitive or rising-edge sensitive). 0: active low or falling edge 1: active high or rising edge */ -#define INT_POLARITY_0 0x00000220 +#define INT_POLARITY_0 0x00000220 #define INT_POLARITY_1 0x00000260 #define INT_POLARITY_2 0x000002A0 -#define INT_POLARITY_3 0x000002E0 +#define INT_POLARITY_3 0x000002E0 -/** \breief If INT_TYPE is set to edge sensitive, then this register enables an -interrupt event on both rising and falling edges. This register is ignored if +/** \breief If INT_TYPE is set to edge sensitive, then this register enables an +interrupt event on both rising and falling edges. This register is ignored if INT_TYPE is set to level sensitive. 0: trigger on single edge, using configured interrupt polarity 1: trigger on both edges */ -#define INT_ANY_0 0x00000224 +#define INT_ANY_0 0x00000224 #define INT_ANY_1 0x00000264 #define INT_ANY_2 0x000002A4 #define INT_ANY_3 0x000002E4 @@ -177,9 +177,6 @@ INT_TYPE is set to level sensitive. #include "rtapi_app.h" #include "hal.h" -#if !defined(BUILD_SYS_USER_DSO) - #error "This driver is for usermode threads only" -#endif #if !defined(TARGET_PLATFORM_ZEDBOARD) #error "This driver is for the Zedboard platform only" #endif @@ -218,7 +215,7 @@ static void write_port(void *arg, long period) // J8 Outputs from 71 to 78 are on DATA_2 reg. for (n = 0; n < ngpo; n++) { - if (0 == *(oport_data[n])) { + if (0 == *(oport_data[n])) { RTAPI_BIT_CLEAR(RDATA_2, n+17); } else { @@ -246,13 +243,13 @@ static void read_port(void *arg, long period) \brief configrure GPIOs \pre ngpio must be initialized first*/ static void setup_gpio_access() -{ +{ // set DATA_2 as 8 outputs J8 + 8 out LED *((unsigned *)(base + DIRM_2)) = 0x01FE01FE; - // enable output drivers + // enable output drivers *((unsigned *)(base + OEN_2)) = 0x01FE01FE; - // enable update outputs + // enable update outputs *((unsigned *)(base + MASK_DATA_2_LSW)) = 0x0; *((unsigned *)(base + MASK_DATA_2_MSW)) = 0x0; } @@ -260,7 +257,7 @@ static void setup_gpio_access() /** \brief Determine Zynq revision \details Parse data in /proc/cpuinfo for 'Revision' - \return + \return -1: unable to parse /proc/cpuinfo -1: unable to parse a version number nnnn: the one and only revision */ @@ -271,13 +268,13 @@ static int zynq_revision() // parse /proc/cpuinfo for the line: Revision char *rev_line = "Revision"; FILE *f = fopen(path,"r"); - + if (!f) { rtapi_print_msg(RTAPI_MSG_ERR, "HAL_ZED_GPIO: can't open %s: %d - %s\n", path, errno, strerror(errno)); return -1; } - + while (fgets(line, sizeof(line), f)) { if (!strncmp(line, rev_line, strlen(rev_line))) { s = strchr(line, ':'); @@ -293,10 +290,10 @@ static int zynq_revision() /** \brief Determine Zedboard FPGA HW revision - \details The FPGA can contain different resources, a version register determine + \details The FPGA can contain different resources, a version register determine the available resources - \todo Do register read for FPGA versioning - \return + \todo Do register read for FPGA versioning + \return 01: the one and only revision */ static int zb_revision() { @@ -322,20 +319,20 @@ int rtapi_app_main(void) RTAPI_MSG_WARN, RTAPI_MSG_INFO, RTAPI_MSG_DBG, - RTAPI_MSG_ALL + RTAPI_MSG_ALL rtapi_set_msg_level(RTAPI_MSG_ALL); */ - // check Zynq revision + // check Zynq revision if ((zrev = zynq_revision()) < 0) { - // unable to determine zynq revision + // unable to determine zynq revision return -1; } // notify zynq revision rtapi_print_msg(RTAPI_MSG_INFO, "HAL_ZED_GPIO: Zynq Revision %d \n", zrev); - // check Zedboard FPGA hardware revision + // check Zedboard FPGA hardware revision rev = zb_revision(); - + // do revision specific configuration switch (rev) { case 01: @@ -357,7 +354,7 @@ int rtapi_app_main(void) return -1; } - // mmap the device into memory + // mmap the device into memory { unsigned page_addr, page_offset; unsigned page_size=sysconf(_SC_PAGESIZE); @@ -432,10 +429,10 @@ int rtapi_app_main(void) return 0; } -/** +/** \brief Exit component */ void rtapi_app_exit(void) -{ +{ //close /dev/mem close(fd); @@ -444,5 +441,3 @@ void rtapi_app_exit(void) hal_exit(comp_id); } - - diff --git a/src/hal/drivers/mesa-hostmot2/hm2_7i43.c b/src/hal/drivers/mesa-hostmot2/hm2_7i43.c index 1d36c94e94..6f329a60e6 100644 --- a/src/hal/drivers/mesa-hostmot2/hm2_7i43.c +++ b/src/hal/drivers/mesa-hostmot2/hm2_7i43.c @@ -19,10 +19,6 @@ #include "config_module.h" -#if defined(BUILD_SYS_KBUILD) -#include -#endif - #include "rtapi.h" #include "rtapi_app.h" #include "rtapi_math.h" @@ -69,9 +65,9 @@ static hm2_7i43_t board[HM2_7I43_MAX_BOARDS]; static int num_boards; -// +// // EPP I/O code -// +// static inline void hm2_7i43_epp_addr8(u8 addr, hm2_7i43_t *board) { outb(addr, board->port.base + HM2_7I43_EPP_ADDRESS_OFFSET); @@ -193,7 +189,7 @@ static void hm2_7i43_nanosleep(unsigned long int nanoseconds) { -// +// // these are the low-level i/o functions exported to the hostmot2 driver // @@ -350,7 +346,7 @@ int hm2_7i43_reset(hm2_lowlevel_io_t *this) { hm2_7i43_epp_write(0x5A, board); - // + // // this code resets the FPGA *only* if the CPLD is in charge of the // parallel port // @@ -417,7 +413,7 @@ static int hm2_7i43_setup(void) { // // claim the I/O regions for the parport - // + // r = hal_parport_get(comp_id, &board[i].port, ioaddr[i], ioaddr_hi[i], PARPORT_MODE_EPP); @@ -525,4 +521,3 @@ void rtapi_app_exit(void) { hal_exit(comp_id); LL_PRINT("driver unloaded\n"); } - diff --git a/src/hal/drivers/mesa-hostmot2/hm2_pci.c b/src/hal/drivers/mesa-hostmot2/hm2_pci.c index 8544ec7dfd..49c7440cce 100755 --- a/src/hal/drivers/mesa-hostmot2/hm2_pci.c +++ b/src/hal/drivers/mesa-hostmot2/hm2_pci.c @@ -20,12 +20,10 @@ #include "config.h" -#if defined(USERMODE_PCI) && defined(BUILD_SYS_USER_DSO) +#if defined(USERMODE_PCI) #include #include #include -#else -#include #endif #include "rtapi.h" @@ -207,7 +205,7 @@ MODULE_DEVICE_TABLE(pci, hm2_pci_tbl); -// +// // these are the "low-level I/O" functions exported up // @@ -452,7 +450,7 @@ static int hm2_plx9054_reset(hm2_lowlevel_io_t *this) { -// +// // misc internal functions // @@ -839,4 +837,3 @@ void rtapi_app_exit(void) { LL_PRINT("driver unloaded\n"); hal_exit(comp_id); } - diff --git a/src/hal/drivers/mesa-hostmot2/hm2_soc_ol.c b/src/hal/drivers/mesa-hostmot2/hm2_soc_ol.c index 98cc30ee8d..54b93e8056 100644 --- a/src/hal/drivers/mesa-hostmot2/hm2_soc_ol.c +++ b/src/hal/drivers/mesa-hostmot2/hm2_soc_ol.c @@ -91,10 +91,6 @@ see configs/hm2-soc-stepper/irqtest.hal for a usage example /* #error "This driver is for the socfpga platform only" */ /* #endif */ -#if !defined(BUILD_SYS_USER_DSO) -#error "This driver is for usermode threads only" -#endif - #include "rtapi.h" #include "rtapi_app.h" #include "rtapi_string.h" @@ -502,7 +498,7 @@ static int instantiate(const int argc, char* const *argv) void *blob = NULL; LL_PRINT("loading Mesa AnyIO HostMot2 socfpga overlay driver version " HM2_SOCFPGA_VERSION "\n"); - + if(debug){ for(x = 0; x < argc; x++){ LL_DBG("argv[%d] = %s\n", x, argv[x]); @@ -517,20 +513,20 @@ static int instantiate(const int argc, char* const *argv) int inst_id = hal_inst_create(name, comp_id, sizeof(hm2_soc_t), (void **)&brd); if (inst_id < 0) return -1; - + /******************************************************************************** // Initialise and fill inst array values first // // Then zero or void instparam values or they will be passed to next instance // If they are boolean, just zeroing to the default is sufficient // - // If they are a value within a value range, you should void it to -1, + // If they are a value within a value range, you should void it to -1, // so that the instantiation code can insert the default value if it finds -1 // - // Alternatively it could flag an error if it means at least one previous + // Alternatively it could flag an error if it means at least one previous // instance exists and this value cannot be valid ( see num ) **********************************************************************************/ - + brd->name = name; brd->config = NULL; brd->descriptor = NULL; @@ -561,13 +557,13 @@ static int instantiate(const int argc, char* const *argv) LL_ERR("num set to -1 by previous instance. Set a valid board number"); return -1; } - else + else brd->num = num; // void parameters no_init_llio = 0; num = -1; debug = 0; - + // read a custom fwid message if given if (brd->descriptor != NULL) { struct stat st; diff --git a/src/hal/drivers/mesa-hostmot2/hm2_test.c b/src/hal/drivers/mesa-hostmot2/hm2_test.c index ccb61b7485..7b2b4caf4c 100644 --- a/src/hal/drivers/mesa-hostmot2/hm2_test.c +++ b/src/hal/drivers/mesa-hostmot2/hm2_test.c @@ -27,12 +27,10 @@ #include "config.h" -#if defined(USERMODE_PCI) && defined(BUILD_SYS_USER_DSO) +#if defined(USERMODE_PCI) #include #include #include -#else -#include #endif #include "rtapi.h" @@ -79,7 +77,7 @@ static void set32(hm2_test_t *me, u16 addr, u32 val) { } -// +// // these are the "low-level I/O" functions exported up // @@ -131,18 +129,18 @@ int rtapi_app_main(void) { switch (test_pattern) { - // + // // this one has nothing - // + // case 0: { break; } - // + // // this one has a good IO Cookie, but that's it - // + // case 1: { set32(me, HM2_ADDR_IOCOOKIE, HM2_IOCOOKIE); @@ -150,10 +148,10 @@ int rtapi_app_main(void) { } - // + // // this one has a good IO Cookie and Config Name // the idrom offset is 0, and there's nothing there - // + // case 2: { set32(me, HM2_ADDR_IOCOOKIE, HM2_IOCOOKIE); @@ -169,10 +167,10 @@ int rtapi_app_main(void) { } - // + // // good IO Cookie, Config Name, and IDROM Type // the IDROM offset is the usual, 0x400, and there's an invalid IDROM type there - // + // case 3: { set32(me, HM2_ADDR_IOCOOKIE, HM2_IOCOOKIE); @@ -195,11 +193,11 @@ int rtapi_app_main(void) { } - // + // // good IO Cookie, Config Name, and IDROM Type // the IDROM offset is the usual, 0x400, and there's a good IDROM type there // but the portwidth is 0 - // + // case 4: { set32(me, HM2_ADDR_IOCOOKIE, HM2_IOCOOKIE); @@ -217,11 +215,11 @@ int rtapi_app_main(void) { } - // + // // good IO Cookie, Config Name, and IDROM Type // the IDROM offset is the usual, 0x400, and there's a good IDROM type there // but the portwidth is 29 which is bogus - // + // case 5: { set32(me, HM2_ADDR_IOCOOKIE, HM2_IOCOOKIE); @@ -243,11 +241,11 @@ int rtapi_app_main(void) { } - // + // // good IO Cookie, Config Name, and IDROM Type // the IDROM offset is the usual, 0x400, and there's a good IDROM type there // good PortWidth - // + // case 6: { set32(me, HM2_ADDR_IOCOOKIE, HM2_IOCOOKIE); @@ -269,11 +267,11 @@ int rtapi_app_main(void) { } - // + // // good IO Cookie, Config Name, and IDROM Type // the IDROM offset is the usual, 0x400, and there's a good IDROM type there // good PortWidth, but problematic IOPorts and IOWidth - // + // case 7: { set32(me, HM2_ADDR_IOCOOKIE, HM2_IOCOOKIE); @@ -301,11 +299,11 @@ int rtapi_app_main(void) { } - // + // // good IO Cookie, Config Name, and IDROM Type // the IDROM offset is the usual, 0x400, and there's a good IDROM type there // good PortWidth, but IOPorts doesnt match what the llio said - // + // case 8: { set32(me, HM2_ADDR_IOCOOKIE, HM2_IOCOOKIE); @@ -331,12 +329,12 @@ int rtapi_app_main(void) { } - // + // // good IO Cookie, Config Name, and IDROM Type // the IDROM offset is the usual, 0x400, and there's a good IDROM type there // good PortWidth, IOPorts, and IOWidth // but the clocks are bad - // + // case 9: { set32(me, HM2_ADDR_IOCOOKIE, HM2_IOCOOKIE); @@ -363,12 +361,12 @@ int rtapi_app_main(void) { } - // + // // good IO Cookie, Config Name, and IDROM Type // the IDROM offset is the usual, 0x400, and there's a good IDROM type there // good PortWidth, IOPorts, and IOWidth // but the clocks are bad - // + // case 10: { set32(me, HM2_ADDR_IOCOOKIE, HM2_IOCOOKIE); @@ -396,11 +394,11 @@ int rtapi_app_main(void) { } - // + // // good IO Cookie, Config Name, and IDROM Type // the IDROM offset is the usual, 0x400, and there's a good IDROM type there // good PortWidth, IOPorts, IOWidth, and clocks - // + // // The problem with this register file is that the Pin Descriptor // array contains no valid PDs, though the IDROM advertised 144 pins. // @@ -535,11 +533,11 @@ int rtapi_app_main(void) { } - // + // // good IO Cookie, Config Name, and IDROM Type // the IDROM offset is the usual, 0x400, and there's a good IDROM type there // good but unusual (non-24) PortWidth - // + // case 14: { set32(me, HM2_ADDR_IOCOOKIE, HM2_IOCOOKIE); @@ -606,4 +604,3 @@ void rtapi_app_exit(void) { LL_PRINT("driver unloaded\n"); hal_exit(comp_id); } - diff --git a/src/hal/drivers/pluto_common.h b/src/hal/drivers/pluto_common.h index 4f594cd23a..166fc6db79 100644 --- a/src/hal/drivers/pluto_common.h +++ b/src/hal/drivers/pluto_common.h @@ -16,13 +16,8 @@ #include "config.h" -#if defined(BUILD_SYS_USER_DSO) - #include #include -#else -#include -#endif #include "hal_parport.h" @@ -39,12 +34,6 @@ RTAPI_MP_INT(epp_wide, "Use 16- and 32-bit EPP transfers with hardware EPP"); RTAPI_MP_INT(watchdog, "Enable hardware watchdog to tristate outputs if EMC crashes"); -#ifdef BUILD_SYS_KBUILD -#ifndef llabs // linux/kernel.h may provide labs for realtime systems -static int64_t llabs(int64_t l) { if(l < 0) return -l; return l; } -#endif -#endif - static inline int64_t extend(int64_t old, int newlow, int nbits) { int64_t mask = (1< * Tim Waugh * Jose Renau @@ -33,7 +33,7 @@ * Cleaned up include files - Russell King * DMA support - Bert De Jonghe * Many ECP bugs fixed. Fred Barnes & Jamie Lokier, 1999 - * More PCI support now conditional on CONFIG_PCI, 03/2001, Paul G. + * More PCI support now conditional on CONFIG_PCI, 03/2001, Paul G. * Various hacks, Fred Barnes, 04/2001 * Updated probing logic - Adam Belay */ @@ -45,8 +45,6 @@ static int comp_id; -#if defined(BUILD_SYS_USER_DSO) - int rtapi_app_main(void) { comp_id = hal_init("probe_parport"); if (comp_id < 0) { @@ -61,105 +59,3 @@ int rtapi_app_main(void) { void rtapi_app_exit(void) { hal_exit(comp_id); } - -#else - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include - -MODULE_AUTHOR("Jeff Epler"); -MODULE_DESCRIPTION("Parallel Port PNP driver for EMC HAL"); -MODULE_LICENSE("GPL"); - -static int pnp_registered_parport = 0; - -static const struct pnp_device_id probe_parport_pnp_tbl[] = { - /* Standard LPT Printer Port */ - {.id = "PNP0400", .driver_data = 0}, - /* ECP Printer Port */ - {.id = "PNP0401", .driver_data = 0}, - { } -}; - -MODULE_DEVICE_TABLE(pnp,probe_parport_pnp_tbl); - -static int probe_parport_pnp_probe(struct pnp_dev *dev, const struct pnp_device_id *id) -{ - unsigned long io_lo, io_hi; - - if (pnp_port_valid(dev,0) && - !(pnp_port_flags(dev,0) & IORESOURCE_DISABLED)) { - io_lo = pnp_port_start(dev,0); - } else - return -EINVAL; - - if (pnp_port_valid(dev,1) && - !(pnp_port_flags(dev,1) & IORESOURCE_DISABLED)) { - io_hi = pnp_port_start(dev,1); - } else - io_hi = 0; - - rtapi_print_msg(RTAPI_MSG_INFO, "parport: PnPBIOS parport detected, io_lo=%lx io_hi=%lx\n", - io_lo, io_hi); - - pnp_set_drvdata(dev,NULL); - return 0; -} - -static void probe_parport_pnp_remove(struct pnp_dev *dev) -{ -} - -/* we only need the pnp layer to activate the device, at least for now */ -static struct pnp_driver probe_parport_pnp_driver = { - .name = "probe_parport", - .id_table = probe_parport_pnp_tbl, - .probe = probe_parport_pnp_probe, - .remove = probe_parport_pnp_remove, -}; - - -int rtapi_app_main(void) { - int r; - - comp_id = hal_init("probe_parport"); - if (comp_id < 0) { - rtapi_print_msg(RTAPI_MSG_ERR, "PROBE_PARPORT: ERROR: hal_init() failed\n"); - return -1; - } - - - r = pnp_register_driver (&probe_parport_pnp_driver); - if (r >= 0) { - pnp_registered_parport = 1; - } else { - rtapi_print_msg(RTAPI_MSG_WARN, "PROBE_PARPORT: no PnPBIOS parports were detected (%d)\n", r); - } - - hal_ready(comp_id); - return 0; -} - -void rtapi_app_exit(void) { - if (pnp_registered_parport) - pnp_unregister_driver (&probe_parport_pnp_driver); - hal_exit(comp_id); -} - -#endif diff --git a/src/hal/jplanner/jplan.c b/src/hal/jplanner/jplan.c index 768fc1a476..8f704e60df 100644 --- a/src/hal/jplanner/jplan.c +++ b/src/hal/jplanner/jplan.c @@ -98,6 +98,7 @@ static int update_joint(struct joint *joint, vel_req = 0.0; /* and set command to present position to avoid movement when next enabled */ + // Writing to a possible HAL_IN pin! *(joint->pos_cmd) = *(joint->curr_pos); } /* limit velocity request */ @@ -231,7 +232,7 @@ static int instantiate_jplan(const int argc, const char **argv) hal_pin_float_newf(HAL_OUT, &(jp->curr_pos), inst_id, "%s.%d.curr-pos", name, i) || hal_pin_float_newf(HAL_OUT, &(jp->curr_vel), inst_id, "%s.%d.curr-vel", name, i) || hal_pin_float_newf(HAL_IN, &(jp->home_pos), inst_id, "%s.%d.home-pos", name, i) || - hal_pin_bit_newf(HAL_IN, &(jp->home_set), inst_id, "%s.%d.home-set", name, i)) + hal_pin_bit_newf(HAL_IN, &(jp->home_set), inst_id, "%s.%d.home-set", name, i)) return -1; hal_pin_dir_t dir = queued ? HAL_OUT : HAL_IN; diff --git a/src/hal/lib/Submakefile b/src/hal/lib/Submakefile index 20ad61f232..87f8d1445a 100644 --- a/src/hal/lib/Submakefile +++ b/src/hal/lib/Submakefile @@ -16,7 +16,6 @@ HALLIBSRCS := $(HALLIBDIR)/hal_lib.c \ $(HALLIBDIR)/hal_rcomp.c \ $(HALLIBDIR)/hal_vtable.c \ $(HALLIBDIR)/hal_funct.c \ - $(HALLIBDIR)/hal_procfs.c \ $(HALLIBDIR)/hal_thread.c \ $(HALLIBDIR)/hal_param.c \ $(HALLIBDIR)/hal_signal.c \ @@ -43,7 +42,7 @@ $(call TOOBJSDEPS, $(HALLIBMTALK_SRCS)) : EXTRAFLAGS=-fPIC $(HALLIBMTALK_CXXFLAG # ULAPI: all thread-specific code now comes in through the ulapi library # (liblinuxcnculapi.so) which autoloads the proper ulapi on demand -$(call TOOBJSDEPS, $(HALLIBSRCS)): EXTRAFLAGS += $(THREADS_RTFLAGS) -fPIC +$(call TOOBJSDEPS, $(HALLIBSRCS)): EXTRAFLAGS += -fPIC # Add to list of sources to compile -DULAPI -> # objects/{$(HALLIBDIR)/hal_lib.o} @@ -77,7 +76,7 @@ $(HALLIB).0: \ @rm -f $@ $(Q)$(CC) $(LDFLAGS) -Wl,-rpath,$(EMC2_RTLIB_DIR) \ -Wl,-soname,$(notdir $@) -shared \ - -o $@ $^ -lstdc++ -ldl -lrt $(PROTOBUF_LIBS) $(PROTOCXXLIB) $(CZMQ_LIBS) $(RT_LDFLAGS) + -o $@ $^ -lstdc++ -ldl -lrt $(PROTOBUF_LIBS) $(PROTOCXXLIB) $(CZMQ_LIBS) HALMODULESRCS := $(HALLIBDIR)/halmodule.cc PYSRCS += $(HALMODULESRCS) @@ -98,7 +97,6 @@ hal_lib-objs += hal/lib/hal_ring.o hal_lib-objs += hal/lib/hal_rcomp.o hal_lib-objs += hal/lib/hal_vtable.o hal_lib-objs += hal/lib/hal_funct.o -hal_lib-objs += hal/lib/hal_procfs.o hal_lib-objs += hal/lib/hal_thread.o hal_lib-objs += hal/lib/hal_signal.o hal_lib-objs += hal/lib/hal_pin.o diff --git a/src/hal/lib/config_module.h b/src/hal/lib/config_module.h index e2915405fd..22058c1468 100644 --- a/src/hal/lib/config_module.h +++ b/src/hal/lib/config_module.h @@ -65,8 +65,6 @@ place of something like */ -#ifdef BUILD_SYS_USER_DSO - /* Usermode PCI builds */ #define RTAPI_INC_CTYPE_H @@ -77,18 +75,4 @@ #define RTAPI_INC_SLAB_H "userpci/slab.h" #define RTAPI_INC_STRING_H "userpci/string.h" -#else - -/* Linux kernel module builds */ - -#define RTAPI_INC_CTYPE_H "linux/ctype.h" -#define RTAPI_INC_DEVICE_H "linux/device.h" -#define RTAPI_INC_FIRMWARE_H "linux/firmware.h" -#define RTAPI_INC_GFP_H "linux/gfp.h" -#define RTAPI_INC_LIST_H "linux/list.h" -#define RTAPI_INC_SLAB_H "linux/slab.h" -#define RTAPI_INC_STRING_H "linux/string.h" - -#endif /* BUILD_SYS_USER_DSO */ - #endif /* CONFIG_MODULE_H */ diff --git a/src/hal/lib/hal_comp.c b/src/hal/lib/hal_comp.c index 3c5c190423..86758b3158 100644 --- a/src/hal/lib/hal_comp.c +++ b/src/hal/lib/hal_comp.c @@ -10,12 +10,10 @@ #include /* pid_t */ #include /* getpid() */ #endif -#if defined(BUILD_SYS_USER_DSO) || (defined(RTAPI) && !defined(BUILD_SYS_KBUILD)) #include #ifndef abs int abs(int x) { if(x < 0) return -x; else return x; } #endif -#endif hal_comp_t *halpr_alloc_comp_struct(void); diff --git a/src/hal/lib/hal_group.c b/src/hal/lib/hal_group.c index 0719632b79..9bd1be7787 100644 --- a/src/hal/lib/hal_group.c +++ b/src/hal/lib/hal_group.c @@ -412,4 +412,3 @@ void free_group_struct(hal_group_t * group) halg_foreach(0, &args, yield_free); halg_free_object(false, (hal_object_ptr)group); } - diff --git a/src/hal/lib/hal_lib.c b/src/hal/lib/hal_lib.c index 58c0c914dc..af40d171b0 100644 --- a/src/hal/lib/hal_lib.c +++ b/src/hal/lib/hal_lib.c @@ -121,10 +121,7 @@ int lib_mem_id = -1; /* RTAPI shmem ID for library module */ // to the instance module (kernel modes) -// defined(BUILD_SYS_KBUILD) && defined(RTAPI) -// defined & attached in, and exported from rtapi_module.c - -// defined(BUILD_SYS_USER_DSO) && defined(RTAPI) +// defined(RTAPI) // defined & attached in, and exported from rtapi_main.c /*********************************************************************** @@ -448,13 +445,13 @@ EXPORT_SYMBOL(hal_shmem_base); // ------------ private API: ------------ // found in their respective source files: -EXPORT_SYMBOL(halpr_find_comp_by_name); -EXPORT_SYMBOL(halpr_find_pin_by_name); -EXPORT_SYMBOL(halpr_find_sig_by_name); -EXPORT_SYMBOL(halpr_find_param_by_name); -EXPORT_SYMBOL(halpr_find_thread_by_name); -EXPORT_SYMBOL(halpr_find_funct_by_name); -EXPORT_SYMBOL(halpr_find_inst_by_name); +EXPORT_SYMBOL(halpr_find_comp_by_name); +EXPORT_SYMBOL(halpr_find_pin_by_name); +EXPORT_SYMBOL(halpr_find_sig_by_name); +EXPORT_SYMBOL(halpr_find_param_by_name); +EXPORT_SYMBOL(halpr_find_thread_by_name); +EXPORT_SYMBOL(halpr_find_funct_by_name); +EXPORT_SYMBOL(halpr_find_inst_by_name); EXPORT_SYMBOL(hal_data); // hal_comp.c: diff --git a/src/hal/lib/hal_logging.h b/src/hal/lib/hal_logging.h index cc2de6cc5b..16413c0fbb 100644 --- a/src/hal/lib/hal_logging.h +++ b/src/hal/lib/hal_logging.h @@ -2,6 +2,7 @@ #define HAL_LOGGING_H #include +#include RTAPI_BEGIN_DECLS void hal_print_loc(const int level, diff --git a/src/hal/lib/hal_parport.h b/src/hal/lib/hal_parport.h index 9791ddf3de..8288e54ce3 100644 --- a/src/hal/lib/hal_parport.h +++ b/src/hal/lib/hal_parport.h @@ -30,8 +30,6 @@ typedef struct hal_parport_t } hal_parport_t; -#if defined(BUILD_SYS_USER_DSO) - #include #include #include @@ -224,177 +222,4 @@ static inline void hal_parport_set_datadir(hal_parport_t *port, int enable_input -#else /***** REALTIME HYPERVISOR *****/ - -static int -hal_parport_get(int comp_id, hal_parport_t *port, - unsigned short base, unsigned short base_hi, unsigned int modes) -{ - int retval = 0; - struct parport *linux_port = 0; - memset(port, 0, sizeof(hal_parport_t)); - - // I/O addresses 1..16 are assumed to be linux parport numbers - if(base < 16) { - linux_port = parport_find_number(base); - if(!linux_port) - { - rtapi_print_msg(RTAPI_MSG_ERR, - "PARPORT: ERROR: linux parport %d not found\n", - base); - return -ENODEV; - } - } else { - linux_port = parport_find_base(base); - } - - if(linux_port) - { - if((modes & linux_port->modes) != modes) - { - rtapi_print_msg(RTAPI_MSG_WARN, - "PARPORT: linux parport %s does not support mode %x.\n" - "PARPORT: continuing anyway.\n", - linux_port->name, modes); - } - rtapi_print_msg(RTAPI_MSG_INFO, - "PARPORT: Using Linux parport %s at ioaddr=0x%lx:0x%lx\n", - linux_port->name, linux_port->base, linux_port->base_hi); - port->linux_dev = parport_register_device(linux_port, - hal_comp_name(comp_id), NULL, NULL, NULL, 0, NULL); - - if(!port->linux_dev) - { - parport_put_port(linux_port); - rtapi_print_msg(RTAPI_MSG_ERR, - "PARPORT: ERROR: port %s register failed\n", linux_port->name); - return -EIO; - } - - retval = parport_claim(port->linux_dev); - if(retval < 0) - { - parport_put_port(linux_port); - parport_unregister_device(port->linux_dev); - rtapi_print_msg(RTAPI_MSG_ERR, - "PARPORT: ERROR: port %s claim failed\n", linux_port->name); - return retval; - } - - port->base = linux_port->base; - if(linux_port->base_hi > 0) { - port->base_hi = linux_port->base_hi; - } else if(base_hi != (unsigned short)-1) { - if(base_hi == 0) base_hi = port->base + 0x400; - rtapi_print_msg(RTAPI_MSG_DBG, - "PARPORT: DEBUG: linux reports no ioaddr_hi, using 0x%x", - base_hi); - port->region_hi = - rtapi_request_region(base_hi, 3, hal_comp_name(comp_id)); - if(port->region_hi) { - rtapi_print_msg(RTAPI_MSG_DBG, - "PARPORT: DEBUG: got requested region starting at 0x%x", - base_hi); - port->base_hi = base_hi; - } else { - rtapi_print_msg(RTAPI_MSG_DBG, - "PARPORT: DEBUG: did not get requested region starting at 0x%x", - base_hi); - } - } - parport_put_port(linux_port); - } else { - if(base_hi == 0) base_hi = base + 0x400; - - port->base = base; - rtapi_print_msg(RTAPI_MSG_INFO, - "Using direct parport at ioaddr=0x%x:0x%x\n", base, base_hi); - - // SPP access needs only 3 bytes, but EPP needs 8. Allocating 8 - // is likely to always be OK, and it simplifies things (since the - // exact allocation size is also needed at deallocation). - port->region = rtapi_request_region(base, 8, hal_comp_name(comp_id)); - if(!port->region) - { - rtapi_print_msg(RTAPI_MSG_ERR, - "PARPORT: ERROR: request_region(0x%x) failed\n", base); - return -EBUSY; - } - - if(base_hi != (unsigned short)-1) - { - port->base_hi = base_hi; - port->region_hi = - rtapi_request_region(base_hi, 3, hal_comp_name(comp_id)); - if(!port->region_hi) - { - rtapi_print_msg(RTAPI_MSG_ERR, - "PARPORT: ERROR: request_region(0x%x) failed\n", base_hi); - rtapi_release_region(port->base, 8); - return -EBUSY; - } - } - } - return 0; -} - -void hal_parport_release(hal_parport_t *port) -{ - if(port->linux_dev) - { - rtapi_print_msg(RTAPI_MSG_INFO, - "PARPORT: Releasing Linux parport at ioaddr=0x%lx:0x%lx\n", - port->linux_dev->port->base, port->linux_dev->port->base_hi); - parport_release(port->linux_dev); - parport_unregister_device(port->linux_dev); - } - if(port->region) { - rtapi_print_msg(RTAPI_MSG_INFO, - "PARPORT: Releasing I/O region ioaddr=0x%x\n", port->base); - rtapi_release_region(port->base, 8); - } - if(port->region_hi) { - rtapi_print_msg(RTAPI_MSG_INFO, - "PARPORT: Releasing high I/O region ioaddr=0x%x\n", - port->base_hi); - rtapi_release_region(port->base_hi, 3); - } - memset(port, 0, sizeof(hal_parport_t)); -} - -static inline unsigned char hal_parport_read_status(hal_parport_t *port) -{ - return rtapi_inb(port->base + 1); -} - -static inline unsigned char hal_parport_read_data(hal_parport_t *port) -{ - return rtapi_inb(port->base + 0); -} - -static inline void hal_parport_write_data(hal_parport_t *port, unsigned char x) -{ - rtapi_outb(x, port->base + 0); -} - -static inline unsigned char hal_parport_read_control(hal_parport_t *port) -{ - return rtapi_inb(port->base + 2); -} - -static inline void hal_parport_write_control(hal_parport_t *port, unsigned char x) -{ - rtapi_outb(x, port->base + 2); -} - -static inline void hal_parport_set_datadir(hal_parport_t *port, int enable_inputs) -{ - if (enable_inputs) - hal_parport_write_control(port, hal_parport_read_control(port) | 0x20); - else - hal_parport_write_control(port, hal_parport_read_control(port) & ~0x20); -} - -#endif /* BUILD_SYS_USER_DSO */ - #endif diff --git a/src/hal/lib/hal_priv.h b/src/hal/lib/hal_priv.h index 05d228fa1c..f6c902d0a8 100644 --- a/src/hal/lib/hal_priv.h +++ b/src/hal/lib/hal_priv.h @@ -100,17 +100,7 @@ #include #endif - -#if defined(BUILD_SYS_USER_DSO) -#include -#else // kernel thread styles -#if defined(RTAPI) -#include -#else // ULAPI #include -#include /* remote comp timestamps */ -#endif -#endif RTAPI_BEGIN_DECLS diff --git a/src/hal/lib/hal_procfs.c b/src/hal/lib/hal_procfs.c deleted file mode 100644 index 7aadaf67c6..0000000000 --- a/src/hal/lib/hal_procfs.c +++ /dev/null @@ -1,158 +0,0 @@ -// HAL procfs API - kernel threads only - -#include "config.h" -#include "rtapi.h" /* RTAPI realtime OS API */ -#include "hal.h" /* HAL public API decls */ -#include "hal_priv.h" /* HAL private decls */ - -// maximum argc passed to hal_call_userfunct() -#define MAX_ARGV 50 - -#if defined(BUILD_SYS_USER_DSO) -#undef CONFIG_PROC_FS -#endif - -#ifdef CONFIG_PROC_FS -#include -#include -#include - -#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0) -#else -// proc_dir_entry is private in Linux 3.10+, so re-define it here -struct proc_dir_entry { - unsigned int low_ino; - umode_t mode; - nlink_t nlink; - kuid_t uid; - kgid_t gid; - loff_t size; - const struct inode_operations *proc_iops; - const struct file_operations *proc_fops; - struct proc_dir_entry *next, *parent, *subdir; - void *data; - atomic_t count; /* use count */ - atomic_t in_use; /* number of callers into module in progress; */ - /* negative -> it's going away RSN */ - struct completion *pde_unload_completion; - struct list_head pde_openers; /* who did ->open, but not ->release */ - spinlock_t pde_unload_lock; /* proc_fops checks and pde_users bumps */ - u8 namelen; - char name[]; -}; -#endif - -extern struct proc_dir_entry *rtapi_dir; -static struct proc_dir_entry *hal_dir = 0; -static struct proc_dir_entry *hal_rtapicmd = 0; - -// simple interface to hal_create_thread()/hal_thread_delete() -// through /proc/rtapi/hal/rtapicmd (kernel threadstyles only) -// -// to start a thread, write 'newthread' ' -// example: -// echo newthread servo-thread 1000000 1 -1 >/proc/rtapi/hal/rtapicmd -// -// to delete a thread, write 'delthread ' -// echo delthread servo-thread >/proc/rtapi/hal/rtapicmd -// -// HAL return values are reflected in the return value to write() -// -// NB: this should be move to an iocontrol, procfs doesnt cut it -static ssize_t proc_write_rtapicmd(struct file *file, - const char __user *buffer, size_t count, loff_t *data) -{ - char cmd[20], name[HAL_NAME_LEN + 1]; - unsigned long period; - int fp, cpu, retval; - - if (!strncmp(buffer,"newthread", 9)) { - if ((retval = sscanf(buffer, "%s %s %lu %d %d", - cmd, name, &period, &fp, &cpu)) != 5) { - HALFAIL_RC(EINVAL, - "newthread: expecting 5 items" - " (s:cmd s:name d:period d:fp d:cpu), got %d", - retval); - } - if ((period > 0) && - (strlen(name) > 0)) { - retval = hal_create_thread(name, period, fp, cpu); - if (retval < 0) { - HALFAIL_RC(EINVAL, "newthread: could not create thread '%s' - error %d", - name, retval); - return retval; - } else { - HALINFO("newthread: created %ld uS thread '%s' fp=%d cpu=%d", - period / 1000, name, fp, cpu); - } - } - } else if (!strncmp(buffer, "delthread", 9)) { - if ((retval = sscanf(buffer, "%s %s", cmd, name)) != 2) { - HALFAIL_RC(EINVAL, - "delthread: expecting 2 items: 'delthread '"); - } - if ((retval = hal_thread_delete(name))) { - HALFAIL_RC(EINVAL, "delthread '%s' error %d", name, retval); - } - HALINFO("delthread - thread '%s' deleted", name); - } else { - // rtapi_argvize modifies its third argument in-place - char rwbuf[1024]; - strncpy(rwbuf, buffer, sizeof(rwbuf)); - - char *argv[MAX_ARGV]; - int argc = rtapi_argvize(MAX_ARGV, argv, rwbuf); - if (argc > 1) { - if (!strncmp(argv[0],"call", 4)) { - int uret = 0, retval; - retval = hal_call_usrfunct(argv[1], - argc-2, - (const char**)&argv[2], - &uret); - if (retval) - return retval; // library return code - // retvall == 0: uret signifies userfunct return value - return uret; - } - } - HALFAIL_RC(EINVAL, "unrecognized rtapicmd: '%s'", cmd); - } - return count; -} - -void hal_proc_clean(void) { - if(hal_rtapicmd) - remove_proc_entry("rtapicmd", hal_dir); - if(hal_dir) - remove_proc_entry("hal", rtapi_dir); - hal_dir = hal_rtapicmd = 0; -} - -#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) -static const struct file_operations proc_file_fops = { - .write = proc_write_rtapicmd, -}; -#endif - -int hal_proc_init(void) { - if(!rtapi_dir) return 0; -#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0) - hal_dir = create_proc_entry("hal", S_IFDIR, rtapi_dir); - if(!hal_dir) { hal_proc_clean(); return -1; } - hal_rtapicmd = create_proc_entry("rtapicmd", 0666, hal_dir); - if(!hal_rtapicmd) { hal_proc_clean(); return -1; } - hal_rtapicmd->data = NULL; - hal_rtapicmd->read_proc = NULL; - hal_rtapicmd->write_proc = proc_write_rtapicmd; -#else - hal_dir = proc_create("hal", S_IFDIR, rtapi_dir, NULL); - if(!hal_dir) { hal_proc_clean(); return -1; } - hal_rtapicmd = proc_create("rtapicmd", 0666, hal_dir, &proc_file_fops); - if(!hal_rtapicmd) { hal_proc_clean(); return -1; } -#endif - return 0; -} -#else -void hal_proc_clean(void) {} -int hal_proc_init(void) { return 0; } -#endif diff --git a/src/hal/lib/halmodule.cc b/src/hal/lib/halmodule.cc index 93ede2df5d..56c0e61797 100644 --- a/src/hal/lib/halmodule.cc +++ b/src/hal/lib/halmodule.cc @@ -25,6 +25,7 @@ using namespace std; #include "rtapi.h" #include "hal.h" #include "hal_priv.h" +#include "rtapi_compat.h" #if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN) typedef int Py_ssize_t; @@ -1135,6 +1136,7 @@ const char *module_doc = "Interface to emc2's hal\n" extern "C" void init_hal(void) { + flavor_ptr f = default_flavor(); PyObject *m = Py_InitModule3("_hal", module_methods, module_doc); @@ -1166,17 +1168,8 @@ void init_hal(void) { PyModule_AddIntConstant(m, "HAL_OUT", HAL_OUT); PyModule_AddIntConstant(m, "HAL_IO", HAL_IO); -#if defined(RTAPI_POSIX) - PyModule_AddIntConstant(m, "is_sim", 1); - PyModule_AddIntConstant(m, "is_rt", 0); -#else - PyModule_AddIntConstant(m, "is_sim", 0); - PyModule_AddIntConstant(m, "is_rt", 1); -#endif - -#ifdef RTAPI_KERNEL_VERSION - PyModule_AddStringConstant(m, "kernel_version", RTAPI_KERNEL_VERSION); -#endif + PyModule_AddIntConstant(m, "is_sim", f->flavor_id == RTAPI_POSIX_ID); + PyModule_AddIntConstant(m, "is_rt", f->flavor_id != RTAPI_POSIX_ID); PyRun_SimpleString( "(lambda s=__import__('signal'):" diff --git a/src/hal/utils/halrmt.c b/src/hal/utils/halrmt.c deleted file mode 100644 index 418ba85ec9..0000000000 --- a/src/hal/utils/halrmt.c +++ /dev/null @@ -1,3579 +0,0 @@ -/******************************************************************** -* Description: halrmt.cc -* Simple telnet interface to EMC2 HAL commands (halcmd) -* -* Derived from work by jmkasunich -* -* Other contributers: -* Alex Joni -* -* Author: Eric H. Johnson -* License: GPL Version 2 -* System: Linux -* -* Copyright (c) 2006-2008 All rights reserved. -* -* Last change: -********************************************************************/ - -/******************************************************************* - Using halrmt: - - halrmt {-- --port --name --connectpw - --enablepw --sessions -ini} - - With -- --port Waits for socket connections (Telnet) on specified socket, without port - uses default port 5006. (note: linuxcncrsh uses 5007 as default) - With -- --name Sets the server name to specified name for Hello. - With -- --connectpw Sets the connection password to 'password'. Default EMC - With -- --enablepw Sets the enable password to 'password'. Default EMCTOO - With -- --sessions Sets the maximum number of simultaneous connextions - to max sessions. Default is no limit (-1). - With -- -ini , uses inifile instead of emc.ini. - - There are six commands supported, Where the commands set and get contain HAL - specific sub-commands based on the commands supported by halcmd. Commands and - most parameters are not case sensitive. The exceptions are passwords, - file paths and text strings. - - The supported commands are as follows: - - ==> HELLO <== - - Hello - If a valid password was entered the server will respond with - - HELLO ACK - - Where server name and server version are looked up from the implementation. - if an invalid password or any other syntax error occurs then the server - responds with: - - HELLO NAK - - ==> Get <== - - The get command includes one of the hal sub-commands, described below and - zero or more additional parameters. - - ==> Set <== - - The set command inclides one of the hal sub-commands, described below and - one or more additional parameters. - - ==> Quit <== - - The quit command disconnects the associated socket connection. - - ==> Shutdown <== - - The shutdown command tells EMC to shutdown before quitting the connection. This - command may only be issued if the Hello has been successfully negotiated and the - connection has control of the CNC (see enable sub-command below). This command - has no parameters. - - ==> Help <== - - The help command will return help information in text format over the telnet - connection. If no parameters are specified, it will itemize the available commands. - If a command is specified, it will provide usage information for the specified - command. Help will respond regardless of whether a "Hello" has been - successsfully negotiated. - - - HAL sub-commands: - - echo on | off - With get will return the current echo state, with set, sets the echo - state. When echo is on, all commands will be echoed upon receipt. This - state is local to each connection. - - verbose on | off - With get will return the current verbose state, with set, sets the - verbose state. When in verbose mode is on, all set commands return - positive acknowledgement in the form SET ACK. In addition, - text error messages will be issued when in verbose mode. This state - is local to each connection. - - enable | off - With get will return On or Off to indicate whether the current connection - is enabled to perform control functions. With set and a valid password, - the current connection is enabled for control functions. "OFF" may not - be used as a password and disables control functions for this connection. - - config [TBD] - - comm_mode ascii | binary - With get, will return the current communications mode. With set, will - set the communications mode to the specified mode. The binary protocol - is TBD. - - comm_prot - With get, returns the current protocol version used by the server, - with set, sets the server to use the specified protocol version, - provided it is lower than or equal to the highest version number - supported by the server implementation. - - Comps [] - - Get only, returns all components beginning with the specified substring. - If no substring is specified then it returns all components. - - Pins [] - - Get only, returns all information about all pins beginning with the - specified substring. If no substring is specified then it returns all pins. - - PinVals [] - - Get only, returns only value information about all pins beginning with the - specified substring. If no substring is specified then it returns all pins. - - Signals [] - - Get only, returns all information about all signals beginning with the - specified substring. If no substring is specified then it returns all signals. - - SigVals [] - - Get only, returns only value information about all signals beginning with the - specified substring. If no substring is specified then it returns all pins. - - Params [] - - Get only, returns all information about all parameters beginning with the - specified substring. If no substring is specified then it returns all - parameters. - - ParamVals [] - - Get only, returns only value information about all parameters beginning with the - specified substring. If no substring is specified then it returns all pins - parameters. - - Functs [] - - Get only, returns all information about all functions beginning with the - specified substring. If no substring is specified then it returns all - functions. - - Threads - - Get only, returns all information about all functions. - - Comp - - Get only, returns the component matching the specified name. - - Pin - - Get only, returns all information about the pin matching the specified - name. - - PinVal - - Get only, returns the value of the pin matching the specified name. - - Sig - - Get only, returns all information about the pin matching the specified - name. - - SigVal - - Get only, returns just the value of the signal matching the specified - name. - - Param - - Get only, returns all information about the parameter matching the - specified name. - - ParamVal - - Get only, returns just the value of the parameter matching the specified - name. - - Funct - - Get only, returns all information about the parameter matching the - specified name. - - Thread - - Get only, returns all information about the thread matching the - specified name. - - LoadRt - - Set only, loads the real time executable specified by name. - - Unload - - Set only, unloads the executable specified by name. - - LoadUsr - - Set only, loads the user executable specified by name. - - Linkps - - Set only, links the specified pin to the specified signal. - - Linksp - - Set only, links the specified signal to the specified pin. - - Linkpp - - Set only, links the pin specified by pin 1 with the pin specified by pin 2. - - Net - - Set only, nets the specified net list. - - Unlinkp - - Set only, unlinks the specified pins - - Lock - - Unlock - - NewSig - - Set only, creates the signal specified by name and of type specified by type. - - DelSig - - Set only, deletes the signal specified by name. - - SetP - - Set only, sets the parameter specified by name to the value specified by value. - - SetS - - Set only, sets the signal specified by name to the value specified by value. - - AddF [] - - Set only, adds the function specified by name, to the thread specified by - thread, with the optional parameters specified by parameters. - - DelF - - Set only, deletes the function specified by name. - - Save - - Start - - Stop - -****************************************************************************/ - -#include "config.h" - -#define _REENTRANT - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "rtapi_math.h" -#include -#include -#include -#include -#include -#include -#include - -#include "rtapi.h" /* RTAPI realtime OS API */ -#include "hal.h" /* HAL public API decls */ -#include "hal_priv.h" /* private HAL decls */ -/* non-EMC related uses of halrmt may want to avoid libnml dependency */ -#ifndef NO_INI -#include "inifile.h" /* iniFind() from libnml */ -#endif - -/*********************************************************************** -* LOCAL FUNCTION DECLARATIONS * -************************************************************************/ - -/* These functions are used internally by this file. The code is at - the end of the file. */ - -#define MAX_TOK 20 -#define MAX_CMD_LEN 1024 -#define MAX_EXPECTED_SIGS 999 - -static int release_HAL_mutex(void); -static int do_help_cmd(char *command); -static int unloadrt_comp(char *mod_name); -static const char *data_type(int type); -static const char *pin_data_dir(int dir); -static const char *param_data_dir(int dir); -static const char *data_arrow1(int dir); -static const char *data_arrow2(int dir); -static char *data_value(int type, void *valptr); -static char *data_value2(int type, void *valptr); -static void save_comps(FILE *dst); -static void save_signals(FILE *dst); -static void save_links(FILE *dst, int arrows); -static void save_nets(FILE *dst, int arrows); -static void save_params(FILE *dst); -static void save_threads(FILE *dst); -static void print_help_general(int showR); - -/*********************************************************************** -* GLOBAL VARIABLES * -************************************************************************/ - -int comp_id = -1; /* -1 means hal_init() not called yet */ -int hal_flag = 0; /* used to indicate that halrmt might have the - hal mutex, so the sig handler can't just - exit, instead it must set 'done' */ -int done = 0; /* used to break out of processing loop */ -int linenumber=0; /* used to print linenumber on errors */ -int scriptmode = 0; /* used to make output "script friendly" (suppress headers) */ -int prompt_mode = 0; /* when getting input from stdin, print a prompt */ -char comp_name[HAL_NAME_LEN+1]; /* name for this instance of halrmt */ - -char pwd[16] = "EMC\0"; // Connect password -char enablePWD[16] = "EMCTOO\0"; // Enable password -char serverName[24] = "EMCNETSVR\0"; // Server name written in hello response -int sessions = 0; // Number of open sessions -int maxSessions = -1; // Maximum number of sessions to allow - -typedef struct { - int cliSock; - char hostName[80]; - char version[8]; - int linked; - int echo; - int verbose; - int enabled; - int commMode; - int commProt; - char inBuf[256]; - char outBuf[4096]; - char progName[256];} connectionRecType; - - -int port = 5006; -char errorStr[256]; - -int server_sockfd, client_sockfd; -socklen_t server_len, client_len; -struct sockaddr_in server_address; -struct sockaddr_in client_address; -int useSockets = 1; -int tokenIdx; -const char *delims = " \n\r\0"; -int connCount = -1; -int enabledConn = -1; - -typedef enum { - cmdHello, cmdSet, cmdGet, cmdQuit, cmdShutdown, cmdHelp, cmdUnknown} commandTokenType; - -typedef enum { - hcEcho, hcVerbose, hcEnable, hcConfig, hcCommMode, hcCommProt, - hcComps, hcPins, hcPinVals, hcSigs, hcSigVals, hcParams, hcParamVals, hcFuncts, hcThreads, - hcComp, hcPin, hcPinVal, hcSig, hcSigVal, hcParam, hcParamVal, hcFunct, hcThread, - hcLoadRt, hcUnload, hcLoadUsr, hcLinkps, hcLinksp, hcLinkpp, hcNet, hcUnlinkp, - hcLock, hcUnlock, hcNewSig, hcDelSig, hcSetP, hcSetS, hcAddF, hcDelF, - hcSave, hcStart, hcStop, hcUnknown - } halCommandType; - -typedef enum { - rtNoError, rtHandledNoError, rtStandardError, rtCustomError, rtCustomHandledError - } cmdResponseType; - -struct option longopts[] = { - {"port", 1, NULL, 'p'}, - {"name", 1, NULL, 'n'}, - {"sessions", 1, NULL, 's'}, - {"connectpw", 1, NULL, 'w'}, - {"enablepw", 1, NULL, 'e'}, - {0,0,0,0} -}; - -const char *commands[] = {"HELLO", "SET", "GET", "QUIT", "SHUTDOWN", "HELP", ""}; -const char *halCommands[] = { - "ECHO", "VERBOSE", "ENABLE", "CONFIG", "COMM_MODE", "COMM_PROT", - "COMPS", "PINS", "PINVALS", "SIGNALS", "SIGVALS", "PARAMS", "PARAMVALS", "FUNCTS", "THREADS", - "COMP", "PIN", "PINVAL", "SIGNAL", "SIGVAL", "PARAM", "PARAMVAL", "FUNCT", "THREAD", - "LOADRT", "UNLOAD", "LOADUSR", "LINKPS", "LINKSP", "LINKPP", "NET", "UNLINKP", - "LOCK", "UNLOCK", "NEWSIG", "DELSIG", "SETP", "SETS", "ADDF", "DELF", - "SAVE", "START", "STOP", ""}; - -#ifndef NO_INI - FILE *inifile = NULL; -#endif - - -/* signal handler */ -static void quit(int sig) -{ - if ( hal_flag ) { - /* this process might have the hal mutex, so just set the - 'done' flag and return, exit after mutex work finishes */ - done = 1; - } else { - /* don't have to worry about the mutex, but if we just - return, we might return into the fgets() and wait - all day instead of exiting. So we exit from here. */ - if ( comp_id > 0 ) { - hal_exit(comp_id); - } - _exit(1); - } -} - -static void strupr(char *s) -{ - int i; - - for (i = 0; i < (int)strlen(s); i++) - if (s[i] > 96 && s[i] <= 'z') - s[i] -= 32; -} - -static int initSockets() -{ - int optval = 1; - - server_sockfd = socket(AF_INET, SOCK_STREAM, 0); - setsockopt(server_sockfd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)); - server_address.sin_family = AF_INET; - server_address.sin_addr.s_addr = htonl(INADDR_ANY); - server_address.sin_port = htons(port); - server_len = sizeof(server_address); - bind(server_sockfd, (struct sockaddr *)&server_address, server_len); - listen(server_sockfd, 5); - signal(SIGCHLD, SIG_IGN); - return 0; -} - -static int sockWrite(connectionRecType *context) -{ - int ret; - strcat(context->outBuf, "\r\n"); - ret = write(context->cliSock, context->outBuf, strlen(context->outBuf)); - //FIXME return error based on ret, probably return (ret >= 0); - return 0; -} - -static void sockWriteError(const char *nakStr, connectionRecType *context) -{ - if (context->verbose == 1) - sprintf(context->outBuf, "%s %s", nakStr, errorStr); - else - sprintf(context->outBuf, "%s", nakStr); - sockWrite(context); -} - -pid_t hal_systemv_nowait(char *const argv[], connectionRecType *context) { - pid_t pid; - int n; - const char *nakStr = "SET LOADRT NAK"; - - /* now we need to fork, and then exec .... */ - /* disconnect from the HAL shmem area before forking */ - hal_exit(comp_id); - comp_id = 0; - /* now the fork() */ - pid = fork(); - if ( pid < 0 ) { - /* fork failed */ -// halcmd_error("fork() failed\n"); - /* reconnect to the HAL shmem area */ - comp_id = hal_init(comp_name); - if (comp_id < 0) { - fprintf(stderr, "halcmd: hal_init() failed after fork: %d\n", - comp_id ); - exit(-1); - } - hal_ready(comp_id); - return -1; - } - if ( pid == 0 ) { - /* child process */ - /* print debugging info if "very verbose" (-V) */ - for(n=0; argv[n] != NULL; n++) { - rtapi_print_msg(RTAPI_MSG_DBG, "%s ", argv[n] ); - } - if (n == 0) { - snprintf(errorStr, sizeof(errorStr), "hal_systemv_nowait: empty argv array passed in\n"); - sockWriteError(nakStr, context); - exit(1); - } - rtapi_print_msg(RTAPI_MSG_DBG, "\n" ); - /* call execv() to invoke command */ - execvp(argv[0], argv); - /* should never get here */ -// halcmd_error("execv(%s) failed\n", argv[0] ); - sprintf(errorStr, "execv(%s) failed", argv[0]); - sockWriteError(nakStr, context); - exit(1); - } - /* parent process */ - /* reconnect to the HAL shmem area */ - comp_id = hal_init(comp_name); - - return pid; -} - -int hal_systemv(char *const argv[], connectionRecType *context) { - pid_t pid; - int status; - int retval; - const char *nakStr = "SET LOADRT NAK"; - - /* do the fork */ - pid = hal_systemv_nowait(argv, context); - /* this is the parent process, wait for child to end */ - retval = waitpid ( pid, &status, 0 ); - retval = 0; - if (comp_id < 0) { - fprintf(stderr, "halcmd: hal_init() failed after systemv: %d\n", comp_id ); - exit(-1); - } - hal_ready(comp_id); - /* check result of waitpid() */ - if ( retval < 0 ) { -// halcmd_error("waitpid(%d) failed: %s\n", pid, strerror(errno) ); - sprintf(errorStr, "waitpid(%d) failed: %s", pid, strerror(errno)); - sockWriteError(nakStr, context); - return -1; - } - if ( WIFEXITED(status) == 0 ) { -// halcmd_error("child did not exit normally\n"); - sprintf(errorStr, "child did not exit normally"); - sockWriteError(nakStr, context); - return -1; - } - retval = WEXITSTATUS(status); - if ( retval != 0 ) { -// halcmd_error("exit value: %d\n", retval ); - sprintf(errorStr, "exit value: %d", retval); - sockWriteError(nakStr, context); - return -1; - } - return 0; -} - - -/*********************************************************************** -* LOCAL FUNCTION DEFINITIONS * -************************************************************************/ - -/* release_HAL_mutex() unconditionally releases the hal_mutex - very useful after a program segfaults while holding the mutex -*/ -static int release_HAL_mutex(void) -{ - int comp_id, mem_id, retval; - void *mem; - hal_data_t *hal_data; - - /* do RTAPI init */ - comp_id = rtapi_init("hal_unlocker"); - if (comp_id < 0) { - rtapi_print_msg(RTAPI_MSG_ERR, "ERROR: rtapi init failed\n"); - return -EINVAL; - } - /* get HAL shared memory block from RTAPI */ - mem_id = rtapi_shmem_new(HAL_KEY, comp_id, global_data->hal_size); - if (mem_id < 0) { - rtapi_print_msg(RTAPI_MSG_ERR, - "ERROR: could not open shared memory\n"); - rtapi_exit(comp_id); - return -EINVAL; - } - /* get address of shared memory area */ - retval = rtapi_shmem_getptr(mem_id, &mem, 0); - if (retval < 0) { - rtapi_print_msg(RTAPI_MSG_ERR, - "ERROR: could not access shared memory\n"); - rtapi_exit(comp_id); - return -EINVAL; - } - /* set up internal pointers to shared mem and data structure */ - hal_data = (hal_data_t *) mem; - /* release mutex */ - rtapi_mutex_give(&(hal_data->mutex)); - /* release RTAPI resources */ - rtapi_shmem_delete(mem_id, comp_id); - rtapi_exit(comp_id); - /* done */ - return 0; - -} - -static int doLock(char *command, connectionRecType *context) -{ - int retval=0; - const char *nakStr = "SET LOCK NAK"; - - /* if command is blank, want to lock everything */ - if (*command == '\0') - retval = hal_set_lock(HAL_LOCK_ALL); - else - if (strcmp(command, "none") == 0) - retval = hal_set_lock(HAL_LOCK_NONE); - else - if (strcmp(command, "tune") == 0) - retval = hal_set_lock(HAL_LOCK_LOAD & HAL_LOCK_CONFIG); - else - if (strcmp(command, "all") == 0) - retval = hal_set_lock(HAL_LOCK_ALL); - - if (retval != 0) { - sprintf(errorStr, "HAL:%d: Locking failed", linenumber); - sockWriteError(nakStr, context); - } - return retval; -} - -static int doUnlock(char *command, connectionRecType *context) -{ - int retval=0; - const char *nakStr = "SET UNLOCK NAK"; - - /* if command is blank, want to lock everything */ - if (*command == '\0') - retval = hal_set_lock(HAL_LOCK_NONE); - else - if (strcmp(command, "all") == 0) - retval = hal_set_lock(HAL_LOCK_NONE); - else - if (strcmp(command, "tune") == 0) - retval = hal_set_lock(HAL_LOCK_LOAD & HAL_LOCK_CONFIG); - - if (retval != 0) { - sprintf(errorStr, "HAL:%d: Unlocking failed", linenumber); - sockWriteError(nakStr, context); - } - return retval; -} - -static int doLinkpp(char *first_pin_name, char *second_pin_name, connectionRecType *context) -{ - int retval; - hal_pin_t *first_pin, *second_pin; - const char *nakStr = "SET LINKPP NAK"; - - rtapi_mutex_get(&(hal_data->mutex)); - /* check if the pins are there */ - first_pin = halpr_find_pin_by_name(first_pin_name); - second_pin = halpr_find_pin_by_name(second_pin_name); - if (first_pin == 0) { - /* first pin not found*/ - rtapi_mutex_give(&(hal_data->mutex)); - sprintf(errorStr, "HAL:%d: ERROR: pin '%s' not found\n", linenumber, first_pin_name); - sockWriteError(nakStr, context); - return -EINVAL; - } - else - if (second_pin == 0) { - rtapi_mutex_give(&(hal_data->mutex)); - sprintf(errorStr, "HAL:%d: ERROR: pin '%s' not found", linenumber, second_pin_name); - sockWriteError(nakStr, context); - return -EINVAL; - } - - /* give the mutex, as the other functions use their own mutex */ - rtapi_mutex_give(&(hal_data->mutex)); - - /* check that both pins have the same type, - don't want ot create a sig, which after that won't be usefull */ - if (first_pin->type != second_pin->type) { - sprintf(errorStr, "HAL:%d: ERROR: pins '%s' and '%s' not of the same type", - linenumber, first_pin_name, second_pin_name); - sockWriteError(nakStr, context); - return -EINVAL; - } - - /* now create the signal */ - retval = hal_signal_new(first_pin_name, first_pin->type); - - if (retval == 0) { - /* if it worked, link the pins to it */ - retval = hal_link(first_pin_name, first_pin_name); - - if ( retval == 0 ) - /* if that worked, link the second pin to the new signal */ - retval = hal_link(second_pin_name, first_pin_name); - } - if (retval < 0) { - sprintf(errorStr, "HAL:%d: linkpp failed", linenumber); - sockWriteError(nakStr, context); - } - return retval; -} - -int doLinkPS(char *pin, char *sig, connectionRecType *context) -{ - int retval; - const char *nakStr = "SET NET NAK"; - - retval = hal_link(pin, sig); - if (retval == 0) { - /* print success message */ -// halcmd_info("Pin '%s' linked to signal '%s'\n", pin, sig); - sprintf(errorStr, "Pin '%s' linked to signal '%s'", pin, sig); - sockWriteError(nakStr, context); - } else { -// halcmd_error("link failed\n"); - sprintf(errorStr, "link failed"); - sockWriteError(nakStr, context); - } - return retval; -} - - -static int preflightNet(char *signal, hal_sig_t *sig, char *pins[], connectionRecType *context) -{ - int i, type=-1, writers=0, bidirs=0, pincnt=0; - const char *nakStr = "SET NET NAK"; - - /* if signal already exists, use its info */ - if (sig) { - type = sig->type; - writers = sig->writers; - bidirs = sig->bidirs; - } - - for(i=0; pins[i] && *pins[i]; i++) { - hal_pin_t *pin = 0; - pin = halpr_find_pin_by_name(pins[i]); - if(!pin) { -// halcmd_error("pin '%s' does not exist\n", pins[i]); - sprintf(errorStr, "pin '%s' does not exist", pins[i]); - sockWriteError(nakStr, context); - return -ENOENT; - } - if(SHMPTR(pin->signal) == sig) { - /* Already on this signal */ - pincnt++; - continue; - } else if(pin->signal != 0) { -// halcmd_error("pin '%s' was already linked\n", pin->name); - sprintf(errorStr, "pin '%s' was already linked", pin->name); - sockWriteError(nakStr, context); - return -EINVAL; - } - if (type == -1) { - /* no pre-existing type, use this pin's type */ - type = pin->type; - } - if(type != pin->type) { -// halcmd_error("Type mismatch on pin '%s'\n", pin->name); - sprintf(errorStr, "Type mismatch on pin '%s'", pin->name); - sockWriteError(nakStr, context); - return -EINVAL; - } - if(pin->dir == HAL_OUT) { - if(writers || bidirs) { -// halcmd_error("Signal '%s' can not add OUT pin '%s'\n", signal, pin->name); - sprintf(errorStr, "Signal '%s' can not add OUT pin '%s'", signal, pin->name); - sockWriteError(nakStr, context); - return -EINVAL; - } - writers++; - } - if(pin->dir == HAL_IO) { - if(writers) { -// halcmd_error("Signal '%s' can not add I/O pin '%s'\n", signal, pin->name); - sprintf(errorStr, "Signal '%s' can not add I/O pin '%s'", signal, pin->name); - sockWriteError(nakStr, context); - return -EINVAL; - } - bidirs++; - } - pincnt++; - } - if(pincnt) - return 0; -// halcmd_error("'net' requires at least one pin, none given\n"); - sprintf(errorStr, "'net' requires at least one pin, none given"); - sockWriteError(nakStr, context); - return -EINVAL; -} - - -int doNet(char *signal, char *pins[], connectionRecType *context) -{ - hal_sig_t *sig; - int i, retval; - const char *nakStr = "SET NET NAK"; - - rtapi_mutex_get(&(hal_data->mutex)); - /* see if signal already exists */ - sig = halpr_find_sig_by_name(signal); - - /* verify that everything matches up (pin types, etc) */ - retval = preflightNet(signal, sig, pins, context); - if(retval < 0) { - rtapi_mutex_give(&(hal_data->mutex)); - return retval; - } - - { - hal_pin_t *pin = halpr_find_pin_by_name(signal); - if(pin) { -// halcmd_error("Signal name '%s' must not be the same as a pin.\n", signal); - sprintf(errorStr, "Signal name '%s' must not be the same as a pin.", signal); - sockWriteError(nakStr, context); - rtapi_mutex_give(&(hal_data->mutex)); - return -ENOENT; - } - } - if(!sig) { - /* Create the signal with the type of the first pin */ - hal_pin_t *pin = halpr_find_pin_by_name(pins[0]); - rtapi_mutex_give(&(hal_data->mutex)); - if(!pin) { - return -ENOENT; - } - retval = hal_signal_new(signal, pin->type); - } else { - /* signal already exists */ - rtapi_mutex_give(&(hal_data->mutex)); - } - /* add pins to signal */ - for(i=0; retval == 0 && pins[i] && *pins[i]; i++) { - retval = doLinkPS(pins[i], signal, context); - } - - return retval; -} - - -static int doLink(char *pin, char *sig, connectionRecType *context) -{ - int retval; - const char *nakStr = "SET LINKPS NAK"; - - /* if sig is blank, want to unlink pin */ - if (*sig == '\0') { - /* unlink the pin */ - retval = hal_unlink(pin); - } else { - /* make the link */ - retval = hal_link(pin, sig); - } - if (retval != 0) { - sprintf(errorStr, "HAL:%d: link failed", linenumber); - sockWriteError(nakStr, context); - } - return retval; -} - -static int doNewsig(char *name, char *type, connectionRecType *context) -{ - int retval; - const char *nakStr = "SET NEWSIG NAK"; - - if (strcasecmp(type, "bit") == 0) - retval = hal_signal_new(name, HAL_BIT); - else - if (strcasecmp(type, "float") == 0) - retval = hal_signal_new(name, HAL_FLOAT); - else - if (strcasecmp(type, "u16") == 0) - retval = hal_signal_new(name, HAL_U32); - else - if (strcasecmp(type, "s32") == 0) - retval = hal_signal_new(name, HAL_S32); - else { - sprintf(errorStr, "HAL:%d: Unknown signal type '%s'", - linenumber, type); - sockWriteError(nakStr, context); - retval = -EINVAL; - } - if (retval < 0) { - sprintf(errorStr, "HAL:%d: newsig failed", linenumber); - sockWriteError(nakStr, context); - } - return retval; -} - -static int set_common(hal_type_t type, void *d_ptr, char *value, connectionRecType *context) { - // This function assumes that the mutex is held - int retval = 0; - double fval; - long lval; - unsigned long ulval; - char *cp = value; - - switch (type) { - case HAL_BIT: - if ((strcmp("1", value) == 0) || (strcasecmp("TRUE", value) == 0)) { - *(hal_bit_t *) (d_ptr) = 1; - } else if ((strcmp("0", value) == 0) - || (strcasecmp("FALSE", value)) == 0) { - *(hal_bit_t *) (d_ptr) = 0; - } else { - retval = -EINVAL; - } - break; - case HAL_FLOAT: - fval = strtod ( value, &cp ); - if ((*cp != '\0') && (!isspace(*cp))) { - /* invalid character(s) in string */ - retval = -EINVAL; - } else { - *((hal_float_t *) (d_ptr)) = fval; - } - break; - case HAL_S32: - lval = strtol(value, &cp, 0); - if ((*cp != '\0') && (!isspace(*cp))) { - /* invalid chars in string */ - retval = -EINVAL; - } else { - *((hal_s32_t *) (d_ptr)) = lval; - } - break; - case HAL_U32: - ulval = strtoul(value, &cp, 0); - if ((*cp != '\0') && (!isspace(*cp))) { - /* invalid chars in string */ - retval = -EINVAL; - } else { - *((hal_u32_t *) (d_ptr)) = ulval; - } - break; - default: - /* Shouldn't get here, but just in case... */ - retval = -EINVAL; - } - return retval; -} - -static int doSetp(char *name, char *value, connectionRecType *context) -{ - const char *nakStr = "SET SETP NAK"; - int retval; - hal_param_t *param; - hal_pin_t *pin; - hal_type_t type; - void *d_ptr; - - /* get mutex before accessing shared data */ - rtapi_mutex_get(&(hal_data->mutex)); - /* search param list for name */ - param = halpr_find_param_by_name(name); - if (param == 0) { - pin = halpr_find_pin_by_name(name); - if(pin == 0) { - rtapi_mutex_give(&(hal_data->mutex)); - sprintf(errorStr, - "HAL:%d: ERROR: parameter or pin '%s' not found\n", linenumber, name); - sockWriteError(nakStr, context); - return -EINVAL; - } else { - /* found it */ - type = pin->type; - if(pin->dir == HAL_OUT) { - rtapi_mutex_give(&(hal_data->mutex)); - sprintf(errorStr, - "HAL:%d: ERROR: pin '%s' is not writable\n", linenumber, name); - sockWriteError(nakStr, context); - return -EINVAL; - } - if(pin->signal != 0) { - rtapi_mutex_give(&(hal_data->mutex)); - sprintf(errorStr, - "HAL:%d: ERROR: pin '%s' is connected to a signal\n", linenumber, name); - sockWriteError(nakStr, context); - return -EINVAL; - } - // d_ptr = (void*)SHMPTR(pin->dummysig); - d_ptr = (void*)&pin->dummysig; - } - } else { - /* found it */ - type = param->type; - /* is it read only? */ - if (param->dir == HAL_RO) { - rtapi_mutex_give(&(hal_data->mutex)); - rtapi_print_msg(RTAPI_MSG_ERR, - "HAL:%d: ERROR: param '%s' is not writable\n", linenumber, name); - return -EINVAL; - } - d_ptr = SHMPTR(param->data_ptr); - } - - retval = set_common(type, d_ptr, value, context); - - rtapi_mutex_give(&(hal_data->mutex)); - if (retval != 0) { - sprintf(errorStr, "HAL:%d: setp failed\n", linenumber); - sockWriteError(nakStr, context); - } - return retval; -} - -static int doSets(char *name, char *value, connectionRecType *context) -{ - const char *nakStr = "SET SETS NAK"; - int retval; - hal_sig_t *sig; - hal_type_t type; - void *d_ptr; - - /* get mutex before accessing shared data */ - rtapi_mutex_get(&(hal_data->mutex)); - /* search signal list for name */ - sig = halpr_find_sig_by_name(name); - if (sig == 0) { - rtapi_mutex_give(&(hal_data->mutex)); - sprintf(errorStr, - "HAL:%d: ERROR: signal '%s' not found\n", linenumber, name); - sockWriteError(nakStr, context); - return -EINVAL; - } - /* found it - does it have a writer? */ - if (sig->writers > 0) { - rtapi_mutex_give(&(hal_data->mutex)); - sprintf(errorStr, - "HAL:%d: ERROR: signal '%s' already has writer(s)\n", linenumber, name); - sockWriteError(nakStr, context); - return -EINVAL; - } - /* no writer, so we can safely set it */ - type = sig->type; - d_ptr = SHMPTR(sig->data_ptr); - retval = set_common(type, d_ptr, value, context); - rtapi_mutex_give(&(hal_data->mutex)); - if (retval != 0) { - sprintf(errorStr, "HAL:%d: sets failed\n", linenumber); - sockWriteError(nakStr, context); - } - return retval; -} - -static int doAddf(char *name, char *thread, char *parm, connectionRecType *context) -{ - int retval; - const char *nakStr = "SET ADDF NAK"; - - if (parm[0] == '\0') - /* no - add function at end of thread */ - retval = hal_add_funct_to_thread(name, thread, -1); - else - retval = hal_add_funct_to_thread(name, thread, atoi(parm)); - if (retval != 0) { - /* print fail message */ - sprintf(errorStr, "HAL:%d: Unable to add function '%s' to thread '%s'", linenumber, name, thread); - sockWriteError(nakStr, context); - } - return retval; -} - -static int doDelf(char *name, char *thread, connectionRecType *context) -{ - int retval; - const char *nakStr = "SET DELF NAK"; - - retval = hal_del_funct_from_thread(name, thread); - if (retval != 0) { - /* print success message */ - sprintf(errorStr, "Failed to remove function '%s' from thread '%s'", name, thread); - sockWriteError(nakStr, context); - } - return retval; -} - -static int doStart(connectionRecType *context) -{ - int retval; - const char *nakStr = "SET START NAK"; - - retval = hal_start_threads(); - if (retval != 0) { - /* print success message */ - sprintf(errorStr, "Failed to start realtime threads"); - sockWriteError(nakStr, context); - } - return retval; -} - -static int doStop(connectionRecType *context) -{ - int retval; - const char *nakStr = "SET STOP NAK"; - - retval = hal_stop_threads(); - if (retval != 0) { - /* print success message */ - sprintf(errorStr, "Unable to stop realtime threads"); - sockWriteError(nakStr, context); - } - return retval; -} - -static int doLoadRt(char *mod_name, char *args[], connectionRecType *context) -{ - char arg_string[MAX_CMD_LEN+1]; - int m=0, n=0, retval=0; - hal_comp_t *comp; - char *argv[MAX_TOK+3]; - char *cp1; - const char *nakStr = "SET LOADRT NAK"; - -#if defined(BUILD_SYS_USER_DSO) - char rtapi_app[PATH_MAX]; - - if (get_rtapi_config(rtapi_app,"rtapi_app",PATH_MAX) != 0) { - sprintf(errorStr,"Unable to read rtapi_app parameter " - "from configuration\n"); - sockWriteError(nakStr, context); - return -EINVAL; - } - - argv[m++] = "-Wn"; - argv[m++] = mod_name; - argv[m++] = rtapi_app; - argv[m++] = "load"; - argv[m++] = mod_name; - /* loop thru remaining arguments */ - while ( args[n] && args[n][0] != '\0' ) { - argv[m++] = args[n++]; - } - argv[m++] = NULL; -// retval = do_loadusr_cmd(argv); -#else - char mod_path[PATH_MAX]; - - if (hal_get_lock()&HAL_LOCK_LOAD) { - sprintf(errorStr, "HAL is locked, loading of modules is not permitted"); - sockWriteError(nakStr, context); - return -EPERM; - } - - /* get module path */ - if (module_path(mod_path,mod_name) != 0) { - /* can't find it */ - sprintf(errorStr, "Can't find module '%s'", mod_name); - sockWriteError(nakStr, context); - return -1; - } - - argv[0] = EMC2_BIN_DIR "/linuxcnc_module_helper"; - argv[1] = "insert"; - argv[2] = mod_path; - /* loop thru remaining arguments */ - n = 0; - m = 3; - while ( args[n] && args[n][0] != '\0' ) { - argv[m++] = args[n++]; - } - /* add a NULL to terminate the argv array */ - argv[m] = NULL; -/* sprintf(context->outBuf, "Setup argv %s %s %s", argv[0], argv[1], argv[2]); - sockWrite(context); - return 0; */ - - - retval = hal_systemv(argv, context); -#endif - - if ( retval != 0 ) { - sprintf(errorStr, "insmod failed, returned %d", retval); - sockWriteError(nakStr, context); - return -1; - } - /* make the args that were passed to the module into a single string */ - n = 0; - arg_string[0] = '\0'; - while ( args[n] && args[n][0] != '\0' ) { - strncat(arg_string, args[n++], MAX_CMD_LEN); - strncat(arg_string, " ", MAX_CMD_LEN); - } - /* allocate HAL shmem for the string */ - cp1 = hal_malloc(strlen(arg_string)+1); - if ( cp1 == NULL ) { - sprintf(errorStr, "failed to allocate memory for module args"); - sockWriteError(nakStr, context); - return -1; - } - /* copy string to shmem */ - strcpy (cp1, arg_string); - /* get mutex before accessing shared data */ - rtapi_mutex_get(&(hal_data->mutex)); - /* search component list for the newly loaded component */ - comp = halpr_find_comp_by_name(mod_name); - if (comp == 0) { - rtapi_mutex_give(&(hal_data->mutex)); - sprintf(errorStr, "module '%s' not loaded", mod_name); - sockWriteError(nakStr, context); - return -EINVAL; - } - /* link args to comp struct */ - comp->insmod_args = SHMOFF(cp1); - rtapi_mutex_give(&(hal_data->mutex)); - /* print success message */ -// halcmd_info("Realtime module '%s' loaded\n", mod_name); - return 0; -} - -static int doDelsig(char *mod_name, connectionRecType *context) -{ - int next, retval, retval1, n; - hal_sig_t *sig; - char sigs[MAX_EXPECTED_SIGS][HAL_NAME_LEN+1]; - const char *nakStr = "SET DELSIG NAK"; - - /* check for "all" */ - if ( strcmp(mod_name, "all" ) != 0 ) { - retval = hal_signal_delete(mod_name); - return retval; - } - else { - /* build a list of signal(s) to delete */ - n = 0; - rtapi_mutex_get(&(hal_data->mutex)); - - next = hal_data->sig_list_ptr; - while (next != 0) { - sig = SHMPTR(next); - /* we want to unload this signal, remember it's name */ - if (n < ( MAX_EXPECTED_SIGS - 1)) { - strncpy(sigs[n], sig->name, HAL_NAME_LEN ); - sigs[n][HAL_NAME_LEN] = '\0'; - n++; - } - next = sig->next_ptr; - } - rtapi_mutex_give(&(hal_data->mutex)); - sigs[n][0] = '\0'; - - if ((sigs[0][0] == '\0')) { - /* desired signals not found */ - sprintf(errorStr, "HAL:%d: ERROR: no signals found to be deleted", linenumber); - sockWriteError(nakStr, context); - return -1; - } - /* we now have a list of components, unload them */ - n = 0; - retval1 = 0; - while (sigs[n][0] != '\0') { - retval = hal_signal_delete(sigs[n]); - /* check for fatal error */ - if (retval < -1) - return retval; - /* check for other error */ - if (retval != 0) - retval1 = retval; - n++; - } - } - return retval1; -} - -static int doUnload(char *mod_name, connectionRecType *context) -{ - int next, retval, retval1, n, all; - hal_comp_t *comp; - char comps[64][HAL_NAME_LEN+1]; - const char *nakStr = "SET UNLOAD NAK"; - - /* check for "all" */ - if ( strcmp(mod_name, "all" ) == 0 ) { - all = 1; - } else { - all = 0; - } - /* build a list of component(s) to unload */ - n = 0; - rtapi_mutex_get(&(hal_data->mutex)); - next = hal_data->comp_list_ptr; - while (next != 0) { - comp = SHMPTR(next); - if ( comp->type == 1 ) { - /* found a realtime component */ - if ( all || ( strcmp(mod_name, comp->name) == 0 )) { - /* we want to unload this component, remember its name */ - if ( n < 63 ) { - strncpy(comps[n], comp->name, HAL_NAME_LEN ); - comps[n][HAL_NAME_LEN] = '\0'; - n++; - } - } - } - next = comp->next_ptr; - } - rtapi_mutex_give(&(hal_data->mutex)); - /* mark end of list */ - comps[n][0] = '\0'; - if ( !all && ( comps[0][0] == '\0' )) { - /* desired component not found */ -// halcmd_error("component '%s' is not loaded\n", mod_name); - sprintf(errorStr, "component '%s' is not loaded", mod_name); - sockWriteError(nakStr, context); - return -1; - } - /* we now have a list of components, unload them */ - n = 0; - retval1 = 0; - while ( comps[n][0] != '\0' ) { - retval = unloadrt_comp(comps[n++]); - /* check for fatal error */ - if ( retval < -1 ) { - return retval; - } - /* check for other error */ - if ( retval != 0 ) { - retval1 = retval; - } - } -/* if (retval1 < 0) { - sprintf(errorStr, "unloadrt failed"); - sockWriteError(nakStr, context); - } */ - return retval1; -} - -static int unloadrt_comp(char *mod_name) -{ - int retval, status; - char *argv[4]; - pid_t pid; - - /* now we need to fork, and then exec rmmod.... */ - /* disconnect from the HAL shmem area before forking */ - hal_exit(comp_id); - comp_id = 0; - /* now the fork() */ - pid = fork(); - if ( pid < 0 ) { - rtapi_print_msg(RTAPI_MSG_ERR, - "HAL:%d: ERROR: unloadrt fork() failed\n", linenumber); - /* reconnect to the HAL shmem area */ - comp_id = hal_init(comp_name); - if (comp_id < 0) { - fprintf(stderr, "halrmt: hal_init() failed after fork: %d\n", - comp_id); - exit(-1); - } - hal_ready(comp_id); - return -1; - } - if ( pid == 0 ) { - /* this is the child process - prepare to exec() rmmod */ - argv[0] = EMC2_BIN_DIR "/linuxcnc_module_helper"; - argv[1] = "remove"; - argv[2] = mod_name; - /* add a NULL to terminate the argv array */ - argv[3] = NULL; - /* print debugging info if "very verbose" (-V) */ - rtapi_print_msg(RTAPI_MSG_DBG, "%s %s %s\n", argv[0], argv[1], argv[2] ); - /* call execv() to invoke rmmod */ - execv(argv[0], argv); - /* should never get here */ - rtapi_print_msg(RTAPI_MSG_ERR, - "HAL:%d: ERROR: execv(%s) failed\n", linenumber, argv[0] ); - exit(1); - } - /* this is the parent process, wait for child to end */ - retval = waitpid ( pid, &status, 0 ); - /* reconnect to the HAL shmem area */ - comp_id = hal_init(comp_name); - if (comp_id < 0) { - fprintf(stderr, "halrmt: hal_init() failed after unloadrt: %d\n", - comp_id ); - exit(-1); - } - hal_ready(comp_id); - /* check result of waitpid() */ - if ( retval < 0 ) { - rtapi_print_msg(RTAPI_MSG_ERR, - "HAL:%d: ERROR: waitpid(%d) failed\n", linenumber, pid); - return -1; - } - if ( WIFEXITED(status) == 0 ) { - rtapi_print_msg(RTAPI_MSG_ERR, - "HAL:%d: ERROR: child did not exit normally\n", linenumber); - return -1; - } - retval = WEXITSTATUS(status); - if ( retval != 0 ) { - rtapi_print_msg(RTAPI_MSG_ERR, - "HAL:%d: ERROR: rmmod failed, returned %d\n", linenumber, retval); - return -1; - } - /* print success message */ - rtapi_print_msg(RTAPI_MSG_INFO, "Realtime module '%s' unloaded\n", - mod_name); - return 0; -} - -static int doLoadUsr(char *args[]) -{ - int wait_flag, wait_comp_flag, name_flag, ignore_flag; - char *prog_name, *new_comp_name; - char prog_path[MAX_CMD_LEN+1]; - char *cp1, *cp2, *envpath; - struct stat stat_buf; - char *argv[MAX_TOK+1]; - int n, m, retval, status; - pid_t pid; - - if (hal_get_lock()&HAL_LOCK_LOAD) { - rtapi_print_msg(RTAPI_MSG_ERR, - "HAL:%d: ERROR: HAL is locked, loading of programs is not permitted\n", linenumber); - return -EPERM; - } - /* check for options (-w, -i, and/or -r) */ - wait_flag = 0; - wait_comp_flag = 0; - name_flag = 0; - ignore_flag = 0; - prog_name = NULL; - while ( **args == '-' ) { - /* this argument contains option(s) */ - cp1 = *args; - cp1++; - while ( *cp1 != '\0' ) { - if ( *cp1 == 'w' ) { - wait_flag = 1; - } else if ( *cp1 == 'W' ) { - wait_comp_flag = 1; - } else if ( *cp1 == 'i' ) { - ignore_flag = 1; - } else if ( *cp1 == 'n' ) { - name_flag = 1; - } else { - rtapi_print_msg(RTAPI_MSG_ERR, - "HAL:%d: ERROR: unknown loadusr option '-%c'\n", linenumber, *cp1); - return -EINVAL; - } - cp1++; - } - /* move to next arg */ - args++; - } - /* get program and component name */ - if(name_flag) { - new_comp_name = *args++; - prog_name = *args++; - } else { - new_comp_name = prog_name = *args++; - } - /* need to find path to a program matching "prog_name" */ - prog_path[0] = '\0'; - if ( prog_path[0] == '\0' ) { - /* try the name by itself */ - strncpy (prog_path, prog_name, MAX_CMD_LEN); - rtapi_print_msg(RTAPI_MSG_DBG, "Trying '%s'\n", prog_path); - if ( stat(prog_path, &stat_buf) != 0 ) { - /* no luck, clear prog_path to indicate failure */ - prog_path[0] = '\0'; - } - } - if ( prog_path[0] == '\0' ) { - /* no luck yet, try the emc2/bin directory where - the halrmt executable is located */ - n = readlink("/proc/self/exe", prog_path, MAX_CMD_LEN-10); - if ( n > 0 ) { - prog_path[n] = '\0'; - /* have path to executabie, find last '/' */ - cp2 = ""; - cp1 = prog_path; - while ( *cp1 != '\0' ) { - if ( *cp1 == '/' ) { - cp2 = cp1; - } - cp1++; - } - if ( *cp2 == '/' ) { - /* chop "halrmt" from end of path */ - *(++cp2) = '\0'; - /* append the program name */ - strncat(prog_path, prog_name, MAX_CMD_LEN-strlen(prog_path)); - /* and try it */ - rtapi_print_msg(RTAPI_MSG_DBG, "Trying '%s'\n", prog_path); - if ( stat(prog_path, &stat_buf) != 0 ) { - /* no luck, clear prog_path to indicate failure */ - prog_path[0] = '\0'; - } - } - } - } - if ( prog_path[0] == '\0' ) { - /* no luck yet, try the user's PATH */ - envpath = getenv("PATH"); - if ( envpath != NULL ) { - while ( *envpath != '\0' ) { - /* copy a single directory from the PATH env variable */ - n = 0; - while ( (*envpath != ':') && (*envpath != '\0') && (n < MAX_CMD_LEN)) { - prog_path[n++] = *envpath++; - } - /* append '/' and program name */ - if ( n < MAX_CMD_LEN ) { - prog_path[n++] = '/'; - } - cp1 = prog_name; - while ((*cp1 != '\0') && ( n < MAX_CMD_LEN)) { - prog_path[n++] = *cp1++; - } - prog_path[n] = '\0'; - rtapi_print_msg(RTAPI_MSG_DBG, "Trying '%s'\n", prog_path); - if ( stat(prog_path, &stat_buf) != 0 ) { - /* no luck, clear prog_path to indicate failure */ - prog_path[0] = '\0'; - /* and get ready to try the next directory */ - if ( *envpath == ':' ) { - envpath++; - } - } else { - /* success, break out of loop */ - break; - } - } - } - } - if ( prog_path[0] == '\0' ) { - /* still can't find a program to run */ - rtapi_print_msg(RTAPI_MSG_ERR, - "HAL:%d: ERROR: Can't find program '%s'\n", linenumber, prog_name); - return -1; - } - - /* now we need to fork, and then exec the program.... */ - /* disconnect from the HAL shmem area before forking */ - hal_exit(comp_id); - comp_id = 0; - /* now the fork() */ - pid = fork(); - if ( pid < 0 ) { - rtapi_print_msg(RTAPI_MSG_ERR, - "HAL:%d: ERROR: loadusr fork() failed\n", linenumber); - /* reconnect to the HAL shmem area */ - comp_id = hal_init(comp_name); - if (comp_id < 0) { - fprintf(stderr, "halrmt: hal_init() failed after fork: %d\n", - comp_id); - exit(-1); - } - hal_ready(comp_id); - return -1; - } - if ( pid == 0 ) { - /* this is the child process - prepare to exec() the program */ - argv[0] = prog_name; - /* loop thru remaining arguments */ - n = 0; - m = 1; - while ( args[n][0] != '\0' ) { - argv[m++] = args[n++]; - } - /* add a NULL to terminate the argv array */ - argv[m] = NULL; - /* print debugging info if "very verbose" (-V) */ - rtapi_print_msg(RTAPI_MSG_DBG, "%s ", argv[0] ); - n = 1; - while ( argv[n] != NULL ) { - rtapi_print_msg(RTAPI_MSG_DBG, "%s ", argv[n++] ); - } - rtapi_print_msg(RTAPI_MSG_DBG, "\n" ); - /* call execv() to invoke the program */ - execv(prog_path, argv); - /* should never get here */ - rtapi_print_msg(RTAPI_MSG_ERR, - "HAL:%d: ERROR: execv(%s) failed: %s\n", linenumber, prog_name, - strerror(errno)); - exit(1); - } - /* this is the parent process, reconnect to the HAL shmem area */ - comp_id = hal_init(comp_name); - if (comp_id < 0) { - fprintf(stderr, "halrmt: hal_init() failed after loadusr: %d\n", - comp_id); - exit(-1); - } - hal_ready(comp_id); - if ( wait_comp_flag ) { - int ready = 0, count=0; - int next; - while(!ready) { - struct timespec ts = {0, 10 * 1000 * 1000}; // 10ms - nanosleep(&ts, NULL); - retval = waitpid( pid, &status, WNOHANG ); - if(retval != 0) goto wait_common; - - rtapi_mutex_get(&(hal_data->mutex)); - next = hal_data->comp_list_ptr; - while(next) { - hal_comp_t *comp = SHMPTR(next); - next = comp->next_ptr; - if(strcmp(comp->name, new_comp_name) == 0 && (comp->state > COMP_INITIALIZING)) { - ready = 1; - break; - } - } - rtapi_mutex_give(&(hal_data->mutex)); - - count++; - if(count == 100) { - fprintf(stderr, "Waiting for component '%s' to become ready.", - new_comp_name); - fflush(stderr); - } else if(count > 100 && count % 10 == 0) { - fprintf(stderr, "."); - fflush(stderr); - } - } - if (count >= 100) { - fprintf(stderr, "\n"); - } - rtapi_print_msg(RTAPI_MSG_INFO, "Component '%s' ready\n", new_comp_name); - } - if ( wait_flag ) { - /* wait for child process to complete */ - retval = waitpid ( pid, &status, 0 ); - /* check result of waitpid() */ -wait_common: - if ( retval < 0 ) { - rtapi_print_msg(RTAPI_MSG_ERR, - "HAL:%d: ERROR: waitpid(%d) failed\n", linenumber, pid); - return -1; - } - if ( WIFEXITED(status) == 0 ) { - rtapi_print_msg(RTAPI_MSG_ERR, - "HAL:%d: ERROR: program '%s' did not exit normally\n", linenumber, prog_name ); - return -1; - } - if ( ignore_flag == 0 ) { - retval = WEXITSTATUS(status); - if ( retval != 0 ) { - rtapi_print_msg(RTAPI_MSG_ERR, - "HAL:%d: ERROR: program '%s' failed, returned %d\n", linenumber, prog_name, retval ); - return -1; - } - } - /* print success message */ - rtapi_print_msg(RTAPI_MSG_INFO, "Program '%s' finished\n", prog_name); - } else { - /* print success message */ - rtapi_print_msg(RTAPI_MSG_INFO, "Program '%s' started\n", prog_name); - } - return 0; -} - -static void getCompInfo(char *pattern, connectionRecType *context) -{ - int next, len; - hal_comp_t *comp; - - rtapi_mutex_get(&(hal_data->mutex)); - len = strlen(pattern); - next = hal_data->comp_list_ptr; - while (next != 0) { - comp = SHMPTR(next); - if (strncmp(pattern, comp->name, len) == 0) { - sprintf(context->outBuf, "COMP %s %02d %s", comp->name, comp->comp_id, (comp->type ? "RT " : "User")); - sockWrite(context); - } - next = comp->next_ptr; - } - rtapi_mutex_give(&(hal_data->mutex)); -} - - -static void getPinInfo(char *pattern, int valuesOnly, connectionRecType *context) -{ - int next, len; - hal_pin_t *pin; - hal_comp_t *comp; - hal_sig_t *sig; - void *dptr; - - rtapi_mutex_get(&(hal_data->mutex)); - len = strlen(pattern); - next = hal_data->pin_list_ptr; - while (next != 0) { - pin = SHMPTR(next); - if (strncmp(pattern, pin->name, len) == 0) { - comp = halpr_find_owning_comp(pin->owner_id); - if (pin->signal != 0) { - sig = SHMPTR(pin->signal); - dptr = SHMPTR(sig->data_ptr); - } - else { - sig = 0; - dptr = &(pin->dummysig); - } - if (valuesOnly == 0) - sprintf(context->outBuf, "PIN %s %s %02d %s %s", - pin->name, - data_value2((int) pin->type, dptr), - comp->comp_id, - data_type((int) pin->type), - pin_data_dir((int) pin->dir)); - else - sprintf(context->outBuf, "PINVAL %s %s", - pin->name, - data_value2((int) pin->type, dptr)); - sockWrite(context); - } - next = pin->next_ptr; - } - rtapi_mutex_give(&(hal_data->mutex)); -} - - -static void getSigInfo(char *pattern, int valuesOnly, connectionRecType *context) -{ - int next, len; - hal_sig_t *sig; - void *dptr; - - rtapi_mutex_get(&(hal_data->mutex)); - len = strlen(pattern); - next = hal_data->sig_list_ptr; - while (next != 0) { - sig = SHMPTR(next); - if (strncmp(pattern, sig->name, len) == 0) { - dptr = SHMPTR(sig->data_ptr); - if (valuesOnly == 0) - sprintf(context->outBuf, "SIGNAL %s %s %s", - sig->name, - data_value((int) sig->type, dptr), - data_type((int) sig->type)); - else - sprintf(context->outBuf, "SIGNALVAL %s %s", sig->name, data_value((int) sig->type, dptr)); - sockWrite(context); - } - next = sig->next_ptr; - } - rtapi_mutex_give(&(hal_data->mutex)); -} - -static void getParamInfo(char *pattern, int valuesOnly, connectionRecType *context) -{ - int next, len; - hal_param_t *param; - hal_comp_t *comp; - - rtapi_mutex_get(&(hal_data->mutex)); - len = strlen(pattern); - next = hal_data->param_list_ptr; - while (next != 0) { - param = SHMPTR(next); - if ( strncmp(pattern, param->name, len) == 0 ) { - comp = halpr_find_owning_comp(param->owner_id); - if (valuesOnly == 0) - sprintf(context->outBuf, "PARAM %s %s %02d %s %s", - param->name, - data_value((int) param->type, SHMPTR(param->data_ptr)), - comp->comp_id, - data_type((int) param->type), - param_data_dir((int) param->dir)); - else - sprintf(context->outBuf, "PARAMVAL %s %s", - param->name, - data_value((int) param->type, SHMPTR(param->data_ptr))); - sockWrite(context); - } - next = param->next_ptr; - } - rtapi_mutex_give(&(hal_data->mutex)); -} - -static void getFunctInfo(char *pattern, connectionRecType *context) -{ - int next, len; - hal_funct_t *fptr; - hal_comp_t *comp; - - rtapi_mutex_get(&(hal_data->mutex)); - len = strlen(pattern); - next = hal_data->funct_list_ptr; - while (next != 0) { - fptr = SHMPTR(next); - if (strncmp(pattern, hh_get_name(&fptr->hdr), len) == 0) { - comp = halpr_find_owning_comp(hh_get_owner_id(&fptr->hdr)); - sprintf(context->outBuf, "FUNCT %s %02d %08lX %08lX %s %3d", - hh_get_name(&fptr->hdr), - comp->comp_id, - (unsigned long)fptr->funct.l, - (unsigned long)fptr->arg, - (fptr->uses_fp ? "YES" : "NO"), - fptr->users); - sockWrite(context); - } - next = fptr->next_ptr; - } - rtapi_mutex_give(&(hal_data->mutex)); -} - -static void getThreadInfo(char *pattern, connectionRecType *context) -{ - int next_thread, len, n; - hal_thread_t *tptr; - hal_list_t *list_root, *list_entry; - hal_funct_entry_t *fentry; - hal_funct_t *funct; - - rtapi_mutex_get(&(hal_data->mutex)); - len = strlen(pattern); - next_thread = hal_data->thread_list_ptr; - while (next_thread != 0) { - tptr = SHMPTR(next_thread); - if (strncmp(pattern, tptr->name, len) == 0) { - sprintf(context->outBuf, "THREAD %s %11d %s %d %d", - tptr->name, - (unsigned int)tptr->period, - (tptr->uses_fp ? "YES" : "NO "), - (unsigned int)tptr->runtime, - (unsigned int)tptr->maxtime); - sockWrite(context); - list_root = &(tptr->funct_list); - list_entry = dlist_next(list_root); - n = 1; - while (list_entry != list_root) { - /* print the function info */ - fentry = (hal_funct_entry_t *) list_entry; - funct = SHMPTR(fentry->funct_ptr); - /* scriptmode only uses one line per thread, which contains: - thread period, FP flag, name, then all functs separated by spaces */ - sprintf(context->outBuf, "SUBTHREAD %s %2d", funct->name, n); - sockWrite(context); - n++; - list_entry = dlist_next(list_entry); - } - } - next_thread = tptr->next_ptr; - } - rtapi_mutex_give(&(hal_data->mutex)); -} - - -/* Switch function for pin/sig/param type for the print_*_list functions */ -static const char *data_type(int type) -{ - const char *type_str; - - switch (type) { - case HAL_BIT: - type_str = "bit "; - break; - case HAL_FLOAT: - type_str = "float"; - break; - case HAL_S32: - type_str = "s32 "; - break; - case HAL_U32: - type_str = "u32 "; - break; - default: - /* Shouldn't get here, but just in case... */ - type_str = "undef"; - } - return type_str; -} - -/* Switch function for pin direction for the print_*_list functions */ -static const char *pin_data_dir(int dir) -{ - const char *pin_dir; - - switch (dir) { - case HAL_IN: - pin_dir = "IN "; - break; - case HAL_OUT: - pin_dir = "OUT"; - break; - case HAL_IO: - pin_dir = "I/O"; - break; - default: - /* Shouldn't get here, but just in case... */ - pin_dir = "???"; - } - return pin_dir; -} - -/* Switch function for param direction for the print_*_list functions */ -static const char *param_data_dir(int dir) -{ - const char *param_dir; - - switch (dir) { - case HAL_RO: - param_dir = "RO"; - break; - case HAL_RW: - param_dir = "RW"; - break; - default: - /* Shouldn't get here, but just in case... */ - param_dir = "??"; - } - return param_dir; -} - -/* Switch function for arrow direction for the print_*_list functions */ -static const char *data_arrow1(int dir) -{ - const char *arrow; - - switch (dir) { - case HAL_IN: - arrow = "<=="; - break; - case HAL_OUT: - arrow = "==>"; - break; - case HAL_IO: - arrow = "<=>"; - break; - default: - /* Shouldn't get here, but just in case... */ - arrow = "???"; - } - return arrow; -} - -/* Switch function for arrow direction for the print_*_list functions */ -static const char *data_arrow2(int dir) -{ - const char *arrow; - - switch (dir) { - case HAL_IN: - arrow = "==>"; - break; - case HAL_OUT: - arrow = "<=="; - break; - case HAL_IO: - arrow = "<=>"; - break; - default: - /* Shouldn't get here, but just in case... */ - arrow = "???"; - } - return arrow; -} - -/* Switch function to return var value for the print_*_list functions */ -/* the value is printed in a fixed width field */ -static char *data_value(int type, void *valptr) -{ - char *value_str; - static char buf[15]; - - switch (type) { - case HAL_BIT: - if (*((char *) valptr) == 0) - value_str = " FALSE"; - else - value_str = " TRUE"; - break; - case HAL_FLOAT: - snprintf(buf, 14, "%12.7g", (double)*((hal_float_t *) valptr)); - value_str = buf; - break; - case HAL_S32: - snprintf(buf, 14, " %10ld", (long)*((hal_u32_t *) valptr)); - value_str = buf; - break; - case HAL_U32: - snprintf(buf, 14, " %08lX", (unsigned long)*((hal_u32_t *) valptr)); - value_str = buf; - break; - default: - /* Shouldn't get here, but just in case... */ - value_str = " undef "; - } - return value_str; -} - -/* Switch function to return var value in string form */ -/* the value is printed as a packed string (no whitespace */ -static char *data_value2(int type, void *valptr) -{ - char *value_str; - static char buf[15]; - - switch (type) { - case HAL_BIT: - if (*((char *) valptr) == 0) - value_str = "FALSE"; - else - value_str = "TRUE"; - break; - case HAL_FLOAT: - snprintf(buf, 14, "%.7g", (double)*((hal_float_t *) valptr)); - value_str = buf; - break; - case HAL_S32: - snprintf(buf, 14, "%ld", (long)*((hal_s32_t *) valptr)); - value_str = buf; - break; - case HAL_U32: - snprintf(buf, 14, "%ld", (unsigned long)*((hal_u32_t *) valptr)); - value_str = buf; - break; - default: - /* Shouldn't get here, but just in case... */ - value_str = "unknown_type"; - } - return value_str; -} - -static int doSave(char *type, char *filename, connectionRecType *context) -{ - FILE *dst; - const char *nakStr = "SET SAVE NAK"; - - if (rtapi_get_msg_level() == RTAPI_MSG_NONE) { - /* must be -Q, don't print anything */ - return 0; - } - if (*filename == '\0' ) - dst = stdout; - else { - dst = fopen(filename, "w" ); - if (dst == NULL) { - sprintf(errorStr, "HAL:%d: Can't open 'save' destination '%s'", linenumber, filename); - sockWriteError(nakStr, context); - return -1; - } - } - if (*type == '\0') - type = "all"; - if (strcmp(type, "all" ) == 0) { - /* save everything */ - save_comps(dst); - save_signals(dst); - save_links(dst, 0); - save_params(dst); - save_threads(dst); - } - else - if (strcmp(type, "comp") == 0) - save_comps(dst); - else - if (strcmp(type, "sig") == 0) - save_signals(dst); - else - if (strcmp(type, "link") == 0) - save_links(dst, 0); - else - if (strcmp(type, "linka") == 0) - save_links(dst, 1); - else - if (strcmp(type, "net") == 0) - save_nets(dst, 0); - else - if (strcmp(type, "neta") == 0) - save_nets(dst, 1); - else - if (strcmp(type, "param") == 0) - save_params(dst); - else - if (strcmp(type, "thread") == 0) - save_threads(dst); - else { - sprintf(errorStr, "HAL:%d: Unknown 'save' type '%s'", linenumber, type); - sockWriteError(nakStr, context); - fclose(dst); - return -1; - } - if (*filename != '\0' ) - fclose(dst); - return 0; -} - -static void save_comps(FILE *dst) -{ - int next; - hal_comp_t *comp; - - fprintf(dst, "# components\n"); - rtapi_mutex_get(&(hal_data->mutex)); - next = hal_data->comp_list_ptr; - while (next != 0) { - comp = SHMPTR(next); - if ( comp->type == 1 ) { - /* only print realtime components */ - if ( comp->insmod_args == 0 ) { - fprintf(dst, "#loadrt %s (not loaded by loadrt, no args saved)\n", comp->name); - } else { - fprintf(dst, "loadrt %s %s\n", comp->name, - (char *)SHMPTR(comp->insmod_args)); - } - } - next = comp->next_ptr; - } - rtapi_mutex_give(&(hal_data->mutex)); -} - -static void save_signals(FILE *dst) -{ - int next; - hal_sig_t *sig; - - fprintf(dst, "# signals\n"); - rtapi_mutex_get(&(hal_data->mutex)); - next = hal_data->sig_list_ptr; - while (next != 0) { - sig = SHMPTR(next); - fprintf(dst, "newsig %s %s\n", sig->name, data_type((int) sig->type)); - next = sig->next_ptr; - } - rtapi_mutex_give(&(hal_data->mutex)); -} - -static void save_links(FILE *dst, int arrow) -{ - int next; - hal_pin_t *pin; - hal_sig_t *sig; - const char *arrow_str; - - fprintf(dst, "# links\n"); - rtapi_mutex_get(&(hal_data->mutex)); - next = hal_data->pin_list_ptr; - while (next != 0) { - pin = SHMPTR(next); - if (pin->signal != 0) { - sig = SHMPTR(pin->signal); - if (arrow != 0) { - arrow_str = data_arrow1((int) pin->dir); - } else { - arrow_str = "\0"; - } - fprintf(dst, "linkps %s %s %s\n", pin->name, arrow_str, sig->name); - } - next = pin->next_ptr; - } - rtapi_mutex_give(&(hal_data->mutex)); -} - -static void save_nets(FILE *dst, int arrow) -{ - int next; - hal_pin_t *pin; - hal_sig_t *sig; - const char *arrow_str; - - fprintf(dst, "# nets\n"); - rtapi_mutex_get(&(hal_data->mutex)); - next = hal_data->sig_list_ptr; - while (next != 0) { - sig = SHMPTR(next); - fprintf(dst, "newsig %s %s\n", sig->name, data_type((int) sig->type)); - pin = halpr_find_pin_by_sig(sig, 0); - while (pin != 0) { - if (arrow != 0) { - arrow_str = data_arrow2((int) pin->dir); - } else { - arrow_str = "\0"; - } - fprintf(dst, "linksp %s %s %s\n", sig->name, arrow_str, pin->name); - pin = halpr_find_pin_by_sig(sig, pin); - } - next = sig->next_ptr; - } - rtapi_mutex_give(&(hal_data->mutex)); -} - -static void save_params(FILE *dst) -{ - int next; - hal_param_t *param; - - fprintf(dst, "# parameter values\n"); - rtapi_mutex_get(&(hal_data->mutex)); - next = hal_data->param_list_ptr; - while (next != 0) { - param = SHMPTR(next); - if (param->dir != HAL_RO) { - /* param is writable, save it's value */ - fprintf(dst, "setp %s %s\n", param->name, - data_value((int) param->type, SHMPTR(param->data_ptr))); - } - next = param->next_ptr; - } - rtapi_mutex_give(&(hal_data->mutex)); -} - -static void save_threads(FILE *dst) -{ - int next_thread; - hal_thread_t *tptr; - hal_list_t *list_root, *list_entry; - hal_funct_entry_t *fentry; - hal_funct_t *funct; - - fprintf(dst, "# realtime thread/function links\n"); - rtapi_mutex_get(&(hal_data->mutex)); - next_thread = hal_data->thread_list_ptr; - while (next_thread != 0) { - tptr = SHMPTR(next_thread); - list_root = &(tptr->funct_list); - list_entry = dlist_next(list_root); - while (list_entry != list_root) { - /* print the function info */ - fentry = (hal_funct_entry_t *) list_entry; - funct = SHMPTR(fentry->funct_ptr); - fprintf(dst, "addf %s %s\n", funct->name, tptr->name); - list_entry = dlist_next(list_entry); - } - next_thread = tptr->next_ptr; - } - rtapi_mutex_give(&(hal_data->mutex)); -} - -static int do_help_cmd(char *command) -{ - - if (strcmp(command, "help") == 0) { - printf("If you need help to use 'help', then I can't help you.\n"); - } else if (strcmp(command, "loadrt") == 0) { - printf("loadrt modname [modarg(s)]\n"); - printf(" Loads realtime HAL module 'modname', passing 'modargs'\n"); - printf(" to the module.\n"); - } else if (strcmp(command, "unloadrt") == 0) { - printf("unloadrt modname\n"); - printf(" Unloads realtime HAL module 'modname'. If 'modname'\n"); - printf(" is 'all', unloads all realtime modules.\n"); - } else if (strcmp(command, "loadusr") == 0) { - printf("loadusr [options] progname [progarg(s)]\n"); - printf(" Starts user space program 'progname', passing\n"); - printf(" 'progargs' to it. Options are:\n"); - printf(" -w wait for program to finish\n"); - printf(" -i ignore program return value (use with -w)\n"); - } else if ((strcmp(command, "linksp") == 0) || (strcmp(command,"linkps") == 0)) { - printf("linkps pinname [arrow] signame\n"); - printf("linksp signame [arrow] pinname\n"); - printf(" Links pin 'pinname' to signal 'signame'. Both forms do\n"); - printf(" the same thing. Use whichever makes sense. The optional\n"); - printf(" 'arrow' can be '==>', '<==', or '<=>' and is ignored. It\n"); - printf(" can be used in files to show the direction of data flow,\n"); - printf(" but don't use arrows on the command line.\n"); - } else if (strcmp(command, "linkpp") == 0) { - printf("linkpp firstpin secondpin\n"); - printf(" Creates a signal with the name of the first pin,\n"); printf(" then links both pins to the signal. \n"); - }else if (strcmp(command, "unlinkp") == 0) { - printf("unlinkp pinname\n"); - printf(" Unlinks pin 'pinname' if it is linked to any signal.\n"); - } else if (strcmp(command, "lock") == 0) { - printf("lock [all|tune|none]\n"); - printf(" Locks HAL to some degree.\n"); - printf(" none - no locking done.\n"); - printf(" tune - some tuning is possible (setp & such).\n"); - printf(" all - HAL completely locked.\n"); - } else if (strcmp(command, "unlock") == 0) { - printf("unlock [all|tune]\n"); - printf(" Unlocks HAL to some degree.\n"); - printf(" tune - some tuning is possible (setp & such).\n"); - printf(" all - HAL completely unlocked.\n"); - } else if (strcmp(command, "newsig") == 0) { - printf("newsig signame type\n"); - printf(" Creates a new signal called 'signame'. Type is 'bit',\n"); - printf(" 'float', 'u8', 's8', 'u16', 's16', 'u32', or 's32'.\n"); - } else if (strcmp(command, "delsig") == 0) { - printf("delsig signame\n"); - printf(" Deletes signal 'signame'. If 'signame is 'all',\n"); - printf(" deletes all signals\n"); - } else if (strcmp(command, "setp") == 0) { - printf("setp paramname value\n"); - printf("paramname = value\n"); - printf(" Sets parameter 'paramname' to 'value' (if writable).\n"); - printf(" 'setp' and '=' work the same, don't use '=' on the\n"); - printf(" command line. 'value' may be a constant such as 1.234\n"); - printf(" or TRUE, or a reference to an environment variable,\n"); -#ifdef NO_INI - printf(" using the syntax '$name'./n"); -#else - printf(" using the syntax '$name'. If option -i was given,\n"); - printf(" 'value' may also be a reference to an ini file entry\n"); - printf(" using the syntax '[section]name'.\n"); -#endif - } else if (strcmp(command, "sets") == 0) { - printf("sets signame value\n"); - printf(" Sets signal 'signame' to 'value' (if sig has no writers).\n"); - } else if (strcmp(command, "getp") == 0) { - printf("getp paramname\n"); - printf(" Gets the value of parameter 'paramname'.\n"); - } else if (strcmp(command, "gets") == 0) { - printf("gets signame\n"); - printf(" Gets the value of signal 'signame'.\n"); - } else if (strcmp(command, "addf") == 0) { - printf("addf functname threadname [position]\n"); - printf(" Adds function 'functname' to thread 'threadname'. If\n"); - printf(" 'position' is specified, adds the function to that spot\n"); - printf(" in the thread, otherwise adds it to the end. Negative\n"); - printf(" 'position' means position with respect to the end of the\n"); - printf(" thread. For example '1' is start of thread, '-1' is the\n"); - printf(" end of the thread, '-3' is third from the end.\n"); - } else if (strcmp(command, "delf") == 0) { - printf("delf functname threadname\n"); - printf(" Removes function 'functname' from thread 'threadname'.\n"); - } else if (strcmp(command, "show") == 0) { - printf("show [type] [pattern]\n"); - printf(" Prints info about HAL items of the specified type.\n"); - printf(" 'type' is 'comp', 'pin', 'sig', 'param', 'funct',\n"); - printf(" 'thread', or 'all'. If 'type' is omitted, it assumes\n"); - printf(" 'all' with no pattern. If 'pattern' is specified\n"); - printf(" it prints only those items whose names match the\n"); - printf(" pattern (no fancy regular expressions, just a simple\n"); - printf(" match: 'foo' matches 'foo', 'foobar' and 'foot' but\n"); - printf(" not 'fo' or 'frobz' or 'ffoo').\n"); - } else if (strcmp(command, "list") == 0) { - printf("list type [pattern]\n"); - printf(" Prints the names of HAL items of the specified type.\n"); - printf(" 'type' is 'comp', 'pin', 'sig', 'param', 'funct', or\n"); - printf(" 'thread'. If 'pattern' is specified it prints only\n"); - printf(" those names that match the pattern (no fancy regular\n"); - printf(" expressions, just a simple match: 'foo' matches 'foo',\n"); - printf(" 'foobar' and 'foot' but not 'fo' or 'frobz' or 'ffoo').\n"); - printf(" Names are printed on a single line, space separated.\n"); - } else if (strcmp(command, "status") == 0) { - printf("status [type]\n"); - printf(" Prints status info about HAL.\n"); - printf(" 'type' is 'lock', 'mem', or 'all'. \n"); - printf(" If 'type' is omitted, it assumes\n"); - printf(" 'all'.\n"); - } else if (strcmp(command, "save") == 0) { - printf("save [type] [filename]\n"); - printf(" Prints HAL state to 'filename' (or stdout), as a series\n"); - printf(" of HAL commands. State can later be restored by using\n"); - printf(" \"halrmt -f filename\".\n"); - printf(" Type can be 'comp', 'sig', 'link[a]', 'net[a]', 'param',\n"); - printf(" or 'thread'. ('linka' and 'neta' show arrows for pin\n"); - printf(" direction.) If 'type' is omitted or 'all', does the\n"); - printf(" equivalent of 'comp', 'sig', 'link', 'param', and 'thread'.\n"); - } else if (strcmp(command, "start") == 0) { - printf("start\n"); - printf(" Starts all realtime threads.\n"); - } else if (strcmp(command, "stop") == 0) { - printf("stop\n"); - printf(" Stops all realtime threads.\n"); - } else if (strcmp(command, "quit") == 0) { - printf("quit\n"); - printf(" Stop processing input and terminate halrmt (when\n"); - printf(" reading from a file or stdin).\n"); - } else if (strcmp(command, "exit") == 0) { - printf("exit\n"); - printf(" Stop processing input and terminate halrmt (when\n"); - printf(" reading from a file or stdin).\n"); - } else { - printf("No help for unknown command '%s'\n", command); - } - return 0; -} - -static void print_help_general(int showR) -{ - printf("\nUsage: halrmt [options] [cmd [args]]\n\n"); - printf("options:\n\n"); - printf(" -f [filename] Read commands from 'filename', not command\n"); - printf(" line. If no filename, read from stdin.\n"); -#ifndef NO_INI - printf(" -i filename Open .ini file 'filename', allow commands\n"); - printf(" to get their values from ini file.\n"); -#endif - printf(" -q Quiet - print errors only (default).\n"); - printf(" -Q Very quiet - print nothing.\n"); - if (showR != 0) { - printf(" -R Release mutex (for crash recovery only).\n"); - } - printf(" -s Script friendly - don't print headers on output.\n"); - printf(" -v Verbose - print result of every command.\n"); - printf(" -V Very verbose - print lots of junk.\n"); - printf(" -h Help - print this help screen and exit.\n\n"); - printf("commands:\n\n"); - printf(" loadrt, unloadrt, loadusr, lock, unlock, linkps, linksp, linkpp,\n"); - printf(" unlinkp, newsig, delsig, setp, getp, sets, gets, addf, delf, show,\n"); - printf(" list, save, status, start, stop, quit, exit\n"); - printf(" help Lists all commands with short descriptions\n"); - printf(" help command Prints detailed help for 'command'\n\n"); -} - -static halCommandType lookupHalCommand(char *s) -{ - halCommandType i = hcEcho; - int temp; - - while (i < hcUnknown) { - if (strcmp(halCommands[i], s) == 0) return i; -// (int)i += 1; - temp = i; - temp++; - i = (halCommandType) temp; - } - return i; -} - - static int commandHello(connectionRecType *context) -{ - char *pch; -// const char *password = "EMC"; - - pch = strtok(NULL, delims); - if (pch == NULL) return -1; - if (strcmp(pch, pwd) != 0) return -1; - pch = strtok(NULL, delims); - if (pch == NULL) return -1; - strcpy(context->hostName, pch); - pch = strtok(NULL, delims); - if (pch == NULL) return -1; - context->linked = 1; - strcpy(context->version, pch); - printf("Connected to %s\n\r", context->hostName); - return 0; -} - -static cmdResponseType getEcho(char *s, connectionRecType *context) -{ - const char *pEchoStr = "ECHO %s"; - - if (context->echo == 1) sprintf(context->outBuf, pEchoStr, "ON"); - else sprintf(context->outBuf, pEchoStr, "OFF"); - return rtNoError; -} - -static cmdResponseType getVerbose(char *s, connectionRecType *context) -{ - const char *pVerboseStr = "VERBOSE %s"; - - if (context->verbose == 1) sprintf(context->outBuf, pVerboseStr, "ON"); - else sprintf(context->outBuf, pVerboseStr, "OFF"); - return rtNoError; -} - -static cmdResponseType getEnable(char *s, connectionRecType *context) -{ - const char *pEnableStr = "ENABLE %s"; - - if (context->cliSock == enabledConn) sprintf(context->outBuf, pEnableStr, "ON"); - else sprintf(context->outBuf, pEnableStr, "OFF"); - return rtNoError; -} - -static cmdResponseType getConfig(char *s, connectionRecType *context) -{ - const char *pConfigStr = "CONFIG"; - - strcpy(context->outBuf, pConfigStr); - return rtNoError; -} - -static cmdResponseType getCommMode(char *s, connectionRecType *context) -{ - const char *pCommModeStr = "COMM_MODE %s"; - - switch (context->commMode) { - case 0: sprintf(context->outBuf, pCommModeStr, "ASCII"); break; - case 1: sprintf(context->outBuf, pCommModeStr, "BINARY"); break; - } - return rtNoError; -} - -static cmdResponseType getCommProt(char *s, connectionRecType *context) -{ - const char *pCommProtStr = "COMM_PROT %s"; - - sprintf(context->outBuf, pCommProtStr, context->version); - return rtNoError; -} - -static cmdResponseType getComps(char *s, connectionRecType *context) -{ - if (s == NULL) - getCompInfo("", context); - else - getCompInfo(s, context); - return rtHandledNoError; -} - -static cmdResponseType getPins(char *s, connectionRecType *context) -{ - if (s == NULL) - getPinInfo("", 0, context); - else - getPinInfo(s, 0, context); - return rtHandledNoError; -} - -static cmdResponseType getPinVals(char *s, connectionRecType *context) - -{ - if (s == NULL) - getPinInfo("", 1, context); - else - getPinInfo(s, 1, context); - return rtHandledNoError; -} - -static cmdResponseType getSignals(char *s, connectionRecType *context) -{ - if (s == NULL) - getSigInfo("", 0, context); - else - getSigInfo(s, 0, context); - return rtHandledNoError; -} - -static cmdResponseType getSignalVals(char *s, connectionRecType *context) -{ - if (s == NULL) - getSigInfo("", 1, context); - else - getSigInfo(s, 1, context); - return rtHandledNoError; -} - -static cmdResponseType getParams(char *s, connectionRecType *context) -{ - if (s == NULL) - getParamInfo("", 0, context); - else - getParamInfo(s, 0, context); - return rtHandledNoError; -} - -static cmdResponseType getParamVals(char *s, connectionRecType *context) -{ - if (s == NULL) - getParamInfo("", 1, context); - else - getParamInfo(s, 1, context); - return rtHandledNoError; -} - -static cmdResponseType getFuncts(char *s, connectionRecType *context) -{ - if (s == NULL) - getFunctInfo("", context); - else - getFunctInfo(s, context); - return rtHandledNoError; -} - -static cmdResponseType getThreads(char *s, connectionRecType *context) -{ - if (s == NULL) - getThreadInfo("", context); - else - getThreadInfo(s, context); - return rtHandledNoError; -} - -static cmdResponseType getComp(char *s, connectionRecType *context) -{ - if (s == NULL) return rtStandardError; - getCompInfo(s, context); - return rtHandledNoError; -} - -static cmdResponseType getPin(char *s, connectionRecType *context) -{ - if (s == NULL) return rtStandardError; - getPinInfo(s, 0, context); - return rtHandledNoError; -} - -static cmdResponseType getPinVal(char *s, connectionRecType *context) -{ - if (s == NULL) return rtStandardError; - getPinInfo(s, 1, context); - return rtHandledNoError; -} - -static cmdResponseType getSignal(char *s, connectionRecType *context) -{ - if (s == NULL) return rtStandardError; - getSigInfo(s, 0, context); - return rtHandledNoError; -} - -static cmdResponseType getSignalVal(char *s, connectionRecType *context) -{ - if (s == NULL) return rtStandardError; - getSigInfo(s, 1, context); - return rtHandledNoError; -} - -static cmdResponseType getParam(char *s, connectionRecType *context) -{ - if (s == NULL) return rtStandardError; - getParamInfo(s, 0, context); - return rtHandledNoError; -} - -static cmdResponseType getParamVal(char *s, connectionRecType *context) -{ - if (s == NULL) return rtStandardError; - getParamInfo(s, 1, context); - return rtHandledNoError; -} - -static cmdResponseType getFunct(char *s, connectionRecType *context) -{ - if (s == NULL) return rtStandardError; - getFunctInfo(s, context); - return rtHandledNoError; -} - -static cmdResponseType getThread(char *s, connectionRecType *context) -{ - if (s == NULL) return rtStandardError; - getThreadInfo(s, context); - return rtHandledNoError; -} - -int commandGet(connectionRecType *context) -{ - static char *setNakStr = "GET NAK\r\n"; - static char *setCmdNakStr = "GET %s NAK\r\n"; - halCommandType cmd; - char *pch; - int retval; - cmdResponseType ret = rtNoError; - - pch = strtok(NULL, delims); - if (pch == NULL) { - retval = write(context->cliSock, setNakStr, strlen(setNakStr)); - return 0; - } - strupr(pch); - cmd = lookupHalCommand(pch); - switch (cmd) { - case hcEcho: ret = getEcho(pch, context); break; - case hcVerbose: ret = getVerbose(pch, context); break; - case hcEnable: ret = getEnable(pch, context); break; - case hcConfig: ret = getConfig(pch, context); break; - case hcCommMode: ret = getCommMode(pch, context); break; - case hcCommProt: ret = getCommProt(pch, context); break; - case hcComps: ret = getComps(strtok(NULL, delims), context); break; - case hcPins: ret = getPins(strtok(NULL, delims), context); break; - case hcPinVals: ret = getPinVals(pch, context); break; - case hcSigs: ret = getSignals(strtok(NULL, delims), context); break; - case hcSigVals: ret = getSignalVals(strtok(NULL, delims), context); break; - case hcParams: ret = getParams(strtok(NULL, delims), context); break; - case hcParamVals: ret = getParamVals(strtok(NULL, delims), context); break; - case hcFuncts: ret = getFuncts(strtok(NULL, delims), context); break; - case hcThreads: ret = getThreads(strtok(NULL, delims), context); break; - case hcComp: ret = getComp(strtok(NULL, delims), context); break; - case hcPin: ret = getPin(strtok(NULL, delims), context); break; - case hcPinVal: ret = getPinVal(strtok(NULL, delims), context); break; - case hcSig: ret = getSignal(strtok(NULL, delims), context); break; - case hcSigVal: ret = getSignalVal(strtok(NULL, delims), context); break; - case hcParam: ret = getParam(strtok(NULL, delims), context); break; - case hcParamVal: ret = getParamVal(strtok(NULL, delims), context); break; - case hcFunct: ret = getFunct(strtok(NULL, delims), context); break; - case hcThread: ret = getThread(strtok(NULL, delims), context); break; - case hcLoadRt: ; - case hcUnload: ; - case hcLoadUsr: ; - case hcLinkps: ; - case hcLinksp: ; - case hcLinkpp: ; - case hcNet: ; - case hcUnlinkp: ; - case hcLock: ; - case hcUnlock: ; - case hcNewSig: ; - case hcDelSig: ; - case hcSetP: ; - case hcSetS: ; - case hcAddF: ; - case hcDelF: ; - case hcSave: ; - case hcStart: ; - case hcStop: ; - case hcUnknown: ret = rtStandardError; - } - switch (ret) { - case rtNoError: // Standard ok response, just write value in buffer - sockWrite(context); - break; - case rtHandledNoError: // Custom ok response already handled, take no action - break; - case rtStandardError: // Standard error response - sprintf(context->outBuf, setCmdNakStr, pch); - sockWrite(context); - break; - case rtCustomError: // Custom error response entered in buffer - sockWrite(context); - break; - case rtCustomHandledError: ;// Custom error respose handled, take no action - } - return 0; -} - -static int checkOnOff(char *s) -{ - static char *onStr = "ON"; - static char *offStr = "OFF"; - - if (s == NULL) return -1; - strupr(s); - if (strcmp(s, onStr) == 0) return 0; - if (strcmp(s, offStr) == 0) return 1; - return -1; -} - -static int checkBinaryASCII(char *s) -{ - static char *binaryStr = "BINARY"; - static char *ASCIIStr = "ASCII"; - - if (s == NULL) return -1; - strupr(s); - if (strcmp(s, ASCIIStr) == 0) return 0; - if (strcmp(s, binaryStr) == 0) return 1; - return -1; -} - -static cmdResponseType setEcho(char *s, connectionRecType *context) -{ - - switch (checkOnOff(s)) { - case -1: return rtStandardError; - case 0: context->echo = 1; break; - case 1: context->echo = 0; - } - return rtNoError; -} - -static cmdResponseType setVerbose(char *s, connectionRecType *context) -{ - - switch (checkOnOff(s)) { - case -1: return rtStandardError; - case 0: context->verbose = 1; break; - case 1: context->verbose = 0; - } - return rtNoError; -} - -static cmdResponseType setEnable(char *s, connectionRecType *context) -{ - if (strcmp(s, enablePWD) == 0) { - enabledConn = context->cliSock; - context->enabled = 1; - return rtNoError; - } - else - if (checkOnOff(s) == 1) { - context->enabled = 0; - enabledConn = -1; - return rtNoError; - } - else return rtStandardError; -} - -static cmdResponseType setConfig(char *s, connectionRecType *context) -{ - return rtNoError; -} - -static cmdResponseType setCommMode(char *s, connectionRecType *context) -{ - int ret; - - ret = checkBinaryASCII(s); - if (ret == -1) return rtStandardError; - context->commMode = ret; - return rtNoError; -} - -static cmdResponseType setCommProt(char *s, connectionRecType *context) -{ - char *pVersion; - - pVersion = strtok(NULL, delims); - if (pVersion == NULL) return rtStandardError; - strcpy(context->version, pVersion); - return rtNoError; -} - -static cmdResponseType setLoadRt(char *s, connectionRecType *context) -{ - char *pch; - char *args[MAX_TOK+3]; - int i; - - if (s == '\0') return rtCustomHandledError; - i = 0; - pch = strtok(NULL, delims); - while (pch != NULL) { - args[i] = pch; - pch = strtok(NULL, delims); - i++; - } - args[i] = '\0'; - if (doLoadRt(s, args, context) == 0) - return rtNoError; - else - return rtCustomHandledError; -} - -static cmdResponseType setUnload(char *s, connectionRecType *context) -{ - if (doUnload(s, context) == 0) - return rtNoError; - else - return rtCustomHandledError; -} - -static cmdResponseType setLoadUsr(char *s, connectionRecType *context) -{ - char *argv[MAX_TOK+1]; - - argv[0] = s; - argv[1] = "\0"; - if (doLoadUsr(argv) == 0) - return rtNoError; - else - return rtCustomHandledError; -} - -static cmdResponseType setLinkps(char *p, char *s, connectionRecType *context) -{ - if ((p == NULL) || (s == NULL)) return rtStandardError; - if (doLink(p, s, context) == 0) - return rtNoError; - else - return rtCustomHandledError; -} - -static cmdResponseType setLinksp(char *p, char *s, connectionRecType *context) -{ - if ((p == NULL) || (s == NULL)) return rtStandardError; - if (doLink(s, p, context) == 0) - return rtNoError; - else - return rtCustomHandledError; -} - -static cmdResponseType setLinkpp(char *p1, char *p2, connectionRecType *context) -{ - if ((p1 == NULL) || (p2 == NULL)) return rtStandardError; - if (doLinkpp(p1, p2, context) == 0) - return rtNoError; - else - return rtCustomHandledError; -} - -static cmdResponseType setNet(char *p1, connectionRecType *context) -{ - char *argv[MAX_TOK]; - int i; - char *pch; - - if (p1 == NULL) return rtStandardError; - i = 0; - - do { - pch = strtok(NULL, delims); - if (pch == NULL) break; - argv[i] = pch; - i++; - if (i >= MAX_TOK) return rtStandardError; // too many pins to link to the net - } while(1); - - if (i == 0) return rtStandardError; // no pins to link to the net - else - if (doNet(p1, argv, context) == 0) - return rtNoError; - else return rtCustomHandledError; -} - -static cmdResponseType setUnlink(char *s, connectionRecType *context) -{ - if (s == NULL) return rtStandardError; - if (doLink(s, "\0", context) == 0) - return rtNoError; - else - return rtCustomHandledError; -} - -static cmdResponseType setLock(char *s, connectionRecType *context) -{ - if (s == NULL) return rtStandardError; - if (doLock(s, context) == 0) - return rtNoError; - else - return rtCustomHandledError; -} - -static cmdResponseType setUnlock(char *s, connectionRecType *context) -{ - if (s == NULL) return rtStandardError; - if (doUnlock(s, context) == 0) - return rtNoError; - else - return rtCustomHandledError; -} - -static cmdResponseType setNewsig(char *s, char *t, connectionRecType *context) -{ - if ((s == NULL) || (t == NULL)) return rtStandardError; - if (doNewsig(s, t, context) == 0) - return rtNoError; - else - return rtCustomHandledError; -} - -static cmdResponseType setDelsig(char *s, connectionRecType *context) -{ - if (s == NULL) return rtStandardError; - if (doDelsig(s, context) == 0) - return rtNoError; - else - return rtCustomHandledError; -} - -static cmdResponseType setSetp(char *s, char *p, connectionRecType *context) -{ - if ((s == NULL) || (p == NULL)) return rtStandardError; - if (doSetp(s, p, context) == 0) - return rtNoError; - else - return rtCustomHandledError; -} - -static cmdResponseType setSets(char *s, char *p, connectionRecType *context) -{ - if ((s == NULL) || (p == NULL)) return rtStandardError; - if (doSets(s, p, context) == 0) - return rtNoError; - else - return rtCustomHandledError; -} - -static cmdResponseType setAddf(char *s, char *t, char *p, connectionRecType *context) -{ - if ((s == NULL) || (t == NULL)) return rtStandardError; - if (doAddf(s, t, p, context) == 0) - return rtNoError; - else - return rtCustomHandledError; -} - -static cmdResponseType setDelf(char *s, char *t, connectionRecType *context) -{ - if ((s == NULL) || (t == NULL)) return rtStandardError; - if (doDelf(s, t, context) == 0) - return rtNoError; - else - return rtCustomHandledError; -} - -static cmdResponseType setSave(char *type, char *fileName, connectionRecType *context) -{ - if (doSave(type, fileName, context) == 0) - return rtNoError; - else - return rtCustomHandledError; -} - -static cmdResponseType setStart(connectionRecType *context) -{ - if (doStart(context) == 0) - return rtNoError; - else - return rtCustomHandledError; -} - -static cmdResponseType setStop(connectionRecType *context) -{ - if (doStop(context) == 0) - return rtNoError; - else - return rtCustomHandledError; -} - -#define MAX_TOKENS 5 - -int commandSet(connectionRecType *context) -{ - static char *setNakStr = "SET NAK\n\r"; - static char *setCmdNakStr = "SET %s NAK\n\r"; - static char *ackStr = "SET %s ACK\n\r"; - halCommandType cmd; - char *tokens[MAX_TOKENS]; - int i; - char *pch; - char *pcmd; - int retval; - cmdResponseType ret = rtNoError; - - pcmd = strtok(NULL, delims); - if (pcmd == NULL) { - retval = write(context->cliSock, setNakStr, strlen(setNakStr)); - return 0; - } - strupr(pcmd); - cmd = lookupHalCommand(pcmd); - if ((cmd >= hcCommProt) && (context->cliSock != enabledConn)) { - sprintf(context->outBuf, setCmdNakStr, pcmd); - retval = write(context->cliSock, context->outBuf, strlen(context->outBuf)); - return 0; - } - pch = strtok(NULL, delims); - i = 0; - while (pch != NULL) { - tokens[i] = pch; - i++; - pch = strtok(NULL, delims); - } - switch (cmd) { - case hcEcho: ret = setEcho(tokens[0], context); break; - case hcVerbose: ret = setVerbose(tokens[0], context); break; - case hcEnable: ret = setEnable(tokens[0], context); break; - case hcConfig: ret = setConfig(tokens[0], context); break; - case hcCommMode: ret = setCommMode(tokens[0], context); break; - case hcCommProt: ret = setCommProt(tokens[0], context); break; - case hcComps: break; - case hcPins: break; - case hcPinVals: break; - case hcSigs: break; - case hcSigVals: break; - case hcParams: break; - case hcParamVals: break; - case hcFuncts: break; - case hcThreads: break; - case hcComp: break; - case hcPin: break; - case hcPinVal: break; - case hcSig: break; - case hcSigVal: break; - case hcParam: break; - case hcParamVal: break; - case hcFunct: break; - case hcThread: break; - case hcLoadRt: ret = setLoadRt(tokens[0], context); break; - case hcUnload: ret = setUnload(tokens[0], context); break; - case hcLoadUsr: ret = setLoadUsr(tokens[0], context); break; - case hcLinkps: setLinkps(tokens[0], tokens[1], context); break; - case hcLinksp: setLinksp(tokens[0], tokens[1], context); break; - case hcLinkpp: setLinkpp(tokens[0], tokens[1], context); break; - case hcNet: setNet(tokens[0], context); break; - case hcUnlinkp: setUnlink(tokens[0], context); break; - case hcLock: setLock(tokens[0], context); break; - case hcUnlock: setUnlock(tokens[0], context); break;; - case hcNewSig: setNewsig(tokens[0], tokens[1], context); break; - case hcDelSig: setDelsig(tokens[0], context); break; - case hcSetP: setSetp(tokens[0], tokens[1], context); break; - case hcSetS: setSets(tokens[0], tokens[1], context); break; - case hcAddF: setAddf(tokens[0], tokens[1], tokens[2], context); break; - case hcDelF: setDelf(tokens[0], tokens[1], context); break; - case hcSave: setSave(tokens[0], tokens[1], context); break; - case hcStart: setStart(context); break; - case hcStop: setStop(context); break; - case hcUnknown: ret = rtStandardError; - } - switch (ret) { - case rtNoError: - if (context->verbose) { - sprintf(context->outBuf, ackStr, pcmd); - retval = write(context->cliSock, context->outBuf, strlen(context->outBuf)); - } - break; - case rtHandledNoError: // Custom ok response already handled, take no action - break; - case rtStandardError: - sprintf(context->outBuf, setCmdNakStr, pcmd); - retval = write(context->cliSock, context->outBuf, strlen(context->outBuf)); - break; - case rtCustomError: // Custom error response entered in buffer - retval = write(context->cliSock, context->outBuf, strlen(context->outBuf)); - break; - case rtCustomHandledError: ;// Custom error respose handled, take no action - } - return 0; -} - -int commandQuit(connectionRecType *context) -{ - printf("Closing connection with %s\n", context->hostName); - return -1; -} - -int commandShutdown(connectionRecType *context) -{ - if (context->cliSock == enabledConn) { - printf("Shutting down\n"); - hal_flag = 1; - hal_exit(comp_id); - exit(0); - return -1; - } - else - return 0; -} - -static int helpGeneral(connectionRecType *context) -{ - sprintf(context->outBuf, "Available commands:\n\r"); - strcat(context->outBuf, " Hello \n\r"); - strcat(context->outBuf, " Get \n\r"); - strcat(context->outBuf, " Set \n\r"); - strcat(context->outBuf, " Quit\n\r"); - strcat(context->outBuf, " Shutdown\n\r"); - strcat(context->outBuf, " Help \n\r"); - sockWrite(context); - return 0; -} - -static int helpHello(connectionRecType *context) -{ - sprintf(context->outBuf, "Usage:\n\r"); - strcat(context->outBuf, " Hello \n\rWhere:\n\r"); - strcat(context->outBuf, " Password is the connection password to allow communications with the CNC server.\n\r"); - strcat(context->outBuf, " Client Name is the name of client trying to connect, typically the network name of the client.\n\r"); - strcat(context->outBuf, " Protocol Version is the version of the protocol with which the client wishes to use.\n\r\n\r"); - strcat(context->outBuf, " With valid password, server responds with:\n\r"); - strcat(context->outBuf, " Hello Ack \n\rWhere:\n\r"); - strcat(context->outBuf, " Ack is acknowledging the connection has been made.\n\r"); - strcat(context->outBuf, " Server Name is the name of the EMC Server to which the client has connected.\n\r"); - strcat(context->outBuf, " Protocol Version is the cleint requested version or latest version support by server if"); - strcat(context->outBuf, " the client requests a version later than that supported by the server.\n\r\n\r"); - strcat(context->outBuf, " With invalid password, the server responds with:\n\r"); - strcat(context->outBuf, " Hello Nak\n\r"); - sockWrite(context); - return 0; -} - -static int helpGet(connectionRecType *context) -{ - sprintf(context->outBuf, "Usage:\n\rGet \n\r"); - strcat(context->outBuf, " Get commands require that a hello has been successfully negotiated.\n\r"); - strcat(context->outBuf, " Emc command may be one of:\n\r"); - strcat(context->outBuf, " Comm_mode\n\r"); - strcat(context->outBuf, " Comm_prot\n\r"); - strcat(context->outBuf, " Comp outBuf, " Comps\n\r"); - strcat(context->outBuf, " Echo\n\r"); - strcat(context->outBuf, " Enable\n\r"); - strcat(context->outBuf, " Funct \n\r"); - strcat(context->outBuf, " Functs\n\r"); - strcat(context->outBuf, " Param \n\r"); - strcat(context->outBuf, " Params\n\r"); - strcat(context->outBuf, " ParamVal \n\r"); - strcat(context->outBuf, " ParamVals\n\r"); - strcat(context->outBuf, " Pin \n\r"); - strcat(context->outBuf, " PinVal \n\r"); - strcat(context->outBuf, " Pins\n\r"); - strcat(context->outBuf, " PinVals\n\r"); - strcat(context->outBuf, " Signal \n\r"); - strcat(context->outBuf, " Signals\n\r"); - strcat(context->outBuf, " SigVal \n\r"); - strcat(context->outBuf, " SigVals\n\r"); - strcat(context->outBuf, " Thread \n\r"); - strcat(context->outBuf, " Threads\n\r"); - strcat(context->outBuf, " Verbose\n\r"); -// strcat(outBuf, "CONFIG\n\r"); - sockWrite(context); - return 0; -} - -static int helpSet(connectionRecType *context) -{ - sprintf(context->outBuf, "Usage:\n\r Set \n\r"); - strcat(context->outBuf, " Set commands require that a hello has been successfully negotiated,\n\r"); - strcat(context->outBuf, " in most instances requires that control be enabled by the connection.\n\r"); - strcat(context->outBuf, " The set commands not requiring control enabled are:\n\r"); - strcat(context->outBuf, " Comm_mode \n\r"); - strcat(context->outBuf, " Comm_prot \n\r"); - strcat(context->outBuf, " Echo \n\r"); - strcat(context->outBuf, " Enable \n\r"); - strcat(context->outBuf, " Verbose \n\r\n\r"); - strcat(context->outBuf, " The set commands requiring control enabled are:\n\r"); - strcat(context->outBuf, " Addf []\n\r"); - strcat(context->outBuf, " Delf \n\r"); - strcat(context->outBuf, " DelSig \n\r"); - strcat(context->outBuf, " Linkpp \n\r"); - strcat(context->outBuf, " Linkps \n\r"); - strcat(context->outBuf, " Linksp \n\r"); - strcat(context->outBuf, " Loadrt \n\r"); - strcat(context->outBuf, " Loadusr [ .. ]\n\r"); - strcat(context->outBuf, " Lock \n\r"); - strcat(context->outBuf, " Net [ .. \n\r"); - strcat(context->outBuf, " NewSig \n\r"); - strcat(context->outBuf, " Save [ []]\n\r"); - strcat(context->outBuf, " Setp \n\r"); - strcat(context->outBuf, " Sets \n\r"); - strcat(context->outBuf, " Start\n\r"); - strcat(context->outBuf, " Stop\n\r"); - strcat(context->outBuf, " Unlink \n\r"); - strcat(context->outBuf, " Unload \n\r"); - strcat(context->outBuf, " Unlock \n\r"); - - sockWrite(context); - return 0; -} - -static int helpQuit(connectionRecType *context) -{ - sprintf(context->outBuf, "Usage:\n\r"); - strcat(context->outBuf, " The quit command has the server initiate a disconnect from the client,\n\r"); - strcat(context->outBuf, " the command has no parameters and no requirements to have negotiated\n\r"); - strcat(context->outBuf, " a hello, or be in control."); - sockWrite(context); - return 0; -} - -static int helpShutdown(connectionRecType *context) -{ - sprintf(context->outBuf, "Usage:\n\r"); - strcat(context->outBuf, " The shutdown command terminates the connection with all clients,\n\r"); - strcat(context->outBuf, " and initiates a shutdown of EMC. The command has no parameters, and\n\r"); - strcat(context->outBuf, " can only be issued by the connection having control.\n\r"); - sockWrite(context); - return 0; -} - -static int helpHelp(connectionRecType *context) -{ - sprintf(context->outBuf, "If you need help on help, it is time to look into another line of work.\n\r"); - sockWrite(context); - return 0; -} - -int commandHelp(connectionRecType *context) -{ - char *pch; - - pch = strtok(NULL, delims); - if (pch == NULL) return (helpGeneral(context)); - strupr(pch); - printf("Command = %s", pch); - if (strcmp(pch, "HELLO") == 0) return (helpHello(context)); - if (strcmp(pch, "GET") == 0) return (helpGet(context)); - if (strcmp(pch, "SET") == 0) return (helpSet(context)); - if (strcmp(pch, "QUIT") == 0) return (helpQuit(context)); - if (strcmp(pch, "SHUTDOWN") == 0) return (helpShutdown(context)); - if (strcmp(pch, "HELP") == 0) return (helpHelp(context)); - sprintf(context->outBuf, "%s is not a valid command.", pch); - sockWrite(context); - return 0; -} - -commandTokenType lookupToken(char *s) -{ - commandTokenType i = cmdHello; - int temp; - - while (i < cmdUnknown) { - if (strcmp(commands[i], s) == 0) return i; -// (int)i += 1; - temp = i; - temp++; - i = (commandTokenType) temp; - } - return i; -} - -int parseCommand(connectionRecType *context) -{ - int ret = 0; - char *pch; - char s[64]; - static char *helloNakStr = "HELLO NAK\r\n"; - static char *helloAckStr = "HELLO ACK %s 1.1\r\n"; - static char *setNakStr = "SET NAK\r\n"; - - pch = strtok(context->inBuf, delims); - sprintf(s, helloAckStr, serverName); - if (pch != NULL) { - strupr(pch); - switch (lookupToken(pch)) { - case cmdHello: - if (commandHello(context) == -1) - ret = write(context->cliSock, helloNakStr, strlen(helloNakStr)); - else - ret = write(context->cliSock, s, strlen(s)); - break; - case cmdGet: - ret = commandGet(context); - break; - case cmdSet: - if (context->linked == 0) - ret = write(context->cliSock, setNakStr, strlen(setNakStr)); - else ret = commandSet(context); - break; - case cmdQuit: - ret = commandQuit(context); - break; - case cmdShutdown: - ret = commandShutdown(context); - break; - case cmdHelp: - ret = commandHelp(context); - break; - case cmdUnknown: ret = -2; - } - } - return ret; -} - -void *readClient(void *arg) -{ - char str[1600]; - char buf[1600]; - unsigned int i, j; - int len; - int ret; - connectionRecType *context; - - -// res = 1; - context = (connectionRecType *) malloc(sizeof(connectionRecType)); - context->cliSock = client_sockfd; - context->linked = 0; - context->echo = 1; - context->verbose = 0; - strcpy(context->version, "1.0"); - strcpy(context->hostName, "Default"); - connCount++; - context->commMode = 0; - context->commProt = 0; - context->inBuf[0] = 0; - buf[0] = 0; - - while (1) { - len = read(context->cliSock, &str, 1600); - if (len <= 0) goto finished; - str[len] = 0; - strcat(buf, str); - if (!memchr(str, 0x0d, strlen(str))) continue; - if ((context->echo == 1) && (context->linked) == 1) - ret = write(context->cliSock, &buf, strlen(buf)); - i = 0; - j = 0; - while (i <= strlen(buf)) { - if ((buf[i] != '\n') && (buf[i] != '\r')) { - context->inBuf[j] = buf[i]; - j++; - } - else - if (j > 0) - { - context->inBuf[j] = 0; - if (parseCommand(context) == -1) goto finished; - j = 0; - } - i++; - } - buf[0] = 0; - } - -finished: - close(context->cliSock); - free(context); - pthread_exit((void *)0); -} - -/*********************************************************************** -* MAIN PROGRAM * -************************************************************************/ - - /* main() is responsible for parsing command line options, and then - parsing either a single command from the command line or a series - of commands from a file or standard input. It breaks the command[s] - into tokens, and passes them to parse_cmd() which does the actual - work for each command. -*/ - -int sockMain() -{ - pthread_t thrd; - int res; - - while (1) { - - client_len = sizeof(client_address); - client_sockfd = accept(server_sockfd, - (struct sockaddr *)&client_address, &client_len); - if (client_sockfd < 0) exit(0); - res = pthread_create(&thrd, NULL, readClient, (void *)NULL); - if (res != 0) - close(client_sockfd); - } - return 0; -} - -int main(int argc, char **argv) -{ - int n, fd; - int errorcount; - int opt; - char *cp1, *filename = NULL; - FILE *srcfile = NULL; - - /* set default level of output - 'quiet' */ - rtapi_set_msg_level(RTAPI_MSG_ERR); - /* set default for other options */ - // process halrmt command line args - while((opt = getopt_long(argc, argv, "e:n:p:s:w:", longopts, NULL)) != -1) { - switch(opt) { - case 'e': strncpy(enablePWD, optarg, strlen(optarg) + 1); break; - case 'n': strncpy(serverName, optarg, strlen(optarg) + 1); break; - case 'p': sscanf(optarg, "%d", &port); break; - case 's': sscanf(optarg, "%d", &maxSessions); break; - case 'w': strncpy(pwd, optarg, strlen(optarg) + 1); break; - } - } - - /* start parsing halcmd options */ - n = optind; - while ((n < argc) && (argv[n][0] == '-')) { - cp1 = argv[n++]; - /* loop to parse grouped options */ - while (*(++cp1) != '\0') { - switch (*cp1) { - case 'R': - /* force an unlock of the HAL mutex - to be used after a segfault in a hal program */ - if (release_HAL_mutex() < 0) { - printf("halrmt: Release Mutex failed!\n"); - return 1; - } - return 0; - break; - case 'h': - /* -h = help */ - if (argc > n) { /* there are more arguments, n has been incremented already */ - do_help_cmd(argv[n]); - } else - print_help_general(1); - return 0; - break; - case 'q': - /* -q = quiet (default) */ - rtapi_set_msg_level(RTAPI_MSG_ERR); - break; - case 'Q': - /* -Q = very quiet */ - rtapi_set_msg_level(RTAPI_MSG_NONE); - break; - case 's': - /* script friendly mode */ - scriptmode = 1; - break; - case 'v': - /* -v = verbose */ - rtapi_set_msg_level(RTAPI_MSG_INFO); - break; - case 'V': - /* -V = very verbose */ - rtapi_set_msg_level(RTAPI_MSG_ALL); - break; - case 'f': - /* -f = read from file (or stdin) */ - if (srcfile == NULL) { - /* it's the first -f (ignore repeats) */ - if ((n < argc) && (argv[n][0] != '-')) { - /* there is a following arg, and it's not an option */ - filename = argv[n++]; - srcfile = fopen(filename, "r"); - if (srcfile == NULL) { - fprintf(stderr, - "Could not open command file '%s'\n", - filename); - exit(-1); - } - /* make sure file is closed on exec() */ - fd = fileno(srcfile); - fcntl(fd, F_SETFD, FD_CLOEXEC); - } else { - /* no filename followed -f option, use stdin */ - srcfile = stdin; - prompt_mode = 1; - } - } - break; -#ifndef NO_INI - case 'i': - /* -i = allow reading 'setp' values from an ini file */ - if (inifile == NULL) { - /* it's the first -i (ignore repeats) */ - if ((n < argc) && (argv[n][0] != '-')) { - /* there is a following arg, and it's not an option */ - filename = argv[n++]; - inifile = fopen(filename, "r"); - if (inifile == NULL) { - fprintf(stderr, - "Could not open ini file '%s'\n", - filename); - exit(-1); - } - /* make sure file is closed on exec() */ - fd = fileno(inifile); - fcntl(fd, F_SETFD, FD_CLOEXEC); - } else { - /* no filename followed -i option, error */ - fprintf(stderr, - "No missing ini filename for -i option\n"); - exit(-1); - } - } - break; -#endif /* NO_INI */ - default: - /* unknown option */ - printf("Unknown option '-%c'\n", *cp1); - break; - } - } - } - signal(SIGINT, quit); - signal(SIGTERM, quit); - signal(SIGPIPE, SIG_IGN); - /* at this point all options are parsed, connect to HAL */ - /* create a unique module name, to allow for multiple halrmt's */ - snprintf(comp_name, HAL_NAME_LEN, "halrmt%d", getpid()); - /* tell the signal handler that we might have the mutex */ - hal_flag = 1; - /* connect to the HAL */ - comp_id = hal_init(comp_name); - /* done with mutex */ - hal_flag = 0; - /* check result */ - if (comp_id < 0) { - fprintf(stderr, "halrmt: hal_init() failed: %d\n", comp_id ); - fprintf(stderr, "NOTE: 'rtapi' kernel module must be loaded\n" ); - return 1; - } - hal_ready(comp_id); - errorcount = 0; - initSockets(); - /* HAL init is OK, let's process the command(s) */ - /* tell the signal handler we might have the mutex */ - sockMain(); - hal_flag = 1; - hal_exit(comp_id); - if ( errorcount > 0 ) { - return 1; - } else { - return 0; - } -} - diff --git a/src/libnml/posemath/sincos.c b/src/libnml/posemath/sincos.c index 101d7bb059..232a9df26d 100644 --- a/src/libnml/posemath/sincos.c +++ b/src/libnml/posemath/sincos.c @@ -6,7 +6,7 @@ * Author: * License: LGPL Version 2 * System: Linux -* +* * Copyright (c) 2004 All rights reserved. ********************************************************************/ /* @@ -19,10 +19,6 @@ #include "config.h" -#if defined(RTAPI) && !defined(BUILD_SYS_USER_DSO) -#undef HAVE_SINCOS -#endif - #ifndef HAVE_SINCOS #include "rtapi_math.h" diff --git a/src/machinetalk/Submakefile b/src/machinetalk/Submakefile index 456f8d3601..ceacde7978 100644 --- a/src/machinetalk/Submakefile +++ b/src/machinetalk/Submakefile @@ -116,8 +116,6 @@ NANOPB_CFLAGS := -DPB_FIELD_32BIT '-DPB_SYSTEM_HEADER=<'$(MACHINETALK)'/include/ NANOPB_OPTIONS := $(MACHINETALK)/nanopb.options # any extra flags to C compile nanopb bindings -# this gets exported to RTFLAGS so dont add -fPIC here (stalls kthreads build) -# machinetalk/msgcomponents/Submakefile:RTFLAGS += $(PROTO_NANOPB_CFLAGS) PROTO_NANOPB_CFLAGS := $(NANOPB_CFLAGS) # nanopb library .h/.c files diff --git a/src/machinetalk/msgcomponents/Submakefile b/src/machinetalk/msgcomponents/Submakefile index dc0325867b..c3e699b982 100644 --- a/src/machinetalk/msgcomponents/Submakefile +++ b/src/machinetalk/msgcomponents/Submakefile @@ -7,8 +7,7 @@ MSGCOMP_DIR=machinetalk/msgcomponents RTFLAGS += $(PROTO_NANOPB_CFLAGS) -obj-m += pbmsgs.o -pbmsgs-objs := \ +$(eval $(call c_comp_build_rules,machinetalk/msgcomponents/pbmsgs.o, \ $(MSGCOMP_DIR)/pbmsgs.o \ $(PBGEN)/$(NAMESPACEDIR)/canon.npb.o \ $(PBGEN)/$(NAMESPACEDIR)/emcclass.npb.o \ @@ -27,18 +26,10 @@ pbmsgs-objs := \ $(PBGEN)/$(NAMESPACEDIR)/ros.npb.o \ $(PBGEN)/$(NAMESPACEDIR)/sample.npb.o \ $(PBGEN)/$(NAMESPACEDIR)/jplan.npb.o \ - $(PBGEN)/$(NAMESPACEDIR)/value.npb.o - - -#obj-m += pbring.o -#pbring-objs := $(MSGCOMP_DIR)/pbring.o - - -ifneq "$(filter normal user-dso,$(BUILD_SYS))" "" -$(RTLIBDIR)/pbmsgs$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(pbmsgs-objs)) -#$(RTLIBDIR)/pbring$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(pbring-objs)) -endif + $(PBGEN)/$(NAMESPACEDIR)/value.npb.o \ +)) +#$$(eval $(call c_comp_build_rules,machinetalk/msgcomponents/pbring.o)) ../include/%.h: ./$(MSGCOMP_DIR)/%.h $(ECHO) Copying header file $@ diff --git a/src/module_helper/Submakefile b/src/module_helper/Submakefile deleted file mode 100644 index d19ae8ab1f..0000000000 --- a/src/module_helper/Submakefile +++ /dev/null @@ -1,15 +0,0 @@ -MODULE_HELPERSRCS := \ - module_helper/module_helper.c \ - rtapi/rtapi_compat.c -USERSRCS += $(MODULE_HELPERSRCS) - -$(call TOOBJSDEPS, $(MODULE_HELPERSRCS)) : \ - EXTRAFLAGS += -Wall -Werror $(THREADS_CFLAGS) - -../libexec/linuxcnc_module_helper: $(call TOOBJS, $(MODULE_HELPERSRCS)) \ - ../lib/liblinuxcncini.so.0 - $(ECHO) Linking $(notdir $@) - @mkdir -p $(dir $@) - $(Q)$(CXX) $(LDFLAGS) -o $@ $^ - -TARGETS += ../libexec/linuxcnc_module_helper diff --git a/src/module_helper/module_helper.c b/src/module_helper/module_helper.c deleted file mode 100644 index c67571c4ea..0000000000 --- a/src/module_helper/module_helper.c +++ /dev/null @@ -1,135 +0,0 @@ -// Copyright 2006-2010, various authors -// -// This program 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 2 of the License, or -// (at your option) any later version. -// -// This program 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 this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -/* -This module_helper program, installed setuid, allows the user to add -and remove modules necessary to run LinuxCNC. It looks for modules in -the RTLIB_DIR directory, and if not found there, looks in RTDIR (if -defined; needed by RTAI only). - -Without a scheme like this, we have to rely on sudo to start AND EXIT -our program, and that may require the user to enter a password. -Prompting for a password to exit a program is bad. If the user -cancels at that phase of the run, it's also bad since we leave -realtime modules inserted and he'll probably end up being forced to -reboot. - -In summary, I don't like this any more than you do, but I can't -think of a better way. -*/ - -#include -#include -#include -#include -#include // PATH_MAX - -#include "rtapi.h" -#include "rtapi_compat.h" - -void error(int argc, char **argv) { - int i; - int res; - char *prog = argv[0]; - - /* drop root privs permanently */ - res = setuid(getuid()); - if(res != 0) - { - perror("setuid"); - exit(1); - } - - fprintf(stderr, "%s: Invalid usage with args:", argv[0]); - for(i=1; i -#include - -int main(int argc, char **argv) { - char *mod; - int i; - int inserting = 0; - int res; - char **exec_argv; - char modpath[PATH_MAX]; - - if(geteuid() != 0) { - fprintf(stderr, "module_helper is not setuid root\n"); - return 1; - } - /* drop root privs temporarily */ - res = seteuid(getuid()); - if(res != 0) - { - perror("seteuid"); - return 1; - } - - if(argc < 3) error(argc, argv); - if(strcmp(argv[1], "insert") && strcmp(argv[1], "remove")) error(argc, argv); - exec_argv = malloc(argc * sizeof(char *)); - - if(!strcmp(argv[1], "insert")) - inserting = 1; - - mod = argv[2]; - - if(inserting) { - // Construct the module path - if (module_path(modpath, mod) < 0) { - // Failed to find module path - fprintf(stderr, "%s: Unable to locate module '%s'\n", argv[0], - mod); - exit(1); - } - - exec_argv[0] = "/sbin/insmod"; - exec_argv[1] = modpath; - - for(i=3; i&1 | wc -l` - case $LINES in - 1) echo "Test OK: $@" ;; - *) echo "*** TEST FAILED ***" - echo "Test: $@" - echo "Output:" - "$@" 2>&1 ;; - esac -} - -FAIL () { - LINES=`"$@" 2>&1 | wc -l` - case $LINES in - 1) echo "*** TEST FAILED ***" - echo "Test: $@" - echo "Output:" - "$@" 2>&1 ;; - *) echo "Test OK: $@" ;; - esac -} - -# These should succeed -SUCCEED ./linuxcnc_module_helper insert /lib/modules/rtapi.ko -SUCCEED ./linuxcnc_module_helper insert /lib/modules/cheese/rtapi.o - -SUCCEED ./linuxcnc_module_helper remove rtapi - -# These should fail -FAIL ./linuxcnc_module_helper insert /lib/modules/../../rtapi.ko -FAIL ./linuxcnc_module_helper insert /lib/modules/rtapi.ok -FAIL ./linuxcnc_module_helper insert /lib/modules/rtapi.oo -FAIL ./linuxcnc_module_helper insert /lib/modules/rtapicheese.ko -FAIL ./linuxcnc_module_helper insert /lib/modules/r.ko -FAIL ./linuxcnc_module_helper insert /lib/modules/rtapi.cheese.ko -FAIL ./linuxcnc_module_helper insert /lib/modules/.cheese.ko -FAIL ./linuxcnc_module_helper insert /lib/modules/.ko - -FAIL ./linuxcnc_module_helper remove rtapicheese -FAIL ./linuxcnc_module_helper remove r -FAIL ./linuxcnc_module_helper remove rtapi.cheese diff --git a/src/regressions/check-tests/Submakefile b/src/regressions/check-tests/Submakefile index b38e3bbce5..b66a79d5cb 100644 --- a/src/regressions/check-tests/Submakefile +++ b/src/regressions/check-tests/Submakefile @@ -8,7 +8,7 @@ INCLUDES += $(CHECK_TESTS) TESTS = check_tests -check_PROGRAMS = ../bin/check_tests +check_PROGRAMS = ../bin/check_tests check_tests_SOURCES = $(addprefix $(CHECK_TESTS)/, \ timers.c \ check-util.c \ @@ -22,7 +22,7 @@ check_tests_LDADD = ../lib/libmtalk.so.0 \ ../lib/liblinuxcncini.so.0 $(call TOOBJSDEPS, $(check_tests_SOURCES)) : EXTRAFLAGS += \ - $(CHECK_CFLAGS) -DULAPI -DBUILD_SYS_USER_DSO -fPIC -pthread + $(CHECK_CFLAGS) -DULAPI -fPIC -pthread TARGETS += $(check_PROGRAMS) @@ -38,7 +38,7 @@ USERSRCS += $(check_tests_SOURCES) # /tmp/foo_ring_expanded-c.i: -# $(CC) -E $(CFLAGS) $(CHECK_CFLAGS) -DULAPI -DBUILD_SYS_USER_DSO -I. -Irtapi -x c -std=c11 \ +# $(CC) -E $(CFLAGS) $(CHECK_CFLAGS) -DULAPI -I. -Irtapi -x c -std=c11 \ # $(CHECK_TESTS)/check_tests.c | $(CB) > $@ # TARGETS += /tmp/foo_ring_expanded-c.i endif diff --git a/src/rtapi/Submakefile b/src/rtapi/Submakefile index e7fd6793e6..32841cf895 100644 --- a/src/rtapi/Submakefile +++ b/src/rtapi/Submakefile @@ -66,7 +66,7 @@ $(ULAPISO): ../lib/liblinuxcnchal.so ../lib/liblinuxcncshm.so \ $(ECHO) Creating shared object $(notdir $@) @rm -f $@ $(Q)$(CC) $(LDFLAGS) -Wl,-soname,$(notdir $@) -shared \ - -o $@ $^ $(ULAPISO_LIBS) $(RT_LDFLAGS) \ + -o $@ $^ $(ULAPISO_LIBS) \ ../lib/liblinuxcncshm.so \ ../lib/liblinuxcnchal.so @@ -100,7 +100,7 @@ $(ULAPI_AUTOLOAD_LIB).0: $(call TOOBJS, $(ULAPI_AUTOLOAD_SRCS)) \ @rm -f $@ $(Q)$(CC) $(LDFLAGS) -Wl,-rpath,$(EMC2_RTLIB_DIR) \ -Wl,-soname,$(notdir $@) -shared \ - -o $@ $^ -ldl $(RT_LDFLAGS) + -o $@ $^ -ldl TARGETS += $(ULAPI_AUTOLOAD_LIB) $(ULAPI_AUTOLOAD_LIB).0 @@ -273,22 +273,13 @@ rtapi-objs += rtapi/rtapi_pci.o RTAPI_MODULE_EXTRA_LDFLAGS += $(LIBUDEV_LIBS) endif -RTAPI_MODULE_EXTRA_LDFLAGS += $(RT_LDFLAGS) - -# - POSIX -ifeq ($(HAVE_POSIX_THREADS),yes) -rtapi_posix-objs := $(rtapi-objs) rtapi/rt-preempt.o -$(OBJDIR)/rtapi/rt-preempt.o: EXTRA_CFLAGS += -DRTAPI_POSIX -$(RTLIBDIR)/rtapi_posix.so: EXTRA_LDFLAGS += $(RTAPI_MODULE_EXTRA_LDFLAGS) -$(RTLIBDIR)/rtapi_posix.so: \ - $(addprefix $(OBJDIR)/,$(rtapi_posix-objs)) -obj-m += rtapi_posix.o -endif - -# - RT_PREEMPT +# - RT_PREEMPT + POSIX ifeq ($(HAVE_RT_PREEMPT_THREADS),yes) rtapi_rt-preempt-objs := $(rtapi-objs) rtapi/rt-preempt.o -$(RTLIBDIR)/rtapi_rt-preempt.so: EXTRA_LDFLAGS += $(RTAPI_MODULE_EXTRA_LDFLAGS) +$(addprefix $(OBJDIR)/,$(rtapi_rt-preempt-objs)): \ + EXTRA_CFLAGS += $(RT_PREEMPT_THREADS_RTFLAGS) +$(RTLIBDIR)/rtapi_rt-preempt.so: EXTRA_LDFLAGS += \ + $(RTAPI_MODULE_EXTRA_LDFLAGS) $(RT_PREEMPT_THREADS_LDFLAGS) $(RTLIBDIR)/rtapi_rt-preempt.so: \ $(addprefix $(OBJDIR)/,$(rtapi_rt-preempt-objs)) obj-m += rtapi_rt-preempt.o @@ -297,9 +288,12 @@ endif # - Xenomai ifeq ($(HAVE_XENOMAI_THREADS),yes) rtapi_xenomai-objs := $(rtapi-objs) rtapi/xenomai.o -$(RTLIBDIR)/rtapi_xenomai.so: EXTRA_LDFLAGS += $(RTAPI_MODULE_EXTRA_LDFLAGS) +$(addprefix $(OBJDIR)/,$(rtapi_xenomai-objs)): \ + EXTRA_CFLAGS += $(XENOMAI_THREADS_RTFLAGS) +$(RTLIBDIR)/rtapi_xenomai.so: EXTRA_LDFLAGS += \ + $(RTAPI_MODULE_EXTRA_LDFLAGS) $(XENOMAI_THREADS_LDFLAGS) $(RTLIBDIR)/rtapi_xenomai.so: \ - $(addprefix $(OBJDIR)/,$(rtapi_xenomai-objs) rtapi/xenomai.o) + $(addprefix $(OBJDIR)/,$(rtapi_xenomai-objs)) obj-m += rtapi_xenomai.o endif diff --git a/src/rtapi/chkenv.c b/src/rtapi/chkenv.c index 871e0fa3f1..e844ae7181 100644 --- a/src/rtapi/chkenv.c +++ b/src/rtapi/chkenv.c @@ -11,12 +11,11 @@ struct passwd *pw; char path[80]; char *flavour = NULL; char *id = NULL; -char *build_sys = NULL; pw = getpwuid(getuid()); strcpy(path, pw->pw_dir); strcat(path, "/.bashrc"); - + FILE *fp; fp = fopen((const char *) path, "a+"); flavour = getenv ("FLAVOR"); @@ -24,18 +23,14 @@ char *build_sys = NULL; // occurs if .bashrc has `export FLAVOR=$(flavor)` say, but flavor binary not built yet if (flavour == NULL || (flavour != NULL && strlen(flavour) < 2)) fprintf(fp, "\nexport FLAVOR=$(echo $(flavor))\n"); - + id = getenv ("FLAVOR_ID"); if (id == NULL || (flavour != NULL && strlen(flavour) < 2)) fprintf(fp, "\nexport FLAVOR_ID=$(echo $(flavor -d))\n"); - - build_sys = getenv ("BUILD_SYS"); - if (build_sys == NULL || (flavour != NULL && strlen(flavour) < 2)) - fprintf(fp, "\nexport BUILD_SYS=$(echo $(flavor -b))\n"); - + fclose(fp); - - if(flavour == NULL | id == NULL | build_sys == NULL) + + if(flavour == NULL | id == NULL) { printf("Shell environment was incomplete - update bash shell\n"); return (1); diff --git a/src/rtapi/flavor.c b/src/rtapi/flavor.c index 2f7f74bba3..36ebb0bc9b 100644 --- a/src/rtapi/flavor.c +++ b/src/rtapi/flavor.c @@ -1,15 +1,15 @@ /* Copyright (C) 2012, 2013 Michael Haberler - * + * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. - * + * * This program 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 * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA @@ -51,8 +51,6 @@ int main(int argc, char **argv) printf("%s\n", flavor->name); } else if (strcmp(argv[1],"-m") == 0) { printf("%s\n", flavor->mod_ext); - } else if (strcmp(argv[1],"-b") == 0) { - printf("%s\n", flavor->build_sys); } else if (strcmp(argv[1],"-d") == 0) { printf("%d\n", flavor->flavor_id); } else { diff --git a/src/rtapi/rt-preempt.c b/src/rtapi/rt-preempt.c index da0f3d2281..880cbdddc2 100644 --- a/src/rtapi/rt-preempt.c +++ b/src/rtapi/rt-preempt.c @@ -3,8 +3,8 @@ * * This file, 'rt-preempt.c', implements the unique * functions for the RT_PREEMPT thread system. -* -* Copyright (C) 2012, 2013 Michael Büsch , +* +* Copyright (C) 2012, 2013 Michael Büsch , * John Morris , * Michael Haberler * @@ -12,12 +12,12 @@ * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. -* +* * This program 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 * Lesser General Public License for more details. -* +* * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA @@ -249,7 +249,7 @@ static int realtime_set_affinity(task_data *task) { sizeof(set), &set); if (task->cpu > -1) { // CPU set explicitly if (!CPU_ISSET(task->cpu, &set)) { - rtapi_print_msg(RTAPI_MSG_ERR, + rtapi_print_msg(RTAPI_MSG_ERR, "RTAPI: ERROR: realtime_set_affinity(%s): " "CPU %d not available\n", task->name, task->cpu); @@ -284,7 +284,7 @@ static int realtime_set_affinity(task_data *task) { return -EINVAL; } rtapi_print_msg(RTAPI_MSG_DBG, - "realtime_set_affinity(): task %s assigned to CPU %d\n", + "realtime_set_affinity(): task %s assigned to CPU %d\n", task->name, use_cpu); return 0; } @@ -355,18 +355,22 @@ static void *realtime_thread(void *arg) { task->name, task->cgname); } if (!(task->flags & TF_NONRT)) { - if (realtime_set_priority(task)) { -#ifdef RTAPI_POSIX // This requires privs - tell user how to obtain them - rtapi_print_msg(RTAPI_MSG_ERR, - "to get non-preemptive scheduling with POSIX threads,"); - rtapi_print_msg(RTAPI_MSG_ERR, - "you need to run 'sudo setcap cap_sys_nice=pe libexec/rtapi_app_posix'"); - rtapi_print_msg(RTAPI_MSG_ERR, - "your might have to install setcap (e.g.'sudo apt-get install libcap2-bin') to do this."); -#else + if (realtime_set_priority(task) && + global_data->rtapi_thread_flavor == RTAPI_POSIX_ID) { + // This requires privs - tell user how to obtain them + rtapi_print_msg( + RTAPI_MSG_ERR, + "to get non-preemptive scheduling with POSIX threads,"); + rtapi_print_msg( + RTAPI_MSG_ERR, + "you need to run " + "'sudo setcap cap_sys_nice=pe libexec/rtapi_app_posix'"); + rtapi_print_msg( + RTAPI_MSG_ERR, + "your might have to install setcap " + "(e.g.'sudo apt-get install libcap2-bin') to do this."); + } else goto error; -#endif - } } /* We're done initializing. Open the barrier. */ @@ -485,13 +489,13 @@ int _rtapi_wait_hook(const int flags) { ts->flavor.rtpreempt.wait_errors++; -#ifndef RTAPI_POSIX - rtapi_exception_detail_t detail = {0}; - detail.task_id = task_id(task); + if (global_data->rtapi_thread_flavor == RTAPI_POSIX_ID) { + rtapi_exception_detail_t detail = {0}; + detail.task_id = task_id(task); - if (rt_exception_handler) - rt_exception_handler(RTP_DEADLINE_MISSED, &detail, ts); -#endif + if (rt_exception_handler) + rt_exception_handler(RTP_DEADLINE_MISSED, &detail, ts); + } } return 0; } diff --git a/src/rtapi/rtapi.h b/src/rtapi/rtapi.h index 9740f4f44a..6be87617af 100644 --- a/src/rtapi/rtapi.h +++ b/src/rtapi/rtapi.h @@ -1031,18 +1031,10 @@ extern rtapi_exception_handler_t _rtapi_set_exception(rtapi_exception_handler_t a non-NULL value. */ # include -# if !defined(BUILD_SYS_USER_DSO) -# include -# include -# endif // BUILD_SYS_USER_DSO static __inline__ void *rtapi_request_region(unsigned long base, unsigned long size, const char *name) { -# if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) && !defined(BUILD_SYS_USER_DSO) - return (void*)request_region(base, size, name); -# else return (void*)-1; -# endif } /** 'rtapi_release_region() releases I/O memory reserved by @@ -1052,9 +1044,6 @@ extern rtapi_exception_handler_t _rtapi_set_exception(rtapi_exception_handler_t */ static __inline__ void rtapi_release_region(unsigned long base, unsigned long int size) { -# if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) && !defined(BUILD_SYS_USER_DSO) - release_region(base, size); -# endif } #endif // RTAPI && BUILD_DRIVERS @@ -1064,8 +1053,7 @@ extern rtapi_exception_handler_t _rtapi_set_exception(rtapi_exception_handler_t /** rtapi_switch contains pointers to the _rtapi_* functions declared above. The struct is initialized in rtapi_common.c. - Each thread system needs a member in the thread_flavor_id_t enum, - and should set the macro THREAD_FLAVOR_ID to that enumerator. + Each thread system needs a member in the thread_flavor_id_t enum. */ // prototype for dummy rtapi placeholder function @@ -1176,9 +1164,7 @@ extern void rtapi_autorelease_mutex(void *variable); // configurable at rtapi.so module load time _only_ extern int rtapi_instance; -#if defined(BUILD_SYS_USER_DSO) extern long int simple_strtol(const char *nptr, char **endptr, int base); -#endif #ifdef ULAPI // the ulapi constructor and destructor @@ -1230,15 +1216,6 @@ extern int ulapi_loaded(void); #include -#if !defined(BUILD_SYS_USER_DSO) -#ifndef LINUX_VERSION_CODE -#include -#endif -#endif -#ifndef KERNEL_VERSION -#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) -#endif - #ifndef LINUX_VERSION_CODE #define LINUX_VERSION_CODE 0 #endif @@ -1249,8 +1226,6 @@ extern int ulapi_loaded(void); // compile-time assert #define rtapi_ct_assert(cond, failure) _Static_assert(cond, failure) -#if defined(BUILD_SYS_USER_DSO) || (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)) - #define RTAPI_MP_INT(var,descr) \ MODULE_PARM(var,"i"); \ MODULE_PARM_DESC(var,descr); @@ -1312,92 +1287,6 @@ extern int ulapi_loaded(void); INSTANCE_PARM_DESC(var,descr); -#else /* version 2.6 or later */ - -#include - -#define RTAPI_MP_INT(var,descr) \ - module_param(var, int, 0); \ - MODULE_PARM_DESC(var,descr); - -#define RTAPI_MP_UINT(var,descr) \ - module_param(var, uint, 0); \ - MODULE_PARM_DESC(var,descr); - -#define RTAPI_MP_LONG(var,descr) \ - module_param(var, long, 0); \ - MODULE_PARM_DESC(var,descr); - -#define RTAPI_MP_STRING(var,descr) \ - module_param(var, charp, 0); \ - MODULE_PARM_DESC(var,descr); - -#define RTAPI_MP_ARRAY_INT(var,num,descr) \ - int __dummy_##var; \ - module_param_array(var, int, &(__dummy_##var), 0); \ - MODULE_PARM_DESC(var,descr); - -#define RTAPI_MP_ARRAY_LONG(var,num,descr) \ - int __dummy_##var; \ - module_param_array(var, long, &(__dummy_##var), 0); \ - MODULE_PARM_DESC(var,descr); - -#define RTAPI_MP_ARRAY_STRING(var,num,descr) \ - int __dummy_##var; \ - module_param_array(var, charp, &(__dummy_##var), 0); \ - MODULE_PARM_DESC(var,descr); - -// for kthreads, export params in -// /sys/modules//parameters/ -#define RTAPI_IP_MODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP) - -#define RTAPI_IP_INT(var,descr) \ - module_param(var, int, RTAPI_IP_MODE); \ - MODULE_PARM_DESC(var,descr); - -#define RTAPI_IP_UINT(var,descr) \ - module_param(var, uint, RTAPI_IP_MODE); \ - MODULE_PARM_DESC(var,descr); - -#define RTAPI_IP_LONG(var,descr) \ - module_param(var, long, RTAPI_IP_MODE); \ - MODULE_PARM_DESC(var,descr); - -#define RTAPI_IP_STRING(var,descr) \ - module_param(var, charp, RTAPI_IP_MODE); \ - MODULE_PARM_DESC(var,descr); - -#ifdef _NOTYET - -// no param array support for instance params yet -#define RTAPI_IP_ARRAY_INT(var,num,descr) \ - int __dummy_##var; \ - module_param_array(var, int, &(__dummy_##var), RTAPI_IP_MODE); \ - MODULE_PARM_DESC(var,descr); - -#define RTAPI_IP_ARRAY_LONG(var,num,descr) \ - int __dummy_##var; \ - module_param_array(var, long, &(__dummy_##var), RTAPI_IP_MODE); \ - MODULE_PARM_DESC(var,descr); - -#define RTAPI_IP_ARRAY_STRING(var,num,descr) \ - int __dummy_##var; \ - module_param_array(var, charp, &(__dummy_##var), RTAPI_IP_MODE); \ - MODULE_PARM_DESC(var,descr); - -#endif // _NOTYET - -#endif /* version < 2.6 */ - -#if !defined(BUILD_SYS_USER_DSO) -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0) -#define MODULE_LICENSE(license) \ -static const char __module_license[] __attribute__((section(".modinfo"))) = \ -"license=" license -#endif -#endif - - // module tagging for feature inspection #define _RTAPI_TAG(line, key, value) \ diff --git a/src/rtapi/rtapi_app.cc b/src/rtapi/rtapi_app.cc index d9796d5caa..9bcfb0852e 100644 --- a/src/rtapi/rtapi_app.cc +++ b/src/rtapi/rtapi_app.cc @@ -25,7 +25,6 @@ * * CAP_SYS_RAWIO open /dev/mem and /dev/kmem & Perform I/O port operations * CAP_SYS_NICE set real-time scheduling policies, set CPU affinity - * CAP_SYS_MODULE Load and unload kernel modules * * NB: Capabilities are a per-thread attribute, * so this might need to be done on a per-thread basis @@ -159,13 +158,13 @@ static AvahiCzmqPoll *av_loop; #endif // the following two variables, despite extern, are in fact private to rtapi_app -// in the sense that they are not visible in the RT space (the namespace +// in the sense that they are not visible in the RT space (the namespace // of dlopen'd modules); these are supposed to be 'ships in the night' // relative to any symbols exported by rtapi_app. // -// global_data is set in attach_global_segment() which was already +// global_data is set in attach_global_segment() which was already // created by rtapi_msgd -// rtapi_switch is set once rtapi.so has been loaded by calling the +// rtapi_switch is set once rtapi.so has been loaded by calling the // rtapi_get_handle() method in rtapi.so. // Once set, rtapi methods in rtapi.so can be called normally through // the rtapi_switch redirection (see rtapi.h). @@ -320,53 +319,6 @@ static int do_module_args(modinfo_t &mi, return 0; } -// kthreads: -// only instance args are exported in sysfs, module params are not -// see RTAPI_IP_MODEin src/rtapi/rtapi.h -// therefore, if we see a param on kthreads newinst, we just -// overwrite the previous value via sysfs -static int do_kmodinst_args(const string &comp, - pbstringarray_t args, - machinetalk::Container &pbreply) -{ - for (int i = 0; i < args.size(); i++) { - string s(args.Get(i)); - remove_quotes(s); - size_t idx = s.find('='); - if(idx == string::npos) { - note_printf(pbreply, "Invalid parameter `%s'", - s.c_str()); - return -1; - } - string param_name(s, 0, idx); - string param_value(s, idx+1); - - // ls /sys/module/brd/parameters/ - // max_part rd_nr rd_size - - string path = "/sys/module/" + comp + "/parameters/" + param_name; - struct stat sb; - if (stat(path.c_str(), &sb) < 0) { - // if param_name is an instance param, it's exported in sysfs - note_printf(pbreply, "newinst '%s': no such instance parameter '%s'", - comp.c_str(), - param_name.c_str()); - return -ENOENT; - } - int retval = rtapi_fs_write(path.c_str(), param_value.c_str()); - if (retval < 0) { - note_printf(pbreply, "newinst %s: setting param %s to %s failed: %d - %s", - comp.c_str(), - param_name.c_str(), - param_value.c_str(), - retval, - strerror(-retval)); - return retval; - } - } - return 0; -} - static const char **pbargv(const pbstringarray_t &args) { const char **argv, **s; @@ -448,72 +400,62 @@ static int do_newinst_cmd(int instance, int retval = -1; - if (kernel_threads(flavor)) { - string s = pbconcat(args); - retval = do_kmodinst_args(comp,args,pbreply); - if (retval) return retval; - return rtapi_fs_write(PROCFS_RTAPICMD,"call newinst %s %s %s", - comp.c_str(), - instname.c_str(), - s.c_str()); - } else { - if (call_usrfunct == NULL) { - pbreply.set_retcode(1); - pbreply.add_note("this HAL library version does " - "not support user functions - version problem?"); - return -1; - } - if (modules.count(comp) == 0) { - // if newinst via halcmd, it should have been automatically loaded already - note_printf(pbreply, - "newinst: component '%s' not loaded", - comp.c_str()); - return -1; - } - modinfo_t &mi = modules[comp]; - dlerror(); - - string s = pbconcat(mi.iparm); - - // set the default instance parameters which were recorded during - // initial load with record_instanceparams() - retval = do_module_args(mi, mi.iparm, RTAPI_IP_SYMPREFIX, pbreply); - if (retval < 0) { - note_printf(pbreply, - "passing default instance args for '%s' failed: '%s'", - instname.c_str(), s.c_str()); - return retval; - } + if (call_usrfunct == NULL) { + pbreply.set_retcode(1); + pbreply.add_note("this HAL library version does " + "not support user functions - version problem?"); + return -1; + } + if (modules.count(comp) == 0) { + // if newinst via halcmd, it should have been automatically loaded already + note_printf(pbreply, + "newinst: component '%s' not loaded", + comp.c_str()); + return -1; + } + modinfo_t &mi = modules[comp]; + dlerror(); - s = pbconcat(args); - pbstringarray_t kvpairs, leftovers; - separate_kv(kvpairs, leftovers, args); + string s = pbconcat(mi.iparm); - // set the instance parameters - retval = do_module_args(mi, kvpairs, RTAPI_IP_SYMPREFIX, pbreply); - if (retval < 0) { - note_printf(pbreply, - "passing args for '%s' failed: '%s'", - instname.c_str(), s.c_str()); - return retval; - } - rtapi_print_msg(RTAPI_MSG_DBG, - "%s: instargs='%s'\n",__FUNCTION__, - s.c_str()); + // set the default instance parameters which were recorded during + // initial load with record_instanceparams() + retval = do_module_args(mi, mi.iparm, RTAPI_IP_SYMPREFIX, pbreply); + if (retval < 0) { + note_printf(pbreply, + "passing default instance args for '%s' failed: '%s'", + instname.c_str(), s.c_str()); + return retval; + } - // massage the argv for the newinst user function, - // and call it - pbstringarray_t a; - a.Add()->assign(comp); - a.Add()->assign(instname); - a.MergeFrom(leftovers); - const char **argv = pbargv(a); // pass non-kv pairs only - int ureturn = 0; - retval = call_usrfunct("newinst", a.size(), argv, &ureturn ); - if (argv) free(argv); - if (retval == 0) retval = ureturn; - usrfunct_error(retval, "newinst", args, pbreply); + s = pbconcat(args); + pbstringarray_t kvpairs, leftovers; + separate_kv(kvpairs, leftovers, args); + + // set the instance parameters + retval = do_module_args(mi, kvpairs, RTAPI_IP_SYMPREFIX, pbreply); + if (retval < 0) { + note_printf(pbreply, + "passing args for '%s' failed: '%s'", + instname.c_str(), s.c_str()); + return retval; } + rtapi_print_msg(RTAPI_MSG_DBG, + "%s: instargs='%s'\n",__FUNCTION__, + s.c_str()); + + // massage the argv for the newinst user function, + // and call it + pbstringarray_t a; + a.Add()->assign(comp); + a.Add()->assign(instname); + a.MergeFrom(leftovers); + const char **argv = pbargv(a); // pass non-kv pairs only + int ureturn = 0; + retval = call_usrfunct("newinst", a.size(), argv, &ureturn ); + if (argv) free(argv); + if (retval == 0) retval = ureturn; + usrfunct_error(retval, "newinst", args, pbreply); return retval; } @@ -525,23 +467,20 @@ static int do_delinst_cmd(int instance, string s; - if (kernel_threads(flavor)) { - return rtapi_fs_write(PROCFS_RTAPICMD,"call delinst %s", instname.c_str()); - } else { - if (call_usrfunct == NULL) { - pbreply.set_retcode(1); - pbreply.add_note("this HAL library version does not support user functions - version problem?"); - return -1; - } - pbstringarray_t a; - a.Add()->assign(instname); - const char **argv = pbargv(a); - int ureturn = 0; - retval = call_usrfunct("delinst", a.size(), argv, &ureturn); - if (argv) free(argv); - if (retval == 0) retval = ureturn; - usrfunct_error(retval, "delinst", a, pbreply); + if (call_usrfunct == NULL) { + pbreply.set_retcode(1); + pbreply.add_note("this HAL library version does not support " + "user functions - version problem?"); + return -1; } + pbstringarray_t a; + a.Add()->assign(instname); + const char **argv = pbargv(a); + int ureturn = 0; + retval = call_usrfunct("delinst", a.size(), argv, &ureturn); + if (argv) free(argv); + if (retval == 0) retval = ureturn; + usrfunct_error(retval, "delinst", a, pbreply); return retval; } @@ -552,25 +491,21 @@ static int do_callfunc_cmd(int instance, { int retval = -1; - if (kernel_threads(flavor)) { - string s = pbconcat(args); - return rtapi_fs_write(PROCFS_RTAPICMD,"call %s %s", func.c_str(), s.c_str()); - } else { - if (call_usrfunct == NULL) { - pbreply.set_retcode(1); - pbreply.add_note("this HAL library version does not support user functions - version problem?"); - return -1; - } - const char **argv = pbargv(args); - int ureturn = 0; - retval = call_usrfunct(func.c_str(), - args.size(), - argv, - &ureturn); - if (argv) free(argv); - if (retval == 0) retval = ureturn; - usrfunct_error(retval, func, args, pbreply); + if (call_usrfunct == NULL) { + pbreply.set_retcode(1); + pbreply.add_note("this HAL library version does not support user " + "functions - version problem?"); + return -1; } + const char **argv = pbargv(args); + int ureturn = 0; + retval = call_usrfunct(func.c_str(), + args.size(), + argv, + &ureturn); + if (argv) free(argv); + if (retval == 0) retval = ureturn; + usrfunct_error(retval, func, args, pbreply); return retval; } @@ -582,7 +517,6 @@ static int do_load_cmd(int instance, machinetalk::Container &pbreply) { char module_path[PATH_MAX]; - int retval; // For modules given as paths, use the path basename as the module name string name = path; @@ -590,79 +524,65 @@ static int do_load_cmd(int instance, name = name.substr(name.find_last_of("/") + 1); if (modules.count(name) == 0) { - if (kernel_threads(flavor)) { - string cmdargs = pbconcat(args, " ", "'"); - retval = run_module_helper( - "insert %s %s", path.c_str(), cmdargs.c_str()); - if (retval) { - note_printf( - pbreply, "couldnt insmod %s - see dmesg\n", path.c_str()); - } else { - modules[name] = modinfo(); - loading_order.push_back(name); - } - return retval; - } else { - strncpy(module_path, (path + flavor->mod_ext).c_str(), - PATH_MAX); - modinfo_t mi = modinfo_t(); - - mi.handle = dlopen(module_path, RTLD_GLOBAL |RTLD_NOW); - if (!mi.handle) { - string errmsg(dlerror()); - note_printf(pbreply, "%s: dlopen: %s", - __FUNCTION__, errmsg.c_str()); - note_printf(pbreply, "rpath=%s", rpath == NULL ? "" : rpath); - return -1; - } - // first load of a module. Record default instanceparams - // so they can be replayed before newinst - record_instparms(module_path, mi); - - // retrieve the address of rtapi_switch_struct - // so rtapi functions can be called and members - // accessed - // RTAPIMOD only will have that, but we need that as soon as - // possible so not much use in testing the name - if (rtapi_switch == NULL) { - rtapi_get_handle_t rtapi_get_handle; - dlerror(); - rtapi_get_handle = (rtapi_get_handle_t)dlsym(mi.handle, - "rtapi_get_handle"); - if (rtapi_get_handle != NULL) { - rtapi_switch = rtapi_get_handle(); - assert(rtapi_switch != NULL); - } - } + strncpy(module_path, (path + flavor->mod_ext).c_str(), + PATH_MAX); + modinfo_t mi = modinfo_t(); + + mi.handle = dlopen(module_path, RTLD_GLOBAL |RTLD_NOW); + if (!mi.handle) { + string errmsg(dlerror()); + note_printf(pbreply, "%s: dlopen: %s", + __FUNCTION__, errmsg.c_str()); + note_printf(pbreply, "rpath=%s", rpath == NULL ? "" : rpath); + return -1; + } + // first load of a module. Record default instanceparams + // so they can be replayed before newinst + record_instparms(module_path, mi); + + // retrieve the address of rtapi_switch_struct + // so rtapi functions can be called and members + // accessed + // RTAPIMOD only will have that, but we need that as soon as + // possible so not much use in testing the name + if (rtapi_switch == NULL) { + rtapi_get_handle_t rtapi_get_handle; + dlerror(); + rtapi_get_handle = (rtapi_get_handle_t)dlsym(mi.handle, + "rtapi_get_handle"); + if (rtapi_get_handle != NULL) { + rtapi_switch = rtapi_get_handle(); + assert(rtapi_switch != NULL); + } + } - int (*start)(void) = DLSYM(mi.handle, "rtapi_app_main"); - if (!start) { - note_printf(pbreply, "%s: dlsym: %s\n", - name.c_str(), dlerror()); - return -1; - } - int result; + int (*start)(void) = DLSYM(mi.handle, "rtapi_app_main"); + if (!start) { + note_printf(pbreply, "%s: dlsym: %s\n", + name.c_str(), dlerror()); + return -1; + } + int result; - result = do_module_args(mi, args, RTAPI_MP_SYMPREFIX, pbreply); - if (result < 0) { - dlclose(mi.handle); - return -1; - } + result = do_module_args(mi, args, RTAPI_MP_SYMPREFIX, pbreply); + if (result < 0) { + dlclose(mi.handle); + return -1; + } - // need to call rtapi_app_main with as root - // RT thread creation and hardening requires this - if ((result = start()) < 0) { - note_printf(pbreply, "rtapi_app_main(%s): %d %s\n", - name.c_str(), result, strerror(-result)); - return result; - } - modules[name] = mi; - loading_order.push_back(name); + // need to call rtapi_app_main with as root + // RT thread creation and hardening requires this + if ((result = start()) < 0) { + note_printf(pbreply, "rtapi_app_main(%s): %d %s\n", + name.c_str(), result, strerror(-result)); + return result; + } + modules[name] = mi; + loading_order.push_back(name); - rtapi_print_msg(RTAPI_MSG_DBG, "%s: loaded from %s\n", - name.c_str(), module_path); - return 0; - } + rtapi_print_msg(RTAPI_MSG_DBG, "%s: loaded from %s\n", + name.c_str(), module_path); + return 0; } else { note_printf(pbreply, "%s: already loaded\n", name.c_str()); return -1; @@ -680,24 +600,12 @@ static int do_load_cmd(int instance, return -1; } else { modinfo_t &mi = modules[name]; - if (kernel_threads(flavor)) { - retval = run_module_helper("remove %s", name.c_str()); - if (retval) { - note_printf(reply, "couldnt rmmod %s - see dmesg\n", - name.c_str()); - return retval; - } else { - modules.erase(modules.find(name)); - remove_module(name); - } - } else { - int (*stop)(void) = DLSYM(mi.handle, "rtapi_app_exit"); - if (stop) - stop(); - dlclose(mi.handle); - modules.erase(modules.find(name)); - remove_module(name); - } + int (*stop)(void) = DLSYM(mi.handle, "rtapi_app_exit"); + if (stop) + stop(); + dlclose(mi.handle); + modules.erase(modules.find(name)); + remove_module(name); } rtapi_print_msg(RTAPI_MSG_DBG, " '%s' unloaded\n", name.c_str()); return retval; @@ -742,49 +650,7 @@ static void exit_actions(int instance) static int init_actions(int instance) { int retval; - char moddir[PATH_MAX]; - - get_rtapi_config(moddir,"MODULES",PATH_MAX); - if (kernel_threads(flavor)) { - // kthreads cant possibly run without shmdrv, so bail - // also, cannot load it here because rtapi_msgd already needs this - // so it'd be too late here - if (!is_module_loaded("shmdrv")) { - rtapi_print_msg(RTAPI_MSG_ERR, "shmdrv not loaded"); - return -1; - } - // leftovers or running session? - if (is_module_loaded(RTAPIMOD)) { - rtapi_print_msg(RTAPI_MSG_ERR, "rtapi already loaded"); - return -1; - } - if (is_module_loaded(HALMOD)) { - rtapi_print_msg(RTAPI_MSG_ERR, "hal_lib already loaded"); - return -1; - } - char *m = strtok(moddir, "\t "); - while (m != NULL) { - char cmdline[PATH_MAX]; - if (!strcmp(m, RTAPIMOD)) { - snprintf(cmdline, sizeof(cmdline), - "insert %s rtapi_instance=%d", m, instance_id); - } else { - snprintf(cmdline, sizeof(cmdline), "insert %s", m); - } - - rtapi_print_msg(RTAPI_MSG_DBG, "running '%s'", cmdline); - retval = run_module_helper(cmdline); - if (retval) { - rtapi_print_msg(RTAPI_MSG_ERR, - "linuxcnc_module_helper '%s' failed - see dmesg\n", - cmdline); - return retval; - } else - rtapi_print_msg(RTAPI_MSG_DBG, "'%s' loaded\n", m); - m = strtok(NULL, "\t "); - } - } machinetalk::Container reply; retval = do_load_cmd(instance, RTAPIMOD, pbstringarray_t(), reply); if (retval) @@ -792,23 +658,21 @@ static int init_actions(int instance) if ((retval = do_load_cmd(instance, HALMOD, pbstringarray_t(), reply))) return retval; - if (!kernel_threads(flavor)) { - // resolve the "hal_call_usrfunct" for later - // callfunc, newinst & delinst need it - modinfo_t &hallib = modules[HALMOD]; - dlerror(); - call_usrfunct = (hal_call_usrfunct_t) dlsym(hallib.handle, - "hal_call_usrfunct"); - - if (call_usrfunct == NULL) { - rtapi_print_msg(RTAPI_MSG_ERR, - "cant resolve 'hal_call_usrfunct' in " - "hal_lib - version problem?"); - char *s = dlerror(); - if (s) - rtapi_print_msg(RTAPI_MSG_ERR, "dlsym(hal_call_usrfunct): '%s'", s); - return -1; - } + // resolve the "hal_call_usrfunct" for later + // callfunc, newinst & delinst need it + modinfo_t &hallib = modules[HALMOD]; + dlerror(); + call_usrfunct = (hal_call_usrfunct_t) dlsym(hallib.handle, + "hal_call_usrfunct"); + + if (call_usrfunct == NULL) { + rtapi_print_msg(RTAPI_MSG_ERR, + "cant resolve 'hal_call_usrfunct' in " + "hal_lib - version problem?"); + char *s = dlerror(); + if (s) + rtapi_print_msg(RTAPI_MSG_ERR, "dlsym(hal_call_usrfunct): '%s'", s); + return -1; } return 0; } @@ -868,6 +732,10 @@ static int rtapi_request(zloop_t *loop, zsock_t *socket, void *arg) char *origin = zmsg_popstr (r); zframe_t *request_frame = zmsg_pop (r); static bool force_exit = false; + modinfo_t mi; + int retval; + int (*create_thread)(const hal_threadargs_t*); + int (*delete_thread)(const char *); if(request_frame == NULL){ rtapi_print_msg(RTAPI_MSG_ERR, "rtapi_request(): NULL zframe_t 'request_frame' passed"); @@ -983,44 +851,33 @@ static int rtapi_request(zloop_t *loop, zsock_t *socket, void *arg) assert(pbreq.rtapicmd().has_instance()); assert(pbreq.rtapicmd().has_flags()); - if (kernel_threads(flavor)) { - int retval = rtapi_fs_write(PROCFS_RTAPICMD,"newthread %s %d %d %d %d", - pbreq.rtapicmd().threadname().c_str(), - pbreq.rtapicmd().threadperiod(), - pbreq.rtapicmd().use_fp(), - pbreq.rtapicmd().cpu(), - pbreq.rtapicmd().flags()); - pbreply.set_retcode(retval < 0 ? retval:0); - - } else { - if (modules.count(HALMOD) == 0) { - pbreply.add_note("hal_lib not loaded"); - pbreply.set_retcode(-1); - break; - } - modinfo_t &mi = modules[HALMOD]; - int (*create_thread)(const hal_threadargs_t*) = - DLSYM(mi.handle, - "hal_create_xthread"); - if (create_thread == NULL) { - pbreply.add_note("symbol 'hal_create_thread' not found in hal_lib"); - pbreply.set_retcode(-1); - break; - } - hal_threadargs_t args; - args.name = pbreq.rtapicmd().threadname().c_str(); - args.period_nsec = pbreq.rtapicmd().threadperiod(); - args.uses_fp = pbreq.rtapicmd().use_fp(); - args.cpu_id = pbreq.rtapicmd().cpu(); - args.flags = (rtapi_thread_flags_t) pbreq.rtapicmd().flags(); - strncpy(args.cgname, pbreq.rtapicmd().cgname().c_str(), LINELEN); - - int retval = create_thread(&args); - if (retval < 0) { - pbreply.add_note("hal_create_xthread() failed, see log"); - } - pbreply.set_retcode(retval); - } + if (modules.count(HALMOD) == 0) { + pbreply.add_note("hal_lib not loaded"); + pbreply.set_retcode(-1); + break; + } + mi = modules[HALMOD]; + create_thread = + DLSYM(mi.handle, + "hal_create_xthread"); + if (create_thread == NULL) { + pbreply.add_note("symbol 'hal_create_thread' not found in hal_lib"); + pbreply.set_retcode(-1); + break; + } + hal_threadargs_t args; + args.name = pbreq.rtapicmd().threadname().c_str(); + args.period_nsec = pbreq.rtapicmd().threadperiod(); + args.uses_fp = pbreq.rtapicmd().use_fp(); + args.cpu_id = pbreq.rtapicmd().cpu(); + args.flags = (rtapi_thread_flags_t) pbreq.rtapicmd().flags(); + strncpy(args.cgname, pbreq.rtapicmd().cgname().c_str(), LINELEN); + + retval = create_thread(&args); + if (retval < 0) { + pbreply.add_note("hal_create_xthread() failed, see log"); + } + pbreply.set_retcode(retval); break; case machinetalk::MT_RTAPI_APP_DELTHREAD: @@ -1028,27 +885,21 @@ static int rtapi_request(zloop_t *loop, zsock_t *socket, void *arg) assert(pbreq.rtapicmd().has_threadname()); assert(pbreq.rtapicmd().has_instance()); - if (kernel_threads(flavor)) { - int retval = rtapi_fs_write(PROCFS_RTAPICMD, "delthread %s", - pbreq.rtapicmd().threadname().c_str()); - pbreply.set_retcode(retval < 0 ? retval:0); - } else { - if (modules.count(HALMOD) == 0) { - pbreply.add_note("hal_lib not loaded"); - pbreply.set_retcode(-1); - break; - } - modinfo_t &mi = modules[HALMOD]; - int (*delete_thread)(const char *) = - DLSYM(mi.handle, "hal_thread_delete"); - if (delete_thread == NULL) { - pbreply.add_note("symbol 'hal_thread_delete' not found in hal_lib"); - pbreply.set_retcode(-1); - break; - } - int retval = delete_thread(pbreq.rtapicmd().threadname().c_str()); - pbreply.set_retcode(retval); - } + if (modules.count(HALMOD) == 0) { + pbreply.add_note("hal_lib not loaded"); + pbreply.set_retcode(-1); + break; + } + mi = modules[HALMOD]; + delete_thread = + DLSYM(mi.handle, "hal_thread_delete"); + if (delete_thread == NULL) { + pbreply.add_note("symbol 'hal_thread_delete' not found in hal_lib"); + pbreply.set_retcode(-1); + break; + } + retval = delete_thread(pbreq.rtapicmd().threadname().c_str()); + pbreply.set_retcode(retval); break; default: @@ -1239,7 +1090,7 @@ static int mainloop(size_t argc, char **argv) exit(retval); } - // make sure rtapi_msgd's pid is valid and msgd is running, + // make sure rtapi_msgd's pid is valid and msgd is running, // in case we caught a leftover shmseg // otherwise log messages would vanish if ((global_data->rtapi_msgd_pid == 0) || @@ -1249,7 +1100,7 @@ static int mainloop(size_t argc, char **argv) exit(EXIT_FAILURE); } - // from here on it is safe to use rtapi_print() and friends as + // from here on it is safe to use rtapi_print() and friends as // the error ring is now set up and msgd is logging it rtapi_set_logtag("rtapi_app"); rtapi_set_msg_level(global_data->rt_msg_level); @@ -1280,7 +1131,7 @@ static int mainloop(size_t argc, char **argv) if ((retval = harden_rt())) { rtapi_print_msg(RTAPI_MSG_ERR, "rtapi_app:%d failed to setup " - "realtime environment - 'sudo make setuid' missing?\n", + "realtime environment - 'sudo make setuid' missing?\n", instance_id); global_data->rtapi_app_pid = 0; exit(retval); @@ -1364,12 +1215,12 @@ static int mainloop(size_t argc, char **argv) assert(z_loop); zloop_set_verbose(z_loop, debug); - + if (trap_signals) { zmq_pollitem_t signal_poller = { 0, signal_fd, ZMQ_POLLIN }; zloop_poller (z_loop, &signal_poller, s_handle_signal, NULL); } - + zloop_reader(z_loop, z_command, rtapi_request, NULL); zloop_timer (z_loop, BACKGROUND_TIMER, 0, s_handle_timer, NULL); @@ -1440,7 +1291,7 @@ static int configure_memory(void) /* Lock all memory. This includes all current allocations (BSS/data) * and future allocations. */ if (mlockall(MCL_CURRENT | MCL_FUTURE)) { - rtapi_print_msg(RTAPI_MSG_WARN, + rtapi_print_msg(RTAPI_MSG_WARN, "mlockall() failed: %d '%s'\n", errno,strerror(errno)); rtapi_print_msg(RTAPI_MSG_WARN, @@ -1510,7 +1361,7 @@ static int harden_rt() core_limit.rlim_max = RLIM_INFINITY; if (setrlimit(RLIMIT_CORE, &core_limit) < 0) - rtapi_print_msg(RTAPI_MSG_WARN, + rtapi_print_msg(RTAPI_MSG_WARN, "setrlimit: %s - core dumps may be truncated or non-existant\n", strerror(errno)); @@ -1519,7 +1370,7 @@ static int harden_rt() // echo 1 > // might be needed to have setuid programs dump core if (prctl(PR_SET_DUMPABLE, 1) < 0) - rtapi_print_msg(RTAPI_MSG_WARN, + rtapi_print_msg(RTAPI_MSG_WARN, "prctl(PR_SET_DUMPABLE) failed: no core dumps will be created - %d - %s\n", errno, strerror(errno)); FILE *fd; @@ -1539,14 +1390,14 @@ static int harden_rt() configure_memory(); if (getrusage(RUSAGE_SELF, &rusage)) { - rtapi_print_msg(RTAPI_MSG_WARN, + rtapi_print_msg(RTAPI_MSG_WARN, "getrusage(RUSAGE_SELF) failed: %d '%s'\n", errno,strerror(errno)); } else { minflt = rusage.ru_minflt; majflt = rusage.ru_majflt; if (atexit(exit_handler)) { - rtapi_print_msg(RTAPI_MSG_WARN, + rtapi_print_msg(RTAPI_MSG_WARN, "atexit() failed: %d '%s'\n", errno,strerror(errno)); } @@ -1604,7 +1455,7 @@ static int harden_rt() } -static void usage(int argc, char **argv) +static void usage(int argc, char **argv) { printf("Usage: %s [options]\n", argv[0]); } @@ -1672,7 +1523,7 @@ int main(int argc, char **argv) case 'f': if ((flavor = flavor_byname(optarg)) == NULL) { - fprintf(stderr, "no such flavor: '%s' -- valid flavors are:\n", + fprintf(stderr, "no such flavor: '%s' -- valid flavors are:\n", optarg); flavor_ptr f = flavors; while (f->name) { @@ -1902,4 +1753,3 @@ static int record_instparms(char *fname, modinfo_t &mi) free(section); return 0; } - diff --git a/src/rtapi/rtapi_app.h b/src/rtapi/rtapi_app.h index bb3592e27d..69b76c30d2 100644 --- a/src/rtapi/rtapi_app.h +++ b/src/rtapi/rtapi_app.h @@ -25,20 +25,18 @@ get full of ifdefs. */ -#if defined(BUILD_SYS_USER_DSO) - #if defined(USERMODE_PCI) #include "userpci/module.h" #endif /* For kernel modules (hm2_pci, hostmot2) to compile in usermode without lots of changes, the EXPORT_SYMBOL lines, below, need to be defined *ONLY* if - there is actually an rtapi_app_* function in the code. This is handeled - in the kernel module case by the simple define that renames the module + there is actually an rtapi_app_* function in the code. This is handeled + in the kernel module case by the simple define that renames the module init/cleanup functions. - For the usermode case, turn the first instance of rtapi_app_* into a - function declaration, then export the symbol, then re-create the function - definition. This way the symbol is only exported if the function exists - in the code, and we don't have to have the ability to 'rewind' the C + For the usermode case, turn the first instance of rtapi_app_* into a + function declaration, then export the symbol, then re-create the function + definition. This way the symbol is only exported if the function exists + in the code, and we don't have to have the ability to 'rewind' the C preprocessor. */ #define rtapi_app_main(a) \ @@ -49,10 +47,5 @@ rtapi_app_exit(a); \ EXPORT_SYMBOL(rtapi_app_exit); \ void rtapi_app_exit(a) -#else -#include -#define rtapi_app_main(a) init_module(a) -#define rtapi_app_exit(a) cleanup_module(a) -#endif #endif /* RTAPI_APP_H */ diff --git a/src/rtapi/rtapi_common.c b/src/rtapi/rtapi_common.c index e433aa9a89..a3c39df85a 100644 --- a/src/rtapi/rtapi_common.c +++ b/src/rtapi/rtapi_common.c @@ -64,17 +64,14 @@ int _rtapi_dummy(void) { return -EINVAL; } +static const flavor_t f; +&f = flavor_byid(global_data->rtapi_thread_flavor); + static rtapi_switch_t rtapi_switch_struct = { .git_version = GIT_VERSION, -#ifdef RTAPI - .thread_flavor_name = THREAD_FLAVOR_NAME, - .thread_flavor_id = THREAD_FLAVOR_ID, - .thread_flavor_flags = FLAVOR_FLAGS, -#else - .thread_flavor_name = "ULAPI", - .thread_flavor_id = -1, - .thread_flavor_flags = 0, -#endif + .thread_flavor_name = f.name, + .thread_flavor_id = f.thread_flavor_id, + .thread_flavor_flags = f.flags, // init & exit functions .rtapi_init = &_rtapi_init, @@ -183,8 +180,6 @@ void rtapi_autorelease_mutex(void *variable) // onto ulapi.so to init, so in this case global_data // is exported by hal_lib and referenced by ulapi.so -extern global_data_t *global_data; - /* global init code */ diff --git a/src/rtapi/rtapi_common.h b/src/rtapi/rtapi_common.h index 30980682f7..6134497749 100644 --- a/src/rtapi/rtapi_common.h +++ b/src/rtapi/rtapi_common.h @@ -82,7 +82,7 @@ #endif -#ifdef RTAPI /* ULAPI doesn't vary by thread flavor */ +#ifdef THREADS_HEADERS // This will be defined only for a couple of files #include THREADS_HEADERS /* thread-specific headers */ #else // These are the same as Xenomai and RT_PREEMPT anyway @@ -225,12 +225,7 @@ extern task_data *task_array; /* rtapi_time.c */ -#ifdef BUILD_SYS_USER_DSO extern int period; -#else /* BUILD_SYS_KBUILD */ -extern long int max_delay; -extern unsigned long timer_counts; -#endif #ifdef HAVE_RTAPI_MODULE_TIMER_STOP void _rtapi_module_timer_stop(void); #endif @@ -244,9 +239,7 @@ extern shmem_data *shmem_array; extern void *shmem_addr_array[]; /* rtapi_module.c */ -#ifndef BUILD_SYS_USER_DSO extern int _init_master_shared_memory(rtapi_data_t **rtapi_data); -#endif extern module_data *module_array; #endif /* RTAPI_COMMON_H */ diff --git a/src/rtapi/rtapi_compat.c b/src/rtapi/rtapi_compat.c index 324a65ca2a..169977bdea 100644 --- a/src/rtapi/rtapi_compat.c +++ b/src/rtapi/rtapi_compat.c @@ -51,16 +51,11 @@ // if this exists, and contents is '1', it's RT_PREEMPT #define PREEMPT_RT_SYSFS "/sys/kernel/realtime" -// Exists on RTAI and Xenomai +// Exists on Xenomai #define PROC_IPIPE "/proc/ipipe" - -// These exist on Xenomai but not on RTAI #define PROC_IPIPE_XENOMAI "/proc/ipipe/Xenomai" #define XENO_GID_SYSFS "/sys/module/xeno_nucleus/parameters/xenomai_gid" -// static storage of kernel module directory -static char kmodule_dir[PATH_MAX]; - static FILE *rtapi_inifile = NULL; static int check_rtapi_lib(char *name); @@ -74,15 +69,6 @@ int kernel_is_xenomai() (stat(XENO_GID_SYSFS, &sb) == 0)); } -int kernel_is_rtai() -{ - struct stat sb; - - return ((stat(PROC_IPIPE, &sb) == 0) && - (stat(PROC_IPIPE_XENOMAI, &sb) != 0) && - (stat(XENO_GID_SYSFS, &sb) != 0)); -} - int kernel_is_rtpreempt() { FILE *fd; @@ -159,56 +145,28 @@ int kernel_instance_id() return retval; } -flavor_t flavors[] = { +const flavor_t flavors[] = { { .name = RTAPI_POSIX_NAME, .mod_ext = ".so", .so_ext = ".so", - .build_sys = "user-dso", .flavor_id = RTAPI_POSIX_ID, .flags = POSIX_FLAVOR_FLAGS // FLAVOR_USABLE }, - { .name = "sim", // alias for above- old habíts die hard - .mod_ext = ".so", - .so_ext = ".so", - .build_sys = "user-dso", - .flavor_id = RTAPI_POSIX_ID, - .flags = POSIX_FLAVOR_FLAGS - }, { .name = RTAPI_RT_PREEMPT_NAME, .mod_ext = ".so", .so_ext = ".so", - .build_sys = "user-dso", .flavor_id = RTAPI_RT_PREEMPT_ID, .flags = RTPREEMPT_FLAVOR_FLAGS }, { .name = RTAPI_XENOMAI_NAME, .mod_ext = ".so", .so_ext = ".so", - .build_sys = "user-dso", .flavor_id = RTAPI_XENOMAI_ID, .flags = XENOMAI_FLAVOR_FLAGS }, -/* - { .name = RTAPI_RTAI_KERNEL_NAME, - .mod_ext = ".ko", - .so_ext = ".so", - .build_sys = "kbuild", - .flavor_id = RTAPI_RTAI_KERNEL_ID, - .flags = RTAI_KERNEL_FLAVOR_FLAGS - }, - - { .name = RTAPI_XENOMAI_KERNEL_NAME, - .mod_ext = ".ko", - .so_ext = ".so", - .build_sys = "kbuild", - .flavor_id = RTAPI_XENOMAI_KERNEL_ID, - .flags = XENOMAI_KERNEL_FLAVOR_FLAGS - }, -*/ { .name = RTAPI_NOTLOADED_NAME, .mod_ext = "", .so_ext = "", - .build_sys = "n/a", .flavor_id = RTAPI_NOTLOADED_ID, .flags = 0 }, @@ -248,7 +206,7 @@ flavor_ptr default_flavor(void) if (fname) { if ((flavor = flavor_byname(fname)) == NULL) { - fprintf(stderr, + fprintf(stderr, "FLAVOR=%s: no such flavor -- valid flavors are:\n", fname); f = flavors; @@ -265,24 +223,14 @@ flavor_ptr default_flavor(void) exit(1); } -/* if (kernel_is_rtai()) { - f = flavor_byid(RTAPI_RTAI_KERNEL_ID); - if (check_rtapi_lib((char *)f->name)) - return f; - } -*/ if (kernel_is_xenomai()) { /* check for userspace first */ - f = flavor_byid(RTAPI_XENOMAI_ID); + f = flavor_byid(RTAPI_XENOMAI_ID); if (check_rtapi_lib((char *)f->name)) return f; - /* else look for xenomai_kernel */ - //f = flavor_byid(RTAPI_XENOMAI_KERNEL_ID); - //if (check_rtapi_lib((char *)f->name)) - // return f; } if (kernel_is_rtpreempt()) { - f = flavor_byid(RTAPI_RT_PREEMPT_ID); + f = flavor_byid(RTAPI_RT_PREEMPT_ID); if (check_rtapi_lib((char *)f->name)) return f; } @@ -352,7 +300,7 @@ int get_rtapi_config(char *result, const char *param, int n) int check_rtapi_lib(char *name) { - /* Check if the corresponding rtapi lib for a particular + /* Check if the corresponding rtapi lib for a particular flavor is present */ char *val; char fname[PATH_MAX]; @@ -364,119 +312,12 @@ int check_rtapi_lib(char *name) return 0; } - snprintf(fname, PATH_MAX,"%s/ulapi-%s.so", val, name); + snprintf(fname, PATH_MAX,"%s/ulapi.so", val); /* check if rtapi lib exists */ return (stat(fname, &sb) == 0); } -int module_path(char *result, const char *basename) -{ - /* Find a kernel module's path */ - struct stat sb; - char buf[PATH_MAX]; - char rtlib_result[PATH_MAX]; - int has_rtdir; - struct utsname uts; - - // Initialize kmodule_dir, only once - if (kmodule_dir[0] == 0) { - uname(&uts); - - get_rtapi_config(buf,"RUN_IN_PLACE",4); - if (strncmp(buf,"yes",3) == 0) { - // Complete RTLIB_DIR should be // - if (get_rtapi_config(buf,"RTLIB_DIR",PATH_MAX) != 0) - return -ENOENT; - - if (strcmp(default_flavor()->build_sys,"user-dso") == 0) { - // point user threads to a common directory - snprintf(kmodule_dir,PATH_MAX,"%s/userland/%s", - buf, uts.release); - } else { - // kthreads each have their own directory - snprintf(kmodule_dir,PATH_MAX,"%s/%s/%s", - buf, default_flavor()->name, uts.release); - } - } else { - // Complete RTLIB_DIR should be /lib/modules//linuxcnc - snprintf(kmodule_dir, PATH_MAX, - "/lib/modules/%s/linuxcnc", uts.release); - } - } - - // Look for module in kmodule_dir/RTLIB_DIR - snprintf(result, PATH_MAX, "%s/%s.ko", kmodule_dir, basename); - if ((stat(result, &sb) == 0) && (S_ISREG(sb.st_mode))) - return 0; - - // Not found; save result for possible later diagnostic msg - strcpy(rtlib_result,result); - - // Check RTDIR as well (RTAI) - has_rtdir = (get_rtapi_config(buf, "RTDIR", PATH_MAX) == 0 && buf[0] != 0); - if (has_rtdir) { - snprintf(result, PATH_MAX, "%s/%s.ko", buf, basename); - if ((stat(result, &sb) == 0) && (S_ISREG(sb.st_mode))) - return 0; - } - - // Module not found - fprintf(stderr, "module '%s.ko' not found in directory\n\t%s\n", - basename, kmodule_dir); - if (has_rtdir) - fprintf(stderr, "\tor directory %s\n", buf); - - return -ENOENT; -} - -int is_module_loaded(const char *module) -{ - FILE *fd; - char line[100]; - int len = strlen(module); - - fd = fopen("/proc/modules", "r"); - if (fd == NULL) { - fprintf(stderr, "module_loaded: ERROR: cannot read /proc/modules\n"); - return -1; - } - while (fgets(line, sizeof(line), fd)) { - if (!strncmp(line, module, len)) { - fclose(fd); - return 1; - } - } - fclose(fd); - return 0; -} - -int run_module_helper(const char *format, ...) -{ - char mod_helper[PATH_MAX+100]; - - if (get_rtapi_config(mod_helper, "linuxcnc_module_helper", PATH_MAX) != 0) { - fprintf(stderr, "load_module: ERROR: failed to read " - "linuxcnc_module_helper path from rtapi config\n"); - return -1; - } - strcat(mod_helper, " "); - - int n = strlen(mod_helper); - va_list args; - int retval; - - va_start(args, format); - retval = vsnprintf(&mod_helper[n], sizeof(mod_helper) - n, format, args); - va_end(args); - - if (retval < 0 ) { - fprintf(stderr, "run_module_helper: invalid arguments\n"); - return retval; - } - return system(mod_helper); -} - //int procfs_cmd(const char *path, const char *format, ...) // whatever is written is printf-style int rtapi_fs_write(const char *path, const char *format, ...) @@ -688,24 +529,17 @@ int rtapi_get_tags(const char *mod_name) flavor_ptr flavor = default_flavor(); - if (kernel_threads(flavor)) { - if (module_path(modpath, mod_name) < 0) { - perror("module_path"); - return -1; - } - } else { - if (get_rtapi_config(modpath,"RTLIB_DIR",PATH_MAX) != 0) { - perror("cant get RTLIB_DIR ?\n"); - return -1; - } - strcat(modpath,"/"); - strcat(modpath, flavor->name); - strcat(modpath,"/"); - strcat(modpath,mod_name); - strcat(modpath, flavor->mod_ext); + if (get_rtapi_config(modpath,"RTLIB_DIR",PATH_MAX) != 0) { + perror("cant get RTLIB_DIR ?\n"); + return -1; } - const char **caps = get_caps(modpath); + strcat(modpath,"/"); + strcat(modpath, flavor->name); + strcat(modpath,"/"); + strcat(modpath,mod_name); + strcat(modpath, flavor->mod_ext); + const char **caps = get_caps(modpath); char **p = (char **)caps; while (p && *p && strlen(*p)) { cp1 = *p++; @@ -750,9 +584,8 @@ int run_shell(char *format, ...) } // those are ok to use from userland RT modules: -#if defined(BUILD_SYS_USER_DSO) && defined(RTAPI) +#if defined(RTAPI) EXPORT_SYMBOL(run_shell); -EXPORT_SYMBOL(is_module_loaded); EXPORT_SYMBOL(rtapi_fs_read); EXPORT_SYMBOL(rtapi_fs_write); -#endif \ No newline at end of file +#endif diff --git a/src/rtapi/rtapi_compat.h b/src/rtapi/rtapi_compat.h index 59fda8349e..f42be98151 100644 --- a/src/rtapi/rtapi_compat.h +++ b/src/rtapi/rtapi_compat.h @@ -30,7 +30,6 @@ ************************************************************************/ #define FLAVOR_DOES_IO RTAPI_BIT(0) // userland: whether iopl() needs to be called -#define FLAVOR_KERNEL_BUILD RTAPI_BIT(1) // set when defined(BUILD_SYS_KBUILD) #define FLAVOR_RTAPI_DATA_IN_SHM RTAPI_BIT(2) // this flavor keeps rtapi_data in a shm segment #define POSIX_FLAVOR_FLAGS 0 @@ -71,9 +70,6 @@ typedef struct { SUPPORT_BEGIN_DECLS -extern int is_module_loaded(const char *module); -extern int load_module(const char *module, const char *modargs); -extern int run_module_helper(const char *format, ...); extern long int simple_strtol(const char *nptr, char **endptr, int base); @@ -108,7 +104,6 @@ int run_shell(char *format, ...); // kernel tests in rtapi_compat.c extern int kernel_is_xenomai(); -extern int kernel_is_rtai(); extern int kernel_is_rtpreempt(); // return the Xenomai group id from @@ -125,14 +120,9 @@ extern int kernel_instance_id(); extern flavor_t flavors[]; extern flavor_ptr flavor_byname(const char *flavorname); -extern flavor_ptr flavor_byid(int flavor_id); +extern flavor_ptr const flavor_byid(int flavor_id); extern flavor_ptr default_flavor(void); -// determine if this is a userland or kthreads flavor -static inline int kernel_threads(flavor_ptr f) { - return (f->flags & FLAVOR_KERNEL_BUILD) != 0; -} - /* * Given a result buffer of PATH_MAX size and a module or shared * library's basename (e.g. 'rtapi' with no directory or '.ko'), find diff --git a/src/rtapi/rtapi_export.h b/src/rtapi/rtapi_export.h index 7dc8305e6e..cf927c79cc 100644 --- a/src/rtapi/rtapi_export.h +++ b/src/rtapi/rtapi_export.h @@ -1,16 +1,16 @@ /******************************************************************** * Copyright 2006-2013 Various Authors -* +* * This program 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 2 of the License, or * (at your option) any later version. -* +* * This program 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 this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA @@ -25,7 +25,6 @@ #define RTAPI_IP_SYMPREFIX "rtapi_instinfo_" -#if defined(BUILD_SYS_USER_DSO) #define MODULE_INFO1(t, a, c) __attribute__((section(".modinfo"))) \ t rtapi_info_##a = c; EXPORT_SYMBOL(rtapi_info_##a); #define MODULE_INFO2(t, a, b, c) __attribute__((section(".modinfo"))) \ @@ -51,7 +50,4 @@ #define INSTANCE_PARM_DESC(v,t) INSTANCE_INFO2(const char*, description, v, t) -#endif - - #endif //RTAPI_EXPORT_H diff --git a/src/rtapi/rtapi_heap.c b/src/rtapi/rtapi_heap.c index cf53e6cd0e..53976eaff5 100644 --- a/src/rtapi/rtapi_heap.c +++ b/src/rtapi/rtapi_heap.c @@ -49,7 +49,7 @@ static void __attribute__((format(printf,3,4))) heap_print(struct rtapi_heap *h, int level, const char *fmt, ...) { static pid_t _pid; -#if !defined(RTAPI) && !defined(BUILD_SYS_KBUILD) +#if !defined(RTAPI) if (_pid == 0) _pid = getpid(); #endif diff --git a/src/rtapi/rtapi_int.h b/src/rtapi/rtapi_int.h index 4df53e4d9e..06b37c3c4c 100644 --- a/src/rtapi/rtapi_int.h +++ b/src/rtapi/rtapi_int.h @@ -11,7 +11,6 @@ only. Since we have a simulator that runs everything in user space, the non-underscore types should NEVER be used. */ -#if defined(BUILD_SYS_USER_DSO) #define __KERNEL_STRICT_NAMES # include @@ -25,14 +24,5 @@ typedef __s16 s16; typedef __s32 s32; typedef __s64 s64; #define __iomem /* Nothing */ -#else -# include - -#ifdef HAVE_CK -# include -#endif - -#endif - #endif // RTAPI_INT_H diff --git a/src/rtapi/rtapi_limits.h b/src/rtapi/rtapi_limits.h index 84b63620d4..1bb100b1fa 100644 --- a/src/rtapi/rtapi_limits.h +++ b/src/rtapi/rtapi_limits.h @@ -19,11 +19,6 @@ #define RTAPI_LIMITS_H #include "config.h" - -#if defined(RTAPI) && defined(BUILD_SYS_KBUILD) -#include -#else #include -#endif #endif diff --git a/src/rtapi/rtapi_main.c b/src/rtapi/rtapi_main.c index 645063862c..b0aa4ae187 100644 --- a/src/rtapi/rtapi_main.c +++ b/src/rtapi/rtapi_main.c @@ -115,16 +115,6 @@ int rtapi_app_main(void) return -EINVAL; } - // consistency check - if (global_data->rtapi_thread_flavor != THREAD_FLAVOR_ID) { - rtapi_print_msg(RTAPI_MSG_ERR, - "RTAPI:%d BUG: thread flavors dont match:" - " global %d rtapi %d\n", - rtapi_instance, global_data->rtapi_thread_flavor, - THREAD_FLAVOR_ID); - return -EINVAL; - } - // good to use global_data from here on // this heap is inited in rtapi_msgd.cc diff --git a/src/rtapi/rtapi_math/Submakefile b/src/rtapi/rtapi_math/Submakefile index b29c03900d..28c8746f71 100644 --- a/src/rtapi/rtapi_math/Submakefile +++ b/src/rtapi/rtapi_math/Submakefile @@ -1,54 +1,3 @@ -ifeq ($(BUILD_SYS),kbuild) - -rtapi_math-objs := rtapi/rtapi_math/s_floor.o -rtapi_math-objs += rtapi/rtapi_math/e_pow.o -rtapi_math-objs += rtapi/rtapi_math/w_pow.o -rtapi_math-objs += rtapi/rtapi_math/s_fabs.o -rtapi_math-objs += rtapi/rtapi_math/e_sqrt.o -rtapi_math-objs += rtapi/rtapi_math/w_sqrt.o -rtapi_math-objs += rtapi/rtapi_math/s_ceil.o -rtapi_math-objs += rtapi/rtapi_math/e_acos.o -rtapi_math-objs += rtapi/rtapi_math/w_acos.o -rtapi_math-objs += rtapi/rtapi_math/e_asin.o -rtapi_math-objs += rtapi/rtapi_math/w_asin.o -rtapi_math-objs += rtapi/rtapi_math/s_tan.o -rtapi_math-objs += rtapi/rtapi_math/k_tan.o -rtapi_math-objs += rtapi/rtapi_math/s_atan.o -rtapi_math-objs += rtapi/rtapi_math/w_atan2.o -rtapi_math-objs += rtapi/rtapi_math/e_atan2.o -rtapi_math-objs += rtapi/rtapi_math/s_sin.o -rtapi_math-objs += rtapi/rtapi_math/k_sin.o -rtapi_math-objs += rtapi/rtapi_math/s_cos.o -rtapi_math-objs += rtapi/rtapi_math/k_cos.o -rtapi_math-objs += rtapi/rtapi_math/e_rem_pio2.o -rtapi_math-objs += rtapi/rtapi_math/k_rem_pio2.o -rtapi_math-objs += rtapi/rtapi_math/s_scalbn.o -rtapi_math-objs += rtapi/rtapi_math/k_standard.o -rtapi_math-objs += rtapi/rtapi_math/s_cbrt.o -rtapi_math-objs += rtapi/rtapi_math/s_copysign.o -rtapi_math-objs += rtapi/rtapi_math/s_finite.o -rtapi_math-objs += rtapi/rtapi_math/s_rint.o -rtapi_math-objs += rtapi/rtapi_math/powidf.o -rtapi_math-objs += rtapi/rtapi_math/e_hypot.o -rtapi_math-objs += rtapi/rtapi_math/w_hypot.o -rtapi_math-objs += rtapi/rtapi_math/e_fmod.o -rtapi_math-objs += rtapi/rtapi_math/w_fmod.o -rtapi_math-objs += rtapi/rtapi_math/s_fabs.o -rtapi_math-objs += rtapi/rtapi_math/s_rint.o -rtapi_math-objs += rtapi/rtapi_math/s_fminmax.o -rtapi_math-objs += rtapi/rtapi_math/krtapi_math.o - -obj-m += rtapi_math.o - -ccflags-y := $(KERNEL_MATH_CFLAGS) \ - -D_IEEE_LIBM \ - -D_ISOC99_SOURCE \ - -D_SVID_SOURCE - -$(RTLIBDIR)/rtapi_math$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(rtapi_math-objs)) - -endif - LIBRMSRCS := rtapi/rtapi_math/s_floor.c LIBRMSRCS += rtapi/rtapi_math/e_pow.c LIBRMSRCS += rtapi/rtapi_math/w_pow.c diff --git a/src/rtapi/rtapi_msgd.cc b/src/rtapi/rtapi_msgd.cc index b803281a2b..d2178939fa 100644 --- a/src/rtapi/rtapi_msgd.cc +++ b/src/rtapi/rtapi_msgd.cc @@ -109,7 +109,6 @@ using namespace google::protobuf; int rtapi_instance; global_data_t *global_data; -int shmdrv_loaded; long page_size; // some global defaults are set in msgd, and recorded in the @@ -127,7 +126,6 @@ static int global_heap_flags = RTAPIHEAP_TRIM; static const char *inifile; static int foreground; -static int use_shmdrv; static flavor_ptr flavor; static const char *instance_name; static int signal_fd; @@ -160,8 +158,6 @@ static mk_netopts_t netopts; static mk_socket_t logpub; static int port = -1; // defaults to ephemeral port -static const char *shmdrv_opts; - static ringbuffer_t rtapi_msg_buffer; // ring access strcuture for messages static const char *progname; static char proctitle[20]; @@ -211,33 +207,6 @@ static global_data_t *create_global_segment(const size_t global_size) pid_t msgd_pid = pid_of("msgd:%d", rtapi_instance); - if (rtapi_instance == kernel_instance_id()) { - - // collision with a running kernel instance - not good. - int shmdrv_loaded = is_module_loaded("shmdrv"); - int rtapi_loaded = is_module_loaded("rtapi"); - int hal_loaded = is_module_loaded("hal_lib"); - - fprintf(stderr, "ERROR: found existing kernel " - "instance with the same instance id (%d)\n", - rtapi_instance); - - fprintf(stderr,"kernel modules loaded: %s%s%s\n", - shmdrv_loaded ? "shmdrv " : "", - rtapi_loaded ? "rtapi " : "", - hal_loaded ? "hal_lib " : ""); - - if (msgd_pid > 0) - FAIL_NULL(EEXIST, - "the msgd process msgd:%d is " - "already running, pid: %d\n", - rtapi_instance, msgd_pid); - else - FAIL_NULL(ENOENT, - "msgd:%d not running!\n", - rtapi_instance); - } - // running userthreads instance? pid_t app_pid = pid_of("rtapi:%d", rtapi_instance); @@ -262,45 +231,38 @@ static global_data_t *create_global_segment(const size_t global_size) rtapi_instance); // TBD: might check for other user HAL processes still - // around. This might work with fuser on the HAL segment - // but might be tricky wit shmdrv. + // around. This might work with fuser on the HAL segment. } // leftover shared memory segments were around, but no using // entities (user process or kernel modules). // Remove and keep going: - if (shmdrv_loaded) { - // since neiter rtapi.ko nor hal_lib.ko is loaded - // cause a garbage collect in shmdrv - shmdrv_gc(); - } else { - // Posix shm case. - char segment_name[LINELEN]; - - if (hal_exists) { - sprintf(segment_name, SHM_FMT, rtapi_instance, halkey); - fprintf(stderr,"warning: removing unused HAL shm segment %s\n", - segment_name); - if (shm_unlink(segment_name)) - perror(segment_name); - } - if (rtapi_exists) { - sprintf(segment_name, SHM_FMT, rtapi_instance, rtapikey); - fprintf(stderr,"warning: removing unused RTAPI" - " shm segment %s\n", - segment_name); - if (shm_unlink(segment_name)) - perror(segment_name); - } - if (global_exists) { - sprintf(segment_name, SHM_FMT, rtapi_instance, globalkey); - fprintf(stderr,"warning: removing unused global" - " shm segment %s\n", - segment_name); - if (shm_unlink(segment_name)) - perror(segment_name); - } - } + // Posix shm case. + char segment_name[LINELEN]; + + if (hal_exists) { + sprintf(segment_name, SHM_FMT, rtapi_instance, halkey); + fprintf(stderr,"warning: removing unused HAL shm segment %s\n", + segment_name); + if (shm_unlink(segment_name)) + perror(segment_name); + } + if (rtapi_exists) { + sprintf(segment_name, SHM_FMT, rtapi_instance, rtapikey); + fprintf(stderr,"warning: removing unused RTAPI" + " shm segment %s\n", + segment_name); + if (shm_unlink(segment_name)) + perror(segment_name); + } + if (global_exists) { + sprintf(segment_name, SHM_FMT, rtapi_instance, globalkey); + fprintf(stderr,"warning: removing unused global" + " shm segment %s\n", + segment_name); + if (shm_unlink(segment_name)) + perror(segment_name); + } } // now try again: @@ -477,15 +439,6 @@ static int flavor_and_kernel_compatible(flavor_ptr f) */ } - /* - if (kernel_is_rtai() && - (f->flavor_id != RTAPI_RTAI_KERNEL_ID)) { - fprintf(stderr, "MSGD:%d ERROR: trying to start %s RTAPI on an RTAI kernel\n", - rtapi_instance, f->name); - return 0; - } - */ - if (kernel_is_rtpreempt() && (f->flavor_id != RTAPI_RT_PREEMPT_ID)) { fprintf(stderr, "MSGD:%d ERROR: trying to start %s RTAPI on an RT PREEMPT kernel\n", @@ -747,11 +700,9 @@ static struct option long_options[] = { { "flavor", required_argument, 0, 'f'}, { "halsize", required_argument, 0, 'H'}, { "halstacksize", required_argument, 0, 'T'}, - { "shmdrv", no_argument, 0, 'S'}, { "port", required_argument, NULL, 'p' }, { "svcuuid", required_argument, 0, 'R'}, { "interfaces", required_argument, 0, 'n'}, - { "shmdrv_opts", required_argument, 0, 'o'}, { "nosighdlr", no_argument, 0, 'G'}, { "heapdebug", no_argument, 0, 'P'}, @@ -838,12 +789,6 @@ int main(int argc, char **argv) case 'H': halsize = atoi(optarg); break; - case 'S': - use_shmdrv++; - break; - case 'o': - shmdrv_opts = strdup(optarg); - break; case 'P': hal_heap_flags |= (RTAPIHEAP_TRACE_MALLOC|RTAPIHEAP_TRACE_FREE); global_heap_flags |= (RTAPIHEAP_TRACE_MALLOC|RTAPIHEAP_TRACE_FREE); @@ -922,30 +867,6 @@ int main(int argc, char **argv) } } - // do we need the shmdrv module? - if (((flavor->flags & FLAVOR_KERNEL_BUILD) || - use_shmdrv) && - !shmdrv_available()) { - - if (shmdrv_opts == NULL) - shmdrv_opts = getenv("SHMDRV_OPTS"); - if (shmdrv_opts == NULL) - shmdrv_opts = ""; - - if (run_module_helper("insert shmdrv %s",shmdrv_opts)) { - fprintf(stderr, "%s: cant insert shmdrv module - needed by %s\n", - progname, use_shmdrv ? "--shmdrv" : flavor->name); - exit(EXIT_FAILURE); - } - - shm_common_init(); - if (!shmdrv_available()) { - fprintf(stderr, "%s: BUG: shmdrv module not detected\n", - progname); - exit(EXIT_FAILURE); - } - } - // the global segment every entity in HAL/RTAPI land attaches to if ((global_data = create_global_segment(global_segment_size)) == NULL) { // must be a new shm segment @@ -1034,7 +955,6 @@ int main(int argc, char **argv) global_data->rt_msg_level, global_data->user_msg_level, global_data->hal_size, - shmdrv_loaded ? "shmdrv" : "Posix", #ifdef __clang__ "clang", __clang_version__, #endif diff --git a/src/rtapi/rtapi_pci.c b/src/rtapi/rtapi_pci.c index d0f0479e8a..701eede3f3 100644 --- a/src/rtapi/rtapi_pci.c +++ b/src/rtapi/rtapi_pci.c @@ -1,10 +1,10 @@ /******************************************************************** * Description: rtapi_pci.c -* This file, 'rtapi_pci.c', implements the -* usermode PCI functions +* This file, 'rtapi_pci.c', implements the +* usermode PCI functions * * -* Copyright (C) 2009 - 2013 Michael Büsch , +* Copyright (C) 2009 - 2013 Michael Büsch , * Charles Steinkuehler * John Morris * Michael Haberler @@ -29,7 +29,7 @@ #endif #include "config.h" -#if defined(USERMODE_PCI) && defined(BUILD_SYS_USER_DSO) +#if defined(USERMODE_PCI) #include #include /* vprintf() */ @@ -361,7 +361,7 @@ void * rtapi_pci_ioremap(struct rtapi_pcidev *dev, int bar, size_t size) return NULL; } -// rtapi_print_msg(RTAPI_MSG_ERR, "%i: %lx.%lx %lx.%lx\n", i, +// rtapi_print_msg(RTAPI_MSG_ERR, "%i: %lx.%lx %lx.%lx\n", i, // *((unsigned long *) (mmio + 0xff0)), // *((unsigned long *) (mmio + 0xff4)), // *((unsigned long *) (mmio + 0xff8)), @@ -485,8 +485,8 @@ int pci_register_driver(struct pci_driver *driver) } for (i=0; driver->id_table[i].vendor != 0; i++) { - snprintf(buf, sizeof(buf), "%04X:%04X", - driver->id_table[i].vendor, + snprintf(buf, sizeof(buf), "%04X:%04X", + driver->id_table[i].vendor, driver->id_table[i].device); err = udev_enumerate_add_match_property(enumerate, "PCI_ID", buf); @@ -667,7 +667,7 @@ int pci_enable_device(struct pci_dev *dev) } fprintf(stream, "1"); fclose(stream); - + /* Open the resource file... */ snprintf(path, sizeof(path), "%s/resource", dev->sys_path); stream = fopen(path, "r"); @@ -677,7 +677,7 @@ int pci_enable_device(struct pci_dev *dev) path, strerror(errno)); return -1; } - + /* ...and read in the data */ for (i=0; i < 6; i++) { r=fscanf(stream, "%p %p %lx", diff --git a/src/rtapi/rtapi_pci.h b/src/rtapi/rtapi_pci.h index 9590058203..39438016cd 100644 --- a/src/rtapi/rtapi_pci.h +++ b/src/rtapi/rtapi_pci.h @@ -1,7 +1,7 @@ /******************************************************************** * Description: rtapi_pci.h -* This file, 'rtapi_pci.h', exports the -* usermode PCI functions +* This file, 'rtapi_pci.h', exports the +* usermode PCI functions * * * Copyright (C) 2012 - 2013 Charles Steinkuehler @@ -31,7 +31,6 @@ /*********************************************************************** * PCI DEVICE SUPPORT * ************************************************************************/ -#if defined(BUILD_SYS_USER_DSO) /*---------------------------------------------------------------------** ** Structures and defines that should be pulled in from ** @@ -61,8 +60,8 @@ struct pci_dev { unsigned short subsystem_vendor; unsigned short subsystem_device; unsigned int t_class; /* 3 bytes: (base,sub,prog-if) */ - struct pci_resource - resource[6]; /* Device BARs */ + struct pci_resource + resource[6]; /* Device BARs */ void *driver_data; /* Data private to the driver */ }; @@ -148,76 +147,40 @@ void __iomem * rtapi_pci_ioremap(struct rtapi_pcidev *dev, int bar, size_t size) extern void rtapi_pci_iounmap(struct rtapi_pcidev *dev, void __iomem *mmio); -#endif /* BUILD_SYS_USER_DSO */ - static inline __u8 rtapi_pci_readb(const void __iomem *mmio) { -#ifdef BUILD_SYS_USER_DSO return *((volatile const __u8 __iomem *)mmio); -#else - return readb(mmio); -#endif } static inline __u16 rtapi_pci_readw(const void __iomem *mmio) { -#ifdef BUILD_SYS_USER_DSO return *((volatile const __u16 __iomem *)mmio); -#else - return readw(mmio); -#endif } static inline __u32 rtapi_pci_readl(const void __iomem *mmio) { -#ifdef BUILD_SYS_USER_DSO return *((volatile const __u32 __iomem *)mmio); -#else - return readl(mmio); -#endif } static inline void rtapi_pci_writeb(void __iomem *mmio, unsigned int offset, __u8 value) { -#ifdef BUILD_SYS_USER_DSO *((volatile __u8 __iomem *)mmio) = value; -#else - writeb(value, mmio); -#endif } static inline void rtapi_pci_writew(void __iomem *mmio, unsigned int offset, __u16 value) { -#ifdef BUILD_SYS_USER_DSO *((volatile __u16 __iomem *)mmio) = value; -#else - writew(value, mmio); -#endif } static inline void rtapi_pci_writel(void __iomem *mmio, unsigned int offset, __u32 value) { -#ifdef BUILD_SYS_USER_DSO *((volatile __u32 __iomem *)mmio) = value; -#else - writel(value, mmio); -#endif -} - -/* Some kernels don't have pci_ioremap_bar */ -#ifndef BUILD_SYS_USER_DSO -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,32) -void __iomem *pci_ioremap_bar(struct pci_dev *pdev, int bar) -{ - return ioremap_nocache(pci_resource_start(pdev, bar), pci_resource_len(pdev, bar)); } -#endif -#endif #endif // RTAPI_PCI_H diff --git a/src/rtapi/rtapi_support.c b/src/rtapi/rtapi_support.c index 4beed3d932..c4363f70c1 100644 --- a/src/rtapi/rtapi_support.c +++ b/src/rtapi/rtapi_support.c @@ -31,12 +31,10 @@ #include "rtapi.h" #include "shmdrv.h" #include "ring.h" -#if defined(BUILD_SYS_USER_DSO) || defined(ULAPI) #include "syslog_async.h" #ifndef SYSLOG_FACILITY #define SYSLOG_FACILITY LOG_LOCAL1 // where all rtapi/ulapi logging goes #endif -#endif #define RTPRINTBUFFERLEN 256 #include /* libc's vsnprintf() */ @@ -112,7 +110,6 @@ int vs_ringlogfv(const msg_level_t level, // early startup, global_data & log ring not yet initialized // depending on context, log the message in an appropriate way: -#if defined(BUILD_SYS_USER_DSO) || defined(ULAPI) static int log_opened; if (!log_opened) { log_opened = async_log_open(); @@ -127,10 +124,6 @@ int vs_ringlogfv(const msg_level_t level, fprintf(stderr, #else syslog_async(rtapi2syslog(level), -#endif -#endif -#if defined(RTAPI) && defined(BUILD_SYS_KBUILD) - printk( #endif "%d:%s:%d:%s %s", level, diff --git a/src/rtapi/rtapi_time.c b/src/rtapi/rtapi_time.c index e281218e18..567980e2eb 100644 --- a/src/rtapi/rtapi_time.c +++ b/src/rtapi/rtapi_time.c @@ -45,9 +45,7 @@ long int max_delay = DEFAULT_MAX_DELAY; #ifdef RTAPI /* hide most functions from ULAPI */ -#ifdef BUILD_SYS_USER_DSO int period = 0; -#endif // Actual number of counts of the periodic timer unsigned long timer_counts; @@ -58,7 +56,6 @@ void _rtapi_clock_set_period_hook(long int nsecs, RTIME *counts, RTIME *got_counts); #endif -#ifdef BUILD_SYS_USER_DSO long int _rtapi_clock_set_period(long int nsecs) { #ifndef RTAPI_TIME_NO_CLOCK_MONOTONIC struct timespec res = { 0, 0 }; @@ -86,44 +83,6 @@ long int _rtapi_clock_set_period(long int nsecs) { return period; } -#else /* BUILD_SYS_KBUILD */ -long int _rtapi_clock_set_period(long int nsecs) { - RTIME counts, got_counts; - - if (nsecs == 0) { - /* it's a query, not a command */ - return rtapi_data->timer_period; - } - if (rtapi_data->timer_running) { - /* already started, can't restart */ - return -EINVAL; - } - /* limit period to 2 micro-seconds min, 1 second max */ - if ((nsecs < 2000) || (nsecs > 1000000000L)) { - rtapi_print_msg(RTAPI_MSG_ERR, - "RTAPI: ERR: clock_set_period: %ld nsecs, out of range\n", - nsecs); - return -EINVAL; - } - - /* kernel thread systems should init counts and - rtapi_data->timer_period using their own timer functions */ -#ifdef HAVE_RTAPI_CLOCK_SET_PERIOD_HOOK - _rtapi_clock_set_period_hook(nsecs, &counts, &got_counts); - timer_counts = got_counts; -#endif - - rtapi_print_msg(RTAPI_MSG_DBG, - "RTAPI: clock_set_period requested: %ld actual: %ld " - "counts requested: %llu actual: %d\n", - nsecs, rtapi_data->timer_period, - (unsigned long long)counts, (int)got_counts); - - rtapi_data->timer_running = 1; - max_delay = rtapi_data->timer_period / 4; - return rtapi_data->timer_period; -} -#endif /* BUILD_SYS_KBUILD */ // rtapi_delay_hook MUST be implemented by all threads systems void _rtapi_delay_hook(long int nsec); diff --git a/src/rtapi/shmdrv/Submakefile b/src/rtapi/shmdrv/Submakefile index 87ef3d0885..fc785e9b76 100644 --- a/src/rtapi/shmdrv/Submakefile +++ b/src/rtapi/shmdrv/Submakefile @@ -6,49 +6,6 @@ # ################################################################## -#------------------------------ -# shmdrv module -# -# build for kthreads flavors -ifeq ($(BUILD_SYS),kbuild) -obj-m += shmdrv.o -shmdrv-objs := rtapi/shmdrv/shmdrv.o - -$(RTLIBDIR)/shmdrv$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(shmdrv-objs)) - -INCLUDES += rtapi/shmdrv -endif # BUILD_SYS = kbuild - -#------------------------------ -# shmdrv module -# -# build for all kernels in SHMDRV_KERNEL_DIRS -ifeq ($(USE_SHMDRV),yes) -# we have no mapping of kver to kdir, so use a timestamp and do the -# whole thing in a big ugly non-Makefile-thonic shell script -SHMDRV_SRCS = rtapi/shmdrv/shmdrv.c \ - rtapi/shmdrv/shmdrv.h \ - rtapi/shmdrv/Makefile -objects/.shmdrv-built: $(SHMDRV_SRCS) - for kdir in $(SHMDRV_KERNEL_DIRS); do \ - kver=`../scripts/kernel-vers.sh $$kdir`; \ - mkdir -p objects/userland/$$kver; \ - cp $(SHMDRV_SRCS) objects/userland/$$kver; \ - echo "Building userland shmdrv module for kernel version $$kver"; \ - $(MAKE) \ - -C $$kdir \ - M=$(BASEPWD)/objects/userland/$$kver \ - CC=$(CC) KBUILD_VERBOSE=$(BUILD_VERBOSE); \ - mkdir -p ../rtlib/userland/$$kver; \ - cp objects/userland/$$kver/Module.symvers \ - objects/userland/$$kver/shmdrv.ko \ - ../rtlib/userland/$$kver; \ - done - touch $@ - -modules: objects/.shmdrv-built -endif # USE_SHMDRV - #------------------------------ # liblinuxcncshm.so shared lib @@ -75,9 +32,6 @@ ifeq ($(BUILD_EXAMPLES),yes) # lock debugging help plus a bit of API example MUTEXWATCH_SRCS = rtapi/shmdrv/mutexwatch.c -$(call TOOBJSDEPS, $(MUTEXWATCH_SRCS)): \ - EXTRAFLAGS += $(THREADS_RTFLAGS) - ../bin/mutexwatch: ../lib/liblinuxcncshm.so $(call TOOBJS, $(MUTEXWATCH_SRCS)) $(ECHO) Linking $(notdir $@) $(Q)$(CC) $(LDFLAGS) -o $@ $^ ../lib/liblinuxcncshm.so -lrt From 3402b586bf4646b39556e6e909e8c9c9fa17919e Mon Sep 17 00:00:00 2001 From: John Morris Date: Sat, 16 Feb 2019 17:43:01 +0800 Subject: [PATCH 448/516] rtapi: Make flavor_ptr point to a const struct This requires initializing the rtapi_switch_struct in a function to stop "initializer element is not constant" errors. --- src/hal/cython/machinekit/compat.pyx | 10 +- src/rtapi/rtapi_common.c | 149 ++++++++++++++------------- src/rtapi/rtapi_compat.c | 2 +- src/rtapi/rtapi_compat.h | 11 +- 4 files changed, 90 insertions(+), 82 deletions(-) diff --git a/src/hal/cython/machinekit/compat.pyx b/src/hal/cython/machinekit/compat.pyx index 293db105dc..fcb6432441 100644 --- a/src/hal/cython/machinekit/compat.pyx +++ b/src/hal/cython/machinekit/compat.pyx @@ -4,13 +4,13 @@ from .compat cimport * from os import strerror -cdef Flavor_Init(flavor_t *f): +cdef Flavor_Init(const flavor_t *f): result = Flavor() result._f = f return result cdef class Flavor: - cdef flavor_t *_f + cdef const flavor_t *_f property name: def __get__(self): return self._f.name @@ -43,20 +43,20 @@ def kernel_instance_id(): return c_kernel_instance_id() def flavor_byname(name): - cdef flavor_t *f = c_flavor_byname(name) + cdef const flavor_t *f = c_flavor_byname(name) if f == NULL: raise RuntimeError("flavor_byname: no such flavor: %s" % name) return Flavor_Init(f) def flavor_byid(id): - cdef flavor_t *f = c_flavor_byid(id) + cdef const flavor_t *f = c_flavor_byid(id) if f == NULL: raise RuntimeError("flavor_byid: no such flavor: %d" % id) return Flavor_Init(f) def default_flavor(): - cdef flavor_t *f = c_default_flavor() + cdef const flavor_t *f = c_default_flavor() if f == NULL: raise RuntimeError("BUG: flavor() failed") return Flavor_Init(f) diff --git a/src/rtapi/rtapi_common.c b/src/rtapi/rtapi_common.c index a3c39df85a..c9ce28d224 100644 --- a/src/rtapi/rtapi_common.c +++ b/src/rtapi/rtapi_common.c @@ -64,92 +64,97 @@ int _rtapi_dummy(void) { return -EINVAL; } -static const flavor_t f; -&f = flavor_byid(global_data->rtapi_thread_flavor); - -static rtapi_switch_t rtapi_switch_struct = { - .git_version = GIT_VERSION, - .thread_flavor_name = f.name, - .thread_flavor_id = f.thread_flavor_id, - .thread_flavor_flags = f.flags, - - // init & exit functions - .rtapi_init = &_rtapi_init, - .rtapi_exit = &_rtapi_exit, - .rtapi_next_handle = &_rtapi_next_handle, - // messaging functions moved to instance, - // implemented in rtapi_support.c - // time functions +static rtapi_switch_t rtapi_switch_struct; + +void init_rtapi_switch(void) +{ + + flavor_ptr flavor = flavor_byid(global_data->rtapi_thread_flavor); + + rtapi_switch_struct = (rtapi_switch_t){ + .git_version = GIT_VERSION, + .thread_flavor_name = flavor->name, + .thread_flavor_id = flavor->flavor_id, + .thread_flavor_flags = flavor->flags, + + // init & exit functions + .rtapi_init = &_rtapi_init, + .rtapi_exit = &_rtapi_exit, + .rtapi_next_handle = &_rtapi_next_handle, + // messaging functions moved to instance, + // implemented in rtapi_support.c + // time functions #ifdef RTAPI - .rtapi_clock_set_period = &_rtapi_clock_set_period, - .rtapi_delay = &_rtapi_delay, - .rtapi_delay_max = &_rtapi_delay_max, - .rtapi_task_pll_get_reference = &_rtapi_task_pll_get_reference, - .rtapi_task_pll_set_correction = &_rtapi_task_pll_set_correction, + .rtapi_clock_set_period = &_rtapi_clock_set_period, + .rtapi_delay = &_rtapi_delay, + .rtapi_delay_max = &_rtapi_delay_max, + .rtapi_task_pll_get_reference = &_rtapi_task_pll_get_reference, + .rtapi_task_pll_set_correction = &_rtapi_task_pll_set_correction, #else - .rtapi_clock_set_period = &_rtapi_dummy, - .rtapi_delay = &_rtapi_dummy, - .rtapi_delay_max = &_rtapi_dummy, - .rtapi_task_pll_get_reference = &_rtapi_dummy, - .rtapi_task_pll_set_correction = &_rtapi_dummy, + .rtapi_clock_set_period = &_rtapi_dummy, + .rtapi_delay = &_rtapi_dummy, + .rtapi_delay_max = &_rtapi_dummy, + .rtapi_task_pll_get_reference = &_rtapi_dummy, + .rtapi_task_pll_set_correction = &_rtapi_dummy, #endif - .rtapi_get_time = &_rtapi_get_time, - .rtapi_get_clocks = &_rtapi_get_clocks, - // task functions - .rtapi_prio_highest = &_rtapi_prio_highest, - .rtapi_prio_lowest = &_rtapi_prio_lowest, - .rtapi_prio_next_higher = &_rtapi_prio_next_higher, - .rtapi_prio_next_lower = &_rtapi_prio_next_lower, + .rtapi_get_time = &_rtapi_get_time, + .rtapi_get_clocks = &_rtapi_get_clocks, + // task functions + .rtapi_prio_highest = &_rtapi_prio_highest, + .rtapi_prio_lowest = &_rtapi_prio_lowest, + .rtapi_prio_next_higher = &_rtapi_prio_next_higher, + .rtapi_prio_next_lower = &_rtapi_prio_next_lower, #ifdef RTAPI - .rtapi_task_new = &_rtapi_task_new, - .rtapi_task_delete = &_rtapi_task_delete, - .rtapi_task_start = &_rtapi_task_start, - .rtapi_wait = &_rtapi_wait, - .rtapi_task_resume = &_rtapi_task_resume, - .rtapi_task_pause = &_rtapi_task_pause, - .rtapi_task_self = &_rtapi_task_self, + .rtapi_task_new = &_rtapi_task_new, + .rtapi_task_delete = &_rtapi_task_delete, + .rtapi_task_start = &_rtapi_task_start, + .rtapi_wait = &_rtapi_wait, + .rtapi_task_resume = &_rtapi_task_resume, + .rtapi_task_pause = &_rtapi_task_pause, + .rtapi_task_self = &_rtapi_task_self, #else - .rtapi_task_new = &_rtapi_dummy, - .rtapi_task_delete = &_rtapi_dummy, - .rtapi_task_start = &_rtapi_dummy, - .rtapi_wait = &_rtapi_dummy, - .rtapi_task_resume = &_rtapi_dummy, - .rtapi_task_pause = &_rtapi_dummy, - .rtapi_task_self = &_rtapi_dummy, + .rtapi_task_new = &_rtapi_dummy, + .rtapi_task_delete = &_rtapi_dummy, + .rtapi_task_start = &_rtapi_dummy, + .rtapi_wait = &_rtapi_dummy, + .rtapi_task_resume = &_rtapi_dummy, + .rtapi_task_pause = &_rtapi_dummy, + .rtapi_task_self = &_rtapi_dummy, #endif - // shared memory functions - .rtapi_shmem_new = &_rtapi_shmem_new, - .rtapi_shmem_new_inst = &_rtapi_shmem_new_inst, + // shared memory functions + .rtapi_shmem_new = &_rtapi_shmem_new, + .rtapi_shmem_new_inst = &_rtapi_shmem_new_inst, - .rtapi_shmem_delete = &_rtapi_shmem_delete, - .rtapi_shmem_delete_inst = &_rtapi_shmem_delete_inst, + .rtapi_shmem_delete = &_rtapi_shmem_delete, + .rtapi_shmem_delete_inst = &_rtapi_shmem_delete_inst, - .rtapi_shmem_getptr = &_rtapi_shmem_getptr, - .rtapi_shmem_getptr_inst = &_rtapi_shmem_getptr_inst, - .rtapi_shmem_exists = &_rtapi_shmem_exists, + .rtapi_shmem_getptr = &_rtapi_shmem_getptr, + .rtapi_shmem_getptr_inst = &_rtapi_shmem_getptr_inst, + .rtapi_shmem_exists = &_rtapi_shmem_exists, #ifdef RTAPI - .rtapi_set_exception = &_rtapi_set_exception, + .rtapi_set_exception = &_rtapi_set_exception, #else - .rtapi_set_exception = &_rtapi_dummy, + .rtapi_set_exception = &_rtapi_dummy, #endif #ifdef RTAPI - .rtapi_task_update_stats = &_rtapi_task_update_stats, + .rtapi_task_update_stats = &_rtapi_task_update_stats, #else - .rtapi_task_update_stats = &_rtapi_dummy, + .rtapi_task_update_stats = &_rtapi_dummy, #endif - .rtapi_malloc = &_rtapi_malloc, - .rtapi_malloc_aligned = &_rtapi_malloc_aligned, - .rtapi_calloc = &_rtapi_calloc, - .rtapi_realloc = &_rtapi_realloc, - .rtapi_free = &_rtapi_free, - .rtapi_allocsize = &_rtapi_allocsize, - .rtapi_heap_init = &_rtapi_heap_init, - .rtapi_heap_addmem = &_rtapi_heap_addmem, - .rtapi_heap_status = &_rtapi_heap_status, - .rtapi_heap_setflags = &_rtapi_heap_setflags, - .rtapi_heap_walk_freelist = &_rtapi_heap_walk_freelist, -}; + .rtapi_malloc = &_rtapi_malloc, + .rtapi_malloc_aligned = &_rtapi_malloc_aligned, + .rtapi_calloc = &_rtapi_calloc, + .rtapi_realloc = &_rtapi_realloc, + .rtapi_free = &_rtapi_free, + .rtapi_allocsize = &_rtapi_allocsize, + .rtapi_heap_init = &_rtapi_heap_init, + .rtapi_heap_addmem = &_rtapi_heap_addmem, + .rtapi_heap_status = &_rtapi_heap_status, + .rtapi_heap_setflags = &_rtapi_heap_setflags, + .rtapi_heap_walk_freelist = &_rtapi_heap_walk_freelist, + }; +} // any API, any style: rtapi_switch_t *rtapi_get_handle(void) { @@ -229,6 +234,8 @@ void init_rtapi_data(rtapi_data_t * data) } } + init_rtapi_switch(); + /* done, release the mutex */ rtapi_mutex_give(&(data->mutex)); return; diff --git a/src/rtapi/rtapi_compat.c b/src/rtapi/rtapi_compat.c index 169977bdea..ef9d9c8af1 100644 --- a/src/rtapi/rtapi_compat.c +++ b/src/rtapi/rtapi_compat.c @@ -179,7 +179,7 @@ const flavor_t flavors[] = { flavor_ptr flavor_byname(const char *flavorname) { - flavor_ptr f = flavors; + flavor_ptr f = &(flavors[0]); while (f->name) { if (!strcasecmp(flavorname, f->name)) return f; diff --git a/src/rtapi/rtapi_compat.h b/src/rtapi/rtapi_compat.h index f42be98151..bd67326d75 100644 --- a/src/rtapi/rtapi_compat.h +++ b/src/rtapi/rtapi_compat.h @@ -53,9 +53,10 @@ typedef struct { const char *mod_ext; // RTAPI module extensions, .ko/.so const char *so_ext; // ulapi.so module extension const char *build_sys; - int flavor_id; - unsigned long flags; -} flavor_t, *flavor_ptr; + const int flavor_id; + const unsigned long flags; +} flavor_t; +typedef const flavor_t *flavor_ptr; // these functions must work with or without rtapi.h included #if !defined(SUPPORT_BEGIN_DECLS) @@ -118,9 +119,9 @@ extern int user_in_xenomai_group(); // by consulting /proc/rtapi/instance extern int kernel_instance_id(); -extern flavor_t flavors[]; +extern const flavor_t flavors[]; extern flavor_ptr flavor_byname(const char *flavorname); -extern flavor_ptr const flavor_byid(int flavor_id); +extern flavor_ptr flavor_byid(int flavor_id); extern flavor_ptr default_flavor(void); /* From 82d5f5afb23883f710cac00a351ebc7c820f4485 Mon Sep 17 00:00:00 2001 From: John Morris Date: Sat, 16 Feb 2019 20:02:44 +0800 Subject: [PATCH 449/516] configure.ac: remove obsolete m4 macros --- src/configure.ac | 43 ------------------------------------------- 1 file changed, 43 deletions(-) diff --git a/src/configure.ac b/src/configure.ac index 116c704073..d300c0267d 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -175,54 +175,11 @@ AC_DEFUN([_cfg_flavor_id], [m4_cond(m4_car(flav),$1, m4_apply([_cfg_flavor_tuple_id],[flav]))])]) -dnl _cfg_flavor_threads_headers(flavor): return THREADS_HEADERS -dnl for use in config.h -dnl _cfg_flavor_threads_headers(xenomai) => rtapi/xenomai.h; -dnl _cfg_flavor_threads_headers(posix) => rtapi/rt-preempt.h; -AC_DEFUN([_cfg_flavor_tuple_threads_headers],[$3]) -AC_DEFUN([_cfg_flavor_threads_headers], - rtapi/[m4_foreach([flav],[_cfg_flavor_params], - [m4_cond(m4_car(flav),$1, - m4_apply([_cfg_flavor_tuple_threads_headers],[flav]))])].h) - -dnl _cfg_flavor_mod_ext(flavor): return RT module extension: .ko or .so -dnl for use in rtapi.ini -dnl _cfg_flavor_mod_ext(xenomai) => .so; -dnl _cfg_flavor_mod_ext(xenomai-kernel) => .ko; -AC_DEFUN([_cfg_flavor_tuple_mod_ext],[$4]) -AC_DEFUN([_cfg_flavor_mod_ext], - [m4_foreach([flav],[_cfg_flavor_params], - [m4_cond(m4_car(flav),$1, - m4_apply([_cfg_flavor_tuple_mod_ext],[flav]))])]) - -dnl _cfg_flavor_so_ext(flavor): return plugin filename extension: .so -dnl for use in rtapi.ini -dnl _cfg_flavor_so_ext(xenomai) => .so -AC_DEFUN([_cfg_flavor_tuple_so_ext],[$5]) -AC_DEFUN([_cfg_flavor_so_ext], - [m4_foreach([flav],[_cfg_flavor_params], - [m4_cond(m4_car(flav),$1, - m4_apply([_cfg_flavor_tuple_so_ext],[flav]))])]) - -dnl _cfg_flavor_flags(flavor): flavor flags: integer expression -dnl for use in rtapi.ini -dnl _cfg_flavor_flags(rt-preempt) => 0 -dnl _cfg_flavor_flags(xenomai) => FLAVOR_DOES_IO -AC_DEFUN([_cfg_flavor_tuple_flags],[$6]) -AC_DEFUN([_cfg_flavor_flags], - [m4_foreach([flav],[_cfg_flavor_params], - [m4_cond(m4_car(flav),$1, - m4_apply([_cfg_flavor_tuple_flags],[flav]))])]) - dnl _cfg_flavor_upcase(flavor): return uppercase, and dashes->underscores dnl used to generate C preprocessor macro names dnl _cfg_flavor_ucase(rt-preempt) => RT_PREEMPT AC_DEFUN([_cfg_flavor_upcase],[m4_translit([$*],[a-z-],[A-Z_])]) -dnl _cfg_flavor_underscored(flavor): return dashes->underscores -dnl used to generate e.g. $with_xenomai_kernel -AC_DEFUN([_cfg_flavor_underscored],[m4_translit([$*],[-],[_])]) - ############################################################################## # Subsection 2.2 # From c897576e0c5fc209fd765f6dfbe9ad3d12fc76d0 Mon Sep 17 00:00:00 2001 From: John Morris Date: Sat, 16 Feb 2019 20:04:07 +0800 Subject: [PATCH 450/516] rtapi: Simplify RT priority handling RTAI is dropped, so no need for the complicated macros for calculating priorities. POSIX and Xenomai threads are the same. --- src/rtapi/rt-preempt.c | 3 ++- src/rtapi/rt-preempt.h | 3 --- src/rtapi/rtapi_common.h | 6 +----- src/rtapi/rtapi_task.c | 30 ++++++++---------------------- src/rtapi/xenomai.h | 4 ---- 5 files changed, 11 insertions(+), 35 deletions(-) diff --git a/src/rtapi/rt-preempt.c b/src/rtapi/rt-preempt.c index 880cbdddc2..13ab8542b2 100644 --- a/src/rtapi/rt-preempt.c +++ b/src/rtapi/rt-preempt.c @@ -24,7 +24,8 @@ * ********************************************************************/ -#include "config.h" + +#include "rt-preempt.h" #include "rtapi.h" #include "rtapi_common.h" #include diff --git a/src/rtapi/rt-preempt.h b/src/rtapi/rt-preempt.h index b69bee8af0..a96f56a313 100644 --- a/src/rtapi/rt-preempt.h +++ b/src/rtapi/rt-preempt.h @@ -41,9 +41,6 @@ #endif /* rtapi_task.c */ -#define PRIO_LOWEST sched_get_priority_min(SCHED_FIFO) -#define PRIO_HIGHEST sched_get_priority_max(SCHED_FIFO) - #define HAVE_RTAPI_TASK_NEW_HOOK #define HAVE_RTAPI_TASK_DELETE_HOOK #define HAVE_RTAPI_TASK_STOP_HOOK diff --git a/src/rtapi/rtapi_common.h b/src/rtapi/rtapi_common.h index 6134497749..a4f1f7726f 100644 --- a/src/rtapi/rtapi_common.h +++ b/src/rtapi/rtapi_common.h @@ -82,13 +82,9 @@ #endif -#ifdef THREADS_HEADERS // This will be defined only for a couple of files -#include THREADS_HEADERS /* thread-specific headers */ -#else -// These are the same as Xenomai and RT_PREEMPT anyway +// The same in both Xenomai and RT_PREEMPT #define PRIO_LOWEST 0 #define PRIO_HIGHEST 99 -#endif // RTAPI_MAX_* moved to config.h diff --git a/src/rtapi/rtapi_task.c b/src/rtapi/rtapi_task.c index f2a31618f3..c5f5ebfdf4 100644 --- a/src/rtapi/rtapi_task.c +++ b/src/rtapi/rtapi_task.c @@ -44,20 +44,6 @@ /* priority functions */ -/* Some RT systems (well, just RTAI) define lower values as higher - priority */ -#ifdef INVERSE_PRIO -# define PRIO_INCR -- -# define PRIO_DECR ++ -# define PRIO_GT(a,b) (ab) -#else // normal priorities -# define PRIO_INCR ++ -# define PRIO_DECR -- -# define PRIO_GT(a,b) (a>b) -# define PRIO_LT(a,b) (a _rtapi_prio_highest()) return _rtapi_prio_highest(); - if (PRIO_GT(_rtapi_prio_lowest(),prio)) + if (prio < _rtapi_prio_lowest()) return _rtapi_prio_lowest(); return prio; @@ -81,12 +67,12 @@ int _rtapi_prio_next_higher(int prio) { int _rtapi_prio_next_lower(int prio) { /* next lower priority for arg */ - prio PRIO_DECR; + prio--; /* return a valid priority for out of range arg */ - if (PRIO_GT(prio,_rtapi_prio_highest())) + if (prio > _rtapi_prio_highest()) return _rtapi_prio_highest(); - if (PRIO_GT(_rtapi_prio_lowest(),prio)) + if (prio < _rtapi_prio_lowest()) return _rtapi_prio_lowest(); return prio; @@ -124,8 +110,8 @@ int _rtapi_task_new(const rtapi_task_args_t *args) { // if requested priority is invalid, release lock and return error - if (PRIO_LT(args->prio,_rtapi_prio_lowest()) || - PRIO_GT(args->prio,_rtapi_prio_highest())) { + if (args->prio < _rtapi_prio_lowest() || + args->prio > _rtapi_prio_highest()) { rtapi_print_msg(RTAPI_MSG_ERR, "New task %d '%s:%d': invalid priority %d " "(highest=%d lowest=%d)\n", diff --git a/src/rtapi/xenomai.h b/src/rtapi/xenomai.h index 0c30c4f594..1d3c758068 100644 --- a/src/rtapi/xenomai.h +++ b/src/rtapi/xenomai.h @@ -30,10 +30,6 @@ /* rtapi_task.c */ -// Xenomai rt_task priorities are 0: lowest .. 99: highest -#define PRIO_LOWEST 0 -#define PRIO_HIGHEST 99 - #define HAVE_RTAPI_TASK_DELETE_HOOK #define HAVE_RTAPI_TASK_STOP_HOOK #define HAVE_RTAPI_TASK_PAUSE_HOOK From ab3e233503d21356f8c172bb6b7845d4cdb7c7b4 Mon Sep 17 00:00:00 2001 From: John Morris Date: Sun, 17 Feb 2019 04:40:38 +0800 Subject: [PATCH 451/516] WIP remove the shit out of rtapi_switch & start redoing flavors --- src/hal/cython/machinekit/compat.pxd | 4 - src/hal/lib/Submakefile | 16 +- src/hal/lib/hal_comp.c | 4 - src/hal/lib/halmodule.cc | 4 - src/hal/utils/halcmd.c | 2 - src/hal/utils/halcmd.h | 2 - src/hal/utils/halcmd_commands.c | 65 +----- src/hal/utils/halcmd_completion.c | 11 +- src/rtapi/Submakefile | 20 +- src/rtapi/flavor.c | 61 ------ src/rtapi/rt-preempt.c | 173 ++++++++++++--- src/rtapi/rt-preempt.h | 47 +---- src/rtapi/rtapi.h | 300 ++++----------------------- src/rtapi/rtapi_app.cc | 23 +- src/rtapi/rtapi_common.c | 154 +++----------- src/rtapi/rtapi_common.h | 17 +- src/rtapi/rtapi_compat.c | 268 +----------------------- src/rtapi/rtapi_compat.h | 73 +------ src/rtapi/rtapi_heap.c | 38 ++-- src/rtapi/rtapi_main.c | 69 +----- src/rtapi/rtapi_msgd.cc | 112 +--------- src/rtapi/rtapi_shmem.c | 22 +- src/rtapi/rtapi_task.c | 184 ++++++---------- src/rtapi/rtapi_time.c | 96 ++++----- src/rtapi/ulapi_autoload.c | 237 +-------------------- src/rtapi/ulapi_main.c | 58 +----- src/rtapi/xenomai.c | 194 +++++++++++++---- src/rtapi/xenomai.h | 29 +-- 28 files changed, 577 insertions(+), 1706 deletions(-) delete mode 100644 src/rtapi/flavor.c diff --git a/src/hal/cython/machinekit/compat.pxd b/src/hal/cython/machinekit/compat.pxd index 15990b3ec6..0c8fb78a6f 100644 --- a/src/hal/cython/machinekit/compat.pxd +++ b/src/hal/cython/machinekit/compat.pxd @@ -5,10 +5,6 @@ cdef extern from "rtapi_bitops.h": cdef extern from "rtapi_compat.h": cdef int FLAVOR_DOES_IO - cdef int FLAVOR_RTAPI_DATA_IN_SHM - cdef int POSIX_FLAVOR_FLAGS - cdef int RTPREEMPT_FLAVOR_FLAGS - cdef int XENOMAI_FLAVOR_FLAGS ctypedef struct flavor_t: const char *name diff --git a/src/hal/lib/Submakefile b/src/hal/lib/Submakefile index 87f8d1445a..893ccb63cd 100644 --- a/src/hal/lib/Submakefile +++ b/src/hal/lib/Submakefile @@ -28,7 +28,21 @@ HALLIBSRCS := $(HALLIBDIR)/hal_lib.c \ $(HALLIBDIR)/hal_object_selectors.c \ $(HALLIBDIR)/hal_accessor.c \ $(HALLIBDIR)/hal_iring.c \ - rtapi/rtapi_heap.c + rtapi/rtapi_heap.c \ + rtapi/ulapi_main.c \ + rtapi/rtapi_support.c \ + rtapi/rtapi_hexdump.c \ + rtapi/rtapi_common.c \ + rtapi/rtapi_task.c \ + rtapi/rtapi_shmem.c \ + rtapi/rtapi_time.c \ + rtapi/rtapi_exception.c \ + rtapi/rtapi_common.c \ + rtapi/rtapi_flavor.c \ + rtapi/rt-preempt.c +ifeq ($(HAVE_XENOMAI_THREADS),yes) +HALLIBSRCS += rtapi/xenomai.c +endif # protobuf support functions which depend on HAL - on RT host only HALLIBMTALK_SRCS := $(addprefix $(HALLIBDIR)/, \ diff --git a/src/hal/lib/hal_comp.c b/src/hal/lib/hal_comp.c index 86758b3158..b30f58444a 100644 --- a/src/hal/lib/hal_comp.c +++ b/src/hal/lib/hal_comp.c @@ -74,10 +74,6 @@ hal_comp_t *halg_xinitfv(const int use_hal_mutex, rtapi_set_logtag("hal_lib"); int comp_id, retval; - // sanity: these must have been inited before by the - // respective rtapi.so/.ko module - PCHECK_NULL(rtapi_switch); - if ((dtor != NULL) && (ctor == NULL)) { HALFAIL_NULL(EINVAL,"component '%s': NULL constructor doesnt make" " sense with non-NULL destructor", name); diff --git a/src/hal/lib/halmodule.cc b/src/hal/lib/halmodule.cc index 56c0e61797..735c03546f 100644 --- a/src/hal/lib/halmodule.cc +++ b/src/hal/lib/halmodule.cc @@ -1136,7 +1136,6 @@ const char *module_doc = "Interface to emc2's hal\n" extern "C" void init_hal(void) { - flavor_ptr f = default_flavor(); PyObject *m = Py_InitModule3("_hal", module_methods, module_doc); @@ -1168,9 +1167,6 @@ void init_hal(void) { PyModule_AddIntConstant(m, "HAL_OUT", HAL_OUT); PyModule_AddIntConstant(m, "HAL_IO", HAL_IO); - PyModule_AddIntConstant(m, "is_sim", f->flavor_id == RTAPI_POSIX_ID); - PyModule_AddIntConstant(m, "is_rt", f->flavor_id != RTAPI_POSIX_ID); - PyRun_SimpleString( "(lambda s=__import__('signal'):" "s.signal(s.SIGTERM, s.default_int_handler))()"); diff --git a/src/hal/utils/halcmd.c b/src/hal/utils/halcmd.c index db0880ea32..209d3dce26 100644 --- a/src/hal/utils/halcmd.c +++ b/src/hal/utils/halcmd.c @@ -91,7 +91,6 @@ int scriptmode = 0; /* used to make output "script friendly" (suppress headers) int prompt_mode = 0; /* when getting input from stdin, print a prompt */ int echo_mode = 0; char comp_name[HAL_NAME_LEN+1]; /* name for this instance of halcmd */ -flavor_ptr current_flavor; int autoload = 1; // on newinst, if comp not loaded, loadrt it static void quit(int); @@ -166,7 +165,6 @@ int halcmd_startup(int quiet, char *uri, const char *svc_uuid) { return -EINVAL; } hal_ready(comp_id); - current_flavor = flavor_byid(global_data->rtapi_thread_flavor); return 0; } diff --git a/src/hal/utils/halcmd.h b/src/hal/utils/halcmd.h index c9fc1f05bf..9decca205d 100644 --- a/src/hal/utils/halcmd.h +++ b/src/hal/utils/halcmd.h @@ -95,6 +95,4 @@ extern FILE *halcmd_inifile; #define MAX_CMD_LEN 1024 #define MAX_EXPECTED_SIGS 999 -extern flavor_ptr current_flavor; // reference to current flavor descriptor - #endif diff --git a/src/hal/utils/halcmd_commands.c b/src/hal/utils/halcmd_commands.c index e6ad792635..a777de17c6 100644 --- a/src/hal/utils/halcmd_commands.c +++ b/src/hal/utils/halcmd_commands.c @@ -2474,69 +2474,10 @@ static int print_heap(char **patterns) static void print_thread_stats(hal_thread_t *tptr) { - int flavor = global_data->rtapi_thread_flavor; - rtapi_threadstatus_t *ts = - &global_data->thread_status[tptr->task_id]; - halcmd_output("\nLowlevel thread statistics for '%s':\n\n", ho_name(tptr)); - // generic statistics counters - halcmd_output(" updates=%d\t", ts->num_updates); - if (ts->num_updates) { - halcmd_output("api_err=%d\t", ts->api_errors); - halcmd_output("other_err=%d\n", ts->api_errors); - } - - // flavor-specific statistics counters - switch (flavor) { - case RTAPI_XENOMAI_ID: // xenomai-user - //case RTAPI_XENOMAI_KERNEL_ID: - - halcmd_output(" wait_errors=%d\t", - ts->flavor.xeno.wait_errors); - halcmd_output("overruns=%d\t", - ts->flavor.xeno.total_overruns); - halcmd_output("modeswitches=%d\t", - ts->flavor.xeno.modeswitches); - halcmd_output("contextswitches=%d\n", - ts->flavor.xeno.ctxswitches); - halcmd_output(" pagefaults=%d\t", - ts->flavor.xeno.pagefaults); - halcmd_output("exectime=%llduS\t", - ts->flavor.xeno.exectime/1000); - halcmd_output("status=0x%x\n", - ts->flavor.xeno.status); - break; - - case RTAPI_POSIX_ID: - case RTAPI_RT_PREEMPT_ID: - halcmd_output(" wait_errors=%d\t", - ts->flavor.rtpreempt.wait_errors); - halcmd_output("usercpu=%lduS\t", - ts->flavor.rtpreempt.utime_sec * 1000000 + - ts->flavor.rtpreempt.utime_usec); - halcmd_output("syscpu=%lduS\t", - ts->flavor.rtpreempt.stime_sec * 1000000 + - ts->flavor.rtpreempt.stime_usec); - halcmd_output("nsigs=%ld\n", - ts->flavor.rtpreempt.ru_nsignals); - halcmd_output(" ivcsw=%ld\t", - ts->flavor.rtpreempt.ru_nivcsw - - ts->flavor.rtpreempt.startup_ru_nivcsw); - halcmd_output(" minflt=%ld\t", - ts->flavor.rtpreempt.ru_minflt - - ts->flavor.rtpreempt.startup_ru_minflt); - halcmd_output(" majflt=%ld\n", - ts->flavor.rtpreempt.ru_majflt - - ts->flavor.rtpreempt.startup_ru_majflt); - break; - - default: - halcmd_error("halcmd: thread flavor %d stats not implemented\n", - flavor); - } - halcmd_output("\n"); + rtapi_print_thread_stats(tptr->task_id); } static int print_thread_entry(hal_object_ptr o, foreach_args_t *args) @@ -2589,7 +2530,7 @@ static int print_thread_entry(hal_object_ptr o, foreach_args_t *args) if (scriptmode != 0) { halcmd_output("\n"); } else { - // if a thread name was given, print the flavor specific stats + // if a thread name was given, print its stats if (named) print_thread_stats(tptr); } @@ -2601,7 +2542,7 @@ static void print_thread_info(char **patterns) { if (scriptmode == 0) { halcmd_output("Realtime Threads (flavor: %s, currently %s) :\n", - current_flavor->name, + flavor_descriptor->name, (hal_data->threads_running > 0) ? "running" : "stopped"); halcmd_output(" Period FP CPU Name " "Time Max-Time util max jitter-95%% flags\n"); diff --git a/src/hal/utils/halcmd_completion.c b/src/hal/utils/halcmd_completion.c index 2dca16bdfc..a12364cdb6 100644 --- a/src/hal/utils/halcmd_completion.c +++ b/src/hal/utils/halcmd_completion.c @@ -560,8 +560,6 @@ static char *loadusr_generator(const char *text, int state) { return NULL; } -extern flavor_ptr current_flavor; // reference to current flavor descriptor - static char *loadrt_generator(const char *text, int state) { static int len; static DIR *d; @@ -571,9 +569,6 @@ static char *loadrt_generator(const char *text, int state) { if (get_rtapi_config(rtlibdir,"RTLIB_DIR",PATH_MAX) != 0) return NULL; - strcat(rtlibdir,"/"); - //strcat(rtlibdir, current_flavor->name); - strcat(rtlibdir, "modules"); strcat(rtlibdir,"/"); if(!state) { @@ -583,13 +578,11 @@ static char *loadrt_generator(const char *text, int state) { while(d && (ent = readdir(d))) { char *result; - if(!strstr(ent->d_name, default_flavor()->mod_ext)) continue; - if(startswith(ent->d_name, "rtapi.")) continue; + if(!strstr(ent->d_name, ".so")) continue; if(startswith(ent->d_name, "hal_lib.")) continue; if(strncmp(text, ent->d_name, len) != 0) continue; result = strdup(ent->d_name); - result[strlen(result) - \ - strlen(default_flavor()->mod_ext)] = 0; + result[strlen(result) - strlen(".so")] = 0; return result; } if (d != NULL) { diff --git a/src/rtapi/Submakefile b/src/rtapi/Submakefile index 32841cf895..7258ecf4b8 100644 --- a/src/rtapi/Submakefile +++ b/src/rtapi/Submakefile @@ -199,7 +199,13 @@ RTAPI_APP_SRCS := \ rtapi/rtapi_app.cc \ rtapi/rtapi_compat.c \ rtapi/rtapi_hexdump.c \ - rtapi/rtapi_support.c + rtapi/rtapi_support.c \ + rtapi/rtapi_flavor.c \ + rtapi/rt-preempt.c + +ifeq ($(HAVE_XENOMAI_THREADS),yes) +RTAPI_APP_SRCS += rtapi/xenomai.c +endif USERSRCS += $(RTAPI_APP_SRCS) @@ -355,18 +361,6 @@ $(call TOOBJSDEPS, $(RTAPI_MSGD_SRCS)): \ USERSRCS += $(RTAPI_MSGD_SRCS) TARGETS += ../libexec/rtapi_msgd -# lock debugging help plus a bit of API example -FLAVOR_SRCS = rtapi/flavor.c rtapi/rtapi_compat.c - -../libexec/flavor: $(call TOOBJS, $(FLAVOR_SRCS)) \ - ../lib/liblinuxcncshm.so ../lib/liblinuxcncini.so - $(ECHO) Linking $(notdir $@) - @mkdir -p $(dir $@) - $(Q)$(CC) $(LDFLAGS) -o $@ $^ -lrt - -USERSRCS += $(FLAVOR_SRCS) -TARGETS += ../libexec/flavor - ################################################################## # rtapi.ini config file ################################################################## diff --git a/src/rtapi/flavor.c b/src/rtapi/flavor.c deleted file mode 100644 index 36ebb0bc9b..0000000000 --- a/src/rtapi/flavor.c +++ /dev/null @@ -1,61 +0,0 @@ -/* Copyright (C) 2012, 2013 Michael Haberler - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This program 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -// inspect the current default flavor. - -#include "rtapi.h" - -#include -#include -#include -#include "config.h" - -#include -#include -#include -#include - -#include "rtapi.h" -#include "rtapi_compat.h" - -int shmdrv_loaded; -size_t page_size; - -int main(int argc, char **argv) -{ - char *progname = argv[0]; - flavor_ptr flavor; - - flavor = default_flavor(); - - if (!flavor) { - fprintf(stderr,"%s: could not detect default flavor\n", progname); - exit(1); - } - - if (argc == 1) { - printf("%s\n", flavor->name); - } else if (strcmp(argv[1],"-m") == 0) { - printf("%s\n", flavor->mod_ext); - } else if (strcmp(argv[1],"-d") == 0) { - printf("%d\n", flavor->flavor_id); - } else { - fprintf(stderr, "Unknown option '%s'\n",argv[1]); - exit(1); - } - exit(0); -} diff --git a/src/rtapi/rt-preempt.c b/src/rtapi/rt-preempt.c index 13ab8542b2..1d12bca48c 100644 --- a/src/rtapi/rt-preempt.c +++ b/src/rtapi/rt-preempt.c @@ -25,11 +25,16 @@ ********************************************************************/ +#include "rtapi_flavor.h" #include "rt-preempt.h" #include "rtapi.h" #include "rtapi_common.h" #include +#include "config.h" +#include // sched_get_priority_*() +#include /* pthread_* */ + /*********************************************************************** * TASK FUNCTIONS * ************************************************************************/ @@ -44,11 +49,14 @@ #include // syscall(SYS_gettid); #include // prctl(PR_SET_NAME) +// if this exists, and contents is '1', it's RT_PREEMPT +#define PREEMPT_RT_SYSFS "/sys/kernel/realtime" + /* Lock for task_array and module_array allocations */ static pthread_key_t task_key; static pthread_once_t task_key_once = PTHREAD_ONCE_INIT; -int _rtapi_task_self_hook(void); +int posix_task_self_hook(void); typedef struct { @@ -73,8 +81,8 @@ extra_task_data_t extra_task_data[RTAPI_MAX_TASKS + 1]; int have_cg; // true when libcgroup initialized successfully #endif /* RTAPI */ -#ifdef HAVE_RTAPI_GET_CLOCKS_HOOK -long long int _rtapi_get_clocks_hook(void) +#if !defined(__i386__) && !defined(__x86_64__) +long long int posix_get_clocks_hook(void) { struct timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts); @@ -84,18 +92,8 @@ long long int _rtapi_get_clocks_hook(void) #endif -int _rtapi_init(const char *modname) { - return _rtapi_next_handle(); -} - -int _rtapi_exit(int module_id) { - /* do nothing for ULAPI */ - return 0; -} - - #ifdef RTAPI -void _rtapi_module_init_hook(void) +void posix_module_init_hook(void) { int ret; @@ -108,7 +106,7 @@ void _rtapi_module_init_hook(void) ret, cgroup_strerror(ret)); } #else -void _rtapi_module_init_hook(void) {} +void posix_module_init_hook(void) {} #endif #ifdef RTAPI @@ -120,14 +118,14 @@ static inline int task_id(task_data *task) { /*********************************************************************** * RT thread statistics update * ************************************************************************/ -int _rtapi_task_update_stats_hook(void) +int posix_task_update_stats_hook(void) { - int task_id = _rtapi_task_self_hook(); + int task_id = posix_task_self_hook(); // paranoia if ((task_id < 0) || (task_id > RTAPI_MAX_TASKS)) { rtapi_print_msg(RTAPI_MSG_ERR, - "_rtapi_task_update_stats_hook: BUG -" + "rtapi_task_update_stats_hook: BUG -" " task_id out of range: %d\n", task_id); return -ENOENT; @@ -200,7 +198,7 @@ static task_data *rtapi_this_task() { return (task_data *)pthread_getspecific(task_key); } -int _rtapi_task_new_hook(task_data *task, int task_id) { +int posix_task_new_hook(task_data *task, int task_id) { void *stackaddr; stackaddr = malloc(task->stacksize); @@ -215,7 +213,7 @@ int _rtapi_task_new_hook(task_data *task, int task_id) { return task_id; } -void _rtapi_task_delete_hook(task_data *task, int task_id) { +int posix_task_delete_hook(task_data *task, int task_id) { int err; void *returncode; @@ -240,6 +238,8 @@ void _rtapi_task_delete_hook(task_data *task, int task_id) { /* Free the thread stack. */ free(extra_task_data[task_id].stackaddr); extra_task_data[task_id].stackaddr = NULL; + + return &returncode; } static int realtime_set_affinity(task_data *task) { @@ -381,7 +381,7 @@ static void *realtime_thread(void *arg) { _rtapi_advance_time(&extra_task_data[task_id(task)].next_time, task->period + task->pll_correction, 0); - _rtapi_task_update_stats_hook(); // inital stats update + posix_task_update_stats_hook(); // inital stats update /* The task should not pagefault at all. So record initial counts now. * Note that currently we _do_ receive a few pagefaults in the @@ -419,7 +419,7 @@ static void *realtime_thread(void *arg) { return NULL; } -int _rtapi_task_start_hook(task_data *task, int task_id) { +int posix_task_start_hook(task_data *task, int task_id) { pthread_attr_t attr; int retval; @@ -457,11 +457,11 @@ int _rtapi_task_start_hook(task_data *task, int task_id) { return 0; } -void _rtapi_task_stop_hook(task_data *task, int task_id) { +void posix_task_stop_hook(task_data *task, int task_id) { extra_task_data[task_id].destroyed = 1; } -int _rtapi_wait_hook(const int flags) { +int posix_wait_hook(const int flags) { struct timespec ts; task_data *task = rtapi_this_task(); @@ -483,7 +483,7 @@ int _rtapi_wait_hook(const int flags) { // timing went wrong: // update stats counters in thread status - _rtapi_task_update_stats_hook(); + posix_task_update_stats_hook(); rtapi_threadstatus_t *ts = &global_data->thread_status[task_id(task)]; @@ -501,7 +501,7 @@ int _rtapi_wait_hook(const int flags) { return 0; } -void _rtapi_delay_hook(long int nsec) +void posix_delay_hook(long int nsec) { struct timespec t; @@ -511,7 +511,7 @@ void _rtapi_delay_hook(long int nsec) } -int _rtapi_task_self_hook(void) { +int posix_task_self_hook(void) { int n; /* ask OS for pointer to its data for the current pthread */ @@ -529,15 +529,15 @@ int _rtapi_task_self_hook(void) { return -EINVAL; } -long long _rtapi_task_pll_get_reference_hook(void) { - int task_id = _rtapi_task_self_hook(); +long long posix_task_pll_get_reference_hook(void) { + int task_id = posix_task_self_hook(); if (task_id < 0) return 0; return extra_task_data[task_id].next_time.tv_sec * 1000000000LL + extra_task_data[task_id].next_time.tv_nsec; } -int _rtapi_task_pll_set_correction_hook(long value) { - int task_id = _rtapi_task_self_hook(); +int posix_task_pll_set_correction_hook(long value) { + int task_id = posix_task_self_hook(); task_data *task = &task_array[task_id]; if (task <= 0) return -EINVAL; if (value > task->pll_correction_limit) @@ -551,4 +551,115 @@ int _rtapi_task_pll_set_correction_hook(long value) { return 0; } +int kernel_is_rtpreempt() +{ + FILE *fd; + int retval = 0; + + if ((fd = fopen(PREEMPT_RT_SYSFS,"r")) != NULL) { + int flag; + retval = ((fscanf(fd, "%d", &flag) == 1) && (flag)); + fclose(fd); + } + return retval; +} + +int rtpreempt_can_run_flavor() +{ + return kernel_is_rtpreempt(); +} + +int posix_can_run_flavor() +{ + return 1; +} + + +void print_thread_stats(int task_id) +{ + rtapi_threadstatus_t *ts = + &global_data->thread_status[task_id]; + + rtapi_print(" wait_errors=%d\t", + ts->flavor.rtpreempt.wait_errors); + rtapi_print("usercpu=%lduS\t", + ts->flavor.rtpreempt.utime_sec * 1000000 + + ts->flavor.rtpreempt.utime_usec); + rtapi_print("syscpu=%lduS\t", + ts->flavor.rtpreempt.stime_sec * 1000000 + + ts->flavor.rtpreempt.stime_usec); + rtapi_print("nsigs=%ld\n", + ts->flavor.rtpreempt.ru_nsignals); + rtapi_print(" ivcsw=%ld\t", + ts->flavor.rtpreempt.ru_nivcsw - + ts->flavor.rtpreempt.startup_ru_nivcsw); + rtapi_print(" minflt=%ld\t", + ts->flavor.rtpreempt.ru_minflt - + ts->flavor.rtpreempt.startup_ru_minflt); + rtapi_print(" majflt=%ld\n", + ts->flavor.rtpreempt.ru_majflt - + ts->flavor.rtpreempt.startup_ru_majflt); + rtapi_print("\n"); +} + + + +flavor_descriptor_t flavor_rt_prempt_descriptor = { + .name = "rt-preempt", + .flavor_id = RTAPI_RT_PREEMPT_ID, + .flags = FLAVOR_DOES_IO, + .time_no_clock_monotonic = 0, + .can_run_flavor = rtpreempt_can_run_flavor, + .module_init_hook = NULL, + .module_exit_hook = NULL, + .task_update_stats_hook = NULL, + .print_thread_stats_hook = print_thread_stats, + .task_new_hook = posix_task_new_hook, + .task_delete_hook = posix_task_delete_hook, + .task_start_hook = posix_task_start_hook, + .task_stop_hook = posix_task_stop_hook, + .task_pause_hook = NULL, + .wait_hook = posix_wait_hook, + .resume_hook = NULL, + .delay_hook = posix_delay_hook, + .get_time_hook = NULL, +#if !defined(__i386__) && !defined(__x86_64__) + .get_clocks_hook = posix_get_clocks_hook, +#else + .get_clocks_hook = NULL, +#endif + .task_self_hook = posix_task_self_hook, + .task_pll_get_reference_hook = posix_task_pll_get_reference_hook, + .task_pll_set_correction_hook = posix_task_pll_set_correction_hook +}; + +flavor_descriptor_t flavor_posix_descriptor = { + .name = "posix", + .flavor_id = RTAPI_POSIX_ID, + .flags = 0, + .time_no_clock_monotonic = 0, + .can_run_flavor = posix_can_run_flavor, + .module_init_hook = NULL, + .module_exit_hook = NULL, + .task_update_stats_hook = NULL, + .print_thread_stats_hook = print_thread_stats, + .task_new_hook = posix_task_new_hook, + .task_delete_hook = posix_task_delete_hook, + .task_start_hook = posix_task_start_hook, + .task_stop_hook = posix_task_stop_hook, + .task_pause_hook = NULL, + .wait_hook = posix_wait_hook, + .resume_hook = NULL, + .delay_hook = posix_delay_hook, + .get_time_hook = NULL, +#if !defined(__i386__) && !defined(__x86_64__) + .get_clocks_hook = posix_get_clocks_hook, +#else + .get_clocks_hook = NULL, +#endif + .task_self_hook = posix_task_self_hook, + .task_pll_get_reference_hook = posix_task_pll_get_reference_hook, + .task_pll_set_correction_hook = posix_task_pll_set_correction_hook +}; + #endif /* RTAPI */ diff --git a/src/rtapi/rt-preempt.h b/src/rtapi/rt-preempt.h index a96f56a313..7a60112fc8 100644 --- a/src/rtapi/rt-preempt.h +++ b/src/rtapi/rt-preempt.h @@ -1,13 +1,9 @@ /******************************************************************** * Description: rt-preempt.h -* This file defines the differences specific to the -* the RT_PREEMPT thread system +* RT_PREEMPT flavor descriptors * -* It should be included in rtapi_common.h * -* -* Copyright (C) 2012, 2013 Michael Büsch , -* John Morris +* Copyright (C) 2019 John Morris * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -24,40 +20,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ********************************************************************/ -/*********************************************************************** -* TASK FUNCTIONS * -************************************************************************/ - -#include "config.h" -#include // sched_get_priority_*() -#include /* pthread_* */ - -#if THREAD_FLAVOR_ID == RTAPI_POSIX_ID -#define FLAVOR_FLAGS POSIX_FLAVOR_FLAGS // see rtapi_compat.h -#endif - -#if THREAD_FLAVOR_ID == RTAPI_RT_PREEMPT_ID -#define FLAVOR_FLAGS RTPREEMPT_FLAVOR_FLAGS -#endif - -/* rtapi_task.c */ -#define HAVE_RTAPI_TASK_NEW_HOOK -#define HAVE_RTAPI_TASK_DELETE_HOOK -#define HAVE_RTAPI_TASK_STOP_HOOK -#define HAVE_RTAPI_WAIT_HOOK -#define HAVE_RTAPI_TASK_SELF_HOOK -#define HAVE_RTAPI_TASK_UPDATE_STATS_HOOK -#define HAVE_RTAPI_TASK_PLL_GET_REFERENCE_HOOK -#define HAVE_RTAPI_TASK_PLL_SET_CORRECTION_HOOK - -#if !defined(__i386__) && !defined(__x86_64__) -#define HAVE_RTAPI_GET_CLOCKS_HOOK // needed for e.g. ARM, see rtapi_time.c -#endif - - -/* rtapi_main.c */ -#define HAVE_RTAPI_MODULE_INIT_HOOK // init cgroups +#include "rtapi_flavor.h" -/* misc */ -#define HAVE_RTAPI_TASK_FREE -#define HAVE_DROP_RESTORE_PRIVS +extern flavor_descriptor_t flavor_rt_prempt_descriptor; +extern flavor_descriptor_t flavor_posix_descriptor; diff --git a/src/rtapi/rtapi.h b/src/rtapi/rtapi.h index 6be87617af..cd0a10ce1b 100644 --- a/src/rtapi/rtapi.h +++ b/src/rtapi/rtapi.h @@ -200,10 +200,7 @@ static inline shmoff_t shm_off(const void *base, const void *p) { above. Call only from within user or init/cleanup code, not from realtime tasks. */ -typedef int (*rtapi_init_t)(const char *); -#define rtapi_init(modname) \ - rtapi_switch->rtapi_init(modname) -extern int _rtapi_init(const char *modname); +int rtapi_init(const char *modname); /** 'rtapi_exit()' shuts down and cleans up the RTAPI. It must be called prior to exit by any module that called rtapi_init. @@ -215,70 +212,37 @@ extern int _rtapi_init(const char *modname); code within the module. Call only from within user or init/cleanup code, not from realtime tasks. */ -typedef int (*rtapi_exit_t)(int); -#define rtapi_exit(module_id) \ - rtapi_switch->rtapi_exit(module_id) -extern int _rtapi_exit(int module_id); +int rtapi_exit(int module_id); /** 'rtapi_next_handle()' returns a globally unique int ID */ -typedef int (*rtapi_next_handle_t)(void); -#define rtapi_next_handle() \ - rtapi_switch->rtapi_next_handle() -extern int _rtapi_next_handle(void); +extern int rtapi_next_handle(void); /*********************************************************************** * shared memory allocator * ************************************************************************/ -typedef void * (*rtapi_malloc_t)(struct rtapi_heap *h, size_t nbytes); -#define rtapi_malloc(h, nbytes) \ - rtapi_switch->rtapi_malloc(h, nbytes) +void * rtapi_malloc_aligned(struct rtapi_heap *h, size_t nbytes, size_t align); -typedef void * (*rtapi_malloc_aligned_t)(struct rtapi_heap *h, - size_t nbytes, - size_t align); -#define rtapi_malloc_aligned(h, nbytes, align) \ - rtapi_switch->rtapi_malloc_aligned(h, nbytes, align) +void * rtapi_calloc(struct rtapi_heap *h, size_t n, size_t size); -typedef void * (*rtapi_calloc_t)(struct rtapi_heap *h, size_t n, size_t size); -#define rtapi_calloc(h, n, size) \ - rtapi_switch->rtapi_calloc(h, n, size) +void * rtapi_realloc(struct rtapi_heap *h, void *p, size_t size); -typedef void * (*rtapi_realloc_t)(struct rtapi_heap *h, void *p, size_t size); -#define rtapi_realloc(h, p, size) \ - rtapi_switch->rtapi_realloc(h, p size) +void rtapi_free(struct rtapi_heap *h, void *p); -typedef void (*rtapi_free_t)(struct rtapi_heap *h, void *p); -#define rtapi_free(h, p) \ - rtapi_switch->rtapi_free(h, p) +size_t rtapi_allocsize(struct rtapi_heap *h, const void *p); -typedef size_t (*rtapi_allocsize_t)(struct rtapi_heap *h, const void *p); -#define rtapi_allocsize(h, p) \ - rtapi_switch->rtapi_allocsize(h, p) - -typedef int (*rtapi_heap_init_t)(struct rtapi_heap *h, const char *name); -#define rtapi_heap_init(h, n) \ - rtapi_switch->rtapi_heap_init(h, n) +int rtapi_heap_init(struct rtapi_heap *h, const char *name); // any memory added to the heap must lie above the rtapi_heap structure: -typedef int (*rtapi_heap_addmem_t)(struct rtapi_heap *h, void *space, size_t size); -#define rtapi_heap_addmem(h, s, size) \ - rtapi_switch->rtapi_heap_addmem(h, s, size) +int rtapi_heap_addmem(struct rtapi_heap *h, void *space, size_t size); -typedef size_t (*rtapi_heap_status_t)(struct rtapi_heap *h, struct rtapi_heap_stat *hs); -#define rtapi_heap_status(h, hs) \ - rtapi_switch->rtapi_heap_status(h, hs) +size_t rtapi_heap_status(struct rtapi_heap *h, struct rtapi_heap_stat *hs); -typedef int (*rtapi_heap_setflags_t)(struct rtapi_heap *h, int flags); -#define rtapi_heap_setflags(h, flags) \ - rtapi_switch->rtapi_heap_setflags(h, flags) +int rtapi_heap_setflags(struct rtapi_heap *h, int flags); -typedef size_t (*rtapi_heap_walk_freelist_t)(struct rtapi_heap *h, - chunk_t cb, void *user); -#define rtapi_heap_walk_freelist(h, cb, u) \ - rtapi_switch->rtapi_heap_walk_freelist(h, cb, u) +size_t rtapi_heap_walk_freelist(struct rtapi_heap *h, chunk_t cb, void *user); @@ -610,10 +574,7 @@ static inline void _autorelease_mutex_if(struct _mutex_cleanup *c) { init/cleanup code, not from realtime tasks. This function is not available from user (non-realtime) code. */ -typedef long int (*rtapi_clock_set_period_t)(long int); -#define rtapi_clock_set_period(nsecs) \ - rtapi_switch->rtapi_clock_set_period(nsecs) -extern long int _rtapi_clock_set_period(long int nsecs); +extern long int rtapi_clock_set_period(long int nsecs); /** rtapi_delay() is a simple delay. It is intended only for short delays, since it simply loops, wasting CPU cycles. 'nsec' is the @@ -626,15 +587,9 @@ extern long int _rtapi_clock_set_period(long int nsecs); as one nano-second, or as bad as a several microseconds. May be called from init/cleanup code, and from within realtime tasks. */ -typedef void (*rtapi_delay_t)(long int); -#define rtapi_delay(nsec) \ - rtapi_switch->rtapi_delay(nsec) -extern void _rtapi_delay(long int nsec); +extern void rtapi_delay(long int nsec); -typedef long int (*rtapi_delay_max_t)(void); -#define rtapi_delay_max() \ - rtapi_switch->rtapi_delay_max() -extern long int _rtapi_delay_max(void); +extern long int rtapi_delay_max(void); /** Support external clock tracking for linuxcnc-ethercat */ #define RTAPI_TASK_PLL_SUPPORT @@ -644,10 +599,7 @@ extern long int _rtapi_delay_max(void); Returns 0 if not called from within task context or on platforms that do not support this. */ -typedef long long (*rtapi_task_pll_get_reference_t)(void); -#define rtapi_task_pll_get_reference() \ - rtapi_switch->rtapi_task_pll_get_reference() -extern long long _rtapi_task_pll_get_reference(void); +extern long long rtapi_task_pll_get_reference(void); /** 'rtapi_task_pll_set_correction()' sets the correction value for the next scheduling cycle of the current task. This could be @@ -655,10 +607,7 @@ extern long long _rtapi_task_pll_get_reference(void); Returns -EINVAL if not called from within task context or on platforms that do not support this. */ -typedef int (*rtapi_task_pll_set_correction_t)(long); -#define rtapi_task_pll_set_correction(value) \ - rtapi_switch->rtapi_task_pll_set_correction(value) -extern int _rtapi_task_pll_set_correction(long value); +extern int rtapi_task_pll_set_correction(long value); #endif /* RTAPI */ @@ -686,10 +635,7 @@ extern int _rtapi_task_pll_set_correction(long value); rtapi_get_time, and deltat is an ordinary long int (32 bits). This will work for times up to about 2 seconds. */ -typedef long long int (*rtapi_get_time_t)(void); -#define rtapi_get_time() \ - rtapi_switch->rtapi_get_time() -extern long long int _rtapi_get_time(void); +extern long long int rtapi_get_time(void); /** rtapi_get_clocks returns the current time in CPU clocks. It is fast, since it just reads the TSC in the CPU instead of calling a @@ -716,10 +662,7 @@ extern long long int _rtapi_get_time(void); CPU clock frequency. It is best used for millisecond and microsecond scale measurements though. */ -typedef long long int (*rtapi_get_clocks_t)(void); -#define rtapi_get_clocks() \ - rtapi_switch->rtapi_get_clocks() -extern long long int _rtapi_get_clocks(void); +extern long long int rtapi_get_clocks(void); /*********************************************************************** @@ -780,21 +723,11 @@ typedef struct { } rtapi_task_args_t; -typedef int (*rtapi_prio_highest_lowest_t)(void); -#define rtapi_prio_highest() \ - rtapi_switch->rtapi_prio_highest() -extern int _rtapi_prio_highest(void); -#define rtapi_prio_lowest() \ - rtapi_switch->rtapi_prio_lowest() -extern int _rtapi_prio_lowest(void); +extern int rtapi_prio_highest(void); +extern int rtapi_prio_lowest(void); -typedef int (*rtapi_prio_next_higher_lower_t)(int); -#define rtapi_prio_next_higher(prio) \ - rtapi_switch->rtapi_prio_next_higher(prio) -extern int _rtapi_prio_next_higher(int prio); -#define rtapi_prio_next_lower(prio) \ - rtapi_switch->rtapi_prio_next_lower(prio) -extern int _rtapi_prio_next_lower(int prio); +extern int rtapi_prio_next_higher(int prio); +extern int rtapi_prio_next_lower(int prio); #ifdef RTAPI @@ -826,11 +759,7 @@ extern int _rtapi_prio_next_lower(int prio); #define RTAPI_NO_FP 0 #define RTAPI_USES_FP 1 -typedef int (*rtapi_task_new_t)(const rtapi_task_args_t *args); - -#define rtapi_task_new(args) \ - rtapi_switch->rtapi_task_new(args) -extern int _rtapi_task_new(const rtapi_task_args_t *args); +extern int rtapi_task_new(const rtapi_task_args_t *args); /** 'rtapi_task_delete()' deletes a task. 'task_id' is a task ID from a previous call to rtapi_task_new(). It frees memory @@ -839,10 +768,7 @@ extern int _rtapi_task_new(const rtapi_task_args_t *args); it. Returns a status code. Call only from within init/cleanup code, not from realtime tasks. */ -typedef int (*rtapi_task_delete_t)(int); -#define rtapi_task_delete(task_id) \ - rtapi_switch->rtapi_task_delete(task_id) -extern int _rtapi_task_delete(int task_id); +extern int rtapi_task_delete(int task_id); /** 'rtapi_task_start()' starts a task in periodic mode. 'task_id' is a task ID from a call to rtapi_task_new(). The task must be in @@ -853,20 +779,14 @@ extern int _rtapi_task_delete(int task_id); set equal to the clock period. Call only from within init/cleanup code, not from realtime tasks. */ -typedef int (*rtapi_task_start_t)(int, unsigned long int); -#define rtapi_task_start(task_id, period_nsec) \ - rtapi_switch->rtapi_task_start(task_id, period_nsec) -extern int _rtapi_task_start(int task_id, unsigned long int period_nsec); +extern int rtapi_task_start(int task_id, unsigned long int period_nsec); /** 'rtapi_wait()' suspends execution of the current task until the next period. The task must be periodic, if not, the result is undefined. The function will return at the beginning of the next period. Call only from within a realtime task. */ -typedef int (*rtapi_wait_t)(int); -#define rtapi_wait(flag) \ - rtapi_switch->rtapi_wait(flag) -extern int _rtapi_wait(const int flag); +extern int rtapi_wait(const int flag); /** 'rtapi_task_resume() starts a task in free-running mode. 'task_id' is a task ID from a call to rtapi_task_new(). The task must be in @@ -879,10 +799,7 @@ extern int _rtapi_wait(const int flag); 3) it is returned to the "paused" state by rtapi_task_pause(). May be called from init/cleanup code, and from within realtime tasks. */ -typedef int (*rtapi_task_resume_t)(int); -#define rtapi_task_resume(task_id) \ - rtapi_switch->rtapi_task_resume(task_id) -extern int _rtapi_task_resume(int task_id); +extern int rtapi_task_resume(int task_id); /** 'rtapi_task_pause() causes 'task_id' to stop execution and change to the "paused" state. 'task_id' can be free-running or periodic. @@ -892,18 +809,12 @@ extern int _rtapi_task_resume(int task_id); rtapi_task_start() is called. May be called from init/cleanup code, and from within realtime tasks. */ -typedef int (*rtapi_task_pause_t)(int); -#define rtapi_task_pause(task_id) \ - rtapi_switch->rtapi_task_pause(task_id) -extern int _rtapi_task_pause(int task_id); +extern int rtapi_task_pause(int task_id); /** 'rtapi_task_self()' returns the task ID of the current task. Call only from a realtime task. */ -typedef int (*rtapi_task_self_t)(void); -#define rtapi_task_self() \ - rtapi_switch->rtapi_task_self() -extern int _rtapi_task_self(void); +extern int rtapi_task_self(void); /** 'rtapi_task_update_stats()' will update the thread statistics in the global_data_t structure. @@ -911,10 +822,7 @@ extern int _rtapi_task_self(void); Call only from a realtime task. returns a negative value on error, or the thread's task id. */ -typedef int (*rtapi_task_update_stats_t)(void); -#define rtapi_task_update_stats() \ - rtapi_switch->rtapi_task_update_stats() -extern int _rtapi_task_update_stats(void); +extern int rtapi_task_update_stats(void); #endif /* RTAPI */ @@ -939,19 +847,13 @@ extern int _rtapi_task_update_stats(void); returns a negative error code. Call only from within user or init/cleanup code, not from realtime tasks. */ -typedef int (*rtapi_shmem_new_t)(int, int, unsigned long int); -#define rtapi_shmem_new(key, module_id, size) \ - rtapi_switch->rtapi_shmem_new(key, module_id, size) -extern int _rtapi_shmem_new(int key, int module_id, +extern int rtapi_shmem_new(int key, int module_id, unsigned long int size); /** 'rtapi_shmem_new_inst()' does the same for a particular instance. **/ -typedef int (*rtapi_shmem_new_inst_t)(int, int, int, unsigned long int); -#define rtapi_shmem_new_inst(key, instance, module_id, size) \ - rtapi_switch->rtapi_shmem_new_inst(key, instance, module_id, size) -extern int _rtapi_shmem_new_inst(int key, int instance, int module_id, +extern int rtapi_shmem_new_inst(int key, int instance, int module_id, unsigned long int size); /** 'rtapi_shmem_delete()' frees the shared memory block associated @@ -959,15 +861,9 @@ extern int _rtapi_shmem_new_inst(int key, int instance, int module_id, Returns a status code. Call only from within user or init/cleanup code, not from realtime tasks. */ -typedef int (*rtapi_shmem_delete_t)(int, int); -#define rtapi_shmem_delete(shmem_id, module_id) \ - rtapi_switch->rtapi_shmem_delete(shmem_id, module_id) -extern int _rtapi_shmem_delete(int shmem_id, int module_id); +extern int rtapi_shmem_delete(int shmem_id, int module_id); -typedef int (*rtapi_shmem_delete_inst_t)(int, int, int); -#define rtapi_shmem_delete_inst(shmem_id, instance, module_id) \ - rtapi_switch->rtapi_shmem_delete_inst(shmem_id, instance, module_id) -extern int _rtapi_shmem_delete_inst(int shmem_id, int instance, int module_id); +extern int rtapi_shmem_delete_inst(int shmem_id, int instance, int module_id); /** 'rtapi_shmem_getptr()' sets '*ptr' to point to shared memory block associated with 'shmem_id'. Returns a status code. May be called @@ -976,25 +872,16 @@ extern int _rtapi_shmem_delete_inst(int shmem_id, int instance, int module_id); If non-NULL, *size is set to the size of the shared memory block. */ -typedef int (*rtapi_shmem_getptr_t)(int, void **, unsigned long int *); -#define rtapi_shmem_getptr(shmem_id, ptr, size) \ - rtapi_switch->rtapi_shmem_getptr(shmem_id, ptr, size) -extern int _rtapi_shmem_getptr(int shmem_id, void **ptr, unsigned long int *size); +extern int rtapi_shmem_getptr(int shmem_id, void **ptr, unsigned long int *size); -typedef int (*rtapi_shmem_getptr_inst_t)(int, int, void **, unsigned long int *); -#define rtapi_shmem_getptr_inst(shmem_id, instance, ptr, size) \ - rtapi_switch->rtapi_shmem_getptr_inst(shmem_id, instance, ptr, size) -extern int _rtapi_shmem_getptr_inst(int shmem_id, int instance, void **ptr, unsigned long int *size); +extern int rtapi_shmem_getptr_inst(int shmem_id, int instance, void **ptr, unsigned long int *size); /* rtapi_shmem_exists() tests whether a shared memory segment exists and can be attached; it does not actually attach it. The argument is a shared memory key. Not callable from realtime tasks. */ -typedef int (*rtapi_shmem_exists_t)(int); -#define rtapi_shmem_exists(key) \ - rtapi_switch->rtapi_shmem_exists(key) -extern int _rtapi_shmem_exists(int key); +extern int rtapi_shmem_exists(int key); /*********************************************************************** * Callback on RT scheduling violation * @@ -1007,10 +894,7 @@ extern int _rtapi_shmem_exists(int key); ************************************************************************/ // rtapi_exception_handler_t is defined in rtapi_exception.h -typedef rtapi_exception_handler_t (*rtapi_set_exception_t) (rtapi_exception_handler_t); -#define rtapi_set_exception(handler) \ - rtapi_switch->rtapi_set_exception(handler) -extern rtapi_exception_handler_t _rtapi_set_exception(rtapi_exception_handler_t h); +extern rtapi_exception_handler_t rtapi_set_exception(rtapi_exception_handler_t h); /*********************************************************************** @@ -1050,106 +934,6 @@ extern rtapi_exception_handler_t _rtapi_set_exception(rtapi_exception_handler_t /*********************************************************************** * RTAPI SWITCH * ************************************************************************/ -/** rtapi_switch contains pointers to the _rtapi_* functions declared - above. The struct is initialized in rtapi_common.c. - - Each thread system needs a member in the thread_flavor_id_t enum. -*/ - -// prototype for dummy rtapi placeholder function -typedef int (*rtapi_dummy_t)(void); - -typedef struct { - const char *git_version; - const char *thread_flavor_name; // for messsages - int thread_flavor_id; - unsigned long thread_flavor_flags; - - // init & exit functions - rtapi_init_t rtapi_init; - rtapi_exit_t rtapi_exit; - rtapi_next_handle_t rtapi_next_handle; - // time functions -#ifdef RTAPI - rtapi_clock_set_period_t rtapi_clock_set_period; - rtapi_delay_t rtapi_delay; - rtapi_delay_max_t rtapi_delay_max; - rtapi_task_pll_get_reference_t rtapi_task_pll_get_reference; - rtapi_task_pll_set_correction_t rtapi_task_pll_set_correction; -#else - rtapi_dummy_t rtapi_clock_set_period; - rtapi_dummy_t rtapi_delay; - rtapi_dummy_t rtapi_delay_max; - rtapi_dummy_t rtapi_task_pll_get_reference; - rtapi_dummy_t rtapi_task_pll_set_correction; -#endif - rtapi_get_time_t rtapi_get_time; - rtapi_get_clocks_t rtapi_get_clocks; - // task functions - rtapi_prio_highest_lowest_t rtapi_prio_highest; - rtapi_prio_highest_lowest_t rtapi_prio_lowest; - rtapi_prio_next_higher_lower_t rtapi_prio_next_higher; - rtapi_prio_next_higher_lower_t rtapi_prio_next_lower; -#ifdef RTAPI - rtapi_task_new_t rtapi_task_new; - rtapi_task_delete_t rtapi_task_delete; - rtapi_task_start_t rtapi_task_start; - rtapi_wait_t rtapi_wait; - rtapi_task_resume_t rtapi_task_resume; - rtapi_task_pause_t rtapi_task_pause; - rtapi_task_self_t rtapi_task_self; - -#else - rtapi_dummy_t rtapi_task_new; - rtapi_dummy_t rtapi_task_delete; - rtapi_dummy_t rtapi_task_start; - rtapi_dummy_t rtapi_wait; - rtapi_dummy_t rtapi_task_resume; - rtapi_dummy_t rtapi_task_pause; - rtapi_dummy_t rtapi_task_self; -#endif - // shared memory functions - rtapi_shmem_new_t rtapi_shmem_new; - rtapi_shmem_new_inst_t rtapi_shmem_new_inst; - rtapi_shmem_delete_t rtapi_shmem_delete; - rtapi_shmem_delete_inst_t rtapi_shmem_delete_inst; - rtapi_shmem_getptr_t rtapi_shmem_getptr; - rtapi_shmem_getptr_inst_t rtapi_shmem_getptr_inst; - rtapi_shmem_exists_t rtapi_shmem_exists; - -#ifdef RTAPI - rtapi_set_exception_t rtapi_set_exception; -#else - rtapi_dummy_t rtapi_set_exception; -#endif -#ifdef RTAPI - rtapi_task_update_stats_t rtapi_task_update_stats; -#else - rtapi_dummy_t rtapi_task_update_stats; -#endif - rtapi_malloc_t rtapi_malloc; - rtapi_malloc_aligned_t rtapi_malloc_aligned; - rtapi_calloc_t rtapi_calloc; - rtapi_realloc_t rtapi_realloc; - rtapi_free_t rtapi_free; - rtapi_allocsize_t rtapi_allocsize; - rtapi_heap_init_t rtapi_heap_init; - rtapi_heap_addmem_t rtapi_heap_addmem; - rtapi_heap_status_t rtapi_heap_status; - rtapi_heap_setflags_t rtapi_heap_setflags; - rtapi_heap_walk_freelist_t rtapi_heap_walk_freelist; -} rtapi_switch_t; - -// using code is responsible to define this: -// this extern is not used within RTAPI -extern rtapi_switch_t *rtapi_switch; - -/** 'rtapi_get_handle()' returns a pointer to the rtapi_switch - structure, such that using code may refernce rtapi - methods. - */ -typedef rtapi_switch_t *(*rtapi_get_handle_t)(void); -extern rtapi_switch_t *rtapi_get_handle(void); // autorelease the rtapi mutex on scope exit // declare a variable like so in the scope to be protected: @@ -1177,10 +961,6 @@ extern int ulapi_exit(int instance); // ULAPI cleanup. Call the exit handler and unload ulapi-.so. extern void ulapi_cleanup(void); -// Check that a ulapi module is compatible with the running kernel -// from rtapi_compat.c -extern void ulapi_kernel_compat_check(rtapi_switch_t *rtapi_switch, - char *ulapi_lib); extern int ulapi_loaded(void); #endif diff --git a/src/rtapi/rtapi_app.cc b/src/rtapi/rtapi_app.cc index 9bcfb0852e..d5fc234cb1 100644 --- a/src/rtapi/rtapi_app.cc +++ b/src/rtapi/rtapi_app.cc @@ -164,14 +164,9 @@ static AvahiCzmqPoll *av_loop; // // global_data is set in attach_global_segment() which was already // created by rtapi_msgd -// rtapi_switch is set once rtapi.so has been loaded by calling the -// rtapi_get_handle() method in rtapi.so. -// Once set, rtapi methods in rtapi.so can be called normally through -// the rtapi_switch redirection (see rtapi.h). // NB: do _not_ call any rtapi_* methods before these variables are set -// except for rtapi_msg* and friends (those do not go through the rtapi_switch). -rtapi_switch_t *rtapi_switch; +// except for rtapi_msg* and friends. global_data_t *global_data; static const char *rpath; static int init_actions(int instance); @@ -540,22 +535,6 @@ static int do_load_cmd(int instance, // so they can be replayed before newinst record_instparms(module_path, mi); - // retrieve the address of rtapi_switch_struct - // so rtapi functions can be called and members - // accessed - // RTAPIMOD only will have that, but we need that as soon as - // possible so not much use in testing the name - if (rtapi_switch == NULL) { - rtapi_get_handle_t rtapi_get_handle; - dlerror(); - rtapi_get_handle = (rtapi_get_handle_t)dlsym(mi.handle, - "rtapi_get_handle"); - if (rtapi_get_handle != NULL) { - rtapi_switch = rtapi_get_handle(); - assert(rtapi_switch != NULL); - } - } - int (*start)(void) = DLSYM(mi.handle, "rtapi_app_main"); if (!start) { note_printf(pbreply, "%s: dlsym: %s\n", diff --git a/src/rtapi/rtapi_common.c b/src/rtapi/rtapi_common.c index c9ce28d224..f3537a3f5f 100644 --- a/src/rtapi/rtapi_common.c +++ b/src/rtapi/rtapi_common.c @@ -18,6 +18,7 @@ #include #endif +#include "rtapi_flavor.h" #include "config.h" #include "rtapi.h" #include "rtapi_common.h" @@ -48,122 +49,6 @@ module_data *module_array = local_rtapi_data.module_array; // ULAPI: exported in ulapi_autoload.c extern global_data_t *global_data; -/* - define the rtapi_switch struct, with pointers to all rtapi_* - functions - - ULAPI doesn't define all functions, so for missing functions point - to the dummy function _rtapi_dummy() in hopes of more graceful - failure -*/ - -int _rtapi_dummy(void) { - rtapi_print_msg(RTAPI_MSG_ERR, - "Error: _rtapi_dummy function called from rtapi_switch; " - "this should never happen!"); - return -EINVAL; -} - -static rtapi_switch_t rtapi_switch_struct; - -void init_rtapi_switch(void) -{ - - flavor_ptr flavor = flavor_byid(global_data->rtapi_thread_flavor); - - rtapi_switch_struct = (rtapi_switch_t){ - .git_version = GIT_VERSION, - .thread_flavor_name = flavor->name, - .thread_flavor_id = flavor->flavor_id, - .thread_flavor_flags = flavor->flags, - - // init & exit functions - .rtapi_init = &_rtapi_init, - .rtapi_exit = &_rtapi_exit, - .rtapi_next_handle = &_rtapi_next_handle, - // messaging functions moved to instance, - // implemented in rtapi_support.c - // time functions -#ifdef RTAPI - .rtapi_clock_set_period = &_rtapi_clock_set_period, - .rtapi_delay = &_rtapi_delay, - .rtapi_delay_max = &_rtapi_delay_max, - .rtapi_task_pll_get_reference = &_rtapi_task_pll_get_reference, - .rtapi_task_pll_set_correction = &_rtapi_task_pll_set_correction, -#else - .rtapi_clock_set_period = &_rtapi_dummy, - .rtapi_delay = &_rtapi_dummy, - .rtapi_delay_max = &_rtapi_dummy, - .rtapi_task_pll_get_reference = &_rtapi_dummy, - .rtapi_task_pll_set_correction = &_rtapi_dummy, -#endif - .rtapi_get_time = &_rtapi_get_time, - .rtapi_get_clocks = &_rtapi_get_clocks, - // task functions - .rtapi_prio_highest = &_rtapi_prio_highest, - .rtapi_prio_lowest = &_rtapi_prio_lowest, - .rtapi_prio_next_higher = &_rtapi_prio_next_higher, - .rtapi_prio_next_lower = &_rtapi_prio_next_lower, -#ifdef RTAPI - .rtapi_task_new = &_rtapi_task_new, - .rtapi_task_delete = &_rtapi_task_delete, - .rtapi_task_start = &_rtapi_task_start, - .rtapi_wait = &_rtapi_wait, - .rtapi_task_resume = &_rtapi_task_resume, - .rtapi_task_pause = &_rtapi_task_pause, - .rtapi_task_self = &_rtapi_task_self, -#else - .rtapi_task_new = &_rtapi_dummy, - .rtapi_task_delete = &_rtapi_dummy, - .rtapi_task_start = &_rtapi_dummy, - .rtapi_wait = &_rtapi_dummy, - .rtapi_task_resume = &_rtapi_dummy, - .rtapi_task_pause = &_rtapi_dummy, - .rtapi_task_self = &_rtapi_dummy, -#endif - // shared memory functions - .rtapi_shmem_new = &_rtapi_shmem_new, - .rtapi_shmem_new_inst = &_rtapi_shmem_new_inst, - - .rtapi_shmem_delete = &_rtapi_shmem_delete, - .rtapi_shmem_delete_inst = &_rtapi_shmem_delete_inst, - - .rtapi_shmem_getptr = &_rtapi_shmem_getptr, - .rtapi_shmem_getptr_inst = &_rtapi_shmem_getptr_inst, - .rtapi_shmem_exists = &_rtapi_shmem_exists, - -#ifdef RTAPI - .rtapi_set_exception = &_rtapi_set_exception, -#else - .rtapi_set_exception = &_rtapi_dummy, -#endif -#ifdef RTAPI - .rtapi_task_update_stats = &_rtapi_task_update_stats, -#else - .rtapi_task_update_stats = &_rtapi_dummy, -#endif - .rtapi_malloc = &_rtapi_malloc, - .rtapi_malloc_aligned = &_rtapi_malloc_aligned, - .rtapi_calloc = &_rtapi_calloc, - .rtapi_realloc = &_rtapi_realloc, - .rtapi_free = &_rtapi_free, - .rtapi_allocsize = &_rtapi_allocsize, - .rtapi_heap_init = &_rtapi_heap_init, - .rtapi_heap_addmem = &_rtapi_heap_addmem, - .rtapi_heap_status = &_rtapi_heap_status, - .rtapi_heap_setflags = &_rtapi_heap_setflags, - .rtapi_heap_walk_freelist = &_rtapi_heap_walk_freelist, - }; -} - -// any API, any style: -rtapi_switch_t *rtapi_get_handle(void) { - return &rtapi_switch_struct; -} -#ifdef RTAPI -EXPORT_SYMBOL(rtapi_get_handle); -#endif - int shmdrv_loaded; // set in rtapi_app_main, and ulapi_main long page_size; // set in rtapi_app_main @@ -203,7 +88,6 @@ void init_rtapi_data(rtapi_data_t * data) data->magic = RTAPI_MAGIC; /* set version code and flavor ID so other modules can check it */ data->serial = RTAPI_SERIAL; - data->thread_flavor_id = -1; // Unknown at this point data->ring_mutex = 0; /* and get busy */ data->rt_module_count = 0; @@ -234,12 +118,26 @@ void init_rtapi_data(rtapi_data_t * data) } } - init_rtapi_switch(); - /* done, release the mutex */ rtapi_mutex_give(&(data->mutex)); return; } + +/*********************************************************************** +* INIT AND EXIT FUNCTIONS * +************************************************************************/ + +int rtapi_init(const char *modname) { + return rtapi_next_handle(); +} + +int rtapi_exit(int module_id) { + /* do nothing for ULAPI */ + return 0; +} + + + /*********************************************************************** * RT Thread statistics collection * * @@ -261,15 +159,12 @@ void init_rtapi_data(rtapi_data_t * data) ************************************************************************/ #ifdef RTAPI -int _rtapi_task_update_stats(void) +int rtapi_task_update_stats(void) { -#ifdef HAVE_RTAPI_TASK_UPDATE_STATS_HOOK - extern int _rtapi_task_update_stats_hook(void); - - return _rtapi_task_update_stats_hook(); -#else - return -ENOSYS; // not implemented in this flavor -#endif + if (flavor_descriptor->task_update_stats_hook) + return flavor_descriptor->task_update_stats_hook(); + else + return -ENOSYS; // not implemented in this flavor } #endif /*********************************************************************** @@ -290,8 +185,7 @@ extern rtapi_exception_handler_t rt_exception_handler; // may override default exception handler // returns the current handler so it might be restored -// does NOT go through rtapi_switch (!) -rtapi_exception_handler_t _rtapi_set_exception(rtapi_exception_handler_t h) +rtapi_exception_handler_t rtapi_set_exception(rtapi_exception_handler_t h) { rtapi_exception_handler_t previous = rt_exception_handler; rt_exception_handler = h; @@ -302,7 +196,7 @@ rtapi_exception_handler_t _rtapi_set_exception(rtapi_exception_handler_t h) // defined and initialized in rtapi_module.c (kthreads), rtapi_main.c (userthreads) extern ringbuffer_t rtapi_message_buffer; // error ring access strcuture -int _rtapi_next_handle(void) +int rtapi_next_handle(void) { return rtapi_add_and_fetch(1, &global_data->next_handle); } diff --git a/src/rtapi/rtapi_common.h b/src/rtapi/rtapi_common.h index a4f1f7726f..42dfc454ce 100644 --- a/src/rtapi/rtapi_common.h +++ b/src/rtapi/rtapi_common.h @@ -65,6 +65,8 @@ /* Keep the includes here - It might get messy.. */ +#include "rtapi.h" + #ifdef RTAPI #include /* for blocking when needed */ #else @@ -97,12 +99,11 @@ #define MIN_STACKSIZE 32768 -/* This file contains data structures that live in shared memory and - are accessed by multiple different programs, both user processes - and kernel modules. If the structure layouts used by various - programs don't match, that's bad. So we have revision checking. - Whenever a module or program is loaded, thread_flavor_id and - serial is checked against the code in the shared memory area. If +/* This file contains data structures that live in shared memory and are + accessed by multiple different programs, both user processes and kernel + modules. If the structure layouts used by various programs don't match, + that's bad. So we have revision checking. Whenever a module or program is + loaded and serial is checked against the code in the shared memory area. If they don't match, the rtapi_init() call will fail. */ @@ -181,7 +182,6 @@ typedef struct { typedef struct { int magic; /* magic number to validate data */ int serial; /* revision code for matching */ - int thread_flavor_id; /* unique ID for each thread style: rtapi.h */ unsigned long mutex; /* mutex against simultaneous access */ unsigned long ring_mutex; /* layering RTAPI functions requires per-layer locks */ int rt_module_count; /* loaded RT modules */ @@ -222,9 +222,6 @@ extern task_data *task_array; /* rtapi_time.c */ extern int period; -#ifdef HAVE_RTAPI_MODULE_TIMER_STOP -void _rtapi_module_timer_stop(void); -#endif /* rtapi_shmem.c */ diff --git a/src/rtapi/rtapi_compat.c b/src/rtapi/rtapi_compat.c index ef9d9c8af1..d050e2a4d9 100644 --- a/src/rtapi/rtapi_compat.c +++ b/src/rtapi/rtapi_compat.c @@ -43,201 +43,8 @@ #include // get_rpath() #include -// really in nucleus/heap.h but we rather get away with minimum include files -#ifndef XNHEAP_DEV_NAME -#define XNHEAP_DEV_NAME "/dev/rtheap" -#endif - -// if this exists, and contents is '1', it's RT_PREEMPT -#define PREEMPT_RT_SYSFS "/sys/kernel/realtime" - -// Exists on Xenomai -#define PROC_IPIPE "/proc/ipipe" -#define PROC_IPIPE_XENOMAI "/proc/ipipe/Xenomai" -#define XENO_GID_SYSFS "/sys/module/xeno_nucleus/parameters/xenomai_gid" - static FILE *rtapi_inifile = NULL; -static int check_rtapi_lib(char *name); - -int kernel_is_xenomai() -{ - struct stat sb; - - return ((stat(XNHEAP_DEV_NAME, &sb) == 0) && - (stat(PROC_IPIPE_XENOMAI, &sb) == 0) && - (stat(XENO_GID_SYSFS, &sb) == 0)); -} - -int kernel_is_rtpreempt() -{ - FILE *fd; - int retval = 0; - - if ((fd = fopen(PREEMPT_RT_SYSFS,"r")) != NULL) { - int flag; - retval = ((fscanf(fd, "%d", &flag) == 1) && (flag)); - fclose(fd); - } - return retval; -} - -int xenomai_gid() -{ - FILE *fd; - int gid = -1; - - if ((fd = fopen(XENO_GID_SYSFS,"r")) != NULL) { - if (fscanf(fd, "%d", &gid) != 1) { - fclose(fd); - return -EBADF; // garbage in sysfs device - } else { - fclose(fd); - return gid; - } - } - return -ENOENT; // sysfs device cant be opened -} - -int user_in_xenomai_group() -{ - int numgroups, i; - gid_t *grouplist; - int gid = xenomai_gid(); - - if (gid < 0) - return gid; - - numgroups = getgroups(0,NULL); - grouplist = (gid_t *) calloc( numgroups, sizeof(gid_t)); - if (grouplist == NULL) - return -ENOMEM; - if (getgroups( numgroups, grouplist) > 0) { - for (i = 0; i < numgroups; i++) { - if (grouplist[i] == (unsigned) gid) { - free(grouplist); - return 1; - } - } - } else { - free(grouplist); - return errno; - } - return 0; -} - - -// there is no easy way to determine the RTAPI instance id -// of a kernel threads RTAPI instance, which is why this -// parameter is made visible through a procfs entry. -int kernel_instance_id() -{ - FILE *fd; - int retval = -1; - - if ((fd = fopen("/proc/rtapi/instance","r")) != NULL) { - int flag; - if (fscanf(fd, "%d", &flag) == 1) { - retval = flag; - } - fclose(fd); - } - return retval; -} - -const flavor_t flavors[] = { - { .name = RTAPI_POSIX_NAME, - .mod_ext = ".so", - .so_ext = ".so", - .flavor_id = RTAPI_POSIX_ID, - .flags = POSIX_FLAVOR_FLAGS // FLAVOR_USABLE - }, - { .name = RTAPI_RT_PREEMPT_NAME, - .mod_ext = ".so", - .so_ext = ".so", - .flavor_id = RTAPI_RT_PREEMPT_ID, - .flags = RTPREEMPT_FLAVOR_FLAGS - }, - { .name = RTAPI_XENOMAI_NAME, - .mod_ext = ".so", - .so_ext = ".so", - .flavor_id = RTAPI_XENOMAI_ID, - .flags = XENOMAI_FLAVOR_FLAGS - }, - { .name = RTAPI_NOTLOADED_NAME, - .mod_ext = "", - .so_ext = "", - .flavor_id = RTAPI_NOTLOADED_ID, - .flags = 0 - }, - - { .name = NULL, // list sentinel - .flavor_id = -1, - .flags = 0 - } -}; - -flavor_ptr flavor_byname(const char *flavorname) -{ - flavor_ptr f = &(flavors[0]); - while (f->name) { - if (!strcasecmp(flavorname, f->name)) - return f; - f++; - } - return NULL; -} - -flavor_ptr flavor_byid(int flavor_id) -{ - flavor_ptr f = flavors; - while (f->name) { - if (flavor_id == f->flavor_id) - return f; - f++; - } - return NULL; -} - -flavor_ptr default_flavor(void) -{ - char *fname = getenv("FLAVOR"); - flavor_ptr f, flavor; - - if (fname) { - if ((flavor = flavor_byname(fname)) == NULL) { - fprintf(stderr, - "FLAVOR=%s: no such flavor -- valid flavors are:\n", - fname); - f = flavors; - while (f->name) { - fprintf(stderr, "\t%s\n", f->name); - f++; - } - exit(1); - } - /* make sure corresponding rtapi lib is also present */ - if (check_rtapi_lib(fname)) - return flavor; - else - exit(1); - } - - if (kernel_is_xenomai()) { - /* check for userspace first */ - f = flavor_byid(RTAPI_XENOMAI_ID); - if (check_rtapi_lib((char *)f->name)) - return f; - } - if (kernel_is_rtpreempt()) { - f = flavor_byid(RTAPI_RT_PREEMPT_ID); - if (check_rtapi_lib((char *)f->name)) - return f; - } - return flavor_byid(RTAPI_POSIX_ID); -} - - void check_rtapi_config_open() { /* Open rtapi.ini if needed. Private function used by @@ -261,31 +68,24 @@ void check_rtapi_config_open() } } -char *get_rtapi_param(const char *flavor, const char *param) +char *get_rtapi_param(const char *param) { char *val; - char buf[RTAPI_NAME_LEN+8]; // strlen("flavor_") + RTAPI_NAME_LEN + 1 // Open rtapi_inifile if it hasn't been already check_rtapi_config_open(); - - sprintf(buf, "flavor_%s", flavor); - val = (char *) iniFind(rtapi_inifile, param, buf); - - if (val==NULL) - val = (char *) iniFind(rtapi_inifile, param, "global"); + val = (char *) iniFind(rtapi_inifile, param, "global"); return val; } int get_rtapi_config(char *result, const char *param, int n) { - /* Read a parameter value from rtapi.ini. First try the flavor - section, then the global section. Copy max n-1 bytes into - result buffer. */ + /* Read a parameter value from rtapi.ini. Copy max n-1 bytes into result + buffer. */ char *val; - val = get_rtapi_param(default_flavor()->name, param); + val = get_rtapi_param(param); // Return if nothing found if (val==NULL) { @@ -298,26 +98,6 @@ int get_rtapi_config(char *result, const char *param, int n) return 0; } -int check_rtapi_lib(char *name) -{ - /* Check if the corresponding rtapi lib for a particular - flavor is present */ - char *val; - char fname[PATH_MAX]; - struct stat sb; - - val = get_rtapi_param(name, "RTLIB_DIR"); - - if (val==NULL) { - return 0; - } - - snprintf(fname, PATH_MAX,"%s/ulapi.so", val); - - /* check if rtapi lib exists */ - return (stat(fname, &sb) == 0); -} - //int procfs_cmd(const char *path, const char *format, ...) // whatever is written is printf-style int rtapi_fs_write(const char *path, const char *format, ...) @@ -527,17 +307,13 @@ int rtapi_get_tags(const char *mod_name) int result = 0, n = 0; char *cp1 = ""; - flavor_ptr flavor = default_flavor(); - if (get_rtapi_config(modpath,"RTLIB_DIR",PATH_MAX) != 0) { perror("cant get RTLIB_DIR ?\n"); return -1; } strcat(modpath,"/"); - strcat(modpath, flavor->name); - strcat(modpath,"/"); strcat(modpath,mod_name); - strcat(modpath, flavor->mod_ext); + strcat(modpath, ".so"); const char **caps = get_caps(modpath); char **p = (char **)caps; @@ -552,40 +328,8 @@ int rtapi_get_tags(const char *mod_name) return result; } -// lifted from hm2_ether.c by Michael Geszkiewicz and Jeff Epler -int run_shell(char *format, ...) -{ - char command[PATH_MAX]; - va_list args; - int retval; - - va_start(args, format); - retval = vsnprintf(command, sizeof(command), format, args); - va_end(args); - - if (retval < 0) { - perror("vsnprintf"); - return retval; - } - char *const argv[] = {"sh", "-c", command, NULL}; - pid_t pid; - retval = posix_spawn(&pid, "/bin/sh", NULL, NULL, argv, environ); - if(retval < 0) - perror("posix_spawn"); - - int status; - waitpid(pid, &status, 0); - if (WIFEXITED(status)) - return WEXITSTATUS(status); - else if (WIFSTOPPED(status)) - return WTERMSIG(status)+128; - else - return status; -} - // those are ok to use from userland RT modules: #if defined(RTAPI) -EXPORT_SYMBOL(run_shell); EXPORT_SYMBOL(rtapi_fs_read); EXPORT_SYMBOL(rtapi_fs_write); #endif diff --git a/src/rtapi/rtapi_compat.h b/src/rtapi/rtapi_compat.h index bd67326d75..602a8eba13 100644 --- a/src/rtapi/rtapi_compat.h +++ b/src/rtapi/rtapi_compat.h @@ -22,42 +22,8 @@ #define RTAPI_COMPAT_H #include "rtapi_bitops.h" - -/*********************************************************************** -* basic features of thread flavors. Needed to init the flavor * -* descriptor in rtapi_compat.h and rtapi_switch->flavor_flags * -* technically those are flavor configuration descriptiors * -************************************************************************/ - -#define FLAVOR_DOES_IO RTAPI_BIT(0) // userland: whether iopl() needs to be called -#define FLAVOR_RTAPI_DATA_IN_SHM RTAPI_BIT(2) // this flavor keeps rtapi_data in a shm segment - -#define POSIX_FLAVOR_FLAGS 0 - -#define RTPREEMPT_FLAVOR_FLAGS (FLAVOR_DOES_IO) - -#define XENOMAI_FLAVOR_FLAGS (FLAVOR_DOES_IO) - - -/*********************************************************************** -* Support functions for autodetection and flavor handling * -* these are available to user processes regardless of defining * -* RTAPI or ULAPI, for instance rtapi_msgd or rtapistat. * -* exported by rtapi_compat.c . * -************************************************************************/ - #include // provides PATH_MAX -typedef struct { - const char *name; - const char *mod_ext; // RTAPI module extensions, .ko/.so - const char *so_ext; // ulapi.so module extension - const char *build_sys; - const int flavor_id; - const unsigned long flags; -} flavor_t; -typedef const flavor_t *flavor_ptr; - // these functions must work with or without rtapi.h included #if !defined(SUPPORT_BEGIN_DECLS) #if defined(__cplusplus) @@ -119,42 +85,8 @@ extern int user_in_xenomai_group(); // by consulting /proc/rtapi/instance extern int kernel_instance_id(); -extern const flavor_t flavors[]; -extern flavor_ptr flavor_byname(const char *flavorname); -extern flavor_ptr flavor_byid(int flavor_id); -extern flavor_ptr default_flavor(void); - -/* - * Given a result buffer of PATH_MAX size and a module or shared - * library's basename (e.g. 'rtapi' with no directory or '.ko'), find - * the full path to a module/shared library as follows: - * - * Complete the module file name by appending mod_ext from flavor data - * to the basename (e.g. 'rtapi.ko'). - * - * For RIP builds, prepend RTLIB_DIR from rtapi.ini, flavor name and - * kernel release to the module file name - * (e.g. '/home/me/linuxcnc-dev/rtlib/rtai-kernel/2.6.38-rtai/rtapi.ko'); - * if the file exists, copy into *result and return 0. - * - * For non-RIP builds, prepend - * '/lib/modules//linuxcnc' to the module file name - * (e.g. '/lib/modules/2.6.38-rtai/linuxcnc/rtapi.ko'); if the file - * exists, copy into *result and return 0. - * - * Otherwise, prepend any (flavor-specific, currently RTAI only) RTDIR - * from rtapi.ini and prepend to module file name - * (e.g. '/usr/realtime/modules/rtai_hal.ko'); if the file exists, - * copy into *result and return 0. - * - * Otherwise return non-0. - */ - -extern int module_path(char *result, const char *basename); - /* - * Look up a parameter value in rtapi.ini, checking first the - * [flavor_] section, then the [global] section. Returns 0 if + * Look up a parameter value in rtapi.ini [global] section. Returns 0 if * successful, 1 otherwise. Maximum n-1 bytes of the value and a * trailing \0 is copied into *result. * @@ -189,8 +121,7 @@ const char **get_caps(const char *const fname); const char *get_cap(const char *const fname, const char *cap); -// given a module name and the flavor set, return the integer -// capability mask of tags. +// given a module name, return the integer capability mask of tags. int rtapi_get_tags(const char *mod_name); diff --git a/src/rtapi/rtapi_heap.c b/src/rtapi/rtapi_heap.c index 53976eaff5..8a4fac8628 100644 --- a/src/rtapi/rtapi_heap.c +++ b/src/rtapi/rtapi_heap.c @@ -61,12 +61,12 @@ heap_print(struct rtapi_heap *h, int level, const char *fmt, ...) static void *_rtapig_malloc(const int lock, struct rtapi_heap *h, size_t nbytes); -void *_rtapi_malloc(struct rtapi_heap *h, size_t nbytes) +void *rtapi_malloc(struct rtapi_heap *h, size_t nbytes) { return _rtapig_malloc(1, h, nbytes); } -void *_rtapi_malloc_aligned(struct rtapi_heap *h, size_t nbytes, size_t align) +void *rtapi_malloc_aligned(struct rtapi_heap *h, size_t nbytes, size_t align) { WITH_MUTEX(HEAP_MUTEX(h)); @@ -120,7 +120,7 @@ void *_rtapi_malloc_aligned(struct rtapi_heap *h, size_t nbytes, size_t align) return result; } -void _rtapi_free(struct rtapi_heap *h, void *); +void rtapi_free(struct rtapi_heap *h, void *); static void *_rtapig_malloc(const int lock, struct rtapi_heap *h, size_t nbytes) { @@ -149,7 +149,7 @@ static void *_rtapig_malloc(const int lock, struct rtapi_heap *h, size_t nbytes) } p->s.tag.attr = 0; h->free_p = heap_off(h, prevp); - size_t alloced = _rtapi_allocsize(h, p+1); + size_t alloced = rtapi_allocsize(h, p+1); h->requested += nbytes; h->allocated += alloced; if (h->flags & RTAPIHEAP_TRACE_MALLOC) @@ -181,7 +181,7 @@ static void _rtapi_unlocked_free(struct rtapi_heap *h, void *ap) if (h->flags & RTAPIHEAP_TRACE_FREE) heap_print(h, RTAPI_MSG_INFO, "%s: free aligned %p->%p size=%zu\n", - __FUNCTION__, ap, base, _rtapi_allocsize(h, base)); + __FUNCTION__, ap, base, rtapi_allocsize(h, base)); ap = base; } @@ -232,16 +232,16 @@ static void _rtapi_unlocked_free(struct rtapi_heap *h, void *ap) h->free_p = heap_off(h,p); } -void _rtapi_free(struct rtapi_heap *h,void *ap) +void rtapi_free(struct rtapi_heap *h,void *ap) { WITH_MUTEX(HEAP_MUTEX(h)); _rtapi_unlocked_free(h, ap); } -// given a pointer returned by _rtapi_malloc(), +// given a pointer returned by rtapi_malloc(), // returns number of bytes actually available for use (which // might be a bit larger than requested) due to chunk alignent) -size_t _rtapi_allocsize(struct rtapi_heap *h, const void *ap) +size_t rtapi_allocsize(struct rtapi_heap *h, const void *ap) { rtapi_malloc_tag_t *rt = ((rtapi_malloc_tag_t *) ap) - 1; @@ -253,33 +253,33 @@ size_t _rtapi_allocsize(struct rtapi_heap *h, const void *ap) return (p->s.tag.size -1) * sizeof (rtapi_malloc_hdr_t); } -void *_rtapi_calloc(struct rtapi_heap *h, size_t nelem, size_t elsize) +void *rtapi_calloc(struct rtapi_heap *h, size_t nelem, size_t elsize) { - void *p = _rtapi_malloc (h,nelem * elsize); + void *p = rtapi_malloc (h,nelem * elsize); if (!p) return NULL; memset(p, 0, nelem * elsize); return p; } -void *_rtapi_realloc(struct rtapi_heap *h, void *ptr, size_t size) +void *rtapi_realloc(struct rtapi_heap *h, void *ptr, size_t size) { - size_t sz = _rtapi_allocsize (h, ptr); + size_t sz = rtapi_allocsize (h, ptr); // requested size fits current allocation? if (size <= sz) // could use trim like in malloc_aligned but not much gained return ptr; // nothing to do - void *p = _rtapi_malloc (h, size); + void *p = rtapi_malloc (h, size); if (!p) return (p); memcpy(p, ptr, (sz > size) ? size : sz); - _rtapi_free(h, ptr); + rtapi_free(h, ptr); return p; } -size_t _rtapi_heap_walk_freelist(struct rtapi_heap *h, chunk_t callback, void *user) +size_t rtapi_heap_walk_freelist(struct rtapi_heap *h, chunk_t callback, void *user) { WITH_MUTEX(HEAP_MUTEX(h)); @@ -299,7 +299,7 @@ size_t _rtapi_heap_walk_freelist(struct rtapi_heap *h, chunk_t callback, void *u } } -int _rtapi_heap_addmem(struct rtapi_heap *h, void *space, size_t size) +int rtapi_heap_addmem(struct rtapi_heap *h, void *space, size_t size) { WITH_MUTEX(HEAP_MUTEX(h)); @@ -314,7 +314,7 @@ int _rtapi_heap_addmem(struct rtapi_heap *h, void *space, size_t size) return 0; } -int _rtapi_heap_init(struct rtapi_heap *heap, const char *name) +int rtapi_heap_init(struct rtapi_heap *heap, const char *name) { WITH_MUTEX(HEAP_MUTEX(heap)); @@ -339,14 +339,14 @@ int _rtapi_heap_init(struct rtapi_heap *heap, const char *name) return 0; } -int _rtapi_heap_setflags(struct rtapi_heap *heap, int flags) +int rtapi_heap_setflags(struct rtapi_heap *heap, int flags) { int f = heap->flags; heap->flags = flags; return f; } -size_t _rtapi_heap_status(struct rtapi_heap *h, +size_t rtapi_heap_status(struct rtapi_heap *h, struct rtapi_heap_stat *hs) { WITH_MUTEX(HEAP_MUTEX(h)); diff --git a/src/rtapi/rtapi_main.c b/src/rtapi/rtapi_main.c index b0aa4ae187..7615c97150 100644 --- a/src/rtapi/rtapi_main.c +++ b/src/rtapi/rtapi_main.c @@ -33,6 +33,7 @@ #include #include +#include "rtapi_flavor.h" // flavor_descriptor #include "config.h" #include "rtapi.h" /* RTAPI realtime OS API */ #include "rtapi_app.h" /* RTAPI realtime module decls */ @@ -54,30 +55,17 @@ EXPORT_SYMBOL(rtapi_instance); global_data_t *global_data = NULL; // visible to all RTAPI modules EXPORT_SYMBOL(global_data); -rtapi_switch_t *rtapi_switch = NULL; -EXPORT_SYMBOL(rtapi_switch); - struct rtapi_heap *global_heap = NULL; EXPORT_SYMBOL(global_heap); -#ifdef HAVE_RTAPI_MODULE_INIT_HOOK -void _rtapi_module_init_hook(void); -#endif - -#ifdef HAVE_RTAPI_MODULE_EXIT_HOOK -void _rtapi_module_exit_hook(void); -#endif - ringbuffer_t rtapi_message_buffer; // error ring access strcuture int rtapi_app_main(void) { int retval; int globalkey = OS_KEY(GLOBAL_KEY, rtapi_instance); - int rtapikey = OS_KEY(RTAPI_KEY, rtapi_instance); int size = 0; - rtapi_switch = rtapi_get_handle(); shm_common_init(); // tag messages originating from RT proper @@ -85,7 +73,7 @@ int rtapi_app_main(void) rtapi_print_msg(RTAPI_MSG_DBG,"RTAPI:%d %s %s init\n", rtapi_instance, - rtapi_switch->thread_flavor_name, + flavor_descriptor->name, GIT_VERSION); // attach to global segment which rtapi_msgd owns and already @@ -126,65 +114,22 @@ int rtapi_app_main(void) &rtapi_message_buffer); rtapi_message_buffer.header->refcount++; // rtapi is 'attached' - - // some flavors might use a shared memory segment for rtapi data. That - // fact is recorded in rtapi_switch->flavor_flags - - if (rtapi_switch->thread_flavor_flags & FLAVOR_RTAPI_DATA_IN_SHM) { - size = sizeof(rtapi_data_t); - retval = shm_common_new(rtapikey, &size, - rtapi_instance, (void **) &rtapi_data, 1); - if (retval == 0) { - // the rtapi_data segment already existed. - rtapi_print_msg(RTAPI_MSG_ERR, - "RTAPI:%d ERROR: rtapi segment 0x%x already exists!\n", - rtapi_instance, rtapikey); - return -EBUSY; - } - if (retval < 0) { - rtapi_print_msg(RTAPI_MSG_ERR, - "RTAPI:%d ERROR: shm_common_new() failed key=0x%x %s\n", - rtapi_instance, rtapikey, strerror(-retval)); - return retval; - } - if (size != sizeof(rtapi_data_t)) { - rtapi_print_msg(RTAPI_MSG_ERR, - "RTAPI:%d ERROR: unexpected rtapi shm size:" - " expected: %zd actual:%d\n", - rtapi_instance, sizeof(rtapi_data_t), size); - return -EINVAL; - } - } - init_rtapi_data(rtapi_data); -#ifdef HAVE_RTAPI_MODULE_INIT_HOOK - _rtapi_module_init_hook(); -#endif + if (flavor_descriptor->module_init_hook) + flavor_descriptor->module_init_hook(); + return 0; } void rtapi_app_exit(void) { - int retval; - rtapi_print_msg(RTAPI_MSG_DBG,"RTAPI:%d exit\n", rtapi_instance); -#ifdef HAVE_RTAPI_MODULE_EXIT_HOOK - _rtapi_module_exit_hook(); -#endif + if (flavor_descriptor->module_exit_hook) + flavor_descriptor->module_exit_hook(); rtapi_message_buffer.header->refcount--; - if (rtapi_switch->thread_flavor_flags & FLAVOR_RTAPI_DATA_IN_SHM) { - - if ((retval = shm_common_detach(sizeof(rtapi_data_t), rtapi_data))) { - rtapi_print_msg(RTAPI_MSG_ERR, - "RTAPI:%d ERROR: shm_common_detach(rtapi_data)" - " failed: %s\n", - rtapi_instance, strerror(-retval)); - } - shm_common_unlink(OS_KEY(RTAPI_KEY, rtapi_instance)); - } rtapi_data = NULL; } diff --git a/src/rtapi/rtapi_msgd.cc b/src/rtapi/rtapi_msgd.cc index d2178939fa..65e58a0cfc 100644 --- a/src/rtapi/rtapi_msgd.cc +++ b/src/rtapi/rtapi_msgd.cc @@ -126,7 +126,6 @@ static int global_heap_flags = RTAPIHEAP_TRIM; static const char *inifile; static int foreground; -static flavor_ptr flavor; static const char *instance_name; static int signal_fd; static bool trap_signals = true; @@ -312,7 +311,6 @@ static void check_memlock_limit(const char *where) static int init_global_data(global_data_t * data, int actual_global_size, - int flavor, int instance_id, int hal_size, int rt_level, @@ -331,13 +329,11 @@ static int init_global_data(global_data_t * data, rtapi_mutex_try(&(data->mutex)); // lock the global data segment - if (flavor != RTAPI_POSIX_ID) { - if (mlock(data, sizeof(global_data_t))) { - const char *errmsg = strerror(errno); - syslog_async(LOG_ERR, "mlock(global) failed: %d '%s'\n", - errno, errmsg); - check_memlock_limit(errmsg); - } + if (mlock(data, sizeof(global_data_t))) { + const char *errmsg = strerror(errno); + syslog_async(LOG_ERR, "mlock(global) failed: %d '%s'\n", + errno, errmsg); + check_memlock_limit(errmsg); } // report progress data->magic = GLOBAL_INITIALIZING; @@ -355,9 +351,6 @@ static int init_global_data(global_data_t * data, // uthreads use arbitrary ints since those dont use fixed-size arrays data->next_handle = RTAPI_MAX_MODULES + 1; - // tell the others what we determined as the proper flavor - data->rtapi_thread_flavor = flavor; - // record HAL parameters for later data->hal_size = hal_size; data->hal_descriptor_alignment = hal_descriptor_alignment; @@ -376,21 +369,21 @@ static int init_global_data(global_data_t * data, } // init the global heap - _rtapi_heap_init(&data->heap, "global heap"); + rtapi_heap_init(&data->heap, "global heap"); // allocate everything from global->arena to end of egment for global heap size_t global_heap_size = data->global_segment_size - offsetof(global_data_t, arena); DPRINTF("global_heap_size=%zu\n", global_heap_size); - _rtapi_heap_addmem(&data->heap, data->arena, global_heap_size); - _rtapi_heap_setflags(&data->heap, global_heap_flags); + rtapi_heap_addmem(&data->heap, data->arena, global_heap_size); + rtapi_heap_setflags(&data->heap, global_heap_flags); // done with heap // Allocate the message ring buffer from the global heap: size_t rsize = ring_memsize(RINGTYPE_RECORD, message_ring_size, 0); DPRINTF("rsize=%zu message_ring_size=%zu\n", rsize, message_ring_size); - ringheader_t *mring = ( ringheader_t *) _rtapi_calloc(&data->heap, rsize, 1); + ringheader_t *mring = ( ringheader_t *) rtapi_calloc(&data->heap, rsize, 1); if (mring == NULL) FAIL_RC(ENOMEM, "failed to allocate message ring size=%zu\n", rsize); @@ -413,41 +406,6 @@ static int init_global_data(global_data_t * data, return retval; } -// determine if we can run this flavor on the current kernel -static int flavor_and_kernel_compatible(flavor_ptr f) -{ - int retval = 1; - - if (f->flavor_id == RTAPI_POSIX_ID) - return 1; // no prerequisites - - if (kernel_is_xenomai()) { - if (f->flavor_id == RTAPI_RT_PREEMPT_ID) { - fprintf(stderr, - "MSGD:%d Warning: starting %s RTAPI on a Xenomai kernel\n", - rtapi_instance, f->name); - return 1; - } - /* - if ((f->flavor_id != RTAPI_XENOMAI_ID) && - (f->flavor_id != RTAPI_XENOMAI_KERNEL_ID)) { - fprintf(stderr, - "MSGD:%d ERROR: trying to start %s RTAPI on a Xenomai kernel\n", - rtapi_instance, f->name); - return 0; - } - */ - } - - if (kernel_is_rtpreempt() && - (f->flavor_id != RTAPI_RT_PREEMPT_ID)) { - fprintf(stderr, "MSGD:%d ERROR: trying to start %s RTAPI on an RT PREEMPT kernel\n", - rtapi_instance, f->name); - return 0; - } - return retval; -} - // actions common to sigaction and signalfd() static void start_shutdown(int signal) { @@ -697,7 +655,6 @@ static struct option long_options[] = { { "instance", required_argument, 0, 'I'}, { "instance_name", required_argument, 0, 'i'}, { "ini", required_argument, 0, 'M'}, // default: getenv(INI_FILE_NAME) - { "flavor", required_argument, 0, 'f'}, { "halsize", required_argument, 0, 'H'}, { "halstacksize", required_argument, 0, 'T'}, { "port", required_argument, NULL, 'p' }, @@ -769,17 +726,6 @@ int main(int argc, char **argv) case 'M': inifile = strdup(optarg); break; - case 'f': - if ((flavor = flavor_byname(optarg)) == NULL) { - fprintf(stderr, "no such flavor: '%s' -- valid flavors are:\n", optarg); - flavor_ptr f = flavors; - while (f->name) { - fprintf(stderr, "\t%s\n", f->name); - f++; - } - exit(1); - } - break; case 'u': usr_msglevel = atoi(optarg); break; @@ -831,42 +777,6 @@ int main(int argc, char **argv) exit(EXIT_FAILURE); } - if (flavor == NULL) - flavor = default_flavor(); - - if (flavor == NULL) { - fprintf(stderr, "%s: FATAL - failed to detect thread flavor\n", progname); - exit(EXIT_FAILURE); - } - - // can we actually run what's being suggested? - if (!flavor_and_kernel_compatible(flavor)) { - fprintf(stderr, "%s: FATAL - cant run the %s flavor on this kernel\n", - progname, flavor->name); - exit(EXIT_FAILURE); - } - - // catch installation error: user not in xenomai group - if (flavor->flavor_id == RTAPI_XENOMAI_ID) { - int retval = user_in_xenomai_group(); - - switch (retval) { - case 1: // yes - break; - case 0: - fprintf(stderr, "this user is not member of group xenomai\n"); - fprintf(stderr, "please 'sudo adduser xenomai'," - " logout and login again\n"); - exit(EXIT_FAILURE); - - default: - fprintf(stderr, "cannot determine if this user " - "is a member of group xenomai: %s\n", - strerror(-retval)); - exit(EXIT_FAILURE); - } - } - // the global segment every entity in HAL/RTAPI land attaches to if ((global_data = create_global_segment(global_segment_size)) == NULL) { // must be a new shm segment @@ -931,7 +841,6 @@ int main(int argc, char **argv) // gets initialized - no reinitialization from elsewhere if (init_global_data(global_data, actual_global_size, - flavor->flavor_id, rtapi_instance, halsize, rt_msglevel, @@ -948,10 +857,9 @@ int main(int argc, char **argv) exit(EXIT_FAILURE); } else { syslog_async(LOG_INFO, - "startup pid=%d flavor=%s " + "startup pid=%d " "rtlevel=%d usrlevel=%d halsize=%d shm=%s cc=%s %s version=%s", getpid(), - flavor->name, global_data->rt_msg_level, global_data->user_msg_level, global_data->hal_size, diff --git a/src/rtapi/rtapi_shmem.c b/src/rtapi/rtapi_shmem.c index e1044bf2fa..a88ac29e4d 100644 --- a/src/rtapi/rtapi_shmem.c +++ b/src/rtapi/rtapi_shmem.c @@ -43,7 +43,7 @@ * USERLAND THREADS * ************************************************************************/ -int _rtapi_shmem_new_inst(int userkey, int instance, int module_id, unsigned long int size) { +int rtapi_shmem_new_inst(int userkey, int instance, int module_id, unsigned long int size) { shmem_data *shmem; int i, ret, actual_size; int is_new = 0; @@ -121,7 +121,7 @@ int _rtapi_shmem_new_inst(int userkey, int instance, int module_id, unsigned lon return i; } -int _rtapi_shmem_getptr_inst(int handle, int instance, void **ptr, unsigned long *size) { +int rtapi_shmem_getptr_inst(int handle, int instance, void **ptr, unsigned long *size) { shmem_data *shmem; if (handle < 1 || handle >= RTAPI_MAX_SHMEMS) return -EINVAL; @@ -139,7 +139,7 @@ int _rtapi_shmem_getptr_inst(int handle, int instance, void **ptr, unsigned long return 0; } -int _rtapi_shmem_delete_inst(int handle, int instance, int module_id) { +int rtapi_shmem_delete_inst(int handle, int instance, int module_id) { shmem_data *shmem; int retval = 0; @@ -181,21 +181,21 @@ int _rtapi_shmem_delete_inst(int handle, int instance, int module_id) { return retval; } -int _rtapi_shmem_exists(int userkey) { +int rtapi_shmem_exists(int userkey) { return shm_common_exists(userkey); } -// implement rtapi_shmem_* calls in terms of _rtapi_shmem_*_inst() +// implement rtapi_shmem_* calls in terms of rtapi_shmem_*_inst() -int _rtapi_shmem_new(int userkey, int module_id, unsigned long int size) { - return _rtapi_shmem_new_inst(userkey, rtapi_instance, module_id, size); +int rtapi_shmem_new(int userkey, int module_id, unsigned long int size) { + return rtapi_shmem_new_inst(userkey, rtapi_instance, module_id, size); } -int _rtapi_shmem_getptr(int handle, void **ptr, unsigned long int *size) { - return _rtapi_shmem_getptr_inst(handle, rtapi_instance, ptr, size); +int rtapi_shmem_getptr(int handle, void **ptr, unsigned long int *size) { + return rtapi_shmem_getptr_inst(handle, rtapi_instance, ptr, size); } -int _rtapi_shmem_delete(int handle, int module_id) { - return _rtapi_shmem_delete_inst(handle, rtapi_instance, module_id); +int rtapi_shmem_delete(int handle, int module_id) { + return rtapi_shmem_delete_inst(handle, rtapi_instance, module_id); } diff --git a/src/rtapi/rtapi_task.c b/src/rtapi/rtapi_task.c index c5f5ebfdf4..769aa1617d 100644 --- a/src/rtapi/rtapi_task.c +++ b/src/rtapi/rtapi_task.c @@ -31,49 +31,50 @@ #include "config.h" // build configuration #include "rtapi.h" // these functions #include "rtapi_common.h" // RTAPI macros and decls +#include "rtapi_flavor.h" // flavor_descriptor /* These functions are completely different between each userland thread system, so these are defined in rtapi_module.c for kernel threads systems and $THREADS.c for the userland thread systems - int _rtapi_init(const char *modname) - int _rtapi_exit(int id) + int rtapi_init(const char *modname) + int rtapi_exit(int id) */ /* priority functions */ -int _rtapi_prio_highest(void) { +int rtapi_prio_highest(void) { return PRIO_HIGHEST; } -int _rtapi_prio_lowest(void) { +int rtapi_prio_lowest(void) { return PRIO_LOWEST; } -int _rtapi_prio_next_higher(int prio) { +int rtapi_prio_next_higher(int prio) { /* next higher priority for arg */ prio++; /* return a valid priority for out of range arg */ - if (prio > _rtapi_prio_highest()) - return _rtapi_prio_highest(); - if (prio < _rtapi_prio_lowest()) - return _rtapi_prio_lowest(); + if (prio > rtapi_prio_highest()) + return rtapi_prio_highest(); + if (prio < rtapi_prio_lowest()) + return rtapi_prio_lowest(); return prio; } -int _rtapi_prio_next_lower(int prio) { +int rtapi_prio_next_lower(int prio) { /* next lower priority for arg */ prio--; /* return a valid priority for out of range arg */ - if (prio > _rtapi_prio_highest()) - return _rtapi_prio_highest(); - if (prio < _rtapi_prio_lowest()) - return _rtapi_prio_lowest(); + if (prio > rtapi_prio_highest()) + return rtapi_prio_highest(); + if (prio < rtapi_prio_lowest()) + return rtapi_prio_lowest(); return prio; } @@ -82,12 +83,7 @@ int _rtapi_prio_next_lower(int prio) { #ifdef RTAPI /* below functions not available to user programs */ /* task setup and teardown functions */ -#ifdef HAVE_RTAPI_TASK_NEW_HOOK -int _rtapi_task_new_hook(task_data *task, int task_id); -#endif - - -int _rtapi_task_new(const rtapi_task_args_t *args) { +int rtapi_task_new(const rtapi_task_args_t *args) { int task_id; int __attribute__((__unused__)) retval = 0; task_data *task; @@ -110,14 +106,14 @@ int _rtapi_task_new(const rtapi_task_args_t *args) { // if requested priority is invalid, release lock and return error - if (args->prio < _rtapi_prio_lowest() || - args->prio > _rtapi_prio_highest()) { + if (args->prio < rtapi_prio_lowest() || + args->prio > rtapi_prio_highest()) { rtapi_print_msg(RTAPI_MSG_ERR, "New task %d '%s:%d': invalid priority %d " "(highest=%d lowest=%d)\n", task_id, args->name, rtapi_instance, args->prio, - _rtapi_prio_highest(), - _rtapi_prio_lowest()); + rtapi_prio_highest(), + rtapi_prio_lowest()); rtapi_mutex_give(&(rtapi_data->mutex)); return -EINVAL; } @@ -138,8 +134,8 @@ int _rtapi_task_new(const rtapi_task_args_t *args) { "req prio %d (highest=%d lowest=%d) stack=%lu fp=%d flags=%d " "cgname=%s\n", task_id, args->name, rtapi_instance, args->prio, - _rtapi_prio_highest(), - _rtapi_prio_lowest(), + rtapi_prio_highest(), + rtapi_prio_lowest(), args->stacksize, args->uses_fp, args->flags, args->cgname); task->magic = TASK_MAGIC; @@ -160,17 +156,16 @@ int _rtapi_task_new(const rtapi_task_args_t *args) { "%s:%d", args->name, rtapi_instance); task->name[sizeof(task->name) - 1] = '\0'; - /* userland threads: rtapi_task_new_hook() should perform any - thread system-specific tasks, and return task_id or an error - code back to the caller (how do we know the diff between an - error and a task_id???). */ + /* userland threads: flavor_descriptor->task_new_hook() should perform any + thread system-specific tasks, and return task_id or an error code back to + the caller (how do we know the diff between an error and a + task_id???). */ task->state = USERLAND; // userland threads don't track this -# ifdef HAVE_RTAPI_TASK_NEW_HOOK - retval = _rtapi_task_new_hook(task,task_id); -# else - retval = task_id; -# endif + if (flavor_descriptor->task_new_hook) + retval = flavor_descriptor->task_new_hook(task,task_id); + else + retval = task_id; rtapi_data->task_count++; @@ -185,11 +180,7 @@ int _rtapi_task_new(const rtapi_task_args_t *args) { } -#ifdef HAVE_RTAPI_TASK_DELETE_HOOK -int _rtapi_task_delete_hook(task_data *task, int task_id); -#endif - -int _rtapi_task_delete(int task_id) { +int rtapi_task_delete(int task_id) { task_data *task; int retval = 0; @@ -203,9 +194,8 @@ int _rtapi_task_delete(int task_id) { if (task->state != DELETE_LOCKED) // we don't already hold mutex rtapi_mutex_get(&(rtapi_data->mutex)); -#ifdef HAVE_RTAPI_TASK_DELETE_HOOK - retval = _rtapi_task_delete_hook(task,task_id); -#endif + if (flavor_descriptor->task_delete_hook) + retval = flavor_descriptor->task_delete_hook(task,task_id); if (task->state != DELETE_LOCKED) // we don't already hold mutex rtapi_mutex_give(&(rtapi_data->mutex)); @@ -220,10 +210,7 @@ int _rtapi_task_delete(int task_id) { /* all threads systems must define this hook */ -int _rtapi_task_start_hook(task_data *task, int task_id, - unsigned long int period_nsec); - -int _rtapi_task_start(int task_id, unsigned long int period_nsec) { +int rtapi_task_start(int task_id, unsigned long int period_nsec) { task_data *task; if (task_id < 0 || task_id >= RTAPI_MAX_TASKS) return -EINVAL; @@ -247,14 +234,10 @@ int _rtapi_task_start(int task_id, unsigned long int period_nsec) { task_id, task->name); rtapi_print_msg(RTAPI_MSG_DBG, "RTAPI: period_nsec: %ld\n", period_nsec); - return _rtapi_task_start_hook(task,task_id,0); + return flavor_descriptor->task_start_hook(task,task_id); } -#ifdef HAVE_RTAPI_TASK_STOP_HOOK -int _rtapi_task_stop_hook(task_data *task, int task_id); -#endif - -int _rtapi_task_stop(int task_id) { +int rtapi_task_stop(int task_id) { task_data *task; if(task_id < 0 || task_id >= RTAPI_MAX_TASKS) return -EINVAL; @@ -265,18 +248,12 @@ int _rtapi_task_stop(int task_id) { if (task->magic != TASK_MAGIC) return -EINVAL; -#ifdef HAVE_RTAPI_TASK_STOP_HOOK - _rtapi_task_stop_hook(task,task_id); -#endif + flavor_descriptor->task_stop_hook(task,task_id); return 0; } -#ifdef HAVE_RTAPI_TASK_PAUSE_HOOK -int _rtapi_task_pause_hook(task_data *task, int task_id); -#endif - -int _rtapi_task_pause(int task_id) { +int rtapi_task_pause(int task_id) { task_data *task; if(task_id < 0 || task_id >= RTAPI_MAX_TASKS) return -EINVAL; @@ -287,31 +264,20 @@ int _rtapi_task_pause(int task_id) { if (task->magic != TASK_MAGIC) return -EINVAL; -#ifdef HAVE_RTAPI_TASK_PAUSE_HOOK - return _rtapi_task_pause_hook(task,task_id); -#else - return -ENOSYS; -#endif - + if (flavor_descriptor->task_pause_hook) + return flavor_descriptor->task_pause_hook(task,task_id); + else + return -ENOSYS; } -#ifdef HAVE_RTAPI_WAIT_HOOK -extern int _rtapi_wait_hook(int); -#endif - -int _rtapi_wait(const int flag) { -#ifdef HAVE_RTAPI_WAIT_HOOK - return _rtapi_wait_hook(flag); -#else - return 0; -#endif +int rtapi_wait(const int flag) { + if (flavor_descriptor->wait_hook) + return flavor_descriptor->wait_hook(flag); + else + return 0; } -#ifdef HAVE_RTAPI_TASK_RESUME_HOOK -int _rtapi_task_resume_hook(task_data *task, int task_id); -#endif - -int _rtapi_task_resume(int task_id) { +int rtapi_task_resume(int task_id) { task_data *task; if(task_id < 0 || task_id >= RTAPI_MAX_TASKS) return -EINVAL; @@ -322,49 +288,33 @@ int _rtapi_task_resume(int task_id) { if (task->magic != TASK_MAGIC) return -EINVAL; -#ifdef HAVE_RTAPI_TASK_RESUME_HOOK - return _rtapi_task_resume_hook(task,task_id); -#else + if (flavor_descriptor->resume_hook) + return flavor_descriptor->task_resume_hook(task,task_id); + return -ENOSYS; -#endif } -#ifdef HAVE_RTAPI_TASK_SELF_HOOK -int _rtapi_task_self_hook(void); -#endif - -int _rtapi_task_self(void) { -#ifdef HAVE_RTAPI_TASK_SELF_HOOK - return _rtapi_task_self_hook(); -#else - /* not implemented */ - return -EINVAL; -#endif +int rtapi_task_self(void) { + if (flavor_descriptor->task_self_hook) + return flavor_descriptor->task_self_hook(); + else + /* not implemented */ + return -EINVAL; } -#ifdef HAVE_RTAPI_TASK_PLL_GET_REFERENCE_HOOK -long long _rtapi_task_pll_get_reference_hook(void); -#endif - -long long _rtapi_task_pll_get_reference(void) { -#ifdef HAVE_RTAPI_TASK_PLL_GET_REFERENCE_HOOK - return _rtapi_task_pll_get_reference_hook(); -#else - return 0; -#endif +long long rtapi_task_pll_get_reference(void) { + if (flavor_descriptor->task_pll_get_reference_hook) + return flavor_descriptor->task_pll_get_reference_hook(); + else + return 0; } -#ifdef HAVE_RTAPI_TASK_PLL_SET_CORRECTION_HOOK -int _rtapi_task_pll_set_correction_hook(long); -#endif - -int _rtapi_task_pll_set_correction(long value) { -#ifdef HAVE_RTAPI_TASK_PLL_SET_CORRECTION_HOOK - return _rtapi_task_pll_set_correction_hook(value); -#else - return 0; -#endif +int rtapi_task_pll_set_correction(long value) { + if (flavor_descriptor->task_pll_set_correction_hook) + return flavor_descriptor->task_pll_set_correction_hook(value); + else + return 0; } diff --git a/src/rtapi/rtapi_time.c b/src/rtapi/rtapi_time.c index 567980e2eb..df3f089058 100644 --- a/src/rtapi/rtapi_time.c +++ b/src/rtapi/rtapi_time.c @@ -24,11 +24,11 @@ #include "config.h" // build configuration #include "rtapi.h" // these functions #include "rtapi_common.h" // these functions +#include "rtapi_flavor.h" // flavor_descriptor #include // clock_getres(), clock_gettime() -#ifndef HAVE_RTAPI_GET_CLOCKS_HOOK // find a useable time stamp counter #ifdef MSR_H_USABLE #include @@ -39,7 +39,6 @@ #error No implementation of rtapi_get_clocks available #define rdtscll(val) (val)=0 #endif -#endif /* HAVE_RTAPI_GET_CLOCKS_HOOK */ long int max_delay = DEFAULT_MAX_DELAY; @@ -51,15 +50,8 @@ int period = 0; unsigned long timer_counts; -#ifdef HAVE_RTAPI_CLOCK_SET_PERIOD_HOOK -void _rtapi_clock_set_period_hook(long int nsecs, RTIME *counts, - RTIME *got_counts); -#endif - -long int _rtapi_clock_set_period(long int nsecs) { -#ifndef RTAPI_TIME_NO_CLOCK_MONOTONIC - struct timespec res = { 0, 0 }; -#endif +long int rtapi_clock_set_period(long int nsecs) { + struct timespec res = { 0, 0}; if (nsecs == 0) return period; @@ -68,35 +60,32 @@ long int _rtapi_clock_set_period(long int nsecs) { return -EINVAL; } -#ifdef RTAPI_TIME_NO_CLOCK_MONOTONIC - period = nsecs; -#else - clock_getres(CLOCK_MONOTONIC, &res); - period = (nsecs / res.tv_nsec) * res.tv_nsec; - if (period < 1) - period = res.tv_nsec; - - rtapi_print_msg(RTAPI_MSG_DBG, - "rtapi_clock_set_period (res=%ld) -> %d\n", res.tv_nsec, - period); -#endif /* ! RTAPI_TIME_NO_CLOCK_MONOTONIC */ + if (flavor_descriptor->time_no_clock_monotonic) + period = nsecs; + else { + clock_getres(CLOCK_MONOTONIC, &res); + period = (nsecs / res.tv_nsec) * res.tv_nsec; + if (period < 1) + period = res.tv_nsec; + + rtapi_print_msg(RTAPI_MSG_DBG, + "rtapi_clock_set_period (res=%ld) -> %d\n", res.tv_nsec, + period); + } return period; } -// rtapi_delay_hook MUST be implemented by all threads systems -void _rtapi_delay_hook(long int nsec); - -void _rtapi_delay(long int nsec) +void rtapi_delay(long int nsec) { if (nsec > max_delay) { nsec = max_delay; } - _rtapi_delay_hook(nsec); + flavor_descriptor->delay_hook(nsec); } -long int _rtapi_delay_max(void) +long int rtapi_delay_max(void) { return max_delay; } @@ -105,37 +94,28 @@ long int _rtapi_delay_max(void) /* The following functions are common to both RTAPI and ULAPI */ -#ifdef HAVE_RTAPI_GET_TIME_HOOK -long long int _rtapi_get_time_hook(void); - -long long int _rtapi_get_time(void) { - return _rtapi_get_time_hook(); -} -#else -long long int _rtapi_get_time(void) { - - struct timespec ts; - clock_gettime(CLOCK_MONOTONIC, &ts); - return ts.tv_sec * 1000000000LL + ts.tv_nsec; +long long int rtapi_get_time(void) { + if (flavor_descriptor->get_time_hook) + return flavor_descriptor->get_time_hook(); + else { + struct timespec ts; + clock_gettime(CLOCK_MONOTONIC, &ts); + return ts.tv_sec * 1000000000LL + ts.tv_nsec; + } } -#endif /* HAVE_RTAPI_GET_TIME_HOOK */ -#ifdef HAVE_RTAPI_GET_CLOCKS_HOOK -long long int _rtapi_get_clocks_hook(void); -#endif - -long long int _rtapi_get_clocks(void) { -#ifndef HAVE_RTAPI_GET_CLOCKS_HOOK - long long int retval; +long long int rtapi_get_clocks(void) { + if (flavor_descriptor->get_clocks_hook) + return flavor_descriptor->get_clocks_hook(); + else { + long long int retval; - /* This returns a result in clocks instead of nS, and needs to be - used with care around CPUs that change the clock speed to save - power and other disgusting, non-realtime oriented behavior. - But at least it doesn't take a week every time you call it. */ + /* This returns a result in clocks instead of nS, and needs to be + used with care around CPUs that change the clock speed to save + power and other disgusting, non-realtime oriented behavior. + But at least it doesn't take a week every time you call it. */ - rdtscll(retval); - return retval; -#else - return _rtapi_get_clocks_hook(); -#endif /* HAVE_RTAPI_GET_CLOCKS_HOOK */ + rdtscll(retval); + return retval; + } } diff --git a/src/rtapi/ulapi_autoload.c b/src/rtapi/ulapi_autoload.c index 7de2fee0af..fe19a0fc46 100644 --- a/src/rtapi/ulapi_autoload.c +++ b/src/rtapi/ulapi_autoload.c @@ -17,77 +17,40 @@ ********************************************************************/ -// ULAPI autoloading support -// -// this postpones binding to the flavor-specific ULAPI -// by intercepting the first call to rtapi_init() - -// other than the previous code which assumed realtime is started -// and failed during loading of the HAL library, this code makes the -// HAL library load fine regardless of realtime started or stopped -// however, any calls to hal_init() (which cause a call to rtapi_init()) -// will fail if realtime stopped; or succeed after loading the -// ulapi shared object for the current flavor. - -// Michael Haberler 7/2013 - #include // snprintf #include // for dlopen/dlsym ulapi-$THREADSTYLE.so #include #include // PATH_MAX #include // exit() +#include "rtapi_flavor.h" // flavor_descriptor #include "rtapi.h" // RTAPI realtime OS API #include "ring.h" // RTAPI realtime OS API #include "shmdrv.h" // common shared memory API -#include "rtapi_compat.h" // flavor support #ifdef ULAPI -static rtapi_switch_t dummy_ulapi_switch_struct; - // exported symbols // since this is normal userland linking, not RT loading, no need to // EXPORT_SYMBOL() any of those -rtapi_switch_t *rtapi_switch = &dummy_ulapi_switch_struct; global_data_t *global_data; struct rtapi_heap *global_heap; extern ringbuffer_t rtapi_message_buffer; // error ring access strcuture int rtapi_instance; -flavor_ptr flavor; -// end exported symbols: - -static void *ulapi_so; // dlopen handle for ULAPI .so -static char *ulapi_lib = "ulapi"; - -static ulapi_main_t ulapi_main_ref; -static ulapi_exit_t ulapi_exit_ref; // use 'ULAPI_DEBUG= ' to trace ulapi loading static int ulapi_debug = RTAPI_MSG_NONE; -static int ulapi_load(rtapi_switch_t **ulapi_switch); - -static int _ulapi_dummy(void) __attribute__((noreturn)); - -static int _ulapi_dummy(void) { - // API abuse trap: rtapi_init() must be first, and succeed - // for any other _subsequent_ rtapi_* calls to succeed - - rtapi_print_msg(RTAPI_MSG_ERR, - "Error: _ulapi_dummy function called from rtapi_switch; " - "this should never happen!"); - assert("API Abuse - check your code" == NULL); -} +static int ulapi_load(); int _ulapi_init(const char *modname) { - if (ulapi_load(&rtapi_switch) < 0) { + if (ulapi_load() < 0) { return -ENOSYS; } rtapi_print_msg(RTAPI_MSG_DBG, - "_ulapi_init(): ulapi %s %s loaded\n", - flavor->name, rtapi_switch->git_version); + "_ulapi_init(): ulapi %s loaded\n", + flavor_descriptor->name); // switch logging level to what was set in global via msgd: rtapi_set_msg_level(global_data->user_msg_level); @@ -96,78 +59,9 @@ int _ulapi_init(const char *modname) { return rtapi_init(modname); } -// NB: must be kept in sync with rtapi_switch_t in rtapi.h - -static rtapi_switch_t dummy_ulapi_switch_struct = { - .git_version = GIT_VERSION, - .thread_flavor_name = RTAPI_NOTLOADED_NAME, - .thread_flavor_id = RTAPI_NOTLOADED_ID, - - // the only "working" method is _ulapi_init() - // which will detect and load the proper ulapi - .rtapi_init = &_ulapi_init, - - // everything else is supposed to fail miserably - // since it violates the API contract: rtapi_init() - // must be first - .rtapi_exit = (rtapi_exit_t) &_ulapi_dummy, - .rtapi_next_handle = &_ulapi_dummy, - - .rtapi_clock_set_period = &_ulapi_dummy, - .rtapi_delay = &_ulapi_dummy, - .rtapi_delay_max = &_ulapi_dummy, - .rtapi_task_pll_get_reference = &_ulapi_dummy, - .rtapi_task_pll_set_correction = &_ulapi_dummy, - - .rtapi_get_time = (rtapi_get_time_t) &_ulapi_dummy, - .rtapi_get_clocks = (rtapi_get_clocks_t) &_ulapi_dummy, - - .rtapi_prio_highest = &_ulapi_dummy, - .rtapi_prio_lowest = &_ulapi_dummy, - - .rtapi_prio_next_higher = (rtapi_prio_next_higher_lower_t) &_ulapi_dummy, - .rtapi_prio_next_lower = (rtapi_prio_next_higher_lower_t) &_ulapi_dummy, - - .rtapi_task_new = &_ulapi_dummy, - .rtapi_task_delete = &_ulapi_dummy, - .rtapi_task_start = &_ulapi_dummy, - .rtapi_wait = &_ulapi_dummy, - .rtapi_task_resume = &_ulapi_dummy, - .rtapi_task_pause = &_ulapi_dummy, - .rtapi_task_self = &_ulapi_dummy, - - .rtapi_shmem_new = (rtapi_shmem_new_t) &_ulapi_dummy, - .rtapi_shmem_new_inst = (rtapi_shmem_new_inst_t) &_ulapi_dummy, - - .rtapi_shmem_delete = (rtapi_shmem_delete_t) &_ulapi_dummy, - .rtapi_shmem_delete_inst =(rtapi_shmem_delete_inst_t)&_ulapi_dummy, - - .rtapi_shmem_getptr = (rtapi_shmem_getptr_t) &_ulapi_dummy, - .rtapi_shmem_getptr_inst = (rtapi_shmem_getptr_inst_t) &_ulapi_dummy, - - .rtapi_set_exception = &_ulapi_dummy, - .rtapi_task_update_stats = &_ulapi_dummy, - - .rtapi_malloc = (rtapi_malloc_t)&_ulapi_dummy, - .rtapi_malloc_aligned = (rtapi_malloc_aligned_t)&_ulapi_dummy, - .rtapi_calloc = (rtapi_calloc_t)&_ulapi_dummy, - .rtapi_realloc = (rtapi_realloc_t)&_ulapi_dummy, - .rtapi_free = (rtapi_free_t)&_ulapi_dummy, - .rtapi_allocsize = (rtapi_allocsize_t)&_ulapi_dummy, - .rtapi_heap_init = (rtapi_heap_init_t)&_ulapi_dummy, - .rtapi_heap_addmem = (rtapi_heap_addmem_t)&_ulapi_dummy, - .rtapi_heap_status = (rtapi_heap_status_t)&_ulapi_dummy, - .rtapi_heap_setflags = (rtapi_heap_setflags_t)&_ulapi_dummy, - .rtapi_heap_walk_freelist = (rtapi_heap_walk_freelist_t)&_ulapi_dummy, -}; - - -static int ulapi_load(rtapi_switch_t **ulapi_switch) +static int ulapi_load() { int retval; - const char *errmsg; - rtapi_get_handle_t rtapi_get_handle; - char ulapi_lib_fname[PATH_MAX]; char *instance = getenv("MK_INSTANCE"); char *debug_env = getenv("ULAPI_DEBUG"); int size = 0; @@ -186,16 +80,12 @@ static int ulapi_load(rtapi_switch_t **ulapi_switch) rtapi_set_logtag("ulapi"); // first thing is to attach the global segment, based on - // the RTAPI instance id. This will contain the flavor - // this ULAPI HAL instance is to run with. + // the RTAPI instance id. // Also, it's the prerequisite for common error message // handling through the message ringbuffer; unless then // error messages will go to stderr. - // the global segment is attached once here per ULAPI instance; - // it's address is passed to the ulapi-.so module once loaded. - // init the common shared memory driver APU shm_common_init(); @@ -247,129 +137,18 @@ static int ulapi_load(rtapi_switch_t **ulapi_switch) // make it accessible in HAL global_heap = &global_data->heap; - // obtain handle on flavor descriptor as detected by rtapi_msgd - flavor = flavor_byid(global_data->rtapi_thread_flavor); - if (flavor == NULL) { - rtapi_print_msg(RTAPI_MSG_ERR, - "HAL_LIB:%d BUG - invalid flavor id: %d\n", - rtapi_instance, global_data->rtapi_thread_flavor); - return -EINVAL; - } - - snprintf(ulapi_lib_fname,PATH_MAX,"%s/%s-%s%s", - EMC2_RTLIB_DIR, ulapi_lib, flavor->name, flavor->so_ext); - - // dynload the proper ulapi.so: - if ((ulapi_so = dlopen(ulapi_lib_fname, RTLD_GLOBAL|RTLD_NOW)) == NULL) { - errmsg = dlerror(); - rtapi_print_msg(RTAPI_MSG_ERR, - "HAL_LIB:%d FATAL - dlopen(%s) failed: %s\n", - rtapi_instance, ulapi_lib_fname, - errmsg ? errmsg : "NULL"); - return -ENOENT; - } - - // resolve rtapi_switch getter function - dlerror(); - if ((rtapi_get_handle = (rtapi_get_handle_t) - dlsym(ulapi_so, "rtapi_get_handle")) == NULL) { - errmsg = dlerror(); - rtapi_print_msg(RTAPI_MSG_ERR, - "HAL_LIB:%d FATAL - resolving %s: cant" - " dlsym(rtapi_get_handle): %s\n", - rtapi_instance, ulapi_lib, errmsg ? errmsg : "NULL"); - return -ENOENT; - } - - assert(rtapi_get_handle != NULL); - - // this redirects calls to rtapi through the just-loaded ulapi - *ulapi_switch = rtapi_get_handle(); - - // from here on it is safe to call all RTAPI functions (i.e. including those - // which go through rtapi_switch) - - // resolve main function - dlerror(); - if ((ulapi_main_ref = (ulapi_main_t) - dlsym(ulapi_so, "ulapi_main")) == NULL) { - errmsg = dlerror(); - rtapi_print_msg(RTAPI_MSG_ERR, - "HAL_LIB:%d FATAL - resolving %s: " - "cant dlsym(ulapi_main): %s\n", - rtapi_instance, ulapi_lib, errmsg ? errmsg : "NULL"); - return -ENOENT; - } - // resolve exit function - dlerror(); - if ((ulapi_exit_ref = (ulapi_exit_t) - dlsym(ulapi_so, "ulapi_exit")) == NULL) { - errmsg = dlerror(); - rtapi_print_msg(RTAPI_MSG_ERR, - "HAL_LIB: FATAL - resolving %s:" - " cant dlsym(ulapi_exit): %s\n", - ulapi_lib, errmsg ? errmsg : "NULL"); - return -ENOENT; - } - - assert(ulapi_main_ref != NULL); - assert(ulapi_exit_ref != NULL); - - // call the ulapi init method, passing in the global segment - if ((retval = ulapi_main_ref(rtapi_instance, - flavor->flavor_id, global_data)) < 0) { - // check shmdrv, permissions - rtapi_print_msg(RTAPI_MSG_ERR, - "HAL_LIB: FATAL - cannot attach to instance %d" - " - realtime not started?\n", - rtapi_instance); - return -ENOENT; - } - - // pretty bad - we loaded the wrong ulapi.so - if (flavor->flavor_id != rtapi_switch->thread_flavor_id) { - rtapi_print_msg(RTAPI_MSG_ERR, "HAL_LIB: BUG: thread flavors disagree:" - " hal_lib.c=%d rtapi=%d\n", - flavor->flavor_id, rtapi_switch->thread_flavor_id); - } - - // sanity check - may be harmless - if (strcmp(GIT_VERSION, rtapi_switch->git_version)) { - rtapi_print_msg(RTAPI_MSG_WARN, - "HAL_LIB: UP API warning - git versions disagree:" - " hal_lib.c=%s %s=%s\n", - GIT_VERSION, ulapi_lib, rtapi_switch->git_version); - } - // declare victory return 0; } -// determine if ulapi.so loaded -int ulapi_loaded(void) { - return (rtapi_switch->thread_flavor_id != RTAPI_NOTLOADED_ID); -} - // ULAPI cleanup. Call the exit handler and unload ulapi-.so. void ulapi_cleanup(void) { // call the ulapi exit handler // detach the rtapi shm segment as needed // (some flavors do not employ an rtapi shm segment) - if (ulapi_exit_ref) { - ulapi_exit_ref(rtapi_instance); - ulapi_exit_ref = NULL; - } + ulapi_exit(rtapi_instance); // NB: we do not detach the global segment - - // unload ulapi shared object. - if (ulapi_so){ - dlclose(ulapi_so); - ulapi_so = NULL; - } - // reset rtapi_switch to make the code - // serially reusable - rtapi_switch = &dummy_ulapi_switch_struct; } #endif // ULAPI diff --git a/src/rtapi/ulapi_main.c b/src/rtapi/ulapi_main.c index a9f1a0b255..206a90cd9e 100644 --- a/src/rtapi/ulapi_main.c +++ b/src/rtapi/ulapi_main.c @@ -26,6 +26,7 @@ #if defined(ULAPI) +#include "rtapi_flavor.h" // flavor_descriptor #include "config.h" #include "rtapi.h" /* RTAPI realtime OS API */ #include "rtapi_global.h" /* global_data_t */ @@ -44,10 +45,6 @@ int ulapi_main(int instance, int flavor, global_data_t *global) { - int retval = 0; - int rtapikey; - int size = 0; - rtapi_instance = instance; // from here on global within ulapi.so // shm_common_init(); // common shared memory API needs this @@ -63,48 +60,11 @@ int ulapi_main(int instance, int flavor, global_data_t *global) /* rtapi_print_msg(RTAPI_MSG_DBG,"ULAPI:%d %s %s init\n", */ /* rtapi_instance, */ - /* rtapi_get_handle()->thread_flavor_name, */ + /* flavor_descriptor->name, */ /* GIT_VERSION); */ - if (rtapi_switch->thread_flavor_flags & FLAVOR_RTAPI_DATA_IN_SHM) { - - rtapikey = OS_KEY(RTAPI_KEY, rtapi_instance); - - // attach to existing RTAPI segment - // not all thread flavors actuall might use it - if ((retval = shm_common_new(rtapikey, &size, - rtapi_instance, (void **) &rtapi_data, 0))) { - rtapi_print_msg(RTAPI_MSG_ERR, - "ULAPI:%d ERROR: cannot attach rtapi" - " segment key=0x%x %d\n", - rtapi_instance, rtapikey, retval); - } - if (size != sizeof(rtapi_data_t)) { - rtapi_print_msg(RTAPI_MSG_ERR, - "ULAPI:%d ERROR: unexpected rtapi shm size:" - " expected: %zu actual: %d\n", - rtapi_instance, sizeof(rtapi_data_t), size); - return -EINVAL; - } - - if (MMAP_OK(global_data) && MMAP_OK(rtapi_data)) { - rtapi_print_msg(RTAPI_MSG_DBG, - "ULAPI:%d msglevel=%d/%d halsize=%d" - " %s startup %s\n", - rtapi_instance, - global_data->rt_msg_level, - global_data->user_msg_level, - global_data->hal_size, - GIT_VERSION, retval ? "FAILED" : "OK"); - } else { - rtapi_print_msg(RTAPI_MSG_DBG, - "ULAPI:%d init failed, realtime not running?" - " global=%p rtapi=%p\n", - rtapi_instance, global_data, rtapi_data); - } - } - return retval; + return 0; } int ulapi_exit(int instance) @@ -113,18 +73,8 @@ int ulapi_exit(int instance) /* instance, */ /* GIT_VERSION); */ - if (rtapi_switch->thread_flavor_flags & FLAVOR_RTAPI_DATA_IN_SHM) { - // detach RTAPI segment - int retval = shm_common_detach(sizeof(rtapi_data_t), rtapi_data); - if (retval) { - rtapi_print_msg(RTAPI_MSG_ERR, - "ULAPI:%d ERROR: shm_common_detach(rtapi_data)" - " failed: %d\n", - rtapi_instance, retval); - } - rtapi_data = NULL; - } return 0; } + #endif // ULAPI diff --git a/src/rtapi/xenomai.c b/src/rtapi/xenomai.c index 9790479b37..e8bccf964b 100644 --- a/src/rtapi/xenomai.c +++ b/src/rtapi/xenomai.c @@ -38,6 +38,8 @@ #include XENOMAI_INCLUDE(mutex.h) #include // abort() +#define XENO_GID_SYSFS "/sys/module/xeno_nucleus/parameters/xenomai_gid" + /* RTAPI task functions */ RT_TASK ostask_array[RTAPI_MAX_TASKS + 1]; @@ -48,33 +50,18 @@ RT_TASK *ostask_self[RTAPI_MAX_TASKS + 1]; #endif // RTAPI -/* rtapi_init() and rtapi_exit() */ - -/*********************************************************************** -* INIT AND EXIT FUNCTIONS * -************************************************************************/ - -int _rtapi_init(const char *modname) { - - return _rtapi_next_handle(); -} - -int _rtapi_exit(int module_id) { - return 0; -} - /*********************************************************************** * RT thread statistics update * ************************************************************************/ #ifdef RTAPI -int _rtapi_task_update_stats_hook(void) +int xenomai_task_update_stats_hook(void) { int task_id = _rtapi_task_self(); // paranoia if ((task_id < 0) || (task_id > RTAPI_MAX_TASKS)) { rtapi_print_msg(RTAPI_MSG_ERR, - "_rtapi_task_update_stats_hook: BUG -" + "rtapi_task_update_stats_hook: BUG -" " task_id out of range: %d\n", task_id); return -ENOENT; @@ -139,7 +126,7 @@ extern rtapi_exception_handler_t rt_exception_handler; // trampoline to current handler static void signal_handler(int sig, siginfo_t *si, void *uctx) { - int task_id = _rtapi_task_update_stats_hook(); + int task_id = xenomai_task_update_stats_hook(); if (task_id > -1) { rtapi_threadstatus_t *ts = &global_data->thread_status[task_id]; @@ -161,7 +148,7 @@ static void signal_handler(int sig, siginfo_t *si, void *uctx) * rtapi_main.c * ************************************************************************/ #ifdef RTAPI -void _rtapi_module_init_hook(void) +void xenomai_module_init_hook(void) { #ifdef USE_SIGXCPU @@ -176,12 +163,12 @@ void _rtapi_module_init_hook(void) // see _rtapi_task_wrapper() if (sigaction(SIGXCPU, &sig_act, (struct sigaction *) NULL)) rtapi_print_msg(RTAPI_MSG_ERR, - "_rtapi_module_init_hook(sigaction): %d %s\n", + "rtapi_module_init_hook(sigaction): %d %s\n", errno, strerror(errno)); #endif } -void _rtapi_module_exit_hook(void) +void xenomai_module_exit_hook(void) { #ifdef USE_SIGXCPU struct sigaction sig_act; @@ -191,13 +178,13 @@ void _rtapi_module_exit_hook(void) sig_act.sa_handler = SIG_IGN; if (sigaction(SIGXCPU, &sig_act, (struct sigaction *) NULL)) rtapi_print_msg(RTAPI_MSG_ERR, - "_rtapi_module_exit_hook(sigaction): %d %s\n", + "rtapi_module_exit_hook(sigaction): %d %s\n", errno, strerror(errno)); #endif } #else -void _rtapi_module_init_hook(void) {} -void _rtapi_module_exit_hook(void) {} +void rtapi_module_init_hook(void) {} +void rtapi_module_exit_hook(void) {} #endif @@ -206,7 +193,7 @@ void _rtapi_module_exit_hook(void) {} ************************************************************************/ #ifdef RTAPI -int _rtapi_task_delete_hook(task_data *task, int task_id) { +int xenomai_task_delete_hook(task_data *task, int task_id) { int retval = 0; if ((retval = rt_task_delete( &ostask_array[task_id] )) < 0) { @@ -257,7 +244,7 @@ void _rtapi_task_wrapper(void * task_id_hack) { rt_task_set_mode(0, T_WARNSW, NULL); #endif - _rtapi_task_update_stats_hook(); // initial recording + xenomai_task_update_stats_hook(); // initial recording #ifdef TRIGGER_SIGXCPU_ONCE // enable this for testing only: @@ -280,7 +267,7 @@ void _rtapi_task_wrapper(void * task_id_hack) { } -int _rtapi_task_start_hook(task_data *task, int task_id) { +int xenomai_task_start_hook(task_data *task, int task_id) { int which_cpu = 0; int uses_fpu = 0; int retval; @@ -337,7 +324,7 @@ int _rtapi_task_start_hook(task_data *task, int task_id) { return 0; } -int _rtapi_task_stop_hook(task_data *task, int task_id) { +int xenomai_task_stop_hook(task_data *task, int task_id) { int retval; if ((retval = rt_task_delete( &ostask_array[task_id] )) < 0) { @@ -349,15 +336,15 @@ int _rtapi_task_stop_hook(task_data *task, int task_id) { return 0; } -int _rtapi_task_pause_hook(task_data *task, int task_id) { +int xenomai_task_pause_hook(task_data *task, int task_id) { return rt_task_suspend( &ostask_array[task_id] ); } -int _rtapi_task_resume_hook(task_data *task, int task_id) { +int xenomai_task_resume_hook(task_data *task, int task_id) { return rt_task_resume( &ostask_array[task_id] ); } -int _rtapi_wait_hook(const int flags) { +int xenomai_wait_hook(const int flags) { if (flags & TF_NOWAIT) return 0; @@ -369,7 +356,7 @@ int _rtapi_wait_hook(const int flags) { // something went wrong: // update stats counters in thread status - int task_id = _rtapi_task_update_stats_hook(); + int task_id = xenomai_task_update_stats_hook(); // paranoid, but you never know; this index off and @@ -446,7 +433,7 @@ int _rtapi_wait_hook(const int flags) { return 0; } -int _rtapi_task_self_hook(void) { +int xenomai_task_self_hook(void) { RT_TASK *ptr; int n; @@ -477,14 +464,14 @@ int _rtapi_task_self_hook(void) { ************************************************************************/ #ifdef RTAPI -void _rtapi_delay_hook(long int nsec) +void xenomai_delay_hook(long int nsec) { long long int release = rt_timer_read() + nsec; while (rt_timer_read() < release); } #endif -long long int _rtapi_get_time_hook(void) { +long long int xenomai_get_time_hook(void) { /* The value returned will represent a count of jiffies if the native skin is bound to a periodic time base (see CONFIG_XENO_OPT_NATIVE_PERIOD), or nanoseconds otherwise. */ @@ -496,6 +483,141 @@ long long int _rtapi_get_time_hook(void) { other disgusting, non-realtime oriented behavior. But at least it doesn't take a week every time you call it. */ -long long int _rtapi_get_clocks_hook(void) { +long long int xenomai_get_clocks_hook(void) { return rt_timer_read(); } + +int kernel_is_xenomai() +{ + struct stat sb; + + return ((stat(XNHEAP_DEV_NAME, &sb) == 0) && + (stat(PROC_IPIPE_XENOMAI, &sb) == 0) && + (stat(XENO_GID_SYSFS, &sb) == 0)); +} + +int xenomai_can_run_flavor() +{ + return kernel_is_xenomai(); +} + +int xenomai_gid() +{ + FILE *fd; + int gid = -1; + + if ((fd = fopen(XENO_GID_SYSFS,"r")) != NULL) { + if (fscanf(fd, "%d", &gid) != 1) { + fclose(fd); + return -EBADF; // garbage in sysfs device + } else { + fclose(fd); + return gid; + } + } + return -ENOENT; // sysfs device cant be opened +} + +int user_in_xenomai_group() +{ + int numgroups, i; + gid_t *grouplist; + int gid = xenomai_gid(); + + if (gid < 0) + return gid; + + numgroups = getgroups(0,NULL); + grouplist = (gid_t *) calloc( numgroups, sizeof(gid_t)); + if (grouplist == NULL) + return -ENOMEM; + if (getgroups( numgroups, grouplist) > 0) { + for (i = 0; i < numgroups; i++) { + if (grouplist[i] == (unsigned) gid) { + free(grouplist); + return 1; + } + } + } else { + free(grouplist); + return errno; + } + return 0; +} + +int xenomi_flavor_check(void) { + // catch installation error: user not in xenomai group + int retval = user_in_xenomai_group() + + + switch (retval) { + case 1: // yes + break; + case 0: + fprintf(stderr, "this user is not member of group xenomai\n"); + fprintf(stderr, "please 'sudo adduser xenomai'," + " logout and login again\n"); + exit(EXIT_FAILURE); + + default: + fprintf(stderr, "cannot determine if this user " + "is a member of group xenomai: %s\n", + strerror(-retval)); + exit(EXIT_FAILURE); + } +} + + +void print_thread_stats(int task_id) +{ + rtapi_threadstatus_t *ts = + &global_data->thread_status[task_id]; + + // generic statistics counters + rtapi_print(" updates=%d\t", ts->num_updates); + if (ts->num_updates) { + rtapi_print("api_err=%d\t", ts->api_errors); + rtapi_print("other_err=%d\n", ts->api_errors); + } + + rtapi_print(" wait_errors=%d\t", + ts->flavor.xeno.wait_errors); + rtapi_print("overruns=%d\t", + ts->flavor.xeno.total_overruns); + rtapi_print("modeswitches=%d\t", + ts->flavor.xeno.modeswitches); + rtapi_print("contextswitches=%d\n", + ts->flavor.xeno.ctxswitches); + rtapi_print(" pagefaults=%d\t", + ts->flavor.xeno.pagefaults); + rtapi_print("exectime=%llduS\t", + ts->flavor.xeno.exectime/1000); + rtapi_print("status=0x%x\n", + ts->flavor.xeno.status); + rtapi_print("\n"); +} + + +flavor_descriptor_t flavor_rt_prempt_descriptor = { + .name = "xenomai", + .flavor_id = RTAPI_XENOMAI_ID, + .flags = FLAVOR_DOES_IO, + .time_no_clock_monotonic = 1, + .can_run_flavor = xenomai_can_run_flavor, + .module_init_hook = xenomai_module_init_hook, + .module_exit_hook = xenomai_module_exit_hook, + .task_update_stats_hook = xenomai_update_stats_hook, + .task_new_hook = NULL, + .task_delete_hook = xenomai_task_delete_hook, + .task_start_hook = xenomai_task_start_hook, + .task_stop_hook = xenomai_task_stop_hook, + .task_pause_hook = xenomai_task_resume_hook; + .wait_hook = xenomai_wait_hook, + .resume_hook = xenomai_resume_hook, + .delay_hook = xenomai_delay_hook, + .get_time_hook = xenomai_get_time_hook, + .get_clocks_hook = xenomai_get_clocks_hook, + .task_self_hook = xenomai_task_self_hook, + .task_pll_get_reference_hook = NULL, + .task_pll_set_correction_hook = NULL +}; diff --git a/src/rtapi/xenomai.h b/src/rtapi/xenomai.h index 1d3c758068..a0602d835f 100644 --- a/src/rtapi/xenomai.h +++ b/src/rtapi/xenomai.h @@ -21,31 +21,4 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ********************************************************************/ -#define FLAVOR_FLAGS XENOMAI_FLAVOR_FLAGS // see rtapi_compat.h - -/* rtapi_proc */ -#ifdef RTAPI -#define HAVE_RTAPI_READ_STATUS_HOOK -#endif - - -/* rtapi_task.c */ -#define HAVE_RTAPI_TASK_DELETE_HOOK -#define HAVE_RTAPI_TASK_STOP_HOOK -#define HAVE_RTAPI_TASK_PAUSE_HOOK -#define HAVE_RTAPI_WAIT_HOOK -#define HAVE_RTAPI_TASK_RESUME_HOOK -#define HAVE_RTAPI_TASK_SELF_HOOK -#define HAVE_RTAPI_TASK_UPDATE_STATS_HOOK - -/* rtapi_time.c */ -#define RTAPI_TIME_NO_CLOCK_MONOTONIC // Xenomai has its own time features -#define HAVE_RTAPI_GET_TIME_HOOK -#define HAVE_RTAPI_GET_CLOCKS_HOOK - -/* rtapi_main.c */ -#define HAVE_RTAPI_MODULE_INIT_HOOK // arm SGXCPU handler -#define HAVE_RTAPI_MODULE_EXIT_HOOK // disarm SGXCPU handler - -/* misc */ - +extern flavor_descriptor_t flavor_xenomai_descriptor; From ba844b3755de36ac0c4eb6c932f99dbf7bc4ca0d Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 18 Feb 2019 08:20:15 +0800 Subject: [PATCH 452/516] WIP get rid of *THREAD* macros; build rtapi_app as one Get rid of `BUILD_THREAD_FLAVORS`, `THREADS_SOURCE` Makefile macros, and lots of others like `HAVE_{POSIX,RT_PREEMPT}_THREADS`, `*_FLAVOR_ID`, `*_THREADS_RTFLAGS` Clean up a few more `BUILD_SYS` Get rid of `configure.ac` `_cfg_flavor_params` m4 macros Start cleaning out flavor stuff to prepare for refactor; add in new `rtapi_flavor.[ch]` Squash flavors: - `$flavor/rtapi.so` and `rtapi_$flavor.so` goes into single `rtapi_app` - `ulapi-$flavor.so` goes into `liblinuxcnculapi.so` Start moving random flavor-specific stuff into `rtapi_flavor.[ch]` --- scripts/gen-rtapi.ini.sh.in.tmpl | 6 - src/Makefile | 40 ++---- src/Makefile.inc.in | 50 +------- src/configure.ac | 180 +++------------------------ src/hal/cython/machinekit/compat.pxd | 21 ---- src/hal/cython/machinekit/compat.pyx | 64 ---------- src/hal/utils/halcmd_commands.c | 3 +- src/machinekitcfg.py-tmp.in | 1 - src/rtapi/Submakefile | 164 ++++++++---------------- src/rtapi/librtapi.c | 2 + src/rtapi/rt-preempt.c | 20 +-- src/rtapi/rtapi_app.cc | 82 +++++------- src/rtapi/rtapi_common.h | 1 - src/rtapi/rtapi_flavor.c | 112 +++++++++++++++++ src/rtapi/rtapi_flavor.h | 74 +++++++++++ src/rtapi/rtapi_main.c | 4 - src/rtapi/rtapi_task.c | 2 +- src/rtapi/xenomai.c | 9 +- 18 files changed, 318 insertions(+), 517 deletions(-) create mode 100644 src/rtapi/librtapi.c create mode 100644 src/rtapi/rtapi_flavor.c create mode 100644 src/rtapi/rtapi_flavor.h diff --git a/scripts/gen-rtapi.ini.sh.in.tmpl b/scripts/gen-rtapi.ini.sh.in.tmpl index be2644bc7a..e9a7feb29d 100644 --- a/scripts/gen-rtapi.ini.sh.in.tmpl +++ b/scripts/gen-rtapi.ini.sh.in.tmpl @@ -99,9 +99,3 @@ RUN_IN_PLACE=@RUN_IN_PLACE@ PIDOF=@PIDOF@ EOF - -################################################# -# Flavor sections -# -# The following sections are added automatically by configure.in -# macros. diff --git a/src/Makefile b/src/Makefile index c8c7b28d4f..b7c83b3ab6 100755 --- a/src/Makefile +++ b/src/Makefile @@ -66,13 +66,6 @@ ECHO=@true VECHO=true endif -#ifneq ($(BUILD_THREAD_FLAVORS),) -#@mkdir -p ../rtlib/modules \ -#for f in $(BUILD_THREAD_FLAVORS); do \ -# ln -s ../rtlib/modules ../rtlib/$$f; \ -#done; -#endif - BUILD_KBUILD = no # extract the version from the kernel source version.h @@ -93,9 +86,6 @@ export PYTHONPATH else include $(BASEPWD)/Makefile.inc endif -ifeq ($(BUILD_THREAD_FLAVORS),) -$(error Makefile.inc must specify 'BUILD_THREAD_FLAVORS' and other variables) -endif # default target: put before everything else default: @@ -625,7 +615,6 @@ HEADERS := \ rtapi/triple-buffer.h \ rtapi/multiframe.h \ rtapi/rtapi_mbarrier.h \ - rtapi/$(THREADS_SOURCE).h \ rtapi/shmdrv/shmdrv.h @@ -634,6 +623,7 @@ HEADERS := \ .PHONY: headers HEADERS := $(patsubst %,../include/%,$(foreach h,$(HEADERS),$(notdir $h))) headers: $(HEADERS) +$(info HEADERS = $(HEADERS)) # install header files as part of the build TARGETS += headers @@ -722,9 +712,6 @@ clean: depclean modclean docclean find . -name '*.o' |xargs rm -f -rm -rf objects -rm -f $(TARGETS) - for flav in $(BUILD_THREAD_FLAVORS); do \ - rm -rf ../lib/$$flav; \ - done -rm -rf ../rtlib ../libexec rm -f ../etc/linuxcnc/rtapi.ini -rm -f $(COPY_CONFIGS) @@ -745,8 +732,7 @@ ifeq ($(BUILD_DRIVERS),yes) setuid: $(call fix_perms,../libexec/pci_read) $(call fix_perms,../libexec/pci_write) - $(foreach f,$(BUILD_THREAD_FLAVORS),\ - $(call fix_perms,../libexec/rtapi_app_$(f));) + $(call fix_perms,../libexec/rtapi_app) # check system configuration: logging, ulimits, udev @-../scripts/check-system-configuration.sh $(CHECK_KFLAV_SWITCH) else @@ -1022,16 +1008,10 @@ endif # RTAPI modules: install userland flavor .so modules into # e.g. /usr/lib/linuxcnc/modules - ##TODO: change $$flavor to modules for install - - for flavor in $(BUILD_THREAD_FLAVORS); do \ - if test $${flavor%-kernel} = $${flavor}; then \ - echo Installing modules for userland flavor $$flavor; \ - $(DIR) $(DESTDIR)$(EMC2_RTLIB_BASE_DIR)/$$flavor; \ - $(FILE) ../rtlib/$$flavor/* \ - $(DESTDIR)$(EMC2_RTLIB_BASE_DIR)/$$flavor; \ - fi; \ - done + echo Installing modules + $(DIR) $(DESTDIR)$(EMC2_RTLIB_BASE_DIR)/modules + $(FILE) ../rtlib/modules/* \ + $(DESTDIR)$(EMC2_RTLIB_BASE_DIR)/modules endif # ! RUN_IN_PLACE @@ -1213,12 +1193,10 @@ RTDEPS := $(sort $(patsubst $(OBJDIR)/%.o,$(DEPDIR)/%.d, $(RTOBJS))) modules: ifeq ($(RUN_IN_PLACE)+$(BUILD_DRIVERS),yes+yes) - for f in $(BUILD_THREAD_FLAVORS); do \ - test -f ../libexec/rtapi_app_$$f -a \ - \( 0`stat -c %u ../libexec/rtapi_app_$$f 2>/dev/null` \ - -ne 0 -o ! -u ../libexec/rtapi_app_$$f \) \ + test -f ../libexec/rtapi_app -a \ + \( 0`stat -c %u ../libexec/rtapi_app 2>/dev/null` \ + -ne 0 -o ! -u ../libexec/rtapi_app \) \ && need_setuid=1; \ - done; \ test "$$need_setuid" = 1 && \ $(VECHO) -n "You now need to run 'sudo make setuid' " && \ $(VECHO) "in order to run in place." || true diff --git a/src/Makefile.inc.in b/src/Makefile.inc.in index 38c8c5241b..4e50e29bbe 100644 --- a/src/Makefile.inc.in +++ b/src/Makefile.inc.in @@ -10,32 +10,11 @@ EMC2_LIBEXEC_DIR=@EMC2_LIBEXEC_DIR@ # Threads systems ################# -# List of thread flavors to build modules -BUILD_THREAD_FLAVORS=@BUILD_THREAD_FLAVORS@ - -# If $(threads) is not set already, try running 'flavor'; if the -# result is empty or not in $(BUILD_THREAD_FLAVORS), pick the first -# item from $(BUILD_THREAD_FLAVORS). -threads ?= $(shell echo $(BUILD_THREAD_FLAVORS) | \ - awk -v f="`${EMC2_LIBEXEC_DIR}/flavor 2>/dev/null`" '\ - { \ - found=$$1; \ - split($$0,flavs); \ - for (val in flavs) \ - if (flavs[val] == f) found=f; \ - print found; \ - }') - -# Uppercase version of flavor name for use in variables -THREADS = $(shell echo $(threads) | tr a-z- A-Z_) - -HAVE_POSIX_THREADS=@HAVE_POSIX_THREADS@ -HAVE_RT_PREEMPT_THREADS=@HAVE_RT_PREEMPT_THREADS@ HAVE_XENOMAI_THREADS=@HAVE_XENOMAI_THREADS@ +XENOMAI_THREADS_RTS=@XENOMAI_THREADS_RTS@ -POSIX_THREADS_FLAVOR_ID=@POSIX_THREADS_FLAVOR_ID@ -RT_PREEMPT_THREADS_FLAVOR_ID=@RT_PREEMPT_THREADS_FLAVOR_ID@ -XENOMAI_THREADS_FLAVOR_ID=@XENOMAI_THREADS_FLAVOR_ID@ +THREADS_LDFLAGS = @THREADS_LDFLAGS@ +THREADS_RTFLAGS = @THREADS_RTFLAGS@ # Directories ############# @@ -95,26 +74,10 @@ ARCH_CFLAGS=@ARCH_CFLAGS@ RTOPT:=-O2 $(ARCH_CFLAGS) ULOPT:=-O2 $(ARCH_CFLAGS) RUN_IN_PLACE = @RUN_IN_PLACE@ -POSIX_THREADS_LDFLAGS = @POSIX_THREADS_LDFLAGS@ -RT_PREEMPT_THREADS_LDFLAGS = @RT_PREEMPT_THREADS_LDFLAGS@ -XENOMAI_THREADS_LDFLAGS = @XENOMAI_THREADS_LDFLAGS@ - -XENOMAI_THREADS_RTS=@XENOMAI_THREADS_RTS@ - -POSIX_THREADS_RTFLAGS = @POSIX_THREADS_RTFLAGS@ -RT_PREEMPT_THREADS_RTFLAGS = @RT_PREEMPT_THREADS_RTFLAGS@ -XENOMAI_THREADS_RTFLAGS = @XENOMAI_THREADS_RTFLAGS@ - -RTFLAGS := -I. \ - -DRTAPI -D_GNU_SOURCE -D_FORTIFY_SOURCE=0 +RTFLAGS := -I. -DRTAPI -D_GNU_SOURCE -D_FORTIFY_SOURCE=0 $(THREADS_RTFLAGS) ULFLAGS = -D_GNU_SOURCE -DLOCALE_DIR=\"$(localedir)\" -DPACKAGE=\"$(package)\" -POSIX_THREADS_BUILD_SYS = @POSIX_THREADS_BUILD_SYS@ -RT_PREEMPT_THREADS_BUILD_SYS = @RT_PREEMPT_THREADS_BUILD_SYS@ -XENOMAI_THREADS_BUILD_SYS = @XENOMAI_THREADS_BUILD_SYS@ -BUILD_SYS = $($(THREADS)_THREADS_BUILD_SYS) - MODULE_EXT = .so CC = @CC@ @@ -126,11 +89,6 @@ PKG_CONFIG = @PKG_CONFIG@ MANDB = @MANDB@ HIDRAW_H_USABLE = @HIDRAW_H_USABLE@ -POSIX_THREADS_SOURCE = @POSIX_THREADS_SOURCE@ -RT_PREEMPT_THREADS_SOURCE = @RT_PREEMPT_THREADS_SOURCE@ -XENOMAI_THREADS_SOURCE = @XENOMAI_THREADS_SOURCE@ -THREADS_SOURCE = $($(THREADS)_THREADS_SOURCE) - BUILD_DRIVERS = @BUILD_DRIVERS@ USE_PORTABLE_PARPORT_IO = @USE_PORTABLE_PARPORT_IO@ TARGET_PLATFORM_PC = @TARGET_PLATFORM_PC@ diff --git a/src/configure.ac b/src/configure.ac index d300c0267d..95aa2d42b6 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -118,7 +118,6 @@ AC_CONFIG_MACRO_DIR(/usr/share/aclocal) ############################################################################## # Section 2 # # RealTime checking # -# Subsection 2.1 - init basic thread style params and declare m4 macros # # Subsection 2.2 - documentation of threads variables to be configured # # Subsection 2.3 - misc basic features: platform, parport I/O, etc. # # Subsection 2.4 - kernel detection and RT capability probing # @@ -127,59 +126,6 @@ AC_CONFIG_MACRO_DIR(/usr/share/aclocal) # Subsection 2.7 - pass configuration into config.h, Makefile.inc.in, etc. # ############################################################################## -############################################################################## -# Subsection 2.1 # -# init basic thread style params # -# - the [_cfg_flavor_params] m4 macro lists all flavors # -# - for each flavor, lists name, flavor_id and threads_source # -# # -# define several m4 macros to help manipulate the list # -############################################################################## - - -dnl #--------------------------------------------------------# -dnl # list of all thread styles with FLAVOR_ID # -dnl # # -dnl # each thread style needs a 3-item m4 tuple set here: # -dnl # flavor-name, flavor-id, threads-headers # -dnl # # -dnl # flavor-name: lower-case with hyphens # -dnl # flavor-id: a unique integer # -dnl # threads-headers: header file from rtapi/*.h (w/o '.h') # -dnl # mod_ext: RTAPI module extension, .so or .ko # -dnl # so_ext: ULAPI module extension, .so # -dnl # flags: see rtapi.h; combine with '|' operator, or 0 # -dnl # # -dnl # these are used in both Makefiles and in config.h, # -dnl # and are the single authoritative source for these data # -dnl #--------------------------------------------------------# -AC_DEFUN([_cfg_flavor_params], - [[[posix],[0],[rt-preempt],[.so],[.so],[0]], - [[rt-preempt],[1],[rt-preempt],[.so],[.so],[0]], - [[xenomai],[2],[xenomai],[.so],[.so],[FLAVOR_DOES_IO]]]) - - -dnl #--------------------------------------------------------# -dnl # m4 convenience macros for accessing above data # - -dnl list of all thread styles to be used in macros -dnl posix,rt-preempt,xenomai -AC_DEFUN([_cfg_all_flavors], - m4_map_sep([m4_car],[[,]],[_cfg_flavor_params])) - -dnl _cfg_flavor_id(flavor): return THREAD_FLAVOR_ID -dnl _cfg_flavor_id(xenomai) => 2; _cfg_flavor_id(posix) => 0 -AC_DEFUN([_cfg_flavor_tuple_id],[$2]) -AC_DEFUN([_cfg_flavor_id], - [m4_foreach([flav],[_cfg_flavor_params], - [m4_cond(m4_car(flav),$1, - m4_apply([_cfg_flavor_tuple_id],[flav]))])]) - -dnl _cfg_flavor_upcase(flavor): return uppercase, and dashes->underscores -dnl used to generate C preprocessor macro names -dnl _cfg_flavor_ucase(rt-preempt) => RT_PREEMPT -AC_DEFUN([_cfg_flavor_upcase],[m4_translit([$*],[a-z-],[A-Z_])]) - ############################################################################## # Subsection 2.2 # @@ -194,11 +140,6 @@ AC_DEFUN([_cfg_flavor_upcase],[m4_translit([$*],[a-z-],[A-Z_])]) # RT system Makefile variables defined by configure: # -# BUILD_THREAD_FLAVORS -# -# a list of all configured threads systems to build; the complete -# possible list is 'posix rt-preempt xenomai' -# # _THREADS_RTS # # a script like /usr/realtime/foo-config, which can be used to extract @@ -209,24 +150,12 @@ AC_DEFUN([_cfg_flavor_upcase],[m4_translit([$*],[a-z-],[A-Z_])]) # 'yes' or 'no' depending on whether the thread system was able to be # configured # -# _THREADS_FLAVOR_ID -# -# 0..4, depending on the _cfg_flavor_params macro defined earlier; -# this is used in config.h to set flavor-specific macros, and set in -# cflags for any compile that #includes config.h +# THREADS_RTFLAGS # -# _THREADS_SOURCE -# -# the basename of the flavor's file in src/rtapi; this is usually the -# name of the flavor, except in the case of posix threads, which use -# the rt-preempt sources -# -# _THREADS_RTFLAGS -# -# list of CFLAGS specific to the threads system; some flavors +# list of CFLAGS specific to threads systems; some flavors # determine this with _THREADS_RTS --cflags # -# _THREADS_LDFLAGS +# THREADS_LDFLAGS # # list of LDFLAGS specific to the threads system; also obtained partly # from _THREADS_RTS --ldflags @@ -246,15 +175,6 @@ AC_DEFUN([_cfg_flavor_upcase],[m4_translit([$*],[a-z-],[A-Z_])]) # flavor macros from config.h, set appropriately for each '$(MAKE) # threads= modules' run: -# RTAPI__ID -# -# Always present for all flavors. Equal to -# _THREADS_FLAVOR_ID. - -# RTAPI__NAME -# -# Always present for all flavors. Equal to $(threads) - # GIT_VERSION # # a string containing the content of src/VERSION, git branch name, @@ -971,9 +891,8 @@ test "$with_posix" = check && with_posix=yes test "$have_librt" = no && with_posix=no AC_MSG_RESULT($with_posix) if test "$with_posix" = yes; then - POSIX_THREADS_LDFLAGS="-lpthread -lrt $LIBCGROUP_LIBS" - POSIX_THREADS_RTFLAGS="$POSIX_THREADS_RTFLAGS -pthread $LIBCGROUP_CFLAGS" - BUILD_THREAD_FLAVORS="$BUILD_THREAD_FLAVORS posix" + THREADS_LDFLAGS="$THREADS_RTFLAGS -lpthread -lrt $LIBCGROUP_LIBS" + THREADS_RTFLAGS="$THREADS_RTFLAGS -pthread $LIBCGROUP_CFLAGS" fi AC_MSG_CHECKING(whether to build RT_PREEMPT threads) @@ -981,10 +900,9 @@ test "$with_rt_preempt" = check && with_rt_preempt=yes test "$have_librt" = no && with_rt_preempt=no AC_MSG_RESULT($with_rt_preempt) if test "$with_rt_preempt" = yes; then - RT_PREEMPT_THREADS_LDFLAGS="-lpthread -lrt $LIBCGROUP_LIBS" - RT_PREEMPT_THREADS_RTFLAGS="$RT_PREEMPT_THREADS_RTFLAGS -pthread" - RT_PREEMPT_THREADS_RTFLAGS="$RT_PREEMPT_THREADS_RTFLAGS $LIBCGROUP_CFLAGS" - BUILD_THREAD_FLAVORS="$BUILD_THREAD_FLAVORS rt-preempt" + THREADS_LDFLAGS="$THREADS_LDFLAGS -lpthread -lrt $LIBCGROUP_LIBS" + THREADS_RTFLAGS="$THREADS_RTFLAGS -pthread" + THREADS_RTFLAGS="$THREADS_RTFLAGS $LIBCGROUP_CFLAGS" with_userland_rt_threads=yes fi @@ -1045,7 +963,7 @@ if test "$with_xenomai" != no -o "$with_xenomai_kernel" != no; then fi if test -n "$XENOMAI_THREADS_RTS"; then - # XENOMAI_THREADS_RTFLAGS: test runtime library & get flags + # THREADS_RTFLAGS: test runtime library & get flags LIBS_hold="$LIBS" CFLAGS_hold="$CFLAGS" CPPFLAGS_hold="$CPPFLAGS" @@ -1070,7 +988,7 @@ if test "$with_xenomai" != no -o "$with_xenomai_kernel" != no; then if test "$host_cpu" != x86_64; then flags="$flags -fno-stack-protector" fi - XENOMAI_THREADS_RTFLAGS="$XENOMAI_THREADS_RTFLAGS $flags" + THREADS_RTFLAGS+="$THREADS_RTFLAGS $flags" # xenomai kernel math options flags="-ffast-math -mhard-float" if test "$($XENOMAI_THREADS_RTS --arch)" = x86; then @@ -1084,16 +1002,13 @@ if test "$with_xenomai" != no -o "$with_xenomai_kernel" != no; then # ldflags flags="$($XENOMAI_THREADS_RTS --ldflags)" AC_PRUNE_DEFAULT_LDFLAGS(flags) - XENOMAI_THREADS_LDFLAGS="$XENOMAI_THREADS_LDFLAGS $flags" + THREADS_LDFLAGS+="$XENOMAI_THREADS_LDFLAGS $flags" fi AC_MSG_CHECKING(whether to build Xenomai userland threads) test "$with_xenomai" = check && with_xenomai=yes test -z "$XENOMAI_THREADS_RTS" && with_xenomai=no -if test $with_xenomai = yes; then - BUILD_THREAD_FLAVORS="$BUILD_THREAD_FLAVORS xenomai" - with_userland_rt_threads=yes -elif test "$xenomai_from_cmdline" = yes; then +if test $with_xenomai = no -a "$xenomai_from_cmdline" = yes; then AC_MSG_ERROR([Requested '--with-xenomai', but unable to configure]) fi AC_MSG_RESULT($with_xenomai) @@ -1299,31 +1214,8 @@ AC_SUBST(TARGET_PLATFORM_ZEDBOARD,$target_platform_zedboard_val) ############################################################ # thread-specific -DDEFINE and Makefile.inc variables -# List of threads flavors -AC_SUBST([BUILD_THREAD_FLAVORS]) - - -# POSIX settings -if test "$with_posix" = yes; then - AC_DEFINE([HAVE_POSIX_THREADS],[],[Build POSIX threads]) -fi -AC_SUBST([HAVE_POSIX_THREADS],[$with_posix]) -AC_SUBST([POSIX_THREADS_FLAVOR_ID],_cfg_flavor_id(posix)) -AC_SUBST([POSIX_THREADS_SOURCE],[rt-preempt]) -AC_SUBST([POSIX_THREADS_RTFLAGS]) -AC_SUBST([POSIX_THREADS_LDFLAGS]) -AC_SUBST([POSIX_THREADS_RTS],[]) - -# RT_PREEMPT settings -if test "$with_rt_preempt" = yes; then - AC_DEFINE([HAVE_RT_PREEMPT_THREADS],[],[Build RT_PREEMPT threads]) -fi -AC_SUBST([HAVE_RT_PREEMPT_THREADS],[$with_rt_preempt]) -AC_SUBST([RT_PREEMPT_THREADS_FLAVOR_ID],_cfg_flavor_id(rt-preempt)) -AC_SUBST([RT_PREEMPT_THREADS_SOURCE],[rt-preempt]) -AC_SUBST([RT_PREEMPT_THREADS_RTFLAGS]) -AC_SUBST([RT_PREEMPT_THREADS_LDFLAGS]) -AC_SUBST([RT_PREEMPT_THREADS_RTS],[]) +AC_SUBST([THREADS_RTFLAGS]) +AC_SUBST([THREADS_LDFLAGS]) # Xenomai general settings if test "$XENOMAI_V2" = true; then @@ -1337,10 +1229,6 @@ if test "$with_xenomai" = yes; then AC_DEFINE([HAVE_XENOMAI_THREADS],[],[Build Xenomai userland threads]) fi AC_SUBST([HAVE_XENOMAI_THREADS],[$with_xenomai]) -AC_SUBST([XENOMAI_THREADS_FLAVOR_ID],_cfg_flavor_id(xenomai)) -AC_SUBST([XENOMAI_THREADS_SOURCE],[xenomai]) -AC_SUBST([XENOMAI_THREADS_RTFLAGS]) -AC_SUBST([XENOMAI_THREADS_LDFLAGS]) AC_SUBST([XENOMAI_THREADS_RTS]) AC_SUBST([PRECISE_MULTILIB_BUG],[$PRECISE_MULTILIB_BUG]) @@ -1919,17 +1807,6 @@ AC_SUBST(BUILD_DOCS) # multiple places. Keep screwball constructs out of this, and it can # be used in both kernel space and user space. -dnl _cfg_thread_flavor_macros(): define thread flavor IDs -dnl and set RTAPI_ & THREADS_HEADERS macros -AC_DEFUN([_cfg_thread_flavor_macros],[dnl -m4_foreach([_cfg_flavor],[_cfg_all_flavors],[dnl -[#]define RTAPI_[]_cfg_flavor_upcase(_cfg_flavor)[]_ID dnl -_cfg_flavor_id(_cfg_flavor) -[#]define RTAPI_[]_cfg_flavor_upcase(_cfg_flavor)[]_NAME dnl -"_cfg_flavor" -]) -]) - AH_TOP([/******************************************************************** * Description: config.h @@ -1978,23 +1855,12 @@ AH_TOP([/******************************************************************** // can be overridden by an option to rtapi_msgd #define HAL_STACKSIZE 32768 -// a pseudo-flavor id to indicate ulapi.so is not yet loaded -// not a build target, just a state indicator for ulapi_autoload.c -#define RTAPI_NOTLOADED_NAME "not-yet-loaded" -#define RTAPI_NOTLOADED_ID 99 - // format of zeroMQ IPC socket pathnames // pass: RUNDIR, rtapi_instance, service name, uuid // service name is: log, rtapi, halrcomp etc #define ZMQIPC_FORMAT "ipc://%s/%d.%s.%s" -] -// flavor IDs for the various threads systems -// and conditional to set thread system macros -// alter these in configure.ac Subsection 2.0 -dnl this needs to be unquoted -_cfg_thread_flavor_macros -) +]) AH_VERBATIM([_GNU_SOURCE], [/* Enable GNU extensions on systems that have them. */ @@ -2037,22 +1903,6 @@ AH_BOTTOM(#endif AC_MSG_NOTICE([Building rtapi.ini generator script]) cp ../scripts/gen-rtapi.ini.sh.in.tmpl ../scripts/gen-rtapi.ini.sh.in -cat >> ../scripts/gen-rtapi.ini.sh.in <@ -# These values do not normally need to be changed. -rtapi_app=@EMC2_LIBEXEC_DIR@/rtapi_app_[]_cfg_flavor -RTS=@_cfg_flavor_upcase(_cfg_flavor)_THREADS_RTS@ -]) -EOF -EOFOUTER - ############################################################################## # Section 6 - Check for tcl/tk support # # # diff --git a/src/hal/cython/machinekit/compat.pxd b/src/hal/cython/machinekit/compat.pxd index 0c8fb78a6f..be4ac685f5 100644 --- a/src/hal/cython/machinekit/compat.pxd +++ b/src/hal/cython/machinekit/compat.pxd @@ -4,25 +4,4 @@ cdef extern from "rtapi_bitops.h": int RTAPI_BIT(int b) cdef extern from "rtapi_compat.h": - cdef int FLAVOR_DOES_IO - - ctypedef struct flavor_t: - const char *name - const char *mod_ext - const char *so_ext - int flavor_id - unsigned long flags - - int c_kernel_is_xenomai "kernel_is_xenomai" () - int c_kernel_is_rtpreempt "kernel_is_rtpreempt" () - - int c_xenomai_gid "xenomai_gid" () - int c_user_in_xenomai_group "user_in_xenomai_group" () - int c_kernel_instance_id "kernel_instance_id" () - - flavor_t flavors[] - flavor_t *c_flavor_byname "flavor_byname" (const char *flavorname) - flavor_t *c_flavor_byid "flavor_byid" (int flavor_id) - flavor_t *c_default_flavor "default_flavor"() - int c_module_path "module_path" (char *result, const char *basename) int c_get_rtapi_config "get_rtapi_config" (char *result, const char *param, int n) diff --git a/src/hal/cython/machinekit/compat.pyx b/src/hal/cython/machinekit/compat.pyx index fcb6432441..116680690b 100644 --- a/src/hal/cython/machinekit/compat.pyx +++ b/src/hal/cython/machinekit/compat.pyx @@ -4,70 +4,6 @@ from .compat cimport * from os import strerror -cdef Flavor_Init(const flavor_t *f): - result = Flavor() - result._f = f - return result - -cdef class Flavor: - cdef const flavor_t *_f - - property name: - def __get__(self): return self._f.name - - property mod_ext: - def __get__(self): return self._f.mod_ext - - property so_ext: - def __get__(self): return self._f.so_ext - - property flavorid: - def __get__(self): return self._f.flavor_id - - property flags: - def __get__(self): return self._f.flags - -def kernel_is_xenomai(): - return bool(c_kernel_is_xenomai()) - -def kernel_is_rtpreempt(): - return bool(c_kernel_is_rtpreempt()) - -def xenomai_gid(): - return c_xenomai_gid() - -def user_in_xenomai_group(): - return bool(c_user_in_xenomai_group()) - -def kernel_instance_id(): - return c_kernel_instance_id() - -def flavor_byname(name): - cdef const flavor_t *f = c_flavor_byname(name) - if f == NULL: - raise RuntimeError("flavor_byname: no such flavor: %s" % name) - return Flavor_Init(f) - -def flavor_byid(id): - cdef const flavor_t *f = c_flavor_byid(id) - if f == NULL: - raise RuntimeError("flavor_byid: no such flavor: %d" % id) - return Flavor_Init(f) - - -def default_flavor(): - cdef const flavor_t *f = c_default_flavor() - if f == NULL: - raise RuntimeError("BUG: flavor() failed") - return Flavor_Init(f) - -def module_path(basename): - cdef char result[1024] - rc = c_module_path(result, basename) - if rc: - raise RuntimeError("modpath(%s) failed: %d %s " % (basename, rc, strerror(-rc))) - return str(result) - def get_rtapi_config(param): cdef char result[1024] rc = c_get_rtapi_config(result, param, 1024) diff --git a/src/hal/utils/halcmd_commands.c b/src/hal/utils/halcmd_commands.c index a777de17c6..b5b0feec41 100644 --- a/src/hal/utils/halcmd_commands.c +++ b/src/hal/utils/halcmd_commands.c @@ -50,6 +50,7 @@ #include "halcmd_commands.h" #include "halcmd_rtapiapp.h" #include "rtapi_hexdump.h" +#include "rtapi_flavor.h" // flavor_descriptor #include <../include/machinetalk/protobuf/types.npb.h> @@ -2477,7 +2478,7 @@ static void print_thread_stats(hal_thread_t *tptr) halcmd_output("\nLowlevel thread statistics for '%s':\n\n", ho_name(tptr)); - rtapi_print_thread_stats(tptr->task_id); + flavor_descriptor->print_thread_stats_hook(tptr->task_id); } static int print_thread_entry(hal_object_ptr o, foreach_args_t *args) diff --git a/src/machinekitcfg.py-tmp.in b/src/machinekitcfg.py-tmp.in index 167bbef38c..07bf06fd4b 100644 --- a/src/machinekitcfg.py-tmp.in +++ b/src/machinekitcfg.py-tmp.in @@ -77,7 +77,6 @@ class Config(object): self.BUILD_DRIVERS="@BUILD_DRIVERS@" self.SUBST="@BUILD_DRIVERS@" self.MACHINEKIT_INI="@MACHINEKIT_INI@" - self.BUILD_THREAD_FLAVORS="@BUILD_THREAD_FLAVORS@" # Directories self.prefix="@prefix@" diff --git a/src/rtapi/Submakefile b/src/rtapi/Submakefile index 7258ecf4b8..eab3cf60ad 100644 --- a/src/rtapi/Submakefile +++ b/src/rtapi/Submakefile @@ -14,14 +14,16 @@ INCLUDES += rtapi rtapi_export @mkdir -p ../include/shmdrv $(Q)cp $^ $@ +HEADERS += \ + rtapi/rtapi_flavor.h \ + rtapi/rt-preempt.h \ + rtapi/xenomai.h + ########################################## # Clean up modclean: modclean-rtapi modclean-rtapi: - for flav in $(BUILD_THREAD_FLAVORS); do \ - rm -f ../lib/ulapi-$$flav.so; \ - rm -f ../libexec/rtapi_app_$$flav; \ - done + rm -f ../libexec/rtapi_app .PHONY: modclean-rtapi @@ -30,7 +32,7 @@ modclean-rtapi: # Sources/objects included in both RTAPI and ULAPI, both kbuild and # user threads -XXAPI_COMMON_SRCS := \ +XXAPI_COMMON_SRCS := $(patsubst %, rtapi/%, \ rtapi_support.c \ rtapi_hexdump.c \ rtapi_common.c \ @@ -38,7 +40,8 @@ XXAPI_COMMON_SRCS := \ rtapi_shmem.c \ rtapi_time.c \ rtapi_exception.c \ - rtapi_heap.c + rtapi_heap.c \ + ) # rtapi_compat needs to know where rtapi.ini lives %/rtapi_compat.o: \ @@ -46,55 +49,29 @@ XXAPI_COMMON_SRCS := \ %/rtapi_compat.o: \ EXTRA_CFLAGS += -DEMC2_SYSTEM_CONFIG_DIR=\"$(EMC2_SYSTEM_CONFIG_DIR)\" -# ULAPI: ../lib/ulapi$THREADSTYLE.so (TBD) -# -# List of sources whose objects objects/rtapi/*.o link into -# ../lib/ulapi$THREADSTYLE.soiblinuxcnchal.so; -# -ULAPI_SRCS := \ - $(patsubst %,rtapi/%,$(XXAPI_COMMON_SRCS)) \ - rtapi/ulapi_main.c - -# resolved at loadtime -$(call TOOBJSDEPS, $(ULAPI_SRCS)): EXTRAFLAGS += -fPIC - - -ULAPISO := ../rtlib/ulapi.so - -$(ULAPISO): ../lib/liblinuxcnchal.so ../lib/liblinuxcncshm.so \ - $(call TOOBJS, $(ULAPI_SRCS)) - $(ECHO) Creating shared object $(notdir $@) - @rm -f $@ - $(Q)$(CC) $(LDFLAGS) -Wl,-soname,$(notdir $@) -shared \ - -o $@ $^ $(ULAPISO_LIBS) \ - ../lib/liblinuxcncshm.so \ - ../lib/liblinuxcnchal.so - -USERSRCS += $(ULAPI_SRCS) -TARGETS += $(ULAPISO) - ################################################################## -# The ulapi autoload library -# -# provides ULAPI with loading-on-first-reference of RTAPI methods +# The ulapi library ################################################################## -ULAPI_AUTOLOAD_SRCS := \ +ULAPI_SRCS := \ rtapi/ulapi_autoload.c \ rtapi/rtapi_compat.c \ rtapi/rtapi_hexdump.c \ rtapi/rtapi_support.c \ - machinetalk/lib/syslog_async.c + machinetalk/lib/syslog_async.c \ + $(XXAPI_COMMON_SRCS) \ + rtapi/ulapi_main.c -USERSRCS += $(ULAPI_AUTOLOAD_SRCS) +USERSRCS += $(ULAPI_SRCS) -ULAPI_AUTOLOAD_LIB := ../lib/liblinuxcnculapi.so +ULAPI_LIB := ../lib/liblinuxcnculapi.so -$(call TOOBJSDEPS, $(ULAPI_AUTOLOAD_SRCS)): EXTRAFLAGS += -DULAPI -fPIC +$(call TOOBJSDEPS, $(ULAPI_SRCS)): EXTRAFLAGS += -DULAPI -fPIC -$(ULAPI_AUTOLOAD_LIB).0: $(call TOOBJS, $(ULAPI_AUTOLOAD_SRCS)) \ +$(ULAPI_LIB).0: $(call TOOBJS, $(ULAPI_SRCS)) \ ../lib/liblinuxcncini.so \ - ../lib/liblinuxcncshm.so + ../lib/liblinuxcncshm.so \ + ../lib/liblinuxcnchal.so $(ECHO) Creating shared library $(notdir $@) @mkdir -p ../lib @rm -f $@ @@ -102,18 +79,16 @@ $(ULAPI_AUTOLOAD_LIB).0: $(call TOOBJS, $(ULAPI_AUTOLOAD_SRCS)) \ -Wl,-soname,$(notdir $@) -shared \ -o $@ $^ -ldl -TARGETS += $(ULAPI_AUTOLOAD_LIB) $(ULAPI_AUTOLOAD_LIB).0 +TARGETS += $(ULAPI_LIB) $(ULAPI_LIB).0 ################################################################## # rtapi_app - now all thread styles ################################################################## -# rtapi_app_ +# rtapi_app # -# A matching rtapi_app_ is built for each userland thread -# flavor at the same time as RTAPI module flavor builds. +# One rtapi_app is built for all userland thread flavors. # -# rtapi_app_ requires two sources plus one already in -# ulapi.so. +# rtapi_app requires two sources plus one already in ulapi.so. # rtapi_app symbols, and the "RT space" (components loaded via dlopen(3)) #------------------------------------------------------------------------ @@ -134,7 +109,7 @@ TARGETS += $(ULAPI_AUTOLOAD_LIB) $(ULAPI_AUTOLOAD_LIB).0 # API functions and no accidential symbol resolution can happen. # # Note these 'RT objects' (really shared libraries) run in the context of -# the rtapi_app_ process and hence shares symbols between rtapi_app +# the rtapi_app process and hence shares symbols between rtapi_app # and the RT objects. This introduces the chance that symbols used and # (and maybe accidentially exported by) rtapi_app are carried over into # the symbol set seen by the RT objects. @@ -196,12 +171,19 @@ TARGETS += $(ULAPI_AUTOLOAD_LIB) $(ULAPI_AUTOLOAD_LIB).0 RTAPI_APP_SRCS := \ + $(XXAPI_COMMON_SRCS) \ + rtapi/rtapi_flavor.c \ rtapi/rtapi_app.cc \ rtapi/rtapi_compat.c \ rtapi/rtapi_hexdump.c \ rtapi/rtapi_support.c \ - rtapi/rtapi_flavor.c \ - rtapi/rt-preempt.c + rtapi/rt-preempt.c \ + rtapi/rtapi_compat.c \ + machinetalk/support/nanopb.c \ + machinetalk/nanopb/pb_decode.c \ + machinetalk/nanopb/pb_encode.c \ + machinetalk/nanopb/pb_common.c + ifeq ($(HAVE_XENOMAI_THREADS),yes) RTAPI_APP_SRCS += rtapi/xenomai.c @@ -220,7 +202,19 @@ $(call TOOBJSDEPS, rtapi/rtapi_app.cc): \ $(call TOOBJSDEPS, rtapi/rtapi_app.cc): \ ../include/machinetalk/protobuf/message.pb.h -../libexec/rtapi_app_%: \ +ifeq ($(USERMODE_PCI),yes) + +# compile userland PCI support with udev cflags if any +$(call TOOBJSDEPS, rtapi/rtapi_pci.c): EXTRAFLAGS += $(LIBUDEV_CFLAGS) + +# link userland PCI support into rtapi_app +RTAPI_APP_SRCS += rtapi/rtapi_pci.c + +# userland PCI support needs -ludev for rtapi.so +../libexec/rtapi_app: LDFLAGS += $(LIBUDEV_LIBS) +endif + +../libexec/rtapi_app: \ $(call TOOBJS, $(RTAPI_APP_SRCS)) \ ../lib/liblinuxcncini.so.0 \ ../lib/liblinuxcncshm.so \ @@ -235,73 +229,13 @@ $(call TOOBJSDEPS, rtapi/rtapi_app.cc): \ -o $@ \ $^ \ $(LDFLAGS) \ - $($(THREADS)_THREADS_LDFLAGS) \ + $(THREADS_LDFLAGS) \ $(PROTOBUF_LIBS) $(CZMQ_LIBS) $(LTTNG_UST_LIBS) \ -lstdc++ -ldl -luuid # $(LIBBACKTRACE) # already linked into libmtalk -modules: $(patsubst %, ../libexec/rtapi_app_%, $(BUILD_THREAD_FLAVORS)) - -################################################################## -# USERLAND THREAD STYLES -################################################################## -# -# FIXME This needs to be folded into rtapi_app. -# -# The `rtapi_.` module was separate from rtapi_app -# because e.g. `rtapi_app_rtai` could run against multiple kernel -# versions by loading different `rtapi.ko` modules from the correct -# directory. Now that kthreads are gone, there's only one possible -# `rtapi.so` module per `rtapi_app`, so these should be folded -# together. - -rtapi-objs := \ - $(patsubst %.c, rtapi/%.o, \ - $(XXAPI_COMMON_SRCS) \ - rtapi_main.c \ - rtapi_compat.c \ - ) \ - machinetalk/support/nanopb.o \ - machinetalk/nanopb/pb_decode.o \ - machinetalk/nanopb/pb_encode.o \ - machinetalk/nanopb/pb_common.o - -ifeq ($(USERMODE_PCI),yes) - -# compile userland PCI support with udev cflags if any -$(call TOOBJSDEPS, rtapi/rtapi_pci.c): EXTRAFLAGS += $(LIBUDEV_CFLAGS) - -# link in userland PCI support into rtapi.so -rtapi-objs += rtapi/rtapi_pci.o - -# userland PCI support needs -ludev for rtapi.so -RTAPI_MODULE_EXTRA_LDFLAGS += $(LIBUDEV_LIBS) -endif - -# - RT_PREEMPT + POSIX -ifeq ($(HAVE_RT_PREEMPT_THREADS),yes) -rtapi_rt-preempt-objs := $(rtapi-objs) rtapi/rt-preempt.o -$(addprefix $(OBJDIR)/,$(rtapi_rt-preempt-objs)): \ - EXTRA_CFLAGS += $(RT_PREEMPT_THREADS_RTFLAGS) -$(RTLIBDIR)/rtapi_rt-preempt.so: EXTRA_LDFLAGS += \ - $(RTAPI_MODULE_EXTRA_LDFLAGS) $(RT_PREEMPT_THREADS_LDFLAGS) -$(RTLIBDIR)/rtapi_rt-preempt.so: \ - $(addprefix $(OBJDIR)/,$(rtapi_rt-preempt-objs)) -obj-m += rtapi_rt-preempt.o -endif - -# - Xenomai -ifeq ($(HAVE_XENOMAI_THREADS),yes) -rtapi_xenomai-objs := $(rtapi-objs) rtapi/xenomai.o -$(addprefix $(OBJDIR)/,$(rtapi_xenomai-objs)): \ - EXTRA_CFLAGS += $(XENOMAI_THREADS_RTFLAGS) -$(RTLIBDIR)/rtapi_xenomai.so: EXTRA_LDFLAGS += \ - $(RTAPI_MODULE_EXTRA_LDFLAGS) $(XENOMAI_THREADS_LDFLAGS) -$(RTLIBDIR)/rtapi_xenomai.so: \ - $(addprefix $(OBJDIR)/,$(rtapi_xenomai-objs)) -obj-m += rtapi_xenomai.o -endif +modules: ../libexec/rtapi_app ################################################################## # the kdetect test program diff --git a/src/rtapi/librtapi.c b/src/rtapi/librtapi.c new file mode 100644 index 0000000000..db5fda7561 --- /dev/null +++ b/src/rtapi/librtapi.c @@ -0,0 +1,2 @@ +// Bogus C file to prank the module-building system into building librtapi.so +// with -DRTAPI diff --git a/src/rtapi/rt-preempt.c b/src/rtapi/rt-preempt.c index 1d12bca48c..367b8e3093 100644 --- a/src/rtapi/rt-preempt.c +++ b/src/rtapi/rt-preempt.c @@ -214,7 +214,7 @@ int posix_task_new_hook(task_data *task, int task_id) { } int posix_task_delete_hook(task_data *task, int task_id) { - int err; + int err_cancel, err_join; void *returncode; /* Signal thread termination and wait for the thread to exit. */ @@ -224,22 +224,22 @@ int posix_task_delete_hook(task_data *task, int task_id) { // pthread_cancel() will get the thread out of any blocking system // calls listed under 'Cancellation points' in man 7 pthreads // read(), poll() being important ones - err = pthread_cancel(extra_task_data[task_id].thread); - if (err) + err_cancel = pthread_cancel(extra_task_data[task_id].thread); + if (err_cancel) rtapi_print_msg(RTAPI_MSG_ERR, "pthread_cancel() on RT thread '%s': %d %s\n", - task->name, err, strerror(err)); - err = pthread_join(extra_task_data[task_id].thread, &returncode); - if (err) + task->name, err_cancel, strerror(err_cancel)); + err_join = pthread_join(extra_task_data[task_id].thread, &returncode); + if (err_join) rtapi_print_msg(RTAPI_MSG_ERR, "pthread_join() on RT thread '%s': %d %s\n", - task->name, err, strerror(err)); + task->name, err_join, strerror(err_join)); } /* Free the thread stack. */ free(extra_task_data[task_id].stackaddr); extra_task_data[task_id].stackaddr = NULL; - return &returncode; + return err_cancel || err_join; } static int realtime_set_affinity(task_data *task) { @@ -620,7 +620,7 @@ flavor_descriptor_t flavor_rt_prempt_descriptor = { .task_stop_hook = posix_task_stop_hook, .task_pause_hook = NULL, .wait_hook = posix_wait_hook, - .resume_hook = NULL, + .task_resume_hook = NULL, .delay_hook = posix_delay_hook, .get_time_hook = NULL, #if !defined(__i386__) && !defined(__x86_64__) @@ -649,7 +649,7 @@ flavor_descriptor_t flavor_posix_descriptor = { .task_stop_hook = posix_task_stop_hook, .task_pause_hook = NULL, .wait_hook = posix_wait_hook, - .resume_hook = NULL, + .task_resume_hook = NULL, .delay_hook = posix_delay_hook, .get_time_hook = NULL, #if !defined(__i386__) && !defined(__x86_64__) diff --git a/src/rtapi/rtapi_app.cc b/src/rtapi/rtapi_app.cc index d5fc234cb1..21c0c6d357 100644 --- a/src/rtapi/rtapi_app.cc +++ b/src/rtapi/rtapi_app.cc @@ -77,6 +77,7 @@ using namespace google::protobuf; #include "rtapi_global.h" #include "rtapi_compat.h" #include "rtapi_export.h" +#include "rtapi_flavor.h" // flavor_descriptor #include "hal.h" #include "hal_priv.h" #include "shmdrv.h" @@ -126,12 +127,12 @@ static void remove_module(std::string name); static struct rusage rusage; static unsigned long minflt, majflt; static int instance_id; -flavor_ptr flavor; static int use_drivers = 0; static int foreground; static int debug; static int signal_fd; static bool interrupted; +static rtapi_flavor_id_t flavor = RTAPI_FLAVOR_UNCONFIGURED_ID; static bool trap_signals = true; int shmdrv_loaded; long page_size; @@ -519,7 +520,7 @@ static int do_load_cmd(int instance, name = name.substr(name.find_last_of("/") + 1); if (modules.count(name) == 0) { - strncpy(module_path, (path + flavor->mod_ext).c_str(), + strncpy(module_path, (path + ".so").c_str(), PATH_MAX); modinfo_t mi = modinfo_t(); @@ -745,7 +746,7 @@ static int rtapi_request(zloop_t *loop, zsock_t *socket, void *arg) char buffer[LINELEN]; snprintf(buffer, sizeof(buffer), "pid=%d flavor=%s gcc=%s git=%s", - getpid(),flavor->name, __VERSION__, GIT_VERSION); + getpid(),flavor_descriptor->name, __VERSION__, GIT_VERSION); pbreply.add_note(buffer); pbreply.set_retcode(0); break; @@ -1084,18 +1085,15 @@ static int mainloop(size_t argc, char **argv) rtapi_set_logtag("rtapi_app"); rtapi_set_msg_level(global_data->rt_msg_level); - // obtain handle on flavor descriptor as detected by rtapi_msgd - flavor = flavor_byid(global_data->rtapi_thread_flavor); - if (flavor == NULL) { + // check that flavor is configured + if (! flavor_is_configured()) { rtapi_print_msg(RTAPI_MSG_ERR, - "FATAL - invalid flavor id: %d\n", - global_data->rtapi_thread_flavor); - global_data->rtapi_app_pid = 0; + "FATAL: Flavor unconfigured\n"); exit(EXIT_FAILURE); } // make sure we're setuid root when we need to - if (use_drivers || (flavor->flags & FLAVOR_DOES_IO)) { + if (use_drivers || (flavor_descriptor->flags & FLAVOR_DOES_IO)) { if (geteuid() != 0) { rtapi_print_msg(RTAPI_MSG_ERR, "rtapi_app:%d need to" @@ -1235,7 +1233,7 @@ static int mainloop(size_t argc, char **argv) // report success rtapi_print_msg(RTAPI_MSG_INFO, "rtapi_app:%d ready flavor=%s gcc=%s git=%s", - instance_id, flavor->name, __VERSION__, GIT_VERSION); + instance_id, flavor_descriptor->name, __VERSION__, GIT_VERSION); // the RT stack is now set up and good for use global_data->rtapi_app_pid = getpid(); @@ -1265,7 +1263,7 @@ static int configure_memory(void) unsigned int i, pagesize; char *buf; - if (global_data->rtapi_thread_flavor != RTAPI_POSIX_ID) { + if (use_drivers || (flavor_descriptor->flags & FLAVOR_DOES_IO)) { // Realtime tweak requires privs /* Lock all memory. This includes all current allocations (BSS/data) * and future allocations. */ @@ -1382,37 +1380,9 @@ static int harden_rt() } } - if (flavor->flavor_id == RTAPI_XENOMAI_ID) { - int retval = user_in_xenomai_group(); - - switch (retval) { - case 1: - // { - // gid_t xg = xenomai_gid(); - // do_setuid(); - // if (setegid(xg)) - // rtapi_print_msg(RTAPI_MSG_ERR, - // "setegid(%d): %s", xg, strerror(errno)); - // undo_setuid(); - // rtapi_print_msg(RTAPI_MSG_ERR, - // "xg=%d egid now %d", xg, getegid()); - // } - break; - case 0: - rtapi_print_msg(RTAPI_MSG_ERR, - "this user is not member of group xenomai"); - rtapi_print_msg(RTAPI_MSG_ERR, - "please 'sudo adduser xenomai'," - " logout and login again"); - return -1; - - default: - rtapi_print_msg(RTAPI_MSG_ERR, - "cannot determine if this user is a member of group xenomai: %s", - strerror(-retval)); - return -1; - } - } + // Check that configured flavor can run + // FIXME is this redundant? Where is this configured? + flavor_descriptor->can_run_flavor(); #if defined(__x86_64__) || defined(__i386__) @@ -1421,7 +1391,7 @@ static int harden_rt() // guaranteed the process executing e.g. hal_parport's rtapi_app_main is // the same process which starts the RT threads, causing hal_parport // thread functions to fail on inb/outb - if (use_drivers || (flavor->flags & FLAVOR_DOES_IO)) { + if (use_drivers || (flavor_descriptor->flags & FLAVOR_DOES_IO)) { if (iopl(3) < 0) { rtapi_print_msg(RTAPI_MSG_ERR, "cannot gain I/O privileges - " @@ -1501,14 +1471,13 @@ int main(int argc, char **argv) break; case 'f': - if ((flavor = flavor_byname(optarg)) == NULL) { + if ((flavor = flavor_byname(optarg)) == RTAPI_FLAVOR_UNCONFIGURED_ID) { fprintf(stderr, "no such flavor: '%s' -- valid flavors are:\n", optarg); - flavor_ptr f = flavors; - while (f->name) { - fprintf(stderr, "\t%s\n", f->name); - f++; - } + flavor_descriptor_ptr f = NULL; + const char * name; + while ((name = flavor_names(&f))) + fprintf(stderr, "\t%s\n", name); exit(1); } break; @@ -1575,6 +1544,19 @@ int main(int argc, char **argv) } #endif + // Set flavor + if (flavor == RTAPI_FLAVOR_UNCONFIGURED_ID) + flavor = default_flavor(); + if (flavor_byid(flavor) == NULL) { + fprintf(stderr,"rtapi_app: Unable to install flavor\n"); + exit(1); + } + if (!install_flavor(flavor)) { + fprintf(stderr,"rtapi_app: Unable to install flavor '%s'\n", + flavor_byid(flavor)->name); + } + + // the actual checking for setuid happens in harden_rt() (if needed) if (!foreground && (getuid() > 0)) { pid_t pid1; diff --git a/src/rtapi/rtapi_common.h b/src/rtapi/rtapi_common.h index 42dfc454ce..58bbfd881a 100644 --- a/src/rtapi/rtapi_common.h +++ b/src/rtapi/rtapi_common.h @@ -213,7 +213,6 @@ extern int _next_handle(void); #endif // set first thing in rtapi_app_main -extern int shmdrv_loaded; extern long page_size; // for munmap /* rtapi_task.c */ diff --git a/src/rtapi/rtapi_flavor.c b/src/rtapi/rtapi_flavor.c new file mode 100644 index 0000000000..bdd4c2cbf5 --- /dev/null +++ b/src/rtapi/rtapi_flavor.c @@ -0,0 +1,112 @@ +#include // getenv +#include // fprintf + +#include "rtapi_flavor.h" +#include "rt-preempt.h" +#ifdef HAVE_XENOMAI_THREADS +#include "xenomai.h" +#endif + +flavor_descriptor_ptr flavor_descriptor = NULL; + +static flavor_descriptor_ptr flavor_list[] = { +#ifdef RTAPI +# ifdef HAVE_XENOMAI_THREADS + &flavor_xenomai_descriptor, +# endif + &flavor_posix_descriptor, + &flavor_rt_prempt_descriptor, +#endif + NULL +}; + +int install_flavor(rtapi_flavor_id_t flavor_id) +{ + flavor_descriptor_ptr * i; + for (i = flavor_list; i != NULL; i++) { + if ((*i)->flavor_id == flavor_id) + break; + } + if (i != NULL) + flavor_descriptor = *i; + return i != NULL; +} + +rtapi_flavor_id_t flavor_byname(const char *flavorname) +{ + flavor_descriptor_ptr * i; + for (i = flavor_list; i != NULL; i++) { + if (!strcasecmp(flavorname, (*i)->name)) + return (*i)->flavor_id; + i++; + } + return RTAPI_FLAVOR_UNCONFIGURED_ID; +} + +flavor_descriptor_ptr flavor_byid(rtapi_flavor_id_t flavor_id) +{ + flavor_descriptor_ptr * i; + for (i = flavor_list; i != NULL; i++) { + if ((*i)->flavor_id == flavor_id) + break; + } + return *i; +} + +rtapi_flavor_id_t default_flavor(void) +{ + char *fname = getenv("FLAVOR"); + flavor_descriptor_ptr * flavor = NULL; + rtapi_flavor_id_t flavor_id = 0; + + // Return flavor passed through environment + if (fname) { + if ((flavor_id = flavor_byname(fname)) == RTAPI_FLAVOR_UNCONFIGURED_ID) { + fprintf(stderr, + "FLAVOR=%s: no such flavor -- valid flavors are:\n", + fname); + for (flavor = flavor_list; flavor != NULL; flavor++) { + fprintf(stderr, "\t%s\n", (*flavor)->name); + flavor++; + } + exit(1); + } + return (*flavor)->flavor_id; + } + + // Find best flavor + for (flavor = flavor_list; flavor != NULL; flavor++) { + if ((*flavor)->flavor_id > flavor_id && (*flavor)->can_run_flavor()) + flavor_id = (*flavor)->flavor_id; + } + if (!flavor_id) { + // This should never happen: POSIX can always run + fprintf(stderr, "ERROR: Unable to find runnable flavor\n"); + exit(1); + } + return flavor_id; +} + +int flavor_is_configured(void) +{ + return flavor_descriptor->flavor_id != RTAPI_FLAVOR_UNCONFIGURED_ID; +} + +const char * flavor_names(flavor_descriptor_ptr * fd) +{ + const char * name; + if (*fd == NULL) + // Init to beginning of list + fd = flavor_list; + else + // Go to next in list + (*fd)++; + + if (*fd == NULL) + // End of list; no name + name = NULL; + else + // Not end; return name + name = (*fd)->name; + return name; +} diff --git a/src/rtapi/rtapi_flavor.h b/src/rtapi/rtapi_flavor.h new file mode 100644 index 0000000000..74d40c91de --- /dev/null +++ b/src/rtapi/rtapi_flavor.h @@ -0,0 +1,74 @@ +#ifndef RTAPI_FLAVOR_H +#define RTAPI_FLAVOR_H + +#include "rtapi_common.h" +// Put these in order of preference +typedef enum RTAPI_FLAVOR_ID { + RTAPI_FLAVOR_UNCONFIGURED_ID = 0, + RTAPI_FLAVOR_ULAPI_ID, + RTAPI_FLAVOR_POSIX_ID, + RTAPI_FLAVOR_RT_PREEMPT_ID, + RTAPI_FLAVOR_XENOMAI_ID, + // Bogus + RTAPI_FLAVOR_MAX_ID +} rtapi_flavor_id_t; + + +#define FLAVOR_DOES_IO RTAPI_BIT(0) // userland: whether iopl() needs to be called + +typedef int (*rtapi_can_run_flavor_t)(void); +typedef void (*rtapi_module_init_hook_t)(void); +typedef void (*rtapi_module_exit_hook_t)(void); +typedef int (*rtapi_task_update_stats_hook_t)(void); +typedef void (*rtapi_print_thread_stats_hook_t)(int task_id); +typedef int (*rtapi_task_new_hook_t)(task_data *task, int task_id); +typedef int (*rtapi_task_delete_hook_t)(task_data *task, int task_id); +typedef int (*rtapi_task_start_hook_t)(task_data *task, int task_id); +typedef void (*rtapi_task_stop_hook_t)(task_data *task, int task_id); +typedef int (*rtapi_task_pause_hook_t)(task_data *task, int task_id); +typedef int (*rtapi_wait_hook_t)(const int flags); +typedef int (*rtapi_task_resume_hook_t)(task_data *task, int task_id); +typedef void (*rtapi_delay_hook_t)(long int nsec); +typedef long long int (*rtapi_get_time_hook_t)(void); +typedef long long int (*rtapi_get_clocks_hook_t)(void); +typedef int (*rtapi_task_self_hook_t)(void); +typedef long long (*rtapi_task_pll_get_reference_hook_t)(void); +typedef int (*rtapi_task_pll_set_correction_hook_t)(long value); + +typedef struct { + const char *name; + const int flavor_id; + const unsigned long flags; + const int time_no_clock_monotonic; + const rtapi_can_run_flavor_t can_run_flavor; + const rtapi_module_init_hook_t module_init_hook; + const rtapi_module_exit_hook_t module_exit_hook; + const rtapi_task_update_stats_hook_t task_update_stats_hook; + const rtapi_print_thread_stats_hook_t print_thread_stats_hook; + const rtapi_task_new_hook_t task_new_hook; + const rtapi_task_delete_hook_t task_delete_hook; + const rtapi_task_start_hook_t task_start_hook; + const rtapi_task_stop_hook_t task_stop_hook; + const rtapi_task_pause_hook_t task_pause_hook; + const rtapi_wait_hook_t wait_hook; + const rtapi_task_resume_hook_t task_resume_hook; + const rtapi_delay_hook_t delay_hook; + const rtapi_get_time_hook_t get_time_hook; + const rtapi_get_clocks_hook_t get_clocks_hook; + const rtapi_task_self_hook_t task_self_hook; + const rtapi_task_pll_get_reference_hook_t task_pll_get_reference_hook; + const rtapi_task_pll_set_correction_hook_t task_pll_set_correction_hook; +} flavor_descriptor_t; +typedef flavor_descriptor_t * flavor_descriptor_ptr; + +extern flavor_descriptor_ptr flavor_descriptor; + +int install_flavor(rtapi_flavor_id_t flavor_id); +rtapi_flavor_id_t flavor_byname(const char *flavorname); +rtapi_flavor_id_t default_flavor(void); +int flavor_is_configured(void); +flavor_descriptor_ptr flavor_byid(rtapi_flavor_id_t flavor_id); +const char * flavor_names(flavor_descriptor_ptr * fd); + + +#endif diff --git a/src/rtapi/rtapi_main.c b/src/rtapi/rtapi_main.c index 7615c97150..c47e61709e 100644 --- a/src/rtapi/rtapi_main.c +++ b/src/rtapi/rtapi_main.c @@ -43,10 +43,6 @@ #include "rtapi_heap.h" #include "shmdrv.h" /* common shm driver API */ -MODULE_AUTHOR("Michael Haberler"); -MODULE_DESCRIPTION("RTAPI module support - userland threads"); -MODULE_LICENSE("GPL"); - // mostly for argument compatibility with kernel thread flavors int rtapi_instance; // instance id, visible throughout RTAPI RTAPI_MP_INT(rtapi_instance, "instance ID"); diff --git a/src/rtapi/rtapi_task.c b/src/rtapi/rtapi_task.c index 769aa1617d..cb672d1e73 100644 --- a/src/rtapi/rtapi_task.c +++ b/src/rtapi/rtapi_task.c @@ -288,7 +288,7 @@ int rtapi_task_resume(int task_id) { if (task->magic != TASK_MAGIC) return -EINVAL; - if (flavor_descriptor->resume_hook) + if (flavor_descriptor->task_resume_hook) return flavor_descriptor->task_resume_hook(task,task_id); return -ENOSYS; diff --git a/src/rtapi/xenomai.c b/src/rtapi/xenomai.c index e8bccf964b..313cec4025 100644 --- a/src/rtapi/xenomai.c +++ b/src/rtapi/xenomai.c @@ -498,7 +498,13 @@ int kernel_is_xenomai() int xenomai_can_run_flavor() { - return kernel_is_xenomai(); + if (! kernel_is_xenomai()) + return 0; + + if (! xenomai_flavor_check()) + return 0; + + return 1; } int xenomai_gid() @@ -565,6 +571,7 @@ int xenomi_flavor_check(void) { strerror(-retval)); exit(EXIT_FAILURE); } + return retval; } From 2c3fe01ffdc05a0e19e4cb981cb168281867a1bb Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 18 Feb 2019 08:34:26 +0800 Subject: [PATCH 453/516] WIP Get rid of `rtapi_switch`; build `rtapi_app` with `-DRTAPI` - Compile old `rtapi.so` sources with `-DRTAPI`, but link into `rtapi_app` - Get rid of `rtapi_switch` - Move more stuff into `rtapi_flavor.[ch]`, `rt-preempt.[ch]`, `xenomai.[ch]` - Get rid of obsolete `kdetect` program - Get rid of more kthreads `procfs` stuff --- src/Makefile | 5 +- src/emc/motion/control.c | 3 +- src/hal/accessor/hal_accessor-expanded-c.i | 4160 -------------------- src/hal/components/rtfault.comp | 8 - src/hal/components/rtmon.comp | 2 +- src/hal/drivers/hal_spi.c | 6 +- src/hal/lib/hal_lib.c | 5 +- src/hal/utils/hal_comp.c | 2 +- src/rtapi/.gitignore | 8 - src/rtapi/README | 8 +- src/rtapi/Submakefile | 51 +- src/rtapi/procfs_macros.h | 69 - src/rtapi/rt-preempt.c | 109 +- src/rtapi/rt-preempt.h | 37 + src/rtapi/rtapi.h | 3 +- src/rtapi/rtapi_app.cc | 1 - src/rtapi/rtapi_common.h | 10 +- src/rtapi/rtapi_compat.h | 35 - src/rtapi/rtapi_exception.c | 167 +- src/rtapi/rtapi_exception.h | 153 +- src/rtapi/rtapi_flavor.h | 24 +- src/rtapi/rtapi_kdetect.c | 232 -- src/rtapi/rtapi_kdetect.h | 86 - src/rtapi/rtapi_proc.h | 366 -- src/rtapi/ulapi_autoload.c | 1 - src/rtapi/xenomai.c | 132 +- src/rtapi/xenomai.h | 40 + src/workaround/hardy-amd64/asm/rtai_lxrt.h | 286 -- 28 files changed, 320 insertions(+), 5689 deletions(-) delete mode 100644 src/hal/accessor/hal_accessor-expanded-c.i delete mode 100644 src/rtapi/.gitignore delete mode 100644 src/rtapi/procfs_macros.h delete mode 100644 src/rtapi/rtapi_kdetect.c delete mode 100644 src/rtapi/rtapi_kdetect.h delete mode 100644 src/rtapi/rtapi_proc.h delete mode 100644 src/workaround/hardy-amd64/asm/rtai_lxrt.h diff --git a/src/Makefile b/src/Makefile index b7c83b3ab6..848c86a2fb 100755 --- a/src/Makefile +++ b/src/Makefile @@ -253,6 +253,7 @@ endef SUBMAKEFILES := $(patsubst %,%/Submakefile,$(SUBDIRS)) #$(info SUBMAKEFILES=$(SUBMAKEFILES)) -include $(wildcard $(SUBMAKEFILES)) +$(info All Submakefiles included) # This checks that all the things listed in USERSRCS are either C files # or C++ files @@ -623,7 +624,6 @@ HEADERS := \ .PHONY: headers HEADERS := $(patsubst %,../include/%,$(foreach h,$(HEADERS),$(notdir $h))) headers: $(HEADERS) -$(info HEADERS = $(HEADERS)) # install header files as part of the build TARGETS += headers @@ -862,7 +862,6 @@ endif $(EXE) ../scripts/linuxcncmkdesktop $(DESTDIR)$(bindir) $(FILE) $(filter ../lib/%.a ../lib/%.so.0,$(TARGETS)) $(DESTDIR)$(libdir) cp --no-dereference $(filter ../lib/%.so, $(TARGETS)) $(DESTDIR)$(libdir) - $(FILE) ../rtlib/ulapi-*.so $(DESTDIR)$(EMC2_RTLIB_BASE_DIR) # # don't run ldconfig under fakeroot (silence dpkg-build warning) -test -n "$$FAKED_MODE" || ldconfig $(DESTDIR)$(libdir) $(FILE) $(HEADERS) $(DESTDIR)$(includedir)/linuxcnc/ @@ -1115,7 +1114,7 @@ TORTOBJS = $(foreach file,$($(patsubst %.o,%,$(1))-objs), $(OBJDIR)/$(file)) # Module building EXTRA_CFLAGS += -fPIC -RTOBJS := $(sort $(foreach mod,$(obj-m),$(call TORTOBJS,$(mod)))) +RTOBJS += $(sort $(foreach mod,$(obj-m),$(call TORTOBJS,$(mod)))) RTDEPS := $(sort $(patsubst $(OBJDIR)/%.o,$(DEPDIR)/%.d, $(RTOBJS))) diff --git a/src/emc/motion/control.c b/src/emc/motion/control.c index 6a998b5169..91daad7b67 100644 --- a/src/emc/motion/control.c +++ b/src/emc/motion/control.c @@ -20,6 +20,7 @@ #include "motion.h" #include "mot_priv.h" #include "rtapi_math.h" +#include "rtapi_flavor.h" // flavor_descriptor #include "tp.h" #include "tc.h" #include "motion_debug.h" @@ -254,7 +255,7 @@ extern int emcmotController(void *arg, const hal_funct_args_t *fa) emcmot_hal_data->last_period_ns = this_run * 1e6 / cpu_khz; #endif - if(!priming && (rtapi_switch->thread_flavor_id != RTAPI_POSIX_ID)) { + if(!priming && flavor_descriptor->has_rt) { // we have CYCLE_HISTORY samples, so check for this call being // anomolously late int i; diff --git a/src/hal/accessor/hal_accessor-expanded-c.i b/src/hal/accessor/hal_accessor-expanded-c.i deleted file mode 100644 index bcf22fdc93..0000000000 --- a/src/hal/accessor/hal_accessor-expanded-c.i +++ /dev/null @@ -1,4160 +0,0 @@ -# 1 "hal/lib/hal_accessor.h" -# 1 "/home/mah/machinekit/src//" -# 1 "" -# 1 "" -# 1 "/usr/include/stdc-predef.h" 1 3 4 -# 1 "" 2 -# 1 "hal/lib/hal_accessor.h" - - -# 1 "./config.h" 1 -# 4 "hal/lib/hal_accessor.h" 2 -# 1 "rtapi/rtapi.h" 1 -# 84 "rtapi/rtapi.h" -# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include/stddef.h" 1 3 4 -# 147 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include/stddef.h" 3 4 -typedef long int ptrdiff_t; -# 212 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include/stddef.h" 3 4 -typedef long unsigned int size_t; -# 324 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include/stddef.h" 3 4 -typedef int wchar_t; -# 422 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include/stddef.h" 3 4 -typedef struct { - long long __max_align_ll __attribute__((__aligned__(__alignof__(long long)))); - long double __max_align_ld __attribute__((__aligned__(__alignof__(long double)))); -} max_align_t; -# 85 "rtapi/rtapi.h" 2 -# 1 "rtapi/rtapi_int.h" 1 -# 27 "rtapi/rtapi_int.h" -# 1 "/usr/include/x86_64-linux-gnu/asm/types.h" 1 3 4 - - - -# 1 "/usr/include/asm-generic/types.h" 1 3 4 - - - - - -# 1 "/usr/include/asm-generic/int-ll64.h" 1 3 4 -# 11 "/usr/include/asm-generic/int-ll64.h" 3 4 -# 1 "/usr/include/x86_64-linux-gnu/asm/bitsperlong.h" 1 3 4 -# 10 "/usr/include/x86_64-linux-gnu/asm/bitsperlong.h" 3 4 -# 1 "/usr/include/asm-generic/bitsperlong.h" 1 3 4 -# 11 "/usr/include/x86_64-linux-gnu/asm/bitsperlong.h" 2 3 4 -# 12 "/usr/include/asm-generic/int-ll64.h" 2 3 4 - - - - - - - -typedef __signed__ char __s8; -typedef unsigned char __u8; - -typedef __signed__ short __s16; -typedef unsigned short __u16; - -typedef __signed__ int __s32; -typedef unsigned int __u32; - - -__extension__ typedef __signed__ long long __s64; -__extension__ typedef unsigned long long __u64; -# 7 "/usr/include/asm-generic/types.h" 2 3 4 -# 5 "/usr/include/x86_64-linux-gnu/asm/types.h" 2 3 4 -# 28 "rtapi/rtapi_int.h" 2 - - -# 1 "/usr/local/include/ck_limits.h" 1 3 -# 44 "/usr/local/include/ck_limits.h" 3 -# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include-fixed/limits.h" 1 3 4 -# 34 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include-fixed/limits.h" 3 4 -# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include-fixed/syslimits.h" 1 3 4 - - - - - - -# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include-fixed/limits.h" 1 3 4 -# 168 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include-fixed/limits.h" 3 4 -# 1 "/usr/include/limits.h" 1 3 4 -# 25 "/usr/include/limits.h" 3 4 -# 1 "/usr/include/features.h" 1 3 4 -# 374 "/usr/include/features.h" 3 4 -# 1 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 1 3 4 -# 385 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 -# 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4 -# 386 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 2 3 4 -# 375 "/usr/include/features.h" 2 3 4 -# 398 "/usr/include/features.h" 3 4 -# 1 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 1 3 4 -# 10 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 3 4 -# 1 "/usr/include/x86_64-linux-gnu/gnu/stubs-64.h" 1 3 4 -# 11 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 2 3 4 -# 399 "/usr/include/features.h" 2 3 4 -# 26 "/usr/include/limits.h" 2 3 4 -# 143 "/usr/include/limits.h" 3 4 -# 1 "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h" 1 3 4 -# 160 "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h" 3 4 -# 1 "/usr/include/x86_64-linux-gnu/bits/local_lim.h" 1 3 4 -# 38 "/usr/include/x86_64-linux-gnu/bits/local_lim.h" 3 4 -# 1 "/usr/include/linux/limits.h" 1 3 4 -# 39 "/usr/include/x86_64-linux-gnu/bits/local_lim.h" 2 3 4 -# 161 "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h" 2 3 4 -# 144 "/usr/include/limits.h" 2 3 4 - - - -# 1 "/usr/include/x86_64-linux-gnu/bits/posix2_lim.h" 1 3 4 -# 148 "/usr/include/limits.h" 2 3 4 - - - -# 1 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 1 3 4 -# 33 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4 -# 1 "/usr/include/x86_64-linux-gnu/bits/stdio_lim.h" 1 3 4 -# 34 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 2 3 4 -# 152 "/usr/include/limits.h" 2 3 4 -# 169 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include-fixed/limits.h" 2 3 4 -# 8 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include-fixed/syslimits.h" 2 3 4 -# 35 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include-fixed/limits.h" 2 3 4 -# 45 "/usr/local/include/ck_limits.h" 2 3 -# 31 "rtapi/rtapi_int.h" 2 -# 86 "rtapi/rtapi.h" 2 -# 97 "rtapi/rtapi.h" -# 1 "rtapi/rtapi_errno.h" 1 -# 19 "rtapi/rtapi_errno.h" -# 1 "/usr/include/errno.h" 1 3 4 -# 31 "/usr/include/errno.h" 3 4 - - - - -# 1 "/usr/include/x86_64-linux-gnu/bits/errno.h" 1 3 4 -# 24 "/usr/include/x86_64-linux-gnu/bits/errno.h" 3 4 -# 1 "/usr/include/linux/errno.h" 1 3 4 -# 1 "/usr/include/x86_64-linux-gnu/asm/errno.h" 1 3 4 -# 1 "/usr/include/asm-generic/errno.h" 1 3 4 - - - -# 1 "/usr/include/asm-generic/errno-base.h" 1 3 4 -# 5 "/usr/include/asm-generic/errno.h" 2 3 4 -# 1 "/usr/include/x86_64-linux-gnu/asm/errno.h" 2 3 4 -# 1 "/usr/include/linux/errno.h" 2 3 4 -# 25 "/usr/include/x86_64-linux-gnu/bits/errno.h" 2 3 4 -# 50 "/usr/include/x86_64-linux-gnu/bits/errno.h" 3 4 -extern int *__errno_location (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); -# 36 "/usr/include/errno.h" 2 3 4 -# 54 "/usr/include/errno.h" 3 4 -extern char *program_invocation_name, *program_invocation_short_name; - - - - -# 68 "/usr/include/errno.h" 3 4 -typedef int error_t; -# 20 "rtapi/rtapi_errno.h" 2 -# 98 "rtapi/rtapi.h" 2 - - - - -# 1 "/usr/local/include/ck_pr.h" 1 3 -# 31 "/usr/local/include/ck_pr.h" 3 -# 1 "/usr/local/include/ck_cc.h" 1 3 -# 32 "/usr/local/include/ck_cc.h" 3 -# 1 "/usr/local/include/gcc/ck_cc.h" 1 3 -# 31 "/usr/local/include/gcc/ck_cc.h" 3 -# 1 "/usr/local/include/ck_md.h" 1 3 -# 32 "/usr/local/include/gcc/ck_cc.h" 2 3 -# 116 "/usr/local/include/gcc/ck_cc.h" 3 -__attribute__((unused)) static int -ck_cc_ffs(unsigned int x) -{ - - return __builtin_ffs(x); -} - -__attribute__((unused)) static int -ck_cc_clz(unsigned int x) -{ - - return __builtin_clz(x); -} - -__attribute__((unused)) static int -ck_cc_ctz(unsigned int x) -{ - - return __builtin_ctz(x); -} - -__attribute__((unused)) static int -ck_cc_popcount(unsigned int x) -{ - - return __builtin_popcount(x); -} -# 33 "/usr/local/include/ck_cc.h" 2 3 -# 32 "/usr/local/include/ck_pr.h" 2 3 -# 1 "/usr/local/include/ck_limits.h" 1 3 -# 44 "/usr/local/include/ck_limits.h" 3 -# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include-fixed/limits.h" 1 3 4 -# 45 "/usr/local/include/ck_limits.h" 2 3 -# 33 "/usr/local/include/ck_pr.h" 2 3 - -# 1 "/usr/local/include/ck_stdint.h" 1 3 -# 31 "/usr/local/include/ck_stdint.h" 3 -# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include/stdint.h" 1 3 4 -# 9 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include/stdint.h" 3 4 -# 1 "/usr/include/stdint.h" 1 3 4 -# 26 "/usr/include/stdint.h" 3 4 -# 1 "/usr/include/x86_64-linux-gnu/bits/wchar.h" 1 3 4 -# 27 "/usr/include/stdint.h" 2 3 4 -# 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4 -# 28 "/usr/include/stdint.h" 2 3 4 -# 36 "/usr/include/stdint.h" 3 4 -typedef signed char int8_t; -typedef short int int16_t; -typedef int int32_t; - -typedef long int int64_t; - - - - - - - -typedef unsigned char uint8_t; -typedef unsigned short int uint16_t; - -typedef unsigned int uint32_t; - - - -typedef unsigned long int uint64_t; -# 65 "/usr/include/stdint.h" 3 4 -typedef signed char int_least8_t; -typedef short int int_least16_t; -typedef int int_least32_t; - -typedef long int int_least64_t; - - - - - - -typedef unsigned char uint_least8_t; -typedef unsigned short int uint_least16_t; -typedef unsigned int uint_least32_t; - -typedef unsigned long int uint_least64_t; -# 90 "/usr/include/stdint.h" 3 4 -typedef signed char int_fast8_t; - -typedef long int int_fast16_t; -typedef long int int_fast32_t; -typedef long int int_fast64_t; -# 103 "/usr/include/stdint.h" 3 4 -typedef unsigned char uint_fast8_t; - -typedef unsigned long int uint_fast16_t; -typedef unsigned long int uint_fast32_t; -typedef unsigned long int uint_fast64_t; -# 119 "/usr/include/stdint.h" 3 4 -typedef long int intptr_t; - - -typedef unsigned long int uintptr_t; -# 134 "/usr/include/stdint.h" 3 4 -typedef long int intmax_t; -typedef unsigned long int uintmax_t; -# 10 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include/stdint.h" 2 3 4 -# 32 "/usr/local/include/ck_stdint.h" 2 3 -# 35 "/usr/local/include/ck_pr.h" 2 3 -# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include/stdbool.h" 1 3 4 -# 36 "/usr/local/include/ck_pr.h" 2 3 - - - -# 1 "/usr/local/include/gcc/x86_64/ck_pr.h" 1 3 -# 36 "/usr/local/include/gcc/x86_64/ck_pr.h" 3 -# 1 "/usr/local/include/ck_stdint.h" 1 3 -# 37 "/usr/local/include/gcc/x86_64/ck_pr.h" 2 3 - - - - - - -# 1 "/usr/local/include/gcc/x86_64/ck_f_pr.h" 1 3 -# 44 "/usr/local/include/gcc/x86_64/ck_pr.h" 2 3 -# 65 "/usr/local/include/gcc/x86_64/ck_pr.h" 3 -__attribute__((unused)) static void -ck_pr_stall(void) -{ - __asm__ __volatile__("pause" ::: "memory"); - return; -} -# 79 "/usr/local/include/gcc/x86_64/ck_pr.h" 3 -__attribute__((unused)) static void ck_pr_fence_strict_atomic(void) -{ - __asm__ __volatile__("sfence" ::: "memory"); -} -__attribute__((unused)) static void ck_pr_fence_strict_atomic_store(void) -{ - __asm__ __volatile__("sfence" ::: "memory"); -} -__attribute__((unused)) static void ck_pr_fence_strict_atomic_load(void) -{ - __asm__ __volatile__("mfence" ::: "memory"); -} -__attribute__((unused)) static void ck_pr_fence_strict_store_atomic(void) -{ - __asm__ __volatile__("sfence" ::: "memory"); -} -__attribute__((unused)) static void ck_pr_fence_strict_load_atomic(void) -{ - __asm__ __volatile__("mfence" ::: "memory"); -} -__attribute__((unused)) static void ck_pr_fence_strict_load(void) -{ - __asm__ __volatile__("lfence" ::: "memory"); -} -__attribute__((unused)) static void ck_pr_fence_strict_load_store(void) -{ - __asm__ __volatile__("mfence" ::: "memory"); -} -__attribute__((unused)) static void ck_pr_fence_strict_store(void) -{ - __asm__ __volatile__("sfence" ::: "memory"); -} -__attribute__((unused)) static void ck_pr_fence_strict_store_load(void) -{ - __asm__ __volatile__("mfence" ::: "memory"); -} -__attribute__((unused)) static void ck_pr_fence_strict_memory(void) -{ - __asm__ __volatile__("mfence" ::: "memory"); -} -__attribute__((unused)) static void ck_pr_fence_strict_release(void) -{ - __asm__ __volatile__("mfence" ::: "memory"); -} -__attribute__((unused)) static void ck_pr_fence_strict_acquire(void) -{ - __asm__ __volatile__("mfence" ::: "memory"); -} -__attribute__((unused)) static void ck_pr_fence_strict_lock(void) -{ - __asm__ __volatile__("mfence" ::: "memory"); -} -__attribute__((unused)) static void ck_pr_fence_strict_unlock(void) -{ - __asm__ __volatile__("mfence" ::: "memory"); -} -# 103 "/usr/local/include/gcc/x86_64/ck_pr.h" 3 -__attribute__((unused)) static void -ck_pr_rfo(const void *m) -{ - - __asm__ __volatile__("prefetchw (%0)" - : - : "r" (m) - : "memory"); - - return; -} -# 131 "/usr/local/include/gcc/x86_64/ck_pr.h" 3 -__attribute__((unused)) static void * ck_pr_fas_ptr(void *target, void * v) -{ - __asm__ __volatile__("xchgq" " %0, %1" : "+m" (*(char *)target), "+q" (v) : : "memory"); - return v; -} - - - -__attribute__((unused)) static double ck_pr_fas_double(double *target, double v) -{ - __asm__ __volatile__("xchgq" " %0, %1" : "+m" (*(double *)target), "+q" (v) : : "memory"); - return v; -} -__attribute__((unused)) static char ck_pr_fas_char(char *target, char v) -{ - __asm__ __volatile__("xchgb" " %0, %1" : "+m" (*(char *)target), "+q" (v) : : "memory"); - return v; -} -__attribute__((unused)) static unsigned int ck_pr_fas_uint(unsigned int *target, unsigned int v) -{ - __asm__ __volatile__("xchgl" " %0, %1" : "+m" (*(unsigned int *)target), "+q" (v) : : "memory"); - return v; -} -__attribute__((unused)) static int ck_pr_fas_int(int *target, int v) -{ - __asm__ __volatile__("xchgl" " %0, %1" : "+m" (*(int *)target), "+q" (v) : : "memory"); - return v; -} -__attribute__((unused)) static uint64_t ck_pr_fas_64(uint64_t *target, uint64_t v) -{ - __asm__ __volatile__("xchgq" " %0, %1" : "+m" (*(uint64_t *)target), "+q" (v) : : "memory"); - return v; -} -__attribute__((unused)) static uint32_t ck_pr_fas_32(uint32_t *target, uint32_t v) -{ - __asm__ __volatile__("xchgl" " %0, %1" : "+m" (*(uint32_t *)target), "+q" (v) : : "memory"); - return v; -} -__attribute__((unused)) static uint16_t ck_pr_fas_16(uint16_t *target, uint16_t v) -{ - __asm__ __volatile__("xchgw" " %0, %1" : "+m" (*(uint16_t *)target), "+q" (v) : : "memory"); - return v; -} -__attribute__((unused)) static uint8_t ck_pr_fas_8(uint8_t *target, uint8_t v) -{ - __asm__ __volatile__("xchgb" " %0, %1" : "+m" (*(uint8_t *)target), "+q" (v) : : "memory"); - return v; -} -# 162 "/usr/local/include/gcc/x86_64/ck_pr.h" 3 -__attribute__((unused)) static void * ck_pr_md_load_ptr(const void *target) -{ - void * r; - __asm__ __volatile__("movq" " %1, %0" : "=q" (r) : "m" (*(const char *)target) : "memory"); - return (r); -} - - - -__attribute__((unused)) static char ck_pr_md_load_char(const char *target) -{ - char r; - __asm__ __volatile__("movb" " %1, %0" : "=q" (r) : "m" (*(const char *)target) : "memory"); - return (r); -} -__attribute__((unused)) static unsigned int ck_pr_md_load_uint(const unsigned int *target) -{ - unsigned int r; - __asm__ __volatile__("movl" " %1, %0" : "=q" (r) : "m" (*(const unsigned int *)target) : "memory"); - return (r); -} -__attribute__((unused)) static int ck_pr_md_load_int(const int *target) -{ - int r; - __asm__ __volatile__("movl" " %1, %0" : "=q" (r) : "m" (*(const int *)target) : "memory"); - return (r); -} -__attribute__((unused)) static double ck_pr_md_load_double(const double *target) -{ - double r; - __asm__ __volatile__("movq" " %1, %0" : "=q" (r) : "m" (*(const double *)target) : "memory"); - return (r); -} -__attribute__((unused)) static uint64_t ck_pr_md_load_64(const uint64_t *target) -{ - uint64_t r; - __asm__ __volatile__("movq" " %1, %0" : "=q" (r) : "m" (*(const uint64_t *)target) : "memory"); - return (r); -} -__attribute__((unused)) static uint32_t ck_pr_md_load_32(const uint32_t *target) -{ - uint32_t r; - __asm__ __volatile__("movl" " %1, %0" : "=q" (r) : "m" (*(const uint32_t *)target) : "memory"); - return (r); -} -__attribute__((unused)) static uint16_t ck_pr_md_load_16(const uint16_t *target) -{ - uint16_t r; - __asm__ __volatile__("movw" " %1, %0" : "=q" (r) : "m" (*(const uint16_t *)target) : "memory"); - return (r); -} -__attribute__((unused)) static uint8_t ck_pr_md_load_8(const uint8_t *target) -{ - uint8_t r; - __asm__ __volatile__("movb" " %1, %0" : "=q" (r) : "m" (*(const uint8_t *)target) : "memory"); - return (r); -} - - - - -__attribute__((unused)) static void -ck_pr_load_64_2(const uint64_t target[2], uint64_t v[2]) -{ - __asm__ __volatile__("movq %%rdx, %%rcx;" - "movq %%rax, %%rbx;" - "lock " "cmpxchg16b %2;" - : "=a" (v[0]), - "=d" (v[1]) - : "m" (*(const uint64_t *)target) - : "rbx", "rcx", "memory", "cc"); - return; -} - -__attribute__((unused)) static void -ck_pr_load_ptr_2(const void *t, void *v) -{ - ck_pr_load_64_2(t, - v); - return; -} -# 208 "/usr/local/include/gcc/x86_64/ck_pr.h" 3 -__attribute__((unused)) static void ck_pr_md_load_char_16(const char t[2], char v[2]) -{ - ck_pr_load_64_2((const uint64_t *)(const void *)t, (uint64_t *)(void *)v); - return; -} -__attribute__((unused)) static void ck_pr_md_load_int_4(const int t[2], int v[2]) -{ - ck_pr_load_64_2((const uint64_t *)(const void *)t, (uint64_t *)(void *)v); - return; -} -__attribute__((unused)) static void ck_pr_md_load_uint_4(const unsigned int t[2], unsigned int v[2]) -{ - ck_pr_load_64_2((const uint64_t *)(const void *)t, (uint64_t *)(void *)v); - return; -} -__attribute__((unused)) static void ck_pr_md_load_32_4(const uint32_t t[2], uint32_t v[2]) -{ - ck_pr_load_64_2((const uint64_t *)(const void *)t, (uint64_t *)(void *)v); - return; -} -__attribute__((unused)) static void ck_pr_md_load_16_8(const uint16_t t[2], uint16_t v[2]) -{ - ck_pr_load_64_2((const uint64_t *)(const void *)t, (uint64_t *)(void *)v); - return; -} -__attribute__((unused)) static void ck_pr_md_load_8_16(const uint8_t t[2], uint8_t v[2]) -{ - ck_pr_load_64_2((const uint64_t *)(const void *)t, (uint64_t *)(void *)v); - return; -} -# 242 "/usr/local/include/gcc/x86_64/ck_pr.h" 3 -__attribute__((unused)) static void ck_pr_md_store_ptr(void *target, const void * v) -{ - __asm__ __volatile__("movq" " %1, %0" : "=m" (*(char *)target) : "Z" "q" (v) : "memory"); - return; -} -__attribute__((unused)) static void ck_pr_md_store_double(double *target, double v) -{ - __asm__ __volatile__("movq" " %1, %0" : "=m" (*(double *)target) : "q" (v) : "memory"); - return; -} - - - -__attribute__((unused)) static void ck_pr_md_store_char(char *target, char v) -{ - __asm__ __volatile__("movb" " %1, %0" : "=m" (*(char *)target) : "e" "q" (v) : "memory"); - return; -} -__attribute__((unused)) static void ck_pr_md_store_int(int *target, int v) -{ - __asm__ __volatile__("movl" " %1, %0" : "=m" (*(int *)target) : "e" "q" (v) : "memory"); - return; -} -__attribute__((unused)) static void ck_pr_md_store_uint(unsigned int *target, unsigned int v) -{ - __asm__ __volatile__("movl" " %1, %0" : "=m" (*(unsigned int *)target) : "Z" "q" (v) : "memory"); - return; -} -__attribute__((unused)) static void ck_pr_md_store_64(uint64_t *target, uint64_t v) -{ - __asm__ __volatile__("movq" " %1, %0" : "=m" (*(uint64_t *)target) : "Z" "q" (v) : "memory"); - return; -} -__attribute__((unused)) static void ck_pr_md_store_32(uint32_t *target, uint32_t v) -{ - __asm__ __volatile__("movl" " %1, %0" : "=m" (*(uint32_t *)target) : "Z" "q" (v) : "memory"); - return; -} -__attribute__((unused)) static void ck_pr_md_store_16(uint16_t *target, uint16_t v) -{ - __asm__ __volatile__("movw" " %1, %0" : "=m" (*(uint16_t *)target) : "Z" "q" (v) : "memory"); - return; -} -__attribute__((unused)) static void ck_pr_md_store_8(uint8_t *target, uint8_t v) -{ - __asm__ __volatile__("movb" " %1, %0" : "=m" (*(uint8_t *)target) : "Z" "q" (v) : "memory"); - return; -} -# 274 "/usr/local/include/gcc/x86_64/ck_pr.h" 3 -__attribute__((unused)) static uintptr_t ck_pr_faa_ptr(void *target, uintptr_t d) -{ - __asm__ __volatile__("lock " "xaddq" " %1, %0" : "+m" (*(char *)target), "+q" (d) : : "memory", "cc"); - return (d); -} - - - -__attribute__((unused)) static char ck_pr_faa_char(char *target, char d) -{ - __asm__ __volatile__("lock " "xaddb" " %1, %0" : "+m" (*(char *)target), "+q" (d) : : "memory", "cc"); - return (d); -} -__attribute__((unused)) static unsigned int ck_pr_faa_uint(unsigned int *target, unsigned int d) -{ - __asm__ __volatile__("lock " "xaddl" " %1, %0" : "+m" (*(unsigned int *)target), "+q" (d) : : "memory", "cc"); - return (d); -} -__attribute__((unused)) static int ck_pr_faa_int(int *target, int d) -{ - __asm__ __volatile__("lock " "xaddl" " %1, %0" : "+m" (*(int *)target), "+q" (d) : : "memory", "cc"); - return (d); -} -__attribute__((unused)) static uint64_t ck_pr_faa_64(uint64_t *target, uint64_t d) -{ - __asm__ __volatile__("lock " "xaddq" " %1, %0" : "+m" (*(uint64_t *)target), "+q" (d) : : "memory", "cc"); - return (d); -} -__attribute__((unused)) static uint32_t ck_pr_faa_32(uint32_t *target, uint32_t d) -{ - __asm__ __volatile__("lock " "xaddl" " %1, %0" : "+m" (*(uint32_t *)target), "+q" (d) : : "memory", "cc"); - return (d); -} -__attribute__((unused)) static uint16_t ck_pr_faa_16(uint16_t *target, uint16_t d) -{ - __asm__ __volatile__("lock " "xaddw" " %1, %0" : "+m" (*(uint16_t *)target), "+q" (d) : : "memory", "cc"); - return (d); -} -__attribute__((unused)) static uint8_t ck_pr_faa_8(uint8_t *target, uint8_t d) -{ - __asm__ __volatile__("lock " "xaddb" " %1, %0" : "+m" (*(uint8_t *)target), "+q" (d) : : "memory", "cc"); - return (d); -} -# 332 "/usr/local/include/gcc/x86_64/ck_pr.h" 3 -__attribute__((unused)) static void ck_pr_inc_ptr(void *target) -{ - __asm__ __volatile__("lock " "inc" "q" " %0" : "+m" (*(char *)target) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_inc_ptr_zero(void *target, _Bool *r) -{ - __asm__ __volatile__("lock " "inc" "q" " %0; setz %1" : "+m" (*(char *)target), "=m" (*r) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_inc_char(char *target) -{ - __asm__ __volatile__("lock " "inc" "b" " %0" : "+m" (*(char *)target) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_inc_char_zero(char *target, _Bool *r) -{ - __asm__ __volatile__("lock " "inc" "b" " %0; setz %1" : "+m" (*(char *)target), "=m" (*r) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_inc_int(int *target) -{ - __asm__ __volatile__("lock " "inc" "l" " %0" : "+m" (*(int *)target) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_inc_int_zero(int *target, _Bool *r) -{ - __asm__ __volatile__("lock " "inc" "l" " %0; setz %1" : "+m" (*(int *)target), "=m" (*r) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_inc_uint(unsigned int *target) -{ - __asm__ __volatile__("lock " "inc" "l" " %0" : "+m" (*(unsigned int *)target) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_inc_uint_zero(unsigned int *target, _Bool *r) -{ - __asm__ __volatile__("lock " "inc" "l" " %0; setz %1" : "+m" (*(unsigned int *)target), "=m" (*r) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_inc_64(uint64_t *target) -{ - __asm__ __volatile__("lock " "inc" "q" " %0" : "+m" (*(uint64_t *)target) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_inc_64_zero(uint64_t *target, _Bool *r) -{ - __asm__ __volatile__("lock " "inc" "q" " %0; setz %1" : "+m" (*(uint64_t *)target), "=m" (*r) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_inc_32(uint32_t *target) -{ - __asm__ __volatile__("lock " "inc" "l" " %0" : "+m" (*(uint32_t *)target) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_inc_32_zero(uint32_t *target, _Bool *r) -{ - __asm__ __volatile__("lock " "inc" "l" " %0; setz %1" : "+m" (*(uint32_t *)target), "=m" (*r) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_inc_16(uint16_t *target) -{ - __asm__ __volatile__("lock " "inc" "w" " %0" : "+m" (*(uint16_t *)target) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_inc_16_zero(uint16_t *target, _Bool *r) -{ - __asm__ __volatile__("lock " "inc" "w" " %0; setz %1" : "+m" (*(uint16_t *)target), "=m" (*r) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_inc_8(uint8_t *target) -{ - __asm__ __volatile__("lock " "inc" "b" " %0" : "+m" (*(uint8_t *)target) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_inc_8_zero(uint8_t *target, _Bool *r) -{ - __asm__ __volatile__("lock " "inc" "b" " %0; setz %1" : "+m" (*(uint8_t *)target), "=m" (*r) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_dec_ptr(void *target) -{ - __asm__ __volatile__("lock " "dec" "q" " %0" : "+m" (*(char *)target) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_dec_ptr_zero(void *target, _Bool *r) -{ - __asm__ __volatile__("lock " "dec" "q" " %0; setz %1" : "+m" (*(char *)target), "=m" (*r) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_dec_char(char *target) -{ - __asm__ __volatile__("lock " "dec" "b" " %0" : "+m" (*(char *)target) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_dec_char_zero(char *target, _Bool *r) -{ - __asm__ __volatile__("lock " "dec" "b" " %0; setz %1" : "+m" (*(char *)target), "=m" (*r) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_dec_int(int *target) -{ - __asm__ __volatile__("lock " "dec" "l" " %0" : "+m" (*(int *)target) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_dec_int_zero(int *target, _Bool *r) -{ - __asm__ __volatile__("lock " "dec" "l" " %0; setz %1" : "+m" (*(int *)target), "=m" (*r) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_dec_uint(unsigned int *target) -{ - __asm__ __volatile__("lock " "dec" "l" " %0" : "+m" (*(unsigned int *)target) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_dec_uint_zero(unsigned int *target, _Bool *r) -{ - __asm__ __volatile__("lock " "dec" "l" " %0; setz %1" : "+m" (*(unsigned int *)target), "=m" (*r) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_dec_64(uint64_t *target) -{ - __asm__ __volatile__("lock " "dec" "q" " %0" : "+m" (*(uint64_t *)target) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_dec_64_zero(uint64_t *target, _Bool *r) -{ - __asm__ __volatile__("lock " "dec" "q" " %0; setz %1" : "+m" (*(uint64_t *)target), "=m" (*r) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_dec_32(uint32_t *target) -{ - __asm__ __volatile__("lock " "dec" "l" " %0" : "+m" (*(uint32_t *)target) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_dec_32_zero(uint32_t *target, _Bool *r) -{ - __asm__ __volatile__("lock " "dec" "l" " %0; setz %1" : "+m" (*(uint32_t *)target), "=m" (*r) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_dec_16(uint16_t *target) -{ - __asm__ __volatile__("lock " "dec" "w" " %0" : "+m" (*(uint16_t *)target) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_dec_16_zero(uint16_t *target, _Bool *r) -{ - __asm__ __volatile__("lock " "dec" "w" " %0; setz %1" : "+m" (*(uint16_t *)target), "=m" (*r) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_dec_8(uint8_t *target) -{ - __asm__ __volatile__("lock " "dec" "b" " %0" : "+m" (*(uint8_t *)target) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_dec_8_zero(uint8_t *target, _Bool *r) -{ - __asm__ __volatile__("lock " "dec" "b" " %0; setz %1" : "+m" (*(uint8_t *)target), "=m" (*r) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_neg_ptr(void *target) -{ - __asm__ __volatile__("lock " "neg" "q" " %0" : "+m" (*(char *)target) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_neg_ptr_zero(void *target, _Bool *r) -{ - __asm__ __volatile__("lock " "neg" "q" " %0; setz %1" : "+m" (*(char *)target), "=m" (*r) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_neg_char(char *target) -{ - __asm__ __volatile__("lock " "neg" "b" " %0" : "+m" (*(char *)target) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_neg_char_zero(char *target, _Bool *r) -{ - __asm__ __volatile__("lock " "neg" "b" " %0; setz %1" : "+m" (*(char *)target), "=m" (*r) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_neg_int(int *target) -{ - __asm__ __volatile__("lock " "neg" "l" " %0" : "+m" (*(int *)target) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_neg_int_zero(int *target, _Bool *r) -{ - __asm__ __volatile__("lock " "neg" "l" " %0; setz %1" : "+m" (*(int *)target), "=m" (*r) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_neg_uint(unsigned int *target) -{ - __asm__ __volatile__("lock " "neg" "l" " %0" : "+m" (*(unsigned int *)target) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_neg_uint_zero(unsigned int *target, _Bool *r) -{ - __asm__ __volatile__("lock " "neg" "l" " %0; setz %1" : "+m" (*(unsigned int *)target), "=m" (*r) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_neg_64(uint64_t *target) -{ - __asm__ __volatile__("lock " "neg" "q" " %0" : "+m" (*(uint64_t *)target) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_neg_64_zero(uint64_t *target, _Bool *r) -{ - __asm__ __volatile__("lock " "neg" "q" " %0; setz %1" : "+m" (*(uint64_t *)target), "=m" (*r) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_neg_32(uint32_t *target) -{ - __asm__ __volatile__("lock " "neg" "l" " %0" : "+m" (*(uint32_t *)target) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_neg_32_zero(uint32_t *target, _Bool *r) -{ - __asm__ __volatile__("lock " "neg" "l" " %0; setz %1" : "+m" (*(uint32_t *)target), "=m" (*r) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_neg_16(uint16_t *target) -{ - __asm__ __volatile__("lock " "neg" "w" " %0" : "+m" (*(uint16_t *)target) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_neg_16_zero(uint16_t *target, _Bool *r) -{ - __asm__ __volatile__("lock " "neg" "w" " %0; setz %1" : "+m" (*(uint16_t *)target), "=m" (*r) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_neg_8(uint8_t *target) -{ - __asm__ __volatile__("lock " "neg" "b" " %0" : "+m" (*(uint8_t *)target) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_neg_8_zero(uint8_t *target, _Bool *r) -{ - __asm__ __volatile__("lock " "neg" "b" " %0; setz %1" : "+m" (*(uint8_t *)target), "=m" (*r) : : "memory", "cc"); - return; -} - - - - -__attribute__((unused)) static void ck_pr_not_ptr(void *target) -{ - __asm__ __volatile__("lock " "not" "q" " %0" : "+m" (*(char *)target) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_not_char(char *target) -{ - __asm__ __volatile__("lock " "not" "b" " %0" : "+m" (*(char *)target) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_not_int(int *target) -{ - __asm__ __volatile__("lock " "not" "l" " %0" : "+m" (*(int *)target) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_not_uint(unsigned int *target) -{ - __asm__ __volatile__("lock " "not" "l" " %0" : "+m" (*(unsigned int *)target) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_not_64(uint64_t *target) -{ - __asm__ __volatile__("lock " "not" "q" " %0" : "+m" (*(uint64_t *)target) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_not_32(uint32_t *target) -{ - __asm__ __volatile__("lock " "not" "l" " %0" : "+m" (*(uint32_t *)target) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_not_16(uint16_t *target) -{ - __asm__ __volatile__("lock " "not" "w" " %0" : "+m" (*(uint16_t *)target) : : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_not_8(uint8_t *target) -{ - __asm__ __volatile__("lock " "not" "b" " %0" : "+m" (*(uint8_t *)target) : : "memory", "cc"); - return; -} -# 373 "/usr/local/include/gcc/x86_64/ck_pr.h" 3 -__attribute__((unused)) static void ck_pr_add_ptr(void *target, uintptr_t d) -{ - __asm__ __volatile__("lock " "add" "q" " %1, %0" : "+m" (*(char *)target) : "Z" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_add_char(char *target, char d) -{ - __asm__ __volatile__("lock " "add" "b" " %1, %0" : "+m" (*(char *)target) : "e" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_add_int(int *target, int d) -{ - __asm__ __volatile__("lock " "add" "l" " %1, %0" : "+m" (*(int *)target) : "e" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_add_uint(unsigned int *target, unsigned int d) -{ - __asm__ __volatile__("lock " "add" "l" " %1, %0" : "+m" (*(unsigned int *)target) : "Z" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_add_64(uint64_t *target, uint64_t d) -{ - __asm__ __volatile__("lock " "add" "q" " %1, %0" : "+m" (*(uint64_t *)target) : "Z" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_add_32(uint32_t *target, uint32_t d) -{ - __asm__ __volatile__("lock " "add" "l" " %1, %0" : "+m" (*(uint32_t *)target) : "Z" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_add_16(uint16_t *target, uint16_t d) -{ - __asm__ __volatile__("lock " "add" "w" " %1, %0" : "+m" (*(uint16_t *)target) : "Z" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_add_8(uint8_t *target, uint8_t d) -{ - __asm__ __volatile__("lock " "add" "b" " %1, %0" : "+m" (*(uint8_t *)target) : "Z" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_sub_ptr(void *target, uintptr_t d) -{ - __asm__ __volatile__("lock " "sub" "q" " %1, %0" : "+m" (*(char *)target) : "Z" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_sub_char(char *target, char d) -{ - __asm__ __volatile__("lock " "sub" "b" " %1, %0" : "+m" (*(char *)target) : "e" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_sub_int(int *target, int d) -{ - __asm__ __volatile__("lock " "sub" "l" " %1, %0" : "+m" (*(int *)target) : "e" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_sub_uint(unsigned int *target, unsigned int d) -{ - __asm__ __volatile__("lock " "sub" "l" " %1, %0" : "+m" (*(unsigned int *)target) : "Z" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_sub_64(uint64_t *target, uint64_t d) -{ - __asm__ __volatile__("lock " "sub" "q" " %1, %0" : "+m" (*(uint64_t *)target) : "Z" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_sub_32(uint32_t *target, uint32_t d) -{ - __asm__ __volatile__("lock " "sub" "l" " %1, %0" : "+m" (*(uint32_t *)target) : "Z" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_sub_16(uint16_t *target, uint16_t d) -{ - __asm__ __volatile__("lock " "sub" "w" " %1, %0" : "+m" (*(uint16_t *)target) : "Z" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_sub_8(uint8_t *target, uint8_t d) -{ - __asm__ __volatile__("lock " "sub" "b" " %1, %0" : "+m" (*(uint8_t *)target) : "Z" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_and_ptr(void *target, uintptr_t d) -{ - __asm__ __volatile__("lock " "and" "q" " %1, %0" : "+m" (*(char *)target) : "Z" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_and_char(char *target, char d) -{ - __asm__ __volatile__("lock " "and" "b" " %1, %0" : "+m" (*(char *)target) : "e" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_and_int(int *target, int d) -{ - __asm__ __volatile__("lock " "and" "l" " %1, %0" : "+m" (*(int *)target) : "e" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_and_uint(unsigned int *target, unsigned int d) -{ - __asm__ __volatile__("lock " "and" "l" " %1, %0" : "+m" (*(unsigned int *)target) : "Z" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_and_64(uint64_t *target, uint64_t d) -{ - __asm__ __volatile__("lock " "and" "q" " %1, %0" : "+m" (*(uint64_t *)target) : "Z" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_and_32(uint32_t *target, uint32_t d) -{ - __asm__ __volatile__("lock " "and" "l" " %1, %0" : "+m" (*(uint32_t *)target) : "Z" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_and_16(uint16_t *target, uint16_t d) -{ - __asm__ __volatile__("lock " "and" "w" " %1, %0" : "+m" (*(uint16_t *)target) : "Z" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_and_8(uint8_t *target, uint8_t d) -{ - __asm__ __volatile__("lock " "and" "b" " %1, %0" : "+m" (*(uint8_t *)target) : "Z" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_or_ptr(void *target, uintptr_t d) -{ - __asm__ __volatile__("lock " "or" "q" " %1, %0" : "+m" (*(char *)target) : "Z" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_or_char(char *target, char d) -{ - __asm__ __volatile__("lock " "or" "b" " %1, %0" : "+m" (*(char *)target) : "e" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_or_int(int *target, int d) -{ - __asm__ __volatile__("lock " "or" "l" " %1, %0" : "+m" (*(int *)target) : "e" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_or_uint(unsigned int *target, unsigned int d) -{ - __asm__ __volatile__("lock " "or" "l" " %1, %0" : "+m" (*(unsigned int *)target) : "Z" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_or_64(uint64_t *target, uint64_t d) -{ - __asm__ __volatile__("lock " "or" "q" " %1, %0" : "+m" (*(uint64_t *)target) : "Z" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_or_32(uint32_t *target, uint32_t d) -{ - __asm__ __volatile__("lock " "or" "l" " %1, %0" : "+m" (*(uint32_t *)target) : "Z" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_or_16(uint16_t *target, uint16_t d) -{ - __asm__ __volatile__("lock " "or" "w" " %1, %0" : "+m" (*(uint16_t *)target) : "Z" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_or_8(uint8_t *target, uint8_t d) -{ - __asm__ __volatile__("lock " "or" "b" " %1, %0" : "+m" (*(uint8_t *)target) : "Z" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_xor_ptr(void *target, uintptr_t d) -{ - __asm__ __volatile__("lock " "xor" "q" " %1, %0" : "+m" (*(char *)target) : "Z" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_xor_char(char *target, char d) -{ - __asm__ __volatile__("lock " "xor" "b" " %1, %0" : "+m" (*(char *)target) : "e" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_xor_int(int *target, int d) -{ - __asm__ __volatile__("lock " "xor" "l" " %1, %0" : "+m" (*(int *)target) : "e" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_xor_uint(unsigned int *target, unsigned int d) -{ - __asm__ __volatile__("lock " "xor" "l" " %1, %0" : "+m" (*(unsigned int *)target) : "Z" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_xor_64(uint64_t *target, uint64_t d) -{ - __asm__ __volatile__("lock " "xor" "q" " %1, %0" : "+m" (*(uint64_t *)target) : "Z" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_xor_32(uint32_t *target, uint32_t d) -{ - __asm__ __volatile__("lock " "xor" "l" " %1, %0" : "+m" (*(uint32_t *)target) : "Z" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_xor_16(uint16_t *target, uint16_t d) -{ - __asm__ __volatile__("lock " "xor" "w" " %1, %0" : "+m" (*(uint16_t *)target) : "Z" "q" (d) : "memory", "cc"); - return; -} -__attribute__((unused)) static void ck_pr_xor_8(uint8_t *target, uint8_t d) -{ - __asm__ __volatile__("lock " "xor" "b" " %1, %0" : "+m" (*(uint8_t *)target) : "Z" "q" (d) : "memory", "cc"); - return; -} -# 400 "/usr/local/include/gcc/x86_64/ck_pr.h" 3 -__attribute__((unused)) static _Bool ck_pr_cas_ptr(void *target, void * compare, void * set) -{ - _Bool z; - __asm__ __volatile__("lock " "cmpxchgq" " %2, %0; setz %1" : "+m" (*(char *)target), "=a" (z) : "q" (set), "a" (compare) : "memory", "cc"); - return z; -} - - - -__attribute__((unused)) static _Bool ck_pr_cas_char(char *target, char compare, char set) -{ - _Bool z; - __asm__ __volatile__("lock " "cmpxchgb" " %2, %0; setz %1" : "+m" (*(char *)target), "=a" (z) : "q" (set), "a" (compare) : "memory", "cc"); - return z; -} -__attribute__((unused)) static _Bool ck_pr_cas_int(int *target, int compare, int set) -{ - _Bool z; - __asm__ __volatile__("lock " "cmpxchgl" " %2, %0; setz %1" : "+m" (*(int *)target), "=a" (z) : "q" (set), "a" (compare) : "memory", "cc"); - return z; -} -__attribute__((unused)) static _Bool ck_pr_cas_uint(unsigned int *target, unsigned int compare, unsigned int set) -{ - _Bool z; - __asm__ __volatile__("lock " "cmpxchgl" " %2, %0; setz %1" : "+m" (*(unsigned int *)target), "=a" (z) : "q" (set), "a" (compare) : "memory", "cc"); - return z; -} -__attribute__((unused)) static _Bool ck_pr_cas_double(double *target, double compare, double set) -{ - _Bool z; - __asm__ __volatile__("lock " "cmpxchgq" " %2, %0; setz %1" : "+m" (*(double *)target), "=a" (z) : "q" (set), "a" (compare) : "memory", "cc"); - return z; -} -__attribute__((unused)) static _Bool ck_pr_cas_64(uint64_t *target, uint64_t compare, uint64_t set) -{ - _Bool z; - __asm__ __volatile__("lock " "cmpxchgq" " %2, %0; setz %1" : "+m" (*(uint64_t *)target), "=a" (z) : "q" (set), "a" (compare) : "memory", "cc"); - return z; -} -__attribute__((unused)) static _Bool ck_pr_cas_32(uint32_t *target, uint32_t compare, uint32_t set) -{ - _Bool z; - __asm__ __volatile__("lock " "cmpxchgl" " %2, %0; setz %1" : "+m" (*(uint32_t *)target), "=a" (z) : "q" (set), "a" (compare) : "memory", "cc"); - return z; -} -__attribute__((unused)) static _Bool ck_pr_cas_16(uint16_t *target, uint16_t compare, uint16_t set) -{ - _Bool z; - __asm__ __volatile__("lock " "cmpxchgw" " %2, %0; setz %1" : "+m" (*(uint16_t *)target), "=a" (z) : "q" (set), "a" (compare) : "memory", "cc"); - return z; -} -__attribute__((unused)) static _Bool ck_pr_cas_8(uint8_t *target, uint8_t compare, uint8_t set) -{ - _Bool z; - __asm__ __volatile__("lock " "cmpxchgb" " %2, %0; setz %1" : "+m" (*(uint8_t *)target), "=a" (z) : "q" (set), "a" (compare) : "memory", "cc"); - return z; -} -# 436 "/usr/local/include/gcc/x86_64/ck_pr.h" 3 -__attribute__((unused)) static _Bool ck_pr_cas_ptr_value(void *target, void * compare, void * set, void *v) -{ - _Bool z; - __asm__ __volatile__("lock " "cmpxchg" "q" " %3, %0;" "mov %% " "rax" ", %2;" "setz %1;" : "+m" (*(char *)target), "=a" (z), "=m" (*(char *)v) : "q" (set), "a" (compare) : "memory", "cc"); - return z; -} - - - - -__attribute__((unused)) static _Bool ck_pr_cas_char_value(char *target, char compare, char set, char *v) -{ - _Bool z; - __asm__ __volatile__("lock " "cmpxchg" "b" " %3, %0;" "mov %% " "al" ", %2;" "setz %1;" : "+m" (*(char *)target), "=a" (z), "=m" (*(char *)v) : "q" (set), "a" (compare) : "memory", "cc"); - return z; -} -__attribute__((unused)) static _Bool ck_pr_cas_int_value(int *target, int compare, int set, int *v) -{ - _Bool z; - __asm__ __volatile__("lock " "cmpxchg" "l" " %3, %0;" "mov %% " "eax" ", %2;" "setz %1;" : "+m" (*(int *)target), "=a" (z), "=m" (*(int *)v) : "q" (set), "a" (compare) : "memory", "cc"); - return z; -} -__attribute__((unused)) static _Bool ck_pr_cas_uint_value(unsigned int *target, unsigned int compare, unsigned int set, unsigned int *v) -{ - _Bool z; - __asm__ __volatile__("lock " "cmpxchg" "l" " %3, %0;" "mov %% " "eax" ", %2;" "setz %1;" : "+m" (*(unsigned int *)target), "=a" (z), "=m" (*(unsigned int *)v) : "q" (set), "a" (compare) : "memory", "cc"); - return z; -} -__attribute__((unused)) static _Bool ck_pr_cas_double_value(double *target, double compare, double set, double *v) -{ - _Bool z; - __asm__ __volatile__("lock " "cmpxchg" "q" " %3, %0;" "mov %% " "rax" ", %2;" "setz %1;" : "+m" (*(double *)target), "=a" (z), "=m" (*(double *)v) : "q" (set), "a" (compare) : "memory", "cc"); - return z; -} -__attribute__((unused)) static _Bool ck_pr_cas_64_value(uint64_t *target, uint64_t compare, uint64_t set, uint64_t *v) -{ - _Bool z; - __asm__ __volatile__("lock " "cmpxchg" "q" " %3, %0;" "mov %% " "rax" ", %2;" "setz %1;" : "+m" (*(uint64_t *)target), "=a" (z), "=m" (*(uint64_t *)v) : "q" (set), "a" (compare) : "memory", "cc"); - return z; -} -__attribute__((unused)) static _Bool ck_pr_cas_32_value(uint32_t *target, uint32_t compare, uint32_t set, uint32_t *v) -{ - _Bool z; - __asm__ __volatile__("lock " "cmpxchg" "l" " %3, %0;" "mov %% " "eax" ", %2;" "setz %1;" : "+m" (*(uint32_t *)target), "=a" (z), "=m" (*(uint32_t *)v) : "q" (set), "a" (compare) : "memory", "cc"); - return z; -} -__attribute__((unused)) static _Bool ck_pr_cas_16_value(uint16_t *target, uint16_t compare, uint16_t set, uint16_t *v) -{ - _Bool z; - __asm__ __volatile__("lock " "cmpxchg" "w" " %3, %0;" "mov %% " "ax" ", %2;" "setz %1;" : "+m" (*(uint16_t *)target), "=a" (z), "=m" (*(uint16_t *)v) : "q" (set), "a" (compare) : "memory", "cc"); - return z; -} -__attribute__((unused)) static _Bool ck_pr_cas_8_value(uint8_t *target, uint8_t compare, uint8_t set, uint8_t *v) -{ - _Bool z; - __asm__ __volatile__("lock " "cmpxchg" "b" " %3, %0;" "mov %% " "al" ", %2;" "setz %1;" : "+m" (*(uint8_t *)target), "=a" (z), "=m" (*(uint8_t *)v) : "q" (set), "a" (compare) : "memory", "cc"); - return z; -} - - - - - - - -__attribute__((unused)) static _Bool -ck_pr_cas_64_2(uint64_t target[2], uint64_t compare[2], uint64_t set[2]) -{ - _Bool z; - - __asm__ __volatile__("movq 0(%4), %%rax;" - "movq 8(%4), %%rdx;" - "lock " "cmpxchg16b %0; setz %1" - : "+m" (*target), - "=q" (z) - : "b" (set[0]), - "c" (set[1]), - "q" (compare) - : "memory", "cc", "%rax", "%rdx"); - return z; -} - -__attribute__((unused)) static _Bool -ck_pr_cas_ptr_2(void *t, void *c, void *s) -{ - return ck_pr_cas_64_2(t, - c, - s); -} - -__attribute__((unused)) static _Bool -ck_pr_cas_64_2_value(uint64_t target[2], - uint64_t compare[2], - uint64_t set[2], - uint64_t v[2]) -{ - _Bool z; - - __asm__ __volatile__("lock " "cmpxchg16b %0;" - "setz %3" - : "+m" (*target), - "=a" (v[0]), - "=d" (v[1]), - "=q" (z) - : "a" (compare[0]), - "d" (compare[1]), - "b" (set[0]), - "c" (set[1]) - : "memory", "cc"); - return z; -} - -__attribute__((unused)) static _Bool -ck_pr_cas_ptr_2_value(void *t, void *c, void *s, void *v) -{ - return ck_pr_cas_64_2_value(t, - c, - s, - v); -} -# 529 "/usr/local/include/gcc/x86_64/ck_pr.h" 3 -__attribute__((unused)) static _Bool ck_pr_cas_double_2(double t[2], double c[2], double s[2]) -{ - return ck_pr_cas_64_2((uint64_t *)(void *)t, (uint64_t *)(void *)c, (uint64_t *)(void *)s); -} -__attribute__((unused)) static _Bool ck_pr_cas_double_2_value(double *t, double c[2], double s[2], double *v) -{ - return ck_pr_cas_64_2_value((uint64_t *)(void *)t, (uint64_t *)(void *)c, (uint64_t *)(void *)s, (uint64_t *)(void *)v); -} -__attribute__((unused)) static _Bool ck_pr_cas_char_16(char t[16], char c[16], char s[16]) -{ - return ck_pr_cas_64_2((uint64_t *)(void *)t, (uint64_t *)(void *)c, (uint64_t *)(void *)s); -} -__attribute__((unused)) static _Bool ck_pr_cas_char_16_value(char *t, char c[16], char s[16], char *v) -{ - return ck_pr_cas_64_2_value((uint64_t *)(void *)t, (uint64_t *)(void *)c, (uint64_t *)(void *)s, (uint64_t *)(void *)v); -} -__attribute__((unused)) static _Bool ck_pr_cas_int_4(int t[4], int c[4], int s[4]) -{ - return ck_pr_cas_64_2((uint64_t *)(void *)t, (uint64_t *)(void *)c, (uint64_t *)(void *)s); -} -__attribute__((unused)) static _Bool ck_pr_cas_int_4_value(int *t, int c[4], int s[4], int *v) -{ - return ck_pr_cas_64_2_value((uint64_t *)(void *)t, (uint64_t *)(void *)c, (uint64_t *)(void *)s, (uint64_t *)(void *)v); -} -__attribute__((unused)) static _Bool ck_pr_cas_uint_4(unsigned int t[4], unsigned int c[4], unsigned int s[4]) -{ - return ck_pr_cas_64_2((uint64_t *)(void *)t, (uint64_t *)(void *)c, (uint64_t *)(void *)s); -} -__attribute__((unused)) static _Bool ck_pr_cas_uint_4_value(unsigned int *t, unsigned int c[4], unsigned int s[4], unsigned int *v) -{ - return ck_pr_cas_64_2_value((uint64_t *)(void *)t, (uint64_t *)(void *)c, (uint64_t *)(void *)s, (uint64_t *)(void *)v); -} -__attribute__((unused)) static _Bool ck_pr_cas_32_4(uint32_t t[4], uint32_t c[4], uint32_t s[4]) -{ - return ck_pr_cas_64_2((uint64_t *)(void *)t, (uint64_t *)(void *)c, (uint64_t *)(void *)s); -} -__attribute__((unused)) static _Bool ck_pr_cas_32_4_value(uint32_t *t, uint32_t c[4], uint32_t s[4], uint32_t *v) -{ - return ck_pr_cas_64_2_value((uint64_t *)(void *)t, (uint64_t *)(void *)c, (uint64_t *)(void *)s, (uint64_t *)(void *)v); -} -__attribute__((unused)) static _Bool ck_pr_cas_16_8(uint16_t t[8], uint16_t c[8], uint16_t s[8]) -{ - return ck_pr_cas_64_2((uint64_t *)(void *)t, (uint64_t *)(void *)c, (uint64_t *)(void *)s); -} -__attribute__((unused)) static _Bool ck_pr_cas_16_8_value(uint16_t *t, uint16_t c[8], uint16_t s[8], uint16_t *v) -{ - return ck_pr_cas_64_2_value((uint64_t *)(void *)t, (uint64_t *)(void *)c, (uint64_t *)(void *)s, (uint64_t *)(void *)v); -} -__attribute__((unused)) static _Bool ck_pr_cas_8_16(uint8_t t[16], uint8_t c[16], uint8_t s[16]) -{ - return ck_pr_cas_64_2((uint64_t *)(void *)t, (uint64_t *)(void *)c, (uint64_t *)(void *)s); -} -__attribute__((unused)) static _Bool ck_pr_cas_8_16_value(uint8_t *t, uint8_t c[16], uint8_t s[16], uint8_t *v) -{ - return ck_pr_cas_64_2_value((uint64_t *)(void *)t, (uint64_t *)(void *)c, (uint64_t *)(void *)s, (uint64_t *)(void *)v); -} -# 565 "/usr/local/include/gcc/x86_64/ck_pr.h" 3 -__attribute__((unused)) static _Bool ck_pr_btc_ptr(void *target, unsigned int b) -{ - _Bool c; - __asm__ __volatile__("lock " "btc" "q %2, %0" "; setc %1" : "+m" (*(char *)target), "=q" (c) : "q" ((uint64_t)b) : "memory", "cc"); - return c; -} -__attribute__((unused)) static _Bool ck_pr_btc_uint(unsigned int *target, unsigned int b) -{ - _Bool c; - __asm__ __volatile__("lock " "btc" "l %2, %0" "; setc %1" : "+m" (*(unsigned int *)target), "=q" (c) : "q" ((unsigned int)b) : "memory", "cc"); - return c; -} -__attribute__((unused)) static _Bool ck_pr_btc_int(int *target, unsigned int b) -{ - _Bool c; - __asm__ __volatile__("lock " "btc" "l %2, %0" "; setc %1" : "+m" (*(int *)target), "=q" (c) : "q" ((int)b) : "memory", "cc"); - return c; -} -__attribute__((unused)) static _Bool ck_pr_btc_64(uint64_t *target, unsigned int b) -{ - _Bool c; - __asm__ __volatile__("lock " "btc" "q %2, %0" "; setc %1" : "+m" (*(uint64_t *)target), "=q" (c) : "q" ((uint64_t)b) : "memory", "cc"); - return c; -} -__attribute__((unused)) static _Bool ck_pr_btc_32(uint32_t *target, unsigned int b) -{ - _Bool c; - __asm__ __volatile__("lock " "btc" "l %2, %0" "; setc %1" : "+m" (*(uint32_t *)target), "=q" (c) : "q" ((uint32_t)b) : "memory", "cc"); - return c; -} -__attribute__((unused)) static _Bool ck_pr_btc_16(uint16_t *target, unsigned int b) -{ - _Bool c; - __asm__ __volatile__("lock " "btc" "w %w2, %0" "; setc %1" : "+m" (*(uint16_t *)target), "=q" (c) : "q" ((uint16_t)b) : "memory", "cc"); - return c; -} -__attribute__((unused)) static _Bool ck_pr_bts_ptr(void *target, unsigned int b) -{ - _Bool c; - __asm__ __volatile__("lock " "bts" "q %2, %0" "; setc %1" : "+m" (*(char *)target), "=q" (c) : "q" ((uint64_t)b) : "memory", "cc"); - return c; -} -__attribute__((unused)) static _Bool ck_pr_bts_uint(unsigned int *target, unsigned int b) -{ - _Bool c; - __asm__ __volatile__("lock " "bts" "l %2, %0" "; setc %1" : "+m" (*(unsigned int *)target), "=q" (c) : "q" ((unsigned int)b) : "memory", "cc"); - return c; -} -__attribute__((unused)) static _Bool ck_pr_bts_int(int *target, unsigned int b) -{ - _Bool c; - __asm__ __volatile__("lock " "bts" "l %2, %0" "; setc %1" : "+m" (*(int *)target), "=q" (c) : "q" ((int)b) : "memory", "cc"); - return c; -} -__attribute__((unused)) static _Bool ck_pr_bts_64(uint64_t *target, unsigned int b) -{ - _Bool c; - __asm__ __volatile__("lock " "bts" "q %2, %0" "; setc %1" : "+m" (*(uint64_t *)target), "=q" (c) : "q" ((uint64_t)b) : "memory", "cc"); - return c; -} -__attribute__((unused)) static _Bool ck_pr_bts_32(uint32_t *target, unsigned int b) -{ - _Bool c; - __asm__ __volatile__("lock " "bts" "l %2, %0" "; setc %1" : "+m" (*(uint32_t *)target), "=q" (c) : "q" ((uint32_t)b) : "memory", "cc"); - return c; -} -__attribute__((unused)) static _Bool ck_pr_bts_16(uint16_t *target, unsigned int b) -{ - _Bool c; - __asm__ __volatile__("lock " "bts" "w %w2, %0" "; setc %1" : "+m" (*(uint16_t *)target), "=q" (c) : "q" ((uint16_t)b) : "memory", "cc"); - return c; -} -__attribute__((unused)) static _Bool ck_pr_btr_ptr(void *target, unsigned int b) -{ - _Bool c; - __asm__ __volatile__("lock " "btr" "q %2, %0" "; setc %1" : "+m" (*(char *)target), "=q" (c) : "q" ((uint64_t)b) : "memory", "cc"); - return c; -} -__attribute__((unused)) static _Bool ck_pr_btr_uint(unsigned int *target, unsigned int b) -{ - _Bool c; - __asm__ __volatile__("lock " "btr" "l %2, %0" "; setc %1" : "+m" (*(unsigned int *)target), "=q" (c) : "q" ((unsigned int)b) : "memory", "cc"); - return c; -} -__attribute__((unused)) static _Bool ck_pr_btr_int(int *target, unsigned int b) -{ - _Bool c; - __asm__ __volatile__("lock " "btr" "l %2, %0" "; setc %1" : "+m" (*(int *)target), "=q" (c) : "q" ((int)b) : "memory", "cc"); - return c; -} -__attribute__((unused)) static _Bool ck_pr_btr_64(uint64_t *target, unsigned int b) -{ - _Bool c; - __asm__ __volatile__("lock " "btr" "q %2, %0" "; setc %1" : "+m" (*(uint64_t *)target), "=q" (c) : "q" ((uint64_t)b) : "memory", "cc"); - return c; -} -__attribute__((unused)) static _Bool ck_pr_btr_32(uint32_t *target, unsigned int b) -{ - _Bool c; - __asm__ __volatile__("lock " "btr" "l %2, %0" "; setc %1" : "+m" (*(uint32_t *)target), "=q" (c) : "q" ((uint32_t)b) : "memory", "cc"); - return c; -} -__attribute__((unused)) static _Bool ck_pr_btr_16(uint16_t *target, unsigned int b) -{ - _Bool c; - __asm__ __volatile__("lock " "btr" "w %w2, %0" "; setc %1" : "+m" (*(uint16_t *)target), "=q" (c) : "q" ((uint16_t)b) : "memory", "cc"); - return c; -} -# 40 "/usr/local/include/ck_pr.h" 2 3 -# 56 "/usr/local/include/ck_pr.h" 3 -# 1 "/usr/local/include/gcc/ck_pr.h" 1 3 -# 36 "/usr/local/include/gcc/ck_pr.h" 3 -__attribute__((unused)) static void -ck_pr_barrier(void) -{ - - __asm__ __volatile__("" ::: "memory"); - return; -} -# 57 "/usr/local/include/ck_pr.h" 2 3 -# 78 "/usr/local/include/ck_pr.h" 3 -__attribute__((unused)) static void ck_pr_fence_load_depends(void) -{ - ck_pr_barrier(); - return; -} -# 128 "/usr/local/include/ck_pr.h" 3 -__attribute__((unused)) static void ck_pr_fence_atomic(void) -{ - ck_pr_barrier(); - return; -} -__attribute__((unused)) static void ck_pr_fence_atomic_load(void) -{ - ck_pr_barrier(); - return; -} -__attribute__((unused)) static void ck_pr_fence_atomic_store(void) -{ - ck_pr_barrier(); - return; -} -__attribute__((unused)) static void ck_pr_fence_store_atomic(void) -{ - ck_pr_barrier(); - return; -} -__attribute__((unused)) static void ck_pr_fence_load_atomic(void) -{ - ck_pr_barrier(); - return; -} -__attribute__((unused)) static void ck_pr_fence_load_store(void) -{ - ck_pr_barrier(); - return; -} -__attribute__((unused)) static void ck_pr_fence_store_load(void) -{ - ck_pr_fence_strict_store_load(); - return; -} -__attribute__((unused)) static void ck_pr_fence_load(void) -{ - ck_pr_barrier(); - return; -} -__attribute__((unused)) static void ck_pr_fence_store(void) -{ - ck_pr_barrier(); - return; -} -__attribute__((unused)) static void ck_pr_fence_memory(void) -{ - ck_pr_barrier(); - return; -} -__attribute__((unused)) static void ck_pr_fence_acquire(void) -{ - ck_pr_barrier(); - return; -} -__attribute__((unused)) static void ck_pr_fence_release(void) -{ - ck_pr_barrier(); - return; -} -__attribute__((unused)) static void ck_pr_fence_lock(void) -{ - ck_pr_barrier(); - return; -} -__attribute__((unused)) static void ck_pr_fence_unlock(void) -{ - ck_pr_barrier(); - return; -} -# 277 "/usr/local/include/ck_pr.h" 3 -__attribute__((unused)) static void ck_pr_add_double(double *target, double value) -{ - double previous; - double punt; - punt = ck_pr_md_load_double(target); - previous = (double)punt; - while (ck_pr_cas_double_value(target, (double)previous, (double)(previous + value), &previous) == 0) ck_pr_stall(); - return; -} - - - - -__attribute__((unused)) static void ck_pr_sub_double(double *target, double value) -{ - double previous; - double punt; - punt = ck_pr_md_load_double(target); - previous = (double)punt; - while (ck_pr_cas_double_value(target, (double)previous, (double)(previous - value), &previous) == 0) ck_pr_stall(); - return; -} -# 677 "/usr/local/include/ck_pr.h" 3 -__attribute__((unused)) static void ck_pr_inc_double(double *target) -{ - ck_pr_add_double(target, (double)1); - return; -} - - - - -__attribute__((unused)) static void ck_pr_dec_double(double *target) -{ - ck_pr_sub_double(target, (double)1); - return; -} -# 916 "/usr/local/include/ck_pr.h" 3 -__attribute__((unused)) static void ck_pr_neg_double(double *target) -{ - double previous; - double punt; - punt = (double)ck_pr_md_load_double(target); - previous = (double)punt; - while (ck_pr_cas_double_value(target, (double)previous, (double)(- previous), &previous) == 0) ck_pr_stall(); - return; -} -# 1107 "/usr/local/include/ck_pr.h" 3 -__attribute__((unused)) static double ck_pr_faa_double(double *target, double delta) -{ - double previous; - double punt; - punt = (double)ck_pr_md_load_double(target); - previous = (double)punt; - while (ck_pr_cas_double_value(target, (double)previous, (double)(previous + delta), &previous) == 0) ck_pr_stall(); - return ((double)previous); -} -# 103 "rtapi/rtapi.h" 2 - - - - - - - - - -# 1 "rtapi/rtapi_global.h" 1 -# 64 "rtapi/rtapi_global.h" -# 1 "rtapi/rtapi_shmkeys.h" 1 -# 65 "rtapi/rtapi_global.h" 2 -# 1 "rtapi/rtapi_bitops.h" 1 -# 48 "rtapi/rtapi_bitops.h" -typedef unsigned long rtapi_atomic_type; -# 75 "rtapi/rtapi_bitops.h" -static inline int rtapi_test_and_set_bit(int nr, rtapi_atomic_type *bitmap) -{ - return (__atomic_fetch_or(bitmap + ((nr) / (8 * sizeof(rtapi_atomic_type))), - (1UL << ((nr) % (8 * sizeof(rtapi_atomic_type)))), - 5) - & (1UL << ((nr) % (8 * sizeof(rtapi_atomic_type))))) != 0; -} - -static inline rtapi_atomic_type rtapi_test_and_clear_bit(int nr, rtapi_atomic_type * bitmap) -{ - return (__atomic_fetch_and(bitmap + ((nr) / (8 * sizeof(rtapi_atomic_type))), - ~(1UL << ((nr) % (8 * sizeof(rtapi_atomic_type)))), - 5) - & (1UL << ((nr) % (8 * sizeof(rtapi_atomic_type))))) != 0; -} - -static inline void rtapi_set_bit(int nr, rtapi_atomic_type * bitmap) -{ - __atomic_or_fetch(bitmap + ((nr) / (8 * sizeof(rtapi_atomic_type))), - (1UL << ((nr) % (8 * sizeof(rtapi_atomic_type)))), - 5); -} - -static inline void rtapi_clear_bit(int nr, rtapi_atomic_type * bitmap) -{ - __atomic_and_fetch(bitmap + ((nr) / (8 * sizeof(rtapi_atomic_type))), - ~(1UL << ((nr) % (8 * sizeof(rtapi_atomic_type)))), - 5); -} - -static inline rtapi_atomic_type rtapi_test_bit(int nr, rtapi_atomic_type * const bitmap) -{ - return (__atomic_fetch_or(bitmap + ((nr) / (8 * sizeof(rtapi_atomic_type))), - 0, - 5) - & (1UL << ((nr) % (8 * sizeof(rtapi_atomic_type))))) != 0; -} - -static inline rtapi_atomic_type rtapi_add_and_fetch(int delta, - rtapi_atomic_type * const value) -{ - return __atomic_add_fetch (value, delta, 5); -} - -static inline rtapi_atomic_type rtapi_subtract_and_fetch(int delta, - rtapi_atomic_type * const value) -{ - return __atomic_sub_fetch (value, delta, 5); -} -# 66 "rtapi/rtapi_global.h" 2 -# 1 "rtapi/rtapi_exception.h" 1 -# 22 "rtapi/rtapi_exception.h" -typedef void * exc_register_t; - - - - -typedef enum { - RTAPI_EXCEPTION_NONE=0, - - - RTAI_RTE_TMROVRN, - - RTAI_RTE_UNBLKD, - RTAI_RTE_UNCLASSIFIED, - RTAI_TRAP, - - - XK_TRAP, - XK_TRAP_BUG, - XK_ETIMEDOUT, - - XK_EWOULDBLOCK, - XK_EINTR, - XK_EPERM, - XK_UNDOCUMENTED, - - - XU_SIGXCPU, - XU_SIGXCPU_BUG, - XU_ETIMEDOUT, - XU_EWOULDBLOCK, - XU_EINTR, - XU_EPERM, - XU_UNDOCUMENTED, - - - RTP_DEADLINE_MISSED, - - RTAPI_EXCEPTION_LAST, - -} rtapi_exception_t; -# 74 "rtapi/rtapi_exception.h" -typedef struct { - - int trap_errors; - - - - int modeswitches; - int ctxswitches; - int pagefaults; - long long exectime; - unsigned status; - - - - int wait_errors; - int total_overruns; - - - - -} xenomai_stats_t; - -typedef struct { - int wait_errors; -} rtai_stats_t; - -typedef struct { - - int wait_errors; - - - long utime_sec; - long utime_usec; - - long stime_sec; - long stime_usec; - - long ru_minflt; - long ru_majflt; - long ru_nsignals; - long ru_nivcsw; - - long startup_ru_minflt; - long startup_ru_majflt; - long startup_ru_nivcsw; - -} rtprempt_stats_t; - - - -typedef struct { - - int num_updates; - - - - - - - int api_errors; - int other_errors; - - - union { - xenomai_stats_t xeno; - rtai_stats_t rtai; - rtprempt_stats_t rtpreempt; - } flavor; -} rtapi_threadstatus_t; - - - - -typedef struct { - - unsigned event; - unsigned domid; - exc_register_t ip; - exc_register_t sp; - int pid; - int errcode; - - - unsigned long overruns; - - - void *siginfo; - -} xenomai_exception_t; - -typedef struct { - - unsigned vector; - int signo; - exc_register_t ip; - -} rtai_exception_t; - -typedef struct { - - - void *siginfo; -} rtpreempt_exception_t; - - - - -typedef struct { - int task_id; - int error_code; - - - union { - - xenomai_exception_t xeno; - - rtai_exception_t rtai; - - - rtpreempt_exception_t rtpreempt; - } flavor; -} rtapi_exception_detail_t; -# 206 "rtapi/rtapi_exception.h" -typedef int (*rtapi_exception_handler_t) (rtapi_exception_t type, - - - rtapi_exception_detail_t *, - rtapi_threadstatus_t *); -# 67 "rtapi/rtapi_global.h" 2 -# 1 "rtapi/ring.h" 1 -# 65 "rtapi/ring.h" -# 1 "rtapi/rtapi_mbarrier.h" 1 -# 66 "rtapi/ring.h" 2 -# 1 "rtapi/rtapi_string.h" 1 -# 39 "rtapi/rtapi_string.h" -# 1 "/usr/include/string.h" 1 3 4 -# 27 "/usr/include/string.h" 3 4 - - - - - -# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include/stddef.h" 1 3 4 -# 33 "/usr/include/string.h" 2 3 4 -# 44 "/usr/include/string.h" 3 4 - - -extern void *memcpy (void *__restrict __dest, const void *__restrict __src, - size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); - - -extern void *memmove (void *__dest, const void *__src, size_t __n) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); - - - - - - -extern void *memccpy (void *__restrict __dest, const void *__restrict __src, - int __c, size_t __n) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); - - - - - -extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); - - -extern int memcmp (const void *__s1, const void *__s2, size_t __n) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); -# 96 "/usr/include/string.h" 3 4 -extern void *memchr (const void *__s, int __c, size_t __n) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); - - -# 110 "/usr/include/string.h" 3 4 -extern void *rawmemchr (const void *__s, int __c) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); -# 121 "/usr/include/string.h" 3 4 -extern void *memrchr (const void *__s, int __c, size_t __n) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); - - - - - - -extern char *strcpy (char *__restrict __dest, const char *__restrict __src) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); - -extern char *strncpy (char *__restrict __dest, - const char *__restrict __src, size_t __n) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); - - -extern char *strcat (char *__restrict __dest, const char *__restrict __src) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); - -extern char *strncat (char *__restrict __dest, const char *__restrict __src, - size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); - - -extern int strcmp (const char *__s1, const char *__s2) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); - -extern int strncmp (const char *__s1, const char *__s2, size_t __n) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); - - -extern int strcoll (const char *__s1, const char *__s2) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); - -extern size_t strxfrm (char *__restrict __dest, - const char *__restrict __src, size_t __n) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); - - - - - - -# 1 "/usr/include/xlocale.h" 1 3 4 -# 27 "/usr/include/xlocale.h" 3 4 -typedef struct __locale_struct { - - struct __locale_data *__locales[13]; - - - const unsigned short int *__ctype_b; - const int *__ctype_tolower; - const int *__ctype_toupper; - - - const char *__names[13]; -} *__locale_t; - - -typedef __locale_t locale_t; -# 164 "/usr/include/string.h" 2 3 4 - - -extern int strcoll_l (const char *__s1, const char *__s2, __locale_t __l) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); - -extern size_t strxfrm_l (char *__dest, const char *__src, size_t __n, - __locale_t __l) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 4))); - - - - - -extern char *strdup (const char *__s) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); - - - - - - -extern char *strndup (const char *__string, size_t __n) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); -# 211 "/usr/include/string.h" 3 4 - -# 236 "/usr/include/string.h" 3 4 -extern char *strchr (const char *__s, int __c) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); -# 263 "/usr/include/string.h" 3 4 -extern char *strrchr (const char *__s, int __c) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); - - -# 277 "/usr/include/string.h" 3 4 -extern char *strchrnul (const char *__s, int __c) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); - - - - - - -extern size_t strcspn (const char *__s, const char *__reject) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); - - -extern size_t strspn (const char *__s, const char *__accept) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); -# 315 "/usr/include/string.h" 3 4 -extern char *strpbrk (const char *__s, const char *__accept) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); -# 342 "/usr/include/string.h" 3 4 -extern char *strstr (const char *__haystack, const char *__needle) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); - - - - -extern char *strtok (char *__restrict __s, const char *__restrict __delim) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); - - - - -extern char *__strtok_r (char *__restrict __s, - const char *__restrict __delim, - char **__restrict __save_ptr) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3))); - -extern char *strtok_r (char *__restrict __s, const char *__restrict __delim, - char **__restrict __save_ptr) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3))); -# 373 "/usr/include/string.h" 3 4 -extern char *strcasestr (const char *__haystack, const char *__needle) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); - - - - - - - -extern void *memmem (const void *__haystack, size_t __haystacklen, - const void *__needle, size_t __needlelen) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3))); - - - -extern void *__mempcpy (void *__restrict __dest, - const void *__restrict __src, size_t __n) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); -extern void *mempcpy (void *__restrict __dest, - const void *__restrict __src, size_t __n) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); - - - - - -extern size_t strlen (const char *__s) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); - - - - - -extern size_t strnlen (const char *__string, size_t __maxlen) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); - - - - - -extern char *strerror (int __errnum) __attribute__ ((__nothrow__ , __leaf__)); - -# 438 "/usr/include/string.h" 3 4 -extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) ; - - - - - -extern char *strerror_l (int __errnum, __locale_t __l) __attribute__ ((__nothrow__ , __leaf__)); - - - - - -extern void __bzero (void *__s, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); - - - -extern void bcopy (const void *__src, void *__dest, size_t __n) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); - - -extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); - - -extern int bcmp (const void *__s1, const void *__s2, size_t __n) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); -# 489 "/usr/include/string.h" 3 4 -extern char *index (const char *__s, int __c) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); -# 517 "/usr/include/string.h" 3 4 -extern char *rindex (const char *__s, int __c) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); - - - - -extern int ffs (int __i) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); - - - - -extern int ffsl (long int __l) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); -__extension__ extern int ffsll (long long int __ll) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); - - - -extern int strcasecmp (const char *__s1, const char *__s2) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); - - -extern int strncasecmp (const char *__s1, const char *__s2, size_t __n) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); - - - - - -extern int strcasecmp_l (const char *__s1, const char *__s2, - __locale_t __loc) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); - -extern int strncasecmp_l (const char *__s1, const char *__s2, - size_t __n, __locale_t __loc) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4))); - - - - - -extern char *strsep (char **__restrict __stringp, - const char *__restrict __delim) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); - - - - -extern char *strsignal (int __sig) __attribute__ ((__nothrow__ , __leaf__)); - - -extern char *__stpcpy (char *__restrict __dest, const char *__restrict __src) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); -extern char *stpcpy (char *__restrict __dest, const char *__restrict __src) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); - - - -extern char *__stpncpy (char *__restrict __dest, - const char *__restrict __src, size_t __n) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); -extern char *stpncpy (char *__restrict __dest, - const char *__restrict __src, size_t __n) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); - - - - -extern int strverscmp (const char *__s1, const char *__s2) -__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); - - -extern char *strfry (char *__string) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); - - -extern void *memfrob (void *__s, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); -# 604 "/usr/include/string.h" 3 4 -extern char *basename (const char *__filename) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); -# 644 "/usr/include/string.h" 3 4 - -# 40 "rtapi/rtapi_string.h" 2 -# 67 "rtapi/ring.h" 2 - - - - - - - -typedef __s32 ring_size_t; - -typedef struct { - size_t tail __attribute__((aligned(16))); - __u8 scratchpad_buf[0]; -} ringtrailer_t; - - - - - - - -typedef enum { - RINGTYPE_RECORD = 0, - RINGTYPE_MULTIPART = (1UL << (0)), - RINGTYPE_STREAM = (1UL << (1)), - RINGTYPE_ANY = ((1UL << (0))|(1UL << (1))), - RINGTYPE_MASK = ((1UL << (0))|(1UL << (1))) -} ring_type_t; - - - -typedef enum { - USE_RMUTEX = (1UL << (2)), - USE_WMUTEX = (1UL << (3)), - ALLOC_HALMEM = (1UL << (4)), -} ring_mode_flags_t; - -typedef struct { - __u8 type : 2; - __u8 use_rmutex : 1; - __u8 use_wmutex : 1; - - - - - - - __u8 alloc_halmem : 1; - - __u32 userflags : 27; - - __s32 refcount; - __s32 reader, writer; - __s32 reader_instance, writer_instance; - rtapi_atomic_type rmutex, wmutex; - size_t trailer_size; - size_t size_mask; - size_t size; - size_t head __attribute__((aligned(16))); - __u64 generation; - __u8 buf[0]; -} ringheader_t; -# 137 "rtapi/ring.h" -typedef struct { - __s32 magic; - ringheader_t *header; - ringtrailer_t *trailer; - __u8 *buf; - void *scratchpad; -} ringbuffer_t; - -static inline int ringbuffer_attached(ringbuffer_t *rb) -{ - return (rb->magic == 0x74737769); -} - - -typedef struct { - const ringbuffer_t *ring; - __u64 generation; - size_t offset; -} ringiter_t; - -typedef struct { - const void *rv_base; - size_t rv_len; - __u32 rv_flags; -} ringvec_t; -# 171 "rtapi/ring.h" -static inline ring_size_t size_aligned(const ring_size_t x) -{ - return x + (-x & (8 - 1)); -} - - - -static unsigned inline next_power_of_two(unsigned v) -{ - v--; - v |= v >> 1; - v |= v >> 2; - v |= v >> 4; - v |= v >> 8; - v |= v >> 16; - v++; - return v; -} - -static inline size_t ring_storage_alloc(int flags, size_t size) -{ - if ((flags & RINGTYPE_MASK) == RINGTYPE_STREAM) { - - return next_power_of_two(size); - } else { - - - return size_aligned(size); - } -} - -static inline size_t ring_trailer_alloc(size_t sp_size) -{ - return size_aligned(sizeof(ringtrailer_t) + sp_size); -} - - - -static inline size_t ring_memsize(int flags, size_t size, size_t sp_size) -{ - return sizeof(ringheader_t) + - ring_storage_alloc(flags, size) + - ring_trailer_alloc(sp_size); -} - -static inline int ring_refcount(ringheader_t *ringheader) -{ - return ringheader->refcount; -} - -static inline ringtrailer_t *_trailer_from_header(const ringheader_t *ringheader) -{ - return (ringtrailer_t *) ((char *)ringheader->buf + ringheader->size); -} - -static inline size_t ring_scratchpad_size(ringbuffer_t *ring) -{ - return ring->header->trailer_size - sizeof(ringtrailer_t); -} - - - - -static inline void ringheader_init(ringheader_t *ringheader, int flags, - size_t size, size_t sp_size) -{ - ringtrailer_t *t; - - - - - - - ringheader->size = ring_storage_alloc(flags,size); - ringheader->trailer_size = ring_trailer_alloc(sp_size); - - - ringheader->rmutex = ringheader->wmutex = 0; - ringheader->reader = ringheader->writer = 0; - ringheader->reader_instance = ringheader->writer_instance = 0; - ringheader->head = 0; - t = _trailer_from_header(ringheader); - t->tail = 0; - ringheader->type = (flags & RINGTYPE_MASK); - - - if (flags & RINGTYPE_STREAM) { - ringheader->size_mask = ringheader->size -1; - } else { - ringheader->generation = 0; - } - ringheader->refcount = 1; -} - - - - - -static inline void ringbuffer_init(ringheader_t *ringheader, ringbuffer_t *ring) -{ - - ring->header = ringheader; - ring->trailer = _trailer_from_header(ringheader); - ring->buf = &ringheader->buf[0]; - - - - if (ring_scratchpad_size(ring)) - ring->scratchpad = ring->trailer->scratchpad_buf; - else - ring->scratchpad = ((void *)0); - ring->magic = 0x74737769; -} -# 300 "rtapi/ring.h" -static inline ring_size_t * _size_at(const ringbuffer_t *ring, const size_t off) -{ - return (ring_size_t *) (ring->buf + off); -} - - - -static inline size_t record_usage(const size_t record_size) -{ - return size_aligned(record_size + sizeof(ring_size_t)); -} -# 337 "rtapi/ring.h" -static inline int record_write_begin(ringbuffer_t *ring, void ** data, size_t sz) -{ - size_t free; - ringheader_t *h = ring->header; - ringtrailer_t *t = ring->trailer; - size_t a = size_aligned(sz + sizeof(ring_size_t)); - - - if (a > h->size) - return 34; - - free = (h->size + h->head - t->tail - 1) % h->size + 1; - - - - if (free <= a) return 11; - - - if (t->tail + a > h->size) { - - - if (h->head <= a) - - return 11; - - - *data = _size_at(ring, 0) + 1; - return 0; - } - - *data = _size_at(ring, t->tail) + 1; - return 0; -} -# 378 "rtapi/ring.h" -static inline int record_write_end(ringbuffer_t *ring, void * data, size_t sz) -{ - ringheader_t *h = ring->header; - ringtrailer_t *t = ring->trailer; - - size_t a = size_aligned(sz + sizeof(ring_size_t)); - - - if (data == _size_at(ring, 0) + 1) { - - - *_size_at(ring, t->tail) = -1; - t->tail = 0; - } - - *_size_at(ring, t->tail) = sz; - - - - - __sync_synchronize(); - - t->tail = (t->tail + a) % h->size; - - return 0; -} -# 414 "rtapi/ring.h" -static inline int record_write(ringbuffer_t *ring, void * data, size_t sz) -{ - void * ptr; - int r = record_write_begin(ring, &ptr, sz); - if (r) return r; - memmove(ptr, data, sz); - return record_write_end(ring, ptr, sz); -} - - - - - - -static inline int _ring_read_at(const ringbuffer_t *ring, size_t offset, - const void **data, size_t *size) -{ - ring_size_t *sz; - ringtrailer_t *t = ring->trailer; - - if (offset == t->tail) - - return 11; - - - __sync_synchronize(); - - sz = _size_at(ring, offset); - if (*sz < 0) - - return _ring_read_at(ring, 0, data, size); - - - *size = *sz; - *data = sz + 1; - return 0; -} -# 463 "rtapi/ring.h" -static inline int record_read(const ringbuffer_t *ring, const void **data, size_t *size) -{ - return _ring_read_at(ring, ring->header->head, data, size); -} - - - - - - -static inline const void *record_next(ringbuffer_t *ring) -{ - const void *data; - size_t size; - if (record_read(ring, &data, &size)) return 0; - return data; -} -# 488 "rtapi/ring.h" -static inline ring_size_t record_next_size(ringbuffer_t *ring) -{ - const void *data; - size_t size; - if (record_read(ring, &data, &size)) return -1; - return size; -} -# 507 "rtapi/ring.h" -static inline size_t record_write_space(const ringheader_t *h) -{ - int avail = 0; - ringtrailer_t *t = _trailer_from_header(h); - - if (t->tail < h->head) - avail = h->head - t->tail; - else - avail = (((h->head) > (h->size - t->tail))?(h->head):(h->size - t->tail)); - return (((0) > (avail - (2 * 8)))?(0):(avail - (2 * 8))); -} -# 529 "rtapi/ring.h" -static inline size_t record_space(size_t element) -{ - return size_aligned(element + sizeof(ring_size_t)); -} - - - -static inline ring_size_t _ring_shift_offset(const ringbuffer_t *ring, size_t offset) -{ - ring_size_t size; - ringheader_t *h = ring->header; - ringtrailer_t *t = ring->trailer; - - if (h->head == t->tail) - return -1; - - - - - __sync_synchronize(); - - size = *_size_at(ring, offset); - if (size < 0) - return _ring_shift_offset(ring, 0); - size = size_aligned(size + sizeof(ring_size_t)); - return (offset + size) % h->size; -} -# 578 "rtapi/ring.h" -static inline int record_shift(ringbuffer_t *ring) -{ - ring_size_t off = _ring_shift_offset(ring, ring->header->head); - if (off < 0) return 11; - ring->header->generation++; - ring->header->head = off; - return 0; -} - - - - - -static inline int record_flush(ringbuffer_t *ring) -{ - int count = 0; - - while (!record_shift(ring)) - count++; - return count; -} -# 629 "rtapi/ring.h" -static inline int record_iter_init(const ringbuffer_t *ring, - ringiter_t *iter) -{ - iter->ring = ring; - iter->generation = ring->header->generation; - iter->offset = ring->header->head; - if (ring->header->generation != iter->generation) - return 11; - return 0; -} - -static inline int record_iter_invalid(const ringiter_t *iter) -{ - if (iter->ring->header->generation > iter->generation) - return 22; - return 0; -} - -static inline int record_iter_shift(ringiter_t *iter) -{ - ring_size_t off; - - if (record_iter_invalid(iter)) return 22; - off = _ring_shift_offset(iter->ring, iter->offset); - if (off < 0) return 11; - iter->generation++; - iter->offset = off; - return 0; -} - -static inline int record_iter_read(const ringiter_t *iter, - const void **data, size_t *size) -{ - if (record_iter_invalid(iter)) return 22; - - - return _ring_read_at(iter->ring, iter->offset, data, size); -} - - - -static inline int ring_isstream(ringbuffer_t *ring) -{ - return (ring->header->type == RINGTYPE_STREAM); -} - -static inline int ring_ismultipart(ringbuffer_t *ring) -{ - return (ring->header->type == RINGTYPE_MULTIPART); -} - - -static inline int ring_use_wmutex(ringbuffer_t *ring) -{ - return ring->header->use_wmutex ; -} - -static inline int ring_use_rmutex(ringbuffer_t *ring) -{ - return ring->header->use_rmutex; -} -# 789 "rtapi/ring.h" -static inline size_t stream_get_read_vector(const ringbuffer_t *ring, - ringvec_t *vec) -{ - size_t free_cnt; - size_t cnt2; - size_t w, r; - ringheader_t *h = ring->header; - ringtrailer_t *t = ring->trailer; - - w = t->tail; - r = h->head; - - if (w > r) { - free_cnt = w - r; - } else { - free_cnt = (w - r + h->size) & h->size_mask; - } - cnt2 = r + free_cnt; - if (cnt2 > h->size) { - - - vec[0].rv_base = (void *) &(ring->buf[r]); - vec[0].rv_len = h->size - r; - vec[1].rv_base = (void *) ring->buf; - vec[1].rv_len = cnt2 & h->size_mask; - - } else { - - vec[0].rv_base = (void *) &(ring->buf[r]); - vec[0].rv_len = free_cnt; - vec[1].rv_len = 0; - vec[1].rv_base = ((void *)0); - } - return vec[0].rv_len + vec[1].rv_len; -} - - - - - - -static inline void stream_get_write_vector(const ringbuffer_t *ring, - ringvec_t *vec) -{ - size_t free_cnt; - size_t cnt2; - size_t w, r; - ringheader_t *h = ring->header; - ringtrailer_t *t = ring->trailer; - - w = t->tail; - r = h->head; - - if (w > r) { - free_cnt = ((r - w + h->size) & h->size_mask) - 1; - } else if (w < r) { - free_cnt = (r - w) - 1; - } else { - free_cnt = h->size - 1; - } - cnt2 = w + free_cnt; - if (cnt2 > h->size) { - - - vec[0].rv_base = (void *) &(ring->buf[w]); - vec[0].rv_len = h->size - w; - vec[1].rv_base = (void *) ring->buf; - vec[1].rv_len = cnt2 & h->size_mask; - } else { - vec[0].rv_base = (void *) &(ring->buf[w]); - vec[0].rv_len = free_cnt; - vec[1].rv_len = 0; - } - if (free_cnt) - __sync_synchronize(); -} - - - - - - -static inline size_t stream_read_space(const ringheader_t *h) -{ - size_t w, r; - ringtrailer_t *t = _trailer_from_header(h); - - w = t->tail; - r = h->head; - if (w > r) { - return w - r; - } else { - return (w - r + h->size) & h->size_mask; - } -} - - - - -static inline size_t stream_read(ringbuffer_t *ring, char *dest, size_t cnt) -{ - size_t free_cnt; - size_t cnt2; - size_t to_read; - size_t n1, n2; - ringheader_t *h = ring->header; - - if ((free_cnt = stream_read_space (h)) == 0) { - return 0; - } - to_read = cnt > free_cnt ? free_cnt : cnt; - cnt2 = h->head + to_read; - if (cnt2 > h->size) { - n1 = h->size - h->head; - n2 = cnt2 & h->size_mask; - } else { - n1 = to_read; - n2 = 0; - } - memcpy (dest, &(ring->buf[h->head]), n1); - h->head = (h->head + n1) & h->size_mask; - - if (n2) { - memcpy (dest + n1, &(ring->buf[h->head]), n2); - h->head = (h->head + n2) & h->size_mask; - } - return to_read; -} - - - - - - -static inline size_t stream_peek(ringbuffer_t *ring, char *dest, size_t cnt) -{ - size_t free_cnt; - size_t cnt2; - size_t to_read; - size_t n1, n2; - size_t tmp_head; - ringheader_t *h = ring->header; - - tmp_head = h->head; - if ((free_cnt = stream_read_space (h)) == 0) { - return 0; - } - to_read = cnt > free_cnt ? free_cnt : cnt; - cnt2 = tmp_head + to_read; - if (cnt2 > h->size) { - n1 = h->size - tmp_head; - n2 = cnt2 & h->size_mask; - } else { - n1 = to_read; - n2 = 0; - } - memcpy (dest, &(ring->buf[tmp_head]), n1); - tmp_head = (tmp_head + n1) & h->size_mask; - - if (n2) { - memcpy (dest + n1, &(ring->buf[tmp_head]), n2); - } - return to_read; -} - - - -static inline void stream_read_advance(ringbuffer_t *ring, size_t cnt) -{ - size_t tmp; - ringheader_t *h = ring->header; - - - - - - __sync_synchronize(); - tmp = (h->head + cnt) & h->size_mask; - h->head = tmp; -} - - - - - - -static inline size_t stream_flush(ringbuffer_t *ring) -{ - size_t left = stream_read_space(ring->header); - if (left > 0) - stream_read_advance(ring, left); - return left; -} - - - - - -static inline size_t stream_write_space(const ringheader_t *h) -{ - size_t w, r; - ringtrailer_t *t = _trailer_from_header(h); - - w = t->tail; - r = h->head; - if (w > r) { - return ((r - w + h->size) & h->size_mask) - 1; - } else if (w < r) { - return (r - w) - 1; - } else { - return h->size - 1; - } -} - - - - -static inline size_t stream_write(ringbuffer_t *ring, const char *src, - size_t cnt) -{ - size_t free_cnt; - size_t cnt2; - size_t to_write; - size_t n1, n2; - ringheader_t *h = ring->header; - ringtrailer_t *t = ring->trailer; - - if ((free_cnt = stream_write_space (h)) == 0) { - return 0; - } - to_write = cnt > free_cnt ? free_cnt : cnt; - cnt2 = t->tail + to_write; - if (cnt2 > h->size) { - n1 = h->size - t->tail; - n2 = cnt2 & h->size_mask; - } else { - n1 = to_write; - n2 = 0; - } - memcpy (&(ring->buf[t->tail]), src, n1); - t->tail = (t->tail + n1) & h->size_mask; - if (n2) { - memcpy (&(ring->buf[t->tail]), src + n1, n2); - t->tail = (t->tail + n2) & h->size_mask; - } - return to_write; -} - - -static inline void stream_write_advance(ringbuffer_t *ring, size_t cnt) -{ - size_t tmp; - ringheader_t *h = ring->header; - ringtrailer_t *t = ring->trailer; - - - - - __sync_synchronize(); - tmp = (t->tail + cnt) & h->size_mask; - t->tail = tmp; -} -# 68 "rtapi/rtapi_global.h" 2 -# 1 "rtapi/rtapi_heap.h" 1 -# 14 "rtapi/rtapi_heap.h" - - - -# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include/stdarg.h" 1 3 4 -# 40 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include/stdarg.h" 3 4 -typedef __builtin_va_list __gnuc_va_list; -# 98 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include/stdarg.h" 3 4 -typedef __gnuc_va_list va_list; -# 18 "rtapi/rtapi_heap.h" 2 - - - - - - - -struct rtapi_heap; -struct rtapi_heap_stat { - size_t arena_size; - size_t total_avail; - size_t fragments; - size_t largest; - size_t requested; - size_t allocated; - size_t freed; -}; - -void *_rtapi_malloc_aligned(struct rtapi_heap *h, size_t nbytes, size_t align); -void *_rtapi_malloc(struct rtapi_heap *h, size_t nbytes); -void *_rtapi_calloc(struct rtapi_heap *h, size_t n, size_t size); -void *_rtapi_realloc(struct rtapi_heap *h, void *p, size_t size); -void _rtapi_free(struct rtapi_heap *h, void *p); -size_t _rtapi_allocsize(struct rtapi_heap *h, const void *ap); -int _rtapi_heap_init(struct rtapi_heap *h, const char *name); - - -int _rtapi_heap_addmem(struct rtapi_heap *h, void *space, size_t size); - -int _rtapi_heap_setflags(struct rtapi_heap *heap, int flags); -size_t _rtapi_heap_status(struct rtapi_heap *h, struct rtapi_heap_stat *hs); - - -typedef void (*chunk_t)(size_t size, void *chunk, void *user); -size_t _rtapi_heap_walk_freelist(struct rtapi_heap *h, chunk_t cb, void *user); - - -# 69 "rtapi/rtapi_global.h" 2 -# 1 "rtapi/rtapi_heap_private.h" 1 - - - -# 1 "rtapi/rtapi.h" 1 -# 5 "rtapi/rtapi_heap_private.h" 2 -# 28 "rtapi/rtapi_heap_private.h" -typedef struct rtapi_malloc_align { - double _align[1]; -} rtapi_malloc_align_t; - - - - - -typedef struct rtapi_malloc_tag { - uint32_t size : 24; - uint32_t attr : 8; -} rtapi_malloc_tag_t; - -union rtapi_malloc_header { - struct hdr { - uint32_t next; - rtapi_malloc_tag_t tag; - } s; - rtapi_malloc_align_t align; -}; - -typedef union rtapi_malloc_header rtapi_malloc_hdr_t; - -struct rtapi_heap { - rtapi_malloc_hdr_t base; - size_t free_p; - size_t arena_size; - rtapi_atomic_type mutex; - int flags; - size_t requested; - size_t allocated; - int freed; - char name[16]; -}; - -static inline void *heap_ptr(struct rtapi_heap *base, size_t offset) -{ - return ((unsigned char *)base + offset); -} - -static inline size_t heap_off(struct rtapi_heap *base, void *p) -{ - return ((unsigned char *)p - (unsigned char *)base); -} -# 70 "rtapi/rtapi_global.h" 2 - - - - - - -typedef struct { - unsigned magic; - int layout_version; - unsigned long mutex; - - size_t global_segment_size; - - - - int instance_id; - int rtapi_thread_flavor; - - - int rt_msg_level; - int user_msg_level; - rtapi_atomic_type next_handle; - int hal_size; - int hal_thread_stack_size; - - - - - - int hal_descriptor_alignment; - - - - - int hal_heap_flags; - - - - - unsigned char service_uuid[16]; - - int rtapi_app_pid; - int rtapi_msgd_pid; - - - rtapi_threadstatus_t thread_status[64 + 1]; - - - int error_ring_full; - int error_ring_locked; - - - - - int rtapi_messages_ptr; - - - struct rtapi_heap heap; - - - unsigned char arena[0] __attribute__((aligned((64)))); - -} global_data_t; - -extern global_data_t *global_data; -# 113 "rtapi/rtapi.h" 2 -# 1 "rtapi/rtapi_heap.h" 1 -# 114 "rtapi/rtapi.h" 2 -# 1 "rtapi/rtapi_exception.h" 1 -# 115 "rtapi/rtapi.h" 2 - - - - - -# 137 "rtapi/rtapi.h" -static inline int is_aligned(const void *pointer, size_t byte_count) -{ - return (uintptr_t)pointer % byte_count == 0; -} -# 151 "rtapi/rtapi.h" -typedef __s32 shmoff_t; - - - -static inline void *shm_ptr(const void *base, const shmoff_t offset) -{ - return ((char *)base + offset); -} -static inline shmoff_t shm_off(const void *base, const void *p) -{ - return ((char *)p - (char *)base); -} -# 181 "rtapi/rtapi.h" -typedef int (*rtapi_init_t)(const char *); - - -extern int _rtapi_init(const char *modname); -# 196 "rtapi/rtapi.h" -typedef int (*rtapi_exit_t)(int); - - -extern int _rtapi_exit(int module_id); - - - - -typedef int (*rtapi_next_handle_t)(void); - - -extern int _rtapi_next_handle(void); - - - - - -typedef void * (*rtapi_malloc_t)(struct rtapi_heap *h, size_t nbytes); - - - -typedef void * (*rtapi_malloc_aligned_t)(struct rtapi_heap *h, - size_t nbytes, - size_t align); - - - -typedef void * (*rtapi_calloc_t)(struct rtapi_heap *h, size_t n, size_t size); - - - -typedef void * (*rtapi_realloc_t)(struct rtapi_heap *h, void *p, size_t size); - - - -typedef void (*rtapi_free_t)(struct rtapi_heap *h, void *p); - - - -typedef size_t (*rtapi_allocsize_t)(struct rtapi_heap *h, const void *p); - - - -typedef int (*rtapi_heap_init_t)(struct rtapi_heap *h, const char *name); - - - - -typedef int (*rtapi_heap_addmem_t)(struct rtapi_heap *h, void *space, size_t size); - - - -typedef size_t (*rtapi_heap_status_t)(struct rtapi_heap *h, struct rtapi_heap_stat *hs); - - - -typedef int (*rtapi_heap_setflags_t)(struct rtapi_heap *h, int flags); - - - -typedef size_t (*rtapi_heap_walk_freelist_t)(struct rtapi_heap *h, - chunk_t cb, void *user); -# 279 "rtapi/rtapi.h" -int rtapi_argvize(int avsize, char **av, char *s); -# 290 "rtapi/rtapi.h" -extern int rtapi_snprintf(char *buf, unsigned long int size, - const char *fmt, ...) -__attribute__((format(printf,3,4))); -# 303 "rtapi/rtapi.h" -extern int rtapi_vsnprintf(char *buf, unsigned long size, - const char *fmt, va_list ap); -# 319 "rtapi/rtapi.h" -extern void rtapi_print(const char *fmt, ...) -__attribute__((format(printf,1,2))); - - - - - - -typedef enum { - RTAPI_MSG_NONE = 0, - RTAPI_MSG_ERR, - RTAPI_MSG_WARN, - RTAPI_MSG_INFO, - RTAPI_MSG_DBG, - RTAPI_MSG_ALL -} msg_level_t; - -extern void rtapi_print_msg(int level, const char *fmt, ...) -__attribute__((format(printf,2,3))); - - -void rtapi_print_loc(const int level, - const char *func, - const int line, - const char *topic, - const char *fmt, ...) -__attribute__((format(printf,5,6))); - - -const char *rtapi_last_msg(void); -# 417 "rtapi/rtapi.h" -extern int rtapi_set_msg_level(int level); - - -extern int rtapi_get_msg_level(void); -# 431 "rtapi/rtapi.h" -typedef void(*rtapi_msg_handler_t)(msg_level_t level, const char *fmt, - va_list ap); - - -typedef void (*rtapi_set_msg_handler_t)(rtapi_msg_handler_t); - -extern void rtapi_set_msg_handler(rtapi_msg_handler_t handler); - -typedef rtapi_msg_handler_t (*rtapi_get_msg_handler_t)(void); - -extern rtapi_msg_handler_t rtapi_get_msg_handler(void); - -extern int rtapi_set_logtag(const char *fmt, ...); -extern const char *rtapi_get_logtag(void); - -typedef enum { - MSG_KERNEL = 0, - MSG_RTUSER = 1, - MSG_ULAPI = 2, -} msg_origin_t; - - - -int vs_ringlogfv(const msg_level_t level, - const int pid, - const msg_origin_t origin, - const char *tag, - const char *format, - va_list ap); - - - -typedef struct { - msg_origin_t origin; - int pid; - int level; - char tag[16]; - char buf[0]; -} rtapi_msgheader_t; -# 480 "rtapi/rtapi.h" -# 1 "/usr/include/sched.h" 1 3 4 -# 25 "/usr/include/sched.h" 3 4 -# 1 "/usr/include/x86_64-linux-gnu/bits/types.h" 1 3 4 -# 27 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4 -# 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4 -# 28 "/usr/include/x86_64-linux-gnu/bits/types.h" 2 3 4 - - -typedef unsigned char __u_char; -typedef unsigned short int __u_short; -typedef unsigned int __u_int; -typedef unsigned long int __u_long; - - -typedef signed char __int8_t; -typedef unsigned char __uint8_t; -typedef signed short int __int16_t; -typedef unsigned short int __uint16_t; -typedef signed int __int32_t; -typedef unsigned int __uint32_t; - -typedef signed long int __int64_t; -typedef unsigned long int __uint64_t; - - - - - - - -typedef long int __quad_t; -typedef unsigned long int __u_quad_t; -# 121 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4 -# 1 "/usr/include/x86_64-linux-gnu/bits/typesizes.h" 1 3 4 -# 122 "/usr/include/x86_64-linux-gnu/bits/types.h" 2 3 4 - - -typedef unsigned long int __dev_t; -typedef unsigned int __uid_t; -typedef unsigned int __gid_t; -typedef unsigned long int __ino_t; -typedef unsigned long int __ino64_t; -typedef unsigned int __mode_t; -typedef unsigned long int __nlink_t; -typedef long int __off_t; -typedef long int __off64_t; -typedef int __pid_t; -typedef struct { - int __val[2]; -} __fsid_t; -typedef long int __clock_t; -typedef unsigned long int __rlim_t; -typedef unsigned long int __rlim64_t; -typedef unsigned int __id_t; -typedef long int __time_t; -typedef unsigned int __useconds_t; -typedef long int __suseconds_t; - -typedef int __daddr_t; -typedef int __key_t; - - -typedef int __clockid_t; - - -typedef void * __timer_t; - - -typedef long int __blksize_t; - - - - -typedef long int __blkcnt_t; -typedef long int __blkcnt64_t; - - -typedef unsigned long int __fsblkcnt_t; -typedef unsigned long int __fsblkcnt64_t; - - -typedef unsigned long int __fsfilcnt_t; -typedef unsigned long int __fsfilcnt64_t; - - -typedef long int __fsword_t; - -typedef long int __ssize_t; - - -typedef long int __syscall_slong_t; - -typedef unsigned long int __syscall_ulong_t; - - - -typedef __off64_t __loff_t; -typedef __quad_t *__qaddr_t; -typedef char *__caddr_t; - - -typedef long int __intptr_t; - - -typedef unsigned int __socklen_t; -# 26 "/usr/include/sched.h" 2 3 4 - - -# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.9/include/stddef.h" 1 3 4 -# 29 "/usr/include/sched.h" 2 3 4 - - - -# 1 "/usr/include/time.h" 1 3 4 -# 73 "/usr/include/time.h" 3 4 - - -typedef __time_t time_t; - - - -# 120 "/usr/include/time.h" 3 4 -struct timespec { - __time_t tv_sec; - __syscall_slong_t tv_nsec; -}; -# 33 "/usr/include/sched.h" 2 3 4 - - -typedef __pid_t pid_t; - - - - - -# 1 "/usr/include/x86_64-linux-gnu/bits/sched.h" 1 3 4 -# 72 "/usr/include/x86_64-linux-gnu/bits/sched.h" 3 4 -struct sched_param { - int __sched_priority; -}; - - - - - -extern int clone (int (*__fn) (void *__arg), void *__child_stack, - int __flags, void *__arg, ...) __attribute__ ((__nothrow__ , __leaf__)); - - -extern int unshare (int __flags) __attribute__ ((__nothrow__ , __leaf__)); - - -extern int sched_getcpu (void) __attribute__ ((__nothrow__ , __leaf__)); - - -extern int setns (int __fd, int __nstype) __attribute__ ((__nothrow__ , __leaf__)); - - - - - - - - - - - -struct __sched_param { - int __sched_priority; -}; -# 118 "/usr/include/x86_64-linux-gnu/bits/sched.h" 3 4 -typedef unsigned long int __cpu_mask; - - - - - - -typedef struct { - __cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))]; -} cpu_set_t; -# 201 "/usr/include/x86_64-linux-gnu/bits/sched.h" 3 4 - - -extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp) -__attribute__ ((__nothrow__ , __leaf__)); -extern cpu_set_t *__sched_cpualloc (size_t __count) __attribute__ ((__nothrow__ , __leaf__)) ; -extern void __sched_cpufree (cpu_set_t *__set) __attribute__ ((__nothrow__ , __leaf__)); - - -# 42 "/usr/include/sched.h" 2 3 4 - - - - - - - -extern int sched_setparam (__pid_t __pid, const struct sched_param *__param) -__attribute__ ((__nothrow__ , __leaf__)); - - -extern int sched_getparam (__pid_t __pid, struct sched_param *__param) __attribute__ ((__nothrow__ , __leaf__)); - - -extern int sched_setscheduler (__pid_t __pid, int __policy, - const struct sched_param *__param) __attribute__ ((__nothrow__ , __leaf__)); - - -extern int sched_getscheduler (__pid_t __pid) __attribute__ ((__nothrow__ , __leaf__)); - - -extern int sched_yield (void) __attribute__ ((__nothrow__ , __leaf__)); - - -extern int sched_get_priority_max (int __algorithm) __attribute__ ((__nothrow__ , __leaf__)); - - -extern int sched_get_priority_min (int __algorithm) __attribute__ ((__nothrow__ , __leaf__)); - - -extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) __attribute__ ((__nothrow__ , __leaf__)); -# 116 "/usr/include/sched.h" 3 4 -extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize, - const cpu_set_t *__cpuset) __attribute__ ((__nothrow__ , __leaf__)); - - -extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize, - cpu_set_t *__cpuset) __attribute__ ((__nothrow__ , __leaf__)); - - - -# 481 "rtapi/rtapi.h" 2 -# 498 "rtapi/rtapi.h" -static __inline__ void rtapi_mutex_give(unsigned long *mutex) -{ - rtapi_test_and_clear_bit(0, mutex); -} -# 510 "rtapi/rtapi.h" -static __inline__ int rtapi_mutex_try(unsigned long *mutex) -{ - return rtapi_test_and_set_bit(0, mutex); -} - - - - - - -static __inline__ void rtapi_mutex_get(unsigned long *mutex) -{ - while (rtapi_test_and_set_bit(0, mutex)) { - - - - sched_yield(); - - } -} - - -struct _mutex_cleanup { - int cond; - rtapi_atomic_type *m; -}; - - -static inline void _autorelease_mutex_if(struct _mutex_cleanup *c) -{ - if (c->cond) - rtapi_mutex_give(c->m); -} -# 651 "rtapi/rtapi.h" -typedef long long int (*rtapi_get_time_t)(void); - - -extern long long int _rtapi_get_time(void); -# 681 "rtapi/rtapi.h" -typedef long long int (*rtapi_get_clocks_t)(void); - - -extern long long int _rtapi_get_clocks(void); -# 723 "rtapi/rtapi.h" -typedef void (*taskcode_t) (void*); - -typedef enum { - TF_NONRT = (1UL << (0)), - TF_NOWAIT = (1UL << (1)), - -} rtapi_thread_flags_t; - - -typedef struct { - taskcode_t taskcode; - void *arg; - int prio; - int owner; - unsigned long int stacksize; - int uses_fp; - char *name; - int cpu_id; - rtapi_thread_flags_t flags; -} rtapi_task_args_t; - - -typedef int (*rtapi_prio_highest_lowest_t)(void); - - -extern int _rtapi_prio_highest(void); - - -extern int _rtapi_prio_lowest(void); - -typedef int (*rtapi_prio_next_higher_lower_t)(int); - - -extern int _rtapi_prio_next_higher(int prio); - - -extern int _rtapi_prio_next_lower(int prio); -# 904 "rtapi/rtapi.h" -typedef int (*rtapi_shmem_new_t)(int, int, unsigned long int); - - -extern int _rtapi_shmem_new(int key, int module_id, - unsigned long int size); - - - - -typedef int (*rtapi_shmem_new_inst_t)(int, int, int, unsigned long int); - - -extern int _rtapi_shmem_new_inst(int key, int instance, int module_id, - unsigned long int size); - - - - - - -typedef int (*rtapi_shmem_delete_t)(int, int); - - -extern int _rtapi_shmem_delete(int shmem_id, int module_id); - -typedef int (*rtapi_shmem_delete_inst_t)(int, int, int); - - -extern int _rtapi_shmem_delete_inst(int shmem_id, int instance, int module_id); -# 941 "rtapi/rtapi.h" -typedef int (*rtapi_shmem_getptr_t)(int, void **, unsigned long int *); - - -extern int _rtapi_shmem_getptr(int shmem_id, void **ptr, unsigned long int *size); - -typedef int (*rtapi_shmem_getptr_inst_t)(int, int, void **, unsigned long int *); - - -extern int _rtapi_shmem_getptr_inst(int shmem_id, int instance, void **ptr, unsigned long int *size); - - - - - - -typedef int (*rtapi_shmem_exists_t)(int); - - -extern int _rtapi_shmem_exists(int key); -# 972 "rtapi/rtapi.h" -typedef rtapi_exception_handler_t (*rtapi_set_exception_t) (rtapi_exception_handler_t); - - -extern rtapi_exception_handler_t _rtapi_set_exception(rtapi_exception_handler_t h); -# 984 "rtapi/rtapi.h" -# 1 "rtapi/rtapi_io.h" 1 -# 39 "rtapi/rtapi_io.h" -# 1 "/usr/include/x86_64-linux-gnu/sys/io.h" 1 3 4 -# 23 "/usr/include/x86_64-linux-gnu/sys/io.h" 3 4 - -# 32 "/usr/include/x86_64-linux-gnu/sys/io.h" 3 4 -extern int ioperm (unsigned long int __from, unsigned long int __num, - int __turn_on) __attribute__ ((__nothrow__ , __leaf__)); - - - - -extern int iopl (int __level) __attribute__ ((__nothrow__ , __leaf__)); - - - -static __inline unsigned char -inb (unsigned short int __port) -{ - unsigned char _v; - - __asm__ __volatile__ ("inb %w1,%0":"=a" (_v):"Nd" (__port)); - return _v; -} - -static __inline unsigned char -inb_p (unsigned short int __port) -{ - unsigned char _v; - - __asm__ __volatile__ ("inb %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (__port)); - return _v; -} - -static __inline unsigned short int -inw (unsigned short int __port) -{ - unsigned short _v; - - __asm__ __volatile__ ("inw %w1,%0":"=a" (_v):"Nd" (__port)); - return _v; -} - -static __inline unsigned short int -inw_p (unsigned short int __port) -{ - unsigned short int _v; - - __asm__ __volatile__ ("inw %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (__port)); - return _v; -} - -static __inline unsigned int -inl (unsigned short int __port) -{ - unsigned int _v; - - __asm__ __volatile__ ("inl %w1,%0":"=a" (_v):"Nd" (__port)); - return _v; -} - -static __inline unsigned int -inl_p (unsigned short int __port) -{ - unsigned int _v; - __asm__ __volatile__ ("inl %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (__port)); - return _v; -} - -static __inline void -outb (unsigned char __value, unsigned short int __port) -{ - __asm__ __volatile__ ("outb %b0,%w1": :"a" (__value), "Nd" (__port)); -} - -static __inline void -outb_p (unsigned char __value, unsigned short int __port) -{ - __asm__ __volatile__ ("outb %b0,%w1\noutb %%al,$0x80": :"a" (__value), - "Nd" (__port)); -} - -static __inline void -outw (unsigned short int __value, unsigned short int __port) -{ - __asm__ __volatile__ ("outw %w0,%w1": :"a" (__value), "Nd" (__port)); - -} - -static __inline void -outw_p (unsigned short int __value, unsigned short int __port) -{ - __asm__ __volatile__ ("outw %w0,%w1\noutb %%al,$0x80": :"a" (__value), - "Nd" (__port)); -} - -static __inline void -outl (unsigned int __value, unsigned short int __port) -{ - __asm__ __volatile__ ("outl %0,%w1": :"a" (__value), "Nd" (__port)); -} - -static __inline void -outl_p (unsigned int __value, unsigned short int __port) -{ - __asm__ __volatile__ ("outl %0,%w1\noutb %%al,$0x80": :"a" (__value), - "Nd" (__port)); -} - -static __inline void -insb (unsigned short int __port, void *__addr, unsigned long int __count) -{ - __asm__ __volatile__ ("cld ; rep ; insb":"=D" (__addr), "=c" (__count) - :"d" (__port), "0" (__addr), "1" (__count)); -} - -static __inline void -insw (unsigned short int __port, void *__addr, unsigned long int __count) -{ - __asm__ __volatile__ ("cld ; rep ; insw":"=D" (__addr), "=c" (__count) - :"d" (__port), "0" (__addr), "1" (__count)); -} - -static __inline void -insl (unsigned short int __port, void *__addr, unsigned long int __count) -{ - __asm__ __volatile__ ("cld ; rep ; insl":"=D" (__addr), "=c" (__count) - :"d" (__port), "0" (__addr), "1" (__count)); -} - -static __inline void -outsb (unsigned short int __port, const void *__addr, - unsigned long int __count) -{ - __asm__ __volatile__ ("cld ; rep ; outsb":"=S" (__addr), "=c" (__count) - :"d" (__port), "0" (__addr), "1" (__count)); -} - -static __inline void -outsw (unsigned short int __port, const void *__addr, - unsigned long int __count) -{ - __asm__ __volatile__ ("cld ; rep ; outsw":"=S" (__addr), "=c" (__count) - :"d" (__port), "0" (__addr), "1" (__count)); -} - -static __inline void -outsl (unsigned short int __port, const void *__addr, - unsigned long int __count) -{ - __asm__ __volatile__ ("cld ; rep ; outsl":"=S" (__addr), "=c" (__count) - :"d" (__port), "0" (__addr), "1" (__count)); -} - - - - -# 40 "rtapi/rtapi_io.h" 2 -# 49 "rtapi/rtapi_io.h" -static inline void rtapi_outb(unsigned char byte, unsigned int port) -{ - outb(byte,port); -} - - - - - - -static inline unsigned char rtapi_inb(unsigned int port) -{ - return inb(port); -} - - - - - -static inline void rtapi_outw(unsigned short word, unsigned int port) -{ - outw(word,port); -}; - - - - - -static inline unsigned short rtapi_inw(unsigned int port) -{ - return inw(port); -} -# 985 "rtapi/rtapi.h" 2 -# 1034 "rtapi/rtapi.h" -typedef int (*rtapi_dummy_t)(void); - -typedef struct { - const char *git_version; - const char *thread_flavor_name; - int thread_flavor_id; - unsigned long thread_flavor_flags; - - - rtapi_init_t rtapi_init; - rtapi_exit_t rtapi_exit; - rtapi_next_handle_t rtapi_next_handle; - - - - - - - rtapi_dummy_t rtapi_clock_set_period; - rtapi_dummy_t rtapi_delay; - rtapi_dummy_t rtapi_delay_max; - - rtapi_get_time_t rtapi_get_time; - rtapi_get_clocks_t rtapi_get_clocks; - - rtapi_prio_highest_lowest_t rtapi_prio_highest; - rtapi_prio_highest_lowest_t rtapi_prio_lowest; - rtapi_prio_next_higher_lower_t rtapi_prio_next_higher; - rtapi_prio_next_higher_lower_t rtapi_prio_next_lower; -# 1073 "rtapi/rtapi.h" - rtapi_dummy_t rtapi_task_new; - rtapi_dummy_t rtapi_task_delete; - rtapi_dummy_t rtapi_task_start; - rtapi_dummy_t rtapi_wait; - rtapi_dummy_t rtapi_task_resume; - rtapi_dummy_t rtapi_task_pause; - rtapi_dummy_t rtapi_task_self; - - - rtapi_shmem_new_t rtapi_shmem_new; - rtapi_shmem_new_inst_t rtapi_shmem_new_inst; - rtapi_shmem_delete_t rtapi_shmem_delete; - rtapi_shmem_delete_inst_t rtapi_shmem_delete_inst; - rtapi_shmem_getptr_t rtapi_shmem_getptr; - rtapi_shmem_getptr_inst_t rtapi_shmem_getptr_inst; - rtapi_shmem_exists_t rtapi_shmem_exists; - - - - - rtapi_dummy_t rtapi_set_exception; - - - - - rtapi_dummy_t rtapi_task_update_stats; - - rtapi_malloc_t rtapi_malloc; - rtapi_malloc_aligned_t rtapi_malloc_aligned; - rtapi_calloc_t rtapi_calloc; - rtapi_realloc_t rtapi_realloc; - rtapi_free_t rtapi_free; - rtapi_allocsize_t rtapi_allocsize; - rtapi_heap_init_t rtapi_heap_init; - rtapi_heap_addmem_t rtapi_heap_addmem; - rtapi_heap_status_t rtapi_heap_status; - rtapi_heap_setflags_t rtapi_heap_setflags; - rtapi_heap_walk_freelist_t rtapi_heap_walk_freelist; - -} rtapi_switch_t; - - - -extern rtapi_switch_t *rtapi_switch; - - - - - -typedef rtapi_switch_t *(*rtapi_get_handle_t)(void); -extern rtapi_switch_t *rtapi_get_handle(void); -# 1132 "rtapi/rtapi.h" -extern void rtapi_autorelease_mutex(void *variable); - - - -extern int rtapi_instance; -# 1145 "rtapi/rtapi.h" -typedef int (*ulapi_main_t)(int, int, global_data_t *); -typedef int (*ulapi_exit_t)(int); -extern int ulapi_main(int instance, int flavor, global_data_t *global); -extern int ulapi_exit(int instance); - - -extern void ulapi_cleanup(void); - - - -extern void ulapi_kernel_compat_check(rtapi_switch_t *rtapi_switch, - char *ulapi_lib); -extern int ulapi_loaded(void); -# 1357 "rtapi/rtapi.h" - -# 5 "hal/lib/hal_accessor.h" 2 - - -# 17 "hal/lib/hal_accessor.h" -static inline void *hal_ptr(const shmoff_t offset) -{ - return ((char *)hal_shmem_base + offset); -} -static inline shmoff_t hal_off(const void *p) -{ - return ((char *)p - (char *)hal_shmem_base); -} -static inline shmoff_t hal_off_safe(const void *p) -{ - if (p == ((void *)0)) return 0; - return ((char *)p - (char *)hal_shmem_base); -} -# 57 "hal/lib/hal_accessor.h" -static inline const hal_bit_t set_bit_pin(bit_pin_ptr p, const hal_bit_t value) -{ - hal_pin_t *pin = (hal_pin_t *)hal_ptr(p._bp); - hal_data_u *u = (hal_data_u *)hal_ptr(pin->data_ptr); - __atomic_store(&u->_b, &value, 5); - if (__builtin_expect(!!(hh_get_wmb(&pin->hdr)), 0)) __sync_synchronize(); - return value; -} -static inline const hal_s32_t set_s32_pin(s32_pin_ptr p, const hal_s32_t value) -{ - hal_pin_t *pin = (hal_pin_t *)hal_ptr(p._sp); - hal_data_u *u = (hal_data_u *)hal_ptr(pin->data_ptr); - __atomic_store(&u->_s, &value, 5); - if (__builtin_expect(!!(hh_get_wmb(&pin->hdr)), 0)) __sync_synchronize(); - return value; -} -static inline const hal_u32_t set_u32_pin(u32_pin_ptr p, const hal_u32_t value) -{ - hal_pin_t *pin = (hal_pin_t *)hal_ptr(p._up); - hal_data_u *u = (hal_data_u *)hal_ptr(pin->data_ptr); - __atomic_store(&u->_u, &value, 5); - if (__builtin_expect(!!(hh_get_wmb(&pin->hdr)), 0)) __sync_synchronize(); - return value; -} -static inline const hal_float_t set_float_pin(float_pin_ptr p, const hal_float_t value) -{ - hal_pin_t *pin = (hal_pin_t *)hal_ptr(p._fp); - hal_data_u *u = (hal_data_u *)hal_ptr(pin->data_ptr); - __atomic_store(&u->_f, &value, 5); - if (__builtin_expect(!!(hh_get_wmb(&pin->hdr)), 0)) __sync_synchronize(); - return value; -} -# 79 "hal/lib/hal_accessor.h" -static inline const hal_bit_t get_bit_pin(const bit_pin_ptr p) -{ - const hal_pin_t *pin = (const hal_pin_t *)hal_ptr(p._bp); - const hal_data_u *u = (const hal_data_u *)hal_ptr(pin->data_ptr); - if (__builtin_expect(!!(hh_get_rmb(&pin->hdr)), 0)) __sync_synchronize(); - hal_bit_t rvalue ; - __atomic_load(&u->_b, &rvalue , 5); - return rvalue ; -} -static inline const hal_s32_t get_s32_pin(const s32_pin_ptr p) -{ - const hal_pin_t *pin = (const hal_pin_t *)hal_ptr(p._sp); - const hal_data_u *u = (const hal_data_u *)hal_ptr(pin->data_ptr); - if (__builtin_expect(!!(hh_get_rmb(&pin->hdr)), 0)) __sync_synchronize(); - hal_s32_t rvalue ; - __atomic_load(&u->_s, &rvalue , 5); - return rvalue ; -} -static inline const hal_u32_t get_u32_pin(const u32_pin_ptr p) -{ - const hal_pin_t *pin = (const hal_pin_t *)hal_ptr(p._up); - const hal_data_u *u = (const hal_data_u *)hal_ptr(pin->data_ptr); - if (__builtin_expect(!!(hh_get_rmb(&pin->hdr)), 0)) __sync_synchronize(); - hal_u32_t rvalue ; - __atomic_load(&u->_u, &rvalue , 5); - return rvalue ; -} -static inline const hal_float_t get_float_pin(const float_pin_ptr p) -{ - const hal_pin_t *pin = (const hal_pin_t *)hal_ptr(p._fp); - const hal_data_u *u = (const hal_data_u *)hal_ptr(pin->data_ptr); - if (__builtin_expect(!!(hh_get_rmb(&pin->hdr)), 0)) __sync_synchronize(); - hal_float_t rvalue ; - __atomic_load(&u->_f, &rvalue , 5); - return rvalue ; -} -# 101 "hal/lib/hal_accessor.h" -static inline const hal_s32_t incr_s32_pin(s32_pin_ptr p, const hal_s32_t value) -{ - hal_pin_t *pin = (hal_pin_t *)hal_ptr(p._sp); - hal_data_u *u = (hal_data_u *)hal_ptr(pin->data_ptr); - hal_s32_t rvalue = __atomic_add_fetch(&u->_s, (value), 5); - if (__builtin_expect(!!(hh_get_wmb(&pin->hdr)), 0)) __sync_synchronize(); - return rvalue; -} -static inline const hal_u32_t incr_u32_pin(u32_pin_ptr p, const hal_u32_t value) -{ - hal_pin_t *pin = (hal_pin_t *)hal_ptr(p._up); - hal_data_u *u = (hal_data_u *)hal_ptr(pin->data_ptr); - hal_u32_t rvalue = __atomic_add_fetch(&u->_u, (value), 5); - if (__builtin_expect(!!(hh_get_wmb(&pin->hdr)), 0)) __sync_synchronize(); - return rvalue; -} -# 121 "hal/lib/hal_accessor.h" -static inline const hal_bit_t get_bit_sig(const bit_sig_ptr p) -{ - const hal_sig_t *sig = (const hal_sig_t *)hal_ptr(p._bs); - if (__builtin_expect(!!(hh_get_rmb(&sig->hdr)), 0)) __sync_synchronize(); - hal_bit_t rvalue ; - __atomic_load(&sig->value._b, &rvalue , 5); - return rvalue ; -} -static inline const hal_s32_t get_s32_sig(const s32_sig_ptr p) -{ - const hal_sig_t *sig = (const hal_sig_t *)hal_ptr(p._ss); - if (__builtin_expect(!!(hh_get_rmb(&sig->hdr)), 0)) __sync_synchronize(); - hal_s32_t rvalue ; - __atomic_load(&sig->value._s, &rvalue , 5); - return rvalue ; -} -static inline const hal_u32_t get_u32_sig(const u32_sig_ptr p) -{ - const hal_sig_t *sig = (const hal_sig_t *)hal_ptr(p._us); - if (__builtin_expect(!!(hh_get_rmb(&sig->hdr)), 0)) __sync_synchronize(); - hal_u32_t rvalue ; - __atomic_load(&sig->value._u, &rvalue , 5); - return rvalue ; -} -static inline const hal_float_t get_float_sig(const float_sig_ptr p) -{ - const hal_sig_t *sig = (const hal_sig_t *)hal_ptr(p._fs); - if (__builtin_expect(!!(hh_get_rmb(&sig->hdr)), 0)) __sync_synchronize(); - hal_float_t rvalue ; - __atomic_load(&sig->value._f, &rvalue , 5); - return rvalue ; -} -# 143 "hal/lib/hal_accessor.h" -static inline const hal_bit_t set_bit_sig(bit_sig_ptr s, const hal_bit_t value) -{ - hal_sig_t *sig = (hal_sig_t *)hal_ptr(s._bs); - __atomic_store(&sig->value._b, &value, 5); - if (__builtin_expect(!!(hh_get_wmb(&sig->hdr)), 0)) __sync_synchronize(); - return value; -} -static inline const hal_s32_t set_s32_sig(s32_sig_ptr s, const hal_s32_t value) -{ - hal_sig_t *sig = (hal_sig_t *)hal_ptr(s._ss); - __atomic_store(&sig->value._s, &value, 5); - if (__builtin_expect(!!(hh_get_wmb(&sig->hdr)), 0)) __sync_synchronize(); - return value; -} -static inline const hal_u32_t set_u32_sig(u32_sig_ptr s, const hal_u32_t value) -{ - hal_sig_t *sig = (hal_sig_t *)hal_ptr(s._us); - __atomic_store(&sig->value._u, &value, 5); - if (__builtin_expect(!!(hh_get_wmb(&sig->hdr)), 0)) __sync_synchronize(); - return value; -} -static inline const hal_float_t set_float_sig(float_sig_ptr s, const hal_float_t value) -{ - hal_sig_t *sig = (hal_sig_t *)hal_ptr(s._fs); - __atomic_store(&sig->value._f, &value, 5); - if (__builtin_expect(!!(hh_get_wmb(&sig->hdr)), 0)) __sync_synchronize(); - return value; -} - - - - -static inline _Bool bit_pin_null(const bit_pin_ptr b) -{ - return b._bp == 0; -} -static inline _Bool s32_pin_null(const s32_pin_ptr b) -{ - return b._sp == 0; -} -static inline _Bool u32_pin_null(const u32_pin_ptr b) -{ - return b._up == 0; -} -static inline _Bool float_pin_null(const float_pin_ptr b) -{ - return b._fp == 0; -} -static inline _Bool bit_sig_null(const bit_sig_ptr s) -{ - return s._bs == 0; -} -static inline _Bool s32_sig_null(const s32_sig_ptr s) -{ - return s._ss == 0; -} -static inline _Bool u32_sig_null(const u32_sig_ptr s) -{ - return s._us == 0; -} -static inline _Bool float_sig_null(const float_sig_ptr s) -{ - return s._fs == 0; -} - - - -const char *hals_type(const hal_type_t type); - -const char *hals_pindir(const hal_pin_dir_t dir); - - -bit_pin_ptr halx_pin_bit_newf(const hal_pin_dir_t dir, - const int owner_id, - const char *fmt, ...) -__attribute__((format(printf,3,4))); - -float_pin_ptr halx_pin_float_newf(const hal_pin_dir_t dir, - const int owner_id, - const char *fmt, ...) -__attribute__((format(printf,3,4))); - -u32_pin_ptr halx_pin_u32_newf(const hal_pin_dir_t dir, - const int owner_id, - const char *fmt, ...) -__attribute__((format(printf,3,4))); - -s32_pin_ptr halx_pin_s32_newf(const hal_pin_dir_t dir, - const int owner_id, - const char *fmt, ...) -__attribute__((format(printf,3,4))); -# 216 "hal/lib/hal_accessor.h" diff --git a/src/hal/components/rtfault.comp b/src/hal/components/rtfault.comp index 09e4224a67..95fcd2022e 100644 --- a/src/hal/components/rtfault.comp +++ b/src/hal/components/rtfault.comp @@ -23,7 +23,6 @@ FUNCTION(_) { } previous_fault = fault; if (n) { -#if defined(BUILD_SYS_USER_DSO) // printf() eventually calls write(), which will cause // a Xenomai domain switch @@ -31,12 +30,5 @@ FUNCTION(_) { if (delay) nanosleep(&nap, NULL); printf("fault # %d\n", n--); -#else - do { - rtapi_delay(delay * 1000 * 1000); - n--; - } while (n > 0); - rtapi_print_msg(RTAPI_MSG_ERR, "RT delay ..\n"); -#endif } } diff --git a/src/hal/components/rtmon.comp b/src/hal/components/rtmon.comp index c53c6fa668..dcf65f075d 100644 --- a/src/hal/components/rtmon.comp +++ b/src/hal/components/rtmon.comp @@ -62,7 +62,7 @@ license "GPL"; // in a non-thread function to wiggle and read pins static struct __comp_state *this; -static int rtmon_exception_handler(rtapi_exception_t type, +static int rtmon_exception_handler(int type, rtapi_exception_detail_t *detail, rtapi_threadstatus_t *threadstatus) diff --git a/src/hal/drivers/hal_spi.c b/src/hal/drivers/hal_spi.c index 6aa8866637..08b271f911 100644 --- a/src/hal/drivers/hal_spi.c +++ b/src/hal/drivers/hal_spi.c @@ -31,10 +31,6 @@ #include "cpuinfo.c" -#if !defined(BUILD_SYS_USER_DSO) -#error "This driver is for usermode threads only" -#endif - #if !defined(TARGET_PLATFORM_RASPBERRY) #error "This driver is for the Raspberry Pi platform only" #endif @@ -640,4 +636,4 @@ FILE *fp; procCount = 2; } return procCount; -} \ No newline at end of file +} diff --git a/src/hal/lib/hal_lib.c b/src/hal/lib/hal_lib.c index af40d171b0..ea0533fae2 100644 --- a/src/hal/lib/hal_lib.c +++ b/src/hal/lib/hal_lib.c @@ -65,6 +65,7 @@ #include "hal_iring.h" #include "rtapi_string.h" +#include "rtapi_flavor.h" // flavor_descriptor #ifdef RTAPI #include "rtapi_app.h" /* module information */ @@ -182,11 +183,9 @@ unsigned char hal_get_lock() int rtapi_app_main(void) { - rtapi_switch = rtapi_get_handle(); - // sanity: these must have been inited before by the // respective rtapi.so/.ko module - CHECK_NULL(rtapi_switch); + HAL_ASSERT(flavor_is_configured()); CHECK_NULL(global_data); HALDBG("initializing RT hal_lib support"); diff --git a/src/hal/utils/hal_comp.c b/src/hal/utils/hal_comp.c index 4f95c4ae62..0a9a58adca 100644 --- a/src/hal/utils/hal_comp.c +++ b/src/hal/utils/hal_comp.c @@ -71,7 +71,7 @@ hal_comp_t *halg_xinitfv(const int use_hal_mutex, // sanity: these must have been inited before by the // respective rtapi.so/.ko module - PCHECK_NULL(rtapi_switch); + HAL_ASSERT(flavor_is_configured()); if ((dtor != NULL) && (ctor == NULL)) { HALFAIL_NULL(EINVAL,"component '%s': NULL constructor doesnt make" diff --git a/src/rtapi/.gitignore b/src/rtapi/.gitignore deleted file mode 100644 index 0118579203..0000000000 --- a/src/rtapi/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# ignore ulapi.so build artifacts -# - symlink hack to build separate ulapi.so per flavor -/posix -/rt-preempt -/xenomai -/rtai-kernel -/xenomai-kernel -/.flavor-*-link-create-stamp diff --git a/src/rtapi/README b/src/rtapi/README index 1284db0889..addb20cb3d 100644 --- a/src/rtapi/README +++ b/src/rtapi/README @@ -1,7 +1,7 @@ README for RTAPI -*-auto-fill-*- -RTAPI is a wrapper API that allows realtime programs to use either -RTLinux or RTAI with no code changes. +RTAPI is a wrapper API that allows realtime programs to use +RT_PREEMPT, POSIX or Xenomai threads with no code changes. Files: @@ -10,10 +10,6 @@ README : this file rtapi.h : decls for the generic RTAPI functions. rtapi_app.h : decls for the kernel modules rtapi_common.h : Collection of typedefs, etc, used internally by RTAPI. -procfs_macros.h : Macros used to implement the /proc interface -rtapi_proc.h : more stuff implementing the /proc interface -$(THREADS).h : Thread system-specific headers -$(THREADS).c : Thread system-specific definitions, esp. RTAPI hooks ../../Makefile.inc : contains compile-time flags, etc. diff --git a/src/rtapi/Submakefile b/src/rtapi/Submakefile index eab3cf60ad..b522443cf2 100644 --- a/src/rtapi/Submakefile +++ b/src/rtapi/Submakefile @@ -16,8 +16,7 @@ INCLUDES += rtapi rtapi_export HEADERS += \ rtapi/rtapi_flavor.h \ - rtapi/rt-preempt.h \ - rtapi/xenomai.h + rtapi/rt-preempt.h ########################################## # Clean up @@ -56,7 +55,6 @@ XXAPI_COMMON_SRCS := $(patsubst %, rtapi/%, \ ULAPI_SRCS := \ rtapi/ulapi_autoload.c \ rtapi/rtapi_compat.c \ - rtapi/rtapi_hexdump.c \ rtapi/rtapi_support.c \ machinetalk/lib/syslog_async.c \ $(XXAPI_COMMON_SRCS) \ @@ -170,25 +168,35 @@ TARGETS += $(ULAPI_LIB) $(ULAPI_LIB).0 # could resolve first instead of with the RT symbol space, which is undesirable. -RTAPI_APP_SRCS := \ +RTAPI_LIB_SRCS := \ $(XXAPI_COMMON_SRCS) \ - rtapi/rtapi_flavor.c \ - rtapi/rtapi_app.cc \ rtapi/rtapi_compat.c \ - rtapi/rtapi_hexdump.c \ - rtapi/rtapi_support.c \ + rtapi/rtapi_flavor.c \ rtapi/rt-preempt.c \ - rtapi/rtapi_compat.c \ + rtapi/rtapi_main.c \ machinetalk/support/nanopb.c \ machinetalk/nanopb/pb_decode.c \ machinetalk/nanopb/pb_encode.c \ machinetalk/nanopb/pb_common.c +ifeq ($(USERMODE_PCI),yes) +# link userland PCI support into rtapi_app +RTAPI_LIB_SRCS += rtapi/rtapi_pci.c +endif ifeq ($(HAVE_XENOMAI_THREADS),yes) -RTAPI_APP_SRCS += rtapi/xenomai.c +RTAPI_LIB_SRCS += rtapi/xenomai.c +HEADERS += rtapi/xenomai.h endif +# Build RTAPI_LIB_SRCS with -DRTAPI +RTAPI_LIB_OBJS := $(patsubst %.c,%.o,$(RTAPI_LIB_SRCS)) +RTOBJS += $(addprefix $(OBJDIR)/,$(RTAPI_LIB_OBJS)) + + +RTAPI_APP_SRCS := \ + rtapi/rtapi_app.cc + USERSRCS += $(RTAPI_APP_SRCS) # RIP builds need to add LIB_DIR as an rpath, since LD_LIBRARY_PATH @@ -207,14 +215,12 @@ ifeq ($(USERMODE_PCI),yes) # compile userland PCI support with udev cflags if any $(call TOOBJSDEPS, rtapi/rtapi_pci.c): EXTRAFLAGS += $(LIBUDEV_CFLAGS) -# link userland PCI support into rtapi_app -RTAPI_APP_SRCS += rtapi/rtapi_pci.c - # userland PCI support needs -ludev for rtapi.so ../libexec/rtapi_app: LDFLAGS += $(LIBUDEV_LIBS) endif ../libexec/rtapi_app: \ + $(addprefix $(OBJDIR)/,$(RTAPI_LIB_OBJS)) \ $(call TOOBJS, $(RTAPI_APP_SRCS)) \ ../lib/liblinuxcncini.so.0 \ ../lib/liblinuxcncshm.so \ @@ -237,25 +243,6 @@ endif modules: ../libexec/rtapi_app -################################################################## -# the kdetect test program -################################################################## -RTAPI_KDETECT_SRCS = rtapi/rtapi_kdetect.c -USERSRCS += $(RTAPI_KDETECT_SRCS) -RTAPI_KDETECT_OBJS := \ - $(call TOOBJS, $(RTAPI_KDETECT_SRCS)) - -$(call TOOBJSDEPS, $(RTAPI_KDETECT_SRCS)): \ - EXTRAFLAGS += -DTEST - -# Build target -../libexec/kdetect: $(RTAPI_KDETECT_OBJS) ../lib/liblinuxcnchal.so - $(ECHO) Linking $(notdir $@) - @mkdir -p $(dir $@) - $(Q)$(CC) $(LDFLAGS) -o $@ $^ -lrt -ldl - -TARGETS += ../libexec/kdetect - ################################################################## # the rtapi message demon ################################################################## diff --git a/src/rtapi/procfs_macros.h b/src/rtapi/procfs_macros.h deleted file mode 100644 index 8ba386d259..0000000000 --- a/src/rtapi/procfs_macros.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (C) 1999-2014 Paolo Mantegazza - * - * This program 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 2 of the - * License, or (at your option) any later version. - * - * This program 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 this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#ifndef _RTAI_PROC_FS_H -#define _RTAI_PROC_FS_H - -extern struct proc_dir_entry *rtai_proc_root; - -#include -#include - -#define PROC_READ_FUN(read_fun_name) \ - int read_fun_name(struct seq_file *pf, void *v) - -#define PROC_READ_WRITE_OPEN_OPS(rtai_proc_fops, \ - read_fun_name, write_fun_name) \ - \ - static int read_fun_name##_open(struct inode *inode, \ - struct file *file) { \ - return single_open(file, read_fun_name, NULL); \ - } \ - \ - static const struct file_operations rtai_proc_fops = { \ - .owner = THIS_MODULE, \ - .open = read_fun_name##_open, \ - .read = seq_read, \ - .write = write_fun_name, \ - .llseek = seq_lseek, \ - .release = single_release \ - }; - -#define PROC_READ_OPEN_OPS(rtai_proc_fops, read_fun_name) \ - PROC_READ_WRITE_OPEN_OPS(rtai_proc_fops, read_fun_name, NULL) - -static inline void *CREATE_PROC_ENTRY(const char *name, umode_t mode, - void *parent, - const struct file_operations *proc_fops) -{ - return !parent ? proc_mkdir(name, NULL) : - proc_create(name, mode, parent, proc_fops); -} - -#define SET_PROC_READ_ENTRY(entry, read_fun) do { } while(0) - -#define PROC_PRINT_VARS - -#define PROC_PRINT(fmt, args...) \ - do { seq_printf(pf, fmt, ##args); } while(0) - -#define PROC_PRINT_RETURN do { goto done; } while(0) - -#define PROC_PRINT_DONE do { return 0; } while(0) - -#endif /* !_RTAI_PROC_FS_H */ diff --git a/src/rtapi/rt-preempt.c b/src/rtapi/rt-preempt.c index 367b8e3093..039f113f50 100644 --- a/src/rtapi/rt-preempt.c +++ b/src/rtapi/rt-preempt.c @@ -52,6 +52,11 @@ // if this exists, and contents is '1', it's RT_PREEMPT #define PREEMPT_RT_SYSFS "/sys/kernel/realtime" +// Access the rtpreempt_stats_t thread status object +#define FTS(ts) ((rtpreempt_stats_t *)&(ts->flavor)) +// Access the rtpreempt_exception_t thread exception detail object +#define FED(detail) ((rtpreempt_exception_t)detail.flavor) + /* Lock for task_array and module_array allocations */ static pthread_key_t task_key; static pthread_once_t task_key_once = PTHREAD_ONCE_INIT; @@ -141,17 +146,17 @@ int posix_task_update_stats_hook(void) rtapi_threadstatus_t *ts = &global_data->thread_status[task_id]; - ts->flavor.rtpreempt.utime_usec = ru.ru_utime.tv_usec; - ts->flavor.rtpreempt.utime_sec = ru.ru_utime.tv_sec; + FTS(ts)->utime_usec = ru.ru_utime.tv_usec; + FTS(ts)->utime_sec = ru.ru_utime.tv_sec; - ts->flavor.rtpreempt.stime_usec = ru.ru_stime.tv_usec; - ts->flavor.rtpreempt.stime_sec = ru.ru_stime.tv_sec; + FTS(ts)->stime_usec = ru.ru_stime.tv_usec; + FTS(ts)->stime_sec = ru.ru_stime.tv_sec; - ts->flavor.rtpreempt.ru_minflt = ru.ru_minflt; - ts->flavor.rtpreempt.ru_majflt = ru.ru_majflt; - ts->flavor.rtpreempt.ru_nsignals = ru.ru_nsignals; - ts->flavor.rtpreempt.ru_nivcsw = ru.ru_nivcsw; - ts->flavor.rtpreempt.ru_nivcsw = ru.ru_nivcsw; + FTS(ts)->ru_minflt = ru.ru_minflt; + FTS(ts)->ru_majflt = ru.ru_majflt; + FTS(ts)->ru_nsignals = ru.ru_nsignals; + FTS(ts)->ru_nivcsw = ru.ru_nivcsw; + FTS(ts)->ru_nivcsw = ru.ru_nivcsw; ts->num_updates++; @@ -356,8 +361,7 @@ static void *realtime_thread(void *arg) { task->name, task->cgname); } if (!(task->flags & TF_NONRT)) { - if (realtime_set_priority(task) && - global_data->rtapi_thread_flavor == RTAPI_POSIX_ID) { + if (realtime_set_priority(task) && !flavor_descriptor->has_rt) { // This requires privs - tell user how to obtain them rtapi_print_msg( RTAPI_MSG_ERR, @@ -396,9 +400,9 @@ static void *realtime_thread(void *arg) { } else { rtapi_threadstatus_t *ts = &global_data->thread_status[task_id(task)]; - ts->flavor.rtpreempt.startup_ru_nivcsw = ru.ru_nivcsw; - ts->flavor.rtpreempt.startup_ru_minflt = ru.ru_minflt; - ts->flavor.rtpreempt.startup_ru_majflt = ru.ru_majflt; + FTS(ts)->startup_ru_nivcsw = ru.ru_nivcsw; + FTS(ts)->startup_ru_minflt = ru.ru_minflt; + FTS(ts)->startup_ru_majflt = ru.ru_majflt; } } @@ -488,9 +492,9 @@ int posix_wait_hook(const int flags) { rtapi_threadstatus_t *ts = &global_data->thread_status[task_id(task)]; - ts->flavor.rtpreempt.wait_errors++; + FTS(ts)->wait_errors++; - if (global_data->rtapi_thread_flavor == RTAPI_POSIX_ID) { + if (!flavor_descriptor->has_rt) { rtapi_exception_detail_t detail = {0}; detail.task_id = task_id(task); @@ -564,14 +568,26 @@ int kernel_is_rtpreempt() return retval; } -int rtpreempt_can_run_flavor() +int posix_can_run_flavor() { - return kernel_is_rtpreempt(); + if (sizeof(rtpreempt_stats_t) > MAX_FLAVOR_THREADSTATUS_SIZE) { + fprintf(stderr, "BUG: MAX_FLAVOR_THREADSTATUS_SIZE too " + "small for POSIX/RT_PREEMPT threads\n"); + exit(1); + } + + if (sizeof(rtpreempt_exception_t) > MAX_FLAVOR_EXCEPTION_SIZE) { + fprintf(stderr, "BUG: MAX_FLAVOR_EXCEPTION_SIZE too " + "small for POSIX/RT_PREEMPT threads\n"); + exit(1); + } + + return 1; } -int posix_can_run_flavor() +int rtpreempt_can_run_flavor() { - return 1; + return posix_can_run_flavor() && kernel_is_rtpreempt(); } @@ -581,35 +597,58 @@ void print_thread_stats(int task_id) &global_data->thread_status[task_id]; rtapi_print(" wait_errors=%d\t", - ts->flavor.rtpreempt.wait_errors); + FTS(ts)->wait_errors); rtapi_print("usercpu=%lduS\t", - ts->flavor.rtpreempt.utime_sec * 1000000 + - ts->flavor.rtpreempt.utime_usec); + FTS(ts)->utime_sec * 1000000 + + FTS(ts)->utime_usec); rtapi_print("syscpu=%lduS\t", - ts->flavor.rtpreempt.stime_sec * 1000000 + - ts->flavor.rtpreempt.stime_usec); + FTS(ts)->stime_sec * 1000000 + + FTS(ts)->stime_usec); rtapi_print("nsigs=%ld\n", - ts->flavor.rtpreempt.ru_nsignals); + FTS(ts)->ru_nsignals); rtapi_print(" ivcsw=%ld\t", - ts->flavor.rtpreempt.ru_nivcsw - - ts->flavor.rtpreempt.startup_ru_nivcsw); + FTS(ts)->ru_nivcsw - + FTS(ts)->startup_ru_nivcsw); rtapi_print(" minflt=%ld\t", - ts->flavor.rtpreempt.ru_minflt - - ts->flavor.rtpreempt.startup_ru_minflt); + FTS(ts)->ru_minflt - + FTS(ts)->startup_ru_minflt); rtapi_print(" majflt=%ld\n", - ts->flavor.rtpreempt.ru_majflt - - ts->flavor.rtpreempt.startup_ru_majflt); + FTS(ts)->ru_majflt - + FTS(ts)->startup_ru_majflt); rtapi_print("\n"); } +void rtpreempt_exception_handler_hook(int type, + rtapi_exception_detail_t *detail, + int level) +{ + rtapi_threadstatus_t *ts = &global_data->thread_status[detail->task_id]; + switch ((rtpreempt_exception_id_t)type) { + // Timing violations + case RTP_DEADLINE_MISSED: + rtapi_print_msg(level, + "%d: Unexpected realtime delay on RT thread %d ", + type, detail->task_id); + print_thread_stats(detail->task_id); + break; + + default: + rtapi_print_msg(level, + "%d: unspecified exception detail=%p ts=%p", + type, detail, ts); + + } +} flavor_descriptor_t flavor_rt_prempt_descriptor = { .name = "rt-preempt", - .flavor_id = RTAPI_RT_PREEMPT_ID, + .flavor_id = RTAPI_FLAVOR_RT_PREEMPT_ID, .flags = FLAVOR_DOES_IO, + .has_rt = 1, .time_no_clock_monotonic = 0, .can_run_flavor = rtpreempt_can_run_flavor, + .exception_handler_hook = rtpreempt_exception_handler_hook, .module_init_hook = NULL, .module_exit_hook = NULL, .task_update_stats_hook = NULL, @@ -635,10 +674,12 @@ flavor_descriptor_t flavor_rt_prempt_descriptor = { flavor_descriptor_t flavor_posix_descriptor = { .name = "posix", - .flavor_id = RTAPI_POSIX_ID, + .flavor_id = RTAPI_FLAVOR_POSIX_ID, .flags = 0, + .has_rt = 0, .time_no_clock_monotonic = 0, .can_run_flavor = posix_can_run_flavor, + .exception_handler_hook = NULL, .module_init_hook = NULL, .module_exit_hook = NULL, .task_update_stats_hook = NULL, diff --git a/src/rtapi/rt-preempt.h b/src/rtapi/rt-preempt.h index 7a60112fc8..ea58bc9bf3 100644 --- a/src/rtapi/rt-preempt.h +++ b/src/rtapi/rt-preempt.h @@ -22,5 +22,42 @@ #include "rtapi_flavor.h" +typedef enum { + RTP_EXCEPTION_NONE=0, + + RTP_DEADLINE_MISSED, // clock_gettime(CLOCK_MONOTONIC) returned 'too late' + + RTP_EXCEPTION_LAST, + +} rtpreempt_exception_id_t; + +typedef struct { + // RTP_SIGNAL: unhandled signal: siginfo_t reference + // currently unused - signals handled in rtapi_app + void *siginfo; +} rtpreempt_exception_t; + +typedef struct { + + int wait_errors; // RT deadline missed + + // filled in by rtapi_thread_update_stats() RTAPI method + long utime_sec; // user CPU time used + long utime_usec; + + long stime_sec; // system CPU time used + long stime_usec; + + long ru_minflt; // page reclaims (soft page faults) + long ru_majflt; // page faults (hard page faults) + long ru_nsignals; // signals received + long ru_nivcsw; // involuntary context switches + + long startup_ru_minflt; // page fault counts at end of + long startup_ru_majflt; // initalisation + long startup_ru_nivcsw; // + +} rtpreempt_stats_t; + extern flavor_descriptor_t flavor_rt_prempt_descriptor; extern flavor_descriptor_t flavor_posix_descriptor; diff --git a/src/rtapi/rtapi.h b/src/rtapi/rtapi.h index cd0a10ce1b..d6de57f587 100644 --- a/src/rtapi/rtapi.h +++ b/src/rtapi/rtapi.h @@ -2,7 +2,7 @@ #define RTAPI_H /** RTAPI is a library providing a uniform API for several real time - operating systems. As of ver 2.0, RTLinux and RTAI are supported. + operating systems. */ /******************************************************************** * Description: rtapi.h @@ -185,7 +185,6 @@ static inline shmoff_t shm_off(const void *base, const void *p) { /*********************************************************************** * INIT AND EXIT FUNCTIONS * ************************************************************************/ -/* implemented in $THREADS.c (rt-preempt.c, xenomai.c, etc.) */ /** 'rtapi_init() sets up the RTAPI. It must be called by any module that intends to use the API, before any other RTAPI diff --git a/src/rtapi/rtapi_app.cc b/src/rtapi/rtapi_app.cc index 21c0c6d357..85cdeb5cab 100644 --- a/src/rtapi/rtapi_app.cc +++ b/src/rtapi/rtapi_app.cc @@ -168,7 +168,6 @@ static AvahiCzmqPoll *av_loop; // NB: do _not_ call any rtapi_* methods before these variables are set // except for rtapi_msg* and friends. -global_data_t *global_data; static const char *rpath; static int init_actions(int instance); static void exit_actions(int instance); diff --git a/src/rtapi/rtapi_common.h b/src/rtapi/rtapi_common.h index 58bbfd881a..050a27d951 100644 --- a/src/rtapi/rtapi_common.h +++ b/src/rtapi/rtapi_common.h @@ -2,7 +2,7 @@ #define RTAPI_COMMON_H /** RTAPI is a library providing a uniform API for several real time - operating systems. As of ver 2.0, RTLinux and RTAI are supported. + operating systems. */ /******************************************************************** * Description: rtapi_common.h @@ -20,11 +20,9 @@ /** This file, 'rtapi_common.h', contains typedefs and other items common to both the realtime and non-realtime portions of the - implementation. These items are also common to both the RTAI - and RTLinux implementations, and most likely to any other - implementations in the Linux environment. This data is INTERNAL - to the RTAPI implementation, and should not be included in any - application modules. + implementation. This data is INTERNAL to the RTAPI + implementation, and should not be included in any application + modules. */ /** Copyright (C) 2003 John Kasunich diff --git a/src/rtapi/rtapi_compat.h b/src/rtapi/rtapi_compat.h index 602a8eba13..e7bd9e79db 100644 --- a/src/rtapi/rtapi_compat.h +++ b/src/rtapi/rtapi_compat.h @@ -39,21 +39,6 @@ SUPPORT_BEGIN_DECLS extern long int simple_strtol(const char *nptr, char **endptr, int base); - -// simple interface to hal_create_thread()/hal_thread_delete() -// through /proc/rtapi/hal/rtapicmd (kernel threadstyles only) -// -// to start a thread, write 'newthread' ' -// example: -// echo newthread servo-thread 1000000 1 -1 >/proc/rtapi/hal/rtapicmd -// -// to delete a thread, write 'delthread ' -// echo delthread servo-thread >/proc/rtapi/hal/rtapicmd -// -// HAL return values are reflected in the return value to write() -// -#define PROCFS_RTAPICMD "/proc/rtapi/hal/rtapicmd" - // whatever is written is printf-style int rtapi_fs_write(const char *path, const char *format, ...); @@ -65,26 +50,6 @@ int rtapi_fs_write(const char *path, const char *format, ...); int rtapi_fs_read(char *buf, const size_t maxlen, const char *name, ...); -int run_shell(char *format, ...); - -//extern int procfs_cmd(const char *path, const char *format, ...); - -// kernel tests in rtapi_compat.c -extern int kernel_is_xenomai(); -extern int kernel_is_rtpreempt(); - -// return the Xenomai group id from -// /sys/module/xeno_nucleus/parameters/xenomai_gid or -1 -extern int xenomai_gid(); - -// if the linuxCNC user is'nt member of the xenomai group, -// most xenomai system calls will fail -extern int user_in_xenomai_group(); - -// return the instance ID of a kernel threads instance -// by consulting /proc/rtapi/instance -extern int kernel_instance_id(); - /* * Look up a parameter value in rtapi.ini [global] section. Returns 0 if * successful, 1 otherwise. Maximum n-1 bytes of the value and a diff --git a/src/rtapi/rtapi_exception.c b/src/rtapi/rtapi_exception.c index cde9b97fc5..accd00f6e8 100644 --- a/src/rtapi/rtapi_exception.c +++ b/src/rtapi/rtapi_exception.c @@ -24,12 +24,13 @@ #include "config.h" #include "rtapi.h" #include "rtapi_exception.h" +#include "rtapi_flavor.h" #ifdef RTAPI #define MAX_RT_ERRORS 10 -static int rtapi_default_rt_exception_handler(rtapi_exception_t type, +static int rtapi_default_rt_exception_handler(int type, rtapi_exception_detail_t *detail, rtapi_threadstatus_t *ts); @@ -37,9 +38,6 @@ static int rtapi_default_rt_exception_handler(rtapi_exception_t type, rtapi_exception_handler_t rt_exception_handler = rtapi_default_rt_exception_handler; -static void log_thread_stats(rtapi_exception_t type, - rtapi_threadstatus_t *ts); - // The RTAPI default exception handler - // factored out as separate file to ease rolling your own in a component // @@ -52,7 +50,7 @@ static void log_thread_stats(rtapi_exception_t type, // hal/components/rtmon.comp which uses rtapi_set_exception(handler) // to override this default handler during module lifetime -static int rtapi_default_rt_exception_handler(rtapi_exception_t type, +static int rtapi_default_rt_exception_handler(int type, rtapi_exception_detail_t *detail, rtapi_threadstatus_t *ts) { @@ -62,126 +60,13 @@ static int rtapi_default_rt_exception_handler(rtapi_exception_t type, if (error_printed < MAX_RT_ERRORS) { error_printed++; - // apply output policy in one place only. - switch (type) { - - // RTAI errors - case RTAI_RTE_UNCLASSIFIED: - rtapi_print_msg(level, - "%d: RT thread %d: " - "unknown return code from rt_task_wait_period(): %d ", - type, detail->task_id, detail->error_code); - break; - - case RTAI_RTE_UNBLKD: - rtapi_print_msg(level, - "%d: RT thread %d: rt_task_wait_period() " - "unblocked while sleeping: %d ", - type, detail->task_id, detail->error_code); - break; - - // Timing violations - case RTAI_RTE_TMROVRN: - case XK_ETIMEDOUT: - case XU_ETIMEDOUT: - case RTP_DEADLINE_MISSED: - rtapi_print_msg(level, - "%d: Unexpected realtime delay on RT thread %d ", - type, detail->task_id); - log_thread_stats(type, ts); - break; - - // Kernel traps - case RTAI_TRAP: + if (flavor_descriptor->exception_handler_hook) + flavor_descriptor->exception_handler_hook(type, detail, level); + else rtapi_print_msg(level, - "%d: trap event: thread %d " - "vec=%d signo=%d ip:%p", - type, detail->task_id, - detail->flavor.rtai.vector, - detail->flavor.rtai.signo, - detail->flavor.rtai.ip); - break; - - case XK_TRAP: - rtapi_print_msg(level, - "%d: trap event: thread %d - error %d " - "event=%d domain=%u ip:%p sp:%p", - type, detail->task_id, detail->error_code, - detail->flavor.xeno.event, - detail->flavor.xeno.domid, - detail->flavor.xeno.ip, - detail->flavor.xeno.sp); - break; - - // Xenomai Kernel errors - case XK_EINTR: - rtapi_print_msg(level, - "%d: API usage bug: rt_task_unblock() " - "called before release point: " - "thread %d - errno %d", - type, - detail->task_id, - detail->error_code); - break; - - case XK_EPERM: - rtapi_print_msg(level, - "%d: API usage bug: cannot call rt_task_wait_period()" - " from this context: " - "thread %d - errno %d", - type, - detail->task_id, - detail->error_code); - - break; - - // Xenomai User errors - case XU_SIGXCPU: // Xenomai Domain switch - rtapi_print_msg(level, - "%d: Xenomai Domain switch for thread %d", - type, detail->task_id); - log_thread_stats(type, ts); - break; - - case XU_EWOULDBLOCK: - case XK_EWOULDBLOCK: - rtapi_print_msg(level, - "API usage bug: rt_task_set_periodic() not called: " - "thread %d - errno %d", - detail->task_id, - detail->error_code); - break; - - case XU_EINTR: - rtapi_print_msg(level, - "API usage bug: rt_task_unblock() called before" - " release point: thread %d -errno %d", - detail->task_id, - detail->error_code); - break; - - case XU_EPERM: - rtapi_print_msg(level, - "API usage bug: cannot call service from current" - " context: thread %d - errno %d", - detail->task_id, - detail->error_code); - break; - - case XU_UNDOCUMENTED: - case XK_UNDOCUMENTED: - rtapi_print_msg(level, - "%d: unspecified Xenomai error: thread %d - errno %d", - type, - detail->task_id, - detail->error_code); - break; - - default: - rtapi_print_msg(level, - "%d: unspecified exceptiond detail=%p ts=%p", + "%d: unspecified exception detail=%p ts=%p", type, detail, ts); - } + if (error_printed == MAX_RT_ERRORS) rtapi_print_msg(RTAPI_MSG_WARN, "RTAPI: (further messages will be suppressed)\n"); @@ -189,41 +74,5 @@ static int rtapi_default_rt_exception_handler(rtapi_exception_t type, return 0; } -// not every exception might actually update the thread status, -// so output this only if known to be current -static void log_thread_stats(rtapi_exception_t type, - rtapi_threadstatus_t *ts) -{ - int flavor = global_data->rtapi_thread_flavor; - - // generic (flavor-independent) counters - rtapi_print_msg(RTAPI_MSG_WARN, - "updates=%d api_err=%d other_err=%d", - ts->num_updates, ts->api_errors, ts->other_errors); - - // flavor-specific counters - - switch (flavor) { - case RTAPI_XENOMAI_ID: -// case RTAPI_XENOMAI_KERNEL_ID: - if (ts->num_updates) { - rtapi_print_msg(RTAPI_MSG_WARN, - "wait_errors=%d overruns=%d modesw=%d ctxsw=%d" - " pagefaults=%d exectime=%lldnS status=0x%x", - ts->flavor.xeno.wait_errors, - ts->flavor.xeno.total_overruns, - ts->flavor.xeno.modeswitches, - ts->flavor.xeno.ctxswitches, - ts->flavor.xeno.pagefaults, - ts->flavor.xeno.exectime, - ts->flavor.xeno.status); - } - break; - - - default: ; - } -} - #endif diff --git a/src/rtapi/rtapi_exception.h b/src/rtapi/rtapi_exception.h index f27babf0d2..8840cd4bb5 100644 --- a/src/rtapi/rtapi_exception.h +++ b/src/rtapi/rtapi_exception.h @@ -19,105 +19,10 @@ #ifndef _RTAPI_EXCEPTION_H #define _RTAPI_EXCEPTION_H -typedef void * exc_register_t; // questionable - -// this enum lists all possible cause codes -// passed in rtapi_exception_detai_t.type to the exception handler - -typedef enum { - RTAPI_EXCEPTION_NONE=0, - - // RTAI: failures of rt_task_wait_period(), traps - RTAI_RTE_TMROVRN, // an immediate return was taken because the - // next period has already expired. - RTAI_RTE_UNBLKD, // the task was unblocked while sleeping - RTAI_RTE_UNCLASSIFIED, // none of the previous two - RTAI_TRAP, // received via rtapi_trap_handler - - // Xenomai kernel - XK_TRAP, - XK_TRAP_BUG, // same, but failed to identify RT thread - XK_ETIMEDOUT, // release point was missed - // the next one is likely caused by a programming error: - XK_EWOULDBLOCK, // rt_task_wait_period() without previous rt_task_set_periodic() - XK_EINTR, // rt_task_unblock() called before release point - XK_EPERM, // cannot rt_task_wait_period() from this context - XK_UNDOCUMENTED, // unknown error code - - // Xenomai user - XU_SIGXCPU, // RT task switched to secondary domain - XU_SIGXCPU_BUG, // same, but failed to identify RT thread - XU_ETIMEDOUT, // release point was missed - XU_EWOULDBLOCK, // rt_task_wait_period() without previous rt_task_set_periodic() - XU_EINTR, // rt_task_unblock() called before release point - XU_EPERM, // cannot rt_task_wait_period() from this context - XU_UNDOCUMENTED, // unknown error code - - // RT-PREEMPT - RTP_DEADLINE_MISSED, // clock_gettime(CLOCK_MONOTONIC) returned 'too late' - - RTAPI_EXCEPTION_LAST, - -} rtapi_exception_t; - -// ---- per-flavor RT status descriptors ------- -// -// collect thread status variables from various flavors -// the intent is to collect everything 'interesting' -// about a thread and make it accessible via an RTAPI_MAX_TASKS sized array -// in global_data_t, so any HAL entity may peruse it -// this tries to abstract various fields of rather system-specific nature -// in a system-independent, fixed size structure -// the interpretation of members necessarily has to happen in a flavor-specific way -// - only a subset of the fields is valid per flavor - -typedef struct { // xenomai-kernel and xenomai user - // traps really are signals posted to an RT thread in-kernel - int trap_errors; - - // as reported by rt_task_inquire() - // filled in by rtapi_thread_updatestats(task_id) RTAPI call (TBD) - int modeswitches; - int ctxswitches; - int pagefaults; - long long exectime; // Execution time in primary mode in nanoseconds. - unsigned status; // T_BLOCKED etc. - - // errors returned by rt_task_wait_period(): - // set by -ETIMEDOUT: - int wait_errors; // total times the release point was missed - int total_overruns; // running count of the above - // the -EWOULDBLOCK and -EINTR returns are API violations - // and increment api_errors - - // all others increment other_errors -} xenomai_stats_t; - -typedef struct { - int wait_errors; // RT deadline missed -} rtai_stats_t; - -typedef struct { - - int wait_errors; // RT deadline missed +#define MAX_FLAVOR_THREADSTATUS_SIZE 256 +#define MAX_FLAVOR_EXCEPTION_SIZE 128 - // filled in by rtapi_thread_update_stats() RTAPI method - long utime_sec; // user CPU time used - long utime_usec; - - long stime_sec; // system CPU time used - long stime_usec; - - long ru_minflt; // page reclaims (soft page faults) - long ru_majflt; // page faults (hard page faults) - long ru_nsignals; // signals received - long ru_nivcsw; // involuntary context switches - - long startup_ru_minflt; // page fault counts at end of - long startup_ru_majflt; // initalisation - long startup_ru_nivcsw; // - -} rtprempt_stats_t; +typedef void * exc_register_t; // questionable // ---- the common thread status descriptor ------- @@ -134,48 +39,10 @@ typedef struct { int other_errors; // unclassified error returns - peruse log for details // flavor-specific - union { - xenomai_stats_t xeno; - rtai_stats_t rtai; - rtprempt_stats_t rtpreempt; - } flavor; + char flavor[MAX_FLAVOR_THREADSTATUS_SIZE]; } rtapi_threadstatus_t; -// ---- per-flavor exception descriptors ------- - -typedef struct { - // details for a Xenomai trap event - unsigned event; // Xenomai trap event number - unsigned domid; // Domain id - exc_register_t ip; // instruction pointer - exc_register_t sp; // stack pointer - int pid; // user process pid - int errcode; // xnthread_t.errcode - - // passed by ref from rt_task_wait_period() - unsigned long overruns; - - // XU_SIGXCPU: siginfo_t reference - void *siginfo; - -} xenomai_exception_t; - -typedef struct { - // details for a RTAI trap event - unsigned vector; // - int signo; - exc_register_t ip; // instruction pointer - -} rtai_exception_t; - -typedef struct { - // RTP_SIGNAL: unhandled signal: siginfo_t reference - // currently unused - signals handled in rtapi_app - void *siginfo; -} rtpreempt_exception_t; - - // ---- the common thread exception descriptor ------- typedef struct { @@ -183,15 +50,7 @@ typedef struct { int error_code; // as reported by the failing API or system call // flavor-specific - union { - // covers xenomai-user and xenomai-kernel: - xenomai_exception_t xeno; - - rtai_exception_t rtai; - - // covers RT-PREEMPT and Posix: - rtpreempt_exception_t rtpreempt; - } flavor; + char flavor[MAX_FLAVOR_EXCEPTION_SIZE]; } rtapi_exception_detail_t; // Exception handler signature @@ -203,7 +62,7 @@ typedef struct { // 'type' is guaranteed to be set // both of detail and threadstatus might be passed as NULL -typedef int (*rtapi_exception_handler_t) (rtapi_exception_t type, +typedef int (*rtapi_exception_handler_t) (int type, // which determines the interpretation of // the rtapi_exception_detail_t rtapi_exception_detail_t *, diff --git a/src/rtapi/rtapi_flavor.h b/src/rtapi/rtapi_flavor.h index 74d40c91de..f8fabb0b03 100644 --- a/src/rtapi/rtapi_flavor.h +++ b/src/rtapi/rtapi_flavor.h @@ -1,6 +1,10 @@ #ifndef RTAPI_FLAVOR_H #define RTAPI_FLAVOR_H +#ifdef __cplusplus +extern "C" { +#endif + #include "rtapi_common.h" // Put these in order of preference typedef enum RTAPI_FLAVOR_ID { @@ -17,6 +21,8 @@ typedef enum RTAPI_FLAVOR_ID { #define FLAVOR_DOES_IO RTAPI_BIT(0) // userland: whether iopl() needs to be called typedef int (*rtapi_can_run_flavor_t)(void); +typedef void (*rtapi_exception_handler_hook_t)( + int type, rtapi_exception_detail_t *detail, int level); typedef void (*rtapi_module_init_hook_t)(void); typedef void (*rtapi_module_exit_hook_t)(void); typedef int (*rtapi_task_update_stats_hook_t)(void); @@ -39,8 +45,10 @@ typedef struct { const char *name; const int flavor_id; const unsigned long flags; + const unsigned has_rt; const int time_no_clock_monotonic; const rtapi_can_run_flavor_t can_run_flavor; + const rtapi_exception_handler_hook_t exception_handler_hook; const rtapi_module_init_hook_t module_init_hook; const rtapi_module_exit_hook_t module_exit_hook; const rtapi_task_update_stats_hook_t task_update_stats_hook; @@ -63,12 +71,16 @@ typedef flavor_descriptor_t * flavor_descriptor_ptr; extern flavor_descriptor_ptr flavor_descriptor; -int install_flavor(rtapi_flavor_id_t flavor_id); -rtapi_flavor_id_t flavor_byname(const char *flavorname); -rtapi_flavor_id_t default_flavor(void); -int flavor_is_configured(void); -flavor_descriptor_ptr flavor_byid(rtapi_flavor_id_t flavor_id); -const char * flavor_names(flavor_descriptor_ptr * fd); +extern int install_flavor(rtapi_flavor_id_t flavor_id); +extern rtapi_flavor_id_t flavor_byname(const char *flavorname); +extern rtapi_flavor_id_t default_flavor(void); +extern int flavor_is_configured(void); +extern flavor_descriptor_ptr flavor_byid(rtapi_flavor_id_t flavor_id); +extern const char * flavor_names(flavor_descriptor_ptr * fd); + +#ifdef __cplusplus +} +#endif #endif diff --git a/src/rtapi/rtapi_kdetect.c b/src/rtapi/rtapi_kdetect.c deleted file mode 100644 index f54dd7dda2..0000000000 --- a/src/rtapi/rtapi_kdetect.c +++ /dev/null @@ -1,232 +0,0 @@ -/******************************************************************** -* Copyright (C) 2012 - 2013 Michael Haberler -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU Lesser General Public -* License as published by the Free Software Foundation; either -* version 2.1 of the License, or (at your option) any later version. -* -* This program 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 -* Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public -* License along with this library; if not, write to the Free Software -* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -********************************************************************/ - -// this example program documents all the heuristics we know -// which can currently be used to tell various RT and non-RT kernels apart. -// the actual code in rtapi_compat.c just uses a subset of these methods -// for a few test functions (kernel_is_xenomai() etc) - -// kernel + userland environment autodetection -// dig various kernel attributes and libraries to derive a -// syndrome vector - -#include "rtapi.h" -#include "rtapi_kdetect.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -typedef void (*pf)(); -static const char *progname = "rtapi_kdetect"; -int shmdrv_loaded; -long page_size; - -int rtapi_kdetect(unsigned long *feat) -{ - struct stat sb; - void *libxenomai, *libnative, *func; - const char *errmsg; - struct utsname u; - FILE *fd; - struct timespec ts; - - *feat = 0; - if (uname(&u)) { - rtapi_print_msg(RTAPI_MSG_ERR, "%s: uname(): %s\n", - progname, strerror(errno)); - return -1; - } - - // match u.release for soft hints - if ((strcasestr (u.release, "-rtai")) || \ - (strcasestr (u.release, ".rtai"))) - *feat |= UTSNAME_REL_RTAI; - else if (strcasestr (u.release, "-rt")) - *feat |= UTSNAME_REL_RT; - if ((strcasestr (u.release, "-xenomai")) || \ - (strcasestr (u.release, ".xenomai"))) - *feat |= UTSNAME_REL_XENOMAI; - - // a hint of dubious quality - if (strcasestr (u.version, "#rtai")) - *feat |= UTSNAME_VER_RTAI; - - // check for ipipe patch - strong hint for RTAI or Xenomai - if ((stat(PROC_IPIPE, &sb) == 0) && S_ISDIR(sb.st_mode & S_IFMT)) - *feat |= HAS_PROC_IPIPE; - - // Xenomai only: - if ((stat(PROC_IPIPE_XENOMAI, &sb) == 0) && S_ISREG(sb.st_mode)) - *feat |= HAS_PROC_IPIPE_XENOMAI; - - // Xenomai only: - if ((stat(XENO_GID_SYSFS, &sb) == 0) && S_ISREG(sb.st_mode)) - *feat |= HAS_XENO_GID_SYSFS; - - // a strong RT PREEMPT hint - if (strcasestr (u.version, "PREEMPT RT")) - *feat |= UTSNAME_VER_RT_PREEMPT; - - // a strong RT PREEMPT hint - if ((fd = fopen(PREEMPT_RT_SYSFS,"r")) != NULL) { - int flag; - if ((fscanf(fd, "%d", &flag) == 1) && (flag)) - *feat |= SYS_KERNEL_REALTIME_FOUND; - fclose(fd); - } - - // check for hires timers - // this is really a sanitary requirement - // it is 1ns on all kernels (RTAI, RT_PREEMPT, Xenomai, vanilla) - // and so has no discriminatory value - if (clock_getres(CLOCK_MONOTONIC, &ts)) { - rtapi_print_msg(RTAPI_MSG_ERR, "%s: clock_getres(): %s\n", - progname, strerror(errno)); - return -1; - } else { - if ((ts.tv_sec == 0) && (ts.tv_nsec == 1)) - *feat |= HAS_HIRES_TIMERS; - } - - // check for Xenomai fingerprint(s) - strong hint - if ((stat(XNHEAP_DEV_NAME, &sb) == 0) && S_ISCHR(sb.st_mode)) - *feat |= XENO_RTHEAP_FOUND; - - // might be able to run without /proc/xenomai but it's reassuring if it exists - if ((stat(PROC_XENOMAI, &sb) == 0) && S_ISDIR(sb.st_mode)) - *feat |= XENO_PROCENTRY_FOUND; - - // libnative on a non-xenomai kernel wont help, but checking for it might - // yield a useful error message like 'xenomai libraries available but no xenomai - // kernel running' - if ((libxenomai = dlopen(LIBXENOMAI, RTLD_NOW)) != NULL) - *feat |= XENO_LIBXENOMAI; - - if ((libnative = dlopen(LIBNATIVE, RTLD_NOW)) != NULL) - *feat |= XENO_LIBNATIVE; - - // see if we can resolve an important symbol in libnative - if ((libxenomai != NULL) && (libnative != NULL)) { - func = (pf) dlsym(libnative, LIBNATIVE_SYM); - if ( ((errmsg = dlerror()) == NULL) && (func != NULL)) - *feat |= XENO_LIBSYMBOL; - } - if (libxenomai) - dlclose(libxenomai); - if (libnative) - dlclose(libnative); - - // check for RTAI fingerprint(s) - this works only after 'realtime start'! - if ((stat(DEV_RTAI_SHM, &sb) == 0) && S_ISCHR(sb.st_mode)) - *feat |= DEV_RTAI_SHM_FOUND; - - return 0; -} - - -#ifdef TEST -int main(int argc, char **argv) -{ - unsigned long f; - struct utsname u; - - rtapi_set_msg_level(RTAPI_MSG_DBG); - if (uname(&u)) { - rtapi_print_msg(RTAPI_MSG_ERR, "main: uname(): %s\n", - strerror(errno)); - exit(1); - } - - if (!rtapi_kdetect(&f)) { - fprintf(stderr,"feature mask = 0x%lx\n",f); - if (!(f & HAS_HIRES_TIMERS)) { - fprintf(stderr, - "cant detect hires timers. What clunker of a kernel is this? if postwar, please report a bug.\n"); - exit(1); - } - if (f & XENO_RTHEAP_FOUND) { - fprintf(stderr, "a Xenomai kernel\n"); - - if ((f & (SYS_KERNEL_REALTIME_FOUND|UTSNAME_VER_RT_PREEMPT)) == - (SYS_KERNEL_REALTIME_FOUND|UTSNAME_VER_RT_PREEMPT)) { - fprintf(stderr, ".. which also has RT PREEMPT patches applied\n"); - } - - if (!(f & HAS_PROC_IPIPE_XENOMAI)) - fprintf(stderr, "ERROR: Xenomai lacks %s !!\n", PROC_IPIPE_XENOMAI); - - if (!(f & HAS_XENO_GID_SYSFS)) - fprintf(stderr, "ERROR: Xenomai lacks %s !!\n", XENO_GID_SYSFS); - - if (!(f & UTSNAME_REL_XENOMAI)) - fprintf(stderr, "utsname.release looked less than helpful: '%s'\n", - u.release); - - if (f & (UTSNAME_REL_RTAI|UTSNAME_REL_RT)) - fprintf(stderr, "utsname.release looks contradictory: '%s'\n", - u.release); - - if ((f & (XENO_LIBXENOMAI|XENO_LIBNATIVE|XENO_LIBSYMBOL)) == - (XENO_LIBXENOMAI|XENO_LIBNATIVE|XENO_LIBSYMBOL)) - fprintf(stderr, "Xenomai userland library support looks intact\n"); - else { - if (!(f & XENO_LIBXENOMAI)) - fprintf(stderr, "%s unusable\n", LIBXENOMAI); - if (!(f & XENO_LIBNATIVE)) - fprintf(stderr, "%s unusable\n", LIBNATIVE); - if (!(f & XENO_LIBSYMBOL)) - fprintf(stderr, "cant resolve %s in %s\n", LIBNATIVE_SYM, LIBNATIVE); - } - } else { - if ((f & (SYS_KERNEL_REALTIME_FOUND|UTSNAME_VER_RT_PREEMPT)) == - (SYS_KERNEL_REALTIME_FOUND|UTSNAME_VER_RT_PREEMPT)) { - fprintf(stderr, "an RT PREEMPT kernel\n"); - } else { - if (f & HAS_PROC_IPIPE) { - fprintf(stderr, "an RTAI kernel with RT modules %sloaded\n", - (f & DEV_RTAI_SHM_FOUND) ? "" : "not "); - } else { - fprintf(stderr, "assuming a vanilla kernel\n"); - if (f & UTSNAME_REL_RTAI) - fprintf(stderr, "however, utsname.release hints at RTAI: '%s'\n", - u.release); - if (f & UTSNAME_VER_RTAI) - fprintf(stderr, "however, utsname.version hints at RTAI: '%s'\n", - u.version); - if (f & UTSNAME_REL_XENOMAI) - fprintf(stderr, "however, utsname.release hints at Xenomai: '%s'\n", - u.release); - if (f & UTSNAME_REL_RT) - fprintf(stderr, "however, utsname.release hints at RT_PREEMPT: '%s'\n", - u.release); - } - } - } - } else - fprintf(stderr,"rtapi_kdetect failed\n"); - exit(0); -} -#endif diff --git a/src/rtapi/rtapi_kdetect.h b/src/rtapi/rtapi_kdetect.h deleted file mode 100644 index 1e057ed827..0000000000 --- a/src/rtapi/rtapi_kdetect.h +++ /dev/null @@ -1,86 +0,0 @@ -/******************************************************************** - * Copyright (C) 2012, 2013 Michael Haberler - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This program 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - ********************************************************************/ - -// support for thread style autodetection based on digging in the kernel -// and userland libraries - -#include "rtapi_bitops.h" - -// utsname.release matches telltale strings (soft) -#define UTSNAME_REL_RTAI RTAPI_BIT(0) -#define UTSNAME_REL_RT RTAPI_BIT(1) -#define UTSNAME_REL_XENOMAI RTAPI_BIT(2) - -// utsname.version matches "PREEMPT RT" (hard) -#define UTSNAME_VER_RT_PREEMPT RTAPI_BIT(3) - -// utsname.version matches "#rtai" (soft) -#define UTSNAME_VER_RTAI RTAPI_BIT(4) - -#define XENO_RTHEAP_FOUND RTAPI_BIT(5) // /dev/rtheap seen (hard) -#define XENO_PROCENTRY_FOUND RTAPI_BIT(6) // /proc/xenomai seen (hard) - -#define HAS_HIRES_TIMERS RTAPI_BIT(7) // sanitary - assume vanilla if false. -#define SYS_KERNEL_REALTIME_FOUND RTAPI_BIT(8) // RT_PREEMPT (hard) - -#define DEV_RTAI_SHM_FOUND RTAPI_BIT(9) // RTAI (hard) - -// verify the Xenomai userland libraries are present and make sense (sanitary for xenomai) -#define XENO_LIBXENOMAI RTAPI_BIT(10) // can dlopen("libxenomai.so") -#define XENO_LIBNATIVE RTAPI_BIT(11) // can dlopen("libnative.so") -#define XENO_LIBSYMBOL RTAPI_BIT(12) // can resolve symbol in "libnative.so" - -// hard evidence for an ipipe patch in place (RTAI and Xenomai): -#define HAS_PROC_IPIPE RTAPI_BIT(13) // /proc/ipipe exists and is a directory - -// Exists on RTAI and Xenomai -#define PROC_IPIPE "/proc/ipipe" - -// really in nucleus/heap.h but we rather get away with minimum include files -#ifndef XNHEAP_DEV_NAME -#define XNHEAP_DEV_NAME "/dev/rtheap" -#endif - -// test for "/proc/xenomai" existance and a directory -#define PROC_XENOMAI "/proc/xenomai" - -// dlopen() these shared libraries -#define LIBXENOMAI "libxenomai.so" -#ifdef XENOMAI_V2 -#define LIBNATIVE "libnative.so" -#else -#define LIBNATIVE "libalchemy.so" -#endif -// and dig for LIBNATIVE_SYM -#define LIBNATIVE_SYM "rt_task_create" - -// if this exists, and contents is '1', it's RT_PREEMPT -#define PREEMPT_RT_SYSFS "/sys/kernel/realtime" - -// dev/rtai_shm visible only after 'realtime start' -#define DEV_RTAI_SHM "/dev/rtai_shm" - -// These exist on Xenomai but not on RTAI - regular files: -#define PROC_IPIPE_XENOMAI "/proc/ipipe/Xenomai" -#define XENO_GID_SYSFS "/sys/module/xeno_nucleus/parameters/xenomai_gid" - -// hard evidence for Xenomai -#define HAS_PROC_IPIPE_XENOMAI RTAPI_BIT(14) // /proc/ipipe/Xenomai exists -#define HAS_XENO_GID_SYSFS RTAPI_BIT(15) - -int rtapi_kdetect(unsigned long *feat); diff --git a/src/rtapi/rtapi_proc.h b/src/rtapi/rtapi_proc.h deleted file mode 100644 index 9730c87900..0000000000 --- a/src/rtapi/rtapi_proc.h +++ /dev/null @@ -1,366 +0,0 @@ -#ifndef RTAPI_PROC_H -#define RTAPI_PROC_H - -/** RTAPI is a library providing a uniform API for several real time - operating systems. As of ver 2.0, RTLinux and RTAI are supported. -*/ -/******************************************************************** -* Description: rtai_proc.h -* This file, 'rtapi_proc.h', contains code that -* implements several /proc filesystem entries that can -* display the status of the RTAPI. -* -* Author: John Kasunich, Paul Corner -* License: LGPL Version 2 -* -* Copyright (c) 2004 All rights reserved. -* -* Last change: -********************************************************************/ - -/** This file, 'rtapi_proc.h', contains code that implements several - /proc filesystem entries that can display the status of the RTAPI. - This code is common to both the RTAI and RTLinux implementations, - and most likely to any other implementations under Linux. This - data is INTERNAL to the RTAPI implementation, and should not be - included in any application modules. This data also applies - only to kernel modules, and should be included only in the - real-time portion of the implementation. Items that are common - to both the realtime and user-space portions of the implementation - are in rtapi_common.h. -*/ - -/** Copyright (C) 2003 John Kasunich - - Copyright (C) 2003 Paul Corner - - - This library is based on version 1.0, which was released into - the public domain by its author, Fred Proctor. Thanks Fred! -*/ - -/* This library is free software; you can redistribute it and/or - modify it under the terms of version 2.1 of the GNU Lesser General - Public License as published by the Free Software Foundation. - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA -*/ - -/** THE AUTHORS OF THIS LIBRARY ACCEPT ABSOLUTELY NO LIABILITY FOR - ANY HARM OR LOSS RESULTING FROM ITS USE. IT IS _EXTREMELY_ UNWISE - TO RELY ON SOFTWARE ALONE FOR SAFETY. Any machinery capable of - harming persons must have provisions for completely removing power - from all motors, etc, before persons enter any danger area. All - machinery must be designed to comply with local and national safety - codes, and the authors of this software can not, and do not, take - any responsibility for such compliance. -*/ - -/** This code was written as part of the EMC HAL project. For more - information, go to www.linuxcnc.org. -*/ - -/* Internal function for the proc_fs system. */ - -/* The proc file system is available in 2.2 and 2.4 kernels with - minor differences - The 2.4 kernels have a usefull helper function - for creating the proc_fs entries. - It is unlikely that the following implimentaion will work on a 2.0 - series kernel.. -*/ -#ifdef CONFIG_PROC_FS - -#include /* isdigit */ -#include "procfs_macros.h" /* macros for read functions */ -#include /* copy_from_user() */ - -struct proc_dir_entry *rtapi_dir = 0; /* /proc/rtapi directory */ -static struct proc_dir_entry *status_file = 0; /* /proc/rtapi/status */ -static struct proc_dir_entry *modules_file = 0; /* /proc/rtapi/modules */ -static struct proc_dir_entry *tasks_file = 0; /* /proc/rtapi/tasks */ -static struct proc_dir_entry *shmem_file = 0; /* /proc/rtapi/shmem */ -static struct proc_dir_entry *debug_file = 0; /* /proc/rtapi/debug */ -static struct proc_dir_entry *instance_file = 0; /* /proc/rtapi/instance */ - -/** The following are callback functions for the /proc filesystem - When someone reads a /proc file, the appropriate function below - is called, and it must generate output for the reader on the fly. - These functions use the MOD_INC_USE_COUNT and MOD_DEC_USE_COUNT - macros to make sure the RTAPI module is not removed while servicing - a /proc request. -*/ - - -// thread flavors may provide a function to make extra data available -// in procfs -#ifdef HAVE_RTAPI_READ_STATUS_HOOK -void rtapi_proc_read_status_hook(char *page, char **start, off_t off, - int count, int *eof, void *data); -#endif - -PROC_READ_FUN(proc_read_status) -{ - PROC_PRINT_VARS; - PROC_PRINT("******* RTAPI STATUS ********\n"); - PROC_PRINT(" RT Modules = %i\n", rtapi_data->rt_module_count); - PROC_PRINT(" UL Modules = %i\n", rtapi_data->ul_module_count); - PROC_PRINT(" Tasks = %i/%i\n", rtapi_data->task_count, - RTAPI_MAX_TASKS); - PROC_PRINT("Shared memory = %i/%i\n", rtapi_data->shmem_count, - RTAPI_MAX_SHMEMS); - PROC_PRINT("default RT task CPU = %i\n", rtapi_data->rt_cpu); - if (rtapi_data->timer_running) { - PROC_PRINT(" Timer status = Running\n"); - PROC_PRINT(" Timer period = %li nSec\n", rtapi_data->timer_period); - } else { - PROC_PRINT(" Timer status = Stopped\n"); - } - PROC_PRINT("\n"); - PROC_PRINT_DONE; -} -PROC_READ_OPEN_OPS(status_file_fops, proc_read_status); - -PROC_READ_FUN(proc_read_modules) -{ - int n; - char *state_str; - - PROC_PRINT_VARS; - PROC_PRINT("******* RTAPI MODULES *******\n"); - PROC_PRINT("ID Type Name\n"); - for (n = 1; n <= RTAPI_MAX_MODULES; n++) { - if (module_array[n].state != NO_MODULE) { - switch (module_array[n].state) { - case REALTIME: - state_str = "RT "; - break; - case USERSPACE: - state_str = "USER"; - break; - default: - state_str = "????"; - break; - } - PROC_PRINT("%02d %s %s\n", n, state_str, module_array[n].name); - } - } - PROC_PRINT("\n"); - PROC_PRINT_DONE; -} -PROC_READ_OPEN_OPS(modules_file_fops, proc_read_modules); - -PROC_READ_FUN(proc_read_tasks) -{ - int n; - char *state_str; - - PROC_PRINT_VARS; - PROC_PRINT("******** RTAPI TASKS ********\n"); - PROC_PRINT("ID CPU Own Prio State Code\n"); - for (n = 1; n <= RTAPI_MAX_TASKS; n++) { - if (task_array[n].state != EMPTY) { - switch (task_array[n].state) { - case PAUSED: - state_str = "PAUSED "; - break; - case PERIODIC: - state_str = "PERIODIC"; - break; - case FREERUN: - state_str = "FREE RUN"; - break; - case ENDED: - state_str = "ENDED "; - break; - default: - state_str = "UNKNOWN "; - break; - } - PROC_PRINT("%02d %2d %02d %3d %s %p\n", - n, - task_array[n].cpu, - task_array[n].owner, - task_array[n].prio, - state_str, - task_array[n].taskcode); - } - } - PROC_PRINT("\n"); - PROC_PRINT_DONE; -} -PROC_READ_OPEN_OPS(tasks_file_fops, proc_read_tasks); - -PROC_READ_FUN(proc_read_shmem) -{ - int n; - - PROC_PRINT_VARS; - PROC_PRINT("**** RTAPI SHARED MEMORY ****\n"); - PROC_PRINT("ID Users Key Size\n"); - PROC_PRINT(" RT/UL \n"); - for (n = 1; n <= RTAPI_MAX_SHMEMS; n++) { - if (shmem_array[n].key != 0) { - PROC_PRINT("%02d %2d/%-2d %-10d %-10lu\n", - n, shmem_array[n].rtusers, shmem_array[n].ulusers, - shmem_array[n].key, shmem_array[n].size); - } - } - PROC_PRINT("\n"); - PROC_PRINT_DONE; -} -PROC_READ_OPEN_OPS(shmem_file_fops, proc_read_shmem); - -PROC_READ_FUN(proc_read_debug) -{ - PROC_PRINT_VARS; - PROC_PRINT("******* RTAPI MESSAGES ******\n"); - PROC_PRINT(" Message Level = RT:%i User:%i\n", - global_data->rt_msg_level,global_data->user_msg_level); - PROC_PRINT("RT ERROR messages = %s\n", - global_data->rt_msg_level >= RTAPI_MSG_ERR ? "ON" : "OFF"); - PROC_PRINT("WARNING messages = %s\n", - global_data->rt_msg_level >= RTAPI_MSG_WARN ? "ON" : "OFF"); - PROC_PRINT(" INFO messages = %s\n", - global_data->rt_msg_level >= RTAPI_MSG_INFO ? "ON" : "OFF"); - PROC_PRINT(" DEBUG messages = %s\n", - global_data->rt_msg_level >= RTAPI_MSG_DBG ? "ON" : "OFF"); - - PROC_PRINT("User ERROR messages = %s\n", - global_data->user_msg_level >= RTAPI_MSG_ERR ? "ON" : "OFF"); - PROC_PRINT("WARNING messages = %s\n", - global_data->user_msg_level >= RTAPI_MSG_WARN ? "ON" : "OFF"); - PROC_PRINT(" INFO messages = %s\n", - global_data->user_msg_level >= RTAPI_MSG_INFO ? "ON" : "OFF"); - PROC_PRINT(" DEBUG messages = %s\n", - global_data->user_msg_level >= RTAPI_MSG_DBG ? "ON" : "OFF"); - PROC_PRINT("\n"); - PROC_PRINT_DONE; -} - -static ssize_t proc_write_debug(struct file *file, - const char __user *buffer, size_t count, - loff_t *data) -{ - char c; - int msg_level; - - /* copy 1 byte from user space */ - if (copy_from_user(&c, buffer, 1)) { - return -1; - } - /* check it is a digit */ - if (isdigit(c)) { - /* convert to a number */ - msg_level = (int) (c - '0'); - /* cap the value if it is outside the valid range */ - if (msg_level < RTAPI_MSG_NONE) { - msg_level = RTAPI_MSG_NONE; - } - if (msg_level > RTAPI_MSG_ALL) { - msg_level = RTAPI_MSG_ALL; - } - global_data-> rt_msg_level = msg_level; - } - /* tell whoever called us that we used all the data, even though we - really only used the first byte */ - return count; -} -PROC_READ_WRITE_OPEN_OPS(debug_file_fops, proc_read_debug, proc_write_debug) - -PROC_READ_FUN(proc_read_instance) -{ - PROC_PRINT_VARS; - PROC_PRINT("%i\n", rtapi_instance); - PROC_PRINT_DONE; -} -PROC_READ_OPEN_OPS(instance_file_fops, proc_read_instance); - -/** proc_init() initializes the /proc filesystem entries, - creating the directory and files, and linking them - to the appropriate callback functions. This function - is called from the init_module() function of the - RTAPI implementation. -*/ - -static int proc_init(void) -{ - /* create the rtapi directory "/proc/rtapi" */ - rtapi_dir = CREATE_PROC_ENTRY("rtapi",S_IFDIR,NULL,NULL); - if (rtapi_dir == 0) - return -1; - - /* create read only file "/proc/rtapi/status" */ - status_file = \ - CREATE_PROC_ENTRY("status",S_IRUGO,rtapi_dir,&status_file_fops); - - /* create read only file "/proc/rtapi/modules" */ - modules_file = \ - CREATE_PROC_ENTRY("modules",S_IRUGO,rtapi_dir,&modules_file_fops); - - /* create read only file "/proc/rtapi/tasks" */ - tasks_file = \ - CREATE_PROC_ENTRY("tasks",S_IRUGO,rtapi_dir,&tasks_file_fops); - - /* create read only file "/proc/rtapi/shmem" */ - shmem_file = \ - CREATE_PROC_ENTRY("shmem",S_IRUGO,rtapi_dir,&shmem_file_fops); - - /* create read/write file "/proc/rtapi/debug" */ - debug_file = \ - CREATE_PROC_ENTRY("debug",S_IRUGO|S_IWUGO,rtapi_dir,&debug_file_fops); - - /* create read only file "/proc/rtapi/instance" */ - instance_file = \ - CREATE_PROC_ENTRY("instance",S_IRUGO,rtapi_dir,&instance_file_fops); - - return 0; -} - -/** proc_clean() is called from the cleanup_module function of - of the RTAPI implementation. It removes the rtapi entries - from the /proc filesystem. Failing to remove a /proc - entry before the module is removed may cause kernel panics. -*/ - -static void proc_clean(void) -{ - /* remove /proc entries, only if they exist */ - if (rtapi_dir != NULL) { - if (status_file != NULL) { - remove_proc_entry("status", rtapi_dir); - status_file = NULL; - } - if (modules_file != NULL) { - remove_proc_entry("modules", rtapi_dir); - modules_file = NULL; - } - if (tasks_file != NULL) { - remove_proc_entry("tasks", rtapi_dir); - tasks_file = NULL; - } - if (shmem_file != NULL) { - remove_proc_entry("shmem", rtapi_dir); - shmem_file = NULL; - } - if (debug_file != NULL) { - remove_proc_entry("debug", rtapi_dir); - debug_file = NULL; - } - if (instance_file != NULL) { - remove_proc_entry("instance", rtapi_dir); - instance_file = NULL; - } - remove_proc_entry("rtapi", NULL); - } -} - -EXPORT_SYMBOL(rtapi_dir); - -#endif /* CONFIG_PROC_FS */ -#endif /* RTAPI_PROC_H */ diff --git a/src/rtapi/ulapi_autoload.c b/src/rtapi/ulapi_autoload.c index fe19a0fc46..a5318dcb16 100644 --- a/src/rtapi/ulapi_autoload.c +++ b/src/rtapi/ulapi_autoload.c @@ -18,7 +18,6 @@ #include // snprintf -#include // for dlopen/dlsym ulapi-$THREADSTYLE.so #include #include // PATH_MAX #include // exit() diff --git a/src/rtapi/xenomai.c b/src/rtapi/xenomai.c index 313cec4025..25462da21a 100644 --- a/src/rtapi/xenomai.c +++ b/src/rtapi/xenomai.c @@ -40,6 +40,11 @@ #define XENO_GID_SYSFS "/sys/module/xeno_nucleus/parameters/xenomai_gid" +// Access the xenomai_stats_t thread status object +#define FTS(ts) ((xenomai_stats_t)ts->flavor) +// Access the xenomai_exception_t thread exception detail object +#define FED(detail) ((xenomai_exception_t)detail.flavor) + /* RTAPI task functions */ RT_TASK ostask_array[RTAPI_MAX_TASKS + 1]; @@ -79,17 +84,17 @@ int xenomai_task_update_stats_hook(void) rtapi_threadstatus_t *ts = &global_data->thread_status[task_id]; #ifdef XENOMAI_V2 - ts->flavor.xeno.modeswitches = rtinfo.modeswitches; - ts->flavor.xeno.ctxswitches = rtinfo.ctxswitches; - ts->flavor.xeno.pagefaults = rtinfo.pagefaults; - ts->flavor.xeno.exectime = rtinfo.exectime; - ts->flavor.xeno.status = rtinfo.status; + FTS(fts).modeswitches = rtinfo.modeswitches; + FTS(fts).ctxswitches = rtinfo.ctxswitches; + FTS(fts).pagefaults = rtinfo.pagefaults; + FTS(fts).exectime = rtinfo.exectime; + FTS(fts).status = rtinfo.status; #else - ts->flavor.xeno.modeswitches = rtinfo.stat.msw; - ts->flavor.xeno.ctxswitches = rtinfo.stat.csw; - ts->flavor.xeno.pagefaults = rtinfo.stat.pf; - ts->flavor.xeno.exectime = rtinfo.stat.xtime; - ts->flavor.xeno.status = rtinfo.stat.status; + FTS(fts).modeswitches = rtinfo.stat.msw; + FTS(fts).ctxswitches = rtinfo.stat.csw; + FTS(fts).pagefaults = rtinfo.stat.pf; + FTS(fts).exectime = rtinfo.stat.xtime; + FTS(fts).status = rtinfo.stat.status; #endif ts->num_updates++; @@ -374,7 +379,7 @@ int xenomai_wait_hook(const int flags) { rtapi_exception_detail_t detail = {0}; rtapi_threadstatus_t *ts = &global_data->thread_status[task_id]; - rtapi_exception_t type; + xenomai_exception_id_t type; // exception descriptor detail.task_id = task_id; @@ -385,11 +390,11 @@ int xenomai_wait_hook(const int flags) { case -ETIMEDOUT: // release point was missed - detail.flavor.xeno.overruns = overruns; + FED(detail).overruns = overruns; // update thread status in global_data - ts->flavor.xeno.wait_errors++; - ts->flavor.xeno.total_overruns += overruns; + FTS(fts).wait_errors++; + FTS(fts).total_overruns += overruns; type = XU_ETIMEDOUT; break; @@ -551,10 +556,21 @@ int user_in_xenomai_group() return 0; } -int xenomi_flavor_check(void) { +int xenomai_flavor_check(void) { // catch installation error: user not in xenomai group - int retval = user_in_xenomai_group() + int retval = user_in_xenomai_group(); + if (sizeof(xenomai_stats_t) > MAX_FLAVOR_THREADSTATUS_SIZE) { + fprintf(stderr, "BUG: MAX_FLAVOR_THREADSTATUS_SIZE too " + "small for Xenomai\n"); + exit(1); + } + + if (sizeof(xenomai_exception_t) > MAX_FLAVOR_EXCEPTION_SIZE) { + fprintf(stderr, "BUG: MAX_FLAVOR_EXCEPTION_SIZE too " + "small for Xenomai\n"); + exit(1); + } switch (retval) { case 1: // yes @@ -575,7 +591,7 @@ int xenomi_flavor_check(void) { } -void print_thread_stats(int task_id) +void xenomai_print_thread_stats(int task_id) { rtapi_threadstatus_t *ts = &global_data->thread_status[task_id]; @@ -587,33 +603,87 @@ void print_thread_stats(int task_id) rtapi_print("other_err=%d\n", ts->api_errors); } - rtapi_print(" wait_errors=%d\t", - ts->flavor.xeno.wait_errors); - rtapi_print("overruns=%d\t", - ts->flavor.xeno.total_overruns); - rtapi_print("modeswitches=%d\t", - ts->flavor.xeno.modeswitches); - rtapi_print("contextswitches=%d\n", - ts->flavor.xeno.ctxswitches); - rtapi_print(" pagefaults=%d\t", - ts->flavor.xeno.pagefaults); - rtapi_print("exectime=%llduS\t", - ts->flavor.xeno.exectime/1000); - rtapi_print("status=0x%x\n", - ts->flavor.xeno.status); + rtapi_print(" wait_errors=%d\t", FTS(fts).wait_errors); + rtapi_print("overruns=%d\t", FTS(fts).total_overruns); + rtapi_print("modeswitches=%d\t", FTS(fts).modeswitches); + rtapi_print("contextswitches=%d\n", FTS(fts).ctxswitches); + rtapi_print(" pagefaults=%d\t", FTS(fts).pagefaults); + rtapi_print("exectime=%llduS\t", FTS(fts).exectime/1000); + rtapi_print("status=0x%x\n", FTS(fts).status); rtapi_print("\n"); } +void xenomai_exception_handler_hook(int type, + rtapi_exception_detail_t *detail, + int level) +{ + switch ((xenomai_exception_id_t)type) { + // Timing violations + case XU_ETIMEDOUT: + rtapi_print_msg(level, + "%d: Unexpected realtime delay on RT thread %d ", + type, detail->task_id); + xenomai_print_thread_stats(detail->task_id); + break; + // Xenomai User errors + case XU_SIGXCPU: // Xenomai Domain switch + rtapi_print_msg(level, + "%d: Xenomai Domain switch for thread %d", + type, detail->task_id); + xenomai_print_thread_stats(detail->task_id); + break; + case XU_EWOULDBLOCK: + rtapi_print_msg(level, + "API usage bug: rt_task_set_periodic() not called: " + "thread %d - errno %d", + detail->task_id, + detail->error_code); + break; + + case XU_EINTR: + rtapi_print_msg(level, + "API usage bug: rt_task_unblock() called before" + " release point: thread %d -errno %d", + detail->task_id, + detail->error_code); + break; + + case XU_EPERM: + rtapi_print_msg(level, + "API usage bug: cannot call service from current" + " context: thread %d - errno %d", + detail->task_id, + detail->error_code); + break; + + case XU_UNDOCUMENTED: + rtapi_print_msg(level, + "%d: unspecified Xenomai error: thread %d - errno %d", + type, + detail->task_id, + detail->error_code); + break; + + default: + rtapi_print_msg(level, + "%d: unspecified exception detail=%p ts=%p", + type, detail, ts); + } +} + flavor_descriptor_t flavor_rt_prempt_descriptor = { .name = "xenomai", .flavor_id = RTAPI_XENOMAI_ID, .flags = FLAVOR_DOES_IO, + .has_rt = 1, .time_no_clock_monotonic = 1, .can_run_flavor = xenomai_can_run_flavor, + .exception_handler_hook = xenomai_exception_handler_hook, .module_init_hook = xenomai_module_init_hook, .module_exit_hook = xenomai_module_exit_hook, .task_update_stats_hook = xenomai_update_stats_hook, + .print_thread_stats_hook = xenomai_print_thread_stats, .task_new_hook = NULL, .task_delete_hook = xenomai_task_delete_hook, .task_start_hook = xenomai_task_start_hook, diff --git a/src/rtapi/xenomai.h b/src/rtapi/xenomai.h index a0602d835f..e7f3d41d78 100644 --- a/src/rtapi/xenomai.h +++ b/src/rtapi/xenomai.h @@ -21,4 +21,44 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ********************************************************************/ +typedef enum { + XU_EXCEPTION_NONE=0, + + XU_SIGXCPU, // RT task switched to secondary domain + XU_SIGXCPU_BUG, // same, but failed to identify RT thread + XU_ETIMEDOUT, // release point was missed + XU_EWOULDBLOCK, // rt_task_wait_period() without previous rt_task_set_periodic() + XU_EINTR, // rt_task_unblock() called before release point + XU_EPERM, // cannot rt_task_wait_period() from this context + XU_UNDOCUMENTED, // unknown error code + + XU_EXCEPTION_LAST, + +} xenomai_exception_id_t; + +typedef struct { + // passed by ref from rt_task_wait_period() + unsigned long overruns; +} xenomai_exception_t; + + +typedef struct { + // as reported by rt_task_inquire() + // filled in by rtapi_thread_updatestats(task_id) RTAPI call (TBD) + int modeswitches; + int ctxswitches; + int pagefaults; + long long exectime; // Execution time in primary mode in nanoseconds. + unsigned status; // T_BLOCKED etc. + + // errors returned by rt_task_wait_period(): + // set by -ETIMEDOUT: + int wait_errors; // total times the release point was missed + int total_overruns; // running count of the above + // the -EWOULDBLOCK and -EINTR returns are API violations + // and increment api_errors + + // all others increment other_errors +} xenomai_stats_t; + extern flavor_descriptor_t flavor_xenomai_descriptor; diff --git a/src/workaround/hardy-amd64/asm/rtai_lxrt.h b/src/workaround/hardy-amd64/asm/rtai_lxrt.h deleted file mode 100644 index 16c316a7f8..0000000000 --- a/src/workaround/hardy-amd64/asm/rtai_lxrt.h +++ /dev/null @@ -1,286 +0,0 @@ -#warning "manually modified header /usr/realtime-2.6.24-16-rtai/include/asm-x86_64/rtai_lxrt.h" - -#ifdef BROKEN_RTAI_LXRT - -/* Copyright (C) 1999-2003 Paolo Mantegazza - * extensions for user space modules are jointly copyrighted (2000) with: - * Pierre Cloutier , - * Steve Papacharalambous . - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. - */ - -#ifndef _RTAI_ASM_X8664_LXRT_H -#define _RTAI_ASM_X8664_LXRT_H - -#include - -// the following include is in error, see https://gna.org/bugs/?19185 -// #include - -#include - -#ifdef CONFIG_RTAI_LXRT_USE_LINUX_SYSCALL -#define USE_LINUX_SYSCALL -#else -#undef USE_LINUX_SYSCALL -#endif - -#define RTAI_SYSCALL_NR 0x70000000 -#define RTAI_SYSCALL_CODE rdi -#define RTAI_SYSCALL_ARGS rsi -#define RTAI_SYSCALL_RETPNT rdx - -#define RTAI_FAKE_LINUX_SYSCALL 39 - -#ifndef NR_syscalls -#define NR_syscalls __NR_syscall_max -#endif - -#define LINUX_SYSCALL_NR orig_rax -#define LINUX_SYSCALL_REG1 rdi -#define LINUX_SYSCALL_REG2 rsi -#define LINUX_SYSCALL_REG3 rdx -#define LINUX_SYSCALL_REG4 r10 -#define LINUX_SYSCALL_REG5 r8 -#define LINUX_SYSCALL_REG6 r9 -#define LINUX_SYSCALL_RETREG rax -#define LINUX_SYSCALL_FLAGS eflags - -#define LXRT_DO_IMMEDIATE_LINUX_SYSCALL(regs) \ - do { \ - regs->rcx = regs->r10; \ - regs->LINUX_SYSCALL_RETREG = ((asmlinkage int (*)(long, ...))sys_call_table[regs->rax])(regs->rdi, regs->rsi, regs->rdx, regs->rcx, regs->rax, regs->r8, regs->r9, regs->r10, regs->r11, regs->rbx, regs->rbp, regs->r12, regs->r13, regs->r14, regs->r15); \ - } while (0) - -#define SET_LXRT_RETVAL_IN_SYSCALL(regs, retval) \ - do { \ - if (regs->RTAI_SYSCALL_RETPNT) { \ - rt_copy_to_user((void *)regs->RTAI_SYSCALL_RETPNT, &retval, sizeof(retval)); \ - } \ - } while (0) - -#define LOW 0 -#define HIGH 1 - -#if defined(CONFIG_RTAI_RTC_FREQ) && CONFIG_RTAI_RTC_FREQ >= 2 - -#define TIMER_NAME "RTC" -#define TIMER_FREQ CONFIG_RTAI_RTC_FREQ -#define TIMER_LATENCY 0 -#define TIMER_SETUP_TIME 0 -#define ONESHOT_SPAN 0 - -#else /* CONFIG_RTAI_RTC_FREQ == 0 */ - -#ifdef CONFIG_X86_LOCAL_APIC - -#define TIMER_NAME "APIC" -#define TIMER_TYPE 1 -#define HRT_LINUX_TIMER_NAME "lapic" -#define FAST_TO_READ_TSC -#define TIMER_FREQ RTAI_FREQ_APIC -#define TIMER_LATENCY RTAI_LATENCY_APIC -#define TIMER_SETUP_TIME RTAI_SETUP_TIME_APIC -#define ONESHOT_SPAN (CPU_FREQ/(CONFIG_RTAI_CAL_FREQS_FACT + 2)) //(0x7FFFFFFFLL*(CPU_FREQ/TIMER_FREQ)) -#ifdef CONFIG_GENERIC_CLOCKEVENTS -#define USE_LINUX_TIMER -#define update_linux_timer(cpuid) \ - do { hal_pend_uncond(LOCAL_TIMER_IPI, cpuid); } while (0) -#else /* !CONFIG_GENERIC_CLOCKEVENTS */ -#define update_linux_timer(cpuid) -#endif /* CONFIG_GENERIC_CLOCKEVENTS */ - -#else /* !CONFIG_X86_LOCAL_APIC */ - -#define USE_LINUX_TIMER -#define TIMER_NAME "8254-PIT" -#define TIMER_TYPE 0 -#define HRT_LINUX_TIMER_NAME "pit" -#define TIMER_FREQ RTAI_FREQ_8254 -#define TIMER_LATENCY RTAI_LATENCY_8254 -#define TIMER_SETUP_TIME RTAI_SETUP_TIME_8254 -#define ONESHOT_SPAN ((0x7FFF*(CPU_FREQ/TIMER_FREQ))/(CONFIG_RTAI_CAL_FREQS_FACT + 1)) //(0x7FFF*(CPU_FREQ/TIMER_FREQ)) -#define update_linux_timer(cpuid) hal_pend_uncond(TIMER_8254_IRQ, cpuid) - -#endif /* CONFIG_X86_LOCAL_APIC */ - -#endif /* CONFIG_RTAI_RTC_FREQ != 0 */ - -union rtai_lxrt_t { - RTIME rt; - long i[1]; - void *v[1]; -}; - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#ifdef __KERNEL__ - -#include -#include - -static inline void _lxrt_context_switch (struct task_struct *prev, struct task_struct *next, int cpuid) -{ - extern void *context_switch(void *, void *, void *); -/* REMARK: the line below is not needed in i386, why should it be so if both - math_restore do a "clts" before orring TS_USEDFPU in status ????? */ - if (task_thread_info(prev)->status & TS_USEDFPU) clts(); -#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,18) - prev->fpu_counter = 0; -#endif - context_switch(NULL, prev, next); -} - -#if 0 -#define IN_INTERCEPT_IRQ_ENABLE() do { rtai_hw_sti(); } while (0) -#define IN_INTERCEPT_IRQ_DISABLE() do { rtai_hw_cli(); } while (0) -#else -#define IN_INTERCEPT_IRQ_ENABLE() do { } while (0) -#define IN_INTERCEPT_IRQ_DISABLE() do { } while (0) -#endif - -#if 0 // optimised (?) -static inline void kthread_fun_set_jump(struct task_struct *lnxtsk) -{ - lnxtsk->rtai_tskext(TSKEXT2) = kmalloc(sizeof(struct thread_struct)/* + sizeof(struct thread_info)*/ + (lnxtsk->thread.rsp & ~(THREAD_SIZE - 1)) + THREAD_SIZE - lnxtsk->thread.rsp, GFP_KERNEL); - *((struct thread_struct *)lnxtsk->rtai_tskext(TSKEXT2)) = lnxtsk->thread; -// memcpy(lnxtsk->rtai_tskext(TSKEXT2) + sizeof(struct thread_struct), (void *)(lnxtsk->thread.rsp & ~(THREAD_SIZE - 1)), sizeof(struct thread_info)); - memcpy(lnxtsk->rtai_tskext(TSKEXT2) + sizeof(struct thread_struct)/* + sizeof(struct thread_info)*/, (void *)(lnxtsk->thread.rsp), (lnxtsk->thread.rsp & ~(THREAD_SIZE - 1)) + THREAD_SIZE - lnxtsk->thread.rsp); -} - -static inline void kthread_fun_long_jump(struct task_struct *lnxtsk) -{ - lnxtsk->thread = *((struct thread_struct *)lnxtsk->rtai_tskext(TSKEXT2)); -// memcpy((void *)(lnxtsk->thread.rsp & ~(THREAD_SIZE - 1)), lnxtsk->rtai_tskext(TSKEXT2) + sizeof(struct thread_struct), sizeof(struct thread_info)); - memcpy((void *)lnxtsk->thread.rsp, lnxtsk->rtai_tskext(TSKEXT2) + sizeof(struct thread_struct)/* + sizeof(struct thread_info)*/, (lnxtsk->thread.rsp & ~(THREAD_SIZE - 1)) + THREAD_SIZE - lnxtsk->thread.rsp); -} -#else // brute force -static inline void kthread_fun_set_jump(struct task_struct *lnxtsk) -{ - lnxtsk->rtai_tskext(TSKEXT2) = kmalloc(sizeof(struct thread_struct) + THREAD_SIZE, GFP_KERNEL); - *((struct thread_struct *)lnxtsk->rtai_tskext(TSKEXT2)) = lnxtsk->thread; - memcpy(lnxtsk->rtai_tskext(TSKEXT2) + sizeof(struct thread_struct), (void *)(lnxtsk->thread.rsp & ~(THREAD_SIZE - 1)), THREAD_SIZE); -} - -static inline void kthread_fun_long_jump(struct task_struct *lnxtsk) -{ - lnxtsk->thread = *((struct thread_struct *)lnxtsk->rtai_tskext(TSKEXT2)); - memcpy((void *)(lnxtsk->thread.rsp & ~(THREAD_SIZE - 1)), lnxtsk->rtai_tskext(TSKEXT2) + sizeof(struct thread_struct), THREAD_SIZE); -} -#endif - -#define rt_copy_from_user(a, b, c) \ - ( { int ret = __copy_from_user_inatomic(a, b, c); ret; } ) - -#define rt_copy_to_user(a, b, c) \ - ( { int ret = __copy_to_user_inatomic(a, b, c); ret; } ) - -#define rt_put_user __put_user -#define rt_get_user __get_user - -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19) - -#define rt_strncpy_from_user(a, b, c) \ - ( { int ret = strncpy_from_user(a, b, c); ret; } ) - -#else - -/* - * From Linux lib/usercopy.c. - */ - -#define __do_strncpy_from_user(dst,src,count,res) \ -do { \ - long __d0, __d1, __d2; \ - __asm__ __volatile__( \ - " testq %1,%1\n" \ - " jz 2f\n" \ - "0: lodsb\n" \ - " stosb\n" \ - " testb %%al,%%al\n" \ - " jz 1f\n" \ - " decq %1\n" \ - " jnz 0b\n" \ - "1: subq %1,%0\n" \ - "2:\n" \ - ".section .fixup,\"ax\"\n" \ - "3: movq %5,%0\n" \ - " jmp 2b\n" \ - ".previous\n" \ - ".section __ex_table,\"a\"\n" \ - " .align 8\n" \ - " .quad 0b,3b\n" \ - ".previous" \ - : "=r"(res), "=c"(count), "=&a" (__d0), "=&S" (__d1), \ - "=&D" (__d2) \ - : "i"(-EFAULT), "0"(count), "1"(count), "3"(src), "4"(dst) \ - : "memory"); \ -} while (0) - -static inline long rt_strncpy_from_user(char *dst, const char __user *src, long count) -{ - long res; - __do_strncpy_from_user(dst, src, count, res); - return res; -} - -#endif - -//#define RTAI_DO_LINUX_SIGNAL -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,16) -extern int FASTCALL(do_signal(struct pt_regs *regs, sigset_t *oldset)); -#define RT_DO_SIGNAL(regs) do_signal(regs, NULL) -#else -__attribute__((regparm(3))) void do_notify_resume(struct pt_regs *regs, void *_unused, __u32 thread_info_flags); -#define RT_DO_SIGNAL(regs) do_notify_resume(regs, NULL, (_TIF_SIGPENDING | _TIF_RESTORE_SIGMASK)); -#endif - -#else /* !__KERNEL__ */ - -/* NOTE: Keep the following routines unfold: this is a compiler - compatibility issue. */ - -#include -#include - -static union rtai_lxrt_t _rtai_lxrt(long srq, void *arg) -{ - union rtai_lxrt_t retval; -#if 1 //def USE_LINUX_SYSCALL - syscall(RTAI_SYSCALL_NR, srq, arg, &retval); -#else - RTAI_DO_TRAP(RTAI_SYS_VECTOR, retval, srq, arg); -#endif - return retval; -} - -static inline union rtai_lxrt_t rtai_lxrt(long dynx, long lsize, long srq, void *arg) -{ - return _rtai_lxrt(ENCODE_LXRT_REQ(dynx, srq, lsize), arg); -} - -#define rtai_iopl() do { extern int iopl(int); iopl(3); } while (0) - -#endif /* __KERNEL__ */ - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* !_RTAI_ASM_X8664_LXRT_H */ -#endif // BROKEN_RTAI_LXRT - From 42abb9d2d24669c001db22ae508be1a2d3b09c87 Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 18 Feb 2019 15:42:16 +0800 Subject: [PATCH 454/516] Move rtapi flavor-related sources to rtapi/flavor subdirectory --- src/rtapi/{ => flavor}/rt-preempt.c | 31 +- src/rtapi/{ => flavor}/rt-preempt.h | 0 src/rtapi/{ => flavor}/rtapi_flavor.c | 11 +- src/rtapi/{ => flavor}/rtapi_flavor.h | 20 +- src/rtapi/flavor/ulapi.c | 44 ++ src/rtapi/flavor/ulapi.h | 25 + src/rtapi/flavor/xenomai.c | 691 ++++++++++++++++++++++++++ src/rtapi/flavor/xenomai.h | 64 +++ src/rtapi/librtapi.c | 2 - 9 files changed, 862 insertions(+), 26 deletions(-) rename src/rtapi/{ => flavor}/rt-preempt.c (96%) rename src/rtapi/{ => flavor}/rt-preempt.h (100%) rename src/rtapi/{ => flavor}/rtapi_flavor.c (91%) rename src/rtapi/{ => flavor}/rtapi_flavor.h (78%) create mode 100644 src/rtapi/flavor/ulapi.c create mode 100644 src/rtapi/flavor/ulapi.h create mode 100644 src/rtapi/flavor/xenomai.c create mode 100644 src/rtapi/flavor/xenomai.h delete mode 100644 src/rtapi/librtapi.c diff --git a/src/rtapi/rt-preempt.c b/src/rtapi/flavor/rt-preempt.c similarity index 96% rename from src/rtapi/rt-preempt.c rename to src/rtapi/flavor/rt-preempt.c index 039f113f50..65a83c7b77 100644 --- a/src/rtapi/rt-preempt.c +++ b/src/rtapi/flavor/rt-preempt.c @@ -57,6 +57,10 @@ // Access the rtpreempt_exception_t thread exception detail object #define FED(detail) ((rtpreempt_exception_t)detail.flavor) +// Check the exception and stats struct sizes +ASSERT_SIZE_WITHIN(rtpreempt_exception_t, MAX_FLAVOR_EXCEPTION_SIZE); +ASSERT_SIZE_WITHIN(rtpreempt_stats_t, MAX_FLAVOR_THREADSTATUS_SIZE); + /* Lock for task_array and module_array allocations */ static pthread_key_t task_key; static pthread_once_t task_key_once = PTHREAD_ONCE_INIT; @@ -98,7 +102,7 @@ long long int posix_get_clocks_hook(void) #ifdef RTAPI -void posix_module_init_hook(void) +int posix_module_init_hook(void) { int ret; @@ -109,9 +113,10 @@ void posix_module_init_hook(void) else rtapi_print_msg(RTAPI_MSG_INFO, "libcgroup initialization failed: (%d) %s\n", ret, cgroup_strerror(ret)); + return ret; } #else -void posix_module_init_hook(void) {} +int posix_module_init_hook(void) { return 0; } #endif #ifdef RTAPI @@ -570,24 +575,12 @@ int kernel_is_rtpreempt() int posix_can_run_flavor() { - if (sizeof(rtpreempt_stats_t) > MAX_FLAVOR_THREADSTATUS_SIZE) { - fprintf(stderr, "BUG: MAX_FLAVOR_THREADSTATUS_SIZE too " - "small for POSIX/RT_PREEMPT threads\n"); - exit(1); - } - - if (sizeof(rtpreempt_exception_t) > MAX_FLAVOR_EXCEPTION_SIZE) { - fprintf(stderr, "BUG: MAX_FLAVOR_EXCEPTION_SIZE too " - "small for POSIX/RT_PREEMPT threads\n"); - exit(1); - } - return 1; } int rtpreempt_can_run_flavor() { - return posix_can_run_flavor() && kernel_is_rtpreempt(); + return kernel_is_rtpreempt(); } @@ -644,12 +637,10 @@ void rtpreempt_exception_handler_hook(int type, flavor_descriptor_t flavor_rt_prempt_descriptor = { .name = "rt-preempt", .flavor_id = RTAPI_FLAVOR_RT_PREEMPT_ID, - .flags = FLAVOR_DOES_IO, - .has_rt = 1, - .time_no_clock_monotonic = 0, + .flags = FLAVOR_DOES_IO + FLAVOR_IS_RT, .can_run_flavor = rtpreempt_can_run_flavor, .exception_handler_hook = rtpreempt_exception_handler_hook, - .module_init_hook = NULL, + .module_init_hook = posix_module_init_hook, .module_exit_hook = NULL, .task_update_stats_hook = NULL, .print_thread_stats_hook = print_thread_stats, @@ -676,8 +667,6 @@ flavor_descriptor_t flavor_posix_descriptor = { .name = "posix", .flavor_id = RTAPI_FLAVOR_POSIX_ID, .flags = 0, - .has_rt = 0, - .time_no_clock_monotonic = 0, .can_run_flavor = posix_can_run_flavor, .exception_handler_hook = NULL, .module_init_hook = NULL, diff --git a/src/rtapi/rt-preempt.h b/src/rtapi/flavor/rt-preempt.h similarity index 100% rename from src/rtapi/rt-preempt.h rename to src/rtapi/flavor/rt-preempt.h diff --git a/src/rtapi/rtapi_flavor.c b/src/rtapi/flavor/rtapi_flavor.c similarity index 91% rename from src/rtapi/rtapi_flavor.c rename to src/rtapi/flavor/rtapi_flavor.c index bdd4c2cbf5..871070140c 100644 --- a/src/rtapi/rtapi_flavor.c +++ b/src/rtapi/flavor/rtapi_flavor.c @@ -1,8 +1,13 @@ #include // getenv #include // fprintf +#ifdef ULAPI +#include "ulapi.h" +#endif +#ifdef RTAPI #include "rtapi_flavor.h" #include "rt-preempt.h" +#endif #ifdef HAVE_XENOMAI_THREADS #include "xenomai.h" #endif @@ -10,6 +15,9 @@ flavor_descriptor_ptr flavor_descriptor = NULL; static flavor_descriptor_ptr flavor_list[] = { +#ifdef ULAPI + &flavor_ulapi_descriptor, +#endif #ifdef RTAPI # ifdef HAVE_XENOMAI_THREADS &flavor_xenomai_descriptor, @@ -76,7 +84,8 @@ rtapi_flavor_id_t default_flavor(void) // Find best flavor for (flavor = flavor_list; flavor != NULL; flavor++) { - if ((*flavor)->flavor_id > flavor_id && (*flavor)->can_run_flavor()) + if ((*flavor)->flavor_id > flavor_id && + ((*flavor)->can_run_flavor == NULL || (*flavor)->can_run_flavor())) flavor_id = (*flavor)->flavor_id; } if (!flavor_id) { diff --git a/src/rtapi/rtapi_flavor.h b/src/rtapi/flavor/rtapi_flavor.h similarity index 78% rename from src/rtapi/rtapi_flavor.h rename to src/rtapi/flavor/rtapi_flavor.h index f8fabb0b03..b2275a77f9 100644 --- a/src/rtapi/rtapi_flavor.h +++ b/src/rtapi/flavor/rtapi_flavor.h @@ -18,12 +18,28 @@ typedef enum RTAPI_FLAVOR_ID { } rtapi_flavor_id_t; -#define FLAVOR_DOES_IO RTAPI_BIT(0) // userland: whether iopl() needs to be called +// Flavor features: flavor_descriptor_t.flags bits for configuring flavor +// - Handy accessor +#define FLAVOR_FEATURE(f) (flavor_descriptor->flags & f) +// - Whether iopl() needs to be called +#define FLAVOR_DOES_IO RTAPI_BIT(0) +// - Whether flavor has hard real-time latency +#define FLAVOR_IS_RT RTAPI_BIT(1) +// - Whether flavor has hard real-time latency +#define FLAVOR_TIME_NO_CLOCK_MONOTONIC RTAPI_BIT(2) +// - Whether flavor runs outside RTAPI threads +#define FLAVOR_NOT_RTAPI RTAPI_BIT(3) + +// The exception code puts structs in shm in an opaque blob; this is used to +// check the allocated storage is large enough +// https://stackoverflow.com/questions/807244/ +#define ASSERT_SIZE_WITHIN(type, size) \ + typedef char assertion_failed_##type##_[2*!!(sizeof(type) <= size)-1] typedef int (*rtapi_can_run_flavor_t)(void); typedef void (*rtapi_exception_handler_hook_t)( int type, rtapi_exception_detail_t *detail, int level); -typedef void (*rtapi_module_init_hook_t)(void); +typedef int (*rtapi_module_init_hook_t)(void); typedef void (*rtapi_module_exit_hook_t)(void); typedef int (*rtapi_task_update_stats_hook_t)(void); typedef void (*rtapi_print_thread_stats_hook_t)(int task_id); diff --git a/src/rtapi/flavor/ulapi.c b/src/rtapi/flavor/ulapi.c new file mode 100644 index 0000000000..a66aaaa9a2 --- /dev/null +++ b/src/rtapi/flavor/ulapi.c @@ -0,0 +1,44 @@ +#include "rtapi_flavor.h" + +int ulapi_module_init_hook(void) { + if (global_data->magic != GLOBAL_READY) { + rtapi_print_msg(RTAPI_MSG_ERR, + "ULAPI:%d ERROR: global segment invalid magic:" + " expected: 0x%x, actual: 0x%x\n", + rtapi_instance, GLOBAL_READY, + global_data->magic); + return -EINVAL; + } + + rtapi_print_msg(RTAPI_MSG_DBG, "ulapi_init(): ulapi loaded\n"); + + // switch logging level to what was set in global via msgd: + rtapi_set_msg_level(global_data->user_msg_level); + return 0; +} + +flavor_descriptor_t flavor_ulapi_descriptor = { + .name = "ulapi", + .flavor_id = RTAPI_FLAVOR_ULAPI_ID, + .flags = FLAVOR_NOT_RTAPI, + .can_run_flavor = NULL, + .exception_handler_hook = NULL, + .module_init_hook = ulapi_module_init_hook, + .module_exit_hook = NULL, + .task_update_stats_hook = NULL, + .print_thread_stats_hook = NULL, + .task_new_hook = NULL, + .task_delete_hook = NULL, + .task_start_hook = NULL, + .task_stop_hook = NULL, + .task_pause_hook = NULL, + .wait_hook = NULL, + .task_resume_hook = NULL, + .delay_hook = NULL, + .get_time_hook = NULL, + .get_clocks_hook = NULL, + .task_self_hook = NULL, + .task_pll_get_reference_hook = NULL, + .task_pll_set_correction_hook = NULL +}; + diff --git a/src/rtapi/flavor/ulapi.h b/src/rtapi/flavor/ulapi.h new file mode 100644 index 0000000000..f951293062 --- /dev/null +++ b/src/rtapi/flavor/ulapi.h @@ -0,0 +1,25 @@ +/******************************************************************** +* Description: ulapi.h +* ULAPI flavor descriptors +* +* +* Copyright (C) 2019 John Morris +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; either +* version 2.1 of the License, or (at your option) any later version. +* +* This program 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 +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public +* License along with this library; if not, write to the Free Software +* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +********************************************************************/ + +#include "rtapi_flavor.h" + +extern flavor_descriptor_t flavor_ulapi_descriptor; diff --git a/src/rtapi/flavor/xenomai.c b/src/rtapi/flavor/xenomai.c new file mode 100644 index 0000000000..6434b35cf4 --- /dev/null +++ b/src/rtapi/flavor/xenomai.c @@ -0,0 +1,691 @@ +/******************************************************************** +* Description: xenomai.c +* This file, 'xenomai.c', implements the unique +* functions for the Xenomai userland thread system. +* +* Copyright (C) 2012 - 2013 John Morris +* Michael Haberler +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; either +* version 2.1 of the License, or (at your option) any later version. +* +* This program 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 +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public +* License along with this library; if not, write to the Free Software +* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +********************************************************************/ + +#include "config.h" +#include "rtapi.h" +#include "rtapi_common.h" + +#include /* munlockall() */ +#define XENOMAI_INCLUDE(header) +#include XENOMAI_INCLUDE(task.h) /* RT_TASK, rt_task_*() */ +#include XENOMAI_INCLUDE(timer.h) /* rt_timer_*() */ +#include /* sigaction/SIGXCPU handling */ +#include +#include // getpid() +#include // cpu sets + +#ifdef RTAPI +#include XENOMAI_INCLUDE(mutex.h) +#include // abort() + +#define XENO_GID_SYSFS "/sys/module/xeno_nucleus/parameters/xenomai_gid" + +// Access the xenomai_stats_t thread status object +#define FTS(ts) ((xenomai_stats_t)ts->flavor) +// Access the xenomai_exception_t thread exception detail object +#define FED(detail) ((xenomai_exception_t)detail.flavor) + +// Check the exception and stats struct sizes +ASSERT_SIZE_WITHIN(xenomai_exception_t, MAX_FLAVOR_EXCEPTION_SIZE); +ASSERT_SIZE_WITHIN(xenomai_stats_t, MAX_FLAVOR_THREADSTATUS_SIZE); + +/* RTAPI task functions */ +RT_TASK ostask_array[RTAPI_MAX_TASKS + 1]; + +// this is needed due to the weirdness of the rt_task_self return value - +// it does _not_ match the address of the RT_TASK structure it was +// created with +RT_TASK *ostask_self[RTAPI_MAX_TASKS + 1]; + +#endif // RTAPI + +/*********************************************************************** +* RT thread statistics update * +************************************************************************/ +#ifdef RTAPI +int xenomai_task_update_stats_hook(void) +{ + int task_id = _rtapi_task_self(); + + // paranoia + if ((task_id < 0) || (task_id > RTAPI_MAX_TASKS)) { + rtapi_print_msg(RTAPI_MSG_ERR, + "rtapi_task_update_stats_hook: BUG -" + " task_id out of range: %d\n", + task_id); + return -ENOENT; + } + + RT_TASK_INFO rtinfo; + int retval = rt_task_inquire(ostask_self[task_id], &rtinfo); + if (retval) { + rtapi_print_msg(RTAPI_MSG_ERR, + "rt_task_inquire() failed: %d %s\n", + retval, strerror(-retval)); + return -ESRCH; + } + + rtapi_threadstatus_t *ts = &global_data->thread_status[task_id]; + +#ifdef XENOMAI_V2 + FTS(fts).modeswitches = rtinfo.modeswitches; + FTS(fts).ctxswitches = rtinfo.ctxswitches; + FTS(fts).pagefaults = rtinfo.pagefaults; + FTS(fts).exectime = rtinfo.exectime; + FTS(fts).status = rtinfo.status; +#else + FTS(fts).modeswitches = rtinfo.stat.msw; + FTS(fts).ctxswitches = rtinfo.stat.csw; + FTS(fts).pagefaults = rtinfo.stat.pf; + FTS(fts).exectime = rtinfo.stat.xtime; + FTS(fts).status = rtinfo.stat.status; +#endif + + ts->num_updates++; + + return task_id; +} +#endif + +/*********************************************************************** +* Xenomai Domain switching handling * +* +* if an RT thread does something silly, like a system call +* (e.g. write(2) caused by a printf()), the Xenomai scheduler will +* switch this thread from RT to Linux scheduling, and post the SIGXCPU +* signal. +* +* This is typically a sign of a coding error, and pretty bad - it +* should cause an estop. +* +* Update the Xenomai thread statistics, and funnel through exception +* handler mechanism. +* +* The important value in thread status is 'modeswitches', which should +* remain zero. +* +* Update: this does not work reliably and is not strictly necessary +* since thread stats will report domain switches anyway without a +* signal handler. Better stay with synchronous reporting. +************************************************************************/ +#ifdef RTAPI +extern rtapi_exception_handler_t rt_exception_handler; + +#ifdef USE_SIGXCPU +// trampoline to current handler +static void signal_handler(int sig, siginfo_t *si, void *uctx) +{ + int task_id = xenomai_task_update_stats_hook(); + if (task_id > -1) { + rtapi_threadstatus_t *ts = &global_data->thread_status[task_id]; + + rtapi_exception_detail_t detail = {0}; + detail.task_id = task_id; + + if (rt_exception_handler) + rt_exception_handler(XU_SIGXCPU, &detail, ts); + } else { + rtapi_print_msg(RTAPI_MSG_ERR, "BUG: SIGXCPU - cant identify task\n"); + if (rt_exception_handler) + rt_exception_handler(XU_SIGXCPU_BUG, NULL, NULL); + } +} +#endif +#endif + +/*********************************************************************** +* rtapi_main.c * +************************************************************************/ +#ifdef RTAPI +int xenomai_module_init_hook(void) +{ + +#ifdef USE_SIGXCPU + struct sigaction sig_act; + + sigemptyset( &sig_act.sa_mask ); + sig_act.sa_sigaction = signal_handler; + sig_act.sa_flags = SA_SIGINFO; + + // SIGXCPU delivery must be enabled within the thread by + // rt_task_set_mode(0, T_WARNSW, NULL); + // see _rtapi_task_wrapper() + if (sigaction(SIGXCPU, &sig_act, (struct sigaction *) NULL)) + rtapi_print_msg(RTAPI_MSG_ERR, + "rtapi_module_init_hook(sigaction): %d %s\n", + errno, strerror(errno)); +#endif + return 0; +} + +void xenomai_module_exit_hook(void) +{ +#ifdef USE_SIGXCPU + struct sigaction sig_act; + + // ignore SIGXCPU + sigemptyset( &sig_act.sa_mask ); + sig_act.sa_handler = SIG_IGN; + if (sigaction(SIGXCPU, &sig_act, (struct sigaction *) NULL)) + rtapi_print_msg(RTAPI_MSG_ERR, + "rtapi_module_exit_hook(sigaction): %d %s\n", + errno, strerror(errno)); +#endif +} +#else +int rtapi_module_init_hook(void) { return 0; } +void rtapi_module_exit_hook(void) {} +#endif + + +/*********************************************************************** +* rtapi_task.c * +************************************************************************/ + +#ifdef RTAPI +int xenomai_task_delete_hook(task_data *task, int task_id) { + int retval = 0; + + if ((retval = rt_task_delete( &ostask_array[task_id] )) < 0) { + rtapi_print_msg(RTAPI_MSG_ERR,"ERROR: rt_task_delete(%d) failed: %d %s\n", + task_id, retval, strerror(-retval)); + return retval; + } + // actually wait for the thread to exit + if ((retval = rt_task_join( &ostask_array[task_id] )) < 0) + rtapi_print_msg(RTAPI_MSG_ERR,"ERROR: rt_task_join(%d) failed: %d %s\n", + task_id, retval, strerror(-retval)); + return retval; +} + +void _rtapi_task_wrapper(void * task_id_hack) { + int ret; + int task_id = (int)(long) task_id_hack; // ugly, but I ain't gonna fix it + task_data *task = &task_array[task_id]; + + /* use the argument to point to the task data */ + if (task->period < period) task->period = period; + task->ratio = task->period / period; + rtapi_print_msg(RTAPI_MSG_DBG, + "rtapi_task_wrapper: task %p '%s' period=%d " + "prio=%d ratio=%d\n", + task, task->name, task->ratio * period, + task->prio, task->ratio); + + ostask_self[task_id] = rt_task_self(); + + // starting the thread with the TF_NOWAIT flag implies it is not periodic + // https://github.com/machinekit/machinekit/issues/237#issuecomment-126590880 + // NB this assumes rtapi_wait() is NOT called on this thread any more + // see thread_task() where this is handled for now + + if (!(task->flags & TF_NOWAIT)) { + if ((ret = rt_task_set_periodic(NULL, TM_NOW, task->ratio * period)) < 0) { + rtapi_print_msg(RTAPI_MSG_ERR, + "ERROR: rt_task_set_periodic(%d,%s) failed %d %s\n", + task_id, task->name, ret, strerror(-ret)); + // really nothing one can realistically do here, + // so just enable forensics + abort(); + } + } +#ifdef USE_SIGXCPU + // required to enable delivery of the SIGXCPU signal + rt_task_set_mode(0, T_WARNSW, NULL); +#endif + + xenomai_task_update_stats_hook(); // initial recording + + #ifdef TRIGGER_SIGXCPU_ONCE + // enable this for testing only: + // this should cause a domain switch due to the write() + // system call and hence a single SIGXCPU posted, + // causing an XU_SIGXCPU exception + // verifies rtapi_task_update_status_hook() works properly + // and thread_status counters are updated + printf("--- once in task_wrapper\n"); +#endif + + /* call the task function with the task argument */ + (task->taskcode) (task->arg); + + /* if the task ever returns, we record that fact */ + task->state = ENDED; + rtapi_print_msg(RTAPI_MSG_ERR, + "ERROR: reached end of wrapper for task %d '%s'\n", + task_id, task->name); +} + + +int xenomai_task_start_hook(task_data *task, int task_id) { + int which_cpu = 0; + int uses_fpu = 0; + int retval; + +#ifdef XENOMAI_V2 + // seems to work for me + // not sure T_CPU(n) is possible - see: + // http://www.xenomai.org/pipermail/xenomai-help/2010-09/msg00081.html + + if (task->cpu > -1) // explicitly set by threads, motmod + which_cpu = T_CPU(task->cpu); + + // http://www.xenomai.org/documentation/trunk/html/api/group__task.html#ga03387550693c21d0223f739570ccd992 + // Passing T_FPU|T_CPU(1) in the mode parameter thus creates a + // task with FPU support enabled and which will be affine to CPU #1 + // the task will start out dormant; execution begins with rt_task_start() + + // since this is a usermode RT task, it will be FP anyway + if (task->uses_fp) + uses_fpu = T_FPU; +#endif + + // optionally start as relaxed thread - meaning defacto a standard Linux thread + // without RT features + // see https://xenomai.org/pipermail/xenomai/2015-July/034745.html and + // https://github.com/machinekit/machinekit/issues/237#issuecomment-126590880 + + int prio = (task->flags & TF_NONRT) ? 0 :task->prio; + + if ((retval = rt_task_create (&ostask_array[task_id], task->name, + task->stacksize, prio, + uses_fpu | which_cpu | T_JOINABLE) + ) != 0) { + rtapi_print_msg(RTAPI_MSG_ERR, + "rt_task_create failed: %d %s\n", + retval, strerror(-retval)); + return -ENOMEM; + } + +#ifndef XENOMAI_V2 + // Xenomai-3 CPU affinity + cpu_set_t cpus; + CPU_SET(task->cpu, &cpus); + rt_task_set_affinity (&ostask_array[task_id], &cpus); +#endif + + if ((retval = rt_task_start( &ostask_array[task_id], + _rtapi_task_wrapper, (void *)(long)task_id))) { + rtapi_print_msg(RTAPI_MSG_INFO, + "rt_task_start failed: %d %s\n", + retval, strerror(-retval)); + return -ENOMEM; + } + return 0; +} + +int xenomai_task_stop_hook(task_data *task, int task_id) { + int retval; + + if ((retval = rt_task_delete( &ostask_array[task_id] )) < 0) { + rtapi_print_msg(RTAPI_MSG_ERR,"rt_task_delete() failed: %d %s\n", + retval, strerror(-retval)); + return retval; + } + + return 0; +} + +int xenomai_task_pause_hook(task_data *task, int task_id) { + return rt_task_suspend( &ostask_array[task_id] ); +} + +int xenomai_task_resume_hook(task_data *task, int task_id) { + return rt_task_resume( &ostask_array[task_id] ); +} + +int xenomai_wait_hook(const int flags) { + + if (flags & TF_NOWAIT) + return 0; + + unsigned long overruns = 0; + int result = rt_task_wait_period(&overruns); + + if (result) { + // something went wrong: + + // update stats counters in thread status + int task_id = xenomai_task_update_stats_hook(); + + + // paranoid, but you never know; this index off and + // things will go haywire really fast + if ((task_id < 0) || (task_id > RTAPI_MAX_TASKS)) { + rtapi_print_msg(RTAPI_MSG_ERR, + "rt_task_wait_hook: BUG - task_id out of range: %d\n", + task_id); + // maybe should call a BUG exception here + return 0; + } + + // inquire, fill in + // exception descriptor, and call exception handler + + rtapi_exception_detail_t detail = {0}; + rtapi_threadstatus_t *ts = &global_data->thread_status[task_id]; + xenomai_exception_id_t type; + + // exception descriptor + detail.task_id = task_id; + detail.error_code = result; + + switch (result) { + + case -ETIMEDOUT: + // release point was missed + + FED(detail).overruns = overruns; + + // update thread status in global_data + FTS(fts).wait_errors++; + FTS(fts).total_overruns += overruns; + type = XU_ETIMEDOUT; + break; + + case -EWOULDBLOCK: + // returned if rt_task_set_periodic() has not previously + // been called for the calling task. This is clearly + // a Xenomai API usage error. + ts->api_errors++; + type = XU_EWOULDBLOCK; + break; + + case -EINTR: + // returned if rt_task_unblock() has been called for + // the waiting task before the next periodic release + // point has been reached. In this case, the overrun + // counter is reset too. + // a Xenomai API usage error. + ts->api_errors++; + type = XU_EINTR; + break; + + case -EPERM: + // returned if this service was called from a + // context which cannot sleep (e.g. interrupt, + // non-realtime or scheduler locked). + // a Xenomai API usage error. + ts->api_errors++; + type = XU_EPERM; + break; + + default: + // the above should handle all possible returns + // as per manual, so at least leave a scent + // (or what Jeff calls a 'canary value') + ts->other_errors++; + type = XU_UNDOCUMENTED; + } + if (rt_exception_handler) + rt_exception_handler(type, &detail, ts); + } // else: ok - no overruns; + return 0; +} + +int xenomai_task_self_hook(void) { + RT_TASK *ptr; + int n; + + /* ask OS for pointer to its data for the current task */ + ptr = rt_task_self(); + + if (ptr == NULL) { + /* called from outside a task? */ + return -EINVAL; + } + /* find matching entry in task array */ + n = 1; + while (n <= RTAPI_MAX_TASKS) { + if (ostask_self[n] == ptr) { + /* found a match */ + return n; + } + n++; + } + return -EINVAL; +} + +#endif /* RTAPI */ + + +/*********************************************************************** +* rtapi_time.c * +************************************************************************/ + +#ifdef RTAPI +void xenomai_delay_hook(long int nsec) +{ + long long int release = rt_timer_read() + nsec; + while (rt_timer_read() < release); +} +#endif + +long long int xenomai_get_time_hook(void) { + /* The value returned will represent a count of jiffies if the + native skin is bound to a periodic time base (see + CONFIG_XENO_OPT_NATIVE_PERIOD), or nanoseconds otherwise. */ + return rt_timer_read(); +} + +/* This returns a result in clocks instead of nS, and needs to be used + with care around CPUs that change the clock speed to save power and + other disgusting, non-realtime oriented behavior. But at least it + doesn't take a week every time you call it. +*/ +long long int xenomai_get_clocks_hook(void) { + return rt_timer_read(); +} + +int kernel_is_xenomai() +{ + struct stat sb; + + return ((stat(XNHEAP_DEV_NAME, &sb) == 0) && + (stat(PROC_IPIPE_XENOMAI, &sb) == 0) && + (stat(XENO_GID_SYSFS, &sb) == 0)); +} + +int xenomai_can_run_flavor() +{ + if (! kernel_is_xenomai()) + return 0; + + if (! xenomai_flavor_check()) + return 0; + + return 1; +} + +int xenomai_gid() +{ + FILE *fd; + int gid = -1; + + if ((fd = fopen(XENO_GID_SYSFS,"r")) != NULL) { + if (fscanf(fd, "%d", &gid) != 1) { + fclose(fd); + return -EBADF; // garbage in sysfs device + } else { + fclose(fd); + return gid; + } + } + return -ENOENT; // sysfs device cant be opened +} + +int user_in_xenomai_group() +{ + int numgroups, i; + gid_t *grouplist; + int gid = xenomai_gid(); + + if (gid < 0) + return gid; + + numgroups = getgroups(0,NULL); + grouplist = (gid_t *) calloc( numgroups, sizeof(gid_t)); + if (grouplist == NULL) + return -ENOMEM; + if (getgroups( numgroups, grouplist) > 0) { + for (i = 0; i < numgroups; i++) { + if (grouplist[i] == (unsigned) gid) { + free(grouplist); + return 1; + } + } + } else { + free(grouplist); + return errno; + } + return 0; +} + +int xenomai_flavor_check(void) { + // catch installation error: user not in xenomai group + int retval = user_in_xenomai_group(); + + switch (retval) { + case 1: // yes + break; + case 0: + fprintf(stderr, "this user is not member of group xenomai\n"); + fprintf(stderr, "please 'sudo adduser xenomai'," + " logout and login again\n"); + exit(EXIT_FAILURE); + + default: + fprintf(stderr, "cannot determine if this user " + "is a member of group xenomai: %s\n", + strerror(-retval)); + exit(EXIT_FAILURE); + } + return retval; +} + + +void xenomai_print_thread_stats(int task_id) +{ + rtapi_threadstatus_t *ts = + &global_data->thread_status[task_id]; + + // generic statistics counters + rtapi_print(" updates=%d\t", ts->num_updates); + if (ts->num_updates) { + rtapi_print("api_err=%d\t", ts->api_errors); + rtapi_print("other_err=%d\n", ts->api_errors); + } + + rtapi_print(" wait_errors=%d\t", FTS(fts).wait_errors); + rtapi_print("overruns=%d\t", FTS(fts).total_overruns); + rtapi_print("modeswitches=%d\t", FTS(fts).modeswitches); + rtapi_print("contextswitches=%d\n", FTS(fts).ctxswitches); + rtapi_print(" pagefaults=%d\t", FTS(fts).pagefaults); + rtapi_print("exectime=%llduS\t", FTS(fts).exectime/1000); + rtapi_print("status=0x%x\n", FTS(fts).status); + rtapi_print("\n"); +} + + +void xenomai_exception_handler_hook(int type, + rtapi_exception_detail_t *detail, + int level) +{ + switch ((xenomai_exception_id_t)type) { + // Timing violations + case XU_ETIMEDOUT: + rtapi_print_msg(level, + "%d: Unexpected realtime delay on RT thread %d ", + type, detail->task_id); + xenomai_print_thread_stats(detail->task_id); + break; + // Xenomai User errors + case XU_SIGXCPU: // Xenomai Domain switch + rtapi_print_msg(level, + "%d: Xenomai Domain switch for thread %d", + type, detail->task_id); + xenomai_print_thread_stats(detail->task_id); + break; + case XU_EWOULDBLOCK: + rtapi_print_msg(level, + "API usage bug: rt_task_set_periodic() not called: " + "thread %d - errno %d", + detail->task_id, + detail->error_code); + break; + + case XU_EINTR: + rtapi_print_msg(level, + "API usage bug: rt_task_unblock() called before" + " release point: thread %d -errno %d", + detail->task_id, + detail->error_code); + break; + + case XU_EPERM: + rtapi_print_msg(level, + "API usage bug: cannot call service from current" + " context: thread %d - errno %d", + detail->task_id, + detail->error_code); + break; + + case XU_UNDOCUMENTED: + rtapi_print_msg(level, + "%d: unspecified Xenomai error: thread %d - errno %d", + type, + detail->task_id, + detail->error_code); + break; + + default: + rtapi_print_msg(level, + "%d: unspecified exception detail=%p ts=%p", + type, detail, ts); + } +} + +flavor_descriptor_t flavor_xenomai_descriptor = { + .name = "xenomai", + .flavor_id = RTAPI_XENOMAI_ID, + .flags = FLAVOR_DOES_IO + FLAVOR_IS_RT + FLAVOR_TIME_NO_CLOCK_MONOTONIC, + .can_run_flavor = xenomai_can_run_flavor, + .exception_handler_hook = xenomai_exception_handler_hook, + .module_init_hook = xenomai_module_init_hook, + .module_exit_hook = xenomai_module_exit_hook, + .task_update_stats_hook = xenomai_update_stats_hook, + .print_thread_stats_hook = xenomai_print_thread_stats, + .task_new_hook = NULL, + .task_delete_hook = xenomai_task_delete_hook, + .task_start_hook = xenomai_task_start_hook, + .task_stop_hook = xenomai_task_stop_hook, + .task_pause_hook = xenomai_task_resume_hook; + .wait_hook = xenomai_wait_hook, + .resume_hook = xenomai_resume_hook, + .delay_hook = xenomai_delay_hook, + .get_time_hook = xenomai_get_time_hook, + .get_clocks_hook = xenomai_get_clocks_hook, + .task_self_hook = xenomai_task_self_hook, + .task_pll_get_reference_hook = NULL, + .task_pll_set_correction_hook = NULL +}; diff --git a/src/rtapi/flavor/xenomai.h b/src/rtapi/flavor/xenomai.h new file mode 100644 index 0000000000..e7f3d41d78 --- /dev/null +++ b/src/rtapi/flavor/xenomai.h @@ -0,0 +1,64 @@ +/******************************************************************** +* Description: xenomai.h +* This file defines the differences specific to the +* the Xenomai user land thread system +* +* Copyright (C) 2012 - 2013 John Morris +* Michael Haberler +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; either +* version 2.1 of the License, or (at your option) any later version. +* +* This program 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 +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public +* License along with this library; if not, write to the Free Software +* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +********************************************************************/ + +typedef enum { + XU_EXCEPTION_NONE=0, + + XU_SIGXCPU, // RT task switched to secondary domain + XU_SIGXCPU_BUG, // same, but failed to identify RT thread + XU_ETIMEDOUT, // release point was missed + XU_EWOULDBLOCK, // rt_task_wait_period() without previous rt_task_set_periodic() + XU_EINTR, // rt_task_unblock() called before release point + XU_EPERM, // cannot rt_task_wait_period() from this context + XU_UNDOCUMENTED, // unknown error code + + XU_EXCEPTION_LAST, + +} xenomai_exception_id_t; + +typedef struct { + // passed by ref from rt_task_wait_period() + unsigned long overruns; +} xenomai_exception_t; + + +typedef struct { + // as reported by rt_task_inquire() + // filled in by rtapi_thread_updatestats(task_id) RTAPI call (TBD) + int modeswitches; + int ctxswitches; + int pagefaults; + long long exectime; // Execution time in primary mode in nanoseconds. + unsigned status; // T_BLOCKED etc. + + // errors returned by rt_task_wait_period(): + // set by -ETIMEDOUT: + int wait_errors; // total times the release point was missed + int total_overruns; // running count of the above + // the -EWOULDBLOCK and -EINTR returns are API violations + // and increment api_errors + + // all others increment other_errors +} xenomai_stats_t; + +extern flavor_descriptor_t flavor_xenomai_descriptor; diff --git a/src/rtapi/librtapi.c b/src/rtapi/librtapi.c deleted file mode 100644 index db5fda7561..0000000000 --- a/src/rtapi/librtapi.c +++ /dev/null @@ -1,2 +0,0 @@ -// Bogus C file to prank the module-building system into building librtapi.so -// with -DRTAPI From ad6363694c88530e4b81e2a7fac353db21b18858 Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 18 Feb 2019 15:44:10 +0800 Subject: [PATCH 455/516] ULAPI fixes - Remove sources in liblinuxcnculapi.so from liblinuxcnchal.so and link executables against liblinuxcnculapi.so - Make ULAPI even more like other flavors - Shares the `rtapi_app_main` - Has its own `flavor_descriptor` - `ulapi_main.c` and `rtapi_main.c` merged & folded into `rtapi_common.c` - Fix (remove) ULAPI autoloading - Still gets initialized at first `rtapi_init()` call - Clean out MODULE_EXT build macro, obsolete since kthreads dumped --- src/Makefile | 21 +- src/Makefile.inc.in | 2 - src/emc/iotask/Submakefile | 16 +- src/emc/kinematics/Submakefile | 2 + src/emc/task/Submakefile | 1 + src/emc/usr_intf/Submakefile | 1 + src/hal/classicladder/Submakefile | 5 +- src/hal/components/Submakefile | 12 +- src/hal/drivers/Submakefile | 6 +- src/hal/drivers/hal_zed_can.c | 2 +- src/hal/i_components/Submakefile | 4 +- src/hal/lib/Submakefile | 29 +- src/hal/lib/hal_lib.c | 10 +- src/hal/user_comps/Submakefile | 25 +- src/hal/user_icomps/Submakefile | 6 +- src/hal/utils/Submakefile | 12 +- src/machinetalk/haltalk/Submakefile | 1 + src/rtapi/Submakefile | 36 +- src/rtapi/rtapi.h | 15 - src/rtapi/rtapi_app.cc | 45 +- src/rtapi/rtapi_app.h | 14 +- src/rtapi/rtapi_common.c | 130 +++++- src/rtapi/rtapi_main.c | 131 ------ src/rtapi/rtapi_time.c | 2 +- src/rtapi/shmdrv/mutexwatch.c | 270 ++++++----- src/rtapi/ulapi_autoload.c | 153 ------ src/rtapi/ulapi_main.c | 80 ---- src/rtapi/xenomai.c | 700 ---------------------------- src/rtapi/xenomai.h | 64 --- 29 files changed, 387 insertions(+), 1408 deletions(-) delete mode 100644 src/rtapi/rtapi_main.c delete mode 100644 src/rtapi/ulapi_autoload.c delete mode 100644 src/rtapi/ulapi_main.c delete mode 100644 src/rtapi/xenomai.c delete mode 100644 src/rtapi/xenomai.h diff --git a/src/Makefile b/src/Makefile index 848c86a2fb..6512eb8568 100755 --- a/src/Makefile +++ b/src/Makefile @@ -238,12 +238,12 @@ TOOBJSDEPS = $(call TOOBJS,$(1),$(2)) $(call TODEPS, $(1),$(2)) # $$(eval $(call c_comp_build_rules,hal/components/encoder.o,hal/components/othersrc.o)) # obj-m += encoder.o # encoder-objs := hal/components/encoder.o hal/components/othersrc.o -# $(RTLIBDIR)/encoder$(MODULE_EXT): \ +# $(RTLIBDIR)/encoder.so: \ # hal/components/encoder.o hal/components/othersrc.o define c_comp_build_rules obj-m += $$(patsubst $$(dir $(1))%.o,%.o,$(1)) $$(patsubst $$(dir $(1))%.o,%-objs,$(1)) := $(1) $(2) -$$(patsubst $$(dir $(1))%.o,$(RTLIBDIR)/%$(MODULE_EXT),$(1)): \ +$$(patsubst $$(dir $(1))%.o,$(RTLIBDIR)/%.so,$(1)): \ $$(addprefix $(OBJDIR)/,$(1) $(2)) endef @@ -596,7 +596,6 @@ HEADERS := \ rtapi/rtapi_compat.h \ rtapi/rtapi_hexdump.h \ rtapi/rtapi_int.h \ - rtapi/rtapi_kdetect.h \ rtapi/rtapi_limits.h \ rtapi/rtapi_math.h \ rtapi/rtapi_math64.h \ @@ -609,14 +608,17 @@ HEADERS := \ rtapi/rtapi_errno.h \ rtapi/rtapi_string.h \ rtapi/rtapi_pci.h \ - rtapi/rtapi_proc.h \ rtapi/rtapi_heap.h \ rtapi/rtapi_heap_private.h \ rtapi/ring.h \ rtapi/triple-buffer.h \ rtapi/multiframe.h \ rtapi/rtapi_mbarrier.h \ - rtapi/shmdrv/shmdrv.h + rtapi/shmdrv/shmdrv.h \ + rtapi/flavor/rtapi_flavor.h \ + rtapi/flavor/xenomai.h \ + rtapi/flavor/rt-preempt.h \ + rtapi/flavor/ulapi.h @@ -715,7 +717,7 @@ clean: depclean modclean docclean -rm -rf ../rtlib ../libexec rm -f ../etc/linuxcnc/rtapi.ini -rm -f $(COPY_CONFIGS) - -rm -f $(RTLIBDIR)/*.$(MODULE_EXT) + -rm -f $(RTLIBDIR)/*.so -rm -f hal/components/conv_*.comp -rm -f hal/i_components/conv_*.icomp -rm -f hal/components/*_bin.h # generated by pasm for bb platform @@ -1082,6 +1084,7 @@ EXTRA_CFLAGS = $(RTFLAGS) \ -I$(INCLUDE_PREFIX)/libnml/buffer \ -I$(INCLUDE_PREFIX)/libnml/posemath \ -I$(INCLUDE_PREFIX)/rtapi \ + -I$(INCLUDE_PREFIX)/rtapi/flavor \ -I$(INCLUDE_PREFIX)/hal/lib \ -I$(INCLUDE_PREFIX)/emc/nml_intf \ -I$(INCLUDE_PREFIX)/emc/kinematics \ @@ -1192,7 +1195,7 @@ RTDEPS := $(sort $(patsubst $(OBJDIR)/%.o,$(DEPDIR)/%.d, $(RTOBJS))) modules: ifeq ($(RUN_IN_PLACE)+$(BUILD_DRIVERS),yes+yes) - test -f ../libexec/rtapi_app -a \ + @test -f ../libexec/rtapi_app -a \ \( 0`stat -c %u ../libexec/rtapi_app 2>/dev/null` \ -ne 0 -o ! -u ../libexec/rtapi_app \) \ && need_setuid=1; \ @@ -1308,9 +1311,13 @@ objects/var-%: Makefile $(wildcard $(SUBMAKEFILES)) Makefile.inc @echo $($*) > $@.tmp @sh move-if-change $@.tmp $@ +# Link shared libs ../lib/%.so: ../lib/%.so.0 $(ECHO) Symlinking $(notdir $<) to $(notdir $@) $(Q)ln -sf $(notdir $<) $@ +# - Be sure the setuid message comes last +ALL_SHLIBS=$(filter ../%.so.0,$(TARGETS)) $(filter ../%.so,$(TARGETS)) +modules: $(ALL_SHLIBS) cscope: cscope -Rb diff --git a/src/Makefile.inc.in b/src/Makefile.inc.in index 4e50e29bbe..2cc4c8e97d 100644 --- a/src/Makefile.inc.in +++ b/src/Makefile.inc.in @@ -78,8 +78,6 @@ RUN_IN_PLACE = @RUN_IN_PLACE@ RTFLAGS := -I. -DRTAPI -D_GNU_SOURCE -D_FORTIFY_SOURCE=0 $(THREADS_RTFLAGS) ULFLAGS = -D_GNU_SOURCE -DLOCALE_DIR=\"$(localedir)\" -DPACKAGE=\"$(package)\" -MODULE_EXT = .so - CC = @CC@ CC_FOR_BUILD = @CC_FOR_BUILD@ OBJCOPY = @OBJCOPY@ diff --git a/src/emc/iotask/Submakefile b/src/emc/iotask/Submakefile index e01cf8b118..28e6317b51 100644 --- a/src/emc/iotask/Submakefile +++ b/src/emc/iotask/Submakefile @@ -2,11 +2,23 @@ IOSRCS := emc/iotask/ioControl.cc emc/rs274ngc/tool_parse.cc IOV2SRCS := emc/iotask/ioControl_v2.cc emc/rs274ngc/tool_parse.cc USERSRCS += $(IOSRCS) $(IOV2SRCS) -../bin/io: $(call TOOBJS, $(IOSRCS)) ../lib/liblinuxcnc.a ../lib/libnml.so.0 ../lib/liblinuxcnchal.so.0 ../lib/liblinuxcncini.so.0 +../bin/io: \ + $(call TOOBJS, $(IOSRCS)) \ + ../lib/liblinuxcnc.a \ + ../lib/libnml.so.0 \ + ../lib/liblinuxcnchal.so.0 \ + ../lib/liblinuxcnculapi.so.0 \ + ../lib/liblinuxcncini.so.0 $(ECHO) Linking $(notdir $@) @$(CXX) $(LDFLAGS) -o $@ $^ -../bin/iov2: $(call TOOBJS, $(IOV2SRCS)) ../lib/liblinuxcnc.a ../lib/libnml.so.0 ../lib/liblinuxcnchal.so.0 ../lib/liblinuxcncini.so.0 +../bin/iov2: \ + $(call TOOBJS, $(IOV2SRCS)) \ + ../lib/liblinuxcnc.a \ + ../lib/libnml.so.0 \ + ../lib/liblinuxcnchal.so.0 \ + ../lib/liblinuxcnculapi.so.0 \ + ../lib/liblinuxcncini.so.0 $(ECHO) Linking $(notdir $@) @$(CXX) $(LDFLAGS) -o $@ $^ diff --git a/src/emc/kinematics/Submakefile b/src/emc/kinematics/Submakefile index 82b5687ae8..f7287e6383 100644 --- a/src/emc/kinematics/Submakefile +++ b/src/emc/kinematics/Submakefile @@ -21,6 +21,7 @@ PYTARGETS += $(DELTAMODULE) ../bin/genserkins: $(call TOOBJS, $(GENSERKINSSRCS)) \ ../lib/liblinuxcnchal.so \ + ../lib/liblinuxcnculapi.so.0 \ ../lib/libposemath.so \ ../lib/librtapi_math.so.0 $(ECHO) Linking $(notdir $@) @@ -29,6 +30,7 @@ TARGETS += ../bin/genserkins ../bin/drawbotkins: $(call TOOBJS, $(GENSERKINSSRCS)) \ ../lib/liblinuxcnchal.so \ + ../lib/liblinuxcnculapi.so.0 \ ../lib/libposemath.so \ ../lib/librtapi_math.so.0 $(ECHO) Linking $(notdir $@) diff --git a/src/emc/task/Submakefile b/src/emc/task/Submakefile index 9630e3a395..751fef9ec7 100644 --- a/src/emc/task/Submakefile +++ b/src/emc/task/Submakefile @@ -39,6 +39,7 @@ USERSRCS += $(MILLTASKSRCS) ../lib/liblinuxcncini.so.0 \ ../lib/libposemath.so.0 \ ../lib/liblinuxcnchal.so.0 \ + ../lib/liblinuxcnculapi.so.0 \ ../lib/libpyplugin.so.0 \ ../lib/librtapi_math.so.0 $(ECHO) Linking $(notdir $@) diff --git a/src/emc/usr_intf/Submakefile b/src/emc/usr_intf/Submakefile index 409ea0900b..d4ff80bd83 100644 --- a/src/emc/usr_intf/Submakefile +++ b/src/emc/usr_intf/Submakefile @@ -87,6 +87,7 @@ TARGETS += ../bin/linuxcnclcd ../lib/liblinuxcncini.so.0 \ ../lib/libnml.so.0 \ ../lib/liblinuxcnchal.so.0 \ + ../lib/liblinuxcnculapi.so.0 \ ../lib/librtapi_math.so.0 $(ECHO) Linking $(notdir $@) $(Q)$(CXX) $(LDFLAGS) -o $@ $^ diff --git a/src/hal/classicladder/Submakefile b/src/hal/classicladder/Submakefile index 3049497120..73a0f96863 100644 --- a/src/hal/classicladder/Submakefile +++ b/src/hal/classicladder/Submakefile @@ -44,7 +44,10 @@ $(call TOOBJS, $(CLASSICLADDERSRCS)): Makefile.inc USERSRCS += $(CLASSICLADDERSRCS) -../bin/classicladder: $(call TOOBJS, $(CLASSICLADDERSRCS)) ../lib/liblinuxcnchal.so.0 +../bin/classicladder: \ + $(call TOOBJS, $(CLASSICLADDERSRCS)) \ + ../lib/liblinuxcnchal.so.0 \ + ../lib/liblinuxcnculapi.so.0 $(ECHO) Linking $(notdir $@) @$(CC) $(LDFLAGS) $(CFLAGS) $(ULFLAGS) -o $@ $^ $(GTK_LIBS) -lpthread diff --git a/src/hal/components/Submakefile b/src/hal/components/Submakefile index bf0578b293..542b706f7c 100644 --- a/src/hal/components/Submakefile +++ b/src/hal/components/Submakefile @@ -85,7 +85,7 @@ objects/%.c: %.comp ../bin/comp define comp_build_rules $$(patsubst $$(dir $(1))%.comp,%-objs,$(1)) := \ $$(patsubst %.comp,objects/%.o,$(1)) -$$(patsubst $(dir $(1))%.comp,$(RTLIBDIR)/%$(MODULE_EXT),$(1)): \ +$$(patsubst $(dir $(1))%.comp,$(RTLIBDIR)/%.so,$(1)): \ $(OBJDIR)/objects/$$(patsubst %.comp,%.o,$(1)) endef @@ -107,7 +107,10 @@ $(eval $(foreach comp,$(MSG_COMPS),$(call comp_build_rules,$(comp)))) HALSTREAMERSRCS := hal/components/streamer_usr.c USERSRCS += $(HALSTREAMERSRCS) -../bin/halstreamer: $(call TOOBJS, $(HALSTREAMERSRCS)) ../lib/liblinuxcnchal.so.0 +../bin/halstreamer: \ + $(call TOOBJS, $(HALSTREAMERSRCS)) \ + ../lib/liblinuxcnchal.so.0 \ + ../lib/liblinuxcnculapi.so.0 $(ECHO) Linking $(notdir $@) $(Q)$(CC) $(LDFLAGS) -o $@ $^ TARGETS += ../bin/halstreamer @@ -115,7 +118,10 @@ TARGETS += ../bin/halstreamer HALSAMPLERSRCS := hal/components/sampler_usr.c USERSRCS += $(HALSAMPLERSRCS) -../bin/halsampler: $(call TOOBJS, $(HALSAMPLERSRCS)) ../lib/liblinuxcnchal.so.0 +../bin/halsampler: \ + $(call TOOBJS, $(HALSAMPLERSRCS)) \ + ../lib/liblinuxcnchal.so.0 \ + ../lib/liblinuxcnculapi.so.0 $(ECHO) Linking $(notdir $@) $(Q)$(CC) $(LDFLAGS) -o $@ $^ TARGETS += ../bin/halsampler diff --git a/src/hal/drivers/Submakefile b/src/hal/drivers/Submakefile index 0e899938d0..e94af22eb0 100644 --- a/src/hal/drivers/Submakefile +++ b/src/hal/drivers/Submakefile @@ -45,11 +45,7 @@ INCLUDES += hal/drivers $(Q)cp $^ $@ # build instructions for the hal_p260c module -obj-m += hal_p260c.o -# the list of parts -hal_p260c-objs := hal/drivers/hal_p260c.o - -$(RTLIBDIR)/hal_p260c$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_p260c-objs)) +$(eval $(call c_comp_build_rules,hal/drivers/hal_p260c.o)) # C-language components ifeq ($(BUILD_DRIVERS),yes) diff --git a/src/hal/drivers/hal_zed_can.c b/src/hal/drivers/hal_zed_can.c index 7e6fb36833..712c86b4e9 100644 --- a/src/hal/drivers/hal_zed_can.c +++ b/src/hal/drivers/hal_zed_can.c @@ -59,7 +59,7 @@ and add ifeq ($(TARGET_PLATFORM),zedboard) - $(RTLIBDIR)/hal_zedcan$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_zedcan-objs)) + $(RTLIBDIR)/hal_zedcan.so: $(addprefix $(OBJDIR)/,$(hal_zedcan-objs)) endif in the '# build kernel RTAPI modules' section diff --git a/src/hal/i_components/Submakefile b/src/hal/i_components/Submakefile index bfbbae9822..03bd533e27 100644 --- a/src/hal/i_components/Submakefile +++ b/src/hal/i_components/Submakefile @@ -50,13 +50,13 @@ objects/%.c: %.icomp ../bin/instcomp # Generate rules for building i_component.so files # abs_s32-objs := objects/hal/i_components/abs_s32.o -# $(RTLIBDIR)/abs_s32$(MODULE_EXT): $(OBJDIR)/objects/hal/i_components/abs_s32.o +# $(RTLIBDIR)/abs_s32.so: $(OBJDIR)/objects/hal/i_components/abs_s32.o # # example: $$(call icomp_build_rules hal/i_components/abs_s32.comp) define icomp_build_rules $$(patsubst $(HALICOMPDIR)/%.icomp,%-objs,$(1)) := \ objects/$$(patsubst %.icomp,%.o,$(1)) -$$(patsubst $(HALICOMPDIR)/%.icomp,$(RTLIBDIR)/%$(MODULE_EXT),$(1)): \ +$$(patsubst $(HALICOMPDIR)/%.icomp,$(RTLIBDIR)/%.so,$(1)): \ $(OBJDIR)/objects/$$(patsubst %.icomp,%.o,$(1)) endef diff --git a/src/hal/lib/Submakefile b/src/hal/lib/Submakefile index 893ccb63cd..555b102531 100644 --- a/src/hal/lib/Submakefile +++ b/src/hal/lib/Submakefile @@ -27,22 +27,7 @@ HALLIBSRCS := $(HALLIBDIR)/hal_lib.c \ $(HALLIBDIR)/hal_object.c \ $(HALLIBDIR)/hal_object_selectors.c \ $(HALLIBDIR)/hal_accessor.c \ - $(HALLIBDIR)/hal_iring.c \ - rtapi/rtapi_heap.c \ - rtapi/ulapi_main.c \ - rtapi/rtapi_support.c \ - rtapi/rtapi_hexdump.c \ - rtapi/rtapi_common.c \ - rtapi/rtapi_task.c \ - rtapi/rtapi_shmem.c \ - rtapi/rtapi_time.c \ - rtapi/rtapi_exception.c \ - rtapi/rtapi_common.c \ - rtapi/rtapi_flavor.c \ - rtapi/rt-preempt.c -ifeq ($(HAVE_XENOMAI_THREADS),yes) -HALLIBSRCS += rtapi/xenomai.c -endif + $(HALLIBDIR)/hal_iring.c # protobuf support functions which depend on HAL - on RT host only HALLIBMTALK_SRCS := $(addprefix $(HALLIBDIR)/, \ @@ -75,18 +60,14 @@ HALLIB := ../lib/liblinuxcnchal.so $(HALLIB).0: \ $(call TOOBJS, $(HALLIBSRCS)) \ - $(call TOOBJS, $(ULAPI_AUTOLOAD_SRCS)) \ $(call TOOBJS, $(SHMDRVAPISRCS)) \ $(call TOOBJS, $(HALLIBMTALK_SRCS)) \ $(call TOOBJS, $(LIBINISRCS)) \ - $(call TOOBJS, machinetalk/lib/syslog_async.c) \ + $(ULAPI_LIB).0 \ $(LIBS)/libmachinetalk-pb2++.so $(ECHO) Creating shared library $(notdir $@) - @mkdir -p ../lib \ - @mkdir -p ../rtlib/modules; \ - ln -sf ../rtlib/modules ../rtlib/posix; \ - ln -sf ../rtlib/modules ../rtlib/rt-preempt; \ - ln -sf ../rtlib/modules ../rtlib/xenomai; + @mkdir -p ../lib + @mkdir -p ../rtlib/modules @rm -f $@ $(Q)$(CC) $(LDFLAGS) -Wl,-rpath,$(EMC2_RTLIB_DIR) \ -Wl,-soname,$(notdir $@) -shared \ @@ -124,4 +105,4 @@ hal_lib-objs += hal/lib/hal_object_selectors.o hal_lib-objs += hal/lib/hal_accessor.o hal_lib-objs += hal/lib/hal_iring.o -$(RTLIBDIR)/hal_lib$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_lib-objs)) +$(RTLIBDIR)/hal_lib.so: $(addprefix $(OBJDIR)/,$(hal_lib-objs)) diff --git a/src/hal/lib/hal_lib.c b/src/hal/lib/hal_lib.c index ea0533fae2..1860316091 100644 --- a/src/hal/lib/hal_lib.c +++ b/src/hal/lib/hal_lib.c @@ -115,11 +115,8 @@ int lib_mem_id = -1; /* RTAPI shmem ID for library module */ // to run before any HAL/RTAPI activity starts, and until after it ends. // RTAPI cannot execute without the global segment existing and attached. -// depending on ULAP/ vs RTAPI and thread system (userland vs kthreads) -// the way how -// pointer to the global data segment, initialized by calling the -// the ulapi.so ulapi_main() method (ULAPI) or by external reference -// to the instance module (kernel modes) +// The pointer to the global data segment is initialized by calling +// rtapi_module_init() // defined(RTAPI) @@ -231,9 +228,6 @@ static void __attribute__ ((destructor)) ulapi_hal_lib_cleanup(void) HALDBG("lib_module_id=%d", lib_module_id); if (lib_module_id > -1) hal_exit(lib_module_id); - - // shut down ULAPI - ulapi_cleanup(); } #endif diff --git a/src/hal/user_comps/Submakefile b/src/hal/user_comps/Submakefile index c04574cbd6..c007d896c3 100644 --- a/src/hal/user_comps/Submakefile +++ b/src/hal/user_comps/Submakefile @@ -20,7 +20,12 @@ PYTARGETS += $(patsubst %, ../bin/%, $(USER_COMP_PY)) # USER_COMP_COMPS is defined in hal/components/Submakefile USER_COMP_BINS := $(patsubst hal/user_comps/%.comp, ../bin/%, $(USER_COMP_COMPS)) -../bin/%: hal/user_comps/%.comp ../bin/comp ../lib/liblinuxcnchal.so.0 ../lib/librtapi_math.so.0 +../bin/%: \ + hal/user_comps/%.comp \ + ../bin/comp \ + ../lib/liblinuxcnchal.so.0 \ + ../lib/liblinuxcnculapi.so.0 \ + ../lib/librtapi_math.so.0 $(ECHO) "Preprocessing usercomp $(notdir $<)" @mkdir -p objects/hal/user_comps $(Q)../bin/comp -o $(patsubst hal/user_comps/%.comp, objects/hal/user_comps/%.c, $<) $< @@ -28,6 +33,7 @@ USER_COMP_BINS := $(patsubst hal/user_comps/%.comp, ../bin/%, $(USER_COMP_COMPS) $(Q)$(CC) -DULAPI $(INCLUDE) -o $@ $(LDFLAGS) \ $(patsubst hal/user_comps/%.comp, objects/hal/user_comps/%.c, $<) \ ../lib/liblinuxcnchal.so.0 \ + ../lib/liblinuxcnculapi.so.0 \ ../lib/librtapi_math.so.0 TARGETS += $(USER_COMP_BINS) @@ -40,7 +46,10 @@ USERSRCS += $(MODBUSSRCS) $(call TOOBJSDEPS, $(MODBUSSRCS)) : EXTRAFLAGS += $(MODBUSCCFLAGS) -../bin/gs2_vfd: $(call TOOBJS, $(MODBUSSRCS)) ../lib/liblinuxcnchal.so.0 +../bin/gs2_vfd: \ + $(call TOOBJS, $(MODBUSSRCS)) \ + ../lib/liblinuxcnchal.so.0 \ + ../lib/liblinuxcnculapi.so.0 $(ECHO) Linking $(notdir $@) $(Q)$(CC) -o $@ $^ $(LDFLAGS) $(MODBUSLDFLAGS) TARGETS += ../bin/gs2_vfd @@ -49,7 +58,10 @@ endif # HAVE_LIBMODBUS ifeq ($(HIDRAW_H_USABLE),yes) SHUTTLEXPRESS_SRC = hal/user_comps/shuttlexpress.c USERSRCS += $(SHUTTLEXPRESS_SRC) -../bin/shuttlexpress: $(call TOOBJS, $(SHUTTLEXPRESS_SRC)) ../lib/liblinuxcnchal.so.0 +../bin/shuttlexpress: \ + $(call TOOBJS, $(SHUTTLEXPRESS_SRC)) \ + ../lib/liblinuxcnchal.so.0 \ + ../lib/liblinuxcnculapi.so.0 $(ECHO) Linking $(notdir $@) $(Q)$(CC) $(LDFLAGS) -o $@ $^ TARGETS += ../bin/shuttlexpress @@ -60,7 +72,12 @@ ifdef HAVE_LIBUSB10 XHC_HB04_SRC = hal/user_comps/xhc-hb04.cc USERSRCS += $(XHC_HB04_SRC) $(call TOOBJSDEPS, $(XHC_HB04_SRC)) : EXTRAFLAGS += $(LIBUSB10_CFLAGS) -../bin/xhc-hb04: $(call TOOBJS, $(XHC_HB04_SRC)) ../lib/liblinuxcnchal.so.0 ../lib/liblinuxcncini.so.0 ../lib/librtapi_math.so.0 +../bin/xhc-hb04: \ + $(call TOOBJS, $(XHC_HB04_SRC)) \ + ../lib/liblinuxcnchal.so.0 \ + ../lib/liblinuxcnculapi.so.0 \ + ../lib/liblinuxcncini.so.0 \ + ../lib/librtapi_math.so.0 $(ECHO) Linking $(notdir $@) $(Q)$(CC) $(LDFLAGS) -o $@ $^ -lstdc++ $(LIBUSB10_LIBS) TARGETS += ../bin/xhc-hb04 diff --git a/src/hal/user_icomps/Submakefile b/src/hal/user_icomps/Submakefile index d07801fb20..b9900830a0 100644 --- a/src/hal/user_icomps/Submakefile +++ b/src/hal/user_icomps/Submakefile @@ -5,8 +5,4 @@ HALUSERICOMPDIR= hal/user_icomps HALUSERICOMP_SUBMAKEFILE= $(HALUSERICOMPDIR)/Submakefile -obj-m += watch.o -# the list of parts -watch-objs := $(HALUSERICOMPDIR)/watch.o - -$(RTLIBDIR)/watch$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(watch-objs)) \ No newline at end of file +$(eval $(call c_comp_build_rules,$(HALUSERICOMPDIR)/watch.o)) diff --git a/src/hal/utils/Submakefile b/src/hal/utils/Submakefile index c7e61cd862..0067506fa5 100644 --- a/src/hal/utils/Submakefile +++ b/src/hal/utils/Submakefile @@ -12,6 +12,7 @@ $(call TOOBJSDEPS, hal/utils/halsh.c) : EXTRAFLAGS += $(TCL_CFLAGS) ../tcl/hal.so: $(call TOOBJS, $(HALSHSRCS)) \ ../lib/liblinuxcncini.so.0 \ ../lib/liblinuxcnchal.so.0 \ + ../lib/liblinuxcnculapi.so.0 \ ../lib/libmachinetalk-pb2++.so.0 \ ../lib/libmtalk.so.0 \ ../lib/librtapi_math.so.0 @@ -25,6 +26,7 @@ $(call TOOBJSDEPS, $(HALCMDCCSRCS)) : EXTRAFLAGS = \ ../bin/halcmd: $(call TOOBJS, $(HALCMDSRCS)) $(call TOOBJS, $(HALCMDCCSRCS)) \ ../lib/liblinuxcncini.so.0 \ ../lib/liblinuxcnchal.so.0 \ + ../lib/liblinuxcnculapi.so.0 \ ../lib/libmachinetalk-pb2++.so.0 \ ../lib/libmtalk.so.0 \ ../lib/librtapi_math.so.0 @@ -51,7 +53,10 @@ HALMETERSRCS := \ USERSRCS += $(HALMETERSRCS) -../bin/halmeter: $(call TOOBJS, $(HALMETERSRCS)) ../lib/liblinuxcnchal.so.0 +../bin/halmeter: \ + $(call TOOBJS, $(HALMETERSRCS)) \ + ../lib/liblinuxcnchal.so.0 \ + ../lib/liblinuxcnculapi.so.0 $(ECHO) Linking $(notdir $@) $(Q)$(CC) $(LDFLAGS) -o $@ $^ $(GTK_LIBS) TARGETS += ../bin/halmeter @@ -68,8 +73,9 @@ HALSCOPESRCS := \ USERSRCS += $(HALSCOPESRCS) ../bin/halscope: $(call TOOBJS, $(HALSCOPESRCS)) \ - ../lib/liblinuxcnchal.so.0 \ - ../lib/librtapi_math.so.0 + ../lib/liblinuxcnchal.so.0 \ + ../lib/liblinuxcnculapi.so.0 \ + ../lib/librtapi_math.so.0 $(ECHO) Linking $(notdir $@) $(Q)$(CC) $(LDFLAGS) -o $@ $^ $(GTK_LIBS) TARGETS += ../bin/halscope diff --git a/src/machinetalk/haltalk/Submakefile b/src/machinetalk/haltalk/Submakefile index 2df9949284..ba54c1b1fd 100644 --- a/src/machinetalk/haltalk/Submakefile +++ b/src/machinetalk/haltalk/Submakefile @@ -28,6 +28,7 @@ $(call TOOBJSDEPS, $(HALTALK_SRCS)) : EXTRAFLAGS += $(HALTALK_CXXFLAGS) ../lib/libmtalk.so.0 \ ../lib/libmachinetalk-pb2++.so.0 \ ../lib/liblinuxcnchal.so.0 \ + ../lib/liblinuxcnculapi.so.0 \ ../lib/liblinuxcncini.so.0 $(ECHO) Linking $(notdir $@) $(Q)$(CC) -o $@ $^ $(LDFLAGS) $(HALTALK_LDFLAGS) diff --git a/src/rtapi/Submakefile b/src/rtapi/Submakefile index b522443cf2..91c6e14dc4 100644 --- a/src/rtapi/Submakefile +++ b/src/rtapi/Submakefile @@ -1,4 +1,4 @@ -INCLUDES += rtapi rtapi_export +INCLUDES += rtapi rtapi_export rtapi/flavor # this covers the userpci and shmdrv directories too, in a bit cludgy way ../include/%.h: ./rtapi/%.h @@ -14,9 +14,14 @@ INCLUDES += rtapi rtapi_export @mkdir -p ../include/shmdrv $(Q)cp $^ $@ +../include/%.h: ./rtapi/flavor/%.h + $(ECHO) Copying header file $@ + @mkdir -p ../include/flavor + $(Q)cp $^ $@ + HEADERS += \ - rtapi/rtapi_flavor.h \ - rtapi/rt-preempt.h + rtapi/flavor/rtapi_flavor.h \ + rtapi/flavor/rt-preempt.h ########################################## # Clean up @@ -29,8 +34,7 @@ modclean-rtapi: ########################################## # defaults for all thread styles -# Sources/objects included in both RTAPI and ULAPI, both kbuild and -# user threads +# Sources/objects included in both RTAPI and ULAPI XXAPI_COMMON_SRCS := $(patsubst %, rtapi/%, \ rtapi_support.c \ rtapi_hexdump.c \ @@ -40,6 +44,8 @@ XXAPI_COMMON_SRCS := $(patsubst %, rtapi/%, \ rtapi_time.c \ rtapi_exception.c \ rtapi_heap.c \ + rtapi_compat.c \ + flavor/rtapi_flavor.c \ ) # rtapi_compat needs to know where rtapi.ini lives @@ -53,12 +59,10 @@ XXAPI_COMMON_SRCS := $(patsubst %, rtapi/%, \ ################################################################## ULAPI_SRCS := \ - rtapi/ulapi_autoload.c \ - rtapi/rtapi_compat.c \ - rtapi/rtapi_support.c \ + rtapi/flavor/ulapi.c \ machinetalk/lib/syslog_async.c \ - $(XXAPI_COMMON_SRCS) \ - rtapi/ulapi_main.c + rtapi/rtapi_hexdump.c \ + $(XXAPI_COMMON_SRCS) USERSRCS += $(ULAPI_SRCS) @@ -68,8 +72,7 @@ $(call TOOBJSDEPS, $(ULAPI_SRCS)): EXTRAFLAGS += -DULAPI -fPIC $(ULAPI_LIB).0: $(call TOOBJS, $(ULAPI_SRCS)) \ ../lib/liblinuxcncini.so \ - ../lib/liblinuxcncshm.so \ - ../lib/liblinuxcnchal.so + ../lib/liblinuxcncshm.so $(ECHO) Creating shared library $(notdir $@) @mkdir -p ../lib @rm -f $@ @@ -170,10 +173,7 @@ TARGETS += $(ULAPI_LIB) $(ULAPI_LIB).0 RTAPI_LIB_SRCS := \ $(XXAPI_COMMON_SRCS) \ - rtapi/rtapi_compat.c \ - rtapi/rtapi_flavor.c \ - rtapi/rt-preempt.c \ - rtapi/rtapi_main.c \ + rtapi/flavor/rt-preempt.c \ machinetalk/support/nanopb.c \ machinetalk/nanopb/pb_decode.c \ machinetalk/nanopb/pb_encode.c \ @@ -185,8 +185,8 @@ RTAPI_LIB_SRCS += rtapi/rtapi_pci.c endif ifeq ($(HAVE_XENOMAI_THREADS),yes) -RTAPI_LIB_SRCS += rtapi/xenomai.c -HEADERS += rtapi/xenomai.h +RTAPI_LIB_SRCS += rtapi/flavor/xenomai.c +HEADERS += rtapi/flavor/xenomai.h endif # Build RTAPI_LIB_SRCS with -DRTAPI diff --git a/src/rtapi/rtapi.h b/src/rtapi/rtapi.h index d6de57f587..7f51452545 100644 --- a/src/rtapi/rtapi.h +++ b/src/rtapi/rtapi.h @@ -949,21 +949,6 @@ extern int rtapi_instance; extern long int simple_strtol(const char *nptr, char **endptr, int base); -#ifdef ULAPI -// the ulapi constructor and destructor -// these attach/detach the rtapi shm segments to/from ULAPI -typedef int (*ulapi_main_t)(int, int, global_data_t *); -typedef int (*ulapi_exit_t)(int); -extern int ulapi_main(int instance, int flavor, global_data_t *global); -extern int ulapi_exit(int instance); - -// ULAPI cleanup. Call the exit handler and unload ulapi-.so. -extern void ulapi_cleanup(void); - -extern int ulapi_loaded(void); - -#endif - // elf section name where capability strings reside #define RTAPI_TAGS ".rtapi_tags" diff --git a/src/rtapi/rtapi_app.cc b/src/rtapi/rtapi_app.cc index 85cdeb5cab..f1ce352214 100644 --- a/src/rtapi/rtapi_app.cc +++ b/src/rtapi/rtapi_app.cc @@ -88,7 +88,6 @@ using namespace google::protobuf; #define BACKGROUND_TIMER 1000 #define HALMOD "hal_lib" -#define RTAPIMOD "rtapi" using namespace std; @@ -126,7 +125,6 @@ static void remove_module(std::string name); static struct rusage rusage; static unsigned long minflt, majflt; -static int instance_id; static int use_drivers = 0; static int foreground; static int debug; @@ -631,9 +629,6 @@ static int init_actions(int instance) int retval; machinetalk::Container reply; - retval = do_load_cmd(instance, RTAPIMOD, pbstringarray_t(), reply); - if (retval) - return retval; if ((retval = do_load_cmd(instance, HALMOD, pbstringarray_t(), reply))) return retval; @@ -660,20 +655,20 @@ static int init_actions(int instance) static int attach_global_segment() { int retval = 0; - int globalkey = OS_KEY(GLOBAL_KEY, instance_id); + int globalkey = OS_KEY(GLOBAL_KEY, rtapi_instance); int size = 0; int tries = 10; // 5 sec deadline for msgd/globaldata to come up shm_common_init(); do { retval = shm_common_new(globalkey, &size, - instance_id, (void **) &global_data, 0); + rtapi_instance, (void **) &global_data, 0); if (retval < 0) { tries--; if (tries == 0) { syslog_async(LOG_ERR, "rtapi_app:%d: ERROR: cannot attach global segment key=0x%x %s\n", - instance_id, globalkey, strerror(-retval)); + rtapi_instance, globalkey, strerror(-retval)); return retval; } struct timespec ts = {0, 500 * 1000 * 1000}; //ms @@ -684,7 +679,7 @@ static int attach_global_segment() if (size < (int) sizeof(global_data_t)) { syslog_async(LOG_ERR, "rtapi_app:%d global segment size mismatch: expect >%zu got %d\n", - instance_id, sizeof(global_data_t), size); + rtapi_instance, sizeof(global_data_t), size); return -EINVAL; } @@ -694,7 +689,7 @@ static int attach_global_segment() if (tries == 0) { syslog_async(LOG_ERR, "rtapi_app:%d: ERROR: global segment magic not changing to ready: magic=0x%x\n", - instance_id, global_data->magic); + rtapi_instance, global_data->magic); return -EINVAL; } struct timespec ts = {0, 500 * 1000 * 1000}; //ms @@ -1001,7 +996,7 @@ static int s_handle_signal(zloop_t *loop, zmq_pollitem_t *poller, void *arg) rtapi_print_msg(RTAPI_MSG_INFO, "signal %d - '%s' received, exiting", fdsi.ssi_signo, strsignal(fdsi.ssi_signo)); - exit_actions(instance_id); + exit_actions(rtapi_instance); interrupted = true; // make mainloop exit if (global_data) global_data->rtapi_app_pid = 0; @@ -1024,7 +1019,7 @@ s_handle_timer(zloop_t *loop, int timer_id, void *args) if (global_data->rtapi_msgd_pid == 0) { // cant log this via rtapi_print, since msgd is gone syslog_async(LOG_ERR,"rtapi_msgd went away, exiting\n"); - exit_actions(instance_id); + exit_actions(rtapi_instance); if (global_data) global_data->rtapi_app_pid = 0; exit(EXIT_FAILURE); @@ -1040,7 +1035,7 @@ static int mainloop(size_t argc, char **argv) static char proctitle[20]; // set new process name - snprintf(proctitle, sizeof(proctitle), "rtapi:%d",instance_id); + snprintf(proctitle, sizeof(proctitle), "rtapi:%d",rtapi_instance); size_t argv0_len = strlen(argv[0]); size_t procname_len = strlen(proctitle); size_t max_procname_len = (argv0_len > procname_len) ? @@ -1092,12 +1087,12 @@ static int mainloop(size_t argc, char **argv) } // make sure we're setuid root when we need to - if (use_drivers || (flavor_descriptor->flags & FLAVOR_DOES_IO)) { + if (use_drivers || FLAVOR_FEATURE(FLAVOR_DOES_IO)) { if (geteuid() != 0) { rtapi_print_msg(RTAPI_MSG_ERR, "rtapi_app:%d need to" " 'sudo make setuid' to access I/O?\n", - instance_id); + rtapi_instance); global_data->rtapi_app_pid = 0; exit(EXIT_FAILURE); } @@ -1108,13 +1103,13 @@ static int mainloop(size_t argc, char **argv) rtapi_print_msg(RTAPI_MSG_ERR, "rtapi_app:%d failed to setup " "realtime environment - 'sudo make setuid' missing?\n", - instance_id); + rtapi_instance); global_data->rtapi_app_pid = 0; exit(retval); } // load rtapi and hal_lib - if (init_actions(instance_id)) { + if (init_actions(rtapi_instance)) { rtapi_print_msg(RTAPI_MSG_ERR, "init_actions() failed\n"); global_data->rtapi_app_pid = 0; @@ -1176,7 +1171,7 @@ static int mainloop(size_t argc, char **argv) { // always bind the IPC socket char uri[LINELEN]; snprintf(uri, sizeof(uri), ZMQIPC_FORMAT, - RUNDIR, instance_id, RTAPIMOD, service_uuid); + RUNDIR, rtapi_instance, "rtapi", service_uuid); mode_t prev = umask(S_IROTH | S_IWOTH | S_IXOTH); if ((z_port = zsock_bind(z_command, "%s", uri )) < 0) { rtapi_print_msg(RTAPI_MSG_ERR, "cannot bind IPC socket '%s' - %s\n", @@ -1207,7 +1202,7 @@ static int mainloop(size_t argc, char **argv) if (!(av_loop = avahi_czmq_poll_new(z_loop))) { rtapi_print_msg(RTAPI_MSG_ERR, "rtapi_app:%d: zeroconf: " "Failed to create avahi event loop object.", - instance_id); + rtapi_instance); return -1; } else { char name[255]; @@ -1223,7 +1218,7 @@ static int mainloop(size_t argc, char **argv) av_loop); if (rtapi_publisher == NULL) { rtapi_print_msg(RTAPI_MSG_ERR, "rtapi_app:%d: failed to start zeroconf publisher", - instance_id); + rtapi_instance); return -1; } } @@ -1232,7 +1227,7 @@ static int mainloop(size_t argc, char **argv) // report success rtapi_print_msg(RTAPI_MSG_INFO, "rtapi_app:%d ready flavor=%s gcc=%s git=%s", - instance_id, flavor_descriptor->name, __VERSION__, GIT_VERSION); + rtapi_instance, flavor_descriptor->name, __VERSION__, GIT_VERSION); // the RT stack is now set up and good for use global_data->rtapi_app_pid = getpid(); @@ -1262,7 +1257,7 @@ static int configure_memory(void) unsigned int i, pagesize; char *buf; - if (use_drivers || (flavor_descriptor->flags & FLAVOR_DOES_IO)) { + if (use_drivers || FLAVOR_FEATURE(FLAVOR_DOES_IO)) { // Realtime tweak requires privs /* Lock all memory. This includes all current allocations (BSS/data) * and future allocations. */ @@ -1355,7 +1350,7 @@ static int harden_rt() if ((fscanf(fd, "%d", &flag) == 1) && (flag == 0)) { rtapi_print_msg(RTAPI_MSG_WARN, "rtapi:%d: cannot create core dumps - /proc/sys/fs/suid_dumpable contains 0", - instance_id); + rtapi_instance); rtapi_print_msg(RTAPI_MSG_WARN, "you might have to run 'echo 1 > /proc/sys/fs/suid_dumpable'" " as root to enable rtapi_app core dumps"); @@ -1390,7 +1385,7 @@ static int harden_rt() // guaranteed the process executing e.g. hal_parport's rtapi_app_main is // the same process which starts the RT threads, causing hal_parport // thread functions to fail on inb/outb - if (use_drivers || (flavor_descriptor->flags & FLAVOR_DOES_IO)) { + if (use_drivers || FLAVOR_FEATURE(FLAVOR_DOES_IO)) { if (iopl(3) < 0) { rtapi_print_msg(RTAPI_MSG_ERR, "cannot gain I/O privileges - " @@ -1466,7 +1461,7 @@ int main(int argc, char **argv) break; case 'I': - instance_id = atoi(optarg); + rtapi_instance = atoi(optarg); break; case 'f': diff --git a/src/rtapi/rtapi_app.h b/src/rtapi/rtapi_app.h index 69b76c30d2..bae54d4e1e 100644 --- a/src/rtapi/rtapi_app.h +++ b/src/rtapi/rtapi_app.h @@ -28,16 +28,10 @@ #if defined(USERMODE_PCI) #include "userpci/module.h" #endif -/* For kernel modules (hm2_pci, hostmot2) to compile in usermode without lots - of changes, the EXPORT_SYMBOL lines, below, need to be defined *ONLY* if - there is actually an rtapi_app_* function in the code. This is handeled - in the kernel module case by the simple define that renames the module - init/cleanup functions. - For the usermode case, turn the first instance of rtapi_app_* into a - function declaration, then export the symbol, then re-create the function - definition. This way the symbol is only exported if the function exists - in the code, and we don't have to have the ability to 'rewind' the C - preprocessor. +/* Turn the first instance of rtapi_app_* into a function declaration, then + export the symbol, then re-create the function definition. This way the + symbol is only exported if the function exists in the code, and we don't + have to have the ability to 'rewind' the C preprocessor. */ #define rtapi_app_main(a) \ rtapi_app_main(a); \ diff --git a/src/rtapi/rtapi_common.c b/src/rtapi/rtapi_common.c index f3537a3f5f..f40d60be9f 100644 --- a/src/rtapi/rtapi_common.c +++ b/src/rtapi/rtapi_common.c @@ -23,6 +23,7 @@ #include "rtapi.h" #include "rtapi_common.h" #include "rtapi_compat.h" +#include "shmdrv.h" /* common shm driver API */ #include "ring.h" /* these pointers are initialized at startup to point @@ -43,13 +44,21 @@ task_data *task_array = local_rtapi_data.task_array; shmem_data *shmem_array = local_rtapi_data.shmem_array; module_data *module_array = local_rtapi_data.module_array; -// RTAPI: -// global_data is exported by rtapi_module.c (kthreads) -// or rtapi_main.c (uthreads) -// ULAPI: exported in ulapi_autoload.c -extern global_data_t *global_data; +int rtapi_instance; // instance id, visible throughout RTAPI -int shmdrv_loaded; // set in rtapi_app_main, and ulapi_main +global_data_t *global_data = NULL; // visible to all RTAPI modules +struct rtapi_heap *global_heap = NULL; + +ringbuffer_t rtapi_message_buffer; // error ring access strcuture + +#ifdef ULAPI +// use 'ULAPI_DEBUG= ' to trace ulapi loading +static int ulapi_debug = RTAPI_MSG_NONE; +#endif + +#define LOGTAG (FLAVOR_FEATURE(FLAVOR_NOT_RTAPI) ? "ULAPI" : "RTAPI") + +int shmdrv_loaded; // set in rtapi_app_main FIXME long page_size; // set in rtapi_app_main void rtapi_autorelease_mutex(void *variable) @@ -123,11 +132,117 @@ void init_rtapi_data(rtapi_data_t * data) return; } +/*********************************************************************** +* MODULE INIT FUNCTIONS * +************************************************************************/ + +int rtapi_module_init() +{ + int retval; + int size = 0; + +#ifdef ULAPI + // Set the rtapi_instance global for HAL library instances; + // rtapi_instance set in rtapi_app.cc for RTAPI instances + char *instance = getenv("MK_INSTANCE"); + if (instance != NULL) + rtapi_instance = atoi(instance); + + char *debug_env = getenv("ULAPI_DEBUG"); + if (debug_env) + ulapi_debug = atoi(debug_env); + rtapi_set_msg_level(ulapi_debug); +#endif + + int globalkey = OS_KEY(GLOBAL_KEY, rtapi_instance); + + shm_common_init(); + + // tag messages originating from RT proper + rtapi_set_logtag(LOGTAG); + + // flavor + rtapi_print_msg(RTAPI_MSG_DBG,"%s:%d %s %s init\n", + LOGTAG, + rtapi_instance, + flavor_descriptor->name, + GIT_VERSION); + + // attach to global segment which rtapi_msgd owns and already + // has set up: + retval = shm_common_new(globalkey, &size, + rtapi_instance, (void **) &global_data, 0); + + if (retval == -ENOENT) { + // the global_data segment does not exist. + rtapi_print_msg(RTAPI_MSG_ERR, + "%s:%d ERROR: global segment 0x%x does not exist" + " (rtapi_msgd not started?)\n", + LOGTAG, rtapi_instance, globalkey); + return -EBUSY; + } + if (retval < 0) { + rtapi_print_msg(RTAPI_MSG_ERR, + "%s:%d ERROR: shm_common_new() failed key=0x%x %s\n", + LOGTAG, rtapi_instance, globalkey, strerror(-retval)); + return retval; + } + if (size < sizeof(global_data_t)) { + rtapi_print_msg(RTAPI_MSG_ERR, + "%s:%d ERROR: unexpected global shm size:" + " expected: >%zu actual:%d\n", + LOGTAG, rtapi_instance, sizeof(global_data_t), size); + return -EINVAL; + } + + // good to use global_data from here on + + // this heap is inited in rtapi_msgd.cc + // make it accessible in RTAPI + global_heap = &global_data->heap; + + // make the message ringbuffer accessible + ringbuffer_init(shm_ptr(global_data, global_data->rtapi_messages_ptr), + &rtapi_message_buffer); + rtapi_message_buffer.header->refcount++; // rtapi is 'attached' + + // flavor + init_rtapi_data(rtapi_data); + + if (flavor_descriptor->module_init_hook) + retval = flavor_descriptor->module_init_hook(); + + return retval; +} + +int rtapi_app_main() +{ + return rtapi_module_init(); +} + +void rtapi_app_exit(void) +{ + if (flavor_descriptor->module_exit_hook) + flavor_descriptor->module_exit_hook(); + + rtapi_message_buffer.header->refcount--; + + rtapi_print_msg(RTAPI_MSG_DBG,"%s:%d exit\n", LOGTAG, rtapi_instance); + + rtapi_data = NULL; +} + /*********************************************************************** * INIT AND EXIT FUNCTIONS * ************************************************************************/ int rtapi_init(const char *modname) { +#ifdef ULAPI + // Load ULAPI if global_data hasn't been set up yet + if (global_data == NULL) + rtapi_module_init(); +#endif + return rtapi_next_handle(); } @@ -137,7 +252,6 @@ int rtapi_exit(int module_id) { } - /*********************************************************************** * RT Thread statistics collection * * @@ -193,7 +307,7 @@ rtapi_exception_handler_t rtapi_set_exception(rtapi_exception_handler_t h) } #endif -// defined and initialized in rtapi_module.c (kthreads), rtapi_main.c (userthreads) +// defined and initialized in rtapi_main.c (userthreads) extern ringbuffer_t rtapi_message_buffer; // error ring access strcuture int rtapi_next_handle(void) diff --git a/src/rtapi/rtapi_main.c b/src/rtapi/rtapi_main.c deleted file mode 100644 index c47e61709e..0000000000 --- a/src/rtapi/rtapi_main.c +++ /dev/null @@ -1,131 +0,0 @@ -/******************************************************************** - * Description: rtapi_main.c - * - * This file, 'rtapi_main.c', implements the RTAPI - * rtapi_app_main() and rtapi_app_exit() functions - * for userspace thread systems. - * - * It should not be used for kernel thread systems. - * - * Copyright (C) 2012, 2013 John Morris - * Michael Haberler - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This program 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - ********************************************************************/ - - -#include /* ssize_t, _SC_PAGESIZE */ -#include -#include -#include -#include -#include - -#include "rtapi_flavor.h" // flavor_descriptor -#include "config.h" -#include "rtapi.h" /* RTAPI realtime OS API */ -#include "rtapi_app.h" /* RTAPI realtime module decls */ -#include "rtapi_common.h" /* global_data_t */ -#include "rtapi_compat.h" /* global_data_t */ -#include "ring.h" -#include "rtapi_heap.h" -#include "shmdrv.h" /* common shm driver API */ - -// mostly for argument compatibility with kernel thread flavors -int rtapi_instance; // instance id, visible throughout RTAPI -RTAPI_MP_INT(rtapi_instance, "instance ID"); -EXPORT_SYMBOL(rtapi_instance); - -global_data_t *global_data = NULL; // visible to all RTAPI modules -EXPORT_SYMBOL(global_data); - -struct rtapi_heap *global_heap = NULL; -EXPORT_SYMBOL(global_heap); - -ringbuffer_t rtapi_message_buffer; // error ring access strcuture - -int rtapi_app_main(void) -{ - int retval; - int globalkey = OS_KEY(GLOBAL_KEY, rtapi_instance); - int size = 0; - - shm_common_init(); - - // tag messages originating from RT proper - rtapi_set_logtag("rtapi"); - - rtapi_print_msg(RTAPI_MSG_DBG,"RTAPI:%d %s %s init\n", - rtapi_instance, - flavor_descriptor->name, - GIT_VERSION); - - // attach to global segment which rtapi_msgd owns and already - // has set up: - retval = shm_common_new(globalkey, &size, - rtapi_instance, (void **) &global_data, 0); - - if (retval == -ENOENT) { - // the global_data segment does not exist. - rtapi_print_msg(RTAPI_MSG_ERR, - "RTAPI:%d ERROR: global segment 0x%x does not exist" - " (rtapi_msgd not started?)\n", - rtapi_instance, globalkey); - return -EBUSY; - } - if (retval < 0) { - rtapi_print_msg(RTAPI_MSG_ERR, - "RTAPI:%d ERROR: shm_common_new() failed key=0x%x %s\n", - rtapi_instance, globalkey, strerror(-retval)); - return retval; - } - if (size < sizeof(global_data_t)) { - rtapi_print_msg(RTAPI_MSG_ERR, - "RTAPI:%d ERROR: unexpected global shm size:" - " expected: >%zu actual:%d\n", - rtapi_instance, sizeof(global_data_t), size); - return -EINVAL; - } - - // good to use global_data from here on - - // this heap is inited in rtapi_msgd.cc - // make it accessible in RTAPI - global_heap = &global_data->heap; - - // make the message ringbuffer accessible - ringbuffer_init(shm_ptr(global_data, global_data->rtapi_messages_ptr), - &rtapi_message_buffer); - rtapi_message_buffer.header->refcount++; // rtapi is 'attached' - - init_rtapi_data(rtapi_data); - - if (flavor_descriptor->module_init_hook) - flavor_descriptor->module_init_hook(); - - return 0; -} - -void rtapi_app_exit(void) -{ - rtapi_print_msg(RTAPI_MSG_DBG,"RTAPI:%d exit\n", rtapi_instance); - - if (flavor_descriptor->module_exit_hook) - flavor_descriptor->module_exit_hook(); - - rtapi_message_buffer.header->refcount--; - - rtapi_data = NULL; -} diff --git a/src/rtapi/rtapi_time.c b/src/rtapi/rtapi_time.c index df3f089058..ca508bc5fa 100644 --- a/src/rtapi/rtapi_time.c +++ b/src/rtapi/rtapi_time.c @@ -60,7 +60,7 @@ long int rtapi_clock_set_period(long int nsecs) { return -EINVAL; } - if (flavor_descriptor->time_no_clock_monotonic) + if (FLAVOR_FEATURE(FLAVOR_TIME_NO_CLOCK_MONOTONIC)) period = nsecs; else { clock_getres(CLOCK_MONOTONIC, &res); diff --git a/src/rtapi/shmdrv/mutexwatch.c b/src/rtapi/shmdrv/mutexwatch.c index b14d640ef1..c4f97d4e36 100644 --- a/src/rtapi/shmdrv/mutexwatch.c +++ b/src/rtapi/shmdrv/mutexwatch.c @@ -1,136 +1,134 @@ -/******************************************************************** - * Copyright (C) 2012, 2013 Michael Haberler - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This program 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - ********************************************************************/ - -// helper to watch mutexes - -#include -#include -#include -#include -#include -#include - -#include "config.h" - -#include "rtapi.h" -#include "rtapi_common.h" -#include "rtapi_global.h" -#include "rtapi/shmdrv/shmdrv.h" -#include "hal.h" -#include "hal_priv.h" - -global_data_t *global_data; -rtapi_data_t *rtapi_data; -hal_data_t *hal_data; - -int shmdrv_loaded; -long page_size; - -int gm = -1; -int rm = -1; -int rrm = -1; -int hm = -1; - -int rtapi_instance = 0; - -struct timespec looptime = { - .tv_sec = 0, - .tv_nsec = 1000 * 1000 * 100, -}; - -int main(int argc, char **argv) -{ - int globalkey,rtapikey,halkey,retval; - int size; - - page_size = sysconf(_SC_PAGESIZE); - shmdrv_loaded = shmdrv_available(); - - if (argc > 1) - rtapi_instance = atoi(argv[1]); - - globalkey = OS_KEY(GLOBAL_KEY, rtapi_instance); - rtapikey = OS_KEY(RTAPI_KEY, rtapi_instance); - halkey = OS_KEY(HAL_KEY, rtapi_instance); - - size = sizeof(global_data_t); - retval = shm_common_new(globalkey, &size, - rtapi_instance, (void **) &global_data, 0); - if (retval < 0) - fprintf(stderr, "cannot attach global segment key=0x%x %s\n", - globalkey, strerror(-retval)); - - if (MMAP_OK(global_data) && (global_data->magic != GLOBAL_READY)) { - printf("global_data MAGIC wrong: %x %x\n", global_data->magic, GLOBAL_READY); - } - - size = sizeof(rtapi_data_t); - retval = shm_common_new(rtapikey, &size, - rtapi_instance, (void **) &rtapi_data, 0); - if (retval < 0) - fprintf(stderr, "cannot attach rtapi segment key=0x%x %s\n", - rtapikey, strerror(-retval)); - - if (MMAP_OK(rtapi_data) && (rtapi_data->magic != RTAPI_MAGIC)) { - printf("rtapi_data MAGIC wrong: %x\n", rtapi_data->magic); - } - - if (MMAP_OK(global_data)) { - size = global_data->hal_size; - // global_data is needed for actual size of the HAL data segment - retval = shm_common_new(halkey, &size, - rtapi_instance, (void **) &hal_data, 0); - if (retval < 0) - fprintf(stderr, "cannot attach hal segment key=0x%x %s\n", - halkey, strerror(-retval)); - - if (MMAP_OK(hal_data) && (hal_data->version != HAL_VER)) { - printf("hal_data HAL_VER wrong: %x\n", hal_data->version); - } - } - - if (!(MMAP_OK(global_data) || MMAP_OK(rtapi_data) || MMAP_OK(hal_data))) { - printf("nothing to attach to!\n"); - exit(1); - } - - do { - if (nanosleep(&looptime, &looptime)) - break; - - if (MMAP_OK(global_data) && (global_data->mutex != gm)) { - printf("global_data->mutex: %ld\n", global_data->mutex); - gm = global_data->mutex; - } - if (MMAP_OK(rtapi_data) && (rtapi_data->ring_mutex != rrm)) { - printf("rtapi_data->ring_mutex: %ld\n", rtapi_data->ring_mutex); - rrm = rtapi_data->ring_mutex; - } - if (MMAP_OK(rtapi_data) && (rtapi_data->mutex != rm)) { - printf("rtapi_data->mutex: %ld\n", rtapi_data->mutex); - rm = rtapi_data->mutex; - } - if (MMAP_OK(hal_data) && (hal_data->mutex != hm)) { - printf("hal_data->mutex: %ld\n", hal_data->mutex); - hm = hal_data->mutex; - } - - } while (1); - - exit(0); -} +/******************************************************************** + * Copyright (C) 2012, 2013 Michael Haberler + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This program 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + ********************************************************************/ + +// helper to watch mutexes + +#include +#include +#include +#include +#include +#include + +#include "config.h" + +#include "rtapi.h" +#include "rtapi_common.h" +#include "rtapi_global.h" +#include "rtapi/shmdrv/shmdrv.h" +#include "hal.h" +#include "hal_priv.h" + +hal_data_t *hal_data; + +int shmdrv_loaded; +long page_size; + +int gm = -1; +int rm = -1; +int rrm = -1; +int hm = -1; + +int rtapi_instance = 0; + +struct timespec looptime = { + .tv_sec = 0, + .tv_nsec = 1000 * 1000 * 100, +}; + +int main(int argc, char **argv) +{ + int globalkey,rtapikey,halkey,retval; + int size; + + page_size = sysconf(_SC_PAGESIZE); + shmdrv_loaded = shmdrv_available(); + + if (argc > 1) + rtapi_instance = atoi(argv[1]); + + globalkey = OS_KEY(GLOBAL_KEY, rtapi_instance); + rtapikey = OS_KEY(RTAPI_KEY, rtapi_instance); + halkey = OS_KEY(HAL_KEY, rtapi_instance); + + size = sizeof(global_data_t); + retval = shm_common_new(globalkey, &size, + rtapi_instance, (void **) &global_data, 0); + if (retval < 0) + fprintf(stderr, "cannot attach global segment key=0x%x %s\n", + globalkey, strerror(-retval)); + + if (MMAP_OK(global_data) && (global_data->magic != GLOBAL_READY)) { + printf("global_data MAGIC wrong: %x %x\n", global_data->magic, GLOBAL_READY); + } + + size = sizeof(rtapi_data_t); + retval = shm_common_new(rtapikey, &size, + rtapi_instance, (void **) &rtapi_data, 0); + if (retval < 0) + fprintf(stderr, "cannot attach rtapi segment key=0x%x %s\n", + rtapikey, strerror(-retval)); + + if (MMAP_OK(rtapi_data) && (rtapi_data->magic != RTAPI_MAGIC)) { + printf("rtapi_data MAGIC wrong: %x\n", rtapi_data->magic); + } + + if (MMAP_OK(global_data)) { + size = global_data->hal_size; + // global_data is needed for actual size of the HAL data segment + retval = shm_common_new(halkey, &size, + rtapi_instance, (void **) &hal_data, 0); + if (retval < 0) + fprintf(stderr, "cannot attach hal segment key=0x%x %s\n", + halkey, strerror(-retval)); + + if (MMAP_OK(hal_data) && (hal_data->version != HAL_VER)) { + printf("hal_data HAL_VER wrong: %x\n", hal_data->version); + } + } + + if (!(MMAP_OK(global_data) || MMAP_OK(rtapi_data) || MMAP_OK(hal_data))) { + printf("nothing to attach to!\n"); + exit(1); + } + + do { + if (nanosleep(&looptime, &looptime)) + break; + + if (MMAP_OK(global_data) && (global_data->mutex != gm)) { + printf("global_data->mutex: %ld\n", global_data->mutex); + gm = global_data->mutex; + } + if (MMAP_OK(rtapi_data) && (rtapi_data->ring_mutex != rrm)) { + printf("rtapi_data->ring_mutex: %ld\n", rtapi_data->ring_mutex); + rrm = rtapi_data->ring_mutex; + } + if (MMAP_OK(rtapi_data) && (rtapi_data->mutex != rm)) { + printf("rtapi_data->mutex: %ld\n", rtapi_data->mutex); + rm = rtapi_data->mutex; + } + if (MMAP_OK(hal_data) && (hal_data->mutex != hm)) { + printf("hal_data->mutex: %ld\n", hal_data->mutex); + hm = hal_data->mutex; + } + + } while (1); + + exit(0); +} diff --git a/src/rtapi/ulapi_autoload.c b/src/rtapi/ulapi_autoload.c deleted file mode 100644 index a5318dcb16..0000000000 --- a/src/rtapi/ulapi_autoload.c +++ /dev/null @@ -1,153 +0,0 @@ -/******************************************************************** - * Copyright (C) 2012, 2013 Michael Haberler - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This program 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - ********************************************************************/ - - -#include // snprintf -#include -#include // PATH_MAX -#include // exit() - -#include "rtapi_flavor.h" // flavor_descriptor -#include "rtapi.h" // RTAPI realtime OS API -#include "ring.h" // RTAPI realtime OS API -#include "shmdrv.h" // common shared memory API - -#ifdef ULAPI - -// exported symbols -// since this is normal userland linking, not RT loading, no need to -// EXPORT_SYMBOL() any of those - -global_data_t *global_data; -struct rtapi_heap *global_heap; -extern ringbuffer_t rtapi_message_buffer; // error ring access strcuture -int rtapi_instance; - -// use 'ULAPI_DEBUG= ' to trace ulapi loading -static int ulapi_debug = RTAPI_MSG_NONE; - -static int ulapi_load(); - -int _ulapi_init(const char *modname) { - if (ulapi_load() < 0) { - return -ENOSYS; - } - rtapi_print_msg(RTAPI_MSG_DBG, - "_ulapi_init(): ulapi %s loaded\n", - flavor_descriptor->name); - - // switch logging level to what was set in global via msgd: - rtapi_set_msg_level(global_data->user_msg_level); - - // and return what was intended to start with - return rtapi_init(modname); -} - -static int ulapi_load() -{ - int retval; - char *instance = getenv("MK_INSTANCE"); - char *debug_env = getenv("ULAPI_DEBUG"); - int size = 0; - int globalkey; - - // set the rtapi_instance global for this hal library instance - if (instance != NULL) - rtapi_instance = atoi(instance); - - if (debug_env) - ulapi_debug = atoi(debug_env); - - rtapi_set_msg_level(ulapi_debug); - - // tag message origin field - rtapi_set_logtag("ulapi"); - - // first thing is to attach the global segment, based on - // the RTAPI instance id. - - // Also, it's the prerequisite for common error message - // handling through the message ringbuffer; unless then - // error messages will go to stderr. - - // init the common shared memory driver APU - shm_common_init(); - - globalkey = OS_KEY(GLOBAL_KEY, rtapi_instance); - retval = shm_common_new(globalkey, &size, - rtapi_instance, (void **) &global_data, 0); - - if (retval == -ENOENT) { - // the global_data segment does not exist. Happens if the realtime - // script was not started - rtapi_print_msg(RTAPI_MSG_ERR, - "ULAPI:%d ERROR: realtime not started\n", - rtapi_instance); - return retval; - } - - if (retval < 0) { - // some other error attaching global - rtapi_print_msg(RTAPI_MSG_ERR, - "ULAPI:%d ERROR: shm_common_new() failed key=0x%x %s\n", - rtapi_instance, globalkey, strerror(-retval)); - return retval; - } - - if (size < sizeof(global_data_t)) { - rtapi_print_msg(RTAPI_MSG_ERR, - "ULAPI:%d ERROR: global segment size mismatch," - " expected: %zd, actual:%d\n", - rtapi_instance, sizeof(global_data_t), size); - return -EINVAL; - } - - if (global_data->magic != GLOBAL_READY) { - rtapi_print_msg(RTAPI_MSG_ERR, - "ULAPI:%d ERROR: global segment invalid magic:" - " expected: 0x%x, actual: 0x%x\n", - rtapi_instance, GLOBAL_READY, - global_data->magic); - return -EINVAL; - } - - // global data set up ok - - // make the message ringbuffer accessible - ringbuffer_init(shm_ptr(global_data, global_data->rtapi_messages_ptr), - &rtapi_message_buffer); - - // this heap is inited in rtapi_msgd.cc - // make it accessible in HAL - global_heap = &global_data->heap; - - // declare victory - return 0; -} - -// ULAPI cleanup. Call the exit handler and unload ulapi-.so. -void ulapi_cleanup(void) -{ - // call the ulapi exit handler - // detach the rtapi shm segment as needed - // (some flavors do not employ an rtapi shm segment) - ulapi_exit(rtapi_instance); - // NB: we do not detach the global segment -} - -#endif // ULAPI diff --git a/src/rtapi/ulapi_main.c b/src/rtapi/ulapi_main.c deleted file mode 100644 index 206a90cd9e..0000000000 --- a/src/rtapi/ulapi_main.c +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************** -* Description: ulapi_main.c -* -* purpose: -* - attach to the rtapi data segment within the ULAPI -* symbol namespace -* - pass in the global_data shm pointer -* - set the rtapi_instance variable -* -* Copyright (C) 2012, 2013 Michael Haberler -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU Lesser General Public -* License as published by the Free Software Foundation; either -* version 2.1 of the License, or (at your option) any later version. -* -* This program 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 -* Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public -* License along with this library; if not, write to the Free Software -* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -********************************************************************/ - -#if defined(ULAPI) - -#include "rtapi_flavor.h" // flavor_descriptor -#include "config.h" -#include "rtapi.h" /* RTAPI realtime OS API */ -#include "rtapi_global.h" /* global_data_t */ -#include "rtapi_common.h" -#include "rtapi_compat.h" -#include "shmdrv.h" - -#include -#include -#include -#include -#include //shm_open -#include -#include -#include - -int ulapi_main(int instance, int flavor, global_data_t *global) -{ - rtapi_instance = instance; // from here on global within ulapi.so - - // shm_common_init(); // common shared memory API needs this - - // the HAL library constructor already has the global - // shm segment attached, so no need to do it again here - // since we're not using the rtapi_app_init()/rtapi_app_exit() - // calling conventions might as well pass it it - - // this sets global_data for use within ulapi.so which - // has a disjoint symbol namespace from hal_lib - global_data = global; - - /* rtapi_print_msg(RTAPI_MSG_DBG,"ULAPI:%d %s %s init\n", */ - /* rtapi_instance, */ - /* flavor_descriptor->name, */ - /* GIT_VERSION); */ - - - return 0; -} - -int ulapi_exit(int instance) -{ - /* rtapi_print_msg(RTAPI_MSG_DBG, "ULAPI:%d %s exit\n", */ - /* instance, */ - /* GIT_VERSION); */ - - return 0; -} - - -#endif // ULAPI diff --git a/src/rtapi/xenomai.c b/src/rtapi/xenomai.c deleted file mode 100644 index 25462da21a..0000000000 --- a/src/rtapi/xenomai.c +++ /dev/null @@ -1,700 +0,0 @@ -/******************************************************************** -* Description: xenomai.c -* This file, 'xenomai.c', implements the unique -* functions for the Xenomai userland thread system. -* -* Copyright (C) 2012 - 2013 John Morris -* Michael Haberler -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU Lesser General Public -* License as published by the Free Software Foundation; either -* version 2.1 of the License, or (at your option) any later version. -* -* This program 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 -* Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public -* License along with this library; if not, write to the Free Software -* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -********************************************************************/ - -#include "config.h" -#include "rtapi.h" -#include "rtapi_common.h" - -#include /* munlockall() */ -#define XENOMAI_INCLUDE(header) -#include XENOMAI_INCLUDE(task.h) /* RT_TASK, rt_task_*() */ -#include XENOMAI_INCLUDE(timer.h) /* rt_timer_*() */ -#include /* sigaction/SIGXCPU handling */ -#include -#include // getpid() -#include // cpu sets - -#ifdef RTAPI -#include XENOMAI_INCLUDE(mutex.h) -#include // abort() - -#define XENO_GID_SYSFS "/sys/module/xeno_nucleus/parameters/xenomai_gid" - -// Access the xenomai_stats_t thread status object -#define FTS(ts) ((xenomai_stats_t)ts->flavor) -// Access the xenomai_exception_t thread exception detail object -#define FED(detail) ((xenomai_exception_t)detail.flavor) - -/* RTAPI task functions */ -RT_TASK ostask_array[RTAPI_MAX_TASKS + 1]; - -// this is needed due to the weirdness of the rt_task_self return value - -// it does _not_ match the address of the RT_TASK structure it was -// created with -RT_TASK *ostask_self[RTAPI_MAX_TASKS + 1]; - -#endif // RTAPI - -/*********************************************************************** -* RT thread statistics update * -************************************************************************/ -#ifdef RTAPI -int xenomai_task_update_stats_hook(void) -{ - int task_id = _rtapi_task_self(); - - // paranoia - if ((task_id < 0) || (task_id > RTAPI_MAX_TASKS)) { - rtapi_print_msg(RTAPI_MSG_ERR, - "rtapi_task_update_stats_hook: BUG -" - " task_id out of range: %d\n", - task_id); - return -ENOENT; - } - - RT_TASK_INFO rtinfo; - int retval = rt_task_inquire(ostask_self[task_id], &rtinfo); - if (retval) { - rtapi_print_msg(RTAPI_MSG_ERR, - "rt_task_inquire() failed: %d %s\n", - retval, strerror(-retval)); - return -ESRCH; - } - - rtapi_threadstatus_t *ts = &global_data->thread_status[task_id]; - -#ifdef XENOMAI_V2 - FTS(fts).modeswitches = rtinfo.modeswitches; - FTS(fts).ctxswitches = rtinfo.ctxswitches; - FTS(fts).pagefaults = rtinfo.pagefaults; - FTS(fts).exectime = rtinfo.exectime; - FTS(fts).status = rtinfo.status; -#else - FTS(fts).modeswitches = rtinfo.stat.msw; - FTS(fts).ctxswitches = rtinfo.stat.csw; - FTS(fts).pagefaults = rtinfo.stat.pf; - FTS(fts).exectime = rtinfo.stat.xtime; - FTS(fts).status = rtinfo.stat.status; -#endif - - ts->num_updates++; - - return task_id; -} -#endif - -/*********************************************************************** -* Xenomai Domain switching handling * -* -* if an RT thread does something silly, like a system call -* (e.g. write(2) caused by a printf()), the Xenomai scheduler will -* switch this thread from RT to Linux scheduling, and post the SIGXCPU -* signal. -* -* This is typically a sign of a coding error, and pretty bad - it -* should cause an estop. -* -* Update the Xenomai thread statistics, and funnel through exception -* handler mechanism. -* -* The important value in thread status is 'modeswitches', which should -* remain zero. -* -* Update: this does not work reliably and is not strictly necessary -* since thread stats will report domain switches anyway without a -* signal handler. Better stay with synchronous reporting. -************************************************************************/ -#ifdef RTAPI -extern rtapi_exception_handler_t rt_exception_handler; - -#ifdef USE_SIGXCPU -// trampoline to current handler -static void signal_handler(int sig, siginfo_t *si, void *uctx) -{ - int task_id = xenomai_task_update_stats_hook(); - if (task_id > -1) { - rtapi_threadstatus_t *ts = &global_data->thread_status[task_id]; - - rtapi_exception_detail_t detail = {0}; - detail.task_id = task_id; - - if (rt_exception_handler) - rt_exception_handler(XU_SIGXCPU, &detail, ts); - } else { - rtapi_print_msg(RTAPI_MSG_ERR, "BUG: SIGXCPU - cant identify task\n"); - if (rt_exception_handler) - rt_exception_handler(XU_SIGXCPU_BUG, NULL, NULL); - } -} -#endif -#endif - -/*********************************************************************** -* rtapi_main.c * -************************************************************************/ -#ifdef RTAPI -void xenomai_module_init_hook(void) -{ - -#ifdef USE_SIGXCPU - struct sigaction sig_act; - - sigemptyset( &sig_act.sa_mask ); - sig_act.sa_sigaction = signal_handler; - sig_act.sa_flags = SA_SIGINFO; - - // SIGXCPU delivery must be enabled within the thread by - // rt_task_set_mode(0, T_WARNSW, NULL); - // see _rtapi_task_wrapper() - if (sigaction(SIGXCPU, &sig_act, (struct sigaction *) NULL)) - rtapi_print_msg(RTAPI_MSG_ERR, - "rtapi_module_init_hook(sigaction): %d %s\n", - errno, strerror(errno)); -#endif -} - -void xenomai_module_exit_hook(void) -{ -#ifdef USE_SIGXCPU - struct sigaction sig_act; - - // ignore SIGXCPU - sigemptyset( &sig_act.sa_mask ); - sig_act.sa_handler = SIG_IGN; - if (sigaction(SIGXCPU, &sig_act, (struct sigaction *) NULL)) - rtapi_print_msg(RTAPI_MSG_ERR, - "rtapi_module_exit_hook(sigaction): %d %s\n", - errno, strerror(errno)); -#endif -} -#else -void rtapi_module_init_hook(void) {} -void rtapi_module_exit_hook(void) {} -#endif - - -/*********************************************************************** -* rtapi_task.c * -************************************************************************/ - -#ifdef RTAPI -int xenomai_task_delete_hook(task_data *task, int task_id) { - int retval = 0; - - if ((retval = rt_task_delete( &ostask_array[task_id] )) < 0) { - rtapi_print_msg(RTAPI_MSG_ERR,"ERROR: rt_task_delete(%d) failed: %d %s\n", - task_id, retval, strerror(-retval)); - return retval; - } - // actually wait for the thread to exit - if ((retval = rt_task_join( &ostask_array[task_id] )) < 0) - rtapi_print_msg(RTAPI_MSG_ERR,"ERROR: rt_task_join(%d) failed: %d %s\n", - task_id, retval, strerror(-retval)); - return retval; -} - -void _rtapi_task_wrapper(void * task_id_hack) { - int ret; - int task_id = (int)(long) task_id_hack; // ugly, but I ain't gonna fix it - task_data *task = &task_array[task_id]; - - /* use the argument to point to the task data */ - if (task->period < period) task->period = period; - task->ratio = task->period / period; - rtapi_print_msg(RTAPI_MSG_DBG, - "rtapi_task_wrapper: task %p '%s' period=%d " - "prio=%d ratio=%d\n", - task, task->name, task->ratio * period, - task->prio, task->ratio); - - ostask_self[task_id] = rt_task_self(); - - // starting the thread with the TF_NOWAIT flag implies it is not periodic - // https://github.com/machinekit/machinekit/issues/237#issuecomment-126590880 - // NB this assumes rtapi_wait() is NOT called on this thread any more - // see thread_task() where this is handled for now - - if (!(task->flags & TF_NOWAIT)) { - if ((ret = rt_task_set_periodic(NULL, TM_NOW, task->ratio * period)) < 0) { - rtapi_print_msg(RTAPI_MSG_ERR, - "ERROR: rt_task_set_periodic(%d,%s) failed %d %s\n", - task_id, task->name, ret, strerror(-ret)); - // really nothing one can realistically do here, - // so just enable forensics - abort(); - } - } -#ifdef USE_SIGXCPU - // required to enable delivery of the SIGXCPU signal - rt_task_set_mode(0, T_WARNSW, NULL); -#endif - - xenomai_task_update_stats_hook(); // initial recording - - #ifdef TRIGGER_SIGXCPU_ONCE - // enable this for testing only: - // this should cause a domain switch due to the write() - // system call and hence a single SIGXCPU posted, - // causing an XU_SIGXCPU exception - // verifies rtapi_task_update_status_hook() works properly - // and thread_status counters are updated - printf("--- once in task_wrapper\n"); -#endif - - /* call the task function with the task argument */ - (task->taskcode) (task->arg); - - /* if the task ever returns, we record that fact */ - task->state = ENDED; - rtapi_print_msg(RTAPI_MSG_ERR, - "ERROR: reached end of wrapper for task %d '%s'\n", - task_id, task->name); -} - - -int xenomai_task_start_hook(task_data *task, int task_id) { - int which_cpu = 0; - int uses_fpu = 0; - int retval; - -#ifdef XENOMAI_V2 - // seems to work for me - // not sure T_CPU(n) is possible - see: - // http://www.xenomai.org/pipermail/xenomai-help/2010-09/msg00081.html - - if (task->cpu > -1) // explicitly set by threads, motmod - which_cpu = T_CPU(task->cpu); - - // http://www.xenomai.org/documentation/trunk/html/api/group__task.html#ga03387550693c21d0223f739570ccd992 - // Passing T_FPU|T_CPU(1) in the mode parameter thus creates a - // task with FPU support enabled and which will be affine to CPU #1 - // the task will start out dormant; execution begins with rt_task_start() - - // since this is a usermode RT task, it will be FP anyway - if (task->uses_fp) - uses_fpu = T_FPU; -#endif - - // optionally start as relaxed thread - meaning defacto a standard Linux thread - // without RT features - // see https://xenomai.org/pipermail/xenomai/2015-July/034745.html and - // https://github.com/machinekit/machinekit/issues/237#issuecomment-126590880 - - int prio = (task->flags & TF_NONRT) ? 0 :task->prio; - - if ((retval = rt_task_create (&ostask_array[task_id], task->name, - task->stacksize, prio, - uses_fpu | which_cpu | T_JOINABLE) - ) != 0) { - rtapi_print_msg(RTAPI_MSG_ERR, - "rt_task_create failed: %d %s\n", - retval, strerror(-retval)); - return -ENOMEM; - } - -#ifndef XENOMAI_V2 - // Xenomai-3 CPU affinity - cpu_set_t cpus; - CPU_SET(task->cpu, &cpus); - rt_task_set_affinity (&ostask_array[task_id], &cpus); -#endif - - if ((retval = rt_task_start( &ostask_array[task_id], - _rtapi_task_wrapper, (void *)(long)task_id))) { - rtapi_print_msg(RTAPI_MSG_INFO, - "rt_task_start failed: %d %s\n", - retval, strerror(-retval)); - return -ENOMEM; - } - return 0; -} - -int xenomai_task_stop_hook(task_data *task, int task_id) { - int retval; - - if ((retval = rt_task_delete( &ostask_array[task_id] )) < 0) { - rtapi_print_msg(RTAPI_MSG_ERR,"rt_task_delete() failed: %d %s\n", - retval, strerror(-retval)); - return retval; - } - - return 0; -} - -int xenomai_task_pause_hook(task_data *task, int task_id) { - return rt_task_suspend( &ostask_array[task_id] ); -} - -int xenomai_task_resume_hook(task_data *task, int task_id) { - return rt_task_resume( &ostask_array[task_id] ); -} - -int xenomai_wait_hook(const int flags) { - - if (flags & TF_NOWAIT) - return 0; - - unsigned long overruns = 0; - int result = rt_task_wait_period(&overruns); - - if (result) { - // something went wrong: - - // update stats counters in thread status - int task_id = xenomai_task_update_stats_hook(); - - - // paranoid, but you never know; this index off and - // things will go haywire really fast - if ((task_id < 0) || (task_id > RTAPI_MAX_TASKS)) { - rtapi_print_msg(RTAPI_MSG_ERR, - "rt_task_wait_hook: BUG - task_id out of range: %d\n", - task_id); - // maybe should call a BUG exception here - return 0; - } - - // inquire, fill in - // exception descriptor, and call exception handler - - rtapi_exception_detail_t detail = {0}; - rtapi_threadstatus_t *ts = &global_data->thread_status[task_id]; - xenomai_exception_id_t type; - - // exception descriptor - detail.task_id = task_id; - detail.error_code = result; - - switch (result) { - - case -ETIMEDOUT: - // release point was missed - - FED(detail).overruns = overruns; - - // update thread status in global_data - FTS(fts).wait_errors++; - FTS(fts).total_overruns += overruns; - type = XU_ETIMEDOUT; - break; - - case -EWOULDBLOCK: - // returned if rt_task_set_periodic() has not previously - // been called for the calling task. This is clearly - // a Xenomai API usage error. - ts->api_errors++; - type = XU_EWOULDBLOCK; - break; - - case -EINTR: - // returned if rt_task_unblock() has been called for - // the waiting task before the next periodic release - // point has been reached. In this case, the overrun - // counter is reset too. - // a Xenomai API usage error. - ts->api_errors++; - type = XU_EINTR; - break; - - case -EPERM: - // returned if this service was called from a - // context which cannot sleep (e.g. interrupt, - // non-realtime or scheduler locked). - // a Xenomai API usage error. - ts->api_errors++; - type = XU_EPERM; - break; - - default: - // the above should handle all possible returns - // as per manual, so at least leave a scent - // (or what Jeff calls a 'canary value') - ts->other_errors++; - type = XU_UNDOCUMENTED; - } - if (rt_exception_handler) - rt_exception_handler(type, &detail, ts); - } // else: ok - no overruns; - return 0; -} - -int xenomai_task_self_hook(void) { - RT_TASK *ptr; - int n; - - /* ask OS for pointer to its data for the current task */ - ptr = rt_task_self(); - - if (ptr == NULL) { - /* called from outside a task? */ - return -EINVAL; - } - /* find matching entry in task array */ - n = 1; - while (n <= RTAPI_MAX_TASKS) { - if (ostask_self[n] == ptr) { - /* found a match */ - return n; - } - n++; - } - return -EINVAL; -} - -#endif /* RTAPI */ - - -/*********************************************************************** -* rtapi_time.c * -************************************************************************/ - -#ifdef RTAPI -void xenomai_delay_hook(long int nsec) -{ - long long int release = rt_timer_read() + nsec; - while (rt_timer_read() < release); -} -#endif - -long long int xenomai_get_time_hook(void) { - /* The value returned will represent a count of jiffies if the - native skin is bound to a periodic time base (see - CONFIG_XENO_OPT_NATIVE_PERIOD), or nanoseconds otherwise. */ - return rt_timer_read(); -} - -/* This returns a result in clocks instead of nS, and needs to be used - with care around CPUs that change the clock speed to save power and - other disgusting, non-realtime oriented behavior. But at least it - doesn't take a week every time you call it. -*/ -long long int xenomai_get_clocks_hook(void) { - return rt_timer_read(); -} - -int kernel_is_xenomai() -{ - struct stat sb; - - return ((stat(XNHEAP_DEV_NAME, &sb) == 0) && - (stat(PROC_IPIPE_XENOMAI, &sb) == 0) && - (stat(XENO_GID_SYSFS, &sb) == 0)); -} - -int xenomai_can_run_flavor() -{ - if (! kernel_is_xenomai()) - return 0; - - if (! xenomai_flavor_check()) - return 0; - - return 1; -} - -int xenomai_gid() -{ - FILE *fd; - int gid = -1; - - if ((fd = fopen(XENO_GID_SYSFS,"r")) != NULL) { - if (fscanf(fd, "%d", &gid) != 1) { - fclose(fd); - return -EBADF; // garbage in sysfs device - } else { - fclose(fd); - return gid; - } - } - return -ENOENT; // sysfs device cant be opened -} - -int user_in_xenomai_group() -{ - int numgroups, i; - gid_t *grouplist; - int gid = xenomai_gid(); - - if (gid < 0) - return gid; - - numgroups = getgroups(0,NULL); - grouplist = (gid_t *) calloc( numgroups, sizeof(gid_t)); - if (grouplist == NULL) - return -ENOMEM; - if (getgroups( numgroups, grouplist) > 0) { - for (i = 0; i < numgroups; i++) { - if (grouplist[i] == (unsigned) gid) { - free(grouplist); - return 1; - } - } - } else { - free(grouplist); - return errno; - } - return 0; -} - -int xenomai_flavor_check(void) { - // catch installation error: user not in xenomai group - int retval = user_in_xenomai_group(); - - if (sizeof(xenomai_stats_t) > MAX_FLAVOR_THREADSTATUS_SIZE) { - fprintf(stderr, "BUG: MAX_FLAVOR_THREADSTATUS_SIZE too " - "small for Xenomai\n"); - exit(1); - } - - if (sizeof(xenomai_exception_t) > MAX_FLAVOR_EXCEPTION_SIZE) { - fprintf(stderr, "BUG: MAX_FLAVOR_EXCEPTION_SIZE too " - "small for Xenomai\n"); - exit(1); - } - - switch (retval) { - case 1: // yes - break; - case 0: - fprintf(stderr, "this user is not member of group xenomai\n"); - fprintf(stderr, "please 'sudo adduser xenomai'," - " logout and login again\n"); - exit(EXIT_FAILURE); - - default: - fprintf(stderr, "cannot determine if this user " - "is a member of group xenomai: %s\n", - strerror(-retval)); - exit(EXIT_FAILURE); - } - return retval; -} - - -void xenomai_print_thread_stats(int task_id) -{ - rtapi_threadstatus_t *ts = - &global_data->thread_status[task_id]; - - // generic statistics counters - rtapi_print(" updates=%d\t", ts->num_updates); - if (ts->num_updates) { - rtapi_print("api_err=%d\t", ts->api_errors); - rtapi_print("other_err=%d\n", ts->api_errors); - } - - rtapi_print(" wait_errors=%d\t", FTS(fts).wait_errors); - rtapi_print("overruns=%d\t", FTS(fts).total_overruns); - rtapi_print("modeswitches=%d\t", FTS(fts).modeswitches); - rtapi_print("contextswitches=%d\n", FTS(fts).ctxswitches); - rtapi_print(" pagefaults=%d\t", FTS(fts).pagefaults); - rtapi_print("exectime=%llduS\t", FTS(fts).exectime/1000); - rtapi_print("status=0x%x\n", FTS(fts).status); - rtapi_print("\n"); -} - - -void xenomai_exception_handler_hook(int type, - rtapi_exception_detail_t *detail, - int level) -{ - switch ((xenomai_exception_id_t)type) { - // Timing violations - case XU_ETIMEDOUT: - rtapi_print_msg(level, - "%d: Unexpected realtime delay on RT thread %d ", - type, detail->task_id); - xenomai_print_thread_stats(detail->task_id); - break; - // Xenomai User errors - case XU_SIGXCPU: // Xenomai Domain switch - rtapi_print_msg(level, - "%d: Xenomai Domain switch for thread %d", - type, detail->task_id); - xenomai_print_thread_stats(detail->task_id); - break; - case XU_EWOULDBLOCK: - rtapi_print_msg(level, - "API usage bug: rt_task_set_periodic() not called: " - "thread %d - errno %d", - detail->task_id, - detail->error_code); - break; - - case XU_EINTR: - rtapi_print_msg(level, - "API usage bug: rt_task_unblock() called before" - " release point: thread %d -errno %d", - detail->task_id, - detail->error_code); - break; - - case XU_EPERM: - rtapi_print_msg(level, - "API usage bug: cannot call service from current" - " context: thread %d - errno %d", - detail->task_id, - detail->error_code); - break; - - case XU_UNDOCUMENTED: - rtapi_print_msg(level, - "%d: unspecified Xenomai error: thread %d - errno %d", - type, - detail->task_id, - detail->error_code); - break; - - default: - rtapi_print_msg(level, - "%d: unspecified exception detail=%p ts=%p", - type, detail, ts); - } -} - -flavor_descriptor_t flavor_rt_prempt_descriptor = { - .name = "xenomai", - .flavor_id = RTAPI_XENOMAI_ID, - .flags = FLAVOR_DOES_IO, - .has_rt = 1, - .time_no_clock_monotonic = 1, - .can_run_flavor = xenomai_can_run_flavor, - .exception_handler_hook = xenomai_exception_handler_hook, - .module_init_hook = xenomai_module_init_hook, - .module_exit_hook = xenomai_module_exit_hook, - .task_update_stats_hook = xenomai_update_stats_hook, - .print_thread_stats_hook = xenomai_print_thread_stats, - .task_new_hook = NULL, - .task_delete_hook = xenomai_task_delete_hook, - .task_start_hook = xenomai_task_start_hook, - .task_stop_hook = xenomai_task_stop_hook, - .task_pause_hook = xenomai_task_resume_hook; - .wait_hook = xenomai_wait_hook, - .resume_hook = xenomai_resume_hook, - .delay_hook = xenomai_delay_hook, - .get_time_hook = xenomai_get_time_hook, - .get_clocks_hook = xenomai_get_clocks_hook, - .task_self_hook = xenomai_task_self_hook, - .task_pll_get_reference_hook = NULL, - .task_pll_set_correction_hook = NULL -}; diff --git a/src/rtapi/xenomai.h b/src/rtapi/xenomai.h deleted file mode 100644 index e7f3d41d78..0000000000 --- a/src/rtapi/xenomai.h +++ /dev/null @@ -1,64 +0,0 @@ -/******************************************************************** -* Description: xenomai.h -* This file defines the differences specific to the -* the Xenomai user land thread system -* -* Copyright (C) 2012 - 2013 John Morris -* Michael Haberler -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU Lesser General Public -* License as published by the Free Software Foundation; either -* version 2.1 of the License, or (at your option) any later version. -* -* This program 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 -* Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public -* License along with this library; if not, write to the Free Software -* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -********************************************************************/ - -typedef enum { - XU_EXCEPTION_NONE=0, - - XU_SIGXCPU, // RT task switched to secondary domain - XU_SIGXCPU_BUG, // same, but failed to identify RT thread - XU_ETIMEDOUT, // release point was missed - XU_EWOULDBLOCK, // rt_task_wait_period() without previous rt_task_set_periodic() - XU_EINTR, // rt_task_unblock() called before release point - XU_EPERM, // cannot rt_task_wait_period() from this context - XU_UNDOCUMENTED, // unknown error code - - XU_EXCEPTION_LAST, - -} xenomai_exception_id_t; - -typedef struct { - // passed by ref from rt_task_wait_period() - unsigned long overruns; -} xenomai_exception_t; - - -typedef struct { - // as reported by rt_task_inquire() - // filled in by rtapi_thread_updatestats(task_id) RTAPI call (TBD) - int modeswitches; - int ctxswitches; - int pagefaults; - long long exectime; // Execution time in primary mode in nanoseconds. - unsigned status; // T_BLOCKED etc. - - // errors returned by rt_task_wait_period(): - // set by -ETIMEDOUT: - int wait_errors; // total times the release point was missed - int total_overruns; // running count of the above - // the -EWOULDBLOCK and -EINTR returns are API violations - // and increment api_errors - - // all others increment other_errors -} xenomai_stats_t; - -extern flavor_descriptor_t flavor_xenomai_descriptor; From e7aaf043d83c3c253f3300e8d05ffbf85be69187 Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 18 Feb 2019 17:19:28 +0800 Subject: [PATCH 456/516] Update Debian packaging --- debian/.gitignore | 2 - debian/configure | 140 ++++++------------ debian/control.buster.in | 60 -------- debian/control.in | 41 +++-- debian/control.posix.in | 14 -- debian/control.rt-preempt.in | 18 --- debian/control.sid.in | 60 -------- debian/control.stretch.in | 60 -------- debian/control.xenomai.in | 16 -- ...osix.install.in => machinekit-dev.install} | 4 - debian/machinekit-rt-preempt.install.in | 10 -- debian/machinekit-xenomai.install.in | 10 -- ...chinekit.install.in => machinekit.install} | 3 +- debian/machinekit.postinst | 34 ----- debian/posix-postinst-arm.add | 16 -- debian/posix-postinst-pc.add | 2 - debian/rt-preempt-postinst-arm.add | 16 -- debian/rt-preempt-postinst-pc.add | 3 - debian/{rules.in => rules} | 20 +-- debian/xenomai-postinst-arm.add | 16 -- debian/xenomai-postinst-pc.add | 3 - 21 files changed, 74 insertions(+), 474 deletions(-) delete mode 100644 debian/control.buster.in delete mode 100644 debian/control.posix.in delete mode 100644 debian/control.rt-preempt.in delete mode 100644 debian/control.sid.in delete mode 100644 debian/control.stretch.in delete mode 100644 debian/control.xenomai.in rename debian/{machinekit-posix.install.in => machinekit-dev.install} (62%) delete mode 100644 debian/machinekit-rt-preempt.install.in delete mode 100644 debian/machinekit-xenomai.install.in rename debian/{machinekit.install.in => machinekit.install} (95%) delete mode 100644 debian/posix-postinst-arm.add delete mode 100644 debian/posix-postinst-pc.add delete mode 100644 debian/rt-preempt-postinst-arm.add delete mode 100644 debian/rt-preempt-postinst-pc.add rename debian/{rules.in => rules} (94%) delete mode 100644 debian/xenomai-postinst-arm.add delete mode 100644 debian/xenomai-postinst-pc.add diff --git a/debian/.gitignore b/debian/.gitignore index 57862d68aa..644d91db7d 100644 --- a/debian/.gitignore +++ b/debian/.gitignore @@ -1,9 +1,7 @@ # files generated from debian/configure /control -/rules /files /configure.cmdline -/machinekit*.install # generated by scripts/build_source_package /changelog diff --git a/debian/configure b/debian/configure index 6ab061ba13..c66711727f 100755 --- a/debian/configure +++ b/debian/configure @@ -22,53 +22,10 @@ cd "$(dirname $0)" # re-run echo $0 $* > configure.cmdline -rules_enable_threads() { - # enable thread flavors in debian/rules; e.g. - # THREADS_POSIX = --with-posix - # ...unnecessary for control-only - if test -n "$MK_CROSS_BUILDER"; then - # Reduce file req'ts in mk-cross-builder - echo "debian/rules: skip ${FLAVOR} config in mk-cross-builder" >&2 - return - fi - FLAVOR=$1 - FLAVOR_VAR=THREADS_$(echo $FLAVOR | tr 'a-z-' 'A-Z_') - sed -i rules \ - -e "s/^${FLAVOR_VAR}[^_].*/${FLAVOR_VAR} = --with-${FLAVOR}/" - echo "debian/rules: enabled ${FLAVOR} threads" >&2 -} - -do_posix() { - cat control.posix.in >> control - echo "debian/control: added POSIX threads package" >&2 - rules_enable_threads posix - HAVE_FLAVOR=true -} - -do_rt-preempt() { - cat control.rt-preempt.in >> control - echo "debian/control: added RT_PREEMPT threads package" >&2 - - rules_enable_threads rt-preempt - HAVE_FLAVOR=true -} - -do_xenomai() { - cat control.xenomai.in >> control - echo "debian/control: added xenomai threads package" >&2 - - # Be sure the -dev files only appear once - BUILD_DEPS+=", libxenomai-dev" - echo "debian/control: added Xenomai (userland) threads package" \ - "with Build-Depends:" >&2 - echo " libxenomai-dev" >&2 - rules_enable_threads xenomai - HAVE_FLAVOR=true -} - -## Set version for packages by altering changelog -## Write new version info then prepend existing one, for use in changes file -## Allows command line builds and builds outside of Travis environment to set meaningful version numbers +## Set version for packages by altering changelog Write new version +## info then prepend existing one, for use in changes file Allows +## command line builds and builds outside of Travis environment to set +## meaningful version numbers do_changelog() { DISTRO_UC="$(echo $DISTRO_CODENAME | sed 's/^[[:space:]]*//g' | sed -e 's/\b\(.\)/\u\1/g')" @@ -92,30 +49,30 @@ EOF echo "New package version number added to changelog" } -## Create source orig tarball in format required for creation of debian tarball and .dsc file -## Allows non binary package builds from command line or outside Travis environment +## Create source orig tarball in format required for creation of +## debian tarball and .dsc file Allows non binary package builds from +## command line or outside Travis environment do_source_tarball() { -#version based on major version plus commit number only, without suffixed -1 or commit hash -MK_VERSION="$(git show HEAD:VERSION | cut -d ' ' -f 1).$(git rev-list --count master)" - -OWD=$PWD -cd ../ -git archive HEAD | bzip2 -z > ../machinekit_${MK_VERSION}.orig.tar.bz2 -echo "Source tarball created" -cd $OWD + #version based on major version plus commit number only, without + #suffixed -1 or commit hash + MK_VERSION="$(git show HEAD:VERSION | cut -d ' ' -f 1).$( + git rev-list --count master)" + OWD=$PWD + cd ../ + git archive HEAD | bzip2 -z > ../machinekit_${MK_VERSION}.orig.tar.bz2 + echo "Source tarball created" + cd $OWD } usage() { { test -z "$1" || echo "$1" echo "Usage: $0 [ arg ... ]" - echo " arg: function:" - echo " -p build POSIX threads" - echo " -r build RT_PREEMPT threads" - echo " -x build Xenomai threads" - echo " -c rewrite changelog to set package version from git commit" - echo " -s create source tarball for non binary package builds" + echo " arg: function:" + echo " -x build Xenomai threads" + echo " -c rewrite changelog to set package version from git commit" + echo " -s create source tarball for non binary package builds" } >&2 exit 1 } @@ -132,6 +89,7 @@ test "$1" != --help || usage # set defaults BUILD_DEPS= # List of Build-Depends +DEPS= # List of Depends HAVE_FLAVOR=false ## copy base templates into place @@ -143,43 +101,41 @@ HAVE_FLAVOR=false ## however selecting python-imaging and python-imaging-tk in Stretch actually ## results in python-pil and python-pil.imagegtk being installed, so will probably completely backport soon. -## Keep individual control files, so they can easily be amended as things change - -if [ "$DISTRO_CODENAME" == "stretch" ]; then - cp control.stretch.in control -elif [ "$DISTRO_CODENAME" == "buster" ]; then - cp control.buster.in control -elif [ "$DISTRO_CODENAME" == "sid" ]; then - cp control.sid.in control -else - cp control.in control -fi - -if test -z "$MK_CROSS_BUILDER"; then # Reduce file req'ts in mk-cross-builder - echo "debian/control: copied base template" >&2 - cp rules.in rules; chmod +x rules - echo "debian/rules: copied base template" >&2 - cp machinekit.install.in machinekit.install - echo "debian/machinekit.install.in: copied base template" >&2 -fi +case "$DISTRO_CODENAME" in + buster) + : # Nothing + ;; + stretch|jessie|sid) + BUILD_DEPS+=", python-gtksourceview2" + ;; + *) + BUILD_DEPS+=", python-gtksourceview2" + ;; +esac + +# Configure Xenomai threads +configure_xenomai() { + echo "debian/control: Adding xenomai threads configuration" >&2 + # Be sure the -dev files only appear once + BUILD_DEPS+=", libxenomai-dev" + DEPS+=", xenomai-runtime" + echo "THREADS_XENOMAI = --with-xenomai" > rules.include +} # read command line options -while getopts prxcsd?h ARG; do +while getopts xcsh ARG; do case $ARG in - p) do_posix ;; - r) do_rt-preempt ;; - x) do_xenomai ;; + x) configure_xenomai ;; c) do_changelog ;; # set new changelog with package versions from git s) do_source_tarball ;; # create tarball for non binary builds - ?|h) usage ;; + h) usage ;; *) usage "Unknown arg: '-$ARG'" ;; esac done # Set control Build-Depends: -sed -i control \ - -e "s/@BUILD_DEPS@/${BUILD_DEPS}/" +cp control.in control +sed >control &2 - -# Warn if no flavor configured -$HAVE_FLAVOR || usage "WARNING: No thread flavors configured" diff --git a/debian/control.buster.in b/debian/control.buster.in deleted file mode 100644 index e601665c3e..0000000000 --- a/debian/control.buster.in +++ /dev/null @@ -1,60 +0,0 @@ -Source: machinekit -Section: misc -Priority: extra -Maintainer: John Morris -Build-Depends: debhelper (>= 6), - autoconf (>= 2.63), automake, libboost-python-dev, libgl1-mesa-dev, - libglu1-mesa-dev, libgtk2.0-dev, libmodbus-dev (>= 3.0), libudev-dev, - libncurses-dev, libreadline-dev, libusb-1.0-0-dev, libxmu-dev, - libxmu-headers, python (>= 2.6.6), python-dev (>= 2.6.6), - cython (>= 0.19), dh-python, - pkg-config, psmisc, python-tk, libxaw7-dev, libboost-serialization-dev, - libzmq3-dev (>= 4.0.4), libczmq-dev (>= 4.0.2), libjansson-dev (>= 2.5), - libwebsockets-dev (>= 1.2.2), - python-zmq (>= 14.0.1), procps, - liburiparser-dev, libssl-dev, python-setuptools, - uuid-dev, uuid-runtime, libavahi-client-dev, - libprotobuf-dev (>= 2.4.1), protobuf-compiler (>= 2.4.1), - python-protobuf (>= 2.4.1), libprotoc-dev (>= 2.4.1), - python-simplejson, libtk-img, libboost-thread-dev, - python-pyftpdlib, tcl8.6-dev, tk8.6-dev, libcgroup-dev @BUILD_DEPS@ -Standards-Version: 2.1.0 - -######################################################################### -## not built any more, components of it are in flavour packages -## -#Package: machinekit-dev -#Architecture: any -#Depends: make, g++, tcl8.6, tk8.6, -# ${shlibs:Depends}, ${misc:Depends}, -# machinekit (= ${binary:Version}), -# yapps2-runtime -#Section: libs -#Description: PC based motion controller for real-time Linux -# Machinekit is the next-generation Enhanced Machine Controller which -# provides motion control for CNC machine tools and robotic -# applications (milling, cutting, routing, etc.). -# . -# This package includes files needed to build new realtime components and -# alternate front-ends for machinekit -######################################################################### - -Package: machinekit -Breaks: linuxcnc -Replaces: linuxcnc -Architecture: any -Depends: ${shlibs:Depends}, machinekit-rt-threads, tcl8.6, tk8.6, - bwidget (>= 1.7), libtk-img (>=1.13), - ${python:Depends}, ${misc:Depends}, - python-tk, python-imaging, python-imaging-tk, - python-gnome2, python-glade2, - python-numpy, - python-vte, python-xlib, python-gtkglext1, python-configobj, - python-zmq, python-protobuf (>= 2.4.1), - python-avahi, python-simplejson, python-pyftpdlib, - python-pydot, xdot, python-gst-1.0, - tclreadline, bc, procps, psmisc, uuid-runtime -Description: PC based motion controller for real-time Linux - Machinekit is the next-generation Enhanced Machine Controller which - provides motion control for CNC machine tools and robotic - applications (milling, cutting, routing, etc.). diff --git a/debian/control.in b/debian/control.in index 502aa51316..26858f0968 100644 --- a/debian/control.in +++ b/debian/control.in @@ -17,28 +17,12 @@ Build-Depends: debhelper (>= 6), libprotobuf-dev (>= 2.4.1), protobuf-compiler (>= 2.4.1), python-protobuf (>= 2.4.1), libprotoc-dev (>= 2.4.1), python-simplejson, libtk-img, libboost-thread-dev, - python-pyftpdlib, tcl8.6-dev, tk8.6-dev, libcgroup-dev @BUILD_DEPS@ + python-pyftpdlib, tcl8.6-dev, tk8.6-dev, libcgroup-dev, + python-gst-1.0 | python-gst-0.10, + python-imaging | python-pil, + python-imaging-tk | python-pil.imagegtk @BUILD_DEPS@ Standards-Version: 2.1.0 -######################################################################### -## not built any more, components of it are in flavour packages -## -#Package: machinekit-dev -#Architecture: any -#Depends: make, g++, tcl8.6, tk8.6, -# ${shlibs:Depends}, ${misc:Depends}, -# machinekit (= ${binary:Version}), -# yapps2-runtime -#Section: libs -#Description: PC based motion controller for real-time Linux -# Machinekit is the next-generation Enhanced Machine Controller which -# provides motion control for CNC machine tools and robotic -# applications (milling, cutting, routing, etc.). -# . -# This package includes files needed to build new realtime components and -# alternate front-ends for machinekit -######################################################################### - Package: machinekit Breaks: linuxcnc Replaces: linuxcnc @@ -54,8 +38,23 @@ Depends: ${shlibs:Depends}, machinekit-rt-threads, tcl8.6, tk8.6, python-avahi, python-simplejson, python-pyftpdlib, python-pydot, xdot, tclreadline, bc, procps, psmisc, cgroup-tools, - python-gst0.10, uuid-runtime + uuid-runtime @DEPS@ Description: PC based motion controller for real-time Linux Machinekit is the next-generation Enhanced Machine Controller which provides motion control for CNC machine tools and robotic applications (milling, cutting, routing, etc.). + +Package: machinekit-dev +Architecture: any +Depends: make, g++, tcl8.6, tk8.6, + ${shlibs:Depends}, ${misc:Depends}, + machinekit (= ${binary:Version}), + yapps2-runtime +Section: libs +Description: PC based motion controller for real-time Linux +Machinekit is the next-generation Enhanced Machine Controller which +provides motion control for CNC machine tools and robotic +applications (milling, cutting, routing, etc.). +. +This package includes files needed to build new realtime components and +alternate front-ends for machinekit diff --git a/debian/control.posix.in b/debian/control.posix.in deleted file mode 100644 index 2966087bc1..0000000000 --- a/debian/control.posix.in +++ /dev/null @@ -1,14 +0,0 @@ - -Package: machinekit-posix -Architecture: any -Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime -Provides: machinekit-rt-threads -Breaks: machinekit-dev -Enhances: machinekit -Description: PC based motion controller for real-time Linux - Machinekit is the next-generation Enhanced Machine Controller which - provides motion control for CNC machine tools and robotic - applications (milling, cutting, routing, etc.). - . - This package provides components and drivers that run on a non-realtime - (Posix) system. diff --git a/debian/control.rt-preempt.in b/debian/control.rt-preempt.in deleted file mode 100644 index e77df3376f..0000000000 --- a/debian/control.rt-preempt.in +++ /dev/null @@ -1,18 +0,0 @@ - -Package: machinekit-rt-preempt -Architecture: any -Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime, -# These Debian-style RT_PREEMPT package names are restricted by -# architecture; ARM arch SOCs are all incompatible, so this can't be -# easily done for ARM. - linux-image-rt-686-pae [i386], linux-image-rt-amd64 [amd64] -Provides: machinekit-rt-threads -Suggests: hostmot2-firmware-all [!armhf] -Breaks: machinekit-dev -Enhances: machinekit -Description: PC based motion controller for real-time Linux - Machinekit is the next-generation Enhanced Machine Controller which - provides motion control for CNC machine tools and robotic - applications (milling, cutting, routing, etc.). - . - This package provides components and drivers that run on an RT-Preempt system. diff --git a/debian/control.sid.in b/debian/control.sid.in deleted file mode 100644 index a0669765a5..0000000000 --- a/debian/control.sid.in +++ /dev/null @@ -1,60 +0,0 @@ -Source: machinekit -Section: misc -Priority: extra -Maintainer: John Morris -Build-Depends: debhelper (>= 6), - autoconf (>= 2.63), automake, libboost-python-dev, libgl1-mesa-dev, - libglu1-mesa-dev, libgtk2.0-dev, libmodbus-dev (>= 3.0), libudev-dev, - libncurses-dev, libreadline-dev, libusb-1.0-0-dev, libxmu-dev, - libxmu-headers, python (>= 2.6.6), python-dev (>= 2.6.6), - cython (>= 0.19), dh-python, - pkg-config, psmisc, python-tk, libxaw7-dev, libboost-serialization-dev, - libzmq3-dev (>= 4.0.4), libczmq-dev (>= 4.0.2), libjansson-dev (>= 2.5), - libwebsockets-dev (>= 1.2.2), - python-zmq (>= 14.0.1), procps, - liburiparser-dev, libssl-dev, python-setuptools, - uuid-dev, uuid-runtime, libavahi-client-dev, - libprotobuf-dev (>= 2.4.1), protobuf-compiler (>= 2.4.1), - python-protobuf (>= 2.4.1), libprotoc-dev (>= 2.4.1), - python-simplejson, libtk-img, libboost-thread-dev, - python-pyftpdlib, tcl8.6-dev, tk8.6-dev @BUILD_DEPS@ -Standards-Version: 2.1.0 - -######################################################################### -## not built any more, components of it are in flavour packages -## -#Package: machinekit-dev -#Architecture: any -#Depends: make, g++, tcl8.6, tk8.6, -# ${shlibs:Depends}, ${misc:Depends}, -# machinekit (= ${binary:Version}), -# yapps2-runtime -#Section: libs -#Description: PC based motion controller for real-time Linux -# Machinekit is the next-generation Enhanced Machine Controller which -# provides motion control for CNC machine tools and robotic -# applications (milling, cutting, routing, etc.). -# . -# This package includes files needed to build new realtime components and -# alternate front-ends for machinekit -######################################################################### - -Package: machinekit -Breaks: linuxcnc -Replaces: linuxcnc -Architecture: any -Depends: ${shlibs:Depends}, machinekit-rt-threads, tcl8.6, tk8.6, - bwidget (>= 1.7), libtk-img (>=1.13), - ${python:Depends}, ${misc:Depends}, - python-tk, python-pil, python-pil.imagetk, - python-gnome2, python-glade2, - python-numpy, - python-vte, python-xlib, python-gtkglext1, python-configobj, - python-zmq, python-protobuf (>= 2.4.1), - python-avahi, python-simplejson, python-pyftpdlib, - python-pydot, xdot, python-gst-1.0, python-gtksourceview2, - tclreadline, bc, procps, psmisc, uuid-runtime -Description: PC based motion controller for real-time Linux - Machinekit is the next-generation Enhanced Machine Controller which - provides motion control for CNC machine tools and robotic - applications (milling, cutting, routing, etc.). diff --git a/debian/control.stretch.in b/debian/control.stretch.in deleted file mode 100644 index 021a954737..0000000000 --- a/debian/control.stretch.in +++ /dev/null @@ -1,60 +0,0 @@ -Source: machinekit -Section: misc -Priority: extra -Maintainer: John Morris -Build-Depends: debhelper (>= 6), - autoconf (>= 2.63), automake, libboost-python-dev, libgl1-mesa-dev, - libglu1-mesa-dev, libgtk2.0-dev, libmodbus-dev (>= 3.0), libudev-dev, - libncurses-dev, libreadline-dev, libusb-1.0-0-dev, libxmu-dev, - libxmu-headers, python (>= 2.6.6), python-dev (>= 2.6.6), - cython (>= 0.19), dh-python, - pkg-config, psmisc, python-tk, libxaw7-dev, libboost-serialization-dev, - libzmq3-dev (>= 4.0.4), libczmq-dev (>= 4.0.2), libjansson-dev (>= 2.5), - libwebsockets-dev (>= 1.2.2), - python-zmq (>= 14.0.1), procps, - liburiparser-dev, libssl-dev, python-setuptools, - uuid-dev, uuid-runtime, libavahi-client-dev, - libprotobuf-dev (>= 2.4.1), protobuf-compiler (>= 2.4.1), - python-protobuf (>= 2.4.1), libprotoc-dev (>= 2.4.1), - python-simplejson, libtk-img, libboost-thread-dev, - python-pyftpdlib, tcl8.6-dev, tk8.6-dev, libcgroup-dev @BUILD_DEPS@ -Standards-Version: 2.1.0 - -######################################################################### -## not built any more, components of it are in flavour packages -## -#Package: machinekit-dev -#Architecture: any -#Depends: make, g++, tcl8.6, tk8.6, -# ${shlibs:Depends}, ${misc:Depends}, -# machinekit (= ${binary:Version}), -# yapps2-runtime -#Section: libs -#Description: PC based motion controller for real-time Linux -# Machinekit is the next-generation Enhanced Machine Controller which -# provides motion control for CNC machine tools and robotic -# applications (milling, cutting, routing, etc.). -# . -# This package includes files needed to build new realtime components and -# alternate front-ends for machinekit -######################################################################### - -Package: machinekit -Breaks: linuxcnc -Replaces: linuxcnc -Architecture: any -Depends: ${shlibs:Depends}, machinekit-rt-threads, tcl8.6, tk8.6, - bwidget (>= 1.7), libtk-img (>=1.13), - ${python:Depends}, ${misc:Depends}, - python-tk, python-imaging, python-imaging-tk, - python-gnome2, python-glade2, - python-numpy, python-gtksourceview2, - python-vte, python-xlib, python-gtkglext1, python-configobj, - python-zmq, python-protobuf (>= 2.4.1), - python-avahi, python-simplejson, python-pyftpdlib, - python-pydot, xdot, python-gst-1.0, python-gtksourceview2, - tclreadline, bc, procps, psmisc, uuid-runtime -Description: PC based motion controller for real-time Linux - Machinekit is the next-generation Enhanced Machine Controller which - provides motion control for CNC machine tools and robotic - applications (milling, cutting, routing, etc.). diff --git a/debian/control.xenomai.in b/debian/control.xenomai.in deleted file mode 100644 index 908d4cfc08..0000000000 --- a/debian/control.xenomai.in +++ /dev/null @@ -1,16 +0,0 @@ - -Package: machinekit-xenomai -Architecture: any -Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime, - xenomai-runtime -Provides: machinekit-rt-threads -Recommends: hostmot2-firmware-all [!armhf] -Breaks: machinekit-dev -Enhances: machinekit -Description: PC based motion controller for real-time Linux - Machinekit is the next-generation Enhanced Machine Controller which - provides motion control for CNC machine tools and robotic - applications (milling, cutting, routing, etc.). - . - This package provides components and drivers that run on a Xenomai - realtime system, with userspace threads. diff --git a/debian/machinekit-posix.install.in b/debian/machinekit-dev.install similarity index 62% rename from debian/machinekit-posix.install.in rename to debian/machinekit-dev.install index c6a86cc298..952a23cb1f 100644 --- a/debian/machinekit-posix.install.in +++ b/debian/machinekit-dev.install @@ -1,6 +1,3 @@ -#usr/lib/linuxcnc/posix -usr/lib/linuxcnc/ulapi-posix.so -usr/libexec/linuxcnc/rtapi_app_posix usr/include/linuxcnc/*.hh usr/include/linuxcnc/*.h usr/lib/*.a @@ -8,4 +5,3 @@ usr/lib/*.so usr/bin/comp usr/share/linuxcnc/Makefile.modinc usr/share/linuxcnc/Makefile.inc - diff --git a/debian/machinekit-rt-preempt.install.in b/debian/machinekit-rt-preempt.install.in deleted file mode 100644 index d8e0a70bfc..0000000000 --- a/debian/machinekit-rt-preempt.install.in +++ /dev/null @@ -1,10 +0,0 @@ -#usr/lib/linuxcnc/rt-preempt -usr/lib/linuxcnc/ulapi-rt-preempt.so -usr/libexec/linuxcnc/rtapi_app_rt-preempt -usr/include/linuxcnc/*.hh -usr/include/linuxcnc/*.h -usr/lib/*.a -usr/lib/*.so -usr/bin/comp -usr/share/linuxcnc/Makefile.modinc -usr/share/linuxcnc/Makefile.inc diff --git a/debian/machinekit-xenomai.install.in b/debian/machinekit-xenomai.install.in deleted file mode 100644 index 0864d95324..0000000000 --- a/debian/machinekit-xenomai.install.in +++ /dev/null @@ -1,10 +0,0 @@ -#usr/lib/linuxcnc/xenomai -usr/lib/linuxcnc/ulapi-xenomai.so -usr/libexec/linuxcnc/rtapi_app_xenomai -usr/include/linuxcnc/*.hh -usr/include/linuxcnc/*.h -usr/lib/*.a -usr/lib/*.so -usr/bin/comp -usr/share/linuxcnc/Makefile.modinc -usr/share/linuxcnc/Makefile.inc diff --git a/debian/machinekit.install.in b/debian/machinekit.install similarity index 95% rename from debian/machinekit.install.in rename to debian/machinekit.install index dfd7393abf..d9059115d3 100644 --- a/debian/machinekit.install.in +++ b/debian/machinekit.install @@ -20,8 +20,8 @@ usr/lib/python*/*/fdm/config/*.py usr/libexec/linuxcnc/pci_read usr/libexec/linuxcnc/pci_write usr/libexec/linuxcnc/inivar -usr/libexec/linuxcnc/flavor usr/libexec/linuxcnc/rtapi_msgd +usr/libexec/linuxcnc/rtapi_app usr/share/axis/images/* usr/share/axis/tcl/* usr/share/glade3 @@ -30,6 +30,7 @@ usr/share/doc/linuxcnc/xlinuxcnc.asciidoc usr/share/doc/linuxcnc/tklinuxcnc.asciidoc usr/share/doc/linuxcnc/README.axis usr/share/linuxcnc/* +usr/share/machinekit usr/share/linuxcnc/stepconf/*.glade usr/share/locale/*/LC_MESSAGES/*.mo usr/share/gtksourceview-2.0/ diff --git a/debian/machinekit.postinst b/debian/machinekit.postinst index 449fafe1dd..b301f323e7 100755 --- a/debian/machinekit.postinst +++ b/debian/machinekit.postinst @@ -21,40 +21,6 @@ chmod ugo+r /var/log/linuxcnc.log # restart the rsyslogd to start logging to /var/log/linuxcnc.conf invoke-rc.d rsyslog restart -# The rebranding from linuxcnc to machinekit is taken care of in src/configure for RIPs -# /usr builds to package need it in postinst script -# This bit should not be needed, just belt and braces :) -# Checking for / creating ~/machinekit dir now in linuxcnc script - -if [ -f "/usr/bin/linuxcnc" ]; then - if [ ! -f "/usr/bin/machinekit" ]; then - if [ ! -L "/usr/bin/machinekit" ]; then - ln -s /usr/bin/linuxcnc /usr/bin/machinekit - echo "Creating machinekit symlink" - fi - fi -else - if [ -f "/usr/local/bin/linuxcnc" ]; then - if [ ! -f "/usr/local/bin/machinekit" ]; then - if [ ! -L "/usr/local/bin/machinekit" ]; then - ln -s /usr/local/bin/linuxcnc /usr/local/bin/machinekit - echo "Creating machinekit symlink" - fi - fi - fi -fi - -# Until rebranded completely solve corner cases like this - -if [ -f "/usr/share/linuxcnc" ]; then - if [ ! -f "/usr/share/machinekit" ]; then - if [ ! -L "/usr/share/machinekit" ]; then - ln -s /usr/share/linuxcnc /usr/share/machinekit - echo "Creating machinekit symlink" - fi - fi -fi - ############################################################################### INIFILE=/etc/linuxcnc/machinekit.ini diff --git a/debian/posix-postinst-arm.add b/debian/posix-postinst-arm.add deleted file mode 100644 index 2e11aaa3e8..0000000000 --- a/debian/posix-postinst-arm.add +++ /dev/null @@ -1,16 +0,0 @@ -# make symlinks to flavours -ln -sf /usr/lib/linuxcnc/modules /usr/lib/linuxcnc/posix - -# ensure the links do not pre-exist, from previous installs. -# or user work-arounds, which will produce error messages -# all now point to /usr/lib/linuxcnc/modules anyway -rm -f /usr/lib/linuxcnc/posix/pru_generic.bin -rm -f /usr/lib/linuxcnc/posix/pru_generic.dbg -rm -f /usr/lib/linuxcnc/posix/pru_decamux.bin -rm -f /usr/lib/linuxcnc/posix/pru_decamux.dbg - -# make symlinks to BBB pru_*.* -ln -sf /usr/lib/linuxcnc/prubin/pru_generic.bin /usr/lib/linuxcnc/posix/pru_generic.bin -ln -sf /usr/lib/linuxcnc/prubin/pru_generic.dbg /usr/lib/linuxcnc/posix/pru_generic.dbg -ln -sf /usr/lib/linuxcnc/prubin/pru_decamux.bin /usr/lib/linuxcnc/posix/pru_decamux.bin -ln -sf /usr/lib/linuxcnc/prubin/pru_decamux.dbg /usr/lib/linuxcnc/posix/pru_decamux.dbg diff --git a/debian/posix-postinst-pc.add b/debian/posix-postinst-pc.add deleted file mode 100644 index 8817c067c6..0000000000 --- a/debian/posix-postinst-pc.add +++ /dev/null @@ -1,2 +0,0 @@ - -ln -sf /usr/lib/linuxcnc/modules /usr/lib/linuxcnc/posix diff --git a/debian/rt-preempt-postinst-arm.add b/debian/rt-preempt-postinst-arm.add deleted file mode 100644 index 04d3c9b693..0000000000 --- a/debian/rt-preempt-postinst-arm.add +++ /dev/null @@ -1,16 +0,0 @@ -# make symlinks to flavours -ln -sf /usr/lib/linuxcnc/modules /usr/lib/linuxcnc/rt-preempt - -# ensure the links do not pre-exist, from previous installs. -# or user work-arounds, which will produce error messages -# all now point to /usr/lib/linuxcnc/modules anyway -rm -f /usr/lib/linuxcnc/rt-preempt/pru_generic.bin -rm -f /usr/lib/linuxcnc/rt-preempt/pru_generic.dbg -rm -f /usr/lib/linuxcnc/rt-preempt/pru_decamux.bin -rm -f /usr/lib/linuxcnc/rt-preempt/pru_decamux.dbg - -# make symlinks to BBB pru_*.* -ln -sf /usr/lib/linuxcnc/prubin/pru_generic.bin /usr/lib/linuxcnc/rt-preempt/pru_generic.bin -ln -sf /usr/lib/linuxcnc/prubin/pru_generic.dbg /usr/lib/linuxcnc/rt-preempt/pru_generic.dbg -ln -sf /usr/lib/linuxcnc/prubin/pru_decamux.bin /usr/lib/linuxcnc/rt-preempt/pru_decamux.bin -ln -sf /usr/lib/linuxcnc/prubin/pru_decamux.dbg /usr/lib/linuxcnc/rt-preempt/pru_decamux.dbg diff --git a/debian/rt-preempt-postinst-pc.add b/debian/rt-preempt-postinst-pc.add deleted file mode 100644 index a16ca11f09..0000000000 --- a/debian/rt-preempt-postinst-pc.add +++ /dev/null @@ -1,3 +0,0 @@ - -ln -sf /usr/lib/linuxcnc/modules /usr/lib/linuxcnc/rt-preempt - diff --git a/debian/rules.in b/debian/rules similarity index 94% rename from debian/rules.in rename to debian/rules index 945de73547..5ac2b6da4b 100755 --- a/debian/rules.in +++ b/debian/rules @@ -38,18 +38,12 @@ SHLIBDEPS_X += libcanterp.so.0 librs274.so.0 # several libs that aren't used (but several that are needed) SHLIBDEPS_X += halmeter classicladder halscope -# Enable/disable thread flavors; all flavors disabled by default -THREADS_POSIX = --without-posix -THREADS_RT_PREEMPT = --without-rt-preempt -THREADS_XENOMAI = --without-xenomai - -# Kernel threads need a list of configured header source directories -# for each architecture -# -# Multiples should be space-separated -# +# Cross-compile variables DEB_HOST_ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH) +# Pick up dynamically-configured variables, like Xenomai +-include rules.include + # Parallel make ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) @@ -87,9 +81,6 @@ build-stamp: debian/control ./configure --prefix=/usr \ --build=$(DEB_BUILD_MULTIARCH) \ --host=$(DEB_HOST_MULTIARCH) \ - $(THREADS_POSIX) \ - $(THREADS_RT_PREEMPT) \ - $(THREADS_XENOMAI) \ --sysconfdir=/etc \ --mandir=/usr/share/man \ --enable-emcweb @@ -109,9 +100,6 @@ ifneq ($(wildcard src/configure src/Makefile.inc),) ./configure --prefix=/usr \ --build=$(DEB_BUILD_MULTIARCH) \ --host=$(DEB_HOST_MULTIARCH) \ - $(THREADS_POSIX) \ - $(THREADS_RT_PREEMPT) \ - $(THREADS_XENOMAI) \ --sysconfdir=/etc \ --mandir=/usr/share/man \ --enable-emcweb diff --git a/debian/xenomai-postinst-arm.add b/debian/xenomai-postinst-arm.add deleted file mode 100644 index d7fb072234..0000000000 --- a/debian/xenomai-postinst-arm.add +++ /dev/null @@ -1,16 +0,0 @@ -# make symlinks to flavours -ln -sf /usr/lib/linuxcnc/modules /usr/lib/linuxcnc/xenomai - -# ensure the links do not pre-exist, from previous installs. -# or user work-arounds, which will produce error messages -# all now point to /usr/lib/linuxcnc/modules anyway -rm -f /usr/lib/linuxcnc/xenomai/pru_generic.bin -rm -f /usr/lib/linuxcnc/xenomai/pru_generic.dbg -rm -f /usr/lib/linuxcnc/xenomai/pru_decamux.bin -rm -f /usr/lib/linuxcnc/xenomai/pru_decamux.dbg - -# make symlinks to BBB pru_*.* -ln -sf /usr/lib/linuxcnc/prubin/pru_generic.bin /usr/lib/linuxcnc/xenomai/pru_generic.bin -ln -sf /usr/lib/linuxcnc/prubin/pru_generic.dbg /usr/lib/linuxcnc/xenomai/pru_generic.dbg -ln -sf /usr/lib/linuxcnc/prubin/pru_decamux.bin /usr/lib/linuxcnc/xenomai/pru_decamux.bin -ln -sf /usr/lib/linuxcnc/prubin/pru_decamux.dbg /usr/lib/linuxcnc/xenomai/pru_decamux.dbg diff --git a/debian/xenomai-postinst-pc.add b/debian/xenomai-postinst-pc.add deleted file mode 100644 index 16fcd2ab34..0000000000 --- a/debian/xenomai-postinst-pc.add +++ /dev/null @@ -1,3 +0,0 @@ - -ln -sf /usr/lib/linuxcnc/modules /usr/lib/linuxcnc/xenomai - From 347348441a5e43e201c9c72294d35eab5ee4950d Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 18 Feb 2019 17:57:57 +0800 Subject: [PATCH 457/516] Fix realtime script --- scripts/realtime.in | 32 +++++++------------------------- 1 file changed, 7 insertions(+), 25 deletions(-) diff --git a/scripts/realtime.in b/scripts/realtime.in index a71fb086c1..a91e16139a 100644 --- a/scripts/realtime.in +++ b/scripts/realtime.in @@ -13,6 +13,8 @@ INIVAR=@EMC2_LIBEXEC_DIR@/inivar PIDOF=@PIDOF@ PS=@PS@ AWK=@AWK@ +rtapi_msgd=@EMC2_LIBEXEC_DIR@/rtapi_msgd +rtapi_app=@EMC2_LIBEXEC_DIR@/rtapi_app # if not overridden by user, point MACHINEKIT_INI to installed default: if [ -z "$MACHINEKIT_INI" ]; then @@ -32,32 +34,12 @@ fi # Helper function to get variables from config getvar() { - # getvar [ --flavor ] - # set variable from rtapi_ini; - # with --flavor, if $FLAVOR is set, look in the [flavor_$FLAVOR] section + # getvar + # set variable from rtapi_ini var=$1 - flav_var=$2 - - if test "$flav_var" = "--flavor" -a ! -z "$FLAVOR"; then - SEC="-sec flavor_$FLAVOR" - else - SEC="" - fi - - eval "$var='$($INIVAR -var $var -ini $RTAPI_INI $SEC 2>/dev/null)'" + eval "$var='$($INIVAR -var $var -ini $RTAPI_INI 2>/dev/null)'" } -# Fill in other variable values -# -# Executables -getvar flavor -getvar rtapi_msgd -#getvar halcmd - -# Flavor configuration -FLAVOR=$($flavor) -getvar rtapi_app --flavor - # catch this common error early on: if ! test -u ${rtapi_app} then @@ -172,7 +154,7 @@ Load(){ "${cmd[@]}" || ( e=$?; echo "rtapi_msgd startup failed - aborting" >&2; exit $e) - # rtapi_app_ + # rtapi_app local cmd=(${rtapi_app} --instance=$MK_INSTANCE $RTAPI_APP_OPTS) if [ $DEBUG -gt 0 ] ; then echo "rtapi_app command: ${cmd[@]}" >&2 @@ -238,7 +220,7 @@ Unload(){ CheckUnloaded(){ # if msgd:$MK_INSTANCE is still around, this might still be a running instance - # after all - this applies to all flavors - msgd is always there, so cop out + # after all - msgd is always there, so cop out if CheckRunningProcs msgd:$MK_INSTANCE; then From ab59594f4ea1a59abb4dddf9ef15c7e7aa9d515d Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 18 Feb 2019 18:02:33 +0800 Subject: [PATCH 458/516] Update debian packaging --- debian/machinekit-dev.install | 1 + debian/machinekit.install | 1 + debian/rules | 32 +------ src/configure.ac | 94 +-------------------- src/hal/drivers/hal_pru_generic/Submakefile | 18 ++-- 5 files changed, 16 insertions(+), 130 deletions(-) diff --git a/debian/machinekit-dev.install b/debian/machinekit-dev.install index 952a23cb1f..65cf441142 100644 --- a/debian/machinekit-dev.install +++ b/debian/machinekit-dev.install @@ -1,5 +1,6 @@ usr/include/linuxcnc/*.hh usr/include/linuxcnc/*.h +usr/include/linuxcnc/userpci/*.h usr/lib/*.a usr/lib/*.so usr/bin/comp diff --git a/debian/machinekit.install b/debian/machinekit.install index d9059115d3..604263320e 100644 --- a/debian/machinekit.install +++ b/debian/machinekit.install @@ -5,6 +5,7 @@ etc/udev/rules.d/50-shmdrv.rules etc/X11/app-defaults/* usr/lib/*.so.* usr/lib/linuxcnc/* +usr/lib/prubin/* usr/lib/tcltk/linuxcnc usr/bin/* usr/lib/python*/*/*.py diff --git a/debian/rules b/debian/rules index 5ac2b6da4b..d769f745a5 100755 --- a/debian/rules +++ b/debian/rules @@ -150,10 +150,6 @@ install: build (cd debian/extras && cp -a * ../tmp) (cd src; export DESTDIR=`pwd`/../debian/tmp; $(MAKE) V=$(DH_VERBOSE) $@) mkdir -p debian/tmp/usr/lib/linuxcnc/modules debian/tmp/usr/include/linuxcnc - ## temp symlinks until all paths resolved -# ln -sf debian/tmp/usr/lib/linuxcnc/modules debian/tmp/usr/lib/linuxcnc/posix -# ln -sf debian/tmp/usr/lib/linuxcnc/modules debian/tmp/usr/lib/linuxcnc/rt-preempt -# ln -sf debian/tmp/usr/lib/linuxcnc/modules debian/tmp/usr/lib/linuxcnc/xenomai cp lib/*.a debian/tmp/usr/lib ## if they weren't there we don't care if rm fails rm -f debian/tmp/usr/share/applications/linuxcnc-usermanual*.desktop @@ -176,33 +172,7 @@ endif cp src/rtapi/shmdrv/limits.d-machinekit.conf \ debian/tmp/etc/security/limits.d/machinekit.conf - cp debian/machinekit-posix.install.in debian/machinekit-posix.install - cp debian/machinekit-rt-preempt.install.in debian/machinekit-rt-preempt.install - cp debian/machinekit-xenomai.install.in debian/machinekit-xenomai.install - - if (grep ^USERMODE_PCI=yes src/Makefile.inc -q); then \ - echo "usr/include/linuxcnc/userpci/*.h" >> debian/machinekit-posix.install; \ - echo "usr/include/linuxcnc/userpci/*.h" >> debian/machinekit-rt-preempt.install; \ - echo "usr/include/linuxcnc/userpci/*.h" >> debian/machinekit-xenomai.install; \ - fi - - ## only want prubin for armhf builds ## - if [ -f debian/platform_pc ] ; then \ - cat debian/posix-postinst-pc.add >> debian/machinekit-posix.postinst; \ - cat debian/rt-preempt-postinst-pc.add >> debian/machinekit-rt-preempt.postinst; \ - cat debian/xenomai-postinst-pc.add >> debian/machinekit-xenomai.postinst; \ - rm -f debian/platform_pc; \ - else \ - mkdir -p debian/tmp/usr/lib/linuxcnc/prubin; \ - cp rtlib/prubin/* debian/tmp/usr/lib/linuxcnc/prubin; \ - cat debian/posix-postinst-arm.add >> debian/machinekit-posix.postinst; \ - cat debian/rt-preempt-postinst-arm.add >> debian/machinekit-rt-preempt.postinst; \ - cat debian/xenomai-postinst-arm.add >> debian/machinekit-xenomai.postinst; \ - echo "usr/lib/linuxcnc/prubin/*" >> debian/machinekit-posix.install; \ - echo "usr/lib/linuxcnc/prubin/*" >> debian/machinekit-rt-preempt.install; \ - echo "usr/lib/linuxcnc/prubin/*" >> debian/machinekit-xenomai.install; \ - fi - + mkdir -p debian/tmp/usr/lib/linuxcnc/prubin dh_install --sourcedir=debian/tmp --fail-missing -Xusr/bin/pasm diff --git a/src/configure.ac b/src/configure.ac index 95aa2d42b6..d0a3888613 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -201,10 +201,6 @@ AC_CONFIG_MACRO_DIR(/usr/share/aclocal) # ./configure will attempt to configure driver building unless # explicitly disabled with '--disable-drivers'. # -# To reduce the surprise factor of a simulator config suddenly talking -# to ports, drivers will be disabled by default for posix threads and -# enabled for others in rtapi.ini. -# # reflected in config.h as follows: # /* build hardware drivers */ # #define BUILD_DRIVERS /**/ @@ -546,11 +542,6 @@ else fi fi -if test $TARGET_PLATFORM_PC = true; then - echo "*** TARGET_PLATFORM_PC=true ***" - touch ../debian/platform_pc -fi - # Print messages about what platforms are to be enabled or disabled AC_MSG_CHECKING(platform-pc) @@ -820,26 +811,7 @@ AC_PYTHON_MODULE(pyftpdlib.servers, failed to import pyftpdlib.servers # - Sanity checks and configuration generation # ############################################################################## -# By default, build all flavors. If a --with- arg is found, -# do not build all by default. -all_flavors_default=yes - -# Set to 'yes' when either xenomai or rt-preempt will be built -with_userland_rt_threads=no - AC_PRESERVE_HELP_ORDER() -AC_ARG_WITH(posix, - [AS_HELP_STRING([--with-posix], - [build POSIX (simulator) non-realtime threads modules - (enabled by default)])], - [test $withval = yes && all_flavors_default=no], - [with_posix=check]) - -AC_ARG_WITH(rt-preempt, - [AS_HELP_STRING([--with-rt-preempt], - [build RT_PREEMPT threads modules])], - [test $withval = yes && all_flavors_default=no], - [with_rt_preempt=check]) AC_ARG_WITH(xenomai, [AS_HELP_STRING([--with-xenomai], @@ -848,69 +820,7 @@ AC_ARG_WITH(xenomai, test $withval = yes && all_flavors_default=no], [with_xenomai=check]) -# If a --with- flag was found, disable all flavors not -# explicitly enabled -if test $all_flavors_default = no; then - for f in posix rt_preempt xenomai; do - if eval "test \$with_$f = check"; then - eval "with_$f=no" - fi - done -fi - - -############################################################################## -# POSIX and RT_PREEMPT flavor checks -if test "$with_rt_preempt" != no -o "$with_posix" != no; then - LIBS_hold=$LIBS - LIBS="$LIBS -lrt" - - AC_MSG_CHECKING(-lrt for RT_PREEMPT and POSIX) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[ - #include - #include - #include - ]], - [[ - struct timespec t; - clock_gettime(CLOCK_MONOTONIC ,&t); - clock_nanosleep(CLOCK_MONOTONIC, TIMER_ABSTIME, &t, NULL); - ]])], - [ - have_librt=yes - AC_MSG_RESULT(ok)], - [ - have_librt=no - AC_MSG_RESULT(failed) - ]) - LIBS=$LIBS_hold -fi - -AC_MSG_CHECKING(whether to build POSIX threads) -test "$with_posix" = check && with_posix=yes -test "$have_librt" = no && with_posix=no -AC_MSG_RESULT($with_posix) -if test "$with_posix" = yes; then - THREADS_LDFLAGS="$THREADS_RTFLAGS -lpthread -lrt $LIBCGROUP_LIBS" - THREADS_RTFLAGS="$THREADS_RTFLAGS -pthread $LIBCGROUP_CFLAGS" -fi - -AC_MSG_CHECKING(whether to build RT_PREEMPT threads) -test "$with_rt_preempt" = check && with_rt_preempt=yes -test "$have_librt" = no && with_rt_preempt=no -AC_MSG_RESULT($with_rt_preempt) -if test "$with_rt_preempt" = yes; then - THREADS_LDFLAGS="$THREADS_LDFLAGS -lpthread -lrt $LIBCGROUP_LIBS" - THREADS_RTFLAGS="$THREADS_RTFLAGS -pthread" - THREADS_RTFLAGS="$THREADS_RTFLAGS $LIBCGROUP_CFLAGS" - with_userland_rt_threads=yes -fi - - -############################################################################## -# Xenomai flavor checks, both userland and kthreads - -if test "$with_xenomai" != no -o "$with_xenomai_kernel" != no; then +if test "$with_xenomai" != no; then # XENOMAI_THREADS_RTS: look for the xeno-config executable XENOMAI_THREADS_RTS='' if test "$xeno_config_from_cmdline" = yes; then @@ -980,7 +890,7 @@ if test -n "$XENOMAI_THREADS_RTS"; then CPPFLAGS="$CPPFLAGS_hold" fi -if test "$with_xenomai" != no -o "$with_xenomai_kernel" != no; then +if test "$with_xenomai" != no; then flags="$($XENOMAI_THREADS_RTS --cflags)" # Xenomai docs recommend turning off CONFIG_CC_STACKPROTECTOR # on all arches but x86_64; this causes missing symbols without diff --git a/src/hal/drivers/hal_pru_generic/Submakefile b/src/hal/drivers/hal_pru_generic/Submakefile index 6d34f6099d..23e4d37cd4 100644 --- a/src/hal/drivers/hal_pru_generic/Submakefile +++ b/src/hal/drivers/hal_pru_generic/Submakefile @@ -1,13 +1,6 @@ ifdef TARGET_PLATFORM_BEAGLEBONE -# These are actually the same location but the package -# build needs to set a path relative to the Makefile, -# from whence it will be copied to debian/tmp -ifeq ($(RUN_IN_PLACE),yes) -PRUBINDIR := $(EMC2_HOME)/rtlib/prubin -else PRUBINDIR := ../rtlib/prubin -endif # support for ARM335x PRU (Programmable Realtime Unit) components and SUPPORT_DIR := hal/support @@ -68,4 +61,15 @@ install_prubin: install: install_prubin +install_prubin: + $(DIR) $(DESTDIR)$(EMC2_RTLIB_DIR)/prubin +# # Copy .bin and .dbg files to the rtlib/prubin directory + $(FILE) $(PRUBINDIR)/*.bin $(DESTDIR)$(EMC2_RTLIB_BASE_DIR)/prubin + $(FILE) $(PRUBINDIR)/*.dbg $(DESTDIR)$(EMC2_RTLIB_BASE_DIR)/prubin +# # Copy .bin and .dbg symlinks to the rtlib/modules directory + $(FILE) ../rtlib/*.bin $(DESTDIR)$(EMC2_RTLIB_DIR) + $(FILE) ../rtlib/*.dbg $(DESTDIR)$(EMC2_RTLIB_DIR) + +install: install_prubin + endif From 3ba5471f640e0bcd206e632b29932e5fe2cd81b6 Mon Sep 17 00:00:00 2001 From: John Morris Date: Mon, 18 Feb 2019 18:04:06 +0800 Subject: [PATCH 459/516] Build system updates - Remove empty TARGET_PLATFORM variable - Remove USERMODE_PCI variable; always use it - Remove last BUILD_SYS variable remnants - Always build hostmot2 --- scripts/gen-rtapi.ini.sh.in.tmpl | 1 - src/Makefile | 6 +-- src/Makefile.inc.in | 8 +--- src/README.config-changes | 12 +---- src/configure.ac | 59 +----------------------- src/hal/drivers/Submakefile | 9 ---- src/hal/drivers/mesa-hostmot2/hm2_pci.c | 2 - src/hal/drivers/mesa-hostmot2/hm2_test.c | 2 - src/hal/simdrivers/Submakefile | 12 ----- src/machinekitcfg.py-tmp.in | 4 +- src/rtapi/Submakefile | 14 ++---- src/rtapi/rtapi_app.h | 3 +- src/rtapi/rtapi_pci.c | 3 -- src/rtapi/userpci/Submakefile | 2 - 14 files changed, 14 insertions(+), 123 deletions(-) diff --git a/scripts/gen-rtapi.ini.sh.in.tmpl b/scripts/gen-rtapi.ini.sh.in.tmpl index e9a7feb29d..c87dc26455 100644 --- a/scripts/gen-rtapi.ini.sh.in.tmpl +++ b/scripts/gen-rtapi.ini.sh.in.tmpl @@ -53,7 +53,6 @@ BIN_DIR=@EMC2_BIN_DIR@ # Makefile.inc parameters USE_PORTABLE_PARPORT_IO=@USE_PORTABLE_PARPORT_IO@ -TARGET_PLATFORM=@TARGET_PLATFORM@ GIT_VERSION=@GIT_VERSION@ RUN_IN_PLACE=@RUN_IN_PLACE@ PIDOF=@PIDOF@ diff --git a/src/Makefile b/src/Makefile index 6512eb8568..39a80eb534 100755 --- a/src/Makefile +++ b/src/Makefile @@ -833,9 +833,9 @@ ifeq ($(BUILD_EMCWEB),yes) $(DESTDIR)$(datadir)/linuxcnc/doc-root/js \ $(DESTDIR)$(datadir)/linuxcnc/doc-root/res endif -ifeq ($(USERMODE_PCI),yes) $(DIR) $(DESTDIR)$(includedir)/linuxcnc/userpci -endif +# # Create machinekit->linuxcnc symlink in /usr/share + ln -s linuxcnc $(DESTDIR)$(datadir)/machinekit install-kernel-indep: install-dirs $(FILE) objects/*.msg $(DESTDIR)$(tcldir)/msgs @@ -867,9 +867,7 @@ endif # # don't run ldconfig under fakeroot (silence dpkg-build warning) -test -n "$$FAKED_MODE" || ldconfig $(DESTDIR)$(libdir) $(FILE) $(HEADERS) $(DESTDIR)$(includedir)/linuxcnc/ -ifeq ($(USERMODE_PCI),yes) $(FILE) $(USERPCI_HEADERS) $(DESTDIR)$(includedir)/linuxcnc/userpci -endif $(FILE) $(DOCS_HELP) $(DESTDIR)$(docdir) $(TREE) $(NC_FILES) $(DESTDIR)$(ncfilesdir) $(EXE) ../nc_files/M101 $(DESTDIR)$(ncfilesdir) diff --git a/src/Makefile.inc.in b/src/Makefile.inc.in index 2cc4c8e97d..78769ee12a 100644 --- a/src/Makefile.inc.in +++ b/src/Makefile.inc.in @@ -100,12 +100,6 @@ TARGET_PLATFORM_H3 = @TARGET_PLATFORM_H3@ HARDY_AMD64_WORKAROUND=@HARDY_AMD64_WORKAROUND@ PRECISE_MULTILIB_BUG=@PRECISE_MULTILIB_BUG@ -ifeq ($(BUILD_SYS),user-dso) -USERMODE_PCI=@USERMODE_PCI@ -else -USERMODE_PCI=no -endif - # example programs BUILD_EXAMPLES=@BUILD_EXAMPLES@ @@ -172,7 +166,7 @@ USE_UUID=@USE_UUID@ LIBBACKTRACE = @LIBBACKTRACE@ -#libudev for if USERMODE_PCI==yes +#libudev LIBUDEV_CFLAGS=@LIBUDEV_CFLAGS@ LIBUDEV_LIBS=@LIBUDEV_LIBS@ diff --git a/src/README.config-changes b/src/README.config-changes index 5e7b3e3766..cc4b0a3838 100644 --- a/src/README.config-changes +++ b/src/README.config-changes @@ -64,7 +64,8 @@ arise during merge, also with the consequence of an even more incoherent set of Build system: there are two styles, 'kbuild' (kernel modules) and 'user-dso' (userland shared objects). The thread style implies a build system: posix, xenomai, rt-preempt imply 'user-dso', the others imply 'kbuild'. -Building hardware drivers can be controlled with --enable-drivers. It is default 'yes' except for --with-threads=posix. Some hardware drivers will build as kernel modules only, some as user shared objects, some may build as both; in that case the Submakefile needs to test for BUILD_SYS having the proper value. +Building hardware drivers can be controlled with --enable-drivers. It +is default 'yes'. The cpp symbols 'SIM', 'SIMULATOR', and 'RTAPI_SIM' have been removed as they do not make sense any more. A simulator configuration is '--with-threads=posix', which is now implied by --enable-simulator. @@ -74,8 +75,6 @@ THREADS= one of: POSIX, RT_PREEMPT, XENOMAI, XENOMAI_KERNEL, RTAI BUILD_DRIVERS=yes or no -BUILD_SYSTEM=kbuild or user-dso - THREADS is reflected in config.h as one of the following defined: @@ -93,13 +92,6 @@ RTAPI_RTAI BUILD_DRIVERS is conditionally defined in config.h too. - -BUILD_SYSTEM is reflected in config.h as either - -BUILD_SYSTEM_KBUILD or - -BUILD_SYSTEM_USER_DSO defined. - == hal_parport == The experimental usermode parport driver from master: src/hal/simdrivers has been integrated into the main hal_parport.c/.h code using conditionals from above. diff --git a/src/configure.ac b/src/configure.ac index d0a3888613..056565ffda 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -927,7 +927,6 @@ AC_MSG_RESULT($with_xenomai) ############################################################################## # Subsection 2.6 # # Hardware driver detection # -# - Configure usermode PCI drivers # # - Configure libudev # ############################################################################## @@ -942,58 +941,9 @@ fi AC_MSG_RESULT($with_drivers) -AC_ARG_ENABLE(usermode-pci, - [AS_HELP_STRING([--enable-usermode-pci], - [Build PCI drivers with usermode PCI support])], - [with_usermode_pci=$enableval], - [with_usermode_pci=check]) -# record what was requested on the command line -if test $with_usermode_pci = yes; then - usermode_pci_requested_cmdline=yes -else - usermode_pci_requested_cmdline=no -fi -if test $with_drivers = yes -a $with_usermode_pci != no; then - usermode_pci_disabled_cmdline=no -else - usermode_pci_disabled_cmdline=yes -fi +# test usability of libudev, needed by drivers +PKG_CHECK_MODULES(LIBUDEV, libudev, with_libudev=yes, with_libudev=no) -# test usability of libudev, needed by userland drivers -with_libudev=no -if test "$with_drivers" = "yes" -a $with_usermode_pci != no; then - PKG_CHECK_MODULES(LIBUDEV, libudev, with_libudev=yes, with_libudev=no) -fi - -AC_MSG_CHECKING(whether to build usermode PCI hardware drivers) -if test "$usermode_pci_disabled_cmdline" = yes; then - # user explicitly disabled either userland drivers or all drivers - with_usermode_pci=no - AC_MSG_RESULT([disabled by user]) -elif test "$with_usermode_pci" = check -a $with_userland_rt_threads = no; then - with_usermode_pci=no - AC_MSG_RESULT([default disabled for no userland RT threads]) -elif test $with_libudev = no; then - with_usermode_pci=no - AC_MSG_RESULT([no; depends on libudev]) -elif test "$with_usermode_pci" = check -a $with_userland_rt_threads = yes; then - with_usermode_pci=yes - AC_MSG_RESULT([default enabled for userland RT threads]) -else - # catchall - AC_MSG_RESULT($with_usermode_pci) -fi -# if --with-usermode-pci was specified on the cmdline but is -# unavailable, consider it an error -test $usermode_pci_requested_cmdline = yes -a $with_usermode_pci = no && \ - AC_MSG_ERROR([Usermode PCI drivers requested but unavailable]) -# if xenomai or rt-preempt will be built and userland drivers were -# not explicitly disabled but will not be built, issue a warning -test $with_usermode_pci = no \ - -a $usermode_pci_disabled_cmdline = no \ - -a $with_userland_rt_threads = yes && \ - $TARGET_PLATFORM_PC && \ - AC_MSG_WARN([Usermode PCI drivers will not be available]) ############################################################################## # Subsection 2.7 # @@ -1065,10 +1015,6 @@ AC_SUBST([USE_SSL]) AC_SUBST([USE_UUID]) AC_SUBST([USE_LIBCGROUP]) -if test "$with_usermode_pci" = yes; then - AC_DEFINE([USERMODE_PCI], [], [build PCI drivers with usermode PCI support]) -fi -AC_SUBST([USERMODE_PCI],[$with_usermode_pci]) AC_SUBST(LIBUDEV_CFLAGS) AC_SUBST(LIBUDEV_LIBS) AC_DEFINE(HAVE_LIBUDEV, [], [libudev installed and available]) @@ -1140,7 +1086,6 @@ if test "$with_xenomai" = yes; then fi AC_SUBST([HAVE_XENOMAI_THREADS],[$with_xenomai]) AC_SUBST([XENOMAI_THREADS_RTS]) -AC_SUBST([PRECISE_MULTILIB_BUG],[$PRECISE_MULTILIB_BUG]) # while we are at it, drop a git scent mark GIT_VERSION=unknown diff --git a/src/hal/drivers/Submakefile b/src/hal/drivers/Submakefile index e94af22eb0..8570a239d3 100644 --- a/src/hal/drivers/Submakefile +++ b/src/hal/drivers/Submakefile @@ -112,16 +112,7 @@ endif #endif #################################################### -# Gnu make 'expression' syntax is pathetic. What were these guys smoking? -# turn on by default BUILD_HOSTMOT2=yes -ifeq ($(USERMODE_PCI),yes) -# reconfirm our intent.. -BUILD_HOSTMOT2=yes -else -#except if USERMODE_PCI isn't set -BUILD_HOSTMOT2=no -endif ifeq ($(BUILD_HOSTMOT2),yes) $(eval $(call c_comp_build_rules,hal/drivers/mesa-hostmot2/hm2_eth.o)) diff --git a/src/hal/drivers/mesa-hostmot2/hm2_pci.c b/src/hal/drivers/mesa-hostmot2/hm2_pci.c index 49c7440cce..db198276aa 100755 --- a/src/hal/drivers/mesa-hostmot2/hm2_pci.c +++ b/src/hal/drivers/mesa-hostmot2/hm2_pci.c @@ -20,11 +20,9 @@ #include "config.h" -#if defined(USERMODE_PCI) #include #include #include -#endif #include "rtapi.h" #include "rtapi_app.h" diff --git a/src/hal/drivers/mesa-hostmot2/hm2_test.c b/src/hal/drivers/mesa-hostmot2/hm2_test.c index 7b2b4caf4c..56f2036ca0 100644 --- a/src/hal/drivers/mesa-hostmot2/hm2_test.c +++ b/src/hal/drivers/mesa-hostmot2/hm2_test.c @@ -27,11 +27,9 @@ #include "config.h" -#if defined(USERMODE_PCI) #include #include #include -#endif #include "rtapi.h" #include "rtapi_app.h" diff --git a/src/hal/simdrivers/Submakefile b/src/hal/simdrivers/Submakefile index fe53559562..8e80c01066 100644 --- a/src/hal/simdrivers/Submakefile +++ b/src/hal/simdrivers/Submakefile @@ -1,16 +1,4 @@ -ifeq ($(BUILD_SYS),sim) -UPARPORT_SRCS := $(addprefix hal/simdrivers/, \ - uparport.c) - -UPARPORT_LIBS := -UPARPORT_FLAGS := -DSIM -DSIMULATOR -DRTAPI -UULAPI -D__MODULE__ -Drealtime - -USERSRCS += $(UPARPORT_SRCS) -TARGETS += ../rtlib/hal_parport.so - -endif - $(call TOOBJSDEPS, $(UPARPORT_SRCS)) : EXTRAFLAGS=-fPIC $(UPARPORT_FLAGS) ../rtlib/hal_parport.so: $(call TOOBJS, $(UPARPORT_SRCS)) $(UPARPORT_LIBS) diff --git a/src/machinekitcfg.py-tmp.in b/src/machinekitcfg.py-tmp.in index 07bf06fd4b..6f9518abaf 100644 --- a/src/machinekitcfg.py-tmp.in +++ b/src/machinekitcfg.py-tmp.in @@ -141,9 +141,7 @@ class Config(object): self.TARGET_PLATFORM_BEAGLEBONE = "@TARGET_PLATFORM_BEAGLEBONE@" self.TARGET_PLATFORM_RASPBERRY = "@TARGET_PLATFORM_RASPBERRY@" - self.USERMODE_PCI="@USERMODE_PCI@" - - #libudev for if USERMODE_PCI==yes + # libudev self.LIBUDEV_CFLAGS="@LIBUDEV_CFLAGS@" self.LIBUDEV_LIBS="@LIBUDEV_LIBS@" diff --git a/src/rtapi/Submakefile b/src/rtapi/Submakefile index 91c6e14dc4..938c1e18ac 100644 --- a/src/rtapi/Submakefile +++ b/src/rtapi/Submakefile @@ -179,10 +179,8 @@ RTAPI_LIB_SRCS := \ machinetalk/nanopb/pb_encode.c \ machinetalk/nanopb/pb_common.c -ifeq ($(USERMODE_PCI),yes) # link userland PCI support into rtapi_app RTAPI_LIB_SRCS += rtapi/rtapi_pci.c -endif ifeq ($(HAVE_XENOMAI_THREADS),yes) RTAPI_LIB_SRCS += rtapi/flavor/xenomai.c @@ -207,18 +205,16 @@ endif $(call TOOBJSDEPS, rtapi/rtapi_app.cc): \ EXTRAFLAGS = $(PROTOBUF_CFLAGS) $(CZMQ_CFLAGS) $(LTTNG_UST_CFLAGS) + $(call TOOBJSDEPS, rtapi/rtapi_app.cc): \ ../include/machinetalk/protobuf/message.pb.h -ifeq ($(USERMODE_PCI),yes) +$(call TOOBJSDEPS, rtapi/flavor/rt-preempt.c): \ + EXTRAFLAGS += $(LIBCGROUP_CFLAGS) -# compile userland PCI support with udev cflags if any +# compile userland PCI support with udev cflags $(call TOOBJSDEPS, rtapi/rtapi_pci.c): EXTRAFLAGS += $(LIBUDEV_CFLAGS) -# userland PCI support needs -ludev for rtapi.so -../libexec/rtapi_app: LDFLAGS += $(LIBUDEV_LIBS) -endif - ../libexec/rtapi_app: \ $(addprefix $(OBJDIR)/,$(RTAPI_LIB_OBJS)) \ $(call TOOBJS, $(RTAPI_APP_SRCS)) \ @@ -235,7 +231,7 @@ endif -o $@ \ $^ \ $(LDFLAGS) \ - $(THREADS_LDFLAGS) \ + $(THREADS_LDFLAGS) $(LIBUDEV_LIBS) $(LIBCGROUP_LIBS) \ $(PROTOBUF_LIBS) $(CZMQ_LIBS) $(LTTNG_UST_LIBS) \ -lstdc++ -ldl -luuid diff --git a/src/rtapi/rtapi_app.h b/src/rtapi/rtapi_app.h index bae54d4e1e..4a4fd9a798 100644 --- a/src/rtapi/rtapi_app.h +++ b/src/rtapi/rtapi_app.h @@ -25,9 +25,8 @@ get full of ifdefs. */ -#if defined(USERMODE_PCI) #include "userpci/module.h" -#endif + /* Turn the first instance of rtapi_app_* into a function declaration, then export the symbol, then re-create the function definition. This way the symbol is only exported if the function exists in the code, and we don't diff --git a/src/rtapi/rtapi_pci.c b/src/rtapi/rtapi_pci.c index 701eede3f3..2efeda5a59 100644 --- a/src/rtapi/rtapi_pci.c +++ b/src/rtapi/rtapi_pci.c @@ -29,7 +29,6 @@ #endif #include "config.h" -#if defined(USERMODE_PCI) #include #include /* vprintf() */ @@ -742,5 +741,3 @@ EXPORT_SYMBOL(pci_register_driver); EXPORT_SYMBOL(pci_unregister_driver); EXPORT_SYMBOL(pci_ioremap_bar); - -#endif // USERMODE_PCI diff --git a/src/rtapi/userpci/Submakefile b/src/rtapi/userpci/Submakefile index 22c0477164..dfe341d199 100644 --- a/src/rtapi/userpci/Submakefile +++ b/src/rtapi/userpci/Submakefile @@ -12,7 +12,6 @@ $(USERPCI_HEADERS): ../include/userpci/%.h: rtapi/userpci/%.h @mkdir -p ../include/userpci cp $^ $@ -ifeq ($(USERMODE_PCI),yes) # These headers need to remain in the 'userpci' subdirectory SUBDIRECTORY_HEADERS += $(USERPCI_HEADERS) INSTALL_DIRS += ../include/userpci @@ -26,7 +25,6 @@ setsserial-objs += \ rtapi/userpci/device.o \ rtapi/userpci/firmware.o \ rtapi/userpci/string.o -endif clean: userpci-clean userpci-clean: From 964c587daf49c437b69d1043b8076e60b6f79af4 Mon Sep 17 00:00:00 2001 From: John Morris Date: Tue, 19 Feb 2019 11:36:14 +0800 Subject: [PATCH 460/516] Remove scripts/check-build-vs-configure-sha Favor fixing the build system rather than creating annoyances on top of a broken build system --- scripts/check-build-vs-configure-sha.in | 29 ------------------------- src/Makefile | 3 --- src/configure.ac | 1 - 3 files changed, 33 deletions(-) delete mode 100644 scripts/check-build-vs-configure-sha.in diff --git a/scripts/check-build-vs-configure-sha.in b/scripts/check-build-vs-configure-sha.in deleted file mode 100644 index fb7a1e0420..0000000000 --- a/scripts/check-build-vs-configure-sha.in +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash -# -# helper for src/Makefile: compare build and configure SHA's -# -# trap the common error of checking out a different branch and forgetting to make clean/configure -# -# @configure_input@ -# on @DATE@ -# - -GIT_CONFIG_SHA=@GIT_CONFIG_SHA@ -GIT_BUILD_SHA=`../scripts/get-git-sha` - -if test "$GIT_CONFIG_SHA" != "$GIT_BUILD_SHA"; then - - echo 1>&2 - echo "***********************************************************" 1>&2 - - echo WARNING: configure was last run at @DATE@ at git version "$GIT_CONFIG_SHA" 1>&2 - echo WARNING: now the git version is: "$GIT_BUILD_SHA" 1>&2 - echo WARNING: consider executing "'make clean; sh autogen.sh; ./configure '" before running make 1>&2 - - echo "***********************************************************" 1>&2 - echo 1>&2 - exit 1 -fi - -exit 0 - diff --git a/src/Makefile b/src/Makefile index 39a80eb534..4aa6d38fbb 100755 --- a/src/Makefile +++ b/src/Makefile @@ -324,9 +324,6 @@ endif # see configure.ac GIT_CONFIG_SHA for the configure-time string GIT_BUILD_SHA := $(shell ../scripts/get-git-sha) -# complain if SHA's dont match -$(info $(shell ../scripts/check-build-vs-configure-sha)) - # Compilation options. Perhaps some of these should come from Makefile.inc? (CXXFLAGS now does) INTEGER_OVERFLOW_FLAGS := $(call cc-option,-fwrapv) $(call cc-option, -fno-strict-overflow) OPT := $(INTEGER_OVERFLOW_FLAGS) diff --git a/src/configure.ac b/src/configure.ac index 056565ffda..a6e70bf50c 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -2075,7 +2075,6 @@ fi # files that get created by ./configure # ############################################################################## AC_CONFIG_FILES([../scripts/gen-rtapi.ini.sh]) -AC_CONFIG_FILES([../scripts/check-build-vs-configure-sha], [chmod +x ../scripts/check-build-vs-configure-sha]) AC_CONFIG_FILES([../scripts/linuxcnc], [chmod +x ../scripts/linuxcnc]) AC_CONFIG_FILES([../scripts/halrun], [chmod +x ../scripts/halrun]) AC_CONFIG_FILES([../scripts/rip-environment], [chmod +x ../scripts/rip-environment]) From b7cef4ab9aa5862de72880162d326c76f3a69d5f Mon Sep 17 00:00:00 2001 From: John Morris Date: Tue, 19 Feb 2019 13:39:36 +0800 Subject: [PATCH 461/516] Makefile: Add C unit test macros --- src/Makefile | 65 ++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 61 insertions(+), 4 deletions(-) diff --git a/src/Makefile b/src/Makefile index 4aa6d38fbb..1875ef4535 100755 --- a/src/Makefile +++ b/src/Makefile @@ -217,6 +217,7 @@ endif INCLUDES := . USERSRCS := +RTSRCS := PROGRAMS := # When used like $(call TOxxx, ...) these turn a list of source files @@ -233,6 +234,9 @@ TODEPS = $(patsubst %.cc,depends/%$(2).d,$(patsubst %.c,depends/%$(2).d,$(1))) TOOBJSDEPS = $(call TOOBJS,$(1),$(2)) $(call TODEPS, $(1),$(2)) +# Same, but for RT objects in OBJDIR, compiled with -DRTAPI +TORTOBJS = $(patsubst %.cc,$(OBJDIR)/%$(2).o,$(patsubst %.c,$(OBJDIR)/%$(2).o,$(1))) + # This macro generates build rules for C components # Example call & resulting rules: # $$(eval $(call c_comp_build_rules,hal/components/encoder.o,hal/components/othersrc.o)) @@ -250,6 +254,45 @@ endef # Debugging #$$(info $(call c_comp_build_rules,hal/components/encoderv2.o)) +############################################################################### +# C unit test setup +# +# This macro generates rules for C unit tests; e.g. +# +# $(eval $(call setup_test, \ +# dir/test_src, RTAPI, dir/ulapi_srcs.c, dir/rtapi_srcs.c), ../lib/lib.so, -lfoo) +# +# expands to: +# +# RTSRCS += dir/main_src.c +# objects/dir/test_src_RTAPI: \ +# objects/dir/ulapi_srcs.o \ +# $(OBJDIR)/dir/rtapi_srcs.o $(OBJDIR)/dir/test_src.o \ +# ../lib/lib.so +# @mkdir -p objects/dir +# @echo Linking test objects/dir/test_src_RTAPI +# $(Q)gcc -o objects/dir/test_src_RTAPI -g -DRTAPI \ +# $(OBJDIR)/dir/test_src.o \ +# objects/dir/ulapi_srcs.o $(OBJDIR)/dir/rtapi_srcs.o \ +# ../lib/lib.so -lfoo +# CMOCKA_TESTS += dir/test_src_RTAPI +# +# ...and does the equivalent for ULAPI as well. + +define setup_test +$$(if $$(filter RTAPI,$(2)),RTSRCS,USERSRCS) += $(1).c +objects/$(1)_$(strip $(2)): \ + $$(call $$(if $$(filter RTAPI,$(2)),TORTOBJS,TOOBJS), $(1).c) \ + $$(call TOOBJS, $(3)) $$(call TORTOBJS, $(4)) $(5) + @mkdir -p objects/$$(dir $(1)) + @echo Linking test objects/$(1)_$(strip $(2)) + $(Q)gcc -o $$@ -g $$^ -lcmocka $(6) +CMOCKA_TESTS += $(1)_$(strip $(2)) + +endef + +############################################################################### + SUBMAKEFILES := $(patsubst %,%/Submakefile,$(SUBDIRS)) #$(info SUBMAKEFILES=$(SUBMAKEFILES)) -include $(wildcard $(SUBMAKEFILES)) @@ -264,7 +307,7 @@ $(call ASSERT_EMPTY,$(filter-out %.c %.cc %.p %.js %.ph %.proto, $(USERSRCS))) else $(call ASSERT_EMPTY,$(filter-out %.c %.cc %.js %.proto, $(USERSRCS))) endif -$(call ASSERT_EMPTY,$(filter-out %.c %.proto, $(RTSRCS))) +$(call ASSERT_EMPTY,$(filter-out %.c, $(RTSRCS))) ifeq ($(BUILD_PYTHON),yes) $(call TOOBJS,$(PYSRCS)) : EXTRAFLAGS += -fPIC $(call cc-option,-fno-strict-aliasing) @@ -377,7 +420,7 @@ $(sort $(CUSEROBJS_BUILD)) : objects/%_build.o: %.c $< -o $@ $(sort $(CXXUSEROBJS)) : objects/%.o: %.cc - $(ECHO) Compiling $< + $(ECHO) Compiling ++ $< @mkdir -p $(dir $@) @rm -f $@ $(Q)$(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $(EXTRAFLAGS) \ @@ -1105,14 +1148,17 @@ $(eval $(call c_comp_build_rules,hal/icomp-example/icomp.o)) # clashes with component in i_components $(eval $(call c_comp_build_rules,hal/icomp-example/lutn-demo.o)) -TORTOBJS = $(foreach file,$($(patsubst %.o,%,$(1))-objs), $(OBJDIR)/$(file)) +TOCOMPRTOBJS = $(foreach file,$($(patsubst %.o,%,$(1))-objs), $(OBJDIR)/$(file)) ####################################################################################################### # Module building EXTRA_CFLAGS += -fPIC -RTOBJS += $(sort $(foreach mod,$(obj-m),$(call TORTOBJS,$(mod)))) +# Non-module RT objects +RTOBJS = $(call TORTOBJS,$(RTSRCS)) +# Module RT objects +RTOBJS += $(sort $(foreach mod,$(obj-m),$(call TOCOMPRTOBJS,$(mod)))) RTDEPS := $(sort $(patsubst $(OBJDIR)/%.o,$(DEPDIR)/%.d, $(RTOBJS))) @@ -1323,3 +1369,14 @@ cscope/man/: NOSETESTS := $(wildcard ../nosetests/*.py) nosetest: $(foreach var,$(NOSETESTS),nosetests -v $(var);) + +############################################################################### +# C unit tests +# +# Run with `make cmocka_tests` + +cmocka_tests: $(addprefix objects/, $(CMOCKA_TESTS)) + @for test in $^; do \ + echo "\nRunning test $$test"; \ + $$test; \ + done From e02ebbb74899026eb269ade6ed184ff3f4ec12d2 Mon Sep 17 00:00:00 2001 From: John Morris Date: Tue, 19 Feb 2019 15:42:46 +0800 Subject: [PATCH 462/516] rtapi_flavor: tests & fixes --- src/rtapi/Submakefile | 35 +++++++--- src/rtapi/flavor/rtapi_flavor.c | 89 +++++++++++++------------ src/rtapi/flavor/rtapi_flavor.h | 8 +-- src/rtapi/tests/rtapi_flavor.c | 112 ++++++++++++++++++++++++++++++++ 4 files changed, 190 insertions(+), 54 deletions(-) create mode 100644 src/rtapi/tests/rtapi_flavor.c diff --git a/src/rtapi/Submakefile b/src/rtapi/Submakefile index 938c1e18ac..e621d531f9 100644 --- a/src/rtapi/Submakefile +++ b/src/rtapi/Submakefile @@ -19,9 +19,15 @@ INCLUDES += rtapi rtapi_export rtapi/flavor @mkdir -p ../include/flavor $(Q)cp $^ $@ +ifeq ($(HAVE_XENOMAI_THREADS),yes) +XENOMAI_SRC = rtapi/flavor/xenomai.c +XENOMAI_HEADER = rtapi/flavor/xenomai.h +endif + HEADERS += \ rtapi/flavor/rtapi_flavor.h \ - rtapi/flavor/rt-preempt.h + rtapi/flavor/rt-preempt.h \ + $(XENOMAI_HEADER) ########################################## # Clean up @@ -174,6 +180,7 @@ TARGETS += $(ULAPI_LIB) $(ULAPI_LIB).0 RTAPI_LIB_SRCS := \ $(XXAPI_COMMON_SRCS) \ rtapi/flavor/rt-preempt.c \ + $(XENOMAI_SRC) \ machinetalk/support/nanopb.c \ machinetalk/nanopb/pb_decode.c \ machinetalk/nanopb/pb_encode.c \ @@ -182,14 +189,8 @@ RTAPI_LIB_SRCS := \ # link userland PCI support into rtapi_app RTAPI_LIB_SRCS += rtapi/rtapi_pci.c -ifeq ($(HAVE_XENOMAI_THREADS),yes) -RTAPI_LIB_SRCS += rtapi/flavor/xenomai.c -HEADERS += rtapi/flavor/xenomai.h -endif - # Build RTAPI_LIB_SRCS with -DRTAPI -RTAPI_LIB_OBJS := $(patsubst %.c,%.o,$(RTAPI_LIB_SRCS)) -RTOBJS += $(addprefix $(OBJDIR)/,$(RTAPI_LIB_OBJS)) +RTSRCS += $(RTAPI_LIB_SRCS) RTAPI_APP_SRCS := \ @@ -286,3 +287,21 @@ TARGETS += ../libexec/rtapi_msgd @mkdir -p $(dir $@) bash $< > $@ TARGETS += ../etc/linuxcnc/rtapi.ini + + +################################################################## +# C unit tests +################################################################## + +# ULAPI: use -DULAPI XXAPI_COMMON_SRCS +$(eval $(call setup_test,rtapi/tests/rtapi_flavor, ULAPI,\ + $(XXAPI_COMMON_SRCS) machinetalk/lib/syslog_async.c rtapi/flavor/ulapi.c,\ + , \ + ../lib/liblinuxcncshm.so ../lib/liblinuxcncini.so)) + +# RTAPI: use -DRTAPI XXAPI_COMMON_SRCS; link in pthreads and libcgroup +$(eval $(call setup_test,rtapi/tests/rtapi_flavor, RTAPI,\ + machinetalk/lib/syslog_async.c rtapi/flavor/ulapi.c, \ + $(XXAPI_COMMON_SRCS) rtapi/flavor/rt-preempt.c $(XENOMAI_SRC), \ + ../lib/liblinuxcncshm.so ../lib/liblinuxcncini.so, \ + -pthread $(LIBCGROUP_LIBS))) diff --git a/src/rtapi/flavor/rtapi_flavor.c b/src/rtapi/flavor/rtapi_flavor.c index 871070140c..bc072ddcb6 100644 --- a/src/rtapi/flavor/rtapi_flavor.c +++ b/src/rtapi/flavor/rtapi_flavor.c @@ -19,34 +19,40 @@ static flavor_descriptor_ptr flavor_list[] = { &flavor_ulapi_descriptor, #endif #ifdef RTAPI -# ifdef HAVE_XENOMAI_THREADS - &flavor_xenomai_descriptor, -# endif &flavor_posix_descriptor, &flavor_rt_prempt_descriptor, +# ifdef HAVE_XENOMAI_THREADS + &flavor_xenomai_descriptor, +# endif #endif NULL }; -int install_flavor(rtapi_flavor_id_t flavor_id) +const char * flavor_names(flavor_descriptor_ptr ** fd) { - flavor_descriptor_ptr * i; - for (i = flavor_list; i != NULL; i++) { - if ((*i)->flavor_id == flavor_id) - break; - } - if (i != NULL) - flavor_descriptor = *i; - return i != NULL; + const char * name; + if (*fd == NULL) + // Init to beginning of list + *fd = flavor_list; + else + // Go to next in list + (*fd)++; + + if (**fd == NULL) + // End of list; no name + name = NULL; + else + // Not end; return name + name = (**fd)->name; + return name; } rtapi_flavor_id_t flavor_byname(const char *flavorname) { flavor_descriptor_ptr * i; - for (i = flavor_list; i != NULL; i++) { + for (i = flavor_list; *i != NULL; i++) { if (!strcasecmp(flavorname, (*i)->name)) return (*i)->flavor_id; - i++; } return RTAPI_FLAVOR_UNCONFIGURED_ID; } @@ -54,68 +60,67 @@ rtapi_flavor_id_t flavor_byname(const char *flavorname) flavor_descriptor_ptr flavor_byid(rtapi_flavor_id_t flavor_id) { flavor_descriptor_ptr * i; - for (i = flavor_list; i != NULL; i++) { + for (i = flavor_list; *i != NULL; i++) { if ((*i)->flavor_id == flavor_id) break; } return *i; } -rtapi_flavor_id_t default_flavor(void) +rtapi_flavor_id_t flavor_default(void) { - char *fname = getenv("FLAVOR"); + const char *fname = getenv("FLAVOR"); flavor_descriptor_ptr * flavor = NULL; rtapi_flavor_id_t flavor_id = 0; // Return flavor passed through environment if (fname) { - if ((flavor_id = flavor_byname(fname)) == RTAPI_FLAVOR_UNCONFIGURED_ID) { + flavor_id = flavor_byname(fname); + if (flavor_id == RTAPI_FLAVOR_UNCONFIGURED_ID) { fprintf(stderr, "FLAVOR=%s: no such flavor -- valid flavors are:\n", fname); - for (flavor = flavor_list; flavor != NULL; flavor++) { + for (flavor=NULL; (fname=flavor_names(&flavor)); ) fprintf(stderr, "\t%s\n", (*flavor)->name); - flavor++; - } exit(1); } + fprintf(stderr, "Picked default flavor '%s' (from environment)\n", + (*flavor)->name); return (*flavor)->flavor_id; } // Find best flavor - for (flavor = flavor_list; flavor != NULL; flavor++) { - if ((*flavor)->flavor_id > flavor_id && - ((*flavor)->can_run_flavor == NULL || (*flavor)->can_run_flavor())) + for (flavor = flavor_list; *flavor != NULL; flavor++) { + if ((*flavor)->flavor_id > flavor_id + && ((*flavor)->can_run_flavor == NULL + || (*flavor)->can_run_flavor())) { flavor_id = (*flavor)->flavor_id; + break; + } } if (!flavor_id) { // This should never happen: POSIX can always run fprintf(stderr, "ERROR: Unable to find runnable flavor\n"); exit(1); } + fprintf(stderr, "Picked default flavor '%s' automatically\n", + (*flavor)->name); return flavor_id; } -int flavor_is_configured(void) +int flavor_install(rtapi_flavor_id_t flavor_id) { - return flavor_descriptor->flavor_id != RTAPI_FLAVOR_UNCONFIGURED_ID; + flavor_descriptor_ptr * i; + for (i = flavor_list; *i != NULL; i++) { + if ((*i)->flavor_id == flavor_id) + break; + } + if (i != NULL) + flavor_descriptor = *i; + return i != NULL; } -const char * flavor_names(flavor_descriptor_ptr * fd) +int flavor_is_configured(void) { - const char * name; - if (*fd == NULL) - // Init to beginning of list - fd = flavor_list; - else - // Go to next in list - (*fd)++; - - if (*fd == NULL) - // End of list; no name - name = NULL; - else - // Not end; return name - name = (*fd)->name; - return name; + return flavor_descriptor->flavor_id != RTAPI_FLAVOR_UNCONFIGURED_ID; } diff --git a/src/rtapi/flavor/rtapi_flavor.h b/src/rtapi/flavor/rtapi_flavor.h index b2275a77f9..887a56793b 100644 --- a/src/rtapi/flavor/rtapi_flavor.h +++ b/src/rtapi/flavor/rtapi_flavor.h @@ -87,12 +87,12 @@ typedef flavor_descriptor_t * flavor_descriptor_ptr; extern flavor_descriptor_ptr flavor_descriptor; -extern int install_flavor(rtapi_flavor_id_t flavor_id); +extern const char * flavor_names(flavor_descriptor_ptr ** fd); extern rtapi_flavor_id_t flavor_byname(const char *flavorname); -extern rtapi_flavor_id_t default_flavor(void); -extern int flavor_is_configured(void); extern flavor_descriptor_ptr flavor_byid(rtapi_flavor_id_t flavor_id); -extern const char * flavor_names(flavor_descriptor_ptr * fd); +extern rtapi_flavor_id_t flavor_default(void); +extern int flavor_is_configured(void); +extern int flavor_install(rtapi_flavor_id_t flavor_id); #ifdef __cplusplus } diff --git a/src/rtapi/tests/rtapi_flavor.c b/src/rtapi/tests/rtapi_flavor.c new file mode 100644 index 0000000000..4da2e6bffe --- /dev/null +++ b/src/rtapi/tests/rtapi_flavor.c @@ -0,0 +1,112 @@ +#include "rtapi_flavor.h" +#include +#include +#include + +/******************************************************************/ +// Tests for flavor_names + +// Number of flavors +#ifdef RTAPI +# ifdef HAVE_XENOMAI_THREADS +# define FLAVOR_NAMES_COUNT 3 +static char* expected_flavor_names[] = { "posix", "rt-preempt", "xenomai" }; +# else +# define FLAVOR_NAMES_COUNT 2 +static char* expected_flavor_names[] = { "posix", "rt-preempt" }; +# endif +#else // ULAPI +# define FLAVOR_NAMES_COUNT 1 +static char* expected_flavor_names[] = { "ulapi" }; +#endif + +static void test_flavor_names(void **state) +{ + flavor_descriptor_ptr * f = NULL; + char** expected_name_ptr = expected_flavor_names; + const char* fname; + int count = 0; + + for (f=NULL; (fname=flavor_names(&f)); count++) + assert_string_equal(fname, *(expected_name_ptr++)); + assert_int_equal(count, FLAVOR_NAMES_COUNT); +} + +/******************************************************************/ +// Tests for flavor_byname, flavor_byid + +// Test inputs +typedef struct { char* name; int id; } flavor_by_test_data_t; +#ifdef RTAPI +static flavor_by_test_data_t flavor_by_test_data[] = { + {"posix", 2}, + {"rt-preempt", 3}, +# ifdef HAVE_XENOMAI_THREADS + {"xenomai", 4}, +# else + {"xenomai", 0}, + {"bogus", 4}, +# endif + {"ulapi", 0}, + {"bogus", 0}, + {"bogus", -10000}, + {"END OF TESTS", -1}, +}; +#endif +#ifdef ULAPI +static flavor_by_test_data_t flavor_by_test_data[] = { + {"ulapi", 1}, + {"posix", 0}, + {"rt-preempt", 0}, + {"bogus", 2}, + {"bogus", 3}, + {"bogus", 4}, + {"bogus", 10000}, + {"END OF TESTS", -1}, +}; +#endif + +static void test_flavor_byname(void **state) +{ + int id; + flavor_by_test_data_t * td_ptr = flavor_by_test_data; + for (; td_ptr->id >= 0; td_ptr++) { + id = flavor_byname(td_ptr->name); + /* printf("name=%s; id=%d; res id is %d\n", td_ptr->name, td_ptr->id, id); */ + if (td_ptr->id > 0 && strcmp(td_ptr->name,"bogus") != 0) + assert_int_equal(id, td_ptr->id); + else + assert_int_equal(id, 0); + } +} + +static void test_flavor_byid(void **state) +{ + flavor_descriptor_ptr f; + flavor_by_test_data_t * td_ptr = flavor_by_test_data; + for (; td_ptr->id >= 0; td_ptr++) { + f = flavor_byid(td_ptr->id); + /* printf("name=%s; id=%d; f is %p\n", td_ptr->name, td_ptr->id, f); */ + if (td_ptr->id > 0 && strcmp(td_ptr->name,"bogus") != 0) { + assert_non_null(f); + /* if (f) */ + /* printf("f->flavor_id\n", f->flavor_id); */ + assert_int_equal(f->flavor_id, td_ptr->id); + assert_string_equal(f->name, td_ptr->name); + } else + // Bogus tests + assert_null(f); + } +} + + +int main(void) +{ + const struct CMUnitTest tests[] = { + cmocka_unit_test(test_flavor_names), + cmocka_unit_test(test_flavor_byname), + cmocka_unit_test(test_flavor_byid), + }; + + return cmocka_run_group_tests(tests, NULL, NULL); +} From f8e89f985a014b1314377c07a70d6999b30971e3 Mon Sep 17 00:00:00 2001 From: John Morris Date: Wed, 20 Feb 2019 14:54:46 +0800 Subject: [PATCH 463/516] rtapi_flavor, unit test updates - C unit tests now mock functions - Flavor hooks and data now wrapped for mocking and insulation - Fix flavor default and add tests - Minor changes in the rtapi_flavor API --- src/Makefile | 8 +- src/emc/motion/control.c | 2 +- src/hal/utils/halcmd_commands.c | 4 +- src/rtapi/Submakefile | 15 +- src/rtapi/flavor/rt-preempt.c | 18 +- src/rtapi/flavor/rtapi_flavor.c | 111 +++++---- src/rtapi/flavor/rtapi_flavor.h | 183 +++++++++------ src/rtapi/flavor/rtapi_flavor_hook_wrappers.c | 167 ++++++++++++++ src/rtapi/flavor/ulapi.c | 6 +- src/rtapi/flavor/xenomai.c | 12 +- src/rtapi/rtapi_app.cc | 32 +-- src/rtapi/rtapi_common.c | 13 +- src/rtapi/rtapi_exception.c | 6 +- src/rtapi/rtapi_task.c | 22 +- src/rtapi/rtapi_time.c | 26 +-- src/rtapi/tests/rtapi_flavor.c | 215 +++++++++++++++++- 16 files changed, 626 insertions(+), 214 deletions(-) create mode 100644 src/rtapi/flavor/rtapi_flavor_hook_wrappers.c diff --git a/src/Makefile b/src/Makefile index 1875ef4535..8509316055 100755 --- a/src/Makefile +++ b/src/Makefile @@ -260,7 +260,8 @@ endef # This macro generates rules for C unit tests; e.g. # # $(eval $(call setup_test, \ -# dir/test_src, RTAPI, dir/ulapi_srcs.c, dir/rtapi_srcs.c), ../lib/lib.so, -lfoo) +# dir/test_src, RTAPI, dir/ulapi_srcs.c, dir/rtapi_srcs.c), ../lib/lib.so, \ +# -lfoo, wrap_funct) # # expands to: # @@ -274,11 +275,12 @@ endef # $(Q)gcc -o objects/dir/test_src_RTAPI -g -DRTAPI \ # $(OBJDIR)/dir/test_src.o \ # objects/dir/ulapi_srcs.o $(OBJDIR)/dir/rtapi_srcs.o \ -# ../lib/lib.so -lfoo +# ../lib/lib.so -lfoo -Wl,--wrap=wrap_funct # CMOCKA_TESTS += dir/test_src_RTAPI # # ...and does the equivalent for ULAPI as well. +WL_WRAP = -Wl,--wrap= define setup_test $$(if $$(filter RTAPI,$(2)),RTSRCS,USERSRCS) += $(1).c objects/$(1)_$(strip $(2)): \ @@ -286,7 +288,7 @@ objects/$(1)_$(strip $(2)): \ $$(call TOOBJS, $(3)) $$(call TORTOBJS, $(4)) $(5) @mkdir -p objects/$$(dir $(1)) @echo Linking test objects/$(1)_$(strip $(2)) - $(Q)gcc -o $$@ -g $$^ -lcmocka $(6) + $(Q)gcc -o $$@ -g $$^ -lcmocka $(6) $$(addprefix $$(WL_WRAP),$(7)) CMOCKA_TESTS += $(1)_$(strip $(2)) endef diff --git a/src/emc/motion/control.c b/src/emc/motion/control.c index 91daad7b67..e5b5e17873 100644 --- a/src/emc/motion/control.c +++ b/src/emc/motion/control.c @@ -255,7 +255,7 @@ extern int emcmotController(void *arg, const hal_funct_args_t *fa) emcmot_hal_data->last_period_ns = this_run * 1e6 / cpu_khz; #endif - if(!priming && flavor_descriptor->has_rt) { + if(!priming && flavor_feature(NULL, FLAVOR_IS_RT)) { // we have CYCLE_HISTORY samples, so check for this call being // anomolously late int i; diff --git a/src/hal/utils/halcmd_commands.c b/src/hal/utils/halcmd_commands.c index b5b0feec41..a4455653a5 100644 --- a/src/hal/utils/halcmd_commands.c +++ b/src/hal/utils/halcmd_commands.c @@ -2478,7 +2478,7 @@ static void print_thread_stats(hal_thread_t *tptr) halcmd_output("\nLowlevel thread statistics for '%s':\n\n", ho_name(tptr)); - flavor_descriptor->print_thread_stats_hook(tptr->task_id); + flavor_task_print_thread_stats_hook(NULL, tptr->task_id); } static int print_thread_entry(hal_object_ptr o, foreach_args_t *args) @@ -2543,7 +2543,7 @@ static void print_thread_info(char **patterns) { if (scriptmode == 0) { halcmd_output("Realtime Threads (flavor: %s, currently %s) :\n", - flavor_descriptor->name, + flavor_name(NULL), (hal_data->threads_running > 0) ? "running" : "stopped"); halcmd_output(" Period FP CPU Name " "Time Max-Time util max jitter-95%% flags\n"); diff --git a/src/rtapi/Submakefile b/src/rtapi/Submakefile index e621d531f9..34538fbe2e 100644 --- a/src/rtapi/Submakefile +++ b/src/rtapi/Submakefile @@ -52,6 +52,7 @@ XXAPI_COMMON_SRCS := $(patsubst %, rtapi/%, \ rtapi_heap.c \ rtapi_compat.c \ flavor/rtapi_flavor.c \ + flavor/rtapi_flavor_hook_wrappers.c \ ) # rtapi_compat needs to know where rtapi.ini lives @@ -179,6 +180,7 @@ TARGETS += $(ULAPI_LIB) $(ULAPI_LIB).0 RTAPI_LIB_SRCS := \ $(XXAPI_COMMON_SRCS) \ + rtapi/rtapi_pci.c \ rtapi/flavor/rt-preempt.c \ $(XENOMAI_SRC) \ machinetalk/support/nanopb.c \ @@ -186,13 +188,9 @@ RTAPI_LIB_SRCS := \ machinetalk/nanopb/pb_encode.c \ machinetalk/nanopb/pb_common.c -# link userland PCI support into rtapi_app -RTAPI_LIB_SRCS += rtapi/rtapi_pci.c - # Build RTAPI_LIB_SRCS with -DRTAPI RTSRCS += $(RTAPI_LIB_SRCS) - RTAPI_APP_SRCS := \ rtapi/rtapi_app.cc @@ -217,7 +215,7 @@ $(call TOOBJSDEPS, rtapi/flavor/rt-preempt.c): \ $(call TOOBJSDEPS, rtapi/rtapi_pci.c): EXTRAFLAGS += $(LIBUDEV_CFLAGS) ../libexec/rtapi_app: \ - $(addprefix $(OBJDIR)/,$(RTAPI_LIB_OBJS)) \ + $(call TORTOBJS, $(RTAPI_LIB_SRCS)) \ $(call TOOBJS, $(RTAPI_APP_SRCS)) \ ../lib/liblinuxcncini.so.0 \ ../lib/liblinuxcncshm.so \ @@ -297,11 +295,14 @@ TARGETS += ../etc/linuxcnc/rtapi.ini $(eval $(call setup_test,rtapi/tests/rtapi_flavor, ULAPI,\ $(XXAPI_COMMON_SRCS) machinetalk/lib/syslog_async.c rtapi/flavor/ulapi.c,\ , \ - ../lib/liblinuxcncshm.so ../lib/liblinuxcncini.so)) + ../lib/liblinuxcncshm.so ../lib/liblinuxcncini.so, \ + , \ + flavor_can_run_flavor getenv)) # RTAPI: use -DRTAPI XXAPI_COMMON_SRCS; link in pthreads and libcgroup $(eval $(call setup_test,rtapi/tests/rtapi_flavor, RTAPI,\ machinetalk/lib/syslog_async.c rtapi/flavor/ulapi.c, \ $(XXAPI_COMMON_SRCS) rtapi/flavor/rt-preempt.c $(XENOMAI_SRC), \ ../lib/liblinuxcncshm.so ../lib/liblinuxcncini.so, \ - -pthread $(LIBCGROUP_LIBS))) + -pthread $(LIBCGROUP_LIBS), \ + flavor_can_run_flavor getenv)) diff --git a/src/rtapi/flavor/rt-preempt.c b/src/rtapi/flavor/rt-preempt.c index 65a83c7b77..90187394d2 100644 --- a/src/rtapi/flavor/rt-preempt.c +++ b/src/rtapi/flavor/rt-preempt.c @@ -510,7 +510,7 @@ int posix_wait_hook(const int flags) { return 0; } -void posix_delay_hook(long int nsec) +void posix_task_delay_hook(long int nsec) { struct timespec t; @@ -584,7 +584,7 @@ int rtpreempt_can_run_flavor() } -void print_thread_stats(int task_id) +void rtpreempt_print_thread_stats(int task_id) { rtapi_threadstatus_t *ts = &global_data->thread_status[task_id]; @@ -623,7 +623,7 @@ void rtpreempt_exception_handler_hook(int type, rtapi_print_msg(level, "%d: Unexpected realtime delay on RT thread %d ", type, detail->task_id); - print_thread_stats(detail->task_id); + rtpreempt_print_thread_stats(detail->task_id); break; default: @@ -643,15 +643,15 @@ flavor_descriptor_t flavor_rt_prempt_descriptor = { .module_init_hook = posix_module_init_hook, .module_exit_hook = NULL, .task_update_stats_hook = NULL, - .print_thread_stats_hook = print_thread_stats, + .task_print_thread_stats_hook = rtpreempt_print_thread_stats, .task_new_hook = posix_task_new_hook, .task_delete_hook = posix_task_delete_hook, .task_start_hook = posix_task_start_hook, .task_stop_hook = posix_task_stop_hook, .task_pause_hook = NULL, - .wait_hook = posix_wait_hook, + .task_wait_hook = posix_wait_hook, .task_resume_hook = NULL, - .delay_hook = posix_delay_hook, + .task_delay_hook = posix_task_delay_hook, .get_time_hook = NULL, #if !defined(__i386__) && !defined(__x86_64__) .get_clocks_hook = posix_get_clocks_hook, @@ -672,15 +672,15 @@ flavor_descriptor_t flavor_posix_descriptor = { .module_init_hook = NULL, .module_exit_hook = NULL, .task_update_stats_hook = NULL, - .print_thread_stats_hook = print_thread_stats, + .task_print_thread_stats_hook = rtpreempt_print_thread_stats, .task_new_hook = posix_task_new_hook, .task_delete_hook = posix_task_delete_hook, .task_start_hook = posix_task_start_hook, .task_stop_hook = posix_task_stop_hook, .task_pause_hook = NULL, - .wait_hook = posix_wait_hook, + .task_wait_hook = posix_wait_hook, .task_resume_hook = NULL, - .delay_hook = posix_delay_hook, + .task_delay_hook = posix_task_delay_hook, .get_time_hook = NULL, #if !defined(__i386__) && !defined(__x86_64__) .get_clocks_hook = posix_get_clocks_hook, diff --git a/src/rtapi/flavor/rtapi_flavor.c b/src/rtapi/flavor/rtapi_flavor.c index bc072ddcb6..24fb018023 100644 --- a/src/rtapi/flavor/rtapi_flavor.c +++ b/src/rtapi/flavor/rtapi_flavor.c @@ -12,8 +12,27 @@ #include "xenomai.h" #endif +// Help for unit test mocking +int flavor_mocking = 0; // Signal from tests +int flavor_mocking_err = 0; // Pass error to tests +// - Mock exit(status), returning NULL and passing error out of band +#define EXIT_NULL(status) do { \ + if (flavor_mocking) { \ + flavor_mocking_err = status; return NULL; \ + } else exit(status); \ + } while (0) +// - Mock exit(status), returning (nothing) and passing error out of band +#define EXIT_NORV(status) do { \ + if (flavor_mocking) { \ + flavor_mocking_err = status; return; \ + } else exit(status); \ + } while (0) + + +// Global flavor descriptor gets set after a flavor is chosen flavor_descriptor_ptr flavor_descriptor = NULL; +// List of flavors compiled in static flavor_descriptor_ptr flavor_list[] = { #ifdef ULAPI &flavor_ulapi_descriptor, @@ -28,6 +47,7 @@ static flavor_descriptor_ptr flavor_list[] = { NULL }; + const char * flavor_names(flavor_descriptor_ptr ** fd) { const char * name; @@ -47,14 +67,14 @@ const char * flavor_names(flavor_descriptor_ptr ** fd) return name; } -rtapi_flavor_id_t flavor_byname(const char *flavorname) +flavor_descriptor_ptr flavor_byname(const char *flavorname) { flavor_descriptor_ptr * i; for (i = flavor_list; *i != NULL; i++) { - if (!strcasecmp(flavorname, (*i)->name)) - return (*i)->flavor_id; + if (!strcasecmp(flavorname, (*i)->name)) + break; } - return RTAPI_FLAVOR_UNCONFIGURED_ID; + return *i; } flavor_descriptor_ptr flavor_byid(rtapi_flavor_id_t flavor_id) @@ -67,57 +87,64 @@ flavor_descriptor_ptr flavor_byid(rtapi_flavor_id_t flavor_id) return *i; } -rtapi_flavor_id_t flavor_default(void) +flavor_descriptor_ptr flavor_default(void) { const char *fname = getenv("FLAVOR"); - flavor_descriptor_ptr * flavor = NULL; - rtapi_flavor_id_t flavor_id = 0; + flavor_descriptor_ptr * flavor_handle = NULL; + flavor_descriptor_ptr flavor = NULL; - // Return flavor passed through environment - if (fname) { - flavor_id = flavor_byname(fname); - if (flavor_id == RTAPI_FLAVOR_UNCONFIGURED_ID) { + if (fname && fname[0]) { + // $FLAVOR set in environment: verify it or fail + flavor = flavor_byname(fname); + if (flavor == NULL) { fprintf(stderr, - "FLAVOR=%s: no such flavor -- valid flavors are:\n", + "FATAL: No such flavor '%s'; valid flavors are\n", fname); - for (flavor=NULL; (fname=flavor_names(&flavor)); ) - fprintf(stderr, "\t%s\n", (*flavor)->name); - exit(1); + for (flavor_handle=NULL; (fname=flavor_names(&flavor_handle)); ) + fprintf(stderr, "FATAL: %s\n", (*flavor_handle)->name); + EXIT_NULL(100); } - fprintf(stderr, "Picked default flavor '%s' (from environment)\n", - (*flavor)->name); - return (*flavor)->flavor_id; - } + if (!flavor_can_run_flavor(flavor)) { + fprintf(stderr, "FATAL: Flavor '%s' from environment cannot run\n", + fname); + EXIT_NULL(101); + } else { + fprintf(stderr, + "INFO: Picked flavor '%s' id %d (from environment)\n", + flavor->name, flavor->flavor_id); + return flavor; + } - // Find best flavor - for (flavor = flavor_list; *flavor != NULL; flavor++) { - if ((*flavor)->flavor_id > flavor_id - && ((*flavor)->can_run_flavor == NULL - || (*flavor)->can_run_flavor())) { - flavor_id = (*flavor)->flavor_id; - break; + } else { + // Find best flavor automatically + flavor = NULL; + for (flavor_handle = flavor_list; + *flavor_handle != NULL; + flavor_handle++) { + // Best is highest ID that can run + if ( (!flavor || (*flavor_handle)->flavor_id > flavor->flavor_id) + && flavor_can_run_flavor(*flavor_handle) ) + flavor = (*flavor_handle); + } + if (!flavor) { + // This should never happen: POSIX can always run + fprintf(stderr, "ERROR: Unable to find runnable flavor\n"); + EXIT_NULL(102); + } else { + fprintf(stderr, "INFO: Picked default flavor '%s' automatically\n", + flavor->name); + return flavor; } } - if (!flavor_id) { - // This should never happen: POSIX can always run - fprintf(stderr, "ERROR: Unable to find runnable flavor\n"); - exit(1); - } - fprintf(stderr, "Picked default flavor '%s' automatically\n", - (*flavor)->name); - return flavor_id; } -int flavor_install(rtapi_flavor_id_t flavor_id) +void flavor_install(flavor_descriptor_ptr flavor) { - flavor_descriptor_ptr * i; - for (i = flavor_list; *i != NULL; i++) { - if ((*i)->flavor_id == flavor_id) - break; + if (!flavor_can_run_flavor(flavor)) { + fprintf(stderr, "FATAL: Flavor '%s' cannot run\n", flavor->name); + EXIT_NORV(103); } - if (i != NULL) - flavor_descriptor = *i; - return i != NULL; + flavor_descriptor = flavor; } int flavor_is_configured(void) diff --git a/src/rtapi/flavor/rtapi_flavor.h b/src/rtapi/flavor/rtapi_flavor.h index 887a56793b..405428ecbc 100644 --- a/src/rtapi/flavor/rtapi_flavor.h +++ b/src/rtapi/flavor/rtapi_flavor.h @@ -6,21 +6,8 @@ extern "C" { #endif #include "rtapi_common.h" -// Put these in order of preference -typedef enum RTAPI_FLAVOR_ID { - RTAPI_FLAVOR_UNCONFIGURED_ID = 0, - RTAPI_FLAVOR_ULAPI_ID, - RTAPI_FLAVOR_POSIX_ID, - RTAPI_FLAVOR_RT_PREEMPT_ID, - RTAPI_FLAVOR_XENOMAI_ID, - // Bogus - RTAPI_FLAVOR_MAX_ID -} rtapi_flavor_id_t; - // Flavor features: flavor_descriptor_t.flags bits for configuring flavor -// - Handy accessor -#define FLAVOR_FEATURE(f) (flavor_descriptor->flags & f) // - Whether iopl() needs to be called #define FLAVOR_DOES_IO RTAPI_BIT(0) // - Whether flavor has hard real-time latency @@ -33,66 +20,120 @@ typedef enum RTAPI_FLAVOR_ID { // The exception code puts structs in shm in an opaque blob; this is used to // check the allocated storage is large enough // https://stackoverflow.com/questions/807244/ -#define ASSERT_SIZE_WITHIN(type, size) \ +#define ASSERT_SIZE_WITHIN(type, size) \ typedef char assertion_failed_##type##_[2*!!(sizeof(type) <= size)-1] -typedef int (*rtapi_can_run_flavor_t)(void); -typedef void (*rtapi_exception_handler_hook_t)( - int type, rtapi_exception_detail_t *detail, int level); -typedef int (*rtapi_module_init_hook_t)(void); -typedef void (*rtapi_module_exit_hook_t)(void); -typedef int (*rtapi_task_update_stats_hook_t)(void); -typedef void (*rtapi_print_thread_stats_hook_t)(int task_id); -typedef int (*rtapi_task_new_hook_t)(task_data *task, int task_id); -typedef int (*rtapi_task_delete_hook_t)(task_data *task, int task_id); -typedef int (*rtapi_task_start_hook_t)(task_data *task, int task_id); -typedef void (*rtapi_task_stop_hook_t)(task_data *task, int task_id); -typedef int (*rtapi_task_pause_hook_t)(task_data *task, int task_id); -typedef int (*rtapi_wait_hook_t)(const int flags); -typedef int (*rtapi_task_resume_hook_t)(task_data *task, int task_id); -typedef void (*rtapi_delay_hook_t)(long int nsec); -typedef long long int (*rtapi_get_time_hook_t)(void); -typedef long long int (*rtapi_get_clocks_hook_t)(void); -typedef int (*rtapi_task_self_hook_t)(void); -typedef long long (*rtapi_task_pll_get_reference_hook_t)(void); -typedef int (*rtapi_task_pll_set_correction_hook_t)(long value); - -typedef struct { - const char *name; - const int flavor_id; - const unsigned long flags; - const unsigned has_rt; - const int time_no_clock_monotonic; - const rtapi_can_run_flavor_t can_run_flavor; - const rtapi_exception_handler_hook_t exception_handler_hook; - const rtapi_module_init_hook_t module_init_hook; - const rtapi_module_exit_hook_t module_exit_hook; - const rtapi_task_update_stats_hook_t task_update_stats_hook; - const rtapi_print_thread_stats_hook_t print_thread_stats_hook; - const rtapi_task_new_hook_t task_new_hook; - const rtapi_task_delete_hook_t task_delete_hook; - const rtapi_task_start_hook_t task_start_hook; - const rtapi_task_stop_hook_t task_stop_hook; - const rtapi_task_pause_hook_t task_pause_hook; - const rtapi_wait_hook_t wait_hook; - const rtapi_task_resume_hook_t task_resume_hook; - const rtapi_delay_hook_t delay_hook; - const rtapi_get_time_hook_t get_time_hook; - const rtapi_get_clocks_hook_t get_clocks_hook; - const rtapi_task_self_hook_t task_self_hook; - const rtapi_task_pll_get_reference_hook_t task_pll_get_reference_hook; - const rtapi_task_pll_set_correction_hook_t task_pll_set_correction_hook; -} flavor_descriptor_t; -typedef flavor_descriptor_t * flavor_descriptor_ptr; - -extern flavor_descriptor_ptr flavor_descriptor; - -extern const char * flavor_names(flavor_descriptor_ptr ** fd); -extern rtapi_flavor_id_t flavor_byname(const char *flavorname); -extern flavor_descriptor_ptr flavor_byid(rtapi_flavor_id_t flavor_id); -extern rtapi_flavor_id_t flavor_default(void); -extern int flavor_is_configured(void); -extern int flavor_install(rtapi_flavor_id_t flavor_id); + +// Put these in order of preference + typedef enum RTAPI_FLAVOR_ID { + RTAPI_FLAVOR_UNCONFIGURED_ID = 0, + RTAPI_FLAVOR_ULAPI_ID, + RTAPI_FLAVOR_POSIX_ID, + RTAPI_FLAVOR_RT_PREEMPT_ID, + RTAPI_FLAVOR_XENOMAI_ID, + } rtapi_flavor_id_t; + + + // Hook type definitions for the flavor_descriptor_t struct + typedef int (*rtapi_can_run_flavor_t)(void); + typedef void (*rtapi_exception_handler_hook_t)( + int type, rtapi_exception_detail_t *detail, int level); + typedef int (*rtapi_module_init_hook_t)(void); + typedef void (*rtapi_module_exit_hook_t)(void); + typedef int (*rtapi_task_update_stats_hook_t)(void); + typedef void (*rtapi_print_thread_stats_hook_t)(int task_id); + typedef int (*rtapi_task_new_hook_t)(task_data *task, int task_id); + typedef int (*rtapi_task_delete_hook_t)(task_data *task, int task_id); + typedef int (*rtapi_task_start_hook_t)(task_data *task, int task_id); + typedef void (*rtapi_task_stop_hook_t)(task_data *task, int task_id); + typedef int (*rtapi_task_pause_hook_t)(task_data *task, int task_id); + typedef int (*rtapi_task_wait_hook_t)(const int flags); + typedef int (*rtapi_task_resume_hook_t)(task_data *task, int task_id); + typedef void (*rtapi_delay_hook_t)(long int nsec); + typedef long long int (*rtapi_get_time_hook_t)(void); + typedef long long int (*rtapi_get_clocks_hook_t)(void); + typedef int (*rtapi_task_self_hook_t)(void); + typedef long long (*rtapi_task_pll_get_reference_hook_t)(void); + typedef int (*rtapi_task_pll_set_correction_hook_t)(long value); + + // All flavor-specific data is represented in this struct + typedef struct { + const char *name; + const rtapi_flavor_id_t flavor_id; + const unsigned long flags; + const rtapi_can_run_flavor_t can_run_flavor; + const rtapi_exception_handler_hook_t exception_handler_hook; + const rtapi_module_init_hook_t module_init_hook; + const rtapi_module_exit_hook_t module_exit_hook; + const rtapi_task_update_stats_hook_t task_update_stats_hook; + const rtapi_print_thread_stats_hook_t task_print_thread_stats_hook; + const rtapi_task_new_hook_t task_new_hook; + const rtapi_task_delete_hook_t task_delete_hook; + const rtapi_task_start_hook_t task_start_hook; + const rtapi_task_stop_hook_t task_stop_hook; + const rtapi_task_pause_hook_t task_pause_hook; + const rtapi_task_wait_hook_t task_wait_hook; + const rtapi_task_resume_hook_t task_resume_hook; + const rtapi_delay_hook_t task_delay_hook; + const rtapi_get_time_hook_t get_time_hook; + const rtapi_get_clocks_hook_t get_clocks_hook; + const rtapi_task_self_hook_t task_self_hook; + const rtapi_task_pll_get_reference_hook_t task_pll_get_reference_hook; + const rtapi_task_pll_set_correction_hook_t task_pll_set_correction_hook; + } flavor_descriptor_t; + typedef flavor_descriptor_t * flavor_descriptor_ptr; + + // The global flavor_descriptor; points at the configured flavor + extern flavor_descriptor_ptr flavor_descriptor; + + // Wrappers around flavor_descriptor + extern const char * flavor_names(flavor_descriptor_ptr ** fd); + extern flavor_descriptor_ptr flavor_byname(const char *flavorname); + extern flavor_descriptor_ptr flavor_byid(rtapi_flavor_id_t flavor_id); + extern flavor_descriptor_ptr flavor_default(void); + extern int flavor_is_configured(void); + extern void flavor_install(flavor_descriptor_ptr flavor_id); + + // Wrappers for functions in the flavor_descriptor_t + extern int flavor_can_run_flavor(flavor_descriptor_ptr f); + extern int flavor_exception_handler_hook( + flavor_descriptor_ptr f, int type, rtapi_exception_detail_t *detail, + int level); + extern int flavor_module_init_hook(flavor_descriptor_ptr f); + extern void flavor_module_exit_hook(flavor_descriptor_ptr f); + extern int flavor_task_update_stats_hook(flavor_descriptor_ptr f); + extern void flavor_task_print_thread_stats_hook( + flavor_descriptor_ptr f, int task_id); + extern int flavor_task_new_hook( + flavor_descriptor_ptr f, task_data *task, int task_id); + extern int flavor_task_delete_hook( + flavor_descriptor_ptr f, task_data *task, int task_id); + extern int flavor_task_start_hook( + flavor_descriptor_ptr f, task_data *task, int task_id); + extern void flavor_task_stop_hook( + flavor_descriptor_ptr f, task_data *task, int task_id); + extern int flavor_task_pause_hook( + flavor_descriptor_ptr f, task_data *task, int task_id); + extern int flavor_task_wait_hook(flavor_descriptor_ptr f, const int flags); + extern int flavor_task_resume_hook( + flavor_descriptor_ptr f, task_data *task, int task_id); + extern void flavor_task_delay_hook(flavor_descriptor_ptr f, long int nsec); + extern long long int flavor_get_time_hook(flavor_descriptor_ptr f); + extern long long int flavor_get_clocks_hook(flavor_descriptor_ptr f); + extern int flavor_task_self_hook(flavor_descriptor_ptr f); + extern long long flavor_task_pll_get_reference_hook( + flavor_descriptor_ptr f); + extern int flavor_task_pll_set_correction_hook( + flavor_descriptor_ptr f, long value); + + // Accessors for flavor_descriptor + extern const char * flavor_name(flavor_descriptor_ptr f); + extern int flavor_id(flavor_descriptor_ptr f); + extern int flavor_feature(flavor_descriptor_ptr f, int feature); + + // Help for unit test mocking + extern int flavor_mocking; + extern int flavor_mocking_err; #ifdef __cplusplus } diff --git a/src/rtapi/flavor/rtapi_flavor_hook_wrappers.c b/src/rtapi/flavor/rtapi_flavor_hook_wrappers.c new file mode 100644 index 0000000000..39a999eacb --- /dev/null +++ b/src/rtapi/flavor/rtapi_flavor_hook_wrappers.c @@ -0,0 +1,167 @@ +// These accessors make hook access slightly more convenient, and most important +// make mocking possible for unit testing. +// +// They must be in a separate file from functions calling them for mock calls to +// work. +#include "rtapi_flavor.h" + +#define SET_FLAVOR_DESCRIPTOR_DEFAULT() \ + do { if (f == NULL) f = flavor_descriptor; } while (0) +int flavor_can_run_flavor(flavor_descriptor_ptr f) +{ + SET_FLAVOR_DESCRIPTOR_DEFAULT(); + if (f->can_run_flavor) + return f->can_run_flavor(); + else + return 1; +} +int flavor_exception_handler_hook( + flavor_descriptor_ptr f, int type, rtapi_exception_detail_t *detail, + int level) +{ + SET_FLAVOR_DESCRIPTOR_DEFAULT(); + if (f->exception_handler_hook) { + f->exception_handler_hook(type, detail, level); + return 0; + } else + return -ENOSYS; // Unimplemented +} +int flavor_module_init_hook(flavor_descriptor_ptr f) +{ + SET_FLAVOR_DESCRIPTOR_DEFAULT(); + if (f->module_init_hook) + return f->module_init_hook(); + else + return 0; +} +void flavor_module_exit_hook(flavor_descriptor_ptr f) +{ + SET_FLAVOR_DESCRIPTOR_DEFAULT(); + if (f->module_exit_hook) + f->module_exit_hook(); +} +int flavor_task_update_stats_hook(flavor_descriptor_ptr f) +{ + SET_FLAVOR_DESCRIPTOR_DEFAULT(); + if (f->task_update_stats_hook) + return f->task_update_stats_hook(); + else + return 0; +} +void flavor_task_print_thread_stats_hook(flavor_descriptor_ptr f, int task_id) +{ + SET_FLAVOR_DESCRIPTOR_DEFAULT(); + if (f->task_print_thread_stats_hook) + f->task_print_thread_stats_hook(task_id); +} +int flavor_task_new_hook(flavor_descriptor_ptr f, task_data *task, int task_id) +{ + SET_FLAVOR_DESCRIPTOR_DEFAULT(); + if (flavor_descriptor->task_new_hook) + return f->task_new_hook(task, task_id); + else + return -ENOSYS; // Unimplemented +} +int flavor_task_delete_hook( + flavor_descriptor_ptr f, task_data *task, int task_id) +{ + SET_FLAVOR_DESCRIPTOR_DEFAULT(); + if (f->task_delete_hook) + return f->task_delete_hook(task, task_id); + else + return 0; +} +int flavor_task_start_hook( + flavor_descriptor_ptr f, task_data *task, int task_id) +{ + SET_FLAVOR_DESCRIPTOR_DEFAULT(); + return f->task_start_hook(task, task_id); +} +void flavor_task_stop_hook( + flavor_descriptor_ptr f, task_data *task, int task_id) +{ + SET_FLAVOR_DESCRIPTOR_DEFAULT(); + if (f->task_stop_hook) + f->task_stop_hook(task, task_id); +} +int flavor_task_pause_hook( + flavor_descriptor_ptr f, task_data *task, int task_id) +{ + SET_FLAVOR_DESCRIPTOR_DEFAULT(); + if (f->task_pause_hook) + return f->task_pause_hook(task, task_id); + else + return 0; +} +int flavor_task_wait_hook(flavor_descriptor_ptr f, const int flags) +{ + SET_FLAVOR_DESCRIPTOR_DEFAULT(); + if (f->task_wait_hook) + return f->task_wait_hook(flags); + else + return 0; +} +int flavor_task_resume_hook( + flavor_descriptor_ptr f, task_data *task, int task_id) +{ + SET_FLAVOR_DESCRIPTOR_DEFAULT(); + if (f->task_resume_hook) + return f->task_resume_hook(task, task_id); + else + return 0; +} +void flavor_task_delay_hook(flavor_descriptor_ptr f, long int nsec) +{ + SET_FLAVOR_DESCRIPTOR_DEFAULT(); + if (f->task_delay_hook) + f->task_delay_hook(nsec); +} +long long int flavor_get_time_hook(flavor_descriptor_ptr f) +{ + SET_FLAVOR_DESCRIPTOR_DEFAULT(); + if (f->get_time_hook) + return f->get_time_hook(); + else + return -ENOSYS; // Unimplemented +} +long long int flavor_get_clocks_hook(flavor_descriptor_ptr f) +{ + SET_FLAVOR_DESCRIPTOR_DEFAULT(); + if (f->get_clocks_hook) + return f->get_clocks_hook(); + else + return -ENOSYS; // Unimplemented +} +int flavor_task_self_hook(flavor_descriptor_ptr f) +{ + SET_FLAVOR_DESCRIPTOR_DEFAULT(); + return f->task_self_hook(); +} +long long flavor_task_pll_get_reference_hook(flavor_descriptor_ptr f) +{ + SET_FLAVOR_DESCRIPTOR_DEFAULT(); + return f->task_pll_get_reference_hook(); +} +int flavor_task_pll_set_correction_hook(flavor_descriptor_ptr f, long value) +{ + SET_FLAVOR_DESCRIPTOR_DEFAULT(); + return f->task_pll_set_correction_hook(value); +} + +const char * flavor_name(flavor_descriptor_ptr f) +{ + SET_FLAVOR_DESCRIPTOR_DEFAULT(); + return f->name; +} + +int flavor_id(flavor_descriptor_ptr f) +{ + SET_FLAVOR_DESCRIPTOR_DEFAULT(); + return f->flavor_id; +} + +int flavor_feature(flavor_descriptor_ptr f, int feature) +{ + SET_FLAVOR_DESCRIPTOR_DEFAULT(); + return (f->flags & feature); +} diff --git a/src/rtapi/flavor/ulapi.c b/src/rtapi/flavor/ulapi.c index a66aaaa9a2..fe6a1160c1 100644 --- a/src/rtapi/flavor/ulapi.c +++ b/src/rtapi/flavor/ulapi.c @@ -26,15 +26,15 @@ flavor_descriptor_t flavor_ulapi_descriptor = { .module_init_hook = ulapi_module_init_hook, .module_exit_hook = NULL, .task_update_stats_hook = NULL, - .print_thread_stats_hook = NULL, + .task_print_thread_stats_hook = NULL, .task_new_hook = NULL, .task_delete_hook = NULL, .task_start_hook = NULL, .task_stop_hook = NULL, .task_pause_hook = NULL, - .wait_hook = NULL, + .task_wait_hook = NULL, .task_resume_hook = NULL, - .delay_hook = NULL, + .task_delay_hook = NULL, .get_time_hook = NULL, .get_clocks_hook = NULL, .task_self_hook = NULL, diff --git a/src/rtapi/flavor/xenomai.c b/src/rtapi/flavor/xenomai.c index 6434b35cf4..e5b8086809 100644 --- a/src/rtapi/flavor/xenomai.c +++ b/src/rtapi/flavor/xenomai.c @@ -474,7 +474,7 @@ int xenomai_task_self_hook(void) { ************************************************************************/ #ifdef RTAPI -void xenomai_delay_hook(long int nsec) +void xenomai_task_delay_hook(long int nsec) { long long int release = rt_timer_read() + nsec; while (rt_timer_read() < release); @@ -674,15 +674,15 @@ flavor_descriptor_t flavor_xenomai_descriptor = { .module_init_hook = xenomai_module_init_hook, .module_exit_hook = xenomai_module_exit_hook, .task_update_stats_hook = xenomai_update_stats_hook, - .print_thread_stats_hook = xenomai_print_thread_stats, + .task_print_thread_stats_hook = xenomai_print_thread_stats, .task_new_hook = NULL, .task_delete_hook = xenomai_task_delete_hook, .task_start_hook = xenomai_task_start_hook, .task_stop_hook = xenomai_task_stop_hook, - .task_pause_hook = xenomai_task_resume_hook; - .wait_hook = xenomai_wait_hook, - .resume_hook = xenomai_resume_hook, - .delay_hook = xenomai_delay_hook, + .task_pause_hook = xenomai_task_pause_hook; + .task_wait_hook = xenomai_wait_hook, + .task_resume_hook = xenomai_task_resume_hook, + .task_delay_hook = xenomai_task_delay_hook, .get_time_hook = xenomai_get_time_hook, .get_clocks_hook = xenomai_get_clocks_hook, .task_self_hook = xenomai_task_self_hook, diff --git a/src/rtapi/rtapi_app.cc b/src/rtapi/rtapi_app.cc index f1ce352214..c11e4b06e8 100644 --- a/src/rtapi/rtapi_app.cc +++ b/src/rtapi/rtapi_app.cc @@ -130,7 +130,6 @@ static int foreground; static int debug; static int signal_fd; static bool interrupted; -static rtapi_flavor_id_t flavor = RTAPI_FLAVOR_UNCONFIGURED_ID; static bool trap_signals = true; int shmdrv_loaded; long page_size; @@ -1087,7 +1086,7 @@ static int mainloop(size_t argc, char **argv) } // make sure we're setuid root when we need to - if (use_drivers || FLAVOR_FEATURE(FLAVOR_DOES_IO)) { + if (use_drivers || flavor_feature(NULL, FLAVOR_DOES_IO)) { if (geteuid() != 0) { rtapi_print_msg(RTAPI_MSG_ERR, "rtapi_app:%d need to" @@ -1257,7 +1256,7 @@ static int configure_memory(void) unsigned int i, pagesize; char *buf; - if (use_drivers || FLAVOR_FEATURE(FLAVOR_DOES_IO)) { + if (use_drivers || flavor_feature(NULL, FLAVOR_DOES_IO)) { // Realtime tweak requires privs /* Lock all memory. This includes all current allocations (BSS/data) * and future allocations. */ @@ -1385,7 +1384,7 @@ static int harden_rt() // guaranteed the process executing e.g. hal_parport's rtapi_app_main is // the same process which starts the RT threads, causing hal_parport // thread functions to fail on inb/outb - if (use_drivers || FLAVOR_FEATURE(FLAVOR_DOES_IO)) { + if (use_drivers || flavor_feature(NULL, FLAVOR_DOES_IO)) { if (iopl(3) < 0) { rtapi_print_msg(RTAPI_MSG_ERR, "cannot gain I/O privileges - " @@ -1428,7 +1427,7 @@ int main(int argc, char **argv) uuid_unparse(process_uuid, process_uuid_str); int option = LOG_NDELAY; - + flavor_descriptor_ptr flavor = NULL; while (1) { int option_index = 0; @@ -1465,13 +1464,13 @@ int main(int argc, char **argv) break; case 'f': - if ((flavor = flavor_byname(optarg)) == RTAPI_FLAVOR_UNCONFIGURED_ID) { + if ((flavor = flavor_byname(optarg)) == NULL) { fprintf(stderr, "no such flavor: '%s' -- valid flavors are:\n", optarg); - flavor_descriptor_ptr f = NULL; - const char * name; - while ((name = flavor_names(&f))) - fprintf(stderr, "\t%s\n", name); + flavor_descriptor_ptr * flavor_handle; + const char * fname; + for (flavor_handle=NULL; (fname=flavor_names(&flavor_handle)); ) + fprintf(stderr, " %s\n", fname); exit(1); } break; @@ -1539,17 +1538,8 @@ int main(int argc, char **argv) #endif // Set flavor - if (flavor == RTAPI_FLAVOR_UNCONFIGURED_ID) - flavor = default_flavor(); - if (flavor_byid(flavor) == NULL) { - fprintf(stderr,"rtapi_app: Unable to install flavor\n"); - exit(1); - } - if (!install_flavor(flavor)) { - fprintf(stderr,"rtapi_app: Unable to install flavor '%s'\n", - flavor_byid(flavor)->name); - } - + if (!flavor) flavor = flavor_default(); // Exits on error + flavor_install(flavor); // Exits on error // the actual checking for setuid happens in harden_rt() (if needed) if (!foreground && (getuid() > 0)) { diff --git a/src/rtapi/rtapi_common.c b/src/rtapi/rtapi_common.c index f40d60be9f..2515ae8ab2 100644 --- a/src/rtapi/rtapi_common.c +++ b/src/rtapi/rtapi_common.c @@ -56,7 +56,7 @@ ringbuffer_t rtapi_message_buffer; // error ring access strcuture static int ulapi_debug = RTAPI_MSG_NONE; #endif -#define LOGTAG (FLAVOR_FEATURE(FLAVOR_NOT_RTAPI) ? "ULAPI" : "RTAPI") +#define LOGTAG (flavor_feature(NULL, FLAVOR_NOT_RTAPI) ? "ULAPI" : "RTAPI") int shmdrv_loaded; // set in rtapi_app_main FIXME long page_size; // set in rtapi_app_main @@ -209,8 +209,7 @@ int rtapi_module_init() // flavor init_rtapi_data(rtapi_data); - if (flavor_descriptor->module_init_hook) - retval = flavor_descriptor->module_init_hook(); + retval = flavor_module_init_hook(NULL); return retval; } @@ -222,8 +221,7 @@ int rtapi_app_main() void rtapi_app_exit(void) { - if (flavor_descriptor->module_exit_hook) - flavor_descriptor->module_exit_hook(); + flavor_module_exit_hook(NULL); rtapi_message_buffer.header->refcount--; @@ -275,10 +273,7 @@ int rtapi_exit(int module_id) { #ifdef RTAPI int rtapi_task_update_stats(void) { - if (flavor_descriptor->task_update_stats_hook) - return flavor_descriptor->task_update_stats_hook(); - else - return -ENOSYS; // not implemented in this flavor + return flavor_task_update_stats_hook(NULL); } #endif /*********************************************************************** diff --git a/src/rtapi/rtapi_exception.c b/src/rtapi/rtapi_exception.c index accd00f6e8..ebc5bf0608 100644 --- a/src/rtapi/rtapi_exception.c +++ b/src/rtapi/rtapi_exception.c @@ -56,13 +56,13 @@ static int rtapi_default_rt_exception_handler(int type, { static int error_printed = 0; int level = (error_printed == 0) ? RTAPI_MSG_ERR : RTAPI_MSG_WARN; + int res; if (error_printed < MAX_RT_ERRORS) { error_printed++; - if (flavor_descriptor->exception_handler_hook) - flavor_descriptor->exception_handler_hook(type, detail, level); - else + res = flavor_exception_handler_hook(NULL, type, detail, level); + if (res == -ENOSYS) // Unimplemented rtapi_print_msg(level, "%d: unspecified exception detail=%p ts=%p", type, detail, ts); diff --git a/src/rtapi/rtapi_task.c b/src/rtapi/rtapi_task.c index cb672d1e73..fa0f368e19 100644 --- a/src/rtapi/rtapi_task.c +++ b/src/rtapi/rtapi_task.c @@ -162,9 +162,8 @@ int rtapi_task_new(const rtapi_task_args_t *args) { task_id???). */ task->state = USERLAND; // userland threads don't track this - if (flavor_descriptor->task_new_hook) - retval = flavor_descriptor->task_new_hook(task,task_id); - else + retval = flavor_task_new_hook(NULL, task, task_id); + if (retval == -ENOSYS) // Unimplemented retval = task_id; rtapi_data->task_count++; @@ -194,8 +193,7 @@ int rtapi_task_delete(int task_id) { if (task->state != DELETE_LOCKED) // we don't already hold mutex rtapi_mutex_get(&(rtapi_data->mutex)); - if (flavor_descriptor->task_delete_hook) - retval = flavor_descriptor->task_delete_hook(task,task_id); + flavor_task_delete_hook(NULL, task,task_id); if (task->state != DELETE_LOCKED) // we don't already hold mutex rtapi_mutex_give(&(rtapi_data->mutex)); @@ -234,7 +232,7 @@ int rtapi_task_start(int task_id, unsigned long int period_nsec) { task_id, task->name); rtapi_print_msg(RTAPI_MSG_DBG, "RTAPI: period_nsec: %ld\n", period_nsec); - return flavor_descriptor->task_start_hook(task,task_id); + return flavor_task_start_hook(NULL, task,task_id); } int rtapi_task_stop(int task_id) { @@ -248,7 +246,7 @@ int rtapi_task_stop(int task_id) { if (task->magic != TASK_MAGIC) return -EINVAL; - flavor_descriptor->task_stop_hook(task,task_id); + flavor_task_stop_hook(NULL, task,task_id); return 0; } @@ -264,17 +262,11 @@ int rtapi_task_pause(int task_id) { if (task->magic != TASK_MAGIC) return -EINVAL; - if (flavor_descriptor->task_pause_hook) - return flavor_descriptor->task_pause_hook(task,task_id); - else - return -ENOSYS; + return flavor_task_pause_hook(NULL, task, task_id); } int rtapi_wait(const int flag) { - if (flavor_descriptor->wait_hook) - return flavor_descriptor->wait_hook(flag); - else - return 0; + return flavor_task_wait_hook(NULL, flag); } int rtapi_task_resume(int task_id) { diff --git a/src/rtapi/rtapi_time.c b/src/rtapi/rtapi_time.c index ca508bc5fa..28fe1f433c 100644 --- a/src/rtapi/rtapi_time.c +++ b/src/rtapi/rtapi_time.c @@ -60,7 +60,7 @@ long int rtapi_clock_set_period(long int nsecs) { return -EINVAL; } - if (FLAVOR_FEATURE(FLAVOR_TIME_NO_CLOCK_MONOTONIC)) + if (flavor_feature(NULL, FLAVOR_TIME_NO_CLOCK_MONOTONIC)) period = nsecs; else { clock_getres(CLOCK_MONOTONIC, &res); @@ -81,7 +81,7 @@ void rtapi_delay(long int nsec) if (nsec > max_delay) { nsec = max_delay; } - flavor_descriptor->delay_hook(nsec); + flavor_task_delay_hook(NULL, nsec); } @@ -95,27 +95,27 @@ long int rtapi_delay_max(void) /* The following functions are common to both RTAPI and ULAPI */ long long int rtapi_get_time(void) { - if (flavor_descriptor->get_time_hook) - return flavor_descriptor->get_time_hook(); - else { + long long int res; + + res = flavor_get_time_hook(NULL); + if (res == -ENOSYS) { // Unimplemented struct timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts); - return ts.tv_sec * 1000000000LL + ts.tv_nsec; + res = ts.tv_sec * 1000000000LL + ts.tv_nsec; } + return res; } long long int rtapi_get_clocks(void) { - if (flavor_descriptor->get_clocks_hook) - return flavor_descriptor->get_clocks_hook(); - else { - long long int retval; - + long long int res; + res = flavor_get_clocks_hook(NULL); + if (res == -ENOSYS) { // Unimplemented /* This returns a result in clocks instead of nS, and needs to be used with care around CPUs that change the clock speed to save power and other disgusting, non-realtime oriented behavior. But at least it doesn't take a week every time you call it. */ - rdtscll(retval); - return retval; + rdtscll(res); } + return res; } diff --git a/src/rtapi/tests/rtapi_flavor.c b/src/rtapi/tests/rtapi_flavor.c index 4da2e6bffe..9fc1e1339d 100644 --- a/src/rtapi/tests/rtapi_flavor.c +++ b/src/rtapi/tests/rtapi_flavor.c @@ -3,6 +3,11 @@ #include #include +// Set this to print verbose debug messages +int debug_tests = 0; +#define DEBUG(args...) \ + do { if (debug_tests) fprintf(stderr, args); } while (0) + /******************************************************************/ // Tests for flavor_names @@ -68,15 +73,23 @@ static flavor_by_test_data_t flavor_by_test_data[] = { static void test_flavor_byname(void **state) { - int id; + flavor_descriptor_ptr flavor; flavor_by_test_data_t * td_ptr = flavor_by_test_data; for (; td_ptr->id >= 0; td_ptr++) { - id = flavor_byname(td_ptr->name); - /* printf("name=%s; id=%d; res id is %d\n", td_ptr->name, td_ptr->id, id); */ + DEBUG("name=%s; id=%d\n", td_ptr->name, td_ptr->id); + flavor = flavor_byname(td_ptr->name); + + if (td_ptr->id == 0 || strcmp(td_ptr->name, "bogus") == 0) { + // Bogus name, or not compiled in + assert_null(flavor); + continue; + } + + assert_non_null(flavor); if (td_ptr->id > 0 && strcmp(td_ptr->name,"bogus") != 0) - assert_int_equal(id, td_ptr->id); + assert_int_equal(flavor->flavor_id, td_ptr->id); else - assert_int_equal(id, 0); + assert_int_equal(flavor->flavor_id, 0); } } @@ -86,11 +99,8 @@ static void test_flavor_byid(void **state) flavor_by_test_data_t * td_ptr = flavor_by_test_data; for (; td_ptr->id >= 0; td_ptr++) { f = flavor_byid(td_ptr->id); - /* printf("name=%s; id=%d; f is %p\n", td_ptr->name, td_ptr->id, f); */ if (td_ptr->id > 0 && strcmp(td_ptr->name,"bogus") != 0) { assert_non_null(f); - /* if (f) */ - /* printf("f->flavor_id\n", f->flavor_id); */ assert_int_equal(f->flavor_id, td_ptr->id); assert_string_equal(f->name, td_ptr->name); } else @@ -99,14 +109,201 @@ static void test_flavor_byid(void **state) } } +/******************************************************************/ +// Tests for flavor_default + +// Test inputs +typedef struct { + char* getenv_ret; // Return value of getenv("FLAVOR") + int ret; // Returned flavor ID + int exit; // Exit error code + // Return values of flavor_can_run_flavor(flavor) functions + int ulapi_cannot_run; // Just to test the flow + int posix_cannot_run; // Just to test the flow + int rtpreempt_can_run; + int xenomai_can_run; +} flavor_default_test_data_t; + +static flavor_default_test_data_t flavor_default_test_data[] = { +#ifdef RTAPI + // Flavor from environment variable: Success + { .getenv_ret = "posix", .ret = 2 }, + { .getenv_ret = "rt-preempt", .rtpreempt_can_run = 1, .ret = 3 }, + // Flavor from environment variable: No such flavor exit 100 + { .getenv_ret = "ulapi", .exit = 100 }, // No such flavor + { .getenv_ret = "bogus", .exit = 100 }, + // Flavor from environment variable: Cannot run exit 101 + { .getenv_ret = "rt-preempt", .rtpreempt_can_run = 0, .exit = 101 }, + { .getenv_ret = "posix", .posix_cannot_run = 1, .exit = 101 }, + // Choose best default: Success + { .ret = 2 }, // Worst case scenario: posix + { .getenv_ret = "", .ret = 2 }, // $FLAVOR set to empty + { .rtpreempt_can_run = 1, .ret = 3 }, // RT_PREEMPT can_run +# ifdef HAVE_XENOMAI_THREADS + { .xenomai_can_run = 1, .ret = 4 }, // Xenomai can_run + { .rtpreempt_can_run = 1, .xenomai_can_run = 1, .ret = 4 }, // Both can_run +# endif + // Choose best default: No runnable flavors exit 102 + { .posix_cannot_run = 1, .exit = 102 }, // Impossible + +#else // ULAPI + // Flavor from environment variable: Success + { .getenv_ret = "ulapi", .ret = 1 }, + // Flavor from environment variable: No such flavor exit 100 + { .getenv_ret = "posix", .exit = 100 }, + { .getenv_ret = "bogus", .exit = 100 }, + // Flavor from environment variable: Cannot run exit 101 + { .getenv_ret = "ulapi", .ulapi_cannot_run = 1, .exit = 101 }, + // Choose best default: Success + { .ret = 1 }, + { .getenv_ret = "", .ret = 1 }, // $FLAVOR set to empty + // Choose best default: No runnable flavors exit 102 + { .ulapi_cannot_run = 1, .exit = 102 }, +#endif + { .getenv_ret = "END" }, // Marks end of tests +}; + +// Mock functions +int __wrap_flavor_can_run_flavor(flavor_descriptor_ptr f) +{ + int ret = mock(); + if (f == NULL) + DEBUG("mock: flavor_can_run_flavor(NULL) = %d\n", ret); + else + DEBUG("mock: flavor_can_run_flavor('%s') = %d\n", f->name, ret); + function_called(); + /* check_expected(f->flavor_id); */ + check_expected_ptr(f); + return ret; +} + +char *__wrap_getenv(const char *name) +{ + // From + function_called(); + check_expected_ptr(name); + char* ret = mock_ptr_type(char *); + DEBUG("mock: getenv(%s) = '%s'\n", name, ret); + return ret; +} + +static void test_flavor_default_runner(flavor_default_test_data_t *td) +{ + flavor_descriptor_ptr flavor; + DEBUG("test: Setting up ret = %d\n", td->ret); + + // getenv("FLAVOR") should always be called; returns test data + DEBUG("test: mock getenv(FLAVOR) = '%s'\n", td->getenv_ret); + expect_function_call(__wrap_getenv); + expect_string(__wrap_getenv, name, "FLAVOR"); + will_return(__wrap_getenv, td->getenv_ret); + + if (td->getenv_ret && td->getenv_ret[0]) { + // $FLAVOR is set in environment + if (td->ret > 0 || td->exit == 101) + // Get flavor_descriptor for tests where $FLAVOR is valid + flavor = flavor_byname(td->getenv_ret); + + if (td->ret > 0) { + DEBUG("test: mock flavor_can_run_flavor(%s) = 1\n", flavor->name); + expect_function_call(__wrap_flavor_can_run_flavor); + expect_value(__wrap_flavor_can_run_flavor, f, flavor); + will_return(__wrap_flavor_can_run_flavor, 1); + } + if (td->exit == 101) { + DEBUG("test: mock flavor_can_run_flavor('%s') = 0\n", + td->getenv_ret); + expect_function_call(__wrap_flavor_can_run_flavor); + expect_value(__wrap_flavor_can_run_flavor, f, flavor); + will_return(__wrap_flavor_can_run_flavor, 0); + } + } else { + // No $FLAVOR set; pick best available +# ifdef ULAPI + expect_function_call(__wrap_flavor_can_run_flavor); + DEBUG("test: mock flavor_can_run_flavor('ulapi') = %d\n", + !td->ulapi_cannot_run); + expect_value(__wrap_flavor_can_run_flavor, f, flavor_byname("ulapi")); + will_return(__wrap_flavor_can_run_flavor, !td->ulapi_cannot_run); +# else // RTAPI + expect_function_calls(__wrap_flavor_can_run_flavor, 2); + DEBUG("test: mock flavor_can_run_flavor('posix') = %d\n", + !td->posix_cannot_run); + expect_value(__wrap_flavor_can_run_flavor, f, flavor_byname("posix")); + will_return(__wrap_flavor_can_run_flavor, !td->posix_cannot_run); + DEBUG("test: mock flavor_can_run_flavor('rt-preempt') = %d\n", + td->rtpreempt_can_run); + expect_value(__wrap_flavor_can_run_flavor, f, flavor_byname("rt-preempt")); + will_return(__wrap_flavor_can_run_flavor, td->rtpreempt_can_run); +# ifdef HAVE_XENOMAI_THREADS + expect_function_call(__wrap_flavor_can_run_flavor); + DEBUG("test: mock flavor_can_run_flavor('xenomai') = %d\n", + td->xenomai_can_run); + expect_value(__wrap_flavor_can_run_flavor, f, flavor_byname("xenomai")); + will_return(__wrap_flavor_can_run_flavor, td->xenomai_can_run); +# endif +# endif + } + + // Run the function + flavor = flavor_default(); + + // Check result + if (flavor) // Success + assert_int_equal(flavor->flavor_id, td->ret); + else // Failure + assert_int_equal(flavor_mocking_err, td->exit); +} + +// This increments over the tests +typedef flavor_default_test_data_t * flavor_default_test_data_ptr; +flavor_default_test_data_ptr td = flavor_default_test_data; + +static void test_flavor_default(void **state) +{ + // Walk through the list of tests and call runner + if (td->getenv_ret != NULL && strcmp(td->getenv_ret, "END") == 0) + // End of tests + skip(); + else + // Run the next test & increment test case + test_flavor_default_runner(td++); +} int main(void) { + // Tell functions we're in test mode + flavor_mocking = 1; + const struct CMUnitTest tests[] = { cmocka_unit_test(test_flavor_names), cmocka_unit_test(test_flavor_byname), cmocka_unit_test(test_flavor_byid), +# ifdef RTAPI // Ugh + cmocka_unit_test(test_flavor_default), + cmocka_unit_test(test_flavor_default), + cmocka_unit_test(test_flavor_default), + cmocka_unit_test(test_flavor_default), + cmocka_unit_test(test_flavor_default), + cmocka_unit_test(test_flavor_default), + cmocka_unit_test(test_flavor_default), + cmocka_unit_test(test_flavor_default), + cmocka_unit_test(test_flavor_default), +# ifdef HAVE_XENOMAI_THREADS + cmocka_unit_test(test_flavor_default), + cmocka_unit_test(test_flavor_default), +# endif + cmocka_unit_test(test_flavor_default), +# else // ULAPI + cmocka_unit_test(test_flavor_default), + cmocka_unit_test(test_flavor_default), + cmocka_unit_test(test_flavor_default), + cmocka_unit_test(test_flavor_default), + cmocka_unit_test(test_flavor_default), + cmocka_unit_test(test_flavor_default), + cmocka_unit_test(test_flavor_default), +# endif }; - return cmocka_run_group_tests(tests, NULL, NULL); + return cmocka_run_group_tests_name("rtapi_flavor tests", tests, NULL, NULL); } From 90bc26e16cdbf90c384980bf3a5c8f63f56088e7 Mon Sep 17 00:00:00 2001 From: John Morris Date: Wed, 20 Feb 2019 17:14:06 +0800 Subject: [PATCH 464/516] rtapi_flavor: test flavor_install --- src/rtapi/flavor/rtapi_flavor.c | 9 +++-- src/rtapi/tests/rtapi_flavor.c | 64 ++++++++++++++++++++++++++++++++- 2 files changed, 70 insertions(+), 3 deletions(-) diff --git a/src/rtapi/flavor/rtapi_flavor.c b/src/rtapi/flavor/rtapi_flavor.c index 24fb018023..0757378c9c 100644 --- a/src/rtapi/flavor/rtapi_flavor.c +++ b/src/rtapi/flavor/rtapi_flavor.c @@ -140,14 +140,19 @@ flavor_descriptor_ptr flavor_default(void) void flavor_install(flavor_descriptor_ptr flavor) { + if (flavor_descriptor != NULL) { + fprintf(stderr, "FATAL: Flavor '%s' already configured\n", + flavor_descriptor->name); + EXIT_NORV(103); + } if (!flavor_can_run_flavor(flavor)) { fprintf(stderr, "FATAL: Flavor '%s' cannot run\n", flavor->name); - EXIT_NORV(103); + EXIT_NORV(104); } flavor_descriptor = flavor; } int flavor_is_configured(void) { - return flavor_descriptor->flavor_id != RTAPI_FLAVOR_UNCONFIGURED_ID; + return flavor_descriptor != NULL; } diff --git a/src/rtapi/tests/rtapi_flavor.c b/src/rtapi/tests/rtapi_flavor.c index 9fc1e1339d..f4eed8e8c2 100644 --- a/src/rtapi/tests/rtapi_flavor.c +++ b/src/rtapi/tests/rtapi_flavor.c @@ -4,7 +4,7 @@ #include // Set this to print verbose debug messages -int debug_tests = 0; +int debug_tests = 1; #define DEBUG(args...) \ do { if (debug_tests) fprintf(stderr, args); } while (0) @@ -270,6 +270,65 @@ static void test_flavor_default(void **state) test_flavor_default_runner(td++); } +/******************************************************************/ +// Tests for flavor_install + +#ifdef RTAPI +char * flav_req = "posix"; +#else // ULAPI +char * flav_req = "ulapi"; +#endif + +static void test_flavor_install_already_configured(void **state) +{ + // Simulate flavor already configured + flavor_descriptor = flavor_byname(flav_req); + + // Request to install a flavor + flavor_install(flavor_byname(flav_req)); + + // Check error + assert_int_equal(flavor_mocking_err, 103); +} + +static void test_flavor_install_unrunnable(void **state) +{ + // Simulate unconfigured flavor + flavor_descriptor = NULL; + + // Mock can_run_flavor() return value + expect_function_call(__wrap_flavor_can_run_flavor); + expect_value(__wrap_flavor_can_run_flavor, f, flavor_byname(flav_req)); + will_return(__wrap_flavor_can_run_flavor, 0); + + // Request unrunnable flavor + flavor_install(flavor_byname(flav_req)); + + // Check error + assert_int_equal(flavor_mocking_err, 104); +} + +static void test_flavor_install_success(void **state) +{ + // Simulate unconfigured flavor + flavor_descriptor = NULL; + + // Mock can_run_flavor() return value + expect_function_call(__wrap_flavor_can_run_flavor); + expect_value(__wrap_flavor_can_run_flavor, f, flavor_byname(flav_req)); + will_return(__wrap_flavor_can_run_flavor, 1); + + // Request runnable flavor + flavor_install(flavor_byname(flav_req)); + + // Check flavor + assert_non_null(flavor_descriptor); + assert_int_equal(strcmp(flavor_descriptor->name, flav_req), 0); +} + +/******************************************************************/ +// Test runner + int main(void) { // Tell functions we're in test mode @@ -303,6 +362,9 @@ int main(void) cmocka_unit_test(test_flavor_default), cmocka_unit_test(test_flavor_default), # endif + cmocka_unit_test(test_flavor_install_already_configured), + cmocka_unit_test(test_flavor_install_unrunnable), + cmocka_unit_test(test_flavor_install_success), }; return cmocka_run_group_tests_name("rtapi_flavor tests", tests, NULL, NULL); From a003b9186ca557aa9c97db68660162f81795342d Mon Sep 17 00:00:00 2001 From: John Morris Date: Wed, 20 Feb 2019 17:43:33 +0800 Subject: [PATCH 465/516] fix rt-preempt detection --- src/rtapi/flavor/rt-preempt.c | 5 +++-- src/rtapi/tests/rtapi_flavor.c | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/rtapi/flavor/rt-preempt.c b/src/rtapi/flavor/rt-preempt.c index 90187394d2..7b82956d9f 100644 --- a/src/rtapi/flavor/rt-preempt.c +++ b/src/rtapi/flavor/rt-preempt.c @@ -366,7 +366,8 @@ static void *realtime_thread(void *arg) { task->name, task->cgname); } if (!(task->flags & TF_NONRT)) { - if (realtime_set_priority(task) && !flavor_descriptor->has_rt) { + if (realtime_set_priority(task) && + !(flavor_descriptor->flags && FLAVOR_IS_RT)) { // This requires privs - tell user how to obtain them rtapi_print_msg( RTAPI_MSG_ERR, @@ -499,7 +500,7 @@ int posix_wait_hook(const int flags) { FTS(ts)->wait_errors++; - if (!flavor_descriptor->has_rt) { + if (!(flavor_descriptor->flags && FLAVOR_IS_RT)) { rtapi_exception_detail_t detail = {0}; detail.task_id = task_id(task); diff --git a/src/rtapi/tests/rtapi_flavor.c b/src/rtapi/tests/rtapi_flavor.c index f4eed8e8c2..46daf04501 100644 --- a/src/rtapi/tests/rtapi_flavor.c +++ b/src/rtapi/tests/rtapi_flavor.c @@ -4,7 +4,7 @@ #include // Set this to print verbose debug messages -int debug_tests = 1; +int debug_tests = 0; #define DEBUG(args...) \ do { if (debug_tests) fprintf(stderr, args); } while (0) From 3ed066a49019c19d947575ef5e056efb50389a6f Mon Sep 17 00:00:00 2001 From: John Morris Date: Wed, 20 Feb 2019 23:16:14 +0800 Subject: [PATCH 466/516] clean up rtapi_thread_flavor, hal_proc_init/clean --- src/hal/cython/machinekit/global_data.pxd | 1 - src/hal/lib/hal_comp.c | 6 ------ src/hal/lib/hal_internal.h | 3 --- src/hal/lib/hal_lib.c | 2 -- src/hal/utils/hal_comp.c | 6 ------ src/rtapi/rtapi_global.h | 1 - 6 files changed, 19 deletions(-) diff --git a/src/hal/cython/machinekit/global_data.pxd b/src/hal/cython/machinekit/global_data.pxd index b586727533..b8439937f9 100644 --- a/src/hal/cython/machinekit/global_data.pxd +++ b/src/hal/cython/machinekit/global_data.pxd @@ -6,7 +6,6 @@ cdef extern from "rtapi.h": int instance_id char *instance_name - int rtapi_thread_flavor int rt_msg_level int user_msg_level diff --git a/src/hal/lib/hal_comp.c b/src/hal/lib/hal_comp.c index b30f58444a..d9e92ba2e6 100644 --- a/src/hal/lib/hal_comp.c +++ b/src/hal/lib/hal_comp.c @@ -154,12 +154,6 @@ hal_comp_t *halg_xinitfv(const int use_hal_mutex, HALFAIL_NULL(retval, "could not init HAL shared memory rc=%d", retval); } - retval = hal_proc_init(); - if (retval) { - rtapi_exit(lib_module_id); - lib_module_id = -1; - HALFAIL_NULL(retval, "could not init /proc files"); - } #endif // record hal_lib comp_id lib_module_id = comp_id; diff --git a/src/hal/lib/hal_internal.h b/src/hal/lib/hal_internal.h index 58a1b1ff87..82a6c050b0 100644 --- a/src/hal/lib/hal_internal.h +++ b/src/hal/lib/hal_internal.h @@ -55,9 +55,6 @@ int free_ring_struct(hal_ring_t *hrptr); void free_group_struct(hal_group_t * group); int pin_by_signal_callback(hal_object_ptr o, foreach_args_t *args); -void hal_proc_clean(void); -int hal_proc_init(void); - void free_thread_struct(hal_thread_t * thread); extern int lib_module_id; extern int lib_mem_id; diff --git a/src/hal/lib/hal_lib.c b/src/hal/lib/hal_lib.c index 1860316091..6363a4c3c4 100644 --- a/src/hal/lib/hal_lib.c +++ b/src/hal/lib/hal_lib.c @@ -139,7 +139,6 @@ int lib_mem_id = -1; /* RTAPI shmem ID for library module */ grabbed the hal_data mutex. */ - /*********************************************************************** * PUBLIC (API) FUNCTION CODE * ************************************************************************/ @@ -196,7 +195,6 @@ int rtapi_app_main(void) void rtapi_app_exit(void) { HALDBG("removing RT hal_lib support"); - hal_proc_clean(); halg_exit_thread(1, NULL); // this halg_exit() will unload hal_lib and detach the HAL shm segment // to avoid the chicken-and-egg problem of locking hal_data, and diff --git a/src/hal/utils/hal_comp.c b/src/hal/utils/hal_comp.c index 0a9a58adca..912c635936 100644 --- a/src/hal/utils/hal_comp.c +++ b/src/hal/utils/hal_comp.c @@ -153,12 +153,6 @@ hal_comp_t *halg_xinitfv(const int use_hal_mutex, HALFAIL_NULL(retval, "could not init HAL shared memory rc=%d", retval); } - retval = hal_proc_init(); - if (retval) { - rtapi_exit(lib_module_id); - lib_module_id = -1; - HALFAIL_NULL(retval, "could not init /proc files"); - } #endif // record hal_lib comp_id lib_module_id = comp_id; diff --git a/src/rtapi/rtapi_global.h b/src/rtapi/rtapi_global.h index 16a56685a2..0a1ebce1ed 100644 --- a/src/rtapi/rtapi_global.h +++ b/src/rtapi/rtapi_global.h @@ -82,7 +82,6 @@ typedef struct { // this is set once on startup by rtapi_msgd and is to be considered a constant // throughout the session: int instance_id; - int rtapi_thread_flavor; // runtime parameters int rt_msg_level; // message level for RT From 30881737d8fdf94e3fe2e45a09658aa296182f7b Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 21 Feb 2019 09:50:38 +0800 Subject: [PATCH 467/516] Separate out rtapi.so again It didn't work to directly link the rtapi.so sources into rtapi_app. As `rtapi/Submakefile` explains, `rtapi_app` likes to keep its symbols to itself, and any symbols needed from imported modules are explicitly exported with `EXPORT_SYMBOL()` in the module source, and imported into `rtapi_app` with `dlsym()`. This spins out `rtapi.so` again, and the symbol fixes come next. --- src/rtapi/Submakefile | 59 ++++++++++++++------------- src/rtapi/{rtapi_common.c => rtapi.c} | 13 +++++- src/rtapi/rtapi_app.cc | 1 + 3 files changed, 43 insertions(+), 30 deletions(-) rename src/rtapi/{rtapi_common.c => rtapi.c} (98%) diff --git a/src/rtapi/Submakefile b/src/rtapi/Submakefile index 34538fbe2e..02cf284efe 100644 --- a/src/rtapi/Submakefile +++ b/src/rtapi/Submakefile @@ -38,13 +38,13 @@ modclean-rtapi: ########################################## -# defaults for all thread styles +# Common to both RTAPI and ULAPI # Sources/objects included in both RTAPI and ULAPI XXAPI_COMMON_SRCS := $(patsubst %, rtapi/%, \ + rtapi.c \ rtapi_support.c \ rtapi_hexdump.c \ - rtapi_common.c \ rtapi_task.c \ rtapi_shmem.c \ rtapi_time.c \ @@ -75,7 +75,7 @@ USERSRCS += $(ULAPI_SRCS) ULAPI_LIB := ../lib/liblinuxcnculapi.so -$(call TOOBJSDEPS, $(ULAPI_SRCS)): EXTRAFLAGS += -DULAPI -fPIC +$(call TOOBJSDEPS, $(ULAPI_SRCS)): EXTRAFLAGS += -fPIC $(ULAPI_LIB).0: $(call TOOBJS, $(ULAPI_SRCS)) \ ../lib/liblinuxcncini.so \ @@ -90,7 +90,31 @@ $(ULAPI_LIB).0: $(call TOOBJS, $(ULAPI_SRCS)) \ TARGETS += $(ULAPI_LIB) $(ULAPI_LIB).0 ################################################################## -# rtapi_app - now all thread styles +# rtapi.so +################################################################## + +$(eval $(call c_comp_build_rules,rtapi/rtapi.o,$(patsubst %.c,%.o,\ + $(XXAPI_COMMON_SRCS) \ + rtapi/flavor/rt-preempt.c \ + $(XENOMAI_SRC) \ + rtapi/rtapi_pci.c \ + machinetalk/support/nanopb.c \ + machinetalk/nanopb/pb_decode.c \ + machinetalk/nanopb/pb_encode.c \ + machinetalk/nanopb/pb_common.c \ +))) + +# compile userland PCI support with udev cflags if any +$(call TORTOBJS, rtapi/rtapi_pci.c): EXTRAFLAGS += $(LIBUDEV_CFLAGS) + +$(call TORTOBJS, rtapi/flavor/rt-preempt.c): \ + EXTRAFLAGS += $(LIBCGROUP_CFLAGS) + +# userland PCI support needs -ludev for rtapi.so +$(RTLIBDIR)/rtapi.so: EXTRA_LDFLAGS += $(LIBUDEV_LIBS) $(RT_LDFLAGS) + +################################################################## +# rtapi_app ################################################################## # rtapi_app # @@ -178,21 +202,10 @@ TARGETS += $(ULAPI_LIB) $(ULAPI_LIB).0 # could resolve first instead of with the RT symbol space, which is undesirable. -RTAPI_LIB_SRCS := \ - $(XXAPI_COMMON_SRCS) \ - rtapi/rtapi_pci.c \ - rtapi/flavor/rt-preempt.c \ - $(XENOMAI_SRC) \ - machinetalk/support/nanopb.c \ - machinetalk/nanopb/pb_decode.c \ - machinetalk/nanopb/pb_encode.c \ - machinetalk/nanopb/pb_common.c - -# Build RTAPI_LIB_SRCS with -DRTAPI -RTSRCS += $(RTAPI_LIB_SRCS) - RTAPI_APP_SRCS := \ - rtapi/rtapi_app.cc + rtapi/rtapi_app.cc \ + rtapi/rtapi_support.c \ + rtapi/rtapi_compat.c USERSRCS += $(RTAPI_APP_SRCS) @@ -205,17 +218,7 @@ endif $(call TOOBJSDEPS, rtapi/rtapi_app.cc): \ EXTRAFLAGS = $(PROTOBUF_CFLAGS) $(CZMQ_CFLAGS) $(LTTNG_UST_CFLAGS) -$(call TOOBJSDEPS, rtapi/rtapi_app.cc): \ - ../include/machinetalk/protobuf/message.pb.h - -$(call TOOBJSDEPS, rtapi/flavor/rt-preempt.c): \ - EXTRAFLAGS += $(LIBCGROUP_CFLAGS) - -# compile userland PCI support with udev cflags -$(call TOOBJSDEPS, rtapi/rtapi_pci.c): EXTRAFLAGS += $(LIBUDEV_CFLAGS) - ../libexec/rtapi_app: \ - $(call TORTOBJS, $(RTAPI_LIB_SRCS)) \ $(call TOOBJS, $(RTAPI_APP_SRCS)) \ ../lib/liblinuxcncini.so.0 \ ../lib/liblinuxcncshm.so \ diff --git a/src/rtapi/rtapi_common.c b/src/rtapi/rtapi.c similarity index 98% rename from src/rtapi/rtapi_common.c rename to src/rtapi/rtapi.c index 2515ae8ab2..2db69f7340 100644 --- a/src/rtapi/rtapi_common.c +++ b/src/rtapi/rtapi.c @@ -56,7 +56,11 @@ ringbuffer_t rtapi_message_buffer; // error ring access strcuture static int ulapi_debug = RTAPI_MSG_NONE; #endif -#define LOGTAG (flavor_feature(NULL, FLAVOR_NOT_RTAPI) ? "ULAPI" : "RTAPI") +#ifdef RTAPI +#define LOGTAG "ULAPI" +#else +#define LOGTAG "RTAPI" +#endif int shmdrv_loaded; // set in rtapi_app_main FIXME long page_size; // set in rtapi_app_main @@ -165,7 +169,7 @@ int rtapi_module_init() rtapi_print_msg(RTAPI_MSG_DBG,"%s:%d %s %s init\n", LOGTAG, rtapi_instance, - flavor_descriptor->name, + flavor_name(NULL), GIT_VERSION); // attach to global segment which rtapi_msgd owns and already @@ -309,3 +313,8 @@ int rtapi_next_handle(void) { return rtapi_add_and_fetch(1, &global_data->next_handle); } + +#ifdef RTAPI +EXPORT_SYMBOL(rtapi_app_main); +EXPORT_SYMBOL(rtapi_app_exit); +#endif diff --git a/src/rtapi/rtapi_app.cc b/src/rtapi/rtapi_app.cc index c11e4b06e8..c7fb049381 100644 --- a/src/rtapi/rtapi_app.cc +++ b/src/rtapi/rtapi_app.cc @@ -88,6 +88,7 @@ using namespace google::protobuf; #define BACKGROUND_TIMER 1000 #define HALMOD "hal_lib" +#define RTAPIMOD "rtapi" using namespace std; From 1eabf499e21d3fde14a67832f136b40f1f30d5a3 Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 21 Feb 2019 09:58:13 +0800 Subject: [PATCH 468/516] Clean up remaining `flavor_descriptor` references Force all flavor access to go through wrappers --- src/rtapi/flavor/rtapi_flavor_hook_wrappers.c | 17 ++++++++++--- src/rtapi/rtapi_app.cc | 6 +---- src/rtapi/rtapi_compat.c | 1 - src/rtapi/rtapi_task.c | 25 +++++-------------- src/rtapi/rtapi_time.c | 2 +- 5 files changed, 21 insertions(+), 30 deletions(-) diff --git a/src/rtapi/flavor/rtapi_flavor_hook_wrappers.c b/src/rtapi/flavor/rtapi_flavor_hook_wrappers.c index 39a999eacb..4c82f72d92 100644 --- a/src/rtapi/flavor/rtapi_flavor_hook_wrappers.c +++ b/src/rtapi/flavor/rtapi_flavor_hook_wrappers.c @@ -108,7 +108,7 @@ int flavor_task_resume_hook( if (f->task_resume_hook) return f->task_resume_hook(task, task_id); else - return 0; + return -ENOSYS; // Unimplemented } void flavor_task_delay_hook(flavor_descriptor_ptr f, long int nsec) { @@ -135,17 +135,26 @@ long long int flavor_get_clocks_hook(flavor_descriptor_ptr f) int flavor_task_self_hook(flavor_descriptor_ptr f) { SET_FLAVOR_DESCRIPTOR_DEFAULT(); - return f->task_self_hook(); + if (flavor_descriptor->task_self_hook) + return f->task_self_hook(); + else + return -ENOSYS; } long long flavor_task_pll_get_reference_hook(flavor_descriptor_ptr f) { SET_FLAVOR_DESCRIPTOR_DEFAULT(); - return f->task_pll_get_reference_hook(); + if (flavor_descriptor->task_pll_get_reference_hook) + return f->task_pll_get_reference_hook(); + else + return 0; } int flavor_task_pll_set_correction_hook(flavor_descriptor_ptr f, long value) { SET_FLAVOR_DESCRIPTOR_DEFAULT(); - return f->task_pll_set_correction_hook(value); + if (flavor_descriptor->task_pll_set_correction_hook) + return f->task_pll_set_correction_hook(value); + else + return 0; } const char * flavor_name(flavor_descriptor_ptr f) diff --git a/src/rtapi/rtapi_app.cc b/src/rtapi/rtapi_app.cc index c7fb049381..05243f24b2 100644 --- a/src/rtapi/rtapi_app.cc +++ b/src/rtapi/rtapi_app.cc @@ -77,7 +77,7 @@ using namespace google::protobuf; #include "rtapi_global.h" #include "rtapi_compat.h" #include "rtapi_export.h" -#include "rtapi_flavor.h" // flavor_descriptor +#include "rtapi_flavor.h" // flavor_* #include "hal.h" #include "hal_priv.h" #include "shmdrv.h" @@ -1374,10 +1374,6 @@ static int harden_rt() } } - // Check that configured flavor can run - // FIXME is this redundant? Where is this configured? - flavor_descriptor->can_run_flavor(); - #if defined(__x86_64__) || defined(__i386__) // this is a bit of a shotgun approach and should be made more selective diff --git a/src/rtapi/rtapi_compat.c b/src/rtapi/rtapi_compat.c index d050e2a4d9..3675168e0b 100644 --- a/src/rtapi/rtapi_compat.c +++ b/src/rtapi/rtapi_compat.c @@ -98,7 +98,6 @@ int get_rtapi_config(char *result, const char *param, int n) return 0; } -//int procfs_cmd(const char *path, const char *format, ...) // whatever is written is printf-style int rtapi_fs_write(const char *path, const char *format, ...) { diff --git a/src/rtapi/rtapi_task.c b/src/rtapi/rtapi_task.c index fa0f368e19..71e6878999 100644 --- a/src/rtapi/rtapi_task.c +++ b/src/rtapi/rtapi_task.c @@ -31,7 +31,7 @@ #include "config.h" // build configuration #include "rtapi.h" // these functions #include "rtapi_common.h" // RTAPI macros and decls -#include "rtapi_flavor.h" // flavor_descriptor +#include "rtapi_flavor.h" // flavor_* /* These functions are completely different between each userland @@ -156,7 +156,7 @@ int rtapi_task_new(const rtapi_task_args_t *args) { "%s:%d", args->name, rtapi_instance); task->name[sizeof(task->name) - 1] = '\0'; - /* userland threads: flavor_descriptor->task_new_hook() should perform any + /* userland threads: flavor_task_new_hook() should perform any thread system-specific tasks, and return task_id or an error code back to the caller (how do we know the diff between an error and a task_id???). */ @@ -280,33 +280,20 @@ int rtapi_task_resume(int task_id) { if (task->magic != TASK_MAGIC) return -EINVAL; - if (flavor_descriptor->task_resume_hook) - return flavor_descriptor->task_resume_hook(task,task_id); - - return -ENOSYS; + return flavor_task_resume_hook(NULL, task, task_id); } int rtapi_task_self(void) { - if (flavor_descriptor->task_self_hook) - return flavor_descriptor->task_self_hook(); - else - /* not implemented */ - return -EINVAL; + return flavor_task_self_hook(NULL); } long long rtapi_task_pll_get_reference(void) { - if (flavor_descriptor->task_pll_get_reference_hook) - return flavor_descriptor->task_pll_get_reference_hook(); - else - return 0; + return flavor_task_pll_get_reference_hook(NULL); } int rtapi_task_pll_set_correction(long value) { - if (flavor_descriptor->task_pll_set_correction_hook) - return flavor_descriptor->task_pll_set_correction_hook(value); - else - return 0; + return flavor_task_pll_set_correction_hook(NULL, value); } diff --git a/src/rtapi/rtapi_time.c b/src/rtapi/rtapi_time.c index 28fe1f433c..7f30ac069f 100644 --- a/src/rtapi/rtapi_time.c +++ b/src/rtapi/rtapi_time.c @@ -24,7 +24,7 @@ #include "config.h" // build configuration #include "rtapi.h" // these functions #include "rtapi_common.h" // these functions -#include "rtapi_flavor.h" // flavor_descriptor +#include "rtapi_flavor.h" // flavor_* #include // clock_getres(), clock_gettime() From 299cb8aeef63162ec5975fb0e1007a1c47fedb78 Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 21 Feb 2019 10:03:39 +0800 Subject: [PATCH 469/516] flavor_names() only returns runnable flavors Don't report flavors if they can't actually be run --- src/rtapi/flavor/rtapi_flavor.c | 14 ++--- src/rtapi/tests/rtapi_flavor.c | 90 +++++++++++++++++++++++---------- 2 files changed, 72 insertions(+), 32 deletions(-) diff --git a/src/rtapi/flavor/rtapi_flavor.c b/src/rtapi/flavor/rtapi_flavor.c index 0757378c9c..5743a99c87 100644 --- a/src/rtapi/flavor/rtapi_flavor.c +++ b/src/rtapi/flavor/rtapi_flavor.c @@ -51,12 +51,14 @@ static flavor_descriptor_ptr flavor_list[] = { const char * flavor_names(flavor_descriptor_ptr ** fd) { const char * name; - if (*fd == NULL) - // Init to beginning of list - *fd = flavor_list; - else - // Go to next in list - (*fd)++; + do { + if (*fd == NULL) + // Init to beginning of list + *fd = flavor_list; + else + // Go to next in list + (*fd)++; + } while (**fd != NULL && !flavor_can_run_flavor(**fd)); if (**fd == NULL) // End of list; no name diff --git a/src/rtapi/tests/rtapi_flavor.c b/src/rtapi/tests/rtapi_flavor.c index 46daf04501..d950ba625e 100644 --- a/src/rtapi/tests/rtapi_flavor.c +++ b/src/rtapi/tests/rtapi_flavor.c @@ -8,6 +8,32 @@ int debug_tests = 0; #define DEBUG(args...) \ do { if (debug_tests) fprintf(stderr, args); } while (0) +/******************************************************************/ +// Mock functions + +int __wrap_flavor_can_run_flavor(flavor_descriptor_ptr f) +{ + int ret = mock(); + if (f == NULL) + DEBUG("mock: flavor_can_run_flavor(NULL) = %d\n", ret); + else + DEBUG("mock: flavor_can_run_flavor('%s') = %d\n", f->name, ret); + function_called(); + /* check_expected(f->flavor_id); */ + check_expected_ptr(f); + return ret; +} + +char *__wrap_getenv(const char *name) +{ + // From + function_called(); + check_expected_ptr(name); + char* ret = mock_ptr_type(char *); + DEBUG("mock: getenv(%s) = '%s'\n", name, ret); + return ret; +} + /******************************************************************/ // Tests for flavor_names @@ -32,11 +58,36 @@ static void test_flavor_names(void **state) const char* fname; int count = 0; - for (f=NULL; (fname=flavor_names(&f)); count++) + // Set up mock calls to flavor_can_run_flavor(): all runnable + expect_function_calls(__wrap_flavor_can_run_flavor, FLAVOR_NAMES_COUNT); + will_return_count(__wrap_flavor_can_run_flavor, 1, FLAVOR_NAMES_COUNT); + for (count = 0; count < FLAVOR_NAMES_COUNT; count++) + expect_value(__wrap_flavor_can_run_flavor, f, + flavor_byname(expected_flavor_names[count])); + + for (count=0; (fname=flavor_names(&f)); count++) assert_string_equal(fname, *(expected_name_ptr++)); assert_int_equal(count, FLAVOR_NAMES_COUNT); } +static void test_flavor_names_unrunnable(void **state) +{ + flavor_descriptor_ptr * f = NULL; + int count = 0; + + // Set up mock calls to flavor_can_run_flavor(): all unrunnable + expect_function_calls(__wrap_flavor_can_run_flavor, FLAVOR_NAMES_COUNT); + will_return_count(__wrap_flavor_can_run_flavor, 0, FLAVOR_NAMES_COUNT); + for (count = 0; count < FLAVOR_NAMES_COUNT; count++) + expect_value(__wrap_flavor_can_run_flavor, f, + flavor_byname(expected_flavor_names[count])); + + // Shouldn't get any names + for (count=0; flavor_names(&f); count++) + fail(); + assert_int_equal(count, 0); +} + /******************************************************************/ // Tests for flavor_byname, flavor_byid @@ -163,34 +214,10 @@ static flavor_default_test_data_t flavor_default_test_data[] = { { .getenv_ret = "END" }, // Marks end of tests }; -// Mock functions -int __wrap_flavor_can_run_flavor(flavor_descriptor_ptr f) -{ - int ret = mock(); - if (f == NULL) - DEBUG("mock: flavor_can_run_flavor(NULL) = %d\n", ret); - else - DEBUG("mock: flavor_can_run_flavor('%s') = %d\n", f->name, ret); - function_called(); - /* check_expected(f->flavor_id); */ - check_expected_ptr(f); - return ret; -} - -char *__wrap_getenv(const char *name) -{ - // From - function_called(); - check_expected_ptr(name); - char* ret = mock_ptr_type(char *); - DEBUG("mock: getenv(%s) = '%s'\n", name, ret); - return ret; -} - static void test_flavor_default_runner(flavor_default_test_data_t *td) { flavor_descriptor_ptr flavor; - DEBUG("test: Setting up ret = %d\n", td->ret); + DEBUG("test: Setting up ret = %d, exit = %d\n", td->ret, td->exit); // getenv("FLAVOR") should always be called; returns test data DEBUG("test: mock getenv(FLAVOR) = '%s'\n", td->getenv_ret); @@ -210,6 +237,16 @@ static void test_flavor_default_runner(flavor_default_test_data_t *td) expect_value(__wrap_flavor_can_run_flavor, f, flavor); will_return(__wrap_flavor_can_run_flavor, 1); } + if (td->exit == 100) { + // We don't care about these calls, for printing valid flavors + // before exit; not critical to function and hard to mock + DEBUG("test: mock flavor_can_run_flavor('%s') = 0 (any)\n", + td->getenv_ret); + expect_function_call_any(__wrap_flavor_can_run_flavor); + expect_any_count(__wrap_flavor_can_run_flavor, f, + FLAVOR_NAMES_COUNT); + will_return_always(__wrap_flavor_can_run_flavor, 1); + } if (td->exit == 101) { DEBUG("test: mock flavor_can_run_flavor('%s') = 0\n", td->getenv_ret); @@ -336,6 +373,7 @@ int main(void) const struct CMUnitTest tests[] = { cmocka_unit_test(test_flavor_names), + cmocka_unit_test(test_flavor_names_unrunnable), cmocka_unit_test(test_flavor_byname), cmocka_unit_test(test_flavor_byid), # ifdef RTAPI // Ugh From 952f4faca9e0d88b3b617d5f84dbfccba1997ca9 Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 21 Feb 2019 10:09:45 +0800 Subject: [PATCH 470/516] rtapi_app.cc: Convert rtapi_instance back to local variable Localize this symbol so we don't have to import it from rtapi.so. Name it so that it's clear how it's related to the rtapi.so version (unlike the original version). --- src/rtapi/rtapi_app.cc | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/src/rtapi/rtapi_app.cc b/src/rtapi/rtapi_app.cc index 05243f24b2..f80991f3e8 100644 --- a/src/rtapi/rtapi_app.cc +++ b/src/rtapi/rtapi_app.cc @@ -126,6 +126,7 @@ static void remove_module(std::string name); static struct rusage rusage; static unsigned long minflt, majflt; +static int rtapi_instance_loc; static int use_drivers = 0; static int foreground; static int debug; @@ -655,20 +656,20 @@ static int init_actions(int instance) static int attach_global_segment() { int retval = 0; - int globalkey = OS_KEY(GLOBAL_KEY, rtapi_instance); + int globalkey = OS_KEY(GLOBAL_KEY, rtapi_instance_loc); int size = 0; int tries = 10; // 5 sec deadline for msgd/globaldata to come up shm_common_init(); do { retval = shm_common_new(globalkey, &size, - rtapi_instance, (void **) &global_data, 0); + rtapi_instance_loc, (void **) &global_data, 0); if (retval < 0) { tries--; if (tries == 0) { syslog_async(LOG_ERR, "rtapi_app:%d: ERROR: cannot attach global segment key=0x%x %s\n", - rtapi_instance, globalkey, strerror(-retval)); + rtapi_instance_loc, globalkey, strerror(-retval)); return retval; } struct timespec ts = {0, 500 * 1000 * 1000}; //ms @@ -679,7 +680,7 @@ static int attach_global_segment() if (size < (int) sizeof(global_data_t)) { syslog_async(LOG_ERR, "rtapi_app:%d global segment size mismatch: expect >%zu got %d\n", - rtapi_instance, sizeof(global_data_t), size); + rtapi_instance_loc, sizeof(global_data_t), size); return -EINVAL; } @@ -689,12 +690,16 @@ static int attach_global_segment() if (tries == 0) { syslog_async(LOG_ERR, "rtapi_app:%d: ERROR: global segment magic not changing to ready: magic=0x%x\n", - rtapi_instance, global_data->magic); + rtapi_instance_loc, global_data->magic); return -EINVAL; } struct timespec ts = {0, 500 * 1000 * 1000}; //ms nanosleep(&ts, NULL); } + syslog_async(LOG_DEBUG, + "rtapi_app:%d: Attached global segment magic=0x%x\n", + rtapi_instance_loc, global_data->magic); + return retval; } @@ -996,7 +1001,7 @@ static int s_handle_signal(zloop_t *loop, zmq_pollitem_t *poller, void *arg) rtapi_print_msg(RTAPI_MSG_INFO, "signal %d - '%s' received, exiting", fdsi.ssi_signo, strsignal(fdsi.ssi_signo)); - exit_actions(rtapi_instance); + exit_actions(rtapi_instance_loc); interrupted = true; // make mainloop exit if (global_data) global_data->rtapi_app_pid = 0; @@ -1019,7 +1024,7 @@ s_handle_timer(zloop_t *loop, int timer_id, void *args) if (global_data->rtapi_msgd_pid == 0) { // cant log this via rtapi_print, since msgd is gone syslog_async(LOG_ERR,"rtapi_msgd went away, exiting\n"); - exit_actions(rtapi_instance); + exit_actions(rtapi_instance_loc); if (global_data) global_data->rtapi_app_pid = 0; exit(EXIT_FAILURE); @@ -1035,7 +1040,7 @@ static int mainloop(size_t argc, char **argv) static char proctitle[20]; // set new process name - snprintf(proctitle, sizeof(proctitle), "rtapi:%d",rtapi_instance); + snprintf(proctitle, sizeof(proctitle), "rtapi:%d",rtapi_instance_loc); size_t argv0_len = strlen(argv[0]); size_t procname_len = strlen(proctitle); size_t max_procname_len = (argv0_len > procname_len) ? @@ -1092,7 +1097,7 @@ static int mainloop(size_t argc, char **argv) rtapi_print_msg(RTAPI_MSG_ERR, "rtapi_app:%d need to" " 'sudo make setuid' to access I/O?\n", - rtapi_instance); + rtapi_instance_loc); global_data->rtapi_app_pid = 0; exit(EXIT_FAILURE); } @@ -1103,7 +1108,7 @@ static int mainloop(size_t argc, char **argv) rtapi_print_msg(RTAPI_MSG_ERR, "rtapi_app:%d failed to setup " "realtime environment - 'sudo make setuid' missing?\n", - rtapi_instance); + rtapi_instance_loc); global_data->rtapi_app_pid = 0; exit(retval); } @@ -1171,7 +1176,7 @@ static int mainloop(size_t argc, char **argv) { // always bind the IPC socket char uri[LINELEN]; snprintf(uri, sizeof(uri), ZMQIPC_FORMAT, - RUNDIR, rtapi_instance, "rtapi", service_uuid); + RUNDIR, rtapi_instance_loc, RTAPIMOD, service_uuid); mode_t prev = umask(S_IROTH | S_IWOTH | S_IXOTH); if ((z_port = zsock_bind(z_command, "%s", uri )) < 0) { rtapi_print_msg(RTAPI_MSG_ERR, "cannot bind IPC socket '%s' - %s\n", @@ -1202,7 +1207,7 @@ static int mainloop(size_t argc, char **argv) if (!(av_loop = avahi_czmq_poll_new(z_loop))) { rtapi_print_msg(RTAPI_MSG_ERR, "rtapi_app:%d: zeroconf: " "Failed to create avahi event loop object.", - rtapi_instance); + rtapi_instance_loc); return -1; } else { char name[255]; @@ -1218,7 +1223,7 @@ static int mainloop(size_t argc, char **argv) av_loop); if (rtapi_publisher == NULL) { rtapi_print_msg(RTAPI_MSG_ERR, "rtapi_app:%d: failed to start zeroconf publisher", - rtapi_instance); + rtapi_instance_loc); return -1; } } @@ -1227,7 +1232,7 @@ static int mainloop(size_t argc, char **argv) // report success rtapi_print_msg(RTAPI_MSG_INFO, "rtapi_app:%d ready flavor=%s gcc=%s git=%s", - rtapi_instance, flavor_descriptor->name, __VERSION__, GIT_VERSION); + rtapi_instance_loc, flavor_descriptor->name, __VERSION__, GIT_VERSION); // the RT stack is now set up and good for use global_data->rtapi_app_pid = getpid(); @@ -1350,7 +1355,7 @@ static int harden_rt() if ((fscanf(fd, "%d", &flag) == 1) && (flag == 0)) { rtapi_print_msg(RTAPI_MSG_WARN, "rtapi:%d: cannot create core dumps - /proc/sys/fs/suid_dumpable contains 0", - rtapi_instance); + rtapi_instance_loc); rtapi_print_msg(RTAPI_MSG_WARN, "you might have to run 'echo 1 > /proc/sys/fs/suid_dumpable'" " as root to enable rtapi_app core dumps"); @@ -1457,7 +1462,7 @@ int main(int argc, char **argv) break; case 'I': - rtapi_instance = atoi(optarg); + rtapi_instance_loc = atoi(optarg); break; case 'f': From a9b39eb724f05506431e5013746b6a4829d77653 Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 21 Feb 2019 10:14:35 +0800 Subject: [PATCH 471/516] Load rtapi.so and initialize flavors In `rtapi_app`, re-add the loading of `rtapi.so`. Import and run the `flavor_*()` functions needed to configure the thread flavor. Before, flavors were configured in `rtapi_compat.so`, always available all the time. Now they're configured from `rtapi.so` in order to use the `flavor_descriptor` set up there. Rearrange a few things in `rtapi_app.cc` that need flavor functions to come after `rtapi.so` is loaded. Support this in rtapi/flavor by exporting symbols, setting up function prototypes. Re-add all `EXPORT_SYMBOLS()` for `rtapi_*()` that were removed for the `rtapi_switch`. --- src/rtapi/flavor/rtapi_flavor.c | 8 ++ src/rtapi/flavor/rtapi_flavor.h | 23 ++- src/rtapi/flavor/rtapi_flavor_hook_wrappers.c | 5 + src/rtapi/rtapi.c | 11 ++ src/rtapi/rtapi_app.cc | 135 ++++++++++++------ src/rtapi/rtapi_heap.c | 15 ++ src/rtapi/rtapi_shmem.c | 10 ++ src/rtapi/rtapi_task.c | 18 +++ src/rtapi/rtapi_time.c | 8 ++ 9 files changed, 182 insertions(+), 51 deletions(-) diff --git a/src/rtapi/flavor/rtapi_flavor.c b/src/rtapi/flavor/rtapi_flavor.c index 5743a99c87..91573fdba8 100644 --- a/src/rtapi/flavor/rtapi_flavor.c +++ b/src/rtapi/flavor/rtapi_flavor.c @@ -158,3 +158,11 @@ int flavor_is_configured(void) { return flavor_descriptor != NULL; } + +#ifdef RTAPI +EXPORT_SYMBOL(flavor_names); +EXPORT_SYMBOL(flavor_is_configured); +EXPORT_SYMBOL(flavor_byname); +EXPORT_SYMBOL(flavor_default); +EXPORT_SYMBOL(flavor_install); +#endif diff --git a/src/rtapi/flavor/rtapi_flavor.h b/src/rtapi/flavor/rtapi_flavor.h index 405428ecbc..83e34de83a 100644 --- a/src/rtapi/flavor/rtapi_flavor.h +++ b/src/rtapi/flavor/rtapi_flavor.h @@ -17,6 +17,8 @@ extern "C" { // - Whether flavor runs outside RTAPI threads #define FLAVOR_NOT_RTAPI RTAPI_BIT(3) +#define MAX_FLAVOR_NAME_LEN 20 + // The exception code puts structs in shm in an opaque blob; this is used to // check the allocated storage is large enough // https://stackoverflow.com/questions/807244/ @@ -87,12 +89,17 @@ extern "C" { extern flavor_descriptor_ptr flavor_descriptor; // Wrappers around flavor_descriptor - extern const char * flavor_names(flavor_descriptor_ptr ** fd); - extern flavor_descriptor_ptr flavor_byname(const char *flavorname); + typedef const char * (flavor_names_t)(flavor_descriptor_ptr ** fd); + extern flavor_names_t flavor_names; + typedef flavor_descriptor_ptr (flavor_byname_t)(const char *flavorname); + extern flavor_byname_t flavor_byname; extern flavor_descriptor_ptr flavor_byid(rtapi_flavor_id_t flavor_id); - extern flavor_descriptor_ptr flavor_default(void); - extern int flavor_is_configured(void); - extern void flavor_install(flavor_descriptor_ptr flavor_id); + typedef flavor_descriptor_ptr (flavor_default_t)(void); + extern flavor_default_t flavor_default; + typedef int (flavor_is_configured_t)(void); + extern flavor_is_configured_t flavor_is_configured; + typedef void (flavor_install_t)(flavor_descriptor_ptr flavor_id); + extern flavor_install_t flavor_install; // Wrappers for functions in the flavor_descriptor_t extern int flavor_can_run_flavor(flavor_descriptor_ptr f); @@ -127,9 +134,11 @@ extern "C" { flavor_descriptor_ptr f, long value); // Accessors for flavor_descriptor - extern const char * flavor_name(flavor_descriptor_ptr f); + typedef const char * (flavor_name_t)(flavor_descriptor_ptr f); + extern flavor_name_t flavor_name; extern int flavor_id(flavor_descriptor_ptr f); - extern int flavor_feature(flavor_descriptor_ptr f, int feature); + typedef int (flavor_feature_t)(flavor_descriptor_ptr f, int feature); + extern flavor_feature_t flavor_feature; // Help for unit test mocking extern int flavor_mocking; diff --git a/src/rtapi/flavor/rtapi_flavor_hook_wrappers.c b/src/rtapi/flavor/rtapi_flavor_hook_wrappers.c index 4c82f72d92..53608359c0 100644 --- a/src/rtapi/flavor/rtapi_flavor_hook_wrappers.c +++ b/src/rtapi/flavor/rtapi_flavor_hook_wrappers.c @@ -174,3 +174,8 @@ int flavor_feature(flavor_descriptor_ptr f, int feature) SET_FLAVOR_DESCRIPTOR_DEFAULT(); return (f->flags & feature); } + +#ifdef RTAPI +EXPORT_SYMBOL(flavor_name); +EXPORT_SYMBOL(flavor_feature); +#endif diff --git a/src/rtapi/rtapi.c b/src/rtapi/rtapi.c index 2db69f7340..11f9f59c20 100644 --- a/src/rtapi/rtapi.c +++ b/src/rtapi/rtapi.c @@ -315,6 +315,17 @@ int rtapi_next_handle(void) } #ifdef RTAPI +EXPORT_SYMBOL(rtapi_instance); +EXPORT_SYMBOL(global_data); +EXPORT_SYMBOL(global_heap); +EXPORT_SYMBOL(rtapi_autorelease_mutex); +EXPORT_SYMBOL(init_rtapi_data); +EXPORT_SYMBOL(rtapi_module_init); EXPORT_SYMBOL(rtapi_app_main); EXPORT_SYMBOL(rtapi_app_exit); +EXPORT_SYMBOL(rtapi_init); +EXPORT_SYMBOL(rtapi_exit); +EXPORT_SYMBOL(rtapi_task_update_stats); +EXPORT_SYMBOL(rtapi_set_exception); +EXPORT_SYMBOL(rtapi_next_handle); #endif diff --git a/src/rtapi/rtapi_app.cc b/src/rtapi/rtapi_app.cc index f80991f3e8..b0a928e504 100644 --- a/src/rtapi/rtapi_app.cc +++ b/src/rtapi/rtapi_app.cc @@ -157,16 +157,23 @@ static FILE *inifp; static AvahiCzmqPoll *av_loop; #endif -// the following two variables, despite extern, are in fact private to rtapi_app -// in the sense that they are not visible in the RT space (the namespace -// of dlopen'd modules); these are supposed to be 'ships in the night' -// relative to any symbols exported by rtapi_app. -// +// RTAPI flavor functions are dynamically linked in through rtapi.so +// - Pointers to functions +flavor_name_t * flavor_name_ptr; +flavor_names_t * flavor_names_ptr; +flavor_is_configured_t * flavor_is_configured_ptr; +flavor_feature_t * flavor_feature_ptr; +flavor_byname_t * flavor_byname_ptr; +flavor_default_t * flavor_default_ptr; +flavor_install_t * flavor_install_ptr; +// - Keep track of whether pointers have been set +static int have_flavor_funcs = 0; +// - For storing the `-f` option until flavors are ready to be configured +static char flavor_name_opt[MAX_FLAVOR_NAME_LEN] = {0}; + // global_data is set in attach_global_segment() which was already // created by rtapi_msgd - -// NB: do _not_ call any rtapi_* methods before these variables are set -// except for rtapi_msg* and friends. +global_data_t *global_data; static const char *rpath; static int init_actions(int instance); static void exit_actions(int instance); @@ -174,6 +181,55 @@ static int harden_rt(void); static void stderr_rtapi_msg_handler(msg_level_t level, const char *fmt, va_list ap); static int record_instparms(char *fname, modinfo_t &mi); +static void configure_flavor(machinetalk::Container &pbreply) +{ + + // Retrieve the flavor_*_ptr() addresses so rtapi flavor functions can be + // called. + if (have_flavor_funcs) return; // Already did this + + // Load pointers +# define GET_FLAVOR_FUNC(name) do { \ + name ## _ptr = (name ## _t *)dlsym(mi.handle, #name); \ + if (name ## _ptr == NULL) { \ + const char *err = dlerror(); \ + if (err) note_printf(pbreply, "BUG: %s:", err); \ + } \ + assert(name ## _ptr != NULL); \ + } while (0) + + modinfo_t &mi = modules[RTAPIMOD]; + + dlerror(); + GET_FLAVOR_FUNC(flavor_name); + GET_FLAVOR_FUNC(flavor_names); + GET_FLAVOR_FUNC(flavor_is_configured); + GET_FLAVOR_FUNC(flavor_feature); + GET_FLAVOR_FUNC(flavor_byname); + GET_FLAVOR_FUNC(flavor_default); + GET_FLAVOR_FUNC(flavor_install); + + flavor_descriptor_ptr flavor = NULL; + if (flavor_name_opt[0]) { + // Configure flavor from -f cmdline arg + if ((flavor = (*flavor_byname_ptr)(flavor_name_opt)) == NULL) { + fprintf(stderr, "No such flavor '%s'; valid flavors are:\n", + flavor_name_opt); + flavor_descriptor_ptr * f_handle; + const char * fname; + for (f_handle=NULL; (fname=(*flavor_names_ptr)(&f_handle)); ) + fprintf(stderr, " %s\n", fname); + exit(1); + } + } else { + // Configure flavor from environment or automatically + flavor = (*flavor_default_ptr)(); // Exits on error + } + (*flavor_install_ptr)(flavor); // Exits on error + have_flavor_funcs = 1; // Don't run this again +} + + static int do_one_item(char item_type_char, const string ¶m_name, const string ¶m_value, @@ -534,8 +590,9 @@ static int do_load_cmd(int instance, // so they can be replayed before newinst record_instparms(module_path, mi); - int (*start)(void) = DLSYM(mi.handle, "rtapi_app_main"); - if (!start) { + int (*rtapi_app_main_dlsym)(void) = + DLSYM(mi.handle, "rtapi_app_main"); + if (!rtapi_app_main_dlsym) { note_printf(pbreply, "%s: dlsym: %s\n", name.c_str(), dlerror()); return -1; @@ -548,9 +605,14 @@ static int do_load_cmd(int instance, return -1; } + // Configure flavor, needed even before `rtapi_app_main_dlsym()` runs + // next. This runs at every module load, but only does anything after + // RTAPIMOD, the first module loaded. + configure_flavor(pbreply); + // need to call rtapi_app_main with as root // RT thread creation and hardening requires this - if ((result = start()) < 0) { + if ((result = rtapi_app_main_dlsym()) < 0) { note_printf(pbreply, "rtapi_app_main(%s): %d %s\n", name.c_str(), result, strerror(-result)); return result; @@ -630,6 +692,10 @@ static int init_actions(int instance) int retval; machinetalk::Container reply; + + retval = do_load_cmd(instance, RTAPIMOD, pbstringarray_t(), reply); + if (retval) + return retval; if ((retval = do_load_cmd(instance, HALMOD, pbstringarray_t(), reply))) return retval; @@ -745,7 +811,7 @@ static int rtapi_request(zloop_t *loop, zsock_t *socket, void *arg) char buffer[LINELEN]; snprintf(buffer, sizeof(buffer), "pid=%d flavor=%s gcc=%s git=%s", - getpid(),flavor_descriptor->name, __VERSION__, GIT_VERSION); + getpid(), (*flavor_name_ptr)(NULL), __VERSION__, GIT_VERSION); pbreply.add_note(buffer); pbreply.set_retcode(0); break; @@ -1084,15 +1150,17 @@ static int mainloop(size_t argc, char **argv) rtapi_set_logtag("rtapi_app"); rtapi_set_msg_level(global_data->rt_msg_level); - // check that flavor is configured - if (! flavor_is_configured()) { + // load rtapi and hal_lib + // - After this, it's safe to run any flavor_* stuff + if (init_actions(rtapi_instance_loc)) { rtapi_print_msg(RTAPI_MSG_ERR, - "FATAL: Flavor unconfigured\n"); - exit(EXIT_FAILURE); + "init_actions() failed\n"); + global_data->rtapi_app_pid = 0; + exit(1); } // make sure we're setuid root when we need to - if (use_drivers || flavor_feature(NULL, FLAVOR_DOES_IO)) { + if (use_drivers || (*flavor_feature_ptr)(NULL, FLAVOR_DOES_IO)) { if (geteuid() != 0) { rtapi_print_msg(RTAPI_MSG_ERR, "rtapi_app:%d need to" @@ -1113,14 +1181,6 @@ static int mainloop(size_t argc, char **argv) exit(retval); } - // load rtapi and hal_lib - if (init_actions(rtapi_instance)) { - rtapi_print_msg(RTAPI_MSG_ERR, - "init_actions() failed\n"); - global_data->rtapi_app_pid = 0; - exit(1); - } - // block all signal delivery through signal handler // since we're using signalfd() // do this here so child threads inherit the sigmask @@ -1231,8 +1291,9 @@ static int mainloop(size_t argc, char **argv) #endif // report success - rtapi_print_msg(RTAPI_MSG_INFO, "rtapi_app:%d ready flavor=%s gcc=%s git=%s", - rtapi_instance_loc, flavor_descriptor->name, __VERSION__, GIT_VERSION); + rtapi_print_msg( + RTAPI_MSG_INFO, "rtapi_app:%d ready flavor=%s gcc=%s git=%s", + rtapi_instance_loc, (*flavor_name_ptr)(NULL), __VERSION__, GIT_VERSION); // the RT stack is now set up and good for use global_data->rtapi_app_pid = getpid(); @@ -1262,7 +1323,7 @@ static int configure_memory(void) unsigned int i, pagesize; char *buf; - if (use_drivers || flavor_feature(NULL, FLAVOR_DOES_IO)) { + if (use_drivers || (*flavor_feature_ptr)(NULL, FLAVOR_DOES_IO)) { // Realtime tweak requires privs /* Lock all memory. This includes all current allocations (BSS/data) * and future allocations. */ @@ -1386,7 +1447,7 @@ static int harden_rt() // guaranteed the process executing e.g. hal_parport's rtapi_app_main is // the same process which starts the RT threads, causing hal_parport // thread functions to fail on inb/outb - if (use_drivers || flavor_feature(NULL, FLAVOR_DOES_IO)) { + if (use_drivers || (*flavor_feature_ptr)(NULL, FLAVOR_DOES_IO)) { if (iopl(3) < 0) { rtapi_print_msg(RTAPI_MSG_ERR, "cannot gain I/O privileges - " @@ -1429,8 +1490,6 @@ int main(int argc, char **argv) uuid_unparse(process_uuid, process_uuid_str); int option = LOG_NDELAY; - flavor_descriptor_ptr flavor = NULL; - while (1) { int option_index = 0; int curind = optind; @@ -1466,15 +1525,7 @@ int main(int argc, char **argv) break; case 'f': - if ((flavor = flavor_byname(optarg)) == NULL) { - fprintf(stderr, "no such flavor: '%s' -- valid flavors are:\n", - optarg); - flavor_descriptor_ptr * flavor_handle; - const char * fname; - for (flavor_handle=NULL; (fname=flavor_names(&flavor_handle)); ) - fprintf(stderr, " %s\n", fname); - exit(1); - } + strncpy(flavor_name_opt, optarg, MAX_FLAVOR_NAME_LEN); break; case 'U': @@ -1539,10 +1590,6 @@ int main(int argc, char **argv) } #endif - // Set flavor - if (!flavor) flavor = flavor_default(); // Exits on error - flavor_install(flavor); // Exits on error - // the actual checking for setuid happens in harden_rt() (if needed) if (!foreground && (getuid() > 0)) { pid_t pid1; diff --git a/src/rtapi/rtapi_heap.c b/src/rtapi/rtapi_heap.c index 8a4fac8628..6717c9e14a 100644 --- a/src/rtapi/rtapi_heap.c +++ b/src/rtapi/rtapi_heap.c @@ -375,3 +375,18 @@ size_t rtapi_heap_status(struct rtapi_heap *h, } } } + + +#ifdef RTAPI +EXPORT_SYMBOL(rtapi_malloc); +EXPORT_SYMBOL(rtapi_malloc_aligned); +EXPORT_SYMBOL(rtapi_free); +EXPORT_SYMBOL(rtapi_allocsize); +EXPORT_SYMBOL(rtapi_calloc); +EXPORT_SYMBOL(rtapi_realloc); +EXPORT_SYMBOL(rtapi_heap_walk_freelist); +EXPORT_SYMBOL(rtapi_heap_addmem); +EXPORT_SYMBOL(rtapi_heap_init); +EXPORT_SYMBOL(rtapi_heap_setflags); +EXPORT_SYMBOL(rtapi_heap_status); +#endif diff --git a/src/rtapi/rtapi_shmem.c b/src/rtapi/rtapi_shmem.c index a88ac29e4d..f480c1efea 100644 --- a/src/rtapi/rtapi_shmem.c +++ b/src/rtapi/rtapi_shmem.c @@ -199,3 +199,13 @@ int rtapi_shmem_getptr(int handle, void **ptr, unsigned long int *size) { int rtapi_shmem_delete(int handle, int module_id) { return rtapi_shmem_delete_inst(handle, rtapi_instance, module_id); } + +#ifdef RTAPI +EXPORT_SYMBOL(rtapi_shmem_new_inst); +EXPORT_SYMBOL(rtapi_shmem_getptr_inst); +EXPORT_SYMBOL(rtapi_shmem_delete_inst); +EXPORT_SYMBOL(rtapi_shmem_exists); +EXPORT_SYMBOL(rtapi_shmem_new); +EXPORT_SYMBOL(rtapi_shmem_getptr); +EXPORT_SYMBOL(rtapi_shmem_delete); +#endif diff --git a/src/rtapi/rtapi_task.c b/src/rtapi/rtapi_task.c index 71e6878999..e93142109e 100644 --- a/src/rtapi/rtapi_task.c +++ b/src/rtapi/rtapi_task.c @@ -298,3 +298,21 @@ int rtapi_task_pll_set_correction(long value) { #endif /* RTAPI */ + + +#ifdef RTAPI +EXPORT_SYMBOL(rtapi_prio_highest); +EXPORT_SYMBOL(rtapi_prio_lowest); +EXPORT_SYMBOL(rtapi_prio_next_higher); +EXPORT_SYMBOL(rtapi_prio_next_lower); +EXPORT_SYMBOL(rtapi_task_new); +EXPORT_SYMBOL(rtapi_task_delete); +EXPORT_SYMBOL(rtapi_task_start); +EXPORT_SYMBOL(rtapi_task_stop); +EXPORT_SYMBOL(rtapi_task_pause); +EXPORT_SYMBOL(rtapi_wait); +EXPORT_SYMBOL(rtapi_task_resume); +EXPORT_SYMBOL(rtapi_task_self); +EXPORT_SYMBOL(rtapi_task_pll_get_reference); +EXPORT_SYMBOL(rtapi_task_pll_set_correction); +#endif diff --git a/src/rtapi/rtapi_time.c b/src/rtapi/rtapi_time.c index 7f30ac069f..478a042b17 100644 --- a/src/rtapi/rtapi_time.c +++ b/src/rtapi/rtapi_time.c @@ -119,3 +119,11 @@ long long int rtapi_get_clocks(void) { } return res; } + +#ifdef RTAPI +EXPORT_SYMBOL(rtapi_clock_set_period); +EXPORT_SYMBOL(rtapi_delay); +EXPORT_SYMBOL(rtapi_delay_max); +EXPORT_SYMBOL(rtapi_get_time); +EXPORT_SYMBOL(rtapi_get_clocks); +#endif From c8b405e4fdf1f77eb8f610bb36f47b569c99d16d Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 21 Feb 2019 11:26:36 +0800 Subject: [PATCH 472/516] scripts/realtime: Tweak setuid error message --- scripts/realtime.in | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/scripts/realtime.in b/scripts/realtime.in index a91e16139a..98f9e9c6e9 100644 --- a/scripts/realtime.in +++ b/scripts/realtime.in @@ -32,6 +32,12 @@ if ! test -x "$INIVAR"; then exit 1 fi +# Catch this common error early on for RIP builds +if test "$($INIVAR -var RUN_IN_PLACE -ini $RTAPI_INI)" = yes \ + -a ! -u ${rtapi_app}; then + echo "Warning - ${rtapi_app} not setuid; run 'sudo make setuid'" >&2 +fi + # Helper function to get variables from config getvar() { # getvar @@ -40,13 +46,6 @@ getvar() { eval "$var='$($INIVAR -var $var -ini $RTAPI_INI 2>/dev/null)'" } -# catch this common error early on: -if ! test -u ${rtapi_app} -then - echo Warning - ${rtapi_app} not setuid >&2 - echo "'sudo make setuid' missing?" >&2 -fi - if [ "$HAL_SIZE" == "" ] ; then getvar HAL_SIZE fi From b9d22eba81ca3a90de22fb3aed4a32fd29d0ff02 Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 21 Feb 2019 12:30:56 +0800 Subject: [PATCH 473/516] rtapi_compat.c: Fix module path Error: stat: No such file or directory --- src/rtapi/rtapi_compat.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rtapi/rtapi_compat.c b/src/rtapi/rtapi_compat.c index 3675168e0b..51aaf0ccb7 100644 --- a/src/rtapi/rtapi_compat.c +++ b/src/rtapi/rtapi_compat.c @@ -310,7 +310,7 @@ int rtapi_get_tags(const char *mod_name) perror("cant get RTLIB_DIR ?\n"); return -1; } - strcat(modpath,"/"); + strcat(modpath,"/modules/"); strcat(modpath,mod_name); strcat(modpath, ".so"); From cf801df180f9b264b65ceb66fbec130dedff6866 Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 21 Feb 2019 12:34:26 +0800 Subject: [PATCH 474/516] rtapi_compat.c: More meaningful error messages Save someone else 25 minutes of tracking down ungreppable error messages --- src/rtapi/rtapi_compat.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/rtapi/rtapi_compat.c b/src/rtapi/rtapi_compat.c index 51aaf0ccb7..fdb4f6b004 100644 --- a/src/rtapi/rtapi_compat.c +++ b/src/rtapi/rtapi_compat.c @@ -170,17 +170,17 @@ int get_elf_section(const char *const fname, const char *section_name, void **de struct stat st; if (stat(fname, &st) != 0) { - perror("stat"); + perror("rtapi_compat.c: get_elf_section() stat"); return -1; } int fd = open(fname, O_RDONLY); if (fd < 0) { - perror("open"); + perror("rtapi_compat.c: get_elf_section() open"); return fd; } char *p = mmap(0, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0); if (p == NULL) { - perror("mmap"); + perror("rtapi_compat.c: get_elf_section() mmap"); close(fd); return -1; } @@ -202,7 +202,7 @@ int get_elf_section(const char *const fname, const char *section_name, void **de if (dest) { *dest = malloc(size); if (*dest == NULL) { - perror("malloc"); + perror("rtapi_compat.c: get_elf_section() malloc"); size = -1; break; } @@ -230,7 +230,7 @@ int get_elf_section(const char *const fname, const char *section_name, void **de if (dest) { *dest = malloc(size); if (*dest == NULL) { - perror("malloc"); + perror("rtapi_compat.c: get_elf_section() malloc"); size = -1; break; } @@ -264,7 +264,7 @@ const char **get_caps(const char *const fname) const char **rv = malloc(sizeof(char*) * (n+1)); if (rv == NULL) { - perror("malloc"); + perror("rtapi_compat.c: get_caps() malloc"); return NULL; } n = 0; @@ -307,7 +307,7 @@ int rtapi_get_tags(const char *mod_name) char *cp1 = ""; if (get_rtapi_config(modpath,"RTLIB_DIR",PATH_MAX) != 0) { - perror("cant get RTLIB_DIR ?\n"); + perror("rtapi_compat.c: Can't get RTLIB_DIR"); return -1; } strcat(modpath,"/modules/"); From 4f868ceaa026c1b6229236011e44e7831fbefc2d Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 21 Feb 2019 12:35:24 +0800 Subject: [PATCH 475/516] rtapi.c: Install "ulapi" flavor in rtapi_app_main() --- src/rtapi/rtapi.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/rtapi/rtapi.c b/src/rtapi/rtapi.c index 11f9f59c20..9f1733214a 100644 --- a/src/rtapi/rtapi.c +++ b/src/rtapi/rtapi.c @@ -156,6 +156,9 @@ int rtapi_module_init() if (debug_env) ulapi_debug = atoi(debug_env); rtapi_set_msg_level(ulapi_debug); + + // Set up the ulapi flavor + flavor_install(flavor_byname("ulapi")); #endif int globalkey = OS_KEY(GLOBAL_KEY, rtapi_instance); From ca6c15e2f4711ae78aa28ba5ec27cbbb280d633d Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 21 Feb 2019 13:51:22 +0800 Subject: [PATCH 476/516] Makefile tweaks --- src/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Makefile b/src/Makefile index 8509316055..5fbe5239e8 100755 --- a/src/Makefile +++ b/src/Makefile @@ -770,7 +770,7 @@ clean: depclean modclean docclean # So that nothing is built as root, this rule does not depend on the touched # files (Note that files in depends/ might be rebuilt, and there's little that # can be done about it) -fix_perms = test -f $(1) && chown root $(1) && chmod 4750 $(1) || true +fix_perms = test ! -f $(1) || (chown root $(1) && chmod 4750 $(1)) ifeq ($(BUILD_DRIVERS),yes) setuid: @@ -778,7 +778,7 @@ setuid: $(call fix_perms,../libexec/pci_write) $(call fix_perms,../libexec/rtapi_app) # check system configuration: logging, ulimits, udev - @-../scripts/check-system-configuration.sh $(CHECK_KFLAV_SWITCH) + @-../scripts/check-system-configuration.sh else setuid: @echo "'make setuid' is not needed if hardware drivers are not used" From e9e5f07073bbe4b083b903c1f45dbc0896319319 Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 21 Feb 2019 13:51:41 +0800 Subject: [PATCH 477/516] halcmd_commands.c tweak whitespace --- src/hal/utils/halcmd_commands.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hal/utils/halcmd_commands.c b/src/hal/utils/halcmd_commands.c index a4455653a5..7a8ec93520 100644 --- a/src/hal/utils/halcmd_commands.c +++ b/src/hal/utils/halcmd_commands.c @@ -4357,7 +4357,7 @@ int do_newthread_cmd(char *name, char *args[]) continue; } if (sscanf(s, "cgname=%s", cgname) == 1) - continue; + continue; char *cp = s; per = strtol(s, &cp, 0); if ((*cp != '\0') && (!isspace(*cp))) { From b3353f48a8a23ede5a2913b48e07e253820cfe92 Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 21 Feb 2019 13:52:52 +0800 Subject: [PATCH 478/516] rt-preempt.c: Add lots of messages for failures --- src/rtapi/flavor/rt-preempt.c | 87 +++++++++++++++++++++++------------ src/rtapi/rtapi_app.cc | 2 + 2 files changed, 59 insertions(+), 30 deletions(-) diff --git a/src/rtapi/flavor/rt-preempt.c b/src/rtapi/flavor/rt-preempt.c index 7b82956d9f..d15ccdd64d 100644 --- a/src/rtapi/flavor/rt-preempt.c +++ b/src/rtapi/flavor/rt-preempt.c @@ -229,6 +229,7 @@ int posix_task_delete_hook(task_data *task, int task_id) { /* Signal thread termination and wait for the thread to exit. */ if (!extra_task_data[task_id].deleted) { + rtapi_print_msg(RTAPI_MSG_DBG, "Deleting RT thread '%s'\n", task->name); extra_task_data[task_id].deleted = 1; // pthread_cancel() will get the thread out of any blocking system @@ -366,22 +367,27 @@ static void *realtime_thread(void *arg) { task->name, task->cgname); } if (!(task->flags & TF_NONRT)) { - if (realtime_set_priority(task) && - !(flavor_descriptor->flags && FLAVOR_IS_RT)) { - // This requires privs - tell user how to obtain them - rtapi_print_msg( - RTAPI_MSG_ERR, - "to get non-preemptive scheduling with POSIX threads,"); - rtapi_print_msg( - RTAPI_MSG_ERR, - "you need to run " - "'sudo setcap cap_sys_nice=pe libexec/rtapi_app_posix'"); - rtapi_print_msg( - RTAPI_MSG_ERR, - "your might have to install setcap " - "(e.g.'sudo apt-get install libcap2-bin') to do this."); - } else - goto error; + if ((ret = realtime_set_priority(task))) { + if (!(flavor_descriptor->flags && FLAVOR_IS_RT)) { + // This requires privs - tell user how to obtain them + rtapi_print_msg( + RTAPI_MSG_ERR, + "to get non-preemptive scheduling with POSIX threads,"); + rtapi_print_msg( + RTAPI_MSG_ERR, + "you need to run " + "'sudo setcap cap_sys_nice=pe libexec/rtapi_app_posix'"); + rtapi_print_msg( + RTAPI_MSG_ERR, + "you might have to install setcap " + "(e.g.'sudo apt-get install libcap2-bin') to do this."); + } else { + rtapi_print_msg( + RTAPI_MSG_ERR, "Task %s realtime_set_priority() failed %d", + task->name, ret); + goto error; + } + } } /* We're done initializing. Open the barrier. */ @@ -424,6 +430,7 @@ static void *realtime_thread(void *arg) { return NULL; error: /* Signal that we're dead and open the barrier. */ + rtapi_print_msg(RTAPI_MSG_ERR,"Deleting task %s\n", task->name); extra_task_data[task_id(task)].deleted = 1; pthread_barrier_wait(&extra_task_data[task_id(task)].thread_init_barrier); return NULL; @@ -433,28 +440,48 @@ int posix_task_start_hook(task_data *task, int task_id) { pthread_attr_t attr; int retval; +#define TRY_OR_ERR(func_call, func_name) \ + do { \ + if ((retval = func_call)) { \ + rtapi_print_msg(RTAPI_MSG_ERR, "Thread %s %s() failed %d\n", \ + task->name, func_name, retval); \ + return -retval; \ + } \ + } while (0) + extra_task_data[task_id].deleted = 0; - pthread_barrier_init(&extra_task_data[task_id].thread_init_barrier, - NULL, 2); - pthread_attr_init(&attr); - pthread_attr_setstack(&attr, extra_task_data[task_id].stackaddr, - task->stacksize); + TRY_OR_ERR(pthread_barrier_init( + &extra_task_data[task_id].thread_init_barrier, NULL, 2), + "pthread_barrier_init"); + + TRY_OR_ERR(pthread_attr_init(&attr), "pthread_attr_init"); + + TRY_OR_ERR(pthread_attr_setstack( + &attr, extra_task_data[task_id].stackaddr, task->stacksize), + "pthread_attr_setstack"); + rtapi_print_msg(RTAPI_MSG_DBG, "About to pthread_create task %d\n", task_id); retval = pthread_create(&extra_task_data[task_id].thread, - &attr, realtime_thread, (void *)task); - rtapi_print_msg(RTAPI_MSG_DBG,"Created task %d\n", task_id); - pthread_attr_destroy(&attr); + &attr, realtime_thread, (void *)task); + + rtapi_print_msg(RTAPI_MSG_DBG, + "Created task %s (%d)\n", task->name, task_id); + TRY_OR_ERR(pthread_attr_destroy(&attr), "pthread_attr_destroy"); if (retval) { - pthread_barrier_destroy - (&extra_task_data[task_id].thread_init_barrier); - rtapi_print_msg(RTAPI_MSG_ERR, "Failed to create realtime thread\n"); - return -ENOMEM; + rtapi_print_msg(RTAPI_MSG_ERR, "Thread %s pthread_create() failed; " + "cleaning up\n", task->name); + TRY_OR_ERR(pthread_barrier_destroy + (&extra_task_data[task_id].thread_init_barrier), + "pthread_barrier_destroy"); + return -retval; } /* Wait for the thread to do basic initialization. */ pthread_barrier_wait(&extra_task_data[task_id].thread_init_barrier); - pthread_barrier_destroy(&extra_task_data[task_id].thread_init_barrier); + TRY_OR_ERR(pthread_barrier_destroy( + &extra_task_data[task_id].thread_init_barrier), + "pthread_barrier_destroy"); if (extra_task_data[task_id].deleted) { /* The thread died in the init phase. */ rtapi_print_msg(RTAPI_MSG_ERR, @@ -462,7 +489,7 @@ int posix_task_start_hook(task_data *task, int task_id) { return -ENOMEM; } rtapi_print_msg(RTAPI_MSG_DBG, - "Task %d finished its basic init\n", task_id); + "Task %s (%d) finished basic init\n", task->name, task_id); return 0; } diff --git a/src/rtapi/rtapi_app.cc b/src/rtapi/rtapi_app.cc index b0a928e504..0f89f6053c 100644 --- a/src/rtapi/rtapi_app.cc +++ b/src/rtapi/rtapi_app.cc @@ -573,6 +573,8 @@ static int do_load_cmd(int instance, if (name.find_last_of("/") != string::npos) name = name.substr(name.find_last_of("/") + 1); + rtapi_print_msg(RTAPI_MSG_DBG, "Loading from %s\n", path.c_str()); // FIXME + if (modules.count(name) == 0) { strncpy(module_path, (path + ".so").c_str(), PATH_MAX); From 5fbb1e1117015149c8cdd13993f3a349d0814544 Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 21 Feb 2019 13:53:25 +0800 Subject: [PATCH 479/516] rt-preempt.c: Fix mistake in run-time POSIX/RT_PREEMPT handling --- src/rtapi/flavor/rt-preempt.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/rtapi/flavor/rt-preempt.c b/src/rtapi/flavor/rt-preempt.c index d15ccdd64d..d390262b14 100644 --- a/src/rtapi/flavor/rt-preempt.c +++ b/src/rtapi/flavor/rt-preempt.c @@ -340,8 +340,12 @@ static void *realtime_thread(void *arg) { task_id(task), extra_task_data[task_id(task)].tid, (task->flags & TF_NONRT) ? "non-RT" : "RT"); - if (realtime_set_affinity(task)) + if ((ret = realtime_set_affinity(task))) { + rtapi_print_msg( + RTAPI_MSG_ERR, "Task '%s' realtime_set_affinity() failed %d\n", + task->name, ret); goto error; + } // cgroup cpuset if (task->cgname && task->cgname[0]) { From d2c11b00006893eaa24f89e0dc7e214fbac920a1 Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 21 Feb 2019 14:06:20 +0800 Subject: [PATCH 480/516] scripts/runtests: Add `-s` option to stop after first failure When making fundamental changes, sometimes one failed test is enough to know there's a problem, no need to spew. --- scripts/runtests | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/scripts/runtests b/scripts/runtests index 134775d9dd..8c7faed967 100755 --- a/scripts/runtests +++ b/scripts/runtests @@ -168,6 +168,9 @@ run_tests () { $testdir" echo "*** $testdir: FAIL: $reason" fi + if test $STOP = 1; then + break + fi else if [ -f $testdir/xfail ]; then echo "*** $testdir: XPASS: Passed, but was expected to fail" @@ -196,9 +199,9 @@ usage () { $P: Run HAL test suite items Usage: - $P [-n] tests + $P [-n] [-s] tests Run tests. With '-n', do not remove temporary files for successful - tests. + tests. With '-s', stop after the first error. $P -c tests Remove temporary files from an earlier test run. @@ -220,11 +223,13 @@ trap "rm -rf $TMPDIR" 0 1 2 3 9 15 CLEAN_ONLY=0 NOCLEAN=0 -while getopts cnvh opt; do +STOP=0 +while getopts cnvsh opt; do case "$opt" in c) CLEAN_ONLY=1 ;; n) NOCLEAN=1 ;; v) VERBOSE=1 ;; + s) STOP=1 ;; h|?) usage; exit 0 ;; *) usage; exit 1 ;; esac From faa02f18e0f3bb7a167585c2d9c3bb02af0223ba Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 21 Feb 2019 14:48:47 +0800 Subject: [PATCH 481/516] Fix issues with missing hostmot2 symbols --- src/Makefile | 2 +- src/hal/drivers/Submakefile | 9 ++++++++- src/rtapi/userpci/Submakefile | 10 ---------- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/Makefile b/src/Makefile index 5fbe5239e8..049f826015 100755 --- a/src/Makefile +++ b/src/Makefile @@ -246,7 +246,7 @@ TORTOBJS = $(patsubst %.cc,$(OBJDIR)/%$(2).o,$(patsubst %.c,$(OBJDIR)/%$(2).o,$( # hal/components/encoder.o hal/components/othersrc.o define c_comp_build_rules obj-m += $$(patsubst $$(dir $(1))%.o,%.o,$(1)) -$$(patsubst $$(dir $(1))%.o,%-objs,$(1)) := $(1) $(2) +$$(patsubst $$(dir $(1))%.o,%-objs,$(1)) += $(1) $(2) $$(patsubst $$(dir $(1))%.o,$(RTLIBDIR)/%.so,$(1)): \ $$(addprefix $(OBJDIR)/,$(1) $(2)) diff --git a/src/hal/drivers/Submakefile b/src/hal/drivers/Submakefile index 8570a239d3..6101ad2206 100644 --- a/src/hal/drivers/Submakefile +++ b/src/hal/drivers/Submakefile @@ -140,6 +140,9 @@ $(eval $(call c_comp_build_rules,hal/drivers/mesa-hostmot2/hostmot2.o,\ hal/drivers/mesa-hostmot2/nano_soc_adc.o \ hal/drivers/mesa-hostmot2/capsense.o \ hal/drivers/mesa-hostmot2/bitfile.o \ + rtapi/userpci/device.o \ + rtapi/userpci/firmware.o \ + rtapi/userpci/string.o \ )) $(eval $(call c_comp_build_rules,hal/drivers/mesa-hostmot2/hm2_7i43.o,\ hal/drivers/mesa-hostmot2/hm2_7i43.o \ @@ -155,7 +158,11 @@ $(eval $(call c_comp_build_rules,hal/drivers/mesa-hostmot2/hm2_pci.o, \ $(eval $(call c_comp_build_rules,hal/drivers/mesa-hostmot2/hm2_test.o, \ hal/drivers/mesa-hostmot2/bitfile.o \ )) -$(eval $(call c_comp_build_rules,hal/drivers/mesa-hostmot2/setsserial.o)) +$(eval $(call c_comp_build_rules,hal/drivers/mesa-hostmot2/setsserial.o, \ + rtapi/userpci/device.o \ + rtapi/userpci/firmware.o \ + rtapi/userpci/string.o \ +)) $(eval $(call c_comp_build_rules,hal/drivers/mesa-hostmot2/hm2_pci.o, \ hal/drivers/mesa-hostmot2/bitfile.o \ )) diff --git a/src/rtapi/userpci/Submakefile b/src/rtapi/userpci/Submakefile index dfe341d199..9102f3651f 100644 --- a/src/rtapi/userpci/Submakefile +++ b/src/rtapi/userpci/Submakefile @@ -16,16 +16,6 @@ $(USERPCI_HEADERS): ../include/userpci/%.h: rtapi/userpci/%.h SUBDIRECTORY_HEADERS += $(USERPCI_HEADERS) INSTALL_DIRS += ../include/userpci -hostmot2-objs += \ - rtapi/userpci/device.o \ - rtapi/userpci/firmware.o \ - rtapi/userpci/string.o - -setsserial-objs += \ - rtapi/userpci/device.o \ - rtapi/userpci/firmware.o \ - rtapi/userpci/string.o - clean: userpci-clean userpci-clean: rm -rf ../include/userpci From 0c57093c702acd41ae63f14f0d842a6e6f298876 Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 21 Feb 2019 14:49:30 +0800 Subject: [PATCH 482/516] Replace missing POSIX module_init_hook() pointer --- src/rtapi/flavor/rt-preempt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rtapi/flavor/rt-preempt.c b/src/rtapi/flavor/rt-preempt.c index d390262b14..bd69e55be6 100644 --- a/src/rtapi/flavor/rt-preempt.c +++ b/src/rtapi/flavor/rt-preempt.c @@ -701,7 +701,7 @@ flavor_descriptor_t flavor_posix_descriptor = { .flags = 0, .can_run_flavor = posix_can_run_flavor, .exception_handler_hook = NULL, - .module_init_hook = NULL, + .module_init_hook = posix_module_init_hook, .module_exit_hook = NULL, .task_update_stats_hook = NULL, .task_print_thread_stats_hook = rtpreempt_print_thread_stats, From c766c654bfaa30e6c11c4b47a324b4bcf0cfdf12 Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 21 Feb 2019 14:50:01 +0800 Subject: [PATCH 483/516] rtapi.c: Replace simple_strtol() function --- src/rtapi/rtapi.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/rtapi/rtapi.c b/src/rtapi/rtapi.c index 9f1733214a..d56b7a115e 100644 --- a/src/rtapi/rtapi.c +++ b/src/rtapi/rtapi.c @@ -14,9 +14,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -#ifdef ULAPI -#include -#endif +#include // strtol #include "rtapi_flavor.h" #include "config.h" @@ -317,6 +315,11 @@ int rtapi_next_handle(void) return rtapi_add_and_fetch(1, &global_data->next_handle); } +long int simple_strtol(const char *nptr, char **endptr, int base) { + return strtol(nptr, endptr, base); +} + + #ifdef RTAPI EXPORT_SYMBOL(rtapi_instance); EXPORT_SYMBOL(global_data); @@ -331,4 +334,5 @@ EXPORT_SYMBOL(rtapi_exit); EXPORT_SYMBOL(rtapi_task_update_stats); EXPORT_SYMBOL(rtapi_set_exception); EXPORT_SYMBOL(rtapi_next_handle); +EXPORT_SYMBOL(simple_strtol); #endif From 34e12d0feac6064445c789ab6c4c919b3d844c9e Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 21 Feb 2019 07:10:32 +0000 Subject: [PATCH 484/516] Re-add motmod comp build rules To conform with other modules, rename main source file to match the comp name; regenerate messages --- src/configure.ac | 2 +- src/emc/kinematics/Submakefile | 2 +- src/emc/motion/Submakefile | 13 + src/emc/motion/{motion.c => motmod.c} | 0 src/po/Submakefile | 2 +- src/po/de.po | 18128 +++++++++-------- src/po/es.po | 21517 +++++++++++--------- src/po/fi.po | 18589 ++++++++++------- src/po/fr.po | 21842 +++++++++----------- src/po/hu.po | 21178 +++++++++++--------- src/po/it.po | 25525 ++++++++++++++---------- src/po/ja.po | 20429 +++++++++++-------- src/po/pl.po | 16768 ++++++++-------- src/po/pt_BR.po | 22544 ++++++++++++--------- src/po/ro.po | 14126 ++++++++----- src/po/ru.po | 24128 ++++++++++++---------- src/po/sk.po | 21607 +++++++++++--------- src/po/sr.po | 15473 ++++++++------ src/po/sv.po | 20715 +++++++++++-------- src/po/zh_CN.po | 14685 ++++++++------ src/po/zh_HK.po | 15681 +++++++++------ src/po/zh_TW.po | 22923 ++++++++++++--------- tests/cpusets/skip | 4 +- tests/hm2-idrom/skip | 2 +- 24 files changed, 191809 insertions(+), 144074 deletions(-) rename src/emc/motion/{motion.c => motmod.c} (100%) diff --git a/src/configure.ac b/src/configure.ac index a6e70bf50c..9893ad381a 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -25,7 +25,7 @@ AC_PREREQ(2.53) AC_INIT([LinuxCNC],[m4_normalize(esyscmd(cat ../VERSION))],[emc-developers@lists.sourceforge.net]) -AC_CONFIG_SRCDIR(emc/motion/motion.c) +AC_CONFIG_SRCDIR(emc/motion/motmod.c) if test "$srcdir" != "."; then AC_MSG_ERROR([Building outside of srcdir is not supported]) fi diff --git a/src/emc/kinematics/Submakefile b/src/emc/kinematics/Submakefile index f7287e6383..a16ff90881 100644 --- a/src/emc/kinematics/Submakefile +++ b/src/emc/kinematics/Submakefile @@ -76,7 +76,7 @@ $(eval $(call c_comp_build_rules,emc/kinematics/scarakins.o, \ libnml/posemath/sincos.o \ )) $(eval $(call c_comp_build_rules,emc/kinematics/cubic.o, \ - emc/motion/motion.o \ + emc/motion/motmod.o \ emc/motion/command.o \ emc/motion/control.o \ emc/motion/homing.o \ diff --git a/src/emc/motion/Submakefile b/src/emc/motion/Submakefile index 266ef69c2c..1cfe2f4233 100644 --- a/src/emc/motion/Submakefile +++ b/src/emc/motion/Submakefile @@ -6,3 +6,16 @@ INCLUDES += emc/motion ../include/%.hh: ./emc/motion/%.hh $(ECHO) Copying header file $@ $(Q)cp $^ $@ + +$(eval $(call c_comp_build_rules,emc/motion/motmod.o, \ + emc/kinematics/cubic.o \ + emc/motion/command.o \ + emc/motion/control.o \ + emc/motion/homing.o \ + emc/motion/emcmotglb.o \ + emc/motion/emcmotutil.o \ + emc/motion/stashf.o \ + emc/motion/dbuf.o \ + libnml/posemath/_posemath.o \ + libnml/posemath/sincos.o \ +)) diff --git a/src/emc/motion/motion.c b/src/emc/motion/motmod.c similarity index 100% rename from src/emc/motion/motion.c rename to src/emc/motion/motmod.c diff --git a/src/po/Submakefile b/src/po/Submakefile index 58681baeab..1bb18f676f 100644 --- a/src/po/Submakefile +++ b/src/po/Submakefile @@ -73,7 +73,7 @@ po/linuxcnc.pot: hal/utils/meter.c \ hal/utils/scope_disp.c \ hal/utils/scope_files.c \ hal/utils/miscgtk.c -po/linuxcnc.pot: emc/motion/control.c emc/motion/command.c emc/motion/motion.c emc/motion/homing.c +po/linuxcnc.pot: emc/motion/control.c emc/motion/command.c emc/motion/motmod.c emc/motion/homing.c po/linuxcnc.pot: $(TCLSRCS) po/linuxcnc.pot: $(PYI18NSRCS) diff --git a/src/po/de.po b/src/po/de.po index 642a1b5756..ee37454f29 100644 --- a/src/po/de.po +++ b/src/po/de.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: de\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-10 13:39-0600\n" +"POT-Creation-Date: 2019-02-20 07:49+0000\n" "PO-Revision-Date: 2012-03-11 01:15+0200\n" "Last-Translator: Jeff Epler \n" "Language-Team: German Translation Team \n" @@ -13,56 +13,1787 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Weblate 0.5\n" -#: src/hal/utils/meter.c:198 hal/utils/meter.c:181 +#: src/emc/task/emctaskmain.cc:479 src/emc/task/emctaskmain.cc:512 +#, c-format +msgid "%s exceeds +X limit" +msgstr "%s überschreitet X+ Limit" + +#: src/emc/task/emctaskmain.cc:484 src/emc/task/emctaskmain.cc:517 +#, c-format +msgid "%s exceeds +Y limit" +msgstr "%s überschreitet Y+ Limit" + +#: src/emc/task/emctaskmain.cc:489 src/emc/task/emctaskmain.cc:522 +#, c-format +msgid "%s exceeds +Z limit" +msgstr "%s überschreitet Z+ Limit" + +#: src/emc/task/emctaskmain.cc:494 src/emc/task/emctaskmain.cc:527 +#, c-format +msgid "%s exceeds -X limit" +msgstr "%s überschreitet X- Limit" + +#: src/emc/task/emctaskmain.cc:499 src/emc/task/emctaskmain.cc:532 +#, c-format +msgid "%s exceeds -Y limit" +msgstr "%s überschreitet Y- Limit" + +#: src/emc/task/emctaskmain.cc:504 src/emc/task/emctaskmain.cc:537 +#, c-format +msgid "%s exceeds -Z limit" +msgstr "%s überschreitet Z- Limit" + +#: src/emc/task/emctaskmain.cc:892 +#, c-format +msgid "" +"command (%s) cannot be executed until the machine is out of E-stop and " +"turned on" +msgstr "" +"%s kann nicht ausgeführt werden, solange der Notaus aktiv ist und die " +"Maschine nicht eingeschaltet ist" + +#: src/emc/task/emctaskmain.cc:1013 +#, fuzzy, c-format +msgid "can't do that (%s:%d) in manual mode" +msgstr "%s kann im manuellen Modus nicht ausgeführt werden" + +#: src/emc/task/emctaskmain.cc:1113 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter idle" +msgstr "" +"%s kann im automatischen Modus nicht ausgeführt werden, wenn der Interpreter " +"stillsteht" + +#: src/emc/task/emctaskmain.cc:1180 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter reading" +msgstr "" +"%s kann im automatischen Modus nicht ausgeführt werden, wenn der Interpreter " +"liest" + +#: src/emc/task/emctaskmain.cc:1265 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter paused" +msgstr "" +"%s kann im automatischen Modus nicht ausgeführt werden, wenn der Interpreter " +"Pause macht" + +#: src/emc/task/emctaskmain.cc:1334 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter waiting" +msgstr "" +"%s kann im automatischen Modus nicht ausgeführt werden, wenn der Interpreter " +"wartet" + +#: src/emc/task/emctaskmain.cc:1442 +#, fuzzy, c-format +msgid "can't do that (%s:%d) in MDI mode" +msgstr "%s kann im MDI-Modus nicht ausgeführt werden" + +#: src/emc/task/emctaskmain.cc:2100 +msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" +msgstr "" +"Modus kann nicht gewechselt werden, solange er auf AUTO ist und der " +"Interpreter stillsteht" + +#: src/emc/task/emctaskmain.cc:2157 tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 +#: tcl/mini.tcl:1775 tcl/tklinuxcnc.tcl:451 +#, c-format, tcl-format +msgid "can't open %s" +msgstr "Die Datei »%s« kann nicht geöffnet werden." + +#: src/emc/task/emctaskmain.cc:2169 +msgid "Can't issue MDI command when not homed" +msgstr "MDI-Befehl kann ohne vorherige Refernzfahrt nicht ausgeführt werden" + +#: src/emc/task/emctaskmain.cc:2174 +msgid "Must be in MDI mode to issue MDI command" +msgstr "MDI-Befehl kann nur im MDI-Modus ausgeführt werden" + +#: src/emc/task/emctaskmain.cc:2256 +msgid "Can't run a program when not homed" +msgstr "Programm kann ohne vorherige Referenzfahrt nicht ausgeführt werden" + +#: src/emc/rs274ngc/interp_arc.cc:110 src/emc/rs274ngc/interp_arc.cc:284 +#, fuzzy, c-format +msgid "" +"Zero-radius arc: start=(%c%.4f,%c%.4f) center=(%c%.4f,%c%.4f) end=(%c%.4f,%c" +"%.4f) r1=%.4f r2=%.4f" +msgstr "" +"Radius am Kreisanfang unterscheidet sich vom Radius am Kreisende: Anfang=(%c" +"%.4f,%c%.4f), Mittelpunkt=(%c%.4f,%c%.4f), Ende=(%c%.4f,%c%.4f), Radius 1=" +"%.4f, Radius 2=%.4f" + +#: src/emc/rs274ngc/interp_arc.cc:120 src/emc/rs274ngc/interp_arc.cc:292 +#, fuzzy, c-format +msgid "" +"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " +"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " +"rel_err=%.4f%%" +msgstr "" +"Radius am Kreisanfang unterscheidet sich vom Radius am Kreisende: Anfang=(%c" +"%.4f,%c%.4f), Mittelpunkt=(%c%.4f,%c%.4f), Ende=(%c%.4f,%c%.4f), Radius 1=" +"%.4f, Radius 2=%.4f" + +#: src/emc/rs274ngc/interp_check.cc:90 +msgid "G4 not allowed with G2 or G3 because they both use P" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:93 +#, fuzzy +msgid "Line with G10 does not have L1, L10, L11, L2, or L20" +msgstr "Zeile mit G10 enthält kein L2" + +#: src/emc/rs274ngc/interp_check.cc:94 +#, fuzzy +msgid "P value not an integer with G10" +msgstr "P-Wert bei Verwendung von G10 L2 ist keine Ganzzahl" + +#: src/emc/rs274ngc/interp_check.cc:95 +#, fuzzy, c-format +msgid "P value out of range (0-9) with G10 L%d" +msgstr "P-Wert ausserhalb des gültigen Bereichs bei G10 L2" + +#: src/emc/rs274ngc/interp_check.cc:96 +#, fuzzy, c-format +msgid "P value out of range with G10 L%d" +msgstr "P-Wert ausserhalb des gültigen Bereichs bei G10 L2" + +#: src/emc/rs274ngc/interp_check.cc:100 +msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:259 +#, fuzzy +msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" +msgstr "E-Wort ohne zugehörige Angabe von G76 oder M66" + +#: src/emc/rs274ngc/interp_check.cc:265 +#, fuzzy +msgid "E word with no G76, M66, M67 or M68 to use it" +msgstr "E-Wort ohne zugehörige Angabe von G76 oder M66" + +#: src/emc/rs274ngc/interp_check.cc:270 +#, fuzzy +msgid "H word with no G43 or G76 to use it" +msgstr "E-Wort ohne zugehörige Angabe von G76 oder M66" + +#: src/emc/rs274ngc/interp_check.cc:276 +#, fuzzy +msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" +msgstr "" +"K-Wort ohne zugehörige Angabe von G2, G3, G33, G33.1, G76, G87, oder G43.1" + +#: src/emc/rs274ngc/interp_check.cc:282 +#, fuzzy +msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" +msgstr "J-Wörters ohne zugehörige Angabe von G2, G3 oder G87" + +#: src/emc/rs274ngc/interp_check.cc:288 +#, fuzzy +msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" +msgstr "" +"K-Wort ohne zugehörige Angabe von G2, G3, G33, G33.1, G76, G87, oder G43.1" + +#: src/emc/rs274ngc/interp_check.cc:298 +msgid "" +"L word with no G10, cutter compensation, canned cycle, digital/analog input, " +"or NURBS code" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:310 +msgid "" +"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " +"M53 M62 M63 M64 M65 M66 or user M code to use it" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:315 +#, fuzzy +msgid "P value not an integer with M19 G2 or G3" +msgstr "P-Wert bei Verwendung von G10 L2 ist keine Ganzzahl" + +#: src/emc/rs274ngc/interp_check.cc:317 +#, fuzzy +msgid "P value must be 0,1,or 2 with M19" +msgstr "P-Wert ausserhalb des gültigen Bereichs bei G10 L2" + +#: src/emc/rs274ngc/interp_check.cc:319 +#, fuzzy +msgid "P value should be 1 or greater with G2 or G3" +msgstr "P-Wert ausserhalb des gültigen Bereichs bei G10 L2" + +#: src/emc/rs274ngc/interp_check.cc:327 +#, fuzzy +msgid "" +"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " +"code that uses it" +msgstr "E-Wort ohne zugehörige Angabe von G76 oder M66" + +#: src/emc/rs274ngc/interp_check.cc:337 +#, fuzzy +msgid "R value must be within 0..360 with M19" +msgstr "P-Wert ausserhalb des gültigen Bereichs bei G10 L2" + +#: src/emc/rs274ngc/interp_convert.cc:139 +msgid "You must specify both X and Y coordinates for Control Points" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:142 +msgid "Can specify P without X and Y only for the first control point" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:145 +msgid "Must specify positive weight P for every Control Point" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:148 +#, fuzzy +msgid "Cannot make a NURBS with 0 feedrate" +msgstr "" +"Ein Kreisbogen mit einer Vorschubgeschwindigkeit von 0 ist nicht möglich" + +#: src/emc/rs274ngc/interp_convert.cc:183 +#, fuzzy +msgid "Cannot use G5.3 without G5.2 first" +msgstr "G53 kann nicht mit aktiver Werkzeugbahnkorrektur verwendet werden" + +#: src/emc/rs274ngc/interp_convert.cc:184 +#, c-format +msgid "" +"You must specify a number of control points at least equal to the order L = " +"%d" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:213 +#, fuzzy +msgid "Cannot convert spline with cutter radius compensation" +msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" + +#: src/emc/rs274ngc/interp_convert.cc:223 +msgid "Splines must be in the XY plane" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:228 +msgid "Splines may not have motion in Z, A, B, or C" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:232 +msgid "Must specify both I and J with G5.1" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:251 +msgid "Must specify both I and J, or neither" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:262 +msgid "Must specify both P and Q with G5" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:363 +msgid "" +"The move just after exiting cutter compensation mode must be straight, not " +"an arc" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:371 +msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:383 +#: src/emc/rs274ngc/interp_convert.cc:4488 +msgid "Cannot feed with zero spindle speed in feed per rev mode" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:394 +#: src/emc/rs274ngc/interp_convert.cc:400 +#: src/emc/rs274ngc/interp_convert.cc:409 +#: src/emc/rs274ngc/interp_convert.cc:415 +#: src/emc/rs274ngc/interp_convert.cc:424 +#: src/emc/rs274ngc/interp_convert.cc:430 +#, fuzzy, c-format +msgid "%c word missing in absolute center arc" +msgstr "" +"Angabe eines F-Wörters zum Fahren eines Kreisbogens im zeitreziproken " +"Vorschub-Modus fehlt" + +#: src/emc/rs274ngc/interp_convert.cc:662 +msgid "" +"Radius of cutter compensation entry arc is not greater than the tool radius" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:882 +#: src/emc/rs274ngc/interp_convert.cc:892 src/emc/rs274ngc/interp_queue.cc:696 +msgid "" +"Arc move in concave corner cannot be reached by the tool without gouging" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:918 +msgid "Arc to arc motion is invalid because the arcs have the same center" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:921 +msgid "" +"Arc to arc motion makes a corner the compensated tool can't fit in without " +"gouging" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:1053 +#: src/emc/rs274ngc/interp_convert.cc:1057 +#: src/emc/rs274ngc/interp_convert.cc:1061 +#: src/emc/rs274ngc/interp_convert.cc:3945 +#: src/emc/rs274ngc/interp_convert.cc:3948 +#: src/emc/rs274ngc/interp_convert.cc:3951 src/emc/rs274ngc/interp_find.cc:97 +#, c-format +msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:1563 +msgid "Cannot change control mode with cutter radius compensation on" +msgstr "Modus kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" + +#: src/emc/rs274ngc/interp_convert.cc:1676 +msgid "Cannot change coordinate systems with cutter radius compensation on" +msgstr "" +"Koordinatensystem kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt " +"werden" + +#: src/emc/rs274ngc/interp_convert.cc:1920 +#, c-format +msgid "G%d.1 with no D word" +msgstr "G%S.1 ohne D-Wort" + +#: src/emc/rs274ngc/interp_convert.cc:1923 +#, c-format +msgid "G%d.1 with L word, but plane is not G18" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:1934 +#, c-format +msgid "G%d requires D word to be a whole number" +msgstr "D-Wort bei G%d muss eine Ganzzahl sein" + +#: src/emc/rs274ngc/interp_convert.cc:1941 +#, c-format +msgid "G%d with lathe tool, but plane is not G18" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:2340 +#, fuzzy +msgid "Cannot set reference point with cutter compensation in effect" +msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" + +#: src/emc/rs274ngc/interp_convert.cc:2859 +#, c-format +msgid "gen_restore G20/G21 failed: '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:2907 +#, c-format +msgid "" +"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:2908 +#, c-format +msgid "BUG: restore from level %d !?" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:2909 +#, c-format +msgid "BUG: restore to level %d !?" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:2928 +#, c-format +msgid "M7x: restore_settings G20/G21 failed: '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:2946 +#, c-format +msgid "M7x: restore_settings failed executing: '%s': %s" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3005 +#, c-format +msgid "Failed to restore interp state on abort '%s': %s" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3069 +msgid "No valid P word with M62" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3072 +msgid "No valid P word with M63" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3075 +msgid "No valid P word with M64" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3078 +msgid "No valid P word with M65" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3111 +msgid "invalid P-word with M66" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3126 +#, fuzzy +msgid "Cannot wait for digital input with cutter radius compensation on" +msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" + +#: src/emc/rs274ngc/interp_convert.cc:3138 +#, fuzzy +msgid "Cannot wait for analog input with cutter radius compensation on" +msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" + +#: src/emc/rs274ngc/interp_convert.cc:3152 +msgid "Invalid analog index with M67" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3157 +msgid "Invalid analog index with M68" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3188 +msgid "Need non-negative Q-word to specify tool number with M61" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3258 +msgid "Q word with M19 requires a value > 0" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3286 +msgid "Cannot restore context from invalid stack frame - missing M70/M73?" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3327 +#: src/emc/rs274ngc/interp_convert.cc:3344 +#: src/emc/rs274ngc/interp_convert.cc:3359 +#: src/emc/rs274ngc/interp_convert.cc:3373 +#: src/emc/rs274ngc/interp_convert.cc:3387 +#, fuzzy +msgid "Cannot enable overrides with cutter radius compensation on" +msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" + +#: src/emc/rs274ngc/interp_convert.cc:3334 +#: src/emc/rs274ngc/interp_convert.cc:3349 +#: src/emc/rs274ngc/interp_convert.cc:3364 +#: src/emc/rs274ngc/interp_convert.cc:3378 +#: src/emc/rs274ngc/interp_convert.cc:3392 +#, fuzzy +msgid "Cannot disable overrides with cutter radius compensation on" +msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" + +#: src/emc/rs274ngc/interp_convert.cc:3506 +#: src/emc/rs274ngc/interp_convert.cc:3507 +#: src/emc/rs274ngc/interp_convert.cc:3508 +#, c-format +msgid "Indexing axis %c can only be moved with G0" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3515 +#: src/emc/rs274ngc/interp_convert.cc:3517 +#: src/emc/rs274ngc/interp_convert.cc:3519 +#, c-format +msgid "Indexing axis %c can only be moved alone" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3621 +#, fuzzy +msgid "Cannot probe with feed per rev mode" +msgstr "Abtast-Fahrt mit einer Verfahrgeschwindigkeit von 0 nicht möglich" + +#: src/emc/rs274ngc/interp_convert.cc:3669 +#, fuzzy +msgid "Cannot change retract mode with cutter radius compensation on" +msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" + +#: src/emc/rs274ngc/interp_convert.cc:3703 +msgid "G10 L1 without offsets has no effect" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3809 +msgid "Q number in G10 is not an integer" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3810 +msgid "Invalid tool orientation" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3933 +#, fuzzy +msgid "I J words not allowed with G10 L2" +msgstr "" +"Befehle G43.1, G41 R, und G42 R dürfen keine X-, Y-, Z-, A-, B-, C-. oder J-" +"Wörter enthalten" + +#: src/emc/rs274ngc/interp_convert.cc:3954 +#, fuzzy +msgid "" +"Cannot change the active coordinate system with cutter radius compensation on" +msgstr "" +"Koordinatensystem kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt " +"werden" + +#: src/emc/rs274ngc/interp_convert.cc:3962 +msgid "R not allowed in G10 L20" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4550 +#, fuzzy +msgid "Spindle not turning in G33" +msgstr "G86, aber Werkzeug-Spindel nicht in Rotation" + +#: src/emc/rs274ngc/interp_convert.cc:4560 +#, fuzzy +msgid "Spindle not turning in G33.1" +msgstr "G86, aber Werkzeug-Spindel nicht in Rotation" + +#: src/emc/rs274ngc/interp_convert.cc:4603 +msgid "BUG: An axis incorrectly moved along with an indexer" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4616 +msgid "BUG: trying to index incorrect axis" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4708 +#, fuzzy +msgid "Cannot use G76 threading cycle with cutter radius compensation on" +msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" + +#: src/emc/rs274ngc/interp_convert.cc:4711 +msgid "In G76, I must not be 0" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4713 +#, fuzzy +msgid "In G76, J must be greater than 0" +msgstr "Zeilennummer größer als 99999" + +#: src/emc/rs274ngc/interp_convert.cc:4715 +#, fuzzy +msgid "In G76, K must be greater than J" +msgstr "Zeilennummer größer als 99999" + +#: src/emc/rs274ngc/interp_convert.cc:4858 +msgid "" +"Length of cutter compensation entry move is not greater than the tool radius" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:5077 +msgid "Zero degree inside corner is invalid for cutter compensation" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:5115 +#: src/emc/rs274ngc/interp_convert.cc:5123 +msgid "" +"Arc to straight motion makes a corner the compensated tool can't fit in " +"without gouging" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:5207 +#, fuzzy +msgid "Cannot change tools with cutter radius compensation on" +msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" + +#: src/emc/rs274ngc/interp_convert.cc:5328 +#, fuzzy +msgid "Cannot change tool offset with cutter radius compensation on" +msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" + +#: src/emc/rs274ngc/interp_queue.cc:694 +#, c-format +msgid "" +"BUG: cutter compensation has generated an invalid arc with mismatched radii " +"r1 %f r2 %f\n" +msgstr "" + +#: src/emc/rs274ngc/interp_queue.cc:716 +msgid "BUG: Unsupported plane in cutter compensation" +msgstr "Nicht untersützte Ebene in Werkzeugradiuskorrektur" + +#: src/emc/rs274ngc/interp_queue.cc:729 +msgid "" +"Straight traverse in concave corner cannot be reached by the tool without " +"gouging" +msgstr "" + +#: src/emc/rs274ngc/interp_queue.cc:757 +#, fuzzy, c-format +msgid "BUG: Unsupported plane [%d] in cutter compensation" +msgstr "Nicht untersützte Ebene in Werkzeugradiuskorrektur" + +#: src/emc/rs274ngc/interp_queue.cc:771 +msgid "" +"Straight feed in concave corner cannot be reached by the tool without gouging" +msgstr "" + +#: src/emc/rs274ngc/interp_cycles.cc:630 +#, fuzzy +msgid "Cannot feed with zero feed rate" +msgstr "" +"G1 kann nicht mit einer Vorschubgeschwindigkeit von 0 ausgeführt werden" + +# Anmerkung:FJ: Who the fuck is "inverse time feed mode"? :-))) +# Angabe des Weges, der in einer Minuten zurückgelegt werden soll??? +# Anmerkung Thomas: Wird benutzt beim Fünfachsfräsen (3 Linearachsen und 2 Rundachsen zusammen). +# F100 -> 60/100 = Weg im Raum wird in 0,6s zurückgelegt. Einige CAM Systeme erzeugen solchen Code... +# Anmerkung:FJ: DIN66025 nennt das "Zeitreziproke Vorschubverschlüsselung". Was es nicht alles gibt :-) !!!!! +#: src/emc/rs274ngc/interp_cycles.cc:631 +#, fuzzy +msgid "Cannot use inverse time feed with canned cycles" +msgstr "Abtast-Fahrten sind im zeitreziproken Vorschub-Modus nicht möglich" + +#: src/emc/rs274ngc/interp_cycles.cc:632 +#, fuzzy +msgid "Cannot use canned cycles with cutter compensation on" +msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" + +#: src/emc/rs274ngc/interp_cycles.cc:829 +msgid "G17 canned cycle is not possible on a machine without Z axis" +msgstr "" + +#: src/emc/rs274ngc/interp_cycles.cc:1015 +msgid "G17.1 canned cycle is not possible on a machine without W axis" +msgstr "" + +#: src/emc/rs274ngc/interp_cycles.cc:1231 +msgid "G19 canned cycle is not possible on a machine without X axis" +msgstr "" + +#: src/emc/rs274ngc/interp_cycles.cc:1399 +msgid "G19.1 canned cycle is not possible on a machine without U axis" +msgstr "" + +#: src/emc/rs274ngc/interp_cycles.cc:1624 +msgid "G18 canned cycle is not possible on a machine without Y axis" +msgstr "" + +#: src/emc/rs274ngc/interp_cycles.cc:1791 +msgid "G18.1 canned cycle is not possible on a machine without V axis" +msgstr "" + +#: src/emc/rs274ngc/interp_find.cc:170 +#, fuzzy +msgid "Cannot use polar coordinates with G53" +msgstr "Rotations-Achse kann nicht mit G76 bewegt werden" + +#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 +#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 +#: src/emc/rs274ngc/interp_find.cc:347 +msgid "Cannot specify X or Y words with polar coordinate" +msgstr "" + +#: src/emc/rs274ngc/interp_find.cc:272 +msgid "Must specify angle in polar coordinate if at the origin" +msgstr "" + +#: src/emc/rs274ngc/interp_find.cc:338 +msgid "" +"Incremental motion with polar coordinates is indeterminate when at the origin" +msgstr "" + +#: src/emc/rs274ngc/interp_find.cc:348 +msgid "G91 motion with polar coordinates is indeterminate when at the origin" +msgstr "" + +#: src/emc/rs274ngc/interp_find.cc:720 +#, c-format +msgid "Requested tool %d not found in the tool table" +msgstr "" + +#: src/emc/rs274ngc/interp_internal.cc:161 +msgid "Cannot use polar coordinate on a machine lacking X or Y axes" +msgstr "" + +#: src/emc/rs274ngc/interp_internal.cc:162 +msgid "Cannot use polar coordinate except in G17 plane" +msgstr "" + +#: src/emc/rs274ngc/interp_internal.cc:163 +msgid "Cannot specify both polar coordinate and X word" +msgstr "" + +#: src/emc/rs274ngc/interp_internal.cc:164 +msgid "Cannot specify both polar coordinate and Y word" +msgstr "" + +#: src/emc/rs274ngc/interp_internal.cc:185 +#: src/emc/rs274ngc/interp_internal.cc:199 +#: src/emc/rs274ngc/interp_internal.cc:214 +msgid "Polar coordinates can only be used for motion" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1150 src/emc/rs274ngc/interp_read.cc:1154 +#, c-format +msgid "Bad character '\\%03o' used" +msgstr "Ungültiges Zeichen »\\%03o« benutzt" + +#: src/emc/rs274ngc/interp_read.cc:1154 +#, c-format +msgid "Bad character '%c' used" +msgstr "Ungültiges Zeichen »%c« benutzt" + +# Anmerkung:FJ: Schrägstrich, atan? Klären? Division wie bei c-Funktion atan2(x,y) ??? +#: src/emc/rs274ngc/interp_read.cc:1678 +#, fuzzy +msgid "Left bracket missing after 'while'" +msgstr "Fehlende linke Klammer nach Schrägstrich bei atan" + +#: src/emc/rs274ngc/interp_read.cc:1693 +#, fuzzy +msgid "Left bracket missing after 'repeat'" +msgstr "Fehlende linke Klammer nach unärem Befehlssnamen" + +# Anmerkung:FJ: Schrägstrich, atan? Klären? Division wie bei c-Funktion atan2(x,y) ??? +#: src/emc/rs274ngc/interp_read.cc:1708 +#, fuzzy +msgid "Left bracket missing after 'if'" +msgstr "Fehlende linke Klammer nach Schrägstrich bei atan" + +# Anmerkung:FJ: Schrägstrich, atan? Klären? Division wie bei c-Funktion atan2(x,y) ??? +#: src/emc/rs274ngc/interp_read.cc:1723 +#, fuzzy +msgid "Left bracket missing after 'elseif'" +msgstr "Fehlende linke Klammer nach Schrägstrich bei atan" + +#: src/emc/rs274ngc/interp_read.cc:1926 +#, fuzzy +msgid "Cannot read current position with cutter radius compensation on" +msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" + +#: src/emc/rs274ngc/interp_read.cc:1941 +#, fuzzy +msgid "Expected # reading parameter" +msgstr "Parameters aufklappen" + +#: src/emc/rs274ngc/interp_read.cc:1943 +msgid "Expected ] reading bracketed parameter" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:2615 +#, c-format +msgid "bad number format (conversion failed) parsing '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:2616 +#, c-format +msgid "bad number format (trailing characters) parsing '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:2706 +msgid "Calculation resulted in 'not a number'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:2708 +msgid "Calculation resulted in 'infinity'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:3001 +#, c-format +msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:3113 +msgid "Multiple U words on one line" +msgstr "Mehrere U-Wörter in einem Satz" + +#: src/emc/rs274ngc/interp_read.cc:3129 +msgid "Multiple V words on one line" +msgstr "Mehrere V-Wörter in einem Satz" + +#: src/emc/rs274ngc/interp_read.cc:3145 +msgid "Multiple W words on one line" +msgstr "Mehrere W-Wörter in einem Satz" + +#: src/emc/rs274ngc/interp_o_word.cc:97 +#, c-format +msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:722 +#, fuzzy, c-format +msgid "%d: not in a subroutine definition: '%s'" +msgstr "Verschachtelte Definition einer Unterfunktion" + +#: src/emc/rs274ngc/interp_o_word.cc:759 src/emc/rs274ngc/interp_o_word.cc:809 +#, c-format +msgid "%d: duplicate O-word label: '%s' - defined in line %d" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:862 +#, c-format +msgid "%d: duplicate O-word label - already defined in line %d: '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:886 src/emc/rs274ngc/interp_o_word.cc:944 +#: src/emc/rs274ngc/interp_o_word.cc:978 src/emc/rs274ngc/interp_o_word.cc:996 +#: src/emc/rs274ngc/interp_o_word.cc:1013 +#: src/emc/rs274ngc/interp_o_word.cc:1038 +#, c-format +msgid "%d: undefined O-word label: '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:889 src/emc/rs274ngc/interp_o_word.cc:947 +#, c-format +msgid "%d: no matching 'if' label: '%s' (found '%s' in line %d)" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:981 +#, c-format +msgid "%d: no matching label: '%s' (found '%s' in line %d): '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:999 src/emc/rs274ngc/interp_o_word.cc:1016 +#, c-format +msgid "%d: no matching while/do label: '%s' (found '%s' in line %d)" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:1042 +#, c-format +msgid "%d: no matching label: '%s' (found '%s' in line %d)" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:166 +#, c-format +msgid "Named parameter #<%s> not defined" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:196 +#, fuzzy, c-format +msgid "cant open ini file '%s'" +msgstr "Die Datei »%s« kann nicht geöffnet werden." + +#: src/emc/rs274ngc/interp_namedparams.cc:213 +#, c-format +msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:237 +#, c-format +msgid "fetch_hal_param: hal_init(%s): %d" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:238 +#, c-format +msgid "fetch_hal_param: hal_ready(): %d" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:419 +#, c-format +msgid "Internal error: Could not assign #<%s>" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:427 +#, c-format +msgid "Cannot assign to read-only parameter #<%s>" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:731 +#, c-format +msgid "BUG: lookup_named_param(%s): unhandled index=%fn" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_pre.cc:1407 src/emc/rs274ngc/rs274ngc_pre.cc:1482 +msgid "Queue is not empty after tool change" +msgstr "Warteschlange ist nach Werkzeugwechsel nicht leer" + +#: src/emc/rs274ngc/rs274ngc_pre.cc:1786 +#, fuzzy, c-format +msgid "Unable to open parameter file: '%s'" +msgstr "Datei kann nicht geöffnet werden" + +#: src/emc/rs274ngc/rs274ngc_return.hh:19 +msgid "A file is already open" +msgstr "Datei ist bereits geöffnet" + +#: src/emc/rs274ngc/rs274ngc_return.hh:21 +#, fuzzy +msgid "All axes missing with g52 or g92" +msgstr "Keine Weginformation für G92 angegeben" + +#: src/emc/rs274ngc/rs274ngc_return.hh:22 +msgid "All axes missing with motion code" +msgstr "Keine Koordinaten für Wegbedingung angegeben" + +#: src/emc/rs274ngc/rs274ngc_return.hh:23 +msgid "Arc radius too small to reach end point" +msgstr "Kreisradius zu klein zum Erreichen des Endpunktes" + +#: src/emc/rs274ngc/rs274ngc_return.hh:24 +msgid "Argument to acos out of range" +msgstr "Argument von acos außerhalb des gültigen Bereiches" + +#: src/emc/rs274ngc/rs274ngc_return.hh:25 +msgid "Argument to asin out of range" +msgstr "Argument von asin außerhalb des gültigen Bereiches" + +#: src/emc/rs274ngc/rs274ngc_return.hh:26 +msgid "Attempt to divide by zero" +msgstr "Division durch Null" + +#: src/emc/rs274ngc/rs274ngc_return.hh:27 +msgid "Attempt to raise negative to non integer power" +msgstr "" +"Negative Zahl kann nicht mit einem nicht ganzzahligem Wert potenziert werden" + +#: src/emc/rs274ngc/rs274ngc_return.hh:28 +msgid "Bad format unsigned integer" +msgstr "Falsches Format bei positiver Ganzzahl" + +#: src/emc/rs274ngc/rs274ngc_return.hh:29 +msgid "Bad number format" +msgstr "Falsches Zahlenformat" + +#: src/emc/rs274ngc/rs274ngc_return.hh:30 +msgid "Bug bad g code modal group 0" +msgstr "Falsches G-Wort in Modal-Gruppe 0" + +#: src/emc/rs274ngc/rs274ngc_return.hh:31 +msgid "Bug code not g0 or g1" +msgstr "Wort ist nicht G0 oder G1" + +#: src/emc/rs274ngc/rs274ngc_return.hh:32 +msgid "Bug code not g17 g18 or g19" +msgstr "Wort ist nicht G17, G18 oder G19" + +#: src/emc/rs274ngc/rs274ngc_return.hh:33 +msgid "Bug code not g20 or g21" +msgstr "Wort ist nicht G20 oder G21" + +#: src/emc/rs274ngc/rs274ngc_return.hh:34 +msgid "Bug code not g28 or g30" +msgstr "Wort ist nicht G28 oder G30" + +#: src/emc/rs274ngc/rs274ngc_return.hh:35 +msgid "Bug code not g2 or g3" +msgstr "Wort ist nicht G2 oder G3" + +#: src/emc/rs274ngc/rs274ngc_return.hh:37 +#, fuzzy +msgid "Bug code not g4 g10 g28 g30 g52 g53 or g92 series" +msgstr "Wort ist nicht G4, G10, G28, G30, G53 oder aus G92-Serie" + +#: src/emc/rs274ngc/rs274ngc_return.hh:38 +msgid "Bug code not g61 g61.1 or g64" +msgstr "Wort ist nicht G61, G61.1 oder G64" + +#: src/emc/rs274ngc/rs274ngc_return.hh:39 +msgid "Bug code not g90 or g91" +msgstr "Wort ist nicht G90 oder G91" + +#: src/emc/rs274ngc/rs274ngc_return.hh:40 +msgid "Bug code not g98 or g99" +msgstr "Wort ist nicht G98 oder G99" + +#: src/emc/rs274ngc/rs274ngc_return.hh:41 +#, fuzzy +msgid "Bug code not in g52 or g92 series" +msgstr "Wort ist nicht aus G92-Serie" + +# Anmerkung:FJ: g593 ???? WM: wahrscheinlich g59.3 +#: src/emc/rs274ngc/rs274ngc_return.hh:42 +msgid "Bug code not in range g54 to g593" +msgstr "Wort ist nicht im Bereich G54 bis G59.3" + +#: src/emc/rs274ngc/rs274ngc_return.hh:43 +msgid "Bug code not m0 m1 m2 m30 m60" +msgstr "Wort ist nicht M0, M1, M2, M30 oder M60" + +# Anmerkung:FJ: distance mode? -> incremental oder absolut? Oder was ist hier gemeint!? +# Anmerkung:FJ: Kettenmaß oder Absolutmaß -->> Bemaßungs-Modus, Maßmodus ... +# Vielleicht doch mal DIN66025 aus der Uni-Bib besorgen!? +# WM: wie wärs denn damit? -> Koordinaten Interpretationsmodus +# Anmerkung:FJ: DIN66025 spricht bei g90/g91 von absoluter/inkrementaler Maßangabe +# Was ausser abs. oder inkr. gibt es dort noch, daß diese Fehlermeldung +# benötigt wird :-))) +# msgstr "Koordinaten Interpretationsmodus nicht g90 oder g91" +#: src/emc/rs274ngc/rs274ngc_return.hh:44 +msgid "Bug distance mode not g90 or g91" +msgstr "Maßangabe-Modus ist nicht G90 oder G91" + +#: src/emc/rs274ngc/rs274ngc_return.hh:45 +msgid "Bug function should not have been called" +msgstr "Funktion sollte besser nicht aufgerufen werden" + +# Anmerkung:FJ: Werkzeugradius-Kompensation in DIN66025: Werkzeugbahnkorrektur! +#: src/emc/rs274ngc/rs274ngc_return.hh:46 +msgid "Bug in tool radius comp" +msgstr "Fehler bei Werkzeugbahnkorrektur" + +#: src/emc/rs274ngc/rs274ngc_return.hh:47 +msgid "Bug plane not xy yz or xz" +msgstr "Fläche nicht in XY-, YZ- oder XZ-Ebene" + +#: src/emc/rs274ngc/rs274ngc_return.hh:48 +msgid "Bug side not right or left" +msgstr "Seite nicht rechts oder links" + +# Anmerkung:FJ: Verfahrkommando laut DIN66025: Wegbedingung +#: src/emc/rs274ngc/rs274ngc_return.hh:49 +msgid "Bug unknown motion code" +msgstr "Unbekannte Wegbedingung" + +#: src/emc/rs274ngc/rs274ngc_return.hh:50 +msgid "Bug unknown operation" +msgstr "Unbekannter Befehl" + +#: src/emc/rs274ngc/rs274ngc_return.hh:51 +msgid "Cannot change axis offsets with cutter radius comp" +msgstr "" +"Der Offset einer Achse kann nicht geändert werden, wenn " +"Werkzeugbahnkorrektur aktiv ist" + +#: src/emc/rs274ngc/rs274ngc_return.hh:52 +msgid "Cannot create backup file" +msgstr "Backup Datei kann nicht erzeugt werden." + +#: src/emc/rs274ngc/rs274ngc_return.hh:53 +msgid "Cannot do g1 with zero feed rate" +msgstr "" +"G1 kann nicht mit einer Vorschubgeschwindigkeit von 0 ausgeführt werden" + +#: src/emc/rs274ngc/rs274ngc_return.hh:54 +msgid "Cannot do zero repeats of cycle" +msgstr "Null Wiederholungen eines Arbeitszyklus" + +#: src/emc/rs274ngc/rs274ngc_return.hh:55 +msgid "Cannot make arc with zero feed rate" +msgstr "" +"Ein Kreisbogen mit einer Vorschubgeschwindigkeit von 0 ist nicht möglich" + +#: src/emc/rs274ngc/rs274ngc_return.hh:56 +msgid "Cannot open backup file" +msgstr "Backup-Datei kann nicht geöffnet werden" + +#: src/emc/rs274ngc/rs274ngc_return.hh:57 +msgid "Cannot open variable file" +msgstr "Variablen-Datei kann nicht geöffnet werden" + +#: src/emc/rs274ngc/rs274ngc_return.hh:58 +msgid "Cannot probe with cutter radius comp on" +msgstr "Abtast-Fahrt bei aktiver Werkzeugbahnkorrektur nicht möglich" + +#: src/emc/rs274ngc/rs274ngc_return.hh:59 +msgid "Cannot probe with zero feed rate" +msgstr "Abtast-Fahrt mit einer Verfahrgeschwindigkeit von 0 nicht möglich" + +#: src/emc/rs274ngc/rs274ngc_return.hh:60 +msgid "Cannot put a b in canned cycle" +msgstr "" +"Angabe der Koordinaten-Wörter A und B in Arbeitszyklen ist nicht erlaubt" + +#: src/emc/rs274ngc/rs274ngc_return.hh:61 +msgid "Cannot put a c in canned cycle" +msgstr "" +"Angabe der Koordinaten-Wörter A und C in Arbeitszyklen ist nicht erlaubt" + +#: src/emc/rs274ngc/rs274ngc_return.hh:62 +msgid "Cannot put an a in canned cycle" +msgstr "Angabe des Koordinaten-Wörters A in Arbeitszyklen ist nicht erlaubt" + +#: src/emc/rs274ngc/rs274ngc_return.hh:63 +msgid "Cannot turn cutter radius comp on when on" +msgstr "Werkzeugbahnkorrektur kann nicht aktiviert werden wenn schon aktiv" + +#: src/emc/rs274ngc/rs274ngc_return.hh:64 +msgid "Cannot use axis values with g80" +msgstr "Keine Koordinaten-Angabe zusammen mit G80 möglich" + +#: src/emc/rs274ngc/rs274ngc_return.hh:65 +msgid "Cannot use axis values without a g code that uses them" +msgstr "" +"Koordinaten-Angaben können nur zusammen mit einer passenden Wegbedingung " +"verwendet werden" + +#: src/emc/rs274ngc/rs274ngc_return.hh:66 +msgid "Cannot use g28 or g30 with cutter radius comp" +msgstr "" +"G28 oder G30 kann nicht mit aktiver Werkzeugbahnkorrektur verwendet werden" + +#: src/emc/rs274ngc/rs274ngc_return.hh:67 +msgid "Cannot use g53 incremental" +msgstr "G53 kann nicht im inkrementalen Maßangabe-Modus benutzt werden" + +#: src/emc/rs274ngc/rs274ngc_return.hh:68 +msgid "Cannot use g53 with cutter radius comp" +msgstr "G53 kann nicht mit aktiver Werkzeugbahnkorrektur verwendet werden" + +#: src/emc/rs274ngc/rs274ngc_return.hh:69 +msgid "Cannot use two g codes that both use axis values" +msgstr "" +"Es darf maximal eine Wegbedingung mit einer Koordinaten-Angabe pro Satz " +"verwendet werden" + +#: src/emc/rs274ngc/rs274ngc_return.hh:70 +msgid "Command too long" +msgstr "Befehl zu lang" + +#: src/emc/rs274ngc/rs274ngc_return.hh:71 +msgid "Current point same as end point of arc" +msgstr "" +"Aktueller Koordinaten-Punkt ist identisch mit dem Endpunkt des Kreisbogens" + +#: src/emc/rs274ngc/rs274ngc_return.hh:72 +msgid "Dwell time missing with g4" +msgstr "Verweilzeit-Angabe fehlt bei G4" + +#: src/emc/rs274ngc/rs274ngc_return.hh:73 +msgid "Dwell time p word missing with g82" +msgstr "Verweilzeit-Angabe durch P-Wort fehlt bei G82" + +#: src/emc/rs274ngc/rs274ngc_return.hh:74 +msgid "Dwell time p word missing with g86" +msgstr "Verweilzeit-Angabe durch P-Wort fehlt bei G86" + +#: src/emc/rs274ngc/rs274ngc_return.hh:75 +msgid "Dwell time p word missing with g88" +msgstr "Verweilzeit-Angabe durch P-Wort fehlt bei G88" + +#: src/emc/rs274ngc/rs274ngc_return.hh:76 +msgid "Dwell time p word missing with g89" +msgstr "Verweilzeit-Angabe durch P-Wort fehlt bei G89" + +#: src/emc/rs274ngc/rs274ngc_return.hh:77 +msgid "Equal sign missing in parameter setting" +msgstr "Gleichheitszeichen beim Setzen eines Parameters fehlt" + +#: src/emc/rs274ngc/rs274ngc_return.hh:78 +msgid "F word missing with inverse time arc move" +msgstr "" +"Angabe eines F-Wörters zum Fahren eines Kreisbogens im zeitreziproken " +"Vorschub-Modus fehlt" + +#: src/emc/rs274ngc/rs274ngc_return.hh:79 +msgid "F word missing with inverse time g1 move" +msgstr "" +"Angabe eines F-Wörters zum Verfahren mit G1 im zeitreziproken Vorschub-Modus " +"fehlt" + +#: src/emc/rs274ngc/rs274ngc_return.hh:80 +msgid "File ended with no percent sign" +msgstr "Es fehlt ein Prozent-Zeichen am Ende der Datei" + +#: src/emc/rs274ngc/rs274ngc_return.hh:81 +msgid "File ended with no percent sign or program end" +msgstr "" +"Es fehlt ein Prozent-Zeichen oder ein Programm-Ende-Wort am Ende der Datei" + +#: src/emc/rs274ngc/rs274ngc_return.hh:82 +msgid "File name too long" +msgstr "Dateiname zu lang" + +#: src/emc/rs274ngc/rs274ngc_return.hh:83 +msgid "G code out of range" +msgstr "G-Wort außerhalb des erlaubten Bereiches" + +#: src/emc/rs274ngc/rs274ngc_return.hh:84 +msgid "I word given for arc in yz plane" +msgstr "Angabe eines I-Wörters für einen Kreisbogen in der YZ-Ebene" + +#: src/emc/rs274ngc/rs274ngc_return.hh:85 +msgid "I word missing with g87" +msgstr "I-Wort fehlt bei G87" + +#: src/emc/rs274ngc/rs274ngc_return.hh:86 +msgid "J word given for arc in xz plane" +msgstr "Angabe eines J-Wörters für einen Kreisbogen in der XZ-Ebene" + +#: src/emc/rs274ngc/rs274ngc_return.hh:87 +msgid "J word missing with g87" +msgstr "Es fehlt ein J-Wort für G87" + +#: src/emc/rs274ngc/rs274ngc_return.hh:88 +msgid "K word given for arc in xy plane" +msgstr "Angabe eines K-Wörters für einen Kreisbogen in der XY-Ebene" + +#: src/emc/rs274ngc/rs274ngc_return.hh:89 +msgid "K word missing with g87" +msgstr "Es fehlt ein J-Wort für G87" + +# Anmerkung:FJ: Schrägstrich, atan? Klären? Division wie bei c-Funktion atan2(x,y) ??? +#: src/emc/rs274ngc/rs274ngc_return.hh:90 +msgid "Left bracket missing after slash with atan" +msgstr "Fehlende linke Klammer nach Schrägstrich bei atan" + +#: src/emc/rs274ngc/rs274ngc_return.hh:91 +msgid "Left bracket missing after unary operation name" +msgstr "Fehlende linke Klammer nach unärem Befehlssnamen" + +#: src/emc/rs274ngc/rs274ngc_return.hh:92 +#, fuzzy, c-format +msgid "M code greater than 199: M%d" +msgstr "M-Wort größer als 199" + +#: src/emc/rs274ngc/rs274ngc_return.hh:93 +msgid "Mixed radius ijk format for arc" +msgstr "Radius- und IJK-Format durcheinandergewürfelt" + +#: src/emc/rs274ngc/rs274ngc_return.hh:94 +msgid "Multiple a words on one line" +msgstr "Mehrere A-Wörter in einem Satz" + +#: src/emc/rs274ngc/rs274ngc_return.hh:95 +msgid "Multiple b words on one line" +msgstr "Mehrere B-Wörter in einem Satz" + +#: src/emc/rs274ngc/rs274ngc_return.hh:96 +msgid "Multiple c words on one line" +msgstr "Mehrere C-Wörter in einem Satz" + +#: src/emc/rs274ngc/rs274ngc_return.hh:97 +msgid "Multiple d words on one line" +msgstr "Mehrere D-Wörter in einem Satz" + +#: src/emc/rs274ngc/rs274ngc_return.hh:98 +msgid "Multiple f words on one line" +msgstr "Mehrere F-Wörter in einem Satz" + +#: src/emc/rs274ngc/rs274ngc_return.hh:99 +msgid "Multiple h words on one line" +msgstr "Mehrere H-Wörter in einem Satz" + +#: src/emc/rs274ngc/rs274ngc_return.hh:100 +msgid "Multiple i words on one line" +msgstr "Mehrere I-Wörter in einem Satz" + +#: src/emc/rs274ngc/rs274ngc_return.hh:101 +msgid "Multiple j words on one line" +msgstr "Mehrere J-Wörter in einem Satz" + +#: src/emc/rs274ngc/rs274ngc_return.hh:102 +msgid "Multiple k words on one line" +msgstr "Mehrere K-Wörter in einem Satz" + +#: src/emc/rs274ngc/rs274ngc_return.hh:103 +msgid "Multiple l words on one line" +msgstr "Mehrere L-Wörter in einem Satz" + +#: src/emc/rs274ngc/rs274ngc_return.hh:104 +msgid "Multiple p words on one line" +msgstr "Mehrere P-Wörter in einem Satz" + +#: src/emc/rs274ngc/rs274ngc_return.hh:105 +msgid "Multiple q words on one line" +msgstr "Mehrere Q-Wörter in einem Satz" + +#: src/emc/rs274ngc/rs274ngc_return.hh:106 +msgid "Multiple r words on one line" +msgstr "Mehrere R-Wörter in einem Satz" + +#: src/emc/rs274ngc/rs274ngc_return.hh:107 +msgid "Multiple s words on one line" +msgstr "Mehrere S-Wörter in einem Satz" + +#: src/emc/rs274ngc/rs274ngc_return.hh:108 +msgid "Multiple t words on one line" +msgstr "Mehrere T-Wörter in einem Satz" + +#: src/emc/rs274ngc/rs274ngc_return.hh:109 +msgid "Multiple x words on one line" +msgstr "Mehrere X-Wörter in einem Satz" + +#: src/emc/rs274ngc/rs274ngc_return.hh:110 +msgid "Multiple y words on one line" +msgstr "Mehrere Y-Wörter in einem Satz" + +#: src/emc/rs274ngc/rs274ngc_return.hh:111 +msgid "Multiple z words on one line" +msgstr "Mehrere Z-Wörter in einem Satz" + +#: src/emc/rs274ngc/rs274ngc_return.hh:112 +msgid "Must use g0 or g1 with g53" +msgstr "G53 muß immer zusammen mit G0 oder G1 benutzt werden" + +#: src/emc/rs274ngc/rs274ngc_return.hh:113 +msgid "Negative argument to sqrt" +msgstr "Wurzel (sqrt-Befehl) mit negativem Argument" + +#: src/emc/rs274ngc/rs274ngc_return.hh:114 +msgid "Negative d word tool radius index used" +msgstr "" +"Negative Zahl bei bei D-Wort (Werkzeug-Radius als Index in der Werkzeug-" +"Tabelle)" + +#: src/emc/rs274ngc/rs274ngc_return.hh:115 +msgid "Negative f word used" +msgstr "F-Wort mit negativer Zahl" + +#: src/emc/rs274ngc/rs274ngc_return.hh:116 +msgid "Negative g code used" +msgstr "G-Wort mit negativer Zahl" + +#: src/emc/rs274ngc/rs274ngc_return.hh:117 +msgid "Negative h word used" +msgstr "H-Wort mit negativer Zahl" + +#: src/emc/rs274ngc/rs274ngc_return.hh:118 +msgid "Negative l word used" +msgstr "L-Wort mit negativer Zahl" + +#: src/emc/rs274ngc/rs274ngc_return.hh:119 +msgid "Negative m code used" +msgstr "M-Wort mit negativer Zahl" + +#: src/emc/rs274ngc/rs274ngc_return.hh:120 +msgid "Negative or zero q value used" +msgstr "Q-Wert kleiner oder gleich Null" + +#: src/emc/rs274ngc/rs274ngc_return.hh:121 +msgid "Negative p word used" +msgstr "P-Wort mit negativer Zahl" + +#: src/emc/rs274ngc/rs274ngc_return.hh:122 +msgid "Negative spindle speed used" +msgstr "Geschwindigkeit der Werkzeug-Spindel kleiner Null" + +#: src/emc/rs274ngc/rs274ngc_return.hh:123 +msgid "Negative tool id used" +msgstr "Negative Werkzeugnummer verwendet" + +#: src/emc/rs274ngc/rs274ngc_return.hh:124 +msgid "Nested comment found" +msgstr "Verschachtelter Kommentar entdeckt" + +#: src/emc/rs274ngc/rs274ngc_return.hh:125 +msgid "No characters found in reading real value" +msgstr "Reelle Zahl erwartet, aber keinerlei Zeichen gefunden" + +#: src/emc/rs274ngc/rs274ngc_return.hh:126 +msgid "Non integer value for integer" +msgstr "" +"Angabe eines nicht-ganzzahligen Wertes, obwohl eine Ganzzahl erwartet wurde" + +#: src/emc/rs274ngc/rs274ngc_return.hh:127 +msgid "Null missing after newline" +msgstr "Fehlende Null nach Zeilenumbruch" + +#: src/emc/rs274ngc/rs274ngc_return.hh:128 +msgid "Parameter file out of order" +msgstr "Parameter-Datei nicht in Ordnung" + +#: src/emc/rs274ngc/rs274ngc_return.hh:129 +msgid "Parameter number out of range" +msgstr "Parameter-Nummer ausserhalb des gültigen Bereichs" + +#: src/emc/rs274ngc/rs274ngc_return.hh:130 +#, fuzzy +msgid "Parameter is readonly" +msgstr "Parameterdatei" + +#: src/emc/rs274ngc/rs274ngc_return.hh:131 +msgid "Q word missing with g83" +msgstr "Q-Wort fehlt bei G83" + +#: src/emc/rs274ngc/rs274ngc_return.hh:132 +msgid "Queue is not empty after probing" +msgstr "Warteschlange ist nach Abtast-Fahrt nicht leer" + +#: src/emc/rs274ngc/rs274ngc_return.hh:133 +msgid "R clearance plane unspecified in cycle" +msgstr "Angabe einer R-Abstands-Ebene für den Zklyus fehlt" + +#: src/emc/rs274ngc/rs274ngc_return.hh:134 +msgid "R i j k words all missing for arc" +msgstr "Angabe von R, I, J oder K fehlt bei einem Kreisbogen" + +#: src/emc/rs274ngc/rs274ngc_return.hh:135 +msgid "R less than x in cycle in yz plane" +msgstr "R ist kleiner als X während eines Arbeitszyklus in der YZ-Ebene" + +#: src/emc/rs274ngc/rs274ngc_return.hh:136 +msgid "R less than y in cycle in xz plane" +msgstr "R ist kleiner als Y während eines Arbeitszyklus in der XZ-Ebene" + +#: src/emc/rs274ngc/rs274ngc_return.hh:137 +msgid "R less than z in cycle in xy plane" +msgstr "R ist kleiner als Z während eines Arbeitszyklus in der XY-Ebene" + +#: src/emc/rs274ngc/rs274ngc_return.hh:138 +msgid "R word with no g code that uses it" +msgstr "Koordinaten-Wort R ohne zugehörige Wegbedingung (G)" + +#: src/emc/rs274ngc/rs274ngc_return.hh:139 +msgid "Slash missing after first atan argument" +msgstr "Fehlender Schrägstrich nach dem ersten Argument in einer atan-Funktion" + +#: src/emc/rs274ngc/rs274ngc_return.hh:140 +msgid "Spindle not turning clockwise in g84" +msgstr "G84, aber Werkzeug-Spindel dreht sich nicht im Uhrzeigersinn" + +#: src/emc/rs274ngc/rs274ngc_return.hh:141 +msgid "Spindle not turning in g86" +msgstr "G86, aber Werkzeug-Spindel nicht in Rotation" + +#: src/emc/rs274ngc/rs274ngc_return.hh:142 +msgid "Spindle not turning in g87" +msgstr "G87, aber Werkzeug-Spindel nicht in Rotation" + +#: src/emc/rs274ngc/rs274ngc_return.hh:143 +msgid "Spindle not turning in g88" +msgstr "G88, aber Werkzeug-Spindel nicht in Rotation" + +#: src/emc/rs274ngc/rs274ngc_return.hh:144 +msgid "Sscanf failed" +msgstr "Fehler in Funktion sscanf()" + +#: src/emc/rs274ngc/rs274ngc_return.hh:145 +msgid "Start point too close to probe point" +msgstr "Startpunkt zu dicht am Abtast-Punkt" + +#: src/emc/rs274ngc/rs274ngc_return.hh:146 +msgid "Too many m codes on line" +msgstr "Zu viele M-Wörter in einer Zeile" + +# Anmerkung:FJ: Tool max? Was das? +# Anmerkung:AJ: sollte "Index in tool table file too large" sein +#: src/emc/rs274ngc/rs274ngc_return.hh:147 +#, fuzzy +msgid "Pocket max too large" +msgstr "Werkzeug-Datei-Index zu groß" + +#: src/emc/rs274ngc/rs274ngc_return.hh:148 +msgid "Tool radius not less than arc radius with comp" +msgstr "" +"Werkzeug-Radius bei der Werkzeugbahnkorrektur ist größer als der " +"Kreisbogenradius" + +#: src/emc/rs274ngc/rs274ngc_return.hh:149 +msgid "Two g codes used from same modal group" +msgstr "" +"Benutzung von zwei G-Wörtern aus der selben modalen Gruppe in einer Zeile" + +#: src/emc/rs274ngc/rs274ngc_return.hh:150 +msgid "Two m codes used from same modal group" +msgstr "" +"Benutzung von zwei M-Wörtern aus der selben modalen Gruppe in einer Zeile" + +#: src/emc/rs274ngc/rs274ngc_return.hh:151 +#, fuzzy, c-format +msgid "Unable to open file <%s>" +msgstr "Datei kann nicht geöffnet werden" + +#: src/emc/rs274ngc/rs274ngc_return.hh:152 +msgid "Unclosed comment found" +msgstr "Nicht abgeschlossener Kommentar" + +#: src/emc/rs274ngc/rs274ngc_return.hh:153 +msgid "Unclosed expression" +msgstr "Nicht abgeschlossener Ausdruck" + +#: src/emc/rs274ngc/rs274ngc_return.hh:154 +msgid "Unknown g code used" +msgstr "Unbekanntes G-Wort" + +#: src/emc/rs274ngc/rs274ngc_return.hh:155 +#, fuzzy, c-format +msgid "Unknown m code used: M%d" +msgstr "Unbekanntes M-Wort" + +#: src/emc/rs274ngc/rs274ngc_return.hh:156 +msgid "Unknown operation" +msgstr "Unbekannter Befehl" + +#: src/emc/rs274ngc/rs274ngc_return.hh:157 +msgid "Unknown operation name starting with a" +msgstr "Unbekannter Befehl beginnend mit A" + +#: src/emc/rs274ngc/rs274ngc_return.hh:158 +msgid "Unknown operation name starting with m" +msgstr "Unbekannter Befehl beginnend mit M" + +#: src/emc/rs274ngc/rs274ngc_return.hh:159 +msgid "Unknown operation name starting with o" +msgstr "Unbekannter Befehl beginnend mit O" + +#: src/emc/rs274ngc/rs274ngc_return.hh:160 +msgid "Unknown operation name starting with x" +msgstr "Unbekannter Befehl beginnend mit X" + +#: src/emc/rs274ngc/rs274ngc_return.hh:161 +msgid "Unknown word starting with a" +msgstr "Unbekanntes Wort beginnend mit A" + +#: src/emc/rs274ngc/rs274ngc_return.hh:162 +msgid "Unknown word starting with c" +msgstr "Unbekanntes Wort beginnend mit C" + +#: src/emc/rs274ngc/rs274ngc_return.hh:163 +msgid "Unknown word starting with e" +msgstr "Unbekanntes Wort beginnend mit E" + +#: src/emc/rs274ngc/rs274ngc_return.hh:164 +msgid "Unknown word starting with f" +msgstr "Unbekanntes Wort beginnend mit F" + +#: src/emc/rs274ngc/rs274ngc_return.hh:165 +msgid "Unknown word starting with l" +msgstr "Unbekanntes Wort beginnend mit L" + +#: src/emc/rs274ngc/rs274ngc_return.hh:166 +msgid "Unknown word starting with r" +msgstr "Unbekanntes Wort beginnend mit R" + +#: src/emc/rs274ngc/rs274ngc_return.hh:167 +msgid "Unknown word starting with s" +msgstr "Unbekanntes Wort beginnend mit S" + +#: src/emc/rs274ngc/rs274ngc_return.hh:168 +msgid "Unknown word starting with t" +msgstr "Unbekanntes Wort beginnend mit T" + +#: src/emc/rs274ngc/rs274ngc_return.hh:169 +msgid "Unknown word where unary operation could be" +msgstr "Unbekanntes Wort, wo unärer Befehl erwartet" + +#: src/emc/rs274ngc/rs274ngc_return.hh:170 +msgid "X and y words missing for arc in xy plane" +msgstr "X- und Y-Wörter fehlen für Kreisbogen in der XY-Ebene" + +#: src/emc/rs274ngc/rs274ngc_return.hh:171 +msgid "X and z words missing for arc in xz plane" +msgstr "X- und Z-Wörter fehlen für Kreisbogen in XZ-Ebene" + +#: src/emc/rs274ngc/rs274ngc_return.hh:172 +msgid "X value unspecified in yz plane canned cycle" +msgstr "Keine Angabe eines X-Wertes bei Arbeitszyklus in XZ-Ebene" + +#: src/emc/rs274ngc/rs274ngc_return.hh:173 +msgid "Y and z words missing for arc in yz plane" +msgstr "Y- und Z-Wort fehlt für Kreisbogen in YZ-Ebene" + +#: src/emc/rs274ngc/rs274ngc_return.hh:174 +msgid "Y value unspecified in xz plane canned cycle" +msgstr "Keine Angabe eines Y-Wertes bei Arbeitszyklus in XZ-Ebene" + +#: src/emc/rs274ngc/rs274ngc_return.hh:175 +msgid "Z value unspecified in xy plane canned cycle" +msgstr "Keine Angabe eines Z-Wertes bei Arbeitszyklus in XY-Ebene" + +#: src/emc/rs274ngc/rs274ngc_return.hh:176 +msgid "Zero or negative argument to ln" +msgstr "Argument der ln-Funktion kleiner oder gleich Null" + +#: src/emc/rs274ngc/rs274ngc_return.hh:177 +msgid "Zero radius arc" +msgstr "Kreis mit Radius Null" + +#: src/emc/rs274ngc/rs274ngc_return.hh:178 +msgid "K word missing with g33/g33.1" +msgstr "Es fehlt ein K-Wort für G33/G33.1" + +#: src/emc/rs274ngc/rs274ngc_return.hh:179 +msgid "F word used with a g33/g33.1" +msgstr "Benutzung eines F-Wörters mit G33/G33.1" + +#: src/emc/rs274ngc/rs274ngc_return.hh:180 +msgid "Unknown operation name starting with e" +msgstr "Unbekannter Befehl beginnend mit E" + +#: src/emc/rs274ngc/rs274ngc_return.hh:181 +msgid "Unknown operation name starting with n" +msgstr "Unbekannter Befehl beginnend mit N" + +#: src/emc/rs274ngc/rs274ngc_return.hh:182 +msgid "Unknown operation name starting with g" +msgstr "Unbekannter Befehl beginnend mit G" + +#: src/emc/rs274ngc/rs274ngc_return.hh:183 +msgid "Unknown operation name starting with l" +msgstr "Unbekannter Befehl beginnend mit L" + +#: src/emc/rs274ngc/rs274ngc_return.hh:184 +msgid "Too many subroutine parameters" +msgstr "Zu viele Parameter für die Unterfunktion" + +#: src/emc/rs274ngc/rs274ngc_return.hh:185 +msgid "Too many subroutine levels" +msgstr "Zu viele Ebenen für die Unterfunktion" + +#: src/emc/rs274ngc/rs274ngc_return.hh:186 +msgid "Bug: call stack underrun" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:187 +msgid "Unknown control command in o word" +msgstr "Unbekannter Befehl im O-Wort" + +#: src/emc/rs274ngc/rs274ngc_return.hh:188 +msgid "Too many oword labels" +msgstr "Zu viele O-Wort Bezeichner" + +#: src/emc/rs274ngc/rs274ngc_return.hh:189 +msgid "Unknown oword number" +msgstr "Unbekannte O-Wort-Nummer" + +#: src/emc/rs274ngc/rs274ngc_return.hh:190 +msgid "Nested subroutine definition" +msgstr "Verschachtelte Definition einer Unterfunktion" + +#: src/emc/rs274ngc/rs274ngc_return.hh:191 +msgid "Not in subroutine definition" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:192 +msgid "File not open" +msgstr "Datei ist nicht geöffnet" + +#: src/emc/rs274ngc/rs274ngc_return.hh:193 +#, c-format +msgid "cannot reopen file %s - removed or renamed? (%s)" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:194 +msgid "Need tool prepared -Txx- for toolchange" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:195 +msgid "Cannot change planes with cutter radius compensation on" +msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" + +#: src/emc/rs274ngc/rs274ngc_return.hh:196 +msgid "Cutter radius compensation allowed only in XY, XZ planes" +msgstr "Werkzeugradiuskorrektur ist nur in XY- und XZ-Ebenen erlaubt" + +#: src/emc/rs274ngc/rs274ngc_return.hh:197 +msgid "P word missing with G76" +msgstr "P-Wort fehlt bei G87" + +#: src/emc/rs274ngc/rs274ngc_return.hh:198 +msgid "I J or K words missing with G76" +msgstr "I-, J- oder K-Wort fehlt bei G76" + +#: src/emc/rs274ngc/rs274ngc_return.hh:199 +msgid "Cannot move rotary axes with G76" +msgstr "Rotations-Achse kann nicht mit G76 bewegt werden" + +#: src/emc/rs274ngc/rs274ngc_return.hh:200 +msgid "Multiple e words on one line" +msgstr "Mehrere E-Wörter in einer einzelnen Zeile" + +#: src/emc/rs274ngc/rs274ngc_return.hh:201 +msgid "Named parameter not terminated" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:202 +msgid "Out of memory" +msgstr "Platz im Hauptspeicher reicht nicht aus" + +#: src/emc/rs274ngc/rs274ngc_return.hh:203 +msgid "S word missing with G96" +msgstr "S-Wort fehlt bei G96" + +#: src/emc/rs274ngc/rs274ngc_return.hh:204 +msgid "Queue is not empty after external input" +msgstr "Warteschlange ist nach externer Eingabe nicht leer" + +#: src/emc/rs274ngc/rs274ngc_return.hh:205 +msgid "Can't select analog input with wait type != immediate return" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:206 +msgid "Zero timeout with wait type != immediate return" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:207 +msgid "Invalid to select both a digital and an analog input with M66" +msgstr "" +"Befehl M66 kann nicht gleichtzeitig einen Analog- und Digitaleingang " +"auswählen" + +#: src/emc/rs274ngc/rs274ngc_return.hh:208 +msgid "Need to have either a valid P or a valid E word with M66" +msgstr "Befehl M66 muss ein gültiges P- oder E-Wort enthalten" + +#: src/emc/rs274ngc/rs274ngc_return.hh:209 +msgid "Q word missing with g73" +msgstr "Q-Wort fehlt bei G73" + +#: src/emc/rs274ngc/rs274ngc_return.hh:210 +msgid "Digital input selected out of bounds" +msgstr "Gewählter Digitaleingang liegt außerhalb des gültigen Bereichs" + +#: src/emc/rs274ngc/rs274ngc_return.hh:211 +msgid "Analog input selected out of bounds" +msgstr "Gewählter Analogeingang liegt außerhalb des gültigen Bereichs" + +#: src/emc/rs274ngc/rs274ngc_return.hh:212 +msgid "W value unspecified in UV plane canned cycle" +msgstr "Keine Angabe eines W-Wertes bei Arbeitszyklus in UV-Ebene" + +#: src/emc/rs274ngc/rs274ngc_return.hh:213 +msgid "U value unspecified in VW plane canned cycle" +msgstr "Keine Angabe eines U-Wertes bei Arbeitszyklus in VW-Ebene" + +#: src/emc/rs274ngc/rs274ngc_return.hh:214 +msgid "V value unspecified in UW plane canned cycle" +msgstr "Keine Angabe eines V-Wertes bei Arbeitszyklus in UW-Ebene" + +#: src/emc/rs274ngc/rs274ngc_return.hh:215 +msgid "R less than W in cycle in UV plane" +msgstr "R ist kleiner als W während Arbeitszyklus in UV-Ebene" + +#: src/emc/rs274ngc/rs274ngc_return.hh:216 +msgid "R less than U in cycle in VW plane" +msgstr "R ist kleiner als U während Arbeitszyklus in VW-Ebene" + +#: src/emc/rs274ngc/rs274ngc_return.hh:217 +msgid "R less than V in cycle in UW plane" +msgstr "R ist kleiner als V während Arbeitszyklus in UW-Ebene" + +#: src/hal/utils/meter.c:200 #, c-format msgid "ERROR: '%s' is not a valid probe type\n" msgstr "FEHLER: »%s« ist kein gültiger Typ\n" -#: src/hal/utils/meter.c:206 hal/utils/meter.c:189 +#: src/hal/utils/meter.c:208 #, c-format msgid "ERROR: no pin/signal/parameter name\n" msgstr "FEHLER: Kein Pin-, Signal- oder Parameter-Name\n" -#: src/hal/utils/meter.c:212 +#: src/hal/utils/meter.c:214 #, c-format msgid "" "ERROR: -s option requires a probe type and a pin/signal/parameter name\n" msgstr "FEHLER: Kein Pin-, Signal- oder Parameter-Name mit -s\n" -#: src/hal/utils/meter.c:238 tcl/tklinuxcnc.tcl:764 hal/utils/meter.c:229 -#: ../tcl/tkemc.tcl:816 +#: src/hal/utils/meter.c:240 tcl/tklinuxcnc.tcl:764 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6431 msgid "Hal Meter" msgstr "HAL-Meter" -#: src/hal/utils/meter.c:287 hal/utils/meter.c:278 +#: src/hal/utils/meter.c:290 msgid "_Select" msgstr "_Auswahl ändern" -#: src/hal/utils/meter.c:288 hal/utils/meter.c:279 +#: src/hal/utils/meter.c:291 msgid "E_xit" msgstr "_Beenden" -#: src/hal/utils/meter.c:336 src/hal/utils/meter.c:364 hal/utils/meter.c:355 +#: src/hal/utils/meter.c:339 src/hal/utils/meter.c:367 msgid "Select Item to Probe" msgstr "Element zum Anzeigen auswählen" -#: src/hal/utils/meter.c:640 hal/utils/meter.c:630 +#: src/hal/utils/meter.c:669 msgid " _Pins " msgstr "_Pins" -#: src/hal/utils/meter.c:641 hal/utils/meter.c:631 +#: src/hal/utils/meter.c:670 msgid " _Signals " msgstr "_Signale" -#: src/hal/utils/meter.c:642 hal/utils/meter.c:632 +#: src/hal/utils/meter.c:671 msgid " Para_meters " msgstr "Para_meter" -#: src/hal/utils/meter.c:685 hal/utils/meter.c:675 +#: src/hal/utils/meter.c:714 msgid "_Close" msgstr "_Schließen" -#: src/hal/utils/scope.c:126 hal/utils/scope.c:130 +#: src/hal/utils/scope.c:126 msgid "" "Usage:\n" " halscope [-h] [-i infile] [-o outfile] [num_samples]\n" @@ -70,97 +1801,94 @@ msgstr "" "Benutzung:\n" " halscope [-h] [-i Eingabedatei] [-o Ausgabedatei] [Anzahl der Samples]\n" -#: src/hal/utils/scope.c:474 src/hal/utils/scope.c:501 hal/utils/scope.c:478 -#: hal/utils/scope.c:505 +#: src/hal/utils/scope.c:479 src/hal/utils/scope.c:506 msgid "Open Configuration File:" msgstr "Konfiguration öffnen" -#: src/hal/utils/scope.c:535 hal/utils/scope.c:539 +#: src/hal/utils/scope.c:540 msgid "_Open Configuration..." msgstr "K_onfiguration laden..." -#: src/hal/utils/scope.c:541 hal/utils/scope.c:545 +#: src/hal/utils/scope.c:546 msgid "_Save Configuration..." msgstr "Konfiguration _speichern..." -#: src/hal/utils/scope.c:550 hal/utils/scope.c:554 +#: src/hal/utils/scope.c:555 msgid "O_pen Data File..." msgstr "_Daten laden..." -#: src/hal/utils/scope.c:557 hal/utils/scope.c:561 +#: src/hal/utils/scope.c:562 msgid "S_ave Data File..." msgstr "D_aten speichern..." -#: src/hal/utils/scope.c:566 share/axis/tcl/axis.tcl:93 hal/utils/scope.c:570 -#: ../share/axis/tcl/axis.tcl:91 +#: src/hal/utils/scope.c:571 share/axis/tcl/axis.tcl:96 msgid "_Quit" msgstr "_Beenden" -#: src/hal/utils/scope.c:572 hal/utils/scope.c:576 +#: src/hal/utils/scope.c:577 msgid "_About Halscope" msgstr "Über H_AL-Scope" -#: src/hal/utils/scope.c:578 share/axis/tcl/axis.tcl:435 hal/utils/scope.c:582 -#: ../share/axis/tcl/axis.tcl:411 +#: src/hal/utils/scope.c:583 share/axis/tcl/axis.tcl:501 msgid "_File" msgstr "_Datei" -#: src/hal/utils/scope.c:582 share/axis/tcl/axis.tcl:447 hal/utils/scope.c:586 -#: ../share/axis/tcl/axis.tcl:423 +#: src/hal/utils/scope.c:587 share/axis/tcl/axis.tcl:517 msgid "_Help" msgstr "_Hilfe" -#: src/hal/utils/scope.c:641 hal/utils/scope.c:645 +#: src/hal/utils/scope.c:646 msgid "HAL Oscilloscope" msgstr "HAL-Oszilloskop" -#: src/hal/utils/scope.c:669 hal/utils/scope.c:673 +#: src/hal/utils/scope.c:674 msgid "Horizontal" msgstr "Horizontal" -#: src/hal/utils/scope.c:677 hal/utils/scope.c:681 +#: src/hal/utils/scope.c:682 msgid "Selected Channel" msgstr "Ausgewähler Kanal" -#: src/hal/utils/scope.c:683 hal/utils/scope.c:687 +#: src/hal/utils/scope.c:688 msgid "Run Mode" msgstr "Modus" -#: src/hal/utils/scope.c:686 hal/utils/scope.c:690 +#: src/hal/utils/scope.c:691 msgid "Trigger" msgstr "Trigger" -#: src/hal/utils/scope.c:692 hal/utils/scope.c:696 +#: src/hal/utils/scope.c:697 msgid "Vertical" msgstr "Vertikal" -#: src/hal/utils/scope.c:700 share/axis/tcl/axis.tcl:135 -#: share/axis/tcl/axis.tcl:1199 hal/utils/scope.c:704 -#: ../share/axis/tcl/axis.tcl:133 ../share/axis/tcl/axis.tcl:1156 +#: src/hal/utils/scope.c:705 share/axis/tcl/axis.tcl:138 +#: share/axis/tcl/axis.tcl:1269 src/emc/usr_intf/gscreen/gscreen.py:3416 +#: src/emc/usr_intf/gscreen/gscreen.py:3417 +#: src/emc/usr_intf/gscreen/gscreen.glade:2614 msgid "Stop" msgstr "Stopp" -#: src/hal/utils/scope.c:703 hal/utils/scope.c:707 +#: src/hal/utils/scope.c:708 msgid "Normal" msgstr "Normal" -#: src/hal/utils/scope.c:706 hal/utils/scope.c:710 +#: src/hal/utils/scope.c:711 msgid "Single" msgstr "Single" -#: src/hal/utils/scope.c:709 hal/utils/scope.c:713 +#: src/hal/utils/scope.c:714 msgid "Roll" msgstr "Roll" -#: src/hal/utils/scope_horiz.c:130 hal/utils/scope_horiz.c:137 +#: src/hal/utils/scope_horiz.c:130 src/emc/usr_intf/gscreen/gscreen.glade:3419 msgid "Zoom" msgstr "Zoom" -#: src/hal/utils/scope_horiz.c:131 hal/utils/scope_horiz.c:138 +#: src/hal/utils/scope_horiz.c:131 msgid " Pos " msgstr "Pos" -#: src/hal/utils/scope_horiz.c:164 hal/utils/scope_horiz.c:171 +#: src/hal/utils/scope_horiz.c:164 msgid "" "----- Samples\n" "at ---- KHz" @@ -168,11 +1896,11 @@ msgstr "" "----- Samples\n" "bei ---- kHz" -#: src/hal/utils/scope_horiz.c:459 hal/utils/scope_horiz.c:466 +#: src/hal/utils/scope_horiz.c:464 msgid "Realtime component not loaded" msgstr "Echtzeicht-Komponente nicht geladen" -#: src/hal/utils/scope_horiz.c:460 hal/utils/scope_horiz.c:467 +#: src/hal/utils/scope_horiz.c:465 #, fuzzy msgid "" "HALSCOPE uses a realtime component called scope_rt'\n" @@ -198,11 +1926,11 @@ msgstr "" "oder\n" "wählen Sie »Beenden« um HALSCOPE zu beenden" -#: hal/utils/scope_horiz.c:503 src/hal/utils/scope_horiz.c:495 +#: src/hal/utils/scope_horiz.c:536 msgid "Realtime function not linked" msgstr "Echtzeitfunktion nicht gelinkt" -#: hal/utils/scope_horiz.c:504 src/hal/utils/scope_horiz.c:496 +#: src/hal/utils/scope_horiz.c:537 msgid "" "The HALSCOPE realtime sampling function\n" "must be called from a HAL thread in to\n" @@ -224,11 +1952,11 @@ msgstr "" "oder\n" "klicken Sie 'Quit' um HALSCOPE zu verlassen." -#: src/hal/utils/scope_horiz.c:503 hal/utils/scope_horiz.c:511 +#: src/hal/utils/scope_horiz.c:544 msgid "Select Sample Rate" msgstr "Abtastrate auswählen" -#: src/hal/utils/scope_horiz.c:504 hal/utils/scope_horiz.c:512 +#: src/hal/utils/scope_horiz.c:545 #, fuzzy msgid "" "Select a thread name and multiplier then click 'OK'\n" @@ -240,115 +1968,91 @@ msgstr "" "oder\n" "wählen Sie »Beenden« um HALSCOPE zu beenden\n" -#: src/hal/utils/scope_horiz.c:526 hal/utils/scope_horiz.c:534 +#: src/hal/utils/scope_horiz.c:567 msgid "Thread:" msgstr "Thread:" -#: src/hal/utils/scope_horiz.c:534 hal/utils/scope_horiz.c:542 +#: src/hal/utils/scope_horiz.c:575 msgid "Sample Period:" msgstr "Abtastperiode:" -#: src/hal/utils/scope_horiz.c:542 hal/utils/scope_horiz.c:550 +#: src/hal/utils/scope_horiz.c:583 msgid "Sample Rate:" msgstr "Abtastrate:" -#: src/hal/utils/scope_horiz.c:558 src/emc/usr_intf/touchy/mdi.py:78 -#: hal/utils/scope_horiz.c:566 +#: src/hal/utils/scope_horiz.c:599 src/emc/usr_intf/touchy/mdi.py:79 +#: src/emc/usr_intf/gscreen/mdi.py:78 msgid "Thread" msgstr "Thread" -#: src/hal/utils/scope_horiz.c:559 hal/utils/scope_horiz.c:567 +#: src/hal/utils/scope_horiz.c:600 msgid "Period" msgstr "Periode" -#: src/hal/utils/scope_horiz.c:619 hal/utils/scope_horiz.c:627 +#: src/hal/utils/scope_horiz.c:638 msgid "Multiplier:" msgstr "Vervielfacher:" -#: src/hal/utils/scope_horiz.c:636 hal/utils/scope_horiz.c:644 +#: src/hal/utils/scope_horiz.c:655 msgid "Record Length" msgstr "Länge der Aufzeichnung:" -#: src/hal/utils/scope_horiz.c:639 hal/utils/scope_horiz.c:650 +#: src/hal/utils/scope_horiz.c:658 #, c-format msgid "%5d samples (1 channel)" msgstr "%5d Samples (1 Kanal)" -#: src/hal/utils/scope_horiz.c:641 hal/utils/scope_horiz.c:653 +#: src/hal/utils/scope_horiz.c:660 #, c-format msgid "%5d samples (2 channels)" msgstr "%5d Samples (2 Kanäle)" -#: src/hal/utils/scope_horiz.c:645 hal/utils/scope_horiz.c:657 +#: src/hal/utils/scope_horiz.c:664 #, c-format msgid "%5d samples (4 channels)" msgstr "%5d Samples (4 Kanäle)" -#: src/hal/utils/scope_horiz.c:649 hal/utils/scope_horiz.c:661 +#: src/hal/utils/scope_horiz.c:668 #, c-format msgid "%5d samples (8 channels)" msgstr "%5d Samples (8 Kanäle)" -#: src/hal/utils/scope_horiz.c:653 hal/utils/scope_horiz.c:665 +#: src/hal/utils/scope_horiz.c:672 #, c-format msgid "%5d samples (16 channels)" msgstr "%5d Samples (16 Kanäle)" -#: src/hal/utils/scope_horiz.c:708 src/hal/utils/scope_horiz.c:754 -#: src/hal/utils/scope_horiz.c:966 src/hal/utils/scope_vert.c:761 -#: src/hal/utils/scope_vert.c:853 tcl/bin/emccalib.tcl:227 +#: src/hal/utils/scope_horiz.c:727 src/hal/utils/scope_horiz.c:773 +#: src/hal/utils/scope_horiz.c:985 src/hal/utils/scope_vert.c:771 +#: src/hal/utils/scope_vert.c:863 tcl/bin/emccalib.tcl:232 #: tcl/bin/genedit.tcl:180 tcl/bin/genedit.tcl:450 tcl/bin/halconfig.tcl:682 -#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:257 -#: tcl/bin/pickconfig.tcl:479 tcl/bin/pickconfig.tcl:506 tcl/mini.tcl:1456 +#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:387 +#: tcl/bin/pickconfig.tcl:749 tcl/bin/pickconfig.tcl:799 tcl/mini.tcl:1456 #: tcl/mini.tcl:2937 tcl/tklinuxcnc.tcl:160 tcl/tklinuxcnc.tcl:245 #: tcl/tklinuxcnc.tcl:419 tcl/tklinuxcnc.tcl:1338 tcl/tklinuxcnc.tcl:1407 #: tcl/tklinuxcnc.tcl:1438 tcl/tklinuxcnc.tcl:1469 tcl/tklinuxcnc.tcl:2017 #: tcl/tklinuxcnc.tcl:2036 tcl/tklinuxcnc.tcl:2055 tcl/tklinuxcnc.tcl:2102 -#: src/emc/usr_intf/axis/scripts/axis.py:1069 -#: src/emc/usr_intf/axis/scripts/axis.py:1129 -#: src/emc/usr_intf/axis/scripts/axis.py:1445 -#: src/emc/usr_intf/axis/scripts/axis.py:2464 -#: src/emc/usr_intf/axis/scripts/axis.py:3320 +#: src/emc/usr_intf/axis/scripts/axis.py:1106 +#: src/emc/usr_intf/axis/scripts/axis.py:1173 +#: src/emc/usr_intf/axis/scripts/axis.py:1508 +#: src/emc/usr_intf/axis/scripts/axis.py:2672 +#: src/emc/usr_intf/axis/scripts/axis.py:3599 #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:718 -#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1720 -#: share/axis/tcl/axis.tcl:1757 src/emc/usr_intf/axis/scripts/axis.py:1077 -#: src/emc/usr_intf/axis/scripts/axis.py:1141 -#: src/emc/usr_intf/axis/scripts/axis.py:1458 -#: src/emc/usr_intf/axis/scripts/axis.py:2477 -#: src/emc/usr_intf/axis/scripts/axis.py:3336 hal/utils/scope_horiz.c:720 -#: hal/utils/scope_horiz.c:766 hal/utils/scope_horiz.c:981 -#: hal/utils/scope_vert.c:763 hal/utils/scope_vert.c:855 -#: ../tcl/bin/emccalib.tcl:227 ../tcl/bin/genedit.tcl:180 -#: ../tcl/bin/genedit.tcl:450 ../tcl/bin/halconfig.tcl:682 -#: ../tcl/bin/halconfig.tcl:733 ../tcl/bin/pickconfig.tcl:252 -#: ../tcl/bin/pickconfig.tcl:401 ../tcl/bin/pickconfig.tcl:426 -#: ../tcl/mini.tcl:1456 ../tcl/mini.tcl:2934 ../tcl/tkemc.tcl:215 -#: ../tcl/tkemc.tcl:318 ../tcl/tkemc.tcl:464 ../tcl/tkemc.tcl:1379 -#: ../tcl/tkemc.tcl:1448 ../tcl/tkemc.tcl:1479 ../tcl/tkemc.tcl:1510 -#: ../tcl/tkemc.tcl:2058 ../tcl/tkemc.tcl:2077 ../tcl/tkemc.tcl:2096 -#: ../tcl/tkemc.tcl:2143 emc/usr_intf/axis/scripts/axis.py:1955 -#: emc/usr_intf/axis/scripts/axis.py:2013 -#: emc/usr_intf/axis/scripts/axis.py:2268 -#: emc/usr_intf/axis/scripts/axis.py:3332 -#: emc/usr_intf/axis/scripts/axis.py:4080 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:709 -#: ../lib/python/propertywindow.py:34 ../share/axis/tcl/axis.tcl:1676 -#: ../share/axis/tcl/axis.tcl:1713 +#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1828 +#: share/axis/tcl/axis.tcl:1865 msgid "OK" msgstr "OK" -#: src/hal/utils/scope_horiz.c:713 src/hal/utils/scope_horiz.c:754 -#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 -#: hal/utils/scope_horiz.c:725 hal/utils/scope_horiz.c:766 -#: ../tcl/bin/emccalib.tcl:91 ../tcl/bin/halconfig.tcl:103 +#: src/hal/utils/scope_horiz.c:732 src/hal/utils/scope_horiz.c:773 +#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 tcl/tooledit.tcl:468 msgid "Quit" msgstr "Beenden" -#: hal/utils/scope_horiz.c:757 src/hal/utils/scope_horiz.c:745 +#: src/hal/utils/scope_horiz.c:764 msgid "Realtime thread(s) not running" msgstr "Echtzeit-Thread ist nicht gestarted" -#: hal/utils/scope_horiz.c:758 src/hal/utils/scope_horiz.c:746 +#: src/hal/utils/scope_horiz.c:765 msgid "" "HALSCOPE uses code in a realtime HAL thread to sample\n" "signals for display. The HAL thread(s) are not running.\n" @@ -373,15 +2077,15 @@ msgstr "" "oder\n" "klicken Sie 'Quit', um HALSCOPE zu verlassen." -#: hal/utils/scope_horiz.c:791 src/hal/utils/scope_horiz.c:779 +#: src/hal/utils/scope_horiz.c:798 msgid "Pick log file to write to:" msgstr "Wählen Sie eine Log-Datei zum Speichern:" -#: src/hal/utils/scope_horiz.c:962 hal/utils/scope_horiz.c:977 +#: src/hal/utils/scope_horiz.c:981 msgid "Not enough channels" msgstr "Nicht genügend Kanäle" -#: hal/utils/scope_horiz.c:978 src/hal/utils/scope_horiz.c:963 +#: src/hal/utils/scope_horiz.c:982 msgid "" "This record length cannot handle the channels\n" "that are currently enabled. Pick a shorter\n" @@ -392,7 +2096,7 @@ msgstr "" "sind. Wählen Sie einen kürzeren Wert,\n" "um mehr Kanäle zu unterstützen." -#: src/hal/utils/scope_horiz.c:1051 hal/utils/scope_horiz.c:1066 +#: src/hal/utils/scope_horiz.c:1070 #, fuzzy, c-format msgid "" "%s\n" @@ -401,7 +2105,7 @@ msgstr "" "%s\n" "pro Teilstrich" -#: src/hal/utils/scope_horiz.c:1066 hal/utils/scope_horiz.c:1081 +#: src/hal/utils/scope_horiz.c:1085 #, c-format msgid "" "%s samples\n" @@ -410,49 +2114,45 @@ msgstr "" "%s Samples\n" "bei %s" -#: src/hal/utils/scope_horiz.c:1170 hal/utils/scope_horiz.c:1185 +#: src/hal/utils/scope_horiz.c:1189 msgid "nSec" msgstr "ns" -#: src/hal/utils/scope_horiz.c:1173 hal/utils/scope_horiz.c:1188 +#: src/hal/utils/scope_horiz.c:1192 msgid "uSec" msgstr "µs" -#: src/hal/utils/scope_horiz.c:1177 hal/utils/scope_horiz.c:1192 +#: src/hal/utils/scope_horiz.c:1196 msgid "mSec" msgstr "ms" -#: src/hal/utils/scope_horiz.c:1181 -#: src/emc/usr_intf/pncconf/pncconf.glade:1953 -#: src/emc/usr_intf/pncconf/pncconf.glade:2825 -#: src/emc/usr_intf/pncconf/pncconf.glade:3706 -#: src/emc/usr_intf/pncconf/pncconf.glade:4587 hal/utils/scope_horiz.c:1196 +#: src/hal/utils/scope_horiz.c:1200 src/emc/usr_intf/pncconf/pncconf.glade:2635 +#: src/emc/usr_intf/pncconf/pncconf.glade:3533 +#: src/emc/usr_intf/pncconf/pncconf.glade:4414 +#: src/emc/usr_intf/pncconf/pncconf.glade:5295 msgid "Sec" msgstr "s" -#: src/hal/utils/scope_horiz.c:1198 -#: src/emc/usr_intf/stepconf/stepconf.glade:3664 -#: src/emc/usr_intf/stepconf/stepconf.glade:4040 -#: src/emc/usr_intf/pncconf/pncconf.glade:8268 -#: src/emc/usr_intf/pncconf/pncconf.glade:8281 -#: src/emc/usr_intf/pncconf/pncconf.glade:8458 hal/utils/scope_horiz.c:1213 -#: emc/usr_intf/stepconf/stepconf.glade:2459 -#: emc/usr_intf/stepconf/stepconf.glade:3142 -#: emc/usr_intf/pncconf/pncconf.glade:15953 -#: emc/usr_intf/pncconf/pncconf.glade:18084 +#: src/hal/utils/scope_horiz.c:1217 src/emc/usr_intf/stepconf/spindle.glade:301 +#: src/emc/usr_intf/stepconf/axisx.glade:693 +#: src/emc/usr_intf/stepconf/axisy.glade:679 +#: src/emc/usr_intf/stepconf/axisz.glade:679 +#: src/emc/usr_intf/stepconf/axisa.glade:693 +#: src/emc/usr_intf/pncconf/pncconf.glade:8024 +#: src/emc/usr_intf/pncconf/pncconf.glade:8201 +#: src/emc/usr_intf/pncconf/pncconf.glade:8213 msgid "Hz" msgstr "Hz" -#: src/hal/utils/scope_horiz.c:1201 hal/utils/scope_horiz.c:1216 +#: src/hal/utils/scope_horiz.c:1220 msgid "KHz" msgstr "kHz" -#: src/hal/utils/scope_horiz.c:1205 hal/utils/scope_horiz.c:1220 +#: src/hal/utils/scope_horiz.c:1224 msgid "Mhz" msgstr "MHz" -#: src/hal/utils/scope_vert.c:403 src/hal/utils/scope_vert.c:1258 -#: hal/utils/scope_vert.c:409 hal/utils/scope_vert.c:1260 +#: src/hal/utils/scope_vert.c:413 src/hal/utils/scope_vert.c:1303 #, c-format msgid "" "Offset\n" @@ -461,29 +2161,28 @@ msgstr "" "Offset\n" "%s" -#: src/hal/utils/scope_vert.c:618 hal/utils/scope_vert.c:620 +#: src/hal/utils/scope_vert.c:628 msgid "Gain" msgstr "Gain" -#: src/hal/utils/scope_vert.c:630 src/hal/utils/scope_trig.c:252 -#: hal/utils/scope_vert.c:632 hal/utils/scope_trig.c:259 +#: src/hal/utils/scope_vert.c:640 src/hal/utils/scope_trig.c:272 msgid "Pos" msgstr "Pos" -#: src/hal/utils/scope_vert.c:644 tcl/ngcgui_ttt.tcl:214 -#: src/emc/usr_intf/pncconf/pncconf.glade:57147 hal/utils/scope_vert.c:646 +#: src/hal/utils/scope_vert.c:654 tcl/ngcgui_ttt.tcl:214 +#: src/emc/usr_intf/pncconf/pncconf.glade:64273 msgid "Scale" msgstr "Scale" -#: src/hal/utils/scope_vert.c:657 hal/utils/scope_vert.c:659 +#: src/hal/utils/scope_vert.c:667 msgid "Chan Off" msgstr "Kan. aus" -#: src/hal/utils/scope_vert.c:713 hal/utils/scope_vert.c:715 +#: src/hal/utils/scope_vert.c:723 msgid "Set Offset" msgstr "Offset setzen" -#: src/hal/utils/scope_vert.c:714 hal/utils/scope_vert.c:716 +#: src/hal/utils/scope_vert.c:724 #, c-format msgid "" "Set the vertical offset\n" @@ -492,44 +2191,33 @@ msgstr "" "Vertikaler Offset\n" "für Kanal %d" -#: src/hal/utils/scope_vert.c:734 hal/utils/scope_vert.c:736 +#: src/hal/utils/scope_vert.c:744 msgid "AC Coupled" msgstr "AC-Kopplung" -#: src/hal/utils/scope_vert.c:769 src/hal/utils/scope_vert.c:1171 -#: src/hal/utils/scope_trig.c:367 tcl/bin/emccalib.tcl:229 +#: src/hal/utils/scope_vert.c:779 src/hal/utils/scope_vert.c:1215 +#: src/hal/utils/scope_trig.c:387 tcl/bin/emccalib.tcl:234 #: tcl/bin/genedit.tcl:294 tcl/bin/halconfig.tcl:103 tcl/bin/halconfig.tcl:684 -#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:260 -#: tcl/bin/pickconfig.tcl:369 tcl/mini.tcl:1457 tcl/mini.tcl:2938 +#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:390 +#: tcl/bin/pickconfig.tcl:567 tcl/mini.tcl:1457 tcl/mini.tcl:2938 #: tcl/mini.tcl:3110 tcl/tklinuxcnc.tcl:162 tcl/tklinuxcnc.tcl:213 #: tcl/tklinuxcnc.tcl:420 tcl/tklinuxcnc.tcl:1339 tcl/tklinuxcnc.tcl:1408 #: tcl/tklinuxcnc.tcl:1439 tcl/tklinuxcnc.tcl:1470 tcl/tklinuxcnc.tcl:2103 -#: src/emc/usr_intf/axis/scripts/axis.py:1391 -#: src/emc/usr_intf/axis/scripts/axis.py:1446 -#: src/emc/usr_intf/axis/scripts/axis.py:1633 +#: src/emc/usr_intf/axis/scripts/axis.py:1453 +#: src/emc/usr_intf/axis/scripts/axis.py:1509 +#: src/emc/usr_intf/axis/scripts/axis.py:1699 +#: src/emc/usr_intf/axis/scripts/axis.py:2108 #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:720 -#: src/emc/usr_intf/axis/scripts/axis.py:1404 -#: src/emc/usr_intf/axis/scripts/axis.py:1459 -#: src/emc/usr_intf/axis/scripts/axis.py:1646 hal/utils/scope_vert.c:771 -#: hal/utils/scope_vert.c:1173 hal/utils/scope_trig.c:378 -#: ../tcl/bin/emccalib.tcl:229 ../tcl/bin/genedit.tcl:294 -#: ../tcl/bin/halconfig.tcl:103 ../tcl/bin/halconfig.tcl:684 -#: ../tcl/bin/halconfig.tcl:735 ../tcl/bin/pickconfig.tcl:255 -#: ../tcl/bin/pickconfig.tcl:366 ../tcl/mini.tcl:1457 ../tcl/mini.tcl:2935 -#: ../tcl/mini.tcl:3107 ../tcl/tkemc.tcl:217 ../tcl/tkemc.tcl:260 -#: ../tcl/tkemc.tcl:286 ../tcl/tkemc.tcl:465 ../tcl/tkemc.tcl:1380 -#: ../tcl/tkemc.tcl:1449 ../tcl/tkemc.tcl:1480 ../tcl/tkemc.tcl:1511 -#: ../tcl/tkemc.tcl:2144 emc/usr_intf/axis/scripts/axis.py:2269 -#: emc/usr_intf/axis/scripts/axis.py:2458 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:711 +#: src/emc/usr_intf/stepconf/main_page.glade:467 +#: src/emc/usr_intf/gscreen/gscreen.glade:3986 msgid "Cancel" msgstr "Abbrechen" -#: src/hal/utils/scope_vert.c:849 hal/utils/scope_vert.c:851 +#: src/hal/utils/scope_vert.c:859 msgid "Too many channels" msgstr "Zu viele Kanäle" -#: hal/utils/scope_vert.c:852 src/hal/utils/scope_vert.c:850 +#: src/hal/utils/scope_vert.c:860 msgid "" "You cannot add another channel.\n" "\n" @@ -542,11 +2230,11 @@ msgstr "" "oder die Datensatzlänge verkleinern,\n" "um mehr Kanäle zu ermöglichen." -#: src/hal/utils/scope_vert.c:1026 hal/utils/scope_vert.c:1028 +#: src/hal/utils/scope_vert.c:1074 msgid "Select Channel Source" msgstr "Kanal-Quelle auswählen" -#: src/hal/utils/scope_vert.c:1027 hal/utils/scope_vert.c:1029 +#: src/hal/utils/scope_vert.c:1075 #, c-format msgid "" "Select a pin, signal, or parameter\n" @@ -555,31 +2243,29 @@ msgstr "" "Einen Pin, ein Signal oder einen Parameter\n" "als Quelle für den Kanal %d wählen." -#: src/hal/utils/scope_vert.c:1059 hal/utils/scope_vert.c:1061 +#: src/hal/utils/scope_vert.c:1107 msgid "Pins" msgstr "Pins" -#: src/hal/utils/scope_vert.c:1060 hal/utils/scope_vert.c:1062 +#: src/hal/utils/scope_vert.c:1108 msgid "Signals" msgstr "Signale" -#: src/hal/utils/scope_vert.c:1061 hal/utils/scope_vert.c:1063 +#: src/hal/utils/scope_vert.c:1109 msgid "Parameters" msgstr "Parameter" -#: src/hal/utils/scope_trig.c:110 hal/utils/scope_trig.c:117 +#: src/hal/utils/scope_trig.c:110 #, c-format msgid "Falling" msgstr "Fallende" -#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:275 -#: hal/utils/scope_trig.c:119 hal/utils/scope_trig.c:282 +#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:295 #, c-format msgid "Rising" msgstr "Steigende" -#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:283 -#: hal/utils/scope_trig.c:126 hal/utils/scope_trig.c:290 +#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:303 msgid "" "Source\n" "None" @@ -587,7 +2273,7 @@ msgstr "" "Quelle:\n" "Keine" -#: src/hal/utils/scope_trig.c:124 hal/utils/scope_trig.c:131 +#: src/hal/utils/scope_trig.c:124 #, c-format msgid "" "Source\n" @@ -596,44 +2282,42 @@ msgstr "" "Quelle:\n" "Kanal %2d" -#: src/hal/utils/scope_trig.c:199 tcl/tklinuxcnc.tcl:827 -#: src/emc/usr_intf/touchy/touchy.glade:2469 hal/utils/scope_trig.c:206 -#: ../tcl/tkemc.tcl:879 +#: src/hal/utils/scope_trig.c:219 tcl/tklinuxcnc.tcl:827 +#: src/emc/usr_intf/touchy/touchy.glade:2469 msgid "Auto" msgstr "Auto" -#: hal/utils/scope_trig.c:208 src/hal/utils/scope_trig.c:201 +#: src/hal/utils/scope_trig.c:221 msgid "Force" msgstr "Zwang" -#: hal/utils/scope_trig.c:242 hal/utils/scope_trig.c:276 -#: src/hal/utils/scope_trig.c:235 src/hal/utils/scope_trig.c:269 +#: src/hal/utils/scope_trig.c:255 src/hal/utils/scope_trig.c:289 msgid "Level" msgstr "Schwelle" -#: src/hal/utils/scope_trig.c:303 hal/utils/scope_trig.c:314 +#: src/hal/utils/scope_trig.c:323 msgid "Trigger Source" msgstr "Trigger-Quelle" -#: src/hal/utils/scope_trig.c:304 hal/utils/scope_trig.c:315 +#: src/hal/utils/scope_trig.c:324 msgid "Select a channel to use for triggering." msgstr "Einen Kanal als Trigger-Quelle wählen." -#: src/hal/utils/scope_trig.c:327 hal/utils/scope_trig.c:338 +#: src/hal/utils/scope_trig.c:347 msgid "Chan" msgstr "Kanal" -#: src/hal/utils/scope_trig.c:328 hal/utils/scope_trig.c:339 +#: src/hal/utils/scope_trig.c:348 msgid "Source" msgstr "Quelle" -#: src/emc/motion/control.c:261 +#: src/emc/motion/control.c:270 msgid "Unexpected realtime delay: check dmesg for details." msgstr "" "Unerwartete Echtzeitverzögerung.\n" "Details stehen in dmesg." -#: src/emc/motion/control.c:263 +#: src/emc/motion/control.c:272 #, c-format msgid "" "\n" @@ -647,7 +2331,7 @@ msgstr "" "Clockimpulse zwischen den Impulsen an \n" "die Motorsteuerung ausgefallen.\n" -#: src/emc/motion/control.c:268 +#: src/emc/motion/control.c:277 #, c-format msgid "" "This time, there were %ld which is so anomalously\n" @@ -661,304 +2345,327 @@ msgstr "" "figuration hinweist. Für die Restlaufzeit\n" "von EMC wird diese Meldung unterdrückt.\n" -#: src/emc/motion/control.c:384 +#: src/emc/motion/control.c:394 msgid "G38.4 move finished without breaking contact." msgstr "G38.4: Bewegung ohne Kontaktöffnung beendet." -#: src/emc/motion/control.c:387 +#: src/emc/motion/control.c:397 msgid "G38.2 move finished without making contact." msgstr "G38.4: Bewegung ohne Kontaktschließung beendet." -#: src/emc/motion/control.c:401 +#: src/emc/motion/control.c:412 msgid "Probe tripped during non-probe MDI command." msgstr "Tastspitze bei inaktivem MDI-Befehl ausgelöst." -#: src/emc/motion/control.c:429 +#: src/emc/motion/control.c:440 msgid "Probe tripped during homing motion." msgstr "Tastspitze bei Referenzfahrt ausgelöst." -#: src/emc/motion/control.c:433 +#: src/emc/motion/control.c:444 msgid "Probe tripped during a jog." msgstr "Tastspitze bei Eilfahrt ausgelöst." -#: src/emc/motion/control.c:697 src/emc/motion/control.c:718 +#: src/emc/motion/control.c:622 +#, fuzzy +msgid "can't add coordinated return move" +msgstr "Keine zusätzl. Kreisbewegung möglich" + +#: src/emc/motion/control.c:663 +#, fuzzy +msgid "can't add linear coordinated jog move" +msgstr "Keine zusätzl. Linearbewegung möglich" + +#: src/emc/motion/control.c:817 +#, c-format +msgid "fault %d during orient in progress" +msgstr "" + +#: src/emc/motion/control.c:957 msgid "motion stopped by enable input" msgstr "Bewegung durch Enable-Eingabe angehalten." -#: src/emc/motion/control.c:720 src/emc/motion/control.c:741 +#: src/emc/motion/control.c:980 #, c-format msgid "joint %d on limit switch error" msgstr "Fehler: Joint %d am Endschalter" -#: src/emc/motion/control.c:732 src/emc/motion/control.c:753 +#: src/emc/motion/control.c:992 #, c-format msgid "joint %d amplifier fault" msgstr "Verstärkerfehler an Joint %d" -#: src/emc/motion/control.c:741 src/emc/motion/control.c:762 +#: src/emc/motion/control.c:1001 #, c-format msgid "joint %d following error" msgstr "" -#: src/emc/motion/control.c:1423 src/emc/motion/control.c:1444 +#: src/emc/motion/control.c:1687 #, c-format msgid "Exceeded positive soft limit on joint %d" msgstr "Positiver Softanschlag bei Joint %d überschritten" -#: src/emc/motion/control.c:1428 src/emc/motion/control.c:1449 +#: src/emc/motion/control.c:1692 #, c-format msgid "Exceeded negative soft limit on joint %d" msgstr "Negativer Softanschlag bei Joint %d überschritten" -#: src/emc/motion/command.c:159 +#: src/emc/motion/command.c:163 #, c-format msgid "Can't jog invalid joint number %d." msgstr "Kann ungültigen Joint %d nicht bewegen" -#: src/emc/motion/command.c:163 +#: src/emc/motion/command.c:167 #, c-format msgid "Can't jog joint %d further past max hard limit." msgstr "Kann Joint %d nicht weiter über Bahnmaximum bewegen" -#: src/emc/motion/command.c:168 +#: src/emc/motion/command.c:172 #, c-format msgid "Can't jog joint %d further past min hard limit." msgstr "Kann Joint %d nicht über Bahnminimum bewegen" -#: src/emc/motion/command.c:174 +#: src/emc/motion/command.c:178 #, c-format msgid "Can't jog joint %d further past max soft limit." msgstr "Kann Joint %d nicht über max. Softanschlag bewegen" -#: src/emc/motion/command.c:179 +#: src/emc/motion/command.c:183 #, c-format msgid "Can't jog joint %d further past min soft limit." msgstr "Kann Joint %d nicht über min. Softanschlag bewegen" -#: src/emc/motion/command.c:237 +#: src/emc/motion/command.c:243 #, c-format msgid "%s move on line %d would exceed joint %d's positive limit" msgstr "Bewegung %s in Zeile %d würde pos. Anschlag von Joint %d überschreiten" -#: src/emc/motion/command.c:240 -#, c-format -msgid "%s move in MDI would exceed joint %d's positive limit" -msgstr "Bewegung %s in MDI würde pos. Anschlag von Joint %d überschreiten" - -#: src/emc/motion/command.c:247 +#: src/emc/motion/command.c:250 #, c-format msgid "%s move on line %d would exceed joint %d's negative limit" msgstr "Bewegung %s in Zeile %d würde neg. Anschlag von Joint %d überschreiten" -#: src/emc/motion/command.c:250 -#, c-format -msgid "%s move in MDI would exceed joint %d's negative limit" -msgstr "Bewegung %s in MDI würde neg. Anschlag von Joint %d überschreiten" - -#: src/emc/motion/command.c:500 +#: src/emc/motion/command.c:535 msgid "all joints must be homed before going into coordinated mode" msgstr "" -#: src/emc/motion/command.c:521 +#: src/emc/motion/command.c:556 msgid "all joints must be homed before going into teleop mode" msgstr "" -#: src/emc/motion/command.c:675 src/emc/motion/command.c:741 -#: src/emc/motion/command.c:814 +#: src/emc/motion/command.c:710 src/emc/motion/command.c:776 +#: src/emc/motion/command.c:849 msgid "Can't jog joint in coordinated mode." msgstr "" -#: src/emc/motion/command.c:680 src/emc/motion/command.c:746 -#: src/emc/motion/command.c:819 +#: src/emc/motion/command.c:715 src/emc/motion/command.c:781 +#: src/emc/motion/command.c:854 msgid "Can't jog joint when not enabled." msgstr "" -#: src/emc/motion/command.c:685 src/emc/motion/command.c:824 +#: src/emc/motion/command.c:720 src/emc/motion/command.c:859 msgid "Can't jog any joints while homing." msgstr "Keine Handsteuerung während der Referenzfahrt." -#: src/emc/motion/command.c:751 +#: src/emc/motion/command.c:786 msgid "Can't jog any joint while homing." msgstr "Keine Handsteuerung während der Referenzfahrt." -#: src/emc/motion/command.c:881 +#: src/emc/motion/command.c:918 msgid "need to be enabled, in coord mode for linear move" msgstr "" -#: src/emc/motion/command.c:891 +#: src/emc/motion/command.c:928 msgid "can't do linear move with limits exceeded" msgstr "Keine Linearbewegung jenseits der Grenzen" -#: src/emc/motion/command.c:910 -msgid "can't add linear move" -msgstr "Keine zusätzl. Linearbewegung möglich" +#: src/emc/motion/command.c:954 +#, fuzzy, c-format +msgid "can't add linear move at line %d, error code %d" +msgstr "Keine Linearbewegung jenseits der Grenzen" -#: src/emc/motion/command.c:930 +#: src/emc/motion/command.c:982 msgid "need to be enabled, in coord mode for circular move" msgstr "" -#: src/emc/motion/command.c:940 +#: src/emc/motion/command.c:993 msgid "can't do circular move with limits exceeded" msgstr "Keine Kreisbewegung jenseits der Grenzen" -#: src/emc/motion/command.c:958 -msgid "can't add circular move" -msgstr "Keine zusätzl. Kreisbewegung möglich" +#: src/emc/motion/command.c:1015 +#, fuzzy, c-format +msgid "can't add circular move at line %d, error code %d" +msgstr "Keine Kreisbewegung jenseits der Grenzen" + +#: src/emc/motion/command.c:1114 +#, fuzzy +msgid "MOTION: can't STEP while jogging" +msgstr "MOTION: bereits begonnen, STEP nicht möglich" + +#: src/emc/motion/command.c:1117 +#, fuzzy +msgid "MOTION: can't STEP while in return move" +msgstr "MOTION: bereits begonnen, STEP nicht möglich" -#: src/emc/motion/command.c:1048 -msgid "MOTION: can't STEP while already executing" +#: src/emc/motion/command.c:1127 +#, fuzzy, c-format +msgid "MOTION: STEP while in state %d" msgstr "MOTION: bereits begonnen, STEP nicht möglich" -#: src/emc/motion/command.c:1140 +#: src/emc/motion/command.c:1229 msgid "can't enable motion, enable input is false" msgstr "Bewegung nicht möglich, Enable-Eingang ist falsch" -#: src/emc/motion/command.c:1213 +#: src/emc/motion/command.c:1302 msgid "must be in joint mode to home" msgstr "Referenzfahrt nur im Joint-Modus möglich" -#: src/emc/motion/command.c:1224 src/emc/motion/command.c:1235 +#: src/emc/motion/command.c:1313 src/emc/motion/command.c:1324 msgid "homing sequence already in progress" msgstr "Referenzfahrt bereits begonnen" -#: src/emc/motion/command.c:1233 +#: src/emc/motion/command.c:1322 msgid "homing already in progress" msgstr "Referenzfahrt bereits begonnen" -#: src/emc/motion/command.c:1263 +#: src/emc/motion/command.c:1352 msgid "must be in joint mode or disabled to unhome" msgstr "" "Kann nur im Joint-Modus oder abgeschaltet aus der Referenzpos. gefahren " "werden" -#: src/emc/motion/command.c:1275 src/emc/motion/command.c:1298 +#: src/emc/motion/command.c:1364 src/emc/motion/command.c:1387 #, c-format msgid "Cannot unhome while homing, joint %d" msgstr "" "Joint %d: Während Referenzfahrt kann nicht aus der Referenzpos. gefahren " "werden" -#: src/emc/motion/command.c:1279 src/emc/motion/command.c:1302 +#: src/emc/motion/command.c:1368 src/emc/motion/command.c:1391 #, c-format msgid "Cannot unhome while moving, joint %d" msgstr "" "Joint %d: Während der Bewegung kann nicht aus der Referenzpos. gefahren " "werden" -#: src/emc/motion/command.c:1307 +#: src/emc/motion/command.c:1396 #, c-format msgid "Cannot unhome inactive joint %d" msgstr "Inaktiver Joint %d kann nicht aus der Referenzpos. gefahren werden" -#: src/emc/motion/command.c:1311 +#: src/emc/motion/command.c:1400 #, c-format msgid "Cannot unhome invalid joint %d (max %d)" msgstr "" "Joint %d: Ungültiger Joint kann nicht aus der Referenzpos. gefahren werden " "(max. %d)" -#: src/emc/motion/command.c:1338 +#: src/emc/motion/command.c:1427 msgid "need to be enabled, in coord mode for probe move" msgstr "" -#: src/emc/motion/command.c:1348 +#: src/emc/motion/command.c:1437 msgid "can't do probe move with limits exceeded" msgstr "Kann Tastspitze nicht außerhalb der Grenzen bewegen" -#: src/emc/motion/command.c:1362 +#: src/emc/motion/command.c:1451 msgid "Probe is already clear when starting G38.4 or G38.5 move" msgstr "Tastspitze schon abgehoben bei Start durch G38.4 oder G38.5" -#: src/emc/motion/command.c:1364 +#: src/emc/motion/command.c:1453 msgid "Probe is already tripped when starting G38.2 or G38.3 move" msgstr "Tastspitze schon ausgelöst bei Start durch G38.4 oder G38.5" -#: src/emc/motion/command.c:1376 +#: src/emc/motion/command.c:1473 msgid "can't add probe move" msgstr "Keine weitere Bewegung der Tastspitze möglich" -#: src/emc/motion/command.c:1400 +#: src/emc/motion/command.c:1498 msgid "need to be enabled, in coord mode for rigid tap move" msgstr "Muß aktiviert werden, im Koordinatenmodus für Gewindebohren" -#: src/emc/motion/command.c:1410 +#: src/emc/motion/command.c:1509 msgid "can't do rigid tap move with limits exceeded" msgstr "Kein Gewindebohren außerhalb der Grenzen" -#: src/emc/motion/command.c:1421 +#: src/emc/motion/command.c:1526 msgid "can't add rigid tap move" msgstr "Gewindebohren: keine weitere Bewegung möglich" -#: src/emc/motion/command.c:1435 +#: src/emc/motion/command.c:1541 msgid "need to be enabled, in teleop mode for teleop move" msgstr "" -#: src/emc/motion/command.c:1556 src/emc/motion/command.c:1605 +#: src/emc/motion/command.c:1710 #, c-format msgid "joint %d: too many compensation entries" msgstr "Joint %d: zu viele Kompensationseingaben" -#: src/emc/motion/command.c:1562 src/emc/motion/command.c:1611 +#: src/emc/motion/command.c:1716 #, c-format msgid "joint %d: compensation values must increase" msgstr "Joint %d: Kompensationswerte müssen ansteigen" -#: src/emc/motion/command.c:1591 src/emc/motion/command.c:1640 +#: src/emc/motion/command.c:1745 #, c-format msgid "unrecognized command %d" msgstr "Unerkannter Befehl %d" -#: src/emc/motion/motion.c:185 +#: src/emc/motion/motion.c:212 msgid "MOTION: hal_init() failed\n" msgstr "MOTION: hal_init fehlgeschlagen\n" -#: src/emc/motion/motion.c:190 +#: src/emc/motion/motion.c:217 #, c-format msgid "MOTION: num_joints is %d, must be between 1 and %d\n" msgstr "MOTION: num_joints ist %d, muß zwischen 1 und %d liegen\n" -#: src/emc/motion/motion.c:197 +#: src/emc/motion/motion.c:224 #, c-format msgid "MOTION: num_dio is %d, must be between 1 and %d\n" msgstr "MOTION: num_dio ist %d, muß zwischen 1 und %d liegen\n" -#: src/emc/motion/motion.c:204 +#: src/emc/motion/motion.c:231 #, c-format msgid "MOTION: num_aio is %d, must be between 1 and %d\n" msgstr "MOTION: num_aio ist %d, muß zwischen 1 und %d liegen\n" -#: src/emc/motion/motion.c:212 +#: src/emc/motion/motion.c:239 msgid "MOTION: init_hal_io() failed\n" msgstr "MOTION: init_hal_io() fehlgeschlagen\n" -#: src/emc/motion/motion.c:221 +#: src/emc/motion/motion.c:248 msgid "MOTION: init_comm_buffers() failed\n" msgstr "MOTION: init_comm_buffers() fehlgeschlagen\n" -#: src/emc/motion/motion.c:229 +#: src/emc/motion/motion.c:256 msgid "MOTION: init_threads() failed\n" msgstr "MOTION: init_threads() fehlgeschlagen\n" -#: src/emc/motion/motion.c:254 +#: src/emc/motion/motion.c:281 #, c-format msgid "MOTION: hal_stop_threads() failed, returned %d\n" msgstr "MOTION: hal_stop_threads() fehlgeschlagen, Rückgabewert %d\n" -#: src/emc/motion/motion.c:260 +#: src/emc/motion/motion.c:294 #, c-format msgid "MOTION: rtapi_shmem_delete() failed, returned %d\n" msgstr "MOTION: rtapi_shmem_delete() fehlgeschlagen, Rückgabewert %d\n" -#: src/emc/motion/motion.c:266 +#: src/emc/motion/motion.c:300 #, c-format msgid "MOTION: hal_exit() failed, returned %d\n" msgstr "MOTION: hal_exit() fehlgeschlagen, Rückgabewert %d\n" -#: src/emc/motion/motion.c:289 +#: src/emc/motion/motion.c:323 msgid "MOTION: emcmot_hal_data malloc failed\n" msgstr "MOTION: emcmot_hal_data malloc fehlgeschlagen\n" -#: src/emc/motion/motion.c:585 src/emc/motion/motion.c:597 +#: src/emc/motion/motion.c:331 +#, fuzzy +msgid "MOTION: joints malloc failed\n" +msgstr "MOTION: init_hal_io() fehlgeschlagen\n" + +#: src/emc/motion/motion.c:695 #, c-format msgid "MOTION: joint %d pin/param export failed\n" msgstr "MOTION: Joint %d Pin/Parameterexport fehlgeschlagen\n" @@ -1013,63 +2720,52 @@ msgid "unknown state '%d' during homing" msgstr "Unbekannter Zustand '%d' während Referenzfahrt" #: tcl/bin/emccalib.tcl:80 -msgid "LinuxCNC Servo Axis Calibration" -msgstr "LinuxCNC Servoachsen-Kalibrierung" +#, fuzzy +msgid "Machinekit Servo Axis Calibration" +msgstr "EMC2 Achsen-Kalibrierung" -#: tcl/bin/emccalib.tcl:90 ../tcl/bin/emccalib.tcl:90 +#: tcl/bin/emccalib.tcl:90 msgid "Save To File" msgstr "Speichern" #: tcl/bin/emccalib.tcl:106 tcl/bin/genedit.tcl:77 tcl/bin/halconfig.tcl:151 -#: tcl/bin/halshow.tcl:86 tcl/mini.tcl:2516 tcl/tklinuxcnc.tcl:719 -#: tcl/ngcgui.tcl:549 tcl/bin/halshow.tcl:85 ../tcl/bin/emccalib.tcl:106 -#: ../tcl/bin/genedit.tcl:77 ../tcl/bin/halconfig.tcl:151 ../tcl/mini.tcl:2513 -#: ../tcl/tkemc.tcl:772 +#: tcl/bin/halshow.tcl:85 tcl/mini.tcl:2516 tcl/tklinuxcnc.tcl:719 +#: tcl/ngcgui.tcl:489 msgid "File" msgstr "Datei" -#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:231 tcl/bin/halconfig.tcl:153 +#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:236 tcl/bin/halconfig.tcl:153 #: tcl/mini.tcl:3558 src/emc/usr_intf/touchy/touchy.glade:2420 -#: ../tcl/bin/emccalib.tcl:108 ../tcl/bin/emccalib.tcl:231 -#: ../tcl/bin/halconfig.tcl:153 ../tcl/mini.tcl:3555 msgid "Refresh" msgstr "Aktualisieren" #: tcl/bin/emccalib.tcl:110 tcl/bin/genedit.tcl:82 tcl/bin/halconfig.tcl:155 -#: tcl/mini.tcl:2535 ../tcl/bin/emccalib.tcl:110 ../tcl/bin/genedit.tcl:82 -#: ../tcl/bin/halconfig.tcl:155 ../tcl/mini.tcl:2532 +#: tcl/mini.tcl:2535 src/emc/usr_intf/axis/scripts/axis.py:2107 msgid "Save" msgstr "Speichern" -#: tcl/bin/emccalib.tcl:159 tcl/bin/halconfig.tcl:623 -#: ../tcl/bin/emccalib.tcl:159 ../tcl/bin/halconfig.tcl:623 +#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:623 #, fuzzy, tcl-format msgid "Tune %d" msgstr "Feineinstellung %d" -#: tcl/bin/emccalib.tcl:160 tcl/bin/halconfig.tcl:628 -#: ../tcl/bin/emccalib.tcl:161 ../tcl/bin/halconfig.tcl:628 +#: tcl/bin/emccalib.tcl:162 tcl/bin/halconfig.tcl:628 msgid "INI Name" msgstr "INI-Name" -#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:629 -#: ../tcl/bin/emccalib.tcl:162 ../tcl/bin/halconfig.tcl:629 +#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:629 msgid "HAL's Value" msgstr "HAL-Wert" -#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:631 -#: ../tcl/bin/emccalib.tcl:164 ../tcl/bin/halconfig.tcl:631 +#: tcl/bin/emccalib.tcl:165 tcl/bin/halconfig.tcl:631 msgid "Next Value" msgstr "Nächster Wert" -#: tcl/bin/emccalib.tcl:225 tcl/bin/halconfig.tcl:680 -#: tcl/bin/halconfig.tcl:731 ../tcl/bin/emccalib.tcl:225 -#: ../tcl/bin/halconfig.tcl:680 ../tcl/bin/halconfig.tcl:731 +#: tcl/bin/emccalib.tcl:230 tcl/bin/halconfig.tcl:680 tcl/bin/halconfig.tcl:731 msgid "Test" msgstr "Ausprobieren" -#: tcl/bin/emccalib.tcl:358 tcl/bin/halconfig.tcl:883 -#: ../tcl/bin/emccalib.tcl:358 ../tcl/bin/halconfig.tcl:883 +#: tcl/bin/emccalib.tcl:388 tcl/bin/halconfig.tcl:883 #, fuzzy, tcl-format msgid "" "The HAL parameter \n" @@ -1082,8 +2778,7 @@ msgstr "" "wurde geändert. \n" "Wirklich beenden?" -#: tcl/bin/emccalib.tcl:383 tcl/bin/halconfig.tcl:1170 -#: ../tcl/bin/emccalib.tcl:383 ../tcl/bin/halconfig.tcl:1170 +#: tcl/bin/emccalib.tcl:413 tcl/bin/halconfig.tcl:1170 msgid "" "Not permitted to save here.\n" "\n" @@ -1094,13 +2789,9 @@ msgstr "" "Kopieren Sie eine Konfiguration in Ihr »home«-Verzeichnis, um damit zu " "arbeiten." -#: tcl/bin/emccalib.tcl:457 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 -#: tcl/bin/pickconfig.tcl:544 tcl/bin/pickconfig.tcl:555 +#: tcl/bin/emccalib.tcl:487 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 +#: tcl/bin/pickconfig.tcl:843 tcl/bin/pickconfig.tcl:854 #: tcl/scripts/Set_Coordinates.tcl:205 tcl/scripts/Set_Coordinates.tcl:228 -#: ../tcl/bin/emccalib.tcl:457 ../tcl/bin/genedit.tcl:211 -#: ../tcl/bin/halconfig.tcl:1242 ../tcl/bin/pickconfig.tcl:464 -#: ../tcl/bin/pickconfig.tcl:475 ../tcl/scripts/Set_Coordinates.tcl:201 -#: ../tcl/scripts/Set_Coordinates.tcl:224 #, tcl-format msgid "can't save %s" msgstr "Die Datei »%s« konnte nicht gespeichert werden." @@ -1109,159 +2800,141 @@ msgstr "Die Datei »%s« konnte nicht gespeichert werden." msgid "LinuxCNC Debug" msgstr "LinuxCNC Debug" -#: tcl/bin/emcdebug.tcl:185 ../tcl/bin/emcdebug.tcl:185 +#: tcl/bin/emcdebug.tcl:185 msgid "Invalid INI file entries" msgstr "Ungültige Einträge in der INI-Datei" -#: tcl/bin/emcdebug.tcl:186 ../tcl/bin/emcdebug.tcl:186 +#: tcl/bin/emcdebug.tcl:186 msgid "Configuration information" msgstr "Konfigurationsinformationen" -#: tcl/bin/emcdebug.tcl:187 ../tcl/bin/emcdebug.tcl:187 +#: tcl/bin/emcdebug.tcl:187 #, fuzzy msgid "Use of defaults" msgstr "Benutzen der Standardwerte" -#: tcl/bin/emcdebug.tcl:188 ../tcl/bin/emcdebug.tcl:188 +#: tcl/bin/emcdebug.tcl:188 msgid "Version information" msgstr "Versionsinformationen" -#: tcl/bin/emcdebug.tcl:189 ../tcl/bin/emcdebug.tcl:189 +#: tcl/bin/emcdebug.tcl:189 msgid "Command issuing" msgstr "Betroffener Befehl" -#: tcl/bin/emcdebug.tcl:190 ../tcl/bin/emcdebug.tcl:190 +#: tcl/bin/emcdebug.tcl:190 msgid "IO points" msgstr "Ein-/Ausgänge" -#: tcl/bin/emcdebug.tcl:191 ../tcl/bin/emcdebug.tcl:191 +#: tcl/bin/emcdebug.tcl:191 msgid "NML" msgstr "NML" -#: tcl/bin/emcdebug.tcl:192 ../tcl/bin/emcdebug.tcl:192 +#: tcl/bin/emcdebug.tcl:192 msgid "Motion time" msgstr "Laufzeit" #: tcl/bin/emcdebug.tcl:193 src/emc/usr_intf/axis/scripts/debuglevel.py:42 -#: ../tcl/bin/emcdebug.tcl:193 emc/usr_intf/axis/scripts/debuglevel.py:42 msgid "Interpreter" msgstr "Interpreter" -#: tcl/bin/emcdebug.tcl:194 ../tcl/bin/emcdebug.tcl:194 +#: tcl/bin/emcdebug.tcl:194 msgid "RCS" msgstr "RCS" -#: tcl/bin/emcdebug.tcl:195 ../tcl/bin/emcdebug.tcl:195 +#: tcl/bin/emcdebug.tcl:195 msgid "Trajectory level" msgstr "Bewegungsstatus" -#: tcl/bin/emcdebug.tcl:196 ../tcl/bin/emcdebug.tcl:196 +#: tcl/bin/emcdebug.tcl:196 msgid "Interpreter list" msgstr "Interpreter-Liste" -#: tcl/bin/genedit.tcl:78 tcl/mini.tcl:2533 ../tcl/bin/genedit.tcl:78 -#: ../tcl/mini.tcl:2530 +#: tcl/bin/genedit.tcl:78 tcl/mini.tcl:2533 msgid "New" msgstr "Neu" #: tcl/bin/genedit.tcl:80 tcl/mini.tcl:1667 tcl/mini.tcl:2534 -#: tcl/tklinuxcnc.tcl:720 tcl/tklinuxcnc.tcl:1657 ../tcl/bin/genedit.tcl:80 -#: ../tcl/mini.tcl:1664 ../tcl/mini.tcl:2531 ../tcl/tkemc.tcl:773 -#: ../tcl/tkemc.tcl:1698 +#: tcl/tklinuxcnc.tcl:720 tcl/tklinuxcnc.tcl:1657 msgid "Open..." msgstr "Öffnen..." -#: tcl/bin/genedit.tcl:84 tcl/mini.tcl:2536 ../tcl/bin/genedit.tcl:84 -#: ../tcl/mini.tcl:2533 +#: tcl/bin/genedit.tcl:84 tcl/mini.tcl:2536 msgid "Save As..." msgstr "Speichern unter..." -#: tcl/bin/genedit.tcl:87 tcl/bin/halconfig.tcl:165 tcl/bin/halshow.tcl:93 -#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1243 -#: tcl/ngcgui.tcl:3680 tcl/bin/halshow.tcl:92 ../tcl/bin/genedit.tcl:87 -#: ../tcl/bin/halconfig.tcl:165 ../tcl/mini.tcl:954 ../tcl/tkemc.tcl:785 +#: tcl/bin/genedit.tcl:87 tcl/bin/halconfig.tcl:165 tcl/bin/halshow.tcl:92 +#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1322 +#: tcl/ngcgui.tcl:3832 msgid "Exit" msgstr "Beenden" -#: tcl/bin/genedit.tcl:91 tcl/mini.tcl:2517 ../tcl/bin/genedit.tcl:91 -#: ../tcl/mini.tcl:2514 +#: tcl/bin/genedit.tcl:91 tcl/mini.tcl:2517 +#: src/emc/usr_intf/gscreen/gscreen.glade:2685 msgid "Edit" msgstr "Bearbeiten" -#: tcl/bin/genedit.tcl:92 tcl/mini.tcl:2543 ../tcl/bin/genedit.tcl:92 -#: ../tcl/mini.tcl:2540 +#: tcl/bin/genedit.tcl:92 tcl/mini.tcl:2543 msgid "Cut" msgstr "Ausschneiden" -#: tcl/bin/genedit.tcl:94 tcl/mini.tcl:2544 ../tcl/bin/genedit.tcl:94 -#: ../tcl/mini.tcl:2541 +#: tcl/bin/genedit.tcl:94 tcl/mini.tcl:2544 msgid "Copy" msgstr "Kopieren" -#: tcl/bin/genedit.tcl:96 tcl/mini.tcl:2545 ../tcl/bin/genedit.tcl:96 -#: ../tcl/mini.tcl:2542 +#: tcl/bin/genedit.tcl:96 tcl/mini.tcl:2545 msgid "Paste" msgstr "Einfügen" -#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:68 -#: ../tcl/bin/genedit.tcl:99 ../tcl/mini.tcl:2545 ../tcl/show_errors.tcl:68 +#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:73 #, fuzzy msgid "Select All" msgstr "Alles markieren" #: tcl/bin/genedit.tcl:104 tcl/bin/halconfig.tcl:192 tcl/mini.tcl:919 -#: tcl/mini.tcl:2519 tcl/tklinuxcnc.tcl:790 ../tcl/bin/genedit.tcl:104 -#: ../tcl/bin/halconfig.tcl:192 ../tcl/mini.tcl:919 ../tcl/mini.tcl:2516 -#: ../tcl/tkemc.tcl:842 +#: tcl/mini.tcl:2519 tcl/tklinuxcnc.tcl:790 +#: src/emc/usr_intf/stepconf/main_page.glade:445 msgid "Help" msgstr "Hilfe" #: tcl/bin/genedit.tcl:105 tcl/mini.tcl:1011 tcl/mini.tcl:2559 -#: tcl/tklinuxcnc.tcl:796 ../tcl/bin/genedit.tcl:105 ../tcl/mini.tcl:1011 -#: ../tcl/mini.tcl:2556 ../tcl/tkemc.tcl:848 +#: tcl/tklinuxcnc.tcl:796 msgid "About..." msgstr "Über..." -#: tcl/bin/genedit.tcl:130 ../tcl/bin/genedit.tcl:130 +#: tcl/bin/genedit.tcl:130 msgid "Save and Reload" msgstr "Speichern und Aktualisieren" -#: tcl/bin/genedit.tcl:133 tcl/mini.tcl:2550 ../tcl/bin/genedit.tcl:133 -#: ../tcl/mini.tcl:2547 +#: tcl/bin/genedit.tcl:133 tcl/mini.tcl:2550 msgid "Find..." msgstr "Suchen..." -#: tcl/bin/genedit.tcl:135 tcl/mini.tcl:2552 ../tcl/bin/genedit.tcl:135 -#: ../tcl/mini.tcl:2549 +#: tcl/bin/genedit.tcl:135 tcl/mini.tcl:2552 msgid "Renumber File..." msgstr "Zeilennummerierung aktualisieren..." #: tcl/bin/genedit.tcl:140 tcl/mini.tcl:917 tcl/mini.tcl:2518 -#: tcl/tklinuxcnc.tcl:746 ../tcl/bin/genedit.tcl:140 ../tcl/mini.tcl:917 -#: ../tcl/mini.tcl:2515 ../tcl/tkemc.tcl:798 +#: tcl/tklinuxcnc.tcl:746 src/emc/usr_intf/gmoccapy/gmoccapy.glade:5135 msgid "Settings" msgstr "Einstellungen" -#: tcl/bin/genedit.tcl:141 tcl/mini.tcl:2554 ../tcl/bin/genedit.tcl:141 -#: ../tcl/mini.tcl:2551 +#: tcl/bin/genedit.tcl:141 tcl/mini.tcl:2554 msgid "No Numbering" msgstr "Zeilennummerierung deaktivieren" -#: tcl/bin/genedit.tcl:144 tcl/mini.tcl:2556 ../tcl/bin/genedit.tcl:144 -#: ../tcl/mini.tcl:2553 +#: tcl/bin/genedit.tcl:144 tcl/mini.tcl:2556 msgid "Line Numbering..." msgstr "Zeilennummerierung aktivieren..." -#: tcl/bin/genedit.tcl:150 tcl/tklinuxcnc.tcl:768 ../tcl/bin/genedit.tcl:150 -#: ../tcl/tkemc.tcl:820 +#: tcl/bin/genedit.tcl:150 tcl/tklinuxcnc.tcl:768 msgid "Scripts" msgstr "Extras" -#: tcl/bin/genedit.tcl:177 ../tcl/bin/genedit.tcl:177 +#: tcl/bin/genedit.tcl:177 msgid "About TkEditor" msgstr "Über TkEditor" -#: tcl/bin/genedit.tcl:179 ../tcl/bin/genedit.tcl:179 +#: tcl/bin/genedit.tcl:179 msgid "" "TkEditor\n" "\n" @@ -1275,239 +2948,203 @@ msgstr "" "\n" "GPL Version 2" -#: tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 tcl/mini.tcl:1775 -#: tcl/tklinuxcnc.tcl:451 src/emc/task/emctaskmain.cc:2000 -#: src/emc/task/emctaskmain.cc:2072 ../tcl/bin/genedit.tcl:197 -#: ../tcl/mini.tcl:1373 ../tcl/mini.tcl:1772 ../tcl/tkemc.tcl:505 -#: emc/task/emctaskmain.cc:1930 -#, c-format, tcl-format -msgid "can't open %s" -msgstr "Die Datei »%s« kann nicht geöffnet werden." - -#: tcl/bin/genedit.tcl:267 tcl/mini.tcl:3090 ../tcl/bin/genedit.tcl:267 -#: ../tcl/mini.tcl:3087 +#: tcl/bin/genedit.tcl:267 tcl/mini.tcl:3090 msgid "Find" msgstr "Suchen" -#: tcl/bin/genedit.tcl:270 ../tcl/bin/genedit.tcl:270 +#: tcl/bin/genedit.tcl:270 msgid "Find:" msgstr "Suchen:" -#: tcl/bin/genedit.tcl:276 ../tcl/bin/genedit.tcl:276 +#: tcl/bin/genedit.tcl:276 msgid "Replace:" msgstr "Ersetzen:" -#: tcl/bin/genedit.tcl:282 ../tcl/bin/genedit.tcl:282 +#: tcl/bin/genedit.tcl:282 msgid "Find All" msgstr "Alle finden" -#: tcl/bin/genedit.tcl:285 tcl/mini.tcl:3113 ../tcl/bin/genedit.tcl:285 -#: ../tcl/mini.tcl:3110 +#: tcl/bin/genedit.tcl:285 tcl/mini.tcl:3113 msgid "Replace All" msgstr "Alle ersetzen" -#: tcl/bin/genedit.tcl:288 ../tcl/bin/genedit.tcl:288 +#: tcl/bin/genedit.tcl:288 msgid "Skip This" msgstr "Überspringen" -#: tcl/bin/genedit.tcl:291 ../tcl/bin/genedit.tcl:291 +#: tcl/bin/genedit.tcl:291 msgid "Replace This" msgstr "Ersetzen" -#: tcl/bin/genedit.tcl:297 ../tcl/bin/genedit.tcl:297 +#: tcl/bin/genedit.tcl:297 msgid "Clear" msgstr "Zurücksetzen" -#: tcl/bin/genedit.tcl:422 tcl/mini.tcl:2640 ../tcl/bin/genedit.tcl:422 -#: ../tcl/mini.tcl:2637 +#: tcl/bin/genedit.tcl:422 tcl/mini.tcl:2640 msgid "Set Line Numbering" msgstr "Zeilennummerierung" -#: tcl/bin/genedit.tcl:424 tcl/mini.tcl:2644 ../tcl/bin/genedit.tcl:424 -#: ../tcl/mini.tcl:2641 +#: tcl/bin/genedit.tcl:424 tcl/mini.tcl:2644 msgid "Increment" msgstr "Intervall" -#: tcl/bin/genedit.tcl:426 tcl/mini.tcl:2646 ../tcl/bin/genedit.tcl:426 -#: ../tcl/mini.tcl:2643 +#: tcl/bin/genedit.tcl:426 tcl/mini.tcl:2646 msgid "One" msgstr "Eins" -#: tcl/bin/genedit.tcl:429 tcl/mini.tcl:2648 ../tcl/bin/genedit.tcl:429 -#: ../tcl/mini.tcl:2645 +#: tcl/bin/genedit.tcl:429 tcl/mini.tcl:2648 msgid "Two" msgstr "Zwei" -#: tcl/bin/genedit.tcl:432 tcl/mini.tcl:2650 ../tcl/bin/genedit.tcl:432 -#: ../tcl/mini.tcl:2647 +#: tcl/bin/genedit.tcl:432 tcl/mini.tcl:2650 msgid "Five" msgstr "Fünf" -#: tcl/bin/genedit.tcl:435 tcl/mini.tcl:2652 ../tcl/bin/genedit.tcl:435 -#: ../tcl/mini.tcl:2649 +#: tcl/bin/genedit.tcl:435 tcl/mini.tcl:2652 msgid "Ten" msgstr "Zehn" -#: tcl/bin/genedit.tcl:439 tcl/mini.tcl:2654 ../tcl/bin/genedit.tcl:439 -#: ../tcl/mini.tcl:2651 +#: tcl/bin/genedit.tcl:439 tcl/mini.tcl:2654 msgid "Space" msgstr "Abstand" -#: tcl/bin/genedit.tcl:441 tcl/mini.tcl:2656 ../tcl/bin/genedit.tcl:441 -#: ../tcl/mini.tcl:2653 +#: tcl/bin/genedit.tcl:441 tcl/mini.tcl:2656 msgid "Single Space" msgstr "ein Leerzeichen" -#: tcl/bin/genedit.tcl:444 tcl/mini.tcl:2658 ../tcl/bin/genedit.tcl:444 -#: ../tcl/mini.tcl:2655 +#: tcl/bin/genedit.tcl:444 tcl/mini.tcl:2658 msgid "Double Space" msgstr "zwei Leerzeichen" -#: tcl/bin/genedit.tcl:447 tcl/mini.tcl:2660 ../tcl/bin/genedit.tcl:447 -#: ../tcl/mini.tcl:2657 +#: tcl/bin/genedit.tcl:447 tcl/mini.tcl:2660 msgid "Tab Space" msgstr "Tabulator" -#: tcl/bin/genedit.tcl:453 ../tcl/bin/genedit.tcl:453 +#: tcl/bin/genedit.tcl:453 msgid "Next Number:" msgstr "Startnummer:" -#: tcl/bin/genedit.tcl:474 tcl/mini.tcl:2668 ../tcl/bin/genedit.tcl:474 -#: ../tcl/mini.tcl:2665 +#: tcl/bin/genedit.tcl:474 tcl/mini.tcl:2668 msgid "Renumber" msgstr "Anwenden" -#: tcl/bin/halconfig.tcl:88 tcl/bin/halshow.tcl:33 ../tcl/bin/halconfig.tcl:88 -#: ../tcl/bin/halshow.tcl:33 +#: tcl/bin/halconfig.tcl:88 tcl/bin/halshow.tcl:33 msgid "HAL Configuration" msgstr "HAL konfigurieren" -#: tcl/bin/halconfig.tcl:103 ../tcl/bin/halconfig.tcl:103 +#: tcl/bin/halconfig.tcl:103 msgid "Would you like to save your configuration before you exit?" msgstr "Möchten Sie Ihre Änderungen vor dem Beenden speichern? " -#: tcl/bin/halconfig.tcl:103 ../tcl/bin/halconfig.tcl:103 +#: tcl/bin/halconfig.tcl:103 msgid "Save All" msgstr "Alles Speichern" -#: tcl/bin/halconfig.tcl:103 ../tcl/bin/halconfig.tcl:103 +#: tcl/bin/halconfig.tcl:103 msgid "Save Tune" msgstr "Änderungen speichern" -#: tcl/bin/halconfig.tcl:103 ../tcl/bin/halconfig.tcl:103 +#: tcl/bin/halconfig.tcl:103 msgid "Save as Netlist" msgstr "Speichere als Netzliste" -#: tcl/bin/halconfig.tcl:103 ../tcl/bin/halconfig.tcl:103 +#: tcl/bin/halconfig.tcl:103 msgid "Don't Save" msgstr "Nicht speichern" -#: tcl/bin/halconfig.tcl:132 ../tcl/bin/halconfig.tcl:132 +#: tcl/bin/halconfig.tcl:132 msgid "Show" msgstr "Anzeigen" -#: tcl/bin/halconfig.tcl:133 ../tcl/bin/halconfig.tcl:133 +#: tcl/bin/halconfig.tcl:133 msgid "Watch" msgstr "Beobachten" -#: tcl/bin/halconfig.tcl:134 ../tcl/bin/halconfig.tcl:134 +#: tcl/bin/halconfig.tcl:134 msgid "Modify" msgstr "Ändern" -#: tcl/bin/halconfig.tcl:157 ../tcl/bin/halconfig.tcl:157 +#: tcl/bin/halconfig.tcl:157 msgid "Save INI Tuning" msgstr "INI-Änderungen speichern" -#: tcl/bin/halconfig.tcl:159 ../tcl/bin/halconfig.tcl:159 +#: tcl/bin/halconfig.tcl:159 msgid "Save HAL Ini" msgstr "HAL-INI speichern" -#: tcl/bin/halconfig.tcl:161 ../tcl/bin/halconfig.tcl:161 +#: tcl/bin/halconfig.tcl:161 msgid "Save HAL Net" msgstr "HAL-NET speichern" -#: tcl/bin/halconfig.tcl:163 ../tcl/bin/halconfig.tcl:163 +#: tcl/bin/halconfig.tcl:163 msgid "Save and Exit" msgstr "Speichern und Beenden" #: tcl/bin/halconfig.tcl:168 tcl/mini.tcl:916 tcl/tklinuxcnc.tcl:739 -#: ../tcl/bin/halconfig.tcl:168 ../tcl/mini.tcl:916 ../tcl/tkemc.tcl:790 msgid "View" msgstr "Ansicht" -#: tcl/bin/halconfig.tcl:170 tcl/bin/halshow.tcl:105 tcl/bin/halshow.tcl:104 -#: ../tcl/bin/halconfig.tcl:170 ../tcl/bin/halshow.tcl:87 +#: tcl/bin/halconfig.tcl:170 tcl/bin/halshow.tcl:104 msgid "Expand Tree" msgstr "Menübaum aufklappen" -#: tcl/bin/halconfig.tcl:172 tcl/bin/halshow.tcl:107 tcl/bin/halshow.tcl:106 -#: ../tcl/bin/halconfig.tcl:172 ../tcl/bin/halshow.tcl:89 +#: tcl/bin/halconfig.tcl:172 tcl/bin/halshow.tcl:106 msgid "Collapse Tree" msgstr "Menübaum zuklappen" -#: tcl/bin/halconfig.tcl:175 tcl/bin/halshow.tcl:110 tcl/bin/halshow.tcl:109 -#: ../tcl/bin/halconfig.tcl:175 ../tcl/bin/halshow.tcl:92 +#: tcl/bin/halconfig.tcl:175 tcl/bin/halshow.tcl:109 msgid "Expand Pins" msgstr "Pins aufklappen" -#: tcl/bin/halconfig.tcl:177 tcl/bin/halshow.tcl:112 tcl/bin/halshow.tcl:111 -#: ../tcl/bin/halconfig.tcl:177 ../tcl/bin/halshow.tcl:94 +#: tcl/bin/halconfig.tcl:177 tcl/bin/halshow.tcl:111 msgid "Expand Parameters" msgstr "Parameters aufklappen" -#: tcl/bin/halconfig.tcl:179 tcl/bin/halshow.tcl:114 tcl/bin/halshow.tcl:113 -#: ../tcl/bin/halconfig.tcl:179 ../tcl/bin/halshow.tcl:96 +#: tcl/bin/halconfig.tcl:179 tcl/bin/halshow.tcl:113 msgid "Expand Signals" msgstr "Signals aufklappen" -#: tcl/bin/halconfig.tcl:182 tcl/bin/halshow.tcl:117 tcl/bin/halshow.tcl:116 -#: ../tcl/bin/halconfig.tcl:182 ../tcl/bin/halshow.tcl:99 +#: tcl/bin/halconfig.tcl:182 tcl/bin/halshow.tcl:116 msgid "Erase Watch" msgstr "Ansicht löschen" #: tcl/bin/halconfig.tcl:194 tcl/mini.tcl:840 tcl/mini.tcl:2785 -#: ../tcl/bin/halconfig.tcl:194 ../tcl/mini.tcl:840 ../tcl/mini.tcl:2782 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "About" msgstr "Über" -#: tcl/bin/halconfig.tcl:196 ../tcl/bin/halconfig.tcl:196 +#: tcl/bin/halconfig.tcl:196 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2579 msgid "Main" msgstr "Allgemein" -#: tcl/bin/halconfig.tcl:476 ../tcl/bin/halconfig.tcl:476 +#: tcl/bin/halconfig.tcl:476 msgid "Enter HAL command :" msgstr "HAL-Befehl:" -#: tcl/bin/halconfig.tcl:479 tcl/bin/halconfig.tcl:528 tcl/bin/halshow.tcl:357 -#: tcl/bin/halshow.tcl:354 ../tcl/bin/halconfig.tcl:479 -#: ../tcl/bin/halconfig.tcl:528 ../tcl/bin/halshow.tcl:382 +#: tcl/bin/halconfig.tcl:479 tcl/bin/halconfig.tcl:528 tcl/bin/halshow.tcl:354 msgid "Execute" msgstr "Anwenden" -#: tcl/bin/halconfig.tcl:943 tcl/bin/halshow.tcl:413 tcl/bin/halshow.tcl:405 -#: ../tcl/bin/halconfig.tcl:943 ../tcl/bin/halshow.tcl:438 +#: tcl/bin/halconfig.tcl:943 tcl/bin/halshow.tcl:405 msgid "Select a node to show." msgstr "Bitte Variable zum Anzeigen auswählen." -#: tcl/bin/halconfig.tcl:968 tcl/bin/halshow.tcl:438 tcl/bin/halshow.tcl:429 -#: ../tcl/bin/halconfig.tcl:968 ../tcl/bin/halshow.tcl:463 +#: tcl/bin/halconfig.tcl:968 tcl/bin/halshow.tcl:429 msgid "<-- Select a Leaf. Click on its name." msgstr "Bitte Variable zum Anzeigen auswählen." #: tcl/bin/halconfig.tcl:1085 tcl/bin/halconfig.tcl:1095 #: tcl/bin/halconfig.tcl:1102 tcl/bin/halconfig.tcl:1109 -#: tcl/bin/halconfig.tcl:1116 ../tcl/bin/halconfig.tcl:1085 -#: ../tcl/bin/halconfig.tcl:1095 ../tcl/bin/halconfig.tcl:1102 -#: ../tcl/bin/halconfig.tcl:1109 ../tcl/bin/halconfig.tcl:1116 +#: tcl/bin/halconfig.tcl:1116 #, tcl-format msgid "Click a highlighted entry where %s should go." msgstr "" -#: tcl/bin/halconfig.tcl:1092 ../tcl/bin/halconfig.tcl:1092 +#: tcl/bin/halconfig.tcl:1092 msgid "Nothing to be done for parameters here. Try the tuning page" msgstr "" -#: tcl/bin/halconfig.tcl:1124 ../tcl/bin/halconfig.tcl:1124 +#: tcl/bin/halconfig.tcl:1124 #, tcl-format msgid "%s is not a leaf, try again" msgstr "" @@ -1524,40 +3161,40 @@ msgid "" "allowed by law." msgstr "" -#: tcl/bin/halshow.tcl:70 tcl/bin/halshow.tcl:69 ../tcl/bin/halshow.tcl:69 +#: tcl/bin/halshow.tcl:69 msgid " SHOW " msgstr "ANZEIGEN" -#: tcl/bin/halshow.tcl:71 tcl/bin/halshow.tcl:70 ../tcl/bin/halshow.tcl:70 +#: tcl/bin/halshow.tcl:70 msgid " WATCH " msgstr "BEOBACHTEN" -#: tcl/bin/halshow.tcl:91 tcl/bin/halshow.tcl:90 +#: tcl/bin/halshow.tcl:90 msgid "Load Watch List" msgstr "" -#: tcl/bin/halshow.tcl:103 tcl/bin/halshow.tcl:102 ../tcl/bin/halshow.tcl:85 +#: tcl/bin/halshow.tcl:102 msgid "Tree View" msgstr "Ansicht" -#: tcl/bin/halshow.tcl:354 tcl/bin/halshow.tcl:349 ../tcl/bin/halshow.tcl:379 +#: tcl/bin/halshow.tcl:349 msgid "Test HAL command :" msgstr "HAL-Befehl ausprobieren:" -#: tcl/bin/halshow.tcl:556 tcl/bin/halshow.tcl:544 +#: tcl/bin/halshow.tcl:544 msgid "Load a watch list" msgstr "" -#: tcl/bin/halshow.tcl:579 tcl/bin/halshow.tcl:567 +#: tcl/bin/halshow.tcl:567 msgid "Save current watch list" msgstr "" -#: tcl/bin/halshow.tcl:593 tcl/bin/halshow.tcl:581 ../tcl/bin/halshow.tcl:583 +#: tcl/bin/halshow.tcl:581 msgid "Commands may be tested here but they will NOT be saved" msgstr "" "Die Befehle können hier ausprobiert werden, werden aber NICHT gespeichert." -#: tcl/bin/pickconfig.tcl:50 ../tcl/bin/pickconfig.tcl:47 +#: tcl/bin/pickconfig.tcl:96 msgid "" "Can't find the bwidget 1.7 package. There is a debian bwidget package; " "install \n" @@ -1567,19 +3204,19 @@ msgstr "" "Es existiert ein »bwidget« Paket für Debian basierende Systeme.\n" "Dieses kann mit »sudo apt-get install bwidget« installiert werden." -#: tcl/bin/pickconfig.tcl:178 ../tcl/bin/pickconfig.tcl:145 -msgid "No details available." -msgstr "Es ist keine Beschreibung verfügbar." - -#: tcl/bin/pickconfig.tcl:194 +#: tcl/bin/pickconfig.tcl:154 #, fuzzy -msgid "LinuxCNC Configuration Selector" +msgid "Machinekit Configuration Selector" msgstr "EMC2 Konfigurationsassistent" -#: tcl/bin/pickconfig.tcl:215 +#: tcl/bin/pickconfig.tcl:296 +msgid "No details available." +msgstr "Es ist keine Beschreibung verfügbar." + +#: tcl/bin/pickconfig.tcl:343 #, fuzzy msgid "" -"Welcome to LinuxCNC.\n" +"Welcome to MachineKit.\n" "\n" "Select a machine configuration from the list on the left.\n" "Details about the selected configuration will appear in the display on the " @@ -1593,24 +3230,24 @@ msgstr "" "angezeigt.\n" "Bestätigen Sie mit »OK«, um die gewählte Konfiguration zu laden." -#: tcl/bin/pickconfig.tcl:271 ../tcl/bin/pickconfig.tcl:267 +#: tcl/bin/pickconfig.tcl:401 msgid "My Configurations" msgstr "Eigene Konfigurationen" -#: tcl/bin/pickconfig.tcl:274 ../tcl/bin/pickconfig.tcl:270 +#: tcl/bin/pickconfig.tcl:405 msgid "Sample Configurations" msgstr "Beispielkonfigurationen" -#: tcl/bin/pickconfig.tcl:332 ../tcl/bin/pickconfig.tcl:329 +#: tcl/bin/pickconfig.tcl:530 #, tcl-format msgid "ERROR: no configurations found in path '%s'" msgstr "FEHLER: Es wurden keine Konfigurationen im Verzeichnis »%s« gefunden." -#: tcl/bin/pickconfig.tcl:369 ../tcl/bin/pickconfig.tcl:366 +#: tcl/bin/pickconfig.tcl:567 msgid "Copy Configuration?" msgstr "Konfiguration kopieren?" -#: tcl/bin/pickconfig.tcl:369 ../tcl/bin/pickconfig.tcl:366 +#: tcl/bin/pickconfig.tcl:567 #, tcl-format msgid "" "Would you like to copy the %s configuration to your home directory so you " @@ -1620,31 +3257,29 @@ msgstr "" "Dies ist nötig, damit benutzerspezifische Änderungen duchgeführt werden " "können." -#: tcl/bin/pickconfig.tcl:369 +#: tcl/bin/pickconfig.tcl:567 #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:563 -#: ../tcl/bin/pickconfig.tcl:366 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:554 msgid "Yes" msgstr "Ja" -#: tcl/bin/pickconfig.tcl:479 ../tcl/bin/pickconfig.tcl:401 +#: tcl/bin/pickconfig.tcl:749 msgid "Configuration Copied" msgstr "Konfiguration kopiert" -#: tcl/bin/pickconfig.tcl:479 +#: tcl/bin/pickconfig.tcl:749 #, fuzzy, tcl-format msgid "" "The configuration file has been copied to %s. Next time, choose this " -"location when starting LinuxCNC." +"location when starting MachineKit." msgstr "" "Die Konfiguration wurde erfolgreich in das Verzeichnis »%s« kopiert. Beim " "nächsten Start von EMC2 kann diese ausgewählt werden." -#: tcl/bin/pickconfig.tcl:506 ../tcl/bin/pickconfig.tcl:426 +#: tcl/bin/pickconfig.tcl:799 msgid "Shortcut Created" msgstr "Desktop-Verknüpfung erstellt" -#: tcl/bin/pickconfig.tcl:506 ../tcl/bin/pickconfig.tcl:426 +#: tcl/bin/pickconfig.tcl:799 msgid "" "A shortcut to this configuration file has been created on your desktop. You " "can use it to automatically launch this configuration." @@ -1652,7 +3287,7 @@ msgstr "" "Die Desktop-Verknüpfung wurde erfolgreich erstellt. Über diese Verknüpfung " "kann EMC2 automatisch mit mit dieser Konfiguration gestartet werden." -#: tcl/bin/pickconfig.tcl:511 ../tcl/bin/pickconfig.tcl:431 +#: tcl/bin/pickconfig.tcl:805 msgid "Create Desktop Shortcut" msgstr "Desktop-Verknüpfung erstellen" @@ -1661,50 +3296,49 @@ msgstr "Desktop-Verknüpfung erstellen" msgid "TkLinuxCNC BackPlot" msgstr "TkEMC Backplot" -#: tcl/bin/tkbackplot.tcl:125 ../tcl/bin/tkbackplot.tcl:125 +#: tcl/bin/tkbackplot.tcl:125 msgid "SETUP" msgstr "SETUP" -#: tcl/bin/tkbackplot.tcl:127 ../tcl/bin/tkbackplot.tcl:127 +#: tcl/bin/tkbackplot.tcl:127 msgid "RESET" msgstr "RESET" -#: tcl/bin/tkbackplot.tcl:129 ../tcl/bin/tkbackplot.tcl:129 +#: tcl/bin/tkbackplot.tcl:129 msgid "CANCEL" msgstr "ABBRECHEN" -#: tcl/bin/tkbackplot.tcl:250 ../tcl/bin/tkbackplot.tcl:250 -#: emc/usr_intf/pncconf/pncconf.glade:1136 +#: tcl/bin/tkbackplot.tcl:250 msgid "AXIS" msgstr "ACHSE" -#: tcl/bin/tkbackplot.tcl:251 ../tcl/bin/tkbackplot.tcl:251 +#: tcl/bin/tkbackplot.tcl:251 msgid "OFFSET" msgstr "OFFSET" -#: tcl/bin/tkbackplot.tcl:252 ../tcl/bin/tkbackplot.tcl:252 +#: tcl/bin/tkbackplot.tcl:252 msgid "ANGLE" msgstr "WINKEL" -#: tcl/bin/tkbackplot.tcl:253 ../tcl/bin/tkbackplot.tcl:253 +#: tcl/bin/tkbackplot.tcl:253 msgid "DIRECTION" msgstr "RICHTUNG" -#: tcl/bin/tkbackplot.tcl:270 ../tcl/bin/tkbackplot.tcl:270 +#: tcl/bin/tkbackplot.tcl:270 msgid "SIZE :" msgstr "MASSSTAB" -#: tcl/mini.tcl:490 ../tcl/mini.tcl:490 +#: tcl/mini.tcl:490 #, tcl-format msgid "JOG %s +" msgstr "%s +" -#: tcl/mini.tcl:491 ../tcl/mini.tcl:491 +#: tcl/mini.tcl:491 #, tcl-format msgid "JOG %s -" msgstr "%s -" -#: tcl/mini.tcl:492 ../tcl/mini.tcl:492 +#: tcl/mini.tcl:492 #, tcl-format msgid "" "%s\n" @@ -1721,7 +3355,7 @@ msgstr "" "F\n" "." -#: tcl/mini.tcl:840 ../tcl/mini.tcl:840 +#: tcl/mini.tcl:840 msgid "" "TkMini \n" "\n" @@ -1747,138 +3381,135 @@ msgstr "" "This software comes with ABSOLUTELY NO GUARANTEE!\n" "For details see the copyright.html file in this directory." -#: tcl/mini.tcl:915 ../tcl/mini.tcl:915 +#: tcl/mini.tcl:915 msgid "Program" msgstr "Programm" -#: tcl/mini.tcl:918 ../tcl/mini.tcl:918 +#: tcl/mini.tcl:918 msgid "Info" msgstr "Info" -#: tcl/mini.tcl:923 ../tcl/mini.tcl:923 +#: tcl/mini.tcl:923 msgid "Backplot" msgstr "Backplot" -#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:6125 -#: ../tcl/mini.tcl:925 +#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:5915 msgid "Editor" msgstr "Editor" -#: tcl/mini.tcl:927 ../tcl/mini.tcl:927 +#: tcl/mini.tcl:927 msgid "Offsets" msgstr "Offsets" -#: tcl/mini.tcl:929 ../tcl/mini.tcl:929 +#: tcl/mini.tcl:929 msgid "Tools" msgstr "Werkzeuge" #: tcl/mini.tcl:951 tcl/mini.tcl:3565 tcl/tklinuxcnc.tcl:732 -#: ../tcl/mini.tcl:951 ../tcl/mini.tcl:3562 ../tcl/tkemc.tcl:783 msgid "Reset" msgstr "Zurücksetzen" -#: tcl/mini.tcl:960 ../tcl/mini.tcl:960 +#: tcl/mini.tcl:960 msgid "Position Type" msgstr "Positionierungs-Info" -#: tcl/mini.tcl:962 ../tcl/mini.tcl:962 +#: tcl/mini.tcl:962 msgid "Tool Info" msgstr "Werkzeug-Info" -#: tcl/mini.tcl:964 ../tcl/mini.tcl:964 +#: tcl/mini.tcl:964 msgid "Offset Info" msgstr "Offset-Info" -#: tcl/mini.tcl:967 ../tcl/mini.tcl:967 +#: tcl/mini.tcl:967 msgid "Show Restart" msgstr "Neustart anzeigen" -#: tcl/mini.tcl:968 ../tcl/mini.tcl:968 +#: tcl/mini.tcl:968 msgid "Hide Restart" msgstr "Neustart verbergen" -#: tcl/mini.tcl:970 ../tcl/mini.tcl:970 +#: tcl/mini.tcl:970 msgid "Show Split Right" msgstr "Fenster teilen" -#: tcl/mini.tcl:972 ../tcl/mini.tcl:972 +#: tcl/mini.tcl:972 msgid "Show Mode Full" msgstr "Nur Menü anzeigen" -#: tcl/mini.tcl:974 ../tcl/mini.tcl:974 +#: tcl/mini.tcl:974 msgid "Show Popin Full" msgstr "Nur Auswahl anzeigen" -#: tcl/mini.tcl:978 ../tcl/mini.tcl:978 +#: tcl/mini.tcl:978 msgid "Actual Position" msgstr "Aktuelle Position" -#: tcl/mini.tcl:980 ../tcl/mini.tcl:980 +#: tcl/mini.tcl:980 msgid "Commanded Position" msgstr "Erwartete Position" -#: tcl/mini.tcl:983 ../tcl/mini.tcl:983 +#: tcl/mini.tcl:983 msgid "Machine Position" msgstr "Maschinenposition" -#: tcl/mini.tcl:985 ../tcl/mini.tcl:985 +#: tcl/mini.tcl:985 msgid "Relative Position" msgstr "Relative Position" -#: tcl/mini.tcl:988 tcl/tklinuxcnc.tcl:747 ../tcl/mini.tcl:988 -#: ../tcl/tkemc.tcl:799 +#: tcl/mini.tcl:988 tcl/tklinuxcnc.tcl:747 msgid "Calibration..." msgstr "Kalibrierung..." -#: tcl/mini.tcl:990 ../tcl/mini.tcl:990 +#: tcl/mini.tcl:990 msgid "HAL Show..." msgstr "HAL anzeigen..." -#: tcl/mini.tcl:992 ../tcl/mini.tcl:992 +#: tcl/mini.tcl:992 msgid "HAL Config..." msgstr "HAL konfigurieren..." -#: tcl/mini.tcl:997 ../tcl/mini.tcl:997 +#: tcl/mini.tcl:997 msgid "Program File" msgstr "Programmdatei" -#: tcl/mini.tcl:998 ../tcl/mini.tcl:998 +#: tcl/mini.tcl:998 #, tcl-format msgid "Program file is %s" msgstr "Programmdatei ist »%s«" -#: tcl/mini.tcl:999 ../tcl/mini.tcl:999 +#: tcl/mini.tcl:999 msgid "Editor File" msgstr "Editordatei" -#: tcl/mini.tcl:1000 ../tcl/mini.tcl:1000 +#: tcl/mini.tcl:1000 #, tcl-format msgid "Editor file is %s" msgstr "Editordatei ist »%s«" -#: tcl/mini.tcl:1001 ../tcl/mini.tcl:1001 +#: tcl/mini.tcl:1001 msgid "Parameter File" msgstr "Parameterdatei" -#: tcl/mini.tcl:1002 ../tcl/mini.tcl:1002 +#: tcl/mini.tcl:1002 #, tcl-format msgid "Parameter file is %s" msgstr "Parameterdatei ist »%s«" -#: tcl/mini.tcl:1003 ../tcl/mini.tcl:1003 +#: tcl/mini.tcl:1003 msgid "Tool File" msgstr "Werkzeugdatei" -#: tcl/mini.tcl:1004 ../tcl/mini.tcl:1004 +#: tcl/mini.tcl:1004 #, tcl-format msgid "Tool file is %s" msgstr "Werkzeugdatei ist »%s«" -#: tcl/mini.tcl:1006 ../tcl/mini.tcl:1006 +#: tcl/mini.tcl:1006 msgid "Active G Codes" msgstr "Aktive G-Codes" -#: tcl/mini.tcl:1007 ../tcl/mini.tcl:1007 +#: tcl/mini.tcl:1007 #, tcl-format msgid "" "Active codes include; \n" @@ -1888,134 +3519,123 @@ msgstr "" "%s" #: tcl/mini.tcl:1010 tcl/mini.tcl:2558 tcl/tklinuxcnc.tcl:791 -#: ../tcl/mini.tcl:1010 ../tcl/mini.tcl:2555 ../tcl/tkemc.tcl:843 msgid "Help..." msgstr "Hilfe..." -#: tcl/mini.tcl:1027 tcl/tklinuxcnc.tcl:890 ../tcl/mini.tcl:1027 -#: ../tcl/tkemc.tcl:942 +#: tcl/mini.tcl:1027 tcl/tklinuxcnc.tcl:890 msgid "ABORT" msgstr "ABBRECHEN" -#: tcl/mini.tcl:1038 tcl/mini.tcl:2048 ../tcl/mini.tcl:1038 -#: ../tcl/mini.tcl:2045 +#: tcl/mini.tcl:1038 tcl/mini.tcl:2048 msgid "CONTINUE" msgstr "FORTSETZEN" #: tcl/mini.tcl:1044 tcl/tklinuxcnc.tcl:828 tcl/tklinuxcnc.tcl:2248 -#: src/emc/usr_intf/touchy/touchy.glade:1264 ../tcl/mini.tcl:1044 -#: ../tcl/tkemc.tcl:880 ../tcl/tkemc.tcl:2289 +#: src/emc/usr_intf/touchy/touchy.glade:1264 msgid "MDI" msgstr "MDI" -#: tcl/mini.tcl:1048 tcl/tklinuxcnc.tcl:2239 ../tcl/mini.tcl:1048 -#: ../tcl/tkemc.tcl:2280 +#: tcl/mini.tcl:1048 tcl/tklinuxcnc.tcl:2239 msgid "AUTO" msgstr "AUTO" #: tcl/mini.tcl:1052 tcl/mini.tcl:1812 tcl/tklinuxcnc.tcl:2141 -#: tcl/tklinuxcnc.tcl:2261 ../tcl/mini.tcl:1052 ../tcl/mini.tcl:1809 -#: ../tcl/tkemc.tcl:2182 ../tcl/tkemc.tcl:2302 +#: tcl/tklinuxcnc.tcl:2261 msgid "MANUAL" msgstr "MANUELL" -#: tcl/mini.tcl:1106 ../tcl/mini.tcl:1106 +#: tcl/mini.tcl:1106 msgid "Tool #:" msgstr "Werkzeug:" -#: tcl/mini.tcl:1108 ../tcl/mini.tcl:1108 +#: tcl/mini.tcl:1108 msgid "Length :" msgstr "Länge:" -#: tcl/mini.tcl:1119 ../tcl/mini.tcl:1119 +#: tcl/mini.tcl:1119 msgid "Work Offsets: " msgstr "Arbeitsoffset:" -#: tcl/mini.tcl:1121 ../tcl/mini.tcl:1121 +#: tcl/mini.tcl:1121 msgid "start offsets popup here" msgstr "" -#: tcl/mini.tcl:1165 ../tcl/mini.tcl:1165 +#: tcl/mini.tcl:1165 msgid "start override popup here" msgstr "" -#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1669 -#: ../tcl/mini.tcl:1168 ../tcl/tkemc.tcl:1617 ../share/axis/tcl/axis.tcl:1625 +#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1739 msgid "Feed Override:" msgstr "Vorschubübersteuerung:" -#: tcl/mini.tcl:1180 ../tcl/mini.tcl:1180 +#: tcl/mini.tcl:1180 msgid "-- MESSAGES --" msgstr "-- MITTEILUNGEN --" -#: tcl/mini.tcl:1230 ../tcl/mini.tcl:1230 +#: tcl/mini.tcl:1230 msgid "toggleView's not doin nothin yet" msgstr "" -#: tcl/mini.tcl:1282 ../tcl/mini.tcl:1282 +#: tcl/mini.tcl:1282 msgid "Can't set zero with a tool offset active so I issued G49 to cancel it." msgstr "" "Mit aktivem Werkzeugoffset kann keine Referenzfahrt durchgeführt werden. Es " "wird empfohlen diesen mit dem Befehl »G49« zu beenden." -#: tcl/mini.tcl:1346 ../tcl/mini.tcl:1346 +#: tcl/mini.tcl:1346 #, tcl-format msgid "Can't update the var file while machine is in auto and %s." msgstr "" -"Die .var-Datei kann nicht aktualisiert werden, solange die Maschine im »auto«-" -"Modus und »%s« ist." +"Die .var-Datei kann nicht aktualisiert werden, solange die Maschine im " +"»auto«-Modus und »%s« ist." -#: tcl/mini.tcl:1400 tcl/tklinuxcnc.tcl:1227 ../tcl/mini.tcl:1400 -#: ../tcl/tkemc.tcl:1268 +#: tcl/mini.tcl:1400 tcl/tklinuxcnc.tcl:1227 msgid "override limits" msgstr "Grenzw. aufheben" -#: tcl/mini.tcl:1405 tcl/tklinuxcnc.tcl:1263 ../tcl/mini.tcl:1405 -#: ../tcl/tkemc.tcl:1304 +#: tcl/mini.tcl:1405 tcl/tklinuxcnc.tcl:1263 msgid "home" msgstr "Home" -#: tcl/mini.tcl:1426 ../tcl/mini.tcl:1426 +#: tcl/mini.tcl:1426 msgid "DEFAULT" msgstr "STANDART" -#: tcl/mini.tcl:1427 ../tcl/mini.tcl:1427 +#: tcl/mini.tcl:1427 msgid "Speed:" msgstr "Geschw.:" -#: tcl/mini.tcl:1430 ../tcl/mini.tcl:1430 +#: tcl/mini.tcl:1430 msgid "RAPID" msgstr "MAXIMAL" -#: tcl/mini.tcl:1447 tcl/tklinuxcnc.tcl:1391 ../tcl/mini.tcl:1447 -#: ../tcl/tkemc.tcl:1432 +#: tcl/mini.tcl:1447 tcl/tklinuxcnc.tcl:1391 msgid "Set Jog Speed" msgstr "Schrittgeschwindigkeit" -#: tcl/mini.tcl:1453 tcl/tklinuxcnc.tcl:1404 ../tcl/mini.tcl:1453 -#: ../tcl/tkemc.tcl:1445 +#: tcl/mini.tcl:1453 tcl/tklinuxcnc.tcl:1404 msgid "Set jog speed:" msgstr "Schrittgeschwindigkeit:" -#: tcl/mini.tcl:1511 ../tcl/mini.tcl:1511 +#: tcl/mini.tcl:1511 msgid "JOG X +" msgstr "X +" -#: tcl/mini.tcl:1512 ../tcl/mini.tcl:1512 +#: tcl/mini.tcl:1512 msgid "JOG X -" msgstr "X -" -#: tcl/mini.tcl:1516 ../tcl/mini.tcl:1516 +#: tcl/mini.tcl:1516 msgid "increment" msgstr "Inkrementell" #: tcl/mini.tcl:1518 tcl/tklinuxcnc.tcl:602 tcl/tklinuxcnc.tcl:1249 -#: tcl/tklinuxcnc.tcl:1253 ../tcl/mini.tcl:1518 ../tcl/tkemc.tcl:656 -#: ../tcl/tkemc.tcl:1290 ../tcl/tkemc.tcl:1294 +#: tcl/tklinuxcnc.tcl:1253 src/emc/usr_intf/gscreen/gscreen.glade:1574 +#: src/emc/usr_intf/gscreen/gscreen.glade:1586 msgid "continuous" msgstr "Durchgehend" -#: tcl/mini.tcl:1520 ../tcl/mini.tcl:1520 +#: tcl/mini.tcl:1520 msgid "" "A\n" "L\n" @@ -2037,116 +3657,86 @@ msgstr "" "E" #: tcl/mini.tcl:1588 src/emc/usr_intf/touchy/touchy.glade:1422 -#: ../tcl/mini.tcl:1585 msgid "Spindle Forward" msgstr "SPINDEL VORWÄRTS" #: tcl/mini.tcl:1589 src/emc/usr_intf/touchy/touchy.glade:1433 -#: ../tcl/mini.tcl:1586 msgid "Spindle Reverse" msgstr "SPINDEL RÜCKWÄRTS" -#: tcl/mini.tcl:1590 tcl/tklinuxcnc.tcl:871 ../tcl/mini.tcl:1587 -#: ../tcl/tkemc.tcl:923 +#: tcl/mini.tcl:1590 tcl/tklinuxcnc.tcl:871 msgid "Spindle off" msgstr "Spindel aus" #: tcl/mini.tcl:1592 src/emc/usr_intf/touchy/touchy.glade:1479 -#: ../tcl/mini.tcl:1589 msgid "Spindle Slower" msgstr "SPINDEL LANGSAMER" #: tcl/mini.tcl:1596 src/emc/usr_intf/touchy/touchy.glade:1464 -#: ../tcl/mini.tcl:1593 msgid "Spindle Faster" msgstr "SPINDEL SCHNELLER" -#: tcl/mini.tcl:1632 tcl/tklinuxcnc.tcl:1620 ../tcl/mini.tcl:1629 -#: ../tcl/tkemc.tcl:1661 +#: tcl/mini.tcl:1632 tcl/tklinuxcnc.tcl:1620 msgid "MDI:" msgstr "MDI:" #: tcl/mini.tcl:1669 tcl/tklinuxcnc.tcl:1658 -#: src/emc/usr_intf/stepconf/stepconf.glade:4403 -#: src/emc/usr_intf/pncconf/pncconf.glade:60509 -#: src/emc/usr_intf/pncconf/pncconf.glade:61603 -#: src/emc/usr_intf/pncconf/pncconf.glade:62696 -#: src/emc/usr_intf/pncconf/pncconf.glade:63789 -#: src/emc/usr_intf/pncconf/pncconf.glade:64889 ../tcl/mini.tcl:1666 -#: ../tcl/tkemc.tcl:1699 emc/usr_intf/stepconf/stepconf.glade:4045 -#: emc/usr_intf/pncconf/pncconf.glade:20249 -#: emc/usr_intf/pncconf/pncconf.glade:21272 -#: emc/usr_intf/pncconf/pncconf.glade:21972 -#: emc/usr_intf/pncconf/pncconf.glade:22672 +#: src/emc/usr_intf/stepconf/main_page.glade:298 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2625 msgid "Run" msgstr "Ausführen" #: tcl/mini.tcl:1671 tcl/tklinuxcnc.tcl:1659 -#: src/emc/usr_intf/pncconf/pncconf.glade:60574 -#: src/emc/usr_intf/pncconf/pncconf.glade:61668 -#: src/emc/usr_intf/pncconf/pncconf.glade:62761 -#: src/emc/usr_intf/pncconf/pncconf.glade:63854 ../tcl/mini.tcl:1668 -#: ../tcl/tkemc.tcl:1700 emc/usr_intf/pncconf/pncconf.glade:20220 -#: emc/usr_intf/pncconf/pncconf.glade:21243 -#: emc/usr_intf/pncconf/pncconf.glade:21943 -#: emc/usr_intf/pncconf/pncconf.glade:22643 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2638 msgid "Pause" msgstr "Pause" -#: tcl/mini.tcl:1673 tcl/tklinuxcnc.tcl:1660 ../tcl/mini.tcl:1670 -#: ../tcl/tkemc.tcl:1701 +#: tcl/mini.tcl:1673 tcl/tklinuxcnc.tcl:1660 msgid "Resume" msgstr "Fortsetzen" -#: tcl/mini.tcl:1675 tcl/tklinuxcnc.tcl:1661 ../tcl/mini.tcl:1672 -#: ../tcl/tkemc.tcl:1702 +#: tcl/mini.tcl:1675 tcl/tklinuxcnc.tcl:1661 msgid "Step" msgstr "Schritt" -#: tcl/mini.tcl:1677 tcl/tklinuxcnc.tcl:1662 ../tcl/mini.tcl:1674 -#: ../tcl/tkemc.tcl:1703 +#: tcl/mini.tcl:1677 tcl/tklinuxcnc.tcl:1662 msgid "Verify" msgstr "Überprüfen" -#: tcl/mini.tcl:1698 ../tcl/mini.tcl:1695 +#: tcl/mini.tcl:1698 msgid "RESTART LINE" msgstr "Neustart von:" -#: tcl/mini.tcl:1699 ../tcl/mini.tcl:1696 +#: tcl/mini.tcl:1699 src/emc/usr_intf/stepconf/main_page.glade:531 msgid "Back" msgstr "vorheriger Zeile" -#: tcl/mini.tcl:1700 ../tcl/mini.tcl:1697 +#: tcl/mini.tcl:1700 msgid "Ahead" msgstr "gleicher Zeile" -#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1221 ../tcl/mini.tcl:1698 +#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1300 +#: src/emc/usr_intf/gscreen/gscreen.glade:3973 msgid "Restart" msgstr "Anfang an" -#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 -#: tcl/tklinuxcnc.tcl:465 src/emc/usr_intf/axis/scripts/axis.py:1872 +#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 tcl/tklinuxcnc.tcl:465 +#: src/emc/usr_intf/axis/scripts/axis.py:2023 #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:754 -#: src/emc/usr_intf/axis/scripts/axis.py:1885 ../tcl/mini.tcl:1708 -#: ../tcl/mini.tcl:2820 ../tcl/mini.tcl:2879 ../tcl/tkemc.tcl:519 -#: emc/usr_intf/axis/scripts/axis.py:2761 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:745 msgid "All files" msgstr "Alle Dateien" -#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 -#: tcl/tklinuxcnc.tcl:466 ../tcl/mini.tcl:1709 ../tcl/mini.tcl:2821 -#: ../tcl/mini.tcl:2880 ../tcl/tkemc.tcl:520 +#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 tcl/tklinuxcnc.tcl:466 msgid "Text files" msgstr "Textdateien" -#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 -#: tcl/tklinuxcnc.tcl:467 ../tcl/mini.tcl:1710 ../tcl/mini.tcl:2822 -#: ../tcl/mini.tcl:2881 ../tcl/tkemc.tcl:521 +#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 tcl/tklinuxcnc.tcl:467 msgid "NC files" msgstr "NC Dateien" -#: tcl/mini.tcl:1753 ../tcl/mini.tcl:1750 +#: tcl/mini.tcl:1753 msgid "" "The interpreter is running. \n" " Pressing OK will abort and load the new program" @@ -2154,99 +3744,83 @@ msgstr "" "Der Interpreter arbeitet gerade. \n" "Bestätigen Sie mit »OK«, um abzubrechen und die neue Datei zu laden." -#: tcl/mini.tcl:1886 ../tcl/mini.tcl:1883 +#: tcl/mini.tcl:1886 msgid "ESTOPPED" msgstr "EINSCHALTEN" -#: tcl/mini.tcl:1889 ../tcl/mini.tcl:1886 +#: tcl/mini.tcl:1889 msgid "ESTOP PUSH" msgstr "NOTAUS" -#: tcl/mini.tcl:1892 tcl/tklinuxcnc.tcl:2233 ../tcl/mini.tcl:1889 -#: ../tcl/tkemc.tcl:2274 +#: tcl/mini.tcl:1892 tcl/tklinuxcnc.tcl:2233 msgid "ESTOP RESET" msgstr "NOTAUS RESET" -#: tcl/mini.tcl:1897 tcl/tklinuxcnc.tcl:2298 ../tcl/mini.tcl:1894 -#: ../tcl/tkemc.tcl:2339 +#: tcl/mini.tcl:1897 tcl/tklinuxcnc.tcl:2298 msgid "SPINDLE FORWARD" msgstr "SPINDEL VORWÄRTS" -#: tcl/mini.tcl:1899 tcl/tklinuxcnc.tcl:2300 ../tcl/mini.tcl:1896 -#: ../tcl/tkemc.tcl:2341 +#: tcl/mini.tcl:1899 tcl/tklinuxcnc.tcl:2300 msgid "SPINDLE REVERSE" msgstr "SPINDEL RÜCKWÄRTS" -#: tcl/mini.tcl:1901 tcl/tklinuxcnc.tcl:2302 ../tcl/mini.tcl:1898 -#: ../tcl/tkemc.tcl:2343 +#: tcl/mini.tcl:1901 tcl/tklinuxcnc.tcl:2302 msgid "SPINDLE OFF" msgstr "SPINDEL HALT" -#: tcl/mini.tcl:1903 tcl/tklinuxcnc.tcl:2304 ../tcl/mini.tcl:1900 -#: ../tcl/tkemc.tcl:2345 +#: tcl/mini.tcl:1903 tcl/tklinuxcnc.tcl:2304 msgid "SPINDLE INCREASE" msgstr "SPINDEL ERHÖHEND" -#: tcl/mini.tcl:1905 tcl/tklinuxcnc.tcl:2306 ../tcl/mini.tcl:1902 -#: ../tcl/tkemc.tcl:2347 +#: tcl/mini.tcl:1905 tcl/tklinuxcnc.tcl:2306 msgid "SPINDLE DECREASE" msgstr "SPINDEL ABNEHMEND" -#: tcl/mini.tcl:1907 tcl/tklinuxcnc.tcl:2308 ../tcl/mini.tcl:1904 -#: ../tcl/tkemc.tcl:2349 +#: tcl/mini.tcl:1907 tcl/tklinuxcnc.tcl:2308 msgid "SPINDLE ?" msgstr "SPINDEL ?" -#: tcl/mini.tcl:1911 tcl/tklinuxcnc.tcl:2312 ../tcl/mini.tcl:1908 -#: ../tcl/tkemc.tcl:2353 +#: tcl/mini.tcl:1911 tcl/tklinuxcnc.tcl:2312 msgid "BRAKE ON" msgstr "BREMSE AN" -#: tcl/mini.tcl:1913 tcl/tklinuxcnc.tcl:2314 ../tcl/mini.tcl:1910 -#: ../tcl/tkemc.tcl:2355 +#: tcl/mini.tcl:1913 tcl/tklinuxcnc.tcl:2314 msgid "BRAKE OFF" msgstr "BREMSE AUS" -#: tcl/mini.tcl:1915 tcl/tklinuxcnc.tcl:2316 ../tcl/mini.tcl:1912 -#: ../tcl/tkemc.tcl:2357 +#: tcl/mini.tcl:1915 tcl/tklinuxcnc.tcl:2316 msgid "BRAKE ?" msgstr "BREMSE ?" -#: tcl/mini.tcl:1919 tcl/tklinuxcnc.tcl:2274 ../tcl/mini.tcl:1916 -#: ../tcl/tkemc.tcl:2315 +#: tcl/mini.tcl:1919 tcl/tklinuxcnc.tcl:2274 msgid "MIST ON" msgstr "NEBEL AN" -#: tcl/mini.tcl:1921 tcl/tklinuxcnc.tcl:2276 ../tcl/mini.tcl:1918 -#: ../tcl/tkemc.tcl:2317 +#: tcl/mini.tcl:1921 tcl/tklinuxcnc.tcl:2276 msgid "MIST OFF" msgstr "NEBEL AUS" -#: tcl/mini.tcl:1923 tcl/tklinuxcnc.tcl:2278 ../tcl/mini.tcl:1920 -#: ../tcl/tkemc.tcl:2319 +#: tcl/mini.tcl:1923 tcl/tklinuxcnc.tcl:2278 msgid "MIST ?" msgstr "NEBEL ?" -#: tcl/mini.tcl:1927 tcl/tklinuxcnc.tcl:2282 ../tcl/mini.tcl:1924 -#: ../tcl/tkemc.tcl:2323 +#: tcl/mini.tcl:1927 tcl/tklinuxcnc.tcl:2282 msgid "FLOOD ON" msgstr "KÜHLM. AN" -#: tcl/mini.tcl:1929 tcl/tklinuxcnc.tcl:2284 ../tcl/mini.tcl:1926 -#: ../tcl/tkemc.tcl:2325 +#: tcl/mini.tcl:1929 tcl/tklinuxcnc.tcl:2284 msgid "FLOOD OFF" msgstr "KÜHLM. AUS" -#: tcl/mini.tcl:1931 tcl/tklinuxcnc.tcl:2286 ../tcl/mini.tcl:1928 -#: ../tcl/tkemc.tcl:2327 +#: tcl/mini.tcl:1931 tcl/tklinuxcnc.tcl:2286 msgid "FLOOD ?" msgstr "KÜHLM. ?" -#: tcl/mini.tcl:2052 ../tcl/mini.tcl:2049 +#: tcl/mini.tcl:2052 msgid "FEEDHOLD" msgstr "ANHALTEN" -#: tcl/mini.tcl:2124 ../tcl/mini.tcl:2121 +#: tcl/mini.tcl:2124 msgid "" "TOOL SETUP \n" " Click or tab to edit. Press enter to return to keyboard machine control." @@ -2256,43 +3830,42 @@ msgstr "" "Wählen Sie mit der Maus oder der Tabulator-Taste den gewünschten Wert aus.\n" "Mit der Eingabetaste wird der Wert übernommen." -#: tcl/mini.tcl:2130 ../tcl/mini.tcl:2127 +#: tcl/mini.tcl:2130 msgid " TOOL NUMBER " msgstr " WERKZEUG " -#: tcl/mini.tcl:2131 ../tcl/mini.tcl:2128 +#: tcl/mini.tcl:2131 msgid " LENGTH " msgstr " LÄNGE " -#: tcl/mini.tcl:2132 ../tcl/mini.tcl:2129 +#: tcl/mini.tcl:2132 msgid " DIAMETER " msgstr " DURCHMESSER " -#: tcl/mini.tcl:2133 ../tcl/mini.tcl:2130 +#: tcl/mini.tcl:2133 msgid " COMMENT " msgstr " BEMERKUNG " -#: tcl/mini.tcl:2188 ../tcl/mini.tcl:2185 +#: tcl/mini.tcl:2188 msgid "Add Extra Tool" msgstr "Werkzeug hinzufügen" -#: tcl/mini.tcl:2189 ../tcl/mini.tcl:2186 +#: tcl/mini.tcl:2189 msgid "Remove Last Tool" msgstr "Letztes Werkzeug löschen" -#: tcl/mini.tcl:2217 tcl/mini.tcl:2253 ../tcl/mini.tcl:2214 -#: ../tcl/mini.tcl:2250 +#: tcl/mini.tcl:2217 tcl/mini.tcl:2253 #, tcl-format msgid "Can't update the tool file while machine is in auto and %s." msgstr "" "Die Werkzeugdatei kann nicht aktualisiert werden solange die Maschine im " "»auto«-Modus und »%s« ist." -#: tcl/mini.tcl:2229 ../tcl/mini.tcl:2226 +#: tcl/mini.tcl:2229 msgid "This is not a good number." msgstr "Es wurde kein gültiger Wert angegeben." -#: tcl/mini.tcl:2293 ../tcl/mini.tcl:2290 +#: tcl/mini.tcl:2293 msgid "" "COORDINATE SYSTEM SETUP \n" "\n" @@ -2305,113 +3878,114 @@ msgstr "" "Wählen Sie mit der Maus oder der Tabulator-Taste den gewünschten Wert aus.\n" "Mit der Eingabetaste wird der Wert übernommen. " -#: tcl/mini.tcl:2320 tcl/scripts/Set_Coordinates.tcl:80 ../tcl/mini.tcl:2317 -#: ../tcl/scripts/Set_Coordinates.tcl:78 +#: tcl/mini.tcl:2320 tcl/scripts/Set_Coordinates.tcl:80 msgid "Axis " msgstr "Achse" -#: tcl/mini.tcl:2321 ../tcl/mini.tcl:2318 +#: tcl/mini.tcl:2321 msgid "Value " msgstr "Wert" -#: tcl/mini.tcl:2326 tcl/scripts/Set_Coordinates.tcl:91 ../tcl/mini.tcl:2323 -#: ../tcl/scripts/Set_Coordinates.tcl:88 +#: tcl/mini.tcl:2326 tcl/scripts/Set_Coordinates.tcl:91 msgid "Teach" msgstr "Anwenden" -#: tcl/mini.tcl:2334 ../tcl/mini.tcl:2331 +#: tcl/mini.tcl:2334 msgid "Write And Load File " msgstr "Speichern" -#: tcl/mini.tcl:2336 ../tcl/mini.tcl:2333 +#: tcl/mini.tcl:2336 msgid "Offset By Radius" msgstr "Offset über Radius" -#: tcl/mini.tcl:2337 ../tcl/mini.tcl:2334 +#: tcl/mini.tcl:2337 msgid "Offset By Length" msgstr "Offset über Länge" -#: tcl/mini.tcl:2342 ../tcl/mini.tcl:2339 +#: tcl/mini.tcl:2342 msgid "Subtract" msgstr "Abziehen" -#: tcl/mini.tcl:2344 ../tcl/mini.tcl:2341 +#: tcl/mini.tcl:2344 src/emc/usr_intf/gmoccapy/gmoccapy.glade:6712 msgid "Add" msgstr "Dazuzählen" -#: tcl/mini.tcl:2366 ../tcl/mini.tcl:2363 +#: tcl/mini.tcl:2366 msgid "Zero All G54" msgstr "G54 auf Null setzen" -#: tcl/mini.tcl:2367 ../tcl/mini.tcl:2364 +#: tcl/mini.tcl:2367 msgid "Zero All G55" msgstr "G55 auf Null setzen" -#: tcl/mini.tcl:2368 ../tcl/mini.tcl:2365 +#: tcl/mini.tcl:2368 msgid "Zero All G56" msgstr "G56 auf Null setzen" -#: tcl/mini.tcl:2369 ../tcl/mini.tcl:2366 +#: tcl/mini.tcl:2369 msgid "Zero All G57" msgstr "G57 auf Null setzen" -#: tcl/mini.tcl:2370 ../tcl/mini.tcl:2367 +#: tcl/mini.tcl:2370 msgid "Zero All G58" msgstr "G58 auf Null setzen" -#: tcl/mini.tcl:2371 ../tcl/mini.tcl:2368 +#: tcl/mini.tcl:2371 msgid "Zero All G59" msgstr "G59 auf Null setzen" -#: tcl/mini.tcl:2372 ../tcl/mini.tcl:2369 +#: tcl/mini.tcl:2372 msgid "Zero All G59.1" msgstr "G59.1 auf Null setzen" -#: tcl/mini.tcl:2373 ../tcl/mini.tcl:2370 +#: tcl/mini.tcl:2373 msgid "Zero All G59.2" msgstr "G59.2 auf Null setzen" -#: tcl/mini.tcl:2374 ../tcl/mini.tcl:2371 +#: tcl/mini.tcl:2374 msgid "Zero All G59.3" msgstr "G59.3 auf Null setzen" -#: tcl/mini.tcl:2375 ../tcl/mini.tcl:2372 +#: tcl/mini.tcl:2375 msgid "Zero All ????" msgstr "Alle auf Null setzen ????" -#: tcl/mini.tcl:2493 ../tcl/mini.tcl:2490 +#: tcl/mini.tcl:2493 msgid "Modified..." msgstr "Geändert..." -#: tcl/mini.tcl:2538 ../tcl/mini.tcl:2535 +#: tcl/mini.tcl:2538 msgid "Save and Load" msgstr "Speichern und Beenden" -#: tcl/mini.tcl:2540 ../tcl/mini.tcl:2537 +#: tcl/mini.tcl:2540 src/emc/usr_intf/gscreen/gscreen.glade:3515 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2363 msgid "Undo" msgstr "Rückgängig" -#: tcl/mini.tcl:2541 ../tcl/mini.tcl:2538 +#: tcl/mini.tcl:2541 src/emc/usr_intf/gscreen/gscreen.glade:3526 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2411 msgid "Redo" msgstr "Wiederherstellen" -#: tcl/mini.tcl:2546 src/emc/usr_intf/tooledit.tcl:488 ../tcl/mini.tcl:2543 +#: tcl/mini.tcl:2546 tcl/tooledit.tcl:488 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6695 msgid "Delete" msgstr "Löschen" -#: tcl/mini.tcl:2551 ../tcl/mini.tcl:2548 +#: tcl/mini.tcl:2551 msgid "Replace..." msgstr "Ersetzen..." -#: tcl/mini.tcl:2664 ../tcl/mini.tcl:2661 +#: tcl/mini.tcl:2664 msgid "Next Number: " msgstr "Startnummer:" -#: tcl/mini.tcl:2765 ../tcl/mini.tcl:2762 +#: tcl/mini.tcl:2765 msgid "Basic Help" msgstr "Hilfe" -#: tcl/mini.tcl:2765 ../tcl/mini.tcl:2762 +#: tcl/mini.tcl:2765 msgid "" "This is a simple ASCII editor like many others.\n" "\n" @@ -2443,7 +4017,7 @@ msgstr "" "Strg+F:\tSuchen\n" "Strg+R:\tErsetzen " -#: tcl/mini.tcl:2785 ../tcl/mini.tcl:2782 +#: tcl/mini.tcl:2785 msgid "" "tknotepad by Joseph Acosta. \n" "\n" @@ -2453,7 +4027,7 @@ msgstr "" "\n" "Modifiziert für EMC von: Paul Corner " -#: tcl/mini.tcl:2793 ../tcl/mini.tcl:2790 +#: tcl/mini.tcl:2793 msgid "" "The contents of this file may have changed, do you wish to to save your " "changes?" @@ -2461,71 +4035,73 @@ msgstr "" "Der Inhalt dieser Datei wurde wahrscheinlich geändert. Sollen die Änderungen " "gespeichert werden?" -#: tcl/mini.tcl:2794 ../tcl/mini.tcl:2791 +#: tcl/mini.tcl:2794 msgid "New Confirm?" msgstr "Änderungen bestätigen" -#: tcl/mini.tcl:2928 ../tcl/mini.tcl:2925 +#: tcl/mini.tcl:2928 msgid "Print Setup" msgstr "Drucker-Einstellungen" -#: tcl/mini.tcl:2932 ../tcl/mini.tcl:2929 +#: tcl/mini.tcl:2932 msgid "Print Command: " msgstr "Drucker-Befehl:" -#: tcl/mini.tcl:3095 ../tcl/mini.tcl:3092 +#: tcl/mini.tcl:3095 msgid "Find what:" msgstr "Suchen:" -#: tcl/mini.tcl:3101 ../tcl/mini.tcl:3098 +#: tcl/mini.tcl:3101 msgid "Replace with:" msgstr "Ersetzen mit:" -#: tcl/mini.tcl:3109 ../tcl/mini.tcl:3106 +#: tcl/mini.tcl:3109 msgid "Find Next" msgstr "Weitersuchen" -#: tcl/mini.tcl:3112 ../tcl/mini.tcl:3109 +#: tcl/mini.tcl:3112 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2494 msgid "Replace" msgstr "Ersetzen" -#: tcl/mini.tcl:3120 ../tcl/mini.tcl:3117 +#: tcl/mini.tcl:3120 src/emc/usr_intf/gscreen/gscreen.py:2750 +#: src/emc/usr_intf/gmoccapy/dialogs.py:171 msgid "Up" msgstr "Aufwärts" -#: tcl/mini.tcl:3121 ../tcl/mini.tcl:3118 +#: tcl/mini.tcl:3121 src/emc/usr_intf/gscreen/gscreen.py:2754 +#: src/emc/usr_intf/gmoccapy/dialogs.py:175 msgid "Down" msgstr "Abwärts" -#: tcl/mini.tcl:3124 ../tcl/mini.tcl:3121 +#: tcl/mini.tcl:3124 msgid "Match case" msgstr "Groß-/Kleinschreibung beachten" -#: tcl/mini.tcl:3569 ../tcl/mini.tcl:3566 +#: tcl/mini.tcl:3569 msgid "rot-x" msgstr "Rot-X" -#: tcl/mini.tcl:3579 ../tcl/mini.tcl:3576 +#: tcl/mini.tcl:3579 msgid "rot-y" msgstr "Rot-Y" -#: tcl/mini.tcl:3589 ../tcl/mini.tcl:3586 +#: tcl/mini.tcl:3589 msgid "rot-z" msgstr "Rot-Z" -#: tcl/mini.tcl:3599 ../tcl/mini.tcl:3596 +#: tcl/mini.tcl:3599 msgid "zoom" msgstr "Zoom" -#: tcl/mini.tcl:3655 ../tcl/mini.tcl:3652 +#: tcl/mini.tcl:3655 msgid "TEST" msgstr "TEST" -#: tcl/mini.tcl:3699 ../tcl/mini.tcl:3696 +#: tcl/mini.tcl:3699 msgid "Hide Setup" msgstr "Optionen ausbl." -#: tcl/mini.tcl:3703 ../tcl/mini.tcl:3700 +#: tcl/mini.tcl:3703 msgid "Show Setup" msgstr "Optionen anz." @@ -2543,27 +4119,24 @@ msgstr "" "EMC2 wurde mit einem Fehler beendet. Falls Sie den Fehler melden wollen, " "fügen Sie bitte Ihrer Mitteilung die unten stehenden Informationen bei." -#: tcl/show_errors.tcl:69 tcl/scripts/Set_Coordinates.tcl:103 -#: ../tcl/show_errors.tcl:69 ../tcl/scripts/Set_Coordinates.tcl:99 +#: tcl/show_errors.tcl:74 tcl/scripts/Set_Coordinates.tcl:103 msgid "Close" msgstr "Beenden" -#: tcl/tklinuxcnc.tcl:154 tcl/tklinuxcnc.tcl:181 ../tcl/tkemc.tcl:209 -#: ../tcl/tkemc.tcl:236 +#: tcl/tklinuxcnc.tcl:154 tcl/tklinuxcnc.tcl:181 msgid "Set Run Mark" msgstr "Startpunkt setzen" -#: tcl/tklinuxcnc.tcl:156 ../tcl/tkemc.tcl:211 +#: tcl/tklinuxcnc.tcl:156 #, tcl-format msgid "Set run mark at line %s?" msgstr "Startpunkt in Zeile %s setzen?" -#: tcl/tklinuxcnc.tcl:176 tcl/tklinuxcnc.tcl:204 ../tcl/tkemc.tcl:231 -#: ../tcl/tkemc.tcl:254 ../tcl/tkemc.tcl:277 +#: tcl/tklinuxcnc.tcl:176 tcl/tklinuxcnc.tcl:204 msgid "untitled" msgstr "unbenannt" -#: tcl/tklinuxcnc.tcl:212 ../tcl/tkemc.tcl:285 +#: tcl/tklinuxcnc.tcl:212 msgid "Load Parameter File" msgstr "Speichern" @@ -2572,35 +4145,31 @@ msgstr "Speichern" msgid "LinuxCNC Diagnostics" msgstr "EMC2 Diagnose" -#: tcl/tklinuxcnc.tcl:263 ../tcl/tkemc.tcl:336 +#: tcl/tklinuxcnc.tcl:263 msgid "Task" msgstr "Prozess" #: tcl/tklinuxcnc.tcl:265 tcl/tklinuxcnc.tcl:288 tcl/tklinuxcnc.tcl:311 -#: ../tcl/tkemc.tcl:338 ../tcl/tkemc.tcl:361 ../tcl/tkemc.tcl:384 msgid "Heartbeat:" msgstr "Takt:" #: tcl/tklinuxcnc.tcl:268 tcl/tklinuxcnc.tcl:291 tcl/tklinuxcnc.tcl:314 -#: ../tcl/tkemc.tcl:341 ../tcl/tkemc.tcl:364 ../tcl/tkemc.tcl:387 msgid "Command:" msgstr "Befehlskennung:" #: tcl/tklinuxcnc.tcl:271 tcl/tklinuxcnc.tcl:294 tcl/tklinuxcnc.tcl:317 -#: ../tcl/tkemc.tcl:344 ../tcl/tkemc.tcl:367 ../tcl/tkemc.tcl:390 msgid "Command #:" msgstr "Befehlsnummer:" #: tcl/tklinuxcnc.tcl:274 tcl/tklinuxcnc.tcl:297 tcl/tklinuxcnc.tcl:320 -#: ../tcl/tkemc.tcl:347 ../tcl/tkemc.tcl:370 ../tcl/tkemc.tcl:393 msgid "Status:" msgstr "Status:" -#: tcl/tklinuxcnc.tcl:286 ../tcl/tkemc.tcl:359 +#: tcl/tklinuxcnc.tcl:286 msgid "Io" msgstr "Ein-/Ausgänge" -#: tcl/tklinuxcnc.tcl:309 ../tcl/tkemc.tcl:382 +#: tcl/tklinuxcnc.tcl:309 msgid "Motion" msgstr "Achssteuerung" @@ -2626,20 +4195,19 @@ msgstr "" "\n" "GPL Version 2 (2006)" -#: tcl/tklinuxcnc.tcl:399 ../tcl/tkemc.tcl:444 +#: tcl/tklinuxcnc.tcl:399 msgid "Set Tool Offset" msgstr "Werkzeugoffset" -#: tcl/tklinuxcnc.tcl:404 tcl/tklinuxcnc.tcl:905 ../tcl/tkemc.tcl:452 -#: ../tcl/tkemc.tcl:957 +#: tcl/tklinuxcnc.tcl:404 tcl/tklinuxcnc.tcl:905 msgid "Tool:" msgstr "Werkzeug:" -#: tcl/tklinuxcnc.tcl:722 ../tcl/tkemc.tcl:775 +#: tcl/tklinuxcnc.tcl:722 msgid "Edit..." msgstr "Bearbeiten..." -#: tcl/tklinuxcnc.tcl:727 ../tcl/tkemc.tcl:780 +#: tcl/tklinuxcnc.tcl:727 msgid "Tool Table Editor..." msgstr "Werkzeugtabelle bearbeiten..." @@ -2648,285 +4216,260 @@ msgstr "Werkzeugtabelle bearbeiten..." msgid "Reload Tool Table" msgstr "Speichern" -#: tcl/tklinuxcnc.tcl:740 ../tcl/tkemc.tcl:792 +#: tcl/tklinuxcnc.tcl:740 msgid "Offsets and Variables..." msgstr "Parameterdatei..." -#: tcl/tklinuxcnc.tcl:741 ../tcl/tkemc.tcl:793 +#: tcl/tklinuxcnc.tcl:741 msgid "Diagnostics..." msgstr "Diagnose..." -#: tcl/tklinuxcnc.tcl:742 ../tcl/tkemc.tcl:794 +#: tcl/tklinuxcnc.tcl:742 msgid "Backplot..." msgstr "Backplot..." -#: tcl/tklinuxcnc.tcl:748 ../tcl/tkemc.tcl:800 +#: tcl/tklinuxcnc.tcl:748 msgid "Testing..." msgstr "Testen..." -#: tcl/tklinuxcnc.tcl:749 ../tcl/tkemc.tcl:801 +#: tcl/tklinuxcnc.tcl:749 msgid "Debug..." msgstr "Debug..." -#: tcl/tklinuxcnc.tcl:750 ../tcl/tkemc.tcl:802 +#: tcl/tklinuxcnc.tcl:750 msgid "Font..." msgstr "Schrift..." #: tcl/tklinuxcnc.tcl:754 src/emc/usr_intf/axis/scripts/image-to-gcode.py:665 -#: ../tcl/tkemc.tcl:806 emc/usr_intf/axis/scripts/image-to-gcode.py:656 msgid "Units" msgstr "Maßeinheit" -#: ../tcl/tkemc.tcl:807 +#: tcl/tklinuxcnc.tcl:755 msgid "auto" msgstr "Auto" -#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8512 -#: ../tcl/tkemc.tcl:808 emc/usr_intf/pncconf/pncconf.py:3329 -#: emc/usr_intf/pncconf/pncconf.py:3337 emc/usr_intf/pncconf/pncconf.py:3338 -#: emc/usr_intf/pncconf/pncconf.py:4176 +#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8873 msgid "inches" msgstr "inch" -#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1543 -#: src/emc/usr_intf/axis/scripts/axis.py:1713 +#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1609 +#: src/emc/usr_intf/axis/scripts/axis.py:1855 +#: src/emc/usr_intf/axis/scripts/axis.py:2386 #: src/emc/usr_intf/touchy/touchy.glade:3301 -#: src/emc/usr_intf/stepconf/stepconf.py:1685 -#: src/emc/usr_intf/stepconf/stepconf.py:2221 -#: src/emc/usr_intf/stepconf/stepconf.glade:4357 -#: src/emc/usr_intf/pncconf/pncconf.py:8508 -#: src/emc/usr_intf/pncconf/pncconf.glade:2229 -#: src/emc/usr_intf/pncconf/pncconf.glade:2394 -#: src/emc/usr_intf/pncconf/pncconf.glade:57616 -#: src/emc/usr_intf/pncconf/pncconf.glade:57688 -#: src/emc/usr_intf/pncconf/pncconf.glade:60646 -#: src/emc/usr_intf/pncconf/pncconf.glade:61739 -#: src/emc/usr_intf/pncconf/pncconf.glade:62832 -#: src/emc/usr_intf/pncconf/pncconf.glade:63925 -#: src/emc/usr_intf/pncconf/pncconf.glade:65091 -#: src/emc/usr_intf/axis/scripts/axis.py:1556 -#: src/emc/usr_intf/axis/scripts/axis.py:1726 ../tcl/tkemc.tcl:809 -#: emc/usr_intf/axis/scripts/axis.py:2381 -#: emc/usr_intf/axis/scripts/axis.py:2528 -#: emc/usr_intf/stepconf/stepconf.py:1495 -#: emc/usr_intf/stepconf/stepconf.py:2079 -#: emc/usr_intf/stepconf/stepconf.glade:3999 -#: emc/usr_intf/pncconf/pncconf.py:3310 emc/usr_intf/pncconf/pncconf.py:3318 -#: emc/usr_intf/pncconf/pncconf.py:3319 emc/usr_intf/pncconf/pncconf.py:4172 -#: emc/usr_intf/pncconf/pncconf.glade:15668 -#: emc/usr_intf/pncconf/pncconf.glade:15755 -#: emc/usr_intf/pncconf/pncconf.glade:17901 -#: emc/usr_intf/pncconf/pncconf.glade:20518 -#: emc/usr_intf/pncconf/pncconf.glade:21537 -#: emc/usr_intf/pncconf/pncconf.glade:22237 -#: emc/usr_intf/pncconf/pncconf.glade:22937 +#: src/emc/usr_intf/stepconf/stepconf.py:1314 +#: src/emc/usr_intf/stepconf/pages.py:625 +#: src/emc/usr_intf/stepconf/main_page.glade:251 +#: src/emc/usr_intf/pncconf/pncconf.py:8869 +#: src/emc/usr_intf/pncconf/pncconf.glade:2195 +#: src/emc/usr_intf/pncconf/pncconf.glade:2362 +#: src/emc/usr_intf/pncconf/pncconf.glade:64552 +#: src/emc/usr_intf/pncconf/pncconf.glade:64621 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "mm" msgstr "mm" -#: tcl/tklinuxcnc.tcl:758 ../tcl/tkemc.tcl:810 +#: tcl/tklinuxcnc.tcl:758 msgid "cm" msgstr "cm" -#: tcl/tklinuxcnc.tcl:762 ../tcl/tkemc.tcl:814 +#: tcl/tklinuxcnc.tcl:762 msgid "Utilities" msgstr "Hilfsmittel" -#: tcl/tklinuxcnc.tcl:763 ../tcl/tkemc.tcl:815 +#: tcl/tklinuxcnc.tcl:763 msgid "Hal Scope" msgstr "HAL-Scope" -#: tcl/tklinuxcnc.tcl:785 ../tcl/tkemc.tcl:837 +#: tcl/tklinuxcnc.tcl:785 msgid "HAL Show" msgstr "HAL anzeigen..." -#: tcl/tklinuxcnc.tcl:786 ../tcl/tkemc.tcl:838 +#: tcl/tklinuxcnc.tcl:786 msgid "HAL Config" msgstr "HAL konfigurieren..." -#: tcl/tklinuxcnc.tcl:792 ../tcl/tkemc.tcl:844 +#: tcl/tklinuxcnc.tcl:792 msgid "Balloon help" msgstr "Popup-Hilfe" -#: tcl/tklinuxcnc.tcl:815 ../tcl/tkemc.tcl:867 +#: tcl/tklinuxcnc.tcl:815 msgid "Estop on" msgstr "Notaus gesetzt" -#: tcl/tklinuxcnc.tcl:816 ../tcl/tkemc.tcl:868 +#: tcl/tklinuxcnc.tcl:816 msgid "Estop off" msgstr "Notaus zurückgesetzt" -#: tcl/tklinuxcnc.tcl:818 ../tcl/tkemc.tcl:870 +#: tcl/tklinuxcnc.tcl:818 msgid "Machine on" msgstr "Maschine an" -#: tcl/tklinuxcnc.tcl:819 ../tcl/tkemc.tcl:871 +#: tcl/tklinuxcnc.tcl:819 src/emc/usr_intf/gscreen/gscreen.glade:2452 msgid "Machine off" msgstr "Maschine aus" #: tcl/tklinuxcnc.tcl:826 src/emc/usr_intf/touchy/touchy.glade:1561 -#: ../tcl/tkemc.tcl:878 msgid "Manual" msgstr "Manuell" -#: tcl/tklinuxcnc.tcl:835 ../tcl/tkemc.tcl:887 +#: tcl/tklinuxcnc.tcl:835 msgid "Mist on" msgstr "Nebel an" -#: tcl/tklinuxcnc.tcl:836 ../tcl/tkemc.tcl:888 +#: tcl/tklinuxcnc.tcl:836 msgid "Mist off" msgstr "Nebel aus" -#: tcl/tklinuxcnc.tcl:843 ../tcl/tkemc.tcl:895 +#: tcl/tklinuxcnc.tcl:843 msgid "Flood on" msgstr "Kühlmittel an" -#: tcl/tklinuxcnc.tcl:844 ../tcl/tkemc.tcl:896 +#: tcl/tklinuxcnc.tcl:844 msgid "Flood off" msgstr "Kühlmittel aus" -#: tcl/tklinuxcnc.tcl:851 ../tcl/tkemc.tcl:903 +#: tcl/tklinuxcnc.tcl:851 msgid "Lube on" msgstr "Schmieröl an" -#: tcl/tklinuxcnc.tcl:852 ../tcl/tkemc.tcl:904 +#: tcl/tklinuxcnc.tcl:852 msgid "Lube off" msgstr "Schmieröl aus" -#: tcl/tklinuxcnc.tcl:869 ../tcl/tkemc.tcl:921 +#: tcl/tklinuxcnc.tcl:869 msgid "Spindle forward" msgstr "Spindel vor" -#: tcl/tklinuxcnc.tcl:870 ../tcl/tkemc.tcl:922 +#: tcl/tklinuxcnc.tcl:870 msgid "Spindle reverse" msgstr "Spindel zurück" -#: tcl/tklinuxcnc.tcl:885 ../tcl/tkemc.tcl:937 +#: tcl/tklinuxcnc.tcl:885 msgid "Brake on" msgstr "Bremse an" -#: tcl/tklinuxcnc.tcl:886 ../tcl/tkemc.tcl:938 +#: tcl/tklinuxcnc.tcl:886 msgid "Brake off" msgstr "Bremse aus" -#: tcl/tklinuxcnc.tcl:907 ../tcl/tkemc.tcl:959 +#: tcl/tklinuxcnc.tcl:907 msgid "Offset:" msgstr "Werkzeugoffset:" -#: tcl/tklinuxcnc.tcl:913 ../tcl/tkemc.tcl:961 +#: tcl/tklinuxcnc.tcl:913 msgid "Work Offsets:" msgstr "Arbeitsoffset:" -#: tcl/tklinuxcnc.tcl:1233 ../tcl/tkemc.tcl:1274 +#: tcl/tklinuxcnc.tcl:1233 msgid "relative" msgstr "Relativ" -#: tcl/tklinuxcnc.tcl:1234 ../tcl/tkemc.tcl:1275 +#: tcl/tklinuxcnc.tcl:1234 msgid "machine" msgstr "Maschine" -#: tcl/tklinuxcnc.tcl:1236 ../tcl/tkemc.tcl:1277 +#: tcl/tklinuxcnc.tcl:1236 msgid "actual" msgstr "- Aktuell" -#: tcl/tklinuxcnc.tcl:1237 ../tcl/tkemc.tcl:1278 +#: tcl/tklinuxcnc.tcl:1237 msgid "commanded" msgstr "- Erwartet" -#: tcl/tklinuxcnc.tcl:1239 ../tcl/tkemc.tcl:1280 +#: tcl/tklinuxcnc.tcl:1239 msgid "joint" msgstr "Achse" -#: tcl/tklinuxcnc.tcl:1240 ../tcl/tkemc.tcl:1281 +#: tcl/tklinuxcnc.tcl:1240 msgid "world" msgstr "Global" -#: tcl/tklinuxcnc.tcl:1333 ../tcl/tkemc.tcl:1374 +#: tcl/tklinuxcnc.tcl:1333 msgid "Axis Offset" msgstr "Achsoffset" -#: tcl/tklinuxcnc.tcl:1335 ../tcl/tkemc.tcl:1376 +#: tcl/tklinuxcnc.tcl:1335 msgid "Set axis value:" msgstr "Achsoffset:" -#: tcl/tklinuxcnc.tcl:1429 ../tcl/tkemc.tcl:1470 +#: tcl/tklinuxcnc.tcl:1429 msgid "Set Feed Override" msgstr "Vorschubübersteuerung" -#: tcl/tklinuxcnc.tcl:1435 ../tcl/tkemc.tcl:1476 +#: tcl/tklinuxcnc.tcl:1435 msgid "Set feed override:" msgstr "Vorschubübersteuerung:" -#: tcl/tklinuxcnc.tcl:1460 ../tcl/tkemc.tcl:1501 +#: tcl/tklinuxcnc.tcl:1460 msgid "Set Spindle Override" msgstr "Spindelübersteuerung" -#: tcl/tklinuxcnc.tcl:1466 ../tcl/tkemc.tcl:1507 +#: tcl/tklinuxcnc.tcl:1466 msgid "Set spindle speed override:" msgstr "Spindelübersteuerung:" -#: tcl/tklinuxcnc.tcl:1521 ../tcl/tkemc.tcl:1562 +#: tcl/tklinuxcnc.tcl:1521 msgid "Linear Jog Speed" msgstr "Lineare Schrittgeschwindigkeit" -#: tcl/tklinuxcnc.tcl:1552 ../tcl/tkemc.tcl:1593 +#: tcl/tklinuxcnc.tcl:1552 msgid "Angular Jog Speed (deg)/min:" msgstr "Winkel-Schrittgeschwindigkeit Grad/min:" -#: tcl/tklinuxcnc.tcl:1596 ../tcl/tkemc.tcl:1637 +#: tcl/tklinuxcnc.tcl:1596 msgid "Spindle speed Override:" msgstr "Spindelübersteuerung:" -#: tcl/tklinuxcnc.tcl:1642 ../tcl/tkemc.tcl:1683 +#: tcl/tklinuxcnc.tcl:1642 msgid "Program: " msgstr "Programm: " -#: tcl/tklinuxcnc.tcl:1647 ../tcl/tkemc.tcl:1688 +#: tcl/tklinuxcnc.tcl:1647 msgid " - Status: " msgstr " - Status: " -#: tcl/tklinuxcnc.tcl:1663 ../tcl/tkemc.tcl:1704 +#: tcl/tklinuxcnc.tcl:1663 msgid "Optional Stop" msgstr "Wahlweiser Halt" -#: tcl/tklinuxcnc.tcl:2010 ../tcl/tkemc.tcl:2051 +#: tcl/tklinuxcnc.tcl:2010 msgid "Error" msgstr "Fehler" -#: tcl/tklinuxcnc.tcl:2070 tcl/ngcgui_ttt.tcl:46 ../tcl/tkemc.tcl:2111 +#: tcl/tklinuxcnc.tcl:2070 tcl/ngcgui_ttt.tcl:46 msgid "Set Font" msgstr "Schrift auswählen" -#: tcl/tklinuxcnc.tcl:2079 tcl/ngcgui_ttt.tcl:283 ../tcl/tkemc.tcl:2120 +#: tcl/tklinuxcnc.tcl:2079 tcl/ngcgui_ttt.tcl:283 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4827 msgid "Font" msgstr "Schriftart" -#: tcl/tklinuxcnc.tcl:2086 ../tcl/tkemc.tcl:2127 +#: tcl/tklinuxcnc.tcl:2086 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3257 msgid "Size" msgstr "Größe" -#: tcl/tklinuxcnc.tcl:2093 ../tcl/tkemc.tcl:2134 +#: tcl/tklinuxcnc.tcl:2093 msgid "Style" msgstr "Stil" -#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:1916 ../tcl/tkemc.tcl:2270 -#: ../share/axis/tcl/axis.tcl:1873 +#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:2031 msgid "ESTOP" msgstr "NOTAUS" -#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2840 share/axis/tcl/axis.tcl:1918 -#: ../tcl/tkemc.tcl:2272 ../share/axis/tcl/axis.tcl:1875 +#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2979 share/axis/tcl/axis.tcl:2033 msgid "ON" msgstr "AN" -#: tcl/tklinuxcnc.tcl:2290 ../tcl/tkemc.tcl:2331 +#: tcl/tklinuxcnc.tcl:2290 msgid "LUBE ON" msgstr "SCHMIERM. AN" -#: tcl/tklinuxcnc.tcl:2292 ../tcl/tkemc.tcl:2333 +#: tcl/tklinuxcnc.tcl:2292 msgid "LUBE OFF" msgstr "SCHMIERM. AUS" -#: tcl/tklinuxcnc.tcl:2294 ../tcl/tkemc.tcl:2335 +#: tcl/tklinuxcnc.tcl:2294 msgid "LUBE ?" msgstr "SCHMIERM. AN" @@ -2935,674 +4478,679 @@ msgstr "SCHMIERM. AN" msgid "LinuxCNC Set Coordinate" msgstr "EMC2 Koordinaten-Setup" -#: tcl/scripts/Set_Coordinates.tcl:26 ../tcl/scripts/Set_Coordinates.tcl:26 +#: tcl/scripts/Set_Coordinates.tcl:26 msgid "Coordinate System Control Window" msgstr "Koordinatensystem Kontroll-Fenster" -#: tcl/scripts/Set_Coordinates.tcl:81 ../tcl/scripts/Set_Coordinates.tcl:79 +#: tcl/scripts/Set_Coordinates.tcl:81 msgid "Var # " msgstr "Variable" -#: tcl/scripts/Set_Coordinates.tcl:82 ../tcl/scripts/Set_Coordinates.tcl:80 +#: tcl/scripts/Set_Coordinates.tcl:82 msgid "Offset Value " msgstr "Aktueller Wert" -#: tcl/scripts/Set_Coordinates.tcl:83 ../tcl/scripts/Set_Coordinates.tcl:81 +#: tcl/scripts/Set_Coordinates.tcl:83 msgid "What to Teach" msgstr "Neuen Wert eingeben:" -#: tcl/scripts/Set_Coordinates.tcl:101 ../tcl/scripts/Set_Coordinates.tcl:97 +#: tcl/scripts/Set_Coordinates.tcl:101 msgid "Set Old" msgstr "Alten Wert" -#: tcl/scripts/Set_Coordinates.tcl:102 ../tcl/scripts/Set_Coordinates.tcl:98 +#: tcl/scripts/Set_Coordinates.tcl:102 msgid "Set Zero" msgstr "Null setzen" -#: tcl/scripts/Set_Coordinates.tcl:104 ../tcl/scripts/Set_Coordinates.tcl:100 +#: tcl/scripts/Set_Coordinates.tcl:104 msgid "Write" msgstr "Speichern" -#: tcl/ngcgui.tcl:467 +#: tcl/ngcgui.tcl:439 tcl/ngcgui.tcl:846 msgid "Need non-null file name" msgstr "" -#: tcl/ngcgui.tcl:543 +#: tcl/ngcgui.tcl:483 msgid "Disallowed use of ngcgui generated file as Subfile" msgstr "" -#: tcl/ngcgui.tcl:549 +#: tcl/ngcgui.tcl:489 msgid "" "marked (not_a_subfile)\n" "Not intended for use as a subfile" msgstr "" -#: tcl/ngcgui.tcl:564 -msgid "Multiple subroutines in file not allowed" +#: tcl/ngcgui.tcl:503 tcl/ngcgui.tcl:522 tcl/ngcgui.tcl:544 tcl/ngcgui.tcl:557 +#: tcl/ngcgui.tcl:577 tcl/ngcgui.tcl:682 +msgid "bogus" msgstr "" -#: tcl/ngcgui.tcl:573 tcl/ngcgui.tcl:595 tcl/ngcgui.tcl:608 tcl/ngcgui.tcl:650 -#: tcl/ngcgui.tcl:755 -msgid "bogus" +#: tcl/ngcgui.tcl:505 +msgid "can not include subroutines within ngcgui subfile" msgstr "" -#: tcl/ngcgui.tcl:575 +#: tcl/ngcgui.tcl:513 +msgid "Multiple subroutines in file not allowed" +msgstr "" + +#: tcl/ngcgui.tcl:524 msgid "sub label" msgstr "" -#: tcl/ngcgui.tcl:575 tcl/ngcgui.tcl:652 +#: tcl/ngcgui.tcl:524 tcl/ngcgui.tcl:579 #, fuzzy msgid "does not match subroutine file name" msgstr "Zu viele Ebenen für die Unterfunktion" -#: tcl/ngcgui.tcl:590 tcl/ngcgui.tcl:591 +#: tcl/ngcgui.tcl:539 tcl/ngcgui.tcl:540 msgid "ignoring M2 after endsub" msgstr "" -#: tcl/ngcgui.tcl:596 +#: tcl/ngcgui.tcl:545 msgid "file contains lines after subend" msgstr "" -#: tcl/ngcgui.tcl:609 +#: tcl/ngcgui.tcl:558 msgid "file contains lines before sub" msgstr "" -#: tcl/ngcgui.tcl:652 +#: tcl/ngcgui.tcl:579 msgid "endsub label" msgstr "" -#: tcl/ngcgui.tcl:757 +#: tcl/ngcgui.tcl:684 msgid "out of sequence positional parameter" msgstr "" -#: tcl/ngcgui.tcl:757 +#: tcl/ngcgui.tcl:684 msgid "expected" msgstr "" -#: tcl/ngcgui.tcl:817 -msgid "toomany" -msgstr "" - -#: tcl/ngcgui.tcl:868 +#: tcl/ngcgui.tcl:735 msgid "no sub found in file" msgstr "" -#: tcl/ngcgui.tcl:871 +#: tcl/ngcgui.tcl:738 msgid "no endsub found in file" msgstr "" -#: tcl/ngcgui.tcl:961 +#: tcl/ngcgui.tcl:801 +msgid "Cannot find gcmc executable" +msgstr "" + +#: tcl/ngcgui.tcl:802 +msgid "Please Install in path" +msgstr "" + +#: tcl/ngcgui.tcl:810 +msgid "not embedded, deriving outdir from:" +msgstr "" + +#: tcl/ngcgui.tcl:1038 #, fuzzy msgid "Choose Files" msgstr "Werkzeugdatei" -#: tcl/ngcgui.tcl:1100 +#: tcl/ngcgui.tcl:1178 #, fuzzy msgid "Controls" msgstr "Strg-M" -#: tcl/ngcgui.tcl:1109 +#: tcl/ngcgui.tcl:1187 msgid "Preamble" msgstr "" -#: tcl/ngcgui.tcl:1122 +#: tcl/ngcgui.tcl:1200 msgid "Subfile" msgstr "" -#: tcl/ngcgui.tcl:1134 +#: tcl/ngcgui.tcl:1212 msgid "Postamble" msgstr "" -#: tcl/ngcgui.tcl:1151 +#: tcl/ngcgui.tcl:1229 msgid "Retain values on Subfile read" msgstr "" -#: tcl/ngcgui.tcl:1159 +#: tcl/ngcgui.tcl:1237 #, fuzzy msgid "Expand subroutine" msgstr "Menübaum aufklappen" -#: tcl/ngcgui.tcl:1168 tcl/ngcgui.tcl:2414 +#: tcl/ngcgui.tcl:1247 tcl/ngcgui.tcl:2571 #, fuzzy msgid "Autosend" msgstr "Auto" -#: tcl/ngcgui.tcl:1178 +#: tcl/ngcgui.tcl:1257 #, fuzzy msgid "Verbose ngcfile" msgstr "NC Dateien" -#: tcl/ngcgui.tcl:1188 tcl/ngcgui.tcl:2235 tcl/ngcgui.tcl:2259 -#: tcl/ngcgui.tcl:2289 +#: tcl/ngcgui.tcl:1267 tcl/ngcgui.tcl:2393 tcl/ngcgui.tcl:2416 +#: tcl/ngcgui.tcl:2446 msgid "Create Feature" msgstr "" -#: tcl/ngcgui.tcl:1194 tcl/ngcgui.tcl:2919 +#: tcl/ngcgui.tcl:1273 tcl/ngcgui.tcl:3058 #, fuzzy msgid "MakeFile" msgstr "Datei" -#: tcl/ngcgui.tcl:1195 tcl/ngcgui.tcl:2916 +#: tcl/ngcgui.tcl:1274 tcl/ngcgui.tcl:3055 msgid "Finalize" msgstr "" -#: tcl/ngcgui.tcl:1212 +#: tcl/ngcgui.tcl:1291 #, fuzzy msgid "Reread" msgstr "Thread" -#: tcl/ngcgui.tcl:1231 +#: tcl/ngcgui.tcl:1310 msgid "SendFileToAxis" msgstr "" -#: tcl/ngcgui.tcl:1274 +#: tcl/ngcgui.tcl:1353 msgid "Unrecoverable problem" msgstr "" -#: tcl/ngcgui.tcl:1374 +#: tcl/ngcgui.tcl:1431 msgid "Postamble file" msgstr "" -#: tcl/ngcgui.tcl:1424 +#: tcl/ngcgui.tcl:1481 msgid "Subroutine file" msgstr "" -#: tcl/ngcgui.tcl:1482 +#: tcl/ngcgui.tcl:1545 #, fuzzy msgid "Positional Parameters" msgstr "Para_meter" -#: tcl/ngcgui.tcl:1587 -msgid "_Globals" -msgstr "" - -#: tcl/ngcgui.tcl:1690 +#: tcl/ngcgui.tcl:1694 msgid "No Subfile specified" msgstr "" -#: tcl/ngcgui.tcl:1692 +#: tcl/ngcgui.tcl:1696 #, fuzzy msgid "No parameters yet" msgstr "Para_meter" -#: tcl/ngcgui.tcl:1701 +#: tcl/ngcgui.tcl:1705 msgid "Missing value for parm" msgstr "" -#: tcl/ngcgui.tcl:1735 +#: tcl/ngcgui.tcl:1726 msgid "Output file" msgstr "" -#: tcl/ngcgui.tcl:1827 -msgid "Positional parameters for" -msgstr "" - -#: tcl/ngcgui.tcl:1835 -#, fuzzy -msgid "expanded file" -msgstr "Menübaum aufklappen" - -#: tcl/ngcgui.tcl:1849 -#, fuzzy -msgid "call subroutine file" -msgstr "Zu viele Ebenen für die Unterfunktion" - -#: tcl/ngcgui.tcl:1919 +#: tcl/ngcgui.tcl:1841 msgid "Multiple Tabs with Features" msgstr "" -#: tcl/ngcgui.tcl:1920 +#: tcl/ngcgui.tcl:1842 msgid "Finalize all Tabs?" msgstr "" -#: tcl/ngcgui.tcl:1920 +#: tcl/ngcgui.tcl:1842 msgid "Order" msgstr "" -#: tcl/ngcgui.tcl:1922 +#: tcl/ngcgui.tcl:1844 msgid "No, just this page" msgstr "" -#: tcl/ngcgui.tcl:1936 +#: tcl/ngcgui.tcl:1858 msgid "Axis is not responding" msgstr "" -#: tcl/ngcgui.tcl:1937 +#: tcl/ngcgui.tcl:1859 #, fuzzy msgid "Error: " msgstr "Fehler" -#: tcl/ngcgui.tcl:1939 +#: tcl/ngcgui.tcl:1861 msgid "Autosend disabled, Ctrl-A toggles autosend" msgstr "" -#: tcl/ngcgui.tcl:1941 +#: tcl/ngcgui.tcl:1863 msgid "File saving enabled -- Finalize to save" msgstr "" -#: tcl/ngcgui.tcl:1957 +#: tcl/ngcgui.tcl:1879 msgid "Require .ngc suffix for filename" msgstr "" -#: tcl/ngcgui.tcl:1967 +#: tcl/ngcgui.tcl:1889 msgid "Disallowed overwrite of" msgstr "" -#: tcl/ngcgui.tcl:1986 +#: tcl/ngcgui.tcl:1913 msgid "FEATURE" msgstr "" -#: tcl/ngcgui.tcl:1993 +#: tcl/ngcgui.tcl:1920 msgid "feature line added" msgstr "" -#: tcl/ngcgui.tcl:2002 +#: tcl/ngcgui.tcl:1932 msgid "line added" msgstr "" -#: tcl/ngcgui.tcl:2002 +#: tcl/ngcgui.tcl:1932 msgid "activated" msgstr "" -#: tcl/ngcgui.tcl:2004 +#: tcl/ngcgui.tcl:1934 #, fuzzy msgid "restores" msgstr "Ausprobieren" -#: tcl/ngcgui.tcl:2041 +#: tcl/ngcgui.tcl:1973 msgid "NOTREACHED mode" msgstr "" -#: tcl/ngcgui.tcl:2236 +#: tcl/ngcgui.tcl:1989 +msgid "Positional parameters for" +msgstr "" + +#: tcl/ngcgui.tcl:1997 +#, fuzzy +msgid "expanded file" +msgstr "Menübaum aufklappen" + +#: tcl/ngcgui.tcl:2011 +#, fuzzy +msgid "call subroutine file" +msgstr "Zu viele Ebenen für die Unterfunktion" + +#: tcl/ngcgui.tcl:2394 msgid "Enter parms for 1st feature" msgstr "" -#: tcl/ngcgui.tcl:2243 +#: tcl/ngcgui.tcl:2401 #, fuzzy msgid "New Outfile" msgstr "NC Dateien" -#: tcl/ngcgui.tcl:2245 +#: tcl/ngcgui.tcl:2403 msgid "Ready to make New Outfile" msgstr "" -#: tcl/ngcgui.tcl:2262 tcl/ngcgui.tcl:2295 +#: tcl/ngcgui.tcl:2419 tcl/ngcgui.tcl:2452 msgid "Enter parms for feature " msgstr "" -#: tcl/ngcgui.tcl:2282 +#: tcl/ngcgui.tcl:2439 msgid "feature" msgstr "" -#: tcl/ngcgui.tcl:2287 +#: tcl/ngcgui.tcl:2444 msgid "Create Next" msgstr "" -#: tcl/ngcgui.tcl:2292 +#: tcl/ngcgui.tcl:2449 msgid "Created feature " msgstr "" -#: tcl/ngcgui.tcl:2316 +#: tcl/ngcgui.tcl:2473 #, fuzzy msgid "option" msgstr "Achssteuerung" -#: tcl/ngcgui.tcl:2327 +#: tcl/ngcgui.tcl:2484 #, fuzzy msgid "Missing parameters" msgstr "Para_meter" -#: tcl/ngcgui.tcl:2331 +#: tcl/ngcgui.tcl:2488 #, fuzzy msgid "Parse Error" msgstr "Fehler" -#: tcl/ngcgui.tcl:2338 +#: tcl/ngcgui.tcl:2495 msgid "Null Preamble" msgstr "" -#: tcl/ngcgui.tcl:2343 +#: tcl/ngcgui.tcl:2500 msgid "Read Preamble" msgstr "" -#: tcl/ngcgui.tcl:2347 +#: tcl/ngcgui.tcl:2504 msgid "Preamble Error" msgstr "" -#: tcl/ngcgui.tcl:2352 +#: tcl/ngcgui.tcl:2509 msgid "Null Postamble" msgstr "" -#: tcl/ngcgui.tcl:2357 +#: tcl/ngcgui.tcl:2514 msgid "Read Postamble" msgstr "" -#: tcl/ngcgui.tcl:2361 +#: tcl/ngcgui.tcl:2518 msgid "Postamble Error" msgstr "" -#: tcl/ngcgui.tcl:2366 +#: tcl/ngcgui.tcl:2523 msgid "Read Subfile" msgstr "" -#: tcl/ngcgui.tcl:2371 +#: tcl/ngcgui.tcl:2528 #, fuzzy msgid "Write Error" msgstr "Fehler" -#: tcl/ngcgui.tcl:2375 +#: tcl/ngcgui.tcl:2532 msgid "Outfile set" msgstr "" -#: tcl/ngcgui.tcl:2380 +#: tcl/ngcgui.tcl:2537 msgid "Finished" msgstr "" -#: tcl/ngcgui.tcl:2385 +#: tcl/ngcgui.tcl:2542 #, fuzzy msgid "Canceled" msgstr "Abbrechen" -#: tcl/ngcgui.tcl:2391 +#: tcl/ngcgui.tcl:2548 msgid "Sent" msgstr "" -#: tcl/ngcgui.tcl:2395 +#: tcl/ngcgui.tcl:2552 #, fuzzy msgid "SendFileToAxis failed" msgstr "Konvertierung fehlgeschlagen" -#: tcl/ngcgui.tcl:2399 +#: tcl/ngcgui.tcl:2556 msgid "Ctrl-k for Key bindings" msgstr "" -#: tcl/ngcgui.tcl:2403 +#: tcl/ngcgui.tcl:2560 #, fuzzy msgid "Expand sub" msgstr "Pins aufklappen" -#: tcl/ngcgui.tcl:2407 +#: tcl/ngcgui.tcl:2564 #, fuzzy msgid "Retain values" msgstr "Achsoffset:" -#: tcl/ngcgui.tcl:2411 +#: tcl/ngcgui.tcl:2568 msgid "Verbose" msgstr "" -#: tcl/ngcgui.tcl:2417 +#: tcl/ngcgui.tcl:2574 msgid "Finalize Canceled" msgstr "" -#: tcl/ngcgui.tcl:2572 tcl/ngcgui.tcl:2728 +#: tcl/ngcgui.tcl:2711 tcl/ngcgui.tcl:2867 msgid "Dismiss" msgstr "" -#: tcl/ngcgui.tcl:2577 +#: tcl/ngcgui.tcl:2716 msgid "ngcgui Error" msgstr "" -#: tcl/ngcgui.tcl:2600 +#: tcl/ngcgui.tcl:2739 msgid "Declining support for tk send bug in ngcgui" msgstr "" -#: tcl/ngcgui.tcl:2601 +#: tcl/ngcgui.tcl:2740 msgid "You should upgrade linuxcnc to >= linuxcnc2.5" msgstr "" -#: tcl/ngcgui.tcl:2645 +#: tcl/ngcgui.tcl:2784 msgid "pre2.4_send_file_to_axis:error" msgstr "" -#: tcl/ngcgui.tcl:2839 share/axis/tcl/axis.tcl:1917 -#: ../share/axis/tcl/axis.tcl:1874 +#: tcl/ngcgui.tcl:2978 share/axis/tcl/axis.tcl:2032 msgid "OFF" msgstr "AUS" -#: tcl/ngcgui.tcl:2842 +#: tcl/ngcgui.tcl:2981 #, fuzzy msgid "Toggle autosend" msgstr "Kühlmittel an/aus" -#: tcl/ngcgui.tcl:2843 tcl/ngcgui.tcl:3057 +#: tcl/ngcgui.tcl:2982 tcl/ngcgui.tcl:3189 #, fuzzy msgid "Clear entries" msgstr "Mitteilungen löschen" -#: tcl/ngcgui.tcl:2844 +#: tcl/ngcgui.tcl:2983 msgid "Set entries to default values" msgstr "" -#: tcl/ngcgui.tcl:2845 tcl/ngcgui.tcl:2859 tcl/ngcgui.tcl:2861 +#: tcl/ngcgui.tcl:2984 tcl/ngcgui.tcl:2998 tcl/ngcgui.tcl:3000 msgid "Open editor specified by" msgstr "" -#: tcl/ngcgui.tcl:2846 +#: tcl/ngcgui.tcl:2985 msgid "on last outfile" msgstr "" -#: tcl/ngcgui.tcl:2847 +#: tcl/ngcgui.tcl:2986 #, fuzzy msgid "toggle expand subroutines" msgstr "Zu viele Ebenen für die Unterfunktion" -#: tcl/ngcgui.tcl:2848 +#: tcl/ngcgui.tcl:2987 msgid "Create feature" msgstr "" -#: tcl/ngcgui.tcl:2849 +#: tcl/ngcgui.tcl:2988 msgid "Finalize (AUTO send is" msgstr "" -#: tcl/ngcgui.tcl:2850 +#: tcl/ngcgui.tcl:2989 msgid "Show key bindings" msgstr "" -#: tcl/ngcgui.tcl:2851 +#: tcl/ngcgui.tcl:2990 msgid "Restart (cancel pending)" msgstr "" -#: tcl/ngcgui.tcl:2852 +#: tcl/ngcgui.tcl:2991 msgid "(re)Read Preamble" msgstr "" -#: tcl/ngcgui.tcl:2853 +#: tcl/ngcgui.tcl:2992 msgid "(re)Read Postamble" msgstr "" -#: tcl/ngcgui.tcl:2854 +#: tcl/ngcgui.tcl:2993 msgid "(re)Read Subfile" msgstr "" -#: tcl/ngcgui.tcl:2855 +#: tcl/ngcgui.tcl:2994 msgid "toggle retain values" msgstr "" -#: tcl/ngcgui.tcl:2856 +#: tcl/ngcgui.tcl:2995 msgid "toggle output file verbosity" msgstr "" -#: tcl/ngcgui.tcl:2857 +#: tcl/ngcgui.tcl:2996 #, fuzzy msgid "Show status" msgstr "Neustart anzeigen" -#: tcl/ngcgui.tcl:2858 +#: tcl/ngcgui.tcl:2997 msgid "Show full status (debug info)" msgstr "" -#: tcl/ngcgui.tcl:2860 +#: tcl/ngcgui.tcl:2999 #, fuzzy msgid "on current subfile" msgstr "Aktuelle Datei neu laden [Strg-R]" -#: tcl/ngcgui.tcl:2862 +#: tcl/ngcgui.tcl:3001 msgid "on current preamble" msgstr "" -#: tcl/ngcgui.tcl:2865 +#: tcl/ngcgui.tcl:3004 msgid " Escape Return to Preview page" msgstr "" -#: tcl/ngcgui.tcl:2942 +#: tcl/ngcgui.tcl:3081 msgid "Editing requires setting for environmental variable VISUAL" msgstr "" -#: tcl/ngcgui.tcl:2943 +#: tcl/ngcgui.tcl:3082 msgid "Trying gedit" msgstr "" -#: tcl/ngcgui.tcl:2955 +#: tcl/ngcgui.tcl:3095 #, fuzzy msgid "No file available for editing yet" msgstr "" "Angabe eines nicht-ganzzahligen Wertes, obwohl eine Ganzzahl erwartet wurde" -#: tcl/ngcgui.tcl:2964 tcl/ngcgui.tcl:2973 +#: tcl/ngcgui.tcl:3104 tcl/ngcgui.tcl:3113 #, fuzzy msgid "No file available for editing" msgstr "" "Angabe eines nicht-ganzzahligen Wertes, obwohl eine Ganzzahl erwartet wurde" -#: tcl/ngcgui.tcl:2990 +#: tcl/ngcgui.tcl:3130 #, fuzzy msgid "Status items" msgstr "Status:" -#: tcl/ngcgui.tcl:3003 +#: tcl/ngcgui.tcl:3143 msgid "All-page opt items" msgstr "" -#: tcl/ngcgui.tcl:3009 +#: tcl/ngcgui.tcl:3149 msgid "any-items" msgstr "" -#: tcl/ngcgui.tcl:3046 +#: tcl/ngcgui.tcl:3182 #, fuzzy msgid "Set defaults" msgstr "Benutzen der Standartwerte" -#: tcl/ngcgui.tcl:3125 +#: tcl/ngcgui.tcl:3257 msgid "not writable" msgstr "" -#: tcl/ngcgui.tcl:3263 tcl/ngcgui.tcl:3443 +#: tcl/ngcgui.tcl:3396 tcl/ngcgui.tcl:3577 #, fuzzy msgid "new" msgstr "Neu" -#: tcl/ngcgui.tcl:3288 +#: tcl/ngcgui.tcl:3422 msgid "Open a new Subfile" msgstr "" -#: tcl/ngcgui.tcl:3434 +#: tcl/ngcgui.tcl:3568 msgid "remove" msgstr "" -#: tcl/ngcgui.tcl:3456 tcl/ngcgui.tcl:3462 +#: tcl/ngcgui.tcl:3590 tcl/ngcgui.tcl:3596 msgid "move" msgstr "" -#: tcl/ngcgui.tcl:3561 src/emc/usr_intf/pncconf/pncconf.py:7022 -#: src/emc/usr_intf/pncconf/pncconf.py:7139 -#: src/emc/usr_intf/pncconf/pncconf.py:7306 -#: emc/usr_intf/pncconf/pncconf.py:3240 emc/usr_intf/pncconf/pncconf.py:3414 +#: tcl/ngcgui.tcl:3704 src/emc/usr_intf/pncconf/pncconf.py:7374 +#: src/emc/usr_intf/pncconf/pncconf.py:7485 +#: src/emc/usr_intf/pncconf/pncconf.py:7650 #, fuzzy msgid "Custom" msgstr "Ausschneiden" -#: tcl/ngcgui.tcl:3587 +#: tcl/ngcgui.tcl:3730 msgid "Problem creating page" msgstr "" -#: tcl/ngcgui.tcl:3594 +#: tcl/ngcgui.tcl:3737 msgid "entrykeybindings not available" msgstr "" -#: tcl/ngcgui.tcl:3633 +#: tcl/ngcgui.tcl:3781 msgid "Found multiple matches for" msgstr "" -#: tcl/ngcgui.tcl:3634 +#: tcl/ngcgui.tcl:3782 msgid "using path" msgstr "" -#: tcl/ngcgui.tcl:3642 src/emc/usr_intf/axis/scripts/axis.py:2242 -#: src/emc/usr_intf/axis/scripts/axis.py:2255 -#: src/emc/usr_intf/axis/scripts/axis.py:2268 +#: tcl/ngcgui.tcl:3790 src/emc/usr_intf/axis/scripts/axis.py:2440 +#: src/emc/usr_intf/axis/scripts/axis.py:2453 msgid "Warning" msgstr "" -#: tcl/ngcgui.tcl:3643 +#: tcl/ngcgui.tcl:3791 msgid "File absolute path specifier conflicts with searchpath result" msgstr "" -#: tcl/ngcgui.tcl:3644 +#: tcl/ngcgui.tcl:3792 msgid "Absolute Specifier" msgstr "" -#: tcl/ngcgui.tcl:3645 +#: tcl/ngcgui.tcl:3793 msgid "Using Search Result" msgstr "" -#: tcl/ngcgui.tcl:3650 +#: tcl/ngcgui.tcl:3798 msgid "File not in Search Path" msgstr "" -#: tcl/ngcgui.tcl:3652 +#: tcl/ngcgui.tcl:3800 msgid "Must be in search path" msgstr "" -#: tcl/ngcgui.tcl:3654 +#: tcl/ngcgui.tcl:3802 msgid "(File found -- not in search path)" msgstr "" -#: tcl/ngcgui.tcl:3656 +#: tcl/ngcgui.tcl:3804 #, fuzzy msgid "Current directory" msgstr "Verzeichnis:" -#: tcl/ngcgui.tcl:3657 +#: tcl/ngcgui.tcl:3805 msgid "Search path" msgstr "" -#: tcl/ngcgui.tcl:3663 +#: tcl/ngcgui.tcl:3815 msgid "Check setting for" msgstr "" -#: tcl/ngcgui.tcl:3664 +#: tcl/ngcgui.tcl:3816 #, fuzzy msgid "in ini file" msgstr "(keine Datei)" -#: tcl/ngcgui.tcl:3665 +#: tcl/ngcgui.tcl:3817 msgid "(Restart required after fixing ini file)" msgstr "" -#: tcl/ngcgui.tcl:3680 +#: tcl/ngcgui.tcl:3832 #, fuzzy msgid "Try to Continue" msgstr "Fortsetzen" -#: tcl/ngcgui.tcl:3685 +#: tcl/ngcgui.tcl:3837 #, fuzzy msgid "Ngcgui Configuration File Not Found" msgstr "Konfiguration öffnen" -#: tcl/ngcgui.tcl:3765 +#: tcl/ngcgui.tcl:3917 msgid "Missing Tcl Package Img" msgstr "" -#: tcl/ngcgui.tcl:3766 +#: tcl/ngcgui.tcl:3918 msgid "Please install Img" msgstr "" -#: tcl/ngcgui.tcl:3965 +#: tcl/ngcgui.tcl:4122 #, fuzzy msgid "ini file" msgstr "(keine Datei)" -#: tcl/ngcgui.tcl:3973 +#: tcl/ngcgui.tcl:4131 msgid "not found" msgstr "" @@ -3656,7 +5204,7 @@ msgstr "" msgid "Linescale" msgstr "" -#: tcl/ngcgui_ttt.tcl:177 +#: tcl/ngcgui_ttt.tcl:177 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3583 msgid "none" msgstr "" @@ -3727,217 +5275,258 @@ msgstr "Datei ist nicht geöffnet" msgid "Creating new tab page" msgstr "" -#: src/emc/usr_intf/tooledit.tcl:65 +#: tcl/ngcgui_app.tcl:25 +msgid "" +"requires command inifindall\n" +"from axis.py (LinuxCNC 2.5) or" +msgstr "" + +#: tcl/ngcgui_app.tcl:55 +#, fuzzy +msgid "Substituting" +msgstr "Einstellungen" + +#: tcl/ngcgui_app.tcl:55 +msgid "for" +msgstr "" + +#: tcl/ngcgui_app.tcl:59 +#, fuzzy +msgid "not readable" +msgstr "Datei ist nicht geöffnet" + +#: tcl/ngcgui_app.tcl:65 tcl/ngcgui_app.tcl:68 +msgid "Unexpected: multiple startups for ngcgui" +msgstr "" + +#: tcl/ngcgui_app.tcl:66 +#, fuzzy +msgid "LinuxCNC" +msgstr "LinuxCNC Debug" + +#: tcl/ngcgui_app.tcl:67 +msgid "for linuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" +msgstr "" + +#: tcl/ngcgui_app.tcl:86 +#, fuzzy +msgid "LinuxCNC version" +msgstr "Fehler" + +#: tcl/ngcgui_app.tcl:87 +msgid "for LinuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" +msgstr "" + +#: tcl/tooledit.tcl:65 msgid "Problem reading ~/.tooleditrc" msgstr "Kann ~/.tooleditrc nicht lesen" -#: src/emc/usr_intf/tooledit.tcl:82 +#: tcl/tooledit.tcl:82 #, tcl-format msgid "Note: Ignoring duplicate column name: %s" msgstr "Hinweis: Ignoriere doppelten Spaltenname: %s" -#: src/emc/usr_intf/tooledit.tcl:93 +#: tcl/tooledit.tcl:93 #, tcl-format msgid "Unknown column: %s" msgstr "Unbekannte Spalte: %s" -#: src/emc/usr_intf/tooledit.tcl:210 src/emc/usr_intf/tooledit.tcl:213 -#: src/emc/usr_intf/tooledit.tcl:598 src/emc/usr_intf/tooledit.tcl:599 -#: src/emc/usr_intf/tooledit.tcl:1032 +#: tcl/tooledit.tcl:210 tcl/tooledit.tcl:213 tcl/tooledit.tcl:598 +#: tcl/tooledit.tcl:599 tcl/tooledit.tcl:1032 msgid "NEW" msgstr "NEU" -#: src/emc/usr_intf/tooledit.tcl:232 +#: tcl/tooledit.tcl:232 #, tcl-format msgid "%s must be a number" msgstr "%s muss eine Zahl sein" -#: src/emc/usr_intf/tooledit.tcl:241 +#: tcl/tooledit.tcl:241 #, tcl-format msgid "filename: <%s> not readable" msgstr "Dateiname: <%s> nicht lesbar" -#: src/emc/usr_intf/tooledit.tcl:245 +#: tcl/tooledit.tcl:245 #, tcl-format msgid "filename: <%s> not writable" msgstr "Dateiname: <%s> nicht schreibbar" -#: src/emc/usr_intf/tooledit.tcl:250 +#: tcl/tooledit.tcl:250 #, tcl-format msgid "directory: <%s> not writable" msgstr "Verzeichnis: <%s> nicht schreibbar" -#: src/emc/usr_intf/tooledit.tcl:294 +#: tcl/tooledit.tcl:294 #, tcl-format msgid "Skipping linenumber %d for tag %s, value <%s> is not a number" msgstr "Überspringe Zeile %d wg. Knoten %s, Wert <%s> is keine Zahl" -#: src/emc/usr_intf/tooledit.tcl:300 +#: tcl/tooledit.tcl:300 #, tcl-format msgid "Skipping linenumber %d for tag %s, expected integer not <%s>" msgstr "Überspringe Zeile %d wg. Knoten %s, erwarte Integer, nicht <%s>" -#: src/emc/usr_intf/tooledit.tcl:316 +#: tcl/tooledit.tcl:316 #, tcl-format msgid "At linenumber %d, Unknown tag <%s>" msgstr "Zeile %d: Unbekannter Knoten <%s>" -#: src/emc/usr_intf/tooledit.tcl:399 +#: tcl/tooledit.tcl:399 #, tcl-format msgid "%s: Column sorting not available with tcl_version==%s" msgstr "%s: Spaltensortierung in tcl_version==%s nicht verfügbar" -#: src/emc/usr_intf/tooledit.tcl:408 +#: tcl/tooledit.tcl:408 msgid "tool" msgstr "Wkz" -#: src/emc/usr_intf/tooledit.tcl:409 +#: tcl/tooledit.tcl:409 msgid "poc" msgstr "Fach" -#: src/emc/usr_intf/tooledit.tcl:410 +#: tcl/tooledit.tcl:410 msgid "diam" msgstr "Dmess" -#: src/emc/usr_intf/tooledit.tcl:411 +#: tcl/tooledit.tcl:411 msgid "front" msgstr "vorne" -#: src/emc/usr_intf/tooledit.tcl:412 +#: tcl/tooledit.tcl:412 msgid "back" msgstr "hinten" -#: src/emc/usr_intf/tooledit.tcl:413 +#: tcl/tooledit.tcl:413 msgid "orien" msgstr "Ausr" -#: src/emc/usr_intf/tooledit.tcl:414 +#: tcl/tooledit.tcl:414 msgid "comment" msgstr "Bemerkung" -#: src/emc/usr_intf/tooledit.tcl:444 +#: tcl/tooledit.tcl:444 msgid "Del" msgstr "Lö " -#: src/emc/usr_intf/tooledit.tcl:473 +#: tcl/tooledit.tcl:473 msgid "ReLoadTable" msgstr "Tabelle neu laden" -#: src/emc/usr_intf/tooledit.tcl:478 +#: tcl/tooledit.tcl:478 msgid "SaveFile" msgstr "Datei speichern" -#: src/emc/usr_intf/tooledit.tcl:483 +#: tcl/tooledit.tcl:483 msgid "ReRead" msgstr "Neu laden" -#: src/emc/usr_intf/tooledit.tcl:485 +#: tcl/tooledit.tcl:485 msgid "AddTool" msgstr "Werkzeug anlegen" -#: src/emc/usr_intf/tooledit.tcl:535 +#: tcl/tooledit.tcl:535 #, tcl-format msgid "Opened %s" msgstr "%s geöffnet" -#: src/emc/usr_intf/tooledit.tcl:536 +#: tcl/tooledit.tcl:536 #, tcl-format msgid "Created %s" msgstr "%s erstellt" -#: src/emc/usr_intf/tooledit.tcl:537 +#: tcl/tooledit.tcl:537 msgid "File updated" msgstr "Datei aktualisiert" -#: src/emc/usr_intf/tooledit.tcl:538 +#: tcl/tooledit.tcl:538 msgid "File modified" msgstr "Datei geändert" -#: src/emc/usr_intf/tooledit.tcl:539 +#: tcl/tooledit.tcl:539 msgid "File check errors" msgstr "Fehler bei Dateiprüfung" -#: src/emc/usr_intf/tooledit.tcl:540 +#: tcl/tooledit.tcl:540 msgid "File checked" msgstr "Datei geprüft" -#: src/emc/usr_intf/tooledit.tcl:541 +#: tcl/tooledit.tcl:541 msgid "File items deleted" msgstr "Dateieinträge gelöscht" -#: src/emc/usr_intf/tooledit.tcl:542 +#: tcl/tooledit.tcl:542 msgid "Bogus lines in file ignored" msgstr "Fehlerhafte Zeilen in Datei ignoriert" -#: src/emc/usr_intf/tooledit.tcl:543 +#: tcl/tooledit.tcl:543 msgid "File errors -- Check Entries" msgstr "Dateifehler -- bitte Datensätze prüfen" -#: src/emc/usr_intf/tooledit.tcl:544 +#: tcl/tooledit.tcl:544 msgid "Warning: File changed by another process" msgstr "Warnung: Datei von fremden Prozess verändert" -#: src/emc/usr_intf/tooledit.tcl:545 +#: tcl/tooledit.tcl:545 msgid "Warning: File deleted by another process" msgstr "Warnung: Datei von fremden Prozess gelöscht" -#: src/emc/usr_intf/tooledit.tcl:546 +#: tcl/tooledit.tcl:546 msgid "Added Tool" msgstr "Werkzeug angelegt" -#: src/emc/usr_intf/tooledit.tcl:550 +#: tcl/tooledit.tcl:550 #, tcl-format msgid "Sorted by %s, increasing" msgstr "Sortiert nach %s, aufsteigend" -#: src/emc/usr_intf/tooledit.tcl:551 +#: tcl/tooledit.tcl:551 #, tcl-format msgid "Sorted by %s, decreasing" msgstr "Sortiert nach %s, absteigend" -#: src/emc/usr_intf/tooledit.tcl:593 +#: tcl/tooledit.tcl:593 msgid "Added" msgstr "Angelegt" -#: src/emc/usr_intf/tooledit.tcl:802 +#: tcl/tooledit.tcl:802 #, tcl-format msgid "Tool %s, Column %s, parameter %s is not a number" msgstr "Werkzeug %s, Spalte %s, Parameter %s ist keine Zahl" -#: src/emc/usr_intf/tooledit.tcl:811 +#: tcl/tooledit.tcl:811 #, tcl-format msgid "Tool %s, parameter %s must be nonnegative integer" msgstr "Werkzeug %s, Parameter %s muss positive Integerzahl sein" -#: src/emc/usr_intf/tooledit.tcl:819 +#: tcl/tooledit.tcl:819 #, tcl-format msgid "Tool %s: must be 0..9 integer" msgstr "Werkzeug %s: muss Integerzahl zwischen 0..9 sein" -#: src/emc/usr_intf/tooledit.tcl:826 +#: tcl/tooledit.tcl:826 #, tcl-format msgid "Tool %s: <%s> must be between -360 and 360" msgstr "Werkzeug %s: <%s> muss zwischen -360 und 360 liegen" -#: src/emc/usr_intf/tooledit.tcl:842 +#: tcl/tooledit.tcl:842 #, tcl-format msgid "Pocket <%s> specified multiple times" msgstr "Fach <%s> mehrmals angegeben" -#: src/emc/usr_intf/tooledit.tcl:857 +#: tcl/tooledit.tcl:857 #, tcl-format msgid "Tool <%s> specified multiple times" msgstr "Werkzeug <%s> mehrmals angegeben" -#: src/emc/usr_intf/tooledit.tcl:902 +#: tcl/tooledit.tcl:902 msgid "File Modified" msgstr "Datei geändert" -#: src/emc/usr_intf/tooledit.tcl:903 +#: tcl/tooledit.tcl:903 msgid "Save Modifications to File?" msgstr "Änderungen in Datei speichern?" -#: src/emc/usr_intf/tooledit.tcl:930 +#: tcl/tooledit.tcl:930 #, tcl-format msgid "" "Only these columns are currently used:\n" @@ -3948,43 +5537,43 @@ msgstr "" "\n" " %s" -#: src/emc/usr_intf/tooledit.tcl:931 +#: tcl/tooledit.tcl:931 msgid "Limit display to these columns by specifying" msgstr "Anzeige auf diese Spalten beschränken durch" -#: src/emc/usr_intf/tooledit.tcl:933 +#: tcl/tooledit.tcl:933 msgid "Format for ini file is" msgstr "Das Format für die INI-Datei ist" -#: src/emc/usr_intf/tooledit.tcl:935 +#: tcl/tooledit.tcl:935 msgid "For standalone use, invoke as" msgstr "Zum eingenständigen Gebrauch starten mit" -#: src/emc/usr_intf/tooledit.tcl:936 +#: tcl/tooledit.tcl:936 msgid "tool_table_filename" msgstr "WkzTabelle_Dateiname" -#: src/emc/usr_intf/tooledit.tcl:956 +#: tcl/tooledit.tcl:956 #, tcl-format msgid "Created by %s" msgstr "Erstellt von %s" -#: src/emc/usr_intf/tooledit.tcl:957 +#: tcl/tooledit.tcl:957 msgid "Saved geometry (updated on program termination)" msgstr "Gespeicherte Geometrie (aktualisiert bei Programmende)" -#: src/emc/usr_intf/tooledit.tcl:980 +#: tcl/tooledit.tcl:980 #, tcl-format msgid "" "%s: Axis inifile specifies multiple inifile items for: [EMCIO]TOOL_TABLE" msgstr "%s: Axis INI-Datei enthält mehrere Einträge für: [EMCIO]TOOL_TABLE" -#: src/emc/usr_intf/tooledit.tcl:981 +#: tcl/tooledit.tcl:981 #, tcl-format msgid "%s: Using: %s" msgstr "%s: Benutzt: %s" -#: src/emc/usr_intf/tooledit.tcl:990 +#: tcl/tooledit.tcl:990 #, tcl-format msgid "" "%s: Warning: Axis is running but the tool table file <%s> \n" @@ -3993,560 +5582,380 @@ msgstr "" "%s: Warnung: Axis läuft aber die Werkzeug-Datei <%s> \n" "unterscheidet sich vom der eigenständigen Datei <%s>" -#: src/emc/usr_intf/tooledit.tcl:1004 +#: tcl/tooledit.tcl:1004 msgid "Must be On and Idle to reload tool table" msgstr "Muss eingeschaltet und im Leerlauf sein, um Werkzeugtabelle zu laden" -#: src/emc/usr_intf/tooledit.tcl:1093 +#: tcl/tooledit.tcl:1093 msgid "Usage" msgstr "Gebrauch" -#: src/emc/usr_intf/tooledit.tcl:1094 src/emc/usr_intf/tooledit.tcl:1095 +#: tcl/tooledit.tcl:1094 tcl/tooledit.tcl:1095 msgid "filename" msgstr "Dateiname" -#: src/emc/usr_intf/tooledit.tcl:1096 +#: tcl/tooledit.tcl:1096 #, tcl-format msgid "Allowed column_ names are: %s" msgstr "Erlaubte Spaltennamen sind: %s" -#: src/emc/usr_intf/tooledit.tcl:1106 +#: tcl/tooledit.tcl:1106 msgid "Missing filename" msgstr "Fehlender Dateiname" -#: src/emc/usr_intf/axis/scripts/axis.py:144 -#: src/emc/usr_intf/axis/scripts/axis.py:148 -#: emc/usr_intf/axis/scripts/axis.py:147 +#: src/emc/usr_intf/axis/scripts/axis.py:183 msgid "Emergency stop" msgstr "Notaus" -#: src/emc/usr_intf/axis/scripts/axis.py:145 -#: src/emc/usr_intf/axis/scripts/axis.py:149 -#: emc/usr_intf/axis/scripts/axis.py:148 +#: src/emc/usr_intf/axis/scripts/axis.py:184 msgid "Turn machine on" msgstr "Maschine an" -#: src/emc/usr_intf/axis/scripts/axis.py:147 -#: src/emc/usr_intf/axis/scripts/axis.py:151 -#: emc/usr_intf/axis/scripts/axis.py:150 +#: src/emc/usr_intf/axis/scripts/axis.py:186 msgid "Activate first axis" msgstr "Erste Achse aktivieren" -#: src/emc/usr_intf/axis/scripts/axis.py:148 -#: src/emc/usr_intf/axis/scripts/axis.py:152 -#: emc/usr_intf/axis/scripts/axis.py:151 +#: src/emc/usr_intf/axis/scripts/axis.py:187 msgid "Activate second axis" msgstr "Zweite Achse aktivieren" -#: src/emc/usr_intf/axis/scripts/axis.py:149 -#: src/emc/usr_intf/axis/scripts/axis.py:153 -#: emc/usr_intf/axis/scripts/axis.py:152 +#: src/emc/usr_intf/axis/scripts/axis.py:188 msgid "Activate third axis" msgstr "Dritte Achse aktivieren" -#: src/emc/usr_intf/axis/scripts/axis.py:150 -#: src/emc/usr_intf/axis/scripts/axis.py:154 -#: emc/usr_intf/axis/scripts/axis.py:153 +#: src/emc/usr_intf/axis/scripts/axis.py:189 msgid "Activate fourth axis" msgstr "Vierte Achse aktivieren" -#: src/emc/usr_intf/axis/scripts/axis.py:151 -#: src/emc/usr_intf/axis/scripts/axis.py:155 -#: emc/usr_intf/axis/scripts/axis.py:154 +#: src/emc/usr_intf/axis/scripts/axis.py:190 msgid "Activate fifth through ninth axis" msgstr "Fünfte bis neunte Achse aktivieren" -#: src/emc/usr_intf/axis/scripts/axis.py:152 -#: src/emc/usr_intf/axis/scripts/axis.py:156 -#: emc/usr_intf/axis/scripts/axis.py:155 +#: src/emc/usr_intf/axis/scripts/axis.py:191 msgid "Set Feed Override from 0% to 100%" msgstr "Vorschubübersteuerung von 0% bis 100%" -#: src/emc/usr_intf/axis/scripts/axis.py:153 -#: src/emc/usr_intf/axis/scripts/axis.py:157 -#: emc/usr_intf/axis/scripts/axis.py:156 +#: src/emc/usr_intf/axis/scripts/axis.py:192 msgid ", and ." msgstr ", und ." -#: src/emc/usr_intf/axis/scripts/axis.py:153 -#: src/emc/usr_intf/axis/scripts/axis.py:157 -#: emc/usr_intf/axis/scripts/axis.py:156 +#: src/emc/usr_intf/axis/scripts/axis.py:192 msgid "Select jog speed" msgstr "Schrittgeschwindigkeit auswählen" -#: src/emc/usr_intf/axis/scripts/axis.py:154 -#: src/emc/usr_intf/axis/scripts/axis.py:158 -#: emc/usr_intf/axis/scripts/axis.py:157 +#: src/emc/usr_intf/axis/scripts/axis.py:193 msgid "< and >" msgstr "< und >" -#: src/emc/usr_intf/axis/scripts/axis.py:154 -#: src/emc/usr_intf/axis/scripts/axis.py:158 -#: emc/usr_intf/axis/scripts/axis.py:157 +#: src/emc/usr_intf/axis/scripts/axis.py:193 msgid "Select angular jog speed" msgstr "Winkelgeschwindigkeit auswählen" -#: src/emc/usr_intf/axis/scripts/axis.py:155 -#: src/emc/usr_intf/axis/scripts/axis.py:159 -#: emc/usr_intf/axis/scripts/axis.py:158 +#: src/emc/usr_intf/axis/scripts/axis.py:194 msgid "I, Shift-I" msgstr "I, Umsch.-I" -#: src/emc/usr_intf/axis/scripts/axis.py:155 share/axis/tcl/axis.tcl:2356 -#: src/emc/usr_intf/axis/scripts/axis.py:159 -#: emc/usr_intf/axis/scripts/axis.py:158 ../share/axis/tcl/axis.tcl:2305 +#: src/emc/usr_intf/axis/scripts/axis.py:194 share/axis/tcl/axis.tcl:2481 msgid "Select jog increment" msgstr "Schrittweite auswählen" -#: src/emc/usr_intf/axis/scripts/axis.py:156 -#: src/emc/usr_intf/axis/scripts/axis.py:160 -#: emc/usr_intf/axis/scripts/axis.py:159 +#: src/emc/usr_intf/axis/scripts/axis.py:195 msgid "Continuous jog" msgstr "Durchgehende Bewegung" -#: src/emc/usr_intf/axis/scripts/axis.py:157 -#: src/emc/usr_intf/pncconf/pncconf.py:479 -#: src/emc/usr_intf/axis/scripts/axis.py:161 -#: emc/usr_intf/axis/scripts/axis.py:160 -#: emc/usr_intf/pncconf/pncconf.glade:20289 -#: emc/usr_intf/pncconf/pncconf.glade:21312 -#: emc/usr_intf/pncconf/pncconf.glade:22012 -#: emc/usr_intf/pncconf/pncconf.glade:22712 +#: src/emc/usr_intf/axis/scripts/axis.py:196 +#: src/emc/usr_intf/pncconf/pncconf.py:408 msgid "Home" msgstr "Pos1" -#: src/emc/usr_intf/axis/scripts/axis.py:157 -#: src/emc/usr_intf/axis/scripts/axis.py:161 -#: emc/usr_intf/axis/scripts/axis.py:160 +#: src/emc/usr_intf/axis/scripts/axis.py:196 msgid "Send active axis home" msgstr "Referenzfahrt mit der aktiven Achse" -#: src/emc/usr_intf/axis/scripts/axis.py:158 -#: src/emc/usr_intf/axis/scripts/axis.py:162 -#: emc/usr_intf/axis/scripts/axis.py:161 +#: src/emc/usr_intf/axis/scripts/axis.py:197 msgid "Ctrl-Home" msgstr "Strg-Pos1" -#: src/emc/usr_intf/axis/scripts/axis.py:158 -#: src/emc/usr_intf/axis/scripts/axis.py:162 -#: emc/usr_intf/axis/scripts/axis.py:161 +#: src/emc/usr_intf/axis/scripts/axis.py:197 msgid "Home all axes" msgstr "Referenzfahrt mit allen Achsen" -#: src/emc/usr_intf/axis/scripts/axis.py:159 -#: src/emc/usr_intf/axis/scripts/axis.py:163 -#: emc/usr_intf/axis/scripts/axis.py:162 +#: src/emc/usr_intf/axis/scripts/axis.py:198 msgid "Shift-Home" msgstr "Umsch.-Pos1" -#: src/emc/usr_intf/axis/scripts/axis.py:159 -#: src/emc/usr_intf/axis/scripts/axis.py:163 -#: emc/usr_intf/axis/scripts/axis.py:162 +#: src/emc/usr_intf/axis/scripts/axis.py:198 msgid "Zero G54 offset for active axis" msgstr "Nullpunktverschiebung für die aktive Achse löschen" -#: src/emc/usr_intf/axis/scripts/axis.py:160 -#: src/emc/usr_intf/axis/scripts/axis.py:164 -#: emc/usr_intf/axis/scripts/axis.py:163 +#: src/emc/usr_intf/axis/scripts/axis.py:199 msgid "End" msgstr "Ende" -#: src/emc/usr_intf/axis/scripts/axis.py:160 -#: src/emc/usr_intf/axis/scripts/axis.py:164 -#: emc/usr_intf/axis/scripts/axis.py:163 +#: src/emc/usr_intf/axis/scripts/axis.py:199 msgid "Set G54 offset for active axis" msgstr "Absolute Nullpunktverschiebung für die aktive Achse setzen" -#: src/emc/usr_intf/axis/scripts/axis.py:161 -#: src/emc/usr_intf/axis/scripts/axis.py:165 -#: emc/usr_intf/axis/scripts/axis.py:164 +#: src/emc/usr_intf/axis/scripts/axis.py:200 msgid "Jog active axis" msgstr "Aktive Achse verfahren" -#: src/emc/usr_intf/axis/scripts/axis.py:164 -#: src/emc/usr_intf/axis/scripts/axis.py:168 -#: emc/usr_intf/axis/scripts/axis.py:167 +#: src/emc/usr_intf/axis/scripts/axis.py:203 msgid "Left, Right" msgstr "Links, Rechts" -#: src/emc/usr_intf/axis/scripts/axis.py:164 -#: src/emc/usr_intf/axis/scripts/axis.py:168 -#: emc/usr_intf/axis/scripts/axis.py:167 +#: src/emc/usr_intf/axis/scripts/axis.py:203 msgid "Jog first axis" msgstr "Erste Achse verfahren" -#: src/emc/usr_intf/axis/scripts/axis.py:165 -#: src/emc/usr_intf/axis/scripts/axis.py:169 -#: emc/usr_intf/axis/scripts/axis.py:168 +#: src/emc/usr_intf/axis/scripts/axis.py:204 msgid "Up, Down" msgstr "Hoch, Runter" -#: src/emc/usr_intf/axis/scripts/axis.py:165 -#: src/emc/usr_intf/axis/scripts/axis.py:169 -#: emc/usr_intf/axis/scripts/axis.py:168 +#: src/emc/usr_intf/axis/scripts/axis.py:204 msgid "Jog second axis" msgstr "Zweite Achse verfahren" -#: src/emc/usr_intf/axis/scripts/axis.py:166 -#: src/emc/usr_intf/axis/scripts/axis.py:170 -#: emc/usr_intf/axis/scripts/axis.py:169 +#: src/emc/usr_intf/axis/scripts/axis.py:205 msgid "Pg Up, Pg Dn" msgstr "Bild auf, Bild ab" -#: src/emc/usr_intf/axis/scripts/axis.py:166 -#: src/emc/usr_intf/axis/scripts/axis.py:170 -#: emc/usr_intf/axis/scripts/axis.py:169 +#: src/emc/usr_intf/axis/scripts/axis.py:205 msgid "Jog third axis" msgstr "Dritte Achse verfahren" -#: src/emc/usr_intf/axis/scripts/axis.py:167 -#: src/emc/usr_intf/axis/scripts/axis.py:171 -#: emc/usr_intf/axis/scripts/axis.py:170 +#: src/emc/usr_intf/axis/scripts/axis.py:206 msgid "Shift+above jogs" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:167 -#: src/emc/usr_intf/axis/scripts/axis.py:171 -#: emc/usr_intf/axis/scripts/axis.py:170 +#: src/emc/usr_intf/axis/scripts/axis.py:206 msgid "Jog at traverse speed" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:168 -#: src/emc/usr_intf/axis/scripts/axis.py:172 -#: emc/usr_intf/axis/scripts/axis.py:171 +#: src/emc/usr_intf/axis/scripts/axis.py:207 msgid "Jog fourth axis" msgstr "Vierte Achse verfahren" -#: src/emc/usr_intf/axis/scripts/axis.py:171 -#: src/emc/usr_intf/axis/scripts/axis.py:175 -#: emc/usr_intf/axis/scripts/axis.py:174 +#: src/emc/usr_intf/axis/scripts/axis.py:210 msgid "Toggle between Drag and Rotate mode" msgstr "Zwischen verschieben und drehen umschalten" -#: src/emc/usr_intf/axis/scripts/axis.py:172 -#: src/emc/usr_intf/axis/scripts/axis.py:176 -#: emc/usr_intf/axis/scripts/axis.py:175 +#: src/emc/usr_intf/axis/scripts/axis.py:211 msgid "Left Button" msgstr "Linke Maustaste" -#: src/emc/usr_intf/axis/scripts/axis.py:172 -#: src/emc/usr_intf/axis/scripts/axis.py:176 -#: emc/usr_intf/axis/scripts/axis.py:175 +#: src/emc/usr_intf/axis/scripts/axis.py:211 msgid "Pan, rotate or select line" msgstr "Verschieben, drehen oder Linie auswählen" -#: src/emc/usr_intf/axis/scripts/axis.py:173 -#: src/emc/usr_intf/axis/scripts/axis.py:177 -#: emc/usr_intf/axis/scripts/axis.py:176 +#: src/emc/usr_intf/axis/scripts/axis.py:212 msgid "Shift+Left Button" msgstr "Umsch.+Linke Maustaste" -#: src/emc/usr_intf/axis/scripts/axis.py:173 -#: src/emc/usr_intf/axis/scripts/axis.py:177 -#: emc/usr_intf/axis/scripts/axis.py:176 +#: src/emc/usr_intf/axis/scripts/axis.py:212 msgid "Rotate or pan" msgstr "Drehen oder verschieben" -#: src/emc/usr_intf/axis/scripts/axis.py:174 -#: src/emc/usr_intf/axis/scripts/axis.py:178 -#: emc/usr_intf/axis/scripts/axis.py:177 +#: src/emc/usr_intf/axis/scripts/axis.py:213 msgid "Right Button" msgstr "Rechte Mausaste" -#: src/emc/usr_intf/axis/scripts/axis.py:174 -#: src/emc/usr_intf/axis/scripts/axis.py:176 -#: src/emc/usr_intf/axis/scripts/axis.py:177 -#: src/emc/usr_intf/axis/scripts/axis.py:178 -#: src/emc/usr_intf/axis/scripts/axis.py:180 -#: src/emc/usr_intf/axis/scripts/axis.py:181 -#: emc/usr_intf/axis/scripts/axis.py:177 emc/usr_intf/axis/scripts/axis.py:179 -#: emc/usr_intf/axis/scripts/axis.py:180 +#: src/emc/usr_intf/axis/scripts/axis.py:213 +#: src/emc/usr_intf/axis/scripts/axis.py:215 +#: src/emc/usr_intf/axis/scripts/axis.py:216 msgid "Zoom view" msgstr "Maßstab der Vorschau ändern" -#: src/emc/usr_intf/axis/scripts/axis.py:175 -#: src/emc/usr_intf/axis/scripts/axis.py:179 -#: emc/usr_intf/axis/scripts/axis.py:178 +#: src/emc/usr_intf/axis/scripts/axis.py:214 msgid "Wheel Button" msgstr "Mausrad-Taste" -#: src/emc/usr_intf/axis/scripts/axis.py:175 -#: src/emc/usr_intf/axis/scripts/axis.py:179 -#: emc/usr_intf/axis/scripts/axis.py:178 +#: src/emc/usr_intf/axis/scripts/axis.py:214 msgid "Rotate view" msgstr "Vorschau drehen" -#: src/emc/usr_intf/axis/scripts/axis.py:176 -#: src/emc/usr_intf/axis/scripts/axis.py:180 -#: emc/usr_intf/axis/scripts/axis.py:179 +#: src/emc/usr_intf/axis/scripts/axis.py:215 msgid "Rotate Wheel" msgstr "Mausrad" -#: src/emc/usr_intf/axis/scripts/axis.py:177 -#: src/emc/usr_intf/axis/scripts/axis.py:181 -#: emc/usr_intf/axis/scripts/axis.py:180 +#: src/emc/usr_intf/axis/scripts/axis.py:216 msgid "Control+Left Button" msgstr "Strg+Linke Maustaste" -#: src/emc/usr_intf/axis/scripts/axis.py:180 -#: src/emc/usr_intf/axis/scripts/axis.py:184 -#: emc/usr_intf/axis/scripts/axis.py:183 +#: src/emc/usr_intf/axis/scripts/axis.py:219 msgid "Manual control" msgstr "Manuelle Kontrolle" -#: src/emc/usr_intf/axis/scripts/axis.py:181 -#: src/emc/usr_intf/axis/scripts/axis.py:185 -#: emc/usr_intf/axis/scripts/axis.py:184 +#: src/emc/usr_intf/axis/scripts/axis.py:220 msgid "Code entry (MDI)" msgstr "Befehlseingabe (MDI)" -#: src/emc/usr_intf/axis/scripts/axis.py:182 -#: src/emc/usr_intf/axis/scripts/axis.py:186 -#: emc/usr_intf/axis/scripts/axis.py:185 +#: src/emc/usr_intf/axis/scripts/axis.py:221 msgid "Control-M" msgstr "Strg-M" -#: src/emc/usr_intf/axis/scripts/axis.py:182 -#: src/emc/usr_intf/axis/scripts/axis.py:186 -#: emc/usr_intf/axis/scripts/axis.py:185 +#: src/emc/usr_intf/axis/scripts/axis.py:221 msgid "Clear MDI history" msgstr "MDI-Verlauf leeren" -#: src/emc/usr_intf/axis/scripts/axis.py:183 -#: src/emc/usr_intf/axis/scripts/axis.py:187 -#: emc/usr_intf/axis/scripts/axis.py:186 +#: src/emc/usr_intf/axis/scripts/axis.py:222 msgid "Control-H" msgstr "Strg-H" -#: src/emc/usr_intf/axis/scripts/axis.py:183 -#: src/emc/usr_intf/axis/scripts/axis.py:187 -#: emc/usr_intf/axis/scripts/axis.py:186 +#: src/emc/usr_intf/axis/scripts/axis.py:222 msgid "Copy selected MDI history elements" msgstr "Markierte Befehle aus MDI-Verlauf" -#: src/emc/usr_intf/axis/scripts/axis.py:184 -#: src/emc/usr_intf/axis/scripts/axis.py:188 -#: emc/usr_intf/axis/scripts/axis.py:187 +#: src/emc/usr_intf/axis/scripts/axis.py:223 msgid "to clipboard" msgstr "in die Zwischenablage kopieren" -#: src/emc/usr_intf/axis/scripts/axis.py:185 -#: src/emc/usr_intf/axis/scripts/axis.py:189 -#: emc/usr_intf/axis/scripts/axis.py:188 +#: src/emc/usr_intf/axis/scripts/axis.py:224 msgid "Control-Shift-H" msgstr "Strg-Umsch.-H" -#: src/emc/usr_intf/axis/scripts/axis.py:185 -#: src/emc/usr_intf/axis/scripts/axis.py:189 -#: emc/usr_intf/axis/scripts/axis.py:188 +#: src/emc/usr_intf/axis/scripts/axis.py:224 msgid "Paste clipboard to MDI history" msgstr "Zwischenablage in den MDI-Verlauf einfügen" -#: src/emc/usr_intf/axis/scripts/axis.py:186 share/axis/tcl/axis.tcl:1113 +#: src/emc/usr_intf/axis/scripts/axis.py:225 share/axis/tcl/axis.tcl:1183 #: src/emc/usr_intf/touchy/touchy.glade:508 -#: src/emc/usr_intf/axis/scripts/axis.py:190 -#: emc/usr_intf/axis/scripts/axis.py:189 ../share/axis/tcl/axis.tcl:1070 msgid "Override Limits" msgstr "Grenzwerte aufheben" -#: src/emc/usr_intf/axis/scripts/axis.py:188 -#: src/emc/usr_intf/axis/scripts/axis.py:192 -#: emc/usr_intf/axis/scripts/axis.py:191 +#: src/emc/usr_intf/axis/scripts/axis.py:227 msgid "Open program" msgstr "Programm öffnen" -#: src/emc/usr_intf/axis/scripts/axis.py:189 -#: src/emc/usr_intf/axis/scripts/axis.py:193 -#: emc/usr_intf/axis/scripts/axis.py:192 +#: src/emc/usr_intf/axis/scripts/axis.py:228 msgid "Control-R" msgstr "Strg-R" -#: src/emc/usr_intf/axis/scripts/axis.py:189 -#: src/emc/usr_intf/axis/scripts/axis.py:193 -#: emc/usr_intf/axis/scripts/axis.py:192 +#: src/emc/usr_intf/axis/scripts/axis.py:228 msgid "Reload program" msgstr "Programm neu laden" -#: src/emc/usr_intf/axis/scripts/axis.py:190 -#: src/emc/usr_intf/axis/scripts/axis.py:194 -#: emc/usr_intf/axis/scripts/axis.py:193 +#: src/emc/usr_intf/axis/scripts/axis.py:229 msgid "Control-S" msgstr "Strg-S" -#: src/emc/usr_intf/axis/scripts/axis.py:190 -#: src/emc/usr_intf/axis/scripts/axis.py:194 -#: emc/usr_intf/axis/scripts/axis.py:193 +#: src/emc/usr_intf/axis/scripts/axis.py:229 msgid "Save g-code as" msgstr "G-Code in Datei speichern" -#: src/emc/usr_intf/axis/scripts/axis.py:191 -#: src/emc/usr_intf/axis/scripts/axis.py:195 -#: emc/usr_intf/axis/scripts/axis.py:194 +#: src/emc/usr_intf/axis/scripts/axis.py:230 msgid "Run program" msgstr "Programm ausführen" -#: src/emc/usr_intf/axis/scripts/axis.py:192 -#: src/emc/usr_intf/axis/scripts/axis.py:196 -#: emc/usr_intf/axis/scripts/axis.py:195 +#: src/emc/usr_intf/axis/scripts/axis.py:231 msgid "Step program" msgstr "Programm schrittweise ausführen" -#: src/emc/usr_intf/axis/scripts/axis.py:193 -#: src/emc/usr_intf/axis/scripts/axis.py:197 -#: emc/usr_intf/axis/scripts/axis.py:196 +#: src/emc/usr_intf/axis/scripts/axis.py:232 msgid "Pause program" msgstr "Programm unterbrechen" -#: src/emc/usr_intf/axis/scripts/axis.py:194 -#: src/emc/usr_intf/axis/scripts/axis.py:198 -#: emc/usr_intf/axis/scripts/axis.py:197 +#: src/emc/usr_intf/axis/scripts/axis.py:233 msgid "Resume program" msgstr "Programm fortsetzen" -#: src/emc/usr_intf/axis/scripts/axis.py:195 -#: src/emc/usr_intf/axis/scripts/axis.py:199 -#: emc/usr_intf/axis/scripts/axis.py:198 +#: src/emc/usr_intf/axis/scripts/axis.py:234 msgid "Stop running program, or" msgstr "Programmausführung oder Laden der" -#: src/emc/usr_intf/axis/scripts/axis.py:196 -#: src/emc/usr_intf/axis/scripts/axis.py:200 -#: emc/usr_intf/axis/scripts/axis.py:199 +#: src/emc/usr_intf/axis/scripts/axis.py:235 msgid "stop loading program preview" msgstr "Programm-Vorschau abbrechen" -#: src/emc/usr_intf/axis/scripts/axis.py:198 -#: src/emc/usr_intf/axis/scripts/axis.py:202 -#: emc/usr_intf/axis/scripts/axis.py:201 +#: src/emc/usr_intf/axis/scripts/axis.py:237 msgid "Toggle mist" msgstr "Kühlnebel an/aus" -#: src/emc/usr_intf/axis/scripts/axis.py:199 -#: src/emc/usr_intf/axis/scripts/axis.py:203 -#: emc/usr_intf/axis/scripts/axis.py:202 +#: src/emc/usr_intf/axis/scripts/axis.py:238 msgid "Toggle flood" msgstr "Kühlmittel an/aus" -#: src/emc/usr_intf/axis/scripts/axis.py:200 -#: src/emc/usr_intf/axis/scripts/axis.py:204 -#: emc/usr_intf/axis/scripts/axis.py:203 +#: src/emc/usr_intf/axis/scripts/axis.py:239 msgid "Spindle brake off" msgstr "Spindelbremse aus" -#: src/emc/usr_intf/axis/scripts/axis.py:201 -#: src/emc/usr_intf/axis/scripts/axis.py:205 -#: emc/usr_intf/axis/scripts/axis.py:204 +#: src/emc/usr_intf/axis/scripts/axis.py:240 msgid "Shift-B" msgstr "Umsch.-B" -#: src/emc/usr_intf/axis/scripts/axis.py:201 -#: src/emc/usr_intf/axis/scripts/axis.py:205 -#: emc/usr_intf/axis/scripts/axis.py:204 +#: src/emc/usr_intf/axis/scripts/axis.py:240 msgid "Spindle brake on" msgstr "Spindelbremse an" -#: src/emc/usr_intf/axis/scripts/axis.py:202 -#: src/emc/usr_intf/axis/scripts/axis.py:206 -#: emc/usr_intf/axis/scripts/axis.py:205 +#: src/emc/usr_intf/axis/scripts/axis.py:241 msgid "Turn spindle clockwise" msgstr "Spindel dreht im Uhrzeigersinn" -#: src/emc/usr_intf/axis/scripts/axis.py:203 -#: src/emc/usr_intf/axis/scripts/axis.py:207 -#: emc/usr_intf/axis/scripts/axis.py:206 +#: src/emc/usr_intf/axis/scripts/axis.py:242 msgid "Turn spindle counterclockwise" msgstr "Spindel dreht gegen Uhrzeigersinn" -#: src/emc/usr_intf/axis/scripts/axis.py:204 -#: src/emc/usr_intf/axis/scripts/axis.py:208 -#: emc/usr_intf/axis/scripts/axis.py:207 +#: src/emc/usr_intf/axis/scripts/axis.py:243 msgid "Turn spindle more slowly" msgstr "Spindel langsamer" -#: src/emc/usr_intf/axis/scripts/axis.py:205 -#: src/emc/usr_intf/axis/scripts/axis.py:209 -#: emc/usr_intf/axis/scripts/axis.py:208 +#: src/emc/usr_intf/axis/scripts/axis.py:244 msgid "Turn spindle more quickly" msgstr "Spindel schneller" -#: src/emc/usr_intf/axis/scripts/axis.py:207 -#: src/emc/usr_intf/axis/scripts/axis.py:211 -#: emc/usr_intf/axis/scripts/axis.py:210 +#: src/emc/usr_intf/axis/scripts/axis.py:246 msgid "Control-K" msgstr "Strg-K" -#: src/emc/usr_intf/axis/scripts/axis.py:207 -#: src/emc/usr_intf/axis/scripts/axis.py:211 -#: emc/usr_intf/axis/scripts/axis.py:210 +#: src/emc/usr_intf/axis/scripts/axis.py:246 msgid "Clear live plot" msgstr "Werkzeugpfad löschen" -#: src/emc/usr_intf/axis/scripts/axis.py:208 -#: src/emc/usr_intf/axis/scripts/axis.py:212 -#: emc/usr_intf/axis/scripts/axis.py:211 +#: src/emc/usr_intf/axis/scripts/axis.py:247 msgid "Cycle among preset views" msgstr "Perspektive wechseln" -#: src/emc/usr_intf/axis/scripts/axis.py:209 -#: src/emc/usr_intf/axis/scripts/axis.py:213 +#: src/emc/usr_intf/axis/scripts/axis.py:248 #, fuzzy msgid "Cycle among preview, DRO, and user tabs" msgstr "Perspektive wechseln" -#: src/emc/usr_intf/axis/scripts/axis.py:211 -#: src/emc/usr_intf/axis/scripts/axis.py:215 -#: emc/usr_intf/axis/scripts/axis.py:214 +#: src/emc/usr_intf/axis/scripts/axis.py:250 msgid "Ctrl-Space" msgstr "Strg-Leertaste" -#: src/emc/usr_intf/axis/scripts/axis.py:211 -#: src/emc/usr_intf/axis/scripts/axis.py:215 -#: emc/usr_intf/axis/scripts/axis.py:214 +#: src/emc/usr_intf/axis/scripts/axis.py:250 msgid "Clear notifications" msgstr "Mitteilungen löschen" -#: src/emc/usr_intf/axis/scripts/axis.py:828 -#: src/emc/usr_intf/axis/scripts/axis.py:836 -#: emc/usr_intf/axis/scripts/axis.py:1639 +#: src/emc/usr_intf/axis/scripts/axis.py:850 #, python-format msgid "Unknown tool %d" msgstr "Unbekanntes Werkzeug %d" -#: src/emc/usr_intf/axis/scripts/axis.py:830 -#: src/emc/usr_intf/axis/scripts/axis.py:838 -#: emc/usr_intf/axis/scripts/axis.py:1637 +#: src/emc/usr_intf/axis/scripts/axis.py:852 msgid "No tool" msgstr "Kein Werkzeug" -#: src/emc/usr_intf/axis/scripts/axis.py:832 -#: src/emc/usr_intf/axis/scripts/axis.py:840 -#: emc/usr_intf/axis/scripts/axis.py:1641 +#: src/emc/usr_intf/axis/scripts/axis.py:854 #, python-format msgid "Tool %(tool)d, offset %(zo)g, diameter %(dia)g" msgstr "Werkzeug %(tool)d, Werkzeugverschiebung %(zo)g, Durchmesser %(dia)g" -#: src/emc/usr_intf/axis/scripts/axis.py:834 -#: src/emc/usr_intf/axis/scripts/axis.py:842 -#: emc/usr_intf/axis/scripts/axis.py:1643 +#: src/emc/usr_intf/axis/scripts/axis.py:856 #, python-format msgid "Tool %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" msgstr "Werkzeug %(tool)d, Zo %(zo)g, Xo %(xo)g, Durchmesser %(dia)g" -#: src/emc/usr_intf/axis/scripts/axis.py:1005 -#: src/emc/usr_intf/axis/scripts/axis.py:1013 -#: emc/usr_intf/axis/scripts/axis.py:1895 +#: src/emc/usr_intf/axis/scripts/axis.py:1031 msgid "Filtering..." msgstr "Arbeite..." -#: src/emc/usr_intf/axis/scripts/axis.py:1065 -#: src/emc/usr_intf/axis/scripts/axis.py:1073 -#: emc/usr_intf/axis/scripts/axis.py:1951 +#: src/emc/usr_intf/axis/scripts/axis.py:1102 msgid "Filter failed" msgstr "Konvertierung fehlgeschlagen" -#: src/emc/usr_intf/axis/scripts/axis.py:1066 -#: src/emc/usr_intf/axis/scripts/axis.py:1074 -#: emc/usr_intf/axis/scripts/axis.py:1952 +#: src/emc/usr_intf/axis/scripts/axis.py:1103 #, python-format msgid "" "The program %(program)r exited with code %(code)d. Any error messages it " @@ -4555,16 +5964,12 @@ msgstr "" "Der Konverter %(program)r hat den Vorgang mit Status %(code)d beendet. " "Folgende Fehlermeldungen sind vorhanden:" -#: src/emc/usr_intf/axis/scripts/axis.py:1127 -#: src/emc/usr_intf/axis/scripts/axis.py:1139 -#: emc/usr_intf/axis/scripts/axis.py:2011 +#: src/emc/usr_intf/axis/scripts/axis.py:1171 #, python-format msgid "G-Code error in %s" msgstr "G-Code Fehler in %s" -#: src/emc/usr_intf/axis/scripts/axis.py:1128 -#: src/emc/usr_intf/axis/scripts/axis.py:1140 -#: emc/usr_intf/axis/scripts/axis.py:2012 +#: src/emc/usr_intf/axis/scripts/axis.py:1172 #, python-format msgid "" "Near line %(seq)d of %(f)s:\n" @@ -4573,197 +5978,136 @@ msgstr "" "Nahe Zeile %(seq)d in %(f)s:\n" "%(error_str)s" -#: src/emc/usr_intf/axis/scripts/axis.py:1279 -#: src/emc/usr_intf/axis/scripts/axis.py:2712 share/axis/tcl/axis.tcl:1092 -#: share/axis/tcl/axis.tcl:1094 share/axis/tcl/axis.tcl:2144 -#: src/emc/usr_intf/axis/scripts/axis.py:1292 -#: src/emc/usr_intf/axis/scripts/axis.py:2725 -#: emc/usr_intf/axis/scripts/axis.py:2168 -#: emc/usr_intf/axis/scripts/axis.py:3558 ../share/axis/tcl/axis.tcl:1049 -#: ../share/axis/tcl/axis.tcl:1051 ../share/axis/tcl/axis.tcl:2097 +#: src/emc/usr_intf/axis/scripts/axis.py:1341 +#: src/emc/usr_intf/axis/scripts/axis.py:2942 share/axis/tcl/axis.tcl:1162 +#: share/axis/tcl/axis.tcl:1164 share/axis/tcl/axis.tcl:2269 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:895 msgid "Continuous" msgstr "Durchgehend" -#: src/emc/usr_intf/axis/scripts/axis.py:1390 -#: src/emc/usr_intf/axis/scripts/axis.py:1403 +#: src/emc/usr_intf/axis/scripts/axis.py:1452 msgid "Ok" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1533 -#: src/emc/usr_intf/axis/scripts/axis.py:1546 -#: emc/usr_intf/axis/scripts/axis.py:2365 +#: src/emc/usr_intf/axis/scripts/axis.py:1599 msgid "T Tool Table" msgstr "T Werkzeugtabelle" -#: src/emc/usr_intf/axis/scripts/axis.py:1544 -#: src/emc/usr_intf/axis/scripts/axis.py:1717 -#: src/emc/usr_intf/stepconf/stepconf.py:1691 -#: src/emc/usr_intf/stepconf/stepconf.py:2235 -#: src/emc/usr_intf/axis/scripts/axis.py:1557 -#: src/emc/usr_intf/axis/scripts/axis.py:1730 -#: emc/usr_intf/axis/scripts/axis.py:2382 -#: emc/usr_intf/axis/scripts/axis.py:2532 -#: emc/usr_intf/stepconf/stepconf.py:1501 -#: emc/usr_intf/stepconf/stepconf.py:2093 +#: src/emc/usr_intf/axis/scripts/axis.py:1610 +#: src/emc/usr_intf/axis/scripts/axis.py:1859 +#: src/emc/usr_intf/axis/scripts/axis.py:2387 +#: src/emc/usr_intf/stepconf/stepconf.py:1328 +#: src/emc/usr_intf/stepconf/pages.py:631 msgid "in" msgstr "in" -#: src/emc/usr_intf/axis/scripts/axis.py:1547 -#: src/emc/usr_intf/axis/scripts/axis.py:1560 -#: emc/usr_intf/axis/scripts/axis.py:2385 +#: src/emc/usr_intf/axis/scripts/axis.py:1613 #, fuzzy msgid " radius" msgstr "Kreis mit Radius Null" -#: src/emc/usr_intf/axis/scripts/axis.py:1549 -#: src/emc/usr_intf/axis/scripts/axis.py:1562 -#: emc/usr_intf/axis/scripts/axis.py:2387 +#: src/emc/usr_intf/axis/scripts/axis.py:1615 #, fuzzy msgid " diameter" msgstr "Durchmesser:" -#: src/emc/usr_intf/axis/scripts/axis.py:1550 -#: src/emc/usr_intf/axis/scripts/axis.py:1563 -#: emc/usr_intf/axis/scripts/axis.py:2388 +#: src/emc/usr_intf/axis/scripts/axis.py:1616 msgid "°" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1559 -#: src/emc/usr_intf/axis/scripts/axis.py:1572 -#: emc/usr_intf/axis/scripts/axis.py:2394 +#: src/emc/usr_intf/axis/scripts/axis.py:1625 msgid "Coordinate System:" msgstr "Koordinatensystem:" -#: src/emc/usr_intf/axis/scripts/axis.py:1575 -#: src/emc/usr_intf/axis/scripts/axis.py:1588 +#: src/emc/usr_intf/axis/scripts/axis.py:1641 msgid "fixture" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1576 -#: src/emc/usr_intf/axis/scripts/axis.py:1589 +#: src/emc/usr_intf/axis/scripts/axis.py:1642 msgid "workpiece" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1592 -#: src/emc/usr_intf/axis/scripts/axis.py:1605 -#: emc/usr_intf/axis/scripts/axis.py:2417 +#: src/emc/usr_intf/axis/scripts/axis.py:1658 msgid "Name:" msgstr "Name:" -#: src/emc/usr_intf/axis/scripts/axis.py:1592 -#: src/emc/usr_intf/axis/scripts/axis.py:1605 -#: emc/usr_intf/axis/scripts/axis.py:2417 +#: src/emc/usr_intf/axis/scripts/axis.py:1658 msgid "Size:" msgstr "Größe:" -#: src/emc/usr_intf/axis/scripts/axis.py:1593 -#: src/emc/usr_intf/axis/scripts/axis.py:1606 -#: emc/usr_intf/axis/scripts/axis.py:2418 +#: src/emc/usr_intf/axis/scripts/axis.py:1659 msgid "Tool order:" msgstr "Werkzeugreichenfolge:" -#: src/emc/usr_intf/axis/scripts/axis.py:1593 -#: src/emc/usr_intf/axis/scripts/axis.py:1606 -#: emc/usr_intf/axis/scripts/axis.py:2418 +#: src/emc/usr_intf/axis/scripts/axis.py:1659 msgid "Rapid distance:" msgstr "Eilgang-Weg:" -#: src/emc/usr_intf/axis/scripts/axis.py:1594 -#: src/emc/usr_intf/axis/scripts/axis.py:1607 -#: emc/usr_intf/axis/scripts/axis.py:2419 +#: src/emc/usr_intf/axis/scripts/axis.py:1660 msgid "Feed distance:" msgstr "Vorschub-Weg:" -#: src/emc/usr_intf/axis/scripts/axis.py:1594 -#: src/emc/usr_intf/axis/scripts/axis.py:1607 -#: emc/usr_intf/axis/scripts/axis.py:2419 +#: src/emc/usr_intf/axis/scripts/axis.py:1660 msgid "Total distance:" msgstr "Gesamter Weg:" -#: src/emc/usr_intf/axis/scripts/axis.py:1595 -#: src/emc/usr_intf/axis/scripts/axis.py:1608 -#: emc/usr_intf/axis/scripts/axis.py:2420 +#: src/emc/usr_intf/axis/scripts/axis.py:1661 msgid "Run time:" msgstr "Laufzeit:" -#: src/emc/usr_intf/axis/scripts/axis.py:1595 -#: src/emc/usr_intf/axis/scripts/axis.py:1608 -#: emc/usr_intf/axis/scripts/axis.py:2420 +#: src/emc/usr_intf/axis/scripts/axis.py:1661 msgid "X bounds:" msgstr "X-Bereich:" -#: src/emc/usr_intf/axis/scripts/axis.py:1596 -#: src/emc/usr_intf/axis/scripts/axis.py:1609 -#: emc/usr_intf/axis/scripts/axis.py:2421 +#: src/emc/usr_intf/axis/scripts/axis.py:1662 msgid "Y bounds:" msgstr "Y-Bereich:" -#: src/emc/usr_intf/axis/scripts/axis.py:1596 -#: src/emc/usr_intf/axis/scripts/axis.py:1609 -#: emc/usr_intf/axis/scripts/axis.py:2421 +#: src/emc/usr_intf/axis/scripts/axis.py:1662 msgid "Z bounds:" msgstr "Z-Bereich:" -#: src/emc/usr_intf/axis/scripts/axis.py:1597 -#: src/emc/usr_intf/axis/scripts/axis.py:1610 -#: emc/usr_intf/axis/scripts/axis.py:2422 +#: src/emc/usr_intf/axis/scripts/axis.py:1663 msgid "A bounds:" msgstr "A-Bereich:" -#: src/emc/usr_intf/axis/scripts/axis.py:1597 -#: src/emc/usr_intf/axis/scripts/axis.py:1610 -#: emc/usr_intf/axis/scripts/axis.py:2422 +#: src/emc/usr_intf/axis/scripts/axis.py:1663 msgid "B bounds:" msgstr "B-Bereich:" -#: src/emc/usr_intf/axis/scripts/axis.py:1598 -#: src/emc/usr_intf/axis/scripts/axis.py:1611 -#: emc/usr_intf/axis/scripts/axis.py:2423 +#: src/emc/usr_intf/axis/scripts/axis.py:1664 msgid "C bounds:" msgstr "C-Bereich:" -#: src/emc/usr_intf/axis/scripts/axis.py:1622 -#: src/emc/usr_intf/axis/scripts/axis.py:1635 -#: emc/usr_intf/axis/scripts/axis.py:2447 +#: src/emc/usr_intf/axis/scripts/axis.py:1688 #, python-format msgid "Program exceeds machine minimum on axis %s" msgstr "Programm überschreitet den unteren Grenzwert der Achse %s" -#: src/emc/usr_intf/axis/scripts/axis.py:1625 -#: src/emc/usr_intf/axis/scripts/axis.py:1638 -#: emc/usr_intf/axis/scripts/axis.py:2450 +#: src/emc/usr_intf/axis/scripts/axis.py:1691 #, python-format msgid "Program exceeds machine maximum on axis %s" msgstr "Programm überschreitet den oberen Grenzwert der Achse %s" -#: src/emc/usr_intf/axis/scripts/axis.py:1630 -#: src/emc/usr_intf/axis/scripts/axis.py:1643 -#: emc/usr_intf/axis/scripts/axis.py:2455 +#: src/emc/usr_intf/axis/scripts/axis.py:1696 msgid "Program exceeds machine limits" msgstr "Programm überschreitet die Maschinengrenzwerte" -#: src/emc/usr_intf/axis/scripts/axis.py:1633 -#: src/emc/usr_intf/axis/scripts/axis.py:1646 -#: emc/usr_intf/axis/scripts/axis.py:2458 +#: src/emc/usr_intf/axis/scripts/axis.py:1699 msgid "Run Anyway" msgstr "Trotzdem ausführen" -#: src/emc/usr_intf/axis/scripts/axis.py:1695 -#: src/emc/usr_intf/axis/scripts/axis.py:1708 -#: emc/usr_intf/axis/scripts/axis.py:2510 +#: src/emc/usr_intf/axis/scripts/axis.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1581 msgid "No file loaded" msgstr "Es ist keine Datei geladen" -#: src/emc/usr_intf/axis/scripts/axis.py:1703 -#: src/emc/usr_intf/axis/scripts/axis.py:1716 -#: emc/usr_intf/axis/scripts/axis.py:2518 +#: src/emc/usr_intf/axis/scripts/axis.py:1845 #, python-format msgid "generated from %s" msgstr "Erstellt von »%«" -#: src/emc/usr_intf/axis/scripts/axis.py:1709 -#: src/emc/usr_intf/axis/scripts/axis.py:1722 -#: emc/usr_intf/axis/scripts/axis.py:2524 +#: src/emc/usr_intf/axis/scripts/axis.py:1851 #, python-format msgid "" "%(size)s bytes\n" @@ -4772,170 +6116,148 @@ msgstr "" "%(size)s Byte\n" "%(lines)s Zeilen" -#: src/emc/usr_intf/axis/scripts/axis.py:1735 -#: src/emc/usr_intf/axis/scripts/axis.py:1748 -#: emc/usr_intf/axis/scripts/axis.py:2550 +#: src/emc/usr_intf/axis/scripts/axis.py:1877 #, python-format msgid "%.1f minutes" msgstr "%.1f min" -#: src/emc/usr_intf/axis/scripts/axis.py:1737 -#: src/emc/usr_intf/axis/scripts/axis.py:1750 -#: emc/usr_intf/axis/scripts/axis.py:2552 +#: src/emc/usr_intf/axis/scripts/axis.py:1879 #, python-format msgid "%d seconds" msgstr "%d s" -#: src/emc/usr_intf/axis/scripts/axis.py:1745 -#: src/emc/usr_intf/axis/scripts/axis.py:1758 -#: emc/usr_intf/axis/scripts/axis.py:2560 +#: src/emc/usr_intf/axis/scripts/axis.py:1887 #, python-format msgid "%(a)f to %(b)f = %(diff)f %(units)s" msgstr "%(a)f bis %(b)f = %(diff)f %(units)s" -#: src/emc/usr_intf/axis/scripts/axis.py:1746 -#: src/emc/usr_intf/axis/scripts/axis.py:1759 -#: emc/usr_intf/axis/scripts/axis.py:2561 +#: src/emc/usr_intf/axis/scripts/axis.py:1888 msgid "G-Code Properties" msgstr "G-Code Eigenschaften" -#: src/emc/usr_intf/axis/scripts/axis.py:1870 -#: src/emc/usr_intf/axis/scripts/axis.py:1883 -#: emc/usr_intf/axis/scripts/axis.py:2759 +#: src/emc/usr_intf/axis/scripts/axis.py:2021 msgid "All machinable files" msgstr "Alle einlesbaren Dateien" -#: src/emc/usr_intf/axis/scripts/axis.py:1871 -#: src/emc/usr_intf/axis/scripts/axis.py:2451 -#: src/emc/usr_intf/axis/scripts/axis.py:1884 -#: src/emc/usr_intf/axis/scripts/axis.py:2464 -#: emc/usr_intf/axis/scripts/axis.py:2760 -#: emc/usr_intf/axis/scripts/axis.py:3319 +#: src/emc/usr_intf/axis/scripts/axis.py:2022 +#: src/emc/usr_intf/axis/scripts/axis.py:2659 msgid "rs274ngc files" msgstr "NC Dateien" -#: src/emc/usr_intf/axis/scripts/axis.py:1886 -#: src/emc/usr_intf/axis/scripts/axis.py:1899 +#: src/emc/usr_intf/axis/scripts/axis.py:2037 msgid "axis cannot accept remote command while running" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2242 -#: src/emc/usr_intf/axis/scripts/axis.py:2255 +#: src/emc/usr_intf/axis/scripts/axis.py:2098 +#, fuzzy +msgid "File not Writable:" +msgstr "Datei ist nicht geöffnet" + +#: src/emc/usr_intf/axis/scripts/axis.py:2099 +msgid "" +"This file is not writable\n" +"You can Edit-readonly\n" +"\n" +"or\n" +"\n" +"Save it to your own directory\n" +"then open that saved, writable file" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2106 +msgid "Edit-readonly" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2440 msgid "Axis is already homed, are you sure you want to re-home?" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2255 -#: src/emc/usr_intf/axis/scripts/axis.py:2268 +#: src/emc/usr_intf/axis/scripts/axis.py:2453 msgid "This axis is already homed, are you sure you want to re-home?" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2295 share/axis/tcl/axis.tcl:1108 -#: src/emc/usr_intf/axis/scripts/axis.py:2308 -#: emc/usr_intf/axis/scripts/axis.py:3143 ../share/axis/tcl/axis.tcl:1065 +#: src/emc/usr_intf/axis/scripts/axis.py:2493 share/axis/tcl/axis.tcl:1178 msgid "Touch Off" msgstr "Antasten" -#: src/emc/usr_intf/axis/scripts/axis.py:2296 -#: src/emc/usr_intf/axis/scripts/axis.py:2309 +#: src/emc/usr_intf/axis/scripts/axis.py:2494 #, fuzzy, python-format msgid "Enter %s coordinate relative to %%s:" msgstr "%s-Koordinate relativ zum Werkstück" -#: src/emc/usr_intf/axis/scripts/axis.py:2463 -#: src/emc/usr_intf/axis/scripts/axis.py:2476 -#: emc/usr_intf/axis/scripts/axis.py:3331 +#: src/emc/usr_intf/axis/scripts/axis.py:2671 msgid "Error saving file" msgstr "Fehler beim speichern der Datei" -#: src/emc/usr_intf/axis/scripts/axis.py:2845 +#: src/emc/usr_intf/axis/scripts/axis.py:3077 #: src/emc/usr_intf/touchy/touchy.glade:577 -#: src/emc/usr_intf/axis/scripts/axis.py:2859 -#: emc/usr_intf/axis/scripts/axis.py:3693 +#: src/emc/usr_intf/gscreen/gscreen.glade:2933 msgid "Home All" msgstr "Referenzfahrt" -#: src/emc/usr_intf/axis/scripts/axis.py:2847 -#: src/emc/usr_intf/axis/scripts/axis.py:2861 -#: emc/usr_intf/axis/scripts/axis.py:3695 +#: src/emc/usr_intf/axis/scripts/axis.py:3079 msgid "Home all axes [Ctrl-Home]" msgstr "Referenzfahrt mit allen Achsen [Strg-Pos1]" -#: src/emc/usr_intf/axis/scripts/axis.py:2850 -#: src/emc/usr_intf/axis/scripts/axis.py:2864 -#: emc/usr_intf/axis/scripts/axis.py:3698 +#: src/emc/usr_intf/axis/scripts/axis.py:3082 msgid "Home All Axes" msgstr "Referenzfahrt mit allen Achsen" -#: src/emc/usr_intf/axis/scripts/axis.py:2855 -#: src/emc/usr_intf/axis/scripts/axis.py:2871 -#: emc/usr_intf/axis/scripts/axis.py:3703 +#: src/emc/usr_intf/axis/scripts/axis.py:3089 msgid "Unhome All Axes" msgstr "Referenzfahrt aufheben bei allen Achsen" -#: src/emc/usr_intf/axis/scripts/axis.py:2879 -#: src/emc/usr_intf/axis/scripts/axis.py:2895 -#: emc/usr_intf/axis/scripts/axis.py:3723 +#: src/emc/usr_intf/axis/scripts/axis.py:3113 #, python-format msgid "Home Axis _%s" msgstr "Referenzfahrt mit _%s-Achse" -#: src/emc/usr_intf/axis/scripts/axis.py:2881 -#: src/emc/usr_intf/axis/scripts/axis.py:2897 -#: emc/usr_intf/axis/scripts/axis.py:3725 +#: src/emc/usr_intf/axis/scripts/axis.py:3115 #, python-format msgid "Unhome Axis _%s" msgstr "Referenzfahrt aufheben bei _%s-Achse" -#: src/emc/usr_intf/axis/scripts/axis.py:3024 -#: src/emc/usr_intf/axis/scripts/axis.py:3040 -#: emc/usr_intf/axis/scripts/axis.py:3862 +#: src/emc/usr_intf/axis/scripts/axis.py:3282 msgid "Run from here" msgstr "Ab hier ausführen" -#: src/emc/usr_intf/axis/scripts/axis.py:3319 -#: src/emc/usr_intf/axis/scripts/axis.py:3335 -#: emc/usr_intf/axis/scripts/axis.py:4079 +#: src/emc/usr_intf/axis/scripts/axis.py:3598 msgid "Error in ~/.axisrc" msgstr "Fehler in »~/.axisrc«" #: src/emc/usr_intf/axis/scripts/linuxcnctop.py:102 -msgid "LinuxCNC Status" -msgstr "" +#, fuzzy +msgid "Machinekit Status" +msgstr "_Einheiten:" #: src/emc/usr_intf/axis/scripts/linuxcnctop.py:118 #, fuzzy msgid "Copy All" msgstr "Kopieren" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:29 -#: emc/usr_intf/axis/scripts/hal_manualtoolchange.py:11 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 #, python-format msgid "Insert tool %d and click continue when ready" msgstr "Bitte Werkzeug %d einlegen und mit »Fortsetzen« bestätigen." -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:31 -#: emc/usr_intf/axis/scripts/hal_manualtoolchange.py:13 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:39 msgid "Remove the tool and click continue when ready" msgstr "Bitte Werkzeug entfernen und mit »Fortsetzen« bestätigen." -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 -#: src/emc/usr_intf/touchy/mdi.py:49 -#: emc/usr_intf/axis/scripts/hal_manualtoolchange.py:17 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 +#: src/emc/usr_intf/touchy/mdi.py:49 src/emc/usr_intf/gscreen/mdi.py:49 msgid "Tool change" msgstr "Werkzeugwechsel" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 -#: emc/usr_intf/axis/scripts/hal_manualtoolchange.py:17 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 msgid "Continue" msgstr "Fortsetzen" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:55 -#: emc/usr_intf/axis/scripts/hal_manualtoolchange.py:31 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:64 msgid "AXIS Manual Toolchanger" msgstr "AXIS Werkzeugwechsel" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:59 -#: emc/usr_intf/axis/scripts/hal_manualtoolchange.py:35 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:68 msgid "" "This window is part of the AXIS manual toolchanger. It is safe to close or " "iconify this window, or it will close automatically after a few seconds." @@ -4945,18 +6267,15 @@ msgstr "" "Sekunden selbst." #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:507 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:498 #, python-format msgid "%s: Image to gcode" msgstr "%s: Bild in G-Code umwandeln" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:508 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:499 msgid "Image to gcode" msgstr "Bild in G-Code umwandeln" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:518 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:509 #, python-format msgid "" "Image size: %(w)d x %(h)d pixels\n" @@ -4968,267 +6287,213 @@ msgstr "" "Maximale Helligkeit: %(max)d" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:599 msgid "G20 (in)" msgstr "G20 (in)" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:599 msgid "G21 (mm)" msgstr "G21 (mm)" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 #: src/emc/usr_intf/touchy/emc_interface.py:417 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:602 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:615 -#: emc/usr_intf/pncconf/pncconf.glade:816 -#: emc/usr_intf/pncconf/pncconf.glade:883 msgid "None" msgstr "Keine" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:602 msgid "White" msgstr "Weiss" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:602 msgid "Black" msgstr "Schwarz" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:608 msgid "Rows" msgstr "Zeilen" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:608 msgid "Columns" msgstr "Spalten" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:608 msgid "Rows then Columns" msgstr "Erst Zeilen, dann Spalten" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:608 msgid "Columns then Rows" msgstr "Erst Spalten, dann Zeilen" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:609 msgid "Positive" msgstr "Positiv" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:609 msgid "Negative" msgstr "Negativ" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:609 msgid "Alternating" msgstr "Abwechselnd" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:609 msgid "Up Milling" msgstr "Aufwärts fräsen" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:609 msgid "Down Milling" msgstr "Abwärts fräsen" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:614 msgid "Ball End" msgstr "Kugelfräser" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:614 msgid "Flat End" msgstr "Schaftfräser" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:614 msgid "30 Degree" msgstr "30°-Fräser" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:614 msgid "45 Degree" msgstr "45°-Fräser" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:614 msgid "60 Degree" msgstr "60°-Fräser" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:615 msgid "Secondary" msgstr "Sekundär" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:615 msgid "Full" msgstr "Voll" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:654 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:645 msgid "Invert Image" msgstr "Bild invertieren" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:655 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:646 msgid "Normalize Image" msgstr "Bild normalisieren" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:656 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:647 msgid "Extend Image Border" msgstr "Bildränder erweitern" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:657 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:648 msgid "Pixel Size (Units)" msgstr "Pixel-Größe (Einheiten)" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:658 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:649 msgid "Depth (units)" msgstr "Tiefe (Einheiten)" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:659 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:650 msgid "Tolerance (units)" msgstr "Toleranz (Einheiten)" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:660 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:651 msgid "Stepover (pixels)" msgstr "Auflösung (Pixel)" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:661 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:652 msgid "Tool Diameter (units)" msgstr "Werkzeugdurchmesser (Einheiten)" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:662 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:653 msgid "Tool Type" msgstr "Werkzeugtyp" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:663 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:654 msgid "Feed Rate (units per minute)" msgstr "Vorschub (Einheiten pro Minute)" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:664 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:655 msgid "Plunge Feed Rate (units per minute)" msgstr "Eintauchvorschub (Einheiten pro Minute)" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:666 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:657 msgid "Safety Height (units)" msgstr "Sicherheitshöhe (Einheiten)" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:667 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:658 msgid "Scan Pattern" msgstr "Abtastmuster" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:668 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:659 msgid "Scan Direction" msgstr "Abtastrichtung" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:669 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:660 msgid "Lace Bounding" msgstr "Glättung" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:670 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:661 msgid "Contact Angle (degrees)" msgstr "Kontaktwinkel (Grad)" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:671 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:662 msgid "Spindle Speed (RPM)" msgstr "Spindeldrehzahl (1/min)" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:672 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:663 msgid "Roughing offset (units, 0=no roughing)" msgstr "Schruppoffset (Einheiten, 0=kein Schruppen)" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:673 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:664 msgid "Roughing depth per pass (units)" msgstr "Schrupptiefe pro Durchlauf (Einheiten)" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:740 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:731 msgid "image-to-gcode: User pressed cancel" msgstr "Bild zu G-Code: Benutzer betätigte »Abbrechen«" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:753 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:744 msgid "Depth images" msgstr "Bilddateien" #: src/emc/usr_intf/axis/scripts/debuglevel.py:22 #, fuzzy -msgid "LinuxCNC Debug Level" -msgstr "Debug-Stufe" +msgid "Machinekit Debug Level" +msgstr "Deb_ug-Stufe festlegen..." #: src/emc/usr_intf/axis/scripts/debuglevel.py:23 -#: emc/usr_intf/axis/scripts/debuglevel.py:23 msgid "debuglevel" msgstr "Debug-Level" #: src/emc/usr_intf/axis/scripts/debuglevel.py:36 -#: emc/usr_intf/axis/scripts/debuglevel.py:36 msgid "Configuration *" msgstr "Konfiguration *" #: src/emc/usr_intf/axis/scripts/debuglevel.py:37 -#: emc/usr_intf/axis/scripts/debuglevel.py:37 msgid "Version Numbers *" msgstr "Versions-Nummer *" #: src/emc/usr_intf/axis/scripts/debuglevel.py:38 -#: emc/usr_intf/axis/scripts/debuglevel.py:38 msgid "NML *" msgstr "NML *" #: src/emc/usr_intf/axis/scripts/debuglevel.py:39 -#: emc/usr_intf/axis/scripts/debuglevel.py:39 msgid "RCS *" msgstr "RCS *" #: src/emc/usr_intf/axis/scripts/debuglevel.py:40 -#: emc/usr_intf/axis/scripts/debuglevel.py:40 msgid "Task Issue" msgstr "" #: src/emc/usr_intf/axis/scripts/debuglevel.py:41 -#: emc/usr_intf/axis/scripts/debuglevel.py:41 msgid "Motion Time" msgstr "" #: src/emc/usr_intf/axis/scripts/debuglevel.py:43 -#: emc/usr_intf/axis/scripts/debuglevel.py:43 msgid "Interpreter List" msgstr "" #: src/emc/usr_intf/axis/scripts/debuglevel.py:47 -#: emc/usr_intf/axis/scripts/debuglevel.py:47 #, python-format msgid "" "Inifile setting for this debug level:\n" @@ -5238,550 +6503,610 @@ msgstr "" "[EMC]DEBUG=0x%08x" #: src/emc/usr_intf/axis/scripts/debuglevel.py:81 -#: emc/usr_intf/axis/scripts/debuglevel.py:81 msgid " * This option can only be enabled in the inifile" msgstr " * Diese Option kann nur in der INI-Datei aktiviert werden" -#: share/axis/tcl/axis.tcl:49 ../share/axis/tcl/axis.tcl:47 +#: share/axis/tcl/axis.tcl:52 msgid "_Open..." msgstr "Ö_ffnen..." -#: share/axis/tcl/axis.tcl:53 ../share/axis/tcl/axis.tcl:51 +#: share/axis/tcl/axis.tcl:56 msgid "Recent _Files" msgstr "Zuletzt geöffnete Dateien" -#: share/axis/tcl/axis.tcl:57 ../share/axis/tcl/axis.tcl:55 +#: share/axis/tcl/axis.tcl:60 msgid "_Edit..." msgstr "Be_arbeiten..." -#: share/axis/tcl/axis.tcl:60 ../share/axis/tcl/axis.tcl:58 +#: share/axis/tcl/axis.tcl:63 msgid "Ctrl-R" msgstr "Strg-R" -#: share/axis/tcl/axis.tcl:62 ../share/axis/tcl/axis.tcl:60 +#: share/axis/tcl/axis.tcl:65 msgid "_Reload" msgstr "_Neu laden" -#: share/axis/tcl/axis.tcl:65 ../share/axis/tcl/axis.tcl:63 +#: share/axis/tcl/axis.tcl:68 msgid "Ctrl-S" msgstr "Strg-S" -#: share/axis/tcl/axis.tcl:67 ../share/axis/tcl/axis.tcl:65 +#: share/axis/tcl/axis.tcl:70 msgid "_Save gcode as..." msgstr "_Speichern unter..." -#: share/axis/tcl/axis.tcl:71 ../share/axis/tcl/axis.tcl:69 +#: share/axis/tcl/axis.tcl:74 msgid "_Properties..." msgstr "_Eigenschaften..." -#: share/axis/tcl/axis.tcl:77 ../share/axis/tcl/axis.tcl:75 +#: share/axis/tcl/axis.tcl:80 msgid "Edit _tool table..." msgstr "_Werkzeugtabelle bearbeiten" -#: share/axis/tcl/axis.tcl:81 ../share/axis/tcl/axis.tcl:79 +#: share/axis/tcl/axis.tcl:84 msgid "Reload tool ta_ble" msgstr "We_rkzeugtabelle neu laden" -#: share/axis/tcl/axis.tcl:87 ../share/axis/tcl/axis.tcl:85 +#: share/axis/tcl/axis.tcl:90 msgid "_Ladder Editor..." msgstr "S_PS-Editor" -#: share/axis/tcl/axis.tcl:99 ../share/axis/tcl/axis.tcl:97 +#: share/axis/tcl/axis.tcl:102 msgid "Toggle _Emergency Stop" msgstr "_Notaus an/aus" -#: share/axis/tcl/axis.tcl:104 ../share/axis/tcl/axis.tcl:102 +#: share/axis/tcl/axis.tcl:107 msgid "Toggle _Machine Power" msgstr "_Maschine an/aus" -#: share/axis/tcl/axis.tcl:111 ../share/axis/tcl/axis.tcl:109 +#: share/axis/tcl/axis.tcl:114 msgid "_Run program" msgstr "P_rogramm ausführen" -#: share/axis/tcl/axis.tcl:115 ../share/axis/tcl/axis.tcl:113 +#: share/axis/tcl/axis.tcl:118 msgid "Ru_n from selected line" msgstr "Ab gewählter _Zeile ausführen" -#: share/axis/tcl/axis.tcl:120 ../share/axis/tcl/axis.tcl:118 +#: share/axis/tcl/axis.tcl:123 msgid "S_tep" msgstr "Einzelschri_tt" -#: share/axis/tcl/axis.tcl:125 ../share/axis/tcl/axis.tcl:123 +#: share/axis/tcl/axis.tcl:128 msgid "_Pause" msgstr "_Pause" -#: share/axis/tcl/axis.tcl:130 ../share/axis/tcl/axis.tcl:128 +#: share/axis/tcl/axis.tcl:133 msgid "Re_sume" msgstr "Fort_setzen" -#: share/axis/tcl/axis.tcl:140 ../share/axis/tcl/axis.tcl:138 +#: share/axis/tcl/axis.tcl:143 msgid "Stop at M_1" msgstr "Bei »M_1« anhalten" -#: share/axis/tcl/axis.tcl:145 ../share/axis/tcl/axis.tcl:143 +#: share/axis/tcl/axis.tcl:148 msgid "Skip lines with '_/'" msgstr "Zeilen mit »_/« überspringen" -#: share/axis/tcl/axis.tcl:150 ../share/axis/tcl/axis.tcl:148 +#: share/axis/tcl/axis.tcl:153 msgid "Ctrl-M" msgstr "Strg-M" -#: share/axis/tcl/axis.tcl:152 ../share/axis/tcl/axis.tcl:150 +#: share/axis/tcl/axis.tcl:155 msgid "Clear MDI h_istory" msgstr "MD_I-Verlauf leeren" -#: share/axis/tcl/axis.tcl:154 ../share/axis/tcl/axis.tcl:152 +#: share/axis/tcl/axis.tcl:157 msgid "Ctrl-H" msgstr "Strg-H" -#: share/axis/tcl/axis.tcl:156 ../share/axis/tcl/axis.tcl:154 +#: share/axis/tcl/axis.tcl:159 msgid "Copy from MDI hist_ory" msgstr "Aus MDI-Verlauf k_opieren" -#: share/axis/tcl/axis.tcl:158 ../share/axis/tcl/axis.tcl:156 +#: share/axis/tcl/axis.tcl:161 msgid "Ctrl-Shift-H" msgstr "Strg-Umsch.-H" -#: share/axis/tcl/axis.tcl:160 ../share/axis/tcl/axis.tcl:158 +#: share/axis/tcl/axis.tcl:163 msgid "Paste to MDI histor_y" msgstr "In MDI-Verlauf _einfügen" -#: share/axis/tcl/axis.tcl:166 ../share/axis/tcl/axis.tcl:164 +#: share/axis/tcl/axis.tcl:169 msgid "_Calibration" msgstr "_Kalibrierung..." -#: share/axis/tcl/axis.tcl:170 ../share/axis/tcl/axis.tcl:168 +#: share/axis/tcl/axis.tcl:173 msgid "Show _Hal Configuration" msgstr "_HAL anzeigen..." -#: share/axis/tcl/axis.tcl:174 ../share/axis/tcl/axis.tcl:172 +#: share/axis/tcl/axis.tcl:177 msgid "H_al Meter" msgstr "H_AL-Meter..." -#: share/axis/tcl/axis.tcl:178 ../share/axis/tcl/axis.tcl:176 +#: share/axis/tcl/axis.tcl:181 msgid "Ha_l Scope" msgstr "HA_L-Scope..." -#: share/axis/tcl/axis.tcl:182 +#: share/axis/tcl/axis.tcl:185 #, fuzzy -msgid "Sho_w LinuxCNC Status" +msgid "Sho_w Machinekit Status" msgstr "EM_C-Status..." -#: share/axis/tcl/axis.tcl:186 ../share/axis/tcl/axis.tcl:184 +#: share/axis/tcl/axis.tcl:189 msgid "Set _Debug Level" msgstr "Deb_ug-Stufe festlegen..." -#: share/axis/tcl/axis.tcl:192 ../share/axis/tcl/axis.tcl:190 +#: share/axis/tcl/axis.tcl:195 msgid "Homin_g" msgstr "Re_ferenzfahrt" -#: share/axis/tcl/axis.tcl:196 ../share/axis/tcl/axis.tcl:194 +#: share/axis/tcl/axis.tcl:199 msgid "_Unhoming" msgstr "Referenzfahrt aufhe_ben" -#: share/axis/tcl/axis.tcl:200 ../share/axis/tcl/axis.tcl:198 +#: share/axis/tcl/axis.tcl:203 msgid "_Zero coordinate system" msgstr "Koordinatens_ystem" -#: share/axis/tcl/axis.tcl:204 ../share/axis/tcl/axis.tcl:202 +#: share/axis/tcl/axis.tcl:207 msgid "P1 G5_4" msgstr "P1 G5_4" -#: share/axis/tcl/axis.tcl:208 ../share/axis/tcl/axis.tcl:206 +#: share/axis/tcl/axis.tcl:211 msgid "P2 G5_5" msgstr "P2 G5_5" -#: share/axis/tcl/axis.tcl:212 ../share/axis/tcl/axis.tcl:210 +#: share/axis/tcl/axis.tcl:215 msgid "P3 G5_6" msgstr "P3 G5_6" -#: share/axis/tcl/axis.tcl:216 ../share/axis/tcl/axis.tcl:214 +#: share/axis/tcl/axis.tcl:219 msgid "P4 G5_7" msgstr "P4 G5_7" -#: share/axis/tcl/axis.tcl:220 ../share/axis/tcl/axis.tcl:218 +#: share/axis/tcl/axis.tcl:223 msgid "P5 G5_8" msgstr "P5 G5_8" -#: share/axis/tcl/axis.tcl:224 ../share/axis/tcl/axis.tcl:222 +#: share/axis/tcl/axis.tcl:227 msgid "P6 G5_9" msgstr "P6 G5_9" -#: share/axis/tcl/axis.tcl:228 ../share/axis/tcl/axis.tcl:226 +#: share/axis/tcl/axis.tcl:231 msgid "P7 G59._1" msgstr "P7 G59._1" -#: share/axis/tcl/axis.tcl:232 ../share/axis/tcl/axis.tcl:230 +#: share/axis/tcl/axis.tcl:235 msgid "P8 G59._2" msgstr "P8 G59._2" -#: share/axis/tcl/axis.tcl:236 ../share/axis/tcl/axis.tcl:234 +#: share/axis/tcl/axis.tcl:239 msgid "P9 G59._3" msgstr "P9 G59._3" -#: share/axis/tcl/axis.tcl:240 ../share/axis/tcl/axis.tcl:238 +#: share/axis/tcl/axis.tcl:243 msgid "_G92" msgstr "_G92" -#: share/axis/tcl/axis.tcl:248 +#: share/axis/tcl/axis.tcl:251 msgid "Tool touch off to wor_kpiece" msgstr "" -#: share/axis/tcl/axis.tcl:254 +#: share/axis/tcl/axis.tcl:257 msgid "Tool touch off to _fixture" msgstr "" -#: share/axis/tcl/axis.tcl:262 ../share/axis/tcl/axis.tcl:248 +#: share/axis/tcl/axis.tcl:265 msgid "_Top view" msgstr "_Draufsicht" -#: share/axis/tcl/axis.tcl:269 ../share/axis/tcl/axis.tcl:255 +#: share/axis/tcl/axis.tcl:272 msgid "_Rotated Top view" msgstr "Draufsicht _gedreht" -#: share/axis/tcl/axis.tcl:276 ../share/axis/tcl/axis.tcl:262 +#: share/axis/tcl/axis.tcl:279 msgid "_Side view" msgstr "_Seitenansicht" -#: share/axis/tcl/axis.tcl:283 ../share/axis/tcl/axis.tcl:269 +#: share/axis/tcl/axis.tcl:286 msgid "_Front view" msgstr "_Vorderansicht" -#: share/axis/tcl/axis.tcl:290 ../share/axis/tcl/axis.tcl:276 +#: share/axis/tcl/axis.tcl:293 msgid "_Perspective view" msgstr "_Perspektivisch" -#: share/axis/tcl/axis.tcl:299 ../share/axis/tcl/axis.tcl:285 +#: share/axis/tcl/axis.tcl:302 msgid "Display _Inches" msgstr "_Inch" -#: share/axis/tcl/axis.tcl:306 ../share/axis/tcl/axis.tcl:292 +#: share/axis/tcl/axis.tcl:309 msgid "Display _MM" msgstr "_mm" -#: share/axis/tcl/axis.tcl:313 ../share/axis/tcl/axis.tcl:299 +#: share/axis/tcl/axis.tcl:316 msgid "S_how program" msgstr "V_orschau anzeigen" -#: share/axis/tcl/axis.tcl:318 ../share/axis/tcl/axis.tcl:304 +#: share/axis/tcl/axis.tcl:321 msgid "Show program r_apids" msgstr "_Eilgangpfad anzeigen" -#: share/axis/tcl/axis.tcl:323 +#: share/axis/tcl/axis.tcl:326 #, fuzzy msgid "Alpha-_blend program" msgstr "Programm öffnen" -#: share/axis/tcl/axis.tcl:328 ../share/axis/tcl/axis.tcl:309 +#: share/axis/tcl/axis.tcl:331 msgid "Sho_w live plot" msgstr "Werkzeugp_fad anzeigen" -#: share/axis/tcl/axis.tcl:333 ../share/axis/tcl/axis.tcl:314 +#: share/axis/tcl/axis.tcl:336 msgid "Show too_l" msgstr "_Werkzeug anzeigen" -#: share/axis/tcl/axis.tcl:338 ../share/axis/tcl/axis.tcl:319 +#: share/axis/tcl/axis.tcl:341 msgid "Show e_xtents" msgstr "_Bemaßung anzeigen" -#: share/axis/tcl/axis.tcl:343 +#: share/axis/tcl/axis.tcl:345 +msgid "_Grid" +msgstr "" + +#: share/axis/tcl/axis.tcl:350 #, fuzzy msgid "Show o_ffsets" msgstr "_Bemaßung anzeigen" -#: share/axis/tcl/axis.tcl:348 ../share/axis/tcl/axis.tcl:324 +#: share/axis/tcl/axis.tcl:355 msgid "Sh_ow machine limits" msgstr "Maschinengren_zen anzeigen" -#: share/axis/tcl/axis.tcl:353 ../share/axis/tcl/axis.tcl:329 +#: share/axis/tcl/axis.tcl:360 msgid "Show v_elocity" msgstr "Geschwi_ndigkeit anzeigen" -#: share/axis/tcl/axis.tcl:358 ../share/axis/tcl/axis.tcl:334 +#: share/axis/tcl/axis.tcl:365 msgid "Show _distance to go" msgstr "Verf_ahrweg anzeigen" -#: share/axis/tcl/axis.tcl:363 ../share/axis/tcl/axis.tcl:339 +#: share/axis/tcl/axis.tcl:370 #, fuzzy msgid "Large coordinate fo_nt" msgstr "Große S_chrift für Koordinaten" -#: share/axis/tcl/axis.tcl:366 ../share/axis/tcl/axis.tcl:342 +#: share/axis/tcl/axis.tcl:373 msgid "Ctrl-K" msgstr "Strg-K" -#: share/axis/tcl/axis.tcl:368 ../share/axis/tcl/axis.tcl:344 +#: share/axis/tcl/axis.tcl:375 msgid "_Clear live plot" msgstr "Werkzeugpfad _löschen" -#: share/axis/tcl/axis.tcl:377 ../share/axis/tcl/axis.tcl:353 +#: share/axis/tcl/axis.tcl:384 msgid "Show commanded position" msgstr "E_rwartete Position" -#: share/axis/tcl/axis.tcl:384 ../share/axis/tcl/axis.tcl:360 +#: share/axis/tcl/axis.tcl:391 msgid "Show actual position" msgstr "A_ktuelle Position" -#: share/axis/tcl/axis.tcl:393 ../share/axis/tcl/axis.tcl:369 +#: share/axis/tcl/axis.tcl:400 msgid "Show machine position" msgstr "Absol_ute Position" -#: share/axis/tcl/axis.tcl:400 ../share/axis/tcl/axis.tcl:376 +#: share/axis/tcl/axis.tcl:407 msgid "Show relative position" msgstr "Rela_tive Position" -#: share/axis/tcl/axis.tcl:409 ../share/axis/tcl/axis.tcl:385 +#: share/axis/tcl/axis.tcl:416 msgid "Joint mode" msgstr "Joint-Modus" -#: share/axis/tcl/axis.tcl:416 ../share/axis/tcl/axis.tcl:392 +#: share/axis/tcl/axis.tcl:423 msgid "World mode" msgstr "World-Modus" -#: share/axis/tcl/axis.tcl:425 ../share/axis/tcl/axis.tcl:401 +#: share/axis/tcl/axis.tcl:431 +msgid "_Off" +msgstr "" + +#: share/axis/tcl/axis.tcl:437 +#, fuzzy +msgid "_Custom" +msgstr "Ausschneiden" + +#: share/axis/tcl/axis.tcl:443 +msgid "User_0" +msgstr "" + +#: share/axis/tcl/axis.tcl:447 +msgid "User_1" +msgstr "" + +#: share/axis/tcl/axis.tcl:451 +msgid "User_2" +msgstr "" + +#: share/axis/tcl/axis.tcl:455 +msgid "User_3" +msgstr "" + +#: share/axis/tcl/axis.tcl:459 +msgid "User_4" +msgstr "" + +#: share/axis/tcl/axis.tcl:463 +msgid "User_5" +msgstr "" + +#: share/axis/tcl/axis.tcl:467 +msgid "User_6" +msgstr "" + +#: share/axis/tcl/axis.tcl:471 +msgid "User_7" +msgstr "" + +#: share/axis/tcl/axis.tcl:475 +msgid "User_8" +msgstr "" + +#: share/axis/tcl/axis.tcl:479 +msgid "User_9" +msgstr "" + +#: share/axis/tcl/axis.tcl:491 msgid "_About AXIS" msgstr "_Info..." -#: share/axis/tcl/axis.tcl:429 ../share/axis/tcl/axis.tcl:405 +#: share/axis/tcl/axis.tcl:495 msgid "Quick _Reference" msgstr "_Tastaturbelegung..." -#: share/axis/tcl/axis.tcl:439 ../share/axis/tcl/axis.tcl:415 +#: share/axis/tcl/axis.tcl:505 msgid "_Machine" msgstr "_Maschine" -#: share/axis/tcl/axis.tcl:443 ../share/axis/tcl/axis.tcl:419 +#: share/axis/tcl/axis.tcl:509 msgid "_View" msgstr "A_nsicht" -#: share/axis/tcl/axis.tcl:456 ../share/axis/tcl/axis.tcl:432 +#: share/axis/tcl/axis.tcl:513 +msgid "_User" +msgstr "" + +#: share/axis/tcl/axis.tcl:526 msgid "Toggle Emergency Stop [F1]" msgstr "Notaus an/aus [F1]" -#: share/axis/tcl/axis.tcl:465 ../share/axis/tcl/axis.tcl:441 +#: share/axis/tcl/axis.tcl:535 msgid "Toggle Machine power [F2]" msgstr "Maschine an/aus [F2]" -#: share/axis/tcl/axis.tcl:476 ../share/axis/tcl/axis.tcl:452 +#: share/axis/tcl/axis.tcl:546 msgid "Open G-Code file [O]" msgstr "Datei öffnen [O]" -#: share/axis/tcl/axis.tcl:484 ../share/axis/tcl/axis.tcl:460 +#: share/axis/tcl/axis.tcl:554 msgid "Reopen current file [Control-R]" msgstr "Aktuelle Datei neu laden [Strg-R]" -#: share/axis/tcl/axis.tcl:494 ../share/axis/tcl/axis.tcl:470 +#: share/axis/tcl/axis.tcl:564 msgid "Begin executing current file [R]" msgstr "Aktuelle Datei ausführen [R]" -#: share/axis/tcl/axis.tcl:502 ../share/axis/tcl/axis.tcl:478 +#: share/axis/tcl/axis.tcl:572 msgid "Execute next line [T]" msgstr "Nächste Zeile ausführen [T]" -#: share/axis/tcl/axis.tcl:510 ../share/axis/tcl/axis.tcl:486 +#: share/axis/tcl/axis.tcl:580 msgid "Pause [P] / resume [S] execution" msgstr "Pause [P] / Fortsetzen [S]" -#: share/axis/tcl/axis.tcl:518 ../share/axis/tcl/axis.tcl:494 +#: share/axis/tcl/axis.tcl:588 msgid "Stop program execution [ESC]" msgstr "Programmausführung abbrechen [ESC]" -#: share/axis/tcl/axis.tcl:528 ../share/axis/tcl/axis.tcl:504 +#: share/axis/tcl/axis.tcl:598 msgid "Toggle skip lines with '/' [Alt-M /]" msgstr "Zeilen beginnend mit '/' überspringen [Alt-M /]" -#: share/axis/tcl/axis.tcl:535 ../share/axis/tcl/axis.tcl:511 +#: share/axis/tcl/axis.tcl:605 msgid "Toggle optional pause [Alt-M 1]" msgstr "Wahlweiser Halt ein/aus [Alt-M 1]" -#: share/axis/tcl/axis.tcl:544 ../share/axis/tcl/axis.tcl:520 +#: share/axis/tcl/axis.tcl:614 src/emc/usr_intf/gmoccapy/gmoccapy.glade:549 msgid "Zoom in" msgstr "Vergrößern" -#: share/axis/tcl/axis.tcl:552 ../share/axis/tcl/axis.tcl:528 +#: share/axis/tcl/axis.tcl:622 src/emc/usr_intf/gmoccapy/gmoccapy.glade:567 msgid "Zoom out" msgstr "Verkleinern" -#: share/axis/tcl/axis.tcl:560 ../share/axis/tcl/axis.tcl:536 +#: share/axis/tcl/axis.tcl:630 msgid "Top view" msgstr "Draufsicht" -#: share/axis/tcl/axis.tcl:568 ../share/axis/tcl/axis.tcl:544 +#: share/axis/tcl/axis.tcl:638 msgid "Rotated top view" msgstr "Draufsicht gedreht" -#: share/axis/tcl/axis.tcl:576 ../share/axis/tcl/axis.tcl:552 +#: share/axis/tcl/axis.tcl:646 msgid "Side view" msgstr "Seitenansicht" -#: share/axis/tcl/axis.tcl:584 ../share/axis/tcl/axis.tcl:560 +#: share/axis/tcl/axis.tcl:654 msgid "Front view" msgstr "Vorderansicht" -#: share/axis/tcl/axis.tcl:592 ../share/axis/tcl/axis.tcl:568 +#: share/axis/tcl/axis.tcl:662 msgid "Perspective view" msgstr "Perspektivische Ansicht" -#: share/axis/tcl/axis.tcl:600 ../share/axis/tcl/axis.tcl:576 +#: share/axis/tcl/axis.tcl:670 msgid "Toggle between Drag and Rotate Mode [D]" msgstr "Zwischen verschieben und drehen umschalten [D]" -#: share/axis/tcl/axis.tcl:615 ../share/axis/tcl/axis.tcl:591 +#: share/axis/tcl/axis.tcl:685 msgid "Clear live plot [Ctrl-K]" msgstr "Werkzeugpfad löschen [Strg-K]" -#: share/axis/tcl/axis.tcl:766 ../share/axis/tcl/axis.tcl:723 +#: share/axis/tcl/axis.tcl:836 msgid "Manual Control [F3]" msgstr "Manuelle Kontrolle [F3]" -#: share/axis/tcl/axis.tcl:767 ../share/axis/tcl/axis.tcl:724 +#: share/axis/tcl/axis.tcl:837 msgid "MDI [F5]" msgstr "MDI [F5]" -#: share/axis/tcl/axis.tcl:781 share/axis/tcl/axis.tcl:2036 -#: share/axis/tcl/axis.tcl:2203 ../share/axis/tcl/axis.tcl:738 -#: ../share/axis/tcl/axis.tcl:1993 ../share/axis/tcl/axis.tcl:2156 +#: share/axis/tcl/axis.tcl:851 share/axis/tcl/axis.tcl:2158 +#: share/axis/tcl/axis.tcl:2328 msgid "Axis:" msgstr "Achse:" -#: share/axis/tcl/axis.tcl:1102 ../share/axis/tcl/axis.tcl:1059 +#: share/axis/tcl/axis.tcl:1172 src/emc/usr_intf/gscreen/gscreen.glade:2944 msgid "Home Axis" msgstr "Referenzfahrt" -#: share/axis/tcl/axis.tcl:1176 ../share/axis/tcl/axis.tcl:1133 +#: share/axis/tcl/axis.tcl:1246 msgid "Spindle:" msgstr "Spindel:" -#: share/axis/tcl/axis.tcl:1223 src/emc/usr_intf/touchy/touchy.glade:946 -#: ../share/axis/tcl/axis.tcl:1180 +#: share/axis/tcl/axis.tcl:1293 src/emc/usr_intf/touchy/touchy.glade:946 +#: src/emc/usr_intf/stepconf/main_page.glade:406 +#: src/emc/usr_intf/gscreen/gscreen.glade:4067 msgid "-" msgstr "-" -#: share/axis/tcl/axis.tcl:1237 ../share/axis/tcl/axis.tcl:1194 +#: share/axis/tcl/axis.tcl:1307 src/emc/usr_intf/stepconf/main_page.glade:403 +#: src/emc/usr_intf/gscreen/gscreen.glade:4056 msgid "+" msgstr "+" -#: share/axis/tcl/axis.tcl:1242 ../share/axis/tcl/axis.tcl:1199 +#: share/axis/tcl/axis.tcl:1312 msgid "Brake" msgstr "Bremse" -#: share/axis/tcl/axis.tcl:1289 ../share/axis/tcl/axis.tcl:1246 +#: share/axis/tcl/axis.tcl:1359 msgid "Coolant:" msgstr "Kühlung:" -#: share/axis/tcl/axis.tcl:1294 ../share/axis/tcl/axis.tcl:1251 +#: share/axis/tcl/axis.tcl:1364 msgid "Mist" msgstr "Kühlnebel" -#: share/axis/tcl/axis.tcl:1299 ../share/axis/tcl/axis.tcl:1256 +#: share/axis/tcl/axis.tcl:1369 msgid "Flood" msgstr "Kühlmittel" -#: share/axis/tcl/axis.tcl:1371 ../share/axis/tcl/axis.tcl:1328 +#: share/axis/tcl/axis.tcl:1441 msgid "History:" msgstr "Verlauf:" -#: share/axis/tcl/axis.tcl:1394 ../share/axis/tcl/axis.tcl:1351 +#: share/axis/tcl/axis.tcl:1464 msgid "MDI Command:" msgstr "Befehl:" -#: share/axis/tcl/axis.tcl:1403 ../share/axis/tcl/axis.tcl:1360 +#: share/axis/tcl/axis.tcl:1473 msgid "Go" msgstr "Ausführen" -#: share/axis/tcl/axis.tcl:1409 ../share/axis/tcl/axis.tcl:1366 +#: share/axis/tcl/axis.tcl:1479 msgid "Active G-Codes:" msgstr "Aktive G-Codes:" -#: share/axis/tcl/axis.tcl:1487 ../share/axis/tcl/axis.tcl:1444 +#: share/axis/tcl/axis.tcl:1557 src/emc/usr_intf/gmoccapy/gmoccapy.glade:771 msgid "Preview" msgstr "Vorschau" -#: share/axis/tcl/axis.tcl:1488 ../share/axis/tcl/axis.tcl:1445 +#: share/axis/tcl/axis.tcl:1558 msgid "DRO" msgstr "DRO" -#: share/axis/tcl/axis.tcl:1575 share/axis/tcl/axis.tcl:1588 -#: ../share/axis/tcl/axis.tcl:1531 ../share/axis/tcl/axis.tcl:1544 +#: share/axis/tcl/axis.tcl:1645 share/axis/tcl/axis.tcl:1658 msgid "Jog Speed:" msgstr "Schrittgeschwindigkeit:" -#: share/axis/tcl/axis.tcl:1600 ../share/axis/tcl/axis.tcl:1556 +#: share/axis/tcl/axis.tcl:1670 msgid "Max Velocity:" msgstr "Maximale Geschwindigkeit:" -#: share/axis/tcl/axis.tcl:1629 ../share/axis/tcl/axis.tcl:1585 +#: share/axis/tcl/axis.tcl:1699 msgid "Spindle Override:" msgstr "Spindelübersteuerung:" -#: share/axis/tcl/axis.tcl:1631 share/axis/tcl/axis.tcl:1671 -#: src/emc/usr_intf/pncconf/pncconf.glade:3141 -#: src/emc/usr_intf/pncconf/pncconf.glade:3154 -#: src/emc/usr_intf/pncconf/pncconf.glade:3167 -#: src/emc/usr_intf/pncconf/pncconf.glade:3180 -#: src/emc/usr_intf/pncconf/pncconf.glade:3193 -#: src/emc/usr_intf/pncconf/pncconf.glade:3206 -#: src/emc/usr_intf/pncconf/pncconf.glade:3219 -#: src/emc/usr_intf/pncconf/pncconf.glade:3232 -#: src/emc/usr_intf/pncconf/pncconf.glade:3345 -#: src/emc/usr_intf/pncconf/pncconf.glade:3358 -#: src/emc/usr_intf/pncconf/pncconf.glade:3371 -#: src/emc/usr_intf/pncconf/pncconf.glade:3384 -#: src/emc/usr_intf/pncconf/pncconf.glade:3397 -#: src/emc/usr_intf/pncconf/pncconf.glade:3410 -#: src/emc/usr_intf/pncconf/pncconf.glade:3516 -#: src/emc/usr_intf/pncconf/pncconf.glade:3527 -#: src/emc/usr_intf/pncconf/pncconf.glade:4022 -#: src/emc/usr_intf/pncconf/pncconf.glade:4035 -#: src/emc/usr_intf/pncconf/pncconf.glade:4048 -#: src/emc/usr_intf/pncconf/pncconf.glade:4061 -#: src/emc/usr_intf/pncconf/pncconf.glade:4074 -#: src/emc/usr_intf/pncconf/pncconf.glade:4087 -#: src/emc/usr_intf/pncconf/pncconf.glade:4100 -#: src/emc/usr_intf/pncconf/pncconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:4226 -#: src/emc/usr_intf/pncconf/pncconf.glade:4239 -#: src/emc/usr_intf/pncconf/pncconf.glade:4252 -#: src/emc/usr_intf/pncconf/pncconf.glade:4265 -#: src/emc/usr_intf/pncconf/pncconf.glade:4278 -#: src/emc/usr_intf/pncconf/pncconf.glade:4291 -#: src/emc/usr_intf/pncconf/pncconf.glade:4397 -#: src/emc/usr_intf/pncconf/pncconf.glade:4408 -#: src/emc/usr_intf/pncconf/pncconf.glade:4903 -#: src/emc/usr_intf/pncconf/pncconf.glade:4916 -#: src/emc/usr_intf/pncconf/pncconf.glade:4929 -#: src/emc/usr_intf/pncconf/pncconf.glade:4942 -#: src/emc/usr_intf/pncconf/pncconf.glade:4955 -#: src/emc/usr_intf/pncconf/pncconf.glade:4968 -#: src/emc/usr_intf/pncconf/pncconf.glade:4981 -#: src/emc/usr_intf/pncconf/pncconf.glade:4994 -#: src/emc/usr_intf/pncconf/pncconf.glade:5107 -#: src/emc/usr_intf/pncconf/pncconf.glade:5120 -#: src/emc/usr_intf/pncconf/pncconf.glade:5133 -#: src/emc/usr_intf/pncconf/pncconf.glade:5146 -#: src/emc/usr_intf/pncconf/pncconf.glade:5159 -#: src/emc/usr_intf/pncconf/pncconf.glade:5172 -#: src/emc/usr_intf/pncconf/pncconf.glade:5278 -#: src/emc/usr_intf/pncconf/pncconf.glade:5289 -#: src/emc/usr_intf/pncconf/pncconf.glade:5582 +#: share/axis/tcl/axis.tcl:1701 share/axis/tcl/axis.tcl:1741 +#: share/axis/tcl/axis.tcl:1779 src/emc/usr_intf/pncconf/pncconf.glade:2834 +#: src/emc/usr_intf/pncconf/pncconf.glade:2845 +#: src/emc/usr_intf/pncconf/pncconf.glade:2949 +#: src/emc/usr_intf/pncconf/pncconf.glade:2962 +#: src/emc/usr_intf/pncconf/pncconf.glade:2975 +#: src/emc/usr_intf/pncconf/pncconf.glade:2988 +#: src/emc/usr_intf/pncconf/pncconf.glade:3001 +#: src/emc/usr_intf/pncconf/pncconf.glade:3014 +#: src/emc/usr_intf/pncconf/pncconf.glade:3127 +#: src/emc/usr_intf/pncconf/pncconf.glade:3140 +#: src/emc/usr_intf/pncconf/pncconf.glade:3153 +#: src/emc/usr_intf/pncconf/pncconf.glade:3166 +#: src/emc/usr_intf/pncconf/pncconf.glade:3179 +#: src/emc/usr_intf/pncconf/pncconf.glade:3192 +#: src/emc/usr_intf/pncconf/pncconf.glade:3205 +#: src/emc/usr_intf/pncconf/pncconf.glade:3218 +#: src/emc/usr_intf/pncconf/pncconf.glade:3715 +#: src/emc/usr_intf/pncconf/pncconf.glade:3726 +#: src/emc/usr_intf/pncconf/pncconf.glade:3830 +#: src/emc/usr_intf/pncconf/pncconf.glade:3843 +#: src/emc/usr_intf/pncconf/pncconf.glade:3856 +#: src/emc/usr_intf/pncconf/pncconf.glade:3869 +#: src/emc/usr_intf/pncconf/pncconf.glade:3882 +#: src/emc/usr_intf/pncconf/pncconf.glade:3895 +#: src/emc/usr_intf/pncconf/pncconf.glade:4008 +#: src/emc/usr_intf/pncconf/pncconf.glade:4021 +#: src/emc/usr_intf/pncconf/pncconf.glade:4034 +#: src/emc/usr_intf/pncconf/pncconf.glade:4047 +#: src/emc/usr_intf/pncconf/pncconf.glade:4060 +#: src/emc/usr_intf/pncconf/pncconf.glade:4073 +#: src/emc/usr_intf/pncconf/pncconf.glade:4086 +#: src/emc/usr_intf/pncconf/pncconf.glade:4099 +#: src/emc/usr_intf/pncconf/pncconf.glade:4596 +#: src/emc/usr_intf/pncconf/pncconf.glade:4607 +#: src/emc/usr_intf/pncconf/pncconf.glade:4711 +#: src/emc/usr_intf/pncconf/pncconf.glade:4724 +#: src/emc/usr_intf/pncconf/pncconf.glade:4737 +#: src/emc/usr_intf/pncconf/pncconf.glade:4750 +#: src/emc/usr_intf/pncconf/pncconf.glade:4763 +#: src/emc/usr_intf/pncconf/pncconf.glade:4776 +#: src/emc/usr_intf/pncconf/pncconf.glade:4889 +#: src/emc/usr_intf/pncconf/pncconf.glade:4902 +#: src/emc/usr_intf/pncconf/pncconf.glade:4915 +#: src/emc/usr_intf/pncconf/pncconf.glade:4928 +#: src/emc/usr_intf/pncconf/pncconf.glade:4941 +#: src/emc/usr_intf/pncconf/pncconf.glade:4954 +#: src/emc/usr_intf/pncconf/pncconf.glade:4967 +#: src/emc/usr_intf/pncconf/pncconf.glade:4980 #: src/emc/usr_intf/pncconf/pncconf.glade:5631 -#: src/emc/usr_intf/pncconf/pncconf.glade:5641 ../share/axis/tcl/axis.tcl:1587 -#: ../share/axis/tcl/axis.tcl:1627 +#: src/emc/usr_intf/pncconf/pncconf.glade:5643 +#: src/emc/usr_intf/pncconf/pncconf.glade:5690 msgid "%" msgstr "%" -#: share/axis/tcl/axis.tcl:1711 +#: share/axis/tcl/axis.tcl:1777 +#, fuzzy +msgid "Rapid Override:" +msgstr "Spindelübersteuerung:" + +#: share/axis/tcl/axis.tcl:1819 #, fuzzy msgid "" -"LinuxCNC/AXIS version $version\n" +"Machinekit/AXIS version $version\n" "\n" "Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff " "Epler and Chris Radek.\n" "\n" "This is free software, and you are welcome to redistribute it under certain " -"conditions. See the file COPYING, included with LinuxCNC.\n" +"conditions. See the file COPYING, included with Machinekit.\n" "\n" -"Visit the LinuxCNC web site: " +"Visit the Machinekit web site: " msgstr "" "LinuxCNC/AXIS Version $version\n" "\n" @@ -5796,246 +7121,251 @@ msgstr "" "\n" "Besuchen Sie die LinuxCNC-Webseite: " -#: share/axis/tcl/axis.tcl:1739 ../share/axis/tcl/axis.tcl:1695 +#: share/axis/tcl/axis.tcl:1847 msgid "About AXIS" msgstr "Info über AXIS" -#: share/axis/tcl/axis.tcl:1768 ../share/axis/tcl/axis.tcl:1724 +#: share/axis/tcl/axis.tcl:1876 msgid "AXIS Quick Reference" msgstr "AXIS Tastaturbelegung" -#: share/axis/tcl/axis.tcl:1903 ../share/axis/tcl/axis.tcl:1860 -msgid "AXIS $::version on $::machine" +#: share/axis/tcl/axis.tcl:2017 +#, fuzzy +msgid "AXIS with MachineKit $::version on $::machine" msgstr "AXIS $::version auf $::machine" -#: share/axis/tcl/axis.tcl:1905 ../share/axis/tcl/axis.tcl:1862 +#: share/axis/tcl/axis.tcl:2019 msgid "(no file)" msgstr "(keine Datei)" -#: share/axis/tcl/axis.tcl:1976 share/axis/tcl/axis.tcl:1981 -#: ../share/axis/tcl/axis.tcl:1933 ../share/axis/tcl/axis.tcl:1938 +#: share/axis/tcl/axis.tcl:2091 share/axis/tcl/axis.tcl:2096 msgid "Position:" msgstr "Position:" -#: share/axis/tcl/axis.tcl:1978 ../share/axis/tcl/axis.tcl:1935 +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/gscreen/gscreen.py:3516 msgid "Machine" msgstr "absolut" -#: share/axis/tcl/axis.tcl:1978 src/emc/usr_intf/touchy/touchy.glade:155 -#: ../share/axis/tcl/axis.tcl:1935 +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/touchy/touchy.glade:155 msgid "Relative" msgstr "relativ" -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3329 -#: ../share/axis/tcl/axis.tcl:1936 +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3329 msgid "Actual" msgstr "aktuell" -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3318 -#: ../share/axis/tcl/axis.tcl:1936 +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3318 msgid "Commanded" msgstr "erwartet" -#: share/axis/tcl/axis.tcl:2032 share/axis/tcl/axis.tcl:2203 -#: ../share/axis/tcl/axis.tcl:1989 ../share/axis/tcl/axis.tcl:2156 +#: share/axis/tcl/axis.tcl:2154 share/axis/tcl/axis.tcl:2328 msgid "Joint:" msgstr "Achse:" -#: share/axis/tcl/axis.tcl:2338 ../share/axis/tcl/axis.tcl:2287 +#: share/axis/tcl/axis.tcl:2463 msgid "Turn spindle counterclockwise [F10]" msgstr "Spindel gegen Uhrzeigersinn [F10]" -#: share/axis/tcl/axis.tcl:2339 ../share/axis/tcl/axis.tcl:2288 +#: share/axis/tcl/axis.tcl:2464 msgid "Turn spindle clockwise [F9]" msgstr "Spindel im Uhrzeigersinn [F9]" -#: share/axis/tcl/axis.tcl:2340 ../share/axis/tcl/axis.tcl:2289 +#: share/axis/tcl/axis.tcl:2465 msgid "Stop spindle [F9/F10]" msgstr "Spindel anhalten [F9/F10]" -#: share/axis/tcl/axis.tcl:2341 ../share/axis/tcl/axis.tcl:2290 +#: share/axis/tcl/axis.tcl:2466 msgid "Turn spindle Faster [F12]" msgstr "Spindel schneller [F12]" -#: share/axis/tcl/axis.tcl:2342 ../share/axis/tcl/axis.tcl:2291 +#: share/axis/tcl/axis.tcl:2467 msgid "Turn spindle Slower [F11]" msgstr "Spindel langsamer [F12]" -#: share/axis/tcl/axis.tcl:2343 ../share/axis/tcl/axis.tcl:2292 +#: share/axis/tcl/axis.tcl:2468 msgid "Turn spindle brake on [Shift-B] or off [B]" msgstr "Spindelbremse an [Umsch.-B] oder aus [B]" -#: share/axis/tcl/axis.tcl:2344 ../share/axis/tcl/axis.tcl:2293 +#: share/axis/tcl/axis.tcl:2469 msgid "Turn flood on or off [F8]" msgstr "Kühlmittel an/aus [F8]" -#: share/axis/tcl/axis.tcl:2345 ../share/axis/tcl/axis.tcl:2294 +#: share/axis/tcl/axis.tcl:2470 msgid "Turn mist on or off [F7]" msgstr "Kühlnebel an/aus [F7]" -#: share/axis/tcl/axis.tcl:2346 ../share/axis/tcl/axis.tcl:2295 +#: share/axis/tcl/axis.tcl:2471 msgid "Send active axis home [Home]" msgstr "Referenzfahrt mit der aktiven Achse [Pos1]" -#: share/axis/tcl/axis.tcl:2347 ../share/axis/tcl/axis.tcl:2296 +#: share/axis/tcl/axis.tcl:2472 msgid "Set G54 offset for active axis [End]" msgstr "Nullpunktverschiebung für die aktive Achse setzen [Ende]" -#: share/axis/tcl/axis.tcl:2348 ../share/axis/tcl/axis.tcl:2297 +#: share/axis/tcl/axis.tcl:2473 msgid "Activate axis [X]" msgstr "Aktiviere Achse [X]" -#: share/axis/tcl/axis.tcl:2349 ../share/axis/tcl/axis.tcl:2298 +#: share/axis/tcl/axis.tcl:2474 msgid "Activate axis [Y]" msgstr "Aktiviere Achse [Y]" -#: share/axis/tcl/axis.tcl:2350 ../share/axis/tcl/axis.tcl:2299 +#: share/axis/tcl/axis.tcl:2475 msgid "Activate axis [Z]" msgstr "Aktiviere Achse [Z]" -#: share/axis/tcl/axis.tcl:2351 ../share/axis/tcl/axis.tcl:2300 +#: share/axis/tcl/axis.tcl:2476 msgid "Activate axis [A]" msgstr "Aktiviere Achse [A]" -#: share/axis/tcl/axis.tcl:2352 ../share/axis/tcl/axis.tcl:2301 +#: share/axis/tcl/axis.tcl:2477 msgid "Activate axis [4]" msgstr "Aktiviere Achse [4]" -#: share/axis/tcl/axis.tcl:2353 ../share/axis/tcl/axis.tcl:2302 +#: share/axis/tcl/axis.tcl:2478 msgid "Activate axis [5]" msgstr "Aktiviere Achse [5]" -#: share/axis/tcl/axis.tcl:2354 share/axis/tcl/axis.tcl:2355 -#: ../share/axis/tcl/axis.tcl:2303 ../share/axis/tcl/axis.tcl:2304 +#: share/axis/tcl/axis.tcl:2479 share/axis/tcl/axis.tcl:2480 msgid "Jog selected axis" msgstr "Aktive Achse verfahren" -#: share/axis/tcl/axis.tcl:2357 ../share/axis/tcl/axis.tcl:2306 +#: share/axis/tcl/axis.tcl:2482 msgid "Temporarily allow jogging outside machine limits [L]" msgstr "Erlaubt über die Endschalter zu verfahren [L]" -#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -#: emc/usr_intf/stepconf/stepconf.py:146 emc/usr_intf/pncconf/pncconf.py:237 +#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:47 msgid "Spindle CW" msgstr "Spindel rechts" -#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -#: emc/usr_intf/stepconf/stepconf.py:146 emc/usr_intf/pncconf/pncconf.py:237 +#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:48 msgid "Spindle CCW" msgstr "Spindel links" #: src/emc/usr_intf/touchy/mdi.py:50 #, fuzzy +msgid "Set tool number" +msgstr "Anwenden" + +#: src/emc/usr_intf/touchy/mdi.py:51 src/emc/usr_intf/gscreen/mdi.py:50 +#, fuzzy msgid "Input control" msgstr "Manuelle Kontrolle" -#: src/emc/usr_intf/touchy/mdi.py:53 src/emc/usr_intf/touchy/mdi.py:54 +#: src/emc/usr_intf/touchy/mdi.py:54 src/emc/usr_intf/touchy/mdi.py:55 +#: src/emc/usr_intf/gscreen/mdi.py:53 src/emc/usr_intf/gscreen/mdi.py:54 msgid "Straight rapid" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:55 src/emc/usr_intf/touchy/mdi.py:56 +#: src/emc/usr_intf/touchy/mdi.py:56 src/emc/usr_intf/touchy/mdi.py:57 +#: src/emc/usr_intf/gscreen/mdi.py:55 src/emc/usr_intf/gscreen/mdi.py:56 msgid "Straight feed" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:57 src/emc/usr_intf/touchy/mdi.py:58 +#: src/emc/usr_intf/touchy/mdi.py:58 src/emc/usr_intf/touchy/mdi.py:59 +#: src/emc/usr_intf/gscreen/mdi.py:57 src/emc/usr_intf/gscreen/mdi.py:58 msgid "Arc CW" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:59 src/emc/usr_intf/touchy/mdi.py:60 +#: src/emc/usr_intf/touchy/mdi.py:60 src/emc/usr_intf/touchy/mdi.py:61 +#: src/emc/usr_intf/gscreen/mdi.py:59 src/emc/usr_intf/gscreen/mdi.py:60 msgid "Arc CCW" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:61 src/emc/usr_intf/touchy/mdi.py:62 +#: src/emc/usr_intf/touchy/mdi.py:62 src/emc/usr_intf/touchy/mdi.py:63 +#: src/emc/usr_intf/gscreen/mdi.py:61 src/emc/usr_intf/gscreen/mdi.py:62 msgid "Dwell" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:63 +#: src/emc/usr_intf/touchy/mdi.py:64 src/emc/usr_intf/gscreen/mdi.py:63 #, fuzzy msgid "Setup" msgstr "Optionen ausbl." -#: src/emc/usr_intf/touchy/mdi.py:64 +#: src/emc/usr_intf/touchy/mdi.py:65 src/emc/usr_intf/gscreen/mdi.py:64 #, fuzzy msgid "Spindle synchronized feed" msgstr "Spindel zurück" -#: src/emc/usr_intf/touchy/mdi.py:65 +#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:65 msgid "Rigid tap" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/touchy/mdi.py:67 -#: src/emc/usr_intf/touchy/mdi.py:68 src/emc/usr_intf/touchy/mdi.py:69 +#: src/emc/usr_intf/touchy/mdi.py:67 src/emc/usr_intf/touchy/mdi.py:68 +#: src/emc/usr_intf/touchy/mdi.py:69 src/emc/usr_intf/touchy/mdi.py:70 +#: src/emc/usr_intf/gscreen/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:67 +#: src/emc/usr_intf/gscreen/mdi.py:68 src/emc/usr_intf/gscreen/mdi.py:69 #, fuzzy msgid "Probe" msgstr "Sensor" -#: src/emc/usr_intf/touchy/mdi.py:70 +#: src/emc/usr_intf/touchy/mdi.py:71 src/emc/usr_intf/gscreen/mdi.py:70 msgid "Radius compensation left" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:71 +#: src/emc/usr_intf/touchy/mdi.py:72 src/emc/usr_intf/gscreen/mdi.py:71 msgid "Radius compensation right" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:72 +#: src/emc/usr_intf/touchy/mdi.py:73 src/emc/usr_intf/gscreen/mdi.py:72 msgid "Radius compensation left, immediate" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:73 +#: src/emc/usr_intf/touchy/mdi.py:74 src/emc/usr_intf/gscreen/mdi.py:73 msgid "Radius compensation right, immediate" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:74 +#: src/emc/usr_intf/touchy/mdi.py:75 src/emc/usr_intf/gscreen/mdi.py:74 #, fuzzy msgid "Tool length offset" msgstr "Werkzeug-Längen-Index zu groß" -#: src/emc/usr_intf/touchy/mdi.py:75 +#: src/emc/usr_intf/touchy/mdi.py:76 src/emc/usr_intf/gscreen/mdi.py:75 #, fuzzy msgid "Tool length offset immediate" msgstr "Werkzeug-Längen-Index zu groß" -#: src/emc/usr_intf/touchy/mdi.py:76 +#: src/emc/usr_intf/touchy/mdi.py:77 src/emc/usr_intf/gscreen/mdi.py:76 msgid "Motion in unoffset coordinates" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:77 +#: src/emc/usr_intf/touchy/mdi.py:78 src/emc/usr_intf/gscreen/mdi.py:77 #, fuzzy msgid "Continuous mode" msgstr "Durchgehende Bewegung" -#: src/emc/usr_intf/touchy/mdi.py:79 +#: src/emc/usr_intf/touchy/mdi.py:80 src/emc/usr_intf/gscreen/mdi.py:79 msgid "Drill" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:80 +#: src/emc/usr_intf/touchy/mdi.py:81 src/emc/usr_intf/gscreen/mdi.py:80 msgid "Drill with dwell" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:81 +#: src/emc/usr_intf/touchy/mdi.py:82 src/emc/usr_intf/gscreen/mdi.py:81 msgid "Peck drill" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:82 +#: src/emc/usr_intf/touchy/mdi.py:83 src/emc/usr_intf/gscreen/mdi.py:82 msgid "Chip-break drill" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:83 +#: src/emc/usr_intf/touchy/mdi.py:84 src/emc/usr_intf/gscreen/mdi.py:83 msgid "Bore" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:84 +#: src/emc/usr_intf/touchy/mdi.py:85 src/emc/usr_intf/gscreen/mdi.py:84 msgid "Bore with dwell" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:85 +#: src/emc/usr_intf/touchy/mdi.py:86 src/emc/usr_intf/gscreen/mdi.py:85 #, fuzzy msgid "Offset all coordinate systems" msgstr "Koordinatens_ystem" -#: src/emc/usr_intf/touchy/mdi.py:86 +#: src/emc/usr_intf/touchy/mdi.py:87 src/emc/usr_intf/gscreen/mdi.py:86 #, fuzzy msgid "CSS Mode" msgstr "Modus" @@ -6057,7 +7387,7 @@ msgstr "" msgid "LinuxCNC/Touchy" msgstr "" -#. # Touchy is Copyright (c) 2009 Chris Radek # # Touchy 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 2 of the License, or # (at your option) any later version. # # Touchy 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. +#. # Touchy is Copyright (c) 2009 Chris Radek # # Touchy 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 2 of the License, or # (at your option) any later version. # # Touchy 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. #: src/emc/usr_intf/touchy/touchy.glade:11 msgid "window1" msgstr "" @@ -6095,11 +7425,20 @@ msgid "zd" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:131 +#: src/emc/usr_intf/gscreen/gscreen.glade:85 +#: src/emc/usr_intf/gscreen/gscreen.glade:213 +#: src/emc/usr_intf/gscreen/gscreen.glade:343 +#: src/emc/usr_intf/gscreen/gscreen.glade:471 +#: src/emc/usr_intf/gscreen/gscreen.glade:599 +#: src/emc/usr_intf/gscreen/gscreen.glade:727 +#: src/emc/usr_intf/gscreen/gscreen.glade:855 +#: src/emc/usr_intf/gscreen/gscreen.glade:983 +#: src/emc/usr_intf/gscreen/gscreen.glade:1111 msgid "DTG" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:143 -#: src/emc/usr_intf/pncconf/pncconf.glade:59755 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Absolute" msgstr "" @@ -6186,6 +7525,9 @@ msgid "Estop Reset" msgstr "Notaus gesetzt" #: src/emc/usr_intf/touchy/touchy.glade:459 +#: src/emc/usr_intf/stepconf/pport1.glade:21 +#: src/emc/usr_intf/stepconf/pport2.glade:1409 +#: src/emc/usr_intf/gscreen/gscreen.glade:2442 #, fuzzy msgid "Estop" msgstr "Ausprobieren" @@ -6221,7 +7563,6 @@ msgid "Unhome Selected" msgstr "Referenzfahrt aufheben bei allen Achsen" #: src/emc/usr_intf/touchy/touchy.glade:625 -#: emc/usr_intf/pncconf/pncconf.glade:938 #, fuzzy msgid "Homing" msgstr "Re_ferenzfahrt" @@ -6240,76 +7581,7 @@ msgid "." msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:963 -#: src/emc/usr_intf/pncconf/pncconf.glade:60883 -#: src/emc/usr_intf/pncconf/pncconf.glade:60895 -#: src/emc/usr_intf/pncconf/pncconf.glade:61017 -#: src/emc/usr_intf/pncconf/pncconf.glade:61029 -#: src/emc/usr_intf/pncconf/pncconf.glade:61041 -#: src/emc/usr_intf/pncconf/pncconf.glade:61053 -#: src/emc/usr_intf/pncconf/pncconf.glade:61065 -#: src/emc/usr_intf/pncconf/pncconf.glade:61077 -#: src/emc/usr_intf/pncconf/pncconf.glade:62040 -#: src/emc/usr_intf/pncconf/pncconf.glade:62052 -#: src/emc/usr_intf/pncconf/pncconf.glade:62064 -#: src/emc/usr_intf/pncconf/pncconf.glade:62076 -#: src/emc/usr_intf/pncconf/pncconf.glade:62088 -#: src/emc/usr_intf/pncconf/pncconf.glade:62100 -#: src/emc/usr_intf/pncconf/pncconf.glade:62222 -#: src/emc/usr_intf/pncconf/pncconf.glade:62234 -#: src/emc/usr_intf/pncconf/pncconf.glade:63069 -#: src/emc/usr_intf/pncconf/pncconf.glade:63081 -#: src/emc/usr_intf/pncconf/pncconf.glade:63203 -#: src/emc/usr_intf/pncconf/pncconf.glade:63215 -#: src/emc/usr_intf/pncconf/pncconf.glade:63227 -#: src/emc/usr_intf/pncconf/pncconf.glade:63239 -#: src/emc/usr_intf/pncconf/pncconf.glade:63251 -#: src/emc/usr_intf/pncconf/pncconf.glade:63263 -#: src/emc/usr_intf/pncconf/pncconf.glade:64226 -#: src/emc/usr_intf/pncconf/pncconf.glade:64238 -#: src/emc/usr_intf/pncconf/pncconf.glade:64250 -#: src/emc/usr_intf/pncconf/pncconf.glade:64262 -#: src/emc/usr_intf/pncconf/pncconf.glade:64274 -#: src/emc/usr_intf/pncconf/pncconf.glade:64286 -#: src/emc/usr_intf/pncconf/pncconf.glade:64408 -#: src/emc/usr_intf/pncconf/pncconf.glade:64420 -#: src/emc/usr_intf/pncconf/pncconf.glade:65231 -#: src/emc/usr_intf/pncconf/pncconf.glade:65243 -#: src/emc/usr_intf/pncconf/pncconf.glade:65359 -#: src/emc/usr_intf/pncconf/pncconf.glade:65371 -#: src/emc/usr_intf/pncconf/pncconf.glade:65383 -#: src/emc/usr_intf/pncconf/pncconf.glade:65395 -#: src/emc/usr_intf/pncconf/pncconf.glade:65407 -#: src/emc/usr_intf/pncconf/pncconf.glade:65419 -#: src/emc/usr_intf/pncconf/pncconf.glade:67091 -#: emc/usr_intf/pncconf/pncconf.glade:1811 -#: emc/usr_intf/pncconf/pncconf.glade:16127 -#: emc/usr_intf/pncconf/pncconf.glade:18209 -#: emc/usr_intf/pncconf/pncconf.glade:20693 -#: emc/usr_intf/pncconf/pncconf.glade:20705 -#: emc/usr_intf/pncconf/pncconf.glade:20717 -#: emc/usr_intf/pncconf/pncconf.glade:20729 -#: emc/usr_intf/pncconf/pncconf.glade:20741 -#: emc/usr_intf/pncconf/pncconf.glade:20753 -#: emc/usr_intf/pncconf/pncconf.glade:20869 -#: emc/usr_intf/pncconf/pncconf.glade:20881 -#: emc/usr_intf/pncconf/pncconf.glade:21700 -#: emc/usr_intf/pncconf/pncconf.glade:21712 -#: emc/usr_intf/pncconf/pncconf.glade:21724 -#: emc/usr_intf/pncconf/pncconf.glade:21736 -#: emc/usr_intf/pncconf/pncconf.glade:21748 -#: emc/usr_intf/pncconf/pncconf.glade:21760 -#: emc/usr_intf/pncconf/pncconf.glade:22400 -#: emc/usr_intf/pncconf/pncconf.glade:22412 -#: emc/usr_intf/pncconf/pncconf.glade:22424 -#: emc/usr_intf/pncconf/pncconf.glade:22436 -#: emc/usr_intf/pncconf/pncconf.glade:22448 -#: emc/usr_intf/pncconf/pncconf.glade:22460 -#: emc/usr_intf/pncconf/pncconf.glade:23100 -#: emc/usr_intf/pncconf/pncconf.glade:23112 -#: emc/usr_intf/pncconf/pncconf.glade:23124 -#: emc/usr_intf/pncconf/pncconf.glade:23136 -#: emc/usr_intf/pncconf/pncconf.glade:23148 -#: emc/usr_intf/pncconf/pncconf.glade:23160 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "0" msgstr "" @@ -6322,10 +7594,6 @@ msgid "2" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:1014 -#: emc/usr_intf/pncconf/pncconf.glade:15587 -#: emc/usr_intf/pncconf/pncconf.glade:15612 -#: emc/usr_intf/pncconf/pncconf.glade:17770 -#: emc/usr_intf/pncconf/pncconf.glade:17794 msgid "1" msgstr "" @@ -6395,6 +7663,7 @@ msgid "label26" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:1539 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4226 #, fuzzy msgid "Spindle" msgstr "Spindelencoder Index" @@ -6445,17 +7714,8 @@ msgid "Distance:" msgstr "Vorschub-Weg:" #: src/emc/usr_intf/touchy/touchy.glade:2526 -#: src/emc/usr_intf/stepconf/stepconf.glade:4148 -#: src/emc/usr_intf/pncconf/pncconf.glade:60476 -#: src/emc/usr_intf/pncconf/pncconf.glade:61571 -#: src/emc/usr_intf/pncconf/pncconf.glade:62664 -#: src/emc/usr_intf/pncconf/pncconf.glade:63757 -#: src/emc/usr_intf/pncconf/pncconf.glade:64856 -#: emc/usr_intf/stepconf/stepconf.glade:4247 -#: emc/usr_intf/pncconf/pncconf.glade:20313 -#: emc/usr_intf/pncconf/pncconf.glade:21336 -#: emc/usr_intf/pncconf/pncconf.glade:22036 -#: emc/usr_intf/pncconf/pncconf.glade:22736 +#: src/emc/usr_intf/stepconf/main_page.glade:23 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Velocity:" msgstr "Geschwindigkeit:" @@ -6578,6 +7838,7 @@ msgid "" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:3009 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6414 #, fuzzy msgid "Status" msgstr "Status:" @@ -6644,6 +7905,8 @@ msgid "Display Options" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:3286 +#: src/emc/usr_intf/stepconf/base.glade:867 +#: src/emc/usr_intf/gscreen/gscreen.glade:3664 msgid "Inch" msgstr "" @@ -6688,14 +7951,17 @@ msgid "Program Options" msgstr "Re_ferenzfahrt" #: src/emc/usr_intf/touchy/touchy.glade:3531 +#: src/emc/usr_intf/gscreen/gscreen.glade:2200 msgid "Preferences" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:3567 +#: src/emc/usr_intf/gscreen/gscreen.glade:1425 msgid "FO: 100%" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:3582 +#: src/emc/usr_intf/gscreen/gscreen.glade:1437 msgid "SO: 100%" msgstr "" @@ -6707,61 +7973,64 @@ msgstr "" msgid "Jogging" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3637 +#: src/emc/usr_intf/touchy/touchy.glade:3624 +msgid "Start Point" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:3651 msgid ".01" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3650 +#: src/emc/usr_intf/touchy/touchy.glade:3664 msgid ".001" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3666 +#: src/emc/usr_intf/touchy/touchy.glade:3680 msgid ".0001" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3694 +#: src/emc/usr_intf/touchy/touchy.glade:3708 msgid " X " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3706 +#: src/emc/usr_intf/touchy/touchy.glade:3720 msgid " Y " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3721 +#: src/emc/usr_intf/touchy/touchy.glade:3735 msgid " Z " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3736 +#: src/emc/usr_intf/touchy/touchy.glade:3750 msgid " A " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3752 +#: src/emc/usr_intf/touchy/touchy.glade:3766 msgid " B " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3770 +#: src/emc/usr_intf/touchy/touchy.glade:3784 msgid " C " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3788 +#: src/emc/usr_intf/touchy/touchy.glade:3802 msgid " U " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3804 +#: src/emc/usr_intf/touchy/touchy.glade:3818 msgid " V " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3822 +#: src/emc/usr_intf/touchy/touchy.glade:3836 msgid " W " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3855 +#: src/emc/usr_intf/touchy/touchy.glade:3869 #, fuzzy msgid "Handwheel" msgstr "Re_ferenzfahrt" -#: src/emc/usr_intf/stepconf/stepconf.py:53 -#: emc/usr_intf/stepconf/stepconf.py:53 +#: src/emc/usr_intf/stepconf/stepconf.py:57 msgid "" "Stepconf encountered an error. The following information may be useful in " "troubleshooting:\n" @@ -6771,448 +8040,513 @@ msgstr "" "Informationen können bei der Behebung hilfreich sein:\n" "\n" -#: src/emc/usr_intf/stepconf/stepconf.py:70 -#: src/emc/usr_intf/pncconf/pncconf.py:133 -#: emc/usr_intf/stepconf/stepconf.py:71 emc/usr_intf/pncconf/pncconf.py:95 +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#, fuzzy +msgid "Stepconf" +msgstr "Schritt" + +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#: src/emc/usr_intf/stepconf/stepconf.py:217 +#: src/emc/usr_intf/stepconf/main_page.glade:557 +#: src/emc/usr_intf/gscreen/gscreen.py:3414 +#: src/emc/usr_intf/gscreen/gscreen.py:3415 +#: src/emc/usr_intf/gscreen/gscreen.glade:4043 +#, fuzzy +msgid "Start" +msgstr "Anfang an" + +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Base Information" +msgstr "Grundlegende Informationen" + +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Parallel Port 1" +msgstr "Konfiguration der Druckerschnittstelle" + +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Parallel Port 2" +msgstr "Konfiguration der Druckerschnittstelle" + +#: src/emc/usr_intf/stepconf/stepconf.py:130 +#, fuzzy +msgid "Options" +msgstr "SPS-Optionen" + +#: src/emc/usr_intf/stepconf/stepconf.py:130 +#, fuzzy +msgid "Axis X" +msgstr "Achse" + +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis Y" +msgstr "Achse" + +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis Z" +msgstr "Achse" + +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis A" +msgstr "Achse" + +#: src/emc/usr_intf/stepconf/stepconf.py:132 +#: src/emc/usr_intf/pncconf/pncconf.py:378 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#, fuzzy +msgid "Spindle" +msgstr "Spindel:" + +#: src/emc/usr_intf/stepconf/stepconf.py:132 +msgid "Almost Done" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:136 +#: src/emc/usr_intf/pncconf/pncconf.py:135 msgid "Gecko 201" msgstr "Gecko 201" -#: src/emc/usr_intf/stepconf/stepconf.py:71 -#: src/emc/usr_intf/pncconf/pncconf.py:134 -#: emc/usr_intf/stepconf/stepconf.py:72 emc/usr_intf/pncconf/pncconf.py:96 +#: src/emc/usr_intf/stepconf/stepconf.py:137 +#: src/emc/usr_intf/pncconf/pncconf.py:136 msgid "Gecko 202" msgstr "Gecko 202" -#: src/emc/usr_intf/stepconf/stepconf.py:72 -#: src/emc/usr_intf/pncconf/pncconf.py:135 -#: emc/usr_intf/stepconf/stepconf.py:73 emc/usr_intf/pncconf/pncconf.py:97 +#: src/emc/usr_intf/stepconf/stepconf.py:138 +#: src/emc/usr_intf/pncconf/pncconf.py:137 msgid "Gecko 203v" msgstr "Gecko 203v" -#: src/emc/usr_intf/stepconf/stepconf.py:73 -#: src/emc/usr_intf/pncconf/pncconf.py:136 -#: emc/usr_intf/stepconf/stepconf.py:74 emc/usr_intf/pncconf/pncconf.py:98 +#: src/emc/usr_intf/stepconf/stepconf.py:139 +#: src/emc/usr_intf/pncconf/pncconf.py:138 msgid "Gecko 210" msgstr "Gecko 210" -#: src/emc/usr_intf/stepconf/stepconf.py:74 -#: src/emc/usr_intf/pncconf/pncconf.py:137 -#: emc/usr_intf/stepconf/stepconf.py:75 emc/usr_intf/pncconf/pncconf.py:99 +#: src/emc/usr_intf/stepconf/stepconf.py:140 +#: src/emc/usr_intf/pncconf/pncconf.py:139 msgid "Gecko 212" msgstr "Gecko 212" -#: src/emc/usr_intf/stepconf/stepconf.py:75 -#: src/emc/usr_intf/pncconf/pncconf.py:138 -#: emc/usr_intf/stepconf/stepconf.py:76 emc/usr_intf/pncconf/pncconf.py:100 +#: src/emc/usr_intf/stepconf/stepconf.py:141 +#: src/emc/usr_intf/pncconf/pncconf.py:140 msgid "Gecko 320" msgstr "Gecko 320" -#: src/emc/usr_intf/stepconf/stepconf.py:76 -#: src/emc/usr_intf/pncconf/pncconf.py:139 -#: emc/usr_intf/stepconf/stepconf.py:77 emc/usr_intf/pncconf/pncconf.py:101 +#: src/emc/usr_intf/stepconf/stepconf.py:142 +#: src/emc/usr_intf/pncconf/pncconf.py:141 msgid "Gecko 540" msgstr "Gecko 540" -#: src/emc/usr_intf/stepconf/stepconf.py:77 -#: src/emc/usr_intf/pncconf/pncconf.py:140 -#: emc/usr_intf/stepconf/stepconf.py:78 emc/usr_intf/pncconf/pncconf.py:102 +#: src/emc/usr_intf/stepconf/stepconf.py:143 +#: src/emc/usr_intf/pncconf/pncconf.py:142 msgid "L297" msgstr "L297" -#: src/emc/usr_intf/stepconf/stepconf.py:78 -#: src/emc/usr_intf/pncconf/pncconf.py:141 -#: emc/usr_intf/stepconf/stepconf.py:79 emc/usr_intf/pncconf/pncconf.py:103 +#: src/emc/usr_intf/stepconf/stepconf.py:144 +#: src/emc/usr_intf/pncconf/pncconf.py:143 msgid "PMDX-150" msgstr "PMDX-150" -#: src/emc/usr_intf/stepconf/stepconf.py:79 -#: src/emc/usr_intf/pncconf/pncconf.py:142 -#: emc/usr_intf/stepconf/stepconf.py:80 emc/usr_intf/pncconf/pncconf.py:104 +#: src/emc/usr_intf/stepconf/stepconf.py:145 +#: src/emc/usr_intf/stepconf/pport1.glade:32 +#: src/emc/usr_intf/pncconf/pncconf.py:144 msgid "Sherline" msgstr "Sherline" -#: src/emc/usr_intf/stepconf/stepconf.py:80 -#: src/emc/usr_intf/pncconf/pncconf.py:143 -#: emc/usr_intf/stepconf/stepconf.py:81 emc/usr_intf/pncconf/pncconf.py:105 +#: src/emc/usr_intf/stepconf/stepconf.py:146 +#: src/emc/usr_intf/pncconf/pncconf.py:145 msgid "Xylotex 8S-3" msgstr "Xylotex 8S-3" -#: src/emc/usr_intf/stepconf/stepconf.py:81 -#: src/emc/usr_intf/pncconf/pncconf.py:144 -#: emc/usr_intf/stepconf/stepconf.py:82 emc/usr_intf/pncconf/pncconf.py:106 +#: src/emc/usr_intf/stepconf/stepconf.py:147 +#: src/emc/usr_intf/pncconf/pncconf.py:146 msgid "Parker-Compumotor oem750" msgstr "Parker-Compumotor oem750" -#: src/emc/usr_intf/stepconf/stepconf.py:82 -#: src/emc/usr_intf/pncconf/pncconf.py:145 -#: emc/usr_intf/stepconf/stepconf.py:83 emc/usr_intf/pncconf/pncconf.py:107 +#: src/emc/usr_intf/stepconf/stepconf.py:148 +#: src/emc/usr_intf/pncconf/pncconf.py:147 msgid "JVL-SMD41 or 42" msgstr "JVL-SMD41 oder 42" -#: src/emc/usr_intf/stepconf/stepconf.py:83 -#: src/emc/usr_intf/pncconf/pncconf.py:146 -#: emc/usr_intf/stepconf/stepconf.py:84 emc/usr_intf/pncconf/pncconf.py:108 +#: src/emc/usr_intf/stepconf/stepconf.py:149 +#: src/emc/usr_intf/pncconf/pncconf.py:148 msgid "Hobbycnc Pro Chopper" msgstr "Hobbycnc Pro Chopper" -#: src/emc/usr_intf/stepconf/stepconf.py:84 -#: src/emc/usr_intf/pncconf/pncconf.py:147 -#: emc/usr_intf/stepconf/stepconf.py:85 emc/usr_intf/pncconf/pncconf.py:109 -msgid "Keling 4030" +#: src/emc/usr_intf/stepconf/stepconf.py:150 +#, fuzzy +msgid "Kelling 4030" msgstr "Keling 4030" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -#: emc/usr_intf/stepconf/stepconf.py:144 +#: src/emc/usr_intf/stepconf/stepconf.py:151 +msgid "Leadshine Series" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:190 msgid "X Step" msgstr "X Schritt" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -#: emc/usr_intf/stepconf/stepconf.py:144 +#: src/emc/usr_intf/stepconf/stepconf.py:190 msgid "X Direction" msgstr "X Richtung" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -#: emc/usr_intf/stepconf/stepconf.py:144 +#: src/emc/usr_intf/stepconf/stepconf.py:190 msgid "Y Step" msgstr "Y Schritt" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -#: emc/usr_intf/stepconf/stepconf.py:144 +#: src/emc/usr_intf/stepconf/stepconf.py:190 msgid "Y Direction" msgstr "Y Richtung" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -#: emc/usr_intf/stepconf/stepconf.py:145 +#: src/emc/usr_intf/stepconf/stepconf.py:191 msgid "Z Step" msgstr "Z Schritt" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -#: emc/usr_intf/stepconf/stepconf.py:145 +#: src/emc/usr_intf/stepconf/stepconf.py:191 msgid "Z Direction" msgstr "Z Richtung" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -#: emc/usr_intf/stepconf/stepconf.py:145 +#: src/emc/usr_intf/stepconf/stepconf.py:191 msgid "A Step" msgstr "A Schritt" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -#: emc/usr_intf/stepconf/stepconf.py:145 +#: src/emc/usr_intf/stepconf/stepconf.py:191 msgid "A Direction" msgstr "A Richtung" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -#: emc/usr_intf/stepconf/stepconf.py:146 emc/usr_intf/pncconf/pncconf.py:237 +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 msgid "Spindle ON" msgstr "Spindel ein" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#: emc/usr_intf/stepconf/stepconf.py:146 +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:488 msgid "Spindle PWM" msgstr "Spindel PWM" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -#: emc/usr_intf/stepconf/stepconf.py:146 emc/usr_intf/pncconf/pncconf.py:237 +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 msgid "Spindle Brake" msgstr "Spindelbremse" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 -#: emc/usr_intf/stepconf/stepconf.py:147 emc/usr_intf/pncconf/pncconf.py:238 +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 msgid "Coolant Mist" msgstr "Kühlnebel" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 -#: emc/usr_intf/stepconf/stepconf.py:147 emc/usr_intf/pncconf/pncconf.py:238 +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 msgid "Coolant Flood" msgstr "Kühlmittel" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:442 -#: emc/usr_intf/stepconf/stepconf.py:147 emc/usr_intf/pncconf/pncconf.py:238 +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:370 msgid "ESTOP Out" msgstr "NOTAUS Ausgang" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: emc/usr_intf/stepconf/stepconf.py:147 emc/usr_intf/pncconf/pncconf.py:238 +#: src/emc/usr_intf/stepconf/stepconf.py:193 msgid "Amplifier Enable" msgstr "Endstufe aktivieren" -#: src/emc/usr_intf/stepconf/stepconf.py:157 -#: src/emc/usr_intf/pncconf/pncconf.py:443 -#: emc/usr_intf/stepconf/stepconf.py:148 emc/usr_intf/pncconf/pncconf.py:239 +#: src/emc/usr_intf/stepconf/stepconf.py:194 +#: src/emc/usr_intf/pncconf/pncconf.py:371 msgid "Charge Pump" msgstr "Ladungspumpe" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -#: emc/usr_intf/stepconf/stepconf.py:149 emc/usr_intf/pncconf/pncconf.py:240 +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 msgid "Digital out 0" msgstr "Digitaler Ausgang 0" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -#: emc/usr_intf/stepconf/stepconf.py:149 emc/usr_intf/pncconf/pncconf.py:240 +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 msgid "Digital out 1" msgstr "Digitaler Ausgang 1" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -#: emc/usr_intf/stepconf/stepconf.py:149 emc/usr_intf/pncconf/pncconf.py:240 +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 msgid "Digital out 2" msgstr "Digitaler Ausgang 2" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -#: emc/usr_intf/stepconf/stepconf.py:149 emc/usr_intf/pncconf/pncconf.py:240 +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 msgid "Digital out 3" msgstr "Digitaler Ausgang 1" -#: src/emc/usr_intf/stepconf/stepconf.py:159 -#: src/emc/usr_intf/stepconf/stepconf.py:178 -#: emc/usr_intf/stepconf/stepconf.py:150 emc/usr_intf/stepconf/stepconf.py:169 +#: src/emc/usr_intf/stepconf/stepconf.py:196 +#: src/emc/usr_intf/stepconf/stepconf.py:215 +#: src/emc/usr_intf/stepconf/pport1.glade:18 +#: src/emc/usr_intf/stepconf/pport2.glade:1406 +#: src/emc/usr_intf/stepconf/pport2.glade:1420 msgid "Unused" msgstr "Unbenutzt" -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 -#: emc/usr_intf/stepconf/stepconf.py:152 emc/usr_intf/pncconf/pncconf.py:242 +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 msgid "ESTOP In" msgstr "NOTAUS Eingang" -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 -#: emc/usr_intf/stepconf/stepconf.py:152 emc/usr_intf/pncconf/pncconf.py:242 +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 msgid "Probe In" msgstr "Sensor" -#: src/emc/usr_intf/stepconf/stepconf.py:162 -#: emc/usr_intf/stepconf/stepconf.py:153 +#: src/emc/usr_intf/stepconf/stepconf.py:199 msgid "Spindle Index" msgstr "Spindelencoder Index" -#: src/emc/usr_intf/stepconf/stepconf.py:162 -#: emc/usr_intf/stepconf/stepconf.py:153 +#: src/emc/usr_intf/stepconf/stepconf.py:199 msgid "Spindle Phase A" msgstr "Spindelencoder Kanal A" -#: src/emc/usr_intf/stepconf/stepconf.py:162 -#: emc/usr_intf/stepconf/stepconf.py:153 +#: src/emc/usr_intf/stepconf/stepconf.py:199 msgid "Spindle Phase B" msgstr "Spindelencoder Kanal B" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -#: emc/usr_intf/stepconf/stepconf.py:154 emc/usr_intf/pncconf/pncconf.py:2607 -#: emc/usr_intf/pncconf/pncconf.py:2849 emc/usr_intf/pncconf/pncconf.py:3099 +#: src/emc/usr_intf/stepconf/stepconf.py:200 msgid "Home X" msgstr "Referenzschalter X" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -#: emc/usr_intf/stepconf/stepconf.py:154 emc/usr_intf/pncconf/pncconf.py:2607 -#: emc/usr_intf/pncconf/pncconf.py:2849 emc/usr_intf/pncconf/pncconf.py:3099 +#: src/emc/usr_intf/stepconf/stepconf.py:200 msgid "Home Y" msgstr "Referenzschalter Y" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -#: emc/usr_intf/stepconf/stepconf.py:154 emc/usr_intf/pncconf/pncconf.py:2607 -#: emc/usr_intf/pncconf/pncconf.py:2849 emc/usr_intf/pncconf/pncconf.py:3099 +#: src/emc/usr_intf/stepconf/stepconf.py:200 msgid "Home Z" msgstr "Referenzschalter Z" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -#: emc/usr_intf/stepconf/stepconf.py:154 emc/usr_intf/pncconf/pncconf.py:2607 -#: emc/usr_intf/pncconf/pncconf.py:2849 emc/usr_intf/pncconf/pncconf.py:3099 +#: src/emc/usr_intf/stepconf/stepconf.py:200 msgid "Home A" msgstr "Referenzschalter A" -#: src/emc/usr_intf/stepconf/stepconf.py:164 -#: emc/usr_intf/stepconf/stepconf.py:155 emc/usr_intf/pncconf/pncconf.py:255 +#: src/emc/usr_intf/stepconf/stepconf.py:201 msgid "Minimum Limit + Home X" msgstr "Min. End. + Ref. X" -#: src/emc/usr_intf/stepconf/stepconf.py:164 -#: emc/usr_intf/stepconf/stepconf.py:155 emc/usr_intf/pncconf/pncconf.py:255 +#: src/emc/usr_intf/stepconf/stepconf.py:201 msgid "Minimum Limit + Home Y" msgstr "Min. End. + Ref. Y" -#: src/emc/usr_intf/stepconf/stepconf.py:165 -#: emc/usr_intf/stepconf/stepconf.py:156 emc/usr_intf/pncconf/pncconf.py:256 +#: src/emc/usr_intf/stepconf/stepconf.py:202 msgid "Minimum Limit + Home Z" msgstr "Min. End. + Ref. Z" -#: src/emc/usr_intf/stepconf/stepconf.py:165 -#: emc/usr_intf/stepconf/stepconf.py:156 emc/usr_intf/pncconf/pncconf.py:256 +#: src/emc/usr_intf/stepconf/stepconf.py:202 msgid "Minimum Limit + Home A" msgstr "Min. End. + Ref. A" -#: src/emc/usr_intf/stepconf/stepconf.py:166 -#: emc/usr_intf/stepconf/stepconf.py:157 emc/usr_intf/pncconf/pncconf.py:257 +#: src/emc/usr_intf/stepconf/stepconf.py:203 msgid "Maximum Limit + Home X" msgstr "Max. End. + Ref. X" -#: src/emc/usr_intf/stepconf/stepconf.py:166 -#: emc/usr_intf/stepconf/stepconf.py:157 emc/usr_intf/pncconf/pncconf.py:257 +#: src/emc/usr_intf/stepconf/stepconf.py:203 msgid "Maximum Limit + Home Y" msgstr "Max. End. + Ref. Y" -#: src/emc/usr_intf/stepconf/stepconf.py:167 -#: emc/usr_intf/stepconf/stepconf.py:158 emc/usr_intf/pncconf/pncconf.py:258 +#: src/emc/usr_intf/stepconf/stepconf.py:204 msgid "Maximum Limit + Home Z" msgstr "Max. End. + Ref. Z" -#: src/emc/usr_intf/stepconf/stepconf.py:167 -#: emc/usr_intf/stepconf/stepconf.py:158 emc/usr_intf/pncconf/pncconf.py:258 +#: src/emc/usr_intf/stepconf/stepconf.py:204 msgid "Maximum Limit + Home A" msgstr "Max. End. + Ref. A" -#: src/emc/usr_intf/stepconf/stepconf.py:168 -#: emc/usr_intf/stepconf/stepconf.py:159 emc/usr_intf/pncconf/pncconf.py:259 +#: src/emc/usr_intf/stepconf/stepconf.py:205 msgid "Both Limit + Home X" msgstr "Beide End. + Ref. X" -#: src/emc/usr_intf/stepconf/stepconf.py:168 -#: emc/usr_intf/stepconf/stepconf.py:159 emc/usr_intf/pncconf/pncconf.py:259 +#: src/emc/usr_intf/stepconf/stepconf.py:205 msgid "Both Limit + Home Y" msgstr "Beide End. + Ref. Y" -#: src/emc/usr_intf/stepconf/stepconf.py:169 -#: emc/usr_intf/stepconf/stepconf.py:160 emc/usr_intf/pncconf/pncconf.py:260 +#: src/emc/usr_intf/stepconf/stepconf.py:206 msgid "Both Limit + Home Z" msgstr "Beide End. + Ref. Z" -#: src/emc/usr_intf/stepconf/stepconf.py:169 -#: emc/usr_intf/stepconf/stepconf.py:160 emc/usr_intf/pncconf/pncconf.py:260 +#: src/emc/usr_intf/stepconf/stepconf.py:206 msgid "Both Limit + Home A" msgstr "Beide End. + Ref. A" -#: src/emc/usr_intf/stepconf/stepconf.py:170 -#: emc/usr_intf/stepconf/stepconf.py:161 emc/usr_intf/pncconf/pncconf.py:262 +#: src/emc/usr_intf/stepconf/stepconf.py:207 msgid "Minimum Limit X" msgstr "Endschalter Mimimum X" -#: src/emc/usr_intf/stepconf/stepconf.py:170 -#: emc/usr_intf/stepconf/stepconf.py:161 emc/usr_intf/pncconf/pncconf.py:262 +#: src/emc/usr_intf/stepconf/stepconf.py:207 msgid "Minimum Limit Y" msgstr "Endschalter Mimimum Y" -#: src/emc/usr_intf/stepconf/stepconf.py:171 -#: emc/usr_intf/stepconf/stepconf.py:162 emc/usr_intf/pncconf/pncconf.py:263 +#: src/emc/usr_intf/stepconf/stepconf.py:208 msgid "Minimum Limit Z" msgstr "Endschalter Mimimum Z" -#: src/emc/usr_intf/stepconf/stepconf.py:171 -#: emc/usr_intf/stepconf/stepconf.py:162 emc/usr_intf/pncconf/pncconf.py:263 +#: src/emc/usr_intf/stepconf/stepconf.py:208 msgid "Minimum Limit A" msgstr "Endschalter Mimimum A" -#: src/emc/usr_intf/stepconf/stepconf.py:172 -#: emc/usr_intf/stepconf/stepconf.py:163 emc/usr_intf/pncconf/pncconf.py:264 +#: src/emc/usr_intf/stepconf/stepconf.py:209 msgid "Maximum Limit X" msgstr "Endschalter Maximum X" -#: src/emc/usr_intf/stepconf/stepconf.py:172 -#: emc/usr_intf/stepconf/stepconf.py:163 emc/usr_intf/pncconf/pncconf.py:264 +#: src/emc/usr_intf/stepconf/stepconf.py:209 msgid "Maximum Limit Y" msgstr "Endschalter Maximum Y" -#: src/emc/usr_intf/stepconf/stepconf.py:173 -#: emc/usr_intf/stepconf/stepconf.py:164 emc/usr_intf/pncconf/pncconf.py:265 +#: src/emc/usr_intf/stepconf/stepconf.py:210 msgid "Maximum Limit Z" msgstr "Endschalter Maximum Z" -#: src/emc/usr_intf/stepconf/stepconf.py:173 -#: emc/usr_intf/stepconf/stepconf.py:164 emc/usr_intf/pncconf/pncconf.py:265 +#: src/emc/usr_intf/stepconf/stepconf.py:210 msgid "Maximum Limit A" msgstr "Endschalter Maximum Z" -#: src/emc/usr_intf/stepconf/stepconf.py:174 -#: emc/usr_intf/stepconf/stepconf.py:165 emc/usr_intf/pncconf/pncconf.py:266 +#: src/emc/usr_intf/stepconf/stepconf.py:211 msgid "Both Limit X" msgstr "Beide Endschalter X" -#: src/emc/usr_intf/stepconf/stepconf.py:174 -#: emc/usr_intf/stepconf/stepconf.py:165 emc/usr_intf/pncconf/pncconf.py:266 +#: src/emc/usr_intf/stepconf/stepconf.py:211 msgid "Both Limit Y" msgstr "Beide Endschalter Y" -#: src/emc/usr_intf/stepconf/stepconf.py:175 -#: emc/usr_intf/stepconf/stepconf.py:166 emc/usr_intf/pncconf/pncconf.py:267 +#: src/emc/usr_intf/stepconf/stepconf.py:212 msgid "Both Limit Z" msgstr "Beide Endschalter Z" -#: src/emc/usr_intf/stepconf/stepconf.py:175 -#: emc/usr_intf/stepconf/stepconf.py:166 emc/usr_intf/pncconf/pncconf.py:267 +#: src/emc/usr_intf/stepconf/stepconf.py:212 msgid "Both Limit A" msgstr "Beide Endschalter A" -#: src/emc/usr_intf/stepconf/stepconf.py:176 -#: emc/usr_intf/stepconf/stepconf.py:167 emc/usr_intf/pncconf/pncconf.py:250 -#: emc/usr_intf/pncconf/pncconf.py:267 +#: src/emc/usr_intf/stepconf/stepconf.py:213 msgid "All limits" msgstr "Alle Endschalter" -#: src/emc/usr_intf/stepconf/stepconf.py:176 -#: emc/usr_intf/stepconf/stepconf.py:167 emc/usr_intf/pncconf/pncconf.py:250 -#: emc/usr_intf/pncconf/pncconf.py:2607 emc/usr_intf/pncconf/pncconf.py:2849 -#: emc/usr_intf/pncconf/pncconf.py:3099 +#: src/emc/usr_intf/stepconf/stepconf.py:213 msgid "All home" msgstr "Alle Referenzschalter" -#: src/emc/usr_intf/stepconf/stepconf.py:176 +#: src/emc/usr_intf/stepconf/stepconf.py:213 #, fuzzy msgid "All limits + homes" msgstr "Alle Endschalter" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -#: emc/usr_intf/stepconf/stepconf.py:168 emc/usr_intf/pncconf/pncconf.py:251 +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 msgid "Digital in 0" msgstr "Digitaler Eingang 0" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -#: emc/usr_intf/stepconf/stepconf.py:168 emc/usr_intf/pncconf/pncconf.py:251 +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 msgid "Digital in 1" msgstr "Digitaler Eingang 1" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -#: emc/usr_intf/stepconf/stepconf.py:168 emc/usr_intf/pncconf/pncconf.py:251 +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 msgid "Digital in 2" msgstr "Digitaler Eingang 2" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -#: emc/usr_intf/stepconf/stepconf.py:168 emc/usr_intf/pncconf/pncconf.py:251 +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 msgid "Digital in 3" msgstr "Digitaler Eingang 3" -#: src/emc/usr_intf/stepconf/stepconf.py:203 -#: emc/usr_intf/stepconf/stepconf.py:194 +#: src/emc/usr_intf/stepconf/stepconf.py:218 +#, fuzzy +msgid "Forward" +msgstr "SPINDEL VORWÄRTS" + +#: src/emc/usr_intf/stepconf/stepconf.py:219 +msgid "Done" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:220 +msgid "" +"OK to replace existing custom ladder program?\n" +"Existing Custom.clp will be renamed custom_backup.clp.\n" +"Any existing file named -custom_backup.clp- will be lost. " +msgstr "" +"Mit »OK« wird das bestehende benutzerdefinierte SPS-Programm ersetzt.\n" +"Eine bestehende »Custom.clp«-Datei wird in custom_backup.clp« umbenannt.\n" +"Eine bestehende »custom_backup.clp«-Dateien geht somit verloren." + +#: src/emc/usr_intf/stepconf/stepconf.py:221 +#: src/emc/usr_intf/pncconf/pncconf.py:8163 +msgid "" +"You edited a ladder program and have selected a different program to copy to " +"your configuration file.\n" +"The edited program will be lost.\n" +"\n" +"Are you sure? " +msgstr "" +"Sie haben ein SPS-Programm geändert, aber ein anderes Programm zum " +"übernehmen ausgewählt.\n" +"Das geänderte Programm geht somit verloren.\n" +"\n" +"Sind Sie sicher?" + +#: src/emc/usr_intf/stepconf/stepconf.py:222 +msgid "" +"You need to designate an E-stop input pin in the Parallel Port Setup page " +"for this program." +msgstr "" +"Für dieses Programm muss ein Notaus-Eingang auf der Seite zur Konfiguration " +"der parallelen Schnitstelle festgelegt wein." + +#: src/emc/usr_intf/stepconf/stepconf.py:223 +msgid "" +"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" +"Existing custompanel.xml and custom_postgui.hal will be renamed " +"custompanel_backup.xml and postgui_backup.hal.\n" +"Any existing file named custompanel_backup.xml and custom_postgui.hal will " +"be lost. " +msgstr "" +"OK zum Ersetzen des bestehenden PyVCP-Panel und der benutzerdefinierten " +"Datei »custom_postgui.hal«.\n" +"Die Dateien »custompanel.xml« und »custom_postgui.hal« werden in " +"»custompanel_backup.xml« und »postgui_backup.hal« umbenannt.\n" +"Bereits bestehende Dateien »custompanel_backup.xml« and »custom_postgui.hal« " +"werden überschrieben." + +#: src/emc/usr_intf/stepconf/stepconf.py:224 +msgid "Quit Stepconf and discard changes?" +msgstr "Maschinenkonfiguration beenden und Änderungen verwerfen?" + +#: src/emc/usr_intf/stepconf/stepconf.py:225 +msgid "" +"The configuration has been built and saved.\n" +"Do you want to quit?" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:226 +msgid "" +"You are using a simulated-realtime version of Machinekit, so testing / " +"tuning of hardware is unavailable." +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:227 +#, python-format +msgid "" +"You are using a realtime version of Machinekit but didn't load a realtime " +"kernel so testing / tuning of hardware is unavailable.\n" +"This is possibly because you updated the OS and it doesn't automatically " +"load the RTAI kernel anymore.\n" +"You are using the %(actual)s kernel.\n" +"You need to use kernel:" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:246 msgid "my-mill" msgstr "Meine-Maschine" -#: src/emc/usr_intf/stepconf/stepconf.py:215 -#: src/emc/usr_intf/stepconf/stepconf.py:217 -#: src/emc/usr_intf/pncconf/pncconf.py:983 -#: src/emc/usr_intf/pncconf/pncconf.py:985 -#: emc/usr_intf/stepconf/stepconf.py:206 emc/usr_intf/stepconf/stepconf.py:208 -#: emc/usr_intf/pncconf/pncconf.py:378 emc/usr_intf/pncconf/pncconf.py:380 -msgid "Enter Address" -msgstr "Adresse eingeben" - -#: src/emc/usr_intf/stepconf/stepconf.py:375 -#: emc/usr_intf/stepconf/stepconf.py:363 +#: src/emc/usr_intf/stepconf/stepconf.py:585 #, python-format msgid "File %r was modified since it was written by stepconf" msgstr "Die Date %r wurde geändert, seitdem sie mit stepconf erstellt wurde." -#: src/emc/usr_intf/stepconf/stepconf.py:378 -#: emc/usr_intf/stepconf/stepconf.py:366 +#: src/emc/usr_intf/stepconf/stepconf.py:588 msgid "" "Saving this configuration file will discard configuration changes made " "outside stepconf." @@ -7220,87 +8554,184 @@ msgstr "" "Beim speichern dieser Konfiguration werden Änderungen, die nicht mit " "stepconf durchgeführt wurden, überschrieben." -#: src/emc/usr_intf/stepconf/stepconf.py:393 -#: src/emc/usr_intf/pncconf/pncconf.py:1356 -#: emc/usr_intf/stepconf/stepconf.py:381 emc/usr_intf/pncconf/pncconf.py:772 +#: src/emc/usr_intf/stepconf/stepconf.py:603 +#: src/emc/usr_intf/pncconf/pncconf.py:1318 msgid "Continue? " msgstr "Fortsetzen?" -#: src/emc/usr_intf/stepconf/stepconf.py:394 -#: src/emc/usr_intf/pncconf/pncconf.py:1357 -#: emc/usr_intf/stepconf/stepconf.py:382 emc/usr_intf/pncconf/pncconf.py:773 +#: src/emc/usr_intf/stepconf/stepconf.py:604 +#: src/emc/usr_intf/pncconf/pncconf.py:1319 msgid "yY" msgstr "jJ" -#: src/emc/usr_intf/stepconf/stepconf.py:446 -#: src/emc/usr_intf/stepconf/stepconf.py:786 -#: emc/usr_intf/stepconf/stepconf.py:434 emc/usr_intf/stepconf/stepconf.py:760 +#: src/emc/usr_intf/stepconf/stepconf.py:689 +#: src/emc/usr_intf/pncconf/pncconf.py:3591 +#, python-format +msgid "launch %s" +msgstr "%s starten" + +#: src/emc/usr_intf/stepconf/stepconf.py:693 +#, fuzzy +msgid "Desktop Launcher for Machinekit config made by Stepconf" +msgstr "" +"Verknüpfung zum starten von EMC mit einer festgelegten Konfiguration, " +"erstellt von Stepconf" + +#: src/emc/usr_intf/stepconf/stepconf.py:860 +#: src/emc/usr_intf/stepconf/pages.py:145 +msgid "Other" +msgstr "Benutzerdefiniert" + +#: src/emc/usr_intf/stepconf/stepconf.py:1295 +#: src/emc/usr_intf/pncconf/pncconf.py:9302 #, python-format -msgid "# Generated by stepconf at %s" +msgid "%s Axis Test" +msgstr "Test %s-Achse" + +#: src/emc/usr_intf/stepconf/stepconf.py:1298 +#: src/emc/usr_intf/stepconf/pages.py:617 +msgid "deg / s" +msgstr "Grad / s" + +#: src/emc/usr_intf/stepconf/stepconf.py:1299 +#: src/emc/usr_intf/stepconf/pages.py:618 +msgid "deg / s²" +msgstr "Grad / s²" + +#: src/emc/usr_intf/stepconf/stepconf.py:1300 +#: src/emc/usr_intf/stepconf/pages.py:619 +msgid "deg" +msgstr "Grad" + +#: src/emc/usr_intf/stepconf/stepconf.py:1312 +#: src/emc/usr_intf/stepconf/pages.py:623 +#: src/emc/usr_intf/stepconf/axisx.glade:629 +#: src/emc/usr_intf/stepconf/axisy.glade:615 +#: src/emc/usr_intf/stepconf/axisz.glade:615 +#: src/emc/usr_intf/stepconf/axisa.glade:629 +#: src/emc/usr_intf/pncconf/pncconf.glade:64717 +msgid "mm / s" +msgstr "mm / s" + +#: src/emc/usr_intf/stepconf/stepconf.py:1313 +#: src/emc/usr_intf/stepconf/pages.py:624 +#: src/emc/usr_intf/stepconf/axisx.glade:645 +#: src/emc/usr_intf/stepconf/axisy.glade:631 +#: src/emc/usr_intf/stepconf/axisz.glade:631 +#: src/emc/usr_intf/stepconf/axisa.glade:645 +#: src/emc/usr_intf/pncconf/pncconf.glade:64732 +msgid "mm / s²" +msgstr "mm / s²" + +#: src/emc/usr_intf/stepconf/stepconf.py:1326 +#: src/emc/usr_intf/stepconf/pages.py:629 +msgid "in / s" +msgstr "in / s" + +#: src/emc/usr_intf/stepconf/stepconf.py:1327 +#: src/emc/usr_intf/stepconf/pages.py:630 +msgid "in / s²" +msgstr "in / s²" + +#: src/emc/usr_intf/stepconf/pages.py:189 +#, fuzzy +msgid "Machinekit 'stepconf' configuration files" +msgstr ".stepconf Dateien" + +#: src/emc/usr_intf/stepconf/pages.py:190 +#: src/emc/usr_intf/pncconf/pncconf.py:4257 +msgid "Modify Existing Configuration" +msgstr "Bestehende Konfiguration bearbeiten" + +#: src/emc/usr_intf/stepconf/pages.py:616 +msgid "degree / rev" +msgstr "Grad / Umdrehung" + +#: src/emc/usr_intf/stepconf/pages.py:620 +msgid "Steps / deg" +msgstr "Schritte / Grad" + +#: src/emc/usr_intf/stepconf/pages.py:622 +#: src/emc/usr_intf/stepconf/axisx.glade:613 +#: src/emc/usr_intf/stepconf/axisy.glade:599 +#: src/emc/usr_intf/stepconf/axisz.glade:599 +#: src/emc/usr_intf/stepconf/axisa.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / rev" +msgstr "mm / Umdrehung" + +#: src/emc/usr_intf/stepconf/pages.py:626 +#: src/emc/usr_intf/stepconf/axisx.glade:15 +#: src/emc/usr_intf/stepconf/axisy.glade:15 +#: src/emc/usr_intf/stepconf/axisz.glade:15 +#: src/emc/usr_intf/stepconf/axisa.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Steps / mm" +msgstr "Schritte / mm" + +#: src/emc/usr_intf/stepconf/pages.py:628 +msgid "rev / in" +msgstr "Umdrehungen / in" + +#: src/emc/usr_intf/stepconf/pages.py:632 +msgid "Steps / in" +msgstr "Schritte / in" + +#: src/emc/usr_intf/stepconf/build_INI.py:45 +#: src/emc/usr_intf/stepconf/build_HAL.py:41 +#, fuzzy, python-format +msgid "# Generated by stepconf 1.1 at %s" msgstr "# Erstellt von stepconf am %s" -#: src/emc/usr_intf/stepconf/stepconf.py:447 -#: src/emc/usr_intf/stepconf/stepconf.py:787 -#: src/emc/usr_intf/pncconf/pncconf.py:1366 -#: src/emc/usr_intf/pncconf/pncconf.py:2369 -#: emc/usr_intf/stepconf/stepconf.py:435 emc/usr_intf/stepconf/stepconf.py:761 -#: emc/usr_intf/pncconf/pncconf.py:782 emc/usr_intf/pncconf/pncconf.py:1258 +#: src/emc/usr_intf/stepconf/build_INI.py:46 +#: src/emc/usr_intf/stepconf/build_HAL.py:42 +#: src/emc/usr_intf/pncconf/pncconf.py:1328 +#: src/emc/usr_intf/pncconf/pncconf.py:2422 msgid "# If you make changes to this file, they will be" msgstr "# Änderungen an dieser Datei werden beim nächsten" -#: src/emc/usr_intf/stepconf/stepconf.py:448 -#: src/emc/usr_intf/stepconf/stepconf.py:788 -#: emc/usr_intf/stepconf/stepconf.py:436 emc/usr_intf/stepconf/stepconf.py:762 +#: src/emc/usr_intf/stepconf/build_INI.py:47 +#: src/emc/usr_intf/stepconf/build_HAL.py:43 msgid "# overwritten when you run stepconf again" msgstr "# Aufruf von stepconf überschrieben." -#: src/emc/usr_intf/stepconf/stepconf.py:516 -#: emc/usr_intf/stepconf/stepconf.py:504 +#: src/emc/usr_intf/stepconf/build_INI.py:126 msgid "# add halui MDI commands here (max 64) " msgstr "# HalUI-MDI-Befehle hier einfügen (max. 64)" -#: src/emc/usr_intf/stepconf/stepconf.py:991 -#: src/emc/usr_intf/pncconf/pncconf.py:2991 -#: emc/usr_intf/stepconf/stepconf.py:935 emc/usr_intf/pncconf/pncconf.py:1514 +#: src/emc/usr_intf/stepconf/build_HAL.py:275 +#: src/emc/usr_intf/pncconf/pncconf.py:3131 msgid "# **** Setup for external estop ladder program -START ****" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:998 -#: src/emc/usr_intf/pncconf/pncconf.py:2998 -#: emc/usr_intf/stepconf/stepconf.py:942 emc/usr_intf/pncconf/pncconf.py:1521 +#: src/emc/usr_intf/stepconf/build_HAL.py:282 +#: src/emc/usr_intf/pncconf/pncconf.py:3138 msgid "# **** Setup for external estop ladder program -END ****" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1018 -#: src/emc/usr_intf/pncconf/pncconf.py:3025 -#: emc/usr_intf/stepconf/stepconf.py:962 emc/usr_intf/pncconf/pncconf.py:1543 +#: src/emc/usr_intf/stepconf/build_HAL.py:302 +#: src/emc/usr_intf/pncconf/pncconf.py:3165 msgid "" "# Load Classicladder with modbus master included (GUI must run for Modbus)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1021 -#: src/emc/usr_intf/pncconf/pncconf.py:3030 -#: emc/usr_intf/stepconf/stepconf.py:965 emc/usr_intf/pncconf/pncconf.py:1546 +#: src/emc/usr_intf/stepconf/build_HAL.py:305 +#: src/emc/usr_intf/pncconf/pncconf.py:3170 msgid "# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1031 -#: src/emc/usr_intf/pncconf/pncconf.py:3112 -#: emc/usr_intf/stepconf/stepconf.py:975 emc/usr_intf/pncconf/pncconf.py:1556 +#: src/emc/usr_intf/stepconf/build_HAL.py:315 +#: src/emc/usr_intf/pncconf/pncconf.py:3252 msgid "Include your PyVCP panel here.\n" msgstr "Benutzerdefiniertes PyVCP-Panel hier einbinden.\n" -#: src/emc/usr_intf/stepconf/stepconf.py:1040 -#: src/emc/usr_intf/stepconf/stepconf.py:1087 -#: emc/usr_intf/stepconf/stepconf.py:984 -#: emc/usr_intf/stepconf/stepconf.py:1010 emc/usr_intf/pncconf/pncconf.py:1565 -#: emc/usr_intf/pncconf/pncconf.py:1626 +#: src/emc/usr_intf/stepconf/build_HAL.py:324 +#: src/emc/usr_intf/stepconf/build_HAL.py:370 msgid "# Include your customized HAL commands here" msgstr "" "# Benutzerdefinierte HAL-Anweisungen können nachfolgend angegeben werden" -#: src/emc/usr_intf/stepconf/stepconf.py:1041 -#: emc/usr_intf/stepconf/stepconf.py:985 emc/usr_intf/pncconf/pncconf.py:1566 +#: src/emc/usr_intf/stepconf/build_HAL.py:325 msgid "" "# The commands in this file are run after the AXIS GUI (including PyVCP " "panel) starts" @@ -7308,322 +8739,261 @@ msgstr "" "# Die Befehle in dieser Datei werden nach der AXIS GUI (und PyVCP-Panel) " "ausgeführt." -#: src/emc/usr_intf/stepconf/stepconf.py:1045 -#: src/emc/usr_intf/pncconf/pncconf.py:3140 +#: src/emc/usr_intf/stepconf/build_HAL.py:328 +#: src/emc/usr_intf/pncconf/pncconf.py:3280 msgid "# **** Setup of spindle speed display using pyvcp -START ****" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1047 -#: emc/usr_intf/stepconf/stepconf.py:991 emc/usr_intf/pncconf/pncconf.py:1572 +#: src/emc/usr_intf/stepconf/build_HAL.py:330 msgid "# **** Use ACTUAL spindle velocity from spindle encoder" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1048 -msgid "# **** spindle-velocity bounces around so we filter it with lowpass" +#: src/emc/usr_intf/stepconf/build_HAL.py:331 +msgid "" +"# **** spindle-velocity-feedback-rps bounces around so we filter it with " +"lowpass" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1049 +#: src/emc/usr_intf/stepconf/build_HAL.py:332 msgid "" -"# **** spindle-velocity is signed so we use absolute component to remove sign" +"# **** spindle-velocity-feedback-rps is signed so we use absolute component " +"to remove sign" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1050 -#: emc/usr_intf/stepconf/stepconf.py:993 emc/usr_intf/pncconf/pncconf.py:1574 +#: src/emc/usr_intf/stepconf/build_HAL.py:333 msgid "# **** ACTUAL velocity is in RPS not RPM so we scale it." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1059 +#: src/emc/usr_intf/stepconf/build_HAL.py:342 msgid "# **** set up spindle at speed indicator ****" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1072 +#: src/emc/usr_intf/stepconf/build_HAL.py:355 msgid "" "# **** Use COMMANDED spindle velocity from LinuxCNC because no spindle " "encoder was specified" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1073 -#: emc/usr_intf/stepconf/stepconf.py:1001 emc/usr_intf/pncconf/pncconf.py:1582 -msgid "" -"# **** COMANDED velocity is signed so we use absolute component (abs.0) to " -"remove sign" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.py:1088 -#: emc/usr_intf/stepconf/stepconf.py:1011 +#: src/emc/usr_intf/stepconf/build_HAL.py:371 msgid "# This file will not be overwritten when you run stepconf again" msgstr "" "# Diese Datei wird überschrieben, wenn stepconf erneut ausgeführt wird." -#: src/emc/usr_intf/stepconf/stepconf.py:1095 -#: emc/usr_intf/stepconf/stepconf.py:1018 -#, python-format -msgid "Generated by stepconf at %s" -msgstr "Erstell durch stepconf am %s" - -#: src/emc/usr_intf/stepconf/stepconf.py:1166 -#: src/emc/usr_intf/pncconf/pncconf.py:3451 -#: emc/usr_intf/stepconf/stepconf.py:1091 emc/usr_intf/pncconf/pncconf.py:1778 -#, python-format -msgid "launch %s" -msgstr "%s starten" +#: src/emc/usr_intf/stepconf/build_HAL.py:412 +msgid "# This file sets up simulated limits/home/spindle encoder hardware." +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1170 -#, fuzzy -msgid "Desktop Launcher for LinuxCNC config made by Stepconf" +#: src/emc/usr_intf/stepconf/build_HAL.py:413 +msgid "# This is a generated file do not edit." msgstr "" -"Verknüpfung zum starten von EMC mit einer festgelegten Konfiguration, " -"erstellt von Stepconf" -#: src/emc/usr_intf/stepconf/stepconf.py:1196 -#: src/emc/usr_intf/pncconf/pncconf.py:3700 -#: emc/usr_intf/stepconf/stepconf.py:1119 emc/usr_intf/pncconf/pncconf.py:1916 -#, python-format -msgid "%s Axis Configuration" -msgstr "Konfiguration der %s-Achse" +#: src/emc/usr_intf/stepconf/main_page.glade:35 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Acceleration:" +msgstr "Beschleunigung:" -#: src/emc/usr_intf/stepconf/stepconf.py:1238 -#: src/emc/usr_intf/stepconf/stepconf.py:1337 -#: emc/usr_intf/stepconf/stepconf.py:1161 -#: emc/usr_intf/stepconf/stepconf.py:1247 -msgid "Other" -msgstr "Benutzerdefiniert" +#: src/emc/usr_intf/stepconf/main_page.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Jog:" +msgstr "Verfahren:" -#: src/emc/usr_intf/stepconf/stepconf.py:1249 -#: emc/usr_intf/stepconf/stepconf.py:1172 -msgid "Quit Stepconf and discard changes?" -msgstr "Maschinenkonfiguration beenden und Änderungen verwerfen?" +#: src/emc/usr_intf/stepconf/main_page.glade:63 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Test Area:" +msgstr "Testbereich:" -#: src/emc/usr_intf/stepconf/stepconf.py:1280 -msgid "" -"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " -"of hardware is unavailable." -msgstr "" +#: src/emc/usr_intf/stepconf/main_page.glade:97 +msgid "mm/s^2" +msgstr "mm/s²" -#: src/emc/usr_intf/stepconf/stepconf.py:1283 -msgid "" -"You are using a realtime version of LinuxCNC but didn't load a realtime " -"kernel so testing / tuning of hardware is unavailable.\n" -"This is possibly because you updated the OS and it doesn't automatically " -"load the RTAI kernel anymore.\n" +#: src/emc/usr_intf/stepconf/main_page.glade:138 +msgid "mm/s" +msgstr "mm / s" + +#: src/emc/usr_intf/stepconf/main_page.glade:400 +msgid "±" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1298 +#: src/emc/usr_intf/stepconf/main_page.glade:423 #, fuzzy -msgid "LinuxCNC 'stepconf' configuration files" -msgstr ".stepconf Dateien" +msgid "Stepconf -Stepper Configuration Wizard" +msgstr "LinuxCNC Maschinenkonfiguration" -#: src/emc/usr_intf/stepconf/stepconf.py:1299 -#: src/emc/usr_intf/pncconf/pncconf.py:4094 -#: emc/usr_intf/stepconf/stepconf.py:1209 emc/usr_intf/pncconf/pncconf.py:2081 -msgid "Modify Existing Configuration" -msgstr "Bestehende Konfiguration bearbeiten" +#: src/emc/usr_intf/stepconf/main_page.glade:503 +#: src/emc/usr_intf/pncconf/pncconf.glade:2054 +#: src/emc/usr_intf/pncconf/pncconf.glade:2067 +#: src/emc/usr_intf/pncconf/pncconf.glade:2080 +#: src/emc/usr_intf/pncconf/pncconf.glade:2093 +#: src/emc/usr_intf/pncconf/pncconf.glade:2106 +#: src/emc/usr_intf/pncconf/pncconf.glade:2119 +#: src/emc/usr_intf/pncconf/pncconf.glade:2132 +#: src/emc/usr_intf/pncconf/pncconf.glade:2145 +#: src/emc/usr_intf/pncconf/pncconf.glade:2156 +#: src/emc/usr_intf/pncconf/pncconf.glade:2169 +#: src/emc/usr_intf/pncconf/pncconf.glade:2182 +#: src/emc/usr_intf/pncconf/pncconf.glade:2528 +#: src/emc/usr_intf/pncconf/pncconf.glade:2541 +#: src/emc/usr_intf/pncconf/pncconf.glade:2554 +#: src/emc/usr_intf/pncconf/pncconf.glade:8104 +#: src/emc/usr_intf/pncconf/pncconf.glade:8139 +#: src/emc/usr_intf/pncconf/pncconf.glade:63377 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:1342 +#: src/emc/usr_intf/gscreen/gscreen.glade:1360 +#: src/emc/usr_intf/gscreen/gscreen.glade:1378 +msgid "label" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1439 -#: emc/usr_intf/stepconf/stepconf.py:1630 +#: src/emc/usr_intf/stepconf/main_page.glade:605 +#, fuzzy msgid "" -"You need to designate an E-stop input pin in the Parallel Port Setup page " -"for this program." +"This program creates configuration files (.ini and .hal) for \"step and " +"direction\" milling machines and lathes connected to the PC parallel port.\n" +"\n" +"Stepconf requires a minimum 800 X 600 display resolution." msgstr "" -"Für dieses Programm muss ein Notaus-Eingang auf der Seite zur Konfiguration " -"der parallelen Schnitstelle festgelegt wein." +"Dieses Programm erstellt Konfigurationsdateien (.ini und .hal) für Fräs- und " +"Drehmaschinen mit »Schritt- und Richtung«-Schnittstelle, die über den " +"Druckeranschluss mit dem PC verbunden sind." -#: src/emc/usr_intf/stepconf/stepconf.py:1452 -#: emc/usr_intf/stepconf/stepconf.py:1643 emc/usr_intf/pncconf/pncconf.py:3716 -msgid "" -"OK to replace existing custom ladder program?\n" -"Existing Custom.clp will be renamed custom_backup.clp.\n" -"Any existing file named -custom_backup.clp- will be lost. " +#: src/emc/usr_intf/stepconf/main_page.glade:628 +#: src/emc/usr_intf/pncconf/pncconf.glade:28799 +#: src/emc/usr_intf/pncconf/pncconf.glade:35720 +#: src/emc/usr_intf/pncconf/pncconf.glade:42643 +#: src/emc/usr_intf/pncconf/pncconf.glade:49566 +#: src/emc/usr_intf/pncconf/pncconf.glade:56489 +msgid "page 1" msgstr "" -"Mit »OK« wird das bestehende benutzerdefinierte SPS-Programm ersetzt.\n" -"Eine bestehende »Custom.clp«-Datei wird in custom_backup.clp« umbenannt.\n" -"Eine bestehende »custom_backup.clp«-Dateien geht somit verloren." -#: src/emc/usr_intf/stepconf/stepconf.py:1457 -#: src/emc/usr_intf/pncconf/pncconf.py:7815 -#: emc/usr_intf/stepconf/stepconf.py:1648 emc/usr_intf/pncconf/pncconf.py:3721 -msgid "" -"You edited a ladder program and have selected a different program to copy to " -"your configuration file.\n" -"The edited program will be lost.\n" -"\n" -"Are you sure? " +#: src/emc/usr_intf/stepconf/base.glade:18 +msgid "XYZ" msgstr "" -"Sie haben ein SPS-Programm geändert, aber ein anderes Programm zum " -"übernehmen ausgewählt.\n" -"Das geänderte Programm geht somit verloren.\n" -"\n" -"Sind Sie sicher?" -#: src/emc/usr_intf/stepconf/stepconf.py:1471 -#: emc/usr_intf/stepconf/stepconf.py:1662 emc/usr_intf/pncconf/pncconf.py:2301 -msgid "" -"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" -"Existing custompanel.xml and custom_postgui.hal will be renamed " -"custompanel_backup.xml and postgui_backup.hal.\n" -"Any existing file named custompanel_backup.xml and custom_postgui.hal will " -"be lost. " +#: src/emc/usr_intf/stepconf/base.glade:21 +msgid "XYZA" msgstr "" -"OK zum Ersetzen des bestehenden PyVCP-Panel und der benutzerdefinierten " -"Datei »custom_postgui.hal«.\n" -"Die Dateien »custompanel.xml« und »custom_postgui.hal« werden in " -"»custompanel_backup.xml« und »postgui_backup.hal« umbenannt.\n" -"Bereits bestehende Dateien »custompanel_backup.xml« and »custom_postgui.hal« " -"werden überschrieben." -#: src/emc/usr_intf/stepconf/stepconf.py:1676 -#: emc/usr_intf/stepconf/stepconf.py:1486 -msgid "degree / rev" -msgstr "Grad / Umdrehung" +#: src/emc/usr_intf/stepconf/base.glade:24 +#, fuzzy +msgid "XZ (Lathe)" +msgstr "" +"XYZ\n" +"XYZA\n" +"XZ (Drehmaschine)" -#: src/emc/usr_intf/stepconf/stepconf.py:1677 -#: src/emc/usr_intf/stepconf/stepconf.py:2205 -#: emc/usr_intf/stepconf/stepconf.py:1487 -#: emc/usr_intf/stepconf/stepconf.py:2063 -msgid "deg / s" -msgstr "Grad / s" +#: src/emc/usr_intf/stepconf/base.glade:79 +msgid "Step _Time:" +msgstr "_Länge eines Schritts:" -#: src/emc/usr_intf/stepconf/stepconf.py:1678 -#: src/emc/usr_intf/stepconf/stepconf.py:2206 -#: emc/usr_intf/stepconf/stepconf.py:1488 -#: emc/usr_intf/stepconf/stepconf.py:2064 -msgid "deg / s²" -msgstr "Grad / s²" +#: src/emc/usr_intf/stepconf/base.glade:113 +#: src/emc/usr_intf/stepconf/base.glade:165 +#: src/emc/usr_intf/stepconf/base.glade:219 +#: src/emc/usr_intf/stepconf/base.glade:271 +#: src/emc/usr_intf/stepconf/base.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:443 +#: src/emc/usr_intf/pncconf/pncconf.glade:8226 +msgid "ns" +msgstr "ns" -#: src/emc/usr_intf/stepconf/stepconf.py:1679 -#: src/emc/usr_intf/stepconf/stepconf.py:2207 -#: emc/usr_intf/stepconf/stepconf.py:1489 -#: emc/usr_intf/stepconf/stepconf.py:2065 -msgid "deg" -msgstr "Grad" +#: src/emc/usr_intf/stepconf/base.glade:127 +msgid "Step _Space:" +msgstr "Zeit zwischen zwei _Schritten:" -#: src/emc/usr_intf/stepconf/stepconf.py:1680 -#: emc/usr_intf/stepconf/stepconf.py:1490 -msgid "Steps / deg" -msgstr "Schritte / Grad" +#: src/emc/usr_intf/stepconf/base.glade:181 +msgid "Direction _Hold:" +msgstr "Zeit zwischen Schritt und _Richtungswechsel:" -#: src/emc/usr_intf/stepconf/stepconf.py:1682 -#: src/emc/usr_intf/stepconf/stepconf.glade:3589 -#: src/emc/usr_intf/pncconf/pncconf.glade:66138 -#: src/emc/usr_intf/pncconf/pncconf.glade:66424 -#: emc/usr_intf/stepconf/stepconf.py:1492 -#: emc/usr_intf/stepconf/stepconf.glade:2534 -#: emc/usr_intf/pncconf/pncconf.glade:15473 -msgid "mm / rev" -msgstr "mm / Umdrehung" +#: src/emc/usr_intf/stepconf/base.glade:235 +msgid "_Direction Setup:" +msgstr "Zeit zwischen Richtungs_wechsel und Schritt:" -#: src/emc/usr_intf/stepconf/stepconf.py:1683 -#: src/emc/usr_intf/stepconf/stepconf.py:2219 -#: src/emc/usr_intf/stepconf/stepconf.glade:3604 -#: src/emc/usr_intf/pncconf/pncconf.glade:57828 -#: emc/usr_intf/stepconf/stepconf.py:1493 -#: emc/usr_intf/stepconf/stepconf.py:2077 -#: emc/usr_intf/stepconf/stepconf.glade:2519 -#: emc/usr_intf/pncconf/pncconf.glade:15457 -#: emc/usr_intf/pncconf/pncconf.glade:17690 -msgid "mm / s" -msgstr "mm / s" +#: src/emc/usr_intf/stepconf/base.glade:338 +msgid "Driver Timing Settings" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1684 -#: src/emc/usr_intf/stepconf/stepconf.py:2220 -#: src/emc/usr_intf/stepconf/stepconf.glade:3619 -#: src/emc/usr_intf/pncconf/pncconf.glade:57813 -#: emc/usr_intf/stepconf/stepconf.py:1494 -#: emc/usr_intf/stepconf/stepconf.py:2078 -#: emc/usr_intf/stepconf/stepconf.glade:2504 -#: emc/usr_intf/pncconf/pncconf.glade:15442 -#: emc/usr_intf/pncconf/pncconf.glade:17675 -msgid "mm / s²" -msgstr "mm / s²" +#: src/emc/usr_intf/stepconf/base.glade:351 +msgid "" +"_Test Base\n" +"Period Jitter " +msgstr "" +"Systemtakt-Abweichung\n" +"(Jitter) er_mitteln" -#: src/emc/usr_intf/stepconf/stepconf.py:1686 -#: src/emc/usr_intf/stepconf/stepconf.glade:3075 -#: src/emc/usr_intf/pncconf/pncconf.glade:66888 -#: emc/usr_intf/stepconf/stepconf.py:1496 -#: emc/usr_intf/stepconf/stepconf.glade:3048 -#: emc/usr_intf/pncconf/pncconf.py:3313 -#: emc/usr_intf/pncconf/pncconf.glade:16098 -#: emc/usr_intf/pncconf/pncconf.glade:18180 -msgid "Steps / mm" -msgstr "Schritte / mm" +#: src/emc/usr_intf/stepconf/base.glade:372 +msgid "Machine _Name:" +msgstr "Maschinen_name:" -#: src/emc/usr_intf/stepconf/stepconf.py:1688 -#: emc/usr_intf/stepconf/stepconf.py:1498 -msgid "rev / in" -msgstr "Umdrehungen / in" +#: src/emc/usr_intf/stepconf/base.glade:386 +msgid "_Axis configuration:" +msgstr "A_chsen:" -#: src/emc/usr_intf/stepconf/stepconf.py:1689 -#: src/emc/usr_intf/stepconf/stepconf.py:2233 -#: emc/usr_intf/stepconf/stepconf.py:1499 -#: emc/usr_intf/stepconf/stepconf.py:2091 -msgid "in / s" -msgstr "in / s" +#: src/emc/usr_intf/stepconf/base.glade:401 +#, fuzzy +msgid "Reset Default machine _units:" +msgstr "_Einheiten:" -#: src/emc/usr_intf/stepconf/stepconf.py:1690 -#: src/emc/usr_intf/stepconf/stepconf.py:2234 -#: emc/usr_intf/stepconf/stepconf.py:1500 -#: emc/usr_intf/stepconf/stepconf.py:2092 -msgid "in / s²" -msgstr "in / s²" +#: src/emc/usr_intf/stepconf/base.glade:416 +#: src/emc/usr_intf/pncconf/pncconf.glade:245 +msgid "Configuration directory:" +msgstr "Verzeichnis:" -#: src/emc/usr_intf/stepconf/stepconf.py:1692 -#: emc/usr_intf/stepconf/stepconf.py:1502 -msgid "Steps / in" -msgstr "Schritte / in" +#: src/emc/usr_intf/stepconf/base.glade:430 +msgid "D_river type:" +msgstr "En_dstufe:" -#: src/emc/usr_intf/stepconf/stepconf.py:2202 -#: src/emc/usr_intf/pncconf/pncconf.py:8893 -#: emc/usr_intf/stepconf/stepconf.py:2060 emc/usr_intf/pncconf/pncconf.py:4425 -#, python-format -msgid "%s Axis Test" -msgstr "Test %s-Achse" +#: src/emc/usr_intf/stepconf/base.glade:545 +msgid "" +"Driver characteristics: (Multiply by 1000 for times specified in µs or " +"microseconds)" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:8 -#: src/emc/usr_intf/stepconf/stepconf.glade:21 -#: emc/usr_intf/stepconf/stepconf.glade:8 -#: emc/usr_intf/stepconf/stepconf.glade:21 -msgid "LinuxCNC Stepper Mill Configuration" -msgstr "LinuxCNC Maschinenkonfiguration" +#: src/emc/usr_intf/stepconf/base.glade:573 +msgid "Base Period Maximum _Jitter:" +msgstr "Maximale Systemtakt-Abweichung (_Jitter):" + +#: src/emc/usr_intf/stepconf/base.glade:630 +msgid "One Parport" +msgstr "" + +#: src/emc/usr_intf/stepconf/base.glade:646 +msgid "Two Parports" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:22 +#: src/emc/usr_intf/stepconf/base.glade:663 #, fuzzy -msgid "" -"This program creates configuration files (.ini and .hal) for \"step and " -"direction\" milling machines and lathes connected to the PC parallel port.\n" -"\n" -"Stepconf requires a minimum 800 X 600 display resolution.\n" -"You may need to collapse the 'Driver Timing Settings' and \n" -"Parallel Port Settings' expanders." +msgid "Three Parports" +msgstr "Adresse der dr_itten parallellen Schnittstelle:" + +#: src/emc/usr_intf/stepconf/base.glade:698 +msgid "Min Base Period:" +msgstr "Min. Systemtakt:" + +#: src/emc/usr_intf/stepconf/base.glade:735 +msgid "Max step rate:" +msgstr "Max. Schrittfrequenz:" + +#: src/emc/usr_intf/stepconf/base.glade:870 +msgid "MM" msgstr "" -"Dieses Programm erstellt Konfigurationsdateien (.ini und .hal) für Fräs- und " -"Drehmaschinen mit »Schritt- und Richtung«-Schnittstelle, die über den " -"Druckeranschluss mit dem PC verbunden sind." -#: src/emc/usr_intf/stepconf/stepconf.glade:51 -#: emc/usr_intf/stepconf/stepconf.glade:145 +#: src/emc/usr_intf/stepconf/start.glade:11 msgid "Create a _new configuration" msgstr "Eine _neune Konfiguration erstellen" -#: src/emc/usr_intf/stepconf/stepconf.glade:69 -#: src/emc/usr_intf/pncconf/pncconf.glade:70 -#: emc/usr_intf/stepconf/stepconf.glade:127 -#: emc/usr_intf/pncconf/pncconf.glade:129 +#: src/emc/usr_intf/stepconf/start.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:130 #, fuzzy msgid "Modify a configuration already created with this program" msgstr "" "Eine bestehende, mit diesem Programm erstellte, Konfiguration _bearbeiten" -#: src/emc/usr_intf/stepconf/stepconf.glade:87 -#: src/emc/usr_intf/pncconf/pncconf.glade:88 -#: emc/usr_intf/stepconf/stepconf.glade:115 -#: emc/usr_intf/pncconf/pncconf.glade:117 +#: src/emc/usr_intf/stepconf/start.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:118 msgid "Do you wish to:" msgstr "Folgende Optionen stehen zur Verfügung:" -#: src/emc/usr_intf/stepconf/stepconf.glade:99 +#: src/emc/usr_intf/stepconf/start.glade:61 #: src/emc/usr_intf/pncconf/pncconf.glade:100 -#: emc/usr_intf/stepconf/stepconf.glade:98 -#: emc/usr_intf/pncconf/pncconf.glade:99 msgid "" "If you have made modifications to this configuration outside this program, " "they will be lost when you select \"Modify a configuration\"" @@ -7631,245 +9001,309 @@ msgstr "" "Wenn die Konfiguration mit einem anderen Programm bearbeitet wurde, gehen " "diese Änderungen verloren." -#: src/emc/usr_intf/stepconf/stepconf.glade:116 -#: emc/usr_intf/stepconf/stepconf.glade:81 +#: src/emc/usr_intf/stepconf/start.glade:76 msgid "Create a desktop _shortcut (symlink) to configuration files." msgstr "Verknüpfung zu den _Konfigurationsdateien auf dem Destop erstellen" -#: src/emc/usr_intf/stepconf/stepconf.glade:133 -#: emc/usr_intf/stepconf/stepconf.glade:64 +#: src/emc/usr_intf/stepconf/start.glade:93 msgid "Create a desktop _launcher to start LinuxCNC with this configuration." msgstr "" "Verknüpfung zum _Starten vom LinuxCNC mit dieser Konfiguration auf dem " "Destop erstellen" -#: src/emc/usr_intf/stepconf/stepconf.glade:169 -#: src/emc/usr_intf/pncconf/pncconf.glade:175 -#: emc/usr_intf/stepconf/stepconf.glade:170 -#: emc/usr_intf/pncconf/pncconf.glade:174 -msgid "Basic machine information" -msgstr "Grundlegende Informationen" +#: src/emc/usr_intf/stepconf/start.glade:124 +#, fuzzy +msgid "Create simulated hardware configuration." +msgstr "Eine _neune Konfiguration erstellen" -#: src/emc/usr_intf/stepconf/stepconf.glade:327 -#: emc/usr_intf/stepconf/stepconf.glade:873 -msgid "Step _Time:" -msgstr "_Länge eines Schritts:" +#: src/emc/usr_intf/stepconf/pport1.glade:35 +msgid "Xylotex" +msgstr "Xylotex" -#: src/emc/usr_intf/stepconf/stepconf.glade:356 -#: src/emc/usr_intf/stepconf/stepconf.glade:402 -#: src/emc/usr_intf/stepconf/stepconf.glade:449 -#: src/emc/usr_intf/stepconf/stepconf.glade:494 -#: src/emc/usr_intf/stepconf/stepconf.glade:909 -#: src/emc/usr_intf/pncconf/pncconf.glade:458 -#: src/emc/usr_intf/pncconf/pncconf.glade:8256 -#: emc/usr_intf/stepconf/stepconf.glade:475 -#: emc/usr_intf/stepconf/stepconf.glade:768 -#: emc/usr_intf/stepconf/stepconf.glade:783 -#: emc/usr_intf/stepconf/stepconf.glade:798 -#: emc/usr_intf/stepconf/stepconf.glade:813 -#: emc/usr_intf/pncconf/pncconf.glade:492 -#: emc/usr_intf/pncconf/pncconf.glade:1878 -msgid "ns" -msgstr "ns" +#: src/emc/usr_intf/stepconf/pport1.glade:38 +msgid "TB6560 3 axes" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:369 -#: emc/usr_intf/stepconf/stepconf.glade:858 -msgid "Step _Space:" -msgstr "Zeit zwischen zwei _Schritten:" +#: src/emc/usr_intf/stepconf/pport1.glade:41 +msgid "TB6560 4 axes" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:417 -#: emc/usr_intf/stepconf/stepconf.glade:843 -msgid "Direction _Hold:" -msgstr "Zeit zwischen Schritt und _Richtungswechsel:" +#: src/emc/usr_intf/stepconf/pport1.glade:59 +#: src/emc/usr_intf/pncconf/pncconf.glade:62915 +msgid "Pin _1:" +msgstr "Pin _1:" -#: src/emc/usr_intf/stepconf/stepconf.glade:464 -#: emc/usr_intf/stepconf/stepconf.glade:828 -msgid "_Direction Setup:" -msgstr "Zeit zwischen Richtungs_wechsel und Schritt:" +#: src/emc/usr_intf/stepconf/pport1.glade:74 +#: src/emc/usr_intf/stepconf/pport2.glade:768 +#: src/emc/usr_intf/pncconf/pncconf.glade:61685 +#: src/emc/usr_intf/pncconf/pncconf.glade:62901 +msgid "Pin _2:" +msgstr "Pin _2:" -#: src/emc/usr_intf/stepconf/stepconf.glade:512 -msgid "Driver Timing Settings" -msgstr "" +#: src/emc/usr_intf/stepconf/pport1.glade:89 +#: src/emc/usr_intf/stepconf/pport2.glade:814 +#: src/emc/usr_intf/pncconf/pncconf.glade:61668 +#: src/emc/usr_intf/pncconf/pncconf.glade:62887 +msgid "Pin _3:" +msgstr "Pin _3:" + +#: src/emc/usr_intf/stepconf/pport1.glade:104 +#: src/emc/usr_intf/stepconf/pport2.glade:860 +#: src/emc/usr_intf/pncconf/pncconf.glade:61651 +#: src/emc/usr_intf/pncconf/pncconf.glade:62873 +msgid "Pin _4:" +msgstr "Pin _4:" + +#: src/emc/usr_intf/stepconf/pport1.glade:119 +#: src/emc/usr_intf/stepconf/pport2.glade:906 +#: src/emc/usr_intf/pncconf/pncconf.glade:61634 +#: src/emc/usr_intf/pncconf/pncconf.glade:62859 +msgid "Pin _5:" +msgstr "Pin _5:" + +#: src/emc/usr_intf/stepconf/pport1.glade:134 +#: src/emc/usr_intf/stepconf/pport2.glade:952 +#: src/emc/usr_intf/pncconf/pncconf.glade:61617 +#: src/emc/usr_intf/pncconf/pncconf.glade:62845 +msgid "Pin _6:" +msgstr "Pin _6:" + +#: src/emc/usr_intf/stepconf/pport1.glade:149 +#: src/emc/usr_intf/stepconf/pport2.glade:998 +#: src/emc/usr_intf/pncconf/pncconf.glade:61600 +#: src/emc/usr_intf/pncconf/pncconf.glade:62831 +msgid "Pin _7:" +msgstr "Pin _7:" + +#: src/emc/usr_intf/stepconf/pport1.glade:164 +#: src/emc/usr_intf/stepconf/pport2.glade:1044 +#: src/emc/usr_intf/pncconf/pncconf.glade:61583 +#: src/emc/usr_intf/pncconf/pncconf.glade:62817 +msgid "Pin _8:" +msgstr "Pin _8:" + +#: src/emc/usr_intf/stepconf/pport1.glade:179 +#: src/emc/usr_intf/stepconf/pport2.glade:1090 +#: src/emc/usr_intf/pncconf/pncconf.glade:61566 +#: src/emc/usr_intf/pncconf/pncconf.glade:62803 +msgid "Pin _9:" +msgstr "Pin _9:" + +#: src/emc/usr_intf/stepconf/pport1.glade:194 +#: src/emc/usr_intf/stepconf/pport2.glade:1137 +#: src/emc/usr_intf/pncconf/pncconf.glade:62789 +msgid "_Pin 14:" +msgstr "_Pin 14:" + +#: src/emc/usr_intf/stepconf/pport1.glade:209 +#: src/emc/usr_intf/stepconf/pport2.glade:1185 +#: src/emc/usr_intf/pncconf/pncconf.glade:62775 +msgid "P_in 16:" +msgstr "P_in 16:" + +#: src/emc/usr_intf/stepconf/pport1.glade:224 +#: src/emc/usr_intf/stepconf/pport2.glade:1233 +#: src/emc/usr_intf/pncconf/pncconf.glade:62761 +msgid "Pi_n 17:" +msgstr "Pi_n 17:" + +#: src/emc/usr_intf/stepconf/pport1.glade:470 +#: src/emc/usr_intf/stepconf/pport2.glade:692 +msgid "Outputs (PC to Mill):" +msgstr "Ausgänge (vom PC zur Maschine)" + +#: src/emc/usr_intf/stepconf/pport1.glade:483 +#: src/emc/usr_intf/stepconf/pport2.glade:427 +#: src/emc/usr_intf/pncconf/pncconf.glade:61701 +msgid "Pin 1_0:" +msgstr "Pin 1_0:" + +#: src/emc/usr_intf/stepconf/pport1.glade:500 +#: src/emc/usr_intf/stepconf/pport2.glade:475 +#: src/emc/usr_intf/pncconf/pncconf.glade:61717 +msgid "Pin 1_1:" +msgstr "Pin 1_1:" -#: src/emc/usr_intf/stepconf/stepconf.glade:538 -#: emc/usr_intf/stepconf/stepconf.glade:649 -msgid "First Parport _Base Address:" +#: src/emc/usr_intf/stepconf/pport1.glade:517 +#: src/emc/usr_intf/stepconf/pport2.glade:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:61733 +msgid "Pin 1_2:" +msgstr "Pin 1_2:" + +#: src/emc/usr_intf/stepconf/pport1.glade:534 +#: src/emc/usr_intf/stepconf/pport2.glade:571 +#: src/emc/usr_intf/pncconf/pncconf.glade:61749 +msgid "Pin 1_3:" +msgstr "Pin 1_3:" + +#: src/emc/usr_intf/stepconf/pport1.glade:551 +#: src/emc/usr_intf/stepconf/pport2.glade:619 +#: src/emc/usr_intf/pncconf/pncconf.glade:61765 +msgid "Pin 1_5:" +msgstr "Pin 1_5:" + +#: src/emc/usr_intf/stepconf/pport1.glade:590 +#: src/emc/usr_intf/stepconf/pport2.glade:16 +msgid "Inputs (Mill to PC):" +msgstr "Eingänge (von der Maschine zum PC)" + +#: src/emc/usr_intf/stepconf/pport1.glade:618 +#: src/emc/usr_intf/stepconf/pport1.glade:632 +#: src/emc/usr_intf/stepconf/pport2.glade:29 +#: src/emc/usr_intf/stepconf/pport2.glade:702 +#: src/emc/usr_intf/pncconf/pncconf.glade:62335 +#: src/emc/usr_intf/pncconf/pncconf.glade:62348 +msgid "Invert" +msgstr "Invertieren" + +#: src/emc/usr_intf/stepconf/pport1.glade:1018 +msgid "Output pinout presets:" +msgstr "Vordefinierte Ausgangskonfigurationen:" + +#: src/emc/usr_intf/stepconf/pport1.glade:1096 +#, fuzzy +msgid "Parport _Base Address:" msgstr "Adresse der ersten _parallelen Schnittstelle:" -#: src/emc/usr_intf/stepconf/stepconf.glade:564 -msgid " Out" -msgstr "" +#: src/emc/usr_intf/stepconf/pport1.glade:1132 +#, fuzzy +msgid "Preset" +msgstr "Zurücksetzen" -#: src/emc/usr_intf/stepconf/stepconf.glade:575 -#: src/emc/usr_intf/stepconf/stepconf.glade:591 -msgid "" -"Out\n" -"In" -msgstr "" +#: src/emc/usr_intf/stepconf/pport2.glade:47 +#, fuzzy +msgid "Pin 2:" +msgstr "Pin _2:" -#: src/emc/usr_intf/stepconf/stepconf.glade:633 -#: emc/usr_intf/stepconf/stepconf.glade:458 -msgid "S_econd Parport Address:" -msgstr "Adresse der z_weiten parallellen Schnittstelle:" +#: src/emc/usr_intf/stepconf/pport2.glade:94 +#, fuzzy +msgid "Pin 3:" +msgstr "Pin _3:" -#: src/emc/usr_intf/stepconf/stepconf.glade:650 -#: emc/usr_intf/stepconf/stepconf.glade:442 -msgid "T_hird Parport Address:" -msgstr "Adresse der dr_itten parallellen Schnittstelle:" +#: src/emc/usr_intf/stepconf/pport2.glade:141 +#, fuzzy +msgid "Pin 4:" +msgstr "Pin _4:" -#: src/emc/usr_intf/stepconf/stepconf.glade:667 +#: src/emc/usr_intf/stepconf/pport2.glade:188 #, fuzzy -msgid " Parallel Port Settings" -msgstr "Konfiguration der Druckerschnittstelle" +msgid "Pin 5:" +msgstr "Pin _5:" -#: src/emc/usr_intf/stepconf/stepconf.glade:684 -#: emc/usr_intf/stepconf/stepconf.glade:929 -msgid "" -"_Test Base\n" -"Period Jitter " -msgstr "" -"Systemtakt-Abweichung\n" -"(Jitter) er_mitteln" +#: src/emc/usr_intf/stepconf/pport2.glade:235 +#, fuzzy +msgid "Pin 6:" +msgstr "Pin _6:" -#: src/emc/usr_intf/stepconf/stepconf.glade:703 -#: emc/usr_intf/stepconf/stepconf.glade:916 -msgid "Machine _Name:" -msgstr "Maschinen_name:" +#: src/emc/usr_intf/stepconf/pport2.glade:282 +#, fuzzy +msgid "Pin 7:" +msgstr "Pin _7:" -#: src/emc/usr_intf/stepconf/stepconf.glade:716 -#: emc/usr_intf/stepconf/stepconf.glade:902 -msgid "_Axis configuration:" -msgstr "A_chsen:" +#: src/emc/usr_intf/stepconf/pport2.glade:329 +#, fuzzy +msgid "Pin 8:" +msgstr "Pin _8:" -#: src/emc/usr_intf/stepconf/stepconf.glade:730 -#: emc/usr_intf/stepconf/stepconf.glade:888 -msgid "Machine _units:" -msgstr "_Einheiten:" +#: src/emc/usr_intf/stepconf/pport2.glade:376 +#, fuzzy +msgid "Pin 9:" +msgstr "Pin _9:" -#: src/emc/usr_intf/stepconf/stepconf.glade:744 -#: src/emc/usr_intf/pncconf/pncconf.glade:246 -#: emc/usr_intf/stepconf/stepconf.glade:755 -#: emc/usr_intf/pncconf/pncconf.glade:244 -msgid "Configuration directory:" -msgstr "Verzeichnis:" +#: src/emc/usr_intf/stepconf/pport2.glade:721 +#, fuzzy +msgid "Pin _1: " +msgstr "Pin _1:" -#: src/emc/usr_intf/stepconf/stepconf.glade:757 -#: emc/usr_intf/stepconf/stepconf.glade:741 -msgid "D_river type:" -msgstr "En_dstufe:" +#: src/emc/usr_intf/stepconf/pport2.glade:1431 +msgid "Out" +msgstr "Ausgang" -#: src/emc/usr_intf/stepconf/stepconf.glade:785 -#: src/emc/usr_intf/pncconf/pncconf.glade:326 -#: emc/usr_intf/stepconf/stepconf.glade:710 -#: emc/usr_intf/pncconf/pncconf.glade:324 -msgid "" -"Inch\n" -"Millimeter" -msgstr "" -"Inch\n" -"Millimeter" +#: src/emc/usr_intf/stepconf/pport2.glade:1434 +#, fuzzy +msgid "In" +msgstr "Invertieren" -#: src/emc/usr_intf/stepconf/stepconf.glade:800 -#: src/emc/usr_intf/pncconf/pncconf.glade:291 -#: emc/usr_intf/stepconf/stepconf.glade:694 -#: emc/usr_intf/pncconf/pncconf.glade:289 -msgid "" -"XYZ\n" -"XYZA\n" -"XZ (Lathe)" +#: src/emc/usr_intf/stepconf/spindle.glade:23 +#, fuzzy +msgid "Use spindle-at-speed:" +msgstr "Spindelübersteuerung:" + +#: src/emc/usr_intf/stepconf/spindle.glade:64 +msgid "Speed display filter gain:" msgstr "" -"XYZ\n" -"XYZA\n" -"XZ (Drehmaschine)" -#: src/emc/usr_intf/stepconf/stepconf.glade:847 -#, fuzzy -msgid "" -"Driver characteristics: (Multiply by 1000 for times specified in µs or " -"microseconds)\n" -" Additional signal conditioning or isolation such as optocouplers " -"and RC filters\n" -" can impose timing constraints of their own, in addition to those of " -"the driver." -msgstr "" -"Einstellungen für Endstufe (alle Zeiten in Nanosekunden = 10^-9 s):\n" -"Zusätzliche Signalverarbeitungsbausteine oder Maßnahmen zur galvanischen \n" -"Trennung, wie Optokoppler oder RC-Filter, können zusätzliche Zeit benötigen." - -#: src/emc/usr_intf/stepconf/stepconf.glade:875 -#: emc/usr_intf/stepconf/stepconf.glade:508 -msgid "Base Period Maximum _Jitter:" -msgstr "Maximale Systemtakt-Abweichung (_Jitter):" +#: src/emc/usr_intf/stepconf/spindle.glade:99 +msgid "Calibration:" +msgstr "Kalibrierung:" -#: src/emc/usr_intf/stepconf/stepconf.glade:924 -#: emc/usr_intf/stepconf/stepconf.glade:344 -msgid "Max step rate:" -msgstr "Max. Schrittfrequenz:" +#: src/emc/usr_intf/stepconf/spindle.glade:113 +msgid "_Speed 1:" +msgstr "_Drehzahl 1:" -#: src/emc/usr_intf/stepconf/stepconf.glade:940 -#: emc/usr_intf/stepconf/stepconf.glade:328 -msgid "Min Base Period:" -msgstr "Min. Systemtakt:" +#: src/emc/usr_intf/stepconf/spindle.glade:129 +msgid "_PWM 1:" +msgstr "entspricht _PWM 1:" -#: src/emc/usr_intf/stepconf/stepconf.glade:956 -#: emc/usr_intf/stepconf/stepconf.glade:311 -msgid "" -"_Onscreen prompt for\n" -"tool change" -msgstr "_Bildschirmmitteilung bei Werkzeugwechsel" +#: src/emc/usr_intf/stepconf/spindle.glade:148 +msgid "S_peed 2:" +msgstr "D_rehzahl 2:" -#: src/emc/usr_intf/stepconf/stepconf.glade:1015 -#: emc/usr_intf/stepconf/stepconf.glade:3332 -msgid "Advanced Configuration Options" -msgstr "Erweiterte Konfiguration" +#: src/emc/usr_intf/stepconf/spindle.glade:164 +msgid "P_WM 2:" +msgstr "entspricht P_WM 2:" + +#: src/emc/usr_intf/stepconf/spindle.glade:183 +msgid "PWM _Rate:" +msgstr "PWM-_Frequenz:" + +#: src/emc/usr_intf/stepconf/spindle.glade:285 +msgid "_Cycles per revolution:" +msgstr "Encoder-_Takte pro Spindel-Umdrehung:" + +#: src/emc/usr_intf/stepconf/spindle.glade:347 +msgid "Enter 0 Hz for \"PDM\" mode" +msgstr "Für PDM 0Hz eingeben" -#: src/emc/usr_intf/stepconf/stepconf.glade:1033 -#: emc/usr_intf/stepconf/stepconf.glade:3348 +#: src/emc/usr_intf/stepconf/spindle.glade:360 +#, fuzzy +msgid "Scale %" +msgstr "Scale" + +#: src/emc/usr_intf/stepconf/options.glade:50 #, fuzzy msgid "Include Halui user interface component" msgstr "HalUI-Benutzerschnittstelle einbinden" -#: src/emc/usr_intf/stepconf/stepconf.glade:1074 -#: src/emc/usr_intf/pncconf/pncconf.glade:6745 -#: emc/usr_intf/stepconf/stepconf.glade:3405 -#: emc/usr_intf/pncconf/pncconf.glade:1248 +#: src/emc/usr_intf/stepconf/options.glade:102 +#: src/emc/usr_intf/pncconf/pncconf.glade:6753 msgid "Blank program" msgstr "Leeres Programm" -#: src/emc/usr_intf/stepconf/stepconf.glade:1089 -#: src/emc/usr_intf/pncconf/pncconf.glade:6760 +#: src/emc/usr_intf/stepconf/options.glade:119 +#: src/emc/usr_intf/pncconf/pncconf.glade:6768 #, fuzzy msgid "Spindle speed display " msgstr "Spindel-Drehzahl- / Werkzeug-Positions-Anzeige" -#: src/emc/usr_intf/stepconf/stepconf.glade:1105 -#: src/emc/usr_intf/stepconf/stepconf.glade:1543 -#: src/emc/usr_intf/pncconf/pncconf.glade:6791 -#: src/emc/usr_intf/pncconf/pncconf.glade:7112 -#: src/emc/usr_intf/pncconf/pncconf.glade:59393 -#: emc/usr_intf/stepconf/stepconf.glade:3436 -#: emc/usr_intf/stepconf/stepconf.glade:3824 -#: emc/usr_intf/pncconf/pncconf.glade:1295 -#: emc/usr_intf/pncconf/pncconf.glade:19169 +#: src/emc/usr_intf/stepconf/options.glade:136 +#: src/emc/usr_intf/stepconf/options.glade:671 +#: src/emc/usr_intf/pncconf/pncconf.glade:6799 +#: src/emc/usr_intf/pncconf/pncconf.glade:7120 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Existing custom program" msgstr "Bestehendes benutzerdefiniertes Programm" -#: src/emc/usr_intf/stepconf/stepconf.glade:1120 -#: src/emc/usr_intf/stepconf/stepconf.glade:1559 -#: src/emc/usr_intf/pncconf/pncconf.glade:6806 -#: src/emc/usr_intf/pncconf/pncconf.glade:59409 -#: emc/usr_intf/stepconf/stepconf.glade:3451 -#: emc/usr_intf/stepconf/stepconf.glade:3840 -#: emc/usr_intf/pncconf/pncconf.glade:1310 -#: emc/usr_intf/pncconf/pncconf.glade:19185 +#: src/emc/usr_intf/stepconf/options.glade:153 +#: src/emc/usr_intf/stepconf/options.glade:688 +#: src/emc/usr_intf/pncconf/pncconf.glade:6814 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Include connections to HAL" msgstr "Verbindungen zum HAL zulassen" -#: src/emc/usr_intf/stepconf/stepconf.glade:1154 -#: src/emc/usr_intf/pncconf/pncconf.glade:6989 -#: src/emc/usr_intf/pncconf/pncconf.glade:7537 -#: emc/usr_intf/stepconf/stepconf.glade:3485 -#: emc/usr_intf/pncconf/pncconf.glade:1490 +#: src/emc/usr_intf/stepconf/options.glade:202 +#: src/emc/usr_intf/pncconf/pncconf.glade:6997 +#: src/emc/usr_intf/pncconf/pncconf.glade:7545 #, fuzzy msgid "" "_Display\n" @@ -7877,509 +9311,266 @@ msgid "" "panel" msgstr "Beispiel-Panelanzeigen" -#: src/emc/usr_intf/stepconf/stepconf.glade:1188 -#: src/emc/usr_intf/pncconf/pncconf.glade:7048 -#: emc/usr_intf/stepconf/stepconf.glade:3363 -#: emc/usr_intf/pncconf/pncconf.glade:1526 +#: src/emc/usr_intf/stepconf/options.glade:243 +#: src/emc/usr_intf/pncconf/pncconf.glade:7056 msgid "Include custom PyVCP GUI panel" msgstr "Benutzerdefiniertes PyVCP-Panel einbinden" -#: src/emc/usr_intf/stepconf/stepconf.glade:1321 -#: src/emc/usr_intf/pncconf/pncconf.glade:59199 -#: emc/usr_intf/stepconf/stepconf.glade:3659 -#: emc/usr_intf/pncconf/pncconf.glade:19004 +#: src/emc/usr_intf/stepconf/options.glade:414 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid " Number of analog (float) out pins:" msgstr "Analoge Ausgänge (float):" -#: src/emc/usr_intf/stepconf/stepconf.glade:1335 -#: src/emc/usr_intf/pncconf/pncconf.glade:59184 -#: emc/usr_intf/stepconf/stepconf.glade:3644 -#: emc/usr_intf/pncconf/pncconf.glade:18989 +#: src/emc/usr_intf/stepconf/options.glade:429 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid " Number of analog (float) in pins:" msgstr "Analoge Eingänge (float):" -#: src/emc/usr_intf/stepconf/stepconf.glade:1349 -#: src/emc/usr_intf/pncconf/pncconf.glade:59169 -#: emc/usr_intf/stepconf/stepconf.glade:3629 -#: emc/usr_intf/pncconf/pncconf.glade:18974 +#: src/emc/usr_intf/stepconf/options.glade:444 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid " Number of analog (s32) out pins:" msgstr "Analoge Ausgänge (s32):" -#: src/emc/usr_intf/stepconf/stepconf.glade:1363 -#: src/emc/usr_intf/pncconf/pncconf.glade:59153 -#: emc/usr_intf/stepconf/stepconf.glade:3613 -#: emc/usr_intf/pncconf/pncconf.glade:18958 +#: src/emc/usr_intf/stepconf/options.glade:459 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid " Number of analog (s32) in pins:" msgstr "Analoge Eingänge (s32):" -#: src/emc/usr_intf/stepconf/stepconf.glade:1378 -#: emc/usr_intf/stepconf/stepconf.glade:3598 -#: emc/usr_intf/pncconf/pncconf.glade:18943 +#: src/emc/usr_intf/stepconf/options.glade:475 #, fuzzy msgid "Number of digital out pins:" msgstr "Digitale Ausgänge:" -#: src/emc/usr_intf/stepconf/stepconf.glade:1403 -#: emc/usr_intf/stepconf/stepconf.glade:3587 -#: emc/usr_intf/pncconf/pncconf.glade:18932 +#: src/emc/usr_intf/stepconf/options.glade:506 msgid "Number of digital in pins:" msgstr "Digitale Eingänge:" -#: src/emc/usr_intf/stepconf/stepconf.glade:1414 +#: src/emc/usr_intf/stepconf/options.glade:518 #, fuzzy msgid "setup number of external pins" msgstr "Digitale Eingänge:" -#: src/emc/usr_intf/stepconf/stepconf.glade:1429 -#: src/emc/usr_intf/pncconf/pncconf.glade:59213 -#: emc/usr_intf/stepconf/stepconf.glade:3673 -#: emc/usr_intf/pncconf/pncconf.glade:19018 +#: src/emc/usr_intf/stepconf/options.glade:533 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Include modbus master support" msgstr "Modbus-Master-Unterstützung einbinden" -#: src/emc/usr_intf/stepconf/stepconf.glade:1500 -#: src/emc/usr_intf/pncconf/pncconf.glade:59333 -#: emc/usr_intf/stepconf/stepconf.glade:3781 -#: emc/usr_intf/pncconf/pncconf.glade:19126 +#: src/emc/usr_intf/stepconf/options.glade:625 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Blank ladder program" msgstr "Leeres Programm" -#: src/emc/usr_intf/stepconf/stepconf.glade:1513 -#: src/emc/usr_intf/pncconf/pncconf.glade:59346 -#: emc/usr_intf/stepconf/stepconf.glade:3794 -#: emc/usr_intf/pncconf/pncconf.glade:19139 +#: src/emc/usr_intf/stepconf/options.glade:638 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Estop ladder program" -msgstr "Notaus-Programm" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1527 -#: src/emc/usr_intf/pncconf/pncconf.glade:59377 -#: emc/usr_intf/stepconf/stepconf.glade:3808 -#: emc/usr_intf/pncconf/pncconf.glade:19153 -msgid "Serial modbus program" -msgstr "Serielles Modbus-Programm" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1592 -#: src/emc/usr_intf/pncconf/pncconf.glade:59443 -#: emc/usr_intf/stepconf/stepconf.glade:3873 -#: emc/usr_intf/pncconf/pncconf.glade:19219 -#, fuzzy -msgid "" -"Edit ladder\n" -"program" -msgstr "SPS-Programm bearbeiten" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1628 -#: src/emc/usr_intf/pncconf/pncconf.glade:59479 -#: emc/usr_intf/stepconf/stepconf.glade:3537 -#: emc/usr_intf/pncconf/pncconf.glade:19255 -#, fuzzy -msgid "Include _Classicladder PLC" -msgstr "SPS (Classicladder) einbinden" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1653 -#: emc/usr_intf/stepconf/stepconf.glade:958 -msgid "Parallel Port Setup" -msgstr "Konfiguration der Druckerschnittstelle" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1760 -#: src/emc/usr_intf/pncconf/pncconf.glade:54010 -#: emc/usr_intf/stepconf/stepconf.glade:2306 -#: emc/usr_intf/pncconf/pncconf.glade:14617 -msgid "Pin _1:" -msgstr "Pin _1:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1774 -#: src/emc/usr_intf/pncconf/pncconf.glade:54024 -#: src/emc/usr_intf/pncconf/pncconf.glade:55239 -#: emc/usr_intf/stepconf/stepconf.glade:2292 -#: emc/usr_intf/pncconf/pncconf.glade:13387 -#: emc/usr_intf/pncconf/pncconf.glade:14603 -msgid "Pin _2:" -msgstr "Pin _2:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1788 -#: src/emc/usr_intf/pncconf/pncconf.glade:54038 -#: src/emc/usr_intf/pncconf/pncconf.glade:55256 -#: emc/usr_intf/stepconf/stepconf.glade:2278 -#: emc/usr_intf/pncconf/pncconf.glade:13370 -#: emc/usr_intf/pncconf/pncconf.glade:14589 -msgid "Pin _3:" -msgstr "Pin _3:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1802 -#: src/emc/usr_intf/pncconf/pncconf.glade:54052 -#: src/emc/usr_intf/pncconf/pncconf.glade:55273 -#: emc/usr_intf/stepconf/stepconf.glade:2264 -#: emc/usr_intf/pncconf/pncconf.glade:13353 -#: emc/usr_intf/pncconf/pncconf.glade:14575 -msgid "Pin _4:" -msgstr "Pin _4:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1816 -#: src/emc/usr_intf/pncconf/pncconf.glade:54066 -#: src/emc/usr_intf/pncconf/pncconf.glade:55290 -#: emc/usr_intf/stepconf/stepconf.glade:2250 -#: emc/usr_intf/pncconf/pncconf.glade:13336 -#: emc/usr_intf/pncconf/pncconf.glade:14561 -msgid "Pin _5:" -msgstr "Pin _5:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1830 -#: src/emc/usr_intf/pncconf/pncconf.glade:54080 -#: src/emc/usr_intf/pncconf/pncconf.glade:55307 -#: emc/usr_intf/stepconf/stepconf.glade:2236 -#: emc/usr_intf/pncconf/pncconf.glade:13319 -#: emc/usr_intf/pncconf/pncconf.glade:14547 -msgid "Pin _6:" -msgstr "Pin _6:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1844 -#: src/emc/usr_intf/pncconf/pncconf.glade:54094 -#: src/emc/usr_intf/pncconf/pncconf.glade:55324 -#: emc/usr_intf/stepconf/stepconf.glade:2222 -#: emc/usr_intf/pncconf/pncconf.glade:13302 -#: emc/usr_intf/pncconf/pncconf.glade:14533 -msgid "Pin _7:" -msgstr "Pin _7:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1858 -#: src/emc/usr_intf/pncconf/pncconf.glade:54108 -#: src/emc/usr_intf/pncconf/pncconf.glade:55341 -#: emc/usr_intf/stepconf/stepconf.glade:2208 -#: emc/usr_intf/pncconf/pncconf.glade:13285 -#: emc/usr_intf/pncconf/pncconf.glade:14519 -msgid "Pin _8:" -msgstr "Pin _8:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1872 -#: src/emc/usr_intf/pncconf/pncconf.glade:54122 -#: src/emc/usr_intf/pncconf/pncconf.glade:55358 -#: emc/usr_intf/stepconf/stepconf.glade:2194 -#: emc/usr_intf/pncconf/pncconf.glade:13268 -#: emc/usr_intf/pncconf/pncconf.glade:14505 -msgid "Pin _9:" -msgstr "Pin _9:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1886 -#: src/emc/usr_intf/pncconf/pncconf.glade:54136 -#: emc/usr_intf/stepconf/stepconf.glade:2180 -#: emc/usr_intf/pncconf/pncconf.glade:14491 -msgid "_Pin 14:" -msgstr "_Pin 14:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1900 -#: src/emc/usr_intf/pncconf/pncconf.glade:54150 -#: emc/usr_intf/stepconf/stepconf.glade:2166 -#: emc/usr_intf/pncconf/pncconf.glade:14477 -msgid "P_in 16:" -msgstr "P_in 16:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1914 -#: src/emc/usr_intf/pncconf/pncconf.glade:54164 -#: emc/usr_intf/stepconf/stepconf.glade:2152 -#: emc/usr_intf/pncconf/pncconf.glade:14463 -msgid "Pi_n 17:" -msgstr "Pi_n 17:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2258 -#: emc/usr_intf/stepconf/stepconf.glade:1810 -msgid "Outputs (PC to Mill):" -msgstr "Ausgänge (vom PC zur Maschine)" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2270 -#: src/emc/usr_intf/pncconf/pncconf.glade:55222 -#: emc/usr_intf/stepconf/stepconf.glade:1794 -#: emc/usr_intf/pncconf/pncconf.glade:13403 -msgid "Pin 1_0:" -msgstr "Pin 1_0:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2286 -#: src/emc/usr_intf/pncconf/pncconf.glade:55206 -#: emc/usr_intf/stepconf/stepconf.glade:1778 -#: emc/usr_intf/pncconf/pncconf.glade:13419 -msgid "Pin 1_1:" -msgstr "Pin 1_1:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2302 -#: src/emc/usr_intf/pncconf/pncconf.glade:55190 -#: emc/usr_intf/stepconf/stepconf.glade:1762 -#: emc/usr_intf/pncconf/pncconf.glade:13435 -msgid "Pin 1_2:" -msgstr "Pin 1_2:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2318 -#: src/emc/usr_intf/pncconf/pncconf.glade:55174 -#: emc/usr_intf/stepconf/stepconf.glade:1746 -#: emc/usr_intf/pncconf/pncconf.glade:13451 -msgid "Pin 1_3:" -msgstr "Pin 1_3:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2334 -#: src/emc/usr_intf/pncconf/pncconf.glade:55158 -#: emc/usr_intf/stepconf/stepconf.glade:1730 -#: emc/usr_intf/pncconf/pncconf.glade:13467 -msgid "Pin 1_5:" -msgstr "Pin 1_5:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2399 -#: emc/usr_intf/stepconf/stepconf.glade:1668 -msgid "Inputs (Mill to PC):" -msgstr "Eingänge (von der Maschine zum PC)" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2425 -#: src/emc/usr_intf/stepconf/stepconf.glade:2438 -#: src/emc/usr_intf/pncconf/pncconf.glade:54578 -#: src/emc/usr_intf/pncconf/pncconf.glade:54591 -#: emc/usr_intf/stepconf/stepconf.glade:1629 -#: emc/usr_intf/stepconf/stepconf.glade:1642 -#: emc/usr_intf/pncconf/pncconf.glade:14037 -#: emc/usr_intf/pncconf/pncconf.glade:14050 -msgid "Invert" -msgstr "Invertieren" +msgstr "Notaus-Programm" -#: src/emc/usr_intf/stepconf/stepconf.glade:2887 -#: emc/usr_intf/stepconf/stepconf.glade:1175 -msgid "_Sherline Outputs" -msgstr "_Sherline" +#: src/emc/usr_intf/stepconf/options.glade:654 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Serial modbus program" +msgstr "Serielles Modbus-Programm" -#: src/emc/usr_intf/stepconf/stepconf.glade:2905 -#: emc/usr_intf/stepconf/stepconf.glade:1157 -msgid "_Xylotex Outputs" -msgstr "_Xylotex" +#: src/emc/usr_intf/stepconf/options.glade:740 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "" +"Edit ladder\n" +"program" +msgstr "SPS-Programm bearbeiten" -#: src/emc/usr_intf/stepconf/stepconf.glade:2923 -#: emc/usr_intf/stepconf/stepconf.glade:1142 -msgid "Output pinout presets:" -msgstr "Vordefinierte Ausgangskonfigurationen:" +#: src/emc/usr_intf/stepconf/options.glade:781 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Include _Classicladder PLC" +msgstr "SPS (Classicladder) einbinden" -#: src/emc/usr_intf/stepconf/stepconf.glade:3022 -#: src/emc/usr_intf/pncconf/pncconf.glade:57970 -#: emc/usr_intf/stepconf/stepconf.glade:2327 -#: emc/usr_intf/pncconf/pncconf.glade:16236 -msgid "X Axis Configuration" -msgstr "Konfiguration der X-Achse" +#: src/emc/usr_intf/stepconf/options.glade:802 +#, fuzzy +msgid "_Onscreen prompt for manual tool change" +msgstr "_Bildschirmmitteilung bei Werkzeugwechsel" -#: src/emc/usr_intf/stepconf/stepconf.glade:3090 -#: emc/usr_intf/stepconf/stepconf.glade:3035 +#: src/emc/usr_intf/stepconf/axisx.glade:31 +#: src/emc/usr_intf/stepconf/axisy.glade:31 +#: src/emc/usr_intf/stepconf/axisz.glade:31 +#: src/emc/usr_intf/stepconf/axisa.glade:45 msgid "_Motor steps per revolution:" msgstr "_Motorschritte pro Umdrehung:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3103 -#: emc/usr_intf/stepconf/stepconf.glade:3020 +#: src/emc/usr_intf/stepconf/axisx.glade:45 +#: src/emc/usr_intf/stepconf/axisy.glade:44 +#: src/emc/usr_intf/stepconf/axisz.glade:44 +#: src/emc/usr_intf/stepconf/axisa.glade:58 msgid "_Driver Microstepping:" msgstr "M_ikroschritte (Vollschritt:1, Halbschritt:2, usw.):" -#: src/emc/usr_intf/stepconf/stepconf.glade:3118 -#: emc/usr_intf/stepconf/stepconf.glade:3005 -#: emc/usr_intf/pncconf/pncconf.glade:15632 -#: emc/usr_intf/pncconf/pncconf.glade:17813 +#: src/emc/usr_intf/stepconf/axisx.glade:61 +#: src/emc/usr_intf/stepconf/axisy.glade:59 +#: src/emc/usr_intf/stepconf/axisz.glade:59 +#: src/emc/usr_intf/stepconf/axisa.glade:73 msgid "_Pulley teeth (Motor:Leadscrew):" msgstr "_Untersetzung (Zähnezahl am Motor:Spindel):" -#: src/emc/usr_intf/stepconf/stepconf.glade:3133 -#: emc/usr_intf/stepconf/stepconf.glade:2990 -#: emc/usr_intf/pncconf/pncconf.glade:15568 +#: src/emc/usr_intf/stepconf/axisx.glade:77 +#: src/emc/usr_intf/stepconf/axisy.glade:74 +#: src/emc/usr_intf/stepconf/axisz.glade:74 +#: src/emc/usr_intf/stepconf/axisa.glade:88 msgid "_Leadscrew Pitch:" msgstr "_Spindelsteigung:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3148 -#: src/emc/usr_intf/pncconf/pncconf.glade:57858 -#: emc/usr_intf/stepconf/stepconf.glade:2975 -#: emc/usr_intf/pncconf/pncconf.glade:15553 -#: emc/usr_intf/pncconf/pncconf.glade:17751 +#: src/emc/usr_intf/stepconf/axisx.glade:93 +#: src/emc/usr_intf/stepconf/axisy.glade:89 +#: src/emc/usr_intf/stepconf/axisz.glade:89 +#: src/emc/usr_intf/stepconf/axisa.glade:103 +#: src/emc/usr_intf/pncconf/pncconf.glade:64687 msgid "Maximum _Velocity:" msgstr "Maximale _Geschwindigkeit" -#: src/emc/usr_intf/stepconf/stepconf.glade:3163 -#: src/emc/usr_intf/pncconf/pncconf.glade:57843 -#: emc/usr_intf/stepconf/stepconf.glade:2960 -#: emc/usr_intf/pncconf/pncconf.glade:15538 -#: emc/usr_intf/pncconf/pncconf.glade:17736 +#: src/emc/usr_intf/stepconf/axisx.glade:109 +#: src/emc/usr_intf/stepconf/axisy.glade:104 +#: src/emc/usr_intf/stepconf/axisz.glade:104 +#: src/emc/usr_intf/stepconf/axisa.glade:118 +#: src/emc/usr_intf/pncconf/pncconf.glade:64702 msgid "Maximum _Acceleration:" msgstr "Maximale Bes_chleunigung" -#: src/emc/usr_intf/stepconf/stepconf.glade:3178 -#: src/emc/usr_intf/pncconf/pncconf.glade:67063 -#: emc/usr_intf/stepconf/stepconf.glade:2945 -#: emc/usr_intf/pncconf/pncconf.glade:16083 -#: emc/usr_intf/pncconf/pncconf.glade:18165 +#: src/emc/usr_intf/stepconf/axisx.glade:125 +#: src/emc/usr_intf/stepconf/axisy.glade:119 +#: src/emc/usr_intf/stepconf/axisz.glade:119 +#: src/emc/usr_intf/stepconf/axisa.glade:133 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Time to accelerate to max speed:" msgstr "Zeit bis zum erreichend der maximalen Geschwindigkeit:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3193 -#: emc/usr_intf/stepconf/stepconf.glade:2930 +#: src/emc/usr_intf/stepconf/axisx.glade:141 +#: src/emc/usr_intf/stepconf/axisy.glade:134 +#: src/emc/usr_intf/stepconf/axisz.glade:134 +#: src/emc/usr_intf/stepconf/axisa.glade:148 msgid "Distance to accelerate to max speed:" msgstr "Weg bis zum erreichend der maximalen Geschwindigkeit:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3292 -#: src/emc/usr_intf/pncconf/pncconf.glade:67036 -#: emc/usr_intf/stepconf/stepconf.glade:2833 -#: emc/usr_intf/pncconf/pncconf.glade:16055 -#: emc/usr_intf/pncconf/pncconf.glade:18152 +#: src/emc/usr_intf/stepconf/axisx.glade:271 +#: src/emc/usr_intf/stepconf/axisy.glade:263 +#: src/emc/usr_intf/stepconf/axisz.glade:263 +#: src/emc/usr_intf/stepconf/axisa.glade:277 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Pulse rate at max speed:" msgstr "Schrittfrequenz bei maximaler Geschwindigkeit:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3362 -#: emc/usr_intf/stepconf/stepconf.glade:2761 +#: src/emc/usr_intf/stepconf/axisx.glade:342 +#: src/emc/usr_intf/stepconf/axisy.glade:334 +#: src/emc/usr_intf/stepconf/axisz.glade:334 +#: src/emc/usr_intf/stepconf/axisa.glade:348 msgid "_Home location:" msgstr "_Referenzpunkt:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3377 -#: emc/usr_intf/stepconf/stepconf.glade:2746 +#: src/emc/usr_intf/stepconf/axisx.glade:358 +#: src/emc/usr_intf/stepconf/axisy.glade:349 +#: src/emc/usr_intf/stepconf/axisz.glade:349 +#: src/emc/usr_intf/stepconf/axisa.glade:363 msgid "Home _Switch location:" msgstr "Re_ferenzschalter:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3392 -#: emc/usr_intf/stepconf/stepconf.glade:2731 +#: src/emc/usr_intf/stepconf/axisx.glade:374 +#: src/emc/usr_intf/stepconf/axisy.glade:364 +#: src/emc/usr_intf/stepconf/axisz.glade:364 +#: src/emc/usr_intf/stepconf/axisa.glade:378 msgid "Home Sear_ch velocity:" msgstr "Gesch_windigkeit Referenzfahrt:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3407 -#: emc/usr_intf/stepconf/stepconf.glade:2717 +#: src/emc/usr_intf/stepconf/axisx.glade:390 +#: src/emc/usr_intf/stepconf/axisy.glade:379 +#: src/emc/usr_intf/stepconf/axisz.glade:379 +#: src/emc/usr_intf/stepconf/axisa.glade:393 msgid "Home La_tch direction:" msgstr "Ric_htung beim Übernehmen des Referenzpunkt:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3420 -#: src/emc/usr_intf/pncconf/pncconf.glade:66232 -#: src/emc/usr_intf/pncconf/pncconf.glade:66274 -#: src/emc/usr_intf/pncconf/pncconf.glade:66505 -#: src/emc/usr_intf/pncconf/pncconf.glade:66570 -#: emc/usr_intf/stepconf/stepconf.glade:2699 -#: emc/usr_intf/pncconf/pncconf.glade:15598 -#: emc/usr_intf/pncconf/pncconf.glade:17780 +#: src/emc/usr_intf/stepconf/axisx.glade:404 +#: src/emc/usr_intf/stepconf/axisy.glade:393 +#: src/emc/usr_intf/stepconf/axisz.glade:393 +#: src/emc/usr_intf/stepconf/axisa.glade:407 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "_:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3437 -#: src/emc/usr_intf/pncconf/pncconf.glade:58536 -#: emc/usr_intf/stepconf/stepconf.glade:2684 -#: emc/usr_intf/pncconf/pncconf.glade:16658 -msgid "" -"Same\n" -"Opposite" -msgstr "" -"Gleiche Richtung\n" -"Entgegengesetzte Richtung" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3492 -#: emc/usr_intf/stepconf/stepconf.glade:2631 +#: src/emc/usr_intf/stepconf/axisx.glade:498 +#: src/emc/usr_intf/stepconf/axisy.glade:486 +#: src/emc/usr_intf/stepconf/axisz.glade:486 +#: src/emc/usr_intf/stepconf/axisa.glade:500 msgid "Tab_le travel:" msgstr "V_erfahrweg:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3519 -#: emc/usr_intf/stepconf/stepconf.glade:2600 +#: src/emc/usr_intf/stepconf/axisx.glade:531 +#: src/emc/usr_intf/stepconf/axisy.glade:518 +#: src/emc/usr_intf/stepconf/axisz.glade:518 +#: src/emc/usr_intf/stepconf/axisa.glade:532 msgid "t_o" msgstr "_bis" -#: src/emc/usr_intf/stepconf/stepconf.glade:3649 -#: emc/usr_intf/stepconf/stepconf.glade:2474 +#: src/emc/usr_intf/stepconf/axisx.glade:677 +#: src/emc/usr_intf/stepconf/axisy.glade:663 +#: src/emc/usr_intf/stepconf/axisz.glade:663 +#: src/emc/usr_intf/stepconf/axisa.glade:677 msgid "s" msgstr "s" -#: src/emc/usr_intf/stepconf/stepconf.glade:3703 -#: emc/usr_intf/stepconf/stepconf.glade:2433 +#: src/emc/usr_intf/stepconf/axisx.glade:738 +#: src/emc/usr_intf/stepconf/axisy.glade:724 +#: src/emc/usr_intf/stepconf/axisz.glade:724 +#: src/emc/usr_intf/stepconf/axisa.glade:738 msgid "T_est this axis" msgstr "Achse _testen" -#: src/emc/usr_intf/stepconf/stepconf.glade:3729 -#: emc/usr_intf/stepconf/stepconf.glade:2396 -#: emc/usr_intf/pncconf/pncconf.glade:15940 -#: emc/usr_intf/pncconf/pncconf.glade:18071 +#: src/emc/usr_intf/stepconf/axisx.glade:765 +#: src/emc/usr_intf/stepconf/axisy.glade:751 +#: src/emc/usr_intf/stepconf/axisz.glade:751 +#: src/emc/usr_intf/stepconf/axisa.glade:765 msgid "Axis SCALE:" msgstr "Maßstab der Achse:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3765 -#: emc/usr_intf/stepconf/stepconf.glade:3070 -#: emc/usr_intf/pncconf/pncconf.glade:16881 -msgid "Spindle Configuration" -msgstr "Konfiguration der Spindel" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3785 -#, fuzzy -msgid "Use spindle-at-speed:" -msgstr "Spindelübersteuerung:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3841 -msgid "Speed display filter gain:" +#: src/emc/usr_intf/stepconf/axisx.glade:833 +#: src/emc/usr_intf/stepconf/axisy.glade:819 +#: src/emc/usr_intf/stepconf/axisz.glade:819 +#: src/emc/usr_intf/stepconf/axisa.glade:12 +msgid "Same" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3870 -#: emc/usr_intf/stepconf/stepconf.glade:3312 -msgid "Calibration:" -msgstr "Kalibrierung:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3883 -#: emc/usr_intf/stepconf/stepconf.glade:3297 -msgid "_Speed 1:" -msgstr "_Drehzahl 1:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3898 -#: emc/usr_intf/stepconf/stepconf.glade:3279 -msgid "_PWM 1:" -msgstr "entspricht _PWM 1:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3916 -#: emc/usr_intf/stepconf/stepconf.glade:3264 -msgid "S_peed 2:" -msgstr "D_rehzahl 2:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3931 -#: emc/usr_intf/stepconf/stepconf.glade:3246 -msgid "P_WM 2:" -msgstr "entspricht P_WM 2:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3949 -#: emc/usr_intf/stepconf/stepconf.glade:3233 -msgid "PWM _Rate:" -msgstr "PWM-_Frequenz:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4025 -#: emc/usr_intf/stepconf/stepconf.glade:3155 -msgid "_Cycles per revolution:" -msgstr "Encoder-_Takte pro Spindel-Umdrehung:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4079 -#: emc/usr_intf/stepconf/stepconf.glade:3103 -msgid "Enter 0 Hz for \"PDM\" mode" -msgstr "Für PDM 0Hz eingeben" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4091 +#: src/emc/usr_intf/stepconf/axisx.glade:836 +#: src/emc/usr_intf/stepconf/axisy.glade:822 +#: src/emc/usr_intf/stepconf/axisz.glade:822 +#: src/emc/usr_intf/stepconf/axisa.glade:15 #, fuzzy -msgid "Scale %" -msgstr "Scale" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:60002 -#: emc/usr_intf/stepconf/stepconf.glade:3934 -#: emc/usr_intf/pncconf/pncconf.glade:19851 -msgid "Machine configuration complete" -msgstr "Maschinenkonfiguration komplett" +msgid "Opposite" +msgstr "" +"Gleiche Richtung\n" +"Entgegengesetzte Richtung" -#: src/emc/usr_intf/stepconf/stepconf.glade:4114 -#: src/emc/usr_intf/pncconf/pncconf.glade:60003 +#: src/emc/usr_intf/stepconf/finished.glade:6 #, fuzzy msgid "" -"All the necessary information has now been gathered. Click \"Apply\" to " -"write your configuration files to disk.\n" -"If you experience lockups while running LinuxCNC, you will need to decrease " -"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" +"All the necessary information has now been gathered. \n" +"Click \"Done\" to write your configuration files to disk.\n" "\n" -"If you experience lost steps while running LinuxCNC, first verify that you " -"entered the proper timings for your stepper drivers. If that does not fix " -"the problem, then run a more thorough latency test as described on the " -"linuxcnc.org wiki:\n" +"If you experience lockups while running LinuxCNC:\n" +"-you will need to decrease the maximum velocity which will have the effect " +"of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC:\n" +"-first verify that you entered the proper timings for your stepper " +"drivers. \n" +"-then run a more thorough latency test as described on the linuxcnc.org " +"wiki.\n" " http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" "\n" -"If you experience the \"Unexpected Realtime Delay\" message, run a more " -"thorough latency test as described on the linuxcnc.org wiki: \n" +"If you experience the \"Unexpected Realtime Delay\" message:\n" +"-run a more thorough latency test as described on the linuxcnc.org wiki: \n" " http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" msgstr "" -"Alle notwendigen Informationen wurden erfasst. Bestätigen Sie mit »Anwenden«, " -"um die Konfiguration zu speichern.\n" +"Alle notwendigen Informationen wurden erfasst. Bestätigen Sie mit " +"»Anwenden«, um die Konfiguration zu speichern.\n" "Falls EMC2 nicht mehr reagieren sollte, verkleinern Sie die maximale " "Geschwindigkeit, was die Zeit für einen Systemtakt (BASE_PERIOD) " "vergrößert.\n" @@ -8390,84 +9581,12 @@ msgstr "" "beschrieben werden:\n" " http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting\n" "\n" -"Falls Sie die Fehlermeldung »Unexpected Realtime Delay« erhalten, dann führen " -"bitte weiter Maßnahmen durch, wie sie im EMC2-Wiki beschrieben werden:\n" +"Falls Sie die Fehlermeldung »Unexpected Realtime Delay« erhalten, dann " +"führen bitte weiter Maßnahmen durch, wie sie im EMC2-Wiki beschrieben " +"werden:\n" " http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting" -#: src/emc/usr_intf/stepconf/stepconf.glade:4160 -#: src/emc/usr_intf/pncconf/pncconf.glade:60462 -#: src/emc/usr_intf/pncconf/pncconf.glade:61557 -#: src/emc/usr_intf/pncconf/pncconf.glade:62650 -#: src/emc/usr_intf/pncconf/pncconf.glade:63743 -#: src/emc/usr_intf/pncconf/pncconf.glade:64842 -#: emc/usr_intf/stepconf/stepconf.glade:4233 -#: emc/usr_intf/pncconf/pncconf.glade:20325 -#: emc/usr_intf/pncconf/pncconf.glade:21348 -#: emc/usr_intf/pncconf/pncconf.glade:22048 -#: emc/usr_intf/pncconf/pncconf.glade:22748 -msgid "Acceleration:" -msgstr "Beschleunigung:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4174 -#: src/emc/usr_intf/pncconf/pncconf.glade:60231 -#: src/emc/usr_intf/pncconf/pncconf.glade:60695 -#: src/emc/usr_intf/pncconf/pncconf.glade:61788 -#: src/emc/usr_intf/pncconf/pncconf.glade:62881 -#: src/emc/usr_intf/pncconf/pncconf.glade:63974 -#: src/emc/usr_intf/pncconf/pncconf.glade:64954 -#: emc/usr_intf/stepconf/stepconf.glade:4219 -#: emc/usr_intf/pncconf/pncconf.glade:20058 -#: emc/usr_intf/pncconf/pncconf.glade:20339 -#: emc/usr_intf/pncconf/pncconf.glade:21362 -#: emc/usr_intf/pncconf/pncconf.glade:22062 -#: emc/usr_intf/pncconf/pncconf.glade:22762 -msgid "Jog:" -msgstr "Verfahren:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4188 -#: src/emc/usr_intf/pncconf/pncconf.glade:60681 -#: src/emc/usr_intf/pncconf/pncconf.glade:61774 -#: src/emc/usr_intf/pncconf/pncconf.glade:62867 -#: src/emc/usr_intf/pncconf/pncconf.glade:63960 -#: emc/usr_intf/stepconf/stepconf.glade:4205 -#: emc/usr_intf/pncconf/pncconf.glade:20353 -#: emc/usr_intf/pncconf/pncconf.glade:21376 -#: emc/usr_intf/pncconf/pncconf.glade:22076 -#: emc/usr_intf/pncconf/pncconf.glade:22776 -msgid "Test Area:" -msgstr "Testbereich:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4217 -#: emc/usr_intf/stepconf/stepconf.glade:4184 -msgid "mm/s^2" -msgstr "mm/s²" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4253 -#: emc/usr_intf/stepconf/stepconf.glade:4150 -msgid "mm/s" -msgstr "mm / s" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4329 -#: src/emc/usr_intf/pncconf/pncconf.glade:60620 -#: src/emc/usr_intf/pncconf/pncconf.glade:61713 -#: src/emc/usr_intf/pncconf/pncconf.glade:62806 -#: src/emc/usr_intf/pncconf/pncconf.glade:63899 -#: src/emc/usr_intf/pncconf/pncconf.glade:65066 -#: emc/usr_intf/stepconf/stepconf.glade:3971 -#: emc/usr_intf/pncconf/pncconf.glade:20492 -#: emc/usr_intf/pncconf/pncconf.glade:21511 -#: emc/usr_intf/pncconf/pncconf.glade:22211 -#: emc/usr_intf/pncconf/pncconf.glade:22911 -msgid "" -"±\n" -"+\n" -"-\n" -msgstr "" -"±\n" -"+\n" -"-\n" - -#: src/emc/usr_intf/pncconf/pncconf.py:79 emc/usr_intf/pncconf/pncconf.py:54 +#: src/emc/usr_intf/pncconf/pncconf.py:81 msgid "" "PNCconf encountered an error. The following information may be useful in " "troubleshooting:\n" @@ -8478,1253 +9597,1421 @@ msgstr "" "\n" #: src/emc/usr_intf/pncconf/pncconf.py:149 +msgid "Keling 4030" +msgstr "Keling 4030" + +#: src/emc/usr_intf/pncconf/pncconf.py:151 msgid "Not Used" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:149 -#: src/emc/usr_intf/pncconf/pncconf.py:150 +#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:176 msgid "Dummy" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:150 +#: src/emc/usr_intf/pncconf/pncconf.py:152 msgid "8i20 Servo Drive" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:153 #, fuzzy msgid "POT Output" msgstr "Unbenutzt" -#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:153 msgid "POT Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:153 #, fuzzy msgid "POT Direction" msgstr "X Richtung" -#: src/emc/usr_intf/pncconf/pncconf.py:152 emc/usr_intf/pncconf/pncconf.py:113 +#: src/emc/usr_intf/pncconf/pncconf.py:154 msgid "GPIO Input" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:152 emc/usr_intf/pncconf/pncconf.py:113 +#: src/emc/usr_intf/pncconf/pncconf.py:154 msgid "GPIO Output" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:152 emc/usr_intf/pncconf/pncconf.py:113 +#: src/emc/usr_intf/pncconf/pncconf.py:154 msgid "GPIO O Drain" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 +#: src/emc/usr_intf/pncconf/pncconf.py:155 #, fuzzy msgid "Quad Encoder-A" msgstr "Unbenutzt" -#: src/emc/usr_intf/pncconf/pncconf.py:153 +#: src/emc/usr_intf/pncconf/pncconf.py:155 #, fuzzy msgid "Quad Encoder-B" msgstr "Unbenutzt" -#: src/emc/usr_intf/pncconf/pncconf.py:153 +#: src/emc/usr_intf/pncconf/pncconf.py:155 #, fuzzy msgid "Quad Encoder-I" msgstr "Unbenutzt" -#: src/emc/usr_intf/pncconf/pncconf.py:153 +#: src/emc/usr_intf/pncconf/pncconf.py:155 #, fuzzy msgid "Quad Encoder-M" msgstr "Unbenutzt" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 #, fuzzy msgid "Muxed Encoder 0" msgstr "Unbenutzt" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 #, fuzzy msgid "Muxed Encoder 1" msgstr "Unbenutzt" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 msgid "muxed enc" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 msgid "mux enc mask" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 msgid "mux select" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:155 +#: src/emc/usr_intf/pncconf/pncconf.py:157 #, fuzzy msgid "Resolver 0 Encoder" msgstr "Bild invertieren" -#: src/emc/usr_intf/pncconf/pncconf.py:155 +#: src/emc/usr_intf/pncconf/pncconf.py:157 #, fuzzy msgid "Resolver 1 Encoder" msgstr "Bild invertieren" -#: src/emc/usr_intf/pncconf/pncconf.py:155 +#: src/emc/usr_intf/pncconf/pncconf.py:157 #, fuzzy msgid "Resolver 2 Encoder" msgstr "Bild invertieren" -#: src/emc/usr_intf/pncconf/pncconf.py:156 +#: src/emc/usr_intf/pncconf/pncconf.py:158 #, fuzzy msgid "Resolver 3 Encoder" msgstr "Bild invertieren" -#: src/emc/usr_intf/pncconf/pncconf.py:156 +#: src/emc/usr_intf/pncconf/pncconf.py:158 #, fuzzy msgid "Resolver 4 Encoder" msgstr "Bild invertieren" -#: src/emc/usr_intf/pncconf/pncconf.py:156 +#: src/emc/usr_intf/pncconf/pncconf.py:158 #, fuzzy msgid "Resolver 5 Encoder" msgstr "Bild invertieren" -#: src/emc/usr_intf/pncconf/pncconf.py:157 +#: src/emc/usr_intf/pncconf/pncconf.py:159 #, fuzzy msgid "Step Gen-A" msgstr "X Schritt" -#: src/emc/usr_intf/pncconf/pncconf.py:157 +#: src/emc/usr_intf/pncconf/pncconf.py:159 msgid "Dir Gen-B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 +#: src/emc/usr_intf/pncconf/pncconf.py:159 msgid "Step/Dir Gen-C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 +#: src/emc/usr_intf/pncconf/pncconf.py:159 msgid "Step/Dir Gen-D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:158 +#: src/emc/usr_intf/pncconf/pncconf.py:160 msgid "Step/Dir Gen-E" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:158 +#: src/emc/usr_intf/pncconf/pncconf.py:160 msgid "Step/dir Gen-F" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 +#: src/emc/usr_intf/pncconf/pncconf.py:161 msgid "Pulse Width Gen-P" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 +#: src/emc/usr_intf/pncconf/pncconf.py:161 msgid "Pulse Width Gen-D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 +#: src/emc/usr_intf/pncconf/pncconf.py:161 msgid "Pulse Width Gen-E" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 +#: src/emc/usr_intf/pncconf/pncconf.py:162 msgid "Pulse Density Gen-P" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 +#: src/emc/usr_intf/pncconf/pncconf.py:162 msgid "Pulse Density Gen-D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 +#: src/emc/usr_intf/pncconf/pncconf.py:162 msgid "Pulse Density Gen-E" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 +#: src/emc/usr_intf/pncconf/pncconf.py:163 msgid "Up/Down Mode -Up" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 +#: src/emc/usr_intf/pncconf/pncconf.py:163 msgid "Up/Down Mode-Down" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 +#: src/emc/usr_intf/pncconf/pncconf.py:163 msgid "Up/Down Mode-Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 +#: src/emc/usr_intf/pncconf/pncconf.py:164 msgid "Motor Phase A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 +#: src/emc/usr_intf/pncconf/pncconf.py:164 msgid "Motor Phase B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 +#: src/emc/usr_intf/pncconf/pncconf.py:164 msgid "Motor Phase C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Phase A Not" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Phase B Not" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Phase C Not" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Fault" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:165 +#: src/emc/usr_intf/pncconf/pncconf.py:168 msgid "SMARTSERIAL-P0-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P0-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P0-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-TX" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-RX" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-EN" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-TX" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-RX" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-EN" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-TX" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-RX" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-EN" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-TX" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-RX" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-EN" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-TX" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-RX" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-EN" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-TX" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-RX" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-EN" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-TX" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS0)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS2)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS3)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 I/O (SS0)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 Analog (SS1)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 I/O (SS3)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 Analog (SS4)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:176 +#, fuzzy +msgid "Analog Input" +msgstr "Manuelle Kontrolle" + +#: src/emc/usr_intf/pncconf/pncconf.py:277 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +#, fuzzy +msgid "Axis Selection" +msgstr "A Richtung" + +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "" +"7i64-Input\n" +"P3 and P4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "" +"7i64-Output\n" +"P2 and P5" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "7i64-Analog In" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:309 +msgid "" +"7i71-Output\n" +"TB3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:309 +msgid "" +"7i71-Output\n" +"TB2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-I/O\n" +"TB6" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-I/O\n" +"TB5" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:317 +#, fuzzy +msgid "" +"7i76-Analog Output\n" +"TB4" +msgstr "Unbenutzt" + +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #1" +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB7" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #2" +#: src/emc/usr_intf/pncconf/pncconf.py:325 +#, fuzzy +msgid "" +"7i77-Analog Output\n" +"TB5" +msgstr "Unbenutzt" + +#: src/emc/usr_intf/pncconf/pncconf.py:333 +msgid "7i73-I/O\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:420 +#: src/emc/usr_intf/pncconf/pncconf.py:348 #, fuzzy msgid "Unused Unused" msgstr "Unbenutzt" -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/pncconf/pncconf.py:370 #, fuzzy msgid "Machine Is Enabled" msgstr "Maschinen_name:" -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/pncconf/pncconf.py:370 #, fuzzy msgid "X Amplifier Enable" msgstr "Endstufe aktivieren" -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/pncconf/pncconf.py:370 #, fuzzy msgid "Y Amplifier Enable" msgstr "Endstufe aktivieren" -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/pncconf/pncconf.py:370 #, fuzzy msgid "Z Amplifier Enable" msgstr "Endstufe aktivieren" -#: src/emc/usr_intf/pncconf/pncconf.py:443 +#: src/emc/usr_intf/pncconf/pncconf.py:371 #, fuzzy msgid "A Amplifier Enable" msgstr "Endstufe aktivieren" -#: src/emc/usr_intf/pncconf/pncconf.py:443 +#: src/emc/usr_intf/pncconf/pncconf.py:371 msgid "Force Pin True" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 #, fuzzy msgid "S HALL 1" msgstr "HAL-INI speichern" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 #, fuzzy msgid "S HALL 2" msgstr "HAL-INI speichern" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 #, fuzzy msgid "S HALL 3" msgstr "HAL-INI speichern" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:450 emc/usr_intf/pncconf/pncconf.py:236 +#: src/emc/usr_intf/pncconf/pncconf.py:378 #, fuzzy msgid "Unused Output" msgstr "Unbenutzt" -#: src/emc/usr_intf/pncconf/pncconf.py:450 -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#, fuzzy -msgid "Spindle" -msgstr "Spindel:" - -#: src/emc/usr_intf/pncconf/pncconf.py:450 +#: src/emc/usr_intf/pncconf/pncconf.py:378 #, fuzzy msgid "Coolant" msgstr "Kühlung:" -#: src/emc/usr_intf/pncconf/pncconf.py:451 +#: src/emc/usr_intf/pncconf/pncconf.py:379 #, fuzzy msgid "Control" msgstr "Strg-M" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:480 +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:409 #, fuzzy msgid "Digital" msgstr "Digitaler Eingang 0" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:481 +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:410 #, fuzzy msgid "X BLDC Control" msgstr "Strg-M" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 #, fuzzy msgid "Y BLDC Control" msgstr "Strg-M" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 #, fuzzy msgid "Z BLDC Control" msgstr "Strg-M" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 #, fuzzy msgid "A BLDC Control" msgstr "Strg-M" -#: src/emc/usr_intf/pncconf/pncconf.py:453 +#: src/emc/usr_intf/pncconf/pncconf.py:381 msgid " S BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:453 -#: src/emc/usr_intf/pncconf/pncconf.py:483 -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#: src/emc/usr_intf/pncconf/pncconf.py:585 -#: src/emc/usr_intf/pncconf/pncconf.py:588 -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.py:597 -#: src/emc/usr_intf/pncconf/pncconf.py:614 -#: src/emc/usr_intf/pncconf/pncconf.py:629 +#: src/emc/usr_intf/pncconf/pncconf.py:381 +#: src/emc/usr_intf/pncconf/pncconf.py:412 +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#: src/emc/usr_intf/pncconf/pncconf.py:516 +#: src/emc/usr_intf/pncconf/pncconf.py:519 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.py:528 +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#: src/emc/usr_intf/pncconf/pncconf.py:568 +#: src/emc/usr_intf/pncconf/pncconf.py:580 #, fuzzy msgid "Custom Signals" msgstr "_Signale" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 emc/usr_intf/pncconf/pncconf.py:247 +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 #, fuzzy msgid "X Minimum Limit" msgstr "Endschalter Mimimum X" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 emc/usr_intf/pncconf/pncconf.py:247 +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 #, fuzzy msgid "Y Minimum Limit" msgstr "Endschalter Mimimum X" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 emc/usr_intf/pncconf/pncconf.py:247 +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 #, fuzzy msgid "Z Minimum Limit" msgstr "Endschalter Mimimum X" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 emc/usr_intf/pncconf/pncconf.py:247 +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 #, fuzzy msgid "A Minimum Limit" msgstr "Endschalter Mimimum X" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 emc/usr_intf/pncconf/pncconf.py:248 +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 #, fuzzy msgid "X Maximum Limit" msgstr "Endschalter Maximum X" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 emc/usr_intf/pncconf/pncconf.py:248 +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 #, fuzzy msgid "Y Maximum Limit" msgstr "Endschalter Maximum X" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 emc/usr_intf/pncconf/pncconf.py:248 +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 #, fuzzy msgid "Z Maximum Limit" msgstr "Endschalter Maximum X" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 emc/usr_intf/pncconf/pncconf.py:248 +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 #, fuzzy msgid "A Maximum Limit" msgstr "Endschalter Maximum X" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 emc/usr_intf/pncconf/pncconf.py:249 +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 #, fuzzy msgid "X Both Limit" msgstr "Beide Endschalter X" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 emc/usr_intf/pncconf/pncconf.py:249 +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 #, fuzzy msgid "Y Both Limit" msgstr "Beide Endschalter X" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 emc/usr_intf/pncconf/pncconf.py:249 +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 #, fuzzy msgid "Z Both Limit" msgstr "Beide Endschalter X" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 emc/usr_intf/pncconf/pncconf.py:249 +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 #, fuzzy msgid "A Both Limit" msgstr "Beide Endschalter X" -#: src/emc/usr_intf/pncconf/pncconf.py:458 -#: src/emc/usr_intf/pncconf/pncconf.py:546 +#: src/emc/usr_intf/pncconf/pncconf.py:386 +#: src/emc/usr_intf/pncconf/pncconf.py:477 #, fuzzy msgid "All Limits" msgstr "Alle Endschalter" -#: src/emc/usr_intf/pncconf/pncconf.py:459 emc/usr_intf/pncconf/pncconf.py:243 +#: src/emc/usr_intf/pncconf/pncconf.py:387 #, fuzzy msgid "X Home" msgstr "Pos1" -#: src/emc/usr_intf/pncconf/pncconf.py:459 emc/usr_intf/pncconf/pncconf.py:243 +#: src/emc/usr_intf/pncconf/pncconf.py:387 #, fuzzy msgid "Y Home" msgstr "Pos1" -#: src/emc/usr_intf/pncconf/pncconf.py:459 emc/usr_intf/pncconf/pncconf.py:243 +#: src/emc/usr_intf/pncconf/pncconf.py:387 #, fuzzy msgid "Z Home" msgstr "Pos1" -#: src/emc/usr_intf/pncconf/pncconf.py:459 emc/usr_intf/pncconf/pncconf.py:243 +#: src/emc/usr_intf/pncconf/pncconf.py:387 #, fuzzy msgid "A Home" msgstr "Pos1" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:387 #, fuzzy msgid "All Home" msgstr "Alle Referenzschalter" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 emc/usr_intf/pncconf/pncconf.py:244 +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 #, fuzzy msgid "X Minimum Limit + Home" msgstr "Min. End. + Ref. X" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 emc/usr_intf/pncconf/pncconf.py:244 +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 #, fuzzy msgid "Y Minimum Limit + Home" msgstr "Min. End. + Ref. X" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 emc/usr_intf/pncconf/pncconf.py:244 +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 #, fuzzy msgid "Z Minimum Limit + Home" msgstr "Min. End. + Ref. X" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 emc/usr_intf/pncconf/pncconf.py:244 +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 #, fuzzy msgid "A Minimum Limit + Home" msgstr "Min. End. + Ref. X" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 emc/usr_intf/pncconf/pncconf.py:245 +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 #, fuzzy msgid "X Maximum Limit + Home" msgstr "Max. End. + Ref. X" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 emc/usr_intf/pncconf/pncconf.py:245 +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 #, fuzzy msgid "Y Maximum Limit + Home" msgstr "Max. End. + Ref. X" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 emc/usr_intf/pncconf/pncconf.py:245 +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 #, fuzzy msgid "Z Maximum Limit + Home" msgstr "Max. End. + Ref. X" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 emc/usr_intf/pncconf/pncconf.py:245 +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 #, fuzzy msgid "A Maximum Limit + Home" msgstr "Max. End. + Ref. X" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 emc/usr_intf/pncconf/pncconf.py:246 +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 #, fuzzy msgid "X Both Limit + Home" msgstr "Beide End. + Ref. X" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 emc/usr_intf/pncconf/pncconf.py:246 +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 #, fuzzy msgid "Y Both Limit + Home" msgstr "Beide End. + Ref. X" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 #, fuzzy msgid "Z Both Limit + Home" msgstr "Beide End. + Ref. X" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 emc/usr_intf/pncconf/pncconf.py:246 +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 #, fuzzy msgid "A Both Limit + Home" msgstr "Beide End. + Ref. X" -#: src/emc/usr_intf/pncconf/pncconf.py:464 +#: src/emc/usr_intf/pncconf/pncconf.py:392 #, fuzzy msgid "Joint select A" msgstr "Aktive Achse verfahren" -#: src/emc/usr_intf/pncconf/pncconf.py:464 +#: src/emc/usr_intf/pncconf/pncconf.py:392 #, fuzzy msgid "Joint select B" msgstr "Aktive Achse verfahren" -#: src/emc/usr_intf/pncconf/pncconf.py:464 +#: src/emc/usr_intf/pncconf/pncconf.py:392 #, fuzzy msgid "Joint select C" msgstr "Aktive Achse verfahren" -#: src/emc/usr_intf/pncconf/pncconf.py:464 +#: src/emc/usr_intf/pncconf/pncconf.py:392 #, fuzzy msgid "Joint select D" msgstr "Aktive Achse verfahren" -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Jog incr A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Jog incr B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Jog incr C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Jog incr D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/pncconf/pncconf.py:393 #, fuzzy msgid "Feed Override incr A" msgstr "Vorschubübersteuerung:" -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/pncconf/pncconf.py:393 #, fuzzy msgid "Feed Override incr B" msgstr "Vorschubübersteuerung:" -#: src/emc/usr_intf/pncconf/pncconf.py:466 +#: src/emc/usr_intf/pncconf/pncconf.py:394 #, fuzzy msgid "Feed Override incr C" msgstr "Vorschubübersteuerung:" -#: src/emc/usr_intf/pncconf/pncconf.py:466 +#: src/emc/usr_intf/pncconf/pncconf.py:394 #, fuzzy msgid "Feed Override incr D" msgstr "Vorschubübersteuerung:" -#: src/emc/usr_intf/pncconf/pncconf.py:466 +#: src/emc/usr_intf/pncconf/pncconf.py:394 #, fuzzy msgid "Spindle Override incr A" msgstr "Spindelübersteuerung:" -#: src/emc/usr_intf/pncconf/pncconf.py:466 +#: src/emc/usr_intf/pncconf/pncconf.py:394 #, fuzzy msgid "Spindle Override incr B" msgstr "Spindelübersteuerung:" -#: src/emc/usr_intf/pncconf/pncconf.py:467 +#: src/emc/usr_intf/pncconf/pncconf.py:395 #, fuzzy msgid "Spindle Override incr C" msgstr "Spindelübersteuerung:" -#: src/emc/usr_intf/pncconf/pncconf.py:467 +#: src/emc/usr_intf/pncconf/pncconf.py:395 #, fuzzy msgid "Spindle Override incr D" msgstr "Spindelübersteuerung:" -#: src/emc/usr_intf/pncconf/pncconf.py:467 +#: src/emc/usr_intf/pncconf/pncconf.py:395 msgid "Max Vel Override incr A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:467 +#: src/emc/usr_intf/pncconf/pncconf.py:395 msgid "Max Vel Override incr B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:468 +#: src/emc/usr_intf/pncconf/pncconf.py:396 msgid "Max Vel Override incr C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:468 +#: src/emc/usr_intf/pncconf/pncconf.py:396 msgid "Max Vel Override incr D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:469 +#: src/emc/usr_intf/pncconf/pncconf.py:396 +#, fuzzy +msgid "Feed Override enable" +msgstr "Vorschubübersteuerung:" + +#: src/emc/usr_intf/pncconf/pncconf.py:396 +#, fuzzy +msgid "Spindle Override enable" +msgstr "Spindelübersteuerung:" + +#: src/emc/usr_intf/pncconf/pncconf.py:397 +#, fuzzy +msgid "Max Vel Override enable" +msgstr "Vorschubübersteuerung:" + +#: src/emc/usr_intf/pncconf/pncconf.py:398 #, fuzzy msgid "Manual Spindle CW" msgstr "Spindel rechts" -#: src/emc/usr_intf/pncconf/pncconf.py:469 +#: src/emc/usr_intf/pncconf/pncconf.py:398 #, fuzzy msgid "Manual Spindle CCW" msgstr "Spindel links" -#: src/emc/usr_intf/pncconf/pncconf.py:469 +#: src/emc/usr_intf/pncconf/pncconf.py:398 #, fuzzy msgid "Manual Spindle Stop" msgstr "SPINDEL LANGSAMER" -#: src/emc/usr_intf/pncconf/pncconf.py:469 +#: src/emc/usr_intf/pncconf/pncconf.py:398 #, fuzzy msgid "Spindle Up-To-Speed" msgstr "Spindeldrehzahl (1/min)" -#: src/emc/usr_intf/pncconf/pncconf.py:470 +#: src/emc/usr_intf/pncconf/pncconf.py:399 msgid "Cycle Start" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:470 +#: src/emc/usr_intf/pncconf/pncconf.py:399 msgid "Abort" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:470 +#: src/emc/usr_intf/pncconf/pncconf.py:399 #, fuzzy msgid "Single Step" msgstr "ein Leerzeichen" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 #, fuzzy msgid "Jog X +" msgstr "X +" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 #, fuzzy msgid "Jog X -" msgstr "X -" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 msgid "Jog Y +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 msgid "Jog Y -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 msgid "Jog Z +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 msgid "Jog Z -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 msgid "Jog A +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 msgid "Jog A -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:478 +#: src/emc/usr_intf/pncconf/pncconf.py:407 #, fuzzy msgid "Jog button selected +" msgstr "Aktive Achse verfahren" -#: src/emc/usr_intf/pncconf/pncconf.py:478 +#: src/emc/usr_intf/pncconf/pncconf.py:407 #, fuzzy msgid "Jog button selected -" msgstr "Aktive Achse verfahren" -#: src/emc/usr_intf/pncconf/pncconf.py:479 emc/usr_intf/pncconf/pncconf.py:242 +#: src/emc/usr_intf/pncconf/pncconf.py:408 #, fuzzy msgid "Unused Input" msgstr "Unbenutzt" -#: src/emc/usr_intf/pncconf/pncconf.py:479 +#: src/emc/usr_intf/pncconf/pncconf.py:408 #, fuzzy msgid "Limits" msgstr "Alle Endschalter" -#: src/emc/usr_intf/pncconf/pncconf.py:479 +#: src/emc/usr_intf/pncconf/pncconf.py:408 msgid "Limts/Home Shared" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#, fuzzy -msgid "Axis Selection" -msgstr "A Richtung" - -#: src/emc/usr_intf/pncconf/pncconf.py:480 +#: src/emc/usr_intf/pncconf/pncconf.py:409 #, fuzzy msgid "Overrides" msgstr "Grenzwerte aufheben" -#: src/emc/usr_intf/pncconf/pncconf.py:481 +#: src/emc/usr_intf/pncconf/pncconf.py:410 #, fuzzy msgid "Operation" msgstr "Beschleunigung:" -#: src/emc/usr_intf/pncconf/pncconf.py:481 +#: src/emc/usr_intf/pncconf/pncconf.py:410 #, fuzzy msgid "External Control" msgstr "Manuelle Kontrolle" -#: src/emc/usr_intf/pncconf/pncconf.py:481 +#: src/emc/usr_intf/pncconf/pncconf.py:410 #, fuzzy msgid "Axis rapid" msgstr "Achse" -#: src/emc/usr_intf/pncconf/pncconf.py:483 +#: src/emc/usr_intf/pncconf/pncconf.py:412 #, fuzzy msgid "S BLDC Control" msgstr "Strg-M" -#: src/emc/usr_intf/pncconf/pncconf.py:556 emc/usr_intf/pncconf/pncconf.py:277 +#: src/emc/usr_intf/pncconf/pncconf.py:487 #, fuzzy msgid "Unused PWM Gen" msgstr "Unbenutzt" -#: src/emc/usr_intf/pncconf/pncconf.py:556 +#: src/emc/usr_intf/pncconf/pncconf.py:487 #, fuzzy msgid "X Axis PWM" msgstr "Achse" -#: src/emc/usr_intf/pncconf/pncconf.py:556 +#: src/emc/usr_intf/pncconf/pncconf.py:487 #, fuzzy msgid "Y Axis PWM" msgstr "Achse" -#: src/emc/usr_intf/pncconf/pncconf.py:557 +#: src/emc/usr_intf/pncconf/pncconf.py:488 #, fuzzy msgid "Z Axis PWM" msgstr "Achse" -#: src/emc/usr_intf/pncconf/pncconf.py:557 +#: src/emc/usr_intf/pncconf/pncconf.py:488 #, fuzzy msgid "A Axis PWM" msgstr "Achse" -#: src/emc/usr_intf/pncconf/pncconf.py:581 +#: src/emc/usr_intf/pncconf/pncconf.py:512 #, fuzzy msgid "X Encoder" msgstr "Ende" -#: src/emc/usr_intf/pncconf/pncconf.py:581 +#: src/emc/usr_intf/pncconf/pncconf.py:512 #, fuzzy msgid "Y Encoder" msgstr "Ende" -#: src/emc/usr_intf/pncconf/pncconf.py:581 +#: src/emc/usr_intf/pncconf/pncconf.py:512 #, fuzzy msgid "Z Encoder" msgstr "Ende" -#: src/emc/usr_intf/pncconf/pncconf.py:581 +#: src/emc/usr_intf/pncconf/pncconf.py:512 #, fuzzy msgid "A Encoder" msgstr "Ende" -#: src/emc/usr_intf/pncconf/pncconf.py:581 +#: src/emc/usr_intf/pncconf/pncconf.py:512 #, fuzzy msgid "Spindle Encoder" msgstr "Spindelencoder Kanal A" -#: src/emc/usr_intf/pncconf/pncconf.py:582 +#: src/emc/usr_intf/pncconf/pncconf.py:513 msgid "X Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 +#: src/emc/usr_intf/pncconf/pncconf.py:513 msgid "Y Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 +#: src/emc/usr_intf/pncconf/pncconf.py:513 msgid "Z Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 +#: src/emc/usr_intf/pncconf/pncconf.py:513 msgid "A Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 +#: src/emc/usr_intf/pncconf/pncconf.py:513 msgid "Multi Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:583 +#: src/emc/usr_intf/pncconf/pncconf.py:514 #, fuzzy msgid "Feed Override" msgstr "Vorschubübersteuerung:" -#: src/emc/usr_intf/pncconf/pncconf.py:583 +#: src/emc/usr_intf/pncconf/pncconf.py:514 #, fuzzy msgid "spindle Override" msgstr "Spindelübersteuerung:" -#: src/emc/usr_intf/pncconf/pncconf.py:583 +#: src/emc/usr_intf/pncconf/pncconf.py:514 #, fuzzy msgid "Max Vel Override" msgstr "Vorschubübersteuerung:" -#: src/emc/usr_intf/pncconf/pncconf.py:584 emc/usr_intf/pncconf/pncconf.py:298 +#: src/emc/usr_intf/pncconf/pncconf.py:515 #, fuzzy msgid "Unused Encoder" msgstr "Unbenutzt" -#: src/emc/usr_intf/pncconf/pncconf.py:584 +#: src/emc/usr_intf/pncconf/pncconf.py:515 #, fuzzy msgid "Axis Encoder" msgstr "Ende" -#: src/emc/usr_intf/pncconf/pncconf.py:584 +#: src/emc/usr_intf/pncconf/pncconf.py:515 msgid "MPG Jog Controls" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:584 +#: src/emc/usr_intf/pncconf/pncconf.py:515 msgid "Override MPG control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 +#: src/emc/usr_intf/pncconf/pncconf.py:518 #, fuzzy msgid "Unused Resolver" msgstr "Unbenutzt" -#: src/emc/usr_intf/pncconf/pncconf.py:587 +#: src/emc/usr_intf/pncconf/pncconf.py:518 msgid "X Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 +#: src/emc/usr_intf/pncconf/pncconf.py:518 msgid "Y Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 +#: src/emc/usr_intf/pncconf/pncconf.py:518 msgid "Z Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:588 +#: src/emc/usr_intf/pncconf/pncconf.py:519 msgid "A Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:588 +#: src/emc/usr_intf/pncconf/pncconf.py:519 msgid "S Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:592 +#: src/emc/usr_intf/pncconf/pncconf.py:523 #, fuzzy msgid "Unused 8I20" msgstr "Unbenutzt" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:61457 -#: emc/usr_intf/pncconf/pncconf.glade:21191 +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "X Axis" msgstr "Achse" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:62549 -#: emc/usr_intf/pncconf/pncconf.glade:21890 +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Y Axis" msgstr "Achse" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:63642 -#: emc/usr_intf/pncconf/pncconf.glade:22590 +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Z Axis" msgstr "Achse" -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.glade:64735 -#: emc/usr_intf/pncconf/pncconf.glade:23290 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "A Axis" msgstr "Achse" -#: src/emc/usr_intf/pncconf/pncconf.py:597 +#: src/emc/usr_intf/pncconf/pncconf.py:528 #, fuzzy msgid "Unused Analog Output" msgstr "Unbenutzt" -#: src/emc/usr_intf/pncconf/pncconf.py:597 +#: src/emc/usr_intf/pncconf/pncconf.py:528 #, fuzzy msgid "Spindle Output" msgstr "Spindel ein" -#: src/emc/usr_intf/pncconf/pncconf.py:613 emc/usr_intf/pncconf/pncconf.py:320 +#: src/emc/usr_intf/pncconf/pncconf.py:551 #, fuzzy msgid "Unused StepGen" msgstr "Nicht abgeschlossener Ausdruck" -#: src/emc/usr_intf/pncconf/pncconf.py:613 +#: src/emc/usr_intf/pncconf/pncconf.py:551 #, fuzzy msgid "X Axis StepGen" msgstr "Nicht abgeschlossener Ausdruck" -#: src/emc/usr_intf/pncconf/pncconf.py:613 +#: src/emc/usr_intf/pncconf/pncconf.py:551 #, fuzzy msgid "Y Axis StepGen" msgstr "Nicht abgeschlossener Ausdruck" -#: src/emc/usr_intf/pncconf/pncconf.py:613 +#: src/emc/usr_intf/pncconf/pncconf.py:551 #, fuzzy msgid "Z Axis StepGen" msgstr "Nicht abgeschlossener Ausdruck" -#: src/emc/usr_intf/pncconf/pncconf.py:614 +#: src/emc/usr_intf/pncconf/pncconf.py:552 #, fuzzy msgid "A Axis StepGen" msgstr "Nicht abgeschlossener Ausdruck" -#: src/emc/usr_intf/pncconf/pncconf.py:614 +#: src/emc/usr_intf/pncconf/pncconf.py:552 #, fuzzy msgid "Spindle StepGen" msgstr "X Schritt" -#: src/emc/usr_intf/pncconf/pncconf.py:628 +#: src/emc/usr_intf/pncconf/pncconf.py:552 +#, fuzzy +msgid "X2 Tandem StepGen" +msgstr "X Schritt" + +#: src/emc/usr_intf/pncconf/pncconf.py:552 +#, fuzzy +msgid "Y2 Tandem StepGen" +msgstr "X Schritt" + +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#, fuzzy +msgid "Z2 Tandem StepGen" +msgstr "X Schritt" + +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#, fuzzy +msgid "Charge Pump StepGen" +msgstr "Ladungspumpe" + +#: src/emc/usr_intf/pncconf/pncconf.py:567 #, fuzzy msgid "Unused TPPWM Gen" msgstr "Unbenutzt" -#: src/emc/usr_intf/pncconf/pncconf.py:628 +#: src/emc/usr_intf/pncconf/pncconf.py:567 msgid "X Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:628 +#: src/emc/usr_intf/pncconf/pncconf.py:567 msgid "Y Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 +#: src/emc/usr_intf/pncconf/pncconf.py:568 msgid "Z Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 +#: src/emc/usr_intf/pncconf/pncconf.py:568 msgid "A Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 +#: src/emc/usr_intf/pncconf/pncconf.py:568 msgid "S Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -#: src/emc/usr_intf/pncconf/pncconf.py:6557 +#: src/emc/usr_intf/pncconf/pncconf.py:576 +#: src/emc/usr_intf/pncconf/pncconf.py:6882 #, fuzzy msgid "Unused Channel" msgstr "Ausgewähler Kanal" -#: src/emc/usr_intf/pncconf/pncconf.py:636 +#: src/emc/usr_intf/pncconf/pncconf.py:576 #, fuzzy msgid "8i20 Amplifier Card" msgstr "Endstufe aktivieren" -#: src/emc/usr_intf/pncconf/pncconf.py:636 +#: src/emc/usr_intf/pncconf/pncconf.py:576 msgid "7i64 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 +#: src/emc/usr_intf/pncconf/pncconf.py:576 msgid "7i69 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 +#: src/emc/usr_intf/pncconf/pncconf.py:577 msgid "7i70 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 +#: src/emc/usr_intf/pncconf/pncconf.py:577 msgid "7i71 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 +#: src/emc/usr_intf/pncconf/pncconf.py:577 msgid "7i76 Mode 0 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:722 +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i77 Mode 0 I/O Card" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:578 +msgid "7i73 Mode 1 Pendant Card" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:580 +#, fuzzy +msgid "Unused Analog In" +msgstr "Unbenutzt" + +#: src/emc/usr_intf/pncconf/pncconf.py:676 #, fuzzy msgid "my_LinuxCNC_machine" msgstr "_Maschine" -#: src/emc/usr_intf/pncconf/pncconf.py:1328 +#: src/emc/usr_intf/pncconf/pncconf.py:939 +#: src/emc/usr_intf/pncconf/pncconf.py:941 +msgid "Enter Address" +msgstr "Adresse eingeben" + +#: src/emc/usr_intf/pncconf/pncconf.py:1290 msgid "" "This configuration was saved with an earlier version of pncconf which may be " "incompatible.\n" @@ -9734,14 +11021,12 @@ msgid "" "version of PNConf - ask on the LinuxCNC forum - it may be possible.." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1334 -#: emc/usr_intf/pncconf/pncconf.py:753 +#: src/emc/usr_intf/pncconf/pncconf.py:1296 #, fuzzy, python-format msgid "File %r was modified since it was written by PNCconf" msgstr "Die Date %r wurde geändert, seitdem sie mit stepconf erstellt wurde." -#: src/emc/usr_intf/pncconf/pncconf.py:1338 -#: emc/usr_intf/pncconf/pncconf.py:757 +#: src/emc/usr_intf/pncconf/pncconf.py:1300 #, fuzzy msgid "" "Saving this configuration file will discard configuration changes made " @@ -9750,272 +11035,250 @@ msgstr "" "Beim speichern dieser Konfiguration werden Änderungen, die nicht mit " "stepconf durchgeführt wurden, überschrieben." -#: src/emc/usr_intf/pncconf/pncconf.py:1365 -#: src/emc/usr_intf/pncconf/pncconf.py:2368 -#: emc/usr_intf/pncconf/pncconf.py:781 emc/usr_intf/pncconf/pncconf.py:1257 +#: src/emc/usr_intf/pncconf/pncconf.py:1327 +#: src/emc/usr_intf/pncconf/pncconf.py:2421 #, fuzzy, python-format msgid "# Generated by PNCconf at %s" msgstr "# Erstellt von stepconf am %s" -#: src/emc/usr_intf/pncconf/pncconf.py:1367 -#: src/emc/usr_intf/pncconf/pncconf.py:2370 -#: emc/usr_intf/pncconf/pncconf.py:783 emc/usr_intf/pncconf/pncconf.py:1259 +#: src/emc/usr_intf/pncconf/pncconf.py:1329 +#: src/emc/usr_intf/pncconf/pncconf.py:2423 #, fuzzy msgid "# overwritten when you run PNCconf again" msgstr "# Aufruf von stepconf überschrieben." -#: src/emc/usr_intf/pncconf/pncconf.py:2070 +#: src/emc/usr_intf/pncconf/pncconf.py:2134 msgid "# Use ACTUAL spindle velocity from spindle encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2071 +#: src/emc/usr_intf/pncconf/pncconf.py:2135 msgid "# spindle-velocity bounces around so we filter it with lowpass" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2072 +#: src/emc/usr_intf/pncconf/pncconf.py:2136 msgid "" "# spindle-velocity is signed so we use absolute component to remove sign" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2073 +#: src/emc/usr_intf/pncconf/pncconf.py:2137 msgid "# ACTUAL velocity is in RPS not RPM so we scale it." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2082 -msgid "" -"# Use COMMANDED spindle velocity from LinuxCNC because no spindle encoder " -"was specified" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.py:2083 -msgid "" -"# COMMANDED velocity is signed so we use absolute component to remove sign" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.py:2727 +#: src/emc/usr_intf/pncconf/pncconf.py:2821 msgid "# connect miscellaneous signals" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2730 +#: src/emc/usr_intf/pncconf/pncconf.py:2824 msgid "# ---HALUI signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2749 +#: src/emc/usr_intf/pncconf/pncconf.py:2843 msgid "# ---charge pump signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2753 +#: src/emc/usr_intf/pncconf/pncconf.py:2847 msgid "# ---coolant signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2758 +#: src/emc/usr_intf/pncconf/pncconf.py:2852 msgid "# ---probe signal---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2763 +#: src/emc/usr_intf/pncconf/pncconf.py:2857 msgid "# ---jog button signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2768 +#: src/emc/usr_intf/pncconf/pncconf.py:2862 msgid "# ---USB device jog button signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2803 -#: src/emc/usr_intf/pncconf/pncconf.py:2825 +#: src/emc/usr_intf/pncconf/pncconf.py:2903 +#: src/emc/usr_intf/pncconf/pncconf.py:2929 msgid "# ---mpg signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2971 +#: src/emc/usr_intf/pncconf/pncconf.py:3111 msgid "# ---motion control signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2976 +#: src/emc/usr_intf/pncconf/pncconf.py:3116 msgid "# ---digital in / out signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2986 +#: src/emc/usr_intf/pncconf/pncconf.py:3126 msgid "# ---estop signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3005 +#: src/emc/usr_intf/pncconf/pncconf.py:3145 msgid "# ---manual tool change signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3014 +#: src/emc/usr_intf/pncconf/pncconf.py:3154 msgid "# ---toolchange signals for custom tool changer---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3036 +#: src/emc/usr_intf/pncconf/pncconf.py:3176 msgid "# --- Classicladder signals for Z axis Auto touch off program---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3055 +#: src/emc/usr_intf/pncconf/pncconf.py:3195 msgid "# These files are loaded post gladeVCP, in the order they appear" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3069 -#: src/emc/usr_intf/pncconf/pncconf.py:3136 +#: src/emc/usr_intf/pncconf/pncconf.py:3209 +#: src/emc/usr_intf/pncconf/pncconf.py:3276 #, fuzzy msgid "# _DO NOT_ include your HAL commands here." msgstr "" "# Benutzerdefinierte HAL-Anweisungen können nachfolgend angegeben werden" -#: src/emc/usr_intf/pncconf/pncconf.py:3070 +#: src/emc/usr_intf/pncconf/pncconf.py:3210 msgid "# Put custom HAL commands in custom_gvcp.hal" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3073 +#: src/emc/usr_intf/pncconf/pncconf.py:3213 msgid "# **** Setup of spindle speed display using gladevcp ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3082 +#: src/emc/usr_intf/pncconf/pncconf.py:3222 msgid "# **** Setup GLADE MDI buttons ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3095 +#: src/emc/usr_intf/pncconf/pncconf.py:3235 msgid "" "# **** Z axis touch-off button - requires the touch-off classicladder " "program ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3125 +#: src/emc/usr_intf/pncconf/pncconf.py:3265 msgid "# These files are loaded post GUI, in the order they appear" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3137 +#: src/emc/usr_intf/pncconf/pncconf.py:3277 msgid "# Put custom HAL commands in custom_postgui.hal" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3138 +#: src/emc/usr_intf/pncconf/pncconf.py:3278 #, fuzzy msgid "# The commands in this file are run after the GUI loads" msgstr "" "# Die Befehle in dieser Datei werden nach der AXIS GUI (und PyVCP-Panel) " "ausgeführt." -#: src/emc/usr_intf/pncconf/pncconf.py:3148 +#: src/emc/usr_intf/pncconf/pncconf.py:3288 msgid "# **** Setup of spindle speed display using pyvcp -END ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3160 -#: emc/usr_intf/pncconf/pncconf.py:1627 +#: src/emc/usr_intf/pncconf/pncconf.py:3300 #, fuzzy msgid "# This file will not be overwritten when you run PNCconf again" msgstr "" "# Diese Datei wird überschrieben, wenn stepconf erneut ausgeführt wird." -#: src/emc/usr_intf/pncconf/pncconf.py:3166 +#: src/emc/usr_intf/pncconf/pncconf.py:3306 msgid "# These commands are required for Touchy GUI" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3218 -#: emc/usr_intf/pncconf/pncconf.py:1634 +#: src/emc/usr_intf/pncconf/pncconf.py:3358 #, fuzzy, python-format msgid "Generated by PNCconf at %s" msgstr "Erstell durch stepconf am %s" -#: src/emc/usr_intf/pncconf/pncconf.py:3230 +#: src/emc/usr_intf/pncconf/pncconf.py:3370 msgid "configures LinuxCNC as:\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3231 +#: src/emc/usr_intf/pncconf/pncconf.py:3371 msgid "type CNC\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3232 -#: emc/usr_intf/pncconf/pncconf.py:1649 +#: src/emc/usr_intf/pncconf/pncconf.py:3372 msgid "will be used as the frontend display" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3241 +#: src/emc/usr_intf/pncconf/pncconf.py:3381 msgid " connector" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3253 +#: src/emc/usr_intf/pncconf/pncconf.py:3393 msgid "invrt" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3262 -#: emc/usr_intf/pncconf/pncconf.py:1692 +#: src/emc/usr_intf/pncconf/pncconf.py:3402 #, python-format msgid "%(name)s Parport" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3267 -#: src/emc/usr_intf/pncconf/pncconf.py:3275 -#: emc/usr_intf/pncconf/pncconf.py:1662 emc/usr_intf/pncconf/pncconf.py:1673 -#: emc/usr_intf/pncconf/pncconf.py:1684 emc/usr_intf/pncconf/pncconf.py:1697 -#: emc/usr_intf/pncconf/pncconf.py:1705 +#: src/emc/usr_intf/pncconf/pncconf.py:3407 +#: src/emc/usr_intf/pncconf/pncconf.py:3415 msgid "-> inverted" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3269 -#: emc/usr_intf/pncconf/pncconf.py:1699 +#: src/emc/usr_intf/pncconf/pncconf.py:3409 #, python-format msgid "pin# %(pinnum)d is connected to input signal:'%(data)s' %(mesag)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3277 -#: emc/usr_intf/pncconf/pncconf.py:1707 +#: src/emc/usr_intf/pncconf/pncconf.py:3417 #, python-format msgid "pin# %(pinnum)d is connected to output signal:'%(data)s' %(mesag)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3455 +#: src/emc/usr_intf/pncconf/pncconf.py:3595 #, fuzzy msgid "Desktop Launcher for LinuxCNC config made by PNCconf" msgstr "" "Verknüpfung zum starten von EMC mit einer festgelegten Konfiguration, " "erstellt von Stepconf" -#: src/emc/usr_intf/pncconf/pncconf.py:3725 +#: src/emc/usr_intf/pncconf/pncconf.py:3856 +#, python-format +msgid "%s Axis Configuration" +msgstr "Konfiguration der %s-Achse" + +#: src/emc/usr_intf/pncconf/pncconf.py:3881 #, fuzzy msgid "Spindle Motor/Encoder Configuration" msgstr "Konfiguration der X-Achse" -#: src/emc/usr_intf/pncconf/pncconf.py:3727 -#: emc/usr_intf/pncconf/pncconf.py:1940 +#: src/emc/usr_intf/pncconf/pncconf.py:3883 #, fuzzy, python-format msgid "%s Axis Motor/Encoder Configuration" msgstr "Konfiguration der %s-Achse" -#: src/emc/usr_intf/pncconf/pncconf.py:3756 -#: emc/usr_intf/pncconf/pncconf.py:1964 +#: src/emc/usr_intf/pncconf/pncconf.py:3912 #, fuzzy, python-format msgid "%s Parallel Port Setup" msgstr "Konfiguration der Druckerschnittstelle" -#: src/emc/usr_intf/pncconf/pncconf.py:3780 +#: src/emc/usr_intf/pncconf/pncconf.py:3936 #, python-format msgid "%s I/0 Setup" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4001 -#: emc/usr_intf/pncconf/pncconf.py:2023 +#: src/emc/usr_intf/pncconf/pncconf.py:4162 #, fuzzy msgid "Quit PNCconfig and discard changes?" msgstr "Maschinenkonfiguration beenden und Änderungen verwerfen?" -#: src/emc/usr_intf/pncconf/pncconf.py:4042 -#: src/emc/usr_intf/pncconf/pncconf.glade:65849 -#: emc/usr_intf/pncconf/pncconf.glade:23341 +#: src/emc/usr_intf/pncconf/pncconf.py:4203 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Help Pages" msgstr "Bilddateien" -#: src/emc/usr_intf/pncconf/pncconf.py:4047 -#: emc/usr_intf/pncconf/pncconf.py:2067 +#: src/emc/usr_intf/pncconf/pncconf.py:4208 #, fuzzy msgid "Help page is unavailable\n" msgstr "Es ist keine Beschreibung verfügbar." -#: src/emc/usr_intf/pncconf/pncconf.py:4054 +#: src/emc/usr_intf/pncconf/pncconf.py:4218 msgid "" "You are using a simulated-realtime version of LinuxCNC, so testing / tuning " "of external hardware is unavailable." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4059 +#: src/emc/usr_intf/pncconf/pncconf.py:4223 #, python-format msgid "" "You are using a realtime version of LinuxCNC but didn't load a realtime " @@ -10025,83 +11288,79 @@ msgid "" " You are using the %(actual)s kernel instead of %(needed)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4079 -#, python-format -msgid "" -"You are have no hostmot2 firmware downloaded in folder:\n" -"%s\n" -"PNCconf will use sample firmware data\n" -"live testing will not be possible" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.py:4093 +#: src/emc/usr_intf/pncconf/pncconf.py:4256 #, fuzzy msgid "LinuxCNC 'PNCconf' configuration files" msgstr ".stepconf Dateien" -#: src/emc/usr_intf/pncconf/pncconf.py:4123 +#: src/emc/usr_intf/pncconf/pncconf.py:4286 msgid "" "It seems data in this file is from too old of a version of PNCConf to " "continue.\n" "." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4130 -#: src/emc/usr_intf/pncconf/pncconf.py:4228 +#: src/emc/usr_intf/pncconf/pncconf.py:4293 +#: src/emc/usr_intf/pncconf/pncconf.py:4391 #, fuzzy, python-format msgid "Point and click configuration - %s.pncconf " msgstr "EMC2 Maschinenkonfiguration" -#: src/emc/usr_intf/pncconf/pncconf.py:4250 -#: emc/usr_intf/pncconf/pncconf.py:2191 +#: src/emc/usr_intf/pncconf/pncconf.py:4413 msgid "" "You need to designate a parport and/or mesa I/O device before continuing." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4309 +#: src/emc/usr_intf/pncconf/pncconf.py:4481 msgid "" "You Have choosen to re-edit the current config, so you can not go to the new/" "modify page.\n" " Quit and reload PNCconf if you wish to build a new config." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4313 +#: src/emc/usr_intf/pncconf/pncconf.py:4485 msgid "" "If you can not go to the new/modify page your current data will be lost.\n" "Ok to reset data and start a new configuration?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4594 +#: src/emc/usr_intf/pncconf/pncconf.py:4811 msgid "USB device Info Search" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4608 +#: src/emc/usr_intf/pncconf/pncconf.py:4825 #, fuzzy msgid "USB device page is unavailable\n" msgstr "Es ist keine Beschreibung verfügbar." -#: src/emc/usr_intf/pncconf/pncconf.py:4673 +#: src/emc/usr_intf/pncconf/pncconf.py:4890 #, fuzzy msgid "Pin names are unavailable\n" msgstr "Es ist keine Beschreibung verfügbar." -#: src/emc/usr_intf/pncconf/pncconf.py:4695 +#: src/emc/usr_intf/pncconf/pncconf.py:4912 #, fuzzy msgid "Device names are unavailable\n" msgstr "Es ist keine Beschreibung verfügbar." -#: src/emc/usr_intf/pncconf/pncconf.py:4698 +#: src/emc/usr_intf/pncconf/pncconf.py:4915 msgid "No Pncconf made device rules were found\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4822 +#: src/emc/usr_intf/pncconf/pncconf.py:5041 +#, fuzzy msgid "" "OK to replace existing glade panel ?\n" "It will be renamed and added to 'backups' folder.\n" -" Clicking 'existing custom program' will aviod this warning. " +" Clicking 'existing custom program' will avoid this warning, but if you " +"change related options later -such as spindle feedback- the HAL connection " +"will not update" msgstr "" +"Mit »OK« wird das bestehende benutzerdefinierte SPS-Programm ersetzt.\n" +"Eine bestehende »Custom.clp«-Datei wird in custom_backup.clp« umbenannt.\n" +"Eine bestehende »custom_backup.clp«-Dateien geht somit verloren." -#: src/emc/usr_intf/pncconf/pncconf.py:4827 +#: src/emc/usr_intf/pncconf/pncconf.py:5047 #, fuzzy msgid "" "OK to replace existing custom pyvcp panel?\n" @@ -10112,33 +11371,33 @@ msgstr "" "Eine bestehende »Custom.clp«-Datei wird in custom_backup.clp« umbenannt.\n" "Eine bestehende »custom_backup.clp«-Dateien geht somit verloren." -#: src/emc/usr_intf/pncconf/pncconf.py:5250 +#: src/emc/usr_intf/pncconf/pncconf.py:5493 msgid "" "You need to configure the mesa0 page.\n" " Choose the board type, firmware, component amounts and press 'Accept " "component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5254 +#: src/emc/usr_intf/pncconf/pncconf.py:5497 msgid "" "The chosen Mesa0 board is different from the current displayed.\n" "please press 'Accept component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5297 +#: src/emc/usr_intf/pncconf/pncconf.py:5540 msgid "" "You need to configure the mesa1 page.\n" " Choose the board type, firmware, component amounts and press 'Accept " "component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5301 +#: src/emc/usr_intf/pncconf/pncconf.py:5544 msgid "" "The chosen Mesa1 board is different from the current displayed.\n" "please press 'Accept component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5315 +#: src/emc/usr_intf/pncconf/pncconf.py:5558 msgid "" "Do to technical reasons this test panel can be loaded only once without " "reloading pncconf.You also will not be able to do any other testing untill " @@ -10147,212 +11406,213 @@ msgid "" "Do you wish to continue the test?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6699 -#: emc/usr_intf/pncconf/pncconf.py:3036 +#: src/emc/usr_intf/pncconf/pncconf.py:7042 #, fuzzy msgid "First Parallel Port set for OUTPUT" msgstr "Konfiguration der Druckerschnittstelle" -#: src/emc/usr_intf/pncconf/pncconf.py:6701 -#: emc/usr_intf/pncconf/pncconf.py:3038 +#: src/emc/usr_intf/pncconf/pncconf.py:7044 #, fuzzy msgid "First Parallel Port set for INPUT" msgstr "Konfiguration der Druckerschnittstelle" -#: src/emc/usr_intf/pncconf/pncconf.py:6725 -#: emc/usr_intf/pncconf/pncconf.py:3058 +#: src/emc/usr_intf/pncconf/pncconf.py:7068 msgid "Second Parallel Port set for OUTPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6727 -#: emc/usr_intf/pncconf/pncconf.py:3060 +#: src/emc/usr_intf/pncconf/pncconf.py:7070 #, fuzzy msgid "Second Parallel Port set for INPUT" msgstr "Konfiguration der Druckerschnittstelle" -#: src/emc/usr_intf/pncconf/pncconf.py:6739 -#: emc/usr_intf/pncconf/pncconf.py:3072 +#: src/emc/usr_intf/pncconf/pncconf.py:7082 #, fuzzy msgid "Third Parallel Port set for OUTPUT" msgstr "Konfiguration der Druckerschnittstelle" -#: src/emc/usr_intf/pncconf/pncconf.py:6741 -#: emc/usr_intf/pncconf/pncconf.py:3074 +#: src/emc/usr_intf/pncconf/pncconf.py:7084 #, fuzzy msgid "Third Parallel Port set for INPUT" msgstr "Konfiguration der Druckerschnittstelle" -#: src/emc/usr_intf/pncconf/pncconf.py:6866 +#: src/emc/usr_intf/pncconf/pncconf.py:7210 msgid "You can not have both steppers and pwm signals for spindle control\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6870 +#: src/emc/usr_intf/pncconf/pncconf.py:7214 #, python-format msgid "You forgot to designate a stepper or pwm signal for axis %s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6873 +#: src/emc/usr_intf/pncconf/pncconf.py:7217 #, python-format msgid "You forgot to designate an encoder /resolver signal for axis %s servo\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6876 +#: src/emc/usr_intf/pncconf/pncconf.py:7220 #, python-format msgid "You forgot to designate a pwm signal or stepper signal for axis %s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6879 +#: src/emc/usr_intf/pncconf/pncconf.py:7223 #, python-format msgid "You can not have both steppers and pwm signals for axis %s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6887 +#: src/emc/usr_intf/pncconf/pncconf.py:7226 +#, python-format +msgid "" +"If using a tandem axis stepper, you must select a master stepgen for axis " +"%s\n" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:7235 msgid "Touchy require an external cycle start signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6890 +#: src/emc/usr_intf/pncconf/pncconf.py:7238 msgid "Touchy require an external abort signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6893 +#: src/emc/usr_intf/pncconf/pncconf.py:7241 msgid "Touchy require an external single-step signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6896 +#: src/emc/usr_intf/pncconf/pncconf.py:7244 msgid "" "Touchy require an external multi handwheel MPG encoder signal on the mesa " "page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6899 +#: src/emc/usr_intf/pncconf/pncconf.py:7247 msgid "" "Touchy require 'external mpg jogging' to be selected on the external control " "page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6902 +#: src/emc/usr_intf/pncconf/pncconf.py:7250 msgid "" "Touchy require the external mpg to be in 'shared mpg' mode on the external " "controls page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6905 +#: src/emc/usr_intf/pncconf/pncconf.py:7253 msgid "" "Touchy require selectable increments to be unchecked on the external " "controls page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6909 +#: src/emc/usr_intf/pncconf/pncconf.py:7257 msgid "" "The 7i29 daughter board requires PWM type generators and a PWM base " "frequency of 20 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6912 +#: src/emc/usr_intf/pncconf/pncconf.py:7260 msgid "" "The 7i30 daughter board requires PWM type generators and a PWM base " "frequency of 20 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6915 +#: src/emc/usr_intf/pncconf/pncconf.py:7263 msgid "" "The 7i33 daughter board requires PDM type generators and a PDM base " "frequency of 6 Mhz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6918 +#: src/emc/usr_intf/pncconf/pncconf.py:7266 msgid "" "The 7i40 daughter board requires PWM type generators and a PWM base " "frequency of 50 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6921 +#: src/emc/usr_intf/pncconf/pncconf.py:7269 msgid "" "The 7i48 daughter board requires UDM type generators and a PWM base " "frequency of 24 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7148 +#: src/emc/usr_intf/pncconf/pncconf.py:7494 msgid "Gearbox Reduction Ratio" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7151 -#: emc/usr_intf/pncconf/pncconf.py:3285 +#: src/emc/usr_intf/pncconf/pncconf.py:7497 msgid "Reduction Ratio" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7154 -#: emc/usr_intf/pncconf/pncconf.py:3303 +#: src/emc/usr_intf/pncconf/pncconf.py:7500 #, fuzzy msgid "Leadscrew Pitch" msgstr "_Spindelsteigung:" -#: src/emc/usr_intf/pncconf/pncconf.py:7157 -#: src/emc/usr_intf/pncconf/pncconf.glade:66327 -#: src/emc/usr_intf/pncconf/pncconf.glade:66622 -#: emc/usr_intf/pncconf/pncconf.py:3322 +#: src/emc/usr_intf/pncconf/pncconf.py:7503 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Leadscrew TPI" msgstr "_Spindelsteigung:" -#: src/emc/usr_intf/pncconf/pncconf.py:7161 -#: src/emc/usr_intf/pncconf/pncconf.py:7162 +#: src/emc/usr_intf/pncconf/pncconf.py:7507 +#: src/emc/usr_intf/pncconf/pncconf.py:7508 msgid "(" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7163 -#: src/emc/usr_intf/pncconf/pncconf.py:7173 -#: src/emc/usr_intf/pncconf/pncconf.py:7174 -#: src/emc/usr_intf/pncconf/pncconf.py:7175 +#: src/emc/usr_intf/pncconf/pncconf.py:7509 +#: src/emc/usr_intf/pncconf/pncconf.py:7519 +#: src/emc/usr_intf/pncconf/pncconf.py:7520 +#: src/emc/usr_intf/pncconf/pncconf.py:7521 #, fuzzy msgid " / min" msgstr "mm / s" -#: src/emc/usr_intf/pncconf/pncconf.py:7164 +#: src/emc/usr_intf/pncconf/pncconf.py:7510 #, fuzzy msgid " / sec²" msgstr "mm / s²" -#: src/emc/usr_intf/pncconf/pncconf.py:7167 +#: src/emc/usr_intf/pncconf/pncconf.py:7513 #, fuzzy msgid " / Step" msgstr "mm / Umdrehung" -#: src/emc/usr_intf/pncconf/pncconf.py:7168 +#: src/emc/usr_intf/pncconf/pncconf.py:7514 #, fuzzy msgid "Steps / " msgstr "Schritte / mm" -#: src/emc/usr_intf/pncconf/pncconf.py:7170 +#: src/emc/usr_intf/pncconf/pncconf.py:7516 #, fuzzy msgid " / encoder pulse" msgstr "Grad / Umdrehung" -#: src/emc/usr_intf/pncconf/pncconf.py:7171 +#: src/emc/usr_intf/pncconf/pncconf.py:7517 #, fuzzy msgid "Encoder pulses / " msgstr "mm / Umdrehung" -#: src/emc/usr_intf/pncconf/pncconf.py:7482 +#: src/emc/usr_intf/pncconf/pncconf.py:7525 +#, fuzzy +msgid "Resolver Scale:" +msgstr "Zeit zwischen zwei _Schritten:" + +#: src/emc/usr_intf/pncconf/pncconf.py:7826 msgid "Axis Scale Calculation" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7785 -#: emc/usr_intf/pncconf/pncconf.py:3703 +#: src/emc/usr_intf/pncconf/pncconf.py:8133 #, fuzzy msgid "You need to designate an E-stop input pin for this ladder program." msgstr "" "Für dieses Programm muss ein Notaus-Eingang auf der Seite zur Konfiguration " "der parallelen Schnitstelle festgelegt wein." -#: src/emc/usr_intf/pncconf/pncconf.py:7797 +#: src/emc/usr_intf/pncconf/pncconf.py:8145 #, fuzzy msgid "You need to designate a probe input pin for this ladder program." msgstr "" "Für dieses Programm muss ein Notaus-Eingang auf der Seite zur Konfiguration " "der parallelen Schnitstelle festgelegt wein." -#: src/emc/usr_intf/pncconf/pncconf.py:7808 +#: src/emc/usr_intf/pncconf/pncconf.py:8156 #, fuzzy msgid "" "OK to replace existing custom ladder program?\n" @@ -10364,100 +11624,88 @@ msgstr "" "Eine bestehende »Custom.clp«-Datei wird in custom_backup.clp« umbenannt.\n" "Eine bestehende »custom_backup.clp«-Dateien geht somit verloren." -#: src/emc/usr_intf/pncconf/pncconf.py:8019 +#: src/emc/usr_intf/pncconf/pncconf.py:8374 msgid "Do you wish to continue to edit this configuration." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8058 +#: src/emc/usr_intf/pncconf/pncconf.py:8413 #, fuzzy msgid "PCI search page is unavailable\n" msgstr "Es ist keine Beschreibung verfügbar." -#: src/emc/usr_intf/pncconf/pncconf.py:8176 +#: src/emc/usr_intf/pncconf/pncconf.py:8532 msgid "" "You specified there is an existing gladefile, But there is not one in the " "machine-named folder.." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8495 +#: src/emc/usr_intf/pncconf/pncconf.py:8856 msgid "Servo tuning is not avaiable in PNCconf yet\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8500 -#: emc/usr_intf/pncconf/pncconf.py:3292 emc/usr_intf/pncconf/pncconf.py:3299 -#: emc/usr_intf/pncconf/pncconf.py:3300 emc/usr_intf/pncconf/pncconf.py:4168 +#: src/emc/usr_intf/pncconf/pncconf.py:8861 #, fuzzy msgid "degrees" msgstr "Grad / Umdrehung" -#: src/emc/usr_intf/pncconf/pncconf.py:8501 -#: emc/usr_intf/pncconf/pncconf.py:4169 +#: src/emc/usr_intf/pncconf/pncconf.py:8862 #, fuzzy msgid "degrees / minute" msgstr "Grad / Umdrehung" -#: src/emc/usr_intf/pncconf/pncconf.py:8502 -#: emc/usr_intf/pncconf/pncconf.py:4170 +#: src/emc/usr_intf/pncconf/pncconf.py:8863 #, fuzzy msgid "degrees / second²" msgstr "Grad / Umdrehung" -#: src/emc/usr_intf/pncconf/pncconf.py:8504 +#: src/emc/usr_intf/pncconf/pncconf.py:8865 #, fuzzy msgid "revolutions" msgstr "Position:" -#: src/emc/usr_intf/pncconf/pncconf.py:8505 +#: src/emc/usr_intf/pncconf/pncconf.py:8866 msgid "rpm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8506 +#: src/emc/usr_intf/pncconf/pncconf.py:8867 #, fuzzy msgid "revs / second²" msgstr "Grad / Umdrehung" -#: src/emc/usr_intf/pncconf/pncconf.py:8509 -#: src/emc/usr_intf/pncconf/pncconf.glade:58295 -#: src/emc/usr_intf/pncconf/pncconf.glade:58479 -#: src/emc/usr_intf/pncconf/pncconf.glade:58576 -#: emc/usr_intf/pncconf/pncconf.py:4173 -#: emc/usr_intf/pncconf/pncconf.glade:16467 -#: emc/usr_intf/pncconf/pncconf.glade:16620 -#: emc/usr_intf/pncconf/pncconf.glade:16688 +#: src/emc/usr_intf/pncconf/pncconf.py:8870 +#: src/emc/usr_intf/pncconf/pncconf.glade:65184 +#: src/emc/usr_intf/pncconf/pncconf.glade:65281 +#: src/emc/usr_intf/pncconf/pncconf.glade:65465 #, fuzzy msgid "mm / minute" msgstr "mm / Umdrehung" -#: src/emc/usr_intf/pncconf/pncconf.py:8510 -#: emc/usr_intf/pncconf/pncconf.py:4174 +#: src/emc/usr_intf/pncconf/pncconf.py:8871 #, fuzzy msgid "mm / second²" msgstr "mm / s²" -#: src/emc/usr_intf/pncconf/pncconf.py:8513 -#: emc/usr_intf/pncconf/pncconf.py:4177 +#: src/emc/usr_intf/pncconf/pncconf.py:8874 msgid "inches / minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8514 -#: emc/usr_intf/pncconf/pncconf.py:4178 +#: src/emc/usr_intf/pncconf/pncconf.py:8875 #, fuzzy msgid "inches / second²" msgstr "in / s²" -#: src/emc/usr_intf/pncconf/pncconf.py:8646 -#: emc/usr_intf/pncconf/pncconf.py:4289 +#: src/emc/usr_intf/pncconf/pncconf.py:9031 #, fuzzy, python-format msgid "%s Axis Tune" msgstr "Test %s-Achse" -#: src/emc/usr_intf/pncconf/pncconf.py:8810 +#: src/emc/usr_intf/pncconf/pncconf.py:9195 msgid "" " You must designate a ENCODER / RESOLVER signal and an ANALOG SPINDLE signal " "for this axis test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8814 +#: src/emc/usr_intf/pncconf/pncconf.py:9199 msgid "" " You must designate a ENCODER / RESOLVER signal and a PWM signal for this " "axis test" @@ -10474,7 +11722,6 @@ msgid "LinuxCNC Configuration Wizard Beta 1 Version" msgstr "EMC2 Konfigurationsassistent" #: src/emc/usr_intf/pncconf/pncconf.glade:24 -#: emc/usr_intf/pncconf/pncconf.glade:24 msgid "" "\tThis program creates configuration \n" " files for \"Closed Loop Servo\" \n" @@ -10483,63 +11730,76 @@ msgid "" msgstr "" #: src/emc/usr_intf/pncconf/pncconf.glade:34 -#: emc/usr_intf/pncconf/pncconf.glade:34 msgid "Create or Edit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:52 -#: emc/usr_intf/pncconf/pncconf.glade:147 +#: src/emc/usr_intf/pncconf/pncconf.glade:66 #, fuzzy -msgid "Create a new configuration" -msgstr "Eine _neune Konfiguration erstellen" +msgid "Create a desktop launcher to start LinuxCNC with this configuration." +msgstr "" +"Verknüpfung zum _Starten vom LinuxCNC mit dieser Konfiguration auf dem " +"Destop erstellen" -#: src/emc/usr_intf/pncconf/pncconf.glade:118 -#: emc/usr_intf/pncconf/pncconf.glade:82 +#: src/emc/usr_intf/pncconf/pncconf.glade:83 #, fuzzy msgid "Create a desktop shortcut (symlink) to configuration files." msgstr "Verknüpfung zu den _Konfigurationsdateien auf dem Destop erstellen" -#: src/emc/usr_intf/pncconf/pncconf.glade:135 -#: emc/usr_intf/pncconf/pncconf.glade:65 -#, fuzzy -msgid "Create a desktop launcher to start LinuxCNC with this configuration." -msgstr "" -"Verknüpfung zum _Starten vom LinuxCNC mit dieser Konfiguration auf dem " -"Destop erstellen" +#: src/emc/usr_intf/pncconf/pncconf.glade:148 +#, fuzzy +msgid "Create a new configuration" +msgstr "Eine _neune Konfiguration erstellen" + +#: src/emc/usr_intf/pncconf/pncconf.glade:175 +msgid "Basic machine information" +msgstr "Grundlegende Informationen" #: src/emc/usr_intf/pncconf/pncconf.glade:214 -#: emc/usr_intf/pncconf/pncconf.glade:212 #, fuzzy msgid "Machine Name:" msgstr "Maschinen_name:" -#: src/emc/usr_intf/pncconf/pncconf.glade:281 -#: emc/usr_intf/pncconf/pncconf.glade:279 +#: src/emc/usr_intf/pncconf/pncconf.glade:280 #, fuzzy msgid "Axis configuration:" msgstr "A_chsen:" -#: src/emc/usr_intf/pncconf/pncconf.glade:316 -#: emc/usr_intf/pncconf/pncconf.glade:314 +#: src/emc/usr_intf/pncconf/pncconf.glade:295 +msgid "" +"XYZ\n" +"XYZA\n" +"XZ (Lathe)" +msgstr "" +"XYZ\n" +"XYZA\n" +"XZ (Drehmaschine)" + +#: src/emc/usr_intf/pncconf/pncconf.glade:322 #, fuzzy msgid "Machine units:" msgstr "_Einheiten:" -#: src/emc/usr_intf/pncconf/pncconf.glade:355 -#: emc/usr_intf/pncconf/pncconf.glade:353 -msgid "Machine Basics" +#: src/emc/usr_intf/pncconf/pncconf.glade:337 +msgid "" +"Inch\n" +"Millimeter" msgstr "" +"Inch\n" +"Millimeter" -#: src/emc/usr_intf/pncconf/pncconf.glade:405 -msgid "Recommend servo period: 1000000" +#: src/emc/usr_intf/pncconf/pncconf.glade:363 +msgid "Machine Basics" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:431 +#: src/emc/usr_intf/pncconf/pncconf.glade:416 msgid "Actual Servo Period: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:486 -#: emc/usr_intf/pncconf/pncconf.glade:397 +#: src/emc/usr_intf/pncconf/pncconf.glade:475 +msgid "Recommend servo period: 1000000" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:494 #, fuzzy msgid "" " Test Base\n" @@ -10548,54 +11808,44 @@ msgstr "" "Systemtakt-Abweichung\n" "(Jitter) er_mitteln" -#: src/emc/usr_intf/pncconf/pncconf.glade:511 -#: emc/usr_intf/pncconf/pncconf.glade:521 +#: src/emc/usr_intf/pncconf/pncconf.glade:519 msgid "Computer Response Time" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:553 +#: src/emc/usr_intf/pncconf/pncconf.glade:561 msgid "Mesa0 PCI / Parport Card:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:563 +#: src/emc/usr_intf/pncconf/pncconf.glade:571 msgid "Mesa1 PCI / Parport Card:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:576 -#: emc/usr_intf/pncconf/pncconf.glade:579 +#: src/emc/usr_intf/pncconf/pncconf.glade:584 #, fuzzy msgid "First Parport Address:" msgstr "Adresse der ersten _parallelen Schnittstelle:" -#: src/emc/usr_intf/pncconf/pncconf.glade:589 -#: emc/usr_intf/pncconf/pncconf.glade:592 +#: src/emc/usr_intf/pncconf/pncconf.glade:597 #, fuzzy msgid "Second Parport Address:" msgstr "Adresse der z_weiten parallellen Schnittstelle:" -#: src/emc/usr_intf/pncconf/pncconf.glade:604 -#: emc/usr_intf/pncconf/pncconf.glade:607 +#: src/emc/usr_intf/pncconf/pncconf.glade:612 #, fuzzy msgid "Third Parport Address:" msgstr "Adresse der dr_itten parallellen Schnittstelle:" -#: src/emc/usr_intf/pncconf/pncconf.glade:627 #: src/emc/usr_intf/pncconf/pncconf.glade:635 -#: emc/usr_intf/pncconf/pncconf.glade:1761 +#: src/emc/usr_intf/pncconf/pncconf.glade:643 msgid "" "5i20\n" "5i23\n" "5i22" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:708 -#: src/emc/usr_intf/pncconf/pncconf.glade:720 -#: src/emc/usr_intf/pncconf/pncconf.glade:733 -#: emc/usr_intf/stepconf/stepconf.glade:384 -#: emc/usr_intf/stepconf/stepconf.glade:400 -#: emc/usr_intf/pncconf/pncconf.glade:711 -#: emc/usr_intf/pncconf/pncconf.glade:723 -#: emc/usr_intf/pncconf/pncconf.glade:736 +#: src/emc/usr_intf/pncconf/pncconf.glade:716 +#: src/emc/usr_intf/pncconf/pncconf.glade:728 +#: src/emc/usr_intf/pncconf/pncconf.glade:741 msgid "" "In\n" "Out" @@ -10603,7 +11853,7 @@ msgstr "" "Eingang\n" "Ausgang" -#: src/emc/usr_intf/pncconf/pncconf.glade:796 +#: src/emc/usr_intf/pncconf/pncconf.glade:804 msgid "" "Add-on PCI\n" " Parport\n" @@ -10611,778 +11861,724 @@ msgid "" " Search" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:821 -#: emc/usr_intf/pncconf/pncconf.glade:769 +#: src/emc/usr_intf/pncconf/pncconf.glade:829 msgid "I/O Control Ports/ Boards" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:870 +#: src/emc/usr_intf/pncconf/pncconf.glade:878 #, fuzzy msgid "Axis" msgstr "Achse" -#: src/emc/usr_intf/pncconf/pncconf.glade:885 +#: src/emc/usr_intf/pncconf/pncconf.glade:893 msgid "TKLinuxCNC" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:899 -#: emc/usr_intf/pncconf/pncconf.glade:1165 +#: src/emc/usr_intf/pncconf/pncconf.glade:907 #, fuzzy msgid "Mini" msgstr "Allgemein" -#: src/emc/usr_intf/pncconf/pncconf.glade:913 -#: src/emc/usr_intf/pncconf/pncconf.glade:6648 +#: src/emc/usr_intf/pncconf/pncconf.glade:921 +#: src/emc/usr_intf/pncconf/pncconf.glade:6656 #, fuzzy msgid "Touchy" msgstr "Antasten" -#: src/emc/usr_intf/pncconf/pncconf.glade:930 +#: src/emc/usr_intf/pncconf/pncconf.glade:938 msgid "GUI frontend list" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:965 +#: src/emc/usr_intf/pncconf/pncconf.glade:973 #, fuzzy msgid "External Controls" msgstr "Manuelle Kontrolle" -#: src/emc/usr_intf/pncconf/pncconf.glade:1006 +#: src/emc/usr_intf/pncconf/pncconf.glade:1014 msgid "Add device rule" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1019 +#: src/emc/usr_intf/pncconf/pncconf.glade:1027 #, fuzzy msgid "Test device" msgstr "Testbereich:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1033 +#: src/emc/usr_intf/pncconf/pncconf.glade:1041 msgid "Search for device rules" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1054 +#: src/emc/usr_intf/pncconf/pncconf.glade:1062 #, fuzzy msgid "Device Name:" msgstr "Maschinen_name:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1117 -#: src/emc/usr_intf/pncconf/pncconf.glade:1255 -#, fuzzy -msgid "Jog Speed select A" -msgstr "Aktive Achse verfahren" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1195 -msgid "Z -" +#: src/emc/usr_intf/pncconf/pncconf.glade:1125 +msgid "A +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1207 -msgid "Y -" +#: src/emc/usr_intf/pncconf/pncconf.glade:1135 +msgid "A -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1219 -#, fuzzy -msgid "X -" -msgstr "X -" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1229 -msgid "Z +" +#: src/emc/usr_intf/pncconf/pncconf.glade:1169 +#: src/emc/usr_intf/pncconf/pncconf.glade:1181 +#: src/emc/usr_intf/pncconf/pncconf.glade:1191 +#: src/emc/usr_intf/pncconf/pncconf.glade:1246 +#: src/emc/usr_intf/pncconf/pncconf.glade:1759 +msgid "mm/min " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1239 -msgid "Y +" +#: src/emc/usr_intf/pncconf/pncconf.glade:1269 +msgid " ab)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1249 +#: src/emc/usr_intf/pncconf/pncconf.glade:1282 +#: src/emc/usr_intf/pncconf/pncconf.glade:2493 +#: src/emc/usr_intf/pncconf/pncconf.glade:2927 +#: src/emc/usr_intf/pncconf/pncconf.glade:3808 +#: src/emc/usr_intf/pncconf/pncconf.glade:4689 #, fuzzy -msgid "X +" -msgstr "X +" +msgid " b)" +msgstr "Re_ferenzfahrt" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1293 +#: src/emc/usr_intf/pncconf/pncconf.glade:2482 +#: src/emc/usr_intf/pncconf/pncconf.glade:2916 +#: src/emc/usr_intf/pncconf/pncconf.glade:3797 +#: src/emc/usr_intf/pncconf/pncconf.glade:4678 +#, fuzzy +msgid " a)" +msgstr "Re_ferenzfahrt" -#: src/emc/usr_intf/pncconf/pncconf.glade:1289 -#: src/emc/usr_intf/pncconf/pncconf.glade:2208 -#: src/emc/usr_intf/pncconf/pncconf.glade:3496 -#: src/emc/usr_intf/pncconf/pncconf.glade:4377 -#: src/emc/usr_intf/pncconf/pncconf.glade:5258 +#: src/emc/usr_intf/pncconf/pncconf.glade:1305 +#: src/emc/usr_intf/pncconf/pncconf.glade:2385 +#: src/emc/usr_intf/pncconf/pncconf.glade:2867 +#: src/emc/usr_intf/pncconf/pncconf.glade:3748 +#: src/emc/usr_intf/pncconf/pncconf.glade:4629 #, fuzzy msgid "default" msgstr "Spindelencoder Index" -#: src/emc/usr_intf/pncconf/pncconf.glade:1299 -#: src/emc/usr_intf/pncconf/pncconf.glade:2107 -#: src/emc/usr_intf/pncconf/pncconf.glade:3443 -#: src/emc/usr_intf/pncconf/pncconf.glade:4324 -#: src/emc/usr_intf/pncconf/pncconf.glade:5205 +#: src/emc/usr_intf/pncconf/pncconf.glade:1336 +#: src/emc/usr_intf/pncconf/pncconf.glade:1476 #, fuzzy -msgid " a)" -msgstr "Re_ferenzfahrt" +msgid "Jog Speed select A" +msgstr "Aktive Achse verfahren" -#: src/emc/usr_intf/pncconf/pncconf.glade:1311 -#: src/emc/usr_intf/pncconf/pncconf.glade:2096 -#: src/emc/usr_intf/pncconf/pncconf.glade:3432 -#: src/emc/usr_intf/pncconf/pncconf.glade:4313 -#: src/emc/usr_intf/pncconf/pncconf.glade:5194 +#: src/emc/usr_intf/pncconf/pncconf.glade:1348 #, fuzzy -msgid " b)" -msgstr "Re_ferenzfahrt" +msgid "X +" +msgstr "X +" -#: src/emc/usr_intf/pncconf/pncconf.glade:1322 -msgid " ab)" +#: src/emc/usr_intf/pncconf/pncconf.glade:1354 +msgid "Y +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1348 -#: src/emc/usr_intf/pncconf/pncconf.glade:1401 -#: src/emc/usr_intf/pncconf/pncconf.glade:1413 -#: src/emc/usr_intf/pncconf/pncconf.glade:1423 -#: src/emc/usr_intf/pncconf/pncconf.glade:1751 -msgid "mm/min " +#: src/emc/usr_intf/pncconf/pncconf.glade:1364 +msgid "Z +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1456 -msgid "A -" +#: src/emc/usr_intf/pncconf/pncconf.glade:1374 +#, fuzzy +msgid "X -" +msgstr "X -" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1384 +msgid "Y -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1468 -msgid "A +" +#: src/emc/usr_intf/pncconf/pncconf.glade:1396 +msgid "Z -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1492 +#: src/emc/usr_intf/pncconf/pncconf.glade:1500 #, fuzzy msgid "Digital Control" msgstr "Digitaler Ausgang 0" -#: src/emc/usr_intf/pncconf/pncconf.glade:1539 -msgid "X " +#: src/emc/usr_intf/pncconf/pncconf.glade:1593 +#: src/emc/usr_intf/gscreen/gscreen.glade:502 +msgid "A" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1603 +#: src/emc/usr_intf/gscreen/gscreen.glade:374 +msgid "Z" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1545 -#: src/emc/usr_intf/pncconf/pncconf.glade:5901 -#: src/emc/usr_intf/pncconf/pncconf.glade:6531 -#: src/emc/usr_intf/pncconf/pncconf.glade:6910 -#: src/emc/usr_intf/pncconf/pncconf.glade:7257 -#: emc/usr_intf/pncconf/pncconf.glade:1356 +#: src/emc/usr_intf/pncconf/pncconf.glade:1613 +#: src/emc/usr_intf/pncconf/pncconf.glade:6134 +#: src/emc/usr_intf/pncconf/pncconf.glade:6458 +#: src/emc/usr_intf/pncconf/pncconf.glade:6860 +#: src/emc/usr_intf/pncconf/pncconf.glade:7235 +#: src/emc/usr_intf/gscreen/gscreen.glade:244 #, fuzzy msgid "Y" msgstr "jJ" -#: src/emc/usr_intf/pncconf/pncconf.glade:1555 -msgid "Z" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1565 -msgid "A" +#: src/emc/usr_intf/pncconf/pncconf.glade:1623 +msgid "X " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1623 +#: src/emc/usr_intf/pncconf/pncconf.glade:1631 #, fuzzy msgid "Analog Control" msgstr "Manuelle Kontrolle" -#: src/emc/usr_intf/pncconf/pncconf.glade:1649 -#: src/emc/usr_intf/pncconf/pncconf.glade:1780 -#: src/emc/usr_intf/pncconf/pncconf.glade:2690 -#: src/emc/usr_intf/pncconf/pncconf.glade:3571 -#: src/emc/usr_intf/pncconf/pncconf.glade:4452 -#: src/emc/usr_intf/pncconf/pncconf.glade:5333 -#: src/emc/usr_intf/pncconf/pncconf.glade:57371 +#: src/emc/usr_intf/pncconf/pncconf.glade:1657 +#: src/emc/usr_intf/pncconf/pncconf.glade:1788 +#: src/emc/usr_intf/pncconf/pncconf.glade:2698 +#: src/emc/usr_intf/pncconf/pncconf.glade:3579 +#: src/emc/usr_intf/pncconf/pncconf.glade:4460 +#: src/emc/usr_intf/pncconf/pncconf.glade:5341 +#: src/emc/usr_intf/pncconf/pncconf.glade:64300 msgid "Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1667 +#: src/emc/usr_intf/pncconf/pncconf.glade:1675 msgid "USB Joystick Jogging " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1711 +#: src/emc/usr_intf/pncconf/pncconf.glade:1719 msgid "shared buttons for all axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1724 +#: src/emc/usr_intf/pncconf/pncconf.glade:1732 #, fuzzy msgid "buttons for each axis" msgstr "Vierte Achse verfahren" -#: src/emc/usr_intf/pncconf/pncconf.glade:1798 +#: src/emc/usr_intf/pncconf/pncconf.glade:1806 msgid "External Button Jogging" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1839 +#: src/emc/usr_intf/pncconf/pncconf.glade:1847 msgid "Shared MPG / selectable axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1852 +#: src/emc/usr_intf/pncconf/pncconf.glade:1860 #, fuzzy msgid "Mpg per axis" msgstr "Erste Achse verfahren" -#: src/emc/usr_intf/pncconf/pncconf.glade:1867 +#: src/emc/usr_intf/pncconf/pncconf.glade:1875 #, fuzzy msgid "selectable MPG increments" msgstr "Schrittweite auswählen" -#: src/emc/usr_intf/pncconf/pncconf.glade:1932 -#: src/emc/usr_intf/pncconf/pncconf.glade:2907 -#: src/emc/usr_intf/pncconf/pncconf.glade:3788 -#: src/emc/usr_intf/pncconf/pncconf.glade:4669 +#: src/emc/usr_intf/pncconf/pncconf.glade:1940 +#: src/emc/usr_intf/pncconf/pncconf.glade:3379 +#: src/emc/usr_intf/pncconf/pncconf.glade:4260 +#: src/emc/usr_intf/pncconf/pncconf.glade:5141 #, fuzzy -msgid "Mux options" -msgstr "Achssteuerung" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1980 -#: src/emc/usr_intf/pncconf/pncconf.glade:2868 -#: src/emc/usr_intf/pncconf/pncconf.glade:3763 -#: src/emc/usr_intf/pncconf/pncconf.glade:4644 -msgid "use debounce" -msgstr "" +msgid " d)" +msgstr "Re_ferenzfahrt" -#: src/emc/usr_intf/pncconf/pncconf.glade:1995 -msgid "use gray code" +#: src/emc/usr_intf/pncconf/pncconf.glade:1952 +#: src/emc/usr_intf/pncconf/pncconf.glade:3340 +#: src/emc/usr_intf/pncconf/pncconf.glade:4221 +#: src/emc/usr_intf/pncconf/pncconf.glade:5102 +msgid " abcd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2010 -msgid "ignore all inputs false" +#: src/emc/usr_intf/pncconf/pncconf.glade:1965 +#: src/emc/usr_intf/pncconf/pncconf.glade:3353 +#: src/emc/usr_intf/pncconf/pncconf.glade:4234 +#: src/emc/usr_intf/pncconf/pncconf.glade:5115 +msgid " bcd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2035 -#: src/emc/usr_intf/pncconf/pncconf.glade:2048 -#: src/emc/usr_intf/pncconf/pncconf.glade:2061 -#: src/emc/usr_intf/pncconf/pncconf.glade:2407 -#: src/emc/usr_intf/pncconf/pncconf.glade:2420 -#: src/emc/usr_intf/pncconf/pncconf.glade:2433 -#: src/emc/usr_intf/pncconf/pncconf.glade:2446 -#: src/emc/usr_intf/pncconf/pncconf.glade:2457 -#: src/emc/usr_intf/pncconf/pncconf.glade:2470 -#: src/emc/usr_intf/pncconf/pncconf.glade:2483 -#: src/emc/usr_intf/pncconf/pncconf.glade:2496 -#: src/emc/usr_intf/pncconf/pncconf.glade:2509 -#: src/emc/usr_intf/pncconf/pncconf.glade:2522 -#: src/emc/usr_intf/pncconf/pncconf.glade:2535 -#: src/emc/usr_intf/pncconf/pncconf.glade:8343 -#: src/emc/usr_intf/pncconf/pncconf.glade:8379 -#: src/emc/usr_intf/pncconf/pncconf.glade:56542 -#: src/emc/usr_intf/pncconf/pncconf.glade:61266 -#: src/emc/usr_intf/pncconf/pncconf.glade:61278 -#: src/emc/usr_intf/pncconf/pncconf.glade:61290 -#: src/emc/usr_intf/pncconf/pncconf.glade:61302 -#: src/emc/usr_intf/pncconf/pncconf.glade:62475 -#: src/emc/usr_intf/pncconf/pncconf.glade:62487 -#: src/emc/usr_intf/pncconf/pncconf.glade:62499 -#: src/emc/usr_intf/pncconf/pncconf.glade:62511 -#: src/emc/usr_intf/pncconf/pncconf.glade:63452 -#: src/emc/usr_intf/pncconf/pncconf.glade:63464 -#: src/emc/usr_intf/pncconf/pncconf.glade:63476 -#: src/emc/usr_intf/pncconf/pncconf.glade:63488 -#: src/emc/usr_intf/pncconf/pncconf.glade:64661 -#: src/emc/usr_intf/pncconf/pncconf.glade:64673 -#: src/emc/usr_intf/pncconf/pncconf.glade:64685 -#: src/emc/usr_intf/pncconf/pncconf.glade:64697 -#: src/emc/usr_intf/pncconf/pncconf.glade:65608 -#: src/emc/usr_intf/pncconf/pncconf.glade:65620 -#: src/emc/usr_intf/pncconf/pncconf.glade:65632 -#: src/emc/usr_intf/pncconf/pncconf.glade:65644 -#: emc/usr_intf/pncconf/pncconf.glade:14765 -#: emc/usr_intf/pncconf/pncconf.glade:16996 -#: emc/usr_intf/pncconf/pncconf.glade:21120 -#: emc/usr_intf/pncconf/pncconf.glade:21132 -#: emc/usr_intf/pncconf/pncconf.glade:21144 -#: emc/usr_intf/pncconf/pncconf.glade:21156 -msgid "label" +#: src/emc/usr_intf/pncconf/pncconf.glade:1978 +#: src/emc/usr_intf/pncconf/pncconf.glade:3366 +#: src/emc/usr_intf/pncconf/pncconf.glade:4247 +#: src/emc/usr_intf/pncconf/pncconf.glade:5128 +msgid " acd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2073 -#: src/emc/usr_intf/pncconf/pncconf.glade:2559 -#: src/emc/usr_intf/pncconf/pncconf.glade:3300 -#: src/emc/usr_intf/pncconf/pncconf.glade:4181 -#: src/emc/usr_intf/pncconf/pncconf.glade:5062 -msgid " abc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:1991 +#: src/emc/usr_intf/pncconf/pncconf.glade:3430 +#: src/emc/usr_intf/pncconf/pncconf.glade:4311 +#: src/emc/usr_intf/pncconf/pncconf.glade:5192 +msgid " cd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2086 -#: src/emc/usr_intf/pncconf/pncconf.glade:3422 -#: src/emc/usr_intf/pncconf/pncconf.glade:4303 -#: src/emc/usr_intf/pncconf/pncconf.glade:5184 -msgid " ab)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2004 +#: src/emc/usr_intf/pncconf/pncconf.glade:3404 +#: src/emc/usr_intf/pncconf/pncconf.glade:4285 +#: src/emc/usr_intf/pncconf/pncconf.glade:5166 +msgid " bd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2372 -#: src/emc/usr_intf/pncconf/pncconf.glade:3321 -#: src/emc/usr_intf/pncconf/pncconf.glade:4202 -#: src/emc/usr_intf/pncconf/pncconf.glade:5083 -msgid " ac)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2017 +#: src/emc/usr_intf/pncconf/pncconf.glade:3391 +#: src/emc/usr_intf/pncconf/pncconf.glade:4272 +#: src/emc/usr_intf/pncconf/pncconf.glade:5153 +msgid " ad)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2383 -#: src/emc/usr_intf/pncconf/pncconf.glade:3311 -#: src/emc/usr_intf/pncconf/pncconf.glade:4192 -#: src/emc/usr_intf/pncconf/pncconf.glade:5073 -msgid " bc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2030 +#: src/emc/usr_intf/pncconf/pncconf.glade:2514 +#: src/emc/usr_intf/pncconf/pncconf.glade:3059 +#: src/emc/usr_intf/pncconf/pncconf.glade:3940 +#: src/emc/usr_intf/pncconf/pncconf.glade:4821 +msgid " abc)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2547 -#: src/emc/usr_intf/pncconf/pncconf.glade:3332 -#: src/emc/usr_intf/pncconf/pncconf.glade:4213 -#: src/emc/usr_intf/pncconf/pncconf.glade:5094 +#: src/emc/usr_intf/pncconf/pncconf.glade:2041 +#: src/emc/usr_intf/pncconf/pncconf.glade:3026 +#: src/emc/usr_intf/pncconf/pncconf.glade:3907 +#: src/emc/usr_intf/pncconf/pncconf.glade:4788 #, fuzzy msgid " c)" msgstr "Re_ferenzfahrt" -#: src/emc/usr_intf/pncconf/pncconf.glade:2570 -#: src/emc/usr_intf/pncconf/pncconf.glade:2966 -#: src/emc/usr_intf/pncconf/pncconf.glade:3847 -#: src/emc/usr_intf/pncconf/pncconf.glade:4728 -msgid " ad)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2207 +#: src/emc/usr_intf/pncconf/pncconf.glade:3049 +#: src/emc/usr_intf/pncconf/pncconf.glade:3930 +#: src/emc/usr_intf/pncconf/pncconf.glade:4811 +msgid " bc)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2583 -#: src/emc/usr_intf/pncconf/pncconf.glade:2953 -#: src/emc/usr_intf/pncconf/pncconf.glade:3834 -#: src/emc/usr_intf/pncconf/pncconf.glade:4715 -msgid " bd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2217 +#: src/emc/usr_intf/pncconf/pncconf.glade:3038 +#: src/emc/usr_intf/pncconf/pncconf.glade:3919 +#: src/emc/usr_intf/pncconf/pncconf.glade:4800 +msgid " ac)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2596 -#: src/emc/usr_intf/pncconf/pncconf.glade:2927 -#: src/emc/usr_intf/pncconf/pncconf.glade:3808 -#: src/emc/usr_intf/pncconf/pncconf.glade:4689 -msgid " cd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2504 +#: src/emc/usr_intf/pncconf/pncconf.glade:2938 +#: src/emc/usr_intf/pncconf/pncconf.glade:3819 +#: src/emc/usr_intf/pncconf/pncconf.glade:4700 +msgid " ab)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2609 -#: src/emc/usr_intf/pncconf/pncconf.glade:2991 -#: src/emc/usr_intf/pncconf/pncconf.glade:3872 -#: src/emc/usr_intf/pncconf/pncconf.glade:4753 -msgid " acd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2577 +msgid "ignore all inputs false" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2622 -#: src/emc/usr_intf/pncconf/pncconf.glade:3004 -#: src/emc/usr_intf/pncconf/pncconf.glade:3885 -#: src/emc/usr_intf/pncconf/pncconf.glade:4766 -msgid " bcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2592 +msgid "use gray code" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2635 -#: src/emc/usr_intf/pncconf/pncconf.glade:3017 -#: src/emc/usr_intf/pncconf/pncconf.glade:3898 -#: src/emc/usr_intf/pncconf/pncconf.glade:4779 -msgid " abcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2607 +#: src/emc/usr_intf/pncconf/pncconf.glade:3489 +#: src/emc/usr_intf/pncconf/pncconf.glade:4356 +#: src/emc/usr_intf/pncconf/pncconf.glade:5237 +msgid "use debounce" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2648 -#: src/emc/usr_intf/pncconf/pncconf.glade:2979 -#: src/emc/usr_intf/pncconf/pncconf.glade:3860 -#: src/emc/usr_intf/pncconf/pncconf.glade:4741 +#: src/emc/usr_intf/pncconf/pncconf.glade:2658 +#: src/emc/usr_intf/pncconf/pncconf.glade:3453 +#: src/emc/usr_intf/pncconf/pncconf.glade:4334 +#: src/emc/usr_intf/pncconf/pncconf.glade:5215 #, fuzzy -msgid " d)" -msgstr "Re_ferenzfahrt" +msgid "Mux options" +msgstr "Achssteuerung" -#: src/emc/usr_intf/pncconf/pncconf.glade:2664 +#: src/emc/usr_intf/pncconf/pncconf.glade:2672 #, fuzzy msgid "increments" msgstr "Inkrementell" -#: src/emc/usr_intf/pncconf/pncconf.glade:2708 +#: src/emc/usr_intf/pncconf/pncconf.glade:2716 msgid "External MPG Jogging" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2739 -#: src/emc/usr_intf/pncconf/pncconf.glade:3620 -#: src/emc/usr_intf/pncconf/pncconf.glade:4501 +#: src/emc/usr_intf/pncconf/pncconf.glade:2747 +#: src/emc/usr_intf/pncconf/pncconf.glade:3628 +#: src/emc/usr_intf/pncconf/pncconf.glade:4509 msgid "Use MPG " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2752 -#: src/emc/usr_intf/pncconf/pncconf.glade:3633 -#: src/emc/usr_intf/pncconf/pncconf.glade:4514 +#: src/emc/usr_intf/pncconf/pncconf.glade:2760 +#: src/emc/usr_intf/pncconf/pncconf.glade:3641 +#: src/emc/usr_intf/pncconf/pncconf.glade:4522 msgid "use switches" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2838 -#: src/emc/usr_intf/pncconf/pncconf.glade:3733 -#: src/emc/usr_intf/pncconf/pncconf.glade:4614 -msgid "ignore all-inputs false" +#: src/emc/usr_intf/pncconf/pncconf.glade:3417 +#: src/emc/usr_intf/pncconf/pncconf.glade:4298 +#: src/emc/usr_intf/pncconf/pncconf.glade:5179 +msgid " abd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2853 -#: src/emc/usr_intf/pncconf/pncconf.glade:3748 -#: src/emc/usr_intf/pncconf/pncconf.glade:4629 +#: src/emc/usr_intf/pncconf/pncconf.glade:3504 +#: src/emc/usr_intf/pncconf/pncconf.glade:4371 +#: src/emc/usr_intf/pncconf/pncconf.glade:5252 #, fuzzy msgid "use graycode" msgstr "Unbenutzt" -#: src/emc/usr_intf/pncconf/pncconf.glade:2940 -#: src/emc/usr_intf/pncconf/pncconf.glade:3821 -#: src/emc/usr_intf/pncconf/pncconf.glade:4702 -msgid " abd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:3519 +#: src/emc/usr_intf/pncconf/pncconf.glade:4386 +#: src/emc/usr_intf/pncconf/pncconf.glade:5267 +msgid "ignore all-inputs false" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:3555 -#: src/emc/usr_intf/pncconf/pncconf.glade:4436 -#: src/emc/usr_intf/pncconf/pncconf.glade:5317 +#: src/emc/usr_intf/pncconf/pncconf.glade:3563 +#: src/emc/usr_intf/pncconf/pncconf.glade:4444 +#: src/emc/usr_intf/pncconf/pncconf.glade:5325 #, fuzzy msgid "Increments" msgstr "Intervall" -#: src/emc/usr_intf/pncconf/pncconf.glade:3589 +#: src/emc/usr_intf/pncconf/pncconf.glade:3597 #, fuzzy msgid "External Feed Override" msgstr "Vorschubübersteuerung" -#: src/emc/usr_intf/pncconf/pncconf.glade:4470 +#: src/emc/usr_intf/pncconf/pncconf.glade:4478 msgid "Max Velocity Override" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5351 +#: src/emc/usr_intf/pncconf/pncconf.glade:5359 #, fuzzy msgid "External Spindle Override" msgstr "Spindelübersteuerung" -#: src/emc/usr_intf/pncconf/pncconf.glade:5379 -#: emc/usr_intf/pncconf/pncconf.glade:1066 +#: src/emc/usr_intf/pncconf/pncconf.glade:5387 #, fuzzy msgid "GUI configuration" msgstr "HAL konfigurieren" -#: src/emc/usr_intf/pncconf/pncconf.glade:5398 -#: emc/usr_intf/pncconf/pncconf.glade:1085 +#: src/emc/usr_intf/pncconf/pncconf.glade:5406 msgid "Frontend" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5557 +#: src/emc/usr_intf/pncconf/pncconf.glade:5566 #, fuzzy -msgid "" -"Commanded\n" -"Actual" -msgstr "erwartet" +msgid "Position_offset" +msgstr "Position:" -#: src/emc/usr_intf/pncconf/pncconf.glade:5570 +#: src/emc/usr_intf/pncconf/pncconf.glade:5573 #, fuzzy -msgid "" -"Machine\n" -"Relative\n" -msgstr "relativ" +msgid "Position_feedback" +msgstr "Position:" -#: src/emc/usr_intf/pncconf/pncconf.glade:5608 +#: src/emc/usr_intf/pncconf/pncconf.glade:5584 #, fuzzy -msgid "Max Feed Override" -msgstr "Vorschubübersteuerung:" +msgid "Max Spindle Override " +msgstr "Spindelübersteuerung:" -#: src/emc/usr_intf/pncconf/pncconf.glade:5667 +#: src/emc/usr_intf/pncconf/pncconf.glade:5606 #, fuzzy msgid "Min Spindle Override" msgstr "Spindelübersteuerung:" -#: src/emc/usr_intf/pncconf/pncconf.glade:5691 +#: src/emc/usr_intf/pncconf/pncconf.glade:5665 #, fuzzy -msgid "Max Spindle Override " -msgstr "Spindelübersteuerung:" +msgid "Max Feed Override" +msgstr "Vorschubübersteuerung:" #: src/emc/usr_intf/pncconf/pncconf.glade:5702 #, fuzzy -msgid "Position_feedback" -msgstr "Position:" +msgid "" +"Machine\n" +"Relative\n" +msgstr "relativ" -#: src/emc/usr_intf/pncconf/pncconf.glade:5713 +#: src/emc/usr_intf/pncconf/pncconf.glade:5714 #, fuzzy -msgid "Position_offset" -msgstr "Position:" +msgid "" +"Commanded\n" +"Actual" +msgstr "erwartet" -#: src/emc/usr_intf/pncconf/pncconf.glade:5721 +#: src/emc/usr_intf/pncconf/pncconf.glade:5729 msgid "General GUI Defaults" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5808 -msgid "Force Axis to Maximize" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5832 -#: src/emc/usr_intf/pncconf/pncconf.glade:6602 -#: src/emc/usr_intf/pncconf/pncconf.glade:6841 -#: src/emc/usr_intf/pncconf/pncconf.glade:7328 -#: emc/usr_intf/pncconf/pncconf.glade:1427 +#: src/emc/usr_intf/pncconf/pncconf.glade:5811 #, fuzzy -msgid "H" -msgstr "Hz" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5866 -#: src/emc/usr_intf/pncconf/pncconf.glade:6568 -#: src/emc/usr_intf/pncconf/pncconf.glade:6875 -#: src/emc/usr_intf/pncconf/pncconf.glade:7294 -#: emc/usr_intf/pncconf/pncconf.glade:1393 -msgid "W" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5876 -#: src/emc/usr_intf/pncconf/pncconf.glade:6556 -#: src/emc/usr_intf/pncconf/pncconf.glade:6885 -#: src/emc/usr_intf/pncconf/pncconf.glade:7282 -#: emc/usr_intf/pncconf/pncconf.glade:1381 -msgid "X" -msgstr "" +msgid "Default linear velocity " +msgstr "Gesch_windigkeit Referenzfahrt:" -#: src/emc/usr_intf/pncconf/pncconf.glade:5914 -#: src/emc/usr_intf/pncconf/pncconf.glade:6519 -#: src/emc/usr_intf/pncconf/pncconf.glade:6923 -#: src/emc/usr_intf/pncconf/pncconf.glade:7244 -#: emc/usr_intf/pncconf/pncconf.glade:1344 +#: src/emc/usr_intf/pncconf/pncconf.glade:5818 #, fuzzy -msgid "Position" -msgstr "Position:" +msgid "Min linear velocity" +msgstr "Gesch_windigkeit Referenzfahrt:" -#: src/emc/usr_intf/pncconf/pncconf.glade:5927 -#: src/emc/usr_intf/pncconf/pncconf.glade:6510 -#: src/emc/usr_intf/pncconf/pncconf.glade:6936 -#: src/emc/usr_intf/pncconf/pncconf.glade:7234 -#: emc/usr_intf/pncconf/pncconf.glade:1335 +#: src/emc/usr_intf/pncconf/pncconf.glade:5829 #, fuzzy -msgid "size" -msgstr "Größe" +msgid "Max linear velocity" +msgstr "Maximale Geschwindigkeit:" -#: src/emc/usr_intf/pncconf/pncconf.glade:5942 -#: src/emc/usr_intf/pncconf/pncconf.glade:5952 -#: src/emc/usr_intf/pncconf/pncconf.glade:6158 -#: emc/usr_intf/pncconf/pncconf.py:3305 emc/usr_intf/pncconf/pncconf.py:3307 -#: emc/usr_intf/pncconf/pncconf.py:3308 emc/usr_intf/pncconf/pncconf.py:3309 +#: src/emc/usr_intf/pncconf/pncconf.glade:5879 +#: src/emc/usr_intf/pncconf/pncconf.glade:6085 +#: src/emc/usr_intf/pncconf/pncconf.glade:6097 #, fuzzy msgid "mm / min" msgstr "mm / s" -#: src/emc/usr_intf/pncconf/pncconf.glade:5975 -#: src/emc/usr_intf/pncconf/pncconf.glade:5985 -#: src/emc/usr_intf/pncconf/pncconf.glade:5997 -#, fuzzy -msgid "Deg / min" -msgstr "Grad / Umdrehung" - -#: src/emc/usr_intf/pncconf/pncconf.glade:6010 -msgid "xyzabc" +#: src/emc/usr_intf/pncconf/pncconf.glade:5892 +msgid "Default Angular velocity " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6023 -msgid "Axis Geometry" +#: src/emc/usr_intf/pncconf/pncconf.glade:5926 +msgid "gedit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6048 +#: src/emc/usr_intf/pncconf/pncconf.glade:5939 #, fuzzy -msgid "Max Angular velocity" +msgid "Min Angular velocity" msgstr "Maximale Geschwindigkeit:" -#: src/emc/usr_intf/pncconf/pncconf.glade:6061 -msgid "5mm 1mm .5mm .1mm .05mm .01mm .005mm" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:6074 +#: src/emc/usr_intf/pncconf/pncconf.glade:5966 #, fuzzy msgid "Increments " msgstr "Intervall" -#: src/emc/usr_intf/pncconf/pncconf.glade:6099 +#: src/emc/usr_intf/pncconf/pncconf.glade:5977 +msgid "5mm 1mm .5mm .1mm .05mm .01mm .005mm" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:5990 #, fuzzy -msgid "Min Angular velocity" +msgid "Max Angular velocity" msgstr "Maximale Geschwindigkeit:" -#: src/emc/usr_intf/pncconf/pncconf.glade:6112 -msgid "gedit" +#: src/emc/usr_intf/pncconf/pncconf.glade:6017 +msgid "Axis Geometry" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6148 -msgid "Default Angular velocity " +#: src/emc/usr_intf/pncconf/pncconf.glade:6028 +msgid "xyzabc" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6211 +#: src/emc/usr_intf/pncconf/pncconf.glade:6040 +#: src/emc/usr_intf/pncconf/pncconf.glade:6052 +#: src/emc/usr_intf/pncconf/pncconf.glade:6064 #, fuzzy -msgid "Max linear velocity" -msgstr "Maximale Geschwindigkeit:" +msgid "Deg / min" +msgstr "Grad / Umdrehung" -#: src/emc/usr_intf/pncconf/pncconf.glade:6222 +#: src/emc/usr_intf/pncconf/pncconf.glade:6113 +#: src/emc/usr_intf/pncconf/pncconf.glade:6484 +#: src/emc/usr_intf/pncconf/pncconf.glade:6839 +#: src/emc/usr_intf/pncconf/pncconf.glade:7262 #, fuzzy -msgid "Min linear velocity" -msgstr "Gesch_windigkeit Referenzfahrt:" +msgid "size" +msgstr "Größe" -#: src/emc/usr_intf/pncconf/pncconf.glade:6233 +#: src/emc/usr_intf/pncconf/pncconf.glade:6122 +#: src/emc/usr_intf/pncconf/pncconf.glade:6471 +#: src/emc/usr_intf/pncconf/pncconf.glade:6848 +#: src/emc/usr_intf/pncconf/pncconf.glade:7248 #, fuzzy -msgid "Default linear velocity " -msgstr "Gesch_windigkeit Referenzfahrt:" +msgid "Position" +msgstr "Position:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:6159 +#: src/emc/usr_intf/pncconf/pncconf.glade:6433 +#: src/emc/usr_intf/pncconf/pncconf.glade:6885 +#: src/emc/usr_intf/pncconf/pncconf.glade:7210 +#: src/emc/usr_intf/gscreen/gscreen.glade:116 +msgid "X" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:6171 +#: src/emc/usr_intf/pncconf/pncconf.glade:6423 +#: src/emc/usr_intf/pncconf/pncconf.glade:6897 +#: src/emc/usr_intf/pncconf/pncconf.glade:7200 +#: src/emc/usr_intf/gscreen/gscreen.glade:1142 +msgid "W" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6241 +#: src/emc/usr_intf/pncconf/pncconf.glade:6205 +#: src/emc/usr_intf/pncconf/pncconf.glade:6389 +#: src/emc/usr_intf/pncconf/pncconf.glade:6931 +#: src/emc/usr_intf/pncconf/pncconf.glade:7166 #, fuzzy -msgid "AXIS defaults" -msgstr "Benutzen der Standartwerte" +msgid "H" +msgstr "Hz" -#: src/emc/usr_intf/pncconf/pncconf.glade:6352 -msgid "Error Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:6227 +msgid "Force Axis to Maximize" msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:6249 +#, fuzzy +msgid "AXIS defaults" +msgstr "Benutzen der Standartwerte" + #: src/emc/usr_intf/pncconf/pncconf.glade:6365 -msgid "DTG Textcolor" +msgid "Force Touchy to Maximize after positioning" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6378 -#, fuzzy -msgid "Relative Textcolor" -msgstr "Relative Position" +#: src/emc/usr_intf/pncconf/pncconf.glade:6501 +#: src/emc/usr_intf/pncconf/pncconf.glade:7333 +msgid "Follow System Theme\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6391 -msgid "Absolute Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:6514 +#: src/emc/usr_intf/pncconf/pncconf.glade:7347 +msgid "GTK Theme" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6454 +#: src/emc/usr_intf/pncconf/pncconf.glade:6540 +#: src/emc/usr_intf/gscreen/gscreen.glade:1857 msgid "Absolute Text Color" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6479 -#: src/emc/usr_intf/pncconf/pncconf.glade:7148 -msgid "GTK Theme" +#: src/emc/usr_intf/pncconf/pncconf.glade:6603 +msgid "Absolute Textcolor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6491 -#: src/emc/usr_intf/pncconf/pncconf.glade:7158 -msgid "Follow System Theme\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:6616 +#, fuzzy +msgid "Relative Textcolor" +msgstr "Relative Position" + +#: src/emc/usr_intf/pncconf/pncconf.glade:6629 +msgid "DTG Textcolor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6624 -msgid "Force Touchy to Maximize after positioning" +#: src/emc/usr_intf/pncconf/pncconf.glade:6642 +msgid "Error Textcolor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6669 +#: src/emc/usr_intf/pncconf/pncconf.glade:6677 #, fuzzy msgid "GUI Options" msgstr "SPS-Optionen" -#: src/emc/usr_intf/pncconf/pncconf.glade:6700 +#: src/emc/usr_intf/pncconf/pncconf.glade:6708 msgid "Virtual Control Panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6775 -#: emc/usr_intf/pncconf/pncconf.glade:1279 +#: src/emc/usr_intf/pncconf/pncconf.glade:6783 #, fuzzy msgid "XYZ buttons (uses Halui)" msgstr "_XYZ-Buttons (benutzt HalUI)" -#: src/emc/usr_intf/pncconf/pncconf.glade:6946 -#: emc/usr_intf/pncconf/pncconf.glade:1450 +#: src/emc/usr_intf/pncconf/pncconf.glade:6954 msgid "Geometry Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7025 +#: src/emc/usr_intf/pncconf/pncconf.glade:7033 msgid "Pyvcp Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7097 +#: src/emc/usr_intf/pncconf/pncconf.glade:7105 msgid "Sample display " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7172 -msgid "Force Maximize" +#: src/emc/usr_intf/pncconf/pncconf.glade:7272 +msgid "Standalone Panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7186 -msgid "Center Tab Embeded" +#: src/emc/usr_intf/pncconf/pncconf.glade:7289 +msgid "Rightside Embeded" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7201 -msgid "Rightside Embeded" +#: src/emc/usr_intf/pncconf/pncconf.glade:7305 +msgid "Center Tab Embeded" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7217 -msgid "Standalone Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:7320 +msgid "Force Maximize" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7351 +#: src/emc/usr_intf/pncconf/pncconf.glade:7359 #, fuzzy msgid "Display Options" msgstr "_Inch" -#: src/emc/usr_intf/pncconf/pncconf.glade:7401 +#: src/emc/usr_intf/pncconf/pncconf.glade:7409 msgid "Max RPM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7414 +#: src/emc/usr_intf/pncconf/pncconf.glade:7422 #, fuzzy msgid "Spindle Speed Indicator" msgstr "Spindeldrehzahl (1/min)" -#: src/emc/usr_intf/pncconf/pncconf.glade:7426 +#: src/emc/usr_intf/pncconf/pncconf.glade:7434 #, fuzzy msgid "Spindle At Speed LED" msgstr "Spindeldrehzahl (1/min)" -#: src/emc/usr_intf/pncconf/pncconf.glade:7438 +#: src/emc/usr_intf/pncconf/pncconf.glade:7446 #, fuzzy msgid "Zero X Button" msgstr "Linke Maustaste" -#: src/emc/usr_intf/pncconf/pncconf.glade:7450 +#: src/emc/usr_intf/pncconf/pncconf.glade:7458 #, fuzzy msgid "Zero Y Button" msgstr "Linke Maustaste" -#: src/emc/usr_intf/pncconf/pncconf.glade:7462 +#: src/emc/usr_intf/pncconf/pncconf.glade:7470 #, fuzzy msgid "Zero Z Button" msgstr "Linke Maustaste" -#: src/emc/usr_intf/pncconf/pncconf.glade:7474 +#: src/emc/usr_intf/pncconf/pncconf.glade:7482 #, fuzzy msgid "Zero A Button" msgstr "Linke Maustaste" -#: src/emc/usr_intf/pncconf/pncconf.glade:7486 +#: src/emc/usr_intf/pncconf/pncconf.glade:7494 msgid "Requires Classicladder touch-off program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7487 +#: src/emc/usr_intf/pncconf/pncconf.glade:7495 msgid "Auto Z Touch Off Button" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7500 +#: src/emc/usr_intf/pncconf/pncconf.glade:7508 #, fuzzy msgid "Sample Options" msgstr "PyVCP-Beispiele" -#: src/emc/usr_intf/pncconf/pncconf.glade:7574 +#: src/emc/usr_intf/pncconf/pncconf.glade:7582 msgid "Gladevcp Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7597 +#: src/emc/usr_intf/pncconf/pncconf.glade:7605 #, fuzzy msgid "Include custom GladeVCP GUI panel" msgstr "Benutzerdefiniertes PyVCP-Panel einbinden" -#: src/emc/usr_intf/pncconf/pncconf.glade:7668 -msgid "Restore joint position after shutdown" +#: src/emc/usr_intf/pncconf/pncconf.glade:7676 +msgid "Force individual manual homing" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7683 -#, fuzzy -msgid "Move spindle up before tool change" -msgstr "_Bildschirmmitteilung bei Werkzeugwechsel" +#: src/emc/usr_intf/pncconf/pncconf.glade:7689 +msgid "Random position toolchanger " +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7696 -msgid "Leave spindle on during tool change" +#: src/emc/usr_intf/pncconf/pncconf.glade:7704 +msgid "Require homing before MDI / Running" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7709 +#: src/emc/usr_intf/pncconf/pncconf.glade:7713 msgid "Popup Toolchange Prompt" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7723 -msgid "Require homing before MDI / Running" +#: src/emc/usr_intf/pncconf/pncconf.glade:7727 +msgid "Leave spindle on during tool change" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7732 -msgid "Random position toolchanger " -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:7740 +#, fuzzy +msgid "Move spindle up before tool change" +msgstr "_Bildschirmmitteilung bei Werkzeugwechsel" -#: src/emc/usr_intf/pncconf/pncconf.glade:7747 -msgid "Force individual manual homing" +#: src/emc/usr_intf/pncconf/pncconf.glade:7753 +msgid "Restore joint position after shutdown" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7761 +#: src/emc/usr_intf/pncconf/pncconf.glade:7769 msgid "Defaults and Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7789 +#: src/emc/usr_intf/pncconf/pncconf.glade:7797 msgid "Mesa0 I/O setup\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7809 +#: src/emc/usr_intf/pncconf/pncconf.glade:7817 msgid "" "Click on each page tab to configure signal names for each connector port.\n" "\n" @@ -11390,970 +12586,395 @@ msgid "" "accept the changes.\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7998 -#, fuzzy -msgid "Num of channels: " -msgstr "Nicht genügend Kanäle" +#: src/emc/usr_intf/pncconf/pncconf.glade:8001 +msgid "3PWM base frequency:" +msgstr "" #: src/emc/usr_intf/pncconf/pncconf.glade:8036 -msgid "7i29 daughter board" +#, fuzzy +msgid "Mesa parport address:" +msgstr "Adresse der ersten _parallelen Schnittstelle:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:8047 +msgid "Firmware:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8045 -msgid "7i30 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:8069 +msgid "SVST8_4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8057 -msgid "7i33 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:8094 +msgid "Num of 3 pwm generators: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8069 -msgid "7i40 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:8128 +msgid "Total number of pins:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8081 -msgid "7i48 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:8153 +msgid "" +"Accept components\n" +" Changes" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8096 -msgid "Sanity Checks" +#: src/emc/usr_intf/pncconf/pncconf.glade:8168 +msgid "PWM base frequency:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8137 -msgid "Num of Smart Serial Ports:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8179 +msgid "PDM base frequency:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8148 -#: emc/usr_intf/pncconf/pncconf.glade:1775 -#, fuzzy -msgid "Board name" -msgstr "World-Modus" +#: src/emc/usr_intf/pncconf/pncconf.glade:8190 +msgid "Watchdog timeout:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8155 -#: emc/usr_intf/pncconf/pncconf.glade:1902 -msgid "Num of step generators: " +#: src/emc/usr_intf/pncconf/pncconf.glade:8307 +msgid "Num of encoders:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8166 -#: emc/usr_intf/pncconf/pncconf.glade:1913 +#: src/emc/usr_intf/pncconf/pncconf.glade:8318 msgid "Num of pwm generators:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8177 -#: emc/usr_intf/pncconf/pncconf.glade:1924 -msgid "Num of encoders:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8329 +msgid "Num of step generators: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8294 -#: emc/usr_intf/pncconf/pncconf.glade:1935 -msgid "Watchdog timeout:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:8340 +#, fuzzy +msgid "Board name" +msgstr "World-Modus" -#: src/emc/usr_intf/pncconf/pncconf.glade:8305 -#: emc/usr_intf/pncconf/pncconf.glade:1946 -msgid "PDM base frequency:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8346 +msgid "Num of Smart Serial Ports:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8316 -#: emc/usr_intf/pncconf/pncconf.glade:1727 -msgid "PWM base frequency:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8393 +msgid "7i29 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8328 -#: emc/usr_intf/pncconf/pncconf.glade:1795 -msgid "" -"Accept components\n" -" Changes" +#: src/emc/usr_intf/pncconf/pncconf.glade:8402 +msgid "7i30 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8356 -msgid "Total number of pins:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8414 +msgid "7i33 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8389 -msgid "Num of 3 pwm generators: " +#: src/emc/usr_intf/pncconf/pncconf.glade:8426 +msgid "7i40 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8412 -#: emc/usr_intf/pncconf/pncconf.glade:1737 -msgid "SVST8_4" +#: src/emc/usr_intf/pncconf/pncconf.glade:8438 +msgid "7i48 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8437 -#: emc/usr_intf/pncconf/pncconf.glade:1751 -msgid "Firmware:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8453 +msgid "Sanity Checks" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8447 +#: src/emc/usr_intf/pncconf/pncconf.glade:8482 #, fuzzy -msgid "Mesa parport address:" -msgstr "Adresse der ersten _parallelen Schnittstelle:" +msgid "Num of channels: " +msgstr "Nicht genügend Kanäle" -#: src/emc/usr_intf/pncconf/pncconf.glade:8482 -msgid "3PWM base frequency:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:8494 +#, fuzzy +msgid "Num of resolvers:" +msgstr "Nicht genügend Kanäle" -#: src/emc/usr_intf/pncconf/pncconf.glade:8504 -#: emc/usr_intf/pncconf/pncconf.glade:1993 +#: src/emc/usr_intf/pncconf/pncconf.glade:8528 #, fuzzy msgid "" "Configuration\n" " Page" msgstr "Konfiguration *" -#: src/emc/usr_intf/pncconf/pncconf.glade:8698 -#: src/emc/usr_intf/pncconf/pncconf.glade:8712 -#: src/emc/usr_intf/pncconf/pncconf.glade:13677 -#: src/emc/usr_intf/pncconf/pncconf.glade:13689 -#: src/emc/usr_intf/pncconf/pncconf.glade:16373 -#: src/emc/usr_intf/pncconf/pncconf.glade:16385 -#: src/emc/usr_intf/pncconf/pncconf.glade:18883 -#: src/emc/usr_intf/pncconf/pncconf.glade:18895 -#: src/emc/usr_intf/pncconf/pncconf.glade:20747 -#: src/emc/usr_intf/pncconf/pncconf.glade:20759 -#: src/emc/usr_intf/pncconf/pncconf.glade:20962 -#: src/emc/usr_intf/pncconf/pncconf.glade:20976 -#: src/emc/usr_intf/pncconf/pncconf.glade:22758 -#: src/emc/usr_intf/pncconf/pncconf.glade:22772 -#: src/emc/usr_intf/pncconf/pncconf.glade:24554 -#: src/emc/usr_intf/pncconf/pncconf.glade:24568 -#: src/emc/usr_intf/pncconf/pncconf.glade:26330 -#: src/emc/usr_intf/pncconf/pncconf.glade:26344 -#: src/emc/usr_intf/pncconf/pncconf.glade:31324 -#: src/emc/usr_intf/pncconf/pncconf.glade:31336 -#: src/emc/usr_intf/pncconf/pncconf.glade:31600 -#: src/emc/usr_intf/pncconf/pncconf.glade:35669 -#: src/emc/usr_intf/pncconf/pncconf.glade:35681 -#: src/emc/usr_intf/pncconf/pncconf.glade:35814 -#: src/emc/usr_intf/pncconf/pncconf.glade:35828 -#: src/emc/usr_intf/pncconf/pncconf.glade:40000 -#: src/emc/usr_intf/pncconf/pncconf.glade:40012 -#: src/emc/usr_intf/pncconf/pncconf.glade:40174 -#: src/emc/usr_intf/pncconf/pncconf.glade:40188 -#: src/emc/usr_intf/pncconf/pncconf.glade:45168 -#: src/emc/usr_intf/pncconf/pncconf.glade:45180 -#: src/emc/usr_intf/pncconf/pncconf.glade:45431 -#: src/emc/usr_intf/pncconf/pncconf.glade:45445 -#: src/emc/usr_intf/pncconf/pncconf.glade:47097 -#: src/emc/usr_intf/pncconf/pncconf.glade:47111 -#: src/emc/usr_intf/pncconf/pncconf.glade:52091 -#: src/emc/usr_intf/pncconf/pncconf.glade:52103 -#: src/emc/usr_intf/pncconf/pncconf.glade:52354 -#: src/emc/usr_intf/pncconf/pncconf.glade:52368 -msgid "Num" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:8723 -#: src/emc/usr_intf/pncconf/pncconf.glade:8743 -#: src/emc/usr_intf/pncconf/pncconf.glade:8763 -#: src/emc/usr_intf/pncconf/pncconf.glade:8783 -#: src/emc/usr_intf/pncconf/pncconf.glade:8803 -#: src/emc/usr_intf/pncconf/pncconf.glade:8823 -#: src/emc/usr_intf/pncconf/pncconf.glade:8843 -#: src/emc/usr_intf/pncconf/pncconf.glade:8863 -#: src/emc/usr_intf/pncconf/pncconf.glade:8883 -#: src/emc/usr_intf/pncconf/pncconf.glade:8903 -#: src/emc/usr_intf/pncconf/pncconf.glade:8923 -#: src/emc/usr_intf/pncconf/pncconf.glade:8943 -#: src/emc/usr_intf/pncconf/pncconf.glade:8963 -#: src/emc/usr_intf/pncconf/pncconf.glade:8983 -#: src/emc/usr_intf/pncconf/pncconf.glade:9003 -#: src/emc/usr_intf/pncconf/pncconf.glade:9023 -#: src/emc/usr_intf/pncconf/pncconf.glade:9043 -#: src/emc/usr_intf/pncconf/pncconf.glade:9063 -#: src/emc/usr_intf/pncconf/pncconf.glade:9083 -#: src/emc/usr_intf/pncconf/pncconf.glade:9103 -#: src/emc/usr_intf/pncconf/pncconf.glade:9123 -#: src/emc/usr_intf/pncconf/pncconf.glade:9143 -#: src/emc/usr_intf/pncconf/pncconf.glade:9163 -#: src/emc/usr_intf/pncconf/pncconf.glade:11027 -#: src/emc/usr_intf/pncconf/pncconf.glade:11353 -#: src/emc/usr_intf/pncconf/pncconf.glade:13216 -#: src/emc/usr_intf/pncconf/pncconf.glade:13236 -#: src/emc/usr_intf/pncconf/pncconf.glade:13256 -#: src/emc/usr_intf/pncconf/pncconf.glade:13276 -#: src/emc/usr_intf/pncconf/pncconf.glade:13296 -#: src/emc/usr_intf/pncconf/pncconf.glade:13316 -#: src/emc/usr_intf/pncconf/pncconf.glade:13336 -#: src/emc/usr_intf/pncconf/pncconf.glade:13356 -#: src/emc/usr_intf/pncconf/pncconf.glade:13376 -#: src/emc/usr_intf/pncconf/pncconf.glade:13396 -#: src/emc/usr_intf/pncconf/pncconf.glade:13416 -#: src/emc/usr_intf/pncconf/pncconf.glade:13436 -#: src/emc/usr_intf/pncconf/pncconf.glade:13456 -#: src/emc/usr_intf/pncconf/pncconf.glade:13476 -#: src/emc/usr_intf/pncconf/pncconf.glade:13496 -#: src/emc/usr_intf/pncconf/pncconf.glade:13516 -#: src/emc/usr_intf/pncconf/pncconf.glade:13536 -#: src/emc/usr_intf/pncconf/pncconf.glade:13556 -#: src/emc/usr_intf/pncconf/pncconf.glade:13576 -#: src/emc/usr_intf/pncconf/pncconf.glade:13596 -#: src/emc/usr_intf/pncconf/pncconf.glade:13616 -#: src/emc/usr_intf/pncconf/pncconf.glade:13636 -#: src/emc/usr_intf/pncconf/pncconf.glade:13656 -#: src/emc/usr_intf/pncconf/pncconf.glade:13966 -#: src/emc/usr_intf/pncconf/pncconf.glade:15912 -#: src/emc/usr_intf/pncconf/pncconf.glade:15932 -#: src/emc/usr_intf/pncconf/pncconf.glade:15952 -#: src/emc/usr_intf/pncconf/pncconf.glade:15972 -#: src/emc/usr_intf/pncconf/pncconf.glade:15992 -#: src/emc/usr_intf/pncconf/pncconf.glade:16012 -#: src/emc/usr_intf/pncconf/pncconf.glade:16032 -#: src/emc/usr_intf/pncconf/pncconf.glade:16052 -#: src/emc/usr_intf/pncconf/pncconf.glade:16072 -#: src/emc/usr_intf/pncconf/pncconf.glade:16092 -#: src/emc/usr_intf/pncconf/pncconf.glade:16112 -#: src/emc/usr_intf/pncconf/pncconf.glade:16132 -#: src/emc/usr_intf/pncconf/pncconf.glade:16152 -#: src/emc/usr_intf/pncconf/pncconf.glade:16172 -#: src/emc/usr_intf/pncconf/pncconf.glade:16192 -#: src/emc/usr_intf/pncconf/pncconf.glade:16212 -#: src/emc/usr_intf/pncconf/pncconf.glade:16232 -#: src/emc/usr_intf/pncconf/pncconf.glade:16252 -#: src/emc/usr_intf/pncconf/pncconf.glade:16272 -#: src/emc/usr_intf/pncconf/pncconf.glade:16292 -#: src/emc/usr_intf/pncconf/pncconf.glade:16312 -#: src/emc/usr_intf/pncconf/pncconf.glade:16332 -#: src/emc/usr_intf/pncconf/pncconf.glade:16352 -#: src/emc/usr_intf/pncconf/pncconf.glade:16558 -#: src/emc/usr_intf/pncconf/pncconf.glade:18422 -#: src/emc/usr_intf/pncconf/pncconf.glade:18442 -#: src/emc/usr_intf/pncconf/pncconf.glade:18462 -#: src/emc/usr_intf/pncconf/pncconf.glade:18482 -#: src/emc/usr_intf/pncconf/pncconf.glade:18502 -#: src/emc/usr_intf/pncconf/pncconf.glade:18522 -#: src/emc/usr_intf/pncconf/pncconf.glade:18542 -#: src/emc/usr_intf/pncconf/pncconf.glade:18562 -#: src/emc/usr_intf/pncconf/pncconf.glade:18582 -#: src/emc/usr_intf/pncconf/pncconf.glade:18602 -#: src/emc/usr_intf/pncconf/pncconf.glade:18622 -#: src/emc/usr_intf/pncconf/pncconf.glade:18642 -#: src/emc/usr_intf/pncconf/pncconf.glade:18662 -#: src/emc/usr_intf/pncconf/pncconf.glade:18682 -#: src/emc/usr_intf/pncconf/pncconf.glade:18702 -#: src/emc/usr_intf/pncconf/pncconf.glade:18722 -#: src/emc/usr_intf/pncconf/pncconf.glade:18742 -#: src/emc/usr_intf/pncconf/pncconf.glade:18762 -#: src/emc/usr_intf/pncconf/pncconf.glade:18782 -#: src/emc/usr_intf/pncconf/pncconf.glade:18802 -#: src/emc/usr_intf/pncconf/pncconf.glade:18822 -#: src/emc/usr_intf/pncconf/pncconf.glade:18842 -#: src/emc/usr_intf/pncconf/pncconf.glade:18862 -#: src/emc/usr_intf/pncconf/pncconf.glade:26355 -#: src/emc/usr_intf/pncconf/pncconf.glade:26375 -#: src/emc/usr_intf/pncconf/pncconf.glade:26395 -#: src/emc/usr_intf/pncconf/pncconf.glade:26415 -#: src/emc/usr_intf/pncconf/pncconf.glade:26435 -#: src/emc/usr_intf/pncconf/pncconf.glade:26455 -#: src/emc/usr_intf/pncconf/pncconf.glade:26475 -#: src/emc/usr_intf/pncconf/pncconf.glade:26495 -#: src/emc/usr_intf/pncconf/pncconf.glade:26515 -#: src/emc/usr_intf/pncconf/pncconf.glade:26535 -#: src/emc/usr_intf/pncconf/pncconf.glade:26555 -#: src/emc/usr_intf/pncconf/pncconf.glade:26575 -#: src/emc/usr_intf/pncconf/pncconf.glade:26595 -#: src/emc/usr_intf/pncconf/pncconf.glade:26615 -#: src/emc/usr_intf/pncconf/pncconf.glade:26635 -#: src/emc/usr_intf/pncconf/pncconf.glade:26655 -#: src/emc/usr_intf/pncconf/pncconf.glade:26675 -#: src/emc/usr_intf/pncconf/pncconf.glade:26695 -#: src/emc/usr_intf/pncconf/pncconf.glade:26715 -#: src/emc/usr_intf/pncconf/pncconf.glade:26735 -#: src/emc/usr_intf/pncconf/pncconf.glade:26755 -#: src/emc/usr_intf/pncconf/pncconf.glade:26775 -#: src/emc/usr_intf/pncconf/pncconf.glade:26795 -#: src/emc/usr_intf/pncconf/pncconf.glade:28711 -#: src/emc/usr_intf/pncconf/pncconf.glade:28934 -#: src/emc/usr_intf/pncconf/pncconf.glade:30863 -#: src/emc/usr_intf/pncconf/pncconf.glade:30883 -#: src/emc/usr_intf/pncconf/pncconf.glade:30903 -#: src/emc/usr_intf/pncconf/pncconf.glade:30923 -#: src/emc/usr_intf/pncconf/pncconf.glade:30943 -#: src/emc/usr_intf/pncconf/pncconf.glade:30963 -#: src/emc/usr_intf/pncconf/pncconf.glade:30983 -#: src/emc/usr_intf/pncconf/pncconf.glade:31003 -#: src/emc/usr_intf/pncconf/pncconf.glade:31023 -#: src/emc/usr_intf/pncconf/pncconf.glade:31043 -#: src/emc/usr_intf/pncconf/pncconf.glade:31063 -#: src/emc/usr_intf/pncconf/pncconf.glade:31083 -#: src/emc/usr_intf/pncconf/pncconf.glade:31103 -#: src/emc/usr_intf/pncconf/pncconf.glade:31123 -#: src/emc/usr_intf/pncconf/pncconf.glade:31143 -#: src/emc/usr_intf/pncconf/pncconf.glade:31163 -#: src/emc/usr_intf/pncconf/pncconf.glade:31183 -#: src/emc/usr_intf/pncconf/pncconf.glade:31203 -#: src/emc/usr_intf/pncconf/pncconf.glade:31223 -#: src/emc/usr_intf/pncconf/pncconf.glade:31243 -#: src/emc/usr_intf/pncconf/pncconf.glade:31263 -#: src/emc/usr_intf/pncconf/pncconf.glade:31283 -#: src/emc/usr_intf/pncconf/pncconf.glade:31303 -#: src/emc/usr_intf/pncconf/pncconf.glade:31611 -#: src/emc/usr_intf/pncconf/pncconf.glade:31631 -#: src/emc/usr_intf/pncconf/pncconf.glade:31651 -#: src/emc/usr_intf/pncconf/pncconf.glade:31671 -#: src/emc/usr_intf/pncconf/pncconf.glade:31691 -#: src/emc/usr_intf/pncconf/pncconf.glade:31711 -#: src/emc/usr_intf/pncconf/pncconf.glade:31731 -#: src/emc/usr_intf/pncconf/pncconf.glade:31751 -#: src/emc/usr_intf/pncconf/pncconf.glade:31771 -#: src/emc/usr_intf/pncconf/pncconf.glade:31791 -#: src/emc/usr_intf/pncconf/pncconf.glade:31811 -#: src/emc/usr_intf/pncconf/pncconf.glade:33029 -#: src/emc/usr_intf/pncconf/pncconf.glade:33292 -#: src/emc/usr_intf/pncconf/pncconf.glade:35208 -#: src/emc/usr_intf/pncconf/pncconf.glade:35228 -#: src/emc/usr_intf/pncconf/pncconf.glade:35248 -#: src/emc/usr_intf/pncconf/pncconf.glade:35268 -#: src/emc/usr_intf/pncconf/pncconf.glade:35288 -#: src/emc/usr_intf/pncconf/pncconf.glade:35308 -#: src/emc/usr_intf/pncconf/pncconf.glade:35328 -#: src/emc/usr_intf/pncconf/pncconf.glade:35348 -#: src/emc/usr_intf/pncconf/pncconf.glade:35368 -#: src/emc/usr_intf/pncconf/pncconf.glade:35388 -#: src/emc/usr_intf/pncconf/pncconf.glade:35408 -#: src/emc/usr_intf/pncconf/pncconf.glade:35428 -#: src/emc/usr_intf/pncconf/pncconf.glade:35448 -#: src/emc/usr_intf/pncconf/pncconf.glade:35468 -#: src/emc/usr_intf/pncconf/pncconf.glade:35488 -#: src/emc/usr_intf/pncconf/pncconf.glade:35508 -#: src/emc/usr_intf/pncconf/pncconf.glade:35528 -#: src/emc/usr_intf/pncconf/pncconf.glade:35548 -#: src/emc/usr_intf/pncconf/pncconf.glade:35568 -#: src/emc/usr_intf/pncconf/pncconf.glade:35588 -#: src/emc/usr_intf/pncconf/pncconf.glade:35608 -#: src/emc/usr_intf/pncconf/pncconf.glade:35628 -#: src/emc/usr_intf/pncconf/pncconf.glade:35648 -#: src/emc/usr_intf/pncconf/pncconf.glade:35839 -#: src/emc/usr_intf/pncconf/pncconf.glade:35859 -#: src/emc/usr_intf/pncconf/pncconf.glade:35879 -#: src/emc/usr_intf/pncconf/pncconf.glade:35899 -#: src/emc/usr_intf/pncconf/pncconf.glade:35919 -#: src/emc/usr_intf/pncconf/pncconf.glade:35939 -#: src/emc/usr_intf/pncconf/pncconf.glade:35959 -#: src/emc/usr_intf/pncconf/pncconf.glade:35979 -#: src/emc/usr_intf/pncconf/pncconf.glade:35999 -#: src/emc/usr_intf/pncconf/pncconf.glade:36019 -#: src/emc/usr_intf/pncconf/pncconf.glade:36039 -#: src/emc/usr_intf/pncconf/pncconf.glade:36059 -#: src/emc/usr_intf/pncconf/pncconf.glade:36079 -#: src/emc/usr_intf/pncconf/pncconf.glade:36099 -#: src/emc/usr_intf/pncconf/pncconf.glade:36119 -#: src/emc/usr_intf/pncconf/pncconf.glade:36139 -#: src/emc/usr_intf/pncconf/pncconf.glade:36159 -#: src/emc/usr_intf/pncconf/pncconf.glade:36179 -#: src/emc/usr_intf/pncconf/pncconf.glade:36199 -#: src/emc/usr_intf/pncconf/pncconf.glade:36219 -#: src/emc/usr_intf/pncconf/pncconf.glade:36239 -#: src/emc/usr_intf/pncconf/pncconf.glade:36259 -#: src/emc/usr_intf/pncconf/pncconf.glade:36279 -#: src/emc/usr_intf/pncconf/pncconf.glade:38208 -#: src/emc/usr_intf/pncconf/pncconf.glade:38549 -#: src/emc/usr_intf/pncconf/pncconf.glade:39779 -#: src/emc/usr_intf/pncconf/pncconf.glade:39799 -#: src/emc/usr_intf/pncconf/pncconf.glade:39819 -#: src/emc/usr_intf/pncconf/pncconf.glade:39839 -#: src/emc/usr_intf/pncconf/pncconf.glade:39859 -#: src/emc/usr_intf/pncconf/pncconf.glade:39879 -#: src/emc/usr_intf/pncconf/pncconf.glade:39899 -#: src/emc/usr_intf/pncconf/pncconf.glade:39919 -#: src/emc/usr_intf/pncconf/pncconf.glade:39939 -#: src/emc/usr_intf/pncconf/pncconf.glade:39959 -#: src/emc/usr_intf/pncconf/pncconf.glade:39979 -#: src/emc/usr_intf/pncconf/pncconf.glade:40199 -#: src/emc/usr_intf/pncconf/pncconf.glade:40219 -#: src/emc/usr_intf/pncconf/pncconf.glade:40239 -#: src/emc/usr_intf/pncconf/pncconf.glade:40259 -#: src/emc/usr_intf/pncconf/pncconf.glade:40279 -#: src/emc/usr_intf/pncconf/pncconf.glade:40299 -#: src/emc/usr_intf/pncconf/pncconf.glade:40319 -#: src/emc/usr_intf/pncconf/pncconf.glade:40339 -#: src/emc/usr_intf/pncconf/pncconf.glade:40359 -#: src/emc/usr_intf/pncconf/pncconf.glade:40379 -#: src/emc/usr_intf/pncconf/pncconf.glade:40399 -#: src/emc/usr_intf/pncconf/pncconf.glade:40419 -#: src/emc/usr_intf/pncconf/pncconf.glade:40439 -#: src/emc/usr_intf/pncconf/pncconf.glade:40459 -#: src/emc/usr_intf/pncconf/pncconf.glade:40479 -#: src/emc/usr_intf/pncconf/pncconf.glade:40499 -#: src/emc/usr_intf/pncconf/pncconf.glade:40519 -#: src/emc/usr_intf/pncconf/pncconf.glade:40539 -#: src/emc/usr_intf/pncconf/pncconf.glade:40559 -#: src/emc/usr_intf/pncconf/pncconf.glade:40579 -#: src/emc/usr_intf/pncconf/pncconf.glade:40599 -#: src/emc/usr_intf/pncconf/pncconf.glade:40619 -#: src/emc/usr_intf/pncconf/pncconf.glade:40639 -#: src/emc/usr_intf/pncconf/pncconf.glade:42555 -#: src/emc/usr_intf/pncconf/pncconf.glade:42778 -#: src/emc/usr_intf/pncconf/pncconf.glade:44707 -#: src/emc/usr_intf/pncconf/pncconf.glade:44727 -#: src/emc/usr_intf/pncconf/pncconf.glade:44747 -#: src/emc/usr_intf/pncconf/pncconf.glade:44767 -#: src/emc/usr_intf/pncconf/pncconf.glade:44787 -#: src/emc/usr_intf/pncconf/pncconf.glade:44807 -#: src/emc/usr_intf/pncconf/pncconf.glade:44827 -#: src/emc/usr_intf/pncconf/pncconf.glade:44847 -#: src/emc/usr_intf/pncconf/pncconf.glade:44867 -#: src/emc/usr_intf/pncconf/pncconf.glade:44887 -#: src/emc/usr_intf/pncconf/pncconf.glade:44907 -#: src/emc/usr_intf/pncconf/pncconf.glade:44927 -#: src/emc/usr_intf/pncconf/pncconf.glade:44947 -#: src/emc/usr_intf/pncconf/pncconf.glade:44967 -#: src/emc/usr_intf/pncconf/pncconf.glade:44987 -#: src/emc/usr_intf/pncconf/pncconf.glade:45007 -#: src/emc/usr_intf/pncconf/pncconf.glade:45027 -#: src/emc/usr_intf/pncconf/pncconf.glade:45047 -#: src/emc/usr_intf/pncconf/pncconf.glade:45067 -#: src/emc/usr_intf/pncconf/pncconf.glade:45087 -#: src/emc/usr_intf/pncconf/pncconf.glade:45107 -#: src/emc/usr_intf/pncconf/pncconf.glade:45127 -#: src/emc/usr_intf/pncconf/pncconf.glade:45147 -#: src/emc/usr_intf/pncconf/pncconf.glade:45456 -#: src/emc/usr_intf/pncconf/pncconf.glade:45476 -#: src/emc/usr_intf/pncconf/pncconf.glade:45496 -#: src/emc/usr_intf/pncconf/pncconf.glade:45516 -#: src/emc/usr_intf/pncconf/pncconf.glade:45536 -#: src/emc/usr_intf/pncconf/pncconf.glade:45556 -#: src/emc/usr_intf/pncconf/pncconf.glade:45576 -#: src/emc/usr_intf/pncconf/pncconf.glade:45596 -#: src/emc/usr_intf/pncconf/pncconf.glade:45616 -#: src/emc/usr_intf/pncconf/pncconf.glade:45636 -#: src/emc/usr_intf/pncconf/pncconf.glade:45656 -#: src/emc/usr_intf/pncconf/pncconf.glade:46886 -#: src/emc/usr_intf/pncconf/pncconf.glade:47122 -#: src/emc/usr_intf/pncconf/pncconf.glade:47142 -#: src/emc/usr_intf/pncconf/pncconf.glade:47162 -#: src/emc/usr_intf/pncconf/pncconf.glade:47182 -#: src/emc/usr_intf/pncconf/pncconf.glade:47202 -#: src/emc/usr_intf/pncconf/pncconf.glade:47222 -#: src/emc/usr_intf/pncconf/pncconf.glade:47242 -#: src/emc/usr_intf/pncconf/pncconf.glade:47262 -#: src/emc/usr_intf/pncconf/pncconf.glade:47282 -#: src/emc/usr_intf/pncconf/pncconf.glade:47302 -#: src/emc/usr_intf/pncconf/pncconf.glade:47322 -#: src/emc/usr_intf/pncconf/pncconf.glade:47342 -#: src/emc/usr_intf/pncconf/pncconf.glade:47362 -#: src/emc/usr_intf/pncconf/pncconf.glade:47382 -#: src/emc/usr_intf/pncconf/pncconf.glade:47402 -#: src/emc/usr_intf/pncconf/pncconf.glade:47422 -#: src/emc/usr_intf/pncconf/pncconf.glade:47442 -#: src/emc/usr_intf/pncconf/pncconf.glade:47462 -#: src/emc/usr_intf/pncconf/pncconf.glade:47482 -#: src/emc/usr_intf/pncconf/pncconf.glade:47502 -#: src/emc/usr_intf/pncconf/pncconf.glade:47522 -#: src/emc/usr_intf/pncconf/pncconf.glade:47542 -#: src/emc/usr_intf/pncconf/pncconf.glade:47562 -#: src/emc/usr_intf/pncconf/pncconf.glade:49478 -#: src/emc/usr_intf/pncconf/pncconf.glade:49701 -#: src/emc/usr_intf/pncconf/pncconf.glade:51630 -#: src/emc/usr_intf/pncconf/pncconf.glade:51650 -#: src/emc/usr_intf/pncconf/pncconf.glade:51670 -#: src/emc/usr_intf/pncconf/pncconf.glade:51690 -#: src/emc/usr_intf/pncconf/pncconf.glade:51710 -#: src/emc/usr_intf/pncconf/pncconf.glade:51730 -#: src/emc/usr_intf/pncconf/pncconf.glade:51750 -#: src/emc/usr_intf/pncconf/pncconf.glade:51770 -#: src/emc/usr_intf/pncconf/pncconf.glade:51790 -#: src/emc/usr_intf/pncconf/pncconf.glade:51810 -#: src/emc/usr_intf/pncconf/pncconf.glade:51830 -#: src/emc/usr_intf/pncconf/pncconf.glade:51850 -#: src/emc/usr_intf/pncconf/pncconf.glade:51870 -#: src/emc/usr_intf/pncconf/pncconf.glade:51890 -#: src/emc/usr_intf/pncconf/pncconf.glade:51910 -#: src/emc/usr_intf/pncconf/pncconf.glade:51930 -#: src/emc/usr_intf/pncconf/pncconf.glade:51950 -#: src/emc/usr_intf/pncconf/pncconf.glade:51970 -#: src/emc/usr_intf/pncconf/pncconf.glade:51990 -#: src/emc/usr_intf/pncconf/pncconf.glade:52010 -#: src/emc/usr_intf/pncconf/pncconf.glade:52030 -#: src/emc/usr_intf/pncconf/pncconf.glade:52050 -#: src/emc/usr_intf/pncconf/pncconf.glade:52070 -#: src/emc/usr_intf/pncconf/pncconf.glade:52379 -#: src/emc/usr_intf/pncconf/pncconf.glade:52399 -#: src/emc/usr_intf/pncconf/pncconf.glade:52419 -#: src/emc/usr_intf/pncconf/pncconf.glade:52439 -#: src/emc/usr_intf/pncconf/pncconf.glade:52459 -#: src/emc/usr_intf/pncconf/pncconf.glade:52479 -#: src/emc/usr_intf/pncconf/pncconf.glade:52499 -#: src/emc/usr_intf/pncconf/pncconf.glade:52519 -#: src/emc/usr_intf/pncconf/pncconf.glade:52539 -#: src/emc/usr_intf/pncconf/pncconf.glade:52559 -#: src/emc/usr_intf/pncconf/pncconf.glade:52579 -#: src/emc/usr_intf/pncconf/pncconf.glade:53809 -#: emc/usr_intf/pncconf/pncconf.glade:2251 -#: emc/usr_intf/pncconf/pncconf.glade:4115 -#: emc/usr_intf/pncconf/pncconf.glade:4136 -#: emc/usr_intf/pncconf/pncconf.glade:4157 -#: emc/usr_intf/pncconf/pncconf.glade:4178 -#: emc/usr_intf/pncconf/pncconf.glade:4199 -#: emc/usr_intf/pncconf/pncconf.glade:4220 -#: emc/usr_intf/pncconf/pncconf.glade:4241 -#: emc/usr_intf/pncconf/pncconf.glade:4262 -#: emc/usr_intf/pncconf/pncconf.glade:4283 -#: emc/usr_intf/pncconf/pncconf.glade:4304 -#: emc/usr_intf/pncconf/pncconf.glade:4325 -#: emc/usr_intf/pncconf/pncconf.glade:4346 -#: emc/usr_intf/pncconf/pncconf.glade:4367 -#: emc/usr_intf/pncconf/pncconf.glade:4388 -#: emc/usr_intf/pncconf/pncconf.glade:4409 -#: emc/usr_intf/pncconf/pncconf.glade:4430 -#: emc/usr_intf/pncconf/pncconf.glade:4451 -#: emc/usr_intf/pncconf/pncconf.glade:4472 -#: emc/usr_intf/pncconf/pncconf.glade:4493 -#: emc/usr_intf/pncconf/pncconf.glade:4514 -#: emc/usr_intf/pncconf/pncconf.glade:4535 -#: emc/usr_intf/pncconf/pncconf.glade:4556 -#: emc/usr_intf/pncconf/pncconf.glade:4577 -#: emc/usr_intf/pncconf/pncconf.glade:4820 -#: emc/usr_intf/pncconf/pncconf.glade:4841 -#: emc/usr_intf/pncconf/pncconf.glade:4862 -#: emc/usr_intf/pncconf/pncconf.glade:4883 -#: emc/usr_intf/pncconf/pncconf.glade:4904 -#: emc/usr_intf/pncconf/pncconf.glade:4925 -#: emc/usr_intf/pncconf/pncconf.glade:4946 -#: emc/usr_intf/pncconf/pncconf.glade:4967 -#: emc/usr_intf/pncconf/pncconf.glade:4988 -#: emc/usr_intf/pncconf/pncconf.glade:5009 -#: emc/usr_intf/pncconf/pncconf.glade:5030 -#: emc/usr_intf/pncconf/pncconf.glade:5051 -#: emc/usr_intf/pncconf/pncconf.glade:5072 -#: emc/usr_intf/pncconf/pncconf.glade:5093 -#: emc/usr_intf/pncconf/pncconf.glade:5114 -#: emc/usr_intf/pncconf/pncconf.glade:5135 -#: emc/usr_intf/pncconf/pncconf.glade:5156 -#: emc/usr_intf/pncconf/pncconf.glade:5177 -#: emc/usr_intf/pncconf/pncconf.glade:5198 -#: emc/usr_intf/pncconf/pncconf.glade:5219 -#: emc/usr_intf/pncconf/pncconf.glade:5240 -#: emc/usr_intf/pncconf/pncconf.glade:5261 -#: emc/usr_intf/pncconf/pncconf.glade:5282 -#: emc/usr_intf/pncconf/pncconf.glade:7198 -#: emc/usr_intf/pncconf/pncconf.glade:7405 -#: emc/usr_intf/pncconf/pncconf.glade:7426 -#: emc/usr_intf/pncconf/pncconf.glade:7447 -#: emc/usr_intf/pncconf/pncconf.glade:7468 -#: emc/usr_intf/pncconf/pncconf.glade:7489 -#: emc/usr_intf/pncconf/pncconf.glade:7510 -#: emc/usr_intf/pncconf/pncconf.glade:7531 -#: emc/usr_intf/pncconf/pncconf.glade:7552 -#: emc/usr_intf/pncconf/pncconf.glade:7573 -#: emc/usr_intf/pncconf/pncconf.glade:7594 -#: emc/usr_intf/pncconf/pncconf.glade:7615 -#: emc/usr_intf/pncconf/pncconf.glade:7636 -#: emc/usr_intf/pncconf/pncconf.glade:7657 -#: emc/usr_intf/pncconf/pncconf.glade:7678 -#: emc/usr_intf/pncconf/pncconf.glade:7699 -#: emc/usr_intf/pncconf/pncconf.glade:7720 -#: emc/usr_intf/pncconf/pncconf.glade:7741 -#: emc/usr_intf/pncconf/pncconf.glade:7762 -#: emc/usr_intf/pncconf/pncconf.glade:7783 -#: emc/usr_intf/pncconf/pncconf.glade:7804 -#: emc/usr_intf/pncconf/pncconf.glade:7825 -#: emc/usr_intf/pncconf/pncconf.glade:7846 -#: emc/usr_intf/pncconf/pncconf.glade:7867 -#: emc/usr_intf/pncconf/pncconf.glade:9835 -#: emc/usr_intf/pncconf/pncconf.glade:10146 -#: emc/usr_intf/pncconf/pncconf.glade:10167 -#: emc/usr_intf/pncconf/pncconf.glade:10188 -#: emc/usr_intf/pncconf/pncconf.glade:10209 -#: emc/usr_intf/pncconf/pncconf.glade:10230 -#: emc/usr_intf/pncconf/pncconf.glade:10251 -#: emc/usr_intf/pncconf/pncconf.glade:10272 -#: emc/usr_intf/pncconf/pncconf.glade:10293 -#: emc/usr_intf/pncconf/pncconf.glade:10314 -#: emc/usr_intf/pncconf/pncconf.glade:10335 -#: emc/usr_intf/pncconf/pncconf.glade:10356 -#: emc/usr_intf/pncconf/pncconf.glade:10377 -#: emc/usr_intf/pncconf/pncconf.glade:10398 -#: emc/usr_intf/pncconf/pncconf.glade:10419 -#: emc/usr_intf/pncconf/pncconf.glade:10440 -#: emc/usr_intf/pncconf/pncconf.glade:10461 -#: emc/usr_intf/pncconf/pncconf.glade:10482 -#: emc/usr_intf/pncconf/pncconf.glade:10503 -#: emc/usr_intf/pncconf/pncconf.glade:10524 -#: emc/usr_intf/pncconf/pncconf.glade:10545 -#: emc/usr_intf/pncconf/pncconf.glade:10566 -#: emc/usr_intf/pncconf/pncconf.glade:10587 -#: emc/usr_intf/pncconf/pncconf.glade:10608 -#: emc/usr_intf/pncconf/pncconf.glade:12472 -msgid "" -"GPIO Input\n" -"GPIO Output\n" -"GPIO O Drain\n" -"Encoder\n" -"PWM\n" -"StepGen\n" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:9198 -#: src/emc/usr_intf/pncconf/pncconf.glade:13188 -#: src/emc/usr_intf/pncconf/pncconf.glade:15884 -#: src/emc/usr_intf/pncconf/pncconf.glade:18394 -#: src/emc/usr_intf/pncconf/pncconf.glade:20397 -#: src/emc/usr_intf/pncconf/pncconf.glade:21325 -#: src/emc/usr_intf/pncconf/pncconf.glade:23121 -#: src/emc/usr_intf/pncconf/pncconf.glade:24917 -#: emc/usr_intf/pncconf/pncconf.glade:4087 -#: emc/usr_intf/pncconf/pncconf.glade:5318 -#: emc/usr_intf/pncconf/pncconf.glade:7903 -#: emc/usr_intf/pncconf/pncconf.glade:10644 -#, fuzzy -msgid "Launch test panel" -msgstr "Latenzzeit-_Testergebnis:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:9213 -#: src/emc/usr_intf/pncconf/pncconf.glade:9225 -#: src/emc/usr_intf/pncconf/pncconf.glade:13162 -#: src/emc/usr_intf/pncconf/pncconf.glade:13174 -#: src/emc/usr_intf/pncconf/pncconf.glade:15858 -#: src/emc/usr_intf/pncconf/pncconf.glade:15870 -#: src/emc/usr_intf/pncconf/pncconf.glade:18367 -#: src/emc/usr_intf/pncconf/pncconf.glade:18379 -#: src/emc/usr_intf/pncconf/pncconf.glade:20370 -#: src/emc/usr_intf/pncconf/pncconf.glade:20382 -#: src/emc/usr_intf/pncconf/pncconf.glade:21339 -#: src/emc/usr_intf/pncconf/pncconf.glade:21351 -#: src/emc/usr_intf/pncconf/pncconf.glade:23135 -#: src/emc/usr_intf/pncconf/pncconf.glade:23147 -#: src/emc/usr_intf/pncconf/pncconf.glade:24931 -#: src/emc/usr_intf/pncconf/pncconf.glade:24943 -#: src/emc/usr_intf/pncconf/pncconf.glade:26815 -#: src/emc/usr_intf/pncconf/pncconf.glade:26827 -#: src/emc/usr_intf/pncconf/pncconf.glade:30826 -#: src/emc/usr_intf/pncconf/pncconf.glade:30838 -#: src/emc/usr_intf/pncconf/pncconf.glade:31831 -#: src/emc/usr_intf/pncconf/pncconf.glade:35184 -#: src/emc/usr_intf/pncconf/pncconf.glade:35196 -#: src/emc/usr_intf/pncconf/pncconf.glade:36312 -#: src/emc/usr_intf/pncconf/pncconf.glade:36324 -#: src/emc/usr_intf/pncconf/pncconf.glade:39755 -#: src/emc/usr_intf/pncconf/pncconf.glade:39767 -#: src/emc/usr_intf/pncconf/pncconf.glade:40659 -#: src/emc/usr_intf/pncconf/pncconf.glade:40671 -#: src/emc/usr_intf/pncconf/pncconf.glade:44670 -#: src/emc/usr_intf/pncconf/pncconf.glade:44682 -#: src/emc/usr_intf/pncconf/pncconf.glade:45676 -#: src/emc/usr_intf/pncconf/pncconf.glade:45688 -#: src/emc/usr_intf/pncconf/pncconf.glade:47582 -#: src/emc/usr_intf/pncconf/pncconf.glade:47594 -#: src/emc/usr_intf/pncconf/pncconf.glade:51593 -#: src/emc/usr_intf/pncconf/pncconf.glade:51605 -#: src/emc/usr_intf/pncconf/pncconf.glade:52599 -#: src/emc/usr_intf/pncconf/pncconf.glade:52611 -#: emc/usr_intf/pncconf/pncconf.glade:4061 -#: emc/usr_intf/pncconf/pncconf.glade:4073 -#: emc/usr_intf/pncconf/pncconf.glade:5333 -#: emc/usr_intf/pncconf/pncconf.glade:5345 -#: emc/usr_intf/pncconf/pncconf.glade:7918 -#: emc/usr_intf/pncconf/pncconf.glade:7930 -#: emc/usr_intf/pncconf/pncconf.glade:10659 -#: emc/usr_intf/pncconf/pncconf.glade:10671 -msgid "function" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:9305 -#: src/emc/usr_intf/pncconf/pncconf.glade:9357 -#: src/emc/usr_intf/pncconf/pncconf.glade:9409 -#: src/emc/usr_intf/pncconf/pncconf.glade:9461 -#: src/emc/usr_intf/pncconf/pncconf.glade:10301 -#: src/emc/usr_intf/pncconf/pncconf.glade:10353 -#: src/emc/usr_intf/pncconf/pncconf.glade:10405 -#: src/emc/usr_intf/pncconf/pncconf.glade:10457 -#: src/emc/usr_intf/pncconf/pncconf.glade:10509 -#: src/emc/usr_intf/pncconf/pncconf.glade:10561 -#: src/emc/usr_intf/pncconf/pncconf.glade:10613 -#: src/emc/usr_intf/pncconf/pncconf.glade:10665 -#: src/emc/usr_intf/pncconf/pncconf.glade:10717 -#: src/emc/usr_intf/pncconf/pncconf.glade:10769 -#: src/emc/usr_intf/pncconf/pncconf.glade:11089 -#: src/emc/usr_intf/pncconf/pncconf.glade:11141 -#: src/emc/usr_intf/pncconf/pncconf.glade:11579 -#: src/emc/usr_intf/pncconf/pncconf.glade:11631 -#: src/emc/usr_intf/pncconf/pncconf.glade:11683 -#: src/emc/usr_intf/pncconf/pncconf.glade:11735 -#: src/emc/usr_intf/pncconf/pncconf.glade:11787 -#: src/emc/usr_intf/pncconf/pncconf.glade:11839 -#: src/emc/usr_intf/pncconf/pncconf.glade:11891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11943 -#: src/emc/usr_intf/pncconf/pncconf.glade:11995 +#: src/emc/usr_intf/pncconf/pncconf.glade:8721 +#: src/emc/usr_intf/pncconf/pncconf.glade:8773 +#: src/emc/usr_intf/pncconf/pncconf.glade:9093 +#: src/emc/usr_intf/pncconf/pncconf.glade:9145 +#: src/emc/usr_intf/pncconf/pncconf.glade:9197 +#: src/emc/usr_intf/pncconf/pncconf.glade:9249 +#: src/emc/usr_intf/pncconf/pncconf.glade:9301 +#: src/emc/usr_intf/pncconf/pncconf.glade:9353 +#: src/emc/usr_intf/pncconf/pncconf.glade:9405 +#: src/emc/usr_intf/pncconf/pncconf.glade:9457 +#: src/emc/usr_intf/pncconf/pncconf.glade:9509 +#: src/emc/usr_intf/pncconf/pncconf.glade:9561 +#: src/emc/usr_intf/pncconf/pncconf.glade:10400 +#: src/emc/usr_intf/pncconf/pncconf.glade:10453 +#: src/emc/usr_intf/pncconf/pncconf.glade:10505 +#: src/emc/usr_intf/pncconf/pncconf.glade:10557 +#: src/emc/usr_intf/pncconf/pncconf.glade:11335 +#: src/emc/usr_intf/pncconf/pncconf.glade:11387 #: src/emc/usr_intf/pncconf/pncconf.glade:12047 -#: src/emc/usr_intf/pncconf/pncconf.glade:12886 -#: src/emc/usr_intf/pncconf/pncconf.glade:12938 -#: src/emc/usr_intf/pncconf/pncconf.glade:12990 +#: src/emc/usr_intf/pncconf/pncconf.glade:12099 +#: src/emc/usr_intf/pncconf/pncconf.glade:12151 +#: src/emc/usr_intf/pncconf/pncconf.glade:12203 #: src/emc/usr_intf/pncconf/pncconf.glade:13042 -#: src/emc/usr_intf/pncconf/pncconf.glade:13702 -#: src/emc/usr_intf/pncconf/pncconf.glade:13754 -#: src/emc/usr_intf/pncconf/pncconf.glade:14183 -#: src/emc/usr_intf/pncconf/pncconf.glade:14235 -#: src/emc/usr_intf/pncconf/pncconf.glade:14287 -#: src/emc/usr_intf/pncconf/pncconf.glade:14339 -#: src/emc/usr_intf/pncconf/pncconf.glade:14391 -#: src/emc/usr_intf/pncconf/pncconf.glade:14443 -#: src/emc/usr_intf/pncconf/pncconf.glade:14495 -#: src/emc/usr_intf/pncconf/pncconf.glade:14547 -#: src/emc/usr_intf/pncconf/pncconf.glade:14599 -#: src/emc/usr_intf/pncconf/pncconf.glade:14651 -#: src/emc/usr_intf/pncconf/pncconf.glade:14703 -#: src/emc/usr_intf/pncconf/pncconf.glade:14755 -#: src/emc/usr_intf/pncconf/pncconf.glade:15582 -#: src/emc/usr_intf/pncconf/pncconf.glade:15634 -#: src/emc/usr_intf/pncconf/pncconf.glade:15686 -#: src/emc/usr_intf/pncconf/pncconf.glade:15738 -#: src/emc/usr_intf/pncconf/pncconf.glade:16784 -#: src/emc/usr_intf/pncconf/pncconf.glade:16836 -#: src/emc/usr_intf/pncconf/pncconf.glade:16888 -#: src/emc/usr_intf/pncconf/pncconf.glade:16940 -#: src/emc/usr_intf/pncconf/pncconf.glade:16992 -#: src/emc/usr_intf/pncconf/pncconf.glade:17044 -#: src/emc/usr_intf/pncconf/pncconf.glade:17096 -#: src/emc/usr_intf/pncconf/pncconf.glade:17148 -#: src/emc/usr_intf/pncconf/pncconf.glade:17200 -#: src/emc/usr_intf/pncconf/pncconf.glade:17252 -#: src/emc/usr_intf/pncconf/pncconf.glade:17304 -#: src/emc/usr_intf/pncconf/pncconf.glade:18143 -#: src/emc/usr_intf/pncconf/pncconf.glade:18195 -#: src/emc/usr_intf/pncconf/pncconf.glade:18247 -#: src/emc/usr_intf/pncconf/pncconf.glade:18908 -#: src/emc/usr_intf/pncconf/pncconf.glade:18960 -#: src/emc/usr_intf/pncconf/pncconf.glade:26907 -#: src/emc/usr_intf/pncconf/pncconf.glade:26959 -#: src/emc/usr_intf/pncconf/pncconf.glade:27011 -#: src/emc/usr_intf/pncconf/pncconf.glade:27063 -#: src/emc/usr_intf/pncconf/pncconf.glade:27890 -#: src/emc/usr_intf/pncconf/pncconf.glade:27942 -#: src/emc/usr_intf/pncconf/pncconf.glade:27994 -#: src/emc/usr_intf/pncconf/pncconf.glade:28046 -#: src/emc/usr_intf/pncconf/pncconf.glade:28098 -#: src/emc/usr_intf/pncconf/pncconf.glade:28150 -#: src/emc/usr_intf/pncconf/pncconf.glade:28202 -#: src/emc/usr_intf/pncconf/pncconf.glade:28254 -#: src/emc/usr_intf/pncconf/pncconf.glade:28306 -#: src/emc/usr_intf/pncconf/pncconf.glade:28358 -#: src/emc/usr_intf/pncconf/pncconf.glade:28410 -#: src/emc/usr_intf/pncconf/pncconf.glade:28462 -#: src/emc/usr_intf/pncconf/pncconf.glade:29151 -#: src/emc/usr_intf/pncconf/pncconf.glade:29203 -#: src/emc/usr_intf/pncconf/pncconf.glade:29255 -#: src/emc/usr_intf/pncconf/pncconf.glade:29307 -#: src/emc/usr_intf/pncconf/pncconf.glade:29359 -#: src/emc/usr_intf/pncconf/pncconf.glade:29411 -#: src/emc/usr_intf/pncconf/pncconf.glade:29463 -#: src/emc/usr_intf/pncconf/pncconf.glade:29515 -#: src/emc/usr_intf/pncconf/pncconf.glade:29567 -#: src/emc/usr_intf/pncconf/pncconf.glade:29619 -#: src/emc/usr_intf/pncconf/pncconf.glade:29671 -#: src/emc/usr_intf/pncconf/pncconf.glade:29723 -#: src/emc/usr_intf/pncconf/pncconf.glade:30550 -#: src/emc/usr_intf/pncconf/pncconf.glade:30602 -#: src/emc/usr_intf/pncconf/pncconf.glade:30654 -#: src/emc/usr_intf/pncconf/pncconf.glade:30706 -#: src/emc/usr_intf/pncconf/pncconf.glade:32210 -#: src/emc/usr_intf/pncconf/pncconf.glade:32262 -#: src/emc/usr_intf/pncconf/pncconf.glade:32314 -#: src/emc/usr_intf/pncconf/pncconf.glade:32366 -#: src/emc/usr_intf/pncconf/pncconf.glade:32418 -#: src/emc/usr_intf/pncconf/pncconf.glade:32470 -#: src/emc/usr_intf/pncconf/pncconf.glade:32522 -#: src/emc/usr_intf/pncconf/pncconf.glade:32574 -#: src/emc/usr_intf/pncconf/pncconf.glade:32626 -#: src/emc/usr_intf/pncconf/pncconf.glade:32678 -#: src/emc/usr_intf/pncconf/pncconf.glade:32730 -#: src/emc/usr_intf/pncconf/pncconf.glade:32782 -#: src/emc/usr_intf/pncconf/pncconf.glade:33509 -#: src/emc/usr_intf/pncconf/pncconf.glade:33561 -#: src/emc/usr_intf/pncconf/pncconf.glade:33613 -#: src/emc/usr_intf/pncconf/pncconf.glade:33665 -#: src/emc/usr_intf/pncconf/pncconf.glade:33717 -#: src/emc/usr_intf/pncconf/pncconf.glade:33769 -#: src/emc/usr_intf/pncconf/pncconf.glade:33821 -#: src/emc/usr_intf/pncconf/pncconf.glade:33873 -#: src/emc/usr_intf/pncconf/pncconf.glade:33925 -#: src/emc/usr_intf/pncconf/pncconf.glade:33977 -#: src/emc/usr_intf/pncconf/pncconf.glade:34029 -#: src/emc/usr_intf/pncconf/pncconf.glade:34081 -#: src/emc/usr_intf/pncconf/pncconf.glade:34908 -#: src/emc/usr_intf/pncconf/pncconf.glade:34960 -#: src/emc/usr_intf/pncconf/pncconf.glade:35012 -#: src/emc/usr_intf/pncconf/pncconf.glade:35064 -#: src/emc/usr_intf/pncconf/pncconf.glade:36404 -#: src/emc/usr_intf/pncconf/pncconf.glade:36456 -#: src/emc/usr_intf/pncconf/pncconf.glade:36508 -#: src/emc/usr_intf/pncconf/pncconf.glade:36560 -#: src/emc/usr_intf/pncconf/pncconf.glade:37387 -#: src/emc/usr_intf/pncconf/pncconf.glade:37439 -#: src/emc/usr_intf/pncconf/pncconf.glade:37491 -#: src/emc/usr_intf/pncconf/pncconf.glade:37543 -#: src/emc/usr_intf/pncconf/pncconf.glade:37595 -#: src/emc/usr_intf/pncconf/pncconf.glade:37647 -#: src/emc/usr_intf/pncconf/pncconf.glade:37699 -#: src/emc/usr_intf/pncconf/pncconf.glade:37751 -#: src/emc/usr_intf/pncconf/pncconf.glade:37803 -#: src/emc/usr_intf/pncconf/pncconf.glade:37855 -#: src/emc/usr_intf/pncconf/pncconf.glade:37907 -#: src/emc/usr_intf/pncconf/pncconf.glade:37959 -#: src/emc/usr_intf/pncconf/pncconf.glade:38764 -#: src/emc/usr_intf/pncconf/pncconf.glade:38816 -#: src/emc/usr_intf/pncconf/pncconf.glade:38868 -#: src/emc/usr_intf/pncconf/pncconf.glade:38920 -#: src/emc/usr_intf/pncconf/pncconf.glade:38972 -#: src/emc/usr_intf/pncconf/pncconf.glade:39024 -#: src/emc/usr_intf/pncconf/pncconf.glade:39076 -#: src/emc/usr_intf/pncconf/pncconf.glade:39128 -#: src/emc/usr_intf/pncconf/pncconf.glade:39180 -#: src/emc/usr_intf/pncconf/pncconf.glade:39232 -#: src/emc/usr_intf/pncconf/pncconf.glade:39284 -#: src/emc/usr_intf/pncconf/pncconf.glade:39336 -#: src/emc/usr_intf/pncconf/pncconf.glade:40751 -#: src/emc/usr_intf/pncconf/pncconf.glade:40803 -#: src/emc/usr_intf/pncconf/pncconf.glade:40855 -#: src/emc/usr_intf/pncconf/pncconf.glade:40907 -#: src/emc/usr_intf/pncconf/pncconf.glade:41734 -#: src/emc/usr_intf/pncconf/pncconf.glade:41786 -#: src/emc/usr_intf/pncconf/pncconf.glade:41838 -#: src/emc/usr_intf/pncconf/pncconf.glade:41890 -#: src/emc/usr_intf/pncconf/pncconf.glade:41942 -#: src/emc/usr_intf/pncconf/pncconf.glade:41994 -#: src/emc/usr_intf/pncconf/pncconf.glade:42046 -#: src/emc/usr_intf/pncconf/pncconf.glade:42098 -#: src/emc/usr_intf/pncconf/pncconf.glade:42150 -#: src/emc/usr_intf/pncconf/pncconf.glade:42202 -#: src/emc/usr_intf/pncconf/pncconf.glade:42254 -#: src/emc/usr_intf/pncconf/pncconf.glade:42306 -#: src/emc/usr_intf/pncconf/pncconf.glade:42995 -#: src/emc/usr_intf/pncconf/pncconf.glade:43047 -#: src/emc/usr_intf/pncconf/pncconf.glade:43099 -#: src/emc/usr_intf/pncconf/pncconf.glade:43151 -#: src/emc/usr_intf/pncconf/pncconf.glade:43203 -#: src/emc/usr_intf/pncconf/pncconf.glade:43255 -#: src/emc/usr_intf/pncconf/pncconf.glade:43307 -#: src/emc/usr_intf/pncconf/pncconf.glade:43359 -#: src/emc/usr_intf/pncconf/pncconf.glade:43411 -#: src/emc/usr_intf/pncconf/pncconf.glade:43463 -#: src/emc/usr_intf/pncconf/pncconf.glade:43515 -#: src/emc/usr_intf/pncconf/pncconf.glade:43567 -#: src/emc/usr_intf/pncconf/pncconf.glade:44394 -#: src/emc/usr_intf/pncconf/pncconf.glade:44446 -#: src/emc/usr_intf/pncconf/pncconf.glade:44498 -#: src/emc/usr_intf/pncconf/pncconf.glade:44550 -#: src/emc/usr_intf/pncconf/pncconf.glade:46067 -#: src/emc/usr_intf/pncconf/pncconf.glade:46119 -#: src/emc/usr_intf/pncconf/pncconf.glade:46171 -#: src/emc/usr_intf/pncconf/pncconf.glade:46223 -#: src/emc/usr_intf/pncconf/pncconf.glade:46275 -#: src/emc/usr_intf/pncconf/pncconf.glade:46327 -#: src/emc/usr_intf/pncconf/pncconf.glade:46379 -#: src/emc/usr_intf/pncconf/pncconf.glade:46431 -#: src/emc/usr_intf/pncconf/pncconf.glade:46483 -#: src/emc/usr_intf/pncconf/pncconf.glade:46535 -#: src/emc/usr_intf/pncconf/pncconf.glade:46587 -#: src/emc/usr_intf/pncconf/pncconf.glade:46639 -#: src/emc/usr_intf/pncconf/pncconf.glade:47674 -#: src/emc/usr_intf/pncconf/pncconf.glade:47726 -#: src/emc/usr_intf/pncconf/pncconf.glade:47778 -#: src/emc/usr_intf/pncconf/pncconf.glade:47830 -#: src/emc/usr_intf/pncconf/pncconf.glade:48657 -#: src/emc/usr_intf/pncconf/pncconf.glade:48709 -#: src/emc/usr_intf/pncconf/pncconf.glade:48761 -#: src/emc/usr_intf/pncconf/pncconf.glade:48813 -#: src/emc/usr_intf/pncconf/pncconf.glade:48865 -#: src/emc/usr_intf/pncconf/pncconf.glade:48917 -#: src/emc/usr_intf/pncconf/pncconf.glade:48969 -#: src/emc/usr_intf/pncconf/pncconf.glade:49021 -#: src/emc/usr_intf/pncconf/pncconf.glade:49073 -#: src/emc/usr_intf/pncconf/pncconf.glade:49125 -#: src/emc/usr_intf/pncconf/pncconf.glade:49177 -#: src/emc/usr_intf/pncconf/pncconf.glade:49229 -#: src/emc/usr_intf/pncconf/pncconf.glade:49918 -#: src/emc/usr_intf/pncconf/pncconf.glade:49970 -#: src/emc/usr_intf/pncconf/pncconf.glade:50022 -#: src/emc/usr_intf/pncconf/pncconf.glade:50074 -#: src/emc/usr_intf/pncconf/pncconf.glade:50126 -#: src/emc/usr_intf/pncconf/pncconf.glade:50178 -#: src/emc/usr_intf/pncconf/pncconf.glade:50230 -#: src/emc/usr_intf/pncconf/pncconf.glade:50282 -#: src/emc/usr_intf/pncconf/pncconf.glade:50334 -#: src/emc/usr_intf/pncconf/pncconf.glade:50386 -#: src/emc/usr_intf/pncconf/pncconf.glade:50438 -#: src/emc/usr_intf/pncconf/pncconf.glade:50490 -#: src/emc/usr_intf/pncconf/pncconf.glade:51317 -#: src/emc/usr_intf/pncconf/pncconf.glade:51369 -#: src/emc/usr_intf/pncconf/pncconf.glade:51421 -#: src/emc/usr_intf/pncconf/pncconf.glade:51473 -#: src/emc/usr_intf/pncconf/pncconf.glade:52990 -#: src/emc/usr_intf/pncconf/pncconf.glade:53042 -#: src/emc/usr_intf/pncconf/pncconf.glade:53094 -#: src/emc/usr_intf/pncconf/pncconf.glade:53146 -#: src/emc/usr_intf/pncconf/pncconf.glade:53198 -#: src/emc/usr_intf/pncconf/pncconf.glade:53250 -#: src/emc/usr_intf/pncconf/pncconf.glade:53302 -#: src/emc/usr_intf/pncconf/pncconf.glade:53354 -#: src/emc/usr_intf/pncconf/pncconf.glade:53406 -#: src/emc/usr_intf/pncconf/pncconf.glade:53458 -#: src/emc/usr_intf/pncconf/pncconf.glade:53510 -#: src/emc/usr_intf/pncconf/pncconf.glade:53562 -#: emc/usr_intf/pncconf/pncconf.glade:2105 -#: emc/usr_intf/pncconf/pncconf.glade:2157 -#: emc/usr_intf/pncconf/pncconf.glade:2477 -#: emc/usr_intf/pncconf/pncconf.glade:2529 -#: emc/usr_intf/pncconf/pncconf.glade:2581 -#: emc/usr_intf/pncconf/pncconf.glade:2633 -#: emc/usr_intf/pncconf/pncconf.glade:2685 -#: emc/usr_intf/pncconf/pncconf.glade:2737 -#: emc/usr_intf/pncconf/pncconf.glade:2789 -#: emc/usr_intf/pncconf/pncconf.glade:2841 -#: emc/usr_intf/pncconf/pncconf.glade:2893 -#: emc/usr_intf/pncconf/pncconf.glade:2945 -#: emc/usr_intf/pncconf/pncconf.glade:3784 -#: emc/usr_intf/pncconf/pncconf.glade:3837 -#: emc/usr_intf/pncconf/pncconf.glade:3889 -#: emc/usr_intf/pncconf/pncconf.glade:3941 -#: emc/usr_intf/pncconf/pncconf.glade:4742 -#: emc/usr_intf/pncconf/pncconf.glade:5425 -#: emc/usr_intf/pncconf/pncconf.glade:5477 -#: emc/usr_intf/pncconf/pncconf.glade:5529 -#: emc/usr_intf/pncconf/pncconf.glade:5581 -#: emc/usr_intf/pncconf/pncconf.glade:6420 -#: emc/usr_intf/pncconf/pncconf.glade:6472 -#: emc/usr_intf/pncconf/pncconf.glade:6524 -#: emc/usr_intf/pncconf/pncconf.glade:6576 -#: emc/usr_intf/pncconf/pncconf.glade:6628 -#: emc/usr_intf/pncconf/pncconf.glade:6680 -#: emc/usr_intf/pncconf/pncconf.glade:6732 -#: emc/usr_intf/pncconf/pncconf.glade:6784 -#: emc/usr_intf/pncconf/pncconf.glade:6836 -#: emc/usr_intf/pncconf/pncconf.glade:6888 -#: emc/usr_intf/pncconf/pncconf.glade:6940 -#: emc/usr_intf/pncconf/pncconf.glade:8010 -#: emc/usr_intf/pncconf/pncconf.glade:8062 -#: emc/usr_intf/pncconf/pncconf.glade:8114 -#: emc/usr_intf/pncconf/pncconf.glade:8166 -#: emc/usr_intf/pncconf/pncconf.glade:9005 -#: emc/usr_intf/pncconf/pncconf.glade:9057 -#: emc/usr_intf/pncconf/pncconf.glade:9109 -#: emc/usr_intf/pncconf/pncconf.glade:9161 -#: emc/usr_intf/pncconf/pncconf.glade:9213 -#: emc/usr_intf/pncconf/pncconf.glade:9265 -#: emc/usr_intf/pncconf/pncconf.glade:9317 -#: emc/usr_intf/pncconf/pncconf.glade:9369 -#: emc/usr_intf/pncconf/pncconf.glade:9421 -#: emc/usr_intf/pncconf/pncconf.glade:9473 -#: emc/usr_intf/pncconf/pncconf.glade:9525 -#: emc/usr_intf/pncconf/pncconf.glade:9577 -#: emc/usr_intf/pncconf/pncconf.glade:10016 -#: emc/usr_intf/pncconf/pncconf.glade:10068 -#: emc/usr_intf/pncconf/pncconf.glade:10751 -#: emc/usr_intf/pncconf/pncconf.glade:10803 -#: emc/usr_intf/pncconf/pncconf.glade:10855 -#: emc/usr_intf/pncconf/pncconf.glade:11694 -#: emc/usr_intf/pncconf/pncconf.glade:11746 -#: emc/usr_intf/pncconf/pncconf.glade:11798 -#: emc/usr_intf/pncconf/pncconf.glade:11850 -#: emc/usr_intf/pncconf/pncconf.glade:11902 -#: emc/usr_intf/pncconf/pncconf.glade:11954 -#: emc/usr_intf/pncconf/pncconf.glade:12006 -#: emc/usr_intf/pncconf/pncconf.glade:12058 -#: emc/usr_intf/pncconf/pncconf.glade:12110 -#: emc/usr_intf/pncconf/pncconf.glade:12162 -#: emc/usr_intf/pncconf/pncconf.glade:12214 +#: src/emc/usr_intf/pncconf/pncconf.glade:13094 +#: src/emc/usr_intf/pncconf/pncconf.glade:13146 +#: src/emc/usr_intf/pncconf/pncconf.glade:13198 +#: src/emc/usr_intf/pncconf/pncconf.glade:13250 +#: src/emc/usr_intf/pncconf/pncconf.glade:13302 +#: src/emc/usr_intf/pncconf/pncconf.glade:13354 +#: src/emc/usr_intf/pncconf/pncconf.glade:13406 +#: src/emc/usr_intf/pncconf/pncconf.glade:13458 +#: src/emc/usr_intf/pncconf/pncconf.glade:13510 +#: src/emc/usr_intf/pncconf/pncconf.glade:14556 +#: src/emc/usr_intf/pncconf/pncconf.glade:14608 +#: src/emc/usr_intf/pncconf/pncconf.glade:14660 +#: src/emc/usr_intf/pncconf/pncconf.glade:14712 +#: src/emc/usr_intf/pncconf/pncconf.glade:15539 +#: src/emc/usr_intf/pncconf/pncconf.glade:15591 +#: src/emc/usr_intf/pncconf/pncconf.glade:15643 +#: src/emc/usr_intf/pncconf/pncconf.glade:15695 +#: src/emc/usr_intf/pncconf/pncconf.glade:15747 +#: src/emc/usr_intf/pncconf/pncconf.glade:15799 +#: src/emc/usr_intf/pncconf/pncconf.glade:15851 +#: src/emc/usr_intf/pncconf/pncconf.glade:15903 +#: src/emc/usr_intf/pncconf/pncconf.glade:15955 +#: src/emc/usr_intf/pncconf/pncconf.glade:16007 +#: src/emc/usr_intf/pncconf/pncconf.glade:16059 +#: src/emc/usr_intf/pncconf/pncconf.glade:16111 +#: src/emc/usr_intf/pncconf/pncconf.glade:16540 +#: src/emc/usr_intf/pncconf/pncconf.glade:16592 +#: src/emc/usr_intf/pncconf/pncconf.glade:17253 +#: src/emc/usr_intf/pncconf/pncconf.glade:17305 +#: src/emc/usr_intf/pncconf/pncconf.glade:17357 +#: src/emc/usr_intf/pncconf/pncconf.glade:18196 +#: src/emc/usr_intf/pncconf/pncconf.glade:18248 +#: src/emc/usr_intf/pncconf/pncconf.glade:18300 +#: src/emc/usr_intf/pncconf/pncconf.glade:18352 +#: src/emc/usr_intf/pncconf/pncconf.glade:18404 +#: src/emc/usr_intf/pncconf/pncconf.glade:18456 +#: src/emc/usr_intf/pncconf/pncconf.glade:18508 +#: src/emc/usr_intf/pncconf/pncconf.glade:18560 +#: src/emc/usr_intf/pncconf/pncconf.glade:18612 +#: src/emc/usr_intf/pncconf/pncconf.glade:18664 +#: src/emc/usr_intf/pncconf/pncconf.glade:18716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26612 +#: src/emc/usr_intf/pncconf/pncconf.glade:26664 +#: src/emc/usr_intf/pncconf/pncconf.glade:26716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26768 +#: src/emc/usr_intf/pncconf/pncconf.glade:26820 +#: src/emc/usr_intf/pncconf/pncconf.glade:26872 +#: src/emc/usr_intf/pncconf/pncconf.glade:26924 +#: src/emc/usr_intf/pncconf/pncconf.glade:26976 +#: src/emc/usr_intf/pncconf/pncconf.glade:27028 +#: src/emc/usr_intf/pncconf/pncconf.glade:27080 +#: src/emc/usr_intf/pncconf/pncconf.glade:27132 +#: src/emc/usr_intf/pncconf/pncconf.glade:27184 +#: src/emc/usr_intf/pncconf/pncconf.glade:28011 +#: src/emc/usr_intf/pncconf/pncconf.glade:28063 +#: src/emc/usr_intf/pncconf/pncconf.glade:28115 +#: src/emc/usr_intf/pncconf/pncconf.glade:28167 +#: src/emc/usr_intf/pncconf/pncconf.glade:29507 +#: src/emc/usr_intf/pncconf/pncconf.glade:29559 +#: src/emc/usr_intf/pncconf/pncconf.glade:29611 +#: src/emc/usr_intf/pncconf/pncconf.glade:29663 +#: src/emc/usr_intf/pncconf/pncconf.glade:30490 +#: src/emc/usr_intf/pncconf/pncconf.glade:30542 +#: src/emc/usr_intf/pncconf/pncconf.glade:30594 +#: src/emc/usr_intf/pncconf/pncconf.glade:30646 +#: src/emc/usr_intf/pncconf/pncconf.glade:30698 +#: src/emc/usr_intf/pncconf/pncconf.glade:30750 +#: src/emc/usr_intf/pncconf/pncconf.glade:30802 +#: src/emc/usr_intf/pncconf/pncconf.glade:30854 +#: src/emc/usr_intf/pncconf/pncconf.glade:30906 +#: src/emc/usr_intf/pncconf/pncconf.glade:30958 +#: src/emc/usr_intf/pncconf/pncconf.glade:31010 +#: src/emc/usr_intf/pncconf/pncconf.glade:31062 +#: src/emc/usr_intf/pncconf/pncconf.glade:31878 +#: src/emc/usr_intf/pncconf/pncconf.glade:31930 +#: src/emc/usr_intf/pncconf/pncconf.glade:31982 +#: src/emc/usr_intf/pncconf/pncconf.glade:32034 +#: src/emc/usr_intf/pncconf/pncconf.glade:32086 +#: src/emc/usr_intf/pncconf/pncconf.glade:32138 +#: src/emc/usr_intf/pncconf/pncconf.glade:32190 +#: src/emc/usr_intf/pncconf/pncconf.glade:32242 +#: src/emc/usr_intf/pncconf/pncconf.glade:32294 +#: src/emc/usr_intf/pncconf/pncconf.glade:32346 +#: src/emc/usr_intf/pncconf/pncconf.glade:32398 +#: src/emc/usr_intf/pncconf/pncconf.glade:32450 +#: src/emc/usr_intf/pncconf/pncconf.glade:33852 +#: src/emc/usr_intf/pncconf/pncconf.glade:33904 +#: src/emc/usr_intf/pncconf/pncconf.glade:33956 +#: src/emc/usr_intf/pncconf/pncconf.glade:34008 +#: src/emc/usr_intf/pncconf/pncconf.glade:34835 +#: src/emc/usr_intf/pncconf/pncconf.glade:34887 +#: src/emc/usr_intf/pncconf/pncconf.glade:34939 +#: src/emc/usr_intf/pncconf/pncconf.glade:34991 +#: src/emc/usr_intf/pncconf/pncconf.glade:35043 +#: src/emc/usr_intf/pncconf/pncconf.glade:35095 +#: src/emc/usr_intf/pncconf/pncconf.glade:35147 +#: src/emc/usr_intf/pncconf/pncconf.glade:35199 +#: src/emc/usr_intf/pncconf/pncconf.glade:35251 +#: src/emc/usr_intf/pncconf/pncconf.glade:35303 +#: src/emc/usr_intf/pncconf/pncconf.glade:35355 +#: src/emc/usr_intf/pncconf/pncconf.glade:35407 +#: src/emc/usr_intf/pncconf/pncconf.glade:36096 +#: src/emc/usr_intf/pncconf/pncconf.glade:36148 +#: src/emc/usr_intf/pncconf/pncconf.glade:36200 +#: src/emc/usr_intf/pncconf/pncconf.glade:36252 +#: src/emc/usr_intf/pncconf/pncconf.glade:36304 +#: src/emc/usr_intf/pncconf/pncconf.glade:36356 +#: src/emc/usr_intf/pncconf/pncconf.glade:36408 +#: src/emc/usr_intf/pncconf/pncconf.glade:36460 +#: src/emc/usr_intf/pncconf/pncconf.glade:36512 +#: src/emc/usr_intf/pncconf/pncconf.glade:36564 +#: src/emc/usr_intf/pncconf/pncconf.glade:36616 +#: src/emc/usr_intf/pncconf/pncconf.glade:36668 +#: src/emc/usr_intf/pncconf/pncconf.glade:37495 +#: src/emc/usr_intf/pncconf/pncconf.glade:37547 +#: src/emc/usr_intf/pncconf/pncconf.glade:37599 +#: src/emc/usr_intf/pncconf/pncconf.glade:37651 +#: src/emc/usr_intf/pncconf/pncconf.glade:39168 +#: src/emc/usr_intf/pncconf/pncconf.glade:39220 +#: src/emc/usr_intf/pncconf/pncconf.glade:39272 +#: src/emc/usr_intf/pncconf/pncconf.glade:39324 +#: src/emc/usr_intf/pncconf/pncconf.glade:39376 +#: src/emc/usr_intf/pncconf/pncconf.glade:39428 +#: src/emc/usr_intf/pncconf/pncconf.glade:39480 +#: src/emc/usr_intf/pncconf/pncconf.glade:39532 +#: src/emc/usr_intf/pncconf/pncconf.glade:39584 +#: src/emc/usr_intf/pncconf/pncconf.glade:39636 +#: src/emc/usr_intf/pncconf/pncconf.glade:39688 +#: src/emc/usr_intf/pncconf/pncconf.glade:39740 +#: src/emc/usr_intf/pncconf/pncconf.glade:40456 +#: src/emc/usr_intf/pncconf/pncconf.glade:40508 +#: src/emc/usr_intf/pncconf/pncconf.glade:40560 +#: src/emc/usr_intf/pncconf/pncconf.glade:40612 +#: src/emc/usr_intf/pncconf/pncconf.glade:40664 +#: src/emc/usr_intf/pncconf/pncconf.glade:40716 +#: src/emc/usr_intf/pncconf/pncconf.glade:40768 +#: src/emc/usr_intf/pncconf/pncconf.glade:40820 +#: src/emc/usr_intf/pncconf/pncconf.glade:40872 +#: src/emc/usr_intf/pncconf/pncconf.glade:40924 +#: src/emc/usr_intf/pncconf/pncconf.glade:40976 +#: src/emc/usr_intf/pncconf/pncconf.glade:41028 +#: src/emc/usr_intf/pncconf/pncconf.glade:41855 +#: src/emc/usr_intf/pncconf/pncconf.glade:41907 +#: src/emc/usr_intf/pncconf/pncconf.glade:41959 +#: src/emc/usr_intf/pncconf/pncconf.glade:42011 +#: src/emc/usr_intf/pncconf/pncconf.glade:43351 +#: src/emc/usr_intf/pncconf/pncconf.glade:43403 +#: src/emc/usr_intf/pncconf/pncconf.glade:43455 +#: src/emc/usr_intf/pncconf/pncconf.glade:43507 +#: src/emc/usr_intf/pncconf/pncconf.glade:44334 +#: src/emc/usr_intf/pncconf/pncconf.glade:44386 +#: src/emc/usr_intf/pncconf/pncconf.glade:44438 +#: src/emc/usr_intf/pncconf/pncconf.glade:44490 +#: src/emc/usr_intf/pncconf/pncconf.glade:44542 +#: src/emc/usr_intf/pncconf/pncconf.glade:44594 +#: src/emc/usr_intf/pncconf/pncconf.glade:44646 +#: src/emc/usr_intf/pncconf/pncconf.glade:44698 +#: src/emc/usr_intf/pncconf/pncconf.glade:44750 +#: src/emc/usr_intf/pncconf/pncconf.glade:44802 +#: src/emc/usr_intf/pncconf/pncconf.glade:44854 +#: src/emc/usr_intf/pncconf/pncconf.glade:44906 +#: src/emc/usr_intf/pncconf/pncconf.glade:45711 +#: src/emc/usr_intf/pncconf/pncconf.glade:45763 +#: src/emc/usr_intf/pncconf/pncconf.glade:45815 +#: src/emc/usr_intf/pncconf/pncconf.glade:45867 +#: src/emc/usr_intf/pncconf/pncconf.glade:45919 +#: src/emc/usr_intf/pncconf/pncconf.glade:45971 +#: src/emc/usr_intf/pncconf/pncconf.glade:46023 +#: src/emc/usr_intf/pncconf/pncconf.glade:46075 +#: src/emc/usr_intf/pncconf/pncconf.glade:46127 +#: src/emc/usr_intf/pncconf/pncconf.glade:46179 +#: src/emc/usr_intf/pncconf/pncconf.glade:46231 +#: src/emc/usr_intf/pncconf/pncconf.glade:46283 +#: src/emc/usr_intf/pncconf/pncconf.glade:47379 +#: src/emc/usr_intf/pncconf/pncconf.glade:47431 +#: src/emc/usr_intf/pncconf/pncconf.glade:47483 +#: src/emc/usr_intf/pncconf/pncconf.glade:47535 +#: src/emc/usr_intf/pncconf/pncconf.glade:47587 +#: src/emc/usr_intf/pncconf/pncconf.glade:47639 +#: src/emc/usr_intf/pncconf/pncconf.glade:47691 +#: src/emc/usr_intf/pncconf/pncconf.glade:47743 +#: src/emc/usr_intf/pncconf/pncconf.glade:47795 +#: src/emc/usr_intf/pncconf/pncconf.glade:47847 +#: src/emc/usr_intf/pncconf/pncconf.glade:47899 +#: src/emc/usr_intf/pncconf/pncconf.glade:47951 +#: src/emc/usr_intf/pncconf/pncconf.glade:48778 +#: src/emc/usr_intf/pncconf/pncconf.glade:48830 +#: src/emc/usr_intf/pncconf/pncconf.glade:48882 +#: src/emc/usr_intf/pncconf/pncconf.glade:48934 +#: src/emc/usr_intf/pncconf/pncconf.glade:50274 +#: src/emc/usr_intf/pncconf/pncconf.glade:50326 +#: src/emc/usr_intf/pncconf/pncconf.glade:50378 +#: src/emc/usr_intf/pncconf/pncconf.glade:50430 +#: src/emc/usr_intf/pncconf/pncconf.glade:51257 +#: src/emc/usr_intf/pncconf/pncconf.glade:51309 +#: src/emc/usr_intf/pncconf/pncconf.glade:51361 +#: src/emc/usr_intf/pncconf/pncconf.glade:51413 +#: src/emc/usr_intf/pncconf/pncconf.glade:51465 +#: src/emc/usr_intf/pncconf/pncconf.glade:51517 +#: src/emc/usr_intf/pncconf/pncconf.glade:51569 +#: src/emc/usr_intf/pncconf/pncconf.glade:51621 +#: src/emc/usr_intf/pncconf/pncconf.glade:51673 +#: src/emc/usr_intf/pncconf/pncconf.glade:51725 +#: src/emc/usr_intf/pncconf/pncconf.glade:51777 +#: src/emc/usr_intf/pncconf/pncconf.glade:51829 +#: src/emc/usr_intf/pncconf/pncconf.glade:52634 +#: src/emc/usr_intf/pncconf/pncconf.glade:52686 +#: src/emc/usr_intf/pncconf/pncconf.glade:52738 +#: src/emc/usr_intf/pncconf/pncconf.glade:52790 +#: src/emc/usr_intf/pncconf/pncconf.glade:52842 +#: src/emc/usr_intf/pncconf/pncconf.glade:52894 +#: src/emc/usr_intf/pncconf/pncconf.glade:52946 +#: src/emc/usr_intf/pncconf/pncconf.glade:52998 +#: src/emc/usr_intf/pncconf/pncconf.glade:53050 +#: src/emc/usr_intf/pncconf/pncconf.glade:53102 +#: src/emc/usr_intf/pncconf/pncconf.glade:53154 +#: src/emc/usr_intf/pncconf/pncconf.glade:53206 +#: src/emc/usr_intf/pncconf/pncconf.glade:54302 +#: src/emc/usr_intf/pncconf/pncconf.glade:54354 +#: src/emc/usr_intf/pncconf/pncconf.glade:54406 +#: src/emc/usr_intf/pncconf/pncconf.glade:54458 +#: src/emc/usr_intf/pncconf/pncconf.glade:54510 +#: src/emc/usr_intf/pncconf/pncconf.glade:54562 +#: src/emc/usr_intf/pncconf/pncconf.glade:54614 +#: src/emc/usr_intf/pncconf/pncconf.glade:54666 +#: src/emc/usr_intf/pncconf/pncconf.glade:54718 +#: src/emc/usr_intf/pncconf/pncconf.glade:54770 +#: src/emc/usr_intf/pncconf/pncconf.glade:54822 +#: src/emc/usr_intf/pncconf/pncconf.glade:54874 +#: src/emc/usr_intf/pncconf/pncconf.glade:55701 +#: src/emc/usr_intf/pncconf/pncconf.glade:55753 +#: src/emc/usr_intf/pncconf/pncconf.glade:55805 +#: src/emc/usr_intf/pncconf/pncconf.glade:55857 +#: src/emc/usr_intf/pncconf/pncconf.glade:57197 +#: src/emc/usr_intf/pncconf/pncconf.glade:57249 +#: src/emc/usr_intf/pncconf/pncconf.glade:57301 +#: src/emc/usr_intf/pncconf/pncconf.glade:57353 +#: src/emc/usr_intf/pncconf/pncconf.glade:58180 +#: src/emc/usr_intf/pncconf/pncconf.glade:58232 +#: src/emc/usr_intf/pncconf/pncconf.glade:58284 +#: src/emc/usr_intf/pncconf/pncconf.glade:58336 +#: src/emc/usr_intf/pncconf/pncconf.glade:58388 +#: src/emc/usr_intf/pncconf/pncconf.glade:58440 +#: src/emc/usr_intf/pncconf/pncconf.glade:58492 +#: src/emc/usr_intf/pncconf/pncconf.glade:58544 +#: src/emc/usr_intf/pncconf/pncconf.glade:58596 +#: src/emc/usr_intf/pncconf/pncconf.glade:58648 +#: src/emc/usr_intf/pncconf/pncconf.glade:58700 +#: src/emc/usr_intf/pncconf/pncconf.glade:58752 +#: src/emc/usr_intf/pncconf/pncconf.glade:59557 +#: src/emc/usr_intf/pncconf/pncconf.glade:59609 +#: src/emc/usr_intf/pncconf/pncconf.glade:59661 +#: src/emc/usr_intf/pncconf/pncconf.glade:59713 +#: src/emc/usr_intf/pncconf/pncconf.glade:59765 +#: src/emc/usr_intf/pncconf/pncconf.glade:59817 +#: src/emc/usr_intf/pncconf/pncconf.glade:59869 +#: src/emc/usr_intf/pncconf/pncconf.glade:59921 +#: src/emc/usr_intf/pncconf/pncconf.glade:59973 +#: src/emc/usr_intf/pncconf/pncconf.glade:60025 +#: src/emc/usr_intf/pncconf/pncconf.glade:60077 +#: src/emc/usr_intf/pncconf/pncconf.glade:60129 msgid "" "ESTOP IN\n" "Spindle PPR\n" @@ -12392,1484 +13013,1746 @@ msgid "" "Unused" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9515 -#: src/emc/usr_intf/pncconf/pncconf.glade:12871 -#: src/emc/usr_intf/pncconf/pncconf.glade:18128 -#: src/emc/usr_intf/pncconf/pncconf.glade:20233 -#: src/emc/usr_intf/pncconf/pncconf.glade:21486 -#: src/emc/usr_intf/pncconf/pncconf.glade:23282 -#: src/emc/usr_intf/pncconf/pncconf.glade:25078 -#: emc/usr_intf/pncconf/pncconf.glade:3769 -#: emc/usr_intf/pncconf/pncconf.glade:5634 -#: emc/usr_intf/pncconf/pncconf.glade:8219 -#: emc/usr_intf/pncconf/pncconf.glade:10908 -msgid "31:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:8825 +#: src/emc/usr_intf/pncconf/pncconf.glade:9081 +#: src/emc/usr_intf/pncconf/pncconf.glade:13563 +#: src/emc/usr_intf/pncconf/pncconf.glade:13818 +#: src/emc/usr_intf/pncconf/pncconf.glade:16164 +#: src/emc/usr_intf/pncconf/pncconf.glade:16410 +#: src/emc/usr_intf/pncconf/pncconf.glade:18769 +#: src/emc/usr_intf/pncconf/pncconf.glade:19024 +#: src/emc/usr_intf/pncconf/pncconf.glade:20571 +#: src/emc/usr_intf/pncconf/pncconf.glade:20820 +#: src/emc/usr_intf/pncconf/pncconf.glade:20949 +#: src/emc/usr_intf/pncconf/pncconf.glade:21199 +#: src/emc/usr_intf/pncconf/pncconf.glade:22745 +#: src/emc/usr_intf/pncconf/pncconf.glade:22995 +#: src/emc/usr_intf/pncconf/pncconf.glade:24541 +#: src/emc/usr_intf/pncconf/pncconf.glade:24791 +#: src/emc/usr_intf/pncconf/pncconf.glade:26353 +#: src/emc/usr_intf/pncconf/pncconf.glade:26600 +#: src/emc/usr_intf/pncconf/pncconf.glade:31115 +#: src/emc/usr_intf/pncconf/pncconf.glade:31361 +#: src/emc/usr_intf/pncconf/pncconf.glade:31621 +#: src/emc/usr_intf/pncconf/pncconf.glade:35460 +#: src/emc/usr_intf/pncconf/pncconf.glade:35706 +#: src/emc/usr_intf/pncconf/pncconf.glade:35837 +#: src/emc/usr_intf/pncconf/pncconf.glade:36084 +#: src/emc/usr_intf/pncconf/pncconf.glade:40037 +#: src/emc/usr_intf/pncconf/pncconf.glade:40197 +#: src/emc/usr_intf/pncconf/pncconf.glade:40444 +#: src/emc/usr_intf/pncconf/pncconf.glade:44959 +#: src/emc/usr_intf/pncconf/pncconf.glade:45205 +#: src/emc/usr_intf/pncconf/pncconf.glade:45454 +#: src/emc/usr_intf/pncconf/pncconf.glade:47120 +#: src/emc/usr_intf/pncconf/pncconf.glade:47367 +#: src/emc/usr_intf/pncconf/pncconf.glade:51882 +#: src/emc/usr_intf/pncconf/pncconf.glade:52128 +#: src/emc/usr_intf/pncconf/pncconf.glade:52377 +#: src/emc/usr_intf/pncconf/pncconf.glade:54043 +#: src/emc/usr_intf/pncconf/pncconf.glade:54290 +#: src/emc/usr_intf/pncconf/pncconf.glade:58805 +#: src/emc/usr_intf/pncconf/pncconf.glade:59051 +#: src/emc/usr_intf/pncconf/pncconf.glade:59300 +#, fuzzy +msgid "Pin Type" +msgstr "Positionierungs-Info" -#: src/emc/usr_intf/pncconf/pncconf.glade:9531 -#: src/emc/usr_intf/pncconf/pncconf.glade:12855 -#: src/emc/usr_intf/pncconf/pncconf.glade:18112 -#: src/emc/usr_intf/pncconf/pncconf.glade:20217 -#: src/emc/usr_intf/pncconf/pncconf.glade:21502 -#: src/emc/usr_intf/pncconf/pncconf.glade:23298 -#: src/emc/usr_intf/pncconf/pncconf.glade:25094 -#: emc/usr_intf/pncconf/pncconf.glade:3753 -#: emc/usr_intf/pncconf/pncconf.glade:5650 -#: emc/usr_intf/pncconf/pncconf.glade:8235 -#: emc/usr_intf/pncconf/pncconf.glade:10924 -msgid "29:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8838 +#: src/emc/usr_intf/pncconf/pncconf.glade:8900 +#: src/emc/usr_intf/pncconf/pncconf.glade:13743 +#: src/emc/usr_intf/pncconf/pncconf.glade:13806 +#: src/emc/usr_intf/pncconf/pncconf.glade:16335 +#: src/emc/usr_intf/pncconf/pncconf.glade:16398 +#: src/emc/usr_intf/pncconf/pncconf.glade:18949 +#: src/emc/usr_intf/pncconf/pncconf.glade:19012 +#: src/emc/usr_intf/pncconf/pncconf.glade:20751 +#: src/emc/usr_intf/pncconf/pncconf.glade:20808 +#: src/emc/usr_intf/pncconf/pncconf.glade:20962 +#: src/emc/usr_intf/pncconf/pncconf.glade:21018 +#: src/emc/usr_intf/pncconf/pncconf.glade:22758 +#: src/emc/usr_intf/pncconf/pncconf.glade:22814 +#: src/emc/usr_intf/pncconf/pncconf.glade:24554 +#: src/emc/usr_intf/pncconf/pncconf.glade:24610 +#: src/emc/usr_intf/pncconf/pncconf.glade:26366 +#: src/emc/usr_intf/pncconf/pncconf.glade:26428 +#: src/emc/usr_intf/pncconf/pncconf.glade:31286 +#: src/emc/usr_intf/pncconf/pncconf.glade:31349 +#: src/emc/usr_intf/pncconf/pncconf.glade:31634 +#: src/emc/usr_intf/pncconf/pncconf.glade:35631 +#: src/emc/usr_intf/pncconf/pncconf.glade:35694 +#: src/emc/usr_intf/pncconf/pncconf.glade:35850 +#: src/emc/usr_intf/pncconf/pncconf.glade:35912 +#: src/emc/usr_intf/pncconf/pncconf.glade:40025 +#: src/emc/usr_intf/pncconf/pncconf.glade:40210 +#: src/emc/usr_intf/pncconf/pncconf.glade:40272 +#: src/emc/usr_intf/pncconf/pncconf.glade:45130 +#: src/emc/usr_intf/pncconf/pncconf.glade:45193 +#: src/emc/usr_intf/pncconf/pncconf.glade:45467 +#: src/emc/usr_intf/pncconf/pncconf.glade:47133 +#: src/emc/usr_intf/pncconf/pncconf.glade:47195 +#: src/emc/usr_intf/pncconf/pncconf.glade:52053 +#: src/emc/usr_intf/pncconf/pncconf.glade:52116 +#: src/emc/usr_intf/pncconf/pncconf.glade:52390 +#: src/emc/usr_intf/pncconf/pncconf.glade:54056 +#: src/emc/usr_intf/pncconf/pncconf.glade:54118 +#: src/emc/usr_intf/pncconf/pncconf.glade:58976 +#: src/emc/usr_intf/pncconf/pncconf.glade:59039 +#: src/emc/usr_intf/pncconf/pncconf.glade:59313 +#, fuzzy +msgid "Inv" +msgstr "Invertieren" + +#: src/emc/usr_intf/pncconf/pncconf.glade:8867 +#: src/emc/usr_intf/pncconf/pncconf.glade:10731 +#: src/emc/usr_intf/pncconf/pncconf.glade:10751 +#: src/emc/usr_intf/pncconf/pncconf.glade:10771 +#: src/emc/usr_intf/pncconf/pncconf.glade:10791 +#: src/emc/usr_intf/pncconf/pncconf.glade:10811 +#: src/emc/usr_intf/pncconf/pncconf.glade:10831 +#: src/emc/usr_intf/pncconf/pncconf.glade:10851 +#: src/emc/usr_intf/pncconf/pncconf.glade:10871 +#: src/emc/usr_intf/pncconf/pncconf.glade:10891 +#: src/emc/usr_intf/pncconf/pncconf.glade:10911 +#: src/emc/usr_intf/pncconf/pncconf.glade:10931 +#: src/emc/usr_intf/pncconf/pncconf.glade:10951 +#: src/emc/usr_intf/pncconf/pncconf.glade:10971 +#: src/emc/usr_intf/pncconf/pncconf.glade:10991 +#: src/emc/usr_intf/pncconf/pncconf.glade:11011 +#: src/emc/usr_intf/pncconf/pncconf.glade:11031 +#: src/emc/usr_intf/pncconf/pncconf.glade:11051 +#: src/emc/usr_intf/pncconf/pncconf.glade:11071 +#: src/emc/usr_intf/pncconf/pncconf.glade:11091 +#: src/emc/usr_intf/pncconf/pncconf.glade:11111 +#: src/emc/usr_intf/pncconf/pncconf.glade:11131 +#: src/emc/usr_intf/pncconf/pncconf.glade:11151 +#: src/emc/usr_intf/pncconf/pncconf.glade:11171 +#: src/emc/usr_intf/pncconf/pncconf.glade:11465 +#: src/emc/usr_intf/pncconf/pncconf.glade:11485 +#: src/emc/usr_intf/pncconf/pncconf.glade:11505 +#: src/emc/usr_intf/pncconf/pncconf.glade:11525 +#: src/emc/usr_intf/pncconf/pncconf.glade:11545 +#: src/emc/usr_intf/pncconf/pncconf.glade:11565 +#: src/emc/usr_intf/pncconf/pncconf.glade:11585 +#: src/emc/usr_intf/pncconf/pncconf.glade:11605 +#: src/emc/usr_intf/pncconf/pncconf.glade:11625 +#: src/emc/usr_intf/pncconf/pncconf.glade:11645 +#: src/emc/usr_intf/pncconf/pncconf.glade:11665 +#: src/emc/usr_intf/pncconf/pncconf.glade:11685 +#: src/emc/usr_intf/pncconf/pncconf.glade:11705 +#: src/emc/usr_intf/pncconf/pncconf.glade:11725 +#: src/emc/usr_intf/pncconf/pncconf.glade:11745 +#: src/emc/usr_intf/pncconf/pncconf.glade:11765 +#: src/emc/usr_intf/pncconf/pncconf.glade:11785 +#: src/emc/usr_intf/pncconf/pncconf.glade:11805 +#: src/emc/usr_intf/pncconf/pncconf.glade:11825 +#: src/emc/usr_intf/pncconf/pncconf.glade:11845 +#: src/emc/usr_intf/pncconf/pncconf.glade:11865 +#: src/emc/usr_intf/pncconf/pncconf.glade:11885 +#: src/emc/usr_intf/pncconf/pncconf.glade:11905 +#: src/emc/usr_intf/pncconf/pncconf.glade:13768 +#: src/emc/usr_intf/pncconf/pncconf.glade:13974 +#: src/emc/usr_intf/pncconf/pncconf.glade:13994 +#: src/emc/usr_intf/pncconf/pncconf.glade:14014 +#: src/emc/usr_intf/pncconf/pncconf.glade:14034 +#: src/emc/usr_intf/pncconf/pncconf.glade:14054 +#: src/emc/usr_intf/pncconf/pncconf.glade:14074 +#: src/emc/usr_intf/pncconf/pncconf.glade:14094 +#: src/emc/usr_intf/pncconf/pncconf.glade:14114 +#: src/emc/usr_intf/pncconf/pncconf.glade:14134 +#: src/emc/usr_intf/pncconf/pncconf.glade:14154 +#: src/emc/usr_intf/pncconf/pncconf.glade:14174 +#: src/emc/usr_intf/pncconf/pncconf.glade:14194 +#: src/emc/usr_intf/pncconf/pncconf.glade:14214 +#: src/emc/usr_intf/pncconf/pncconf.glade:14234 +#: src/emc/usr_intf/pncconf/pncconf.glade:14254 +#: src/emc/usr_intf/pncconf/pncconf.glade:14274 +#: src/emc/usr_intf/pncconf/pncconf.glade:14294 +#: src/emc/usr_intf/pncconf/pncconf.glade:14314 +#: src/emc/usr_intf/pncconf/pncconf.glade:14334 +#: src/emc/usr_intf/pncconf/pncconf.glade:14354 +#: src/emc/usr_intf/pncconf/pncconf.glade:14374 +#: src/emc/usr_intf/pncconf/pncconf.glade:14394 +#: src/emc/usr_intf/pncconf/pncconf.glade:14414 +#: src/emc/usr_intf/pncconf/pncconf.glade:16360 +#: src/emc/usr_intf/pncconf/pncconf.glade:16670 +#: src/emc/usr_intf/pncconf/pncconf.glade:16690 +#: src/emc/usr_intf/pncconf/pncconf.glade:16710 +#: src/emc/usr_intf/pncconf/pncconf.glade:16730 +#: src/emc/usr_intf/pncconf/pncconf.glade:16750 +#: src/emc/usr_intf/pncconf/pncconf.glade:16770 +#: src/emc/usr_intf/pncconf/pncconf.glade:16790 +#: src/emc/usr_intf/pncconf/pncconf.glade:16810 +#: src/emc/usr_intf/pncconf/pncconf.glade:16830 +#: src/emc/usr_intf/pncconf/pncconf.glade:16850 +#: src/emc/usr_intf/pncconf/pncconf.glade:16870 +#: src/emc/usr_intf/pncconf/pncconf.glade:16890 +#: src/emc/usr_intf/pncconf/pncconf.glade:16910 +#: src/emc/usr_intf/pncconf/pncconf.glade:16930 +#: src/emc/usr_intf/pncconf/pncconf.glade:16950 +#: src/emc/usr_intf/pncconf/pncconf.glade:16970 +#: src/emc/usr_intf/pncconf/pncconf.glade:16990 +#: src/emc/usr_intf/pncconf/pncconf.glade:17010 +#: src/emc/usr_intf/pncconf/pncconf.glade:17030 +#: src/emc/usr_intf/pncconf/pncconf.glade:17050 +#: src/emc/usr_intf/pncconf/pncconf.glade:17070 +#: src/emc/usr_intf/pncconf/pncconf.glade:17090 +#: src/emc/usr_intf/pncconf/pncconf.glade:17110 +#: src/emc/usr_intf/pncconf/pncconf.glade:18974 +#: src/emc/usr_intf/pncconf/pncconf.glade:26395 +#: src/emc/usr_intf/pncconf/pncconf.glade:28311 +#: src/emc/usr_intf/pncconf/pncconf.glade:28331 +#: src/emc/usr_intf/pncconf/pncconf.glade:28351 +#: src/emc/usr_intf/pncconf/pncconf.glade:28371 +#: src/emc/usr_intf/pncconf/pncconf.glade:28391 +#: src/emc/usr_intf/pncconf/pncconf.glade:28411 +#: src/emc/usr_intf/pncconf/pncconf.glade:28431 +#: src/emc/usr_intf/pncconf/pncconf.glade:28451 +#: src/emc/usr_intf/pncconf/pncconf.glade:28471 +#: src/emc/usr_intf/pncconf/pncconf.glade:28491 +#: src/emc/usr_intf/pncconf/pncconf.glade:28511 +#: src/emc/usr_intf/pncconf/pncconf.glade:28531 +#: src/emc/usr_intf/pncconf/pncconf.glade:28551 +#: src/emc/usr_intf/pncconf/pncconf.glade:28571 +#: src/emc/usr_intf/pncconf/pncconf.glade:28591 +#: src/emc/usr_intf/pncconf/pncconf.glade:28611 +#: src/emc/usr_intf/pncconf/pncconf.glade:28631 +#: src/emc/usr_intf/pncconf/pncconf.glade:28651 +#: src/emc/usr_intf/pncconf/pncconf.glade:28671 +#: src/emc/usr_intf/pncconf/pncconf.glade:28691 +#: src/emc/usr_intf/pncconf/pncconf.glade:28711 +#: src/emc/usr_intf/pncconf/pncconf.glade:28731 +#: src/emc/usr_intf/pncconf/pncconf.glade:28751 +#: src/emc/usr_intf/pncconf/pncconf.glade:28942 +#: src/emc/usr_intf/pncconf/pncconf.glade:28962 +#: src/emc/usr_intf/pncconf/pncconf.glade:28982 +#: src/emc/usr_intf/pncconf/pncconf.glade:29002 +#: src/emc/usr_intf/pncconf/pncconf.glade:29022 +#: src/emc/usr_intf/pncconf/pncconf.glade:29042 +#: src/emc/usr_intf/pncconf/pncconf.glade:29062 +#: src/emc/usr_intf/pncconf/pncconf.glade:29082 +#: src/emc/usr_intf/pncconf/pncconf.glade:29102 +#: src/emc/usr_intf/pncconf/pncconf.glade:29122 +#: src/emc/usr_intf/pncconf/pncconf.glade:29142 +#: src/emc/usr_intf/pncconf/pncconf.glade:29162 +#: src/emc/usr_intf/pncconf/pncconf.glade:29182 +#: src/emc/usr_intf/pncconf/pncconf.glade:29202 +#: src/emc/usr_intf/pncconf/pncconf.glade:29222 +#: src/emc/usr_intf/pncconf/pncconf.glade:29242 +#: src/emc/usr_intf/pncconf/pncconf.glade:29262 +#: src/emc/usr_intf/pncconf/pncconf.glade:29282 +#: src/emc/usr_intf/pncconf/pncconf.glade:29302 +#: src/emc/usr_intf/pncconf/pncconf.glade:29322 +#: src/emc/usr_intf/pncconf/pncconf.glade:29342 +#: src/emc/usr_intf/pncconf/pncconf.glade:29362 +#: src/emc/usr_intf/pncconf/pncconf.glade:29382 +#: src/emc/usr_intf/pncconf/pncconf.glade:31311 +#: src/emc/usr_intf/pncconf/pncconf.glade:31663 +#: src/emc/usr_intf/pncconf/pncconf.glade:32881 +#: src/emc/usr_intf/pncconf/pncconf.glade:32901 +#: src/emc/usr_intf/pncconf/pncconf.glade:32921 +#: src/emc/usr_intf/pncconf/pncconf.glade:32941 +#: src/emc/usr_intf/pncconf/pncconf.glade:32961 +#: src/emc/usr_intf/pncconf/pncconf.glade:32981 +#: src/emc/usr_intf/pncconf/pncconf.glade:33001 +#: src/emc/usr_intf/pncconf/pncconf.glade:33021 +#: src/emc/usr_intf/pncconf/pncconf.glade:33041 +#: src/emc/usr_intf/pncconf/pncconf.glade:33061 +#: src/emc/usr_intf/pncconf/pncconf.glade:33081 +#: src/emc/usr_intf/pncconf/pncconf.glade:33300 +#: src/emc/usr_intf/pncconf/pncconf.glade:33320 +#: src/emc/usr_intf/pncconf/pncconf.glade:33340 +#: src/emc/usr_intf/pncconf/pncconf.glade:33360 +#: src/emc/usr_intf/pncconf/pncconf.glade:33380 +#: src/emc/usr_intf/pncconf/pncconf.glade:33400 +#: src/emc/usr_intf/pncconf/pncconf.glade:33420 +#: src/emc/usr_intf/pncconf/pncconf.glade:33440 +#: src/emc/usr_intf/pncconf/pncconf.glade:33460 +#: src/emc/usr_intf/pncconf/pncconf.glade:33480 +#: src/emc/usr_intf/pncconf/pncconf.glade:33500 +#: src/emc/usr_intf/pncconf/pncconf.glade:33520 +#: src/emc/usr_intf/pncconf/pncconf.glade:33540 +#: src/emc/usr_intf/pncconf/pncconf.glade:33560 +#: src/emc/usr_intf/pncconf/pncconf.glade:33580 +#: src/emc/usr_intf/pncconf/pncconf.glade:33600 +#: src/emc/usr_intf/pncconf/pncconf.glade:33620 +#: src/emc/usr_intf/pncconf/pncconf.glade:33640 +#: src/emc/usr_intf/pncconf/pncconf.glade:33660 +#: src/emc/usr_intf/pncconf/pncconf.glade:33680 +#: src/emc/usr_intf/pncconf/pncconf.glade:33700 +#: src/emc/usr_intf/pncconf/pncconf.glade:33720 +#: src/emc/usr_intf/pncconf/pncconf.glade:33740 +#: src/emc/usr_intf/pncconf/pncconf.glade:35656 +#: src/emc/usr_intf/pncconf/pncconf.glade:35879 +#: src/emc/usr_intf/pncconf/pncconf.glade:37808 +#: src/emc/usr_intf/pncconf/pncconf.glade:37828 +#: src/emc/usr_intf/pncconf/pncconf.glade:37848 +#: src/emc/usr_intf/pncconf/pncconf.glade:37868 +#: src/emc/usr_intf/pncconf/pncconf.glade:37888 +#: src/emc/usr_intf/pncconf/pncconf.glade:37908 +#: src/emc/usr_intf/pncconf/pncconf.glade:37928 +#: src/emc/usr_intf/pncconf/pncconf.glade:37948 +#: src/emc/usr_intf/pncconf/pncconf.glade:37968 +#: src/emc/usr_intf/pncconf/pncconf.glade:37988 +#: src/emc/usr_intf/pncconf/pncconf.glade:38008 +#: src/emc/usr_intf/pncconf/pncconf.glade:38028 +#: src/emc/usr_intf/pncconf/pncconf.glade:38048 +#: src/emc/usr_intf/pncconf/pncconf.glade:38068 +#: src/emc/usr_intf/pncconf/pncconf.glade:38088 +#: src/emc/usr_intf/pncconf/pncconf.glade:38108 +#: src/emc/usr_intf/pncconf/pncconf.glade:38128 +#: src/emc/usr_intf/pncconf/pncconf.glade:38148 +#: src/emc/usr_intf/pncconf/pncconf.glade:38168 +#: src/emc/usr_intf/pncconf/pncconf.glade:38188 +#: src/emc/usr_intf/pncconf/pncconf.glade:38208 +#: src/emc/usr_intf/pncconf/pncconf.glade:38228 +#: src/emc/usr_intf/pncconf/pncconf.glade:38248 +#: src/emc/usr_intf/pncconf/pncconf.glade:38557 +#: src/emc/usr_intf/pncconf/pncconf.glade:38577 +#: src/emc/usr_intf/pncconf/pncconf.glade:38597 +#: src/emc/usr_intf/pncconf/pncconf.glade:38617 +#: src/emc/usr_intf/pncconf/pncconf.glade:38637 +#: src/emc/usr_intf/pncconf/pncconf.glade:38657 +#: src/emc/usr_intf/pncconf/pncconf.glade:38677 +#: src/emc/usr_intf/pncconf/pncconf.glade:38697 +#: src/emc/usr_intf/pncconf/pncconf.glade:38717 +#: src/emc/usr_intf/pncconf/pncconf.glade:38737 +#: src/emc/usr_intf/pncconf/pncconf.glade:38757 +#: src/emc/usr_intf/pncconf/pncconf.glade:39987 +#: src/emc/usr_intf/pncconf/pncconf.glade:40239 +#: src/emc/usr_intf/pncconf/pncconf.glade:42155 +#: src/emc/usr_intf/pncconf/pncconf.glade:42175 +#: src/emc/usr_intf/pncconf/pncconf.glade:42195 +#: src/emc/usr_intf/pncconf/pncconf.glade:42215 +#: src/emc/usr_intf/pncconf/pncconf.glade:42235 +#: src/emc/usr_intf/pncconf/pncconf.glade:42255 +#: src/emc/usr_intf/pncconf/pncconf.glade:42275 +#: src/emc/usr_intf/pncconf/pncconf.glade:42295 +#: src/emc/usr_intf/pncconf/pncconf.glade:42315 +#: src/emc/usr_intf/pncconf/pncconf.glade:42335 +#: src/emc/usr_intf/pncconf/pncconf.glade:42355 +#: src/emc/usr_intf/pncconf/pncconf.glade:42375 +#: src/emc/usr_intf/pncconf/pncconf.glade:42395 +#: src/emc/usr_intf/pncconf/pncconf.glade:42415 +#: src/emc/usr_intf/pncconf/pncconf.glade:42435 +#: src/emc/usr_intf/pncconf/pncconf.glade:42455 +#: src/emc/usr_intf/pncconf/pncconf.glade:42475 +#: src/emc/usr_intf/pncconf/pncconf.glade:42495 +#: src/emc/usr_intf/pncconf/pncconf.glade:42515 +#: src/emc/usr_intf/pncconf/pncconf.glade:42535 +#: src/emc/usr_intf/pncconf/pncconf.glade:42555 +#: src/emc/usr_intf/pncconf/pncconf.glade:42575 +#: src/emc/usr_intf/pncconf/pncconf.glade:42595 +#: src/emc/usr_intf/pncconf/pncconf.glade:42786 +#: src/emc/usr_intf/pncconf/pncconf.glade:42806 +#: src/emc/usr_intf/pncconf/pncconf.glade:42826 +#: src/emc/usr_intf/pncconf/pncconf.glade:42846 +#: src/emc/usr_intf/pncconf/pncconf.glade:42866 +#: src/emc/usr_intf/pncconf/pncconf.glade:42886 +#: src/emc/usr_intf/pncconf/pncconf.glade:42906 +#: src/emc/usr_intf/pncconf/pncconf.glade:42926 +#: src/emc/usr_intf/pncconf/pncconf.glade:42946 +#: src/emc/usr_intf/pncconf/pncconf.glade:42966 +#: src/emc/usr_intf/pncconf/pncconf.glade:42986 +#: src/emc/usr_intf/pncconf/pncconf.glade:43006 +#: src/emc/usr_intf/pncconf/pncconf.glade:43026 +#: src/emc/usr_intf/pncconf/pncconf.glade:43046 +#: src/emc/usr_intf/pncconf/pncconf.glade:43066 +#: src/emc/usr_intf/pncconf/pncconf.glade:43086 +#: src/emc/usr_intf/pncconf/pncconf.glade:43106 +#: src/emc/usr_intf/pncconf/pncconf.glade:43126 +#: src/emc/usr_intf/pncconf/pncconf.glade:43146 +#: src/emc/usr_intf/pncconf/pncconf.glade:43166 +#: src/emc/usr_intf/pncconf/pncconf.glade:43186 +#: src/emc/usr_intf/pncconf/pncconf.glade:43206 +#: src/emc/usr_intf/pncconf/pncconf.glade:43226 +#: src/emc/usr_intf/pncconf/pncconf.glade:45155 +#: src/emc/usr_intf/pncconf/pncconf.glade:45496 +#: src/emc/usr_intf/pncconf/pncconf.glade:46726 +#: src/emc/usr_intf/pncconf/pncconf.glade:46746 +#: src/emc/usr_intf/pncconf/pncconf.glade:46766 +#: src/emc/usr_intf/pncconf/pncconf.glade:46786 +#: src/emc/usr_intf/pncconf/pncconf.glade:46806 +#: src/emc/usr_intf/pncconf/pncconf.glade:46826 +#: src/emc/usr_intf/pncconf/pncconf.glade:46846 +#: src/emc/usr_intf/pncconf/pncconf.glade:46866 +#: src/emc/usr_intf/pncconf/pncconf.glade:46886 +#: src/emc/usr_intf/pncconf/pncconf.glade:46906 +#: src/emc/usr_intf/pncconf/pncconf.glade:46926 +#: src/emc/usr_intf/pncconf/pncconf.glade:47162 +#: src/emc/usr_intf/pncconf/pncconf.glade:49078 +#: src/emc/usr_intf/pncconf/pncconf.glade:49098 +#: src/emc/usr_intf/pncconf/pncconf.glade:49118 +#: src/emc/usr_intf/pncconf/pncconf.glade:49138 +#: src/emc/usr_intf/pncconf/pncconf.glade:49158 +#: src/emc/usr_intf/pncconf/pncconf.glade:49178 +#: src/emc/usr_intf/pncconf/pncconf.glade:49198 +#: src/emc/usr_intf/pncconf/pncconf.glade:49218 +#: src/emc/usr_intf/pncconf/pncconf.glade:49238 +#: src/emc/usr_intf/pncconf/pncconf.glade:49258 +#: src/emc/usr_intf/pncconf/pncconf.glade:49278 +#: src/emc/usr_intf/pncconf/pncconf.glade:49298 +#: src/emc/usr_intf/pncconf/pncconf.glade:49318 +#: src/emc/usr_intf/pncconf/pncconf.glade:49338 +#: src/emc/usr_intf/pncconf/pncconf.glade:49358 +#: src/emc/usr_intf/pncconf/pncconf.glade:49378 +#: src/emc/usr_intf/pncconf/pncconf.glade:49398 +#: src/emc/usr_intf/pncconf/pncconf.glade:49418 +#: src/emc/usr_intf/pncconf/pncconf.glade:49438 +#: src/emc/usr_intf/pncconf/pncconf.glade:49458 +#: src/emc/usr_intf/pncconf/pncconf.glade:49478 +#: src/emc/usr_intf/pncconf/pncconf.glade:49498 +#: src/emc/usr_intf/pncconf/pncconf.glade:49518 +#: src/emc/usr_intf/pncconf/pncconf.glade:49709 +#: src/emc/usr_intf/pncconf/pncconf.glade:49729 +#: src/emc/usr_intf/pncconf/pncconf.glade:49749 +#: src/emc/usr_intf/pncconf/pncconf.glade:49769 +#: src/emc/usr_intf/pncconf/pncconf.glade:49789 +#: src/emc/usr_intf/pncconf/pncconf.glade:49809 +#: src/emc/usr_intf/pncconf/pncconf.glade:49829 +#: src/emc/usr_intf/pncconf/pncconf.glade:49849 +#: src/emc/usr_intf/pncconf/pncconf.glade:49869 +#: src/emc/usr_intf/pncconf/pncconf.glade:49889 +#: src/emc/usr_intf/pncconf/pncconf.glade:49909 +#: src/emc/usr_intf/pncconf/pncconf.glade:49929 +#: src/emc/usr_intf/pncconf/pncconf.glade:49949 +#: src/emc/usr_intf/pncconf/pncconf.glade:49969 +#: src/emc/usr_intf/pncconf/pncconf.glade:49989 +#: src/emc/usr_intf/pncconf/pncconf.glade:50009 +#: src/emc/usr_intf/pncconf/pncconf.glade:50029 +#: src/emc/usr_intf/pncconf/pncconf.glade:50049 +#: src/emc/usr_intf/pncconf/pncconf.glade:50069 +#: src/emc/usr_intf/pncconf/pncconf.glade:50089 +#: src/emc/usr_intf/pncconf/pncconf.glade:50109 +#: src/emc/usr_intf/pncconf/pncconf.glade:50129 +#: src/emc/usr_intf/pncconf/pncconf.glade:50149 +#: src/emc/usr_intf/pncconf/pncconf.glade:52078 +#: src/emc/usr_intf/pncconf/pncconf.glade:52419 +#: src/emc/usr_intf/pncconf/pncconf.glade:53649 +#: src/emc/usr_intf/pncconf/pncconf.glade:53669 +#: src/emc/usr_intf/pncconf/pncconf.glade:53689 +#: src/emc/usr_intf/pncconf/pncconf.glade:53709 +#: src/emc/usr_intf/pncconf/pncconf.glade:53729 +#: src/emc/usr_intf/pncconf/pncconf.glade:53749 +#: src/emc/usr_intf/pncconf/pncconf.glade:53769 +#: src/emc/usr_intf/pncconf/pncconf.glade:53789 +#: src/emc/usr_intf/pncconf/pncconf.glade:53809 +#: src/emc/usr_intf/pncconf/pncconf.glade:53829 +#: src/emc/usr_intf/pncconf/pncconf.glade:53849 +#: src/emc/usr_intf/pncconf/pncconf.glade:54085 +#: src/emc/usr_intf/pncconf/pncconf.glade:56001 +#: src/emc/usr_intf/pncconf/pncconf.glade:56021 +#: src/emc/usr_intf/pncconf/pncconf.glade:56041 +#: src/emc/usr_intf/pncconf/pncconf.glade:56061 +#: src/emc/usr_intf/pncconf/pncconf.glade:56081 +#: src/emc/usr_intf/pncconf/pncconf.glade:56101 +#: src/emc/usr_intf/pncconf/pncconf.glade:56121 +#: src/emc/usr_intf/pncconf/pncconf.glade:56141 +#: src/emc/usr_intf/pncconf/pncconf.glade:56161 +#: src/emc/usr_intf/pncconf/pncconf.glade:56181 +#: src/emc/usr_intf/pncconf/pncconf.glade:56201 +#: src/emc/usr_intf/pncconf/pncconf.glade:56221 +#: src/emc/usr_intf/pncconf/pncconf.glade:56241 +#: src/emc/usr_intf/pncconf/pncconf.glade:56261 +#: src/emc/usr_intf/pncconf/pncconf.glade:56281 +#: src/emc/usr_intf/pncconf/pncconf.glade:56301 +#: src/emc/usr_intf/pncconf/pncconf.glade:56321 +#: src/emc/usr_intf/pncconf/pncconf.glade:56341 +#: src/emc/usr_intf/pncconf/pncconf.glade:56361 +#: src/emc/usr_intf/pncconf/pncconf.glade:56381 +#: src/emc/usr_intf/pncconf/pncconf.glade:56401 +#: src/emc/usr_intf/pncconf/pncconf.glade:56421 +#: src/emc/usr_intf/pncconf/pncconf.glade:56441 +#: src/emc/usr_intf/pncconf/pncconf.glade:56632 +#: src/emc/usr_intf/pncconf/pncconf.glade:56652 +#: src/emc/usr_intf/pncconf/pncconf.glade:56672 +#: src/emc/usr_intf/pncconf/pncconf.glade:56692 +#: src/emc/usr_intf/pncconf/pncconf.glade:56712 +#: src/emc/usr_intf/pncconf/pncconf.glade:56732 +#: src/emc/usr_intf/pncconf/pncconf.glade:56752 +#: src/emc/usr_intf/pncconf/pncconf.glade:56772 +#: src/emc/usr_intf/pncconf/pncconf.glade:56792 +#: src/emc/usr_intf/pncconf/pncconf.glade:56812 +#: src/emc/usr_intf/pncconf/pncconf.glade:56832 +#: src/emc/usr_intf/pncconf/pncconf.glade:56852 +#: src/emc/usr_intf/pncconf/pncconf.glade:56872 +#: src/emc/usr_intf/pncconf/pncconf.glade:56892 +#: src/emc/usr_intf/pncconf/pncconf.glade:56912 +#: src/emc/usr_intf/pncconf/pncconf.glade:56932 +#: src/emc/usr_intf/pncconf/pncconf.glade:56952 +#: src/emc/usr_intf/pncconf/pncconf.glade:56972 +#: src/emc/usr_intf/pncconf/pncconf.glade:56992 +#: src/emc/usr_intf/pncconf/pncconf.glade:57012 +#: src/emc/usr_intf/pncconf/pncconf.glade:57032 +#: src/emc/usr_intf/pncconf/pncconf.glade:57052 +#: src/emc/usr_intf/pncconf/pncconf.glade:57072 +#: src/emc/usr_intf/pncconf/pncconf.glade:59001 +#: src/emc/usr_intf/pncconf/pncconf.glade:59342 +#: src/emc/usr_intf/pncconf/pncconf.glade:60572 +#: src/emc/usr_intf/pncconf/pncconf.glade:60592 +#: src/emc/usr_intf/pncconf/pncconf.glade:60612 +#: src/emc/usr_intf/pncconf/pncconf.glade:60632 +#: src/emc/usr_intf/pncconf/pncconf.glade:60652 +#: src/emc/usr_intf/pncconf/pncconf.glade:60672 +#: src/emc/usr_intf/pncconf/pncconf.glade:60692 +#: src/emc/usr_intf/pncconf/pncconf.glade:60712 +#: src/emc/usr_intf/pncconf/pncconf.glade:60732 +#: src/emc/usr_intf/pncconf/pncconf.glade:60752 +#: src/emc/usr_intf/pncconf/pncconf.glade:60772 +msgid "" +"GPIO Input\n" +"GPIO Output\n" +"GPIO O Drain\n" +"Encoder\n" +"PWM\n" +"StepGen\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9547 -#: src/emc/usr_intf/pncconf/pncconf.glade:12839 -#: src/emc/usr_intf/pncconf/pncconf.glade:18096 -#: src/emc/usr_intf/pncconf/pncconf.glade:20201 -#: src/emc/usr_intf/pncconf/pncconf.glade:21518 -#: src/emc/usr_intf/pncconf/pncconf.glade:23314 -#: src/emc/usr_intf/pncconf/pncconf.glade:25110 -#: emc/usr_intf/pncconf/pncconf.glade:3737 -#: emc/usr_intf/pncconf/pncconf.glade:5666 -#: emc/usr_intf/pncconf/pncconf.glade:8251 -#: emc/usr_intf/pncconf/pncconf.glade:10940 -msgid "27:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8913 +#: src/emc/usr_intf/pncconf/pncconf.glade:13730 +#: src/emc/usr_intf/pncconf/pncconf.glade:18936 +#: src/emc/usr_intf/pncconf/pncconf.glade:20738 +#: src/emc/usr_intf/pncconf/pncconf.glade:21031 +#: src/emc/usr_intf/pncconf/pncconf.glade:22827 +#: src/emc/usr_intf/pncconf/pncconf.glade:24623 +msgid " 1:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9563 -#: src/emc/usr_intf/pncconf/pncconf.glade:12823 -#: src/emc/usr_intf/pncconf/pncconf.glade:18080 -#: src/emc/usr_intf/pncconf/pncconf.glade:20185 -#: src/emc/usr_intf/pncconf/pncconf.glade:21534 -#: src/emc/usr_intf/pncconf/pncconf.glade:23330 -#: src/emc/usr_intf/pncconf/pncconf.glade:25126 -#: emc/usr_intf/pncconf/pncconf.glade:3721 -#: emc/usr_intf/pncconf/pncconf.glade:5682 -#: emc/usr_intf/pncconf/pncconf.glade:8267 -#: emc/usr_intf/pncconf/pncconf.glade:10956 -msgid "25:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8927 +#: src/emc/usr_intf/pncconf/pncconf.glade:13716 +#: src/emc/usr_intf/pncconf/pncconf.glade:18922 +#: src/emc/usr_intf/pncconf/pncconf.glade:20724 +#: src/emc/usr_intf/pncconf/pncconf.glade:21045 +#: src/emc/usr_intf/pncconf/pncconf.glade:22841 +#: src/emc/usr_intf/pncconf/pncconf.glade:24637 +msgid " 3:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9936 -#: src/emc/usr_intf/pncconf/pncconf.glade:12450 -#: src/emc/usr_intf/pncconf/pncconf.glade:17707 -#: src/emc/usr_intf/pncconf/pncconf.glade:19924 -#: src/emc/usr_intf/pncconf/pncconf.glade:21795 -#: src/emc/usr_intf/pncconf/pncconf.glade:23591 -#: src/emc/usr_intf/pncconf/pncconf.glade:25387 -#: emc/usr_intf/pncconf/pncconf.glade:3348 -#: emc/usr_intf/pncconf/pncconf.glade:6055 -#: emc/usr_intf/pncconf/pncconf.glade:8640 -#: emc/usr_intf/pncconf/pncconf.glade:11329 -msgid "33:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8941 +#: src/emc/usr_intf/pncconf/pncconf.glade:13702 +#: src/emc/usr_intf/pncconf/pncconf.glade:18908 +#: src/emc/usr_intf/pncconf/pncconf.glade:20710 +#: src/emc/usr_intf/pncconf/pncconf.glade:21059 +#: src/emc/usr_intf/pncconf/pncconf.glade:22855 +#: src/emc/usr_intf/pncconf/pncconf.glade:24651 +msgid " 5:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9952 -#: src/emc/usr_intf/pncconf/pncconf.glade:12434 -#: src/emc/usr_intf/pncconf/pncconf.glade:17691 -#: src/emc/usr_intf/pncconf/pncconf.glade:19908 -#: src/emc/usr_intf/pncconf/pncconf.glade:21811 -#: src/emc/usr_intf/pncconf/pncconf.glade:23607 -#: src/emc/usr_intf/pncconf/pncconf.glade:25403 -#: emc/usr_intf/pncconf/pncconf.glade:3332 -#: emc/usr_intf/pncconf/pncconf.glade:6071 -#: emc/usr_intf/pncconf/pncconf.glade:8656 -#: emc/usr_intf/pncconf/pncconf.glade:11345 -msgid "35:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8955 +#: src/emc/usr_intf/pncconf/pncconf.glade:13688 +#: src/emc/usr_intf/pncconf/pncconf.glade:18894 +#: src/emc/usr_intf/pncconf/pncconf.glade:20696 +#: src/emc/usr_intf/pncconf/pncconf.glade:21073 +#: src/emc/usr_intf/pncconf/pncconf.glade:22869 +#: src/emc/usr_intf/pncconf/pncconf.glade:24665 +msgid " 7:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9968 -#: src/emc/usr_intf/pncconf/pncconf.glade:12418 -#: src/emc/usr_intf/pncconf/pncconf.glade:17675 -#: src/emc/usr_intf/pncconf/pncconf.glade:19892 -#: src/emc/usr_intf/pncconf/pncconf.glade:21827 -#: src/emc/usr_intf/pncconf/pncconf.glade:23623 -#: src/emc/usr_intf/pncconf/pncconf.glade:25419 -#: emc/usr_intf/pncconf/pncconf.glade:3316 -#: emc/usr_intf/pncconf/pncconf.glade:6087 -#: emc/usr_intf/pncconf/pncconf.glade:8672 -#: emc/usr_intf/pncconf/pncconf.glade:11361 -msgid "37:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8969 +#: src/emc/usr_intf/pncconf/pncconf.glade:13674 +#: src/emc/usr_intf/pncconf/pncconf.glade:18880 +#: src/emc/usr_intf/pncconf/pncconf.glade:20682 +#: src/emc/usr_intf/pncconf/pncconf.glade:21087 +#: src/emc/usr_intf/pncconf/pncconf.glade:22883 +#: src/emc/usr_intf/pncconf/pncconf.glade:24679 +msgid " 9:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9984 -#: src/emc/usr_intf/pncconf/pncconf.glade:12402 -#: src/emc/usr_intf/pncconf/pncconf.glade:17659 -#: src/emc/usr_intf/pncconf/pncconf.glade:19876 -#: src/emc/usr_intf/pncconf/pncconf.glade:21843 -#: src/emc/usr_intf/pncconf/pncconf.glade:23639 -#: src/emc/usr_intf/pncconf/pncconf.glade:25435 -#: emc/usr_intf/pncconf/pncconf.glade:3300 -#: emc/usr_intf/pncconf/pncconf.glade:6103 -#: emc/usr_intf/pncconf/pncconf.glade:8688 -#: emc/usr_intf/pncconf/pncconf.glade:11377 -msgid "39:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8983 +#: src/emc/usr_intf/pncconf/pncconf.glade:13660 +#: src/emc/usr_intf/pncconf/pncconf.glade:18866 +#: src/emc/usr_intf/pncconf/pncconf.glade:20668 +#: src/emc/usr_intf/pncconf/pncconf.glade:21101 +#: src/emc/usr_intf/pncconf/pncconf.glade:22897 +#: src/emc/usr_intf/pncconf/pncconf.glade:24693 +msgid "11:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10000 -#: src/emc/usr_intf/pncconf/pncconf.glade:12386 -#: src/emc/usr_intf/pncconf/pncconf.glade:17643 -#: src/emc/usr_intf/pncconf/pncconf.glade:19860 -#: src/emc/usr_intf/pncconf/pncconf.glade:21859 -#: src/emc/usr_intf/pncconf/pncconf.glade:23655 -#: src/emc/usr_intf/pncconf/pncconf.glade:25451 -#: emc/usr_intf/pncconf/pncconf.glade:3284 -#: emc/usr_intf/pncconf/pncconf.glade:6119 -#: emc/usr_intf/pncconf/pncconf.glade:8704 -#: emc/usr_intf/pncconf/pncconf.glade:11393 -msgid "41:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8997 +#: src/emc/usr_intf/pncconf/pncconf.glade:13646 +#: src/emc/usr_intf/pncconf/pncconf.glade:18852 +#: src/emc/usr_intf/pncconf/pncconf.glade:20654 +#: src/emc/usr_intf/pncconf/pncconf.glade:21115 +#: src/emc/usr_intf/pncconf/pncconf.glade:22911 +#: src/emc/usr_intf/pncconf/pncconf.glade:24707 +msgid "13:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10016 -#: src/emc/usr_intf/pncconf/pncconf.glade:12370 -#: src/emc/usr_intf/pncconf/pncconf.glade:17627 -#: src/emc/usr_intf/pncconf/pncconf.glade:19844 -#: src/emc/usr_intf/pncconf/pncconf.glade:21875 -#: src/emc/usr_intf/pncconf/pncconf.glade:23671 -#: src/emc/usr_intf/pncconf/pncconf.glade:25467 -#: emc/usr_intf/pncconf/pncconf.glade:3268 -#: emc/usr_intf/pncconf/pncconf.glade:6135 -#: emc/usr_intf/pncconf/pncconf.glade:8720 -#: emc/usr_intf/pncconf/pncconf.glade:11409 -msgid "43:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9011 +#: src/emc/usr_intf/pncconf/pncconf.glade:13632 +#: src/emc/usr_intf/pncconf/pncconf.glade:18838 +#: src/emc/usr_intf/pncconf/pncconf.glade:20640 +#: src/emc/usr_intf/pncconf/pncconf.glade:21129 +#: src/emc/usr_intf/pncconf/pncconf.glade:22925 +#: src/emc/usr_intf/pncconf/pncconf.glade:24721 +msgid "15:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10032 -#: src/emc/usr_intf/pncconf/pncconf.glade:12354 -#: src/emc/usr_intf/pncconf/pncconf.glade:17611 -#: src/emc/usr_intf/pncconf/pncconf.glade:19828 -#: src/emc/usr_intf/pncconf/pncconf.glade:21891 -#: src/emc/usr_intf/pncconf/pncconf.glade:23687 -#: src/emc/usr_intf/pncconf/pncconf.glade:25483 -#: emc/usr_intf/pncconf/pncconf.glade:3252 -#: emc/usr_intf/pncconf/pncconf.glade:6151 -#: emc/usr_intf/pncconf/pncconf.glade:8736 -#: emc/usr_intf/pncconf/pncconf.glade:11425 -msgid "45:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9025 +#: src/emc/usr_intf/pncconf/pncconf.glade:13618 +#: src/emc/usr_intf/pncconf/pncconf.glade:18824 +#: src/emc/usr_intf/pncconf/pncconf.glade:20626 +#: src/emc/usr_intf/pncconf/pncconf.glade:21143 +#: src/emc/usr_intf/pncconf/pncconf.glade:22939 +#: src/emc/usr_intf/pncconf/pncconf.glade:24735 +msgid "17:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10099 -#: src/emc/usr_intf/pncconf/pncconf.glade:12287 -#: src/emc/usr_intf/pncconf/pncconf.glade:17544 -#: src/emc/usr_intf/pncconf/pncconf.glade:19777 -#: src/emc/usr_intf/pncconf/pncconf.glade:21942 -#: src/emc/usr_intf/pncconf/pncconf.glade:23738 -#: src/emc/usr_intf/pncconf/pncconf.glade:25534 -#: emc/usr_intf/pncconf/pncconf.glade:3185 -#: emc/usr_intf/pncconf/pncconf.glade:6218 -#: emc/usr_intf/pncconf/pncconf.glade:8803 -#: emc/usr_intf/pncconf/pncconf.glade:11492 -msgid "47:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9039 +#: src/emc/usr_intf/pncconf/pncconf.glade:13604 +#: src/emc/usr_intf/pncconf/pncconf.glade:18810 +#: src/emc/usr_intf/pncconf/pncconf.glade:20612 +#: src/emc/usr_intf/pncconf/pncconf.glade:21157 +#: src/emc/usr_intf/pncconf/pncconf.glade:22953 +#: src/emc/usr_intf/pncconf/pncconf.glade:24749 +msgid "19:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10822 -#: src/emc/usr_intf/pncconf/pncconf.glade:11077 -#: src/emc/usr_intf/pncconf/pncconf.glade:11311 -#: src/emc/usr_intf/pncconf/pncconf.glade:11567 -#: src/emc/usr_intf/pncconf/pncconf.glade:13924 -#: src/emc/usr_intf/pncconf/pncconf.glade:14171 -#: src/emc/usr_intf/pncconf/pncconf.glade:16516 -#: src/emc/usr_intf/pncconf/pncconf.glade:16772 -#: src/emc/usr_intf/pncconf/pncconf.glade:19129 -#: src/emc/usr_intf/pncconf/pncconf.glade:19379 -#: src/emc/usr_intf/pncconf/pncconf.glade:22343 -#: src/emc/usr_intf/pncconf/pncconf.glade:22592 -#: src/emc/usr_intf/pncconf/pncconf.glade:24139 -#: src/emc/usr_intf/pncconf/pncconf.glade:24388 -#: src/emc/usr_intf/pncconf/pncconf.glade:25935 -#: src/emc/usr_intf/pncconf/pncconf.glade:26184 -#: src/emc/usr_intf/pncconf/pncconf.glade:28515 -#: src/emc/usr_intf/pncconf/pncconf.glade:28761 -#: src/emc/usr_intf/pncconf/pncconf.glade:28892 -#: src/emc/usr_intf/pncconf/pncconf.glade:29139 -#: src/emc/usr_intf/pncconf/pncconf.glade:33079 -#: src/emc/usr_intf/pncconf/pncconf.glade:33250 -#: src/emc/usr_intf/pncconf/pncconf.glade:33497 -#: src/emc/usr_intf/pncconf/pncconf.glade:38012 -#: src/emc/usr_intf/pncconf/pncconf.glade:38258 -#: src/emc/usr_intf/pncconf/pncconf.glade:38507 -#: src/emc/usr_intf/pncconf/pncconf.glade:42359 -#: src/emc/usr_intf/pncconf/pncconf.glade:42605 -#: src/emc/usr_intf/pncconf/pncconf.glade:42736 -#: src/emc/usr_intf/pncconf/pncconf.glade:42983 -#: src/emc/usr_intf/pncconf/pncconf.glade:46936 -#: src/emc/usr_intf/pncconf/pncconf.glade:49282 -#: src/emc/usr_intf/pncconf/pncconf.glade:49528 -#: src/emc/usr_intf/pncconf/pncconf.glade:49659 -#: src/emc/usr_intf/pncconf/pncconf.glade:49906 -#: src/emc/usr_intf/pncconf/pncconf.glade:53859 -#: emc/usr_intf/pncconf/pncconf.glade:2209 -#: emc/usr_intf/pncconf/pncconf.glade:2465 -#: emc/usr_intf/pncconf/pncconf.glade:6993 -#: emc/usr_intf/pncconf/pncconf.glade:7249 -#: emc/usr_intf/pncconf/pncconf.glade:9630 -#: emc/usr_intf/pncconf/pncconf.glade:9886 -#: emc/usr_intf/pncconf/pncconf.glade:12267 -#: emc/usr_intf/pncconf/pncconf.glade:12523 -#, fuzzy -msgid "Pin Type" -msgstr "Positionierungs-Info" +#: src/emc/usr_intf/pncconf/pncconf.glade:9053 +#: src/emc/usr_intf/pncconf/pncconf.glade:13590 +#: src/emc/usr_intf/pncconf/pncconf.glade:18796 +#: src/emc/usr_intf/pncconf/pncconf.glade:20598 +#: src/emc/usr_intf/pncconf/pncconf.glade:21171 +#: src/emc/usr_intf/pncconf/pncconf.glade:22967 +#: src/emc/usr_intf/pncconf/pncconf.glade:24763 +msgid "21:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10835 -#: src/emc/usr_intf/pncconf/pncconf.glade:11553 -#: src/emc/usr_intf/pncconf/pncconf.glade:16758 -#: src/emc/usr_intf/pncconf/pncconf.glade:19365 -#: src/emc/usr_intf/pncconf/pncconf.glade:22356 -#: src/emc/usr_intf/pncconf/pncconf.glade:24152 -#: src/emc/usr_intf/pncconf/pncconf.glade:25948 -#: emc/usr_intf/pncconf/pncconf.glade:2451 -#: emc/usr_intf/pncconf/pncconf.glade:7006 -#: emc/usr_intf/pncconf/pncconf.glade:9643 -#: emc/usr_intf/pncconf/pncconf.glade:12280 +#: src/emc/usr_intf/pncconf/pncconf.glade:9067 +#: src/emc/usr_intf/pncconf/pncconf.glade:13576 +#: src/emc/usr_intf/pncconf/pncconf.glade:18782 +#: src/emc/usr_intf/pncconf/pncconf.glade:20584 +#: src/emc/usr_intf/pncconf/pncconf.glade:21185 +#: src/emc/usr_intf/pncconf/pncconf.glade:22981 +#: src/emc/usr_intf/pncconf/pncconf.glade:24777 msgid "23:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10849 -#: src/emc/usr_intf/pncconf/pncconf.glade:11539 -#: src/emc/usr_intf/pncconf/pncconf.glade:16744 -#: src/emc/usr_intf/pncconf/pncconf.glade:19351 -#: src/emc/usr_intf/pncconf/pncconf.glade:22370 -#: src/emc/usr_intf/pncconf/pncconf.glade:24166 -#: src/emc/usr_intf/pncconf/pncconf.glade:25962 -#: emc/usr_intf/pncconf/pncconf.glade:2437 -#: emc/usr_intf/pncconf/pncconf.glade:7020 -#: emc/usr_intf/pncconf/pncconf.glade:9657 -#: emc/usr_intf/pncconf/pncconf.glade:12294 -msgid "21:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9801 +#: src/emc/usr_intf/pncconf/pncconf.glade:12840 +#: src/emc/usr_intf/pncconf/pncconf.glade:17994 +#: src/emc/usr_intf/pncconf/pncconf.glade:20170 +#: src/emc/usr_intf/pncconf/pncconf.glade:21597 +#: src/emc/usr_intf/pncconf/pncconf.glade:23393 +#: src/emc/usr_intf/pncconf/pncconf.glade:25189 +msgid "47:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10863 -#: src/emc/usr_intf/pncconf/pncconf.glade:11525 -#: src/emc/usr_intf/pncconf/pncconf.glade:16730 -#: src/emc/usr_intf/pncconf/pncconf.glade:19337 -#: src/emc/usr_intf/pncconf/pncconf.glade:22384 -#: src/emc/usr_intf/pncconf/pncconf.glade:24180 -#: src/emc/usr_intf/pncconf/pncconf.glade:25976 -#: emc/usr_intf/pncconf/pncconf.glade:2423 -#: emc/usr_intf/pncconf/pncconf.glade:7034 -#: emc/usr_intf/pncconf/pncconf.glade:9671 -#: emc/usr_intf/pncconf/pncconf.glade:12308 -msgid "19:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9868 +#: src/emc/usr_intf/pncconf/pncconf.glade:12773 +#: src/emc/usr_intf/pncconf/pncconf.glade:17927 +#: src/emc/usr_intf/pncconf/pncconf.glade:20119 +#: src/emc/usr_intf/pncconf/pncconf.glade:21648 +#: src/emc/usr_intf/pncconf/pncconf.glade:23444 +#: src/emc/usr_intf/pncconf/pncconf.glade:25240 +msgid "45:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10877 -#: src/emc/usr_intf/pncconf/pncconf.glade:11511 -#: src/emc/usr_intf/pncconf/pncconf.glade:16716 -#: src/emc/usr_intf/pncconf/pncconf.glade:19323 -#: src/emc/usr_intf/pncconf/pncconf.glade:22398 -#: src/emc/usr_intf/pncconf/pncconf.glade:24194 -#: src/emc/usr_intf/pncconf/pncconf.glade:25990 -#: emc/usr_intf/pncconf/pncconf.glade:2409 -#: emc/usr_intf/pncconf/pncconf.glade:7048 -#: emc/usr_intf/pncconf/pncconf.glade:9685 -#: emc/usr_intf/pncconf/pncconf.glade:12322 -msgid "17:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9884 +#: src/emc/usr_intf/pncconf/pncconf.glade:12757 +#: src/emc/usr_intf/pncconf/pncconf.glade:17911 +#: src/emc/usr_intf/pncconf/pncconf.glade:20103 +#: src/emc/usr_intf/pncconf/pncconf.glade:21664 +#: src/emc/usr_intf/pncconf/pncconf.glade:23460 +#: src/emc/usr_intf/pncconf/pncconf.glade:25256 +msgid "43:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11497 -#: src/emc/usr_intf/pncconf/pncconf.glade:16702 -#: src/emc/usr_intf/pncconf/pncconf.glade:19309 -#: src/emc/usr_intf/pncconf/pncconf.glade:22412 -#: src/emc/usr_intf/pncconf/pncconf.glade:24208 -#: src/emc/usr_intf/pncconf/pncconf.glade:26004 -#: emc/usr_intf/pncconf/pncconf.glade:2395 -#: emc/usr_intf/pncconf/pncconf.glade:7062 -#: emc/usr_intf/pncconf/pncconf.glade:9699 -#: emc/usr_intf/pncconf/pncconf.glade:12336 -msgid "15:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9900 +#: src/emc/usr_intf/pncconf/pncconf.glade:12741 +#: src/emc/usr_intf/pncconf/pncconf.glade:17895 +#: src/emc/usr_intf/pncconf/pncconf.glade:20087 +#: src/emc/usr_intf/pncconf/pncconf.glade:21680 +#: src/emc/usr_intf/pncconf/pncconf.glade:23476 +#: src/emc/usr_intf/pncconf/pncconf.glade:25272 +msgid "41:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10905 -#: src/emc/usr_intf/pncconf/pncconf.glade:11483 -#: src/emc/usr_intf/pncconf/pncconf.glade:16688 -#: src/emc/usr_intf/pncconf/pncconf.glade:19295 -#: src/emc/usr_intf/pncconf/pncconf.glade:22426 -#: src/emc/usr_intf/pncconf/pncconf.glade:24222 -#: src/emc/usr_intf/pncconf/pncconf.glade:26018 -#: emc/usr_intf/pncconf/pncconf.glade:2381 -#: emc/usr_intf/pncconf/pncconf.glade:7076 -#: emc/usr_intf/pncconf/pncconf.glade:9713 -#: emc/usr_intf/pncconf/pncconf.glade:12350 -msgid "13:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9916 +#: src/emc/usr_intf/pncconf/pncconf.glade:12725 +#: src/emc/usr_intf/pncconf/pncconf.glade:17879 +#: src/emc/usr_intf/pncconf/pncconf.glade:20071 +#: src/emc/usr_intf/pncconf/pncconf.glade:21696 +#: src/emc/usr_intf/pncconf/pncconf.glade:23492 +#: src/emc/usr_intf/pncconf/pncconf.glade:25288 +msgid "39:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10919 -#: src/emc/usr_intf/pncconf/pncconf.glade:11469 -#: src/emc/usr_intf/pncconf/pncconf.glade:16674 -#: src/emc/usr_intf/pncconf/pncconf.glade:19281 -#: src/emc/usr_intf/pncconf/pncconf.glade:22440 -#: src/emc/usr_intf/pncconf/pncconf.glade:24236 -#: src/emc/usr_intf/pncconf/pncconf.glade:26032 -#: emc/usr_intf/pncconf/pncconf.glade:2367 -#: emc/usr_intf/pncconf/pncconf.glade:7090 -#: emc/usr_intf/pncconf/pncconf.glade:9727 -#: emc/usr_intf/pncconf/pncconf.glade:12364 -msgid "11:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9932 +#: src/emc/usr_intf/pncconf/pncconf.glade:12709 +#: src/emc/usr_intf/pncconf/pncconf.glade:17863 +#: src/emc/usr_intf/pncconf/pncconf.glade:20055 +#: src/emc/usr_intf/pncconf/pncconf.glade:21712 +#: src/emc/usr_intf/pncconf/pncconf.glade:23508 +#: src/emc/usr_intf/pncconf/pncconf.glade:25304 +msgid "37:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10933 -#: src/emc/usr_intf/pncconf/pncconf.glade:11455 -#: src/emc/usr_intf/pncconf/pncconf.glade:16660 -#: src/emc/usr_intf/pncconf/pncconf.glade:19267 -#: src/emc/usr_intf/pncconf/pncconf.glade:22454 -#: src/emc/usr_intf/pncconf/pncconf.glade:24250 -#: src/emc/usr_intf/pncconf/pncconf.glade:26046 -#: emc/usr_intf/pncconf/pncconf.glade:2353 -#: emc/usr_intf/pncconf/pncconf.glade:7104 -#: emc/usr_intf/pncconf/pncconf.glade:9741 -#: emc/usr_intf/pncconf/pncconf.glade:12378 -msgid " 9:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9948 +#: src/emc/usr_intf/pncconf/pncconf.glade:12693 +#: src/emc/usr_intf/pncconf/pncconf.glade:17847 +#: src/emc/usr_intf/pncconf/pncconf.glade:20039 +#: src/emc/usr_intf/pncconf/pncconf.glade:21728 +#: src/emc/usr_intf/pncconf/pncconf.glade:23524 +#: src/emc/usr_intf/pncconf/pncconf.glade:25320 +msgid "35:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10947 -#: src/emc/usr_intf/pncconf/pncconf.glade:11441 -#: src/emc/usr_intf/pncconf/pncconf.glade:16646 -#: src/emc/usr_intf/pncconf/pncconf.glade:19253 -#: src/emc/usr_intf/pncconf/pncconf.glade:22468 -#: src/emc/usr_intf/pncconf/pncconf.glade:24264 -#: src/emc/usr_intf/pncconf/pncconf.glade:26060 -#: emc/usr_intf/pncconf/pncconf.glade:2339 -#: emc/usr_intf/pncconf/pncconf.glade:7118 -#: emc/usr_intf/pncconf/pncconf.glade:9755 -#: emc/usr_intf/pncconf/pncconf.glade:12392 -msgid " 7:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9964 +#: src/emc/usr_intf/pncconf/pncconf.glade:12677 +#: src/emc/usr_intf/pncconf/pncconf.glade:17831 +#: src/emc/usr_intf/pncconf/pncconf.glade:20023 +#: src/emc/usr_intf/pncconf/pncconf.glade:21744 +#: src/emc/usr_intf/pncconf/pncconf.glade:23540 +#: src/emc/usr_intf/pncconf/pncconf.glade:25336 +msgid "33:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10961 -#: src/emc/usr_intf/pncconf/pncconf.glade:11427 -#: src/emc/usr_intf/pncconf/pncconf.glade:16632 -#: src/emc/usr_intf/pncconf/pncconf.glade:19239 -#: src/emc/usr_intf/pncconf/pncconf.glade:22482 -#: src/emc/usr_intf/pncconf/pncconf.glade:24278 -#: src/emc/usr_intf/pncconf/pncconf.glade:26074 -#: emc/usr_intf/pncconf/pncconf.glade:2325 -#: emc/usr_intf/pncconf/pncconf.glade:7132 -#: emc/usr_intf/pncconf/pncconf.glade:9769 -#: emc/usr_intf/pncconf/pncconf.glade:12406 -msgid " 5:" +#: src/emc/usr_intf/pncconf/pncconf.glade:10337 +#: src/emc/usr_intf/pncconf/pncconf.glade:12304 +#: src/emc/usr_intf/pncconf/pncconf.glade:17458 +#: src/emc/usr_intf/pncconf/pncconf.glade:19762 +#: src/emc/usr_intf/pncconf/pncconf.glade:22005 +#: src/emc/usr_intf/pncconf/pncconf.glade:23801 +#: src/emc/usr_intf/pncconf/pncconf.glade:25597 +msgid "25:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10975 -#: src/emc/usr_intf/pncconf/pncconf.glade:11413 -#: src/emc/usr_intf/pncconf/pncconf.glade:16618 -#: src/emc/usr_intf/pncconf/pncconf.glade:19225 -#: src/emc/usr_intf/pncconf/pncconf.glade:22496 -#: src/emc/usr_intf/pncconf/pncconf.glade:24292 -#: src/emc/usr_intf/pncconf/pncconf.glade:26088 -#: emc/usr_intf/pncconf/pncconf.glade:2311 -#: emc/usr_intf/pncconf/pncconf.glade:7146 -#: emc/usr_intf/pncconf/pncconf.glade:9783 -#: emc/usr_intf/pncconf/pncconf.glade:12420 -msgid " 3:" +#: src/emc/usr_intf/pncconf/pncconf.glade:10353 +#: src/emc/usr_intf/pncconf/pncconf.glade:12288 +#: src/emc/usr_intf/pncconf/pncconf.glade:17442 +#: src/emc/usr_intf/pncconf/pncconf.glade:19746 +#: src/emc/usr_intf/pncconf/pncconf.glade:22021 +#: src/emc/usr_intf/pncconf/pncconf.glade:23817 +#: src/emc/usr_intf/pncconf/pncconf.glade:25613 +msgid "27:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10989 -#: src/emc/usr_intf/pncconf/pncconf.glade:11399 -#: src/emc/usr_intf/pncconf/pncconf.glade:16604 -#: src/emc/usr_intf/pncconf/pncconf.glade:19211 -#: src/emc/usr_intf/pncconf/pncconf.glade:22510 -#: src/emc/usr_intf/pncconf/pncconf.glade:24306 -#: src/emc/usr_intf/pncconf/pncconf.glade:26102 -#: emc/usr_intf/pncconf/pncconf.glade:2297 -#: emc/usr_intf/pncconf/pncconf.glade:7160 -#: emc/usr_intf/pncconf/pncconf.glade:9797 -#: emc/usr_intf/pncconf/pncconf.glade:12434 -msgid " 1:" +#: src/emc/usr_intf/pncconf/pncconf.glade:10369 +#: src/emc/usr_intf/pncconf/pncconf.glade:12272 +#: src/emc/usr_intf/pncconf/pncconf.glade:17426 +#: src/emc/usr_intf/pncconf/pncconf.glade:19730 +#: src/emc/usr_intf/pncconf/pncconf.glade:22037 +#: src/emc/usr_intf/pncconf/pncconf.glade:23833 +#: src/emc/usr_intf/pncconf/pncconf.glade:25629 +msgid "29:" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:10385 +#: src/emc/usr_intf/pncconf/pncconf.glade:12256 +#: src/emc/usr_intf/pncconf/pncconf.glade:17410 +#: src/emc/usr_intf/pncconf/pncconf.glade:19714 +#: src/emc/usr_intf/pncconf/pncconf.glade:22053 +#: src/emc/usr_intf/pncconf/pncconf.glade:23849 +#: src/emc/usr_intf/pncconf/pncconf.glade:25645 +msgid "31:" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:10677 +#: src/emc/usr_intf/pncconf/pncconf.glade:10689 +#: src/emc/usr_intf/pncconf/pncconf.glade:11955 +#: src/emc/usr_intf/pncconf/pncconf.glade:11967 +#: src/emc/usr_intf/pncconf/pncconf.glade:14464 +#: src/emc/usr_intf/pncconf/pncconf.glade:14476 +#: src/emc/usr_intf/pncconf/pncconf.glade:17161 +#: src/emc/usr_intf/pncconf/pncconf.glade:17173 +#: src/emc/usr_intf/pncconf/pncconf.glade:19567 +#: src/emc/usr_intf/pncconf/pncconf.glade:19579 +#: src/emc/usr_intf/pncconf/pncconf.glade:22190 +#: src/emc/usr_intf/pncconf/pncconf.glade:22202 +#: src/emc/usr_intf/pncconf/pncconf.glade:23986 +#: src/emc/usr_intf/pncconf/pncconf.glade:23998 +#: src/emc/usr_intf/pncconf/pncconf.glade:25782 +#: src/emc/usr_intf/pncconf/pncconf.glade:25794 +#: src/emc/usr_intf/pncconf/pncconf.glade:28287 +#: src/emc/usr_intf/pncconf/pncconf.glade:28299 +#: src/emc/usr_intf/pncconf/pncconf.glade:29415 +#: src/emc/usr_intf/pncconf/pncconf.glade:29427 +#: src/emc/usr_intf/pncconf/pncconf.glade:32869 +#: src/emc/usr_intf/pncconf/pncconf.glade:33760 +#: src/emc/usr_intf/pncconf/pncconf.glade:33772 +#: src/emc/usr_intf/pncconf/pncconf.glade:37771 +#: src/emc/usr_intf/pncconf/pncconf.glade:37783 +#: src/emc/usr_intf/pncconf/pncconf.glade:38777 +#: src/emc/usr_intf/pncconf/pncconf.glade:38789 +#: src/emc/usr_intf/pncconf/pncconf.glade:42131 +#: src/emc/usr_intf/pncconf/pncconf.glade:42143 +#: src/emc/usr_intf/pncconf/pncconf.glade:43259 +#: src/emc/usr_intf/pncconf/pncconf.glade:43271 +#: src/emc/usr_intf/pncconf/pncconf.glade:46702 +#: src/emc/usr_intf/pncconf/pncconf.glade:46714 +#: src/emc/usr_intf/pncconf/pncconf.glade:49054 +#: src/emc/usr_intf/pncconf/pncconf.glade:49066 +#: src/emc/usr_intf/pncconf/pncconf.glade:50182 +#: src/emc/usr_intf/pncconf/pncconf.glade:50194 +#: src/emc/usr_intf/pncconf/pncconf.glade:53625 +#: src/emc/usr_intf/pncconf/pncconf.glade:53637 +#: src/emc/usr_intf/pncconf/pncconf.glade:55977 +#: src/emc/usr_intf/pncconf/pncconf.glade:55989 +#: src/emc/usr_intf/pncconf/pncconf.glade:57105 +#: src/emc/usr_intf/pncconf/pncconf.glade:57117 +#: src/emc/usr_intf/pncconf/pncconf.glade:60548 +#: src/emc/usr_intf/pncconf/pncconf.glade:60560 +msgid "function" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:11002 -#: src/emc/usr_intf/pncconf/pncconf.glade:11065 -#: src/emc/usr_intf/pncconf/pncconf.glade:11324 -#: src/emc/usr_intf/pncconf/pncconf.glade:11386 -#: src/emc/usr_intf/pncconf/pncconf.glade:13937 -#: src/emc/usr_intf/pncconf/pncconf.glade:13999 -#: src/emc/usr_intf/pncconf/pncconf.glade:16529 -#: src/emc/usr_intf/pncconf/pncconf.glade:16591 -#: src/emc/usr_intf/pncconf/pncconf.glade:19142 -#: src/emc/usr_intf/pncconf/pncconf.glade:19198 -#: src/emc/usr_intf/pncconf/pncconf.glade:22523 -#: src/emc/usr_intf/pncconf/pncconf.glade:22580 -#: src/emc/usr_intf/pncconf/pncconf.glade:24319 -#: src/emc/usr_intf/pncconf/pncconf.glade:24376 -#: src/emc/usr_intf/pncconf/pncconf.glade:26115 -#: src/emc/usr_intf/pncconf/pncconf.glade:26172 -#: src/emc/usr_intf/pncconf/pncconf.glade:28686 -#: src/emc/usr_intf/pncconf/pncconf.glade:28749 -#: src/emc/usr_intf/pncconf/pncconf.glade:28905 -#: src/emc/usr_intf/pncconf/pncconf.glade:28967 -#: src/emc/usr_intf/pncconf/pncconf.glade:33067 -#: src/emc/usr_intf/pncconf/pncconf.glade:33263 -#: src/emc/usr_intf/pncconf/pncconf.glade:33325 -#: src/emc/usr_intf/pncconf/pncconf.glade:38183 -#: src/emc/usr_intf/pncconf/pncconf.glade:38246 -#: src/emc/usr_intf/pncconf/pncconf.glade:38520 -#: src/emc/usr_intf/pncconf/pncconf.glade:42530 -#: src/emc/usr_intf/pncconf/pncconf.glade:42593 -#: src/emc/usr_intf/pncconf/pncconf.glade:42749 -#: src/emc/usr_intf/pncconf/pncconf.glade:42811 -#: src/emc/usr_intf/pncconf/pncconf.glade:46924 -#: src/emc/usr_intf/pncconf/pncconf.glade:49453 -#: src/emc/usr_intf/pncconf/pncconf.glade:49516 -#: src/emc/usr_intf/pncconf/pncconf.glade:49672 -#: src/emc/usr_intf/pncconf/pncconf.glade:49734 -#: src/emc/usr_intf/pncconf/pncconf.glade:53847 -#: emc/usr_intf/pncconf/pncconf.glade:2222 -#: emc/usr_intf/pncconf/pncconf.glade:2284 -#: emc/usr_intf/pncconf/pncconf.glade:7173 -#: emc/usr_intf/pncconf/pncconf.glade:7237 -#: emc/usr_intf/pncconf/pncconf.glade:9810 -#: emc/usr_intf/pncconf/pncconf.glade:9874 -#: emc/usr_intf/pncconf/pncconf.glade:12447 -#: emc/usr_intf/pncconf/pncconf.glade:12511 +#: src/emc/usr_intf/pncconf/pncconf.glade:10703 +#: src/emc/usr_intf/pncconf/pncconf.glade:11940 +#: src/emc/usr_intf/pncconf/pncconf.glade:14449 +#: src/emc/usr_intf/pncconf/pncconf.glade:17146 +#: src/emc/usr_intf/pncconf/pncconf.glade:19553 +#: src/emc/usr_intf/pncconf/pncconf.glade:22217 +#: src/emc/usr_intf/pncconf/pncconf.glade:24013 +#: src/emc/usr_intf/pncconf/pncconf.glade:25809 #, fuzzy -msgid "Inv" -msgstr "Invertieren" +msgid "Launch test panel" +msgstr "Latenzzeit-_Testergebnis:" -#: src/emc/usr_intf/pncconf/pncconf.glade:11198 +#: src/emc/usr_intf/pncconf/pncconf.glade:11192 +#: src/emc/usr_intf/pncconf/pncconf.glade:11204 +#: src/emc/usr_intf/pncconf/pncconf.glade:11440 +#: src/emc/usr_intf/pncconf/pncconf.glade:11454 +#: src/emc/usr_intf/pncconf/pncconf.glade:13949 +#: src/emc/usr_intf/pncconf/pncconf.glade:13963 +#: src/emc/usr_intf/pncconf/pncconf.glade:16645 +#: src/emc/usr_intf/pncconf/pncconf.glade:16659 +#: src/emc/usr_intf/pncconf/pncconf.glade:19190 +#: src/emc/usr_intf/pncconf/pncconf.glade:19204 +#: src/emc/usr_intf/pncconf/pncconf.glade:22567 +#: src/emc/usr_intf/pncconf/pncconf.glade:22579 +#: src/emc/usr_intf/pncconf/pncconf.glade:24363 +#: src/emc/usr_intf/pncconf/pncconf.glade:24375 +#: src/emc/usr_intf/pncconf/pncconf.glade:26159 +#: src/emc/usr_intf/pncconf/pncconf.glade:26171 +#: src/emc/usr_intf/pncconf/pncconf.glade:28772 +#: src/emc/usr_intf/pncconf/pncconf.glade:28784 +#: src/emc/usr_intf/pncconf/pncconf.glade:28917 +#: src/emc/usr_intf/pncconf/pncconf.glade:28931 +#: src/emc/usr_intf/pncconf/pncconf.glade:33102 +#: src/emc/usr_intf/pncconf/pncconf.glade:33275 +#: src/emc/usr_intf/pncconf/pncconf.glade:33289 +#: src/emc/usr_intf/pncconf/pncconf.glade:38269 +#: src/emc/usr_intf/pncconf/pncconf.glade:38281 +#: src/emc/usr_intf/pncconf/pncconf.glade:38532 +#: src/emc/usr_intf/pncconf/pncconf.glade:38546 +#: src/emc/usr_intf/pncconf/pncconf.glade:42616 +#: src/emc/usr_intf/pncconf/pncconf.glade:42628 +#: src/emc/usr_intf/pncconf/pncconf.glade:42761 +#: src/emc/usr_intf/pncconf/pncconf.glade:42775 +#: src/emc/usr_intf/pncconf/pncconf.glade:46947 +#: src/emc/usr_intf/pncconf/pncconf.glade:46959 +#: src/emc/usr_intf/pncconf/pncconf.glade:49539 +#: src/emc/usr_intf/pncconf/pncconf.glade:49551 +#: src/emc/usr_intf/pncconf/pncconf.glade:49684 +#: src/emc/usr_intf/pncconf/pncconf.glade:49698 +#: src/emc/usr_intf/pncconf/pncconf.glade:53870 +#: src/emc/usr_intf/pncconf/pncconf.glade:53882 +#: src/emc/usr_intf/pncconf/pncconf.glade:56462 +#: src/emc/usr_intf/pncconf/pncconf.glade:56474 +#: src/emc/usr_intf/pncconf/pncconf.glade:56607 +#: src/emc/usr_intf/pncconf/pncconf.glade:56621 +#: src/emc/usr_intf/pncconf/pncconf.glade:60793 +#: src/emc/usr_intf/pncconf/pncconf.glade:60805 +msgid "Num" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:11222 msgid "" " I/O\n" "Connector 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:13811 +#: src/emc/usr_intf/pncconf/pncconf.glade:13835 msgid "" " I/O\n" " Connector 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:14012 -#: src/emc/usr_intf/pncconf/pncconf.glade:14039 -#: src/emc/usr_intf/pncconf/pncconf.glade:14053 -#: src/emc/usr_intf/pncconf/pncconf.glade:28632 -#: src/emc/usr_intf/pncconf/pncconf.glade:28646 -#: src/emc/usr_intf/pncconf/pncconf.glade:28673 -#: src/emc/usr_intf/pncconf/pncconf.glade:28980 -#: src/emc/usr_intf/pncconf/pncconf.glade:29007 -#: src/emc/usr_intf/pncconf/pncconf.glade:29021 -#: src/emc/usr_intf/pncconf/pncconf.glade:32951 -#: src/emc/usr_intf/pncconf/pncconf.glade:32965 -#: src/emc/usr_intf/pncconf/pncconf.glade:32992 -#: src/emc/usr_intf/pncconf/pncconf.glade:33338 -#: src/emc/usr_intf/pncconf/pncconf.glade:33365 -#: src/emc/usr_intf/pncconf/pncconf.glade:33379 -#: src/emc/usr_intf/pncconf/pncconf.glade:38129 -#: src/emc/usr_intf/pncconf/pncconf.glade:38143 -#: src/emc/usr_intf/pncconf/pncconf.glade:38170 -#: src/emc/usr_intf/pncconf/pncconf.glade:38594 -#: src/emc/usr_intf/pncconf/pncconf.glade:38621 -#: src/emc/usr_intf/pncconf/pncconf.glade:38635 -#: src/emc/usr_intf/pncconf/pncconf.glade:42476 -#: src/emc/usr_intf/pncconf/pncconf.glade:42490 -#: src/emc/usr_intf/pncconf/pncconf.glade:42517 -#: src/emc/usr_intf/pncconf/pncconf.glade:42824 -#: src/emc/usr_intf/pncconf/pncconf.glade:42851 -#: src/emc/usr_intf/pncconf/pncconf.glade:42865 -#: src/emc/usr_intf/pncconf/pncconf.glade:46808 -#: src/emc/usr_intf/pncconf/pncconf.glade:46822 -#: src/emc/usr_intf/pncconf/pncconf.glade:46849 -#: src/emc/usr_intf/pncconf/pncconf.glade:49399 -#: src/emc/usr_intf/pncconf/pncconf.glade:49413 -#: src/emc/usr_intf/pncconf/pncconf.glade:49440 -#: src/emc/usr_intf/pncconf/pncconf.glade:49747 -#: src/emc/usr_intf/pncconf/pncconf.glade:49774 -#: src/emc/usr_intf/pncconf/pncconf.glade:49788 -#: src/emc/usr_intf/pncconf/pncconf.glade:53731 -#: src/emc/usr_intf/pncconf/pncconf.glade:53745 -#: src/emc/usr_intf/pncconf/pncconf.glade:53772 +#: src/emc/usr_intf/pncconf/pncconf.glade:16281 +#: src/emc/usr_intf/pncconf/pncconf.glade:16295 +#: src/emc/usr_intf/pncconf/pncconf.glade:16322 +#: src/emc/usr_intf/pncconf/pncconf.glade:26441 +#: src/emc/usr_intf/pncconf/pncconf.glade:26468 +#: src/emc/usr_intf/pncconf/pncconf.glade:26482 +#: src/emc/usr_intf/pncconf/pncconf.glade:31232 +#: src/emc/usr_intf/pncconf/pncconf.glade:31246 +#: src/emc/usr_intf/pncconf/pncconf.glade:31273 +#: src/emc/usr_intf/pncconf/pncconf.glade:31708 +#: src/emc/usr_intf/pncconf/pncconf.glade:31735 +#: src/emc/usr_intf/pncconf/pncconf.glade:31749 +#: src/emc/usr_intf/pncconf/pncconf.glade:35577 +#: src/emc/usr_intf/pncconf/pncconf.glade:35591 +#: src/emc/usr_intf/pncconf/pncconf.glade:35618 +#: src/emc/usr_intf/pncconf/pncconf.glade:35925 +#: src/emc/usr_intf/pncconf/pncconf.glade:35952 +#: src/emc/usr_intf/pncconf/pncconf.glade:35966 +#: src/emc/usr_intf/pncconf/pncconf.glade:39909 +#: src/emc/usr_intf/pncconf/pncconf.glade:39923 +#: src/emc/usr_intf/pncconf/pncconf.glade:39950 +#: src/emc/usr_intf/pncconf/pncconf.glade:40285 +#: src/emc/usr_intf/pncconf/pncconf.glade:40312 +#: src/emc/usr_intf/pncconf/pncconf.glade:40326 +#: src/emc/usr_intf/pncconf/pncconf.glade:45076 +#: src/emc/usr_intf/pncconf/pncconf.glade:45090 +#: src/emc/usr_intf/pncconf/pncconf.glade:45117 +#: src/emc/usr_intf/pncconf/pncconf.glade:45541 +#: src/emc/usr_intf/pncconf/pncconf.glade:45568 +#: src/emc/usr_intf/pncconf/pncconf.glade:45582 +#: src/emc/usr_intf/pncconf/pncconf.glade:47208 +#: src/emc/usr_intf/pncconf/pncconf.glade:47235 +#: src/emc/usr_intf/pncconf/pncconf.glade:47249 +#: src/emc/usr_intf/pncconf/pncconf.glade:51999 +#: src/emc/usr_intf/pncconf/pncconf.glade:52013 +#: src/emc/usr_intf/pncconf/pncconf.glade:52040 +#: src/emc/usr_intf/pncconf/pncconf.glade:52464 +#: src/emc/usr_intf/pncconf/pncconf.glade:52491 +#: src/emc/usr_intf/pncconf/pncconf.glade:52505 +#: src/emc/usr_intf/pncconf/pncconf.glade:54131 +#: src/emc/usr_intf/pncconf/pncconf.glade:54158 +#: src/emc/usr_intf/pncconf/pncconf.glade:54172 +#: src/emc/usr_intf/pncconf/pncconf.glade:58922 +#: src/emc/usr_intf/pncconf/pncconf.glade:58936 +#: src/emc/usr_intf/pncconf/pncconf.glade:58963 +#: src/emc/usr_intf/pncconf/pncconf.glade:59387 +#: src/emc/usr_intf/pncconf/pncconf.glade:59414 +#: src/emc/usr_intf/pncconf/pncconf.glade:59428 msgid " " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:16403 +#: src/emc/usr_intf/pncconf/pncconf.glade:16427 msgid "" " I/O\n" " Connector 4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:19017 +#: src/emc/usr_intf/pncconf/pncconf.glade:19041 msgid "" " I/O\n" " Connector 5" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:20813 +#: src/emc/usr_intf/pncconf/pncconf.glade:20837 msgid "" " I/O\n" "Connector 6" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:22609 +#: src/emc/usr_intf/pncconf/pncconf.glade:22633 msgid "" " I/O\n" "Connector 7" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:24405 +#: src/emc/usr_intf/pncconf/pncconf.glade:24429 msgid "" " I/O\n" "Connector 8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:26201 +#: src/emc/usr_intf/pncconf/pncconf.glade:26225 msgid "" " I/O\n" " Connector 9" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:28775 -#: src/emc/usr_intf/pncconf/pncconf.glade:35696 -#: src/emc/usr_intf/pncconf/pncconf.glade:42619 -#: src/emc/usr_intf/pncconf/pncconf.glade:49542 -msgid "page 1" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:31354 -#: src/emc/usr_intf/pncconf/pncconf.glade:38275 -#: src/emc/usr_intf/pncconf/pncconf.glade:45198 -#: src/emc/usr_intf/pncconf/pncconf.glade:52121 +#: src/emc/usr_intf/pncconf/pncconf.glade:31378 +#: src/emc/usr_intf/pncconf/pncconf.glade:38299 +#: src/emc/usr_intf/pncconf/pncconf.glade:45222 +#: src/emc/usr_intf/pncconf/pncconf.glade:52145 +#: src/emc/usr_intf/pncconf/pncconf.glade:59068 msgid "page 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:33107 -#: src/emc/usr_intf/pncconf/pncconf.glade:40030 -#: src/emc/usr_intf/pncconf/pncconf.glade:46953 -#: src/emc/usr_intf/pncconf/pncconf.glade:53876 +#: src/emc/usr_intf/pncconf/pncconf.glade:33131 +#: src/emc/usr_intf/pncconf/pncconf.glade:40054 +#: src/emc/usr_intf/pncconf/pncconf.glade:46977 +#: src/emc/usr_intf/pncconf/pncconf.glade:53900 +#: src/emc/usr_intf/pncconf/pncconf.glade:60823 msgid "page 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:33123 +#: src/emc/usr_intf/pncconf/pncconf.glade:33147 msgid "Smart Serial 0" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:40046 +#: src/emc/usr_intf/pncconf/pncconf.glade:40070 msgid "Smart Serial 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:46969 +#: src/emc/usr_intf/pncconf/pncconf.glade:46993 msgid "Smart Serial 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53892 +#: src/emc/usr_intf/pncconf/pncconf.glade:53916 msgid "Smart Serial 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53914 -#: emc/usr_intf/pncconf/pncconf.glade:12563 +#: src/emc/usr_intf/pncconf/pncconf.glade:60839 +msgid "Smart Serial 4" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:60861 #, fuzzy msgid "First Parallel Port Setup" msgstr "Konfiguration der Druckerschnittstelle" -#: src/emc/usr_intf/pncconf/pncconf.glade:53998 -#: emc/usr_intf/pncconf/pncconf.glade:14631 -#, fuzzy -msgid "Outputs (PC to Machine):" -msgstr "Ausgänge (vom PC zur Maschine)" +#: src/emc/usr_intf/pncconf/pncconf.glade:60946 +msgid "Launch Test Panel" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:54552 -#: emc/usr_intf/pncconf/pncconf.glade:14076 +#: src/emc/usr_intf/pncconf/pncconf.glade:62374 #, fuzzy msgid "Inputs (Machine to PC):" msgstr "Eingänge (von der Maschine zum PC)" -#: src/emc/usr_intf/pncconf/pncconf.glade:55977 -#: emc/usr_intf/pncconf/pncconf.glade:12648 -msgid "Launch Test Panel" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:62929 +#, fuzzy +msgid "Outputs (PC to Machine):" +msgstr "Ausgänge (vom PC zur Maschine)" -#: src/emc/usr_intf/pncconf/pncconf.glade:56003 -#: emc/usr_intf/pncconf/pncconf.glade:14652 +#: src/emc/usr_intf/pncconf/pncconf.glade:62950 #, fuzzy msgid "X Axis Motor/Encoder Configuration" msgstr "Konfiguration der X-Achse" -#: src/emc/usr_intf/pncconf/pncconf.glade:56091 -#: emc/usr_intf/pncconf/pncconf.glade:15095 -#: emc/usr_intf/pncconf/pncconf.glade:17322 -msgid "D" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63005 +#, fuzzy +msgid "Max Output" +msgstr "Unbenutzt" -#: src/emc/usr_intf/pncconf/pncconf.glade:56104 -#: emc/usr_intf/pncconf/pncconf.glade:15082 -#: emc/usr_intf/pncconf/pncconf.glade:17309 +#: src/emc/usr_intf/pncconf/pncconf.glade:63070 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "I" -msgstr "Ein-/Ausgänge" +msgid "FF2" +msgstr "AUS" -#: src/emc/usr_intf/pncconf/pncconf.glade:56117 -#: emc/usr_intf/pncconf/pncconf.glade:15071 -#: emc/usr_intf/pncconf/pncconf.glade:17298 -msgid "P" +#: src/emc/usr_intf/pncconf/pncconf.glade:63083 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "FF1" +msgstr "AUS" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63096 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "FF0" +msgstr "AUS" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63143 +msgid "Deadband" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56128 -#: src/emc/usr_intf/pncconf/pncconf.glade:60917 -#: src/emc/usr_intf/pncconf/pncconf.glade:62202 -#: src/emc/usr_intf/pncconf/pncconf.glade:63103 -#: src/emc/usr_intf/pncconf/pncconf.glade:64388 -#: src/emc/usr_intf/pncconf/pncconf.glade:65265 -#: emc/usr_intf/pncconf/pncconf.glade:15058 -#: emc/usr_intf/pncconf/pncconf.glade:17285 -#: emc/usr_intf/pncconf/pncconf.glade:20849 +#: src/emc/usr_intf/pncconf/pncconf.glade:63156 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Bias" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56141 -#: emc/usr_intf/pncconf/pncconf.glade:15045 -#: emc/usr_intf/pncconf/pncconf.glade:17272 -msgid "Deadband" +#: src/emc/usr_intf/pncconf/pncconf.glade:63169 +msgid "P" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56188 -#: src/emc/usr_intf/pncconf/pncconf.glade:61128 -#: src/emc/usr_intf/pncconf/pncconf.glade:61991 -#: src/emc/usr_intf/pncconf/pncconf.glade:63314 -#: src/emc/usr_intf/pncconf/pncconf.glade:64177 -#: src/emc/usr_intf/pncconf/pncconf.glade:65470 -#: emc/usr_intf/pncconf/pncconf.glade:14998 -#: emc/usr_intf/pncconf/pncconf.glade:17225 -#: emc/usr_intf/pncconf/pncconf.glade:20644 -#: emc/usr_intf/pncconf/pncconf.glade:21811 -#: emc/usr_intf/pncconf/pncconf.glade:22511 -#: emc/usr_intf/pncconf/pncconf.glade:23211 -#, fuzzy -msgid "FF0" -msgstr "AUS" - -#: src/emc/usr_intf/pncconf/pncconf.glade:56201 -#: src/emc/usr_intf/pncconf/pncconf.glade:61118 -#: src/emc/usr_intf/pncconf/pncconf.glade:62001 -#: src/emc/usr_intf/pncconf/pncconf.glade:63304 -#: src/emc/usr_intf/pncconf/pncconf.glade:64187 -#: src/emc/usr_intf/pncconf/pncconf.glade:65460 -#: emc/usr_intf/pncconf/pncconf.glade:14985 -#: emc/usr_intf/pncconf/pncconf.glade:17212 -#: emc/usr_intf/pncconf/pncconf.glade:20654 -#: emc/usr_intf/pncconf/pncconf.glade:21801 -#: emc/usr_intf/pncconf/pncconf.glade:22501 -#: emc/usr_intf/pncconf/pncconf.glade:23201 +#: src/emc/usr_intf/pncconf/pncconf.glade:63180 #, fuzzy -msgid "FF1" -msgstr "AUS" +msgid "I" +msgstr "Ein-/Ausgänge" -#: src/emc/usr_intf/pncconf/pncconf.glade:56214 -#: src/emc/usr_intf/pncconf/pncconf.glade:61108 -#: src/emc/usr_intf/pncconf/pncconf.glade:62011 -#: src/emc/usr_intf/pncconf/pncconf.glade:63294 -#: src/emc/usr_intf/pncconf/pncconf.glade:64197 -#: src/emc/usr_intf/pncconf/pncconf.glade:65450 -#: emc/usr_intf/pncconf/pncconf.glade:14972 -#: emc/usr_intf/pncconf/pncconf.glade:17199 -#: emc/usr_intf/pncconf/pncconf.glade:20664 -#: emc/usr_intf/pncconf/pncconf.glade:21791 -#: emc/usr_intf/pncconf/pncconf.glade:22491 -#: emc/usr_intf/pncconf/pncconf.glade:23191 -#, fuzzy -msgid "FF2" -msgstr "AUS" +#: src/emc/usr_intf/pncconf/pncconf.glade:63193 +msgid "D" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56282 -#: emc/usr_intf/pncconf/pncconf.glade:15160 -#: emc/usr_intf/pncconf/pncconf.glade:17387 +#: src/emc/usr_intf/pncconf/pncconf.glade:63258 #, fuzzy msgid "Servo Info" msgstr "Werkzeug-Info" -#: src/emc/usr_intf/pncconf/pncconf.glade:56362 +#: src/emc/usr_intf/pncconf/pncconf.glade:63337 #, fuzzy -msgid "Spindle Max Output:" -msgstr "Spindel ein" +msgid "3pwm Scale:" +msgstr "Scale" -#: src/emc/usr_intf/pncconf/pncconf.glade:56412 -#, fuzzy -msgid "Spindle Max limit:" -msgstr "SPINDEL SCHNELLER" +#: src/emc/usr_intf/pncconf/pncconf.glade:63348 +msgid "3pwm Deadtime:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56426 +#: src/emc/usr_intf/pncconf/pncconf.glade:63361 #, fuzzy -msgid "Spindle Min Limit:" -msgstr "Spindel PWM" +msgid "Quad Pulses / Rev:" +msgstr "mm / Umdrehung" -#: src/emc/usr_intf/pncconf/pncconf.glade:56456 +#: src/emc/usr_intf/pncconf/pncconf.glade:63438 msgid "" "Open Loop\n" " Test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56557 +#: src/emc/usr_intf/pncconf/pncconf.glade:63462 #, fuzzy -msgid "Quad Pulses / Rev:" -msgstr "mm / Umdrehung" - -#: src/emc/usr_intf/pncconf/pncconf.glade:56572 -#: emc/usr_intf/pncconf/pncconf.glade:14866 -#: emc/usr_intf/pncconf/pncconf.glade:17094 -msgid "Dac Max Output:" -msgstr "" +msgid "Analog Min Limit:" +msgstr "Spindel PWM" -#: src/emc/usr_intf/pncconf/pncconf.glade:56586 -#: emc/usr_intf/pncconf/pncconf.glade:14896 -#: emc/usr_intf/pncconf/pncconf.glade:17123 -msgid "Dac Output Scale:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63476 +#, fuzzy +msgid "Analog Max limit:" +msgstr "SPINDEL SCHNELLER" -#: src/emc/usr_intf/pncconf/pncconf.glade:56599 -msgid "3pwm Deadtime:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63490 +msgid "Analog Max Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56612 -#, fuzzy -msgid "3pwm Scale:" -msgstr "Scale" - -#: src/emc/usr_intf/pncconf/pncconf.glade:56626 +#: src/emc/usr_intf/pncconf/pncconf.glade:63554 #, fuzzy msgid "Output Info" msgstr "Offset-Info" -#: src/emc/usr_intf/pncconf/pncconf.glade:56691 -#: emc/usr_intf/pncconf/pncconf.glade:15372 -#: emc/usr_intf/pncconf/pncconf.glade:17597 +#: src/emc/usr_intf/pncconf/pncconf.glade:63603 #, fuzzy -msgid "Driver Type:" -msgstr "En_dstufe:" +msgid "Step On-Time" +msgstr "_Länge eines Schritts:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56735 -#: emc/usr_intf/pncconf/pncconf.glade:15267 -#: emc/usr_intf/pncconf/pncconf.glade:17494 +#: src/emc/usr_intf/pncconf/pncconf.glade:63616 #, fuzzy -msgid "Direction Setup" -msgstr "Zeit zwischen Richtungs_wechsel und Schritt:" +msgid "Step Space" +msgstr "Zeit zwischen zwei _Schritten:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56748 -#: emc/usr_intf/pncconf/pncconf.glade:15254 -#: emc/usr_intf/pncconf/pncconf.glade:17481 +#: src/emc/usr_intf/pncconf/pncconf.glade:63659 #, fuzzy msgid "Direction Hold" msgstr "Zeit zwischen Schritt und _Richtungswechsel:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56791 -#: emc/usr_intf/pncconf/pncconf.glade:15211 -#: emc/usr_intf/pncconf/pncconf.glade:17438 +#: src/emc/usr_intf/pncconf/pncconf.glade:63672 #, fuzzy -msgid "Step Space" -msgstr "Zeit zwischen zwei _Schritten:" +msgid "Direction Setup" +msgstr "Zeit zwischen Richtungs_wechsel und Schritt:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56804 -#: emc/usr_intf/pncconf/pncconf.glade:15198 -#: emc/usr_intf/pncconf/pncconf.glade:17425 +#: src/emc/usr_intf/pncconf/pncconf.glade:63715 #, fuzzy -msgid "Step On-Time" -msgstr "_Länge eines Schritts:" +msgid "Driver Type:" +msgstr "En_dstufe:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56820 -#: emc/usr_intf/pncconf/pncconf.glade:15405 -#: emc/usr_intf/pncconf/pncconf.glade:17629 +#: src/emc/usr_intf/pncconf/pncconf.glade:63748 msgid "Stepper Info" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56871 +#: src/emc/usr_intf/pncconf/pncconf.glade:63800 msgid "No feedback" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56881 +#: src/emc/usr_intf/pncconf/pncconf.glade:63810 msgid "Absolute Feedback" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56895 +#: src/emc/usr_intf/pncconf/pncconf.glade:63824 #, fuzzy msgid "Incremental Feedback" msgstr "Intervall" -#: src/emc/usr_intf/pncconf/pncconf.glade:56909 +#: src/emc/usr_intf/pncconf/pncconf.glade:63838 #, fuzzy msgid "Incremental Encoder" msgstr "Bild invertieren" -#: src/emc/usr_intf/pncconf/pncconf.glade:56921 +#: src/emc/usr_intf/pncconf/pncconf.glade:63850 msgid "Hall sensors" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56933 +#: src/emc/usr_intf/pncconf/pncconf.glade:63862 msgid "Fanuc Red Cap " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56945 +#: src/emc/usr_intf/pncconf/pncconf.glade:63874 #, fuzzy msgid "Use encoder Index" msgstr "Unbenutzt" -#: src/emc/usr_intf/pncconf/pncconf.glade:56976 +#: src/emc/usr_intf/pncconf/pncconf.glade:63905 msgid "Input Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57000 +#: src/emc/usr_intf/pncconf/pncconf.glade:63929 #, fuzzy msgid "Digital instead of PWM outputs" msgstr "Gewählter Digitaleingang liegt außerhalb des gültigen Bereichs" -#: src/emc/usr_intf/pncconf/pncconf.glade:57009 +#: src/emc/usr_intf/pncconf/pncconf.glade:63938 msgid "6 outputs instead of 3 " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57021 +#: src/emc/usr_intf/pncconf/pncconf.glade:63950 msgid "Force Trapezoid Mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57033 +#: src/emc/usr_intf/pncconf/pncconf.glade:63962 msgid "Emulate feedback " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57045 +#: src/emc/usr_intf/pncconf/pncconf.glade:63974 msgid "Emulated Hall sensors" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57058 +#: src/emc/usr_intf/pncconf/pncconf.glade:63987 msgid "Emulated Fanuc Red Cap" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57085 +#: src/emc/usr_intf/pncconf/pncconf.glade:64014 #, fuzzy msgid "8i20 Max Current" msgstr "Ausschneiden" -#: src/emc/usr_intf/pncconf/pncconf.glade:57119 +#: src/emc/usr_intf/pncconf/pncconf.glade:64048 msgid "Output Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57153 -msgid "Poles" +#: src/emc/usr_intf/pncconf/pncconf.glade:64103 +msgid "alignment current" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64113 +msgid "lead angle" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57163 +#: src/emc/usr_intf/pncconf/pncconf.glade:64213 #, fuzzy -msgid "Encoder-offset" -msgstr "Ende" +msgid "Reverse" +msgstr "SPINDEL RÜCKWÄRTS" -#: src/emc/usr_intf/pncconf/pncconf.glade:57173 -msgid "Drive-offset" +#: src/emc/usr_intf/pncconf/pncconf.glade:64223 +msgid "Input-pattern" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57183 +#: src/emc/usr_intf/pncconf/pncconf.glade:64233 msgid "output-pattern" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57193 -msgid "Input-pattern" +#: src/emc/usr_intf/pncconf/pncconf.glade:64243 +msgid "Drive-offset" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57203 +#: src/emc/usr_intf/pncconf/pncconf.glade:64253 #, fuzzy -msgid "Reverse" -msgstr "SPINDEL RÜCKWÄRTS" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57303 -msgid "lead angle" -msgstr "" +msgid "Encoder-offset" +msgstr "Ende" -#: src/emc/usr_intf/pncconf/pncconf.glade:57313 -msgid "alignment current" +#: src/emc/usr_intf/pncconf/pncconf.glade:64263 +msgid "Poles" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57354 +#: src/emc/usr_intf/pncconf/pncconf.glade:64283 #, fuzzy msgid "Configuration" msgstr "Konfiguration *" -#: src/emc/usr_intf/pncconf/pncconf.glade:57389 -msgid "Use Brushless Motor Control" +#: src/emc/usr_intf/pncconf/pncconf.glade:64318 +msgid "Use BLDC Motor Commutation Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57425 +#: src/emc/usr_intf/pncconf/pncconf.glade:64354 #, fuzzy msgid "Scale:" msgstr "Scale" -#: src/emc/usr_intf/pncconf/pncconf.glade:57446 +#: src/emc/usr_intf/pncconf/pncconf.glade:64375 #, fuzzy msgid "% " msgstr "%" -#: src/emc/usr_intf/pncconf/pncconf.glade:57466 +#: src/emc/usr_intf/pncconf/pncconf.glade:64394 +msgid "Range:" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64419 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "RPM" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64439 #, fuzzy msgid "Use Spindle-At-Speed" msgstr "Spindelencoder Index" -#: src/emc/usr_intf/pncconf/pncconf.glade:57491 +#: src/emc/usr_intf/pncconf/pncconf.glade:64464 #, fuzzy msgid "Filter gain:" msgstr "Konvertierung fehlgeschlagen" -#: src/emc/usr_intf/pncconf/pncconf.glade:57526 +#: src/emc/usr_intf/pncconf/pncconf.glade:64499 msgid "Spindle Display Filter Settings" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57577 -#, fuzzy -msgid "Single Input Encoder" -msgstr "Bild invertieren" +#: src/emc/usr_intf/pncconf/pncconf.glade:64565 +msgid "Rapid Speed Following Error:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57631 -#: emc/usr_intf/pncconf/pncconf.glade:15698 -#: emc/usr_intf/pncconf/pncconf.glade:17858 -msgid "Invert Encoder Direction " +#: src/emc/usr_intf/pncconf/pncconf.glade:64577 +msgid "Feed Speed Following Error:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57646 -#: emc/usr_intf/pncconf/pncconf.glade:15713 -#: emc/usr_intf/pncconf/pncconf.glade:17873 +#: src/emc/usr_intf/pncconf/pncconf.glade:64591 #, fuzzy msgid "Invert Motor Direction" msgstr "Abtastrichtung" -#: src/emc/usr_intf/pncconf/pncconf.glade:57661 -#: emc/usr_intf/pncconf/pncconf.glade:15728 -msgid "Feed Speed Following Error:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64606 +msgid "Invert Encoder Direction " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57675 -#: emc/usr_intf/pncconf/pncconf.glade:15742 -#: emc/usr_intf/pncconf/pncconf.glade:17888 -msgid "Rapid Speed Following Error:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64661 +#, fuzzy +msgid "Single Input Encoder" +msgstr "Bild invertieren" -#: src/emc/usr_intf/pncconf/pncconf.glade:57715 -msgid "" -"Calculate\n" -"Scale" +#: src/emc/usr_intf/pncconf/pncconf.glade:64776 +msgid "encoder Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57744 +#: src/emc/usr_intf/pncconf/pncconf.glade:64801 #, fuzzy msgid "Stepper Scale:" msgstr "Zeit zwischen zwei _Schritten:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57771 -msgid "encoder Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64831 +msgid "" +"Calculate\n" +"Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57928 -#: emc/usr_intf/pncconf/pncconf.glade:16185 -#: emc/usr_intf/pncconf/pncconf.glade:18383 +#: src/emc/usr_intf/pncconf/pncconf.glade:64901 msgid "Test / Tune Axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58235 -msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " +#: src/emc/usr_intf/pncconf/pncconf.glade:64943 +msgid "X Axis Configuration" +msgstr "Konfiguration der X-Achse" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65155 +msgid "" +"NO\n" +"YES" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65171 +msgid "Use Encoder Index For Home:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58251 -#: emc/usr_intf/pncconf/pncconf.glade:16757 +#: src/emc/usr_intf/pncconf/pncconf.glade:65212 #, fuzzy -msgid "Home Search Velocity:" +msgid "Home Final Velocity:" msgstr "Gesch_windigkeit Referenzfahrt:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58266 -msgid "Home Switch location (Offset from machine zero Origin):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65222 +msgid "" +"Same\n" +"Opposite" msgstr "" +"Gleiche Richtung\n" +"Entgegengesetzte Richtung" -#: src/emc/usr_intf/pncconf/pncconf.glade:58310 -msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65238 +#, fuzzy +msgid "Home Latch Direction:" +msgstr "Ric_htung beim Übernehmen des Referenzpunkt:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58326 -msgid "Home Position location (offset from machine zero Origin):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65251 +msgid "" +"Towards Negative limit\n" +"Towards Positive limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58355 -#: emc/usr_intf/pncconf/pncconf.glade:16786 -msgid "Use Backlash Compensation:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65267 +#, fuzzy +msgid "Home Search Direction:" +msgstr "Ric_htung beim Übernehmen des Referenzpunkt:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58369 -#: emc/usr_intf/pncconf/pncconf.glade:16772 -msgid "Use Compensation File:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65309 +#, fuzzy +msgid "Home latch Velocity:" +msgstr "Gesch_windigkeit Referenzfahrt:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65334 +msgid "filename:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58412 -#: emc/usr_intf/pncconf/pncconf.glade:16816 +#: src/emc/usr_intf/pncconf/pncconf.glade:65347 msgid "" "Type 1\n" "Type 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58427 -#: emc/usr_intf/pncconf/pncconf.glade:16846 -msgid "filename:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65392 +msgid "Use Compensation File:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58455 -#: emc/usr_intf/pncconf/pncconf.glade:16648 -#, fuzzy -msgid "Home latch Velocity:" -msgstr "Gesch_windigkeit Referenzfahrt:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65406 +msgid "Use Backlash Compensation:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58494 -#, fuzzy -msgid "Home Search Direction:" -msgstr "Ric_htung beim Übernehmen des Referenzpunkt:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65433 +msgid "Home Position location (offset from machine zero Origin):" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58507 -msgid "" -"Towards Negative limit\n" -"Towards Positive limit" +#: src/emc/usr_intf/pncconf/pncconf.glade:65449 +msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58523 -#: emc/usr_intf/pncconf/pncconf.glade:16674 -#, fuzzy -msgid "Home Latch Direction:" -msgstr "Ric_htung beim Übernehmen des Referenzpunkt:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65493 +msgid "Home Switch location (Offset from machine zero Origin):" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58552 -#: emc/usr_intf/pncconf/pncconf.glade:16495 +#: src/emc/usr_intf/pncconf/pncconf.glade:65509 #, fuzzy -msgid "Home Final Velocity:" +msgid "Home Search Velocity:" msgstr "Gesch_windigkeit Referenzfahrt:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58591 -#: emc/usr_intf/pncconf/pncconf.glade:16521 -msgid "Use Encoder Index For Home:" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:58603 -#: emc/usr_intf/pncconf/pncconf.glade:16505 -msgid "" -"NO\n" -"YES" +#: src/emc/usr_intf/pncconf/pncconf.glade:65524 +msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58628 -#: emc/usr_intf/pncconf/pncconf.glade:18437 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Advanced Options" msgstr "Erweiterte Konfiguration" -#: src/emc/usr_intf/pncconf/pncconf.glade:58712 -#: emc/usr_intf/pncconf/pncconf.glade:18851 -msgid "Cmd 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 15" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58718 -#: emc/usr_intf/pncconf/pncconf.glade:18841 -msgid "Cmd 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 14" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58728 -#: emc/usr_intf/pncconf/pncconf.glade:18831 -msgid "Cmd 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 13" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58738 -#: emc/usr_intf/pncconf/pncconf.glade:18821 -msgid "Cmd 4" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 12" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58748 -#: emc/usr_intf/pncconf/pncconf.glade:18811 -msgid "Cmd 5" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 11" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58874 -#: emc/usr_intf/pncconf/pncconf.glade:18685 -msgid "Cmd 6" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 10" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58884 -#: emc/usr_intf/pncconf/pncconf.glade:18673 -msgid "Cmd 7" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 9" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58896 -#: emc/usr_intf/pncconf/pncconf.glade:18661 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Cmd 8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58908 -#: emc/usr_intf/pncconf/pncconf.glade:18649 -msgid "Cmd 9" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 7" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58920 -#: emc/usr_intf/pncconf/pncconf.glade:18637 -msgid "Cmd 10" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 6" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58990 -#: emc/usr_intf/pncconf/pncconf.glade:18569 -msgid "Cmd 11" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 5" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59000 -#: emc/usr_intf/pncconf/pncconf.glade:18557 -msgid "Cmd 12" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59012 -#: emc/usr_intf/pncconf/pncconf.glade:18545 -msgid "Cmd 13" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59024 -#: emc/usr_intf/pncconf/pncconf.glade:18533 -msgid "Cmd 14" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59036 -#: emc/usr_intf/pncconf/pncconf.glade:18521 -msgid "Cmd 15" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59053 -#: emc/usr_intf/pncconf/pncconf.glade:18862 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Include Halui user interface component / commands" msgstr "HalUI-Fenster einbinden" -#: src/emc/usr_intf/pncconf/pncconf.glade:59127 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Number of digital (bit) in pins:" msgstr "Digitale Eingänge:" -#: src/emc/usr_intf/pncconf/pncconf.glade:59138 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Number of digital (bit) out pins:" msgstr "Digitale Ausgänge:" -#: src/emc/usr_intf/pncconf/pncconf.glade:59308 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid " Number of Internal bit memory:" +msgstr "Digitale Ausgänge:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of Internal word memory:" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Setup number of external pins" msgstr "Digitale Eingänge:" -#: src/emc/usr_intf/pncconf/pncconf.glade:59360 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Z Auto Touch off program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59505 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "HAL Component Page" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59648 -msgid "lowpass" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Add HAL components with this page." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59675 -msgid "mux16" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Component" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59702 -#: emc/usr_intf/pncconf/pncconf.glade:19576 -msgid "scale" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "number of components" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59728 -#: emc/usr_intf/pncconf/pncconf.glade:19497 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "PID" msgstr "MAXIMAL" -#: src/emc/usr_intf/pncconf/pncconf.glade:59739 -#: emc/usr_intf/pncconf/pncconf.glade:19457 -msgid "number of components" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59767 -#: emc/usr_intf/pncconf/pncconf.glade:19433 -msgid "Component" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mux16" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59794 -msgid "Add HAL components with this page." +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "lowpass" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59844 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Thread Command" -msgstr "Befehlskennung:" +msgid "Base Thread" +msgstr "Thread" -#: src/emc/usr_intf/pncconf/pncconf.glade:59854 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Thread Speed" +msgid "Servo Thread" msgstr "Thread" -#: src/emc/usr_intf/pncconf/pncconf.glade:59906 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Load Command " msgstr "Befehlsnummer:" -#: src/emc/usr_intf/pncconf/pncconf.glade:59952 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Servo Thread" +msgid "Thread Speed" msgstr "Thread" -#: src/emc/usr_intf/pncconf/pncconf.glade:59965 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Base Thread" -msgstr "Thread" +msgid "Thread Command" +msgstr "Befehlskennung:" -#: src/emc/usr_intf/pncconf/pncconf.glade:59979 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Custom Components Commands" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60031 -#: emc/usr_intf/pncconf/pncconf.glade:19880 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Machine configuration complete" +msgstr "Maschinenkonfiguration komplett" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "" +"All the necessary information has now been gathered. Click \"Apply\" to " +"write your configuration files to disk.\n" +"\n" +"If you are using the 5i25 card with daugther boards or are using SSerial " +"based daughter cards, the cards must be connected and/or field power " +"supplied to the 5i25 \n" +"for the HAL pins to be available. If the config is expecting the pins and " +"they are not there, linuxcnc will error.\n" +"If you experience lockups while running LinuxCNC, you will need to decrease " +"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC, first verify that you " +"entered the proper timings for your stepper drivers. If that does not fix " +"the problem, then run a more thorough latency test as described on the " +"linuxcnc.org wiki:\n" +" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" +"\n" +"If you experience the \"Unexpected Realtime Delay\" message, run a more " +"thorough latency test as described on the linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" +msgstr "" +"Alle notwendigen Informationen wurden erfasst. Bestätigen Sie mit " +"»Anwenden«, um die Konfiguration zu speichern.\n" +"Falls EMC2 nicht mehr reagieren sollte, verkleinern Sie die maximale " +"Geschwindigkeit, was die Zeit für einen Systemtakt (BASE_PERIOD) " +"vergrößert.\n" +"\n" +"Falls Sie Schrittverluste bemerken sollten, überprüfen Sie zuerst die " +"Zeiteinstellungen für ihre Endstufe. Wird das Problem hierdurch nicht " +"behoben, dann führen bitte weiter Maßnahmen durch, wie sie im EMC2-Wiki " +"beschrieben werden:\n" +" http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting\n" +"\n" +"Falls Sie die Fehlermeldung »Unexpected Realtime Delay« erhalten, dann " +"führen bitte weiter Maßnahmen durch, wie sie im EMC2-Wiki beschrieben " +"werden:\n" +" http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" " Motor Encoder Test\n" "Warning limits switches \n" " Will not be obeyed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60067 -#: src/emc/usr_intf/pncconf/pncconf.glade:60766 -#: src/emc/usr_intf/pncconf/pncconf.glade:61859 -#: src/emc/usr_intf/pncconf/pncconf.glade:62952 -#: src/emc/usr_intf/pncconf/pncconf.glade:64045 -#: src/emc/usr_intf/pncconf/pncconf.glade:65025 -#: emc/usr_intf/pncconf/pncconf.glade:19975 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Slow Dac Speed" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Fast Dac Speed" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Invert Motor" -msgstr "Invertieren" +msgid "Dac Offset:" +msgstr "Werkzeugoffset:" -#: src/emc/usr_intf/pncconf/pncconf.glade:60083 -#: src/emc/usr_intf/pncconf/pncconf.glade:60782 -#: src/emc/usr_intf/pncconf/pncconf.glade:61875 -#: src/emc/usr_intf/pncconf/pncconf.glade:62968 -#: src/emc/usr_intf/pncconf/pncconf.glade:64061 -#: src/emc/usr_intf/pncconf/pncconf.glade:65040 -#: emc/usr_intf/pncconf/pncconf.glade:20016 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Invert Encoder" -msgstr "Bild invertieren" +msgid "Encoder Scale:" +msgstr "Ende" -#: src/emc/usr_intf/pncconf/pncconf.glade:60100 -msgid "Enable Amp" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Reset Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60114 -#: emc/usr_intf/pncconf/pncconf.glade:20037 -msgid "Reset Encoder" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Enable Amp" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60142 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Encoder Scale:" -msgstr "Ende" +msgid "Invert Encoder" +msgstr "Bild invertieren" -#: src/emc/usr_intf/pncconf/pncconf.glade:60153 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Dac Offset:" -msgstr "Werkzeugoffset:" +msgid "Invert Motor" +msgstr "Invertieren" -#: src/emc/usr_intf/pncconf/pncconf.glade:60243 -#: emc/usr_intf/pncconf/pncconf.glade:19960 -msgid "Fast Dac Speed" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"±\n" +"+\n" +"-\n" msgstr "" +"±\n" +"+\n" +"-\n" -#: src/emc/usr_intf/pncconf/pncconf.glade:60258 -#: emc/usr_intf/pncconf/pncconf.glade:19944 -msgid "Slow Dac Speed" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Seconds" +msgstr "Sekundär" -#: src/emc/usr_intf/pncconf/pncconf.glade:60407 -#: src/emc/usr_intf/pncconf/pncconf.glade:61503 -#: src/emc/usr_intf/pncconf/pncconf.glade:62596 -#: src/emc/usr_intf/pncconf/pncconf.glade:63689 -#: src/emc/usr_intf/pncconf/pncconf.glade:64788 -#: emc/usr_intf/pncconf/pncconf.glade:20416 -#: emc/usr_intf/pncconf/pncconf.glade:21439 -#: emc/usr_intf/pncconf/pncconf.glade:22139 -#: emc/usr_intf/pncconf/pncconf.glade:22839 -msgid "mm/minute" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60441 -#: src/emc/usr_intf/pncconf/pncconf.glade:61536 -#: src/emc/usr_intf/pncconf/pncconf.glade:62629 -#: src/emc/usr_intf/pncconf/pncconf.glade:63722 -#: src/emc/usr_intf/pncconf/pncconf.glade:64821 -#: emc/usr_intf/pncconf/pncconf.glade:20381 -#: emc/usr_intf/pncconf/pncconf.glade:21404 -#: emc/usr_intf/pncconf/pncconf.glade:22104 -#: emc/usr_intf/pncconf/pncconf.glade:22804 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "mm/minute^2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60550 -#: src/emc/usr_intf/pncconf/pncconf.glade:61644 -#: src/emc/usr_intf/pncconf/pncconf.glade:62737 -#: src/emc/usr_intf/pncconf/pncconf.glade:64930 -msgid "Enable" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm/minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60600 -#: src/emc/usr_intf/pncconf/pncconf.glade:61693 -#: src/emc/usr_intf/pncconf/pncconf.glade:62786 -#: src/emc/usr_intf/pncconf/pncconf.glade:63879 -#: src/emc/usr_intf/pncconf/pncconf.glade:65139 -#: emc/usr_intf/pncconf/pncconf.glade:20202 -#: emc/usr_intf/pncconf/pncconf.glade:21225 -#: emc/usr_intf/pncconf/pncconf.glade:21925 -#: emc/usr_intf/pncconf/pncconf.glade:22625 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Seconds" -msgstr "Sekundär" - -#: src/emc/usr_intf/pncconf/pncconf.glade:60907 -#: src/emc/usr_intf/pncconf/pncconf.glade:62212 -#: src/emc/usr_intf/pncconf/pncconf.glade:63093 -#: src/emc/usr_intf/pncconf/pncconf.glade:64398 -#: src/emc/usr_intf/pncconf/pncconf.glade:65255 -#: emc/usr_intf/pncconf/pncconf.glade:20859 -msgid "DeadBand" -msgstr "" +msgid "Current" +msgstr "Ausschneiden" -#: src/emc/usr_intf/pncconf/pncconf.glade:61089 -#: src/emc/usr_intf/pncconf/pncconf.glade:61380 -#: src/emc/usr_intf/pncconf/pncconf.glade:62030 -#: src/emc/usr_intf/pncconf/pncconf.glade:62401 -#: src/emc/usr_intf/pncconf/pncconf.glade:63275 -#: src/emc/usr_intf/pncconf/pncconf.glade:63562 -#: src/emc/usr_intf/pncconf/pncconf.glade:64216 -#: src/emc/usr_intf/pncconf/pncconf.glade:64587 -#: src/emc/usr_intf/pncconf/pncconf.glade:65431 -#: src/emc/usr_intf/pncconf/pncconf.glade:65718 -#: emc/usr_intf/pncconf/pncconf.glade:20683 -#: emc/usr_intf/pncconf/pncconf.glade:21046 -#: emc/usr_intf/pncconf/pncconf.glade:21772 -#: emc/usr_intf/pncconf/pncconf.glade:22472 -#: emc/usr_intf/pncconf/pncconf.glade:23172 -msgid "Original" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "P:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61138 -#: src/emc/usr_intf/pncconf/pncconf.glade:61981 -#: src/emc/usr_intf/pncconf/pncconf.glade:63324 -#: src/emc/usr_intf/pncconf/pncconf.glade:64167 -#: src/emc/usr_intf/pncconf/pncconf.glade:65480 -#: emc/usr_intf/pncconf/pncconf.glade:20634 -#: emc/usr_intf/pncconf/pncconf.glade:21821 -#: emc/usr_intf/pncconf/pncconf.glade:22521 -#: emc/usr_intf/pncconf/pncconf.glade:23221 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "D:" +msgid "I:" msgstr "MDI:" -#: src/emc/usr_intf/pncconf/pncconf.glade:61148 -#: src/emc/usr_intf/pncconf/pncconf.glade:61971 -#: src/emc/usr_intf/pncconf/pncconf.glade:63334 -#: src/emc/usr_intf/pncconf/pncconf.glade:64157 -#: src/emc/usr_intf/pncconf/pncconf.glade:65490 -#: emc/usr_intf/pncconf/pncconf.glade:20624 -#: emc/usr_intf/pncconf/pncconf.glade:21831 -#: emc/usr_intf/pncconf/pncconf.glade:22531 -#: emc/usr_intf/pncconf/pncconf.glade:23231 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "I:" +msgid "D:" msgstr "MDI:" -#: src/emc/usr_intf/pncconf/pncconf.glade:61158 -#: src/emc/usr_intf/pncconf/pncconf.glade:61961 -#: src/emc/usr_intf/pncconf/pncconf.glade:63344 -#: src/emc/usr_intf/pncconf/pncconf.glade:64147 -#: src/emc/usr_intf/pncconf/pncconf.glade:65500 -#: emc/usr_intf/pncconf/pncconf.glade:20614 -#: emc/usr_intf/pncconf/pncconf.glade:21841 -#: emc/usr_intf/pncconf/pncconf.glade:22541 -#: emc/usr_intf/pncconf/pncconf.glade:23241 -msgid "P:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Original" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61168 -#: src/emc/usr_intf/pncconf/pncconf.glade:61392 -#: src/emc/usr_intf/pncconf/pncconf.glade:61951 -#: src/emc/usr_intf/pncconf/pncconf.glade:62389 -#: src/emc/usr_intf/pncconf/pncconf.glade:63354 -#: src/emc/usr_intf/pncconf/pncconf.glade:63574 -#: src/emc/usr_intf/pncconf/pncconf.glade:64137 -#: src/emc/usr_intf/pncconf/pncconf.glade:64575 -#: src/emc/usr_intf/pncconf/pncconf.glade:65510 -#: src/emc/usr_intf/pncconf/pncconf.glade:65730 -#: emc/usr_intf/pncconf/pncconf.glade:20604 -#: emc/usr_intf/pncconf/pncconf.glade:21034 -#: emc/usr_intf/pncconf/pncconf.glade:21851 -#: emc/usr_intf/pncconf/pncconf.glade:22551 -#: emc/usr_intf/pncconf/pncconf.glade:23251 -#, fuzzy -msgid "Current" -msgstr "Ausschneiden" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "DeadBand" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61185 -#: src/emc/usr_intf/pncconf/pncconf.glade:62278 -#: src/emc/usr_intf/pncconf/pncconf.glade:63371 -#: src/emc/usr_intf/pncconf/pncconf.glade:64464 -#: src/emc/usr_intf/pncconf/pncconf.glade:65527 -#: emc/usr_intf/pncconf/pncconf.glade:20923 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "PID Tuning" msgstr "INI-Änderungen speichern" -#: src/emc/usr_intf/pncconf/pncconf.glade:61370 -#: src/emc/usr_intf/pncconf/pncconf.glade:62413 -#: src/emc/usr_intf/pncconf/pncconf.glade:63552 -#: src/emc/usr_intf/pncconf/pncconf.glade:64599 -#: src/emc/usr_intf/pncconf/pncconf.glade:65708 -#: emc/usr_intf/pncconf/pncconf.glade:21058 -#, fuzzy -msgid "Direction Setup:" -msgstr "Zeit zwischen Richtungs_wechsel und Schritt:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:61404 -#: src/emc/usr_intf/pncconf/pncconf.glade:62379 -#: src/emc/usr_intf/pncconf/pncconf.glade:63586 -#: src/emc/usr_intf/pncconf/pncconf.glade:64565 -#: src/emc/usr_intf/pncconf/pncconf.glade:65742 -#: emc/usr_intf/pncconf/pncconf.glade:21024 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Direction Hold:" -msgstr "Zeit zwischen Schritt und _Richtungswechsel:" +msgid "Step Time:" +msgstr "_Länge eines Schritts:" -#: src/emc/usr_intf/pncconf/pncconf.glade:61414 -#: src/emc/usr_intf/pncconf/pncconf.glade:62369 -#: src/emc/usr_intf/pncconf/pncconf.glade:63596 -#: src/emc/usr_intf/pncconf/pncconf.glade:64555 -#: src/emc/usr_intf/pncconf/pncconf.glade:65752 -#: emc/usr_intf/pncconf/pncconf.glade:21014 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Step Space:" msgstr "Zeit zwischen zwei _Schritten:" -#: src/emc/usr_intf/pncconf/pncconf.glade:61424 -#: src/emc/usr_intf/pncconf/pncconf.glade:62359 -#: src/emc/usr_intf/pncconf/pncconf.glade:63606 -#: src/emc/usr_intf/pncconf/pncconf.glade:64545 -#: src/emc/usr_intf/pncconf/pncconf.glade:65762 -#: emc/usr_intf/pncconf/pncconf.glade:21004 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Step Time:" -msgstr "_Länge eines Schritts:" +msgid "Direction Hold:" +msgstr "Zeit zwischen Schritt und _Richtungswechsel:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Direction Setup:" +msgstr "Zeit zwischen Richtungs_wechsel und Schritt:" -#: src/emc/usr_intf/pncconf/pncconf.glade:61439 -#: src/emc/usr_intf/pncconf/pncconf.glade:62528 -#: src/emc/usr_intf/pncconf/pncconf.glade:63621 -#: src/emc/usr_intf/pncconf/pncconf.glade:64714 -#: src/emc/usr_intf/pncconf/pncconf.glade:65777 -#: emc/usr_intf/pncconf/pncconf.glade:21173 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Step Timing" msgstr "_Länge eines Schritts:" -#: src/emc/usr_intf/pncconf/pncconf.glade:63830 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65798 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "spindle" msgstr "Spindel:" -#: src/emc/usr_intf/pncconf/pncconf.glade:65881 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Help Page" msgstr "Bilddateien" -#: src/emc/usr_intf/pncconf/pncconf.glade:65911 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" "X axis:\n" "Total Travel = 10\n" @@ -13901,11 +14784,11 @@ msgid "" "possible" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65951 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Mill" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65970 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" "Total Travel = 4 + 6 = 10\n" "Z Home Offset = Origin to Home Switch distance = 10\n" @@ -13918,3442 +14801,3487 @@ msgid "" "possible." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65994 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Lathe" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66010 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Diagram" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66043 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Output" msgstr "Unbenutzt" -#: src/emc/usr_intf/pncconf/pncconf.glade:66123 -#: emc/usr_intf/pncconf/pncconf.glade:15310 -#: emc/usr_intf/pncconf/pncconf.glade:17537 -#, fuzzy -msgid "Motor steps per revolution:" -msgstr "_Motorschritte pro Umdrehung:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:66173 -#: src/emc/usr_intf/pncconf/pncconf.glade:66459 -#, fuzzy -msgid "Leadscrew Metric Pitch" -msgstr "_Spindelsteigung:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:66186 -msgid "Microstep Multiplication Factor:" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:66199 -#: src/emc/usr_intf/pncconf/pncconf.glade:66481 -msgid "Worm turn ratio (Input:Outputl)" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"\t\t\t\tPNCconf - Point aNd Click CONFigurator\n" +"PNCconf is a configuration program for Linuxcnc.\n" +"It configures machines using Mesa I/O cards.\n" +"It configures servo,stepper or closed loop stepper machines.\n" +"It supports some of Mesa's sserial cards.\n" +"It will forever be a work in progress as Linuxcnc changes.\n" +"\n" +"Many thanks To:\n" +"Jeff Eppler - PNCconf is based on stepconf - Jeff's creation. Jeff also has " +"helped with techincal difficulties.\n" +"Big John T - John drew the original machine illustrations. Testing and " +"suggestions.\n" +"Peter Wallace - Technical questions on Mesa's I/O cards. Supplied sample " +"equipment to test with.\n" +"Andy Pugh - suggestions, questions answered and many pin name changes :) \n" +"Dave Armstrong - testing and suggestions expecially with resolvers.\n" +"Everyone who gave a bug report ! I cannot test everything thoughly enough so " +"reports help.\n" +"\n" +"Beta 1 version" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66212 -#, fuzzy -msgid "Pulley teeth (motor:Leadscrew):" -msgstr "_Untersetzung (Zähnezahl am Motor:Spindel):" - -#: src/emc/usr_intf/pncconf/pncconf.glade:66356 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "TPI " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66372 -msgid "Step Motor Scale" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:66472 -#, fuzzy -msgid "Pulley teeth (encoder:Leadscrew):" -msgstr "_Untersetzung (Zähnezahl am Motor:Spindel):" - -#: src/emc/usr_intf/pncconf/pncconf.glade:66537 -#, fuzzy -msgid "Encoder lines per revolution:" -msgstr "Encoder-_Takte pro Spindel-Umdrehung:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:66547 -msgid "X 4 = Pulses/Rev" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:66651 -#, fuzzy -msgid "TPI" -msgstr "MAXIMAL" - -#: src/emc/usr_intf/pncconf/pncconf.glade:66667 -msgid "Encoder Scale" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:66711 -#, fuzzy -msgid "motor steps per unit:" -msgstr "_Motorschritte pro Umdrehung:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:66721 -msgid "encoder pulses per unit:" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:66756 -msgid " " -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:66770 -msgid "Calculated Scale" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:66848 -msgid "xmaxrpm" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:66864 -msgid "RPM" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:66877 -#, fuzzy -msgid "Motor RPM at max speed:" -msgstr "Schrittfrequenz bei maximaler Geschwindigkeit:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:66921 -#, fuzzy -msgid "Calculated Axis SCALE:" -msgstr "Maßstab der Achse:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:66934 -#, fuzzy -msgid "Khz" -msgstr "kHz" - -#: src/emc/usr_intf/pncconf/pncconf.glade:66949 -#: emc/usr_intf/pncconf/pncconf.glade:15968 -#: emc/usr_intf/pncconf/pncconf.glade:18099 -msgid "sec" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:67049 -#: emc/usr_intf/pncconf/pncconf.glade:16068 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Distance to acheave max speed:" -msgstr "Weg bis zum erreichend der maximalen Geschwindigkeit:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:67077 -#: emc/usr_intf/pncconf/pncconf.glade:16113 -#: emc/usr_intf/pncconf/pncconf.glade:18195 -#, fuzzy -msgid "Resolution:" -msgstr "Position:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:67105 -#: emc/usr_intf/pncconf/pncconf.py:3315 -#: emc/usr_intf/pncconf/pncconf.glade:16141 -#: emc/usr_intf/pncconf/pncconf.glade:18223 -msgid "mm / encoder pulse" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:67123 -#, fuzzy -msgid "Motion Data" -msgstr "Re_ferenzfahrt" - -#: src/emc/usr_intf/pncconf/pncconf.glade:67151 -#, fuzzy -msgid "gtk-cancel" -msgstr "Abbrechen" - -#: src/emc/task/emctaskmain.cc:427 src/emc/task/emctaskmain.cc:460 -#: src/emc/task/emctaskmain.cc:467 src/emc/task/emctaskmain.cc:500 -#: emc/task/emctaskmain.cc:416 emc/task/emctaskmain.cc:449 -#, c-format -msgid "%s exceeds +X limit" -msgstr "%s überschreitet X+ Limit" - -#: src/emc/task/emctaskmain.cc:432 src/emc/task/emctaskmain.cc:465 -#: src/emc/task/emctaskmain.cc:472 src/emc/task/emctaskmain.cc:505 -#: emc/task/emctaskmain.cc:421 emc/task/emctaskmain.cc:454 -#, c-format -msgid "%s exceeds +Y limit" -msgstr "%s überschreitet Y+ Limit" - -#: src/emc/task/emctaskmain.cc:437 src/emc/task/emctaskmain.cc:470 -#: src/emc/task/emctaskmain.cc:477 src/emc/task/emctaskmain.cc:510 -#: emc/task/emctaskmain.cc:426 emc/task/emctaskmain.cc:459 -#, c-format -msgid "%s exceeds +Z limit" -msgstr "%s überschreitet Z+ Limit" - -#: src/emc/task/emctaskmain.cc:442 src/emc/task/emctaskmain.cc:475 -#: src/emc/task/emctaskmain.cc:482 src/emc/task/emctaskmain.cc:515 -#: emc/task/emctaskmain.cc:431 emc/task/emctaskmain.cc:464 -#, c-format -msgid "%s exceeds -X limit" -msgstr "%s überschreitet X- Limit" - -#: src/emc/task/emctaskmain.cc:447 src/emc/task/emctaskmain.cc:480 -#: src/emc/task/emctaskmain.cc:487 src/emc/task/emctaskmain.cc:520 -#: emc/task/emctaskmain.cc:436 emc/task/emctaskmain.cc:469 -#, c-format -msgid "%s exceeds -Y limit" -msgstr "%s überschreitet Y- Limit" - -#: src/emc/task/emctaskmain.cc:452 src/emc/task/emctaskmain.cc:485 -#: src/emc/task/emctaskmain.cc:492 src/emc/task/emctaskmain.cc:525 -#: emc/task/emctaskmain.cc:441 emc/task/emctaskmain.cc:474 -#, c-format -msgid "%s exceeds -Z limit" -msgstr "%s überschreitet Z- Limit" - -#: src/emc/task/emctaskmain.cc:810 src/emc/task/emctaskmain.cc:853 -#: emc/task/emctaskmain.cc:746 -#, c-format -msgid "" -"command (%s) cannot be executed until the machine is out of E-stop and " -"turned on" -msgstr "" -"%s kann nicht ausgeführt werden, solange der Notaus aktiv ist und die " -"Maschine nicht eingeschaltet ist" - -#: src/emc/task/emctaskmain.cc:930 src/emc/task/emctaskmain.cc:973 -#: emc/task/emctaskmain.cc:863 -#, c-format -msgid "can't do that (%s) in manual mode" -msgstr "%s kann im manuellen Modus nicht ausgeführt werden" - -#: src/emc/task/emctaskmain.cc:1027 src/emc/task/emctaskmain.cc:1072 -#: emc/task/emctaskmain.cc:962 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter idle" -msgstr "" -"%s kann im automatischen Modus nicht ausgeführt werden, wenn der Interpreter " -"stillsteht" - -#: src/emc/task/emctaskmain.cc:1087 src/emc/task/emctaskmain.cc:1132 -#: emc/task/emctaskmain.cc:1024 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter reading" -msgstr "" -"%s kann im automatischen Modus nicht ausgeführt werden, wenn der Interpreter " -"liest" +msgid "Pulley teeth (motor:Leadscrew):" +msgstr "_Untersetzung (Zähnezahl am Motor:Spindel):" -#: src/emc/task/emctaskmain.cc:1169 src/emc/task/emctaskmain.cc:1216 -#: emc/task/emctaskmain.cc:1108 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter paused" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Worm turn ratio (Input:Outputl)" msgstr "" -"%s kann im automatischen Modus nicht ausgeführt werden, wenn der Interpreter " -"Pause macht" -#: src/emc/task/emctaskmain.cc:1231 src/emc/task/emctaskmain.cc:1278 -#: emc/task/emctaskmain.cc:1172 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter waiting" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Microstep Multiplication Factor:" msgstr "" -"%s kann im automatischen Modus nicht ausgeführt werden, wenn der Interpreter " -"wartet" -#: src/emc/task/emctaskmain.cc:1321 src/emc/task/emctaskmain.cc:1370 -#: emc/task/emctaskmain.cc:1261 -#, c-format -msgid "can't do that (%s) in MDI mode" -msgstr "%s kann im MDI-Modus nicht ausgeführt werden" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Leadscrew Metric Pitch" +msgstr "_Spindelsteigung:" -#: src/emc/task/emctaskmain.cc:1943 src/emc/task/emctaskmain.cc:2015 -#: emc/task/emctaskmain.cc:1873 -msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Motor steps per revolution:" +msgstr "_Motorschritte pro Umdrehung:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Motor Scale" msgstr "" -"Modus kann nicht gewechselt werden, solange er auf AUTO ist und der " -"Interpreter stillsteht" -#: src/emc/task/emctaskmain.cc:2012 src/emc/task/emctaskmain.cc:2084 -#: emc/task/emctaskmain.cc:1942 -msgid "Can't issue MDI command when not homed" -msgstr "MDI-Befehl kann ohne vorherige Refernzfahrt nicht ausgeführt werden" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "TPI" +msgstr "MAXIMAL" -#: src/emc/task/emctaskmain.cc:2017 src/emc/task/emctaskmain.cc:2089 -#: emc/task/emctaskmain.cc:1947 -msgid "Must be in MDI mode to issue MDI command" -msgstr "MDI-Befehl kann nur im MDI-Modus ausgeführt werden" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "X 4 = Pulses/Rev" +msgstr "" -#: src/emc/task/emctaskmain.cc:2078 src/emc/task/emctaskmain.cc:2151 -#: emc/task/emctaskmain.cc:1976 -msgid "Can't run a program when not homed" -msgstr "Programm kann ohne vorherige Referenzfahrt nicht ausgeführt werden" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Encoder lines per revolution:" +msgstr "Encoder-_Takte pro Spindel-Umdrehung:" -#: src/emc/rs274ngc/interp_arc.cc:108 src/emc/rs274ngc/rs274ngc_return.hh:160 -#: emc/rs274ngc/interp_arc.cc:106 emc/rs274ngc/rs274ngc_return.hh:196 -msgid "Zero radius arc" -msgstr "Kreis mit Radius Null" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Pulley teeth (encoder:Leadscrew):" +msgstr "_Untersetzung (Zähnezahl am Motor:Spindel):" -#: src/emc/rs274ngc/interp_arc.cc:112 src/emc/rs274ngc/interp_arc.cc:279 -#, fuzzy, c-format -msgid "" -"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " -"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " -"rel_err=%.4f%%" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder Scale" msgstr "" -"Radius am Kreisanfang unterscheidet sich vom Radius am Kreisende: Anfang=(%c" -"%.4f,%c%.4f), Mittelpunkt=(%c%.4f,%c%.4f), Ende=(%c%.4f,%c%.4f), Radius 1=" -"%.4f, Radius 2=%.4f" -#: src/emc/rs274ngc/interp_check.cc:89 src/emc/rs274ngc/interp_check.cc:90 -msgid "G4 not allowed with G2 or G3 because they both use P" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " " msgstr "" -#: src/emc/rs274ngc/interp_check.cc:92 src/emc/rs274ngc/interp_check.cc:93 -#, fuzzy -msgid "Line with G10 does not have L1, L10, L11, L2, or L20" -msgstr "Zeile mit G10 enthält kein L2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "encoder pulses per unit:" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:93 src/emc/rs274ngc/interp_check.cc:94 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "P value not an integer with G10" -msgstr "P-Wert bei Verwendung von G10 L2 ist keine Ganzzahl" +msgid "motor steps per unit:" +msgstr "_Motorschritte pro Umdrehung:" -#: src/emc/rs274ngc/interp_check.cc:94 src/emc/rs274ngc/interp_check.cc:95 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Calculated Scale" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / encoder pulse" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "P value out of range (0-9) with G10 L2 or L20" -msgstr "P-Wert ausserhalb des gültigen Bereichs bei G10 L2" +msgid "Resolution:" +msgstr "Position:" -#: src/emc/rs274ngc/interp_check.cc:95 src/emc/rs274ngc/interp_check.cc:96 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "P value out of range with G10 L1 or G10 L10" -msgstr "P-Wert ausserhalb des gültigen Bereichs bei G10 L2" +msgid "Distance to acheave max speed:" +msgstr "Weg bis zum erreichend der maximalen Geschwindigkeit:" -#: src/emc/rs274ngc/interp_check.cc:99 src/emc/rs274ngc/interp_check.cc:100 -#: emc/rs274ngc/interp_check.cc:97 -msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "sec" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:248 src/emc/rs274ngc/interp_check.cc:258 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" -msgstr "E-Wort ohne zugehörige Angabe von G76 oder M66" +msgid "Khz" +msgstr "kHz" -#: src/emc/rs274ngc/interp_check.cc:254 src/emc/rs274ngc/interp_check.cc:264 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "E word with no G76, M66, M67 or M68 to use it" -msgstr "E-Wort ohne zugehörige Angabe von G76 oder M66" +msgid "Calculated Axis SCALE:" +msgstr "Maßstab der Achse:" -#: src/emc/rs274ngc/interp_check.cc:259 src/emc/rs274ngc/interp_check.cc:269 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "H word with no G43 or G76 to use it" -msgstr "E-Wort ohne zugehörige Angabe von G76 oder M66" +msgid "Motor RPM at max speed:" +msgstr "Schrittfrequenz bei maximaler Geschwindigkeit:" -#: src/emc/rs274ngc/interp_check.cc:265 src/emc/rs274ngc/interp_check.cc:275 -#, fuzzy -msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "xmaxrpm" msgstr "" -"K-Wort ohne zugehörige Angabe von G2, G3, G33, G33.1, G76, G87, oder G43.1" -#: src/emc/rs274ngc/interp_check.cc:271 src/emc/rs274ngc/interp_check.cc:281 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" -msgstr "J-Wörters ohne zugehörige Angabe von G2, G3 oder G87" +msgid "Motion Data" +msgstr "Re_ferenzfahrt" -#: src/emc/rs274ngc/interp_check.cc:277 src/emc/rs274ngc/interp_check.cc:287 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" +msgid "gtk-cancel" +msgstr "Abbrechen" + +#: src/emc/usr_intf/gscreen/gscreen.py:349 +#, python-format +msgid "adding import dir %s" msgstr "" -"K-Wort ohne zugehörige Angabe von G2, G3, G33, G33.1, G76, G87, oder G43.1" -#: src/emc/rs274ngc/interp_check.cc:287 src/emc/rs274ngc/interp_check.cc:297 -msgid "" -"L word with no G10, cutter compensation, canned cycle, digital/analog input, " -"or NURBS code" +#: src/emc/usr_intf/gscreen/gscreen.py:355 +#, python-format +msgid "module '%s' imported OK" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:299 src/emc/rs274ngc/interp_check.cc:309 +#: src/emc/usr_intf/gscreen/gscreen.py:452 +#, python-format msgid "" -"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " -"M53 M62 M63 M64 M65 M66 or user M code to use it" +"\n" +"**** GSCREEN INFO: Using CUSTOM glade file from %s ****" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:302 -#, fuzzy -msgid "P value not an integer with G2 or G3" -msgstr "P-Wert bei Verwendung von G10 L2 ist keine Ganzzahl" - -#: src/emc/rs274ngc/interp_check.cc:304 src/emc/rs274ngc/interp_check.cc:318 -#, fuzzy -msgid "P value should be 1 or greater with G2 or G3" -msgstr "P-Wert ausserhalb des gültigen Bereichs bei G10 L2" +#: src/emc/usr_intf/gscreen/gscreen.py:457 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Using SKIN glade file from %s ****" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:311 -#, fuzzy +#: src/emc/usr_intf/gscreen/gscreen.py:460 +#, python-format msgid "" -"Q word with no G5, G10, G64, G73, G76, G83, M66, M67, M68 or user M code " -"that uses it" -msgstr "E-Wort ohne zugehörige Angabe von G76 oder M66" +"\n" +"**** GSCREEN INFO: using STOCK glade file from: %s ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:138 -msgid "You must specify both X and Y coordinates for Control Points" +#: src/emc/usr_intf/gscreen/gscreen.py:466 +#, python-format +msgid "**** Gscreen GLADE ERROR: With main screen xml file: %s" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:141 -msgid "Can specify P without X and Y only for the first control point" +#: src/emc/usr_intf/gscreen/gscreen.py:471 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Screen 2 -Using CUSTOM glade file from %s ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:144 -msgid "Must specify positive weight P for every Control Point" +#: src/emc/usr_intf/gscreen/gscreen.py:477 +#, python-format +msgid "**** Gscreen GLADE ERROR: With screen 2's xml file: %s" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:147 -#, fuzzy -msgid "Cannot make a NURBS with 0 feedrate" +#: src/emc/usr_intf/gscreen/gscreen.py:479 +msgid "" +"\n" +"**** GSCREEN INFO: No Screen 2 glade file present" msgstr "" -"Ein Kreisbogen mit einer Vorschubgeschwindigkeit von 0 ist nicht möglich" -#: src/emc/rs274ngc/interp_convert.cc:182 -#, fuzzy -msgid "Cannot use G5.3 without G5.2 first" -msgstr "G53 kann nicht mit aktiver Werkzeugbahnkorrektur verwendet werden" +#: src/emc/usr_intf/gscreen/gscreen.py:519 +msgid "No UNITS entry found in [TRAJ] or [AXIS_0] of INI file" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:183 emc/rs274ngc/interp_convert.cc:191 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.py:532 msgid "" -"You must specify a number of control points at least equal to the order L = %" -"d" +"*** Gscreen ERROR: Asking for a HAL component using a name that already " +"exists." msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:212 emc/rs274ngc/interp_convert.cc:220 -#, fuzzy -msgid "Cannot convert spline with cutter radius compensation" -msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" +#: src/emc/usr_intf/gscreen/gscreen.py:585 +msgid "No default jog increments entry found in [DISPLAY] of INI file" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:222 emc/rs274ngc/interp_convert.cc:230 -msgid "Splines must be in the XY plane" +#: src/emc/usr_intf/gscreen/gscreen.py:598 +msgid "No default angular jog increments entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:227 -msgid "Splines may not have motion in Z, A, B, or C" +#: src/emc/usr_intf/gscreen/gscreen.py:607 +#, python-format +msgid "" +"No DEFAULT_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:231 -msgid "Must specify both I and J with G5.1" +#: src/emc/usr_intf/gscreen/gscreen.py:618 +#, python-format +msgid "" +"No MAX_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:250 -msgid "Must specify both I and J, or neither" +#: src/emc/usr_intf/gscreen/gscreen.py:625 +msgid "No MAX_VELOCITY found in [TRAJ] of the INI file" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:261 -msgid "Must specify both P and Q with G5" +#: src/emc/usr_intf/gscreen/gscreen.py:638 +#, python-format +msgid "" +"No DEFAULT_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:362 emc/rs274ngc/interp_convert.cc:350 +#: src/emc/usr_intf/gscreen/gscreen.py:649 +#, python-format msgid "" -"The move just after exiting cutter compensation mode must be straight, not " -"an arc" +"No MAX_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:370 -msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" +#: src/emc/usr_intf/gscreen/gscreen.py:657 +msgid "No MAX_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:382 -#: src/emc/rs274ngc/interp_convert.cc:3909 -#: src/emc/rs274ngc/interp_convert.cc:4266 -msgid "Cannot feed with zero spindle speed in feed per rev mode" +#: src/emc/usr_intf/gscreen/gscreen.py:663 +msgid "No MIN_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:393 -#: src/emc/rs274ngc/interp_convert.cc:399 -#: src/emc/rs274ngc/interp_convert.cc:408 -#: src/emc/rs274ngc/interp_convert.cc:414 -#: src/emc/rs274ngc/interp_convert.cc:423 -#: src/emc/rs274ngc/interp_convert.cc:429 -#, fuzzy, c-format -msgid "%c word missing in absolute center arc" +#: src/emc/usr_intf/gscreen/gscreen.py:669 +msgid "No MAX_FEED_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -"Angabe eines F-Wörters zum Fahren eines Kreisbogens im zeitreziproken " -"Vorschub-Modus fehlt" -#: src/emc/rs274ngc/interp_convert.cc:649 -msgid "" -"Radius of cutter compensation entry arc is not greater than the tool radius" +#: src/emc/usr_intf/gscreen/gscreen.py:674 +msgid "This screen will be orientated for Lathe options" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:868 -#: src/emc/rs274ngc/interp_convert.cc:878 src/emc/rs274ngc/interp_queue.cc:541 -#: src/emc/rs274ngc/interp_queue.cc:592 emc/rs274ngc/interp_convert.cc:850 -#: emc/rs274ngc/interp_convert.cc:860 emc/rs274ngc/interp_queue.cc:514 -msgid "" -"Arc move in concave corner cannot be reached by the tool without gouging" +#: src/emc/usr_intf/gscreen/gscreen.py:727 +msgid "CYCLE_TIME in [DISPLAY] of INI file is missing: defaulting to 100ms" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:904 emc/rs274ngc/interp_convert.cc:886 -msgid "Arc to arc motion is invalid because the arcs have the same center" +#: src/emc/usr_intf/gscreen/gscreen.py:730 +msgid "CYCLE_TIME in [DISPLAY] of INI file is too small: defaulting to 100ms" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:732 +#, python-format +msgid "timeout %d" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:907 emc/rs274ngc/interp_convert.cc:889 +#: src/emc/usr_intf/gscreen/gscreen.py:1001 msgid "" -"Arc to arc motion makes a corner the compensated tool can't fit in without " -"gouging" +"**** WARNING GSCREEN: could not understand the window geometry info in " +"hidden preference file" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1036 -#: src/emc/rs274ngc/interp_convert.cc:1037 -#: src/emc/rs274ngc/interp_convert.cc:1038 -#: src/emc/rs274ngc/interp_convert.cc:3376 -#: src/emc/rs274ngc/interp_convert.cc:3379 -#: src/emc/rs274ngc/interp_convert.cc:3382 src/emc/rs274ngc/interp_find.cc:97 -#: src/emc/rs274ngc/interp_convert.cc:3733 -#: src/emc/rs274ngc/interp_convert.cc:3736 -#: src/emc/rs274ngc/interp_convert.cc:3739 -#, c-format -msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" +#: src/emc/usr_intf/gscreen/gscreen.py:1089 +msgid "Control powered up and initialized" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1466 -#: src/emc/rs274ngc/interp_convert.cc:1494 emc/rs274ngc/interp_convert.cc:1447 -msgid "Cannot change control mode with cutter radius compensation on" -msgstr "Modus kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" +#: src/emc/usr_intf/gscreen/gscreen.py:1264 +msgid "Cycle start pressed in AUTO mode" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1579 -#: src/emc/rs274ngc/interp_convert.cc:1607 emc/rs274ngc/interp_convert.cc:1560 -msgid "Cannot change coordinate systems with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.py:1267 +#, fuzzy +msgid "Cycle start pressed in MDI mode" +msgstr "%s kann im MDI-Modus nicht ausgeführt werden" + +#: src/emc/usr_intf/gscreen/gscreen.py:1290 +#, python-format +msgid "Please change to tool # %s, then click OK." +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1291 +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +#: src/emc/usr_intf/gscreen/gscreen.py:1789 +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2849 +msgid "INFO:" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +msgid "Can't start spindle manually while MDI busy" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +#, fuzzy +msgid "can't start spindle manually in Auto mode" +msgstr "%s kann im manuellen Modus nicht ausgeführt werden" + +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +msgid "No direction selected for spindle" msgstr "" -"Koordinatensystem kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt " -"werden" -#: src/emc/rs274ngc/interp_convert.cc:1823 -#: src/emc/rs274ngc/interp_convert.cc:1851 emc/rs274ngc/interp_convert.cc:1807 -#, c-format -msgid "G%d.1 with no D word" -msgstr "G%S.1 ohne D-Wort" +#: src/emc/usr_intf/gscreen/gscreen.py:1331 +#: src/emc/usr_intf/gscreen/gscreen.py:1333 +#, fuzzy +msgid "Spindle Speed Preset Entry" +msgstr "Spindeldrehzahl (1/min)" -#: src/emc/rs274ngc/interp_convert.cc:1826 -#: src/emc/rs274ngc/interp_convert.cc:1854 emc/rs274ngc/interp_convert.cc:1810 -#, c-format -msgid "G%d.1 with L word, but plane is not G18" +#: src/emc/usr_intf/gscreen/gscreen.py:1362 +#: src/emc/usr_intf/gscreen/gscreen.py:1367 +#, fuzzy +msgid "Manual Tool Index Entry" +msgstr "AXIS Werkzeugwechsel" + +#: src/emc/usr_intf/gscreen/gscreen.py:1489 +msgid "Entry dialog" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1837 -#: src/emc/rs274ngc/interp_convert.cc:1865 emc/rs274ngc/interp_convert.cc:1821 -#, c-format -msgid "G%d requires D word to be a whole number" -msgstr "D-Wort bei G%d muss eine Ganzzahl sein" +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +#, fuzzy +msgid "Classicladder realtime component not detected" +msgstr "Echtzeicht-Komponente nicht geladen" -#: src/emc/rs274ngc/interp_convert.cc:1844 -#: src/emc/rs274ngc/interp_convert.cc:1872 emc/rs274ngc/interp_convert.cc:1829 -#, c-format -msgid "G%d with lathe tool, but plane is not G18" +#: src/emc/usr_intf/gscreen/gscreen.py:1617 +msgid "ladder not available - is the realtime component loaded?" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2228 -#: src/emc/rs274ngc/interp_convert.cc:2271 +#: src/emc/usr_intf/gscreen/gscreen.py:1691 #, fuzzy -msgid "Cannot set reference point with cutter compensation in effect" -msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" +msgid "Override Entry" +msgstr "Grenzwerte aufheben" -#: src/emc/rs274ngc/interp_convert.cc:2628 -#: src/emc/rs274ngc/interp_convert.cc:2885 emc/rs274ngc/interp_convert.cc:2546 -#: emc/rs274ngc/interp_convert.cc:2550 +#: src/emc/usr_intf/gscreen/gscreen.py:1719 #, fuzzy -msgid "Cannot set motion output with cutter radius compensation on" -msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" +msgid "Machine powered on" +msgstr "Maschine an" -#: src/emc/rs274ngc/interp_convert.cc:2629 -#: src/emc/rs274ngc/interp_convert.cc:2886 -msgid "No valid P word with M62" +#: src/emc/usr_intf/gscreen/gscreen.py:1724 +#, fuzzy +msgid "Machine Estopped!" +msgstr "Maschinenposition" + +#: src/emc/usr_intf/gscreen/gscreen.py:1727 +msgid "Calculator" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2633 -#: src/emc/rs274ngc/interp_convert.cc:2890 -#, fuzzy -msgid "Cannot set motion digital output with cutter radius compensation on" -msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" +#: src/emc/usr_intf/gscreen/gscreen.py:1857 +#, python-format +msgid "Axes %s are homed" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2634 -#: src/emc/rs274ngc/interp_convert.cc:2891 -msgid "No valid P word with M63" +#: src/emc/usr_intf/gscreen/gscreen.py:1864 +msgid "All the axes have been homed" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2638 -#: src/emc/rs274ngc/interp_convert.cc:2643 -#: src/emc/rs274ngc/interp_convert.cc:2895 -#: src/emc/rs274ngc/interp_convert.cc:2900 +#: src/emc/usr_intf/gscreen/gscreen.py:1874 +#, python-format +msgid "There are unhomed axes: %s" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1879 +#, fuzzy, python-format +msgid "Program loaded: %s" +msgstr "Programmdatei ist »%s«" + +#: src/emc/usr_intf/gscreen/gscreen.py:1977 #, fuzzy -msgid "Cannot set auxiliary digital output with cutter radius compensation on" -msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" +msgid "Manual Spindle Control" +msgstr "SPINDEL LANGSAMER" -#: src/emc/rs274ngc/interp_convert.cc:2639 -#: src/emc/rs274ngc/interp_convert.cc:2896 -msgid "No valid P word with M64" +#: src/emc/usr_intf/gscreen/gscreen.py:2034 +msgid "Keyboard" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2644 -#: src/emc/rs274ngc/interp_convert.cc:2901 -msgid "No valid P word with M65" +#: src/emc/usr_intf/gscreen/gscreen.py:2067 +msgid "Error with launching 'Onboard' on-screen keyboard program" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2673 -#: src/emc/rs274ngc/interp_convert.cc:2931 -msgid "invalid P-word with M66" +#: src/emc/usr_intf/gscreen/gscreen.py:2215 +#, python-format +msgid "**** GSCREEN INFO: Overriding internal signal call to %s" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2688 -#: src/emc/rs274ngc/interp_convert.cc:2946 emc/rs274ngc/interp_convert.cc:2602 -#, fuzzy -msgid "Cannot wait for digital input with cutter radius compensation on" -msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" +#: src/emc/usr_intf/gscreen/gscreen.py:2643 +msgid " Zero Origin" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2700 -#: src/emc/rs274ngc/interp_convert.cc:2958 emc/rs274ngc/interp_convert.cc:2614 +#: src/emc/usr_intf/gscreen/gscreen.py:2644 #, fuzzy -msgid "Cannot wait for analog input with cutter radius compensation on" -msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" +msgid "Offset Origin" +msgstr "Offset-Info" -#: src/emc/rs274ngc/interp_convert.cc:2714 -#: src/emc/rs274ngc/interp_convert.cc:2973 -#, fuzzy -msgid "Cannot set motion analog output with cutter radius compensation on" -msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" +#: src/emc/usr_intf/gscreen/gscreen.py:2659 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing text or type) " +"in INI File [DISPLAY] section" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2715 -#: src/emc/rs274ngc/interp_convert.cc:2974 -msgid "Invalid analog index with M67" +#: src/emc/usr_intf/gscreen/gscreen.py:2661 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing pinname) in " +"INI File [DISPLAY] section" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2721 -#: src/emc/rs274ngc/interp_convert.cc:2980 -#, fuzzy -msgid "Cannot set auxiliary analog output with cutter radius compensation on" -msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" +#: src/emc/usr_intf/gscreen/gscreen.py:2663 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing boldtext) in " +"INI File [DISPLAY] section" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2722 -#: src/emc/rs274ngc/interp_convert.cc:2981 -msgid "Invalid analog index with M68" +#: src/emc/usr_intf/gscreen/gscreen.py:2667 +#, python-format +msgid "" +"**** Gscreen ERROR: invalid message type (%s)in INI File [DISPLAY] section" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2733 emc/rs274ngc/interp_convert.cc:2633 -msgid "Need positive Q-word to specify tool number with M61" +#: src/emc/usr_intf/gscreen/gscreen.py:2699 +msgid "Dialog error - Is the dialog handler missing from the handler file?" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2806 -#: src/emc/rs274ngc/interp_convert.cc:2823 -#: src/emc/rs274ngc/interp_convert.cc:2837 -#: src/emc/rs274ngc/interp_convert.cc:2851 -#: src/emc/rs274ngc/interp_convert.cc:2865 -#: src/emc/rs274ngc/interp_convert.cc:3156 -#: src/emc/rs274ngc/interp_convert.cc:3173 -#: src/emc/rs274ngc/interp_convert.cc:3188 -#: src/emc/rs274ngc/interp_convert.cc:3202 -#: src/emc/rs274ngc/interp_convert.cc:3216 emc/rs274ngc/interp_convert.cc:2706 -#: emc/rs274ngc/interp_convert.cc:2723 emc/rs274ngc/interp_convert.cc:2737 -#: emc/rs274ngc/interp_convert.cc:2751 emc/rs274ngc/interp_convert.cc:2765 +#: src/emc/usr_intf/gscreen/gscreen.py:2701 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3540 #, fuzzy -msgid "Cannot enable overrides with cutter radius compensation on" -msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" +msgid "Manual Toolchange" +msgstr "AXIS Werkzeugwechsel" -#: src/emc/rs274ngc/interp_convert.cc:2813 -#: src/emc/rs274ngc/interp_convert.cc:2828 -#: src/emc/rs274ngc/interp_convert.cc:2842 -#: src/emc/rs274ngc/interp_convert.cc:2856 -#: src/emc/rs274ngc/interp_convert.cc:2870 -#: src/emc/rs274ngc/interp_convert.cc:3163 -#: src/emc/rs274ngc/interp_convert.cc:3178 -#: src/emc/rs274ngc/interp_convert.cc:3193 -#: src/emc/rs274ngc/interp_convert.cc:3207 -#: src/emc/rs274ngc/interp_convert.cc:3221 emc/rs274ngc/interp_convert.cc:2713 -#: emc/rs274ngc/interp_convert.cc:2728 emc/rs274ngc/interp_convert.cc:2742 -#: emc/rs274ngc/interp_convert.cc:2756 emc/rs274ngc/interp_convert.cc:2770 +#: src/emc/usr_intf/gscreen/gscreen.py:2703 +#: src/emc/usr_intf/gmoccapy/dialogs.py:94 +#: src/emc/usr_intf/gmoccapy/dialogs.py:107 +#: src/emc/usr_intf/gmoccapy/dialogs.py:119 +msgid "Operator Message" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:2737 +#: src/emc/usr_intf/gscreen/gscreen.py:2741 +#: src/emc/usr_intf/gmoccapy/dialogs.py:155 +#: src/emc/usr_intf/gmoccapy/dialogs.py:159 #, fuzzy -msgid "Cannot disable overrides with cutter radius compensation on" -msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" +msgid "Restart Entry" +msgstr "Anfang an" -#: src/emc/rs274ngc/interp_convert.cc:2970 -#: src/emc/rs274ngc/interp_convert.cc:2971 -#: src/emc/rs274ngc/interp_convert.cc:2972 -#: src/emc/rs274ngc/interp_convert.cc:3325 -#: src/emc/rs274ngc/interp_convert.cc:3326 -#: src/emc/rs274ngc/interp_convert.cc:3327 -#, c-format -msgid "Indexing axis %c can only be moved with G0" +#: src/emc/usr_intf/gscreen/gscreen.py:2752 +#: src/emc/usr_intf/gmoccapy/dialogs.py:173 +msgid "Enter" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2979 -#: src/emc/rs274ngc/interp_convert.cc:2981 -#: src/emc/rs274ngc/interp_convert.cc:2983 -#: src/emc/rs274ngc/interp_convert.cc:3334 -#: src/emc/rs274ngc/interp_convert.cc:3336 -#: src/emc/rs274ngc/interp_convert.cc:3338 -#, c-format -msgid "Indexing axis %c can only be moved alone" +#: src/emc/usr_intf/gscreen/gscreen.py:2774 +#, python-format +msgid "Ready to Restart program from line %d" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3076 -#: src/emc/rs274ngc/interp_convert.cc:3433 +#: src/emc/usr_intf/gscreen/gscreen.py:2807 #, fuzzy -msgid "Cannot probe with feed per rev mode" -msgstr "Abtast-Fahrt mit einer Verfahrgeschwindigkeit von 0 nicht möglich" +msgid "Invalid embeded tab configuration" +msgstr "Benutzerdefinierte _HAL-Konfiguration einbinden" -#: src/emc/rs274ngc/interp_convert.cc:3124 -#: src/emc/rs274ngc/interp_convert.cc:3481 emc/rs274ngc/interp_convert.cc:3010 -#, fuzzy -msgid "Cannot change retract mode with cutter radius compensation on" -msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +msgid "Can't jog multiple axis" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3158 -#: src/emc/rs274ngc/interp_convert.cc:3515 -msgid "G10 L1 without offsets has no effect" +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +msgid "No axis selected to jog" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3264 -#: src/emc/rs274ngc/interp_convert.cc:3621 -msgid "Q number in G10 is not an integer" +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +msgid "No axis selected to move" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3265 -#: src/emc/rs274ngc/interp_convert.cc:3622 -msgid "Invalid tool orientation" +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +msgid "Can't home multiple axis - select HOME ALL instead" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3364 -#: src/emc/rs274ngc/interp_convert.cc:3721 -#, fuzzy -msgid "I J words not allowed with G10 L2" +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +msgid "No axis selected to home" msgstr "" -"Befehle G43.1, G41 R, und G42 R dürfen keine X-, Y-, Z-, A-, B-, C-. oder J-" -"Wörter enthalten" -#: src/emc/rs274ngc/interp_convert.cc:3385 -#: src/emc/rs274ngc/interp_convert.cc:3742 -#, fuzzy -msgid "" -"Cannot change the active coordinate system with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +msgid "Can't unhome multiple axis" msgstr "" -"Koordinatensystem kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt " -"werden" -#: src/emc/rs274ngc/interp_convert.cc:3393 -#: src/emc/rs274ngc/interp_convert.cc:3750 -msgid "R not allowed in G10 L20" +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +msgid "No axis selected to unhome" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3966 -#: src/emc/rs274ngc/interp_convert.cc:4323 -#, fuzzy -msgid "Spindle not turning in G33" -msgstr "G86, aber Werkzeug-Spindel nicht in Rotation" +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +msgid "No axis selected for origin zeroing" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3976 -#: src/emc/rs274ngc/interp_convert.cc:4333 -#, fuzzy -msgid "Spindle not turning in G33.1" -msgstr "G86, aber Werkzeug-Spindel nicht in Rotation" +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +msgid "No axis selected for origin touch-off" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4019 -#: src/emc/rs274ngc/interp_convert.cc:4376 -msgid "BUG: An axis incorrectly moved along with an indexer" +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +msgid "Can't tool touch-off multiple axes" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4032 -#: src/emc/rs274ngc/interp_convert.cc:4389 -msgid "BUG: trying to index incorrect axis" +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +msgid "No axis selected for tool touch-off" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4124 -#: src/emc/rs274ngc/interp_convert.cc:4481 emc/rs274ngc/interp_convert.cc:3745 +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#: src/emc/usr_intf/gscreen/gscreen.py:3375 #, fuzzy -msgid "Cannot use G76 threading cycle with cutter radius compensation on" -msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" +msgid "Error Message" +msgstr "Fehler beim speichern der Datei" -#: src/emc/rs274ngc/interp_convert.cc:4127 -#: src/emc/rs274ngc/interp_convert.cc:4484 -msgid "In G76, I must not be 0" +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#, python-format +msgid "Tool editor error - is the %s editor available?" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4129 -#: src/emc/rs274ngc/interp_convert.cc:4486 +#: src/emc/usr_intf/gscreen/gscreen.py:3377 +#: src/emc/usr_intf/gscreen/gscreen.py:3379 #, fuzzy -msgid "In G76, J must be greater than 0" -msgstr "Zeilennummer größer als 99999" +msgid "Message" +msgstr "Gebrauch" -#: src/emc/rs274ngc/interp_convert.cc:4131 -#: src/emc/rs274ngc/interp_convert.cc:4488 -#, fuzzy -msgid "In G76, K must be greater than J" -msgstr "Zeilennummer größer als 99999" +#: src/emc/usr_intf/gscreen/gscreen.py:3409 +#, python-format +msgid "%d RPM" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:48 +#: src/emc/usr_intf/gscreen/gscreen.glade:59 +#: src/emc/usr_intf/gscreen/gscreen.glade:135 +#: src/emc/usr_intf/gscreen/gscreen.glade:176 +#: src/emc/usr_intf/gscreen/gscreen.glade:187 +#: src/emc/usr_intf/gscreen/gscreen.glade:264 +#: src/emc/usr_intf/gscreen/gscreen.glade:306 +#: src/emc/usr_intf/gscreen/gscreen.glade:317 +#: src/emc/usr_intf/gscreen/gscreen.glade:393 +#: src/emc/usr_intf/gscreen/gscreen.glade:434 +#: src/emc/usr_intf/gscreen/gscreen.glade:445 +#: src/emc/usr_intf/gscreen/gscreen.glade:521 +#: src/emc/usr_intf/gscreen/gscreen.glade:562 +#: src/emc/usr_intf/gscreen/gscreen.glade:573 +#: src/emc/usr_intf/gscreen/gscreen.glade:649 +#: src/emc/usr_intf/gscreen/gscreen.glade:690 +#: src/emc/usr_intf/gscreen/gscreen.glade:701 +#: src/emc/usr_intf/gscreen/gscreen.glade:777 +#: src/emc/usr_intf/gscreen/gscreen.glade:818 +#: src/emc/usr_intf/gscreen/gscreen.glade:829 +#: src/emc/usr_intf/gscreen/gscreen.glade:905 +#: src/emc/usr_intf/gscreen/gscreen.glade:946 +#: src/emc/usr_intf/gscreen/gscreen.glade:957 +#: src/emc/usr_intf/gscreen/gscreen.glade:1033 +#: src/emc/usr_intf/gscreen/gscreen.glade:1074 +#: src/emc/usr_intf/gscreen/gscreen.glade:1085 +#: src/emc/usr_intf/gscreen/gscreen.glade:1161 +msgid "0000.0000" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:73 +#: src/emc/usr_intf/gscreen/gscreen.glade:201 +#: src/emc/usr_intf/gscreen/gscreen.glade:331 +#: src/emc/usr_intf/gscreen/gscreen.glade:459 +#: src/emc/usr_intf/gscreen/gscreen.glade:587 +#: src/emc/usr_intf/gscreen/gscreen.glade:715 +#: src/emc/usr_intf/gscreen/gscreen.glade:843 +#: src/emc/usr_intf/gscreen/gscreen.glade:971 +#: src/emc/usr_intf/gscreen/gscreen.glade:1099 +msgid "REL" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:99 +#: src/emc/usr_intf/gscreen/gscreen.glade:227 +#: src/emc/usr_intf/gscreen/gscreen.glade:357 +#: src/emc/usr_intf/gscreen/gscreen.glade:485 +#: src/emc/usr_intf/gscreen/gscreen.glade:613 +#: src/emc/usr_intf/gscreen/gscreen.glade:741 +#: src/emc/usr_intf/gscreen/gscreen.glade:869 +#: src/emc/usr_intf/gscreen/gscreen.glade:997 +#: src/emc/usr_intf/gscreen/gscreen.glade:1125 +msgid "ABS" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:630 +msgid "B" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:758 +msgid "C" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:886 +#, fuzzy +msgid "U" +msgstr "Aufwärts" -#: src/emc/rs274ngc/interp_convert.cc:4274 -#: src/emc/rs274ngc/interp_convert.cc:4631 -msgid "" -"Length of cutter compensation entry move is not greater than the tool radius" +#: src/emc/usr_intf/gscreen/gscreen.glade:1014 +msgid "V" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4493 -#: src/emc/rs274ngc/interp_convert.cc:4850 emc/rs274ngc/interp_convert.cc:4107 -msgid "Zero degree inside corner is invalid for cutter compensation" +#: src/emc/usr_intf/gscreen/gscreen.glade:1298 +#, fuzzy +msgid "G code" +msgstr "Ende" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1392 +msgid "G Codes Active" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4531 -#: src/emc/rs274ngc/interp_convert.cc:4539 -#: src/emc/rs274ngc/interp_convert.cc:4888 -#: src/emc/rs274ngc/interp_convert.cc:4896 emc/rs274ngc/interp_convert.cc:4145 -#: emc/rs274ngc/interp_convert.cc:4153 -msgid "" -"Arc to straight motion makes a corner the compensated tool can't fit in " -"without gouging" +#: src/emc/usr_intf/gscreen/gscreen.glade:1451 +msgid "MV:100%" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4623 -#: src/emc/rs274ngc/interp_convert.cc:4980 emc/rs274ngc/interp_convert.cc:4237 +#: src/emc/usr_intf/gscreen/gscreen.glade:1470 #, fuzzy -msgid "Cannot change tools with cutter radius compensation on" -msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" +msgid " Mist" +msgstr "Kühlnebel" -#: src/emc/rs274ngc/interp_convert.cc:4743 -#: src/emc/rs274ngc/interp_convert.cc:5101 emc/rs274ngc/interp_convert.cc:4346 +#: src/emc/usr_intf/gscreen/gscreen.glade:1481 #, fuzzy -msgid "Cannot change tool offset with cutter radius compensation on" -msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" +msgid " Flood " +msgstr "Kühlmittel" -#: src/emc/rs274ngc/interp_queue.cc:539 src/emc/rs274ngc/interp_queue.cc:590 -#: emc/rs274ngc/interp_queue.cc:512 -#, c-format -msgid "" -"BUG: cutter compensation has generated an invalid arc with mismatched radii " -"r1 %f r2 %f\n" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1533 +#, fuzzy +msgid " At Speed " +msgstr "Spindeldrehzahl (1/min)" -#: src/emc/rs274ngc/interp_queue.cc:561 src/emc/rs274ngc/interp_queue.cc:612 -#: emc/rs274ngc/interp_queue.cc:534 -msgid "BUG: Unsupported plane in cutter compensation" -msgstr "Nicht untersützte Ebene in Werkzeugradiuskorrektur" +#: src/emc/usr_intf/gscreen/gscreen.glade:1546 +#, fuzzy +msgid " Jog mode" +msgstr "Joint-Modus" -#: src/emc/rs274ngc/interp_queue.cc:571 src/emc/rs274ngc/interp_queue.cc:622 -#: emc/rs274ngc/interp_queue.cc:544 -msgid "" -"Straight traverse in concave corner cannot be reached by the tool without " -"gouging" +#: src/emc/usr_intf/gscreen/gscreen.glade:1600 +msgid "10 DPM" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:599 src/emc/rs274ngc/interp_queue.cc:650 -#: emc/rs274ngc/interp_queue.cc:572 -#, fuzzy, c-format -msgid "BUG: Unsupported plane [%d] in cutter compensation" -msgstr "Nicht untersützte Ebene in Werkzeugradiuskorrektur" - -#: src/emc/rs274ngc/interp_queue.cc:610 src/emc/rs274ngc/interp_queue.cc:661 -#: emc/rs274ngc/interp_queue.cc:583 -msgid "" -"Straight feed in concave corner cannot be reached by the tool without gouging" +#: src/emc/usr_intf/gscreen/gscreen.glade:1616 +msgid "10 Ipm" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:628 +#: src/emc/usr_intf/gscreen/gscreen.glade:1690 #, fuzzy -msgid "Cannot feed with zero feed rate" +msgid "Status" +msgstr "Re_ferenzfahrt" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1715 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2510 +msgid "" +"Search\n" +" Text:" msgstr "" -"G1 kann nicht mit einer Vorschubgeschwindigkeit von 0 ausgeführt werden" -# Anmerkung:FJ: Who the fuck is "inverse time feed mode"? :-))) -# Angabe des Weges, der in einer Minuten zurückgelegt werden soll??? -# Anmerkung Thomas: Wird benutzt beim Fünfachsfräsen (3 Linearachsen und 2 Rundachsen zusammen). -# F100 -> 60/100 = Weg im Raum wird in 0,6s zurückgelegt. Einige CAM Systeme erzeugen solchen Code... -# Anmerkung:FJ: DIN66025 nennt das "Zeitreziproke Vorschubverschlüsselung". Was es nicht alles gibt :-) !!!!! -#: src/emc/rs274ngc/interp_cycles.cc:629 +#: src/emc/usr_intf/gscreen/gscreen.glade:1766 #, fuzzy -msgid "Cannot use inverse time feed with canned cycles" -msgstr "Abtast-Fahrten sind im zeitreziproken Vorschub-Modus nicht möglich" +msgid "Mode" +msgstr "Re_ferenzfahrt" -#: src/emc/rs274ngc/interp_cycles.cc:630 +#: src/emc/usr_intf/gscreen/gscreen.glade:1782 #, fuzzy -msgid "Cannot use canned cycles with cutter compensation on" -msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" +msgid "Main Level" +msgstr "Schwelle" -#: src/emc/rs274ngc/interp_cycles.cc:818 -msgid "G17 canned cycle is not possible on a machine without Z axis" +#: src/emc/usr_intf/gscreen/gscreen.glade:1823 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3678 +msgid "Themes" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1001 -#: src/emc/rs274ngc/interp_cycles.cc:1004 -msgid "G17.1 canned cycle is not possible on a machine without W axis" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1847 +#, fuzzy +msgid "Relative Text Color" +msgstr "Relative Position" -#: src/emc/rs274ngc/interp_cycles.cc:1217 -#: src/emc/rs274ngc/interp_cycles.cc:1220 -msgid "G19 canned cycle is not possible on a machine without X axis" +#: src/emc/usr_intf/gscreen/gscreen.glade:1895 +msgid "DTG Text Color" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1385 -#: src/emc/rs274ngc/interp_cycles.cc:1388 -msgid "G19.1 canned cycle is not possible on a machine without U axis" +#: src/emc/usr_intf/gscreen/gscreen.glade:1916 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3710 +msgid "Warning Audio" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1610 -#: src/emc/rs274ngc/interp_cycles.cc:1613 -msgid "G18 canned cycle is not possible on a machine without Y axis" +#: src/emc/usr_intf/gscreen/gscreen.glade:1926 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3723 +msgid "Alert Audio" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1777 -#: src/emc/rs274ngc/interp_cycles.cc:1780 -msgid "G18.1 canned cycle is not possible on a machine without V axis" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1947 +#, fuzzy +msgid "Grid Size" +msgstr "Größe" -#: src/emc/rs274ngc/interp_find.cc:170 +#: src/emc/usr_intf/gscreen/gscreen.glade:1986 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4119 #, fuzzy -msgid "Cannot use polar coordinates with G53" -msgstr "Rotations-Achse kann nicht mit G76 bewegt werden" +msgid "Starting RPM" +msgstr "Einstellungen" -#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 -#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 -#: src/emc/rs274ngc/interp_find.cc:347 -msgid "Cannot specify X or Y words with polar coordinate" +#: src/emc/usr_intf/gscreen/gscreen.glade:2015 +msgid "Metric\n" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:272 -msgid "Must specify angle in polar coordinate if at the origin" +#: src/emc/usr_intf/gscreen/gscreen.glade:2030 +msgid "" +" Display\n" +"Aux Screen" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:338 +#: src/emc/usr_intf/gscreen/gscreen.glade:2045 +#, fuzzy msgid "" -"Incremental motion with polar coordinates is indeterminate when at the origin" -msgstr "" +"Diameter\n" +" Mode" +msgstr "Durchmesser:" -#: src/emc/rs274ngc/interp_find.cc:348 -msgid "G91 motion with polar coordinates is indeterminate when at the origin" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2062 +#: src/emc/usr_intf/gscreen/gscreen.glade:3096 +#, fuzzy +msgid "" +" Show\n" +"Offsets" +msgstr "_Bemaßung anzeigen" -#: src/emc/rs274ngc/interp_find.cc:720 -#, c-format -msgid "Requested tool %d not found in the tool table" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2079 +#, fuzzy +msgid "" +"Show\n" +"DTG" +msgstr "Anzeigen" -#: src/emc/rs274ngc/interp_internal.cc:151 -#: src/emc/rs274ngc/interp_internal.cc:154 -msgid "Cannot use polar coordinate on a machine lacking X or Y axes" +#: src/emc/usr_intf/gscreen/gscreen.glade:2096 +msgid "" +" Gscreen\n" +"Fullscreen" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:152 -#: src/emc/rs274ngc/interp_internal.cc:155 -msgid "Cannot use polar coordinate except in G17 plane" +#: src/emc/usr_intf/gscreen/gscreen.glade:2118 +msgid "" +" On M7 Use\n" +"Aux Coolant" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:153 -#: src/emc/rs274ngc/interp_internal.cc:156 -msgid "Cannot specify both polar coordinate and X word" +#: src/emc/usr_intf/gscreen/gscreen.glade:2131 +msgid "" +" On M8 Use\n" +"Aux Coolant" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:154 -#: src/emc/rs274ngc/interp_internal.cc:157 -msgid "Cannot specify both polar coordinate and Y word" +#: src/emc/usr_intf/gscreen/gscreen.glade:2144 +msgid "Hide Pointer" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:175 -#: src/emc/rs274ngc/interp_internal.cc:187 -#: src/emc/rs274ngc/interp_internal.cc:200 -#: src/emc/rs274ngc/interp_internal.cc:178 -#: src/emc/rs274ngc/interp_internal.cc:190 -#: src/emc/rs274ngc/interp_internal.cc:203 -msgid "Polar coordinates can only be used for motion" +#: src/emc/usr_intf/gscreen/gscreen.glade:2156 +msgid "" +" Desktop\n" +"Notification" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1112 src/emc/rs274ngc/interp_read.cc:1116 -#: src/emc/rs274ngc/interp_read.cc:1143 src/emc/rs274ngc/interp_read.cc:1147 -#: emc/rs274ngc/interp_read.cc:1097 emc/rs274ngc/interp_read.cc:1101 -#, c-format -msgid "Bad character '\\%03o' used" -msgstr "Ungültiges Zeichen »\\%03o« benutzt" - -#: src/emc/rs274ngc/interp_read.cc:1116 src/emc/rs274ngc/interp_read.cc:1147 -#: emc/rs274ngc/interp_read.cc:1101 -#, c-format -msgid "Bad character '%c' used" -msgstr "Ungültiges Zeichen »%c« benutzt" - -# Anmerkung:FJ: Schrägstrich, atan? Klären? Division wie bei c-Funktion atan2(x,y) ??? -#: src/emc/rs274ngc/interp_read.cc:1623 src/emc/rs274ngc/interp_read.cc:1671 +#: src/emc/usr_intf/gscreen/gscreen.glade:2228 +#: src/emc/usr_intf/gscreen/gscreen.glade:2368 #, fuzzy -msgid "Left bracket missing after 'while'" -msgstr "Fehlende linke Klammer nach Schrägstrich bei atan" +msgid "Debug" +msgstr "Debug..." -#: src/emc/rs274ngc/interp_read.cc:1638 src/emc/rs274ngc/interp_read.cc:1686 +#: src/emc/usr_intf/gscreen/gscreen.glade:2263 #, fuzzy -msgid "Left bracket missing after 'repeat'" -msgstr "Fehlende linke Klammer nach unärem Befehlssnamen" +msgid "Alarm History" +msgstr "Verlauf:" -# Anmerkung:FJ: Schrägstrich, atan? Klären? Division wie bei c-Funktion atan2(x,y) ??? -#: src/emc/rs274ngc/interp_read.cc:1653 src/emc/rs274ngc/interp_read.cc:1701 -#, fuzzy -msgid "Left bracket missing after 'if'" -msgstr "Fehlende linke Klammer nach Schrägstrich bei atan" +#: src/emc/usr_intf/gscreen/gscreen.glade:2281 +msgid "" +" Launch\n" +"Halshow" +msgstr "" -# Anmerkung:FJ: Schrägstrich, atan? Klären? Division wie bei c-Funktion atan2(x,y) ??? -#: src/emc/rs274ngc/interp_read.cc:1668 src/emc/rs274ngc/interp_read.cc:1716 +#: src/emc/usr_intf/gscreen/gscreen.glade:2293 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6449 #, fuzzy -msgid "Left bracket missing after 'elseif'" -msgstr "Fehlende linke Klammer nach Schrägstrich bei atan" +msgid "Calibration" +msgstr "_Kalibrierung..." -#: src/emc/rs274ngc/interp_read.cc:1858 -#, c-format -msgid "Cannot change #<%s>" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2304 +#, fuzzy +msgid "Halmeter" +msgstr "HAL-Meter" -#: src/emc/rs274ngc/interp_read.cc:1889 src/emc/rs274ngc/interp_read.cc:1932 -#: src/emc/rs274ngc/interp_namedparams.cc:370 emc/rs274ngc/interp_read.cc:1865 -#, c-format -msgid "Internal error: Could not assign #<%s>" +#: src/emc/usr_intf/gscreen/gscreen.glade:2315 +msgid "" +"linuxcnc\n" +" Status" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1906 -#, c-format -msgid "init_named_parameter must be global #<%s>" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2327 +#, fuzzy +msgid "Halscope" +msgstr "HAL-Scope" -#: src/emc/rs274ngc/interp_read.cc:2093 -#: src/emc/rs274ngc/interp_namedparams.cc:161 emc/rs274ngc/interp_read.cc:2021 -#, c-format -msgid "Named parameter #<%s> not defined" +#: src/emc/usr_intf/gscreen/gscreen.glade:2338 +msgid "Ladder" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2174 src/emc/rs274ngc/interp_read.cc:1919 +#: src/emc/usr_intf/gscreen/gscreen.glade:2386 #, fuzzy -msgid "Cannot read current position with cutter radius compensation on" -msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" +msgid "Tooleditor" +msgstr "Werkzeugtabelle bearbeiten..." -#: src/emc/rs274ngc/interp_read.cc:2189 src/emc/rs274ngc/interp_read.cc:1934 +#: src/emc/usr_intf/gscreen/gscreen.glade:2404 #, fuzzy -msgid "Expected # reading parameter" -msgstr "Parameters aufklappen" - -#: src/emc/rs274ngc/interp_read.cc:2191 src/emc/rs274ngc/interp_read.cc:1936 -msgid "Expected ] reading bracketed parameter" -msgstr "" +msgid "" +"Offset\n" +" Page" +msgstr "Aktueller Wert" -#: src/emc/rs274ngc/interp_read.cc:2881 src/emc/rs274ngc/interp_read.cc:2608 -#, c-format -msgid "bad number format (conversion failed) parsing '%s'" +#: src/emc/usr_intf/gscreen/gscreen.glade:2572 +#: src/emc/usr_intf/gscreen/gscreen.glade:2749 +#: src/emc/usr_intf/gscreen/gscreen.glade:3156 +msgid "\n" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2882 src/emc/rs274ngc/interp_read.cc:2609 -#, c-format -msgid "bad number format (trailing characters) parsing '%s'" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2584 +#, fuzzy +msgid "Tool Setting" +msgstr "Re_ferenzfahrt" -#: src/emc/rs274ngc/interp_read.cc:2972 src/emc/rs274ngc/interp_read.cc:2699 -msgid "Calculation resulted in 'not a number'" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2648 +#, fuzzy +msgid "" +"Single\n" +" Step" +msgstr "ein Leerzeichen" -#: src/emc/rs274ngc/interp_read.cc:2974 src/emc/rs274ngc/interp_read.cc:2701 -msgid "Calculation resulted in 'infinity'" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2661 +#, fuzzy +msgid "" +"Run At\n" +" Line" +msgstr "Laufzeit:" -#: src/emc/rs274ngc/interp_read.cc:3268 src/emc/rs274ngc/interp_read.cc:2994 -#, c-format -msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" +#: src/emc/usr_intf/gscreen/gscreen.glade:2673 +msgid "" +"Change \n" +" View" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3391 src/emc/rs274ngc/interp_read.cc:3106 -#: emc/rs274ngc/interp_read.cc:3264 -msgid "Multiple U words on one line" -msgstr "Mehrere U-Wörter in einem Satz" - -#: src/emc/rs274ngc/interp_read.cc:3407 src/emc/rs274ngc/interp_read.cc:3122 -#: emc/rs274ngc/interp_read.cc:3280 -msgid "Multiple V words on one line" -msgstr "Mehrere V-Wörter in einem Satz" - -#: src/emc/rs274ngc/interp_read.cc:3423 src/emc/rs274ngc/interp_read.cc:3138 -#: emc/rs274ngc/interp_read.cc:3296 -msgid "Multiple W words on one line" -msgstr "Mehrere W-Wörter in einem Satz" - -#: src/emc/rs274ngc/interp_o_word.cc:104 src/emc/rs274ngc/interp_o_word.cc:95 -#, c-format -msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2760 +#, fuzzy +msgid "Homing\n" +msgstr "Re_ferenzfahrt" -#: src/emc/rs274ngc/rs274ngc_pre.cc:897 src/emc/rs274ngc/rs274ngc_pre.cc:1269 -#: src/emc/rs274ngc/rs274ngc_pre.cc:1344 emc/rs274ngc/rs274ngc_pre.cc:770 -msgid "Queue is not empty after tool change" -msgstr "Warteschlange ist nach Werkzeugwechsel nicht leer" +#: src/emc/usr_intf/gscreen/gscreen.glade:2781 +#, fuzzy +msgid "" +"Ignore\n" +"Limits" +msgstr "Alle Endschalter" -#: src/emc/rs274ngc/rs274ngc_pre.cc:1145 src/emc/rs274ngc/rs274ngc_pre.cc:1648 -#, fuzzy, c-format -msgid "Unable to open parameter file: '%s'" -msgstr "Datei kann nicht geöffnet werden" +#: src/emc/usr_intf/gscreen/gscreen.glade:2810 +#, fuzzy +msgid "" +" Set\n" +"Override" +msgstr "Vorschubübersteuerung" -#: src/emc/rs274ngc/rs274ngc_return.hh:4 emc/rs274ngc/rs274ngc_return.hh:4 -msgid "A file is already open" -msgstr "Datei ist bereits geöffnet" +#: src/emc/usr_intf/gscreen/gscreen.glade:2824 +msgid "Graphics\n" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:5 emc/rs274ngc/rs274ngc_return.hh:5 -msgid "All axes missing with g92" -msgstr "Keine Weginformation für G92 angegeben" +#: src/emc/usr_intf/gscreen/gscreen.glade:2838 +#, fuzzy +msgid "" +"Menu\n" +"Level" +msgstr "Schwelle" -#: src/emc/rs274ngc/rs274ngc_return.hh:6 emc/rs274ngc/rs274ngc_return.hh:6 -msgid "All axes missing with motion code" -msgstr "Keine Koordinaten für Wegbedingung angegeben" +#: src/emc/usr_intf/gscreen/gscreen.glade:2851 +msgid "" +" Launch\n" +"Keyboard" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:7 emc/rs274ngc/rs274ngc_return.hh:7 -msgid "Arc radius too small to reach end point" -msgstr "Kreisradius zu klein zum Erreichen des Endpunktes" +#: src/emc/usr_intf/gscreen/gscreen.glade:2868 +#, fuzzy +msgid "Select Buttons" +msgstr "Spindelencoder Index" -#: src/emc/rs274ngc/rs274ngc_return.hh:8 emc/rs274ngc/rs274ngc_return.hh:8 -msgid "Argument to acos out of range" -msgstr "Argument von acos außerhalb des gültigen Bereiches" +#: src/emc/usr_intf/gscreen/gscreen.glade:2955 +#, fuzzy +msgid "" +"Unhome \n" +" All" +msgstr "Referenzfahrt aufheben bei allen Achsen" -#: src/emc/rs274ngc/rs274ngc_return.hh:9 emc/rs274ngc/rs274ngc_return.hh:9 -msgid "Argument to asin out of range" -msgstr "Argument von asin außerhalb des gültigen Bereiches" +#: src/emc/usr_intf/gscreen/gscreen.glade:2967 +#, fuzzy +msgid "" +"Unhome\n" +" Axis" +msgstr "Referenzfahrt aufheben bei _%s-Achse" -#: src/emc/rs274ngc/rs274ngc_return.hh:10 emc/rs274ngc/rs274ngc_return.hh:10 -msgid "Attempt to divide by zero" -msgstr "Division durch Null" +#: src/emc/usr_intf/gscreen/gscreen.glade:2979 +#: src/emc/usr_intf/gscreen/gscreen.glade:3084 +#, fuzzy +msgid "" +"Toggle\n" +"Readout" +msgstr "Kühlmittel an/aus" -#: src/emc/rs274ngc/rs274ngc_return.hh:11 emc/rs274ngc/rs274ngc_return.hh:11 -msgid "Attempt to raise negative to non integer power" +#: src/emc/usr_intf/gscreen/gscreen.glade:3004 +msgid "" +"Jogging\n" +" Mode" msgstr "" -"Negative Zahl kann nicht mit einem nicht ganzzahligem Wert potenziert werden" -#: src/emc/rs274ngc/rs274ngc_return.hh:12 emc/rs274ngc/rs274ngc_return.hh:13 -msgid "Bad format unsigned integer" -msgstr "Falsches Format bei positiver Ganzzahl" +#: src/emc/usr_intf/gscreen/gscreen.glade:3016 +#, fuzzy +msgid "" +"coordinate\n" +" System" +msgstr "Koordinatensystem:" -#: src/emc/rs274ngc/rs274ngc_return.hh:13 emc/rs274ngc/rs274ngc_return.hh:14 -msgid "Bad number format" -msgstr "Falsches Zahlenformat" +#: src/emc/usr_intf/gscreen/gscreen.glade:3060 +#, fuzzy +msgid "" +"Index\n" +" Tool" +msgstr "Werkzeug angelegt" -#: src/emc/rs274ngc/rs274ngc_return.hh:14 emc/rs274ngc/rs274ngc_return.hh:15 -msgid "Bug bad g code modal group 0" -msgstr "Falsches G-Wort in Modal-Gruppe 0" +#: src/emc/usr_intf/gscreen/gscreen.glade:3072 +#, fuzzy +msgid "" +"Spindle\n" +"Controls" +msgstr "Strg-M" -#: src/emc/rs274ngc/rs274ngc_return.hh:15 emc/rs274ngc/rs274ngc_return.hh:16 -msgid "Bug code not g0 or g1" -msgstr "Wort ist nicht G0 oder G1" +#: src/emc/usr_intf/gscreen/gscreen.glade:3195 +#, fuzzy +msgid "Open" +msgstr "Öffnen..." -#: src/emc/rs274ngc/rs274ngc_return.hh:16 emc/rs274ngc/rs274ngc_return.hh:17 -msgid "Bug code not g17 g18 or g19" -msgstr "Wort ist nicht G17, G18 oder G19" +#: src/emc/usr_intf/gscreen/gscreen.glade:3205 +#, fuzzy +msgid "" +" Block\n" +"Delete" +msgstr "Löschen" -#: src/emc/rs274ngc/rs274ngc_return.hh:17 emc/rs274ngc/rs274ngc_return.hh:18 -msgid "Bug code not g20 or g21" -msgstr "Wort ist nicht G20 oder G21" +#: src/emc/usr_intf/gscreen/gscreen.glade:3217 +#, fuzzy +msgid "" +"Optional\n" +" Stop" +msgstr "Wahlweiser Halt" -#: src/emc/rs274ngc/rs274ngc_return.hh:18 emc/rs274ngc/rs274ngc_return.hh:19 -msgid "Bug code not g28 or g30" -msgstr "Wort ist nicht G28 oder G30" +#: src/emc/usr_intf/gscreen/gscreen.glade:3229 +msgid "" +" Full\n" +"View" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:19 emc/rs274ngc/rs274ngc_return.hh:20 -msgid "Bug code not g2 or g3" -msgstr "Wort ist nicht G2 oder G3" +#: src/emc/usr_intf/gscreen/gscreen.glade:3265 +#, fuzzy +msgid "" +"Next\n" +" Tab" +msgstr "Nächster Wert" -#: src/emc/rs274ngc/rs274ngc_return.hh:20 emc/rs274ngc/rs274ngc_return.hh:23 -msgid "Bug code not g4 g10 g28 g30 g53 or g92 series" -msgstr "Wort ist nicht G4, G10, G28, G30, G53 oder aus G92-Serie" +#: src/emc/usr_intf/gscreen/gscreen.glade:3285 +#, fuzzy +msgid "" +" Feed\n" +"Override" +msgstr "Vorschubübersteuerung:" -#: src/emc/rs274ngc/rs274ngc_return.hh:21 emc/rs274ngc/rs274ngc_return.hh:24 -msgid "Bug code not g61 g61.1 or g64" -msgstr "Wort ist nicht G61, G61.1 oder G64" +#: src/emc/usr_intf/gscreen/gscreen.glade:3298 +#, fuzzy +msgid "" +"Spindle\n" +"Override" +msgstr "Spindelübersteuerung:" -#: src/emc/rs274ngc/rs274ngc_return.hh:22 emc/rs274ngc/rs274ngc_return.hh:25 -msgid "Bug code not g90 or g91" -msgstr "Wort ist nicht G90 oder G91" +#: src/emc/usr_intf/gscreen/gscreen.glade:3311 +#, fuzzy +msgid "" +" Rapid\n" +"Override" +msgstr "Spindelübersteuerung:" -#: src/emc/rs274ngc/rs274ngc_return.hh:23 emc/rs274ngc/rs274ngc_return.hh:27 -msgid "Bug code not g98 or g99" -msgstr "Wort ist nicht G98 oder G99" +#: src/emc/usr_intf/gscreen/gscreen.glade:3332 +#, fuzzy +msgid "" +" Jog\n" +"Speed" +msgstr "Schrittgeschwindigkeit:" -#: src/emc/rs274ngc/rs274ngc_return.hh:24 emc/rs274ngc/rs274ngc_return.hh:28 -msgid "Bug code not in g92 series" -msgstr "Wort ist nicht aus G92-Serie" +#: src/emc/usr_intf/gscreen/gscreen.glade:3345 +#, fuzzy +msgid "" +" Jog\n" +"Increments" +msgstr "Intervall" -# Anmerkung:FJ: g593 ???? WM: wahrscheinlich g59.3 -#: src/emc/rs274ngc/rs274ngc_return.hh:25 emc/rs274ngc/rs274ngc_return.hh:29 -msgid "Bug code not in range g54 to g593" -msgstr "Wort ist nicht im Bereich G54 bis G59.3" +#: src/emc/usr_intf/gscreen/gscreen.glade:3361 +msgid "" +"Adjust\n" +"Rotary" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:26 emc/rs274ngc/rs274ngc_return.hh:30 -msgid "Bug code not m0 m1 m2 m30 m60" -msgstr "Wort ist nicht M0, M1, M2, M30 oder M60" +#: src/emc/usr_intf/gscreen/gscreen.glade:3383 +msgid "" +"Change\n" +" View" +msgstr "" -# Anmerkung:FJ: distance mode? -> incremental oder absolut? Oder was ist hier gemeint!? -# Anmerkung:FJ: Kettenmaß oder Absolutmaß -->> Bemaßungs-Modus, Maßmodus ... -# Vielleicht doch mal DIN66025 aus der Uni-Bib besorgen!? -# WM: wie wärs denn damit? -> Koordinaten Interpretationsmodus -# Anmerkung:FJ: DIN66025 spricht bei g90/g91 von absoluter/inkrementaler Maßangabe -# Was ausser abs. oder inkr. gibt es dort noch, daß diese Fehlermeldung -# benötigt wird :-))) -# msgstr "Koordinaten Interpretationsmodus nicht g90 oder g91" -#: src/emc/rs274ngc/rs274ngc_return.hh:27 emc/rs274ngc/rs274ngc_return.hh:31 -msgid "Bug distance mode not g90 or g91" -msgstr "Maßangabe-Modus ist nicht G90 oder G91" +#: src/emc/usr_intf/gscreen/gscreen.glade:3431 +#, fuzzy +msgid "" +" Pan\n" +"Vertical" +msgstr "Vertikal" -#: src/emc/rs274ngc/rs274ngc_return.hh:28 emc/rs274ngc/rs274ngc_return.hh:32 -msgid "Bug function should not have been called" -msgstr "Funktion sollte besser nicht aufgerufen werden" +#: src/emc/usr_intf/gscreen/gscreen.glade:3444 +#, fuzzy +msgid "" +" Pan\n" +"Horizontal" +msgstr "Horizontal" -# Anmerkung:FJ: Werkzeugradius-Kompensation in DIN66025: Werkzeugbahnkorrektur! -#: src/emc/rs274ngc/rs274ngc_return.hh:29 emc/rs274ngc/rs274ngc_return.hh:33 -msgid "Bug in tool radius comp" -msgstr "Fehler bei Werkzeugbahnkorrektur" +#: src/emc/usr_intf/gscreen/gscreen.glade:3457 +#, fuzzy +msgid "" +" Rotate\n" +"Horiontal" +msgstr "Horizontal" -#: src/emc/rs274ngc/rs274ngc_return.hh:30 emc/rs274ngc/rs274ngc_return.hh:34 -msgid "Bug plane not xy yz or xz" -msgstr "Fläche nicht in XY-, YZ- oder XZ-Ebene" +#: src/emc/usr_intf/gscreen/gscreen.glade:3470 +#, fuzzy +msgid "" +" Rotate\n" +"Vertical" +msgstr "Vertikal" -#: src/emc/rs274ngc/rs274ngc_return.hh:31 emc/rs274ngc/rs274ngc_return.hh:35 -msgid "Bug side not right or left" -msgstr "Seite nicht rechts oder links" +#: src/emc/usr_intf/gscreen/gscreen.glade:3491 +msgid "" +"Search\n" +" Bwd" +msgstr "" -# Anmerkung:FJ: Verfahrkommando laut DIN66025: Wegbedingung -#: src/emc/rs274ngc/rs274ngc_return.hh:32 emc/rs274ngc/rs274ngc_return.hh:36 -msgid "Bug unknown motion code" -msgstr "Unbekannte Wegbedingung" +#: src/emc/usr_intf/gscreen/gscreen.glade:3503 +msgid "" +"Search\n" +" Fwd" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:33 emc/rs274ngc/rs274ngc_return.hh:37 -msgid "Bug unknown operation" -msgstr "Unbekannter Befehl" +#: src/emc/usr_intf/gscreen/gscreen.glade:3561 +#, fuzzy +msgid "" +" Reload\n" +"Program" +msgstr "Programm neu laden" -#: src/emc/rs274ngc/rs274ngc_return.hh:34 emc/rs274ngc/rs274ngc_return.hh:38 -msgid "Cannot change axis offsets with cutter radius comp" +#: src/emc/usr_intf/gscreen/gscreen.glade:3604 +msgid "" +" Clear\n" +"status" msgstr "" -"Der Offset einer Achse kann nicht geändert werden, wenn " -"Werkzeugbahnkorrektur aktiv ist" -#: src/emc/rs274ngc/rs274ngc_return.hh:35 emc/rs274ngc/rs274ngc_return.hh:40 -msgid "Cannot create backup file" -msgstr "Backup Datei kann nicht erzeugt werden." - -#: src/emc/rs274ngc/rs274ngc_return.hh:36 emc/rs274ngc/rs274ngc_return.hh:41 -msgid "Cannot do g1 with zero feed rate" +#: src/emc/usr_intf/gscreen/gscreen.glade:3634 +msgid "G54" msgstr "" -"G1 kann nicht mit einer Vorschubgeschwindigkeit von 0 ausgeführt werden" -#: src/emc/rs274ngc/rs274ngc_return.hh:37 emc/rs274ngc/rs274ngc_return.hh:42 -msgid "Cannot do zero repeats of cycle" -msgstr "Null Wiederholungen eines Arbeitszyklus" +#: src/emc/usr_intf/gscreen/gscreen.glade:3650 +msgid "calc" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:38 emc/rs274ngc/rs274ngc_return.hh:43 -msgid "Cannot make arc with zero feed rate" +#: src/emc/usr_intf/gscreen/gscreen.glade:3725 +msgid "test" msgstr "" -"Ein Kreisbogen mit einer Vorschubgeschwindigkeit von 0 ist nicht möglich" -#: src/emc/rs274ngc/rs274ngc_return.hh:39 emc/rs274ngc/rs274ngc_return.hh:45 -msgid "Cannot open backup file" -msgstr "Backup-Datei kann nicht geöffnet werden" +#: src/emc/usr_intf/gscreen/gscreen.glade:3728 +msgid "test2" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:40 emc/rs274ngc/rs274ngc_return.hh:46 -msgid "Cannot open variable file" -msgstr "Variablen-Datei kann nicht geöffnet werden" +#: src/emc/usr_intf/gscreen/gscreen.glade:3778 +msgid "Data Entry" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:41 emc/rs274ngc/rs274ngc_return.hh:48 -msgid "Cannot probe with cutter radius comp on" -msgstr "Abtast-Fahrt bei aktiver Werkzeugbahnkorrektur nicht möglich" +#: src/emc/usr_intf/gscreen/gscreen.glade:3805 +#, fuzzy +msgid "Calculator Entry" +msgstr "Re_ferenzfahrt" -#: src/emc/rs274ngc/rs274ngc_return.hh:42 emc/rs274ngc/rs274ngc_return.hh:49 -msgid "Cannot probe with zero feed rate" -msgstr "Abtast-Fahrt mit einer Verfahrgeschwindigkeit von 0 nicht möglich" +#: src/emc/usr_intf/gscreen/gscreen.glade:3894 +#, fuzzy +msgid "Program Restart" +msgstr "Neustart anzeigen" -#: src/emc/rs274ngc/rs274ngc_return.hh:43 emc/rs274ngc/rs274ngc_return.hh:50 -msgid "Cannot put a b in canned cycle" +#: src/emc/usr_intf/gscreen/gscreen.glade:3909 +msgid "" +"Highlighting the run-at-line with the\n" +"up / down buttons or entering the line\n" +"directly." msgstr "" -"Angabe der Koordinaten-Wörter A und B in Arbeitszyklen ist nicht erlaubt" -#: src/emc/rs274ngc/rs274ngc_return.hh:44 emc/rs274ngc/rs274ngc_return.hh:51 -msgid "Cannot put a c in canned cycle" +#: src/emc/usr_intf/gscreen/gscreen.glade:3923 +msgid "" +"Line\n" +" Up" msgstr "" -"Angabe der Koordinaten-Wörter A und C in Arbeitszyklen ist nicht erlaubt" -#: src/emc/rs274ngc/rs274ngc_return.hh:45 emc/rs274ngc/rs274ngc_return.hh:52 -msgid "Cannot put an a in canned cycle" -msgstr "Angabe des Koordinaten-Wörters A in Arbeitszyklen ist nicht erlaubt" +#: src/emc/usr_intf/gscreen/gscreen.glade:3946 +msgid "" +" Line\n" +"Down" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:46 emc/rs274ngc/rs274ngc_return.hh:54 -msgid "Cannot turn cutter radius comp on when on" -msgstr "Werkzeugbahnkorrektur kann nicht aktiviert werden wenn schon aktiv" +#: src/emc/usr_intf/gscreen/gscreen.glade:4028 +msgid "S 1000" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:47 emc/rs274ngc/rs274ngc_return.hh:56 -msgid "Cannot use axis values with g80" -msgstr "Keine Koordinaten-Angabe zusammen mit G80 möglich" +#: src/emc/usr_intf/gscreen/gscreen.glade:4098 +msgid " FWD" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:48 emc/rs274ngc/rs274ngc_return.hh:57 -msgid "Cannot use axis values without a g code that uses them" +#: src/emc/usr_intf/gscreen/gscreen.glade:4133 +msgid " REV" msgstr "" -"Koordinaten-Angaben können nur zusammen mit einer passenden Wegbedingung " -"verwendet werden" -#: src/emc/rs274ngc/rs274ngc_return.hh:49 emc/rs274ngc/rs274ngc_return.hh:60 -msgid "Cannot use g28 or g30 with cutter radius comp" +#: src/emc/usr_intf/gscreen/gscreen2.glade:35 +msgid "screen 2" msgstr "" -"G28 oder G30 kann nicht mit aktiver Werkzeugbahnkorrektur verwendet werden" -#: src/emc/rs274ngc/rs274ngc_return.hh:50 emc/rs274ngc/rs274ngc_return.hh:61 -msgid "Cannot use g53 incremental" -msgstr "G53 kann nicht im inkrementalen Maßangabe-Modus benutzt werden" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:403 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:884 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:923 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:934 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:949 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1099 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1102 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1156 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1163 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1166 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2148 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2157 +msgid "**** GMOCCAPY INFO ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:51 emc/rs274ngc/rs274ngc_return.hh:62 -msgid "Cannot use g53 with cutter radius comp" -msgstr "G53 kann nicht mit aktiver Werkzeugbahnkorrektur verwendet werden" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:404 +msgid "**** no valid probe config in INI File ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:52 emc/rs274ngc/rs274ngc_return.hh:63 -msgid "Cannot use two g codes that both use axis values" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:405 +msgid "**** disabled tool measurement ****" msgstr "" -"Es darf maximal eine Wegbedingung mit einer Koordinaten-Angabe pro Satz " -"verwendet werden" -#: src/emc/rs274ngc/rs274ngc_return.hh:53 emc/rs274ngc/rs274ngc_return.hh:66 -msgid "Command too long" -msgstr "Befehl zu lang" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:770 +msgid "**** GMOCCAPY ERROR : ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:54 emc/rs274ngc/rs274ngc_return.hh:69 -msgid "Current point same as end point of arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:772 +#, python-format +msgid "" +"**** gmoccapy can only handle 4 axis, ****\n" +"**** but you have given %d through your INI file ****\n" msgstr "" -"Aktueller Koordinaten-Punkt ist identisch mit dem Endpunkt des Kreisbogens" -#: src/emc/rs274ngc/rs274ngc_return.hh:55 emc/rs274ngc/rs274ngc_return.hh:72 -msgid "Dwell time missing with g4" -msgstr "Verweilzeit-Angabe fehlt bei G4" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:774 +msgid "" +"**** gmoccapy will not start ****\n" +"\n" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:56 emc/rs274ngc/rs274ngc_return.hh:73 -msgid "Dwell time p word missing with g82" -msgstr "Verweilzeit-Angabe durch P-Wort fehlt bei G82" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:786 +#, fuzzy, python-format +msgid "Home axis %s" +msgstr "Referenzfahrt mit _%s-Achse" -#: src/emc/rs274ngc/rs274ngc_return.hh:57 emc/rs274ngc/rs274ngc_return.hh:74 -msgid "Dwell time p word missing with g86" -msgstr "Verweilzeit-Angabe durch P-Wort fehlt bei G86" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:885 +msgid "**** To many increments given in INI File for this screen ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:58 emc/rs274ngc/rs274ngc_return.hh:75 -msgid "Dwell time p word missing with g88" -msgstr "Verweilzeit-Angabe durch P-Wort fehlt bei G88" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:886 +msgid "**** Only the first 10 will be reachable through this screen ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:59 emc/rs274ngc/rs274ngc_return.hh:76 -msgid "Dwell time p word missing with g89" -msgstr "Verweilzeit-Angabe durch P-Wort fehlt bei G89" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:924 +msgid "**** gmoccapy screen 2 found ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:60 emc/rs274ngc/rs274ngc_return.hh:77 -msgid "Equal sign missing in parameter setting" -msgstr "Gleichheitszeichen beim Setzen eines Parameters fehlt" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:929 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1055 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1177 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1225 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1844 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2190 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2200 +msgid "**** GMOCCAPY ERROR ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:61 emc/rs274ngc/rs274ngc_return.hh:78 -msgid "F word missing with inverse time arc move" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:930 +msgid "**** screen 2 GLADE ERROR: ****" msgstr "" -"Angabe eines F-Wörters zum Fahren eines Kreisbogens im zeitreziproken " -"Vorschub-Modus fehlt" -#: src/emc/rs274ngc/rs274ngc_return.hh:62 emc/rs274ngc/rs274ngc_return.hh:79 -msgid "F word missing with inverse time g1 move" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:935 +msgid "**** No gmoccapy2.glade file present ****" msgstr "" -"Angabe eines F-Wörters zum Verfahren mit G1 im zeitreziproken Vorschub-Modus " -"fehlt" -#: src/emc/rs274ngc/rs274ngc_return.hh:63 emc/rs274ngc/rs274ngc_return.hh:80 -msgid "File ended with no percent sign" -msgstr "Es fehlt ein Prozent-Zeichen am Ende der Datei" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:950 +msgid "**** Invalid embeded tab configuration ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:64 emc/rs274ngc/rs274ngc_return.hh:81 -msgid "File ended with no percent sign or program end" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:951 +msgid "**** No tabs will be added! ****" msgstr "" -"Es fehlt ein Prozent-Zeichen oder ein Programm-Ende-Wort am Ende der Datei" -#: src/emc/rs274ngc/rs274ngc_return.hh:65 emc/rs274ngc/rs274ngc_return.hh:82 -msgid "File name too long" -msgstr "Dateiname zu lang" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:964 +msgid "ERROR, trying to initialize the user tabs or panaels, check for typos" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:66 emc/rs274ngc/rs274ngc_return.hh:83 -msgid "G code out of range" -msgstr "G-Wort außerhalb des erlaubten Bereiches" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1056 +msgid "**** Did not find a toolfile file in [EMCIO] TOOL_TABLE ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:67 emc/rs274ngc/rs274ngc_return.hh:85 -msgid "I word given for arc in yz plane" -msgstr "Angabe eines I-Wörters für einen Kreisbogen in der YZ-Ebene" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1100 +msgid "**** audio available! ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:68 emc/rs274ngc/rs274ngc_return.hh:86 -msgid "I word missing with g87" -msgstr "I-Wort fehlt bei G87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1103 +msgid "**** no audio available! ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:69 emc/rs274ngc/rs274ngc_return.hh:88 -msgid "J word given for arc in xz plane" -msgstr "Angabe eines J-Wörters für einen Kreisbogen in der XZ-Ebene" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1104 +msgid "**** PYGST libray not installed? ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:70 emc/rs274ngc/rs274ngc_return.hh:89 -msgid "J word missing with g87" -msgstr "Es fehlt ein J-Wort für G87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1157 +msgid "**** virtual keyboard program found : " +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:71 emc/rs274ngc/rs274ngc_return.hh:91 -msgid "K word given for arc in xy plane" -msgstr "Angabe eines K-Wörters für einen Kreisbogen in der XY-Ebene" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1164 +msgid "**** virtual keyboard program found : " +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:72 emc/rs274ngc/rs274ngc_return.hh:92 -msgid "K word missing with g87" -msgstr "Es fehlt ein J-Wort für G87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1167 +msgid "" +"**** No virtual keyboard installed, we checked for and ." +msgstr "" -# Anmerkung:FJ: Schrägstrich, atan? Klären? Division wie bei c-Funktion atan2(x,y) ??? -#: src/emc/rs274ngc/rs274ngc_return.hh:73 emc/rs274ngc/rs274ngc_return.hh:95 -msgid "Left bracket missing after slash with atan" -msgstr "Fehlende linke Klammer nach Schrägstrich bei atan" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1178 +msgid "**** Error with launching virtual keyboard," +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:74 emc/rs274ngc/rs274ngc_return.hh:96 -msgid "Left bracket missing after unary operation name" -msgstr "Fehlende linke Klammer nach unärem Befehlssnamen" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1179 +msgid "**** is onboard or matchbox-keyboard installed? ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:75 emc/rs274ngc/rs274ngc_return.hh:99 -msgid "M code greater than 199" -msgstr "M-Wort größer als 199" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1193 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1875 +msgid "interrupt running macro" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:76 emc/rs274ngc/rs274ngc_return.hh:100 -msgid "Mixed radius ijk format for arc" -msgstr "Radius- und IJK-Format durcheinandergewürfelt" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1226 +msgid "**** Did not find a parameter file in [RS274NGC] PARAMETER_FILE ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:77 emc/rs274ngc/rs274ngc_return.hh:101 -msgid "Multiple a words on one line" -msgstr "Mehrere A-Wörter in einem Satz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1294 +msgid "Select the file you want to be loaded at program start" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:78 emc/rs274ngc/rs274ngc_return.hh:102 -msgid "Multiple b words on one line" -msgstr "Mehrere B-Wörter in einem Satz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1329 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1353 +#, python-format +msgid "**** GMOCCAPY ERROR **** /n Message type %s not suported" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:79 emc/rs274ngc/rs274ngc_return.hh:103 -msgid "Multiple c words on one line" -msgstr "Mehrere C-Wörter in einem Satz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1462 +msgid "Unknown error type and no error text given" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:80 emc/rs274ngc/rs274ngc_return.hh:104 -msgid "Multiple d words on one line" -msgstr "Mehrere D-Wörter in einem Satz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1478 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1840 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1847 +msgid "Important Warning" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:81 emc/rs274ngc/rs274ngc_return.hh:105 -msgid "Multiple f words on one line" -msgstr "Mehrere F-Wörter in einem Satz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1498 +msgid "ERROR : External ESTOP is set, could not change state!" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:82 emc/rs274ngc/rs274ngc_return.hh:106 -msgid "Multiple h words on one line" -msgstr "Mehrere H-Wörter in einem Satz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1511 +msgid "ERROR : Could not switch the machine on, is limit switch aktivated?" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:83 emc/rs274ngc/rs274ngc_return.hh:107 -msgid "Multiple i words on one line" -msgstr "Mehrere I-Wörter in einem Satz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1730 +msgid "It is not possible to change to MDI Mode at the moment" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:84 emc/rs274ngc/rs274ngc_return.hh:108 -msgid "Multiple j words on one line" -msgstr "Mehrere J-Wörter in einem Satz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1754 +msgid "It is not possible to change to Auto Mode at the moment" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:85 emc/rs274ngc/rs274ngc_return.hh:109 -msgid "Multiple k words on one line" -msgstr "Mehrere K-Wörter in einem Satz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1838 +msgid "" +"\n" +"**** No subroutine folder or program prefix is given in the ini file **** \n" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:86 emc/rs274ngc/rs274ngc_return.hh:110 -msgid "Multiple l words on one line" -msgstr "Mehrere L-Wörter in einem Satz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1839 +msgid "**** so the corresponding file could not be found ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:87 emc/rs274ngc/rs274ngc_return.hh:111 -msgid "Multiple p words on one line" -msgstr "Mehrere P-Wörter in einem Satz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1845 +#, python-format +msgid "" +"\n" +"**** File %s of the macro could not be found ****\n" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:88 emc/rs274ngc/rs274ngc_return.hh:112 -msgid "Multiple q words on one line" -msgstr "Mehrere Q-Wörter in einem Satz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1846 +#, python-format +msgid "**** we searched in subdirectory %s ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:89 emc/rs274ngc/rs274ngc_return.hh:113 -msgid "Multiple r words on one line" -msgstr "Mehrere R-Wörter in einem Satz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1851 +msgid "Enter value:" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:90 emc/rs274ngc/rs274ngc_return.hh:114 -msgid "Multiple s words on one line" -msgstr "Mehrere S-Wörter in einem Satz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1852 +#, fuzzy, python-format +msgid "Set parameter %s to:" +msgstr "Para_meter" -#: src/emc/rs274ngc/rs274ngc_return.hh:91 emc/rs274ngc/rs274ngc_return.hh:115 -msgid "Multiple t words on one line" -msgstr "Mehrere T-Wörter in einem Satz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1854 +#, fuzzy +msgid "conversion error" +msgstr "Unbekannter Fehler" -#: src/emc/rs274ngc/rs274ngc_return.hh:92 emc/rs274ngc/rs274ngc_return.hh:116 -msgid "Multiple x words on one line" -msgstr "Mehrere X-Wörter in einem Satz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1855 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3610 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3634 +msgid "Conversion error !" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:93 emc/rs274ngc/rs274ngc_return.hh:117 -msgid "Multiple y words on one line" -msgstr "Mehrere Y-Wörter in einem Satz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1856 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3299 +msgid "" +"Please enter only numerical values\n" +"Values have not been applied" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:94 emc/rs274ngc/rs274ngc_return.hh:118 -msgid "Multiple z words on one line" -msgstr "Mehrere Z-Wörter in einem Satz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2149 +#, python-brace-format +msgid "**** replaced {0} to {1} ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:95 emc/rs274ngc/rs274ngc_return.hh:119 -msgid "Must use g0 or g1 with g53" -msgstr "G53 muß immer zusammen mit G0 oder G1 benutzt werden" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2158 +msgid "" +"\n" +"**** found more than 9 macros, only the first 9 will be used ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:96 emc/rs274ngc/rs274ngc_return.hh:120 -msgid "Negative argument to sqrt" -msgstr "Wurzel (sqrt-Befehl) mit negativem Argument" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2191 +#, python-format +msgid "**** %s ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:97 emc/rs274ngc/rs274ngc_return.hh:121 -msgid "Negative d word tool radius index used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2201 +#, python-format +msgid "**** No widget named: %s to sensitize ****" msgstr "" -"Negative Zahl bei bei D-Wort (Werkzeug-Radius als Index in der Werkzeug-" -"Tabelle)" -#: src/emc/rs274ngc/rs274ngc_return.hh:98 emc/rs274ngc/rs274ngc_return.hh:122 -msgid "Negative f word used" -msgstr "F-Wort mit negativer Zahl" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2366 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1561 +#, fuzzy +msgid "No tool description available" +msgstr "Es ist keine Beschreibung verfügbar." -#: src/emc/rs274ngc/rs274ngc_return.hh:99 emc/rs274ngc/rs274ngc_return.hh:123 -msgid "Negative g code used" -msgstr "G-Wort mit negativer Zahl" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2591 +#, python-format +msgid "Halo, welcome to the test message %d" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:100 emc/rs274ngc/rs274ngc_return.hh:124 -msgid "Negative h word used" -msgstr "H-Wort mit negativer Zahl" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2732 +msgid "Hal Pin is low, Access denied" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:101 emc/rs274ngc/rs274ngc_return.hh:125 -msgid "Negative l word used" -msgstr "L-Wort mit negativer Zahl" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2734 +msgid "wrong code entered, Access denied" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:102 emc/rs274ngc/rs274ngc_return.hh:126 -msgid "Negative m code used" -msgstr "M-Wort mit negativer Zahl" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2735 +msgid "Just to warn you" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:103 emc/rs274ngc/rs274ngc_return.hh:127 -msgid "Negative or zero q value used" -msgstr "Q-Wert kleiner oder gleich Null" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2810 +msgid "ERROR : No limit switch is active, ignore limits will not be set." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:104 emc/rs274ngc/rs274ngc_return.hh:128 -msgid "Negative p word used" -msgstr "P-Wort mit negativer Zahl" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2850 +#, fuzzy +msgid "Classicladder real-time component not detected" +msgstr "Echtzeicht-Komponente nicht geladen" -#: src/emc/rs274ngc/rs274ngc_return.hh:105 emc/rs274ngc/rs274ngc_return.hh:129 -msgid "Negative spindle speed used" -msgstr "Geschwindigkeit der Werkzeug-Spindel kleiner Null" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2937 +msgid "Something went wrong, we have an unknown spindle widget" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:106 emc/rs274ngc/rs274ngc_return.hh:130 -msgid "Negative tool id used" -msgstr "Negative Werkzeugnummer verwendet" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3046 +msgid "Do you really want to delete the MDI history?\n" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:107 emc/rs274ngc/rs274ngc_return.hh:131 -msgid "Nested comment found" -msgstr "Verschachtelter Kommentar entdeckt" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3047 +msgid "this will not delete the MDI History file, but will\n" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:108 emc/rs274ngc/rs274ngc_return.hh:132 -msgid "No characters found in reading real value" -msgstr "Reelle Zahl erwartet, aber keinerlei Zeichen gefunden" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3048 +msgid "delete the listbox entries for this session" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:109 emc/rs274ngc/rs274ngc_return.hh:134 -msgid "Non integer value for integer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3049 +msgid "Attention!!" msgstr "" -"Angabe eines nicht-ganzzahligen Wertes, obwohl eine Ganzzahl erwartet wurde" -#: src/emc/rs274ngc/rs274ngc_return.hh:110 emc/rs274ngc/rs274ngc_return.hh:135 -msgid "Null missing after newline" -msgstr "Fehlende Null nach Zeilenumbruch" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3076 +msgid "This button will show or hide the keyboard" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:111 emc/rs274ngc/rs274ngc_return.hh:140 -msgid "Parameter file out of order" -msgstr "Parameter-Datei nicht in Ordnung" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3196 +#, python-format +msgid "Offset %s could not be set, because off unknown axis" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:112 emc/rs274ngc/rs274ngc_return.hh:141 -msgid "Parameter number out of range" -msgstr "Parameter-Nummer ausserhalb des gültigen Bereichs" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3197 +msgid "Wrong offset setting!" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:113 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3202 #, fuzzy -msgid "Parameter is readonly" -msgstr "Parameterdatei" +msgid "Enter value for diameter" +msgstr "" +"Angabe eines nicht-ganzzahligen Wertes, obwohl eine Ganzzahl erwartet wurde" -#: src/emc/rs274ngc/rs274ngc_return.hh:114 emc/rs274ngc/rs274ngc_return.hh:142 -msgid "Q word missing with g83" -msgstr "Q-Wort fehlt bei G83" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3203 +#, fuzzy +msgid "Set diameter to:" +msgstr "Durchmesser:" -#: src/emc/rs274ngc/rs274ngc_return.hh:115 emc/rs274ngc/rs274ngc_return.hh:144 -msgid "Queue is not empty after probing" -msgstr "Warteschlange ist nach Abtast-Fahrt nicht leer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3206 +#, fuzzy +msgid "Enter value for radius" +msgstr "" +"Angabe eines nicht-ganzzahligen Wertes, obwohl eine Ganzzahl erwartet wurde" -#: src/emc/rs274ngc/rs274ngc_return.hh:116 emc/rs274ngc/rs274ngc_return.hh:145 -msgid "R clearance plane unspecified in cycle" -msgstr "Angabe einer R-Abstands-Ebene für den Zklyus fehlt" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3207 +#, fuzzy +msgid "Set radius to:" +msgstr "Kreis mit Radius Null" -#: src/emc/rs274ngc/rs274ngc_return.hh:117 emc/rs274ngc/rs274ngc_return.hh:146 -msgid "R i j k words all missing for arc" -msgstr "Angabe von R, I, J oder K fehlt bei einem Kreisbogen" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3210 +#, fuzzy, python-format +msgid "Enter value for axis %s" +msgstr "" +"Angabe eines nicht-ganzzahligen Wertes, obwohl eine Ganzzahl erwartet wurde" -#: src/emc/rs274ngc/rs274ngc_return.hh:118 emc/rs274ngc/rs274ngc_return.hh:147 -msgid "R less than x in cycle in yz plane" -msgstr "R ist kleiner als X während eines Arbeitszyklus in der YZ-Ebene" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3211 +#, fuzzy, python-format +msgid "Set axis %s to:" +msgstr "Achsoffset:" -#: src/emc/rs274ngc/rs274ngc_return.hh:119 emc/rs274ngc/rs274ngc_return.hh:148 -msgid "R less than y in cycle in xz plane" -msgstr "R ist kleiner als Y während eines Arbeitszyklus in der XZ-Ebene" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3215 +msgid "Conversion error in btn_set_value" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:120 emc/rs274ngc/rs274ngc_return.hh:149 -msgid "R less than z in cycle in xy plane" -msgstr "R ist kleiner als Z während eines Arbeitszyklus in der XY-Ebene" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3216 +msgid "Conversion error in btn_set_value!" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:121 emc/rs274ngc/rs274ngc_return.hh:150 -msgid "R word with no g code that uses it" -msgstr "Koordinaten-Wort R ohne zugehörige Wegbedingung (G)" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3217 +msgid "Please enter only numerical values. Values have not been applied" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:122 emc/rs274ngc/rs274ngc_return.hh:155 -msgid "Slash missing after first atan argument" -msgstr "Fehlender Schrägstrich nach dem ersten Argument in einer atan-Funktion" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3232 +msgid "" +"you did not selected a system to be changed to, so nothing will be changed" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:123 emc/rs274ngc/rs274ngc_return.hh:156 -msgid "Spindle not turning clockwise in g84" -msgstr "G84, aber Werkzeug-Spindel dreht sich nicht im Uhrzeigersinn" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3640 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3654 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3658 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3673 +msgid "Important Warning!" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:124 emc/rs274ngc/rs274ngc_return.hh:157 -msgid "Spindle not turning in g86" -msgstr "G86, aber Werkzeug-Spindel nicht in Rotation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3284 +msgid "Enter the block height" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:125 emc/rs274ngc/rs274ngc_return.hh:158 -msgid "Spindle not turning in g87" -msgstr "G87, aber Werkzeug-Spindel nicht in Rotation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3285 +msgid "Block height measured from base table" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:126 emc/rs274ngc/rs274ngc_return.hh:159 -msgid "Spindle not turning in g88" -msgstr "G88, aber Werkzeug-Spindel nicht in Rotation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3297 +msgid "Conversion error in btn_block_height" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:127 emc/rs274ngc/rs274ngc_return.hh:160 -msgid "Sscanf failed" -msgstr "Fehler in Funktion sscanf()" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3298 +msgid "Conversion error in btn_block_height!" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:128 emc/rs274ngc/rs274ngc_return.hh:161 -msgid "Start point too close to probe point" -msgstr "Startpunkt zu dicht am Abtast-Punkt" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3536 +msgid "Please remove the mounted tool and press OK when done" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:129 emc/rs274ngc/rs274ngc_return.hh:162 -msgid "Too many m codes on line" -msgstr "Zu viele M-Wörter in einer Zeile" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3539 +#, python-brace-format +msgid "" +"Please change to tool\n" +"\n" +"# {0:d} {1}\n" +"\n" +" then click OK." +msgstr "" -# Anmerkung:FJ: Tool max? Was das? -# Anmerkung:AJ: sollte "Index in tool table file too large" sein -#: src/emc/rs274ngc/rs274ngc_return.hh:130 -#, fuzzy -msgid "Pocket max too large" -msgstr "Werkzeug-Datei-Index zu groß" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3549 +msgid "Tool Change has been aborted!\n" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:131 emc/rs274ngc/rs274ngc_return.hh:166 -msgid "Tool radius not less than arc radius with comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3550 +msgid "The old tool will remain set!" msgstr "" -"Werkzeug-Radius bei der Werkzeugbahnkorrektur ist größer als der " -"Kreisbogenradius" -#: src/emc/rs274ngc/rs274ngc_return.hh:132 emc/rs274ngc/rs274ngc_return.hh:167 -msgid "Two g codes used from same modal group" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3570 +msgid "No or more than one tool selected in tool table" msgstr "" -"Benutzung von zwei G-Wörtern aus der selben modalen Gruppe in einer Zeile" -#: src/emc/rs274ngc/rs274ngc_return.hh:133 emc/rs274ngc/rs274ngc_return.hh:168 -msgid "Two m codes used from same modal group" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3571 +msgid "Please select only one tool in the table" msgstr "" -"Benutzung von zwei M-Wörtern aus der selben modalen Gruppe in einer Zeile" -#: src/emc/rs274ngc/rs274ngc_return.hh:134 -#, fuzzy, c-format -msgid "Unable to open file <%s>" -msgstr "Datei kann nicht geöffnet werden" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3573 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3580 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3589 +msgid "Warning Tool Touch off not possible!" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:135 emc/rs274ngc/rs274ngc_return.hh:170 -msgid "Unclosed comment found" -msgstr "Nicht abgeschlossener Kommentar" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3577 +msgid "you can not touch of a tool, witch is not mounted in the spindle" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:136 emc/rs274ngc/rs274ngc_return.hh:171 -msgid "Unclosed expression" -msgstr "Nicht abgeschlossener Ausdruck" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3578 +msgid "your selection has been reseted to the tool in spindle" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:137 emc/rs274ngc/rs274ngc_return.hh:172 -msgid "Unknown g code used" -msgstr "Unbekanntes G-Wort" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3586 +#, fuzzy +msgid "" +"Tool touch off is not possible with cutter radius compensation switched on!\n" +msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" -#: src/emc/rs274ngc/rs274ngc_return.hh:138 emc/rs274ngc/rs274ngc_return.hh:173 -msgid "Unknown m code used" -msgstr "Unbekanntes M-Wort" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3587 +msgid "Please emit an G40 before tool touch off" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:139 emc/rs274ngc/rs274ngc_return.hh:174 -msgid "Unknown operation" -msgstr "Unbekannter Befehl" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3597 +msgid "Real big error!" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:140 emc/rs274ngc/rs274ngc_return.hh:175 -msgid "Unknown operation name starting with a" -msgstr "Unbekannter Befehl beginnend mit A" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3598 +msgid "" +"You managed to come to a place that is not possible in on_btn_tool_touchoff" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3602 +#, fuzzy, python-format +msgid "Enter value for axis %s to set:" +msgstr "" +"Angabe eines nicht-ganzzahligen Wertes, obwohl eine Ganzzahl erwartet wurde" -#: src/emc/rs274ngc/rs274ngc_return.hh:141 emc/rs274ngc/rs274ngc_return.hh:176 -msgid "Unknown operation name starting with m" -msgstr "Unbekannter Befehl beginnend mit M" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3603 +#, python-brace-format +msgid "Set parameter of tool {0:d} and axis {1} to:" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:142 emc/rs274ngc/rs274ngc_return.hh:177 -msgid "Unknown operation name starting with o" -msgstr "Unbekannter Befehl beginnend mit O" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3608 +#, python-format +msgid "Conversion error because of wrong entry for touch off axis %s" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:143 emc/rs274ngc/rs274ngc_return.hh:178 -msgid "Unknown operation name starting with x" -msgstr "Unbekannter Befehl beginnend mit X" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3628 +msgid "Enter the tool number as integer " +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:144 emc/rs274ngc/rs274ngc_return.hh:179 -msgid "Unknown word starting with a" -msgstr "Unbekanntes Wort beginnend mit A" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3629 +#, fuzzy +msgid "Select the tool to change" +msgstr "Element zum Anzeigen auswählen" -#: src/emc/rs274ngc/rs274ngc_return.hh:145 emc/rs274ngc/rs274ngc_return.hh:180 -msgid "Unknown word starting with c" -msgstr "Unbekanntes Wort beginnend mit C" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3631 +msgid "Conversion error because of wrong entry for tool number\n" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:146 emc/rs274ngc/rs274ngc_return.hh:181 -msgid "Unknown word starting with e" -msgstr "Unbekanntes Wort beginnend mit E" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3632 +msgid "enter only integer nummbers" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:147 emc/rs274ngc/rs274ngc_return.hh:182 -msgid "Unknown word starting with f" -msgstr "Unbekanntes Wort beginnend mit F" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3657 +msgid "Selected tool is already in spindle, no change needed." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:148 emc/rs274ngc/rs274ngc_return.hh:183 -msgid "Unknown word starting with l" -msgstr "Unbekanntes Wort beginnend mit L" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3653 +msgid "" +"you selected no or more than one tool, the tool selection must be unique" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:149 emc/rs274ngc/rs274ngc_return.hh:184 -msgid "Unknown word starting with r" -msgstr "Unbekanntes Wort beginnend mit R" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3672 +msgid "Could not understand the entered tool number. Will not change anything" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:150 emc/rs274ngc/rs274ngc_return.hh:185 -msgid "Unknown word starting with s" -msgstr "Unbekanntes Wort beginnend mit S" +#: src/emc/usr_intf/gmoccapy/dialogs.py:33 +#: src/emc/usr_intf/gmoccapy/dialogs.py:38 +msgid "Enter System Unlock Code" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:151 emc/rs274ngc/rs274ngc_return.hh:186 -msgid "Unknown word starting with t" -msgstr "Unbekanntes Wort beginnend mit T" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter value" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:152 emc/rs274ngc/rs274ngc_return.hh:187 -msgid "Unknown word where unary operation could be" -msgstr "Unbekanntes Wort, wo unärer Befehl erwartet" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter the value to set" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:153 emc/rs274ngc/rs274ngc_return.hh:188 -msgid "X and y words missing for arc in xy plane" -msgstr "X- und Y-Wörter fehlen für Kreisbogen in der XY-Ebene" +#: src/emc/usr_intf/gmoccapy/notification.py:205 +#, python-format +msgid "Error trying to delet the message with number %s" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:154 emc/rs274ngc/rs274ngc_return.hh:189 -msgid "X and z words missing for arc in xz plane" -msgstr "X- und Z-Wörter fehlen für Kreisbogen in XZ-Ebene" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:409 +msgid "left rotate, middle move, right zoom" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:155 emc/rs274ngc/rs274ngc_return.hh:190 -msgid "X value unspecified in yz plane canned cycle" -msgstr "Keine Angabe eines X-Wertes bei Arbeitszyklus in XZ-Ebene" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:413 +msgid "left zoom, middle move, right rotate" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:156 emc/rs274ngc/rs274ngc_return.hh:192 -msgid "Y and z words missing for arc in yz plane" -msgstr "Y- und Z-Wort fehlt für Kreisbogen in YZ-Ebene" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:417 +msgid "left move, middle rotate, right zoom" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:157 emc/rs274ngc/rs274ngc_return.hh:193 -msgid "Y value unspecified in xz plane canned cycle" -msgstr "Keine Angabe eines Y-Wertes bei Arbeitszyklus in XZ-Ebene" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:421 +msgid "left zoom, middle rotate, right move" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:158 emc/rs274ngc/rs274ngc_return.hh:194 -msgid "Z value unspecified in xy plane canned cycle" -msgstr "Keine Angabe eines Z-Wertes bei Arbeitszyklus in XY-Ebene" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:425 +msgid "left move, middle zoom, right rotate" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:159 emc/rs274ngc/rs274ngc_return.hh:195 -msgid "Zero or negative argument to ln" -msgstr "Argument der ln-Funktion kleiner oder gleich Null" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:429 +msgid "left rotate, middle zoom, right move" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:161 emc/rs274ngc/rs274ngc_return.hh:197 -msgid "K word missing with g33/g33.1" -msgstr "Es fehlt ein K-Wort für G33/G33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:526 +#, fuzzy +msgid "clear plot" +msgstr "Werkzeugpfad löschen" -#: src/emc/rs274ngc/rs274ngc_return.hh:162 emc/rs274ngc/rs274ngc_return.hh:198 -msgid "F word used with a g33/g33.1" -msgstr "Benutzung eines F-Wörters mit G33/G33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:585 +#, fuzzy +msgid "view perspective" +msgstr "Perspektivische Ansicht" -#: src/emc/rs274ngc/rs274ngc_return.hh:163 emc/rs274ngc/rs274ngc_return.hh:201 -msgid "Unknown operation name starting with e" -msgstr "Unbekannter Befehl beginnend mit E" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:608 +msgid "view along the X axis from positive to negative" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:164 emc/rs274ngc/rs274ngc_return.hh:202 -msgid "Unknown operation name starting with n" -msgstr "Unbekannter Befehl beginnend mit N" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:633 +msgid "view along the Y axis from positive to negative" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:165 emc/rs274ngc/rs274ngc_return.hh:203 -msgid "Unknown operation name starting with g" -msgstr "Unbekannter Befehl beginnend mit G" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:658 +msgid "view along the Z axis from positive to negative" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:166 emc/rs274ngc/rs274ngc_return.hh:204 -msgid "Unknown operation name starting with l" -msgstr "Unbekannter Befehl beginnend mit L" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:685 +msgid "Show or hide tool path" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:167 emc/rs274ngc/rs274ngc_return.hh:205 -msgid "Too many subroutine parameters" -msgstr "Zu viele Parameter für die Unterfunktion" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:708 +msgid "Show or hide dimensions" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:168 emc/rs274ngc/rs274ngc_return.hh:206 -msgid "Too many subroutine levels" -msgstr "Zu viele Ebenen für die Unterfunktion" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:731 +msgid "" +"view along the Y axis from positive to negative as viewn for a back tool " +"lathe" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:169 -#: src/emc/rs274ngc/rs274ngc_return.hh:170 emc/rs274ngc/rs274ngc_return.hh:207 -msgid "Unknown control command in o word" -msgstr "Unbekannter Befehl im O-Wort" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:791 +#, fuzzy +msgid "Offset Page" +msgstr "Aktueller Wert" -#: src/emc/rs274ngc/rs274ngc_return.hh:170 -#: src/emc/rs274ngc/rs274ngc_return.hh:171 emc/rs274ngc/rs274ngc_return.hh:208 -msgid "Too many oword labels" -msgstr "Zu viele O-Wort Bezeichner" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:809 +#, fuzzy +msgid "Tooledit" +msgstr "Werkzeuge" -#: src/emc/rs274ngc/rs274ngc_return.hh:171 -#: src/emc/rs274ngc/rs274ngc_return.hh:172 emc/rs274ngc/rs274ngc_return.hh:209 -msgid "Unknown oword number" -msgstr "Unbekannte O-Wort-Nummer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:831 +#, fuzzy +msgid "File Selection" +msgstr "A Richtung" -#: src/emc/rs274ngc/rs274ngc_return.hh:172 -#: src/emc/rs274ngc/rs274ngc_return.hh:173 emc/rs274ngc/rs274ngc_return.hh:210 -msgid "Nested subroutine definition" -msgstr "Verschachtelte Definition einer Unterfunktion" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:869 +#, fuzzy +msgid "Toggle between metric and imperial units" +msgstr "Zwischen verschieben und drehen umschalten" -#: src/emc/rs274ngc/rs274ngc_return.hh:173 -#: src/emc/rs274ngc/rs274ngc_return.hh:174 emc/rs274ngc/rs274ngc_return.hh:211 -msgid "Not in subroutine definition" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:887 +msgid "Switch DRO to DTG mode" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:174 -#: src/emc/rs274ngc/rs274ngc_return.hh:175 emc/rs274ngc/rs274ngc_return.hh:213 -msgid "File not open" -msgstr "Datei ist nicht geöffnet" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:905 +#, fuzzy +msgid "Toggle between machine and relative coordinates" +msgstr "Zwischen verschieben und drehen umschalten" -#: src/emc/rs274ngc/rs274ngc_return.hh:175 -#: src/emc/rs274ngc/rs274ngc_return.hh:176 emc/rs274ngc/rs274ngc_return.hh:214 -msgid "Need tool prepared -Txx- for toolchange" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:928 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:946 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:963 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:980 +msgid "Klick to toggle through the DRO modes" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:176 -#: src/emc/rs274ngc/rs274ngc_return.hh:177 emc/rs274ngc/rs274ngc_return.hh:215 -msgid "Cannot change planes with cutter radius compensation on" -msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1253 +#, fuzzy +msgid "Ignore limits" +msgstr "Grenzw. aufheben" -#: src/emc/rs274ngc/rs274ngc_return.hh:177 -#: src/emc/rs274ngc/rs274ngc_return.hh:178 emc/rs274ngc/rs274ngc_return.hh:216 -msgid "Cutter radius compensation allowed only in XY, XZ planes" -msgstr "Werkzeugradiuskorrektur ist nur in XY- und XZ-Ebenen erlaubt" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1321 +#, fuzzy +msgid "Jogging" +msgstr "Re_ferenzfahrt" -#: src/emc/rs274ngc/rs274ngc_return.hh:178 -#: src/emc/rs274ngc/rs274ngc_return.hh:179 emc/rs274ngc/rs274ngc_return.hh:217 -msgid "P word missing with G76" -msgstr "P-Wort fehlt bei G87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1430 +msgid "Information over the tool in spindle" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:179 -#: src/emc/rs274ngc/rs274ngc_return.hh:180 emc/rs274ngc/rs274ngc_return.hh:218 -msgid "I J or K words missing with G76" -msgstr "I-, J- oder K-Wort fehlt bei G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1448 +#, fuzzy +msgid "Tool no." +msgstr "Werkzeug-Info" -#: src/emc/rs274ngc/rs274ngc_return.hh:180 -#: src/emc/rs274ngc/rs274ngc_return.hh:181 emc/rs274ngc/rs274ngc_return.hh:219 -msgid "Cannot move rotary axes with G76" -msgstr "Rotations-Achse kann nicht mit G76 bewegt werden" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1474 +#, fuzzy +msgid "Diameter" +msgstr "Durchmesser:" -#: src/emc/rs274ngc/rs274ngc_return.hh:181 -#: src/emc/rs274ngc/rs274ngc_return.hh:182 emc/rs274ngc/rs274ngc_return.hh:220 -msgid "Multiple e words on one line" -msgstr "Mehrere E-Wörter in einer einzelnen Zeile" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1503 +#, fuzzy +msgid "offset z" +msgstr "Offsets" -#: src/emc/rs274ngc/rs274ngc_return.hh:182 -#: src/emc/rs274ngc/rs274ngc_return.hh:183 emc/rs274ngc/rs274ngc_return.hh:222 -msgid "Named parameter not terminated" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1532 +#, fuzzy +msgid "offset x" +msgstr "Offsets" -#: src/emc/rs274ngc/rs274ngc_return.hh:183 -#: src/emc/rs274ngc/rs274ngc_return.hh:184 emc/rs274ngc/rs274ngc_return.hh:225 -msgid "Out of memory" -msgstr "Platz im Hauptspeicher reicht nicht aus" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1580 +#, fuzzy +msgid "Tool information" +msgstr "Konfiguration *" -#: src/emc/rs274ngc/rs274ngc_return.hh:184 -#: src/emc/rs274ngc/rs274ngc_return.hh:185 emc/rs274ngc/rs274ngc_return.hh:227 -msgid "S word missing with G96" -msgstr "S-Wort fehlt bei G96" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1592 +msgid "G and M code information as well as speed and feed" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:185 -#: src/emc/rs274ngc/rs274ngc_return.hh:186 emc/rs274ngc/rs274ngc_return.hh:228 -msgid "Queue is not empty after external input" -msgstr "Warteschlange ist nach externer Eingabe nicht leer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1611 +#, fuzzy +msgid "active_mcodes_label" +msgstr "Aktive G-Codes:" -#: src/emc/rs274ngc/rs274ngc_return.hh:186 -#: src/emc/rs274ngc/rs274ngc_return.hh:187 emc/rs274ngc/rs274ngc_return.hh:229 -msgid "Can't select analog input with wait type != immediate return" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1663 +#, fuzzy +msgid "active_gcodes_label" +msgstr "Aktive G-Codes:" -#: src/emc/rs274ngc/rs274ngc_return.hh:187 -#: src/emc/rs274ngc/rs274ngc_return.hh:188 emc/rs274ngc/rs274ngc_return.hh:230 -msgid "Zero timeout with wait type != immediate return" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1717 +#, fuzzy +msgid "G-Code" +msgstr "Re_ferenzfahrt" -#: src/emc/rs274ngc/rs274ngc_return.hh:188 -#: src/emc/rs274ngc/rs274ngc_return.hh:189 emc/rs274ngc/rs274ngc_return.hh:231 -msgid "Invalid to select both a digital and an analog input with M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1730 +msgid "The name and location of the loaded program" msgstr "" -"Befehl M66 kann nicht gleichtzeitig einen Analog- und Digitaleingang " -"auswählen" -#: src/emc/rs274ngc/rs274ngc_return.hh:189 -#: src/emc/rs274ngc/rs274ngc_return.hh:190 emc/rs274ngc/rs274ngc_return.hh:232 -msgid "Need to have either a valid P or a valid E word with M66" -msgstr "Befehl M66 muss ein gültiges P- oder E-Wort enthalten" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1742 +#, fuzzy +msgid "No Program loaded" +msgstr "Programmdatei" -#: src/emc/rs274ngc/rs274ngc_return.hh:190 -#: src/emc/rs274ngc/rs274ngc_return.hh:191 emc/rs274ngc/rs274ngc_return.hh:233 -msgid "Q word missing with g73" -msgstr "Q-Wort fehlt bei G73" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1750 +#, fuzzy +msgid "Program" +msgstr "Re_ferenzfahrt" -#: src/emc/rs274ngc/rs274ngc_return.hh:191 -#: src/emc/rs274ngc/rs274ngc_return.hh:192 emc/rs274ngc/rs274ngc_return.hh:234 -msgid "Digital input selected out of bounds" -msgstr "Gewählter Digitaleingang liegt außerhalb des gültigen Bereichs" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1800 +msgid "Vel." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:192 -#: src/emc/rs274ngc/rs274ngc_return.hh:193 emc/rs274ngc/rs274ngc_return.hh:235 -msgid "Analog input selected out of bounds" -msgstr "Gewählter Analogeingang liegt außerhalb des gültigen Bereichs" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1814 +msgid "Displays the current velocity" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:193 -#: src/emc/rs274ngc/rs274ngc_return.hh:194 emc/rs274ngc/rs274ngc_return.hh:236 -msgid "W value unspecified in UV plane canned cycle" -msgstr "Keine Angabe eines W-Wertes bei Arbeitszyklus in UV-Ebene" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1838 +msgid "adjust max vel of machine" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:194 -#: src/emc/rs274ngc/rs274ngc_return.hh:195 emc/rs274ngc/rs274ngc_return.hh:237 -msgid "U value unspecified in VW plane canned cycle" -msgstr "Keine Angabe eines U-Wertes bei Arbeitszyklus in VW-Ebene" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1854 +#, fuzzy +msgid "Max. Velocity" +msgstr "Maximale Geschwindigkeit:" -#: src/emc/rs274ngc/rs274ngc_return.hh:195 -#: src/emc/rs274ngc/rs274ngc_return.hh:196 emc/rs274ngc/rs274ngc_return.hh:238 -msgid "V value unspecified in UW plane canned cycle" -msgstr "Keine Angabe eines V-Wertes bei Arbeitszyklus in UW-Ebene" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1885 +msgid "Displayes the programmed feed rate" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:196 -#: src/emc/rs274ngc/rs274ngc_return.hh:197 emc/rs274ngc/rs274ngc_return.hh:239 -msgid "R less than W in cycle in UV plane" -msgstr "R ist kleiner als W während Arbeitszyklus in UV-Ebene" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1904 +#, fuzzy +msgid "reset feed override to 100 %" +msgstr "Vorschubübersteuerung von 0% bis 100%" -#: src/emc/rs274ngc/rs274ngc_return.hh:197 -#: src/emc/rs274ngc/rs274ngc_return.hh:198 emc/rs274ngc/rs274ngc_return.hh:240 -msgid "R less than U in cycle in VW plane" -msgstr "R ist kleiner als U während Arbeitszyklus in VW-Ebene" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1922 +#, fuzzy +msgid "adjust feed override" +msgstr "Vorschubübersteuerung:" -#: src/emc/rs274ngc/rs274ngc_return.hh:198 -#: src/emc/rs274ngc/rs274ngc_return.hh:199 emc/rs274ngc/rs274ngc_return.hh:241 -msgid "R less than V in cycle in UW plane" -msgstr "R ist kleiner als V während Arbeitszyklus in UW-Ebene" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1941 +#, fuzzy +msgid "Feed Override [%]" +msgstr "Vorschubübersteuerung" -#: src/emc/rs274ngc/interp_check.cc:316 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2034 #, fuzzy -msgid "P value must be 0,1,or 2 with M19" -msgstr "P-Wert ausserhalb des gültigen Bereichs bei G10 L2" +msgid "Cooling" +msgstr "Re_ferenzfahrt" -#: src/emc/rs274ngc/interp_namedparams.cc:191 -#, fuzzy, c-format -msgid "cant open ini file '%s'" -msgstr "Die Datei »%s« kann nicht geöffnet werden." +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2285 +#, fuzzy +msgid "Spindle [rpm]" +msgstr "Spindelencoder Index" -#: src/emc/motion/control.c:578 -#, c-format -msgid "fault %d during orient in progress" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2377 +msgid "" +"Search\n" +" back" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:314 -#, fuzzy -msgid "P value not an integer with M19 G2 or G3" -msgstr "P-Wert bei Verwendung von G10 L2 ist keine Ganzzahl" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2394 +msgid "" +"Search\n" +" fwd" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:326 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2446 #, fuzzy msgid "" -"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " -"code that uses it" -msgstr "E-Wort ohne zugehörige Angabe von G76 oder M66" +"Replace\n" +" Text:" +msgstr "Ersetzen mit:" -#: src/emc/rs274ngc/interp_check.cc:336 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2456 #, fuzzy -msgid "R value must be within 0..360 with M19" -msgstr "P-Wert ausserhalb des gültigen Bereichs bei G10 L2" - -#: src/emc/rs274ngc/interp_convert.cc:2786 -#, c-format msgid "" -"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" -msgstr "" +"Replace\n" +" All" +msgstr "Alle ersetzen" -#: src/emc/rs274ngc/interp_convert.cc:2787 -#, c-format -msgid "BUG: restore from level %d !?" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2470 +msgid "" +"Ignore\n" +" Case" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2788 -#, c-format -msgid "BUG: restore to level %d !?" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2616 +msgid "Start as fullscreen" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2807 -#, c-format -msgid "M7x: restore_settings G20/G21 failed: '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2631 +msgid "Start maximized" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2819 -#, c-format -msgid "M7x: restore_settings failed executing: '%s': %s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2646 +msgid "Start as window" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3012 -msgid "Need non-negative Q-word to specify tool number with M61" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2670 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4426 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4943 +#, fuzzy +msgid "X Pos." +msgstr "Pos" -#: src/emc/rs274ngc/interp_convert.cc:3087 -msgid "Q word with M19 requires a value > 0" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2683 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4437 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4928 +#, fuzzy +msgid "Y Pos." +msgstr "Pos" -#: src/emc/rs274ngc/interp_convert.cc:3115 -msgid "Cannot restore context from invalid stack frame - missing M70/M73?" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2698 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4855 +msgid "Width" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:208 -#, c-format -msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2713 +msgid "Height" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:232 -#, c-format -msgid "fetch_hal_param: hal_init(%s): %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2811 +msgid "hide cursor" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:233 -#, c-format -msgid "fetch_hal_param: hal_ready(): %d" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2830 +#, fuzzy +msgid "Main Window" +msgstr "Spindelencoder Index" -#: src/emc/rs274ngc/interp_namedparams.cc:378 -#, c-format -msgid "Cannot assign to read-only parameter #<%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2857 +#, fuzzy +msgid "Show keyboard on offset" +msgstr "_Bemaßung anzeigen" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2871 +msgid "Show keyboard on tooledit" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:682 -#, c-format -msgid "BUG: lookup_named_param(%s): unhandled index=%fn" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2885 +msgid "Show keyboard on MDI" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:169 -msgid "Bug: call stack underrun" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2899 +msgid "Show keyboard on EDIT" msgstr "" -#: hal/utils/meter.c:193 -#, c-format -msgid "ERROR: -s option needs pin/signal/parameter type and name designated\n" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2913 +msgid "Show keyboard on load file" msgstr "" -"FEHLER: »-s«-Option benötigt einen Pin, ein Signal oder einen Parameter mit " -"Namen\n" -#: hal/utils/meter.c:327 -msgid "Select item to display" -msgstr "Element zum Anzeigen auswählen" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2931 +#, fuzzy +msgid "Keyboard" +msgstr "Re_ferenzfahrt" -#: ../tcl/bin/pickconfig.tcl:177 -msgid "ERROR: must specify a path to search for configurations" -msgstr "FEHLER: Es muss ein Pfad zu den Konfigurationen angegeben werden." +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2959 +#, fuzzy +msgid "show preview" +msgstr "Vorschau" -#: ../tcl/bin/pickconfig.tcl:366 -msgid "No" -msgstr "Nein" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2973 +#, fuzzy +msgid "show offsets" +msgstr "_Bemaßung anzeigen" -#: ../tcl/tkemc.tcl:423 -msgid "About TkEmc" -msgstr "Über TkEmc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2991 +msgid "On Touch off" +msgstr "" -#: ../tcl/tkemc.tcl:456 -msgid "Length:" -msgstr "Länge:" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3005 +msgid "" +" Display \n" +"Aux Screen" +msgstr "" -#: ../tcl/tkemc.tcl:460 -msgid "Diameter:" -msgstr "Durchmesser:" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3052 +#, fuzzy +msgid "Relative Color" +msgstr "Relative Position" -#: ../tcl/tkemc.tcl:791 -msgid "Tools..." -msgstr "Werkzeugtabelle..." +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3079 +msgid "Absolute Color" +msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:212 -msgid "Switch between preview and DRO" -msgstr "Zwischen Vorschau und DRO wechseln" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3110 +msgid "DTG Color" +msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:371 -msgid "Out" -msgstr "Ausgang" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3139 +msgid "Use Auto Units" +msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:277 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3159 #, fuzzy -msgid "X PWM Direction" -msgstr "X Richtung" +msgid "Show the DRO Button" +msgstr "Umsch.+Linke Maustaste" -#: emc/usr_intf/pncconf/pncconf.py:277 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3190 #, fuzzy -msgid "Y PWM Direction" -msgstr "Y Richtung" +msgid "Homed color" +msgstr "Referenzfahrt" -#: emc/usr_intf/pncconf/pncconf.py:277 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3204 #, fuzzy -msgid "Z PWM Direction" -msgstr "Z Richtung" +msgid "Unhomed color" +msgstr "Referenzfahrt aufheben bei allen Achsen" -#: emc/usr_intf/pncconf/pncconf.py:278 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3299 #, fuzzy -msgid "A PWM Direction" -msgstr "A Richtung" +msgid "Digits" +msgstr "Digitaler Eingang 0" -#: emc/usr_intf/pncconf/pncconf.py:278 -#, fuzzy -msgid "Spindle PWM Pulse Stream" -msgstr "Spindel PWM" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3344 +msgid "" +"toggle DRO mode \n" +"clicking on the DRO" +msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:278 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3369 #, fuzzy -msgid "Spindle PWM Enable" -msgstr "Spindel PWM" +msgid "DRO" +msgstr "Re_ferenzfahrt" -#: emc/usr_intf/pncconf/pncconf.py:301 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3401 #, fuzzy -msgid "Spindle Encoder-B Phase" -msgstr "Spindelencoder Kanal A" +msgid "Grid size" +msgstr "Größe" -#: emc/usr_intf/pncconf/pncconf.py:301 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3430 #, fuzzy -msgid "Spindle Encoder-I Phase" -msgstr "Spindelencoder Kanal A" +msgid "Show DRO" +msgstr "Anzeigen" -#: emc/usr_intf/pncconf/pncconf.py:301 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3444 #, fuzzy -msgid "Spindle Encoder-M Phase" -msgstr "Spindelencoder Kanal A" +msgid "Show offsets" +msgstr "_Bemaßung anzeigen" -#: emc/usr_intf/pncconf/pncconf.py:320 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3458 #, fuzzy -msgid "X StepGen-Direction" -msgstr "X Richtung" +msgid "Show DTG" +msgstr "Anzeigen" -#: emc/usr_intf/pncconf/pncconf.py:321 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3483 #, fuzzy -msgid "Y StepGen-Step" -msgstr "Y Schritt" +msgid "Mouse Button mode" +msgstr "Re_ferenzfahrt" -#: emc/usr_intf/pncconf/pncconf.py:321 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3512 #, fuzzy -msgid "Y StepGen-Direction" -msgstr "Y Richtung" +msgid "Preview" +msgstr "Re_ferenzfahrt" -#: emc/usr_intf/pncconf/pncconf.py:322 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3565 #, fuzzy -msgid "Z StepGen-Step" -msgstr "Z Schritt" +msgid "" +"current\n" +" file" +msgstr "Aktuelle Datei neu laden [Strg-R]" -#: emc/usr_intf/pncconf/pncconf.py:322 -#, fuzzy -msgid "Z StepGen-Direction" -msgstr "Z Richtung" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3611 +msgid "File to load on start" +msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:323 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3638 #, fuzzy -msgid "A StepGen-Step" -msgstr "A Schritt" +msgid "Select user dir" +msgstr "Schrittgeschwindigkeit auswählen" -#: emc/usr_intf/pncconf/pncconf.py:323 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3647 #, fuzzy -msgid "A StepGen-Direction" -msgstr "A Richtung" +msgid "Select jump to dir" +msgstr "Element zum Anzeigen auswählen" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3767 +msgid "Themes and sound" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3799 +msgid "Appearance" +msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:324 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3833 #, fuzzy -msgid "spindle StepGen-Direction" -msgstr "X Richtung" +msgid "Scale max velocity" +msgstr "Maximale Geschwindigkeit:" -#: emc/usr_intf/pncconf/pncconf.py:324 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3846 #, fuzzy -msgid "spindle reserved c" -msgstr "Spindel zurück" +msgid "Scale jog velocity" +msgstr "Geschwi_ndigkeit anzeigen" -#: emc/usr_intf/pncconf/pncconf.py:324 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3861 #, fuzzy -msgid "spindle reserved d" -msgstr "Spindel zurück" +msgid "Scale feed override" +msgstr "Vorschubübersteuerung:" -#: emc/usr_intf/pncconf/pncconf.py:324 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3876 #, fuzzy -msgid "spindle reserved e" -msgstr "Spindel zurück" +msgid "Scale spindle override" +msgstr "Spindelübersteuerung" -#: emc/usr_intf/pncconf/pncconf.py:3286 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3970 #, fuzzy -msgid "degrees / rev" -msgstr "Grad / Umdrehung" +msgid "Hardware MPG Scale" +msgstr "Re_ferenzfahrt" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3994 +msgid "Use keyboard shortcuts" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4007 +msgid "Keyboard shortcuts" +msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3288 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4034 #, fuzzy -msgid "degrees / sec²" -msgstr "Grad / s²" +msgid "Use unlock code" +msgstr "Unbenutzt" -#: emc/usr_intf/pncconf/pncconf.py:3294 +# Anmerkung:FJ: Hmmmm .... +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4050 #, fuzzy -msgid "degree / Step" -msgstr "Grad / Umdrehung" +msgid "Do not use unlock code" +msgstr "Das Koordinaten-Wort C kann hier nicht verwendet werden" -#: emc/usr_intf/pncconf/pncconf.py:3295 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4066 +msgid "Use hal pin to unlock" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4087 #, fuzzy -msgid "Steps / degree" -msgstr "Schritte / Grad" +msgid "Unlock settings" +msgstr "Re_ferenzfahrt" -#: emc/usr_intf/pncconf/pncconf.py:3304 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4197 #, fuzzy -msgid "(mm / rev)" -msgstr "mm / Umdrehung" +msgid "Spindle bar min" +msgstr "Spindelbremse an" -#: emc/usr_intf/pncconf/pncconf.py:3323 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4210 #, fuzzy -msgid "(rev / inch)" -msgstr "Umdrehungen / in" +msgid "Spindle bar max" +msgstr "Spindelbremse" -#: emc/usr_intf/pncconf/pncconf.py:3324 emc/usr_intf/pncconf/pncconf.py:3326 -#: emc/usr_intf/pncconf/pncconf.py:3327 emc/usr_intf/pncconf/pncconf.py:3328 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4252 +msgid "Hide turtle Jog Button" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4282 +msgid "Turtle jog Factor" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4318 #, fuzzy -msgid "inches / min" -msgstr "inch" +msgid "Turtle Jog" +msgstr "Re_ferenzfahrt" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4360 +msgid "Hardware" +msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3325 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4392 +msgid "Use auto tool measurement" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4450 #, fuzzy -msgid "inches / sec²" -msgstr "in / s²" +msgid "Probe Height" +msgstr "Sensor" -#: emc/usr_intf/pncconf/pncconf.py:3331 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4485 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4498 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4527 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4556 +msgid "0.000" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4514 #, fuzzy -msgid "inches / Step" -msgstr "inch" +msgid "Z Pos." +msgstr "Pos" -#: emc/usr_intf/pncconf/pncconf.py:3332 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4543 #, fuzzy -msgid "Steps / inch" -msgstr "Schritte / in" +msgid "Max. Probe" +msgstr "Sensor" -#: emc/usr_intf/pncconf/pncconf.glade:464 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4575 #, fuzzy -msgid "Base Period Maximum Jitter:" -msgstr "Maximale Systemtakt-Abweichung (_Jitter):" +msgid "Probe Informations" +msgstr "Re_ferenzfahrt" -#: emc/usr_intf/pncconf/pncconf.glade:893 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4607 #, fuzzy -msgid "Switch and index" -msgstr "Spindelencoder Index" +msgid "Search Vel." +msgstr "Gesch_windigkeit Referenzfahrt:" -#: emc/usr_intf/pncconf/pncconf.glade:1151 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4618 #, fuzzy -msgid "TKemc" -msgstr "Anwenden" +msgid "Probe Vel." +msgstr "Sensor" -#: emc/usr_intf/pncconf/pncconf.glade:4599 -#: emc/usr_intf/pncconf/pncconf.glade:4611 -#: emc/usr_intf/pncconf/pncconf.glade:4795 -#: emc/usr_intf/pncconf/pncconf.glade:4809 -#: emc/usr_intf/pncconf/pncconf.glade:7380 -#: emc/usr_intf/pncconf/pncconf.glade:7394 -#: emc/usr_intf/pncconf/pncconf.glade:10121 -#: emc/usr_intf/pncconf/pncconf.glade:10135 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4674 +msgid "Probe velocitys" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4688 +msgid "" +"No valid configuration\n" +"found in your INI file,\n" +"please take a look at \n" +"the WIKI to check how\n" +"to configure the settings." +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4708 #, fuzzy -msgid "Pin" -msgstr "in" +msgid "Tool Measurement" +msgstr "Re_ferenzfahrt" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4737 +msgid "" +"If the 4'th axis is used\n" +"for a tool changer, you\n" +"hide the DRO and\n" +"jog buttons." +msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:15325 -#: emc/usr_intf/pncconf/pncconf.glade:17552 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4749 #, fuzzy -msgid "Driver Microstepping:" -msgstr "M_ikroschritte (Vollschritt:1, Halbschritt:2, usw.):" +msgid "Hide 4'th axis" +msgstr "Achse _testen" -#: emc/usr_intf/pncconf/pncconf.glade:16574 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4769 #, fuzzy -msgid "to" -msgstr "_bis" +msgid "Tool Changer" +msgstr "Re_ferenzfahrt" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4808 +msgid "Use frames" +msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:16605 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4840 +msgid "max." +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4992 #, fuzzy -msgid "Table Travel:" -msgstr "V_erfahrweg:" +msgid "Launch test message" +msgstr "Latenzzeit-_Testergebnis:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5011 +msgid "" +" gmoccapy message\n" +" behavior and appearance " +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5049 +msgid "Do not use run from line" +msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:16742 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5065 #, fuzzy -msgid "Home Switch location:" -msgstr "Re_ferenzschalter:" +msgid "Use run from line" +msgstr "Ab gewählter _Zeile ausführen" -#: emc/usr_intf/pncconf/pncconf.glade:18238 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5086 #, fuzzy -msgid "Speed 1:" -msgstr "_Drehzahl 1:" +msgid "Run from line" +msgstr "Re_ferenzfahrt" -#: emc/usr_intf/pncconf/pncconf.glade:18282 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5119 #, fuzzy -msgid "Speed 2:" -msgstr "D_rehzahl 2:" +msgid "" +"Advanced\n" +" Settings" +msgstr "Erweiterte Konfiguration" -#: emc/usr_intf/pncconf/pncconf.glade:18295 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5157 +msgid "User tab 1" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5171 +msgid "User tabs" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5207 +msgid "Estop the machine" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5229 #, fuzzy -msgid "PWM 1:" -msgstr "entspricht _PWM 1:" +msgid "Turn the machine on/off" +msgstr "Maschine an" -#: emc/usr_intf/pncconf/pncconf.glade:18310 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5251 +msgid "enter manual mode to jog axis by hand or touch off" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5271 #, fuzzy -msgid "PWM 2:" -msgstr "entspricht P_WM 2:" +msgid "enter MDI mode to launch g-code commands" +msgstr "MDI-Befehl kann nur im MDI-Modus ausgeführt werden" -#: emc/usr_intf/pncconf/pncconf.glade:19281 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5290 #, fuzzy -msgid "Realtime Components" -msgstr "Erweiterte Konfiguration" +msgid "enter auto mode to run programs" +msgstr "Serielles Modbus-Programm" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5308 +msgid "Enter the settings page, the default code is \"123\"" +msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:19485 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5330 #, fuzzy -msgid "Step generator" -msgstr "Programm schrittweise ausführen" +msgid "show user tabs" +msgstr "Neustart anzeigen" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5381 +msgid "open homing button list" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5398 +msgid "open touch off button list" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5427 +msgid "Open the tooleditor page" +msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:23393 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5498 +msgid "make the preview as large as possible" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5515 +msgid "Close moccapy / leave the program" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5577 +msgid "This button will show or hide the Keyboard" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5620 #, fuzzy -msgid "button" -msgstr "Auto" +msgid "Load a new program" +msgstr "Programm neu laden" -#: emc/task/emctaskmain.cc:3082 -#, c-format -msgid "Minimum Software Limit on axis %d exceeded." -msgstr "Unteres Software-Limit der Achse %d ist erreicht." +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5637 +#, fuzzy +msgid "Run the loaded program" +msgstr "Programm neu laden" -#: emc/task/emctaskmain.cc:3091 -#, c-format -msgid "Maximum Software Limit on axis %d exceeded." -msgstr "Oberes Software-Limit der Achse %d ist erreicht." +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5654 +#, fuzzy +msgid "Stop the running program" +msgstr "Programmausführung oder Laden der" -#: emc/rs274ngc/interp_convert.cc:2780 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5672 #, fuzzy -msgid "Cannot call user-defined M code with cutter radius compensation on" -msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" +msgid "Pause the running program" +msgstr "Programmausführung oder Laden der" -#: emc/rs274ngc/rs274ngc_return.hh:12 -msgid "Bad character used" -msgstr "Ungültiges Zeichen benutzt" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5680 +#, fuzzy +msgid "pause the running program" +msgstr "Programmausführung oder Laden der" -#: emc/rs274ngc/rs274ngc_return.hh:21 -msgid "Bug code not g40 g41 or g42" -msgstr "Wort ist nicht G40, G41 oder G42" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5698 +msgid "Run the loaded program step by step" +msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:22 -msgid "Bug code not g43 or g49" -msgstr "Wort ist nicht G43 oder G49" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5715 +msgid "" +"run the program from a certain line, attention, that is dangerous, because " +"the previous lines will not checed!" +msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:26 -msgid "Bug code not g93 or g94" -msgstr "Wort ist nicht G93 oder G94" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5732 +msgid "" +"Machine or not the optional blocks of the program. If the button is pressed, " +"the optional blocks will not be machined. The button will indicate this by a " +"yellow background." +msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:39 -msgid "Cannot change units with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5757 +msgid "" +"Make optional stops or not. if an M1 is programed and the button is pressed " +"(is active) the programm will pause if it found a M1" msgstr "" -"Die aktuelle verwendete Maßeinheit (Inch oder mm) kann nicht bei aktiver " -"Werkzeugbahnkorrektur geändert werden" -# Anmerkung:FJ: Probing? Abtast-Fahrt? Tast-Fahrt? Abtast-Arbeitszyklus? Tast-Arbeitszyklus? Andere Vorschläge? -# Anmerkung Thomas: Antasten vielleicht ? -# Anmerkung:FJ: Ne, ist wohl mehr als nur Antasten. EMC kann Werkstücke abtasten (-> Digitalisieren) -# Einen passenden Messtaster vorausgesetzt ... -#: emc/rs274ngc/rs274ngc_return.hh:44 -msgid "Cannot move rotary axes during probing" -msgstr "Rotations-Achse kann während einer Abtast-Fahrt nicht bewegt werden " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5789 +#, fuzzy +msgid "Edit the loaded program" +msgstr "SPS-Programm bearbeiten" -#: emc/rs274ngc/rs274ngc_return.hh:53 -msgid "Cannot turn cutter radius comp on out of xy plane" -msgstr "Werkzeugbahnkorrektur funktioniert nur innerhalb der XY-Ebene" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5837 +#, fuzzy +msgid "home all axis" +msgstr "Referenzfahrt mit allen Achsen" -#: emc/rs274ngc/rs274ngc_return.hh:55 -msgid "Cannot use a word" -msgstr "Das Koordinaten-Wort A kann hier nicht verwendet werden" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5873 +#, fuzzy +msgid "home x axis" +msgstr "Referenzfahrt" -#: emc/rs274ngc/rs274ngc_return.hh:58 -msgid "Cannot use b word" -msgstr "Das Koordinaten-Wort B kann hier nicht verwendet werden" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5897 +#, fuzzy +msgid "home y axis" +msgstr "Referenzfahrt" -# Anmerkung:FJ: Hmmmm .... -#: emc/rs274ngc/rs274ngc_return.hh:59 -msgid "Cannot use c word" -msgstr "Das Koordinaten-Wort C kann hier nicht verwendet werden" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5929 +#, fuzzy +msgid "home z axis" +msgstr "Referenzfahrt" -#: emc/rs274ngc/rs274ngc_return.hh:64 -msgid "Cannot use xz plane with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5987 +#, fuzzy +msgid "Unhome all axis" +msgstr "Referenzfahrt aufheben bei allen Achsen" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6023 +msgid "go back to main button list" msgstr "" -"XZ-Ebene kann nicht zusammen mit aktiver Werkzeugbahnkorrektur benutzt werden" -#: emc/rs274ngc/rs274ngc_return.hh:65 -msgid "Cannot use yz plane with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6053 +msgid "" +" edit\n" +"offsets" msgstr "" -"YZ-Ebene kann nicht zusammen mit aktiver Werkzeugbahnkorrektur benutzt werden" -#: emc/rs274ngc/rs274ngc_return.hh:67 -msgid "Concave corner with cutter radius comp" -msgstr "Konkave Ecke mit aktiver Werkzeugbahnkorrektur" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6060 +#, fuzzy +msgid "Edit offsets" +msgstr "_Bemaßung anzeigen" -#: emc/rs274ngc/rs274ngc_return.hh:68 -msgid "Coordinate system index parameter 5220 out of range" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6076 +msgid "touch off X / set X to 0" msgstr "" -"Koordinaten-System Index-Parameter 5220 ausserhalb des gültigen Bereichs" - -# Anmerkung:FJ: gouging -> Furche / Riefe! Kontext checken ... -#: emc/rs274ngc/rs274ngc_return.hh:70 -msgid "Cutter gouging with cutter radius comp" -msgstr "Konturverletzung bei Werkzeugbahnkorrektur" -#: emc/rs274ngc/rs274ngc_return.hh:71 -msgid "D word with no g41 or g42" -msgstr "Benutzung eines D-Wörters ohne Angabe von G41 oder G42" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6100 +msgid "touch off Y / set Y to 0" +msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:84 -msgid "H word with no g43" -msgstr "Benutzung eines H-Wörters ohne G43" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6135 +msgid "touch off Z / set Z to 0" +msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:87 -msgid "I word with no g2, g3, g87, or g43 to use it" -msgstr "I-Wörters ohne zugehörige Angabe von G2, G3, G43 oder G87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6155 +msgid "" +"zero\n" +"G92" +msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:94 -msgid "L word with no canned cycle, g10, or g76 to use it" -msgstr "Angabe eines L-Wörters ohne zugehörigen Arbeitszyklus G10 oder G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6161 +#, fuzzy +msgid "Zero all G92 offsets" +msgstr "G59.2 auf Null setzen" -#: emc/rs274ngc/rs274ngc_return.hh:133 -msgid "No digits found where real number should be" -msgstr "Reelle Zahl erwartet, aber keinerlei Ziffern gefunden" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6172 +msgid "" +" Block\n" +"Height" +msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:136 -msgid "Offset index missing" -msgstr "Offset-Index fehlt" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6192 +msgid "touch off X / set X to an desired value" +msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:139 -msgid "P word with no g4 g10 g64 g76 g82 g86 g88 g89" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6216 +msgid "touch off Y / set Y to an desired value" msgstr "" -"Benutzung eines P-Wörters ohne zugehörigen Befehl G4, G10, G64, G76, G82, " -"G86, G88, oder G89" -#: emc/rs274ngc/rs274ngc_return.hh:143 -msgid "Q word with no g83 or m66" -msgstr "Angabe eines Q-Wörters ohne G83, oder M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6251 +msgid "touch off Z / set Z to an desired value" +msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:151 -msgid "Radius to end of arc differs from radius to start" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6270 +msgid "" +" set\n" +"selected" msgstr "" -"Radius zum Ende des Kreisbogens unterscheidet sich vom Radius am Start des " -"Kreisbogens" -#: emc/rs274ngc/rs274ngc_return.hh:152 -msgid "Radius too small to reach end point" -msgstr "Radius zu klein zum Erreichen des Endpunktes" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6277 +#, fuzzy +msgid "set the selected coordinate system to be the active one" +msgstr "" +"Koordinatensystem kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt " +"werden" -#: emc/rs274ngc/rs274ngc_return.hh:153 -msgid "Required parameter missing" -msgstr "Benötigter Parameter fehlt" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6293 +msgid "Go back to main view" +msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:154 -msgid "Selected tool slot number too large" -msgstr "Angegebene Werkzeug-Nummer zu groß" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6324 +#, fuzzy +msgid "delete MDI" +msgstr "Löschen" -#: emc/rs274ngc/rs274ngc_return.hh:165 -msgid "Tool radius index too big" -msgstr "Werkzeug-Tabellen-Index zu groß" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6330 +#, fuzzy +msgid "delete MDI history" +msgstr "MDI-Verlauf leeren" -#: emc/rs274ngc/rs274ngc_return.hh:191 -msgid "X, y, z, a, b, c, u, v, and w words all missing with g38.2" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6380 +msgid "Cl.-ladder" msgstr "" -"Keine Angabe eines X-, Y-, Z-, A-, B-, C-, U-, V-, und W-Wörters bei g38.2" -#: emc/rs274ngc/rs274ngc_return.hh:199 -msgid "G33 not supported" -msgstr "G33 wird nicht unterstützt" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6386 +#, fuzzy +msgid "Open classicladder" +msgstr "SPS (Classicladder) einbinden" -#: emc/rs274ngc/rs274ngc_return.hh:200 -msgid "Canned cycles not supported" -msgstr "Abeitszyklen werden nicht unterstützt" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6397 +#, fuzzy +msgid "Hal-Scope" +msgstr "HAL-Scope" -#: ../tcl/bin/emccalib.tcl:80 -msgid "EMC2 Servo Axis Calibration" -msgstr "EMC2 Achsen-Kalibrierung" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6403 +#, fuzzy +msgid "launch hal scope" +msgstr "%s starten" -#: ../tcl/bin/emcdebug.tcl:166 ../tcl/bin/emcdebug.tcl:177 -msgid "EMC Debug" -msgstr "EMC2 Debug" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6420 +msgid "launch linuxcnc status" +msgstr "" -#: ../tcl/bin/halconfig.tcl:1281 -msgid "" -"Copyright Raymond E Henry. 2006\n" -"License: GPL Version 2\n" -"\n" -"Halconfig is an EMC2 configuration tool. It should be started from the emc2 " -"directory and will require that you have started an instance of emc2 or work " -"up a new configuration starting with a demo rt script.\n" -"\n" -"This script is not for the faint hearted and carries no warranty or " -"liability for its use to the extent allowed by law." +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6437 +msgid "launch hal meter" msgstr "" -#: ../tcl/bin/pickconfig.tcl:189 -msgid "EMC2 Configuration Selector" -msgstr "EMC2 Konfigurationsassistent" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6455 +#, fuzzy +msgid "launch calibration" +msgstr "_Kalibrierung..." -#: ../tcl/bin/pickconfig.tcl:210 -msgid "" -"Welcome to EMC2.\n" -"\n" -"Select a machine configuration from the list on the left.\n" -"Details about the selected configuration will appear in the display on the " -"right.\n" -"Click 'OK' to run the selected configuration" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6466 +msgid "Halshow" msgstr "" -"Willkommen zu EMC2.\n" -"\n" -"Wählen Sie eine Maschinenkonfiguration aus der Liste.\n" -"Eine Beschreibung der gewählte Konfiguration wird auf der rechten Seite " -"angezeigt.\n" -"Bestätigen Sie mit »OK«, um die gewählte Konfiguration zu laden." -#: ../tcl/bin/pickconfig.tcl:401 -#, tcl-format -msgid "" -"The configuration file has been copied to %s. Next time, choose this " -"location when starting EMC2." +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6472 +msgid "opens the show hal tool" msgstr "" -"Die Konfiguration wurde erfolgreich in das Verzeichnis »%s« kopiert. Beim " -"nächsten Start von EMC2 kann diese ausgewählt werden." - -#: ../tcl/bin/tkbackplot.tcl:110 -msgid "TkEmc BackPlot" -msgstr "TkEMC Backplot" -#: ../tcl/show_errors.tcl:41 -msgid "EMC2 Errors" -msgstr "Fehler" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6537 +msgid "save the file using the original name" +msgstr "" -#: ../tcl/show_errors.tcl:44 -msgid "" -"EMC2 terminated with an error. When reporting problems, please include all " -"the information below in your message." +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6559 +msgid "save the file with a new name" msgstr "" -"EMC2 wurde mit einem Fehler beendet. Falls Sie den Fehler melden wollen, " -"fügen Sie bitte Ihrer Mitteilung die unten stehenden Informationen bei." -#: ../tcl/tkemc.tcl:259 -msgid "Load Tool Table" -msgstr "Speichern" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6605 +msgid "clear the edit field and make a new file" +msgstr "" -#: ../tcl/tkemc.tcl:334 -msgid "EMC Diagnostics" -msgstr "EMC2 Diagnose" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6641 +msgid "Show or hide the virtual keyboard" +msgstr "" -#: ../tcl/tkemc.tcl:424 -msgid "" -"TkEmc\n" -"\n" -"Tcl/Tk GUI for Enhanced Machine Controller version 2 (EMC2)\n" -"\n" -"GPL Version 2 (2006)" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6665 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6879 +msgid "Go back to main button list" msgstr "" -"TkEmc\n" -"\n" -"Grafische Oberfläche in Tcl/Tk für den\n" -"»Enhanced Machine Controller«, Version 2 (EMC2)\n" -"\n" -"\n" -"GPL Version 2 (2006)" -#: ../tcl/scripts/Set_Coordinates.tcl:23 -msgid "EMC Set Coordinate" -msgstr "EMC2 Koordinaten-Setup" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6701 +#, fuzzy +msgid "delete selected tool or tools" +msgstr "Angegebene Werkzeug-Nummer zu groß" -#: emc/usr_intf/axis/scripts/axis.py:3144 -#, python-format -msgid "Enter %s coordinate relative to workpiece:" -msgstr "%s-Koordinate relativ zum Werkstück" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6718 +#, fuzzy +msgid "add a new tool to tool table" +msgstr "We_rkzeugtabelle neu laden" -#: emc/usr_intf/axis/scripts/debuglevel.py:22 -msgid "EMC2 Debug Level" -msgstr "Debug-Stufe" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6729 +#, fuzzy +msgid "Reload" +msgstr "_Neu laden" -#: ../share/axis/tcl/axis.tcl:180 -msgid "Sho_w EMC Status" -msgstr "EM_C-Status..." +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6735 +#, fuzzy +msgid "reload tool table from file" +msgstr "We_rkzeugtabelle neu laden" -#: ../share/axis/tcl/axis.tcl:1667 -msgid "" -"EMC2/AXIS version $version\n" -"\n" -"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Jeff Epler and Chris " -"Radek.\n" -"\n" -"This is free software, and you are welcome to redistribute it under certain " -"conditions. See the file COPYING, included with EMC2.\n" -"\n" -"Visit the EMC web site: " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6746 +msgid "Apply" msgstr "" -"EMC2/AXIS Version $version\n" -"\n" -"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Jeff Epler und Chris " -"Radek.\n" -"\n" -"Dieses Programm ist freie Software. Sie sind eingeladen, es unter bestimmten " -"Bedingungen weiter zu verbreiten. Lesen Sie hierzu die Datei COPYING, die " -"EMC2 beigelegt ist.\n" -"\n" -"Deutsche Übersetzung: Alex Joni, Florian Hahn, Ingrid Kirst\n" -"\n" -"Besuchen Sie die EMC-Webseite: " -#: emc/usr_intf/stepconf/stepconf.py:989 emc/usr_intf/pncconf/pncconf.py:1570 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6752 msgid "" -"# **** Setup of spindle speed and tool number display using pyvcp -START ****" +"apply the changes you made, G43 will be excecuted only if it is active g-code" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:992 emc/usr_intf/pncconf/pncconf.py:1573 -msgid "" -"# **** spindle-velocity is signed so we use absolute compoent to remove sign" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6768 +#, fuzzy +msgid "Select a tool by number" +msgstr "Angegebene Werkzeug-Nummer zu groß" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6790 +msgid "change tool with the command M61 Q?, no machine move will be done" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1000 emc/usr_intf/pncconf/pncconf.py:1581 -msgid "" -"# **** Use COMMANDED spindle velocity from EMC because no spindle encoder " -"was specified" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6812 +msgid "change tool to the selected one" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1095 -msgid "Desktop Launcher for EMC config made by Stepconf" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6824 +msgid "" +"touchoff\n" +" tool x" msgstr "" -"Verknüpfung zum starten von EMC mit einer festgelegten Konfiguration, " -"erstellt von Stepconf" -#: emc/usr_intf/stepconf/stepconf.py:1208 -msgid "EMC2 'stepconf' configuration files" -msgstr ".stepconf Dateien" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6832 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6863 +msgid "touch off the tool and set the value to the tool table" +msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:22 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6855 msgid "" -"This program creates configuration files (.ini and .hal) for \"step and " -"direction\" milling machines and lathes connected to the PC parallel port." +"touchoff\n" +" tool z" msgstr "" -"Dieses Programm erstellt Konfigurationsdateien (.ini und .hal) für Fräs- und " -"Drehmaschinen mit »Schritt- und Richtung«-Schnittstelle, die über den " -"Druckeranschluss mit dem PC verbunden sind." -#: emc/usr_intf/stepconf/stepconf.glade:565 -msgid "" -"Driver characteristics: (Multiply by 1000 for times specified in µs or " -"microseconds)\n" -"\n" -"Additional signal conditioning or isolation such as optocouplers and RC " -"filters\n" -"can impose timing constraints of their own, in addition to those of the " -"driver." +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6915 +msgid "Move to your home directory" msgstr "" -"Einstellungen für Endstufe (alle Zeiten in Nanosekunden = 10^-9 s):\n" -"Zusätzliche Signalverarbeitungsbausteine oder Maßnahmen zur galvanischen \n" -"Trennung, wie Optokoppler oder RC-Filter, können zusätzliche Zeit benötigen." -#: emc/usr_intf/stepconf/stepconf.glade:3420 -#: emc/usr_intf/pncconf/pncconf.glade:1263 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6932 #, fuzzy -msgid "Spindle speed/tool position display " -msgstr "Spindel-Drehzahl- / Werkzeug-Positions-Anzeige" +msgid "Move to parrent directory" +msgstr "Verzeichnis:" -#: emc/usr_intf/stepconf/stepconf.glade:3518 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6961 #, fuzzy -msgid "Pyvcp Example Options" -msgstr "PyVCP-Beispiele" +msgid "Select the previos file" +msgstr "Element zum Anzeigen auswählen" -#: emc/usr_intf/stepconf/stepconf.glade:3908 -msgid "PLC Options" -msgstr "SPS-Optionen" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6979 +#, fuzzy +msgid "Select the next file" +msgstr "Element zum Anzeigen auswählen" -#: emc/usr_intf/stepconf/stepconf.glade:3935 -#: emc/usr_intf/pncconf/pncconf.glade:19852 -msgid "" -"All the necessary information has now been gathered. Click \"Apply\" to " -"write your configuration files to disk.\n" -"If you experience lockups while running emc, you will need to decrease the " -"maximum velocity which will have the effect of increasing BASE_PERIOD.\n" -"\n" -"If you experience lost steps while running emc, first verify that you " -"entered the proper timings for your stepper drivers. If that does not fix " -"the problem, then run a more thorough latency test as described on the " -"linuxcnc.org wiki:\n" -" http;//wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting\n" -"\n" -"If you experience the \"Unexpected Realtime Delay\" message, run a more " -"thorough latency test as described on the linuxcnc.org wiki: \n" -" http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6997 +msgid "Jump to user defined directory" msgstr "" -"Alle notwendigen Informationen wurden erfasst. Bestätigen Sie mit »Anwenden«, " -"um die Konfiguration zu speichern.\n" -"Falls EMC2 nicht mehr reagieren sollte, verkleinern Sie die maximale " -"Geschwindigkeit, was die Zeit für einen Systemtakt (BASE_PERIOD) " -"vergrößert.\n" -"\n" -"Falls Sie Schrittverluste bemerken sollten, überprüfen Sie zuerst die " -"Zeiteinstellungen für ihre Endstufe. Wird das Problem hierdurch nicht " -"behoben, dann führen bitte weiter Maßnahmen durch, wie sie im EMC2-Wiki " -"beschrieben werden:\n" -" http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting\n" -"\n" -"Falls Sie die Fehlermeldung »Unexpected Realtime Delay« erhalten, dann führen " -"bitte weiter Maßnahmen durch, wie sie im EMC2-Wiki beschrieben werden:\n" -" http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting" -#: emc/usr_intf/pncconf/pncconf.py:114 -msgid "HDW Encoder-A" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7027 +msgid "select the highlighted file and return the path" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:114 -msgid "HDW Encoder-B" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7057 +msgid "Close without returning a file path" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:114 -msgid "HDW Encoder-I" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7075 +#, fuzzy +msgid "Load File" +msgstr "Programmdatei" -#: emc/usr_intf/pncconf/pncconf.py:114 -msgid "HDW Encoder-M" -msgstr "" +#~ msgid "%s move in MDI would exceed joint %d's positive limit" +#~ msgstr "Bewegung %s in MDI würde pos. Anschlag von Joint %d überschreiten" -#: emc/usr_intf/pncconf/pncconf.py:115 -msgid "HDW Step Gen-A" -msgstr "" +#~ msgid "%s move in MDI would exceed joint %d's negative limit" +#~ msgstr "Bewegung %s in MDI würde neg. Anschlag von Joint %d überschreiten" -#: emc/usr_intf/pncconf/pncconf.py:115 -msgid "HDW Step Gen-B" -msgstr "" +#~ msgid "LinuxCNC Servo Axis Calibration" +#~ msgstr "LinuxCNC Servoachsen-Kalibrierung" -#: emc/usr_intf/pncconf/pncconf.py:116 -msgid "HDW PWM Gen-P" -msgstr "" +#, fuzzy +#~ msgid "LinuxCNC Configuration Selector" +#~ msgstr "EMC2 Konfigurationsassistent" -#: emc/usr_intf/pncconf/pncconf.py:116 -msgid "HDW PWM Gen-D" -msgstr "" +#, fuzzy +#~ msgid "" +#~ "Welcome to LinuxCNC.\n" +#~ "\n" +#~ "Select a machine configuration from the list on the left.\n" +#~ "Details about the selected configuration will appear in the display on " +#~ "the right.\n" +#~ "Click 'OK' to run the selected configuration" +#~ msgstr "" +#~ "Willkommen zu EMC2.\n" +#~ "\n" +#~ "Wählen Sie eine Maschinenkonfiguration aus der Liste.\n" +#~ "Eine Beschreibung der gewählte Konfiguration wird auf der rechten Seite " +#~ "angezeigt.\n" +#~ "Bestätigen Sie mit »OK«, um die gewählte Konfiguration zu laden." -#: emc/usr_intf/pncconf/pncconf.py:116 -msgid "HDW PWM Gen-E" -msgstr "" +#, fuzzy +#~ msgid "" +#~ "The configuration file has been copied to %s. Next time, choose this " +#~ "location when starting LinuxCNC." +#~ msgstr "" +#~ "Die Konfiguration wurde erfolgreich in das Verzeichnis »%s« kopiert. Beim " +#~ "nächsten Start von EMC2 kann diese ausgewählt werden." -#: emc/usr_intf/pncconf/pncconf.py:117 -msgid "HDW PDM Gen-P" -msgstr "" +#, fuzzy +#~ msgid "LinuxCNC Debug Level" +#~ msgstr "Debug-Stufe" -#: emc/usr_intf/pncconf/pncconf.py:117 -msgid "HDW PDM Gen-D" -msgstr "" +#, fuzzy +#~ msgid "Sho_w LinuxCNC Status" +#~ msgstr "EM_C-Status..." -#: emc/usr_intf/pncconf/pncconf.py:117 -msgid "HDW PDM Gen-E" -msgstr "" +#~ msgid "Generated by stepconf at %s" +#~ msgstr "Erstell durch stepconf am %s" -#: emc/usr_intf/pncconf/pncconf.py:252 #, fuzzy -msgid "Jog select input A" -msgstr "Aktive Achse verfahren" +#~ msgid "Desktop Launcher for LinuxCNC config made by Stepconf" +#~ msgstr "" +#~ "Verknüpfung zum starten von EMC mit einer festgelegten Konfiguration, " +#~ "erstellt von Stepconf" -#: emc/usr_intf/pncconf/pncconf.py:252 #, fuzzy -msgid "Jog select input B" -msgstr "Aktive Achse verfahren" +#~ msgid "LinuxCNC 'stepconf' configuration files" +#~ msgstr ".stepconf Dateien" -#: emc/usr_intf/pncconf/pncconf.py:252 #, fuzzy -msgid "Jog select input C" -msgstr "Aktive Achse verfahren" +#~ msgid "" +#~ "This program creates configuration files (.ini and .hal) for \"step and " +#~ "direction\" milling machines and lathes connected to the PC parallel " +#~ "port.\n" +#~ "\n" +#~ "Stepconf requires a minimum 800 X 600 display resolution.\n" +#~ "You may need to collapse the 'Driver Timing Settings' and \n" +#~ "Parallel Port Settings' expanders." +#~ msgstr "" +#~ "Dieses Programm erstellt Konfigurationsdateien (.ini und .hal) für Fräs- " +#~ "und Drehmaschinen mit »Schritt- und Richtung«-Schnittstelle, die über den " +#~ "Druckeranschluss mit dem PC verbunden sind." -#: emc/usr_intf/pncconf/pncconf.py:253 -msgid "Axis select input A" -msgstr "" +#~ msgid "S_econd Parport Address:" +#~ msgstr "Adresse der z_weiten parallellen Schnittstelle:" -#: emc/usr_intf/pncconf/pncconf.py:253 -msgid "Axis select input B" -msgstr "" +#~ msgid "T_hird Parport Address:" +#~ msgstr "Adresse der dr_itten parallellen Schnittstelle:" -#: emc/usr_intf/pncconf/pncconf.py:253 -msgid "Axis select input C" -msgstr "" +#, fuzzy +#~ msgid " Parallel Port Settings" +#~ msgstr "Konfiguration der Druckerschnittstelle" -#: emc/usr_intf/pncconf/pncconf.py:253 -msgid "Axis select input D" -msgstr "" +#, fuzzy +#~ msgid "" +#~ "Driver characteristics: (Multiply by 1000 for times specified in µs or " +#~ "microseconds)\n" +#~ " Additional signal conditioning or isolation such as optocouplers " +#~ "and RC filters\n" +#~ " can impose timing constraints of their own, in addition to those " +#~ "of the driver." +#~ msgstr "" +#~ "Einstellungen für Endstufe (alle Zeiten in Nanosekunden = 10^-9 s):\n" +#~ "Zusätzliche Signalverarbeitungsbausteine oder Maßnahmen zur " +#~ "galvanischen \n" +#~ "Trennung, wie Optokoppler oder RC-Filter, können zusätzliche Zeit " +#~ "benötigen." -#: emc/usr_intf/pncconf/pncconf.py:277 -msgid "X PWM Pulse Stream" -msgstr "" +#~ msgid "" +#~ "_Onscreen prompt for\n" +#~ "tool change" +#~ msgstr "_Bildschirmmitteilung bei Werkzeugwechsel" -#: emc/usr_intf/pncconf/pncconf.py:277 -msgid "X PWM Enable" -msgstr "" +#~ msgid "Advanced Configuration Options" +#~ msgstr "Erweiterte Konfiguration" -#: emc/usr_intf/pncconf/pncconf.py:277 -msgid "Y PWM Pulse Stream" -msgstr "" +#~ msgid "_Sherline Outputs" +#~ msgstr "_Sherline" -#: emc/usr_intf/pncconf/pncconf.py:277 -msgid "Y PWM Enable" -msgstr "" +#~ msgid "_Xylotex Outputs" +#~ msgstr "_Xylotex" -#: emc/usr_intf/pncconf/pncconf.py:277 -msgid "Z PWM Pulse Stream" -msgstr "" +#~ msgid "Spindle Configuration" +#~ msgstr "Konfiguration der Spindel" -#: emc/usr_intf/pncconf/pncconf.py:277 -msgid "Z PWM Enable" -msgstr "" +#, fuzzy +#~ msgid "Spindle Max Output:" +#~ msgstr "Spindel ein" -#: emc/usr_intf/pncconf/pncconf.py:277 -msgid "A PWM Pulse Stream" -msgstr "" +#, fuzzy +#~ msgid "P value out of range with G10 L1 or G10 L10" +#~ msgstr "P-Wert ausserhalb des gültigen Bereichs bei G10 L2" -#: emc/usr_intf/pncconf/pncconf.py:278 -msgid "A PWM Enable" -msgstr "" +#, fuzzy +#~ msgid "P value not an integer with G2 or G3" +#~ msgstr "P-Wert bei Verwendung von G10 L2 ist keine Ganzzahl" -#: emc/usr_intf/pncconf/pncconf.py:278 #, fuzzy -msgid "Spindle PWM Direction" -msgstr "Spindel PWM" +#~ msgid "" +#~ "Q word with no G5, G10, G64, G73, G76, G83, M66, M67, M68 or user M code " +#~ "that uses it" +#~ msgstr "E-Wort ohne zugehörige Angabe von G76 oder M66" -#: emc/usr_intf/pncconf/pncconf.py:298 -msgid "X Encoder-A Phase" -msgstr "" +#, fuzzy +#~ msgid "Cannot set motion output with cutter radius compensation on" +#~ msgstr "" +#~ "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" -#: emc/usr_intf/pncconf/pncconf.py:298 -msgid "X Encoder-B Phase" -msgstr "" +#, fuzzy +#~ msgid "Cannot set motion digital output with cutter radius compensation on" +#~ msgstr "" +#~ "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" -#: emc/usr_intf/pncconf/pncconf.py:298 -msgid "X Encoder-I Phase" -msgstr "" +#, fuzzy +#~ msgid "" +#~ "Cannot set auxiliary digital output with cutter radius compensation on" +#~ msgstr "" +#~ "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" -#: emc/usr_intf/pncconf/pncconf.py:298 -msgid "X Encoder-M Phase" -msgstr "" +#, fuzzy +#~ msgid "Cannot set motion analog output with cutter radius compensation on" +#~ msgstr "" +#~ "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" -#: emc/usr_intf/pncconf/pncconf.py:299 -msgid "Y Encoder-A Phase" -msgstr "" +#, fuzzy +#~ msgid "" +#~ "Cannot set auxiliary analog output with cutter radius compensation on" +#~ msgstr "" +#~ "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" -#: emc/usr_intf/pncconf/pncconf.py:299 -msgid "Y Encoder-B Phase" -msgstr "" +#~ msgid "" +#~ "ERROR: -s option needs pin/signal/parameter type and name designated\n" +#~ msgstr "" +#~ "FEHLER: »-s«-Option benötigt einen Pin, ein Signal oder einen Parameter " +#~ "mit Namen\n" -#: emc/usr_intf/pncconf/pncconf.py:299 -msgid "Y Encoder-I Phase" -msgstr "" +#~ msgid "ERROR: must specify a path to search for configurations" +#~ msgstr "FEHLER: Es muss ein Pfad zu den Konfigurationen angegeben werden." -#: emc/usr_intf/pncconf/pncconf.py:299 -msgid "Y Encoder-M Phase" -msgstr "" +#~ msgid "No" +#~ msgstr "Nein" -#: emc/usr_intf/pncconf/pncconf.py:299 -msgid "Z Encoder-A Phase" -msgstr "" +#~ msgid "About TkEmc" +#~ msgstr "Über TkEmc" -#: emc/usr_intf/pncconf/pncconf.py:299 -msgid "Z Encoder-B Phase" -msgstr "" +#~ msgid "Length:" +#~ msgstr "Länge:" -#: emc/usr_intf/pncconf/pncconf.py:300 -msgid "Z Encoder-I Phase" -msgstr "" +#~ msgid "Tools..." +#~ msgstr "Werkzeugtabelle..." -#: emc/usr_intf/pncconf/pncconf.py:300 -msgid "Z Encoder-M Phase" -msgstr "" +#~ msgid "Switch between preview and DRO" +#~ msgstr "Zwischen Vorschau und DRO wechseln" -#: emc/usr_intf/pncconf/pncconf.py:300 -msgid "A Encoder-A Phase" -msgstr "" +#, fuzzy +#~ msgid "X PWM Direction" +#~ msgstr "X Richtung" -#: emc/usr_intf/pncconf/pncconf.py:300 -msgid "A Encoder-B Phase" -msgstr "" +#, fuzzy +#~ msgid "Y PWM Direction" +#~ msgstr "Y Richtung" -#: emc/usr_intf/pncconf/pncconf.py:300 -msgid "A Encoder-I Phase" -msgstr "" +#, fuzzy +#~ msgid "Z PWM Direction" +#~ msgstr "Z Richtung" -#: emc/usr_intf/pncconf/pncconf.py:300 -msgid "A Encoder-M Phase" -msgstr "" +#, fuzzy +#~ msgid "A PWM Direction" +#~ msgstr "A Richtung" -#: emc/usr_intf/pncconf/pncconf.py:301 #, fuzzy -msgid "Spindle Encoder-A Phase" -msgstr "Spindelencoder Kanal A" +#~ msgid "Spindle PWM Pulse Stream" +#~ msgstr "Spindel PWM" -#: emc/usr_intf/pncconf/pncconf.py:301 -msgid "X Hand Wheel-A Phase" -msgstr "" +#, fuzzy +#~ msgid "Spindle PWM Enable" +#~ msgstr "Spindel PWM" -#: emc/usr_intf/pncconf/pncconf.py:302 -msgid "X Hand Wheel-B Phase" -msgstr "" +#, fuzzy +#~ msgid "Spindle Encoder-B Phase" +#~ msgstr "Spindelencoder Kanal A" -#: emc/usr_intf/pncconf/pncconf.py:302 -msgid "X Hand Wheel-I Phase" -msgstr "" +#, fuzzy +#~ msgid "Spindle Encoder-I Phase" +#~ msgstr "Spindelencoder Kanal A" -#: emc/usr_intf/pncconf/pncconf.py:302 -msgid "X Hand Wheel-M Phase" -msgstr "" +#, fuzzy +#~ msgid "Spindle Encoder-M Phase" +#~ msgstr "Spindelencoder Kanal A" -#: emc/usr_intf/pncconf/pncconf.py:302 -msgid "Y Hand wheel-A Phase" -msgstr "" +#, fuzzy +#~ msgid "X StepGen-Direction" +#~ msgstr "X Richtung" -#: emc/usr_intf/pncconf/pncconf.py:302 -msgid "Y Hand Wheel-B Phase" -msgstr "" +#, fuzzy +#~ msgid "Y StepGen-Step" +#~ msgstr "Y Schritt" -#: emc/usr_intf/pncconf/pncconf.py:303 -msgid "Y Hand Wheel-I Phase" -msgstr "" +#, fuzzy +#~ msgid "Y StepGen-Direction" +#~ msgstr "Y Richtung" + +#, fuzzy +#~ msgid "Z StepGen-Step" +#~ msgstr "Z Schritt" + +#, fuzzy +#~ msgid "Z StepGen-Direction" +#~ msgstr "Z Richtung" + +#, fuzzy +#~ msgid "A StepGen-Step" +#~ msgstr "A Schritt" + +#, fuzzy +#~ msgid "A StepGen-Direction" +#~ msgstr "A Richtung" + +#, fuzzy +#~ msgid "spindle StepGen-Direction" +#~ msgstr "X Richtung" + +#, fuzzy +#~ msgid "spindle reserved c" +#~ msgstr "Spindel zurück" + +#, fuzzy +#~ msgid "spindle reserved d" +#~ msgstr "Spindel zurück" + +#, fuzzy +#~ msgid "spindle reserved e" +#~ msgstr "Spindel zurück" + +#, fuzzy +#~ msgid "degrees / rev" +#~ msgstr "Grad / Umdrehung" + +#, fuzzy +#~ msgid "degrees / sec²" +#~ msgstr "Grad / s²" -#: emc/usr_intf/pncconf/pncconf.py:303 -msgid "Y Hand Wheel-M Phase" -msgstr "" +#, fuzzy +#~ msgid "degree / Step" +#~ msgstr "Grad / Umdrehung" -#: emc/usr_intf/pncconf/pncconf.py:303 -msgid "Z Hand Wheel-A Phase" -msgstr "" +#, fuzzy +#~ msgid "Steps / degree" +#~ msgstr "Schritte / Grad" -#: emc/usr_intf/pncconf/pncconf.py:303 -msgid "Z Hand Wheel-B Phase" -msgstr "" +#, fuzzy +#~ msgid "(mm / rev)" +#~ msgstr "mm / Umdrehung" -#: emc/usr_intf/pncconf/pncconf.py:303 -msgid "Z Hand Wheel-I Phase" -msgstr "" +#, fuzzy +#~ msgid "(rev / inch)" +#~ msgstr "Umdrehungen / in" -#: emc/usr_intf/pncconf/pncconf.py:304 -msgid "Z Hand Wheel-M Phase" -msgstr "" +#, fuzzy +#~ msgid "inches / min" +#~ msgstr "inch" -#: emc/usr_intf/pncconf/pncconf.py:304 -msgid "A Hand Wheel-A Phase" -msgstr "" +#, fuzzy +#~ msgid "inches / sec²" +#~ msgstr "in / s²" -#: emc/usr_intf/pncconf/pncconf.py:304 -msgid "A Hand Wheel-B Phase" -msgstr "" +#, fuzzy +#~ msgid "inches / Step" +#~ msgstr "inch" -#: emc/usr_intf/pncconf/pncconf.py:304 -msgid "A Hand Wheel-I Phase" -msgstr "" +#, fuzzy +#~ msgid "Steps / inch" +#~ msgstr "Schritte / in" -#: emc/usr_intf/pncconf/pncconf.py:304 -msgid "A Hand Wheel-M Phase" -msgstr "" +#, fuzzy +#~ msgid "Base Period Maximum Jitter:" +#~ msgstr "Maximale Systemtakt-Abweichung (_Jitter):" -#: emc/usr_intf/pncconf/pncconf.py:305 -msgid "Multi Hand Wheel-A Phase" -msgstr "" +#, fuzzy +#~ msgid "Switch and index" +#~ msgstr "Spindelencoder Index" -#: emc/usr_intf/pncconf/pncconf.py:305 -msgid "Multi Hand Wheel-B Phase" -msgstr "" +#, fuzzy +#~ msgid "TKemc" +#~ msgstr "Anwenden" -#: emc/usr_intf/pncconf/pncconf.py:305 -msgid "Multi Hand Wheel-I Phase" -msgstr "" +#, fuzzy +#~ msgid "Pin" +#~ msgstr "in" -#: emc/usr_intf/pncconf/pncconf.py:305 -msgid "Multi Hand Wheel-M Phase" -msgstr "" +#, fuzzy +#~ msgid "Driver Microstepping:" +#~ msgstr "M_ikroschritte (Vollschritt:1, Halbschritt:2, usw.):" -#: emc/usr_intf/pncconf/pncconf.py:320 #, fuzzy -msgid "X StepGen-Step" -msgstr "X Schritt" +#~ msgid "to" +#~ msgstr "_bis" -#: emc/usr_intf/pncconf/pncconf.py:320 -msgid "X reserved c" -msgstr "" +#, fuzzy +#~ msgid "Table Travel:" +#~ msgstr "V_erfahrweg:" -#: emc/usr_intf/pncconf/pncconf.py:320 -msgid "X reserved d" -msgstr "" +#, fuzzy +#~ msgid "Home Switch location:" +#~ msgstr "Re_ferenzschalter:" -#: emc/usr_intf/pncconf/pncconf.py:321 -msgid "X reserved e" -msgstr "" +#, fuzzy +#~ msgid "Speed 1:" +#~ msgstr "_Drehzahl 1:" -#: emc/usr_intf/pncconf/pncconf.py:321 -msgid "X reserved f" -msgstr "" +#, fuzzy +#~ msgid "Speed 2:" +#~ msgstr "D_rehzahl 2:" -#: emc/usr_intf/pncconf/pncconf.py:321 -msgid "Y reserved c" -msgstr "" +#, fuzzy +#~ msgid "PWM 1:" +#~ msgstr "entspricht _PWM 1:" -#: emc/usr_intf/pncconf/pncconf.py:321 -msgid "Y reserved d" -msgstr "" +#, fuzzy +#~ msgid "PWM 2:" +#~ msgstr "entspricht P_WM 2:" -#: emc/usr_intf/pncconf/pncconf.py:321 -msgid "Y reserved e" -msgstr "" +#, fuzzy +#~ msgid "Realtime Components" +#~ msgstr "Erweiterte Konfiguration" -#: emc/usr_intf/pncconf/pncconf.py:322 -msgid "Y reserved f" -msgstr "" +#, fuzzy +#~ msgid "Step generator" +#~ msgstr "Programm schrittweise ausführen" -#: emc/usr_intf/pncconf/pncconf.py:322 -msgid "Z reserved c" -msgstr "" +#, fuzzy +#~ msgid "button" +#~ msgstr "Auto" -#: emc/usr_intf/pncconf/pncconf.py:322 -msgid "Z reserved d" -msgstr "" +#~ msgid "Minimum Software Limit on axis %d exceeded." +#~ msgstr "Unteres Software-Limit der Achse %d ist erreicht." -#: emc/usr_intf/pncconf/pncconf.py:322 -msgid "Z reserved e" -msgstr "" +#~ msgid "Maximum Software Limit on axis %d exceeded." +#~ msgstr "Oberes Software-Limit der Achse %d ist erreicht." -#: emc/usr_intf/pncconf/pncconf.py:322 -msgid "Z reserved f" -msgstr "" +#, fuzzy +#~ msgid "Cannot call user-defined M code with cutter radius compensation on" +#~ msgstr "" +#~ "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" -#: emc/usr_intf/pncconf/pncconf.py:323 -msgid "A reserved c" -msgstr "" +#~ msgid "Bad character used" +#~ msgstr "Ungültiges Zeichen benutzt" -#: emc/usr_intf/pncconf/pncconf.py:323 -msgid "A reserved d" -msgstr "" +#~ msgid "Bug code not g40 g41 or g42" +#~ msgstr "Wort ist nicht G40, G41 oder G42" -#: emc/usr_intf/pncconf/pncconf.py:323 -msgid "A reserved e" -msgstr "" +#~ msgid "Bug code not g43 or g49" +#~ msgstr "Wort ist nicht G43 oder G49" -#: emc/usr_intf/pncconf/pncconf.py:323 -msgid "A reserved f" -msgstr "" +#~ msgid "Bug code not g93 or g94" +#~ msgstr "Wort ist nicht G93 oder G94" -#: emc/usr_intf/pncconf/pncconf.py:324 -#, fuzzy -msgid "spindle StepGen-Step" -msgstr "X Schritt" +#~ msgid "Cannot change units with cutter radius comp" +#~ msgstr "" +#~ "Die aktuelle verwendete Maßeinheit (Inch oder mm) kann nicht bei aktiver " +#~ "Werkzeugbahnkorrektur geändert werden" -#: emc/usr_intf/pncconf/pncconf.py:325 -#, fuzzy -msgid "spindle reserved f" -msgstr "Spindel zurück" +# Anmerkung:FJ: Probing? Abtast-Fahrt? Tast-Fahrt? Abtast-Arbeitszyklus? Tast-Arbeitszyklus? Andere Vorschläge? +# Anmerkung Thomas: Antasten vielleicht ? +# Anmerkung:FJ: Ne, ist wohl mehr als nur Antasten. EMC kann Werkstücke abtasten (-> Digitalisieren) +# Einen passenden Messtaster vorausgesetzt ... +#~ msgid "Cannot move rotary axes during probing" +#~ msgstr "" +#~ "Rotations-Achse kann während einer Abtast-Fahrt nicht bewegt werden " -#: emc/usr_intf/pncconf/pncconf.py:351 -#, fuzzy -msgid "my_EMC_machine" -msgstr "_Maschine" +#~ msgid "Cannot turn cutter radius comp on out of xy plane" +#~ msgstr "Werkzeugbahnkorrektur funktioniert nur innerhalb der XY-Ebene" -#: emc/usr_intf/pncconf/pncconf.py:1510 -msgid "# estop signals" -msgstr "" +#~ msgid "Cannot use a word" +#~ msgstr "Das Koordinaten-Wort A kann hier nicht verwendet werden" -#: emc/usr_intf/pncconf/pncconf.py:1588 -msgid "" -"# **** Setup of spindle speed and tool number display using pyvcp -END ****" -msgstr "" +#~ msgid "Cannot use b word" +#~ msgstr "Das Koordinaten-Wort B kann hier nicht verwendet werden" -#: emc/usr_intf/pncconf/pncconf.py:1590 -msgid "" -"# **** Setup of pyvcp buttons and MDI commands using HAL_UI and pyvcp - " -"START ****" -msgstr "" +#~ msgid "Cannot use xz plane with cutter radius comp" +#~ msgstr "" +#~ "XZ-Ebene kann nicht zusammen mit aktiver Werkzeugbahnkorrektur benutzt " +#~ "werden" -#: emc/usr_intf/pncconf/pncconf.py:1606 -msgid "" -"# **** The following mdi-comands are specified in the machine named INI file " -"under [HALUI] heading" -msgstr "" +#~ msgid "Cannot use yz plane with cutter radius comp" +#~ msgstr "" +#~ "YZ-Ebene kann nicht zusammen mit aktiver Werkzeugbahnkorrektur benutzt " +#~ "werden" -#: emc/usr_intf/pncconf/pncconf.py:1620 -msgid "" -"# **** Setup of pyvcp buttons and MDI commands using HAL_UI and pyvcp - END " -"****" -msgstr "" +#~ msgid "Concave corner with cutter radius comp" +#~ msgstr "Konkave Ecke mit aktiver Werkzeugbahnkorrektur" -#: emc/usr_intf/pncconf/pncconf.py:1645 -msgid "configures EMC2 as:" -msgstr "" +#~ msgid "Coordinate system index parameter 5220 out of range" +#~ msgstr "" +#~ "Koordinaten-System Index-Parameter 5220 ausserhalb des gültigen Bereichs" -#: emc/usr_intf/pncconf/pncconf.py:1647 -msgid "type CNC" -msgstr "" +# Anmerkung:FJ: gouging -> Furche / Riefe! Kontext checken ... +#~ msgid "Cutter gouging with cutter radius comp" +#~ msgstr "Konturverletzung bei Werkzeugbahnkorrektur" -#: emc/usr_intf/pncconf/pncconf.py:1656 -msgid "Mesa 5i20 connector 2 \n" -msgstr "" +#~ msgid "D word with no g41 or g42" +#~ msgstr "Benutzung eines D-Wörters ohne Angabe von G41 oder G42" -#: emc/usr_intf/pncconf/pncconf.py:1667 -msgid "Mesa 5i20 connector 3 \n" -msgstr "" +#~ msgid "H word with no g43" +#~ msgstr "Benutzung eines H-Wörters ohne G43" -#: emc/usr_intf/pncconf/pncconf.py:1678 -msgid "Mesa 5i20 connector 4 \n" -msgstr "" +#~ msgid "I word with no g2, g3, g87, or g43 to use it" +#~ msgstr "I-Wörters ohne zugehörige Angabe von G2, G3, G43 oder G87" -#: emc/usr_intf/pncconf/pncconf.py:1782 -#, fuzzy -msgid "Desktop Launcher for EMC config made by PNCconf" -msgstr "" -"Verknüpfung zum starten von EMC mit einer festgelegten Konfiguration, " -"erstellt von Stepconf" +#~ msgid "L word with no canned cycle, g10, or g76 to use it" +#~ msgstr "Angabe eines L-Wörters ohne zugehörigen Arbeitszyklus G10 oder G76" -#: emc/usr_intf/pncconf/pncconf.py:2080 -#, fuzzy -msgid "EMC2 'PNCconf' configuration files" -msgstr ".stepconf Dateien" +#~ msgid "No digits found where real number should be" +#~ msgstr "Reelle Zahl erwartet, aber keinerlei Ziffern gefunden" -#: emc/usr_intf/pncconf/pncconf.py:3287 emc/usr_intf/pncconf/pncconf.py:3289 -#: emc/usr_intf/pncconf/pncconf.py:3290 emc/usr_intf/pncconf/pncconf.py:3291 -#, fuzzy -msgid "degrees / min" -msgstr "Grad / Umdrehung" +#~ msgid "Offset index missing" +#~ msgstr "Offset-Index fehlt" -#: emc/usr_intf/pncconf/pncconf.py:3297 -#, fuzzy -msgid "degrees / encoder pulse" -msgstr "Grad / Umdrehung" +#~ msgid "P word with no g4 g10 g64 g76 g82 g86 g88 g89" +#~ msgstr "" +#~ "Benutzung eines P-Wörters ohne zugehörigen Befehl G4, G10, G64, G76, G82, " +#~ "G86, G88, oder G89" -#: emc/usr_intf/pncconf/pncconf.py:3298 -msgid "Encoder pulses / degree" -msgstr "" +#~ msgid "Q word with no g83 or m66" +#~ msgstr "Angabe eines Q-Wörters ohne G83, oder M66" -#: emc/usr_intf/pncconf/pncconf.py:3306 -#, fuzzy -msgid "mm / sec²" -msgstr "mm / s²" +#~ msgid "Radius to end of arc differs from radius to start" +#~ msgstr "" +#~ "Radius zum Ende des Kreisbogens unterscheidet sich vom Radius am Start " +#~ "des Kreisbogens" -#: emc/usr_intf/pncconf/pncconf.py:3312 -#, fuzzy -msgid "mm / Step" -msgstr "mm / Umdrehung" +#~ msgid "Radius too small to reach end point" +#~ msgstr "Radius zu klein zum Erreichen des Endpunktes" -#: emc/usr_intf/pncconf/pncconf.py:3316 -msgid "Encoder pulses / mm" -msgstr "" +#~ msgid "Required parameter missing" +#~ msgstr "Benötigter Parameter fehlt" -#: emc/usr_intf/pncconf/pncconf.py:3334 -msgid "inches / encoder pulse" -msgstr "" +#~ msgid "Tool radius index too big" +#~ msgstr "Werkzeug-Tabellen-Index zu groß" -#: emc/usr_intf/pncconf/pncconf.py:3335 -msgid "Encoder pulses / inch" -msgstr "" +#~ msgid "X, y, z, a, b, c, u, v, and w words all missing with g38.2" +#~ msgstr "" +#~ "Keine Angabe eines X-, Y-, Z-, A-, B-, C-, U-, V-, und W-Wörters bei g38.2" -#: emc/usr_intf/pncconf/pncconf.py:3909 -msgid "" -" The test panel for this board and/or firmware should work fine for GPIO but " -"maybe not so fine for other components.\n" -" work in progress. \n" -" You must have the board installed for it to work." -msgstr "" +#~ msgid "G33 not supported" +#~ msgstr "G33 wird nicht unterstützt" -#: emc/usr_intf/pncconf/pncconf.py:4365 -msgid "" -" You must designate a ENCODER signal and a PWM signal for this axis test" -msgstr "" +#~ msgid "Canned cycles not supported" +#~ msgstr "Abeitszyklen werden nicht unterstützt" -#: emc/usr_intf/pncconf/pncconf.glade:8 -#, fuzzy -msgid "EMC2 Point And Click Configuration" -msgstr "EMC2 Maschinenkonfiguration" +#~ msgid "EMC Debug" +#~ msgstr "EMC2 Debug" -#: emc/usr_intf/pncconf/pncconf.glade:23 -#, fuzzy -msgid "EMC2 Configuration Wizard Alpha Version" -msgstr "EMC2 Konfigurationsassistent" +#~ msgid "TkEmc BackPlot" +#~ msgstr "TkEMC Backplot" -#: emc/usr_intf/pncconf/pncconf.glade:566 -msgid "Mesa PCI / Parport Card:" -msgstr "" +#~ msgid "EMC2 Errors" +#~ msgstr "Fehler" -#: emc/usr_intf/pncconf/pncconf.glade:826 -msgid "Physical switches" -msgstr "" +#~ msgid "" +#~ "EMC2 terminated with an error. When reporting problems, please include " +#~ "all the information below in your message." +#~ msgstr "" +#~ "EMC2 wurde mit einem Fehler beendet. Falls Sie den Fehler melden wollen, " +#~ "fügen Sie bitte Ihrer Mitteilung die unten stehenden Informationen bei." -#: emc/usr_intf/pncconf/pncconf.glade:840 -msgid "" -"Physical switches\n" -"shared with home" -msgstr "" +#~ msgid "Load Tool Table" +#~ msgstr "Speichern" -#: emc/usr_intf/pncconf/pncconf.glade:858 -msgid "Limit" -msgstr "" +#~ msgid "EMC Diagnostics" +#~ msgstr "EMC2 Diagnose" -#: emc/usr_intf/pncconf/pncconf.glade:907 -msgid "Switch only" -msgstr "" +#~ msgid "" +#~ "TkEmc\n" +#~ "\n" +#~ "Tcl/Tk GUI for Enhanced Machine Controller version 2 (EMC2)\n" +#~ "\n" +#~ "GPL Version 2 (2006)" +#~ msgstr "" +#~ "TkEmc\n" +#~ "\n" +#~ "Grafische Oberfläche in Tcl/Tk für den\n" +#~ "»Enhanced Machine Controller«, Version 2 (EMC2)\n" +#~ "\n" +#~ "\n" +#~ "GPL Version 2 (2006)" -#: emc/usr_intf/pncconf/pncconf.glade:921 -msgid "Index only" -msgstr "" +#~ msgid "EMC Set Coordinate" +#~ msgstr "EMC2 Koordinaten-Setup" -#: emc/usr_intf/pncconf/pncconf.glade:955 -msgid "Limit And Homing Switches" -msgstr "" +#~ msgid "Enter %s coordinate relative to workpiece:" +#~ msgstr "%s-Koordinate relativ zum Werkstück" -#: emc/usr_intf/pncconf/pncconf.glade:990 -msgid "External MPG Scale settings:" -msgstr "" +#~ msgid "EMC2 Debug Level" +#~ msgstr "Debug-Stufe" -#: emc/usr_intf/pncconf/pncconf.glade:1124 -#, fuzzy -msgid "Onscreen prompt for tool change" -msgstr "_Bildschirmmitteilung bei Werkzeugwechsel" +#~ msgid "" +#~ "EMC2/AXIS version $version\n" +#~ "\n" +#~ "Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Jeff Epler and Chris " +#~ "Radek.\n" +#~ "\n" +#~ "This is free software, and you are welcome to redistribute it under " +#~ "certain conditions. See the file COPYING, included with EMC2.\n" +#~ "\n" +#~ "Visit the EMC web site: " +#~ msgstr "" +#~ "EMC2/AXIS Version $version\n" +#~ "\n" +#~ "Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Jeff Epler und Chris " +#~ "Radek.\n" +#~ "\n" +#~ "Dieses Programm ist freie Software. Sie sind eingeladen, es unter " +#~ "bestimmten Bedingungen weiter zu verbreiten. Lesen Sie hierzu die Datei " +#~ "COPYING, die EMC2 beigelegt ist.\n" +#~ "\n" +#~ "Deutsche Übersetzung: Alex Joni, Florian Hahn, Ingrid Kirst\n" +#~ "\n" +#~ "Besuchen Sie die EMC-Webseite: " -#: emc/usr_intf/pncconf/pncconf.glade:1185 -msgid "GUI list" -msgstr "" +#~ msgid "" +#~ "Driver characteristics: (Multiply by 1000 for times specified in µs or " +#~ "microseconds)\n" +#~ "\n" +#~ "Additional signal conditioning or isolation such as optocouplers and RC " +#~ "filters\n" +#~ "can impose timing constraints of their own, in addition to those of the " +#~ "driver." +#~ msgstr "" +#~ "Einstellungen für Endstufe (alle Zeiten in Nanosekunden = 10^-9 s):\n" +#~ "Zusätzliche Signalverarbeitungsbausteine oder Maßnahmen zur " +#~ "galvanischen \n" +#~ "Trennung, wie Optokoppler oder RC-Filter, können zusätzliche Zeit " +#~ "benötigen." -#: emc/usr_intf/pncconf/pncconf.glade:1577 -msgid "Mesa I/O setup\n" -msgstr "" +#, fuzzy +#~ msgid "Spindle speed/tool position display " +#~ msgstr "Spindel-Drehzahl- / Werkzeug-Positions-Anzeige" -#: emc/usr_intf/pncconf/pncconf.glade:1596 -msgid "" -"Click on each page tab to configure signal names for each connector port.\n" -"\n" -"The spin buttons below on this page allow you to select the amouns of \n" -"different types of components. Press the button to make the tabbed pages\n" -"accept the changes.\n" -msgstr "" +#, fuzzy +#~ msgid "Pyvcp Example Options" +#~ msgstr "PyVCP-Beispiele" -#: emc/usr_intf/pncconf/pncconf.glade:1781 -#: emc/usr_intf/pncconf/pncconf.glade:1969 -msgid "htz" -msgstr "" +#~ msgid "PLC Options" +#~ msgstr "SPS-Optionen" -#: emc/usr_intf/pncconf/pncconf.glade:1891 -msgid "Num of GPIO:" -msgstr "" +#~ msgid "" +#~ "All the necessary information has now been gathered. Click \"Apply\" to " +#~ "write your configuration files to disk.\n" +#~ "If you experience lockups while running emc, you will need to decrease " +#~ "the maximum velocity which will have the effect of increasing " +#~ "BASE_PERIOD.\n" +#~ "\n" +#~ "If you experience lost steps while running emc, first verify that you " +#~ "entered the proper timings for your stepper drivers. If that does not " +#~ "fix the problem, then run a more thorough latency test as described on " +#~ "the linuxcnc.org wiki:\n" +#~ " http;//wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting\n" +#~ "\n" +#~ "If you experience the \"Unexpected Realtime Delay\" message, run a more " +#~ "thorough latency test as described on the linuxcnc.org wiki: \n" +#~ " http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting" +#~ msgstr "" +#~ "Alle notwendigen Informationen wurden erfasst. Bestätigen Sie mit " +#~ "»Anwenden«, um die Konfiguration zu speichern.\n" +#~ "Falls EMC2 nicht mehr reagieren sollte, verkleinern Sie die maximale " +#~ "Geschwindigkeit, was die Zeit für einen Systemtakt (BASE_PERIOD) " +#~ "vergrößert.\n" +#~ "\n" +#~ "Falls Sie Schrittverluste bemerken sollten, überprüfen Sie zuerst die " +#~ "Zeiteinstellungen für ihre Endstufe. Wird das Problem hierdurch nicht " +#~ "behoben, dann führen bitte weiter Maßnahmen durch, wie sie im EMC2-Wiki " +#~ "beschrieben werden:\n" +#~ " http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting\n" +#~ "\n" +#~ "Falls Sie die Fehlermeldung »Unexpected Realtime Delay« erhalten, dann " +#~ "führen bitte weiter Maßnahmen durch, wie sie im EMC2-Wiki beschrieben " +#~ "werden:\n" +#~ " http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting" -#: emc/usr_intf/pncconf/pncconf.glade:4629 -msgid "" -"Input / Output\n" -" Connector 2" -msgstr "" +#, fuzzy +#~ msgid "Jog select input A" +#~ msgstr "Aktive Achse verfahren" -#: emc/usr_intf/pncconf/pncconf.glade:7266 -msgid "" -"Input / Output \n" -" Connector 3" -msgstr "" +#, fuzzy +#~ msgid "Jog select input B" +#~ msgstr "Aktive Achse verfahren" -#: emc/usr_intf/pncconf/pncconf.glade:9903 -msgid "" -"Input / Output\n" -" Connector 4" -msgstr "" +#, fuzzy +#~ msgid "Jog select input C" +#~ msgstr "Aktive Achse verfahren" -#: emc/usr_intf/pncconf/pncconf.glade:12540 -msgid "" -"Input / Output\n" -" Connector 5" -msgstr "" +#, fuzzy +#~ msgid "Spindle PWM Direction" +#~ msgstr "Spindel PWM" -#: emc/usr_intf/pncconf/pncconf.glade:14711 -#: emc/usr_intf/pncconf/pncconf.glade:16942 -msgid "" -"Open\n" -"Loop\n" -"Servo\n" -"Test" -msgstr "" +#, fuzzy +#~ msgid "Spindle Encoder-A Phase" +#~ msgstr "Spindelencoder Kanal A" -#: emc/usr_intf/pncconf/pncconf.glade:14735 -#: emc/usr_intf/pncconf/pncconf.glade:16966 #, fuzzy -msgid "pulses / rev" -msgstr "mm / Umdrehung" +#~ msgid "X StepGen-Step" +#~ msgstr "X Schritt" -#: emc/usr_intf/pncconf/pncconf.glade:14754 -#: emc/usr_intf/pncconf/pncconf.glade:16985 -msgid "x 4 =" -msgstr "" +#, fuzzy +#~ msgid "spindle StepGen-Step" +#~ msgstr "X Schritt" -#: emc/usr_intf/pncconf/pncconf.glade:14802 -#: emc/usr_intf/pncconf/pncconf.glade:17032 -msgid "Encoder lines / Rev" -msgstr "" +#, fuzzy +#~ msgid "spindle reserved f" +#~ msgstr "Spindel zurück" -#: emc/usr_intf/pncconf/pncconf.glade:14834 -#: emc/usr_intf/pncconf/pncconf.glade:17063 -msgid "Dac Output Offset:" -msgstr "" +#, fuzzy +#~ msgid "my_EMC_machine" +#~ msgstr "_Maschine" -#: emc/usr_intf/pncconf/pncconf.glade:15505 -#: emc/usr_intf/pncconf/pncconf.glade:15522 -#: emc/usr_intf/pncconf/pncconf.glade:17721 -msgid "123" -msgstr "" +#, fuzzy +#~ msgid "Desktop Launcher for EMC config made by PNCconf" +#~ msgstr "" +#~ "Verknüpfung zum starten von EMC mit einer festgelegten Konfiguration, " +#~ "erstellt von Stepconf" -#: emc/usr_intf/pncconf/pncconf.glade:16547 #, fuzzy -msgid "Home location:" -msgstr "_Referenzpunkt:" +#~ msgid "EMC2 'PNCconf' configuration files" +#~ msgstr ".stepconf Dateien" -#: emc/usr_intf/pncconf/pncconf.glade:19408 -msgid "Add realtime components with this page." -msgstr "" +#, fuzzy +#~ msgid "degrees / min" +#~ msgstr "Grad / Umdrehung" -#: emc/usr_intf/pncconf/pncconf.glade:19446 #, fuzzy -msgid "Encoder" -msgstr "Ende" +#~ msgid "degrees / encoder pulse" +#~ msgstr "Grad / Umdrehung" -#: emc/usr_intf/pncconf/pncconf.glade:19473 -msgid "PWM generator" -msgstr "" +#, fuzzy +#~ msgid "mm / sec²" +#~ msgstr "mm / s²" -#: emc/usr_intf/pncconf/pncconf.glade:19554 #, fuzzy -msgid "and" -msgstr "Ende" +#~ msgid "mm / Step" +#~ msgstr "mm / Umdrehung" -#: emc/usr_intf/pncconf/pncconf.glade:19565 -msgid "or" -msgstr "" +#, fuzzy +#~ msgid "EMC2 Point And Click Configuration" +#~ msgstr "EMC2 Maschinenkonfiguration" -#: emc/usr_intf/pncconf/pncconf.glade:19686 -#: emc/usr_intf/pncconf/pncconf.glade:19699 -#: emc/usr_intf/pncconf/pncconf.glade:19712 -#: emc/usr_intf/pncconf/pncconf.glade:19725 -#: emc/usr_intf/pncconf/pncconf.glade:19738 -#: emc/usr_intf/pncconf/pncconf.glade:19780 -msgid "" -"fast (base)\n" -"slow (servo)" -msgstr "" +#, fuzzy +#~ msgid "EMC2 Configuration Wizard Alpha Version" +#~ msgstr "EMC2 Konfigurationsassistent" -#: emc/usr_intf/pncconf/pncconf.glade:19761 -msgid "Add to thread command" -msgstr "" +#, fuzzy +#~ msgid "pulses / rev" +#~ msgstr "mm / Umdrehung" -#: emc/usr_intf/pncconf/pncconf.glade:19819 #, fuzzy -msgid "Test Page" -msgstr "Testbereich:" +#~ msgid "Home location:" +#~ msgstr "_Referenzpunkt:" -#: emc/usr_intf/pncconf/pncconf.glade:19828 -msgid "Use this page to test / tune the configuration." -msgstr "" +#, fuzzy +#~ msgid "Encoder" +#~ msgstr "Ende" -#: emc/usr_intf/pncconf/pncconf.glade:19996 #, fuzzy -msgid "estop" -msgstr "Ausprobieren" +#~ msgid "and" +#~ msgstr "Ende" -#: emc/usr_intf/pncconf/pncconf.glade:21870 -#: emc/usr_intf/pncconf/pncconf.glade:22570 -#: emc/usr_intf/pncconf/pncconf.glade:23270 -msgid "PID tuning" -msgstr "" +#, fuzzy +#~ msgid "Test Page" +#~ msgstr "Testbereich:" -#: emc/rs274ngc/interp_arc.cc:108 emc/rs274ngc/interp_arc.cc:270 -#, c-format -msgid "" -"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " -"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f" -msgstr "" -"Radius am Kreisanfang unterscheidet sich vom Radius am Kreisende: Anfang=(%c" -"%.4f,%c%.4f), Mittelpunkt=(%c%.4f,%c%.4f), Ende=(%c%.4f,%c%.4f), Radius 1=" -"%.4f, Radius 2=%.4f" +#, fuzzy +#~ msgid "estop" +#~ msgstr "Ausprobieren" -#: emc/rs274ngc/interp_convert.cc:2554 emc/rs274ngc/interp_convert.cc:2558 #, fuzzy -msgid "Cannot set auxiliary output with cutter radius compensation on" -msgstr "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" +#~ msgid "Cannot set auxiliary output with cutter radius compensation on" +#~ msgstr "" +#~ "Ebene kann nicht bei aktiver Werkzeugradiuskorrektur gewechselt werden" # Anmerkung:FJ: Who the fuck is "inverse time feed mode"? :-))) # Angabe des Weges, der in einer Minuten zurückgelegt werden soll??? # Anmerkung Thomas: Wird benutzt beim Fünfachsfräsen (3 Linearachsen und 2 Rundachsen zusammen). # F100 -> 60/100 = Weg im Raum wird in 0,6s zurückgelegt. Einige CAM Systeme erzeugen solchen Code... # Anmerkung:FJ: DIN66025 nennt das "Zeitreziproke Vorschubverschlüsselung". Was es nicht alles gibt :-) !!!!! -#: emc/rs274ngc/rs274ngc_return.hh:47 -msgid "Cannot probe in inverse time feed mode" -msgstr "Abtast-Fahrten sind im zeitreziproken Vorschub-Modus nicht möglich" - -#: emc/rs274ngc/rs274ngc_return.hh:90 -msgid "J word with no g2, g3 or g87 to use it" -msgstr "J-Wörters ohne zugehörige Angabe von G2, G3 oder G87" +#~ msgid "Cannot probe in inverse time feed mode" +#~ msgstr "Abtast-Fahrten sind im zeitreziproken Vorschub-Modus nicht möglich" -#: emc/rs274ngc/rs274ngc_return.hh:93 -msgid "K word with no g2, g3, g33, g33.1, g76, g87, or g43.1 to use it" -msgstr "" -"K-Wort ohne zugehörige Angabe von G2, G3, G33, G33.1, G76, G87, oder G43.1" +#~ msgid "J word with no g2, g3 or g87 to use it" +#~ msgstr "J-Wörters ohne zugehörige Angabe von G2, G3 oder G87" -#: emc/rs274ngc/rs274ngc_return.hh:97 -msgid "Line number greater than 99999" -msgstr "Zeilennummer größer als 99999" +#~ msgid "K word with no g2, g3, g33, g33.1, g76, g87, or g43.1 to use it" +#~ msgstr "" +#~ "K-Wort ohne zugehörige Angabe von G2, G3, G33, G33.1, G76, G87, oder G43.1" -#: emc/rs274ngc/rs274ngc_return.hh:98 -msgid "Line with g10 does not have l2" -msgstr "Zeile mit G10 enthält kein L2" +#~ msgid "Line number greater than 99999" +#~ msgstr "Zeilennummer größer als 99999" -#: emc/rs274ngc/rs274ngc_return.hh:137 -msgid "P value not an integer with g10 l2" -msgstr "P-Wert bei Verwendung von G10 L2 ist keine Ganzzahl" +#~ msgid "Line with g10 does not have l2" +#~ msgstr "Zeile mit G10 enthält kein L2" -#: emc/rs274ngc/rs274ngc_return.hh:138 -msgid "P value out of range with g10 l2" -msgstr "P-Wert ausserhalb des gültigen Bereichs bei G10 L2" +#~ msgid "P value not an integer with g10 l2" +#~ msgstr "P-Wert bei Verwendung von G10 L2 ist keine Ganzzahl" -#: emc/rs274ngc/rs274ngc_return.hh:163 -msgid "Tool length offset index too big" -msgstr "Werkzeug-Längen-Index zu groß" +#~ msgid "Tool length offset index too big" +#~ msgstr "Werkzeug-Längen-Index zu groß" # Anmerkung:FJ: Tool max? Was das? # Anmerkung:AJ: sollte "Index in tool table file too large" sein -#: emc/rs274ngc/rs274ngc_return.hh:164 -msgid "Tool max too large" -msgstr "Werkzeug-Datei-Index zu groß" - -#: emc/rs274ngc/rs274ngc_return.hh:169 -msgid "Unable to open file" -msgstr "Datei kann nicht geöffnet werden" +#~ msgid "Tool max too large" +#~ msgstr "Werkzeug-Datei-Index zu groß" -#: emc/rs274ngc/rs274ngc_return.hh:212 -msgid "Return outside of subroutine" -msgstr "" - -#: emc/rs274ngc/rs274ngc_return.hh:221 -msgid "E word with no G76 or M66 to use it" -msgstr "E-Wort ohne zugehörige Angabe von G76 oder M66" - -#: emc/rs274ngc/rs274ngc_return.hh:223 -msgid "Named oword not terminated" -msgstr "" +#~ msgid "Unable to open file" +#~ msgstr "Datei kann nicht geöffnet werden" -#: emc/rs274ngc/rs274ngc_return.hh:224 -msgid "Named oword not defined" -msgstr "" +#~ msgid "E word with no G76 or M66 to use it" +#~ msgstr "E-Wort ohne zugehörige Angabe von G76 oder M66" -#: emc/rs274ngc/rs274ngc_return.hh:226 -msgid "X Y Z A B C J words not allowed with G43.1, G41 R, or G42 R" -msgstr "" -"Befehle G43.1, G41 R, und G42 R dürfen keine X-, Y-, Z-, A-, B-, C-. oder J-" -"Wörter enthalten" +#~ msgid "X Y Z A B C J words not allowed with G43.1, G41 R, or G42 R" +#~ msgstr "" +#~ "Befehle G43.1, G41 R, und G42 R dürfen keine X-, Y-, Z-, A-, B-, C-. oder " +#~ "J-Wörter enthalten" -#: share/axis/tcl/axis.tcl:1711 #, fuzzy -msgid "" -"LinuxCNC/AXIS version $version\n" -"\n" -"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Jeff Epler and Chris " -"Radek.\n" -"\n" -"This is free software, and you are welcome to redistribute it under certain " -"conditions. See the file COPYING, included with LinuxCNC.\n" -"\n" -"Visit the LinuxCNC web site: " -msgstr "" -"EMC2/AXIS Version $version\n" -"\n" -"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Jeff Epler und Chris " -"Radek.\n" -"\n" -"Dieses Programm ist freie Software. Sie sind eingeladen, es unter bestimmten " -"Bedingungen weiter zu verbreiten. Lesen Sie hierzu die Datei COPYING, die " -"EMC2 beigelegt ist.\n" -"\n" -"Deutsche Übersetzung: Alex Joni, Florian Hahn, Ingrid Kirst\n" -"\n" -"Besuchen Sie die EMC-Webseite: " +#~ msgid "" +#~ "LinuxCNC/AXIS version $version\n" +#~ "\n" +#~ "Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Jeff Epler and Chris " +#~ "Radek.\n" +#~ "\n" +#~ "This is free software, and you are welcome to redistribute it under " +#~ "certain conditions. See the file COPYING, included with LinuxCNC.\n" +#~ "\n" +#~ "Visit the LinuxCNC web site: " +#~ msgstr "" +#~ "EMC2/AXIS Version $version\n" +#~ "\n" +#~ "Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Jeff Epler und Chris " +#~ "Radek.\n" +#~ "\n" +#~ "Dieses Programm ist freie Software. Sie sind eingeladen, es unter " +#~ "bestimmten Bedingungen weiter zu verbreiten. Lesen Sie hierzu die Datei " +#~ "COPYING, die EMC2 beigelegt ist.\n" +#~ "\n" +#~ "Deutsche Übersetzung: Alex Joni, Florian Hahn, Ingrid Kirst\n" +#~ "\n" +#~ "Besuchen Sie die EMC-Webseite: " #~ msgid "_Modify a configuration already created with this program" #~ msgstr "" @@ -17368,9 +18296,6 @@ msgstr "" #~ msgid "Spindle speed/tool position display" #~ msgstr "Spindel-Drehzahl- / Werkzeug-Positions-Anzeige" -#~ msgid "Include Classicladder PLC" -#~ msgstr "SPS (Classicladder) einbinden" - #~ msgid "Number of analog (float) out pins:" #~ msgstr "Analoge Ausgänge (float):" @@ -17403,9 +18328,6 @@ msgstr "" #~ msgid "Axis Speed:" #~ msgstr "Schrittgeschwindigkeit:" -#~ msgid "Xylotex" -#~ msgstr "Xylotex" - #~ msgid "Exis_ting custom program" #~ msgstr "Bestehendes benutzerdefiniertes Programm" @@ -17443,12 +18365,6 @@ msgstr "" #~ msgid "Space, Ctrl-Space" #~ msgstr "Leertaste, Strg-Leertaste" -#~ msgid "Include custom _HAL configuration" -#~ msgstr "Benutzerdefinierte _HAL-Konfiguration einbinden" - -#~ msgid "Unknown error" -#~ msgstr "Unbekannter Fehler" - #~ msgid "The End" #~ msgstr "Ende" @@ -17456,10 +18372,6 @@ msgstr "" #~ msgid "expander" #~ msgstr "Menübaum aufklappen" -#, fuzzy -#~ msgid "Spindle Info" -#~ msgstr "Spindelencoder Index" - #, fuzzy #~ msgid "Cycles per revolution:" #~ msgstr "Encoder-_Takte pro Spindel-Umdrehung:" diff --git a/src/po/es.po b/src/po/es.po index 09a1c9fd0a..c1c8a81e16 100644 --- a/src/po/es.po +++ b/src/po/es.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: de_axis\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-10 13:40-0600\n" +"POT-Creation-Date: 2019-02-20 07:49+0000\n" "PO-Revision-Date: 2007-06-07 01:32+0100\n" "Last-Translator: Medardo Torres \n" "Language-Team: Spanish \n" @@ -18,13537 +18,16969 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: src/hal/utils/meter.c:198 +#: src/emc/task/emctaskmain.cc:479 src/emc/task/emctaskmain.cc:512 +#, fuzzy, c-format +msgid "%s exceeds +X limit" +msgstr "El programa excedio limite de la Maquina" + +#: src/emc/task/emctaskmain.cc:484 src/emc/task/emctaskmain.cc:517 +#, fuzzy, c-format +msgid "%s exceeds +Y limit" +msgstr "El programa excedio limite de la Maquina" + +#: src/emc/task/emctaskmain.cc:489 src/emc/task/emctaskmain.cc:522 +#, fuzzy, c-format +msgid "%s exceeds +Z limit" +msgstr "El programa excedio limite de la Maquina" + +#: src/emc/task/emctaskmain.cc:494 src/emc/task/emctaskmain.cc:527 +#, fuzzy, c-format +msgid "%s exceeds -X limit" +msgstr "El programa excedio limite de la Maquina" + +#: src/emc/task/emctaskmain.cc:499 src/emc/task/emctaskmain.cc:532 +#, fuzzy, c-format +msgid "%s exceeds -Y limit" +msgstr "El programa excedio limite de la Maquina" + +#: src/emc/task/emctaskmain.cc:504 src/emc/task/emctaskmain.cc:537 +#, fuzzy, c-format +msgid "%s exceeds -Z limit" +msgstr "El programa excedio limite de la Maquina" + +#: src/emc/task/emctaskmain.cc:892 #, c-format -msgid "ERROR: '%s' is not a valid probe type\n" +msgid "" +"command (%s) cannot be executed until the machine is out of E-stop and " +"turned on" msgstr "" -#: src/hal/utils/meter.c:206 +#: src/emc/task/emctaskmain.cc:1013 #, c-format -msgid "ERROR: no pin/signal/parameter name\n" +msgid "can't do that (%s:%d) in manual mode" msgstr "" -#: src/hal/utils/meter.c:212 +#: src/emc/task/emctaskmain.cc:1113 #, c-format -msgid "" -"ERROR: -s option requires a probe type and a pin/signal/parameter name\n" +msgid "can't do that (%s) in auto mode with the interpreter idle" msgstr "" -#: src/hal/utils/meter.c:238 tcl/tklinuxcnc.tcl:764 -#, fuzzy -msgid "Hal Meter" -msgstr "H_AL-metro" - -#: src/hal/utils/meter.c:287 -msgid "_Select" +#: src/emc/task/emctaskmain.cc:1180 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter reading" msgstr "" -#: src/hal/utils/meter.c:288 -msgid "E_xit" +#: src/emc/task/emctaskmain.cc:1265 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter paused" msgstr "" -#: src/hal/utils/meter.c:336 src/hal/utils/meter.c:364 -msgid "Select Item to Probe" +#: src/emc/task/emctaskmain.cc:1334 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter waiting" msgstr "" -#: src/hal/utils/meter.c:640 -msgid " _Pins " +#: src/emc/task/emctaskmain.cc:1442 +#, c-format +msgid "can't do that (%s:%d) in MDI mode" msgstr "" -#: src/hal/utils/meter.c:641 -msgid " _Signals " +#: src/emc/task/emctaskmain.cc:2100 +msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" msgstr "" -#: src/hal/utils/meter.c:642 -msgid " Para_meters " +#: src/emc/task/emctaskmain.cc:2157 tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 +#: tcl/mini.tcl:1775 tcl/tklinuxcnc.tcl:451 +#, c-format, tcl-format +msgid "can't open %s" msgstr "" -#: src/hal/utils/meter.c:685 -msgid "_Close" +#: src/emc/task/emctaskmain.cc:2169 +msgid "Can't issue MDI command when not homed" msgstr "" -#: src/hal/utils/scope.c:126 -msgid "" -"Usage:\n" -" halscope [-h] [-i infile] [-o outfile] [num_samples]\n" +#: src/emc/task/emctaskmain.cc:2174 +msgid "Must be in MDI mode to issue MDI command" msgstr "" -#: src/hal/utils/scope.c:474 src/hal/utils/scope.c:501 -#, fuzzy -msgid "Open Configuration File:" -msgstr "Mostrar configuracion _HAl" - -#: src/hal/utils/scope.c:535 -#, fuzzy -msgid "_Open Configuration..." -msgstr "Mostrar configuracion _HAl" - -#: src/hal/utils/scope.c:541 -#, fuzzy -msgid "_Save Configuration..." -msgstr "Mostrar configuracion _HAl" - -#: src/hal/utils/scope.c:550 -msgid "O_pen Data File..." +#: src/emc/task/emctaskmain.cc:2256 +msgid "Can't run a program when not homed" msgstr "" -#: src/hal/utils/scope.c:557 -msgid "S_ave Data File..." +#: src/emc/rs274ngc/interp_arc.cc:110 src/emc/rs274ngc/interp_arc.cc:284 +#, c-format +msgid "" +"Zero-radius arc: start=(%c%.4f,%c%.4f) center=(%c%.4f,%c%.4f) end=(%c%.4f,%c" +"%.4f) r1=%.4f r2=%.4f" msgstr "" -#: src/hal/utils/scope.c:566 share/axis/tcl/axis.tcl:93 -#, fuzzy -msgid "_Quit" -msgstr "_Terminar" - -#: src/hal/utils/scope.c:572 -msgid "_About Halscope" +#: src/emc/rs274ngc/interp_arc.cc:120 src/emc/rs274ngc/interp_arc.cc:292 +#, c-format +msgid "" +"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " +"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " +"rel_err=%.4f%%" msgstr "" -#: src/hal/utils/scope.c:578 share/axis/tcl/axis.tcl:435 -#, fuzzy -msgid "_File" -msgstr "_Archivo" - -#: src/hal/utils/scope.c:582 share/axis/tcl/axis.tcl:447 -#, fuzzy -msgid "_Help" -msgstr "Ayuda" - -#: src/hal/utils/scope.c:641 -msgid "HAL Oscilloscope" +#: src/emc/rs274ngc/interp_check.cc:90 +msgid "G4 not allowed with G2 or G3 because they both use P" msgstr "" -#: src/hal/utils/scope.c:669 -msgid "Horizontal" +#: src/emc/rs274ngc/interp_check.cc:93 +msgid "Line with G10 does not have L1, L10, L11, L2, or L20" msgstr "" -#: src/hal/utils/scope.c:677 -msgid "Selected Channel" +#: src/emc/rs274ngc/interp_check.cc:94 +msgid "P value not an integer with G10" msgstr "" -#: src/hal/utils/scope.c:683 -msgid "Run Mode" +#: src/emc/rs274ngc/interp_check.cc:95 +#, c-format +msgid "P value out of range (0-9) with G10 L%d" msgstr "" -#: src/hal/utils/scope.c:686 -msgid "Trigger" +#: src/emc/rs274ngc/interp_check.cc:96 +#, c-format +msgid "P value out of range with G10 L%d" msgstr "" -#: src/hal/utils/scope.c:692 -msgid "Vertical" +#: src/emc/rs274ngc/interp_check.cc:100 +msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." msgstr "" -#: src/hal/utils/scope.c:700 share/axis/tcl/axis.tcl:135 -#: share/axis/tcl/axis.tcl:1199 -#, fuzzy -msgid "Stop" -msgstr "De_tener" - -#: src/hal/utils/scope.c:703 -msgid "Normal" +#: src/emc/rs274ngc/interp_check.cc:259 +msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" msgstr "" -#: src/hal/utils/scope.c:706 -msgid "Single" +#: src/emc/rs274ngc/interp_check.cc:265 +msgid "E word with no G76, M66, M67 or M68 to use it" msgstr "" -#: src/hal/utils/scope.c:709 -msgid "Roll" +#: src/emc/rs274ngc/interp_check.cc:270 +msgid "H word with no G43 or G76 to use it" msgstr "" -#: src/hal/utils/scope_horiz.c:130 -#, fuzzy -msgid "Zoom" -msgstr "Ampliar [+]" - -#: src/hal/utils/scope_horiz.c:131 -msgid " Pos " +#: src/emc/rs274ngc/interp_check.cc:276 +msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" msgstr "" -#: src/hal/utils/scope_horiz.c:164 -msgid "" -"----- Samples\n" -"at ---- KHz" +#: src/emc/rs274ngc/interp_check.cc:282 +msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" msgstr "" -#: src/hal/utils/scope_horiz.c:459 -msgid "Realtime component not loaded" +#: src/emc/rs274ngc/interp_check.cc:288 +msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" msgstr "" -#: src/hal/utils/scope_horiz.c:460 +#: src/emc/rs274ngc/interp_check.cc:298 msgid "" -"HALSCOPE uses a realtime component called scope_rt'\n" -"to sample signals for display. It is not currently loaded\n" -"and attempting to load it automatically failed. More information\n" -"may be available in the terminal where halscope was started.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Load the component (using 'halcmd loadrt scope_rt'), then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" -msgstr "" - -#: src/hal/utils/scope_horiz.c:495 -msgid "Realtime function not linked" +"L word with no G10, cutter compensation, canned cycle, digital/analog input, " +"or NURBS code" msgstr "" -#: src/hal/utils/scope_horiz.c:496 +#: src/emc/rs274ngc/interp_check.cc:310 msgid "" -"The HALSCOPE realtime sampling function\n" -"must be called from a HAL thread in to\n" -"determine the sampling rate.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Select a thread name and multiplier then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " +"M53 M62 M63 M64 M65 M66 or user M code to use it" msgstr "" -#: src/hal/utils/scope_horiz.c:503 -msgid "Select Sample Rate" +#: src/emc/rs274ngc/interp_check.cc:315 +msgid "P value not an integer with M19 G2 or G3" msgstr "" -#: src/hal/utils/scope_horiz.c:504 -msgid "" -"Select a thread name and multiplier then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +#: src/emc/rs274ngc/interp_check.cc:317 +msgid "P value must be 0,1,or 2 with M19" msgstr "" -#: src/hal/utils/scope_horiz.c:526 -msgid "Thread:" +#: src/emc/rs274ngc/interp_check.cc:319 +msgid "P value should be 1 or greater with G2 or G3" msgstr "" -#: src/hal/utils/scope_horiz.c:534 -msgid "Sample Period:" +#: src/emc/rs274ngc/interp_check.cc:327 +msgid "" +"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " +"code that uses it" msgstr "" -#: src/hal/utils/scope_horiz.c:542 -msgid "Sample Rate:" +#: src/emc/rs274ngc/interp_check.cc:337 +msgid "R value must be within 0..360 with M19" msgstr "" -#: src/hal/utils/scope_horiz.c:558 src/emc/usr_intf/touchy/mdi.py:78 -msgid "Thread" +#: src/emc/rs274ngc/interp_convert.cc:139 +msgid "You must specify both X and Y coordinates for Control Points" msgstr "" -#: src/hal/utils/scope_horiz.c:559 -msgid "Period" +#: src/emc/rs274ngc/interp_convert.cc:142 +msgid "Can specify P without X and Y only for the first control point" msgstr "" -#: src/hal/utils/scope_horiz.c:619 -msgid "Multiplier:" +#: src/emc/rs274ngc/interp_convert.cc:145 +msgid "Must specify positive weight P for every Control Point" msgstr "" -#: src/hal/utils/scope_horiz.c:636 -msgid "Record Length" +#: src/emc/rs274ngc/interp_convert.cc:148 +msgid "Cannot make a NURBS with 0 feedrate" msgstr "" -#: src/hal/utils/scope_horiz.c:639 -#, c-format -msgid "%5d samples (1 channel)" +#: src/emc/rs274ngc/interp_convert.cc:183 +msgid "Cannot use G5.3 without G5.2 first" msgstr "" -#: src/hal/utils/scope_horiz.c:641 +#: src/emc/rs274ngc/interp_convert.cc:184 #, c-format -msgid "%5d samples (2 channels)" +msgid "" +"You must specify a number of control points at least equal to the order L = " +"%d" msgstr "" -#: src/hal/utils/scope_horiz.c:645 -#, c-format -msgid "%5d samples (4 channels)" +#: src/emc/rs274ngc/interp_convert.cc:213 +msgid "Cannot convert spline with cutter radius compensation" msgstr "" -#: src/hal/utils/scope_horiz.c:649 -#, c-format -msgid "%5d samples (8 channels)" +#: src/emc/rs274ngc/interp_convert.cc:223 +msgid "Splines must be in the XY plane" msgstr "" -#: src/hal/utils/scope_horiz.c:653 -#, c-format -msgid "%5d samples (16 channels)" +#: src/emc/rs274ngc/interp_convert.cc:228 +msgid "Splines may not have motion in Z, A, B, or C" msgstr "" -#: src/hal/utils/scope_horiz.c:708 src/hal/utils/scope_horiz.c:754 -#: src/hal/utils/scope_horiz.c:966 src/hal/utils/scope_vert.c:761 -#: src/hal/utils/scope_vert.c:853 tcl/bin/emccalib.tcl:227 -#: tcl/bin/genedit.tcl:180 tcl/bin/genedit.tcl:450 tcl/bin/halconfig.tcl:682 -#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:257 -#: tcl/bin/pickconfig.tcl:479 tcl/bin/pickconfig.tcl:506 tcl/mini.tcl:1456 -#: tcl/mini.tcl:2937 tcl/tklinuxcnc.tcl:160 tcl/tklinuxcnc.tcl:245 -#: tcl/tklinuxcnc.tcl:419 tcl/tklinuxcnc.tcl:1338 tcl/tklinuxcnc.tcl:1407 -#: tcl/tklinuxcnc.tcl:1438 tcl/tklinuxcnc.tcl:1469 tcl/tklinuxcnc.tcl:2017 -#: tcl/tklinuxcnc.tcl:2036 tcl/tklinuxcnc.tcl:2055 tcl/tklinuxcnc.tcl:2102 -#: src/emc/usr_intf/axis/scripts/axis.py:1077 -#: src/emc/usr_intf/axis/scripts/axis.py:1141 -#: src/emc/usr_intf/axis/scripts/axis.py:1458 -#: src/emc/usr_intf/axis/scripts/axis.py:2477 -#: src/emc/usr_intf/axis/scripts/axis.py:3336 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:718 -#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1720 -#: share/axis/tcl/axis.tcl:1757 -msgid "OK" -msgstr "OK" +#: src/emc/rs274ngc/interp_convert.cc:232 +msgid "Must specify both I and J with G5.1" +msgstr "" -#: src/hal/utils/scope_horiz.c:713 src/hal/utils/scope_horiz.c:754 -#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 -#, fuzzy -msgid "Quit" -msgstr "_Terminar" +#: src/emc/rs274ngc/interp_convert.cc:251 +msgid "Must specify both I and J, or neither" +msgstr "" -#: src/hal/utils/scope_horiz.c:745 -msgid "Realtime thread(s) not running" +#: src/emc/rs274ngc/interp_convert.cc:262 +msgid "Must specify both P and Q with G5" msgstr "" -#: src/hal/utils/scope_horiz.c:746 +#: src/emc/rs274ngc/interp_convert.cc:363 msgid "" -"HALSCOPE uses code in a realtime HAL thread to sample\n" -"signals for display. The HAL thread(s) are not running.\n" -"Threads are usually started by the application you are\n" -"attempting to run, or you can use the 'halcmd start' command.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Start the threads, then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +"The move just after exiting cutter compensation mode must be straight, not " +"an arc" msgstr "" -#: src/hal/utils/scope_horiz.c:779 -msgid "Pick log file to write to:" +#: src/emc/rs274ngc/interp_convert.cc:371 +msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" msgstr "" -#: src/hal/utils/scope_horiz.c:962 -msgid "Not enough channels" +#: src/emc/rs274ngc/interp_convert.cc:383 +#: src/emc/rs274ngc/interp_convert.cc:4488 +msgid "Cannot feed with zero spindle speed in feed per rev mode" msgstr "" -#: src/hal/utils/scope_horiz.c:963 -msgid "" -"This record length cannot handle the channels\n" -"that are currently enabled. Pick a shorter\n" -"record length that supports more channels." +#: src/emc/rs274ngc/interp_convert.cc:394 +#: src/emc/rs274ngc/interp_convert.cc:400 +#: src/emc/rs274ngc/interp_convert.cc:409 +#: src/emc/rs274ngc/interp_convert.cc:415 +#: src/emc/rs274ngc/interp_convert.cc:424 +#: src/emc/rs274ngc/interp_convert.cc:430 +#, c-format +msgid "%c word missing in absolute center arc" msgstr "" -#: src/hal/utils/scope_horiz.c:1051 -#, c-format +#: src/emc/rs274ngc/interp_convert.cc:662 msgid "" -"%s\n" -"per div" +"Radius of cutter compensation entry arc is not greater than the tool radius" msgstr "" -#: src/hal/utils/scope_horiz.c:1066 -#, c-format +#: src/emc/rs274ngc/interp_convert.cc:882 +#: src/emc/rs274ngc/interp_convert.cc:892 src/emc/rs274ngc/interp_queue.cc:696 msgid "" -"%s samples\n" -"at %s" +"Arc move in concave corner cannot be reached by the tool without gouging" msgstr "" -#: src/hal/utils/scope_horiz.c:1170 -msgid "nSec" +#: src/emc/rs274ngc/interp_convert.cc:918 +msgid "Arc to arc motion is invalid because the arcs have the same center" msgstr "" -#: src/hal/utils/scope_horiz.c:1173 -msgid "uSec" +#: src/emc/rs274ngc/interp_convert.cc:921 +msgid "" +"Arc to arc motion makes a corner the compensated tool can't fit in without " +"gouging" msgstr "" -#: src/hal/utils/scope_horiz.c:1177 -msgid "mSec" -msgstr "" - -#: src/hal/utils/scope_horiz.c:1181 -#: src/emc/usr_intf/pncconf/pncconf.glade:1953 -#: src/emc/usr_intf/pncconf/pncconf.glade:2825 -#: src/emc/usr_intf/pncconf/pncconf.glade:3706 -#: src/emc/usr_intf/pncconf/pncconf.glade:4587 -#, fuzzy -msgid "Sec" -msgstr "Secundario" - -#: src/hal/utils/scope_horiz.c:1198 -#: src/emc/usr_intf/stepconf/stepconf.glade:3664 -#: src/emc/usr_intf/stepconf/stepconf.glade:4040 -#: src/emc/usr_intf/pncconf/pncconf.glade:8268 -#: src/emc/usr_intf/pncconf/pncconf.glade:8281 -#: src/emc/usr_intf/pncconf/pncconf.glade:8458 -msgid "Hz" +#: src/emc/rs274ngc/interp_convert.cc:1053 +#: src/emc/rs274ngc/interp_convert.cc:1057 +#: src/emc/rs274ngc/interp_convert.cc:1061 +#: src/emc/rs274ngc/interp_convert.cc:3945 +#: src/emc/rs274ngc/interp_convert.cc:3948 +#: src/emc/rs274ngc/interp_convert.cc:3951 src/emc/rs274ngc/interp_find.cc:97 +#, c-format +msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" msgstr "" -#: src/hal/utils/scope_horiz.c:1201 -msgid "KHz" +#: src/emc/rs274ngc/interp_convert.cc:1563 +msgid "Cannot change control mode with cutter radius compensation on" msgstr "" -#: src/hal/utils/scope_horiz.c:1205 -msgid "Mhz" +#: src/emc/rs274ngc/interp_convert.cc:1676 +msgid "Cannot change coordinate systems with cutter radius compensation on" msgstr "" -#: src/hal/utils/scope_vert.c:403 src/hal/utils/scope_vert.c:1258 +#: src/emc/rs274ngc/interp_convert.cc:1920 #, c-format -msgid "" -"Offset\n" -"%s" +msgid "G%d.1 with no D word" msgstr "" -#: src/hal/utils/scope_vert.c:618 -msgid "Gain" +#: src/emc/rs274ngc/interp_convert.cc:1923 +#, c-format +msgid "G%d.1 with L word, but plane is not G18" msgstr "" -#: src/hal/utils/scope_vert.c:630 src/hal/utils/scope_trig.c:252 -msgid "Pos" +#: src/emc/rs274ngc/interp_convert.cc:1934 +#, c-format +msgid "G%d requires D word to be a whole number" msgstr "" -#: src/hal/utils/scope_vert.c:644 tcl/ngcgui_ttt.tcl:214 -#: src/emc/usr_intf/pncconf/pncconf.glade:57147 -msgid "Scale" +#: src/emc/rs274ngc/interp_convert.cc:1941 +#, c-format +msgid "G%d with lathe tool, but plane is not G18" msgstr "" -#: src/hal/utils/scope_vert.c:657 -msgid "Chan Off" +#: src/emc/rs274ngc/interp_convert.cc:2340 +msgid "Cannot set reference point with cutter compensation in effect" msgstr "" -#: src/hal/utils/scope_vert.c:713 -msgid "Set Offset" +#: src/emc/rs274ngc/interp_convert.cc:2859 +#, c-format +msgid "gen_restore G20/G21 failed: '%s'" msgstr "" -#: src/hal/utils/scope_vert.c:714 +#: src/emc/rs274ngc/interp_convert.cc:2907 #, c-format msgid "" -"Set the vertical offset\n" -"for channel %d." +"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" msgstr "" -#: src/hal/utils/scope_vert.c:734 -msgid "AC Coupled" +#: src/emc/rs274ngc/interp_convert.cc:2908 +#, c-format +msgid "BUG: restore from level %d !?" msgstr "" -#: src/hal/utils/scope_vert.c:769 src/hal/utils/scope_vert.c:1171 -#: src/hal/utils/scope_trig.c:367 tcl/bin/emccalib.tcl:229 -#: tcl/bin/genedit.tcl:294 tcl/bin/halconfig.tcl:103 tcl/bin/halconfig.tcl:684 -#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:260 -#: tcl/bin/pickconfig.tcl:369 tcl/mini.tcl:1457 tcl/mini.tcl:2938 -#: tcl/mini.tcl:3110 tcl/tklinuxcnc.tcl:162 tcl/tklinuxcnc.tcl:213 -#: tcl/tklinuxcnc.tcl:420 tcl/tklinuxcnc.tcl:1339 tcl/tklinuxcnc.tcl:1408 -#: tcl/tklinuxcnc.tcl:1439 tcl/tklinuxcnc.tcl:1470 tcl/tklinuxcnc.tcl:2103 -#: src/emc/usr_intf/axis/scripts/axis.py:1404 -#: src/emc/usr_intf/axis/scripts/axis.py:1459 -#: src/emc/usr_intf/axis/scripts/axis.py:1646 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:720 -msgid "Cancel" -msgstr "Cancelar" - -#: src/hal/utils/scope_vert.c:849 -#, fuzzy -msgid "Too many channels" -msgstr "Cambio de pieza" - -#: src/hal/utils/scope_vert.c:850 -msgid "" -"You cannot add another channel.\n" -"\n" -"Either turn off one or more channels, or shorten\n" -"the record length to allow for more channels" +#: src/emc/rs274ngc/interp_convert.cc:2909 +#, c-format +msgid "BUG: restore to level %d !?" msgstr "" -#: src/hal/utils/scope_vert.c:1026 -msgid "Select Channel Source" +#: src/emc/rs274ngc/interp_convert.cc:2928 +#, c-format +msgid "M7x: restore_settings G20/G21 failed: '%s'" msgstr "" -#: src/hal/utils/scope_vert.c:1027 +#: src/emc/rs274ngc/interp_convert.cc:2946 #, c-format -msgid "" -"Select a pin, signal, or parameter\n" -"as the source for channel %d." +msgid "M7x: restore_settings failed executing: '%s': %s" msgstr "" -#: src/hal/utils/scope_vert.c:1059 -msgid "Pins" +#: src/emc/rs274ngc/interp_convert.cc:3005 +#, c-format +msgid "Failed to restore interp state on abort '%s': %s" msgstr "" -#: src/hal/utils/scope_vert.c:1060 -msgid "Signals" +#: src/emc/rs274ngc/interp_convert.cc:3069 +msgid "No valid P word with M62" msgstr "" -#: src/hal/utils/scope_vert.c:1061 -msgid "Parameters" +#: src/emc/rs274ngc/interp_convert.cc:3072 +msgid "No valid P word with M63" msgstr "" -#: src/hal/utils/scope_trig.c:110 -#, c-format -msgid "Falling" +#: src/emc/rs274ngc/interp_convert.cc:3075 +msgid "No valid P word with M64" msgstr "" -#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:275 -#, c-format -msgid "Rising" +#: src/emc/rs274ngc/interp_convert.cc:3078 +msgid "No valid P word with M65" msgstr "" -#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:283 -msgid "" -"Source\n" -"None" +#: src/emc/rs274ngc/interp_convert.cc:3111 +msgid "invalid P-word with M66" msgstr "" -#: src/hal/utils/scope_trig.c:124 -#, c-format -msgid "" -"Source\n" -"Chan %2d" +#: src/emc/rs274ngc/interp_convert.cc:3126 +msgid "Cannot wait for digital input with cutter radius compensation on" msgstr "" -#: src/hal/utils/scope_trig.c:199 tcl/tklinuxcnc.tcl:827 -#: src/emc/usr_intf/touchy/touchy.glade:2469 -msgid "Auto" +#: src/emc/rs274ngc/interp_convert.cc:3138 +msgid "Cannot wait for analog input with cutter radius compensation on" msgstr "" -#: src/hal/utils/scope_trig.c:201 -msgid "Force" +#: src/emc/rs274ngc/interp_convert.cc:3152 +msgid "Invalid analog index with M67" msgstr "" -#: src/hal/utils/scope_trig.c:235 src/hal/utils/scope_trig.c:269 -msgid "Level" +#: src/emc/rs274ngc/interp_convert.cc:3157 +msgid "Invalid analog index with M68" msgstr "" -#: src/hal/utils/scope_trig.c:303 -msgid "Trigger Source" +#: src/emc/rs274ngc/interp_convert.cc:3188 +msgid "Need non-negative Q-word to specify tool number with M61" msgstr "" -#: src/hal/utils/scope_trig.c:304 -msgid "Select a channel to use for triggering." +#: src/emc/rs274ngc/interp_convert.cc:3258 +msgid "Q word with M19 requires a value > 0" msgstr "" -#: src/hal/utils/scope_trig.c:327 -msgid "Chan" +#: src/emc/rs274ngc/interp_convert.cc:3286 +msgid "Cannot restore context from invalid stack frame - missing M70/M73?" msgstr "" -#: src/hal/utils/scope_trig.c:328 -msgid "Source" +#: src/emc/rs274ngc/interp_convert.cc:3327 +#: src/emc/rs274ngc/interp_convert.cc:3344 +#: src/emc/rs274ngc/interp_convert.cc:3359 +#: src/emc/rs274ngc/interp_convert.cc:3373 +#: src/emc/rs274ngc/interp_convert.cc:3387 +msgid "Cannot enable overrides with cutter radius compensation on" msgstr "" -#: src/emc/motion/control.c:261 -msgid "Unexpected realtime delay: check dmesg for details." +#: src/emc/rs274ngc/interp_convert.cc:3334 +#: src/emc/rs274ngc/interp_convert.cc:3349 +#: src/emc/rs274ngc/interp_convert.cc:3364 +#: src/emc/rs274ngc/interp_convert.cc:3378 +#: src/emc/rs274ngc/interp_convert.cc:3392 +msgid "Cannot disable overrides with cutter radius compensation on" msgstr "" -#: src/emc/motion/control.c:263 +#: src/emc/rs274ngc/interp_convert.cc:3506 +#: src/emc/rs274ngc/interp_convert.cc:3507 +#: src/emc/rs274ngc/interp_convert.cc:3508 #, c-format -msgid "" -"\n" -"In recent history there were\n" -"%ld, %ld, %ld, %ld, and %ld\n" -"elapsed clocks between calls to the motion controller.\n" +msgid "Indexing axis %c can only be moved with G0" msgstr "" -#: src/emc/motion/control.c:268 +#: src/emc/rs274ngc/interp_convert.cc:3515 +#: src/emc/rs274ngc/interp_convert.cc:3517 +#: src/emc/rs274ngc/interp_convert.cc:3519 #, c-format -msgid "" -"This time, there were %ld which is so anomalously\n" -"large that it probably signifies a problem with your\n" -"realtime configuration. For the rest of this run of\n" -"EMC, this message will be suppressed.\n" -"\n" +msgid "Indexing axis %c can only be moved alone" msgstr "" -#: src/emc/motion/control.c:384 -msgid "G38.4 move finished without breaking contact." +#: src/emc/rs274ngc/interp_convert.cc:3621 +msgid "Cannot probe with feed per rev mode" msgstr "" -#: src/emc/motion/control.c:387 -msgid "G38.2 move finished without making contact." +#: src/emc/rs274ngc/interp_convert.cc:3669 +msgid "Cannot change retract mode with cutter radius compensation on" msgstr "" -#: src/emc/motion/control.c:401 -msgid "Probe tripped during non-probe MDI command." +#: src/emc/rs274ngc/interp_convert.cc:3703 +msgid "G10 L1 without offsets has no effect" msgstr "" -#: src/emc/motion/control.c:429 -msgid "Probe tripped during homing motion." +#: src/emc/rs274ngc/interp_convert.cc:3809 +msgid "Q number in G10 is not an integer" msgstr "" -#: src/emc/motion/control.c:433 -msgid "Probe tripped during a jog." +#: src/emc/rs274ngc/interp_convert.cc:3810 +msgid "Invalid tool orientation" msgstr "" -#: src/emc/motion/control.c:578 -#, c-format -msgid "fault %d during orient in progress" +#: src/emc/rs274ngc/interp_convert.cc:3933 +msgid "I J words not allowed with G10 L2" msgstr "" -#: src/emc/motion/control.c:718 -msgid "motion stopped by enable input" +#: src/emc/rs274ngc/interp_convert.cc:3954 +msgid "" +"Cannot change the active coordinate system with cutter radius compensation on" msgstr "" -#: src/emc/motion/control.c:741 -#, c-format -msgid "joint %d on limit switch error" +#: src/emc/rs274ngc/interp_convert.cc:3962 +msgid "R not allowed in G10 L20" msgstr "" -#: src/emc/motion/control.c:753 -#, c-format -msgid "joint %d amplifier fault" +#: src/emc/rs274ngc/interp_convert.cc:4550 +msgid "Spindle not turning in G33" msgstr "" -#: src/emc/motion/control.c:762 -#, c-format -msgid "joint %d following error" +#: src/emc/rs274ngc/interp_convert.cc:4560 +msgid "Spindle not turning in G33.1" msgstr "" -#: src/emc/motion/control.c:1444 -#, c-format -msgid "Exceeded positive soft limit on joint %d" +#: src/emc/rs274ngc/interp_convert.cc:4603 +msgid "BUG: An axis incorrectly moved along with an indexer" msgstr "" -#: src/emc/motion/control.c:1449 -#, c-format -msgid "Exceeded negative soft limit on joint %d" +#: src/emc/rs274ngc/interp_convert.cc:4616 +msgid "BUG: trying to index incorrect axis" msgstr "" -#: src/emc/motion/command.c:159 -#, c-format -msgid "Can't jog invalid joint number %d." +#: src/emc/rs274ngc/interp_convert.cc:4708 +msgid "Cannot use G76 threading cycle with cutter radius compensation on" msgstr "" -#: src/emc/motion/command.c:163 -#, c-format -msgid "Can't jog joint %d further past max hard limit." +#: src/emc/rs274ngc/interp_convert.cc:4711 +msgid "In G76, I must not be 0" msgstr "" -#: src/emc/motion/command.c:168 -#, c-format -msgid "Can't jog joint %d further past min hard limit." +#: src/emc/rs274ngc/interp_convert.cc:4713 +msgid "In G76, J must be greater than 0" msgstr "" -#: src/emc/motion/command.c:174 -#, c-format -msgid "Can't jog joint %d further past max soft limit." +#: src/emc/rs274ngc/interp_convert.cc:4715 +msgid "In G76, K must be greater than J" msgstr "" -#: src/emc/motion/command.c:179 -#, c-format -msgid "Can't jog joint %d further past min soft limit." +#: src/emc/rs274ngc/interp_convert.cc:4858 +msgid "" +"Length of cutter compensation entry move is not greater than the tool radius" msgstr "" -#: src/emc/motion/command.c:237 -#, c-format -msgid "%s move on line %d would exceed joint %d's positive limit" +#: src/emc/rs274ngc/interp_convert.cc:5077 +msgid "Zero degree inside corner is invalid for cutter compensation" msgstr "" -#: src/emc/motion/command.c:240 -#, c-format -msgid "%s move in MDI would exceed joint %d's positive limit" +#: src/emc/rs274ngc/interp_convert.cc:5115 +#: src/emc/rs274ngc/interp_convert.cc:5123 +msgid "" +"Arc to straight motion makes a corner the compensated tool can't fit in " +"without gouging" msgstr "" -#: src/emc/motion/command.c:247 -#, c-format -msgid "%s move on line %d would exceed joint %d's negative limit" +#: src/emc/rs274ngc/interp_convert.cc:5207 +msgid "Cannot change tools with cutter radius compensation on" msgstr "" -#: src/emc/motion/command.c:250 -#, c-format -msgid "%s move in MDI would exceed joint %d's negative limit" +#: src/emc/rs274ngc/interp_convert.cc:5328 +msgid "Cannot change tool offset with cutter radius compensation on" msgstr "" -#: src/emc/motion/command.c:500 -msgid "all joints must be homed before going into coordinated mode" +#: src/emc/rs274ngc/interp_queue.cc:694 +#, c-format +msgid "" +"BUG: cutter compensation has generated an invalid arc with mismatched radii " +"r1 %f r2 %f\n" msgstr "" -#: src/emc/motion/command.c:521 -msgid "all joints must be homed before going into teleop mode" +#: src/emc/rs274ngc/interp_queue.cc:716 +msgid "BUG: Unsupported plane in cutter compensation" msgstr "" -#: src/emc/motion/command.c:675 src/emc/motion/command.c:741 -#: src/emc/motion/command.c:814 -msgid "Can't jog joint in coordinated mode." +#: src/emc/rs274ngc/interp_queue.cc:729 +msgid "" +"Straight traverse in concave corner cannot be reached by the tool without " +"gouging" msgstr "" -#: src/emc/motion/command.c:680 src/emc/motion/command.c:746 -#: src/emc/motion/command.c:819 -msgid "Can't jog joint when not enabled." +#: src/emc/rs274ngc/interp_queue.cc:757 +#, c-format +msgid "BUG: Unsupported plane [%d] in cutter compensation" msgstr "" -#: src/emc/motion/command.c:685 src/emc/motion/command.c:824 -msgid "Can't jog any joints while homing." +#: src/emc/rs274ngc/interp_queue.cc:771 +msgid "" +"Straight feed in concave corner cannot be reached by the tool without gouging" msgstr "" -#: src/emc/motion/command.c:751 -msgid "Can't jog any joint while homing." +#: src/emc/rs274ngc/interp_cycles.cc:630 +msgid "Cannot feed with zero feed rate" msgstr "" -#: src/emc/motion/command.c:881 -msgid "need to be enabled, in coord mode for linear move" +#: src/emc/rs274ngc/interp_cycles.cc:631 +msgid "Cannot use inverse time feed with canned cycles" msgstr "" -#: src/emc/motion/command.c:891 -msgid "can't do linear move with limits exceeded" +#: src/emc/rs274ngc/interp_cycles.cc:632 +msgid "Cannot use canned cycles with cutter compensation on" msgstr "" -#: src/emc/motion/command.c:910 -msgid "can't add linear move" +#: src/emc/rs274ngc/interp_cycles.cc:829 +msgid "G17 canned cycle is not possible on a machine without Z axis" msgstr "" -#: src/emc/motion/command.c:930 -msgid "need to be enabled, in coord mode for circular move" +#: src/emc/rs274ngc/interp_cycles.cc:1015 +msgid "G17.1 canned cycle is not possible on a machine without W axis" msgstr "" -#: src/emc/motion/command.c:940 -msgid "can't do circular move with limits exceeded" +#: src/emc/rs274ngc/interp_cycles.cc:1231 +msgid "G19 canned cycle is not possible on a machine without X axis" msgstr "" -#: src/emc/motion/command.c:958 -msgid "can't add circular move" +#: src/emc/rs274ngc/interp_cycles.cc:1399 +msgid "G19.1 canned cycle is not possible on a machine without U axis" msgstr "" -#: src/emc/motion/command.c:1048 -msgid "MOTION: can't STEP while already executing" +#: src/emc/rs274ngc/interp_cycles.cc:1624 +msgid "G18 canned cycle is not possible on a machine without Y axis" msgstr "" -#: src/emc/motion/command.c:1140 -msgid "can't enable motion, enable input is false" +#: src/emc/rs274ngc/interp_cycles.cc:1791 +msgid "G18.1 canned cycle is not possible on a machine without V axis" msgstr "" -#: src/emc/motion/command.c:1213 -msgid "must be in joint mode to home" +#: src/emc/rs274ngc/interp_find.cc:170 +msgid "Cannot use polar coordinates with G53" msgstr "" -#: src/emc/motion/command.c:1224 src/emc/motion/command.c:1235 -msgid "homing sequence already in progress" +#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 +#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 +#: src/emc/rs274ngc/interp_find.cc:347 +msgid "Cannot specify X or Y words with polar coordinate" msgstr "" -#: src/emc/motion/command.c:1233 -msgid "homing already in progress" +#: src/emc/rs274ngc/interp_find.cc:272 +msgid "Must specify angle in polar coordinate if at the origin" msgstr "" -#: src/emc/motion/command.c:1263 -msgid "must be in joint mode or disabled to unhome" +#: src/emc/rs274ngc/interp_find.cc:338 +msgid "" +"Incremental motion with polar coordinates is indeterminate when at the origin" msgstr "" -#: src/emc/motion/command.c:1275 src/emc/motion/command.c:1298 -#, c-format -msgid "Cannot unhome while homing, joint %d" +#: src/emc/rs274ngc/interp_find.cc:348 +msgid "G91 motion with polar coordinates is indeterminate when at the origin" msgstr "" -#: src/emc/motion/command.c:1279 src/emc/motion/command.c:1302 +#: src/emc/rs274ngc/interp_find.cc:720 #, c-format -msgid "Cannot unhome while moving, joint %d" +msgid "Requested tool %d not found in the tool table" msgstr "" -#: src/emc/motion/command.c:1307 -#, c-format -msgid "Cannot unhome inactive joint %d" +#: src/emc/rs274ngc/interp_internal.cc:161 +msgid "Cannot use polar coordinate on a machine lacking X or Y axes" msgstr "" -#: src/emc/motion/command.c:1311 -#, c-format -msgid "Cannot unhome invalid joint %d (max %d)" +#: src/emc/rs274ngc/interp_internal.cc:162 +msgid "Cannot use polar coordinate except in G17 plane" msgstr "" -#: src/emc/motion/command.c:1338 -msgid "need to be enabled, in coord mode for probe move" +#: src/emc/rs274ngc/interp_internal.cc:163 +msgid "Cannot specify both polar coordinate and X word" msgstr "" -#: src/emc/motion/command.c:1348 -msgid "can't do probe move with limits exceeded" +#: src/emc/rs274ngc/interp_internal.cc:164 +msgid "Cannot specify both polar coordinate and Y word" msgstr "" -#: src/emc/motion/command.c:1362 -msgid "Probe is already clear when starting G38.4 or G38.5 move" +#: src/emc/rs274ngc/interp_internal.cc:185 +#: src/emc/rs274ngc/interp_internal.cc:199 +#: src/emc/rs274ngc/interp_internal.cc:214 +msgid "Polar coordinates can only be used for motion" msgstr "" -#: src/emc/motion/command.c:1364 -msgid "Probe is already tripped when starting G38.2 or G38.3 move" +#: src/emc/rs274ngc/interp_read.cc:1150 src/emc/rs274ngc/interp_read.cc:1154 +#, c-format +msgid "Bad character '\\%03o' used" msgstr "" -#: src/emc/motion/command.c:1376 -msgid "can't add probe move" +#: src/emc/rs274ngc/interp_read.cc:1154 +#, c-format +msgid "Bad character '%c' used" msgstr "" -#: src/emc/motion/command.c:1400 -msgid "need to be enabled, in coord mode for rigid tap move" +#: src/emc/rs274ngc/interp_read.cc:1678 +msgid "Left bracket missing after 'while'" msgstr "" -#: src/emc/motion/command.c:1410 -msgid "can't do rigid tap move with limits exceeded" +#: src/emc/rs274ngc/interp_read.cc:1693 +msgid "Left bracket missing after 'repeat'" msgstr "" -#: src/emc/motion/command.c:1421 -msgid "can't add rigid tap move" +#: src/emc/rs274ngc/interp_read.cc:1708 +msgid "Left bracket missing after 'if'" msgstr "" -#: src/emc/motion/command.c:1435 -msgid "need to be enabled, in teleop mode for teleop move" +#: src/emc/rs274ngc/interp_read.cc:1723 +msgid "Left bracket missing after 'elseif'" msgstr "" -#: src/emc/motion/command.c:1605 -#, c-format -msgid "joint %d: too many compensation entries" +#: src/emc/rs274ngc/interp_read.cc:1926 +msgid "Cannot read current position with cutter radius compensation on" msgstr "" -#: src/emc/motion/command.c:1611 -#, c-format -msgid "joint %d: compensation values must increase" +#: src/emc/rs274ngc/interp_read.cc:1941 +msgid "Expected # reading parameter" msgstr "" -#: src/emc/motion/command.c:1640 -#, c-format -msgid "unrecognized command %d" +#: src/emc/rs274ngc/interp_read.cc:1943 +msgid "Expected ] reading bracketed parameter" msgstr "" -#: src/emc/motion/motion.c:185 -msgid "MOTION: hal_init() failed\n" +#: src/emc/rs274ngc/interp_read.cc:2615 +#, c-format +msgid "bad number format (conversion failed) parsing '%s'" msgstr "" -#: src/emc/motion/motion.c:190 +#: src/emc/rs274ngc/interp_read.cc:2616 #, c-format -msgid "MOTION: num_joints is %d, must be between 1 and %d\n" +msgid "bad number format (trailing characters) parsing '%s'" msgstr "" -#: src/emc/motion/motion.c:197 -#, c-format -msgid "MOTION: num_dio is %d, must be between 1 and %d\n" +#: src/emc/rs274ngc/interp_read.cc:2706 +msgid "Calculation resulted in 'not a number'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:2708 +msgid "Calculation resulted in 'infinity'" msgstr "" -#: src/emc/motion/motion.c:204 +#: src/emc/rs274ngc/interp_read.cc:3001 #, c-format -msgid "MOTION: num_aio is %d, must be between 1 and %d\n" +msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" msgstr "" -#: src/emc/motion/motion.c:212 -msgid "MOTION: init_hal_io() failed\n" +#: src/emc/rs274ngc/interp_read.cc:3113 +msgid "Multiple U words on one line" msgstr "" -#: src/emc/motion/motion.c:221 -msgid "MOTION: init_comm_buffers() failed\n" +#: src/emc/rs274ngc/interp_read.cc:3129 +msgid "Multiple V words on one line" msgstr "" -#: src/emc/motion/motion.c:229 -msgid "MOTION: init_threads() failed\n" +#: src/emc/rs274ngc/interp_read.cc:3145 +msgid "Multiple W words on one line" msgstr "" -#: src/emc/motion/motion.c:254 +#: src/emc/rs274ngc/interp_o_word.cc:97 #, c-format -msgid "MOTION: hal_stop_threads() failed, returned %d\n" +msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" msgstr "" -#: src/emc/motion/motion.c:260 +#: src/emc/rs274ngc/interp_o_word.cc:722 #, c-format -msgid "MOTION: rtapi_shmem_delete() failed, returned %d\n" +msgid "%d: not in a subroutine definition: '%s'" msgstr "" -#: src/emc/motion/motion.c:266 +#: src/emc/rs274ngc/interp_o_word.cc:759 src/emc/rs274ngc/interp_o_word.cc:809 #, c-format -msgid "MOTION: hal_exit() failed, returned %d\n" +msgid "%d: duplicate O-word label: '%s' - defined in line %d" msgstr "" -#: src/emc/motion/motion.c:289 -msgid "MOTION: emcmot_hal_data malloc failed\n" +#: src/emc/rs274ngc/interp_o_word.cc:862 +#, c-format +msgid "%d: duplicate O-word label - already defined in line %d: '%s'" msgstr "" -#: src/emc/motion/motion.c:597 +#: src/emc/rs274ngc/interp_o_word.cc:886 src/emc/rs274ngc/interp_o_word.cc:944 +#: src/emc/rs274ngc/interp_o_word.cc:978 src/emc/rs274ngc/interp_o_word.cc:996 +#: src/emc/rs274ngc/interp_o_word.cc:1013 +#: src/emc/rs274ngc/interp_o_word.cc:1038 #, c-format -msgid "MOTION: joint %d pin/param export failed\n" +msgid "%d: undefined O-word label: '%s'" msgstr "" -#: src/emc/motion/homing.c:80 src/emc/motion/homing.c:748 +#: src/emc/rs274ngc/interp_o_word.cc:889 src/emc/rs274ngc/interp_o_word.cc:947 #, c-format -msgid "hit limit in home state %d" +msgid "%d: no matching 'if' label: '%s' (found '%s' in line %d)" msgstr "" -#: src/emc/motion/homing.c:90 +#: src/emc/rs274ngc/interp_o_word.cc:981 #, c-format -msgid "end of move in home state %d" +msgid "%d: no matching label: '%s' (found '%s' in line %d): '%s'" msgstr "" -#: src/emc/motion/homing.c:185 +#: src/emc/rs274ngc/interp_o_word.cc:999 src/emc/rs274ngc/interp_o_word.cc:1016 #, c-format -msgid "unknown state '%d' during homing sequence" +msgid "%d: no matching while/do label: '%s' (found '%s' in line %d)" msgstr "" -#: src/emc/motion/homing.c:246 -msgid "Cannot home while shared home switch is closed" +#: src/emc/rs274ngc/interp_o_word.cc:1042 +#, c-format +msgid "%d: no matching label: '%s' (found '%s' in line %d)" msgstr "" -#: src/emc/motion/homing.c:290 -msgid "" -"invalid homing config: non-zero LATCH_VEL needs either SEARCH_VEL or " -"USE_INDEX" +#: src/emc/rs274ngc/interp_namedparams.cc:166 +#, c-format +msgid "Named parameter #<%s> not defined" msgstr "" -#: src/emc/motion/homing.c:299 -msgid "invalid homing config: non-zero SEARCH_VEL needs LATCH_VEL" +#: src/emc/rs274ngc/interp_namedparams.cc:196 +#, c-format +msgid "cant open ini file '%s'" msgstr "" -#: src/emc/motion/homing.c:447 -msgid "Home switch inactive before start of backoff move" +#: src/emc/rs274ngc/interp_namedparams.cc:213 +#, c-format +msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" msgstr "" -#: src/emc/motion/homing.c:495 -msgid "Home switch active before start of latch move" +#: src/emc/rs274ngc/interp_namedparams.cc:237 +#, c-format +msgid "fetch_hal_param: hal_init(%s): %d" msgstr "" -#: src/emc/motion/homing.c:551 -msgid "Home switch inactive before start of latch move" +#: src/emc/rs274ngc/interp_namedparams.cc:238 +#, c-format +msgid "fetch_hal_param: hal_ready(): %d" msgstr "" -#: src/emc/motion/homing.c:797 +#: src/emc/rs274ngc/interp_namedparams.cc:419 #, c-format -msgid "unknown state '%d' during homing" +msgid "Internal error: Could not assign #<%s>" msgstr "" -#: tcl/bin/emccalib.tcl:80 -#, fuzzy -msgid "LinuxCNC Servo Axis Calibration" -msgstr "Mostrar configuracion _HAl" - -#: tcl/bin/emccalib.tcl:90 -msgid "Save To File" +#: src/emc/rs274ngc/interp_namedparams.cc:427 +#, c-format +msgid "Cannot assign to read-only parameter #<%s>" msgstr "" -#: tcl/bin/emccalib.tcl:106 tcl/bin/genedit.tcl:77 tcl/bin/halconfig.tcl:151 -#: tcl/bin/halshow.tcl:85 tcl/mini.tcl:2516 tcl/tklinuxcnc.tcl:719 -#: tcl/ngcgui.tcl:549 -#, fuzzy -msgid "File" -msgstr "_Archivo" - -#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:231 tcl/bin/halconfig.tcl:153 -#: tcl/mini.tcl:3558 src/emc/usr_intf/touchy/touchy.glade:2420 -msgid "Refresh" +#: src/emc/rs274ngc/interp_namedparams.cc:731 +#, c-format +msgid "BUG: lookup_named_param(%s): unhandled index=%fn" msgstr "" -#: tcl/bin/emccalib.tcl:110 tcl/bin/genedit.tcl:82 tcl/bin/halconfig.tcl:155 -#: tcl/mini.tcl:2535 -msgid "Save" +#: src/emc/rs274ngc/rs274ngc_pre.cc:1407 src/emc/rs274ngc/rs274ngc_pre.cc:1482 +msgid "Queue is not empty after tool change" msgstr "" -#: tcl/bin/emccalib.tcl:159 tcl/bin/halconfig.tcl:623 -#, tcl-format -msgid "Tune %d" +#: src/emc/rs274ngc/rs274ngc_pre.cc:1786 +#, c-format +msgid "Unable to open parameter file: '%s'" msgstr "" -#: tcl/bin/emccalib.tcl:160 tcl/bin/halconfig.tcl:628 -#, fuzzy -msgid "INI Name" -msgstr "Archivo:" - -#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:629 -msgid "HAL's Value" +#: src/emc/rs274ngc/rs274ngc_return.hh:19 +msgid "A file is already open" msgstr "" -#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:631 -msgid "Next Value" +#: src/emc/rs274ngc/rs274ngc_return.hh:21 +msgid "All axes missing with g52 or g92" msgstr "" -#: tcl/bin/emccalib.tcl:225 tcl/bin/halconfig.tcl:680 -#: tcl/bin/halconfig.tcl:731 -msgid "Test" +#: src/emc/rs274ngc/rs274ngc_return.hh:22 +msgid "All axes missing with motion code" msgstr "" -#: tcl/bin/emccalib.tcl:358 tcl/bin/halconfig.tcl:883 -#, tcl-format -msgid "" -"The HAL parameter \n" -" %s \n" -" has changed. \n" -" Really quit?" +#: src/emc/rs274ngc/rs274ngc_return.hh:23 +msgid "Arc radius too small to reach end point" msgstr "" -#: tcl/bin/emccalib.tcl:383 tcl/bin/halconfig.tcl:1170 -msgid "" -"Not permitted to save here.\n" -"\n" -" You need to copy a configuration to your home directory and work there." +#: src/emc/rs274ngc/rs274ngc_return.hh:24 +msgid "Argument to acos out of range" msgstr "" -#: tcl/bin/emccalib.tcl:457 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 -#: tcl/bin/pickconfig.tcl:544 tcl/bin/pickconfig.tcl:555 -#: tcl/scripts/Set_Coordinates.tcl:205 tcl/scripts/Set_Coordinates.tcl:228 -#, tcl-format -msgid "can't save %s" +#: src/emc/rs274ngc/rs274ngc_return.hh:25 +msgid "Argument to asin out of range" msgstr "" -#: tcl/bin/emcdebug.tcl:166 tcl/bin/emcdebug.tcl:177 -msgid "LinuxCNC Debug" +#: src/emc/rs274ngc/rs274ngc_return.hh:26 +msgid "Attempt to divide by zero" msgstr "" -#: tcl/bin/emcdebug.tcl:185 -msgid "Invalid INI file entries" +#: src/emc/rs274ngc/rs274ngc_return.hh:27 +msgid "Attempt to raise negative to non integer power" msgstr "" -#: tcl/bin/emcdebug.tcl:186 -msgid "Configuration information" +#: src/emc/rs274ngc/rs274ngc_return.hh:28 +msgid "Bad format unsigned integer" msgstr "" -#: tcl/bin/emcdebug.tcl:187 -msgid "Use of defaults" +#: src/emc/rs274ngc/rs274ngc_return.hh:29 +msgid "Bad number format" msgstr "" -#: tcl/bin/emcdebug.tcl:188 -msgid "Version information" +#: src/emc/rs274ngc/rs274ngc_return.hh:30 +msgid "Bug bad g code modal group 0" msgstr "" -#: tcl/bin/emcdebug.tcl:189 -msgid "Command issuing" +#: src/emc/rs274ngc/rs274ngc_return.hh:31 +msgid "Bug code not g0 or g1" msgstr "" -#: tcl/bin/emcdebug.tcl:190 -#, fuzzy -msgid "IO points" -msgstr "Puntos IO" - -#: tcl/bin/emcdebug.tcl:191 -msgid "NML" +#: src/emc/rs274ngc/rs274ngc_return.hh:32 +msgid "Bug code not g17 g18 or g19" msgstr "" -#: tcl/bin/emcdebug.tcl:192 -#, fuzzy -msgid "Motion time" -msgstr "Tiempo de movimiento" +#: src/emc/rs274ngc/rs274ngc_return.hh:33 +msgid "Bug code not g20 or g21" +msgstr "" -#: tcl/bin/emcdebug.tcl:193 src/emc/usr_intf/axis/scripts/debuglevel.py:42 -msgid "Interpreter" -msgstr "Intérprete" +#: src/emc/rs274ngc/rs274ngc_return.hh:34 +msgid "Bug code not g28 or g30" +msgstr "" -#: tcl/bin/emcdebug.tcl:194 -msgid "RCS" +#: src/emc/rs274ngc/rs274ngc_return.hh:35 +msgid "Bug code not g2 or g3" msgstr "" -#: tcl/bin/emcdebug.tcl:195 -#, fuzzy -msgid "Trajectory level" -msgstr "Trajectoria" +#: src/emc/rs274ngc/rs274ngc_return.hh:37 +msgid "Bug code not g4 g10 g28 g30 g52 g53 or g92 series" +msgstr "" -#: tcl/bin/emcdebug.tcl:196 -#, fuzzy -msgid "Interpreter list" -msgstr "Lista de intérprete" +#: src/emc/rs274ngc/rs274ngc_return.hh:38 +msgid "Bug code not g61 g61.1 or g64" +msgstr "" -#: tcl/bin/genedit.tcl:78 tcl/mini.tcl:2533 -msgid "New" +#: src/emc/rs274ngc/rs274ngc_return.hh:39 +msgid "Bug code not g90 or g91" msgstr "" -#: tcl/bin/genedit.tcl:80 tcl/mini.tcl:1667 tcl/mini.tcl:2534 -#: tcl/tklinuxcnc.tcl:720 tcl/tklinuxcnc.tcl:1657 -#, fuzzy -msgid "Open..." -msgstr "_Abrir" +#: src/emc/rs274ngc/rs274ngc_return.hh:40 +msgid "Bug code not g98 or g99" +msgstr "" -#: tcl/bin/genedit.tcl:84 tcl/mini.tcl:2536 -msgid "Save As..." +#: src/emc/rs274ngc/rs274ngc_return.hh:41 +msgid "Bug code not in g52 or g92 series" msgstr "" -#: tcl/bin/genedit.tcl:87 tcl/bin/halconfig.tcl:165 tcl/bin/halshow.tcl:92 -#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1243 -#: tcl/ngcgui.tcl:3680 -msgid "Exit" +#: src/emc/rs274ngc/rs274ngc_return.hh:42 +msgid "Bug code not in range g54 to g593" msgstr "" -#: tcl/bin/genedit.tcl:91 tcl/mini.tcl:2517 -msgid "Edit" +#: src/emc/rs274ngc/rs274ngc_return.hh:43 +msgid "Bug code not m0 m1 m2 m30 m60" msgstr "" -#: tcl/bin/genedit.tcl:92 tcl/mini.tcl:2543 -msgid "Cut" +#: src/emc/rs274ngc/rs274ngc_return.hh:44 +msgid "Bug distance mode not g90 or g91" msgstr "" -#: tcl/bin/genedit.tcl:94 tcl/mini.tcl:2544 -msgid "Copy" +#: src/emc/rs274ngc/rs274ngc_return.hh:45 +msgid "Bug function should not have been called" msgstr "" -#: tcl/bin/genedit.tcl:96 tcl/mini.tcl:2545 -#, fuzzy -msgid "Paste" -msgstr "_Pausa" +#: src/emc/rs274ngc/rs274ngc_return.hh:46 +msgid "Bug in tool radius comp" +msgstr "" -#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:68 -msgid "Select All" +#: src/emc/rs274ngc/rs274ngc_return.hh:47 +msgid "Bug plane not xy yz or xz" msgstr "" -#: tcl/bin/genedit.tcl:104 tcl/bin/halconfig.tcl:192 tcl/mini.tcl:919 -#: tcl/mini.tcl:2519 tcl/tklinuxcnc.tcl:790 -#, fuzzy -msgid "Help" -msgstr "Ayuda" +#: src/emc/rs274ngc/rs274ngc_return.hh:48 +msgid "Bug side not right or left" +msgstr "" -#: tcl/bin/genedit.tcl:105 tcl/mini.tcl:1011 tcl/mini.tcl:2559 -#: tcl/tklinuxcnc.tcl:796 -msgid "About..." +#: src/emc/rs274ngc/rs274ngc_return.hh:49 +msgid "Bug unknown motion code" msgstr "" -#: tcl/bin/genedit.tcl:130 -msgid "Save and Reload" +#: src/emc/rs274ngc/rs274ngc_return.hh:50 +msgid "Bug unknown operation" msgstr "" -#: tcl/bin/genedit.tcl:133 tcl/mini.tcl:2550 -#, fuzzy -msgid "Find..." -msgstr "Procesando..." - -#: tcl/bin/genedit.tcl:135 tcl/mini.tcl:2552 -msgid "Renumber File..." +#: src/emc/rs274ngc/rs274ngc_return.hh:51 +msgid "Cannot change axis offsets with cutter radius comp" msgstr "" -#: tcl/bin/genedit.tcl:140 tcl/mini.tcl:917 tcl/mini.tcl:2518 -#: tcl/tklinuxcnc.tcl:746 -msgid "Settings" +#: src/emc/rs274ngc/rs274ngc_return.hh:52 +msgid "Cannot create backup file" msgstr "" -#: tcl/bin/genedit.tcl:141 tcl/mini.tcl:2554 -msgid "No Numbering" +#: src/emc/rs274ngc/rs274ngc_return.hh:53 +msgid "Cannot do g1 with zero feed rate" msgstr "" -#: tcl/bin/genedit.tcl:144 tcl/mini.tcl:2556 -#, fuzzy -msgid "Line Numbering..." -msgstr "Procesando..." - -#: tcl/bin/genedit.tcl:150 tcl/tklinuxcnc.tcl:768 -msgid "Scripts" +#: src/emc/rs274ngc/rs274ngc_return.hh:54 +msgid "Cannot do zero repeats of cycle" msgstr "" -#: tcl/bin/genedit.tcl:177 -msgid "About TkEditor" +#: src/emc/rs274ngc/rs274ngc_return.hh:55 +msgid "Cannot make arc with zero feed rate" msgstr "" -#: tcl/bin/genedit.tcl:179 -msgid "" -"TkEditor\n" -"\n" -"Simple Tcl/Tk Text Editor\n" -"\n" -"GPL Version 2" +#: src/emc/rs274ngc/rs274ngc_return.hh:56 +msgid "Cannot open backup file" msgstr "" -#: tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 tcl/mini.tcl:1775 -#: tcl/tklinuxcnc.tcl:451 src/emc/task/emctaskmain.cc:2072 -#, c-format, tcl-format -msgid "can't open %s" +#: src/emc/rs274ngc/rs274ngc_return.hh:57 +msgid "Cannot open variable file" msgstr "" -#: tcl/bin/genedit.tcl:267 tcl/mini.tcl:3090 -msgid "Find" +#: src/emc/rs274ngc/rs274ngc_return.hh:58 +msgid "Cannot probe with cutter radius comp on" msgstr "" -#: tcl/bin/genedit.tcl:270 -#, fuzzy -msgid "Find:" -msgstr "Portabrocas:" +#: src/emc/rs274ngc/rs274ngc_return.hh:59 +msgid "Cannot probe with zero feed rate" +msgstr "" -#: tcl/bin/genedit.tcl:276 -#, fuzzy -msgid "Replace:" -msgstr "relativo" +#: src/emc/rs274ngc/rs274ngc_return.hh:60 +msgid "Cannot put a b in canned cycle" +msgstr "" -#: tcl/bin/genedit.tcl:282 -msgid "Find All" +#: src/emc/rs274ngc/rs274ngc_return.hh:61 +msgid "Cannot put a c in canned cycle" msgstr "" -#: tcl/bin/genedit.tcl:285 tcl/mini.tcl:3113 -msgid "Replace All" +#: src/emc/rs274ngc/rs274ngc_return.hh:62 +msgid "Cannot put an a in canned cycle" msgstr "" -#: tcl/bin/genedit.tcl:288 -msgid "Skip This" +#: src/emc/rs274ngc/rs274ngc_return.hh:63 +msgid "Cannot turn cutter radius comp on when on" msgstr "" -#: tcl/bin/genedit.tcl:291 -msgid "Replace This" +#: src/emc/rs274ngc/rs274ngc_return.hh:64 +msgid "Cannot use axis values with g80" msgstr "" -#: tcl/bin/genedit.tcl:297 -msgid "Clear" +#: src/emc/rs274ngc/rs274ngc_return.hh:65 +msgid "Cannot use axis values without a g code that uses them" msgstr "" -#: tcl/bin/genedit.tcl:422 tcl/mini.tcl:2640 -msgid "Set Line Numbering" +#: src/emc/rs274ngc/rs274ngc_return.hh:66 +msgid "Cannot use g28 or g30 with cutter radius comp" msgstr "" -#: tcl/bin/genedit.tcl:424 tcl/mini.tcl:2644 -msgid "Increment" +#: src/emc/rs274ngc/rs274ngc_return.hh:67 +msgid "Cannot use g53 incremental" msgstr "" -#: tcl/bin/genedit.tcl:426 tcl/mini.tcl:2646 -msgid "One" +#: src/emc/rs274ngc/rs274ngc_return.hh:68 +msgid "Cannot use g53 with cutter radius comp" msgstr "" -#: tcl/bin/genedit.tcl:429 tcl/mini.tcl:2648 -msgid "Two" +#: src/emc/rs274ngc/rs274ngc_return.hh:69 +msgid "Cannot use two g codes that both use axis values" msgstr "" -#: tcl/bin/genedit.tcl:432 tcl/mini.tcl:2650 +#: src/emc/rs274ngc/rs274ngc_return.hh:70 #, fuzzy -msgid "Five" -msgstr "_Archivo" +msgid "Command too long" +msgstr "Mostrar posicion" -#: tcl/bin/genedit.tcl:435 tcl/mini.tcl:2652 -msgid "Ten" +#: src/emc/rs274ngc/rs274ngc_return.hh:71 +msgid "Current point same as end point of arc" msgstr "" -#: tcl/bin/genedit.tcl:439 tcl/mini.tcl:2654 -msgid "Space" +#: src/emc/rs274ngc/rs274ngc_return.hh:72 +msgid "Dwell time missing with g4" msgstr "" -#: tcl/bin/genedit.tcl:441 tcl/mini.tcl:2656 -msgid "Single Space" +#: src/emc/rs274ngc/rs274ngc_return.hh:73 +msgid "Dwell time p word missing with g82" msgstr "" -#: tcl/bin/genedit.tcl:444 tcl/mini.tcl:2658 -msgid "Double Space" +#: src/emc/rs274ngc/rs274ngc_return.hh:74 +msgid "Dwell time p word missing with g86" msgstr "" -#: tcl/bin/genedit.tcl:447 tcl/mini.tcl:2660 -msgid "Tab Space" +#: src/emc/rs274ngc/rs274ngc_return.hh:75 +msgid "Dwell time p word missing with g88" msgstr "" -#: tcl/bin/genedit.tcl:453 -msgid "Next Number:" +#: src/emc/rs274ngc/rs274ngc_return.hh:76 +msgid "Dwell time p word missing with g89" msgstr "" -#: tcl/bin/genedit.tcl:474 tcl/mini.tcl:2668 -#, fuzzy -msgid "Renumber" -msgstr "_Resumir" +#: src/emc/rs274ngc/rs274ngc_return.hh:77 +msgid "Equal sign missing in parameter setting" +msgstr "" -#: tcl/bin/halconfig.tcl:88 tcl/bin/halshow.tcl:33 -#, fuzzy -msgid "HAL Configuration" -msgstr "Mostrar configuracion _HAl" +#: src/emc/rs274ngc/rs274ngc_return.hh:78 +msgid "F word missing with inverse time arc move" +msgstr "" -#: tcl/bin/halconfig.tcl:103 -msgid "Would you like to save your configuration before you exit?" +#: src/emc/rs274ngc/rs274ngc_return.hh:79 +msgid "F word missing with inverse time g1 move" msgstr "" -#: tcl/bin/halconfig.tcl:103 -#, fuzzy -msgid "Save All" -msgstr "Restaurar todos los ejes" +#: src/emc/rs274ngc/rs274ngc_return.hh:80 +msgid "File ended with no percent sign" +msgstr "" -#: tcl/bin/halconfig.tcl:103 -msgid "Save Tune" +#: src/emc/rs274ngc/rs274ngc_return.hh:81 +msgid "File ended with no percent sign or program end" msgstr "" -#: tcl/bin/halconfig.tcl:103 -msgid "Save as Netlist" +#: src/emc/rs274ngc/rs274ngc_return.hh:82 +msgid "File name too long" msgstr "" -#: tcl/bin/halconfig.tcl:103 -#, fuzzy -msgid "Don't Save" -msgstr "Perspectiva frontal" +#: src/emc/rs274ngc/rs274ngc_return.hh:83 +msgid "G code out of range" +msgstr "" -#: tcl/bin/halconfig.tcl:132 -msgid "Show" +#: src/emc/rs274ngc/rs274ngc_return.hh:84 +msgid "I word given for arc in yz plane" msgstr "" -#: tcl/bin/halconfig.tcl:133 -msgid "Watch" +#: src/emc/rs274ngc/rs274ngc_return.hh:85 +msgid "I word missing with g87" msgstr "" -#: tcl/bin/halconfig.tcl:134 -msgid "Modify" +#: src/emc/rs274ngc/rs274ngc_return.hh:86 +msgid "J word given for arc in xz plane" msgstr "" -#: tcl/bin/halconfig.tcl:157 -msgid "Save INI Tuning" +#: src/emc/rs274ngc/rs274ngc_return.hh:87 +msgid "J word missing with g87" msgstr "" -#: tcl/bin/halconfig.tcl:159 -msgid "Save HAL Ini" +#: src/emc/rs274ngc/rs274ngc_return.hh:88 +msgid "K word given for arc in xy plane" msgstr "" -#: tcl/bin/halconfig.tcl:161 -msgid "Save HAL Net" +#: src/emc/rs274ngc/rs274ngc_return.hh:89 +msgid "K word missing with g87" msgstr "" -#: tcl/bin/halconfig.tcl:163 -msgid "Save and Exit" +#: src/emc/rs274ngc/rs274ngc_return.hh:90 +msgid "Left bracket missing after slash with atan" msgstr "" -#: tcl/bin/halconfig.tcl:168 tcl/mini.tcl:916 tcl/tklinuxcnc.tcl:739 -#, fuzzy -msgid "View" -msgstr "Perspectiva" +#: src/emc/rs274ngc/rs274ngc_return.hh:91 +msgid "Left bracket missing after unary operation name" +msgstr "" -#: tcl/bin/halconfig.tcl:170 tcl/bin/halshow.tcl:104 -msgid "Expand Tree" +#: src/emc/rs274ngc/rs274ngc_return.hh:92 +#, c-format +msgid "M code greater than 199: M%d" msgstr "" -#: tcl/bin/halconfig.tcl:172 tcl/bin/halshow.tcl:106 -msgid "Collapse Tree" +#: src/emc/rs274ngc/rs274ngc_return.hh:93 +msgid "Mixed radius ijk format for arc" msgstr "" -#: tcl/bin/halconfig.tcl:175 tcl/bin/halshow.tcl:109 -msgid "Expand Pins" +#: src/emc/rs274ngc/rs274ngc_return.hh:94 +msgid "Multiple a words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:177 tcl/bin/halshow.tcl:111 -msgid "Expand Parameters" +#: src/emc/rs274ngc/rs274ngc_return.hh:95 +msgid "Multiple b words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:179 tcl/bin/halshow.tcl:113 -msgid "Expand Signals" +#: src/emc/rs274ngc/rs274ngc_return.hh:96 +msgid "Multiple c words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:182 tcl/bin/halshow.tcl:116 -msgid "Erase Watch" +#: src/emc/rs274ngc/rs274ngc_return.hh:97 +msgid "Multiple d words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:194 tcl/mini.tcl:840 tcl/mini.tcl:2785 -#, fuzzy -msgid "About" -msgstr "Sobre AXIS" +#: src/emc/rs274ngc/rs274ngc_return.hh:98 +msgid "Multiple f words on one line" +msgstr "" -#: tcl/bin/halconfig.tcl:196 -#, fuzzy -msgid "Main" -msgstr "Coordenada absoluta" +#: src/emc/rs274ngc/rs274ngc_return.hh:99 +msgid "Multiple h words on one line" +msgstr "" -#: tcl/bin/halconfig.tcl:476 -msgid "Enter HAL command :" +#: src/emc/rs274ngc/rs274ngc_return.hh:100 +msgid "Multiple i words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:479 tcl/bin/halconfig.tcl:528 tcl/bin/halshow.tcl:354 -msgid "Execute" +#: src/emc/rs274ngc/rs274ngc_return.hh:101 +msgid "Multiple j words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:943 tcl/bin/halshow.tcl:405 -msgid "Select a node to show." +#: src/emc/rs274ngc/rs274ngc_return.hh:102 +msgid "Multiple k words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:968 tcl/bin/halshow.tcl:429 -msgid "<-- Select a Leaf. Click on its name." +#: src/emc/rs274ngc/rs274ngc_return.hh:103 +msgid "Multiple l words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:1085 tcl/bin/halconfig.tcl:1095 -#: tcl/bin/halconfig.tcl:1102 tcl/bin/halconfig.tcl:1109 -#: tcl/bin/halconfig.tcl:1116 -#, tcl-format -msgid "Click a highlighted entry where %s should go." +#: src/emc/rs274ngc/rs274ngc_return.hh:104 +msgid "Multiple p words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:1092 -msgid "Nothing to be done for parameters here. Try the tuning page" +#: src/emc/rs274ngc/rs274ngc_return.hh:105 +msgid "Multiple q words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:1124 -#, tcl-format -msgid "%s is not a leaf, try again" +#: src/emc/rs274ngc/rs274ngc_return.hh:106 +msgid "Multiple r words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:1281 -msgid "" -"Copyright Raymond E Henry. 2006\n" -"License: GPL Version 2\n" -"\n" -"Halconfig is an LinuxCNC configuration tool. It requires that you have " -"started an instance of linuxcnc.\n" -"\n" -"This script carries no warranty or liability for its use to the extent " -"allowed by law." +#: src/emc/rs274ngc/rs274ngc_return.hh:107 +msgid "Multiple s words on one line" msgstr "" -#: tcl/bin/halshow.tcl:69 -msgid " SHOW " +#: src/emc/rs274ngc/rs274ngc_return.hh:108 +msgid "Multiple t words on one line" msgstr "" -#: tcl/bin/halshow.tcl:70 -msgid " WATCH " +#: src/emc/rs274ngc/rs274ngc_return.hh:109 +msgid "Multiple x words on one line" msgstr "" -#: tcl/bin/halshow.tcl:90 -msgid "Load Watch List" +#: src/emc/rs274ngc/rs274ngc_return.hh:110 +msgid "Multiple y words on one line" msgstr "" -#: tcl/bin/halshow.tcl:102 -msgid "Tree View" +#: src/emc/rs274ngc/rs274ngc_return.hh:111 +msgid "Multiple z words on one line" msgstr "" -#: tcl/bin/halshow.tcl:349 -msgid "Test HAL command :" +#: src/emc/rs274ngc/rs274ngc_return.hh:112 +msgid "Must use g0 or g1 with g53" msgstr "" -#: tcl/bin/halshow.tcl:544 -msgid "Load a watch list" +#: src/emc/rs274ngc/rs274ngc_return.hh:113 +msgid "Negative argument to sqrt" msgstr "" -#: tcl/bin/halshow.tcl:567 -msgid "Save current watch list" +#: src/emc/rs274ngc/rs274ngc_return.hh:114 +msgid "Negative d word tool radius index used" msgstr "" -#: tcl/bin/halshow.tcl:581 -msgid "Commands may be tested here but they will NOT be saved" +#: src/emc/rs274ngc/rs274ngc_return.hh:115 +msgid "Negative f word used" msgstr "" -#: tcl/bin/pickconfig.tcl:50 -msgid "" -"Can't find the bwidget 1.7 package. There is a debian bwidget package; " -"install \n" -"it with sudo apt-get install bwidget." +#: src/emc/rs274ngc/rs274ngc_return.hh:116 +msgid "Negative g code used" msgstr "" -#: tcl/bin/pickconfig.tcl:178 -msgid "No details available." +#: src/emc/rs274ngc/rs274ngc_return.hh:117 +msgid "Negative h word used" msgstr "" -#: tcl/bin/pickconfig.tcl:194 -#, fuzzy -msgid "LinuxCNC Configuration Selector" -msgstr "Mostrar configuracion _HAl" - -#: tcl/bin/pickconfig.tcl:215 -msgid "" -"Welcome to LinuxCNC.\n" -"\n" -"Select a machine configuration from the list on the left.\n" -"Details about the selected configuration will appear in the display on the " -"right.\n" -"Click 'OK' to run the selected configuration" +#: src/emc/rs274ngc/rs274ngc_return.hh:118 +msgid "Negative l word used" msgstr "" -#: tcl/bin/pickconfig.tcl:271 -#, fuzzy -msgid "My Configurations" -msgstr "Mostrar configuracion _HAl" +#: src/emc/rs274ngc/rs274ngc_return.hh:119 +msgid "Negative m code used" +msgstr "" -#: tcl/bin/pickconfig.tcl:274 -#, fuzzy -msgid "Sample Configurations" -msgstr "Mostrar configuracion _HAl" +#: src/emc/rs274ngc/rs274ngc_return.hh:120 +msgid "Negative or zero q value used" +msgstr "" -#: tcl/bin/pickconfig.tcl:332 -#, tcl-format -msgid "ERROR: no configurations found in path '%s'" +#: src/emc/rs274ngc/rs274ngc_return.hh:121 +msgid "Negative p word used" msgstr "" -#: tcl/bin/pickconfig.tcl:369 +#: src/emc/rs274ngc/rs274ngc_return.hh:122 #, fuzzy -msgid "Copy Configuration?" -msgstr "Mostrar configuracion _HAl" +msgid "Negative spindle speed used" +msgstr "Controlar portabrocas:" -#: tcl/bin/pickconfig.tcl:369 -#, tcl-format -msgid "" -"Would you like to copy the %s configuration to your home directory so you " -"can customize it?" +#: src/emc/rs274ngc/rs274ngc_return.hh:123 +msgid "Negative tool id used" msgstr "" -#: tcl/bin/pickconfig.tcl:369 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:563 -msgid "Yes" -msgstr "Si" +#: src/emc/rs274ngc/rs274ngc_return.hh:124 +msgid "Nested comment found" +msgstr "" -#: tcl/bin/pickconfig.tcl:479 -#, fuzzy -msgid "Configuration Copied" -msgstr "Mostrar configuracion _HAl" +#: src/emc/rs274ngc/rs274ngc_return.hh:125 +msgid "No characters found in reading real value" +msgstr "" -#: tcl/bin/pickconfig.tcl:479 -#, tcl-format -msgid "" -"The configuration file has been copied to %s. Next time, choose this " -"location when starting LinuxCNC." +#: src/emc/rs274ngc/rs274ngc_return.hh:126 +msgid "Non integer value for integer" msgstr "" -#: tcl/bin/pickconfig.tcl:506 -msgid "Shortcut Created" +#: src/emc/rs274ngc/rs274ngc_return.hh:127 +msgid "Null missing after newline" msgstr "" -#: tcl/bin/pickconfig.tcl:506 -msgid "" -"A shortcut to this configuration file has been created on your desktop. You " -"can use it to automatically launch this configuration." +#: src/emc/rs274ngc/rs274ngc_return.hh:128 +msgid "Parameter file out of order" msgstr "" -#: tcl/bin/pickconfig.tcl:511 -msgid "Create Desktop Shortcut" +#: src/emc/rs274ngc/rs274ngc_return.hh:129 +msgid "Parameter number out of range" msgstr "" -#: tcl/bin/tkbackplot.tcl:110 -msgid "TkLinuxCNC BackPlot" +#: src/emc/rs274ngc/rs274ngc_return.hh:130 +msgid "Parameter is readonly" msgstr "" -#: tcl/bin/tkbackplot.tcl:125 -#, fuzzy -msgid "SETUP" -msgstr "DETENER" +#: src/emc/rs274ngc/rs274ngc_return.hh:131 +msgid "Q word missing with g83" +msgstr "" -#: tcl/bin/tkbackplot.tcl:127 -#, fuzzy -msgid "RESET" -msgstr "DETENER" +#: src/emc/rs274ngc/rs274ngc_return.hh:132 +msgid "Queue is not empty after probing" +msgstr "" -#: tcl/bin/tkbackplot.tcl:129 -msgid "CANCEL" +#: src/emc/rs274ngc/rs274ngc_return.hh:133 +msgid "R clearance plane unspecified in cycle" msgstr "" -#: tcl/bin/tkbackplot.tcl:250 -msgid "AXIS" +#: src/emc/rs274ngc/rs274ngc_return.hh:134 +msgid "R i j k words all missing for arc" msgstr "" -#: tcl/bin/tkbackplot.tcl:251 -#, fuzzy -msgid "OFFSET" -msgstr "APAGAR" +#: src/emc/rs274ngc/rs274ngc_return.hh:135 +msgid "R less than x in cycle in yz plane" +msgstr "" -#: tcl/bin/tkbackplot.tcl:252 -msgid "ANGLE" +#: src/emc/rs274ngc/rs274ngc_return.hh:136 +msgid "R less than y in cycle in xz plane" msgstr "" -#: tcl/bin/tkbackplot.tcl:253 -msgid "DIRECTION" +#: src/emc/rs274ngc/rs274ngc_return.hh:137 +msgid "R less than z in cycle in xy plane" msgstr "" -#: tcl/bin/tkbackplot.tcl:270 -msgid "SIZE :" +#: src/emc/rs274ngc/rs274ngc_return.hh:138 +msgid "R word with no g code that uses it" msgstr "" -#: tcl/mini.tcl:490 -#, tcl-format -msgid "JOG %s +" +#: src/emc/rs274ngc/rs274ngc_return.hh:139 +msgid "Slash missing after first atan argument" msgstr "" -#: tcl/mini.tcl:491 -#, tcl-format -msgid "JOG %s -" +#: src/emc/rs274ngc/rs274ngc_return.hh:140 +msgid "Spindle not turning clockwise in g84" msgstr "" -#: tcl/mini.tcl:492 -#, tcl-format -msgid "" -"%s\n" -"\n" -"Z\n" -"E\n" -"R\n" -"O" +#: src/emc/rs274ngc/rs274ngc_return.hh:141 +msgid "Spindle not turning in g86" msgstr "" -#: tcl/mini.tcl:840 -msgid "" -"TkMini \n" -"\n" -"Tcl/Tk GUI for Enhanced Machine Controller\n" -"\n" -"GPL Copyright 2003 \n" -"Ray Henry \n" -"\n" -" 3D backplotter by Paul Corner \n" -" \n" -"This software comes with ABSOLUTELY NO GUARANTEE! \n" -"For details see the copyright.html file in this directory." +#: src/emc/rs274ngc/rs274ngc_return.hh:142 +msgid "Spindle not turning in g87" msgstr "" -#: tcl/mini.tcl:915 -#, fuzzy -msgid "Program" -msgstr "Pausar programa" +#: src/emc/rs274ngc/rs274ngc_return.hh:143 +msgid "Spindle not turning in g88" +msgstr "" -#: tcl/mini.tcl:918 -msgid "Info" +#: src/emc/rs274ngc/rs274ngc_return.hh:144 +msgid "Sscanf failed" msgstr "" -#: tcl/mini.tcl:923 -msgid "Backplot" +#: src/emc/rs274ngc/rs274ngc_return.hh:145 +msgid "Start point too close to probe point" msgstr "" -#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:6125 -msgid "Editor" +#: src/emc/rs274ngc/rs274ngc_return.hh:146 +msgid "Too many m codes on line" msgstr "" -#: tcl/mini.tcl:927 -msgid "Offsets" +#: src/emc/rs274ngc/rs274ngc_return.hh:147 +msgid "Pocket max too large" msgstr "" -#: tcl/mini.tcl:929 -msgid "Tools" +#: src/emc/rs274ngc/rs274ngc_return.hh:148 +msgid "Tool radius not less than arc radius with comp" msgstr "" -#: tcl/mini.tcl:951 tcl/mini.tcl:3565 tcl/tklinuxcnc.tcl:732 -#, fuzzy -msgid "Reset" -msgstr "_Resumir" +#: src/emc/rs274ngc/rs274ngc_return.hh:149 +msgid "Two g codes used from same modal group" +msgstr "" -#: tcl/mini.tcl:960 -#, fuzzy -msgid "Position Type" -msgstr "Posicion:" +#: src/emc/rs274ngc/rs274ngc_return.hh:150 +msgid "Two m codes used from same modal group" +msgstr "" -#: tcl/mini.tcl:962 -#, fuzzy -msgid "Tool Info" -msgstr "Cambio de pieza" - -#: tcl/mini.tcl:964 -msgid "Offset Info" -msgstr "" - -#: tcl/mini.tcl:967 -#, fuzzy -msgid "Show Restart" -msgstr "_Mostrar medidas" - -#: tcl/mini.tcl:968 -msgid "Hide Restart" -msgstr "" - -#: tcl/mini.tcl:970 -msgid "Show Split Right" +#: src/emc/rs274ngc/rs274ngc_return.hh:151 +#, c-format +msgid "Unable to open file <%s>" msgstr "" -#: tcl/mini.tcl:972 -msgid "Show Mode Full" +#: src/emc/rs274ngc/rs274ngc_return.hh:152 +msgid "Unclosed comment found" msgstr "" -#: tcl/mini.tcl:974 -msgid "Show Popin Full" +#: src/emc/rs274ngc/rs274ngc_return.hh:153 +msgid "Unclosed expression" msgstr "" -#: tcl/mini.tcl:978 +#: src/emc/rs274ngc/rs274ngc_return.hh:154 #, fuzzy -msgid "Actual Position" -msgstr "Mostrar posicion actual" +msgid "Unknown g code used" +msgstr "Herramienta desconocida %d" -#: tcl/mini.tcl:980 -#, fuzzy -msgid "Commanded Position" -msgstr "Mostrar posicion" +#: src/emc/rs274ngc/rs274ngc_return.hh:155 +#, fuzzy, c-format +msgid "Unknown m code used: M%d" +msgstr "Herramienta desconocida %d" -#: tcl/mini.tcl:983 +#: src/emc/rs274ngc/rs274ngc_return.hh:156 #, fuzzy -msgid "Machine Position" -msgstr "Mostrar posicion absoluta" +msgid "Unknown operation" +msgstr "Herramienta desconocida %d" -#: tcl/mini.tcl:985 -#, fuzzy -msgid "Relative Position" -msgstr "Mostrar posicion relativa" +#: src/emc/rs274ngc/rs274ngc_return.hh:157 +msgid "Unknown operation name starting with a" +msgstr "" -#: tcl/mini.tcl:988 tcl/tklinuxcnc.tcl:747 -#, fuzzy -msgid "Calibration..." -msgstr "_Calibración" +#: src/emc/rs274ngc/rs274ngc_return.hh:158 +msgid "Unknown operation name starting with m" +msgstr "" -#: tcl/mini.tcl:990 -msgid "HAL Show..." +#: src/emc/rs274ngc/rs274ngc_return.hh:159 +msgid "Unknown operation name starting with o" msgstr "" -#: tcl/mini.tcl:992 -msgid "HAL Config..." +#: src/emc/rs274ngc/rs274ngc_return.hh:160 +msgid "Unknown operation name starting with x" msgstr "" -#: tcl/mini.tcl:997 -#, fuzzy -msgid "Program File" -msgstr "Filtro_del Programa %r fallido" +#: src/emc/rs274ngc/rs274ngc_return.hh:161 +msgid "Unknown word starting with a" +msgstr "" -#: tcl/mini.tcl:998 -#, fuzzy, tcl-format -msgid "Program file is %s" -msgstr "Filtro_del Programa %r fallido" +#: src/emc/rs274ngc/rs274ngc_return.hh:162 +msgid "Unknown word starting with c" +msgstr "" -#: tcl/mini.tcl:999 -msgid "Editor File" +#: src/emc/rs274ngc/rs274ngc_return.hh:163 +msgid "Unknown word starting with e" msgstr "" -#: tcl/mini.tcl:1000 -#, tcl-format -msgid "Editor file is %s" +#: src/emc/rs274ngc/rs274ngc_return.hh:164 +msgid "Unknown word starting with f" msgstr "" -#: tcl/mini.tcl:1001 -msgid "Parameter File" +#: src/emc/rs274ngc/rs274ngc_return.hh:165 +msgid "Unknown word starting with l" msgstr "" -#: tcl/mini.tcl:1002 -#, tcl-format -msgid "Parameter file is %s" +#: src/emc/rs274ngc/rs274ngc_return.hh:166 +msgid "Unknown word starting with r" msgstr "" -#: tcl/mini.tcl:1003 -#, fuzzy -msgid "Tool File" -msgstr "Tipo de pieza" +#: src/emc/rs274ngc/rs274ngc_return.hh:167 +msgid "Unknown word starting with s" +msgstr "" -#: tcl/mini.tcl:1004 -#, tcl-format -msgid "Tool file is %s" +#: src/emc/rs274ngc/rs274ngc_return.hh:168 +msgid "Unknown word starting with t" msgstr "" -#: tcl/mini.tcl:1006 -#, fuzzy -msgid "Active G Codes" -msgstr "Activar Codigo-G:" +#: src/emc/rs274ngc/rs274ngc_return.hh:169 +msgid "Unknown word where unary operation could be" +msgstr "" -#: tcl/mini.tcl:1007 -#, tcl-format -msgid "" -"Active codes include; \n" -"%s" +#: src/emc/rs274ngc/rs274ngc_return.hh:170 +msgid "X and y words missing for arc in xy plane" msgstr "" -#: tcl/mini.tcl:1010 tcl/mini.tcl:2558 tcl/tklinuxcnc.tcl:791 -#, fuzzy -msgid "Help..." -msgstr "Ayuda" +#: src/emc/rs274ngc/rs274ngc_return.hh:171 +msgid "X and z words missing for arc in xz plane" +msgstr "" -#: tcl/mini.tcl:1027 tcl/tklinuxcnc.tcl:890 -msgid "ABORT" +#: src/emc/rs274ngc/rs274ngc_return.hh:172 +msgid "X value unspecified in yz plane canned cycle" msgstr "" -#: tcl/mini.tcl:1038 tcl/mini.tcl:2048 -msgid "CONTINUE" +#: src/emc/rs274ngc/rs274ngc_return.hh:173 +msgid "Y and z words missing for arc in yz plane" msgstr "" -#: tcl/mini.tcl:1044 tcl/tklinuxcnc.tcl:828 tcl/tklinuxcnc.tcl:2248 -#: src/emc/usr_intf/touchy/touchy.glade:1264 -msgid "MDI" +#: src/emc/rs274ngc/rs274ngc_return.hh:174 +msgid "Y value unspecified in xz plane canned cycle" msgstr "" -#: tcl/mini.tcl:1048 tcl/tklinuxcnc.tcl:2239 -msgid "AUTO" +#: src/emc/rs274ngc/rs274ngc_return.hh:175 +msgid "Z value unspecified in xy plane canned cycle" msgstr "" -#: tcl/mini.tcl:1052 tcl/mini.tcl:1812 tcl/tklinuxcnc.tcl:2141 -#: tcl/tklinuxcnc.tcl:2261 -msgid "MANUAL" +#: src/emc/rs274ngc/rs274ngc_return.hh:176 +msgid "Zero or negative argument to ln" msgstr "" -#: tcl/mini.tcl:1106 -#, fuzzy -msgid "Tool #:" -msgstr "Ordenar herramienta" +#: src/emc/rs274ngc/rs274ngc_return.hh:177 +msgid "Zero radius arc" +msgstr "" -#: tcl/mini.tcl:1108 -msgid "Length :" +#: src/emc/rs274ngc/rs274ngc_return.hh:178 +msgid "K word missing with g33/g33.1" msgstr "" -#: tcl/mini.tcl:1119 -msgid "Work Offsets: " +#: src/emc/rs274ngc/rs274ngc_return.hh:179 +msgid "F word used with a g33/g33.1" msgstr "" -#: tcl/mini.tcl:1121 -msgid "start offsets popup here" +#: src/emc/rs274ngc/rs274ngc_return.hh:180 +msgid "Unknown operation name starting with e" msgstr "" -#: tcl/mini.tcl:1165 -msgid "start override popup here" +#: src/emc/rs274ngc/rs274ngc_return.hh:181 +msgid "Unknown operation name starting with n" msgstr "" -#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1669 -msgid "Feed Override:" -msgstr "Control de avanze" +#: src/emc/rs274ngc/rs274ngc_return.hh:182 +msgid "Unknown operation name starting with g" +msgstr "" -#: tcl/mini.tcl:1180 -msgid "-- MESSAGES --" +#: src/emc/rs274ngc/rs274ngc_return.hh:183 +msgid "Unknown operation name starting with l" msgstr "" -#: tcl/mini.tcl:1230 -msgid "toggleView's not doin nothin yet" +#: src/emc/rs274ngc/rs274ngc_return.hh:184 +msgid "Too many subroutine parameters" msgstr "" -#: tcl/mini.tcl:1282 -msgid "Can't set zero with a tool offset active so I issued G49 to cancel it." +#: src/emc/rs274ngc/rs274ngc_return.hh:185 +msgid "Too many subroutine levels" msgstr "" -#: tcl/mini.tcl:1346 -#, tcl-format -msgid "Can't update the var file while machine is in auto and %s." +#: src/emc/rs274ngc/rs274ngc_return.hh:186 +msgid "Bug: call stack underrun" msgstr "" -#: tcl/mini.tcl:1400 tcl/tklinuxcnc.tcl:1227 -#, fuzzy -msgid "override limits" -msgstr "Exceder limites" +#: src/emc/rs274ngc/rs274ngc_return.hh:187 +msgid "Unknown control command in o word" +msgstr "" -#: tcl/mini.tcl:1405 tcl/tklinuxcnc.tcl:1263 +#: src/emc/rs274ngc/rs274ngc_return.hh:188 +msgid "Too many oword labels" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:189 #, fuzzy -msgid "home" -msgstr "Punto de referencia" +msgid "Unknown oword number" +msgstr "Herramienta desconocida %d" -#: tcl/mini.tcl:1426 -msgid "DEFAULT" +#: src/emc/rs274ngc/rs274ngc_return.hh:190 +msgid "Nested subroutine definition" msgstr "" -#: tcl/mini.tcl:1427 -#, fuzzy -msgid "Speed:" -msgstr "Velocidad:" +#: src/emc/rs274ngc/rs274ngc_return.hh:191 +msgid "Not in subroutine definition" +msgstr "" -#: tcl/mini.tcl:1430 -msgid "RAPID" +#: src/emc/rs274ngc/rs274ngc_return.hh:192 +msgid "File not open" msgstr "" -#: tcl/mini.tcl:1447 tcl/tklinuxcnc.tcl:1391 -#, fuzzy -msgid "Set Jog Speed" -msgstr "Velocidad:" +#: src/emc/rs274ngc/rs274ngc_return.hh:193 +#, c-format +msgid "cannot reopen file %s - removed or renamed? (%s)" +msgstr "" -#: tcl/mini.tcl:1453 tcl/tklinuxcnc.tcl:1404 -#, fuzzy -msgid "Set jog speed:" -msgstr "Elegir velocidad de avance" +#: src/emc/rs274ngc/rs274ngc_return.hh:194 +msgid "Need tool prepared -Txx- for toolchange" +msgstr "" -#: tcl/mini.tcl:1511 -msgid "JOG X +" +#: src/emc/rs274ngc/rs274ngc_return.hh:195 +msgid "Cannot change planes with cutter radius compensation on" msgstr "" -#: tcl/mini.tcl:1512 -msgid "JOG X -" +#: src/emc/rs274ngc/rs274ngc_return.hh:196 +msgid "Cutter radius compensation allowed only in XY, XZ planes" msgstr "" -#: tcl/mini.tcl:1516 -#, fuzzy -msgid "increment" -msgstr "Elegir incremento del avance" +#: src/emc/rs274ngc/rs274ngc_return.hh:197 +msgid "P word missing with G76" +msgstr "" -#: tcl/mini.tcl:1518 tcl/tklinuxcnc.tcl:602 tcl/tklinuxcnc.tcl:1249 -#: tcl/tklinuxcnc.tcl:1253 -#, fuzzy -msgid "continuous" -msgstr "Continuo" +#: src/emc/rs274ngc/rs274ngc_return.hh:198 +msgid "I J or K words missing with G76" +msgstr "" -#: tcl/mini.tcl:1520 -msgid "" -"A\n" -"L\n" -"L\n" -"\n" -"Z\n" -"E\n" -"R\n" -"O" +#: src/emc/rs274ngc/rs274ngc_return.hh:199 +msgid "Cannot move rotary axes with G76" msgstr "" -#: tcl/mini.tcl:1588 src/emc/usr_intf/touchy/touchy.glade:1422 -#, fuzzy -msgid "Spindle Forward" -msgstr "Controlar portabrocas:" +#: src/emc/rs274ngc/rs274ngc_return.hh:200 +msgid "Multiple e words on one line" +msgstr "" -#: tcl/mini.tcl:1589 src/emc/usr_intf/touchy/touchy.glade:1433 -#, fuzzy -msgid "Spindle Reverse" -msgstr "Controlar portabrocas:" +#: src/emc/rs274ngc/rs274ngc_return.hh:201 +msgid "Named parameter not terminated" +msgstr "" -#: tcl/mini.tcl:1590 tcl/tklinuxcnc.tcl:871 -#, fuzzy -msgid "Spindle off" -msgstr "Apagar freno de portabrocas" +#: src/emc/rs274ngc/rs274ngc_return.hh:202 +msgid "Out of memory" +msgstr "" -#: tcl/mini.tcl:1592 src/emc/usr_intf/touchy/touchy.glade:1479 -#, fuzzy -msgid "Spindle Slower" -msgstr "Disminuir revoluciones del Portabrocas [F11]" +#: src/emc/rs274ngc/rs274ngc_return.hh:203 +msgid "S word missing with G96" +msgstr "" -#: tcl/mini.tcl:1596 src/emc/usr_intf/touchy/touchy.glade:1464 -#, fuzzy -msgid "Spindle Faster" -msgstr "Aumentar revoluciones del Portabrocas [F12]" +#: src/emc/rs274ngc/rs274ngc_return.hh:204 +msgid "Queue is not empty after external input" +msgstr "" -#: tcl/mini.tcl:1632 tcl/tklinuxcnc.tcl:1620 -msgid "MDI:" +#: src/emc/rs274ngc/rs274ngc_return.hh:205 +msgid "Can't select analog input with wait type != immediate return" msgstr "" -#: tcl/mini.tcl:1669 tcl/tklinuxcnc.tcl:1658 -#: src/emc/usr_intf/stepconf/stepconf.glade:4403 -#: src/emc/usr_intf/pncconf/pncconf.glade:60509 -#: src/emc/usr_intf/pncconf/pncconf.glade:61603 -#: src/emc/usr_intf/pncconf/pncconf.glade:62696 -#: src/emc/usr_intf/pncconf/pncconf.glade:63789 -#: src/emc/usr_intf/pncconf/pncconf.glade:64889 -msgid "Run" +#: src/emc/rs274ngc/rs274ngc_return.hh:206 +msgid "Zero timeout with wait type != immediate return" msgstr "" -#: tcl/mini.tcl:1671 tcl/tklinuxcnc.tcl:1659 -#: src/emc/usr_intf/pncconf/pncconf.glade:60574 -#: src/emc/usr_intf/pncconf/pncconf.glade:61668 -#: src/emc/usr_intf/pncconf/pncconf.glade:62761 -#: src/emc/usr_intf/pncconf/pncconf.glade:63854 -#, fuzzy -msgid "Pause" -msgstr "_Pausa" +#: src/emc/rs274ngc/rs274ngc_return.hh:207 +msgid "Invalid to select both a digital and an analog input with M66" +msgstr "" -#: tcl/mini.tcl:1673 tcl/tklinuxcnc.tcl:1660 -#, fuzzy -msgid "Resume" -msgstr "_Resumir" +#: src/emc/rs274ngc/rs274ngc_return.hh:208 +msgid "Need to have either a valid P or a valid E word with M66" +msgstr "" -#: tcl/mini.tcl:1675 tcl/tklinuxcnc.tcl:1661 -#, fuzzy -msgid "Step" -msgstr "Pa_so" +#: src/emc/rs274ngc/rs274ngc_return.hh:209 +msgid "Q word missing with g73" +msgstr "" -#: tcl/mini.tcl:1677 tcl/tklinuxcnc.tcl:1662 -msgid "Verify" +#: src/emc/rs274ngc/rs274ngc_return.hh:210 +msgid "Digital input selected out of bounds" msgstr "" -#: tcl/mini.tcl:1698 -msgid "RESTART LINE" +#: src/emc/rs274ngc/rs274ngc_return.hh:211 +msgid "Analog input selected out of bounds" msgstr "" -#: tcl/mini.tcl:1699 -#, fuzzy -msgid "Back" -msgstr "Freno" +#: src/emc/rs274ngc/rs274ngc_return.hh:212 +msgid "W value unspecified in UV plane canned cycle" +msgstr "" -#: tcl/mini.tcl:1700 -msgid "Ahead" +#: src/emc/rs274ngc/rs274ngc_return.hh:213 +msgid "U value unspecified in VW plane canned cycle" msgstr "" -#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1221 -msgid "Restart" +#: src/emc/rs274ngc/rs274ngc_return.hh:214 +msgid "V value unspecified in UW plane canned cycle" msgstr "" -#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 -#: tcl/tklinuxcnc.tcl:465 src/emc/usr_intf/axis/scripts/axis.py:1885 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:754 -msgid "All files" -msgstr "Todos los archivos" +#: src/emc/rs274ngc/rs274ngc_return.hh:215 +msgid "R less than W in cycle in UV plane" +msgstr "" -#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 -#: tcl/tklinuxcnc.tcl:466 -#, fuzzy -msgid "Text files" -msgstr "Todos los archivos" +#: src/emc/rs274ngc/rs274ngc_return.hh:216 +msgid "R less than U in cycle in VW plane" +msgstr "" -#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 -#: tcl/tklinuxcnc.tcl:467 -#, fuzzy -msgid "NC files" -msgstr "Todos los archivos" +#: src/emc/rs274ngc/rs274ngc_return.hh:217 +msgid "R less than V in cycle in UW plane" +msgstr "" -#: tcl/mini.tcl:1753 -msgid "" -"The interpreter is running. \n" -" Pressing OK will abort and load the new program" +#: src/hal/utils/meter.c:200 +#, c-format +msgid "ERROR: '%s' is not a valid probe type\n" msgstr "" -#: tcl/mini.tcl:1886 -#, fuzzy -msgid "ESTOPPED" -msgstr "DETENER" +#: src/hal/utils/meter.c:208 +#, c-format +msgid "ERROR: no pin/signal/parameter name\n" +msgstr "" -#: tcl/mini.tcl:1889 -#, fuzzy -msgid "ESTOP PUSH" -msgstr "DETENER" +#: src/hal/utils/meter.c:214 +#, c-format +msgid "" +"ERROR: -s option requires a probe type and a pin/signal/parameter name\n" +msgstr "" -#: tcl/mini.tcl:1892 tcl/tklinuxcnc.tcl:2233 +#: src/hal/utils/meter.c:240 tcl/tklinuxcnc.tcl:764 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6431 #, fuzzy -msgid "ESTOP RESET" -msgstr "DETENER" +msgid "Hal Meter" +msgstr "H_AL-metro" -#: tcl/mini.tcl:1897 tcl/tklinuxcnc.tcl:2298 -msgid "SPINDLE FORWARD" +#: src/hal/utils/meter.c:290 +msgid "_Select" msgstr "" -#: tcl/mini.tcl:1899 tcl/tklinuxcnc.tcl:2300 -msgid "SPINDLE REVERSE" +#: src/hal/utils/meter.c:291 +msgid "E_xit" msgstr "" -#: tcl/mini.tcl:1901 tcl/tklinuxcnc.tcl:2302 -msgid "SPINDLE OFF" +#: src/hal/utils/meter.c:339 src/hal/utils/meter.c:367 +msgid "Select Item to Probe" msgstr "" -#: tcl/mini.tcl:1903 tcl/tklinuxcnc.tcl:2304 -msgid "SPINDLE INCREASE" +#: src/hal/utils/meter.c:669 +msgid " _Pins " msgstr "" -#: tcl/mini.tcl:1905 tcl/tklinuxcnc.tcl:2306 -msgid "SPINDLE DECREASE" +#: src/hal/utils/meter.c:670 +msgid " _Signals " msgstr "" -#: tcl/mini.tcl:1907 tcl/tklinuxcnc.tcl:2308 -msgid "SPINDLE ?" +#: src/hal/utils/meter.c:671 +msgid " Para_meters " msgstr "" -#: tcl/mini.tcl:1911 tcl/tklinuxcnc.tcl:2312 -msgid "BRAKE ON" +#: src/hal/utils/meter.c:714 +msgid "_Close" msgstr "" -#: tcl/mini.tcl:1913 tcl/tklinuxcnc.tcl:2314 -msgid "BRAKE OFF" +#: src/hal/utils/scope.c:126 +msgid "" +"Usage:\n" +" halscope [-h] [-i infile] [-o outfile] [num_samples]\n" msgstr "" -#: tcl/mini.tcl:1915 tcl/tklinuxcnc.tcl:2316 -msgid "BRAKE ?" -msgstr "" +#: src/hal/utils/scope.c:479 src/hal/utils/scope.c:506 +#, fuzzy +msgid "Open Configuration File:" +msgstr "Mostrar configuracion _HAl" -#: tcl/mini.tcl:1919 tcl/tklinuxcnc.tcl:2274 -msgid "MIST ON" -msgstr "" +#: src/hal/utils/scope.c:540 +#, fuzzy +msgid "_Open Configuration..." +msgstr "Mostrar configuracion _HAl" -#: tcl/mini.tcl:1921 tcl/tklinuxcnc.tcl:2276 -msgid "MIST OFF" +#: src/hal/utils/scope.c:546 +#, fuzzy +msgid "_Save Configuration..." +msgstr "Mostrar configuracion _HAl" + +#: src/hal/utils/scope.c:555 +msgid "O_pen Data File..." msgstr "" -#: tcl/mini.tcl:1923 tcl/tklinuxcnc.tcl:2278 -msgid "MIST ?" +#: src/hal/utils/scope.c:562 +msgid "S_ave Data File..." msgstr "" -#: tcl/mini.tcl:1927 tcl/tklinuxcnc.tcl:2282 -msgid "FLOOD ON" +#: src/hal/utils/scope.c:571 share/axis/tcl/axis.tcl:96 +#, fuzzy +msgid "_Quit" +msgstr "_Terminar" + +#: src/hal/utils/scope.c:577 +msgid "_About Halscope" msgstr "" -#: tcl/mini.tcl:1929 tcl/tklinuxcnc.tcl:2284 -msgid "FLOOD OFF" +#: src/hal/utils/scope.c:583 share/axis/tcl/axis.tcl:501 +#, fuzzy +msgid "_File" +msgstr "_Archivo" + +#: src/hal/utils/scope.c:587 share/axis/tcl/axis.tcl:517 +#, fuzzy +msgid "_Help" +msgstr "Ayuda" + +#: src/hal/utils/scope.c:646 +msgid "HAL Oscilloscope" msgstr "" -#: tcl/mini.tcl:1931 tcl/tklinuxcnc.tcl:2286 -msgid "FLOOD ?" +#: src/hal/utils/scope.c:674 +msgid "Horizontal" msgstr "" -#: tcl/mini.tcl:2052 -msgid "FEEDHOLD" +#: src/hal/utils/scope.c:682 +msgid "Selected Channel" msgstr "" -#: tcl/mini.tcl:2124 -msgid "" -"TOOL SETUP \n" -" Click or tab to edit. Press enter to return to keyboard machine control." +#: src/hal/utils/scope.c:688 +msgid "Run Mode" msgstr "" -#: tcl/mini.tcl:2130 -msgid " TOOL NUMBER " +#: src/hal/utils/scope.c:691 +msgid "Trigger" msgstr "" -#: tcl/mini.tcl:2131 -msgid " LENGTH " +#: src/hal/utils/scope.c:697 +msgid "Vertical" msgstr "" -#: tcl/mini.tcl:2132 -msgid " DIAMETER " +#: src/hal/utils/scope.c:705 share/axis/tcl/axis.tcl:138 +#: share/axis/tcl/axis.tcl:1269 src/emc/usr_intf/gscreen/gscreen.py:3416 +#: src/emc/usr_intf/gscreen/gscreen.py:3417 +#: src/emc/usr_intf/gscreen/gscreen.glade:2614 +#, fuzzy +msgid "Stop" +msgstr "De_tener" + +#: src/hal/utils/scope.c:708 +msgid "Normal" msgstr "" -#: tcl/mini.tcl:2133 -msgid " COMMENT " +#: src/hal/utils/scope.c:711 +msgid "Single" msgstr "" -#: tcl/mini.tcl:2188 -msgid "Add Extra Tool" +#: src/hal/utils/scope.c:714 +msgid "Roll" msgstr "" -#: tcl/mini.tcl:2189 -msgid "Remove Last Tool" +#: src/hal/utils/scope_horiz.c:130 src/emc/usr_intf/gscreen/gscreen.glade:3419 +#, fuzzy +msgid "Zoom" +msgstr "Ampliar [+]" + +#: src/hal/utils/scope_horiz.c:131 +msgid " Pos " msgstr "" -#: tcl/mini.tcl:2217 tcl/mini.tcl:2253 -#, tcl-format -msgid "Can't update the tool file while machine is in auto and %s." +#: src/hal/utils/scope_horiz.c:164 +msgid "" +"----- Samples\n" +"at ---- KHz" msgstr "" -#: tcl/mini.tcl:2229 -msgid "This is not a good number." +#: src/hal/utils/scope_horiz.c:464 +msgid "Realtime component not loaded" msgstr "" -#: tcl/mini.tcl:2293 +#: src/hal/utils/scope_horiz.c:465 msgid "" -"COORDINATE SYSTEM SETUP \n" +"HALSCOPE uses a realtime component called scope_rt'\n" +"to sample signals for display. It is not currently loaded\n" +"and attempting to load it automatically failed. More information\n" +"may be available in the terminal where halscope was started.\n" "\n" -" Click value to edit with keyboard. Press enter to return to keyboard " -"control of machine. \n" -" " -msgstr "" - -#: tcl/mini.tcl:2320 tcl/scripts/Set_Coordinates.tcl:80 -#, fuzzy -msgid "Axis " -msgstr "Eje:" - -#: tcl/mini.tcl:2321 -msgid "Value " -msgstr "" - -#: tcl/mini.tcl:2326 tcl/scripts/Set_Coordinates.tcl:91 -msgid "Teach" +"Please do one of the following:\n" +"\n" +"Load the component (using 'halcmd loadrt scope_rt'), then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" msgstr "" -#: tcl/mini.tcl:2334 -msgid "Write And Load File " +#: src/hal/utils/scope_horiz.c:536 +msgid "Realtime function not linked" msgstr "" -#: tcl/mini.tcl:2336 -msgid "Offset By Radius" +#: src/hal/utils/scope_horiz.c:537 +msgid "" +"The HALSCOPE realtime sampling function\n" +"must be called from a HAL thread in to\n" +"determine the sampling rate.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Select a thread name and multiplier then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" msgstr "" -#: tcl/mini.tcl:2337 -msgid "Offset By Length" +#: src/hal/utils/scope_horiz.c:544 +msgid "Select Sample Rate" msgstr "" -#: tcl/mini.tcl:2342 -msgid "Subtract" +#: src/hal/utils/scope_horiz.c:545 +msgid "" +"Select a thread name and multiplier then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" msgstr "" -#: tcl/mini.tcl:2344 -msgid "Add" +#: src/hal/utils/scope_horiz.c:567 +msgid "Thread:" msgstr "" -#: tcl/mini.tcl:2366 -msgid "Zero All G54" +#: src/hal/utils/scope_horiz.c:575 +msgid "Sample Period:" msgstr "" -#: tcl/mini.tcl:2367 -msgid "Zero All G55" +#: src/hal/utils/scope_horiz.c:583 +msgid "Sample Rate:" msgstr "" -#: tcl/mini.tcl:2368 -msgid "Zero All G56" +#: src/hal/utils/scope_horiz.c:599 src/emc/usr_intf/touchy/mdi.py:79 +#: src/emc/usr_intf/gscreen/mdi.py:78 +msgid "Thread" msgstr "" -#: tcl/mini.tcl:2369 -msgid "Zero All G57" +#: src/hal/utils/scope_horiz.c:600 +msgid "Period" msgstr "" -#: tcl/mini.tcl:2370 -msgid "Zero All G58" +#: src/hal/utils/scope_horiz.c:638 +msgid "Multiplier:" msgstr "" -#: tcl/mini.tcl:2371 -msgid "Zero All G59" +#: src/hal/utils/scope_horiz.c:655 +msgid "Record Length" msgstr "" -#: tcl/mini.tcl:2372 -msgid "Zero All G59.1" +#: src/hal/utils/scope_horiz.c:658 +#, c-format +msgid "%5d samples (1 channel)" msgstr "" -#: tcl/mini.tcl:2373 -msgid "Zero All G59.2" +#: src/hal/utils/scope_horiz.c:660 +#, c-format +msgid "%5d samples (2 channels)" msgstr "" -#: tcl/mini.tcl:2374 -msgid "Zero All G59.3" +#: src/hal/utils/scope_horiz.c:664 +#, c-format +msgid "%5d samples (4 channels)" msgstr "" -#: tcl/mini.tcl:2375 -msgid "Zero All ????" +#: src/hal/utils/scope_horiz.c:668 +#, c-format +msgid "%5d samples (8 channels)" msgstr "" -#: tcl/mini.tcl:2493 -msgid "Modified..." +#: src/hal/utils/scope_horiz.c:672 +#, c-format +msgid "%5d samples (16 channels)" msgstr "" -#: tcl/mini.tcl:2538 -msgid "Save and Load" -msgstr "" +#: src/hal/utils/scope_horiz.c:727 src/hal/utils/scope_horiz.c:773 +#: src/hal/utils/scope_horiz.c:985 src/hal/utils/scope_vert.c:771 +#: src/hal/utils/scope_vert.c:863 tcl/bin/emccalib.tcl:232 +#: tcl/bin/genedit.tcl:180 tcl/bin/genedit.tcl:450 tcl/bin/halconfig.tcl:682 +#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:387 +#: tcl/bin/pickconfig.tcl:749 tcl/bin/pickconfig.tcl:799 tcl/mini.tcl:1456 +#: tcl/mini.tcl:2937 tcl/tklinuxcnc.tcl:160 tcl/tklinuxcnc.tcl:245 +#: tcl/tklinuxcnc.tcl:419 tcl/tklinuxcnc.tcl:1338 tcl/tklinuxcnc.tcl:1407 +#: tcl/tklinuxcnc.tcl:1438 tcl/tklinuxcnc.tcl:1469 tcl/tklinuxcnc.tcl:2017 +#: tcl/tklinuxcnc.tcl:2036 tcl/tklinuxcnc.tcl:2055 tcl/tklinuxcnc.tcl:2102 +#: src/emc/usr_intf/axis/scripts/axis.py:1106 +#: src/emc/usr_intf/axis/scripts/axis.py:1173 +#: src/emc/usr_intf/axis/scripts/axis.py:1508 +#: src/emc/usr_intf/axis/scripts/axis.py:2672 +#: src/emc/usr_intf/axis/scripts/axis.py:3599 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:718 +#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1828 +#: share/axis/tcl/axis.tcl:1865 +msgid "OK" +msgstr "OK" -#: tcl/mini.tcl:2540 -msgid "Undo" -msgstr "" +#: src/hal/utils/scope_horiz.c:732 src/hal/utils/scope_horiz.c:773 +#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 tcl/tooledit.tcl:468 +#, fuzzy +msgid "Quit" +msgstr "_Terminar" -#: tcl/mini.tcl:2541 -msgid "Redo" +#: src/hal/utils/scope_horiz.c:764 +msgid "Realtime thread(s) not running" msgstr "" -#: tcl/mini.tcl:2546 -msgid "Delete" +#: src/hal/utils/scope_horiz.c:765 +msgid "" +"HALSCOPE uses code in a realtime HAL thread to sample\n" +"signals for display. The HAL thread(s) are not running.\n" +"Threads are usually started by the application you are\n" +"attempting to run, or you can use the 'halcmd start' command.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Start the threads, then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" msgstr "" -#: tcl/mini.tcl:2551 -msgid "Replace..." +#: src/hal/utils/scope_horiz.c:798 +msgid "Pick log file to write to:" msgstr "" -#: tcl/mini.tcl:2664 -msgid "Next Number: " +#: src/hal/utils/scope_horiz.c:981 +msgid "Not enough channels" msgstr "" -#: tcl/mini.tcl:2765 -msgid "Basic Help" +#: src/hal/utils/scope_horiz.c:982 +msgid "" +"This record length cannot handle the channels\n" +"that are currently enabled. Pick a shorter\n" +"record length that supports more channels." msgstr "" -#: tcl/mini.tcl:2765 +#: src/hal/utils/scope_horiz.c:1070 +#, c-format msgid "" -"This is a simple ASCII editor like many others.\n" -"\n" -"Ctrl+O Open\n" -"Ctrl+S Save\n" -"Ctrl+Z Undo\n" -"Ctrl+Y Redo\n" -"Ctrl+X Cut\n" -"Ctrl+C Copy\n" -"Ctrl+V Paste\n" -"Del Delete\n" -"Ctrl+A Select All\n" -"\n" -"Ctrl+F Find\n" -"Ctrl+R Replace " +"%s\n" +"per div" msgstr "" -#: tcl/mini.tcl:2785 +#: src/hal/utils/scope_horiz.c:1085 +#, c-format msgid "" -"tknotepad by Joseph Acosta. \n" -"\n" -" Modified for EMC by: Paul Corner " +"%s samples\n" +"at %s" msgstr "" -#: tcl/mini.tcl:2793 -msgid "" -"The contents of this file may have changed, do you wish to to save your " -"changes?" +#: src/hal/utils/scope_horiz.c:1189 +msgid "nSec" msgstr "" -#: tcl/mini.tcl:2794 -msgid "New Confirm?" +#: src/hal/utils/scope_horiz.c:1192 +msgid "uSec" msgstr "" -#: tcl/mini.tcl:2928 -msgid "Print Setup" +#: src/hal/utils/scope_horiz.c:1196 +msgid "mSec" msgstr "" -#: tcl/mini.tcl:2932 +#: src/hal/utils/scope_horiz.c:1200 src/emc/usr_intf/pncconf/pncconf.glade:2635 +#: src/emc/usr_intf/pncconf/pncconf.glade:3533 +#: src/emc/usr_intf/pncconf/pncconf.glade:4414 +#: src/emc/usr_intf/pncconf/pncconf.glade:5295 #, fuzzy -msgid "Print Command: " -msgstr "Comando MDI:" +msgid "Sec" +msgstr "Secundario" -#: tcl/mini.tcl:3095 -msgid "Find what:" +#: src/hal/utils/scope_horiz.c:1217 src/emc/usr_intf/stepconf/spindle.glade:301 +#: src/emc/usr_intf/stepconf/axisx.glade:693 +#: src/emc/usr_intf/stepconf/axisy.glade:679 +#: src/emc/usr_intf/stepconf/axisz.glade:679 +#: src/emc/usr_intf/stepconf/axisa.glade:693 +#: src/emc/usr_intf/pncconf/pncconf.glade:8024 +#: src/emc/usr_intf/pncconf/pncconf.glade:8201 +#: src/emc/usr_intf/pncconf/pncconf.glade:8213 +msgid "Hz" msgstr "" -#: tcl/mini.tcl:3101 -msgid "Replace with:" +#: src/hal/utils/scope_horiz.c:1220 +msgid "KHz" msgstr "" -#: tcl/mini.tcl:3109 -msgid "Find Next" +#: src/hal/utils/scope_horiz.c:1224 +msgid "Mhz" msgstr "" -#: tcl/mini.tcl:3112 -#, fuzzy -msgid "Replace" -msgstr "relativo" +#: src/hal/utils/scope_vert.c:413 src/hal/utils/scope_vert.c:1303 +#, c-format +msgid "" +"Offset\n" +"%s" +msgstr "" -#: tcl/mini.tcl:3120 -msgid "Up" +#: src/hal/utils/scope_vert.c:628 +msgid "Gain" msgstr "" -#: tcl/mini.tcl:3121 -#, fuzzy -msgid "Down" -msgstr "Arriba, abajo " +#: src/hal/utils/scope_vert.c:640 src/hal/utils/scope_trig.c:272 +msgid "Pos" +msgstr "" -#: tcl/mini.tcl:3124 -msgid "Match case" +#: src/hal/utils/scope_vert.c:654 tcl/ngcgui_ttt.tcl:214 +#: src/emc/usr_intf/pncconf/pncconf.glade:64273 +msgid "Scale" msgstr "" -#: tcl/mini.tcl:3569 -msgid "rot-x" +#: src/hal/utils/scope_vert.c:667 +msgid "Chan Off" msgstr "" -#: tcl/mini.tcl:3579 -msgid "rot-y" +#: src/hal/utils/scope_vert.c:723 +msgid "Set Offset" msgstr "" -#: tcl/mini.tcl:3589 -msgid "rot-z" +#: src/hal/utils/scope_vert.c:724 +#, c-format +msgid "" +"Set the vertical offset\n" +"for channel %d." msgstr "" -#: tcl/mini.tcl:3599 -msgid "zoom" +#: src/hal/utils/scope_vert.c:744 +msgid "AC Coupled" msgstr "" -#: tcl/mini.tcl:3655 +#: src/hal/utils/scope_vert.c:779 src/hal/utils/scope_vert.c:1215 +#: src/hal/utils/scope_trig.c:387 tcl/bin/emccalib.tcl:234 +#: tcl/bin/genedit.tcl:294 tcl/bin/halconfig.tcl:103 tcl/bin/halconfig.tcl:684 +#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:390 +#: tcl/bin/pickconfig.tcl:567 tcl/mini.tcl:1457 tcl/mini.tcl:2938 +#: tcl/mini.tcl:3110 tcl/tklinuxcnc.tcl:162 tcl/tklinuxcnc.tcl:213 +#: tcl/tklinuxcnc.tcl:420 tcl/tklinuxcnc.tcl:1339 tcl/tklinuxcnc.tcl:1408 +#: tcl/tklinuxcnc.tcl:1439 tcl/tklinuxcnc.tcl:1470 tcl/tklinuxcnc.tcl:2103 +#: src/emc/usr_intf/axis/scripts/axis.py:1453 +#: src/emc/usr_intf/axis/scripts/axis.py:1509 +#: src/emc/usr_intf/axis/scripts/axis.py:1699 +#: src/emc/usr_intf/axis/scripts/axis.py:2108 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:720 +#: src/emc/usr_intf/stepconf/main_page.glade:467 +#: src/emc/usr_intf/gscreen/gscreen.glade:3986 +msgid "Cancel" +msgstr "Cancelar" + +#: src/hal/utils/scope_vert.c:859 #, fuzzy -msgid "TEST" -msgstr "DETENER" +msgid "Too many channels" +msgstr "Cambio de pieza" -#: tcl/mini.tcl:3699 -msgid "Hide Setup" +#: src/hal/utils/scope_vert.c:860 +msgid "" +"You cannot add another channel.\n" +"\n" +"Either turn off one or more channels, or shorten\n" +"the record length to allow for more channels" msgstr "" -#: tcl/mini.tcl:3703 -#, fuzzy -msgid "Show Setup" -msgstr "Estatus del EMC..." - -#: tcl/show_errors.tcl:41 -msgid "LinuxCNC Errors" +#: src/hal/utils/scope_vert.c:1074 +msgid "Select Channel Source" msgstr "" -#: tcl/show_errors.tcl:44 +#: src/hal/utils/scope_vert.c:1075 +#, c-format msgid "" -"LinuxCNC terminated with an error. When reporting problems, please include " -"all the information below in your message." +"Select a pin, signal, or parameter\n" +"as the source for channel %d." msgstr "" -#: tcl/show_errors.tcl:69 tcl/scripts/Set_Coordinates.tcl:103 -msgid "Close" +#: src/hal/utils/scope_vert.c:1107 +msgid "Pins" msgstr "" -#: tcl/tklinuxcnc.tcl:154 tcl/tklinuxcnc.tcl:181 -msgid "Set Run Mark" +#: src/hal/utils/scope_vert.c:1108 +msgid "Signals" msgstr "" -#: tcl/tklinuxcnc.tcl:156 -#, tcl-format -msgid "Set run mark at line %s?" +#: src/hal/utils/scope_vert.c:1109 +msgid "Parameters" msgstr "" -#: tcl/tklinuxcnc.tcl:176 tcl/tklinuxcnc.tcl:204 -msgid "untitled" +#: src/hal/utils/scope_trig.c:110 +#, c-format +msgid "Falling" msgstr "" -#: tcl/tklinuxcnc.tcl:212 -msgid "Load Parameter File" +#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:295 +#, c-format +msgid "Rising" msgstr "" -#: tcl/tklinuxcnc.tcl:261 -msgid "LinuxCNC Diagnostics" +#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:303 +msgid "" +"Source\n" +"None" msgstr "" -#: tcl/tklinuxcnc.tcl:263 -msgid "Task" +#: src/hal/utils/scope_trig.c:124 +#, c-format +msgid "" +"Source\n" +"Chan %2d" msgstr "" -#: tcl/tklinuxcnc.tcl:265 tcl/tklinuxcnc.tcl:288 tcl/tklinuxcnc.tcl:311 -msgid "Heartbeat:" +#: src/hal/utils/scope_trig.c:219 tcl/tklinuxcnc.tcl:827 +#: src/emc/usr_intf/touchy/touchy.glade:2469 +msgid "Auto" msgstr "" -#: tcl/tklinuxcnc.tcl:268 tcl/tklinuxcnc.tcl:291 tcl/tklinuxcnc.tcl:314 -#, fuzzy -msgid "Command:" -msgstr "dirigido" +#: src/hal/utils/scope_trig.c:221 +msgid "Force" +msgstr "" -#: tcl/tklinuxcnc.tcl:271 tcl/tklinuxcnc.tcl:294 tcl/tklinuxcnc.tcl:317 -#, fuzzy -msgid "Command #:" -msgstr "dirigido" +#: src/hal/utils/scope_trig.c:255 src/hal/utils/scope_trig.c:289 +msgid "Level" +msgstr "" -#: tcl/tklinuxcnc.tcl:274 tcl/tklinuxcnc.tcl:297 tcl/tklinuxcnc.tcl:320 -msgid "Status:" +#: src/hal/utils/scope_trig.c:323 +msgid "Trigger Source" msgstr "" -#: tcl/tklinuxcnc.tcl:286 -msgid "Io" +#: src/hal/utils/scope_trig.c:324 +msgid "Select a channel to use for triggering." msgstr "" -#: tcl/tklinuxcnc.tcl:309 -#, fuzzy -msgid "Motion" -msgstr "Tiempo de movimiento" +#: src/hal/utils/scope_trig.c:347 +msgid "Chan" +msgstr "" -#: tcl/tklinuxcnc.tcl:350 -msgid "About TkLinuxCNC" +#: src/hal/utils/scope_trig.c:348 +msgid "Source" msgstr "" -#: tcl/tklinuxcnc.tcl:351 +#: src/emc/motion/control.c:270 +msgid "Unexpected realtime delay: check dmesg for details." +msgstr "" + +#: src/emc/motion/control.c:272 +#, c-format msgid "" -"TkLinuxcnc\n" "\n" -"Tcl/Tk GUI for LinuxCNC\n" +"In recent history there were\n" +"%ld, %ld, %ld, %ld, and %ld\n" +"elapsed clocks between calls to the motion controller.\n" +msgstr "" + +#: src/emc/motion/control.c:277 +#, c-format +msgid "" +"This time, there were %ld which is so anomalously\n" +"large that it probably signifies a problem with your\n" +"realtime configuration. For the rest of this run of\n" +"EMC, this message will be suppressed.\n" "\n" -"GPL Version 2 (2012)" msgstr "" -#: tcl/tklinuxcnc.tcl:399 -msgid "Set Tool Offset" +#: src/emc/motion/control.c:394 +msgid "G38.4 move finished without breaking contact." msgstr "" -#: tcl/tklinuxcnc.tcl:404 tcl/tklinuxcnc.tcl:905 -#, fuzzy -msgid "Tool:" -msgstr "Ordenar herramienta" +#: src/emc/motion/control.c:397 +msgid "G38.2 move finished without making contact." +msgstr "" -#: tcl/tklinuxcnc.tcl:722 -msgid "Edit..." +#: src/emc/motion/control.c:412 +msgid "Probe tripped during non-probe MDI command." msgstr "" -#: tcl/tklinuxcnc.tcl:727 -msgid "Tool Table Editor..." +#: src/emc/motion/control.c:440 +msgid "Probe tripped during homing motion." msgstr "" -#: tcl/tklinuxcnc.tcl:730 src/emc/usr_intf/touchy/touchy.glade:1383 -#, fuzzy -msgid "Reload Tool Table" -msgstr "Volver a vargar ta_bla de herramientas" +#: src/emc/motion/control.c:444 +msgid "Probe tripped during a jog." +msgstr "" -#: tcl/tklinuxcnc.tcl:740 -msgid "Offsets and Variables..." +#: src/emc/motion/control.c:622 +msgid "can't add coordinated return move" msgstr "" -#: tcl/tklinuxcnc.tcl:741 -msgid "Diagnostics..." +#: src/emc/motion/control.c:663 +msgid "can't add linear coordinated jog move" msgstr "" -#: tcl/tklinuxcnc.tcl:742 -msgid "Backplot..." +#: src/emc/motion/control.c:817 +#, c-format +msgid "fault %d during orient in progress" msgstr "" -#: tcl/tklinuxcnc.tcl:748 -#, fuzzy -msgid "Testing..." -msgstr "Procesando..." +#: src/emc/motion/control.c:957 +msgid "motion stopped by enable input" +msgstr "" -#: tcl/tklinuxcnc.tcl:749 -msgid "Debug..." +#: src/emc/motion/control.c:980 +#, c-format +msgid "joint %d on limit switch error" msgstr "" -#: tcl/tklinuxcnc.tcl:750 -msgid "Font..." +#: src/emc/motion/control.c:992 +#, c-format +msgid "joint %d amplifier fault" msgstr "" -#: tcl/tklinuxcnc.tcl:754 src/emc/usr_intf/axis/scripts/image-to-gcode.py:665 -msgid "Units" -msgstr "Unidad" +#: src/emc/motion/control.c:1001 +#, c-format +msgid "joint %d following error" +msgstr "" -#: tcl/tklinuxcnc.tcl:755 -msgid "auto" +#: src/emc/motion/control.c:1687 +#, c-format +msgid "Exceeded positive soft limit on joint %d" msgstr "" -#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8512 -msgid "inches" +#: src/emc/motion/control.c:1692 +#, c-format +msgid "Exceeded negative soft limit on joint %d" msgstr "" -#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1556 -#: src/emc/usr_intf/axis/scripts/axis.py:1726 -#: src/emc/usr_intf/touchy/touchy.glade:3301 -#: src/emc/usr_intf/stepconf/stepconf.py:1685 -#: src/emc/usr_intf/stepconf/stepconf.py:2221 -#: src/emc/usr_intf/stepconf/stepconf.glade:4357 -#: src/emc/usr_intf/pncconf/pncconf.py:8508 -#: src/emc/usr_intf/pncconf/pncconf.glade:2229 -#: src/emc/usr_intf/pncconf/pncconf.glade:2394 -#: src/emc/usr_intf/pncconf/pncconf.glade:57616 -#: src/emc/usr_intf/pncconf/pncconf.glade:57688 -#: src/emc/usr_intf/pncconf/pncconf.glade:60646 -#: src/emc/usr_intf/pncconf/pncconf.glade:61739 -#: src/emc/usr_intf/pncconf/pncconf.glade:62832 -#: src/emc/usr_intf/pncconf/pncconf.glade:63925 -#: src/emc/usr_intf/pncconf/pncconf.glade:65091 -msgid "mm" +#: src/emc/motion/command.c:163 +#, c-format +msgid "Can't jog invalid joint number %d." msgstr "" -#: tcl/tklinuxcnc.tcl:758 -msgid "cm" +#: src/emc/motion/command.c:167 +#, c-format +msgid "Can't jog joint %d further past max hard limit." msgstr "" -#: tcl/tklinuxcnc.tcl:762 -msgid "Utilities" +#: src/emc/motion/command.c:172 +#, c-format +msgid "Can't jog joint %d further past min hard limit." msgstr "" -#: tcl/tklinuxcnc.tcl:763 -#, fuzzy -msgid "Hal Scope" -msgstr "HA_L-escopio" +#: src/emc/motion/command.c:178 +#, c-format +msgid "Can't jog joint %d further past max soft limit." +msgstr "" -#: tcl/tklinuxcnc.tcl:785 -msgid "HAL Show" +#: src/emc/motion/command.c:183 +#, c-format +msgid "Can't jog joint %d further past min soft limit." msgstr "" -#: tcl/tklinuxcnc.tcl:786 -msgid "HAL Config" +#: src/emc/motion/command.c:243 +#, c-format +msgid "%s move on line %d would exceed joint %d's positive limit" msgstr "" -#: tcl/tklinuxcnc.tcl:792 -msgid "Balloon help" +#: src/emc/motion/command.c:250 +#, c-format +msgid "%s move on line %d would exceed joint %d's negative limit" msgstr "" -#: tcl/tklinuxcnc.tcl:815 -msgid "Estop on" +#: src/emc/motion/command.c:535 +msgid "all joints must be homed before going into coordinated mode" msgstr "" -#: tcl/tklinuxcnc.tcl:816 -msgid "Estop off" +#: src/emc/motion/command.c:556 +msgid "all joints must be homed before going into teleop mode" msgstr "" -#: tcl/tklinuxcnc.tcl:818 -#, fuzzy -msgid "Machine on" -msgstr "Coordenada absoluta" +#: src/emc/motion/command.c:710 src/emc/motion/command.c:776 +#: src/emc/motion/command.c:849 +msgid "Can't jog joint in coordinated mode." +msgstr "" -#: tcl/tklinuxcnc.tcl:819 -#, fuzzy -msgid "Machine off" -msgstr "Coordenada absoluta" +#: src/emc/motion/command.c:715 src/emc/motion/command.c:781 +#: src/emc/motion/command.c:854 +msgid "Can't jog joint when not enabled." +msgstr "" -#: tcl/tklinuxcnc.tcl:826 src/emc/usr_intf/touchy/touchy.glade:1561 -#, fuzzy -msgid "Manual" -msgstr "Control manual" +#: src/emc/motion/command.c:720 src/emc/motion/command.c:859 +msgid "Can't jog any joints while homing." +msgstr "" -#: tcl/tklinuxcnc.tcl:835 -#, fuzzy -msgid "Mist on" -msgstr "Neblina" +#: src/emc/motion/command.c:786 +msgid "Can't jog any joint while homing." +msgstr "" -#: tcl/tklinuxcnc.tcl:836 -#, fuzzy -msgid "Mist off" -msgstr "Neblina" +#: src/emc/motion/command.c:918 +msgid "need to be enabled, in coord mode for linear move" +msgstr "" -#: tcl/tklinuxcnc.tcl:843 -#, fuzzy -msgid "Flood on" -msgstr "Enfriador" +#: src/emc/motion/command.c:928 +msgid "can't do linear move with limits exceeded" +msgstr "" -#: tcl/tklinuxcnc.tcl:844 -#, fuzzy -msgid "Flood off" -msgstr "Enfriador" +#: src/emc/motion/command.c:954 +#, c-format +msgid "can't add linear move at line %d, error code %d" +msgstr "" -#: tcl/tklinuxcnc.tcl:851 -msgid "Lube on" +#: src/emc/motion/command.c:982 +msgid "need to be enabled, in coord mode for circular move" msgstr "" -#: tcl/tklinuxcnc.tcl:852 -msgid "Lube off" +#: src/emc/motion/command.c:993 +msgid "can't do circular move with limits exceeded" msgstr "" -#: tcl/tklinuxcnc.tcl:869 -#, fuzzy -msgid "Spindle forward" -msgstr "Controlar portabrocas:" +#: src/emc/motion/command.c:1015 +#, c-format +msgid "can't add circular move at line %d, error code %d" +msgstr "" -#: tcl/tklinuxcnc.tcl:870 -#, fuzzy -msgid "Spindle reverse" -msgstr "Controlar portabrocas:" +#: src/emc/motion/command.c:1114 +msgid "MOTION: can't STEP while jogging" +msgstr "" -#: tcl/tklinuxcnc.tcl:885 -#, fuzzy -msgid "Brake on" -msgstr "Freno" +#: src/emc/motion/command.c:1117 +msgid "MOTION: can't STEP while in return move" +msgstr "" -#: tcl/tklinuxcnc.tcl:886 -#, fuzzy -msgid "Brake off" -msgstr "Freno" +#: src/emc/motion/command.c:1127 +#, c-format +msgid "MOTION: STEP while in state %d" +msgstr "" -#: tcl/tklinuxcnc.tcl:907 -msgid "Offset:" +#: src/emc/motion/command.c:1229 +msgid "can't enable motion, enable input is false" msgstr "" -#: tcl/tklinuxcnc.tcl:913 -msgid "Work Offsets:" +#: src/emc/motion/command.c:1302 +msgid "must be in joint mode to home" msgstr "" -#: tcl/tklinuxcnc.tcl:1233 -#, fuzzy -msgid "relative" -msgstr "relativo" +#: src/emc/motion/command.c:1313 src/emc/motion/command.c:1324 +msgid "homing sequence already in progress" +msgstr "" -#: tcl/tklinuxcnc.tcl:1234 -#, fuzzy -msgid "machine" -msgstr "Coordenada absoluta" +#: src/emc/motion/command.c:1322 +msgid "homing already in progress" +msgstr "" -#: tcl/tklinuxcnc.tcl:1236 -#, fuzzy -msgid "actual" -msgstr "Actual" - -#: tcl/tklinuxcnc.tcl:1237 -#, fuzzy -msgid "commanded" -msgstr "dirigido" - -#: tcl/tklinuxcnc.tcl:1239 -msgid "joint" -msgstr "" - -#: tcl/tklinuxcnc.tcl:1240 -msgid "world" -msgstr "" - -#: tcl/tklinuxcnc.tcl:1333 -msgid "Axis Offset" -msgstr "" - -#: tcl/tklinuxcnc.tcl:1335 -msgid "Set axis value:" +#: src/emc/motion/command.c:1352 +msgid "must be in joint mode or disabled to unhome" msgstr "" -#: tcl/tklinuxcnc.tcl:1429 -#, fuzzy -msgid "Set Feed Override" -msgstr "Control de avanze" - -#: tcl/tklinuxcnc.tcl:1435 -#, fuzzy -msgid "Set feed override:" -msgstr "Control de avanze" - -#: tcl/tklinuxcnc.tcl:1460 -#, fuzzy -msgid "Set Spindle Override" -msgstr "Controlar portabrocas:" - -#: tcl/tklinuxcnc.tcl:1466 -#, fuzzy -msgid "Set spindle speed override:" -msgstr "Controlar portabrocas:" - -#: tcl/tklinuxcnc.tcl:1521 -#, fuzzy -msgid "Linear Jog Speed" -msgstr "Velocidad:" - -#: tcl/tklinuxcnc.tcl:1552 -msgid "Angular Jog Speed (deg)/min:" +#: src/emc/motion/command.c:1364 src/emc/motion/command.c:1387 +#, c-format +msgid "Cannot unhome while homing, joint %d" msgstr "" -#: tcl/tklinuxcnc.tcl:1596 -#, fuzzy -msgid "Spindle speed Override:" -msgstr "Controlar portabrocas:" - -#: tcl/tklinuxcnc.tcl:1642 -#, fuzzy -msgid "Program: " -msgstr "Pausar programa" - -#: tcl/tklinuxcnc.tcl:1647 -msgid " - Status: " +#: src/emc/motion/command.c:1368 src/emc/motion/command.c:1391 +#, c-format +msgid "Cannot unhome while moving, joint %d" msgstr "" -#: tcl/tklinuxcnc.tcl:1663 -msgid "Optional Stop" +#: src/emc/motion/command.c:1396 +#, c-format +msgid "Cannot unhome inactive joint %d" msgstr "" -#: tcl/tklinuxcnc.tcl:2010 -msgid "Error" +#: src/emc/motion/command.c:1400 +#, c-format +msgid "Cannot unhome invalid joint %d (max %d)" msgstr "" -#: tcl/tklinuxcnc.tcl:2070 tcl/ngcgui_ttt.tcl:46 -msgid "Set Font" +#: src/emc/motion/command.c:1427 +msgid "need to be enabled, in coord mode for probe move" msgstr "" -#: tcl/tklinuxcnc.tcl:2079 tcl/ngcgui_ttt.tcl:283 -msgid "Font" +#: src/emc/motion/command.c:1437 +msgid "can't do probe move with limits exceeded" msgstr "" -#: tcl/tklinuxcnc.tcl:2086 -#, fuzzy -msgid "Size" -msgstr "Tamańo:" - -#: tcl/tklinuxcnc.tcl:2093 -#, fuzzy -msgid "Style" -msgstr "Pa_so" - -#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:1916 -msgid "ESTOP" -msgstr "DETENER" - -#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2840 share/axis/tcl/axis.tcl:1918 -msgid "ON" -msgstr "ENCENDER" - -#: tcl/tklinuxcnc.tcl:2290 -msgid "LUBE ON" +#: src/emc/motion/command.c:1451 +msgid "Probe is already clear when starting G38.4 or G38.5 move" msgstr "" -#: tcl/tklinuxcnc.tcl:2292 -msgid "LUBE OFF" +#: src/emc/motion/command.c:1453 +msgid "Probe is already tripped when starting G38.2 or G38.3 move" msgstr "" -#: tcl/tklinuxcnc.tcl:2294 -msgid "LUBE ?" +#: src/emc/motion/command.c:1473 +msgid "can't add probe move" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:23 -msgid "LinuxCNC Set Coordinate" +#: src/emc/motion/command.c:1498 +msgid "need to be enabled, in coord mode for rigid tap move" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:26 -msgid "Coordinate System Control Window" +#: src/emc/motion/command.c:1509 +msgid "can't do rigid tap move with limits exceeded" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:81 -msgid "Var # " +#: src/emc/motion/command.c:1526 +msgid "can't add rigid tap move" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:82 -msgid "Offset Value " +#: src/emc/motion/command.c:1541 +msgid "need to be enabled, in teleop mode for teleop move" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:83 -msgid "What to Teach" +#: src/emc/motion/command.c:1710 +#, c-format +msgid "joint %d: too many compensation entries" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:101 -msgid "Set Old" +#: src/emc/motion/command.c:1716 +#, c-format +msgid "joint %d: compensation values must increase" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:102 -msgid "Set Zero" +#: src/emc/motion/command.c:1745 +#, c-format +msgid "unrecognized command %d" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:104 -msgid "Write" +#: src/emc/motion/motion.c:212 +msgid "MOTION: hal_init() failed\n" msgstr "" -#: tcl/ngcgui.tcl:467 -msgid "Need non-null file name" +#: src/emc/motion/motion.c:217 +#, c-format +msgid "MOTION: num_joints is %d, must be between 1 and %d\n" msgstr "" -#: tcl/ngcgui.tcl:543 -msgid "Disallowed use of ngcgui generated file as Subfile" +#: src/emc/motion/motion.c:224 +#, c-format +msgid "MOTION: num_dio is %d, must be between 1 and %d\n" msgstr "" -#: tcl/ngcgui.tcl:549 -msgid "" -"marked (not_a_subfile)\n" -"Not intended for use as a subfile" +#: src/emc/motion/motion.c:231 +#, c-format +msgid "MOTION: num_aio is %d, must be between 1 and %d\n" msgstr "" -#: tcl/ngcgui.tcl:564 -msgid "Multiple subroutines in file not allowed" +#: src/emc/motion/motion.c:239 +msgid "MOTION: init_hal_io() failed\n" msgstr "" -#: tcl/ngcgui.tcl:573 tcl/ngcgui.tcl:595 tcl/ngcgui.tcl:608 tcl/ngcgui.tcl:650 -#: tcl/ngcgui.tcl:755 -msgid "bogus" +#: src/emc/motion/motion.c:248 +msgid "MOTION: init_comm_buffers() failed\n" msgstr "" -#: tcl/ngcgui.tcl:575 -msgid "sub label" +#: src/emc/motion/motion.c:256 +msgid "MOTION: init_threads() failed\n" msgstr "" -#: tcl/ngcgui.tcl:575 tcl/ngcgui.tcl:652 -msgid "does not match subroutine file name" +#: src/emc/motion/motion.c:281 +#, c-format +msgid "MOTION: hal_stop_threads() failed, returned %d\n" msgstr "" -#: tcl/ngcgui.tcl:590 tcl/ngcgui.tcl:591 -msgid "ignoring M2 after endsub" +#: src/emc/motion/motion.c:294 +#, c-format +msgid "MOTION: rtapi_shmem_delete() failed, returned %d\n" msgstr "" -#: tcl/ngcgui.tcl:596 -msgid "file contains lines after subend" +#: src/emc/motion/motion.c:300 +#, c-format +msgid "MOTION: hal_exit() failed, returned %d\n" msgstr "" -#: tcl/ngcgui.tcl:609 -msgid "file contains lines before sub" +#: src/emc/motion/motion.c:323 +msgid "MOTION: emcmot_hal_data malloc failed\n" msgstr "" -#: tcl/ngcgui.tcl:652 -msgid "endsub label" +#: src/emc/motion/motion.c:331 +msgid "MOTION: joints malloc failed\n" msgstr "" -#: tcl/ngcgui.tcl:757 -msgid "out of sequence positional parameter" +#: src/emc/motion/motion.c:695 +#, c-format +msgid "MOTION: joint %d pin/param export failed\n" msgstr "" -#: tcl/ngcgui.tcl:757 -msgid "expected" +#: src/emc/motion/homing.c:80 src/emc/motion/homing.c:748 +#, c-format +msgid "hit limit in home state %d" msgstr "" -#: tcl/ngcgui.tcl:817 -msgid "toomany" +#: src/emc/motion/homing.c:90 +#, c-format +msgid "end of move in home state %d" msgstr "" -#: tcl/ngcgui.tcl:868 -msgid "no sub found in file" +#: src/emc/motion/homing.c:185 +#, c-format +msgid "unknown state '%d' during homing sequence" msgstr "" -#: tcl/ngcgui.tcl:871 -msgid "no endsub found in file" +#: src/emc/motion/homing.c:246 +msgid "Cannot home while shared home switch is closed" msgstr "" -#: tcl/ngcgui.tcl:961 -#, fuzzy -msgid "Choose Files" -msgstr "Tipo de pieza" - -#: tcl/ngcgui.tcl:1100 -#, fuzzy -msgid "Controls" -msgstr "Ctrl-M" - -#: tcl/ngcgui.tcl:1109 -msgid "Preamble" +#: src/emc/motion/homing.c:290 +msgid "" +"invalid homing config: non-zero LATCH_VEL needs either SEARCH_VEL or " +"USE_INDEX" msgstr "" -#: tcl/ngcgui.tcl:1122 -msgid "Subfile" +#: src/emc/motion/homing.c:299 +msgid "invalid homing config: non-zero SEARCH_VEL needs LATCH_VEL" msgstr "" -#: tcl/ngcgui.tcl:1134 -msgid "Postamble" +#: src/emc/motion/homing.c:447 +msgid "Home switch inactive before start of backoff move" msgstr "" -#: tcl/ngcgui.tcl:1151 -msgid "Retain values on Subfile read" +#: src/emc/motion/homing.c:495 +msgid "Home switch active before start of latch move" msgstr "" -#: tcl/ngcgui.tcl:1159 -msgid "Expand subroutine" +#: src/emc/motion/homing.c:551 +msgid "Home switch inactive before start of latch move" msgstr "" -#: tcl/ngcgui.tcl:1168 tcl/ngcgui.tcl:2414 -msgid "Autosend" +#: src/emc/motion/homing.c:797 +#, c-format +msgid "unknown state '%d' during homing" msgstr "" -#: tcl/ngcgui.tcl:1178 +#: tcl/bin/emccalib.tcl:80 #, fuzzy -msgid "Verbose ngcfile" -msgstr "rs274ngc-Archivos" +msgid "Machinekit Servo Axis Calibration" +msgstr "Mostrar configuracion _HAl" -#: tcl/ngcgui.tcl:1188 tcl/ngcgui.tcl:2235 tcl/ngcgui.tcl:2259 -#: tcl/ngcgui.tcl:2289 -msgid "Create Feature" +#: tcl/bin/emccalib.tcl:90 +msgid "Save To File" msgstr "" -#: tcl/ngcgui.tcl:1194 tcl/ngcgui.tcl:2919 +#: tcl/bin/emccalib.tcl:106 tcl/bin/genedit.tcl:77 tcl/bin/halconfig.tcl:151 +#: tcl/bin/halshow.tcl:85 tcl/mini.tcl:2516 tcl/tklinuxcnc.tcl:719 +#: tcl/ngcgui.tcl:489 #, fuzzy -msgid "MakeFile" +msgid "File" msgstr "_Archivo" -#: tcl/ngcgui.tcl:1195 tcl/ngcgui.tcl:2916 -msgid "Finalize" +#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:236 tcl/bin/halconfig.tcl:153 +#: tcl/mini.tcl:3558 src/emc/usr_intf/touchy/touchy.glade:2420 +msgid "Refresh" msgstr "" -#: tcl/ngcgui.tcl:1212 -msgid "Reread" +#: tcl/bin/emccalib.tcl:110 tcl/bin/genedit.tcl:82 tcl/bin/halconfig.tcl:155 +#: tcl/mini.tcl:2535 src/emc/usr_intf/axis/scripts/axis.py:2107 +msgid "Save" msgstr "" -#: tcl/ngcgui.tcl:1231 -msgid "SendFileToAxis" +#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:623 +#, tcl-format +msgid "Tune %d" msgstr "" -#: tcl/ngcgui.tcl:1274 -msgid "Unrecoverable problem" -msgstr "" +#: tcl/bin/emccalib.tcl:162 tcl/bin/halconfig.tcl:628 +#, fuzzy +msgid "INI Name" +msgstr "Archivo:" -#: tcl/ngcgui.tcl:1374 -msgid "Postamble file" +#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:629 +msgid "HAL's Value" msgstr "" -#: tcl/ngcgui.tcl:1424 -msgid "Subroutine file" +#: tcl/bin/emccalib.tcl:165 tcl/bin/halconfig.tcl:631 +msgid "Next Value" msgstr "" -#: tcl/ngcgui.tcl:1482 -msgid "Positional Parameters" +#: tcl/bin/emccalib.tcl:230 tcl/bin/halconfig.tcl:680 tcl/bin/halconfig.tcl:731 +msgid "Test" msgstr "" -#: tcl/ngcgui.tcl:1587 -msgid "_Globals" +#: tcl/bin/emccalib.tcl:388 tcl/bin/halconfig.tcl:883 +#, tcl-format +msgid "" +"The HAL parameter \n" +" %s \n" +" has changed. \n" +" Really quit?" msgstr "" -#: tcl/ngcgui.tcl:1690 -msgid "No Subfile specified" +#: tcl/bin/emccalib.tcl:413 tcl/bin/halconfig.tcl:1170 +msgid "" +"Not permitted to save here.\n" +"\n" +" You need to copy a configuration to your home directory and work there." msgstr "" -#: tcl/ngcgui.tcl:1692 -msgid "No parameters yet" +#: tcl/bin/emccalib.tcl:487 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 +#: tcl/bin/pickconfig.tcl:843 tcl/bin/pickconfig.tcl:854 +#: tcl/scripts/Set_Coordinates.tcl:205 tcl/scripts/Set_Coordinates.tcl:228 +#, tcl-format +msgid "can't save %s" msgstr "" -#: tcl/ngcgui.tcl:1701 -msgid "Missing value for parm" +#: tcl/bin/emcdebug.tcl:166 tcl/bin/emcdebug.tcl:177 +msgid "LinuxCNC Debug" msgstr "" -#: tcl/ngcgui.tcl:1735 -msgid "Output file" +#: tcl/bin/emcdebug.tcl:185 +msgid "Invalid INI file entries" msgstr "" -#: tcl/ngcgui.tcl:1827 -msgid "Positional parameters for" +#: tcl/bin/emcdebug.tcl:186 +msgid "Configuration information" msgstr "" -#: tcl/ngcgui.tcl:1835 -#, fuzzy -msgid "expanded file" -msgstr "Todos los archivos" - -#: tcl/ngcgui.tcl:1849 -msgid "call subroutine file" +#: tcl/bin/emcdebug.tcl:187 +msgid "Use of defaults" msgstr "" -#: tcl/ngcgui.tcl:1919 -msgid "Multiple Tabs with Features" +#: tcl/bin/emcdebug.tcl:188 +msgid "Version information" msgstr "" -#: tcl/ngcgui.tcl:1920 -msgid "Finalize all Tabs?" +#: tcl/bin/emcdebug.tcl:189 +msgid "Command issuing" msgstr "" -#: tcl/ngcgui.tcl:1920 -msgid "Order" -msgstr "" +#: tcl/bin/emcdebug.tcl:190 +#, fuzzy +msgid "IO points" +msgstr "Puntos IO" -#: tcl/ngcgui.tcl:1922 -msgid "No, just this page" +#: tcl/bin/emcdebug.tcl:191 +msgid "NML" msgstr "" -#: tcl/ngcgui.tcl:1936 -msgid "Axis is not responding" -msgstr "" +#: tcl/bin/emcdebug.tcl:192 +#, fuzzy +msgid "Motion time" +msgstr "Tiempo de movimiento" -#: tcl/ngcgui.tcl:1937 -msgid "Error: " -msgstr "" +#: tcl/bin/emcdebug.tcl:193 src/emc/usr_intf/axis/scripts/debuglevel.py:42 +msgid "Interpreter" +msgstr "Intérprete" -#: tcl/ngcgui.tcl:1939 -msgid "Autosend disabled, Ctrl-A toggles autosend" +#: tcl/bin/emcdebug.tcl:194 +msgid "RCS" msgstr "" -#: tcl/ngcgui.tcl:1941 -msgid "File saving enabled -- Finalize to save" -msgstr "" +#: tcl/bin/emcdebug.tcl:195 +#, fuzzy +msgid "Trajectory level" +msgstr "Trajectoria" -#: tcl/ngcgui.tcl:1957 -msgid "Require .ngc suffix for filename" +#: tcl/bin/emcdebug.tcl:196 +#, fuzzy +msgid "Interpreter list" +msgstr "Lista de intérprete" + +#: tcl/bin/genedit.tcl:78 tcl/mini.tcl:2533 +msgid "New" msgstr "" -#: tcl/ngcgui.tcl:1967 -msgid "Disallowed overwrite of" +#: tcl/bin/genedit.tcl:80 tcl/mini.tcl:1667 tcl/mini.tcl:2534 +#: tcl/tklinuxcnc.tcl:720 tcl/tklinuxcnc.tcl:1657 +#, fuzzy +msgid "Open..." +msgstr "_Abrir" + +#: tcl/bin/genedit.tcl:84 tcl/mini.tcl:2536 +msgid "Save As..." msgstr "" -#: tcl/ngcgui.tcl:1986 -msgid "FEATURE" +#: tcl/bin/genedit.tcl:87 tcl/bin/halconfig.tcl:165 tcl/bin/halshow.tcl:92 +#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1322 +#: tcl/ngcgui.tcl:3832 +msgid "Exit" msgstr "" -#: tcl/ngcgui.tcl:1993 -msgid "feature line added" +#: tcl/bin/genedit.tcl:91 tcl/mini.tcl:2517 +#: src/emc/usr_intf/gscreen/gscreen.glade:2685 +msgid "Edit" msgstr "" -#: tcl/ngcgui.tcl:2002 -msgid "line added" +#: tcl/bin/genedit.tcl:92 tcl/mini.tcl:2543 +msgid "Cut" msgstr "" -#: tcl/ngcgui.tcl:2002 -msgid "activated" +#: tcl/bin/genedit.tcl:94 tcl/mini.tcl:2544 +msgid "Copy" msgstr "" -#: tcl/ngcgui.tcl:2004 +#: tcl/bin/genedit.tcl:96 tcl/mini.tcl:2545 #, fuzzy -msgid "restores" -msgstr "Detener" - -#: tcl/ngcgui.tcl:2041 -msgid "NOTREACHED mode" -msgstr "" +msgid "Paste" +msgstr "_Pausa" -#: tcl/ngcgui.tcl:2236 -msgid "Enter parms for 1st feature" +#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:73 +msgid "Select All" msgstr "" -#: tcl/ngcgui.tcl:2243 +#: tcl/bin/genedit.tcl:104 tcl/bin/halconfig.tcl:192 tcl/mini.tcl:919 +#: tcl/mini.tcl:2519 tcl/tklinuxcnc.tcl:790 +#: src/emc/usr_intf/stepconf/main_page.glade:445 #, fuzzy -msgid "New Outfile" -msgstr "Todos los archivos" +msgid "Help" +msgstr "Ayuda" -#: tcl/ngcgui.tcl:2245 -msgid "Ready to make New Outfile" +#: tcl/bin/genedit.tcl:105 tcl/mini.tcl:1011 tcl/mini.tcl:2559 +#: tcl/tklinuxcnc.tcl:796 +msgid "About..." msgstr "" -#: tcl/ngcgui.tcl:2262 tcl/ngcgui.tcl:2295 -msgid "Enter parms for feature " +#: tcl/bin/genedit.tcl:130 +msgid "Save and Reload" msgstr "" -#: tcl/ngcgui.tcl:2282 -msgid "feature" +#: tcl/bin/genedit.tcl:133 tcl/mini.tcl:2550 +#, fuzzy +msgid "Find..." +msgstr "Procesando..." + +#: tcl/bin/genedit.tcl:135 tcl/mini.tcl:2552 +msgid "Renumber File..." msgstr "" -#: tcl/ngcgui.tcl:2287 -msgid "Create Next" +#: tcl/bin/genedit.tcl:140 tcl/mini.tcl:917 tcl/mini.tcl:2518 +#: tcl/tklinuxcnc.tcl:746 src/emc/usr_intf/gmoccapy/gmoccapy.glade:5135 +msgid "Settings" msgstr "" -#: tcl/ngcgui.tcl:2292 -msgid "Created feature " +#: tcl/bin/genedit.tcl:141 tcl/mini.tcl:2554 +msgid "No Numbering" msgstr "" -#: tcl/ngcgui.tcl:2316 +#: tcl/bin/genedit.tcl:144 tcl/mini.tcl:2556 #, fuzzy -msgid "option" -msgstr "Tiempo de movimiento" - -#: tcl/ngcgui.tcl:2327 -msgid "Missing parameters" -msgstr "" +msgid "Line Numbering..." +msgstr "Procesando..." -#: tcl/ngcgui.tcl:2331 -msgid "Parse Error" +#: tcl/bin/genedit.tcl:150 tcl/tklinuxcnc.tcl:768 +msgid "Scripts" msgstr "" -#: tcl/ngcgui.tcl:2338 -msgid "Null Preamble" +#: tcl/bin/genedit.tcl:177 +msgid "About TkEditor" msgstr "" -#: tcl/ngcgui.tcl:2343 -msgid "Read Preamble" +#: tcl/bin/genedit.tcl:179 +msgid "" +"TkEditor\n" +"\n" +"Simple Tcl/Tk Text Editor\n" +"\n" +"GPL Version 2" msgstr "" -#: tcl/ngcgui.tcl:2347 -msgid "Preamble Error" +#: tcl/bin/genedit.tcl:267 tcl/mini.tcl:3090 +msgid "Find" msgstr "" -#: tcl/ngcgui.tcl:2352 -msgid "Null Postamble" -msgstr "" +#: tcl/bin/genedit.tcl:270 +#, fuzzy +msgid "Find:" +msgstr "Portabrocas:" -#: tcl/ngcgui.tcl:2357 -msgid "Read Postamble" -msgstr "" +#: tcl/bin/genedit.tcl:276 +#, fuzzy +msgid "Replace:" +msgstr "relativo" -#: tcl/ngcgui.tcl:2361 -msgid "Postamble Error" +#: tcl/bin/genedit.tcl:282 +msgid "Find All" msgstr "" -#: tcl/ngcgui.tcl:2366 -msgid "Read Subfile" +#: tcl/bin/genedit.tcl:285 tcl/mini.tcl:3113 +msgid "Replace All" msgstr "" -#: tcl/ngcgui.tcl:2371 -msgid "Write Error" +#: tcl/bin/genedit.tcl:288 +msgid "Skip This" msgstr "" -#: tcl/ngcgui.tcl:2375 -msgid "Outfile set" +#: tcl/bin/genedit.tcl:291 +msgid "Replace This" msgstr "" -#: tcl/ngcgui.tcl:2380 -msgid "Finished" +#: tcl/bin/genedit.tcl:297 +msgid "Clear" msgstr "" -#: tcl/ngcgui.tcl:2385 -#, fuzzy -msgid "Canceled" -msgstr "Cancelar" - -#: tcl/ngcgui.tcl:2391 -msgid "Sent" +#: tcl/bin/genedit.tcl:422 tcl/mini.tcl:2640 +msgid "Set Line Numbering" msgstr "" -#: tcl/ngcgui.tcl:2395 -#, fuzzy -msgid "SendFileToAxis failed" -msgstr "Filtro_del Programa %r fallido" - -#: tcl/ngcgui.tcl:2399 -msgid "Ctrl-k for Key bindings" +#: tcl/bin/genedit.tcl:424 tcl/mini.tcl:2644 +msgid "Increment" msgstr "" -#: tcl/ngcgui.tcl:2403 -msgid "Expand sub" +#: tcl/bin/genedit.tcl:426 tcl/mini.tcl:2646 +msgid "One" msgstr "" -#: tcl/ngcgui.tcl:2407 -msgid "Retain values" +#: tcl/bin/genedit.tcl:429 tcl/mini.tcl:2648 +msgid "Two" msgstr "" -#: tcl/ngcgui.tcl:2411 -msgid "Verbose" -msgstr "" +#: tcl/bin/genedit.tcl:432 tcl/mini.tcl:2650 +#, fuzzy +msgid "Five" +msgstr "_Archivo" -#: tcl/ngcgui.tcl:2417 -msgid "Finalize Canceled" +#: tcl/bin/genedit.tcl:435 tcl/mini.tcl:2652 +msgid "Ten" msgstr "" -#: tcl/ngcgui.tcl:2572 tcl/ngcgui.tcl:2728 -msgid "Dismiss" +#: tcl/bin/genedit.tcl:439 tcl/mini.tcl:2654 +msgid "Space" msgstr "" -#: tcl/ngcgui.tcl:2577 -msgid "ngcgui Error" +#: tcl/bin/genedit.tcl:441 tcl/mini.tcl:2656 +msgid "Single Space" msgstr "" -#: tcl/ngcgui.tcl:2600 -msgid "Declining support for tk send bug in ngcgui" +#: tcl/bin/genedit.tcl:444 tcl/mini.tcl:2658 +msgid "Double Space" msgstr "" -#: tcl/ngcgui.tcl:2601 -msgid "You should upgrade linuxcnc to >= linuxcnc2.5" +#: tcl/bin/genedit.tcl:447 tcl/mini.tcl:2660 +msgid "Tab Space" msgstr "" -#: tcl/ngcgui.tcl:2645 -msgid "pre2.4_send_file_to_axis:error" +#: tcl/bin/genedit.tcl:453 +msgid "Next Number:" msgstr "" -#: tcl/ngcgui.tcl:2839 share/axis/tcl/axis.tcl:1917 +#: tcl/bin/genedit.tcl:474 tcl/mini.tcl:2668 #, fuzzy -msgid "OFF" -msgstr "APAGAR" +msgid "Renumber" +msgstr "_Resumir" -#: tcl/ngcgui.tcl:2842 +#: tcl/bin/halconfig.tcl:88 tcl/bin/halshow.tcl:33 #, fuzzy -msgid "Toggle autosend" -msgstr "Medio enfriador activar/desactivar" +msgid "HAL Configuration" +msgstr "Mostrar configuracion _HAl" -#: tcl/ngcgui.tcl:2843 tcl/ngcgui.tcl:3057 -msgid "Clear entries" +#: tcl/bin/halconfig.tcl:103 +msgid "Would you like to save your configuration before you exit?" msgstr "" -#: tcl/ngcgui.tcl:2844 -msgid "Set entries to default values" -msgstr "" +#: tcl/bin/halconfig.tcl:103 +#, fuzzy +msgid "Save All" +msgstr "Restaurar todos los ejes" -#: tcl/ngcgui.tcl:2845 tcl/ngcgui.tcl:2859 tcl/ngcgui.tcl:2861 -msgid "Open editor specified by" +#: tcl/bin/halconfig.tcl:103 +msgid "Save Tune" msgstr "" -#: tcl/ngcgui.tcl:2846 -msgid "on last outfile" +#: tcl/bin/halconfig.tcl:103 +msgid "Save as Netlist" msgstr "" -#: tcl/ngcgui.tcl:2847 -msgid "toggle expand subroutines" -msgstr "" +#: tcl/bin/halconfig.tcl:103 +#, fuzzy +msgid "Don't Save" +msgstr "Perspectiva frontal" -#: tcl/ngcgui.tcl:2848 -msgid "Create feature" +#: tcl/bin/halconfig.tcl:132 +msgid "Show" msgstr "" -#: tcl/ngcgui.tcl:2849 -msgid "Finalize (AUTO send is" +#: tcl/bin/halconfig.tcl:133 +msgid "Watch" msgstr "" -#: tcl/ngcgui.tcl:2850 -msgid "Show key bindings" +#: tcl/bin/halconfig.tcl:134 +msgid "Modify" msgstr "" -#: tcl/ngcgui.tcl:2851 -msgid "Restart (cancel pending)" -msgstr "" - -#: tcl/ngcgui.tcl:2852 -msgid "(re)Read Preamble" -msgstr "" - -#: tcl/ngcgui.tcl:2853 -msgid "(re)Read Postamble" -msgstr "" - -#: tcl/ngcgui.tcl:2854 -msgid "(re)Read Subfile" +#: tcl/bin/halconfig.tcl:157 +msgid "Save INI Tuning" msgstr "" -#: tcl/ngcgui.tcl:2855 -msgid "toggle retain values" +#: tcl/bin/halconfig.tcl:159 +msgid "Save HAL Ini" msgstr "" -#: tcl/ngcgui.tcl:2856 -msgid "toggle output file verbosity" +#: tcl/bin/halconfig.tcl:161 +msgid "Save HAL Net" msgstr "" -#: tcl/ngcgui.tcl:2857 -#, fuzzy -msgid "Show status" -msgstr "_Mostrar medidas" - -#: tcl/ngcgui.tcl:2858 -msgid "Show full status (debug info)" +#: tcl/bin/halconfig.tcl:163 +msgid "Save and Exit" msgstr "" -#: tcl/ngcgui.tcl:2860 +#: tcl/bin/halconfig.tcl:168 tcl/mini.tcl:916 tcl/tklinuxcnc.tcl:739 #, fuzzy -msgid "on current subfile" -msgstr "Volver a cargar archivo actual [Ctrl-R]" - -#: tcl/ngcgui.tcl:2862 -msgid "on current preamble" -msgstr "" +msgid "View" +msgstr "Perspectiva" -#: tcl/ngcgui.tcl:2865 -msgid " Escape Return to Preview page" +#: tcl/bin/halconfig.tcl:170 tcl/bin/halshow.tcl:104 +msgid "Expand Tree" msgstr "" -#: tcl/ngcgui.tcl:2942 -msgid "Editing requires setting for environmental variable VISUAL" +#: tcl/bin/halconfig.tcl:172 tcl/bin/halshow.tcl:106 +msgid "Collapse Tree" msgstr "" -#: tcl/ngcgui.tcl:2943 -msgid "Trying gedit" +#: tcl/bin/halconfig.tcl:175 tcl/bin/halshow.tcl:109 +msgid "Expand Pins" msgstr "" -#: tcl/ngcgui.tcl:2955 -msgid "No file available for editing yet" +#: tcl/bin/halconfig.tcl:177 tcl/bin/halshow.tcl:111 +msgid "Expand Parameters" msgstr "" -#: tcl/ngcgui.tcl:2964 tcl/ngcgui.tcl:2973 -msgid "No file available for editing" +#: tcl/bin/halconfig.tcl:179 tcl/bin/halshow.tcl:113 +msgid "Expand Signals" msgstr "" -#: tcl/ngcgui.tcl:2990 -msgid "Status items" +#: tcl/bin/halconfig.tcl:182 tcl/bin/halshow.tcl:116 +msgid "Erase Watch" msgstr "" -#: tcl/ngcgui.tcl:3003 -msgid "All-page opt items" -msgstr "" +#: tcl/bin/halconfig.tcl:194 tcl/mini.tcl:840 tcl/mini.tcl:2785 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "About" +msgstr "Sobre AXIS" -#: tcl/ngcgui.tcl:3009 -msgid "any-items" -msgstr "" +#: tcl/bin/halconfig.tcl:196 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2579 +#, fuzzy +msgid "Main" +msgstr "Coordenada absoluta" -#: tcl/ngcgui.tcl:3046 -msgid "Set defaults" +#: tcl/bin/halconfig.tcl:476 +msgid "Enter HAL command :" msgstr "" -#: tcl/ngcgui.tcl:3125 -msgid "not writable" +#: tcl/bin/halconfig.tcl:479 tcl/bin/halconfig.tcl:528 tcl/bin/halshow.tcl:354 +msgid "Execute" msgstr "" -#: tcl/ngcgui.tcl:3263 tcl/ngcgui.tcl:3443 -msgid "new" +#: tcl/bin/halconfig.tcl:943 tcl/bin/halshow.tcl:405 +msgid "Select a node to show." msgstr "" -#: tcl/ngcgui.tcl:3288 -msgid "Open a new Subfile" +#: tcl/bin/halconfig.tcl:968 tcl/bin/halshow.tcl:429 +msgid "<-- Select a Leaf. Click on its name." msgstr "" -#: tcl/ngcgui.tcl:3434 -msgid "remove" +#: tcl/bin/halconfig.tcl:1085 tcl/bin/halconfig.tcl:1095 +#: tcl/bin/halconfig.tcl:1102 tcl/bin/halconfig.tcl:1109 +#: tcl/bin/halconfig.tcl:1116 +#, tcl-format +msgid "Click a highlighted entry where %s should go." msgstr "" -#: tcl/ngcgui.tcl:3456 tcl/ngcgui.tcl:3462 -msgid "move" +#: tcl/bin/halconfig.tcl:1092 +msgid "Nothing to be done for parameters here. Try the tuning page" msgstr "" -#: tcl/ngcgui.tcl:3561 src/emc/usr_intf/pncconf/pncconf.py:7022 -#: src/emc/usr_intf/pncconf/pncconf.py:7139 -#: src/emc/usr_intf/pncconf/pncconf.py:7306 -msgid "Custom" +#: tcl/bin/halconfig.tcl:1124 +#, tcl-format +msgid "%s is not a leaf, try again" msgstr "" -#: tcl/ngcgui.tcl:3587 -msgid "Problem creating page" +#: tcl/bin/halconfig.tcl:1281 +msgid "" +"Copyright Raymond E Henry. 2006\n" +"License: GPL Version 2\n" +"\n" +"Halconfig is an LinuxCNC configuration tool. It requires that you have " +"started an instance of linuxcnc.\n" +"\n" +"This script carries no warranty or liability for its use to the extent " +"allowed by law." msgstr "" -#: tcl/ngcgui.tcl:3594 -msgid "entrykeybindings not available" +#: tcl/bin/halshow.tcl:69 +msgid " SHOW " msgstr "" -#: tcl/ngcgui.tcl:3633 -msgid "Found multiple matches for" +#: tcl/bin/halshow.tcl:70 +msgid " WATCH " msgstr "" -#: tcl/ngcgui.tcl:3634 -msgid "using path" +#: tcl/bin/halshow.tcl:90 +msgid "Load Watch List" msgstr "" -#: tcl/ngcgui.tcl:3642 src/emc/usr_intf/axis/scripts/axis.py:2255 -#: src/emc/usr_intf/axis/scripts/axis.py:2268 -msgid "Warning" +#: tcl/bin/halshow.tcl:102 +msgid "Tree View" msgstr "" -#: tcl/ngcgui.tcl:3643 -msgid "File absolute path specifier conflicts with searchpath result" +#: tcl/bin/halshow.tcl:349 +msgid "Test HAL command :" msgstr "" -#: tcl/ngcgui.tcl:3644 -msgid "Absolute Specifier" +#: tcl/bin/halshow.tcl:544 +msgid "Load a watch list" msgstr "" -#: tcl/ngcgui.tcl:3645 -msgid "Using Search Result" +#: tcl/bin/halshow.tcl:567 +msgid "Save current watch list" msgstr "" -#: tcl/ngcgui.tcl:3650 -msgid "File not in Search Path" +#: tcl/bin/halshow.tcl:581 +msgid "Commands may be tested here but they will NOT be saved" msgstr "" -#: tcl/ngcgui.tcl:3652 -msgid "Must be in search path" +#: tcl/bin/pickconfig.tcl:96 +msgid "" +"Can't find the bwidget 1.7 package. There is a debian bwidget package; " +"install \n" +"it with sudo apt-get install bwidget." msgstr "" -#: tcl/ngcgui.tcl:3654 -msgid "(File found -- not in search path)" -msgstr "" +#: tcl/bin/pickconfig.tcl:154 +#, fuzzy +msgid "Machinekit Configuration Selector" +msgstr "Mostrar configuracion _HAl" -#: tcl/ngcgui.tcl:3656 -msgid "Current directory" +#: tcl/bin/pickconfig.tcl:296 +msgid "No details available." msgstr "" -#: tcl/ngcgui.tcl:3657 -msgid "Search path" +#: tcl/bin/pickconfig.tcl:343 +msgid "" +"Welcome to MachineKit.\n" +"\n" +"Select a machine configuration from the list on the left.\n" +"Details about the selected configuration will appear in the display on the " +"right.\n" +"Click 'OK' to run the selected configuration" msgstr "" -#: tcl/ngcgui.tcl:3663 -msgid "Check setting for" -msgstr "" +#: tcl/bin/pickconfig.tcl:401 +#, fuzzy +msgid "My Configurations" +msgstr "Mostrar configuracion _HAl" -#: tcl/ngcgui.tcl:3664 +#: tcl/bin/pickconfig.tcl:405 #, fuzzy -msgid "in ini file" -msgstr "AXIS (Vacio)" +msgid "Sample Configurations" +msgstr "Mostrar configuracion _HAl" -#: tcl/ngcgui.tcl:3665 -msgid "(Restart required after fixing ini file)" +#: tcl/bin/pickconfig.tcl:530 +#, tcl-format +msgid "ERROR: no configurations found in path '%s'" msgstr "" -#: tcl/ngcgui.tcl:3680 -#, fuzzy -msgid "Try to Continue" -msgstr "Continuar" - -#: tcl/ngcgui.tcl:3685 +#: tcl/bin/pickconfig.tcl:567 #, fuzzy -msgid "Ngcgui Configuration File Not Found" +msgid "Copy Configuration?" msgstr "Mostrar configuracion _HAl" -#: tcl/ngcgui.tcl:3765 -msgid "Missing Tcl Package Img" +#: tcl/bin/pickconfig.tcl:567 +#, tcl-format +msgid "" +"Would you like to copy the %s configuration to your home directory so you " +"can customize it?" msgstr "" -#: tcl/ngcgui.tcl:3766 -msgid "Please install Img" -msgstr "" +#: tcl/bin/pickconfig.tcl:567 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:563 +msgid "Yes" +msgstr "Si" -#: tcl/ngcgui.tcl:3965 +#: tcl/bin/pickconfig.tcl:749 #, fuzzy -msgid "ini file" -msgstr "AXIS (Vacio)" +msgid "Configuration Copied" +msgstr "Mostrar configuracion _HAl" -#: tcl/ngcgui.tcl:3973 -msgid "not found" +#: tcl/bin/pickconfig.tcl:749 +#, tcl-format +msgid "" +"The configuration file has been copied to %s. Next time, choose this " +"location when starting MachineKit." msgstr "" -#: tcl/ngcgui_ttt.tcl:67 -msgid "found truetype-tracer v4 -OK" +#: tcl/bin/pickconfig.tcl:799 +msgid "Shortcut Created" msgstr "" -#: tcl/ngcgui_ttt.tcl:70 -msgid "Note truetype-tracer v4 is required" +#: tcl/bin/pickconfig.tcl:799 +msgid "" +"A shortcut to this configuration file has been created on your desktop. You " +"can use it to automatically launch this configuration." msgstr "" -#: tcl/ngcgui_ttt.tcl:71 -msgid "Note: truetype-tracer v4 is required" +#: tcl/bin/pickconfig.tcl:805 +msgid "Create Desktop Shortcut" msgstr "" -#: tcl/ngcgui_ttt.tcl:81 -msgid "ngcgui_app.tcl must be loaded before" +#: tcl/bin/tkbackplot.tcl:110 +msgid "TkLinuxCNC BackPlot" msgstr "" -#: tcl/ngcgui_ttt.tcl:89 -msgid "Create a subroutine file from truetype-tracer (V4 reqd)" -msgstr "" +#: tcl/bin/tkbackplot.tcl:125 +#, fuzzy +msgid "SETUP" +msgstr "DETENER" -#: tcl/ngcgui_ttt.tcl:102 tcl/ngcgui_ttt.tcl:115 -msgid "problem with" -msgstr "" +#: tcl/bin/tkbackplot.tcl:127 +#, fuzzy +msgid "RESET" +msgstr "DETENER" -#: tcl/ngcgui_ttt.tcl:106 -msgid "No entry for" +#: tcl/bin/tkbackplot.tcl:129 +msgid "CANCEL" msgstr "" -#: tcl/ngcgui_ttt.tcl:109 -msgid "wrong version of truetype-tracer" +#: tcl/bin/tkbackplot.tcl:250 +msgid "AXIS" msgstr "" -#: tcl/ngcgui_ttt.tcl:125 -msgid "not writable, using" -msgstr "" +#: tcl/bin/tkbackplot.tcl:251 +#, fuzzy +msgid "OFFSET" +msgstr "APAGAR" -#: tcl/ngcgui_ttt.tcl:125 -msgid "and setting expandsub" +#: tcl/bin/tkbackplot.tcl:252 +msgid "ANGLE" msgstr "" -#: tcl/ngcgui_ttt.tcl:161 -msgid "Text" +#: tcl/bin/tkbackplot.tcl:253 +msgid "DIRECTION" msgstr "" -#: tcl/ngcgui_ttt.tcl:171 -msgid "Linescale" +#: tcl/bin/tkbackplot.tcl:270 +msgid "SIZE :" msgstr "" -#: tcl/ngcgui_ttt.tcl:177 -msgid "none" +#: tcl/mini.tcl:490 +#, tcl-format +msgid "JOG %s +" msgstr "" -#: tcl/ngcgui_ttt.tcl:192 -msgid "Subdiv" +#: tcl/mini.tcl:491 +#, tcl-format +msgid "JOG %s -" msgstr "" -#: tcl/ngcgui_ttt.tcl:199 -msgid "default" +#: tcl/mini.tcl:492 +#, tcl-format +msgid "" +"%s\n" +"\n" +"Z\n" +"E\n" +"R\n" +"O" msgstr "" -#: tcl/ngcgui_ttt.tcl:239 -msgid "Mode" -msgstr "" - -#: tcl/ngcgui_ttt.tcl:247 -msgid "normal" -msgstr "" - -#: tcl/ngcgui_ttt.tcl:248 -msgid "date" +#: tcl/mini.tcl:840 +msgid "" +"TkMini \n" +"\n" +"Tcl/Tk GUI for Enhanced Machine Controller\n" +"\n" +"GPL Copyright 2003 \n" +"Ray Henry \n" +"\n" +" 3D backplotter by Paul Corner \n" +" \n" +"This software comes with ABSOLUTELY NO GUARANTEE! \n" +"For details see the copyright.html file in this directory." msgstr "" -#: tcl/ngcgui_ttt.tcl:249 +#: tcl/mini.tcl:915 #, fuzzy -msgid "fontname" -msgstr "Archivo:" +msgid "Program" +msgstr "Pausar programa" -#: tcl/ngcgui_ttt.tcl:262 -msgid "Switches" +#: tcl/mini.tcl:918 +msgid "Info" msgstr "" -#: tcl/ngcgui_ttt.tcl:270 -#, fuzzy -msgid "Unicode" -msgstr "Fin" - -#: tcl/ngcgui_ttt.tcl:275 -msgid "Allow Rotation" +#: tcl/mini.tcl:923 +msgid "Backplot" msgstr "" -#: tcl/ngcgui_ttt.tcl:295 -msgid "Make ngcgui-compatible subfile and new tab page" +#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:5915 +msgid "Editor" msgstr "" -#: tcl/ngcgui_ttt.tcl:353 -msgid "Null text" +#: tcl/mini.tcl:927 +msgid "Offsets" msgstr "" -#: tcl/ngcgui_ttt.tcl:384 -msgid "Using truetype-tracer default font" +#: tcl/mini.tcl:929 +msgid "Tools" msgstr "" -#: tcl/ngcgui_ttt.tcl:388 +#: tcl/mini.tcl:951 tcl/mini.tcl:3565 tcl/tklinuxcnc.tcl:732 #, fuzzy -msgid "no such file" -msgstr "AXIS (Vacio)" +msgid "Reset" +msgstr "_Resumir" -#: tcl/ngcgui_ttt.tcl:393 -msgid "file not readable" -msgstr "" +#: tcl/mini.tcl:960 +#, fuzzy +msgid "Position Type" +msgstr "Posicion:" -#: tcl/ngcgui_ttt.tcl:507 -msgid "Creating new tab page" -msgstr "" +#: tcl/mini.tcl:962 +#, fuzzy +msgid "Tool Info" +msgstr "Cambio de pieza" -#: src/emc/usr_intf/axis/scripts/axis.py:148 -msgid "Emergency stop" -msgstr "Detener en Emergencia" +#: tcl/mini.tcl:964 +msgid "Offset Info" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:149 -msgid "Turn machine on" -msgstr "Encender Maquina" +#: tcl/mini.tcl:967 +#, fuzzy +msgid "Show Restart" +msgstr "_Mostrar medidas" -#: src/emc/usr_intf/axis/scripts/axis.py:151 -msgid "Activate first axis" -msgstr "Activar primer eje" +#: tcl/mini.tcl:968 +msgid "Hide Restart" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:152 -msgid "Activate second axis" -msgstr "Activar segundo eje" +#: tcl/mini.tcl:970 +msgid "Show Split Right" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:153 -msgid "Activate third axis" -msgstr "Activar tercer eje" +#: tcl/mini.tcl:972 +msgid "Show Mode Full" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:154 -msgid "Activate fourth axis" -msgstr "Activar cuarto eje" +#: tcl/mini.tcl:974 +msgid "Show Popin Full" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:155 +#: tcl/mini.tcl:978 #, fuzzy -msgid "Activate fifth through ninth axis" -msgstr "Activar quinto eje" +msgid "Actual Position" +msgstr "Mostrar posicion actual" -#: src/emc/usr_intf/axis/scripts/axis.py:156 -msgid "Set Feed Override from 0% to 100%" -msgstr "Control de avanze de 0% hasta 100%" +#: tcl/mini.tcl:980 +#, fuzzy +msgid "Commanded Position" +msgstr "Mostrar posicion" -#: src/emc/usr_intf/axis/scripts/axis.py:157 -msgid ", and ." -msgstr ", y ." +#: tcl/mini.tcl:983 +#, fuzzy +msgid "Machine Position" +msgstr "Mostrar posicion absoluta" -#: src/emc/usr_intf/axis/scripts/axis.py:157 -msgid "Select jog speed" -msgstr "Elegir velocidad de avance" +#: tcl/mini.tcl:985 +#, fuzzy +msgid "Relative Position" +msgstr "Mostrar posicion relativa" -#: src/emc/usr_intf/axis/scripts/axis.py:158 -msgid "< and >" -msgstr "< y >" +#: tcl/mini.tcl:988 tcl/tklinuxcnc.tcl:747 +#, fuzzy +msgid "Calibration..." +msgstr "_Calibración" -#: src/emc/usr_intf/axis/scripts/axis.py:158 -msgid "Select angular jog speed" -msgstr "Elegir velocidad angular" +#: tcl/mini.tcl:990 +msgid "HAL Show..." +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:159 -msgid "I, Shift-I" -msgstr "I, Ctrl-I" +#: tcl/mini.tcl:992 +msgid "HAL Config..." +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:159 share/axis/tcl/axis.tcl:2356 -msgid "Select jog increment" -msgstr "Elegir incremento del avance" +#: tcl/mini.tcl:997 +#, fuzzy +msgid "Program File" +msgstr "Filtro_del Programa %r fallido" -#: src/emc/usr_intf/axis/scripts/axis.py:160 -msgid "Continuous jog" -msgstr "Avance continuo" +#: tcl/mini.tcl:998 +#, fuzzy, tcl-format +msgid "Program file is %s" +msgstr "Filtro_del Programa %r fallido" -#: src/emc/usr_intf/axis/scripts/axis.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:479 -msgid "Home" -msgstr "Punto de referencia" +#: tcl/mini.tcl:999 +msgid "Editor File" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:161 -msgid "Send active axis home" -msgstr "Ejecutar Punto de referencia con eje activo" +#: tcl/mini.tcl:1000 +#, tcl-format +msgid "Editor file is %s" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:162 -msgid "Ctrl-Home" -msgstr "Ctrl-Pos1" +#: tcl/mini.tcl:1001 +msgid "Parameter File" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:162 -msgid "Home all axes" -msgstr "Restaurar todos los ejes" +#: tcl/mini.tcl:1002 +#, tcl-format +msgid "Parameter file is %s" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:163 -msgid "Shift-Home" -msgstr "Ctrl-Schift-Home" +#: tcl/mini.tcl:1003 +#, fuzzy +msgid "Tool File" +msgstr "Tipo de pieza" -#: src/emc/usr_intf/axis/scripts/axis.py:163 -msgid "Zero G54 offset for active axis" -msgstr "Eliminar desplazamiento del punto de origen para el eje activo" +#: tcl/mini.tcl:1004 +#, tcl-format +msgid "Tool file is %s" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:164 -msgid "End" -msgstr "Fin" +#: tcl/mini.tcl:1006 +#, fuzzy +msgid "Active G Codes" +msgstr "Activar Codigo-G:" -#: src/emc/usr_intf/axis/scripts/axis.py:164 -msgid "Set G54 offset for active axis" -msgstr "Activar desplazamiento del punto de origen" +#: tcl/mini.tcl:1007 +#, tcl-format +msgid "" +"Active codes include; \n" +"%s" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:165 -msgid "Jog active axis" -msgstr "Correr eje activo" +#: tcl/mini.tcl:1010 tcl/mini.tcl:2558 tcl/tklinuxcnc.tcl:791 +#, fuzzy +msgid "Help..." +msgstr "Ayuda" -#: src/emc/usr_intf/axis/scripts/axis.py:168 -msgid "Left, Right" -msgstr "Izquierda, Derecha" +#: tcl/mini.tcl:1027 tcl/tklinuxcnc.tcl:890 +msgid "ABORT" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:168 -msgid "Jog first axis" -msgstr "Correr primer eje" +#: tcl/mini.tcl:1038 tcl/mini.tcl:2048 +msgid "CONTINUE" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:169 -msgid "Up, Down" -msgstr "Arriba, abajo " +#: tcl/mini.tcl:1044 tcl/tklinuxcnc.tcl:828 tcl/tklinuxcnc.tcl:2248 +#: src/emc/usr_intf/touchy/touchy.glade:1264 +msgid "MDI" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:169 -msgid "Jog second axis" -msgstr "Correr segundo eje" +#: tcl/mini.tcl:1048 tcl/tklinuxcnc.tcl:2239 +msgid "AUTO" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:170 -msgid "Pg Up, Pg Dn" -msgstr "Subir Pag., Bajar Pag. " +#: tcl/mini.tcl:1052 tcl/mini.tcl:1812 tcl/tklinuxcnc.tcl:2141 +#: tcl/tklinuxcnc.tcl:2261 +msgid "MANUAL" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:170 -msgid "Jog third axis" -msgstr "Correr tercer eje" +#: tcl/mini.tcl:1106 +#, fuzzy +msgid "Tool #:" +msgstr "Ordenar herramienta" -#: src/emc/usr_intf/axis/scripts/axis.py:171 -msgid "Shift+above jogs" +#: tcl/mini.tcl:1108 +msgid "Length :" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:171 -msgid "Jog at traverse speed" +#: tcl/mini.tcl:1119 +msgid "Work Offsets: " msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:172 -msgid "Jog fourth axis" -msgstr "Correr cuarto eje" - -#: src/emc/usr_intf/axis/scripts/axis.py:175 -msgid "Toggle between Drag and Rotate mode" +#: tcl/mini.tcl:1121 +msgid "start offsets popup here" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:176 -msgid "Left Button" -msgstr "Boton izquierdo del raton" +#: tcl/mini.tcl:1165 +msgid "start override popup here" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:176 +#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1739 +msgid "Feed Override:" +msgstr "Control de avanze" + +#: tcl/mini.tcl:1180 +msgid "-- MESSAGES --" +msgstr "" + +#: tcl/mini.tcl:1230 +msgid "toggleView's not doin nothin yet" +msgstr "" + +#: tcl/mini.tcl:1282 +msgid "Can't set zero with a tool offset active so I issued G49 to cancel it." +msgstr "" + +#: tcl/mini.tcl:1346 +#, tcl-format +msgid "Can't update the var file while machine is in auto and %s." +msgstr "" + +#: tcl/mini.tcl:1400 tcl/tklinuxcnc.tcl:1227 +#, fuzzy +msgid "override limits" +msgstr "Exceder limites" + +#: tcl/mini.tcl:1405 tcl/tklinuxcnc.tcl:1263 +#, fuzzy +msgid "home" +msgstr "Punto de referencia" + +#: tcl/mini.tcl:1426 +msgid "DEFAULT" +msgstr "" + +#: tcl/mini.tcl:1427 +#, fuzzy +msgid "Speed:" +msgstr "Velocidad:" + +#: tcl/mini.tcl:1430 +msgid "RAPID" +msgstr "" + +#: tcl/mini.tcl:1447 tcl/tklinuxcnc.tcl:1391 +#, fuzzy +msgid "Set Jog Speed" +msgstr "Velocidad:" + +#: tcl/mini.tcl:1453 tcl/tklinuxcnc.tcl:1404 +#, fuzzy +msgid "Set jog speed:" +msgstr "Elegir velocidad de avance" + +#: tcl/mini.tcl:1511 +msgid "JOG X +" +msgstr "" + +#: tcl/mini.tcl:1512 +msgid "JOG X -" +msgstr "" + +#: tcl/mini.tcl:1516 +#, fuzzy +msgid "increment" +msgstr "Elegir incremento del avance" + +#: tcl/mini.tcl:1518 tcl/tklinuxcnc.tcl:602 tcl/tklinuxcnc.tcl:1249 +#: tcl/tklinuxcnc.tcl:1253 src/emc/usr_intf/gscreen/gscreen.glade:1574 +#: src/emc/usr_intf/gscreen/gscreen.glade:1586 +#, fuzzy +msgid "continuous" +msgstr "Continuo" + +#: tcl/mini.tcl:1520 +msgid "" +"A\n" +"L\n" +"L\n" +"\n" +"Z\n" +"E\n" +"R\n" +"O" +msgstr "" + +#: tcl/mini.tcl:1588 src/emc/usr_intf/touchy/touchy.glade:1422 +#, fuzzy +msgid "Spindle Forward" +msgstr "Controlar portabrocas:" + +#: tcl/mini.tcl:1589 src/emc/usr_intf/touchy/touchy.glade:1433 +#, fuzzy +msgid "Spindle Reverse" +msgstr "Controlar portabrocas:" + +#: tcl/mini.tcl:1590 tcl/tklinuxcnc.tcl:871 +#, fuzzy +msgid "Spindle off" +msgstr "Apagar freno de portabrocas" + +#: tcl/mini.tcl:1592 src/emc/usr_intf/touchy/touchy.glade:1479 +#, fuzzy +msgid "Spindle Slower" +msgstr "Disminuir revoluciones del Portabrocas [F11]" + +#: tcl/mini.tcl:1596 src/emc/usr_intf/touchy/touchy.glade:1464 +#, fuzzy +msgid "Spindle Faster" +msgstr "Aumentar revoluciones del Portabrocas [F12]" + +#: tcl/mini.tcl:1632 tcl/tklinuxcnc.tcl:1620 +msgid "MDI:" +msgstr "" + +#: tcl/mini.tcl:1669 tcl/tklinuxcnc.tcl:1658 +#: src/emc/usr_intf/stepconf/main_page.glade:298 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2625 +msgid "Run" +msgstr "" + +#: tcl/mini.tcl:1671 tcl/tklinuxcnc.tcl:1659 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2638 +#, fuzzy +msgid "Pause" +msgstr "_Pausa" + +#: tcl/mini.tcl:1673 tcl/tklinuxcnc.tcl:1660 +#, fuzzy +msgid "Resume" +msgstr "_Resumir" + +#: tcl/mini.tcl:1675 tcl/tklinuxcnc.tcl:1661 +#, fuzzy +msgid "Step" +msgstr "Pa_so" + +#: tcl/mini.tcl:1677 tcl/tklinuxcnc.tcl:1662 +msgid "Verify" +msgstr "" + +#: tcl/mini.tcl:1698 +msgid "RESTART LINE" +msgstr "" + +#: tcl/mini.tcl:1699 src/emc/usr_intf/stepconf/main_page.glade:531 +#, fuzzy +msgid "Back" +msgstr "Freno" + +#: tcl/mini.tcl:1700 +msgid "Ahead" +msgstr "" + +#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1300 +#: src/emc/usr_intf/gscreen/gscreen.glade:3973 +msgid "Restart" +msgstr "" + +#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 tcl/tklinuxcnc.tcl:465 +#: src/emc/usr_intf/axis/scripts/axis.py:2023 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:754 +msgid "All files" +msgstr "Todos los archivos" + +#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 tcl/tklinuxcnc.tcl:466 +#, fuzzy +msgid "Text files" +msgstr "Todos los archivos" + +#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 tcl/tklinuxcnc.tcl:467 +#, fuzzy +msgid "NC files" +msgstr "Todos los archivos" + +#: tcl/mini.tcl:1753 +msgid "" +"The interpreter is running. \n" +" Pressing OK will abort and load the new program" +msgstr "" + +#: tcl/mini.tcl:1886 +#, fuzzy +msgid "ESTOPPED" +msgstr "DETENER" + +#: tcl/mini.tcl:1889 +#, fuzzy +msgid "ESTOP PUSH" +msgstr "DETENER" + +#: tcl/mini.tcl:1892 tcl/tklinuxcnc.tcl:2233 +#, fuzzy +msgid "ESTOP RESET" +msgstr "DETENER" + +#: tcl/mini.tcl:1897 tcl/tklinuxcnc.tcl:2298 +msgid "SPINDLE FORWARD" +msgstr "" + +#: tcl/mini.tcl:1899 tcl/tklinuxcnc.tcl:2300 +msgid "SPINDLE REVERSE" +msgstr "" + +#: tcl/mini.tcl:1901 tcl/tklinuxcnc.tcl:2302 +msgid "SPINDLE OFF" +msgstr "" + +#: tcl/mini.tcl:1903 tcl/tklinuxcnc.tcl:2304 +msgid "SPINDLE INCREASE" +msgstr "" + +#: tcl/mini.tcl:1905 tcl/tklinuxcnc.tcl:2306 +msgid "SPINDLE DECREASE" +msgstr "" + +#: tcl/mini.tcl:1907 tcl/tklinuxcnc.tcl:2308 +msgid "SPINDLE ?" +msgstr "" + +#: tcl/mini.tcl:1911 tcl/tklinuxcnc.tcl:2312 +msgid "BRAKE ON" +msgstr "" + +#: tcl/mini.tcl:1913 tcl/tklinuxcnc.tcl:2314 +msgid "BRAKE OFF" +msgstr "" + +#: tcl/mini.tcl:1915 tcl/tklinuxcnc.tcl:2316 +msgid "BRAKE ?" +msgstr "" + +#: tcl/mini.tcl:1919 tcl/tklinuxcnc.tcl:2274 +msgid "MIST ON" +msgstr "" + +#: tcl/mini.tcl:1921 tcl/tklinuxcnc.tcl:2276 +msgid "MIST OFF" +msgstr "" + +#: tcl/mini.tcl:1923 tcl/tklinuxcnc.tcl:2278 +msgid "MIST ?" +msgstr "" + +#: tcl/mini.tcl:1927 tcl/tklinuxcnc.tcl:2282 +msgid "FLOOD ON" +msgstr "" + +#: tcl/mini.tcl:1929 tcl/tklinuxcnc.tcl:2284 +msgid "FLOOD OFF" +msgstr "" + +#: tcl/mini.tcl:1931 tcl/tklinuxcnc.tcl:2286 +msgid "FLOOD ?" +msgstr "" + +#: tcl/mini.tcl:2052 +msgid "FEEDHOLD" +msgstr "" + +#: tcl/mini.tcl:2124 +msgid "" +"TOOL SETUP \n" +" Click or tab to edit. Press enter to return to keyboard machine control." +msgstr "" + +#: tcl/mini.tcl:2130 +msgid " TOOL NUMBER " +msgstr "" + +#: tcl/mini.tcl:2131 +msgid " LENGTH " +msgstr "" + +#: tcl/mini.tcl:2132 +msgid " DIAMETER " +msgstr "" + +#: tcl/mini.tcl:2133 +msgid " COMMENT " +msgstr "" + +#: tcl/mini.tcl:2188 +msgid "Add Extra Tool" +msgstr "" + +#: tcl/mini.tcl:2189 +msgid "Remove Last Tool" +msgstr "" + +#: tcl/mini.tcl:2217 tcl/mini.tcl:2253 +#, tcl-format +msgid "Can't update the tool file while machine is in auto and %s." +msgstr "" + +#: tcl/mini.tcl:2229 +msgid "This is not a good number." +msgstr "" + +#: tcl/mini.tcl:2293 +msgid "" +"COORDINATE SYSTEM SETUP \n" +"\n" +" Click value to edit with keyboard. Press enter to return to keyboard " +"control of machine. \n" +" " +msgstr "" + +#: tcl/mini.tcl:2320 tcl/scripts/Set_Coordinates.tcl:80 +#, fuzzy +msgid "Axis " +msgstr "Eje:" + +#: tcl/mini.tcl:2321 +msgid "Value " +msgstr "" + +#: tcl/mini.tcl:2326 tcl/scripts/Set_Coordinates.tcl:91 +msgid "Teach" +msgstr "" + +#: tcl/mini.tcl:2334 +msgid "Write And Load File " +msgstr "" + +#: tcl/mini.tcl:2336 +msgid "Offset By Radius" +msgstr "" + +#: tcl/mini.tcl:2337 +msgid "Offset By Length" +msgstr "" + +#: tcl/mini.tcl:2342 +msgid "Subtract" +msgstr "" + +#: tcl/mini.tcl:2344 src/emc/usr_intf/gmoccapy/gmoccapy.glade:6712 +msgid "Add" +msgstr "" + +#: tcl/mini.tcl:2366 +msgid "Zero All G54" +msgstr "" + +#: tcl/mini.tcl:2367 +msgid "Zero All G55" +msgstr "" + +#: tcl/mini.tcl:2368 +msgid "Zero All G56" +msgstr "" + +#: tcl/mini.tcl:2369 +msgid "Zero All G57" +msgstr "" + +#: tcl/mini.tcl:2370 +msgid "Zero All G58" +msgstr "" + +#: tcl/mini.tcl:2371 +msgid "Zero All G59" +msgstr "" + +#: tcl/mini.tcl:2372 +msgid "Zero All G59.1" +msgstr "" + +#: tcl/mini.tcl:2373 +msgid "Zero All G59.2" +msgstr "" + +#: tcl/mini.tcl:2374 +msgid "Zero All G59.3" +msgstr "" + +#: tcl/mini.tcl:2375 +msgid "Zero All ????" +msgstr "" + +#: tcl/mini.tcl:2493 +msgid "Modified..." +msgstr "" + +#: tcl/mini.tcl:2538 +msgid "Save and Load" +msgstr "" + +#: tcl/mini.tcl:2540 src/emc/usr_intf/gscreen/gscreen.glade:3515 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2363 +msgid "Undo" +msgstr "" + +#: tcl/mini.tcl:2541 src/emc/usr_intf/gscreen/gscreen.glade:3526 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2411 +msgid "Redo" +msgstr "" + +#: tcl/mini.tcl:2546 tcl/tooledit.tcl:488 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6695 +msgid "Delete" +msgstr "" + +#: tcl/mini.tcl:2551 +msgid "Replace..." +msgstr "" + +#: tcl/mini.tcl:2664 +msgid "Next Number: " +msgstr "" + +#: tcl/mini.tcl:2765 +msgid "Basic Help" +msgstr "" + +#: tcl/mini.tcl:2765 +msgid "" +"This is a simple ASCII editor like many others.\n" +"\n" +"Ctrl+O Open\n" +"Ctrl+S Save\n" +"Ctrl+Z Undo\n" +"Ctrl+Y Redo\n" +"Ctrl+X Cut\n" +"Ctrl+C Copy\n" +"Ctrl+V Paste\n" +"Del Delete\n" +"Ctrl+A Select All\n" +"\n" +"Ctrl+F Find\n" +"Ctrl+R Replace " +msgstr "" + +#: tcl/mini.tcl:2785 +msgid "" +"tknotepad by Joseph Acosta. \n" +"\n" +" Modified for EMC by: Paul Corner " +msgstr "" + +#: tcl/mini.tcl:2793 +msgid "" +"The contents of this file may have changed, do you wish to to save your " +"changes?" +msgstr "" + +#: tcl/mini.tcl:2794 +msgid "New Confirm?" +msgstr "" + +#: tcl/mini.tcl:2928 +msgid "Print Setup" +msgstr "" + +#: tcl/mini.tcl:2932 +#, fuzzy +msgid "Print Command: " +msgstr "Comando MDI:" + +#: tcl/mini.tcl:3095 +msgid "Find what:" +msgstr "" + +#: tcl/mini.tcl:3101 +msgid "Replace with:" +msgstr "" + +#: tcl/mini.tcl:3109 +msgid "Find Next" +msgstr "" + +#: tcl/mini.tcl:3112 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2494 +#, fuzzy +msgid "Replace" +msgstr "relativo" + +#: tcl/mini.tcl:3120 src/emc/usr_intf/gscreen/gscreen.py:2750 +#: src/emc/usr_intf/gmoccapy/dialogs.py:171 +msgid "Up" +msgstr "" + +#: tcl/mini.tcl:3121 src/emc/usr_intf/gscreen/gscreen.py:2754 +#: src/emc/usr_intf/gmoccapy/dialogs.py:175 +#, fuzzy +msgid "Down" +msgstr "Arriba, abajo " + +#: tcl/mini.tcl:3124 +msgid "Match case" +msgstr "" + +#: tcl/mini.tcl:3569 +msgid "rot-x" +msgstr "" + +#: tcl/mini.tcl:3579 +msgid "rot-y" +msgstr "" + +#: tcl/mini.tcl:3589 +msgid "rot-z" +msgstr "" + +#: tcl/mini.tcl:3599 +msgid "zoom" +msgstr "" + +#: tcl/mini.tcl:3655 +#, fuzzy +msgid "TEST" +msgstr "DETENER" + +#: tcl/mini.tcl:3699 +msgid "Hide Setup" +msgstr "" + +#: tcl/mini.tcl:3703 +#, fuzzy +msgid "Show Setup" +msgstr "Estatus del EMC..." + +#: tcl/show_errors.tcl:41 +msgid "LinuxCNC Errors" +msgstr "" + +#: tcl/show_errors.tcl:44 +msgid "" +"LinuxCNC terminated with an error. When reporting problems, please include " +"all the information below in your message." +msgstr "" + +#: tcl/show_errors.tcl:74 tcl/scripts/Set_Coordinates.tcl:103 +msgid "Close" +msgstr "" + +#: tcl/tklinuxcnc.tcl:154 tcl/tklinuxcnc.tcl:181 +msgid "Set Run Mark" +msgstr "" + +#: tcl/tklinuxcnc.tcl:156 +#, tcl-format +msgid "Set run mark at line %s?" +msgstr "" + +#: tcl/tklinuxcnc.tcl:176 tcl/tklinuxcnc.tcl:204 +msgid "untitled" +msgstr "" + +#: tcl/tklinuxcnc.tcl:212 +msgid "Load Parameter File" +msgstr "" + +#: tcl/tklinuxcnc.tcl:261 +msgid "LinuxCNC Diagnostics" +msgstr "" + +#: tcl/tklinuxcnc.tcl:263 +msgid "Task" +msgstr "" + +#: tcl/tklinuxcnc.tcl:265 tcl/tklinuxcnc.tcl:288 tcl/tklinuxcnc.tcl:311 +msgid "Heartbeat:" +msgstr "" + +#: tcl/tklinuxcnc.tcl:268 tcl/tklinuxcnc.tcl:291 tcl/tklinuxcnc.tcl:314 +#, fuzzy +msgid "Command:" +msgstr "dirigido" + +#: tcl/tklinuxcnc.tcl:271 tcl/tklinuxcnc.tcl:294 tcl/tklinuxcnc.tcl:317 +#, fuzzy +msgid "Command #:" +msgstr "dirigido" + +#: tcl/tklinuxcnc.tcl:274 tcl/tklinuxcnc.tcl:297 tcl/tklinuxcnc.tcl:320 +msgid "Status:" +msgstr "" + +#: tcl/tklinuxcnc.tcl:286 +msgid "Io" +msgstr "" + +#: tcl/tklinuxcnc.tcl:309 +#, fuzzy +msgid "Motion" +msgstr "Tiempo de movimiento" + +#: tcl/tklinuxcnc.tcl:350 +msgid "About TkLinuxCNC" +msgstr "" + +#: tcl/tklinuxcnc.tcl:351 +msgid "" +"TkLinuxcnc\n" +"\n" +"Tcl/Tk GUI for LinuxCNC\n" +"\n" +"GPL Version 2 (2012)" +msgstr "" + +#: tcl/tklinuxcnc.tcl:399 +msgid "Set Tool Offset" +msgstr "" + +#: tcl/tklinuxcnc.tcl:404 tcl/tklinuxcnc.tcl:905 +#, fuzzy +msgid "Tool:" +msgstr "Ordenar herramienta" + +#: tcl/tklinuxcnc.tcl:722 +msgid "Edit..." +msgstr "" + +#: tcl/tklinuxcnc.tcl:727 +msgid "Tool Table Editor..." +msgstr "" + +#: tcl/tklinuxcnc.tcl:730 src/emc/usr_intf/touchy/touchy.glade:1383 +#, fuzzy +msgid "Reload Tool Table" +msgstr "Volver a vargar ta_bla de herramientas" + +#: tcl/tklinuxcnc.tcl:740 +msgid "Offsets and Variables..." +msgstr "" + +#: tcl/tklinuxcnc.tcl:741 +msgid "Diagnostics..." +msgstr "" + +#: tcl/tklinuxcnc.tcl:742 +msgid "Backplot..." +msgstr "" + +#: tcl/tklinuxcnc.tcl:748 +#, fuzzy +msgid "Testing..." +msgstr "Procesando..." + +#: tcl/tklinuxcnc.tcl:749 +msgid "Debug..." +msgstr "" + +#: tcl/tklinuxcnc.tcl:750 +msgid "Font..." +msgstr "" + +#: tcl/tklinuxcnc.tcl:754 src/emc/usr_intf/axis/scripts/image-to-gcode.py:665 +msgid "Units" +msgstr "Unidad" + +#: tcl/tklinuxcnc.tcl:755 +msgid "auto" +msgstr "" + +#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8873 +msgid "inches" +msgstr "" + +#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1609 +#: src/emc/usr_intf/axis/scripts/axis.py:1855 +#: src/emc/usr_intf/axis/scripts/axis.py:2386 +#: src/emc/usr_intf/touchy/touchy.glade:3301 +#: src/emc/usr_intf/stepconf/stepconf.py:1314 +#: src/emc/usr_intf/stepconf/pages.py:625 +#: src/emc/usr_intf/stepconf/main_page.glade:251 +#: src/emc/usr_intf/pncconf/pncconf.py:8869 +#: src/emc/usr_intf/pncconf/pncconf.glade:2195 +#: src/emc/usr_intf/pncconf/pncconf.glade:2362 +#: src/emc/usr_intf/pncconf/pncconf.glade:64552 +#: src/emc/usr_intf/pncconf/pncconf.glade:64621 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm" +msgstr "" + +#: tcl/tklinuxcnc.tcl:758 +msgid "cm" +msgstr "" + +#: tcl/tklinuxcnc.tcl:762 +msgid "Utilities" +msgstr "" + +#: tcl/tklinuxcnc.tcl:763 +#, fuzzy +msgid "Hal Scope" +msgstr "HA_L-escopio" + +#: tcl/tklinuxcnc.tcl:785 +msgid "HAL Show" +msgstr "" + +#: tcl/tklinuxcnc.tcl:786 +msgid "HAL Config" +msgstr "" + +#: tcl/tklinuxcnc.tcl:792 +msgid "Balloon help" +msgstr "" + +#: tcl/tklinuxcnc.tcl:815 +msgid "Estop on" +msgstr "" + +#: tcl/tklinuxcnc.tcl:816 +msgid "Estop off" +msgstr "" + +#: tcl/tklinuxcnc.tcl:818 +#, fuzzy +msgid "Machine on" +msgstr "Coordenada absoluta" + +#: tcl/tklinuxcnc.tcl:819 src/emc/usr_intf/gscreen/gscreen.glade:2452 +#, fuzzy +msgid "Machine off" +msgstr "Coordenada absoluta" + +#: tcl/tklinuxcnc.tcl:826 src/emc/usr_intf/touchy/touchy.glade:1561 +#, fuzzy +msgid "Manual" +msgstr "Control manual" + +#: tcl/tklinuxcnc.tcl:835 +#, fuzzy +msgid "Mist on" +msgstr "Neblina" + +#: tcl/tklinuxcnc.tcl:836 +#, fuzzy +msgid "Mist off" +msgstr "Neblina" + +#: tcl/tklinuxcnc.tcl:843 +#, fuzzy +msgid "Flood on" +msgstr "Enfriador" + +#: tcl/tklinuxcnc.tcl:844 +#, fuzzy +msgid "Flood off" +msgstr "Enfriador" + +#: tcl/tklinuxcnc.tcl:851 +msgid "Lube on" +msgstr "" + +#: tcl/tklinuxcnc.tcl:852 +msgid "Lube off" +msgstr "" + +#: tcl/tklinuxcnc.tcl:869 +#, fuzzy +msgid "Spindle forward" +msgstr "Controlar portabrocas:" + +#: tcl/tklinuxcnc.tcl:870 +#, fuzzy +msgid "Spindle reverse" +msgstr "Controlar portabrocas:" + +#: tcl/tklinuxcnc.tcl:885 +#, fuzzy +msgid "Brake on" +msgstr "Freno" + +#: tcl/tklinuxcnc.tcl:886 +#, fuzzy +msgid "Brake off" +msgstr "Freno" + +#: tcl/tklinuxcnc.tcl:907 +msgid "Offset:" +msgstr "" + +#: tcl/tklinuxcnc.tcl:913 +msgid "Work Offsets:" +msgstr "" + +#: tcl/tklinuxcnc.tcl:1233 +#, fuzzy +msgid "relative" +msgstr "relativo" + +#: tcl/tklinuxcnc.tcl:1234 +#, fuzzy +msgid "machine" +msgstr "Coordenada absoluta" + +#: tcl/tklinuxcnc.tcl:1236 +#, fuzzy +msgid "actual" +msgstr "Actual" + +#: tcl/tklinuxcnc.tcl:1237 +#, fuzzy +msgid "commanded" +msgstr "dirigido" + +#: tcl/tklinuxcnc.tcl:1239 +msgid "joint" +msgstr "" + +#: tcl/tklinuxcnc.tcl:1240 +msgid "world" +msgstr "" + +#: tcl/tklinuxcnc.tcl:1333 +msgid "Axis Offset" +msgstr "" + +#: tcl/tklinuxcnc.tcl:1335 +msgid "Set axis value:" +msgstr "" + +#: tcl/tklinuxcnc.tcl:1429 +#, fuzzy +msgid "Set Feed Override" +msgstr "Control de avanze" + +#: tcl/tklinuxcnc.tcl:1435 +#, fuzzy +msgid "Set feed override:" +msgstr "Control de avanze" + +#: tcl/tklinuxcnc.tcl:1460 +#, fuzzy +msgid "Set Spindle Override" +msgstr "Controlar portabrocas:" + +#: tcl/tklinuxcnc.tcl:1466 +#, fuzzy +msgid "Set spindle speed override:" +msgstr "Controlar portabrocas:" + +#: tcl/tklinuxcnc.tcl:1521 +#, fuzzy +msgid "Linear Jog Speed" +msgstr "Velocidad:" + +#: tcl/tklinuxcnc.tcl:1552 +msgid "Angular Jog Speed (deg)/min:" +msgstr "" + +#: tcl/tklinuxcnc.tcl:1596 +#, fuzzy +msgid "Spindle speed Override:" +msgstr "Controlar portabrocas:" + +#: tcl/tklinuxcnc.tcl:1642 +#, fuzzy +msgid "Program: " +msgstr "Pausar programa" + +#: tcl/tklinuxcnc.tcl:1647 +msgid " - Status: " +msgstr "" + +#: tcl/tklinuxcnc.tcl:1663 +msgid "Optional Stop" +msgstr "" + +#: tcl/tklinuxcnc.tcl:2010 +msgid "Error" +msgstr "" + +#: tcl/tklinuxcnc.tcl:2070 tcl/ngcgui_ttt.tcl:46 +msgid "Set Font" +msgstr "" + +#: tcl/tklinuxcnc.tcl:2079 tcl/ngcgui_ttt.tcl:283 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4827 +msgid "Font" +msgstr "" + +#: tcl/tklinuxcnc.tcl:2086 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3257 +#, fuzzy +msgid "Size" +msgstr "Tamańo:" + +#: tcl/tklinuxcnc.tcl:2093 +#, fuzzy +msgid "Style" +msgstr "Pa_so" + +#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:2031 +msgid "ESTOP" +msgstr "DETENER" + +#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2979 share/axis/tcl/axis.tcl:2033 +msgid "ON" +msgstr "ENCENDER" + +#: tcl/tklinuxcnc.tcl:2290 +msgid "LUBE ON" +msgstr "" + +#: tcl/tklinuxcnc.tcl:2292 +msgid "LUBE OFF" +msgstr "" + +#: tcl/tklinuxcnc.tcl:2294 +msgid "LUBE ?" +msgstr "" + +#: tcl/scripts/Set_Coordinates.tcl:23 +msgid "LinuxCNC Set Coordinate" +msgstr "" + +#: tcl/scripts/Set_Coordinates.tcl:26 +msgid "Coordinate System Control Window" +msgstr "" + +#: tcl/scripts/Set_Coordinates.tcl:81 +msgid "Var # " +msgstr "" + +#: tcl/scripts/Set_Coordinates.tcl:82 +msgid "Offset Value " +msgstr "" + +#: tcl/scripts/Set_Coordinates.tcl:83 +msgid "What to Teach" +msgstr "" + +#: tcl/scripts/Set_Coordinates.tcl:101 +msgid "Set Old" +msgstr "" + +#: tcl/scripts/Set_Coordinates.tcl:102 +msgid "Set Zero" +msgstr "" + +#: tcl/scripts/Set_Coordinates.tcl:104 +msgid "Write" +msgstr "" + +#: tcl/ngcgui.tcl:439 tcl/ngcgui.tcl:846 +msgid "Need non-null file name" +msgstr "" + +#: tcl/ngcgui.tcl:483 +msgid "Disallowed use of ngcgui generated file as Subfile" +msgstr "" + +#: tcl/ngcgui.tcl:489 +msgid "" +"marked (not_a_subfile)\n" +"Not intended for use as a subfile" +msgstr "" + +#: tcl/ngcgui.tcl:503 tcl/ngcgui.tcl:522 tcl/ngcgui.tcl:544 tcl/ngcgui.tcl:557 +#: tcl/ngcgui.tcl:577 tcl/ngcgui.tcl:682 +msgid "bogus" +msgstr "" + +#: tcl/ngcgui.tcl:505 +msgid "can not include subroutines within ngcgui subfile" +msgstr "" + +#: tcl/ngcgui.tcl:513 +msgid "Multiple subroutines in file not allowed" +msgstr "" + +#: tcl/ngcgui.tcl:524 +msgid "sub label" +msgstr "" + +#: tcl/ngcgui.tcl:524 tcl/ngcgui.tcl:579 +msgid "does not match subroutine file name" +msgstr "" + +#: tcl/ngcgui.tcl:539 tcl/ngcgui.tcl:540 +msgid "ignoring M2 after endsub" +msgstr "" + +#: tcl/ngcgui.tcl:545 +msgid "file contains lines after subend" +msgstr "" + +#: tcl/ngcgui.tcl:558 +msgid "file contains lines before sub" +msgstr "" + +#: tcl/ngcgui.tcl:579 +msgid "endsub label" +msgstr "" + +#: tcl/ngcgui.tcl:684 +msgid "out of sequence positional parameter" +msgstr "" + +#: tcl/ngcgui.tcl:684 +msgid "expected" +msgstr "" + +#: tcl/ngcgui.tcl:735 +msgid "no sub found in file" +msgstr "" + +#: tcl/ngcgui.tcl:738 +msgid "no endsub found in file" +msgstr "" + +#: tcl/ngcgui.tcl:801 +msgid "Cannot find gcmc executable" +msgstr "" + +#: tcl/ngcgui.tcl:802 +msgid "Please Install in path" +msgstr "" + +#: tcl/ngcgui.tcl:810 +msgid "not embedded, deriving outdir from:" +msgstr "" + +#: tcl/ngcgui.tcl:1038 +#, fuzzy +msgid "Choose Files" +msgstr "Tipo de pieza" + +#: tcl/ngcgui.tcl:1178 +#, fuzzy +msgid "Controls" +msgstr "Ctrl-M" + +#: tcl/ngcgui.tcl:1187 +msgid "Preamble" +msgstr "" + +#: tcl/ngcgui.tcl:1200 +msgid "Subfile" +msgstr "" + +#: tcl/ngcgui.tcl:1212 +msgid "Postamble" +msgstr "" + +#: tcl/ngcgui.tcl:1229 +msgid "Retain values on Subfile read" +msgstr "" + +#: tcl/ngcgui.tcl:1237 +msgid "Expand subroutine" +msgstr "" + +#: tcl/ngcgui.tcl:1247 tcl/ngcgui.tcl:2571 +msgid "Autosend" +msgstr "" + +#: tcl/ngcgui.tcl:1257 +#, fuzzy +msgid "Verbose ngcfile" +msgstr "rs274ngc-Archivos" + +#: tcl/ngcgui.tcl:1267 tcl/ngcgui.tcl:2393 tcl/ngcgui.tcl:2416 +#: tcl/ngcgui.tcl:2446 +msgid "Create Feature" +msgstr "" + +#: tcl/ngcgui.tcl:1273 tcl/ngcgui.tcl:3058 +#, fuzzy +msgid "MakeFile" +msgstr "_Archivo" + +#: tcl/ngcgui.tcl:1274 tcl/ngcgui.tcl:3055 +msgid "Finalize" +msgstr "" + +#: tcl/ngcgui.tcl:1291 +msgid "Reread" +msgstr "" + +#: tcl/ngcgui.tcl:1310 +msgid "SendFileToAxis" +msgstr "" + +#: tcl/ngcgui.tcl:1353 +msgid "Unrecoverable problem" +msgstr "" + +#: tcl/ngcgui.tcl:1431 +msgid "Postamble file" +msgstr "" + +#: tcl/ngcgui.tcl:1481 +msgid "Subroutine file" +msgstr "" + +#: tcl/ngcgui.tcl:1545 +msgid "Positional Parameters" +msgstr "" + +#: tcl/ngcgui.tcl:1694 +msgid "No Subfile specified" +msgstr "" + +#: tcl/ngcgui.tcl:1696 +msgid "No parameters yet" +msgstr "" + +#: tcl/ngcgui.tcl:1705 +msgid "Missing value for parm" +msgstr "" + +#: tcl/ngcgui.tcl:1726 +msgid "Output file" +msgstr "" + +#: tcl/ngcgui.tcl:1841 +msgid "Multiple Tabs with Features" +msgstr "" + +#: tcl/ngcgui.tcl:1842 +msgid "Finalize all Tabs?" +msgstr "" + +#: tcl/ngcgui.tcl:1842 +msgid "Order" +msgstr "" + +#: tcl/ngcgui.tcl:1844 +msgid "No, just this page" +msgstr "" + +#: tcl/ngcgui.tcl:1858 +msgid "Axis is not responding" +msgstr "" + +#: tcl/ngcgui.tcl:1859 +msgid "Error: " +msgstr "" + +#: tcl/ngcgui.tcl:1861 +msgid "Autosend disabled, Ctrl-A toggles autosend" +msgstr "" + +#: tcl/ngcgui.tcl:1863 +msgid "File saving enabled -- Finalize to save" +msgstr "" + +#: tcl/ngcgui.tcl:1879 +msgid "Require .ngc suffix for filename" +msgstr "" + +#: tcl/ngcgui.tcl:1889 +msgid "Disallowed overwrite of" +msgstr "" + +#: tcl/ngcgui.tcl:1913 +msgid "FEATURE" +msgstr "" + +#: tcl/ngcgui.tcl:1920 +msgid "feature line added" +msgstr "" + +#: tcl/ngcgui.tcl:1932 +msgid "line added" +msgstr "" + +#: tcl/ngcgui.tcl:1932 +msgid "activated" +msgstr "" + +#: tcl/ngcgui.tcl:1934 +#, fuzzy +msgid "restores" +msgstr "Detener" + +#: tcl/ngcgui.tcl:1973 +msgid "NOTREACHED mode" +msgstr "" + +#: tcl/ngcgui.tcl:1989 +msgid "Positional parameters for" +msgstr "" + +#: tcl/ngcgui.tcl:1997 +#, fuzzy +msgid "expanded file" +msgstr "Todos los archivos" + +#: tcl/ngcgui.tcl:2011 +msgid "call subroutine file" +msgstr "" + +#: tcl/ngcgui.tcl:2394 +msgid "Enter parms for 1st feature" +msgstr "" + +#: tcl/ngcgui.tcl:2401 +#, fuzzy +msgid "New Outfile" +msgstr "Todos los archivos" + +#: tcl/ngcgui.tcl:2403 +msgid "Ready to make New Outfile" +msgstr "" + +#: tcl/ngcgui.tcl:2419 tcl/ngcgui.tcl:2452 +msgid "Enter parms for feature " +msgstr "" + +#: tcl/ngcgui.tcl:2439 +msgid "feature" +msgstr "" + +#: tcl/ngcgui.tcl:2444 +msgid "Create Next" +msgstr "" + +#: tcl/ngcgui.tcl:2449 +msgid "Created feature " +msgstr "" + +#: tcl/ngcgui.tcl:2473 +#, fuzzy +msgid "option" +msgstr "Tiempo de movimiento" + +#: tcl/ngcgui.tcl:2484 +msgid "Missing parameters" +msgstr "" + +#: tcl/ngcgui.tcl:2488 +msgid "Parse Error" +msgstr "" + +#: tcl/ngcgui.tcl:2495 +msgid "Null Preamble" +msgstr "" + +#: tcl/ngcgui.tcl:2500 +msgid "Read Preamble" +msgstr "" + +#: tcl/ngcgui.tcl:2504 +msgid "Preamble Error" +msgstr "" + +#: tcl/ngcgui.tcl:2509 +msgid "Null Postamble" +msgstr "" + +#: tcl/ngcgui.tcl:2514 +msgid "Read Postamble" +msgstr "" + +#: tcl/ngcgui.tcl:2518 +msgid "Postamble Error" +msgstr "" + +#: tcl/ngcgui.tcl:2523 +msgid "Read Subfile" +msgstr "" + +#: tcl/ngcgui.tcl:2528 +msgid "Write Error" +msgstr "" + +#: tcl/ngcgui.tcl:2532 +msgid "Outfile set" +msgstr "" + +#: tcl/ngcgui.tcl:2537 +msgid "Finished" +msgstr "" + +#: tcl/ngcgui.tcl:2542 +#, fuzzy +msgid "Canceled" +msgstr "Cancelar" + +#: tcl/ngcgui.tcl:2548 +msgid "Sent" +msgstr "" + +#: tcl/ngcgui.tcl:2552 +#, fuzzy +msgid "SendFileToAxis failed" +msgstr "Filtro_del Programa %r fallido" + +#: tcl/ngcgui.tcl:2556 +msgid "Ctrl-k for Key bindings" +msgstr "" + +#: tcl/ngcgui.tcl:2560 +msgid "Expand sub" +msgstr "" + +#: tcl/ngcgui.tcl:2564 +msgid "Retain values" +msgstr "" + +#: tcl/ngcgui.tcl:2568 +msgid "Verbose" +msgstr "" + +#: tcl/ngcgui.tcl:2574 +msgid "Finalize Canceled" +msgstr "" + +#: tcl/ngcgui.tcl:2711 tcl/ngcgui.tcl:2867 +msgid "Dismiss" +msgstr "" + +#: tcl/ngcgui.tcl:2716 +msgid "ngcgui Error" +msgstr "" + +#: tcl/ngcgui.tcl:2739 +msgid "Declining support for tk send bug in ngcgui" +msgstr "" + +#: tcl/ngcgui.tcl:2740 +msgid "You should upgrade linuxcnc to >= linuxcnc2.5" +msgstr "" + +#: tcl/ngcgui.tcl:2784 +msgid "pre2.4_send_file_to_axis:error" +msgstr "" + +#: tcl/ngcgui.tcl:2978 share/axis/tcl/axis.tcl:2032 +#, fuzzy +msgid "OFF" +msgstr "APAGAR" + +#: tcl/ngcgui.tcl:2981 +#, fuzzy +msgid "Toggle autosend" +msgstr "Medio enfriador activar/desactivar" + +#: tcl/ngcgui.tcl:2982 tcl/ngcgui.tcl:3189 +msgid "Clear entries" +msgstr "" + +#: tcl/ngcgui.tcl:2983 +msgid "Set entries to default values" +msgstr "" + +#: tcl/ngcgui.tcl:2984 tcl/ngcgui.tcl:2998 tcl/ngcgui.tcl:3000 +msgid "Open editor specified by" +msgstr "" + +#: tcl/ngcgui.tcl:2985 +msgid "on last outfile" +msgstr "" + +#: tcl/ngcgui.tcl:2986 +msgid "toggle expand subroutines" +msgstr "" + +#: tcl/ngcgui.tcl:2987 +msgid "Create feature" +msgstr "" + +#: tcl/ngcgui.tcl:2988 +msgid "Finalize (AUTO send is" +msgstr "" + +#: tcl/ngcgui.tcl:2989 +msgid "Show key bindings" +msgstr "" + +#: tcl/ngcgui.tcl:2990 +msgid "Restart (cancel pending)" +msgstr "" + +#: tcl/ngcgui.tcl:2991 +msgid "(re)Read Preamble" +msgstr "" + +#: tcl/ngcgui.tcl:2992 +msgid "(re)Read Postamble" +msgstr "" + +#: tcl/ngcgui.tcl:2993 +msgid "(re)Read Subfile" +msgstr "" + +#: tcl/ngcgui.tcl:2994 +msgid "toggle retain values" +msgstr "" + +#: tcl/ngcgui.tcl:2995 +msgid "toggle output file verbosity" +msgstr "" + +#: tcl/ngcgui.tcl:2996 +#, fuzzy +msgid "Show status" +msgstr "_Mostrar medidas" + +#: tcl/ngcgui.tcl:2997 +msgid "Show full status (debug info)" +msgstr "" + +#: tcl/ngcgui.tcl:2999 +#, fuzzy +msgid "on current subfile" +msgstr "Volver a cargar archivo actual [Ctrl-R]" + +#: tcl/ngcgui.tcl:3001 +msgid "on current preamble" +msgstr "" + +#: tcl/ngcgui.tcl:3004 +msgid " Escape Return to Preview page" +msgstr "" + +#: tcl/ngcgui.tcl:3081 +msgid "Editing requires setting for environmental variable VISUAL" +msgstr "" + +#: tcl/ngcgui.tcl:3082 +msgid "Trying gedit" +msgstr "" + +#: tcl/ngcgui.tcl:3095 +msgid "No file available for editing yet" +msgstr "" + +#: tcl/ngcgui.tcl:3104 tcl/ngcgui.tcl:3113 +msgid "No file available for editing" +msgstr "" + +#: tcl/ngcgui.tcl:3130 +msgid "Status items" +msgstr "" + +#: tcl/ngcgui.tcl:3143 +msgid "All-page opt items" +msgstr "" + +#: tcl/ngcgui.tcl:3149 +msgid "any-items" +msgstr "" + +#: tcl/ngcgui.tcl:3182 +msgid "Set defaults" +msgstr "" + +#: tcl/ngcgui.tcl:3257 +msgid "not writable" +msgstr "" + +#: tcl/ngcgui.tcl:3396 tcl/ngcgui.tcl:3577 +msgid "new" +msgstr "" + +#: tcl/ngcgui.tcl:3422 +msgid "Open a new Subfile" +msgstr "" + +#: tcl/ngcgui.tcl:3568 +msgid "remove" +msgstr "" + +#: tcl/ngcgui.tcl:3590 tcl/ngcgui.tcl:3596 +msgid "move" +msgstr "" + +#: tcl/ngcgui.tcl:3704 src/emc/usr_intf/pncconf/pncconf.py:7374 +#: src/emc/usr_intf/pncconf/pncconf.py:7485 +#: src/emc/usr_intf/pncconf/pncconf.py:7650 +msgid "Custom" +msgstr "" + +#: tcl/ngcgui.tcl:3730 +msgid "Problem creating page" +msgstr "" + +#: tcl/ngcgui.tcl:3737 +msgid "entrykeybindings not available" +msgstr "" + +#: tcl/ngcgui.tcl:3781 +msgid "Found multiple matches for" +msgstr "" + +#: tcl/ngcgui.tcl:3782 +msgid "using path" +msgstr "" + +#: tcl/ngcgui.tcl:3790 src/emc/usr_intf/axis/scripts/axis.py:2440 +#: src/emc/usr_intf/axis/scripts/axis.py:2453 +msgid "Warning" +msgstr "" + +#: tcl/ngcgui.tcl:3791 +msgid "File absolute path specifier conflicts with searchpath result" +msgstr "" + +#: tcl/ngcgui.tcl:3792 +msgid "Absolute Specifier" +msgstr "" + +#: tcl/ngcgui.tcl:3793 +msgid "Using Search Result" +msgstr "" + +#: tcl/ngcgui.tcl:3798 +msgid "File not in Search Path" +msgstr "" + +#: tcl/ngcgui.tcl:3800 +msgid "Must be in search path" +msgstr "" + +#: tcl/ngcgui.tcl:3802 +msgid "(File found -- not in search path)" +msgstr "" + +#: tcl/ngcgui.tcl:3804 +msgid "Current directory" +msgstr "" + +#: tcl/ngcgui.tcl:3805 +msgid "Search path" +msgstr "" + +#: tcl/ngcgui.tcl:3815 +msgid "Check setting for" +msgstr "" + +#: tcl/ngcgui.tcl:3816 +#, fuzzy +msgid "in ini file" +msgstr "AXIS (Vacio)" + +#: tcl/ngcgui.tcl:3817 +msgid "(Restart required after fixing ini file)" +msgstr "" + +#: tcl/ngcgui.tcl:3832 +#, fuzzy +msgid "Try to Continue" +msgstr "Continuar" + +#: tcl/ngcgui.tcl:3837 +#, fuzzy +msgid "Ngcgui Configuration File Not Found" +msgstr "Mostrar configuracion _HAl" + +#: tcl/ngcgui.tcl:3917 +msgid "Missing Tcl Package Img" +msgstr "" + +#: tcl/ngcgui.tcl:3918 +msgid "Please install Img" +msgstr "" + +#: tcl/ngcgui.tcl:4122 +#, fuzzy +msgid "ini file" +msgstr "AXIS (Vacio)" + +#: tcl/ngcgui.tcl:4131 +msgid "not found" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:67 +msgid "found truetype-tracer v4 -OK" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:70 +msgid "Note truetype-tracer v4 is required" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:71 +msgid "Note: truetype-tracer v4 is required" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:81 +msgid "ngcgui_app.tcl must be loaded before" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:89 +msgid "Create a subroutine file from truetype-tracer (V4 reqd)" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:102 tcl/ngcgui_ttt.tcl:115 +msgid "problem with" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:106 +msgid "No entry for" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:109 +msgid "wrong version of truetype-tracer" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:125 +msgid "not writable, using" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:125 +msgid "and setting expandsub" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:161 +msgid "Text" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:171 +msgid "Linescale" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:177 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3583 +msgid "none" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:192 +msgid "Subdiv" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:199 +msgid "default" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:239 +msgid "Mode" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:247 +msgid "normal" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:248 +msgid "date" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:249 +#, fuzzy +msgid "fontname" +msgstr "Archivo:" + +#: tcl/ngcgui_ttt.tcl:262 +msgid "Switches" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:270 +#, fuzzy +msgid "Unicode" +msgstr "Fin" + +#: tcl/ngcgui_ttt.tcl:275 +msgid "Allow Rotation" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:295 +msgid "Make ngcgui-compatible subfile and new tab page" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:353 +msgid "Null text" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:384 +msgid "Using truetype-tracer default font" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:388 +#, fuzzy +msgid "no such file" +msgstr "AXIS (Vacio)" + +#: tcl/ngcgui_ttt.tcl:393 +msgid "file not readable" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:507 +msgid "Creating new tab page" +msgstr "" + +#: tcl/ngcgui_app.tcl:25 +msgid "" +"requires command inifindall\n" +"from axis.py (LinuxCNC 2.5) or" +msgstr "" + +#: tcl/ngcgui_app.tcl:55 +msgid "Substituting" +msgstr "" + +#: tcl/ngcgui_app.tcl:55 +msgid "for" +msgstr "" + +#: tcl/ngcgui_app.tcl:59 +msgid "not readable" +msgstr "" + +#: tcl/ngcgui_app.tcl:65 tcl/ngcgui_app.tcl:68 +msgid "Unexpected: multiple startups for ngcgui" +msgstr "" + +#: tcl/ngcgui_app.tcl:66 +msgid "LinuxCNC" +msgstr "" + +#: tcl/ngcgui_app.tcl:67 +msgid "for linuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" +msgstr "" + +#: tcl/ngcgui_app.tcl:86 +#, fuzzy +msgid "LinuxCNC version" +msgstr "Mostrar configuracion _HAl" + +#: tcl/ngcgui_app.tcl:87 +msgid "for LinuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" +msgstr "" + +#: tcl/tooledit.tcl:65 +msgid "Problem reading ~/.tooleditrc" +msgstr "" + +#: tcl/tooledit.tcl:82 +#, tcl-format +msgid "Note: Ignoring duplicate column name: %s" +msgstr "" + +#: tcl/tooledit.tcl:93 +#, fuzzy, tcl-format +msgid "Unknown column: %s" +msgstr "Herramienta desconocida %d" + +#: tcl/tooledit.tcl:210 tcl/tooledit.tcl:213 tcl/tooledit.tcl:598 +#: tcl/tooledit.tcl:599 tcl/tooledit.tcl:1032 +msgid "NEW" +msgstr "" + +#: tcl/tooledit.tcl:232 +#, tcl-format +msgid "%s must be a number" +msgstr "" + +#: tcl/tooledit.tcl:241 +#, tcl-format +msgid "filename: <%s> not readable" +msgstr "" + +#: tcl/tooledit.tcl:245 +#, tcl-format +msgid "filename: <%s> not writable" +msgstr "" + +#: tcl/tooledit.tcl:250 +#, tcl-format +msgid "directory: <%s> not writable" +msgstr "" + +#: tcl/tooledit.tcl:294 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, value <%s> is not a number" +msgstr "" + +#: tcl/tooledit.tcl:300 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, expected integer not <%s>" +msgstr "" + +#: tcl/tooledit.tcl:316 +#, tcl-format +msgid "At linenumber %d, Unknown tag <%s>" +msgstr "" + +#: tcl/tooledit.tcl:399 +#, tcl-format +msgid "%s: Column sorting not available with tcl_version==%s" +msgstr "" + +#: tcl/tooledit.tcl:408 +#, fuzzy +msgid "tool" +msgstr "Sin herramienta" + +#: tcl/tooledit.tcl:409 +msgid "poc" +msgstr "" + +#: tcl/tooledit.tcl:410 +msgid "diam" +msgstr "" + +#: tcl/tooledit.tcl:411 +msgid "front" +msgstr "" + +#: tcl/tooledit.tcl:412 +msgid "back" +msgstr "" + +#: tcl/tooledit.tcl:413 +msgid "orien" +msgstr "" + +#: tcl/tooledit.tcl:414 +#, fuzzy +msgid "comment" +msgstr "Elegir incremento del avance" + +#: tcl/tooledit.tcl:444 +msgid "Del" +msgstr "" + +#: tcl/tooledit.tcl:473 +#, fuzzy +msgid "ReLoadTable" +msgstr "Volver a vargar ta_bla de herramientas" + +#: tcl/tooledit.tcl:478 +#, fuzzy +msgid "SaveFile" +msgstr "_Archivo" + +#: tcl/tooledit.tcl:483 +msgid "ReRead" +msgstr "" + +#: tcl/tooledit.tcl:485 +#, fuzzy +msgid "AddTool" +msgstr "Ordenar herramienta" + +#: tcl/tooledit.tcl:535 +#, tcl-format +msgid "Opened %s" +msgstr "" + +#: tcl/tooledit.tcl:536 +#, tcl-format +msgid "Created %s" +msgstr "" + +#: tcl/tooledit.tcl:537 +msgid "File updated" +msgstr "" + +#: tcl/tooledit.tcl:538 +msgid "File modified" +msgstr "" + +#: tcl/tooledit.tcl:539 +msgid "File check errors" +msgstr "" + +#: tcl/tooledit.tcl:540 +msgid "File checked" +msgstr "" + +#: tcl/tooledit.tcl:541 +msgid "File items deleted" +msgstr "" + +#: tcl/tooledit.tcl:542 +msgid "Bogus lines in file ignored" +msgstr "" + +#: tcl/tooledit.tcl:543 +msgid "File errors -- Check Entries" +msgstr "" + +#: tcl/tooledit.tcl:544 +msgid "Warning: File changed by another process" +msgstr "" + +#: tcl/tooledit.tcl:545 +msgid "Warning: File deleted by another process" +msgstr "" + +#: tcl/tooledit.tcl:546 +#, fuzzy +msgid "Added Tool" +msgstr "Sin herramienta" + +#: tcl/tooledit.tcl:550 +#, tcl-format +msgid "Sorted by %s, increasing" +msgstr "" + +#: tcl/tooledit.tcl:551 +#, tcl-format +msgid "Sorted by %s, decreasing" +msgstr "" + +#: tcl/tooledit.tcl:593 +msgid "Added" +msgstr "" + +#: tcl/tooledit.tcl:802 +#, tcl-format +msgid "Tool %s, Column %s, parameter %s is not a number" +msgstr "" + +#: tcl/tooledit.tcl:811 +#, tcl-format +msgid "Tool %s, parameter %s must be nonnegative integer" +msgstr "" + +#: tcl/tooledit.tcl:819 +#, tcl-format +msgid "Tool %s: must be 0..9 integer" +msgstr "" + +#: tcl/tooledit.tcl:826 +#, tcl-format +msgid "Tool %s: <%s> must be between -360 and 360" +msgstr "" + +#: tcl/tooledit.tcl:842 +#, tcl-format +msgid "Pocket <%s> specified multiple times" +msgstr "" + +#: tcl/tooledit.tcl:857 +#, tcl-format +msgid "Tool <%s> specified multiple times" +msgstr "" + +#: tcl/tooledit.tcl:902 +msgid "File Modified" +msgstr "" + +#: tcl/tooledit.tcl:903 +msgid "Save Modifications to File?" +msgstr "" + +#: tcl/tooledit.tcl:930 +#, tcl-format +msgid "" +"Only these columns are currently used:\n" +"\n" +" %s" +msgstr "" + +#: tcl/tooledit.tcl:931 +msgid "Limit display to these columns by specifying" +msgstr "" + +#: tcl/tooledit.tcl:933 +msgid "Format for ini file is" +msgstr "" + +#: tcl/tooledit.tcl:935 +msgid "For standalone use, invoke as" +msgstr "" + +#: tcl/tooledit.tcl:936 +msgid "tool_table_filename" +msgstr "" + +#: tcl/tooledit.tcl:956 +#, tcl-format +msgid "Created by %s" +msgstr "" + +#: tcl/tooledit.tcl:957 +msgid "Saved geometry (updated on program termination)" +msgstr "" + +#: tcl/tooledit.tcl:980 +#, tcl-format +msgid "" +"%s: Axis inifile specifies multiple inifile items for: [EMCIO]TOOL_TABLE" +msgstr "" + +#: tcl/tooledit.tcl:981 +#, tcl-format +msgid "%s: Using: %s" +msgstr "" + +#: tcl/tooledit.tcl:990 +#, tcl-format +msgid "" +"%s: Warning: Axis is running but the tool table file <%s> \n" +"differs from the standalone startup file <%s>" +msgstr "" + +#: tcl/tooledit.tcl:1004 +msgid "Must be On and Idle to reload tool table" +msgstr "" + +#: tcl/tooledit.tcl:1093 +msgid "Usage" +msgstr "" + +#: tcl/tooledit.tcl:1094 tcl/tooledit.tcl:1095 +#, fuzzy +msgid "filename" +msgstr "Archivo:" + +#: tcl/tooledit.tcl:1096 +#, tcl-format +msgid "Allowed column_ names are: %s" +msgstr "" + +#: tcl/tooledit.tcl:1106 +msgid "Missing filename" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:183 +msgid "Emergency stop" +msgstr "Detener en Emergencia" + +#: src/emc/usr_intf/axis/scripts/axis.py:184 +msgid "Turn machine on" +msgstr "Encender Maquina" + +#: src/emc/usr_intf/axis/scripts/axis.py:186 +msgid "Activate first axis" +msgstr "Activar primer eje" + +#: src/emc/usr_intf/axis/scripts/axis.py:187 +msgid "Activate second axis" +msgstr "Activar segundo eje" + +#: src/emc/usr_intf/axis/scripts/axis.py:188 +msgid "Activate third axis" +msgstr "Activar tercer eje" + +#: src/emc/usr_intf/axis/scripts/axis.py:189 +msgid "Activate fourth axis" +msgstr "Activar cuarto eje" + +#: src/emc/usr_intf/axis/scripts/axis.py:190 +#, fuzzy +msgid "Activate fifth through ninth axis" +msgstr "Activar quinto eje" + +#: src/emc/usr_intf/axis/scripts/axis.py:191 +msgid "Set Feed Override from 0% to 100%" +msgstr "Control de avanze de 0% hasta 100%" + +#: src/emc/usr_intf/axis/scripts/axis.py:192 +msgid ", and ." +msgstr ", y ." + +#: src/emc/usr_intf/axis/scripts/axis.py:192 +msgid "Select jog speed" +msgstr "Elegir velocidad de avance" + +#: src/emc/usr_intf/axis/scripts/axis.py:193 +msgid "< and >" +msgstr "< y >" + +#: src/emc/usr_intf/axis/scripts/axis.py:193 +msgid "Select angular jog speed" +msgstr "Elegir velocidad angular" + +#: src/emc/usr_intf/axis/scripts/axis.py:194 +msgid "I, Shift-I" +msgstr "I, Ctrl-I" + +#: src/emc/usr_intf/axis/scripts/axis.py:194 share/axis/tcl/axis.tcl:2481 +msgid "Select jog increment" +msgstr "Elegir incremento del avance" + +#: src/emc/usr_intf/axis/scripts/axis.py:195 +msgid "Continuous jog" +msgstr "Avance continuo" + +#: src/emc/usr_intf/axis/scripts/axis.py:196 +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Home" +msgstr "Punto de referencia" + +#: src/emc/usr_intf/axis/scripts/axis.py:196 +msgid "Send active axis home" +msgstr "Ejecutar Punto de referencia con eje activo" + +#: src/emc/usr_intf/axis/scripts/axis.py:197 +msgid "Ctrl-Home" +msgstr "Ctrl-Pos1" + +#: src/emc/usr_intf/axis/scripts/axis.py:197 +msgid "Home all axes" +msgstr "Restaurar todos los ejes" + +#: src/emc/usr_intf/axis/scripts/axis.py:198 +msgid "Shift-Home" +msgstr "Ctrl-Schift-Home" + +#: src/emc/usr_intf/axis/scripts/axis.py:198 +msgid "Zero G54 offset for active axis" +msgstr "Eliminar desplazamiento del punto de origen para el eje activo" + +#: src/emc/usr_intf/axis/scripts/axis.py:199 +msgid "End" +msgstr "Fin" + +#: src/emc/usr_intf/axis/scripts/axis.py:199 +msgid "Set G54 offset for active axis" +msgstr "Activar desplazamiento del punto de origen" + +#: src/emc/usr_intf/axis/scripts/axis.py:200 +msgid "Jog active axis" +msgstr "Correr eje activo" + +#: src/emc/usr_intf/axis/scripts/axis.py:203 +msgid "Left, Right" +msgstr "Izquierda, Derecha" + +#: src/emc/usr_intf/axis/scripts/axis.py:203 +msgid "Jog first axis" +msgstr "Correr primer eje" + +#: src/emc/usr_intf/axis/scripts/axis.py:204 +msgid "Up, Down" +msgstr "Arriba, abajo " + +#: src/emc/usr_intf/axis/scripts/axis.py:204 +msgid "Jog second axis" +msgstr "Correr segundo eje" + +#: src/emc/usr_intf/axis/scripts/axis.py:205 +msgid "Pg Up, Pg Dn" +msgstr "Subir Pag., Bajar Pag. " + +#: src/emc/usr_intf/axis/scripts/axis.py:205 +msgid "Jog third axis" +msgstr "Correr tercer eje" + +#: src/emc/usr_intf/axis/scripts/axis.py:206 +msgid "Shift+above jogs" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:206 +msgid "Jog at traverse speed" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:207 +msgid "Jog fourth axis" +msgstr "Correr cuarto eje" + +#: src/emc/usr_intf/axis/scripts/axis.py:210 +msgid "Toggle between Drag and Rotate mode" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:211 +msgid "Left Button" +msgstr "Boton izquierdo del raton" + +#: src/emc/usr_intf/axis/scripts/axis.py:211 +#, fuzzy +msgid "Pan, rotate or select line" +msgstr "Seleccionar linea o mover panorama" + +#: src/emc/usr_intf/axis/scripts/axis.py:212 +msgid "Shift+Left Button" +msgstr "Shift+Boton izquierdo del raton" + +#: src/emc/usr_intf/axis/scripts/axis.py:212 +#, fuzzy +msgid "Rotate or pan" +msgstr "Perspectiva superior rotada" + +#: src/emc/usr_intf/axis/scripts/axis.py:213 +msgid "Right Button" +msgstr "Boton derecho del raton" + +#: src/emc/usr_intf/axis/scripts/axis.py:213 +#: src/emc/usr_intf/axis/scripts/axis.py:215 +#: src/emc/usr_intf/axis/scripts/axis.py:216 +msgid "Zoom view" +msgstr "Acercar/Maximizar perspectiva" + +#: src/emc/usr_intf/axis/scripts/axis.py:214 +msgid "Wheel Button" +msgstr "Rueda del Raton" + +#: src/emc/usr_intf/axis/scripts/axis.py:214 +msgid "Rotate view" +msgstr "Rotar perspectiva" + +#: src/emc/usr_intf/axis/scripts/axis.py:215 +msgid "Rotate Wheel" +msgstr "Girar rueda del Raton" + +#: src/emc/usr_intf/axis/scripts/axis.py:216 +msgid "Control+Left Button" +msgstr "Ctrl+Boton izquierdo del raton" + +#: src/emc/usr_intf/axis/scripts/axis.py:219 +msgid "Manual control" +msgstr "Control manual" + +#: src/emc/usr_intf/axis/scripts/axis.py:220 +msgid "Code entry (MDI)" +msgstr "Introducir tarea (MDI)" + +#: src/emc/usr_intf/axis/scripts/axis.py:221 +msgid "Control-M" +msgstr "Ctrl-M" + +#: src/emc/usr_intf/axis/scripts/axis.py:221 +msgid "Clear MDI history" +msgstr " Borrar historial MDI " + +#: src/emc/usr_intf/axis/scripts/axis.py:222 +msgid "Control-H" +msgstr "Ctrl-H" + +#: src/emc/usr_intf/axis/scripts/axis.py:222 +msgid "Copy selected MDI history elements" +msgstr "Copiar elementos seleccionados del historial MDI" + +#: src/emc/usr_intf/axis/scripts/axis.py:223 +msgid "to clipboard" +msgstr "al portapapeles" + +#: src/emc/usr_intf/axis/scripts/axis.py:224 +msgid "Control-Shift-H" +msgstr "Ctrl-Shift-H" + +#: src/emc/usr_intf/axis/scripts/axis.py:224 +msgid "Paste clipboard to MDI history" +msgstr "Pegar portapapeles en historial MDI" + +#: src/emc/usr_intf/axis/scripts/axis.py:225 share/axis/tcl/axis.tcl:1183 +#: src/emc/usr_intf/touchy/touchy.glade:508 +msgid "Override Limits" +msgstr "Exceder limites" + +#: src/emc/usr_intf/axis/scripts/axis.py:227 +msgid "Open program" +msgstr "Abrir programa" + +#: src/emc/usr_intf/axis/scripts/axis.py:228 +msgid "Control-R" +msgstr "Ctrl-R" + +#: src/emc/usr_intf/axis/scripts/axis.py:228 +msgid "Reload program" +msgstr "Volver a cargar programa" + +#: src/emc/usr_intf/axis/scripts/axis.py:229 +#, fuzzy +msgid "Control-S" +msgstr "Ctrl-K" + +#: src/emc/usr_intf/axis/scripts/axis.py:229 +msgid "Save g-code as" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:230 +msgid "Run program" +msgstr "Ejecutar Programa" + +#: src/emc/usr_intf/axis/scripts/axis.py:231 +msgid "Step program" +msgstr "Ejecutar programa por paso" + +#: src/emc/usr_intf/axis/scripts/axis.py:232 +msgid "Pause program" +msgstr "Pausar programa" + +#: src/emc/usr_intf/axis/scripts/axis.py:233 +msgid "Resume program" +msgstr "Resumir programa" + +#: src/emc/usr_intf/axis/scripts/axis.py:234 +msgid "Stop running program, or" +msgstr "Detener programa en proceso, o" + +#: src/emc/usr_intf/axis/scripts/axis.py:235 +msgid "stop loading program preview" +msgstr "Detener carga de vista preliminar del programa" + +#: src/emc/usr_intf/axis/scripts/axis.py:237 +msgid "Toggle mist" +msgstr "Neblina encender/apagar" + +#: src/emc/usr_intf/axis/scripts/axis.py:238 +msgid "Toggle flood" +msgstr "Medio enfriador activar/desactivar" + +#: src/emc/usr_intf/axis/scripts/axis.py:239 +msgid "Spindle brake off" +msgstr "Apagar freno de portabrocas" + +#: src/emc/usr_intf/axis/scripts/axis.py:240 +msgid "Shift-B" +msgstr "Shift-B" + +#: src/emc/usr_intf/axis/scripts/axis.py:240 +msgid "Spindle brake on" +msgstr "Encender freno del Portabrocas" + +#: src/emc/usr_intf/axis/scripts/axis.py:241 +msgid "Turn spindle clockwise" +msgstr "Girar portabrocas en sentido de las agujas del reloj" + +#: src/emc/usr_intf/axis/scripts/axis.py:242 +#, fuzzy +msgid "Turn spindle counterclockwise" +msgstr " Portabrocas gira en sentido contrario de las agujas del reloj [F10]" + +#: src/emc/usr_intf/axis/scripts/axis.py:243 +msgid "Turn spindle more slowly" +msgstr "Girar Portabrocas mas despacio" + +#: src/emc/usr_intf/axis/scripts/axis.py:244 +msgid "Turn spindle more quickly" +msgstr "Girar Portabrocas mas rapido" + +#: src/emc/usr_intf/axis/scripts/axis.py:246 +msgid "Control-K" +msgstr "Ctrl-K" + +#: src/emc/usr_intf/axis/scripts/axis.py:246 +msgid "Clear live plot" +msgstr "Borrar barra de herramientas" + +#: src/emc/usr_intf/axis/scripts/axis.py:247 +msgid "Cycle among preset views" +msgstr "Cambiar perspectivas en ciclos" + +#: src/emc/usr_intf/axis/scripts/axis.py:248 +#, fuzzy +msgid "Cycle among preview, DRO, and user tabs" +msgstr "Cambiar perspectivas en ciclos" + +#: src/emc/usr_intf/axis/scripts/axis.py:250 +#, fuzzy +msgid "Ctrl-Space" +msgstr "Ctrl-Pos1" + +#: src/emc/usr_intf/axis/scripts/axis.py:250 +msgid "Clear notifications" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:850 +#, python-format +msgid "Unknown tool %d" +msgstr "Herramienta desconocida %d" + +#: src/emc/usr_intf/axis/scripts/axis.py:852 +msgid "No tool" +msgstr "Sin herramienta" + +#: src/emc/usr_intf/axis/scripts/axis.py:854 +#, fuzzy, python-format +msgid "Tool %(tool)d, offset %(zo)g, diameter %(dia)g" +msgstr "Herramienta %d, Mover Herramienta %g, Diametro %g" + +#: src/emc/usr_intf/axis/scripts/axis.py:856 +#, fuzzy, python-format +msgid "Tool %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" +msgstr "Herramienta %d, zo %g, xo %g, Diam. %g" + +#: src/emc/usr_intf/axis/scripts/axis.py:1031 +msgid "Filtering..." +msgstr "Procesando..." + +#: src/emc/usr_intf/axis/scripts/axis.py:1102 +#, fuzzy +msgid "Filter failed" +msgstr "Filtro_del Programa %r fallido" + +#: src/emc/usr_intf/axis/scripts/axis.py:1103 +#, python-format +msgid "" +"The program %(program)r exited with code %(code)d. Any error messages it " +"produced are shown below:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1171 +#, python-format +msgid "G-Code error in %s" +msgstr "Error de codigo-G en %s" + +#: src/emc/usr_intf/axis/scripts/axis.py:1172 +#, fuzzy, python-format +msgid "" +"Near line %(seq)d of %(f)s:\n" +"%(error_str)s" +msgstr "" +"Acercar linea %d en %s:\n" +"%s" + +#: src/emc/usr_intf/axis/scripts/axis.py:1341 +#: src/emc/usr_intf/axis/scripts/axis.py:2942 share/axis/tcl/axis.tcl:1162 +#: share/axis/tcl/axis.tcl:1164 share/axis/tcl/axis.tcl:2269 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:895 +msgid "Continuous" +msgstr "Continuo" + +#: src/emc/usr_intf/axis/scripts/axis.py:1452 +msgid "Ok" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1599 +msgid "T Tool Table" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1610 +#: src/emc/usr_intf/axis/scripts/axis.py:1859 +#: src/emc/usr_intf/axis/scripts/axis.py:2387 +#: src/emc/usr_intf/stepconf/stepconf.py:1328 +#: src/emc/usr_intf/stepconf/pages.py:631 +msgid "in" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1613 +msgid " radius" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1615 +msgid " diameter" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1616 +msgid "°" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1625 +msgid "Coordinate System:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1641 +msgid "fixture" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1642 +msgid "workpiece" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1658 +msgid "Name:" +msgstr "Archivo:" + +#: src/emc/usr_intf/axis/scripts/axis.py:1658 +msgid "Size:" +msgstr "Tamańo:" + +#: src/emc/usr_intf/axis/scripts/axis.py:1659 +msgid "Tool order:" +msgstr "Ordenar herramienta" + +#: src/emc/usr_intf/axis/scripts/axis.py:1659 +msgid "Rapid distance:" +msgstr "Distancia en marcha rapida:" + +#: src/emc/usr_intf/axis/scripts/axis.py:1660 +msgid "Feed distance:" +msgstr "Distancia:" + +#: src/emc/usr_intf/axis/scripts/axis.py:1660 +msgid "Total distance:" +msgstr "Distancia total:" + +#: src/emc/usr_intf/axis/scripts/axis.py:1661 +msgid "Run time:" +msgstr "Tiempo:" + +#: src/emc/usr_intf/axis/scripts/axis.py:1661 +msgid "X bounds:" +msgstr "Area X:" + +#: src/emc/usr_intf/axis/scripts/axis.py:1662 +msgid "Y bounds:" +msgstr "Area Y:" + +#: src/emc/usr_intf/axis/scripts/axis.py:1662 +#, fuzzy +msgid "Z bounds:" +msgstr "Area C:" + +#: src/emc/usr_intf/axis/scripts/axis.py:1663 +#, fuzzy +msgid "A bounds:" +msgstr "Area C:" + +#: src/emc/usr_intf/axis/scripts/axis.py:1663 +#, fuzzy +msgid "B bounds:" +msgstr "Area C:" + +#: src/emc/usr_intf/axis/scripts/axis.py:1664 +msgid "C bounds:" +msgstr "Area C:" + +#: src/emc/usr_intf/axis/scripts/axis.py:1688 +#, python-format +msgid "Program exceeds machine minimum on axis %s" +msgstr "El programa excedio el limite inferior en Eje %s" + +#: src/emc/usr_intf/axis/scripts/axis.py:1691 +#, python-format +msgid "Program exceeds machine maximum on axis %s" +msgstr "El Programa excedio el limite superior en Eje %s" + +#: src/emc/usr_intf/axis/scripts/axis.py:1696 +msgid "Program exceeds machine limits" +msgstr "El programa excedio limite de la Maquina" + +#: src/emc/usr_intf/axis/scripts/axis.py:1699 +msgid "Run Anyway" +msgstr "Ejecutar de todas formas" + +#: src/emc/usr_intf/axis/scripts/axis.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1581 +msgid "No file loaded" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1845 +#, python-format +msgid "generated from %s" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1851 +#, python-format +msgid "" +"%(size)s bytes\n" +"%(lines)s gcode lines" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1877 +#, python-format +msgid "%.1f minutes" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1879 +#, fuzzy, python-format +msgid "%d seconds" +msgstr "Correr segundo eje" + +#: src/emc/usr_intf/axis/scripts/axis.py:1887 +#, fuzzy, python-format +msgid "%(a)f to %(b)f = %(diff)f %(units)s" +msgstr "%f hasta %f = %f %s" + +#: src/emc/usr_intf/axis/scripts/axis.py:1888 +msgid "G-Code Properties" +msgstr "Propiedades de codigo-G %s" + +#: src/emc/usr_intf/axis/scripts/axis.py:2021 +msgid "All machinable files" +msgstr "Todos los Archivos ejecutables" + +#: src/emc/usr_intf/axis/scripts/axis.py:2022 +#: src/emc/usr_intf/axis/scripts/axis.py:2659 +msgid "rs274ngc files" +msgstr "rs274ngc-Archivos" + +#: src/emc/usr_intf/axis/scripts/axis.py:2037 +msgid "axis cannot accept remote command while running" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2098 +msgid "File not Writable:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2099 +msgid "" +"This file is not writable\n" +"You can Edit-readonly\n" +"\n" +"or\n" +"\n" +"Save it to your own directory\n" +"then open that saved, writable file" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2106 +msgid "Edit-readonly" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2440 +msgid "Axis is already homed, are you sure you want to re-home?" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2453 +msgid "This axis is already homed, are you sure you want to re-home?" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2493 share/axis/tcl/axis.tcl:1178 +msgid "Touch Off" +msgstr "Regular Offset" + +#: src/emc/usr_intf/axis/scripts/axis.py:2494 +#, fuzzy, python-format +msgid "Enter %s coordinate relative to %%s:" +msgstr "Introducir %s-coordenada relativa a la pieza:" + +#: src/emc/usr_intf/axis/scripts/axis.py:2671 +msgid "Error saving file" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:3077 +#: src/emc/usr_intf/touchy/touchy.glade:577 +#: src/emc/usr_intf/gscreen/gscreen.glade:2933 +msgid "Home All" +msgstr "Restaurar todos los ejes" + +#: src/emc/usr_intf/axis/scripts/axis.py:3079 +msgid "Home all axes [Ctrl-Home]" +msgstr "Restaurar todos los ejes [Ctrl-Pos1]" + +#: src/emc/usr_intf/axis/scripts/axis.py:3082 +msgid "Home All Axes" +msgstr "Restaurar todos los ejes" + +#: src/emc/usr_intf/axis/scripts/axis.py:3089 +#, fuzzy +msgid "Unhome All Axes" +msgstr "Restaurar todos los ejes" + +#: src/emc/usr_intf/axis/scripts/axis.py:3113 +#, python-format +msgid "Home Axis _%s" +msgstr "Restaurar _%s-Eje" + +#: src/emc/usr_intf/axis/scripts/axis.py:3115 +#, fuzzy, python-format +msgid "Unhome Axis _%s" +msgstr "Restaurar _%s-Eje" + +#: src/emc/usr_intf/axis/scripts/axis.py:3282 +msgid "Run from here" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:3598 +msgid "Error in ~/.axisrc" +msgstr "Error en ~/.axisrc" + +#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:102 +#, fuzzy +msgid "Machinekit Status" +msgstr "Coordenada absoluta" + +#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:118 +#, fuzzy +msgid "Copy All" +msgstr "Restaurar todos los ejes" + +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 +#, python-format +msgid "Insert tool %d and click continue when ready" +msgstr "Insertar pieza %d y clickear continuar" + +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:39 +msgid "Remove the tool and click continue when ready" +msgstr "Remover pieza y clickear continuar" + +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 +#: src/emc/usr_intf/touchy/mdi.py:49 src/emc/usr_intf/gscreen/mdi.py:49 +msgid "Tool change" +msgstr "Cambio de pieza" + +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 +msgid "Continue" +msgstr "Continuar" + +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:64 +msgid "AXIS Manual Toolchanger" +msgstr "Cambio manual de herramienta AXIS" + +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:68 +msgid "" +"This window is part of the AXIS manual toolchanger. It is safe to close or " +"iconify this window, or it will close automatically after a few seconds." +msgstr "" +"Esta ventana es parte del \" Cambiador manual de herramienta AXIS \". puede " +"ser cerrada, minimizada o automaticamente se cerrara despues deunos segundos " + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:507 +#, python-format +msgid "%s: Image to gcode" +msgstr "%s: Transformar imagen a codigo-G" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:508 +msgid "Image to gcode" +msgstr "Transformar imagen a codigo-G" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:518 +#, fuzzy, python-format +msgid "" +"Image size: %(w)d x %(h)d pixels\n" +"Minimum pixel value: %(min)d\n" +"Maximum pixel value: %(max)d" +msgstr "" +"Tamanho de imagen: %d x %d Resolucion
Luminosidad minima:%d
Maxima " +"Luminosidad: %d" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 +msgid "G20 (in)" +msgstr "G20 (in)" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 +msgid "G21 (mm)" +msgstr "G21 (mm)" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 +#: src/emc/usr_intf/touchy/emc_interface.py:417 +msgid "None" +msgstr "Ninguno" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +msgid "White" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +#, fuzzy +msgid "Black" +msgstr "Freno" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Rows" +msgstr "Filas" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Columns" +msgstr "Columnas" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Rows then Columns" +msgstr "Primero filas despues columnas" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Columns then Rows" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Positive" +msgstr "Positivo" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Negative" +msgstr "Negativo" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Alternating" +msgstr "Alternando" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Up Milling" +msgstr "Fresar avanzando" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Down Milling" +msgstr "Fresar hacia abajo " + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "Ball End" +msgstr "Fresador esferico" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "Flat End" +msgstr "Fresador plano" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 #, fuzzy -msgid "Pan, rotate or select line" -msgstr "Seleccionar linea o mover panorama" +msgid "30 Degree" +msgstr "Fresador de 60°" -#: src/emc/usr_intf/axis/scripts/axis.py:177 -msgid "Shift+Left Button" -msgstr "Shift+Boton izquierdo del raton" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "45 Degree" +msgstr "Fresador de 45°" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "60 Degree" +msgstr "Fresador de 60°" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 +msgid "Secondary" +msgstr "Secundario" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 +msgid "Full" +msgstr "Full" -#: src/emc/usr_intf/axis/scripts/axis.py:177 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:654 +msgid "Invert Image" +msgstr "Invertir Imagen" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:655 +msgid "Normalize Image" +msgstr "Normalizar imagen" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:656 +msgid "Extend Image Border" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:657 #, fuzzy -msgid "Rotate or pan" -msgstr "Perspectiva superior rotada" +msgid "Pixel Size (Units)" +msgstr "Tamanho del Pixel" -#: src/emc/usr_intf/axis/scripts/axis.py:178 -msgid "Right Button" -msgstr "Boton derecho del raton" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:658 +msgid "Depth (units)" +msgstr "Profundidad (Unidad)" -#: src/emc/usr_intf/axis/scripts/axis.py:178 -#: src/emc/usr_intf/axis/scripts/axis.py:180 -#: src/emc/usr_intf/axis/scripts/axis.py:181 -msgid "Zoom view" -msgstr "Acercar/Maximizar perspectiva" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:659 +msgid "Tolerance (units)" +msgstr "Tolerancia (Unidad)" -#: src/emc/usr_intf/axis/scripts/axis.py:179 -msgid "Wheel Button" -msgstr "Rueda del Raton" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:660 +#, fuzzy +msgid "Stepover (pixels)" +msgstr "Y-Resolucion (Pixel)" -#: src/emc/usr_intf/axis/scripts/axis.py:179 -msgid "Rotate view" -msgstr "Rotar perspectiva" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:661 +msgid "Tool Diameter (units)" +msgstr "Diametro de pieza (Unidad)" -#: src/emc/usr_intf/axis/scripts/axis.py:180 -msgid "Rotate Wheel" -msgstr "Girar rueda del Raton" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:662 +msgid "Tool Type" +msgstr "Tipo de pieza" -#: src/emc/usr_intf/axis/scripts/axis.py:181 -msgid "Control+Left Button" -msgstr "Ctrl+Boton izquierdo del raton" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:663 +msgid "Feed Rate (units per minute)" +msgstr "Avance (Unidad por minuto)" -#: src/emc/usr_intf/axis/scripts/axis.py:184 -msgid "Manual control" -msgstr "Control manual" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:664 +#, fuzzy +msgid "Plunge Feed Rate (units per minute)" +msgstr "Avance (Unidad por minuto)" -#: src/emc/usr_intf/axis/scripts/axis.py:185 -msgid "Code entry (MDI)" -msgstr "Introducir tarea (MDI)" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:666 +msgid "Safety Height (units)" +msgstr "Altura de seguridad (Unidad)" -#: src/emc/usr_intf/axis/scripts/axis.py:186 -msgid "Control-M" -msgstr "Ctrl-M" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:667 +#, fuzzy +msgid "Scan Pattern" +msgstr "Escanear patrón" -#: src/emc/usr_intf/axis/scripts/axis.py:186 -msgid "Clear MDI history" -msgstr " Borrar historial MDI " +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:668 +#, fuzzy +msgid "Scan Direction" +msgstr "Escanear dirección" -#: src/emc/usr_intf/axis/scripts/axis.py:187 -msgid "Control-H" -msgstr "Ctrl-H" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:669 +#, fuzzy +msgid "Lace Bounding" +msgstr "Límite de cortador" -#: src/emc/usr_intf/axis/scripts/axis.py:187 -msgid "Copy selected MDI history elements" -msgstr "Copiar elementos seleccionados del historial MDI" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:670 +#, fuzzy +msgid "Contact Angle (degrees)" +msgstr "Ángulo de contacto" -#: src/emc/usr_intf/axis/scripts/axis.py:188 -msgid "to clipboard" -msgstr "al portapapeles" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:671 +msgid "Spindle Speed (RPM)" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:189 -msgid "Control-Shift-H" -msgstr "Ctrl-Shift-H" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:672 +msgid "Roughing offset (units, 0=no roughing)" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:189 -msgid "Paste clipboard to MDI history" -msgstr "Pegar portapapeles en historial MDI" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:673 +msgid "Roughing depth per pass (units)" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:190 share/axis/tcl/axis.tcl:1113 -#: src/emc/usr_intf/touchy/touchy.glade:508 -msgid "Override Limits" -msgstr "Exceder limites" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:740 +msgid "image-to-gcode: User pressed cancel" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:192 -msgid "Open program" -msgstr "Abrir programa" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:753 +msgid "Depth images" +msgstr "Archivos de imagenes" -#: src/emc/usr_intf/axis/scripts/axis.py:193 -msgid "Control-R" -msgstr "Ctrl-R" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:22 +#, fuzzy +msgid "Machinekit Debug Level" +msgstr "Seleccionar nivel de _depuracion" -#: src/emc/usr_intf/axis/scripts/axis.py:193 -msgid "Reload program" -msgstr "Volver a cargar programa" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:23 +#, fuzzy +msgid "debuglevel" +msgstr "Seleccionar nivel de _depuracion" -#: src/emc/usr_intf/axis/scripts/axis.py:194 +#: src/emc/usr_intf/axis/scripts/debuglevel.py:36 #, fuzzy -msgid "Control-S" -msgstr "Ctrl-K" +msgid "Configuration *" +msgstr "Mostrar configuracion _HAl" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:37 +msgid "Version Numbers *" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:38 +msgid "NML *" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:39 +msgid "RCS *" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:40 +msgid "Task Issue" +msgstr "Tipo de Tarea" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:41 +msgid "Motion Time" +msgstr "Tiempo de movimiento" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:43 +msgid "Interpreter List" +msgstr "Lista de intérprete" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:47 +#, python-format +msgid "" +"Inifile setting for this debug level:\n" +"[EMC]DEBUG=0x%08x" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:81 +msgid " * This option can only be enabled in the inifile" +msgstr "" + +#: share/axis/tcl/axis.tcl:52 +#, fuzzy +msgid "_Open..." +msgstr "_Abrir" + +#: share/axis/tcl/axis.tcl:56 +#, fuzzy +msgid "Recent _Files" +msgstr "Todos los archivos" + +#: share/axis/tcl/axis.tcl:60 +msgid "_Edit..." +msgstr "" + +#: share/axis/tcl/axis.tcl:63 +msgid "Ctrl-R" +msgstr "Ctrl-R" + +#: share/axis/tcl/axis.tcl:65 +msgid "_Reload" +msgstr "_recargar " + +#: share/axis/tcl/axis.tcl:68 +#, fuzzy +msgid "Ctrl-S" +msgstr "Ctrl-R" -#: src/emc/usr_intf/axis/scripts/axis.py:194 -msgid "Save g-code as" +#: share/axis/tcl/axis.tcl:70 +msgid "_Save gcode as..." msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:195 -msgid "Run program" -msgstr "Ejecutar Programa" +#: share/axis/tcl/axis.tcl:74 +msgid "_Properties..." +msgstr "_Propiedades" -#: src/emc/usr_intf/axis/scripts/axis.py:196 -msgid "Step program" -msgstr "Ejecutar programa por paso" +#: share/axis/tcl/axis.tcl:80 +msgid "Edit _tool table..." +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:197 -msgid "Pause program" -msgstr "Pausar programa" +#: share/axis/tcl/axis.tcl:84 +#, fuzzy +msgid "Reload tool ta_ble" +msgstr "Volver a vargar ta_bla de herramientas" -#: src/emc/usr_intf/axis/scripts/axis.py:198 -msgid "Resume program" -msgstr "Resumir programa" +#: share/axis/tcl/axis.tcl:90 +msgid "_Ladder Editor..." +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:199 -msgid "Stop running program, or" -msgstr "Detener programa en proceso, o" +#: share/axis/tcl/axis.tcl:102 +msgid "Toggle _Emergency Stop" +msgstr "Boton de _emergencia activar/desactivar" -#: src/emc/usr_intf/axis/scripts/axis.py:200 -msgid "stop loading program preview" -msgstr "Detener carga de vista preliminar del programa" +#: share/axis/tcl/axis.tcl:107 +msgid "Toggle _Machine Power" +msgstr "_Maquina encender/apagar" -#: src/emc/usr_intf/axis/scripts/axis.py:202 -msgid "Toggle mist" -msgstr "Neblina encender/apagar" +#: share/axis/tcl/axis.tcl:114 +msgid "_Run program" +msgstr "Ejecuta_r programa " -#: src/emc/usr_intf/axis/scripts/axis.py:203 -msgid "Toggle flood" -msgstr "Medio enfriador activar/desactivar" +#: share/axis/tcl/axis.tcl:118 +#, fuzzy +msgid "Ru_n from selected line" +msgstr "Seleccionar linea o mover panorama" -#: src/emc/usr_intf/axis/scripts/axis.py:204 -msgid "Spindle brake off" -msgstr "Apagar freno de portabrocas" +#: share/axis/tcl/axis.tcl:123 +#, fuzzy +msgid "S_tep" +msgstr "Pa_so" -#: src/emc/usr_intf/axis/scripts/axis.py:205 -msgid "Shift-B" -msgstr "Shift-B" +#: share/axis/tcl/axis.tcl:128 +#, fuzzy +msgid "_Pause" +msgstr "_Pausa" -#: src/emc/usr_intf/axis/scripts/axis.py:205 -msgid "Spindle brake on" -msgstr "Encender freno del Portabrocas" +#: share/axis/tcl/axis.tcl:133 +#, fuzzy +msgid "Re_sume" +msgstr "_Resumir" -#: src/emc/usr_intf/axis/scripts/axis.py:206 -msgid "Turn spindle clockwise" -msgstr "Girar portabrocas en sentido de las agujas del reloj" +#: share/axis/tcl/axis.tcl:143 +msgid "Stop at M_1" +msgstr "Detener en M_1" -#: src/emc/usr_intf/axis/scripts/axis.py:207 -#, fuzzy -msgid "Turn spindle counterclockwise" -msgstr " Portabrocas gira en sentido contrario de las agujas del reloj [F10]" +#: share/axis/tcl/axis.tcl:148 +msgid "Skip lines with '_/'" +msgstr "Saltar filas con '_/'" -#: src/emc/usr_intf/axis/scripts/axis.py:208 -msgid "Turn spindle more slowly" -msgstr "Girar Portabrocas mas despacio" +#: share/axis/tcl/axis.tcl:153 +msgid "Ctrl-M" +msgstr "Ctrl-M" -#: src/emc/usr_intf/axis/scripts/axis.py:209 -msgid "Turn spindle more quickly" -msgstr "Girar Portabrocas mas rapido" +#: share/axis/tcl/axis.tcl:155 +msgid "Clear MDI h_istory" +msgstr "Borrar historial de MD_I" -#: src/emc/usr_intf/axis/scripts/axis.py:211 -msgid "Control-K" -msgstr "Ctrl-K" +#: share/axis/tcl/axis.tcl:157 +msgid "Ctrl-H" +msgstr "Ctrl-H" -#: src/emc/usr_intf/axis/scripts/axis.py:211 -msgid "Clear live plot" -msgstr "Borrar barra de herramientas" +#: share/axis/tcl/axis.tcl:159 +msgid "Copy from MDI hist_ory" +msgstr "C_opiar de historial MDI" -#: src/emc/usr_intf/axis/scripts/axis.py:212 -msgid "Cycle among preset views" -msgstr "Cambiar perspectivas en ciclos" +#: share/axis/tcl/axis.tcl:161 +msgid "Ctrl-Shift-H" +msgstr "Ctrl-Shift-H" -#: src/emc/usr_intf/axis/scripts/axis.py:213 -#, fuzzy -msgid "Cycle among preview, DRO, and user tabs" -msgstr "Cambiar perspectivas en ciclos" +#: share/axis/tcl/axis.tcl:163 +msgid "Paste to MDI histor_y" +msgstr "Pegar en historial MDI" -#: src/emc/usr_intf/axis/scripts/axis.py:215 +#: share/axis/tcl/axis.tcl:169 #, fuzzy -msgid "Ctrl-Space" -msgstr "Ctrl-Pos1" - -#: src/emc/usr_intf/axis/scripts/axis.py:215 -msgid "Clear notifications" -msgstr "" +msgid "_Calibration" +msgstr "_Calibración" -#: src/emc/usr_intf/axis/scripts/axis.py:836 -#, python-format -msgid "Unknown tool %d" -msgstr "Herramienta desconocida %d" +#: share/axis/tcl/axis.tcl:173 +#, fuzzy +msgid "Show _Hal Configuration" +msgstr "Mostrar configuracion _HAl" -#: src/emc/usr_intf/axis/scripts/axis.py:838 -msgid "No tool" -msgstr "Sin herramienta" +#: share/axis/tcl/axis.tcl:177 +#, fuzzy +msgid "H_al Meter" +msgstr "H_AL-metro" -#: src/emc/usr_intf/axis/scripts/axis.py:840 -#, fuzzy, python-format -msgid "Tool %(tool)d, offset %(zo)g, diameter %(dia)g" -msgstr "Herramienta %d, Mover Herramienta %g, Diametro %g" +#: share/axis/tcl/axis.tcl:181 +#, fuzzy +msgid "Ha_l Scope" +msgstr "HA_L-escopio" -#: src/emc/usr_intf/axis/scripts/axis.py:842 -#, fuzzy, python-format -msgid "Tool %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" -msgstr "Herramienta %d, zo %g, xo %g, Diam. %g" +#: share/axis/tcl/axis.tcl:185 +#, fuzzy +msgid "Sho_w Machinekit Status" +msgstr "Estatus del EMC..." -#: src/emc/usr_intf/axis/scripts/axis.py:1013 -msgid "Filtering..." -msgstr "Procesando..." +#: share/axis/tcl/axis.tcl:189 +#, fuzzy +msgid "Set _Debug Level" +msgstr "Seleccionar nivel de _depuracion" -#: src/emc/usr_intf/axis/scripts/axis.py:1073 +#: share/axis/tcl/axis.tcl:195 #, fuzzy -msgid "Filter failed" -msgstr "Filtro_del Programa %r fallido" +msgid "Homin_g" +msgstr "Restaurar" -#: src/emc/usr_intf/axis/scripts/axis.py:1074 -#, python-format -msgid "" -"The program %(program)r exited with code %(code)d. Any error messages it " -"produced are shown below:" +#: share/axis/tcl/axis.tcl:199 +msgid "_Unhoming" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1139 -#, python-format -msgid "G-Code error in %s" -msgstr "Error de codigo-G en %s" +#: share/axis/tcl/axis.tcl:203 +msgid "_Zero coordinate system" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1140 -#, fuzzy, python-format -msgid "" -"Near line %(seq)d of %(f)s:\n" -"%(error_str)s" +#: share/axis/tcl/axis.tcl:207 +msgid "P1 G5_4" msgstr "" -"Acercar linea %d en %s:\n" -"%s" -#: src/emc/usr_intf/axis/scripts/axis.py:1292 -#: src/emc/usr_intf/axis/scripts/axis.py:2725 share/axis/tcl/axis.tcl:1092 -#: share/axis/tcl/axis.tcl:1094 share/axis/tcl/axis.tcl:2144 -msgid "Continuous" -msgstr "Continuo" +#: share/axis/tcl/axis.tcl:211 +msgid "P2 G5_5" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1403 -msgid "Ok" +#: share/axis/tcl/axis.tcl:215 +msgid "P3 G5_6" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1546 -msgid "T Tool Table" +#: share/axis/tcl/axis.tcl:219 +msgid "P4 G5_7" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1557 -#: src/emc/usr_intf/axis/scripts/axis.py:1730 -#: src/emc/usr_intf/stepconf/stepconf.py:1691 -#: src/emc/usr_intf/stepconf/stepconf.py:2235 -msgid "in" +#: share/axis/tcl/axis.tcl:223 +msgid "P5 G5_8" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1560 -msgid " radius" +#: share/axis/tcl/axis.tcl:227 +msgid "P6 G5_9" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1562 -msgid " diameter" +#: share/axis/tcl/axis.tcl:231 +msgid "P7 G59._1" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1563 -msgid "°" +#: share/axis/tcl/axis.tcl:235 +msgid "P8 G59._2" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1572 -msgid "Coordinate System:" +#: share/axis/tcl/axis.tcl:239 +msgid "P9 G59._3" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1588 -msgid "fixture" +#: share/axis/tcl/axis.tcl:243 +msgid "_G92" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1589 -msgid "workpiece" +#: share/axis/tcl/axis.tcl:251 +msgid "Tool touch off to wor_kpiece" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1605 -msgid "Name:" -msgstr "Archivo:" +#: share/axis/tcl/axis.tcl:257 +msgid "Tool touch off to _fixture" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1605 -msgid "Size:" -msgstr "Tamańo:" +#: share/axis/tcl/axis.tcl:265 +msgid "_Top view" +msgstr "Perspectiva superior" -#: src/emc/usr_intf/axis/scripts/axis.py:1606 -msgid "Tool order:" -msgstr "Ordenar herramienta" +#: share/axis/tcl/axis.tcl:272 +msgid "_Rotated Top view" +msgstr "Perspectiva superior _rotada" -#: src/emc/usr_intf/axis/scripts/axis.py:1606 -msgid "Rapid distance:" -msgstr "Distancia en marcha rapida:" +#: share/axis/tcl/axis.tcl:279 +msgid "_Side view" +msgstr "Per_spectiva lateral" -#: src/emc/usr_intf/axis/scripts/axis.py:1607 -msgid "Feed distance:" -msgstr "Distancia:" +#: share/axis/tcl/axis.tcl:286 +msgid "_Front view" +msgstr "Perspectiva _frontal" -#: src/emc/usr_intf/axis/scripts/axis.py:1607 -msgid "Total distance:" -msgstr "Distancia total:" +#: share/axis/tcl/axis.tcl:293 +msgid "_Perspective view" +msgstr "Vista en _Perspectivas" -#: src/emc/usr_intf/axis/scripts/axis.py:1608 -msgid "Run time:" -msgstr "Tiempo:" +#: share/axis/tcl/axis.tcl:302 +msgid "Display _Inches" +msgstr "_Pulgadas" + +#: share/axis/tcl/axis.tcl:309 +msgid "Display _MM" +msgstr "Mostrar _MM" + +#: share/axis/tcl/axis.tcl:316 +msgid "S_how program" +msgstr "Mostrar vista preliminar" + +#: share/axis/tcl/axis.tcl:321 +#, fuzzy +msgid "Show program r_apids" +msgstr "Mostrar vista preliminar" + +#: share/axis/tcl/axis.tcl:326 +#, fuzzy +msgid "Alpha-_blend program" +msgstr "Abrir programa" + +#: share/axis/tcl/axis.tcl:331 +msgid "Sho_w live plot" +msgstr "Mostrar barra de herramientas" + +#: share/axis/tcl/axis.tcl:336 +msgid "Show too_l" +msgstr "_Mostrar herramienta" + +#: share/axis/tcl/axis.tcl:341 +#, fuzzy +msgid "Show e_xtents" +msgstr "_Mostrar medidas" + +#: share/axis/tcl/axis.tcl:345 +msgid "_Grid" +msgstr "" + +#: share/axis/tcl/axis.tcl:350 +#, fuzzy +msgid "Show o_ffsets" +msgstr "_Mostrar medidas" + +#: share/axis/tcl/axis.tcl:355 +#, fuzzy +msgid "Sh_ow machine limits" +msgstr "El programa excedio limite de la Maquina" + +#: share/axis/tcl/axis.tcl:360 +#, fuzzy +msgid "Show v_elocity" +msgstr "Mostrar barra de herramientas" + +#: share/axis/tcl/axis.tcl:365 +msgid "Show _distance to go" +msgstr "Mostrar _distancia" + +#: share/axis/tcl/axis.tcl:370 +msgid "Large coordinate fo_nt" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1608 -msgid "X bounds:" -msgstr "Area X:" +#: share/axis/tcl/axis.tcl:373 +msgid "Ctrl-K" +msgstr "Ctrl-K" -#: src/emc/usr_intf/axis/scripts/axis.py:1609 -msgid "Y bounds:" -msgstr "Area Y:" +#: share/axis/tcl/axis.tcl:375 +msgid "_Clear live plot" +msgstr "Eliminar barra de herramienta" -#: src/emc/usr_intf/axis/scripts/axis.py:1609 +#: share/axis/tcl/axis.tcl:384 #, fuzzy -msgid "Z bounds:" -msgstr "Area C:" +msgid "Show commanded position" +msgstr "Mostrar posicion" -#: src/emc/usr_intf/axis/scripts/axis.py:1610 +#: share/axis/tcl/axis.tcl:391 #, fuzzy -msgid "A bounds:" -msgstr "Area C:" +msgid "Show actual position" +msgstr "Mostrar posicion actual" -#: src/emc/usr_intf/axis/scripts/axis.py:1610 +#: share/axis/tcl/axis.tcl:400 #, fuzzy -msgid "B bounds:" -msgstr "Area C:" - -#: src/emc/usr_intf/axis/scripts/axis.py:1611 -msgid "C bounds:" -msgstr "Area C:" - -#: src/emc/usr_intf/axis/scripts/axis.py:1635 -#, python-format -msgid "Program exceeds machine minimum on axis %s" -msgstr "El programa excedio el limite inferior en Eje %s" +msgid "Show machine position" +msgstr "Mostrar posicion absoluta" -#: src/emc/usr_intf/axis/scripts/axis.py:1638 -#, python-format -msgid "Program exceeds machine maximum on axis %s" -msgstr "El Programa excedio el limite superior en Eje %s" +#: share/axis/tcl/axis.tcl:407 +#, fuzzy +msgid "Show relative position" +msgstr "Mostrar posicion relativa" -#: src/emc/usr_intf/axis/scripts/axis.py:1643 -msgid "Program exceeds machine limits" -msgstr "El programa excedio limite de la Maquina" +#: share/axis/tcl/axis.tcl:416 +msgid "Joint mode" +msgstr "Modalidad-Joint " -#: src/emc/usr_intf/axis/scripts/axis.py:1646 -msgid "Run Anyway" -msgstr "Ejecutar de todas formas" +#: share/axis/tcl/axis.tcl:423 +#, fuzzy +msgid "World mode" +msgstr "Modalidad-Joint " -#: src/emc/usr_intf/axis/scripts/axis.py:1708 -msgid "No file loaded" +#: share/axis/tcl/axis.tcl:431 +msgid "_Off" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1716 -#, python-format -msgid "generated from %s" +#: share/axis/tcl/axis.tcl:437 +msgid "_Custom" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1722 -#, python-format -msgid "" -"%(size)s bytes\n" -"%(lines)s gcode lines" +#: share/axis/tcl/axis.tcl:443 +msgid "User_0" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1748 -#, python-format -msgid "%.1f minutes" +#: share/axis/tcl/axis.tcl:447 +msgid "User_1" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1750 -#, fuzzy, python-format -msgid "%d seconds" -msgstr "Correr segundo eje" - -#: src/emc/usr_intf/axis/scripts/axis.py:1758 -#, fuzzy, python-format -msgid "%(a)f to %(b)f = %(diff)f %(units)s" -msgstr "%f hasta %f = %f %s" - -#: src/emc/usr_intf/axis/scripts/axis.py:1759 -msgid "G-Code Properties" -msgstr "Propiedades de codigo-G %s" - -#: src/emc/usr_intf/axis/scripts/axis.py:1883 -msgid "All machinable files" -msgstr "Todos los Archivos ejecutables" - -#: src/emc/usr_intf/axis/scripts/axis.py:1884 -#: src/emc/usr_intf/axis/scripts/axis.py:2464 -msgid "rs274ngc files" -msgstr "rs274ngc-Archivos" +#: share/axis/tcl/axis.tcl:451 +msgid "User_2" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1899 -msgid "axis cannot accept remote command while running" +#: share/axis/tcl/axis.tcl:455 +msgid "User_3" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2255 -msgid "Axis is already homed, are you sure you want to re-home?" +#: share/axis/tcl/axis.tcl:459 +msgid "User_4" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2268 -msgid "This axis is already homed, are you sure you want to re-home?" +#: share/axis/tcl/axis.tcl:463 +msgid "User_5" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2308 share/axis/tcl/axis.tcl:1108 -msgid "Touch Off" -msgstr "Regular Offset" +#: share/axis/tcl/axis.tcl:467 +msgid "User_6" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2309 -#, fuzzy, python-format -msgid "Enter %s coordinate relative to %%s:" -msgstr "Introducir %s-coordenada relativa a la pieza:" +#: share/axis/tcl/axis.tcl:471 +msgid "User_7" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2476 -msgid "Error saving file" +#: share/axis/tcl/axis.tcl:475 +msgid "User_8" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2859 -#: src/emc/usr_intf/touchy/touchy.glade:577 -msgid "Home All" -msgstr "Restaurar todos los ejes" +#: share/axis/tcl/axis.tcl:479 +msgid "User_9" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2861 -msgid "Home all axes [Ctrl-Home]" -msgstr "Restaurar todos los ejes [Ctrl-Pos1]" +#: share/axis/tcl/axis.tcl:491 +msgid "_About AXIS" +msgstr "Sobre AXIS" -#: src/emc/usr_intf/axis/scripts/axis.py:2864 -msgid "Home All Axes" -msgstr "Restaurar todos los ejes" +#: share/axis/tcl/axis.tcl:495 +msgid "Quick _Reference" +msgstr "_Referencia rapida" -#: src/emc/usr_intf/axis/scripts/axis.py:2871 +#: share/axis/tcl/axis.tcl:505 #, fuzzy -msgid "Unhome All Axes" -msgstr "Restaurar todos los ejes" - -#: src/emc/usr_intf/axis/scripts/axis.py:2895 -#, python-format -msgid "Home Axis _%s" -msgstr "Restaurar _%s-Eje" - -#: src/emc/usr_intf/axis/scripts/axis.py:2897 -#, fuzzy, python-format -msgid "Unhome Axis _%s" -msgstr "Restaurar _%s-Eje" - -#: src/emc/usr_intf/axis/scripts/axis.py:3040 -msgid "Run from here" -msgstr "" +msgid "_Machine" +msgstr "Coordenada absoluta" -#: src/emc/usr_intf/axis/scripts/axis.py:3335 -msgid "Error in ~/.axisrc" -msgstr "Error en ~/.axisrc" +#: share/axis/tcl/axis.tcl:509 +#, fuzzy +msgid "_View" +msgstr "Perspectiva" -#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:102 -msgid "LinuxCNC Status" +#: share/axis/tcl/axis.tcl:513 +msgid "_User" msgstr "" -#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:118 -#, fuzzy -msgid "Copy All" -msgstr "Restaurar todos los ejes" +#: share/axis/tcl/axis.tcl:526 +msgid "Toggle Emergency Stop [F1]" +msgstr "Boton de Emergencia activar/desactivar [F1]" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:29 -#, python-format -msgid "Insert tool %d and click continue when ready" -msgstr "Insertar pieza %d y clickear continuar" +#: share/axis/tcl/axis.tcl:535 +msgid "Toggle Machine power [F2]" +msgstr "Máquina encender/apagar [F2]" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:31 -msgid "Remove the tool and click continue when ready" -msgstr "Remover pieza y clickear continuar" +#: share/axis/tcl/axis.tcl:546 +msgid "Open G-Code file [O]" +msgstr "Abrir archovo de codigo-G [O]" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 -#: src/emc/usr_intf/touchy/mdi.py:49 -msgid "Tool change" -msgstr "Cambio de pieza" +#: share/axis/tcl/axis.tcl:554 +msgid "Reopen current file [Control-R]" +msgstr "Volver a cargar archivo actual [Ctrl-R]" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 -msgid "Continue" -msgstr "Continuar" +#: share/axis/tcl/axis.tcl:564 +msgid "Begin executing current file [R]" +msgstr "Ejecutar archivo actual [R]" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:55 -msgid "AXIS Manual Toolchanger" -msgstr "Cambio manual de herramienta AXIS" +#: share/axis/tcl/axis.tcl:572 +msgid "Execute next line [T]" +msgstr "Ejecutar siguiente fila [T]" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:59 -msgid "" -"This window is part of the AXIS manual toolchanger. It is safe to close or " -"iconify this window, or it will close automatically after a few seconds." -msgstr "" -"Esta ventana es parte del \" Cambiador manual de herramienta AXIS \". puede " -"ser cerrada, minimizada o automaticamente se cerrara despues deunos segundos " +#: share/axis/tcl/axis.tcl:580 +msgid "Pause [P] / resume [S] execution" +msgstr "Pausa [P] / resumir [S]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:507 -#, python-format -msgid "%s: Image to gcode" -msgstr "%s: Transformar imagen a codigo-G" +#: share/axis/tcl/axis.tcl:588 +msgid "Stop program execution [ESC]" +msgstr "Detener Programa [ESC]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:508 -msgid "Image to gcode" -msgstr "Transformar imagen a codigo-G" +#: share/axis/tcl/axis.tcl:598 +#, fuzzy +msgid "Toggle skip lines with '/' [Alt-M /]" +msgstr "Saltar filas con '_/'" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:518 -#, fuzzy, python-format -msgid "" -"Image size: %(w)d x %(h)d pixels\n" -"Minimum pixel value: %(min)d\n" -"Maximum pixel value: %(max)d" +#: share/axis/tcl/axis.tcl:605 +msgid "Toggle optional pause [Alt-M 1]" msgstr "" -"Tamanho de imagen: %d x %d Resolucion
Luminosidad minima:%d
Maxima " -"Luminosidad: %d" - -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 -msgid "G20 (in)" -msgstr "G20 (in)" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 -msgid "G21 (mm)" -msgstr "G21 (mm)" +#: share/axis/tcl/axis.tcl:614 src/emc/usr_intf/gmoccapy/gmoccapy.glade:549 +#, fuzzy +msgid "Zoom in" +msgstr "Ampliar [+]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 -#: src/emc/usr_intf/touchy/emc_interface.py:417 -msgid "None" -msgstr "Ninguno" +#: share/axis/tcl/axis.tcl:622 src/emc/usr_intf/gmoccapy/gmoccapy.glade:567 +#, fuzzy +msgid "Zoom out" +msgstr "Disminuir [-]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 -msgid "White" -msgstr "" +#: share/axis/tcl/axis.tcl:630 +msgid "Top view" +msgstr "Perspectiva superior" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +#: share/axis/tcl/axis.tcl:638 #, fuzzy -msgid "Black" -msgstr "Freno" +msgid "Rotated top view" +msgstr "Perspectiva superior _rotada" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Rows" -msgstr "Filas" +#: share/axis/tcl/axis.tcl:646 +msgid "Side view" +msgstr "Perspectiva lateral" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Columns" -msgstr "Columnas" +#: share/axis/tcl/axis.tcl:654 +#, fuzzy +msgid "Front view" +msgstr "Perspectiva _frontal" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Rows then Columns" -msgstr "Primero filas despues columnas" +#: share/axis/tcl/axis.tcl:662 +msgid "Perspective view" +msgstr "Vista en perspectiva" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Columns then Rows" +#: share/axis/tcl/axis.tcl:670 +msgid "Toggle between Drag and Rotate Mode [D]" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Positive" -msgstr "Positivo" +#: share/axis/tcl/axis.tcl:685 +msgid "Clear live plot [Ctrl-K]" +msgstr "Eliminar barra de herramientas [Ctrl-K]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Negative" -msgstr "Negativo" +#: share/axis/tcl/axis.tcl:836 +msgid "Manual Control [F3]" +msgstr "Control manual [F3]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Alternating" -msgstr "Alternando" +#: share/axis/tcl/axis.tcl:837 +msgid "MDI [F5]" +msgstr "MDI" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Up Milling" -msgstr "Fresar avanzando" +#: share/axis/tcl/axis.tcl:851 share/axis/tcl/axis.tcl:2158 +#: share/axis/tcl/axis.tcl:2328 +#, fuzzy +msgid "Axis:" +msgstr "Eje:" + +#: share/axis/tcl/axis.tcl:1172 src/emc/usr_intf/gscreen/gscreen.glade:2944 +#, fuzzy +msgid "Home Axis" +msgstr "Restaurar _%s-Eje" + +#: share/axis/tcl/axis.tcl:1246 +#, fuzzy +msgid "Spindle:" +msgstr "Portabrocas:" + +#: share/axis/tcl/axis.tcl:1293 src/emc/usr_intf/touchy/touchy.glade:946 +#: src/emc/usr_intf/stepconf/main_page.glade:406 +#: src/emc/usr_intf/gscreen/gscreen.glade:4067 +msgid "-" +msgstr "-" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Down Milling" -msgstr "Fresar hacia abajo " +#: share/axis/tcl/axis.tcl:1307 src/emc/usr_intf/stepconf/main_page.glade:403 +#: src/emc/usr_intf/gscreen/gscreen.glade:4056 +msgid "+" +msgstr "+" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "Ball End" -msgstr "Fresador esferico" +#: share/axis/tcl/axis.tcl:1312 +#, fuzzy +msgid "Brake" +msgstr "Freno" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "Flat End" -msgstr "Fresador plano" +#: share/axis/tcl/axis.tcl:1359 +#, fuzzy +msgid "Coolant:" +msgstr "Enfriador:" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +#: share/axis/tcl/axis.tcl:1364 #, fuzzy -msgid "30 Degree" -msgstr "Fresador de 60°" +msgid "Mist" +msgstr "Neblina" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "45 Degree" -msgstr "Fresador de 45°" +#: share/axis/tcl/axis.tcl:1369 +#, fuzzy +msgid "Flood" +msgstr "Enfriador" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "60 Degree" -msgstr "Fresador de 60°" +#: share/axis/tcl/axis.tcl:1441 +msgid "History:" +msgstr "Historial:" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 -msgid "Secondary" -msgstr "Secundario" +#: share/axis/tcl/axis.tcl:1464 +#, fuzzy +msgid "MDI Command:" +msgstr "dirigido" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 -msgid "Full" -msgstr "Full" +#: share/axis/tcl/axis.tcl:1473 +msgid "Go" +msgstr "Ejecutar" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:654 -msgid "Invert Image" -msgstr "Invertir Imagen" +#: share/axis/tcl/axis.tcl:1479 +#, fuzzy +msgid "Active G-Codes:" +msgstr "Activar Codigo-G:" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:655 -msgid "Normalize Image" -msgstr "Normalizar imagen" +#: share/axis/tcl/axis.tcl:1557 src/emc/usr_intf/gmoccapy/gmoccapy.glade:771 +#, fuzzy +msgid "Preview" +msgstr "Perspectiva lateral" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:656 -msgid "Extend Image Border" +#: share/axis/tcl/axis.tcl:1558 +msgid "DRO" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:657 +#: share/axis/tcl/axis.tcl:1645 share/axis/tcl/axis.tcl:1658 #, fuzzy -msgid "Pixel Size (Units)" -msgstr "Tamanho del Pixel" - -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:658 -msgid "Depth (units)" -msgstr "Profundidad (Unidad)" +msgid "Jog Speed:" +msgstr "Velocidad:" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:659 -msgid "Tolerance (units)" -msgstr "Tolerancia (Unidad)" +#: share/axis/tcl/axis.tcl:1670 +msgid "Max Velocity:" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:660 +#: share/axis/tcl/axis.tcl:1699 #, fuzzy -msgid "Stepover (pixels)" -msgstr "Y-Resolucion (Pixel)" +msgid "Spindle Override:" +msgstr "Controlar portabrocas:" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:661 -msgid "Tool Diameter (units)" -msgstr "Diametro de pieza (Unidad)" +#: share/axis/tcl/axis.tcl:1701 share/axis/tcl/axis.tcl:1741 +#: share/axis/tcl/axis.tcl:1779 src/emc/usr_intf/pncconf/pncconf.glade:2834 +#: src/emc/usr_intf/pncconf/pncconf.glade:2845 +#: src/emc/usr_intf/pncconf/pncconf.glade:2949 +#: src/emc/usr_intf/pncconf/pncconf.glade:2962 +#: src/emc/usr_intf/pncconf/pncconf.glade:2975 +#: src/emc/usr_intf/pncconf/pncconf.glade:2988 +#: src/emc/usr_intf/pncconf/pncconf.glade:3001 +#: src/emc/usr_intf/pncconf/pncconf.glade:3014 +#: src/emc/usr_intf/pncconf/pncconf.glade:3127 +#: src/emc/usr_intf/pncconf/pncconf.glade:3140 +#: src/emc/usr_intf/pncconf/pncconf.glade:3153 +#: src/emc/usr_intf/pncconf/pncconf.glade:3166 +#: src/emc/usr_intf/pncconf/pncconf.glade:3179 +#: src/emc/usr_intf/pncconf/pncconf.glade:3192 +#: src/emc/usr_intf/pncconf/pncconf.glade:3205 +#: src/emc/usr_intf/pncconf/pncconf.glade:3218 +#: src/emc/usr_intf/pncconf/pncconf.glade:3715 +#: src/emc/usr_intf/pncconf/pncconf.glade:3726 +#: src/emc/usr_intf/pncconf/pncconf.glade:3830 +#: src/emc/usr_intf/pncconf/pncconf.glade:3843 +#: src/emc/usr_intf/pncconf/pncconf.glade:3856 +#: src/emc/usr_intf/pncconf/pncconf.glade:3869 +#: src/emc/usr_intf/pncconf/pncconf.glade:3882 +#: src/emc/usr_intf/pncconf/pncconf.glade:3895 +#: src/emc/usr_intf/pncconf/pncconf.glade:4008 +#: src/emc/usr_intf/pncconf/pncconf.glade:4021 +#: src/emc/usr_intf/pncconf/pncconf.glade:4034 +#: src/emc/usr_intf/pncconf/pncconf.glade:4047 +#: src/emc/usr_intf/pncconf/pncconf.glade:4060 +#: src/emc/usr_intf/pncconf/pncconf.glade:4073 +#: src/emc/usr_intf/pncconf/pncconf.glade:4086 +#: src/emc/usr_intf/pncconf/pncconf.glade:4099 +#: src/emc/usr_intf/pncconf/pncconf.glade:4596 +#: src/emc/usr_intf/pncconf/pncconf.glade:4607 +#: src/emc/usr_intf/pncconf/pncconf.glade:4711 +#: src/emc/usr_intf/pncconf/pncconf.glade:4724 +#: src/emc/usr_intf/pncconf/pncconf.glade:4737 +#: src/emc/usr_intf/pncconf/pncconf.glade:4750 +#: src/emc/usr_intf/pncconf/pncconf.glade:4763 +#: src/emc/usr_intf/pncconf/pncconf.glade:4776 +#: src/emc/usr_intf/pncconf/pncconf.glade:4889 +#: src/emc/usr_intf/pncconf/pncconf.glade:4902 +#: src/emc/usr_intf/pncconf/pncconf.glade:4915 +#: src/emc/usr_intf/pncconf/pncconf.glade:4928 +#: src/emc/usr_intf/pncconf/pncconf.glade:4941 +#: src/emc/usr_intf/pncconf/pncconf.glade:4954 +#: src/emc/usr_intf/pncconf/pncconf.glade:4967 +#: src/emc/usr_intf/pncconf/pncconf.glade:4980 +#: src/emc/usr_intf/pncconf/pncconf.glade:5631 +#: src/emc/usr_intf/pncconf/pncconf.glade:5643 +#: src/emc/usr_intf/pncconf/pncconf.glade:5690 +msgid "%" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:662 -msgid "Tool Type" -msgstr "Tipo de pieza" +#: share/axis/tcl/axis.tcl:1777 +#, fuzzy +msgid "Rapid Override:" +msgstr "Controlar portabrocas:" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:663 -msgid "Feed Rate (units per minute)" -msgstr "Avance (Unidad por minuto)" +#: share/axis/tcl/axis.tcl:1819 +#, fuzzy +msgid "" +"Machinekit/AXIS version $version\n" +"\n" +"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff " +"Epler and Chris Radek.\n" +"\n" +"This is free software, and you are welcome to redistribute it under certain " +"conditions. See the file COPYING, included with Machinekit.\n" +"\n" +"Visit the Machinekit web site: " +msgstr "" +"LinuxCNC/AXIS Version $version\n" +"\n" +"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff " +"Epler and Chris Radek.\n" +"\n" +"This is free software, and you are welcome to redistribute it under certain " +"conditions. See the file COPYING, included with AXIS.\n" +"\n" +"Deutsche Übersetzung: Alex Joni, Florian Hahn, Ingrid Kirst, Frank " +"Jungclaus\n" +"\n" +"Besuchen Sie die LinuxCNC Webseite: " -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:664 +#: share/axis/tcl/axis.tcl:1847 #, fuzzy -msgid "Plunge Feed Rate (units per minute)" -msgstr "Avance (Unidad por minuto)" +msgid "About AXIS" +msgstr "Sobre AXIS" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:666 -msgid "Safety Height (units)" -msgstr "Altura de seguridad (Unidad)" +#: share/axis/tcl/axis.tcl:1876 +msgid "AXIS Quick Reference" +msgstr "Acceso directo a AXIS " -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:667 +#: share/axis/tcl/axis.tcl:2017 +msgid "AXIS with MachineKit $::version on $::machine" +msgstr "" + +#: share/axis/tcl/axis.tcl:2019 #, fuzzy -msgid "Scan Pattern" -msgstr "Escanear patrón" +msgid "(no file)" +msgstr "AXIS (Vacio)" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:668 +#: share/axis/tcl/axis.tcl:2091 share/axis/tcl/axis.tcl:2096 #, fuzzy -msgid "Scan Direction" -msgstr "Escanear dirección" +msgid "Position:" +msgstr "Posicion:" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:669 +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/gscreen/gscreen.py:3516 #, fuzzy -msgid "Lace Bounding" -msgstr "Límite de cortador" +msgid "Machine" +msgstr "Coordenada absoluta" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:670 +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/touchy/touchy.glade:155 #, fuzzy -msgid "Contact Angle (degrees)" -msgstr "Ángulo de contacto" +msgid "Relative" +msgstr "relativo" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:671 -msgid "Spindle Speed (RPM)" -msgstr "" +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3329 +#, fuzzy +msgid "Actual" +msgstr "Actual" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:672 -msgid "Roughing offset (units, 0=no roughing)" -msgstr "" +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3318 +#, fuzzy +msgid "Commanded" +msgstr "dirigido" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:673 -msgid "Roughing depth per pass (units)" -msgstr "" +#: share/axis/tcl/axis.tcl:2154 share/axis/tcl/axis.tcl:2328 +#, fuzzy +msgid "Joint:" +msgstr "Modalidad-Joint " -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:740 -msgid "image-to-gcode: User pressed cancel" -msgstr "" +#: share/axis/tcl/axis.tcl:2463 +#, fuzzy +msgid "Turn spindle counterclockwise [F10]" +msgstr " Portabrocas gira en sentido contrario de las agujas del reloj [F10]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:753 -msgid "Depth images" -msgstr "Archivos de imagenes" +#: share/axis/tcl/axis.tcl:2464 +msgid "Turn spindle clockwise [F9]" +msgstr " Portabrocas gira en sentido de las agujas del reloj [F9]" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:22 -#, fuzzy -msgid "LinuxCNC Debug Level" -msgstr "Seleccionar nivel de _depuracion" +#: share/axis/tcl/axis.tcl:2465 +msgid "Stop spindle [F9/F10]" +msgstr "Detener Portabrocas [F9/F10]" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:23 +#: share/axis/tcl/axis.tcl:2466 #, fuzzy -msgid "debuglevel" -msgstr "Seleccionar nivel de _depuracion" +msgid "Turn spindle Faster [F12]" +msgstr " Portabrocas gira en sentido de las agujas del reloj [F9]" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:36 +#: share/axis/tcl/axis.tcl:2467 #, fuzzy -msgid "Configuration *" -msgstr "Mostrar configuracion _HAl" +msgid "Turn spindle Slower [F11]" +msgstr " Portabrocas gira en sentido de las agujas del reloj [F9]" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:37 -msgid "Version Numbers *" -msgstr "" +#: share/axis/tcl/axis.tcl:2468 +msgid "Turn spindle brake on [Shift-B] or off [B]" +msgstr "Freno del portabrocas activar [Shift-B] o desactivar [B]" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:38 -msgid "NML *" -msgstr "" +#: share/axis/tcl/axis.tcl:2469 +msgid "Turn flood on or off [F8]" +msgstr "Medio enfriador encender/apagar [F8]" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:39 -msgid "RCS *" -msgstr "" +#: share/axis/tcl/axis.tcl:2470 +msgid "Turn mist on or off [F7]" +msgstr "Neblina encender/apagar [F7]" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:40 -msgid "Task Issue" -msgstr "Tipo de Tarea" +#: share/axis/tcl/axis.tcl:2471 +msgid "Send active axis home [Home]" +msgstr "Restaurar eje activo [HOME]" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:41 -msgid "Motion Time" -msgstr "Tiempo de movimiento" +#: share/axis/tcl/axis.tcl:2472 +msgid "Set G54 offset for active axis [End]" +msgstr "Activar G54 para eje activo" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:43 -msgid "Interpreter List" -msgstr "Lista de intérprete" +#: share/axis/tcl/axis.tcl:2473 +msgid "Activate axis [X]" +msgstr "Activar eje [X]" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:47 -#, python-format -msgid "" -"Inifile setting for this debug level:\n" -"[EMC]DEBUG=0x%08x" -msgstr "" +#: share/axis/tcl/axis.tcl:2474 +msgid "Activate axis [Y]" +msgstr "Activar eje [Y]" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:81 -msgid " * This option can only be enabled in the inifile" -msgstr "" +#: share/axis/tcl/axis.tcl:2475 +msgid "Activate axis [Z]" +msgstr " Activar eje [Z]" -#: share/axis/tcl/axis.tcl:49 -#, fuzzy -msgid "_Open..." -msgstr "_Abrir" +#: share/axis/tcl/axis.tcl:2476 +msgid "Activate axis [A]" +msgstr " Activar eje [A]" -#: share/axis/tcl/axis.tcl:53 -#, fuzzy -msgid "Recent _Files" -msgstr "Todos los archivos" +#: share/axis/tcl/axis.tcl:2477 +msgid "Activate axis [4]" +msgstr " Activar eje [4]" -#: share/axis/tcl/axis.tcl:57 -msgid "_Edit..." -msgstr "" +#: share/axis/tcl/axis.tcl:2478 +msgid "Activate axis [5]" +msgstr " Activar eje [5]" -#: share/axis/tcl/axis.tcl:60 -msgid "Ctrl-R" -msgstr "Ctrl-R" +#: share/axis/tcl/axis.tcl:2479 share/axis/tcl/axis.tcl:2480 +msgid "Jog selected axis" +msgstr "Correr eje activo" + +#: share/axis/tcl/axis.tcl:2482 +msgid "Temporarily allow jogging outside machine limits [L]" +msgstr "Permitir correr maquina temporalmente fuera de limitespredeterminados" + +#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:47 +#, fuzzy +msgid "Spindle CW" +msgstr "Portabrocas:" + +#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:48 +#, fuzzy +msgid "Spindle CCW" +msgstr "Portabrocas:" -#: share/axis/tcl/axis.tcl:62 -msgid "_Reload" -msgstr "_recargar " +#: src/emc/usr_intf/touchy/mdi.py:50 +#, fuzzy +msgid "Set tool number" +msgstr "_Resumir" -#: share/axis/tcl/axis.tcl:65 +#: src/emc/usr_intf/touchy/mdi.py:51 src/emc/usr_intf/gscreen/mdi.py:50 #, fuzzy -msgid "Ctrl-S" -msgstr "Ctrl-R" +msgid "Input control" +msgstr "Control manual" -#: share/axis/tcl/axis.tcl:67 -msgid "_Save gcode as..." +#: src/emc/usr_intf/touchy/mdi.py:54 src/emc/usr_intf/touchy/mdi.py:55 +#: src/emc/usr_intf/gscreen/mdi.py:53 src/emc/usr_intf/gscreen/mdi.py:54 +msgid "Straight rapid" msgstr "" -#: share/axis/tcl/axis.tcl:71 -msgid "_Properties..." -msgstr "_Propiedades" +#: src/emc/usr_intf/touchy/mdi.py:56 src/emc/usr_intf/touchy/mdi.py:57 +#: src/emc/usr_intf/gscreen/mdi.py:55 src/emc/usr_intf/gscreen/mdi.py:56 +msgid "Straight feed" +msgstr "" -#: share/axis/tcl/axis.tcl:77 -msgid "Edit _tool table..." +#: src/emc/usr_intf/touchy/mdi.py:58 src/emc/usr_intf/touchy/mdi.py:59 +#: src/emc/usr_intf/gscreen/mdi.py:57 src/emc/usr_intf/gscreen/mdi.py:58 +msgid "Arc CW" msgstr "" -#: share/axis/tcl/axis.tcl:81 -#, fuzzy -msgid "Reload tool ta_ble" -msgstr "Volver a vargar ta_bla de herramientas" +#: src/emc/usr_intf/touchy/mdi.py:60 src/emc/usr_intf/touchy/mdi.py:61 +#: src/emc/usr_intf/gscreen/mdi.py:59 src/emc/usr_intf/gscreen/mdi.py:60 +msgid "Arc CCW" +msgstr "" -#: share/axis/tcl/axis.tcl:87 -msgid "_Ladder Editor..." +#: src/emc/usr_intf/touchy/mdi.py:62 src/emc/usr_intf/touchy/mdi.py:63 +#: src/emc/usr_intf/gscreen/mdi.py:61 src/emc/usr_intf/gscreen/mdi.py:62 +msgid "Dwell" msgstr "" -#: share/axis/tcl/axis.tcl:99 -msgid "Toggle _Emergency Stop" -msgstr "Boton de _emergencia activar/desactivar" +#: src/emc/usr_intf/touchy/mdi.py:64 src/emc/usr_intf/gscreen/mdi.py:63 +#, fuzzy +msgid "Setup" +msgstr "Estatus del EMC..." -#: share/axis/tcl/axis.tcl:104 -msgid "Toggle _Machine Power" -msgstr "_Maquina encender/apagar" +#: src/emc/usr_intf/touchy/mdi.py:65 src/emc/usr_intf/gscreen/mdi.py:64 +#, fuzzy +msgid "Spindle synchronized feed" +msgstr "Controlar portabrocas:" -#: share/axis/tcl/axis.tcl:111 -msgid "_Run program" -msgstr "Ejecuta_r programa " +#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:65 +msgid "Rigid tap" +msgstr "" -#: share/axis/tcl/axis.tcl:115 -#, fuzzy -msgid "Ru_n from selected line" -msgstr "Seleccionar linea o mover panorama" +#: src/emc/usr_intf/touchy/mdi.py:67 src/emc/usr_intf/touchy/mdi.py:68 +#: src/emc/usr_intf/touchy/mdi.py:69 src/emc/usr_intf/touchy/mdi.py:70 +#: src/emc/usr_intf/gscreen/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:67 +#: src/emc/usr_intf/gscreen/mdi.py:68 src/emc/usr_intf/gscreen/mdi.py:69 +msgid "Probe" +msgstr "" -#: share/axis/tcl/axis.tcl:120 -#, fuzzy -msgid "S_tep" -msgstr "Pa_so" +#: src/emc/usr_intf/touchy/mdi.py:71 src/emc/usr_intf/gscreen/mdi.py:70 +msgid "Radius compensation left" +msgstr "" -#: share/axis/tcl/axis.tcl:125 -#, fuzzy -msgid "_Pause" -msgstr "_Pausa" +#: src/emc/usr_intf/touchy/mdi.py:72 src/emc/usr_intf/gscreen/mdi.py:71 +msgid "Radius compensation right" +msgstr "" -#: share/axis/tcl/axis.tcl:130 -#, fuzzy -msgid "Re_sume" -msgstr "_Resumir" +#: src/emc/usr_intf/touchy/mdi.py:73 src/emc/usr_intf/gscreen/mdi.py:72 +msgid "Radius compensation left, immediate" +msgstr "" -#: share/axis/tcl/axis.tcl:140 -msgid "Stop at M_1" -msgstr "Detener en M_1" +#: src/emc/usr_intf/touchy/mdi.py:74 src/emc/usr_intf/gscreen/mdi.py:73 +msgid "Radius compensation right, immediate" +msgstr "" -#: share/axis/tcl/axis.tcl:145 -msgid "Skip lines with '_/'" -msgstr "Saltar filas con '_/'" +#: src/emc/usr_intf/touchy/mdi.py:75 src/emc/usr_intf/gscreen/mdi.py:74 +msgid "Tool length offset" +msgstr "" -#: share/axis/tcl/axis.tcl:150 -msgid "Ctrl-M" -msgstr "Ctrl-M" +#: src/emc/usr_intf/touchy/mdi.py:76 src/emc/usr_intf/gscreen/mdi.py:75 +msgid "Tool length offset immediate" +msgstr "" -#: share/axis/tcl/axis.tcl:152 -msgid "Clear MDI h_istory" -msgstr "Borrar historial de MD_I" +#: src/emc/usr_intf/touchy/mdi.py:77 src/emc/usr_intf/gscreen/mdi.py:76 +msgid "Motion in unoffset coordinates" +msgstr "" -#: share/axis/tcl/axis.tcl:154 -msgid "Ctrl-H" -msgstr "Ctrl-H" +#: src/emc/usr_intf/touchy/mdi.py:78 src/emc/usr_intf/gscreen/mdi.py:77 +#, fuzzy +msgid "Continuous mode" +msgstr "Avance continuo" -#: share/axis/tcl/axis.tcl:156 -msgid "Copy from MDI hist_ory" -msgstr "C_opiar de historial MDI" +#: src/emc/usr_intf/touchy/mdi.py:80 src/emc/usr_intf/gscreen/mdi.py:79 +msgid "Drill" +msgstr "" -#: share/axis/tcl/axis.tcl:158 -msgid "Ctrl-Shift-H" -msgstr "Ctrl-Shift-H" +#: src/emc/usr_intf/touchy/mdi.py:81 src/emc/usr_intf/gscreen/mdi.py:80 +msgid "Drill with dwell" +msgstr "" -#: share/axis/tcl/axis.tcl:160 -msgid "Paste to MDI histor_y" -msgstr "Pegar en historial MDI" +#: src/emc/usr_intf/touchy/mdi.py:82 src/emc/usr_intf/gscreen/mdi.py:81 +msgid "Peck drill" +msgstr "" -#: share/axis/tcl/axis.tcl:166 -#, fuzzy -msgid "_Calibration" -msgstr "_Calibración" +#: src/emc/usr_intf/touchy/mdi.py:83 src/emc/usr_intf/gscreen/mdi.py:82 +msgid "Chip-break drill" +msgstr "" -#: share/axis/tcl/axis.tcl:170 -#, fuzzy -msgid "Show _Hal Configuration" -msgstr "Mostrar configuracion _HAl" +#: src/emc/usr_intf/touchy/mdi.py:84 src/emc/usr_intf/gscreen/mdi.py:83 +msgid "Bore" +msgstr "" -#: share/axis/tcl/axis.tcl:174 -#, fuzzy -msgid "H_al Meter" -msgstr "H_AL-metro" +#: src/emc/usr_intf/touchy/mdi.py:85 src/emc/usr_intf/gscreen/mdi.py:84 +msgid "Bore with dwell" +msgstr "" -#: share/axis/tcl/axis.tcl:178 -#, fuzzy -msgid "Ha_l Scope" -msgstr "HA_L-escopio" +#: src/emc/usr_intf/touchy/mdi.py:86 src/emc/usr_intf/gscreen/mdi.py:85 +msgid "Offset all coordinate systems" +msgstr "" -#: share/axis/tcl/axis.tcl:182 -#, fuzzy -msgid "Sho_w LinuxCNC Status" -msgstr "Estatus del EMC..." +#: src/emc/usr_intf/touchy/mdi.py:87 src/emc/usr_intf/gscreen/mdi.py:86 +msgid "CSS Mode" +msgstr "" -#: share/axis/tcl/axis.tcl:186 -#, fuzzy -msgid "Set _Debug Level" -msgstr "Seleccionar nivel de _depuracion" +#: src/emc/usr_intf/touchy/emc_interface.py:410 +msgid "CCW" +msgstr "" -#: share/axis/tcl/axis.tcl:192 +#: src/emc/usr_intf/touchy/emc_interface.py:410 #, fuzzy -msgid "Homin_g" -msgstr "Restaurar" +msgid "Stopped" +msgstr "De_tener" -#: share/axis/tcl/axis.tcl:196 -msgid "_Unhoming" +#: src/emc/usr_intf/touchy/emc_interface.py:410 +msgid "CW" msgstr "" -#: share/axis/tcl/axis.tcl:200 -msgid "_Zero coordinate system" +#: src/emc/usr_intf/touchy/touchy.glade:7 +msgid "LinuxCNC/Touchy" msgstr "" -#: share/axis/tcl/axis.tcl:204 -msgid "P1 G5_4" +#. # Touchy is Copyright (c) 2009 Chris Radek # # Touchy 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 2 of the License, or # (at your option) any later version. # # Touchy 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. +#: src/emc/usr_intf/touchy/touchy.glade:11 +msgid "window1" msgstr "" -#: share/axis/tcl/axis.tcl:208 -msgid "P2 G5_5" +#: src/emc/usr_intf/touchy/touchy.glade:31 +msgid "xa" msgstr "" -#: share/axis/tcl/axis.tcl:212 -msgid "P3 G5_6" +#: src/emc/usr_intf/touchy/touchy.glade:44 +msgid "xd" msgstr "" -#: share/axis/tcl/axis.tcl:216 -msgid "P4 G5_7" +#: src/emc/usr_intf/touchy/touchy.glade:57 +msgid "yr" msgstr "" -#: share/axis/tcl/axis.tcl:220 -msgid "P5 G5_8" +#: src/emc/usr_intf/touchy/touchy.glade:68 +msgid "ya" msgstr "" -#: share/axis/tcl/axis.tcl:224 -msgid "P6 G5_9" +#: src/emc/usr_intf/touchy/touchy.glade:81 +msgid "yd" msgstr "" -#: share/axis/tcl/axis.tcl:228 -msgid "P7 G59._1" +#: src/emc/usr_intf/touchy/touchy.glade:94 +msgid "zr" msgstr "" -#: share/axis/tcl/axis.tcl:232 -msgid "P8 G59._2" +#: src/emc/usr_intf/touchy/touchy.glade:105 +msgid "za" msgstr "" -#: share/axis/tcl/axis.tcl:236 -msgid "P9 G59._3" +#: src/emc/usr_intf/touchy/touchy.glade:118 +msgid "zd" msgstr "" -#: share/axis/tcl/axis.tcl:240 -msgid "_G92" +#: src/emc/usr_intf/touchy/touchy.glade:131 +#: src/emc/usr_intf/gscreen/gscreen.glade:85 +#: src/emc/usr_intf/gscreen/gscreen.glade:213 +#: src/emc/usr_intf/gscreen/gscreen.glade:343 +#: src/emc/usr_intf/gscreen/gscreen.glade:471 +#: src/emc/usr_intf/gscreen/gscreen.glade:599 +#: src/emc/usr_intf/gscreen/gscreen.glade:727 +#: src/emc/usr_intf/gscreen/gscreen.glade:855 +#: src/emc/usr_intf/gscreen/gscreen.glade:983 +#: src/emc/usr_intf/gscreen/gscreen.glade:1111 +msgid "DTG" msgstr "" -#: share/axis/tcl/axis.tcl:248 -msgid "Tool touch off to wor_kpiece" +#: src/emc/usr_intf/touchy/touchy.glade:143 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Absolute" msgstr "" -#: share/axis/tcl/axis.tcl:254 -msgid "Tool touch off to _fixture" +#: src/emc/usr_intf/touchy/touchy.glade:165 +msgid "xr" msgstr "" -#: share/axis/tcl/axis.tcl:262 -msgid "_Top view" -msgstr "Perspectiva superior" +#: src/emc/usr_intf/touchy/touchy.glade:176 +msgid "ar" +msgstr "" -#: share/axis/tcl/axis.tcl:269 -msgid "_Rotated Top view" -msgstr "Perspectiva superior _rotada" +#: src/emc/usr_intf/touchy/touchy.glade:188 +msgid "br" +msgstr "" -#: share/axis/tcl/axis.tcl:276 -msgid "_Side view" -msgstr "Per_spectiva lateral" +#: src/emc/usr_intf/touchy/touchy.glade:200 +msgid "cr" +msgstr "" -#: share/axis/tcl/axis.tcl:283 -msgid "_Front view" -msgstr "Perspectiva _frontal" +#: src/emc/usr_intf/touchy/touchy.glade:212 +msgid "ur" +msgstr "" -#: share/axis/tcl/axis.tcl:290 -msgid "_Perspective view" -msgstr "Vista en _Perspectivas" +#: src/emc/usr_intf/touchy/touchy.glade:224 +msgid "vr" +msgstr "" -#: share/axis/tcl/axis.tcl:299 -msgid "Display _Inches" -msgstr "_Pulgadas" +#: src/emc/usr_intf/touchy/touchy.glade:236 +msgid "wr" +msgstr "" -#: share/axis/tcl/axis.tcl:306 -msgid "Display _MM" -msgstr "Mostrar _MM" +#: src/emc/usr_intf/touchy/touchy.glade:248 +msgid "aa" +msgstr "" -#: share/axis/tcl/axis.tcl:313 -msgid "S_how program" -msgstr "Mostrar vista preliminar" +#: src/emc/usr_intf/touchy/touchy.glade:262 +msgid "ba" +msgstr "" -#: share/axis/tcl/axis.tcl:318 -#, fuzzy -msgid "Show program r_apids" -msgstr "Mostrar vista preliminar" +#: src/emc/usr_intf/touchy/touchy.glade:276 +msgid "ca" +msgstr "" -#: share/axis/tcl/axis.tcl:323 -#, fuzzy -msgid "Alpha-_blend program" -msgstr "Abrir programa" +#: src/emc/usr_intf/touchy/touchy.glade:290 +msgid "ua" +msgstr "" -#: share/axis/tcl/axis.tcl:328 -msgid "Sho_w live plot" -msgstr "Mostrar barra de herramientas" +#: src/emc/usr_intf/touchy/touchy.glade:304 +msgid "va" +msgstr "" -#: share/axis/tcl/axis.tcl:333 -msgid "Show too_l" -msgstr "_Mostrar herramienta" +#: src/emc/usr_intf/touchy/touchy.glade:318 +msgid "wa" +msgstr "" -#: share/axis/tcl/axis.tcl:338 +#: src/emc/usr_intf/touchy/touchy.glade:332 #, fuzzy -msgid "Show e_xtents" -msgstr "_Mostrar medidas" +msgid "ad" +msgstr "Fin" -#: share/axis/tcl/axis.tcl:343 -#, fuzzy -msgid "Show o_ffsets" -msgstr "_Mostrar medidas" +#: src/emc/usr_intf/touchy/touchy.glade:346 +msgid "bd" +msgstr "" -#: share/axis/tcl/axis.tcl:348 -#, fuzzy -msgid "Sh_ow machine limits" -msgstr "El programa excedio limite de la Maquina" +#: src/emc/usr_intf/touchy/touchy.glade:360 +msgid "cd" +msgstr "" -#: share/axis/tcl/axis.tcl:353 -#, fuzzy -msgid "Show v_elocity" -msgstr "Mostrar barra de herramientas" +#: src/emc/usr_intf/touchy/touchy.glade:374 +msgid "ud" +msgstr "" -#: share/axis/tcl/axis.tcl:358 -msgid "Show _distance to go" -msgstr "Mostrar _distancia" +#: src/emc/usr_intf/touchy/touchy.glade:388 +msgid "vd" +msgstr "" -#: share/axis/tcl/axis.tcl:363 -msgid "Large coordinate fo_nt" +#: src/emc/usr_intf/touchy/touchy.glade:402 +msgid "wd" msgstr "" -#: share/axis/tcl/axis.tcl:366 -msgid "Ctrl-K" -msgstr "Ctrl-K" +#: src/emc/usr_intf/touchy/touchy.glade:448 +#, fuzzy +msgid "Estop Reset" +msgstr "_Resumir" -#: share/axis/tcl/axis.tcl:368 -msgid "_Clear live plot" -msgstr "Eliminar barra de herramienta" +#: src/emc/usr_intf/touchy/touchy.glade:459 +#: src/emc/usr_intf/stepconf/pport1.glade:21 +#: src/emc/usr_intf/stepconf/pport2.glade:1409 +#: src/emc/usr_intf/gscreen/gscreen.glade:2442 +#, fuzzy +msgid "Estop" +msgstr "Detener" -#: share/axis/tcl/axis.tcl:377 +#: src/emc/usr_intf/touchy/touchy.glade:475 #, fuzzy -msgid "Show commanded position" -msgstr "Mostrar posicion" +msgid "Machine On" +msgstr "Coordenada absoluta" -#: share/axis/tcl/axis.tcl:384 +#: src/emc/usr_intf/touchy/touchy.glade:490 #, fuzzy -msgid "Show actual position" -msgstr "Mostrar posicion actual" +msgid "Machine Off" +msgstr "Coordenada absoluta" -#: share/axis/tcl/axis.tcl:393 +#: src/emc/usr_intf/touchy/touchy.glade:531 #, fuzzy -msgid "Show machine position" -msgstr "Mostrar posicion absoluta" +msgid "Power" +msgstr "Restaurar" -#: share/axis/tcl/axis.tcl:400 +#: src/emc/usr_intf/touchy/touchy.glade:562 #, fuzzy -msgid "Show relative position" -msgstr "Mostrar posicion relativa" +msgid "Unhome All" +msgstr "Restaurar todos los ejes" -#: share/axis/tcl/axis.tcl:409 -msgid "Joint mode" -msgstr "Modalidad-Joint " +#: src/emc/usr_intf/touchy/touchy.glade:588 +#, fuzzy +msgid "Home Selected" +msgstr "Correr eje activo" -#: share/axis/tcl/axis.tcl:416 +#: src/emc/usr_intf/touchy/touchy.glade:603 #, fuzzy -msgid "World mode" -msgstr "Modalidad-Joint " +msgid "Unhome Selected" +msgstr "Restaurar todos los ejes" -#: share/axis/tcl/axis.tcl:425 -msgid "_About AXIS" -msgstr "Sobre AXIS" +#: src/emc/usr_intf/touchy/touchy.glade:625 +#, fuzzy +msgid "Homing" +msgstr "Restaurar" -#: share/axis/tcl/axis.tcl:429 -msgid "Quick _Reference" -msgstr "_Referencia rapida" +#: src/emc/usr_intf/touchy/touchy.glade:644 +msgid "Startup" +msgstr "" -#: share/axis/tcl/axis.tcl:439 +#: src/emc/usr_intf/touchy/touchy.glade:727 #, fuzzy -msgid "_Machine" -msgstr "Coordenada absoluta" +msgid "G" +msgstr "Ejecutar" -#: share/axis/tcl/axis.tcl:443 -#, fuzzy -msgid "_View" -msgstr "Perspectiva" +#: src/emc/usr_intf/touchy/touchy.glade:929 +msgid "." +msgstr "" -#: share/axis/tcl/axis.tcl:456 -msgid "Toggle Emergency Stop [F1]" -msgstr "Boton de Emergencia activar/desactivar [F1]" +#: src/emc/usr_intf/touchy/touchy.glade:963 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "0" +msgstr "" -#: share/axis/tcl/axis.tcl:465 -msgid "Toggle Machine power [F2]" -msgstr "Máquina encender/apagar [F2]" +#: src/emc/usr_intf/touchy/touchy.glade:980 +msgid "3" +msgstr "" -#: share/axis/tcl/axis.tcl:476 -msgid "Open G-Code file [O]" -msgstr "Abrir archovo de codigo-G [O]" +#: src/emc/usr_intf/touchy/touchy.glade:997 +msgid "2" +msgstr "" -#: share/axis/tcl/axis.tcl:484 -msgid "Reopen current file [Control-R]" -msgstr "Volver a cargar archivo actual [Ctrl-R]" +#: src/emc/usr_intf/touchy/touchy.glade:1014 +msgid "1" +msgstr "" -#: share/axis/tcl/axis.tcl:494 -msgid "Begin executing current file [R]" -msgstr "Ejecutar archivo actual [R]" +#: src/emc/usr_intf/touchy/touchy.glade:1031 +msgid "6" +msgstr "" -#: share/axis/tcl/axis.tcl:502 -msgid "Execute next line [T]" -msgstr "Ejecutar siguiente fila [T]" +#: src/emc/usr_intf/touchy/touchy.glade:1048 +msgid "5" +msgstr "" -#: share/axis/tcl/axis.tcl:510 -msgid "Pause [P] / resume [S] execution" -msgstr "Pausa [P] / resumir [S]" +#: src/emc/usr_intf/touchy/touchy.glade:1065 +msgid "4" +msgstr "" -#: share/axis/tcl/axis.tcl:518 -msgid "Stop program execution [ESC]" -msgstr "Detener Programa [ESC]" +#: src/emc/usr_intf/touchy/touchy.glade:1082 +msgid "9" +msgstr "" -#: share/axis/tcl/axis.tcl:528 -#, fuzzy -msgid "Toggle skip lines with '/' [Alt-M /]" -msgstr "Saltar filas con '_/'" +#: src/emc/usr_intf/touchy/touchy.glade:1097 +msgid "8" +msgstr "" -#: share/axis/tcl/axis.tcl:535 -msgid "Toggle optional pause [Alt-M 1]" +#: src/emc/usr_intf/touchy/touchy.glade:1112 +msgid "7" msgstr "" -#: share/axis/tcl/axis.tcl:544 +#: src/emc/usr_intf/touchy/touchy.glade:1297 #, fuzzy -msgid "Zoom in" -msgstr "Ampliar [+]" +msgid "Flood On" +msgstr "Enfriador" -#: share/axis/tcl/axis.tcl:552 +#: src/emc/usr_intf/touchy/touchy.glade:1308 #, fuzzy -msgid "Zoom out" -msgstr "Disminuir [-]" +msgid "Flood Off" +msgstr "Enfriador" -#: share/axis/tcl/axis.tcl:560 -msgid "Top view" -msgstr "Perspectiva superior" +#: src/emc/usr_intf/touchy/touchy.glade:1324 +#, fuzzy +msgid "Mist On" +msgstr "Neblina" -#: share/axis/tcl/axis.tcl:568 +#: src/emc/usr_intf/touchy/touchy.glade:1339 #, fuzzy -msgid "Rotated top view" -msgstr "Perspectiva superior _rotada" +msgid "Mist Off" +msgstr "Neblina" -#: share/axis/tcl/axis.tcl:576 -msgid "Side view" -msgstr "Perspectiva lateral" +#: src/emc/usr_intf/touchy/touchy.glade:1362 +#, fuzzy +msgid "Coolant" +msgstr "Restaurar" -#: share/axis/tcl/axis.tcl:584 +#: src/emc/usr_intf/touchy/touchy.glade:1448 #, fuzzy -msgid "Front view" -msgstr "Perspectiva _frontal" +msgid "Spindle Off" +msgstr "Apagar freno de portabrocas" -#: share/axis/tcl/axis.tcl:592 -msgid "Perspective view" -msgstr "Vista en perspectiva" +#: src/emc/usr_intf/touchy/touchy.glade:1501 +#: src/emc/usr_intf/touchy/touchy.glade:2578 +#, fuzzy +msgid "Spindle speed:" +msgstr "Controlar portabrocas:" -#: share/axis/tcl/axis.tcl:600 -msgid "Toggle between Drag and Rotate Mode [D]" +#: src/emc/usr_intf/touchy/touchy.glade:1513 +#: src/emc/usr_intf/touchy/touchy.glade:2707 +msgid "label26" msgstr "" -#: share/axis/tcl/axis.tcl:615 -msgid "Clear live plot [Ctrl-K]" -msgstr "Eliminar barra de herramientas [Ctrl-K]" - -#: share/axis/tcl/axis.tcl:766 -msgid "Manual Control [F3]" -msgstr "Control manual [F3]" +#: src/emc/usr_intf/touchy/touchy.glade:1539 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4226 +#, fuzzy +msgid "Spindle" +msgstr "Restaurar" -#: share/axis/tcl/axis.tcl:767 -msgid "MDI [F5]" -msgstr "MDI" +#: src/emc/usr_intf/touchy/touchy.glade:1597 +msgid "file.ngc" +msgstr "" -#: share/axis/tcl/axis.tcl:781 share/axis/tcl/axis.tcl:2036 -#: share/axis/tcl/axis.tcl:2203 -#, fuzzy -msgid "Axis:" -msgstr "Eje:" +#: src/emc/usr_intf/touchy/touchy.glade:1812 +#: src/emc/usr_intf/touchy/touchy.glade:2017 +#: src/emc/usr_intf/touchy/touchy.glade:2037 +#: src/emc/usr_intf/touchy/touchy.glade:2057 +#: src/emc/usr_intf/touchy/touchy.glade:2077 +#: src/emc/usr_intf/touchy/touchy.glade:2097 +#: src/emc/usr_intf/touchy/touchy.glade:2117 +#: src/emc/usr_intf/touchy/touchy.glade:2137 +#: src/emc/usr_intf/touchy/touchy.glade:2157 +#: src/emc/usr_intf/touchy/touchy.glade:2177 +msgid "M2" +msgstr "" -#: share/axis/tcl/axis.tcl:1102 +#: src/emc/usr_intf/touchy/touchy.glade:2244 +#: src/emc/usr_intf/touchy/touchy.glade:2374 #, fuzzy -msgid "Home Axis" -msgstr "Restaurar _%s-Eje" +msgid "Page" +msgstr "Restaurar" -#: share/axis/tcl/axis.tcl:1176 -#, fuzzy -msgid "Spindle:" -msgstr "Portabrocas:" +#: src/emc/usr_intf/touchy/touchy.glade:2308 +msgid "Start Point" +msgstr "" -#: share/axis/tcl/axis.tcl:1223 src/emc/usr_intf/touchy/touchy.glade:946 -msgid "-" -msgstr "-" +#: src/emc/usr_intf/touchy/touchy.glade:2452 +msgid "Loaded File" +msgstr "" -#: share/axis/tcl/axis.tcl:1237 -msgid "+" -msgstr "+" +#: src/emc/usr_intf/touchy/touchy.glade:2488 +msgid "Loaded file:" +msgstr "" -#: share/axis/tcl/axis.tcl:1242 +#: src/emc/usr_intf/touchy/touchy.glade:2499 #, fuzzy -msgid "Brake" -msgstr "Freno" +msgid "Interpreted line:" +msgstr "Lista de intérprete" -#: share/axis/tcl/axis.tcl:1289 +#: src/emc/usr_intf/touchy/touchy.glade:2513 #, fuzzy -msgid "Coolant:" -msgstr "Enfriador:" +msgid "Distance:" +msgstr "Distancia:" -#: share/axis/tcl/axis.tcl:1294 -#, fuzzy -msgid "Mist" -msgstr "Neblina" +#: src/emc/usr_intf/touchy/touchy.glade:2526 +#: src/emc/usr_intf/stepconf/main_page.glade:23 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Velocity:" +msgstr "" -#: share/axis/tcl/axis.tcl:1299 -#, fuzzy -msgid "Flood" -msgstr "Enfriador" +#: src/emc/usr_intf/touchy/touchy.glade:2539 +msgid "Delay:" +msgstr "" -#: share/axis/tcl/axis.tcl:1371 -msgid "History:" -msgstr "Historial:" +#: src/emc/usr_intf/touchy/touchy.glade:2552 +msgid "On limit switch:" +msgstr "" -#: share/axis/tcl/axis.tcl:1394 +#: src/emc/usr_intf/touchy/touchy.glade:2565 #, fuzzy -msgid "MDI Command:" -msgstr "dirigido" - -#: share/axis/tcl/axis.tcl:1403 -msgid "Go" -msgstr "Ejecutar" +msgid "Spindle direction:" +msgstr "Encender freno del Portabrocas" -#: share/axis/tcl/axis.tcl:1409 +#: src/emc/usr_intf/touchy/touchy.glade:2591 #, fuzzy -msgid "Active G-Codes:" -msgstr "Activar Codigo-G:" +msgid "Loaded tool:" +msgstr "Sin herramienta" -#: share/axis/tcl/axis.tcl:1487 -#, fuzzy -msgid "Preview" -msgstr "Perspectiva lateral" +#: src/emc/usr_intf/touchy/touchy.glade:2604 +#: src/emc/usr_intf/touchy/touchy.glade:2955 +msgid "label19" +msgstr "" -#: share/axis/tcl/axis.tcl:1488 -msgid "DRO" +#: src/emc/usr_intf/touchy/touchy.glade:2617 +msgid "label20" msgstr "" -#: share/axis/tcl/axis.tcl:1575 share/axis/tcl/axis.tcl:1588 -#, fuzzy -msgid "Jog Speed:" -msgstr "Velocidad:" +#: src/emc/usr_intf/touchy/touchy.glade:2632 +#: src/emc/usr_intf/touchy/touchy.glade:2779 +#: src/emc/usr_intf/touchy/touchy.glade:2808 +#: src/emc/usr_intf/touchy/touchy.glade:2912 +#: src/emc/usr_intf/touchy/touchy.glade:2927 +msgid "label21" +msgstr "" -#: share/axis/tcl/axis.tcl:1600 -msgid "Max Velocity:" +#: src/emc/usr_intf/touchy/touchy.glade:2647 +msgid "label22" msgstr "" -#: share/axis/tcl/axis.tcl:1629 -#, fuzzy -msgid "Spindle Override:" -msgstr "Controlar portabrocas:" +#: src/emc/usr_intf/touchy/touchy.glade:2662 +msgid "label23" +msgstr "" -#: share/axis/tcl/axis.tcl:1631 share/axis/tcl/axis.tcl:1671 -#: src/emc/usr_intf/pncconf/pncconf.glade:3141 -#: src/emc/usr_intf/pncconf/pncconf.glade:3154 -#: src/emc/usr_intf/pncconf/pncconf.glade:3167 -#: src/emc/usr_intf/pncconf/pncconf.glade:3180 -#: src/emc/usr_intf/pncconf/pncconf.glade:3193 -#: src/emc/usr_intf/pncconf/pncconf.glade:3206 -#: src/emc/usr_intf/pncconf/pncconf.glade:3219 -#: src/emc/usr_intf/pncconf/pncconf.glade:3232 -#: src/emc/usr_intf/pncconf/pncconf.glade:3345 -#: src/emc/usr_intf/pncconf/pncconf.glade:3358 -#: src/emc/usr_intf/pncconf/pncconf.glade:3371 -#: src/emc/usr_intf/pncconf/pncconf.glade:3384 -#: src/emc/usr_intf/pncconf/pncconf.glade:3397 -#: src/emc/usr_intf/pncconf/pncconf.glade:3410 -#: src/emc/usr_intf/pncconf/pncconf.glade:3516 -#: src/emc/usr_intf/pncconf/pncconf.glade:3527 -#: src/emc/usr_intf/pncconf/pncconf.glade:4022 -#: src/emc/usr_intf/pncconf/pncconf.glade:4035 -#: src/emc/usr_intf/pncconf/pncconf.glade:4048 -#: src/emc/usr_intf/pncconf/pncconf.glade:4061 -#: src/emc/usr_intf/pncconf/pncconf.glade:4074 -#: src/emc/usr_intf/pncconf/pncconf.glade:4087 -#: src/emc/usr_intf/pncconf/pncconf.glade:4100 -#: src/emc/usr_intf/pncconf/pncconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:4226 -#: src/emc/usr_intf/pncconf/pncconf.glade:4239 -#: src/emc/usr_intf/pncconf/pncconf.glade:4252 -#: src/emc/usr_intf/pncconf/pncconf.glade:4265 -#: src/emc/usr_intf/pncconf/pncconf.glade:4278 -#: src/emc/usr_intf/pncconf/pncconf.glade:4291 -#: src/emc/usr_intf/pncconf/pncconf.glade:4397 -#: src/emc/usr_intf/pncconf/pncconf.glade:4408 -#: src/emc/usr_intf/pncconf/pncconf.glade:4903 -#: src/emc/usr_intf/pncconf/pncconf.glade:4916 -#: src/emc/usr_intf/pncconf/pncconf.glade:4929 -#: src/emc/usr_intf/pncconf/pncconf.glade:4942 -#: src/emc/usr_intf/pncconf/pncconf.glade:4955 -#: src/emc/usr_intf/pncconf/pncconf.glade:4968 -#: src/emc/usr_intf/pncconf/pncconf.glade:4981 -#: src/emc/usr_intf/pncconf/pncconf.glade:4994 -#: src/emc/usr_intf/pncconf/pncconf.glade:5107 -#: src/emc/usr_intf/pncconf/pncconf.glade:5120 -#: src/emc/usr_intf/pncconf/pncconf.glade:5133 -#: src/emc/usr_intf/pncconf/pncconf.glade:5146 -#: src/emc/usr_intf/pncconf/pncconf.glade:5159 -#: src/emc/usr_intf/pncconf/pncconf.glade:5172 -#: src/emc/usr_intf/pncconf/pncconf.glade:5278 -#: src/emc/usr_intf/pncconf/pncconf.glade:5289 -#: src/emc/usr_intf/pncconf/pncconf.glade:5582 -#: src/emc/usr_intf/pncconf/pncconf.glade:5631 -#: src/emc/usr_intf/pncconf/pncconf.glade:5641 -msgid "%" +#: src/emc/usr_intf/touchy/touchy.glade:2677 +msgid "label24" msgstr "" -#: share/axis/tcl/axis.tcl:1711 -#, fuzzy -msgid "" -"LinuxCNC/AXIS version $version\n" -"\n" -"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff Epler and Chris " -"Radek.\n" -"\n" -"This is free software, and you are welcome to redistribute it under certain " -"conditions. See the file COPYING, included with LinuxCNC.\n" -"\n" -"Visit the LinuxCNC web site: " +#: src/emc/usr_intf/touchy/touchy.glade:2692 +msgid "label25" msgstr "" -"LinuxCNC/AXIS Version $version\n" -"\n" -"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff Epler and Chris Radek.\n" -"\n" -"This is free software, and you are welcome to redistribute it under certain " -"conditions. See the file COPYING, included with AXIS.\n" -"\n" -"Deutsche Übersetzung: Alex Joni, Florian Hahn, Ingrid Kirst, Frank " -"Jungclaus\n" -"\n" -"Besuchen Sie die LinuxCNC Webseite: " -#: share/axis/tcl/axis.tcl:1739 -#, fuzzy -msgid "About AXIS" -msgstr "Sobre AXIS" +#: src/emc/usr_intf/touchy/touchy.glade:2722 +msgid "label27" +msgstr "" -#: share/axis/tcl/axis.tcl:1768 -msgid "AXIS Quick Reference" -msgstr "Acceso directo a AXIS " +#: src/emc/usr_intf/touchy/touchy.glade:2737 +msgid "Prepped tool:" +msgstr "" -#: share/axis/tcl/axis.tcl:1903 -msgid "AXIS $::version on $::machine" +#: src/emc/usr_intf/touchy/touchy.glade:2750 +msgid "label28" msgstr "" -#: share/axis/tcl/axis.tcl:1905 -#, fuzzy -msgid "(no file)" -msgstr "AXIS (Vacio)" +#: src/emc/usr_intf/touchy/touchy.glade:2765 +msgid "Running line:" +msgstr "" -#: share/axis/tcl/axis.tcl:1976 share/axis/tcl/axis.tcl:1981 +#: src/emc/usr_intf/touchy/touchy.glade:2794 #, fuzzy -msgid "Position:" +msgid "XY Rotation:" msgstr "Posicion:" -#: share/axis/tcl/axis.tcl:1978 -#, fuzzy -msgid "Machine" -msgstr "Coordenada absoluta" - -#: share/axis/tcl/axis.tcl:1978 src/emc/usr_intf/touchy/touchy.glade:155 -#, fuzzy -msgid "Relative" -msgstr "relativo" - -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3329 +#: src/emc/usr_intf/touchy/touchy.glade:2823 #, fuzzy -msgid "Actual" -msgstr "Actual" +msgid "Tool length:" +msgstr "Tipo de pieza" -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3318 -#, fuzzy -msgid "Commanded" -msgstr "dirigido" +#: src/emc/usr_intf/touchy/touchy.glade:2836 +msgid "label52" +msgstr "" -#: share/axis/tcl/axis.tcl:2032 share/axis/tcl/axis.tcl:2203 -#, fuzzy -msgid "Joint:" -msgstr "Modalidad-Joint " +#: src/emc/usr_intf/touchy/touchy.glade:2851 +msgid "" +"G1 G2 G3\n" +"M1 M2 M3\n" +"F1 S1" +msgstr "" -#: share/axis/tcl/axis.tcl:2338 +#: src/emc/usr_intf/touchy/touchy.glade:2870 #, fuzzy -msgid "Turn spindle counterclockwise [F10]" -msgstr " Portabrocas gira en sentido contrario de las agujas del reloj [F10]" +msgid "Active codes:" +msgstr "Activar Codigo-G:" -#: share/axis/tcl/axis.tcl:2339 -msgid "Turn spindle clockwise [F9]" -msgstr " Portabrocas gira en sentido de las agujas del reloj [F9]" +#: src/emc/usr_intf/touchy/touchy.glade:2883 +msgid "G5x Offset:" +msgstr "" -#: share/axis/tcl/axis.tcl:2340 -msgid "Stop spindle [F9/F10]" -msgstr "Detener Portabrocas [F9/F10]" +#: src/emc/usr_intf/touchy/touchy.glade:2898 +msgid "G92 Offset:" +msgstr "" -#: share/axis/tcl/axis.tcl:2341 -#, fuzzy -msgid "Turn spindle Faster [F12]" -msgstr " Portabrocas gira en sentido de las agujas del reloj [F9]" +#: src/emc/usr_intf/touchy/touchy.glade:2942 +msgid "Loaded file lines:" +msgstr "" -#: share/axis/tcl/axis.tcl:2342 -#, fuzzy -msgid "Turn spindle Slower [F11]" -msgstr " Portabrocas gira en sentido de las agujas del reloj [F9]" +#: src/emc/usr_intf/touchy/touchy.glade:2971 +msgid "Pockets:" +msgstr "" -#: share/axis/tcl/axis.tcl:2343 -msgid "Turn spindle brake on [Shift-B] or off [B]" -msgstr "Freno del portabrocas activar [Shift-B] o desactivar [B]" +#: src/emc/usr_intf/touchy/touchy.glade:2984 +msgid "" +"1\n" +"2\n" +"3" +msgstr "" -#: share/axis/tcl/axis.tcl:2344 -msgid "Turn flood on or off [F8]" -msgstr "Medio enfriador encender/apagar [F8]" +#: src/emc/usr_intf/touchy/touchy.glade:3009 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6414 +msgid "Status" +msgstr "" -#: share/axis/tcl/axis.tcl:2345 -msgid "Turn mist on or off [F7]" -msgstr "Neblina encender/apagar [F7]" +#: src/emc/usr_intf/touchy/touchy.glade:3038 +#, fuzzy +msgid "Control Font:" +msgstr "Ctrl-M" -#: share/axis/tcl/axis.tcl:2346 -msgid "Send active axis home [Home]" -msgstr "Restaurar eje activo [HOME]" +#: src/emc/usr_intf/touchy/touchy.glade:3050 +msgid "DRO Font:" +msgstr "" -#: share/axis/tcl/axis.tcl:2347 -msgid "Set G54 offset for active axis [End]" -msgstr "Activar G54 para eje activo" +#: src/emc/usr_intf/touchy/touchy.glade:3064 +msgid "Error Font:" +msgstr "" -#: share/axis/tcl/axis.tcl:2348 -msgid "Activate axis [X]" -msgstr "Activar eje [X]" +#: src/emc/usr_intf/touchy/touchy.glade:3081 +#, fuzzy +msgid "ControlFont" +msgstr "Ctrl-M" -#: share/axis/tcl/axis.tcl:2349 -msgid "Activate axis [Y]" -msgstr "Activar eje [Y]" +#: src/emc/usr_intf/touchy/touchy.glade:3100 +msgid "DRO Font" +msgstr "" -#: share/axis/tcl/axis.tcl:2350 -msgid "Activate axis [Z]" -msgstr " Activar eje [Z]" +#: src/emc/usr_intf/touchy/touchy.glade:3121 +msgid "Error Font" +msgstr "" -#: share/axis/tcl/axis.tcl:2351 -msgid "Activate axis [A]" -msgstr " Activar eje [A]" +#: src/emc/usr_intf/touchy/touchy.glade:3139 +msgid "Listing Font:" +msgstr "" -#: share/axis/tcl/axis.tcl:2352 -msgid "Activate axis [4]" -msgstr " Activar eje [4]" +#: src/emc/usr_intf/touchy/touchy.glade:3156 +msgid "Listing Font" +msgstr "" -#: share/axis/tcl/axis.tcl:2353 -msgid "Activate axis [5]" -msgstr " Activar eje [5]" +#: src/emc/usr_intf/touchy/touchy.glade:3176 +msgid "Hide pointer" +msgstr "" -#: share/axis/tcl/axis.tcl:2354 share/axis/tcl/axis.tcl:2355 -msgid "Jog selected axis" -msgstr "Correr eje activo" +#: src/emc/usr_intf/touchy/touchy.glade:3187 +#, fuzzy +msgid "Show pointer" +msgstr "Mostrar vista preliminar" -#: share/axis/tcl/axis.tcl:2357 -msgid "Temporarily allow jogging outside machine limits [L]" -msgstr "Permitir correr maquina temporalmente fuera de limitespredeterminados" +#: src/emc/usr_intf/touchy/touchy.glade:3214 +msgid "Theme:" +msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -#, fuzzy -msgid "Spindle CW" -msgstr "Portabrocas:" +#: src/emc/usr_intf/touchy/touchy.glade:3228 +msgid "default\n" +msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -#, fuzzy -msgid "Spindle CCW" -msgstr "Portabrocas:" +#: src/emc/usr_intf/touchy/touchy.glade:3252 +msgid "Display Options" +msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:50 -#, fuzzy -msgid "Input control" -msgstr "Control manual" +#: src/emc/usr_intf/touchy/touchy.glade:3286 +#: src/emc/usr_intf/stepconf/base.glade:867 +#: src/emc/usr_intf/gscreen/gscreen.glade:3664 +msgid "Inch" +msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:53 src/emc/usr_intf/touchy/mdi.py:54 -msgid "Straight rapid" +#: src/emc/usr_intf/touchy/touchy.glade:3349 +msgid "Position Readout" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:55 src/emc/usr_intf/touchy/mdi.py:56 -msgid "Straight feed" +#: src/emc/usr_intf/touchy/touchy.glade:3379 +msgid "Workpiece" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:57 src/emc/usr_intf/touchy/mdi.py:58 -msgid "Arc CW" +#: src/emc/usr_intf/touchy/touchy.glade:3390 +msgid "Fixture" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:59 src/emc/usr_intf/touchy/mdi.py:60 -msgid "Arc CCW" +#: src/emc/usr_intf/touchy/touchy.glade:3410 +#, fuzzy +msgid "Tool Setting" +msgstr "Restaurar" + +#: src/emc/usr_intf/touchy/touchy.glade:3441 +msgid "Delete / lines" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:61 src/emc/usr_intf/touchy/mdi.py:62 -msgid "Dwell" +#: src/emc/usr_intf/touchy/touchy.glade:3456 +msgid "Keep / lines" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:63 +#: src/emc/usr_intf/touchy/touchy.glade:3473 #, fuzzy -msgid "Setup" -msgstr "Estatus del EMC..." +msgid "Pause on M1" +msgstr "_Pausa" -#: src/emc/usr_intf/touchy/mdi.py:64 +#: src/emc/usr_intf/touchy/touchy.glade:3484 +msgid "Ignore M1" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:3504 #, fuzzy -msgid "Spindle synchronized feed" -msgstr "Controlar portabrocas:" +msgid "Program Options" +msgstr "Restaurar" -#: src/emc/usr_intf/touchy/mdi.py:65 -msgid "Rigid tap" +#: src/emc/usr_intf/touchy/touchy.glade:3531 +#: src/emc/usr_intf/gscreen/gscreen.glade:2200 +msgid "Preferences" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/touchy/mdi.py:67 -#: src/emc/usr_intf/touchy/mdi.py:68 src/emc/usr_intf/touchy/mdi.py:69 -msgid "Probe" +#: src/emc/usr_intf/touchy/touchy.glade:3567 +#: src/emc/usr_intf/gscreen/gscreen.glade:1425 +msgid "FO: 100%" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:70 -msgid "Radius compensation left" +#: src/emc/usr_intf/touchy/touchy.glade:3582 +#: src/emc/usr_intf/gscreen/gscreen.glade:1437 +msgid "SO: 100%" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:71 -msgid "Radius compensation right" +#: src/emc/usr_intf/touchy/touchy.glade:3596 +msgid "MV: 100" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:72 -msgid "Radius compensation left, immediate" +#: src/emc/usr_intf/touchy/touchy.glade:3610 +msgid "Jogging" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:73 -msgid "Radius compensation right, immediate" +#: src/emc/usr_intf/touchy/touchy.glade:3624 +msgid "Start Point" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:74 -msgid "Tool length offset" +#: src/emc/usr_intf/touchy/touchy.glade:3651 +msgid ".01" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:75 -msgid "Tool length offset immediate" +#: src/emc/usr_intf/touchy/touchy.glade:3664 +msgid ".001" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:76 -msgid "Motion in unoffset coordinates" +#: src/emc/usr_intf/touchy/touchy.glade:3680 +msgid ".0001" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:77 -#, fuzzy -msgid "Continuous mode" -msgstr "Avance continuo" - -#: src/emc/usr_intf/touchy/mdi.py:79 -msgid "Drill" +#: src/emc/usr_intf/touchy/touchy.glade:3708 +msgid " X " msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:80 -msgid "Drill with dwell" +#: src/emc/usr_intf/touchy/touchy.glade:3720 +msgid " Y " msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:81 -msgid "Peck drill" +#: src/emc/usr_intf/touchy/touchy.glade:3735 +msgid " Z " msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:82 -msgid "Chip-break drill" +#: src/emc/usr_intf/touchy/touchy.glade:3750 +msgid " A " msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:83 -msgid "Bore" +#: src/emc/usr_intf/touchy/touchy.glade:3766 +msgid " B " msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:84 -msgid "Bore with dwell" +#: src/emc/usr_intf/touchy/touchy.glade:3784 +msgid " C " msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:85 -msgid "Offset all coordinate systems" +#: src/emc/usr_intf/touchy/touchy.glade:3802 +msgid " U " msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:86 -msgid "CSS Mode" +#: src/emc/usr_intf/touchy/touchy.glade:3818 +msgid " V " msgstr "" -#: src/emc/usr_intf/touchy/emc_interface.py:410 -msgid "CCW" +#: src/emc/usr_intf/touchy/touchy.glade:3836 +msgid " W " msgstr "" -#: src/emc/usr_intf/touchy/emc_interface.py:410 +#: src/emc/usr_intf/touchy/touchy.glade:3869 #, fuzzy -msgid "Stopped" -msgstr "De_tener" - -#: src/emc/usr_intf/touchy/emc_interface.py:410 -msgid "CW" -msgstr "" - -#: src/emc/usr_intf/touchy/touchy.glade:7 -msgid "LinuxCNC/Touchy" -msgstr "" +msgid "Handwheel" +msgstr "Restaurar" -#. # Touchy is Copyright (c) 2009 Chris Radek # # Touchy 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 2 of the License, or # (at your option) any later version. # # Touchy 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. -#: src/emc/usr_intf/touchy/touchy.glade:11 -msgid "window1" +#: src/emc/usr_intf/stepconf/stepconf.py:57 +msgid "" +"Stepconf encountered an error. The following information may be useful in " +"troubleshooting:\n" +"\n" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:31 -msgid "xa" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#, fuzzy +msgid "Stepconf" +msgstr "Pa_so" -#: src/emc/usr_intf/touchy/touchy.glade:44 -msgid "xd" +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#: src/emc/usr_intf/stepconf/stepconf.py:217 +#: src/emc/usr_intf/stepconf/main_page.glade:557 +#: src/emc/usr_intf/gscreen/gscreen.py:3414 +#: src/emc/usr_intf/gscreen/gscreen.py:3415 +#: src/emc/usr_intf/gscreen/gscreen.glade:4043 +msgid "Start" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:57 -msgid "yr" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Base Information" +msgstr "Mostrar posicion absoluta" -#: src/emc/usr_intf/touchy/touchy.glade:68 -msgid "ya" +#: src/emc/usr_intf/stepconf/stepconf.py:129 +msgid "Parallel Port 1" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:81 -msgid "yd" +#: src/emc/usr_intf/stepconf/stepconf.py:129 +msgid "Parallel Port 2" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:94 -msgid "zr" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:130 +#, fuzzy +msgid "Options" +msgstr "Tiempo de movimiento" -#: src/emc/usr_intf/touchy/touchy.glade:105 -msgid "za" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:130 +#, fuzzy +msgid "Axis X" +msgstr "Eje:" -#: src/emc/usr_intf/touchy/touchy.glade:118 -msgid "zd" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis Y" +msgstr "Eje:" -#: src/emc/usr_intf/touchy/touchy.glade:131 -msgid "DTG" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis Z" +msgstr "Eje:" -#: src/emc/usr_intf/touchy/touchy.glade:143 -#: src/emc/usr_intf/pncconf/pncconf.glade:59755 -msgid "Absolute" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis A" +msgstr "Eje:" -#: src/emc/usr_intf/touchy/touchy.glade:165 -msgid "xr" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:132 +#: src/emc/usr_intf/pncconf/pncconf.py:378 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#, fuzzy +msgid "Spindle" +msgstr "Portabrocas:" -#: src/emc/usr_intf/touchy/touchy.glade:176 -msgid "ar" +#: src/emc/usr_intf/stepconf/stepconf.py:132 +msgid "Almost Done" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:188 -msgid "br" +#: src/emc/usr_intf/stepconf/stepconf.py:136 +#: src/emc/usr_intf/pncconf/pncconf.py:135 +msgid "Gecko 201" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:200 -msgid "cr" +#: src/emc/usr_intf/stepconf/stepconf.py:137 +#: src/emc/usr_intf/pncconf/pncconf.py:136 +msgid "Gecko 202" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:212 -msgid "ur" +#: src/emc/usr_intf/stepconf/stepconf.py:138 +#: src/emc/usr_intf/pncconf/pncconf.py:137 +msgid "Gecko 203v" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:224 -msgid "vr" +#: src/emc/usr_intf/stepconf/stepconf.py:139 +#: src/emc/usr_intf/pncconf/pncconf.py:138 +msgid "Gecko 210" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:236 -msgid "wr" +#: src/emc/usr_intf/stepconf/stepconf.py:140 +#: src/emc/usr_intf/pncconf/pncconf.py:139 +msgid "Gecko 212" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:248 -msgid "aa" +#: src/emc/usr_intf/stepconf/stepconf.py:141 +#: src/emc/usr_intf/pncconf/pncconf.py:140 +msgid "Gecko 320" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:262 -msgid "ba" +#: src/emc/usr_intf/stepconf/stepconf.py:142 +#: src/emc/usr_intf/pncconf/pncconf.py:141 +msgid "Gecko 540" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:276 -msgid "ca" +#: src/emc/usr_intf/stepconf/stepconf.py:143 +#: src/emc/usr_intf/pncconf/pncconf.py:142 +msgid "L297" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:290 -msgid "ua" +#: src/emc/usr_intf/stepconf/stepconf.py:144 +#: src/emc/usr_intf/pncconf/pncconf.py:143 +msgid "PMDX-150" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:304 -msgid "va" +#: src/emc/usr_intf/stepconf/stepconf.py:145 +#: src/emc/usr_intf/stepconf/pport1.glade:32 +#: src/emc/usr_intf/pncconf/pncconf.py:144 +msgid "Sherline" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:318 -msgid "wa" +#: src/emc/usr_intf/stepconf/stepconf.py:146 +#: src/emc/usr_intf/pncconf/pncconf.py:145 +msgid "Xylotex 8S-3" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:332 -#, fuzzy -msgid "ad" -msgstr "Fin" - -#: src/emc/usr_intf/touchy/touchy.glade:346 -msgid "bd" +#: src/emc/usr_intf/stepconf/stepconf.py:147 +#: src/emc/usr_intf/pncconf/pncconf.py:146 +msgid "Parker-Compumotor oem750" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:360 -msgid "cd" +#: src/emc/usr_intf/stepconf/stepconf.py:148 +#: src/emc/usr_intf/pncconf/pncconf.py:147 +msgid "JVL-SMD41 or 42" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:374 -msgid "ud" +#: src/emc/usr_intf/stepconf/stepconf.py:149 +#: src/emc/usr_intf/pncconf/pncconf.py:148 +msgid "Hobbycnc Pro Chopper" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:388 -msgid "vd" +#: src/emc/usr_intf/stepconf/stepconf.py:150 +msgid "Kelling 4030" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:402 -msgid "wd" +#: src/emc/usr_intf/stepconf/stepconf.py:151 +msgid "Leadshine Series" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:448 +#: src/emc/usr_intf/stepconf/stepconf.py:190 #, fuzzy -msgid "Estop Reset" -msgstr "_Resumir" +msgid "X Step" +msgstr "Pa_so" -#: src/emc/usr_intf/touchy/touchy.glade:459 +#: src/emc/usr_intf/stepconf/stepconf.py:190 #, fuzzy -msgid "Estop" -msgstr "Detener" +msgid "X Direction" +msgstr "Escanear dirección" -#: src/emc/usr_intf/touchy/touchy.glade:475 +#: src/emc/usr_intf/stepconf/stepconf.py:190 #, fuzzy -msgid "Machine On" -msgstr "Coordenada absoluta" +msgid "Y Step" +msgstr "Pa_so" -#: src/emc/usr_intf/touchy/touchy.glade:490 +#: src/emc/usr_intf/stepconf/stepconf.py:190 #, fuzzy -msgid "Machine Off" -msgstr "Coordenada absoluta" +msgid "Y Direction" +msgstr "Escanear dirección" -#: src/emc/usr_intf/touchy/touchy.glade:531 +#: src/emc/usr_intf/stepconf/stepconf.py:191 #, fuzzy -msgid "Power" -msgstr "Restaurar" +msgid "Z Step" +msgstr "Pa_so" -#: src/emc/usr_intf/touchy/touchy.glade:562 +#: src/emc/usr_intf/stepconf/stepconf.py:191 #, fuzzy -msgid "Unhome All" -msgstr "Restaurar todos los ejes" +msgid "Z Direction" +msgstr "Escanear dirección" -#: src/emc/usr_intf/touchy/touchy.glade:588 +#: src/emc/usr_intf/stepconf/stepconf.py:191 #, fuzzy -msgid "Home Selected" -msgstr "Correr eje activo" +msgid "A Step" +msgstr "Pa_so" -#: src/emc/usr_intf/touchy/touchy.glade:603 +#: src/emc/usr_intf/stepconf/stepconf.py:191 #, fuzzy -msgid "Unhome Selected" -msgstr "Restaurar todos los ejes" +msgid "A Direction" +msgstr "Escanear dirección" -#: src/emc/usr_intf/touchy/touchy.glade:625 +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 #, fuzzy -msgid "Homing" -msgstr "Restaurar" +msgid "Spindle ON" +msgstr "Portabrocas:" -#: src/emc/usr_intf/touchy/touchy.glade:644 -msgid "Startup" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#, fuzzy +msgid "Spindle PWM" +msgstr "Portabrocas:" -#: src/emc/usr_intf/touchy/touchy.glade:727 +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 #, fuzzy -msgid "G" -msgstr "Ejecutar" +msgid "Spindle Brake" +msgstr "Encender freno del Portabrocas" -#: src/emc/usr_intf/touchy/touchy.glade:929 -msgid "." -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 +#, fuzzy +msgid "Coolant Mist" +msgstr "Enfriador:" -#: src/emc/usr_intf/touchy/touchy.glade:963 -#: src/emc/usr_intf/pncconf/pncconf.glade:60883 -#: src/emc/usr_intf/pncconf/pncconf.glade:60895 -#: src/emc/usr_intf/pncconf/pncconf.glade:61017 -#: src/emc/usr_intf/pncconf/pncconf.glade:61029 -#: src/emc/usr_intf/pncconf/pncconf.glade:61041 -#: src/emc/usr_intf/pncconf/pncconf.glade:61053 -#: src/emc/usr_intf/pncconf/pncconf.glade:61065 -#: src/emc/usr_intf/pncconf/pncconf.glade:61077 -#: src/emc/usr_intf/pncconf/pncconf.glade:62040 -#: src/emc/usr_intf/pncconf/pncconf.glade:62052 -#: src/emc/usr_intf/pncconf/pncconf.glade:62064 -#: src/emc/usr_intf/pncconf/pncconf.glade:62076 -#: src/emc/usr_intf/pncconf/pncconf.glade:62088 -#: src/emc/usr_intf/pncconf/pncconf.glade:62100 -#: src/emc/usr_intf/pncconf/pncconf.glade:62222 -#: src/emc/usr_intf/pncconf/pncconf.glade:62234 -#: src/emc/usr_intf/pncconf/pncconf.glade:63069 -#: src/emc/usr_intf/pncconf/pncconf.glade:63081 -#: src/emc/usr_intf/pncconf/pncconf.glade:63203 -#: src/emc/usr_intf/pncconf/pncconf.glade:63215 -#: src/emc/usr_intf/pncconf/pncconf.glade:63227 -#: src/emc/usr_intf/pncconf/pncconf.glade:63239 -#: src/emc/usr_intf/pncconf/pncconf.glade:63251 -#: src/emc/usr_intf/pncconf/pncconf.glade:63263 -#: src/emc/usr_intf/pncconf/pncconf.glade:64226 -#: src/emc/usr_intf/pncconf/pncconf.glade:64238 -#: src/emc/usr_intf/pncconf/pncconf.glade:64250 -#: src/emc/usr_intf/pncconf/pncconf.glade:64262 -#: src/emc/usr_intf/pncconf/pncconf.glade:64274 -#: src/emc/usr_intf/pncconf/pncconf.glade:64286 -#: src/emc/usr_intf/pncconf/pncconf.glade:64408 -#: src/emc/usr_intf/pncconf/pncconf.glade:64420 -#: src/emc/usr_intf/pncconf/pncconf.glade:65231 -#: src/emc/usr_intf/pncconf/pncconf.glade:65243 -#: src/emc/usr_intf/pncconf/pncconf.glade:65359 -#: src/emc/usr_intf/pncconf/pncconf.glade:65371 -#: src/emc/usr_intf/pncconf/pncconf.glade:65383 -#: src/emc/usr_intf/pncconf/pncconf.glade:65395 -#: src/emc/usr_intf/pncconf/pncconf.glade:65407 -#: src/emc/usr_intf/pncconf/pncconf.glade:65419 -#: src/emc/usr_intf/pncconf/pncconf.glade:67091 -msgid "0" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 +#, fuzzy +msgid "Coolant Flood" +msgstr "Enfriador:" -#: src/emc/usr_intf/touchy/touchy.glade:980 -msgid "3" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:370 +#, fuzzy +msgid "ESTOP Out" +msgstr "DETENER" -#: src/emc/usr_intf/touchy/touchy.glade:997 -msgid "2" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +msgid "Amplifier Enable" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1014 -msgid "1" +#: src/emc/usr_intf/stepconf/stepconf.py:194 +#: src/emc/usr_intf/pncconf/pncconf.py:371 +msgid "Charge Pump" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1031 -msgid "6" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 0" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1048 -msgid "5" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 1" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1065 -msgid "4" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 2" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1082 -msgid "9" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 3" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1097 -msgid "8" +#: src/emc/usr_intf/stepconf/stepconf.py:196 +#: src/emc/usr_intf/stepconf/stepconf.py:215 +#: src/emc/usr_intf/stepconf/pport1.glade:18 +#: src/emc/usr_intf/stepconf/pport2.glade:1406 +#: src/emc/usr_intf/stepconf/pport2.glade:1420 +msgid "Unused" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1112 -msgid "7" +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 +#, fuzzy +msgid "ESTOP In" +msgstr "DETENER" + +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 +msgid "Probe In" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1297 +#: src/emc/usr_intf/stepconf/stepconf.py:199 #, fuzzy -msgid "Flood On" -msgstr "Enfriador" +msgid "Spindle Index" +msgstr "Controlar portabrocas:" -#: src/emc/usr_intf/touchy/touchy.glade:1308 +#: src/emc/usr_intf/stepconf/stepconf.py:199 #, fuzzy -msgid "Flood Off" -msgstr "Enfriador" +msgid "Spindle Phase A" +msgstr "Encender freno del Portabrocas" -#: src/emc/usr_intf/touchy/touchy.glade:1324 +#: src/emc/usr_intf/stepconf/stepconf.py:199 #, fuzzy -msgid "Mist On" -msgstr "Neblina" +msgid "Spindle Phase B" +msgstr "Encender freno del Portabrocas" -#: src/emc/usr_intf/touchy/touchy.glade:1339 +#: src/emc/usr_intf/stepconf/stepconf.py:200 #, fuzzy -msgid "Mist Off" -msgstr "Neblina" +msgid "Home X" +msgstr "Punto de referencia" -#: src/emc/usr_intf/touchy/touchy.glade:1362 +#: src/emc/usr_intf/stepconf/stepconf.py:200 #, fuzzy -msgid "Coolant" -msgstr "Restaurar" +msgid "Home Y" +msgstr "Punto de referencia" -#: src/emc/usr_intf/touchy/touchy.glade:1448 +#: src/emc/usr_intf/stepconf/stepconf.py:200 #, fuzzy -msgid "Spindle Off" -msgstr "Apagar freno de portabrocas" +msgid "Home Z" +msgstr "Punto de referencia" -#: src/emc/usr_intf/touchy/touchy.glade:1501 -#: src/emc/usr_intf/touchy/touchy.glade:2578 +#: src/emc/usr_intf/stepconf/stepconf.py:200 #, fuzzy -msgid "Spindle speed:" -msgstr "Controlar portabrocas:" +msgid "Home A" +msgstr "Restaurar todos los ejes" -#: src/emc/usr_intf/touchy/touchy.glade:1513 -#: src/emc/usr_intf/touchy/touchy.glade:2707 -msgid "label26" +#: src/emc/usr_intf/stepconf/stepconf.py:201 +msgid "Minimum Limit + Home X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1539 -#, fuzzy -msgid "Spindle" -msgstr "Restaurar" - -#: src/emc/usr_intf/touchy/touchy.glade:1597 -msgid "file.ngc" +#: src/emc/usr_intf/stepconf/stepconf.py:201 +msgid "Minimum Limit + Home Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1812 -#: src/emc/usr_intf/touchy/touchy.glade:2017 -#: src/emc/usr_intf/touchy/touchy.glade:2037 -#: src/emc/usr_intf/touchy/touchy.glade:2057 -#: src/emc/usr_intf/touchy/touchy.glade:2077 -#: src/emc/usr_intf/touchy/touchy.glade:2097 -#: src/emc/usr_intf/touchy/touchy.glade:2117 -#: src/emc/usr_intf/touchy/touchy.glade:2137 -#: src/emc/usr_intf/touchy/touchy.glade:2157 -#: src/emc/usr_intf/touchy/touchy.glade:2177 -msgid "M2" +#: src/emc/usr_intf/stepconf/stepconf.py:202 +msgid "Minimum Limit + Home Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2244 -#: src/emc/usr_intf/touchy/touchy.glade:2374 -#, fuzzy -msgid "Page" -msgstr "Restaurar" +#: src/emc/usr_intf/stepconf/stepconf.py:202 +msgid "Minimum Limit + Home A" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2308 -msgid "Start Point" +#: src/emc/usr_intf/stepconf/stepconf.py:203 +msgid "Maximum Limit + Home X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2452 -msgid "Loaded File" +#: src/emc/usr_intf/stepconf/stepconf.py:203 +msgid "Maximum Limit + Home Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2488 -msgid "Loaded file:" +#: src/emc/usr_intf/stepconf/stepconf.py:204 +msgid "Maximum Limit + Home Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2499 -#, fuzzy -msgid "Interpreted line:" -msgstr "Lista de intérprete" +#: src/emc/usr_intf/stepconf/stepconf.py:204 +msgid "Maximum Limit + Home A" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2513 -#, fuzzy -msgid "Distance:" -msgstr "Distancia:" +#: src/emc/usr_intf/stepconf/stepconf.py:205 +msgid "Both Limit + Home X" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2526 -#: src/emc/usr_intf/stepconf/stepconf.glade:4148 -#: src/emc/usr_intf/pncconf/pncconf.glade:60476 -#: src/emc/usr_intf/pncconf/pncconf.glade:61571 -#: src/emc/usr_intf/pncconf/pncconf.glade:62664 -#: src/emc/usr_intf/pncconf/pncconf.glade:63757 -#: src/emc/usr_intf/pncconf/pncconf.glade:64856 -msgid "Velocity:" +#: src/emc/usr_intf/stepconf/stepconf.py:205 +msgid "Both Limit + Home Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2539 -msgid "Delay:" +#: src/emc/usr_intf/stepconf/stepconf.py:206 +msgid "Both Limit + Home Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2552 -msgid "On limit switch:" +#: src/emc/usr_intf/stepconf/stepconf.py:206 +msgid "Both Limit + Home A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2565 -#, fuzzy -msgid "Spindle direction:" -msgstr "Encender freno del Portabrocas" +#: src/emc/usr_intf/stepconf/stepconf.py:207 +msgid "Minimum Limit X" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2591 -#, fuzzy -msgid "Loaded tool:" -msgstr "Sin herramienta" +#: src/emc/usr_intf/stepconf/stepconf.py:207 +msgid "Minimum Limit Y" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2604 -#: src/emc/usr_intf/touchy/touchy.glade:2955 -msgid "label19" +#: src/emc/usr_intf/stepconf/stepconf.py:208 +msgid "Minimum Limit Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2617 -msgid "label20" +#: src/emc/usr_intf/stepconf/stepconf.py:208 +msgid "Minimum Limit A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2632 -#: src/emc/usr_intf/touchy/touchy.glade:2779 -#: src/emc/usr_intf/touchy/touchy.glade:2808 -#: src/emc/usr_intf/touchy/touchy.glade:2912 -#: src/emc/usr_intf/touchy/touchy.glade:2927 -msgid "label21" +#: src/emc/usr_intf/stepconf/stepconf.py:209 +msgid "Maximum Limit X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2647 -msgid "label22" +#: src/emc/usr_intf/stepconf/stepconf.py:209 +msgid "Maximum Limit Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2662 -msgid "label23" +#: src/emc/usr_intf/stepconf/stepconf.py:210 +msgid "Maximum Limit Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2677 -msgid "label24" +#: src/emc/usr_intf/stepconf/stepconf.py:210 +msgid "Maximum Limit A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2692 -msgid "label25" +#: src/emc/usr_intf/stepconf/stepconf.py:211 +msgid "Both Limit X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2722 -msgid "label27" +#: src/emc/usr_intf/stepconf/stepconf.py:211 +msgid "Both Limit Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2737 -msgid "Prepped tool:" +#: src/emc/usr_intf/stepconf/stepconf.py:212 +msgid "Both Limit Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2750 -msgid "label28" +#: src/emc/usr_intf/stepconf/stepconf.py:212 +msgid "Both Limit A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2765 -msgid "Running line:" +#: src/emc/usr_intf/stepconf/stepconf.py:213 +#, fuzzy +msgid "All limits" +msgstr "Todos los archivos" + +#: src/emc/usr_intf/stepconf/stepconf.py:213 +msgid "All home" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2794 +#: src/emc/usr_intf/stepconf/stepconf.py:213 #, fuzzy -msgid "XY Rotation:" -msgstr "Posicion:" +msgid "All limits + homes" +msgstr "Todos los archivos" -#: src/emc/usr_intf/touchy/touchy.glade:2823 +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 0" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 1" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 2" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 3" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:218 #, fuzzy -msgid "Tool length:" -msgstr "Tipo de pieza" +msgid "Forward" +msgstr "Controlar portabrocas:" -#: src/emc/usr_intf/touchy/touchy.glade:2836 -msgid "label52" +#: src/emc/usr_intf/stepconf/stepconf.py:219 +msgid "Done" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2851 +#: src/emc/usr_intf/stepconf/stepconf.py:220 msgid "" -"G1 G2 G3\n" -"M1 M2 M3\n" -"F1 S1" +"OK to replace existing custom ladder program?\n" +"Existing Custom.clp will be renamed custom_backup.clp.\n" +"Any existing file named -custom_backup.clp- will be lost. " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2870 -#, fuzzy -msgid "Active codes:" -msgstr "Activar Codigo-G:" +#: src/emc/usr_intf/stepconf/stepconf.py:221 +#: src/emc/usr_intf/pncconf/pncconf.py:8163 +msgid "" +"You edited a ladder program and have selected a different program to copy to " +"your configuration file.\n" +"The edited program will be lost.\n" +"\n" +"Are you sure? " +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2883 -msgid "G5x Offset:" +#: src/emc/usr_intf/stepconf/stepconf.py:222 +msgid "" +"You need to designate an E-stop input pin in the Parallel Port Setup page " +"for this program." msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2898 -msgid "G92 Offset:" +#: src/emc/usr_intf/stepconf/stepconf.py:223 +msgid "" +"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" +"Existing custompanel.xml and custom_postgui.hal will be renamed " +"custompanel_backup.xml and postgui_backup.hal.\n" +"Any existing file named custompanel_backup.xml and custom_postgui.hal will " +"be lost. " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2942 -msgid "Loaded file lines:" +#: src/emc/usr_intf/stepconf/stepconf.py:224 +msgid "Quit Stepconf and discard changes?" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2971 -msgid "Pockets:" +#: src/emc/usr_intf/stepconf/stepconf.py:225 +msgid "" +"The configuration has been built and saved.\n" +"Do you want to quit?" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2984 +#: src/emc/usr_intf/stepconf/stepconf.py:226 msgid "" -"1\n" -"2\n" -"3" +"You are using a simulated-realtime version of Machinekit, so testing / " +"tuning of hardware is unavailable." msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3009 -msgid "Status" +#: src/emc/usr_intf/stepconf/stepconf.py:227 +#, python-format +msgid "" +"You are using a realtime version of Machinekit but didn't load a realtime " +"kernel so testing / tuning of hardware is unavailable.\n" +"This is possibly because you updated the OS and it doesn't automatically " +"load the RTAI kernel anymore.\n" +"You are using the %(actual)s kernel.\n" +"You need to use kernel:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3038 -#, fuzzy -msgid "Control Font:" -msgstr "Ctrl-M" +#: src/emc/usr_intf/stepconf/stepconf.py:246 +msgid "my-mill" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3050 -msgid "DRO Font:" +#: src/emc/usr_intf/stepconf/stepconf.py:585 +#, python-format +msgid "File %r was modified since it was written by stepconf" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3064 -msgid "Error Font:" +#: src/emc/usr_intf/stepconf/stepconf.py:588 +msgid "" +"Saving this configuration file will discard configuration changes made " +"outside stepconf." msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3081 +#: src/emc/usr_intf/stepconf/stepconf.py:603 +#: src/emc/usr_intf/pncconf/pncconf.py:1318 #, fuzzy -msgid "ControlFont" -msgstr "Ctrl-M" +msgid "Continue? " +msgstr "Continuar" -#: src/emc/usr_intf/touchy/touchy.glade:3100 -msgid "DRO Font" +#: src/emc/usr_intf/stepconf/stepconf.py:604 +#: src/emc/usr_intf/pncconf/pncconf.py:1319 +msgid "yY" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3121 -msgid "Error Font" +#: src/emc/usr_intf/stepconf/stepconf.py:689 +#: src/emc/usr_intf/pncconf/pncconf.py:3591 +#, python-format +msgid "launch %s" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3139 -msgid "Listing Font:" +#: src/emc/usr_intf/stepconf/stepconf.py:693 +msgid "Desktop Launcher for Machinekit config made by Stepconf" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3156 -msgid "Listing Font" +#: src/emc/usr_intf/stepconf/stepconf.py:860 +#: src/emc/usr_intf/stepconf/pages.py:145 +msgid "Other" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3176 -msgid "Hide pointer" +#: src/emc/usr_intf/stepconf/stepconf.py:1295 +#: src/emc/usr_intf/pncconf/pncconf.py:9302 +#, python-format +msgid "%s Axis Test" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3187 -#, fuzzy -msgid "Show pointer" -msgstr "Mostrar vista preliminar" - -#: src/emc/usr_intf/touchy/touchy.glade:3214 -msgid "Theme:" +#: src/emc/usr_intf/stepconf/stepconf.py:1298 +#: src/emc/usr_intf/stepconf/pages.py:617 +msgid "deg / s" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3228 -msgid "default\n" +#: src/emc/usr_intf/stepconf/stepconf.py:1299 +#: src/emc/usr_intf/stepconf/pages.py:618 +msgid "deg / s²" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3252 -msgid "Display Options" +#: src/emc/usr_intf/stepconf/stepconf.py:1300 +#: src/emc/usr_intf/stepconf/pages.py:619 +msgid "deg" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3286 -msgid "Inch" +#: src/emc/usr_intf/stepconf/stepconf.py:1312 +#: src/emc/usr_intf/stepconf/pages.py:623 +#: src/emc/usr_intf/stepconf/axisx.glade:629 +#: src/emc/usr_intf/stepconf/axisy.glade:615 +#: src/emc/usr_intf/stepconf/axisz.glade:615 +#: src/emc/usr_intf/stepconf/axisa.glade:629 +#: src/emc/usr_intf/pncconf/pncconf.glade:64717 +msgid "mm / s" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3349 -msgid "Position Readout" +#: src/emc/usr_intf/stepconf/stepconf.py:1313 +#: src/emc/usr_intf/stepconf/pages.py:624 +#: src/emc/usr_intf/stepconf/axisx.glade:645 +#: src/emc/usr_intf/stepconf/axisy.glade:631 +#: src/emc/usr_intf/stepconf/axisz.glade:631 +#: src/emc/usr_intf/stepconf/axisa.glade:645 +#: src/emc/usr_intf/pncconf/pncconf.glade:64732 +msgid "mm / s²" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3379 -msgid "Workpiece" +#: src/emc/usr_intf/stepconf/stepconf.py:1326 +#: src/emc/usr_intf/stepconf/pages.py:629 +msgid "in / s" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3390 -msgid "Fixture" +#: src/emc/usr_intf/stepconf/stepconf.py:1327 +#: src/emc/usr_intf/stepconf/pages.py:630 +msgid "in / s²" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3410 +#: src/emc/usr_intf/stepconf/pages.py:189 #, fuzzy -msgid "Tool Setting" -msgstr "Restaurar" - -#: src/emc/usr_intf/touchy/touchy.glade:3441 -msgid "Delete / lines" -msgstr "" - -#: src/emc/usr_intf/touchy/touchy.glade:3456 -msgid "Keep / lines" -msgstr "" +msgid "Machinekit 'stepconf' configuration files" +msgstr "Mostrar configuracion _HAl" -#: src/emc/usr_intf/touchy/touchy.glade:3473 +#: src/emc/usr_intf/stepconf/pages.py:190 +#: src/emc/usr_intf/pncconf/pncconf.py:4257 #, fuzzy -msgid "Pause on M1" -msgstr "_Pausa" +msgid "Modify Existing Configuration" +msgstr "Mostrar configuracion _HAl" -#: src/emc/usr_intf/touchy/touchy.glade:3484 -msgid "Ignore M1" +#: src/emc/usr_intf/stepconf/pages.py:616 +msgid "degree / rev" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3504 -#, fuzzy -msgid "Program Options" -msgstr "Restaurar" +#: src/emc/usr_intf/stepconf/pages.py:620 +msgid "Steps / deg" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3531 -msgid "Preferences" +#: src/emc/usr_intf/stepconf/pages.py:622 +#: src/emc/usr_intf/stepconf/axisx.glade:613 +#: src/emc/usr_intf/stepconf/axisy.glade:599 +#: src/emc/usr_intf/stepconf/axisz.glade:599 +#: src/emc/usr_intf/stepconf/axisa.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / rev" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3567 -msgid "FO: 100%" +#: src/emc/usr_intf/stepconf/pages.py:626 +#: src/emc/usr_intf/stepconf/axisx.glade:15 +#: src/emc/usr_intf/stepconf/axisy.glade:15 +#: src/emc/usr_intf/stepconf/axisz.glade:15 +#: src/emc/usr_intf/stepconf/axisa.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Steps / mm" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3582 -msgid "SO: 100%" +#: src/emc/usr_intf/stepconf/pages.py:628 +msgid "rev / in" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3596 -msgid "MV: 100" +#: src/emc/usr_intf/stepconf/pages.py:632 +msgid "Steps / in" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3610 -msgid "Jogging" +#: src/emc/usr_intf/stepconf/build_INI.py:45 +#: src/emc/usr_intf/stepconf/build_HAL.py:41 +#, python-format +msgid "# Generated by stepconf 1.1 at %s" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3637 -msgid ".01" +#: src/emc/usr_intf/stepconf/build_INI.py:46 +#: src/emc/usr_intf/stepconf/build_HAL.py:42 +#: src/emc/usr_intf/pncconf/pncconf.py:1328 +#: src/emc/usr_intf/pncconf/pncconf.py:2422 +msgid "# If you make changes to this file, they will be" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3650 -msgid ".001" +#: src/emc/usr_intf/stepconf/build_INI.py:47 +#: src/emc/usr_intf/stepconf/build_HAL.py:43 +msgid "# overwritten when you run stepconf again" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3666 -msgid ".0001" +#: src/emc/usr_intf/stepconf/build_INI.py:126 +msgid "# add halui MDI commands here (max 64) " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3694 -msgid " X " +#: src/emc/usr_intf/stepconf/build_HAL.py:275 +#: src/emc/usr_intf/pncconf/pncconf.py:3131 +msgid "# **** Setup for external estop ladder program -START ****" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3706 -msgid " Y " +#: src/emc/usr_intf/stepconf/build_HAL.py:282 +#: src/emc/usr_intf/pncconf/pncconf.py:3138 +msgid "# **** Setup for external estop ladder program -END ****" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3721 -msgid " Z " +#: src/emc/usr_intf/stepconf/build_HAL.py:302 +#: src/emc/usr_intf/pncconf/pncconf.py:3165 +msgid "" +"# Load Classicladder with modbus master included (GUI must run for Modbus)" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3736 -msgid " A " +#: src/emc/usr_intf/stepconf/build_HAL.py:305 +#: src/emc/usr_intf/pncconf/pncconf.py:3170 +msgid "# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3752 -msgid " B " +#: src/emc/usr_intf/stepconf/build_HAL.py:315 +#: src/emc/usr_intf/pncconf/pncconf.py:3252 +msgid "Include your PyVCP panel here.\n" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3770 -msgid " C " +#: src/emc/usr_intf/stepconf/build_HAL.py:324 +#: src/emc/usr_intf/stepconf/build_HAL.py:370 +msgid "# Include your customized HAL commands here" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3788 -msgid " U " +#: src/emc/usr_intf/stepconf/build_HAL.py:325 +msgid "" +"# The commands in this file are run after the AXIS GUI (including PyVCP " +"panel) starts" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3804 -msgid " V " +#: src/emc/usr_intf/stepconf/build_HAL.py:328 +#: src/emc/usr_intf/pncconf/pncconf.py:3280 +msgid "# **** Setup of spindle speed display using pyvcp -START ****" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3822 -msgid " W " +#: src/emc/usr_intf/stepconf/build_HAL.py:330 +msgid "# **** Use ACTUAL spindle velocity from spindle encoder" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3855 -#, fuzzy -msgid "Handwheel" -msgstr "Restaurar" +#: src/emc/usr_intf/stepconf/build_HAL.py:331 +msgid "" +"# **** spindle-velocity-feedback-rps bounces around so we filter it with " +"lowpass" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:53 +#: src/emc/usr_intf/stepconf/build_HAL.py:332 msgid "" -"Stepconf encountered an error. The following information may be useful in " -"troubleshooting:\n" -"\n" +"# **** spindle-velocity-feedback-rps is signed so we use absolute component " +"to remove sign" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:70 -#: src/emc/usr_intf/pncconf/pncconf.py:133 -msgid "Gecko 201" +#: src/emc/usr_intf/stepconf/build_HAL.py:333 +msgid "# **** ACTUAL velocity is in RPS not RPM so we scale it." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:71 -#: src/emc/usr_intf/pncconf/pncconf.py:134 -msgid "Gecko 202" +#: src/emc/usr_intf/stepconf/build_HAL.py:342 +msgid "# **** set up spindle at speed indicator ****" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:72 -#: src/emc/usr_intf/pncconf/pncconf.py:135 -msgid "Gecko 203v" +#: src/emc/usr_intf/stepconf/build_HAL.py:355 +msgid "" +"# **** Use COMMANDED spindle velocity from LinuxCNC because no spindle " +"encoder was specified" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:73 -#: src/emc/usr_intf/pncconf/pncconf.py:136 -msgid "Gecko 210" +#: src/emc/usr_intf/stepconf/build_HAL.py:371 +msgid "# This file will not be overwritten when you run stepconf again" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:74 -#: src/emc/usr_intf/pncconf/pncconf.py:137 -msgid "Gecko 212" +#: src/emc/usr_intf/stepconf/build_HAL.py:412 +msgid "# This file sets up simulated limits/home/spindle encoder hardware." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:75 -#: src/emc/usr_intf/pncconf/pncconf.py:138 -msgid "Gecko 320" +#: src/emc/usr_intf/stepconf/build_HAL.py:413 +msgid "# This is a generated file do not edit." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:76 -#: src/emc/usr_intf/pncconf/pncconf.py:139 -msgid "Gecko 540" +#: src/emc/usr_intf/stepconf/main_page.glade:35 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Acceleration:" +msgstr "Alternando" + +#: src/emc/usr_intf/stepconf/main_page.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Jog:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:77 -#: src/emc/usr_intf/pncconf/pncconf.py:140 -msgid "L297" +#: src/emc/usr_intf/stepconf/main_page.glade:63 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Test Area:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:78 -#: src/emc/usr_intf/pncconf/pncconf.py:141 -msgid "PMDX-150" +#: src/emc/usr_intf/stepconf/main_page.glade:97 +msgid "mm/s^2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:79 -#: src/emc/usr_intf/pncconf/pncconf.py:142 -msgid "Sherline" +#: src/emc/usr_intf/stepconf/main_page.glade:138 +msgid "mm/s" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:80 -#: src/emc/usr_intf/pncconf/pncconf.py:143 -msgid "Xylotex 8S-3" +#: src/emc/usr_intf/stepconf/main_page.glade:400 +msgid "±" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:81 -#: src/emc/usr_intf/pncconf/pncconf.py:144 -msgid "Parker-Compumotor oem750" +#: src/emc/usr_intf/stepconf/main_page.glade:423 +#, fuzzy +msgid "Stepconf -Stepper Configuration Wizard" +msgstr "Mostrar configuracion _HAl" + +#: src/emc/usr_intf/stepconf/main_page.glade:503 +#: src/emc/usr_intf/pncconf/pncconf.glade:2054 +#: src/emc/usr_intf/pncconf/pncconf.glade:2067 +#: src/emc/usr_intf/pncconf/pncconf.glade:2080 +#: src/emc/usr_intf/pncconf/pncconf.glade:2093 +#: src/emc/usr_intf/pncconf/pncconf.glade:2106 +#: src/emc/usr_intf/pncconf/pncconf.glade:2119 +#: src/emc/usr_intf/pncconf/pncconf.glade:2132 +#: src/emc/usr_intf/pncconf/pncconf.glade:2145 +#: src/emc/usr_intf/pncconf/pncconf.glade:2156 +#: src/emc/usr_intf/pncconf/pncconf.glade:2169 +#: src/emc/usr_intf/pncconf/pncconf.glade:2182 +#: src/emc/usr_intf/pncconf/pncconf.glade:2528 +#: src/emc/usr_intf/pncconf/pncconf.glade:2541 +#: src/emc/usr_intf/pncconf/pncconf.glade:2554 +#: src/emc/usr_intf/pncconf/pncconf.glade:8104 +#: src/emc/usr_intf/pncconf/pncconf.glade:8139 +#: src/emc/usr_intf/pncconf/pncconf.glade:63377 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:1342 +#: src/emc/usr_intf/gscreen/gscreen.glade:1360 +#: src/emc/usr_intf/gscreen/gscreen.glade:1378 +msgid "label" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:82 -#: src/emc/usr_intf/pncconf/pncconf.py:145 -msgid "JVL-SMD41 or 42" +#: src/emc/usr_intf/stepconf/main_page.glade:605 +msgid "" +"This program creates configuration files (.ini and .hal) for \"step and " +"direction\" milling machines and lathes connected to the PC parallel port.\n" +"\n" +"Stepconf requires a minimum 800 X 600 display resolution." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:83 -#: src/emc/usr_intf/pncconf/pncconf.py:146 -msgid "Hobbycnc Pro Chopper" +#: src/emc/usr_intf/stepconf/main_page.glade:628 +#: src/emc/usr_intf/pncconf/pncconf.glade:28799 +#: src/emc/usr_intf/pncconf/pncconf.glade:35720 +#: src/emc/usr_intf/pncconf/pncconf.glade:42643 +#: src/emc/usr_intf/pncconf/pncconf.glade:49566 +#: src/emc/usr_intf/pncconf/pncconf.glade:56489 +msgid "page 1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:84 -#: src/emc/usr_intf/pncconf/pncconf.py:147 -msgid "Keling 4030" +#: src/emc/usr_intf/stepconf/base.glade:18 +msgid "XYZ" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -#, fuzzy -msgid "X Step" -msgstr "Pa_so" +#: src/emc/usr_intf/stepconf/base.glade:21 +msgid "XYZA" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -#, fuzzy -msgid "X Direction" -msgstr "Escanear dirección" +#: src/emc/usr_intf/stepconf/base.glade:24 +msgid "XZ (Lathe)" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -#, fuzzy -msgid "Y Step" -msgstr "Pa_so" +#: src/emc/usr_intf/stepconf/base.glade:79 +msgid "Step _Time:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -#, fuzzy -msgid "Y Direction" -msgstr "Escanear dirección" +#: src/emc/usr_intf/stepconf/base.glade:113 +#: src/emc/usr_intf/stepconf/base.glade:165 +#: src/emc/usr_intf/stepconf/base.glade:219 +#: src/emc/usr_intf/stepconf/base.glade:271 +#: src/emc/usr_intf/stepconf/base.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:443 +#: src/emc/usr_intf/pncconf/pncconf.glade:8226 +msgid "ns" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -#, fuzzy -msgid "Z Step" -msgstr "Pa_so" +#: src/emc/usr_intf/stepconf/base.glade:127 +msgid "Step _Space:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -#, fuzzy -msgid "Z Direction" -msgstr "Escanear dirección" +#: src/emc/usr_intf/stepconf/base.glade:181 +msgid "Direction _Hold:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -#, fuzzy -msgid "A Step" -msgstr "Pa_so" +#: src/emc/usr_intf/stepconf/base.glade:235 +msgid "_Direction Setup:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -#, fuzzy -msgid "A Direction" -msgstr "Escanear dirección" +#: src/emc/usr_intf/stepconf/base.glade:338 +msgid "Driver Timing Settings" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -#, fuzzy -msgid "Spindle ON" -msgstr "Portabrocas:" +#: src/emc/usr_intf/stepconf/base.glade:351 +msgid "" +"_Test Base\n" +"Period Jitter " +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:557 +#: src/emc/usr_intf/stepconf/base.glade:372 #, fuzzy -msgid "Spindle PWM" -msgstr "Portabrocas:" +msgid "Machine _Name:" +msgstr "Coordenada absoluta" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 +#: src/emc/usr_intf/stepconf/base.glade:386 #, fuzzy -msgid "Spindle Brake" -msgstr "Encender freno del Portabrocas" +msgid "_Axis configuration:" +msgstr "Mostrar configuracion _HAl" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 +#: src/emc/usr_intf/stepconf/base.glade:401 #, fuzzy -msgid "Coolant Mist" -msgstr "Enfriador:" +msgid "Reset Default machine _units:" +msgstr "Coordenada absoluta" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 -#, fuzzy -msgid "Coolant Flood" -msgstr "Enfriador:" +#: src/emc/usr_intf/stepconf/base.glade:416 +#: src/emc/usr_intf/pncconf/pncconf.glade:245 +msgid "Configuration directory:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:442 -#, fuzzy -msgid "ESTOP Out" -msgstr "DETENER" +#: src/emc/usr_intf/stepconf/base.glade:430 +msgid "D_river type:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -msgid "Amplifier Enable" +#: src/emc/usr_intf/stepconf/base.glade:545 +msgid "" +"Driver characteristics: (Multiply by 1000 for times specified in µs or " +"microseconds)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:157 -#: src/emc/usr_intf/pncconf/pncconf.py:443 -msgid "Charge Pump" +#: src/emc/usr_intf/stepconf/base.glade:573 +msgid "Base Period Maximum _Jitter:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 0" +#: src/emc/usr_intf/stepconf/base.glade:630 +msgid "One Parport" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 1" +#: src/emc/usr_intf/stepconf/base.glade:646 +msgid "Two Parports" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 2" +#: src/emc/usr_intf/stepconf/base.glade:663 +msgid "Three Parports" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 3" +#: src/emc/usr_intf/stepconf/base.glade:698 +msgid "Min Base Period:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:159 -#: src/emc/usr_intf/stepconf/stepconf.py:178 -msgid "Unused" +#: src/emc/usr_intf/stepconf/base.glade:735 +msgid "Max step rate:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 -#, fuzzy -msgid "ESTOP In" -msgstr "DETENER" - -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 -msgid "Probe In" +#: src/emc/usr_intf/stepconf/base.glade:870 +msgid "MM" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:162 +#: src/emc/usr_intf/stepconf/start.glade:11 #, fuzzy -msgid "Spindle Index" -msgstr "Controlar portabrocas:" +msgid "Create a _new configuration" +msgstr "Mostrar configuracion _HAl" -#: src/emc/usr_intf/stepconf/stepconf.py:162 -#, fuzzy -msgid "Spindle Phase A" -msgstr "Encender freno del Portabrocas" +#: src/emc/usr_intf/stepconf/start.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:130 +msgid "Modify a configuration already created with this program" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:162 -#, fuzzy -msgid "Spindle Phase B" -msgstr "Encender freno del Portabrocas" +#: src/emc/usr_intf/stepconf/start.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:118 +msgid "Do you wish to:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -#, fuzzy -msgid "Home X" -msgstr "Punto de referencia" +#: src/emc/usr_intf/stepconf/start.glade:61 +#: src/emc/usr_intf/pncconf/pncconf.glade:100 +msgid "" +"If you have made modifications to this configuration outside this program, " +"they will be lost when you select \"Modify a configuration\"" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -#, fuzzy -msgid "Home Y" -msgstr "Punto de referencia" +#: src/emc/usr_intf/stepconf/start.glade:76 +msgid "Create a desktop _shortcut (symlink) to configuration files." +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -#, fuzzy -msgid "Home Z" -msgstr "Punto de referencia" +#: src/emc/usr_intf/stepconf/start.glade:93 +msgid "Create a desktop _launcher to start LinuxCNC with this configuration." +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/start.glade:124 #, fuzzy -msgid "Home A" -msgstr "Restaurar todos los ejes" +msgid "Create simulated hardware configuration." +msgstr "Mostrar configuracion _HAl" -#: src/emc/usr_intf/stepconf/stepconf.py:164 -msgid "Minimum Limit + Home X" +#: src/emc/usr_intf/stepconf/pport1.glade:35 +msgid "Xylotex" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:164 -msgid "Minimum Limit + Home Y" +#: src/emc/usr_intf/stepconf/pport1.glade:38 +msgid "TB6560 3 axes" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:165 -msgid "Minimum Limit + Home Z" +#: src/emc/usr_intf/stepconf/pport1.glade:41 +msgid "TB6560 4 axes" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:165 -msgid "Minimum Limit + Home A" +#: src/emc/usr_intf/stepconf/pport1.glade:59 +#: src/emc/usr_intf/pncconf/pncconf.glade:62915 +msgid "Pin _1:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:166 -msgid "Maximum Limit + Home X" +#: src/emc/usr_intf/stepconf/pport1.glade:74 +#: src/emc/usr_intf/stepconf/pport2.glade:768 +#: src/emc/usr_intf/pncconf/pncconf.glade:61685 +#: src/emc/usr_intf/pncconf/pncconf.glade:62901 +msgid "Pin _2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:166 -msgid "Maximum Limit + Home Y" +#: src/emc/usr_intf/stepconf/pport1.glade:89 +#: src/emc/usr_intf/stepconf/pport2.glade:814 +#: src/emc/usr_intf/pncconf/pncconf.glade:61668 +#: src/emc/usr_intf/pncconf/pncconf.glade:62887 +msgid "Pin _3:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:167 -msgid "Maximum Limit + Home Z" +#: src/emc/usr_intf/stepconf/pport1.glade:104 +#: src/emc/usr_intf/stepconf/pport2.glade:860 +#: src/emc/usr_intf/pncconf/pncconf.glade:61651 +#: src/emc/usr_intf/pncconf/pncconf.glade:62873 +msgid "Pin _4:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:167 -msgid "Maximum Limit + Home A" +#: src/emc/usr_intf/stepconf/pport1.glade:119 +#: src/emc/usr_intf/stepconf/pport2.glade:906 +#: src/emc/usr_intf/pncconf/pncconf.glade:61634 +#: src/emc/usr_intf/pncconf/pncconf.glade:62859 +msgid "Pin _5:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:168 -msgid "Both Limit + Home X" +#: src/emc/usr_intf/stepconf/pport1.glade:134 +#: src/emc/usr_intf/stepconf/pport2.glade:952 +#: src/emc/usr_intf/pncconf/pncconf.glade:61617 +#: src/emc/usr_intf/pncconf/pncconf.glade:62845 +msgid "Pin _6:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:168 -msgid "Both Limit + Home Y" +#: src/emc/usr_intf/stepconf/pport1.glade:149 +#: src/emc/usr_intf/stepconf/pport2.glade:998 +#: src/emc/usr_intf/pncconf/pncconf.glade:61600 +#: src/emc/usr_intf/pncconf/pncconf.glade:62831 +msgid "Pin _7:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:169 -msgid "Both Limit + Home Z" +#: src/emc/usr_intf/stepconf/pport1.glade:164 +#: src/emc/usr_intf/stepconf/pport2.glade:1044 +#: src/emc/usr_intf/pncconf/pncconf.glade:61583 +#: src/emc/usr_intf/pncconf/pncconf.glade:62817 +msgid "Pin _8:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:169 -msgid "Both Limit + Home A" +#: src/emc/usr_intf/stepconf/pport1.glade:179 +#: src/emc/usr_intf/stepconf/pport2.glade:1090 +#: src/emc/usr_intf/pncconf/pncconf.glade:61566 +#: src/emc/usr_intf/pncconf/pncconf.glade:62803 +msgid "Pin _9:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:170 -msgid "Minimum Limit X" +#: src/emc/usr_intf/stepconf/pport1.glade:194 +#: src/emc/usr_intf/stepconf/pport2.glade:1137 +#: src/emc/usr_intf/pncconf/pncconf.glade:62789 +msgid "_Pin 14:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:170 -msgid "Minimum Limit Y" +#: src/emc/usr_intf/stepconf/pport1.glade:209 +#: src/emc/usr_intf/stepconf/pport2.glade:1185 +#: src/emc/usr_intf/pncconf/pncconf.glade:62775 +msgid "P_in 16:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:171 -msgid "Minimum Limit Z" +#: src/emc/usr_intf/stepconf/pport1.glade:224 +#: src/emc/usr_intf/stepconf/pport2.glade:1233 +#: src/emc/usr_intf/pncconf/pncconf.glade:62761 +msgid "Pi_n 17:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:171 -msgid "Minimum Limit A" +#: src/emc/usr_intf/stepconf/pport1.glade:470 +#: src/emc/usr_intf/stepconf/pport2.glade:692 +msgid "Outputs (PC to Mill):" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:172 -msgid "Maximum Limit X" +#: src/emc/usr_intf/stepconf/pport1.glade:483 +#: src/emc/usr_intf/stepconf/pport2.glade:427 +#: src/emc/usr_intf/pncconf/pncconf.glade:61701 +msgid "Pin 1_0:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:172 -msgid "Maximum Limit Y" +#: src/emc/usr_intf/stepconf/pport1.glade:500 +#: src/emc/usr_intf/stepconf/pport2.glade:475 +#: src/emc/usr_intf/pncconf/pncconf.glade:61717 +msgid "Pin 1_1:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:173 -msgid "Maximum Limit Z" +#: src/emc/usr_intf/stepconf/pport1.glade:517 +#: src/emc/usr_intf/stepconf/pport2.glade:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:61733 +msgid "Pin 1_2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:173 -msgid "Maximum Limit A" +#: src/emc/usr_intf/stepconf/pport1.glade:534 +#: src/emc/usr_intf/stepconf/pport2.glade:571 +#: src/emc/usr_intf/pncconf/pncconf.glade:61749 +msgid "Pin 1_3:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:174 -msgid "Both Limit X" +#: src/emc/usr_intf/stepconf/pport1.glade:551 +#: src/emc/usr_intf/stepconf/pport2.glade:619 +#: src/emc/usr_intf/pncconf/pncconf.glade:61765 +msgid "Pin 1_5:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:174 -msgid "Both Limit Y" +#: src/emc/usr_intf/stepconf/pport1.glade:590 +#: src/emc/usr_intf/stepconf/pport2.glade:16 +msgid "Inputs (Mill to PC):" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:175 -msgid "Both Limit Z" -msgstr "" +#: src/emc/usr_intf/stepconf/pport1.glade:618 +#: src/emc/usr_intf/stepconf/pport1.glade:632 +#: src/emc/usr_intf/stepconf/pport2.glade:29 +#: src/emc/usr_intf/stepconf/pport2.glade:702 +#: src/emc/usr_intf/pncconf/pncconf.glade:62335 +#: src/emc/usr_intf/pncconf/pncconf.glade:62348 +#, fuzzy +msgid "Invert" +msgstr "Invertir Imagen" -#: src/emc/usr_intf/stepconf/stepconf.py:175 -msgid "Both Limit A" +#: src/emc/usr_intf/stepconf/pport1.glade:1018 +msgid "Output pinout presets:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:176 -#, fuzzy -msgid "All limits" -msgstr "Todos los archivos" - -#: src/emc/usr_intf/stepconf/stepconf.py:176 -msgid "All home" +#: src/emc/usr_intf/stepconf/pport1.glade:1096 +msgid "Parport _Base Address:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:176 +#: src/emc/usr_intf/stepconf/pport1.glade:1132 #, fuzzy -msgid "All limits + homes" -msgstr "Todos los archivos" +msgid "Preset" +msgstr "_Resumir" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 0" +#: src/emc/usr_intf/stepconf/pport2.glade:47 +msgid "Pin 2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 1" +#: src/emc/usr_intf/stepconf/pport2.glade:94 +msgid "Pin 3:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 2" +#: src/emc/usr_intf/stepconf/pport2.glade:141 +msgid "Pin 4:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 3" +#: src/emc/usr_intf/stepconf/pport2.glade:188 +msgid "Pin 5:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:203 -msgid "my-mill" +#: src/emc/usr_intf/stepconf/pport2.glade:235 +msgid "Pin 6:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:215 -#: src/emc/usr_intf/stepconf/stepconf.py:217 -#: src/emc/usr_intf/pncconf/pncconf.py:983 -#: src/emc/usr_intf/pncconf/pncconf.py:985 -msgid "Enter Address" +#: src/emc/usr_intf/stepconf/pport2.glade:282 +msgid "Pin 7:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:375 -#, python-format -msgid "File %r was modified since it was written by stepconf" +#: src/emc/usr_intf/stepconf/pport2.glade:329 +msgid "Pin 8:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:378 -msgid "" -"Saving this configuration file will discard configuration changes made " -"outside stepconf." +#: src/emc/usr_intf/stepconf/pport2.glade:376 +msgid "Pin 9:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:393 -#: src/emc/usr_intf/pncconf/pncconf.py:1356 -#, fuzzy -msgid "Continue? " -msgstr "Continuar" - -#: src/emc/usr_intf/stepconf/stepconf.py:394 -#: src/emc/usr_intf/pncconf/pncconf.py:1357 -msgid "yY" +#: src/emc/usr_intf/stepconf/pport2.glade:721 +msgid "Pin _1: " msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:446 -#: src/emc/usr_intf/stepconf/stepconf.py:786 -#, python-format -msgid "# Generated by stepconf at %s" +#: src/emc/usr_intf/stepconf/pport2.glade:1431 +msgid "Out" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:447 -#: src/emc/usr_intf/stepconf/stepconf.py:787 -#: src/emc/usr_intf/pncconf/pncconf.py:1366 -#: src/emc/usr_intf/pncconf/pncconf.py:2369 -msgid "# If you make changes to this file, they will be" +#: src/emc/usr_intf/stepconf/pport2.glade:1434 +msgid "In" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:448 -#: src/emc/usr_intf/stepconf/stepconf.py:788 -msgid "# overwritten when you run stepconf again" -msgstr "" +#: src/emc/usr_intf/stepconf/spindle.glade:23 +#, fuzzy +msgid "Use spindle-at-speed:" +msgstr "Controlar portabrocas:" -#: src/emc/usr_intf/stepconf/stepconf.py:516 -msgid "# add halui MDI commands here (max 64) " +#: src/emc/usr_intf/stepconf/spindle.glade:64 +msgid "Speed display filter gain:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:991 -#: src/emc/usr_intf/pncconf/pncconf.py:2991 -msgid "# **** Setup for external estop ladder program -START ****" -msgstr "" +#: src/emc/usr_intf/stepconf/spindle.glade:99 +#, fuzzy +msgid "Calibration:" +msgstr "_Calibración" -#: src/emc/usr_intf/stepconf/stepconf.py:998 -#: src/emc/usr_intf/pncconf/pncconf.py:2998 -msgid "# **** Setup for external estop ladder program -END ****" -msgstr "" +#: src/emc/usr_intf/stepconf/spindle.glade:113 +#, fuzzy +msgid "_Speed 1:" +msgstr "Velocidad:" -#: src/emc/usr_intf/stepconf/stepconf.py:1018 -#: src/emc/usr_intf/pncconf/pncconf.py:3025 -msgid "" -"# Load Classicladder with modbus master included (GUI must run for Modbus)" +#: src/emc/usr_intf/stepconf/spindle.glade:129 +msgid "_PWM 1:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1021 -#: src/emc/usr_intf/pncconf/pncconf.py:3030 -msgid "# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI" -msgstr "" +#: src/emc/usr_intf/stepconf/spindle.glade:148 +#, fuzzy +msgid "S_peed 2:" +msgstr "Velocidad:" -#: src/emc/usr_intf/stepconf/stepconf.py:1031 -#: src/emc/usr_intf/pncconf/pncconf.py:3112 -msgid "Include your PyVCP panel here.\n" +#: src/emc/usr_intf/stepconf/spindle.glade:164 +msgid "P_WM 2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1040 -#: src/emc/usr_intf/stepconf/stepconf.py:1087 -msgid "# Include your customized HAL commands here" +#: src/emc/usr_intf/stepconf/spindle.glade:183 +msgid "PWM _Rate:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1041 -msgid "" -"# The commands in this file are run after the AXIS GUI (including PyVCP " -"panel) starts" +#: src/emc/usr_intf/stepconf/spindle.glade:285 +msgid "_Cycles per revolution:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1045 -#: src/emc/usr_intf/pncconf/pncconf.py:3140 -msgid "# **** Setup of spindle speed display using pyvcp -START ****" +#: src/emc/usr_intf/stepconf/spindle.glade:347 +msgid "Enter 0 Hz for \"PDM\" mode" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1047 -msgid "# **** Use ACTUAL spindle velocity from spindle encoder" +#: src/emc/usr_intf/stepconf/spindle.glade:360 +msgid "Scale %" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1048 -msgid "# **** spindle-velocity bounces around so we filter it with lowpass" +#: src/emc/usr_intf/stepconf/options.glade:50 +msgid "Include Halui user interface component" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1049 -msgid "" -"# **** spindle-velocity is signed so we use absolute component to remove sign" -msgstr "" +#: src/emc/usr_intf/stepconf/options.glade:102 +#: src/emc/usr_intf/pncconf/pncconf.glade:6753 +#, fuzzy +msgid "Blank program" +msgstr "Ejecutar Programa" -#: src/emc/usr_intf/stepconf/stepconf.py:1050 -msgid "# **** ACTUAL velocity is in RPS not RPM so we scale it." -msgstr "" +#: src/emc/usr_intf/stepconf/options.glade:119 +#: src/emc/usr_intf/pncconf/pncconf.glade:6768 +#, fuzzy +msgid "Spindle speed display " +msgstr "Controlar portabrocas:" -#: src/emc/usr_intf/stepconf/stepconf.py:1059 -msgid "# **** set up spindle at speed indicator ****" +#: src/emc/usr_intf/stepconf/options.glade:136 +#: src/emc/usr_intf/stepconf/options.glade:671 +#: src/emc/usr_intf/pncconf/pncconf.glade:6799 +#: src/emc/usr_intf/pncconf/pncconf.glade:7120 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Existing custom program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1072 -msgid "" -"# **** Use COMMANDED spindle velocity from LinuxCNC because no spindle " -"encoder was specified" +#: src/emc/usr_intf/stepconf/options.glade:153 +#: src/emc/usr_intf/stepconf/options.glade:688 +#: src/emc/usr_intf/pncconf/pncconf.glade:6814 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include connections to HAL" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1073 +#: src/emc/usr_intf/stepconf/options.glade:202 +#: src/emc/usr_intf/pncconf/pncconf.glade:6997 +#: src/emc/usr_intf/pncconf/pncconf.glade:7545 msgid "" -"# **** COMANDED velocity is signed so we use absolute component (abs.0) to " -"remove sign" +"_Display\n" +"sample\n" +"panel" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1088 -msgid "# This file will not be overwritten when you run stepconf again" +#: src/emc/usr_intf/stepconf/options.glade:243 +#: src/emc/usr_intf/pncconf/pncconf.glade:7056 +msgid "Include custom PyVCP GUI panel" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1095 -#, python-format -msgid "Generated by stepconf at %s" +#: src/emc/usr_intf/stepconf/options.glade:414 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (float) out pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1166 -#: src/emc/usr_intf/pncconf/pncconf.py:3451 -#, python-format -msgid "launch %s" +#: src/emc/usr_intf/stepconf/options.glade:429 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (float) in pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1170 -msgid "Desktop Launcher for LinuxCNC config made by Stepconf" +#: src/emc/usr_intf/stepconf/options.glade:444 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (s32) out pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1196 -#: src/emc/usr_intf/pncconf/pncconf.py:3700 -#, fuzzy, python-format -msgid "%s Axis Configuration" -msgstr "Mostrar configuracion _HAl" +#: src/emc/usr_intf/stepconf/options.glade:459 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (s32) in pins:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1238 -#: src/emc/usr_intf/stepconf/stepconf.py:1337 -msgid "Other" +#: src/emc/usr_intf/stepconf/options.glade:475 +msgid "Number of digital out pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1249 -msgid "Quit Stepconf and discard changes?" +#: src/emc/usr_intf/stepconf/options.glade:506 +msgid "Number of digital in pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1280 -msgid "" -"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " -"of hardware is unavailable." +#: src/emc/usr_intf/stepconf/options.glade:518 +msgid "setup number of external pins" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1283 -msgid "" -"You are using a realtime version of LinuxCNC but didn't load a realtime " -"kernel so testing / tuning of hardware is unavailable.\n" -"This is possibly because you updated the OS and it doesn't automatically " -"load the RTAI kernel anymore.\n" +#: src/emc/usr_intf/stepconf/options.glade:533 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include modbus master support" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1298 +#: src/emc/usr_intf/stepconf/options.glade:625 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "LinuxCNC 'stepconf' configuration files" -msgstr "Mostrar configuracion _HAl" +msgid "Blank ladder program" +msgstr "Volver a cargar programa" -#: src/emc/usr_intf/stepconf/stepconf.py:1299 -#: src/emc/usr_intf/pncconf/pncconf.py:4094 +#: src/emc/usr_intf/stepconf/options.glade:638 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Modify Existing Configuration" -msgstr "Mostrar configuracion _HAl" - -#: src/emc/usr_intf/stepconf/stepconf.py:1439 -msgid "" -"You need to designate an E-stop input pin in the Parallel Port Setup page " -"for this program." -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.py:1452 -msgid "" -"OK to replace existing custom ladder program?\n" -"Existing Custom.clp will be renamed custom_backup.clp.\n" -"Any existing file named -custom_backup.clp- will be lost. " -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.py:1457 -#: src/emc/usr_intf/pncconf/pncconf.py:7815 -msgid "" -"You edited a ladder program and have selected a different program to copy to " -"your configuration file.\n" -"The edited program will be lost.\n" -"\n" -"Are you sure? " -msgstr "" +msgid "Estop ladder program" +msgstr "Detener carga de vista preliminar del programa" -#: src/emc/usr_intf/stepconf/stepconf.py:1471 -msgid "" -"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" -"Existing custompanel.xml and custom_postgui.hal will be renamed " -"custompanel_backup.xml and postgui_backup.hal.\n" -"Any existing file named custompanel_backup.xml and custom_postgui.hal will " -"be lost. " -msgstr "" +#: src/emc/usr_intf/stepconf/options.glade:654 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Serial modbus program" +msgstr "Volver a cargar programa" -#: src/emc/usr_intf/stepconf/stepconf.py:1676 -msgid "degree / rev" -msgstr "" +#: src/emc/usr_intf/stepconf/options.glade:740 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "" +"Edit ladder\n" +"program" +msgstr "Volver a cargar programa" -#: src/emc/usr_intf/stepconf/stepconf.py:1677 -#: src/emc/usr_intf/stepconf/stepconf.py:2205 -msgid "deg / s" +#: src/emc/usr_intf/stepconf/options.glade:781 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include _Classicladder PLC" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1678 -#: src/emc/usr_intf/stepconf/stepconf.py:2206 -msgid "deg / s²" +#: src/emc/usr_intf/stepconf/options.glade:802 +msgid "_Onscreen prompt for manual tool change" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1679 -#: src/emc/usr_intf/stepconf/stepconf.py:2207 -msgid "deg" +#: src/emc/usr_intf/stepconf/axisx.glade:31 +#: src/emc/usr_intf/stepconf/axisy.glade:31 +#: src/emc/usr_intf/stepconf/axisz.glade:31 +#: src/emc/usr_intf/stepconf/axisa.glade:45 +msgid "_Motor steps per revolution:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1680 -msgid "Steps / deg" +#: src/emc/usr_intf/stepconf/axisx.glade:45 +#: src/emc/usr_intf/stepconf/axisy.glade:44 +#: src/emc/usr_intf/stepconf/axisz.glade:44 +#: src/emc/usr_intf/stepconf/axisa.glade:58 +msgid "_Driver Microstepping:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1682 -#: src/emc/usr_intf/stepconf/stepconf.glade:3589 -#: src/emc/usr_intf/pncconf/pncconf.glade:66138 -#: src/emc/usr_intf/pncconf/pncconf.glade:66424 -msgid "mm / rev" +#: src/emc/usr_intf/stepconf/axisx.glade:61 +#: src/emc/usr_intf/stepconf/axisy.glade:59 +#: src/emc/usr_intf/stepconf/axisz.glade:59 +#: src/emc/usr_intf/stepconf/axisa.glade:73 +msgid "_Pulley teeth (Motor:Leadscrew):" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1683 -#: src/emc/usr_intf/stepconf/stepconf.py:2219 -#: src/emc/usr_intf/stepconf/stepconf.glade:3604 -#: src/emc/usr_intf/pncconf/pncconf.glade:57828 -msgid "mm / s" +#: src/emc/usr_intf/stepconf/axisx.glade:77 +#: src/emc/usr_intf/stepconf/axisy.glade:74 +#: src/emc/usr_intf/stepconf/axisz.glade:74 +#: src/emc/usr_intf/stepconf/axisa.glade:88 +msgid "_Leadscrew Pitch:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1684 -#: src/emc/usr_intf/stepconf/stepconf.py:2220 -#: src/emc/usr_intf/stepconf/stepconf.glade:3619 -#: src/emc/usr_intf/pncconf/pncconf.glade:57813 -msgid "mm / s²" +#: src/emc/usr_intf/stepconf/axisx.glade:93 +#: src/emc/usr_intf/stepconf/axisy.glade:89 +#: src/emc/usr_intf/stepconf/axisz.glade:89 +#: src/emc/usr_intf/stepconf/axisa.glade:103 +#: src/emc/usr_intf/pncconf/pncconf.glade:64687 +msgid "Maximum _Velocity:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1686 -#: src/emc/usr_intf/stepconf/stepconf.glade:3075 -#: src/emc/usr_intf/pncconf/pncconf.glade:66888 -msgid "Steps / mm" +#: src/emc/usr_intf/stepconf/axisx.glade:109 +#: src/emc/usr_intf/stepconf/axisy.glade:104 +#: src/emc/usr_intf/stepconf/axisz.glade:104 +#: src/emc/usr_intf/stepconf/axisa.glade:118 +#: src/emc/usr_intf/pncconf/pncconf.glade:64702 +msgid "Maximum _Acceleration:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1688 -msgid "rev / in" +#: src/emc/usr_intf/stepconf/axisx.glade:125 +#: src/emc/usr_intf/stepconf/axisy.glade:119 +#: src/emc/usr_intf/stepconf/axisz.glade:119 +#: src/emc/usr_intf/stepconf/axisa.glade:133 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Time to accelerate to max speed:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1689 -#: src/emc/usr_intf/stepconf/stepconf.py:2233 -msgid "in / s" +#: src/emc/usr_intf/stepconf/axisx.glade:141 +#: src/emc/usr_intf/stepconf/axisy.glade:134 +#: src/emc/usr_intf/stepconf/axisz.glade:134 +#: src/emc/usr_intf/stepconf/axisa.glade:148 +msgid "Distance to accelerate to max speed:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1690 -#: src/emc/usr_intf/stepconf/stepconf.py:2234 -msgid "in / s²" +#: src/emc/usr_intf/stepconf/axisx.glade:271 +#: src/emc/usr_intf/stepconf/axisy.glade:263 +#: src/emc/usr_intf/stepconf/axisz.glade:263 +#: src/emc/usr_intf/stepconf/axisa.glade:277 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulse rate at max speed:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1692 -msgid "Steps / in" +#: src/emc/usr_intf/stepconf/axisx.glade:342 +#: src/emc/usr_intf/stepconf/axisy.glade:334 +#: src/emc/usr_intf/stepconf/axisz.glade:334 +#: src/emc/usr_intf/stepconf/axisa.glade:348 +msgid "_Home location:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:2202 -#: src/emc/usr_intf/pncconf/pncconf.py:8893 -#, python-format -msgid "%s Axis Test" +#: src/emc/usr_intf/stepconf/axisx.glade:358 +#: src/emc/usr_intf/stepconf/axisy.glade:349 +#: src/emc/usr_intf/stepconf/axisz.glade:349 +#: src/emc/usr_intf/stepconf/axisa.glade:363 +msgid "Home _Switch location:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:8 -#: src/emc/usr_intf/stepconf/stepconf.glade:21 -#, fuzzy -msgid "LinuxCNC Stepper Mill Configuration" -msgstr "Mostrar configuracion _HAl" - -#: src/emc/usr_intf/stepconf/stepconf.glade:22 -msgid "" -"This program creates configuration files (.ini and .hal) for \"step and " -"direction\" milling machines and lathes connected to the PC parallel port.\n" -"\n" -"Stepconf requires a minimum 800 X 600 display resolution.\n" -"You may need to collapse the 'Driver Timing Settings' and \n" -"Parallel Port Settings' expanders." +#: src/emc/usr_intf/stepconf/axisx.glade:374 +#: src/emc/usr_intf/stepconf/axisy.glade:364 +#: src/emc/usr_intf/stepconf/axisz.glade:364 +#: src/emc/usr_intf/stepconf/axisa.glade:378 +msgid "Home Sear_ch velocity:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:51 +#: src/emc/usr_intf/stepconf/axisx.glade:390 +#: src/emc/usr_intf/stepconf/axisy.glade:379 +#: src/emc/usr_intf/stepconf/axisz.glade:379 +#: src/emc/usr_intf/stepconf/axisa.glade:393 #, fuzzy -msgid "Create a _new configuration" -msgstr "Mostrar configuracion _HAl" +msgid "Home La_tch direction:" +msgstr "Escanear dirección" -#: src/emc/usr_intf/stepconf/stepconf.glade:69 -#: src/emc/usr_intf/pncconf/pncconf.glade:70 -msgid "Modify a configuration already created with this program" +#: src/emc/usr_intf/stepconf/axisx.glade:404 +#: src/emc/usr_intf/stepconf/axisy.glade:393 +#: src/emc/usr_intf/stepconf/axisz.glade:393 +#: src/emc/usr_intf/stepconf/axisa.glade:407 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "_:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:87 -#: src/emc/usr_intf/pncconf/pncconf.glade:88 -msgid "Do you wish to:" +#: src/emc/usr_intf/stepconf/axisx.glade:498 +#: src/emc/usr_intf/stepconf/axisy.glade:486 +#: src/emc/usr_intf/stepconf/axisz.glade:486 +#: src/emc/usr_intf/stepconf/axisa.glade:500 +msgid "Tab_le travel:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:99 -#: src/emc/usr_intf/pncconf/pncconf.glade:100 -msgid "" -"If you have made modifications to this configuration outside this program, " -"they will be lost when you select \"Modify a configuration\"" +#: src/emc/usr_intf/stepconf/axisx.glade:531 +#: src/emc/usr_intf/stepconf/axisy.glade:518 +#: src/emc/usr_intf/stepconf/axisz.glade:518 +#: src/emc/usr_intf/stepconf/axisa.glade:532 +msgid "t_o" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:116 -msgid "Create a desktop _shortcut (symlink) to configuration files." +#: src/emc/usr_intf/stepconf/axisx.glade:677 +#: src/emc/usr_intf/stepconf/axisy.glade:663 +#: src/emc/usr_intf/stepconf/axisz.glade:663 +#: src/emc/usr_intf/stepconf/axisa.glade:677 +msgid "s" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:133 -msgid "Create a desktop _launcher to start LinuxCNC with this configuration." -msgstr "" +#: src/emc/usr_intf/stepconf/axisx.glade:738 +#: src/emc/usr_intf/stepconf/axisy.glade:724 +#: src/emc/usr_intf/stepconf/axisz.glade:724 +#: src/emc/usr_intf/stepconf/axisa.glade:738 +#, fuzzy +msgid "T_est this axis" +msgstr "Correr tercer eje" -#: src/emc/usr_intf/stepconf/stepconf.glade:169 -#: src/emc/usr_intf/pncconf/pncconf.glade:175 +#: src/emc/usr_intf/stepconf/axisx.glade:765 +#: src/emc/usr_intf/stepconf/axisy.glade:751 +#: src/emc/usr_intf/stepconf/axisz.glade:751 +#: src/emc/usr_intf/stepconf/axisa.glade:765 #, fuzzy -msgid "Basic machine information" -msgstr "Mostrar posicion absoluta" +msgid "Axis SCALE:" +msgstr "Eje:" -#: src/emc/usr_intf/stepconf/stepconf.glade:327 -msgid "Step _Time:" +#: src/emc/usr_intf/stepconf/axisx.glade:833 +#: src/emc/usr_intf/stepconf/axisy.glade:819 +#: src/emc/usr_intf/stepconf/axisz.glade:819 +#: src/emc/usr_intf/stepconf/axisa.glade:12 +msgid "Same" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:356 -#: src/emc/usr_intf/stepconf/stepconf.glade:402 -#: src/emc/usr_intf/stepconf/stepconf.glade:449 -#: src/emc/usr_intf/stepconf/stepconf.glade:494 -#: src/emc/usr_intf/stepconf/stepconf.glade:909 -#: src/emc/usr_intf/pncconf/pncconf.glade:458 -#: src/emc/usr_intf/pncconf/pncconf.glade:8256 -msgid "ns" -msgstr "" +#: src/emc/usr_intf/stepconf/axisx.glade:836 +#: src/emc/usr_intf/stepconf/axisy.glade:822 +#: src/emc/usr_intf/stepconf/axisz.glade:822 +#: src/emc/usr_intf/stepconf/axisa.glade:15 +#, fuzzy +msgid "Opposite" +msgstr "Positivo" -#: src/emc/usr_intf/stepconf/stepconf.glade:369 -msgid "Step _Space:" +#: src/emc/usr_intf/stepconf/finished.glade:6 +msgid "" +"All the necessary information has now been gathered. \n" +"Click \"Done\" to write your configuration files to disk.\n" +"\n" +"If you experience lockups while running LinuxCNC:\n" +"-you will need to decrease the maximum velocity which will have the effect " +"of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC:\n" +"-first verify that you entered the proper timings for your stepper " +"drivers. \n" +"-then run a more thorough latency test as described on the linuxcnc.org " +"wiki.\n" +" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" +"\n" +"If you experience the \"Unexpected Realtime Delay\" message:\n" +"-run a more thorough latency test as described on the linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:417 -msgid "Direction _Hold:" +#: src/emc/usr_intf/pncconf/pncconf.py:81 +msgid "" +"PNCconf encountered an error. The following information may be useful in " +"troubleshooting:\n" +"\n" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:464 -msgid "_Direction Setup:" +#: src/emc/usr_intf/pncconf/pncconf.py:149 +msgid "Keling 4030" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:512 -msgid "Driver Timing Settings" +#: src/emc/usr_intf/pncconf/pncconf.py:151 +msgid "Not Used" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:538 -msgid "First Parport _Base Address:" +#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:176 +msgid "Dummy" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:564 -msgid " Out" +#: src/emc/usr_intf/pncconf/pncconf.py:152 +msgid "8i20 Servo Drive" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:575 -#: src/emc/usr_intf/stepconf/stepconf.glade:591 -msgid "" -"Out\n" -"In" +#: src/emc/usr_intf/pncconf/pncconf.py:153 +msgid "POT Output" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:633 -msgid "S_econd Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.py:153 +msgid "POT Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:650 -msgid "T_hird Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.py:153 +#, fuzzy +msgid "POT Direction" +msgstr "Escanear dirección" + +#: src/emc/usr_intf/pncconf/pncconf.py:154 +msgid "GPIO Input" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:667 -msgid " Parallel Port Settings" +#: src/emc/usr_intf/pncconf/pncconf.py:154 +msgid "GPIO Output" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:684 -msgid "" -"_Test Base\n" -"Period Jitter " +#: src/emc/usr_intf/pncconf/pncconf.py:154 +msgid "GPIO O Drain" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:703 +#: src/emc/usr_intf/pncconf/pncconf.py:155 #, fuzzy -msgid "Machine _Name:" -msgstr "Coordenada absoluta" +msgid "Quad Encoder-A" +msgstr "Fin" -#: src/emc/usr_intf/stepconf/stepconf.glade:716 +#: src/emc/usr_intf/pncconf/pncconf.py:155 #, fuzzy -msgid "_Axis configuration:" -msgstr "Mostrar configuracion _HAl" +msgid "Quad Encoder-B" +msgstr "Fin" -#: src/emc/usr_intf/stepconf/stepconf.glade:730 +#: src/emc/usr_intf/pncconf/pncconf.py:155 #, fuzzy -msgid "Machine _units:" -msgstr "Coordenada absoluta" - -#: src/emc/usr_intf/stepconf/stepconf.glade:744 -#: src/emc/usr_intf/pncconf/pncconf.glade:246 -msgid "Configuration directory:" -msgstr "" +msgid "Quad Encoder-I" +msgstr "Fin" -#: src/emc/usr_intf/stepconf/stepconf.glade:757 -msgid "D_river type:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +#, fuzzy +msgid "Quad Encoder-M" +msgstr "Fin" -#: src/emc/usr_intf/stepconf/stepconf.glade:785 -#: src/emc/usr_intf/pncconf/pncconf.glade:326 -msgid "" -"Inch\n" -"Millimeter" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +#, fuzzy +msgid "Muxed Encoder 0" +msgstr "Fin" -#: src/emc/usr_intf/stepconf/stepconf.glade:800 -#: src/emc/usr_intf/pncconf/pncconf.glade:291 -msgid "" -"XYZ\n" -"XYZA\n" -"XZ (Lathe)" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +#, fuzzy +msgid "Muxed Encoder 1" +msgstr "Fin" -#: src/emc/usr_intf/stepconf/stepconf.glade:847 -msgid "" -"Driver characteristics: (Multiply by 1000 for times specified in µs or " -"microseconds)\n" -" Additional signal conditioning or isolation such as optocouplers " -"and RC filters\n" -" can impose timing constraints of their own, in addition to those of " -"the driver." +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "muxed enc" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:875 -msgid "Base Period Maximum _Jitter:" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "mux enc mask" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:924 -msgid "Max step rate:" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "mux select" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:940 -msgid "Min Base Period:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:157 +#, fuzzy +msgid "Resolver 0 Encoder" +msgstr "Invertir Imagen" -#: src/emc/usr_intf/stepconf/stepconf.glade:956 -msgid "" -"_Onscreen prompt for\n" -"tool change" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:157 +#, fuzzy +msgid "Resolver 1 Encoder" +msgstr "Invertir Imagen" -#: src/emc/usr_intf/stepconf/stepconf.glade:1015 -msgid "Advanced Configuration Options" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:157 +#, fuzzy +msgid "Resolver 2 Encoder" +msgstr "Invertir Imagen" -#: src/emc/usr_intf/stepconf/stepconf.glade:1033 -msgid "Include Halui user interface component" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:158 +#, fuzzy +msgid "Resolver 3 Encoder" +msgstr "Invertir Imagen" -#: src/emc/usr_intf/stepconf/stepconf.glade:1074 -#: src/emc/usr_intf/pncconf/pncconf.glade:6745 +#: src/emc/usr_intf/pncconf/pncconf.py:158 #, fuzzy -msgid "Blank program" -msgstr "Ejecutar Programa" +msgid "Resolver 4 Encoder" +msgstr "Invertir Imagen" -#: src/emc/usr_intf/stepconf/stepconf.glade:1089 -#: src/emc/usr_intf/pncconf/pncconf.glade:6760 +#: src/emc/usr_intf/pncconf/pncconf.py:158 #, fuzzy -msgid "Spindle speed display " -msgstr "Controlar portabrocas:" +msgid "Resolver 5 Encoder" +msgstr "Invertir Imagen" -#: src/emc/usr_intf/stepconf/stepconf.glade:1105 -#: src/emc/usr_intf/stepconf/stepconf.glade:1543 -#: src/emc/usr_intf/pncconf/pncconf.glade:6791 -#: src/emc/usr_intf/pncconf/pncconf.glade:7112 -#: src/emc/usr_intf/pncconf/pncconf.glade:59393 -msgid "Existing custom program" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +#, fuzzy +msgid "Step Gen-A" +msgstr "Ejecutar programa por paso" -#: src/emc/usr_intf/stepconf/stepconf.glade:1120 -#: src/emc/usr_intf/stepconf/stepconf.glade:1559 -#: src/emc/usr_intf/pncconf/pncconf.glade:6806 -#: src/emc/usr_intf/pncconf/pncconf.glade:59409 -msgid "Include connections to HAL" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Dir Gen-B" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1154 -#: src/emc/usr_intf/pncconf/pncconf.glade:6989 -#: src/emc/usr_intf/pncconf/pncconf.glade:7537 -msgid "" -"_Display\n" -"sample\n" -"panel" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Step/Dir Gen-C" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1188 -#: src/emc/usr_intf/pncconf/pncconf.glade:7048 -msgid "Include custom PyVCP GUI panel" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Step/Dir Gen-D" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1321 -#: src/emc/usr_intf/pncconf/pncconf.glade:59199 -msgid " Number of analog (float) out pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:160 +msgid "Step/Dir Gen-E" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1335 -#: src/emc/usr_intf/pncconf/pncconf.glade:59184 -msgid " Number of analog (float) in pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:160 +msgid "Step/dir Gen-F" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1349 -#: src/emc/usr_intf/pncconf/pncconf.glade:59169 -msgid " Number of analog (s32) out pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:161 +msgid "Pulse Width Gen-P" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1363 -#: src/emc/usr_intf/pncconf/pncconf.glade:59153 -msgid " Number of analog (s32) in pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:161 +msgid "Pulse Width Gen-D" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1378 -msgid "Number of digital out pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:161 +msgid "Pulse Width Gen-E" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1403 -msgid "Number of digital in pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:162 +msgid "Pulse Density Gen-P" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1414 -msgid "setup number of external pins" +#: src/emc/usr_intf/pncconf/pncconf.py:162 +msgid "Pulse Density Gen-D" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1429 -#: src/emc/usr_intf/pncconf/pncconf.glade:59213 -msgid "Include modbus master support" +#: src/emc/usr_intf/pncconf/pncconf.py:162 +msgid "Pulse Density Gen-E" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1500 -#: src/emc/usr_intf/pncconf/pncconf.glade:59333 -#, fuzzy -msgid "Blank ladder program" -msgstr "Volver a cargar programa" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1513 -#: src/emc/usr_intf/pncconf/pncconf.glade:59346 -#, fuzzy -msgid "Estop ladder program" -msgstr "Detener carga de vista preliminar del programa" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1527 -#: src/emc/usr_intf/pncconf/pncconf.glade:59377 -#, fuzzy -msgid "Serial modbus program" -msgstr "Volver a cargar programa" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1592 -#: src/emc/usr_intf/pncconf/pncconf.glade:59443 -#, fuzzy -msgid "" -"Edit ladder\n" -"program" -msgstr "Volver a cargar programa" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1628 -#: src/emc/usr_intf/pncconf/pncconf.glade:59479 -msgid "Include _Classicladder PLC" +#: src/emc/usr_intf/pncconf/pncconf.py:163 +msgid "Up/Down Mode -Up" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1653 -msgid "Parallel Port Setup" +#: src/emc/usr_intf/pncconf/pncconf.py:163 +msgid "Up/Down Mode-Down" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1760 -#: src/emc/usr_intf/pncconf/pncconf.glade:54010 -msgid "Pin _1:" +#: src/emc/usr_intf/pncconf/pncconf.py:163 +msgid "Up/Down Mode-Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1774 -#: src/emc/usr_intf/pncconf/pncconf.glade:54024 -#: src/emc/usr_intf/pncconf/pncconf.glade:55239 -msgid "Pin _2:" +#: src/emc/usr_intf/pncconf/pncconf.py:164 +msgid "Motor Phase A" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1788 -#: src/emc/usr_intf/pncconf/pncconf.glade:54038 -#: src/emc/usr_intf/pncconf/pncconf.glade:55256 -msgid "Pin _3:" +#: src/emc/usr_intf/pncconf/pncconf.py:164 +msgid "Motor Phase B" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1802 -#: src/emc/usr_intf/pncconf/pncconf.glade:54052 -#: src/emc/usr_intf/pncconf/pncconf.glade:55273 -msgid "Pin _4:" +#: src/emc/usr_intf/pncconf/pncconf.py:164 +msgid "Motor Phase C" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1816 -#: src/emc/usr_intf/pncconf/pncconf.glade:54066 -#: src/emc/usr_intf/pncconf/pncconf.glade:55290 -msgid "Pin _5:" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Phase A Not" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1830 -#: src/emc/usr_intf/pncconf/pncconf.glade:54080 -#: src/emc/usr_intf/pncconf/pncconf.glade:55307 -msgid "Pin _6:" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Phase B Not" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1844 -#: src/emc/usr_intf/pncconf/pncconf.glade:54094 -#: src/emc/usr_intf/pncconf/pncconf.glade:55324 -msgid "Pin _7:" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Phase C Not" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1858 -#: src/emc/usr_intf/pncconf/pncconf.glade:54108 -#: src/emc/usr_intf/pncconf/pncconf.glade:55341 -msgid "Pin _8:" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1872 -#: src/emc/usr_intf/pncconf/pncconf.glade:54122 -#: src/emc/usr_intf/pncconf/pncconf.glade:55358 -msgid "Pin _9:" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Fault" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1886 -#: src/emc/usr_intf/pncconf/pncconf.glade:54136 -msgid "_Pin 14:" +#: src/emc/usr_intf/pncconf/pncconf.py:168 +msgid "SMARTSERIAL-P0-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1900 -#: src/emc/usr_intf/pncconf/pncconf.glade:54150 -msgid "P_in 16:" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P0-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1914 -#: src/emc/usr_intf/pncconf/pncconf.glade:54164 -msgid "Pi_n 17:" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P0-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2258 -msgid "Outputs (PC to Mill):" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2270 -#: src/emc/usr_intf/pncconf/pncconf.glade:55222 -msgid "Pin 1_0:" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2286 -#: src/emc/usr_intf/pncconf/pncconf.glade:55206 -msgid "Pin 1_1:" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2302 -#: src/emc/usr_intf/pncconf/pncconf.glade:55190 -msgid "Pin 1_2:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2318 -#: src/emc/usr_intf/pncconf/pncconf.glade:55174 -msgid "Pin 1_3:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2334 -#: src/emc/usr_intf/pncconf/pncconf.glade:55158 -msgid "Pin 1_5:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2399 -msgid "Inputs (Mill to PC):" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2425 -#: src/emc/usr_intf/stepconf/stepconf.glade:2438 -#: src/emc/usr_intf/pncconf/pncconf.glade:54578 -#: src/emc/usr_intf/pncconf/pncconf.glade:54591 -#, fuzzy -msgid "Invert" -msgstr "Invertir Imagen" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2887 -msgid "_Sherline Outputs" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2905 -msgid "_Xylotex Outputs" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2923 -msgid "Output pinout presets:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3022 -#: src/emc/usr_intf/pncconf/pncconf.glade:57970 -#, fuzzy -msgid "X Axis Configuration" -msgstr "Mostrar configuracion _HAl" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3090 -msgid "_Motor steps per revolution:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3103 -msgid "_Driver Microstepping:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3118 -msgid "_Pulley teeth (Motor:Leadscrew):" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3133 -msgid "_Leadscrew Pitch:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3148 -#: src/emc/usr_intf/pncconf/pncconf.glade:57858 -msgid "Maximum _Velocity:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3163 -#: src/emc/usr_intf/pncconf/pncconf.glade:57843 -msgid "Maximum _Acceleration:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3178 -#: src/emc/usr_intf/pncconf/pncconf.glade:67063 -msgid "Time to accelerate to max speed:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3193 -msgid "Distance to accelerate to max speed:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3292 -#: src/emc/usr_intf/pncconf/pncconf.glade:67036 -msgid "Pulse rate at max speed:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3362 -msgid "_Home location:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3377 -msgid "Home _Switch location:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3392 -msgid "Home Sear_ch velocity:" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS0)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3407 -#, fuzzy -msgid "Home La_tch direction:" -msgstr "Escanear dirección" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3420 -#: src/emc/usr_intf/pncconf/pncconf.glade:66232 -#: src/emc/usr_intf/pncconf/pncconf.glade:66274 -#: src/emc/usr_intf/pncconf/pncconf.glade:66505 -#: src/emc/usr_intf/pncconf/pncconf.glade:66570 -msgid "_:" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS2)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3437 -#: src/emc/usr_intf/pncconf/pncconf.glade:58536 -msgid "" -"Same\n" -"Opposite" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS3)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3492 -msgid "Tab_le travel:" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 I/O (SS0)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3519 -msgid "t_o" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 Analog (SS1)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3649 -msgid "s" +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 I/O (SS3)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3703 -#, fuzzy -msgid "T_est this axis" -msgstr "Correr tercer eje" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3729 -#, fuzzy -msgid "Axis SCALE:" -msgstr "Eje:" +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 Analog (SS4)" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3765 +#: src/emc/usr_intf/pncconf/pncconf.py:176 #, fuzzy -msgid "Spindle Configuration" -msgstr "Mostrar configuracion _HAl" +msgid "Analog Input" +msgstr "Control manual" -#: src/emc/usr_intf/stepconf/stepconf.glade:3785 +#: src/emc/usr_intf/pncconf/pncconf.py:277 +#: src/emc/usr_intf/pncconf/pncconf.py:409 #, fuzzy -msgid "Use spindle-at-speed:" -msgstr "Controlar portabrocas:" +msgid "Axis Selection" +msgstr "Escanear dirección" -#: src/emc/usr_intf/stepconf/stepconf.glade:3841 -msgid "Speed display filter gain:" +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "" +"7i64-Input\n" +"P3 and P4" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3870 -#, fuzzy -msgid "Calibration:" -msgstr "_Calibración" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3883 -#, fuzzy -msgid "_Speed 1:" -msgstr "Velocidad:" +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "" +"7i64-Output\n" +"P2 and P5" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3898 -msgid "_PWM 1:" +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "7i64-Analog In" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3916 -#, fuzzy -msgid "S_peed 2:" -msgstr "Velocidad:" +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P2" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3931 -msgid "P_WM 2:" +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3949 -msgid "PWM _Rate:" +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4025 -msgid "_Cycles per revolution:" +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4079 -msgid "Enter 0 Hz for \"PDM\" mode" +#: src/emc/usr_intf/pncconf/pncconf.py:309 +msgid "" +"7i71-Output\n" +"TB3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4091 -msgid "Scale %" +#: src/emc/usr_intf/pncconf/pncconf.py:309 +msgid "" +"7i71-Output\n" +"TB2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:60002 -msgid "Machine configuration complete" +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-I/O\n" +"TB6" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4114 -#: src/emc/usr_intf/pncconf/pncconf.glade:60003 +#: src/emc/usr_intf/pncconf/pncconf.py:317 msgid "" -"All the necessary information has now been gathered. Click \"Apply\" to " -"write your configuration files to disk.\n" -"If you experience lockups while running LinuxCNC, you will need to decrease " -"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" -"\n" -"If you experience lost steps while running LinuxCNC, first verify that you " -"entered the proper timings for your stepper drivers. If that does not fix " -"the problem, then run a more thorough latency test as described on the " -"linuxcnc.org wiki:\n" -" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" -"\n" -"If you experience the \"Unexpected Realtime Delay\" message, run a more " -"thorough latency test as described on the linuxcnc.org wiki: \n" -" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" +"7i76-I/O\n" +"TB5" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4160 -#: src/emc/usr_intf/pncconf/pncconf.glade:60462 -#: src/emc/usr_intf/pncconf/pncconf.glade:61557 -#: src/emc/usr_intf/pncconf/pncconf.glade:62650 -#: src/emc/usr_intf/pncconf/pncconf.glade:63743 -#: src/emc/usr_intf/pncconf/pncconf.glade:64842 -#, fuzzy -msgid "Acceleration:" -msgstr "Alternando" +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-Analog Output\n" +"TB4" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4174 -#: src/emc/usr_intf/pncconf/pncconf.glade:60231 -#: src/emc/usr_intf/pncconf/pncconf.glade:60695 -#: src/emc/usr_intf/pncconf/pncconf.glade:61788 -#: src/emc/usr_intf/pncconf/pncconf.glade:62881 -#: src/emc/usr_intf/pncconf/pncconf.glade:63974 -#: src/emc/usr_intf/pncconf/pncconf.glade:64954 -msgid "Jog:" +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB8" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4188 -#: src/emc/usr_intf/pncconf/pncconf.glade:60681 -#: src/emc/usr_intf/pncconf/pncconf.glade:61774 -#: src/emc/usr_intf/pncconf/pncconf.glade:62867 -#: src/emc/usr_intf/pncconf/pncconf.glade:63960 -msgid "Test Area:" +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB7" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4217 -msgid "mm/s^2" +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-Analog Output\n" +"TB5" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4253 -msgid "mm/s" +#: src/emc/usr_intf/pncconf/pncconf.py:333 +msgid "7i73-I/O\n" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4329 -#: src/emc/usr_intf/pncconf/pncconf.glade:60620 -#: src/emc/usr_intf/pncconf/pncconf.glade:61713 -#: src/emc/usr_intf/pncconf/pncconf.glade:62806 -#: src/emc/usr_intf/pncconf/pncconf.glade:63899 -#: src/emc/usr_intf/pncconf/pncconf.glade:65066 -msgid "" -"±\n" -"+\n" -"-\n" +#: src/emc/usr_intf/pncconf/pncconf.py:348 +msgid "Unused Unused" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:79 -msgid "" -"PNCconf encountered an error. The following information may be useful in " -"troubleshooting:\n" -"\n" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +#, fuzzy +msgid "Machine Is Enabled" +msgstr "Coordenada absoluta" + +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "X Amplifier Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:149 -msgid "Not Used" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "Y Amplifier Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:149 -#: src/emc/usr_intf/pncconf/pncconf.py:150 -msgid "Dummy" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "Z Amplifier Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:150 -msgid "8i20 Servo Drive" +#: src/emc/usr_intf/pncconf/pncconf.py:371 +msgid "A Amplifier Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:151 -msgid "POT Output" +#: src/emc/usr_intf/pncconf/pncconf.py:371 +msgid "Force Pin True" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:151 -msgid "POT Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:151 -#, fuzzy -msgid "POT Direction" -msgstr "Escanear dirección" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X HALL 2" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:152 -msgid "GPIO Input" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:152 -msgid "GPIO Output" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:152 -msgid "GPIO O Drain" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -#, fuzzy -msgid "Quad Encoder-A" -msgstr "Fin" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C4" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -#, fuzzy -msgid "Quad Encoder-B" -msgstr "Fin" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C8" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -#, fuzzy -msgid "Quad Encoder-I" -msgstr "Fin" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y HALL 1" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -#, fuzzy -msgid "Quad Encoder-M" -msgstr "Fin" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y HALL 2" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -#, fuzzy -msgid "Muxed Encoder 0" -msgstr "Fin" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y HALL 3" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -#, fuzzy -msgid "Muxed Encoder 1" -msgstr "Fin" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C1" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "muxed enc" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "mux enc mask" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "mux select" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:155 -#, fuzzy -msgid "Resolver 0 Encoder" -msgstr "Invertir Imagen" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z HALL 1" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:155 -#, fuzzy -msgid "Resolver 1 Encoder" -msgstr "Invertir Imagen" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z HALL 2" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:155 -#, fuzzy -msgid "Resolver 2 Encoder" -msgstr "Invertir Imagen" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z HALL 3" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:156 -#, fuzzy -msgid "Resolver 3 Encoder" -msgstr "Invertir Imagen" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C1" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:156 -#, fuzzy -msgid "Resolver 4 Encoder" -msgstr "Invertir Imagen" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C2" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:156 -#, fuzzy -msgid "Resolver 5 Encoder" -msgstr "Invertir Imagen" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C4" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -#, fuzzy -msgid "Step Gen-A" -msgstr "Ejecutar programa por paso" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C8" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -msgid "Dir Gen-B" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -msgid "Step/Dir Gen-C" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -msgid "Step/Dir Gen-D" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:158 -msgid "Step/Dir Gen-E" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:158 -msgid "Step/dir Gen-F" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 -msgid "Pulse Width Gen-P" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 -msgid "Pulse Width Gen-D" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 -msgid "Pulse Width Gen-E" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 -msgid "Pulse Density Gen-P" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 -msgid "Pulse Density Gen-D" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 -msgid "Pulse Density Gen-E" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 -msgid "Up/Down Mode -Up" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 -msgid "Up/Down Mode-Down" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 -msgid "Up/Down Mode-Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 -msgid "Motor Phase A" +#: src/emc/usr_intf/pncconf/pncconf.py:378 +msgid "Unused Output" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 -msgid "Motor Phase B" +#: src/emc/usr_intf/pncconf/pncconf.py:378 +#, fuzzy +msgid "Coolant" +msgstr "Enfriador:" + +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#, fuzzy +msgid "Control" +msgstr "Ctrl-M" + +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +msgid "Digital" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 -msgid "Motor Phase C" +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:410 +#, fuzzy +msgid "X BLDC Control" +msgstr "Ctrl-M" + +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 +#, fuzzy +msgid "Y BLDC Control" +msgstr "Ctrl-M" + +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 +#, fuzzy +msgid "Z BLDC Control" +msgstr "Ctrl-M" + +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 +#, fuzzy +msgid "A BLDC Control" +msgstr "Ctrl-M" + +#: src/emc/usr_intf/pncconf/pncconf.py:381 +msgid " S BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Phase A Not" +#: src/emc/usr_intf/pncconf/pncconf.py:381 +#: src/emc/usr_intf/pncconf/pncconf.py:412 +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#: src/emc/usr_intf/pncconf/pncconf.py:516 +#: src/emc/usr_intf/pncconf/pncconf.py:519 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.py:528 +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#: src/emc/usr_intf/pncconf/pncconf.py:568 +#: src/emc/usr_intf/pncconf/pncconf.py:580 +msgid "Custom Signals" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Phase B Not" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 +msgid "X Minimum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Phase C Not" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 +msgid "Y Minimum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 +msgid "Z Minimum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Fault" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 +msgid "A Minimum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:165 -msgid "SMARTSERIAL-P0-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 +msgid "X Maximum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P0-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 +msgid "Y Maximum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P0-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 +msgid "Z Maximum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 +msgid "A Maximum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 +msgid "X Both Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 +msgid "Y Both Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 +msgid "Z Both Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 +msgid "A Both Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:386 +#: src/emc/usr_intf/pncconf/pncconf.py:477 +#, fuzzy +msgid "All Limits" +msgstr "Todos los archivos" + +#: src/emc/usr_intf/pncconf/pncconf.py:387 +#, fuzzy +msgid "X Home" +msgstr "Punto de referencia" + +#: src/emc/usr_intf/pncconf/pncconf.py:387 +#, fuzzy +msgid "Y Home" +msgstr "Punto de referencia" + +#: src/emc/usr_intf/pncconf/pncconf.py:387 +#, fuzzy +msgid "Z Home" +msgstr "Punto de referencia" + +#: src/emc/usr_intf/pncconf/pncconf.py:387 +#, fuzzy +msgid "A Home" +msgstr "Punto de referencia" + +#: src/emc/usr_intf/pncconf/pncconf.py:387 +#, fuzzy +msgid "All Home" +msgstr "Punto de referencia" + +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 +msgid "X Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 +msgid "Y Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 +msgid "Z Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 +msgid "A Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 +msgid "X Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 +msgid "Y Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 +msgid "Z Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 +msgid "A Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 +msgid "X Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 +msgid "Y Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 +msgid "Z Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 +msgid "A Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:392 +#, fuzzy +msgid "Joint select A" +msgstr "Correr eje activo" + +#: src/emc/usr_intf/pncconf/pncconf.py:392 +#, fuzzy +msgid "Joint select B" +msgstr "Correr eje activo" + +#: src/emc/usr_intf/pncconf/pncconf.py:392 +#, fuzzy +msgid "Joint select C" +msgstr "Correr eje activo" + +#: src/emc/usr_intf/pncconf/pncconf.py:392 +#, fuzzy +msgid "Joint select D" +msgstr "Correr eje activo" + +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +#, fuzzy +msgid "Feed Override incr A" +msgstr "Control de avanze" -#: src/emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #2" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +#, fuzzy +msgid "Feed Override incr B" +msgstr "Control de avanze" -#: src/emc/usr_intf/pncconf/pncconf.py:420 -msgid "Unused Unused" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:394 +#, fuzzy +msgid "Feed Override incr C" +msgstr "Control de avanze" -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/pncconf/pncconf.py:394 #, fuzzy -msgid "Machine Is Enabled" -msgstr "Coordenada absoluta" +msgid "Feed Override incr D" +msgstr "Control de avanze" -#: src/emc/usr_intf/pncconf/pncconf.py:442 -msgid "X Amplifier Enable" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:394 +#, fuzzy +msgid "Spindle Override incr A" +msgstr "Controlar portabrocas:" -#: src/emc/usr_intf/pncconf/pncconf.py:442 -msgid "Y Amplifier Enable" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:394 +#, fuzzy +msgid "Spindle Override incr B" +msgstr "Controlar portabrocas:" -#: src/emc/usr_intf/pncconf/pncconf.py:442 -msgid "Z Amplifier Enable" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:395 +#, fuzzy +msgid "Spindle Override incr C" +msgstr "Controlar portabrocas:" -#: src/emc/usr_intf/pncconf/pncconf.py:443 -msgid "A Amplifier Enable" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:395 +#, fuzzy +msgid "Spindle Override incr D" +msgstr "Controlar portabrocas:" -#: src/emc/usr_intf/pncconf/pncconf.py:443 -msgid "Force Pin True" +#: src/emc/usr_intf/pncconf/pncconf.py:395 +msgid "Max Vel Override incr A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:395 +msgid "Max Vel Override incr B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:396 +msgid "Max Vel Override incr C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:396 +msgid "Max Vel Override incr D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:396 +#, fuzzy +msgid "Feed Override enable" +msgstr "Control de avanze" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C2" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:396 +#, fuzzy +msgid "Spindle Override enable" +msgstr "Controlar portabrocas:" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C4" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:397 +#, fuzzy +msgid "Max Vel Override enable" +msgstr "Control de avanze" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C8" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +#, fuzzy +msgid "Manual Spindle CW" +msgstr "Portabrocas:" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y HALL 1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +#, fuzzy +msgid "Manual Spindle CCW" +msgstr "Portabrocas:" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y HALL 2" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +#, fuzzy +msgid "Manual Spindle Stop" +msgstr "Disminuir revoluciones del Portabrocas [F11]" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y HALL 3" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +#, fuzzy +msgid "Spindle Up-To-Speed" +msgstr "Disminuir revoluciones del Portabrocas [F11]" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:399 +msgid "Cycle Start" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:399 +msgid "Abort" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C4" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:399 +#, fuzzy +msgid "Single Step" +msgstr "Disminuir revoluciones del Portabrocas [F11]" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 +msgid "Jog X +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 +msgid "Jog X -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 +msgid "Jog Y +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 +msgid "Jog Y -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 +msgid "Jog Z +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 +msgid "Jog Z -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 +msgid "Jog A +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 +msgid "Jog A -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A HALL 1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:407 +#, fuzzy +msgid "Jog button selected +" +msgstr "Correr eje activo" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A HALL 2" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:407 +#, fuzzy +msgid "Jog button selected -" +msgstr "Correr eje activo" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Unused Input" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:408 +#, fuzzy +msgid "Limits" +msgstr "Todos los archivos" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Limts/Home Shared" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C4" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:409 +#, fuzzy +msgid "Overrides" +msgstr "Exceder limites" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C8" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:410 +#, fuzzy +msgid "Operation" +msgstr "Alternando" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S HALL 1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:410 +#, fuzzy +msgid "External Control" +msgstr "Control manual" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S HALL 2" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:410 +#, fuzzy +msgid "Axis rapid" +msgstr "Eje:" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S HALL 3" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:412 +#, fuzzy +msgid "S BLDC Control" +msgstr "Ctrl-M" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:487 +msgid "Unused PWM Gen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C2" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:487 +#, fuzzy +msgid "X Axis PWM" +msgstr "Eje:" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C4" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:487 +#, fuzzy +msgid "Y Axis PWM" +msgstr "Eje:" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C8" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#, fuzzy +msgid "Z Axis PWM" +msgstr "Eje:" -#: src/emc/usr_intf/pncconf/pncconf.py:450 -msgid "Unused Output" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#, fuzzy +msgid "A Axis PWM" +msgstr "Eje:" -#: src/emc/usr_intf/pncconf/pncconf.py:450 -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#: src/emc/usr_intf/pncconf/pncconf.py:593 +#: src/emc/usr_intf/pncconf/pncconf.py:512 #, fuzzy -msgid "Spindle" -msgstr "Portabrocas:" +msgid "X Encoder" +msgstr "Fin" -#: src/emc/usr_intf/pncconf/pncconf.py:450 +#: src/emc/usr_intf/pncconf/pncconf.py:512 #, fuzzy -msgid "Coolant" -msgstr "Enfriador:" +msgid "Y Encoder" +msgstr "Fin" -#: src/emc/usr_intf/pncconf/pncconf.py:451 +#: src/emc/usr_intf/pncconf/pncconf.py:512 #, fuzzy -msgid "Control" -msgstr "Ctrl-M" +msgid "Z Encoder" +msgstr "Fin" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:480 -msgid "Digital" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +#, fuzzy +msgid "A Encoder" +msgstr "Fin" + +#: src/emc/usr_intf/pncconf/pncconf.py:512 +#, fuzzy +msgid "Spindle Encoder" +msgstr "Controlar portabrocas:" + +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "X Hand Wheel" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "Y Hand Wheel" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "Z Hand Wheel" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "A Hand Wheel" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "Multi Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:481 +#: src/emc/usr_intf/pncconf/pncconf.py:514 #, fuzzy -msgid "X BLDC Control" -msgstr "Ctrl-M" +msgid "Feed Override" +msgstr "Control de avanze" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 +#: src/emc/usr_intf/pncconf/pncconf.py:514 #, fuzzy -msgid "Y BLDC Control" -msgstr "Ctrl-M" +msgid "spindle Override" +msgstr "Controlar portabrocas:" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 +#: src/emc/usr_intf/pncconf/pncconf.py:514 #, fuzzy -msgid "Z BLDC Control" -msgstr "Ctrl-M" +msgid "Max Vel Override" +msgstr "Control de avanze" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "Unused Encoder" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:515 #, fuzzy -msgid "A BLDC Control" -msgstr "Ctrl-M" +msgid "Axis Encoder" +msgstr "Fin" -#: src/emc/usr_intf/pncconf/pncconf.py:453 -msgid " S BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "MPG Jog Controls" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:453 -#: src/emc/usr_intf/pncconf/pncconf.py:483 -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#: src/emc/usr_intf/pncconf/pncconf.py:585 -#: src/emc/usr_intf/pncconf/pncconf.py:588 -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.py:597 -#: src/emc/usr_intf/pncconf/pncconf.py:614 -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "Custom Signals" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "Override MPG control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 -msgid "X Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "Unused Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 -msgid "Y Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "X Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 -msgid "Z Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "Y Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 -msgid "A Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "Z Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 -msgid "X Maximum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:519 +msgid "A Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 -msgid "Y Maximum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:519 +msgid "S Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 -msgid "Z Maximum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +msgid "Unused 8I20" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 -msgid "A Maximum Limit" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "X Axis" +msgstr "Eje:" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 -msgid "X Both Limit" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Y Axis" +msgstr "Eje:" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 -msgid "Y Both Limit" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Z Axis" +msgstr "Eje:" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 -msgid "Z Both Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "A Axis" +msgstr "Eje:" + +#: src/emc/usr_intf/pncconf/pncconf.py:528 +msgid "Unused Analog Output" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 -msgid "A Both Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:528 +#, fuzzy +msgid "Spindle Output" +msgstr "Portabrocas:" + +#: src/emc/usr_intf/pncconf/pncconf.py:551 +msgid "Unused StepGen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:458 -#: src/emc/usr_intf/pncconf/pncconf.py:546 +#: src/emc/usr_intf/pncconf/pncconf.py:551 #, fuzzy -msgid "All Limits" -msgstr "Todos los archivos" +msgid "X Axis StepGen" +msgstr "Eje:" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:551 #, fuzzy -msgid "X Home" -msgstr "Punto de referencia" +msgid "Y Axis StepGen" +msgstr "Eje:" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:551 #, fuzzy -msgid "Y Home" -msgstr "Punto de referencia" +msgid "Z Axis StepGen" +msgstr "Eje:" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:552 #, fuzzy -msgid "Z Home" -msgstr "Punto de referencia" +msgid "A Axis StepGen" +msgstr "Eje:" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:552 #, fuzzy -msgid "A Home" -msgstr "Punto de referencia" +msgid "Spindle StepGen" +msgstr "Disminuir revoluciones del Portabrocas [F11]" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:552 #, fuzzy -msgid "All Home" -msgstr "Punto de referencia" +msgid "X2 Tandem StepGen" +msgstr "Disminuir revoluciones del Portabrocas [F11]" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 -msgid "X Minimum Limit + Home" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:552 +#, fuzzy +msgid "Y2 Tandem StepGen" +msgstr "Disminuir revoluciones del Portabrocas [F11]" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 -msgid "Y Minimum Limit + Home" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#, fuzzy +msgid "Z2 Tandem StepGen" +msgstr "Disminuir revoluciones del Portabrocas [F11]" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 -msgid "Z Minimum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:553 +msgid "Charge Pump StepGen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 -msgid "A Minimum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:567 +msgid "Unused TPPWM Gen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 -msgid "X Maximum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:567 +msgid "X Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 -msgid "Y Maximum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:567 +msgid "Y Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 -msgid "Z Maximum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:568 +msgid "Z Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 -msgid "A Maximum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:568 +msgid "A Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 -msgid "X Both Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:568 +msgid "S Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 -msgid "Y Both Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +#: src/emc/usr_intf/pncconf/pncconf.py:6882 +msgid "Unused Channel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 -msgid "Z Both Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +msgid "8i20 Amplifier Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 -msgid "A Both Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +msgid "7i64 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -#, fuzzy -msgid "Joint select A" -msgstr "Correr eje activo" - -#: src/emc/usr_intf/pncconf/pncconf.py:464 -#, fuzzy -msgid "Joint select B" -msgstr "Correr eje activo" - -#: src/emc/usr_intf/pncconf/pncconf.py:464 -#, fuzzy -msgid "Joint select C" -msgstr "Correr eje activo" - -#: src/emc/usr_intf/pncconf/pncconf.py:464 -#, fuzzy -msgid "Joint select D" -msgstr "Correr eje activo" - -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr A" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +msgid "7i69 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr B" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i70 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr C" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i71 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr D" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i76 Mode 0 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -#, fuzzy -msgid "Feed Override incr A" -msgstr "Control de avanze" - -#: src/emc/usr_intf/pncconf/pncconf.py:465 -#, fuzzy -msgid "Feed Override incr B" -msgstr "Control de avanze" - -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#, fuzzy -msgid "Feed Override incr C" -msgstr "Control de avanze" - -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#, fuzzy -msgid "Feed Override incr D" -msgstr "Control de avanze" - -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#, fuzzy -msgid "Spindle Override incr A" -msgstr "Controlar portabrocas:" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i77 Mode 0 I/O Card" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#, fuzzy -msgid "Spindle Override incr B" -msgstr "Controlar portabrocas:" +#: src/emc/usr_intf/pncconf/pncconf.py:578 +msgid "7i73 Mode 1 Pendant Card" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -#, fuzzy -msgid "Spindle Override incr C" -msgstr "Controlar portabrocas:" +#: src/emc/usr_intf/pncconf/pncconf.py:580 +msgid "Unused Analog In" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:467 +#: src/emc/usr_intf/pncconf/pncconf.py:676 #, fuzzy -msgid "Spindle Override incr D" -msgstr "Controlar portabrocas:" +msgid "my_LinuxCNC_machine" +msgstr "_Máquina" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -msgid "Max Vel Override incr A" +#: src/emc/usr_intf/pncconf/pncconf.py:939 +#: src/emc/usr_intf/pncconf/pncconf.py:941 +msgid "Enter Address" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -msgid "Max Vel Override incr B" +#: src/emc/usr_intf/pncconf/pncconf.py:1290 +msgid "" +"This configuration was saved with an earlier version of pncconf which may be " +"incompatible.\n" +"If it doesn't plainly cause an error, you still may want to save it with " +"another name and check it. Safer to start from scratch.\n" +"If you have a REALLY large config that you wish to convert to this newer " +"version of PNConf - ask on the LinuxCNC forum - it may be possible.." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:468 -msgid "Max Vel Override incr C" +#: src/emc/usr_intf/pncconf/pncconf.py:1296 +#, python-format +msgid "File %r was modified since it was written by PNCconf" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:468 -msgid "Max Vel Override incr D" +#: src/emc/usr_intf/pncconf/pncconf.py:1300 +msgid "" +"Saving this configuration file will discard configuration changes made " +"outside PNCconf." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#, fuzzy -msgid "Manual Spindle CW" -msgstr "Portabrocas:" - -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#, fuzzy -msgid "Manual Spindle CCW" -msgstr "Portabrocas:" - -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#, fuzzy -msgid "Manual Spindle Stop" -msgstr "Disminuir revoluciones del Portabrocas [F11]" +#: src/emc/usr_intf/pncconf/pncconf.py:1327 +#: src/emc/usr_intf/pncconf/pncconf.py:2421 +#, python-format +msgid "# Generated by PNCconf at %s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#, fuzzy -msgid "Spindle Up-To-Speed" -msgstr "Disminuir revoluciones del Portabrocas [F11]" +#: src/emc/usr_intf/pncconf/pncconf.py:1329 +#: src/emc/usr_intf/pncconf/pncconf.py:2423 +msgid "# overwritten when you run PNCconf again" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:470 -msgid "Cycle Start" +#: src/emc/usr_intf/pncconf/pncconf.py:2134 +msgid "# Use ACTUAL spindle velocity from spindle encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:470 -msgid "Abort" +#: src/emc/usr_intf/pncconf/pncconf.py:2135 +msgid "# spindle-velocity bounces around so we filter it with lowpass" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:470 -#, fuzzy -msgid "Single Step" -msgstr "Disminuir revoluciones del Portabrocas [F11]" +#: src/emc/usr_intf/pncconf/pncconf.py:2136 +msgid "" +"# spindle-velocity is signed so we use absolute component to remove sign" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 -msgid "Jog X +" +#: src/emc/usr_intf/pncconf/pncconf.py:2137 +msgid "# ACTUAL velocity is in RPS not RPM so we scale it." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 -msgid "Jog X -" +#: src/emc/usr_intf/pncconf/pncconf.py:2821 +msgid "# connect miscellaneous signals" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 -msgid "Jog Y +" +#: src/emc/usr_intf/pncconf/pncconf.py:2824 +msgid "# ---HALUI signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 -msgid "Jog Y -" +#: src/emc/usr_intf/pncconf/pncconf.py:2843 +msgid "# ---charge pump signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 -msgid "Jog Z +" +#: src/emc/usr_intf/pncconf/pncconf.py:2847 +msgid "# ---coolant signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 -msgid "Jog Z -" +#: src/emc/usr_intf/pncconf/pncconf.py:2852 +msgid "# ---probe signal---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 -msgid "Jog A +" +#: src/emc/usr_intf/pncconf/pncconf.py:2857 +msgid "# ---jog button signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 -msgid "Jog A -" +#: src/emc/usr_intf/pncconf/pncconf.py:2862 +msgid "# ---USB device jog button signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:478 -#, fuzzy -msgid "Jog button selected +" -msgstr "Correr eje activo" +#: src/emc/usr_intf/pncconf/pncconf.py:2903 +#: src/emc/usr_intf/pncconf/pncconf.py:2929 +msgid "# ---mpg signals---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:478 -#, fuzzy -msgid "Jog button selected -" -msgstr "Correr eje activo" +#: src/emc/usr_intf/pncconf/pncconf.py:3111 +msgid "# ---motion control signals---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:479 -msgid "Unused Input" +#: src/emc/usr_intf/pncconf/pncconf.py:3116 +msgid "# ---digital in / out signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:479 -#, fuzzy -msgid "Limits" -msgstr "Todos los archivos" +#: src/emc/usr_intf/pncconf/pncconf.py:3126 +msgid "# ---estop signals---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:479 -msgid "Limts/Home Shared" +#: src/emc/usr_intf/pncconf/pncconf.py:3145 +msgid "# ---manual tool change signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#, fuzzy -msgid "Axis Selection" -msgstr "Escanear dirección" +#: src/emc/usr_intf/pncconf/pncconf.py:3154 +msgid "# ---toolchange signals for custom tool changer---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#, fuzzy -msgid "Overrides" -msgstr "Exceder limites" +#: src/emc/usr_intf/pncconf/pncconf.py:3176 +msgid "# --- Classicladder signals for Z axis Auto touch off program---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:481 -#, fuzzy -msgid "Operation" -msgstr "Alternando" +#: src/emc/usr_intf/pncconf/pncconf.py:3195 +msgid "# These files are loaded post gladeVCP, in the order they appear" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:481 -#, fuzzy -msgid "External Control" -msgstr "Control manual" +#: src/emc/usr_intf/pncconf/pncconf.py:3209 +#: src/emc/usr_intf/pncconf/pncconf.py:3276 +msgid "# _DO NOT_ include your HAL commands here." +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:481 -#, fuzzy -msgid "Axis rapid" -msgstr "Eje:" +#: src/emc/usr_intf/pncconf/pncconf.py:3210 +msgid "# Put custom HAL commands in custom_gvcp.hal" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:483 -#, fuzzy -msgid "S BLDC Control" -msgstr "Ctrl-M" +#: src/emc/usr_intf/pncconf/pncconf.py:3213 +msgid "# **** Setup of spindle speed display using gladevcp ****" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:556 -msgid "Unused PWM Gen" +#: src/emc/usr_intf/pncconf/pncconf.py:3222 +msgid "# **** Setup GLADE MDI buttons ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:556 -#, fuzzy -msgid "X Axis PWM" -msgstr "Eje:" +#: src/emc/usr_intf/pncconf/pncconf.py:3235 +msgid "" +"# **** Z axis touch-off button - requires the touch-off classicladder " +"program ****" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:556 -#, fuzzy -msgid "Y Axis PWM" -msgstr "Eje:" +#: src/emc/usr_intf/pncconf/pncconf.py:3265 +msgid "# These files are loaded post GUI, in the order they appear" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#, fuzzy -msgid "Z Axis PWM" -msgstr "Eje:" +#: src/emc/usr_intf/pncconf/pncconf.py:3277 +msgid "# Put custom HAL commands in custom_postgui.hal" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#, fuzzy -msgid "A Axis PWM" -msgstr "Eje:" +#: src/emc/usr_intf/pncconf/pncconf.py:3278 +msgid "# The commands in this file are run after the GUI loads" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -#, fuzzy -msgid "X Encoder" -msgstr "Fin" +#: src/emc/usr_intf/pncconf/pncconf.py:3288 +msgid "# **** Setup of spindle speed display using pyvcp -END ****" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -#, fuzzy -msgid "Y Encoder" -msgstr "Fin" +#: src/emc/usr_intf/pncconf/pncconf.py:3300 +msgid "# This file will not be overwritten when you run PNCconf again" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -#, fuzzy -msgid "Z Encoder" -msgstr "Fin" +#: src/emc/usr_intf/pncconf/pncconf.py:3306 +msgid "# These commands are required for Touchy GUI" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -#, fuzzy -msgid "A Encoder" -msgstr "Fin" +#: src/emc/usr_intf/pncconf/pncconf.py:3358 +#, python-format +msgid "Generated by PNCconf at %s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -#, fuzzy -msgid "Spindle Encoder" -msgstr "Controlar portabrocas:" +#: src/emc/usr_intf/pncconf/pncconf.py:3370 +msgid "configures LinuxCNC as:\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "X Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:3371 +msgid "type CNC\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "Y Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:3372 +msgid "will be used as the frontend display" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "Z Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:3381 +msgid " connector" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "A Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:3393 +msgid "invrt" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "Multi Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:3402 +#, python-format +msgid "%(name)s Parport" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:583 -#, fuzzy -msgid "Feed Override" -msgstr "Control de avanze" +#: src/emc/usr_intf/pncconf/pncconf.py:3407 +#: src/emc/usr_intf/pncconf/pncconf.py:3415 +msgid "-> inverted" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:583 -#, fuzzy -msgid "spindle Override" -msgstr "Controlar portabrocas:" +#: src/emc/usr_intf/pncconf/pncconf.py:3409 +#, python-format +msgid "pin# %(pinnum)d is connected to input signal:'%(data)s' %(mesag)s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:583 -#, fuzzy -msgid "Max Vel Override" -msgstr "Control de avanze" +#: src/emc/usr_intf/pncconf/pncconf.py:3417 +#, python-format +msgid "pin# %(pinnum)d is connected to output signal:'%(data)s' %(mesag)s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "Unused Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:3595 +msgid "Desktop Launcher for LinuxCNC config made by PNCconf" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -#, fuzzy -msgid "Axis Encoder" -msgstr "Fin" +#: src/emc/usr_intf/pncconf/pncconf.py:3856 +#, fuzzy, python-format +msgid "%s Axis Configuration" +msgstr "Mostrar configuracion _HAl" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "MPG Jog Controls" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:3881 +#, fuzzy +msgid "Spindle Motor/Encoder Configuration" +msgstr "Mostrar configuracion _HAl" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "Override MPG control" +#: src/emc/usr_intf/pncconf/pncconf.py:3883 +#, python-format +msgid "%s Axis Motor/Encoder Configuration" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "Unused Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:3912 +#, python-format +msgid "%s Parallel Port Setup" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "X Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:3936 +#, python-format +msgid "%s I/0 Setup" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "Y Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:4162 +msgid "Quit PNCconfig and discard changes?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "Z Resolver" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:4203 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Help Pages" +msgstr "Archivos de imagenes" -#: src/emc/usr_intf/pncconf/pncconf.py:588 -msgid "A Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:4208 +msgid "Help page is unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:588 -msgid "S Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:4218 +msgid "" +"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " +"of external hardware is unavailable." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -msgid "Unused 8I20" +#: src/emc/usr_intf/pncconf/pncconf.py:4223 +#, python-format +msgid "" +"You are using a realtime version of LinuxCNC but didn't load a realtime " +"kernel so testing / tuning of external hardware is unavailable.\n" +" This is probably because you updated the OS and it doesn't load the RTAI " +"kernel anymore\n" +" You are using the %(actual)s kernel instead of %(needed)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:61457 +#: src/emc/usr_intf/pncconf/pncconf.py:4256 #, fuzzy -msgid "X Axis" -msgstr "Eje:" +msgid "LinuxCNC 'PNCconf' configuration files" +msgstr "Mostrar configuracion _HAl" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:62549 -#, fuzzy -msgid "Y Axis" -msgstr "Eje:" +#: src/emc/usr_intf/pncconf/pncconf.py:4286 +msgid "" +"It seems data in this file is from too old of a version of PNCConf to " +"continue.\n" +"." +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:63642 -#, fuzzy -msgid "Z Axis" -msgstr "Eje:" +#: src/emc/usr_intf/pncconf/pncconf.py:4293 +#: src/emc/usr_intf/pncconf/pncconf.py:4391 +#, python-format +msgid "Point and click configuration - %s.pncconf " +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.glade:64735 -#, fuzzy -msgid "A Axis" -msgstr "Eje:" +#: src/emc/usr_intf/pncconf/pncconf.py:4413 +msgid "" +"You need to designate a parport and/or mesa I/O device before continuing." +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:597 -msgid "Unused Analog Output" +#: src/emc/usr_intf/pncconf/pncconf.py:4481 +msgid "" +"You Have choosen to re-edit the current config, so you can not go to the new/" +"modify page.\n" +" Quit and reload PNCconf if you wish to build a new config." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:597 -#, fuzzy -msgid "Spindle Output" -msgstr "Portabrocas:" +#: src/emc/usr_intf/pncconf/pncconf.py:4485 +msgid "" +"If you can not go to the new/modify page your current data will be lost.\n" +"Ok to reset data and start a new configuration?" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:613 -msgid "Unused StepGen" +#: src/emc/usr_intf/pncconf/pncconf.py:4811 +msgid "USB device Info Search" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:613 -#, fuzzy -msgid "X Axis StepGen" -msgstr "Eje:" +#: src/emc/usr_intf/pncconf/pncconf.py:4825 +msgid "USB device page is unavailable\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:613 -#, fuzzy -msgid "Y Axis StepGen" -msgstr "Eje:" +#: src/emc/usr_intf/pncconf/pncconf.py:4890 +msgid "Pin names are unavailable\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:613 -#, fuzzy -msgid "Z Axis StepGen" -msgstr "Eje:" +#: src/emc/usr_intf/pncconf/pncconf.py:4912 +msgid "Device names are unavailable\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:614 -#, fuzzy -msgid "A Axis StepGen" -msgstr "Eje:" +#: src/emc/usr_intf/pncconf/pncconf.py:4915 +msgid "No Pncconf made device rules were found\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:614 -#, fuzzy -msgid "Spindle StepGen" -msgstr "Disminuir revoluciones del Portabrocas [F11]" +#: src/emc/usr_intf/pncconf/pncconf.py:5041 +msgid "" +"OK to replace existing glade panel ?\n" +"It will be renamed and added to 'backups' folder.\n" +" Clicking 'existing custom program' will avoid this warning, but if you " +"change related options later -such as spindle feedback- the HAL connection " +"will not update" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:628 -msgid "Unused TPPWM Gen" +#: src/emc/usr_intf/pncconf/pncconf.py:5047 +msgid "" +"OK to replace existing custom pyvcp panel?\n" +"Existing pyvcp-panel.xml will be renamed and added to 'backups' folder\n" +"Clicking 'existing custom program' will aviod this warning. " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:628 -msgid "X Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:5493 +msgid "" +"You need to configure the mesa0 page.\n" +" Choose the board type, firmware, component amounts and press 'Accept " +"component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:628 -msgid "Y Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:5497 +msgid "" +"The chosen Mesa0 board is different from the current displayed.\n" +"please press 'Accept component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "Z Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:5540 +msgid "" +"You need to configure the mesa1 page.\n" +" Choose the board type, firmware, component amounts and press 'Accept " +"component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "A Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:5544 +msgid "" +"The chosen Mesa1 board is different from the current displayed.\n" +"please press 'Accept component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "S Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:5558 +msgid "" +"Do to technical reasons this test panel can be loaded only once without " +"reloading pncconf.You also will not be able to do any other testing untill " +"you reload pncconf and quite possibly open a terminal and type 'halrun -U' I " +"hesitate to even allow it's use but at times it's very useful.\n" +"Do you wish to continue the test?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -#: src/emc/usr_intf/pncconf/pncconf.py:6557 -msgid "Unused Channel" +#: src/emc/usr_intf/pncconf/pncconf.py:7042 +msgid "First Parallel Port set for OUTPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -msgid "8i20 Amplifier Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7044 +msgid "First Parallel Port set for INPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -msgid "7i64 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7068 +msgid "Second Parallel Port set for OUTPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -msgid "7i69 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7070 +msgid "Second Parallel Port set for INPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 -msgid "7i70 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7082 +msgid "Third Parallel Port set for OUTPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 -msgid "7i71 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7084 +msgid "Third Parallel Port set for INPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 -msgid "7i76 Mode 0 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7210 +msgid "You can not have both steppers and pwm signals for spindle control\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:722 -#, fuzzy -msgid "my_LinuxCNC_machine" -msgstr "_Máquina" +#: src/emc/usr_intf/pncconf/pncconf.py:7214 +#, python-format +msgid "You forgot to designate a stepper or pwm signal for axis %s\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1328 -msgid "" -"This configuration was saved with an earlier version of pncconf which may be " -"incompatible.\n" -"If it doesn't plainly cause an error, you still may want to save it with " -"another name and check it. Safer to start from scratch.\n" -"If you have a REALLY large config that you wish to convert to this newer " -"version of PNConf - ask on the LinuxCNC forum - it may be possible.." +#: src/emc/usr_intf/pncconf/pncconf.py:7217 +#, python-format +msgid "You forgot to designate an encoder /resolver signal for axis %s servo\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1334 +#: src/emc/usr_intf/pncconf/pncconf.py:7220 #, python-format -msgid "File %r was modified since it was written by PNCconf" +msgid "You forgot to designate a pwm signal or stepper signal for axis %s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1338 -msgid "" -"Saving this configuration file will discard configuration changes made " -"outside PNCconf." +#: src/emc/usr_intf/pncconf/pncconf.py:7223 +#, python-format +msgid "You can not have both steppers and pwm signals for axis %s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1365 -#: src/emc/usr_intf/pncconf/pncconf.py:2368 +#: src/emc/usr_intf/pncconf/pncconf.py:7226 #, python-format -msgid "# Generated by PNCconf at %s" +msgid "" +"If using a tandem axis stepper, you must select a master stepgen for axis " +"%s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1367 -#: src/emc/usr_intf/pncconf/pncconf.py:2370 -msgid "# overwritten when you run PNCconf again" +#: src/emc/usr_intf/pncconf/pncconf.py:7235 +msgid "Touchy require an external cycle start signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2070 -msgid "# Use ACTUAL spindle velocity from spindle encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:7238 +msgid "Touchy require an external abort signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2071 -msgid "# spindle-velocity bounces around so we filter it with lowpass" +#: src/emc/usr_intf/pncconf/pncconf.py:7241 +msgid "Touchy require an external single-step signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2072 +#: src/emc/usr_intf/pncconf/pncconf.py:7244 msgid "" -"# spindle-velocity is signed so we use absolute component to remove sign" +"Touchy require an external multi handwheel MPG encoder signal on the mesa " +"page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2073 -msgid "# ACTUAL velocity is in RPS not RPM so we scale it." +#: src/emc/usr_intf/pncconf/pncconf.py:7247 +msgid "" +"Touchy require 'external mpg jogging' to be selected on the external control " +"page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2082 +#: src/emc/usr_intf/pncconf/pncconf.py:7250 msgid "" -"# Use COMMANDED spindle velocity from LinuxCNC because no spindle encoder " -"was specified" +"Touchy require the external mpg to be in 'shared mpg' mode on the external " +"controls page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2083 +#: src/emc/usr_intf/pncconf/pncconf.py:7253 msgid "" -"# COMMANDED velocity is signed so we use absolute component to remove sign" +"Touchy require selectable increments to be unchecked on the external " +"controls page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2727 -msgid "# connect miscellaneous signals" +#: src/emc/usr_intf/pncconf/pncconf.py:7257 +msgid "" +"The 7i29 daughter board requires PWM type generators and a PWM base " +"frequency of 20 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2730 -msgid "# ---HALUI signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7260 +msgid "" +"The 7i30 daughter board requires PWM type generators and a PWM base " +"frequency of 20 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2749 -msgid "# ---charge pump signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7263 +msgid "" +"The 7i33 daughter board requires PDM type generators and a PDM base " +"frequency of 6 Mhz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2753 -msgid "# ---coolant signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7266 +msgid "" +"The 7i40 daughter board requires PWM type generators and a PWM base " +"frequency of 50 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2758 -msgid "# ---probe signal---" +#: src/emc/usr_intf/pncconf/pncconf.py:7269 +msgid "" +"The 7i48 daughter board requires UDM type generators and a PWM base " +"frequency of 24 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2763 -msgid "# ---jog button signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7494 +msgid "Gearbox Reduction Ratio" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2768 -msgid "# ---USB device jog button signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7497 +msgid "Reduction Ratio" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2803 -#: src/emc/usr_intf/pncconf/pncconf.py:2825 -msgid "# ---mpg signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7500 +msgid "Leadscrew Pitch" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2971 -msgid "# ---motion control signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7503 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Leadscrew TPI" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2976 -msgid "# ---digital in / out signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7507 +#: src/emc/usr_intf/pncconf/pncconf.py:7508 +msgid "(" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2986 -msgid "# ---estop signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7509 +#: src/emc/usr_intf/pncconf/pncconf.py:7519 +#: src/emc/usr_intf/pncconf/pncconf.py:7520 +#: src/emc/usr_intf/pncconf/pncconf.py:7521 +msgid " / min" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3005 -msgid "# ---manual tool change signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7510 +msgid " / sec²" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3014 -msgid "# ---toolchange signals for custom tool changer---" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:7513 +#, fuzzy +msgid " / Step" +msgstr "Pa_so" -#: src/emc/usr_intf/pncconf/pncconf.py:3036 -msgid "# --- Classicladder signals for Z axis Auto touch off program---" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:7514 +#, fuzzy +msgid "Steps / " +msgstr "Pa_so" -#: src/emc/usr_intf/pncconf/pncconf.py:3055 -msgid "# These files are loaded post gladeVCP, in the order they appear" +#: src/emc/usr_intf/pncconf/pncconf.py:7516 +msgid " / encoder pulse" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3069 -#: src/emc/usr_intf/pncconf/pncconf.py:3136 -msgid "# _DO NOT_ include your HAL commands here." +#: src/emc/usr_intf/pncconf/pncconf.py:7517 +msgid "Encoder pulses / " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3070 -msgid "# Put custom HAL commands in custom_gvcp.hal" +#: src/emc/usr_intf/pncconf/pncconf.py:7525 +#, fuzzy +msgid "Resolver Scale:" +msgstr "Ejecutar programa por paso" + +#: src/emc/usr_intf/pncconf/pncconf.py:7826 +msgid "Axis Scale Calculation" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3073 -msgid "# **** Setup of spindle speed display using gladevcp ****" +#: src/emc/usr_intf/pncconf/pncconf.py:8133 +msgid "You need to designate an E-stop input pin for this ladder program." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3082 -msgid "# **** Setup GLADE MDI buttons ****" +#: src/emc/usr_intf/pncconf/pncconf.py:8145 +msgid "You need to designate a probe input pin for this ladder program." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3095 +#: src/emc/usr_intf/pncconf/pncconf.py:8156 msgid "" -"# **** Z axis touch-off button - requires the touch-off classicladder " -"program ****" +"OK to replace existing custom ladder program?\n" +"Existing Custom.clp will be renamed custom_backup.clp.\n" +"Any existing file named -custom_backup.clp- will be lost.Selecting 'existing " +"ladder program' will avoid this warning" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3125 -msgid "# These files are loaded post GUI, in the order they appear" +#: src/emc/usr_intf/pncconf/pncconf.py:8374 +msgid "Do you wish to continue to edit this configuration." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3137 -msgid "# Put custom HAL commands in custom_postgui.hal" +#: src/emc/usr_intf/pncconf/pncconf.py:8413 +msgid "PCI search page is unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3138 -msgid "# The commands in this file are run after the GUI loads" +#: src/emc/usr_intf/pncconf/pncconf.py:8532 +msgid "" +"You specified there is an existing gladefile, But there is not one in the " +"machine-named folder.." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3148 -msgid "# **** Setup of spindle speed display using pyvcp -END ****" +#: src/emc/usr_intf/pncconf/pncconf.py:8856 +msgid "Servo tuning is not avaiable in PNCconf yet\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3160 -msgid "# This file will not be overwritten when you run PNCconf again" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:8861 +#, fuzzy +msgid "degrees" +msgstr "Fresador de 45°" -#: src/emc/usr_intf/pncconf/pncconf.py:3166 -msgid "# These commands are required for Touchy GUI" +#: src/emc/usr_intf/pncconf/pncconf.py:8862 +msgid "degrees / minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3218 -#, python-format -msgid "Generated by PNCconf at %s" +#: src/emc/usr_intf/pncconf/pncconf.py:8863 +msgid "degrees / second²" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3230 -msgid "configures LinuxCNC as:\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:8865 +#, fuzzy +msgid "revolutions" +msgstr "Posicion:" -#: src/emc/usr_intf/pncconf/pncconf.py:3231 -msgid "type CNC\n" +#: src/emc/usr_intf/pncconf/pncconf.py:8866 +msgid "rpm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3232 -msgid "will be used as the frontend display" +#: src/emc/usr_intf/pncconf/pncconf.py:8867 +msgid "revs / second²" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3241 -msgid " connector" +#: src/emc/usr_intf/pncconf/pncconf.py:8870 +#: src/emc/usr_intf/pncconf/pncconf.glade:65184 +#: src/emc/usr_intf/pncconf/pncconf.glade:65281 +#: src/emc/usr_intf/pncconf/pncconf.glade:65465 +msgid "mm / minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3253 -msgid "invrt" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:8871 +#, fuzzy +msgid "mm / second²" +msgstr "Correr segundo eje" -#: src/emc/usr_intf/pncconf/pncconf.py:3262 -#, python-format -msgid "%(name)s Parport" +#: src/emc/usr_intf/pncconf/pncconf.py:8874 +msgid "inches / minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3267 -#: src/emc/usr_intf/pncconf/pncconf.py:3275 -msgid "-> inverted" +#: src/emc/usr_intf/pncconf/pncconf.py:8875 +msgid "inches / second²" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3269 +#: src/emc/usr_intf/pncconf/pncconf.py:9031 #, python-format -msgid "pin# %(pinnum)d is connected to input signal:'%(data)s' %(mesag)s" +msgid "%s Axis Tune" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3277 -#, python-format -msgid "pin# %(pinnum)d is connected to output signal:'%(data)s' %(mesag)s" +#: src/emc/usr_intf/pncconf/pncconf.py:9195 +msgid "" +" You must designate a ENCODER / RESOLVER signal and an ANALOG SPINDLE signal " +"for this axis test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3455 -msgid "Desktop Launcher for LinuxCNC config made by PNCconf" +#: src/emc/usr_intf/pncconf/pncconf.py:9199 +msgid "" +" You must designate a ENCODER / RESOLVER signal and a PWM signal for this " +"axis test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3725 +#: src/emc/usr_intf/pncconf/pncconf.glade:8 #, fuzzy -msgid "Spindle Motor/Encoder Configuration" +msgid "LinuxCNC Point And Click Configuration" msgstr "Mostrar configuracion _HAl" -#: src/emc/usr_intf/pncconf/pncconf.py:3727 -#, python-format -msgid "%s Axis Motor/Encoder Configuration" +#: src/emc/usr_intf/pncconf/pncconf.glade:23 +msgid "LinuxCNC Configuration Wizard Beta 1 Version" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3756 -#, python-format -msgid "%s Parallel Port Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:24 +msgid "" +"\tThis program creates configuration \n" +" files for \"Closed Loop Servo\" \n" +"\t \t and hardware stepper\n" +" \tmachines" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3780 -#, python-format -msgid "%s I/0 Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:34 +msgid "Create or Edit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4001 -msgid "Quit PNCconfig and discard changes?" +#: src/emc/usr_intf/pncconf/pncconf.glade:66 +msgid "Create a desktop launcher to start LinuxCNC with this configuration." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4042 -#: src/emc/usr_intf/pncconf/pncconf.glade:65849 +#: src/emc/usr_intf/pncconf/pncconf.glade:83 +msgid "Create a desktop shortcut (symlink) to configuration files." +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:148 #, fuzzy -msgid "Help Pages" -msgstr "Archivos de imagenes" +msgid "Create a new configuration" +msgstr "Mostrar configuracion _HAl" -#: src/emc/usr_intf/pncconf/pncconf.py:4047 -msgid "Help page is unavailable\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:175 +#, fuzzy +msgid "Basic machine information" +msgstr "Mostrar posicion absoluta" -#: src/emc/usr_intf/pncconf/pncconf.py:4054 -msgid "" -"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " -"of external hardware is unavailable." -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:214 +#, fuzzy +msgid "Machine Name:" +msgstr "Coordenada absoluta" -#: src/emc/usr_intf/pncconf/pncconf.py:4059 -#, python-format -msgid "" -"You are using a realtime version of LinuxCNC but didn't load a realtime " -"kernel so testing / tuning of external hardware is unavailable.\n" -" This is probably because you updated the OS and it doesn't load the RTAI " -"kernel anymore\n" -" You are using the %(actual)s kernel instead of %(needed)s" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:280 +#, fuzzy +msgid "Axis configuration:" +msgstr "Mostrar configuracion _HAl" -#: src/emc/usr_intf/pncconf/pncconf.py:4079 -#, python-format +#: src/emc/usr_intf/pncconf/pncconf.glade:295 msgid "" -"You are have no hostmot2 firmware downloaded in folder:\n" -"%s\n" -"PNCconf will use sample firmware data\n" -"live testing will not be possible" +"XYZ\n" +"XYZA\n" +"XZ (Lathe)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4093 +#: src/emc/usr_intf/pncconf/pncconf.glade:322 #, fuzzy -msgid "LinuxCNC 'PNCconf' configuration files" -msgstr "Mostrar configuracion _HAl" +msgid "Machine units:" +msgstr "Coordenada absoluta" -#: src/emc/usr_intf/pncconf/pncconf.py:4123 +#: src/emc/usr_intf/pncconf/pncconf.glade:337 msgid "" -"It seems data in this file is from too old of a version of PNCConf to " -"continue.\n" -"." +"Inch\n" +"Millimeter" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4130 -#: src/emc/usr_intf/pncconf/pncconf.py:4228 -#, python-format -msgid "Point and click configuration - %s.pncconf " +#: src/emc/usr_intf/pncconf/pncconf.glade:363 +msgid "Machine Basics" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4250 -msgid "" -"You need to designate a parport and/or mesa I/O device before continuing." +#: src/emc/usr_intf/pncconf/pncconf.glade:416 +msgid "Actual Servo Period: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4309 -msgid "" -"You Have choosen to re-edit the current config, so you can not go to the new/" -"modify page.\n" -" Quit and reload PNCconf if you wish to build a new config." +#: src/emc/usr_intf/pncconf/pncconf.glade:475 +msgid "Recommend servo period: 1000000" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4313 +#: src/emc/usr_intf/pncconf/pncconf.glade:494 msgid "" -"If you can not go to the new/modify page your current data will be lost.\n" -"Ok to reset data and start a new configuration?" +" Test Base\n" +"Period Jitter " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4594 -msgid "USB device Info Search" +#: src/emc/usr_intf/pncconf/pncconf.glade:519 +msgid "Computer Response Time" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4608 -msgid "USB device page is unavailable\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:561 +msgid "Mesa0 PCI / Parport Card:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4673 -msgid "Pin names are unavailable\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:571 +msgid "Mesa1 PCI / Parport Card:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4695 -msgid "Device names are unavailable\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:584 +msgid "First Parport Address:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4698 -msgid "No Pncconf made device rules were found\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:597 +msgid "Second Parport Address:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4822 -msgid "" -"OK to replace existing glade panel ?\n" -"It will be renamed and added to 'backups' folder.\n" -" Clicking 'existing custom program' will aviod this warning. " +#: src/emc/usr_intf/pncconf/pncconf.glade:612 +msgid "Third Parport Address:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4827 +#: src/emc/usr_intf/pncconf/pncconf.glade:635 +#: src/emc/usr_intf/pncconf/pncconf.glade:643 msgid "" -"OK to replace existing custom pyvcp panel?\n" -"Existing pyvcp-panel.xml will be renamed and added to 'backups' folder\n" -"Clicking 'existing custom program' will aviod this warning. " +"5i20\n" +"5i23\n" +"5i22" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5250 +#: src/emc/usr_intf/pncconf/pncconf.glade:716 +#: src/emc/usr_intf/pncconf/pncconf.glade:728 +#: src/emc/usr_intf/pncconf/pncconf.glade:741 msgid "" -"You need to configure the mesa0 page.\n" -" Choose the board type, firmware, component amounts and press 'Accept " -"component changes' button'" +"In\n" +"Out" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5254 +#: src/emc/usr_intf/pncconf/pncconf.glade:804 msgid "" -"The chosen Mesa0 board is different from the current displayed.\n" -"please press 'Accept component changes' button'" +"Add-on PCI\n" +" Parport\n" +" Address \n" +" Search" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5297 -msgid "" -"You need to configure the mesa1 page.\n" -" Choose the board type, firmware, component amounts and press 'Accept " -"component changes' button'" +#: src/emc/usr_intf/pncconf/pncconf.glade:829 +msgid "I/O Control Ports/ Boards" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5301 -msgid "" -"The chosen Mesa1 board is different from the current displayed.\n" -"please press 'Accept component changes' button'" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:878 +#, fuzzy +msgid "Axis" +msgstr "Eje:" -#: src/emc/usr_intf/pncconf/pncconf.py:5315 -msgid "" -"Do to technical reasons this test panel can be loaded only once without " -"reloading pncconf.You also will not be able to do any other testing untill " -"you reload pncconf and quite possibly open a terminal and type 'halrun -U' I " -"hesitate to even allow it's use but at times it's very useful.\n" -"Do you wish to continue the test?" +#: src/emc/usr_intf/pncconf/pncconf.glade:893 +msgid "TKLinuxCNC" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6699 -msgid "First Parallel Port set for OUTPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:907 +msgid "Mini" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6701 -msgid "First Parallel Port set for INPUT" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:921 +#: src/emc/usr_intf/pncconf/pncconf.glade:6656 +#, fuzzy +msgid "Touchy" +msgstr "Regular Offset" -#: src/emc/usr_intf/pncconf/pncconf.py:6725 -msgid "Second Parallel Port set for OUTPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:938 +msgid "GUI frontend list" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6727 -msgid "Second Parallel Port set for INPUT" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:973 +#, fuzzy +msgid "External Controls" +msgstr "Control manual" -#: src/emc/usr_intf/pncconf/pncconf.py:6739 -msgid "Third Parallel Port set for OUTPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:1014 +msgid "Add device rule" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6741 -msgid "Third Parallel Port set for INPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:1027 +msgid "Test device" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6866 -msgid "You can not have both steppers and pwm signals for spindle control\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1041 +msgid "Search for device rules" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6870 -#, python-format -msgid "You forgot to designate a stepper or pwm signal for axis %s\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1062 +#, fuzzy +msgid "Device Name:" +msgstr "Coordenada absoluta" -#: src/emc/usr_intf/pncconf/pncconf.py:6873 -#, python-format -msgid "You forgot to designate an encoder /resolver signal for axis %s servo\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1125 +msgid "A +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6876 -#, python-format -msgid "You forgot to designate a pwm signal or stepper signal for axis %s\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1135 +msgid "A -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6879 -#, python-format -msgid "You can not have both steppers and pwm signals for axis %s\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1169 +#: src/emc/usr_intf/pncconf/pncconf.glade:1181 +#: src/emc/usr_intf/pncconf/pncconf.glade:1191 +#: src/emc/usr_intf/pncconf/pncconf.glade:1246 +#: src/emc/usr_intf/pncconf/pncconf.glade:1759 +msgid "mm/min " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6887 -msgid "Touchy require an external cycle start signal\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1269 +msgid " ab)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6890 -msgid "Touchy require an external abort signal\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1282 +#: src/emc/usr_intf/pncconf/pncconf.glade:2493 +#: src/emc/usr_intf/pncconf/pncconf.glade:2927 +#: src/emc/usr_intf/pncconf/pncconf.glade:3808 +#: src/emc/usr_intf/pncconf/pncconf.glade:4689 +#, fuzzy +msgid " b)" +msgstr "Restaurar" -#: src/emc/usr_intf/pncconf/pncconf.py:6893 -msgid "Touchy require an external single-step signal\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1293 +#: src/emc/usr_intf/pncconf/pncconf.glade:2482 +#: src/emc/usr_intf/pncconf/pncconf.glade:2916 +#: src/emc/usr_intf/pncconf/pncconf.glade:3797 +#: src/emc/usr_intf/pncconf/pncconf.glade:4678 +#, fuzzy +msgid " a)" +msgstr "Restaurar" -#: src/emc/usr_intf/pncconf/pncconf.py:6896 -msgid "" -"Touchy require an external multi handwheel MPG encoder signal on the mesa " -"page\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1305 +#: src/emc/usr_intf/pncconf/pncconf.glade:2385 +#: src/emc/usr_intf/pncconf/pncconf.glade:2867 +#: src/emc/usr_intf/pncconf/pncconf.glade:3748 +#: src/emc/usr_intf/pncconf/pncconf.glade:4629 +msgid "default" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6899 -msgid "" -"Touchy require 'external mpg jogging' to be selected on the external control " -"page\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1336 +#: src/emc/usr_intf/pncconf/pncconf.glade:1476 +#, fuzzy +msgid "Jog Speed select A" +msgstr "Velocidad:" -#: src/emc/usr_intf/pncconf/pncconf.py:6902 -msgid "" -"Touchy require the external mpg to be in 'shared mpg' mode on the external " -"controls page\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1348 +msgid "X +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6905 -msgid "" -"Touchy require selectable increments to be unchecked on the external " -"controls page\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1354 +msgid "Y +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6909 -msgid "" -"The 7i29 daughter board requires PWM type generators and a PWM base " -"frequency of 20 khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1364 +msgid "Z +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6912 -msgid "" -"The 7i30 daughter board requires PWM type generators and a PWM base " -"frequency of 20 khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1374 +msgid "X -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6915 -msgid "" -"The 7i33 daughter board requires PDM type generators and a PDM base " -"frequency of 6 Mhz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1384 +msgid "Y -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6918 -msgid "" -"The 7i40 daughter board requires PWM type generators and a PWM base " -"frequency of 50 khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1396 +msgid "Z -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6921 -msgid "" -"The 7i48 daughter board requires UDM type generators and a PWM base " -"frequency of 24 khz\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1500 +#, fuzzy +msgid "Digital Control" +msgstr "Control manual" -#: src/emc/usr_intf/pncconf/pncconf.py:7148 -msgid "Gearbox Reduction Ratio" +#: src/emc/usr_intf/pncconf/pncconf.glade:1593 +#: src/emc/usr_intf/gscreen/gscreen.glade:502 +msgid "A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7151 -msgid "Reduction Ratio" +#: src/emc/usr_intf/pncconf/pncconf.glade:1603 +#: src/emc/usr_intf/gscreen/gscreen.glade:374 +msgid "Z" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7154 -msgid "Leadscrew Pitch" +#: src/emc/usr_intf/pncconf/pncconf.glade:1613 +#: src/emc/usr_intf/pncconf/pncconf.glade:6134 +#: src/emc/usr_intf/pncconf/pncconf.glade:6458 +#: src/emc/usr_intf/pncconf/pncconf.glade:6860 +#: src/emc/usr_intf/pncconf/pncconf.glade:7235 +#: src/emc/usr_intf/gscreen/gscreen.glade:244 +msgid "Y" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7157 -#: src/emc/usr_intf/pncconf/pncconf.glade:66327 -#: src/emc/usr_intf/pncconf/pncconf.glade:66622 -msgid "Leadscrew TPI" +#: src/emc/usr_intf/pncconf/pncconf.glade:1623 +msgid "X " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7161 -#: src/emc/usr_intf/pncconf/pncconf.py:7162 -msgid "(" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1631 +#, fuzzy +msgid "Analog Control" +msgstr "Control manual" -#: src/emc/usr_intf/pncconf/pncconf.py:7163 -#: src/emc/usr_intf/pncconf/pncconf.py:7173 -#: src/emc/usr_intf/pncconf/pncconf.py:7174 -#: src/emc/usr_intf/pncconf/pncconf.py:7175 -msgid " / min" +#: src/emc/usr_intf/pncconf/pncconf.glade:1657 +#: src/emc/usr_intf/pncconf/pncconf.glade:1788 +#: src/emc/usr_intf/pncconf/pncconf.glade:2698 +#: src/emc/usr_intf/pncconf/pncconf.glade:3579 +#: src/emc/usr_intf/pncconf/pncconf.glade:4460 +#: src/emc/usr_intf/pncconf/pncconf.glade:5341 +#: src/emc/usr_intf/pncconf/pncconf.glade:64300 +msgid "Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7164 -msgid " / sec²" +#: src/emc/usr_intf/pncconf/pncconf.glade:1675 +msgid "USB Joystick Jogging " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7167 -#, fuzzy -msgid " / Step" -msgstr "Pa_so" +#: src/emc/usr_intf/pncconf/pncconf.glade:1719 +msgid "shared buttons for all axis" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7168 +#: src/emc/usr_intf/pncconf/pncconf.glade:1732 #, fuzzy -msgid "Steps / " -msgstr "Pa_so" +msgid "buttons for each axis" +msgstr "Correr cuarto eje" -#: src/emc/usr_intf/pncconf/pncconf.py:7170 -msgid " / encoder pulse" +#: src/emc/usr_intf/pncconf/pncconf.glade:1806 +msgid "External Button Jogging" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7171 -msgid "Encoder pulses / " +#: src/emc/usr_intf/pncconf/pncconf.glade:1847 +msgid "Shared MPG / selectable axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7482 -msgid "Axis Scale Calculation" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1860 +#, fuzzy +msgid "Mpg per axis" +msgstr "Correr primer eje" -#: src/emc/usr_intf/pncconf/pncconf.py:7785 -msgid "You need to designate an E-stop input pin for this ladder program." +#: src/emc/usr_intf/pncconf/pncconf.glade:1875 +#, fuzzy +msgid "selectable MPG increments" +msgstr "Elegir incremento del avance" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1940 +#: src/emc/usr_intf/pncconf/pncconf.glade:3379 +#: src/emc/usr_intf/pncconf/pncconf.glade:4260 +#: src/emc/usr_intf/pncconf/pncconf.glade:5141 +#, fuzzy +msgid " d)" +msgstr "Restaurar" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1952 +#: src/emc/usr_intf/pncconf/pncconf.glade:3340 +#: src/emc/usr_intf/pncconf/pncconf.glade:4221 +#: src/emc/usr_intf/pncconf/pncconf.glade:5102 +msgid " abcd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7797 -msgid "You need to designate a probe input pin for this ladder program." +#: src/emc/usr_intf/pncconf/pncconf.glade:1965 +#: src/emc/usr_intf/pncconf/pncconf.glade:3353 +#: src/emc/usr_intf/pncconf/pncconf.glade:4234 +#: src/emc/usr_intf/pncconf/pncconf.glade:5115 +msgid " bcd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7808 -msgid "" -"OK to replace existing custom ladder program?\n" -"Existing Custom.clp will be renamed custom_backup.clp.\n" -"Any existing file named -custom_backup.clp- will be lost.Selecting 'existing " -"ladder program' will avoid this warning" +#: src/emc/usr_intf/pncconf/pncconf.glade:1978 +#: src/emc/usr_intf/pncconf/pncconf.glade:3366 +#: src/emc/usr_intf/pncconf/pncconf.glade:4247 +#: src/emc/usr_intf/pncconf/pncconf.glade:5128 +msgid " acd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8019 -msgid "Do you wish to continue to edit this configuration." +#: src/emc/usr_intf/pncconf/pncconf.glade:1991 +#: src/emc/usr_intf/pncconf/pncconf.glade:3430 +#: src/emc/usr_intf/pncconf/pncconf.glade:4311 +#: src/emc/usr_intf/pncconf/pncconf.glade:5192 +msgid " cd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8058 -msgid "PCI search page is unavailable\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2004 +#: src/emc/usr_intf/pncconf/pncconf.glade:3404 +#: src/emc/usr_intf/pncconf/pncconf.glade:4285 +#: src/emc/usr_intf/pncconf/pncconf.glade:5166 +msgid " bd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8176 -msgid "" -"You specified there is an existing gladefile, But there is not one in the " -"machine-named folder.." +#: src/emc/usr_intf/pncconf/pncconf.glade:2017 +#: src/emc/usr_intf/pncconf/pncconf.glade:3391 +#: src/emc/usr_intf/pncconf/pncconf.glade:4272 +#: src/emc/usr_intf/pncconf/pncconf.glade:5153 +msgid " ad)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8495 -msgid "Servo tuning is not avaiable in PNCconf yet\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2030 +#: src/emc/usr_intf/pncconf/pncconf.glade:2514 +#: src/emc/usr_intf/pncconf/pncconf.glade:3059 +#: src/emc/usr_intf/pncconf/pncconf.glade:3940 +#: src/emc/usr_intf/pncconf/pncconf.glade:4821 +msgid " abc)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8500 +#: src/emc/usr_intf/pncconf/pncconf.glade:2041 +#: src/emc/usr_intf/pncconf/pncconf.glade:3026 +#: src/emc/usr_intf/pncconf/pncconf.glade:3907 +#: src/emc/usr_intf/pncconf/pncconf.glade:4788 #, fuzzy -msgid "degrees" -msgstr "Fresador de 45°" +msgid " c)" +msgstr "Restaurar" -#: src/emc/usr_intf/pncconf/pncconf.py:8501 -msgid "degrees / minute" +#: src/emc/usr_intf/pncconf/pncconf.glade:2207 +#: src/emc/usr_intf/pncconf/pncconf.glade:3049 +#: src/emc/usr_intf/pncconf/pncconf.glade:3930 +#: src/emc/usr_intf/pncconf/pncconf.glade:4811 +msgid " bc)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8502 -msgid "degrees / second²" +#: src/emc/usr_intf/pncconf/pncconf.glade:2217 +#: src/emc/usr_intf/pncconf/pncconf.glade:3038 +#: src/emc/usr_intf/pncconf/pncconf.glade:3919 +#: src/emc/usr_intf/pncconf/pncconf.glade:4800 +msgid " ac)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8504 -#, fuzzy -msgid "revolutions" -msgstr "Posicion:" +#: src/emc/usr_intf/pncconf/pncconf.glade:2504 +#: src/emc/usr_intf/pncconf/pncconf.glade:2938 +#: src/emc/usr_intf/pncconf/pncconf.glade:3819 +#: src/emc/usr_intf/pncconf/pncconf.glade:4700 +msgid " ab)" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8505 -msgid "rpm" +#: src/emc/usr_intf/pncconf/pncconf.glade:2577 +msgid "ignore all inputs false" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8506 -msgid "revs / second²" +#: src/emc/usr_intf/pncconf/pncconf.glade:2592 +msgid "use gray code" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8509 -#: src/emc/usr_intf/pncconf/pncconf.glade:58295 -#: src/emc/usr_intf/pncconf/pncconf.glade:58479 -#: src/emc/usr_intf/pncconf/pncconf.glade:58576 -msgid "mm / minute" +#: src/emc/usr_intf/pncconf/pncconf.glade:2607 +#: src/emc/usr_intf/pncconf/pncconf.glade:3489 +#: src/emc/usr_intf/pncconf/pncconf.glade:4356 +#: src/emc/usr_intf/pncconf/pncconf.glade:5237 +msgid "use debounce" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8510 +#: src/emc/usr_intf/pncconf/pncconf.glade:2658 +#: src/emc/usr_intf/pncconf/pncconf.glade:3453 +#: src/emc/usr_intf/pncconf/pncconf.glade:4334 +#: src/emc/usr_intf/pncconf/pncconf.glade:5215 #, fuzzy -msgid "mm / second²" -msgstr "Correr segundo eje" +msgid "Mux options" +msgstr "Tiempo de movimiento" -#: src/emc/usr_intf/pncconf/pncconf.py:8513 -msgid "inches / minute" +#: src/emc/usr_intf/pncconf/pncconf.glade:2672 +#, fuzzy +msgid "increments" +msgstr "Elegir incremento del avance" + +#: src/emc/usr_intf/pncconf/pncconf.glade:2716 +msgid "External MPG Jogging" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8514 -msgid "inches / second²" +#: src/emc/usr_intf/pncconf/pncconf.glade:2747 +#: src/emc/usr_intf/pncconf/pncconf.glade:3628 +#: src/emc/usr_intf/pncconf/pncconf.glade:4509 +msgid "Use MPG " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8646 -#, python-format -msgid "%s Axis Tune" +#: src/emc/usr_intf/pncconf/pncconf.glade:2760 +#: src/emc/usr_intf/pncconf/pncconf.glade:3641 +#: src/emc/usr_intf/pncconf/pncconf.glade:4522 +msgid "use switches" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8810 -msgid "" -" You must designate a ENCODER / RESOLVER signal and an ANALOG SPINDLE signal " -"for this axis test" +#: src/emc/usr_intf/pncconf/pncconf.glade:3417 +#: src/emc/usr_intf/pncconf/pncconf.glade:4298 +#: src/emc/usr_intf/pncconf/pncconf.glade:5179 +msgid " abd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8814 -msgid "" -" You must designate a ENCODER / RESOLVER signal and a PWM signal for this " -"axis test" +#: src/emc/usr_intf/pncconf/pncconf.glade:3504 +#: src/emc/usr_intf/pncconf/pncconf.glade:4371 +#: src/emc/usr_intf/pncconf/pncconf.glade:5252 +msgid "use graycode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8 +#: src/emc/usr_intf/pncconf/pncconf.glade:3519 +#: src/emc/usr_intf/pncconf/pncconf.glade:4386 +#: src/emc/usr_intf/pncconf/pncconf.glade:5267 +msgid "ignore all-inputs false" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:3563 +#: src/emc/usr_intf/pncconf/pncconf.glade:4444 +#: src/emc/usr_intf/pncconf/pncconf.glade:5325 #, fuzzy -msgid "LinuxCNC Point And Click Configuration" -msgstr "Mostrar configuracion _HAl" +msgid "Increments" +msgstr "Elegir incremento del avance" -#: src/emc/usr_intf/pncconf/pncconf.glade:23 -msgid "LinuxCNC Configuration Wizard Beta 1 Version" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:3597 +#, fuzzy +msgid "External Feed Override" +msgstr "Control de avanze" -#: src/emc/usr_intf/pncconf/pncconf.glade:24 -msgid "" -"\tThis program creates configuration \n" -" files for \"Closed Loop Servo\" \n" -"\t \t and hardware stepper\n" -" \tmachines" +#: src/emc/usr_intf/pncconf/pncconf.glade:4478 +msgid "Max Velocity Override" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:34 -msgid "Create or Edit" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5359 +#, fuzzy +msgid "External Spindle Override" +msgstr "Controlar portabrocas:" -#: src/emc/usr_intf/pncconf/pncconf.glade:52 +#: src/emc/usr_intf/pncconf/pncconf.glade:5387 #, fuzzy -msgid "Create a new configuration" +msgid "GUI configuration" msgstr "Mostrar configuracion _HAl" -#: src/emc/usr_intf/pncconf/pncconf.glade:118 -msgid "Create a desktop shortcut (symlink) to configuration files." -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:135 -msgid "Create a desktop launcher to start LinuxCNC with this configuration." +#: src/emc/usr_intf/pncconf/pncconf.glade:5406 +msgid "Frontend" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:214 +#: src/emc/usr_intf/pncconf/pncconf.glade:5566 #, fuzzy -msgid "Machine Name:" -msgstr "Coordenada absoluta" +msgid "Position_offset" +msgstr "Posicion:" -#: src/emc/usr_intf/pncconf/pncconf.glade:281 +#: src/emc/usr_intf/pncconf/pncconf.glade:5573 #, fuzzy -msgid "Axis configuration:" -msgstr "Mostrar configuracion _HAl" +msgid "Position_feedback" +msgstr "Posicion:" -#: src/emc/usr_intf/pncconf/pncconf.glade:316 +#: src/emc/usr_intf/pncconf/pncconf.glade:5584 #, fuzzy -msgid "Machine units:" -msgstr "Coordenada absoluta" +msgid "Max Spindle Override " +msgstr "Controlar portabrocas:" -#: src/emc/usr_intf/pncconf/pncconf.glade:355 -msgid "Machine Basics" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5606 +#, fuzzy +msgid "Min Spindle Override" +msgstr "Controlar portabrocas:" -#: src/emc/usr_intf/pncconf/pncconf.glade:405 -msgid "Recommend servo period: 1000000" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5665 +#, fuzzy +msgid "Max Feed Override" +msgstr "Control de avanze" -#: src/emc/usr_intf/pncconf/pncconf.glade:431 -msgid "Actual Servo Period: " -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5702 +#, fuzzy +msgid "" +"Machine\n" +"Relative\n" +msgstr "relativo" -#: src/emc/usr_intf/pncconf/pncconf.glade:486 +#: src/emc/usr_intf/pncconf/pncconf.glade:5714 +#, fuzzy msgid "" -" Test Base\n" -"Period Jitter " -msgstr "" +"Commanded\n" +"Actual" +msgstr "dirigido" -#: src/emc/usr_intf/pncconf/pncconf.glade:511 -msgid "Computer Response Time" +#: src/emc/usr_intf/pncconf/pncconf.glade:5729 +msgid "General GUI Defaults" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:553 -msgid "Mesa0 PCI / Parport Card:" +#: src/emc/usr_intf/pncconf/pncconf.glade:5811 +msgid "Default linear velocity " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:563 -msgid "Mesa1 PCI / Parport Card:" +#: src/emc/usr_intf/pncconf/pncconf.glade:5818 +msgid "Min linear velocity" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:576 -msgid "First Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.glade:5829 +msgid "Max linear velocity" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:589 -msgid "Second Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.glade:5879 +#: src/emc/usr_intf/pncconf/pncconf.glade:6085 +#: src/emc/usr_intf/pncconf/pncconf.glade:6097 +msgid "mm / min" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:604 -msgid "Third Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.glade:5892 +msgid "Default Angular velocity " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:627 -#: src/emc/usr_intf/pncconf/pncconf.glade:635 -msgid "" -"5i20\n" -"5i23\n" -"5i22" +#: src/emc/usr_intf/pncconf/pncconf.glade:5926 +msgid "gedit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:708 -#: src/emc/usr_intf/pncconf/pncconf.glade:720 -#: src/emc/usr_intf/pncconf/pncconf.glade:733 -msgid "" -"In\n" -"Out" +#: src/emc/usr_intf/pncconf/pncconf.glade:5939 +msgid "Min Angular velocity" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:796 -msgid "" -"Add-on PCI\n" -" Parport\n" -" Address \n" -" Search" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5966 +#, fuzzy +msgid "Increments " +msgstr "Elegir incremento del avance" -#: src/emc/usr_intf/pncconf/pncconf.glade:821 -msgid "I/O Control Ports/ Boards" +#: src/emc/usr_intf/pncconf/pncconf.glade:5977 +msgid "5mm 1mm .5mm .1mm .05mm .01mm .005mm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:870 -#, fuzzy -msgid "Axis" -msgstr "Eje:" +#: src/emc/usr_intf/pncconf/pncconf.glade:5990 +msgid "Max Angular velocity" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:885 -msgid "TKLinuxCNC" +#: src/emc/usr_intf/pncconf/pncconf.glade:6017 +msgid "Axis Geometry" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:899 -msgid "Mini" +#: src/emc/usr_intf/pncconf/pncconf.glade:6028 +msgid "xyzabc" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:913 -#: src/emc/usr_intf/pncconf/pncconf.glade:6648 -#, fuzzy -msgid "Touchy" -msgstr "Regular Offset" +#: src/emc/usr_intf/pncconf/pncconf.glade:6040 +#: src/emc/usr_intf/pncconf/pncconf.glade:6052 +#: src/emc/usr_intf/pncconf/pncconf.glade:6064 +msgid "Deg / min" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:930 -msgid "GUI frontend list" +#: src/emc/usr_intf/pncconf/pncconf.glade:6113 +#: src/emc/usr_intf/pncconf/pncconf.glade:6484 +#: src/emc/usr_intf/pncconf/pncconf.glade:6839 +#: src/emc/usr_intf/pncconf/pncconf.glade:7262 +msgid "size" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:965 +#: src/emc/usr_intf/pncconf/pncconf.glade:6122 +#: src/emc/usr_intf/pncconf/pncconf.glade:6471 +#: src/emc/usr_intf/pncconf/pncconf.glade:6848 +#: src/emc/usr_intf/pncconf/pncconf.glade:7248 #, fuzzy -msgid "External Controls" -msgstr "Control manual" +msgid "Position" +msgstr "Posicion:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1006 -msgid "Add device rule" +#: src/emc/usr_intf/pncconf/pncconf.glade:6159 +#: src/emc/usr_intf/pncconf/pncconf.glade:6433 +#: src/emc/usr_intf/pncconf/pncconf.glade:6885 +#: src/emc/usr_intf/pncconf/pncconf.glade:7210 +#: src/emc/usr_intf/gscreen/gscreen.glade:116 +msgid "X" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1019 -msgid "Test device" +#: src/emc/usr_intf/pncconf/pncconf.glade:6171 +#: src/emc/usr_intf/pncconf/pncconf.glade:6423 +#: src/emc/usr_intf/pncconf/pncconf.glade:6897 +#: src/emc/usr_intf/pncconf/pncconf.glade:7200 +#: src/emc/usr_intf/gscreen/gscreen.glade:1142 +msgid "W" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1033 -msgid "Search for device rules" +#: src/emc/usr_intf/pncconf/pncconf.glade:6205 +#: src/emc/usr_intf/pncconf/pncconf.glade:6389 +#: src/emc/usr_intf/pncconf/pncconf.glade:6931 +#: src/emc/usr_intf/pncconf/pncconf.glade:7166 +msgid "H" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1054 -#, fuzzy -msgid "Device Name:" -msgstr "Coordenada absoluta" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1117 -#: src/emc/usr_intf/pncconf/pncconf.glade:1255 -#, fuzzy -msgid "Jog Speed select A" -msgstr "Velocidad:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1195 -msgid "Z -" +#: src/emc/usr_intf/pncconf/pncconf.glade:6227 +msgid "Force Axis to Maximize" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1207 -msgid "Y -" +#: src/emc/usr_intf/pncconf/pncconf.glade:6249 +msgid "AXIS defaults" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1219 -msgid "X -" +#: src/emc/usr_intf/pncconf/pncconf.glade:6365 +msgid "Force Touchy to Maximize after positioning" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1229 -msgid "Z +" +#: src/emc/usr_intf/pncconf/pncconf.glade:6501 +#: src/emc/usr_intf/pncconf/pncconf.glade:7333 +msgid "Follow System Theme\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1239 -msgid "Y +" +#: src/emc/usr_intf/pncconf/pncconf.glade:6514 +#: src/emc/usr_intf/pncconf/pncconf.glade:7347 +msgid "GTK Theme" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1249 -msgid "X +" +#: src/emc/usr_intf/pncconf/pncconf.glade:6540 +#: src/emc/usr_intf/gscreen/gscreen.glade:1857 +msgid "Absolute Text Color" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1289 -#: src/emc/usr_intf/pncconf/pncconf.glade:2208 -#: src/emc/usr_intf/pncconf/pncconf.glade:3496 -#: src/emc/usr_intf/pncconf/pncconf.glade:4377 -#: src/emc/usr_intf/pncconf/pncconf.glade:5258 -msgid "default" +#: src/emc/usr_intf/pncconf/pncconf.glade:6603 +msgid "Absolute Textcolor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1299 -#: src/emc/usr_intf/pncconf/pncconf.glade:2107 -#: src/emc/usr_intf/pncconf/pncconf.glade:3443 -#: src/emc/usr_intf/pncconf/pncconf.glade:4324 -#: src/emc/usr_intf/pncconf/pncconf.glade:5205 -#, fuzzy -msgid " a)" -msgstr "Restaurar" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1311 -#: src/emc/usr_intf/pncconf/pncconf.glade:2096 -#: src/emc/usr_intf/pncconf/pncconf.glade:3432 -#: src/emc/usr_intf/pncconf/pncconf.glade:4313 -#: src/emc/usr_intf/pncconf/pncconf.glade:5194 +#: src/emc/usr_intf/pncconf/pncconf.glade:6616 #, fuzzy -msgid " b)" -msgstr "Restaurar" +msgid "Relative Textcolor" +msgstr "Mostrar posicion relativa" -#: src/emc/usr_intf/pncconf/pncconf.glade:1322 -msgid " ab)" +#: src/emc/usr_intf/pncconf/pncconf.glade:6629 +msgid "DTG Textcolor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1348 -#: src/emc/usr_intf/pncconf/pncconf.glade:1401 -#: src/emc/usr_intf/pncconf/pncconf.glade:1413 -#: src/emc/usr_intf/pncconf/pncconf.glade:1423 -#: src/emc/usr_intf/pncconf/pncconf.glade:1751 -msgid "mm/min " +#: src/emc/usr_intf/pncconf/pncconf.glade:6642 +msgid "Error Textcolor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1456 -msgid "A -" +#: src/emc/usr_intf/pncconf/pncconf.glade:6677 +msgid "GUI Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1468 -msgid "A +" +#: src/emc/usr_intf/pncconf/pncconf.glade:6708 +msgid "Virtual Control Panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1492 -#, fuzzy -msgid "Digital Control" -msgstr "Control manual" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1539 -msgid "X " +#: src/emc/usr_intf/pncconf/pncconf.glade:6783 +msgid "XYZ buttons (uses Halui)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1545 -#: src/emc/usr_intf/pncconf/pncconf.glade:5901 -#: src/emc/usr_intf/pncconf/pncconf.glade:6531 -#: src/emc/usr_intf/pncconf/pncconf.glade:6910 -#: src/emc/usr_intf/pncconf/pncconf.glade:7257 -msgid "Y" +#: src/emc/usr_intf/pncconf/pncconf.glade:6954 +msgid "Geometry Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1555 -msgid "Z" +#: src/emc/usr_intf/pncconf/pncconf.glade:7033 +msgid "Pyvcp Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1565 -msgid "A" +#: src/emc/usr_intf/pncconf/pncconf.glade:7105 +msgid "Sample display " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1623 -#, fuzzy -msgid "Analog Control" -msgstr "Control manual" +#: src/emc/usr_intf/pncconf/pncconf.glade:7272 +msgid "Standalone Panel" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1649 -#: src/emc/usr_intf/pncconf/pncconf.glade:1780 -#: src/emc/usr_intf/pncconf/pncconf.glade:2690 -#: src/emc/usr_intf/pncconf/pncconf.glade:3571 -#: src/emc/usr_intf/pncconf/pncconf.glade:4452 -#: src/emc/usr_intf/pncconf/pncconf.glade:5333 -#: src/emc/usr_intf/pncconf/pncconf.glade:57371 -msgid "Details" +#: src/emc/usr_intf/pncconf/pncconf.glade:7289 +msgid "Rightside Embeded" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1667 -msgid "USB Joystick Jogging " +#: src/emc/usr_intf/pncconf/pncconf.glade:7305 +msgid "Center Tab Embeded" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1711 -msgid "shared buttons for all axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:7320 +msgid "Force Maximize" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1724 +#: src/emc/usr_intf/pncconf/pncconf.glade:7359 #, fuzzy -msgid "buttons for each axis" -msgstr "Correr cuarto eje" +msgid "Display Options" +msgstr "_Pulgadas" -#: src/emc/usr_intf/pncconf/pncconf.glade:1798 -msgid "External Button Jogging" +#: src/emc/usr_intf/pncconf/pncconf.glade:7409 +msgid "Max RPM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1839 -msgid "Shared MPG / selectable axis" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:7422 +#, fuzzy +msgid "Spindle Speed Indicator" +msgstr "Controlar portabrocas:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1852 +#: src/emc/usr_intf/pncconf/pncconf.glade:7434 #, fuzzy -msgid "Mpg per axis" -msgstr "Correr primer eje" +msgid "Spindle At Speed LED" +msgstr "Controlar portabrocas:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1867 +#: src/emc/usr_intf/pncconf/pncconf.glade:7446 #, fuzzy -msgid "selectable MPG increments" -msgstr "Elegir incremento del avance" +msgid "Zero X Button" +msgstr "Boton izquierdo del raton" -#: src/emc/usr_intf/pncconf/pncconf.glade:1932 -#: src/emc/usr_intf/pncconf/pncconf.glade:2907 -#: src/emc/usr_intf/pncconf/pncconf.glade:3788 -#: src/emc/usr_intf/pncconf/pncconf.glade:4669 +#: src/emc/usr_intf/pncconf/pncconf.glade:7458 #, fuzzy -msgid "Mux options" -msgstr "Tiempo de movimiento" +msgid "Zero Y Button" +msgstr "Boton izquierdo del raton" -#: src/emc/usr_intf/pncconf/pncconf.glade:1980 -#: src/emc/usr_intf/pncconf/pncconf.glade:2868 -#: src/emc/usr_intf/pncconf/pncconf.glade:3763 -#: src/emc/usr_intf/pncconf/pncconf.glade:4644 -msgid "use debounce" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:7470 +#, fuzzy +msgid "Zero Z Button" +msgstr "Boton izquierdo del raton" -#: src/emc/usr_intf/pncconf/pncconf.glade:1995 -msgid "use gray code" +#: src/emc/usr_intf/pncconf/pncconf.glade:7482 +#, fuzzy +msgid "Zero A Button" +msgstr "Boton izquierdo del raton" + +#: src/emc/usr_intf/pncconf/pncconf.glade:7494 +msgid "Requires Classicladder touch-off program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2010 -msgid "ignore all inputs false" +#: src/emc/usr_intf/pncconf/pncconf.glade:7495 +msgid "Auto Z Touch Off Button" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2035 -#: src/emc/usr_intf/pncconf/pncconf.glade:2048 -#: src/emc/usr_intf/pncconf/pncconf.glade:2061 -#: src/emc/usr_intf/pncconf/pncconf.glade:2407 -#: src/emc/usr_intf/pncconf/pncconf.glade:2420 -#: src/emc/usr_intf/pncconf/pncconf.glade:2433 -#: src/emc/usr_intf/pncconf/pncconf.glade:2446 -#: src/emc/usr_intf/pncconf/pncconf.glade:2457 -#: src/emc/usr_intf/pncconf/pncconf.glade:2470 -#: src/emc/usr_intf/pncconf/pncconf.glade:2483 -#: src/emc/usr_intf/pncconf/pncconf.glade:2496 -#: src/emc/usr_intf/pncconf/pncconf.glade:2509 -#: src/emc/usr_intf/pncconf/pncconf.glade:2522 -#: src/emc/usr_intf/pncconf/pncconf.glade:2535 -#: src/emc/usr_intf/pncconf/pncconf.glade:8343 -#: src/emc/usr_intf/pncconf/pncconf.glade:8379 -#: src/emc/usr_intf/pncconf/pncconf.glade:56542 -#: src/emc/usr_intf/pncconf/pncconf.glade:61266 -#: src/emc/usr_intf/pncconf/pncconf.glade:61278 -#: src/emc/usr_intf/pncconf/pncconf.glade:61290 -#: src/emc/usr_intf/pncconf/pncconf.glade:61302 -#: src/emc/usr_intf/pncconf/pncconf.glade:62475 -#: src/emc/usr_intf/pncconf/pncconf.glade:62487 -#: src/emc/usr_intf/pncconf/pncconf.glade:62499 -#: src/emc/usr_intf/pncconf/pncconf.glade:62511 -#: src/emc/usr_intf/pncconf/pncconf.glade:63452 -#: src/emc/usr_intf/pncconf/pncconf.glade:63464 -#: src/emc/usr_intf/pncconf/pncconf.glade:63476 -#: src/emc/usr_intf/pncconf/pncconf.glade:63488 -#: src/emc/usr_intf/pncconf/pncconf.glade:64661 -#: src/emc/usr_intf/pncconf/pncconf.glade:64673 -#: src/emc/usr_intf/pncconf/pncconf.glade:64685 -#: src/emc/usr_intf/pncconf/pncconf.glade:64697 -#: src/emc/usr_intf/pncconf/pncconf.glade:65608 -#: src/emc/usr_intf/pncconf/pncconf.glade:65620 -#: src/emc/usr_intf/pncconf/pncconf.glade:65632 -#: src/emc/usr_intf/pncconf/pncconf.glade:65644 -msgid "label" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:7508 +#, fuzzy +msgid "Sample Options" +msgstr "Mostrar configuracion _HAl" -#: src/emc/usr_intf/pncconf/pncconf.glade:2073 -#: src/emc/usr_intf/pncconf/pncconf.glade:2559 -#: src/emc/usr_intf/pncconf/pncconf.glade:3300 -#: src/emc/usr_intf/pncconf/pncconf.glade:4181 -#: src/emc/usr_intf/pncconf/pncconf.glade:5062 -msgid " abc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7582 +msgid "Gladevcp Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2086 -#: src/emc/usr_intf/pncconf/pncconf.glade:3422 -#: src/emc/usr_intf/pncconf/pncconf.glade:4303 -#: src/emc/usr_intf/pncconf/pncconf.glade:5184 -msgid " ab)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7605 +msgid "Include custom GladeVCP GUI panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2372 -#: src/emc/usr_intf/pncconf/pncconf.glade:3321 -#: src/emc/usr_intf/pncconf/pncconf.glade:4202 -#: src/emc/usr_intf/pncconf/pncconf.glade:5083 -msgid " ac)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7676 +msgid "Force individual manual homing" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2383 -#: src/emc/usr_intf/pncconf/pncconf.glade:3311 -#: src/emc/usr_intf/pncconf/pncconf.glade:4192 -#: src/emc/usr_intf/pncconf/pncconf.glade:5073 -msgid " bc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7689 +msgid "Random position toolchanger " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2547 -#: src/emc/usr_intf/pncconf/pncconf.glade:3332 -#: src/emc/usr_intf/pncconf/pncconf.glade:4213 -#: src/emc/usr_intf/pncconf/pncconf.glade:5094 -#, fuzzy -msgid " c)" -msgstr "Restaurar" - -#: src/emc/usr_intf/pncconf/pncconf.glade:2570 -#: src/emc/usr_intf/pncconf/pncconf.glade:2966 -#: src/emc/usr_intf/pncconf/pncconf.glade:3847 -#: src/emc/usr_intf/pncconf/pncconf.glade:4728 -msgid " ad)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7704 +msgid "Require homing before MDI / Running" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2583 -#: src/emc/usr_intf/pncconf/pncconf.glade:2953 -#: src/emc/usr_intf/pncconf/pncconf.glade:3834 -#: src/emc/usr_intf/pncconf/pncconf.glade:4715 -msgid " bd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7713 +msgid "Popup Toolchange Prompt" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2596 -#: src/emc/usr_intf/pncconf/pncconf.glade:2927 -#: src/emc/usr_intf/pncconf/pncconf.glade:3808 -#: src/emc/usr_intf/pncconf/pncconf.glade:4689 -msgid " cd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7727 +msgid "Leave spindle on during tool change" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2609 -#: src/emc/usr_intf/pncconf/pncconf.glade:2991 -#: src/emc/usr_intf/pncconf/pncconf.glade:3872 -#: src/emc/usr_intf/pncconf/pncconf.glade:4753 -msgid " acd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7740 +msgid "Move spindle up before tool change" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2622 -#: src/emc/usr_intf/pncconf/pncconf.glade:3004 -#: src/emc/usr_intf/pncconf/pncconf.glade:3885 -#: src/emc/usr_intf/pncconf/pncconf.glade:4766 -msgid " bcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7753 +msgid "Restore joint position after shutdown" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2635 -#: src/emc/usr_intf/pncconf/pncconf.glade:3017 -#: src/emc/usr_intf/pncconf/pncconf.glade:3898 -#: src/emc/usr_intf/pncconf/pncconf.glade:4779 -msgid " abcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7769 +msgid "Defaults and Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2648 -#: src/emc/usr_intf/pncconf/pncconf.glade:2979 -#: src/emc/usr_intf/pncconf/pncconf.glade:3860 -#: src/emc/usr_intf/pncconf/pncconf.glade:4741 -#, fuzzy -msgid " d)" -msgstr "Restaurar" - -#: src/emc/usr_intf/pncconf/pncconf.glade:2664 -#, fuzzy -msgid "increments" -msgstr "Elegir incremento del avance" - -#: src/emc/usr_intf/pncconf/pncconf.glade:2708 -msgid "External MPG Jogging" +#: src/emc/usr_intf/pncconf/pncconf.glade:7797 +msgid "Mesa0 I/O setup\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2739 -#: src/emc/usr_intf/pncconf/pncconf.glade:3620 -#: src/emc/usr_intf/pncconf/pncconf.glade:4501 -msgid "Use MPG " +#: src/emc/usr_intf/pncconf/pncconf.glade:7817 +msgid "" +"Click on each page tab to configure signal names for each connector port.\n" +"\n" +"Press the button to make the tabbed pages\n" +"accept the changes.\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2752 -#: src/emc/usr_intf/pncconf/pncconf.glade:3633 -#: src/emc/usr_intf/pncconf/pncconf.glade:4514 -msgid "use switches" +#: src/emc/usr_intf/pncconf/pncconf.glade:8001 +msgid "3PWM base frequency:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2838 -#: src/emc/usr_intf/pncconf/pncconf.glade:3733 -#: src/emc/usr_intf/pncconf/pncconf.glade:4614 -msgid "ignore all-inputs false" +#: src/emc/usr_intf/pncconf/pncconf.glade:8036 +msgid "Mesa parport address:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2853 -#: src/emc/usr_intf/pncconf/pncconf.glade:3748 -#: src/emc/usr_intf/pncconf/pncconf.glade:4629 -msgid "use graycode" +#: src/emc/usr_intf/pncconf/pncconf.glade:8047 +msgid "Firmware:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2940 -#: src/emc/usr_intf/pncconf/pncconf.glade:3821 -#: src/emc/usr_intf/pncconf/pncconf.glade:4702 -msgid " abd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8069 +msgid "SVST8_4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:3555 -#: src/emc/usr_intf/pncconf/pncconf.glade:4436 -#: src/emc/usr_intf/pncconf/pncconf.glade:5317 -#, fuzzy -msgid "Increments" -msgstr "Elegir incremento del avance" - -#: src/emc/usr_intf/pncconf/pncconf.glade:3589 -#, fuzzy -msgid "External Feed Override" -msgstr "Control de avanze" - -#: src/emc/usr_intf/pncconf/pncconf.glade:4470 -msgid "Max Velocity Override" +#: src/emc/usr_intf/pncconf/pncconf.glade:8094 +msgid "Num of 3 pwm generators: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5351 -#, fuzzy -msgid "External Spindle Override" -msgstr "Controlar portabrocas:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5379 -#, fuzzy -msgid "GUI configuration" -msgstr "Mostrar configuracion _HAl" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5398 -msgid "Frontend" +#: src/emc/usr_intf/pncconf/pncconf.glade:8128 +msgid "Total number of pins:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5557 -#, fuzzy -msgid "" -"Commanded\n" -"Actual" -msgstr "dirigido" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5570 -#, fuzzy +#: src/emc/usr_intf/pncconf/pncconf.glade:8153 msgid "" -"Machine\n" -"Relative\n" -msgstr "relativo" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5608 -#, fuzzy -msgid "Max Feed Override" -msgstr "Control de avanze" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5667 -#, fuzzy -msgid "Min Spindle Override" -msgstr "Controlar portabrocas:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5691 -#, fuzzy -msgid "Max Spindle Override " -msgstr "Controlar portabrocas:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5702 -#, fuzzy -msgid "Position_feedback" -msgstr "Posicion:" +"Accept components\n" +" Changes" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5713 -#, fuzzy -msgid "Position_offset" -msgstr "Posicion:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8168 +msgid "PWM base frequency:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5721 -msgid "General GUI Defaults" +#: src/emc/usr_intf/pncconf/pncconf.glade:8179 +msgid "PDM base frequency:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5808 -msgid "Force Axis to Maximize" +#: src/emc/usr_intf/pncconf/pncconf.glade:8190 +msgid "Watchdog timeout:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5832 -#: src/emc/usr_intf/pncconf/pncconf.glade:6602 -#: src/emc/usr_intf/pncconf/pncconf.glade:6841 -#: src/emc/usr_intf/pncconf/pncconf.glade:7328 -msgid "H" +#: src/emc/usr_intf/pncconf/pncconf.glade:8307 +msgid "Num of encoders:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5866 -#: src/emc/usr_intf/pncconf/pncconf.glade:6568 -#: src/emc/usr_intf/pncconf/pncconf.glade:6875 -#: src/emc/usr_intf/pncconf/pncconf.glade:7294 -msgid "W" +#: src/emc/usr_intf/pncconf/pncconf.glade:8318 +msgid "Num of pwm generators:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5876 -#: src/emc/usr_intf/pncconf/pncconf.glade:6556 -#: src/emc/usr_intf/pncconf/pncconf.glade:6885 -#: src/emc/usr_intf/pncconf/pncconf.glade:7282 -msgid "X" +#: src/emc/usr_intf/pncconf/pncconf.glade:8329 +msgid "Num of step generators: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5914 -#: src/emc/usr_intf/pncconf/pncconf.glade:6519 -#: src/emc/usr_intf/pncconf/pncconf.glade:6923 -#: src/emc/usr_intf/pncconf/pncconf.glade:7244 +#: src/emc/usr_intf/pncconf/pncconf.glade:8340 #, fuzzy -msgid "Position" -msgstr "Posicion:" +msgid "Board name" +msgstr "Modalidad-World " -#: src/emc/usr_intf/pncconf/pncconf.glade:5927 -#: src/emc/usr_intf/pncconf/pncconf.glade:6510 -#: src/emc/usr_intf/pncconf/pncconf.glade:6936 -#: src/emc/usr_intf/pncconf/pncconf.glade:7234 -msgid "size" +#: src/emc/usr_intf/pncconf/pncconf.glade:8346 +msgid "Num of Smart Serial Ports:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5942 -#: src/emc/usr_intf/pncconf/pncconf.glade:5952 -#: src/emc/usr_intf/pncconf/pncconf.glade:6158 -msgid "mm / min" +#: src/emc/usr_intf/pncconf/pncconf.glade:8393 +msgid "7i29 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5975 -#: src/emc/usr_intf/pncconf/pncconf.glade:5985 -#: src/emc/usr_intf/pncconf/pncconf.glade:5997 -msgid "Deg / min" +#: src/emc/usr_intf/pncconf/pncconf.glade:8402 +msgid "7i30 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6010 -msgid "xyzabc" +#: src/emc/usr_intf/pncconf/pncconf.glade:8414 +msgid "7i33 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6023 -msgid "Axis Geometry" +#: src/emc/usr_intf/pncconf/pncconf.glade:8426 +msgid "7i40 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6048 -msgid "Max Angular velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:8438 +msgid "7i48 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6061 -msgid "5mm 1mm .5mm .1mm .05mm .01mm .005mm" +#: src/emc/usr_intf/pncconf/pncconf.glade:8453 +msgid "Sanity Checks" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6074 -#, fuzzy -msgid "Increments " -msgstr "Elegir incremento del avance" - -#: src/emc/usr_intf/pncconf/pncconf.glade:6099 -msgid "Min Angular velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:8482 +msgid "Num of channels: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6112 -msgid "gedit" +#: src/emc/usr_intf/pncconf/pncconf.glade:8494 +msgid "Num of resolvers:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6148 -msgid "Default Angular velocity " -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:8528 +#, fuzzy +msgid "" +"Configuration\n" +" Page" +msgstr "Mostrar configuracion _HAl" -#: src/emc/usr_intf/pncconf/pncconf.glade:6211 -msgid "Max linear velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:8721 +#: src/emc/usr_intf/pncconf/pncconf.glade:8773 +#: src/emc/usr_intf/pncconf/pncconf.glade:9093 +#: src/emc/usr_intf/pncconf/pncconf.glade:9145 +#: src/emc/usr_intf/pncconf/pncconf.glade:9197 +#: src/emc/usr_intf/pncconf/pncconf.glade:9249 +#: src/emc/usr_intf/pncconf/pncconf.glade:9301 +#: src/emc/usr_intf/pncconf/pncconf.glade:9353 +#: src/emc/usr_intf/pncconf/pncconf.glade:9405 +#: src/emc/usr_intf/pncconf/pncconf.glade:9457 +#: src/emc/usr_intf/pncconf/pncconf.glade:9509 +#: src/emc/usr_intf/pncconf/pncconf.glade:9561 +#: src/emc/usr_intf/pncconf/pncconf.glade:10400 +#: src/emc/usr_intf/pncconf/pncconf.glade:10453 +#: src/emc/usr_intf/pncconf/pncconf.glade:10505 +#: src/emc/usr_intf/pncconf/pncconf.glade:10557 +#: src/emc/usr_intf/pncconf/pncconf.glade:11335 +#: src/emc/usr_intf/pncconf/pncconf.glade:11387 +#: src/emc/usr_intf/pncconf/pncconf.glade:12047 +#: src/emc/usr_intf/pncconf/pncconf.glade:12099 +#: src/emc/usr_intf/pncconf/pncconf.glade:12151 +#: src/emc/usr_intf/pncconf/pncconf.glade:12203 +#: src/emc/usr_intf/pncconf/pncconf.glade:13042 +#: src/emc/usr_intf/pncconf/pncconf.glade:13094 +#: src/emc/usr_intf/pncconf/pncconf.glade:13146 +#: src/emc/usr_intf/pncconf/pncconf.glade:13198 +#: src/emc/usr_intf/pncconf/pncconf.glade:13250 +#: src/emc/usr_intf/pncconf/pncconf.glade:13302 +#: src/emc/usr_intf/pncconf/pncconf.glade:13354 +#: src/emc/usr_intf/pncconf/pncconf.glade:13406 +#: src/emc/usr_intf/pncconf/pncconf.glade:13458 +#: src/emc/usr_intf/pncconf/pncconf.glade:13510 +#: src/emc/usr_intf/pncconf/pncconf.glade:14556 +#: src/emc/usr_intf/pncconf/pncconf.glade:14608 +#: src/emc/usr_intf/pncconf/pncconf.glade:14660 +#: src/emc/usr_intf/pncconf/pncconf.glade:14712 +#: src/emc/usr_intf/pncconf/pncconf.glade:15539 +#: src/emc/usr_intf/pncconf/pncconf.glade:15591 +#: src/emc/usr_intf/pncconf/pncconf.glade:15643 +#: src/emc/usr_intf/pncconf/pncconf.glade:15695 +#: src/emc/usr_intf/pncconf/pncconf.glade:15747 +#: src/emc/usr_intf/pncconf/pncconf.glade:15799 +#: src/emc/usr_intf/pncconf/pncconf.glade:15851 +#: src/emc/usr_intf/pncconf/pncconf.glade:15903 +#: src/emc/usr_intf/pncconf/pncconf.glade:15955 +#: src/emc/usr_intf/pncconf/pncconf.glade:16007 +#: src/emc/usr_intf/pncconf/pncconf.glade:16059 +#: src/emc/usr_intf/pncconf/pncconf.glade:16111 +#: src/emc/usr_intf/pncconf/pncconf.glade:16540 +#: src/emc/usr_intf/pncconf/pncconf.glade:16592 +#: src/emc/usr_intf/pncconf/pncconf.glade:17253 +#: src/emc/usr_intf/pncconf/pncconf.glade:17305 +#: src/emc/usr_intf/pncconf/pncconf.glade:17357 +#: src/emc/usr_intf/pncconf/pncconf.glade:18196 +#: src/emc/usr_intf/pncconf/pncconf.glade:18248 +#: src/emc/usr_intf/pncconf/pncconf.glade:18300 +#: src/emc/usr_intf/pncconf/pncconf.glade:18352 +#: src/emc/usr_intf/pncconf/pncconf.glade:18404 +#: src/emc/usr_intf/pncconf/pncconf.glade:18456 +#: src/emc/usr_intf/pncconf/pncconf.glade:18508 +#: src/emc/usr_intf/pncconf/pncconf.glade:18560 +#: src/emc/usr_intf/pncconf/pncconf.glade:18612 +#: src/emc/usr_intf/pncconf/pncconf.glade:18664 +#: src/emc/usr_intf/pncconf/pncconf.glade:18716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26612 +#: src/emc/usr_intf/pncconf/pncconf.glade:26664 +#: src/emc/usr_intf/pncconf/pncconf.glade:26716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26768 +#: src/emc/usr_intf/pncconf/pncconf.glade:26820 +#: src/emc/usr_intf/pncconf/pncconf.glade:26872 +#: src/emc/usr_intf/pncconf/pncconf.glade:26924 +#: src/emc/usr_intf/pncconf/pncconf.glade:26976 +#: src/emc/usr_intf/pncconf/pncconf.glade:27028 +#: src/emc/usr_intf/pncconf/pncconf.glade:27080 +#: src/emc/usr_intf/pncconf/pncconf.glade:27132 +#: src/emc/usr_intf/pncconf/pncconf.glade:27184 +#: src/emc/usr_intf/pncconf/pncconf.glade:28011 +#: src/emc/usr_intf/pncconf/pncconf.glade:28063 +#: src/emc/usr_intf/pncconf/pncconf.glade:28115 +#: src/emc/usr_intf/pncconf/pncconf.glade:28167 +#: src/emc/usr_intf/pncconf/pncconf.glade:29507 +#: src/emc/usr_intf/pncconf/pncconf.glade:29559 +#: src/emc/usr_intf/pncconf/pncconf.glade:29611 +#: src/emc/usr_intf/pncconf/pncconf.glade:29663 +#: src/emc/usr_intf/pncconf/pncconf.glade:30490 +#: src/emc/usr_intf/pncconf/pncconf.glade:30542 +#: src/emc/usr_intf/pncconf/pncconf.glade:30594 +#: src/emc/usr_intf/pncconf/pncconf.glade:30646 +#: src/emc/usr_intf/pncconf/pncconf.glade:30698 +#: src/emc/usr_intf/pncconf/pncconf.glade:30750 +#: src/emc/usr_intf/pncconf/pncconf.glade:30802 +#: src/emc/usr_intf/pncconf/pncconf.glade:30854 +#: src/emc/usr_intf/pncconf/pncconf.glade:30906 +#: src/emc/usr_intf/pncconf/pncconf.glade:30958 +#: src/emc/usr_intf/pncconf/pncconf.glade:31010 +#: src/emc/usr_intf/pncconf/pncconf.glade:31062 +#: src/emc/usr_intf/pncconf/pncconf.glade:31878 +#: src/emc/usr_intf/pncconf/pncconf.glade:31930 +#: src/emc/usr_intf/pncconf/pncconf.glade:31982 +#: src/emc/usr_intf/pncconf/pncconf.glade:32034 +#: src/emc/usr_intf/pncconf/pncconf.glade:32086 +#: src/emc/usr_intf/pncconf/pncconf.glade:32138 +#: src/emc/usr_intf/pncconf/pncconf.glade:32190 +#: src/emc/usr_intf/pncconf/pncconf.glade:32242 +#: src/emc/usr_intf/pncconf/pncconf.glade:32294 +#: src/emc/usr_intf/pncconf/pncconf.glade:32346 +#: src/emc/usr_intf/pncconf/pncconf.glade:32398 +#: src/emc/usr_intf/pncconf/pncconf.glade:32450 +#: src/emc/usr_intf/pncconf/pncconf.glade:33852 +#: src/emc/usr_intf/pncconf/pncconf.glade:33904 +#: src/emc/usr_intf/pncconf/pncconf.glade:33956 +#: src/emc/usr_intf/pncconf/pncconf.glade:34008 +#: src/emc/usr_intf/pncconf/pncconf.glade:34835 +#: src/emc/usr_intf/pncconf/pncconf.glade:34887 +#: src/emc/usr_intf/pncconf/pncconf.glade:34939 +#: src/emc/usr_intf/pncconf/pncconf.glade:34991 +#: src/emc/usr_intf/pncconf/pncconf.glade:35043 +#: src/emc/usr_intf/pncconf/pncconf.glade:35095 +#: src/emc/usr_intf/pncconf/pncconf.glade:35147 +#: src/emc/usr_intf/pncconf/pncconf.glade:35199 +#: src/emc/usr_intf/pncconf/pncconf.glade:35251 +#: src/emc/usr_intf/pncconf/pncconf.glade:35303 +#: src/emc/usr_intf/pncconf/pncconf.glade:35355 +#: src/emc/usr_intf/pncconf/pncconf.glade:35407 +#: src/emc/usr_intf/pncconf/pncconf.glade:36096 +#: src/emc/usr_intf/pncconf/pncconf.glade:36148 +#: src/emc/usr_intf/pncconf/pncconf.glade:36200 +#: src/emc/usr_intf/pncconf/pncconf.glade:36252 +#: src/emc/usr_intf/pncconf/pncconf.glade:36304 +#: src/emc/usr_intf/pncconf/pncconf.glade:36356 +#: src/emc/usr_intf/pncconf/pncconf.glade:36408 +#: src/emc/usr_intf/pncconf/pncconf.glade:36460 +#: src/emc/usr_intf/pncconf/pncconf.glade:36512 +#: src/emc/usr_intf/pncconf/pncconf.glade:36564 +#: src/emc/usr_intf/pncconf/pncconf.glade:36616 +#: src/emc/usr_intf/pncconf/pncconf.glade:36668 +#: src/emc/usr_intf/pncconf/pncconf.glade:37495 +#: src/emc/usr_intf/pncconf/pncconf.glade:37547 +#: src/emc/usr_intf/pncconf/pncconf.glade:37599 +#: src/emc/usr_intf/pncconf/pncconf.glade:37651 +#: src/emc/usr_intf/pncconf/pncconf.glade:39168 +#: src/emc/usr_intf/pncconf/pncconf.glade:39220 +#: src/emc/usr_intf/pncconf/pncconf.glade:39272 +#: src/emc/usr_intf/pncconf/pncconf.glade:39324 +#: src/emc/usr_intf/pncconf/pncconf.glade:39376 +#: src/emc/usr_intf/pncconf/pncconf.glade:39428 +#: src/emc/usr_intf/pncconf/pncconf.glade:39480 +#: src/emc/usr_intf/pncconf/pncconf.glade:39532 +#: src/emc/usr_intf/pncconf/pncconf.glade:39584 +#: src/emc/usr_intf/pncconf/pncconf.glade:39636 +#: src/emc/usr_intf/pncconf/pncconf.glade:39688 +#: src/emc/usr_intf/pncconf/pncconf.glade:39740 +#: src/emc/usr_intf/pncconf/pncconf.glade:40456 +#: src/emc/usr_intf/pncconf/pncconf.glade:40508 +#: src/emc/usr_intf/pncconf/pncconf.glade:40560 +#: src/emc/usr_intf/pncconf/pncconf.glade:40612 +#: src/emc/usr_intf/pncconf/pncconf.glade:40664 +#: src/emc/usr_intf/pncconf/pncconf.glade:40716 +#: src/emc/usr_intf/pncconf/pncconf.glade:40768 +#: src/emc/usr_intf/pncconf/pncconf.glade:40820 +#: src/emc/usr_intf/pncconf/pncconf.glade:40872 +#: src/emc/usr_intf/pncconf/pncconf.glade:40924 +#: src/emc/usr_intf/pncconf/pncconf.glade:40976 +#: src/emc/usr_intf/pncconf/pncconf.glade:41028 +#: src/emc/usr_intf/pncconf/pncconf.glade:41855 +#: src/emc/usr_intf/pncconf/pncconf.glade:41907 +#: src/emc/usr_intf/pncconf/pncconf.glade:41959 +#: src/emc/usr_intf/pncconf/pncconf.glade:42011 +#: src/emc/usr_intf/pncconf/pncconf.glade:43351 +#: src/emc/usr_intf/pncconf/pncconf.glade:43403 +#: src/emc/usr_intf/pncconf/pncconf.glade:43455 +#: src/emc/usr_intf/pncconf/pncconf.glade:43507 +#: src/emc/usr_intf/pncconf/pncconf.glade:44334 +#: src/emc/usr_intf/pncconf/pncconf.glade:44386 +#: src/emc/usr_intf/pncconf/pncconf.glade:44438 +#: src/emc/usr_intf/pncconf/pncconf.glade:44490 +#: src/emc/usr_intf/pncconf/pncconf.glade:44542 +#: src/emc/usr_intf/pncconf/pncconf.glade:44594 +#: src/emc/usr_intf/pncconf/pncconf.glade:44646 +#: src/emc/usr_intf/pncconf/pncconf.glade:44698 +#: src/emc/usr_intf/pncconf/pncconf.glade:44750 +#: src/emc/usr_intf/pncconf/pncconf.glade:44802 +#: src/emc/usr_intf/pncconf/pncconf.glade:44854 +#: src/emc/usr_intf/pncconf/pncconf.glade:44906 +#: src/emc/usr_intf/pncconf/pncconf.glade:45711 +#: src/emc/usr_intf/pncconf/pncconf.glade:45763 +#: src/emc/usr_intf/pncconf/pncconf.glade:45815 +#: src/emc/usr_intf/pncconf/pncconf.glade:45867 +#: src/emc/usr_intf/pncconf/pncconf.glade:45919 +#: src/emc/usr_intf/pncconf/pncconf.glade:45971 +#: src/emc/usr_intf/pncconf/pncconf.glade:46023 +#: src/emc/usr_intf/pncconf/pncconf.glade:46075 +#: src/emc/usr_intf/pncconf/pncconf.glade:46127 +#: src/emc/usr_intf/pncconf/pncconf.glade:46179 +#: src/emc/usr_intf/pncconf/pncconf.glade:46231 +#: src/emc/usr_intf/pncconf/pncconf.glade:46283 +#: src/emc/usr_intf/pncconf/pncconf.glade:47379 +#: src/emc/usr_intf/pncconf/pncconf.glade:47431 +#: src/emc/usr_intf/pncconf/pncconf.glade:47483 +#: src/emc/usr_intf/pncconf/pncconf.glade:47535 +#: src/emc/usr_intf/pncconf/pncconf.glade:47587 +#: src/emc/usr_intf/pncconf/pncconf.glade:47639 +#: src/emc/usr_intf/pncconf/pncconf.glade:47691 +#: src/emc/usr_intf/pncconf/pncconf.glade:47743 +#: src/emc/usr_intf/pncconf/pncconf.glade:47795 +#: src/emc/usr_intf/pncconf/pncconf.glade:47847 +#: src/emc/usr_intf/pncconf/pncconf.glade:47899 +#: src/emc/usr_intf/pncconf/pncconf.glade:47951 +#: src/emc/usr_intf/pncconf/pncconf.glade:48778 +#: src/emc/usr_intf/pncconf/pncconf.glade:48830 +#: src/emc/usr_intf/pncconf/pncconf.glade:48882 +#: src/emc/usr_intf/pncconf/pncconf.glade:48934 +#: src/emc/usr_intf/pncconf/pncconf.glade:50274 +#: src/emc/usr_intf/pncconf/pncconf.glade:50326 +#: src/emc/usr_intf/pncconf/pncconf.glade:50378 +#: src/emc/usr_intf/pncconf/pncconf.glade:50430 +#: src/emc/usr_intf/pncconf/pncconf.glade:51257 +#: src/emc/usr_intf/pncconf/pncconf.glade:51309 +#: src/emc/usr_intf/pncconf/pncconf.glade:51361 +#: src/emc/usr_intf/pncconf/pncconf.glade:51413 +#: src/emc/usr_intf/pncconf/pncconf.glade:51465 +#: src/emc/usr_intf/pncconf/pncconf.glade:51517 +#: src/emc/usr_intf/pncconf/pncconf.glade:51569 +#: src/emc/usr_intf/pncconf/pncconf.glade:51621 +#: src/emc/usr_intf/pncconf/pncconf.glade:51673 +#: src/emc/usr_intf/pncconf/pncconf.glade:51725 +#: src/emc/usr_intf/pncconf/pncconf.glade:51777 +#: src/emc/usr_intf/pncconf/pncconf.glade:51829 +#: src/emc/usr_intf/pncconf/pncconf.glade:52634 +#: src/emc/usr_intf/pncconf/pncconf.glade:52686 +#: src/emc/usr_intf/pncconf/pncconf.glade:52738 +#: src/emc/usr_intf/pncconf/pncconf.glade:52790 +#: src/emc/usr_intf/pncconf/pncconf.glade:52842 +#: src/emc/usr_intf/pncconf/pncconf.glade:52894 +#: src/emc/usr_intf/pncconf/pncconf.glade:52946 +#: src/emc/usr_intf/pncconf/pncconf.glade:52998 +#: src/emc/usr_intf/pncconf/pncconf.glade:53050 +#: src/emc/usr_intf/pncconf/pncconf.glade:53102 +#: src/emc/usr_intf/pncconf/pncconf.glade:53154 +#: src/emc/usr_intf/pncconf/pncconf.glade:53206 +#: src/emc/usr_intf/pncconf/pncconf.glade:54302 +#: src/emc/usr_intf/pncconf/pncconf.glade:54354 +#: src/emc/usr_intf/pncconf/pncconf.glade:54406 +#: src/emc/usr_intf/pncconf/pncconf.glade:54458 +#: src/emc/usr_intf/pncconf/pncconf.glade:54510 +#: src/emc/usr_intf/pncconf/pncconf.glade:54562 +#: src/emc/usr_intf/pncconf/pncconf.glade:54614 +#: src/emc/usr_intf/pncconf/pncconf.glade:54666 +#: src/emc/usr_intf/pncconf/pncconf.glade:54718 +#: src/emc/usr_intf/pncconf/pncconf.glade:54770 +#: src/emc/usr_intf/pncconf/pncconf.glade:54822 +#: src/emc/usr_intf/pncconf/pncconf.glade:54874 +#: src/emc/usr_intf/pncconf/pncconf.glade:55701 +#: src/emc/usr_intf/pncconf/pncconf.glade:55753 +#: src/emc/usr_intf/pncconf/pncconf.glade:55805 +#: src/emc/usr_intf/pncconf/pncconf.glade:55857 +#: src/emc/usr_intf/pncconf/pncconf.glade:57197 +#: src/emc/usr_intf/pncconf/pncconf.glade:57249 +#: src/emc/usr_intf/pncconf/pncconf.glade:57301 +#: src/emc/usr_intf/pncconf/pncconf.glade:57353 +#: src/emc/usr_intf/pncconf/pncconf.glade:58180 +#: src/emc/usr_intf/pncconf/pncconf.glade:58232 +#: src/emc/usr_intf/pncconf/pncconf.glade:58284 +#: src/emc/usr_intf/pncconf/pncconf.glade:58336 +#: src/emc/usr_intf/pncconf/pncconf.glade:58388 +#: src/emc/usr_intf/pncconf/pncconf.glade:58440 +#: src/emc/usr_intf/pncconf/pncconf.glade:58492 +#: src/emc/usr_intf/pncconf/pncconf.glade:58544 +#: src/emc/usr_intf/pncconf/pncconf.glade:58596 +#: src/emc/usr_intf/pncconf/pncconf.glade:58648 +#: src/emc/usr_intf/pncconf/pncconf.glade:58700 +#: src/emc/usr_intf/pncconf/pncconf.glade:58752 +#: src/emc/usr_intf/pncconf/pncconf.glade:59557 +#: src/emc/usr_intf/pncconf/pncconf.glade:59609 +#: src/emc/usr_intf/pncconf/pncconf.glade:59661 +#: src/emc/usr_intf/pncconf/pncconf.glade:59713 +#: src/emc/usr_intf/pncconf/pncconf.glade:59765 +#: src/emc/usr_intf/pncconf/pncconf.glade:59817 +#: src/emc/usr_intf/pncconf/pncconf.glade:59869 +#: src/emc/usr_intf/pncconf/pncconf.glade:59921 +#: src/emc/usr_intf/pncconf/pncconf.glade:59973 +#: src/emc/usr_intf/pncconf/pncconf.glade:60025 +#: src/emc/usr_intf/pncconf/pncconf.glade:60077 +#: src/emc/usr_intf/pncconf/pncconf.glade:60129 +msgid "" +"ESTOP IN\n" +"Spindle PPR\n" +"Spindle A \n" +"Spindle B \n" +"Home X \n" +"Home Y \n" +"Home Z\n" +"Home A\n" +"Minimum Limit + Home X \n" +"Minimum Limit + Home Y \n" +"Minimum Limit + Home Z \n" +"Minimum Limit + Home A\n" +"Maximum Limit + Home X \n" +"Maximum Limit + Home Y \n" +"Maximum Limit + Home Z \n" +"Maximum Limit + Home A\n" +"Both Limit + Home X \n" +"Both Limit + Home Y \n" +"Both Limit + Home Z \n" +"Both Limit + Home A\n" +"Minimum Limit X \n" +"Minimum Limit Y \n" +"Minimum Limit Z \n" +"Minimum Limit A\n" +"Maximum Limit X \n" +"Maximum Limit Y \n" +"Maximum Limit Z \n" +"Maximum Limit A\n" +"Both Limit X \n" +"Both Limit Y \n" +"Both Limit Z \n" +"Both Limit A\n" +"All limits\n" +"All home\n" +"Unused" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6222 -msgid "Min linear velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:8825 +#: src/emc/usr_intf/pncconf/pncconf.glade:9081 +#: src/emc/usr_intf/pncconf/pncconf.glade:13563 +#: src/emc/usr_intf/pncconf/pncconf.glade:13818 +#: src/emc/usr_intf/pncconf/pncconf.glade:16164 +#: src/emc/usr_intf/pncconf/pncconf.glade:16410 +#: src/emc/usr_intf/pncconf/pncconf.glade:18769 +#: src/emc/usr_intf/pncconf/pncconf.glade:19024 +#: src/emc/usr_intf/pncconf/pncconf.glade:20571 +#: src/emc/usr_intf/pncconf/pncconf.glade:20820 +#: src/emc/usr_intf/pncconf/pncconf.glade:20949 +#: src/emc/usr_intf/pncconf/pncconf.glade:21199 +#: src/emc/usr_intf/pncconf/pncconf.glade:22745 +#: src/emc/usr_intf/pncconf/pncconf.glade:22995 +#: src/emc/usr_intf/pncconf/pncconf.glade:24541 +#: src/emc/usr_intf/pncconf/pncconf.glade:24791 +#: src/emc/usr_intf/pncconf/pncconf.glade:26353 +#: src/emc/usr_intf/pncconf/pncconf.glade:26600 +#: src/emc/usr_intf/pncconf/pncconf.glade:31115 +#: src/emc/usr_intf/pncconf/pncconf.glade:31361 +#: src/emc/usr_intf/pncconf/pncconf.glade:31621 +#: src/emc/usr_intf/pncconf/pncconf.glade:35460 +#: src/emc/usr_intf/pncconf/pncconf.glade:35706 +#: src/emc/usr_intf/pncconf/pncconf.glade:35837 +#: src/emc/usr_intf/pncconf/pncconf.glade:36084 +#: src/emc/usr_intf/pncconf/pncconf.glade:40037 +#: src/emc/usr_intf/pncconf/pncconf.glade:40197 +#: src/emc/usr_intf/pncconf/pncconf.glade:40444 +#: src/emc/usr_intf/pncconf/pncconf.glade:44959 +#: src/emc/usr_intf/pncconf/pncconf.glade:45205 +#: src/emc/usr_intf/pncconf/pncconf.glade:45454 +#: src/emc/usr_intf/pncconf/pncconf.glade:47120 +#: src/emc/usr_intf/pncconf/pncconf.glade:47367 +#: src/emc/usr_intf/pncconf/pncconf.glade:51882 +#: src/emc/usr_intf/pncconf/pncconf.glade:52128 +#: src/emc/usr_intf/pncconf/pncconf.glade:52377 +#: src/emc/usr_intf/pncconf/pncconf.glade:54043 +#: src/emc/usr_intf/pncconf/pncconf.glade:54290 +#: src/emc/usr_intf/pncconf/pncconf.glade:58805 +#: src/emc/usr_intf/pncconf/pncconf.glade:59051 +#: src/emc/usr_intf/pncconf/pncconf.glade:59300 +msgid "Pin Type" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6233 -msgid "Default linear velocity " +#: src/emc/usr_intf/pncconf/pncconf.glade:8838 +#: src/emc/usr_intf/pncconf/pncconf.glade:8900 +#: src/emc/usr_intf/pncconf/pncconf.glade:13743 +#: src/emc/usr_intf/pncconf/pncconf.glade:13806 +#: src/emc/usr_intf/pncconf/pncconf.glade:16335 +#: src/emc/usr_intf/pncconf/pncconf.glade:16398 +#: src/emc/usr_intf/pncconf/pncconf.glade:18949 +#: src/emc/usr_intf/pncconf/pncconf.glade:19012 +#: src/emc/usr_intf/pncconf/pncconf.glade:20751 +#: src/emc/usr_intf/pncconf/pncconf.glade:20808 +#: src/emc/usr_intf/pncconf/pncconf.glade:20962 +#: src/emc/usr_intf/pncconf/pncconf.glade:21018 +#: src/emc/usr_intf/pncconf/pncconf.glade:22758 +#: src/emc/usr_intf/pncconf/pncconf.glade:22814 +#: src/emc/usr_intf/pncconf/pncconf.glade:24554 +#: src/emc/usr_intf/pncconf/pncconf.glade:24610 +#: src/emc/usr_intf/pncconf/pncconf.glade:26366 +#: src/emc/usr_intf/pncconf/pncconf.glade:26428 +#: src/emc/usr_intf/pncconf/pncconf.glade:31286 +#: src/emc/usr_intf/pncconf/pncconf.glade:31349 +#: src/emc/usr_intf/pncconf/pncconf.glade:31634 +#: src/emc/usr_intf/pncconf/pncconf.glade:35631 +#: src/emc/usr_intf/pncconf/pncconf.glade:35694 +#: src/emc/usr_intf/pncconf/pncconf.glade:35850 +#: src/emc/usr_intf/pncconf/pncconf.glade:35912 +#: src/emc/usr_intf/pncconf/pncconf.glade:40025 +#: src/emc/usr_intf/pncconf/pncconf.glade:40210 +#: src/emc/usr_intf/pncconf/pncconf.glade:40272 +#: src/emc/usr_intf/pncconf/pncconf.glade:45130 +#: src/emc/usr_intf/pncconf/pncconf.glade:45193 +#: src/emc/usr_intf/pncconf/pncconf.glade:45467 +#: src/emc/usr_intf/pncconf/pncconf.glade:47133 +#: src/emc/usr_intf/pncconf/pncconf.glade:47195 +#: src/emc/usr_intf/pncconf/pncconf.glade:52053 +#: src/emc/usr_intf/pncconf/pncconf.glade:52116 +#: src/emc/usr_intf/pncconf/pncconf.glade:52390 +#: src/emc/usr_intf/pncconf/pncconf.glade:54056 +#: src/emc/usr_intf/pncconf/pncconf.glade:54118 +#: src/emc/usr_intf/pncconf/pncconf.glade:58976 +#: src/emc/usr_intf/pncconf/pncconf.glade:59039 +#: src/emc/usr_intf/pncconf/pncconf.glade:59313 +msgid "Inv" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6241 -msgid "AXIS defaults" +#: src/emc/usr_intf/pncconf/pncconf.glade:8867 +#: src/emc/usr_intf/pncconf/pncconf.glade:10731 +#: src/emc/usr_intf/pncconf/pncconf.glade:10751 +#: src/emc/usr_intf/pncconf/pncconf.glade:10771 +#: src/emc/usr_intf/pncconf/pncconf.glade:10791 +#: src/emc/usr_intf/pncconf/pncconf.glade:10811 +#: src/emc/usr_intf/pncconf/pncconf.glade:10831 +#: src/emc/usr_intf/pncconf/pncconf.glade:10851 +#: src/emc/usr_intf/pncconf/pncconf.glade:10871 +#: src/emc/usr_intf/pncconf/pncconf.glade:10891 +#: src/emc/usr_intf/pncconf/pncconf.glade:10911 +#: src/emc/usr_intf/pncconf/pncconf.glade:10931 +#: src/emc/usr_intf/pncconf/pncconf.glade:10951 +#: src/emc/usr_intf/pncconf/pncconf.glade:10971 +#: src/emc/usr_intf/pncconf/pncconf.glade:10991 +#: src/emc/usr_intf/pncconf/pncconf.glade:11011 +#: src/emc/usr_intf/pncconf/pncconf.glade:11031 +#: src/emc/usr_intf/pncconf/pncconf.glade:11051 +#: src/emc/usr_intf/pncconf/pncconf.glade:11071 +#: src/emc/usr_intf/pncconf/pncconf.glade:11091 +#: src/emc/usr_intf/pncconf/pncconf.glade:11111 +#: src/emc/usr_intf/pncconf/pncconf.glade:11131 +#: src/emc/usr_intf/pncconf/pncconf.glade:11151 +#: src/emc/usr_intf/pncconf/pncconf.glade:11171 +#: src/emc/usr_intf/pncconf/pncconf.glade:11465 +#: src/emc/usr_intf/pncconf/pncconf.glade:11485 +#: src/emc/usr_intf/pncconf/pncconf.glade:11505 +#: src/emc/usr_intf/pncconf/pncconf.glade:11525 +#: src/emc/usr_intf/pncconf/pncconf.glade:11545 +#: src/emc/usr_intf/pncconf/pncconf.glade:11565 +#: src/emc/usr_intf/pncconf/pncconf.glade:11585 +#: src/emc/usr_intf/pncconf/pncconf.glade:11605 +#: src/emc/usr_intf/pncconf/pncconf.glade:11625 +#: src/emc/usr_intf/pncconf/pncconf.glade:11645 +#: src/emc/usr_intf/pncconf/pncconf.glade:11665 +#: src/emc/usr_intf/pncconf/pncconf.glade:11685 +#: src/emc/usr_intf/pncconf/pncconf.glade:11705 +#: src/emc/usr_intf/pncconf/pncconf.glade:11725 +#: src/emc/usr_intf/pncconf/pncconf.glade:11745 +#: src/emc/usr_intf/pncconf/pncconf.glade:11765 +#: src/emc/usr_intf/pncconf/pncconf.glade:11785 +#: src/emc/usr_intf/pncconf/pncconf.glade:11805 +#: src/emc/usr_intf/pncconf/pncconf.glade:11825 +#: src/emc/usr_intf/pncconf/pncconf.glade:11845 +#: src/emc/usr_intf/pncconf/pncconf.glade:11865 +#: src/emc/usr_intf/pncconf/pncconf.glade:11885 +#: src/emc/usr_intf/pncconf/pncconf.glade:11905 +#: src/emc/usr_intf/pncconf/pncconf.glade:13768 +#: src/emc/usr_intf/pncconf/pncconf.glade:13974 +#: src/emc/usr_intf/pncconf/pncconf.glade:13994 +#: src/emc/usr_intf/pncconf/pncconf.glade:14014 +#: src/emc/usr_intf/pncconf/pncconf.glade:14034 +#: src/emc/usr_intf/pncconf/pncconf.glade:14054 +#: src/emc/usr_intf/pncconf/pncconf.glade:14074 +#: src/emc/usr_intf/pncconf/pncconf.glade:14094 +#: src/emc/usr_intf/pncconf/pncconf.glade:14114 +#: src/emc/usr_intf/pncconf/pncconf.glade:14134 +#: src/emc/usr_intf/pncconf/pncconf.glade:14154 +#: src/emc/usr_intf/pncconf/pncconf.glade:14174 +#: src/emc/usr_intf/pncconf/pncconf.glade:14194 +#: src/emc/usr_intf/pncconf/pncconf.glade:14214 +#: src/emc/usr_intf/pncconf/pncconf.glade:14234 +#: src/emc/usr_intf/pncconf/pncconf.glade:14254 +#: src/emc/usr_intf/pncconf/pncconf.glade:14274 +#: src/emc/usr_intf/pncconf/pncconf.glade:14294 +#: src/emc/usr_intf/pncconf/pncconf.glade:14314 +#: src/emc/usr_intf/pncconf/pncconf.glade:14334 +#: src/emc/usr_intf/pncconf/pncconf.glade:14354 +#: src/emc/usr_intf/pncconf/pncconf.glade:14374 +#: src/emc/usr_intf/pncconf/pncconf.glade:14394 +#: src/emc/usr_intf/pncconf/pncconf.glade:14414 +#: src/emc/usr_intf/pncconf/pncconf.glade:16360 +#: src/emc/usr_intf/pncconf/pncconf.glade:16670 +#: src/emc/usr_intf/pncconf/pncconf.glade:16690 +#: src/emc/usr_intf/pncconf/pncconf.glade:16710 +#: src/emc/usr_intf/pncconf/pncconf.glade:16730 +#: src/emc/usr_intf/pncconf/pncconf.glade:16750 +#: src/emc/usr_intf/pncconf/pncconf.glade:16770 +#: src/emc/usr_intf/pncconf/pncconf.glade:16790 +#: src/emc/usr_intf/pncconf/pncconf.glade:16810 +#: src/emc/usr_intf/pncconf/pncconf.glade:16830 +#: src/emc/usr_intf/pncconf/pncconf.glade:16850 +#: src/emc/usr_intf/pncconf/pncconf.glade:16870 +#: src/emc/usr_intf/pncconf/pncconf.glade:16890 +#: src/emc/usr_intf/pncconf/pncconf.glade:16910 +#: src/emc/usr_intf/pncconf/pncconf.glade:16930 +#: src/emc/usr_intf/pncconf/pncconf.glade:16950 +#: src/emc/usr_intf/pncconf/pncconf.glade:16970 +#: src/emc/usr_intf/pncconf/pncconf.glade:16990 +#: src/emc/usr_intf/pncconf/pncconf.glade:17010 +#: src/emc/usr_intf/pncconf/pncconf.glade:17030 +#: src/emc/usr_intf/pncconf/pncconf.glade:17050 +#: src/emc/usr_intf/pncconf/pncconf.glade:17070 +#: src/emc/usr_intf/pncconf/pncconf.glade:17090 +#: src/emc/usr_intf/pncconf/pncconf.glade:17110 +#: src/emc/usr_intf/pncconf/pncconf.glade:18974 +#: src/emc/usr_intf/pncconf/pncconf.glade:26395 +#: src/emc/usr_intf/pncconf/pncconf.glade:28311 +#: src/emc/usr_intf/pncconf/pncconf.glade:28331 +#: src/emc/usr_intf/pncconf/pncconf.glade:28351 +#: src/emc/usr_intf/pncconf/pncconf.glade:28371 +#: src/emc/usr_intf/pncconf/pncconf.glade:28391 +#: src/emc/usr_intf/pncconf/pncconf.glade:28411 +#: src/emc/usr_intf/pncconf/pncconf.glade:28431 +#: src/emc/usr_intf/pncconf/pncconf.glade:28451 +#: src/emc/usr_intf/pncconf/pncconf.glade:28471 +#: src/emc/usr_intf/pncconf/pncconf.glade:28491 +#: src/emc/usr_intf/pncconf/pncconf.glade:28511 +#: src/emc/usr_intf/pncconf/pncconf.glade:28531 +#: src/emc/usr_intf/pncconf/pncconf.glade:28551 +#: src/emc/usr_intf/pncconf/pncconf.glade:28571 +#: src/emc/usr_intf/pncconf/pncconf.glade:28591 +#: src/emc/usr_intf/pncconf/pncconf.glade:28611 +#: src/emc/usr_intf/pncconf/pncconf.glade:28631 +#: src/emc/usr_intf/pncconf/pncconf.glade:28651 +#: src/emc/usr_intf/pncconf/pncconf.glade:28671 +#: src/emc/usr_intf/pncconf/pncconf.glade:28691 +#: src/emc/usr_intf/pncconf/pncconf.glade:28711 +#: src/emc/usr_intf/pncconf/pncconf.glade:28731 +#: src/emc/usr_intf/pncconf/pncconf.glade:28751 +#: src/emc/usr_intf/pncconf/pncconf.glade:28942 +#: src/emc/usr_intf/pncconf/pncconf.glade:28962 +#: src/emc/usr_intf/pncconf/pncconf.glade:28982 +#: src/emc/usr_intf/pncconf/pncconf.glade:29002 +#: src/emc/usr_intf/pncconf/pncconf.glade:29022 +#: src/emc/usr_intf/pncconf/pncconf.glade:29042 +#: src/emc/usr_intf/pncconf/pncconf.glade:29062 +#: src/emc/usr_intf/pncconf/pncconf.glade:29082 +#: src/emc/usr_intf/pncconf/pncconf.glade:29102 +#: src/emc/usr_intf/pncconf/pncconf.glade:29122 +#: src/emc/usr_intf/pncconf/pncconf.glade:29142 +#: src/emc/usr_intf/pncconf/pncconf.glade:29162 +#: src/emc/usr_intf/pncconf/pncconf.glade:29182 +#: src/emc/usr_intf/pncconf/pncconf.glade:29202 +#: src/emc/usr_intf/pncconf/pncconf.glade:29222 +#: src/emc/usr_intf/pncconf/pncconf.glade:29242 +#: src/emc/usr_intf/pncconf/pncconf.glade:29262 +#: src/emc/usr_intf/pncconf/pncconf.glade:29282 +#: src/emc/usr_intf/pncconf/pncconf.glade:29302 +#: src/emc/usr_intf/pncconf/pncconf.glade:29322 +#: src/emc/usr_intf/pncconf/pncconf.glade:29342 +#: src/emc/usr_intf/pncconf/pncconf.glade:29362 +#: src/emc/usr_intf/pncconf/pncconf.glade:29382 +#: src/emc/usr_intf/pncconf/pncconf.glade:31311 +#: src/emc/usr_intf/pncconf/pncconf.glade:31663 +#: src/emc/usr_intf/pncconf/pncconf.glade:32881 +#: src/emc/usr_intf/pncconf/pncconf.glade:32901 +#: src/emc/usr_intf/pncconf/pncconf.glade:32921 +#: src/emc/usr_intf/pncconf/pncconf.glade:32941 +#: src/emc/usr_intf/pncconf/pncconf.glade:32961 +#: src/emc/usr_intf/pncconf/pncconf.glade:32981 +#: src/emc/usr_intf/pncconf/pncconf.glade:33001 +#: src/emc/usr_intf/pncconf/pncconf.glade:33021 +#: src/emc/usr_intf/pncconf/pncconf.glade:33041 +#: src/emc/usr_intf/pncconf/pncconf.glade:33061 +#: src/emc/usr_intf/pncconf/pncconf.glade:33081 +#: src/emc/usr_intf/pncconf/pncconf.glade:33300 +#: src/emc/usr_intf/pncconf/pncconf.glade:33320 +#: src/emc/usr_intf/pncconf/pncconf.glade:33340 +#: src/emc/usr_intf/pncconf/pncconf.glade:33360 +#: src/emc/usr_intf/pncconf/pncconf.glade:33380 +#: src/emc/usr_intf/pncconf/pncconf.glade:33400 +#: src/emc/usr_intf/pncconf/pncconf.glade:33420 +#: src/emc/usr_intf/pncconf/pncconf.glade:33440 +#: src/emc/usr_intf/pncconf/pncconf.glade:33460 +#: src/emc/usr_intf/pncconf/pncconf.glade:33480 +#: src/emc/usr_intf/pncconf/pncconf.glade:33500 +#: src/emc/usr_intf/pncconf/pncconf.glade:33520 +#: src/emc/usr_intf/pncconf/pncconf.glade:33540 +#: src/emc/usr_intf/pncconf/pncconf.glade:33560 +#: src/emc/usr_intf/pncconf/pncconf.glade:33580 +#: src/emc/usr_intf/pncconf/pncconf.glade:33600 +#: src/emc/usr_intf/pncconf/pncconf.glade:33620 +#: src/emc/usr_intf/pncconf/pncconf.glade:33640 +#: src/emc/usr_intf/pncconf/pncconf.glade:33660 +#: src/emc/usr_intf/pncconf/pncconf.glade:33680 +#: src/emc/usr_intf/pncconf/pncconf.glade:33700 +#: src/emc/usr_intf/pncconf/pncconf.glade:33720 +#: src/emc/usr_intf/pncconf/pncconf.glade:33740 +#: src/emc/usr_intf/pncconf/pncconf.glade:35656 +#: src/emc/usr_intf/pncconf/pncconf.glade:35879 +#: src/emc/usr_intf/pncconf/pncconf.glade:37808 +#: src/emc/usr_intf/pncconf/pncconf.glade:37828 +#: src/emc/usr_intf/pncconf/pncconf.glade:37848 +#: src/emc/usr_intf/pncconf/pncconf.glade:37868 +#: src/emc/usr_intf/pncconf/pncconf.glade:37888 +#: src/emc/usr_intf/pncconf/pncconf.glade:37908 +#: src/emc/usr_intf/pncconf/pncconf.glade:37928 +#: src/emc/usr_intf/pncconf/pncconf.glade:37948 +#: src/emc/usr_intf/pncconf/pncconf.glade:37968 +#: src/emc/usr_intf/pncconf/pncconf.glade:37988 +#: src/emc/usr_intf/pncconf/pncconf.glade:38008 +#: src/emc/usr_intf/pncconf/pncconf.glade:38028 +#: src/emc/usr_intf/pncconf/pncconf.glade:38048 +#: src/emc/usr_intf/pncconf/pncconf.glade:38068 +#: src/emc/usr_intf/pncconf/pncconf.glade:38088 +#: src/emc/usr_intf/pncconf/pncconf.glade:38108 +#: src/emc/usr_intf/pncconf/pncconf.glade:38128 +#: src/emc/usr_intf/pncconf/pncconf.glade:38148 +#: src/emc/usr_intf/pncconf/pncconf.glade:38168 +#: src/emc/usr_intf/pncconf/pncconf.glade:38188 +#: src/emc/usr_intf/pncconf/pncconf.glade:38208 +#: src/emc/usr_intf/pncconf/pncconf.glade:38228 +#: src/emc/usr_intf/pncconf/pncconf.glade:38248 +#: src/emc/usr_intf/pncconf/pncconf.glade:38557 +#: src/emc/usr_intf/pncconf/pncconf.glade:38577 +#: src/emc/usr_intf/pncconf/pncconf.glade:38597 +#: src/emc/usr_intf/pncconf/pncconf.glade:38617 +#: src/emc/usr_intf/pncconf/pncconf.glade:38637 +#: src/emc/usr_intf/pncconf/pncconf.glade:38657 +#: src/emc/usr_intf/pncconf/pncconf.glade:38677 +#: src/emc/usr_intf/pncconf/pncconf.glade:38697 +#: src/emc/usr_intf/pncconf/pncconf.glade:38717 +#: src/emc/usr_intf/pncconf/pncconf.glade:38737 +#: src/emc/usr_intf/pncconf/pncconf.glade:38757 +#: src/emc/usr_intf/pncconf/pncconf.glade:39987 +#: src/emc/usr_intf/pncconf/pncconf.glade:40239 +#: src/emc/usr_intf/pncconf/pncconf.glade:42155 +#: src/emc/usr_intf/pncconf/pncconf.glade:42175 +#: src/emc/usr_intf/pncconf/pncconf.glade:42195 +#: src/emc/usr_intf/pncconf/pncconf.glade:42215 +#: src/emc/usr_intf/pncconf/pncconf.glade:42235 +#: src/emc/usr_intf/pncconf/pncconf.glade:42255 +#: src/emc/usr_intf/pncconf/pncconf.glade:42275 +#: src/emc/usr_intf/pncconf/pncconf.glade:42295 +#: src/emc/usr_intf/pncconf/pncconf.glade:42315 +#: src/emc/usr_intf/pncconf/pncconf.glade:42335 +#: src/emc/usr_intf/pncconf/pncconf.glade:42355 +#: src/emc/usr_intf/pncconf/pncconf.glade:42375 +#: src/emc/usr_intf/pncconf/pncconf.glade:42395 +#: src/emc/usr_intf/pncconf/pncconf.glade:42415 +#: src/emc/usr_intf/pncconf/pncconf.glade:42435 +#: src/emc/usr_intf/pncconf/pncconf.glade:42455 +#: src/emc/usr_intf/pncconf/pncconf.glade:42475 +#: src/emc/usr_intf/pncconf/pncconf.glade:42495 +#: src/emc/usr_intf/pncconf/pncconf.glade:42515 +#: src/emc/usr_intf/pncconf/pncconf.glade:42535 +#: src/emc/usr_intf/pncconf/pncconf.glade:42555 +#: src/emc/usr_intf/pncconf/pncconf.glade:42575 +#: src/emc/usr_intf/pncconf/pncconf.glade:42595 +#: src/emc/usr_intf/pncconf/pncconf.glade:42786 +#: src/emc/usr_intf/pncconf/pncconf.glade:42806 +#: src/emc/usr_intf/pncconf/pncconf.glade:42826 +#: src/emc/usr_intf/pncconf/pncconf.glade:42846 +#: src/emc/usr_intf/pncconf/pncconf.glade:42866 +#: src/emc/usr_intf/pncconf/pncconf.glade:42886 +#: src/emc/usr_intf/pncconf/pncconf.glade:42906 +#: src/emc/usr_intf/pncconf/pncconf.glade:42926 +#: src/emc/usr_intf/pncconf/pncconf.glade:42946 +#: src/emc/usr_intf/pncconf/pncconf.glade:42966 +#: src/emc/usr_intf/pncconf/pncconf.glade:42986 +#: src/emc/usr_intf/pncconf/pncconf.glade:43006 +#: src/emc/usr_intf/pncconf/pncconf.glade:43026 +#: src/emc/usr_intf/pncconf/pncconf.glade:43046 +#: src/emc/usr_intf/pncconf/pncconf.glade:43066 +#: src/emc/usr_intf/pncconf/pncconf.glade:43086 +#: src/emc/usr_intf/pncconf/pncconf.glade:43106 +#: src/emc/usr_intf/pncconf/pncconf.glade:43126 +#: src/emc/usr_intf/pncconf/pncconf.glade:43146 +#: src/emc/usr_intf/pncconf/pncconf.glade:43166 +#: src/emc/usr_intf/pncconf/pncconf.glade:43186 +#: src/emc/usr_intf/pncconf/pncconf.glade:43206 +#: src/emc/usr_intf/pncconf/pncconf.glade:43226 +#: src/emc/usr_intf/pncconf/pncconf.glade:45155 +#: src/emc/usr_intf/pncconf/pncconf.glade:45496 +#: src/emc/usr_intf/pncconf/pncconf.glade:46726 +#: src/emc/usr_intf/pncconf/pncconf.glade:46746 +#: src/emc/usr_intf/pncconf/pncconf.glade:46766 +#: src/emc/usr_intf/pncconf/pncconf.glade:46786 +#: src/emc/usr_intf/pncconf/pncconf.glade:46806 +#: src/emc/usr_intf/pncconf/pncconf.glade:46826 +#: src/emc/usr_intf/pncconf/pncconf.glade:46846 +#: src/emc/usr_intf/pncconf/pncconf.glade:46866 +#: src/emc/usr_intf/pncconf/pncconf.glade:46886 +#: src/emc/usr_intf/pncconf/pncconf.glade:46906 +#: src/emc/usr_intf/pncconf/pncconf.glade:46926 +#: src/emc/usr_intf/pncconf/pncconf.glade:47162 +#: src/emc/usr_intf/pncconf/pncconf.glade:49078 +#: src/emc/usr_intf/pncconf/pncconf.glade:49098 +#: src/emc/usr_intf/pncconf/pncconf.glade:49118 +#: src/emc/usr_intf/pncconf/pncconf.glade:49138 +#: src/emc/usr_intf/pncconf/pncconf.glade:49158 +#: src/emc/usr_intf/pncconf/pncconf.glade:49178 +#: src/emc/usr_intf/pncconf/pncconf.glade:49198 +#: src/emc/usr_intf/pncconf/pncconf.glade:49218 +#: src/emc/usr_intf/pncconf/pncconf.glade:49238 +#: src/emc/usr_intf/pncconf/pncconf.glade:49258 +#: src/emc/usr_intf/pncconf/pncconf.glade:49278 +#: src/emc/usr_intf/pncconf/pncconf.glade:49298 +#: src/emc/usr_intf/pncconf/pncconf.glade:49318 +#: src/emc/usr_intf/pncconf/pncconf.glade:49338 +#: src/emc/usr_intf/pncconf/pncconf.glade:49358 +#: src/emc/usr_intf/pncconf/pncconf.glade:49378 +#: src/emc/usr_intf/pncconf/pncconf.glade:49398 +#: src/emc/usr_intf/pncconf/pncconf.glade:49418 +#: src/emc/usr_intf/pncconf/pncconf.glade:49438 +#: src/emc/usr_intf/pncconf/pncconf.glade:49458 +#: src/emc/usr_intf/pncconf/pncconf.glade:49478 +#: src/emc/usr_intf/pncconf/pncconf.glade:49498 +#: src/emc/usr_intf/pncconf/pncconf.glade:49518 +#: src/emc/usr_intf/pncconf/pncconf.glade:49709 +#: src/emc/usr_intf/pncconf/pncconf.glade:49729 +#: src/emc/usr_intf/pncconf/pncconf.glade:49749 +#: src/emc/usr_intf/pncconf/pncconf.glade:49769 +#: src/emc/usr_intf/pncconf/pncconf.glade:49789 +#: src/emc/usr_intf/pncconf/pncconf.glade:49809 +#: src/emc/usr_intf/pncconf/pncconf.glade:49829 +#: src/emc/usr_intf/pncconf/pncconf.glade:49849 +#: src/emc/usr_intf/pncconf/pncconf.glade:49869 +#: src/emc/usr_intf/pncconf/pncconf.glade:49889 +#: src/emc/usr_intf/pncconf/pncconf.glade:49909 +#: src/emc/usr_intf/pncconf/pncconf.glade:49929 +#: src/emc/usr_intf/pncconf/pncconf.glade:49949 +#: src/emc/usr_intf/pncconf/pncconf.glade:49969 +#: src/emc/usr_intf/pncconf/pncconf.glade:49989 +#: src/emc/usr_intf/pncconf/pncconf.glade:50009 +#: src/emc/usr_intf/pncconf/pncconf.glade:50029 +#: src/emc/usr_intf/pncconf/pncconf.glade:50049 +#: src/emc/usr_intf/pncconf/pncconf.glade:50069 +#: src/emc/usr_intf/pncconf/pncconf.glade:50089 +#: src/emc/usr_intf/pncconf/pncconf.glade:50109 +#: src/emc/usr_intf/pncconf/pncconf.glade:50129 +#: src/emc/usr_intf/pncconf/pncconf.glade:50149 +#: src/emc/usr_intf/pncconf/pncconf.glade:52078 +#: src/emc/usr_intf/pncconf/pncconf.glade:52419 +#: src/emc/usr_intf/pncconf/pncconf.glade:53649 +#: src/emc/usr_intf/pncconf/pncconf.glade:53669 +#: src/emc/usr_intf/pncconf/pncconf.glade:53689 +#: src/emc/usr_intf/pncconf/pncconf.glade:53709 +#: src/emc/usr_intf/pncconf/pncconf.glade:53729 +#: src/emc/usr_intf/pncconf/pncconf.glade:53749 +#: src/emc/usr_intf/pncconf/pncconf.glade:53769 +#: src/emc/usr_intf/pncconf/pncconf.glade:53789 +#: src/emc/usr_intf/pncconf/pncconf.glade:53809 +#: src/emc/usr_intf/pncconf/pncconf.glade:53829 +#: src/emc/usr_intf/pncconf/pncconf.glade:53849 +#: src/emc/usr_intf/pncconf/pncconf.glade:54085 +#: src/emc/usr_intf/pncconf/pncconf.glade:56001 +#: src/emc/usr_intf/pncconf/pncconf.glade:56021 +#: src/emc/usr_intf/pncconf/pncconf.glade:56041 +#: src/emc/usr_intf/pncconf/pncconf.glade:56061 +#: src/emc/usr_intf/pncconf/pncconf.glade:56081 +#: src/emc/usr_intf/pncconf/pncconf.glade:56101 +#: src/emc/usr_intf/pncconf/pncconf.glade:56121 +#: src/emc/usr_intf/pncconf/pncconf.glade:56141 +#: src/emc/usr_intf/pncconf/pncconf.glade:56161 +#: src/emc/usr_intf/pncconf/pncconf.glade:56181 +#: src/emc/usr_intf/pncconf/pncconf.glade:56201 +#: src/emc/usr_intf/pncconf/pncconf.glade:56221 +#: src/emc/usr_intf/pncconf/pncconf.glade:56241 +#: src/emc/usr_intf/pncconf/pncconf.glade:56261 +#: src/emc/usr_intf/pncconf/pncconf.glade:56281 +#: src/emc/usr_intf/pncconf/pncconf.glade:56301 +#: src/emc/usr_intf/pncconf/pncconf.glade:56321 +#: src/emc/usr_intf/pncconf/pncconf.glade:56341 +#: src/emc/usr_intf/pncconf/pncconf.glade:56361 +#: src/emc/usr_intf/pncconf/pncconf.glade:56381 +#: src/emc/usr_intf/pncconf/pncconf.glade:56401 +#: src/emc/usr_intf/pncconf/pncconf.glade:56421 +#: src/emc/usr_intf/pncconf/pncconf.glade:56441 +#: src/emc/usr_intf/pncconf/pncconf.glade:56632 +#: src/emc/usr_intf/pncconf/pncconf.glade:56652 +#: src/emc/usr_intf/pncconf/pncconf.glade:56672 +#: src/emc/usr_intf/pncconf/pncconf.glade:56692 +#: src/emc/usr_intf/pncconf/pncconf.glade:56712 +#: src/emc/usr_intf/pncconf/pncconf.glade:56732 +#: src/emc/usr_intf/pncconf/pncconf.glade:56752 +#: src/emc/usr_intf/pncconf/pncconf.glade:56772 +#: src/emc/usr_intf/pncconf/pncconf.glade:56792 +#: src/emc/usr_intf/pncconf/pncconf.glade:56812 +#: src/emc/usr_intf/pncconf/pncconf.glade:56832 +#: src/emc/usr_intf/pncconf/pncconf.glade:56852 +#: src/emc/usr_intf/pncconf/pncconf.glade:56872 +#: src/emc/usr_intf/pncconf/pncconf.glade:56892 +#: src/emc/usr_intf/pncconf/pncconf.glade:56912 +#: src/emc/usr_intf/pncconf/pncconf.glade:56932 +#: src/emc/usr_intf/pncconf/pncconf.glade:56952 +#: src/emc/usr_intf/pncconf/pncconf.glade:56972 +#: src/emc/usr_intf/pncconf/pncconf.glade:56992 +#: src/emc/usr_intf/pncconf/pncconf.glade:57012 +#: src/emc/usr_intf/pncconf/pncconf.glade:57032 +#: src/emc/usr_intf/pncconf/pncconf.glade:57052 +#: src/emc/usr_intf/pncconf/pncconf.glade:57072 +#: src/emc/usr_intf/pncconf/pncconf.glade:59001 +#: src/emc/usr_intf/pncconf/pncconf.glade:59342 +#: src/emc/usr_intf/pncconf/pncconf.glade:60572 +#: src/emc/usr_intf/pncconf/pncconf.glade:60592 +#: src/emc/usr_intf/pncconf/pncconf.glade:60612 +#: src/emc/usr_intf/pncconf/pncconf.glade:60632 +#: src/emc/usr_intf/pncconf/pncconf.glade:60652 +#: src/emc/usr_intf/pncconf/pncconf.glade:60672 +#: src/emc/usr_intf/pncconf/pncconf.glade:60692 +#: src/emc/usr_intf/pncconf/pncconf.glade:60712 +#: src/emc/usr_intf/pncconf/pncconf.glade:60732 +#: src/emc/usr_intf/pncconf/pncconf.glade:60752 +#: src/emc/usr_intf/pncconf/pncconf.glade:60772 +msgid "" +"GPIO Input\n" +"GPIO Output\n" +"GPIO O Drain\n" +"Encoder\n" +"PWM\n" +"StepGen\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6352 -msgid "Error Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:8913 +#: src/emc/usr_intf/pncconf/pncconf.glade:13730 +#: src/emc/usr_intf/pncconf/pncconf.glade:18936 +#: src/emc/usr_intf/pncconf/pncconf.glade:20738 +#: src/emc/usr_intf/pncconf/pncconf.glade:21031 +#: src/emc/usr_intf/pncconf/pncconf.glade:22827 +#: src/emc/usr_intf/pncconf/pncconf.glade:24623 +msgid " 1:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6365 -msgid "DTG Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:8927 +#: src/emc/usr_intf/pncconf/pncconf.glade:13716 +#: src/emc/usr_intf/pncconf/pncconf.glade:18922 +#: src/emc/usr_intf/pncconf/pncconf.glade:20724 +#: src/emc/usr_intf/pncconf/pncconf.glade:21045 +#: src/emc/usr_intf/pncconf/pncconf.glade:22841 +#: src/emc/usr_intf/pncconf/pncconf.glade:24637 +msgid " 3:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6378 -#, fuzzy -msgid "Relative Textcolor" -msgstr "Mostrar posicion relativa" - -#: src/emc/usr_intf/pncconf/pncconf.glade:6391 -msgid "Absolute Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:8941 +#: src/emc/usr_intf/pncconf/pncconf.glade:13702 +#: src/emc/usr_intf/pncconf/pncconf.glade:18908 +#: src/emc/usr_intf/pncconf/pncconf.glade:20710 +#: src/emc/usr_intf/pncconf/pncconf.glade:21059 +#: src/emc/usr_intf/pncconf/pncconf.glade:22855 +#: src/emc/usr_intf/pncconf/pncconf.glade:24651 +msgid " 5:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6454 -msgid "Absolute Text Color" +#: src/emc/usr_intf/pncconf/pncconf.glade:8955 +#: src/emc/usr_intf/pncconf/pncconf.glade:13688 +#: src/emc/usr_intf/pncconf/pncconf.glade:18894 +#: src/emc/usr_intf/pncconf/pncconf.glade:20696 +#: src/emc/usr_intf/pncconf/pncconf.glade:21073 +#: src/emc/usr_intf/pncconf/pncconf.glade:22869 +#: src/emc/usr_intf/pncconf/pncconf.glade:24665 +msgid " 7:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6479 -#: src/emc/usr_intf/pncconf/pncconf.glade:7148 -msgid "GTK Theme" +#: src/emc/usr_intf/pncconf/pncconf.glade:8969 +#: src/emc/usr_intf/pncconf/pncconf.glade:13674 +#: src/emc/usr_intf/pncconf/pncconf.glade:18880 +#: src/emc/usr_intf/pncconf/pncconf.glade:20682 +#: src/emc/usr_intf/pncconf/pncconf.glade:21087 +#: src/emc/usr_intf/pncconf/pncconf.glade:22883 +#: src/emc/usr_intf/pncconf/pncconf.glade:24679 +msgid " 9:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6491 -#: src/emc/usr_intf/pncconf/pncconf.glade:7158 -msgid "Follow System Theme\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:8983 +#: src/emc/usr_intf/pncconf/pncconf.glade:13660 +#: src/emc/usr_intf/pncconf/pncconf.glade:18866 +#: src/emc/usr_intf/pncconf/pncconf.glade:20668 +#: src/emc/usr_intf/pncconf/pncconf.glade:21101 +#: src/emc/usr_intf/pncconf/pncconf.glade:22897 +#: src/emc/usr_intf/pncconf/pncconf.glade:24693 +msgid "11:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6624 -msgid "Force Touchy to Maximize after positioning" +#: src/emc/usr_intf/pncconf/pncconf.glade:8997 +#: src/emc/usr_intf/pncconf/pncconf.glade:13646 +#: src/emc/usr_intf/pncconf/pncconf.glade:18852 +#: src/emc/usr_intf/pncconf/pncconf.glade:20654 +#: src/emc/usr_intf/pncconf/pncconf.glade:21115 +#: src/emc/usr_intf/pncconf/pncconf.glade:22911 +#: src/emc/usr_intf/pncconf/pncconf.glade:24707 +msgid "13:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6669 -msgid "GUI Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:9011 +#: src/emc/usr_intf/pncconf/pncconf.glade:13632 +#: src/emc/usr_intf/pncconf/pncconf.glade:18838 +#: src/emc/usr_intf/pncconf/pncconf.glade:20640 +#: src/emc/usr_intf/pncconf/pncconf.glade:21129 +#: src/emc/usr_intf/pncconf/pncconf.glade:22925 +#: src/emc/usr_intf/pncconf/pncconf.glade:24721 +msgid "15:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6700 -msgid "Virtual Control Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:9025 +#: src/emc/usr_intf/pncconf/pncconf.glade:13618 +#: src/emc/usr_intf/pncconf/pncconf.glade:18824 +#: src/emc/usr_intf/pncconf/pncconf.glade:20626 +#: src/emc/usr_intf/pncconf/pncconf.glade:21143 +#: src/emc/usr_intf/pncconf/pncconf.glade:22939 +#: src/emc/usr_intf/pncconf/pncconf.glade:24735 +msgid "17:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6775 -msgid "XYZ buttons (uses Halui)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9039 +#: src/emc/usr_intf/pncconf/pncconf.glade:13604 +#: src/emc/usr_intf/pncconf/pncconf.glade:18810 +#: src/emc/usr_intf/pncconf/pncconf.glade:20612 +#: src/emc/usr_intf/pncconf/pncconf.glade:21157 +#: src/emc/usr_intf/pncconf/pncconf.glade:22953 +#: src/emc/usr_intf/pncconf/pncconf.glade:24749 +msgid "19:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6946 -msgid "Geometry Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:9053 +#: src/emc/usr_intf/pncconf/pncconf.glade:13590 +#: src/emc/usr_intf/pncconf/pncconf.glade:18796 +#: src/emc/usr_intf/pncconf/pncconf.glade:20598 +#: src/emc/usr_intf/pncconf/pncconf.glade:21171 +#: src/emc/usr_intf/pncconf/pncconf.glade:22967 +#: src/emc/usr_intf/pncconf/pncconf.glade:24763 +msgid "21:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7025 -msgid "Pyvcp Details" +#: src/emc/usr_intf/pncconf/pncconf.glade:9067 +#: src/emc/usr_intf/pncconf/pncconf.glade:13576 +#: src/emc/usr_intf/pncconf/pncconf.glade:18782 +#: src/emc/usr_intf/pncconf/pncconf.glade:20584 +#: src/emc/usr_intf/pncconf/pncconf.glade:21185 +#: src/emc/usr_intf/pncconf/pncconf.glade:22981 +#: src/emc/usr_intf/pncconf/pncconf.glade:24777 +msgid "23:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7097 -msgid "Sample display " +#: src/emc/usr_intf/pncconf/pncconf.glade:9801 +#: src/emc/usr_intf/pncconf/pncconf.glade:12840 +#: src/emc/usr_intf/pncconf/pncconf.glade:17994 +#: src/emc/usr_intf/pncconf/pncconf.glade:20170 +#: src/emc/usr_intf/pncconf/pncconf.glade:21597 +#: src/emc/usr_intf/pncconf/pncconf.glade:23393 +#: src/emc/usr_intf/pncconf/pncconf.glade:25189 +msgid "47:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7172 -msgid "Force Maximize" +#: src/emc/usr_intf/pncconf/pncconf.glade:9868 +#: src/emc/usr_intf/pncconf/pncconf.glade:12773 +#: src/emc/usr_intf/pncconf/pncconf.glade:17927 +#: src/emc/usr_intf/pncconf/pncconf.glade:20119 +#: src/emc/usr_intf/pncconf/pncconf.glade:21648 +#: src/emc/usr_intf/pncconf/pncconf.glade:23444 +#: src/emc/usr_intf/pncconf/pncconf.glade:25240 +msgid "45:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7186 -msgid "Center Tab Embeded" +#: src/emc/usr_intf/pncconf/pncconf.glade:9884 +#: src/emc/usr_intf/pncconf/pncconf.glade:12757 +#: src/emc/usr_intf/pncconf/pncconf.glade:17911 +#: src/emc/usr_intf/pncconf/pncconf.glade:20103 +#: src/emc/usr_intf/pncconf/pncconf.glade:21664 +#: src/emc/usr_intf/pncconf/pncconf.glade:23460 +#: src/emc/usr_intf/pncconf/pncconf.glade:25256 +msgid "43:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7201 -msgid "Rightside Embeded" +#: src/emc/usr_intf/pncconf/pncconf.glade:9900 +#: src/emc/usr_intf/pncconf/pncconf.glade:12741 +#: src/emc/usr_intf/pncconf/pncconf.glade:17895 +#: src/emc/usr_intf/pncconf/pncconf.glade:20087 +#: src/emc/usr_intf/pncconf/pncconf.glade:21680 +#: src/emc/usr_intf/pncconf/pncconf.glade:23476 +#: src/emc/usr_intf/pncconf/pncconf.glade:25272 +msgid "41:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7217 -msgid "Standalone Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:9916 +#: src/emc/usr_intf/pncconf/pncconf.glade:12725 +#: src/emc/usr_intf/pncconf/pncconf.glade:17879 +#: src/emc/usr_intf/pncconf/pncconf.glade:20071 +#: src/emc/usr_intf/pncconf/pncconf.glade:21696 +#: src/emc/usr_intf/pncconf/pncconf.glade:23492 +#: src/emc/usr_intf/pncconf/pncconf.glade:25288 +msgid "39:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7351 -#, fuzzy -msgid "Display Options" -msgstr "_Pulgadas" +#: src/emc/usr_intf/pncconf/pncconf.glade:9932 +#: src/emc/usr_intf/pncconf/pncconf.glade:12709 +#: src/emc/usr_intf/pncconf/pncconf.glade:17863 +#: src/emc/usr_intf/pncconf/pncconf.glade:20055 +#: src/emc/usr_intf/pncconf/pncconf.glade:21712 +#: src/emc/usr_intf/pncconf/pncconf.glade:23508 +#: src/emc/usr_intf/pncconf/pncconf.glade:25304 +msgid "37:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7401 -msgid "Max RPM" +#: src/emc/usr_intf/pncconf/pncconf.glade:9948 +#: src/emc/usr_intf/pncconf/pncconf.glade:12693 +#: src/emc/usr_intf/pncconf/pncconf.glade:17847 +#: src/emc/usr_intf/pncconf/pncconf.glade:20039 +#: src/emc/usr_intf/pncconf/pncconf.glade:21728 +#: src/emc/usr_intf/pncconf/pncconf.glade:23524 +#: src/emc/usr_intf/pncconf/pncconf.glade:25320 +msgid "35:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7414 -#, fuzzy -msgid "Spindle Speed Indicator" -msgstr "Controlar portabrocas:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9964 +#: src/emc/usr_intf/pncconf/pncconf.glade:12677 +#: src/emc/usr_intf/pncconf/pncconf.glade:17831 +#: src/emc/usr_intf/pncconf/pncconf.glade:20023 +#: src/emc/usr_intf/pncconf/pncconf.glade:21744 +#: src/emc/usr_intf/pncconf/pncconf.glade:23540 +#: src/emc/usr_intf/pncconf/pncconf.glade:25336 +msgid "33:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7426 -#, fuzzy -msgid "Spindle At Speed LED" -msgstr "Controlar portabrocas:" +#: src/emc/usr_intf/pncconf/pncconf.glade:10337 +#: src/emc/usr_intf/pncconf/pncconf.glade:12304 +#: src/emc/usr_intf/pncconf/pncconf.glade:17458 +#: src/emc/usr_intf/pncconf/pncconf.glade:19762 +#: src/emc/usr_intf/pncconf/pncconf.glade:22005 +#: src/emc/usr_intf/pncconf/pncconf.glade:23801 +#: src/emc/usr_intf/pncconf/pncconf.glade:25597 +msgid "25:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7438 -#, fuzzy -msgid "Zero X Button" -msgstr "Boton izquierdo del raton" +#: src/emc/usr_intf/pncconf/pncconf.glade:10353 +#: src/emc/usr_intf/pncconf/pncconf.glade:12288 +#: src/emc/usr_intf/pncconf/pncconf.glade:17442 +#: src/emc/usr_intf/pncconf/pncconf.glade:19746 +#: src/emc/usr_intf/pncconf/pncconf.glade:22021 +#: src/emc/usr_intf/pncconf/pncconf.glade:23817 +#: src/emc/usr_intf/pncconf/pncconf.glade:25613 +msgid "27:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7450 -#, fuzzy -msgid "Zero Y Button" -msgstr "Boton izquierdo del raton" +#: src/emc/usr_intf/pncconf/pncconf.glade:10369 +#: src/emc/usr_intf/pncconf/pncconf.glade:12272 +#: src/emc/usr_intf/pncconf/pncconf.glade:17426 +#: src/emc/usr_intf/pncconf/pncconf.glade:19730 +#: src/emc/usr_intf/pncconf/pncconf.glade:22037 +#: src/emc/usr_intf/pncconf/pncconf.glade:23833 +#: src/emc/usr_intf/pncconf/pncconf.glade:25629 +msgid "29:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7462 -#, fuzzy -msgid "Zero Z Button" -msgstr "Boton izquierdo del raton" +#: src/emc/usr_intf/pncconf/pncconf.glade:10385 +#: src/emc/usr_intf/pncconf/pncconf.glade:12256 +#: src/emc/usr_intf/pncconf/pncconf.glade:17410 +#: src/emc/usr_intf/pncconf/pncconf.glade:19714 +#: src/emc/usr_intf/pncconf/pncconf.glade:22053 +#: src/emc/usr_intf/pncconf/pncconf.glade:23849 +#: src/emc/usr_intf/pncconf/pncconf.glade:25645 +msgid "31:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7474 -#, fuzzy -msgid "Zero A Button" -msgstr "Boton izquierdo del raton" +#: src/emc/usr_intf/pncconf/pncconf.glade:10677 +#: src/emc/usr_intf/pncconf/pncconf.glade:10689 +#: src/emc/usr_intf/pncconf/pncconf.glade:11955 +#: src/emc/usr_intf/pncconf/pncconf.glade:11967 +#: src/emc/usr_intf/pncconf/pncconf.glade:14464 +#: src/emc/usr_intf/pncconf/pncconf.glade:14476 +#: src/emc/usr_intf/pncconf/pncconf.glade:17161 +#: src/emc/usr_intf/pncconf/pncconf.glade:17173 +#: src/emc/usr_intf/pncconf/pncconf.glade:19567 +#: src/emc/usr_intf/pncconf/pncconf.glade:19579 +#: src/emc/usr_intf/pncconf/pncconf.glade:22190 +#: src/emc/usr_intf/pncconf/pncconf.glade:22202 +#: src/emc/usr_intf/pncconf/pncconf.glade:23986 +#: src/emc/usr_intf/pncconf/pncconf.glade:23998 +#: src/emc/usr_intf/pncconf/pncconf.glade:25782 +#: src/emc/usr_intf/pncconf/pncconf.glade:25794 +#: src/emc/usr_intf/pncconf/pncconf.glade:28287 +#: src/emc/usr_intf/pncconf/pncconf.glade:28299 +#: src/emc/usr_intf/pncconf/pncconf.glade:29415 +#: src/emc/usr_intf/pncconf/pncconf.glade:29427 +#: src/emc/usr_intf/pncconf/pncconf.glade:32869 +#: src/emc/usr_intf/pncconf/pncconf.glade:33760 +#: src/emc/usr_intf/pncconf/pncconf.glade:33772 +#: src/emc/usr_intf/pncconf/pncconf.glade:37771 +#: src/emc/usr_intf/pncconf/pncconf.glade:37783 +#: src/emc/usr_intf/pncconf/pncconf.glade:38777 +#: src/emc/usr_intf/pncconf/pncconf.glade:38789 +#: src/emc/usr_intf/pncconf/pncconf.glade:42131 +#: src/emc/usr_intf/pncconf/pncconf.glade:42143 +#: src/emc/usr_intf/pncconf/pncconf.glade:43259 +#: src/emc/usr_intf/pncconf/pncconf.glade:43271 +#: src/emc/usr_intf/pncconf/pncconf.glade:46702 +#: src/emc/usr_intf/pncconf/pncconf.glade:46714 +#: src/emc/usr_intf/pncconf/pncconf.glade:49054 +#: src/emc/usr_intf/pncconf/pncconf.glade:49066 +#: src/emc/usr_intf/pncconf/pncconf.glade:50182 +#: src/emc/usr_intf/pncconf/pncconf.glade:50194 +#: src/emc/usr_intf/pncconf/pncconf.glade:53625 +#: src/emc/usr_intf/pncconf/pncconf.glade:53637 +#: src/emc/usr_intf/pncconf/pncconf.glade:55977 +#: src/emc/usr_intf/pncconf/pncconf.glade:55989 +#: src/emc/usr_intf/pncconf/pncconf.glade:57105 +#: src/emc/usr_intf/pncconf/pncconf.glade:57117 +#: src/emc/usr_intf/pncconf/pncconf.glade:60548 +#: src/emc/usr_intf/pncconf/pncconf.glade:60560 +msgid "function" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7486 -msgid "Requires Classicladder touch-off program" +#: src/emc/usr_intf/pncconf/pncconf.glade:10703 +#: src/emc/usr_intf/pncconf/pncconf.glade:11940 +#: src/emc/usr_intf/pncconf/pncconf.glade:14449 +#: src/emc/usr_intf/pncconf/pncconf.glade:17146 +#: src/emc/usr_intf/pncconf/pncconf.glade:19553 +#: src/emc/usr_intf/pncconf/pncconf.glade:22217 +#: src/emc/usr_intf/pncconf/pncconf.glade:24013 +#: src/emc/usr_intf/pncconf/pncconf.glade:25809 +msgid "Launch test panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7487 -msgid "Auto Z Touch Off Button" +#: src/emc/usr_intf/pncconf/pncconf.glade:11192 +#: src/emc/usr_intf/pncconf/pncconf.glade:11204 +#: src/emc/usr_intf/pncconf/pncconf.glade:11440 +#: src/emc/usr_intf/pncconf/pncconf.glade:11454 +#: src/emc/usr_intf/pncconf/pncconf.glade:13949 +#: src/emc/usr_intf/pncconf/pncconf.glade:13963 +#: src/emc/usr_intf/pncconf/pncconf.glade:16645 +#: src/emc/usr_intf/pncconf/pncconf.glade:16659 +#: src/emc/usr_intf/pncconf/pncconf.glade:19190 +#: src/emc/usr_intf/pncconf/pncconf.glade:19204 +#: src/emc/usr_intf/pncconf/pncconf.glade:22567 +#: src/emc/usr_intf/pncconf/pncconf.glade:22579 +#: src/emc/usr_intf/pncconf/pncconf.glade:24363 +#: src/emc/usr_intf/pncconf/pncconf.glade:24375 +#: src/emc/usr_intf/pncconf/pncconf.glade:26159 +#: src/emc/usr_intf/pncconf/pncconf.glade:26171 +#: src/emc/usr_intf/pncconf/pncconf.glade:28772 +#: src/emc/usr_intf/pncconf/pncconf.glade:28784 +#: src/emc/usr_intf/pncconf/pncconf.glade:28917 +#: src/emc/usr_intf/pncconf/pncconf.glade:28931 +#: src/emc/usr_intf/pncconf/pncconf.glade:33102 +#: src/emc/usr_intf/pncconf/pncconf.glade:33275 +#: src/emc/usr_intf/pncconf/pncconf.glade:33289 +#: src/emc/usr_intf/pncconf/pncconf.glade:38269 +#: src/emc/usr_intf/pncconf/pncconf.glade:38281 +#: src/emc/usr_intf/pncconf/pncconf.glade:38532 +#: src/emc/usr_intf/pncconf/pncconf.glade:38546 +#: src/emc/usr_intf/pncconf/pncconf.glade:42616 +#: src/emc/usr_intf/pncconf/pncconf.glade:42628 +#: src/emc/usr_intf/pncconf/pncconf.glade:42761 +#: src/emc/usr_intf/pncconf/pncconf.glade:42775 +#: src/emc/usr_intf/pncconf/pncconf.glade:46947 +#: src/emc/usr_intf/pncconf/pncconf.glade:46959 +#: src/emc/usr_intf/pncconf/pncconf.glade:49539 +#: src/emc/usr_intf/pncconf/pncconf.glade:49551 +#: src/emc/usr_intf/pncconf/pncconf.glade:49684 +#: src/emc/usr_intf/pncconf/pncconf.glade:49698 +#: src/emc/usr_intf/pncconf/pncconf.glade:53870 +#: src/emc/usr_intf/pncconf/pncconf.glade:53882 +#: src/emc/usr_intf/pncconf/pncconf.glade:56462 +#: src/emc/usr_intf/pncconf/pncconf.glade:56474 +#: src/emc/usr_intf/pncconf/pncconf.glade:56607 +#: src/emc/usr_intf/pncconf/pncconf.glade:56621 +#: src/emc/usr_intf/pncconf/pncconf.glade:60793 +#: src/emc/usr_intf/pncconf/pncconf.glade:60805 +msgid "Num" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7500 -#, fuzzy -msgid "Sample Options" -msgstr "Mostrar configuracion _HAl" +#: src/emc/usr_intf/pncconf/pncconf.glade:11222 +msgid "" +" I/O\n" +"Connector 2" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7574 -msgid "Gladevcp Details" +#: src/emc/usr_intf/pncconf/pncconf.glade:13835 +msgid "" +" I/O\n" +" Connector 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7597 -msgid "Include custom GladeVCP GUI panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:16281 +#: src/emc/usr_intf/pncconf/pncconf.glade:16295 +#: src/emc/usr_intf/pncconf/pncconf.glade:16322 +#: src/emc/usr_intf/pncconf/pncconf.glade:26441 +#: src/emc/usr_intf/pncconf/pncconf.glade:26468 +#: src/emc/usr_intf/pncconf/pncconf.glade:26482 +#: src/emc/usr_intf/pncconf/pncconf.glade:31232 +#: src/emc/usr_intf/pncconf/pncconf.glade:31246 +#: src/emc/usr_intf/pncconf/pncconf.glade:31273 +#: src/emc/usr_intf/pncconf/pncconf.glade:31708 +#: src/emc/usr_intf/pncconf/pncconf.glade:31735 +#: src/emc/usr_intf/pncconf/pncconf.glade:31749 +#: src/emc/usr_intf/pncconf/pncconf.glade:35577 +#: src/emc/usr_intf/pncconf/pncconf.glade:35591 +#: src/emc/usr_intf/pncconf/pncconf.glade:35618 +#: src/emc/usr_intf/pncconf/pncconf.glade:35925 +#: src/emc/usr_intf/pncconf/pncconf.glade:35952 +#: src/emc/usr_intf/pncconf/pncconf.glade:35966 +#: src/emc/usr_intf/pncconf/pncconf.glade:39909 +#: src/emc/usr_intf/pncconf/pncconf.glade:39923 +#: src/emc/usr_intf/pncconf/pncconf.glade:39950 +#: src/emc/usr_intf/pncconf/pncconf.glade:40285 +#: src/emc/usr_intf/pncconf/pncconf.glade:40312 +#: src/emc/usr_intf/pncconf/pncconf.glade:40326 +#: src/emc/usr_intf/pncconf/pncconf.glade:45076 +#: src/emc/usr_intf/pncconf/pncconf.glade:45090 +#: src/emc/usr_intf/pncconf/pncconf.glade:45117 +#: src/emc/usr_intf/pncconf/pncconf.glade:45541 +#: src/emc/usr_intf/pncconf/pncconf.glade:45568 +#: src/emc/usr_intf/pncconf/pncconf.glade:45582 +#: src/emc/usr_intf/pncconf/pncconf.glade:47208 +#: src/emc/usr_intf/pncconf/pncconf.glade:47235 +#: src/emc/usr_intf/pncconf/pncconf.glade:47249 +#: src/emc/usr_intf/pncconf/pncconf.glade:51999 +#: src/emc/usr_intf/pncconf/pncconf.glade:52013 +#: src/emc/usr_intf/pncconf/pncconf.glade:52040 +#: src/emc/usr_intf/pncconf/pncconf.glade:52464 +#: src/emc/usr_intf/pncconf/pncconf.glade:52491 +#: src/emc/usr_intf/pncconf/pncconf.glade:52505 +#: src/emc/usr_intf/pncconf/pncconf.glade:54131 +#: src/emc/usr_intf/pncconf/pncconf.glade:54158 +#: src/emc/usr_intf/pncconf/pncconf.glade:54172 +#: src/emc/usr_intf/pncconf/pncconf.glade:58922 +#: src/emc/usr_intf/pncconf/pncconf.glade:58936 +#: src/emc/usr_intf/pncconf/pncconf.glade:58963 +#: src/emc/usr_intf/pncconf/pncconf.glade:59387 +#: src/emc/usr_intf/pncconf/pncconf.glade:59414 +#: src/emc/usr_intf/pncconf/pncconf.glade:59428 +msgid " " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7668 -msgid "Restore joint position after shutdown" +#: src/emc/usr_intf/pncconf/pncconf.glade:16427 +msgid "" +" I/O\n" +" Connector 4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7683 -msgid "Move spindle up before tool change" +#: src/emc/usr_intf/pncconf/pncconf.glade:19041 +msgid "" +" I/O\n" +" Connector 5" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7696 -msgid "Leave spindle on during tool change" +#: src/emc/usr_intf/pncconf/pncconf.glade:20837 +msgid "" +" I/O\n" +"Connector 6" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7709 -msgid "Popup Toolchange Prompt" +#: src/emc/usr_intf/pncconf/pncconf.glade:22633 +msgid "" +" I/O\n" +"Connector 7" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7723 -msgid "Require homing before MDI / Running" +#: src/emc/usr_intf/pncconf/pncconf.glade:24429 +msgid "" +" I/O\n" +"Connector 8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7732 -msgid "Random position toolchanger " +#: src/emc/usr_intf/pncconf/pncconf.glade:26225 +msgid "" +" I/O\n" +" Connector 9" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7747 -msgid "Force individual manual homing" +#: src/emc/usr_intf/pncconf/pncconf.glade:31378 +#: src/emc/usr_intf/pncconf/pncconf.glade:38299 +#: src/emc/usr_intf/pncconf/pncconf.glade:45222 +#: src/emc/usr_intf/pncconf/pncconf.glade:52145 +#: src/emc/usr_intf/pncconf/pncconf.glade:59068 +msgid "page 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7761 -msgid "Defaults and Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:33131 +#: src/emc/usr_intf/pncconf/pncconf.glade:40054 +#: src/emc/usr_intf/pncconf/pncconf.glade:46977 +#: src/emc/usr_intf/pncconf/pncconf.glade:53900 +#: src/emc/usr_intf/pncconf/pncconf.glade:60823 +msgid "page 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7789 -msgid "Mesa0 I/O setup\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:33147 +msgid "Smart Serial 0" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7809 -msgid "" -"Click on each page tab to configure signal names for each connector port.\n" -"\n" -"Press the button to make the tabbed pages\n" -"accept the changes.\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:40070 +msgid "Smart Serial 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7998 -msgid "Num of channels: " +#: src/emc/usr_intf/pncconf/pncconf.glade:46993 +msgid "Smart Serial 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8036 -msgid "7i29 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:53916 +msgid "Smart Serial 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8045 -msgid "7i30 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:60839 +msgid "Smart Serial 4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8057 -msgid "7i33 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:60861 +msgid "First Parallel Port Setup" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8069 -msgid "7i40 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:60946 +msgid "Launch Test Panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8081 -msgid "7i48 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:62374 +msgid "Inputs (Machine to PC):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8096 -msgid "Sanity Checks" +#: src/emc/usr_intf/pncconf/pncconf.glade:62929 +msgid "Outputs (PC to Machine):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8137 -msgid "Num of Smart Serial Ports:" +#: src/emc/usr_intf/pncconf/pncconf.glade:62950 +msgid "X Axis Motor/Encoder Configuration" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8148 +#: src/emc/usr_intf/pncconf/pncconf.glade:63005 #, fuzzy -msgid "Board name" -msgstr "Modalidad-World " +msgid "Max Output" +msgstr "Portabrocas:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8155 -msgid "Num of step generators: " -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63070 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "FF2" +msgstr "APAGAR" -#: src/emc/usr_intf/pncconf/pncconf.glade:8166 -msgid "Num of pwm generators:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63083 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "FF1" +msgstr "APAGAR" -#: src/emc/usr_intf/pncconf/pncconf.glade:8177 -msgid "Num of encoders:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63096 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "FF0" +msgstr "APAGAR" -#: src/emc/usr_intf/pncconf/pncconf.glade:8294 -msgid "Watchdog timeout:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63143 +msgid "Deadband" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8305 -msgid "PDM base frequency:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63156 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Bias" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8316 -msgid "PWM base frequency:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63169 +msgid "P" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8328 -msgid "" -"Accept components\n" -" Changes" +#: src/emc/usr_intf/pncconf/pncconf.glade:63180 +msgid "I" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8356 -msgid "Total number of pins:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63193 +msgid "D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8389 -msgid "Num of 3 pwm generators: " +#: src/emc/usr_intf/pncconf/pncconf.glade:63258 +msgid "Servo Info" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8412 -msgid "SVST8_4" +#: src/emc/usr_intf/pncconf/pncconf.glade:63337 +msgid "3pwm Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8437 -msgid "Firmware:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63348 +msgid "3pwm Deadtime:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8447 -msgid "Mesa parport address:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63361 +msgid "Quad Pulses / Rev:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8482 -msgid "3PWM base frequency:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63438 +msgid "" +"Open Loop\n" +" Test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8504 +#: src/emc/usr_intf/pncconf/pncconf.glade:63462 #, fuzzy -msgid "" -"Configuration\n" -" Page" -msgstr "Mostrar configuracion _HAl" +msgid "Analog Min Limit:" +msgstr "Portabrocas:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8698 -#: src/emc/usr_intf/pncconf/pncconf.glade:8712 -#: src/emc/usr_intf/pncconf/pncconf.glade:13677 -#: src/emc/usr_intf/pncconf/pncconf.glade:13689 -#: src/emc/usr_intf/pncconf/pncconf.glade:16373 -#: src/emc/usr_intf/pncconf/pncconf.glade:16385 -#: src/emc/usr_intf/pncconf/pncconf.glade:18883 -#: src/emc/usr_intf/pncconf/pncconf.glade:18895 -#: src/emc/usr_intf/pncconf/pncconf.glade:20747 -#: src/emc/usr_intf/pncconf/pncconf.glade:20759 -#: src/emc/usr_intf/pncconf/pncconf.glade:20962 -#: src/emc/usr_intf/pncconf/pncconf.glade:20976 -#: src/emc/usr_intf/pncconf/pncconf.glade:22758 -#: src/emc/usr_intf/pncconf/pncconf.glade:22772 -#: src/emc/usr_intf/pncconf/pncconf.glade:24554 -#: src/emc/usr_intf/pncconf/pncconf.glade:24568 -#: src/emc/usr_intf/pncconf/pncconf.glade:26330 -#: src/emc/usr_intf/pncconf/pncconf.glade:26344 -#: src/emc/usr_intf/pncconf/pncconf.glade:31324 -#: src/emc/usr_intf/pncconf/pncconf.glade:31336 -#: src/emc/usr_intf/pncconf/pncconf.glade:31600 -#: src/emc/usr_intf/pncconf/pncconf.glade:35669 -#: src/emc/usr_intf/pncconf/pncconf.glade:35681 -#: src/emc/usr_intf/pncconf/pncconf.glade:35814 -#: src/emc/usr_intf/pncconf/pncconf.glade:35828 -#: src/emc/usr_intf/pncconf/pncconf.glade:40000 -#: src/emc/usr_intf/pncconf/pncconf.glade:40012 -#: src/emc/usr_intf/pncconf/pncconf.glade:40174 -#: src/emc/usr_intf/pncconf/pncconf.glade:40188 -#: src/emc/usr_intf/pncconf/pncconf.glade:45168 -#: src/emc/usr_intf/pncconf/pncconf.glade:45180 -#: src/emc/usr_intf/pncconf/pncconf.glade:45431 -#: src/emc/usr_intf/pncconf/pncconf.glade:45445 -#: src/emc/usr_intf/pncconf/pncconf.glade:47097 -#: src/emc/usr_intf/pncconf/pncconf.glade:47111 -#: src/emc/usr_intf/pncconf/pncconf.glade:52091 -#: src/emc/usr_intf/pncconf/pncconf.glade:52103 -#: src/emc/usr_intf/pncconf/pncconf.glade:52354 -#: src/emc/usr_intf/pncconf/pncconf.glade:52368 -msgid "Num" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63476 +#, fuzzy +msgid "Analog Max limit:" +msgstr "Aumentar revoluciones del Portabrocas [F12]" -#: src/emc/usr_intf/pncconf/pncconf.glade:8723 -#: src/emc/usr_intf/pncconf/pncconf.glade:8743 -#: src/emc/usr_intf/pncconf/pncconf.glade:8763 -#: src/emc/usr_intf/pncconf/pncconf.glade:8783 -#: src/emc/usr_intf/pncconf/pncconf.glade:8803 -#: src/emc/usr_intf/pncconf/pncconf.glade:8823 -#: src/emc/usr_intf/pncconf/pncconf.glade:8843 -#: src/emc/usr_intf/pncconf/pncconf.glade:8863 -#: src/emc/usr_intf/pncconf/pncconf.glade:8883 -#: src/emc/usr_intf/pncconf/pncconf.glade:8903 -#: src/emc/usr_intf/pncconf/pncconf.glade:8923 -#: src/emc/usr_intf/pncconf/pncconf.glade:8943 -#: src/emc/usr_intf/pncconf/pncconf.glade:8963 -#: src/emc/usr_intf/pncconf/pncconf.glade:8983 -#: src/emc/usr_intf/pncconf/pncconf.glade:9003 -#: src/emc/usr_intf/pncconf/pncconf.glade:9023 -#: src/emc/usr_intf/pncconf/pncconf.glade:9043 -#: src/emc/usr_intf/pncconf/pncconf.glade:9063 -#: src/emc/usr_intf/pncconf/pncconf.glade:9083 -#: src/emc/usr_intf/pncconf/pncconf.glade:9103 -#: src/emc/usr_intf/pncconf/pncconf.glade:9123 -#: src/emc/usr_intf/pncconf/pncconf.glade:9143 -#: src/emc/usr_intf/pncconf/pncconf.glade:9163 -#: src/emc/usr_intf/pncconf/pncconf.glade:11027 -#: src/emc/usr_intf/pncconf/pncconf.glade:11353 -#: src/emc/usr_intf/pncconf/pncconf.glade:13216 -#: src/emc/usr_intf/pncconf/pncconf.glade:13236 -#: src/emc/usr_intf/pncconf/pncconf.glade:13256 -#: src/emc/usr_intf/pncconf/pncconf.glade:13276 -#: src/emc/usr_intf/pncconf/pncconf.glade:13296 -#: src/emc/usr_intf/pncconf/pncconf.glade:13316 -#: src/emc/usr_intf/pncconf/pncconf.glade:13336 -#: src/emc/usr_intf/pncconf/pncconf.glade:13356 -#: src/emc/usr_intf/pncconf/pncconf.glade:13376 -#: src/emc/usr_intf/pncconf/pncconf.glade:13396 -#: src/emc/usr_intf/pncconf/pncconf.glade:13416 -#: src/emc/usr_intf/pncconf/pncconf.glade:13436 -#: src/emc/usr_intf/pncconf/pncconf.glade:13456 -#: src/emc/usr_intf/pncconf/pncconf.glade:13476 -#: src/emc/usr_intf/pncconf/pncconf.glade:13496 -#: src/emc/usr_intf/pncconf/pncconf.glade:13516 -#: src/emc/usr_intf/pncconf/pncconf.glade:13536 -#: src/emc/usr_intf/pncconf/pncconf.glade:13556 -#: src/emc/usr_intf/pncconf/pncconf.glade:13576 -#: src/emc/usr_intf/pncconf/pncconf.glade:13596 -#: src/emc/usr_intf/pncconf/pncconf.glade:13616 -#: src/emc/usr_intf/pncconf/pncconf.glade:13636 -#: src/emc/usr_intf/pncconf/pncconf.glade:13656 -#: src/emc/usr_intf/pncconf/pncconf.glade:13966 -#: src/emc/usr_intf/pncconf/pncconf.glade:15912 -#: src/emc/usr_intf/pncconf/pncconf.glade:15932 -#: src/emc/usr_intf/pncconf/pncconf.glade:15952 -#: src/emc/usr_intf/pncconf/pncconf.glade:15972 -#: src/emc/usr_intf/pncconf/pncconf.glade:15992 -#: src/emc/usr_intf/pncconf/pncconf.glade:16012 -#: src/emc/usr_intf/pncconf/pncconf.glade:16032 -#: src/emc/usr_intf/pncconf/pncconf.glade:16052 -#: src/emc/usr_intf/pncconf/pncconf.glade:16072 -#: src/emc/usr_intf/pncconf/pncconf.glade:16092 -#: src/emc/usr_intf/pncconf/pncconf.glade:16112 -#: src/emc/usr_intf/pncconf/pncconf.glade:16132 -#: src/emc/usr_intf/pncconf/pncconf.glade:16152 -#: src/emc/usr_intf/pncconf/pncconf.glade:16172 -#: src/emc/usr_intf/pncconf/pncconf.glade:16192 -#: src/emc/usr_intf/pncconf/pncconf.glade:16212 -#: src/emc/usr_intf/pncconf/pncconf.glade:16232 -#: src/emc/usr_intf/pncconf/pncconf.glade:16252 -#: src/emc/usr_intf/pncconf/pncconf.glade:16272 -#: src/emc/usr_intf/pncconf/pncconf.glade:16292 -#: src/emc/usr_intf/pncconf/pncconf.glade:16312 -#: src/emc/usr_intf/pncconf/pncconf.glade:16332 -#: src/emc/usr_intf/pncconf/pncconf.glade:16352 -#: src/emc/usr_intf/pncconf/pncconf.glade:16558 -#: src/emc/usr_intf/pncconf/pncconf.glade:18422 -#: src/emc/usr_intf/pncconf/pncconf.glade:18442 -#: src/emc/usr_intf/pncconf/pncconf.glade:18462 -#: src/emc/usr_intf/pncconf/pncconf.glade:18482 -#: src/emc/usr_intf/pncconf/pncconf.glade:18502 -#: src/emc/usr_intf/pncconf/pncconf.glade:18522 -#: src/emc/usr_intf/pncconf/pncconf.glade:18542 -#: src/emc/usr_intf/pncconf/pncconf.glade:18562 -#: src/emc/usr_intf/pncconf/pncconf.glade:18582 -#: src/emc/usr_intf/pncconf/pncconf.glade:18602 -#: src/emc/usr_intf/pncconf/pncconf.glade:18622 -#: src/emc/usr_intf/pncconf/pncconf.glade:18642 -#: src/emc/usr_intf/pncconf/pncconf.glade:18662 -#: src/emc/usr_intf/pncconf/pncconf.glade:18682 -#: src/emc/usr_intf/pncconf/pncconf.glade:18702 -#: src/emc/usr_intf/pncconf/pncconf.glade:18722 -#: src/emc/usr_intf/pncconf/pncconf.glade:18742 -#: src/emc/usr_intf/pncconf/pncconf.glade:18762 -#: src/emc/usr_intf/pncconf/pncconf.glade:18782 -#: src/emc/usr_intf/pncconf/pncconf.glade:18802 -#: src/emc/usr_intf/pncconf/pncconf.glade:18822 -#: src/emc/usr_intf/pncconf/pncconf.glade:18842 -#: src/emc/usr_intf/pncconf/pncconf.glade:18862 -#: src/emc/usr_intf/pncconf/pncconf.glade:26355 -#: src/emc/usr_intf/pncconf/pncconf.glade:26375 -#: src/emc/usr_intf/pncconf/pncconf.glade:26395 -#: src/emc/usr_intf/pncconf/pncconf.glade:26415 -#: src/emc/usr_intf/pncconf/pncconf.glade:26435 -#: src/emc/usr_intf/pncconf/pncconf.glade:26455 -#: src/emc/usr_intf/pncconf/pncconf.glade:26475 -#: src/emc/usr_intf/pncconf/pncconf.glade:26495 -#: src/emc/usr_intf/pncconf/pncconf.glade:26515 -#: src/emc/usr_intf/pncconf/pncconf.glade:26535 -#: src/emc/usr_intf/pncconf/pncconf.glade:26555 -#: src/emc/usr_intf/pncconf/pncconf.glade:26575 -#: src/emc/usr_intf/pncconf/pncconf.glade:26595 -#: src/emc/usr_intf/pncconf/pncconf.glade:26615 -#: src/emc/usr_intf/pncconf/pncconf.glade:26635 -#: src/emc/usr_intf/pncconf/pncconf.glade:26655 -#: src/emc/usr_intf/pncconf/pncconf.glade:26675 -#: src/emc/usr_intf/pncconf/pncconf.glade:26695 -#: src/emc/usr_intf/pncconf/pncconf.glade:26715 -#: src/emc/usr_intf/pncconf/pncconf.glade:26735 -#: src/emc/usr_intf/pncconf/pncconf.glade:26755 -#: src/emc/usr_intf/pncconf/pncconf.glade:26775 -#: src/emc/usr_intf/pncconf/pncconf.glade:26795 -#: src/emc/usr_intf/pncconf/pncconf.glade:28711 -#: src/emc/usr_intf/pncconf/pncconf.glade:28934 -#: src/emc/usr_intf/pncconf/pncconf.glade:30863 -#: src/emc/usr_intf/pncconf/pncconf.glade:30883 -#: src/emc/usr_intf/pncconf/pncconf.glade:30903 -#: src/emc/usr_intf/pncconf/pncconf.glade:30923 -#: src/emc/usr_intf/pncconf/pncconf.glade:30943 -#: src/emc/usr_intf/pncconf/pncconf.glade:30963 -#: src/emc/usr_intf/pncconf/pncconf.glade:30983 -#: src/emc/usr_intf/pncconf/pncconf.glade:31003 -#: src/emc/usr_intf/pncconf/pncconf.glade:31023 -#: src/emc/usr_intf/pncconf/pncconf.glade:31043 -#: src/emc/usr_intf/pncconf/pncconf.glade:31063 -#: src/emc/usr_intf/pncconf/pncconf.glade:31083 -#: src/emc/usr_intf/pncconf/pncconf.glade:31103 -#: src/emc/usr_intf/pncconf/pncconf.glade:31123 -#: src/emc/usr_intf/pncconf/pncconf.glade:31143 -#: src/emc/usr_intf/pncconf/pncconf.glade:31163 -#: src/emc/usr_intf/pncconf/pncconf.glade:31183 -#: src/emc/usr_intf/pncconf/pncconf.glade:31203 -#: src/emc/usr_intf/pncconf/pncconf.glade:31223 -#: src/emc/usr_intf/pncconf/pncconf.glade:31243 -#: src/emc/usr_intf/pncconf/pncconf.glade:31263 -#: src/emc/usr_intf/pncconf/pncconf.glade:31283 -#: src/emc/usr_intf/pncconf/pncconf.glade:31303 -#: src/emc/usr_intf/pncconf/pncconf.glade:31611 -#: src/emc/usr_intf/pncconf/pncconf.glade:31631 -#: src/emc/usr_intf/pncconf/pncconf.glade:31651 -#: src/emc/usr_intf/pncconf/pncconf.glade:31671 -#: src/emc/usr_intf/pncconf/pncconf.glade:31691 -#: src/emc/usr_intf/pncconf/pncconf.glade:31711 -#: src/emc/usr_intf/pncconf/pncconf.glade:31731 -#: src/emc/usr_intf/pncconf/pncconf.glade:31751 -#: src/emc/usr_intf/pncconf/pncconf.glade:31771 -#: src/emc/usr_intf/pncconf/pncconf.glade:31791 -#: src/emc/usr_intf/pncconf/pncconf.glade:31811 -#: src/emc/usr_intf/pncconf/pncconf.glade:33029 -#: src/emc/usr_intf/pncconf/pncconf.glade:33292 -#: src/emc/usr_intf/pncconf/pncconf.glade:35208 -#: src/emc/usr_intf/pncconf/pncconf.glade:35228 -#: src/emc/usr_intf/pncconf/pncconf.glade:35248 -#: src/emc/usr_intf/pncconf/pncconf.glade:35268 -#: src/emc/usr_intf/pncconf/pncconf.glade:35288 -#: src/emc/usr_intf/pncconf/pncconf.glade:35308 -#: src/emc/usr_intf/pncconf/pncconf.glade:35328 -#: src/emc/usr_intf/pncconf/pncconf.glade:35348 -#: src/emc/usr_intf/pncconf/pncconf.glade:35368 -#: src/emc/usr_intf/pncconf/pncconf.glade:35388 -#: src/emc/usr_intf/pncconf/pncconf.glade:35408 -#: src/emc/usr_intf/pncconf/pncconf.glade:35428 -#: src/emc/usr_intf/pncconf/pncconf.glade:35448 -#: src/emc/usr_intf/pncconf/pncconf.glade:35468 -#: src/emc/usr_intf/pncconf/pncconf.glade:35488 -#: src/emc/usr_intf/pncconf/pncconf.glade:35508 -#: src/emc/usr_intf/pncconf/pncconf.glade:35528 -#: src/emc/usr_intf/pncconf/pncconf.glade:35548 -#: src/emc/usr_intf/pncconf/pncconf.glade:35568 -#: src/emc/usr_intf/pncconf/pncconf.glade:35588 -#: src/emc/usr_intf/pncconf/pncconf.glade:35608 -#: src/emc/usr_intf/pncconf/pncconf.glade:35628 -#: src/emc/usr_intf/pncconf/pncconf.glade:35648 -#: src/emc/usr_intf/pncconf/pncconf.glade:35839 -#: src/emc/usr_intf/pncconf/pncconf.glade:35859 -#: src/emc/usr_intf/pncconf/pncconf.glade:35879 -#: src/emc/usr_intf/pncconf/pncconf.glade:35899 -#: src/emc/usr_intf/pncconf/pncconf.glade:35919 -#: src/emc/usr_intf/pncconf/pncconf.glade:35939 -#: src/emc/usr_intf/pncconf/pncconf.glade:35959 -#: src/emc/usr_intf/pncconf/pncconf.glade:35979 -#: src/emc/usr_intf/pncconf/pncconf.glade:35999 -#: src/emc/usr_intf/pncconf/pncconf.glade:36019 -#: src/emc/usr_intf/pncconf/pncconf.glade:36039 -#: src/emc/usr_intf/pncconf/pncconf.glade:36059 -#: src/emc/usr_intf/pncconf/pncconf.glade:36079 -#: src/emc/usr_intf/pncconf/pncconf.glade:36099 -#: src/emc/usr_intf/pncconf/pncconf.glade:36119 -#: src/emc/usr_intf/pncconf/pncconf.glade:36139 -#: src/emc/usr_intf/pncconf/pncconf.glade:36159 -#: src/emc/usr_intf/pncconf/pncconf.glade:36179 -#: src/emc/usr_intf/pncconf/pncconf.glade:36199 -#: src/emc/usr_intf/pncconf/pncconf.glade:36219 -#: src/emc/usr_intf/pncconf/pncconf.glade:36239 -#: src/emc/usr_intf/pncconf/pncconf.glade:36259 -#: src/emc/usr_intf/pncconf/pncconf.glade:36279 -#: src/emc/usr_intf/pncconf/pncconf.glade:38208 -#: src/emc/usr_intf/pncconf/pncconf.glade:38549 -#: src/emc/usr_intf/pncconf/pncconf.glade:39779 -#: src/emc/usr_intf/pncconf/pncconf.glade:39799 -#: src/emc/usr_intf/pncconf/pncconf.glade:39819 -#: src/emc/usr_intf/pncconf/pncconf.glade:39839 -#: src/emc/usr_intf/pncconf/pncconf.glade:39859 -#: src/emc/usr_intf/pncconf/pncconf.glade:39879 -#: src/emc/usr_intf/pncconf/pncconf.glade:39899 -#: src/emc/usr_intf/pncconf/pncconf.glade:39919 -#: src/emc/usr_intf/pncconf/pncconf.glade:39939 -#: src/emc/usr_intf/pncconf/pncconf.glade:39959 -#: src/emc/usr_intf/pncconf/pncconf.glade:39979 -#: src/emc/usr_intf/pncconf/pncconf.glade:40199 -#: src/emc/usr_intf/pncconf/pncconf.glade:40219 -#: src/emc/usr_intf/pncconf/pncconf.glade:40239 -#: src/emc/usr_intf/pncconf/pncconf.glade:40259 -#: src/emc/usr_intf/pncconf/pncconf.glade:40279 -#: src/emc/usr_intf/pncconf/pncconf.glade:40299 -#: src/emc/usr_intf/pncconf/pncconf.glade:40319 -#: src/emc/usr_intf/pncconf/pncconf.glade:40339 -#: src/emc/usr_intf/pncconf/pncconf.glade:40359 -#: src/emc/usr_intf/pncconf/pncconf.glade:40379 -#: src/emc/usr_intf/pncconf/pncconf.glade:40399 -#: src/emc/usr_intf/pncconf/pncconf.glade:40419 -#: src/emc/usr_intf/pncconf/pncconf.glade:40439 -#: src/emc/usr_intf/pncconf/pncconf.glade:40459 -#: src/emc/usr_intf/pncconf/pncconf.glade:40479 -#: src/emc/usr_intf/pncconf/pncconf.glade:40499 -#: src/emc/usr_intf/pncconf/pncconf.glade:40519 -#: src/emc/usr_intf/pncconf/pncconf.glade:40539 -#: src/emc/usr_intf/pncconf/pncconf.glade:40559 -#: src/emc/usr_intf/pncconf/pncconf.glade:40579 -#: src/emc/usr_intf/pncconf/pncconf.glade:40599 -#: src/emc/usr_intf/pncconf/pncconf.glade:40619 -#: src/emc/usr_intf/pncconf/pncconf.glade:40639 -#: src/emc/usr_intf/pncconf/pncconf.glade:42555 -#: src/emc/usr_intf/pncconf/pncconf.glade:42778 -#: src/emc/usr_intf/pncconf/pncconf.glade:44707 -#: src/emc/usr_intf/pncconf/pncconf.glade:44727 -#: src/emc/usr_intf/pncconf/pncconf.glade:44747 -#: src/emc/usr_intf/pncconf/pncconf.glade:44767 -#: src/emc/usr_intf/pncconf/pncconf.glade:44787 -#: src/emc/usr_intf/pncconf/pncconf.glade:44807 -#: src/emc/usr_intf/pncconf/pncconf.glade:44827 -#: src/emc/usr_intf/pncconf/pncconf.glade:44847 -#: src/emc/usr_intf/pncconf/pncconf.glade:44867 -#: src/emc/usr_intf/pncconf/pncconf.glade:44887 -#: src/emc/usr_intf/pncconf/pncconf.glade:44907 -#: src/emc/usr_intf/pncconf/pncconf.glade:44927 -#: src/emc/usr_intf/pncconf/pncconf.glade:44947 -#: src/emc/usr_intf/pncconf/pncconf.glade:44967 -#: src/emc/usr_intf/pncconf/pncconf.glade:44987 -#: src/emc/usr_intf/pncconf/pncconf.glade:45007 -#: src/emc/usr_intf/pncconf/pncconf.glade:45027 -#: src/emc/usr_intf/pncconf/pncconf.glade:45047 -#: src/emc/usr_intf/pncconf/pncconf.glade:45067 -#: src/emc/usr_intf/pncconf/pncconf.glade:45087 -#: src/emc/usr_intf/pncconf/pncconf.glade:45107 -#: src/emc/usr_intf/pncconf/pncconf.glade:45127 -#: src/emc/usr_intf/pncconf/pncconf.glade:45147 -#: src/emc/usr_intf/pncconf/pncconf.glade:45456 -#: src/emc/usr_intf/pncconf/pncconf.glade:45476 -#: src/emc/usr_intf/pncconf/pncconf.glade:45496 -#: src/emc/usr_intf/pncconf/pncconf.glade:45516 -#: src/emc/usr_intf/pncconf/pncconf.glade:45536 -#: src/emc/usr_intf/pncconf/pncconf.glade:45556 -#: src/emc/usr_intf/pncconf/pncconf.glade:45576 -#: src/emc/usr_intf/pncconf/pncconf.glade:45596 -#: src/emc/usr_intf/pncconf/pncconf.glade:45616 -#: src/emc/usr_intf/pncconf/pncconf.glade:45636 -#: src/emc/usr_intf/pncconf/pncconf.glade:45656 -#: src/emc/usr_intf/pncconf/pncconf.glade:46886 -#: src/emc/usr_intf/pncconf/pncconf.glade:47122 -#: src/emc/usr_intf/pncconf/pncconf.glade:47142 -#: src/emc/usr_intf/pncconf/pncconf.glade:47162 -#: src/emc/usr_intf/pncconf/pncconf.glade:47182 -#: src/emc/usr_intf/pncconf/pncconf.glade:47202 -#: src/emc/usr_intf/pncconf/pncconf.glade:47222 -#: src/emc/usr_intf/pncconf/pncconf.glade:47242 -#: src/emc/usr_intf/pncconf/pncconf.glade:47262 -#: src/emc/usr_intf/pncconf/pncconf.glade:47282 -#: src/emc/usr_intf/pncconf/pncconf.glade:47302 -#: src/emc/usr_intf/pncconf/pncconf.glade:47322 -#: src/emc/usr_intf/pncconf/pncconf.glade:47342 -#: src/emc/usr_intf/pncconf/pncconf.glade:47362 -#: src/emc/usr_intf/pncconf/pncconf.glade:47382 -#: src/emc/usr_intf/pncconf/pncconf.glade:47402 -#: src/emc/usr_intf/pncconf/pncconf.glade:47422 -#: src/emc/usr_intf/pncconf/pncconf.glade:47442 -#: src/emc/usr_intf/pncconf/pncconf.glade:47462 -#: src/emc/usr_intf/pncconf/pncconf.glade:47482 -#: src/emc/usr_intf/pncconf/pncconf.glade:47502 -#: src/emc/usr_intf/pncconf/pncconf.glade:47522 -#: src/emc/usr_intf/pncconf/pncconf.glade:47542 -#: src/emc/usr_intf/pncconf/pncconf.glade:47562 -#: src/emc/usr_intf/pncconf/pncconf.glade:49478 -#: src/emc/usr_intf/pncconf/pncconf.glade:49701 -#: src/emc/usr_intf/pncconf/pncconf.glade:51630 -#: src/emc/usr_intf/pncconf/pncconf.glade:51650 -#: src/emc/usr_intf/pncconf/pncconf.glade:51670 -#: src/emc/usr_intf/pncconf/pncconf.glade:51690 -#: src/emc/usr_intf/pncconf/pncconf.glade:51710 -#: src/emc/usr_intf/pncconf/pncconf.glade:51730 -#: src/emc/usr_intf/pncconf/pncconf.glade:51750 -#: src/emc/usr_intf/pncconf/pncconf.glade:51770 -#: src/emc/usr_intf/pncconf/pncconf.glade:51790 -#: src/emc/usr_intf/pncconf/pncconf.glade:51810 -#: src/emc/usr_intf/pncconf/pncconf.glade:51830 -#: src/emc/usr_intf/pncconf/pncconf.glade:51850 -#: src/emc/usr_intf/pncconf/pncconf.glade:51870 -#: src/emc/usr_intf/pncconf/pncconf.glade:51890 -#: src/emc/usr_intf/pncconf/pncconf.glade:51910 -#: src/emc/usr_intf/pncconf/pncconf.glade:51930 -#: src/emc/usr_intf/pncconf/pncconf.glade:51950 -#: src/emc/usr_intf/pncconf/pncconf.glade:51970 -#: src/emc/usr_intf/pncconf/pncconf.glade:51990 -#: src/emc/usr_intf/pncconf/pncconf.glade:52010 -#: src/emc/usr_intf/pncconf/pncconf.glade:52030 -#: src/emc/usr_intf/pncconf/pncconf.glade:52050 -#: src/emc/usr_intf/pncconf/pncconf.glade:52070 -#: src/emc/usr_intf/pncconf/pncconf.glade:52379 -#: src/emc/usr_intf/pncconf/pncconf.glade:52399 -#: src/emc/usr_intf/pncconf/pncconf.glade:52419 -#: src/emc/usr_intf/pncconf/pncconf.glade:52439 -#: src/emc/usr_intf/pncconf/pncconf.glade:52459 -#: src/emc/usr_intf/pncconf/pncconf.glade:52479 -#: src/emc/usr_intf/pncconf/pncconf.glade:52499 -#: src/emc/usr_intf/pncconf/pncconf.glade:52519 -#: src/emc/usr_intf/pncconf/pncconf.glade:52539 -#: src/emc/usr_intf/pncconf/pncconf.glade:52559 -#: src/emc/usr_intf/pncconf/pncconf.glade:52579 -#: src/emc/usr_intf/pncconf/pncconf.glade:53809 -msgid "" -"GPIO Input\n" -"GPIO Output\n" -"GPIO O Drain\n" -"Encoder\n" -"PWM\n" -"StepGen\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:63490 +msgid "Analog Max Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9198 -#: src/emc/usr_intf/pncconf/pncconf.glade:13188 -#: src/emc/usr_intf/pncconf/pncconf.glade:15884 -#: src/emc/usr_intf/pncconf/pncconf.glade:18394 -#: src/emc/usr_intf/pncconf/pncconf.glade:20397 -#: src/emc/usr_intf/pncconf/pncconf.glade:21325 -#: src/emc/usr_intf/pncconf/pncconf.glade:23121 -#: src/emc/usr_intf/pncconf/pncconf.glade:24917 -msgid "Launch test panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:63554 +msgid "Output Info" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9213 -#: src/emc/usr_intf/pncconf/pncconf.glade:9225 -#: src/emc/usr_intf/pncconf/pncconf.glade:13162 -#: src/emc/usr_intf/pncconf/pncconf.glade:13174 -#: src/emc/usr_intf/pncconf/pncconf.glade:15858 -#: src/emc/usr_intf/pncconf/pncconf.glade:15870 -#: src/emc/usr_intf/pncconf/pncconf.glade:18367 -#: src/emc/usr_intf/pncconf/pncconf.glade:18379 -#: src/emc/usr_intf/pncconf/pncconf.glade:20370 -#: src/emc/usr_intf/pncconf/pncconf.glade:20382 -#: src/emc/usr_intf/pncconf/pncconf.glade:21339 -#: src/emc/usr_intf/pncconf/pncconf.glade:21351 -#: src/emc/usr_intf/pncconf/pncconf.glade:23135 -#: src/emc/usr_intf/pncconf/pncconf.glade:23147 -#: src/emc/usr_intf/pncconf/pncconf.glade:24931 -#: src/emc/usr_intf/pncconf/pncconf.glade:24943 -#: src/emc/usr_intf/pncconf/pncconf.glade:26815 -#: src/emc/usr_intf/pncconf/pncconf.glade:26827 -#: src/emc/usr_intf/pncconf/pncconf.glade:30826 -#: src/emc/usr_intf/pncconf/pncconf.glade:30838 -#: src/emc/usr_intf/pncconf/pncconf.glade:31831 -#: src/emc/usr_intf/pncconf/pncconf.glade:35184 -#: src/emc/usr_intf/pncconf/pncconf.glade:35196 -#: src/emc/usr_intf/pncconf/pncconf.glade:36312 -#: src/emc/usr_intf/pncconf/pncconf.glade:36324 -#: src/emc/usr_intf/pncconf/pncconf.glade:39755 -#: src/emc/usr_intf/pncconf/pncconf.glade:39767 -#: src/emc/usr_intf/pncconf/pncconf.glade:40659 -#: src/emc/usr_intf/pncconf/pncconf.glade:40671 -#: src/emc/usr_intf/pncconf/pncconf.glade:44670 -#: src/emc/usr_intf/pncconf/pncconf.glade:44682 -#: src/emc/usr_intf/pncconf/pncconf.glade:45676 -#: src/emc/usr_intf/pncconf/pncconf.glade:45688 -#: src/emc/usr_intf/pncconf/pncconf.glade:47582 -#: src/emc/usr_intf/pncconf/pncconf.glade:47594 -#: src/emc/usr_intf/pncconf/pncconf.glade:51593 -#: src/emc/usr_intf/pncconf/pncconf.glade:51605 -#: src/emc/usr_intf/pncconf/pncconf.glade:52599 -#: src/emc/usr_intf/pncconf/pncconf.glade:52611 -msgid "function" +#: src/emc/usr_intf/pncconf/pncconf.glade:63603 +msgid "Step On-Time" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9305 -#: src/emc/usr_intf/pncconf/pncconf.glade:9357 -#: src/emc/usr_intf/pncconf/pncconf.glade:9409 -#: src/emc/usr_intf/pncconf/pncconf.glade:9461 -#: src/emc/usr_intf/pncconf/pncconf.glade:10301 -#: src/emc/usr_intf/pncconf/pncconf.glade:10353 -#: src/emc/usr_intf/pncconf/pncconf.glade:10405 -#: src/emc/usr_intf/pncconf/pncconf.glade:10457 -#: src/emc/usr_intf/pncconf/pncconf.glade:10509 -#: src/emc/usr_intf/pncconf/pncconf.glade:10561 -#: src/emc/usr_intf/pncconf/pncconf.glade:10613 -#: src/emc/usr_intf/pncconf/pncconf.glade:10665 -#: src/emc/usr_intf/pncconf/pncconf.glade:10717 -#: src/emc/usr_intf/pncconf/pncconf.glade:10769 -#: src/emc/usr_intf/pncconf/pncconf.glade:11089 -#: src/emc/usr_intf/pncconf/pncconf.glade:11141 -#: src/emc/usr_intf/pncconf/pncconf.glade:11579 -#: src/emc/usr_intf/pncconf/pncconf.glade:11631 -#: src/emc/usr_intf/pncconf/pncconf.glade:11683 -#: src/emc/usr_intf/pncconf/pncconf.glade:11735 -#: src/emc/usr_intf/pncconf/pncconf.glade:11787 -#: src/emc/usr_intf/pncconf/pncconf.glade:11839 -#: src/emc/usr_intf/pncconf/pncconf.glade:11891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11943 -#: src/emc/usr_intf/pncconf/pncconf.glade:11995 -#: src/emc/usr_intf/pncconf/pncconf.glade:12047 -#: src/emc/usr_intf/pncconf/pncconf.glade:12886 -#: src/emc/usr_intf/pncconf/pncconf.glade:12938 -#: src/emc/usr_intf/pncconf/pncconf.glade:12990 -#: src/emc/usr_intf/pncconf/pncconf.glade:13042 -#: src/emc/usr_intf/pncconf/pncconf.glade:13702 -#: src/emc/usr_intf/pncconf/pncconf.glade:13754 -#: src/emc/usr_intf/pncconf/pncconf.glade:14183 -#: src/emc/usr_intf/pncconf/pncconf.glade:14235 -#: src/emc/usr_intf/pncconf/pncconf.glade:14287 -#: src/emc/usr_intf/pncconf/pncconf.glade:14339 -#: src/emc/usr_intf/pncconf/pncconf.glade:14391 -#: src/emc/usr_intf/pncconf/pncconf.glade:14443 -#: src/emc/usr_intf/pncconf/pncconf.glade:14495 -#: src/emc/usr_intf/pncconf/pncconf.glade:14547 -#: src/emc/usr_intf/pncconf/pncconf.glade:14599 -#: src/emc/usr_intf/pncconf/pncconf.glade:14651 -#: src/emc/usr_intf/pncconf/pncconf.glade:14703 -#: src/emc/usr_intf/pncconf/pncconf.glade:14755 -#: src/emc/usr_intf/pncconf/pncconf.glade:15582 -#: src/emc/usr_intf/pncconf/pncconf.glade:15634 -#: src/emc/usr_intf/pncconf/pncconf.glade:15686 -#: src/emc/usr_intf/pncconf/pncconf.glade:15738 -#: src/emc/usr_intf/pncconf/pncconf.glade:16784 -#: src/emc/usr_intf/pncconf/pncconf.glade:16836 -#: src/emc/usr_intf/pncconf/pncconf.glade:16888 -#: src/emc/usr_intf/pncconf/pncconf.glade:16940 -#: src/emc/usr_intf/pncconf/pncconf.glade:16992 -#: src/emc/usr_intf/pncconf/pncconf.glade:17044 -#: src/emc/usr_intf/pncconf/pncconf.glade:17096 -#: src/emc/usr_intf/pncconf/pncconf.glade:17148 -#: src/emc/usr_intf/pncconf/pncconf.glade:17200 -#: src/emc/usr_intf/pncconf/pncconf.glade:17252 -#: src/emc/usr_intf/pncconf/pncconf.glade:17304 -#: src/emc/usr_intf/pncconf/pncconf.glade:18143 -#: src/emc/usr_intf/pncconf/pncconf.glade:18195 -#: src/emc/usr_intf/pncconf/pncconf.glade:18247 -#: src/emc/usr_intf/pncconf/pncconf.glade:18908 -#: src/emc/usr_intf/pncconf/pncconf.glade:18960 -#: src/emc/usr_intf/pncconf/pncconf.glade:26907 -#: src/emc/usr_intf/pncconf/pncconf.glade:26959 -#: src/emc/usr_intf/pncconf/pncconf.glade:27011 -#: src/emc/usr_intf/pncconf/pncconf.glade:27063 -#: src/emc/usr_intf/pncconf/pncconf.glade:27890 -#: src/emc/usr_intf/pncconf/pncconf.glade:27942 -#: src/emc/usr_intf/pncconf/pncconf.glade:27994 -#: src/emc/usr_intf/pncconf/pncconf.glade:28046 -#: src/emc/usr_intf/pncconf/pncconf.glade:28098 -#: src/emc/usr_intf/pncconf/pncconf.glade:28150 -#: src/emc/usr_intf/pncconf/pncconf.glade:28202 -#: src/emc/usr_intf/pncconf/pncconf.glade:28254 -#: src/emc/usr_intf/pncconf/pncconf.glade:28306 -#: src/emc/usr_intf/pncconf/pncconf.glade:28358 -#: src/emc/usr_intf/pncconf/pncconf.glade:28410 -#: src/emc/usr_intf/pncconf/pncconf.glade:28462 -#: src/emc/usr_intf/pncconf/pncconf.glade:29151 -#: src/emc/usr_intf/pncconf/pncconf.glade:29203 -#: src/emc/usr_intf/pncconf/pncconf.glade:29255 -#: src/emc/usr_intf/pncconf/pncconf.glade:29307 -#: src/emc/usr_intf/pncconf/pncconf.glade:29359 -#: src/emc/usr_intf/pncconf/pncconf.glade:29411 -#: src/emc/usr_intf/pncconf/pncconf.glade:29463 -#: src/emc/usr_intf/pncconf/pncconf.glade:29515 -#: src/emc/usr_intf/pncconf/pncconf.glade:29567 -#: src/emc/usr_intf/pncconf/pncconf.glade:29619 -#: src/emc/usr_intf/pncconf/pncconf.glade:29671 -#: src/emc/usr_intf/pncconf/pncconf.glade:29723 -#: src/emc/usr_intf/pncconf/pncconf.glade:30550 -#: src/emc/usr_intf/pncconf/pncconf.glade:30602 -#: src/emc/usr_intf/pncconf/pncconf.glade:30654 -#: src/emc/usr_intf/pncconf/pncconf.glade:30706 -#: src/emc/usr_intf/pncconf/pncconf.glade:32210 -#: src/emc/usr_intf/pncconf/pncconf.glade:32262 -#: src/emc/usr_intf/pncconf/pncconf.glade:32314 -#: src/emc/usr_intf/pncconf/pncconf.glade:32366 -#: src/emc/usr_intf/pncconf/pncconf.glade:32418 -#: src/emc/usr_intf/pncconf/pncconf.glade:32470 -#: src/emc/usr_intf/pncconf/pncconf.glade:32522 -#: src/emc/usr_intf/pncconf/pncconf.glade:32574 -#: src/emc/usr_intf/pncconf/pncconf.glade:32626 -#: src/emc/usr_intf/pncconf/pncconf.glade:32678 -#: src/emc/usr_intf/pncconf/pncconf.glade:32730 -#: src/emc/usr_intf/pncconf/pncconf.glade:32782 -#: src/emc/usr_intf/pncconf/pncconf.glade:33509 -#: src/emc/usr_intf/pncconf/pncconf.glade:33561 -#: src/emc/usr_intf/pncconf/pncconf.glade:33613 -#: src/emc/usr_intf/pncconf/pncconf.glade:33665 -#: src/emc/usr_intf/pncconf/pncconf.glade:33717 -#: src/emc/usr_intf/pncconf/pncconf.glade:33769 -#: src/emc/usr_intf/pncconf/pncconf.glade:33821 -#: src/emc/usr_intf/pncconf/pncconf.glade:33873 -#: src/emc/usr_intf/pncconf/pncconf.glade:33925 -#: src/emc/usr_intf/pncconf/pncconf.glade:33977 -#: src/emc/usr_intf/pncconf/pncconf.glade:34029 -#: src/emc/usr_intf/pncconf/pncconf.glade:34081 -#: src/emc/usr_intf/pncconf/pncconf.glade:34908 -#: src/emc/usr_intf/pncconf/pncconf.glade:34960 -#: src/emc/usr_intf/pncconf/pncconf.glade:35012 -#: src/emc/usr_intf/pncconf/pncconf.glade:35064 -#: src/emc/usr_intf/pncconf/pncconf.glade:36404 -#: src/emc/usr_intf/pncconf/pncconf.glade:36456 -#: src/emc/usr_intf/pncconf/pncconf.glade:36508 -#: src/emc/usr_intf/pncconf/pncconf.glade:36560 -#: src/emc/usr_intf/pncconf/pncconf.glade:37387 -#: src/emc/usr_intf/pncconf/pncconf.glade:37439 -#: src/emc/usr_intf/pncconf/pncconf.glade:37491 -#: src/emc/usr_intf/pncconf/pncconf.glade:37543 -#: src/emc/usr_intf/pncconf/pncconf.glade:37595 -#: src/emc/usr_intf/pncconf/pncconf.glade:37647 -#: src/emc/usr_intf/pncconf/pncconf.glade:37699 -#: src/emc/usr_intf/pncconf/pncconf.glade:37751 -#: src/emc/usr_intf/pncconf/pncconf.glade:37803 -#: src/emc/usr_intf/pncconf/pncconf.glade:37855 -#: src/emc/usr_intf/pncconf/pncconf.glade:37907 -#: src/emc/usr_intf/pncconf/pncconf.glade:37959 -#: src/emc/usr_intf/pncconf/pncconf.glade:38764 -#: src/emc/usr_intf/pncconf/pncconf.glade:38816 -#: src/emc/usr_intf/pncconf/pncconf.glade:38868 -#: src/emc/usr_intf/pncconf/pncconf.glade:38920 -#: src/emc/usr_intf/pncconf/pncconf.glade:38972 -#: src/emc/usr_intf/pncconf/pncconf.glade:39024 -#: src/emc/usr_intf/pncconf/pncconf.glade:39076 -#: src/emc/usr_intf/pncconf/pncconf.glade:39128 -#: src/emc/usr_intf/pncconf/pncconf.glade:39180 -#: src/emc/usr_intf/pncconf/pncconf.glade:39232 -#: src/emc/usr_intf/pncconf/pncconf.glade:39284 -#: src/emc/usr_intf/pncconf/pncconf.glade:39336 -#: src/emc/usr_intf/pncconf/pncconf.glade:40751 -#: src/emc/usr_intf/pncconf/pncconf.glade:40803 -#: src/emc/usr_intf/pncconf/pncconf.glade:40855 -#: src/emc/usr_intf/pncconf/pncconf.glade:40907 -#: src/emc/usr_intf/pncconf/pncconf.glade:41734 -#: src/emc/usr_intf/pncconf/pncconf.glade:41786 -#: src/emc/usr_intf/pncconf/pncconf.glade:41838 -#: src/emc/usr_intf/pncconf/pncconf.glade:41890 -#: src/emc/usr_intf/pncconf/pncconf.glade:41942 -#: src/emc/usr_intf/pncconf/pncconf.glade:41994 -#: src/emc/usr_intf/pncconf/pncconf.glade:42046 -#: src/emc/usr_intf/pncconf/pncconf.glade:42098 -#: src/emc/usr_intf/pncconf/pncconf.glade:42150 -#: src/emc/usr_intf/pncconf/pncconf.glade:42202 -#: src/emc/usr_intf/pncconf/pncconf.glade:42254 -#: src/emc/usr_intf/pncconf/pncconf.glade:42306 -#: src/emc/usr_intf/pncconf/pncconf.glade:42995 -#: src/emc/usr_intf/pncconf/pncconf.glade:43047 -#: src/emc/usr_intf/pncconf/pncconf.glade:43099 -#: src/emc/usr_intf/pncconf/pncconf.glade:43151 -#: src/emc/usr_intf/pncconf/pncconf.glade:43203 -#: src/emc/usr_intf/pncconf/pncconf.glade:43255 -#: src/emc/usr_intf/pncconf/pncconf.glade:43307 -#: src/emc/usr_intf/pncconf/pncconf.glade:43359 -#: src/emc/usr_intf/pncconf/pncconf.glade:43411 -#: src/emc/usr_intf/pncconf/pncconf.glade:43463 -#: src/emc/usr_intf/pncconf/pncconf.glade:43515 -#: src/emc/usr_intf/pncconf/pncconf.glade:43567 -#: src/emc/usr_intf/pncconf/pncconf.glade:44394 -#: src/emc/usr_intf/pncconf/pncconf.glade:44446 -#: src/emc/usr_intf/pncconf/pncconf.glade:44498 -#: src/emc/usr_intf/pncconf/pncconf.glade:44550 -#: src/emc/usr_intf/pncconf/pncconf.glade:46067 -#: src/emc/usr_intf/pncconf/pncconf.glade:46119 -#: src/emc/usr_intf/pncconf/pncconf.glade:46171 -#: src/emc/usr_intf/pncconf/pncconf.glade:46223 -#: src/emc/usr_intf/pncconf/pncconf.glade:46275 -#: src/emc/usr_intf/pncconf/pncconf.glade:46327 -#: src/emc/usr_intf/pncconf/pncconf.glade:46379 -#: src/emc/usr_intf/pncconf/pncconf.glade:46431 -#: src/emc/usr_intf/pncconf/pncconf.glade:46483 -#: src/emc/usr_intf/pncconf/pncconf.glade:46535 -#: src/emc/usr_intf/pncconf/pncconf.glade:46587 -#: src/emc/usr_intf/pncconf/pncconf.glade:46639 -#: src/emc/usr_intf/pncconf/pncconf.glade:47674 -#: src/emc/usr_intf/pncconf/pncconf.glade:47726 -#: src/emc/usr_intf/pncconf/pncconf.glade:47778 -#: src/emc/usr_intf/pncconf/pncconf.glade:47830 -#: src/emc/usr_intf/pncconf/pncconf.glade:48657 -#: src/emc/usr_intf/pncconf/pncconf.glade:48709 -#: src/emc/usr_intf/pncconf/pncconf.glade:48761 -#: src/emc/usr_intf/pncconf/pncconf.glade:48813 -#: src/emc/usr_intf/pncconf/pncconf.glade:48865 -#: src/emc/usr_intf/pncconf/pncconf.glade:48917 -#: src/emc/usr_intf/pncconf/pncconf.glade:48969 -#: src/emc/usr_intf/pncconf/pncconf.glade:49021 -#: src/emc/usr_intf/pncconf/pncconf.glade:49073 -#: src/emc/usr_intf/pncconf/pncconf.glade:49125 -#: src/emc/usr_intf/pncconf/pncconf.glade:49177 -#: src/emc/usr_intf/pncconf/pncconf.glade:49229 -#: src/emc/usr_intf/pncconf/pncconf.glade:49918 -#: src/emc/usr_intf/pncconf/pncconf.glade:49970 -#: src/emc/usr_intf/pncconf/pncconf.glade:50022 -#: src/emc/usr_intf/pncconf/pncconf.glade:50074 -#: src/emc/usr_intf/pncconf/pncconf.glade:50126 -#: src/emc/usr_intf/pncconf/pncconf.glade:50178 -#: src/emc/usr_intf/pncconf/pncconf.glade:50230 -#: src/emc/usr_intf/pncconf/pncconf.glade:50282 -#: src/emc/usr_intf/pncconf/pncconf.glade:50334 -#: src/emc/usr_intf/pncconf/pncconf.glade:50386 -#: src/emc/usr_intf/pncconf/pncconf.glade:50438 -#: src/emc/usr_intf/pncconf/pncconf.glade:50490 -#: src/emc/usr_intf/pncconf/pncconf.glade:51317 -#: src/emc/usr_intf/pncconf/pncconf.glade:51369 -#: src/emc/usr_intf/pncconf/pncconf.glade:51421 -#: src/emc/usr_intf/pncconf/pncconf.glade:51473 -#: src/emc/usr_intf/pncconf/pncconf.glade:52990 -#: src/emc/usr_intf/pncconf/pncconf.glade:53042 -#: src/emc/usr_intf/pncconf/pncconf.glade:53094 -#: src/emc/usr_intf/pncconf/pncconf.glade:53146 -#: src/emc/usr_intf/pncconf/pncconf.glade:53198 -#: src/emc/usr_intf/pncconf/pncconf.glade:53250 -#: src/emc/usr_intf/pncconf/pncconf.glade:53302 -#: src/emc/usr_intf/pncconf/pncconf.glade:53354 -#: src/emc/usr_intf/pncconf/pncconf.glade:53406 -#: src/emc/usr_intf/pncconf/pncconf.glade:53458 -#: src/emc/usr_intf/pncconf/pncconf.glade:53510 -#: src/emc/usr_intf/pncconf/pncconf.glade:53562 -msgid "" -"ESTOP IN\n" -"Spindle PPR\n" -"Spindle A \n" -"Spindle B \n" -"Home X \n" -"Home Y \n" -"Home Z\n" -"Home A\n" -"Minimum Limit + Home X \n" -"Minimum Limit + Home Y \n" -"Minimum Limit + Home Z \n" -"Minimum Limit + Home A\n" -"Maximum Limit + Home X \n" -"Maximum Limit + Home Y \n" -"Maximum Limit + Home Z \n" -"Maximum Limit + Home A\n" -"Both Limit + Home X \n" -"Both Limit + Home Y \n" -"Both Limit + Home Z \n" -"Both Limit + Home A\n" -"Minimum Limit X \n" -"Minimum Limit Y \n" -"Minimum Limit Z \n" -"Minimum Limit A\n" -"Maximum Limit X \n" -"Maximum Limit Y \n" -"Maximum Limit Z \n" -"Maximum Limit A\n" -"Both Limit X \n" -"Both Limit Y \n" -"Both Limit Z \n" -"Both Limit A\n" -"All limits\n" -"All home\n" -"Unused" +#: src/emc/usr_intf/pncconf/pncconf.glade:63616 +#, fuzzy +msgid "Step Space" +msgstr "Ejecutar programa por paso" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63659 +msgid "Direction Hold" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9515 -#: src/emc/usr_intf/pncconf/pncconf.glade:12871 -#: src/emc/usr_intf/pncconf/pncconf.glade:18128 -#: src/emc/usr_intf/pncconf/pncconf.glade:20233 -#: src/emc/usr_intf/pncconf/pncconf.glade:21486 -#: src/emc/usr_intf/pncconf/pncconf.glade:23282 -#: src/emc/usr_intf/pncconf/pncconf.glade:25078 -msgid "31:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63672 +msgid "Direction Setup" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9531 -#: src/emc/usr_intf/pncconf/pncconf.glade:12855 -#: src/emc/usr_intf/pncconf/pncconf.glade:18112 -#: src/emc/usr_intf/pncconf/pncconf.glade:20217 -#: src/emc/usr_intf/pncconf/pncconf.glade:21502 -#: src/emc/usr_intf/pncconf/pncconf.glade:23298 -#: src/emc/usr_intf/pncconf/pncconf.glade:25094 -msgid "29:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63715 +msgid "Driver Type:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9547 -#: src/emc/usr_intf/pncconf/pncconf.glade:12839 -#: src/emc/usr_intf/pncconf/pncconf.glade:18096 -#: src/emc/usr_intf/pncconf/pncconf.glade:20201 -#: src/emc/usr_intf/pncconf/pncconf.glade:21518 -#: src/emc/usr_intf/pncconf/pncconf.glade:23314 -#: src/emc/usr_intf/pncconf/pncconf.glade:25110 -msgid "27:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63748 +msgid "Stepper Info" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9563 -#: src/emc/usr_intf/pncconf/pncconf.glade:12823 -#: src/emc/usr_intf/pncconf/pncconf.glade:18080 -#: src/emc/usr_intf/pncconf/pncconf.glade:20185 -#: src/emc/usr_intf/pncconf/pncconf.glade:21534 -#: src/emc/usr_intf/pncconf/pncconf.glade:23330 -#: src/emc/usr_intf/pncconf/pncconf.glade:25126 -msgid "25:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63800 +msgid "No feedback" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9936 -#: src/emc/usr_intf/pncconf/pncconf.glade:12450 -#: src/emc/usr_intf/pncconf/pncconf.glade:17707 -#: src/emc/usr_intf/pncconf/pncconf.glade:19924 -#: src/emc/usr_intf/pncconf/pncconf.glade:21795 -#: src/emc/usr_intf/pncconf/pncconf.glade:23591 -#: src/emc/usr_intf/pncconf/pncconf.glade:25387 -msgid "33:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63810 +msgid "Absolute Feedback" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9952 -#: src/emc/usr_intf/pncconf/pncconf.glade:12434 -#: src/emc/usr_intf/pncconf/pncconf.glade:17691 -#: src/emc/usr_intf/pncconf/pncconf.glade:19908 -#: src/emc/usr_intf/pncconf/pncconf.glade:21811 -#: src/emc/usr_intf/pncconf/pncconf.glade:23607 -#: src/emc/usr_intf/pncconf/pncconf.glade:25403 -msgid "35:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63824 +msgid "Incremental Feedback" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9968 -#: src/emc/usr_intf/pncconf/pncconf.glade:12418 -#: src/emc/usr_intf/pncconf/pncconf.glade:17675 -#: src/emc/usr_intf/pncconf/pncconf.glade:19892 -#: src/emc/usr_intf/pncconf/pncconf.glade:21827 -#: src/emc/usr_intf/pncconf/pncconf.glade:23623 -#: src/emc/usr_intf/pncconf/pncconf.glade:25419 -msgid "37:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63838 +#, fuzzy +msgid "Incremental Encoder" +msgstr "Invertir Imagen" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63850 +msgid "Hall sensors" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9984 -#: src/emc/usr_intf/pncconf/pncconf.glade:12402 -#: src/emc/usr_intf/pncconf/pncconf.glade:17659 -#: src/emc/usr_intf/pncconf/pncconf.glade:19876 -#: src/emc/usr_intf/pncconf/pncconf.glade:21843 -#: src/emc/usr_intf/pncconf/pncconf.glade:23639 -#: src/emc/usr_intf/pncconf/pncconf.glade:25435 -msgid "39:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63862 +msgid "Fanuc Red Cap " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10000 -#: src/emc/usr_intf/pncconf/pncconf.glade:12386 -#: src/emc/usr_intf/pncconf/pncconf.glade:17643 -#: src/emc/usr_intf/pncconf/pncconf.glade:19860 -#: src/emc/usr_intf/pncconf/pncconf.glade:21859 -#: src/emc/usr_intf/pncconf/pncconf.glade:23655 -#: src/emc/usr_intf/pncconf/pncconf.glade:25451 -msgid "41:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63874 +#, fuzzy +msgid "Use encoder Index" +msgstr "Controlar portabrocas:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63905 +msgid "Input Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10016 -#: src/emc/usr_intf/pncconf/pncconf.glade:12370 -#: src/emc/usr_intf/pncconf/pncconf.glade:17627 -#: src/emc/usr_intf/pncconf/pncconf.glade:19844 -#: src/emc/usr_intf/pncconf/pncconf.glade:21875 -#: src/emc/usr_intf/pncconf/pncconf.glade:23671 -#: src/emc/usr_intf/pncconf/pncconf.glade:25467 -msgid "43:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63929 +msgid "Digital instead of PWM outputs" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10032 -#: src/emc/usr_intf/pncconf/pncconf.glade:12354 -#: src/emc/usr_intf/pncconf/pncconf.glade:17611 -#: src/emc/usr_intf/pncconf/pncconf.glade:19828 -#: src/emc/usr_intf/pncconf/pncconf.glade:21891 -#: src/emc/usr_intf/pncconf/pncconf.glade:23687 -#: src/emc/usr_intf/pncconf/pncconf.glade:25483 -msgid "45:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63938 +msgid "6 outputs instead of 3 " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10099 -#: src/emc/usr_intf/pncconf/pncconf.glade:12287 -#: src/emc/usr_intf/pncconf/pncconf.glade:17544 -#: src/emc/usr_intf/pncconf/pncconf.glade:19777 -#: src/emc/usr_intf/pncconf/pncconf.glade:21942 -#: src/emc/usr_intf/pncconf/pncconf.glade:23738 -#: src/emc/usr_intf/pncconf/pncconf.glade:25534 -msgid "47:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63950 +msgid "Force Trapezoid Mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10822 -#: src/emc/usr_intf/pncconf/pncconf.glade:11077 -#: src/emc/usr_intf/pncconf/pncconf.glade:11311 -#: src/emc/usr_intf/pncconf/pncconf.glade:11567 -#: src/emc/usr_intf/pncconf/pncconf.glade:13924 -#: src/emc/usr_intf/pncconf/pncconf.glade:14171 -#: src/emc/usr_intf/pncconf/pncconf.glade:16516 -#: src/emc/usr_intf/pncconf/pncconf.glade:16772 -#: src/emc/usr_intf/pncconf/pncconf.glade:19129 -#: src/emc/usr_intf/pncconf/pncconf.glade:19379 -#: src/emc/usr_intf/pncconf/pncconf.glade:22343 -#: src/emc/usr_intf/pncconf/pncconf.glade:22592 -#: src/emc/usr_intf/pncconf/pncconf.glade:24139 -#: src/emc/usr_intf/pncconf/pncconf.glade:24388 -#: src/emc/usr_intf/pncconf/pncconf.glade:25935 -#: src/emc/usr_intf/pncconf/pncconf.glade:26184 -#: src/emc/usr_intf/pncconf/pncconf.glade:28515 -#: src/emc/usr_intf/pncconf/pncconf.glade:28761 -#: src/emc/usr_intf/pncconf/pncconf.glade:28892 -#: src/emc/usr_intf/pncconf/pncconf.glade:29139 -#: src/emc/usr_intf/pncconf/pncconf.glade:33079 -#: src/emc/usr_intf/pncconf/pncconf.glade:33250 -#: src/emc/usr_intf/pncconf/pncconf.glade:33497 -#: src/emc/usr_intf/pncconf/pncconf.glade:38012 -#: src/emc/usr_intf/pncconf/pncconf.glade:38258 -#: src/emc/usr_intf/pncconf/pncconf.glade:38507 -#: src/emc/usr_intf/pncconf/pncconf.glade:42359 -#: src/emc/usr_intf/pncconf/pncconf.glade:42605 -#: src/emc/usr_intf/pncconf/pncconf.glade:42736 -#: src/emc/usr_intf/pncconf/pncconf.glade:42983 -#: src/emc/usr_intf/pncconf/pncconf.glade:46936 -#: src/emc/usr_intf/pncconf/pncconf.glade:49282 -#: src/emc/usr_intf/pncconf/pncconf.glade:49528 -#: src/emc/usr_intf/pncconf/pncconf.glade:49659 -#: src/emc/usr_intf/pncconf/pncconf.glade:49906 -#: src/emc/usr_intf/pncconf/pncconf.glade:53859 -msgid "Pin Type" +#: src/emc/usr_intf/pncconf/pncconf.glade:63962 +msgid "Emulate feedback " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10835 -#: src/emc/usr_intf/pncconf/pncconf.glade:11553 -#: src/emc/usr_intf/pncconf/pncconf.glade:16758 -#: src/emc/usr_intf/pncconf/pncconf.glade:19365 -#: src/emc/usr_intf/pncconf/pncconf.glade:22356 -#: src/emc/usr_intf/pncconf/pncconf.glade:24152 -#: src/emc/usr_intf/pncconf/pncconf.glade:25948 -msgid "23:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63974 +msgid "Emulated Hall sensors" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10849 -#: src/emc/usr_intf/pncconf/pncconf.glade:11539 -#: src/emc/usr_intf/pncconf/pncconf.glade:16744 -#: src/emc/usr_intf/pncconf/pncconf.glade:19351 -#: src/emc/usr_intf/pncconf/pncconf.glade:22370 -#: src/emc/usr_intf/pncconf/pncconf.glade:24166 -#: src/emc/usr_intf/pncconf/pncconf.glade:25962 -msgid "21:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63987 +msgid "Emulated Fanuc Red Cap" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10863 -#: src/emc/usr_intf/pncconf/pncconf.glade:11525 -#: src/emc/usr_intf/pncconf/pncconf.glade:16730 -#: src/emc/usr_intf/pncconf/pncconf.glade:19337 -#: src/emc/usr_intf/pncconf/pncconf.glade:22384 -#: src/emc/usr_intf/pncconf/pncconf.glade:24180 -#: src/emc/usr_intf/pncconf/pncconf.glade:25976 -msgid "19:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64014 +msgid "8i20 Max Current" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10877 -#: src/emc/usr_intf/pncconf/pncconf.glade:11511 -#: src/emc/usr_intf/pncconf/pncconf.glade:16716 -#: src/emc/usr_intf/pncconf/pncconf.glade:19323 -#: src/emc/usr_intf/pncconf/pncconf.glade:22398 -#: src/emc/usr_intf/pncconf/pncconf.glade:24194 -#: src/emc/usr_intf/pncconf/pncconf.glade:25990 -msgid "17:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64048 +msgid "Output Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11497 -#: src/emc/usr_intf/pncconf/pncconf.glade:16702 -#: src/emc/usr_intf/pncconf/pncconf.glade:19309 -#: src/emc/usr_intf/pncconf/pncconf.glade:22412 -#: src/emc/usr_intf/pncconf/pncconf.glade:24208 -#: src/emc/usr_intf/pncconf/pncconf.glade:26004 -msgid "15:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64103 +msgid "alignment current" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10905 -#: src/emc/usr_intf/pncconf/pncconf.glade:11483 -#: src/emc/usr_intf/pncconf/pncconf.glade:16688 -#: src/emc/usr_intf/pncconf/pncconf.glade:19295 -#: src/emc/usr_intf/pncconf/pncconf.glade:22426 -#: src/emc/usr_intf/pncconf/pncconf.glade:24222 -#: src/emc/usr_intf/pncconf/pncconf.glade:26018 -msgid "13:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64113 +msgid "lead angle" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10919 -#: src/emc/usr_intf/pncconf/pncconf.glade:11469 -#: src/emc/usr_intf/pncconf/pncconf.glade:16674 -#: src/emc/usr_intf/pncconf/pncconf.glade:19281 -#: src/emc/usr_intf/pncconf/pncconf.glade:22440 -#: src/emc/usr_intf/pncconf/pncconf.glade:24236 -#: src/emc/usr_intf/pncconf/pncconf.glade:26032 -msgid "11:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64213 +#, fuzzy +msgid "Reverse" +msgstr "Controlar portabrocas:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64223 +msgid "Input-pattern" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10933 -#: src/emc/usr_intf/pncconf/pncconf.glade:11455 -#: src/emc/usr_intf/pncconf/pncconf.glade:16660 -#: src/emc/usr_intf/pncconf/pncconf.glade:19267 -#: src/emc/usr_intf/pncconf/pncconf.glade:22454 -#: src/emc/usr_intf/pncconf/pncconf.glade:24250 -#: src/emc/usr_intf/pncconf/pncconf.glade:26046 -msgid " 9:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64233 +msgid "output-pattern" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10947 -#: src/emc/usr_intf/pncconf/pncconf.glade:11441 -#: src/emc/usr_intf/pncconf/pncconf.glade:16646 -#: src/emc/usr_intf/pncconf/pncconf.glade:19253 -#: src/emc/usr_intf/pncconf/pncconf.glade:22468 -#: src/emc/usr_intf/pncconf/pncconf.glade:24264 -#: src/emc/usr_intf/pncconf/pncconf.glade:26060 -msgid " 7:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64243 +msgid "Drive-offset" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10961 -#: src/emc/usr_intf/pncconf/pncconf.glade:11427 -#: src/emc/usr_intf/pncconf/pncconf.glade:16632 -#: src/emc/usr_intf/pncconf/pncconf.glade:19239 -#: src/emc/usr_intf/pncconf/pncconf.glade:22482 -#: src/emc/usr_intf/pncconf/pncconf.glade:24278 -#: src/emc/usr_intf/pncconf/pncconf.glade:26074 -msgid " 5:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64253 +#, fuzzy +msgid "Encoder-offset" +msgstr "Fin" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64263 +msgid "Poles" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10975 -#: src/emc/usr_intf/pncconf/pncconf.glade:11413 -#: src/emc/usr_intf/pncconf/pncconf.glade:16618 -#: src/emc/usr_intf/pncconf/pncconf.glade:19225 -#: src/emc/usr_intf/pncconf/pncconf.glade:22496 -#: src/emc/usr_intf/pncconf/pncconf.glade:24292 -#: src/emc/usr_intf/pncconf/pncconf.glade:26088 -msgid " 3:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64283 +#, fuzzy +msgid "Configuration" +msgstr "Mostrar configuracion _HAl" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64318 +msgid "Use BLDC Motor Commutation Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10989 -#: src/emc/usr_intf/pncconf/pncconf.glade:11399 -#: src/emc/usr_intf/pncconf/pncconf.glade:16604 -#: src/emc/usr_intf/pncconf/pncconf.glade:19211 -#: src/emc/usr_intf/pncconf/pncconf.glade:22510 -#: src/emc/usr_intf/pncconf/pncconf.glade:24306 -#: src/emc/usr_intf/pncconf/pncconf.glade:26102 -msgid " 1:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64354 +msgid "Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:11002 -#: src/emc/usr_intf/pncconf/pncconf.glade:11065 -#: src/emc/usr_intf/pncconf/pncconf.glade:11324 -#: src/emc/usr_intf/pncconf/pncconf.glade:11386 -#: src/emc/usr_intf/pncconf/pncconf.glade:13937 -#: src/emc/usr_intf/pncconf/pncconf.glade:13999 -#: src/emc/usr_intf/pncconf/pncconf.glade:16529 -#: src/emc/usr_intf/pncconf/pncconf.glade:16591 -#: src/emc/usr_intf/pncconf/pncconf.glade:19142 -#: src/emc/usr_intf/pncconf/pncconf.glade:19198 -#: src/emc/usr_intf/pncconf/pncconf.glade:22523 -#: src/emc/usr_intf/pncconf/pncconf.glade:22580 -#: src/emc/usr_intf/pncconf/pncconf.glade:24319 -#: src/emc/usr_intf/pncconf/pncconf.glade:24376 -#: src/emc/usr_intf/pncconf/pncconf.glade:26115 -#: src/emc/usr_intf/pncconf/pncconf.glade:26172 -#: src/emc/usr_intf/pncconf/pncconf.glade:28686 -#: src/emc/usr_intf/pncconf/pncconf.glade:28749 -#: src/emc/usr_intf/pncconf/pncconf.glade:28905 -#: src/emc/usr_intf/pncconf/pncconf.glade:28967 -#: src/emc/usr_intf/pncconf/pncconf.glade:33067 -#: src/emc/usr_intf/pncconf/pncconf.glade:33263 -#: src/emc/usr_intf/pncconf/pncconf.glade:33325 -#: src/emc/usr_intf/pncconf/pncconf.glade:38183 -#: src/emc/usr_intf/pncconf/pncconf.glade:38246 -#: src/emc/usr_intf/pncconf/pncconf.glade:38520 -#: src/emc/usr_intf/pncconf/pncconf.glade:42530 -#: src/emc/usr_intf/pncconf/pncconf.glade:42593 -#: src/emc/usr_intf/pncconf/pncconf.glade:42749 -#: src/emc/usr_intf/pncconf/pncconf.glade:42811 -#: src/emc/usr_intf/pncconf/pncconf.glade:46924 -#: src/emc/usr_intf/pncconf/pncconf.glade:49453 -#: src/emc/usr_intf/pncconf/pncconf.glade:49516 -#: src/emc/usr_intf/pncconf/pncconf.glade:49672 -#: src/emc/usr_intf/pncconf/pncconf.glade:49734 -#: src/emc/usr_intf/pncconf/pncconf.glade:53847 -msgid "Inv" +#: src/emc/usr_intf/pncconf/pncconf.glade:64375 +msgid "% " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:11198 -msgid "" -" I/O\n" -"Connector 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:64394 +msgid "Range:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:13811 -msgid "" -" I/O\n" -" Connector 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:64419 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "RPM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:14012 -#: src/emc/usr_intf/pncconf/pncconf.glade:14039 -#: src/emc/usr_intf/pncconf/pncconf.glade:14053 -#: src/emc/usr_intf/pncconf/pncconf.glade:28632 -#: src/emc/usr_intf/pncconf/pncconf.glade:28646 -#: src/emc/usr_intf/pncconf/pncconf.glade:28673 -#: src/emc/usr_intf/pncconf/pncconf.glade:28980 -#: src/emc/usr_intf/pncconf/pncconf.glade:29007 -#: src/emc/usr_intf/pncconf/pncconf.glade:29021 -#: src/emc/usr_intf/pncconf/pncconf.glade:32951 -#: src/emc/usr_intf/pncconf/pncconf.glade:32965 -#: src/emc/usr_intf/pncconf/pncconf.glade:32992 -#: src/emc/usr_intf/pncconf/pncconf.glade:33338 -#: src/emc/usr_intf/pncconf/pncconf.glade:33365 -#: src/emc/usr_intf/pncconf/pncconf.glade:33379 -#: src/emc/usr_intf/pncconf/pncconf.glade:38129 -#: src/emc/usr_intf/pncconf/pncconf.glade:38143 -#: src/emc/usr_intf/pncconf/pncconf.glade:38170 -#: src/emc/usr_intf/pncconf/pncconf.glade:38594 -#: src/emc/usr_intf/pncconf/pncconf.glade:38621 -#: src/emc/usr_intf/pncconf/pncconf.glade:38635 -#: src/emc/usr_intf/pncconf/pncconf.glade:42476 -#: src/emc/usr_intf/pncconf/pncconf.glade:42490 -#: src/emc/usr_intf/pncconf/pncconf.glade:42517 -#: src/emc/usr_intf/pncconf/pncconf.glade:42824 -#: src/emc/usr_intf/pncconf/pncconf.glade:42851 -#: src/emc/usr_intf/pncconf/pncconf.glade:42865 -#: src/emc/usr_intf/pncconf/pncconf.glade:46808 -#: src/emc/usr_intf/pncconf/pncconf.glade:46822 -#: src/emc/usr_intf/pncconf/pncconf.glade:46849 -#: src/emc/usr_intf/pncconf/pncconf.glade:49399 -#: src/emc/usr_intf/pncconf/pncconf.glade:49413 -#: src/emc/usr_intf/pncconf/pncconf.glade:49440 -#: src/emc/usr_intf/pncconf/pncconf.glade:49747 -#: src/emc/usr_intf/pncconf/pncconf.glade:49774 -#: src/emc/usr_intf/pncconf/pncconf.glade:49788 -#: src/emc/usr_intf/pncconf/pncconf.glade:53731 -#: src/emc/usr_intf/pncconf/pncconf.glade:53745 -#: src/emc/usr_intf/pncconf/pncconf.glade:53772 -msgid " " +#: src/emc/usr_intf/pncconf/pncconf.glade:64439 +msgid "Use Spindle-At-Speed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:16403 -msgid "" -" I/O\n" -" Connector 4" +#: src/emc/usr_intf/pncconf/pncconf.glade:64464 +#, fuzzy +msgid "Filter gain:" +msgstr "Filtro_del Programa %r fallido" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64499 +msgid "Spindle Display Filter Settings" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:19017 -msgid "" -" I/O\n" -" Connector 5" +#: src/emc/usr_intf/pncconf/pncconf.glade:64565 +msgid "Rapid Speed Following Error:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:20813 -msgid "" -" I/O\n" -"Connector 6" +#: src/emc/usr_intf/pncconf/pncconf.glade:64577 +msgid "Feed Speed Following Error:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:22609 -msgid "" -" I/O\n" -"Connector 7" +#: src/emc/usr_intf/pncconf/pncconf.glade:64591 +msgid "Invert Motor Direction" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64606 +msgid "Invert Encoder Direction " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:24405 +#: src/emc/usr_intf/pncconf/pncconf.glade:64661 +#, fuzzy +msgid "Single Input Encoder" +msgstr "Invertir Imagen" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64776 +msgid "encoder Scale:" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64801 +#, fuzzy +msgid "Stepper Scale:" +msgstr "Ejecutar programa por paso" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64831 msgid "" -" I/O\n" -"Connector 8" +"Calculate\n" +"Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:26201 +#: src/emc/usr_intf/pncconf/pncconf.glade:64901 +msgid "Test / Tune Axis" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64943 +#, fuzzy +msgid "X Axis Configuration" +msgstr "Mostrar configuracion _HAl" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65155 msgid "" -" I/O\n" -" Connector 9" +"NO\n" +"YES" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:28775 -#: src/emc/usr_intf/pncconf/pncconf.glade:35696 -#: src/emc/usr_intf/pncconf/pncconf.glade:42619 -#: src/emc/usr_intf/pncconf/pncconf.glade:49542 -msgid "page 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65171 +msgid "Use Encoder Index For Home:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:31354 -#: src/emc/usr_intf/pncconf/pncconf.glade:38275 -#: src/emc/usr_intf/pncconf/pncconf.glade:45198 -#: src/emc/usr_intf/pncconf/pncconf.glade:52121 -msgid "page 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65212 +msgid "Home Final Velocity:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:33107 -#: src/emc/usr_intf/pncconf/pncconf.glade:40030 -#: src/emc/usr_intf/pncconf/pncconf.glade:46953 -#: src/emc/usr_intf/pncconf/pncconf.glade:53876 -msgid "page 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65222 +msgid "" +"Same\n" +"Opposite" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:33123 -msgid "Smart Serial 0" +#: src/emc/usr_intf/pncconf/pncconf.glade:65238 +msgid "Home Latch Direction:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:40046 -msgid "Smart Serial 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65251 +msgid "" +"Towards Negative limit\n" +"Towards Positive limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:46969 -msgid "Smart Serial 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65267 +#, fuzzy +msgid "Home Search Direction:" +msgstr "Escanear dirección" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65309 +msgid "Home latch Velocity:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53892 -msgid "Smart Serial 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65334 +msgid "filename:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53914 -msgid "First Parallel Port Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:65347 +msgid "" +"Type 1\n" +"Type 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53998 -msgid "Outputs (PC to Machine):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65392 +msgid "Use Compensation File:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:54552 -msgid "Inputs (Machine to PC):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65406 +msgid "Use Backlash Compensation:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:55977 -msgid "Launch Test Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:65433 +msgid "Home Position location (offset from machine zero Origin):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56003 -msgid "X Axis Motor/Encoder Configuration" +#: src/emc/usr_intf/pncconf/pncconf.glade:65449 +msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56091 -msgid "D" +#: src/emc/usr_intf/pncconf/pncconf.glade:65493 +msgid "Home Switch location (Offset from machine zero Origin):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56104 -msgid "I" +#: src/emc/usr_intf/pncconf/pncconf.glade:65509 +msgid "Home Search Velocity:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56117 -msgid "P" +#: src/emc/usr_intf/pncconf/pncconf.glade:65524 +msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56128 -#: src/emc/usr_intf/pncconf/pncconf.glade:60917 -#: src/emc/usr_intf/pncconf/pncconf.glade:62202 -#: src/emc/usr_intf/pncconf/pncconf.glade:63103 -#: src/emc/usr_intf/pncconf/pncconf.glade:64388 -#: src/emc/usr_intf/pncconf/pncconf.glade:65265 -msgid "Bias" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Advanced Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56141 -msgid "Deadband" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 15" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56188 -#: src/emc/usr_intf/pncconf/pncconf.glade:61128 -#: src/emc/usr_intf/pncconf/pncconf.glade:61991 -#: src/emc/usr_intf/pncconf/pncconf.glade:63314 -#: src/emc/usr_intf/pncconf/pncconf.glade:64177 -#: src/emc/usr_intf/pncconf/pncconf.glade:65470 -#, fuzzy -msgid "FF0" -msgstr "APAGAR" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 14" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56201 -#: src/emc/usr_intf/pncconf/pncconf.glade:61118 -#: src/emc/usr_intf/pncconf/pncconf.glade:62001 -#: src/emc/usr_intf/pncconf/pncconf.glade:63304 -#: src/emc/usr_intf/pncconf/pncconf.glade:64187 -#: src/emc/usr_intf/pncconf/pncconf.glade:65460 -#, fuzzy -msgid "FF1" -msgstr "APAGAR" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 13" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56214 -#: src/emc/usr_intf/pncconf/pncconf.glade:61108 -#: src/emc/usr_intf/pncconf/pncconf.glade:62011 -#: src/emc/usr_intf/pncconf/pncconf.glade:63294 -#: src/emc/usr_intf/pncconf/pncconf.glade:64197 -#: src/emc/usr_intf/pncconf/pncconf.glade:65450 -#, fuzzy -msgid "FF2" -msgstr "APAGAR" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 12" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56282 -msgid "Servo Info" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 11" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56362 -#, fuzzy -msgid "Spindle Max Output:" -msgstr "Portabrocas:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 10" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56412 -#, fuzzy -msgid "Spindle Max limit:" -msgstr "Aumentar revoluciones del Portabrocas [F12]" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 9" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56426 -#, fuzzy -msgid "Spindle Min Limit:" -msgstr "Portabrocas:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 8" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56456 -msgid "" -"Open Loop\n" -" Test" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 7" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56557 -msgid "Quad Pulses / Rev:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 6" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56572 -msgid "Dac Max Output:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 5" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56586 -msgid "Dac Output Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56599 -msgid "3pwm Deadtime:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56612 -msgid "3pwm Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56626 -msgid "Output Info" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56691 -msgid "Driver Type:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include Halui user interface component / commands" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56735 -msgid "Direction Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Number of digital (bit) in pins:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56748 -msgid "Direction Hold" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Number of digital (bit) out pins:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56791 -#, fuzzy -msgid "Step Space" -msgstr "Ejecutar programa por paso" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of Internal bit memory:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56804 -msgid "Step On-Time" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of Internal word memory:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56820 -msgid "Stepper Info" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Setup number of external pins" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56871 -msgid "No feedback" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Z Auto Touch off program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56881 -msgid "Absolute Feedback" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "HAL Component Page" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56895 -msgid "Incremental Feedback" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Add HAL components with this page." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56909 -#, fuzzy -msgid "Incremental Encoder" -msgstr "Invertir Imagen" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Component" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "number of components" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56921 -msgid "Hall sensors" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "PID" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56933 -msgid "Fanuc Red Cap " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56945 -#, fuzzy -msgid "Use encoder Index" -msgstr "Controlar portabrocas:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mux16" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56976 -msgid "Input Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "lowpass" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57000 -msgid "Digital instead of PWM outputs" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Base Thread" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57009 -msgid "6 outputs instead of 3 " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Servo Thread" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57021 -msgid "Force Trapezoid Mode" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Load Command " +msgstr "dirigido" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Thread Speed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57033 -msgid "Emulate feedback " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Thread Command" +msgstr "dirigido" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Custom Components Commands" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57045 -msgid "Emulated Hall sensors" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Machine configuration complete" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57058 -msgid "Emulated Fanuc Red Cap" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"All the necessary information has now been gathered. Click \"Apply\" to " +"write your configuration files to disk.\n" +"\n" +"If you are using the 5i25 card with daugther boards or are using SSerial " +"based daughter cards, the cards must be connected and/or field power " +"supplied to the 5i25 \n" +"for the HAL pins to be available. If the config is expecting the pins and " +"they are not there, linuxcnc will error.\n" +"If you experience lockups while running LinuxCNC, you will need to decrease " +"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC, first verify that you " +"entered the proper timings for your stepper drivers. If that does not fix " +"the problem, then run a more thorough latency test as described on the " +"linuxcnc.org wiki:\n" +" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" +"\n" +"If you experience the \"Unexpected Realtime Delay\" message, run a more " +"thorough latency test as described on the linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57085 -msgid "8i20 Max Current" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +" Motor Encoder Test\n" +"Warning limits switches \n" +" Will not be obeyed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57119 -msgid "Output Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Slow Dac Speed" +msgstr "Mostrar v_elocidad de maquina" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Fast Dac Speed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57153 -msgid "Poles" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Dac Offset:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57163 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Encoder-offset" +msgid "Encoder Scale:" msgstr "Fin" -#: src/emc/usr_intf/pncconf/pncconf.glade:57173 -msgid "Drive-offset" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57183 -msgid "output-pattern" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Reset Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57193 -msgid "Input-pattern" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Enable Amp" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57203 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Reverse" -msgstr "Controlar portabrocas:" +msgid "Invert Encoder" +msgstr "Invertir Imagen" -#: src/emc/usr_intf/pncconf/pncconf.glade:57303 -msgid "lead angle" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Invert Motor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57313 -msgid "alignment current" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"±\n" +"+\n" +"-\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57354 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Configuration" -msgstr "Mostrar configuracion _HAl" +msgid "Seconds" +msgstr "Secundario" -#: src/emc/usr_intf/pncconf/pncconf.glade:57389 -msgid "Use Brushless Motor Control" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57425 -msgid "Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm/minute^2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57446 -msgid "% " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm/minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57466 -msgid "Use Spindle-At-Speed" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Current" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57491 -#, fuzzy -msgid "Filter gain:" -msgstr "Filtro_del Programa %r fallido" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57526 -msgid "Spindle Display Filter Settings" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "P:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57577 -#, fuzzy -msgid "Single Input Encoder" -msgstr "Invertir Imagen" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57631 -msgid "Invert Encoder Direction " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "I:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57646 -msgid "Invert Motor Direction" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "D:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57661 -msgid "Feed Speed Following Error:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Original" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57675 -msgid "Rapid Speed Following Error:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "DeadBand" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57715 -msgid "" -"Calculate\n" -"Scale" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "PID Tuning" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57744 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Stepper Scale:" +msgid "Step Time:" msgstr "Ejecutar programa por paso" -#: src/emc/usr_intf/pncconf/pncconf.glade:57771 -msgid "encoder Scale:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Step Space:" +msgstr "Ejecutar programa por paso" -#: src/emc/usr_intf/pncconf/pncconf.glade:57928 -msgid "Test / Tune Axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Direction Hold:" +msgstr "Escanear dirección" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Direction Setup:" +msgstr "Escanear dirección" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Timing" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58235 -msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58251 -msgid "Home Search Velocity:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "spindle" +msgstr "Portabrocas:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Help Page" +msgstr "Invertir Imagen" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"X axis:\n" +"Total Travel = 10\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = 0\n" +"Pos Travel Distance = Total Travel - neg travel distance = 10\n" +"Home Position = Origin to Home Position distance = 6\n" +"\n" +"Y axis:\n" +"Total Travel = 8\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = -8\n" +"Pos Travel Distance = Total Travel - neg travel distance = 0\n" +"Home Position = Origin to Home Position distance = 0\n" +"\n" +"Z axis:\n" +"Total Travel = 12\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = -12\n" +"Pos Travel Distance = Total Travel - neg travel distance = 0\n" +"Home Position = Origin to Home Position distance = 0\n" +"\n" +"Note that the direction indicators on the top right show \n" +"movement of the TOOL and on the actual machine,\n" +"often it is the table that actually moves. In that case the \n" +"directions are opposite of shown.\n" +"\n" +"Note this is an example, Many other combinations are \n" +"possible" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58266 -msgid "Home Switch location (Offset from machine zero Origin):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Mill" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58310 -msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"Total Travel = 4 + 6 = 10\n" +"Z Home Offset = Origin to Home Switch distance = 10\n" +"Z Neg Travel Distance = Origin to neg limit distance = 0\n" +"Z Pos Travel Distance = Total Travel - neg travel distance = 10\n" +"Z Home Position = Origin to Home Position distance = 4\n" +"\n" +"X axis would be similar but not shown fully for clarity.\n" +"This is just a sample reference other switch combinations are\n" +"possible." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58326 -msgid "Home Position location (offset from machine zero Origin):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Lathe" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58355 -msgid "Use Backlash Compensation:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Diagram" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58369 -msgid "Use Compensation File:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Output" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58412 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" -"Type 1\n" -"Type 2" +"\t\t\t\tPNCconf - Point aNd Click CONFigurator\n" +"PNCconf is a configuration program for Linuxcnc.\n" +"It configures machines using Mesa I/O cards.\n" +"It configures servo,stepper or closed loop stepper machines.\n" +"It supports some of Mesa's sserial cards.\n" +"It will forever be a work in progress as Linuxcnc changes.\n" +"\n" +"Many thanks To:\n" +"Jeff Eppler - PNCconf is based on stepconf - Jeff's creation. Jeff also has " +"helped with techincal difficulties.\n" +"Big John T - John drew the original machine illustrations. Testing and " +"suggestions.\n" +"Peter Wallace - Technical questions on Mesa's I/O cards. Supplied sample " +"equipment to test with.\n" +"Andy Pugh - suggestions, questions answered and many pin name changes :) \n" +"Dave Armstrong - testing and suggestions expecially with resolvers.\n" +"Everyone who gave a bug report ! I cannot test everything thoughly enough so " +"reports help.\n" +"\n" +"Beta 1 version" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58427 -msgid "filename:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "TPI " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58455 -msgid "Home latch Velocity:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulley teeth (motor:Leadscrew):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58494 -#, fuzzy -msgid "Home Search Direction:" -msgstr "Escanear dirección" - -#: src/emc/usr_intf/pncconf/pncconf.glade:58507 -msgid "" -"Towards Negative limit\n" -"Towards Positive limit" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Worm turn ratio (Input:Outputl)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58523 -msgid "Home Latch Direction:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Microstep Multiplication Factor:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58552 -msgid "Home Final Velocity:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Leadscrew Metric Pitch" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58591 -msgid "Use Encoder Index For Home:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motor steps per revolution:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58603 -msgid "" -"NO\n" -"YES" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Motor Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58628 -msgid "Advanced Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "TPI" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58712 -msgid "Cmd 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "X 4 = Pulses/Rev" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58718 -msgid "Cmd 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder lines per revolution:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58728 -msgid "Cmd 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulley teeth (encoder:Leadscrew):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58738 -msgid "Cmd 4" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58748 -msgid "Cmd 5" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58874 -msgid "Cmd 6" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "encoder pulses per unit:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58884 -msgid "Cmd 7" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "motor steps per unit:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58896 -msgid "Cmd 8" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Calculated Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58908 -msgid "Cmd 9" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / encoder pulse" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58920 -msgid "Cmd 10" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Resolution:" +msgstr "Posicion:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Distance to acheave max speed:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58990 -msgid "Cmd 11" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "sec" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59000 -msgid "Cmd 12" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Khz" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59012 -msgid "Cmd 13" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Calculated Axis SCALE:" +msgstr "Eje:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motor RPM at max speed:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59024 -msgid "Cmd 14" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "xmaxrpm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59036 -msgid "Cmd 15" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Motion Data" +msgstr "Restaurar" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "gtk-cancel" +msgstr "Cancelar" -#: src/emc/usr_intf/pncconf/pncconf.glade:59053 -msgid "Include Halui user interface component / commands" +#: src/emc/usr_intf/gscreen/gscreen.py:349 +#, python-format +msgid "adding import dir %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59127 -msgid "Number of digital (bit) in pins:" +#: src/emc/usr_intf/gscreen/gscreen.py:355 +#, python-format +msgid "module '%s' imported OK" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59138 -msgid "Number of digital (bit) out pins:" +#: src/emc/usr_intf/gscreen/gscreen.py:452 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Using CUSTOM glade file from %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59308 -msgid "Setup number of external pins" +#: src/emc/usr_intf/gscreen/gscreen.py:457 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Using SKIN glade file from %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59360 -msgid "Z Auto Touch off program" +#: src/emc/usr_intf/gscreen/gscreen.py:460 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: using STOCK glade file from: %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59505 -msgid "HAL Component Page" +#: src/emc/usr_intf/gscreen/gscreen.py:466 +#, python-format +msgid "**** Gscreen GLADE ERROR: With main screen xml file: %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59648 -msgid "lowpass" +#: src/emc/usr_intf/gscreen/gscreen.py:471 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Screen 2 -Using CUSTOM glade file from %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59675 -msgid "mux16" +#: src/emc/usr_intf/gscreen/gscreen.py:477 +#, python-format +msgid "**** Gscreen GLADE ERROR: With screen 2's xml file: %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59702 -msgid "scale" +#: src/emc/usr_intf/gscreen/gscreen.py:479 +msgid "" +"\n" +"**** GSCREEN INFO: No Screen 2 glade file present" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59728 -msgid "PID" +#: src/emc/usr_intf/gscreen/gscreen.py:519 +msgid "No UNITS entry found in [TRAJ] or [AXIS_0] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59739 -msgid "number of components" +#: src/emc/usr_intf/gscreen/gscreen.py:532 +msgid "" +"*** Gscreen ERROR: Asking for a HAL component using a name that already " +"exists." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59767 -msgid "Component" +#: src/emc/usr_intf/gscreen/gscreen.py:585 +msgid "No default jog increments entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59794 -msgid "Add HAL components with this page." +#: src/emc/usr_intf/gscreen/gscreen.py:598 +msgid "No default angular jog increments entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59844 -#, fuzzy -msgid "Thread Command" -msgstr "dirigido" - -#: src/emc/usr_intf/pncconf/pncconf.glade:59854 -msgid "Thread Speed" +#: src/emc/usr_intf/gscreen/gscreen.py:607 +#, python-format +msgid "" +"No DEFAULT_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59906 -#, fuzzy -msgid "Load Command " -msgstr "dirigido" - -#: src/emc/usr_intf/pncconf/pncconf.glade:59952 -msgid "Servo Thread" +#: src/emc/usr_intf/gscreen/gscreen.py:618 +#, python-format +msgid "" +"No MAX_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59965 -msgid "Base Thread" +#: src/emc/usr_intf/gscreen/gscreen.py:625 +msgid "No MAX_VELOCITY found in [TRAJ] of the INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59979 -msgid "Custom Components Commands" +#: src/emc/usr_intf/gscreen/gscreen.py:638 +#, python-format +msgid "" +"No DEFAULT_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60031 +#: src/emc/usr_intf/gscreen/gscreen.py:649 +#, python-format msgid "" -" Motor Encoder Test\n" -"Warning limits switches \n" -" Will not be obeyed" +"No MAX_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60067 -#: src/emc/usr_intf/pncconf/pncconf.glade:60766 -#: src/emc/usr_intf/pncconf/pncconf.glade:61859 -#: src/emc/usr_intf/pncconf/pncconf.glade:62952 -#: src/emc/usr_intf/pncconf/pncconf.glade:64045 -#: src/emc/usr_intf/pncconf/pncconf.glade:65025 -msgid "Invert Motor" +#: src/emc/usr_intf/gscreen/gscreen.py:657 +msgid "No MAX_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60083 -#: src/emc/usr_intf/pncconf/pncconf.glade:60782 -#: src/emc/usr_intf/pncconf/pncconf.glade:61875 -#: src/emc/usr_intf/pncconf/pncconf.glade:62968 -#: src/emc/usr_intf/pncconf/pncconf.glade:64061 -#: src/emc/usr_intf/pncconf/pncconf.glade:65040 -#, fuzzy -msgid "Invert Encoder" -msgstr "Invertir Imagen" - -#: src/emc/usr_intf/pncconf/pncconf.glade:60100 -msgid "Enable Amp" +#: src/emc/usr_intf/gscreen/gscreen.py:663 +msgid "No MIN_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60114 -msgid "Reset Encoder" +#: src/emc/usr_intf/gscreen/gscreen.py:669 +msgid "No MAX_FEED_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60142 -#, fuzzy -msgid "Encoder Scale:" -msgstr "Fin" - -#: src/emc/usr_intf/pncconf/pncconf.glade:60153 -msgid "Dac Offset:" +#: src/emc/usr_intf/gscreen/gscreen.py:674 +msgid "This screen will be orientated for Lathe options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60243 -msgid "Fast Dac Speed" +#: src/emc/usr_intf/gscreen/gscreen.py:727 +msgid "CYCLE_TIME in [DISPLAY] of INI file is missing: defaulting to 100ms" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60258 -#, fuzzy -msgid "Slow Dac Speed" -msgstr "Mostrar v_elocidad de maquina" - -#: src/emc/usr_intf/pncconf/pncconf.glade:60407 -#: src/emc/usr_intf/pncconf/pncconf.glade:61503 -#: src/emc/usr_intf/pncconf/pncconf.glade:62596 -#: src/emc/usr_intf/pncconf/pncconf.glade:63689 -#: src/emc/usr_intf/pncconf/pncconf.glade:64788 -msgid "mm/minute" +#: src/emc/usr_intf/gscreen/gscreen.py:730 +msgid "CYCLE_TIME in [DISPLAY] of INI file is too small: defaulting to 100ms" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60441 -#: src/emc/usr_intf/pncconf/pncconf.glade:61536 -#: src/emc/usr_intf/pncconf/pncconf.glade:62629 -#: src/emc/usr_intf/pncconf/pncconf.glade:63722 -#: src/emc/usr_intf/pncconf/pncconf.glade:64821 -msgid "mm/minute^2" +#: src/emc/usr_intf/gscreen/gscreen.py:732 +#, python-format +msgid "timeout %d" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60550 -#: src/emc/usr_intf/pncconf/pncconf.glade:61644 -#: src/emc/usr_intf/pncconf/pncconf.glade:62737 -#: src/emc/usr_intf/pncconf/pncconf.glade:64930 -msgid "Enable" +#: src/emc/usr_intf/gscreen/gscreen.py:1001 +msgid "" +"**** WARNING GSCREEN: could not understand the window geometry info in " +"hidden preference file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60600 -#: src/emc/usr_intf/pncconf/pncconf.glade:61693 -#: src/emc/usr_intf/pncconf/pncconf.glade:62786 -#: src/emc/usr_intf/pncconf/pncconf.glade:63879 -#: src/emc/usr_intf/pncconf/pncconf.glade:65139 -#, fuzzy -msgid "Seconds" -msgstr "Secundario" - -#: src/emc/usr_intf/pncconf/pncconf.glade:60907 -#: src/emc/usr_intf/pncconf/pncconf.glade:62212 -#: src/emc/usr_intf/pncconf/pncconf.glade:63093 -#: src/emc/usr_intf/pncconf/pncconf.glade:64398 -#: src/emc/usr_intf/pncconf/pncconf.glade:65255 -msgid "DeadBand" +#: src/emc/usr_intf/gscreen/gscreen.py:1089 +msgid "Control powered up and initialized" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61089 -#: src/emc/usr_intf/pncconf/pncconf.glade:61380 -#: src/emc/usr_intf/pncconf/pncconf.glade:62030 -#: src/emc/usr_intf/pncconf/pncconf.glade:62401 -#: src/emc/usr_intf/pncconf/pncconf.glade:63275 -#: src/emc/usr_intf/pncconf/pncconf.glade:63562 -#: src/emc/usr_intf/pncconf/pncconf.glade:64216 -#: src/emc/usr_intf/pncconf/pncconf.glade:64587 -#: src/emc/usr_intf/pncconf/pncconf.glade:65431 -#: src/emc/usr_intf/pncconf/pncconf.glade:65718 -msgid "Original" +#: src/emc/usr_intf/gscreen/gscreen.py:1264 +msgid "Cycle start pressed in AUTO mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61138 -#: src/emc/usr_intf/pncconf/pncconf.glade:61981 -#: src/emc/usr_intf/pncconf/pncconf.glade:63324 -#: src/emc/usr_intf/pncconf/pncconf.glade:64167 -#: src/emc/usr_intf/pncconf/pncconf.glade:65480 -msgid "D:" +#: src/emc/usr_intf/gscreen/gscreen.py:1267 +msgid "Cycle start pressed in MDI mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61148 -#: src/emc/usr_intf/pncconf/pncconf.glade:61971 -#: src/emc/usr_intf/pncconf/pncconf.glade:63334 -#: src/emc/usr_intf/pncconf/pncconf.glade:64157 -#: src/emc/usr_intf/pncconf/pncconf.glade:65490 -msgid "I:" +#: src/emc/usr_intf/gscreen/gscreen.py:1290 +#, python-format +msgid "Please change to tool # %s, then click OK." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61158 -#: src/emc/usr_intf/pncconf/pncconf.glade:61961 -#: src/emc/usr_intf/pncconf/pncconf.glade:63344 -#: src/emc/usr_intf/pncconf/pncconf.glade:64147 -#: src/emc/usr_intf/pncconf/pncconf.glade:65500 -msgid "P:" +#: src/emc/usr_intf/gscreen/gscreen.py:1291 +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +#: src/emc/usr_intf/gscreen/gscreen.py:1789 +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2849 +msgid "INFO:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61168 -#: src/emc/usr_intf/pncconf/pncconf.glade:61392 -#: src/emc/usr_intf/pncconf/pncconf.glade:61951 -#: src/emc/usr_intf/pncconf/pncconf.glade:62389 -#: src/emc/usr_intf/pncconf/pncconf.glade:63354 -#: src/emc/usr_intf/pncconf/pncconf.glade:63574 -#: src/emc/usr_intf/pncconf/pncconf.glade:64137 -#: src/emc/usr_intf/pncconf/pncconf.glade:64575 -#: src/emc/usr_intf/pncconf/pncconf.glade:65510 -#: src/emc/usr_intf/pncconf/pncconf.glade:65730 -msgid "Current" +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +msgid "Can't start spindle manually while MDI busy" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61185 -#: src/emc/usr_intf/pncconf/pncconf.glade:62278 -#: src/emc/usr_intf/pncconf/pncconf.glade:63371 -#: src/emc/usr_intf/pncconf/pncconf.glade:64464 -#: src/emc/usr_intf/pncconf/pncconf.glade:65527 -msgid "PID Tuning" +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +msgid "can't start spindle manually in Auto mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61370 -#: src/emc/usr_intf/pncconf/pncconf.glade:62413 -#: src/emc/usr_intf/pncconf/pncconf.glade:63552 -#: src/emc/usr_intf/pncconf/pncconf.glade:64599 -#: src/emc/usr_intf/pncconf/pncconf.glade:65708 -#, fuzzy -msgid "Direction Setup:" -msgstr "Escanear dirección" +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +msgid "No direction selected for spindle" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61404 -#: src/emc/usr_intf/pncconf/pncconf.glade:62379 -#: src/emc/usr_intf/pncconf/pncconf.glade:63586 -#: src/emc/usr_intf/pncconf/pncconf.glade:64565 -#: src/emc/usr_intf/pncconf/pncconf.glade:65742 +#: src/emc/usr_intf/gscreen/gscreen.py:1331 +#: src/emc/usr_intf/gscreen/gscreen.py:1333 #, fuzzy -msgid "Direction Hold:" -msgstr "Escanear dirección" +msgid "Spindle Speed Preset Entry" +msgstr "Controlar portabrocas:" -#: src/emc/usr_intf/pncconf/pncconf.glade:61414 -#: src/emc/usr_intf/pncconf/pncconf.glade:62369 -#: src/emc/usr_intf/pncconf/pncconf.glade:63596 -#: src/emc/usr_intf/pncconf/pncconf.glade:64555 -#: src/emc/usr_intf/pncconf/pncconf.glade:65752 +#: src/emc/usr_intf/gscreen/gscreen.py:1362 +#: src/emc/usr_intf/gscreen/gscreen.py:1367 #, fuzzy -msgid "Step Space:" -msgstr "Ejecutar programa por paso" +msgid "Manual Tool Index Entry" +msgstr "Cambio manual de herramienta AXIS" -#: src/emc/usr_intf/pncconf/pncconf.glade:61424 -#: src/emc/usr_intf/pncconf/pncconf.glade:62359 -#: src/emc/usr_intf/pncconf/pncconf.glade:63606 -#: src/emc/usr_intf/pncconf/pncconf.glade:64545 -#: src/emc/usr_intf/pncconf/pncconf.glade:65762 -#, fuzzy -msgid "Step Time:" -msgstr "Ejecutar programa por paso" +#: src/emc/usr_intf/gscreen/gscreen.py:1489 +msgid "Entry dialog" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61439 -#: src/emc/usr_intf/pncconf/pncconf.glade:62528 -#: src/emc/usr_intf/pncconf/pncconf.glade:63621 -#: src/emc/usr_intf/pncconf/pncconf.glade:64714 -#: src/emc/usr_intf/pncconf/pncconf.glade:65777 -msgid "Step Timing" +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +msgid "Classicladder realtime component not detected" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:63830 -msgid "enable" +#: src/emc/usr_intf/gscreen/gscreen.py:1617 +msgid "ladder not available - is the realtime component loaded?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65798 +#: src/emc/usr_intf/gscreen/gscreen.py:1691 #, fuzzy -msgid "spindle" -msgstr "Portabrocas:" +msgid "Override Entry" +msgstr "Exceder limites" -#: src/emc/usr_intf/pncconf/pncconf.glade:65881 +#: src/emc/usr_intf/gscreen/gscreen.py:1719 #, fuzzy -msgid "Help Page" -msgstr "Invertir Imagen" +msgid "Machine powered on" +msgstr "Coordenada absoluta" -#: src/emc/usr_intf/pncconf/pncconf.glade:65911 -msgid "" -"X axis:\n" -"Total Travel = 10\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = 0\n" -"Pos Travel Distance = Total Travel - neg travel distance = 10\n" -"Home Position = Origin to Home Position distance = 6\n" -"\n" -"Y axis:\n" -"Total Travel = 8\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = -8\n" -"Pos Travel Distance = Total Travel - neg travel distance = 0\n" -"Home Position = Origin to Home Position distance = 0\n" -"\n" -"Z axis:\n" -"Total Travel = 12\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = -12\n" -"Pos Travel Distance = Total Travel - neg travel distance = 0\n" -"Home Position = Origin to Home Position distance = 0\n" -"\n" -"Note that the direction indicators on the top right show \n" -"movement of the TOOL and on the actual machine,\n" -"often it is the table that actually moves. In that case the \n" -"directions are opposite of shown.\n" -"\n" -"Note this is an example, Many other combinations are \n" -"possible" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:1724 +#, fuzzy +msgid "Machine Estopped!" +msgstr "Mostrar posicion absoluta" -#: src/emc/usr_intf/pncconf/pncconf.glade:65951 -msgid "Mill" +#: src/emc/usr_intf/gscreen/gscreen.py:1727 +msgid "Calculator" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65970 -msgid "" -"Total Travel = 4 + 6 = 10\n" -"Z Home Offset = Origin to Home Switch distance = 10\n" -"Z Neg Travel Distance = Origin to neg limit distance = 0\n" -"Z Pos Travel Distance = Total Travel - neg travel distance = 10\n" -"Z Home Position = Origin to Home Position distance = 4\n" -"\n" -"X axis would be similar but not shown fully for clarity.\n" -"This is just a sample reference other switch combinations are\n" -"possible." +#: src/emc/usr_intf/gscreen/gscreen.py:1857 +#, python-format +msgid "Axes %s are homed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65994 -msgid "Lathe" +#: src/emc/usr_intf/gscreen/gscreen.py:1864 +msgid "All the axes have been homed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66010 -msgid "Diagram" +#: src/emc/usr_intf/gscreen/gscreen.py:1874 +#, python-format +msgid "There are unhomed axes: %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66043 -msgid "Output" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:1879 +#, fuzzy, python-format +msgid "Program loaded: %s" +msgstr "Filtro_del Programa %r fallido" -#: src/emc/usr_intf/pncconf/pncconf.glade:66123 -msgid "Motor steps per revolution:" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:1977 +#, fuzzy +msgid "Manual Spindle Control" +msgstr "Disminuir revoluciones del Portabrocas [F11]" -#: src/emc/usr_intf/pncconf/pncconf.glade:66173 -#: src/emc/usr_intf/pncconf/pncconf.glade:66459 -msgid "Leadscrew Metric Pitch" +#: src/emc/usr_intf/gscreen/gscreen.py:2034 +msgid "Keyboard" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66186 -msgid "Microstep Multiplication Factor:" +#: src/emc/usr_intf/gscreen/gscreen.py:2067 +msgid "Error with launching 'Onboard' on-screen keyboard program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66199 -#: src/emc/usr_intf/pncconf/pncconf.glade:66481 -msgid "Worm turn ratio (Input:Outputl)" +#: src/emc/usr_intf/gscreen/gscreen.py:2215 +#, python-format +msgid "**** GSCREEN INFO: Overriding internal signal call to %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66212 -msgid "Pulley teeth (motor:Leadscrew):" +#: src/emc/usr_intf/gscreen/gscreen.py:2643 +msgid " Zero Origin" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66356 -msgid "TPI " +#: src/emc/usr_intf/gscreen/gscreen.py:2644 +msgid "Offset Origin" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66372 -msgid "Step Motor Scale" +#: src/emc/usr_intf/gscreen/gscreen.py:2659 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing text or type) " +"in INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66472 -msgid "Pulley teeth (encoder:Leadscrew):" +#: src/emc/usr_intf/gscreen/gscreen.py:2661 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing pinname) in " +"INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66537 -msgid "Encoder lines per revolution:" +#: src/emc/usr_intf/gscreen/gscreen.py:2663 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing boldtext) in " +"INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66547 -msgid "X 4 = Pulses/Rev" +#: src/emc/usr_intf/gscreen/gscreen.py:2667 +#, python-format +msgid "" +"**** Gscreen ERROR: invalid message type (%s)in INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66651 -msgid "TPI" +#: src/emc/usr_intf/gscreen/gscreen.py:2699 +msgid "Dialog error - Is the dialog handler missing from the handler file?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66667 -msgid "Encoder Scale" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:2701 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3540 +#, fuzzy +msgid "Manual Toolchange" +msgstr "Cambio manual de herramienta AXIS" -#: src/emc/usr_intf/pncconf/pncconf.glade:66711 -msgid "motor steps per unit:" +#: src/emc/usr_intf/gscreen/gscreen.py:2703 +#: src/emc/usr_intf/gmoccapy/dialogs.py:94 +#: src/emc/usr_intf/gmoccapy/dialogs.py:107 +#: src/emc/usr_intf/gmoccapy/dialogs.py:119 +msgid "Operator Message" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66721 -msgid "encoder pulses per unit:" +#: src/emc/usr_intf/gscreen/gscreen.py:2737 +#: src/emc/usr_intf/gscreen/gscreen.py:2741 +#: src/emc/usr_intf/gmoccapy/dialogs.py:155 +#: src/emc/usr_intf/gmoccapy/dialogs.py:159 +msgid "Restart Entry" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66756 -msgid " " +#: src/emc/usr_intf/gscreen/gscreen.py:2752 +#: src/emc/usr_intf/gmoccapy/dialogs.py:173 +msgid "Enter" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66770 -msgid "Calculated Scale" +#: src/emc/usr_intf/gscreen/gscreen.py:2774 +#, python-format +msgid "Ready to Restart program from line %d" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66848 -msgid "xmaxrpm" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:2807 +#, fuzzy +msgid "Invalid embeded tab configuration" +msgstr "Mostrar configuracion _HAl" -#: src/emc/usr_intf/pncconf/pncconf.glade:66864 -msgid "RPM" +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +msgid "Can't jog multiple axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66877 -msgid "Motor RPM at max speed:" +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +msgid "No axis selected to jog" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66921 -#, fuzzy -msgid "Calculated Axis SCALE:" -msgstr "Eje:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:66934 -msgid "Khz" +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +msgid "No axis selected to move" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66949 -msgid "sec" +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +msgid "Can't home multiple axis - select HOME ALL instead" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67049 -msgid "Distance to acheave max speed:" +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +msgid "No axis selected to home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67077 -#, fuzzy -msgid "Resolution:" -msgstr "Posicion:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:67105 -msgid "mm / encoder pulse" +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +msgid "Can't unhome multiple axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67123 -#, fuzzy -msgid "Motion Data" -msgstr "Restaurar" - -#: src/emc/usr_intf/pncconf/pncconf.glade:67151 -#, fuzzy -msgid "gtk-cancel" -msgstr "Cancelar" - -#: src/emc/task/emctaskmain.cc:467 src/emc/task/emctaskmain.cc:500 -#, fuzzy, c-format -msgid "%s exceeds +X limit" -msgstr "El programa excedio limite de la Maquina" - -#: src/emc/task/emctaskmain.cc:472 src/emc/task/emctaskmain.cc:505 -#, fuzzy, c-format -msgid "%s exceeds +Y limit" -msgstr "El programa excedio limite de la Maquina" - -#: src/emc/task/emctaskmain.cc:477 src/emc/task/emctaskmain.cc:510 -#, fuzzy, c-format -msgid "%s exceeds +Z limit" -msgstr "El programa excedio limite de la Maquina" - -#: src/emc/task/emctaskmain.cc:482 src/emc/task/emctaskmain.cc:515 -#, fuzzy, c-format -msgid "%s exceeds -X limit" -msgstr "El programa excedio limite de la Maquina" - -#: src/emc/task/emctaskmain.cc:487 src/emc/task/emctaskmain.cc:520 -#, fuzzy, c-format -msgid "%s exceeds -Y limit" -msgstr "El programa excedio limite de la Maquina" - -#: src/emc/task/emctaskmain.cc:492 src/emc/task/emctaskmain.cc:525 -#, fuzzy, c-format -msgid "%s exceeds -Z limit" -msgstr "El programa excedio limite de la Maquina" - -#: src/emc/task/emctaskmain.cc:853 -#, c-format -msgid "" -"command (%s) cannot be executed until the machine is out of E-stop and " -"turned on" +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +msgid "No axis selected to unhome" msgstr "" -#: src/emc/task/emctaskmain.cc:973 -#, c-format -msgid "can't do that (%s) in manual mode" +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +msgid "No axis selected for origin zeroing" msgstr "" -#: src/emc/task/emctaskmain.cc:1072 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter idle" +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +msgid "No axis selected for origin touch-off" msgstr "" -#: src/emc/task/emctaskmain.cc:1132 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter reading" +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +msgid "Can't tool touch-off multiple axes" msgstr "" -#: src/emc/task/emctaskmain.cc:1216 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter paused" +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +msgid "No axis selected for tool touch-off" msgstr "" -#: src/emc/task/emctaskmain.cc:1278 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter waiting" +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#: src/emc/usr_intf/gscreen/gscreen.py:3375 +msgid "Error Message" msgstr "" -#: src/emc/task/emctaskmain.cc:1370 -#, c-format -msgid "can't do that (%s) in MDI mode" +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#, python-format +msgid "Tool editor error - is the %s editor available?" msgstr "" -#: src/emc/task/emctaskmain.cc:2015 -msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" +#: src/emc/usr_intf/gscreen/gscreen.py:3377 +#: src/emc/usr_intf/gscreen/gscreen.py:3379 +msgid "Message" msgstr "" -#: src/emc/task/emctaskmain.cc:2084 -msgid "Can't issue MDI command when not homed" +#: src/emc/usr_intf/gscreen/gscreen.py:3409 +#, python-format +msgid "%d RPM" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:48 +#: src/emc/usr_intf/gscreen/gscreen.glade:59 +#: src/emc/usr_intf/gscreen/gscreen.glade:135 +#: src/emc/usr_intf/gscreen/gscreen.glade:176 +#: src/emc/usr_intf/gscreen/gscreen.glade:187 +#: src/emc/usr_intf/gscreen/gscreen.glade:264 +#: src/emc/usr_intf/gscreen/gscreen.glade:306 +#: src/emc/usr_intf/gscreen/gscreen.glade:317 +#: src/emc/usr_intf/gscreen/gscreen.glade:393 +#: src/emc/usr_intf/gscreen/gscreen.glade:434 +#: src/emc/usr_intf/gscreen/gscreen.glade:445 +#: src/emc/usr_intf/gscreen/gscreen.glade:521 +#: src/emc/usr_intf/gscreen/gscreen.glade:562 +#: src/emc/usr_intf/gscreen/gscreen.glade:573 +#: src/emc/usr_intf/gscreen/gscreen.glade:649 +#: src/emc/usr_intf/gscreen/gscreen.glade:690 +#: src/emc/usr_intf/gscreen/gscreen.glade:701 +#: src/emc/usr_intf/gscreen/gscreen.glade:777 +#: src/emc/usr_intf/gscreen/gscreen.glade:818 +#: src/emc/usr_intf/gscreen/gscreen.glade:829 +#: src/emc/usr_intf/gscreen/gscreen.glade:905 +#: src/emc/usr_intf/gscreen/gscreen.glade:946 +#: src/emc/usr_intf/gscreen/gscreen.glade:957 +#: src/emc/usr_intf/gscreen/gscreen.glade:1033 +#: src/emc/usr_intf/gscreen/gscreen.glade:1074 +#: src/emc/usr_intf/gscreen/gscreen.glade:1085 +#: src/emc/usr_intf/gscreen/gscreen.glade:1161 +msgid "0000.0000" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:73 +#: src/emc/usr_intf/gscreen/gscreen.glade:201 +#: src/emc/usr_intf/gscreen/gscreen.glade:331 +#: src/emc/usr_intf/gscreen/gscreen.glade:459 +#: src/emc/usr_intf/gscreen/gscreen.glade:587 +#: src/emc/usr_intf/gscreen/gscreen.glade:715 +#: src/emc/usr_intf/gscreen/gscreen.glade:843 +#: src/emc/usr_intf/gscreen/gscreen.glade:971 +#: src/emc/usr_intf/gscreen/gscreen.glade:1099 +msgid "REL" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:99 +#: src/emc/usr_intf/gscreen/gscreen.glade:227 +#: src/emc/usr_intf/gscreen/gscreen.glade:357 +#: src/emc/usr_intf/gscreen/gscreen.glade:485 +#: src/emc/usr_intf/gscreen/gscreen.glade:613 +#: src/emc/usr_intf/gscreen/gscreen.glade:741 +#: src/emc/usr_intf/gscreen/gscreen.glade:869 +#: src/emc/usr_intf/gscreen/gscreen.glade:997 +#: src/emc/usr_intf/gscreen/gscreen.glade:1125 +msgid "ABS" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:630 +msgid "B" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:758 +msgid "C" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:886 +msgid "U" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1014 +msgid "V" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1298 +#, fuzzy +msgid "G code" +msgstr "Fin" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1392 +msgid "G Codes Active" msgstr "" -#: src/emc/task/emctaskmain.cc:2089 -msgid "Must be in MDI mode to issue MDI command" +#: src/emc/usr_intf/gscreen/gscreen.glade:1451 +msgid "MV:100%" msgstr "" -#: src/emc/task/emctaskmain.cc:2151 -msgid "Can't run a program when not homed" +#: src/emc/usr_intf/gscreen/gscreen.glade:1470 +#, fuzzy +msgid " Mist" +msgstr "Neblina" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1481 +#, fuzzy +msgid " Flood " +msgstr "Enfriador" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1533 +#, fuzzy +msgid " At Speed " +msgstr "Controlar portabrocas:" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1546 +#, fuzzy +msgid " Jog mode" +msgstr "Modalidad-Joint " + +#: src/emc/usr_intf/gscreen/gscreen.glade:1600 +msgid "10 DPM" msgstr "" -#: src/emc/rs274ngc/interp_arc.cc:108 src/emc/rs274ngc/rs274ngc_return.hh:160 -msgid "Zero radius arc" +#: src/emc/usr_intf/gscreen/gscreen.glade:1616 +msgid "10 Ipm" msgstr "" -#: src/emc/rs274ngc/interp_arc.cc:112 src/emc/rs274ngc/interp_arc.cc:279 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:1690 +#, fuzzy +msgid "Status" +msgstr "Restaurar" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1715 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2510 msgid "" -"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " -"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " -"rel_err=%.4f%%" +"Search\n" +" Text:" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:90 -msgid "G4 not allowed with G2 or G3 because they both use P" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1766 +#, fuzzy +msgid "Mode" +msgstr "Restaurar" -#: src/emc/rs274ngc/interp_check.cc:93 -msgid "Line with G10 does not have L1, L10, L11, L2, or L20" +#: src/emc/usr_intf/gscreen/gscreen.glade:1782 +msgid "Main Level" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:94 -msgid "P value not an integer with G10" +#: src/emc/usr_intf/gscreen/gscreen.glade:1823 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3678 +msgid "Themes" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:95 -msgid "P value out of range (0-9) with G10 L2 or L20" +#: src/emc/usr_intf/gscreen/gscreen.glade:1847 +#, fuzzy +msgid "Relative Text Color" +msgstr "Mostrar posicion relativa" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1895 +msgid "DTG Text Color" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:96 -msgid "P value out of range with G10 L1 or G10 L10" +#: src/emc/usr_intf/gscreen/gscreen.glade:1916 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3710 +msgid "Warning Audio" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:100 -msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." +#: src/emc/usr_intf/gscreen/gscreen.glade:1926 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3723 +msgid "Alert Audio" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:258 -msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:1947 +#, fuzzy +msgid "Grid Size" +msgstr "Tamańo:" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1986 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4119 +msgid "Starting RPM" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:264 -msgid "E word with no G76, M66, M67 or M68 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2015 +msgid "Metric\n" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:269 -msgid "H word with no G43 or G76 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2030 +msgid "" +" Display\n" +"Aux Screen" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:275 -msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2045 +msgid "" +"Diameter\n" +" Mode" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:281 -msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2062 +#: src/emc/usr_intf/gscreen/gscreen.glade:3096 +#, fuzzy +msgid "" +" Show\n" +"Offsets" +msgstr "_Mostrar medidas" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2079 +msgid "" +"Show\n" +"DTG" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:287 -msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2096 +msgid "" +" Gscreen\n" +"Fullscreen" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:297 +#: src/emc/usr_intf/gscreen/gscreen.glade:2118 msgid "" -"L word with no G10, cutter compensation, canned cycle, digital/analog input, " -"or NURBS code" +" On M7 Use\n" +"Aux Coolant" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:309 +#: src/emc/usr_intf/gscreen/gscreen.glade:2131 msgid "" -"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " -"M53 M62 M63 M64 M65 M66 or user M code to use it" +" On M8 Use\n" +"Aux Coolant" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:314 -msgid "P value not an integer with M19 G2 or G3" +#: src/emc/usr_intf/gscreen/gscreen.glade:2144 +msgid "Hide Pointer" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:316 -msgid "P value must be 0,1,or 2 with M19" +#: src/emc/usr_intf/gscreen/gscreen.glade:2156 +msgid "" +" Desktop\n" +"Notification" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:318 -msgid "P value should be 1 or greater with G2 or G3" +#: src/emc/usr_intf/gscreen/gscreen.glade:2228 +#: src/emc/usr_intf/gscreen/gscreen.glade:2368 +msgid "Debug" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:326 +#: src/emc/usr_intf/gscreen/gscreen.glade:2263 +#, fuzzy +msgid "Alarm History" +msgstr "Historial:" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2281 msgid "" -"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " -"code that uses it" +" Launch\n" +"Halshow" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:336 -msgid "R value must be within 0..360 with M19" +#: src/emc/usr_intf/gscreen/gscreen.glade:2293 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6449 +#, fuzzy +msgid "Calibration" +msgstr "_Calibración" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2304 +#, fuzzy +msgid "Halmeter" +msgstr "H_AL-metro" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2315 +msgid "" +"linuxcnc\n" +" Status" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:138 -msgid "You must specify both X and Y coordinates for Control Points" +#: src/emc/usr_intf/gscreen/gscreen.glade:2327 +#, fuzzy +msgid "Halscope" +msgstr "HA_L-escopio" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2338 +msgid "Ladder" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:141 -msgid "Can specify P without X and Y only for the first control point" +#: src/emc/usr_intf/gscreen/gscreen.glade:2386 +msgid "Tooleditor" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:144 -msgid "Must specify positive weight P for every Control Point" +#: src/emc/usr_intf/gscreen/gscreen.glade:2404 +msgid "" +"Offset\n" +" Page" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:147 -msgid "Cannot make a NURBS with 0 feedrate" +#: src/emc/usr_intf/gscreen/gscreen.glade:2572 +#: src/emc/usr_intf/gscreen/gscreen.glade:2749 +#: src/emc/usr_intf/gscreen/gscreen.glade:3156 +msgid "\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:182 -msgid "Cannot use G5.3 without G5.2 first" +#: src/emc/usr_intf/gscreen/gscreen.glade:2584 +#, fuzzy +msgid "Tool Setting" +msgstr "Restaurar" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2648 +#, fuzzy +msgid "" +"Single\n" +" Step" +msgstr "Disminuir revoluciones del Portabrocas [F11]" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2661 +#, fuzzy +msgid "" +"Run At\n" +" Line" +msgstr "Tiempo:" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2673 +msgid "" +"Change \n" +" View" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:183 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:2760 +#, fuzzy +msgid "Homing\n" +msgstr "Restaurar" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2781 +#, fuzzy msgid "" -"You must specify a number of control points at least equal to the order L = " -"%d" +"Ignore\n" +"Limits" +msgstr "Todos los archivos" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2810 +#, fuzzy +msgid "" +" Set\n" +"Override" +msgstr "Control de avanze" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2824 +msgid "Graphics\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:212 -msgid "Cannot convert spline with cutter radius compensation" +#: src/emc/usr_intf/gscreen/gscreen.glade:2838 +#, fuzzy +msgid "" +"Menu\n" +"Level" +msgstr "Seleccionar nivel de _depuracion" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2851 +msgid "" +" Launch\n" +"Keyboard" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:222 -msgid "Splines must be in the XY plane" +#: src/emc/usr_intf/gscreen/gscreen.glade:2868 +#, fuzzy +msgid "Select Buttons" +msgstr "Restaurar" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2955 +#, fuzzy +msgid "" +"Unhome \n" +" All" +msgstr "Restaurar todos los ejes" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2967 +#, fuzzy +msgid "" +"Unhome\n" +" Axis" +msgstr "Restaurar _%s-Eje" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2979 +#: src/emc/usr_intf/gscreen/gscreen.glade:3084 +#, fuzzy +msgid "" +"Toggle\n" +"Readout" +msgstr "Medio enfriador activar/desactivar" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3004 +msgid "" +"Jogging\n" +" Mode" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:227 -msgid "Splines may not have motion in Z, A, B, or C" +#: src/emc/usr_intf/gscreen/gscreen.glade:3016 +msgid "" +"coordinate\n" +" System" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:231 -msgid "Must specify both I and J with G5.1" +#: src/emc/usr_intf/gscreen/gscreen.glade:3060 +msgid "" +"Index\n" +" Tool" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:250 -msgid "Must specify both I and J, or neither" +#: src/emc/usr_intf/gscreen/gscreen.glade:3072 +#, fuzzy +msgid "" +"Spindle\n" +"Controls" +msgstr "Ctrl-M" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3195 +#, fuzzy +msgid "Open" +msgstr "_Abrir" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3205 +msgid "" +" Block\n" +"Delete" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:261 -msgid "Must specify both P and Q with G5" +#: src/emc/usr_intf/gscreen/gscreen.glade:3217 +msgid "" +"Optional\n" +" Stop" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:362 +#: src/emc/usr_intf/gscreen/gscreen.glade:3229 msgid "" -"The move just after exiting cutter compensation mode must be straight, not " -"an arc" +" Full\n" +"View" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:370 -msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" +#: src/emc/usr_intf/gscreen/gscreen.glade:3265 +msgid "" +"Next\n" +" Tab" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:382 -#: src/emc/rs274ngc/interp_convert.cc:4266 -msgid "Cannot feed with zero spindle speed in feed per rev mode" +#: src/emc/usr_intf/gscreen/gscreen.glade:3285 +#, fuzzy +msgid "" +" Feed\n" +"Override" +msgstr "Control de avanze" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3298 +#, fuzzy +msgid "" +"Spindle\n" +"Override" +msgstr "Controlar portabrocas:" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3311 +#, fuzzy +msgid "" +" Rapid\n" +"Override" +msgstr "Controlar portabrocas:" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3332 +#, fuzzy +msgid "" +" Jog\n" +"Speed" +msgstr "Velocidad:" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3345 +#, fuzzy +msgid "" +" Jog\n" +"Increments" +msgstr "Elegir incremento del avance" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3361 +msgid "" +"Adjust\n" +"Rotary" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:393 -#: src/emc/rs274ngc/interp_convert.cc:399 -#: src/emc/rs274ngc/interp_convert.cc:408 -#: src/emc/rs274ngc/interp_convert.cc:414 -#: src/emc/rs274ngc/interp_convert.cc:423 -#: src/emc/rs274ngc/interp_convert.cc:429 -#, c-format -msgid "%c word missing in absolute center arc" +#: src/emc/usr_intf/gscreen/gscreen.glade:3383 +msgid "" +"Change\n" +" View" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:649 +#: src/emc/usr_intf/gscreen/gscreen.glade:3431 msgid "" -"Radius of cutter compensation entry arc is not greater than the tool radius" +" Pan\n" +"Vertical" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:868 -#: src/emc/rs274ngc/interp_convert.cc:878 src/emc/rs274ngc/interp_queue.cc:592 +#: src/emc/usr_intf/gscreen/gscreen.glade:3444 msgid "" -"Arc move in concave corner cannot be reached by the tool without gouging" +" Pan\n" +"Horizontal" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:904 -msgid "Arc to arc motion is invalid because the arcs have the same center" +#: src/emc/usr_intf/gscreen/gscreen.glade:3457 +#, fuzzy +msgid "" +" Rotate\n" +"Horiontal" +msgstr "Posicion:" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3470 +msgid "" +" Rotate\n" +"Vertical" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:907 +#: src/emc/usr_intf/gscreen/gscreen.glade:3491 msgid "" -"Arc to arc motion makes a corner the compensated tool can't fit in without " -"gouging" +"Search\n" +" Bwd" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1036 -#: src/emc/rs274ngc/interp_convert.cc:1037 -#: src/emc/rs274ngc/interp_convert.cc:1038 -#: src/emc/rs274ngc/interp_convert.cc:3733 -#: src/emc/rs274ngc/interp_convert.cc:3736 -#: src/emc/rs274ngc/interp_convert.cc:3739 src/emc/rs274ngc/interp_find.cc:97 -#, c-format -msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" +#: src/emc/usr_intf/gscreen/gscreen.glade:3503 +msgid "" +"Search\n" +" Fwd" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1494 -msgid "Cannot change control mode with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3561 +#, fuzzy +msgid "" +" Reload\n" +"Program" +msgstr "Volver a cargar programa" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3604 +msgid "" +" Clear\n" +"status" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1607 -msgid "Cannot change coordinate systems with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3634 +msgid "G54" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1851 -#, c-format -msgid "G%d.1 with no D word" +#: src/emc/usr_intf/gscreen/gscreen.glade:3650 +msgid "calc" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1854 -#, c-format -msgid "G%d.1 with L word, but plane is not G18" +#: src/emc/usr_intf/gscreen/gscreen.glade:3725 +msgid "test" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1865 -#, c-format -msgid "G%d requires D word to be a whole number" +#: src/emc/usr_intf/gscreen/gscreen.glade:3728 +msgid "test2" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1872 -#, c-format -msgid "G%d with lathe tool, but plane is not G18" +#: src/emc/usr_intf/gscreen/gscreen.glade:3778 +msgid "Data Entry" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2271 -msgid "Cannot set reference point with cutter compensation in effect" +#: src/emc/usr_intf/gscreen/gscreen.glade:3805 +#, fuzzy +msgid "Calculator Entry" +msgstr "Restaurar" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3894 +#, fuzzy +msgid "Program Restart" +msgstr "_Mostrar medidas" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3909 +msgid "" +"Highlighting the run-at-line with the\n" +"up / down buttons or entering the line\n" +"directly." msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2786 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:3923 msgid "" -"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" +"Line\n" +" Up" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2787 -#, c-format -msgid "BUG: restore from level %d !?" +#: src/emc/usr_intf/gscreen/gscreen.glade:3946 +msgid "" +" Line\n" +"Down" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2788 -#, c-format -msgid "BUG: restore to level %d !?" +#: src/emc/usr_intf/gscreen/gscreen.glade:4028 +msgid "S 1000" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2807 -#, c-format -msgid "M7x: restore_settings G20/G21 failed: '%s'" +#: src/emc/usr_intf/gscreen/gscreen.glade:4098 +msgid " FWD" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2819 -#, c-format -msgid "M7x: restore_settings failed executing: '%s': %s" +#: src/emc/usr_intf/gscreen/gscreen.glade:4133 +msgid " REV" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2885 -msgid "Cannot set motion output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen2.glade:35 +msgid "screen 2" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2886 -msgid "No valid P word with M62" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:403 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:884 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:923 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:934 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:949 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1099 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1102 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1156 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1163 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1166 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2148 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2157 +msgid "**** GMOCCAPY INFO ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2890 -msgid "Cannot set motion digital output with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:404 +msgid "**** no valid probe config in INI File ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2891 -msgid "No valid P word with M63" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:405 +msgid "**** disabled tool measurement ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2895 -#: src/emc/rs274ngc/interp_convert.cc:2900 -msgid "Cannot set auxiliary digital output with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:770 +msgid "**** GMOCCAPY ERROR : ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2896 -msgid "No valid P word with M64" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:772 +#, python-format +msgid "" +"**** gmoccapy can only handle 4 axis, ****\n" +"**** but you have given %d through your INI file ****\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2901 -msgid "No valid P word with M65" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:774 +msgid "" +"**** gmoccapy will not start ****\n" +"\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2931 -msgid "invalid P-word with M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:786 +#, fuzzy, python-format +msgid "Home axis %s" +msgstr "Restaurar _%s-Eje" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:885 +msgid "**** To many increments given in INI File for this screen ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2946 -msgid "Cannot wait for digital input with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:886 +msgid "**** Only the first 10 will be reachable through this screen ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2958 -msgid "Cannot wait for analog input with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:924 +msgid "**** gmoccapy screen 2 found ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2973 -msgid "Cannot set motion analog output with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:929 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1055 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1177 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1225 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1844 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2190 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2200 +msgid "**** GMOCCAPY ERROR ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2974 -msgid "Invalid analog index with M67" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:930 +msgid "**** screen 2 GLADE ERROR: ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2980 -msgid "Cannot set auxiliary analog output with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:935 +msgid "**** No gmoccapy2.glade file present ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2981 -msgid "Invalid analog index with M68" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:950 +msgid "**** Invalid embeded tab configuration ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3012 -msgid "Need non-negative Q-word to specify tool number with M61" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:951 +msgid "**** No tabs will be added! ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3087 -msgid "Q word with M19 requires a value > 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:964 +msgid "ERROR, trying to initialize the user tabs or panaels, check for typos" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3115 -msgid "Cannot restore context from invalid stack frame - missing M70/M73?" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1056 +msgid "**** Did not find a toolfile file in [EMCIO] TOOL_TABLE ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3156 -#: src/emc/rs274ngc/interp_convert.cc:3173 -#: src/emc/rs274ngc/interp_convert.cc:3188 -#: src/emc/rs274ngc/interp_convert.cc:3202 -#: src/emc/rs274ngc/interp_convert.cc:3216 -msgid "Cannot enable overrides with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1100 +msgid "**** audio available! ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3163 -#: src/emc/rs274ngc/interp_convert.cc:3178 -#: src/emc/rs274ngc/interp_convert.cc:3193 -#: src/emc/rs274ngc/interp_convert.cc:3207 -#: src/emc/rs274ngc/interp_convert.cc:3221 -msgid "Cannot disable overrides with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1103 +msgid "**** no audio available! ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3325 -#: src/emc/rs274ngc/interp_convert.cc:3326 -#: src/emc/rs274ngc/interp_convert.cc:3327 -#, c-format -msgid "Indexing axis %c can only be moved with G0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1104 +msgid "**** PYGST libray not installed? ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3334 -#: src/emc/rs274ngc/interp_convert.cc:3336 -#: src/emc/rs274ngc/interp_convert.cc:3338 -#, c-format -msgid "Indexing axis %c can only be moved alone" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1157 +msgid "**** virtual keyboard program found : " msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3433 -msgid "Cannot probe with feed per rev mode" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1164 +msgid "**** virtual keyboard program found : " msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3481 -msgid "Cannot change retract mode with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1167 +msgid "" +"**** No virtual keyboard installed, we checked for and ." msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3515 -msgid "G10 L1 without offsets has no effect" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1178 +msgid "**** Error with launching virtual keyboard," msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3621 -msgid "Q number in G10 is not an integer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1179 +msgid "**** is onboard or matchbox-keyboard installed? ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3622 -msgid "Invalid tool orientation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1193 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1875 +msgid "interrupt running macro" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3721 -msgid "I J words not allowed with G10 L2" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1226 +msgid "**** Did not find a parameter file in [RS274NGC] PARAMETER_FILE ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3742 -msgid "" -"Cannot change the active coordinate system with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1294 +msgid "Select the file you want to be loaded at program start" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3750 -msgid "R not allowed in G10 L20" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1329 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1353 +#, python-format +msgid "**** GMOCCAPY ERROR **** /n Message type %s not suported" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4323 -msgid "Spindle not turning in G33" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1462 +msgid "Unknown error type and no error text given" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4333 -msgid "Spindle not turning in G33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1478 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1840 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1847 +msgid "Important Warning" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4376 -msgid "BUG: An axis incorrectly moved along with an indexer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1498 +msgid "ERROR : External ESTOP is set, could not change state!" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4389 -msgid "BUG: trying to index incorrect axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1511 +msgid "ERROR : Could not switch the machine on, is limit switch aktivated?" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4481 -msgid "Cannot use G76 threading cycle with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1730 +msgid "It is not possible to change to MDI Mode at the moment" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4484 -msgid "In G76, I must not be 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1754 +msgid "It is not possible to change to Auto Mode at the moment" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4486 -msgid "In G76, J must be greater than 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1838 +msgid "" +"\n" +"**** No subroutine folder or program prefix is given in the ini file **** \n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4488 -msgid "In G76, K must be greater than J" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1839 +msgid "**** so the corresponding file could not be found ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4631 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1845 +#, python-format msgid "" -"Length of cutter compensation entry move is not greater than the tool radius" +"\n" +"**** File %s of the macro could not be found ****\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4850 -msgid "Zero degree inside corner is invalid for cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1846 +#, python-format +msgid "**** we searched in subdirectory %s ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4888 -#: src/emc/rs274ngc/interp_convert.cc:4896 -msgid "" -"Arc to straight motion makes a corner the compensated tool can't fit in " -"without gouging" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1851 +msgid "Enter value:" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4980 -msgid "Cannot change tools with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1852 +#, python-format +msgid "Set parameter %s to:" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:5101 -msgid "Cannot change tool offset with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1854 +msgid "conversion error" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:590 -#, c-format +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1855 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3610 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3634 +msgid "Conversion error !" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1856 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3299 msgid "" -"BUG: cutter compensation has generated an invalid arc with mismatched radii " -"r1 %f r2 %f\n" +"Please enter only numerical values\n" +"Values have not been applied" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:612 -msgid "BUG: Unsupported plane in cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2149 +#, python-brace-format +msgid "**** replaced {0} to {1} ****" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:622 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2158 msgid "" -"Straight traverse in concave corner cannot be reached by the tool without " -"gouging" +"\n" +"**** found more than 9 macros, only the first 9 will be used ****" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:650 -#, c-format -msgid "BUG: Unsupported plane [%d] in cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2191 +#, python-format +msgid "**** %s ****" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:661 -msgid "" -"Straight feed in concave corner cannot be reached by the tool without gouging" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2201 +#, python-format +msgid "**** No widget named: %s to sensitize ****" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:628 -msgid "Cannot feed with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2366 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1561 +msgid "No tool description available" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:629 -msgid "Cannot use inverse time feed with canned cycles" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2591 +#, python-format +msgid "Halo, welcome to the test message %d" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:630 -msgid "Cannot use canned cycles with cutter compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2732 +msgid "Hal Pin is low, Access denied" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:818 -msgid "G17 canned cycle is not possible on a machine without Z axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2734 +msgid "wrong code entered, Access denied" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1004 -msgid "G17.1 canned cycle is not possible on a machine without W axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2735 +msgid "Just to warn you" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1220 -msgid "G19 canned cycle is not possible on a machine without X axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2810 +msgid "ERROR : No limit switch is active, ignore limits will not be set." msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1388 -msgid "G19.1 canned cycle is not possible on a machine without U axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2850 +msgid "Classicladder real-time component not detected" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1613 -msgid "G18 canned cycle is not possible on a machine without Y axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2937 +msgid "Something went wrong, we have an unknown spindle widget" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1780 -msgid "G18.1 canned cycle is not possible on a machine without V axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3046 +msgid "Do you really want to delete the MDI history?\n" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:170 -msgid "Cannot use polar coordinates with G53" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3047 +msgid "this will not delete the MDI History file, but will\n" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 -#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 -#: src/emc/rs274ngc/interp_find.cc:347 -msgid "Cannot specify X or Y words with polar coordinate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3048 +msgid "delete the listbox entries for this session" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:272 -msgid "Must specify angle in polar coordinate if at the origin" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3049 +msgid "Attention!!" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:338 -msgid "" -"Incremental motion with polar coordinates is indeterminate when at the origin" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3076 +msgid "This button will show or hide the keyboard" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:348 -msgid "G91 motion with polar coordinates is indeterminate when at the origin" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3196 +#, python-format +msgid "Offset %s could not be set, because off unknown axis" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:720 -#, c-format -msgid "Requested tool %d not found in the tool table" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3197 +msgid "Wrong offset setting!" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:154 -msgid "Cannot use polar coordinate on a machine lacking X or Y axes" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3202 +msgid "Enter value for diameter" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:155 -msgid "Cannot use polar coordinate except in G17 plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3203 +msgid "Set diameter to:" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:156 -msgid "Cannot specify both polar coordinate and X word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3206 +msgid "Enter value for radius" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:157 -msgid "Cannot specify both polar coordinate and Y word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3207 +msgid "Set radius to:" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:178 -#: src/emc/rs274ngc/interp_internal.cc:190 -#: src/emc/rs274ngc/interp_internal.cc:203 -msgid "Polar coordinates can only be used for motion" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3210 +#, fuzzy, python-format +msgid "Enter value for axis %s" +msgstr "Activar cuarto eje" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3211 +#, python-format +msgid "Set axis %s to:" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1143 src/emc/rs274ngc/interp_read.cc:1147 -#, c-format -msgid "Bad character '\\%03o' used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3215 +msgid "Conversion error in btn_set_value" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1147 -#, c-format -msgid "Bad character '%c' used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3216 +msgid "Conversion error in btn_set_value!" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1671 -msgid "Left bracket missing after 'while'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3217 +msgid "Please enter only numerical values. Values have not been applied" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1686 -msgid "Left bracket missing after 'repeat'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3232 +msgid "" +"you did not selected a system to be changed to, so nothing will be changed" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1701 -msgid "Left bracket missing after 'if'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3640 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3654 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3658 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3673 +msgid "Important Warning!" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1716 -msgid "Left bracket missing after 'elseif'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3284 +msgid "Enter the block height" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1919 -msgid "Cannot read current position with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3285 +msgid "Block height measured from base table" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1934 -msgid "Expected # reading parameter" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3297 +msgid "Conversion error in btn_block_height" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1936 -msgid "Expected ] reading bracketed parameter" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3298 +msgid "Conversion error in btn_block_height!" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2608 -#, c-format -msgid "bad number format (conversion failed) parsing '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3536 +msgid "Please remove the mounted tool and press OK when done" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2609 -#, c-format -msgid "bad number format (trailing characters) parsing '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3539 +#, python-brace-format +msgid "" +"Please change to tool\n" +"\n" +"# {0:d} {1}\n" +"\n" +" then click OK." msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2699 -msgid "Calculation resulted in 'not a number'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3549 +msgid "Tool Change has been aborted!\n" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2701 -msgid "Calculation resulted in 'infinity'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3550 +msgid "The old tool will remain set!" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2994 -#, c-format -msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3570 +msgid "No or more than one tool selected in tool table" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3106 -msgid "Multiple U words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3571 +msgid "Please select only one tool in the table" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3122 -msgid "Multiple V words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3573 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3580 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3589 +msgid "Warning Tool Touch off not possible!" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3138 -msgid "Multiple W words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3577 +msgid "you can not touch of a tool, witch is not mounted in the spindle" msgstr "" -#: src/emc/rs274ngc/interp_o_word.cc:95 -#, c-format -msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3578 +msgid "your selection has been reseted to the tool in spindle" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:161 -#, c-format -msgid "Named parameter #<%s> not defined" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3586 +msgid "" +"Tool touch off is not possible with cutter radius compensation switched on!\n" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:191 -#, c-format -msgid "cant open ini file '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3587 +msgid "Please emit an G40 before tool touch off" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:208 -#, c-format -msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3597 +msgid "Real big error!" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:232 -#, c-format -msgid "fetch_hal_param: hal_init(%s): %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3598 +msgid "" +"You managed to come to a place that is not possible in on_btn_tool_touchoff" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:233 -#, c-format -msgid "fetch_hal_param: hal_ready(): %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3602 +#, python-format +msgid "Enter value for axis %s to set:" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:370 -#, c-format -msgid "Internal error: Could not assign #<%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3603 +#, python-brace-format +msgid "Set parameter of tool {0:d} and axis {1} to:" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:378 -#, c-format -msgid "Cannot assign to read-only parameter #<%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3608 +#, python-format +msgid "Conversion error because of wrong entry for touch off axis %s" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:682 -#, c-format -msgid "BUG: lookup_named_param(%s): unhandled index=%fn" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3628 +msgid "Enter the tool number as integer " msgstr "" -#: src/emc/rs274ngc/rs274ngc_pre.cc:1269 src/emc/rs274ngc/rs274ngc_pre.cc:1344 -msgid "Queue is not empty after tool change" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3629 +msgid "Select the tool to change" msgstr "" -#: src/emc/rs274ngc/rs274ngc_pre.cc:1648 -#, c-format -msgid "Unable to open parameter file: '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3631 +msgid "Conversion error because of wrong entry for tool number\n" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:4 -msgid "A file is already open" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3632 +msgid "enter only integer nummbers" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:5 -msgid "All axes missing with g92" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3657 +msgid "Selected tool is already in spindle, no change needed." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:6 -msgid "All axes missing with motion code" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3653 +msgid "" +"you selected no or more than one tool, the tool selection must be unique" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:7 -msgid "Arc radius too small to reach end point" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3672 +msgid "Could not understand the entered tool number. Will not change anything" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:8 -msgid "Argument to acos out of range" +#: src/emc/usr_intf/gmoccapy/dialogs.py:33 +#: src/emc/usr_intf/gmoccapy/dialogs.py:38 +msgid "Enter System Unlock Code" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:9 -msgid "Argument to asin out of range" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:10 -msgid "Attempt to divide by zero" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter the value to set" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:11 -msgid "Attempt to raise negative to non integer power" +#: src/emc/usr_intf/gmoccapy/notification.py:205 +#, python-format +msgid "Error trying to delet the message with number %s" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:12 -msgid "Bad format unsigned integer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:409 +msgid "left rotate, middle move, right zoom" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:13 -msgid "Bad number format" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:413 +msgid "left zoom, middle move, right rotate" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:14 -msgid "Bug bad g code modal group 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:417 +msgid "left move, middle rotate, right zoom" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:15 -msgid "Bug code not g0 or g1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:421 +msgid "left zoom, middle rotate, right move" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:16 -msgid "Bug code not g17 g18 or g19" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:425 +msgid "left move, middle zoom, right rotate" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:17 -msgid "Bug code not g20 or g21" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:429 +msgid "left rotate, middle zoom, right move" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:18 -msgid "Bug code not g28 or g30" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:526 +#, fuzzy +msgid "clear plot" +msgstr "Borrar barra de herramientas" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:585 +#, fuzzy +msgid "view perspective" +msgstr "Vista en perspectiva" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:608 +msgid "view along the X axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:19 -msgid "Bug code not g2 or g3" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:633 +msgid "view along the Y axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:20 -msgid "Bug code not g4 g10 g28 g30 g53 or g92 series" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:658 +msgid "view along the Z axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:21 -msgid "Bug code not g61 g61.1 or g64" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:685 +msgid "Show or hide tool path" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:22 -msgid "Bug code not g90 or g91" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:708 +msgid "Show or hide dimensions" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:23 -msgid "Bug code not g98 or g99" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:731 +msgid "" +"view along the Y axis from positive to negative as viewn for a back tool " +"lathe" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:24 -msgid "Bug code not in g92 series" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:791 +#, fuzzy +msgid "Offset Page" +msgstr "Invertir Imagen" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:809 +#, fuzzy +msgid "Tooledit" +msgstr "Ordenar herramienta" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:831 +#, fuzzy +msgid "File Selection" +msgstr "Escanear dirección" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:869 +msgid "Toggle between metric and imperial units" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:25 -msgid "Bug code not in range g54 to g593" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:887 +msgid "Switch DRO to DTG mode" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:26 -msgid "Bug code not m0 m1 m2 m30 m60" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:905 +msgid "Toggle between machine and relative coordinates" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:27 -msgid "Bug distance mode not g90 or g91" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:928 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:946 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:963 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:980 +msgid "Klick to toggle through the DRO modes" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:28 -msgid "Bug function should not have been called" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1253 +#, fuzzy +msgid "Ignore limits" +msgstr "Exceder limites" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1321 +#, fuzzy +msgid "Jogging" +msgstr "Restaurar" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1430 +msgid "Information over the tool in spindle" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:29 -msgid "Bug in tool radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1448 +#, fuzzy +msgid "Tool no." +msgstr "Cambio de pieza" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1474 +msgid "Diameter" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:30 -msgid "Bug plane not xy yz or xz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1503 +msgid "offset z" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:31 -msgid "Bug side not right or left" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1532 +msgid "offset x" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:32 -msgid "Bug unknown motion code" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1580 +#, fuzzy +msgid "Tool information" +msgstr "Mostrar configuracion _HAl" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1592 +msgid "G and M code information as well as speed and feed" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:33 -msgid "Bug unknown operation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1611 +#, fuzzy +msgid "active_mcodes_label" +msgstr "Activar Codigo-G:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1663 +#, fuzzy +msgid "active_gcodes_label" +msgstr "Activar Codigo-G:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1717 +#, fuzzy +msgid "G-Code" +msgstr "Restaurar" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1730 +msgid "The name and location of the loaded program" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:34 -msgid "Cannot change axis offsets with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1742 +#, fuzzy +msgid "No Program loaded" +msgstr "Filtro_del Programa %r fallido" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1750 +#, fuzzy +msgid "Program" +msgstr "Restaurar" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1800 +msgid "Vel." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:35 -msgid "Cannot create backup file" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1814 +msgid "Displays the current velocity" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:36 -msgid "Cannot do g1 with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1838 +msgid "adjust max vel of machine" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:37 -msgid "Cannot do zero repeats of cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1854 +msgid "Max. Velocity" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:38 -msgid "Cannot make arc with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1885 +msgid "Displayes the programmed feed rate" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:39 -msgid "Cannot open backup file" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1904 +#, fuzzy +msgid "reset feed override to 100 %" +msgstr "Control de avanze de 0% hasta 100%" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1922 +#, fuzzy +msgid "adjust feed override" +msgstr "Control de avanze" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1941 +#, fuzzy +msgid "Feed Override [%]" +msgstr "Control de avanze" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2034 +#, fuzzy +msgid "Cooling" +msgstr "Restaurar" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2285 +#, fuzzy +msgid "Spindle [rpm]" +msgstr "Restaurar" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2377 +msgid "" +"Search\n" +" back" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:40 -msgid "Cannot open variable file" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2394 +msgid "" +"Search\n" +" fwd" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:41 -msgid "Cannot probe with cutter radius comp on" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2446 +#, fuzzy +msgid "" +"Replace\n" +" Text:" +msgstr "relativo" -#: src/emc/rs274ngc/rs274ngc_return.hh:42 -msgid "Cannot probe with zero feed rate" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2456 +#, fuzzy +msgid "" +"Replace\n" +" All" +msgstr "relativo" -#: src/emc/rs274ngc/rs274ngc_return.hh:43 -msgid "Cannot put a b in canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2470 +msgid "" +"Ignore\n" +" Case" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:44 -msgid "Cannot put a c in canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2616 +msgid "Start as fullscreen" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:45 -msgid "Cannot put an a in canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2631 +msgid "Start maximized" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:46 -msgid "Cannot turn cutter radius comp on when on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2646 +msgid "Start as window" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:47 -msgid "Cannot use axis values with g80" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2670 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4426 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4943 +msgid "X Pos." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:48 -msgid "Cannot use axis values without a g code that uses them" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2683 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4437 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4928 +msgid "Y Pos." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:49 -msgid "Cannot use g28 or g30 with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2698 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4855 +msgid "Width" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:50 -msgid "Cannot use g53 incremental" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2713 +msgid "Height" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:51 -msgid "Cannot use g53 with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2811 +msgid "hide cursor" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:52 -msgid "Cannot use two g codes that both use axis values" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2830 +#, fuzzy +msgid "Main Window" +msgstr "Restaurar" -#: src/emc/rs274ngc/rs274ngc_return.hh:53 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2857 #, fuzzy -msgid "Command too long" -msgstr "Mostrar posicion" +msgid "Show keyboard on offset" +msgstr "_Mostrar medidas" -#: src/emc/rs274ngc/rs274ngc_return.hh:54 -msgid "Current point same as end point of arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2871 +msgid "Show keyboard on tooledit" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:55 -msgid "Dwell time missing with g4" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2885 +msgid "Show keyboard on MDI" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:56 -msgid "Dwell time p word missing with g82" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2899 +msgid "Show keyboard on EDIT" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:57 -msgid "Dwell time p word missing with g86" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2913 +msgid "Show keyboard on load file" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:58 -msgid "Dwell time p word missing with g88" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2931 +#, fuzzy +msgid "Keyboard" +msgstr "Restaurar" -#: src/emc/rs274ngc/rs274ngc_return.hh:59 -msgid "Dwell time p word missing with g89" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2959 +#, fuzzy +msgid "show preview" +msgstr "Perspectiva lateral" -#: src/emc/rs274ngc/rs274ngc_return.hh:60 -msgid "Equal sign missing in parameter setting" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2973 +#, fuzzy +msgid "show offsets" +msgstr "_Mostrar medidas" -#: src/emc/rs274ngc/rs274ngc_return.hh:61 -msgid "F word missing with inverse time arc move" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2991 +msgid "On Touch off" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:62 -msgid "F word missing with inverse time g1 move" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3005 +msgid "" +" Display \n" +"Aux Screen" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:63 -msgid "File ended with no percent sign" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3052 +#, fuzzy +msgid "Relative Color" +msgstr "Mostrar posicion relativa" -#: src/emc/rs274ngc/rs274ngc_return.hh:64 -msgid "File ended with no percent sign or program end" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3079 +msgid "Absolute Color" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:65 -msgid "File name too long" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3110 +msgid "DTG Color" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:66 -msgid "G code out of range" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3139 +msgid "Use Auto Units" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:67 -msgid "I word given for arc in yz plane" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3159 +#, fuzzy +msgid "Show the DRO Button" +msgstr "Shift+Boton izquierdo del raton" -#: src/emc/rs274ngc/rs274ngc_return.hh:68 -msgid "I word missing with g87" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3190 +#, fuzzy +msgid "Homed color" +msgstr "Restaurar todos los ejes" -#: src/emc/rs274ngc/rs274ngc_return.hh:69 -msgid "J word given for arc in xz plane" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3204 +#, fuzzy +msgid "Unhomed color" +msgstr "Restaurar todos los ejes" -#: src/emc/rs274ngc/rs274ngc_return.hh:70 -msgid "J word missing with g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3299 +msgid "Digits" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:71 -msgid "K word given for arc in xy plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3344 +msgid "" +"toggle DRO mode \n" +"clicking on the DRO" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:72 -msgid "K word missing with g87" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3369 +#, fuzzy +msgid "DRO" +msgstr "Restaurar" -#: src/emc/rs274ngc/rs274ngc_return.hh:73 -msgid "Left bracket missing after slash with atan" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3401 +msgid "Grid size" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:74 -msgid "Left bracket missing after unary operation name" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3430 +#, fuzzy +msgid "Show DRO" +msgstr "_Mostrar medidas" -#: src/emc/rs274ngc/rs274ngc_return.hh:75 -msgid "M code greater than 199" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3444 +#, fuzzy +msgid "Show offsets" +msgstr "_Mostrar medidas" -#: src/emc/rs274ngc/rs274ngc_return.hh:76 -msgid "Mixed radius ijk format for arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3458 +msgid "Show DTG" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:77 -msgid "Multiple a words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3483 +#, fuzzy +msgid "Mouse Button mode" +msgstr "Restaurar" -#: src/emc/rs274ngc/rs274ngc_return.hh:78 -msgid "Multiple b words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3512 +#, fuzzy +msgid "Preview" +msgstr "Restaurar" -#: src/emc/rs274ngc/rs274ngc_return.hh:79 -msgid "Multiple c words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3565 +#, fuzzy +msgid "" +"current\n" +" file" +msgstr "Volver a cargar archivo actual [Ctrl-R]" -#: src/emc/rs274ngc/rs274ngc_return.hh:80 -msgid "Multiple d words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3611 +msgid "File to load on start" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:81 -msgid "Multiple f words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3638 +#, fuzzy +msgid "Select user dir" +msgstr "Elegir velocidad de avance" -#: src/emc/rs274ngc/rs274ngc_return.hh:82 -msgid "Multiple h words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3647 +msgid "Select jump to dir" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:83 -msgid "Multiple i words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3767 +msgid "Themes and sound" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:84 -msgid "Multiple j words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3799 +msgid "Appearance" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:85 -msgid "Multiple k words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3833 +#, fuzzy +msgid "Scale max velocity" +msgstr "Mostrar barra de herramientas" -#: src/emc/rs274ngc/rs274ngc_return.hh:86 -msgid "Multiple l words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3846 +#, fuzzy +msgid "Scale jog velocity" +msgstr "Mostrar barra de herramientas" -#: src/emc/rs274ngc/rs274ngc_return.hh:87 -msgid "Multiple p words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3861 +#, fuzzy +msgid "Scale feed override" +msgstr "Control de avanze" -#: src/emc/rs274ngc/rs274ngc_return.hh:88 -msgid "Multiple q words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3876 +#, fuzzy +msgid "Scale spindle override" +msgstr "Controlar portabrocas:" -#: src/emc/rs274ngc/rs274ngc_return.hh:89 -msgid "Multiple r words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3970 +#, fuzzy +msgid "Hardware MPG Scale" +msgstr "Restaurar" -#: src/emc/rs274ngc/rs274ngc_return.hh:90 -msgid "Multiple s words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3994 +msgid "Use keyboard shortcuts" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:91 -msgid "Multiple t words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4007 +msgid "Keyboard shortcuts" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:92 -msgid "Multiple x words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4034 +msgid "Use unlock code" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:93 -msgid "Multiple y words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4050 +msgid "Do not use unlock code" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:94 -msgid "Multiple z words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4066 +msgid "Use hal pin to unlock" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:95 -msgid "Must use g0 or g1 with g53" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4087 +#, fuzzy +msgid "Unlock settings" +msgstr "Restaurar" -#: src/emc/rs274ngc/rs274ngc_return.hh:96 -msgid "Negative argument to sqrt" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4197 +#, fuzzy +msgid "Spindle bar min" +msgstr "Encender freno del Portabrocas" -#: src/emc/rs274ngc/rs274ngc_return.hh:97 -msgid "Negative d word tool radius index used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4210 +#, fuzzy +msgid "Spindle bar max" +msgstr "Encender freno del Portabrocas" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4252 +msgid "Hide turtle Jog Button" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:98 -msgid "Negative f word used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4282 +msgid "Turtle jog Factor" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:99 -msgid "Negative g code used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4318 +#, fuzzy +msgid "Turtle Jog" +msgstr "Restaurar" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4360 +msgid "Hardware" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:100 -msgid "Negative h word used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4392 +msgid "Use auto tool measurement" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:101 -msgid "Negative l word used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4450 +msgid "Probe Height" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:102 -msgid "Negative m code used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4485 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4498 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4527 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4556 +msgid "0.000" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:103 -msgid "Negative or zero q value used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4514 +msgid "Z Pos." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:104 -msgid "Negative p word used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4543 +msgid "Max. Probe" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:105 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4575 #, fuzzy -msgid "Negative spindle speed used" -msgstr "Controlar portabrocas:" - -#: src/emc/rs274ngc/rs274ngc_return.hh:106 -msgid "Negative tool id used" -msgstr "" +msgid "Probe Informations" +msgstr "Restaurar" -#: src/emc/rs274ngc/rs274ngc_return.hh:107 -msgid "Nested comment found" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4607 +msgid "Search Vel." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:108 -msgid "No characters found in reading real value" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4618 +msgid "Probe Vel." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:109 -msgid "Non integer value for integer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4674 +msgid "Probe velocitys" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:110 -msgid "Null missing after newline" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4688 +msgid "" +"No valid configuration\n" +"found in your INI file,\n" +"please take a look at \n" +"the WIKI to check how\n" +"to configure the settings." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:111 -msgid "Parameter file out of order" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4708 +#, fuzzy +msgid "Tool Measurement" +msgstr "Restaurar" -#: src/emc/rs274ngc/rs274ngc_return.hh:112 -msgid "Parameter number out of range" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4737 +msgid "" +"If the 4'th axis is used\n" +"for a tool changer, you\n" +"hide the DRO and\n" +"jog buttons." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:113 -msgid "Parameter is readonly" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4749 +#, fuzzy +msgid "Hide 4'th axis" +msgstr "Correr tercer eje" -#: src/emc/rs274ngc/rs274ngc_return.hh:114 -msgid "Q word missing with g83" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4769 +#, fuzzy +msgid "Tool Changer" +msgstr "Restaurar" -#: src/emc/rs274ngc/rs274ngc_return.hh:115 -msgid "Queue is not empty after probing" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4808 +msgid "Use frames" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:116 -msgid "R clearance plane unspecified in cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4840 +msgid "max." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:117 -msgid "R i j k words all missing for arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4992 +msgid "Launch test message" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:118 -msgid "R less than x in cycle in yz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5011 +msgid "" +" gmoccapy message\n" +" behavior and appearance " msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:119 -msgid "R less than y in cycle in xz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5049 +msgid "Do not use run from line" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:120 -msgid "R less than z in cycle in xy plane" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5065 +#, fuzzy +msgid "Use run from line" +msgstr "Seleccionar linea o mover panorama" -#: src/emc/rs274ngc/rs274ngc_return.hh:121 -msgid "R word with no g code that uses it" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5086 +#, fuzzy +msgid "Run from line" +msgstr "Restaurar" -#: src/emc/rs274ngc/rs274ngc_return.hh:122 -msgid "Slash missing after first atan argument" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5119 +msgid "" +"Advanced\n" +" Settings" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:123 -msgid "Spindle not turning clockwise in g84" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5157 +msgid "User tab 1" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:124 -msgid "Spindle not turning in g86" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5171 +msgid "User tabs" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:125 -msgid "Spindle not turning in g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5207 +msgid "Estop the machine" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:126 -msgid "Spindle not turning in g88" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5229 +#, fuzzy +msgid "Turn the machine on/off" +msgstr "Encender Maquina" -#: src/emc/rs274ngc/rs274ngc_return.hh:127 -msgid "Sscanf failed" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5251 +msgid "enter manual mode to jog axis by hand or touch off" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:128 -msgid "Start point too close to probe point" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5271 +msgid "enter MDI mode to launch g-code commands" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:129 -msgid "Too many m codes on line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5290 +#, fuzzy +msgid "enter auto mode to run programs" +msgstr "Volver a cargar programa" -#: src/emc/rs274ngc/rs274ngc_return.hh:130 -msgid "Pocket max too large" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5308 +msgid "Enter the settings page, the default code is \"123\"" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:131 -msgid "Tool radius not less than arc radius with comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5330 +#, fuzzy +msgid "show user tabs" +msgstr "_Mostrar medidas" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5381 +msgid "open homing button list" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:132 -msgid "Two g codes used from same modal group" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5398 +msgid "open touch off button list" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:133 -msgid "Two m codes used from same modal group" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5427 +msgid "Open the tooleditor page" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:134 -#, c-format -msgid "Unable to open file <%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5498 +msgid "make the preview as large as possible" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:135 -msgid "Unclosed comment found" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5515 +msgid "Close moccapy / leave the program" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:136 -msgid "Unclosed expression" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5577 +msgid "This button will show or hide the Keyboard" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:137 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5620 #, fuzzy -msgid "Unknown g code used" -msgstr "Herramienta desconocida %d" +msgid "Load a new program" +msgstr "Volver a cargar programa" -#: src/emc/rs274ngc/rs274ngc_return.hh:138 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5637 #, fuzzy -msgid "Unknown m code used" -msgstr "Herramienta desconocida %d" +msgid "Run the loaded program" +msgstr "Volver a cargar programa" -#: src/emc/rs274ngc/rs274ngc_return.hh:139 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5654 #, fuzzy -msgid "Unknown operation" -msgstr "Herramienta desconocida %d" +msgid "Stop the running program" +msgstr "Detener programa en proceso, o" -#: src/emc/rs274ngc/rs274ngc_return.hh:140 -msgid "Unknown operation name starting with a" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5672 +#, fuzzy +msgid "Pause the running program" +msgstr "Detener programa en proceso, o" -#: src/emc/rs274ngc/rs274ngc_return.hh:141 -msgid "Unknown operation name starting with m" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5680 +#, fuzzy +msgid "pause the running program" +msgstr "Detener programa en proceso, o" -#: src/emc/rs274ngc/rs274ngc_return.hh:142 -msgid "Unknown operation name starting with o" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5698 +msgid "Run the loaded program step by step" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:143 -msgid "Unknown operation name starting with x" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5715 +msgid "" +"run the program from a certain line, attention, that is dangerous, because " +"the previous lines will not checed!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:144 -msgid "Unknown word starting with a" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5732 +msgid "" +"Machine or not the optional blocks of the program. If the button is pressed, " +"the optional blocks will not be machined. The button will indicate this by a " +"yellow background." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:145 -msgid "Unknown word starting with c" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5757 +msgid "" +"Make optional stops or not. if an M1 is programed and the button is pressed " +"(is active) the programm will pause if it found a M1" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:146 -msgid "Unknown word starting with e" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5789 +#, fuzzy +msgid "Edit the loaded program" +msgstr "Volver a cargar programa" -#: src/emc/rs274ngc/rs274ngc_return.hh:147 -msgid "Unknown word starting with f" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5837 +#, fuzzy +msgid "home all axis" +msgstr "Restaurar todos los ejes" -#: src/emc/rs274ngc/rs274ngc_return.hh:148 -msgid "Unknown word starting with l" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5873 +#, fuzzy +msgid "home x axis" +msgstr "Restaurar _%s-Eje" -#: src/emc/rs274ngc/rs274ngc_return.hh:149 -msgid "Unknown word starting with r" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5897 +#, fuzzy +msgid "home y axis" +msgstr "Restaurar _%s-Eje" -#: src/emc/rs274ngc/rs274ngc_return.hh:150 -msgid "Unknown word starting with s" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5929 +#, fuzzy +msgid "home z axis" +msgstr "Restaurar _%s-Eje" -#: src/emc/rs274ngc/rs274ngc_return.hh:151 -msgid "Unknown word starting with t" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5987 +#, fuzzy +msgid "Unhome all axis" +msgstr "Restaurar todos los ejes" -#: src/emc/rs274ngc/rs274ngc_return.hh:152 -msgid "Unknown word where unary operation could be" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6023 +msgid "go back to main button list" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:153 -msgid "X and y words missing for arc in xy plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6053 +msgid "" +" edit\n" +"offsets" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:154 -msgid "X and z words missing for arc in xz plane" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6060 +#, fuzzy +msgid "Edit offsets" +msgstr "_Mostrar medidas" -#: src/emc/rs274ngc/rs274ngc_return.hh:155 -msgid "X value unspecified in yz plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6076 +msgid "touch off X / set X to 0" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:156 -msgid "Y and z words missing for arc in yz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6100 +msgid "touch off Y / set Y to 0" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:157 -msgid "Y value unspecified in xz plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6135 +msgid "touch off Z / set Z to 0" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:158 -msgid "Z value unspecified in xy plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6155 +msgid "" +"zero\n" +"G92" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:159 -msgid "Zero or negative argument to ln" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6161 +msgid "Zero all G92 offsets" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:161 -msgid "K word missing with g33/g33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6172 +msgid "" +" Block\n" +"Height" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:162 -msgid "F word used with a g33/g33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6192 +msgid "touch off X / set X to an desired value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:163 -msgid "Unknown operation name starting with e" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6216 +msgid "touch off Y / set Y to an desired value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:164 -msgid "Unknown operation name starting with n" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6251 +msgid "touch off Z / set Z to an desired value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:165 -msgid "Unknown operation name starting with g" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6270 +msgid "" +" set\n" +"selected" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:166 -msgid "Unknown operation name starting with l" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6277 +msgid "set the selected coordinate system to be the active one" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:167 -msgid "Too many subroutine parameters" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6293 +msgid "Go back to main view" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:168 -msgid "Too many subroutine levels" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6324 +msgid "delete MDI" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:169 -msgid "Bug: call stack underrun" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6330 +#, fuzzy +msgid "delete MDI history" +msgstr " Borrar historial MDI " -#: src/emc/rs274ngc/rs274ngc_return.hh:170 -msgid "Unknown control command in o word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6380 +msgid "Cl.-ladder" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:171 -msgid "Too many oword labels" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6386 +msgid "Open classicladder" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:172 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6397 #, fuzzy -msgid "Unknown oword number" -msgstr "Herramienta desconocida %d" +msgid "Hal-Scope" +msgstr "HA_L-escopio" -#: src/emc/rs274ngc/rs274ngc_return.hh:173 -msgid "Nested subroutine definition" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6403 +msgid "launch hal scope" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:174 -msgid "Not in subroutine definition" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6420 +msgid "launch linuxcnc status" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:175 -msgid "File not open" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6437 +msgid "launch hal meter" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:176 -msgid "Need tool prepared -Txx- for toolchange" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6455 +#, fuzzy +msgid "launch calibration" +msgstr "_Calibración" -#: src/emc/rs274ngc/rs274ngc_return.hh:177 -msgid "Cannot change planes with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6466 +msgid "Halshow" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:178 -msgid "Cutter radius compensation allowed only in XY, XZ planes" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6472 +msgid "opens the show hal tool" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:179 -msgid "P word missing with G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6537 +msgid "save the file using the original name" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:180 -msgid "I J or K words missing with G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6559 +msgid "save the file with a new name" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:181 -msgid "Cannot move rotary axes with G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6605 +msgid "clear the edit field and make a new file" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:182 -msgid "Multiple e words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6641 +msgid "Show or hide the virtual keyboard" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:183 -msgid "Named parameter not terminated" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6665 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6879 +msgid "Go back to main button list" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:184 -msgid "Out of memory" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6701 +msgid "delete selected tool or tools" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:185 -msgid "S word missing with G96" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6718 +#, fuzzy +msgid "add a new tool to tool table" +msgstr "Volver a vargar ta_bla de herramientas" -#: src/emc/rs274ngc/rs274ngc_return.hh:186 -msgid "Queue is not empty after external input" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6729 +#, fuzzy +msgid "Reload" +msgstr "_recargar " + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6735 +#, fuzzy +msgid "reload tool table from file" +msgstr "Volver a vargar ta_bla de herramientas" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6746 +msgid "Apply" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:187 -msgid "Can't select analog input with wait type != immediate return" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6752 +msgid "" +"apply the changes you made, G43 will be excecuted only if it is active g-code" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:188 -msgid "Zero timeout with wait type != immediate return" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6768 +msgid "Select a tool by number" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:189 -msgid "Invalid to select both a digital and an analog input with M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6790 +msgid "change tool with the command M61 Q?, no machine move will be done" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:190 -msgid "Need to have either a valid P or a valid E word with M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6812 +msgid "change tool to the selected one" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:191 -msgid "Q word missing with g73" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6824 +msgid "" +"touchoff\n" +" tool x" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:192 -msgid "Digital input selected out of bounds" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6832 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6863 +msgid "touch off the tool and set the value to the tool table" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:193 -msgid "Analog input selected out of bounds" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6855 +msgid "" +"touchoff\n" +" tool z" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:194 -msgid "W value unspecified in UV plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6915 +msgid "Move to your home directory" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:195 -msgid "U value unspecified in VW plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6932 +msgid "Move to parrent directory" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:196 -msgid "V value unspecified in UW plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6961 +msgid "Select the previos file" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:197 -msgid "R less than W in cycle in UV plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6979 +#, fuzzy +msgid "Select the next file" +msgstr "Insertar siguie_nte fila" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6997 +msgid "Jump to user defined directory" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:198 -msgid "R less than U in cycle in VW plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7027 +msgid "select the highlighted file and return the path" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:199 -msgid "R less than V in cycle in UW plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7057 +msgid "Close without returning a file path" msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7075 +#, fuzzy +msgid "Load File" +msgstr "Filtro_del Programa %r fallido" + +#, fuzzy +#~ msgid "LinuxCNC Debug Level" +#~ msgstr "Seleccionar nivel de _depuracion" + +#, fuzzy +#~ msgid "Spindle Configuration" +#~ msgstr "Mostrar configuracion _HAl" + #, fuzzy #~ msgid "No" #~ msgstr "Ninguno" @@ -13614,9 +17046,6 @@ msgstr "" #~ msgid "Exit code %d" #~ msgstr "Terminar-instruccion %d" -#~ msgid "Set _next line" -#~ msgstr "Insertar siguie_nte fila" - #~ msgid "" #~ "EMC2/AXIS version $version\n" #~ "\n" diff --git a/src/po/fi.po b/src/po/fi.po index 0789eb1395..56b3b4754b 100644 --- a/src/po/fi.po +++ b/src/po/fi.po @@ -7,12648 +7,16341 @@ msgid "" msgstr "" "Project-Id-Version: EMC2 2.5.0-pre2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-12-26 10:58-0600\n" +"POT-Creation-Date: 2019-02-20 07:49+0000\n" "PO-Revision-Date: 2011-12-26 10:58-0600\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: hal/utils/meter.c:198 +#: src/emc/task/emctaskmain.cc:479 src/emc/task/emctaskmain.cc:512 #, c-format -msgid "ERROR: '%s' is not a valid probe type\n" +msgid "%s exceeds +X limit" msgstr "" -#: hal/utils/meter.c:206 +#: src/emc/task/emctaskmain.cc:484 src/emc/task/emctaskmain.cc:517 #, c-format -msgid "ERROR: no pin/signal/parameter name\n" +msgid "%s exceeds +Y limit" msgstr "" -#: hal/utils/meter.c:212 +#: src/emc/task/emctaskmain.cc:489 src/emc/task/emctaskmain.cc:522 #, c-format -msgid "" -"ERROR: -s option requires a probe type and a pin/signal/parameter name\n" +msgid "%s exceeds +Z limit" msgstr "" -#: hal/utils/meter.c:238 ../tcl/tkemc.tcl:764 -msgid "Hal Meter" -msgstr "Hal-mittari" +#: src/emc/task/emctaskmain.cc:494 src/emc/task/emctaskmain.cc:527 +#, c-format +msgid "%s exceeds -X limit" +msgstr "" -#: hal/utils/meter.c:287 -msgid "_Select" +#: src/emc/task/emctaskmain.cc:499 src/emc/task/emctaskmain.cc:532 +#, c-format +msgid "%s exceeds -Y limit" msgstr "" -#: hal/utils/meter.c:288 -msgid "E_xit" +#: src/emc/task/emctaskmain.cc:504 src/emc/task/emctaskmain.cc:537 +#, c-format +msgid "%s exceeds -Z limit" msgstr "" -#: hal/utils/meter.c:336 hal/utils/meter.c:364 -msgid "Select Item to Probe" +#: src/emc/task/emctaskmain.cc:892 +#, c-format +msgid "" +"command (%s) cannot be executed until the machine is out of E-stop and " +"turned on" msgstr "" -#: hal/utils/meter.c:640 -msgid " _Pins " +#: src/emc/task/emctaskmain.cc:1013 +#, c-format +msgid "can't do that (%s:%d) in manual mode" msgstr "" -#: hal/utils/meter.c:641 -msgid " _Signals " +#: src/emc/task/emctaskmain.cc:1113 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter idle" msgstr "" -#: hal/utils/meter.c:642 -msgid " Para_meters " +#: src/emc/task/emctaskmain.cc:1180 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter reading" msgstr "" -#: hal/utils/meter.c:685 -msgid "_Close" +#: src/emc/task/emctaskmain.cc:1265 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter paused" msgstr "" -#: hal/utils/scope.c:126 -msgid "" -"Usage:\n" -" halscope [-h] [-i infile] [-o outfile] [num_samples]\n" +#: src/emc/task/emctaskmain.cc:1334 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter waiting" msgstr "" -#: hal/utils/scope.c:474 hal/utils/scope.c:501 -msgid "Open Configuration File:" +#: src/emc/task/emctaskmain.cc:1442 +#, c-format +msgid "can't do that (%s:%d) in MDI mode" msgstr "" -#: hal/utils/scope.c:535 -msgid "_Open Configuration..." +#: src/emc/task/emctaskmain.cc:2100 +msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" msgstr "" -#: hal/utils/scope.c:541 -msgid "_Save Configuration..." +#: src/emc/task/emctaskmain.cc:2157 tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 +#: tcl/mini.tcl:1775 tcl/tklinuxcnc.tcl:451 +#, c-format, tcl-format +msgid "can't open %s" msgstr "" -#: hal/utils/scope.c:550 -msgid "O_pen Data File..." +#: src/emc/task/emctaskmain.cc:2169 +msgid "Can't issue MDI command when not homed" msgstr "" -#: hal/utils/scope.c:557 -msgid "S_ave Data File..." +#: src/emc/task/emctaskmain.cc:2174 +msgid "Must be in MDI mode to issue MDI command" msgstr "" -#: hal/utils/scope.c:566 ../share/axis/tcl/axis.tcl:93 -msgid "_Quit" +#: src/emc/task/emctaskmain.cc:2256 +msgid "Can't run a program when not homed" msgstr "" -#: hal/utils/scope.c:572 -msgid "_About Halscope" +#: src/emc/rs274ngc/interp_arc.cc:110 src/emc/rs274ngc/interp_arc.cc:284 +#, c-format +msgid "" +"Zero-radius arc: start=(%c%.4f,%c%.4f) center=(%c%.4f,%c%.4f) end=(%c%.4f,%c" +"%.4f) r1=%.4f r2=%.4f" msgstr "" -#: hal/utils/scope.c:578 ../share/axis/tcl/axis.tcl:435 -msgid "_File" +#: src/emc/rs274ngc/interp_arc.cc:120 src/emc/rs274ngc/interp_arc.cc:292 +#, c-format +msgid "" +"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " +"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " +"rel_err=%.4f%%" msgstr "" -#: hal/utils/scope.c:582 ../share/axis/tcl/axis.tcl:447 -msgid "_Help" +#: src/emc/rs274ngc/interp_check.cc:90 +msgid "G4 not allowed with G2 or G3 because they both use P" msgstr "" -#: hal/utils/scope.c:641 -msgid "HAL Oscilloscope" -msgstr "HAL skooppi" +#: src/emc/rs274ngc/interp_check.cc:93 +msgid "Line with G10 does not have L1, L10, L11, L2, or L20" +msgstr "" -#: hal/utils/scope.c:669 -msgid "Horizontal" +#: src/emc/rs274ngc/interp_check.cc:94 +msgid "P value not an integer with G10" msgstr "" -#: hal/utils/scope.c:677 -msgid "Selected Channel" -msgstr "Valittu kanava" +#: src/emc/rs274ngc/interp_check.cc:95 +#, c-format +msgid "P value out of range (0-9) with G10 L%d" +msgstr "" -#: hal/utils/scope.c:683 -msgid "Run Mode" +#: src/emc/rs274ngc/interp_check.cc:96 +#, c-format +msgid "P value out of range with G10 L%d" msgstr "" -#: hal/utils/scope.c:686 -msgid "Trigger" +#: src/emc/rs274ngc/interp_check.cc:100 +msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." msgstr "" -#: hal/utils/scope.c:692 -msgid "Vertical" +#: src/emc/rs274ngc/interp_check.cc:259 +msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" msgstr "" -#: hal/utils/scope.c:700 ../share/axis/tcl/axis.tcl:135 -#: ../share/axis/tcl/axis.tcl:1199 -msgid "Stop" -msgstr "Seis" +#: src/emc/rs274ngc/interp_check.cc:265 +msgid "E word with no G76, M66, M67 or M68 to use it" +msgstr "" -#: hal/utils/scope.c:703 -msgid "Normal" +#: src/emc/rs274ngc/interp_check.cc:270 +msgid "H word with no G43 or G76 to use it" msgstr "" -#: hal/utils/scope.c:706 -msgid "Single" +#: src/emc/rs274ngc/interp_check.cc:276 +msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" msgstr "" -#: hal/utils/scope.c:709 -msgid "Roll" +#: src/emc/rs274ngc/interp_check.cc:282 +msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" msgstr "" -#: hal/utils/scope_horiz.c:130 -msgid "Zoom" -msgstr "Zoom" +#: src/emc/rs274ngc/interp_check.cc:288 +msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" +msgstr "" -#: hal/utils/scope_horiz.c:131 -msgid " Pos " +#: src/emc/rs274ngc/interp_check.cc:298 +msgid "" +"L word with no G10, cutter compensation, canned cycle, digital/analog input, " +"or NURBS code" msgstr "" -#: hal/utils/scope_horiz.c:164 +#: src/emc/rs274ngc/interp_check.cc:310 msgid "" -"----- Samples\n" -"at ---- KHz" +"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " +"M53 M62 M63 M64 M65 M66 or user M code to use it" msgstr "" -#: hal/utils/scope_horiz.c:459 -msgid "Realtime component not loaded" +#: src/emc/rs274ngc/interp_check.cc:315 +msgid "P value not an integer with M19 G2 or G3" msgstr "" -#: hal/utils/scope_horiz.c:460 -msgid "" -"HALSCOPE uses a realtime component called scope_rt'\n" -"to sample signals for display. It is not currently loaded\n" -"and attempting to load it automatically failed. More information\n" -"may be available in the terminal where halscope was started.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Load the component (using 'halcmd loadrt scope_rt'), then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +#: src/emc/rs274ngc/interp_check.cc:317 +msgid "P value must be 0,1,or 2 with M19" msgstr "" -#: hal/utils/scope_horiz.c:495 -msgid "Realtime function not linked" +#: src/emc/rs274ngc/interp_check.cc:319 +msgid "P value should be 1 or greater with G2 or G3" msgstr "" -#: hal/utils/scope_horiz.c:496 +#: src/emc/rs274ngc/interp_check.cc:327 msgid "" -"The HALSCOPE realtime sampling function\n" -"must be called from a HAL thread in to\n" -"determine the sampling rate.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Select a thread name and multiplier then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " +"code that uses it" msgstr "" -#: hal/utils/scope_horiz.c:503 -msgid "Select Sample Rate" -msgstr "Valitse näytteistysnopeus" +#: src/emc/rs274ngc/interp_check.cc:337 +msgid "R value must be within 0..360 with M19" +msgstr "" -#: hal/utils/scope_horiz.c:504 -msgid "" -"Select a thread name and multiplier then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +#: src/emc/rs274ngc/interp_convert.cc:139 +msgid "You must specify both X and Y coordinates for Control Points" msgstr "" -#: hal/utils/scope_horiz.c:526 -msgid "Thread:" +#: src/emc/rs274ngc/interp_convert.cc:142 +msgid "Can specify P without X and Y only for the first control point" msgstr "" -#: hal/utils/scope_horiz.c:534 -msgid "Sample Period:" +#: src/emc/rs274ngc/interp_convert.cc:145 +msgid "Must specify positive weight P for every Control Point" msgstr "" -#: hal/utils/scope_horiz.c:542 -msgid "Sample Rate:" +#: src/emc/rs274ngc/interp_convert.cc:148 +msgid "Cannot make a NURBS with 0 feedrate" msgstr "" -#: hal/utils/scope_horiz.c:558 emc/usr_intf/touchy/mdi.py:78 -msgid "Thread" +#: src/emc/rs274ngc/interp_convert.cc:183 +msgid "Cannot use G5.3 without G5.2 first" msgstr "" -#: hal/utils/scope_horiz.c:559 -msgid "Period" +#: src/emc/rs274ngc/interp_convert.cc:184 +#, c-format +msgid "" +"You must specify a number of control points at least equal to the order L = " +"%d" msgstr "" -#: hal/utils/scope_horiz.c:619 -msgid "Multiplier:" +#: src/emc/rs274ngc/interp_convert.cc:213 +msgid "Cannot convert spline with cutter radius compensation" msgstr "" -#: hal/utils/scope_horiz.c:636 -msgid "Record Length" +#: src/emc/rs274ngc/interp_convert.cc:223 +msgid "Splines must be in the XY plane" msgstr "" -#: hal/utils/scope_horiz.c:639 -#, c-format -msgid "%5d samples (1 channel)" +#: src/emc/rs274ngc/interp_convert.cc:228 +msgid "Splines may not have motion in Z, A, B, or C" msgstr "" -#: hal/utils/scope_horiz.c:641 -#, c-format -msgid "%5d samples (2 channels)" +#: src/emc/rs274ngc/interp_convert.cc:232 +msgid "Must specify both I and J with G5.1" msgstr "" -#: hal/utils/scope_horiz.c:645 -#, c-format -msgid "%5d samples (4 channels)" +#: src/emc/rs274ngc/interp_convert.cc:251 +msgid "Must specify both I and J, or neither" msgstr "" -#: hal/utils/scope_horiz.c:649 -#, c-format -msgid "%5d samples (8 channels)" +#: src/emc/rs274ngc/interp_convert.cc:262 +msgid "Must specify both P and Q with G5" msgstr "" -#: hal/utils/scope_horiz.c:653 -#, c-format -msgid "%5d samples (16 channels)" +#: src/emc/rs274ngc/interp_convert.cc:363 +msgid "" +"The move just after exiting cutter compensation mode must be straight, not " +"an arc" msgstr "" -#: hal/utils/scope_horiz.c:708 hal/utils/scope_horiz.c:754 -#: hal/utils/scope_horiz.c:966 hal/utils/scope_vert.c:761 -#: hal/utils/scope_vert.c:853 ../tcl/bin/emccalib.tcl:227 -#: ../tcl/bin/genedit.tcl:180 ../tcl/bin/genedit.tcl:450 -#: ../tcl/bin/halconfig.tcl:682 ../tcl/bin/halconfig.tcl:733 -#: ../tcl/bin/pickconfig.tcl:256 ../tcl/bin/pickconfig.tcl:404 -#: ../tcl/bin/pickconfig.tcl:430 ../tcl/mini.tcl:1456 ../tcl/mini.tcl:2937 -#: ../tcl/tkemc.tcl:160 ../tcl/tkemc.tcl:245 ../tcl/tkemc.tcl:419 -#: ../tcl/tkemc.tcl:1338 ../tcl/tkemc.tcl:1407 ../tcl/tkemc.tcl:1438 -#: ../tcl/tkemc.tcl:1469 ../tcl/tkemc.tcl:2017 ../tcl/tkemc.tcl:2036 -#: ../tcl/tkemc.tcl:2055 ../tcl/tkemc.tcl:2102 -#: emc/usr_intf/axis/scripts/axis.py:1069 -#: emc/usr_intf/axis/scripts/axis.py:1129 -#: emc/usr_intf/axis/scripts/axis.py:1445 -#: emc/usr_intf/axis/scripts/axis.py:2464 -#: emc/usr_intf/axis/scripts/axis.py:3320 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:718 -#: ../lib/python/propertywindow.py:34 ../share/axis/tcl/axis.tcl:1720 -#: ../share/axis/tcl/axis.tcl:1757 -msgid "OK" -msgstr "OK" +#: src/emc/rs274ngc/interp_convert.cc:371 +msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" +msgstr "" -#: hal/utils/scope_horiz.c:713 hal/utils/scope_horiz.c:754 -#: ../tcl/bin/emccalib.tcl:91 ../tcl/bin/halconfig.tcl:103 -msgid "Quit" -msgstr "Lopeta" +#: src/emc/rs274ngc/interp_convert.cc:383 +#: src/emc/rs274ngc/interp_convert.cc:4488 +msgid "Cannot feed with zero spindle speed in feed per rev mode" +msgstr "" -#: hal/utils/scope_horiz.c:745 -msgid "Realtime thread(s) not running" +#: src/emc/rs274ngc/interp_convert.cc:394 +#: src/emc/rs274ngc/interp_convert.cc:400 +#: src/emc/rs274ngc/interp_convert.cc:409 +#: src/emc/rs274ngc/interp_convert.cc:415 +#: src/emc/rs274ngc/interp_convert.cc:424 +#: src/emc/rs274ngc/interp_convert.cc:430 +#, c-format +msgid "%c word missing in absolute center arc" msgstr "" -#: hal/utils/scope_horiz.c:746 +#: src/emc/rs274ngc/interp_convert.cc:662 msgid "" -"HALSCOPE uses code in a realtime HAL thread to sample\n" -"signals for display. The HAL thread(s) are not running.\n" -"Threads are usually started by the application you are\n" -"attempting to run, or you can use the 'halcmd start' command.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Start the threads, then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +"Radius of cutter compensation entry arc is not greater than the tool radius" msgstr "" -#: hal/utils/scope_horiz.c:779 -msgid "Pick log file to write to:" +#: src/emc/rs274ngc/interp_convert.cc:882 +#: src/emc/rs274ngc/interp_convert.cc:892 src/emc/rs274ngc/interp_queue.cc:696 +msgid "" +"Arc move in concave corner cannot be reached by the tool without gouging" msgstr "" -#: hal/utils/scope_horiz.c:962 -msgid "Not enough channels" +#: src/emc/rs274ngc/interp_convert.cc:918 +msgid "Arc to arc motion is invalid because the arcs have the same center" msgstr "" -#: hal/utils/scope_horiz.c:963 +#: src/emc/rs274ngc/interp_convert.cc:921 msgid "" -"This record length cannot handle the channels\n" -"that are currently enabled. Pick a shorter\n" -"record length that supports more channels." +"Arc to arc motion makes a corner the compensated tool can't fit in without " +"gouging" msgstr "" -#: hal/utils/scope_horiz.c:1051 +#: src/emc/rs274ngc/interp_convert.cc:1053 +#: src/emc/rs274ngc/interp_convert.cc:1057 +#: src/emc/rs274ngc/interp_convert.cc:1061 +#: src/emc/rs274ngc/interp_convert.cc:3945 +#: src/emc/rs274ngc/interp_convert.cc:3948 +#: src/emc/rs274ngc/interp_convert.cc:3951 src/emc/rs274ngc/interp_find.cc:97 #, c-format -msgid "" -"%s\n" -"per div" +msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" msgstr "" -#: hal/utils/scope_horiz.c:1066 -#, c-format -msgid "" -"%s samples\n" -"at %s" +#: src/emc/rs274ngc/interp_convert.cc:1563 +msgid "Cannot change control mode with cutter radius compensation on" msgstr "" -#: hal/utils/scope_horiz.c:1170 -msgid "nSec" -msgstr "ns" +#: src/emc/rs274ngc/interp_convert.cc:1676 +msgid "Cannot change coordinate systems with cutter radius compensation on" +msgstr "" -#: hal/utils/scope_horiz.c:1173 -msgid "uSec" -msgstr "us" +#: src/emc/rs274ngc/interp_convert.cc:1920 +#, c-format +msgid "G%d.1 with no D word" +msgstr "" -#: hal/utils/scope_horiz.c:1177 -msgid "mSec" -msgstr "m" +#: src/emc/rs274ngc/interp_convert.cc:1923 +#, c-format +msgid "G%d.1 with L word, but plane is not G18" +msgstr "" -#: hal/utils/scope_horiz.c:1181 emc/usr_intf/pncconf/pncconf.glade:1953 -#: emc/usr_intf/pncconf/pncconf.glade:2825 -#: emc/usr_intf/pncconf/pncconf.glade:3706 -#: emc/usr_intf/pncconf/pncconf.glade:4587 -msgid "Sec" -msgstr "s" +#: src/emc/rs274ngc/interp_convert.cc:1934 +#, c-format +msgid "G%d requires D word to be a whole number" +msgstr "" -#: hal/utils/scope_horiz.c:1198 emc/usr_intf/stepconf/stepconf.glade:3664 -#: emc/usr_intf/stepconf/stepconf.glade:4040 -#: emc/usr_intf/pncconf/pncconf.glade:8268 -#: emc/usr_intf/pncconf/pncconf.glade:8281 -#: emc/usr_intf/pncconf/pncconf.glade:8458 -msgid "Hz" -msgstr "Hz" +#: src/emc/rs274ngc/interp_convert.cc:1941 +#, c-format +msgid "G%d with lathe tool, but plane is not G18" +msgstr "" -#: hal/utils/scope_horiz.c:1201 -msgid "KHz" -msgstr "kHz" +#: src/emc/rs274ngc/interp_convert.cc:2340 +msgid "Cannot set reference point with cutter compensation in effect" +msgstr "" -#: hal/utils/scope_horiz.c:1205 -msgid "Mhz" -msgstr "Mhz" +#: src/emc/rs274ngc/interp_convert.cc:2859 +#, c-format +msgid "gen_restore G20/G21 failed: '%s'" +msgstr "" -#: hal/utils/scope_vert.c:403 hal/utils/scope_vert.c:1258 +#: src/emc/rs274ngc/interp_convert.cc:2907 #, c-format msgid "" -"Offset\n" -"%s" +"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" msgstr "" -#: hal/utils/scope_vert.c:618 -msgid "Gain" -msgstr "Vahvistus" - -#: hal/utils/scope_vert.c:630 hal/utils/scope_trig.c:252 -msgid "Pos" +#: src/emc/rs274ngc/interp_convert.cc:2908 +#, c-format +msgid "BUG: restore from level %d !?" msgstr "" -#: hal/utils/scope_vert.c:644 ../tcl/ngcgui_ttt.tcl:213 -#: emc/usr_intf/pncconf/pncconf.glade:57147 -msgid "Scale" +#: src/emc/rs274ngc/interp_convert.cc:2909 +#, c-format +msgid "BUG: restore to level %d !?" msgstr "" -#: hal/utils/scope_vert.c:657 -msgid "Chan Off" +#: src/emc/rs274ngc/interp_convert.cc:2928 +#, c-format +msgid "M7x: restore_settings G20/G21 failed: '%s'" msgstr "" -#: hal/utils/scope_vert.c:713 -msgid "Set Offset" +#: src/emc/rs274ngc/interp_convert.cc:2946 +#, c-format +msgid "M7x: restore_settings failed executing: '%s': %s" msgstr "" -#: hal/utils/scope_vert.c:714 +#: src/emc/rs274ngc/interp_convert.cc:3005 #, c-format -msgid "" -"Set the vertical offset\n" -"for channel %d." +msgid "Failed to restore interp state on abort '%s': %s" msgstr "" -#: hal/utils/scope_vert.c:734 -msgid "AC Coupled" -msgstr "AC-kytketty" +#: src/emc/rs274ngc/interp_convert.cc:3069 +msgid "No valid P word with M62" +msgstr "" -#: hal/utils/scope_vert.c:769 hal/utils/scope_vert.c:1171 -#: hal/utils/scope_trig.c:367 ../tcl/bin/emccalib.tcl:229 -#: ../tcl/bin/genedit.tcl:294 ../tcl/bin/halconfig.tcl:103 -#: ../tcl/bin/halconfig.tcl:684 ../tcl/bin/halconfig.tcl:735 -#: ../tcl/bin/pickconfig.tcl:259 ../tcl/bin/pickconfig.tcl:367 -#: ../tcl/mini.tcl:1457 ../tcl/mini.tcl:2938 ../tcl/mini.tcl:3110 -#: ../tcl/tkemc.tcl:162 ../tcl/tkemc.tcl:213 ../tcl/tkemc.tcl:420 -#: ../tcl/tkemc.tcl:1339 ../tcl/tkemc.tcl:1408 ../tcl/tkemc.tcl:1439 -#: ../tcl/tkemc.tcl:1470 ../tcl/tkemc.tcl:2103 -#: emc/usr_intf/axis/scripts/axis.py:1391 -#: emc/usr_intf/axis/scripts/axis.py:1446 -#: emc/usr_intf/axis/scripts/axis.py:1633 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:720 -msgid "Cancel" +#: src/emc/rs274ngc/interp_convert.cc:3072 +msgid "No valid P word with M63" msgstr "" -#: hal/utils/scope_vert.c:849 -msgid "Too many channels" +#: src/emc/rs274ngc/interp_convert.cc:3075 +msgid "No valid P word with M64" msgstr "" -#: hal/utils/scope_vert.c:850 -msgid "" -"You cannot add another channel.\n" -"\n" -"Either turn off one or more channels, or shorten\n" -"the record length to allow for more channels" +#: src/emc/rs274ngc/interp_convert.cc:3078 +msgid "No valid P word with M65" msgstr "" -#: hal/utils/scope_vert.c:1026 -msgid "Select Channel Source" +#: src/emc/rs274ngc/interp_convert.cc:3111 +msgid "invalid P-word with M66" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3126 +msgid "Cannot wait for digital input with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3138 +msgid "Cannot wait for analog input with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3152 +msgid "Invalid analog index with M67" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3157 +msgid "Invalid analog index with M68" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3188 +msgid "Need non-negative Q-word to specify tool number with M61" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3258 +msgid "Q word with M19 requires a value > 0" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3286 +msgid "Cannot restore context from invalid stack frame - missing M70/M73?" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3327 +#: src/emc/rs274ngc/interp_convert.cc:3344 +#: src/emc/rs274ngc/interp_convert.cc:3359 +#: src/emc/rs274ngc/interp_convert.cc:3373 +#: src/emc/rs274ngc/interp_convert.cc:3387 +msgid "Cannot enable overrides with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3334 +#: src/emc/rs274ngc/interp_convert.cc:3349 +#: src/emc/rs274ngc/interp_convert.cc:3364 +#: src/emc/rs274ngc/interp_convert.cc:3378 +#: src/emc/rs274ngc/interp_convert.cc:3392 +msgid "Cannot disable overrides with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3506 +#: src/emc/rs274ngc/interp_convert.cc:3507 +#: src/emc/rs274ngc/interp_convert.cc:3508 +#, c-format +msgid "Indexing axis %c can only be moved with G0" msgstr "" -#: hal/utils/scope_vert.c:1027 +#: src/emc/rs274ngc/interp_convert.cc:3515 +#: src/emc/rs274ngc/interp_convert.cc:3517 +#: src/emc/rs274ngc/interp_convert.cc:3519 #, c-format +msgid "Indexing axis %c can only be moved alone" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3621 +msgid "Cannot probe with feed per rev mode" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3669 +msgid "Cannot change retract mode with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3703 +msgid "G10 L1 without offsets has no effect" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3809 +msgid "Q number in G10 is not an integer" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3810 +msgid "Invalid tool orientation" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3933 +msgid "I J words not allowed with G10 L2" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3954 msgid "" -"Select a pin, signal, or parameter\n" -"as the source for channel %d." +"Cannot change the active coordinate system with cutter radius compensation on" msgstr "" -#: hal/utils/scope_vert.c:1059 -msgid "Pins" +#: src/emc/rs274ngc/interp_convert.cc:3962 +msgid "R not allowed in G10 L20" msgstr "" -#: hal/utils/scope_vert.c:1060 -msgid "Signals" -msgstr "Signaalit" +#: src/emc/rs274ngc/interp_convert.cc:4550 +msgid "Spindle not turning in G33" +msgstr "" -#: hal/utils/scope_vert.c:1061 -msgid "Parameters" +#: src/emc/rs274ngc/interp_convert.cc:4560 +msgid "Spindle not turning in G33.1" msgstr "" -#: hal/utils/scope_trig.c:110 -#, c-format -msgid "Falling" +#: src/emc/rs274ngc/interp_convert.cc:4603 +msgid "BUG: An axis incorrectly moved along with an indexer" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4616 +msgid "BUG: trying to index incorrect axis" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4708 +msgid "Cannot use G76 threading cycle with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4711 +msgid "In G76, I must not be 0" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4713 +msgid "In G76, J must be greater than 0" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4715 +msgid "In G76, K must be greater than J" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4858 +msgid "" +"Length of cutter compensation entry move is not greater than the tool radius" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:5077 +msgid "Zero degree inside corner is invalid for cutter compensation" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:5115 +#: src/emc/rs274ngc/interp_convert.cc:5123 +msgid "" +"Arc to straight motion makes a corner the compensated tool can't fit in " +"without gouging" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:5207 +msgid "Cannot change tools with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:5328 +msgid "Cannot change tool offset with cutter radius compensation on" msgstr "" -#: hal/utils/scope_trig.c:112 hal/utils/scope_trig.c:275 +#: src/emc/rs274ngc/interp_queue.cc:694 #, c-format -msgid "Rising" +msgid "" +"BUG: cutter compensation has generated an invalid arc with mismatched radii " +"r1 %f r2 %f\n" msgstr "" -#: hal/utils/scope_trig.c:119 hal/utils/scope_trig.c:283 +#: src/emc/rs274ngc/interp_queue.cc:716 +msgid "BUG: Unsupported plane in cutter compensation" +msgstr "" + +#: src/emc/rs274ngc/interp_queue.cc:729 msgid "" -"Source\n" -"None" +"Straight traverse in concave corner cannot be reached by the tool without " +"gouging" msgstr "" -#: hal/utils/scope_trig.c:124 +#: src/emc/rs274ngc/interp_queue.cc:757 #, c-format +msgid "BUG: Unsupported plane [%d] in cutter compensation" +msgstr "" + +#: src/emc/rs274ngc/interp_queue.cc:771 msgid "" -"Source\n" -"Chan %2d" +"Straight feed in concave corner cannot be reached by the tool without gouging" msgstr "" -#: hal/utils/scope_trig.c:199 ../tcl/tkemc.tcl:827 -#: emc/usr_intf/touchy/touchy.glade:2469 -msgid "Auto" +#: src/emc/rs274ngc/interp_cycles.cc:630 +msgid "Cannot feed with zero feed rate" msgstr "" -#: hal/utils/scope_trig.c:201 -msgid "Force" +#: src/emc/rs274ngc/interp_cycles.cc:631 +msgid "Cannot use inverse time feed with canned cycles" msgstr "" -#: hal/utils/scope_trig.c:235 hal/utils/scope_trig.c:269 -msgid "Level" +#: src/emc/rs274ngc/interp_cycles.cc:632 +msgid "Cannot use canned cycles with cutter compensation on" msgstr "" -#: hal/utils/scope_trig.c:303 -msgid "Trigger Source" +#: src/emc/rs274ngc/interp_cycles.cc:829 +msgid "G17 canned cycle is not possible on a machine without Z axis" msgstr "" -#: hal/utils/scope_trig.c:304 -msgid "Select a channel to use for triggering." +#: src/emc/rs274ngc/interp_cycles.cc:1015 +msgid "G17.1 canned cycle is not possible on a machine without W axis" msgstr "" -#: hal/utils/scope_trig.c:327 -msgid "Chan" +#: src/emc/rs274ngc/interp_cycles.cc:1231 +msgid "G19 canned cycle is not possible on a machine without X axis" msgstr "" -#: hal/utils/scope_trig.c:328 -msgid "Source" +#: src/emc/rs274ngc/interp_cycles.cc:1399 +msgid "G19.1 canned cycle is not possible on a machine without U axis" msgstr "" -#: emc/motion/control.c:261 -msgid "Unexpected realtime delay: check dmesg for details." +#: src/emc/rs274ngc/interp_cycles.cc:1624 +msgid "G18 canned cycle is not possible on a machine without Y axis" msgstr "" -#: emc/motion/control.c:263 -#, c-format +#: src/emc/rs274ngc/interp_cycles.cc:1791 +msgid "G18.1 canned cycle is not possible on a machine without V axis" +msgstr "" + +#: src/emc/rs274ngc/interp_find.cc:170 +msgid "Cannot use polar coordinates with G53" +msgstr "G53:n kanssa ei voi käyttää polarikoordinaatteja" + +#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 +#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 +#: src/emc/rs274ngc/interp_find.cc:347 +msgid "Cannot specify X or Y words with polar coordinate" +msgstr "" + +#: src/emc/rs274ngc/interp_find.cc:272 +msgid "Must specify angle in polar coordinate if at the origin" +msgstr "" + +#: src/emc/rs274ngc/interp_find.cc:338 msgid "" -"\n" -"In recent history there were\n" -"%ld, %ld, %ld, %ld, and %ld\n" -"elapsed clocks between calls to the motion controller.\n" +"Incremental motion with polar coordinates is indeterminate when at the origin" +msgstr "" + +#: src/emc/rs274ngc/interp_find.cc:348 +msgid "G91 motion with polar coordinates is indeterminate when at the origin" msgstr "" -#: emc/motion/control.c:268 +#: src/emc/rs274ngc/interp_find.cc:720 #, c-format -msgid "" -"This time, there were %ld which is so anomalously\n" -"large that it probably signifies a problem with your\n" -"realtime configuration. For the rest of this run of\n" -"EMC, this message will be suppressed.\n" -"\n" +msgid "Requested tool %d not found in the tool table" msgstr "" -#: emc/motion/control.c:384 -msgid "G38.4 move finished without breaking contact." -msgstr "G38.4-liike valmis, kosketus ei katkennut" +#: src/emc/rs274ngc/interp_internal.cc:161 +msgid "Cannot use polar coordinate on a machine lacking X or Y axes" +msgstr "" -#: emc/motion/control.c:387 -msgid "G38.2 move finished without making contact." -msgstr "G38.2-liike valmis, ei kosketusta" +#: src/emc/rs274ngc/interp_internal.cc:162 +msgid "Cannot use polar coordinate except in G17 plane" +msgstr "" -#: emc/motion/control.c:401 -msgid "Probe tripped during non-probe MDI command." -msgstr "Mittapää kosketti ajettaessa mittaukseen liittymätöntä MDI-käskyä" +#: src/emc/rs274ngc/interp_internal.cc:163 +msgid "Cannot specify both polar coordinate and X word" +msgstr "" -#: emc/motion/control.c:429 -msgid "Probe tripped during homing motion." -msgstr "Mittapään kosketus ajettaessa kotiasemaan" +#: src/emc/rs274ngc/interp_internal.cc:164 +msgid "Cannot specify both polar coordinate and Y word" +msgstr "" -#: emc/motion/control.c:433 -msgid "Probe tripped during a jog." -msgstr "Mittapään kosketus käsiajolla" +#: src/emc/rs274ngc/interp_internal.cc:185 +#: src/emc/rs274ngc/interp_internal.cc:199 +#: src/emc/rs274ngc/interp_internal.cc:214 +msgid "Polar coordinates can only be used for motion" +msgstr "" -#: emc/motion/control.c:697 -msgid "motion stopped by enable input" -msgstr "'enable'-tulo katkaisi" +#: src/emc/rs274ngc/interp_read.cc:1150 src/emc/rs274ngc/interp_read.cc:1154 +#, c-format +msgid "Bad character '\\%03o' used" +msgstr "" -#: emc/motion/control.c:720 +#: src/emc/rs274ngc/interp_read.cc:1154 #, c-format -msgid "joint %d on limit switch error" -msgstr "virhe, nivel %d rajalla" +msgid "Bad character '%c' used" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1678 +msgid "Left bracket missing after 'while'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1693 +msgid "Left bracket missing after 'repeat'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1708 +msgid "Left bracket missing after 'if'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1723 +msgid "Left bracket missing after 'elseif'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1926 +msgid "Cannot read current position with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1941 +msgid "Expected # reading parameter" +msgstr "" -#: emc/motion/control.c:732 +#: src/emc/rs274ngc/interp_read.cc:1943 +msgid "Expected ] reading bracketed parameter" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:2615 #, c-format -msgid "joint %d amplifier fault" -msgstr "vahvistinvika nivelellä %d" +msgid "bad number format (conversion failed) parsing '%s'" +msgstr "" -#: emc/motion/control.c:741 +#: src/emc/rs274ngc/interp_read.cc:2616 #, c-format -msgid "joint %d following error" -msgstr "seurantavirhe nivelellä %d" +msgid "bad number format (trailing characters) parsing '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:2706 +msgid "Calculation resulted in 'not a number'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:2708 +msgid "Calculation resulted in 'infinity'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:3001 +#, c-format +msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:3113 +msgid "Multiple U words on one line" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:3129 +msgid "Multiple V words on one line" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:3145 +msgid "Multiple W words on one line" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:97 +#, c-format +msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:722 +#, c-format +msgid "%d: not in a subroutine definition: '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:759 src/emc/rs274ngc/interp_o_word.cc:809 +#, c-format +msgid "%d: duplicate O-word label: '%s' - defined in line %d" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:862 +#, c-format +msgid "%d: duplicate O-word label - already defined in line %d: '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:886 src/emc/rs274ngc/interp_o_word.cc:944 +#: src/emc/rs274ngc/interp_o_word.cc:978 src/emc/rs274ngc/interp_o_word.cc:996 +#: src/emc/rs274ngc/interp_o_word.cc:1013 +#: src/emc/rs274ngc/interp_o_word.cc:1038 +#, c-format +msgid "%d: undefined O-word label: '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:889 src/emc/rs274ngc/interp_o_word.cc:947 +#, c-format +msgid "%d: no matching 'if' label: '%s' (found '%s' in line %d)" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:981 +#, c-format +msgid "%d: no matching label: '%s' (found '%s' in line %d): '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:999 src/emc/rs274ngc/interp_o_word.cc:1016 +#, c-format +msgid "%d: no matching while/do label: '%s' (found '%s' in line %d)" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:1042 +#, c-format +msgid "%d: no matching label: '%s' (found '%s' in line %d)" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:166 +#, c-format +msgid "Named parameter #<%s> not defined" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:196 +#, c-format +msgid "cant open ini file '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:213 +#, c-format +msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:237 +#, c-format +msgid "fetch_hal_param: hal_init(%s): %d" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:238 +#, c-format +msgid "fetch_hal_param: hal_ready(): %d" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:419 +#, c-format +msgid "Internal error: Could not assign #<%s>" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:427 +#, c-format +msgid "Cannot assign to read-only parameter #<%s>" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:731 +#, c-format +msgid "BUG: lookup_named_param(%s): unhandled index=%fn" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_pre.cc:1407 src/emc/rs274ngc/rs274ngc_pre.cc:1482 +msgid "Queue is not empty after tool change" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_pre.cc:1786 +#, c-format +msgid "Unable to open parameter file: '%s'" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:19 +msgid "A file is already open" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:21 +msgid "All axes missing with g52 or g92" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:22 +msgid "All axes missing with motion code" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:23 +msgid "Arc radius too small to reach end point" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:24 +msgid "Argument to acos out of range" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:25 +msgid "Argument to asin out of range" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:26 +msgid "Attempt to divide by zero" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:27 +msgid "Attempt to raise negative to non integer power" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:28 +msgid "Bad format unsigned integer" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:29 +msgid "Bad number format" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:30 +msgid "Bug bad g code modal group 0" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:31 +msgid "Bug code not g0 or g1" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:32 +msgid "Bug code not g17 g18 or g19" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:33 +msgid "Bug code not g20 or g21" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:34 +msgid "Bug code not g28 or g30" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:35 +msgid "Bug code not g2 or g3" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:37 +msgid "Bug code not g4 g10 g28 g30 g52 g53 or g92 series" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:38 +msgid "Bug code not g61 g61.1 or g64" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:39 +msgid "Bug code not g90 or g91" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:40 +msgid "Bug code not g98 or g99" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:41 +msgid "Bug code not in g52 or g92 series" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:42 +msgid "Bug code not in range g54 to g593" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:43 +msgid "Bug code not m0 m1 m2 m30 m60" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:44 +msgid "Bug distance mode not g90 or g91" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:45 +msgid "Bug function should not have been called" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:46 +msgid "Bug in tool radius comp" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:47 +msgid "Bug plane not xy yz or xz" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:48 +msgid "Bug side not right or left" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:49 +msgid "Bug unknown motion code" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:50 +msgid "Bug unknown operation" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:51 +msgid "Cannot change axis offsets with cutter radius comp" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:52 +msgid "Cannot create backup file" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:53 +msgid "Cannot do g1 with zero feed rate" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:54 +msgid "Cannot do zero repeats of cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:55 +msgid "Cannot make arc with zero feed rate" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:56 +msgid "Cannot open backup file" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:57 +msgid "Cannot open variable file" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:58 +msgid "Cannot probe with cutter radius comp on" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:59 +msgid "Cannot probe with zero feed rate" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:60 +msgid "Cannot put a b in canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:61 +msgid "Cannot put a c in canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:62 +msgid "Cannot put an a in canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:63 +msgid "Cannot turn cutter radius comp on when on" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:64 +msgid "Cannot use axis values with g80" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:65 +msgid "Cannot use axis values without a g code that uses them" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:66 +msgid "Cannot use g28 or g30 with cutter radius comp" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:67 +msgid "Cannot use g53 incremental" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:68 +msgid "Cannot use g53 with cutter radius comp" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:69 +msgid "Cannot use two g codes that both use axis values" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:70 +msgid "Command too long" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:71 +msgid "Current point same as end point of arc" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:72 +msgid "Dwell time missing with g4" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:73 +msgid "Dwell time p word missing with g82" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:74 +msgid "Dwell time p word missing with g86" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:75 +msgid "Dwell time p word missing with g88" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:76 +msgid "Dwell time p word missing with g89" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:77 +msgid "Equal sign missing in parameter setting" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:78 +msgid "F word missing with inverse time arc move" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:79 +msgid "F word missing with inverse time g1 move" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:80 +msgid "File ended with no percent sign" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:81 +msgid "File ended with no percent sign or program end" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:82 +msgid "File name too long" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:83 +msgid "G code out of range" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:84 +msgid "I word given for arc in yz plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:85 +msgid "I word missing with g87" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:86 +msgid "J word given for arc in xz plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:87 +msgid "J word missing with g87" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:88 +msgid "K word given for arc in xy plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:89 +msgid "K word missing with g87" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:90 +msgid "Left bracket missing after slash with atan" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:91 +msgid "Left bracket missing after unary operation name" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:92 +#, c-format +msgid "M code greater than 199: M%d" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:93 +msgid "Mixed radius ijk format for arc" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:94 +msgid "Multiple a words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:95 +msgid "Multiple b words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:96 +msgid "Multiple c words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:97 +msgid "Multiple d words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:98 +msgid "Multiple f words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:99 +msgid "Multiple h words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:100 +msgid "Multiple i words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:101 +msgid "Multiple j words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:102 +msgid "Multiple k words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:103 +msgid "Multiple l words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:104 +msgid "Multiple p words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:105 +msgid "Multiple q words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:106 +msgid "Multiple r words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:107 +msgid "Multiple s words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:108 +msgid "Multiple t words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:109 +msgid "Multiple x words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:110 +msgid "Multiple y words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:111 +msgid "Multiple z words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:112 +msgid "Must use g0 or g1 with g53" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:113 +msgid "Negative argument to sqrt" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:114 +msgid "Negative d word tool radius index used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:115 +msgid "Negative f word used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:116 +msgid "Negative g code used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:117 +msgid "Negative h word used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:118 +msgid "Negative l word used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:119 +msgid "Negative m code used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:120 +msgid "Negative or zero q value used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:121 +msgid "Negative p word used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:122 +msgid "Negative spindle speed used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:123 +msgid "Negative tool id used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:124 +msgid "Nested comment found" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:125 +msgid "No characters found in reading real value" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:126 +msgid "Non integer value for integer" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:127 +msgid "Null missing after newline" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:128 +msgid "Parameter file out of order" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:129 +msgid "Parameter number out of range" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:130 +msgid "Parameter is readonly" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:131 +msgid "Q word missing with g83" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:132 +msgid "Queue is not empty after probing" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:133 +msgid "R clearance plane unspecified in cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:134 +msgid "R i j k words all missing for arc" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:135 +msgid "R less than x in cycle in yz plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:136 +msgid "R less than y in cycle in xz plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:137 +msgid "R less than z in cycle in xy plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:138 +msgid "R word with no g code that uses it" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:139 +msgid "Slash missing after first atan argument" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:140 +msgid "Spindle not turning clockwise in g84" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:141 +msgid "Spindle not turning in g86" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:142 +msgid "Spindle not turning in g87" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:143 +msgid "Spindle not turning in g88" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:144 +msgid "Sscanf failed" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:145 +msgid "Start point too close to probe point" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:146 +msgid "Too many m codes on line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:147 +msgid "Pocket max too large" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:148 +msgid "Tool radius not less than arc radius with comp" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:149 +msgid "Two g codes used from same modal group" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:150 +msgid "Two m codes used from same modal group" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:151 +#, c-format +msgid "Unable to open file <%s>" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:152 +msgid "Unclosed comment found" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:153 +msgid "Unclosed expression" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:154 +msgid "Unknown g code used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:155 +#, c-format +msgid "Unknown m code used: M%d" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:156 +msgid "Unknown operation" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:157 +msgid "Unknown operation name starting with a" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:158 +msgid "Unknown operation name starting with m" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:159 +msgid "Unknown operation name starting with o" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:160 +msgid "Unknown operation name starting with x" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:161 +msgid "Unknown word starting with a" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:162 +msgid "Unknown word starting with c" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:163 +msgid "Unknown word starting with e" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:164 +msgid "Unknown word starting with f" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:165 +msgid "Unknown word starting with l" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:166 +msgid "Unknown word starting with r" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:167 +msgid "Unknown word starting with s" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:168 +msgid "Unknown word starting with t" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:169 +msgid "Unknown word where unary operation could be" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:170 +msgid "X and y words missing for arc in xy plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:171 +msgid "X and z words missing for arc in xz plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:172 +msgid "X value unspecified in yz plane canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:173 +msgid "Y and z words missing for arc in yz plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:174 +msgid "Y value unspecified in xz plane canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:175 +msgid "Z value unspecified in xy plane canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:176 +msgid "Zero or negative argument to ln" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:177 +msgid "Zero radius arc" +msgstr "0-säteinen kaari" + +#: src/emc/rs274ngc/rs274ngc_return.hh:178 +msgid "K word missing with g33/g33.1" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:179 +msgid "F word used with a g33/g33.1" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:180 +msgid "Unknown operation name starting with e" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:181 +msgid "Unknown operation name starting with n" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:182 +msgid "Unknown operation name starting with g" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:183 +msgid "Unknown operation name starting with l" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:184 +msgid "Too many subroutine parameters" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:185 +msgid "Too many subroutine levels" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:186 +msgid "Bug: call stack underrun" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:187 +msgid "Unknown control command in o word" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:188 +msgid "Too many oword labels" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:189 +msgid "Unknown oword number" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:190 +msgid "Nested subroutine definition" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:191 +msgid "Not in subroutine definition" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:192 +msgid "File not open" +msgstr "Tiedosto ei ole avoinna" + +#: src/emc/rs274ngc/rs274ngc_return.hh:193 +#, c-format +msgid "cannot reopen file %s - removed or renamed? (%s)" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:194 +msgid "Need tool prepared -Txx- for toolchange" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:195 +msgid "Cannot change planes with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:196 +msgid "Cutter radius compensation allowed only in XY, XZ planes" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:197 +msgid "P word missing with G76" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:198 +msgid "I J or K words missing with G76" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:199 +msgid "Cannot move rotary axes with G76" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:200 +msgid "Multiple e words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:201 +msgid "Named parameter not terminated" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:202 +msgid "Out of memory" +msgstr "Muisti loppu" + +#: src/emc/rs274ngc/rs274ngc_return.hh:203 +msgid "S word missing with G96" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:204 +msgid "Queue is not empty after external input" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:205 +msgid "Can't select analog input with wait type != immediate return" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:206 +msgid "Zero timeout with wait type != immediate return" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:207 +msgid "Invalid to select both a digital and an analog input with M66" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:208 +msgid "Need to have either a valid P or a valid E word with M66" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:209 +msgid "Q word missing with g73" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:210 +msgid "Digital input selected out of bounds" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:211 +msgid "Analog input selected out of bounds" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:212 +msgid "W value unspecified in UV plane canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:213 +msgid "U value unspecified in VW plane canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:214 +msgid "V value unspecified in UW plane canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:215 +msgid "R less than W in cycle in UV plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:216 +msgid "R less than U in cycle in VW plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:217 +msgid "R less than V in cycle in UW plane" +msgstr "" + +#: src/hal/utils/meter.c:200 +#, c-format +msgid "ERROR: '%s' is not a valid probe type\n" +msgstr "" + +#: src/hal/utils/meter.c:208 +#, c-format +msgid "ERROR: no pin/signal/parameter name\n" +msgstr "" + +#: src/hal/utils/meter.c:214 +#, c-format +msgid "" +"ERROR: -s option requires a probe type and a pin/signal/parameter name\n" +msgstr "" + +#: src/hal/utils/meter.c:240 tcl/tklinuxcnc.tcl:764 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6431 +msgid "Hal Meter" +msgstr "Hal-mittari" + +#: src/hal/utils/meter.c:290 +msgid "_Select" +msgstr "" + +#: src/hal/utils/meter.c:291 +msgid "E_xit" +msgstr "" + +#: src/hal/utils/meter.c:339 src/hal/utils/meter.c:367 +msgid "Select Item to Probe" +msgstr "" + +#: src/hal/utils/meter.c:669 +msgid " _Pins " +msgstr "" + +#: src/hal/utils/meter.c:670 +msgid " _Signals " +msgstr "" + +#: src/hal/utils/meter.c:671 +msgid " Para_meters " +msgstr "" + +#: src/hal/utils/meter.c:714 +msgid "_Close" +msgstr "" + +#: src/hal/utils/scope.c:126 +msgid "" +"Usage:\n" +" halscope [-h] [-i infile] [-o outfile] [num_samples]\n" +msgstr "" + +#: src/hal/utils/scope.c:479 src/hal/utils/scope.c:506 +msgid "Open Configuration File:" +msgstr "" + +#: src/hal/utils/scope.c:540 +msgid "_Open Configuration..." +msgstr "" + +#: src/hal/utils/scope.c:546 +msgid "_Save Configuration..." +msgstr "" + +#: src/hal/utils/scope.c:555 +msgid "O_pen Data File..." +msgstr "" + +#: src/hal/utils/scope.c:562 +msgid "S_ave Data File..." +msgstr "" + +#: src/hal/utils/scope.c:571 share/axis/tcl/axis.tcl:96 +msgid "_Quit" +msgstr "" + +#: src/hal/utils/scope.c:577 +msgid "_About Halscope" +msgstr "" + +#: src/hal/utils/scope.c:583 share/axis/tcl/axis.tcl:501 +msgid "_File" +msgstr "" + +#: src/hal/utils/scope.c:587 share/axis/tcl/axis.tcl:517 +msgid "_Help" +msgstr "" + +#: src/hal/utils/scope.c:646 +msgid "HAL Oscilloscope" +msgstr "HAL skooppi" + +#: src/hal/utils/scope.c:674 +msgid "Horizontal" +msgstr "" + +#: src/hal/utils/scope.c:682 +msgid "Selected Channel" +msgstr "Valittu kanava" + +#: src/hal/utils/scope.c:688 +msgid "Run Mode" +msgstr "" + +#: src/hal/utils/scope.c:691 +msgid "Trigger" +msgstr "" + +#: src/hal/utils/scope.c:697 +msgid "Vertical" +msgstr "" + +#: src/hal/utils/scope.c:705 share/axis/tcl/axis.tcl:138 +#: share/axis/tcl/axis.tcl:1269 src/emc/usr_intf/gscreen/gscreen.py:3416 +#: src/emc/usr_intf/gscreen/gscreen.py:3417 +#: src/emc/usr_intf/gscreen/gscreen.glade:2614 +msgid "Stop" +msgstr "Seis" + +#: src/hal/utils/scope.c:708 +msgid "Normal" +msgstr "" + +#: src/hal/utils/scope.c:711 +msgid "Single" +msgstr "" + +#: src/hal/utils/scope.c:714 +msgid "Roll" +msgstr "" + +#: src/hal/utils/scope_horiz.c:130 src/emc/usr_intf/gscreen/gscreen.glade:3419 +msgid "Zoom" +msgstr "Zoom" + +#: src/hal/utils/scope_horiz.c:131 +msgid " Pos " +msgstr "" + +#: src/hal/utils/scope_horiz.c:164 +msgid "" +"----- Samples\n" +"at ---- KHz" +msgstr "" + +#: src/hal/utils/scope_horiz.c:464 +msgid "Realtime component not loaded" +msgstr "" + +#: src/hal/utils/scope_horiz.c:465 +msgid "" +"HALSCOPE uses a realtime component called scope_rt'\n" +"to sample signals for display. It is not currently loaded\n" +"and attempting to load it automatically failed. More information\n" +"may be available in the terminal where halscope was started.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Load the component (using 'halcmd loadrt scope_rt'), then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" +msgstr "" + +#: src/hal/utils/scope_horiz.c:536 +msgid "Realtime function not linked" +msgstr "" + +#: src/hal/utils/scope_horiz.c:537 +msgid "" +"The HALSCOPE realtime sampling function\n" +"must be called from a HAL thread in to\n" +"determine the sampling rate.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Select a thread name and multiplier then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" +msgstr "" + +#: src/hal/utils/scope_horiz.c:544 +msgid "Select Sample Rate" +msgstr "Valitse näytteistysnopeus" + +#: src/hal/utils/scope_horiz.c:545 +msgid "" +"Select a thread name and multiplier then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" +msgstr "" + +#: src/hal/utils/scope_horiz.c:567 +msgid "Thread:" +msgstr "" + +#: src/hal/utils/scope_horiz.c:575 +msgid "Sample Period:" +msgstr "" + +#: src/hal/utils/scope_horiz.c:583 +msgid "Sample Rate:" +msgstr "" + +#: src/hal/utils/scope_horiz.c:599 src/emc/usr_intf/touchy/mdi.py:79 +#: src/emc/usr_intf/gscreen/mdi.py:78 +msgid "Thread" +msgstr "" + +#: src/hal/utils/scope_horiz.c:600 +msgid "Period" +msgstr "" + +#: src/hal/utils/scope_horiz.c:638 +msgid "Multiplier:" +msgstr "" + +#: src/hal/utils/scope_horiz.c:655 +msgid "Record Length" +msgstr "" + +#: src/hal/utils/scope_horiz.c:658 +#, c-format +msgid "%5d samples (1 channel)" +msgstr "" + +#: src/hal/utils/scope_horiz.c:660 +#, c-format +msgid "%5d samples (2 channels)" +msgstr "" + +#: src/hal/utils/scope_horiz.c:664 +#, c-format +msgid "%5d samples (4 channels)" +msgstr "" + +#: src/hal/utils/scope_horiz.c:668 +#, c-format +msgid "%5d samples (8 channels)" +msgstr "" + +#: src/hal/utils/scope_horiz.c:672 +#, c-format +msgid "%5d samples (16 channels)" +msgstr "" + +#: src/hal/utils/scope_horiz.c:727 src/hal/utils/scope_horiz.c:773 +#: src/hal/utils/scope_horiz.c:985 src/hal/utils/scope_vert.c:771 +#: src/hal/utils/scope_vert.c:863 tcl/bin/emccalib.tcl:232 +#: tcl/bin/genedit.tcl:180 tcl/bin/genedit.tcl:450 tcl/bin/halconfig.tcl:682 +#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:387 +#: tcl/bin/pickconfig.tcl:749 tcl/bin/pickconfig.tcl:799 tcl/mini.tcl:1456 +#: tcl/mini.tcl:2937 tcl/tklinuxcnc.tcl:160 tcl/tklinuxcnc.tcl:245 +#: tcl/tklinuxcnc.tcl:419 tcl/tklinuxcnc.tcl:1338 tcl/tklinuxcnc.tcl:1407 +#: tcl/tklinuxcnc.tcl:1438 tcl/tklinuxcnc.tcl:1469 tcl/tklinuxcnc.tcl:2017 +#: tcl/tklinuxcnc.tcl:2036 tcl/tklinuxcnc.tcl:2055 tcl/tklinuxcnc.tcl:2102 +#: src/emc/usr_intf/axis/scripts/axis.py:1106 +#: src/emc/usr_intf/axis/scripts/axis.py:1173 +#: src/emc/usr_intf/axis/scripts/axis.py:1508 +#: src/emc/usr_intf/axis/scripts/axis.py:2672 +#: src/emc/usr_intf/axis/scripts/axis.py:3599 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:718 +#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1828 +#: share/axis/tcl/axis.tcl:1865 +msgid "OK" +msgstr "OK" + +#: src/hal/utils/scope_horiz.c:732 src/hal/utils/scope_horiz.c:773 +#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 tcl/tooledit.tcl:468 +msgid "Quit" +msgstr "Lopeta" + +#: src/hal/utils/scope_horiz.c:764 +msgid "Realtime thread(s) not running" +msgstr "" + +#: src/hal/utils/scope_horiz.c:765 +msgid "" +"HALSCOPE uses code in a realtime HAL thread to sample\n" +"signals for display. The HAL thread(s) are not running.\n" +"Threads are usually started by the application you are\n" +"attempting to run, or you can use the 'halcmd start' command.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Start the threads, then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" +msgstr "" + +#: src/hal/utils/scope_horiz.c:798 +msgid "Pick log file to write to:" +msgstr "" + +#: src/hal/utils/scope_horiz.c:981 +msgid "Not enough channels" +msgstr "" + +#: src/hal/utils/scope_horiz.c:982 +msgid "" +"This record length cannot handle the channels\n" +"that are currently enabled. Pick a shorter\n" +"record length that supports more channels." +msgstr "" + +#: src/hal/utils/scope_horiz.c:1070 +#, c-format +msgid "" +"%s\n" +"per div" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1085 +#, c-format +msgid "" +"%s samples\n" +"at %s" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1189 +msgid "nSec" +msgstr "ns" + +#: src/hal/utils/scope_horiz.c:1192 +msgid "uSec" +msgstr "us" + +#: src/hal/utils/scope_horiz.c:1196 +msgid "mSec" +msgstr "m" + +#: src/hal/utils/scope_horiz.c:1200 src/emc/usr_intf/pncconf/pncconf.glade:2635 +#: src/emc/usr_intf/pncconf/pncconf.glade:3533 +#: src/emc/usr_intf/pncconf/pncconf.glade:4414 +#: src/emc/usr_intf/pncconf/pncconf.glade:5295 +msgid "Sec" +msgstr "s" + +#: src/hal/utils/scope_horiz.c:1217 src/emc/usr_intf/stepconf/spindle.glade:301 +#: src/emc/usr_intf/stepconf/axisx.glade:693 +#: src/emc/usr_intf/stepconf/axisy.glade:679 +#: src/emc/usr_intf/stepconf/axisz.glade:679 +#: src/emc/usr_intf/stepconf/axisa.glade:693 +#: src/emc/usr_intf/pncconf/pncconf.glade:8024 +#: src/emc/usr_intf/pncconf/pncconf.glade:8201 +#: src/emc/usr_intf/pncconf/pncconf.glade:8213 +msgid "Hz" +msgstr "Hz" + +#: src/hal/utils/scope_horiz.c:1220 +msgid "KHz" +msgstr "kHz" + +#: src/hal/utils/scope_horiz.c:1224 +msgid "Mhz" +msgstr "Mhz" + +#: src/hal/utils/scope_vert.c:413 src/hal/utils/scope_vert.c:1303 +#, c-format +msgid "" +"Offset\n" +"%s" +msgstr "" + +#: src/hal/utils/scope_vert.c:628 +msgid "Gain" +msgstr "Vahvistus" + +#: src/hal/utils/scope_vert.c:640 src/hal/utils/scope_trig.c:272 +msgid "Pos" +msgstr "" + +#: src/hal/utils/scope_vert.c:654 tcl/ngcgui_ttt.tcl:214 +#: src/emc/usr_intf/pncconf/pncconf.glade:64273 +msgid "Scale" +msgstr "" + +#: src/hal/utils/scope_vert.c:667 +msgid "Chan Off" +msgstr "" + +#: src/hal/utils/scope_vert.c:723 +msgid "Set Offset" +msgstr "" + +#: src/hal/utils/scope_vert.c:724 +#, c-format +msgid "" +"Set the vertical offset\n" +"for channel %d." +msgstr "" + +#: src/hal/utils/scope_vert.c:744 +msgid "AC Coupled" +msgstr "AC-kytketty" + +#: src/hal/utils/scope_vert.c:779 src/hal/utils/scope_vert.c:1215 +#: src/hal/utils/scope_trig.c:387 tcl/bin/emccalib.tcl:234 +#: tcl/bin/genedit.tcl:294 tcl/bin/halconfig.tcl:103 tcl/bin/halconfig.tcl:684 +#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:390 +#: tcl/bin/pickconfig.tcl:567 tcl/mini.tcl:1457 tcl/mini.tcl:2938 +#: tcl/mini.tcl:3110 tcl/tklinuxcnc.tcl:162 tcl/tklinuxcnc.tcl:213 +#: tcl/tklinuxcnc.tcl:420 tcl/tklinuxcnc.tcl:1339 tcl/tklinuxcnc.tcl:1408 +#: tcl/tklinuxcnc.tcl:1439 tcl/tklinuxcnc.tcl:1470 tcl/tklinuxcnc.tcl:2103 +#: src/emc/usr_intf/axis/scripts/axis.py:1453 +#: src/emc/usr_intf/axis/scripts/axis.py:1509 +#: src/emc/usr_intf/axis/scripts/axis.py:1699 +#: src/emc/usr_intf/axis/scripts/axis.py:2108 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:720 +#: src/emc/usr_intf/stepconf/main_page.glade:467 +#: src/emc/usr_intf/gscreen/gscreen.glade:3986 +msgid "Cancel" +msgstr "" + +#: src/hal/utils/scope_vert.c:859 +msgid "Too many channels" +msgstr "" + +#: src/hal/utils/scope_vert.c:860 +msgid "" +"You cannot add another channel.\n" +"\n" +"Either turn off one or more channels, or shorten\n" +"the record length to allow for more channels" +msgstr "" + +#: src/hal/utils/scope_vert.c:1074 +msgid "Select Channel Source" +msgstr "" + +#: src/hal/utils/scope_vert.c:1075 +#, c-format +msgid "" +"Select a pin, signal, or parameter\n" +"as the source for channel %d." +msgstr "" + +#: src/hal/utils/scope_vert.c:1107 +msgid "Pins" +msgstr "" + +#: src/hal/utils/scope_vert.c:1108 +msgid "Signals" +msgstr "Signaalit" + +#: src/hal/utils/scope_vert.c:1109 +msgid "Parameters" +msgstr "" + +#: src/hal/utils/scope_trig.c:110 +#, c-format +msgid "Falling" +msgstr "" + +#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:295 +#, c-format +msgid "Rising" +msgstr "" + +#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:303 +msgid "" +"Source\n" +"None" +msgstr "" + +#: src/hal/utils/scope_trig.c:124 +#, c-format +msgid "" +"Source\n" +"Chan %2d" +msgstr "" + +#: src/hal/utils/scope_trig.c:219 tcl/tklinuxcnc.tcl:827 +#: src/emc/usr_intf/touchy/touchy.glade:2469 +msgid "Auto" +msgstr "" + +#: src/hal/utils/scope_trig.c:221 +msgid "Force" +msgstr "" + +#: src/hal/utils/scope_trig.c:255 src/hal/utils/scope_trig.c:289 +msgid "Level" +msgstr "" + +#: src/hal/utils/scope_trig.c:323 +msgid "Trigger Source" +msgstr "" + +#: src/hal/utils/scope_trig.c:324 +msgid "Select a channel to use for triggering." +msgstr "" + +#: src/hal/utils/scope_trig.c:347 +msgid "Chan" +msgstr "" + +#: src/hal/utils/scope_trig.c:348 +msgid "Source" +msgstr "" + +#: src/emc/motion/control.c:270 +msgid "Unexpected realtime delay: check dmesg for details." +msgstr "" + +#: src/emc/motion/control.c:272 +#, c-format +msgid "" +"\n" +"In recent history there were\n" +"%ld, %ld, %ld, %ld, and %ld\n" +"elapsed clocks between calls to the motion controller.\n" +msgstr "" + +#: src/emc/motion/control.c:277 +#, c-format +msgid "" +"This time, there were %ld which is so anomalously\n" +"large that it probably signifies a problem with your\n" +"realtime configuration. For the rest of this run of\n" +"EMC, this message will be suppressed.\n" +"\n" +msgstr "" + +#: src/emc/motion/control.c:394 +msgid "G38.4 move finished without breaking contact." +msgstr "G38.4-liike valmis, kosketus ei katkennut" + +#: src/emc/motion/control.c:397 +msgid "G38.2 move finished without making contact." +msgstr "G38.2-liike valmis, ei kosketusta" + +#: src/emc/motion/control.c:412 +msgid "Probe tripped during non-probe MDI command." +msgstr "Mittapää kosketti ajettaessa mittaukseen liittymätöntä MDI-käskyä" + +#: src/emc/motion/control.c:440 +msgid "Probe tripped during homing motion." +msgstr "Mittapään kosketus ajettaessa kotiasemaan" + +#: src/emc/motion/control.c:444 +msgid "Probe tripped during a jog." +msgstr "Mittapään kosketus käsiajolla" + +#: src/emc/motion/control.c:622 +#, fuzzy +msgid "can't add coordinated return move" +msgstr "niveltä ei voi käsiajaa koordinoidussa tilassa" + +#: src/emc/motion/control.c:663 +#, fuzzy +msgid "can't add linear coordinated jog move" +msgstr "niveltä ei voi käsiajaa koordinoidussa tilassa" + +#: src/emc/motion/control.c:817 +#, c-format +msgid "fault %d during orient in progress" +msgstr "" + +#: src/emc/motion/control.c:957 +msgid "motion stopped by enable input" +msgstr "'enable'-tulo katkaisi" + +#: src/emc/motion/control.c:980 +#, c-format +msgid "joint %d on limit switch error" +msgstr "virhe, nivel %d rajalla" + +#: src/emc/motion/control.c:992 +#, c-format +msgid "joint %d amplifier fault" +msgstr "vahvistinvika nivelellä %d" + +#: src/emc/motion/control.c:1001 +#, c-format +msgid "joint %d following error" +msgstr "seurantavirhe nivelellä %d" + +#: src/emc/motion/control.c:1687 +#, c-format +msgid "Exceeded positive soft limit on joint %d" +msgstr "Nivelen %d positiivinen ohjelmallinen raja ylitetty" + +#: src/emc/motion/control.c:1692 +#, c-format +msgid "Exceeded negative soft limit on joint %d" +msgstr "Nivelen %d negatiivinen ohjelmallinen raja ylitetty" + +#: src/emc/motion/command.c:163 +#, c-format +msgid "Can't jog invalid joint number %d." +msgstr "Käsiajo ei onnistu, niveltä %d ei ole" + +#: src/emc/motion/command.c:167 +#, c-format +msgid "Can't jog joint %d further past max hard limit." +msgstr "Niveltä %d ei voi ajaa maksimirajan yli" + +#: src/emc/motion/command.c:172 +#, c-format +msgid "Can't jog joint %d further past min hard limit." +msgstr "Niveltä %d ei voi ajaa minimirajan yli" + +#: src/emc/motion/command.c:178 +#, c-format +msgid "Can't jog joint %d further past max soft limit." +msgstr "Niveltä %d ei voi ajaa ohjelmallisen maksimirajan yli" + +#: src/emc/motion/command.c:183 +#, c-format +msgid "Can't jog joint %d further past min soft limit." +msgstr "Niveltä %d ei voi ajaa ohjelmallisen minimirajan yli" + +#: src/emc/motion/command.c:243 +#, c-format +msgid "%s move on line %d would exceed joint %d's positive limit" +msgstr "%s liike rivillä %d ylittää nivelen %d positiivisen rajan" + +#: src/emc/motion/command.c:250 +#, c-format +msgid "%s move on line %d would exceed joint %d's negative limit" +msgstr "%s liike rivillä %d ylittää nivelen %d negatiivisen rajan" + +#: src/emc/motion/command.c:535 +msgid "all joints must be homed before going into coordinated mode" +msgstr "" +"kaikkien nivelien tulee olla kotiasemissaan ennen koordinoituun tilaan " +"siirtymistä" + +#: src/emc/motion/command.c:556 +msgid "all joints must be homed before going into teleop mode" +msgstr "" + +#: src/emc/motion/command.c:710 src/emc/motion/command.c:776 +#: src/emc/motion/command.c:849 +msgid "Can't jog joint in coordinated mode." +msgstr "niveltä ei voi käsiajaa koordinoidussa tilassa" + +#: src/emc/motion/command.c:715 src/emc/motion/command.c:781 +#: src/emc/motion/command.c:854 +msgid "Can't jog joint when not enabled." +msgstr "" + +#: src/emc/motion/command.c:720 src/emc/motion/command.c:859 +msgid "Can't jog any joints while homing." +msgstr "Niveliä ei voi käsiajaa, koska kone on ajamassa kotiasemaan" + +#: src/emc/motion/command.c:786 +msgid "Can't jog any joint while homing." +msgstr "Mitään niveltä ei voi käsiajaa samalla kun kone ajaa kotiasemaan." + +#: src/emc/motion/command.c:918 +msgid "need to be enabled, in coord mode for linear move" +msgstr "" + +#: src/emc/motion/command.c:928 +msgid "can't do linear move with limits exceeded" +msgstr "" + +#: src/emc/motion/command.c:954 +#, c-format +msgid "can't add linear move at line %d, error code %d" +msgstr "" + +#: src/emc/motion/command.c:982 +msgid "need to be enabled, in coord mode for circular move" +msgstr "" + +#: src/emc/motion/command.c:993 +msgid "can't do circular move with limits exceeded" +msgstr "" + +#: src/emc/motion/command.c:1015 +#, c-format +msgid "can't add circular move at line %d, error code %d" +msgstr "" + +#: src/emc/motion/command.c:1114 +msgid "MOTION: can't STEP while jogging" +msgstr "" + +#: src/emc/motion/command.c:1117 +msgid "MOTION: can't STEP while in return move" +msgstr "" + +#: src/emc/motion/command.c:1127 +#, c-format +msgid "MOTION: STEP while in state %d" +msgstr "" + +#: src/emc/motion/command.c:1229 +msgid "can't enable motion, enable input is false" +msgstr "" + +#: src/emc/motion/command.c:1302 +msgid "must be in joint mode to home" +msgstr "" + +#: src/emc/motion/command.c:1313 src/emc/motion/command.c:1324 +msgid "homing sequence already in progress" +msgstr "" + +#: src/emc/motion/command.c:1322 +msgid "homing already in progress" +msgstr "" + +#: src/emc/motion/command.c:1352 +msgid "must be in joint mode or disabled to unhome" +msgstr "" + +#: src/emc/motion/command.c:1364 src/emc/motion/command.c:1387 +#, c-format +msgid "Cannot unhome while homing, joint %d" +msgstr "" + +#: src/emc/motion/command.c:1368 src/emc/motion/command.c:1391 +#, c-format +msgid "Cannot unhome while moving, joint %d" +msgstr "" + +#: src/emc/motion/command.c:1396 +#, c-format +msgid "Cannot unhome inactive joint %d" +msgstr "" + +#: src/emc/motion/command.c:1400 +#, c-format +msgid "Cannot unhome invalid joint %d (max %d)" +msgstr "" + +#: src/emc/motion/command.c:1427 +msgid "need to be enabled, in coord mode for probe move" +msgstr "" + +#: src/emc/motion/command.c:1437 +msgid "can't do probe move with limits exceeded" +msgstr "" + +#: src/emc/motion/command.c:1451 +msgid "Probe is already clear when starting G38.4 or G38.5 move" +msgstr "" + +#: src/emc/motion/command.c:1453 +msgid "Probe is already tripped when starting G38.2 or G38.3 move" +msgstr "" + +#: src/emc/motion/command.c:1473 +msgid "can't add probe move" +msgstr "" + +#: src/emc/motion/command.c:1498 +msgid "need to be enabled, in coord mode for rigid tap move" +msgstr "" + +#: src/emc/motion/command.c:1509 +msgid "can't do rigid tap move with limits exceeded" +msgstr "" + +#: src/emc/motion/command.c:1526 +msgid "can't add rigid tap move" +msgstr "" + +#: src/emc/motion/command.c:1541 +msgid "need to be enabled, in teleop mode for teleop move" +msgstr "" + +#: src/emc/motion/command.c:1710 +#, c-format +msgid "joint %d: too many compensation entries" +msgstr "" + +#: src/emc/motion/command.c:1716 +#, c-format +msgid "joint %d: compensation values must increase" +msgstr "" + +#: src/emc/motion/command.c:1745 +#, c-format +msgid "unrecognized command %d" +msgstr "" + +#: src/emc/motion/motion.c:212 +msgid "MOTION: hal_init() failed\n" +msgstr "" + +#: src/emc/motion/motion.c:217 +#, c-format +msgid "MOTION: num_joints is %d, must be between 1 and %d\n" +msgstr "" + +#: src/emc/motion/motion.c:224 +#, c-format +msgid "MOTION: num_dio is %d, must be between 1 and %d\n" +msgstr "" + +#: src/emc/motion/motion.c:231 +#, c-format +msgid "MOTION: num_aio is %d, must be between 1 and %d\n" +msgstr "" + +#: src/emc/motion/motion.c:239 +msgid "MOTION: init_hal_io() failed\n" +msgstr "" + +#: src/emc/motion/motion.c:248 +msgid "MOTION: init_comm_buffers() failed\n" +msgstr "" + +#: src/emc/motion/motion.c:256 +msgid "MOTION: init_threads() failed\n" +msgstr "" + +#: src/emc/motion/motion.c:281 +#, c-format +msgid "MOTION: hal_stop_threads() failed, returned %d\n" +msgstr "" + +#: src/emc/motion/motion.c:294 +#, c-format +msgid "MOTION: rtapi_shmem_delete() failed, returned %d\n" +msgstr "" + +#: src/emc/motion/motion.c:300 +#, c-format +msgid "MOTION: hal_exit() failed, returned %d\n" +msgstr "" + +#: src/emc/motion/motion.c:323 +msgid "MOTION: emcmot_hal_data malloc failed\n" +msgstr "" + +#: src/emc/motion/motion.c:331 +msgid "MOTION: joints malloc failed\n" +msgstr "" + +#: src/emc/motion/motion.c:695 +#, c-format +msgid "MOTION: joint %d pin/param export failed\n" +msgstr "" + +#: src/emc/motion/homing.c:80 src/emc/motion/homing.c:748 +#, c-format +msgid "hit limit in home state %d" +msgstr "" + +#: src/emc/motion/homing.c:90 +#, c-format +msgid "end of move in home state %d" +msgstr "" + +#: src/emc/motion/homing.c:185 +#, c-format +msgid "unknown state '%d' during homing sequence" +msgstr "" + +#: src/emc/motion/homing.c:246 +msgid "Cannot home while shared home switch is closed" +msgstr "" + +#: src/emc/motion/homing.c:290 +msgid "" +"invalid homing config: non-zero LATCH_VEL needs either SEARCH_VEL or " +"USE_INDEX" +msgstr "" + +#: src/emc/motion/homing.c:299 +msgid "invalid homing config: non-zero SEARCH_VEL needs LATCH_VEL" +msgstr "" + +#: src/emc/motion/homing.c:447 +msgid "Home switch inactive before start of backoff move" +msgstr "" + +#: src/emc/motion/homing.c:495 +msgid "Home switch active before start of latch move" +msgstr "" + +#: src/emc/motion/homing.c:551 +msgid "Home switch inactive before start of latch move" +msgstr "" + +#: src/emc/motion/homing.c:797 +#, c-format +msgid "unknown state '%d' during homing" +msgstr "" + +#: tcl/bin/emccalib.tcl:80 +msgid "Machinekit Servo Axis Calibration" +msgstr "" + +#: tcl/bin/emccalib.tcl:90 +msgid "Save To File" +msgstr "" + +#: tcl/bin/emccalib.tcl:106 tcl/bin/genedit.tcl:77 tcl/bin/halconfig.tcl:151 +#: tcl/bin/halshow.tcl:85 tcl/mini.tcl:2516 tcl/tklinuxcnc.tcl:719 +#: tcl/ngcgui.tcl:489 +msgid "File" +msgstr "" + +#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:236 tcl/bin/halconfig.tcl:153 +#: tcl/mini.tcl:3558 src/emc/usr_intf/touchy/touchy.glade:2420 +msgid "Refresh" +msgstr "" + +#: tcl/bin/emccalib.tcl:110 tcl/bin/genedit.tcl:82 tcl/bin/halconfig.tcl:155 +#: tcl/mini.tcl:2535 src/emc/usr_intf/axis/scripts/axis.py:2107 +msgid "Save" +msgstr "" + +#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:623 +#, tcl-format +msgid "Tune %d" +msgstr "" + +#: tcl/bin/emccalib.tcl:162 tcl/bin/halconfig.tcl:628 +msgid "INI Name" +msgstr "" + +#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:629 +msgid "HAL's Value" +msgstr "" + +#: tcl/bin/emccalib.tcl:165 tcl/bin/halconfig.tcl:631 +msgid "Next Value" +msgstr "" + +#: tcl/bin/emccalib.tcl:230 tcl/bin/halconfig.tcl:680 tcl/bin/halconfig.tcl:731 +msgid "Test" +msgstr "" + +#: tcl/bin/emccalib.tcl:388 tcl/bin/halconfig.tcl:883 +#, tcl-format +msgid "" +"The HAL parameter \n" +" %s \n" +" has changed. \n" +" Really quit?" +msgstr "" + +#: tcl/bin/emccalib.tcl:413 tcl/bin/halconfig.tcl:1170 +msgid "" +"Not permitted to save here.\n" +"\n" +" You need to copy a configuration to your home directory and work there." +msgstr "" + +#: tcl/bin/emccalib.tcl:487 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 +#: tcl/bin/pickconfig.tcl:843 tcl/bin/pickconfig.tcl:854 +#: tcl/scripts/Set_Coordinates.tcl:205 tcl/scripts/Set_Coordinates.tcl:228 +#, tcl-format +msgid "can't save %s" +msgstr "" + +#: tcl/bin/emcdebug.tcl:166 tcl/bin/emcdebug.tcl:177 +msgid "LinuxCNC Debug" +msgstr "" + +#: tcl/bin/emcdebug.tcl:185 +msgid "Invalid INI file entries" +msgstr "" + +#: tcl/bin/emcdebug.tcl:186 +msgid "Configuration information" +msgstr "" + +#: tcl/bin/emcdebug.tcl:187 +msgid "Use of defaults" +msgstr "" + +#: tcl/bin/emcdebug.tcl:188 +msgid "Version information" +msgstr "" + +#: tcl/bin/emcdebug.tcl:189 +msgid "Command issuing" +msgstr "" + +#: tcl/bin/emcdebug.tcl:190 +msgid "IO points" +msgstr "" + +#: tcl/bin/emcdebug.tcl:191 +msgid "NML" +msgstr "" + +#: tcl/bin/emcdebug.tcl:192 +msgid "Motion time" +msgstr "" + +#: tcl/bin/emcdebug.tcl:193 src/emc/usr_intf/axis/scripts/debuglevel.py:42 +msgid "Interpreter" +msgstr "" + +#: tcl/bin/emcdebug.tcl:194 +msgid "RCS" +msgstr "" + +#: tcl/bin/emcdebug.tcl:195 +msgid "Trajectory level" +msgstr "" + +#: tcl/bin/emcdebug.tcl:196 +msgid "Interpreter list" +msgstr "" + +#: tcl/bin/genedit.tcl:78 tcl/mini.tcl:2533 +msgid "New" +msgstr "" + +#: tcl/bin/genedit.tcl:80 tcl/mini.tcl:1667 tcl/mini.tcl:2534 +#: tcl/tklinuxcnc.tcl:720 tcl/tklinuxcnc.tcl:1657 +msgid "Open..." +msgstr "" + +#: tcl/bin/genedit.tcl:84 tcl/mini.tcl:2536 +msgid "Save As..." +msgstr "" + +#: tcl/bin/genedit.tcl:87 tcl/bin/halconfig.tcl:165 tcl/bin/halshow.tcl:92 +#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1322 +#: tcl/ngcgui.tcl:3832 +msgid "Exit" +msgstr "" + +#: tcl/bin/genedit.tcl:91 tcl/mini.tcl:2517 +#: src/emc/usr_intf/gscreen/gscreen.glade:2685 +msgid "Edit" +msgstr "" + +#: tcl/bin/genedit.tcl:92 tcl/mini.tcl:2543 +msgid "Cut" +msgstr "" + +#: tcl/bin/genedit.tcl:94 tcl/mini.tcl:2544 +msgid "Copy" +msgstr "" + +#: tcl/bin/genedit.tcl:96 tcl/mini.tcl:2545 +msgid "Paste" +msgstr "" + +#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:73 +msgid "Select All" +msgstr "" + +#: tcl/bin/genedit.tcl:104 tcl/bin/halconfig.tcl:192 tcl/mini.tcl:919 +#: tcl/mini.tcl:2519 tcl/tklinuxcnc.tcl:790 +#: src/emc/usr_intf/stepconf/main_page.glade:445 +msgid "Help" +msgstr "" + +#: tcl/bin/genedit.tcl:105 tcl/mini.tcl:1011 tcl/mini.tcl:2559 +#: tcl/tklinuxcnc.tcl:796 +msgid "About..." +msgstr "" + +#: tcl/bin/genedit.tcl:130 +msgid "Save and Reload" +msgstr "" + +#: tcl/bin/genedit.tcl:133 tcl/mini.tcl:2550 +msgid "Find..." +msgstr "" + +#: tcl/bin/genedit.tcl:135 tcl/mini.tcl:2552 +msgid "Renumber File..." +msgstr "" + +#: tcl/bin/genedit.tcl:140 tcl/mini.tcl:917 tcl/mini.tcl:2518 +#: tcl/tklinuxcnc.tcl:746 src/emc/usr_intf/gmoccapy/gmoccapy.glade:5135 +msgid "Settings" +msgstr "" + +#: tcl/bin/genedit.tcl:141 tcl/mini.tcl:2554 +msgid "No Numbering" +msgstr "" + +#: tcl/bin/genedit.tcl:144 tcl/mini.tcl:2556 +msgid "Line Numbering..." +msgstr "" + +#: tcl/bin/genedit.tcl:150 tcl/tklinuxcnc.tcl:768 +msgid "Scripts" +msgstr "" + +#: tcl/bin/genedit.tcl:177 +msgid "About TkEditor" +msgstr "" + +#: tcl/bin/genedit.tcl:179 +msgid "" +"TkEditor\n" +"\n" +"Simple Tcl/Tk Text Editor\n" +"\n" +"GPL Version 2" +msgstr "" + +#: tcl/bin/genedit.tcl:267 tcl/mini.tcl:3090 +msgid "Find" +msgstr "" + +#: tcl/bin/genedit.tcl:270 +msgid "Find:" +msgstr "" + +#: tcl/bin/genedit.tcl:276 +msgid "Replace:" +msgstr "" + +#: tcl/bin/genedit.tcl:282 +msgid "Find All" +msgstr "" + +#: tcl/bin/genedit.tcl:285 tcl/mini.tcl:3113 +msgid "Replace All" +msgstr "" + +#: tcl/bin/genedit.tcl:288 +msgid "Skip This" +msgstr "" + +#: tcl/bin/genedit.tcl:291 +msgid "Replace This" +msgstr "" + +#: tcl/bin/genedit.tcl:297 +msgid "Clear" +msgstr "" + +#: tcl/bin/genedit.tcl:422 tcl/mini.tcl:2640 +msgid "Set Line Numbering" +msgstr "" + +#: tcl/bin/genedit.tcl:424 tcl/mini.tcl:2644 +msgid "Increment" +msgstr "" + +#: tcl/bin/genedit.tcl:426 tcl/mini.tcl:2646 +msgid "One" +msgstr "" + +#: tcl/bin/genedit.tcl:429 tcl/mini.tcl:2648 +msgid "Two" +msgstr "" + +#: tcl/bin/genedit.tcl:432 tcl/mini.tcl:2650 +msgid "Five" +msgstr "" + +#: tcl/bin/genedit.tcl:435 tcl/mini.tcl:2652 +msgid "Ten" +msgstr "" + +#: tcl/bin/genedit.tcl:439 tcl/mini.tcl:2654 +msgid "Space" +msgstr "" + +#: tcl/bin/genedit.tcl:441 tcl/mini.tcl:2656 +msgid "Single Space" +msgstr "" + +#: tcl/bin/genedit.tcl:444 tcl/mini.tcl:2658 +msgid "Double Space" +msgstr "" + +#: tcl/bin/genedit.tcl:447 tcl/mini.tcl:2660 +msgid "Tab Space" +msgstr "" + +#: tcl/bin/genedit.tcl:453 +msgid "Next Number:" +msgstr "" + +#: tcl/bin/genedit.tcl:474 tcl/mini.tcl:2668 +msgid "Renumber" +msgstr "" + +#: tcl/bin/halconfig.tcl:88 tcl/bin/halshow.tcl:33 +msgid "HAL Configuration" +msgstr "" + +#: tcl/bin/halconfig.tcl:103 +msgid "Would you like to save your configuration before you exit?" +msgstr "" + +#: tcl/bin/halconfig.tcl:103 +msgid "Save All" +msgstr "" + +#: tcl/bin/halconfig.tcl:103 +msgid "Save Tune" +msgstr "" + +#: tcl/bin/halconfig.tcl:103 +msgid "Save as Netlist" +msgstr "" + +#: tcl/bin/halconfig.tcl:103 +msgid "Don't Save" +msgstr "" + +#: tcl/bin/halconfig.tcl:132 +msgid "Show" +msgstr "" + +#: tcl/bin/halconfig.tcl:133 +msgid "Watch" +msgstr "" + +#: tcl/bin/halconfig.tcl:134 +msgid "Modify" +msgstr "" + +#: tcl/bin/halconfig.tcl:157 +msgid "Save INI Tuning" +msgstr "" + +#: tcl/bin/halconfig.tcl:159 +msgid "Save HAL Ini" +msgstr "" + +#: tcl/bin/halconfig.tcl:161 +msgid "Save HAL Net" +msgstr "" + +#: tcl/bin/halconfig.tcl:163 +msgid "Save and Exit" +msgstr "" + +#: tcl/bin/halconfig.tcl:168 tcl/mini.tcl:916 tcl/tklinuxcnc.tcl:739 +msgid "View" +msgstr "" + +#: tcl/bin/halconfig.tcl:170 tcl/bin/halshow.tcl:104 +msgid "Expand Tree" +msgstr "" + +#: tcl/bin/halconfig.tcl:172 tcl/bin/halshow.tcl:106 +msgid "Collapse Tree" +msgstr "" + +#: tcl/bin/halconfig.tcl:175 tcl/bin/halshow.tcl:109 +msgid "Expand Pins" +msgstr "" + +#: tcl/bin/halconfig.tcl:177 tcl/bin/halshow.tcl:111 +msgid "Expand Parameters" +msgstr "" + +#: tcl/bin/halconfig.tcl:179 tcl/bin/halshow.tcl:113 +msgid "Expand Signals" +msgstr "" + +#: tcl/bin/halconfig.tcl:182 tcl/bin/halshow.tcl:116 +msgid "Erase Watch" +msgstr "" + +#: tcl/bin/halconfig.tcl:194 tcl/mini.tcl:840 tcl/mini.tcl:2785 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "About" +msgstr "" + +#: tcl/bin/halconfig.tcl:196 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2579 +msgid "Main" +msgstr "" + +#: tcl/bin/halconfig.tcl:476 +msgid "Enter HAL command :" +msgstr "" + +#: tcl/bin/halconfig.tcl:479 tcl/bin/halconfig.tcl:528 tcl/bin/halshow.tcl:354 +msgid "Execute" +msgstr "" + +#: tcl/bin/halconfig.tcl:943 tcl/bin/halshow.tcl:405 +msgid "Select a node to show." +msgstr "" + +#: tcl/bin/halconfig.tcl:968 tcl/bin/halshow.tcl:429 +msgid "<-- Select a Leaf. Click on its name." +msgstr "" + +#: tcl/bin/halconfig.tcl:1085 tcl/bin/halconfig.tcl:1095 +#: tcl/bin/halconfig.tcl:1102 tcl/bin/halconfig.tcl:1109 +#: tcl/bin/halconfig.tcl:1116 +#, tcl-format +msgid "Click a highlighted entry where %s should go." +msgstr "" + +#: tcl/bin/halconfig.tcl:1092 +msgid "Nothing to be done for parameters here. Try the tuning page" +msgstr "" + +#: tcl/bin/halconfig.tcl:1124 +#, tcl-format +msgid "%s is not a leaf, try again" +msgstr "" + +#: tcl/bin/halconfig.tcl:1281 +msgid "" +"Copyright Raymond E Henry. 2006\n" +"License: GPL Version 2\n" +"\n" +"Halconfig is an LinuxCNC configuration tool. It requires that you have " +"started an instance of linuxcnc.\n" +"\n" +"This script carries no warranty or liability for its use to the extent " +"allowed by law." +msgstr "" + +#: tcl/bin/halshow.tcl:69 +msgid " SHOW " +msgstr "" + +#: tcl/bin/halshow.tcl:70 +msgid " WATCH " +msgstr "" + +#: tcl/bin/halshow.tcl:90 +msgid "Load Watch List" +msgstr "" + +#: tcl/bin/halshow.tcl:102 +msgid "Tree View" +msgstr "" + +#: tcl/bin/halshow.tcl:349 +msgid "Test HAL command :" +msgstr "" + +#: tcl/bin/halshow.tcl:544 +msgid "Load a watch list" +msgstr "" + +#: tcl/bin/halshow.tcl:567 +msgid "Save current watch list" +msgstr "" + +#: tcl/bin/halshow.tcl:581 +msgid "Commands may be tested here but they will NOT be saved" +msgstr "" + +#: tcl/bin/pickconfig.tcl:96 +msgid "" +"Can't find the bwidget 1.7 package. There is a debian bwidget package; " +"install \n" +"it with sudo apt-get install bwidget." +msgstr "" + +#: tcl/bin/pickconfig.tcl:154 +msgid "Machinekit Configuration Selector" +msgstr "" + +#: tcl/bin/pickconfig.tcl:296 +msgid "No details available." +msgstr "" + +#: tcl/bin/pickconfig.tcl:343 +msgid "" +"Welcome to MachineKit.\n" +"\n" +"Select a machine configuration from the list on the left.\n" +"Details about the selected configuration will appear in the display on the " +"right.\n" +"Click 'OK' to run the selected configuration" +msgstr "" + +#: tcl/bin/pickconfig.tcl:401 +msgid "My Configurations" +msgstr "" + +#: tcl/bin/pickconfig.tcl:405 +msgid "Sample Configurations" +msgstr "" + +#: tcl/bin/pickconfig.tcl:530 +#, tcl-format +msgid "ERROR: no configurations found in path '%s'" +msgstr "" + +#: tcl/bin/pickconfig.tcl:567 +msgid "Copy Configuration?" +msgstr "" + +#: tcl/bin/pickconfig.tcl:567 +#, tcl-format +msgid "" +"Would you like to copy the %s configuration to your home directory so you " +"can customize it?" +msgstr "" + +#: tcl/bin/pickconfig.tcl:567 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:563 +msgid "Yes" +msgstr "" + +#: tcl/bin/pickconfig.tcl:749 +msgid "Configuration Copied" +msgstr "" + +#: tcl/bin/pickconfig.tcl:749 +#, tcl-format +msgid "" +"The configuration file has been copied to %s. Next time, choose this " +"location when starting MachineKit." +msgstr "" + +#: tcl/bin/pickconfig.tcl:799 +msgid "Shortcut Created" +msgstr "" + +#: tcl/bin/pickconfig.tcl:799 +msgid "" +"A shortcut to this configuration file has been created on your desktop. You " +"can use it to automatically launch this configuration." +msgstr "" + +#: tcl/bin/pickconfig.tcl:805 +msgid "Create Desktop Shortcut" +msgstr "" + +#: tcl/bin/tkbackplot.tcl:110 +msgid "TkLinuxCNC BackPlot" +msgstr "" + +#: tcl/bin/tkbackplot.tcl:125 +msgid "SETUP" +msgstr "" + +#: tcl/bin/tkbackplot.tcl:127 +msgid "RESET" +msgstr "" + +#: tcl/bin/tkbackplot.tcl:129 +msgid "CANCEL" +msgstr "" + +#: tcl/bin/tkbackplot.tcl:250 +msgid "AXIS" +msgstr "" + +#: tcl/bin/tkbackplot.tcl:251 +msgid "OFFSET" +msgstr "" + +#: tcl/bin/tkbackplot.tcl:252 +msgid "ANGLE" +msgstr "" + +#: tcl/bin/tkbackplot.tcl:253 +msgid "DIRECTION" +msgstr "" + +#: tcl/bin/tkbackplot.tcl:270 +msgid "SIZE :" +msgstr "" + +#: tcl/mini.tcl:490 +#, tcl-format +msgid "JOG %s +" +msgstr "" + +#: tcl/mini.tcl:491 +#, tcl-format +msgid "JOG %s -" +msgstr "" + +#: tcl/mini.tcl:492 +#, tcl-format +msgid "" +"%s\n" +"\n" +"Z\n" +"E\n" +"R\n" +"O" +msgstr "" + +#: tcl/mini.tcl:840 +msgid "" +"TkMini \n" +"\n" +"Tcl/Tk GUI for Enhanced Machine Controller\n" +"\n" +"GPL Copyright 2003 \n" +"Ray Henry \n" +"\n" +" 3D backplotter by Paul Corner \n" +" \n" +"This software comes with ABSOLUTELY NO GUARANTEE! \n" +"For details see the copyright.html file in this directory." +msgstr "" + +#: tcl/mini.tcl:915 +msgid "Program" +msgstr "" + +#: tcl/mini.tcl:918 +msgid "Info" +msgstr "" + +#: tcl/mini.tcl:923 +msgid "Backplot" +msgstr "" + +#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:5915 +msgid "Editor" +msgstr "" + +#: tcl/mini.tcl:927 +msgid "Offsets" +msgstr "" + +#: tcl/mini.tcl:929 +msgid "Tools" +msgstr "" + +#: tcl/mini.tcl:951 tcl/mini.tcl:3565 tcl/tklinuxcnc.tcl:732 +msgid "Reset" +msgstr "" + +#: tcl/mini.tcl:960 +msgid "Position Type" +msgstr "" + +#: tcl/mini.tcl:962 +msgid "Tool Info" +msgstr "" + +#: tcl/mini.tcl:964 +msgid "Offset Info" +msgstr "" + +#: tcl/mini.tcl:967 +msgid "Show Restart" +msgstr "" + +#: tcl/mini.tcl:968 +msgid "Hide Restart" +msgstr "" + +#: tcl/mini.tcl:970 +msgid "Show Split Right" +msgstr "" + +#: tcl/mini.tcl:972 +msgid "Show Mode Full" +msgstr "" + +#: tcl/mini.tcl:974 +msgid "Show Popin Full" +msgstr "" + +#: tcl/mini.tcl:978 +msgid "Actual Position" +msgstr "" + +#: tcl/mini.tcl:980 +msgid "Commanded Position" +msgstr "" + +#: tcl/mini.tcl:983 +msgid "Machine Position" +msgstr "" + +#: tcl/mini.tcl:985 +msgid "Relative Position" +msgstr "" + +#: tcl/mini.tcl:988 tcl/tklinuxcnc.tcl:747 +msgid "Calibration..." +msgstr "" + +#: tcl/mini.tcl:990 +msgid "HAL Show..." +msgstr "" + +#: tcl/mini.tcl:992 +msgid "HAL Config..." +msgstr "" + +#: tcl/mini.tcl:997 +msgid "Program File" +msgstr "" + +#: tcl/mini.tcl:998 +#, tcl-format +msgid "Program file is %s" +msgstr "" + +#: tcl/mini.tcl:999 +msgid "Editor File" +msgstr "" + +#: tcl/mini.tcl:1000 +#, tcl-format +msgid "Editor file is %s" +msgstr "" + +#: tcl/mini.tcl:1001 +msgid "Parameter File" +msgstr "" + +#: tcl/mini.tcl:1002 +#, tcl-format +msgid "Parameter file is %s" +msgstr "" + +#: tcl/mini.tcl:1003 +msgid "Tool File" +msgstr "" + +#: tcl/mini.tcl:1004 +#, tcl-format +msgid "Tool file is %s" +msgstr "" + +#: tcl/mini.tcl:1006 +msgid "Active G Codes" +msgstr "" + +#: tcl/mini.tcl:1007 +#, tcl-format +msgid "" +"Active codes include; \n" +"%s" +msgstr "" + +#: tcl/mini.tcl:1010 tcl/mini.tcl:2558 tcl/tklinuxcnc.tcl:791 +msgid "Help..." +msgstr "" + +#: tcl/mini.tcl:1027 tcl/tklinuxcnc.tcl:890 +msgid "ABORT" +msgstr "" + +#: tcl/mini.tcl:1038 tcl/mini.tcl:2048 +msgid "CONTINUE" +msgstr "" + +#: tcl/mini.tcl:1044 tcl/tklinuxcnc.tcl:828 tcl/tklinuxcnc.tcl:2248 +#: src/emc/usr_intf/touchy/touchy.glade:1264 +msgid "MDI" +msgstr "" + +#: tcl/mini.tcl:1048 tcl/tklinuxcnc.tcl:2239 +msgid "AUTO" +msgstr "" + +#: tcl/mini.tcl:1052 tcl/mini.tcl:1812 tcl/tklinuxcnc.tcl:2141 +#: tcl/tklinuxcnc.tcl:2261 +msgid "MANUAL" +msgstr "" + +#: tcl/mini.tcl:1106 +msgid "Tool #:" +msgstr "" + +#: tcl/mini.tcl:1108 +msgid "Length :" +msgstr "" + +#: tcl/mini.tcl:1119 +msgid "Work Offsets: " +msgstr "" + +#: tcl/mini.tcl:1121 +msgid "start offsets popup here" +msgstr "" + +#: tcl/mini.tcl:1165 +msgid "start override popup here" +msgstr "" + +#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1739 +msgid "Feed Override:" +msgstr "" + +#: tcl/mini.tcl:1180 +msgid "-- MESSAGES --" +msgstr "" + +#: tcl/mini.tcl:1230 +msgid "toggleView's not doin nothin yet" +msgstr "" + +#: tcl/mini.tcl:1282 +msgid "Can't set zero with a tool offset active so I issued G49 to cancel it." +msgstr "" + +#: tcl/mini.tcl:1346 +#, tcl-format +msgid "Can't update the var file while machine is in auto and %s." +msgstr "" + +#: tcl/mini.tcl:1400 tcl/tklinuxcnc.tcl:1227 +msgid "override limits" +msgstr "" + +#: tcl/mini.tcl:1405 tcl/tklinuxcnc.tcl:1263 +msgid "home" +msgstr "" + +#: tcl/mini.tcl:1426 +msgid "DEFAULT" +msgstr "" + +#: tcl/mini.tcl:1427 +msgid "Speed:" +msgstr "" + +#: tcl/mini.tcl:1430 +msgid "RAPID" +msgstr "" + +#: tcl/mini.tcl:1447 tcl/tklinuxcnc.tcl:1391 +msgid "Set Jog Speed" +msgstr "" + +#: tcl/mini.tcl:1453 tcl/tklinuxcnc.tcl:1404 +msgid "Set jog speed:" +msgstr "" + +#: tcl/mini.tcl:1511 +msgid "JOG X +" +msgstr "" + +#: tcl/mini.tcl:1512 +msgid "JOG X -" +msgstr "" + +#: tcl/mini.tcl:1516 +msgid "increment" +msgstr "" + +#: tcl/mini.tcl:1518 tcl/tklinuxcnc.tcl:602 tcl/tklinuxcnc.tcl:1249 +#: tcl/tklinuxcnc.tcl:1253 src/emc/usr_intf/gscreen/gscreen.glade:1574 +#: src/emc/usr_intf/gscreen/gscreen.glade:1586 +msgid "continuous" +msgstr "" + +#: tcl/mini.tcl:1520 +msgid "" +"A\n" +"L\n" +"L\n" +"\n" +"Z\n" +"E\n" +"R\n" +"O" +msgstr "" + +#: tcl/mini.tcl:1588 src/emc/usr_intf/touchy/touchy.glade:1422 +msgid "Spindle Forward" +msgstr "" + +#: tcl/mini.tcl:1589 src/emc/usr_intf/touchy/touchy.glade:1433 +msgid "Spindle Reverse" +msgstr "" + +#: tcl/mini.tcl:1590 tcl/tklinuxcnc.tcl:871 +msgid "Spindle off" +msgstr "" + +#: tcl/mini.tcl:1592 src/emc/usr_intf/touchy/touchy.glade:1479 +msgid "Spindle Slower" +msgstr "" + +#: tcl/mini.tcl:1596 src/emc/usr_intf/touchy/touchy.glade:1464 +msgid "Spindle Faster" +msgstr "" + +#: tcl/mini.tcl:1632 tcl/tklinuxcnc.tcl:1620 +msgid "MDI:" +msgstr "" + +#: tcl/mini.tcl:1669 tcl/tklinuxcnc.tcl:1658 +#: src/emc/usr_intf/stepconf/main_page.glade:298 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2625 +msgid "Run" +msgstr "" + +#: tcl/mini.tcl:1671 tcl/tklinuxcnc.tcl:1659 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2638 +msgid "Pause" +msgstr "" + +#: tcl/mini.tcl:1673 tcl/tklinuxcnc.tcl:1660 +msgid "Resume" +msgstr "" + +#: tcl/mini.tcl:1675 tcl/tklinuxcnc.tcl:1661 +msgid "Step" +msgstr "" + +#: tcl/mini.tcl:1677 tcl/tklinuxcnc.tcl:1662 +msgid "Verify" +msgstr "" + +#: tcl/mini.tcl:1698 +msgid "RESTART LINE" +msgstr "" + +#: tcl/mini.tcl:1699 src/emc/usr_intf/stepconf/main_page.glade:531 +msgid "Back" +msgstr "" + +#: tcl/mini.tcl:1700 +msgid "Ahead" +msgstr "" + +#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1300 +#: src/emc/usr_intf/gscreen/gscreen.glade:3973 +msgid "Restart" +msgstr "" + +#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 tcl/tklinuxcnc.tcl:465 +#: src/emc/usr_intf/axis/scripts/axis.py:2023 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:754 +msgid "All files" +msgstr "" + +#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 tcl/tklinuxcnc.tcl:466 +msgid "Text files" +msgstr "" + +#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 tcl/tklinuxcnc.tcl:467 +msgid "NC files" +msgstr "" + +#: tcl/mini.tcl:1753 +msgid "" +"The interpreter is running. \n" +" Pressing OK will abort and load the new program" +msgstr "" + +#: tcl/mini.tcl:1886 +msgid "ESTOPPED" +msgstr "" + +#: tcl/mini.tcl:1889 +msgid "ESTOP PUSH" +msgstr "" + +#: tcl/mini.tcl:1892 tcl/tklinuxcnc.tcl:2233 +msgid "ESTOP RESET" +msgstr "" + +#: tcl/mini.tcl:1897 tcl/tklinuxcnc.tcl:2298 +msgid "SPINDLE FORWARD" +msgstr "" + +#: tcl/mini.tcl:1899 tcl/tklinuxcnc.tcl:2300 +msgid "SPINDLE REVERSE" +msgstr "" + +#: tcl/mini.tcl:1901 tcl/tklinuxcnc.tcl:2302 +msgid "SPINDLE OFF" +msgstr "" + +#: tcl/mini.tcl:1903 tcl/tklinuxcnc.tcl:2304 +msgid "SPINDLE INCREASE" +msgstr "" + +#: tcl/mini.tcl:1905 tcl/tklinuxcnc.tcl:2306 +msgid "SPINDLE DECREASE" +msgstr "" + +#: tcl/mini.tcl:1907 tcl/tklinuxcnc.tcl:2308 +msgid "SPINDLE ?" +msgstr "" + +#: tcl/mini.tcl:1911 tcl/tklinuxcnc.tcl:2312 +msgid "BRAKE ON" +msgstr "" + +#: tcl/mini.tcl:1913 tcl/tklinuxcnc.tcl:2314 +msgid "BRAKE OFF" +msgstr "" + +#: tcl/mini.tcl:1915 tcl/tklinuxcnc.tcl:2316 +msgid "BRAKE ?" +msgstr "" + +#: tcl/mini.tcl:1919 tcl/tklinuxcnc.tcl:2274 +msgid "MIST ON" +msgstr "" + +#: tcl/mini.tcl:1921 tcl/tklinuxcnc.tcl:2276 +msgid "MIST OFF" +msgstr "" + +#: tcl/mini.tcl:1923 tcl/tklinuxcnc.tcl:2278 +msgid "MIST ?" +msgstr "" + +#: tcl/mini.tcl:1927 tcl/tklinuxcnc.tcl:2282 +msgid "FLOOD ON" +msgstr "" + +#: tcl/mini.tcl:1929 tcl/tklinuxcnc.tcl:2284 +msgid "FLOOD OFF" +msgstr "" + +#: tcl/mini.tcl:1931 tcl/tklinuxcnc.tcl:2286 +msgid "FLOOD ?" +msgstr "" + +#: tcl/mini.tcl:2052 +msgid "FEEDHOLD" +msgstr "" + +#: tcl/mini.tcl:2124 +msgid "" +"TOOL SETUP \n" +" Click or tab to edit. Press enter to return to keyboard machine control." +msgstr "" + +#: tcl/mini.tcl:2130 +msgid " TOOL NUMBER " +msgstr "" + +#: tcl/mini.tcl:2131 +msgid " LENGTH " +msgstr "" + +#: tcl/mini.tcl:2132 +msgid " DIAMETER " +msgstr "" + +#: tcl/mini.tcl:2133 +msgid " COMMENT " +msgstr "" + +#: tcl/mini.tcl:2188 +msgid "Add Extra Tool" +msgstr "" + +#: tcl/mini.tcl:2189 +msgid "Remove Last Tool" +msgstr "" + +#: tcl/mini.tcl:2217 tcl/mini.tcl:2253 +#, tcl-format +msgid "Can't update the tool file while machine is in auto and %s." +msgstr "" + +#: tcl/mini.tcl:2229 +msgid "This is not a good number." +msgstr "" + +#: tcl/mini.tcl:2293 +msgid "" +"COORDINATE SYSTEM SETUP \n" +"\n" +" Click value to edit with keyboard. Press enter to return to keyboard " +"control of machine. \n" +" " +msgstr "" + +#: tcl/mini.tcl:2320 tcl/scripts/Set_Coordinates.tcl:80 +msgid "Axis " +msgstr "" + +#: tcl/mini.tcl:2321 +msgid "Value " +msgstr "" + +#: tcl/mini.tcl:2326 tcl/scripts/Set_Coordinates.tcl:91 +msgid "Teach" +msgstr "" + +#: tcl/mini.tcl:2334 +msgid "Write And Load File " +msgstr "" + +#: tcl/mini.tcl:2336 +msgid "Offset By Radius" +msgstr "" + +#: tcl/mini.tcl:2337 +msgid "Offset By Length" +msgstr "" + +#: tcl/mini.tcl:2342 +msgid "Subtract" +msgstr "" + +#: tcl/mini.tcl:2344 src/emc/usr_intf/gmoccapy/gmoccapy.glade:6712 +msgid "Add" +msgstr "" + +#: tcl/mini.tcl:2366 +msgid "Zero All G54" +msgstr "" + +#: tcl/mini.tcl:2367 +msgid "Zero All G55" +msgstr "" + +#: tcl/mini.tcl:2368 +msgid "Zero All G56" +msgstr "" + +#: tcl/mini.tcl:2369 +msgid "Zero All G57" +msgstr "" + +#: tcl/mini.tcl:2370 +msgid "Zero All G58" +msgstr "" + +#: tcl/mini.tcl:2371 +msgid "Zero All G59" +msgstr "" + +#: tcl/mini.tcl:2372 +msgid "Zero All G59.1" +msgstr "" + +#: tcl/mini.tcl:2373 +msgid "Zero All G59.2" +msgstr "" + +#: tcl/mini.tcl:2374 +msgid "Zero All G59.3" +msgstr "" -#: emc/motion/control.c:1423 -#, c-format -msgid "Exceeded positive soft limit on joint %d" -msgstr "Nivelen %d positiivinen ohjelmallinen raja ylitetty" +#: tcl/mini.tcl:2375 +msgid "Zero All ????" +msgstr "" -#: emc/motion/control.c:1428 -#, c-format -msgid "Exceeded negative soft limit on joint %d" -msgstr "Nivelen %d negatiivinen ohjelmallinen raja ylitetty" +#: tcl/mini.tcl:2493 +msgid "Modified..." +msgstr "" -#: emc/motion/command.c:159 -#, c-format -msgid "Can't jog invalid joint number %d." -msgstr "Käsiajo ei onnistu, niveltä %d ei ole" +#: tcl/mini.tcl:2538 +msgid "Save and Load" +msgstr "" -#: emc/motion/command.c:163 -#, c-format -msgid "Can't jog joint %d further past max hard limit." -msgstr "Niveltä %d ei voi ajaa maksimirajan yli" +#: tcl/mini.tcl:2540 src/emc/usr_intf/gscreen/gscreen.glade:3515 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2363 +msgid "Undo" +msgstr "" -#: emc/motion/command.c:168 -#, c-format -msgid "Can't jog joint %d further past min hard limit." -msgstr "Niveltä %d ei voi ajaa minimirajan yli" +#: tcl/mini.tcl:2541 src/emc/usr_intf/gscreen/gscreen.glade:3526 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2411 +msgid "Redo" +msgstr "" -#: emc/motion/command.c:174 -#, c-format -msgid "Can't jog joint %d further past max soft limit." -msgstr "Niveltä %d ei voi ajaa ohjelmallisen maksimirajan yli" +#: tcl/mini.tcl:2546 tcl/tooledit.tcl:488 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6695 +msgid "Delete" +msgstr "" -#: emc/motion/command.c:179 -#, c-format -msgid "Can't jog joint %d further past min soft limit." -msgstr "Niveltä %d ei voi ajaa ohjelmallisen minimirajan yli" +#: tcl/mini.tcl:2551 +msgid "Replace..." +msgstr "" -#: emc/motion/command.c:237 -#, c-format -msgid "%s move on line %d would exceed joint %d's positive limit" -msgstr "%s liike rivillä %d ylittää nivelen %d positiivisen rajan" +#: tcl/mini.tcl:2664 +msgid "Next Number: " +msgstr "" -#: emc/motion/command.c:240 -#, c-format -msgid "%s move in MDI would exceed joint %d's positive limit" -msgstr "%s liike MDI-käskyssä ylittää nivelen %d positiivisen rajan" +#: tcl/mini.tcl:2765 +msgid "Basic Help" +msgstr "" -#: emc/motion/command.c:247 -#, c-format -msgid "%s move on line %d would exceed joint %d's negative limit" -msgstr "%s liike rivillä %d ylittää nivelen %d negatiivisen rajan" +#: tcl/mini.tcl:2765 +msgid "" +"This is a simple ASCII editor like many others.\n" +"\n" +"Ctrl+O Open\n" +"Ctrl+S Save\n" +"Ctrl+Z Undo\n" +"Ctrl+Y Redo\n" +"Ctrl+X Cut\n" +"Ctrl+C Copy\n" +"Ctrl+V Paste\n" +"Del Delete\n" +"Ctrl+A Select All\n" +"\n" +"Ctrl+F Find\n" +"Ctrl+R Replace " +msgstr "" -#: emc/motion/command.c:250 -#, c-format -msgid "%s move in MDI would exceed joint %d's negative limit" -msgstr "%s liike MDI-käskyssä ylittää nivelen %d negatiivisen rajan" +#: tcl/mini.tcl:2785 +msgid "" +"tknotepad by Joseph Acosta. \n" +"\n" +" Modified for EMC by: Paul Corner " +msgstr "" -#: emc/motion/command.c:500 -msgid "all joints must be homed before going into coordinated mode" +#: tcl/mini.tcl:2793 +msgid "" +"The contents of this file may have changed, do you wish to to save your " +"changes?" msgstr "" -"kaikkien nivelien tulee olla kotiasemissaan ennen koordinoituun tilaan " -"siirtymistä" -#: emc/motion/command.c:521 -msgid "all joints must be homed before going into teleop mode" +#: tcl/mini.tcl:2794 +msgid "New Confirm?" msgstr "" -#: emc/motion/command.c:675 emc/motion/command.c:741 emc/motion/command.c:814 -msgid "Can't jog joint in coordinated mode." -msgstr "niveltä ei voi käsiajaa koordinoidussa tilassa" +#: tcl/mini.tcl:2928 +msgid "Print Setup" +msgstr "" -#: emc/motion/command.c:680 emc/motion/command.c:746 emc/motion/command.c:819 -msgid "Can't jog joint when not enabled." +#: tcl/mini.tcl:2932 +msgid "Print Command: " msgstr "" -#: emc/motion/command.c:685 emc/motion/command.c:824 -msgid "Can't jog any joints while homing." -msgstr "Niveliä ei voi käsiajaa, koska kone on ajamassa kotiasemaan" +#: tcl/mini.tcl:3095 +msgid "Find what:" +msgstr "" -#: emc/motion/command.c:751 -msgid "Can't jog any joint while homing." -msgstr "Mitään niveltä ei voi käsiajaa samalla kun kone ajaa kotiasemaan." +#: tcl/mini.tcl:3101 +msgid "Replace with:" +msgstr "" -#: emc/motion/command.c:881 -msgid "need to be enabled, in coord mode for linear move" +#: tcl/mini.tcl:3109 +msgid "Find Next" msgstr "" -#: emc/motion/command.c:891 -msgid "can't do linear move with limits exceeded" +#: tcl/mini.tcl:3112 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2494 +msgid "Replace" msgstr "" -#: emc/motion/command.c:910 -msgid "can't add linear move" +#: tcl/mini.tcl:3120 src/emc/usr_intf/gscreen/gscreen.py:2750 +#: src/emc/usr_intf/gmoccapy/dialogs.py:171 +msgid "Up" msgstr "" -#: emc/motion/command.c:930 -msgid "need to be enabled, in coord mode for circular move" +#: tcl/mini.tcl:3121 src/emc/usr_intf/gscreen/gscreen.py:2754 +#: src/emc/usr_intf/gmoccapy/dialogs.py:175 +msgid "Down" msgstr "" -#: emc/motion/command.c:940 -msgid "can't do circular move with limits exceeded" +#: tcl/mini.tcl:3124 +msgid "Match case" msgstr "" -#: emc/motion/command.c:958 -msgid "can't add circular move" +#: tcl/mini.tcl:3569 +msgid "rot-x" msgstr "" -#: emc/motion/command.c:1048 -msgid "MOTION: can't STEP while already executing" +#: tcl/mini.tcl:3579 +msgid "rot-y" msgstr "" -#: emc/motion/command.c:1140 -msgid "can't enable motion, enable input is false" +#: tcl/mini.tcl:3589 +msgid "rot-z" msgstr "" -#: emc/motion/command.c:1213 -msgid "must be in joint mode to home" +#: tcl/mini.tcl:3599 +msgid "zoom" msgstr "" -#: emc/motion/command.c:1224 emc/motion/command.c:1235 -msgid "homing sequence already in progress" +#: tcl/mini.tcl:3655 +msgid "TEST" msgstr "" -#: emc/motion/command.c:1233 -msgid "homing already in progress" +#: tcl/mini.tcl:3699 +msgid "Hide Setup" msgstr "" -#: emc/motion/command.c:1263 -msgid "must be in joint mode or disabled to unhome" +#: tcl/mini.tcl:3703 +msgid "Show Setup" msgstr "" -#: emc/motion/command.c:1275 emc/motion/command.c:1298 -#, c-format -msgid "Cannot unhome while homing, joint %d" +#: tcl/show_errors.tcl:41 +msgid "LinuxCNC Errors" msgstr "" -#: emc/motion/command.c:1279 emc/motion/command.c:1302 -#, c-format -msgid "Cannot unhome while moving, joint %d" +#: tcl/show_errors.tcl:44 +msgid "" +"LinuxCNC terminated with an error. When reporting problems, please include " +"all the information below in your message." msgstr "" -#: emc/motion/command.c:1307 -#, c-format -msgid "Cannot unhome inactive joint %d" +#: tcl/show_errors.tcl:74 tcl/scripts/Set_Coordinates.tcl:103 +msgid "Close" msgstr "" -#: emc/motion/command.c:1311 -#, c-format -msgid "Cannot unhome invalid joint %d (max %d)" +#: tcl/tklinuxcnc.tcl:154 tcl/tklinuxcnc.tcl:181 +msgid "Set Run Mark" msgstr "" -#: emc/motion/command.c:1338 -msgid "need to be enabled, in coord mode for probe move" +#: tcl/tklinuxcnc.tcl:156 +#, tcl-format +msgid "Set run mark at line %s?" msgstr "" -#: emc/motion/command.c:1348 -msgid "can't do probe move with limits exceeded" +#: tcl/tklinuxcnc.tcl:176 tcl/tklinuxcnc.tcl:204 +msgid "untitled" msgstr "" -#: emc/motion/command.c:1362 -msgid "Probe is already clear when starting G38.4 or G38.5 move" +#: tcl/tklinuxcnc.tcl:212 +msgid "Load Parameter File" msgstr "" -#: emc/motion/command.c:1364 -msgid "Probe is already tripped when starting G38.2 or G38.3 move" +#: tcl/tklinuxcnc.tcl:261 +msgid "LinuxCNC Diagnostics" msgstr "" -#: emc/motion/command.c:1376 -msgid "can't add probe move" +#: tcl/tklinuxcnc.tcl:263 +msgid "Task" msgstr "" -#: emc/motion/command.c:1400 -msgid "need to be enabled, in coord mode for rigid tap move" +#: tcl/tklinuxcnc.tcl:265 tcl/tklinuxcnc.tcl:288 tcl/tklinuxcnc.tcl:311 +msgid "Heartbeat:" msgstr "" -#: emc/motion/command.c:1410 -msgid "can't do rigid tap move with limits exceeded" +#: tcl/tklinuxcnc.tcl:268 tcl/tklinuxcnc.tcl:291 tcl/tklinuxcnc.tcl:314 +msgid "Command:" msgstr "" -#: emc/motion/command.c:1421 -msgid "can't add rigid tap move" +#: tcl/tklinuxcnc.tcl:271 tcl/tklinuxcnc.tcl:294 tcl/tklinuxcnc.tcl:317 +msgid "Command #:" msgstr "" -#: emc/motion/command.c:1435 -msgid "need to be enabled, in teleop mode for teleop move" +#: tcl/tklinuxcnc.tcl:274 tcl/tklinuxcnc.tcl:297 tcl/tklinuxcnc.tcl:320 +msgid "Status:" msgstr "" -#: emc/motion/command.c:1556 -#, c-format -msgid "joint %d: too many compensation entries" +#: tcl/tklinuxcnc.tcl:286 +msgid "Io" msgstr "" -#: emc/motion/command.c:1562 -#, c-format -msgid "joint %d: compensation values must increase" +#: tcl/tklinuxcnc.tcl:309 +msgid "Motion" msgstr "" -#: emc/motion/command.c:1591 -#, c-format -msgid "unrecognized command %d" +#: tcl/tklinuxcnc.tcl:350 +msgid "About TkLinuxCNC" msgstr "" -#: emc/motion/motion.c:184 -msgid "MOTION: hal_init() failed\n" +#: tcl/tklinuxcnc.tcl:351 +msgid "" +"TkLinuxcnc\n" +"\n" +"Tcl/Tk GUI for LinuxCNC\n" +"\n" +"GPL Version 2 (2012)" msgstr "" -#: emc/motion/motion.c:189 -#, c-format -msgid "MOTION: num_joints is %d, must be between 1 and %d\n" +#: tcl/tklinuxcnc.tcl:399 +msgid "Set Tool Offset" msgstr "" -#: emc/motion/motion.c:196 -#, c-format -msgid "MOTION: num_dio is %d, must be between 1 and %d\n" +#: tcl/tklinuxcnc.tcl:404 tcl/tklinuxcnc.tcl:905 +msgid "Tool:" msgstr "" -#: emc/motion/motion.c:203 -#, c-format -msgid "MOTION: num_aio is %d, must be between 1 and %d\n" +#: tcl/tklinuxcnc.tcl:722 +msgid "Edit..." msgstr "" -#: emc/motion/motion.c:211 -msgid "MOTION: init_hal_io() failed\n" +#: tcl/tklinuxcnc.tcl:727 +msgid "Tool Table Editor..." msgstr "" -#: emc/motion/motion.c:220 -msgid "MOTION: init_comm_buffers() failed\n" +#: tcl/tklinuxcnc.tcl:730 src/emc/usr_intf/touchy/touchy.glade:1383 +msgid "Reload Tool Table" msgstr "" -#: emc/motion/motion.c:228 -msgid "MOTION: init_threads() failed\n" +#: tcl/tklinuxcnc.tcl:740 +msgid "Offsets and Variables..." msgstr "" -#: emc/motion/motion.c:253 -#, c-format -msgid "MOTION: hal_stop_threads() failed, returned %d\n" +#: tcl/tklinuxcnc.tcl:741 +msgid "Diagnostics..." msgstr "" -#: emc/motion/motion.c:259 -#, c-format -msgid "MOTION: rtapi_shmem_delete() failed, returned %d\n" +#: tcl/tklinuxcnc.tcl:742 +msgid "Backplot..." msgstr "" -#: emc/motion/motion.c:265 -#, c-format -msgid "MOTION: hal_exit() failed, returned %d\n" +#: tcl/tklinuxcnc.tcl:748 +msgid "Testing..." msgstr "" -#: emc/motion/motion.c:288 -msgid "MOTION: emcmot_hal_data malloc failed\n" +#: tcl/tklinuxcnc.tcl:749 +msgid "Debug..." msgstr "" -#: emc/motion/motion.c:584 -#, c-format -msgid "MOTION: joint %d pin/param export failed\n" +#: tcl/tklinuxcnc.tcl:750 +msgid "Font..." msgstr "" -#: emc/motion/homing.c:80 emc/motion/homing.c:748 -#, c-format -msgid "hit limit in home state %d" +#: tcl/tklinuxcnc.tcl:754 src/emc/usr_intf/axis/scripts/image-to-gcode.py:665 +msgid "Units" msgstr "" -#: emc/motion/homing.c:90 -#, c-format -msgid "end of move in home state %d" +#: tcl/tklinuxcnc.tcl:755 +msgid "auto" msgstr "" -#: emc/motion/homing.c:185 -#, c-format -msgid "unknown state '%d' during homing sequence" +#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8873 +msgid "inches" msgstr "" -#: emc/motion/homing.c:246 -msgid "Cannot home while shared home switch is closed" +#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1609 +#: src/emc/usr_intf/axis/scripts/axis.py:1855 +#: src/emc/usr_intf/axis/scripts/axis.py:2386 +#: src/emc/usr_intf/touchy/touchy.glade:3301 +#: src/emc/usr_intf/stepconf/stepconf.py:1314 +#: src/emc/usr_intf/stepconf/pages.py:625 +#: src/emc/usr_intf/stepconf/main_page.glade:251 +#: src/emc/usr_intf/pncconf/pncconf.py:8869 +#: src/emc/usr_intf/pncconf/pncconf.glade:2195 +#: src/emc/usr_intf/pncconf/pncconf.glade:2362 +#: src/emc/usr_intf/pncconf/pncconf.glade:64552 +#: src/emc/usr_intf/pncconf/pncconf.glade:64621 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm" msgstr "" -#: emc/motion/homing.c:290 -msgid "" -"invalid homing config: non-zero LATCH_VEL needs either SEARCH_VEL or " -"USE_INDEX" +#: tcl/tklinuxcnc.tcl:758 +msgid "cm" msgstr "" -#: emc/motion/homing.c:299 -msgid "invalid homing config: non-zero SEARCH_VEL needs LATCH_VEL" +#: tcl/tklinuxcnc.tcl:762 +msgid "Utilities" msgstr "" -#: emc/motion/homing.c:447 -msgid "Home switch inactive before start of backoff move" +#: tcl/tklinuxcnc.tcl:763 +msgid "Hal Scope" msgstr "" -#: emc/motion/homing.c:495 -msgid "Home switch active before start of latch move" +#: tcl/tklinuxcnc.tcl:785 +msgid "HAL Show" msgstr "" -#: emc/motion/homing.c:551 -msgid "Home switch inactive before start of latch move" +#: tcl/tklinuxcnc.tcl:786 +msgid "HAL Config" msgstr "" -#: emc/motion/homing.c:797 -#, c-format -msgid "unknown state '%d' during homing" +#: tcl/tklinuxcnc.tcl:792 +msgid "Balloon help" msgstr "" -#: ../tcl/bin/emccalib.tcl:80 -msgid "EMC2 Servo Axis Calibration" +#: tcl/tklinuxcnc.tcl:815 +msgid "Estop on" msgstr "" -#: ../tcl/bin/emccalib.tcl:90 -msgid "Save To File" +#: tcl/tklinuxcnc.tcl:816 +msgid "Estop off" msgstr "" -#: ../tcl/bin/emccalib.tcl:106 ../tcl/bin/genedit.tcl:77 -#: ../tcl/bin/halconfig.tcl:151 ../tcl/bin/halshow.tcl:85 ../tcl/mini.tcl:2516 -#: ../tcl/tkemc.tcl:719 ../tcl/ngcgui.tcl:551 -msgid "File" +#: tcl/tklinuxcnc.tcl:818 +msgid "Machine on" msgstr "" -#: ../tcl/bin/emccalib.tcl:108 ../tcl/bin/emccalib.tcl:231 -#: ../tcl/bin/halconfig.tcl:153 ../tcl/mini.tcl:3558 -#: emc/usr_intf/touchy/touchy.glade:2420 -msgid "Refresh" +#: tcl/tklinuxcnc.tcl:819 src/emc/usr_intf/gscreen/gscreen.glade:2452 +msgid "Machine off" msgstr "" -#: ../tcl/bin/emccalib.tcl:110 ../tcl/bin/genedit.tcl:82 -#: ../tcl/bin/halconfig.tcl:155 ../tcl/mini.tcl:2535 -msgid "Save" +#: tcl/tklinuxcnc.tcl:826 src/emc/usr_intf/touchy/touchy.glade:1561 +msgid "Manual" msgstr "" -#: ../tcl/bin/emccalib.tcl:159 ../tcl/bin/halconfig.tcl:623 -#, tcl-format -msgid "Tune %d" +#: tcl/tklinuxcnc.tcl:835 +msgid "Mist on" msgstr "" -#: ../tcl/bin/emccalib.tcl:160 ../tcl/bin/halconfig.tcl:628 -msgid "INI Name" +#: tcl/tklinuxcnc.tcl:836 +msgid "Mist off" msgstr "" -#: ../tcl/bin/emccalib.tcl:161 ../tcl/bin/halconfig.tcl:629 -msgid "HAL's Value" +#: tcl/tklinuxcnc.tcl:843 +msgid "Flood on" msgstr "" -#: ../tcl/bin/emccalib.tcl:163 ../tcl/bin/halconfig.tcl:631 -msgid "Next Value" +#: tcl/tklinuxcnc.tcl:844 +msgid "Flood off" msgstr "" -#: ../tcl/bin/emccalib.tcl:225 ../tcl/bin/halconfig.tcl:680 -#: ../tcl/bin/halconfig.tcl:731 -msgid "Test" +#: tcl/tklinuxcnc.tcl:851 +msgid "Lube on" msgstr "" -#: ../tcl/bin/emccalib.tcl:358 ../tcl/bin/halconfig.tcl:883 -#, tcl-format -msgid "" -"The HAL parameter \n" -" %s \n" -" has changed. \n" -" Really quit?" +#: tcl/tklinuxcnc.tcl:852 +msgid "Lube off" msgstr "" -#: ../tcl/bin/emccalib.tcl:383 ../tcl/bin/halconfig.tcl:1170 -msgid "" -"Not permitted to save here.\n" -"\n" -" You need to copy a configuration to your home directory and work there." +#: tcl/tklinuxcnc.tcl:869 +msgid "Spindle forward" msgstr "" -#: ../tcl/bin/emccalib.tcl:457 ../tcl/bin/genedit.tcl:211 -#: ../tcl/bin/halconfig.tcl:1242 ../tcl/bin/pickconfig.tcl:468 -#: ../tcl/bin/pickconfig.tcl:479 ../tcl/scripts/Set_Coordinates.tcl:205 -#: ../tcl/scripts/Set_Coordinates.tcl:228 -#, tcl-format -msgid "can't save %s" +#: tcl/tklinuxcnc.tcl:870 +msgid "Spindle reverse" msgstr "" -#: ../tcl/bin/emcdebug.tcl:166 ../tcl/bin/emcdebug.tcl:177 -msgid "EMC Debug" +#: tcl/tklinuxcnc.tcl:885 +msgid "Brake on" msgstr "" -#: ../tcl/bin/emcdebug.tcl:185 -msgid "Invalid INI file entries" +#: tcl/tklinuxcnc.tcl:886 +msgid "Brake off" msgstr "" -#: ../tcl/bin/emcdebug.tcl:186 -msgid "Configuration information" +#: tcl/tklinuxcnc.tcl:907 +msgid "Offset:" msgstr "" -#: ../tcl/bin/emcdebug.tcl:187 -msgid "Use of defaults" +#: tcl/tklinuxcnc.tcl:913 +msgid "Work Offsets:" msgstr "" -#: ../tcl/bin/emcdebug.tcl:188 -msgid "Version information" +#: tcl/tklinuxcnc.tcl:1233 +msgid "relative" msgstr "" -#: ../tcl/bin/emcdebug.tcl:189 -msgid "Command issuing" +#: tcl/tklinuxcnc.tcl:1234 +msgid "machine" msgstr "" -#: ../tcl/bin/emcdebug.tcl:190 -msgid "IO points" +#: tcl/tklinuxcnc.tcl:1236 +msgid "actual" msgstr "" -#: ../tcl/bin/emcdebug.tcl:191 -msgid "NML" +#: tcl/tklinuxcnc.tcl:1237 +msgid "commanded" msgstr "" -#: ../tcl/bin/emcdebug.tcl:192 -msgid "Motion time" +#: tcl/tklinuxcnc.tcl:1239 +msgid "joint" msgstr "" -#: ../tcl/bin/emcdebug.tcl:193 emc/usr_intf/axis/scripts/debuglevel.py:42 -msgid "Interpreter" +#: tcl/tklinuxcnc.tcl:1240 +msgid "world" msgstr "" -#: ../tcl/bin/emcdebug.tcl:194 -msgid "RCS" +#: tcl/tklinuxcnc.tcl:1333 +msgid "Axis Offset" msgstr "" -#: ../tcl/bin/emcdebug.tcl:195 -msgid "Trajectory level" +#: tcl/tklinuxcnc.tcl:1335 +msgid "Set axis value:" msgstr "" -#: ../tcl/bin/emcdebug.tcl:196 -msgid "Interpreter list" +#: tcl/tklinuxcnc.tcl:1429 +msgid "Set Feed Override" msgstr "" -#: ../tcl/bin/genedit.tcl:78 ../tcl/mini.tcl:2533 -msgid "New" +#: tcl/tklinuxcnc.tcl:1435 +msgid "Set feed override:" msgstr "" -#: ../tcl/bin/genedit.tcl:80 ../tcl/mini.tcl:1667 ../tcl/mini.tcl:2534 -#: ../tcl/tkemc.tcl:720 ../tcl/tkemc.tcl:1657 -msgid "Open..." +#: tcl/tklinuxcnc.tcl:1460 +msgid "Set Spindle Override" msgstr "" -#: ../tcl/bin/genedit.tcl:84 ../tcl/mini.tcl:2536 -msgid "Save As..." +#: tcl/tklinuxcnc.tcl:1466 +msgid "Set spindle speed override:" msgstr "" -#: ../tcl/bin/genedit.tcl:87 ../tcl/bin/halconfig.tcl:165 -#: ../tcl/bin/halshow.tcl:92 ../tcl/mini.tcl:954 ../tcl/tkemc.tcl:734 -#: ../tcl/ngcgui.tcl:1244 ../tcl/ngcgui.tcl:3644 -msgid "Exit" +#: tcl/tklinuxcnc.tcl:1521 +msgid "Linear Jog Speed" msgstr "" -#: ../tcl/bin/genedit.tcl:91 ../tcl/mini.tcl:2517 -msgid "Edit" +#: tcl/tklinuxcnc.tcl:1552 +msgid "Angular Jog Speed (deg)/min:" msgstr "" -#: ../tcl/bin/genedit.tcl:92 ../tcl/mini.tcl:2543 -msgid "Cut" +#: tcl/tklinuxcnc.tcl:1596 +msgid "Spindle speed Override:" msgstr "" -#: ../tcl/bin/genedit.tcl:94 ../tcl/mini.tcl:2544 -msgid "Copy" +#: tcl/tklinuxcnc.tcl:1642 +msgid "Program: " msgstr "" -#: ../tcl/bin/genedit.tcl:96 ../tcl/mini.tcl:2545 -msgid "Paste" +#: tcl/tklinuxcnc.tcl:1647 +msgid " - Status: " msgstr "" -#: ../tcl/bin/genedit.tcl:99 ../tcl/mini.tcl:2548 ../tcl/show_errors.tcl:68 -msgid "Select All" +#: tcl/tklinuxcnc.tcl:1663 +msgid "Optional Stop" msgstr "" -#: ../tcl/bin/genedit.tcl:104 ../tcl/bin/halconfig.tcl:192 ../tcl/mini.tcl:919 -#: ../tcl/mini.tcl:2519 ../tcl/tkemc.tcl:790 -msgid "Help" +#: tcl/tklinuxcnc.tcl:2010 +msgid "Error" msgstr "" -#: ../tcl/bin/genedit.tcl:105 ../tcl/mini.tcl:1011 ../tcl/mini.tcl:2559 -#: ../tcl/tkemc.tcl:796 -msgid "About..." +#: tcl/tklinuxcnc.tcl:2070 tcl/ngcgui_ttt.tcl:46 +msgid "Set Font" msgstr "" -#: ../tcl/bin/genedit.tcl:130 -msgid "Save and Reload" +#: tcl/tklinuxcnc.tcl:2079 tcl/ngcgui_ttt.tcl:283 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4827 +msgid "Font" msgstr "" -#: ../tcl/bin/genedit.tcl:133 ../tcl/mini.tcl:2550 -msgid "Find..." +#: tcl/tklinuxcnc.tcl:2086 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3257 +msgid "Size" msgstr "" -#: ../tcl/bin/genedit.tcl:135 ../tcl/mini.tcl:2552 -msgid "Renumber File..." +#: tcl/tklinuxcnc.tcl:2093 +msgid "Style" msgstr "" -#: ../tcl/bin/genedit.tcl:140 ../tcl/mini.tcl:917 ../tcl/mini.tcl:2518 -#: ../tcl/tkemc.tcl:746 -msgid "Settings" +#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:2031 +msgid "ESTOP" msgstr "" -#: ../tcl/bin/genedit.tcl:141 ../tcl/mini.tcl:2554 -msgid "No Numbering" +#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2979 share/axis/tcl/axis.tcl:2033 +msgid "ON" msgstr "" -#: ../tcl/bin/genedit.tcl:144 ../tcl/mini.tcl:2556 -msgid "Line Numbering..." +#: tcl/tklinuxcnc.tcl:2290 +msgid "LUBE ON" msgstr "" -#: ../tcl/bin/genedit.tcl:150 ../tcl/tkemc.tcl:768 -msgid "Scripts" +#: tcl/tklinuxcnc.tcl:2292 +msgid "LUBE OFF" msgstr "" -#: ../tcl/bin/genedit.tcl:177 -msgid "About TkEditor" +#: tcl/tklinuxcnc.tcl:2294 +msgid "LUBE ?" msgstr "" -#: ../tcl/bin/genedit.tcl:179 -msgid "" -"TkEditor\n" -"\n" -"Simple Tcl/Tk Text Editor\n" -"\n" -"GPL Version 2" +#: tcl/scripts/Set_Coordinates.tcl:23 +msgid "LinuxCNC Set Coordinate" msgstr "" -#: ../tcl/bin/genedit.tcl:197 ../tcl/mini.tcl:1373 ../tcl/mini.tcl:1775 -#: ../tcl/tkemc.tcl:451 emc/task/emctaskmain.cc:2001 -#, c-format, tcl-format -msgid "can't open %s" +#: tcl/scripts/Set_Coordinates.tcl:26 +msgid "Coordinate System Control Window" msgstr "" -#: ../tcl/bin/genedit.tcl:267 ../tcl/mini.tcl:3090 -msgid "Find" +#: tcl/scripts/Set_Coordinates.tcl:81 +msgid "Var # " msgstr "" -#: ../tcl/bin/genedit.tcl:270 -msgid "Find:" +#: tcl/scripts/Set_Coordinates.tcl:82 +msgid "Offset Value " msgstr "" -#: ../tcl/bin/genedit.tcl:276 -msgid "Replace:" +#: tcl/scripts/Set_Coordinates.tcl:83 +msgid "What to Teach" msgstr "" -#: ../tcl/bin/genedit.tcl:282 -msgid "Find All" +#: tcl/scripts/Set_Coordinates.tcl:101 +msgid "Set Old" msgstr "" -#: ../tcl/bin/genedit.tcl:285 ../tcl/mini.tcl:3113 -msgid "Replace All" +#: tcl/scripts/Set_Coordinates.tcl:102 +msgid "Set Zero" msgstr "" -#: ../tcl/bin/genedit.tcl:288 -msgid "Skip This" +#: tcl/scripts/Set_Coordinates.tcl:104 +msgid "Write" msgstr "" -#: ../tcl/bin/genedit.tcl:291 -msgid "Replace This" +#: tcl/ngcgui.tcl:439 tcl/ngcgui.tcl:846 +msgid "Need non-null file name" msgstr "" -#: ../tcl/bin/genedit.tcl:297 -msgid "Clear" +#: tcl/ngcgui.tcl:483 +msgid "Disallowed use of ngcgui generated file as Subfile" msgstr "" -#: ../tcl/bin/genedit.tcl:422 ../tcl/mini.tcl:2640 -msgid "Set Line Numbering" +#: tcl/ngcgui.tcl:489 +msgid "" +"marked (not_a_subfile)\n" +"Not intended for use as a subfile" msgstr "" -#: ../tcl/bin/genedit.tcl:424 ../tcl/mini.tcl:2644 -msgid "Increment" +#: tcl/ngcgui.tcl:503 tcl/ngcgui.tcl:522 tcl/ngcgui.tcl:544 tcl/ngcgui.tcl:557 +#: tcl/ngcgui.tcl:577 tcl/ngcgui.tcl:682 +msgid "bogus" msgstr "" -#: ../tcl/bin/genedit.tcl:426 ../tcl/mini.tcl:2646 -msgid "One" +#: tcl/ngcgui.tcl:505 +msgid "can not include subroutines within ngcgui subfile" msgstr "" -#: ../tcl/bin/genedit.tcl:429 ../tcl/mini.tcl:2648 -msgid "Two" +#: tcl/ngcgui.tcl:513 +msgid "Multiple subroutines in file not allowed" msgstr "" -#: ../tcl/bin/genedit.tcl:432 ../tcl/mini.tcl:2650 -msgid "Five" +#: tcl/ngcgui.tcl:524 +msgid "sub label" msgstr "" -#: ../tcl/bin/genedit.tcl:435 ../tcl/mini.tcl:2652 -msgid "Ten" +#: tcl/ngcgui.tcl:524 tcl/ngcgui.tcl:579 +msgid "does not match subroutine file name" msgstr "" -#: ../tcl/bin/genedit.tcl:439 ../tcl/mini.tcl:2654 -msgid "Space" +#: tcl/ngcgui.tcl:539 tcl/ngcgui.tcl:540 +msgid "ignoring M2 after endsub" msgstr "" -#: ../tcl/bin/genedit.tcl:441 ../tcl/mini.tcl:2656 -msgid "Single Space" +#: tcl/ngcgui.tcl:545 +msgid "file contains lines after subend" msgstr "" -#: ../tcl/bin/genedit.tcl:444 ../tcl/mini.tcl:2658 -msgid "Double Space" +#: tcl/ngcgui.tcl:558 +msgid "file contains lines before sub" msgstr "" -#: ../tcl/bin/genedit.tcl:447 ../tcl/mini.tcl:2660 -msgid "Tab Space" +#: tcl/ngcgui.tcl:579 +msgid "endsub label" msgstr "" -#: ../tcl/bin/genedit.tcl:453 -msgid "Next Number:" +#: tcl/ngcgui.tcl:684 +msgid "out of sequence positional parameter" msgstr "" -#: ../tcl/bin/genedit.tcl:474 ../tcl/mini.tcl:2668 -msgid "Renumber" +#: tcl/ngcgui.tcl:684 +msgid "expected" msgstr "" -#: ../tcl/bin/halconfig.tcl:88 ../tcl/bin/halshow.tcl:33 -msgid "HAL Configuration" +#: tcl/ngcgui.tcl:735 +msgid "no sub found in file" msgstr "" -#: ../tcl/bin/halconfig.tcl:103 -msgid "Would you like to save your configuration before you exit?" +#: tcl/ngcgui.tcl:738 +msgid "no endsub found in file" msgstr "" -#: ../tcl/bin/halconfig.tcl:103 -msgid "Save All" +#: tcl/ngcgui.tcl:801 +msgid "Cannot find gcmc executable" msgstr "" -#: ../tcl/bin/halconfig.tcl:103 -msgid "Save Tune" +#: tcl/ngcgui.tcl:802 +msgid "Please Install in path" msgstr "" -#: ../tcl/bin/halconfig.tcl:103 -msgid "Save as Netlist" +#: tcl/ngcgui.tcl:810 +msgid "not embedded, deriving outdir from:" msgstr "" -#: ../tcl/bin/halconfig.tcl:103 -msgid "Don't Save" +#: tcl/ngcgui.tcl:1038 +msgid "Choose Files" msgstr "" -#: ../tcl/bin/halconfig.tcl:132 -msgid "Show" +#: tcl/ngcgui.tcl:1178 +msgid "Controls" msgstr "" -#: ../tcl/bin/halconfig.tcl:133 -msgid "Watch" +#: tcl/ngcgui.tcl:1187 +msgid "Preamble" msgstr "" -#: ../tcl/bin/halconfig.tcl:134 -msgid "Modify" +#: tcl/ngcgui.tcl:1200 +msgid "Subfile" msgstr "" -#: ../tcl/bin/halconfig.tcl:157 -msgid "Save INI Tuning" +#: tcl/ngcgui.tcl:1212 +msgid "Postamble" msgstr "" -#: ../tcl/bin/halconfig.tcl:159 -msgid "Save HAL Ini" +#: tcl/ngcgui.tcl:1229 +msgid "Retain values on Subfile read" msgstr "" -#: ../tcl/bin/halconfig.tcl:161 -msgid "Save HAL Net" +#: tcl/ngcgui.tcl:1237 +msgid "Expand subroutine" msgstr "" -#: ../tcl/bin/halconfig.tcl:163 -msgid "Save and Exit" +#: tcl/ngcgui.tcl:1247 tcl/ngcgui.tcl:2571 +msgid "Autosend" msgstr "" -#: ../tcl/bin/halconfig.tcl:168 ../tcl/mini.tcl:916 ../tcl/tkemc.tcl:739 -msgid "View" +#: tcl/ngcgui.tcl:1257 +msgid "Verbose ngcfile" msgstr "" -#: ../tcl/bin/halconfig.tcl:170 ../tcl/bin/halshow.tcl:104 -msgid "Expand Tree" +#: tcl/ngcgui.tcl:1267 tcl/ngcgui.tcl:2393 tcl/ngcgui.tcl:2416 +#: tcl/ngcgui.tcl:2446 +msgid "Create Feature" msgstr "" -#: ../tcl/bin/halconfig.tcl:172 ../tcl/bin/halshow.tcl:106 -msgid "Collapse Tree" +#: tcl/ngcgui.tcl:1273 tcl/ngcgui.tcl:3058 +msgid "MakeFile" msgstr "" -#: ../tcl/bin/halconfig.tcl:175 ../tcl/bin/halshow.tcl:109 -msgid "Expand Pins" +#: tcl/ngcgui.tcl:1274 tcl/ngcgui.tcl:3055 +msgid "Finalize" msgstr "" -#: ../tcl/bin/halconfig.tcl:177 ../tcl/bin/halshow.tcl:111 -msgid "Expand Parameters" +#: tcl/ngcgui.tcl:1291 +msgid "Reread" msgstr "" -#: ../tcl/bin/halconfig.tcl:179 ../tcl/bin/halshow.tcl:113 -msgid "Expand Signals" +#: tcl/ngcgui.tcl:1310 +msgid "SendFileToAxis" msgstr "" -#: ../tcl/bin/halconfig.tcl:182 ../tcl/bin/halshow.tcl:116 -msgid "Erase Watch" +#: tcl/ngcgui.tcl:1353 +msgid "Unrecoverable problem" msgstr "" -#: ../tcl/bin/halconfig.tcl:194 ../tcl/mini.tcl:840 ../tcl/mini.tcl:2785 -msgid "About" +#: tcl/ngcgui.tcl:1431 +msgid "Postamble file" msgstr "" -#: ../tcl/bin/halconfig.tcl:196 -msgid "Main" +#: tcl/ngcgui.tcl:1481 +msgid "Subroutine file" msgstr "" -#: ../tcl/bin/halconfig.tcl:476 -msgid "Enter HAL command :" +#: tcl/ngcgui.tcl:1545 +msgid "Positional Parameters" msgstr "" -#: ../tcl/bin/halconfig.tcl:479 ../tcl/bin/halconfig.tcl:528 -#: ../tcl/bin/halshow.tcl:356 -msgid "Execute" +#: tcl/ngcgui.tcl:1694 +msgid "No Subfile specified" msgstr "" -#: ../tcl/bin/halconfig.tcl:943 ../tcl/bin/halshow.tcl:412 -msgid "Select a node to show." +#: tcl/ngcgui.tcl:1696 +msgid "No parameters yet" msgstr "" -#: ../tcl/bin/halconfig.tcl:968 ../tcl/bin/halshow.tcl:437 -msgid "<-- Select a Leaf. Click on its name." +#: tcl/ngcgui.tcl:1705 +msgid "Missing value for parm" msgstr "" -#: ../tcl/bin/halconfig.tcl:1085 ../tcl/bin/halconfig.tcl:1095 -#: ../tcl/bin/halconfig.tcl:1102 ../tcl/bin/halconfig.tcl:1109 -#: ../tcl/bin/halconfig.tcl:1116 -#, tcl-format -msgid "Click a highlighted entry where %s should go." +#: tcl/ngcgui.tcl:1726 +msgid "Output file" msgstr "" -#: ../tcl/bin/halconfig.tcl:1092 -msgid "Nothing to be done for parameters here. Try the tuning page" +#: tcl/ngcgui.tcl:1841 +msgid "Multiple Tabs with Features" msgstr "" -#: ../tcl/bin/halconfig.tcl:1124 -#, tcl-format -msgid "%s is not a leaf, try again" +#: tcl/ngcgui.tcl:1842 +msgid "Finalize all Tabs?" msgstr "" -#: ../tcl/bin/halconfig.tcl:1281 -msgid "" -"Copyright Raymond E Henry. 2006\n" -"License: GPL Version 2\n" -"\n" -"Halconfig is an EMC2 configuration tool. It should be started from the emc2 " -"directory and will require that you have started an instance of emc2 or work " -"up a new configuration starting with a demo rt script.\n" -"\n" -"This script is not for the faint hearted and carries no warranty or " -"liability for its use to the extent allowed by law." +#: tcl/ngcgui.tcl:1842 +msgid "Order" msgstr "" -#: ../tcl/bin/halshow.tcl:69 -msgid " SHOW " +#: tcl/ngcgui.tcl:1844 +msgid "No, just this page" msgstr "" -#: ../tcl/bin/halshow.tcl:70 -msgid " WATCH " +#: tcl/ngcgui.tcl:1858 +msgid "Axis is not responding" msgstr "" -#: ../tcl/bin/halshow.tcl:90 -msgid "Load Watch List" +#: tcl/ngcgui.tcl:1859 +msgid "Error: " msgstr "" -#: ../tcl/bin/halshow.tcl:102 -msgid "Tree View" +#: tcl/ngcgui.tcl:1861 +msgid "Autosend disabled, Ctrl-A toggles autosend" msgstr "" -#: ../tcl/bin/halshow.tcl:353 -msgid "Test HAL command :" +#: tcl/ngcgui.tcl:1863 +msgid "File saving enabled -- Finalize to save" msgstr "" -#: ../tcl/bin/halshow.tcl:555 -msgid "Load a watch list" +#: tcl/ngcgui.tcl:1879 +msgid "Require .ngc suffix for filename" msgstr "" -#: ../tcl/bin/halshow.tcl:578 -msgid "Save current watch list" +#: tcl/ngcgui.tcl:1889 +msgid "Disallowed overwrite of" msgstr "" -#: ../tcl/bin/halshow.tcl:592 -msgid "Commands may be tested here but they will NOT be saved" +#: tcl/ngcgui.tcl:1913 +msgid "FEATURE" msgstr "" -#: ../tcl/bin/pickconfig.tcl:49 -msgid "" -"Can't find the bwidget 1.7 package. There is a debian bwidget package; " -"install \n" -"it with sudo apt-get install bwidget." +#: tcl/ngcgui.tcl:1920 +msgid "feature line added" msgstr "" -#: ../tcl/bin/pickconfig.tcl:177 -msgid "No details available." +#: tcl/ngcgui.tcl:1932 +msgid "line added" msgstr "" -#: ../tcl/bin/pickconfig.tcl:193 -msgid "EMC2 Configuration Selector" +#: tcl/ngcgui.tcl:1932 +msgid "activated" msgstr "" -#: ../tcl/bin/pickconfig.tcl:214 -msgid "" -"Welcome to EMC2.\n" -"\n" -"Select a machine configuration from the list on the left.\n" -"Details about the selected configuration will appear in the display on the " -"right.\n" -"Click 'OK' to run the selected configuration" +#: tcl/ngcgui.tcl:1934 +msgid "restores" msgstr "" -#: ../tcl/bin/pickconfig.tcl:270 -msgid "My Configurations" +#: tcl/ngcgui.tcl:1973 +msgid "NOTREACHED mode" msgstr "" -#: ../tcl/bin/pickconfig.tcl:273 -msgid "Sample Configurations" +#: tcl/ngcgui.tcl:1989 +msgid "Positional parameters for" msgstr "" -#: ../tcl/bin/pickconfig.tcl:330 -#, tcl-format -msgid "ERROR: no configurations found in path '%s'" +#: tcl/ngcgui.tcl:1997 +msgid "expanded file" msgstr "" -#: ../tcl/bin/pickconfig.tcl:367 -msgid "Copy Configuration?" +#: tcl/ngcgui.tcl:2011 +msgid "call subroutine file" msgstr "" -#: ../tcl/bin/pickconfig.tcl:367 -#, tcl-format -msgid "" -"Would you like to copy the %s configuration to your home directory so you " -"can customize it?" +#: tcl/ngcgui.tcl:2394 +msgid "Enter parms for 1st feature" msgstr "" -#: ../tcl/bin/pickconfig.tcl:367 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:563 -msgid "Yes" +#: tcl/ngcgui.tcl:2401 +msgid "New Outfile" msgstr "" -#: ../tcl/bin/pickconfig.tcl:404 -msgid "Configuration Copied" +#: tcl/ngcgui.tcl:2403 +msgid "Ready to make New Outfile" msgstr "" -#: ../tcl/bin/pickconfig.tcl:404 -#, tcl-format -msgid "" -"The configuration file has been copied to %s. Next time, choose this " -"location when starting EMC2." +#: tcl/ngcgui.tcl:2419 tcl/ngcgui.tcl:2452 +msgid "Enter parms for feature " msgstr "" -#: ../tcl/bin/pickconfig.tcl:430 -msgid "Shortcut Created" +#: tcl/ngcgui.tcl:2439 +msgid "feature" msgstr "" -#: ../tcl/bin/pickconfig.tcl:430 -msgid "" -"A shortcut to this configuration file has been created on your desktop. You " -"can use it to automatically launch this configuration." +#: tcl/ngcgui.tcl:2444 +msgid "Create Next" msgstr "" -#: ../tcl/bin/pickconfig.tcl:435 -msgid "Create Desktop Shortcut" +#: tcl/ngcgui.tcl:2449 +msgid "Created feature " msgstr "" -#: ../tcl/bin/tkbackplot.tcl:110 -msgid "TkEmc BackPlot" +#: tcl/ngcgui.tcl:2473 +msgid "option" msgstr "" -#: ../tcl/bin/tkbackplot.tcl:125 -msgid "SETUP" +#: tcl/ngcgui.tcl:2484 +msgid "Missing parameters" msgstr "" -#: ../tcl/bin/tkbackplot.tcl:127 -msgid "RESET" +#: tcl/ngcgui.tcl:2488 +msgid "Parse Error" msgstr "" -#: ../tcl/bin/tkbackplot.tcl:129 -msgid "CANCEL" +#: tcl/ngcgui.tcl:2495 +msgid "Null Preamble" msgstr "" -#: ../tcl/bin/tkbackplot.tcl:250 -msgid "AXIS" +#: tcl/ngcgui.tcl:2500 +msgid "Read Preamble" msgstr "" -#: ../tcl/bin/tkbackplot.tcl:251 -msgid "OFFSET" +#: tcl/ngcgui.tcl:2504 +msgid "Preamble Error" msgstr "" -#: ../tcl/bin/tkbackplot.tcl:252 -msgid "ANGLE" +#: tcl/ngcgui.tcl:2509 +msgid "Null Postamble" msgstr "" -#: ../tcl/bin/tkbackplot.tcl:253 -msgid "DIRECTION" +#: tcl/ngcgui.tcl:2514 +msgid "Read Postamble" msgstr "" -#: ../tcl/bin/tkbackplot.tcl:270 -msgid "SIZE :" +#: tcl/ngcgui.tcl:2518 +msgid "Postamble Error" msgstr "" -#: ../tcl/mini.tcl:490 -#, tcl-format -msgid "JOG %s +" +#: tcl/ngcgui.tcl:2523 +msgid "Read Subfile" msgstr "" -#: ../tcl/mini.tcl:491 -#, tcl-format -msgid "JOG %s -" +#: tcl/ngcgui.tcl:2528 +msgid "Write Error" msgstr "" -#: ../tcl/mini.tcl:492 -#, tcl-format -msgid "" -"%s\n" -"\n" -"Z\n" -"E\n" -"R\n" -"O" +#: tcl/ngcgui.tcl:2532 +msgid "Outfile set" msgstr "" -#: ../tcl/mini.tcl:840 -msgid "" -"TkMini \n" -"\n" -"Tcl/Tk GUI for Enhanced Machine Controller\n" -"\n" -"GPL Copyright 2003 \n" -"Ray Henry \n" -"\n" -" 3D backplotter by Paul Corner \n" -" \n" -"This software comes with ABSOLUTELY NO GUARANTEE! \n" -"For details see the copyright.html file in this directory." +#: tcl/ngcgui.tcl:2537 +msgid "Finished" msgstr "" -#: ../tcl/mini.tcl:915 -msgid "Program" +#: tcl/ngcgui.tcl:2542 +msgid "Canceled" msgstr "" -#: ../tcl/mini.tcl:918 -msgid "Info" +#: tcl/ngcgui.tcl:2548 +msgid "Sent" msgstr "" -#: ../tcl/mini.tcl:923 -msgid "Backplot" +#: tcl/ngcgui.tcl:2552 +msgid "SendFileToAxis failed" msgstr "" -#: ../tcl/mini.tcl:925 emc/usr_intf/pncconf/pncconf.glade:6125 -msgid "Editor" +#: tcl/ngcgui.tcl:2556 +msgid "Ctrl-k for Key bindings" msgstr "" -#: ../tcl/mini.tcl:927 -msgid "Offsets" +#: tcl/ngcgui.tcl:2560 +msgid "Expand sub" msgstr "" -#: ../tcl/mini.tcl:929 -msgid "Tools" +#: tcl/ngcgui.tcl:2564 +msgid "Retain values" msgstr "" -#: ../tcl/mini.tcl:951 ../tcl/mini.tcl:3565 ../tcl/tkemc.tcl:732 -msgid "Reset" +#: tcl/ngcgui.tcl:2568 +msgid "Verbose" msgstr "" -#: ../tcl/mini.tcl:960 -msgid "Position Type" +#: tcl/ngcgui.tcl:2574 +msgid "Finalize Canceled" msgstr "" -#: ../tcl/mini.tcl:962 -msgid "Tool Info" +#: tcl/ngcgui.tcl:2711 tcl/ngcgui.tcl:2867 +msgid "Dismiss" msgstr "" -#: ../tcl/mini.tcl:964 -msgid "Offset Info" +#: tcl/ngcgui.tcl:2716 +msgid "ngcgui Error" msgstr "" -#: ../tcl/mini.tcl:967 -msgid "Show Restart" +#: tcl/ngcgui.tcl:2739 +msgid "Declining support for tk send bug in ngcgui" msgstr "" -#: ../tcl/mini.tcl:968 -msgid "Hide Restart" +#: tcl/ngcgui.tcl:2740 +msgid "You should upgrade linuxcnc to >= linuxcnc2.5" msgstr "" -#: ../tcl/mini.tcl:970 -msgid "Show Split Right" +#: tcl/ngcgui.tcl:2784 +msgid "pre2.4_send_file_to_axis:error" msgstr "" -#: ../tcl/mini.tcl:972 -msgid "Show Mode Full" +#: tcl/ngcgui.tcl:2978 share/axis/tcl/axis.tcl:2032 +msgid "OFF" msgstr "" -#: ../tcl/mini.tcl:974 -msgid "Show Popin Full" +#: tcl/ngcgui.tcl:2981 +msgid "Toggle autosend" msgstr "" -#: ../tcl/mini.tcl:978 -msgid "Actual Position" +#: tcl/ngcgui.tcl:2982 tcl/ngcgui.tcl:3189 +msgid "Clear entries" msgstr "" -#: ../tcl/mini.tcl:980 -msgid "Commanded Position" +#: tcl/ngcgui.tcl:2983 +msgid "Set entries to default values" msgstr "" -#: ../tcl/mini.tcl:983 -msgid "Machine Position" +#: tcl/ngcgui.tcl:2984 tcl/ngcgui.tcl:2998 tcl/ngcgui.tcl:3000 +msgid "Open editor specified by" msgstr "" -#: ../tcl/mini.tcl:985 -msgid "Relative Position" +#: tcl/ngcgui.tcl:2985 +msgid "on last outfile" msgstr "" -#: ../tcl/mini.tcl:988 ../tcl/tkemc.tcl:747 -msgid "Calibration..." +#: tcl/ngcgui.tcl:2986 +msgid "toggle expand subroutines" msgstr "" -#: ../tcl/mini.tcl:990 -msgid "HAL Show..." +#: tcl/ngcgui.tcl:2987 +msgid "Create feature" msgstr "" -#: ../tcl/mini.tcl:992 -msgid "HAL Config..." +#: tcl/ngcgui.tcl:2988 +msgid "Finalize (AUTO send is" msgstr "" -#: ../tcl/mini.tcl:997 -msgid "Program File" +#: tcl/ngcgui.tcl:2989 +msgid "Show key bindings" msgstr "" -#: ../tcl/mini.tcl:998 -#, tcl-format -msgid "Program file is %s" +#: tcl/ngcgui.tcl:2990 +msgid "Restart (cancel pending)" msgstr "" -#: ../tcl/mini.tcl:999 -msgid "Editor File" +#: tcl/ngcgui.tcl:2991 +msgid "(re)Read Preamble" msgstr "" -#: ../tcl/mini.tcl:1000 -#, tcl-format -msgid "Editor file is %s" +#: tcl/ngcgui.tcl:2992 +msgid "(re)Read Postamble" msgstr "" -#: ../tcl/mini.tcl:1001 -msgid "Parameter File" +#: tcl/ngcgui.tcl:2993 +msgid "(re)Read Subfile" msgstr "" -#: ../tcl/mini.tcl:1002 -#, tcl-format -msgid "Parameter file is %s" +#: tcl/ngcgui.tcl:2994 +msgid "toggle retain values" msgstr "" -#: ../tcl/mini.tcl:1003 -msgid "Tool File" +#: tcl/ngcgui.tcl:2995 +msgid "toggle output file verbosity" msgstr "" -#: ../tcl/mini.tcl:1004 -#, tcl-format -msgid "Tool file is %s" +#: tcl/ngcgui.tcl:2996 +msgid "Show status" msgstr "" -#: ../tcl/mini.tcl:1006 -msgid "Active G Codes" +#: tcl/ngcgui.tcl:2997 +msgid "Show full status (debug info)" msgstr "" -#: ../tcl/mini.tcl:1007 -#, tcl-format -msgid "" -"Active codes include; \n" -"%s" +#: tcl/ngcgui.tcl:2999 +msgid "on current subfile" msgstr "" -#: ../tcl/mini.tcl:1010 ../tcl/mini.tcl:2558 ../tcl/tkemc.tcl:791 -msgid "Help..." +#: tcl/ngcgui.tcl:3001 +msgid "on current preamble" msgstr "" -#: ../tcl/mini.tcl:1027 ../tcl/tkemc.tcl:890 -msgid "ABORT" +#: tcl/ngcgui.tcl:3004 +msgid " Escape Return to Preview page" msgstr "" -#: ../tcl/mini.tcl:1038 ../tcl/mini.tcl:2048 -msgid "CONTINUE" +#: tcl/ngcgui.tcl:3081 +msgid "Editing requires setting for environmental variable VISUAL" msgstr "" -#: ../tcl/mini.tcl:1044 ../tcl/tkemc.tcl:828 ../tcl/tkemc.tcl:2248 -#: emc/usr_intf/touchy/touchy.glade:1264 -msgid "MDI" +#: tcl/ngcgui.tcl:3082 +msgid "Trying gedit" msgstr "" -#: ../tcl/mini.tcl:1048 ../tcl/tkemc.tcl:2239 -msgid "AUTO" +#: tcl/ngcgui.tcl:3095 +msgid "No file available for editing yet" msgstr "" -#: ../tcl/mini.tcl:1052 ../tcl/mini.tcl:1812 ../tcl/tkemc.tcl:2141 -#: ../tcl/tkemc.tcl:2261 -msgid "MANUAL" +#: tcl/ngcgui.tcl:3104 tcl/ngcgui.tcl:3113 +msgid "No file available for editing" msgstr "" -#: ../tcl/mini.tcl:1106 -msgid "Tool #:" +#: tcl/ngcgui.tcl:3130 +msgid "Status items" msgstr "" -#: ../tcl/mini.tcl:1108 -msgid "Length :" +#: tcl/ngcgui.tcl:3143 +msgid "All-page opt items" msgstr "" -#: ../tcl/mini.tcl:1119 -msgid "Work Offsets: " +#: tcl/ngcgui.tcl:3149 +msgid "any-items" msgstr "" -#: ../tcl/mini.tcl:1121 -msgid "start offsets popup here" +#: tcl/ngcgui.tcl:3182 +msgid "Set defaults" msgstr "" -#: ../tcl/mini.tcl:1165 -msgid "start override popup here" +#: tcl/ngcgui.tcl:3257 +msgid "not writable" msgstr "" -#: ../tcl/mini.tcl:1168 ../tcl/tkemc.tcl:1576 ../share/axis/tcl/axis.tcl:1669 -msgid "Feed Override:" +#: tcl/ngcgui.tcl:3396 tcl/ngcgui.tcl:3577 +msgid "new" msgstr "" -#: ../tcl/mini.tcl:1180 -msgid "-- MESSAGES --" +#: tcl/ngcgui.tcl:3422 +msgid "Open a new Subfile" msgstr "" -#: ../tcl/mini.tcl:1230 -msgid "toggleView's not doin nothin yet" +#: tcl/ngcgui.tcl:3568 +msgid "remove" msgstr "" -#: ../tcl/mini.tcl:1282 -msgid "Can't set zero with a tool offset active so I issued G49 to cancel it." +#: tcl/ngcgui.tcl:3590 tcl/ngcgui.tcl:3596 +msgid "move" msgstr "" -#: ../tcl/mini.tcl:1346 -#, tcl-format -msgid "Can't update the var file while machine is in auto and %s." +#: tcl/ngcgui.tcl:3704 src/emc/usr_intf/pncconf/pncconf.py:7374 +#: src/emc/usr_intf/pncconf/pncconf.py:7485 +#: src/emc/usr_intf/pncconf/pncconf.py:7650 +msgid "Custom" msgstr "" -#: ../tcl/mini.tcl:1400 ../tcl/tkemc.tcl:1227 -msgid "override limits" +#: tcl/ngcgui.tcl:3730 +msgid "Problem creating page" msgstr "" -#: ../tcl/mini.tcl:1405 ../tcl/tkemc.tcl:1263 -msgid "home" +#: tcl/ngcgui.tcl:3737 +msgid "entrykeybindings not available" msgstr "" -#: ../tcl/mini.tcl:1426 -msgid "DEFAULT" +#: tcl/ngcgui.tcl:3781 +msgid "Found multiple matches for" msgstr "" -#: ../tcl/mini.tcl:1427 -msgid "Speed:" +#: tcl/ngcgui.tcl:3782 +msgid "using path" msgstr "" -#: ../tcl/mini.tcl:1430 -msgid "RAPID" +#: tcl/ngcgui.tcl:3790 src/emc/usr_intf/axis/scripts/axis.py:2440 +#: src/emc/usr_intf/axis/scripts/axis.py:2453 +msgid "Warning" msgstr "" -#: ../tcl/mini.tcl:1447 ../tcl/tkemc.tcl:1391 -msgid "Set Jog Speed" +#: tcl/ngcgui.tcl:3791 +msgid "File absolute path specifier conflicts with searchpath result" msgstr "" -#: ../tcl/mini.tcl:1453 ../tcl/tkemc.tcl:1404 -msgid "Set jog speed:" +#: tcl/ngcgui.tcl:3792 +msgid "Absolute Specifier" msgstr "" -#: ../tcl/mini.tcl:1511 -msgid "JOG X +" +#: tcl/ngcgui.tcl:3793 +msgid "Using Search Result" msgstr "" -#: ../tcl/mini.tcl:1512 -msgid "JOG X -" +#: tcl/ngcgui.tcl:3798 +msgid "File not in Search Path" msgstr "" -#: ../tcl/mini.tcl:1516 -msgid "increment" +#: tcl/ngcgui.tcl:3800 +msgid "Must be in search path" msgstr "" -#: ../tcl/mini.tcl:1518 ../tcl/tkemc.tcl:602 ../tcl/tkemc.tcl:1249 -#: ../tcl/tkemc.tcl:1253 -msgid "continuous" +#: tcl/ngcgui.tcl:3802 +msgid "(File found -- not in search path)" msgstr "" -#: ../tcl/mini.tcl:1520 -msgid "" -"A\n" -"L\n" -"L\n" -"\n" -"Z\n" -"E\n" -"R\n" -"O" +#: tcl/ngcgui.tcl:3804 +msgid "Current directory" msgstr "" -#: ../tcl/mini.tcl:1588 emc/usr_intf/touchy/touchy.glade:1422 -msgid "Spindle Forward" +#: tcl/ngcgui.tcl:3805 +msgid "Search path" msgstr "" -#: ../tcl/mini.tcl:1589 emc/usr_intf/touchy/touchy.glade:1433 -msgid "Spindle Reverse" +#: tcl/ngcgui.tcl:3815 +msgid "Check setting for" msgstr "" -#: ../tcl/mini.tcl:1590 ../tcl/tkemc.tcl:871 -msgid "Spindle off" +#: tcl/ngcgui.tcl:3816 +msgid "in ini file" msgstr "" -#: ../tcl/mini.tcl:1592 emc/usr_intf/touchy/touchy.glade:1479 -msgid "Spindle Slower" +#: tcl/ngcgui.tcl:3817 +msgid "(Restart required after fixing ini file)" msgstr "" -#: ../tcl/mini.tcl:1596 emc/usr_intf/touchy/touchy.glade:1464 -msgid "Spindle Faster" +#: tcl/ngcgui.tcl:3832 +msgid "Try to Continue" msgstr "" -#: ../tcl/mini.tcl:1632 ../tcl/tkemc.tcl:1620 -msgid "MDI:" +#: tcl/ngcgui.tcl:3837 +msgid "Ngcgui Configuration File Not Found" msgstr "" -#: ../tcl/mini.tcl:1669 ../tcl/tkemc.tcl:1658 -#: emc/usr_intf/stepconf/stepconf.glade:4403 -#: emc/usr_intf/pncconf/pncconf.glade:60488 -#: emc/usr_intf/pncconf/pncconf.glade:61582 -#: emc/usr_intf/pncconf/pncconf.glade:62675 -#: emc/usr_intf/pncconf/pncconf.glade:63768 -#: emc/usr_intf/pncconf/pncconf.glade:64868 -msgid "Run" +#: tcl/ngcgui.tcl:3917 +msgid "Missing Tcl Package Img" msgstr "" -#: ../tcl/mini.tcl:1671 ../tcl/tkemc.tcl:1659 -#: emc/usr_intf/pncconf/pncconf.glade:60553 -#: emc/usr_intf/pncconf/pncconf.glade:61647 -#: emc/usr_intf/pncconf/pncconf.glade:62740 -#: emc/usr_intf/pncconf/pncconf.glade:63833 -msgid "Pause" +#: tcl/ngcgui.tcl:3918 +msgid "Please install Img" msgstr "" -#: ../tcl/mini.tcl:1673 ../tcl/tkemc.tcl:1660 -msgid "Resume" +#: tcl/ngcgui.tcl:4122 +msgid "ini file" msgstr "" -#: ../tcl/mini.tcl:1675 ../tcl/tkemc.tcl:1661 -msgid "Step" +#: tcl/ngcgui.tcl:4131 +msgid "not found" msgstr "" -#: ../tcl/mini.tcl:1677 ../tcl/tkemc.tcl:1662 -msgid "Verify" +#: tcl/ngcgui_ttt.tcl:67 +msgid "found truetype-tracer v4 -OK" msgstr "" -#: ../tcl/mini.tcl:1698 -msgid "RESTART LINE" +#: tcl/ngcgui_ttt.tcl:70 +msgid "Note truetype-tracer v4 is required" msgstr "" -#: ../tcl/mini.tcl:1699 -msgid "Back" +#: tcl/ngcgui_ttt.tcl:71 +msgid "Note: truetype-tracer v4 is required" msgstr "" -#: ../tcl/mini.tcl:1700 -msgid "Ahead" +#: tcl/ngcgui_ttt.tcl:81 +msgid "ngcgui_app.tcl must be loaded before" msgstr "" -#: ../tcl/mini.tcl:1701 ../tcl/ngcgui.tcl:1222 -msgid "Restart" +#: tcl/ngcgui_ttt.tcl:89 +msgid "Create a subroutine file from truetype-tracer (V4 reqd)" msgstr "" -#: ../tcl/mini.tcl:1711 ../tcl/mini.tcl:2823 ../tcl/mini.tcl:2882 -#: ../tcl/tkemc.tcl:465 emc/usr_intf/axis/scripts/axis.py:1872 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:754 -msgid "All files" +#: tcl/ngcgui_ttt.tcl:102 tcl/ngcgui_ttt.tcl:115 +msgid "problem with" msgstr "" -#: ../tcl/mini.tcl:1712 ../tcl/mini.tcl:2824 ../tcl/mini.tcl:2883 -#: ../tcl/tkemc.tcl:466 -msgid "Text files" +#: tcl/ngcgui_ttt.tcl:106 +msgid "No entry for" msgstr "" -#: ../tcl/mini.tcl:1713 ../tcl/mini.tcl:2825 ../tcl/mini.tcl:2884 -#: ../tcl/tkemc.tcl:467 -msgid "NC files" +#: tcl/ngcgui_ttt.tcl:109 +msgid "wrong version of truetype-tracer" msgstr "" -#: ../tcl/mini.tcl:1753 -msgid "" -"The interpreter is running. \n" -" Pressing OK will abort and load the new program" +#: tcl/ngcgui_ttt.tcl:125 +msgid "not writable, using" msgstr "" -#: ../tcl/mini.tcl:1886 -msgid "ESTOPPED" +#: tcl/ngcgui_ttt.tcl:125 +msgid "and setting expandsub" msgstr "" -#: ../tcl/mini.tcl:1889 -msgid "ESTOP PUSH" +#: tcl/ngcgui_ttt.tcl:161 +msgid "Text" msgstr "" -#: ../tcl/mini.tcl:1892 ../tcl/tkemc.tcl:2233 -msgid "ESTOP RESET" +#: tcl/ngcgui_ttt.tcl:171 +msgid "Linescale" msgstr "" -#: ../tcl/mini.tcl:1897 ../tcl/tkemc.tcl:2298 -msgid "SPINDLE FORWARD" +#: tcl/ngcgui_ttt.tcl:177 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3583 +msgid "none" msgstr "" -#: ../tcl/mini.tcl:1899 ../tcl/tkemc.tcl:2300 -msgid "SPINDLE REVERSE" +#: tcl/ngcgui_ttt.tcl:192 +msgid "Subdiv" msgstr "" -#: ../tcl/mini.tcl:1901 ../tcl/tkemc.tcl:2302 -msgid "SPINDLE OFF" +#: tcl/ngcgui_ttt.tcl:199 +msgid "default" msgstr "" -#: ../tcl/mini.tcl:1903 ../tcl/tkemc.tcl:2304 -msgid "SPINDLE INCREASE" +#: tcl/ngcgui_ttt.tcl:239 +msgid "Mode" msgstr "" -#: ../tcl/mini.tcl:1905 ../tcl/tkemc.tcl:2306 -msgid "SPINDLE DECREASE" +#: tcl/ngcgui_ttt.tcl:247 +msgid "normal" msgstr "" -#: ../tcl/mini.tcl:1907 ../tcl/tkemc.tcl:2308 -msgid "SPINDLE ?" +#: tcl/ngcgui_ttt.tcl:248 +msgid "date" msgstr "" -#: ../tcl/mini.tcl:1911 ../tcl/tkemc.tcl:2312 -msgid "BRAKE ON" +#: tcl/ngcgui_ttt.tcl:249 +msgid "fontname" msgstr "" -#: ../tcl/mini.tcl:1913 ../tcl/tkemc.tcl:2314 -msgid "BRAKE OFF" +#: tcl/ngcgui_ttt.tcl:262 +msgid "Switches" msgstr "" -#: ../tcl/mini.tcl:1915 ../tcl/tkemc.tcl:2316 -msgid "BRAKE ?" +#: tcl/ngcgui_ttt.tcl:270 +msgid "Unicode" msgstr "" -#: ../tcl/mini.tcl:1919 ../tcl/tkemc.tcl:2274 -msgid "MIST ON" +#: tcl/ngcgui_ttt.tcl:275 +msgid "Allow Rotation" msgstr "" -#: ../tcl/mini.tcl:1921 ../tcl/tkemc.tcl:2276 -msgid "MIST OFF" +#: tcl/ngcgui_ttt.tcl:295 +msgid "Make ngcgui-compatible subfile and new tab page" msgstr "" -#: ../tcl/mini.tcl:1923 ../tcl/tkemc.tcl:2278 -msgid "MIST ?" +#: tcl/ngcgui_ttt.tcl:353 +msgid "Null text" msgstr "" -#: ../tcl/mini.tcl:1927 ../tcl/tkemc.tcl:2282 -msgid "FLOOD ON" +#: tcl/ngcgui_ttt.tcl:384 +msgid "Using truetype-tracer default font" msgstr "" -#: ../tcl/mini.tcl:1929 ../tcl/tkemc.tcl:2284 -msgid "FLOOD OFF" +#: tcl/ngcgui_ttt.tcl:388 +msgid "no such file" msgstr "" -#: ../tcl/mini.tcl:1931 ../tcl/tkemc.tcl:2286 -msgid "FLOOD ?" +#: tcl/ngcgui_ttt.tcl:393 +msgid "file not readable" msgstr "" -#: ../tcl/mini.tcl:2052 -msgid "FEEDHOLD" +#: tcl/ngcgui_ttt.tcl:507 +msgid "Creating new tab page" msgstr "" -#: ../tcl/mini.tcl:2124 +#: tcl/ngcgui_app.tcl:25 msgid "" -"TOOL SETUP \n" -" Click or tab to edit. Press enter to return to keyboard machine control." +"requires command inifindall\n" +"from axis.py (LinuxCNC 2.5) or" msgstr "" -#: ../tcl/mini.tcl:2130 -msgid " TOOL NUMBER " +#: tcl/ngcgui_app.tcl:55 +msgid "Substituting" msgstr "" -#: ../tcl/mini.tcl:2131 -msgid " LENGTH " +#: tcl/ngcgui_app.tcl:55 +msgid "for" msgstr "" -#: ../tcl/mini.tcl:2132 -msgid " DIAMETER " +#: tcl/ngcgui_app.tcl:59 +msgid "not readable" msgstr "" -#: ../tcl/mini.tcl:2133 -msgid " COMMENT " +#: tcl/ngcgui_app.tcl:65 tcl/ngcgui_app.tcl:68 +msgid "Unexpected: multiple startups for ngcgui" msgstr "" -#: ../tcl/mini.tcl:2188 -msgid "Add Extra Tool" +#: tcl/ngcgui_app.tcl:66 +msgid "LinuxCNC" msgstr "" -#: ../tcl/mini.tcl:2189 -msgid "Remove Last Tool" +#: tcl/ngcgui_app.tcl:67 +msgid "for linuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" msgstr "" -#: ../tcl/mini.tcl:2217 ../tcl/mini.tcl:2253 -#, tcl-format -msgid "Can't update the tool file while machine is in auto and %s." +#: tcl/ngcgui_app.tcl:86 +msgid "LinuxCNC version" msgstr "" -#: ../tcl/mini.tcl:2229 -msgid "This is not a good number." +#: tcl/ngcgui_app.tcl:87 +msgid "for LinuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" msgstr "" -#: ../tcl/mini.tcl:2293 -msgid "" -"COORDINATE SYSTEM SETUP \n" -"\n" -" Click value to edit with keyboard. Press enter to return to keyboard " -"control of machine. \n" -" " +#: tcl/tooledit.tcl:65 +msgid "Problem reading ~/.tooleditrc" msgstr "" -#: ../tcl/mini.tcl:2320 ../tcl/scripts/Set_Coordinates.tcl:80 -msgid "Axis " +#: tcl/tooledit.tcl:82 +#, tcl-format +msgid "Note: Ignoring duplicate column name: %s" msgstr "" -#: ../tcl/mini.tcl:2321 -msgid "Value " +#: tcl/tooledit.tcl:93 +#, tcl-format +msgid "Unknown column: %s" msgstr "" -#: ../tcl/mini.tcl:2326 ../tcl/scripts/Set_Coordinates.tcl:91 -msgid "Teach" +#: tcl/tooledit.tcl:210 tcl/tooledit.tcl:213 tcl/tooledit.tcl:598 +#: tcl/tooledit.tcl:599 tcl/tooledit.tcl:1032 +msgid "NEW" msgstr "" -#: ../tcl/mini.tcl:2334 -msgid "Write And Load File " +#: tcl/tooledit.tcl:232 +#, tcl-format +msgid "%s must be a number" msgstr "" -#: ../tcl/mini.tcl:2336 -msgid "Offset By Radius" +#: tcl/tooledit.tcl:241 +#, tcl-format +msgid "filename: <%s> not readable" msgstr "" -#: ../tcl/mini.tcl:2337 -msgid "Offset By Length" +#: tcl/tooledit.tcl:245 +#, tcl-format +msgid "filename: <%s> not writable" msgstr "" -#: ../tcl/mini.tcl:2342 -msgid "Subtract" +#: tcl/tooledit.tcl:250 +#, tcl-format +msgid "directory: <%s> not writable" msgstr "" -#: ../tcl/mini.tcl:2344 -msgid "Add" +#: tcl/tooledit.tcl:294 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, value <%s> is not a number" msgstr "" -#: ../tcl/mini.tcl:2366 -msgid "Zero All G54" +#: tcl/tooledit.tcl:300 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, expected integer not <%s>" msgstr "" -#: ../tcl/mini.tcl:2367 -msgid "Zero All G55" +#: tcl/tooledit.tcl:316 +#, tcl-format +msgid "At linenumber %d, Unknown tag <%s>" msgstr "" -#: ../tcl/mini.tcl:2368 -msgid "Zero All G56" +#: tcl/tooledit.tcl:399 +#, tcl-format +msgid "%s: Column sorting not available with tcl_version==%s" msgstr "" -#: ../tcl/mini.tcl:2369 -msgid "Zero All G57" +#: tcl/tooledit.tcl:408 +msgid "tool" msgstr "" -#: ../tcl/mini.tcl:2370 -msgid "Zero All G58" +#: tcl/tooledit.tcl:409 +msgid "poc" msgstr "" -#: ../tcl/mini.tcl:2371 -msgid "Zero All G59" +#: tcl/tooledit.tcl:410 +msgid "diam" msgstr "" -#: ../tcl/mini.tcl:2372 -msgid "Zero All G59.1" +#: tcl/tooledit.tcl:411 +msgid "front" msgstr "" -#: ../tcl/mini.tcl:2373 -msgid "Zero All G59.2" +#: tcl/tooledit.tcl:412 +msgid "back" msgstr "" -#: ../tcl/mini.tcl:2374 -msgid "Zero All G59.3" +#: tcl/tooledit.tcl:413 +msgid "orien" msgstr "" -#: ../tcl/mini.tcl:2375 -msgid "Zero All ????" +#: tcl/tooledit.tcl:414 +msgid "comment" msgstr "" -#: ../tcl/mini.tcl:2493 -msgid "Modified..." +#: tcl/tooledit.tcl:444 +msgid "Del" msgstr "" -#: ../tcl/mini.tcl:2538 -msgid "Save and Load" +#: tcl/tooledit.tcl:473 +msgid "ReLoadTable" msgstr "" -#: ../tcl/mini.tcl:2540 -msgid "Undo" +#: tcl/tooledit.tcl:478 +msgid "SaveFile" msgstr "" -#: ../tcl/mini.tcl:2541 -msgid "Redo" +#: tcl/tooledit.tcl:483 +msgid "ReRead" msgstr "" -#: ../tcl/mini.tcl:2546 -msgid "Delete" +#: tcl/tooledit.tcl:485 +msgid "AddTool" msgstr "" -#: ../tcl/mini.tcl:2551 -msgid "Replace..." +#: tcl/tooledit.tcl:535 +#, tcl-format +msgid "Opened %s" msgstr "" -#: ../tcl/mini.tcl:2664 -msgid "Next Number: " +#: tcl/tooledit.tcl:536 +#, tcl-format +msgid "Created %s" msgstr "" -#: ../tcl/mini.tcl:2765 -msgid "Basic Help" +#: tcl/tooledit.tcl:537 +msgid "File updated" msgstr "" -#: ../tcl/mini.tcl:2765 -msgid "" -"This is a simple ASCII editor like many others.\n" -"\n" -"Ctrl+O Open\n" -"Ctrl+S Save\n" -"Ctrl+Z Undo\n" -"Ctrl+Y Redo\n" -"Ctrl+X Cut\n" -"Ctrl+C Copy\n" -"Ctrl+V Paste\n" -"Del Delete\n" -"Ctrl+A Select All\n" -"\n" -"Ctrl+F Find\n" -"Ctrl+R Replace " +#: tcl/tooledit.tcl:538 +msgid "File modified" +msgstr "" + +#: tcl/tooledit.tcl:539 +msgid "File check errors" msgstr "" -#: ../tcl/mini.tcl:2785 -msgid "" -"tknotepad by Joseph Acosta. \n" -"\n" -" Modified for EMC by: Paul Corner " +#: tcl/tooledit.tcl:540 +msgid "File checked" msgstr "" -#: ../tcl/mini.tcl:2793 -msgid "" -"The contents of this file may have changed, do you wish to to save your " -"changes?" +#: tcl/tooledit.tcl:541 +msgid "File items deleted" msgstr "" -#: ../tcl/mini.tcl:2794 -msgid "New Confirm?" +#: tcl/tooledit.tcl:542 +msgid "Bogus lines in file ignored" msgstr "" -#: ../tcl/mini.tcl:2928 -msgid "Print Setup" +#: tcl/tooledit.tcl:543 +msgid "File errors -- Check Entries" msgstr "" -#: ../tcl/mini.tcl:2932 -msgid "Print Command: " +#: tcl/tooledit.tcl:544 +msgid "Warning: File changed by another process" msgstr "" -#: ../tcl/mini.tcl:3095 -msgid "Find what:" +#: tcl/tooledit.tcl:545 +msgid "Warning: File deleted by another process" msgstr "" -#: ../tcl/mini.tcl:3101 -msgid "Replace with:" +#: tcl/tooledit.tcl:546 +msgid "Added Tool" msgstr "" -#: ../tcl/mini.tcl:3109 -msgid "Find Next" +#: tcl/tooledit.tcl:550 +#, tcl-format +msgid "Sorted by %s, increasing" msgstr "" -#: ../tcl/mini.tcl:3112 -msgid "Replace" +#: tcl/tooledit.tcl:551 +#, tcl-format +msgid "Sorted by %s, decreasing" msgstr "" -#: ../tcl/mini.tcl:3120 -msgid "Up" +#: tcl/tooledit.tcl:593 +msgid "Added" msgstr "" -#: ../tcl/mini.tcl:3121 -msgid "Down" +#: tcl/tooledit.tcl:802 +#, tcl-format +msgid "Tool %s, Column %s, parameter %s is not a number" msgstr "" -#: ../tcl/mini.tcl:3124 -msgid "Match case" +#: tcl/tooledit.tcl:811 +#, tcl-format +msgid "Tool %s, parameter %s must be nonnegative integer" msgstr "" -#: ../tcl/mini.tcl:3569 -msgid "rot-x" +#: tcl/tooledit.tcl:819 +#, tcl-format +msgid "Tool %s: must be 0..9 integer" msgstr "" -#: ../tcl/mini.tcl:3579 -msgid "rot-y" +#: tcl/tooledit.tcl:826 +#, tcl-format +msgid "Tool %s: <%s> must be between -360 and 360" msgstr "" -#: ../tcl/mini.tcl:3589 -msgid "rot-z" +#: tcl/tooledit.tcl:842 +#, tcl-format +msgid "Pocket <%s> specified multiple times" msgstr "" -#: ../tcl/mini.tcl:3599 -msgid "zoom" +#: tcl/tooledit.tcl:857 +#, tcl-format +msgid "Tool <%s> specified multiple times" msgstr "" -#: ../tcl/mini.tcl:3655 -msgid "TEST" +#: tcl/tooledit.tcl:902 +msgid "File Modified" msgstr "" -#: ../tcl/mini.tcl:3699 -msgid "Hide Setup" +#: tcl/tooledit.tcl:903 +msgid "Save Modifications to File?" msgstr "" -#: ../tcl/mini.tcl:3703 -msgid "Show Setup" +#: tcl/tooledit.tcl:930 +#, tcl-format +msgid "" +"Only these columns are currently used:\n" +"\n" +" %s" msgstr "" -#: ../tcl/show_errors.tcl:41 -msgid "EMC2 Errors" +#: tcl/tooledit.tcl:931 +msgid "Limit display to these columns by specifying" msgstr "" -#: ../tcl/show_errors.tcl:44 -msgid "" -"EMC2 terminated with an error. When reporting problems, please include all " -"the information below in your message." +#: tcl/tooledit.tcl:933 +msgid "Format for ini file is" msgstr "" -#: ../tcl/show_errors.tcl:69 ../tcl/scripts/Set_Coordinates.tcl:103 -msgid "Close" +#: tcl/tooledit.tcl:935 +msgid "For standalone use, invoke as" msgstr "" -#: ../tcl/tkemc.tcl:154 ../tcl/tkemc.tcl:181 -msgid "Set Run Mark" +#: tcl/tooledit.tcl:936 +msgid "tool_table_filename" msgstr "" -#: ../tcl/tkemc.tcl:156 +#: tcl/tooledit.tcl:956 #, tcl-format -msgid "Set run mark at line %s?" +msgid "Created by %s" msgstr "" -#: ../tcl/tkemc.tcl:176 ../tcl/tkemc.tcl:204 -msgid "untitled" +#: tcl/tooledit.tcl:957 +msgid "Saved geometry (updated on program termination)" msgstr "" -#: ../tcl/tkemc.tcl:212 -msgid "Load Parameter File" +#: tcl/tooledit.tcl:980 +#, tcl-format +msgid "" +"%s: Axis inifile specifies multiple inifile items for: [EMCIO]TOOL_TABLE" msgstr "" -#: ../tcl/tkemc.tcl:261 -msgid "EMC Diagnostics" +#: tcl/tooledit.tcl:981 +#, tcl-format +msgid "%s: Using: %s" msgstr "" -#: ../tcl/tkemc.tcl:263 -msgid "Task" +#: tcl/tooledit.tcl:990 +#, tcl-format +msgid "" +"%s: Warning: Axis is running but the tool table file <%s> \n" +"differs from the standalone startup file <%s>" msgstr "" -#: ../tcl/tkemc.tcl:265 ../tcl/tkemc.tcl:288 ../tcl/tkemc.tcl:311 -msgid "Heartbeat:" +#: tcl/tooledit.tcl:1004 +msgid "Must be On and Idle to reload tool table" msgstr "" -#: ../tcl/tkemc.tcl:268 ../tcl/tkemc.tcl:291 ../tcl/tkemc.tcl:314 -msgid "Command:" +#: tcl/tooledit.tcl:1093 +msgid "Usage" msgstr "" -#: ../tcl/tkemc.tcl:271 ../tcl/tkemc.tcl:294 ../tcl/tkemc.tcl:317 -msgid "Command #:" +#: tcl/tooledit.tcl:1094 tcl/tooledit.tcl:1095 +msgid "filename" msgstr "" -#: ../tcl/tkemc.tcl:274 ../tcl/tkemc.tcl:297 ../tcl/tkemc.tcl:320 -msgid "Status:" +#: tcl/tooledit.tcl:1096 +#, tcl-format +msgid "Allowed column_ names are: %s" msgstr "" -#: ../tcl/tkemc.tcl:286 -msgid "Io" +#: tcl/tooledit.tcl:1106 +msgid "Missing filename" msgstr "" -#: ../tcl/tkemc.tcl:309 -msgid "Motion" +#: src/emc/usr_intf/axis/scripts/axis.py:183 +msgid "Emergency stop" msgstr "" -#: ../tcl/tkemc.tcl:350 -msgid "About TkEmc" +#: src/emc/usr_intf/axis/scripts/axis.py:184 +msgid "Turn machine on" msgstr "" -#: ../tcl/tkemc.tcl:351 -msgid "" -"TkEmc\n" -"\n" -"Tcl/Tk GUI for Enhanced Machine Controller version 2 (EMC2)\n" -"\n" -"GPL Version 2 (2006)" +#: src/emc/usr_intf/axis/scripts/axis.py:186 +msgid "Activate first axis" msgstr "" -#: ../tcl/tkemc.tcl:399 -msgid "Set Tool Offset" +#: src/emc/usr_intf/axis/scripts/axis.py:187 +msgid "Activate second axis" msgstr "" -#: ../tcl/tkemc.tcl:404 ../tcl/tkemc.tcl:905 -msgid "Tool:" +#: src/emc/usr_intf/axis/scripts/axis.py:188 +msgid "Activate third axis" msgstr "" -#: ../tcl/tkemc.tcl:722 -msgid "Edit..." +#: src/emc/usr_intf/axis/scripts/axis.py:189 +msgid "Activate fourth axis" msgstr "" -#: ../tcl/tkemc.tcl:727 -msgid "Tool Table Editor..." +#: src/emc/usr_intf/axis/scripts/axis.py:190 +msgid "Activate fifth through ninth axis" msgstr "" -#: ../tcl/tkemc.tcl:730 emc/usr_intf/touchy/touchy.glade:1383 -msgid "Reload Tool Table" +#: src/emc/usr_intf/axis/scripts/axis.py:191 +msgid "Set Feed Override from 0% to 100%" msgstr "" -#: ../tcl/tkemc.tcl:740 -msgid "Offsets and Variables..." +#: src/emc/usr_intf/axis/scripts/axis.py:192 +msgid ", and ." msgstr "" -#: ../tcl/tkemc.tcl:741 -msgid "Diagnostics..." +#: src/emc/usr_intf/axis/scripts/axis.py:192 +msgid "Select jog speed" msgstr "" -#: ../tcl/tkemc.tcl:742 -msgid "Backplot..." +#: src/emc/usr_intf/axis/scripts/axis.py:193 +msgid "< and >" msgstr "" -#: ../tcl/tkemc.tcl:748 -msgid "Testing..." +#: src/emc/usr_intf/axis/scripts/axis.py:193 +msgid "Select angular jog speed" msgstr "" -#: ../tcl/tkemc.tcl:749 -msgid "Debug..." +#: src/emc/usr_intf/axis/scripts/axis.py:194 +msgid "I, Shift-I" msgstr "" -#: ../tcl/tkemc.tcl:750 -msgid "Font..." +#: src/emc/usr_intf/axis/scripts/axis.py:194 share/axis/tcl/axis.tcl:2481 +msgid "Select jog increment" msgstr "" -#: ../tcl/tkemc.tcl:754 emc/usr_intf/axis/scripts/image-to-gcode.py:665 -msgid "Units" +#: src/emc/usr_intf/axis/scripts/axis.py:195 +msgid "Continuous jog" msgstr "" -#: ../tcl/tkemc.tcl:755 -msgid "auto" +#: src/emc/usr_intf/axis/scripts/axis.py:196 +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Home" msgstr "" -#: ../tcl/tkemc.tcl:756 emc/usr_intf/pncconf/pncconf.py:8504 -msgid "inches" +#: src/emc/usr_intf/axis/scripts/axis.py:196 +msgid "Send active axis home" msgstr "" -#: ../tcl/tkemc.tcl:757 emc/usr_intf/axis/scripts/axis.py:1543 -#: emc/usr_intf/axis/scripts/axis.py:1713 -#: emc/usr_intf/touchy/touchy.glade:3301 -#: emc/usr_intf/stepconf/stepconf.py:1685 -#: emc/usr_intf/stepconf/stepconf.py:2221 -#: emc/usr_intf/stepconf/stepconf.glade:4357 -#: emc/usr_intf/pncconf/pncconf.py:8500 -#: emc/usr_intf/pncconf/pncconf.glade:2229 -#: emc/usr_intf/pncconf/pncconf.glade:2394 -#: emc/usr_intf/pncconf/pncconf.glade:57616 -#: emc/usr_intf/pncconf/pncconf.glade:57688 -#: emc/usr_intf/pncconf/pncconf.glade:60625 -#: emc/usr_intf/pncconf/pncconf.glade:61718 -#: emc/usr_intf/pncconf/pncconf.glade:62811 -#: emc/usr_intf/pncconf/pncconf.glade:63904 -#: emc/usr_intf/pncconf/pncconf.glade:65070 -msgid "mm" +#: src/emc/usr_intf/axis/scripts/axis.py:197 +msgid "Ctrl-Home" msgstr "" -#: ../tcl/tkemc.tcl:758 -msgid "cm" +#: src/emc/usr_intf/axis/scripts/axis.py:197 +msgid "Home all axes" msgstr "" -#: ../tcl/tkemc.tcl:762 -msgid "Utilities" +#: src/emc/usr_intf/axis/scripts/axis.py:198 +msgid "Shift-Home" msgstr "" -#: ../tcl/tkemc.tcl:763 -msgid "Hal Scope" +#: src/emc/usr_intf/axis/scripts/axis.py:198 +msgid "Zero G54 offset for active axis" msgstr "" -#: ../tcl/tkemc.tcl:785 -msgid "HAL Show" +#: src/emc/usr_intf/axis/scripts/axis.py:199 +msgid "End" msgstr "" -#: ../tcl/tkemc.tcl:786 -msgid "HAL Config" +#: src/emc/usr_intf/axis/scripts/axis.py:199 +msgid "Set G54 offset for active axis" msgstr "" -#: ../tcl/tkemc.tcl:792 -msgid "Balloon help" +#: src/emc/usr_intf/axis/scripts/axis.py:200 +msgid "Jog active axis" msgstr "" -#: ../tcl/tkemc.tcl:815 -msgid "Estop on" +#: src/emc/usr_intf/axis/scripts/axis.py:203 +msgid "Left, Right" msgstr "" -#: ../tcl/tkemc.tcl:816 -msgid "Estop off" +#: src/emc/usr_intf/axis/scripts/axis.py:203 +msgid "Jog first axis" msgstr "" -#: ../tcl/tkemc.tcl:818 -msgid "Machine on" +#: src/emc/usr_intf/axis/scripts/axis.py:204 +msgid "Up, Down" msgstr "" -#: ../tcl/tkemc.tcl:819 -msgid "Machine off" +#: src/emc/usr_intf/axis/scripts/axis.py:204 +msgid "Jog second axis" msgstr "" -#: ../tcl/tkemc.tcl:826 emc/usr_intf/touchy/touchy.glade:1561 -msgid "Manual" +#: src/emc/usr_intf/axis/scripts/axis.py:205 +msgid "Pg Up, Pg Dn" msgstr "" -#: ../tcl/tkemc.tcl:835 -msgid "Mist on" +#: src/emc/usr_intf/axis/scripts/axis.py:205 +msgid "Jog third axis" msgstr "" -#: ../tcl/tkemc.tcl:836 -msgid "Mist off" +#: src/emc/usr_intf/axis/scripts/axis.py:206 +msgid "Shift+above jogs" msgstr "" -#: ../tcl/tkemc.tcl:843 -msgid "Flood on" +#: src/emc/usr_intf/axis/scripts/axis.py:206 +msgid "Jog at traverse speed" msgstr "" -#: ../tcl/tkemc.tcl:844 -msgid "Flood off" +#: src/emc/usr_intf/axis/scripts/axis.py:207 +msgid "Jog fourth axis" msgstr "" -#: ../tcl/tkemc.tcl:851 -msgid "Lube on" +#: src/emc/usr_intf/axis/scripts/axis.py:210 +msgid "Toggle between Drag and Rotate mode" msgstr "" -#: ../tcl/tkemc.tcl:852 -msgid "Lube off" +#: src/emc/usr_intf/axis/scripts/axis.py:211 +msgid "Left Button" msgstr "" -#: ../tcl/tkemc.tcl:869 -msgid "Spindle forward" +#: src/emc/usr_intf/axis/scripts/axis.py:211 +msgid "Pan, rotate or select line" msgstr "" -#: ../tcl/tkemc.tcl:870 -msgid "Spindle reverse" +#: src/emc/usr_intf/axis/scripts/axis.py:212 +msgid "Shift+Left Button" msgstr "" -#: ../tcl/tkemc.tcl:885 -msgid "Brake on" +#: src/emc/usr_intf/axis/scripts/axis.py:212 +msgid "Rotate or pan" msgstr "" -#: ../tcl/tkemc.tcl:886 -msgid "Brake off" +#: src/emc/usr_intf/axis/scripts/axis.py:213 +msgid "Right Button" msgstr "" -#: ../tcl/tkemc.tcl:907 -msgid "Offset:" +#: src/emc/usr_intf/axis/scripts/axis.py:213 +#: src/emc/usr_intf/axis/scripts/axis.py:215 +#: src/emc/usr_intf/axis/scripts/axis.py:216 +msgid "Zoom view" msgstr "" -#: ../tcl/tkemc.tcl:913 -msgid "Work Offsets:" +#: src/emc/usr_intf/axis/scripts/axis.py:214 +msgid "Wheel Button" msgstr "" -#: ../tcl/tkemc.tcl:1233 -msgid "relative" +#: src/emc/usr_intf/axis/scripts/axis.py:214 +msgid "Rotate view" msgstr "" -#: ../tcl/tkemc.tcl:1234 -msgid "machine" +#: src/emc/usr_intf/axis/scripts/axis.py:215 +msgid "Rotate Wheel" msgstr "" -#: ../tcl/tkemc.tcl:1236 -msgid "actual" +#: src/emc/usr_intf/axis/scripts/axis.py:216 +msgid "Control+Left Button" msgstr "" -#: ../tcl/tkemc.tcl:1237 -msgid "commanded" +#: src/emc/usr_intf/axis/scripts/axis.py:219 +msgid "Manual control" msgstr "" -#: ../tcl/tkemc.tcl:1239 -msgid "joint" +#: src/emc/usr_intf/axis/scripts/axis.py:220 +msgid "Code entry (MDI)" msgstr "" -#: ../tcl/tkemc.tcl:1240 -msgid "world" +#: src/emc/usr_intf/axis/scripts/axis.py:221 +msgid "Control-M" msgstr "" -#: ../tcl/tkemc.tcl:1333 -msgid "Axis Offset" +#: src/emc/usr_intf/axis/scripts/axis.py:221 +msgid "Clear MDI history" msgstr "" -#: ../tcl/tkemc.tcl:1335 -msgid "Set axis value:" +#: src/emc/usr_intf/axis/scripts/axis.py:222 +msgid "Control-H" msgstr "" -#: ../tcl/tkemc.tcl:1429 -msgid "Set Feed Override" +#: src/emc/usr_intf/axis/scripts/axis.py:222 +msgid "Copy selected MDI history elements" msgstr "" -#: ../tcl/tkemc.tcl:1435 -msgid "Set feed override:" +#: src/emc/usr_intf/axis/scripts/axis.py:223 +msgid "to clipboard" msgstr "" -#: ../tcl/tkemc.tcl:1460 -msgid "Set Spindle Override" +#: src/emc/usr_intf/axis/scripts/axis.py:224 +msgid "Control-Shift-H" msgstr "" -#: ../tcl/tkemc.tcl:1466 -msgid "Set spindle speed override:" +#: src/emc/usr_intf/axis/scripts/axis.py:224 +msgid "Paste clipboard to MDI history" msgstr "" -#: ../tcl/tkemc.tcl:1521 -msgid "Linear Jog Speed" +#: src/emc/usr_intf/axis/scripts/axis.py:225 share/axis/tcl/axis.tcl:1183 +#: src/emc/usr_intf/touchy/touchy.glade:508 +msgid "Override Limits" msgstr "" -#: ../tcl/tkemc.tcl:1552 -msgid "Angular Jog Speed (deg)/min:" +#: src/emc/usr_intf/axis/scripts/axis.py:227 +msgid "Open program" msgstr "" -#: ../tcl/tkemc.tcl:1596 -msgid "Spindle speed Override:" +#: src/emc/usr_intf/axis/scripts/axis.py:228 +msgid "Control-R" msgstr "" -#: ../tcl/tkemc.tcl:1642 -msgid "Program: " +#: src/emc/usr_intf/axis/scripts/axis.py:228 +msgid "Reload program" msgstr "" -#: ../tcl/tkemc.tcl:1647 -msgid " - Status: " +#: src/emc/usr_intf/axis/scripts/axis.py:229 +msgid "Control-S" msgstr "" -#: ../tcl/tkemc.tcl:1663 -msgid "Optional Stop" +#: src/emc/usr_intf/axis/scripts/axis.py:229 +msgid "Save g-code as" msgstr "" -#: ../tcl/tkemc.tcl:2010 -msgid "Error" +#: src/emc/usr_intf/axis/scripts/axis.py:230 +msgid "Run program" msgstr "" -#: ../tcl/tkemc.tcl:2070 -msgid "Set Font" +#: src/emc/usr_intf/axis/scripts/axis.py:231 +msgid "Step program" msgstr "" -#: ../tcl/tkemc.tcl:2079 ../tcl/ngcgui_ttt.tcl:282 -msgid "Font" +#: src/emc/usr_intf/axis/scripts/axis.py:232 +msgid "Pause program" msgstr "" -#: ../tcl/tkemc.tcl:2086 -msgid "Size" +#: src/emc/usr_intf/axis/scripts/axis.py:233 +msgid "Resume program" msgstr "" -#: ../tcl/tkemc.tcl:2093 -msgid "Style" +#: src/emc/usr_intf/axis/scripts/axis.py:234 +msgid "Stop running program, or" msgstr "" -#: ../tcl/tkemc.tcl:2229 ../share/axis/tcl/axis.tcl:1916 -msgid "ESTOP" +#: src/emc/usr_intf/axis/scripts/axis.py:235 +msgid "stop loading program preview" msgstr "" -#: ../tcl/tkemc.tcl:2231 ../share/axis/tcl/axis.tcl:1918 -msgid "ON" +#: src/emc/usr_intf/axis/scripts/axis.py:237 +msgid "Toggle mist" msgstr "" -#: ../tcl/tkemc.tcl:2290 -msgid "LUBE ON" +#: src/emc/usr_intf/axis/scripts/axis.py:238 +msgid "Toggle flood" msgstr "" -#: ../tcl/tkemc.tcl:2292 -msgid "LUBE OFF" +#: src/emc/usr_intf/axis/scripts/axis.py:239 +msgid "Spindle brake off" msgstr "" -#: ../tcl/tkemc.tcl:2294 -msgid "LUBE ?" +#: src/emc/usr_intf/axis/scripts/axis.py:240 +msgid "Shift-B" msgstr "" -#: ../tcl/scripts/Set_Coordinates.tcl:23 -msgid "EMC Set Coordinate" +#: src/emc/usr_intf/axis/scripts/axis.py:240 +msgid "Spindle brake on" msgstr "" -#: ../tcl/scripts/Set_Coordinates.tcl:26 -msgid "Coordinate System Control Window" +#: src/emc/usr_intf/axis/scripts/axis.py:241 +msgid "Turn spindle clockwise" msgstr "" -#: ../tcl/scripts/Set_Coordinates.tcl:81 -msgid "Var # " +#: src/emc/usr_intf/axis/scripts/axis.py:242 +msgid "Turn spindle counterclockwise" msgstr "" -#: ../tcl/scripts/Set_Coordinates.tcl:82 -msgid "Offset Value " +#: src/emc/usr_intf/axis/scripts/axis.py:243 +msgid "Turn spindle more slowly" msgstr "" -#: ../tcl/scripts/Set_Coordinates.tcl:83 -msgid "What to Teach" +#: src/emc/usr_intf/axis/scripts/axis.py:244 +msgid "Turn spindle more quickly" msgstr "" -#: ../tcl/scripts/Set_Coordinates.tcl:101 -msgid "Set Old" +#: src/emc/usr_intf/axis/scripts/axis.py:246 +msgid "Control-K" msgstr "" -#: ../tcl/scripts/Set_Coordinates.tcl:102 -msgid "Set Zero" +#: src/emc/usr_intf/axis/scripts/axis.py:246 +msgid "Clear live plot" msgstr "" -#: ../tcl/scripts/Set_Coordinates.tcl:104 -msgid "Write" +#: src/emc/usr_intf/axis/scripts/axis.py:247 +msgid "Cycle among preset views" msgstr "" -#: ../tcl/ngcgui.tcl:469 -msgid "Need non-null file name" +#: src/emc/usr_intf/axis/scripts/axis.py:248 +msgid "Cycle among preview, DRO, and user tabs" msgstr "" -#: ../tcl/ngcgui.tcl:545 -msgid "Disallowed use of ngcgui generated file as Subfile" +#: src/emc/usr_intf/axis/scripts/axis.py:250 +msgid "Ctrl-Space" msgstr "" -#: ../tcl/ngcgui.tcl:551 -msgid "" -"marked (not_a_subfile)\n" -"Not intended for use as a subfile" +#: src/emc/usr_intf/axis/scripts/axis.py:250 +msgid "Clear notifications" msgstr "" -#: ../tcl/ngcgui.tcl:566 -msgid "Multiple subroutines in file not allowed" +#: src/emc/usr_intf/axis/scripts/axis.py:850 +#, python-format +msgid "Unknown tool %d" msgstr "" -#: ../tcl/ngcgui.tcl:575 ../tcl/ngcgui.tcl:597 ../tcl/ngcgui.tcl:610 -#: ../tcl/ngcgui.tcl:652 ../tcl/ngcgui.tcl:757 -msgid "bogus" +#: src/emc/usr_intf/axis/scripts/axis.py:852 +msgid "No tool" msgstr "" -#: ../tcl/ngcgui.tcl:577 -msgid "sub label" +#: src/emc/usr_intf/axis/scripts/axis.py:854 +#, python-format +msgid "Tool %(tool)d, offset %(zo)g, diameter %(dia)g" msgstr "" -#: ../tcl/ngcgui.tcl:577 ../tcl/ngcgui.tcl:654 -msgid "does not match subroutine file name" +#: src/emc/usr_intf/axis/scripts/axis.py:856 +#, python-format +msgid "Tool %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" msgstr "" -#: ../tcl/ngcgui.tcl:593 -msgid "ignoring M2 after endsub" +#: src/emc/usr_intf/axis/scripts/axis.py:1031 +msgid "Filtering..." msgstr "" -#: ../tcl/ngcgui.tcl:598 -msgid "file contains lines after subend" +#: src/emc/usr_intf/axis/scripts/axis.py:1102 +msgid "Filter failed" msgstr "" -#: ../tcl/ngcgui.tcl:611 -msgid "file contains lines before sub" +#: src/emc/usr_intf/axis/scripts/axis.py:1103 +#, python-format +msgid "" +"The program %(program)r exited with code %(code)d. Any error messages it " +"produced are shown below:" msgstr "" -#: ../tcl/ngcgui.tcl:654 -msgid "endsub label" +#: src/emc/usr_intf/axis/scripts/axis.py:1171 +#, python-format +msgid "G-Code error in %s" msgstr "" -#: ../tcl/ngcgui.tcl:759 -msgid "out of sequence positional parameter" +#: src/emc/usr_intf/axis/scripts/axis.py:1172 +#, python-format +msgid "" +"Near line %(seq)d of %(f)s:\n" +"%(error_str)s" msgstr "" -#: ../tcl/ngcgui.tcl:759 -msgid "expected" +#: src/emc/usr_intf/axis/scripts/axis.py:1341 +#: src/emc/usr_intf/axis/scripts/axis.py:2942 share/axis/tcl/axis.tcl:1162 +#: share/axis/tcl/axis.tcl:1164 share/axis/tcl/axis.tcl:2269 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:895 +msgid "Continuous" msgstr "" -#: ../tcl/ngcgui.tcl:819 -msgid "toomany" +#: src/emc/usr_intf/axis/scripts/axis.py:1452 +msgid "Ok" msgstr "" -#: ../tcl/ngcgui.tcl:870 -msgid "no sub found in file" +#: src/emc/usr_intf/axis/scripts/axis.py:1599 +msgid "T Tool Table" msgstr "" -#: ../tcl/ngcgui.tcl:873 -msgid "no endsub found in file" +#: src/emc/usr_intf/axis/scripts/axis.py:1610 +#: src/emc/usr_intf/axis/scripts/axis.py:1859 +#: src/emc/usr_intf/axis/scripts/axis.py:2387 +#: src/emc/usr_intf/stepconf/stepconf.py:1328 +#: src/emc/usr_intf/stepconf/pages.py:631 +msgid "in" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1613 +msgid " radius" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1615 +msgid " diameter" msgstr "" -#: ../tcl/ngcgui.tcl:1101 -msgid "Controls" +#: src/emc/usr_intf/axis/scripts/axis.py:1616 +msgid "°" msgstr "" -#: ../tcl/ngcgui.tcl:1110 -msgid "Preamble" +#: src/emc/usr_intf/axis/scripts/axis.py:1625 +msgid "Coordinate System:" msgstr "" -#: ../tcl/ngcgui.tcl:1123 -msgid "Subfile" +#: src/emc/usr_intf/axis/scripts/axis.py:1641 +msgid "fixture" msgstr "" -#: ../tcl/ngcgui.tcl:1135 -msgid "Postamble" +#: src/emc/usr_intf/axis/scripts/axis.py:1642 +msgid "workpiece" msgstr "" -#: ../tcl/ngcgui.tcl:1152 -msgid "Retain values on Subfile read" +#: src/emc/usr_intf/axis/scripts/axis.py:1658 +msgid "Name:" msgstr "" -#: ../tcl/ngcgui.tcl:1160 -msgid "Expand subroutine" +#: src/emc/usr_intf/axis/scripts/axis.py:1658 +msgid "Size:" msgstr "" -#: ../tcl/ngcgui.tcl:1169 -msgid "Autosend" +#: src/emc/usr_intf/axis/scripts/axis.py:1659 +msgid "Tool order:" msgstr "" -#: ../tcl/ngcgui.tcl:1179 -msgid "Verbose ngcfile" +#: src/emc/usr_intf/axis/scripts/axis.py:1659 +msgid "Rapid distance:" msgstr "" -#: ../tcl/ngcgui.tcl:1189 ../tcl/ngcgui.tcl:2259 ../tcl/ngcgui.tcl:2283 -#: ../tcl/ngcgui.tcl:2313 -msgid "Create Feature" +#: src/emc/usr_intf/axis/scripts/axis.py:1660 +msgid "Feed distance:" msgstr "" -#: ../tcl/ngcgui.tcl:1195 ../tcl/ngcgui.tcl:2938 -msgid "MakeFile" +#: src/emc/usr_intf/axis/scripts/axis.py:1660 +msgid "Total distance:" msgstr "" -#: ../tcl/ngcgui.tcl:1213 -msgid "Reread" +#: src/emc/usr_intf/axis/scripts/axis.py:1661 +msgid "Run time:" msgstr "" -#: ../tcl/ngcgui.tcl:1232 -msgid "SendFileToAxis" +#: src/emc/usr_intf/axis/scripts/axis.py:1661 +msgid "X bounds:" msgstr "" -#: ../tcl/ngcgui.tcl:1275 -msgid "Unrecoverable problem" +#: src/emc/usr_intf/axis/scripts/axis.py:1662 +msgid "Y bounds:" msgstr "" -#: ../tcl/ngcgui.tcl:1480 -msgid "Positional Parameters" +#: src/emc/usr_intf/axis/scripts/axis.py:1662 +msgid "Z bounds:" msgstr "" -#: ../tcl/ngcgui.tcl:1585 -msgid "_Globals" +#: src/emc/usr_intf/axis/scripts/axis.py:1663 +msgid "A bounds:" msgstr "" -#: ../tcl/ngcgui.tcl:1940 -msgid "Axis is not responding" +#: src/emc/usr_intf/axis/scripts/axis.py:1663 +msgid "B bounds:" msgstr "" -#: ../tcl/ngcgui.tcl:1941 -msgid "Error: " +#: src/emc/usr_intf/axis/scripts/axis.py:1664 +msgid "C bounds:" msgstr "" -#: ../tcl/ngcgui.tcl:1943 -msgid "Autosend disabled, Ctrl-A toggles autosend" +#: src/emc/usr_intf/axis/scripts/axis.py:1688 +#, python-format +msgid "Program exceeds machine minimum on axis %s" msgstr "" -#: ../tcl/ngcgui.tcl:1945 -msgid "File saving enabled -- Finalize to save" +#: src/emc/usr_intf/axis/scripts/axis.py:1691 +#, python-format +msgid "Program exceeds machine maximum on axis %s" msgstr "" -#: ../tcl/ngcgui.tcl:1961 -msgid "Require .ngc suffix for filename" +#: src/emc/usr_intf/axis/scripts/axis.py:1696 +msgid "Program exceeds machine limits" msgstr "" -#: ../tcl/ngcgui.tcl:1971 -msgid "Disallowed overwrite of" +#: src/emc/usr_intf/axis/scripts/axis.py:1699 +msgid "Run Anyway" msgstr "" -#: ../tcl/ngcgui.tcl:1990 -msgid "FEATURE" +#: src/emc/usr_intf/axis/scripts/axis.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1581 +msgid "No file loaded" msgstr "" -#: ../tcl/ngcgui.tcl:1997 -msgid "feature line added" +#: src/emc/usr_intf/axis/scripts/axis.py:1845 +#, python-format +msgid "generated from %s" msgstr "" -#: ../tcl/ngcgui.tcl:2006 -msgid "line added" +#: src/emc/usr_intf/axis/scripts/axis.py:1851 +#, python-format +msgid "" +"%(size)s bytes\n" +"%(lines)s gcode lines" msgstr "" -#: ../tcl/ngcgui.tcl:2006 -msgid "activated" +#: src/emc/usr_intf/axis/scripts/axis.py:1877 +#, python-format +msgid "%.1f minutes" msgstr "" -#: ../tcl/ngcgui.tcl:2008 -msgid "restores" +#: src/emc/usr_intf/axis/scripts/axis.py:1879 +#, python-format +msgid "%d seconds" msgstr "" -#: ../tcl/ngcgui.tcl:2045 -msgid "NOTREACHED mode" +#: src/emc/usr_intf/axis/scripts/axis.py:1887 +#, python-format +msgid "%(a)f to %(b)f = %(diff)f %(units)s" msgstr "" -#: ../tcl/ngcgui.tcl:2260 -msgid "Enter parms for 1st feature" +#: src/emc/usr_intf/axis/scripts/axis.py:1888 +msgid "G-Code Properties" msgstr "" -#: ../tcl/ngcgui.tcl:2267 -msgid "New Outfile" +#: src/emc/usr_intf/axis/scripts/axis.py:2021 +msgid "All machinable files" msgstr "" -#: ../tcl/ngcgui.tcl:2269 -msgid "Ready to make New Outfile" +#: src/emc/usr_intf/axis/scripts/axis.py:2022 +#: src/emc/usr_intf/axis/scripts/axis.py:2659 +msgid "rs274ngc files" msgstr "" -#: ../tcl/ngcgui.tcl:2286 ../tcl/ngcgui.tcl:2319 -msgid "Enter parms for feature " +#: src/emc/usr_intf/axis/scripts/axis.py:2037 +msgid "axis cannot accept remote command while running" msgstr "" -#: ../tcl/ngcgui.tcl:2311 -msgid "Create Next" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:2098 +#, fuzzy +msgid "File not Writable:" +msgstr "Tiedosto ei ole avoinna" -#: ../tcl/ngcgui.tcl:2316 -msgid "Created feature " +#: src/emc/usr_intf/axis/scripts/axis.py:2099 +msgid "" +"This file is not writable\n" +"You can Edit-readonly\n" +"\n" +"or\n" +"\n" +"Save it to your own directory\n" +"then open that saved, writable file" msgstr "" -#: ../tcl/ngcgui.tcl:2336 -msgid "option" +#: src/emc/usr_intf/axis/scripts/axis.py:2106 +msgid "Edit-readonly" msgstr "" -#: ../tcl/ngcgui.tcl:2347 -msgid "Missing parameters" +#: src/emc/usr_intf/axis/scripts/axis.py:2440 +msgid "Axis is already homed, are you sure you want to re-home?" msgstr "" -#: ../tcl/ngcgui.tcl:2351 -msgid "Parse Error" +#: src/emc/usr_intf/axis/scripts/axis.py:2453 +msgid "This axis is already homed, are you sure you want to re-home?" msgstr "" -#: ../tcl/ngcgui.tcl:2358 -msgid "Null Preamble" +#: src/emc/usr_intf/axis/scripts/axis.py:2493 share/axis/tcl/axis.tcl:1178 +msgid "Touch Off" msgstr "" -#: ../tcl/ngcgui.tcl:2363 -msgid "Read Preamble" +#: src/emc/usr_intf/axis/scripts/axis.py:2494 +#, python-format +msgid "Enter %s coordinate relative to %%s:" msgstr "" -#: ../tcl/ngcgui.tcl:2367 -msgid "Preamble Error" +#: src/emc/usr_intf/axis/scripts/axis.py:2671 +msgid "Error saving file" msgstr "" -#: ../tcl/ngcgui.tcl:2372 -msgid "Null Postamble" +#: src/emc/usr_intf/axis/scripts/axis.py:3077 +#: src/emc/usr_intf/touchy/touchy.glade:577 +#: src/emc/usr_intf/gscreen/gscreen.glade:2933 +msgid "Home All" msgstr "" -#: ../tcl/ngcgui.tcl:2377 -msgid "Read Postamble" +#: src/emc/usr_intf/axis/scripts/axis.py:3079 +msgid "Home all axes [Ctrl-Home]" msgstr "" -#: ../tcl/ngcgui.tcl:2381 -msgid "Postamble Error" +#: src/emc/usr_intf/axis/scripts/axis.py:3082 +msgid "Home All Axes" msgstr "" -#: ../tcl/ngcgui.tcl:2386 -msgid "Read Subfile" +#: src/emc/usr_intf/axis/scripts/axis.py:3089 +msgid "Unhome All Axes" msgstr "" -#: ../tcl/ngcgui.tcl:2391 -msgid "Write Error" +#: src/emc/usr_intf/axis/scripts/axis.py:3113 +#, python-format +msgid "Home Axis _%s" msgstr "" -#: ../tcl/ngcgui.tcl:2395 -msgid "Outfile set" +#: src/emc/usr_intf/axis/scripts/axis.py:3115 +#, python-format +msgid "Unhome Axis _%s" msgstr "" -#: ../tcl/ngcgui.tcl:2400 -msgid "Finished" +#: src/emc/usr_intf/axis/scripts/axis.py:3282 +msgid "Run from here" msgstr "" -#: ../tcl/ngcgui.tcl:2405 -msgid "Canceled" +#: src/emc/usr_intf/axis/scripts/axis.py:3598 +msgid "Error in ~/.axisrc" msgstr "" -#: ../tcl/ngcgui.tcl:2411 -msgid "Sent" +#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:102 +msgid "Machinekit Status" msgstr "" -#: ../tcl/ngcgui.tcl:2415 -msgid "SendFileToAxis failed" +#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:118 +msgid "Copy All" msgstr "" -#: ../tcl/ngcgui.tcl:2419 -msgid "Ctrl-k for Key bindings" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 +#, python-format +msgid "Insert tool %d and click continue when ready" msgstr "" -#: ../tcl/ngcgui.tcl:2423 -msgid "Expand sub" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:39 +msgid "Remove the tool and click continue when ready" msgstr "" -#: ../tcl/ngcgui.tcl:2437 -msgid "Finalize Canceled" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 +#: src/emc/usr_intf/touchy/mdi.py:49 src/emc/usr_intf/gscreen/mdi.py:49 +msgid "Tool change" msgstr "" -#: ../tcl/ngcgui.tcl:2592 ../tcl/ngcgui.tcl:2747 -msgid "Dismiss" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 +msgid "Continue" msgstr "" -#: ../tcl/ngcgui.tcl:2597 -msgid "ngcgui Error" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:64 +msgid "AXIS Manual Toolchanger" msgstr "" -#: ../tcl/ngcgui.tcl:2620 -msgid "Declining support for tk send bug in ngcgui" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:68 +msgid "" +"This window is part of the AXIS manual toolchanger. It is safe to close or " +"iconify this window, or it will close automatically after a few seconds." msgstr "" -#: ../tcl/ngcgui.tcl:2621 -msgid "You should upgrade emc to >=emc2.5" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:507 +#, python-format +msgid "%s: Image to gcode" msgstr "" -#: ../tcl/ngcgui.tcl:2665 -msgid "pre2.4_send_file_to_axis:error" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:508 +msgid "Image to gcode" msgstr "" -#: ../tcl/ngcgui.tcl:2861 -msgid "Toggle autosend" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:518 +#, python-format +msgid "" +"Image size: %(w)d x %(h)d pixels\n" +"Minimum pixel value: %(min)d\n" +"Maximum pixel value: %(max)d" msgstr "" -#: ../tcl/ngcgui.tcl:2862 -msgid "Clear entries" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 +msgid "G20 (in)" msgstr "" -#: ../tcl/ngcgui.tcl:2863 -msgid "Set entries to default values" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 +msgid "G21 (mm)" msgstr "" -#: ../tcl/ngcgui.tcl:2864 ../tcl/ngcgui.tcl:2878 ../tcl/ngcgui.tcl:2880 -msgid "Open editor specified by" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 +#: src/emc/usr_intf/touchy/emc_interface.py:417 +msgid "None" msgstr "" -#: ../tcl/ngcgui.tcl:2865 -msgid "on last outfile" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +msgid "White" msgstr "" -#: ../tcl/ngcgui.tcl:2866 -msgid "toggle expand subroutines" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +msgid "Black" msgstr "" -#: ../tcl/ngcgui.tcl:2867 -msgid "Create feature" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Rows" msgstr "" -#: ../tcl/ngcgui.tcl:2868 -msgid "Finalize (AUTO send is" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Columns" msgstr "" -#: ../tcl/ngcgui.tcl:2869 -msgid "Show key bindings" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Rows then Columns" msgstr "" -#: ../tcl/ngcgui.tcl:2870 -msgid "Restart (cancel pending)" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Columns then Rows" msgstr "" -#: ../tcl/ngcgui.tcl:2871 -msgid "(re)Read Preamble" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Positive" msgstr "" -#: ../tcl/ngcgui.tcl:2872 -msgid "(re)Read Postamble" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Negative" msgstr "" -#: ../tcl/ngcgui.tcl:2873 -msgid "(re)Read Subfile" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Alternating" msgstr "" -#: ../tcl/ngcgui.tcl:2874 -msgid "toggle retain values" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Up Milling" msgstr "" -#: ../tcl/ngcgui.tcl:2875 -msgid "toggle output file verbosity" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Down Milling" msgstr "" -#: ../tcl/ngcgui.tcl:2876 -msgid "Show status" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "Ball End" msgstr "" -#: ../tcl/ngcgui.tcl:2877 -msgid "Show full status (debug info)" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "Flat End" msgstr "" -#: ../tcl/ngcgui.tcl:2879 -msgid "on current subfile" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "30 Degree" msgstr "" -#: ../tcl/ngcgui.tcl:2881 -msgid "on current preamble" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "45 Degree" msgstr "" -#: ../tcl/ngcgui.tcl:2935 -msgid "Finalize" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "60 Degree" msgstr "" -#: ../tcl/ngcgui.tcl:3144 -msgid "not writable" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 +msgid "Secondary" msgstr "" -#: ../tcl/ngcgui.tcl:3279 ../tcl/ngcgui.tcl:3459 -msgid "new" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 +msgid "Full" msgstr "" -#: ../tcl/ngcgui.tcl:3450 -msgid "remove" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:654 +msgid "Invert Image" msgstr "" -#: ../tcl/ngcgui.tcl:3472 ../tcl/ngcgui.tcl:3478 -msgid "move" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:655 +msgid "Normalize Image" msgstr "" -#: ../tcl/ngcgui.tcl:3573 emc/usr_intf/pncconf/pncconf.py:7018 -#: emc/usr_intf/pncconf/pncconf.py:7135 emc/usr_intf/pncconf/pncconf.py:7300 -msgid "Custom" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:656 +msgid "Extend Image Border" msgstr "" -#: ../tcl/ngcgui.tcl:3590 -msgid "Problem creating page" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:657 +msgid "Pixel Size (Units)" msgstr "" -#: ../tcl/ngcgui.tcl:3597 -msgid "entrykeybindings not available" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:658 +msgid "Depth (units)" msgstr "" -#: ../tcl/ngcgui.tcl:3626 -msgid "Found multiple matches for" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:659 +msgid "Tolerance (units)" msgstr "" -#: ../tcl/ngcgui.tcl:3627 -msgid "using path" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:660 +msgid "Stepover (pixels)" msgstr "" -#: ../tcl/ngcgui.tcl:3636 -msgid "Ngcgui configuration search failed for" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:661 +msgid "Tool Diameter (units)" msgstr "" -#: ../tcl/ngcgui.tcl:3638 -msgid "Search path" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:662 +msgid "Tool Type" msgstr "" -#: ../tcl/ngcgui.tcl:3641 -msgid "File Not Found" -msgstr "Tiedostoa ei löydy" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:663 +msgid "Feed Rate (units per minute)" +msgstr "" -#: ../tcl/ngcgui.tcl:3644 -msgid "Try to Continue" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:664 +msgid "Plunge Feed Rate (units per minute)" msgstr "" -#: ../tcl/ngcgui.tcl:3647 -msgid "Ngcgui Configuration File Not Found" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:666 +msgid "Safety Height (units)" msgstr "" -#: ../tcl/ngcgui.tcl:3919 -msgid "ini file" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:667 +msgid "Scan Pattern" msgstr "" -#: ../tcl/ngcgui.tcl:3927 -msgid "not found" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:668 +msgid "Scan Direction" msgstr "" -#: ../tcl/ngcgui_ttt.tcl:81 -msgid "ngcgui_app.tcl must be loaded before" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:669 +msgid "Lace Bounding" msgstr "" -#: ../tcl/ngcgui_ttt.tcl:89 -msgid "Create a subroutine file from truetype-tracer (V4 reqd)" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:670 +msgid "Contact Angle (degrees)" msgstr "" -#: ../tcl/ngcgui_ttt.tcl:101 ../tcl/ngcgui_ttt.tcl:114 -msgid "problem with" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:671 +msgid "Spindle Speed (RPM)" msgstr "" -#: ../tcl/ngcgui_ttt.tcl:105 -msgid "No entry for" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:672 +msgid "Roughing offset (units, 0=no roughing)" msgstr "" -#: ../tcl/ngcgui_ttt.tcl:108 -msgid "wrong version of truetype-tracer" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:673 +msgid "Roughing depth per pass (units)" msgstr "" -#: ../tcl/ngcgui_ttt.tcl:124 -msgid "not writable, using" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:740 +msgid "image-to-gcode: User pressed cancel" msgstr "" -#: ../tcl/ngcgui_ttt.tcl:124 -msgid "and setting expandsub" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:753 +msgid "Depth images" msgstr "" -#: ../tcl/ngcgui_ttt.tcl:160 -msgid "Text" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:22 +msgid "Machinekit Debug Level" msgstr "" -#: ../tcl/ngcgui_ttt.tcl:170 -msgid "Linescale" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:23 +msgid "debuglevel" msgstr "" -#: ../tcl/ngcgui_ttt.tcl:176 -msgid "none" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:36 +msgid "Configuration *" msgstr "" -#: ../tcl/ngcgui_ttt.tcl:191 -msgid "Subdiv" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:37 +msgid "Version Numbers *" msgstr "" -#: ../tcl/ngcgui_ttt.tcl:198 -msgid "default" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:38 +msgid "NML *" msgstr "" -#: ../tcl/ngcgui_ttt.tcl:238 -msgid "Mode" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:39 +msgid "RCS *" msgstr "" -#: ../tcl/ngcgui_ttt.tcl:246 -msgid "normal" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:40 +msgid "Task Issue" msgstr "" -#: ../tcl/ngcgui_ttt.tcl:247 -msgid "date" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:41 +msgid "Motion Time" msgstr "" -#: ../tcl/ngcgui_ttt.tcl:248 -msgid "fontname" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:43 +msgid "Interpreter List" msgstr "" -#: ../tcl/ngcgui_ttt.tcl:261 -msgid "Switches" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:47 +#, python-format +msgid "" +"Inifile setting for this debug level:\n" +"[EMC]DEBUG=0x%08x" msgstr "" -#: ../tcl/ngcgui_ttt.tcl:269 -msgid "Unicode" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:81 +msgid " * This option can only be enabled in the inifile" msgstr "" -#: ../tcl/ngcgui_ttt.tcl:274 -msgid "Allow Rotation" +#: share/axis/tcl/axis.tcl:52 +msgid "_Open..." msgstr "" -#: ../tcl/ngcgui_ttt.tcl:294 -msgid "Make ngcgui-compatible subfile and new tab page" +#: share/axis/tcl/axis.tcl:56 +msgid "Recent _Files" msgstr "" -#: ../tcl/ngcgui_ttt.tcl:352 -msgid "Null text" +#: share/axis/tcl/axis.tcl:60 +msgid "_Edit..." msgstr "" -#: ../tcl/ngcgui_ttt.tcl:383 -msgid "Using truetype-tracer default font" +#: share/axis/tcl/axis.tcl:63 +msgid "Ctrl-R" msgstr "" -#: ../tcl/ngcgui_ttt.tcl:387 -msgid "no such file" +#: share/axis/tcl/axis.tcl:65 +msgid "_Reload" msgstr "" -#: ../tcl/ngcgui_ttt.tcl:392 -msgid "file not readable" +#: share/axis/tcl/axis.tcl:68 +msgid "Ctrl-S" msgstr "" -#: ../tcl/ngcgui_ttt.tcl:506 -msgid "Creating new tab page" +#: share/axis/tcl/axis.tcl:70 +msgid "_Save gcode as..." msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:144 -msgid "Emergency stop" +#: share/axis/tcl/axis.tcl:74 +msgid "_Properties..." msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:145 -msgid "Turn machine on" +#: share/axis/tcl/axis.tcl:80 +msgid "Edit _tool table..." msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:147 -msgid "Activate first axis" +#: share/axis/tcl/axis.tcl:84 +msgid "Reload tool ta_ble" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:148 -msgid "Activate second axis" +#: share/axis/tcl/axis.tcl:90 +msgid "_Ladder Editor..." msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:149 -msgid "Activate third axis" +#: share/axis/tcl/axis.tcl:102 +msgid "Toggle _Emergency Stop" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:150 -msgid "Activate fourth axis" +#: share/axis/tcl/axis.tcl:107 +msgid "Toggle _Machine Power" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:151 -msgid "Activate fifth through ninth axis" +#: share/axis/tcl/axis.tcl:114 +msgid "_Run program" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:152 -msgid "Set Feed Override from 0% to 100%" +#: share/axis/tcl/axis.tcl:118 +msgid "Ru_n from selected line" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:153 -msgid ", and ." +#: share/axis/tcl/axis.tcl:123 +msgid "S_tep" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:153 -msgid "Select jog speed" +#: share/axis/tcl/axis.tcl:128 +msgid "_Pause" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:154 -msgid "< and >" +#: share/axis/tcl/axis.tcl:133 +msgid "Re_sume" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:154 -msgid "Select angular jog speed" +#: share/axis/tcl/axis.tcl:143 +msgid "Stop at M_1" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:155 -msgid "I, Shift-I" +#: share/axis/tcl/axis.tcl:148 +msgid "Skip lines with '_/'" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:155 ../share/axis/tcl/axis.tcl:2356 -msgid "Select jog increment" +#: share/axis/tcl/axis.tcl:153 +msgid "Ctrl-M" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:156 -msgid "Continuous jog" +#: share/axis/tcl/axis.tcl:155 +msgid "Clear MDI h_istory" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:157 emc/usr_intf/pncconf/pncconf.py:479 -msgid "Home" +#: share/axis/tcl/axis.tcl:157 +msgid "Ctrl-H" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:157 -msgid "Send active axis home" +#: share/axis/tcl/axis.tcl:159 +msgid "Copy from MDI hist_ory" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:158 -msgid "Ctrl-Home" +#: share/axis/tcl/axis.tcl:161 +msgid "Ctrl-Shift-H" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:158 -msgid "Home all axes" +#: share/axis/tcl/axis.tcl:163 +msgid "Paste to MDI histor_y" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:159 -msgid "Shift-Home" +#: share/axis/tcl/axis.tcl:169 +msgid "_Calibration" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:159 -msgid "Zero G54 offset for active axis" +#: share/axis/tcl/axis.tcl:173 +msgid "Show _Hal Configuration" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:160 -msgid "End" +#: share/axis/tcl/axis.tcl:177 +msgid "H_al Meter" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:160 -msgid "Set G54 offset for active axis" +#: share/axis/tcl/axis.tcl:181 +msgid "Ha_l Scope" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:161 -msgid "Jog active axis" +#: share/axis/tcl/axis.tcl:185 +msgid "Sho_w Machinekit Status" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:164 -msgid "Left, Right" +#: share/axis/tcl/axis.tcl:189 +msgid "Set _Debug Level" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:164 -msgid "Jog first axis" +#: share/axis/tcl/axis.tcl:195 +msgid "Homin_g" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:165 -msgid "Up, Down" +#: share/axis/tcl/axis.tcl:199 +msgid "_Unhoming" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:165 -msgid "Jog second axis" +#: share/axis/tcl/axis.tcl:203 +msgid "_Zero coordinate system" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:166 -msgid "Pg Up, Pg Dn" +#: share/axis/tcl/axis.tcl:207 +msgid "P1 G5_4" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:166 -msgid "Jog third axis" +#: share/axis/tcl/axis.tcl:211 +msgid "P2 G5_5" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:167 -msgid "Shift+above jogs" +#: share/axis/tcl/axis.tcl:215 +msgid "P3 G5_6" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:167 -msgid "Jog at traverse speed" +#: share/axis/tcl/axis.tcl:219 +msgid "P4 G5_7" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:168 -msgid "Jog fourth axis" +#: share/axis/tcl/axis.tcl:223 +msgid "P5 G5_8" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:171 -msgid "Toggle between Drag and Rotate mode" +#: share/axis/tcl/axis.tcl:227 +msgid "P6 G5_9" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:172 -msgid "Left Button" +#: share/axis/tcl/axis.tcl:231 +msgid "P7 G59._1" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:172 -msgid "Pan, rotate or select line" +#: share/axis/tcl/axis.tcl:235 +msgid "P8 G59._2" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:173 -msgid "Shift+Left Button" +#: share/axis/tcl/axis.tcl:239 +msgid "P9 G59._3" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:173 -msgid "Rotate or pan" +#: share/axis/tcl/axis.tcl:243 +msgid "_G92" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:174 -msgid "Right Button" +#: share/axis/tcl/axis.tcl:251 +msgid "Tool touch off to wor_kpiece" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:174 emc/usr_intf/axis/scripts/axis.py:176 -#: emc/usr_intf/axis/scripts/axis.py:177 -msgid "Zoom view" +#: share/axis/tcl/axis.tcl:257 +msgid "Tool touch off to _fixture" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:175 -msgid "Wheel Button" +#: share/axis/tcl/axis.tcl:265 +msgid "_Top view" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:175 -msgid "Rotate view" +#: share/axis/tcl/axis.tcl:272 +msgid "_Rotated Top view" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:176 -msgid "Rotate Wheel" +#: share/axis/tcl/axis.tcl:279 +msgid "_Side view" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:177 -msgid "Control+Left Button" +#: share/axis/tcl/axis.tcl:286 +msgid "_Front view" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:180 -msgid "Manual control" +#: share/axis/tcl/axis.tcl:293 +msgid "_Perspective view" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:181 -msgid "Code entry (MDI)" +#: share/axis/tcl/axis.tcl:302 +msgid "Display _Inches" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:182 -msgid "Control-M" +#: share/axis/tcl/axis.tcl:309 +msgid "Display _MM" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:182 -msgid "Clear MDI history" +#: share/axis/tcl/axis.tcl:316 +msgid "S_how program" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:183 -msgid "Control-H" +#: share/axis/tcl/axis.tcl:321 +msgid "Show program r_apids" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:183 -msgid "Copy selected MDI history elements" +#: share/axis/tcl/axis.tcl:326 +msgid "Alpha-_blend program" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:184 -msgid "to clipboard" +#: share/axis/tcl/axis.tcl:331 +msgid "Sho_w live plot" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:185 -msgid "Control-Shift-H" +#: share/axis/tcl/axis.tcl:336 +msgid "Show too_l" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:185 -msgid "Paste clipboard to MDI history" +#: share/axis/tcl/axis.tcl:341 +msgid "Show e_xtents" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:186 ../share/axis/tcl/axis.tcl:1113 -#: emc/usr_intf/touchy/touchy.glade:508 -msgid "Override Limits" +#: share/axis/tcl/axis.tcl:345 +msgid "_Grid" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:188 -msgid "Open program" +#: share/axis/tcl/axis.tcl:350 +msgid "Show o_ffsets" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:189 -msgid "Control-R" +#: share/axis/tcl/axis.tcl:355 +msgid "Sh_ow machine limits" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:189 -msgid "Reload program" +#: share/axis/tcl/axis.tcl:360 +msgid "Show v_elocity" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:190 -msgid "Control-S" +#: share/axis/tcl/axis.tcl:365 +msgid "Show _distance to go" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:190 -msgid "Save g-code as" +#: share/axis/tcl/axis.tcl:370 +msgid "Large coordinate fo_nt" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:191 -msgid "Run program" +#: share/axis/tcl/axis.tcl:373 +msgid "Ctrl-K" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:192 -msgid "Step program" +#: share/axis/tcl/axis.tcl:375 +msgid "_Clear live plot" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:193 -msgid "Pause program" +#: share/axis/tcl/axis.tcl:384 +msgid "Show commanded position" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:194 -msgid "Resume program" +#: share/axis/tcl/axis.tcl:391 +msgid "Show actual position" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:195 -msgid "Stop running program, or" +#: share/axis/tcl/axis.tcl:400 +msgid "Show machine position" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:196 -msgid "stop loading program preview" +#: share/axis/tcl/axis.tcl:407 +msgid "Show relative position" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:198 -msgid "Toggle mist" +#: share/axis/tcl/axis.tcl:416 +msgid "Joint mode" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:199 -msgid "Toggle flood" +#: share/axis/tcl/axis.tcl:423 +msgid "World mode" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:200 -msgid "Spindle brake off" +#: share/axis/tcl/axis.tcl:431 +msgid "_Off" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:201 -msgid "Shift-B" +#: share/axis/tcl/axis.tcl:437 +msgid "_Custom" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:201 -msgid "Spindle brake on" +#: share/axis/tcl/axis.tcl:443 +msgid "User_0" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:202 -msgid "Turn spindle clockwise" +#: share/axis/tcl/axis.tcl:447 +msgid "User_1" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:203 -msgid "Turn spindle counterclockwise" +#: share/axis/tcl/axis.tcl:451 +msgid "User_2" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:204 -msgid "Turn spindle more slowly" +#: share/axis/tcl/axis.tcl:455 +msgid "User_3" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:205 -msgid "Turn spindle more quickly" +#: share/axis/tcl/axis.tcl:459 +msgid "User_4" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:207 -msgid "Control-K" +#: share/axis/tcl/axis.tcl:463 +msgid "User_5" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:207 -msgid "Clear live plot" +#: share/axis/tcl/axis.tcl:467 +msgid "User_6" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:208 -msgid "Cycle among preset views" +#: share/axis/tcl/axis.tcl:471 +msgid "User_7" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:209 -msgid "Cycle among preview, DRO, and user tabs" +#: share/axis/tcl/axis.tcl:475 +msgid "User_8" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:211 -msgid "Ctrl-Space" +#: share/axis/tcl/axis.tcl:479 +msgid "User_9" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:211 -msgid "Clear notifications" +#: share/axis/tcl/axis.tcl:491 +msgid "_About AXIS" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:828 -#, python-format -msgid "Unknown tool %d" +#: share/axis/tcl/axis.tcl:495 +msgid "Quick _Reference" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:830 -msgid "No tool" +#: share/axis/tcl/axis.tcl:505 +msgid "_Machine" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:832 -#, python-format -msgid "Tool %(tool)d, offset %(zo)g, diameter %(dia)g" +#: share/axis/tcl/axis.tcl:509 +msgid "_View" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:834 -#, python-format -msgid "Tool %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" +#: share/axis/tcl/axis.tcl:513 +msgid "_User" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1005 -msgid "Filtering..." +#: share/axis/tcl/axis.tcl:526 +msgid "Toggle Emergency Stop [F1]" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1065 -msgid "Filter failed" +#: share/axis/tcl/axis.tcl:535 +msgid "Toggle Machine power [F2]" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1066 -#, python-format -msgid "" -"The program %(program)r exited with code %(code)d. Any error messages it " -"produced are shown below:" +#: share/axis/tcl/axis.tcl:546 +msgid "Open G-Code file [O]" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1127 -#, python-format -msgid "G-Code error in %s" +#: share/axis/tcl/axis.tcl:554 +msgid "Reopen current file [Control-R]" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1128 -#, python-format -msgid "" -"Near line %(seq)d of %(f)s:\n" -"%(error_str)s" +#: share/axis/tcl/axis.tcl:564 +msgid "Begin executing current file [R]" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1279 -#: emc/usr_intf/axis/scripts/axis.py:2712 ../share/axis/tcl/axis.tcl:1092 -#: ../share/axis/tcl/axis.tcl:1094 ../share/axis/tcl/axis.tcl:2144 -msgid "Continuous" +#: share/axis/tcl/axis.tcl:572 +msgid "Execute next line [T]" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1390 -msgid "Ok" +#: share/axis/tcl/axis.tcl:580 +msgid "Pause [P] / resume [S] execution" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1533 -msgid "T Tool Table" +#: share/axis/tcl/axis.tcl:588 +msgid "Stop program execution [ESC]" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1544 -#: emc/usr_intf/axis/scripts/axis.py:1717 -#: emc/usr_intf/stepconf/stepconf.py:1691 -#: emc/usr_intf/stepconf/stepconf.py:2235 -msgid "in" +#: share/axis/tcl/axis.tcl:598 +msgid "Toggle skip lines with '/' [Alt-M /]" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1547 -msgid " radius" +#: share/axis/tcl/axis.tcl:605 +msgid "Toggle optional pause [Alt-M 1]" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1549 -msgid " diameter" +#: share/axis/tcl/axis.tcl:614 src/emc/usr_intf/gmoccapy/gmoccapy.glade:549 +msgid "Zoom in" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1550 -msgid "°" +#: share/axis/tcl/axis.tcl:622 src/emc/usr_intf/gmoccapy/gmoccapy.glade:567 +msgid "Zoom out" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1559 -msgid "Coordinate System:" +#: share/axis/tcl/axis.tcl:630 +msgid "Top view" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1575 -msgid "fixture" +#: share/axis/tcl/axis.tcl:638 +msgid "Rotated top view" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1576 -msgid "workpiece" +#: share/axis/tcl/axis.tcl:646 +msgid "Side view" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1592 -msgid "Name:" +#: share/axis/tcl/axis.tcl:654 +msgid "Front view" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1592 -msgid "Size:" +#: share/axis/tcl/axis.tcl:662 +msgid "Perspective view" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1593 -msgid "Tool order:" +#: share/axis/tcl/axis.tcl:670 +msgid "Toggle between Drag and Rotate Mode [D]" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1593 -msgid "Rapid distance:" +#: share/axis/tcl/axis.tcl:685 +msgid "Clear live plot [Ctrl-K]" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1594 -msgid "Feed distance:" +#: share/axis/tcl/axis.tcl:836 +msgid "Manual Control [F3]" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1594 -msgid "Total distance:" +#: share/axis/tcl/axis.tcl:837 +msgid "MDI [F5]" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1595 -msgid "Run time:" +#: share/axis/tcl/axis.tcl:851 share/axis/tcl/axis.tcl:2158 +#: share/axis/tcl/axis.tcl:2328 +msgid "Axis:" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1595 -msgid "X bounds:" +#: share/axis/tcl/axis.tcl:1172 src/emc/usr_intf/gscreen/gscreen.glade:2944 +msgid "Home Axis" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1596 -msgid "Y bounds:" +#: share/axis/tcl/axis.tcl:1246 +msgid "Spindle:" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1596 -msgid "Z bounds:" +#: share/axis/tcl/axis.tcl:1293 src/emc/usr_intf/touchy/touchy.glade:946 +#: src/emc/usr_intf/stepconf/main_page.glade:406 +#: src/emc/usr_intf/gscreen/gscreen.glade:4067 +msgid "-" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1597 -msgid "A bounds:" +#: share/axis/tcl/axis.tcl:1307 src/emc/usr_intf/stepconf/main_page.glade:403 +#: src/emc/usr_intf/gscreen/gscreen.glade:4056 +msgid "+" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1597 -msgid "B bounds:" +#: share/axis/tcl/axis.tcl:1312 +msgid "Brake" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1598 -msgid "C bounds:" +#: share/axis/tcl/axis.tcl:1359 +msgid "Coolant:" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1622 -#, python-format -msgid "Program exceeds machine minimum on axis %s" +#: share/axis/tcl/axis.tcl:1364 +msgid "Mist" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1625 -#, python-format -msgid "Program exceeds machine maximum on axis %s" +#: share/axis/tcl/axis.tcl:1369 +msgid "Flood" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1630 -msgid "Program exceeds machine limits" +#: share/axis/tcl/axis.tcl:1441 +msgid "History:" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1633 -msgid "Run Anyway" +#: share/axis/tcl/axis.tcl:1464 +msgid "MDI Command:" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1695 -msgid "No file loaded" +#: share/axis/tcl/axis.tcl:1473 +msgid "Go" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1703 -#, python-format -msgid "generated from %s" +#: share/axis/tcl/axis.tcl:1479 +msgid "Active G-Codes:" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1709 -#, python-format -msgid "" -"%(size)s bytes\n" -"%(lines)s gcode lines" +#: share/axis/tcl/axis.tcl:1557 src/emc/usr_intf/gmoccapy/gmoccapy.glade:771 +msgid "Preview" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1735 -#, python-format -msgid "%.1f minutes" +#: share/axis/tcl/axis.tcl:1558 +msgid "DRO" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1737 -#, python-format -msgid "%d seconds" +#: share/axis/tcl/axis.tcl:1645 share/axis/tcl/axis.tcl:1658 +msgid "Jog Speed:" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1745 -#, python-format -msgid "%(a)f to %(b)f = %(diff)f %(units)s" +#: share/axis/tcl/axis.tcl:1670 +msgid "Max Velocity:" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1746 -msgid "G-Code Properties" +#: share/axis/tcl/axis.tcl:1699 +msgid "Spindle Override:" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1870 -msgid "All machinable files" +#: share/axis/tcl/axis.tcl:1701 share/axis/tcl/axis.tcl:1741 +#: share/axis/tcl/axis.tcl:1779 src/emc/usr_intf/pncconf/pncconf.glade:2834 +#: src/emc/usr_intf/pncconf/pncconf.glade:2845 +#: src/emc/usr_intf/pncconf/pncconf.glade:2949 +#: src/emc/usr_intf/pncconf/pncconf.glade:2962 +#: src/emc/usr_intf/pncconf/pncconf.glade:2975 +#: src/emc/usr_intf/pncconf/pncconf.glade:2988 +#: src/emc/usr_intf/pncconf/pncconf.glade:3001 +#: src/emc/usr_intf/pncconf/pncconf.glade:3014 +#: src/emc/usr_intf/pncconf/pncconf.glade:3127 +#: src/emc/usr_intf/pncconf/pncconf.glade:3140 +#: src/emc/usr_intf/pncconf/pncconf.glade:3153 +#: src/emc/usr_intf/pncconf/pncconf.glade:3166 +#: src/emc/usr_intf/pncconf/pncconf.glade:3179 +#: src/emc/usr_intf/pncconf/pncconf.glade:3192 +#: src/emc/usr_intf/pncconf/pncconf.glade:3205 +#: src/emc/usr_intf/pncconf/pncconf.glade:3218 +#: src/emc/usr_intf/pncconf/pncconf.glade:3715 +#: src/emc/usr_intf/pncconf/pncconf.glade:3726 +#: src/emc/usr_intf/pncconf/pncconf.glade:3830 +#: src/emc/usr_intf/pncconf/pncconf.glade:3843 +#: src/emc/usr_intf/pncconf/pncconf.glade:3856 +#: src/emc/usr_intf/pncconf/pncconf.glade:3869 +#: src/emc/usr_intf/pncconf/pncconf.glade:3882 +#: src/emc/usr_intf/pncconf/pncconf.glade:3895 +#: src/emc/usr_intf/pncconf/pncconf.glade:4008 +#: src/emc/usr_intf/pncconf/pncconf.glade:4021 +#: src/emc/usr_intf/pncconf/pncconf.glade:4034 +#: src/emc/usr_intf/pncconf/pncconf.glade:4047 +#: src/emc/usr_intf/pncconf/pncconf.glade:4060 +#: src/emc/usr_intf/pncconf/pncconf.glade:4073 +#: src/emc/usr_intf/pncconf/pncconf.glade:4086 +#: src/emc/usr_intf/pncconf/pncconf.glade:4099 +#: src/emc/usr_intf/pncconf/pncconf.glade:4596 +#: src/emc/usr_intf/pncconf/pncconf.glade:4607 +#: src/emc/usr_intf/pncconf/pncconf.glade:4711 +#: src/emc/usr_intf/pncconf/pncconf.glade:4724 +#: src/emc/usr_intf/pncconf/pncconf.glade:4737 +#: src/emc/usr_intf/pncconf/pncconf.glade:4750 +#: src/emc/usr_intf/pncconf/pncconf.glade:4763 +#: src/emc/usr_intf/pncconf/pncconf.glade:4776 +#: src/emc/usr_intf/pncconf/pncconf.glade:4889 +#: src/emc/usr_intf/pncconf/pncconf.glade:4902 +#: src/emc/usr_intf/pncconf/pncconf.glade:4915 +#: src/emc/usr_intf/pncconf/pncconf.glade:4928 +#: src/emc/usr_intf/pncconf/pncconf.glade:4941 +#: src/emc/usr_intf/pncconf/pncconf.glade:4954 +#: src/emc/usr_intf/pncconf/pncconf.glade:4967 +#: src/emc/usr_intf/pncconf/pncconf.glade:4980 +#: src/emc/usr_intf/pncconf/pncconf.glade:5631 +#: src/emc/usr_intf/pncconf/pncconf.glade:5643 +#: src/emc/usr_intf/pncconf/pncconf.glade:5690 +msgid "%" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1871 -#: emc/usr_intf/axis/scripts/axis.py:2451 -msgid "rs274ngc files" +#: share/axis/tcl/axis.tcl:1777 +msgid "Rapid Override:" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:1886 -msgid "axis cannot accept remote command while running" +#: share/axis/tcl/axis.tcl:1819 +msgid "" +"Machinekit/AXIS version $version\n" +"\n" +"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff " +"Epler and Chris Radek.\n" +"\n" +"This is free software, and you are welcome to redistribute it under certain " +"conditions. See the file COPYING, included with Machinekit.\n" +"\n" +"Visit the Machinekit web site: " msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:2242 -#: emc/usr_intf/axis/scripts/axis.py:2255 -msgid "Warning" +#: share/axis/tcl/axis.tcl:1847 +msgid "About AXIS" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:2242 -msgid "Axis is already homed, are you sure you want to re-home?" +#: share/axis/tcl/axis.tcl:1876 +msgid "AXIS Quick Reference" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:2255 -msgid "This axis is already homed, are you sure you want to re-home?" +#: share/axis/tcl/axis.tcl:2017 +msgid "AXIS with MachineKit $::version on $::machine" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:2295 ../share/axis/tcl/axis.tcl:1108 -msgid "Touch Off" +#: share/axis/tcl/axis.tcl:2019 +msgid "(no file)" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:2296 -#, python-format -msgid "Enter %s coordinate relative to %%s:" +#: share/axis/tcl/axis.tcl:2091 share/axis/tcl/axis.tcl:2096 +msgid "Position:" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:2463 -msgid "Error saving file" +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/gscreen/gscreen.py:3516 +msgid "Machine" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:2845 emc/usr_intf/touchy/touchy.glade:577 -msgid "Home All" +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/touchy/touchy.glade:155 +msgid "Relative" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:2847 -msgid "Home all axes [Ctrl-Home]" +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3329 +msgid "Actual" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:2850 -msgid "Home All Axes" +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3318 +msgid "Commanded" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:2855 -msgid "Unhome All Axes" +#: share/axis/tcl/axis.tcl:2154 share/axis/tcl/axis.tcl:2328 +msgid "Joint:" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:2879 -#, python-format -msgid "Home Axis _%s" +#: share/axis/tcl/axis.tcl:2463 +msgid "Turn spindle counterclockwise [F10]" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:2881 -#, python-format -msgid "Unhome Axis _%s" +#: share/axis/tcl/axis.tcl:2464 +msgid "Turn spindle clockwise [F9]" msgstr "" -#: emc/usr_intf/axis/scripts/axis.py:3024 -msgid "Run from here" -msgstr "" +#: share/axis/tcl/axis.tcl:2465 +msgid "Stop spindle [F9/F10]" +msgstr "Pysäytä kara" -#: emc/usr_intf/axis/scripts/axis.py:3319 -msgid "Error in ~/.axisrc" +#: share/axis/tcl/axis.tcl:2466 +msgid "Turn spindle Faster [F12]" msgstr "" -#: emc/usr_intf/axis/scripts/emctop.py:102 -msgid "EMC Status" +#: share/axis/tcl/axis.tcl:2467 +msgid "Turn spindle Slower [F11]" msgstr "" -#: emc/usr_intf/axis/scripts/emctop.py:118 -msgid "Copy All" +#: share/axis/tcl/axis.tcl:2468 +msgid "Turn spindle brake on [Shift-B] or off [B]" msgstr "" -#: emc/usr_intf/axis/scripts/hal_manualtoolchange.py:29 -#, python-format -msgid "Insert tool %d and click continue when ready" +#: share/axis/tcl/axis.tcl:2469 +msgid "Turn flood on or off [F8]" msgstr "" -#: emc/usr_intf/axis/scripts/hal_manualtoolchange.py:31 -msgid "Remove the tool and click continue when ready" +#: share/axis/tcl/axis.tcl:2470 +msgid "Turn mist on or off [F7]" msgstr "" -#: emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 -#: emc/usr_intf/touchy/mdi.py:49 -msgid "Tool change" +#: share/axis/tcl/axis.tcl:2471 +msgid "Send active axis home [Home]" msgstr "" -#: emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 -msgid "Continue" +#: share/axis/tcl/axis.tcl:2472 +msgid "Set G54 offset for active axis [End]" msgstr "" -#: emc/usr_intf/axis/scripts/hal_manualtoolchange.py:55 -msgid "AXIS Manual Toolchanger" +#: share/axis/tcl/axis.tcl:2473 +msgid "Activate axis [X]" msgstr "" -#: emc/usr_intf/axis/scripts/hal_manualtoolchange.py:59 -msgid "" -"This window is part of the AXIS manual toolchanger. It is safe to close or " -"iconify this window, or it will close automatically after a few seconds." +#: share/axis/tcl/axis.tcl:2474 +msgid "Activate axis [Y]" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:507 -#, python-format -msgid "%s: Image to gcode" +#: share/axis/tcl/axis.tcl:2475 +msgid "Activate axis [Z]" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:508 -msgid "Image to gcode" +#: share/axis/tcl/axis.tcl:2476 +msgid "Activate axis [A]" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:518 -#, python-format -msgid "" -"Image size: %(w)d x %(h)d pixels\n" -"Minimum pixel value: %(min)d\n" -"Maximum pixel value: %(max)d" +#: share/axis/tcl/axis.tcl:2477 +msgid "Activate axis [4]" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:608 -msgid "G20 (in)" +#: share/axis/tcl/axis.tcl:2478 +msgid "Activate axis [5]" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:608 -msgid "G21 (mm)" +#: share/axis/tcl/axis.tcl:2479 share/axis/tcl/axis.tcl:2480 +msgid "Jog selected axis" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:611 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:624 -#: emc/usr_intf/touchy/emc_interface.py:417 -msgid "None" +#: share/axis/tcl/axis.tcl:2482 +msgid "Temporarily allow jogging outside machine limits [L]" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:611 -msgid "White" +#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:47 +msgid "Spindle CW" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:611 -msgid "Black" +#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:48 +msgid "Spindle CCW" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Rows" +#: src/emc/usr_intf/touchy/mdi.py:50 +msgid "Set tool number" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Columns" +#: src/emc/usr_intf/touchy/mdi.py:51 src/emc/usr_intf/gscreen/mdi.py:50 +msgid "Input control" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Rows then Columns" +#: src/emc/usr_intf/touchy/mdi.py:54 src/emc/usr_intf/touchy/mdi.py:55 +#: src/emc/usr_intf/gscreen/mdi.py:53 src/emc/usr_intf/gscreen/mdi.py:54 +msgid "Straight rapid" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Columns then Rows" +#: src/emc/usr_intf/touchy/mdi.py:56 src/emc/usr_intf/touchy/mdi.py:57 +#: src/emc/usr_intf/gscreen/mdi.py:55 src/emc/usr_intf/gscreen/mdi.py:56 +msgid "Straight feed" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Positive" +#: src/emc/usr_intf/touchy/mdi.py:58 src/emc/usr_intf/touchy/mdi.py:59 +#: src/emc/usr_intf/gscreen/mdi.py:57 src/emc/usr_intf/gscreen/mdi.py:58 +msgid "Arc CW" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Negative" +#: src/emc/usr_intf/touchy/mdi.py:60 src/emc/usr_intf/touchy/mdi.py:61 +#: src/emc/usr_intf/gscreen/mdi.py:59 src/emc/usr_intf/gscreen/mdi.py:60 +msgid "Arc CCW" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Alternating" +#: src/emc/usr_intf/touchy/mdi.py:62 src/emc/usr_intf/touchy/mdi.py:63 +#: src/emc/usr_intf/gscreen/mdi.py:61 src/emc/usr_intf/gscreen/mdi.py:62 +msgid "Dwell" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Up Milling" +#: src/emc/usr_intf/touchy/mdi.py:64 src/emc/usr_intf/gscreen/mdi.py:63 +msgid "Setup" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Down Milling" +#: src/emc/usr_intf/touchy/mdi.py:65 src/emc/usr_intf/gscreen/mdi.py:64 +msgid "Spindle synchronized feed" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "Ball End" +#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:65 +msgid "Rigid tap" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "Flat End" +#: src/emc/usr_intf/touchy/mdi.py:67 src/emc/usr_intf/touchy/mdi.py:68 +#: src/emc/usr_intf/touchy/mdi.py:69 src/emc/usr_intf/touchy/mdi.py:70 +#: src/emc/usr_intf/gscreen/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:67 +#: src/emc/usr_intf/gscreen/mdi.py:68 src/emc/usr_intf/gscreen/mdi.py:69 +msgid "Probe" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "30 Degree" +#: src/emc/usr_intf/touchy/mdi.py:71 src/emc/usr_intf/gscreen/mdi.py:70 +msgid "Radius compensation left" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "45 Degree" +#: src/emc/usr_intf/touchy/mdi.py:72 src/emc/usr_intf/gscreen/mdi.py:71 +msgid "Radius compensation right" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "60 Degree" +#: src/emc/usr_intf/touchy/mdi.py:73 src/emc/usr_intf/gscreen/mdi.py:72 +msgid "Radius compensation left, immediate" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:624 -msgid "Secondary" +#: src/emc/usr_intf/touchy/mdi.py:74 src/emc/usr_intf/gscreen/mdi.py:73 +msgid "Radius compensation right, immediate" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:624 -msgid "Full" +#: src/emc/usr_intf/touchy/mdi.py:75 src/emc/usr_intf/gscreen/mdi.py:74 +msgid "Tool length offset" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:654 -msgid "Invert Image" +#: src/emc/usr_intf/touchy/mdi.py:76 src/emc/usr_intf/gscreen/mdi.py:75 +msgid "Tool length offset immediate" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:655 -msgid "Normalize Image" +#: src/emc/usr_intf/touchy/mdi.py:77 src/emc/usr_intf/gscreen/mdi.py:76 +msgid "Motion in unoffset coordinates" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:656 -msgid "Extend Image Border" +#: src/emc/usr_intf/touchy/mdi.py:78 src/emc/usr_intf/gscreen/mdi.py:77 +msgid "Continuous mode" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:657 -msgid "Pixel Size (Units)" +#: src/emc/usr_intf/touchy/mdi.py:80 src/emc/usr_intf/gscreen/mdi.py:79 +msgid "Drill" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:658 -msgid "Depth (units)" +#: src/emc/usr_intf/touchy/mdi.py:81 src/emc/usr_intf/gscreen/mdi.py:80 +msgid "Drill with dwell" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:659 -msgid "Tolerance (units)" +#: src/emc/usr_intf/touchy/mdi.py:82 src/emc/usr_intf/gscreen/mdi.py:81 +msgid "Peck drill" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:660 -msgid "Stepover (pixels)" +#: src/emc/usr_intf/touchy/mdi.py:83 src/emc/usr_intf/gscreen/mdi.py:82 +msgid "Chip-break drill" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:661 -msgid "Tool Diameter (units)" +#: src/emc/usr_intf/touchy/mdi.py:84 src/emc/usr_intf/gscreen/mdi.py:83 +msgid "Bore" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:662 -msgid "Tool Type" +#: src/emc/usr_intf/touchy/mdi.py:85 src/emc/usr_intf/gscreen/mdi.py:84 +msgid "Bore with dwell" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:663 -msgid "Feed Rate (units per minute)" +#: src/emc/usr_intf/touchy/mdi.py:86 src/emc/usr_intf/gscreen/mdi.py:85 +msgid "Offset all coordinate systems" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:664 -msgid "Plunge Feed Rate (units per minute)" +#: src/emc/usr_intf/touchy/mdi.py:87 src/emc/usr_intf/gscreen/mdi.py:86 +msgid "CSS Mode" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:666 -msgid "Safety Height (units)" +#: src/emc/usr_intf/touchy/emc_interface.py:410 +msgid "CCW" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:667 -msgid "Scan Pattern" +#: src/emc/usr_intf/touchy/emc_interface.py:410 +msgid "Stopped" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:668 -msgid "Scan Direction" +#: src/emc/usr_intf/touchy/emc_interface.py:410 +msgid "CW" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:669 -msgid "Lace Bounding" +#: src/emc/usr_intf/touchy/touchy.glade:7 +msgid "LinuxCNC/Touchy" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:670 -msgid "Contact Angle (degrees)" +#. # Touchy is Copyright (c) 2009 Chris Radek # # Touchy 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 2 of the License, or # (at your option) any later version. # # Touchy 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. +#: src/emc/usr_intf/touchy/touchy.glade:11 +msgid "window1" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:671 -msgid "Spindle Speed (RPM)" +#: src/emc/usr_intf/touchy/touchy.glade:31 +msgid "xa" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:672 -msgid "Roughing offset (units, 0=no roughing)" +#: src/emc/usr_intf/touchy/touchy.glade:44 +msgid "xd" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:673 -msgid "Roughing depth per pass (units)" +#: src/emc/usr_intf/touchy/touchy.glade:57 +msgid "yr" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:740 -msgid "image-to-gcode: User pressed cancel" +#: src/emc/usr_intf/touchy/touchy.glade:68 +msgid "ya" msgstr "" -#: emc/usr_intf/axis/scripts/image-to-gcode.py:753 -msgid "Depth images" +#: src/emc/usr_intf/touchy/touchy.glade:81 +msgid "yd" msgstr "" -#: emc/usr_intf/axis/scripts/debuglevel.py:22 -msgid "EMC2 Debug Level" +#: src/emc/usr_intf/touchy/touchy.glade:94 +msgid "zr" msgstr "" -#: emc/usr_intf/axis/scripts/debuglevel.py:23 -msgid "debuglevel" +#: src/emc/usr_intf/touchy/touchy.glade:105 +msgid "za" msgstr "" -#: emc/usr_intf/axis/scripts/debuglevel.py:36 -msgid "Configuration *" +#: src/emc/usr_intf/touchy/touchy.glade:118 +msgid "zd" msgstr "" -#: emc/usr_intf/axis/scripts/debuglevel.py:37 -msgid "Version Numbers *" +#: src/emc/usr_intf/touchy/touchy.glade:131 +#: src/emc/usr_intf/gscreen/gscreen.glade:85 +#: src/emc/usr_intf/gscreen/gscreen.glade:213 +#: src/emc/usr_intf/gscreen/gscreen.glade:343 +#: src/emc/usr_intf/gscreen/gscreen.glade:471 +#: src/emc/usr_intf/gscreen/gscreen.glade:599 +#: src/emc/usr_intf/gscreen/gscreen.glade:727 +#: src/emc/usr_intf/gscreen/gscreen.glade:855 +#: src/emc/usr_intf/gscreen/gscreen.glade:983 +#: src/emc/usr_intf/gscreen/gscreen.glade:1111 +msgid "DTG" msgstr "" -#: emc/usr_intf/axis/scripts/debuglevel.py:38 -msgid "NML *" +#: src/emc/usr_intf/touchy/touchy.glade:143 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Absolute" msgstr "" -#: emc/usr_intf/axis/scripts/debuglevel.py:39 -msgid "RCS *" +#: src/emc/usr_intf/touchy/touchy.glade:165 +msgid "xr" msgstr "" -#: emc/usr_intf/axis/scripts/debuglevel.py:40 -msgid "Task Issue" +#: src/emc/usr_intf/touchy/touchy.glade:176 +msgid "ar" msgstr "" -#: emc/usr_intf/axis/scripts/debuglevel.py:41 -msgid "Motion Time" +#: src/emc/usr_intf/touchy/touchy.glade:188 +msgid "br" msgstr "" -#: emc/usr_intf/axis/scripts/debuglevel.py:43 -msgid "Interpreter List" +#: src/emc/usr_intf/touchy/touchy.glade:200 +msgid "cr" msgstr "" -#: emc/usr_intf/axis/scripts/debuglevel.py:47 -#, python-format -msgid "" -"Inifile setting for this debug level:\n" -"[EMC]DEBUG=0x%08x" +#: src/emc/usr_intf/touchy/touchy.glade:212 +msgid "ur" msgstr "" -#: emc/usr_intf/axis/scripts/debuglevel.py:81 -msgid " * This option can only be enabled in the inifile" +#: src/emc/usr_intf/touchy/touchy.glade:224 +msgid "vr" msgstr "" -#: ../share/axis/tcl/axis.tcl:49 -msgid "_Open..." +#: src/emc/usr_intf/touchy/touchy.glade:236 +msgid "wr" msgstr "" -#: ../share/axis/tcl/axis.tcl:53 -msgid "Recent _Files" +#: src/emc/usr_intf/touchy/touchy.glade:248 +msgid "aa" msgstr "" -#: ../share/axis/tcl/axis.tcl:57 -msgid "_Edit..." +#: src/emc/usr_intf/touchy/touchy.glade:262 +msgid "ba" msgstr "" -#: ../share/axis/tcl/axis.tcl:60 -msgid "Ctrl-R" +#: src/emc/usr_intf/touchy/touchy.glade:276 +msgid "ca" msgstr "" -#: ../share/axis/tcl/axis.tcl:62 -msgid "_Reload" +#: src/emc/usr_intf/touchy/touchy.glade:290 +msgid "ua" msgstr "" -#: ../share/axis/tcl/axis.tcl:65 -msgid "Ctrl-S" +#: src/emc/usr_intf/touchy/touchy.glade:304 +msgid "va" msgstr "" -#: ../share/axis/tcl/axis.tcl:67 -msgid "_Save gcode as..." +#: src/emc/usr_intf/touchy/touchy.glade:318 +msgid "wa" msgstr "" -#: ../share/axis/tcl/axis.tcl:71 -msgid "_Properties..." +#: src/emc/usr_intf/touchy/touchy.glade:332 +msgid "ad" msgstr "" -#: ../share/axis/tcl/axis.tcl:77 -msgid "Edit _tool table..." +#: src/emc/usr_intf/touchy/touchy.glade:346 +msgid "bd" msgstr "" -#: ../share/axis/tcl/axis.tcl:81 -msgid "Reload tool ta_ble" +#: src/emc/usr_intf/touchy/touchy.glade:360 +msgid "cd" msgstr "" -#: ../share/axis/tcl/axis.tcl:87 -msgid "_Ladder Editor..." +#: src/emc/usr_intf/touchy/touchy.glade:374 +msgid "ud" msgstr "" -#: ../share/axis/tcl/axis.tcl:99 -msgid "Toggle _Emergency Stop" +#: src/emc/usr_intf/touchy/touchy.glade:388 +msgid "vd" msgstr "" -#: ../share/axis/tcl/axis.tcl:104 -msgid "Toggle _Machine Power" +#: src/emc/usr_intf/touchy/touchy.glade:402 +msgid "wd" msgstr "" -#: ../share/axis/tcl/axis.tcl:111 -msgid "_Run program" +#: src/emc/usr_intf/touchy/touchy.glade:448 +msgid "Estop Reset" msgstr "" -#: ../share/axis/tcl/axis.tcl:115 -msgid "Ru_n from selected line" +#: src/emc/usr_intf/touchy/touchy.glade:459 +#: src/emc/usr_intf/stepconf/pport1.glade:21 +#: src/emc/usr_intf/stepconf/pport2.glade:1409 +#: src/emc/usr_intf/gscreen/gscreen.glade:2442 +msgid "Estop" msgstr "" -#: ../share/axis/tcl/axis.tcl:120 -msgid "S_tep" +#: src/emc/usr_intf/touchy/touchy.glade:475 +msgid "Machine On" msgstr "" -#: ../share/axis/tcl/axis.tcl:125 -msgid "_Pause" +#: src/emc/usr_intf/touchy/touchy.glade:490 +msgid "Machine Off" msgstr "" -#: ../share/axis/tcl/axis.tcl:130 -msgid "Re_sume" +#: src/emc/usr_intf/touchy/touchy.glade:531 +msgid "Power" msgstr "" -#: ../share/axis/tcl/axis.tcl:140 -msgid "Stop at M_1" +#: src/emc/usr_intf/touchy/touchy.glade:562 +msgid "Unhome All" msgstr "" -#: ../share/axis/tcl/axis.tcl:145 -msgid "Skip lines with '_/'" +#: src/emc/usr_intf/touchy/touchy.glade:588 +msgid "Home Selected" msgstr "" -#: ../share/axis/tcl/axis.tcl:150 -msgid "Ctrl-M" +#: src/emc/usr_intf/touchy/touchy.glade:603 +msgid "Unhome Selected" msgstr "" -#: ../share/axis/tcl/axis.tcl:152 -msgid "Clear MDI h_istory" +#: src/emc/usr_intf/touchy/touchy.glade:625 +msgid "Homing" msgstr "" -#: ../share/axis/tcl/axis.tcl:154 -msgid "Ctrl-H" +#: src/emc/usr_intf/touchy/touchy.glade:644 +msgid "Startup" msgstr "" -#: ../share/axis/tcl/axis.tcl:156 -msgid "Copy from MDI hist_ory" +#: src/emc/usr_intf/touchy/touchy.glade:727 +msgid "G" msgstr "" -#: ../share/axis/tcl/axis.tcl:158 -msgid "Ctrl-Shift-H" +#: src/emc/usr_intf/touchy/touchy.glade:929 +msgid "." msgstr "" -#: ../share/axis/tcl/axis.tcl:160 -msgid "Paste to MDI histor_y" +#: src/emc/usr_intf/touchy/touchy.glade:963 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "0" msgstr "" -#: ../share/axis/tcl/axis.tcl:166 -msgid "_Calibration" +#: src/emc/usr_intf/touchy/touchy.glade:980 +msgid "3" msgstr "" -#: ../share/axis/tcl/axis.tcl:170 -msgid "Show _Hal Configuration" +#: src/emc/usr_intf/touchy/touchy.glade:997 +msgid "2" msgstr "" -#: ../share/axis/tcl/axis.tcl:174 -msgid "H_al Meter" +#: src/emc/usr_intf/touchy/touchy.glade:1014 +msgid "1" msgstr "" -#: ../share/axis/tcl/axis.tcl:178 -msgid "Ha_l Scope" +#: src/emc/usr_intf/touchy/touchy.glade:1031 +msgid "6" msgstr "" -#: ../share/axis/tcl/axis.tcl:182 -msgid "Sho_w EMC Status" +#: src/emc/usr_intf/touchy/touchy.glade:1048 +msgid "5" msgstr "" -#: ../share/axis/tcl/axis.tcl:186 -msgid "Set _Debug Level" +#: src/emc/usr_intf/touchy/touchy.glade:1065 +msgid "4" msgstr "" -#: ../share/axis/tcl/axis.tcl:192 -msgid "Homin_g" +#: src/emc/usr_intf/touchy/touchy.glade:1082 +msgid "9" msgstr "" -#: ../share/axis/tcl/axis.tcl:196 -msgid "_Unhoming" +#: src/emc/usr_intf/touchy/touchy.glade:1097 +msgid "8" msgstr "" -#: ../share/axis/tcl/axis.tcl:200 -msgid "_Zero coordinate system" +#: src/emc/usr_intf/touchy/touchy.glade:1112 +msgid "7" msgstr "" -#: ../share/axis/tcl/axis.tcl:204 -msgid "P1 G5_4" +#: src/emc/usr_intf/touchy/touchy.glade:1297 +msgid "Flood On" msgstr "" -#: ../share/axis/tcl/axis.tcl:208 -msgid "P2 G5_5" +#: src/emc/usr_intf/touchy/touchy.glade:1308 +msgid "Flood Off" msgstr "" -#: ../share/axis/tcl/axis.tcl:212 -msgid "P3 G5_6" +#: src/emc/usr_intf/touchy/touchy.glade:1324 +msgid "Mist On" msgstr "" -#: ../share/axis/tcl/axis.tcl:216 -msgid "P4 G5_7" +#: src/emc/usr_intf/touchy/touchy.glade:1339 +msgid "Mist Off" msgstr "" -#: ../share/axis/tcl/axis.tcl:220 -msgid "P5 G5_8" +#: src/emc/usr_intf/touchy/touchy.glade:1362 +msgid "Coolant" msgstr "" -#: ../share/axis/tcl/axis.tcl:224 -msgid "P6 G5_9" +#: src/emc/usr_intf/touchy/touchy.glade:1448 +msgid "Spindle Off" msgstr "" -#: ../share/axis/tcl/axis.tcl:228 -msgid "P7 G59._1" +#: src/emc/usr_intf/touchy/touchy.glade:1501 +#: src/emc/usr_intf/touchy/touchy.glade:2578 +msgid "Spindle speed:" msgstr "" -#: ../share/axis/tcl/axis.tcl:232 -msgid "P8 G59._2" +#: src/emc/usr_intf/touchy/touchy.glade:1513 +#: src/emc/usr_intf/touchy/touchy.glade:2707 +msgid "label26" msgstr "" -#: ../share/axis/tcl/axis.tcl:236 -msgid "P9 G59._3" +#: src/emc/usr_intf/touchy/touchy.glade:1539 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4226 +msgid "Spindle" msgstr "" -#: ../share/axis/tcl/axis.tcl:240 -msgid "_G92" +#: src/emc/usr_intf/touchy/touchy.glade:1597 +msgid "file.ngc" msgstr "" -#: ../share/axis/tcl/axis.tcl:248 -msgid "Tool touch off to wor_kpiece" +#: src/emc/usr_intf/touchy/touchy.glade:1812 +#: src/emc/usr_intf/touchy/touchy.glade:2017 +#: src/emc/usr_intf/touchy/touchy.glade:2037 +#: src/emc/usr_intf/touchy/touchy.glade:2057 +#: src/emc/usr_intf/touchy/touchy.glade:2077 +#: src/emc/usr_intf/touchy/touchy.glade:2097 +#: src/emc/usr_intf/touchy/touchy.glade:2117 +#: src/emc/usr_intf/touchy/touchy.glade:2137 +#: src/emc/usr_intf/touchy/touchy.glade:2157 +#: src/emc/usr_intf/touchy/touchy.glade:2177 +msgid "M2" msgstr "" -#: ../share/axis/tcl/axis.tcl:254 -msgid "Tool touch off to _fixture" +#: src/emc/usr_intf/touchy/touchy.glade:2244 +#: src/emc/usr_intf/touchy/touchy.glade:2374 +msgid "Page" msgstr "" -#: ../share/axis/tcl/axis.tcl:262 -msgid "_Top view" +#: src/emc/usr_intf/touchy/touchy.glade:2308 +msgid "Start Point" msgstr "" -#: ../share/axis/tcl/axis.tcl:269 -msgid "_Rotated Top view" +#: src/emc/usr_intf/touchy/touchy.glade:2452 +msgid "Loaded File" msgstr "" -#: ../share/axis/tcl/axis.tcl:276 -msgid "_Side view" +#: src/emc/usr_intf/touchy/touchy.glade:2488 +msgid "Loaded file:" msgstr "" -#: ../share/axis/tcl/axis.tcl:283 -msgid "_Front view" +#: src/emc/usr_intf/touchy/touchy.glade:2499 +msgid "Interpreted line:" msgstr "" -#: ../share/axis/tcl/axis.tcl:290 -msgid "_Perspective view" +#: src/emc/usr_intf/touchy/touchy.glade:2513 +msgid "Distance:" msgstr "" -#: ../share/axis/tcl/axis.tcl:299 -msgid "Display _Inches" +#: src/emc/usr_intf/touchy/touchy.glade:2526 +#: src/emc/usr_intf/stepconf/main_page.glade:23 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Velocity:" msgstr "" -#: ../share/axis/tcl/axis.tcl:306 -msgid "Display _MM" +#: src/emc/usr_intf/touchy/touchy.glade:2539 +msgid "Delay:" msgstr "" -#: ../share/axis/tcl/axis.tcl:313 -msgid "S_how program" +#: src/emc/usr_intf/touchy/touchy.glade:2552 +msgid "On limit switch:" msgstr "" -#: ../share/axis/tcl/axis.tcl:318 -msgid "Show program r_apids" +#: src/emc/usr_intf/touchy/touchy.glade:2565 +msgid "Spindle direction:" msgstr "" -#: ../share/axis/tcl/axis.tcl:323 -msgid "Alpha-_blend program" +#: src/emc/usr_intf/touchy/touchy.glade:2591 +msgid "Loaded tool:" msgstr "" -#: ../share/axis/tcl/axis.tcl:328 -msgid "Sho_w live plot" +#: src/emc/usr_intf/touchy/touchy.glade:2604 +#: src/emc/usr_intf/touchy/touchy.glade:2955 +msgid "label19" msgstr "" -#: ../share/axis/tcl/axis.tcl:333 -msgid "Show too_l" +#: src/emc/usr_intf/touchy/touchy.glade:2617 +msgid "label20" msgstr "" -#: ../share/axis/tcl/axis.tcl:338 -msgid "Show e_xtents" +#: src/emc/usr_intf/touchy/touchy.glade:2632 +#: src/emc/usr_intf/touchy/touchy.glade:2779 +#: src/emc/usr_intf/touchy/touchy.glade:2808 +#: src/emc/usr_intf/touchy/touchy.glade:2912 +#: src/emc/usr_intf/touchy/touchy.glade:2927 +msgid "label21" msgstr "" -#: ../share/axis/tcl/axis.tcl:343 -msgid "Show o_ffsets" +#: src/emc/usr_intf/touchy/touchy.glade:2647 +msgid "label22" msgstr "" -#: ../share/axis/tcl/axis.tcl:348 -msgid "Sh_ow machine limits" +#: src/emc/usr_intf/touchy/touchy.glade:2662 +msgid "label23" msgstr "" -#: ../share/axis/tcl/axis.tcl:353 -msgid "Show v_elocity" +#: src/emc/usr_intf/touchy/touchy.glade:2677 +msgid "label24" msgstr "" -#: ../share/axis/tcl/axis.tcl:358 -msgid "Show _distance to go" +#: src/emc/usr_intf/touchy/touchy.glade:2692 +msgid "label25" msgstr "" -#: ../share/axis/tcl/axis.tcl:363 -msgid "Large coordinate fo_nt" +#: src/emc/usr_intf/touchy/touchy.glade:2722 +msgid "label27" msgstr "" -#: ../share/axis/tcl/axis.tcl:366 -msgid "Ctrl-K" +#: src/emc/usr_intf/touchy/touchy.glade:2737 +msgid "Prepped tool:" msgstr "" -#: ../share/axis/tcl/axis.tcl:368 -msgid "_Clear live plot" +#: src/emc/usr_intf/touchy/touchy.glade:2750 +msgid "label28" msgstr "" -#: ../share/axis/tcl/axis.tcl:377 -msgid "Show commanded position" +#: src/emc/usr_intf/touchy/touchy.glade:2765 +msgid "Running line:" msgstr "" -#: ../share/axis/tcl/axis.tcl:384 -msgid "Show actual position" +#: src/emc/usr_intf/touchy/touchy.glade:2794 +msgid "XY Rotation:" msgstr "" -#: ../share/axis/tcl/axis.tcl:393 -msgid "Show machine position" +#: src/emc/usr_intf/touchy/touchy.glade:2823 +msgid "Tool length:" msgstr "" -#: ../share/axis/tcl/axis.tcl:400 -msgid "Show relative position" +#: src/emc/usr_intf/touchy/touchy.glade:2836 +msgid "label52" msgstr "" -#: ../share/axis/tcl/axis.tcl:409 -msgid "Joint mode" +#: src/emc/usr_intf/touchy/touchy.glade:2851 +msgid "" +"G1 G2 G3\n" +"M1 M2 M3\n" +"F1 S1" msgstr "" -#: ../share/axis/tcl/axis.tcl:416 -msgid "World mode" +#: src/emc/usr_intf/touchy/touchy.glade:2870 +msgid "Active codes:" msgstr "" -#: ../share/axis/tcl/axis.tcl:425 -msgid "_About AXIS" +#: src/emc/usr_intf/touchy/touchy.glade:2883 +msgid "G5x Offset:" msgstr "" -#: ../share/axis/tcl/axis.tcl:429 -msgid "Quick _Reference" +#: src/emc/usr_intf/touchy/touchy.glade:2898 +msgid "G92 Offset:" msgstr "" -#: ../share/axis/tcl/axis.tcl:439 -msgid "_Machine" +#: src/emc/usr_intf/touchy/touchy.glade:2942 +msgid "Loaded file lines:" msgstr "" -#: ../share/axis/tcl/axis.tcl:443 -msgid "_View" +#: src/emc/usr_intf/touchy/touchy.glade:2971 +msgid "Pockets:" msgstr "" -#: ../share/axis/tcl/axis.tcl:456 -msgid "Toggle Emergency Stop [F1]" +#: src/emc/usr_intf/touchy/touchy.glade:2984 +msgid "" +"1\n" +"2\n" +"3" msgstr "" -#: ../share/axis/tcl/axis.tcl:465 -msgid "Toggle Machine power [F2]" +#: src/emc/usr_intf/touchy/touchy.glade:3009 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6414 +msgid "Status" msgstr "" -#: ../share/axis/tcl/axis.tcl:476 -msgid "Open G-Code file [O]" +#: src/emc/usr_intf/touchy/touchy.glade:3038 +msgid "Control Font:" msgstr "" -#: ../share/axis/tcl/axis.tcl:484 -msgid "Reopen current file [Control-R]" +#: src/emc/usr_intf/touchy/touchy.glade:3050 +msgid "DRO Font:" msgstr "" -#: ../share/axis/tcl/axis.tcl:494 -msgid "Begin executing current file [R]" +#: src/emc/usr_intf/touchy/touchy.glade:3064 +msgid "Error Font:" msgstr "" -#: ../share/axis/tcl/axis.tcl:502 -msgid "Execute next line [T]" +#: src/emc/usr_intf/touchy/touchy.glade:3081 +msgid "ControlFont" msgstr "" -#: ../share/axis/tcl/axis.tcl:510 -msgid "Pause [P] / resume [S] execution" +#: src/emc/usr_intf/touchy/touchy.glade:3100 +msgid "DRO Font" msgstr "" -#: ../share/axis/tcl/axis.tcl:518 -msgid "Stop program execution [ESC]" +#: src/emc/usr_intf/touchy/touchy.glade:3121 +msgid "Error Font" msgstr "" -#: ../share/axis/tcl/axis.tcl:528 -msgid "Toggle skip lines with '/' [Alt-M /]" +#: src/emc/usr_intf/touchy/touchy.glade:3139 +msgid "Listing Font:" msgstr "" -#: ../share/axis/tcl/axis.tcl:535 -msgid "Toggle optional pause [Alt-M 1]" +#: src/emc/usr_intf/touchy/touchy.glade:3156 +msgid "Listing Font" msgstr "" -#: ../share/axis/tcl/axis.tcl:544 -msgid "Zoom in" +#: src/emc/usr_intf/touchy/touchy.glade:3176 +msgid "Hide pointer" msgstr "" -#: ../share/axis/tcl/axis.tcl:552 -msgid "Zoom out" +#: src/emc/usr_intf/touchy/touchy.glade:3187 +msgid "Show pointer" msgstr "" -#: ../share/axis/tcl/axis.tcl:560 -msgid "Top view" +#: src/emc/usr_intf/touchy/touchy.glade:3214 +msgid "Theme:" msgstr "" -#: ../share/axis/tcl/axis.tcl:568 -msgid "Rotated top view" +#: src/emc/usr_intf/touchy/touchy.glade:3228 +msgid "default\n" msgstr "" -#: ../share/axis/tcl/axis.tcl:576 -msgid "Side view" +#: src/emc/usr_intf/touchy/touchy.glade:3252 +msgid "Display Options" msgstr "" -#: ../share/axis/tcl/axis.tcl:584 -msgid "Front view" +#: src/emc/usr_intf/touchy/touchy.glade:3286 +#: src/emc/usr_intf/stepconf/base.glade:867 +#: src/emc/usr_intf/gscreen/gscreen.glade:3664 +msgid "Inch" msgstr "" -#: ../share/axis/tcl/axis.tcl:592 -msgid "Perspective view" +#: src/emc/usr_intf/touchy/touchy.glade:3349 +msgid "Position Readout" msgstr "" -#: ../share/axis/tcl/axis.tcl:600 -msgid "Toggle between Drag and Rotate Mode [D]" +#: src/emc/usr_intf/touchy/touchy.glade:3379 +msgid "Workpiece" msgstr "" -#: ../share/axis/tcl/axis.tcl:615 -msgid "Clear live plot [Ctrl-K]" +#: src/emc/usr_intf/touchy/touchy.glade:3390 +msgid "Fixture" msgstr "" -#: ../share/axis/tcl/axis.tcl:766 -msgid "Manual Control [F3]" +#: src/emc/usr_intf/touchy/touchy.glade:3410 +msgid "Tool Setting" msgstr "" -#: ../share/axis/tcl/axis.tcl:767 -msgid "MDI [F5]" +#: src/emc/usr_intf/touchy/touchy.glade:3441 +msgid "Delete / lines" msgstr "" -#: ../share/axis/tcl/axis.tcl:781 ../share/axis/tcl/axis.tcl:2036 -#: ../share/axis/tcl/axis.tcl:2203 -msgid "Axis:" +#: src/emc/usr_intf/touchy/touchy.glade:3456 +msgid "Keep / lines" msgstr "" -#: ../share/axis/tcl/axis.tcl:1102 -msgid "Home Axis" +#: src/emc/usr_intf/touchy/touchy.glade:3473 +msgid "Pause on M1" msgstr "" -#: ../share/axis/tcl/axis.tcl:1176 -msgid "Spindle:" +#: src/emc/usr_intf/touchy/touchy.glade:3484 +msgid "Ignore M1" msgstr "" -#: ../share/axis/tcl/axis.tcl:1223 emc/usr_intf/touchy/touchy.glade:946 -msgid "-" +#: src/emc/usr_intf/touchy/touchy.glade:3504 +msgid "Program Options" msgstr "" -#: ../share/axis/tcl/axis.tcl:1237 -msgid "+" +#: src/emc/usr_intf/touchy/touchy.glade:3531 +#: src/emc/usr_intf/gscreen/gscreen.glade:2200 +msgid "Preferences" msgstr "" -#: ../share/axis/tcl/axis.tcl:1242 -msgid "Brake" +#: src/emc/usr_intf/touchy/touchy.glade:3567 +#: src/emc/usr_intf/gscreen/gscreen.glade:1425 +msgid "FO: 100%" msgstr "" -#: ../share/axis/tcl/axis.tcl:1289 -msgid "Coolant:" +#: src/emc/usr_intf/touchy/touchy.glade:3582 +#: src/emc/usr_intf/gscreen/gscreen.glade:1437 +msgid "SO: 100%" msgstr "" -#: ../share/axis/tcl/axis.tcl:1294 -msgid "Mist" +#: src/emc/usr_intf/touchy/touchy.glade:3596 +msgid "MV: 100" msgstr "" -#: ../share/axis/tcl/axis.tcl:1299 -msgid "Flood" +#: src/emc/usr_intf/touchy/touchy.glade:3610 +msgid "Jogging" msgstr "" -#: ../share/axis/tcl/axis.tcl:1371 -msgid "History:" +#: src/emc/usr_intf/touchy/touchy.glade:3624 +msgid "Start Point" msgstr "" -#: ../share/axis/tcl/axis.tcl:1394 -msgid "MDI Command:" +#: src/emc/usr_intf/touchy/touchy.glade:3651 +msgid ".01" msgstr "" -#: ../share/axis/tcl/axis.tcl:1403 -msgid "Go" +#: src/emc/usr_intf/touchy/touchy.glade:3664 +msgid ".001" msgstr "" -#: ../share/axis/tcl/axis.tcl:1409 -msgid "Active G-Codes:" +#: src/emc/usr_intf/touchy/touchy.glade:3680 +msgid ".0001" msgstr "" -#: ../share/axis/tcl/axis.tcl:1487 -msgid "Preview" +#: src/emc/usr_intf/touchy/touchy.glade:3708 +msgid " X " msgstr "" -#: ../share/axis/tcl/axis.tcl:1488 -msgid "DRO" +#: src/emc/usr_intf/touchy/touchy.glade:3720 +msgid " Y " msgstr "" -#: ../share/axis/tcl/axis.tcl:1575 ../share/axis/tcl/axis.tcl:1588 -msgid "Jog Speed:" +#: src/emc/usr_intf/touchy/touchy.glade:3735 +msgid " Z " msgstr "" -#: ../share/axis/tcl/axis.tcl:1600 -msgid "Max Velocity:" +#: src/emc/usr_intf/touchy/touchy.glade:3750 +msgid " A " msgstr "" -#: ../share/axis/tcl/axis.tcl:1629 -msgid "Spindle Override:" +#: src/emc/usr_intf/touchy/touchy.glade:3766 +msgid " B " msgstr "" -#: ../share/axis/tcl/axis.tcl:1631 ../share/axis/tcl/axis.tcl:1671 -#: emc/usr_intf/pncconf/pncconf.glade:3141 -#: emc/usr_intf/pncconf/pncconf.glade:3154 -#: emc/usr_intf/pncconf/pncconf.glade:3167 -#: emc/usr_intf/pncconf/pncconf.glade:3180 -#: emc/usr_intf/pncconf/pncconf.glade:3193 -#: emc/usr_intf/pncconf/pncconf.glade:3206 -#: emc/usr_intf/pncconf/pncconf.glade:3219 -#: emc/usr_intf/pncconf/pncconf.glade:3232 -#: emc/usr_intf/pncconf/pncconf.glade:3345 -#: emc/usr_intf/pncconf/pncconf.glade:3358 -#: emc/usr_intf/pncconf/pncconf.glade:3371 -#: emc/usr_intf/pncconf/pncconf.glade:3384 -#: emc/usr_intf/pncconf/pncconf.glade:3397 -#: emc/usr_intf/pncconf/pncconf.glade:3410 -#: emc/usr_intf/pncconf/pncconf.glade:3516 -#: emc/usr_intf/pncconf/pncconf.glade:3527 -#: emc/usr_intf/pncconf/pncconf.glade:4022 -#: emc/usr_intf/pncconf/pncconf.glade:4035 -#: emc/usr_intf/pncconf/pncconf.glade:4048 -#: emc/usr_intf/pncconf/pncconf.glade:4061 -#: emc/usr_intf/pncconf/pncconf.glade:4074 -#: emc/usr_intf/pncconf/pncconf.glade:4087 -#: emc/usr_intf/pncconf/pncconf.glade:4100 -#: emc/usr_intf/pncconf/pncconf.glade:4113 -#: emc/usr_intf/pncconf/pncconf.glade:4226 -#: emc/usr_intf/pncconf/pncconf.glade:4239 -#: emc/usr_intf/pncconf/pncconf.glade:4252 -#: emc/usr_intf/pncconf/pncconf.glade:4265 -#: emc/usr_intf/pncconf/pncconf.glade:4278 -#: emc/usr_intf/pncconf/pncconf.glade:4291 -#: emc/usr_intf/pncconf/pncconf.glade:4397 -#: emc/usr_intf/pncconf/pncconf.glade:4408 -#: emc/usr_intf/pncconf/pncconf.glade:4903 -#: emc/usr_intf/pncconf/pncconf.glade:4916 -#: emc/usr_intf/pncconf/pncconf.glade:4929 -#: emc/usr_intf/pncconf/pncconf.glade:4942 -#: emc/usr_intf/pncconf/pncconf.glade:4955 -#: emc/usr_intf/pncconf/pncconf.glade:4968 -#: emc/usr_intf/pncconf/pncconf.glade:4981 -#: emc/usr_intf/pncconf/pncconf.glade:4994 -#: emc/usr_intf/pncconf/pncconf.glade:5107 -#: emc/usr_intf/pncconf/pncconf.glade:5120 -#: emc/usr_intf/pncconf/pncconf.glade:5133 -#: emc/usr_intf/pncconf/pncconf.glade:5146 -#: emc/usr_intf/pncconf/pncconf.glade:5159 -#: emc/usr_intf/pncconf/pncconf.glade:5172 -#: emc/usr_intf/pncconf/pncconf.glade:5278 -#: emc/usr_intf/pncconf/pncconf.glade:5289 -#: emc/usr_intf/pncconf/pncconf.glade:5582 -#: emc/usr_intf/pncconf/pncconf.glade:5631 -#: emc/usr_intf/pncconf/pncconf.glade:5641 -msgid "%" +#: src/emc/usr_intf/touchy/touchy.glade:3784 +msgid " C " msgstr "" -#: ../share/axis/tcl/axis.tcl:1711 -msgid "" -"LinuxCNC/AXIS version $version\n" -"\n" -"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff " -"Epler and Chris Radek.\n" -"\n" -"This is free software, and you are welcome to redistribute it under certain " -"conditions. See the file COPYING, included with EMC2.\n" -"\n" -"Visit the LinuxCNC web site: " +#: src/emc/usr_intf/touchy/touchy.glade:3802 +msgid " U " msgstr "" -#: ../share/axis/tcl/axis.tcl:1739 -msgid "About AXIS" +#: src/emc/usr_intf/touchy/touchy.glade:3818 +msgid " V " msgstr "" -#: ../share/axis/tcl/axis.tcl:1768 -msgid "AXIS Quick Reference" +#: src/emc/usr_intf/touchy/touchy.glade:3836 +msgid " W " msgstr "" -#: ../share/axis/tcl/axis.tcl:1903 -msgid "AXIS $::version on $::machine" +#: src/emc/usr_intf/touchy/touchy.glade:3869 +msgid "Handwheel" msgstr "" -#: ../share/axis/tcl/axis.tcl:1905 -msgid "(no file)" +#: src/emc/usr_intf/stepconf/stepconf.py:57 +msgid "" +"Stepconf encountered an error. The following information may be useful in " +"troubleshooting:\n" +"\n" msgstr "" -#: ../share/axis/tcl/axis.tcl:1917 -msgid "OFF" +#: src/emc/usr_intf/stepconf/stepconf.py:128 +msgid "Stepconf" msgstr "" -#: ../share/axis/tcl/axis.tcl:1976 ../share/axis/tcl/axis.tcl:1981 -msgid "Position:" +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#: src/emc/usr_intf/stepconf/stepconf.py:217 +#: src/emc/usr_intf/stepconf/main_page.glade:557 +#: src/emc/usr_intf/gscreen/gscreen.py:3414 +#: src/emc/usr_intf/gscreen/gscreen.py:3415 +#: src/emc/usr_intf/gscreen/gscreen.glade:4043 +msgid "Start" msgstr "" -#: ../share/axis/tcl/axis.tcl:1978 -msgid "Machine" +#: src/emc/usr_intf/stepconf/stepconf.py:129 +msgid "Base Information" msgstr "" -#: ../share/axis/tcl/axis.tcl:1978 emc/usr_intf/touchy/touchy.glade:155 -msgid "Relative" +#: src/emc/usr_intf/stepconf/stepconf.py:129 +msgid "Parallel Port 1" msgstr "" -#: ../share/axis/tcl/axis.tcl:1979 emc/usr_intf/touchy/touchy.glade:3329 -msgid "Actual" +#: src/emc/usr_intf/stepconf/stepconf.py:129 +msgid "Parallel Port 2" msgstr "" -#: ../share/axis/tcl/axis.tcl:1979 emc/usr_intf/touchy/touchy.glade:3318 -msgid "Commanded" +#: src/emc/usr_intf/stepconf/stepconf.py:130 +msgid "Options" msgstr "" -#: ../share/axis/tcl/axis.tcl:2032 ../share/axis/tcl/axis.tcl:2203 -msgid "Joint:" +#: src/emc/usr_intf/stepconf/stepconf.py:130 +msgid "Axis X" msgstr "" -#: ../share/axis/tcl/axis.tcl:2338 -msgid "Turn spindle counterclockwise [F10]" +#: src/emc/usr_intf/stepconf/stepconf.py:131 +msgid "Axis Y" msgstr "" -#: ../share/axis/tcl/axis.tcl:2339 -msgid "Turn spindle clockwise [F9]" +#: src/emc/usr_intf/stepconf/stepconf.py:131 +msgid "Axis Z" msgstr "" -#: ../share/axis/tcl/axis.tcl:2340 -msgid "Stop spindle [F9/F10]" -msgstr "Pysäytä kara" - -#: ../share/axis/tcl/axis.tcl:2341 -msgid "Turn spindle Faster [F12]" +#: src/emc/usr_intf/stepconf/stepconf.py:131 +msgid "Axis A" msgstr "" -#: ../share/axis/tcl/axis.tcl:2342 -msgid "Turn spindle Slower [F11]" +#: src/emc/usr_intf/stepconf/stepconf.py:132 +#: src/emc/usr_intf/pncconf/pncconf.py:378 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +msgid "Spindle" msgstr "" -#: ../share/axis/tcl/axis.tcl:2343 -msgid "Turn spindle brake on [Shift-B] or off [B]" +#: src/emc/usr_intf/stepconf/stepconf.py:132 +msgid "Almost Done" msgstr "" -#: ../share/axis/tcl/axis.tcl:2344 -msgid "Turn flood on or off [F8]" +#: src/emc/usr_intf/stepconf/stepconf.py:136 +#: src/emc/usr_intf/pncconf/pncconf.py:135 +msgid "Gecko 201" msgstr "" -#: ../share/axis/tcl/axis.tcl:2345 -msgid "Turn mist on or off [F7]" +#: src/emc/usr_intf/stepconf/stepconf.py:137 +#: src/emc/usr_intf/pncconf/pncconf.py:136 +msgid "Gecko 202" msgstr "" -#: ../share/axis/tcl/axis.tcl:2346 -msgid "Send active axis home [Home]" +#: src/emc/usr_intf/stepconf/stepconf.py:138 +#: src/emc/usr_intf/pncconf/pncconf.py:137 +msgid "Gecko 203v" msgstr "" -#: ../share/axis/tcl/axis.tcl:2347 -msgid "Set G54 offset for active axis [End]" +#: src/emc/usr_intf/stepconf/stepconf.py:139 +#: src/emc/usr_intf/pncconf/pncconf.py:138 +msgid "Gecko 210" msgstr "" -#: ../share/axis/tcl/axis.tcl:2348 -msgid "Activate axis [X]" +#: src/emc/usr_intf/stepconf/stepconf.py:140 +#: src/emc/usr_intf/pncconf/pncconf.py:139 +msgid "Gecko 212" msgstr "" -#: ../share/axis/tcl/axis.tcl:2349 -msgid "Activate axis [Y]" +#: src/emc/usr_intf/stepconf/stepconf.py:141 +#: src/emc/usr_intf/pncconf/pncconf.py:140 +msgid "Gecko 320" msgstr "" -#: ../share/axis/tcl/axis.tcl:2350 -msgid "Activate axis [Z]" +#: src/emc/usr_intf/stepconf/stepconf.py:142 +#: src/emc/usr_intf/pncconf/pncconf.py:141 +msgid "Gecko 540" msgstr "" -#: ../share/axis/tcl/axis.tcl:2351 -msgid "Activate axis [A]" +#: src/emc/usr_intf/stepconf/stepconf.py:143 +#: src/emc/usr_intf/pncconf/pncconf.py:142 +msgid "L297" msgstr "" -#: ../share/axis/tcl/axis.tcl:2352 -msgid "Activate axis [4]" +#: src/emc/usr_intf/stepconf/stepconf.py:144 +#: src/emc/usr_intf/pncconf/pncconf.py:143 +msgid "PMDX-150" msgstr "" -#: ../share/axis/tcl/axis.tcl:2353 -msgid "Activate axis [5]" +#: src/emc/usr_intf/stepconf/stepconf.py:145 +#: src/emc/usr_intf/stepconf/pport1.glade:32 +#: src/emc/usr_intf/pncconf/pncconf.py:144 +msgid "Sherline" msgstr "" -#: ../share/axis/tcl/axis.tcl:2354 ../share/axis/tcl/axis.tcl:2355 -msgid "Jog selected axis" +#: src/emc/usr_intf/stepconf/stepconf.py:146 +#: src/emc/usr_intf/pncconf/pncconf.py:145 +msgid "Xylotex 8S-3" msgstr "" -#: ../share/axis/tcl/axis.tcl:2357 -msgid "Temporarily allow jogging outside machine limits [L]" +#: src/emc/usr_intf/stepconf/stepconf.py:147 +#: src/emc/usr_intf/pncconf/pncconf.py:146 +msgid "Parker-Compumotor oem750" msgstr "" -#: emc/usr_intf/touchy/mdi.py:47 emc/usr_intf/stepconf/stepconf.py:155 -#: emc/usr_intf/pncconf/pncconf.py:440 -msgid "Spindle CW" +#: src/emc/usr_intf/stepconf/stepconf.py:148 +#: src/emc/usr_intf/pncconf/pncconf.py:147 +msgid "JVL-SMD41 or 42" msgstr "" -#: emc/usr_intf/touchy/mdi.py:48 emc/usr_intf/stepconf/stepconf.py:155 -#: emc/usr_intf/pncconf/pncconf.py:440 -msgid "Spindle CCW" +#: src/emc/usr_intf/stepconf/stepconf.py:149 +#: src/emc/usr_intf/pncconf/pncconf.py:148 +msgid "Hobbycnc Pro Chopper" msgstr "" -#: emc/usr_intf/touchy/mdi.py:50 -msgid "Input control" +#: src/emc/usr_intf/stepconf/stepconf.py:150 +msgid "Kelling 4030" msgstr "" -#: emc/usr_intf/touchy/mdi.py:53 emc/usr_intf/touchy/mdi.py:54 -msgid "Straight rapid" +#: src/emc/usr_intf/stepconf/stepconf.py:151 +msgid "Leadshine Series" msgstr "" -#: emc/usr_intf/touchy/mdi.py:55 emc/usr_intf/touchy/mdi.py:56 -msgid "Straight feed" +#: src/emc/usr_intf/stepconf/stepconf.py:190 +msgid "X Step" msgstr "" -#: emc/usr_intf/touchy/mdi.py:57 emc/usr_intf/touchy/mdi.py:58 -msgid "Arc CW" +#: src/emc/usr_intf/stepconf/stepconf.py:190 +msgid "X Direction" msgstr "" -#: emc/usr_intf/touchy/mdi.py:59 emc/usr_intf/touchy/mdi.py:60 -msgid "Arc CCW" +#: src/emc/usr_intf/stepconf/stepconf.py:190 +msgid "Y Step" msgstr "" -#: emc/usr_intf/touchy/mdi.py:61 emc/usr_intf/touchy/mdi.py:62 -msgid "Dwell" +#: src/emc/usr_intf/stepconf/stepconf.py:190 +msgid "Y Direction" msgstr "" -#: emc/usr_intf/touchy/mdi.py:63 -msgid "Setup" +#: src/emc/usr_intf/stepconf/stepconf.py:191 +msgid "Z Step" msgstr "" -#: emc/usr_intf/touchy/mdi.py:64 -msgid "Spindle synchronized feed" +#: src/emc/usr_intf/stepconf/stepconf.py:191 +msgid "Z Direction" msgstr "" -#: emc/usr_intf/touchy/mdi.py:65 -msgid "Rigid tap" +#: src/emc/usr_intf/stepconf/stepconf.py:191 +msgid "A Step" msgstr "" -#: emc/usr_intf/touchy/mdi.py:66 emc/usr_intf/touchy/mdi.py:67 -#: emc/usr_intf/touchy/mdi.py:68 emc/usr_intf/touchy/mdi.py:69 -msgid "Probe" +#: src/emc/usr_intf/stepconf/stepconf.py:191 +msgid "A Direction" msgstr "" -#: emc/usr_intf/touchy/mdi.py:70 -msgid "Radius compensation left" +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 +msgid "Spindle ON" msgstr "" -#: emc/usr_intf/touchy/mdi.py:71 -msgid "Radius compensation right" +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:488 +msgid "Spindle PWM" msgstr "" -#: emc/usr_intf/touchy/mdi.py:72 -msgid "Radius compensation left, immediate" +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 +msgid "Spindle Brake" msgstr "" -#: emc/usr_intf/touchy/mdi.py:73 -msgid "Radius compensation right, immediate" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 +msgid "Coolant Mist" msgstr "" -#: emc/usr_intf/touchy/mdi.py:74 -msgid "Tool length offset" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 +msgid "Coolant Flood" msgstr "" -#: emc/usr_intf/touchy/mdi.py:75 -msgid "Tool length offset immediate" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "ESTOP Out" msgstr "" -#: emc/usr_intf/touchy/mdi.py:76 -msgid "Motion in unoffset coordinates" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +msgid "Amplifier Enable" msgstr "" -#: emc/usr_intf/touchy/mdi.py:77 -msgid "Continuous mode" +#: src/emc/usr_intf/stepconf/stepconf.py:194 +#: src/emc/usr_intf/pncconf/pncconf.py:371 +msgid "Charge Pump" msgstr "" -#: emc/usr_intf/touchy/mdi.py:79 -msgid "Drill" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 0" msgstr "" -#: emc/usr_intf/touchy/mdi.py:80 -msgid "Drill with dwell" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 1" msgstr "" -#: emc/usr_intf/touchy/mdi.py:81 -msgid "Peck drill" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 2" msgstr "" -#: emc/usr_intf/touchy/mdi.py:82 -msgid "Chip-break drill" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 3" msgstr "" -#: emc/usr_intf/touchy/mdi.py:83 -msgid "Bore" +#: src/emc/usr_intf/stepconf/stepconf.py:196 +#: src/emc/usr_intf/stepconf/stepconf.py:215 +#: src/emc/usr_intf/stepconf/pport1.glade:18 +#: src/emc/usr_intf/stepconf/pport2.glade:1406 +#: src/emc/usr_intf/stepconf/pport2.glade:1420 +msgid "Unused" msgstr "" -#: emc/usr_intf/touchy/mdi.py:84 -msgid "Bore with dwell" +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 +msgid "ESTOP In" msgstr "" -#: emc/usr_intf/touchy/mdi.py:85 -msgid "Offset all coordinate systems" +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 +msgid "Probe In" msgstr "" -#: emc/usr_intf/touchy/mdi.py:86 -msgid "CSS Mode" +#: src/emc/usr_intf/stepconf/stepconf.py:199 +msgid "Spindle Index" msgstr "" -#: emc/usr_intf/touchy/emc_interface.py:410 -msgid "CCW" +#: src/emc/usr_intf/stepconf/stepconf.py:199 +msgid "Spindle Phase A" msgstr "" -#: emc/usr_intf/touchy/emc_interface.py:410 -msgid "Stopped" +#: src/emc/usr_intf/stepconf/stepconf.py:199 +msgid "Spindle Phase B" msgstr "" -#: emc/usr_intf/touchy/emc_interface.py:410 -msgid "CW" +#: src/emc/usr_intf/stepconf/stepconf.py:200 +msgid "Home X" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:7 -msgid "EMC2/Touchy" +#: src/emc/usr_intf/stepconf/stepconf.py:200 +msgid "Home Y" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:11 -msgid "window1" +#: src/emc/usr_intf/stepconf/stepconf.py:200 +msgid "Home Z" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:31 -msgid "xa" +#: src/emc/usr_intf/stepconf/stepconf.py:200 +msgid "Home A" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:44 -msgid "xd" +#: src/emc/usr_intf/stepconf/stepconf.py:201 +msgid "Minimum Limit + Home X" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:57 -msgid "yr" +#: src/emc/usr_intf/stepconf/stepconf.py:201 +msgid "Minimum Limit + Home Y" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:68 -msgid "ya" +#: src/emc/usr_intf/stepconf/stepconf.py:202 +msgid "Minimum Limit + Home Z" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:81 -msgid "yd" +#: src/emc/usr_intf/stepconf/stepconf.py:202 +msgid "Minimum Limit + Home A" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:94 -msgid "zr" +#: src/emc/usr_intf/stepconf/stepconf.py:203 +msgid "Maximum Limit + Home X" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:105 -msgid "za" +#: src/emc/usr_intf/stepconf/stepconf.py:203 +msgid "Maximum Limit + Home Y" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:118 -msgid "zd" +#: src/emc/usr_intf/stepconf/stepconf.py:204 +msgid "Maximum Limit + Home Z" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:131 -msgid "DTG" +#: src/emc/usr_intf/stepconf/stepconf.py:204 +msgid "Maximum Limit + Home A" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:143 -#: emc/usr_intf/pncconf/pncconf.glade:59734 -msgid "Absolute" +#: src/emc/usr_intf/stepconf/stepconf.py:205 +msgid "Both Limit + Home X" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:165 -msgid "xr" +#: src/emc/usr_intf/stepconf/stepconf.py:205 +msgid "Both Limit + Home Y" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:176 -msgid "ar" +#: src/emc/usr_intf/stepconf/stepconf.py:206 +msgid "Both Limit + Home Z" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:188 -msgid "br" +#: src/emc/usr_intf/stepconf/stepconf.py:206 +msgid "Both Limit + Home A" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:200 -msgid "cr" +#: src/emc/usr_intf/stepconf/stepconf.py:207 +msgid "Minimum Limit X" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:212 -msgid "ur" +#: src/emc/usr_intf/stepconf/stepconf.py:207 +msgid "Minimum Limit Y" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:224 -msgid "vr" +#: src/emc/usr_intf/stepconf/stepconf.py:208 +msgid "Minimum Limit Z" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:236 -msgid "wr" +#: src/emc/usr_intf/stepconf/stepconf.py:208 +msgid "Minimum Limit A" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:248 -msgid "aa" +#: src/emc/usr_intf/stepconf/stepconf.py:209 +msgid "Maximum Limit X" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:262 -msgid "ba" +#: src/emc/usr_intf/stepconf/stepconf.py:209 +msgid "Maximum Limit Y" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:276 -msgid "ca" +#: src/emc/usr_intf/stepconf/stepconf.py:210 +msgid "Maximum Limit Z" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:290 -msgid "ua" +#: src/emc/usr_intf/stepconf/stepconf.py:210 +msgid "Maximum Limit A" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:304 -msgid "va" +#: src/emc/usr_intf/stepconf/stepconf.py:211 +msgid "Both Limit X" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:318 -msgid "wa" +#: src/emc/usr_intf/stepconf/stepconf.py:211 +msgid "Both Limit Y" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:332 -msgid "ad" +#: src/emc/usr_intf/stepconf/stepconf.py:212 +msgid "Both Limit Z" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:346 -msgid "bd" +#: src/emc/usr_intf/stepconf/stepconf.py:212 +msgid "Both Limit A" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:360 -msgid "cd" +#: src/emc/usr_intf/stepconf/stepconf.py:213 +msgid "All limits" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:374 -msgid "ud" +#: src/emc/usr_intf/stepconf/stepconf.py:213 +msgid "All home" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:388 -msgid "vd" +#: src/emc/usr_intf/stepconf/stepconf.py:213 +msgid "All limits + homes" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:402 -msgid "wd" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 0" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:448 -msgid "Estop Reset" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 1" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:459 -msgid "Estop" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 2" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:475 -msgid "Machine On" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 3" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:490 -msgid "Machine Off" +#: src/emc/usr_intf/stepconf/stepconf.py:218 +msgid "Forward" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:531 -msgid "Power" +#: src/emc/usr_intf/stepconf/stepconf.py:219 +msgid "Done" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:562 -msgid "Unhome All" +#: src/emc/usr_intf/stepconf/stepconf.py:220 +msgid "" +"OK to replace existing custom ladder program?\n" +"Existing Custom.clp will be renamed custom_backup.clp.\n" +"Any existing file named -custom_backup.clp- will be lost. " msgstr "" -#: emc/usr_intf/touchy/touchy.glade:588 -msgid "Home Selected" +#: src/emc/usr_intf/stepconf/stepconf.py:221 +#: src/emc/usr_intf/pncconf/pncconf.py:8163 +msgid "" +"You edited a ladder program and have selected a different program to copy to " +"your configuration file.\n" +"The edited program will be lost.\n" +"\n" +"Are you sure? " msgstr "" -#: emc/usr_intf/touchy/touchy.glade:603 -msgid "Unhome Selected" +#: src/emc/usr_intf/stepconf/stepconf.py:222 +msgid "" +"You need to designate an E-stop input pin in the Parallel Port Setup page " +"for this program." msgstr "" -#: emc/usr_intf/touchy/touchy.glade:625 -msgid "Homing" +#: src/emc/usr_intf/stepconf/stepconf.py:223 +msgid "" +"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" +"Existing custompanel.xml and custom_postgui.hal will be renamed " +"custompanel_backup.xml and postgui_backup.hal.\n" +"Any existing file named custompanel_backup.xml and custom_postgui.hal will " +"be lost. " msgstr "" -#: emc/usr_intf/touchy/touchy.glade:644 -msgid "Startup" +#: src/emc/usr_intf/stepconf/stepconf.py:224 +msgid "Quit Stepconf and discard changes?" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:727 -msgid "G" +#: src/emc/usr_intf/stepconf/stepconf.py:225 +msgid "" +"The configuration has been built and saved.\n" +"Do you want to quit?" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:929 -msgid "." +#: src/emc/usr_intf/stepconf/stepconf.py:226 +msgid "" +"You are using a simulated-realtime version of Machinekit, so testing / " +"tuning of hardware is unavailable." msgstr "" -#: emc/usr_intf/touchy/touchy.glade:963 -#: emc/usr_intf/pncconf/pncconf.glade:60862 -#: emc/usr_intf/pncconf/pncconf.glade:60874 -#: emc/usr_intf/pncconf/pncconf.glade:60996 -#: emc/usr_intf/pncconf/pncconf.glade:61008 -#: emc/usr_intf/pncconf/pncconf.glade:61020 -#: emc/usr_intf/pncconf/pncconf.glade:61032 -#: emc/usr_intf/pncconf/pncconf.glade:61044 -#: emc/usr_intf/pncconf/pncconf.glade:61056 -#: emc/usr_intf/pncconf/pncconf.glade:62019 -#: emc/usr_intf/pncconf/pncconf.glade:62031 -#: emc/usr_intf/pncconf/pncconf.glade:62043 -#: emc/usr_intf/pncconf/pncconf.glade:62055 -#: emc/usr_intf/pncconf/pncconf.glade:62067 -#: emc/usr_intf/pncconf/pncconf.glade:62079 -#: emc/usr_intf/pncconf/pncconf.glade:62201 -#: emc/usr_intf/pncconf/pncconf.glade:62213 -#: emc/usr_intf/pncconf/pncconf.glade:63048 -#: emc/usr_intf/pncconf/pncconf.glade:63060 -#: emc/usr_intf/pncconf/pncconf.glade:63182 -#: emc/usr_intf/pncconf/pncconf.glade:63194 -#: emc/usr_intf/pncconf/pncconf.glade:63206 -#: emc/usr_intf/pncconf/pncconf.glade:63218 -#: emc/usr_intf/pncconf/pncconf.glade:63230 -#: emc/usr_intf/pncconf/pncconf.glade:63242 -#: emc/usr_intf/pncconf/pncconf.glade:64205 -#: emc/usr_intf/pncconf/pncconf.glade:64217 -#: emc/usr_intf/pncconf/pncconf.glade:64229 -#: emc/usr_intf/pncconf/pncconf.glade:64241 -#: emc/usr_intf/pncconf/pncconf.glade:64253 -#: emc/usr_intf/pncconf/pncconf.glade:64265 -#: emc/usr_intf/pncconf/pncconf.glade:64387 -#: emc/usr_intf/pncconf/pncconf.glade:64399 -#: emc/usr_intf/pncconf/pncconf.glade:65210 -#: emc/usr_intf/pncconf/pncconf.glade:65222 -#: emc/usr_intf/pncconf/pncconf.glade:65338 -#: emc/usr_intf/pncconf/pncconf.glade:65350 -#: emc/usr_intf/pncconf/pncconf.glade:65362 -#: emc/usr_intf/pncconf/pncconf.glade:65374 -#: emc/usr_intf/pncconf/pncconf.glade:65386 -#: emc/usr_intf/pncconf/pncconf.glade:65398 -#: emc/usr_intf/pncconf/pncconf.glade:67070 -msgid "0" +#: src/emc/usr_intf/stepconf/stepconf.py:227 +#, python-format +msgid "" +"You are using a realtime version of Machinekit but didn't load a realtime " +"kernel so testing / tuning of hardware is unavailable.\n" +"This is possibly because you updated the OS and it doesn't automatically " +"load the RTAI kernel anymore.\n" +"You are using the %(actual)s kernel.\n" +"You need to use kernel:" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:980 -msgid "3" +#: src/emc/usr_intf/stepconf/stepconf.py:246 +msgid "my-mill" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:997 -msgid "2" +#: src/emc/usr_intf/stepconf/stepconf.py:585 +#, python-format +msgid "File %r was modified since it was written by stepconf" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:1014 -msgid "1" +#: src/emc/usr_intf/stepconf/stepconf.py:588 +msgid "" +"Saving this configuration file will discard configuration changes made " +"outside stepconf." msgstr "" -#: emc/usr_intf/touchy/touchy.glade:1031 -msgid "6" +#: src/emc/usr_intf/stepconf/stepconf.py:603 +#: src/emc/usr_intf/pncconf/pncconf.py:1318 +msgid "Continue? " msgstr "" -#: emc/usr_intf/touchy/touchy.glade:1048 -msgid "5" +#: src/emc/usr_intf/stepconf/stepconf.py:604 +#: src/emc/usr_intf/pncconf/pncconf.py:1319 +msgid "yY" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:1065 -msgid "4" +#: src/emc/usr_intf/stepconf/stepconf.py:689 +#: src/emc/usr_intf/pncconf/pncconf.py:3591 +#, python-format +msgid "launch %s" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:1082 -msgid "9" +#: src/emc/usr_intf/stepconf/stepconf.py:693 +msgid "Desktop Launcher for Machinekit config made by Stepconf" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:1097 -msgid "8" +#: src/emc/usr_intf/stepconf/stepconf.py:860 +#: src/emc/usr_intf/stepconf/pages.py:145 +msgid "Other" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:1112 -msgid "7" +#: src/emc/usr_intf/stepconf/stepconf.py:1295 +#: src/emc/usr_intf/pncconf/pncconf.py:9302 +#, python-format +msgid "%s Axis Test" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:1297 -msgid "Flood On" +#: src/emc/usr_intf/stepconf/stepconf.py:1298 +#: src/emc/usr_intf/stepconf/pages.py:617 +msgid "deg / s" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:1308 -msgid "Flood Off" +#: src/emc/usr_intf/stepconf/stepconf.py:1299 +#: src/emc/usr_intf/stepconf/pages.py:618 +msgid "deg / s²" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:1324 -msgid "Mist On" +#: src/emc/usr_intf/stepconf/stepconf.py:1300 +#: src/emc/usr_intf/stepconf/pages.py:619 +msgid "deg" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:1339 -msgid "Mist Off" +#: src/emc/usr_intf/stepconf/stepconf.py:1312 +#: src/emc/usr_intf/stepconf/pages.py:623 +#: src/emc/usr_intf/stepconf/axisx.glade:629 +#: src/emc/usr_intf/stepconf/axisy.glade:615 +#: src/emc/usr_intf/stepconf/axisz.glade:615 +#: src/emc/usr_intf/stepconf/axisa.glade:629 +#: src/emc/usr_intf/pncconf/pncconf.glade:64717 +msgid "mm / s" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:1362 -msgid "Coolant" +#: src/emc/usr_intf/stepconf/stepconf.py:1313 +#: src/emc/usr_intf/stepconf/pages.py:624 +#: src/emc/usr_intf/stepconf/axisx.glade:645 +#: src/emc/usr_intf/stepconf/axisy.glade:631 +#: src/emc/usr_intf/stepconf/axisz.glade:631 +#: src/emc/usr_intf/stepconf/axisa.glade:645 +#: src/emc/usr_intf/pncconf/pncconf.glade:64732 +msgid "mm / s²" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:1448 -msgid "Spindle Off" +#: src/emc/usr_intf/stepconf/stepconf.py:1326 +#: src/emc/usr_intf/stepconf/pages.py:629 +msgid "in / s" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:1501 emc/usr_intf/touchy/touchy.glade:2578 -msgid "Spindle speed:" +#: src/emc/usr_intf/stepconf/stepconf.py:1327 +#: src/emc/usr_intf/stepconf/pages.py:630 +msgid "in / s²" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:1513 emc/usr_intf/touchy/touchy.glade:2707 -msgid "label26" +#: src/emc/usr_intf/stepconf/pages.py:189 +msgid "Machinekit 'stepconf' configuration files" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:1539 -msgid "Spindle" +#: src/emc/usr_intf/stepconf/pages.py:190 +#: src/emc/usr_intf/pncconf/pncconf.py:4257 +msgid "Modify Existing Configuration" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:1597 -msgid "file.ngc" +#: src/emc/usr_intf/stepconf/pages.py:616 +msgid "degree / rev" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:1812 emc/usr_intf/touchy/touchy.glade:2017 -#: emc/usr_intf/touchy/touchy.glade:2037 emc/usr_intf/touchy/touchy.glade:2057 -#: emc/usr_intf/touchy/touchy.glade:2077 emc/usr_intf/touchy/touchy.glade:2097 -#: emc/usr_intf/touchy/touchy.glade:2117 emc/usr_intf/touchy/touchy.glade:2137 -#: emc/usr_intf/touchy/touchy.glade:2157 emc/usr_intf/touchy/touchy.glade:2177 -msgid "M2" +#: src/emc/usr_intf/stepconf/pages.py:620 +msgid "Steps / deg" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2244 emc/usr_intf/touchy/touchy.glade:2374 -msgid "Page" +#: src/emc/usr_intf/stepconf/pages.py:622 +#: src/emc/usr_intf/stepconf/axisx.glade:613 +#: src/emc/usr_intf/stepconf/axisy.glade:599 +#: src/emc/usr_intf/stepconf/axisz.glade:599 +#: src/emc/usr_intf/stepconf/axisa.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / rev" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2308 -msgid "Start Point" +#: src/emc/usr_intf/stepconf/pages.py:626 +#: src/emc/usr_intf/stepconf/axisx.glade:15 +#: src/emc/usr_intf/stepconf/axisy.glade:15 +#: src/emc/usr_intf/stepconf/axisz.glade:15 +#: src/emc/usr_intf/stepconf/axisa.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Steps / mm" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2452 -msgid "Loaded File" +#: src/emc/usr_intf/stepconf/pages.py:628 +msgid "rev / in" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2488 -msgid "Loaded file:" +#: src/emc/usr_intf/stepconf/pages.py:632 +msgid "Steps / in" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2499 -msgid "Interpreted line:" +#: src/emc/usr_intf/stepconf/build_INI.py:45 +#: src/emc/usr_intf/stepconf/build_HAL.py:41 +#, python-format +msgid "# Generated by stepconf 1.1 at %s" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2513 -msgid "Distance:" +#: src/emc/usr_intf/stepconf/build_INI.py:46 +#: src/emc/usr_intf/stepconf/build_HAL.py:42 +#: src/emc/usr_intf/pncconf/pncconf.py:1328 +#: src/emc/usr_intf/pncconf/pncconf.py:2422 +msgid "# If you make changes to this file, they will be" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2526 -#: emc/usr_intf/stepconf/stepconf.glade:4148 -#: emc/usr_intf/pncconf/pncconf.glade:60455 -#: emc/usr_intf/pncconf/pncconf.glade:61550 -#: emc/usr_intf/pncconf/pncconf.glade:62643 -#: emc/usr_intf/pncconf/pncconf.glade:63736 -#: emc/usr_intf/pncconf/pncconf.glade:64835 -msgid "Velocity:" +#: src/emc/usr_intf/stepconf/build_INI.py:47 +#: src/emc/usr_intf/stepconf/build_HAL.py:43 +msgid "# overwritten when you run stepconf again" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2539 -msgid "Delay:" +#: src/emc/usr_intf/stepconf/build_INI.py:126 +msgid "# add halui MDI commands here (max 64) " msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2552 -msgid "On limit switch:" +#: src/emc/usr_intf/stepconf/build_HAL.py:275 +#: src/emc/usr_intf/pncconf/pncconf.py:3131 +msgid "# **** Setup for external estop ladder program -START ****" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2565 -msgid "Spindle direction:" +#: src/emc/usr_intf/stepconf/build_HAL.py:282 +#: src/emc/usr_intf/pncconf/pncconf.py:3138 +msgid "# **** Setup for external estop ladder program -END ****" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2591 -msgid "Loaded tool:" +#: src/emc/usr_intf/stepconf/build_HAL.py:302 +#: src/emc/usr_intf/pncconf/pncconf.py:3165 +msgid "" +"# Load Classicladder with modbus master included (GUI must run for Modbus)" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2604 emc/usr_intf/touchy/touchy.glade:2955 -msgid "label19" +#: src/emc/usr_intf/stepconf/build_HAL.py:305 +#: src/emc/usr_intf/pncconf/pncconf.py:3170 +msgid "# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2617 -msgid "label20" +#: src/emc/usr_intf/stepconf/build_HAL.py:315 +#: src/emc/usr_intf/pncconf/pncconf.py:3252 +msgid "Include your PyVCP panel here.\n" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2632 emc/usr_intf/touchy/touchy.glade:2779 -#: emc/usr_intf/touchy/touchy.glade:2808 emc/usr_intf/touchy/touchy.glade:2912 -#: emc/usr_intf/touchy/touchy.glade:2927 -msgid "label21" +#: src/emc/usr_intf/stepconf/build_HAL.py:324 +#: src/emc/usr_intf/stepconf/build_HAL.py:370 +msgid "# Include your customized HAL commands here" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2647 -msgid "label22" +#: src/emc/usr_intf/stepconf/build_HAL.py:325 +msgid "" +"# The commands in this file are run after the AXIS GUI (including PyVCP " +"panel) starts" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2662 -msgid "label23" +#: src/emc/usr_intf/stepconf/build_HAL.py:328 +#: src/emc/usr_intf/pncconf/pncconf.py:3280 +msgid "# **** Setup of spindle speed display using pyvcp -START ****" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2677 -msgid "label24" +#: src/emc/usr_intf/stepconf/build_HAL.py:330 +msgid "# **** Use ACTUAL spindle velocity from spindle encoder" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2692 -msgid "label25" +#: src/emc/usr_intf/stepconf/build_HAL.py:331 +msgid "" +"# **** spindle-velocity-feedback-rps bounces around so we filter it with " +"lowpass" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2722 -msgid "label27" +#: src/emc/usr_intf/stepconf/build_HAL.py:332 +msgid "" +"# **** spindle-velocity-feedback-rps is signed so we use absolute component " +"to remove sign" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2737 -msgid "Prepped tool:" +#: src/emc/usr_intf/stepconf/build_HAL.py:333 +msgid "# **** ACTUAL velocity is in RPS not RPM so we scale it." msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2750 -msgid "label28" +#: src/emc/usr_intf/stepconf/build_HAL.py:342 +msgid "# **** set up spindle at speed indicator ****" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2765 -msgid "Running line:" +#: src/emc/usr_intf/stepconf/build_HAL.py:355 +msgid "" +"# **** Use COMMANDED spindle velocity from LinuxCNC because no spindle " +"encoder was specified" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2794 -msgid "XY Rotation:" +#: src/emc/usr_intf/stepconf/build_HAL.py:371 +msgid "# This file will not be overwritten when you run stepconf again" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2823 -msgid "Tool length:" +#: src/emc/usr_intf/stepconf/build_HAL.py:412 +msgid "# This file sets up simulated limits/home/spindle encoder hardware." msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2836 -msgid "label52" +#: src/emc/usr_intf/stepconf/build_HAL.py:413 +msgid "# This is a generated file do not edit." msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2851 -msgid "" -"G1 G2 G3\n" -"M1 M2 M3\n" -"F1 S1" +#: src/emc/usr_intf/stepconf/main_page.glade:35 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Acceleration:" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2870 -msgid "Active codes:" +#: src/emc/usr_intf/stepconf/main_page.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Jog:" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2883 -msgid "G5x Offset:" +#: src/emc/usr_intf/stepconf/main_page.glade:63 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Test Area:" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2898 -msgid "G92 Offset:" +#: src/emc/usr_intf/stepconf/main_page.glade:97 +msgid "mm/s^2" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2942 -msgid "Loaded file lines:" +#: src/emc/usr_intf/stepconf/main_page.glade:138 +msgid "mm/s" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2971 -msgid "Pockets:" +#: src/emc/usr_intf/stepconf/main_page.glade:400 +msgid "±" +msgstr "" + +#: src/emc/usr_intf/stepconf/main_page.glade:423 +msgid "Stepconf -Stepper Configuration Wizard" +msgstr "" + +#: src/emc/usr_intf/stepconf/main_page.glade:503 +#: src/emc/usr_intf/pncconf/pncconf.glade:2054 +#: src/emc/usr_intf/pncconf/pncconf.glade:2067 +#: src/emc/usr_intf/pncconf/pncconf.glade:2080 +#: src/emc/usr_intf/pncconf/pncconf.glade:2093 +#: src/emc/usr_intf/pncconf/pncconf.glade:2106 +#: src/emc/usr_intf/pncconf/pncconf.glade:2119 +#: src/emc/usr_intf/pncconf/pncconf.glade:2132 +#: src/emc/usr_intf/pncconf/pncconf.glade:2145 +#: src/emc/usr_intf/pncconf/pncconf.glade:2156 +#: src/emc/usr_intf/pncconf/pncconf.glade:2169 +#: src/emc/usr_intf/pncconf/pncconf.glade:2182 +#: src/emc/usr_intf/pncconf/pncconf.glade:2528 +#: src/emc/usr_intf/pncconf/pncconf.glade:2541 +#: src/emc/usr_intf/pncconf/pncconf.glade:2554 +#: src/emc/usr_intf/pncconf/pncconf.glade:8104 +#: src/emc/usr_intf/pncconf/pncconf.glade:8139 +#: src/emc/usr_intf/pncconf/pncconf.glade:63377 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:1342 +#: src/emc/usr_intf/gscreen/gscreen.glade:1360 +#: src/emc/usr_intf/gscreen/gscreen.glade:1378 +msgid "label" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:2984 +#: src/emc/usr_intf/stepconf/main_page.glade:605 msgid "" -"1\n" -"2\n" -"3" +"This program creates configuration files (.ini and .hal) for \"step and " +"direction\" milling machines and lathes connected to the PC parallel port.\n" +"\n" +"Stepconf requires a minimum 800 X 600 display resolution." msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3009 -msgid "Status" +#: src/emc/usr_intf/stepconf/main_page.glade:628 +#: src/emc/usr_intf/pncconf/pncconf.glade:28799 +#: src/emc/usr_intf/pncconf/pncconf.glade:35720 +#: src/emc/usr_intf/pncconf/pncconf.glade:42643 +#: src/emc/usr_intf/pncconf/pncconf.glade:49566 +#: src/emc/usr_intf/pncconf/pncconf.glade:56489 +msgid "page 1" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3038 -msgid "Control Font:" +#: src/emc/usr_intf/stepconf/base.glade:18 +msgid "XYZ" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3050 -msgid "DRO Font:" +#: src/emc/usr_intf/stepconf/base.glade:21 +msgid "XYZA" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3064 -msgid "Error Font:" +#: src/emc/usr_intf/stepconf/base.glade:24 +msgid "XZ (Lathe)" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3081 -msgid "ControlFont" +#: src/emc/usr_intf/stepconf/base.glade:79 +msgid "Step _Time:" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3100 -msgid "DRO Font" +#: src/emc/usr_intf/stepconf/base.glade:113 +#: src/emc/usr_intf/stepconf/base.glade:165 +#: src/emc/usr_intf/stepconf/base.glade:219 +#: src/emc/usr_intf/stepconf/base.glade:271 +#: src/emc/usr_intf/stepconf/base.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:443 +#: src/emc/usr_intf/pncconf/pncconf.glade:8226 +msgid "ns" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3121 -msgid "Error Font" +#: src/emc/usr_intf/stepconf/base.glade:127 +msgid "Step _Space:" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3139 -msgid "Listing Font:" +#: src/emc/usr_intf/stepconf/base.glade:181 +msgid "Direction _Hold:" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3156 -msgid "Listing Font" +#: src/emc/usr_intf/stepconf/base.glade:235 +msgid "_Direction Setup:" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3176 -msgid "Hide pointer" +#: src/emc/usr_intf/stepconf/base.glade:338 +msgid "Driver Timing Settings" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3187 -msgid "Show pointer" +#: src/emc/usr_intf/stepconf/base.glade:351 +msgid "" +"_Test Base\n" +"Period Jitter " msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3214 -msgid "Theme:" +#: src/emc/usr_intf/stepconf/base.glade:372 +msgid "Machine _Name:" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3228 -msgid "default\n" +#: src/emc/usr_intf/stepconf/base.glade:386 +msgid "_Axis configuration:" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3252 -msgid "Display Options" +#: src/emc/usr_intf/stepconf/base.glade:401 +msgid "Reset Default machine _units:" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3286 -msgid "Inch" +#: src/emc/usr_intf/stepconf/base.glade:416 +#: src/emc/usr_intf/pncconf/pncconf.glade:245 +msgid "Configuration directory:" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3349 -msgid "Position Readout" +#: src/emc/usr_intf/stepconf/base.glade:430 +msgid "D_river type:" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3379 -msgid "Workpiece" +#: src/emc/usr_intf/stepconf/base.glade:545 +msgid "" +"Driver characteristics: (Multiply by 1000 for times specified in µs or " +"microseconds)" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3390 -msgid "Fixture" +#: src/emc/usr_intf/stepconf/base.glade:573 +msgid "Base Period Maximum _Jitter:" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3410 -msgid "Tool Setting" +#: src/emc/usr_intf/stepconf/base.glade:630 +msgid "One Parport" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3441 -msgid "Delete / lines" +#: src/emc/usr_intf/stepconf/base.glade:646 +msgid "Two Parports" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3456 -msgid "Keep / lines" +#: src/emc/usr_intf/stepconf/base.glade:663 +msgid "Three Parports" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3473 -msgid "Pause on M1" +#: src/emc/usr_intf/stepconf/base.glade:698 +msgid "Min Base Period:" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3484 -msgid "Ignore M1" +#: src/emc/usr_intf/stepconf/base.glade:735 +msgid "Max step rate:" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3504 -msgid "Program Options" +#: src/emc/usr_intf/stepconf/base.glade:870 +msgid "MM" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3531 -msgid "Preferences" +#: src/emc/usr_intf/stepconf/start.glade:11 +msgid "Create a _new configuration" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3567 -msgid "FO: 100%" +#: src/emc/usr_intf/stepconf/start.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:130 +msgid "Modify a configuration already created with this program" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3582 -msgid "SO: 100%" +#: src/emc/usr_intf/stepconf/start.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:118 +msgid "Do you wish to:" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3596 -msgid "MV: 100" +#: src/emc/usr_intf/stepconf/start.glade:61 +#: src/emc/usr_intf/pncconf/pncconf.glade:100 +msgid "" +"If you have made modifications to this configuration outside this program, " +"they will be lost when you select \"Modify a configuration\"" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3610 -msgid "Jogging" +#: src/emc/usr_intf/stepconf/start.glade:76 +msgid "Create a desktop _shortcut (symlink) to configuration files." msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3637 -msgid ".01" +#: src/emc/usr_intf/stepconf/start.glade:93 +msgid "Create a desktop _launcher to start LinuxCNC with this configuration." msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3650 -msgid ".001" +#: src/emc/usr_intf/stepconf/start.glade:124 +msgid "Create simulated hardware configuration." msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3666 -msgid ".0001" +#: src/emc/usr_intf/stepconf/pport1.glade:35 +msgid "Xylotex" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3694 -msgid " X " +#: src/emc/usr_intf/stepconf/pport1.glade:38 +msgid "TB6560 3 axes" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3706 -msgid " Y " +#: src/emc/usr_intf/stepconf/pport1.glade:41 +msgid "TB6560 4 axes" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3721 -msgid " Z " +#: src/emc/usr_intf/stepconf/pport1.glade:59 +#: src/emc/usr_intf/pncconf/pncconf.glade:62915 +msgid "Pin _1:" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3736 -msgid " A " +#: src/emc/usr_intf/stepconf/pport1.glade:74 +#: src/emc/usr_intf/stepconf/pport2.glade:768 +#: src/emc/usr_intf/pncconf/pncconf.glade:61685 +#: src/emc/usr_intf/pncconf/pncconf.glade:62901 +msgid "Pin _2:" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3752 -msgid " B " +#: src/emc/usr_intf/stepconf/pport1.glade:89 +#: src/emc/usr_intf/stepconf/pport2.glade:814 +#: src/emc/usr_intf/pncconf/pncconf.glade:61668 +#: src/emc/usr_intf/pncconf/pncconf.glade:62887 +msgid "Pin _3:" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3770 -msgid " C " +#: src/emc/usr_intf/stepconf/pport1.glade:104 +#: src/emc/usr_intf/stepconf/pport2.glade:860 +#: src/emc/usr_intf/pncconf/pncconf.glade:61651 +#: src/emc/usr_intf/pncconf/pncconf.glade:62873 +msgid "Pin _4:" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3788 -msgid " U " +#: src/emc/usr_intf/stepconf/pport1.glade:119 +#: src/emc/usr_intf/stepconf/pport2.glade:906 +#: src/emc/usr_intf/pncconf/pncconf.glade:61634 +#: src/emc/usr_intf/pncconf/pncconf.glade:62859 +msgid "Pin _5:" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3804 -msgid " V " +#: src/emc/usr_intf/stepconf/pport1.glade:134 +#: src/emc/usr_intf/stepconf/pport2.glade:952 +#: src/emc/usr_intf/pncconf/pncconf.glade:61617 +#: src/emc/usr_intf/pncconf/pncconf.glade:62845 +msgid "Pin _6:" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3822 -msgid " W " +#: src/emc/usr_intf/stepconf/pport1.glade:149 +#: src/emc/usr_intf/stepconf/pport2.glade:998 +#: src/emc/usr_intf/pncconf/pncconf.glade:61600 +#: src/emc/usr_intf/pncconf/pncconf.glade:62831 +msgid "Pin _7:" msgstr "" -#: emc/usr_intf/touchy/touchy.glade:3855 -msgid "Handwheel" +#: src/emc/usr_intf/stepconf/pport1.glade:164 +#: src/emc/usr_intf/stepconf/pport2.glade:1044 +#: src/emc/usr_intf/pncconf/pncconf.glade:61583 +#: src/emc/usr_intf/pncconf/pncconf.glade:62817 +msgid "Pin _8:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:53 -msgid "" -"Stepconf encountered an error. The following information may be useful in " -"troubleshooting:\n" -"\n" +#: src/emc/usr_intf/stepconf/pport1.glade:179 +#: src/emc/usr_intf/stepconf/pport2.glade:1090 +#: src/emc/usr_intf/pncconf/pncconf.glade:61566 +#: src/emc/usr_intf/pncconf/pncconf.glade:62803 +msgid "Pin _9:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:70 emc/usr_intf/pncconf/pncconf.py:133 -msgid "Gecko 201" +#: src/emc/usr_intf/stepconf/pport1.glade:194 +#: src/emc/usr_intf/stepconf/pport2.glade:1137 +#: src/emc/usr_intf/pncconf/pncconf.glade:62789 +msgid "_Pin 14:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:71 emc/usr_intf/pncconf/pncconf.py:134 -msgid "Gecko 202" +#: src/emc/usr_intf/stepconf/pport1.glade:209 +#: src/emc/usr_intf/stepconf/pport2.glade:1185 +#: src/emc/usr_intf/pncconf/pncconf.glade:62775 +msgid "P_in 16:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:72 emc/usr_intf/pncconf/pncconf.py:135 -msgid "Gecko 203v" +#: src/emc/usr_intf/stepconf/pport1.glade:224 +#: src/emc/usr_intf/stepconf/pport2.glade:1233 +#: src/emc/usr_intf/pncconf/pncconf.glade:62761 +msgid "Pi_n 17:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:73 emc/usr_intf/pncconf/pncconf.py:136 -msgid "Gecko 210" +#: src/emc/usr_intf/stepconf/pport1.glade:470 +#: src/emc/usr_intf/stepconf/pport2.glade:692 +msgid "Outputs (PC to Mill):" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:74 emc/usr_intf/pncconf/pncconf.py:137 -msgid "Gecko 212" +#: src/emc/usr_intf/stepconf/pport1.glade:483 +#: src/emc/usr_intf/stepconf/pport2.glade:427 +#: src/emc/usr_intf/pncconf/pncconf.glade:61701 +msgid "Pin 1_0:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:75 emc/usr_intf/pncconf/pncconf.py:138 -msgid "Gecko 320" +#: src/emc/usr_intf/stepconf/pport1.glade:500 +#: src/emc/usr_intf/stepconf/pport2.glade:475 +#: src/emc/usr_intf/pncconf/pncconf.glade:61717 +msgid "Pin 1_1:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:76 emc/usr_intf/pncconf/pncconf.py:139 -msgid "Gecko 540" +#: src/emc/usr_intf/stepconf/pport1.glade:517 +#: src/emc/usr_intf/stepconf/pport2.glade:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:61733 +msgid "Pin 1_2:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:77 emc/usr_intf/pncconf/pncconf.py:140 -msgid "L297" +#: src/emc/usr_intf/stepconf/pport1.glade:534 +#: src/emc/usr_intf/stepconf/pport2.glade:571 +#: src/emc/usr_intf/pncconf/pncconf.glade:61749 +msgid "Pin 1_3:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:78 emc/usr_intf/pncconf/pncconf.py:141 -msgid "PMDX-150" +#: src/emc/usr_intf/stepconf/pport1.glade:551 +#: src/emc/usr_intf/stepconf/pport2.glade:619 +#: src/emc/usr_intf/pncconf/pncconf.glade:61765 +msgid "Pin 1_5:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:79 emc/usr_intf/pncconf/pncconf.py:142 -msgid "Sherline" +#: src/emc/usr_intf/stepconf/pport1.glade:590 +#: src/emc/usr_intf/stepconf/pport2.glade:16 +msgid "Inputs (Mill to PC):" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:80 emc/usr_intf/pncconf/pncconf.py:143 -msgid "Xylotex 8S-3" +#: src/emc/usr_intf/stepconf/pport1.glade:618 +#: src/emc/usr_intf/stepconf/pport1.glade:632 +#: src/emc/usr_intf/stepconf/pport2.glade:29 +#: src/emc/usr_intf/stepconf/pport2.glade:702 +#: src/emc/usr_intf/pncconf/pncconf.glade:62335 +#: src/emc/usr_intf/pncconf/pncconf.glade:62348 +msgid "Invert" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:81 emc/usr_intf/pncconf/pncconf.py:144 -msgid "Parker-Compumotor oem750" +#: src/emc/usr_intf/stepconf/pport1.glade:1018 +msgid "Output pinout presets:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:82 emc/usr_intf/pncconf/pncconf.py:145 -msgid "JVL-SMD41 or 42" +#: src/emc/usr_intf/stepconf/pport1.glade:1096 +msgid "Parport _Base Address:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:83 emc/usr_intf/pncconf/pncconf.py:146 -msgid "Hobbycnc Pro Chopper" +#: src/emc/usr_intf/stepconf/pport1.glade:1132 +msgid "Preset" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:84 emc/usr_intf/pncconf/pncconf.py:147 -msgid "Keling 4030" +#: src/emc/usr_intf/stepconf/pport2.glade:47 +msgid "Pin 2:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:153 -msgid "X Step" +#: src/emc/usr_intf/stepconf/pport2.glade:94 +msgid "Pin 3:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:153 -msgid "X Direction" +#: src/emc/usr_intf/stepconf/pport2.glade:141 +msgid "Pin 4:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:153 -msgid "Y Step" +#: src/emc/usr_intf/stepconf/pport2.glade:188 +msgid "Pin 5:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:153 -msgid "Y Direction" +#: src/emc/usr_intf/stepconf/pport2.glade:235 +msgid "Pin 6:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:154 -msgid "Z Step" +#: src/emc/usr_intf/stepconf/pport2.glade:282 +msgid "Pin 7:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:154 -msgid "Z Direction" +#: src/emc/usr_intf/stepconf/pport2.glade:329 +msgid "Pin 8:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:154 -msgid "A Step" +#: src/emc/usr_intf/stepconf/pport2.glade:376 +msgid "Pin 9:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:154 -msgid "A Direction" +#: src/emc/usr_intf/stepconf/pport2.glade:721 +msgid "Pin _1: " msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:155 emc/usr_intf/pncconf/pncconf.py:440 -msgid "Spindle ON" +#: src/emc/usr_intf/stepconf/pport2.glade:1431 +msgid "Out" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:155 emc/usr_intf/pncconf/pncconf.py:557 -msgid "Spindle PWM" +#: src/emc/usr_intf/stepconf/pport2.glade:1434 +msgid "In" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:155 emc/usr_intf/pncconf/pncconf.py:440 -msgid "Spindle Brake" +#: src/emc/usr_intf/stepconf/spindle.glade:23 +msgid "Use spindle-at-speed:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:156 emc/usr_intf/pncconf/pncconf.py:441 -msgid "Coolant Mist" +#: src/emc/usr_intf/stepconf/spindle.glade:64 +msgid "Speed display filter gain:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:156 emc/usr_intf/pncconf/pncconf.py:441 -msgid "Coolant Flood" +#: src/emc/usr_intf/stepconf/spindle.glade:99 +msgid "Calibration:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:156 emc/usr_intf/pncconf/pncconf.py:442 -msgid "ESTOP Out" +#: src/emc/usr_intf/stepconf/spindle.glade:113 +msgid "_Speed 1:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:156 -msgid "Amplifier Enable" +#: src/emc/usr_intf/stepconf/spindle.glade:129 +msgid "_PWM 1:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:157 emc/usr_intf/pncconf/pncconf.py:443 -msgid "Charge Pump" +#: src/emc/usr_intf/stepconf/spindle.glade:148 +msgid "S_peed 2:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:158 emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 0" +#: src/emc/usr_intf/stepconf/spindle.glade:164 +msgid "P_WM 2:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:158 emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 1" +#: src/emc/usr_intf/stepconf/spindle.glade:183 +msgid "PWM _Rate:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:158 emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 2" +#: src/emc/usr_intf/stepconf/spindle.glade:285 +msgid "_Cycles per revolution:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:158 emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 3" +#: src/emc/usr_intf/stepconf/spindle.glade:347 +msgid "Enter 0 Hz for \"PDM\" mode" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:159 emc/usr_intf/stepconf/stepconf.py:178 -msgid "Unused" +#: src/emc/usr_intf/stepconf/spindle.glade:360 +msgid "Scale %" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:161 emc/usr_intf/pncconf/pncconf.py:471 -msgid "ESTOP In" +#: src/emc/usr_intf/stepconf/options.glade:50 +msgid "Include Halui user interface component" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:161 emc/usr_intf/pncconf/pncconf.py:471 -msgid "Probe In" +#: src/emc/usr_intf/stepconf/options.glade:102 +#: src/emc/usr_intf/pncconf/pncconf.glade:6753 +msgid "Blank program" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:162 -msgid "Spindle Index" +#: src/emc/usr_intf/stepconf/options.glade:119 +#: src/emc/usr_intf/pncconf/pncconf.glade:6768 +msgid "Spindle speed display " msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:162 -msgid "Spindle Phase A" +#: src/emc/usr_intf/stepconf/options.glade:136 +#: src/emc/usr_intf/stepconf/options.glade:671 +#: src/emc/usr_intf/pncconf/pncconf.glade:6799 +#: src/emc/usr_intf/pncconf/pncconf.glade:7120 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Existing custom program" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:162 -msgid "Spindle Phase B" +#: src/emc/usr_intf/stepconf/options.glade:153 +#: src/emc/usr_intf/stepconf/options.glade:688 +#: src/emc/usr_intf/pncconf/pncconf.glade:6814 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include connections to HAL" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:163 -msgid "Home X" +#: src/emc/usr_intf/stepconf/options.glade:202 +#: src/emc/usr_intf/pncconf/pncconf.glade:6997 +#: src/emc/usr_intf/pncconf/pncconf.glade:7545 +msgid "" +"_Display\n" +"sample\n" +"panel" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:163 -msgid "Home Y" +#: src/emc/usr_intf/stepconf/options.glade:243 +#: src/emc/usr_intf/pncconf/pncconf.glade:7056 +msgid "Include custom PyVCP GUI panel" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:163 -msgid "Home Z" +#: src/emc/usr_intf/stepconf/options.glade:414 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (float) out pins:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:163 -msgid "Home A" +#: src/emc/usr_intf/stepconf/options.glade:429 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (float) in pins:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:164 -msgid "Minimum Limit + Home X" +#: src/emc/usr_intf/stepconf/options.glade:444 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (s32) out pins:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:164 -msgid "Minimum Limit + Home Y" +#: src/emc/usr_intf/stepconf/options.glade:459 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (s32) in pins:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:165 -msgid "Minimum Limit + Home Z" +#: src/emc/usr_intf/stepconf/options.glade:475 +msgid "Number of digital out pins:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:165 -msgid "Minimum Limit + Home A" +#: src/emc/usr_intf/stepconf/options.glade:506 +msgid "Number of digital in pins:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:166 -msgid "Maximum Limit + Home X" +#: src/emc/usr_intf/stepconf/options.glade:518 +msgid "setup number of external pins" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:166 -msgid "Maximum Limit + Home Y" +#: src/emc/usr_intf/stepconf/options.glade:533 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include modbus master support" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:167 -msgid "Maximum Limit + Home Z" +#: src/emc/usr_intf/stepconf/options.glade:625 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Blank ladder program" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:167 -msgid "Maximum Limit + Home A" +#: src/emc/usr_intf/stepconf/options.glade:638 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Estop ladder program" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:168 -msgid "Both Limit + Home X" +#: src/emc/usr_intf/stepconf/options.glade:654 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Serial modbus program" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:168 -msgid "Both Limit + Home Y" +#: src/emc/usr_intf/stepconf/options.glade:740 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"Edit ladder\n" +"program" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:169 -msgid "Both Limit + Home Z" +#: src/emc/usr_intf/stepconf/options.glade:781 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include _Classicladder PLC" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:169 -msgid "Both Limit + Home A" +#: src/emc/usr_intf/stepconf/options.glade:802 +msgid "_Onscreen prompt for manual tool change" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:170 -msgid "Minimum Limit X" +#: src/emc/usr_intf/stepconf/axisx.glade:31 +#: src/emc/usr_intf/stepconf/axisy.glade:31 +#: src/emc/usr_intf/stepconf/axisz.glade:31 +#: src/emc/usr_intf/stepconf/axisa.glade:45 +msgid "_Motor steps per revolution:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:170 -msgid "Minimum Limit Y" +#: src/emc/usr_intf/stepconf/axisx.glade:45 +#: src/emc/usr_intf/stepconf/axisy.glade:44 +#: src/emc/usr_intf/stepconf/axisz.glade:44 +#: src/emc/usr_intf/stepconf/axisa.glade:58 +msgid "_Driver Microstepping:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:171 -msgid "Minimum Limit Z" +#: src/emc/usr_intf/stepconf/axisx.glade:61 +#: src/emc/usr_intf/stepconf/axisy.glade:59 +#: src/emc/usr_intf/stepconf/axisz.glade:59 +#: src/emc/usr_intf/stepconf/axisa.glade:73 +msgid "_Pulley teeth (Motor:Leadscrew):" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:171 -msgid "Minimum Limit A" +#: src/emc/usr_intf/stepconf/axisx.glade:77 +#: src/emc/usr_intf/stepconf/axisy.glade:74 +#: src/emc/usr_intf/stepconf/axisz.glade:74 +#: src/emc/usr_intf/stepconf/axisa.glade:88 +msgid "_Leadscrew Pitch:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:172 -msgid "Maximum Limit X" +#: src/emc/usr_intf/stepconf/axisx.glade:93 +#: src/emc/usr_intf/stepconf/axisy.glade:89 +#: src/emc/usr_intf/stepconf/axisz.glade:89 +#: src/emc/usr_intf/stepconf/axisa.glade:103 +#: src/emc/usr_intf/pncconf/pncconf.glade:64687 +msgid "Maximum _Velocity:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:172 -msgid "Maximum Limit Y" +#: src/emc/usr_intf/stepconf/axisx.glade:109 +#: src/emc/usr_intf/stepconf/axisy.glade:104 +#: src/emc/usr_intf/stepconf/axisz.glade:104 +#: src/emc/usr_intf/stepconf/axisa.glade:118 +#: src/emc/usr_intf/pncconf/pncconf.glade:64702 +msgid "Maximum _Acceleration:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:173 -msgid "Maximum Limit Z" +#: src/emc/usr_intf/stepconf/axisx.glade:125 +#: src/emc/usr_intf/stepconf/axisy.glade:119 +#: src/emc/usr_intf/stepconf/axisz.glade:119 +#: src/emc/usr_intf/stepconf/axisa.glade:133 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Time to accelerate to max speed:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:173 -msgid "Maximum Limit A" +#: src/emc/usr_intf/stepconf/axisx.glade:141 +#: src/emc/usr_intf/stepconf/axisy.glade:134 +#: src/emc/usr_intf/stepconf/axisz.glade:134 +#: src/emc/usr_intf/stepconf/axisa.glade:148 +msgid "Distance to accelerate to max speed:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:174 -msgid "Both Limit X" +#: src/emc/usr_intf/stepconf/axisx.glade:271 +#: src/emc/usr_intf/stepconf/axisy.glade:263 +#: src/emc/usr_intf/stepconf/axisz.glade:263 +#: src/emc/usr_intf/stepconf/axisa.glade:277 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulse rate at max speed:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:174 -msgid "Both Limit Y" +#: src/emc/usr_intf/stepconf/axisx.glade:342 +#: src/emc/usr_intf/stepconf/axisy.glade:334 +#: src/emc/usr_intf/stepconf/axisz.glade:334 +#: src/emc/usr_intf/stepconf/axisa.glade:348 +msgid "_Home location:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:175 -msgid "Both Limit Z" +#: src/emc/usr_intf/stepconf/axisx.glade:358 +#: src/emc/usr_intf/stepconf/axisy.glade:349 +#: src/emc/usr_intf/stepconf/axisz.glade:349 +#: src/emc/usr_intf/stepconf/axisa.glade:363 +msgid "Home _Switch location:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:175 -msgid "Both Limit A" +#: src/emc/usr_intf/stepconf/axisx.glade:374 +#: src/emc/usr_intf/stepconf/axisy.glade:364 +#: src/emc/usr_intf/stepconf/axisz.glade:364 +#: src/emc/usr_intf/stepconf/axisa.glade:378 +msgid "Home Sear_ch velocity:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:176 -msgid "All limits" +#: src/emc/usr_intf/stepconf/axisx.glade:390 +#: src/emc/usr_intf/stepconf/axisy.glade:379 +#: src/emc/usr_intf/stepconf/axisz.glade:379 +#: src/emc/usr_intf/stepconf/axisa.glade:393 +msgid "Home La_tch direction:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:176 -msgid "All home" +#: src/emc/usr_intf/stepconf/axisx.glade:404 +#: src/emc/usr_intf/stepconf/axisy.glade:393 +#: src/emc/usr_intf/stepconf/axisz.glade:393 +#: src/emc/usr_intf/stepconf/axisa.glade:407 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "_:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:176 -msgid "All limits + homes" +#: src/emc/usr_intf/stepconf/axisx.glade:498 +#: src/emc/usr_intf/stepconf/axisy.glade:486 +#: src/emc/usr_intf/stepconf/axisz.glade:486 +#: src/emc/usr_intf/stepconf/axisa.glade:500 +msgid "Tab_le travel:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:177 emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 0" +#: src/emc/usr_intf/stepconf/axisx.glade:531 +#: src/emc/usr_intf/stepconf/axisy.glade:518 +#: src/emc/usr_intf/stepconf/axisz.glade:518 +#: src/emc/usr_intf/stepconf/axisa.glade:532 +msgid "t_o" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:177 emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 1" +#: src/emc/usr_intf/stepconf/axisx.glade:677 +#: src/emc/usr_intf/stepconf/axisy.glade:663 +#: src/emc/usr_intf/stepconf/axisz.glade:663 +#: src/emc/usr_intf/stepconf/axisa.glade:677 +msgid "s" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:177 emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 2" +#: src/emc/usr_intf/stepconf/axisx.glade:738 +#: src/emc/usr_intf/stepconf/axisy.glade:724 +#: src/emc/usr_intf/stepconf/axisz.glade:724 +#: src/emc/usr_intf/stepconf/axisa.glade:738 +msgid "T_est this axis" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:177 emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 3" +#: src/emc/usr_intf/stepconf/axisx.glade:765 +#: src/emc/usr_intf/stepconf/axisy.glade:751 +#: src/emc/usr_intf/stepconf/axisz.glade:751 +#: src/emc/usr_intf/stepconf/axisa.glade:765 +msgid "Axis SCALE:" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:203 -msgid "my-mill" +#: src/emc/usr_intf/stepconf/axisx.glade:833 +#: src/emc/usr_intf/stepconf/axisy.glade:819 +#: src/emc/usr_intf/stepconf/axisz.glade:819 +#: src/emc/usr_intf/stepconf/axisa.glade:12 +msgid "Same" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:215 emc/usr_intf/stepconf/stepconf.py:217 -#: emc/usr_intf/pncconf/pncconf.py:981 emc/usr_intf/pncconf/pncconf.py:983 -msgid "Enter Address" +#: src/emc/usr_intf/stepconf/axisx.glade:836 +#: src/emc/usr_intf/stepconf/axisy.glade:822 +#: src/emc/usr_intf/stepconf/axisz.glade:822 +#: src/emc/usr_intf/stepconf/axisa.glade:15 +msgid "Opposite" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:375 -#, python-format -msgid "File %r was modified since it was written by stepconf" +#: src/emc/usr_intf/stepconf/finished.glade:6 +msgid "" +"All the necessary information has now been gathered. \n" +"Click \"Done\" to write your configuration files to disk.\n" +"\n" +"If you experience lockups while running LinuxCNC:\n" +"-you will need to decrease the maximum velocity which will have the effect " +"of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC:\n" +"-first verify that you entered the proper timings for your stepper " +"drivers. \n" +"-then run a more thorough latency test as described on the linuxcnc.org " +"wiki.\n" +" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" +"\n" +"If you experience the \"Unexpected Realtime Delay\" message:\n" +"-run a more thorough latency test as described on the linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:378 +#: src/emc/usr_intf/pncconf/pncconf.py:81 msgid "" -"Saving this configuration file will discard configuration changes made " -"outside stepconf." +"PNCconf encountered an error. The following information may be useful in " +"troubleshooting:\n" +"\n" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:393 emc/usr_intf/pncconf/pncconf.py:1354 -msgid "Continue? " +#: src/emc/usr_intf/pncconf/pncconf.py:149 +msgid "Keling 4030" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:394 emc/usr_intf/pncconf/pncconf.py:1355 -msgid "yY" +#: src/emc/usr_intf/pncconf/pncconf.py:151 +msgid "Not Used" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:446 emc/usr_intf/stepconf/stepconf.py:786 -#, python-format -msgid "# Generated by stepconf at %s" +#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:176 +msgid "Dummy" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:447 emc/usr_intf/stepconf/stepconf.py:787 -#: emc/usr_intf/pncconf/pncconf.py:1364 emc/usr_intf/pncconf/pncconf.py:2369 -msgid "# If you make changes to this file, they will be" +#: src/emc/usr_intf/pncconf/pncconf.py:152 +msgid "8i20 Servo Drive" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:448 emc/usr_intf/stepconf/stepconf.py:788 -msgid "# overwritten when you run stepconf again" +#: src/emc/usr_intf/pncconf/pncconf.py:153 +msgid "POT Output" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:516 -msgid "# add halui MDI commands here (max 64) " +#: src/emc/usr_intf/pncconf/pncconf.py:153 +msgid "POT Enable" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:991 emc/usr_intf/pncconf/pncconf.py:2989 -msgid "# **** Setup for external estop ladder program -START ****" +#: src/emc/usr_intf/pncconf/pncconf.py:153 +msgid "POT Direction" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:998 emc/usr_intf/pncconf/pncconf.py:2996 -msgid "# **** Setup for external estop ladder program -END ****" +#: src/emc/usr_intf/pncconf/pncconf.py:154 +msgid "GPIO Input" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1018 emc/usr_intf/pncconf/pncconf.py:3023 -msgid "" -"# Load Classicladder with modbus master included (GUI must run for Modbus)" +#: src/emc/usr_intf/pncconf/pncconf.py:154 +msgid "GPIO Output" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1021 emc/usr_intf/pncconf/pncconf.py:3028 -msgid "# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI" +#: src/emc/usr_intf/pncconf/pncconf.py:154 +msgid "GPIO O Drain" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1031 emc/usr_intf/pncconf/pncconf.py:3110 -msgid "Include your PyVCP panel here.\n" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-A" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1040 -#: emc/usr_intf/stepconf/stepconf.py:1087 -msgid "# Include your customized HAL commands here" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-B" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1041 -msgid "" -"# The commands in this file are run after the AXIS GUI (including PyVCP " -"panel) starts" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-I" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1045 emc/usr_intf/pncconf/pncconf.py:3138 -msgid "# **** Setup of spindle speed display using pyvcp -START ****" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-M" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1047 -msgid "# **** Use ACTUAL spindle velocity from spindle encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "Muxed Encoder 0" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1048 -msgid "# **** spindle-velocity bounces around so we filter it with lowpass" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "Muxed Encoder 1" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1049 -msgid "" -"# **** spindle-velocity is signed so we use absolute component to remove sign" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "muxed enc" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1050 -msgid "# **** ACTUAL velocity is in RPS not RPM so we scale it." +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "mux enc mask" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1059 -msgid "# **** set up spindle at speed indicator ****" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "mux select" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1072 -msgid "" -"# **** Use COMMANDED spindle velocity from EMC because no spindle encoder " -"was specified" +#: src/emc/usr_intf/pncconf/pncconf.py:157 +msgid "Resolver 0 Encoder" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1073 -msgid "" -"# **** COMANDED velocity is signed so we use absolute component (abs.0) to " -"remove sign" +#: src/emc/usr_intf/pncconf/pncconf.py:157 +msgid "Resolver 1 Encoder" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1088 -msgid "# This file will not be overwritten when you run stepconf again" +#: src/emc/usr_intf/pncconf/pncconf.py:157 +msgid "Resolver 2 Encoder" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1095 -#, python-format -msgid "Generated by stepconf at %s" +#: src/emc/usr_intf/pncconf/pncconf.py:158 +msgid "Resolver 3 Encoder" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1166 emc/usr_intf/pncconf/pncconf.py:3449 -#, python-format -msgid "launch %s" +#: src/emc/usr_intf/pncconf/pncconf.py:158 +msgid "Resolver 4 Encoder" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1170 -msgid "Desktop Launcher for EMC config made by Stepconf" +#: src/emc/usr_intf/pncconf/pncconf.py:158 +msgid "Resolver 5 Encoder" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1196 emc/usr_intf/pncconf/pncconf.py:3698 -#, python-format -msgid "%s Axis Configuration" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Step Gen-A" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1238 -#: emc/usr_intf/stepconf/stepconf.py:1337 -msgid "Other" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Dir Gen-B" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1249 -msgid "Quit Stepconf and discard changes?" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Step/Dir Gen-C" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1280 -msgid "" -"You are using a simulated-realtime version of EMC, so testing / tuning of " -"hardware is unavailable." +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Step/Dir Gen-D" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1283 -msgid "" -"You are using a realtime version of EMC but didn't load a realtime kernel so " -"testing / tuning of hardware is unavailable.\n" -"This is possibly because you updated the OS and it doesn't automatically " -"load the RTAI kernel anymore.\n" +#: src/emc/usr_intf/pncconf/pncconf.py:160 +msgid "Step/Dir Gen-E" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1298 -msgid "EMC2 'stepconf' configuration files" +#: src/emc/usr_intf/pncconf/pncconf.py:160 +msgid "Step/dir Gen-F" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1299 emc/usr_intf/pncconf/pncconf.py:4092 -msgid "Modify Existing Configuration" +#: src/emc/usr_intf/pncconf/pncconf.py:161 +msgid "Pulse Width Gen-P" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1439 -msgid "" -"You need to designate an E-stop input pin in the Parallel Port Setup page " -"for this program." +#: src/emc/usr_intf/pncconf/pncconf.py:161 +msgid "Pulse Width Gen-D" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1452 -msgid "" -"OK to replace existing custom ladder program?\n" -"Existing Custom.clp will be renamed custom_backup.clp.\n" -"Any existing file named -custom_backup.clp- will be lost. " +#: src/emc/usr_intf/pncconf/pncconf.py:161 +msgid "Pulse Width Gen-E" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1457 emc/usr_intf/pncconf/pncconf.py:7809 -msgid "" -"You edited a ladder program and have selected a different program to copy to " -"your configuration file.\n" -"The edited program will be lost.\n" -"\n" -"Are you sure? " +#: src/emc/usr_intf/pncconf/pncconf.py:162 +msgid "Pulse Density Gen-P" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1471 -msgid "" -"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" -"Existing custompanel.xml and custom_postgui.hal will be renamed " -"custompanel_backup.xml and postgui_backup.hal.\n" -"Any existing file named custompanel_backup.xml and custom_postgui.hal will " -"be lost. " +#: src/emc/usr_intf/pncconf/pncconf.py:162 +msgid "Pulse Density Gen-D" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1676 -msgid "degree / rev" +#: src/emc/usr_intf/pncconf/pncconf.py:162 +msgid "Pulse Density Gen-E" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1677 -#: emc/usr_intf/stepconf/stepconf.py:2205 -msgid "deg / s" +#: src/emc/usr_intf/pncconf/pncconf.py:163 +msgid "Up/Down Mode -Up" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1678 -#: emc/usr_intf/stepconf/stepconf.py:2206 -msgid "deg / s²" +#: src/emc/usr_intf/pncconf/pncconf.py:163 +msgid "Up/Down Mode-Down" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1679 -#: emc/usr_intf/stepconf/stepconf.py:2207 -msgid "deg" +#: src/emc/usr_intf/pncconf/pncconf.py:163 +msgid "Up/Down Mode-Enable" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1680 -msgid "Steps / deg" +#: src/emc/usr_intf/pncconf/pncconf.py:164 +msgid "Motor Phase A" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1682 -#: emc/usr_intf/stepconf/stepconf.glade:3589 -#: emc/usr_intf/pncconf/pncconf.glade:66117 -#: emc/usr_intf/pncconf/pncconf.glade:66403 -msgid "mm / rev" +#: src/emc/usr_intf/pncconf/pncconf.py:164 +msgid "Motor Phase B" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1683 -#: emc/usr_intf/stepconf/stepconf.py:2219 -#: emc/usr_intf/stepconf/stepconf.glade:3604 -#: emc/usr_intf/pncconf/pncconf.glade:57828 -msgid "mm / s" +#: src/emc/usr_intf/pncconf/pncconf.py:164 +msgid "Motor Phase C" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1684 -#: emc/usr_intf/stepconf/stepconf.py:2220 -#: emc/usr_intf/stepconf/stepconf.glade:3619 -#: emc/usr_intf/pncconf/pncconf.glade:57813 -msgid "mm / s²" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Phase A Not" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1686 -#: emc/usr_intf/stepconf/stepconf.glade:3075 -#: emc/usr_intf/pncconf/pncconf.glade:66867 -msgid "Steps / mm" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Phase B Not" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1688 -msgid "rev / in" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Phase C Not" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1689 -#: emc/usr_intf/stepconf/stepconf.py:2233 -msgid "in / s" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Enable" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1690 -#: emc/usr_intf/stepconf/stepconf.py:2234 -msgid "in / s²" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Fault" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:1692 -msgid "Steps / in" +#: src/emc/usr_intf/pncconf/pncconf.py:168 +msgid "SMARTSERIAL-P0-TX" msgstr "" -#: emc/usr_intf/stepconf/stepconf.py:2202 emc/usr_intf/pncconf/pncconf.py:8885 -#, python-format -msgid "%s Axis Test" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P0-RX" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:8 -#: emc/usr_intf/stepconf/stepconf.glade:21 -msgid "EMC2 Stepper Mill Configuration" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P0-EN" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:22 -msgid "" -"This program creates configuration files (.ini and .hal) for \"step and " -"direction\" milling machines and lathes connected to the PC parallel port.\n" -"\n" -"Stepconf requires a minimum 800 X 600 display resolution.\n" -"You may need to collapse the 'Driver Timing Settings' and \n" -"Parallel Port Settings' expanders." +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-TX" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:51 -msgid "Create a _new configuration" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-RX" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:69 -#: emc/usr_intf/pncconf/pncconf.glade:70 -msgid "Modify a configuration already created with this program" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-EN" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:87 -#: emc/usr_intf/pncconf/pncconf.glade:88 -msgid "Do you wish to:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-TX" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:99 -#: emc/usr_intf/pncconf/pncconf.glade:100 -msgid "" -"If you have made modifications to this configuration outside this program, " -"they will be lost when you select \"Modify a configuration\"" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-RX" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:116 -msgid "Create a desktop _shortcut (symlink) to configuration files." +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-EN" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:133 -msgid "Create a desktop _launcher to start EMC with this configuration." +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-TX" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:169 -#: emc/usr_intf/pncconf/pncconf.glade:175 -msgid "Basic machine information" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-RX" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:327 -msgid "Step _Time:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-EN" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:356 -#: emc/usr_intf/stepconf/stepconf.glade:402 -#: emc/usr_intf/stepconf/stepconf.glade:449 -#: emc/usr_intf/stepconf/stepconf.glade:494 -#: emc/usr_intf/stepconf/stepconf.glade:909 -#: emc/usr_intf/pncconf/pncconf.glade:458 -#: emc/usr_intf/pncconf/pncconf.glade:8256 -msgid "ns" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-TX" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:369 -msgid "Step _Space:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-RX" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:417 -msgid "Direction _Hold:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-EN" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:464 -msgid "_Direction Setup:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-TX" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:512 -msgid "Driver Timing Settings" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-RX" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:538 -msgid "First Parport _Base Address:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-EN" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:564 -msgid " Out" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-TX" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:575 -#: emc/usr_intf/stepconf/stepconf.glade:591 -#: emc/usr_intf/pncconf/pncconf.glade:708 -#: emc/usr_intf/pncconf/pncconf.glade:720 -#: emc/usr_intf/pncconf/pncconf.glade:733 -msgid "" -"In\n" -"Out" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-RX" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:633 -msgid "S_econd Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-EN" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:650 -msgid "T_hird Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-TX" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:667 -msgid " Parallel Port Settings" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-RX" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:684 -msgid "" -"_Test Base\n" -"Period Jitter " +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-EN" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:703 -msgid "Machine _Name:" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS0)" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:716 -msgid "_Axis configuration:" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS2)" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:730 -msgid "Machine _units:" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS3)" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:744 -#: emc/usr_intf/pncconf/pncconf.glade:246 -msgid "Configuration directory:" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 I/O (SS0)" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:757 -msgid "D_river type:" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 Analog (SS1)" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:785 -#: emc/usr_intf/pncconf/pncconf.glade:326 -msgid "" -"Inch\n" -"Millimeter" +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 I/O (SS3)" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:800 -#: emc/usr_intf/pncconf/pncconf.glade:291 -msgid "" -"XYZ\n" -"XYZA\n" -"XZ (Lathe)" +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 Analog (SS4)" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:847 -msgid "" -"Driver characteristics: (Multiply by 1000 for times specified in µs or " -"microseconds)\n" -" Additional signal conditioning or isolation such as optocouplers " -"and RC filters\n" -" can impose timing constraints of their own, in addition to those of " -"the driver." +#: src/emc/usr_intf/pncconf/pncconf.py:176 +msgid "Analog Input" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:875 -msgid "Base Period Maximum _Jitter:" +#: src/emc/usr_intf/pncconf/pncconf.py:277 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +msgid "Axis Selection" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:924 -msgid "Max step rate:" +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "" +"7i64-Input\n" +"P3 and P4" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:940 -msgid "Min Base Period:" +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "" +"7i64-Output\n" +"P2 and P5" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:956 -msgid "" -"_Onscreen prompt for\n" -"tool change" +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "7i64-Analog In" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1015 -msgid "Advanced Configuration Options" +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P2" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1033 -msgid "Include Halui user interface component" +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P3" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1074 -#: emc/usr_intf/pncconf/pncconf.glade:6745 -msgid "Blank program" +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB3" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1089 -#: emc/usr_intf/pncconf/pncconf.glade:6760 -msgid "Spindle speed display " +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB2" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1105 -#: emc/usr_intf/stepconf/stepconf.glade:1543 -#: emc/usr_intf/pncconf/pncconf.glade:6791 -#: emc/usr_intf/pncconf/pncconf.glade:7112 -#: emc/usr_intf/pncconf/pncconf.glade:59393 -msgid "Existing custom program" +#: src/emc/usr_intf/pncconf/pncconf.py:309 +msgid "" +"7i71-Output\n" +"TB3" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1120 -#: emc/usr_intf/stepconf/stepconf.glade:1559 -#: emc/usr_intf/pncconf/pncconf.glade:6806 -#: emc/usr_intf/pncconf/pncconf.glade:59409 -msgid "Include connections to HAL" +#: src/emc/usr_intf/pncconf/pncconf.py:309 +msgid "" +"7i71-Output\n" +"TB2" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1154 -#: emc/usr_intf/pncconf/pncconf.glade:6989 -#: emc/usr_intf/pncconf/pncconf.glade:7537 +#: src/emc/usr_intf/pncconf/pncconf.py:317 msgid "" -"_Display\n" -"sample\n" -"panel" +"7i76-I/O\n" +"TB6" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1188 -#: emc/usr_intf/pncconf/pncconf.glade:7048 -msgid "Include custom PyVCP GUI panel" +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-I/O\n" +"TB5" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1321 -#: emc/usr_intf/pncconf/pncconf.glade:59199 -msgid " Number of analog (float) out pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-Analog Output\n" +"TB4" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1335 -#: emc/usr_intf/pncconf/pncconf.glade:59184 -msgid " Number of analog (float) in pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB8" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1349 -#: emc/usr_intf/pncconf/pncconf.glade:59169 -msgid " Number of analog (s32) out pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB7" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1363 -#: emc/usr_intf/pncconf/pncconf.glade:59153 -msgid " Number of analog (s32) in pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-Analog Output\n" +"TB5" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1378 -msgid "Number of digital out pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:333 +msgid "7i73-I/O\n" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1403 -msgid "Number of digital in pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:348 +msgid "Unused Unused" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1414 -msgid "setup number of external pins" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "Machine Is Enabled" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1429 -#: emc/usr_intf/pncconf/pncconf.glade:59213 -msgid "Include modbus master support" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "X Amplifier Enable" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1500 -#: emc/usr_intf/pncconf/pncconf.glade:59333 -msgid "Blank ladder program" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "Y Amplifier Enable" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1513 -#: emc/usr_intf/pncconf/pncconf.glade:59346 -msgid "Estop ladder program" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "Z Amplifier Enable" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1527 -#: emc/usr_intf/pncconf/pncconf.glade:59377 -msgid "Serial modbus program" +#: src/emc/usr_intf/pncconf/pncconf.py:371 +msgid "A Amplifier Enable" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1592 -#: emc/usr_intf/pncconf/pncconf.glade:59443 -msgid "" -"Edit ladder\n" -"program" +#: src/emc/usr_intf/pncconf/pncconf.py:371 +msgid "Force Pin True" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1628 -#: emc/usr_intf/pncconf/pncconf.glade:59479 -msgid "Include _Classicladder PLC" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X HALL 1" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1653 -msgid "Parallel Port Setup" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X HALL 2" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1760 -#: emc/usr_intf/pncconf/pncconf.glade:54010 -msgid "Pin _1:" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X HALL 3" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1774 -#: emc/usr_intf/pncconf/pncconf.glade:54024 -#: emc/usr_intf/pncconf/pncconf.glade:55239 -msgid "Pin _2:" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C1" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1788 -#: emc/usr_intf/pncconf/pncconf.glade:54038 -#: emc/usr_intf/pncconf/pncconf.glade:55256 -msgid "Pin _3:" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C2" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1802 -#: emc/usr_intf/pncconf/pncconf.glade:54052 -#: emc/usr_intf/pncconf/pncconf.glade:55273 -msgid "Pin _4:" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C4" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1816 -#: emc/usr_intf/pncconf/pncconf.glade:54066 -#: emc/usr_intf/pncconf/pncconf.glade:55290 -msgid "Pin _5:" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C8" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1830 -#: emc/usr_intf/pncconf/pncconf.glade:54080 -#: emc/usr_intf/pncconf/pncconf.glade:55307 -msgid "Pin _6:" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y HALL 1" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1844 -#: emc/usr_intf/pncconf/pncconf.glade:54094 -#: emc/usr_intf/pncconf/pncconf.glade:55324 -msgid "Pin _7:" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y HALL 2" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1858 -#: emc/usr_intf/pncconf/pncconf.glade:54108 -#: emc/usr_intf/pncconf/pncconf.glade:55341 -msgid "Pin _8:" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y HALL 3" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1872 -#: emc/usr_intf/pncconf/pncconf.glade:54122 -#: emc/usr_intf/pncconf/pncconf.glade:55358 -msgid "Pin _9:" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C1" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1886 -#: emc/usr_intf/pncconf/pncconf.glade:54136 -msgid "_Pin 14:" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C2" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1900 -#: emc/usr_intf/pncconf/pncconf.glade:54150 -msgid "P_in 16:" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C4" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:1914 -#: emc/usr_intf/pncconf/pncconf.glade:54164 -msgid "Pi_n 17:" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C8" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:2258 -msgid "Outputs (PC to Mill):" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z HALL 1" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:2270 -#: emc/usr_intf/pncconf/pncconf.glade:55222 -msgid "Pin 1_0:" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z HALL 2" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:2286 -#: emc/usr_intf/pncconf/pncconf.glade:55206 -msgid "Pin 1_1:" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z HALL 3" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:2302 -#: emc/usr_intf/pncconf/pncconf.glade:55190 -msgid "Pin 1_2:" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C1" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:2318 -#: emc/usr_intf/pncconf/pncconf.glade:55174 -msgid "Pin 1_3:" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C2" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:2334 -#: emc/usr_intf/pncconf/pncconf.glade:55158 -msgid "Pin 1_5:" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C4" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:2399 -msgid "Inputs (Mill to PC):" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C8" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:2425 -#: emc/usr_intf/stepconf/stepconf.glade:2438 -#: emc/usr_intf/pncconf/pncconf.glade:54578 -#: emc/usr_intf/pncconf/pncconf.glade:54591 -msgid "Invert" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A HALL 1" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:2887 -msgid "_Sherline Outputs" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A HALL 2" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:2905 -msgid "_Xylotex Outputs" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A HALL 3" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:2923 -msgid "Output pinout presets:" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C1" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:3022 -#: emc/usr_intf/pncconf/pncconf.glade:57970 -msgid "X Axis Configuration" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C2" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:3090 -msgid "_Motor steps per revolution:" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C4" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:3103 -msgid "_Driver Microstepping:" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C8" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:3118 -msgid "_Pulley teeth (Motor:Leadscrew):" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S HALL 1" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:3133 -msgid "_Leadscrew Pitch:" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S HALL 2" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:3148 -#: emc/usr_intf/pncconf/pncconf.glade:57858 -msgid "Maximum _Velocity:" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S HALL 3" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:3163 -#: emc/usr_intf/pncconf/pncconf.glade:57843 -msgid "Maximum _Acceleration:" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C1" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:3178 -#: emc/usr_intf/pncconf/pncconf.glade:67042 -msgid "Time to accelerate to max speed:" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C2" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:3193 -msgid "Distance to accelerate to max speed:" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C4" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:3292 -#: emc/usr_intf/pncconf/pncconf.glade:67015 -msgid "Pulse rate at max speed:" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C8" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:3362 -msgid "_Home location:" +#: src/emc/usr_intf/pncconf/pncconf.py:378 +msgid "Unused Output" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:3377 -msgid "Home _Switch location:" +#: src/emc/usr_intf/pncconf/pncconf.py:378 +msgid "Coolant" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:3392 -msgid "Home Sear_ch velocity:" +#: src/emc/usr_intf/pncconf/pncconf.py:379 +msgid "Control" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:3407 -msgid "Home La_tch direction:" +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +msgid "Digital" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:3420 -#: emc/usr_intf/pncconf/pncconf.glade:66211 -#: emc/usr_intf/pncconf/pncconf.glade:66253 -#: emc/usr_intf/pncconf/pncconf.glade:66484 -#: emc/usr_intf/pncconf/pncconf.glade:66549 -msgid "_:" +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:410 +msgid "X BLDC Control" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:3437 -#: emc/usr_intf/pncconf/pncconf.glade:58536 -msgid "" -"Same\n" -"Opposite" +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 +msgid "Y BLDC Control" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:3492 -msgid "Tab_le travel:" +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 +msgid "Z BLDC Control" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:3519 -msgid "t_o" +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 +msgid "A BLDC Control" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:3649 -msgid "s" +#: src/emc/usr_intf/pncconf/pncconf.py:381 +msgid " S BLDC Control" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:3703 -msgid "T_est this axis" +#: src/emc/usr_intf/pncconf/pncconf.py:381 +#: src/emc/usr_intf/pncconf/pncconf.py:412 +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#: src/emc/usr_intf/pncconf/pncconf.py:516 +#: src/emc/usr_intf/pncconf/pncconf.py:519 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.py:528 +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#: src/emc/usr_intf/pncconf/pncconf.py:568 +#: src/emc/usr_intf/pncconf/pncconf.py:580 +msgid "Custom Signals" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:3729 -msgid "Axis SCALE:" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 +msgid "X Minimum Limit" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:3765 -msgid "Spindle Configuration" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 +msgid "Y Minimum Limit" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:3785 -msgid "Use spindle-at-speed:" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 +msgid "Z Minimum Limit" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:3841 -msgid "Speed display filter gain:" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 +msgid "A Minimum Limit" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:3870 -msgid "Calibration:" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 +msgid "X Maximum Limit" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:3883 -msgid "_Speed 1:" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 +msgid "Y Maximum Limit" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:3898 -msgid "_PWM 1:" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 +msgid "Z Maximum Limit" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:3916 -msgid "S_peed 2:" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 +msgid "A Maximum Limit" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:3931 -msgid "P_WM 2:" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 +msgid "X Both Limit" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:3949 -msgid "PWM _Rate:" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 +msgid "Y Both Limit" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:4025 -msgid "_Cycles per revolution:" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 +msgid "Z Both Limit" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:4079 -msgid "Enter 0 Hz for \"PDM\" mode" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 +msgid "A Both Limit" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:4091 -msgid "Scale %" +#: src/emc/usr_intf/pncconf/pncconf.py:386 +#: src/emc/usr_intf/pncconf/pncconf.py:477 +msgid "All Limits" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:4113 -#: emc/usr_intf/pncconf/pncconf.glade:59981 -msgid "Machine configuration complete" +#: src/emc/usr_intf/pncconf/pncconf.py:387 +msgid "X Home" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:4114 -#: emc/usr_intf/pncconf/pncconf.glade:59982 -msgid "" -"All the necessary information has now been gathered. Click \"Apply\" to " -"write your configuration files to disk.\n" -"If you experience lockups while running emc, you will need to decrease the " -"maximum velocity which will have the effect of increasing BASE_PERIOD.\n" -"\n" -"If you experience lost steps while running emc, first verify that you " -"entered the proper timings for your stepper drivers. If that does not fix " -"the problem, then run a more thorough latency test as described on the " -"linuxcnc.org wiki:\n" -" http;//wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting\n" -"\n" -"If you experience the \"Unexpected Realtime Delay\" message, run a more " -"thorough latency test as described on the linuxcnc.org wiki: \n" -" http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting" +#: src/emc/usr_intf/pncconf/pncconf.py:387 +msgid "Y Home" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:4160 -#: emc/usr_intf/pncconf/pncconf.glade:60441 -#: emc/usr_intf/pncconf/pncconf.glade:61536 -#: emc/usr_intf/pncconf/pncconf.glade:62629 -#: emc/usr_intf/pncconf/pncconf.glade:63722 -#: emc/usr_intf/pncconf/pncconf.glade:64821 -msgid "Acceleration:" +#: src/emc/usr_intf/pncconf/pncconf.py:387 +msgid "Z Home" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:4174 -#: emc/usr_intf/pncconf/pncconf.glade:60210 -#: emc/usr_intf/pncconf/pncconf.glade:60674 -#: emc/usr_intf/pncconf/pncconf.glade:61767 -#: emc/usr_intf/pncconf/pncconf.glade:62860 -#: emc/usr_intf/pncconf/pncconf.glade:63953 -#: emc/usr_intf/pncconf/pncconf.glade:64933 -msgid "Jog:" +#: src/emc/usr_intf/pncconf/pncconf.py:387 +msgid "A Home" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:4188 -#: emc/usr_intf/pncconf/pncconf.glade:60660 -#: emc/usr_intf/pncconf/pncconf.glade:61753 -#: emc/usr_intf/pncconf/pncconf.glade:62846 -#: emc/usr_intf/pncconf/pncconf.glade:63939 -msgid "Test Area:" +#: src/emc/usr_intf/pncconf/pncconf.py:387 +msgid "All Home" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:4217 -msgid "mm/s^2" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 +msgid "X Minimum Limit + Home" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:4253 -msgid "mm/s" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 +msgid "Y Minimum Limit + Home" msgstr "" -#: emc/usr_intf/stepconf/stepconf.glade:4329 -#: emc/usr_intf/pncconf/pncconf.glade:60599 -#: emc/usr_intf/pncconf/pncconf.glade:61692 -#: emc/usr_intf/pncconf/pncconf.glade:62785 -#: emc/usr_intf/pncconf/pncconf.glade:63878 -#: emc/usr_intf/pncconf/pncconf.glade:65045 -msgid "" -"±\n" -"+\n" -"-\n" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 +msgid "Z Minimum Limit + Home" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:79 -msgid "" -"PNCconf encountered an error. The following information may be useful in " -"troubleshooting:\n" -"\n" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 +msgid "A Minimum Limit + Home" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:149 -msgid "Not Used" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 +msgid "X Maximum Limit + Home" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:149 emc/usr_intf/pncconf/pncconf.py:150 -msgid "Dummy" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 +msgid "Y Maximum Limit + Home" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:150 -msgid "8i20 Servo Drive" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 +msgid "Z Maximum Limit + Home" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:151 -msgid "POT Output" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 +msgid "A Maximum Limit + Home" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:151 -msgid "POT Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 +msgid "X Both Limit + Home" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:151 -msgid "POT Direction" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 +msgid "Y Both Limit + Home" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:152 -msgid "GPIO Input" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 +msgid "Z Both Limit + Home" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:152 -msgid "GPIO Output" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 +msgid "A Both Limit + Home" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:152 -msgid "GPIO O Drain" +#: src/emc/usr_intf/pncconf/pncconf.py:392 +msgid "Joint select A" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-A" +#: src/emc/usr_intf/pncconf/pncconf.py:392 +msgid "Joint select B" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-B" +#: src/emc/usr_intf/pncconf/pncconf.py:392 +msgid "Joint select C" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-I" +#: src/emc/usr_intf/pncconf/pncconf.py:392 +msgid "Joint select D" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-M" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr A" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:154 -msgid "Muxed Encoder 0" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr B" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:154 -msgid "Muxed Encoder 1" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr C" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:154 -msgid "muxed enc" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr D" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:154 -msgid "mux enc mask" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Feed Override incr A" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:154 -msgid "mux select" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Feed Override incr B" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:155 -msgid "Resolver 0 Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:394 +msgid "Feed Override incr C" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:155 -msgid "Resolver 1 Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:394 +msgid "Feed Override incr D" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:155 -msgid "Resolver 2 Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:394 +msgid "Spindle Override incr A" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:156 -msgid "Resolver 3 Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:394 +msgid "Spindle Override incr B" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:156 -msgid "Resolver 4 Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:395 +msgid "Spindle Override incr C" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:156 -msgid "Resolver 5 Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:395 +msgid "Spindle Override incr D" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:157 -msgid "Step Gen-A" +#: src/emc/usr_intf/pncconf/pncconf.py:395 +msgid "Max Vel Override incr A" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:157 -msgid "Dir Gen-B" +#: src/emc/usr_intf/pncconf/pncconf.py:395 +msgid "Max Vel Override incr B" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:157 -msgid "Step/Dir Gen-C" +#: src/emc/usr_intf/pncconf/pncconf.py:396 +msgid "Max Vel Override incr C" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:157 -msgid "Step/Dir Gen-D" +#: src/emc/usr_intf/pncconf/pncconf.py:396 +msgid "Max Vel Override incr D" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:158 -msgid "Step/Dir Gen-E" +#: src/emc/usr_intf/pncconf/pncconf.py:396 +msgid "Feed Override enable" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:158 -msgid "Step/dir Gen-F" +#: src/emc/usr_intf/pncconf/pncconf.py:396 +msgid "Spindle Override enable" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:159 -msgid "Pulse Width Gen-P" +#: src/emc/usr_intf/pncconf/pncconf.py:397 +msgid "Max Vel Override enable" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:159 -msgid "Pulse Width Gen-D" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +msgid "Manual Spindle CW" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:159 -msgid "Pulse Width Gen-E" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +msgid "Manual Spindle CCW" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:160 -msgid "Pulse Density Gen-P" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +msgid "Manual Spindle Stop" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:160 -msgid "Pulse Density Gen-D" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +msgid "Spindle Up-To-Speed" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:160 -msgid "Pulse Density Gen-E" +#: src/emc/usr_intf/pncconf/pncconf.py:399 +msgid "Cycle Start" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:161 -msgid "Up/Down Mode -Up" +#: src/emc/usr_intf/pncconf/pncconf.py:399 +msgid "Abort" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:161 -msgid "Up/Down Mode-Down" +#: src/emc/usr_intf/pncconf/pncconf.py:399 +msgid "Single Step" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:161 -msgid "Up/Down Mode-Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 +msgid "Jog X +" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:162 -msgid "Motor Phase A" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 +msgid "Jog X -" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:162 -msgid "Motor Phase B" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 +msgid "Jog Y +" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:162 -msgid "Motor Phase C" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 +msgid "Jog Y -" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Phase A Not" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 +msgid "Jog Z +" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Phase B Not" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 +msgid "Jog Z -" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Phase C Not" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 +msgid "Jog A +" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 +msgid "Jog A -" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Fault" +#: src/emc/usr_intf/pncconf/pncconf.py:407 +msgid "Jog button selected +" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:165 -msgid "SMARTSERIAL-P0-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:407 +msgid "Jog button selected -" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P0-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Unused Input" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P0-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Limits" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Limts/Home Shared" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:409 +msgid "Overrides" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:410 +msgid "Operation" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:410 +msgid "External Control" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:410 +msgid "Axis rapid" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:412 +msgid "S BLDC Control" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:487 +msgid "Unused PWM Gen" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:487 +msgid "X Axis PWM" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:487 +msgid "Y Axis PWM" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:488 +msgid "Z Axis PWM" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:488 +msgid "A Axis PWM" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +msgid "X Encoder" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +msgid "Y Encoder" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +msgid "Z Encoder" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +msgid "A Encoder" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +msgid "Spindle Encoder" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "X Hand Wheel" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "Y Hand Wheel" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "Z Hand Wheel" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "A Hand Wheel" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "Multi Hand Wheel" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #1" +#: src/emc/usr_intf/pncconf/pncconf.py:514 +msgid "Feed Override" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #2" +#: src/emc/usr_intf/pncconf/pncconf.py:514 +msgid "spindle Override" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:420 -msgid "Unused Unused" +#: src/emc/usr_intf/pncconf/pncconf.py:514 +msgid "Max Vel Override" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:442 -msgid "Machine Is Enabled" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "Unused Encoder" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:442 -msgid "X Amplifier Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "Axis Encoder" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:442 -msgid "Y Amplifier Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "MPG Jog Controls" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:442 -msgid "Z Amplifier Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "Override MPG control" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:443 -msgid "A Amplifier Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "Unused Resolver" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:443 -msgid "Force Pin True" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "X Resolver" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:445 emc/usr_intf/pncconf/pncconf.py:472 -msgid "X HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "Y Resolver" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:445 emc/usr_intf/pncconf/pncconf.py:472 -msgid "X HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "Z Resolver" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:445 emc/usr_intf/pncconf/pncconf.py:472 -msgid "X HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:519 +msgid "A Resolver" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:445 emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:519 +msgid "S Resolver" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:445 emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +msgid "Unused 8I20" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:445 emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "X Axis" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:445 emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Y Axis" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:446 emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Z Axis" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:446 emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "A Axis" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:446 emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:528 +msgid "Unused Analog Output" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:446 emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:528 +msgid "Spindle Output" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:446 emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:551 +msgid "Unused StepGen" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:446 emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:551 +msgid "X Axis StepGen" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:446 emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:551 +msgid "Y Axis StepGen" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:447 emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:551 +msgid "Z Axis StepGen" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:447 emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:552 +msgid "A Axis StepGen" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:447 emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:552 +msgid "Spindle StepGen" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:447 emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:552 +msgid "X2 Tandem StepGen" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:447 emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:552 +msgid "Y2 Tandem StepGen" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:447 emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:553 +msgid "Z2 Tandem StepGen" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:447 emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:553 +msgid "Charge Pump StepGen" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:448 emc/usr_intf/pncconf/pncconf.py:475 -msgid "A HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:567 +msgid "Unused TPPWM Gen" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:448 emc/usr_intf/pncconf/pncconf.py:475 -msgid "A HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:567 +msgid "X Axis BL Driver" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:448 emc/usr_intf/pncconf/pncconf.py:475 -msgid "A HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:567 +msgid "Y Axis BL Driver" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:448 emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:568 +msgid "Z Axis BL Driver" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:448 emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:568 +msgid "A Axis BL Driver" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:448 emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:568 +msgid "S Axis BL Driver" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:448 emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +#: src/emc/usr_intf/pncconf/pncconf.py:6882 +msgid "Unused Channel" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:449 emc/usr_intf/pncconf/pncconf.py:476 -msgid "S HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +msgid "8i20 Amplifier Card" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:449 emc/usr_intf/pncconf/pncconf.py:476 -msgid "S HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +msgid "7i64 I/O Card" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:449 emc/usr_intf/pncconf/pncconf.py:476 -msgid "S HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +msgid "7i69 I/O Card" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:449 emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i70 I/O Card" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:449 emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i71 I/O Card" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:449 emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i76 Mode 0 I/O Card" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:449 emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i77 Mode 0 I/O Card" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:450 -msgid "Unused Output" +#: src/emc/usr_intf/pncconf/pncconf.py:578 +msgid "7i73 Mode 1 Pendant Card" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:450 emc/usr_intf/pncconf/pncconf.py:480 -#: emc/usr_intf/pncconf/pncconf.py:593 -msgid "Spindle" +#: src/emc/usr_intf/pncconf/pncconf.py:580 +msgid "Unused Analog In" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:450 -msgid "Coolant" +#: src/emc/usr_intf/pncconf/pncconf.py:676 +msgid "my_LinuxCNC_machine" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:451 -msgid "Control" +#: src/emc/usr_intf/pncconf/pncconf.py:939 +#: src/emc/usr_intf/pncconf/pncconf.py:941 +msgid "Enter Address" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:451 emc/usr_intf/pncconf/pncconf.py:480 -msgid "Digital" +#: src/emc/usr_intf/pncconf/pncconf.py:1290 +msgid "" +"This configuration was saved with an earlier version of pncconf which may be " +"incompatible.\n" +"If it doesn't plainly cause an error, you still may want to save it with " +"another name and check it. Safer to start from scratch.\n" +"If you have a REALLY large config that you wish to convert to this newer " +"version of PNConf - ask on the LinuxCNC forum - it may be possible.." msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:451 emc/usr_intf/pncconf/pncconf.py:481 -msgid "X BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:1296 +#, python-format +msgid "File %r was modified since it was written by PNCconf" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:452 emc/usr_intf/pncconf/pncconf.py:482 -msgid "Y BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:1300 +msgid "" +"Saving this configuration file will discard configuration changes made " +"outside PNCconf." msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:452 emc/usr_intf/pncconf/pncconf.py:482 -msgid "Z BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:1327 +#: src/emc/usr_intf/pncconf/pncconf.py:2421 +#, python-format +msgid "# Generated by PNCconf at %s" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:452 emc/usr_intf/pncconf/pncconf.py:482 -msgid "A BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:1329 +#: src/emc/usr_intf/pncconf/pncconf.py:2423 +msgid "# overwritten when you run PNCconf again" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:453 -msgid " S BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:2134 +msgid "# Use ACTUAL spindle velocity from spindle encoder" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:453 emc/usr_intf/pncconf/pncconf.py:483 -#: emc/usr_intf/pncconf/pncconf.py:557 emc/usr_intf/pncconf/pncconf.py:585 -#: emc/usr_intf/pncconf/pncconf.py:588 emc/usr_intf/pncconf/pncconf.py:593 -#: emc/usr_intf/pncconf/pncconf.py:597 emc/usr_intf/pncconf/pncconf.py:614 -#: emc/usr_intf/pncconf/pncconf.py:629 -msgid "Custom Signals" +#: src/emc/usr_intf/pncconf/pncconf.py:2135 +msgid "# spindle-velocity bounces around so we filter it with lowpass" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:455 emc/usr_intf/pncconf/pncconf.py:541 -msgid "X Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:2136 +msgid "" +"# spindle-velocity is signed so we use absolute component to remove sign" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:455 emc/usr_intf/pncconf/pncconf.py:541 -msgid "Y Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:2137 +msgid "# ACTUAL velocity is in RPS not RPM so we scale it." msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:455 emc/usr_intf/pncconf/pncconf.py:542 -msgid "Z Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:2821 +msgid "# connect miscellaneous signals" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:455 emc/usr_intf/pncconf/pncconf.py:542 -msgid "A Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:2824 +msgid "# ---HALUI signals---" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:456 emc/usr_intf/pncconf/pncconf.py:543 -msgid "X Maximum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:2843 +msgid "# ---charge pump signals---" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:456 emc/usr_intf/pncconf/pncconf.py:543 -msgid "Y Maximum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:2847 +msgid "# ---coolant signals---" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:456 emc/usr_intf/pncconf/pncconf.py:544 -msgid "Z Maximum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:2852 +msgid "# ---probe signal---" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:456 emc/usr_intf/pncconf/pncconf.py:544 -msgid "A Maximum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:2857 +msgid "# ---jog button signals---" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:457 emc/usr_intf/pncconf/pncconf.py:545 -msgid "X Both Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:2862 +msgid "# ---USB device jog button signals---" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:457 emc/usr_intf/pncconf/pncconf.py:545 -msgid "Y Both Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:2903 +#: src/emc/usr_intf/pncconf/pncconf.py:2929 +msgid "# ---mpg signals---" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:457 emc/usr_intf/pncconf/pncconf.py:546 -msgid "Z Both Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:3111 +msgid "# ---motion control signals---" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:457 emc/usr_intf/pncconf/pncconf.py:546 -msgid "A Both Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:3116 +msgid "# ---digital in / out signals---" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:458 emc/usr_intf/pncconf/pncconf.py:546 -msgid "All Limits" +#: src/emc/usr_intf/pncconf/pncconf.py:3126 +msgid "# ---estop signals---" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:459 -msgid "X Home" +#: src/emc/usr_intf/pncconf/pncconf.py:3145 +msgid "# ---manual tool change signals---" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:459 -msgid "Y Home" +#: src/emc/usr_intf/pncconf/pncconf.py:3154 +msgid "# ---toolchange signals for custom tool changer---" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:459 -msgid "Z Home" +#: src/emc/usr_intf/pncconf/pncconf.py:3176 +msgid "# --- Classicladder signals for Z axis Auto touch off program---" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:459 -msgid "A Home" +#: src/emc/usr_intf/pncconf/pncconf.py:3195 +msgid "# These files are loaded post gladeVCP, in the order they appear" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:459 -msgid "All Home" +#: src/emc/usr_intf/pncconf/pncconf.py:3209 +#: src/emc/usr_intf/pncconf/pncconf.py:3276 +msgid "# _DO NOT_ include your HAL commands here." msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:460 emc/usr_intf/pncconf/pncconf.py:534 -msgid "X Minimum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:3210 +msgid "# Put custom HAL commands in custom_gvcp.hal" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:460 emc/usr_intf/pncconf/pncconf.py:534 -msgid "Y Minimum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:3213 +msgid "# **** Setup of spindle speed display using gladevcp ****" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:460 emc/usr_intf/pncconf/pncconf.py:535 -msgid "Z Minimum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:3222 +msgid "# **** Setup GLADE MDI buttons ****" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:460 emc/usr_intf/pncconf/pncconf.py:535 -msgid "A Minimum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:3235 +msgid "" +"# **** Z axis touch-off button - requires the touch-off classicladder " +"program ****" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:461 emc/usr_intf/pncconf/pncconf.py:536 -msgid "X Maximum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:3265 +msgid "# These files are loaded post GUI, in the order they appear" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:461 emc/usr_intf/pncconf/pncconf.py:536 -msgid "Y Maximum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:3277 +msgid "# Put custom HAL commands in custom_postgui.hal" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:461 emc/usr_intf/pncconf/pncconf.py:537 -msgid "Z Maximum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:3278 +msgid "# The commands in this file are run after the GUI loads" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:461 emc/usr_intf/pncconf/pncconf.py:537 -msgid "A Maximum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:3288 +msgid "# **** Setup of spindle speed display using pyvcp -END ****" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:462 emc/usr_intf/pncconf/pncconf.py:538 -msgid "X Both Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:3300 +msgid "# This file will not be overwritten when you run PNCconf again" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:462 emc/usr_intf/pncconf/pncconf.py:538 -msgid "Y Both Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:3306 +msgid "# These commands are required for Touchy GUI" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:462 emc/usr_intf/pncconf/pncconf.py:539 -msgid "Z Both Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:3358 +#, python-format +msgid "Generated by PNCconf at %s" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:462 emc/usr_intf/pncconf/pncconf.py:539 -msgid "A Both Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:3370 +msgid "configures LinuxCNC as:\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:464 -msgid "Joint select A" +#: src/emc/usr_intf/pncconf/pncconf.py:3371 +msgid "type CNC\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:464 -msgid "Joint select B" +#: src/emc/usr_intf/pncconf/pncconf.py:3372 +msgid "will be used as the frontend display" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:464 -msgid "Joint select C" +#: src/emc/usr_intf/pncconf/pncconf.py:3381 +msgid " connector" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:464 -msgid "Joint select D" +#: src/emc/usr_intf/pncconf/pncconf.py:3393 +msgid "invrt" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr A" +#: src/emc/usr_intf/pncconf/pncconf.py:3402 +#, python-format +msgid "%(name)s Parport" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr B" +#: src/emc/usr_intf/pncconf/pncconf.py:3407 +#: src/emc/usr_intf/pncconf/pncconf.py:3415 +msgid "-> inverted" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr C" +#: src/emc/usr_intf/pncconf/pncconf.py:3409 +#, python-format +msgid "pin# %(pinnum)d is connected to input signal:'%(data)s' %(mesag)s" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr D" +#: src/emc/usr_intf/pncconf/pncconf.py:3417 +#, python-format +msgid "pin# %(pinnum)d is connected to output signal:'%(data)s' %(mesag)s" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:465 -msgid "Feed Override incr A" +#: src/emc/usr_intf/pncconf/pncconf.py:3595 +msgid "Desktop Launcher for LinuxCNC config made by PNCconf" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:465 -msgid "Feed Override incr B" +#: src/emc/usr_intf/pncconf/pncconf.py:3856 +#, python-format +msgid "%s Axis Configuration" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:466 -msgid "Feed Override incr C" +#: src/emc/usr_intf/pncconf/pncconf.py:3881 +msgid "Spindle Motor/Encoder Configuration" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:466 -msgid "Feed Override incr D" +#: src/emc/usr_intf/pncconf/pncconf.py:3883 +#, python-format +msgid "%s Axis Motor/Encoder Configuration" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:466 -msgid "Spindle Override incr A" +#: src/emc/usr_intf/pncconf/pncconf.py:3912 +#, python-format +msgid "%s Parallel Port Setup" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:466 -msgid "Spindle Override incr B" +#: src/emc/usr_intf/pncconf/pncconf.py:3936 +#, python-format +msgid "%s I/0 Setup" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:467 -msgid "Spindle Override incr C" +#: src/emc/usr_intf/pncconf/pncconf.py:4162 +msgid "Quit PNCconfig and discard changes?" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:467 -msgid "Spindle Override incr D" +#: src/emc/usr_intf/pncconf/pncconf.py:4203 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Help Pages" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:467 -msgid "Max Vel Override incr A" +#: src/emc/usr_intf/pncconf/pncconf.py:4208 +msgid "Help page is unavailable\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:467 -msgid "Max Vel Override incr B" +#: src/emc/usr_intf/pncconf/pncconf.py:4218 +msgid "" +"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " +"of external hardware is unavailable." msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:468 -msgid "Max Vel Override incr C" +#: src/emc/usr_intf/pncconf/pncconf.py:4223 +#, python-format +msgid "" +"You are using a realtime version of LinuxCNC but didn't load a realtime " +"kernel so testing / tuning of external hardware is unavailable.\n" +" This is probably because you updated the OS and it doesn't load the RTAI " +"kernel anymore\n" +" You are using the %(actual)s kernel instead of %(needed)s" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:468 -msgid "Max Vel Override incr D" +#: src/emc/usr_intf/pncconf/pncconf.py:4256 +msgid "LinuxCNC 'PNCconf' configuration files" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:469 -msgid "Manual Spindle CW" +#: src/emc/usr_intf/pncconf/pncconf.py:4286 +msgid "" +"It seems data in this file is from too old of a version of PNCConf to " +"continue.\n" +"." msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:469 -msgid "Manual Spindle CCW" +#: src/emc/usr_intf/pncconf/pncconf.py:4293 +#: src/emc/usr_intf/pncconf/pncconf.py:4391 +#, python-format +msgid "Point and click configuration - %s.pncconf " msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:469 -msgid "Manual Spindle Stop" +#: src/emc/usr_intf/pncconf/pncconf.py:4413 +msgid "" +"You need to designate a parport and/or mesa I/O device before continuing." msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:469 -msgid "Spindle Up-To-Speed" +#: src/emc/usr_intf/pncconf/pncconf.py:4481 +msgid "" +"You Have choosen to re-edit the current config, so you can not go to the new/" +"modify page.\n" +" Quit and reload PNCconf if you wish to build a new config." msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:470 -msgid "Cycle Start" +#: src/emc/usr_intf/pncconf/pncconf.py:4485 +msgid "" +"If you can not go to the new/modify page your current data will be lost.\n" +"Ok to reset data and start a new configuration?" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:470 -msgid "Abort" +#: src/emc/usr_intf/pncconf/pncconf.py:4811 +msgid "USB device Info Search" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:470 -msgid "Single Step" +#: src/emc/usr_intf/pncconf/pncconf.py:4825 +msgid "USB device page is unavailable\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:477 emc/usr_intf/pncconf/pncconf.py:529 -msgid "Jog X +" +#: src/emc/usr_intf/pncconf/pncconf.py:4890 +msgid "Pin names are unavailable\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:477 emc/usr_intf/pncconf/pncconf.py:529 -msgid "Jog X -" +#: src/emc/usr_intf/pncconf/pncconf.py:4912 +msgid "Device names are unavailable\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:477 emc/usr_intf/pncconf/pncconf.py:530 -msgid "Jog Y +" +#: src/emc/usr_intf/pncconf/pncconf.py:4915 +msgid "No Pncconf made device rules were found\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:477 emc/usr_intf/pncconf/pncconf.py:530 -msgid "Jog Y -" +#: src/emc/usr_intf/pncconf/pncconf.py:5041 +msgid "" +"OK to replace existing glade panel ?\n" +"It will be renamed and added to 'backups' folder.\n" +" Clicking 'existing custom program' will avoid this warning, but if you " +"change related options later -such as spindle feedback- the HAL connection " +"will not update" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:477 emc/usr_intf/pncconf/pncconf.py:531 -msgid "Jog Z +" +#: src/emc/usr_intf/pncconf/pncconf.py:5047 +msgid "" +"OK to replace existing custom pyvcp panel?\n" +"Existing pyvcp-panel.xml will be renamed and added to 'backups' folder\n" +"Clicking 'existing custom program' will aviod this warning. " msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:477 emc/usr_intf/pncconf/pncconf.py:531 -msgid "Jog Z -" +#: src/emc/usr_intf/pncconf/pncconf.py:5493 +msgid "" +"You need to configure the mesa0 page.\n" +" Choose the board type, firmware, component amounts and press 'Accept " +"component changes' button'" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:477 emc/usr_intf/pncconf/pncconf.py:532 -msgid "Jog A +" +#: src/emc/usr_intf/pncconf/pncconf.py:5497 +msgid "" +"The chosen Mesa0 board is different from the current displayed.\n" +"please press 'Accept component changes' button'" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:477 emc/usr_intf/pncconf/pncconf.py:532 -msgid "Jog A -" +#: src/emc/usr_intf/pncconf/pncconf.py:5540 +msgid "" +"You need to configure the mesa1 page.\n" +" Choose the board type, firmware, component amounts and press 'Accept " +"component changes' button'" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:478 -msgid "Jog button selected +" +#: src/emc/usr_intf/pncconf/pncconf.py:5544 +msgid "" +"The chosen Mesa1 board is different from the current displayed.\n" +"please press 'Accept component changes' button'" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:478 -msgid "Jog button selected -" +#: src/emc/usr_intf/pncconf/pncconf.py:5558 +msgid "" +"Do to technical reasons this test panel can be loaded only once without " +"reloading pncconf.You also will not be able to do any other testing untill " +"you reload pncconf and quite possibly open a terminal and type 'halrun -U' I " +"hesitate to even allow it's use but at times it's very useful.\n" +"Do you wish to continue the test?" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:479 -msgid "Unused Input" +#: src/emc/usr_intf/pncconf/pncconf.py:7042 +msgid "First Parallel Port set for OUTPUT" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:479 -msgid "Limits" +#: src/emc/usr_intf/pncconf/pncconf.py:7044 +msgid "First Parallel Port set for INPUT" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:479 -msgid "Limts/Home Shared" +#: src/emc/usr_intf/pncconf/pncconf.py:7068 +msgid "Second Parallel Port set for OUTPUT" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:480 -msgid "Axis Selection" +#: src/emc/usr_intf/pncconf/pncconf.py:7070 +msgid "Second Parallel Port set for INPUT" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:480 -msgid "Overrides" +#: src/emc/usr_intf/pncconf/pncconf.py:7082 +msgid "Third Parallel Port set for OUTPUT" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:481 -msgid "Operation" +#: src/emc/usr_intf/pncconf/pncconf.py:7084 +msgid "Third Parallel Port set for INPUT" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:481 -msgid "External Control" +#: src/emc/usr_intf/pncconf/pncconf.py:7210 +msgid "You can not have both steppers and pwm signals for spindle control\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:481 -msgid "Axis rapid" +#: src/emc/usr_intf/pncconf/pncconf.py:7214 +#, python-format +msgid "You forgot to designate a stepper or pwm signal for axis %s\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:483 -msgid "S BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:7217 +#, python-format +msgid "You forgot to designate an encoder /resolver signal for axis %s servo\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:556 -msgid "Unused PWM Gen" +#: src/emc/usr_intf/pncconf/pncconf.py:7220 +#, python-format +msgid "You forgot to designate a pwm signal or stepper signal for axis %s\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:556 -msgid "X Axis PWM" +#: src/emc/usr_intf/pncconf/pncconf.py:7223 +#, python-format +msgid "You can not have both steppers and pwm signals for axis %s\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:556 -msgid "Y Axis PWM" +#: src/emc/usr_intf/pncconf/pncconf.py:7226 +#, python-format +msgid "" +"If using a tandem axis stepper, you must select a master stepgen for axis " +"%s\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:557 -msgid "Z Axis PWM" +#: src/emc/usr_intf/pncconf/pncconf.py:7235 +msgid "Touchy require an external cycle start signal\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:557 -msgid "A Axis PWM" +#: src/emc/usr_intf/pncconf/pncconf.py:7238 +msgid "Touchy require an external abort signal\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:581 -msgid "X Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:7241 +msgid "Touchy require an external single-step signal\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:581 -msgid "Y Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:7244 +msgid "" +"Touchy require an external multi handwheel MPG encoder signal on the mesa " +"page\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:581 -msgid "Z Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:7247 +msgid "" +"Touchy require 'external mpg jogging' to be selected on the external control " +"page\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:581 -msgid "A Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:7250 +msgid "" +"Touchy require the external mpg to be in 'shared mpg' mode on the external " +"controls page\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:581 -msgid "Spindle Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:7253 +msgid "" +"Touchy require selectable increments to be unchecked on the external " +"controls page\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:582 -msgid "X Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:7257 +msgid "" +"The 7i29 daughter board requires PWM type generators and a PWM base " +"frequency of 20 khz\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:582 -msgid "Y Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:7260 +msgid "" +"The 7i30 daughter board requires PWM type generators and a PWM base " +"frequency of 20 khz\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:582 -msgid "Z Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:7263 +msgid "" +"The 7i33 daughter board requires PDM type generators and a PDM base " +"frequency of 6 Mhz\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:582 -msgid "A Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:7266 +msgid "" +"The 7i40 daughter board requires PWM type generators and a PWM base " +"frequency of 50 khz\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:582 -msgid "Multi Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:7269 +msgid "" +"The 7i48 daughter board requires UDM type generators and a PWM base " +"frequency of 24 khz\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:583 -msgid "Feed Override" +#: src/emc/usr_intf/pncconf/pncconf.py:7494 +msgid "Gearbox Reduction Ratio" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:583 -msgid "spindle Override" +#: src/emc/usr_intf/pncconf/pncconf.py:7497 +msgid "Reduction Ratio" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:583 -msgid "Max Vel Override" +#: src/emc/usr_intf/pncconf/pncconf.py:7500 +msgid "Leadscrew Pitch" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:584 -msgid "Unused Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:7503 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Leadscrew TPI" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:584 -msgid "Axis Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:7507 +#: src/emc/usr_intf/pncconf/pncconf.py:7508 +msgid "(" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:584 -msgid "MPG Jog Controls" +#: src/emc/usr_intf/pncconf/pncconf.py:7509 +#: src/emc/usr_intf/pncconf/pncconf.py:7519 +#: src/emc/usr_intf/pncconf/pncconf.py:7520 +#: src/emc/usr_intf/pncconf/pncconf.py:7521 +msgid " / min" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:584 -msgid "Override MPG control" +#: src/emc/usr_intf/pncconf/pncconf.py:7510 +msgid " / sec²" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:587 -msgid "Unused Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:7513 +msgid " / Step" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:587 -msgid "X Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:7514 +msgid "Steps / " msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:587 -msgid "Y Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:7516 +msgid " / encoder pulse" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:587 -msgid "Z Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:7517 +msgid "Encoder pulses / " msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:588 -msgid "A Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:7525 +msgid "Resolver Scale:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:588 -msgid "S Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:7826 +msgid "Axis Scale Calculation" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:592 -msgid "Unused 8I20" +#: src/emc/usr_intf/pncconf/pncconf.py:8133 +msgid "You need to designate an E-stop input pin for this ladder program." msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:592 -#: emc/usr_intf/pncconf/pncconf.glade:61436 -msgid "X Axis" +#: src/emc/usr_intf/pncconf/pncconf.py:8145 +msgid "You need to designate a probe input pin for this ladder program." msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:592 -#: emc/usr_intf/pncconf/pncconf.glade:62528 -msgid "Y Axis" +#: src/emc/usr_intf/pncconf/pncconf.py:8156 +msgid "" +"OK to replace existing custom ladder program?\n" +"Existing Custom.clp will be renamed custom_backup.clp.\n" +"Any existing file named -custom_backup.clp- will be lost.Selecting 'existing " +"ladder program' will avoid this warning" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:592 -#: emc/usr_intf/pncconf/pncconf.glade:63621 -msgid "Z Axis" +#: src/emc/usr_intf/pncconf/pncconf.py:8374 +msgid "Do you wish to continue to edit this configuration." msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:593 -#: emc/usr_intf/pncconf/pncconf.glade:64714 -msgid "A Axis" +#: src/emc/usr_intf/pncconf/pncconf.py:8413 +msgid "PCI search page is unavailable\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:597 -msgid "Unused Analog Output" +#: src/emc/usr_intf/pncconf/pncconf.py:8532 +msgid "" +"You specified there is an existing gladefile, But there is not one in the " +"machine-named folder.." msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:597 -msgid "Spindle Output" +#: src/emc/usr_intf/pncconf/pncconf.py:8856 +msgid "Servo tuning is not avaiable in PNCconf yet\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:613 -msgid "Unused StepGen" +#: src/emc/usr_intf/pncconf/pncconf.py:8861 +msgid "degrees" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:613 -msgid "X Axis StepGen" +#: src/emc/usr_intf/pncconf/pncconf.py:8862 +msgid "degrees / minute" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:613 -msgid "Y Axis StepGen" +#: src/emc/usr_intf/pncconf/pncconf.py:8863 +msgid "degrees / second²" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:613 -msgid "Z Axis StepGen" +#: src/emc/usr_intf/pncconf/pncconf.py:8865 +msgid "revolutions" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:614 -msgid "A Axis StepGen" +#: src/emc/usr_intf/pncconf/pncconf.py:8866 +msgid "rpm" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:614 -msgid "Spindle StepGen" +#: src/emc/usr_intf/pncconf/pncconf.py:8867 +msgid "revs / second²" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:628 -msgid "Unused TPPWM Gen" +#: src/emc/usr_intf/pncconf/pncconf.py:8870 +#: src/emc/usr_intf/pncconf/pncconf.glade:65184 +#: src/emc/usr_intf/pncconf/pncconf.glade:65281 +#: src/emc/usr_intf/pncconf/pncconf.glade:65465 +msgid "mm / minute" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:628 -msgid "X Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:8871 +msgid "mm / second²" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:628 -msgid "Y Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:8874 +msgid "inches / minute" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:629 -msgid "Z Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:8875 +msgid "inches / second²" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:629 -msgid "A Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:9031 +#, python-format +msgid "%s Axis Tune" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:629 -msgid "S Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:9195 +msgid "" +" You must designate a ENCODER / RESOLVER signal and an ANALOG SPINDLE signal " +"for this axis test" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:636 emc/usr_intf/pncconf/pncconf.py:6553 -msgid "Unused Channel" +#: src/emc/usr_intf/pncconf/pncconf.py:9199 +msgid "" +" You must designate a ENCODER / RESOLVER signal and a PWM signal for this " +"axis test" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:636 -msgid "8i20 Amplifier Card" +#: src/emc/usr_intf/pncconf/pncconf.glade:8 +msgid "LinuxCNC Point And Click Configuration" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:636 -msgid "7i64 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.glade:23 +msgid "LinuxCNC Configuration Wizard Beta 1 Version" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:636 -msgid "7i69 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.glade:24 +msgid "" +"\tThis program creates configuration \n" +" files for \"Closed Loop Servo\" \n" +"\t \t and hardware stepper\n" +" \tmachines" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:637 -msgid "7i70 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.glade:34 +msgid "Create or Edit" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:637 -msgid "7i71 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.glade:66 +msgid "Create a desktop launcher to start LinuxCNC with this configuration." msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:637 -msgid "7i76 Mode 0 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.glade:83 +msgid "Create a desktop shortcut (symlink) to configuration files." msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:720 -msgid "my_EMC_machine" +#: src/emc/usr_intf/pncconf/pncconf.glade:148 +msgid "Create a new configuration" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:1326 -msgid "" -"This configuration was saved with an earlier version of pncconf which may be " -"incompatible.\n" -"If it doesn't plainly cause an error, you still may want to save it with " -"another name and check it. Safer to start from scratch.\n" -"If you have a REALLY large config that you wish to convert to this newer " -"version of PNConf - ask on the EMC forum - it may be possible.." +#: src/emc/usr_intf/pncconf/pncconf.glade:175 +msgid "Basic machine information" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:1332 -#, python-format -msgid "File %r was modified since it was written by PNCconf" +#: src/emc/usr_intf/pncconf/pncconf.glade:214 +msgid "Machine Name:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:1336 -msgid "" -"Saving this configuration file will discard configuration changes made " -"outside PNCconf." +#: src/emc/usr_intf/pncconf/pncconf.glade:280 +msgid "Axis configuration:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:1363 emc/usr_intf/pncconf/pncconf.py:2368 -#, python-format -msgid "# Generated by PNCconf at %s" +#: src/emc/usr_intf/pncconf/pncconf.glade:295 +msgid "" +"XYZ\n" +"XYZA\n" +"XZ (Lathe)" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:1365 emc/usr_intf/pncconf/pncconf.py:2370 -msgid "# overwritten when you run PNCconf again" +#: src/emc/usr_intf/pncconf/pncconf.glade:322 +msgid "Machine units:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:2088 -msgid "# Use ACTUAL spindle velocity from spindle encoder" +#: src/emc/usr_intf/pncconf/pncconf.glade:337 +msgid "" +"Inch\n" +"Millimeter" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:2089 -msgid "# spindle-velocity bounces around so we filter it with lowpass" +#: src/emc/usr_intf/pncconf/pncconf.glade:363 +msgid "Machine Basics" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:2090 -msgid "" -"# spindle-velocity is signed so we use absolute component to remove sign" +#: src/emc/usr_intf/pncconf/pncconf.glade:416 +msgid "Actual Servo Period: " msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:2091 -msgid "# ACTUAL velocity is in RPS not RPM so we scale it." +#: src/emc/usr_intf/pncconf/pncconf.glade:475 +msgid "Recommend servo period: 1000000" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:2100 +#: src/emc/usr_intf/pncconf/pncconf.glade:494 msgid "" -"# Use COMMANDED spindle velocity from EMC because no spindle encoder was " -"specified" +" Test Base\n" +"Period Jitter " msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:2101 -msgid "" -"# COMMANDED velocity is signed so we use absolute component to remove sign" +#: src/emc/usr_intf/pncconf/pncconf.glade:519 +msgid "Computer Response Time" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:2725 -msgid "# connect miscellaneous signals" +#: src/emc/usr_intf/pncconf/pncconf.glade:561 +msgid "Mesa0 PCI / Parport Card:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:2728 -msgid "# ---HALUI signals---" +#: src/emc/usr_intf/pncconf/pncconf.glade:571 +msgid "Mesa1 PCI / Parport Card:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:2747 -msgid "# ---charge pump signals---" +#: src/emc/usr_intf/pncconf/pncconf.glade:584 +msgid "First Parport Address:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:2751 -msgid "# ---coolant signals---" +#: src/emc/usr_intf/pncconf/pncconf.glade:597 +msgid "Second Parport Address:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:2756 -msgid "# ---probe signal---" +#: src/emc/usr_intf/pncconf/pncconf.glade:612 +msgid "Third Parport Address:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:2761 -msgid "# ---jog button signals---" +#: src/emc/usr_intf/pncconf/pncconf.glade:635 +#: src/emc/usr_intf/pncconf/pncconf.glade:643 +msgid "" +"5i20\n" +"5i23\n" +"5i22" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:2766 -msgid "# ---USB device jog button signals---" +#: src/emc/usr_intf/pncconf/pncconf.glade:716 +#: src/emc/usr_intf/pncconf/pncconf.glade:728 +#: src/emc/usr_intf/pncconf/pncconf.glade:741 +msgid "" +"In\n" +"Out" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:2801 emc/usr_intf/pncconf/pncconf.py:2823 -msgid "# ---mpg signals---" +#: src/emc/usr_intf/pncconf/pncconf.glade:804 +msgid "" +"Add-on PCI\n" +" Parport\n" +" Address \n" +" Search" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:2969 -msgid "# ---motion control signals---" +#: src/emc/usr_intf/pncconf/pncconf.glade:829 +msgid "I/O Control Ports/ Boards" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:2974 -msgid "# ---digital in / out signals---" +#: src/emc/usr_intf/pncconf/pncconf.glade:878 +msgid "Axis" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:2984 -msgid "# ---estop signals---" +#: src/emc/usr_intf/pncconf/pncconf.glade:893 +msgid "TKLinuxCNC" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3003 -msgid "# ---manual tool change signals---" +#: src/emc/usr_intf/pncconf/pncconf.glade:907 +msgid "Mini" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3012 -msgid "# ---toolchange signals for custom tool changer---" +#: src/emc/usr_intf/pncconf/pncconf.glade:921 +#: src/emc/usr_intf/pncconf/pncconf.glade:6656 +msgid "Touchy" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3034 -msgid "# --- Classicladder signals for Z axis Auto touch off program---" +#: src/emc/usr_intf/pncconf/pncconf.glade:938 +msgid "GUI frontend list" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3053 -msgid "# These files are loaded post gladeVCP, in the order they appear" +#: src/emc/usr_intf/pncconf/pncconf.glade:973 +msgid "External Controls" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3067 emc/usr_intf/pncconf/pncconf.py:3134 -msgid "# _DO NOT_ include your HAL commands here." +#: src/emc/usr_intf/pncconf/pncconf.glade:1014 +msgid "Add device rule" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3068 -msgid "# Put custom HAL commands in custom_gvcp.hal" +#: src/emc/usr_intf/pncconf/pncconf.glade:1027 +msgid "Test device" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3071 -msgid "# **** Setup of spindle speed display using gladevcp ****" +#: src/emc/usr_intf/pncconf/pncconf.glade:1041 +msgid "Search for device rules" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3080 -msgid "# **** Setup GLADE MDI buttons ****" +#: src/emc/usr_intf/pncconf/pncconf.glade:1062 +msgid "Device Name:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3093 -msgid "" -"# **** Z axis touch-off button - requires the touch-off classicladder " -"program ****" +#: src/emc/usr_intf/pncconf/pncconf.glade:1125 +msgid "A +" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3123 -msgid "# These files are loaded post GUI, in the order they appear" +#: src/emc/usr_intf/pncconf/pncconf.glade:1135 +msgid "A -" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3135 -msgid "# Put custom HAL commands in custom_postgui.hal" +#: src/emc/usr_intf/pncconf/pncconf.glade:1169 +#: src/emc/usr_intf/pncconf/pncconf.glade:1181 +#: src/emc/usr_intf/pncconf/pncconf.glade:1191 +#: src/emc/usr_intf/pncconf/pncconf.glade:1246 +#: src/emc/usr_intf/pncconf/pncconf.glade:1759 +msgid "mm/min " msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3136 -msgid "# The commands in this file are run after the GUI loads" +#: src/emc/usr_intf/pncconf/pncconf.glade:1269 +msgid " ab)" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3146 -msgid "# **** Setup of spindle speed display using pyvcp -END ****" +#: src/emc/usr_intf/pncconf/pncconf.glade:1282 +#: src/emc/usr_intf/pncconf/pncconf.glade:2493 +#: src/emc/usr_intf/pncconf/pncconf.glade:2927 +#: src/emc/usr_intf/pncconf/pncconf.glade:3808 +#: src/emc/usr_intf/pncconf/pncconf.glade:4689 +msgid " b)" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3158 -msgid "# This file will not be overwritten when you run PNCconf again" +#: src/emc/usr_intf/pncconf/pncconf.glade:1293 +#: src/emc/usr_intf/pncconf/pncconf.glade:2482 +#: src/emc/usr_intf/pncconf/pncconf.glade:2916 +#: src/emc/usr_intf/pncconf/pncconf.glade:3797 +#: src/emc/usr_intf/pncconf/pncconf.glade:4678 +msgid " a)" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3164 -msgid "# These commands are required for Touchy GUI" +#: src/emc/usr_intf/pncconf/pncconf.glade:1305 +#: src/emc/usr_intf/pncconf/pncconf.glade:2385 +#: src/emc/usr_intf/pncconf/pncconf.glade:2867 +#: src/emc/usr_intf/pncconf/pncconf.glade:3748 +#: src/emc/usr_intf/pncconf/pncconf.glade:4629 +msgid "default" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3216 -#, python-format -msgid "Generated by PNCconf at %s" +#: src/emc/usr_intf/pncconf/pncconf.glade:1336 +#: src/emc/usr_intf/pncconf/pncconf.glade:1476 +msgid "Jog Speed select A" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3228 -msgid "configures EMC2 as:\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1348 +msgid "X +" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3229 -msgid "type CNC\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1354 +msgid "Y +" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3230 -msgid "will be used as the frontend display" +#: src/emc/usr_intf/pncconf/pncconf.glade:1364 +msgid "Z +" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3239 -msgid " connector" +#: src/emc/usr_intf/pncconf/pncconf.glade:1374 +msgid "X -" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3251 -msgid "invrt" +#: src/emc/usr_intf/pncconf/pncconf.glade:1384 +msgid "Y -" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3260 -#, python-format -msgid "%(name)s Parport" +#: src/emc/usr_intf/pncconf/pncconf.glade:1396 +msgid "Z -" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3265 emc/usr_intf/pncconf/pncconf.py:3273 -msgid "-> inverted" +#: src/emc/usr_intf/pncconf/pncconf.glade:1500 +msgid "Digital Control" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3267 -#, python-format -msgid "pin# %(pinnum)d is connected to input signal:'%(data)s' %(mesag)s" +#: src/emc/usr_intf/pncconf/pncconf.glade:1593 +#: src/emc/usr_intf/gscreen/gscreen.glade:502 +msgid "A" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3275 -#, python-format -msgid "pin# %(pinnum)d is connected to output signal:'%(data)s' %(mesag)s" +#: src/emc/usr_intf/pncconf/pncconf.glade:1603 +#: src/emc/usr_intf/gscreen/gscreen.glade:374 +msgid "Z" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3453 -msgid "Desktop Launcher for EMC config made by PNCconf" +#: src/emc/usr_intf/pncconf/pncconf.glade:1613 +#: src/emc/usr_intf/pncconf/pncconf.glade:6134 +#: src/emc/usr_intf/pncconf/pncconf.glade:6458 +#: src/emc/usr_intf/pncconf/pncconf.glade:6860 +#: src/emc/usr_intf/pncconf/pncconf.glade:7235 +#: src/emc/usr_intf/gscreen/gscreen.glade:244 +msgid "Y" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3723 -msgid "Spindle Motor/Encoder Configuration" +#: src/emc/usr_intf/pncconf/pncconf.glade:1623 +msgid "X " msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3725 -#, python-format -msgid "%s Axis Motor/Encoder Configuration" +#: src/emc/usr_intf/pncconf/pncconf.glade:1631 +msgid "Analog Control" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3754 -#, python-format -msgid "%s Parallel Port Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:1657 +#: src/emc/usr_intf/pncconf/pncconf.glade:1788 +#: src/emc/usr_intf/pncconf/pncconf.glade:2698 +#: src/emc/usr_intf/pncconf/pncconf.glade:3579 +#: src/emc/usr_intf/pncconf/pncconf.glade:4460 +#: src/emc/usr_intf/pncconf/pncconf.glade:5341 +#: src/emc/usr_intf/pncconf/pncconf.glade:64300 +msgid "Details" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3778 -#, python-format -msgid "%s I/0 Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:1675 +msgid "USB Joystick Jogging " msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:3999 -msgid "Quit PNCconfig and discard changes?" +#: src/emc/usr_intf/pncconf/pncconf.glade:1719 +msgid "shared buttons for all axis" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:4040 -#: emc/usr_intf/pncconf/pncconf.glade:65828 -msgid "Help Pages" +#: src/emc/usr_intf/pncconf/pncconf.glade:1732 +msgid "buttons for each axis" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:4045 -msgid "Help page is unavailable\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1806 +msgid "External Button Jogging" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:4052 -msgid "" -"You are using a simulated-realtime version of EMC, so testing / tuning of " -"external hardware is unavailable." +#: src/emc/usr_intf/pncconf/pncconf.glade:1847 +msgid "Shared MPG / selectable axis" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:4057 -#, python-format -msgid "" -"You are using a realtime version of EMC but didn't load a realtime kernel so " -"testing / tuning of external hardware is unavailable.\n" -" This is probably because you updated the OS and it doesn't load the RTAI " -"kernel anymore\n" -" You are using the %(actual)s kernel instead of %(needed)s" +#: src/emc/usr_intf/pncconf/pncconf.glade:1860 +msgid "Mpg per axis" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:4077 -#, python-format -msgid "" -"You are have no hostmot2 firmware downloaded in folder:\n" -"%s\n" -"PNCconf will use sample firmware data\n" -"live testing will not be possible" +#: src/emc/usr_intf/pncconf/pncconf.glade:1875 +msgid "selectable MPG increments" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:4091 -msgid "EMC2 'PNCconf' configuration files" +#: src/emc/usr_intf/pncconf/pncconf.glade:1940 +#: src/emc/usr_intf/pncconf/pncconf.glade:3379 +#: src/emc/usr_intf/pncconf/pncconf.glade:4260 +#: src/emc/usr_intf/pncconf/pncconf.glade:5141 +msgid " d)" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:4121 -msgid "" -"It seems data in this file is from too old of a version of PNCConf to " -"continue.\n" -"." +#: src/emc/usr_intf/pncconf/pncconf.glade:1952 +#: src/emc/usr_intf/pncconf/pncconf.glade:3340 +#: src/emc/usr_intf/pncconf/pncconf.glade:4221 +#: src/emc/usr_intf/pncconf/pncconf.glade:5102 +msgid " abcd)" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:4128 emc/usr_intf/pncconf/pncconf.py:4226 -#, python-format -msgid "Point and click configuration - %s.pncconf " +#: src/emc/usr_intf/pncconf/pncconf.glade:1965 +#: src/emc/usr_intf/pncconf/pncconf.glade:3353 +#: src/emc/usr_intf/pncconf/pncconf.glade:4234 +#: src/emc/usr_intf/pncconf/pncconf.glade:5115 +msgid " bcd)" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:4248 -msgid "" -"You need to designate a parport and/or mesa I/O device before continuing." +#: src/emc/usr_intf/pncconf/pncconf.glade:1978 +#: src/emc/usr_intf/pncconf/pncconf.glade:3366 +#: src/emc/usr_intf/pncconf/pncconf.glade:4247 +#: src/emc/usr_intf/pncconf/pncconf.glade:5128 +msgid " acd)" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:4307 -msgid "" -"You Have choosen to re-edit the current config, so you can not go to the new/" -"modify page.\n" -" Quit and reload PNCconf if you wish to build a new config." +#: src/emc/usr_intf/pncconf/pncconf.glade:1991 +#: src/emc/usr_intf/pncconf/pncconf.glade:3430 +#: src/emc/usr_intf/pncconf/pncconf.glade:4311 +#: src/emc/usr_intf/pncconf/pncconf.glade:5192 +msgid " cd)" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:4311 -msgid "" -"If you can not go to the new/modify page your current data will be lost.\n" -"Ok to reset data and start a new configuration?" +#: src/emc/usr_intf/pncconf/pncconf.glade:2004 +#: src/emc/usr_intf/pncconf/pncconf.glade:3404 +#: src/emc/usr_intf/pncconf/pncconf.glade:4285 +#: src/emc/usr_intf/pncconf/pncconf.glade:5166 +msgid " bd)" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:4592 -msgid "USB device Info Search" +#: src/emc/usr_intf/pncconf/pncconf.glade:2017 +#: src/emc/usr_intf/pncconf/pncconf.glade:3391 +#: src/emc/usr_intf/pncconf/pncconf.glade:4272 +#: src/emc/usr_intf/pncconf/pncconf.glade:5153 +msgid " ad)" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:4606 -msgid "USB device page is unavailable\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2030 +#: src/emc/usr_intf/pncconf/pncconf.glade:2514 +#: src/emc/usr_intf/pncconf/pncconf.glade:3059 +#: src/emc/usr_intf/pncconf/pncconf.glade:3940 +#: src/emc/usr_intf/pncconf/pncconf.glade:4821 +msgid " abc)" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:4671 -msgid "Pin names are unavailable\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2041 +#: src/emc/usr_intf/pncconf/pncconf.glade:3026 +#: src/emc/usr_intf/pncconf/pncconf.glade:3907 +#: src/emc/usr_intf/pncconf/pncconf.glade:4788 +msgid " c)" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:4693 -msgid "Device names are unavailable\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2207 +#: src/emc/usr_intf/pncconf/pncconf.glade:3049 +#: src/emc/usr_intf/pncconf/pncconf.glade:3930 +#: src/emc/usr_intf/pncconf/pncconf.glade:4811 +msgid " bc)" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:4696 -msgid "No Pncconf made device rules were found\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2217 +#: src/emc/usr_intf/pncconf/pncconf.glade:3038 +#: src/emc/usr_intf/pncconf/pncconf.glade:3919 +#: src/emc/usr_intf/pncconf/pncconf.glade:4800 +msgid " ac)" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:4820 -msgid "" -"OK to replace existing glade panel ?\n" -"It will be renamed and added to 'backups' folder.\n" -" Clicking 'existing custom program' will aviod this warning. " +#: src/emc/usr_intf/pncconf/pncconf.glade:2504 +#: src/emc/usr_intf/pncconf/pncconf.glade:2938 +#: src/emc/usr_intf/pncconf/pncconf.glade:3819 +#: src/emc/usr_intf/pncconf/pncconf.glade:4700 +msgid " ab)" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:4825 -msgid "" -"OK to replace existing custom pyvcp panel?\n" -"Existing pyvcp-panel.xml will be renamed and added to 'backups' folder\n" -"Clicking 'existing custom program' will aviod this warning. " +#: src/emc/usr_intf/pncconf/pncconf.glade:2577 +msgid "ignore all inputs false" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:5246 -msgid "" -"You need to configure the mesa0 page.\n" -" Choose the board type, firmware, component amounts and press 'Accept " -"component changes' button'" +#: src/emc/usr_intf/pncconf/pncconf.glade:2592 +msgid "use gray code" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:5250 -msgid "" -"The chosen Mesa0 board is different from the current displayed.\n" -"please press 'Accept component changes' button'" +#: src/emc/usr_intf/pncconf/pncconf.glade:2607 +#: src/emc/usr_intf/pncconf/pncconf.glade:3489 +#: src/emc/usr_intf/pncconf/pncconf.glade:4356 +#: src/emc/usr_intf/pncconf/pncconf.glade:5237 +msgid "use debounce" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:5293 -msgid "" -"You need to configure the mesa1 page.\n" -" Choose the board type, firmware, component amounts and press 'Accept " -"component changes' button'" +#: src/emc/usr_intf/pncconf/pncconf.glade:2658 +#: src/emc/usr_intf/pncconf/pncconf.glade:3453 +#: src/emc/usr_intf/pncconf/pncconf.glade:4334 +#: src/emc/usr_intf/pncconf/pncconf.glade:5215 +msgid "Mux options" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:5297 -msgid "" -"The chosen Mesa1 board is different from the current displayed.\n" -"please press 'Accept component changes' button'" +#: src/emc/usr_intf/pncconf/pncconf.glade:2672 +msgid "increments" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:5311 -msgid "" -"Do to technical reasons this test panel can be loaded only once without " -"reloading pncconf.You also will not be able to do any other testing untill " -"you reload pncconf and quite possibly open a terminal and type 'halrun -U' I " -"hesitate to even allow it's use but at times it's very useful.\n" -"Do you wish to continue the test?" +#: src/emc/usr_intf/pncconf/pncconf.glade:2716 +msgid "External MPG Jogging" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:6695 -msgid "First Parallel Port set for OUTPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:2747 +#: src/emc/usr_intf/pncconf/pncconf.glade:3628 +#: src/emc/usr_intf/pncconf/pncconf.glade:4509 +msgid "Use MPG " msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:6697 -msgid "First Parallel Port set for INPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:2760 +#: src/emc/usr_intf/pncconf/pncconf.glade:3641 +#: src/emc/usr_intf/pncconf/pncconf.glade:4522 +msgid "use switches" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:6721 -msgid "Second Parallel Port set for OUTPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:3417 +#: src/emc/usr_intf/pncconf/pncconf.glade:4298 +#: src/emc/usr_intf/pncconf/pncconf.glade:5179 +msgid " abd)" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:6723 -msgid "Second Parallel Port set for INPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:3504 +#: src/emc/usr_intf/pncconf/pncconf.glade:4371 +#: src/emc/usr_intf/pncconf/pncconf.glade:5252 +msgid "use graycode" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:6735 -msgid "Third Parallel Port set for OUTPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:3519 +#: src/emc/usr_intf/pncconf/pncconf.glade:4386 +#: src/emc/usr_intf/pncconf/pncconf.glade:5267 +msgid "ignore all-inputs false" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:6737 -msgid "Third Parallel Port set for INPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:3563 +#: src/emc/usr_intf/pncconf/pncconf.glade:4444 +#: src/emc/usr_intf/pncconf/pncconf.glade:5325 +msgid "Increments" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:6862 -msgid "You can not have both steppers and pwm signals for spindle control\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:3597 +msgid "External Feed Override" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:6866 -#, python-format -msgid "You forgot to designate a stepper or pwm signal for axis %s\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:4478 +msgid "Max Velocity Override" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:6869 -#, python-format -msgid "You forgot to designate an encoder /resolver signal for axis %s servo\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:5359 +msgid "External Spindle Override" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:6872 -#, python-format -msgid "You forgot to designate a pwm signal or stepper signal for axis %s\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:5387 +msgid "GUI configuration" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:6875 -#, python-format -msgid "You can not have both steppers and pwm signals for axis %s\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:5406 +msgid "Frontend" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:6883 -msgid "Touchy require an external cycle start signal\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:5566 +msgid "Position_offset" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:6886 -msgid "Touchy require an external abort signal\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:5573 +msgid "Position_feedback" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:6889 -msgid "Touchy require an external single-step signal\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:5584 +msgid "Max Spindle Override " msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:6892 -msgid "" -"Touchy require an external multi handwheel MPG encoder signal on the mesa " -"page\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:5606 +msgid "Min Spindle Override" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:6895 -msgid "" -"Touchy require 'external mpg jogging' to be selected on the external control " -"page\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:5665 +msgid "Max Feed Override" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:6898 +#: src/emc/usr_intf/pncconf/pncconf.glade:5702 msgid "" -"Touchy require the external mpg to be in 'shared mpg' mode on the external " -"controls page\n" +"Machine\n" +"Relative\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:6901 +#: src/emc/usr_intf/pncconf/pncconf.glade:5714 msgid "" -"Touchy require selectable increments to be unchecked on the external " -"controls page\n" +"Commanded\n" +"Actual" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:6905 -msgid "" -"The 7i29 daughter board requires PWM type generators and a PWM base " -"frequency of 20 khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:5729 +msgid "General GUI Defaults" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:6908 -msgid "" -"The 7i30 daughter board requires PWM type generators and a PWM base " -"frequency of 20 khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:5811 +msgid "Default linear velocity " msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:6911 -msgid "" -"The 7i33 daughter board requires PDM type generators and a PDM base " -"frequency of 6 Mhz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:5818 +msgid "Min linear velocity" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:6914 -msgid "" -"The 7i40 daughter board requires PWM type generators and a PWM base " -"frequency of 50 khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:5829 +msgid "Max linear velocity" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:6917 -msgid "" -"The 7i48 daughter board requires UDM type generators and a PWM base " -"frequency of 24 khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:5879 +#: src/emc/usr_intf/pncconf/pncconf.glade:6085 +#: src/emc/usr_intf/pncconf/pncconf.glade:6097 +msgid "mm / min" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:7144 -msgid "Gearbox Reduction Ratio" +#: src/emc/usr_intf/pncconf/pncconf.glade:5892 +msgid "Default Angular velocity " msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:7147 -msgid "Reduction Ratio" +#: src/emc/usr_intf/pncconf/pncconf.glade:5926 +msgid "gedit" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:7150 -msgid "Leadscrew Pitch" +#: src/emc/usr_intf/pncconf/pncconf.glade:5939 +msgid "Min Angular velocity" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:7153 -#: emc/usr_intf/pncconf/pncconf.glade:66306 -#: emc/usr_intf/pncconf/pncconf.glade:66601 -msgid "Leadscrew TPI" +#: src/emc/usr_intf/pncconf/pncconf.glade:5966 +msgid "Increments " msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:7157 emc/usr_intf/pncconf/pncconf.py:7158 -msgid "(" +#: src/emc/usr_intf/pncconf/pncconf.glade:5977 +msgid "5mm 1mm .5mm .1mm .05mm .01mm .005mm" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:7159 emc/usr_intf/pncconf/pncconf.py:7169 -#: emc/usr_intf/pncconf/pncconf.py:7170 emc/usr_intf/pncconf/pncconf.py:7171 -msgid " / min" +#: src/emc/usr_intf/pncconf/pncconf.glade:5990 +msgid "Max Angular velocity" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:7160 -msgid " / sec²" +#: src/emc/usr_intf/pncconf/pncconf.glade:6017 +msgid "Axis Geometry" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:7163 -msgid " / Step" +#: src/emc/usr_intf/pncconf/pncconf.glade:6028 +msgid "xyzabc" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:7164 -msgid "Steps / " +#: src/emc/usr_intf/pncconf/pncconf.glade:6040 +#: src/emc/usr_intf/pncconf/pncconf.glade:6052 +#: src/emc/usr_intf/pncconf/pncconf.glade:6064 +msgid "Deg / min" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:7166 -msgid " / encoder pulse" +#: src/emc/usr_intf/pncconf/pncconf.glade:6113 +#: src/emc/usr_intf/pncconf/pncconf.glade:6484 +#: src/emc/usr_intf/pncconf/pncconf.glade:6839 +#: src/emc/usr_intf/pncconf/pncconf.glade:7262 +msgid "size" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:7167 -msgid "Encoder pulses / " +#: src/emc/usr_intf/pncconf/pncconf.glade:6122 +#: src/emc/usr_intf/pncconf/pncconf.glade:6471 +#: src/emc/usr_intf/pncconf/pncconf.glade:6848 +#: src/emc/usr_intf/pncconf/pncconf.glade:7248 +msgid "Position" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:7476 -msgid "Axis Scale Calculation" +#: src/emc/usr_intf/pncconf/pncconf.glade:6159 +#: src/emc/usr_intf/pncconf/pncconf.glade:6433 +#: src/emc/usr_intf/pncconf/pncconf.glade:6885 +#: src/emc/usr_intf/pncconf/pncconf.glade:7210 +#: src/emc/usr_intf/gscreen/gscreen.glade:116 +msgid "X" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:7779 -msgid "You need to designate an E-stop input pin for this ladder program." +#: src/emc/usr_intf/pncconf/pncconf.glade:6171 +#: src/emc/usr_intf/pncconf/pncconf.glade:6423 +#: src/emc/usr_intf/pncconf/pncconf.glade:6897 +#: src/emc/usr_intf/pncconf/pncconf.glade:7200 +#: src/emc/usr_intf/gscreen/gscreen.glade:1142 +msgid "W" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:7791 -msgid "You need to designate a probe input pin for this ladder program." +#: src/emc/usr_intf/pncconf/pncconf.glade:6205 +#: src/emc/usr_intf/pncconf/pncconf.glade:6389 +#: src/emc/usr_intf/pncconf/pncconf.glade:6931 +#: src/emc/usr_intf/pncconf/pncconf.glade:7166 +msgid "H" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:7802 -msgid "" -"OK to replace existing custom ladder program?\n" -"Existing Custom.clp will be renamed custom_backup.clp.\n" -"Any existing file named -custom_backup.clp- will be lost.Selecting 'existing " -"ladder program' will avoid this warning" +#: src/emc/usr_intf/pncconf/pncconf.glade:6227 +msgid "Force Axis to Maximize" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:8011 -msgid "Do you wish to continue to edit this configuration." +#: src/emc/usr_intf/pncconf/pncconf.glade:6249 +msgid "AXIS defaults" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:8050 -msgid "PCI search page is unavailable\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:6365 +msgid "Force Touchy to Maximize after positioning" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:8168 -msgid "" -"You specified there is an existing gladefile, But there is not one in the " -"machine-named folder.." +#: src/emc/usr_intf/pncconf/pncconf.glade:6501 +#: src/emc/usr_intf/pncconf/pncconf.glade:7333 +msgid "Follow System Theme\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:8487 -msgid "Servo tuning is not avaiable in PNCconf yet\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:6514 +#: src/emc/usr_intf/pncconf/pncconf.glade:7347 +msgid "GTK Theme" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:8492 -msgid "degrees" +#: src/emc/usr_intf/pncconf/pncconf.glade:6540 +#: src/emc/usr_intf/gscreen/gscreen.glade:1857 +msgid "Absolute Text Color" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:8493 -msgid "degrees / minute" +#: src/emc/usr_intf/pncconf/pncconf.glade:6603 +msgid "Absolute Textcolor" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:8494 -msgid "degrees / second²" +#: src/emc/usr_intf/pncconf/pncconf.glade:6616 +msgid "Relative Textcolor" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:8496 -msgid "revolutions" +#: src/emc/usr_intf/pncconf/pncconf.glade:6629 +msgid "DTG Textcolor" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:8497 -msgid "rpm" +#: src/emc/usr_intf/pncconf/pncconf.glade:6642 +msgid "Error Textcolor" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:8498 -msgid "revs / second²" +#: src/emc/usr_intf/pncconf/pncconf.glade:6677 +msgid "GUI Options" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:8501 -#: emc/usr_intf/pncconf/pncconf.glade:58295 -#: emc/usr_intf/pncconf/pncconf.glade:58479 -#: emc/usr_intf/pncconf/pncconf.glade:58576 -msgid "mm / minute" +#: src/emc/usr_intf/pncconf/pncconf.glade:6708 +msgid "Virtual Control Panel" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:8502 -msgid "mm / second²" +#: src/emc/usr_intf/pncconf/pncconf.glade:6783 +msgid "XYZ buttons (uses Halui)" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:8505 -msgid "inches / minute" +#: src/emc/usr_intf/pncconf/pncconf.glade:6954 +msgid "Geometry Options" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:8506 -msgid "inches / second²" +#: src/emc/usr_intf/pncconf/pncconf.glade:7033 +msgid "Pyvcp Details" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:8638 -#, python-format -msgid "%s Axis Tune" +#: src/emc/usr_intf/pncconf/pncconf.glade:7105 +msgid "Sample display " msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:8802 -msgid "" -" You must designate a ENCODER / RESOLVER signal and an ANALOG SPINDLE signal " -"for this axis test" +#: src/emc/usr_intf/pncconf/pncconf.glade:7272 +msgid "Standalone Panel" msgstr "" -#: emc/usr_intf/pncconf/pncconf.py:8806 -msgid "" -" You must designate a ENCODER / RESOLVER signal and a PWM signal for this " -"axis test" +#: src/emc/usr_intf/pncconf/pncconf.glade:7289 +msgid "Rightside Embeded" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:8 -msgid "EMC2 Point And Click Configuration" +#: src/emc/usr_intf/pncconf/pncconf.glade:7305 +msgid "Center Tab Embeded" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:23 -msgid "EMC2 Configuration Wizard Beta 1 Version" +#: src/emc/usr_intf/pncconf/pncconf.glade:7320 +msgid "Force Maximize" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:24 -msgid "" -"\tThis program creates configuration \n" -" files for \"Closed Loop Servo\" \n" -"\t \t and hardware stepper\n" -" \tmachines" +#: src/emc/usr_intf/pncconf/pncconf.glade:7359 +msgid "Display Options" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:34 -msgid "Create or Edit" +#: src/emc/usr_intf/pncconf/pncconf.glade:7409 +msgid "Max RPM" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:52 -msgid "Create a new configuration" +#: src/emc/usr_intf/pncconf/pncconf.glade:7422 +msgid "Spindle Speed Indicator" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:118 -msgid "Create a desktop shortcut (symlink) to configuration files." +#: src/emc/usr_intf/pncconf/pncconf.glade:7434 +msgid "Spindle At Speed LED" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:135 -msgid "Create a desktop launcher to start EMC with this configuration." +#: src/emc/usr_intf/pncconf/pncconf.glade:7446 +msgid "Zero X Button" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:214 -msgid "Machine Name:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7458 +msgid "Zero Y Button" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:281 -msgid "Axis configuration:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7470 +msgid "Zero Z Button" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:316 -msgid "Machine units:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7482 +msgid "Zero A Button" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:355 -msgid "Machine Basics" +#: src/emc/usr_intf/pncconf/pncconf.glade:7494 +msgid "Requires Classicladder touch-off program" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:405 -msgid "Recommend servo period: 1000000" +#: src/emc/usr_intf/pncconf/pncconf.glade:7495 +msgid "Auto Z Touch Off Button" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:431 -msgid "Actual Servo Period: " +#: src/emc/usr_intf/pncconf/pncconf.glade:7508 +msgid "Sample Options" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:486 -msgid "" -" Test Base\n" -"Period Jitter " +#: src/emc/usr_intf/pncconf/pncconf.glade:7582 +msgid "Gladevcp Details" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:511 -msgid "Computer Response Time" +#: src/emc/usr_intf/pncconf/pncconf.glade:7605 +msgid "Include custom GladeVCP GUI panel" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:553 -msgid "Mesa0 PCI / Parport Card:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7676 +msgid "Force individual manual homing" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:563 -msgid "Mesa1 PCI / Parport Card:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7689 +msgid "Random position toolchanger " msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:576 -msgid "First Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7704 +msgid "Require homing before MDI / Running" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:589 -msgid "Second Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7713 +msgid "Popup Toolchange Prompt" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:604 -msgid "Third Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7727 +msgid "Leave spindle on during tool change" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:627 -#: emc/usr_intf/pncconf/pncconf.glade:635 -msgid "" -"5i20\n" -"5i23\n" -"5i22" +#: src/emc/usr_intf/pncconf/pncconf.glade:7740 +msgid "Move spindle up before tool change" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:796 -msgid "" -"Add-on PCI\n" -" Parport\n" -" Address \n" -" Search" +#: src/emc/usr_intf/pncconf/pncconf.glade:7753 +msgid "Restore joint position after shutdown" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:821 -msgid "I/O Control Ports/ Boards" +#: src/emc/usr_intf/pncconf/pncconf.glade:7769 +msgid "Defaults and Options" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:870 -msgid "Axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:7797 +msgid "Mesa0 I/O setup\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:885 -msgid "TKemc" +#: src/emc/usr_intf/pncconf/pncconf.glade:7817 +msgid "" +"Click on each page tab to configure signal names for each connector port.\n" +"\n" +"Press the button to make the tabbed pages\n" +"accept the changes.\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:899 -msgid "Mini" +#: src/emc/usr_intf/pncconf/pncconf.glade:8001 +msgid "3PWM base frequency:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:913 -#: emc/usr_intf/pncconf/pncconf.glade:6648 -msgid "Touchy" +#: src/emc/usr_intf/pncconf/pncconf.glade:8036 +msgid "Mesa parport address:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:930 -msgid "GUI frontend list" +#: src/emc/usr_intf/pncconf/pncconf.glade:8047 +msgid "Firmware:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:965 -msgid "External Controls" +#: src/emc/usr_intf/pncconf/pncconf.glade:8069 +msgid "SVST8_4" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1006 -msgid "Add device rule" +#: src/emc/usr_intf/pncconf/pncconf.glade:8094 +msgid "Num of 3 pwm generators: " msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1019 -msgid "Test device" +#: src/emc/usr_intf/pncconf/pncconf.glade:8128 +msgid "Total number of pins:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1033 -msgid "Search for device rules" +#: src/emc/usr_intf/pncconf/pncconf.glade:8153 +msgid "" +"Accept components\n" +" Changes" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1054 -msgid "Device Name:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8168 +msgid "PWM base frequency:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1117 -#: emc/usr_intf/pncconf/pncconf.glade:1255 -msgid "Jog Speed select A" +#: src/emc/usr_intf/pncconf/pncconf.glade:8179 +msgid "PDM base frequency:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1195 -msgid "Z -" +#: src/emc/usr_intf/pncconf/pncconf.glade:8190 +msgid "Watchdog timeout:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1207 -msgid "Y -" +#: src/emc/usr_intf/pncconf/pncconf.glade:8307 +msgid "Num of encoders:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1219 -msgid "X -" +#: src/emc/usr_intf/pncconf/pncconf.glade:8318 +msgid "Num of pwm generators:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1229 -msgid "Z +" +#: src/emc/usr_intf/pncconf/pncconf.glade:8329 +msgid "Num of step generators: " msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1239 -msgid "Y +" +#: src/emc/usr_intf/pncconf/pncconf.glade:8340 +msgid "Board name" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1249 -msgid "X +" +#: src/emc/usr_intf/pncconf/pncconf.glade:8346 +msgid "Num of Smart Serial Ports:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1289 -#: emc/usr_intf/pncconf/pncconf.glade:2208 -#: emc/usr_intf/pncconf/pncconf.glade:3496 -#: emc/usr_intf/pncconf/pncconf.glade:4377 -#: emc/usr_intf/pncconf/pncconf.glade:5258 -msgid "default" +#: src/emc/usr_intf/pncconf/pncconf.glade:8393 +msgid "7i29 daughter board" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1299 -#: emc/usr_intf/pncconf/pncconf.glade:2107 -#: emc/usr_intf/pncconf/pncconf.glade:3443 -#: emc/usr_intf/pncconf/pncconf.glade:4324 -#: emc/usr_intf/pncconf/pncconf.glade:5205 -msgid " a)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8402 +msgid "7i30 daughter board" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1311 -#: emc/usr_intf/pncconf/pncconf.glade:2096 -#: emc/usr_intf/pncconf/pncconf.glade:3432 -#: emc/usr_intf/pncconf/pncconf.glade:4313 -#: emc/usr_intf/pncconf/pncconf.glade:5194 -msgid " b)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8414 +msgid "7i33 daughter board" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1322 -msgid " ab)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8426 +msgid "7i40 daughter board" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1348 -#: emc/usr_intf/pncconf/pncconf.glade:1401 -#: emc/usr_intf/pncconf/pncconf.glade:1413 -#: emc/usr_intf/pncconf/pncconf.glade:1423 -#: emc/usr_intf/pncconf/pncconf.glade:1751 -msgid "mm/min " +#: src/emc/usr_intf/pncconf/pncconf.glade:8438 +msgid "7i48 daughter board" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1456 -msgid "A -" +#: src/emc/usr_intf/pncconf/pncconf.glade:8453 +msgid "Sanity Checks" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1468 -msgid "A +" +#: src/emc/usr_intf/pncconf/pncconf.glade:8482 +msgid "Num of channels: " msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1492 -msgid "Digital Control" +#: src/emc/usr_intf/pncconf/pncconf.glade:8494 +msgid "Num of resolvers:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1539 -msgid "X " +#: src/emc/usr_intf/pncconf/pncconf.glade:8528 +msgid "" +"Configuration\n" +" Page" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1545 -#: emc/usr_intf/pncconf/pncconf.glade:5901 -#: emc/usr_intf/pncconf/pncconf.glade:6531 -#: emc/usr_intf/pncconf/pncconf.glade:6910 -#: emc/usr_intf/pncconf/pncconf.glade:7257 -msgid "Y" +#: src/emc/usr_intf/pncconf/pncconf.glade:8721 +#: src/emc/usr_intf/pncconf/pncconf.glade:8773 +#: src/emc/usr_intf/pncconf/pncconf.glade:9093 +#: src/emc/usr_intf/pncconf/pncconf.glade:9145 +#: src/emc/usr_intf/pncconf/pncconf.glade:9197 +#: src/emc/usr_intf/pncconf/pncconf.glade:9249 +#: src/emc/usr_intf/pncconf/pncconf.glade:9301 +#: src/emc/usr_intf/pncconf/pncconf.glade:9353 +#: src/emc/usr_intf/pncconf/pncconf.glade:9405 +#: src/emc/usr_intf/pncconf/pncconf.glade:9457 +#: src/emc/usr_intf/pncconf/pncconf.glade:9509 +#: src/emc/usr_intf/pncconf/pncconf.glade:9561 +#: src/emc/usr_intf/pncconf/pncconf.glade:10400 +#: src/emc/usr_intf/pncconf/pncconf.glade:10453 +#: src/emc/usr_intf/pncconf/pncconf.glade:10505 +#: src/emc/usr_intf/pncconf/pncconf.glade:10557 +#: src/emc/usr_intf/pncconf/pncconf.glade:11335 +#: src/emc/usr_intf/pncconf/pncconf.glade:11387 +#: src/emc/usr_intf/pncconf/pncconf.glade:12047 +#: src/emc/usr_intf/pncconf/pncconf.glade:12099 +#: src/emc/usr_intf/pncconf/pncconf.glade:12151 +#: src/emc/usr_intf/pncconf/pncconf.glade:12203 +#: src/emc/usr_intf/pncconf/pncconf.glade:13042 +#: src/emc/usr_intf/pncconf/pncconf.glade:13094 +#: src/emc/usr_intf/pncconf/pncconf.glade:13146 +#: src/emc/usr_intf/pncconf/pncconf.glade:13198 +#: src/emc/usr_intf/pncconf/pncconf.glade:13250 +#: src/emc/usr_intf/pncconf/pncconf.glade:13302 +#: src/emc/usr_intf/pncconf/pncconf.glade:13354 +#: src/emc/usr_intf/pncconf/pncconf.glade:13406 +#: src/emc/usr_intf/pncconf/pncconf.glade:13458 +#: src/emc/usr_intf/pncconf/pncconf.glade:13510 +#: src/emc/usr_intf/pncconf/pncconf.glade:14556 +#: src/emc/usr_intf/pncconf/pncconf.glade:14608 +#: src/emc/usr_intf/pncconf/pncconf.glade:14660 +#: src/emc/usr_intf/pncconf/pncconf.glade:14712 +#: src/emc/usr_intf/pncconf/pncconf.glade:15539 +#: src/emc/usr_intf/pncconf/pncconf.glade:15591 +#: src/emc/usr_intf/pncconf/pncconf.glade:15643 +#: src/emc/usr_intf/pncconf/pncconf.glade:15695 +#: src/emc/usr_intf/pncconf/pncconf.glade:15747 +#: src/emc/usr_intf/pncconf/pncconf.glade:15799 +#: src/emc/usr_intf/pncconf/pncconf.glade:15851 +#: src/emc/usr_intf/pncconf/pncconf.glade:15903 +#: src/emc/usr_intf/pncconf/pncconf.glade:15955 +#: src/emc/usr_intf/pncconf/pncconf.glade:16007 +#: src/emc/usr_intf/pncconf/pncconf.glade:16059 +#: src/emc/usr_intf/pncconf/pncconf.glade:16111 +#: src/emc/usr_intf/pncconf/pncconf.glade:16540 +#: src/emc/usr_intf/pncconf/pncconf.glade:16592 +#: src/emc/usr_intf/pncconf/pncconf.glade:17253 +#: src/emc/usr_intf/pncconf/pncconf.glade:17305 +#: src/emc/usr_intf/pncconf/pncconf.glade:17357 +#: src/emc/usr_intf/pncconf/pncconf.glade:18196 +#: src/emc/usr_intf/pncconf/pncconf.glade:18248 +#: src/emc/usr_intf/pncconf/pncconf.glade:18300 +#: src/emc/usr_intf/pncconf/pncconf.glade:18352 +#: src/emc/usr_intf/pncconf/pncconf.glade:18404 +#: src/emc/usr_intf/pncconf/pncconf.glade:18456 +#: src/emc/usr_intf/pncconf/pncconf.glade:18508 +#: src/emc/usr_intf/pncconf/pncconf.glade:18560 +#: src/emc/usr_intf/pncconf/pncconf.glade:18612 +#: src/emc/usr_intf/pncconf/pncconf.glade:18664 +#: src/emc/usr_intf/pncconf/pncconf.glade:18716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26612 +#: src/emc/usr_intf/pncconf/pncconf.glade:26664 +#: src/emc/usr_intf/pncconf/pncconf.glade:26716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26768 +#: src/emc/usr_intf/pncconf/pncconf.glade:26820 +#: src/emc/usr_intf/pncconf/pncconf.glade:26872 +#: src/emc/usr_intf/pncconf/pncconf.glade:26924 +#: src/emc/usr_intf/pncconf/pncconf.glade:26976 +#: src/emc/usr_intf/pncconf/pncconf.glade:27028 +#: src/emc/usr_intf/pncconf/pncconf.glade:27080 +#: src/emc/usr_intf/pncconf/pncconf.glade:27132 +#: src/emc/usr_intf/pncconf/pncconf.glade:27184 +#: src/emc/usr_intf/pncconf/pncconf.glade:28011 +#: src/emc/usr_intf/pncconf/pncconf.glade:28063 +#: src/emc/usr_intf/pncconf/pncconf.glade:28115 +#: src/emc/usr_intf/pncconf/pncconf.glade:28167 +#: src/emc/usr_intf/pncconf/pncconf.glade:29507 +#: src/emc/usr_intf/pncconf/pncconf.glade:29559 +#: src/emc/usr_intf/pncconf/pncconf.glade:29611 +#: src/emc/usr_intf/pncconf/pncconf.glade:29663 +#: src/emc/usr_intf/pncconf/pncconf.glade:30490 +#: src/emc/usr_intf/pncconf/pncconf.glade:30542 +#: src/emc/usr_intf/pncconf/pncconf.glade:30594 +#: src/emc/usr_intf/pncconf/pncconf.glade:30646 +#: src/emc/usr_intf/pncconf/pncconf.glade:30698 +#: src/emc/usr_intf/pncconf/pncconf.glade:30750 +#: src/emc/usr_intf/pncconf/pncconf.glade:30802 +#: src/emc/usr_intf/pncconf/pncconf.glade:30854 +#: src/emc/usr_intf/pncconf/pncconf.glade:30906 +#: src/emc/usr_intf/pncconf/pncconf.glade:30958 +#: src/emc/usr_intf/pncconf/pncconf.glade:31010 +#: src/emc/usr_intf/pncconf/pncconf.glade:31062 +#: src/emc/usr_intf/pncconf/pncconf.glade:31878 +#: src/emc/usr_intf/pncconf/pncconf.glade:31930 +#: src/emc/usr_intf/pncconf/pncconf.glade:31982 +#: src/emc/usr_intf/pncconf/pncconf.glade:32034 +#: src/emc/usr_intf/pncconf/pncconf.glade:32086 +#: src/emc/usr_intf/pncconf/pncconf.glade:32138 +#: src/emc/usr_intf/pncconf/pncconf.glade:32190 +#: src/emc/usr_intf/pncconf/pncconf.glade:32242 +#: src/emc/usr_intf/pncconf/pncconf.glade:32294 +#: src/emc/usr_intf/pncconf/pncconf.glade:32346 +#: src/emc/usr_intf/pncconf/pncconf.glade:32398 +#: src/emc/usr_intf/pncconf/pncconf.glade:32450 +#: src/emc/usr_intf/pncconf/pncconf.glade:33852 +#: src/emc/usr_intf/pncconf/pncconf.glade:33904 +#: src/emc/usr_intf/pncconf/pncconf.glade:33956 +#: src/emc/usr_intf/pncconf/pncconf.glade:34008 +#: src/emc/usr_intf/pncconf/pncconf.glade:34835 +#: src/emc/usr_intf/pncconf/pncconf.glade:34887 +#: src/emc/usr_intf/pncconf/pncconf.glade:34939 +#: src/emc/usr_intf/pncconf/pncconf.glade:34991 +#: src/emc/usr_intf/pncconf/pncconf.glade:35043 +#: src/emc/usr_intf/pncconf/pncconf.glade:35095 +#: src/emc/usr_intf/pncconf/pncconf.glade:35147 +#: src/emc/usr_intf/pncconf/pncconf.glade:35199 +#: src/emc/usr_intf/pncconf/pncconf.glade:35251 +#: src/emc/usr_intf/pncconf/pncconf.glade:35303 +#: src/emc/usr_intf/pncconf/pncconf.glade:35355 +#: src/emc/usr_intf/pncconf/pncconf.glade:35407 +#: src/emc/usr_intf/pncconf/pncconf.glade:36096 +#: src/emc/usr_intf/pncconf/pncconf.glade:36148 +#: src/emc/usr_intf/pncconf/pncconf.glade:36200 +#: src/emc/usr_intf/pncconf/pncconf.glade:36252 +#: src/emc/usr_intf/pncconf/pncconf.glade:36304 +#: src/emc/usr_intf/pncconf/pncconf.glade:36356 +#: src/emc/usr_intf/pncconf/pncconf.glade:36408 +#: src/emc/usr_intf/pncconf/pncconf.glade:36460 +#: src/emc/usr_intf/pncconf/pncconf.glade:36512 +#: src/emc/usr_intf/pncconf/pncconf.glade:36564 +#: src/emc/usr_intf/pncconf/pncconf.glade:36616 +#: src/emc/usr_intf/pncconf/pncconf.glade:36668 +#: src/emc/usr_intf/pncconf/pncconf.glade:37495 +#: src/emc/usr_intf/pncconf/pncconf.glade:37547 +#: src/emc/usr_intf/pncconf/pncconf.glade:37599 +#: src/emc/usr_intf/pncconf/pncconf.glade:37651 +#: src/emc/usr_intf/pncconf/pncconf.glade:39168 +#: src/emc/usr_intf/pncconf/pncconf.glade:39220 +#: src/emc/usr_intf/pncconf/pncconf.glade:39272 +#: src/emc/usr_intf/pncconf/pncconf.glade:39324 +#: src/emc/usr_intf/pncconf/pncconf.glade:39376 +#: src/emc/usr_intf/pncconf/pncconf.glade:39428 +#: src/emc/usr_intf/pncconf/pncconf.glade:39480 +#: src/emc/usr_intf/pncconf/pncconf.glade:39532 +#: src/emc/usr_intf/pncconf/pncconf.glade:39584 +#: src/emc/usr_intf/pncconf/pncconf.glade:39636 +#: src/emc/usr_intf/pncconf/pncconf.glade:39688 +#: src/emc/usr_intf/pncconf/pncconf.glade:39740 +#: src/emc/usr_intf/pncconf/pncconf.glade:40456 +#: src/emc/usr_intf/pncconf/pncconf.glade:40508 +#: src/emc/usr_intf/pncconf/pncconf.glade:40560 +#: src/emc/usr_intf/pncconf/pncconf.glade:40612 +#: src/emc/usr_intf/pncconf/pncconf.glade:40664 +#: src/emc/usr_intf/pncconf/pncconf.glade:40716 +#: src/emc/usr_intf/pncconf/pncconf.glade:40768 +#: src/emc/usr_intf/pncconf/pncconf.glade:40820 +#: src/emc/usr_intf/pncconf/pncconf.glade:40872 +#: src/emc/usr_intf/pncconf/pncconf.glade:40924 +#: src/emc/usr_intf/pncconf/pncconf.glade:40976 +#: src/emc/usr_intf/pncconf/pncconf.glade:41028 +#: src/emc/usr_intf/pncconf/pncconf.glade:41855 +#: src/emc/usr_intf/pncconf/pncconf.glade:41907 +#: src/emc/usr_intf/pncconf/pncconf.glade:41959 +#: src/emc/usr_intf/pncconf/pncconf.glade:42011 +#: src/emc/usr_intf/pncconf/pncconf.glade:43351 +#: src/emc/usr_intf/pncconf/pncconf.glade:43403 +#: src/emc/usr_intf/pncconf/pncconf.glade:43455 +#: src/emc/usr_intf/pncconf/pncconf.glade:43507 +#: src/emc/usr_intf/pncconf/pncconf.glade:44334 +#: src/emc/usr_intf/pncconf/pncconf.glade:44386 +#: src/emc/usr_intf/pncconf/pncconf.glade:44438 +#: src/emc/usr_intf/pncconf/pncconf.glade:44490 +#: src/emc/usr_intf/pncconf/pncconf.glade:44542 +#: src/emc/usr_intf/pncconf/pncconf.glade:44594 +#: src/emc/usr_intf/pncconf/pncconf.glade:44646 +#: src/emc/usr_intf/pncconf/pncconf.glade:44698 +#: src/emc/usr_intf/pncconf/pncconf.glade:44750 +#: src/emc/usr_intf/pncconf/pncconf.glade:44802 +#: src/emc/usr_intf/pncconf/pncconf.glade:44854 +#: src/emc/usr_intf/pncconf/pncconf.glade:44906 +#: src/emc/usr_intf/pncconf/pncconf.glade:45711 +#: src/emc/usr_intf/pncconf/pncconf.glade:45763 +#: src/emc/usr_intf/pncconf/pncconf.glade:45815 +#: src/emc/usr_intf/pncconf/pncconf.glade:45867 +#: src/emc/usr_intf/pncconf/pncconf.glade:45919 +#: src/emc/usr_intf/pncconf/pncconf.glade:45971 +#: src/emc/usr_intf/pncconf/pncconf.glade:46023 +#: src/emc/usr_intf/pncconf/pncconf.glade:46075 +#: src/emc/usr_intf/pncconf/pncconf.glade:46127 +#: src/emc/usr_intf/pncconf/pncconf.glade:46179 +#: src/emc/usr_intf/pncconf/pncconf.glade:46231 +#: src/emc/usr_intf/pncconf/pncconf.glade:46283 +#: src/emc/usr_intf/pncconf/pncconf.glade:47379 +#: src/emc/usr_intf/pncconf/pncconf.glade:47431 +#: src/emc/usr_intf/pncconf/pncconf.glade:47483 +#: src/emc/usr_intf/pncconf/pncconf.glade:47535 +#: src/emc/usr_intf/pncconf/pncconf.glade:47587 +#: src/emc/usr_intf/pncconf/pncconf.glade:47639 +#: src/emc/usr_intf/pncconf/pncconf.glade:47691 +#: src/emc/usr_intf/pncconf/pncconf.glade:47743 +#: src/emc/usr_intf/pncconf/pncconf.glade:47795 +#: src/emc/usr_intf/pncconf/pncconf.glade:47847 +#: src/emc/usr_intf/pncconf/pncconf.glade:47899 +#: src/emc/usr_intf/pncconf/pncconf.glade:47951 +#: src/emc/usr_intf/pncconf/pncconf.glade:48778 +#: src/emc/usr_intf/pncconf/pncconf.glade:48830 +#: src/emc/usr_intf/pncconf/pncconf.glade:48882 +#: src/emc/usr_intf/pncconf/pncconf.glade:48934 +#: src/emc/usr_intf/pncconf/pncconf.glade:50274 +#: src/emc/usr_intf/pncconf/pncconf.glade:50326 +#: src/emc/usr_intf/pncconf/pncconf.glade:50378 +#: src/emc/usr_intf/pncconf/pncconf.glade:50430 +#: src/emc/usr_intf/pncconf/pncconf.glade:51257 +#: src/emc/usr_intf/pncconf/pncconf.glade:51309 +#: src/emc/usr_intf/pncconf/pncconf.glade:51361 +#: src/emc/usr_intf/pncconf/pncconf.glade:51413 +#: src/emc/usr_intf/pncconf/pncconf.glade:51465 +#: src/emc/usr_intf/pncconf/pncconf.glade:51517 +#: src/emc/usr_intf/pncconf/pncconf.glade:51569 +#: src/emc/usr_intf/pncconf/pncconf.glade:51621 +#: src/emc/usr_intf/pncconf/pncconf.glade:51673 +#: src/emc/usr_intf/pncconf/pncconf.glade:51725 +#: src/emc/usr_intf/pncconf/pncconf.glade:51777 +#: src/emc/usr_intf/pncconf/pncconf.glade:51829 +#: src/emc/usr_intf/pncconf/pncconf.glade:52634 +#: src/emc/usr_intf/pncconf/pncconf.glade:52686 +#: src/emc/usr_intf/pncconf/pncconf.glade:52738 +#: src/emc/usr_intf/pncconf/pncconf.glade:52790 +#: src/emc/usr_intf/pncconf/pncconf.glade:52842 +#: src/emc/usr_intf/pncconf/pncconf.glade:52894 +#: src/emc/usr_intf/pncconf/pncconf.glade:52946 +#: src/emc/usr_intf/pncconf/pncconf.glade:52998 +#: src/emc/usr_intf/pncconf/pncconf.glade:53050 +#: src/emc/usr_intf/pncconf/pncconf.glade:53102 +#: src/emc/usr_intf/pncconf/pncconf.glade:53154 +#: src/emc/usr_intf/pncconf/pncconf.glade:53206 +#: src/emc/usr_intf/pncconf/pncconf.glade:54302 +#: src/emc/usr_intf/pncconf/pncconf.glade:54354 +#: src/emc/usr_intf/pncconf/pncconf.glade:54406 +#: src/emc/usr_intf/pncconf/pncconf.glade:54458 +#: src/emc/usr_intf/pncconf/pncconf.glade:54510 +#: src/emc/usr_intf/pncconf/pncconf.glade:54562 +#: src/emc/usr_intf/pncconf/pncconf.glade:54614 +#: src/emc/usr_intf/pncconf/pncconf.glade:54666 +#: src/emc/usr_intf/pncconf/pncconf.glade:54718 +#: src/emc/usr_intf/pncconf/pncconf.glade:54770 +#: src/emc/usr_intf/pncconf/pncconf.glade:54822 +#: src/emc/usr_intf/pncconf/pncconf.glade:54874 +#: src/emc/usr_intf/pncconf/pncconf.glade:55701 +#: src/emc/usr_intf/pncconf/pncconf.glade:55753 +#: src/emc/usr_intf/pncconf/pncconf.glade:55805 +#: src/emc/usr_intf/pncconf/pncconf.glade:55857 +#: src/emc/usr_intf/pncconf/pncconf.glade:57197 +#: src/emc/usr_intf/pncconf/pncconf.glade:57249 +#: src/emc/usr_intf/pncconf/pncconf.glade:57301 +#: src/emc/usr_intf/pncconf/pncconf.glade:57353 +#: src/emc/usr_intf/pncconf/pncconf.glade:58180 +#: src/emc/usr_intf/pncconf/pncconf.glade:58232 +#: src/emc/usr_intf/pncconf/pncconf.glade:58284 +#: src/emc/usr_intf/pncconf/pncconf.glade:58336 +#: src/emc/usr_intf/pncconf/pncconf.glade:58388 +#: src/emc/usr_intf/pncconf/pncconf.glade:58440 +#: src/emc/usr_intf/pncconf/pncconf.glade:58492 +#: src/emc/usr_intf/pncconf/pncconf.glade:58544 +#: src/emc/usr_intf/pncconf/pncconf.glade:58596 +#: src/emc/usr_intf/pncconf/pncconf.glade:58648 +#: src/emc/usr_intf/pncconf/pncconf.glade:58700 +#: src/emc/usr_intf/pncconf/pncconf.glade:58752 +#: src/emc/usr_intf/pncconf/pncconf.glade:59557 +#: src/emc/usr_intf/pncconf/pncconf.glade:59609 +#: src/emc/usr_intf/pncconf/pncconf.glade:59661 +#: src/emc/usr_intf/pncconf/pncconf.glade:59713 +#: src/emc/usr_intf/pncconf/pncconf.glade:59765 +#: src/emc/usr_intf/pncconf/pncconf.glade:59817 +#: src/emc/usr_intf/pncconf/pncconf.glade:59869 +#: src/emc/usr_intf/pncconf/pncconf.glade:59921 +#: src/emc/usr_intf/pncconf/pncconf.glade:59973 +#: src/emc/usr_intf/pncconf/pncconf.glade:60025 +#: src/emc/usr_intf/pncconf/pncconf.glade:60077 +#: src/emc/usr_intf/pncconf/pncconf.glade:60129 +msgid "" +"ESTOP IN\n" +"Spindle PPR\n" +"Spindle A \n" +"Spindle B \n" +"Home X \n" +"Home Y \n" +"Home Z\n" +"Home A\n" +"Minimum Limit + Home X \n" +"Minimum Limit + Home Y \n" +"Minimum Limit + Home Z \n" +"Minimum Limit + Home A\n" +"Maximum Limit + Home X \n" +"Maximum Limit + Home Y \n" +"Maximum Limit + Home Z \n" +"Maximum Limit + Home A\n" +"Both Limit + Home X \n" +"Both Limit + Home Y \n" +"Both Limit + Home Z \n" +"Both Limit + Home A\n" +"Minimum Limit X \n" +"Minimum Limit Y \n" +"Minimum Limit Z \n" +"Minimum Limit A\n" +"Maximum Limit X \n" +"Maximum Limit Y \n" +"Maximum Limit Z \n" +"Maximum Limit A\n" +"Both Limit X \n" +"Both Limit Y \n" +"Both Limit Z \n" +"Both Limit A\n" +"All limits\n" +"All home\n" +"Unused" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1555 -msgid "Z" +#: src/emc/usr_intf/pncconf/pncconf.glade:8825 +#: src/emc/usr_intf/pncconf/pncconf.glade:9081 +#: src/emc/usr_intf/pncconf/pncconf.glade:13563 +#: src/emc/usr_intf/pncconf/pncconf.glade:13818 +#: src/emc/usr_intf/pncconf/pncconf.glade:16164 +#: src/emc/usr_intf/pncconf/pncconf.glade:16410 +#: src/emc/usr_intf/pncconf/pncconf.glade:18769 +#: src/emc/usr_intf/pncconf/pncconf.glade:19024 +#: src/emc/usr_intf/pncconf/pncconf.glade:20571 +#: src/emc/usr_intf/pncconf/pncconf.glade:20820 +#: src/emc/usr_intf/pncconf/pncconf.glade:20949 +#: src/emc/usr_intf/pncconf/pncconf.glade:21199 +#: src/emc/usr_intf/pncconf/pncconf.glade:22745 +#: src/emc/usr_intf/pncconf/pncconf.glade:22995 +#: src/emc/usr_intf/pncconf/pncconf.glade:24541 +#: src/emc/usr_intf/pncconf/pncconf.glade:24791 +#: src/emc/usr_intf/pncconf/pncconf.glade:26353 +#: src/emc/usr_intf/pncconf/pncconf.glade:26600 +#: src/emc/usr_intf/pncconf/pncconf.glade:31115 +#: src/emc/usr_intf/pncconf/pncconf.glade:31361 +#: src/emc/usr_intf/pncconf/pncconf.glade:31621 +#: src/emc/usr_intf/pncconf/pncconf.glade:35460 +#: src/emc/usr_intf/pncconf/pncconf.glade:35706 +#: src/emc/usr_intf/pncconf/pncconf.glade:35837 +#: src/emc/usr_intf/pncconf/pncconf.glade:36084 +#: src/emc/usr_intf/pncconf/pncconf.glade:40037 +#: src/emc/usr_intf/pncconf/pncconf.glade:40197 +#: src/emc/usr_intf/pncconf/pncconf.glade:40444 +#: src/emc/usr_intf/pncconf/pncconf.glade:44959 +#: src/emc/usr_intf/pncconf/pncconf.glade:45205 +#: src/emc/usr_intf/pncconf/pncconf.glade:45454 +#: src/emc/usr_intf/pncconf/pncconf.glade:47120 +#: src/emc/usr_intf/pncconf/pncconf.glade:47367 +#: src/emc/usr_intf/pncconf/pncconf.glade:51882 +#: src/emc/usr_intf/pncconf/pncconf.glade:52128 +#: src/emc/usr_intf/pncconf/pncconf.glade:52377 +#: src/emc/usr_intf/pncconf/pncconf.glade:54043 +#: src/emc/usr_intf/pncconf/pncconf.glade:54290 +#: src/emc/usr_intf/pncconf/pncconf.glade:58805 +#: src/emc/usr_intf/pncconf/pncconf.glade:59051 +#: src/emc/usr_intf/pncconf/pncconf.glade:59300 +msgid "Pin Type" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1565 -msgid "A" +#: src/emc/usr_intf/pncconf/pncconf.glade:8838 +#: src/emc/usr_intf/pncconf/pncconf.glade:8900 +#: src/emc/usr_intf/pncconf/pncconf.glade:13743 +#: src/emc/usr_intf/pncconf/pncconf.glade:13806 +#: src/emc/usr_intf/pncconf/pncconf.glade:16335 +#: src/emc/usr_intf/pncconf/pncconf.glade:16398 +#: src/emc/usr_intf/pncconf/pncconf.glade:18949 +#: src/emc/usr_intf/pncconf/pncconf.glade:19012 +#: src/emc/usr_intf/pncconf/pncconf.glade:20751 +#: src/emc/usr_intf/pncconf/pncconf.glade:20808 +#: src/emc/usr_intf/pncconf/pncconf.glade:20962 +#: src/emc/usr_intf/pncconf/pncconf.glade:21018 +#: src/emc/usr_intf/pncconf/pncconf.glade:22758 +#: src/emc/usr_intf/pncconf/pncconf.glade:22814 +#: src/emc/usr_intf/pncconf/pncconf.glade:24554 +#: src/emc/usr_intf/pncconf/pncconf.glade:24610 +#: src/emc/usr_intf/pncconf/pncconf.glade:26366 +#: src/emc/usr_intf/pncconf/pncconf.glade:26428 +#: src/emc/usr_intf/pncconf/pncconf.glade:31286 +#: src/emc/usr_intf/pncconf/pncconf.glade:31349 +#: src/emc/usr_intf/pncconf/pncconf.glade:31634 +#: src/emc/usr_intf/pncconf/pncconf.glade:35631 +#: src/emc/usr_intf/pncconf/pncconf.glade:35694 +#: src/emc/usr_intf/pncconf/pncconf.glade:35850 +#: src/emc/usr_intf/pncconf/pncconf.glade:35912 +#: src/emc/usr_intf/pncconf/pncconf.glade:40025 +#: src/emc/usr_intf/pncconf/pncconf.glade:40210 +#: src/emc/usr_intf/pncconf/pncconf.glade:40272 +#: src/emc/usr_intf/pncconf/pncconf.glade:45130 +#: src/emc/usr_intf/pncconf/pncconf.glade:45193 +#: src/emc/usr_intf/pncconf/pncconf.glade:45467 +#: src/emc/usr_intf/pncconf/pncconf.glade:47133 +#: src/emc/usr_intf/pncconf/pncconf.glade:47195 +#: src/emc/usr_intf/pncconf/pncconf.glade:52053 +#: src/emc/usr_intf/pncconf/pncconf.glade:52116 +#: src/emc/usr_intf/pncconf/pncconf.glade:52390 +#: src/emc/usr_intf/pncconf/pncconf.glade:54056 +#: src/emc/usr_intf/pncconf/pncconf.glade:54118 +#: src/emc/usr_intf/pncconf/pncconf.glade:58976 +#: src/emc/usr_intf/pncconf/pncconf.glade:59039 +#: src/emc/usr_intf/pncconf/pncconf.glade:59313 +msgid "Inv" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1623 -msgid "Analog Control" +#: src/emc/usr_intf/pncconf/pncconf.glade:8867 +#: src/emc/usr_intf/pncconf/pncconf.glade:10731 +#: src/emc/usr_intf/pncconf/pncconf.glade:10751 +#: src/emc/usr_intf/pncconf/pncconf.glade:10771 +#: src/emc/usr_intf/pncconf/pncconf.glade:10791 +#: src/emc/usr_intf/pncconf/pncconf.glade:10811 +#: src/emc/usr_intf/pncconf/pncconf.glade:10831 +#: src/emc/usr_intf/pncconf/pncconf.glade:10851 +#: src/emc/usr_intf/pncconf/pncconf.glade:10871 +#: src/emc/usr_intf/pncconf/pncconf.glade:10891 +#: src/emc/usr_intf/pncconf/pncconf.glade:10911 +#: src/emc/usr_intf/pncconf/pncconf.glade:10931 +#: src/emc/usr_intf/pncconf/pncconf.glade:10951 +#: src/emc/usr_intf/pncconf/pncconf.glade:10971 +#: src/emc/usr_intf/pncconf/pncconf.glade:10991 +#: src/emc/usr_intf/pncconf/pncconf.glade:11011 +#: src/emc/usr_intf/pncconf/pncconf.glade:11031 +#: src/emc/usr_intf/pncconf/pncconf.glade:11051 +#: src/emc/usr_intf/pncconf/pncconf.glade:11071 +#: src/emc/usr_intf/pncconf/pncconf.glade:11091 +#: src/emc/usr_intf/pncconf/pncconf.glade:11111 +#: src/emc/usr_intf/pncconf/pncconf.glade:11131 +#: src/emc/usr_intf/pncconf/pncconf.glade:11151 +#: src/emc/usr_intf/pncconf/pncconf.glade:11171 +#: src/emc/usr_intf/pncconf/pncconf.glade:11465 +#: src/emc/usr_intf/pncconf/pncconf.glade:11485 +#: src/emc/usr_intf/pncconf/pncconf.glade:11505 +#: src/emc/usr_intf/pncconf/pncconf.glade:11525 +#: src/emc/usr_intf/pncconf/pncconf.glade:11545 +#: src/emc/usr_intf/pncconf/pncconf.glade:11565 +#: src/emc/usr_intf/pncconf/pncconf.glade:11585 +#: src/emc/usr_intf/pncconf/pncconf.glade:11605 +#: src/emc/usr_intf/pncconf/pncconf.glade:11625 +#: src/emc/usr_intf/pncconf/pncconf.glade:11645 +#: src/emc/usr_intf/pncconf/pncconf.glade:11665 +#: src/emc/usr_intf/pncconf/pncconf.glade:11685 +#: src/emc/usr_intf/pncconf/pncconf.glade:11705 +#: src/emc/usr_intf/pncconf/pncconf.glade:11725 +#: src/emc/usr_intf/pncconf/pncconf.glade:11745 +#: src/emc/usr_intf/pncconf/pncconf.glade:11765 +#: src/emc/usr_intf/pncconf/pncconf.glade:11785 +#: src/emc/usr_intf/pncconf/pncconf.glade:11805 +#: src/emc/usr_intf/pncconf/pncconf.glade:11825 +#: src/emc/usr_intf/pncconf/pncconf.glade:11845 +#: src/emc/usr_intf/pncconf/pncconf.glade:11865 +#: src/emc/usr_intf/pncconf/pncconf.glade:11885 +#: src/emc/usr_intf/pncconf/pncconf.glade:11905 +#: src/emc/usr_intf/pncconf/pncconf.glade:13768 +#: src/emc/usr_intf/pncconf/pncconf.glade:13974 +#: src/emc/usr_intf/pncconf/pncconf.glade:13994 +#: src/emc/usr_intf/pncconf/pncconf.glade:14014 +#: src/emc/usr_intf/pncconf/pncconf.glade:14034 +#: src/emc/usr_intf/pncconf/pncconf.glade:14054 +#: src/emc/usr_intf/pncconf/pncconf.glade:14074 +#: src/emc/usr_intf/pncconf/pncconf.glade:14094 +#: src/emc/usr_intf/pncconf/pncconf.glade:14114 +#: src/emc/usr_intf/pncconf/pncconf.glade:14134 +#: src/emc/usr_intf/pncconf/pncconf.glade:14154 +#: src/emc/usr_intf/pncconf/pncconf.glade:14174 +#: src/emc/usr_intf/pncconf/pncconf.glade:14194 +#: src/emc/usr_intf/pncconf/pncconf.glade:14214 +#: src/emc/usr_intf/pncconf/pncconf.glade:14234 +#: src/emc/usr_intf/pncconf/pncconf.glade:14254 +#: src/emc/usr_intf/pncconf/pncconf.glade:14274 +#: src/emc/usr_intf/pncconf/pncconf.glade:14294 +#: src/emc/usr_intf/pncconf/pncconf.glade:14314 +#: src/emc/usr_intf/pncconf/pncconf.glade:14334 +#: src/emc/usr_intf/pncconf/pncconf.glade:14354 +#: src/emc/usr_intf/pncconf/pncconf.glade:14374 +#: src/emc/usr_intf/pncconf/pncconf.glade:14394 +#: src/emc/usr_intf/pncconf/pncconf.glade:14414 +#: src/emc/usr_intf/pncconf/pncconf.glade:16360 +#: src/emc/usr_intf/pncconf/pncconf.glade:16670 +#: src/emc/usr_intf/pncconf/pncconf.glade:16690 +#: src/emc/usr_intf/pncconf/pncconf.glade:16710 +#: src/emc/usr_intf/pncconf/pncconf.glade:16730 +#: src/emc/usr_intf/pncconf/pncconf.glade:16750 +#: src/emc/usr_intf/pncconf/pncconf.glade:16770 +#: src/emc/usr_intf/pncconf/pncconf.glade:16790 +#: src/emc/usr_intf/pncconf/pncconf.glade:16810 +#: src/emc/usr_intf/pncconf/pncconf.glade:16830 +#: src/emc/usr_intf/pncconf/pncconf.glade:16850 +#: src/emc/usr_intf/pncconf/pncconf.glade:16870 +#: src/emc/usr_intf/pncconf/pncconf.glade:16890 +#: src/emc/usr_intf/pncconf/pncconf.glade:16910 +#: src/emc/usr_intf/pncconf/pncconf.glade:16930 +#: src/emc/usr_intf/pncconf/pncconf.glade:16950 +#: src/emc/usr_intf/pncconf/pncconf.glade:16970 +#: src/emc/usr_intf/pncconf/pncconf.glade:16990 +#: src/emc/usr_intf/pncconf/pncconf.glade:17010 +#: src/emc/usr_intf/pncconf/pncconf.glade:17030 +#: src/emc/usr_intf/pncconf/pncconf.glade:17050 +#: src/emc/usr_intf/pncconf/pncconf.glade:17070 +#: src/emc/usr_intf/pncconf/pncconf.glade:17090 +#: src/emc/usr_intf/pncconf/pncconf.glade:17110 +#: src/emc/usr_intf/pncconf/pncconf.glade:18974 +#: src/emc/usr_intf/pncconf/pncconf.glade:26395 +#: src/emc/usr_intf/pncconf/pncconf.glade:28311 +#: src/emc/usr_intf/pncconf/pncconf.glade:28331 +#: src/emc/usr_intf/pncconf/pncconf.glade:28351 +#: src/emc/usr_intf/pncconf/pncconf.glade:28371 +#: src/emc/usr_intf/pncconf/pncconf.glade:28391 +#: src/emc/usr_intf/pncconf/pncconf.glade:28411 +#: src/emc/usr_intf/pncconf/pncconf.glade:28431 +#: src/emc/usr_intf/pncconf/pncconf.glade:28451 +#: src/emc/usr_intf/pncconf/pncconf.glade:28471 +#: src/emc/usr_intf/pncconf/pncconf.glade:28491 +#: src/emc/usr_intf/pncconf/pncconf.glade:28511 +#: src/emc/usr_intf/pncconf/pncconf.glade:28531 +#: src/emc/usr_intf/pncconf/pncconf.glade:28551 +#: src/emc/usr_intf/pncconf/pncconf.glade:28571 +#: src/emc/usr_intf/pncconf/pncconf.glade:28591 +#: src/emc/usr_intf/pncconf/pncconf.glade:28611 +#: src/emc/usr_intf/pncconf/pncconf.glade:28631 +#: src/emc/usr_intf/pncconf/pncconf.glade:28651 +#: src/emc/usr_intf/pncconf/pncconf.glade:28671 +#: src/emc/usr_intf/pncconf/pncconf.glade:28691 +#: src/emc/usr_intf/pncconf/pncconf.glade:28711 +#: src/emc/usr_intf/pncconf/pncconf.glade:28731 +#: src/emc/usr_intf/pncconf/pncconf.glade:28751 +#: src/emc/usr_intf/pncconf/pncconf.glade:28942 +#: src/emc/usr_intf/pncconf/pncconf.glade:28962 +#: src/emc/usr_intf/pncconf/pncconf.glade:28982 +#: src/emc/usr_intf/pncconf/pncconf.glade:29002 +#: src/emc/usr_intf/pncconf/pncconf.glade:29022 +#: src/emc/usr_intf/pncconf/pncconf.glade:29042 +#: src/emc/usr_intf/pncconf/pncconf.glade:29062 +#: src/emc/usr_intf/pncconf/pncconf.glade:29082 +#: src/emc/usr_intf/pncconf/pncconf.glade:29102 +#: src/emc/usr_intf/pncconf/pncconf.glade:29122 +#: src/emc/usr_intf/pncconf/pncconf.glade:29142 +#: src/emc/usr_intf/pncconf/pncconf.glade:29162 +#: src/emc/usr_intf/pncconf/pncconf.glade:29182 +#: src/emc/usr_intf/pncconf/pncconf.glade:29202 +#: src/emc/usr_intf/pncconf/pncconf.glade:29222 +#: src/emc/usr_intf/pncconf/pncconf.glade:29242 +#: src/emc/usr_intf/pncconf/pncconf.glade:29262 +#: src/emc/usr_intf/pncconf/pncconf.glade:29282 +#: src/emc/usr_intf/pncconf/pncconf.glade:29302 +#: src/emc/usr_intf/pncconf/pncconf.glade:29322 +#: src/emc/usr_intf/pncconf/pncconf.glade:29342 +#: src/emc/usr_intf/pncconf/pncconf.glade:29362 +#: src/emc/usr_intf/pncconf/pncconf.glade:29382 +#: src/emc/usr_intf/pncconf/pncconf.glade:31311 +#: src/emc/usr_intf/pncconf/pncconf.glade:31663 +#: src/emc/usr_intf/pncconf/pncconf.glade:32881 +#: src/emc/usr_intf/pncconf/pncconf.glade:32901 +#: src/emc/usr_intf/pncconf/pncconf.glade:32921 +#: src/emc/usr_intf/pncconf/pncconf.glade:32941 +#: src/emc/usr_intf/pncconf/pncconf.glade:32961 +#: src/emc/usr_intf/pncconf/pncconf.glade:32981 +#: src/emc/usr_intf/pncconf/pncconf.glade:33001 +#: src/emc/usr_intf/pncconf/pncconf.glade:33021 +#: src/emc/usr_intf/pncconf/pncconf.glade:33041 +#: src/emc/usr_intf/pncconf/pncconf.glade:33061 +#: src/emc/usr_intf/pncconf/pncconf.glade:33081 +#: src/emc/usr_intf/pncconf/pncconf.glade:33300 +#: src/emc/usr_intf/pncconf/pncconf.glade:33320 +#: src/emc/usr_intf/pncconf/pncconf.glade:33340 +#: src/emc/usr_intf/pncconf/pncconf.glade:33360 +#: src/emc/usr_intf/pncconf/pncconf.glade:33380 +#: src/emc/usr_intf/pncconf/pncconf.glade:33400 +#: src/emc/usr_intf/pncconf/pncconf.glade:33420 +#: src/emc/usr_intf/pncconf/pncconf.glade:33440 +#: src/emc/usr_intf/pncconf/pncconf.glade:33460 +#: src/emc/usr_intf/pncconf/pncconf.glade:33480 +#: src/emc/usr_intf/pncconf/pncconf.glade:33500 +#: src/emc/usr_intf/pncconf/pncconf.glade:33520 +#: src/emc/usr_intf/pncconf/pncconf.glade:33540 +#: src/emc/usr_intf/pncconf/pncconf.glade:33560 +#: src/emc/usr_intf/pncconf/pncconf.glade:33580 +#: src/emc/usr_intf/pncconf/pncconf.glade:33600 +#: src/emc/usr_intf/pncconf/pncconf.glade:33620 +#: src/emc/usr_intf/pncconf/pncconf.glade:33640 +#: src/emc/usr_intf/pncconf/pncconf.glade:33660 +#: src/emc/usr_intf/pncconf/pncconf.glade:33680 +#: src/emc/usr_intf/pncconf/pncconf.glade:33700 +#: src/emc/usr_intf/pncconf/pncconf.glade:33720 +#: src/emc/usr_intf/pncconf/pncconf.glade:33740 +#: src/emc/usr_intf/pncconf/pncconf.glade:35656 +#: src/emc/usr_intf/pncconf/pncconf.glade:35879 +#: src/emc/usr_intf/pncconf/pncconf.glade:37808 +#: src/emc/usr_intf/pncconf/pncconf.glade:37828 +#: src/emc/usr_intf/pncconf/pncconf.glade:37848 +#: src/emc/usr_intf/pncconf/pncconf.glade:37868 +#: src/emc/usr_intf/pncconf/pncconf.glade:37888 +#: src/emc/usr_intf/pncconf/pncconf.glade:37908 +#: src/emc/usr_intf/pncconf/pncconf.glade:37928 +#: src/emc/usr_intf/pncconf/pncconf.glade:37948 +#: src/emc/usr_intf/pncconf/pncconf.glade:37968 +#: src/emc/usr_intf/pncconf/pncconf.glade:37988 +#: src/emc/usr_intf/pncconf/pncconf.glade:38008 +#: src/emc/usr_intf/pncconf/pncconf.glade:38028 +#: src/emc/usr_intf/pncconf/pncconf.glade:38048 +#: src/emc/usr_intf/pncconf/pncconf.glade:38068 +#: src/emc/usr_intf/pncconf/pncconf.glade:38088 +#: src/emc/usr_intf/pncconf/pncconf.glade:38108 +#: src/emc/usr_intf/pncconf/pncconf.glade:38128 +#: src/emc/usr_intf/pncconf/pncconf.glade:38148 +#: src/emc/usr_intf/pncconf/pncconf.glade:38168 +#: src/emc/usr_intf/pncconf/pncconf.glade:38188 +#: src/emc/usr_intf/pncconf/pncconf.glade:38208 +#: src/emc/usr_intf/pncconf/pncconf.glade:38228 +#: src/emc/usr_intf/pncconf/pncconf.glade:38248 +#: src/emc/usr_intf/pncconf/pncconf.glade:38557 +#: src/emc/usr_intf/pncconf/pncconf.glade:38577 +#: src/emc/usr_intf/pncconf/pncconf.glade:38597 +#: src/emc/usr_intf/pncconf/pncconf.glade:38617 +#: src/emc/usr_intf/pncconf/pncconf.glade:38637 +#: src/emc/usr_intf/pncconf/pncconf.glade:38657 +#: src/emc/usr_intf/pncconf/pncconf.glade:38677 +#: src/emc/usr_intf/pncconf/pncconf.glade:38697 +#: src/emc/usr_intf/pncconf/pncconf.glade:38717 +#: src/emc/usr_intf/pncconf/pncconf.glade:38737 +#: src/emc/usr_intf/pncconf/pncconf.glade:38757 +#: src/emc/usr_intf/pncconf/pncconf.glade:39987 +#: src/emc/usr_intf/pncconf/pncconf.glade:40239 +#: src/emc/usr_intf/pncconf/pncconf.glade:42155 +#: src/emc/usr_intf/pncconf/pncconf.glade:42175 +#: src/emc/usr_intf/pncconf/pncconf.glade:42195 +#: src/emc/usr_intf/pncconf/pncconf.glade:42215 +#: src/emc/usr_intf/pncconf/pncconf.glade:42235 +#: src/emc/usr_intf/pncconf/pncconf.glade:42255 +#: src/emc/usr_intf/pncconf/pncconf.glade:42275 +#: src/emc/usr_intf/pncconf/pncconf.glade:42295 +#: src/emc/usr_intf/pncconf/pncconf.glade:42315 +#: src/emc/usr_intf/pncconf/pncconf.glade:42335 +#: src/emc/usr_intf/pncconf/pncconf.glade:42355 +#: src/emc/usr_intf/pncconf/pncconf.glade:42375 +#: src/emc/usr_intf/pncconf/pncconf.glade:42395 +#: src/emc/usr_intf/pncconf/pncconf.glade:42415 +#: src/emc/usr_intf/pncconf/pncconf.glade:42435 +#: src/emc/usr_intf/pncconf/pncconf.glade:42455 +#: src/emc/usr_intf/pncconf/pncconf.glade:42475 +#: src/emc/usr_intf/pncconf/pncconf.glade:42495 +#: src/emc/usr_intf/pncconf/pncconf.glade:42515 +#: src/emc/usr_intf/pncconf/pncconf.glade:42535 +#: src/emc/usr_intf/pncconf/pncconf.glade:42555 +#: src/emc/usr_intf/pncconf/pncconf.glade:42575 +#: src/emc/usr_intf/pncconf/pncconf.glade:42595 +#: src/emc/usr_intf/pncconf/pncconf.glade:42786 +#: src/emc/usr_intf/pncconf/pncconf.glade:42806 +#: src/emc/usr_intf/pncconf/pncconf.glade:42826 +#: src/emc/usr_intf/pncconf/pncconf.glade:42846 +#: src/emc/usr_intf/pncconf/pncconf.glade:42866 +#: src/emc/usr_intf/pncconf/pncconf.glade:42886 +#: src/emc/usr_intf/pncconf/pncconf.glade:42906 +#: src/emc/usr_intf/pncconf/pncconf.glade:42926 +#: src/emc/usr_intf/pncconf/pncconf.glade:42946 +#: src/emc/usr_intf/pncconf/pncconf.glade:42966 +#: src/emc/usr_intf/pncconf/pncconf.glade:42986 +#: src/emc/usr_intf/pncconf/pncconf.glade:43006 +#: src/emc/usr_intf/pncconf/pncconf.glade:43026 +#: src/emc/usr_intf/pncconf/pncconf.glade:43046 +#: src/emc/usr_intf/pncconf/pncconf.glade:43066 +#: src/emc/usr_intf/pncconf/pncconf.glade:43086 +#: src/emc/usr_intf/pncconf/pncconf.glade:43106 +#: src/emc/usr_intf/pncconf/pncconf.glade:43126 +#: src/emc/usr_intf/pncconf/pncconf.glade:43146 +#: src/emc/usr_intf/pncconf/pncconf.glade:43166 +#: src/emc/usr_intf/pncconf/pncconf.glade:43186 +#: src/emc/usr_intf/pncconf/pncconf.glade:43206 +#: src/emc/usr_intf/pncconf/pncconf.glade:43226 +#: src/emc/usr_intf/pncconf/pncconf.glade:45155 +#: src/emc/usr_intf/pncconf/pncconf.glade:45496 +#: src/emc/usr_intf/pncconf/pncconf.glade:46726 +#: src/emc/usr_intf/pncconf/pncconf.glade:46746 +#: src/emc/usr_intf/pncconf/pncconf.glade:46766 +#: src/emc/usr_intf/pncconf/pncconf.glade:46786 +#: src/emc/usr_intf/pncconf/pncconf.glade:46806 +#: src/emc/usr_intf/pncconf/pncconf.glade:46826 +#: src/emc/usr_intf/pncconf/pncconf.glade:46846 +#: src/emc/usr_intf/pncconf/pncconf.glade:46866 +#: src/emc/usr_intf/pncconf/pncconf.glade:46886 +#: src/emc/usr_intf/pncconf/pncconf.glade:46906 +#: src/emc/usr_intf/pncconf/pncconf.glade:46926 +#: src/emc/usr_intf/pncconf/pncconf.glade:47162 +#: src/emc/usr_intf/pncconf/pncconf.glade:49078 +#: src/emc/usr_intf/pncconf/pncconf.glade:49098 +#: src/emc/usr_intf/pncconf/pncconf.glade:49118 +#: src/emc/usr_intf/pncconf/pncconf.glade:49138 +#: src/emc/usr_intf/pncconf/pncconf.glade:49158 +#: src/emc/usr_intf/pncconf/pncconf.glade:49178 +#: src/emc/usr_intf/pncconf/pncconf.glade:49198 +#: src/emc/usr_intf/pncconf/pncconf.glade:49218 +#: src/emc/usr_intf/pncconf/pncconf.glade:49238 +#: src/emc/usr_intf/pncconf/pncconf.glade:49258 +#: src/emc/usr_intf/pncconf/pncconf.glade:49278 +#: src/emc/usr_intf/pncconf/pncconf.glade:49298 +#: src/emc/usr_intf/pncconf/pncconf.glade:49318 +#: src/emc/usr_intf/pncconf/pncconf.glade:49338 +#: src/emc/usr_intf/pncconf/pncconf.glade:49358 +#: src/emc/usr_intf/pncconf/pncconf.glade:49378 +#: src/emc/usr_intf/pncconf/pncconf.glade:49398 +#: src/emc/usr_intf/pncconf/pncconf.glade:49418 +#: src/emc/usr_intf/pncconf/pncconf.glade:49438 +#: src/emc/usr_intf/pncconf/pncconf.glade:49458 +#: src/emc/usr_intf/pncconf/pncconf.glade:49478 +#: src/emc/usr_intf/pncconf/pncconf.glade:49498 +#: src/emc/usr_intf/pncconf/pncconf.glade:49518 +#: src/emc/usr_intf/pncconf/pncconf.glade:49709 +#: src/emc/usr_intf/pncconf/pncconf.glade:49729 +#: src/emc/usr_intf/pncconf/pncconf.glade:49749 +#: src/emc/usr_intf/pncconf/pncconf.glade:49769 +#: src/emc/usr_intf/pncconf/pncconf.glade:49789 +#: src/emc/usr_intf/pncconf/pncconf.glade:49809 +#: src/emc/usr_intf/pncconf/pncconf.glade:49829 +#: src/emc/usr_intf/pncconf/pncconf.glade:49849 +#: src/emc/usr_intf/pncconf/pncconf.glade:49869 +#: src/emc/usr_intf/pncconf/pncconf.glade:49889 +#: src/emc/usr_intf/pncconf/pncconf.glade:49909 +#: src/emc/usr_intf/pncconf/pncconf.glade:49929 +#: src/emc/usr_intf/pncconf/pncconf.glade:49949 +#: src/emc/usr_intf/pncconf/pncconf.glade:49969 +#: src/emc/usr_intf/pncconf/pncconf.glade:49989 +#: src/emc/usr_intf/pncconf/pncconf.glade:50009 +#: src/emc/usr_intf/pncconf/pncconf.glade:50029 +#: src/emc/usr_intf/pncconf/pncconf.glade:50049 +#: src/emc/usr_intf/pncconf/pncconf.glade:50069 +#: src/emc/usr_intf/pncconf/pncconf.glade:50089 +#: src/emc/usr_intf/pncconf/pncconf.glade:50109 +#: src/emc/usr_intf/pncconf/pncconf.glade:50129 +#: src/emc/usr_intf/pncconf/pncconf.glade:50149 +#: src/emc/usr_intf/pncconf/pncconf.glade:52078 +#: src/emc/usr_intf/pncconf/pncconf.glade:52419 +#: src/emc/usr_intf/pncconf/pncconf.glade:53649 +#: src/emc/usr_intf/pncconf/pncconf.glade:53669 +#: src/emc/usr_intf/pncconf/pncconf.glade:53689 +#: src/emc/usr_intf/pncconf/pncconf.glade:53709 +#: src/emc/usr_intf/pncconf/pncconf.glade:53729 +#: src/emc/usr_intf/pncconf/pncconf.glade:53749 +#: src/emc/usr_intf/pncconf/pncconf.glade:53769 +#: src/emc/usr_intf/pncconf/pncconf.glade:53789 +#: src/emc/usr_intf/pncconf/pncconf.glade:53809 +#: src/emc/usr_intf/pncconf/pncconf.glade:53829 +#: src/emc/usr_intf/pncconf/pncconf.glade:53849 +#: src/emc/usr_intf/pncconf/pncconf.glade:54085 +#: src/emc/usr_intf/pncconf/pncconf.glade:56001 +#: src/emc/usr_intf/pncconf/pncconf.glade:56021 +#: src/emc/usr_intf/pncconf/pncconf.glade:56041 +#: src/emc/usr_intf/pncconf/pncconf.glade:56061 +#: src/emc/usr_intf/pncconf/pncconf.glade:56081 +#: src/emc/usr_intf/pncconf/pncconf.glade:56101 +#: src/emc/usr_intf/pncconf/pncconf.glade:56121 +#: src/emc/usr_intf/pncconf/pncconf.glade:56141 +#: src/emc/usr_intf/pncconf/pncconf.glade:56161 +#: src/emc/usr_intf/pncconf/pncconf.glade:56181 +#: src/emc/usr_intf/pncconf/pncconf.glade:56201 +#: src/emc/usr_intf/pncconf/pncconf.glade:56221 +#: src/emc/usr_intf/pncconf/pncconf.glade:56241 +#: src/emc/usr_intf/pncconf/pncconf.glade:56261 +#: src/emc/usr_intf/pncconf/pncconf.glade:56281 +#: src/emc/usr_intf/pncconf/pncconf.glade:56301 +#: src/emc/usr_intf/pncconf/pncconf.glade:56321 +#: src/emc/usr_intf/pncconf/pncconf.glade:56341 +#: src/emc/usr_intf/pncconf/pncconf.glade:56361 +#: src/emc/usr_intf/pncconf/pncconf.glade:56381 +#: src/emc/usr_intf/pncconf/pncconf.glade:56401 +#: src/emc/usr_intf/pncconf/pncconf.glade:56421 +#: src/emc/usr_intf/pncconf/pncconf.glade:56441 +#: src/emc/usr_intf/pncconf/pncconf.glade:56632 +#: src/emc/usr_intf/pncconf/pncconf.glade:56652 +#: src/emc/usr_intf/pncconf/pncconf.glade:56672 +#: src/emc/usr_intf/pncconf/pncconf.glade:56692 +#: src/emc/usr_intf/pncconf/pncconf.glade:56712 +#: src/emc/usr_intf/pncconf/pncconf.glade:56732 +#: src/emc/usr_intf/pncconf/pncconf.glade:56752 +#: src/emc/usr_intf/pncconf/pncconf.glade:56772 +#: src/emc/usr_intf/pncconf/pncconf.glade:56792 +#: src/emc/usr_intf/pncconf/pncconf.glade:56812 +#: src/emc/usr_intf/pncconf/pncconf.glade:56832 +#: src/emc/usr_intf/pncconf/pncconf.glade:56852 +#: src/emc/usr_intf/pncconf/pncconf.glade:56872 +#: src/emc/usr_intf/pncconf/pncconf.glade:56892 +#: src/emc/usr_intf/pncconf/pncconf.glade:56912 +#: src/emc/usr_intf/pncconf/pncconf.glade:56932 +#: src/emc/usr_intf/pncconf/pncconf.glade:56952 +#: src/emc/usr_intf/pncconf/pncconf.glade:56972 +#: src/emc/usr_intf/pncconf/pncconf.glade:56992 +#: src/emc/usr_intf/pncconf/pncconf.glade:57012 +#: src/emc/usr_intf/pncconf/pncconf.glade:57032 +#: src/emc/usr_intf/pncconf/pncconf.glade:57052 +#: src/emc/usr_intf/pncconf/pncconf.glade:57072 +#: src/emc/usr_intf/pncconf/pncconf.glade:59001 +#: src/emc/usr_intf/pncconf/pncconf.glade:59342 +#: src/emc/usr_intf/pncconf/pncconf.glade:60572 +#: src/emc/usr_intf/pncconf/pncconf.glade:60592 +#: src/emc/usr_intf/pncconf/pncconf.glade:60612 +#: src/emc/usr_intf/pncconf/pncconf.glade:60632 +#: src/emc/usr_intf/pncconf/pncconf.glade:60652 +#: src/emc/usr_intf/pncconf/pncconf.glade:60672 +#: src/emc/usr_intf/pncconf/pncconf.glade:60692 +#: src/emc/usr_intf/pncconf/pncconf.glade:60712 +#: src/emc/usr_intf/pncconf/pncconf.glade:60732 +#: src/emc/usr_intf/pncconf/pncconf.glade:60752 +#: src/emc/usr_intf/pncconf/pncconf.glade:60772 +msgid "" +"GPIO Input\n" +"GPIO Output\n" +"GPIO O Drain\n" +"Encoder\n" +"PWM\n" +"StepGen\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1649 -#: emc/usr_intf/pncconf/pncconf.glade:1780 -#: emc/usr_intf/pncconf/pncconf.glade:2690 -#: emc/usr_intf/pncconf/pncconf.glade:3571 -#: emc/usr_intf/pncconf/pncconf.glade:4452 -#: emc/usr_intf/pncconf/pncconf.glade:5333 -#: emc/usr_intf/pncconf/pncconf.glade:57371 -msgid "Details" +#: src/emc/usr_intf/pncconf/pncconf.glade:8913 +#: src/emc/usr_intf/pncconf/pncconf.glade:13730 +#: src/emc/usr_intf/pncconf/pncconf.glade:18936 +#: src/emc/usr_intf/pncconf/pncconf.glade:20738 +#: src/emc/usr_intf/pncconf/pncconf.glade:21031 +#: src/emc/usr_intf/pncconf/pncconf.glade:22827 +#: src/emc/usr_intf/pncconf/pncconf.glade:24623 +msgid " 1:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1667 -msgid "USB Joystick Jogging " +#: src/emc/usr_intf/pncconf/pncconf.glade:8927 +#: src/emc/usr_intf/pncconf/pncconf.glade:13716 +#: src/emc/usr_intf/pncconf/pncconf.glade:18922 +#: src/emc/usr_intf/pncconf/pncconf.glade:20724 +#: src/emc/usr_intf/pncconf/pncconf.glade:21045 +#: src/emc/usr_intf/pncconf/pncconf.glade:22841 +#: src/emc/usr_intf/pncconf/pncconf.glade:24637 +msgid " 3:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1711 -msgid "shared buttons for all axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:8941 +#: src/emc/usr_intf/pncconf/pncconf.glade:13702 +#: src/emc/usr_intf/pncconf/pncconf.glade:18908 +#: src/emc/usr_intf/pncconf/pncconf.glade:20710 +#: src/emc/usr_intf/pncconf/pncconf.glade:21059 +#: src/emc/usr_intf/pncconf/pncconf.glade:22855 +#: src/emc/usr_intf/pncconf/pncconf.glade:24651 +msgid " 5:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1724 -msgid "buttons for each axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:8955 +#: src/emc/usr_intf/pncconf/pncconf.glade:13688 +#: src/emc/usr_intf/pncconf/pncconf.glade:18894 +#: src/emc/usr_intf/pncconf/pncconf.glade:20696 +#: src/emc/usr_intf/pncconf/pncconf.glade:21073 +#: src/emc/usr_intf/pncconf/pncconf.glade:22869 +#: src/emc/usr_intf/pncconf/pncconf.glade:24665 +msgid " 7:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1798 -msgid "External Button Jogging" +#: src/emc/usr_intf/pncconf/pncconf.glade:8969 +#: src/emc/usr_intf/pncconf/pncconf.glade:13674 +#: src/emc/usr_intf/pncconf/pncconf.glade:18880 +#: src/emc/usr_intf/pncconf/pncconf.glade:20682 +#: src/emc/usr_intf/pncconf/pncconf.glade:21087 +#: src/emc/usr_intf/pncconf/pncconf.glade:22883 +#: src/emc/usr_intf/pncconf/pncconf.glade:24679 +msgid " 9:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1839 -msgid "Shared MPG / selectable axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:8983 +#: src/emc/usr_intf/pncconf/pncconf.glade:13660 +#: src/emc/usr_intf/pncconf/pncconf.glade:18866 +#: src/emc/usr_intf/pncconf/pncconf.glade:20668 +#: src/emc/usr_intf/pncconf/pncconf.glade:21101 +#: src/emc/usr_intf/pncconf/pncconf.glade:22897 +#: src/emc/usr_intf/pncconf/pncconf.glade:24693 +msgid "11:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1852 -msgid "Mpg per axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:8997 +#: src/emc/usr_intf/pncconf/pncconf.glade:13646 +#: src/emc/usr_intf/pncconf/pncconf.glade:18852 +#: src/emc/usr_intf/pncconf/pncconf.glade:20654 +#: src/emc/usr_intf/pncconf/pncconf.glade:21115 +#: src/emc/usr_intf/pncconf/pncconf.glade:22911 +#: src/emc/usr_intf/pncconf/pncconf.glade:24707 +msgid "13:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1867 -msgid "selectable MPG increments" +#: src/emc/usr_intf/pncconf/pncconf.glade:9011 +#: src/emc/usr_intf/pncconf/pncconf.glade:13632 +#: src/emc/usr_intf/pncconf/pncconf.glade:18838 +#: src/emc/usr_intf/pncconf/pncconf.glade:20640 +#: src/emc/usr_intf/pncconf/pncconf.glade:21129 +#: src/emc/usr_intf/pncconf/pncconf.glade:22925 +#: src/emc/usr_intf/pncconf/pncconf.glade:24721 +msgid "15:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1932 -#: emc/usr_intf/pncconf/pncconf.glade:2907 -#: emc/usr_intf/pncconf/pncconf.glade:3788 -#: emc/usr_intf/pncconf/pncconf.glade:4669 -msgid "Mux options" +#: src/emc/usr_intf/pncconf/pncconf.glade:9025 +#: src/emc/usr_intf/pncconf/pncconf.glade:13618 +#: src/emc/usr_intf/pncconf/pncconf.glade:18824 +#: src/emc/usr_intf/pncconf/pncconf.glade:20626 +#: src/emc/usr_intf/pncconf/pncconf.glade:21143 +#: src/emc/usr_intf/pncconf/pncconf.glade:22939 +#: src/emc/usr_intf/pncconf/pncconf.glade:24735 +msgid "17:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1980 -#: emc/usr_intf/pncconf/pncconf.glade:2868 -#: emc/usr_intf/pncconf/pncconf.glade:3763 -#: emc/usr_intf/pncconf/pncconf.glade:4644 -msgid "use debounce" +#: src/emc/usr_intf/pncconf/pncconf.glade:9039 +#: src/emc/usr_intf/pncconf/pncconf.glade:13604 +#: src/emc/usr_intf/pncconf/pncconf.glade:18810 +#: src/emc/usr_intf/pncconf/pncconf.glade:20612 +#: src/emc/usr_intf/pncconf/pncconf.glade:21157 +#: src/emc/usr_intf/pncconf/pncconf.glade:22953 +#: src/emc/usr_intf/pncconf/pncconf.glade:24749 +msgid "19:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:1995 -msgid "use gray code" +#: src/emc/usr_intf/pncconf/pncconf.glade:9053 +#: src/emc/usr_intf/pncconf/pncconf.glade:13590 +#: src/emc/usr_intf/pncconf/pncconf.glade:18796 +#: src/emc/usr_intf/pncconf/pncconf.glade:20598 +#: src/emc/usr_intf/pncconf/pncconf.glade:21171 +#: src/emc/usr_intf/pncconf/pncconf.glade:22967 +#: src/emc/usr_intf/pncconf/pncconf.glade:24763 +msgid "21:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:2010 -msgid "ignore all inputs false" +#: src/emc/usr_intf/pncconf/pncconf.glade:9067 +#: src/emc/usr_intf/pncconf/pncconf.glade:13576 +#: src/emc/usr_intf/pncconf/pncconf.glade:18782 +#: src/emc/usr_intf/pncconf/pncconf.glade:20584 +#: src/emc/usr_intf/pncconf/pncconf.glade:21185 +#: src/emc/usr_intf/pncconf/pncconf.glade:22981 +#: src/emc/usr_intf/pncconf/pncconf.glade:24777 +msgid "23:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:2035 -#: emc/usr_intf/pncconf/pncconf.glade:2048 -#: emc/usr_intf/pncconf/pncconf.glade:2061 -#: emc/usr_intf/pncconf/pncconf.glade:2407 -#: emc/usr_intf/pncconf/pncconf.glade:2420 -#: emc/usr_intf/pncconf/pncconf.glade:2433 -#: emc/usr_intf/pncconf/pncconf.glade:2446 -#: emc/usr_intf/pncconf/pncconf.glade:2457 -#: emc/usr_intf/pncconf/pncconf.glade:2470 -#: emc/usr_intf/pncconf/pncconf.glade:2483 -#: emc/usr_intf/pncconf/pncconf.glade:2496 -#: emc/usr_intf/pncconf/pncconf.glade:2509 -#: emc/usr_intf/pncconf/pncconf.glade:2522 -#: emc/usr_intf/pncconf/pncconf.glade:2535 -#: emc/usr_intf/pncconf/pncconf.glade:8343 -#: emc/usr_intf/pncconf/pncconf.glade:8379 -#: emc/usr_intf/pncconf/pncconf.glade:56542 -#: emc/usr_intf/pncconf/pncconf.glade:61245 -#: emc/usr_intf/pncconf/pncconf.glade:61257 -#: emc/usr_intf/pncconf/pncconf.glade:61269 -#: emc/usr_intf/pncconf/pncconf.glade:61281 -#: emc/usr_intf/pncconf/pncconf.glade:62454 -#: emc/usr_intf/pncconf/pncconf.glade:62466 -#: emc/usr_intf/pncconf/pncconf.glade:62478 -#: emc/usr_intf/pncconf/pncconf.glade:62490 -#: emc/usr_intf/pncconf/pncconf.glade:63431 -#: emc/usr_intf/pncconf/pncconf.glade:63443 -#: emc/usr_intf/pncconf/pncconf.glade:63455 -#: emc/usr_intf/pncconf/pncconf.glade:63467 -#: emc/usr_intf/pncconf/pncconf.glade:64640 -#: emc/usr_intf/pncconf/pncconf.glade:64652 -#: emc/usr_intf/pncconf/pncconf.glade:64664 -#: emc/usr_intf/pncconf/pncconf.glade:64676 -#: emc/usr_intf/pncconf/pncconf.glade:65587 -#: emc/usr_intf/pncconf/pncconf.glade:65599 -#: emc/usr_intf/pncconf/pncconf.glade:65611 -#: emc/usr_intf/pncconf/pncconf.glade:65623 -msgid "label" +#: src/emc/usr_intf/pncconf/pncconf.glade:9801 +#: src/emc/usr_intf/pncconf/pncconf.glade:12840 +#: src/emc/usr_intf/pncconf/pncconf.glade:17994 +#: src/emc/usr_intf/pncconf/pncconf.glade:20170 +#: src/emc/usr_intf/pncconf/pncconf.glade:21597 +#: src/emc/usr_intf/pncconf/pncconf.glade:23393 +#: src/emc/usr_intf/pncconf/pncconf.glade:25189 +msgid "47:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:2073 -#: emc/usr_intf/pncconf/pncconf.glade:2559 -#: emc/usr_intf/pncconf/pncconf.glade:3300 -#: emc/usr_intf/pncconf/pncconf.glade:4181 -#: emc/usr_intf/pncconf/pncconf.glade:5062 -msgid " abc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9868 +#: src/emc/usr_intf/pncconf/pncconf.glade:12773 +#: src/emc/usr_intf/pncconf/pncconf.glade:17927 +#: src/emc/usr_intf/pncconf/pncconf.glade:20119 +#: src/emc/usr_intf/pncconf/pncconf.glade:21648 +#: src/emc/usr_intf/pncconf/pncconf.glade:23444 +#: src/emc/usr_intf/pncconf/pncconf.glade:25240 +msgid "45:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:2086 -#: emc/usr_intf/pncconf/pncconf.glade:3422 -#: emc/usr_intf/pncconf/pncconf.glade:4303 -#: emc/usr_intf/pncconf/pncconf.glade:5184 -msgid " ab)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9884 +#: src/emc/usr_intf/pncconf/pncconf.glade:12757 +#: src/emc/usr_intf/pncconf/pncconf.glade:17911 +#: src/emc/usr_intf/pncconf/pncconf.glade:20103 +#: src/emc/usr_intf/pncconf/pncconf.glade:21664 +#: src/emc/usr_intf/pncconf/pncconf.glade:23460 +#: src/emc/usr_intf/pncconf/pncconf.glade:25256 +msgid "43:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:2372 -#: emc/usr_intf/pncconf/pncconf.glade:3321 -#: emc/usr_intf/pncconf/pncconf.glade:4202 -#: emc/usr_intf/pncconf/pncconf.glade:5083 -msgid " ac)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9900 +#: src/emc/usr_intf/pncconf/pncconf.glade:12741 +#: src/emc/usr_intf/pncconf/pncconf.glade:17895 +#: src/emc/usr_intf/pncconf/pncconf.glade:20087 +#: src/emc/usr_intf/pncconf/pncconf.glade:21680 +#: src/emc/usr_intf/pncconf/pncconf.glade:23476 +#: src/emc/usr_intf/pncconf/pncconf.glade:25272 +msgid "41:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:2383 -#: emc/usr_intf/pncconf/pncconf.glade:3311 -#: emc/usr_intf/pncconf/pncconf.glade:4192 -#: emc/usr_intf/pncconf/pncconf.glade:5073 -msgid " bc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9916 +#: src/emc/usr_intf/pncconf/pncconf.glade:12725 +#: src/emc/usr_intf/pncconf/pncconf.glade:17879 +#: src/emc/usr_intf/pncconf/pncconf.glade:20071 +#: src/emc/usr_intf/pncconf/pncconf.glade:21696 +#: src/emc/usr_intf/pncconf/pncconf.glade:23492 +#: src/emc/usr_intf/pncconf/pncconf.glade:25288 +msgid "39:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:2547 -#: emc/usr_intf/pncconf/pncconf.glade:3332 -#: emc/usr_intf/pncconf/pncconf.glade:4213 -#: emc/usr_intf/pncconf/pncconf.glade:5094 -msgid " c)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9932 +#: src/emc/usr_intf/pncconf/pncconf.glade:12709 +#: src/emc/usr_intf/pncconf/pncconf.glade:17863 +#: src/emc/usr_intf/pncconf/pncconf.glade:20055 +#: src/emc/usr_intf/pncconf/pncconf.glade:21712 +#: src/emc/usr_intf/pncconf/pncconf.glade:23508 +#: src/emc/usr_intf/pncconf/pncconf.glade:25304 +msgid "37:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:2570 -#: emc/usr_intf/pncconf/pncconf.glade:2966 -#: emc/usr_intf/pncconf/pncconf.glade:3847 -#: emc/usr_intf/pncconf/pncconf.glade:4728 -msgid " ad)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9948 +#: src/emc/usr_intf/pncconf/pncconf.glade:12693 +#: src/emc/usr_intf/pncconf/pncconf.glade:17847 +#: src/emc/usr_intf/pncconf/pncconf.glade:20039 +#: src/emc/usr_intf/pncconf/pncconf.glade:21728 +#: src/emc/usr_intf/pncconf/pncconf.glade:23524 +#: src/emc/usr_intf/pncconf/pncconf.glade:25320 +msgid "35:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:2583 -#: emc/usr_intf/pncconf/pncconf.glade:2953 -#: emc/usr_intf/pncconf/pncconf.glade:3834 -#: emc/usr_intf/pncconf/pncconf.glade:4715 -msgid " bd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9964 +#: src/emc/usr_intf/pncconf/pncconf.glade:12677 +#: src/emc/usr_intf/pncconf/pncconf.glade:17831 +#: src/emc/usr_intf/pncconf/pncconf.glade:20023 +#: src/emc/usr_intf/pncconf/pncconf.glade:21744 +#: src/emc/usr_intf/pncconf/pncconf.glade:23540 +#: src/emc/usr_intf/pncconf/pncconf.glade:25336 +msgid "33:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:2596 -#: emc/usr_intf/pncconf/pncconf.glade:2927 -#: emc/usr_intf/pncconf/pncconf.glade:3808 -#: emc/usr_intf/pncconf/pncconf.glade:4689 -msgid " cd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:10337 +#: src/emc/usr_intf/pncconf/pncconf.glade:12304 +#: src/emc/usr_intf/pncconf/pncconf.glade:17458 +#: src/emc/usr_intf/pncconf/pncconf.glade:19762 +#: src/emc/usr_intf/pncconf/pncconf.glade:22005 +#: src/emc/usr_intf/pncconf/pncconf.glade:23801 +#: src/emc/usr_intf/pncconf/pncconf.glade:25597 +msgid "25:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:2609 -#: emc/usr_intf/pncconf/pncconf.glade:2991 -#: emc/usr_intf/pncconf/pncconf.glade:3872 -#: emc/usr_intf/pncconf/pncconf.glade:4753 -msgid " acd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:10353 +#: src/emc/usr_intf/pncconf/pncconf.glade:12288 +#: src/emc/usr_intf/pncconf/pncconf.glade:17442 +#: src/emc/usr_intf/pncconf/pncconf.glade:19746 +#: src/emc/usr_intf/pncconf/pncconf.glade:22021 +#: src/emc/usr_intf/pncconf/pncconf.glade:23817 +#: src/emc/usr_intf/pncconf/pncconf.glade:25613 +msgid "27:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:2622 -#: emc/usr_intf/pncconf/pncconf.glade:3004 -#: emc/usr_intf/pncconf/pncconf.glade:3885 -#: emc/usr_intf/pncconf/pncconf.glade:4766 -msgid " bcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:10369 +#: src/emc/usr_intf/pncconf/pncconf.glade:12272 +#: src/emc/usr_intf/pncconf/pncconf.glade:17426 +#: src/emc/usr_intf/pncconf/pncconf.glade:19730 +#: src/emc/usr_intf/pncconf/pncconf.glade:22037 +#: src/emc/usr_intf/pncconf/pncconf.glade:23833 +#: src/emc/usr_intf/pncconf/pncconf.glade:25629 +msgid "29:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:2635 -#: emc/usr_intf/pncconf/pncconf.glade:3017 -#: emc/usr_intf/pncconf/pncconf.glade:3898 -#: emc/usr_intf/pncconf/pncconf.glade:4779 -msgid " abcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:10385 +#: src/emc/usr_intf/pncconf/pncconf.glade:12256 +#: src/emc/usr_intf/pncconf/pncconf.glade:17410 +#: src/emc/usr_intf/pncconf/pncconf.glade:19714 +#: src/emc/usr_intf/pncconf/pncconf.glade:22053 +#: src/emc/usr_intf/pncconf/pncconf.glade:23849 +#: src/emc/usr_intf/pncconf/pncconf.glade:25645 +msgid "31:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:2648 -#: emc/usr_intf/pncconf/pncconf.glade:2979 -#: emc/usr_intf/pncconf/pncconf.glade:3860 -#: emc/usr_intf/pncconf/pncconf.glade:4741 -msgid " d)" +#: src/emc/usr_intf/pncconf/pncconf.glade:10677 +#: src/emc/usr_intf/pncconf/pncconf.glade:10689 +#: src/emc/usr_intf/pncconf/pncconf.glade:11955 +#: src/emc/usr_intf/pncconf/pncconf.glade:11967 +#: src/emc/usr_intf/pncconf/pncconf.glade:14464 +#: src/emc/usr_intf/pncconf/pncconf.glade:14476 +#: src/emc/usr_intf/pncconf/pncconf.glade:17161 +#: src/emc/usr_intf/pncconf/pncconf.glade:17173 +#: src/emc/usr_intf/pncconf/pncconf.glade:19567 +#: src/emc/usr_intf/pncconf/pncconf.glade:19579 +#: src/emc/usr_intf/pncconf/pncconf.glade:22190 +#: src/emc/usr_intf/pncconf/pncconf.glade:22202 +#: src/emc/usr_intf/pncconf/pncconf.glade:23986 +#: src/emc/usr_intf/pncconf/pncconf.glade:23998 +#: src/emc/usr_intf/pncconf/pncconf.glade:25782 +#: src/emc/usr_intf/pncconf/pncconf.glade:25794 +#: src/emc/usr_intf/pncconf/pncconf.glade:28287 +#: src/emc/usr_intf/pncconf/pncconf.glade:28299 +#: src/emc/usr_intf/pncconf/pncconf.glade:29415 +#: src/emc/usr_intf/pncconf/pncconf.glade:29427 +#: src/emc/usr_intf/pncconf/pncconf.glade:32869 +#: src/emc/usr_intf/pncconf/pncconf.glade:33760 +#: src/emc/usr_intf/pncconf/pncconf.glade:33772 +#: src/emc/usr_intf/pncconf/pncconf.glade:37771 +#: src/emc/usr_intf/pncconf/pncconf.glade:37783 +#: src/emc/usr_intf/pncconf/pncconf.glade:38777 +#: src/emc/usr_intf/pncconf/pncconf.glade:38789 +#: src/emc/usr_intf/pncconf/pncconf.glade:42131 +#: src/emc/usr_intf/pncconf/pncconf.glade:42143 +#: src/emc/usr_intf/pncconf/pncconf.glade:43259 +#: src/emc/usr_intf/pncconf/pncconf.glade:43271 +#: src/emc/usr_intf/pncconf/pncconf.glade:46702 +#: src/emc/usr_intf/pncconf/pncconf.glade:46714 +#: src/emc/usr_intf/pncconf/pncconf.glade:49054 +#: src/emc/usr_intf/pncconf/pncconf.glade:49066 +#: src/emc/usr_intf/pncconf/pncconf.glade:50182 +#: src/emc/usr_intf/pncconf/pncconf.glade:50194 +#: src/emc/usr_intf/pncconf/pncconf.glade:53625 +#: src/emc/usr_intf/pncconf/pncconf.glade:53637 +#: src/emc/usr_intf/pncconf/pncconf.glade:55977 +#: src/emc/usr_intf/pncconf/pncconf.glade:55989 +#: src/emc/usr_intf/pncconf/pncconf.glade:57105 +#: src/emc/usr_intf/pncconf/pncconf.glade:57117 +#: src/emc/usr_intf/pncconf/pncconf.glade:60548 +#: src/emc/usr_intf/pncconf/pncconf.glade:60560 +msgid "function" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:2664 -msgid "increments" +#: src/emc/usr_intf/pncconf/pncconf.glade:10703 +#: src/emc/usr_intf/pncconf/pncconf.glade:11940 +#: src/emc/usr_intf/pncconf/pncconf.glade:14449 +#: src/emc/usr_intf/pncconf/pncconf.glade:17146 +#: src/emc/usr_intf/pncconf/pncconf.glade:19553 +#: src/emc/usr_intf/pncconf/pncconf.glade:22217 +#: src/emc/usr_intf/pncconf/pncconf.glade:24013 +#: src/emc/usr_intf/pncconf/pncconf.glade:25809 +msgid "Launch test panel" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:2708 -msgid "External MPG Jogging" +#: src/emc/usr_intf/pncconf/pncconf.glade:11192 +#: src/emc/usr_intf/pncconf/pncconf.glade:11204 +#: src/emc/usr_intf/pncconf/pncconf.glade:11440 +#: src/emc/usr_intf/pncconf/pncconf.glade:11454 +#: src/emc/usr_intf/pncconf/pncconf.glade:13949 +#: src/emc/usr_intf/pncconf/pncconf.glade:13963 +#: src/emc/usr_intf/pncconf/pncconf.glade:16645 +#: src/emc/usr_intf/pncconf/pncconf.glade:16659 +#: src/emc/usr_intf/pncconf/pncconf.glade:19190 +#: src/emc/usr_intf/pncconf/pncconf.glade:19204 +#: src/emc/usr_intf/pncconf/pncconf.glade:22567 +#: src/emc/usr_intf/pncconf/pncconf.glade:22579 +#: src/emc/usr_intf/pncconf/pncconf.glade:24363 +#: src/emc/usr_intf/pncconf/pncconf.glade:24375 +#: src/emc/usr_intf/pncconf/pncconf.glade:26159 +#: src/emc/usr_intf/pncconf/pncconf.glade:26171 +#: src/emc/usr_intf/pncconf/pncconf.glade:28772 +#: src/emc/usr_intf/pncconf/pncconf.glade:28784 +#: src/emc/usr_intf/pncconf/pncconf.glade:28917 +#: src/emc/usr_intf/pncconf/pncconf.glade:28931 +#: src/emc/usr_intf/pncconf/pncconf.glade:33102 +#: src/emc/usr_intf/pncconf/pncconf.glade:33275 +#: src/emc/usr_intf/pncconf/pncconf.glade:33289 +#: src/emc/usr_intf/pncconf/pncconf.glade:38269 +#: src/emc/usr_intf/pncconf/pncconf.glade:38281 +#: src/emc/usr_intf/pncconf/pncconf.glade:38532 +#: src/emc/usr_intf/pncconf/pncconf.glade:38546 +#: src/emc/usr_intf/pncconf/pncconf.glade:42616 +#: src/emc/usr_intf/pncconf/pncconf.glade:42628 +#: src/emc/usr_intf/pncconf/pncconf.glade:42761 +#: src/emc/usr_intf/pncconf/pncconf.glade:42775 +#: src/emc/usr_intf/pncconf/pncconf.glade:46947 +#: src/emc/usr_intf/pncconf/pncconf.glade:46959 +#: src/emc/usr_intf/pncconf/pncconf.glade:49539 +#: src/emc/usr_intf/pncconf/pncconf.glade:49551 +#: src/emc/usr_intf/pncconf/pncconf.glade:49684 +#: src/emc/usr_intf/pncconf/pncconf.glade:49698 +#: src/emc/usr_intf/pncconf/pncconf.glade:53870 +#: src/emc/usr_intf/pncconf/pncconf.glade:53882 +#: src/emc/usr_intf/pncconf/pncconf.glade:56462 +#: src/emc/usr_intf/pncconf/pncconf.glade:56474 +#: src/emc/usr_intf/pncconf/pncconf.glade:56607 +#: src/emc/usr_intf/pncconf/pncconf.glade:56621 +#: src/emc/usr_intf/pncconf/pncconf.glade:60793 +#: src/emc/usr_intf/pncconf/pncconf.glade:60805 +msgid "Num" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:2739 -#: emc/usr_intf/pncconf/pncconf.glade:3620 -#: emc/usr_intf/pncconf/pncconf.glade:4501 -msgid "Use MPG " +#: src/emc/usr_intf/pncconf/pncconf.glade:11222 +msgid "" +" I/O\n" +"Connector 2" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:2752 -#: emc/usr_intf/pncconf/pncconf.glade:3633 -#: emc/usr_intf/pncconf/pncconf.glade:4514 -msgid "use switches" +#: src/emc/usr_intf/pncconf/pncconf.glade:13835 +msgid "" +" I/O\n" +" Connector 3" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:2838 -#: emc/usr_intf/pncconf/pncconf.glade:3733 -#: emc/usr_intf/pncconf/pncconf.glade:4614 -msgid "ignore all-inputs false" +#: src/emc/usr_intf/pncconf/pncconf.glade:16281 +#: src/emc/usr_intf/pncconf/pncconf.glade:16295 +#: src/emc/usr_intf/pncconf/pncconf.glade:16322 +#: src/emc/usr_intf/pncconf/pncconf.glade:26441 +#: src/emc/usr_intf/pncconf/pncconf.glade:26468 +#: src/emc/usr_intf/pncconf/pncconf.glade:26482 +#: src/emc/usr_intf/pncconf/pncconf.glade:31232 +#: src/emc/usr_intf/pncconf/pncconf.glade:31246 +#: src/emc/usr_intf/pncconf/pncconf.glade:31273 +#: src/emc/usr_intf/pncconf/pncconf.glade:31708 +#: src/emc/usr_intf/pncconf/pncconf.glade:31735 +#: src/emc/usr_intf/pncconf/pncconf.glade:31749 +#: src/emc/usr_intf/pncconf/pncconf.glade:35577 +#: src/emc/usr_intf/pncconf/pncconf.glade:35591 +#: src/emc/usr_intf/pncconf/pncconf.glade:35618 +#: src/emc/usr_intf/pncconf/pncconf.glade:35925 +#: src/emc/usr_intf/pncconf/pncconf.glade:35952 +#: src/emc/usr_intf/pncconf/pncconf.glade:35966 +#: src/emc/usr_intf/pncconf/pncconf.glade:39909 +#: src/emc/usr_intf/pncconf/pncconf.glade:39923 +#: src/emc/usr_intf/pncconf/pncconf.glade:39950 +#: src/emc/usr_intf/pncconf/pncconf.glade:40285 +#: src/emc/usr_intf/pncconf/pncconf.glade:40312 +#: src/emc/usr_intf/pncconf/pncconf.glade:40326 +#: src/emc/usr_intf/pncconf/pncconf.glade:45076 +#: src/emc/usr_intf/pncconf/pncconf.glade:45090 +#: src/emc/usr_intf/pncconf/pncconf.glade:45117 +#: src/emc/usr_intf/pncconf/pncconf.glade:45541 +#: src/emc/usr_intf/pncconf/pncconf.glade:45568 +#: src/emc/usr_intf/pncconf/pncconf.glade:45582 +#: src/emc/usr_intf/pncconf/pncconf.glade:47208 +#: src/emc/usr_intf/pncconf/pncconf.glade:47235 +#: src/emc/usr_intf/pncconf/pncconf.glade:47249 +#: src/emc/usr_intf/pncconf/pncconf.glade:51999 +#: src/emc/usr_intf/pncconf/pncconf.glade:52013 +#: src/emc/usr_intf/pncconf/pncconf.glade:52040 +#: src/emc/usr_intf/pncconf/pncconf.glade:52464 +#: src/emc/usr_intf/pncconf/pncconf.glade:52491 +#: src/emc/usr_intf/pncconf/pncconf.glade:52505 +#: src/emc/usr_intf/pncconf/pncconf.glade:54131 +#: src/emc/usr_intf/pncconf/pncconf.glade:54158 +#: src/emc/usr_intf/pncconf/pncconf.glade:54172 +#: src/emc/usr_intf/pncconf/pncconf.glade:58922 +#: src/emc/usr_intf/pncconf/pncconf.glade:58936 +#: src/emc/usr_intf/pncconf/pncconf.glade:58963 +#: src/emc/usr_intf/pncconf/pncconf.glade:59387 +#: src/emc/usr_intf/pncconf/pncconf.glade:59414 +#: src/emc/usr_intf/pncconf/pncconf.glade:59428 +msgid " " msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:2853 -#: emc/usr_intf/pncconf/pncconf.glade:3748 -#: emc/usr_intf/pncconf/pncconf.glade:4629 -msgid "use graycode" +#: src/emc/usr_intf/pncconf/pncconf.glade:16427 +msgid "" +" I/O\n" +" Connector 4" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:2940 -#: emc/usr_intf/pncconf/pncconf.glade:3821 -#: emc/usr_intf/pncconf/pncconf.glade:4702 -msgid " abd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:19041 +msgid "" +" I/O\n" +" Connector 5" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:3555 -#: emc/usr_intf/pncconf/pncconf.glade:4436 -#: emc/usr_intf/pncconf/pncconf.glade:5317 -msgid "Increments" +#: src/emc/usr_intf/pncconf/pncconf.glade:20837 +msgid "" +" I/O\n" +"Connector 6" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:3589 -msgid "External Feed Override" +#: src/emc/usr_intf/pncconf/pncconf.glade:22633 +msgid "" +" I/O\n" +"Connector 7" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:4470 -msgid "Max Velocity Override" +#: src/emc/usr_intf/pncconf/pncconf.glade:24429 +msgid "" +" I/O\n" +"Connector 8" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:5351 -msgid "External Spindle Override" +#: src/emc/usr_intf/pncconf/pncconf.glade:26225 +msgid "" +" I/O\n" +" Connector 9" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:5379 -msgid "GUI configuration" +#: src/emc/usr_intf/pncconf/pncconf.glade:31378 +#: src/emc/usr_intf/pncconf/pncconf.glade:38299 +#: src/emc/usr_intf/pncconf/pncconf.glade:45222 +#: src/emc/usr_intf/pncconf/pncconf.glade:52145 +#: src/emc/usr_intf/pncconf/pncconf.glade:59068 +msgid "page 2" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:33131 +#: src/emc/usr_intf/pncconf/pncconf.glade:40054 +#: src/emc/usr_intf/pncconf/pncconf.glade:46977 +#: src/emc/usr_intf/pncconf/pncconf.glade:53900 +#: src/emc/usr_intf/pncconf/pncconf.glade:60823 +msgid "page 3" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:5398 -msgid "Frontend" +#: src/emc/usr_intf/pncconf/pncconf.glade:33147 +msgid "Smart Serial 0" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:5557 -msgid "" -"Commanded\n" -"Actual" +#: src/emc/usr_intf/pncconf/pncconf.glade:40070 +msgid "Smart Serial 1" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:5570 -msgid "" -"Machine\n" -"Relative\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:46993 +msgid "Smart Serial 2" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:5608 -msgid "Max Feed Override" +#: src/emc/usr_intf/pncconf/pncconf.glade:53916 +msgid "Smart Serial 3" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:5667 -msgid "Min Spindle Override" +#: src/emc/usr_intf/pncconf/pncconf.glade:60839 +msgid "Smart Serial 4" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:5691 -msgid "Max Spindle Override " +#: src/emc/usr_intf/pncconf/pncconf.glade:60861 +msgid "First Parallel Port Setup" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:5702 -msgid "Position_feedback" +#: src/emc/usr_intf/pncconf/pncconf.glade:60946 +msgid "Launch Test Panel" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:5713 -msgid "Position_offset" +#: src/emc/usr_intf/pncconf/pncconf.glade:62374 +msgid "Inputs (Machine to PC):" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:5721 -msgid "General GUI Defaults" +#: src/emc/usr_intf/pncconf/pncconf.glade:62929 +msgid "Outputs (PC to Machine):" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:5808 -msgid "Force Axis to Maximize" +#: src/emc/usr_intf/pncconf/pncconf.glade:62950 +msgid "X Axis Motor/Encoder Configuration" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:5832 -#: emc/usr_intf/pncconf/pncconf.glade:6602 -#: emc/usr_intf/pncconf/pncconf.glade:6841 -#: emc/usr_intf/pncconf/pncconf.glade:7328 -msgid "H" +#: src/emc/usr_intf/pncconf/pncconf.glade:63005 +msgid "Max Output" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:5866 -#: emc/usr_intf/pncconf/pncconf.glade:6568 -#: emc/usr_intf/pncconf/pncconf.glade:6875 -#: emc/usr_intf/pncconf/pncconf.glade:7294 -msgid "W" +#: src/emc/usr_intf/pncconf/pncconf.glade:63070 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF2" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:5876 -#: emc/usr_intf/pncconf/pncconf.glade:6556 -#: emc/usr_intf/pncconf/pncconf.glade:6885 -#: emc/usr_intf/pncconf/pncconf.glade:7282 -msgid "X" +#: src/emc/usr_intf/pncconf/pncconf.glade:63083 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF1" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:5914 -#: emc/usr_intf/pncconf/pncconf.glade:6519 -#: emc/usr_intf/pncconf/pncconf.glade:6923 -#: emc/usr_intf/pncconf/pncconf.glade:7244 -msgid "Position" +#: src/emc/usr_intf/pncconf/pncconf.glade:63096 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF0" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:5927 -#: emc/usr_intf/pncconf/pncconf.glade:6510 -#: emc/usr_intf/pncconf/pncconf.glade:6936 -#: emc/usr_intf/pncconf/pncconf.glade:7234 -msgid "size" +#: src/emc/usr_intf/pncconf/pncconf.glade:63143 +msgid "Deadband" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:5942 -#: emc/usr_intf/pncconf/pncconf.glade:5952 -#: emc/usr_intf/pncconf/pncconf.glade:6158 -msgid "mm / min" +#: src/emc/usr_intf/pncconf/pncconf.glade:63156 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Bias" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:5975 -#: emc/usr_intf/pncconf/pncconf.glade:5985 -#: emc/usr_intf/pncconf/pncconf.glade:5997 -msgid "Deg / min" +#: src/emc/usr_intf/pncconf/pncconf.glade:63169 +msgid "P" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:6010 -msgid "xyzabc" +#: src/emc/usr_intf/pncconf/pncconf.glade:63180 +msgid "I" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:6023 -msgid "Axis Geometry" +#: src/emc/usr_intf/pncconf/pncconf.glade:63193 +msgid "D" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:6048 -msgid "Max Angular velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:63258 +msgid "Servo Info" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:6061 -msgid "5mm 1mm .5mm .1mm .05mm .01mm .005mm" +#: src/emc/usr_intf/pncconf/pncconf.glade:63337 +msgid "3pwm Scale:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:6074 -msgid "Increments " +#: src/emc/usr_intf/pncconf/pncconf.glade:63348 +msgid "3pwm Deadtime:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:6099 -msgid "Min Angular velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:63361 +msgid "Quad Pulses / Rev:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:6112 -msgid "gedit" +#: src/emc/usr_intf/pncconf/pncconf.glade:63438 +msgid "" +"Open Loop\n" +" Test" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:6148 -msgid "Default Angular velocity " +#: src/emc/usr_intf/pncconf/pncconf.glade:63462 +msgid "Analog Min Limit:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:6211 -msgid "Max linear velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:63476 +msgid "Analog Max limit:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:6222 -msgid "Min linear velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:63490 +msgid "Analog Max Scale:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:6233 -msgid "Default linear velocity " +#: src/emc/usr_intf/pncconf/pncconf.glade:63554 +msgid "Output Info" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:6241 -msgid "AXIS defaults" +#: src/emc/usr_intf/pncconf/pncconf.glade:63603 +msgid "Step On-Time" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:6352 -msgid "Error Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:63616 +msgid "Step Space" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:6365 -msgid "DTG Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:63659 +msgid "Direction Hold" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:6378 -msgid "Relative Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:63672 +msgid "Direction Setup" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:6391 -msgid "Absolute Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:63715 +msgid "Driver Type:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:6454 -msgid "Absolute Text Color" +#: src/emc/usr_intf/pncconf/pncconf.glade:63748 +msgid "Stepper Info" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:6479 -#: emc/usr_intf/pncconf/pncconf.glade:7148 -msgid "GTK Theme" +#: src/emc/usr_intf/pncconf/pncconf.glade:63800 +msgid "No feedback" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:6491 -#: emc/usr_intf/pncconf/pncconf.glade:7158 -msgid "Follow System Theme\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:63810 +msgid "Absolute Feedback" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:6624 -msgid "Force Touchy to Maximize after positioning" +#: src/emc/usr_intf/pncconf/pncconf.glade:63824 +msgid "Incremental Feedback" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:6669 -msgid "GUI Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:63838 +msgid "Incremental Encoder" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:6700 -msgid "Virtual Control Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:63850 +msgid "Hall sensors" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:6775 -msgid "XYZ buttons (uses Halui)" +#: src/emc/usr_intf/pncconf/pncconf.glade:63862 +msgid "Fanuc Red Cap " msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:6946 -msgid "Geometry Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:63874 +msgid "Use encoder Index" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:7025 -msgid "Pyvcp Details" +#: src/emc/usr_intf/pncconf/pncconf.glade:63905 +msgid "Input Options" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:7097 -msgid "Sample display " +#: src/emc/usr_intf/pncconf/pncconf.glade:63929 +msgid "Digital instead of PWM outputs" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:7172 -msgid "Force Maximize" +#: src/emc/usr_intf/pncconf/pncconf.glade:63938 +msgid "6 outputs instead of 3 " msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:7186 -msgid "Center Tab Embeded" +#: src/emc/usr_intf/pncconf/pncconf.glade:63950 +msgid "Force Trapezoid Mode" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:7201 -msgid "Rightside Embeded" +#: src/emc/usr_intf/pncconf/pncconf.glade:63962 +msgid "Emulate feedback " msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:7217 -msgid "Standalone Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:63974 +msgid "Emulated Hall sensors" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:7351 -msgid "Display Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:63987 +msgid "Emulated Fanuc Red Cap" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:7401 -msgid "Max RPM" +#: src/emc/usr_intf/pncconf/pncconf.glade:64014 +msgid "8i20 Max Current" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:7414 -msgid "Spindle Speed Indicator" +#: src/emc/usr_intf/pncconf/pncconf.glade:64048 +msgid "Output Options" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:7426 -msgid "Spindle At Speed LED" +#: src/emc/usr_intf/pncconf/pncconf.glade:64103 +msgid "alignment current" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:7438 -msgid "Zero X Button" +#: src/emc/usr_intf/pncconf/pncconf.glade:64113 +msgid "lead angle" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:7450 -msgid "Zero Y Button" +#: src/emc/usr_intf/pncconf/pncconf.glade:64213 +msgid "Reverse" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:7462 -msgid "Zero Z Button" +#: src/emc/usr_intf/pncconf/pncconf.glade:64223 +msgid "Input-pattern" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:7474 -msgid "Zero A Button" +#: src/emc/usr_intf/pncconf/pncconf.glade:64233 +msgid "output-pattern" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:7486 -msgid "Requires Classicladder touch-off program" +#: src/emc/usr_intf/pncconf/pncconf.glade:64243 +msgid "Drive-offset" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:7487 -msgid "Auto Z Touch Off Button" +#: src/emc/usr_intf/pncconf/pncconf.glade:64253 +msgid "Encoder-offset" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:7500 -msgid "Sample Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:64263 +msgid "Poles" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:7574 -msgid "Gladevcp Details" +#: src/emc/usr_intf/pncconf/pncconf.glade:64283 +msgid "Configuration" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:7597 -msgid "Include custom GladeVCP GUI panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:64318 +msgid "Use BLDC Motor Commutation Control" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:7668 -msgid "Restore joint position after shutdown" +#: src/emc/usr_intf/pncconf/pncconf.glade:64354 +msgid "Scale:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:7683 -msgid "Move spindle up before tool change" +#: src/emc/usr_intf/pncconf/pncconf.glade:64375 +msgid "% " msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:7696 -msgid "Leave spindle on during tool change" +#: src/emc/usr_intf/pncconf/pncconf.glade:64394 +msgid "Range:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:7709 -msgid "Popup Toolchange Prompt" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64419 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "RPM" +msgstr "RPM" -#: emc/usr_intf/pncconf/pncconf.glade:7723 -msgid "Require homing before MDI / Running" +#: src/emc/usr_intf/pncconf/pncconf.glade:64439 +msgid "Use Spindle-At-Speed" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:7732 -msgid "Random position toolchanger " +#: src/emc/usr_intf/pncconf/pncconf.glade:64464 +msgid "Filter gain:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:7747 -msgid "Force individual manual homing" +#: src/emc/usr_intf/pncconf/pncconf.glade:64499 +msgid "Spindle Display Filter Settings" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:7761 -msgid "Defaults and Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:64565 +msgid "Rapid Speed Following Error:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:7789 -msgid "Mesa0 I/O setup\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:64577 +msgid "Feed Speed Following Error:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:7809 -msgid "" -"Click on each page tab to configure signal names for each connector port.\n" -"\n" -"Press the button to make the tabbed pages\n" -"accept the changes.\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:64591 +msgid "Invert Motor Direction" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:7998 -msgid "Num of channels: " +#: src/emc/usr_intf/pncconf/pncconf.glade:64606 +msgid "Invert Encoder Direction " msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:8036 -msgid "7i29 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:64661 +msgid "Single Input Encoder" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:8045 -msgid "7i30 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:64776 +msgid "encoder Scale:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:8057 -msgid "7i33 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:64801 +msgid "Stepper Scale:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:8069 -msgid "7i40 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:64831 +msgid "" +"Calculate\n" +"Scale" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:8081 -msgid "7i48 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:64901 +msgid "Test / Tune Axis" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:8096 -msgid "Sanity Checks" +#: src/emc/usr_intf/pncconf/pncconf.glade:64943 +msgid "X Axis Configuration" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:8137 -msgid "Num of Smart Serial Ports:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65155 +msgid "" +"NO\n" +"YES" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:8148 -msgid "Board name" +#: src/emc/usr_intf/pncconf/pncconf.glade:65171 +msgid "Use Encoder Index For Home:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:8155 -msgid "Num of step generators: " +#: src/emc/usr_intf/pncconf/pncconf.glade:65212 +msgid "Home Final Velocity:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:8166 -msgid "Num of pwm generators:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65222 +msgid "" +"Same\n" +"Opposite" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:8177 -msgid "Num of encoders:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65238 +msgid "Home Latch Direction:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:8294 -msgid "Watchdog timeout:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65251 +msgid "" +"Towards Negative limit\n" +"Towards Positive limit" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:8305 -msgid "PDM base frequency:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65267 +msgid "Home Search Direction:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:8316 -msgid "PWM base frequency:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65309 +msgid "Home latch Velocity:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:8328 -msgid "" -"Accept components\n" -" Changes" +#: src/emc/usr_intf/pncconf/pncconf.glade:65334 +msgid "filename:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:8356 -msgid "Total number of pins:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65347 +msgid "" +"Type 1\n" +"Type 2" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:8389 -msgid "Num of 3 pwm generators: " +#: src/emc/usr_intf/pncconf/pncconf.glade:65392 +msgid "Use Compensation File:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:8412 -msgid "SVST8_4" +#: src/emc/usr_intf/pncconf/pncconf.glade:65406 +msgid "Use Backlash Compensation:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:8437 -msgid "Firmware:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65433 +msgid "Home Position location (offset from machine zero Origin):" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:8447 -msgid "Mesa parport address:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65449 +msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:8482 -msgid "3PWM base frequency:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65493 +msgid "Home Switch location (Offset from machine zero Origin):" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:8504 -msgid "" -"Configuration\n" -" Page" +#: src/emc/usr_intf/pncconf/pncconf.glade:65509 +msgid "Home Search Velocity:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:8698 -#: emc/usr_intf/pncconf/pncconf.glade:8712 -#: emc/usr_intf/pncconf/pncconf.glade:13677 -#: emc/usr_intf/pncconf/pncconf.glade:13689 -#: emc/usr_intf/pncconf/pncconf.glade:16373 -#: emc/usr_intf/pncconf/pncconf.glade:16385 -#: emc/usr_intf/pncconf/pncconf.glade:18883 -#: emc/usr_intf/pncconf/pncconf.glade:18895 -#: emc/usr_intf/pncconf/pncconf.glade:20747 -#: emc/usr_intf/pncconf/pncconf.glade:20759 -#: emc/usr_intf/pncconf/pncconf.glade:20962 -#: emc/usr_intf/pncconf/pncconf.glade:20976 -#: emc/usr_intf/pncconf/pncconf.glade:22758 -#: emc/usr_intf/pncconf/pncconf.glade:22772 -#: emc/usr_intf/pncconf/pncconf.glade:24554 -#: emc/usr_intf/pncconf/pncconf.glade:24568 -#: emc/usr_intf/pncconf/pncconf.glade:26330 -#: emc/usr_intf/pncconf/pncconf.glade:26344 -#: emc/usr_intf/pncconf/pncconf.glade:31324 -#: emc/usr_intf/pncconf/pncconf.glade:31336 -#: emc/usr_intf/pncconf/pncconf.glade:31600 -#: emc/usr_intf/pncconf/pncconf.glade:35669 -#: emc/usr_intf/pncconf/pncconf.glade:35681 -#: emc/usr_intf/pncconf/pncconf.glade:35814 -#: emc/usr_intf/pncconf/pncconf.glade:35828 -#: emc/usr_intf/pncconf/pncconf.glade:40000 -#: emc/usr_intf/pncconf/pncconf.glade:40012 -#: emc/usr_intf/pncconf/pncconf.glade:40174 -#: emc/usr_intf/pncconf/pncconf.glade:40188 -#: emc/usr_intf/pncconf/pncconf.glade:45168 -#: emc/usr_intf/pncconf/pncconf.glade:45180 -#: emc/usr_intf/pncconf/pncconf.glade:45431 -#: emc/usr_intf/pncconf/pncconf.glade:45445 -#: emc/usr_intf/pncconf/pncconf.glade:47097 -#: emc/usr_intf/pncconf/pncconf.glade:47111 -#: emc/usr_intf/pncconf/pncconf.glade:52091 -#: emc/usr_intf/pncconf/pncconf.glade:52103 -#: emc/usr_intf/pncconf/pncconf.glade:52354 -#: emc/usr_intf/pncconf/pncconf.glade:52368 -msgid "Num" +#: src/emc/usr_intf/pncconf/pncconf.glade:65524 +msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:8723 -#: emc/usr_intf/pncconf/pncconf.glade:8743 -#: emc/usr_intf/pncconf/pncconf.glade:8763 -#: emc/usr_intf/pncconf/pncconf.glade:8783 -#: emc/usr_intf/pncconf/pncconf.glade:8803 -#: emc/usr_intf/pncconf/pncconf.glade:8823 -#: emc/usr_intf/pncconf/pncconf.glade:8843 -#: emc/usr_intf/pncconf/pncconf.glade:8863 -#: emc/usr_intf/pncconf/pncconf.glade:8883 -#: emc/usr_intf/pncconf/pncconf.glade:8903 -#: emc/usr_intf/pncconf/pncconf.glade:8923 -#: emc/usr_intf/pncconf/pncconf.glade:8943 -#: emc/usr_intf/pncconf/pncconf.glade:8963 -#: emc/usr_intf/pncconf/pncconf.glade:8983 -#: emc/usr_intf/pncconf/pncconf.glade:9003 -#: emc/usr_intf/pncconf/pncconf.glade:9023 -#: emc/usr_intf/pncconf/pncconf.glade:9043 -#: emc/usr_intf/pncconf/pncconf.glade:9063 -#: emc/usr_intf/pncconf/pncconf.glade:9083 -#: emc/usr_intf/pncconf/pncconf.glade:9103 -#: emc/usr_intf/pncconf/pncconf.glade:9123 -#: emc/usr_intf/pncconf/pncconf.glade:9143 -#: emc/usr_intf/pncconf/pncconf.glade:9163 -#: emc/usr_intf/pncconf/pncconf.glade:11027 -#: emc/usr_intf/pncconf/pncconf.glade:11353 -#: emc/usr_intf/pncconf/pncconf.glade:13216 -#: emc/usr_intf/pncconf/pncconf.glade:13236 -#: emc/usr_intf/pncconf/pncconf.glade:13256 -#: emc/usr_intf/pncconf/pncconf.glade:13276 -#: emc/usr_intf/pncconf/pncconf.glade:13296 -#: emc/usr_intf/pncconf/pncconf.glade:13316 -#: emc/usr_intf/pncconf/pncconf.glade:13336 -#: emc/usr_intf/pncconf/pncconf.glade:13356 -#: emc/usr_intf/pncconf/pncconf.glade:13376 -#: emc/usr_intf/pncconf/pncconf.glade:13396 -#: emc/usr_intf/pncconf/pncconf.glade:13416 -#: emc/usr_intf/pncconf/pncconf.glade:13436 -#: emc/usr_intf/pncconf/pncconf.glade:13456 -#: emc/usr_intf/pncconf/pncconf.glade:13476 -#: emc/usr_intf/pncconf/pncconf.glade:13496 -#: emc/usr_intf/pncconf/pncconf.glade:13516 -#: emc/usr_intf/pncconf/pncconf.glade:13536 -#: emc/usr_intf/pncconf/pncconf.glade:13556 -#: emc/usr_intf/pncconf/pncconf.glade:13576 -#: emc/usr_intf/pncconf/pncconf.glade:13596 -#: emc/usr_intf/pncconf/pncconf.glade:13616 -#: emc/usr_intf/pncconf/pncconf.glade:13636 -#: emc/usr_intf/pncconf/pncconf.glade:13656 -#: emc/usr_intf/pncconf/pncconf.glade:13966 -#: emc/usr_intf/pncconf/pncconf.glade:15912 -#: emc/usr_intf/pncconf/pncconf.glade:15932 -#: emc/usr_intf/pncconf/pncconf.glade:15952 -#: emc/usr_intf/pncconf/pncconf.glade:15972 -#: emc/usr_intf/pncconf/pncconf.glade:15992 -#: emc/usr_intf/pncconf/pncconf.glade:16012 -#: emc/usr_intf/pncconf/pncconf.glade:16032 -#: emc/usr_intf/pncconf/pncconf.glade:16052 -#: emc/usr_intf/pncconf/pncconf.glade:16072 -#: emc/usr_intf/pncconf/pncconf.glade:16092 -#: emc/usr_intf/pncconf/pncconf.glade:16112 -#: emc/usr_intf/pncconf/pncconf.glade:16132 -#: emc/usr_intf/pncconf/pncconf.glade:16152 -#: emc/usr_intf/pncconf/pncconf.glade:16172 -#: emc/usr_intf/pncconf/pncconf.glade:16192 -#: emc/usr_intf/pncconf/pncconf.glade:16212 -#: emc/usr_intf/pncconf/pncconf.glade:16232 -#: emc/usr_intf/pncconf/pncconf.glade:16252 -#: emc/usr_intf/pncconf/pncconf.glade:16272 -#: emc/usr_intf/pncconf/pncconf.glade:16292 -#: emc/usr_intf/pncconf/pncconf.glade:16312 -#: emc/usr_intf/pncconf/pncconf.glade:16332 -#: emc/usr_intf/pncconf/pncconf.glade:16352 -#: emc/usr_intf/pncconf/pncconf.glade:16558 -#: emc/usr_intf/pncconf/pncconf.glade:18422 -#: emc/usr_intf/pncconf/pncconf.glade:18442 -#: emc/usr_intf/pncconf/pncconf.glade:18462 -#: emc/usr_intf/pncconf/pncconf.glade:18482 -#: emc/usr_intf/pncconf/pncconf.glade:18502 -#: emc/usr_intf/pncconf/pncconf.glade:18522 -#: emc/usr_intf/pncconf/pncconf.glade:18542 -#: emc/usr_intf/pncconf/pncconf.glade:18562 -#: emc/usr_intf/pncconf/pncconf.glade:18582 -#: emc/usr_intf/pncconf/pncconf.glade:18602 -#: emc/usr_intf/pncconf/pncconf.glade:18622 -#: emc/usr_intf/pncconf/pncconf.glade:18642 -#: emc/usr_intf/pncconf/pncconf.glade:18662 -#: emc/usr_intf/pncconf/pncconf.glade:18682 -#: emc/usr_intf/pncconf/pncconf.glade:18702 -#: emc/usr_intf/pncconf/pncconf.glade:18722 -#: emc/usr_intf/pncconf/pncconf.glade:18742 -#: emc/usr_intf/pncconf/pncconf.glade:18762 -#: emc/usr_intf/pncconf/pncconf.glade:18782 -#: emc/usr_intf/pncconf/pncconf.glade:18802 -#: emc/usr_intf/pncconf/pncconf.glade:18822 -#: emc/usr_intf/pncconf/pncconf.glade:18842 -#: emc/usr_intf/pncconf/pncconf.glade:18862 -#: emc/usr_intf/pncconf/pncconf.glade:26355 -#: emc/usr_intf/pncconf/pncconf.glade:26375 -#: emc/usr_intf/pncconf/pncconf.glade:26395 -#: emc/usr_intf/pncconf/pncconf.glade:26415 -#: emc/usr_intf/pncconf/pncconf.glade:26435 -#: emc/usr_intf/pncconf/pncconf.glade:26455 -#: emc/usr_intf/pncconf/pncconf.glade:26475 -#: emc/usr_intf/pncconf/pncconf.glade:26495 -#: emc/usr_intf/pncconf/pncconf.glade:26515 -#: emc/usr_intf/pncconf/pncconf.glade:26535 -#: emc/usr_intf/pncconf/pncconf.glade:26555 -#: emc/usr_intf/pncconf/pncconf.glade:26575 -#: emc/usr_intf/pncconf/pncconf.glade:26595 -#: emc/usr_intf/pncconf/pncconf.glade:26615 -#: emc/usr_intf/pncconf/pncconf.glade:26635 -#: emc/usr_intf/pncconf/pncconf.glade:26655 -#: emc/usr_intf/pncconf/pncconf.glade:26675 -#: emc/usr_intf/pncconf/pncconf.glade:26695 -#: emc/usr_intf/pncconf/pncconf.glade:26715 -#: emc/usr_intf/pncconf/pncconf.glade:26735 -#: emc/usr_intf/pncconf/pncconf.glade:26755 -#: emc/usr_intf/pncconf/pncconf.glade:26775 -#: emc/usr_intf/pncconf/pncconf.glade:26795 -#: emc/usr_intf/pncconf/pncconf.glade:28711 -#: emc/usr_intf/pncconf/pncconf.glade:28934 -#: emc/usr_intf/pncconf/pncconf.glade:30863 -#: emc/usr_intf/pncconf/pncconf.glade:30883 -#: emc/usr_intf/pncconf/pncconf.glade:30903 -#: emc/usr_intf/pncconf/pncconf.glade:30923 -#: emc/usr_intf/pncconf/pncconf.glade:30943 -#: emc/usr_intf/pncconf/pncconf.glade:30963 -#: emc/usr_intf/pncconf/pncconf.glade:30983 -#: emc/usr_intf/pncconf/pncconf.glade:31003 -#: emc/usr_intf/pncconf/pncconf.glade:31023 -#: emc/usr_intf/pncconf/pncconf.glade:31043 -#: emc/usr_intf/pncconf/pncconf.glade:31063 -#: emc/usr_intf/pncconf/pncconf.glade:31083 -#: emc/usr_intf/pncconf/pncconf.glade:31103 -#: emc/usr_intf/pncconf/pncconf.glade:31123 -#: emc/usr_intf/pncconf/pncconf.glade:31143 -#: emc/usr_intf/pncconf/pncconf.glade:31163 -#: emc/usr_intf/pncconf/pncconf.glade:31183 -#: emc/usr_intf/pncconf/pncconf.glade:31203 -#: emc/usr_intf/pncconf/pncconf.glade:31223 -#: emc/usr_intf/pncconf/pncconf.glade:31243 -#: emc/usr_intf/pncconf/pncconf.glade:31263 -#: emc/usr_intf/pncconf/pncconf.glade:31283 -#: emc/usr_intf/pncconf/pncconf.glade:31303 -#: emc/usr_intf/pncconf/pncconf.glade:31611 -#: emc/usr_intf/pncconf/pncconf.glade:31631 -#: emc/usr_intf/pncconf/pncconf.glade:31651 -#: emc/usr_intf/pncconf/pncconf.glade:31671 -#: emc/usr_intf/pncconf/pncconf.glade:31691 -#: emc/usr_intf/pncconf/pncconf.glade:31711 -#: emc/usr_intf/pncconf/pncconf.glade:31731 -#: emc/usr_intf/pncconf/pncconf.glade:31751 -#: emc/usr_intf/pncconf/pncconf.glade:31771 -#: emc/usr_intf/pncconf/pncconf.glade:31791 -#: emc/usr_intf/pncconf/pncconf.glade:31811 -#: emc/usr_intf/pncconf/pncconf.glade:33029 -#: emc/usr_intf/pncconf/pncconf.glade:33292 -#: emc/usr_intf/pncconf/pncconf.glade:35208 -#: emc/usr_intf/pncconf/pncconf.glade:35228 -#: emc/usr_intf/pncconf/pncconf.glade:35248 -#: emc/usr_intf/pncconf/pncconf.glade:35268 -#: emc/usr_intf/pncconf/pncconf.glade:35288 -#: emc/usr_intf/pncconf/pncconf.glade:35308 -#: emc/usr_intf/pncconf/pncconf.glade:35328 -#: emc/usr_intf/pncconf/pncconf.glade:35348 -#: emc/usr_intf/pncconf/pncconf.glade:35368 -#: emc/usr_intf/pncconf/pncconf.glade:35388 -#: emc/usr_intf/pncconf/pncconf.glade:35408 -#: emc/usr_intf/pncconf/pncconf.glade:35428 -#: emc/usr_intf/pncconf/pncconf.glade:35448 -#: emc/usr_intf/pncconf/pncconf.glade:35468 -#: emc/usr_intf/pncconf/pncconf.glade:35488 -#: emc/usr_intf/pncconf/pncconf.glade:35508 -#: emc/usr_intf/pncconf/pncconf.glade:35528 -#: emc/usr_intf/pncconf/pncconf.glade:35548 -#: emc/usr_intf/pncconf/pncconf.glade:35568 -#: emc/usr_intf/pncconf/pncconf.glade:35588 -#: emc/usr_intf/pncconf/pncconf.glade:35608 -#: emc/usr_intf/pncconf/pncconf.glade:35628 -#: emc/usr_intf/pncconf/pncconf.glade:35648 -#: emc/usr_intf/pncconf/pncconf.glade:35839 -#: emc/usr_intf/pncconf/pncconf.glade:35859 -#: emc/usr_intf/pncconf/pncconf.glade:35879 -#: emc/usr_intf/pncconf/pncconf.glade:35899 -#: emc/usr_intf/pncconf/pncconf.glade:35919 -#: emc/usr_intf/pncconf/pncconf.glade:35939 -#: emc/usr_intf/pncconf/pncconf.glade:35959 -#: emc/usr_intf/pncconf/pncconf.glade:35979 -#: emc/usr_intf/pncconf/pncconf.glade:35999 -#: emc/usr_intf/pncconf/pncconf.glade:36019 -#: emc/usr_intf/pncconf/pncconf.glade:36039 -#: emc/usr_intf/pncconf/pncconf.glade:36059 -#: emc/usr_intf/pncconf/pncconf.glade:36079 -#: emc/usr_intf/pncconf/pncconf.glade:36099 -#: emc/usr_intf/pncconf/pncconf.glade:36119 -#: emc/usr_intf/pncconf/pncconf.glade:36139 -#: emc/usr_intf/pncconf/pncconf.glade:36159 -#: emc/usr_intf/pncconf/pncconf.glade:36179 -#: emc/usr_intf/pncconf/pncconf.glade:36199 -#: emc/usr_intf/pncconf/pncconf.glade:36219 -#: emc/usr_intf/pncconf/pncconf.glade:36239 -#: emc/usr_intf/pncconf/pncconf.glade:36259 -#: emc/usr_intf/pncconf/pncconf.glade:36279 -#: emc/usr_intf/pncconf/pncconf.glade:38208 -#: emc/usr_intf/pncconf/pncconf.glade:38549 -#: emc/usr_intf/pncconf/pncconf.glade:39779 -#: emc/usr_intf/pncconf/pncconf.glade:39799 -#: emc/usr_intf/pncconf/pncconf.glade:39819 -#: emc/usr_intf/pncconf/pncconf.glade:39839 -#: emc/usr_intf/pncconf/pncconf.glade:39859 -#: emc/usr_intf/pncconf/pncconf.glade:39879 -#: emc/usr_intf/pncconf/pncconf.glade:39899 -#: emc/usr_intf/pncconf/pncconf.glade:39919 -#: emc/usr_intf/pncconf/pncconf.glade:39939 -#: emc/usr_intf/pncconf/pncconf.glade:39959 -#: emc/usr_intf/pncconf/pncconf.glade:39979 -#: emc/usr_intf/pncconf/pncconf.glade:40199 -#: emc/usr_intf/pncconf/pncconf.glade:40219 -#: emc/usr_intf/pncconf/pncconf.glade:40239 -#: emc/usr_intf/pncconf/pncconf.glade:40259 -#: emc/usr_intf/pncconf/pncconf.glade:40279 -#: emc/usr_intf/pncconf/pncconf.glade:40299 -#: emc/usr_intf/pncconf/pncconf.glade:40319 -#: emc/usr_intf/pncconf/pncconf.glade:40339 -#: emc/usr_intf/pncconf/pncconf.glade:40359 -#: emc/usr_intf/pncconf/pncconf.glade:40379 -#: emc/usr_intf/pncconf/pncconf.glade:40399 -#: emc/usr_intf/pncconf/pncconf.glade:40419 -#: emc/usr_intf/pncconf/pncconf.glade:40439 -#: emc/usr_intf/pncconf/pncconf.glade:40459 -#: emc/usr_intf/pncconf/pncconf.glade:40479 -#: emc/usr_intf/pncconf/pncconf.glade:40499 -#: emc/usr_intf/pncconf/pncconf.glade:40519 -#: emc/usr_intf/pncconf/pncconf.glade:40539 -#: emc/usr_intf/pncconf/pncconf.glade:40559 -#: emc/usr_intf/pncconf/pncconf.glade:40579 -#: emc/usr_intf/pncconf/pncconf.glade:40599 -#: emc/usr_intf/pncconf/pncconf.glade:40619 -#: emc/usr_intf/pncconf/pncconf.glade:40639 -#: emc/usr_intf/pncconf/pncconf.glade:42555 -#: emc/usr_intf/pncconf/pncconf.glade:42778 -#: emc/usr_intf/pncconf/pncconf.glade:44707 -#: emc/usr_intf/pncconf/pncconf.glade:44727 -#: emc/usr_intf/pncconf/pncconf.glade:44747 -#: emc/usr_intf/pncconf/pncconf.glade:44767 -#: emc/usr_intf/pncconf/pncconf.glade:44787 -#: emc/usr_intf/pncconf/pncconf.glade:44807 -#: emc/usr_intf/pncconf/pncconf.glade:44827 -#: emc/usr_intf/pncconf/pncconf.glade:44847 -#: emc/usr_intf/pncconf/pncconf.glade:44867 -#: emc/usr_intf/pncconf/pncconf.glade:44887 -#: emc/usr_intf/pncconf/pncconf.glade:44907 -#: emc/usr_intf/pncconf/pncconf.glade:44927 -#: emc/usr_intf/pncconf/pncconf.glade:44947 -#: emc/usr_intf/pncconf/pncconf.glade:44967 -#: emc/usr_intf/pncconf/pncconf.glade:44987 -#: emc/usr_intf/pncconf/pncconf.glade:45007 -#: emc/usr_intf/pncconf/pncconf.glade:45027 -#: emc/usr_intf/pncconf/pncconf.glade:45047 -#: emc/usr_intf/pncconf/pncconf.glade:45067 -#: emc/usr_intf/pncconf/pncconf.glade:45087 -#: emc/usr_intf/pncconf/pncconf.glade:45107 -#: emc/usr_intf/pncconf/pncconf.glade:45127 -#: emc/usr_intf/pncconf/pncconf.glade:45147 -#: emc/usr_intf/pncconf/pncconf.glade:45456 -#: emc/usr_intf/pncconf/pncconf.glade:45476 -#: emc/usr_intf/pncconf/pncconf.glade:45496 -#: emc/usr_intf/pncconf/pncconf.glade:45516 -#: emc/usr_intf/pncconf/pncconf.glade:45536 -#: emc/usr_intf/pncconf/pncconf.glade:45556 -#: emc/usr_intf/pncconf/pncconf.glade:45576 -#: emc/usr_intf/pncconf/pncconf.glade:45596 -#: emc/usr_intf/pncconf/pncconf.glade:45616 -#: emc/usr_intf/pncconf/pncconf.glade:45636 -#: emc/usr_intf/pncconf/pncconf.glade:45656 -#: emc/usr_intf/pncconf/pncconf.glade:46886 -#: emc/usr_intf/pncconf/pncconf.glade:47122 -#: emc/usr_intf/pncconf/pncconf.glade:47142 -#: emc/usr_intf/pncconf/pncconf.glade:47162 -#: emc/usr_intf/pncconf/pncconf.glade:47182 -#: emc/usr_intf/pncconf/pncconf.glade:47202 -#: emc/usr_intf/pncconf/pncconf.glade:47222 -#: emc/usr_intf/pncconf/pncconf.glade:47242 -#: emc/usr_intf/pncconf/pncconf.glade:47262 -#: emc/usr_intf/pncconf/pncconf.glade:47282 -#: emc/usr_intf/pncconf/pncconf.glade:47302 -#: emc/usr_intf/pncconf/pncconf.glade:47322 -#: emc/usr_intf/pncconf/pncconf.glade:47342 -#: emc/usr_intf/pncconf/pncconf.glade:47362 -#: emc/usr_intf/pncconf/pncconf.glade:47382 -#: emc/usr_intf/pncconf/pncconf.glade:47402 -#: emc/usr_intf/pncconf/pncconf.glade:47422 -#: emc/usr_intf/pncconf/pncconf.glade:47442 -#: emc/usr_intf/pncconf/pncconf.glade:47462 -#: emc/usr_intf/pncconf/pncconf.glade:47482 -#: emc/usr_intf/pncconf/pncconf.glade:47502 -#: emc/usr_intf/pncconf/pncconf.glade:47522 -#: emc/usr_intf/pncconf/pncconf.glade:47542 -#: emc/usr_intf/pncconf/pncconf.glade:47562 -#: emc/usr_intf/pncconf/pncconf.glade:49478 -#: emc/usr_intf/pncconf/pncconf.glade:49701 -#: emc/usr_intf/pncconf/pncconf.glade:51630 -#: emc/usr_intf/pncconf/pncconf.glade:51650 -#: emc/usr_intf/pncconf/pncconf.glade:51670 -#: emc/usr_intf/pncconf/pncconf.glade:51690 -#: emc/usr_intf/pncconf/pncconf.glade:51710 -#: emc/usr_intf/pncconf/pncconf.glade:51730 -#: emc/usr_intf/pncconf/pncconf.glade:51750 -#: emc/usr_intf/pncconf/pncconf.glade:51770 -#: emc/usr_intf/pncconf/pncconf.glade:51790 -#: emc/usr_intf/pncconf/pncconf.glade:51810 -#: emc/usr_intf/pncconf/pncconf.glade:51830 -#: emc/usr_intf/pncconf/pncconf.glade:51850 -#: emc/usr_intf/pncconf/pncconf.glade:51870 -#: emc/usr_intf/pncconf/pncconf.glade:51890 -#: emc/usr_intf/pncconf/pncconf.glade:51910 -#: emc/usr_intf/pncconf/pncconf.glade:51930 -#: emc/usr_intf/pncconf/pncconf.glade:51950 -#: emc/usr_intf/pncconf/pncconf.glade:51970 -#: emc/usr_intf/pncconf/pncconf.glade:51990 -#: emc/usr_intf/pncconf/pncconf.glade:52010 -#: emc/usr_intf/pncconf/pncconf.glade:52030 -#: emc/usr_intf/pncconf/pncconf.glade:52050 -#: emc/usr_intf/pncconf/pncconf.glade:52070 -#: emc/usr_intf/pncconf/pncconf.glade:52379 -#: emc/usr_intf/pncconf/pncconf.glade:52399 -#: emc/usr_intf/pncconf/pncconf.glade:52419 -#: emc/usr_intf/pncconf/pncconf.glade:52439 -#: emc/usr_intf/pncconf/pncconf.glade:52459 -#: emc/usr_intf/pncconf/pncconf.glade:52479 -#: emc/usr_intf/pncconf/pncconf.glade:52499 -#: emc/usr_intf/pncconf/pncconf.glade:52519 -#: emc/usr_intf/pncconf/pncconf.glade:52539 -#: emc/usr_intf/pncconf/pncconf.glade:52559 -#: emc/usr_intf/pncconf/pncconf.glade:52579 -#: emc/usr_intf/pncconf/pncconf.glade:53809 -msgid "" -"GPIO Input\n" -"GPIO Output\n" -"GPIO O Drain\n" -"Encoder\n" -"PWM\n" -"StepGen\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Advanced Options" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:9198 -#: emc/usr_intf/pncconf/pncconf.glade:13188 -#: emc/usr_intf/pncconf/pncconf.glade:15884 -#: emc/usr_intf/pncconf/pncconf.glade:18394 -#: emc/usr_intf/pncconf/pncconf.glade:20397 -#: emc/usr_intf/pncconf/pncconf.glade:21325 -#: emc/usr_intf/pncconf/pncconf.glade:23121 -#: emc/usr_intf/pncconf/pncconf.glade:24917 -msgid "Launch test panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 15" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:9213 -#: emc/usr_intf/pncconf/pncconf.glade:9225 -#: emc/usr_intf/pncconf/pncconf.glade:13162 -#: emc/usr_intf/pncconf/pncconf.glade:13174 -#: emc/usr_intf/pncconf/pncconf.glade:15858 -#: emc/usr_intf/pncconf/pncconf.glade:15870 -#: emc/usr_intf/pncconf/pncconf.glade:18367 -#: emc/usr_intf/pncconf/pncconf.glade:18379 -#: emc/usr_intf/pncconf/pncconf.glade:20370 -#: emc/usr_intf/pncconf/pncconf.glade:20382 -#: emc/usr_intf/pncconf/pncconf.glade:21339 -#: emc/usr_intf/pncconf/pncconf.glade:21351 -#: emc/usr_intf/pncconf/pncconf.glade:23135 -#: emc/usr_intf/pncconf/pncconf.glade:23147 -#: emc/usr_intf/pncconf/pncconf.glade:24931 -#: emc/usr_intf/pncconf/pncconf.glade:24943 -#: emc/usr_intf/pncconf/pncconf.glade:26815 -#: emc/usr_intf/pncconf/pncconf.glade:26827 -#: emc/usr_intf/pncconf/pncconf.glade:30826 -#: emc/usr_intf/pncconf/pncconf.glade:30838 -#: emc/usr_intf/pncconf/pncconf.glade:31831 -#: emc/usr_intf/pncconf/pncconf.glade:35184 -#: emc/usr_intf/pncconf/pncconf.glade:35196 -#: emc/usr_intf/pncconf/pncconf.glade:36312 -#: emc/usr_intf/pncconf/pncconf.glade:36324 -#: emc/usr_intf/pncconf/pncconf.glade:39755 -#: emc/usr_intf/pncconf/pncconf.glade:39767 -#: emc/usr_intf/pncconf/pncconf.glade:40659 -#: emc/usr_intf/pncconf/pncconf.glade:40671 -#: emc/usr_intf/pncconf/pncconf.glade:44670 -#: emc/usr_intf/pncconf/pncconf.glade:44682 -#: emc/usr_intf/pncconf/pncconf.glade:45676 -#: emc/usr_intf/pncconf/pncconf.glade:45688 -#: emc/usr_intf/pncconf/pncconf.glade:47582 -#: emc/usr_intf/pncconf/pncconf.glade:47594 -#: emc/usr_intf/pncconf/pncconf.glade:51593 -#: emc/usr_intf/pncconf/pncconf.glade:51605 -#: emc/usr_intf/pncconf/pncconf.glade:52599 -#: emc/usr_intf/pncconf/pncconf.glade:52611 -msgid "function" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 14" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:9305 -#: emc/usr_intf/pncconf/pncconf.glade:9357 -#: emc/usr_intf/pncconf/pncconf.glade:9409 -#: emc/usr_intf/pncconf/pncconf.glade:9461 -#: emc/usr_intf/pncconf/pncconf.glade:10301 -#: emc/usr_intf/pncconf/pncconf.glade:10353 -#: emc/usr_intf/pncconf/pncconf.glade:10405 -#: emc/usr_intf/pncconf/pncconf.glade:10457 -#: emc/usr_intf/pncconf/pncconf.glade:10509 -#: emc/usr_intf/pncconf/pncconf.glade:10561 -#: emc/usr_intf/pncconf/pncconf.glade:10613 -#: emc/usr_intf/pncconf/pncconf.glade:10665 -#: emc/usr_intf/pncconf/pncconf.glade:10717 -#: emc/usr_intf/pncconf/pncconf.glade:10769 -#: emc/usr_intf/pncconf/pncconf.glade:11089 -#: emc/usr_intf/pncconf/pncconf.glade:11141 -#: emc/usr_intf/pncconf/pncconf.glade:11579 -#: emc/usr_intf/pncconf/pncconf.glade:11631 -#: emc/usr_intf/pncconf/pncconf.glade:11683 -#: emc/usr_intf/pncconf/pncconf.glade:11735 -#: emc/usr_intf/pncconf/pncconf.glade:11787 -#: emc/usr_intf/pncconf/pncconf.glade:11839 -#: emc/usr_intf/pncconf/pncconf.glade:11891 -#: emc/usr_intf/pncconf/pncconf.glade:11943 -#: emc/usr_intf/pncconf/pncconf.glade:11995 -#: emc/usr_intf/pncconf/pncconf.glade:12047 -#: emc/usr_intf/pncconf/pncconf.glade:12886 -#: emc/usr_intf/pncconf/pncconf.glade:12938 -#: emc/usr_intf/pncconf/pncconf.glade:12990 -#: emc/usr_intf/pncconf/pncconf.glade:13042 -#: emc/usr_intf/pncconf/pncconf.glade:13702 -#: emc/usr_intf/pncconf/pncconf.glade:13754 -#: emc/usr_intf/pncconf/pncconf.glade:14183 -#: emc/usr_intf/pncconf/pncconf.glade:14235 -#: emc/usr_intf/pncconf/pncconf.glade:14287 -#: emc/usr_intf/pncconf/pncconf.glade:14339 -#: emc/usr_intf/pncconf/pncconf.glade:14391 -#: emc/usr_intf/pncconf/pncconf.glade:14443 -#: emc/usr_intf/pncconf/pncconf.glade:14495 -#: emc/usr_intf/pncconf/pncconf.glade:14547 -#: emc/usr_intf/pncconf/pncconf.glade:14599 -#: emc/usr_intf/pncconf/pncconf.glade:14651 -#: emc/usr_intf/pncconf/pncconf.glade:14703 -#: emc/usr_intf/pncconf/pncconf.glade:14755 -#: emc/usr_intf/pncconf/pncconf.glade:15582 -#: emc/usr_intf/pncconf/pncconf.glade:15634 -#: emc/usr_intf/pncconf/pncconf.glade:15686 -#: emc/usr_intf/pncconf/pncconf.glade:15738 -#: emc/usr_intf/pncconf/pncconf.glade:16784 -#: emc/usr_intf/pncconf/pncconf.glade:16836 -#: emc/usr_intf/pncconf/pncconf.glade:16888 -#: emc/usr_intf/pncconf/pncconf.glade:16940 -#: emc/usr_intf/pncconf/pncconf.glade:16992 -#: emc/usr_intf/pncconf/pncconf.glade:17044 -#: emc/usr_intf/pncconf/pncconf.glade:17096 -#: emc/usr_intf/pncconf/pncconf.glade:17148 -#: emc/usr_intf/pncconf/pncconf.glade:17200 -#: emc/usr_intf/pncconf/pncconf.glade:17252 -#: emc/usr_intf/pncconf/pncconf.glade:17304 -#: emc/usr_intf/pncconf/pncconf.glade:18143 -#: emc/usr_intf/pncconf/pncconf.glade:18195 -#: emc/usr_intf/pncconf/pncconf.glade:18247 -#: emc/usr_intf/pncconf/pncconf.glade:18908 -#: emc/usr_intf/pncconf/pncconf.glade:18960 -#: emc/usr_intf/pncconf/pncconf.glade:26907 -#: emc/usr_intf/pncconf/pncconf.glade:26959 -#: emc/usr_intf/pncconf/pncconf.glade:27011 -#: emc/usr_intf/pncconf/pncconf.glade:27063 -#: emc/usr_intf/pncconf/pncconf.glade:27890 -#: emc/usr_intf/pncconf/pncconf.glade:27942 -#: emc/usr_intf/pncconf/pncconf.glade:27994 -#: emc/usr_intf/pncconf/pncconf.glade:28046 -#: emc/usr_intf/pncconf/pncconf.glade:28098 -#: emc/usr_intf/pncconf/pncconf.glade:28150 -#: emc/usr_intf/pncconf/pncconf.glade:28202 -#: emc/usr_intf/pncconf/pncconf.glade:28254 -#: emc/usr_intf/pncconf/pncconf.glade:28306 -#: emc/usr_intf/pncconf/pncconf.glade:28358 -#: emc/usr_intf/pncconf/pncconf.glade:28410 -#: emc/usr_intf/pncconf/pncconf.glade:28462 -#: emc/usr_intf/pncconf/pncconf.glade:29151 -#: emc/usr_intf/pncconf/pncconf.glade:29203 -#: emc/usr_intf/pncconf/pncconf.glade:29255 -#: emc/usr_intf/pncconf/pncconf.glade:29307 -#: emc/usr_intf/pncconf/pncconf.glade:29359 -#: emc/usr_intf/pncconf/pncconf.glade:29411 -#: emc/usr_intf/pncconf/pncconf.glade:29463 -#: emc/usr_intf/pncconf/pncconf.glade:29515 -#: emc/usr_intf/pncconf/pncconf.glade:29567 -#: emc/usr_intf/pncconf/pncconf.glade:29619 -#: emc/usr_intf/pncconf/pncconf.glade:29671 -#: emc/usr_intf/pncconf/pncconf.glade:29723 -#: emc/usr_intf/pncconf/pncconf.glade:30550 -#: emc/usr_intf/pncconf/pncconf.glade:30602 -#: emc/usr_intf/pncconf/pncconf.glade:30654 -#: emc/usr_intf/pncconf/pncconf.glade:30706 -#: emc/usr_intf/pncconf/pncconf.glade:32210 -#: emc/usr_intf/pncconf/pncconf.glade:32262 -#: emc/usr_intf/pncconf/pncconf.glade:32314 -#: emc/usr_intf/pncconf/pncconf.glade:32366 -#: emc/usr_intf/pncconf/pncconf.glade:32418 -#: emc/usr_intf/pncconf/pncconf.glade:32470 -#: emc/usr_intf/pncconf/pncconf.glade:32522 -#: emc/usr_intf/pncconf/pncconf.glade:32574 -#: emc/usr_intf/pncconf/pncconf.glade:32626 -#: emc/usr_intf/pncconf/pncconf.glade:32678 -#: emc/usr_intf/pncconf/pncconf.glade:32730 -#: emc/usr_intf/pncconf/pncconf.glade:32782 -#: emc/usr_intf/pncconf/pncconf.glade:33509 -#: emc/usr_intf/pncconf/pncconf.glade:33561 -#: emc/usr_intf/pncconf/pncconf.glade:33613 -#: emc/usr_intf/pncconf/pncconf.glade:33665 -#: emc/usr_intf/pncconf/pncconf.glade:33717 -#: emc/usr_intf/pncconf/pncconf.glade:33769 -#: emc/usr_intf/pncconf/pncconf.glade:33821 -#: emc/usr_intf/pncconf/pncconf.glade:33873 -#: emc/usr_intf/pncconf/pncconf.glade:33925 -#: emc/usr_intf/pncconf/pncconf.glade:33977 -#: emc/usr_intf/pncconf/pncconf.glade:34029 -#: emc/usr_intf/pncconf/pncconf.glade:34081 -#: emc/usr_intf/pncconf/pncconf.glade:34908 -#: emc/usr_intf/pncconf/pncconf.glade:34960 -#: emc/usr_intf/pncconf/pncconf.glade:35012 -#: emc/usr_intf/pncconf/pncconf.glade:35064 -#: emc/usr_intf/pncconf/pncconf.glade:36404 -#: emc/usr_intf/pncconf/pncconf.glade:36456 -#: emc/usr_intf/pncconf/pncconf.glade:36508 -#: emc/usr_intf/pncconf/pncconf.glade:36560 -#: emc/usr_intf/pncconf/pncconf.glade:37387 -#: emc/usr_intf/pncconf/pncconf.glade:37439 -#: emc/usr_intf/pncconf/pncconf.glade:37491 -#: emc/usr_intf/pncconf/pncconf.glade:37543 -#: emc/usr_intf/pncconf/pncconf.glade:37595 -#: emc/usr_intf/pncconf/pncconf.glade:37647 -#: emc/usr_intf/pncconf/pncconf.glade:37699 -#: emc/usr_intf/pncconf/pncconf.glade:37751 -#: emc/usr_intf/pncconf/pncconf.glade:37803 -#: emc/usr_intf/pncconf/pncconf.glade:37855 -#: emc/usr_intf/pncconf/pncconf.glade:37907 -#: emc/usr_intf/pncconf/pncconf.glade:37959 -#: emc/usr_intf/pncconf/pncconf.glade:38764 -#: emc/usr_intf/pncconf/pncconf.glade:38816 -#: emc/usr_intf/pncconf/pncconf.glade:38868 -#: emc/usr_intf/pncconf/pncconf.glade:38920 -#: emc/usr_intf/pncconf/pncconf.glade:38972 -#: emc/usr_intf/pncconf/pncconf.glade:39024 -#: emc/usr_intf/pncconf/pncconf.glade:39076 -#: emc/usr_intf/pncconf/pncconf.glade:39128 -#: emc/usr_intf/pncconf/pncconf.glade:39180 -#: emc/usr_intf/pncconf/pncconf.glade:39232 -#: emc/usr_intf/pncconf/pncconf.glade:39284 -#: emc/usr_intf/pncconf/pncconf.glade:39336 -#: emc/usr_intf/pncconf/pncconf.glade:40751 -#: emc/usr_intf/pncconf/pncconf.glade:40803 -#: emc/usr_intf/pncconf/pncconf.glade:40855 -#: emc/usr_intf/pncconf/pncconf.glade:40907 -#: emc/usr_intf/pncconf/pncconf.glade:41734 -#: emc/usr_intf/pncconf/pncconf.glade:41786 -#: emc/usr_intf/pncconf/pncconf.glade:41838 -#: emc/usr_intf/pncconf/pncconf.glade:41890 -#: emc/usr_intf/pncconf/pncconf.glade:41942 -#: emc/usr_intf/pncconf/pncconf.glade:41994 -#: emc/usr_intf/pncconf/pncconf.glade:42046 -#: emc/usr_intf/pncconf/pncconf.glade:42098 -#: emc/usr_intf/pncconf/pncconf.glade:42150 -#: emc/usr_intf/pncconf/pncconf.glade:42202 -#: emc/usr_intf/pncconf/pncconf.glade:42254 -#: emc/usr_intf/pncconf/pncconf.glade:42306 -#: emc/usr_intf/pncconf/pncconf.glade:42995 -#: emc/usr_intf/pncconf/pncconf.glade:43047 -#: emc/usr_intf/pncconf/pncconf.glade:43099 -#: emc/usr_intf/pncconf/pncconf.glade:43151 -#: emc/usr_intf/pncconf/pncconf.glade:43203 -#: emc/usr_intf/pncconf/pncconf.glade:43255 -#: emc/usr_intf/pncconf/pncconf.glade:43307 -#: emc/usr_intf/pncconf/pncconf.glade:43359 -#: emc/usr_intf/pncconf/pncconf.glade:43411 -#: emc/usr_intf/pncconf/pncconf.glade:43463 -#: emc/usr_intf/pncconf/pncconf.glade:43515 -#: emc/usr_intf/pncconf/pncconf.glade:43567 -#: emc/usr_intf/pncconf/pncconf.glade:44394 -#: emc/usr_intf/pncconf/pncconf.glade:44446 -#: emc/usr_intf/pncconf/pncconf.glade:44498 -#: emc/usr_intf/pncconf/pncconf.glade:44550 -#: emc/usr_intf/pncconf/pncconf.glade:46067 -#: emc/usr_intf/pncconf/pncconf.glade:46119 -#: emc/usr_intf/pncconf/pncconf.glade:46171 -#: emc/usr_intf/pncconf/pncconf.glade:46223 -#: emc/usr_intf/pncconf/pncconf.glade:46275 -#: emc/usr_intf/pncconf/pncconf.glade:46327 -#: emc/usr_intf/pncconf/pncconf.glade:46379 -#: emc/usr_intf/pncconf/pncconf.glade:46431 -#: emc/usr_intf/pncconf/pncconf.glade:46483 -#: emc/usr_intf/pncconf/pncconf.glade:46535 -#: emc/usr_intf/pncconf/pncconf.glade:46587 -#: emc/usr_intf/pncconf/pncconf.glade:46639 -#: emc/usr_intf/pncconf/pncconf.glade:47674 -#: emc/usr_intf/pncconf/pncconf.glade:47726 -#: emc/usr_intf/pncconf/pncconf.glade:47778 -#: emc/usr_intf/pncconf/pncconf.glade:47830 -#: emc/usr_intf/pncconf/pncconf.glade:48657 -#: emc/usr_intf/pncconf/pncconf.glade:48709 -#: emc/usr_intf/pncconf/pncconf.glade:48761 -#: emc/usr_intf/pncconf/pncconf.glade:48813 -#: emc/usr_intf/pncconf/pncconf.glade:48865 -#: emc/usr_intf/pncconf/pncconf.glade:48917 -#: emc/usr_intf/pncconf/pncconf.glade:48969 -#: emc/usr_intf/pncconf/pncconf.glade:49021 -#: emc/usr_intf/pncconf/pncconf.glade:49073 -#: emc/usr_intf/pncconf/pncconf.glade:49125 -#: emc/usr_intf/pncconf/pncconf.glade:49177 -#: emc/usr_intf/pncconf/pncconf.glade:49229 -#: emc/usr_intf/pncconf/pncconf.glade:49918 -#: emc/usr_intf/pncconf/pncconf.glade:49970 -#: emc/usr_intf/pncconf/pncconf.glade:50022 -#: emc/usr_intf/pncconf/pncconf.glade:50074 -#: emc/usr_intf/pncconf/pncconf.glade:50126 -#: emc/usr_intf/pncconf/pncconf.glade:50178 -#: emc/usr_intf/pncconf/pncconf.glade:50230 -#: emc/usr_intf/pncconf/pncconf.glade:50282 -#: emc/usr_intf/pncconf/pncconf.glade:50334 -#: emc/usr_intf/pncconf/pncconf.glade:50386 -#: emc/usr_intf/pncconf/pncconf.glade:50438 -#: emc/usr_intf/pncconf/pncconf.glade:50490 -#: emc/usr_intf/pncconf/pncconf.glade:51317 -#: emc/usr_intf/pncconf/pncconf.glade:51369 -#: emc/usr_intf/pncconf/pncconf.glade:51421 -#: emc/usr_intf/pncconf/pncconf.glade:51473 -#: emc/usr_intf/pncconf/pncconf.glade:52990 -#: emc/usr_intf/pncconf/pncconf.glade:53042 -#: emc/usr_intf/pncconf/pncconf.glade:53094 -#: emc/usr_intf/pncconf/pncconf.glade:53146 -#: emc/usr_intf/pncconf/pncconf.glade:53198 -#: emc/usr_intf/pncconf/pncconf.glade:53250 -#: emc/usr_intf/pncconf/pncconf.glade:53302 -#: emc/usr_intf/pncconf/pncconf.glade:53354 -#: emc/usr_intf/pncconf/pncconf.glade:53406 -#: emc/usr_intf/pncconf/pncconf.glade:53458 -#: emc/usr_intf/pncconf/pncconf.glade:53510 -#: emc/usr_intf/pncconf/pncconf.glade:53562 -msgid "" -"ESTOP IN\n" -"Spindle PPR\n" -"Spindle A \n" -"Spindle B \n" -"Home X \n" -"Home Y \n" -"Home Z\n" -"Home A\n" -"Minimum Limit + Home X \n" -"Minimum Limit + Home Y \n" -"Minimum Limit + Home Z \n" -"Minimum Limit + Home A\n" -"Maximum Limit + Home X \n" -"Maximum Limit + Home Y \n" -"Maximum Limit + Home Z \n" -"Maximum Limit + Home A\n" -"Both Limit + Home X \n" -"Both Limit + Home Y \n" -"Both Limit + Home Z \n" -"Both Limit + Home A\n" -"Minimum Limit X \n" -"Minimum Limit Y \n" -"Minimum Limit Z \n" -"Minimum Limit A\n" -"Maximum Limit X \n" -"Maximum Limit Y \n" -"Maximum Limit Z \n" -"Maximum Limit A\n" -"Both Limit X \n" -"Both Limit Y \n" -"Both Limit Z \n" -"Both Limit A\n" -"All limits\n" -"All home\n" -"Unused" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 13" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:9515 -#: emc/usr_intf/pncconf/pncconf.glade:12871 -#: emc/usr_intf/pncconf/pncconf.glade:18128 -#: emc/usr_intf/pncconf/pncconf.glade:20233 -#: emc/usr_intf/pncconf/pncconf.glade:21486 -#: emc/usr_intf/pncconf/pncconf.glade:23282 -#: emc/usr_intf/pncconf/pncconf.glade:25078 -msgid "31:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 12" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:9531 -#: emc/usr_intf/pncconf/pncconf.glade:12855 -#: emc/usr_intf/pncconf/pncconf.glade:18112 -#: emc/usr_intf/pncconf/pncconf.glade:20217 -#: emc/usr_intf/pncconf/pncconf.glade:21502 -#: emc/usr_intf/pncconf/pncconf.glade:23298 -#: emc/usr_intf/pncconf/pncconf.glade:25094 -msgid "29:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 11" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:9547 -#: emc/usr_intf/pncconf/pncconf.glade:12839 -#: emc/usr_intf/pncconf/pncconf.glade:18096 -#: emc/usr_intf/pncconf/pncconf.glade:20201 -#: emc/usr_intf/pncconf/pncconf.glade:21518 -#: emc/usr_intf/pncconf/pncconf.glade:23314 -#: emc/usr_intf/pncconf/pncconf.glade:25110 -msgid "27:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 10" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:9563 -#: emc/usr_intf/pncconf/pncconf.glade:12823 -#: emc/usr_intf/pncconf/pncconf.glade:18080 -#: emc/usr_intf/pncconf/pncconf.glade:20185 -#: emc/usr_intf/pncconf/pncconf.glade:21534 -#: emc/usr_intf/pncconf/pncconf.glade:23330 -#: emc/usr_intf/pncconf/pncconf.glade:25126 -msgid "25:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 9" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:9936 -#: emc/usr_intf/pncconf/pncconf.glade:12450 -#: emc/usr_intf/pncconf/pncconf.glade:17707 -#: emc/usr_intf/pncconf/pncconf.glade:19924 -#: emc/usr_intf/pncconf/pncconf.glade:21795 -#: emc/usr_intf/pncconf/pncconf.glade:23591 -#: emc/usr_intf/pncconf/pncconf.glade:25387 -msgid "33:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 8" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:9952 -#: emc/usr_intf/pncconf/pncconf.glade:12434 -#: emc/usr_intf/pncconf/pncconf.glade:17691 -#: emc/usr_intf/pncconf/pncconf.glade:19908 -#: emc/usr_intf/pncconf/pncconf.glade:21811 -#: emc/usr_intf/pncconf/pncconf.glade:23607 -#: emc/usr_intf/pncconf/pncconf.glade:25403 -msgid "35:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 7" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:9968 -#: emc/usr_intf/pncconf/pncconf.glade:12418 -#: emc/usr_intf/pncconf/pncconf.glade:17675 -#: emc/usr_intf/pncconf/pncconf.glade:19892 -#: emc/usr_intf/pncconf/pncconf.glade:21827 -#: emc/usr_intf/pncconf/pncconf.glade:23623 -#: emc/usr_intf/pncconf/pncconf.glade:25419 -msgid "37:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 6" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:9984 -#: emc/usr_intf/pncconf/pncconf.glade:12402 -#: emc/usr_intf/pncconf/pncconf.glade:17659 -#: emc/usr_intf/pncconf/pncconf.glade:19876 -#: emc/usr_intf/pncconf/pncconf.glade:21843 -#: emc/usr_intf/pncconf/pncconf.glade:23639 -#: emc/usr_intf/pncconf/pncconf.glade:25435 -msgid "39:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 5" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:10000 -#: emc/usr_intf/pncconf/pncconf.glade:12386 -#: emc/usr_intf/pncconf/pncconf.glade:17643 -#: emc/usr_intf/pncconf/pncconf.glade:19860 -#: emc/usr_intf/pncconf/pncconf.glade:21859 -#: emc/usr_intf/pncconf/pncconf.glade:23655 -#: emc/usr_intf/pncconf/pncconf.glade:25451 -msgid "41:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 4" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:10016 -#: emc/usr_intf/pncconf/pncconf.glade:12370 -#: emc/usr_intf/pncconf/pncconf.glade:17627 -#: emc/usr_intf/pncconf/pncconf.glade:19844 -#: emc/usr_intf/pncconf/pncconf.glade:21875 -#: emc/usr_intf/pncconf/pncconf.glade:23671 -#: emc/usr_intf/pncconf/pncconf.glade:25467 -msgid "43:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 3" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:10032 -#: emc/usr_intf/pncconf/pncconf.glade:12354 -#: emc/usr_intf/pncconf/pncconf.glade:17611 -#: emc/usr_intf/pncconf/pncconf.glade:19828 -#: emc/usr_intf/pncconf/pncconf.glade:21891 -#: emc/usr_intf/pncconf/pncconf.glade:23687 -#: emc/usr_intf/pncconf/pncconf.glade:25483 -msgid "45:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 2" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:10099 -#: emc/usr_intf/pncconf/pncconf.glade:12287 -#: emc/usr_intf/pncconf/pncconf.glade:17544 -#: emc/usr_intf/pncconf/pncconf.glade:19777 -#: emc/usr_intf/pncconf/pncconf.glade:21942 -#: emc/usr_intf/pncconf/pncconf.glade:23738 -#: emc/usr_intf/pncconf/pncconf.glade:25534 -msgid "47:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 1" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:10822 -#: emc/usr_intf/pncconf/pncconf.glade:11077 -#: emc/usr_intf/pncconf/pncconf.glade:11311 -#: emc/usr_intf/pncconf/pncconf.glade:11567 -#: emc/usr_intf/pncconf/pncconf.glade:13924 -#: emc/usr_intf/pncconf/pncconf.glade:14171 -#: emc/usr_intf/pncconf/pncconf.glade:16516 -#: emc/usr_intf/pncconf/pncconf.glade:16772 -#: emc/usr_intf/pncconf/pncconf.glade:19129 -#: emc/usr_intf/pncconf/pncconf.glade:19379 -#: emc/usr_intf/pncconf/pncconf.glade:22343 -#: emc/usr_intf/pncconf/pncconf.glade:22592 -#: emc/usr_intf/pncconf/pncconf.glade:24139 -#: emc/usr_intf/pncconf/pncconf.glade:24388 -#: emc/usr_intf/pncconf/pncconf.glade:25935 -#: emc/usr_intf/pncconf/pncconf.glade:26184 -#: emc/usr_intf/pncconf/pncconf.glade:28515 -#: emc/usr_intf/pncconf/pncconf.glade:28761 -#: emc/usr_intf/pncconf/pncconf.glade:28892 -#: emc/usr_intf/pncconf/pncconf.glade:29139 -#: emc/usr_intf/pncconf/pncconf.glade:33079 -#: emc/usr_intf/pncconf/pncconf.glade:33250 -#: emc/usr_intf/pncconf/pncconf.glade:33497 -#: emc/usr_intf/pncconf/pncconf.glade:38012 -#: emc/usr_intf/pncconf/pncconf.glade:38258 -#: emc/usr_intf/pncconf/pncconf.glade:38507 -#: emc/usr_intf/pncconf/pncconf.glade:42359 -#: emc/usr_intf/pncconf/pncconf.glade:42605 -#: emc/usr_intf/pncconf/pncconf.glade:42736 -#: emc/usr_intf/pncconf/pncconf.glade:42983 -#: emc/usr_intf/pncconf/pncconf.glade:46936 -#: emc/usr_intf/pncconf/pncconf.glade:49282 -#: emc/usr_intf/pncconf/pncconf.glade:49528 -#: emc/usr_intf/pncconf/pncconf.glade:49659 -#: emc/usr_intf/pncconf/pncconf.glade:49906 -#: emc/usr_intf/pncconf/pncconf.glade:53859 -msgid "Pin Type" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include Halui user interface component / commands" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:10835 -#: emc/usr_intf/pncconf/pncconf.glade:11553 -#: emc/usr_intf/pncconf/pncconf.glade:16758 -#: emc/usr_intf/pncconf/pncconf.glade:19365 -#: emc/usr_intf/pncconf/pncconf.glade:22356 -#: emc/usr_intf/pncconf/pncconf.glade:24152 -#: emc/usr_intf/pncconf/pncconf.glade:25948 -msgid "23:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Number of digital (bit) in pins:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:10849 -#: emc/usr_intf/pncconf/pncconf.glade:11539 -#: emc/usr_intf/pncconf/pncconf.glade:16744 -#: emc/usr_intf/pncconf/pncconf.glade:19351 -#: emc/usr_intf/pncconf/pncconf.glade:22370 -#: emc/usr_intf/pncconf/pncconf.glade:24166 -#: emc/usr_intf/pncconf/pncconf.glade:25962 -msgid "21:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Number of digital (bit) out pins:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:10863 -#: emc/usr_intf/pncconf/pncconf.glade:11525 -#: emc/usr_intf/pncconf/pncconf.glade:16730 -#: emc/usr_intf/pncconf/pncconf.glade:19337 -#: emc/usr_intf/pncconf/pncconf.glade:22384 -#: emc/usr_intf/pncconf/pncconf.glade:24180 -#: emc/usr_intf/pncconf/pncconf.glade:25976 -msgid "19:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of Internal bit memory:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:10877 -#: emc/usr_intf/pncconf/pncconf.glade:11511 -#: emc/usr_intf/pncconf/pncconf.glade:16716 -#: emc/usr_intf/pncconf/pncconf.glade:19323 -#: emc/usr_intf/pncconf/pncconf.glade:22398 -#: emc/usr_intf/pncconf/pncconf.glade:24194 -#: emc/usr_intf/pncconf/pncconf.glade:25990 -msgid "17:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of Internal word memory:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:10891 -#: emc/usr_intf/pncconf/pncconf.glade:11497 -#: emc/usr_intf/pncconf/pncconf.glade:16702 -#: emc/usr_intf/pncconf/pncconf.glade:19309 -#: emc/usr_intf/pncconf/pncconf.glade:22412 -#: emc/usr_intf/pncconf/pncconf.glade:24208 -#: emc/usr_intf/pncconf/pncconf.glade:26004 -msgid "15:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Setup number of external pins" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:10905 -#: emc/usr_intf/pncconf/pncconf.glade:11483 -#: emc/usr_intf/pncconf/pncconf.glade:16688 -#: emc/usr_intf/pncconf/pncconf.glade:19295 -#: emc/usr_intf/pncconf/pncconf.glade:22426 -#: emc/usr_intf/pncconf/pncconf.glade:24222 -#: emc/usr_intf/pncconf/pncconf.glade:26018 -msgid "13:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Z Auto Touch off program" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:10919 -#: emc/usr_intf/pncconf/pncconf.glade:11469 -#: emc/usr_intf/pncconf/pncconf.glade:16674 -#: emc/usr_intf/pncconf/pncconf.glade:19281 -#: emc/usr_intf/pncconf/pncconf.glade:22440 -#: emc/usr_intf/pncconf/pncconf.glade:24236 -#: emc/usr_intf/pncconf/pncconf.glade:26032 -msgid "11:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "HAL Component Page" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:10933 -#: emc/usr_intf/pncconf/pncconf.glade:11455 -#: emc/usr_intf/pncconf/pncconf.glade:16660 -#: emc/usr_intf/pncconf/pncconf.glade:19267 -#: emc/usr_intf/pncconf/pncconf.glade:22454 -#: emc/usr_intf/pncconf/pncconf.glade:24250 -#: emc/usr_intf/pncconf/pncconf.glade:26046 -msgid " 9:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Add HAL components with this page." msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:10947 -#: emc/usr_intf/pncconf/pncconf.glade:11441 -#: emc/usr_intf/pncconf/pncconf.glade:16646 -#: emc/usr_intf/pncconf/pncconf.glade:19253 -#: emc/usr_intf/pncconf/pncconf.glade:22468 -#: emc/usr_intf/pncconf/pncconf.glade:24264 -#: emc/usr_intf/pncconf/pncconf.glade:26060 -msgid " 7:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Component" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:10961 -#: emc/usr_intf/pncconf/pncconf.glade:11427 -#: emc/usr_intf/pncconf/pncconf.glade:16632 -#: emc/usr_intf/pncconf/pncconf.glade:19239 -#: emc/usr_intf/pncconf/pncconf.glade:22482 -#: emc/usr_intf/pncconf/pncconf.glade:24278 -#: emc/usr_intf/pncconf/pncconf.glade:26074 -msgid " 5:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "number of components" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:10975 -#: emc/usr_intf/pncconf/pncconf.glade:11413 -#: emc/usr_intf/pncconf/pncconf.glade:16618 -#: emc/usr_intf/pncconf/pncconf.glade:19225 -#: emc/usr_intf/pncconf/pncconf.glade:22496 -#: emc/usr_intf/pncconf/pncconf.glade:24292 -#: emc/usr_intf/pncconf/pncconf.glade:26088 -msgid " 3:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "PID" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:10989 -#: emc/usr_intf/pncconf/pncconf.glade:11399 -#: emc/usr_intf/pncconf/pncconf.glade:16604 -#: emc/usr_intf/pncconf/pncconf.glade:19211 -#: emc/usr_intf/pncconf/pncconf.glade:22510 -#: emc/usr_intf/pncconf/pncconf.glade:24306 -#: emc/usr_intf/pncconf/pncconf.glade:26102 -msgid " 1:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "scale" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:11002 -#: emc/usr_intf/pncconf/pncconf.glade:11065 -#: emc/usr_intf/pncconf/pncconf.glade:11324 -#: emc/usr_intf/pncconf/pncconf.glade:11386 -#: emc/usr_intf/pncconf/pncconf.glade:13937 -#: emc/usr_intf/pncconf/pncconf.glade:13999 -#: emc/usr_intf/pncconf/pncconf.glade:16529 -#: emc/usr_intf/pncconf/pncconf.glade:16591 -#: emc/usr_intf/pncconf/pncconf.glade:19142 -#: emc/usr_intf/pncconf/pncconf.glade:19198 -#: emc/usr_intf/pncconf/pncconf.glade:22523 -#: emc/usr_intf/pncconf/pncconf.glade:22580 -#: emc/usr_intf/pncconf/pncconf.glade:24319 -#: emc/usr_intf/pncconf/pncconf.glade:24376 -#: emc/usr_intf/pncconf/pncconf.glade:26115 -#: emc/usr_intf/pncconf/pncconf.glade:26172 -#: emc/usr_intf/pncconf/pncconf.glade:28686 -#: emc/usr_intf/pncconf/pncconf.glade:28749 -#: emc/usr_intf/pncconf/pncconf.glade:28905 -#: emc/usr_intf/pncconf/pncconf.glade:28967 -#: emc/usr_intf/pncconf/pncconf.glade:33067 -#: emc/usr_intf/pncconf/pncconf.glade:33263 -#: emc/usr_intf/pncconf/pncconf.glade:33325 -#: emc/usr_intf/pncconf/pncconf.glade:38183 -#: emc/usr_intf/pncconf/pncconf.glade:38246 -#: emc/usr_intf/pncconf/pncconf.glade:38520 -#: emc/usr_intf/pncconf/pncconf.glade:42530 -#: emc/usr_intf/pncconf/pncconf.glade:42593 -#: emc/usr_intf/pncconf/pncconf.glade:42749 -#: emc/usr_intf/pncconf/pncconf.glade:42811 -#: emc/usr_intf/pncconf/pncconf.glade:46924 -#: emc/usr_intf/pncconf/pncconf.glade:49453 -#: emc/usr_intf/pncconf/pncconf.glade:49516 -#: emc/usr_intf/pncconf/pncconf.glade:49672 -#: emc/usr_intf/pncconf/pncconf.glade:49734 -#: emc/usr_intf/pncconf/pncconf.glade:53847 -msgid "Inv" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mux16" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:11198 -msgid "" -" I/O\n" -"Connector 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "lowpass" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:13811 -msgid "" -" I/O\n" -" Connector 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Base Thread" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:14012 -#: emc/usr_intf/pncconf/pncconf.glade:14039 -#: emc/usr_intf/pncconf/pncconf.glade:14053 -#: emc/usr_intf/pncconf/pncconf.glade:28632 -#: emc/usr_intf/pncconf/pncconf.glade:28646 -#: emc/usr_intf/pncconf/pncconf.glade:28673 -#: emc/usr_intf/pncconf/pncconf.glade:28980 -#: emc/usr_intf/pncconf/pncconf.glade:29007 -#: emc/usr_intf/pncconf/pncconf.glade:29021 -#: emc/usr_intf/pncconf/pncconf.glade:32951 -#: emc/usr_intf/pncconf/pncconf.glade:32965 -#: emc/usr_intf/pncconf/pncconf.glade:32992 -#: emc/usr_intf/pncconf/pncconf.glade:33338 -#: emc/usr_intf/pncconf/pncconf.glade:33365 -#: emc/usr_intf/pncconf/pncconf.glade:33379 -#: emc/usr_intf/pncconf/pncconf.glade:38129 -#: emc/usr_intf/pncconf/pncconf.glade:38143 -#: emc/usr_intf/pncconf/pncconf.glade:38170 -#: emc/usr_intf/pncconf/pncconf.glade:38594 -#: emc/usr_intf/pncconf/pncconf.glade:38621 -#: emc/usr_intf/pncconf/pncconf.glade:38635 -#: emc/usr_intf/pncconf/pncconf.glade:42476 -#: emc/usr_intf/pncconf/pncconf.glade:42490 -#: emc/usr_intf/pncconf/pncconf.glade:42517 -#: emc/usr_intf/pncconf/pncconf.glade:42824 -#: emc/usr_intf/pncconf/pncconf.glade:42851 -#: emc/usr_intf/pncconf/pncconf.glade:42865 -#: emc/usr_intf/pncconf/pncconf.glade:46808 -#: emc/usr_intf/pncconf/pncconf.glade:46822 -#: emc/usr_intf/pncconf/pncconf.glade:46849 -#: emc/usr_intf/pncconf/pncconf.glade:49399 -#: emc/usr_intf/pncconf/pncconf.glade:49413 -#: emc/usr_intf/pncconf/pncconf.glade:49440 -#: emc/usr_intf/pncconf/pncconf.glade:49747 -#: emc/usr_intf/pncconf/pncconf.glade:49774 -#: emc/usr_intf/pncconf/pncconf.glade:49788 -#: emc/usr_intf/pncconf/pncconf.glade:53731 -#: emc/usr_intf/pncconf/pncconf.glade:53745 -#: emc/usr_intf/pncconf/pncconf.glade:53772 -msgid " " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Servo Thread" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:16403 -msgid "" -" I/O\n" -" Connector 4" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Load Command " msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:19017 -msgid "" -" I/O\n" -" Connector 5" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Thread Speed" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:20813 -msgid "" -" I/O\n" -"Connector 6" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Thread Command" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Custom Components Commands" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Machine configuration complete" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:22609 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" -" I/O\n" -"Connector 7" +"All the necessary information has now been gathered. Click \"Apply\" to " +"write your configuration files to disk.\n" +"\n" +"If you are using the 5i25 card with daugther boards or are using SSerial " +"based daughter cards, the cards must be connected and/or field power " +"supplied to the 5i25 \n" +"for the HAL pins to be available. If the config is expecting the pins and " +"they are not there, linuxcnc will error.\n" +"If you experience lockups while running LinuxCNC, you will need to decrease " +"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC, first verify that you " +"entered the proper timings for your stepper drivers. If that does not fix " +"the problem, then run a more thorough latency test as described on the " +"linuxcnc.org wiki:\n" +" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" +"\n" +"If you experience the \"Unexpected Realtime Delay\" message, run a more " +"thorough latency test as described on the linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:24405 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" -" I/O\n" -"Connector 8" +" Motor Encoder Test\n" +"Warning limits switches \n" +" Will not be obeyed" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Slow Dac Speed" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Fast Dac Speed" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Dac Offset:" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder Scale:" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Reset Encoder" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Enable Amp" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:26201 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Invert Encoder" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Invert Motor" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" -" I/O\n" -" Connector 9" +"±\n" +"+\n" +"-\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:28775 -#: emc/usr_intf/pncconf/pncconf.glade:35696 -#: emc/usr_intf/pncconf/pncconf.glade:42619 -#: emc/usr_intf/pncconf/pncconf.glade:49542 -msgid "page 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Seconds" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:31354 -#: emc/usr_intf/pncconf/pncconf.glade:38275 -#: emc/usr_intf/pncconf/pncconf.glade:45198 -#: emc/usr_intf/pncconf/pncconf.glade:52121 -msgid "page 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Enable" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:33107 -#: emc/usr_intf/pncconf/pncconf.glade:40030 -#: emc/usr_intf/pncconf/pncconf.glade:46953 -#: emc/usr_intf/pncconf/pncconf.glade:53876 -msgid "page 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm/minute^2" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:33123 -msgid "Smart Serial 0" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm/minute" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:40046 -msgid "Smart Serial 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Current" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:46969 -msgid "Smart Serial 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "P:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:53892 -msgid "Smart Serial 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "I:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:53914 -msgid "First Parallel Port Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "D:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:53998 -msgid "Outputs (PC to Machine):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Original" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:54552 -msgid "Inputs (Machine to PC):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "DeadBand" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:55977 -msgid "Launch Test Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "PID Tuning" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56003 -msgid "X Axis Motor/Encoder Configuration" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Time:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56091 -msgid "D" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Space:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56104 -msgid "I" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Direction Hold:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56117 -msgid "P" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Direction Setup:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56128 -#: emc/usr_intf/pncconf/pncconf.glade:60896 -#: emc/usr_intf/pncconf/pncconf.glade:62181 -#: emc/usr_intf/pncconf/pncconf.glade:63082 -#: emc/usr_intf/pncconf/pncconf.glade:64367 -#: emc/usr_intf/pncconf/pncconf.glade:65244 -msgid "Bias" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Timing" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56141 -msgid "Deadband" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "enable" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56188 -#: emc/usr_intf/pncconf/pncconf.glade:61107 -#: emc/usr_intf/pncconf/pncconf.glade:61970 -#: emc/usr_intf/pncconf/pncconf.glade:63293 -#: emc/usr_intf/pncconf/pncconf.glade:64156 -#: emc/usr_intf/pncconf/pncconf.glade:65449 -msgid "FF0" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "spindle" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56201 -#: emc/usr_intf/pncconf/pncconf.glade:61097 -#: emc/usr_intf/pncconf/pncconf.glade:61980 -#: emc/usr_intf/pncconf/pncconf.glade:63283 -#: emc/usr_intf/pncconf/pncconf.glade:64166 -#: emc/usr_intf/pncconf/pncconf.glade:65439 -msgid "FF1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Help Page" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56214 -#: emc/usr_intf/pncconf/pncconf.glade:61087 -#: emc/usr_intf/pncconf/pncconf.glade:61990 -#: emc/usr_intf/pncconf/pncconf.glade:63273 -#: emc/usr_intf/pncconf/pncconf.glade:64176 -#: emc/usr_intf/pncconf/pncconf.glade:65429 -msgid "FF2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"X axis:\n" +"Total Travel = 10\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = 0\n" +"Pos Travel Distance = Total Travel - neg travel distance = 10\n" +"Home Position = Origin to Home Position distance = 6\n" +"\n" +"Y axis:\n" +"Total Travel = 8\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = -8\n" +"Pos Travel Distance = Total Travel - neg travel distance = 0\n" +"Home Position = Origin to Home Position distance = 0\n" +"\n" +"Z axis:\n" +"Total Travel = 12\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = -12\n" +"Pos Travel Distance = Total Travel - neg travel distance = 0\n" +"Home Position = Origin to Home Position distance = 0\n" +"\n" +"Note that the direction indicators on the top right show \n" +"movement of the TOOL and on the actual machine,\n" +"often it is the table that actually moves. In that case the \n" +"directions are opposite of shown.\n" +"\n" +"Note this is an example, Many other combinations are \n" +"possible" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56282 -msgid "Servo Info" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Mill" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"Total Travel = 4 + 6 = 10\n" +"Z Home Offset = Origin to Home Switch distance = 10\n" +"Z Neg Travel Distance = Origin to neg limit distance = 0\n" +"Z Pos Travel Distance = Total Travel - neg travel distance = 10\n" +"Z Home Position = Origin to Home Position distance = 4\n" +"\n" +"X axis would be similar but not shown fully for clarity.\n" +"This is just a sample reference other switch combinations are\n" +"possible." msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56362 -msgid "Spindle Max Output:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Lathe" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56412 -msgid "Spindle Max limit:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Diagram" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56426 -msgid "Spindle Min Limit:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Output" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56456 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" -"Open Loop\n" -" Test" +"\t\t\t\tPNCconf - Point aNd Click CONFigurator\n" +"PNCconf is a configuration program for Linuxcnc.\n" +"It configures machines using Mesa I/O cards.\n" +"It configures servo,stepper or closed loop stepper machines.\n" +"It supports some of Mesa's sserial cards.\n" +"It will forever be a work in progress as Linuxcnc changes.\n" +"\n" +"Many thanks To:\n" +"Jeff Eppler - PNCconf is based on stepconf - Jeff's creation. Jeff also has " +"helped with techincal difficulties.\n" +"Big John T - John drew the original machine illustrations. Testing and " +"suggestions.\n" +"Peter Wallace - Technical questions on Mesa's I/O cards. Supplied sample " +"equipment to test with.\n" +"Andy Pugh - suggestions, questions answered and many pin name changes :) \n" +"Dave Armstrong - testing and suggestions expecially with resolvers.\n" +"Everyone who gave a bug report ! I cannot test everything thoughly enough so " +"reports help.\n" +"\n" +"Beta 1 version" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56557 -msgid "Quad Pulses / Rev:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "TPI " msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56572 -msgid "Dac Max Output:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulley teeth (motor:Leadscrew):" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56586 -msgid "Dac Output Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Worm turn ratio (Input:Outputl)" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56599 -msgid "3pwm Deadtime:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Microstep Multiplication Factor:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56612 -msgid "3pwm Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Leadscrew Metric Pitch" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56626 -msgid "Output Info" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motor steps per revolution:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56691 -msgid "Driver Type:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Motor Scale" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56735 -msgid "Direction Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "TPI" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56748 -msgid "Direction Hold" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "X 4 = Pulses/Rev" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56791 -msgid "Step Space" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder lines per revolution:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56804 -msgid "Step On-Time" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulley teeth (encoder:Leadscrew):" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56820 -msgid "Stepper Info" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder Scale" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56871 -msgid "No feedback" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " " msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56881 -msgid "Absolute Feedback" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "encoder pulses per unit:" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "motor steps per unit:" +msgstr "moottorin askelia mittayksikkö kohden" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Calculated Scale" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / encoder pulse" +msgstr "mm / enkooderin pulssi" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Resolution:" +msgstr "Resoluutio:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Distance to acheave max speed:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56895 -msgid "Incremental Feedback" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "sec" +msgstr "s" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Khz" +msgstr "kHz" -#: emc/usr_intf/pncconf/pncconf.glade:56909 -msgid "Incremental Encoder" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Calculated Axis SCALE:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56921 -msgid "Hall sensors" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motor RPM at max speed:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56933 -msgid "Fanuc Red Cap " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "xmaxrpm" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56945 -msgid "Use encoder Index" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motion Data" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:56976 -msgid "Input Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "gtk-cancel" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57000 -msgid "Digital instead of PWM outputs" +#: src/emc/usr_intf/gscreen/gscreen.py:349 +#, python-format +msgid "adding import dir %s" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57009 -msgid "6 outputs instead of 3 " +#: src/emc/usr_intf/gscreen/gscreen.py:355 +#, python-format +msgid "module '%s' imported OK" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57021 -msgid "Force Trapezoid Mode" +#: src/emc/usr_intf/gscreen/gscreen.py:452 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Using CUSTOM glade file from %s ****" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57033 -msgid "Emulate feedback " +#: src/emc/usr_intf/gscreen/gscreen.py:457 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Using SKIN glade file from %s ****" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57045 -msgid "Emulated Hall sensors" +#: src/emc/usr_intf/gscreen/gscreen.py:460 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: using STOCK glade file from: %s ****" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57058 -msgid "Emulated Fanuc Red Cap" +#: src/emc/usr_intf/gscreen/gscreen.py:466 +#, python-format +msgid "**** Gscreen GLADE ERROR: With main screen xml file: %s" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57085 -msgid "8i20 Max Current" +#: src/emc/usr_intf/gscreen/gscreen.py:471 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Screen 2 -Using CUSTOM glade file from %s ****" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57119 -msgid "Output Options" +#: src/emc/usr_intf/gscreen/gscreen.py:477 +#, python-format +msgid "**** Gscreen GLADE ERROR: With screen 2's xml file: %s" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57153 -msgid "Poles" +#: src/emc/usr_intf/gscreen/gscreen.py:479 +msgid "" +"\n" +"**** GSCREEN INFO: No Screen 2 glade file present" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57163 -msgid "Encoder-offset" +#: src/emc/usr_intf/gscreen/gscreen.py:519 +msgid "No UNITS entry found in [TRAJ] or [AXIS_0] of INI file" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57173 -msgid "Drive-offset" +#: src/emc/usr_intf/gscreen/gscreen.py:532 +msgid "" +"*** Gscreen ERROR: Asking for a HAL component using a name that already " +"exists." msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57183 -msgid "output-pattern" +#: src/emc/usr_intf/gscreen/gscreen.py:585 +msgid "No default jog increments entry found in [DISPLAY] of INI file" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57193 -msgid "Input-pattern" +#: src/emc/usr_intf/gscreen/gscreen.py:598 +msgid "No default angular jog increments entry found in [DISPLAY] of INI file" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57203 -msgid "Reverse" +#: src/emc/usr_intf/gscreen/gscreen.py:607 +#, python-format +msgid "" +"No DEFAULT_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57303 -msgid "lead angle" +#: src/emc/usr_intf/gscreen/gscreen.py:618 +#, python-format +msgid "" +"No MAX_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57313 -msgid "alignment current" +#: src/emc/usr_intf/gscreen/gscreen.py:625 +msgid "No MAX_VELOCITY found in [TRAJ] of the INI file" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57354 -msgid "Configuration" +#: src/emc/usr_intf/gscreen/gscreen.py:638 +#, python-format +msgid "" +"No DEFAULT_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57389 -msgid "Use Brushless Motor Control" +#: src/emc/usr_intf/gscreen/gscreen.py:649 +#, python-format +msgid "" +"No MAX_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57425 -msgid "Scale:" +#: src/emc/usr_intf/gscreen/gscreen.py:657 +msgid "No MAX_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57446 -msgid "% " +#: src/emc/usr_intf/gscreen/gscreen.py:663 +msgid "No MIN_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57466 -msgid "Use Spindle-At-Speed" +#: src/emc/usr_intf/gscreen/gscreen.py:669 +msgid "No MAX_FEED_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57491 -msgid "Filter gain:" +#: src/emc/usr_intf/gscreen/gscreen.py:674 +msgid "This screen will be orientated for Lathe options" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57526 -msgid "Spindle Display Filter Settings" +#: src/emc/usr_intf/gscreen/gscreen.py:727 +msgid "CYCLE_TIME in [DISPLAY] of INI file is missing: defaulting to 100ms" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57577 -msgid "Single Input Encoder" +#: src/emc/usr_intf/gscreen/gscreen.py:730 +msgid "CYCLE_TIME in [DISPLAY] of INI file is too small: defaulting to 100ms" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57631 -msgid "Invert Encoder Direction " +#: src/emc/usr_intf/gscreen/gscreen.py:732 +#, python-format +msgid "timeout %d" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57646 -msgid "Invert Motor Direction" +#: src/emc/usr_intf/gscreen/gscreen.py:1001 +msgid "" +"**** WARNING GSCREEN: could not understand the window geometry info in " +"hidden preference file" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57661 -msgid "Feed Speed Following Error:" +#: src/emc/usr_intf/gscreen/gscreen.py:1089 +msgid "Control powered up and initialized" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57675 -msgid "Rapid Speed Following Error:" +#: src/emc/usr_intf/gscreen/gscreen.py:1264 +msgid "Cycle start pressed in AUTO mode" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57715 -msgid "" -"Calculate\n" -"Scale" +#: src/emc/usr_intf/gscreen/gscreen.py:1267 +msgid "Cycle start pressed in MDI mode" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57744 -msgid "Stepper Scale:" +#: src/emc/usr_intf/gscreen/gscreen.py:1290 +#, python-format +msgid "Please change to tool # %s, then click OK." msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57771 -msgid "encoder Scale:" +#: src/emc/usr_intf/gscreen/gscreen.py:1291 +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +#: src/emc/usr_intf/gscreen/gscreen.py:1789 +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2849 +msgid "INFO:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:57928 -msgid "Test / Tune Axis" +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +msgid "Can't start spindle manually while MDI busy" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:58235 -msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +msgid "can't start spindle manually in Auto mode" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:58251 -msgid "Home Search Velocity:" +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +msgid "No direction selected for spindle" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:58266 -msgid "Home Switch location (Offset from machine zero Origin):" +#: src/emc/usr_intf/gscreen/gscreen.py:1331 +#: src/emc/usr_intf/gscreen/gscreen.py:1333 +msgid "Spindle Speed Preset Entry" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:58310 -msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " +#: src/emc/usr_intf/gscreen/gscreen.py:1362 +#: src/emc/usr_intf/gscreen/gscreen.py:1367 +msgid "Manual Tool Index Entry" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:58326 -msgid "Home Position location (offset from machine zero Origin):" +#: src/emc/usr_intf/gscreen/gscreen.py:1489 +msgid "Entry dialog" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:58355 -msgid "Use Backlash Compensation:" +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +msgid "Classicladder realtime component not detected" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:58369 -msgid "Use Compensation File:" +#: src/emc/usr_intf/gscreen/gscreen.py:1617 +msgid "ladder not available - is the realtime component loaded?" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:58412 -msgid "" -"Type 1\n" -"Type 2" +#: src/emc/usr_intf/gscreen/gscreen.py:1691 +msgid "Override Entry" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:58427 -msgid "filename:" +#: src/emc/usr_intf/gscreen/gscreen.py:1719 +msgid "Machine powered on" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:58455 -msgid "Home latch Velocity:" +#: src/emc/usr_intf/gscreen/gscreen.py:1724 +msgid "Machine Estopped!" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:58494 -msgid "Home Search Direction:" +#: src/emc/usr_intf/gscreen/gscreen.py:1727 +msgid "Calculator" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:58507 -msgid "" -"Towards Negative limit\n" -"Towards Positive limit" +#: src/emc/usr_intf/gscreen/gscreen.py:1857 +#, python-format +msgid "Axes %s are homed" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:58523 -msgid "Home Latch Direction:" +#: src/emc/usr_intf/gscreen/gscreen.py:1864 +msgid "All the axes have been homed" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:58552 -msgid "Home Final Velocity:" +#: src/emc/usr_intf/gscreen/gscreen.py:1874 +#, python-format +msgid "There are unhomed axes: %s" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:58591 -msgid "Use Encoder Index For Home:" +#: src/emc/usr_intf/gscreen/gscreen.py:1879 +#, python-format +msgid "Program loaded: %s" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:58603 -msgid "" -"NO\n" -"YES" +#: src/emc/usr_intf/gscreen/gscreen.py:1977 +msgid "Manual Spindle Control" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:58628 -msgid "Advanced Options" +#: src/emc/usr_intf/gscreen/gscreen.py:2034 +msgid "Keyboard" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:58712 -msgid "Cmd 1" +#: src/emc/usr_intf/gscreen/gscreen.py:2067 +msgid "Error with launching 'Onboard' on-screen keyboard program" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:58718 -msgid "Cmd 2" +#: src/emc/usr_intf/gscreen/gscreen.py:2215 +#, python-format +msgid "**** GSCREEN INFO: Overriding internal signal call to %s" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:58728 -msgid "Cmd 3" +#: src/emc/usr_intf/gscreen/gscreen.py:2643 +msgid " Zero Origin" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:58738 -msgid "Cmd 4" +#: src/emc/usr_intf/gscreen/gscreen.py:2644 +msgid "Offset Origin" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:58748 -msgid "Cmd 5" +#: src/emc/usr_intf/gscreen/gscreen.py:2659 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing text or type) " +"in INI File [DISPLAY] section" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:58874 -msgid "Cmd 6" +#: src/emc/usr_intf/gscreen/gscreen.py:2661 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing pinname) in " +"INI File [DISPLAY] section" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:58884 -msgid "Cmd 7" +#: src/emc/usr_intf/gscreen/gscreen.py:2663 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing boldtext) in " +"INI File [DISPLAY] section" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:58896 -msgid "Cmd 8" +#: src/emc/usr_intf/gscreen/gscreen.py:2667 +#, python-format +msgid "" +"**** Gscreen ERROR: invalid message type (%s)in INI File [DISPLAY] section" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:58908 -msgid "Cmd 9" +#: src/emc/usr_intf/gscreen/gscreen.py:2699 +msgid "Dialog error - Is the dialog handler missing from the handler file?" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:58920 -msgid "Cmd 10" +#: src/emc/usr_intf/gscreen/gscreen.py:2701 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3540 +msgid "Manual Toolchange" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:58990 -msgid "Cmd 11" +#: src/emc/usr_intf/gscreen/gscreen.py:2703 +#: src/emc/usr_intf/gmoccapy/dialogs.py:94 +#: src/emc/usr_intf/gmoccapy/dialogs.py:107 +#: src/emc/usr_intf/gmoccapy/dialogs.py:119 +msgid "Operator Message" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:59000 -msgid "Cmd 12" +#: src/emc/usr_intf/gscreen/gscreen.py:2737 +#: src/emc/usr_intf/gscreen/gscreen.py:2741 +#: src/emc/usr_intf/gmoccapy/dialogs.py:155 +#: src/emc/usr_intf/gmoccapy/dialogs.py:159 +msgid "Restart Entry" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:59012 -msgid "Cmd 13" +#: src/emc/usr_intf/gscreen/gscreen.py:2752 +#: src/emc/usr_intf/gmoccapy/dialogs.py:173 +msgid "Enter" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:59024 -msgid "Cmd 14" +#: src/emc/usr_intf/gscreen/gscreen.py:2774 +#, python-format +msgid "Ready to Restart program from line %d" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:59036 -msgid "Cmd 15" +#: src/emc/usr_intf/gscreen/gscreen.py:2807 +msgid "Invalid embeded tab configuration" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:59053 -msgid "Include Halui user interface component / commands" +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +msgid "Can't jog multiple axis" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:59127 -msgid "Number of digital (bit) in pins:" +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +msgid "No axis selected to jog" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:59138 -msgid "Number of digital (bit) out pins:" +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +msgid "No axis selected to move" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:59308 -msgid "Setup number of external pins" +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +msgid "Can't home multiple axis - select HOME ALL instead" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:59360 -msgid "Z Auto Touch off program" +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +msgid "No axis selected to home" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:59505 -msgid "HAL Component Page" +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +msgid "Can't unhome multiple axis" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:59654 -msgid "mux16" +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +msgid "No axis selected to unhome" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:59681 -msgid "scale" +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +msgid "No axis selected for origin zeroing" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:59707 -msgid "PID" +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +msgid "No axis selected for origin touch-off" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:59718 -msgid "number of components" +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +msgid "Can't tool touch-off multiple axes" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:59746 -msgid "Component" +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +msgid "No axis selected for tool touch-off" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:59773 -msgid "Add HAL components with this page." +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#: src/emc/usr_intf/gscreen/gscreen.py:3375 +msgid "Error Message" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:59823 -msgid "Thread Command" +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#, python-format +msgid "Tool editor error - is the %s editor available?" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:59833 -msgid "Thread Speed" +#: src/emc/usr_intf/gscreen/gscreen.py:3377 +#: src/emc/usr_intf/gscreen/gscreen.py:3379 +msgid "Message" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:59885 -msgid "Load Command " +#: src/emc/usr_intf/gscreen/gscreen.py:3409 +#, python-format +msgid "%d RPM" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:59931 -msgid "Servo Thread" +#: src/emc/usr_intf/gscreen/gscreen.glade:48 +#: src/emc/usr_intf/gscreen/gscreen.glade:59 +#: src/emc/usr_intf/gscreen/gscreen.glade:135 +#: src/emc/usr_intf/gscreen/gscreen.glade:176 +#: src/emc/usr_intf/gscreen/gscreen.glade:187 +#: src/emc/usr_intf/gscreen/gscreen.glade:264 +#: src/emc/usr_intf/gscreen/gscreen.glade:306 +#: src/emc/usr_intf/gscreen/gscreen.glade:317 +#: src/emc/usr_intf/gscreen/gscreen.glade:393 +#: src/emc/usr_intf/gscreen/gscreen.glade:434 +#: src/emc/usr_intf/gscreen/gscreen.glade:445 +#: src/emc/usr_intf/gscreen/gscreen.glade:521 +#: src/emc/usr_intf/gscreen/gscreen.glade:562 +#: src/emc/usr_intf/gscreen/gscreen.glade:573 +#: src/emc/usr_intf/gscreen/gscreen.glade:649 +#: src/emc/usr_intf/gscreen/gscreen.glade:690 +#: src/emc/usr_intf/gscreen/gscreen.glade:701 +#: src/emc/usr_intf/gscreen/gscreen.glade:777 +#: src/emc/usr_intf/gscreen/gscreen.glade:818 +#: src/emc/usr_intf/gscreen/gscreen.glade:829 +#: src/emc/usr_intf/gscreen/gscreen.glade:905 +#: src/emc/usr_intf/gscreen/gscreen.glade:946 +#: src/emc/usr_intf/gscreen/gscreen.glade:957 +#: src/emc/usr_intf/gscreen/gscreen.glade:1033 +#: src/emc/usr_intf/gscreen/gscreen.glade:1074 +#: src/emc/usr_intf/gscreen/gscreen.glade:1085 +#: src/emc/usr_intf/gscreen/gscreen.glade:1161 +msgid "0000.0000" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:59944 -msgid "Base Thread" +#: src/emc/usr_intf/gscreen/gscreen.glade:73 +#: src/emc/usr_intf/gscreen/gscreen.glade:201 +#: src/emc/usr_intf/gscreen/gscreen.glade:331 +#: src/emc/usr_intf/gscreen/gscreen.glade:459 +#: src/emc/usr_intf/gscreen/gscreen.glade:587 +#: src/emc/usr_intf/gscreen/gscreen.glade:715 +#: src/emc/usr_intf/gscreen/gscreen.glade:843 +#: src/emc/usr_intf/gscreen/gscreen.glade:971 +#: src/emc/usr_intf/gscreen/gscreen.glade:1099 +msgid "REL" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:59958 -msgid "Custom Components Commands" +#: src/emc/usr_intf/gscreen/gscreen.glade:99 +#: src/emc/usr_intf/gscreen/gscreen.glade:227 +#: src/emc/usr_intf/gscreen/gscreen.glade:357 +#: src/emc/usr_intf/gscreen/gscreen.glade:485 +#: src/emc/usr_intf/gscreen/gscreen.glade:613 +#: src/emc/usr_intf/gscreen/gscreen.glade:741 +#: src/emc/usr_intf/gscreen/gscreen.glade:869 +#: src/emc/usr_intf/gscreen/gscreen.glade:997 +#: src/emc/usr_intf/gscreen/gscreen.glade:1125 +msgid "ABS" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:60010 -msgid "" -" Motor Encoder Test\n" -"Warning limits switches \n" -" Will not be obeyed" +#: src/emc/usr_intf/gscreen/gscreen.glade:630 +msgid "B" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:60046 -#: emc/usr_intf/pncconf/pncconf.glade:60745 -#: emc/usr_intf/pncconf/pncconf.glade:61838 -#: emc/usr_intf/pncconf/pncconf.glade:62931 -#: emc/usr_intf/pncconf/pncconf.glade:64024 -#: emc/usr_intf/pncconf/pncconf.glade:65004 -msgid "Invert Motor" +#: src/emc/usr_intf/gscreen/gscreen.glade:758 +msgid "C" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:60062 -#: emc/usr_intf/pncconf/pncconf.glade:60761 -#: emc/usr_intf/pncconf/pncconf.glade:61854 -#: emc/usr_intf/pncconf/pncconf.glade:62947 -#: emc/usr_intf/pncconf/pncconf.glade:64040 -#: emc/usr_intf/pncconf/pncconf.glade:65019 -msgid "Invert Encoder" +#: src/emc/usr_intf/gscreen/gscreen.glade:886 +msgid "U" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:60079 -msgid "Enable Amp" +#: src/emc/usr_intf/gscreen/gscreen.glade:1014 +msgid "V" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:60093 -msgid "Reset Encoder" +#: src/emc/usr_intf/gscreen/gscreen.glade:1298 +msgid "G code" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:60121 -msgid "Encoder Scale:" +#: src/emc/usr_intf/gscreen/gscreen.glade:1392 +msgid "G Codes Active" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:60132 -msgid "Dac Offset:" +#: src/emc/usr_intf/gscreen/gscreen.glade:1451 +msgid "MV:100%" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:60222 -msgid "Fast Dac Speed" +#: src/emc/usr_intf/gscreen/gscreen.glade:1470 +msgid " Mist" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:60237 -msgid "Slow Dac Speed" +#: src/emc/usr_intf/gscreen/gscreen.glade:1481 +msgid " Flood " msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:60386 -#: emc/usr_intf/pncconf/pncconf.glade:61482 -#: emc/usr_intf/pncconf/pncconf.glade:62575 -#: emc/usr_intf/pncconf/pncconf.glade:63668 -#: emc/usr_intf/pncconf/pncconf.glade:64767 -msgid "mm/minute" +#: src/emc/usr_intf/gscreen/gscreen.glade:1533 +msgid " At Speed " msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:60420 -#: emc/usr_intf/pncconf/pncconf.glade:61515 -#: emc/usr_intf/pncconf/pncconf.glade:62608 -#: emc/usr_intf/pncconf/pncconf.glade:63701 -#: emc/usr_intf/pncconf/pncconf.glade:64800 -msgid "mm/minute^2" +#: src/emc/usr_intf/gscreen/gscreen.glade:1546 +msgid " Jog mode" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:60529 -#: emc/usr_intf/pncconf/pncconf.glade:61623 -#: emc/usr_intf/pncconf/pncconf.glade:62716 -#: emc/usr_intf/pncconf/pncconf.glade:64909 -msgid "Enable" +#: src/emc/usr_intf/gscreen/gscreen.glade:1600 +msgid "10 DPM" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:60579 -#: emc/usr_intf/pncconf/pncconf.glade:61672 -#: emc/usr_intf/pncconf/pncconf.glade:62765 -#: emc/usr_intf/pncconf/pncconf.glade:63858 -#: emc/usr_intf/pncconf/pncconf.glade:65118 -msgid "Seconds" +#: src/emc/usr_intf/gscreen/gscreen.glade:1616 +msgid "10 Ipm" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:60886 -#: emc/usr_intf/pncconf/pncconf.glade:62191 -#: emc/usr_intf/pncconf/pncconf.glade:63072 -#: emc/usr_intf/pncconf/pncconf.glade:64377 -#: emc/usr_intf/pncconf/pncconf.glade:65234 -msgid "DeadBand" +#: src/emc/usr_intf/gscreen/gscreen.glade:1690 +msgid "Status" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:61068 -#: emc/usr_intf/pncconf/pncconf.glade:61359 -#: emc/usr_intf/pncconf/pncconf.glade:62009 -#: emc/usr_intf/pncconf/pncconf.glade:62380 -#: emc/usr_intf/pncconf/pncconf.glade:63254 -#: emc/usr_intf/pncconf/pncconf.glade:63541 -#: emc/usr_intf/pncconf/pncconf.glade:64195 -#: emc/usr_intf/pncconf/pncconf.glade:64566 -#: emc/usr_intf/pncconf/pncconf.glade:65410 -#: emc/usr_intf/pncconf/pncconf.glade:65697 -msgid "Original" +#: src/emc/usr_intf/gscreen/gscreen.glade:1715 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2510 +msgid "" +"Search\n" +" Text:" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:61117 -#: emc/usr_intf/pncconf/pncconf.glade:61960 -#: emc/usr_intf/pncconf/pncconf.glade:63303 -#: emc/usr_intf/pncconf/pncconf.glade:64146 -#: emc/usr_intf/pncconf/pncconf.glade:65459 -msgid "D:" +#: src/emc/usr_intf/gscreen/gscreen.glade:1766 +msgid "Mode" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:61127 -#: emc/usr_intf/pncconf/pncconf.glade:61950 -#: emc/usr_intf/pncconf/pncconf.glade:63313 -#: emc/usr_intf/pncconf/pncconf.glade:64136 -#: emc/usr_intf/pncconf/pncconf.glade:65469 -msgid "I:" +#: src/emc/usr_intf/gscreen/gscreen.glade:1782 +msgid "Main Level" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:61137 -#: emc/usr_intf/pncconf/pncconf.glade:61940 -#: emc/usr_intf/pncconf/pncconf.glade:63323 -#: emc/usr_intf/pncconf/pncconf.glade:64126 -#: emc/usr_intf/pncconf/pncconf.glade:65479 -msgid "P:" +#: src/emc/usr_intf/gscreen/gscreen.glade:1823 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3678 +msgid "Themes" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:61147 -#: emc/usr_intf/pncconf/pncconf.glade:61371 -#: emc/usr_intf/pncconf/pncconf.glade:61930 -#: emc/usr_intf/pncconf/pncconf.glade:62368 -#: emc/usr_intf/pncconf/pncconf.glade:63333 -#: emc/usr_intf/pncconf/pncconf.glade:63553 -#: emc/usr_intf/pncconf/pncconf.glade:64116 -#: emc/usr_intf/pncconf/pncconf.glade:64554 -#: emc/usr_intf/pncconf/pncconf.glade:65489 -#: emc/usr_intf/pncconf/pncconf.glade:65709 -msgid "Current" +#: src/emc/usr_intf/gscreen/gscreen.glade:1847 +msgid "Relative Text Color" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:61164 -#: emc/usr_intf/pncconf/pncconf.glade:62257 -#: emc/usr_intf/pncconf/pncconf.glade:63350 -#: emc/usr_intf/pncconf/pncconf.glade:64443 -#: emc/usr_intf/pncconf/pncconf.glade:65506 -msgid "PID Tuning" +#: src/emc/usr_intf/gscreen/gscreen.glade:1895 +msgid "DTG Text Color" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:61349 -#: emc/usr_intf/pncconf/pncconf.glade:62392 -#: emc/usr_intf/pncconf/pncconf.glade:63531 -#: emc/usr_intf/pncconf/pncconf.glade:64578 -#: emc/usr_intf/pncconf/pncconf.glade:65687 -msgid "Direction Setup:" +#: src/emc/usr_intf/gscreen/gscreen.glade:1916 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3710 +msgid "Warning Audio" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:61383 -#: emc/usr_intf/pncconf/pncconf.glade:62358 -#: emc/usr_intf/pncconf/pncconf.glade:63565 -#: emc/usr_intf/pncconf/pncconf.glade:64544 -#: emc/usr_intf/pncconf/pncconf.glade:65721 -msgid "Direction Hold:" +#: src/emc/usr_intf/gscreen/gscreen.glade:1926 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3723 +msgid "Alert Audio" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:61393 -#: emc/usr_intf/pncconf/pncconf.glade:62348 -#: emc/usr_intf/pncconf/pncconf.glade:63575 -#: emc/usr_intf/pncconf/pncconf.glade:64534 -#: emc/usr_intf/pncconf/pncconf.glade:65731 -msgid "Step Space:" +#: src/emc/usr_intf/gscreen/gscreen.glade:1947 +msgid "Grid Size" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:61403 -#: emc/usr_intf/pncconf/pncconf.glade:62338 -#: emc/usr_intf/pncconf/pncconf.glade:63585 -#: emc/usr_intf/pncconf/pncconf.glade:64524 -#: emc/usr_intf/pncconf/pncconf.glade:65741 -msgid "Step Time:" +#: src/emc/usr_intf/gscreen/gscreen.glade:1986 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4119 +msgid "Starting RPM" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:61418 -#: emc/usr_intf/pncconf/pncconf.glade:62507 -#: emc/usr_intf/pncconf/pncconf.glade:63600 -#: emc/usr_intf/pncconf/pncconf.glade:64693 -#: emc/usr_intf/pncconf/pncconf.glade:65756 -msgid "Step Timing" +#: src/emc/usr_intf/gscreen/gscreen.glade:2015 +msgid "Metric\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:63809 -msgid "enable" +#: src/emc/usr_intf/gscreen/gscreen.glade:2030 +msgid "" +" Display\n" +"Aux Screen" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:65777 -msgid "spindle" +#: src/emc/usr_intf/gscreen/gscreen.glade:2045 +msgid "" +"Diameter\n" +" Mode" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:65860 -msgid "Help Page" +#: src/emc/usr_intf/gscreen/gscreen.glade:2062 +#: src/emc/usr_intf/gscreen/gscreen.glade:3096 +msgid "" +" Show\n" +"Offsets" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:65890 +#: src/emc/usr_intf/gscreen/gscreen.glade:2079 msgid "" -"X axis:\n" -"Total Travel = 10\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = 0\n" -"Pos Travel Distance = Total Travel - neg travel distance = 10\n" -"Home Position = Origin to Home Position distance = 6\n" -"\n" -"Y axis:\n" -"Total Travel = 8\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = -8\n" -"Pos Travel Distance = Total Travel - neg travel distance = 0\n" -"Home Position = Origin to Home Position distance = 0\n" -"\n" -"Z axis:\n" -"Total Travel = 12\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = -12\n" -"Pos Travel Distance = Total Travel - neg travel distance = 0\n" -"Home Position = Origin to Home Position distance = 0\n" -"\n" -"Note that the direction indicators on the top right show \n" -"movement of the TOOL and on the actual machine,\n" -"often it is the table that actually moves. In that case the \n" -"directions are opposite of shown.\n" -"\n" -"Note this is an example, Many other combinations are \n" -"possible" +"Show\n" +"DTG" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:65930 -msgid "Mill" +#: src/emc/usr_intf/gscreen/gscreen.glade:2096 +msgid "" +" Gscreen\n" +"Fullscreen" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:65949 +#: src/emc/usr_intf/gscreen/gscreen.glade:2118 msgid "" -"Total Travel = 4 + 6 = 10\n" -"Z Home Offset = Origin to Home Switch distance = 10\n" -"Z Neg Travel Distance = Origin to neg limit distance = 0\n" -"Z Pos Travel Distance = Total Travel - neg travel distance = 10\n" -"Z Home Position = Origin to Home Position distance = 4\n" -"\n" -"X axis would be similar but not shown fully for clarity.\n" -"This is just a sample reference other switch combinations are\n" -"possible." +" On M7 Use\n" +"Aux Coolant" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:65973 -msgid "Lathe" +#: src/emc/usr_intf/gscreen/gscreen.glade:2131 +msgid "" +" On M8 Use\n" +"Aux Coolant" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:65989 -msgid "Diagram" +#: src/emc/usr_intf/gscreen/gscreen.glade:2144 +msgid "Hide Pointer" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:66022 -msgid "Output" +#: src/emc/usr_intf/gscreen/gscreen.glade:2156 +msgid "" +" Desktop\n" +"Notification" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:66102 -msgid "Motor steps per revolution:" +#: src/emc/usr_intf/gscreen/gscreen.glade:2228 +#: src/emc/usr_intf/gscreen/gscreen.glade:2368 +msgid "Debug" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:66152 -#: emc/usr_intf/pncconf/pncconf.glade:66438 -msgid "Leadscrew Metric Pitch" +#: src/emc/usr_intf/gscreen/gscreen.glade:2263 +msgid "Alarm History" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:66165 -msgid "Microstep Multiplication Factor:" +#: src/emc/usr_intf/gscreen/gscreen.glade:2281 +msgid "" +" Launch\n" +"Halshow" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:66178 -#: emc/usr_intf/pncconf/pncconf.glade:66460 -msgid "Worm turn ratio (Input:Outputl)" +#: src/emc/usr_intf/gscreen/gscreen.glade:2293 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6449 +msgid "Calibration" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:66191 -msgid "Pulley teeth (motor:Leadscrew):" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2304 +#, fuzzy +msgid "Halmeter" +msgstr "Hal-mittari" -#: emc/usr_intf/pncconf/pncconf.glade:66335 -msgid "TPI " +#: src/emc/usr_intf/gscreen/gscreen.glade:2315 +msgid "" +"linuxcnc\n" +" Status" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:66351 -msgid "Step Motor Scale" +#: src/emc/usr_intf/gscreen/gscreen.glade:2327 +msgid "Halscope" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:66451 -msgid "Pulley teeth (encoder:Leadscrew):" +#: src/emc/usr_intf/gscreen/gscreen.glade:2338 +msgid "Ladder" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:66516 -msgid "Encoder lines per revolution:" +#: src/emc/usr_intf/gscreen/gscreen.glade:2386 +msgid "Tooleditor" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:66526 -msgid "X 4 = Pulses/Rev" +#: src/emc/usr_intf/gscreen/gscreen.glade:2404 +msgid "" +"Offset\n" +" Page" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:66630 -msgid "TPI" +#: src/emc/usr_intf/gscreen/gscreen.glade:2572 +#: src/emc/usr_intf/gscreen/gscreen.glade:2749 +#: src/emc/usr_intf/gscreen/gscreen.glade:3156 +msgid "\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:66646 -msgid "Encoder Scale" +#: src/emc/usr_intf/gscreen/gscreen.glade:2584 +msgid "Tool Setting" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:66690 -msgid "motor steps per unit:" -msgstr "moottorin askelia mittayksikkö kohden" - -#: emc/usr_intf/pncconf/pncconf.glade:66700 -msgid "encoder pulses per unit:" +#: src/emc/usr_intf/gscreen/gscreen.glade:2648 +msgid "" +"Single\n" +" Step" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:66735 -msgid " " +#: src/emc/usr_intf/gscreen/gscreen.glade:2661 +msgid "" +"Run At\n" +" Line" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:66749 -msgid "Calculated Scale" +#: src/emc/usr_intf/gscreen/gscreen.glade:2673 +msgid "" +"Change \n" +" View" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:66827 -msgid "xmaxrpm" +#: src/emc/usr_intf/gscreen/gscreen.glade:2760 +msgid "Homing\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:66843 -msgid "RPM" -msgstr "RPM" +#: src/emc/usr_intf/gscreen/gscreen.glade:2781 +msgid "" +"Ignore\n" +"Limits" +msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:66856 -msgid "Motor RPM at max speed:" +#: src/emc/usr_intf/gscreen/gscreen.glade:2810 +msgid "" +" Set\n" +"Override" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:66900 -msgid "Calculated Axis SCALE:" +#: src/emc/usr_intf/gscreen/gscreen.glade:2824 +msgid "Graphics\n" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:66913 -msgid "Khz" -msgstr "kHz" +#: src/emc/usr_intf/gscreen/gscreen.glade:2838 +msgid "" +"Menu\n" +"Level" +msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:66928 -msgid "sec" -msgstr "s" +#: src/emc/usr_intf/gscreen/gscreen.glade:2851 +msgid "" +" Launch\n" +"Keyboard" +msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:67028 -msgid "Distance to acheave max speed:" +#: src/emc/usr_intf/gscreen/gscreen.glade:2868 +msgid "Select Buttons" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:67056 -msgid "Resolution:" -msgstr "Resoluutio:" +#: src/emc/usr_intf/gscreen/gscreen.glade:2955 +msgid "" +"Unhome \n" +" All" +msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:67084 -msgid "mm / encoder pulse" -msgstr "mm / enkooderin pulssi" +#: src/emc/usr_intf/gscreen/gscreen.glade:2967 +msgid "" +"Unhome\n" +" Axis" +msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:67102 -msgid "Motion Data" +#: src/emc/usr_intf/gscreen/gscreen.glade:2979 +#: src/emc/usr_intf/gscreen/gscreen.glade:3084 +msgid "" +"Toggle\n" +"Readout" msgstr "" -#: emc/usr_intf/pncconf/pncconf.glade:67130 -msgid "gtk-cancel" +#: src/emc/usr_intf/gscreen/gscreen.glade:3004 +msgid "" +"Jogging\n" +" Mode" msgstr "" -#: emc/task/emctaskmain.cc:427 emc/task/emctaskmain.cc:460 -#, c-format -msgid "%s exceeds +X limit" +#: src/emc/usr_intf/gscreen/gscreen.glade:3016 +msgid "" +"coordinate\n" +" System" msgstr "" -#: emc/task/emctaskmain.cc:432 emc/task/emctaskmain.cc:465 -#, c-format -msgid "%s exceeds +Y limit" +#: src/emc/usr_intf/gscreen/gscreen.glade:3060 +msgid "" +"Index\n" +" Tool" msgstr "" -#: emc/task/emctaskmain.cc:437 emc/task/emctaskmain.cc:470 -#, c-format -msgid "%s exceeds +Z limit" +#: src/emc/usr_intf/gscreen/gscreen.glade:3072 +msgid "" +"Spindle\n" +"Controls" msgstr "" -#: emc/task/emctaskmain.cc:442 emc/task/emctaskmain.cc:475 -#, c-format -msgid "%s exceeds -X limit" +#: src/emc/usr_intf/gscreen/gscreen.glade:3195 +msgid "Open" msgstr "" -#: emc/task/emctaskmain.cc:447 emc/task/emctaskmain.cc:480 -#, c-format -msgid "%s exceeds -Y limit" +#: src/emc/usr_intf/gscreen/gscreen.glade:3205 +msgid "" +" Block\n" +"Delete" msgstr "" -#: emc/task/emctaskmain.cc:452 emc/task/emctaskmain.cc:485 -#, c-format -msgid "%s exceeds -Z limit" +#: src/emc/usr_intf/gscreen/gscreen.glade:3217 +msgid "" +"Optional\n" +" Stop" msgstr "" -#: emc/task/emctaskmain.cc:810 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:3229 msgid "" -"command (%s) cannot be executed until the machine is out of E-stop and " -"turned on" +" Full\n" +"View" msgstr "" -#: emc/task/emctaskmain.cc:930 -#, c-format -msgid "can't do that (%s) in manual mode" +#: src/emc/usr_intf/gscreen/gscreen.glade:3265 +msgid "" +"Next\n" +" Tab" msgstr "" -#: emc/task/emctaskmain.cc:1027 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter idle" +#: src/emc/usr_intf/gscreen/gscreen.glade:3285 +msgid "" +" Feed\n" +"Override" msgstr "" -#: emc/task/emctaskmain.cc:1087 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter reading" +#: src/emc/usr_intf/gscreen/gscreen.glade:3298 +msgid "" +"Spindle\n" +"Override" msgstr "" -#: emc/task/emctaskmain.cc:1169 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter paused" +#: src/emc/usr_intf/gscreen/gscreen.glade:3311 +msgid "" +" Rapid\n" +"Override" msgstr "" -#: emc/task/emctaskmain.cc:1231 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter waiting" +#: src/emc/usr_intf/gscreen/gscreen.glade:3332 +msgid "" +" Jog\n" +"Speed" msgstr "" -#: emc/task/emctaskmain.cc:1321 -#, c-format -msgid "can't do that (%s) in MDI mode" +#: src/emc/usr_intf/gscreen/gscreen.glade:3345 +msgid "" +" Jog\n" +"Increments" msgstr "" -#: emc/task/emctaskmain.cc:1943 -msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" +#: src/emc/usr_intf/gscreen/gscreen.glade:3361 +msgid "" +"Adjust\n" +"Rotary" msgstr "" -#: emc/task/emctaskmain.cc:2013 -msgid "Can't issue MDI command when not homed" +#: src/emc/usr_intf/gscreen/gscreen.glade:3383 +msgid "" +"Change\n" +" View" msgstr "" -#: emc/task/emctaskmain.cc:2018 -msgid "Must be in MDI mode to issue MDI command" +#: src/emc/usr_intf/gscreen/gscreen.glade:3431 +msgid "" +" Pan\n" +"Vertical" msgstr "" -#: emc/task/emctaskmain.cc:2079 -msgid "Can't run a program when not homed" +#: src/emc/usr_intf/gscreen/gscreen.glade:3444 +msgid "" +" Pan\n" +"Horizontal" msgstr "" -#: emc/rs274ngc/interp_arc.cc:108 emc/rs274ngc/rs274ngc_return.hh:160 -msgid "Zero radius arc" -msgstr "0-säteinen kaari" +#: src/emc/usr_intf/gscreen/gscreen.glade:3457 +msgid "" +" Rotate\n" +"Horiontal" +msgstr "" -#: emc/rs274ngc/interp_arc.cc:112 emc/rs274ngc/interp_arc.cc:279 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:3470 msgid "" -"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " -"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " -"rel_err=%.4f%%" +" Rotate\n" +"Vertical" msgstr "" -#: emc/rs274ngc/interp_check.cc:89 -msgid "G4 not allowed with G2 or G3 because they both use P" +#: src/emc/usr_intf/gscreen/gscreen.glade:3491 +msgid "" +"Search\n" +" Bwd" msgstr "" -#: emc/rs274ngc/interp_check.cc:92 -msgid "Line with G10 does not have L1, L10, L11, L2, or L20" +#: src/emc/usr_intf/gscreen/gscreen.glade:3503 +msgid "" +"Search\n" +" Fwd" msgstr "" -#: emc/rs274ngc/interp_check.cc:93 -msgid "P value not an integer with G10" +#: src/emc/usr_intf/gscreen/gscreen.glade:3561 +msgid "" +" Reload\n" +"Program" msgstr "" -#: emc/rs274ngc/interp_check.cc:94 -msgid "P value out of range (0-9) with G10 L2 or L20" +#: src/emc/usr_intf/gscreen/gscreen.glade:3604 +msgid "" +" Clear\n" +"status" msgstr "" -#: emc/rs274ngc/interp_check.cc:95 -msgid "P value out of range with G10 L1 or G10 L10" +#: src/emc/usr_intf/gscreen/gscreen.glade:3634 +msgid "G54" msgstr "" -#: emc/rs274ngc/interp_check.cc:99 -msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." +#: src/emc/usr_intf/gscreen/gscreen.glade:3650 +msgid "calc" msgstr "" -#: emc/rs274ngc/interp_check.cc:248 -msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:3725 +msgid "test" msgstr "" -#: emc/rs274ngc/interp_check.cc:254 -msgid "E word with no G76, M66, M67 or M68 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:3728 +msgid "test2" msgstr "" -#: emc/rs274ngc/interp_check.cc:259 -msgid "H word with no G43 or G76 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:3778 +msgid "Data Entry" msgstr "" -#: emc/rs274ngc/interp_check.cc:265 -msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:3805 +msgid "Calculator Entry" msgstr "" -#: emc/rs274ngc/interp_check.cc:271 -msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:3894 +msgid "Program Restart" msgstr "" -#: emc/rs274ngc/interp_check.cc:277 -msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:3909 +msgid "" +"Highlighting the run-at-line with the\n" +"up / down buttons or entering the line\n" +"directly." msgstr "" -#: emc/rs274ngc/interp_check.cc:287 +#: src/emc/usr_intf/gscreen/gscreen.glade:3923 msgid "" -"L word with no G10, cutter compensation, canned cycle, digital/analog input, " -"or NURBS code" +"Line\n" +" Up" msgstr "" -#: emc/rs274ngc/interp_check.cc:299 +#: src/emc/usr_intf/gscreen/gscreen.glade:3946 msgid "" -"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " -"M53 M62 M63 M64 M65 M66 or user M code to use it" +" Line\n" +"Down" msgstr "" -#: emc/rs274ngc/interp_check.cc:302 -msgid "P value not an integer with G2 or G3" +#: src/emc/usr_intf/gscreen/gscreen.glade:4028 +msgid "S 1000" msgstr "" -#: emc/rs274ngc/interp_check.cc:304 -msgid "P value should be 1 or greater with G2 or G3" +#: src/emc/usr_intf/gscreen/gscreen.glade:4098 +msgid " FWD" msgstr "" -#: emc/rs274ngc/interp_check.cc:311 -msgid "" -"Q word with no G5, G10, G64, G73, G76, G83, M66, M67, M68 or user M code " -"that uses it" +#: src/emc/usr_intf/gscreen/gscreen.glade:4133 +msgid " REV" msgstr "" -#: emc/rs274ngc/interp_convert.cc:138 -msgid "You must specify both X and Y coordinates for Control Points" +#: src/emc/usr_intf/gscreen/gscreen2.glade:35 +msgid "screen 2" msgstr "" -#: emc/rs274ngc/interp_convert.cc:141 -msgid "Can specify P without X and Y only for the first control point" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:403 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:884 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:923 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:934 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:949 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1099 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1102 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1156 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1163 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1166 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2148 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2157 +msgid "**** GMOCCAPY INFO ****" msgstr "" -#: emc/rs274ngc/interp_convert.cc:144 -msgid "Must specify positive weight P for every Control Point" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:404 +msgid "**** no valid probe config in INI File ****" msgstr "" -#: emc/rs274ngc/interp_convert.cc:147 -msgid "Cannot make a NURBS with 0 feedrate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:405 +msgid "**** disabled tool measurement ****" msgstr "" -#: emc/rs274ngc/interp_convert.cc:182 -msgid "Cannot use G5.3 without G5.2 first" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:770 +msgid "**** GMOCCAPY ERROR : ****" msgstr "" -#: emc/rs274ngc/interp_convert.cc:183 -#, c-format +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:772 +#, python-format msgid "" -"You must specify a number of control points at least equal to the order L = %" -"d" +"**** gmoccapy can only handle 4 axis, ****\n" +"**** but you have given %d through your INI file ****\n" msgstr "" -#: emc/rs274ngc/interp_convert.cc:212 -msgid "Cannot convert spline with cutter radius compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:774 +msgid "" +"**** gmoccapy will not start ****\n" +"\n" msgstr "" -#: emc/rs274ngc/interp_convert.cc:222 -msgid "Splines must be in the XY plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:786 +#, python-format +msgid "Home axis %s" msgstr "" -#: emc/rs274ngc/interp_convert.cc:227 -msgid "Splines may not have motion in Z, A, B, or C" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:885 +msgid "**** To many increments given in INI File for this screen ****" msgstr "" -#: emc/rs274ngc/interp_convert.cc:231 -msgid "Must specify both I and J with G5.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:886 +msgid "**** Only the first 10 will be reachable through this screen ****" msgstr "" -#: emc/rs274ngc/interp_convert.cc:250 -msgid "Must specify both I and J, or neither" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:924 +msgid "**** gmoccapy screen 2 found ****" msgstr "" -#: emc/rs274ngc/interp_convert.cc:261 -msgid "Must specify both P and Q with G5" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:929 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1055 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1177 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1225 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1844 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2190 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2200 +msgid "**** GMOCCAPY ERROR ****" msgstr "" -#: emc/rs274ngc/interp_convert.cc:362 -msgid "" -"The move just after exiting cutter compensation mode must be straight, not " -"an arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:930 +msgid "**** screen 2 GLADE ERROR: ****" msgstr "" -#: emc/rs274ngc/interp_convert.cc:378 emc/rs274ngc/interp_convert.cc:3908 -msgid "Cannot feed with zero spindle speed in feed per rev mode" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:935 +msgid "**** No gmoccapy2.glade file present ****" msgstr "" -#: emc/rs274ngc/interp_convert.cc:389 emc/rs274ngc/interp_convert.cc:395 -#: emc/rs274ngc/interp_convert.cc:404 emc/rs274ngc/interp_convert.cc:410 -#: emc/rs274ngc/interp_convert.cc:419 emc/rs274ngc/interp_convert.cc:425 -#, c-format -msgid "%c word missing in absolute center arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:950 +msgid "**** Invalid embeded tab configuration ****" msgstr "" -#: emc/rs274ngc/interp_convert.cc:645 -msgid "" -"Radius of cutter compensation entry arc is not greater than the tool radius" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:951 +msgid "**** No tabs will be added! ****" msgstr "" -#: emc/rs274ngc/interp_convert.cc:864 emc/rs274ngc/interp_convert.cc:874 -#: emc/rs274ngc/interp_queue.cc:541 -msgid "" -"Arc move in concave corner cannot be reached by the tool without gouging" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:964 +msgid "ERROR, trying to initialize the user tabs or panaels, check for typos" msgstr "" -#: emc/rs274ngc/interp_convert.cc:900 -msgid "Arc to arc motion is invalid because the arcs have the same center" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1056 +msgid "**** Did not find a toolfile file in [EMCIO] TOOL_TABLE ****" msgstr "" -#: emc/rs274ngc/interp_convert.cc:903 -msgid "" -"Arc to arc motion makes a corner the compensated tool can't fit in without " -"gouging" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1100 +msgid "**** audio available! ****" msgstr "" -#: emc/rs274ngc/interp_convert.cc:1032 emc/rs274ngc/interp_convert.cc:1033 -#: emc/rs274ngc/interp_convert.cc:1034 emc/rs274ngc/interp_convert.cc:3375 -#: emc/rs274ngc/interp_convert.cc:3378 emc/rs274ngc/interp_convert.cc:3381 -#: emc/rs274ngc/interp_find.cc:97 -#, c-format -msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1103 +msgid "**** no audio available! ****" msgstr "" -#: emc/rs274ngc/interp_convert.cc:1462 -msgid "Cannot change control mode with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1104 +msgid "**** PYGST libray not installed? ****" msgstr "" -#: emc/rs274ngc/interp_convert.cc:1575 -msgid "Cannot change coordinate systems with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1157 +msgid "**** virtual keyboard program found : " msgstr "" -#: emc/rs274ngc/interp_convert.cc:1819 -#, c-format -msgid "G%d.1 with no D word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1164 +msgid "**** virtual keyboard program found : " msgstr "" -#: emc/rs274ngc/interp_convert.cc:1822 -#, c-format -msgid "G%d.1 with L word, but plane is not G18" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1167 +msgid "" +"**** No virtual keyboard installed, we checked for and ." msgstr "" -#: emc/rs274ngc/interp_convert.cc:1833 -#, c-format -msgid "G%d requires D word to be a whole number" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1178 +msgid "**** Error with launching virtual keyboard," msgstr "" -#: emc/rs274ngc/interp_convert.cc:1840 -#, c-format -msgid "G%d with lathe tool, but plane is not G18" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1179 +msgid "**** is onboard or matchbox-keyboard installed? ****" msgstr "" -#: emc/rs274ngc/interp_convert.cc:2224 -msgid "Cannot set reference point with cutter compensation in effect" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1193 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1875 +msgid "interrupt running macro" msgstr "" -#: emc/rs274ngc/interp_convert.cc:2627 -msgid "Cannot set motion output with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1226 +msgid "**** Did not find a parameter file in [RS274NGC] PARAMETER_FILE ****" msgstr "" -#: emc/rs274ngc/interp_convert.cc:2628 -msgid "No valid P word with M62" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1294 +msgid "Select the file you want to be loaded at program start" msgstr "" -#: emc/rs274ngc/interp_convert.cc:2632 -msgid "Cannot set motion digital output with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1329 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1353 +#, python-format +msgid "**** GMOCCAPY ERROR **** /n Message type %s not suported" msgstr "" -#: emc/rs274ngc/interp_convert.cc:2633 -msgid "No valid P word with M63" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1462 +msgid "Unknown error type and no error text given" msgstr "" -#: emc/rs274ngc/interp_convert.cc:2637 emc/rs274ngc/interp_convert.cc:2642 -msgid "Cannot set auxiliary digital output with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1478 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1840 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1847 +msgid "Important Warning" msgstr "" -#: emc/rs274ngc/interp_convert.cc:2638 -msgid "No valid P word with M64" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1498 +msgid "ERROR : External ESTOP is set, could not change state!" msgstr "" -#: emc/rs274ngc/interp_convert.cc:2643 -msgid "No valid P word with M65" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1511 +msgid "ERROR : Could not switch the machine on, is limit switch aktivated?" msgstr "" -#: emc/rs274ngc/interp_convert.cc:2672 -msgid "invalid P-word with M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1730 +msgid "It is not possible to change to MDI Mode at the moment" msgstr "" -#: emc/rs274ngc/interp_convert.cc:2687 -msgid "Cannot wait for digital input with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1754 +msgid "It is not possible to change to Auto Mode at the moment" msgstr "" -#: emc/rs274ngc/interp_convert.cc:2699 -msgid "Cannot wait for analog input with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1838 +msgid "" +"\n" +"**** No subroutine folder or program prefix is given in the ini file **** \n" msgstr "" -#: emc/rs274ngc/interp_convert.cc:2713 -msgid "Cannot set motion analog output with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1839 +msgid "**** so the corresponding file could not be found ****" msgstr "" -#: emc/rs274ngc/interp_convert.cc:2714 -msgid "Invalid analog index with M67" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1845 +#, python-format +msgid "" +"\n" +"**** File %s of the macro could not be found ****\n" msgstr "" -#: emc/rs274ngc/interp_convert.cc:2720 -msgid "Cannot set auxiliary analog output with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1846 +#, python-format +msgid "**** we searched in subdirectory %s ****" msgstr "" -#: emc/rs274ngc/interp_convert.cc:2721 -msgid "Invalid analog index with M68" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1851 +msgid "Enter value:" msgstr "" -#: emc/rs274ngc/interp_convert.cc:2732 -msgid "Need positive Q-word to specify tool number with M61" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1852 +#, python-format +msgid "Set parameter %s to:" msgstr "" -#: emc/rs274ngc/interp_convert.cc:2805 emc/rs274ngc/interp_convert.cc:2822 -#: emc/rs274ngc/interp_convert.cc:2836 emc/rs274ngc/interp_convert.cc:2850 -#: emc/rs274ngc/interp_convert.cc:2864 -msgid "Cannot enable overrides with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1854 +msgid "conversion error" msgstr "" -#: emc/rs274ngc/interp_convert.cc:2812 emc/rs274ngc/interp_convert.cc:2827 -#: emc/rs274ngc/interp_convert.cc:2841 emc/rs274ngc/interp_convert.cc:2855 -#: emc/rs274ngc/interp_convert.cc:2869 -msgid "Cannot disable overrides with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1855 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3610 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3634 +msgid "Conversion error !" msgstr "" -#: emc/rs274ngc/interp_convert.cc:2969 emc/rs274ngc/interp_convert.cc:2970 -#: emc/rs274ngc/interp_convert.cc:2971 -#, c-format -msgid "Indexing axis %c can only be moved with G0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1856 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3299 +msgid "" +"Please enter only numerical values\n" +"Values have not been applied" msgstr "" -#: emc/rs274ngc/interp_convert.cc:2978 emc/rs274ngc/interp_convert.cc:2980 -#: emc/rs274ngc/interp_convert.cc:2982 -#, c-format -msgid "Indexing axis %c can only be moved alone" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2149 +#, python-brace-format +msgid "**** replaced {0} to {1} ****" msgstr "" -#: emc/rs274ngc/interp_convert.cc:3075 -msgid "Cannot probe with feed per rev mode" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2158 +msgid "" +"\n" +"**** found more than 9 macros, only the first 9 will be used ****" msgstr "" -#: emc/rs274ngc/interp_convert.cc:3123 -msgid "Cannot change retract mode with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2191 +#, python-format +msgid "**** %s ****" msgstr "" -#: emc/rs274ngc/interp_convert.cc:3157 -msgid "G10 L1 without offsets has no effect" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2201 +#, python-format +msgid "**** No widget named: %s to sensitize ****" msgstr "" -#: emc/rs274ngc/interp_convert.cc:3263 -msgid "Q number in G10 is not an integer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2366 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1561 +msgid "No tool description available" msgstr "" -#: emc/rs274ngc/interp_convert.cc:3264 -msgid "Invalid tool orientation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2591 +#, python-format +msgid "Halo, welcome to the test message %d" msgstr "" -#: emc/rs274ngc/interp_convert.cc:3363 -msgid "I J words not allowed with G10 L2" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2732 +msgid "Hal Pin is low, Access denied" msgstr "" -#: emc/rs274ngc/interp_convert.cc:3384 -msgid "" -"Cannot change the active coordinate system with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2734 +msgid "wrong code entered, Access denied" msgstr "" -#: emc/rs274ngc/interp_convert.cc:3392 -msgid "R not allowed in G10 L20" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2735 +msgid "Just to warn you" msgstr "" -#: emc/rs274ngc/interp_convert.cc:3965 -msgid "Spindle not turning in G33" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2810 +msgid "ERROR : No limit switch is active, ignore limits will not be set." msgstr "" -#: emc/rs274ngc/interp_convert.cc:3975 -msgid "Spindle not turning in G33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2850 +msgid "Classicladder real-time component not detected" msgstr "" -#: emc/rs274ngc/interp_convert.cc:4018 -msgid "BUG: An axis incorrectly moved along with an indexer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2937 +msgid "Something went wrong, we have an unknown spindle widget" msgstr "" -#: emc/rs274ngc/interp_convert.cc:4031 -msgid "BUG: trying to index incorrect axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3046 +msgid "Do you really want to delete the MDI history?\n" msgstr "" -#: emc/rs274ngc/interp_convert.cc:4123 -msgid "Cannot use G76 threading cycle with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3047 +msgid "this will not delete the MDI History file, but will\n" msgstr "" -#: emc/rs274ngc/interp_convert.cc:4126 -msgid "In G76, I must not be 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3048 +msgid "delete the listbox entries for this session" msgstr "" -#: emc/rs274ngc/interp_convert.cc:4128 -msgid "In G76, J must be greater than 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3049 +msgid "Attention!!" msgstr "" -#: emc/rs274ngc/interp_convert.cc:4130 -msgid "In G76, K must be greater than J" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3076 +msgid "This button will show or hide the keyboard" msgstr "" -#: emc/rs274ngc/interp_convert.cc:4273 -msgid "" -"Length of cutter compensation entry move is not greater than the tool radius" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3196 +#, python-format +msgid "Offset %s could not be set, because off unknown axis" msgstr "" -#: emc/rs274ngc/interp_convert.cc:4492 -msgid "Zero degree inside corner is invalid for cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3197 +msgid "Wrong offset setting!" msgstr "" -#: emc/rs274ngc/interp_convert.cc:4530 emc/rs274ngc/interp_convert.cc:4538 -msgid "" -"Arc to straight motion makes a corner the compensated tool can't fit in " -"without gouging" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3202 +msgid "Enter value for diameter" msgstr "" -#: emc/rs274ngc/interp_convert.cc:4622 -msgid "Cannot change tools with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3203 +msgid "Set diameter to:" msgstr "" -#: emc/rs274ngc/interp_convert.cc:4742 -msgid "Cannot change tool offset with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3206 +msgid "Enter value for radius" msgstr "" -#: emc/rs274ngc/interp_queue.cc:539 -#, c-format -msgid "" -"BUG: cutter compensation has generated an invalid arc with mismatched radii " -"r1 %f r2 %f\n" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3207 +#, fuzzy +msgid "Set radius to:" +msgstr "0-säteinen kaari" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3210 +#, python-format +msgid "Enter value for axis %s" msgstr "" -#: emc/rs274ngc/interp_queue.cc:561 -msgid "BUG: Unsupported plane in cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3211 +#, python-format +msgid "Set axis %s to:" msgstr "" -#: emc/rs274ngc/interp_queue.cc:571 -msgid "" -"Straight traverse in concave corner cannot be reached by the tool without " -"gouging" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3215 +msgid "Conversion error in btn_set_value" msgstr "" -#: emc/rs274ngc/interp_queue.cc:599 -#, c-format -msgid "BUG: Unsupported plane [%d] in cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3216 +msgid "Conversion error in btn_set_value!" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3217 +msgid "Please enter only numerical values. Values have not been applied" msgstr "" -#: emc/rs274ngc/interp_queue.cc:610 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3232 msgid "" -"Straight feed in concave corner cannot be reached by the tool without gouging" +"you did not selected a system to be changed to, so nothing will be changed" msgstr "" -#: emc/rs274ngc/interp_cycles.cc:628 -msgid "Cannot feed with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3640 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3654 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3658 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3673 +msgid "Important Warning!" msgstr "" -#: emc/rs274ngc/interp_cycles.cc:629 -msgid "Cannot use inverse time feed with canned cycles" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3284 +msgid "Enter the block height" msgstr "" -#: emc/rs274ngc/interp_cycles.cc:630 -msgid "Cannot use canned cycles with cutter compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3285 +msgid "Block height measured from base table" msgstr "" -#: emc/rs274ngc/interp_cycles.cc:818 -msgid "G17 canned cycle is not possible on a machine without Z axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3297 +msgid "Conversion error in btn_block_height" msgstr "" -#: emc/rs274ngc/interp_cycles.cc:1001 -msgid "G17.1 canned cycle is not possible on a machine without W axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3298 +msgid "Conversion error in btn_block_height!" msgstr "" -#: emc/rs274ngc/interp_cycles.cc:1217 -msgid "G19 canned cycle is not possible on a machine without X axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3536 +msgid "Please remove the mounted tool and press OK when done" msgstr "" -#: emc/rs274ngc/interp_cycles.cc:1385 -msgid "G19.1 canned cycle is not possible on a machine without U axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3539 +#, python-brace-format +msgid "" +"Please change to tool\n" +"\n" +"# {0:d} {1}\n" +"\n" +" then click OK." msgstr "" -#: emc/rs274ngc/interp_cycles.cc:1610 -msgid "G18 canned cycle is not possible on a machine without Y axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3549 +msgid "Tool Change has been aborted!\n" msgstr "" -#: emc/rs274ngc/interp_cycles.cc:1777 -msgid "G18.1 canned cycle is not possible on a machine without V axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3550 +msgid "The old tool will remain set!" msgstr "" -#: emc/rs274ngc/interp_find.cc:170 -msgid "Cannot use polar coordinates with G53" -msgstr "G53:n kanssa ei voi käyttää polarikoordinaatteja" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3570 +msgid "No or more than one tool selected in tool table" +msgstr "" -#: emc/rs274ngc/interp_find.cc:266 emc/rs274ngc/interp_find.cc:271 -#: emc/rs274ngc/interp_find.cc:278 emc/rs274ngc/interp_find.cc:337 -#: emc/rs274ngc/interp_find.cc:347 -msgid "Cannot specify X or Y words with polar coordinate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3571 +msgid "Please select only one tool in the table" msgstr "" -#: emc/rs274ngc/interp_find.cc:272 -msgid "Must specify angle in polar coordinate if at the origin" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3573 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3580 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3589 +msgid "Warning Tool Touch off not possible!" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3577 +msgid "you can not touch of a tool, witch is not mounted in the spindle" msgstr "" -#: emc/rs274ngc/interp_find.cc:338 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3578 +msgid "your selection has been reseted to the tool in spindle" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3586 msgid "" -"Incremental motion with polar coordinates is indeterminate when at the origin" +"Tool touch off is not possible with cutter radius compensation switched on!\n" msgstr "" -#: emc/rs274ngc/interp_find.cc:348 -msgid "G91 motion with polar coordinates is indeterminate when at the origin" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3587 +msgid "Please emit an G40 before tool touch off" msgstr "" -#: emc/rs274ngc/interp_find.cc:720 -#, c-format -msgid "Requested tool %d not found in the tool table" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3597 +msgid "Real big error!" msgstr "" -#: emc/rs274ngc/interp_internal.cc:151 -msgid "Cannot use polar coordinate on a machine lacking X or Y axes" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3598 +msgid "" +"You managed to come to a place that is not possible in on_btn_tool_touchoff" msgstr "" -#: emc/rs274ngc/interp_internal.cc:152 -msgid "Cannot use polar coordinate except in G17 plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3602 +#, python-format +msgid "Enter value for axis %s to set:" msgstr "" -#: emc/rs274ngc/interp_internal.cc:153 -msgid "Cannot specify both polar coordinate and X word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3603 +#, python-brace-format +msgid "Set parameter of tool {0:d} and axis {1} to:" msgstr "" -#: emc/rs274ngc/interp_internal.cc:154 -msgid "Cannot specify both polar coordinate and Y word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3608 +#, python-format +msgid "Conversion error because of wrong entry for touch off axis %s" msgstr "" -#: emc/rs274ngc/interp_internal.cc:175 emc/rs274ngc/interp_internal.cc:187 -#: emc/rs274ngc/interp_internal.cc:200 -msgid "Polar coordinates can only be used for motion" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3628 +msgid "Enter the tool number as integer " msgstr "" -#: emc/rs274ngc/interp_read.cc:1098 emc/rs274ngc/interp_read.cc:1102 -#, c-format -msgid "Bad character '\\%03o' used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3629 +msgid "Select the tool to change" msgstr "" -#: emc/rs274ngc/interp_read.cc:1102 -#, c-format -msgid "Bad character '%c' used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3631 +msgid "Conversion error because of wrong entry for tool number\n" msgstr "" -#: emc/rs274ngc/interp_read.cc:1611 -msgid "Left bracket missing after 'while'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3632 +msgid "enter only integer nummbers" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3657 +msgid "Selected tool is already in spindle, no change needed." +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3653 +msgid "" +"you selected no or more than one tool, the tool selection must be unique" msgstr "" -#: emc/rs274ngc/interp_read.cc:1627 -msgid "Left bracket missing after 'repeat'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3672 +msgid "Could not understand the entered tool number. Will not change anything" msgstr "" -#: emc/rs274ngc/interp_read.cc:1643 -msgid "Left bracket missing after 'if'" +#: src/emc/usr_intf/gmoccapy/dialogs.py:33 +#: src/emc/usr_intf/gmoccapy/dialogs.py:38 +msgid "Enter System Unlock Code" msgstr "" -#: emc/rs274ngc/interp_read.cc:1659 -msgid "Left bracket missing after 'elseif'" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter value" msgstr "" -#: emc/rs274ngc/interp_read.cc:1849 -#, c-format -msgid "Cannot change #<%s>" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter the value to set" msgstr "" -#: emc/rs274ngc/interp_read.cc:1880 emc/rs274ngc/interp_read.cc:1923 -#, c-format -msgid "Internal error: Could not assign #<%s>" +#: src/emc/usr_intf/gmoccapy/notification.py:205 +#, python-format +msgid "Error trying to delet the message with number %s" msgstr "" -#: emc/rs274ngc/interp_read.cc:1897 -#, c-format -msgid "init_named_parameter must be global #<%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:409 +msgid "left rotate, middle move, right zoom" msgstr "" -#: emc/rs274ngc/interp_read.cc:2084 -#, c-format -msgid "Named parameter #<%s> not defined" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:413 +msgid "left zoom, middle move, right rotate" msgstr "" -#: emc/rs274ngc/interp_read.cc:2165 -msgid "Cannot read current position with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:417 +msgid "left move, middle rotate, right zoom" msgstr "" -#: emc/rs274ngc/interp_read.cc:2180 -msgid "Expected # reading parameter" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:421 +msgid "left zoom, middle rotate, right move" msgstr "" -#: emc/rs274ngc/interp_read.cc:2182 -msgid "Expected ] reading bracketed parameter" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:425 +msgid "left move, middle zoom, right rotate" msgstr "" -#: emc/rs274ngc/interp_read.cc:2872 -#, c-format -msgid "bad number format (conversion failed) parsing '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:429 +msgid "left rotate, middle zoom, right move" msgstr "" -#: emc/rs274ngc/interp_read.cc:2873 -#, c-format -msgid "bad number format (trailing characters) parsing '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:526 +msgid "clear plot" msgstr "" -#: emc/rs274ngc/interp_read.cc:2963 -msgid "Calculation resulted in 'not a number'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:585 +msgid "view perspective" msgstr "" -#: emc/rs274ngc/interp_read.cc:2965 -msgid "Calculation resulted in 'infinity'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:608 +msgid "view along the X axis from positive to negative" msgstr "" -#: emc/rs274ngc/interp_read.cc:3259 -#, c-format -msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:633 +msgid "view along the Y axis from positive to negative" msgstr "" -#: emc/rs274ngc/interp_read.cc:3384 -msgid "Multiple U words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:658 +msgid "view along the Z axis from positive to negative" msgstr "" -#: emc/rs274ngc/interp_read.cc:3400 -msgid "Multiple V words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:685 +msgid "Show or hide tool path" msgstr "" -#: emc/rs274ngc/interp_read.cc:3416 -msgid "Multiple W words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:708 +msgid "Show or hide dimensions" msgstr "" -#: emc/rs274ngc/interp_o_word.cc:104 -#, c-format -msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:731 +msgid "" +"view along the Y axis from positive to negative as viewn for a back tool " +"lathe" msgstr "" -#: emc/rs274ngc/rs274ngc_pre.cc:895 -msgid "Queue is not empty after tool change" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:791 +msgid "Offset Page" msgstr "" -#: emc/rs274ngc/rs274ngc_pre.cc:1143 -#, c-format -msgid "Unable to open parameter file: '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:809 +msgid "Tooledit" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:4 -msgid "A file is already open" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:831 +msgid "File Selection" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:5 -msgid "All axes missing with g92" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:869 +msgid "Toggle between metric and imperial units" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:6 -msgid "All axes missing with motion code" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:887 +msgid "Switch DRO to DTG mode" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:7 -msgid "Arc radius too small to reach end point" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:905 +msgid "Toggle between machine and relative coordinates" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:8 -msgid "Argument to acos out of range" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:928 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:946 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:963 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:980 +msgid "Klick to toggle through the DRO modes" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:9 -msgid "Argument to asin out of range" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1253 +msgid "Ignore limits" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:10 -msgid "Attempt to divide by zero" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1321 +msgid "Jogging" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:11 -msgid "Attempt to raise negative to non integer power" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1430 +msgid "Information over the tool in spindle" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:12 -msgid "Bad format unsigned integer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1448 +msgid "Tool no." msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:13 -msgid "Bad number format" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1474 +msgid "Diameter" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:14 -msgid "Bug bad g code modal group 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1503 +msgid "offset z" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:15 -msgid "Bug code not g0 or g1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1532 +msgid "offset x" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:16 -msgid "Bug code not g17 g18 or g19" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1580 +msgid "Tool information" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:17 -msgid "Bug code not g20 or g21" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1592 +msgid "G and M code information as well as speed and feed" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:18 -msgid "Bug code not g28 or g30" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1611 +msgid "active_mcodes_label" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:19 -msgid "Bug code not g2 or g3" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1663 +msgid "active_gcodes_label" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:20 -msgid "Bug code not g4 g10 g28 g30 g53 or g92 series" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1717 +msgid "G-Code" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:21 -msgid "Bug code not g61 g61.1 or g64" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1730 +msgid "The name and location of the loaded program" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:22 -msgid "Bug code not g90 or g91" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1742 +msgid "No Program loaded" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:23 -msgid "Bug code not g98 or g99" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1750 +msgid "Program" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:24 -msgid "Bug code not in g92 series" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1800 +msgid "Vel." msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:25 -msgid "Bug code not in range g54 to g593" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1814 +msgid "Displays the current velocity" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:26 -msgid "Bug code not m0 m1 m2 m30 m60" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1838 +msgid "adjust max vel of machine" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:27 -msgid "Bug distance mode not g90 or g91" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1854 +msgid "Max. Velocity" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:28 -msgid "Bug function should not have been called" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1885 +msgid "Displayes the programmed feed rate" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:29 -msgid "Bug in tool radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1904 +msgid "reset feed override to 100 %" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:30 -msgid "Bug plane not xy yz or xz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1922 +msgid "adjust feed override" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:31 -msgid "Bug side not right or left" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1941 +msgid "Feed Override [%]" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:32 -msgid "Bug unknown motion code" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2034 +msgid "Cooling" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:33 -msgid "Bug unknown operation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2285 +msgid "Spindle [rpm]" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:34 -msgid "Cannot change axis offsets with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2377 +msgid "" +"Search\n" +" back" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:35 -msgid "Cannot create backup file" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2394 +msgid "" +"Search\n" +" fwd" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:36 -msgid "Cannot do g1 with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2446 +msgid "" +"Replace\n" +" Text:" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:37 -msgid "Cannot do zero repeats of cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2456 +msgid "" +"Replace\n" +" All" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:38 -msgid "Cannot make arc with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2470 +msgid "" +"Ignore\n" +" Case" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:39 -msgid "Cannot open backup file" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2616 +msgid "Start as fullscreen" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:40 -msgid "Cannot open variable file" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2631 +msgid "Start maximized" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:41 -msgid "Cannot probe with cutter radius comp on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2646 +msgid "Start as window" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:42 -msgid "Cannot probe with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2670 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4426 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4943 +msgid "X Pos." msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:43 -msgid "Cannot put a b in canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2683 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4437 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4928 +msgid "Y Pos." msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:44 -msgid "Cannot put a c in canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2698 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4855 +msgid "Width" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:45 -msgid "Cannot put an a in canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2713 +msgid "Height" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:46 -msgid "Cannot turn cutter radius comp on when on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2811 +msgid "hide cursor" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:47 -msgid "Cannot use axis values with g80" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2830 +msgid "Main Window" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:48 -msgid "Cannot use axis values without a g code that uses them" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2857 +msgid "Show keyboard on offset" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:49 -msgid "Cannot use g28 or g30 with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2871 +msgid "Show keyboard on tooledit" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:50 -msgid "Cannot use g53 incremental" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2885 +msgid "Show keyboard on MDI" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:51 -msgid "Cannot use g53 with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2899 +msgid "Show keyboard on EDIT" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:52 -msgid "Cannot use two g codes that both use axis values" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2913 +msgid "Show keyboard on load file" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:53 -msgid "Command too long" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2931 +msgid "Keyboard" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:54 -msgid "Current point same as end point of arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2959 +msgid "show preview" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:55 -msgid "Dwell time missing with g4" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2973 +msgid "show offsets" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:56 -msgid "Dwell time p word missing with g82" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2991 +msgid "On Touch off" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:57 -msgid "Dwell time p word missing with g86" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3005 +msgid "" +" Display \n" +"Aux Screen" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:58 -msgid "Dwell time p word missing with g88" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3052 +msgid "Relative Color" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:59 -msgid "Dwell time p word missing with g89" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3079 +msgid "Absolute Color" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:60 -msgid "Equal sign missing in parameter setting" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3110 +msgid "DTG Color" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:61 -msgid "F word missing with inverse time arc move" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3139 +msgid "Use Auto Units" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:62 -msgid "F word missing with inverse time g1 move" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3159 +msgid "Show the DRO Button" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:63 -msgid "File ended with no percent sign" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3190 +msgid "Homed color" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:64 -msgid "File ended with no percent sign or program end" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3204 +msgid "Unhomed color" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:65 -msgid "File name too long" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3299 +msgid "Digits" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:66 -msgid "G code out of range" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3344 +msgid "" +"toggle DRO mode \n" +"clicking on the DRO" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:67 -msgid "I word given for arc in yz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3369 +msgid "DRO" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:68 -msgid "I word missing with g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3401 +msgid "Grid size" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:69 -msgid "J word given for arc in xz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3430 +msgid "Show DRO" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:70 -msgid "J word missing with g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3444 +msgid "Show offsets" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:71 -msgid "K word given for arc in xy plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3458 +msgid "Show DTG" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:72 -msgid "K word missing with g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3483 +msgid "Mouse Button mode" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:73 -msgid "Left bracket missing after slash with atan" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3512 +msgid "Preview" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:74 -msgid "Left bracket missing after unary operation name" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3565 +msgid "" +"current\n" +" file" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:75 -msgid "M code greater than 199" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3611 +msgid "File to load on start" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:76 -msgid "Mixed radius ijk format for arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3638 +msgid "Select user dir" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:77 -msgid "Multiple a words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3647 +msgid "Select jump to dir" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:78 -msgid "Multiple b words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3767 +msgid "Themes and sound" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:79 -msgid "Multiple c words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3799 +msgid "Appearance" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:80 -msgid "Multiple d words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3833 +msgid "Scale max velocity" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:81 -msgid "Multiple f words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3846 +msgid "Scale jog velocity" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:82 -msgid "Multiple h words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3861 +msgid "Scale feed override" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:83 -msgid "Multiple i words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3876 +msgid "Scale spindle override" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:84 -msgid "Multiple j words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3970 +msgid "Hardware MPG Scale" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:85 -msgid "Multiple k words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3994 +msgid "Use keyboard shortcuts" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:86 -msgid "Multiple l words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4007 +msgid "Keyboard shortcuts" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:87 -msgid "Multiple p words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4034 +msgid "Use unlock code" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:88 -msgid "Multiple q words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4050 +msgid "Do not use unlock code" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:89 -msgid "Multiple r words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4066 +msgid "Use hal pin to unlock" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:90 -msgid "Multiple s words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4087 +msgid "Unlock settings" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:91 -msgid "Multiple t words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4197 +msgid "Spindle bar min" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:92 -msgid "Multiple x words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4210 +msgid "Spindle bar max" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:93 -msgid "Multiple y words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4252 +msgid "Hide turtle Jog Button" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:94 -msgid "Multiple z words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4282 +msgid "Turtle jog Factor" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:95 -msgid "Must use g0 or g1 with g53" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4318 +msgid "Turtle Jog" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:96 -msgid "Negative argument to sqrt" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4360 +msgid "Hardware" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:97 -msgid "Negative d word tool radius index used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4392 +msgid "Use auto tool measurement" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:98 -msgid "Negative f word used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4450 +msgid "Probe Height" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:99 -msgid "Negative g code used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4485 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4498 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4527 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4556 +msgid "0.000" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:100 -msgid "Negative h word used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4514 +msgid "Z Pos." msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:101 -msgid "Negative l word used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4543 +msgid "Max. Probe" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:102 -msgid "Negative m code used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4575 +msgid "Probe Informations" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:103 -msgid "Negative or zero q value used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4607 +msgid "Search Vel." msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:104 -msgid "Negative p word used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4618 +msgid "Probe Vel." msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:105 -msgid "Negative spindle speed used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4674 +msgid "Probe velocitys" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:106 -msgid "Negative tool id used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4688 +msgid "" +"No valid configuration\n" +"found in your INI file,\n" +"please take a look at \n" +"the WIKI to check how\n" +"to configure the settings." msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:107 -msgid "Nested comment found" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4708 +msgid "Tool Measurement" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:108 -msgid "No characters found in reading real value" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4737 +msgid "" +"If the 4'th axis is used\n" +"for a tool changer, you\n" +"hide the DRO and\n" +"jog buttons." msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:109 -msgid "Non integer value for integer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4749 +msgid "Hide 4'th axis" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:110 -msgid "Null missing after newline" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4769 +msgid "Tool Changer" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:111 -msgid "Parameter file out of order" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4808 +msgid "Use frames" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:112 -msgid "Parameter number out of range" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4840 +msgid "max." msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:113 -msgid "Parameter is readonly" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4992 +msgid "Launch test message" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:114 -msgid "Q word missing with g83" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5011 +msgid "" +" gmoccapy message\n" +" behavior and appearance " msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:115 -msgid "Queue is not empty after probing" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5049 +msgid "Do not use run from line" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:116 -msgid "R clearance plane unspecified in cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5065 +msgid "Use run from line" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:117 -msgid "R i j k words all missing for arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5086 +msgid "Run from line" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:118 -msgid "R less than x in cycle in yz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5119 +msgid "" +"Advanced\n" +" Settings" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:119 -msgid "R less than y in cycle in xz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5157 +msgid "User tab 1" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:120 -msgid "R less than z in cycle in xy plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5171 +msgid "User tabs" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:121 -msgid "R word with no g code that uses it" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5207 +msgid "Estop the machine" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:122 -msgid "Slash missing after first atan argument" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5229 +msgid "Turn the machine on/off" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:123 -msgid "Spindle not turning clockwise in g84" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5251 +msgid "enter manual mode to jog axis by hand or touch off" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:124 -msgid "Spindle not turning in g86" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5271 +msgid "enter MDI mode to launch g-code commands" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:125 -msgid "Spindle not turning in g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5290 +msgid "enter auto mode to run programs" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:126 -msgid "Spindle not turning in g88" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5308 +msgid "Enter the settings page, the default code is \"123\"" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:127 -msgid "Sscanf failed" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5330 +msgid "show user tabs" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:128 -msgid "Start point too close to probe point" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5381 +msgid "open homing button list" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:129 -msgid "Too many m codes on line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5398 +msgid "open touch off button list" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:130 -msgid "Pocket max too large" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5427 +msgid "Open the tooleditor page" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:131 -msgid "Tool radius not less than arc radius with comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5498 +msgid "make the preview as large as possible" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:132 -msgid "Two g codes used from same modal group" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5515 +msgid "Close moccapy / leave the program" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:133 -msgid "Two m codes used from same modal group" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5577 +msgid "This button will show or hide the Keyboard" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:134 -#, c-format -msgid "Unable to open file <%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5620 +msgid "Load a new program" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:135 -msgid "Unclosed comment found" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5637 +msgid "Run the loaded program" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:136 -msgid "Unclosed expression" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5654 +msgid "Stop the running program" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:137 -msgid "Unknown g code used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5672 +msgid "Pause the running program" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:138 -msgid "Unknown m code used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5680 +msgid "pause the running program" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:139 -msgid "Unknown operation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5698 +msgid "Run the loaded program step by step" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:140 -msgid "Unknown operation name starting with a" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5715 +msgid "" +"run the program from a certain line, attention, that is dangerous, because " +"the previous lines will not checed!" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:141 -msgid "Unknown operation name starting with m" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5732 +msgid "" +"Machine or not the optional blocks of the program. If the button is pressed, " +"the optional blocks will not be machined. The button will indicate this by a " +"yellow background." msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:142 -msgid "Unknown operation name starting with o" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5757 +msgid "" +"Make optional stops or not. if an M1 is programed and the button is pressed " +"(is active) the programm will pause if it found a M1" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:143 -msgid "Unknown operation name starting with x" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5789 +msgid "Edit the loaded program" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:144 -msgid "Unknown word starting with a" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5837 +msgid "home all axis" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:145 -msgid "Unknown word starting with c" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5873 +msgid "home x axis" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:146 -msgid "Unknown word starting with e" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5897 +msgid "home y axis" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:147 -msgid "Unknown word starting with f" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5929 +msgid "home z axis" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:148 -msgid "Unknown word starting with l" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5987 +msgid "Unhome all axis" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:149 -msgid "Unknown word starting with r" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6023 +msgid "go back to main button list" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:150 -msgid "Unknown word starting with s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6053 +msgid "" +" edit\n" +"offsets" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:151 -msgid "Unknown word starting with t" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6060 +msgid "Edit offsets" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:152 -msgid "Unknown word where unary operation could be" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6076 +msgid "touch off X / set X to 0" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:153 -msgid "X and y words missing for arc in xy plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6100 +msgid "touch off Y / set Y to 0" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:154 -msgid "X and z words missing for arc in xz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6135 +msgid "touch off Z / set Z to 0" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:155 -msgid "X value unspecified in yz plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6155 +msgid "" +"zero\n" +"G92" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:156 -msgid "Y and z words missing for arc in yz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6161 +msgid "Zero all G92 offsets" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:157 -msgid "Y value unspecified in xz plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6172 +msgid "" +" Block\n" +"Height" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:158 -msgid "Z value unspecified in xy plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6192 +msgid "touch off X / set X to an desired value" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:159 -msgid "Zero or negative argument to ln" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6216 +msgid "touch off Y / set Y to an desired value" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:161 -msgid "K word missing with g33/g33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6251 +msgid "touch off Z / set Z to an desired value" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:162 -msgid "F word used with a g33/g33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6270 +msgid "" +" set\n" +"selected" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:163 -msgid "Unknown operation name starting with e" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6277 +msgid "set the selected coordinate system to be the active one" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:164 -msgid "Unknown operation name starting with n" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6293 +msgid "Go back to main view" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:165 -msgid "Unknown operation name starting with g" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6324 +msgid "delete MDI" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:166 -msgid "Unknown operation name starting with l" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6330 +msgid "delete MDI history" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:167 -msgid "Too many subroutine parameters" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6380 +msgid "Cl.-ladder" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:168 -msgid "Too many subroutine levels" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6386 +msgid "Open classicladder" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:169 -msgid "Unknown control command in o word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6397 +msgid "Hal-Scope" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:170 -msgid "Too many oword labels" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6403 +msgid "launch hal scope" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:171 -msgid "Unknown oword number" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6420 +msgid "launch linuxcnc status" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:172 -msgid "Nested subroutine definition" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6437 +msgid "launch hal meter" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:173 -msgid "Not in subroutine definition" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6455 +msgid "launch calibration" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:174 -msgid "File not open" -msgstr "Tiedosto ei ole avoinna" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6466 +msgid "Halshow" +msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:175 -msgid "Need tool prepared -Txx- for toolchange" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6472 +msgid "opens the show hal tool" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:176 -msgid "Cannot change planes with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6537 +msgid "save the file using the original name" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:177 -msgid "Cutter radius compensation allowed only in XY, XZ planes" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6559 +msgid "save the file with a new name" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:178 -msgid "P word missing with G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6605 +msgid "clear the edit field and make a new file" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:179 -msgid "I J or K words missing with G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6641 +msgid "Show or hide the virtual keyboard" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:180 -msgid "Cannot move rotary axes with G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6665 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6879 +msgid "Go back to main button list" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:181 -msgid "Multiple e words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6701 +msgid "delete selected tool or tools" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:182 -msgid "Named parameter not terminated" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6718 +msgid "add a new tool to tool table" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:183 -msgid "Out of memory" -msgstr "Muisti loppu" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6729 +msgid "Reload" +msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:184 -msgid "S word missing with G96" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6735 +msgid "reload tool table from file" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:185 -msgid "Queue is not empty after external input" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6746 +msgid "Apply" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:186 -msgid "Can't select analog input with wait type != immediate return" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6752 +msgid "" +"apply the changes you made, G43 will be excecuted only if it is active g-code" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:187 -msgid "Zero timeout with wait type != immediate return" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6768 +msgid "Select a tool by number" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:188 -msgid "Invalid to select both a digital and an analog input with M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6790 +msgid "change tool with the command M61 Q?, no machine move will be done" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:189 -msgid "Need to have either a valid P or a valid E word with M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6812 +msgid "change tool to the selected one" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:190 -msgid "Q word missing with g73" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6824 +msgid "" +"touchoff\n" +" tool x" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:191 -msgid "Digital input selected out of bounds" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6832 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6863 +msgid "touch off the tool and set the value to the tool table" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:192 -msgid "Analog input selected out of bounds" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6855 +msgid "" +"touchoff\n" +" tool z" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:193 -msgid "W value unspecified in UV plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6915 +msgid "Move to your home directory" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:194 -msgid "U value unspecified in VW plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6932 +msgid "Move to parrent directory" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:195 -msgid "V value unspecified in UW plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6961 +msgid "Select the previos file" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:196 -msgid "R less than W in cycle in UV plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6979 +#, fuzzy +msgid "Select the next file" +msgstr "Valittu kanava" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6997 +msgid "Jump to user defined directory" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:197 -msgid "R less than U in cycle in VW plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7027 +msgid "select the highlighted file and return the path" msgstr "" -#: emc/rs274ngc/rs274ngc_return.hh:198 -msgid "R less than V in cycle in UW plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7057 +msgid "Close without returning a file path" msgstr "" -#: ../share/axis/tcl/axis.tcl:1711 -msgid "" -"EMC2/AXIS version $version\n" -"\n" -"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Jeff Epler and Chris " -"Radek.\n" -"\n" -"This is free software, and you are welcome to redistribute it under certain " -"conditions. See the file COPYING, included with EMC2.\n" -"\n" -"Visit the EMC web site: " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7075 +msgid "Load File" msgstr "" + +#~ msgid "%s move in MDI would exceed joint %d's positive limit" +#~ msgstr "%s liike MDI-käskyssä ylittää nivelen %d positiivisen rajan" + +#~ msgid "%s move in MDI would exceed joint %d's negative limit" +#~ msgstr "%s liike MDI-käskyssä ylittää nivelen %d negatiivisen rajan" + +#~ msgid "File Not Found" +#~ msgstr "Tiedostoa ei löydy" diff --git a/src/po/fr.po b/src/po/fr.po index dc4a9f8302..908c091709 100644 --- a/src/po/fr.po +++ b/src/po/fr.po @@ -13,26 +13,1723 @@ msgid "" msgstr "" "Project-Id-Version: fr\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-01-27 14:26+0100\n" +"POT-Creation-Date: 2019-02-20 07:49+0000\n" "PO-Revision-Date: 2013-02-14 12:43+0100\n" "Last-Translator: Francis Tisserant \n" "Language-Team: French \n" +"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: fr\n" -#: src/hal/utils/meter.c:198 hal/utils/meter.c:198 +#: src/emc/task/emctaskmain.cc:479 src/emc/task/emctaskmain.cc:512 +#, c-format +msgid "%s exceeds +X limit" +msgstr "%s limite +X dépassée" + +#: src/emc/task/emctaskmain.cc:484 src/emc/task/emctaskmain.cc:517 +#, c-format +msgid "%s exceeds +Y limit" +msgstr "%s limite +Y dépassée" + +#: src/emc/task/emctaskmain.cc:489 src/emc/task/emctaskmain.cc:522 +#, c-format +msgid "%s exceeds +Z limit" +msgstr "%s limite +Z dépassée" + +#: src/emc/task/emctaskmain.cc:494 src/emc/task/emctaskmain.cc:527 +#, c-format +msgid "%s exceeds -X limit" +msgstr "%s limite -X dépassée" + +#: src/emc/task/emctaskmain.cc:499 src/emc/task/emctaskmain.cc:532 +#, c-format +msgid "%s exceeds -Y limit" +msgstr "%s limite -Y dépassée" + +#: src/emc/task/emctaskmain.cc:504 src/emc/task/emctaskmain.cc:537 +#, c-format +msgid "%s exceeds -Z limit" +msgstr "%s limite -Z dépassée" + +#: src/emc/task/emctaskmain.cc:892 +#, c-format +msgid "" +"command (%s) cannot be executed until the machine is out of E-stop and " +"turned on" +msgstr "" +"La commande (%s) ne peut être exécutée tant que la machine n'est pas sortie " +"de l'arrêt d'urgence et mise en marche" + +#: src/emc/task/emctaskmain.cc:1013 +#, fuzzy, c-format +msgid "can't do that (%s:%d) in manual mode" +msgstr "Commande (%s) impossible en mode manuel" + +#: src/emc/task/emctaskmain.cc:1113 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter idle" +msgstr "(%s) impossible en mode auto avec l'interpréteur en charge" + +#: src/emc/task/emctaskmain.cc:1180 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter reading" +msgstr "(%s) impossible en mode auto avec l'interpréteur en lecture" + +#: src/emc/task/emctaskmain.cc:1265 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter paused" +msgstr "(%s) impossible en mode auto avec l'interpréteur en pause" + +#: src/emc/task/emctaskmain.cc:1334 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter waiting" +msgstr "(%s) impossible en mode auto avec l'interpréteur en attente" + +#: src/emc/task/emctaskmain.cc:1442 +#, fuzzy, c-format +msgid "can't do that (%s:%d) in MDI mode" +msgstr "Commande (%s) impossible en mode MDI" + +#: src/emc/task/emctaskmain.cc:2100 +msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" +msgstr "Impossible de quitter le mode AUTO si l'interpréteur est en charge" + +#: src/emc/task/emctaskmain.cc:2157 tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 +#: tcl/mini.tcl:1775 tcl/tklinuxcnc.tcl:451 +#, fuzzy, c-format, tcl-format +msgid "can't open %s" +msgstr "Impossible d'ouvrir %s " + +#: src/emc/task/emctaskmain.cc:2169 +msgid "Can't issue MDI command when not homed" +msgstr "Pas de commande MDI avant la prise d'origine machine" + +#: src/emc/task/emctaskmain.cc:2174 +msgid "Must be in MDI mode to issue MDI command" +msgstr "Pas de commande MDI hors du mode MDI" + +#: src/emc/task/emctaskmain.cc:2256 +msgid "Can't run a program when not homed" +msgstr "Pas de départ cycle avant la prise d'origine machine" + +#: src/emc/rs274ngc/interp_arc.cc:110 src/emc/rs274ngc/interp_arc.cc:284 +#, fuzzy, c-format +msgid "" +"Zero-radius arc: start=(%c%.4f,%c%.4f) center=(%c%.4f,%c%.4f) end=(%c%.4f,%c" +"%.4f) r1=%.4f r2=%.4f" +msgstr "" +"Le rayon à la fin de l'arc diffère de celui du début: début=(%c%.4f,%c%.4f) " +"centre=(%c%.4f,%c%.4f) fin=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " +"rel_err=%.4f%%" + +#: src/emc/rs274ngc/interp_arc.cc:120 src/emc/rs274ngc/interp_arc.cc:292 +#, c-format +msgid "" +"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " +"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " +"rel_err=%.4f%%" +msgstr "" +"Le rayon à la fin de l'arc diffère de celui du début: début=(%c%.4f,%c%.4f) " +"centre=(%c%.4f,%c%.4f) fin=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " +"rel_err=%.4f%%" + +#: src/emc/rs274ngc/interp_check.cc:90 +msgid "G4 not allowed with G2 or G3 because they both use P" +msgstr "G4 non autorisé avec G2 ou G3 qui utilisent tous les deux P" + +#: src/emc/rs274ngc/interp_check.cc:93 +msgid "Line with G10 does not have L1, L10, L11, L2, or L20" +msgstr "Ligne avec G10 qui n'a pas de L1, L10, L11, L2 ou L20" + +#: src/emc/rs274ngc/interp_check.cc:94 +msgid "P value not an integer with G10" +msgstr "La valeur de P n'est pas un entier avec G10" + +#: src/emc/rs274ngc/interp_check.cc:95 +#, c-format +msgid "P value out of range (0-9) with G10 L%d" +msgstr "Valeur de P hors d'échelle (0-9) avec G10 L%d" + +#: src/emc/rs274ngc/interp_check.cc:96 +#, c-format +msgid "P value out of range with G10 L%d" +msgstr "Valeur de P hors d'échelle avec G10 L%d" + +#: src/emc/rs274ngc/interp_check.cc:100 +msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." +msgstr "" +"Entre les codes G5.2 et G5.3, seul le code additionnel G5.2 est autorisé." + +#: src/emc/rs274ngc/interp_check.cc:259 +msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" +msgstr "Mot D sans G41, G41.1, G42, G42.1 ou G96 l'utilisant" + +#: src/emc/rs274ngc/interp_check.cc:265 +msgid "E word with no G76, M66, M67 or M68 to use it" +msgstr "Mot E sans G76, M66, M67 ou M68 l'utilisant" + +#: src/emc/rs274ngc/interp_check.cc:270 +msgid "H word with no G43 or G76 to use it" +msgstr "Mot H sans G43 ou G76 l'utilisant" + +#: src/emc/rs274ngc/interp_check.cc:276 +msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" +msgstr "Mot I sans G2, G3, G5, G5.1, G10, G76 ou G87 l'utilisant" + +#: src/emc/rs274ngc/interp_check.cc:282 +msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" +msgstr "Mot J sans G2, G3, G5, G5.1, G10, G76 ou G87 l'utilisant" + +#: src/emc/rs274ngc/interp_check.cc:288 +msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" +msgstr "Mot K sans G2, G3, G33, G33.1, G76 ou G87 l'utilisant" + +#: src/emc/rs274ngc/interp_check.cc:298 +msgid "" +"L word with no G10, cutter compensation, canned cycle, digital/analog input, " +"or NURBS code" +msgstr "" +"Mot L sans G10, ni code de compensation d'outil, cycle préprogrammé, entrée " +"digitale/analogique ou NURBS" + +#: src/emc/rs274ngc/interp_check.cc:310 +msgid "" +"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " +"M53 M62 M63 M64 M65 M66 or user M code to use it" +msgstr "" +"Mot P sans G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 ou M50 M51 M52 M53 " +"M62 M63 M64 M65 M66 ni code M utilisateur l'utilisant" + +#: src/emc/rs274ngc/interp_check.cc:315 +#, fuzzy +msgid "P value not an integer with M19 G2 or G3" +msgstr "La valeur de P avec M19 G2 ou G3 n'est pas un entier" + +#: src/emc/rs274ngc/interp_check.cc:317 +msgid "P value must be 0,1,or 2 with M19" +msgstr "Valeur de P doit être 0, 1 ou 2 avec M19 " + +#: src/emc/rs274ngc/interp_check.cc:319 +msgid "P value should be 1 or greater with G2 or G3" +msgstr "Valeur de P doit être 1 ou plus avec G2 ou G3" + +#: src/emc/rs274ngc/interp_check.cc:327 +#, fuzzy +msgid "" +"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " +"code that uses it" +msgstr "" +"Mot Q sans G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 ou code M " +"utilisateur l'utilisant" + +#: src/emc/rs274ngc/interp_check.cc:337 +msgid "R value must be within 0..360 with M19" +msgstr "La valeur de R doit être comprise entre 0 et 360 avec M19" + +#: src/emc/rs274ngc/interp_convert.cc:139 +msgid "You must specify both X and Y coordinates for Control Points" +msgstr "" +"Vous devez spécifier les coordonnées X et Y pour les points de contrôle" + +#: src/emc/rs274ngc/interp_convert.cc:142 +msgid "Can specify P without X and Y only for the first control point" +msgstr "" +"Possibilité de spécifier P sans X et Y, seulement pour le premier point de " +"contrôle" + +#: src/emc/rs274ngc/interp_convert.cc:145 +msgid "Must specify positive weight P for every Control Point" +msgstr "Un poids P positif doit être spécifié pour chaque point de contrôle" + +#: src/emc/rs274ngc/interp_convert.cc:148 +msgid "Cannot make a NURBS with 0 feedrate" +msgstr "Impossible de faire un NURBS avec une vitesse nulle" + +#: src/emc/rs274ngc/interp_convert.cc:183 +msgid "Cannot use G5.3 without G5.2 first" +msgstr "Impossible d'utiliser G5.3 sans G5.2 en premier" + +#: src/emc/rs274ngc/interp_convert.cc:184 +#, c-format +msgid "" +"You must specify a number of control points at least equal to the order L = " +"%d" +msgstr "" +"Vous devez spécifier un nombre de points de contrôle au moins égal à l'ordre " +"L = %d" + +#: src/emc/rs274ngc/interp_convert.cc:213 +msgid "Cannot convert spline with cutter radius compensation" +msgstr "" +"Impossible de convertir une spline avec la compensation de rayon d'outil" + +#: src/emc/rs274ngc/interp_convert.cc:223 +msgid "Splines must be in the XY plane" +msgstr "Les splines doivent être dans le plan XY" + +#: src/emc/rs274ngc/interp_convert.cc:228 +msgid "Splines may not have motion in Z, A, B, or C" +msgstr "Splines may not have motion in Z, A, B, or C" + +#: src/emc/rs274ngc/interp_convert.cc:232 +msgid "Must specify both I and J with G5.1" +msgstr "I et J doivent être spécifiés tous les deux avec G5.1" + +#: src/emc/rs274ngc/interp_convert.cc:251 +msgid "Must specify both I and J, or neither" +msgstr "I et J doivent être spécifiés tous les deux, ou aucun" + +#: src/emc/rs274ngc/interp_convert.cc:262 +msgid "Must specify both P and Q with G5" +msgstr "P et Q doivent être spécifiés tous les deux avec G5" + +#: src/emc/rs274ngc/interp_convert.cc:363 +msgid "" +"The move just after exiting cutter compensation mode must be straight, not " +"an arc" +msgstr "" +"Le premier mouvement après l'arrêt de la compensation de rayon d'outil doit " +"être une droite, pas un arc" + +#: src/emc/rs274ngc/interp_convert.cc:371 +msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" +msgstr "Un arc est impossible dans les plans G17.1, G18.1 ou G19.1" + +#: src/emc/rs274ngc/interp_convert.cc:383 +#: src/emc/rs274ngc/interp_convert.cc:4488 +msgid "Cannot feed with zero spindle speed in feed per rev mode" +msgstr "" +"Mouvement impossible en mode longueur par tour avec une vitesse de broche à " +"zéro" + +#: src/emc/rs274ngc/interp_convert.cc:394 +#: src/emc/rs274ngc/interp_convert.cc:400 +#: src/emc/rs274ngc/interp_convert.cc:409 +#: src/emc/rs274ngc/interp_convert.cc:415 +#: src/emc/rs274ngc/interp_convert.cc:424 +#: src/emc/rs274ngc/interp_convert.cc:430 +#, c-format +msgid "%c word missing in absolute center arc" +msgstr "Mot %c manquant en centre d'arc absolu" + +#: src/emc/rs274ngc/interp_convert.cc:662 +msgid "" +"Radius of cutter compensation entry arc is not greater than the tool radius" +msgstr "" +"L'arc d'entrée de compensation de rayon d'outil est plus petit que le rayon " +"de l'outil" + +#: src/emc/rs274ngc/interp_convert.cc:882 +#: src/emc/rs274ngc/interp_convert.cc:892 src/emc/rs274ngc/interp_queue.cc:696 +msgid "" +"Arc move in concave corner cannot be reached by the tool without gouging" +msgstr "" +"Le mouvement en arc dans l'angle intérieur ne peut pas s'achever sans que " +"l'outil n'interfère avec la pièce" + +#: src/emc/rs274ngc/interp_convert.cc:918 +msgid "Arc to arc motion is invalid because the arcs have the same center" +msgstr "Mouvement d'arc en arc impossible, les deux arcs ayant le même centre" + +#: src/emc/rs274ngc/interp_convert.cc:921 +msgid "" +"Arc to arc motion makes a corner the compensated tool can't fit in without " +"gouging" +msgstr "" +"Mouvement d'arc en arc, pour initier la compensation d'outil, ne pouvant pas " +"être suivi sans interférer avec la pièce" + +#: src/emc/rs274ngc/interp_convert.cc:1053 +#: src/emc/rs274ngc/interp_convert.cc:1057 +#: src/emc/rs274ngc/interp_convert.cc:1061 +#: src/emc/rs274ngc/interp_convert.cc:3945 +#: src/emc/rs274ngc/interp_convert.cc:3948 +#: src/emc/rs274ngc/interp_convert.cc:3951 src/emc/rs274ngc/interp_find.cc:97 +#, c-format +msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" +msgstr "Position absolue %5.2f invalide pour l'axe rotatif wrapped %c" + +#: src/emc/rs274ngc/interp_convert.cc:1563 +msgid "Cannot change control mode with cutter radius compensation on" +msgstr "" +"Changement de mode de contrôle impossible avec la compensation de rayon " +"d'outil activée" + +#: src/emc/rs274ngc/interp_convert.cc:1676 +msgid "Cannot change coordinate systems with cutter radius compensation on" +msgstr "" +"Changement de système de coordonnées impossible avec la compensation de " +"rayon d'outil activée" + +#: src/emc/rs274ngc/interp_convert.cc:1920 +#, c-format +msgid "G%d.1 with no D word" +msgstr "G%d.1 sans mot D" + +#: src/emc/rs274ngc/interp_convert.cc:1923 +#, c-format +msgid "G%d.1 with L word, but plane is not G18" +msgstr "G%d.1 avec mot L, mais le plan n'est pas G18" + +#: src/emc/rs274ngc/interp_convert.cc:1934 +#, c-format +msgid "G%d requires D word to be a whole number" +msgstr "G%d exige que le mot D soit un nombre entier" + +#: src/emc/rs274ngc/interp_convert.cc:1941 +#, c-format +msgid "G%d with lathe tool, but plane is not G18" +msgstr "G%d avec outil de tour, mais le plan n'est pas G18" + +#: src/emc/rs274ngc/interp_convert.cc:2340 +msgid "Cannot set reference point with cutter compensation in effect" +msgstr "" +"Réglage de point de référence impossible avec la compensation d'outil activée" + +#: src/emc/rs274ngc/interp_convert.cc:2859 +#, fuzzy, c-format +msgid "gen_restore G20/G21 failed: '%s'" +msgstr "M7x: restauration paramètres G20/G21 impossible: '%s'" + +#: src/emc/rs274ngc/interp_convert.cc:2907 +#, c-format +msgid "" +"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" +msgstr "" +"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" + +#: src/emc/rs274ngc/interp_convert.cc:2908 +#, c-format +msgid "BUG: restore from level %d !?" +msgstr "BUG: restore from level %d !?" + +#: src/emc/rs274ngc/interp_convert.cc:2909 +#, c-format +msgid "BUG: restore to level %d !?" +msgstr "BUG: restore to level %d !?" + +#: src/emc/rs274ngc/interp_convert.cc:2928 +#, c-format +msgid "M7x: restore_settings G20/G21 failed: '%s'" +msgstr "M7x: restauration paramètres G20/G21 impossible: '%s'" + +#: src/emc/rs274ngc/interp_convert.cc:2946 +#, c-format +msgid "M7x: restore_settings failed executing: '%s': %s" +msgstr "M7x: échec restauration paramètres exécution de: '%s': %s" + +#: src/emc/rs274ngc/interp_convert.cc:3005 +#, c-format +msgid "Failed to restore interp state on abort '%s': %s" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3069 +msgid "No valid P word with M62" +msgstr "Pas de mot P valide avec M62" + +#: src/emc/rs274ngc/interp_convert.cc:3072 +msgid "No valid P word with M63" +msgstr "Pas de mot P valide avec M63" + +#: src/emc/rs274ngc/interp_convert.cc:3075 +msgid "No valid P word with M64" +msgstr "Pas de mot P valide avec M64" + +#: src/emc/rs274ngc/interp_convert.cc:3078 +msgid "No valid P word with M65" +msgstr "Pas de mot P valide avec M65" + +#: src/emc/rs274ngc/interp_convert.cc:3111 +msgid "invalid P-word with M66" +msgstr "Mot P valide avec M66" + +#: src/emc/rs274ngc/interp_convert.cc:3126 +msgid "Cannot wait for digital input with cutter radius compensation on" +msgstr "" +"Attente d'une entrée numérique impossible avec la compensation de rayon " +"d'outil activée" + +#: src/emc/rs274ngc/interp_convert.cc:3138 +msgid "Cannot wait for analog input with cutter radius compensation on" +msgstr "" +"Attente d'une entrée analogique impossible avec la compensation de rayon " +"d'outil activée" + +#: src/emc/rs274ngc/interp_convert.cc:3152 +msgid "Invalid analog index with M67" +msgstr "Index analogique invalide avec M67" + +#: src/emc/rs274ngc/interp_convert.cc:3157 +msgid "Invalid analog index with M68" +msgstr "Index analogique invalide avec M68" + +#: src/emc/rs274ngc/interp_convert.cc:3188 +#, fuzzy +msgid "Need non-negative Q-word to specify tool number with M61" +msgstr "Avec M61, un mot Q positif doit spécifier le numéro de l'outil" + +#: src/emc/rs274ngc/interp_convert.cc:3258 +#, fuzzy +msgid "Q word with M19 requires a value > 0" +msgstr "Avec M19, un mot Q doit être > 0" + +#: src/emc/rs274ngc/interp_convert.cc:3286 +msgid "Cannot restore context from invalid stack frame - missing M70/M73?" +msgstr "Cannot restore context from invalid stack frame - missing M70/M73?" + +#: src/emc/rs274ngc/interp_convert.cc:3327 +#: src/emc/rs274ngc/interp_convert.cc:3344 +#: src/emc/rs274ngc/interp_convert.cc:3359 +#: src/emc/rs274ngc/interp_convert.cc:3373 +#: src/emc/rs274ngc/interp_convert.cc:3387 +msgid "Cannot enable overrides with cutter radius compensation on" +msgstr "" +"Activation des correcteurs impossible avec la compensation de rayon d'outil" + +#: src/emc/rs274ngc/interp_convert.cc:3334 +#: src/emc/rs274ngc/interp_convert.cc:3349 +#: src/emc/rs274ngc/interp_convert.cc:3364 +#: src/emc/rs274ngc/interp_convert.cc:3378 +#: src/emc/rs274ngc/interp_convert.cc:3392 +msgid "Cannot disable overrides with cutter radius compensation on" +msgstr "" +"Désactivation des correcteurs impossible avec la compensation de rayon " +"d'outil" + +#: src/emc/rs274ngc/interp_convert.cc:3506 +#: src/emc/rs274ngc/interp_convert.cc:3507 +#: src/emc/rs274ngc/interp_convert.cc:3508 +#, c-format +msgid "Indexing axis %c can only be moved with G0" +msgstr "Indexing axis %c can only be moved with G0" + +#: src/emc/rs274ngc/interp_convert.cc:3515 +#: src/emc/rs274ngc/interp_convert.cc:3517 +#: src/emc/rs274ngc/interp_convert.cc:3519 +#, c-format +msgid "Indexing axis %c can only be moved alone" +msgstr "Indexing axis %c can only be moved alone" + +#: src/emc/rs274ngc/interp_convert.cc:3621 +msgid "Cannot probe with feed per rev mode" +msgstr "Mesure impossible dans le mode vitesse en unités par tour" + +#: src/emc/rs274ngc/interp_convert.cc:3669 +msgid "Cannot change retract mode with cutter radius compensation on" +msgstr "" +"Changement de mode de retrait impossible avec la compensation de rayon " +"d'outil" + +#: src/emc/rs274ngc/interp_convert.cc:3703 +msgid "G10 L1 without offsets has no effect" +msgstr "G10 L1 sans offsets n'a aucun effet" + +#: src/emc/rs274ngc/interp_convert.cc:3809 +msgid "Q number in G10 is not an integer" +msgstr "Le nombre Q dans G10 n'est pas un entier" + +#: src/emc/rs274ngc/interp_convert.cc:3810 +msgid "Invalid tool orientation" +msgstr "Orientation d'outil invalide" + +#: src/emc/rs274ngc/interp_convert.cc:3933 +msgid "I J words not allowed with G10 L2" +msgstr "Mots I J non permis avec G10 L2" + +#: src/emc/rs274ngc/interp_convert.cc:3954 +msgid "" +"Cannot change the active coordinate system with cutter radius compensation on" +msgstr "" +"Changement de système de coordonnées impossible avec la compensation de " +"rayon d'outil activée" + +#: src/emc/rs274ngc/interp_convert.cc:3962 +msgid "R not allowed in G10 L20" +msgstr "R n'est pas permis avec G10 L20" + +#: src/emc/rs274ngc/interp_convert.cc:4550 +msgid "Spindle not turning in G33" +msgstr "Broche pas en rotation en G33" + +#: src/emc/rs274ngc/interp_convert.cc:4560 +msgid "Spindle not turning in G33.1" +msgstr "Broche pas en rotation en G33.1" + +#: src/emc/rs274ngc/interp_convert.cc:4603 +msgid "BUG: An axis incorrectly moved along with an indexer" +msgstr "BUG: An axis incorrectly moved along with an indexer" + +#: src/emc/rs274ngc/interp_convert.cc:4616 +msgid "BUG: trying to index incorrect axis" +msgstr "BUG: trying to index incorrect axis" + +#: src/emc/rs274ngc/interp_convert.cc:4708 +msgid "Cannot use G76 threading cycle with cutter radius compensation on" +msgstr "Cycle de filetage G76 impossible avec la compensation de rayon d'outil" + +#: src/emc/rs274ngc/interp_convert.cc:4711 +msgid "In G76, I must not be 0" +msgstr "I ne peut pas être à 0 dans G76" + +#: src/emc/rs274ngc/interp_convert.cc:4713 +msgid "In G76, J must be greater than 0" +msgstr "J doit être supérieur à 0 dans G76" + +#: src/emc/rs274ngc/interp_convert.cc:4715 +msgid "In G76, K must be greater than J" +msgstr "K doit être plus grand que J dans G76" + +#: src/emc/rs274ngc/interp_convert.cc:4858 +msgid "" +"Length of cutter compensation entry move is not greater than the tool radius" +msgstr "" +"Le mouvement d'entrée en compensation de longueur d'outil doit être plus " +"grand que le rayon d'outil" + +#: src/emc/rs274ngc/interp_convert.cc:5077 +msgid "Zero degree inside corner is invalid for cutter compensation" +msgstr "" +"Un angle interne de zéro degré est invalide pour la compensation de rayon " +"d'outil" + +#: src/emc/rs274ngc/interp_convert.cc:5115 +#: src/emc/rs274ngc/interp_convert.cc:5123 +msgid "" +"Arc to straight motion makes a corner the compensated tool can't fit in " +"without gouging" +msgstr "" +"Mouvement d'arc vers une droite, pour initier la compensation d'outil, ne " +"pouvant pas être suivi sans interférer avec la pièce" + +#: src/emc/rs274ngc/interp_convert.cc:5207 +msgid "Cannot change tools with cutter radius compensation on" +msgstr "" +"Changement d'outil impossible avec la compensation de rayon d'outil active" + +#: src/emc/rs274ngc/interp_convert.cc:5328 +msgid "Cannot change tool offset with cutter radius compensation on" +msgstr "" +"Changement d'offsetd'outil impossible avec la compensation de rayon d'outil " +"active" + +#: src/emc/rs274ngc/interp_queue.cc:694 +#, c-format +msgid "" +"BUG: cutter compensation has generated an invalid arc with mismatched radii " +"r1 %f r2 %f\n" +msgstr "" +"BOGUE: la compensation d'outil a généré un arc invalide avec des rayons " +"incorrects r1 %f r2 %f\n" + +#: src/emc/rs274ngc/interp_queue.cc:716 +msgid "BUG: Unsupported plane in cutter compensation" +msgstr "BOGUE: Plan incorrect avec la compensation d'outil" + +#: src/emc/rs274ngc/interp_queue.cc:729 +msgid "" +"Straight traverse in concave corner cannot be reached by the tool without " +"gouging" +msgstr "" +"Le mouvement rectiligne en vitesse rapide dans l'angle intérieur ne peut pas " +"s'achever sans que l'outil n'interfère avec la pièce" + +#: src/emc/rs274ngc/interp_queue.cc:757 +#, c-format +msgid "BUG: Unsupported plane [%d] in cutter compensation" +msgstr "BOGUE: Plan [%d] non supporté avec la compensation d'outil" + +#: src/emc/rs274ngc/interp_queue.cc:771 +msgid "" +"Straight feed in concave corner cannot be reached by the tool without gouging" +msgstr "" +"Le mouvement rectiligne en vitesse travail dans l'angle intérieur ne peut " +"pas s'achever sans que l'outil n'interfère avec la pièce" + +#: src/emc/rs274ngc/interp_cycles.cc:630 +msgid "Cannot feed with zero feed rate" +msgstr "Mouvement impossible avec une vitesse nulle" + +#: src/emc/rs274ngc/interp_cycles.cc:631 +msgid "Cannot use inverse time feed with canned cycles" +msgstr "Cycle préprogrammé impossible en mode vitesse inverse du temps" + +#: src/emc/rs274ngc/interp_cycles.cc:632 +msgid "Cannot use canned cycles with cutter compensation on" +msgstr "Cycle préprogrammé impossible avec la compensation d'outil activée" + +#: src/emc/rs274ngc/interp_cycles.cc:829 +msgid "G17 canned cycle is not possible on a machine without Z axis" +msgstr "Le cycle préprogrammé G17 est impossible sur une machine sans axe Z" + +#: src/emc/rs274ngc/interp_cycles.cc:1015 +msgid "G17.1 canned cycle is not possible on a machine without W axis" +msgstr "Le cycle préprogrammé G17.1 est impossible sur une machine sans axe W" + +#: src/emc/rs274ngc/interp_cycles.cc:1231 +msgid "G19 canned cycle is not possible on a machine without X axis" +msgstr "Le cycle préprogrammé G19 est impossible sur une machine sans axe X" + +#: src/emc/rs274ngc/interp_cycles.cc:1399 +msgid "G19.1 canned cycle is not possible on a machine without U axis" +msgstr "Le cycle préprogrammé G19.1 est impossible sur une machine sans axe U" + +#: src/emc/rs274ngc/interp_cycles.cc:1624 +msgid "G18 canned cycle is not possible on a machine without Y axis" +msgstr "Le cycle préprogrammé G18 est impossible sur une machine sans axe Y" + +#: src/emc/rs274ngc/interp_cycles.cc:1791 +msgid "G18.1 canned cycle is not possible on a machine without V axis" +msgstr "Le cycle préprogrammé G18.1 est impossible sur une machine sans axe V" + +# +#: src/emc/rs274ngc/interp_find.cc:170 +msgid "Cannot use polar coordinates with G53" +msgstr "Coordonnées polaires inutilisables avec G53" + +#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 +#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 +#: src/emc/rs274ngc/interp_find.cc:347 +msgid "Cannot specify X or Y words with polar coordinate" +msgstr "Impossible de spécifier les mots X et Y avec des coordonnées polaires" + +#: src/emc/rs274ngc/interp_find.cc:272 +msgid "Must specify angle in polar coordinate if at the origin" +msgstr "Un angle en coordonnées polaires doit être spécifié si à l'origine" + +#: src/emc/rs274ngc/interp_find.cc:338 +msgid "" +"Incremental motion with polar coordinates is indeterminate when at the origin" +msgstr "" +"Un mouvement incrémental avec des coordonnées polaires est indéterminé si à " +"l'origine" + +#: src/emc/rs274ngc/interp_find.cc:348 +msgid "G91 motion with polar coordinates is indeterminate when at the origin" +msgstr "" +"Un mouvement G91 avec des coordonnées polaires est indéterminé si à l'origine" + +#: src/emc/rs274ngc/interp_find.cc:720 +#, c-format +msgid "Requested tool %d not found in the tool table" +msgstr "L'outil demandé %d n'est pas dans la table d'outils" + +#: src/emc/rs274ngc/interp_internal.cc:161 +msgid "Cannot use polar coordinate on a machine lacking X or Y axes" +msgstr "" +"Impossible d'utiliser les coordonnées polaires sur une machine sans axes X " +"ou Y" + +#: src/emc/rs274ngc/interp_internal.cc:162 +msgid "Cannot use polar coordinate except in G17 plane" +msgstr "" +"Possibilité d'utiliser les coordonnées polaires uniquement dans le plan G17" + +#: src/emc/rs274ngc/interp_internal.cc:163 +msgid "Cannot specify both polar coordinate and X word" +msgstr "Impossible de spécifier ensemble les coordonnées polaires et le mot X" + +#: src/emc/rs274ngc/interp_internal.cc:164 +msgid "Cannot specify both polar coordinate and Y word" +msgstr "Impossible de spécifier ensemble les coordonnées polaires et le mot Y" + +#: src/emc/rs274ngc/interp_internal.cc:185 +#: src/emc/rs274ngc/interp_internal.cc:199 +#: src/emc/rs274ngc/interp_internal.cc:214 +msgid "Polar coordinates can only be used for motion" +msgstr "" +"Les coordonnées polaires peuvent être utilisées seulement pour un mouvement" + +#: src/emc/rs274ngc/interp_read.cc:1150 src/emc/rs274ngc/interp_read.cc:1154 +#, c-format +msgid "Bad character '\\%03o' used" +msgstr "Caractère '\\%03o' incorrect" + +#: src/emc/rs274ngc/interp_read.cc:1154 +#, c-format +msgid "Bad character '%c' used" +msgstr "Caractère '%c' incorrect" + +#: src/emc/rs274ngc/interp_read.cc:1678 +msgid "Left bracket missing after 'while'" +msgstr "Crochet gauche manquant après 'while'" + +#: src/emc/rs274ngc/interp_read.cc:1693 +msgid "Left bracket missing after 'repeat'" +msgstr "Crochet gauche manquant 'repeat'" + +#: src/emc/rs274ngc/interp_read.cc:1708 +msgid "Left bracket missing after 'if'" +msgstr "Crochet gauche manquant après 'if'" + +#: src/emc/rs274ngc/interp_read.cc:1723 +msgid "Left bracket missing after 'elseif'" +msgstr "Crochet gauche manquant après 'elseif'" + +#: src/emc/rs274ngc/interp_read.cc:1926 +msgid "Cannot read current position with cutter radius compensation on" +msgstr "" +"Lecture de la position courante impossible avec la compensation de rayon " +"d'outil activée" + +#: src/emc/rs274ngc/interp_read.cc:1941 +msgid "Expected # reading parameter" +msgstr "Lecture paramètre # attendue" + +#: src/emc/rs274ngc/interp_read.cc:1943 +msgid "Expected ] reading bracketed parameter" +msgstr "La lecture de paramètre entre crochets attendait un ]" + +#: src/emc/rs274ngc/interp_read.cc:2615 +#, c-format +msgid "bad number format (conversion failed) parsing '%s'" +msgstr "" +"mauvais format de nombre (la conversion a échoué) lors de l'analyse de '%s'" + +#: src/emc/rs274ngc/interp_read.cc:2616 +#, c-format +msgid "bad number format (trailing characters) parsing '%s'" +msgstr "mauvais format de nombre (caractère de fin) lors de l'analyse de '%s'" + +#: src/emc/rs274ngc/interp_read.cc:2706 +msgid "Calculation resulted in 'not a number'" +msgstr "Le résultat du calcul est 'pas un nombre'" + +#: src/emc/rs274ngc/interp_read.cc:2708 +msgid "Calculation resulted in 'infinity'" +msgstr "Le résultat du calcul est 'infini'" + +#: src/emc/rs274ngc/interp_read.cc:3001 +#, c-format +msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" +msgstr "EOF dans le fichier: %s cherche le mot-O: o<%s> à la ligne: %d" + +#: src/emc/rs274ngc/interp_read.cc:3113 +msgid "Multiple U words on one line" +msgstr "Multiples mots U sur une ligne" + +#: src/emc/rs274ngc/interp_read.cc:3129 +msgid "Multiple V words on one line" +msgstr "Multiples mots V sur une ligne" + +#: src/emc/rs274ngc/interp_read.cc:3145 +msgid "Multiple W words on one line" +msgstr "Multiples mots W sur une ligne" + +#: src/emc/rs274ngc/interp_o_word.cc:97 +#, c-format +msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" +msgstr "" +"Fichier:%s ligne:%d redéfinition sub: o|%s| déjà défini dans le fichier:%s" + +#: src/emc/rs274ngc/interp_o_word.cc:722 +#, fuzzy, c-format +msgid "%d: not in a subroutine definition: '%s'" +msgstr "Pas dans une définition de sous-programmme" + +#: src/emc/rs274ngc/interp_o_word.cc:759 src/emc/rs274ngc/interp_o_word.cc:809 +#, c-format +msgid "%d: duplicate O-word label: '%s' - defined in line %d" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:862 +#, c-format +msgid "%d: duplicate O-word label - already defined in line %d: '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:886 src/emc/rs274ngc/interp_o_word.cc:944 +#: src/emc/rs274ngc/interp_o_word.cc:978 src/emc/rs274ngc/interp_o_word.cc:996 +#: src/emc/rs274ngc/interp_o_word.cc:1013 +#: src/emc/rs274ngc/interp_o_word.cc:1038 +#, c-format +msgid "%d: undefined O-word label: '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:889 src/emc/rs274ngc/interp_o_word.cc:947 +#, c-format +msgid "%d: no matching 'if' label: '%s' (found '%s' in line %d)" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:981 +#, c-format +msgid "%d: no matching label: '%s' (found '%s' in line %d): '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:999 src/emc/rs274ngc/interp_o_word.cc:1016 +#, c-format +msgid "%d: no matching while/do label: '%s' (found '%s' in line %d)" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:1042 +#, c-format +msgid "%d: no matching label: '%s' (found '%s' in line %d)" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:166 +#, c-format +msgid "Named parameter #<%s> not defined" +msgstr "Paramètre nommé #<%s> non défini" + +#: src/emc/rs274ngc/interp_namedparams.cc:196 +#, c-format +msgid "cant open ini file '%s'" +msgstr "Impossible d'ouvrir %s" + +#: src/emc/rs274ngc/interp_namedparams.cc:213 +#, c-format +msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" +msgstr "Paramètre nommé #<%s> non trouvé au '%s': erreur=0x%x" + +#: src/emc/rs274ngc/interp_namedparams.cc:237 +#, c-format +msgid "fetch_hal_param: hal_init(%s): %d" +msgstr "fetch_hal_param: hal_init(%s): %d" + +#: src/emc/rs274ngc/interp_namedparams.cc:238 +#, c-format +msgid "fetch_hal_param: hal_ready(): %d" +msgstr "fetch_hal_param: hal_ready(): %d" + +#: src/emc/rs274ngc/interp_namedparams.cc:419 +#, c-format +msgid "Internal error: Could not assign #<%s>" +msgstr "Erreur interne: Ne peut assigner #<%s>" + +#: src/emc/rs274ngc/interp_namedparams.cc:427 +#, c-format +msgid "Cannot assign to read-only parameter #<%s>" +msgstr "Impossible d'assigner au paramètre #<%s> il est en lecture seule" + +#: src/emc/rs274ngc/interp_namedparams.cc:731 +#, c-format +msgid "BUG: lookup_named_param(%s): unhandled index=%fn" +msgstr "BUG: lookup_named_param(%s): unhandled index=%fn" + +#: src/emc/rs274ngc/rs274ngc_pre.cc:1407 src/emc/rs274ngc/rs274ngc_pre.cc:1482 +msgid "Queue is not empty after tool change" +msgstr "La queue n'est pas vide après changement d'outil" + +#: src/emc/rs274ngc/rs274ngc_pre.cc:1786 +#, c-format +msgid "Unable to open parameter file: '%s'" +msgstr "Impossible d'ouvrir le fichier de paramètres:'%s'" + +#: src/emc/rs274ngc/rs274ngc_return.hh:19 +msgid "A file is already open" +msgstr "Un fichier est déjà ouvert" + +#: src/emc/rs274ngc/rs274ngc_return.hh:21 +#, fuzzy +msgid "All axes missing with g52 or g92" +msgstr "Les axes sont manquants avec g92" + +#: src/emc/rs274ngc/rs274ngc_return.hh:22 +msgid "All axes missing with motion code" +msgstr "Les axes sont manquants avec un code mouvement" + +#: src/emc/rs274ngc/rs274ngc_return.hh:23 +msgid "Arc radius too small to reach end point" +msgstr "Le rayon de l'arc est trop petit pour atteindre le point final" + +#: src/emc/rs274ngc/rs274ngc_return.hh:24 +msgid "Argument to acos out of range" +msgstr "Argument de acos hors d'échelle" + +#: src/emc/rs274ngc/rs274ngc_return.hh:25 +msgid "Argument to asin out of range" +msgstr "Argument de asin hors d'échelle" + +#: src/emc/rs274ngc/rs274ngc_return.hh:26 +msgid "Attempt to divide by zero" +msgstr "Tentative de division par zéro" + +#: src/emc/rs274ngc/rs274ngc_return.hh:27 +msgid "Attempt to raise negative to non integer power" +msgstr "Tentative d'élever un nombre négatif à une puissance non entière" + +#: src/emc/rs274ngc/rs274ngc_return.hh:28 +msgid "Bad format unsigned integer" +msgstr "Mauvais format d'entier non signé" + +#: src/emc/rs274ngc/rs274ngc_return.hh:29 +msgid "Bad number format" +msgstr "Mauvais format de nombre" + +#: src/emc/rs274ngc/rs274ngc_return.hh:30 +msgid "Bug bad g code modal group 0" +msgstr "Erreur de Gcode dans le groupe modal 0" + +#: src/emc/rs274ngc/rs274ngc_return.hh:31 +msgid "Bug code not g0 or g1" +msgstr "Bug-code sans g0 ou g1" + +#: src/emc/rs274ngc/rs274ngc_return.hh:32 +msgid "Bug code not g17 g18 or g19" +msgstr "Bug-code sans g17 g18 ou g19" + +#: src/emc/rs274ngc/rs274ngc_return.hh:33 +msgid "Bug code not g20 or g21" +msgstr "Bug-code sans g20 ou g21" + +#: src/emc/rs274ngc/rs274ngc_return.hh:34 +msgid "Bug code not g28 or g30" +msgstr "Bug-code sans g28 ou g30" + +#: src/emc/rs274ngc/rs274ngc_return.hh:35 +msgid "Bug code not g2 or g3" +msgstr "Bug-code sans g2 ou g3" + +#: src/emc/rs274ngc/rs274ngc_return.hh:37 +#, fuzzy +msgid "Bug code not g4 g10 g28 g30 g52 g53 or g92 series" +msgstr "Bug-code sans g4 g10 g28 g30 g53 ou des séries g92" + +#: src/emc/rs274ngc/rs274ngc_return.hh:38 +msgid "Bug code not g61 g61.1 or g64" +msgstr "Bug-code sans g61 g61.1 ou g64" + +#: src/emc/rs274ngc/rs274ngc_return.hh:39 +msgid "Bug code not g90 or g91" +msgstr "Bug-code sans g90 ou g91" + +#: src/emc/rs274ngc/rs274ngc_return.hh:40 +msgid "Bug code not g98 or g99" +msgstr "Bug-code sans g98 ou g99" + +#: src/emc/rs274ngc/rs274ngc_return.hh:41 +#, fuzzy +msgid "Bug code not in g52 or g92 series" +msgstr "Bug-code en dehors des séries g92" + +#: src/emc/rs274ngc/rs274ngc_return.hh:42 +msgid "Bug code not in range g54 to g593" +msgstr "Bug-code hors gamme g54 a g593" + +#: src/emc/rs274ngc/rs274ngc_return.hh:43 +msgid "Bug code not m0 m1 m2 m30 m60" +msgstr "Bug-code sans m0 m1 m2 m30 m60" + +#: src/emc/rs274ngc/rs274ngc_return.hh:44 +msgid "Bug distance mode not g90 or g91" +msgstr "Bug-mode distance sans g90 ou g91" + +#: src/emc/rs274ngc/rs274ngc_return.hh:45 +msgid "Bug function should not have been called" +msgstr "Bug; la fonction n'a pas du être bien appelée" + +#: src/emc/rs274ngc/rs274ngc_return.hh:46 +msgid "Bug in tool radius comp" +msgstr "Bogue dans la compensation de rayon d'outil" + +#: src/emc/rs274ngc/rs274ngc_return.hh:47 +msgid "Bug plane not xy yz or xz" +msgstr "Bug-plan ni xy yz ou xz" + +#: src/emc/rs274ngc/rs274ngc_return.hh:48 +msgid "Bug side not right or left" +msgstr "Bug-cote ni droit ni gauche" + +#: src/emc/rs274ngc/rs274ngc_return.hh:49 +msgid "Bug unknown motion code" +msgstr "Bug-code mouvement inconnu" + +#: src/emc/rs274ngc/rs274ngc_return.hh:50 +msgid "Bug unknown operation" +msgstr "Bug-opération inconnue" + +#: src/emc/rs274ngc/rs274ngc_return.hh:51 +msgid "Cannot change axis offsets with cutter radius comp" +msgstr "" +"Impossible de changer les décalages d'axe avec la compensation de rayon " +"d'outil active " + +#: src/emc/rs274ngc/rs274ngc_return.hh:52 +msgid "Cannot create backup file" +msgstr "Impossible de créer le fichier de sauveguarde" + +#: src/emc/rs274ngc/rs274ngc_return.hh:53 +msgid "Cannot do g1 with zero feed rate" +msgstr "Impossible d'effectuer un g1 avec une vitesse nulle" + +#: src/emc/rs274ngc/rs274ngc_return.hh:54 +msgid "Cannot do zero repeats of cycle" +msgstr "Impossible de répéter le cycle zéro fois" + +#: src/emc/rs274ngc/rs274ngc_return.hh:55 +msgid "Cannot make arc with zero feed rate" +msgstr "Impossible de faire un arc avec une vitesse nulle" + +#: src/emc/rs274ngc/rs274ngc_return.hh:56 +msgid "Cannot open backup file" +msgstr "Impossible d'ouvrir le fichier de sauveguarde" + +#: src/emc/rs274ngc/rs274ngc_return.hh:57 +msgid "Cannot open variable file" +msgstr "Impossible d'ouvrir le fichier de variables" + +#: src/emc/rs274ngc/rs274ngc_return.hh:58 +msgid "Cannot probe with cutter radius comp on" +msgstr "Mesure impossible avec la compensation de rayon d'outil" + +#: src/emc/rs274ngc/rs274ngc_return.hh:59 +msgid "Cannot probe with zero feed rate" +msgstr "Mesure impossible avec une vitesse nulle" + +#: src/emc/rs274ngc/rs274ngc_return.hh:60 +msgid "Cannot put a b in canned cycle" +msgstr "Mot b interdit dans un cycle préprogrammé" + +#: src/emc/rs274ngc/rs274ngc_return.hh:61 +msgid "Cannot put a c in canned cycle" +msgstr "Mot c interdit dans un cycle préprogrammé" + +#: src/emc/rs274ngc/rs274ngc_return.hh:62 +msgid "Cannot put an a in canned cycle" +msgstr "Mot a interdit dans un cycle préprogrammé" + +#: src/emc/rs274ngc/rs274ngc_return.hh:63 +msgid "Cannot turn cutter radius comp on when on" +msgstr "" +"Impossible d'activer la compensation de rayon d'outil quand elle est déjà " +"active" + +#: src/emc/rs274ngc/rs274ngc_return.hh:64 +msgid "Cannot use axis values with g80" +msgstr "Impossible d'utiliser des valeurs d'axe avec G80" + +#: src/emc/rs274ngc/rs274ngc_return.hh:65 +msgid "Cannot use axis values without a g code that uses them" +msgstr "Impossible d'employer des valeurs d'axe sans G code pour les utiliser" + +#: src/emc/rs274ngc/rs274ngc_return.hh:66 +msgid "Cannot use g28 or g30 with cutter radius comp" +msgstr "Impossible d'utiliser G28 ou G30 avec la compensation de rayon d'outil" + +#: src/emc/rs274ngc/rs274ngc_return.hh:67 +msgid "Cannot use g53 incremental" +msgstr "Impossible d'utiliser G53 en incrémental" + +#: src/emc/rs274ngc/rs274ngc_return.hh:68 +msgid "Cannot use g53 with cutter radius comp" +msgstr "Impossible d'utiliser G53 avec la compensation de rayon d'outil" + +#: src/emc/rs274ngc/rs274ngc_return.hh:69 +msgid "Cannot use two g codes that both use axis values" +msgstr "Impossible d'utiliser deux Gcodes avec plusieurs valeurs d'axe" + +#: src/emc/rs274ngc/rs274ngc_return.hh:70 +msgid "Command too long" +msgstr "Commande trop longue" + +#: src/emc/rs274ngc/rs274ngc_return.hh:71 +msgid "Current point same as end point of arc" +msgstr "Point courant identique au point final de l'arc" + +#: src/emc/rs274ngc/rs274ngc_return.hh:72 +msgid "Dwell time missing with g4" +msgstr "Tempo manquante avec G76" + +#: src/emc/rs274ngc/rs274ngc_return.hh:73 +msgid "Dwell time p word missing with g82" +msgstr "Tempo manquante avec G96" + +#: src/emc/rs274ngc/rs274ngc_return.hh:74 +msgid "Dwell time p word missing with g86" +msgstr "Tempo manquante avec G96" + +#: src/emc/rs274ngc/rs274ngc_return.hh:75 +msgid "Dwell time p word missing with g88" +msgstr "Tempo manquante avec G96" + +#: src/emc/rs274ngc/rs274ngc_return.hh:76 +msgid "Dwell time p word missing with g89" +msgstr "Tempo manquante avec G96" + +#: src/emc/rs274ngc/rs274ngc_return.hh:77 +msgid "Equal sign missing in parameter setting" +msgstr "Signe égal manquant dans le réglage des paramètres" + +#: src/emc/rs274ngc/rs274ngc_return.hh:78 +msgid "F word missing with inverse time arc move" +msgstr "Mot F manquant pour un arc en mouvement contrôle" + +#: src/emc/rs274ngc/rs274ngc_return.hh:79 +msgid "F word missing with inverse time g1 move" +msgstr "Mot F manquant pour g1 en mouvement contrôle" + +#: src/emc/rs274ngc/rs274ngc_return.hh:80 +msgid "File ended with no percent sign" +msgstr "Le fichier se termine sans signe pourcent" + +#: src/emc/rs274ngc/rs274ngc_return.hh:81 +msgid "File ended with no percent sign or program end" +msgstr "Le fichier se termine sans signe pourcent ni fin de programme" + +#: src/emc/rs274ngc/rs274ngc_return.hh:82 +msgid "File name too long" +msgstr "Nom de fichier trop long" + +#: src/emc/rs274ngc/rs274ngc_return.hh:83 +msgid "G code out of range" +msgstr "G code hors d'étendue" + +#: src/emc/rs274ngc/rs274ngc_return.hh:84 +msgid "I word given for arc in yz plane" +msgstr "Mot I donné pour un arc dans le plan yz" + +#: src/emc/rs274ngc/rs274ngc_return.hh:85 +msgid "I word missing with g87" +msgstr "Mot I manquant avec G87" + +#: src/emc/rs274ngc/rs274ngc_return.hh:86 +msgid "J word given for arc in xz plane" +msgstr "Mot J donne pour un arc dans le plan xz" + +#: src/emc/rs274ngc/rs274ngc_return.hh:87 +msgid "J word missing with g87" +msgstr "Mot J manquant avec G87" + +#: src/emc/rs274ngc/rs274ngc_return.hh:88 +msgid "K word given for arc in xy plane" +msgstr "Mot K donne pour un arc dans le plan xy" + +#: src/emc/rs274ngc/rs274ngc_return.hh:89 +msgid "K word missing with g87" +msgstr "Mot K manquant avec G87" + +#: src/emc/rs274ngc/rs274ngc_return.hh:90 +msgid "Left bracket missing after slash with atan" +msgstr "Crochet gauche manquant après le slash avec atan" + +#: src/emc/rs274ngc/rs274ngc_return.hh:91 +msgid "Left bracket missing after unary operation name" +msgstr "Crochet gauche manquant après un nom d'opération unaire" + +#: src/emc/rs274ngc/rs274ngc_return.hh:92 +#, fuzzy, c-format +msgid "M code greater than 199: M%d" +msgstr "M-code plus grand que 199" + +#: src/emc/rs274ngc/rs274ngc_return.hh:93 +msgid "Mixed radius ijk format for arc" +msgstr "Mélange de format de rayon ijk pour un arc" + +#: src/emc/rs274ngc/rs274ngc_return.hh:94 +msgid "Multiple a words on one line" +msgstr "Multiples mots a sur une ligne" + +#: src/emc/rs274ngc/rs274ngc_return.hh:95 +msgid "Multiple b words on one line" +msgstr "Multiples mots b sur une ligne" + +#: src/emc/rs274ngc/rs274ngc_return.hh:96 +msgid "Multiple c words on one line" +msgstr "Multiples mots c sur une ligne" + +#: src/emc/rs274ngc/rs274ngc_return.hh:97 +msgid "Multiple d words on one line" +msgstr "Multiples mots d sur une ligne" + +#: src/emc/rs274ngc/rs274ngc_return.hh:98 +msgid "Multiple f words on one line" +msgstr "Multiples mots f sur une ligne" + +#: src/emc/rs274ngc/rs274ngc_return.hh:99 +msgid "Multiple h words on one line" +msgstr "Multiples mots h sur une ligne" + +#: src/emc/rs274ngc/rs274ngc_return.hh:100 +msgid "Multiple i words on one line" +msgstr "Multiples mots i sur une ligne" + +#: src/emc/rs274ngc/rs274ngc_return.hh:101 +msgid "Multiple j words on one line" +msgstr "Multiples mots j sur une ligne" + +#: src/emc/rs274ngc/rs274ngc_return.hh:102 +msgid "Multiple k words on one line" +msgstr "Multiples mots k sur une ligne" + +#: src/emc/rs274ngc/rs274ngc_return.hh:103 +msgid "Multiple l words on one line" +msgstr "Multiples mots l sur une ligne" + +#: src/emc/rs274ngc/rs274ngc_return.hh:104 +msgid "Multiple p words on one line" +msgstr "Multiples mots p sur une ligne" + +#: src/emc/rs274ngc/rs274ngc_return.hh:105 +msgid "Multiple q words on one line" +msgstr "Multiples mots q sur une ligne" + +#: src/emc/rs274ngc/rs274ngc_return.hh:106 +msgid "Multiple r words on one line" +msgstr "Multiples mots r sur une ligne" + +#: src/emc/rs274ngc/rs274ngc_return.hh:107 +msgid "Multiple s words on one line" +msgstr "Multiples mots s sur une ligne" + +#: src/emc/rs274ngc/rs274ngc_return.hh:108 +msgid "Multiple t words on one line" +msgstr "Multiples mots t sur une ligne" + +#: src/emc/rs274ngc/rs274ngc_return.hh:109 +msgid "Multiple x words on one line" +msgstr "Multiples mots x sur une ligne" + +#: src/emc/rs274ngc/rs274ngc_return.hh:110 +msgid "Multiple y words on one line" +msgstr "Multiples mots y sur une ligne" + +#: src/emc/rs274ngc/rs274ngc_return.hh:111 +msgid "Multiple z words on one line" +msgstr "Multiples mots z sur une ligne" + +#: src/emc/rs274ngc/rs274ngc_return.hh:112 +msgid "Must use g0 or g1 with g53" +msgstr "Nécessaire d'utiliser g0 ou g1 avec g53" + +#: src/emc/rs274ngc/rs274ngc_return.hh:113 +msgid "Negative argument to sqrt" +msgstr "Argument négatif pour sqrt" + +#: src/emc/rs274ngc/rs274ngc_return.hh:114 +msgid "Negative d word tool radius index used" +msgstr "Utilisation d'un d'index D de rayon d'outil négatif" + +#: src/emc/rs274ngc/rs274ngc_return.hh:115 +msgid "Negative f word used" +msgstr "Utilisation d'un mot f négatif" + +#: src/emc/rs274ngc/rs274ngc_return.hh:116 +msgid "Negative g code used" +msgstr "Utilisation d'un g-code négatif" + +#: src/emc/rs274ngc/rs274ngc_return.hh:117 +msgid "Negative h word used" +msgstr "Utilisation d'un mot H négatif" + +#: src/emc/rs274ngc/rs274ngc_return.hh:118 +msgid "Negative l word used" +msgstr "Utilisation d'un mot l négatif" + +#: src/emc/rs274ngc/rs274ngc_return.hh:119 +msgid "Negative m code used" +msgstr "Utilisation d'un m-code négatif" + +#: src/emc/rs274ngc/rs274ngc_return.hh:120 +msgid "Negative or zero q value used" +msgstr "Utilisation d'une valeur q à zéro ou négative" + +#: src/emc/rs274ngc/rs274ngc_return.hh:121 +msgid "Negative p word used" +msgstr "Utilisation d'un mot p négatif" + +#: src/emc/rs274ngc/rs274ngc_return.hh:122 +msgid "Negative spindle speed used" +msgstr "Utilisation d'une vitesse de broche négative" + +#: src/emc/rs274ngc/rs274ngc_return.hh:123 +msgid "Negative tool id used" +msgstr "Utilisation d'un index d'outil négatif" + +#: src/emc/rs274ngc/rs274ngc_return.hh:124 +msgid "Nested comment found" +msgstr "Commentaires imbriqués" + +#: src/emc/rs274ngc/rs274ngc_return.hh:125 +msgid "No characters found in reading real value" +msgstr "Pas de caractère trouvé en lisant une valeur réelle" + +#: src/emc/rs274ngc/rs274ngc_return.hh:126 +msgid "Non integer value for integer" +msgstr "Valeur non entière pour un entier" + +#: src/emc/rs274ngc/rs274ngc_return.hh:127 +msgid "Null missing after newline" +msgstr "Null manquant après un saut de ligne" + +#: src/emc/rs274ngc/rs274ngc_return.hh:128 +msgid "Parameter file out of order" +msgstr "Fichier de paramètres hors d'échelle" + +#: src/emc/rs274ngc/rs274ngc_return.hh:129 +msgid "Parameter number out of range" +msgstr "Numéro de paramètre hors d'échelle" + +#: src/emc/rs274ngc/rs274ngc_return.hh:130 +msgid "Parameter is readonly" +msgstr "Paramètres en lecture seule" + +#: src/emc/rs274ngc/rs274ngc_return.hh:131 +msgid "Q word missing with g83" +msgstr "Mot q manquant avec G83" + +#: src/emc/rs274ngc/rs274ngc_return.hh:132 +msgid "Queue is not empty after probing" +msgstr "La queue n'est pas vide après la mesure" + +#: src/emc/rs274ngc/rs274ngc_return.hh:133 +msgid "R clearance plane unspecified in cycle" +msgstr "Plan de retrait R non spécifié dans le cycle" + +#: src/emc/rs274ngc/rs274ngc_return.hh:134 +msgid "R i j k words all missing for arc" +msgstr "Mots R i j k manquants pour l'arc" + +#: src/emc/rs274ngc/rs274ngc_return.hh:135 +msgid "R less than x in cycle in yz plane" +msgstr "R inférieur à x dans un cycle dans le plan yz" + +#: src/emc/rs274ngc/rs274ngc_return.hh:136 +msgid "R less than y in cycle in xz plane" +msgstr "R inférieur à y dans un cycle dans le plan xz" + +#: src/emc/rs274ngc/rs274ngc_return.hh:137 +msgid "R less than z in cycle in xy plane" +msgstr "R inférieur à z dans un cycle dans le plan xy" + +#: src/emc/rs274ngc/rs274ngc_return.hh:138 +msgid "R word with no g code that uses it" +msgstr "Mot R sans Gcode pour l'utiliser" + +#: src/emc/rs274ngc/rs274ngc_return.hh:139 +msgid "Slash missing after first atan argument" +msgstr "Slash manquant après le premier argument d'atan" + +#: src/emc/rs274ngc/rs274ngc_return.hh:140 +msgid "Spindle not turning clockwise in g84" +msgstr "La broche ne tourne pas en sens horaire dans g84" + +#: src/emc/rs274ngc/rs274ngc_return.hh:141 +msgid "Spindle not turning in g86" +msgstr "Broche pas en rotation en G86" + +#: src/emc/rs274ngc/rs274ngc_return.hh:142 +msgid "Spindle not turning in g87" +msgstr "Broche pas en rotation en G87" + +#: src/emc/rs274ngc/rs274ngc_return.hh:143 +msgid "Spindle not turning in g88" +msgstr "Broche pas en rotation en G88" + +#: src/emc/rs274ngc/rs274ngc_return.hh:144 +msgid "Sscanf failed" +msgstr "Erreur de sscanf()" + +#: src/emc/rs274ngc/rs274ngc_return.hh:145 +msgid "Start point too close to probe point" +msgstr "Point de départ trop proche du point cible" + +#: src/emc/rs274ngc/rs274ngc_return.hh:146 +msgid "Too many m codes on line" +msgstr "Trop de M-codes sur une ligne" + +#: src/emc/rs274ngc/rs274ngc_return.hh:147 +msgid "Pocket max too large" +msgstr "Poche max trop grande" + +#: src/emc/rs274ngc/rs274ngc_return.hh:148 +msgid "Tool radius not less than arc radius with comp" +msgstr "" +"Rayon d'outil non inférieur au rayon de l'arc après compensation de rayon " +"d'outil" + +#: src/emc/rs274ngc/rs274ngc_return.hh:149 +msgid "Two g codes used from same modal group" +msgstr "Deux Gcodes utilisés dans le même groupe modal" + +#: src/emc/rs274ngc/rs274ngc_return.hh:150 +msgid "Two m codes used from same modal group" +msgstr "Deux Mcodes utilisés dans le même groupe modal" + +#: src/emc/rs274ngc/rs274ngc_return.hh:151 +#, c-format +msgid "Unable to open file <%s>" +msgstr "Impossible d'ouvrir le fichier <%s>" + +#: src/emc/rs274ngc/rs274ngc_return.hh:152 +msgid "Unclosed comment found" +msgstr "Commentaire non fermé" + +#: src/emc/rs274ngc/rs274ngc_return.hh:153 +msgid "Unclosed expression" +msgstr "Expression non fermée" + +#: src/emc/rs274ngc/rs274ngc_return.hh:154 +msgid "Unknown g code used" +msgstr "Utilisation d'un G code inconnu" + +#: src/emc/rs274ngc/rs274ngc_return.hh:155 +#, fuzzy, c-format +msgid "Unknown m code used: M%d" +msgstr "Utilisation d'un Mcode inconnu" + +#: src/emc/rs274ngc/rs274ngc_return.hh:156 +msgid "Unknown operation" +msgstr "Opération inconnue" + +#: src/emc/rs274ngc/rs274ngc_return.hh:157 +msgid "Unknown operation name starting with a" +msgstr "Nom d'opération commençant par a inconnu " + +#: src/emc/rs274ngc/rs274ngc_return.hh:158 +msgid "Unknown operation name starting with m" +msgstr "Nom d'opération commençant par m inconnu " + +#: src/emc/rs274ngc/rs274ngc_return.hh:159 +msgid "Unknown operation name starting with o" +msgstr "Nom d'opération commençant par o inconnu " + +#: src/emc/rs274ngc/rs274ngc_return.hh:160 +msgid "Unknown operation name starting with x" +msgstr "Nom d'opération commençant par x inconnu " + +#: src/emc/rs274ngc/rs274ngc_return.hh:161 +msgid "Unknown word starting with a" +msgstr "Mot commençant par a inconnu " + +#: src/emc/rs274ngc/rs274ngc_return.hh:162 +msgid "Unknown word starting with c" +msgstr "Mot commençant par c inconnu " + +#: src/emc/rs274ngc/rs274ngc_return.hh:163 +msgid "Unknown word starting with e" +msgstr "Mot commençant par e inconnu " + +#: src/emc/rs274ngc/rs274ngc_return.hh:164 +msgid "Unknown word starting with f" +msgstr "Mot commençant par f inconnu " + +#: src/emc/rs274ngc/rs274ngc_return.hh:165 +msgid "Unknown word starting with l" +msgstr "Mot commençant par l inconnu " + +#: src/emc/rs274ngc/rs274ngc_return.hh:166 +msgid "Unknown word starting with r" +msgstr "Mot commençant par r inconnu " + +#: src/emc/rs274ngc/rs274ngc_return.hh:167 +msgid "Unknown word starting with s" +msgstr "Mot commençant par s inconnu " + +#: src/emc/rs274ngc/rs274ngc_return.hh:168 +msgid "Unknown word starting with t" +msgstr "Mot commençant par t inconnu " + +#: src/emc/rs274ngc/rs274ngc_return.hh:169 +msgid "Unknown word where unary operation could be" +msgstr "Mot inconnu là ou devrait être une opération unaire" + +#: src/emc/rs274ngc/rs274ngc_return.hh:170 +msgid "X and y words missing for arc in xy plane" +msgstr "Mots x et y manquants pour un arc dans le plan xy" + +#: src/emc/rs274ngc/rs274ngc_return.hh:171 +msgid "X and z words missing for arc in xz plane" +msgstr "Mots x et z manquants pour un arc dans le plan xz" + +#: src/emc/rs274ngc/rs274ngc_return.hh:172 +msgid "X value unspecified in yz plane canned cycle" +msgstr "Valeur de x non spécifiée dans un cycle préprogrammé dans le plan yz" + +#: src/emc/rs274ngc/rs274ngc_return.hh:173 +msgid "Y and z words missing for arc in yz plane" +msgstr "Mots y et z manquants pour un arc dans le plan yz" + +#: src/emc/rs274ngc/rs274ngc_return.hh:174 +msgid "Y value unspecified in xz plane canned cycle" +msgstr "Valeur de y non spécifiée dans un cycle préprogrammé dans le plan xz" + +#: src/emc/rs274ngc/rs274ngc_return.hh:175 +msgid "Z value unspecified in xy plane canned cycle" +msgstr "Valeur de z non spécifiée pour un cycle préprogrammé dans le plan xy" + +#: src/emc/rs274ngc/rs274ngc_return.hh:176 +msgid "Zero or negative argument to ln" +msgstr "Argument négatif ou à zéro pour ln" + +#: src/emc/rs274ngc/rs274ngc_return.hh:177 +msgid "Zero radius arc" +msgstr "Arc de rayon zero" + +#: src/emc/rs274ngc/rs274ngc_return.hh:178 +msgid "K word missing with g33/g33.1" +msgstr "Mot K manquant avec G33/G33.1" + +#: src/emc/rs274ngc/rs274ngc_return.hh:179 +msgid "F word used with a g33/g33.1" +msgstr "Mot F utilisé avec un G33/G33.1" + +#: src/emc/rs274ngc/rs274ngc_return.hh:180 +msgid "Unknown operation name starting with e" +msgstr "Nom d'opération commençant par e inconnu " + +#: src/emc/rs274ngc/rs274ngc_return.hh:181 +msgid "Unknown operation name starting with n" +msgstr "Nom d'opération commençant par n inconnu " + +#: src/emc/rs274ngc/rs274ngc_return.hh:182 +msgid "Unknown operation name starting with g" +msgstr "Nom d'opération commençant par g inconnu " + +#: src/emc/rs274ngc/rs274ngc_return.hh:183 +msgid "Unknown operation name starting with l" +msgstr "Nom d'opération commençant par l inconnu " + +#: src/emc/rs274ngc/rs274ngc_return.hh:184 +msgid "Too many subroutine parameters" +msgstr "Trop de paramètres de sous-programmes" + +#: src/emc/rs274ngc/rs274ngc_return.hh:185 +msgid "Too many subroutine levels" +msgstr "Trop de niveaux de sous-programmes" + +#: src/emc/rs274ngc/rs274ngc_return.hh:186 +msgid "Bug: call stack underrun" +msgstr "Bogue: violation d'accès à la pile" + +#: src/emc/rs274ngc/rs274ngc_return.hh:187 +msgid "Unknown control command in o word" +msgstr "Commande de contrôle inconnue des mot o" + +#: src/emc/rs274ngc/rs274ngc_return.hh:188 +msgid "Too many oword labels" +msgstr "Trop de labels mots o" + +#: src/emc/rs274ngc/rs274ngc_return.hh:189 +msgid "Unknown oword number" +msgstr "Nombre de mots o inconnu" + +#: src/emc/rs274ngc/rs274ngc_return.hh:190 +msgid "Nested subroutine definition" +msgstr "Définition de sous programmes imbriquées" + +#: src/emc/rs274ngc/rs274ngc_return.hh:191 +msgid "Not in subroutine definition" +msgstr "Pas dans une définition de sous-programmme" + +#: src/emc/rs274ngc/rs274ngc_return.hh:192 +msgid "File not open" +msgstr "Fichier non ouvert" + +#: src/emc/rs274ngc/rs274ngc_return.hh:193 +#, c-format +msgid "cannot reopen file %s - removed or renamed? (%s)" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:194 +msgid "Need tool prepared -Txx- for toolchange" +msgstr "Nécessaire d'appeler l'outil -Txx pour le changeur d'outil" + +#: src/emc/rs274ngc/rs274ngc_return.hh:195 +msgid "Cannot change planes with cutter radius compensation on" +msgstr "Impossible de changer de plan avec la compensation de rayon d'outil" + +#: src/emc/rs274ngc/rs274ngc_return.hh:196 +msgid "Cutter radius compensation allowed only in XY, XZ planes" +msgstr "" +"Compensation de rayon d'outil permise seulement dans les plans XY et XZ" + +#: src/emc/rs274ngc/rs274ngc_return.hh:197 +msgid "P word missing with G76" +msgstr "Mot P manquant avec G76" + +#: src/emc/rs274ngc/rs274ngc_return.hh:198 +msgid "I J or K words missing with G76" +msgstr "Mot I,j ou k manquants avec G76" + +# +#: src/emc/rs274ngc/rs274ngc_return.hh:199 +msgid "Cannot move rotary axes with G76" +msgstr "Impossible d'actionner les axes rotatifs avec G76" + +#: src/emc/rs274ngc/rs274ngc_return.hh:200 +msgid "Multiple e words on one line" +msgstr "Multiples mots e sur une ligne" + +#: src/emc/rs274ngc/rs274ngc_return.hh:201 +msgid "Named parameter not terminated" +msgstr "Paramètre nommé non terminé" + +#: src/emc/rs274ngc/rs274ngc_return.hh:202 +msgid "Out of memory" +msgstr "Débordement de mémoire" + +#: src/emc/rs274ngc/rs274ngc_return.hh:203 +msgid "S word missing with G96" +msgstr "Mot S manquant avec G96" + +#: src/emc/rs274ngc/rs274ngc_return.hh:204 +msgid "Queue is not empty after external input" +msgstr "La queue n'est pas vide après une entrée externe" + +#: src/emc/rs274ngc/rs274ngc_return.hh:205 +msgid "Can't select analog input with wait type != immediate return" +msgstr "" +"Ne peut sélectionner une entrée analogique avec le type attente != retour " +"immédiat" + +#: src/emc/rs274ngc/rs274ngc_return.hh:206 +msgid "Zero timeout with wait type != immediate return" +msgstr "Attente de zéro avec un type attente != retour immédiat" + +#: src/emc/rs274ngc/rs274ngc_return.hh:207 +msgid "Invalid to select both a digital and an analog input with M66" +msgstr "Impossible de mélanger entrées digitales et analogiques avec M66" + +#: src/emc/rs274ngc/rs274ngc_return.hh:208 +msgid "Need to have either a valid P or a valid E word with M66" +msgstr "Nécessaire d'avoir au choix un mot p ou un mot e valide avec m66" + +#: src/emc/rs274ngc/rs274ngc_return.hh:209 +msgid "Q word missing with g73" +msgstr "Mot Q manquant avec G73" + +#: src/emc/rs274ngc/rs274ngc_return.hh:210 +msgid "Digital input selected out of bounds" +msgstr "Entrée numérique choisie hors limites" + +#: src/emc/rs274ngc/rs274ngc_return.hh:211 +msgid "Analog input selected out of bounds" +msgstr "Entrée analogique choisie hors limites" + +#: src/emc/rs274ngc/rs274ngc_return.hh:212 +msgid "W value unspecified in UV plane canned cycle" +msgstr "Valeur de W non spécifiée pour un cycle préprogrammé dans le plan UV" + +#: src/emc/rs274ngc/rs274ngc_return.hh:213 +msgid "U value unspecified in VW plane canned cycle" +msgstr "Valeur de U non spécifiée pour un cycle préprogrammé dans le plan xy" + +#: src/emc/rs274ngc/rs274ngc_return.hh:214 +msgid "V value unspecified in UW plane canned cycle" +msgstr "Valeur de V non spécifiée pour un cycle préprogrammé dans le plan UW" + +#: src/emc/rs274ngc/rs274ngc_return.hh:215 +msgid "R less than W in cycle in UV plane" +msgstr "R inférieur à W dans un cycle dans le plan UV" + +#: src/emc/rs274ngc/rs274ngc_return.hh:216 +msgid "R less than U in cycle in VW plane" +msgstr "R inférieur à U dans un cycle dans le plan VW" + +#: src/emc/rs274ngc/rs274ngc_return.hh:217 +msgid "R less than V in cycle in UW plane" +msgstr "R inférieur à V dans un cycle dans le plan UW" + +#: src/hal/utils/meter.c:200 #, c-format msgid "ERROR: '%s' is not a valid probe type\n" msgstr "ERREUR: '%s' n'est pas un type de sonde valide\n" -#: src/hal/utils/meter.c:206 hal/utils/meter.c:206 +#: src/hal/utils/meter.c:208 #, c-format msgid "ERROR: no pin/signal/parameter name\n" msgstr "ERREUR: aucun nom de pin/signal/paramètre\n" -#: src/hal/utils/meter.c:212 hal/utils/meter.c:212 +#: src/hal/utils/meter.c:214 #, c-format msgid "" "ERROR: -s option requires a probe type and a pin/signal/parameter name\n" @@ -40,41 +1737,40 @@ msgstr "" "ERREUR: l'option -s requiert un type de sonde et un nom de pin/signal/" "paramètre\n" -#: src/hal/utils/meter.c:238 tcl/tklinuxcnc.tcl:764 hal/utils/meter.c:238 -#: ../tcl/tklinuxcnc.tcl:764 +#: src/hal/utils/meter.c:240 tcl/tklinuxcnc.tcl:764 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6431 msgid "Hal Meter" msgstr "HalMeter" -#: src/hal/utils/meter.c:287 hal/utils/meter.c:287 +#: src/hal/utils/meter.c:290 msgid "_Select" msgstr "_Sélectionner" -#: src/hal/utils/meter.c:288 hal/utils/meter.c:288 +#: src/hal/utils/meter.c:291 msgid "E_xit" msgstr "Quitter" -#: src/hal/utils/meter.c:336 src/hal/utils/meter.c:364 hal/utils/meter.c:336 -#: hal/utils/meter.c:364 +#: src/hal/utils/meter.c:339 src/hal/utils/meter.c:367 msgid "Select Item to Probe" msgstr "Choisir l'item à mesurer" -#: src/hal/utils/meter.c:640 hal/utils/meter.c:640 +#: src/hal/utils/meter.c:669 msgid " _Pins " msgstr " _Pins " -#: src/hal/utils/meter.c:641 hal/utils/meter.c:641 +#: src/hal/utils/meter.c:670 msgid " _Signals " msgstr " _Signaux " -#: src/hal/utils/meter.c:642 hal/utils/meter.c:642 +#: src/hal/utils/meter.c:671 msgid " Para_meters " msgstr " Para_mètres " -#: src/hal/utils/meter.c:685 hal/utils/meter.c:685 +#: src/hal/utils/meter.c:714 msgid "_Close" msgstr " Fermer" -#: src/hal/utils/scope.c:126 hal/utils/scope.c:126 +#: src/hal/utils/scope.c:126 msgid "" "Usage:\n" " halscope [-h] [-i infile] [-o outfile] [num_samples]\n" @@ -82,97 +1778,94 @@ msgstr "" "Usage:\n" " halscope [-h] [-i infile] [-o outfile] [num_samples]\n" -#: src/hal/utils/scope.c:474 src/hal/utils/scope.c:501 hal/utils/scope.c:474 -#: hal/utils/scope.c:501 +#: src/hal/utils/scope.c:479 src/hal/utils/scope.c:506 msgid "Open Configuration File:" msgstr "Ouvrir un fichier de configuration:" -#: src/hal/utils/scope.c:535 hal/utils/scope.c:535 +#: src/hal/utils/scope.c:540 msgid "_Open Configuration..." msgstr "_Ouvrir la configuration..." -#: src/hal/utils/scope.c:541 hal/utils/scope.c:541 +#: src/hal/utils/scope.c:546 msgid "_Save Configuration..." msgstr "Enregi_strer la configuration..." -#: src/hal/utils/scope.c:550 hal/utils/scope.c:550 +#: src/hal/utils/scope.c:555 msgid "O_pen Data File..." msgstr "Ouvrir un fichier de données..." -#: src/hal/utils/scope.c:557 hal/utils/scope.c:557 +#: src/hal/utils/scope.c:562 msgid "S_ave Data File..." msgstr "Enregistrer d_ans un fichier de données" -#: src/hal/utils/scope.c:566 share/axis/tcl/axis.tcl:93 hal/utils/scope.c:566 -#: ../share/axis/tcl/axis.tcl:93 +#: src/hal/utils/scope.c:571 share/axis/tcl/axis.tcl:96 msgid "_Quit" msgstr "_Quitter" -#: src/hal/utils/scope.c:572 hal/utils/scope.c:572 +#: src/hal/utils/scope.c:577 msgid "_About Halscope" msgstr "_A propos de Halscope" -#: src/hal/utils/scope.c:578 share/axis/tcl/axis.tcl:435 hal/utils/scope.c:578 -#: ../share/axis/tcl/axis.tcl:435 +#: src/hal/utils/scope.c:583 share/axis/tcl/axis.tcl:501 msgid "_File" msgstr "_Fichier" -#: src/hal/utils/scope.c:582 share/axis/tcl/axis.tcl:447 hal/utils/scope.c:582 -#: ../share/axis/tcl/axis.tcl:447 +#: src/hal/utils/scope.c:587 share/axis/tcl/axis.tcl:517 msgid "_Help" msgstr "Aide" -#: src/hal/utils/scope.c:641 hal/utils/scope.c:641 +#: src/hal/utils/scope.c:646 msgid "HAL Oscilloscope" msgstr "Oscilloscope HAL" -#: src/hal/utils/scope.c:669 hal/utils/scope.c:669 +#: src/hal/utils/scope.c:674 msgid "Horizontal" msgstr "Horizontal" -#: src/hal/utils/scope.c:677 hal/utils/scope.c:677 +#: src/hal/utils/scope.c:682 msgid "Selected Channel" msgstr "Canal sélectionné" -#: src/hal/utils/scope.c:683 hal/utils/scope.c:683 +#: src/hal/utils/scope.c:688 msgid "Run Mode" msgstr "Mode \"Run\"" -#: src/hal/utils/scope.c:686 hal/utils/scope.c:686 +#: src/hal/utils/scope.c:691 msgid "Trigger" msgstr "Trigger" -#: src/hal/utils/scope.c:692 hal/utils/scope.c:692 +#: src/hal/utils/scope.c:697 msgid "Vertical" msgstr "Vertical" -#: src/hal/utils/scope.c:700 share/axis/tcl/axis.tcl:135 -#: share/axis/tcl/axis.tcl:1199 hal/utils/scope.c:700 -#: ../share/axis/tcl/axis.tcl:135 ../share/axis/tcl/axis.tcl:1199 +#: src/hal/utils/scope.c:705 share/axis/tcl/axis.tcl:138 +#: share/axis/tcl/axis.tcl:1269 src/emc/usr_intf/gscreen/gscreen.py:3416 +#: src/emc/usr_intf/gscreen/gscreen.py:3417 +#: src/emc/usr_intf/gscreen/gscreen.glade:2614 msgid "Stop" msgstr "Stopper" -#: src/hal/utils/scope.c:703 hal/utils/scope.c:703 +#: src/hal/utils/scope.c:708 msgid "Normal" msgstr "Normal" -#: src/hal/utils/scope.c:706 hal/utils/scope.c:706 +#: src/hal/utils/scope.c:711 msgid "Single" msgstr "Simple" -#: src/hal/utils/scope.c:709 hal/utils/scope.c:709 +#: src/hal/utils/scope.c:714 msgid "Roll" msgstr "Boucle" -#: src/hal/utils/scope_horiz.c:130 hal/utils/scope_horiz.c:130 +#: src/hal/utils/scope_horiz.c:130 src/emc/usr_intf/gscreen/gscreen.glade:3419 msgid "Zoom" msgstr "Zoom" -#: src/hal/utils/scope_horiz.c:131 hal/utils/scope_horiz.c:131 +#: src/hal/utils/scope_horiz.c:131 msgid " Pos " msgstr " Pos " -#: src/hal/utils/scope_horiz.c:164 hal/utils/scope_horiz.c:164 +#: src/hal/utils/scope_horiz.c:164 msgid "" "----- Samples\n" "at ---- KHz" @@ -180,11 +1873,11 @@ msgstr "" "----- Échantil.\n" "à ---- kHz" -#: src/hal/utils/scope_horiz.c:459 hal/utils/scope_horiz.c:459 +#: src/hal/utils/scope_horiz.c:464 msgid "Realtime component not loaded" msgstr "Composant temps réel non chargé" -#: src/hal/utils/scope_horiz.c:460 hal/utils/scope_horiz.c:460 +#: src/hal/utils/scope_horiz.c:465 msgid "" "HALSCOPE uses a realtime component called scope_rt'\n" "to sample signals for display. It is not currently loaded\n" @@ -210,11 +1903,11 @@ msgstr "" "ou\n" "Cliquer 'Quitter' pour sortir de HALSCOPE" -#: src/hal/utils/scope_horiz.c:495 hal/utils/scope_horiz.c:495 +#: src/hal/utils/scope_horiz.c:536 msgid "Realtime function not linked" msgstr "Fonction temps réel non liée" -#: src/hal/utils/scope_horiz.c:496 hal/utils/scope_horiz.c:496 +#: src/hal/utils/scope_horiz.c:537 msgid "" "The HALSCOPE realtime sampling function\n" "must be called from a HAL thread in to\n" @@ -236,11 +1929,11 @@ msgstr "" "ou\n" "Cliquer 'Quitter' pour sortir de HALSCOPE" -#: src/hal/utils/scope_horiz.c:503 hal/utils/scope_horiz.c:503 +#: src/hal/utils/scope_horiz.c:544 msgid "Select Sample Rate" msgstr "Sélectionner un taux d'échantillonnage" -#: src/hal/utils/scope_horiz.c:504 hal/utils/scope_horiz.c:504 +#: src/hal/utils/scope_horiz.c:545 msgid "" "Select a thread name and multiplier then click 'OK'\n" "or\n" @@ -250,124 +1943,91 @@ msgstr "" "ou\n" "Cliquer 'Quitter' pour sortir de HALSCOPE" -#: src/hal/utils/scope_horiz.c:526 hal/utils/scope_horiz.c:526 +#: src/hal/utils/scope_horiz.c:567 msgid "Thread:" msgstr "Thread:" -#: src/hal/utils/scope_horiz.c:534 hal/utils/scope_horiz.c:534 +#: src/hal/utils/scope_horiz.c:575 msgid "Sample Period:" msgstr "Période d'échantillonnage:" -#: src/hal/utils/scope_horiz.c:542 hal/utils/scope_horiz.c:542 +#: src/hal/utils/scope_horiz.c:583 msgid "Sample Rate:" msgstr "Taux d'échantillonnage:" -#: src/hal/utils/scope_horiz.c:558 src/emc/usr_intf/touchy/mdi.py:78 -#: hal/utils/scope_horiz.c:558 emc/usr_intf/touchy/mdi.py:78 +#: src/hal/utils/scope_horiz.c:599 src/emc/usr_intf/touchy/mdi.py:79 +#: src/emc/usr_intf/gscreen/mdi.py:78 msgid "Thread" msgstr "Thread" -#: src/hal/utils/scope_horiz.c:559 hal/utils/scope_horiz.c:559 +#: src/hal/utils/scope_horiz.c:600 msgid "Period" msgstr "Période" -#: src/hal/utils/scope_horiz.c:619 hal/utils/scope_horiz.c:619 +#: src/hal/utils/scope_horiz.c:638 msgid "Multiplier:" msgstr "Multiplicateur:" -#: src/hal/utils/scope_horiz.c:636 hal/utils/scope_horiz.c:636 +#: src/hal/utils/scope_horiz.c:655 msgid "Record Length" msgstr "Durée d'enregistrement" -#: src/hal/utils/scope_horiz.c:639 hal/utils/scope_horiz.c:639 +#: src/hal/utils/scope_horiz.c:658 #, c-format msgid "%5d samples (1 channel)" msgstr "%5d échantillons (1 canal)" -#: src/hal/utils/scope_horiz.c:641 hal/utils/scope_horiz.c:641 +#: src/hal/utils/scope_horiz.c:660 #, c-format msgid "%5d samples (2 channels)" msgstr "%5d échantillons (2 canaux)" -#: src/hal/utils/scope_horiz.c:645 hal/utils/scope_horiz.c:645 +#: src/hal/utils/scope_horiz.c:664 #, c-format msgid "%5d samples (4 channels)" msgstr "%5d échantillons (4 canaux)" -#: src/hal/utils/scope_horiz.c:649 hal/utils/scope_horiz.c:649 +#: src/hal/utils/scope_horiz.c:668 #, c-format msgid "%5d samples (8 channels)" msgstr "%5d échantillons (8 canaux)" -#: src/hal/utils/scope_horiz.c:653 hal/utils/scope_horiz.c:653 +#: src/hal/utils/scope_horiz.c:672 #, c-format msgid "%5d samples (16 channels)" msgstr "%5d échantillons (16 canaux)" -#: src/hal/utils/scope_horiz.c:708 src/hal/utils/scope_horiz.c:754 -#: src/hal/utils/scope_horiz.c:966 src/hal/utils/scope_vert.c:761 -#: src/hal/utils/scope_vert.c:853 tcl/bin/emccalib.tcl:227 +#: src/hal/utils/scope_horiz.c:727 src/hal/utils/scope_horiz.c:773 +#: src/hal/utils/scope_horiz.c:985 src/hal/utils/scope_vert.c:771 +#: src/hal/utils/scope_vert.c:863 tcl/bin/emccalib.tcl:232 #: tcl/bin/genedit.tcl:180 tcl/bin/genedit.tcl:450 tcl/bin/halconfig.tcl:682 -#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:257 -#: tcl/bin/pickconfig.tcl:479 tcl/bin/pickconfig.tcl:506 tcl/mini.tcl:1456 +#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:387 +#: tcl/bin/pickconfig.tcl:749 tcl/bin/pickconfig.tcl:799 tcl/mini.tcl:1456 #: tcl/mini.tcl:2937 tcl/tklinuxcnc.tcl:160 tcl/tklinuxcnc.tcl:245 #: tcl/tklinuxcnc.tcl:419 tcl/tklinuxcnc.tcl:1338 tcl/tklinuxcnc.tcl:1407 #: tcl/tklinuxcnc.tcl:1438 tcl/tklinuxcnc.tcl:1469 tcl/tklinuxcnc.tcl:2017 #: tcl/tklinuxcnc.tcl:2036 tcl/tklinuxcnc.tcl:2055 tcl/tklinuxcnc.tcl:2102 -#: src/emc/usr_intf/axis/scripts/axis.py:1069 -#: src/emc/usr_intf/axis/scripts/axis.py:1129 -#: src/emc/usr_intf/axis/scripts/axis.py:1445 -#: src/emc/usr_intf/axis/scripts/axis.py:2464 -#: src/emc/usr_intf/axis/scripts/axis.py:3320 +#: src/emc/usr_intf/axis/scripts/axis.py:1106 +#: src/emc/usr_intf/axis/scripts/axis.py:1173 +#: src/emc/usr_intf/axis/scripts/axis.py:1508 +#: src/emc/usr_intf/axis/scripts/axis.py:2672 +#: src/emc/usr_intf/axis/scripts/axis.py:3599 #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:718 -#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1720 -#: share/axis/tcl/axis.tcl:1757 src/emc/usr_intf/axis/scripts/axis.py:1077 -#: src/emc/usr_intf/axis/scripts/axis.py:1141 -#: src/emc/usr_intf/axis/scripts/axis.py:1458 -#: src/emc/usr_intf/axis/scripts/axis.py:2477 -#: src/emc/usr_intf/axis/scripts/axis.py:3336 hal/utils/scope_horiz.c:708 -#: hal/utils/scope_horiz.c:754 hal/utils/scope_horiz.c:966 -#: hal/utils/scope_vert.c:761 hal/utils/scope_vert.c:853 -#: ../tcl/bin/emccalib.tcl:227 ../tcl/bin/genedit.tcl:180 -#: ../tcl/bin/genedit.tcl:450 ../tcl/bin/halconfig.tcl:682 -#: ../tcl/bin/halconfig.tcl:733 ../tcl/bin/pickconfig.tcl:257 -#: ../tcl/bin/pickconfig.tcl:479 ../tcl/bin/pickconfig.tcl:506 -#: ../tcl/mini.tcl:1456 ../tcl/mini.tcl:2937 ../tcl/tklinuxcnc.tcl:160 -#: ../tcl/tklinuxcnc.tcl:245 ../tcl/tklinuxcnc.tcl:419 -#: ../tcl/tklinuxcnc.tcl:1338 ../tcl/tklinuxcnc.tcl:1407 -#: ../tcl/tklinuxcnc.tcl:1438 ../tcl/tklinuxcnc.tcl:1469 -#: ../tcl/tklinuxcnc.tcl:2017 ../tcl/tklinuxcnc.tcl:2036 -#: ../tcl/tklinuxcnc.tcl:2055 ../tcl/tklinuxcnc.tcl:2102 -#: emc/usr_intf/axis/scripts/axis.py:1069 -#: emc/usr_intf/axis/scripts/axis.py:1129 -#: emc/usr_intf/axis/scripts/axis.py:1445 -#: emc/usr_intf/axis/scripts/axis.py:2464 -#: emc/usr_intf/axis/scripts/axis.py:3320 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:718 -#: ../lib/python/propertywindow.py:34 ../share/axis/tcl/axis.tcl:1720 -#: ../share/axis/tcl/axis.tcl:1757 tcl/bin/emccalib.tcl:226 -#: tcl/bin/pickconfig.tcl:483 tcl/bin/pickconfig.tcl:510 -#: src/emc/usr_intf/axis/scripts/axis.py:1073 -#: src/emc/usr_intf/axis/scripts/axis.py:1133 -#: src/emc/usr_intf/axis/scripts/axis.py:1449 -#: src/emc/usr_intf/axis/scripts/axis.py:2468 -#: src/emc/usr_intf/axis/scripts/axis.py:3324 +#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1828 +#: share/axis/tcl/axis.tcl:1865 msgid "OK" msgstr "OK" -#: src/hal/utils/scope_horiz.c:713 src/hal/utils/scope_horiz.c:754 -#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 -#: hal/utils/scope_horiz.c:713 hal/utils/scope_horiz.c:754 -#: ../tcl/bin/emccalib.tcl:91 ../tcl/bin/halconfig.tcl:103 -#: src/emc/usr_intf/tooledit.tcl:468 +#: src/hal/utils/scope_horiz.c:732 src/hal/utils/scope_horiz.c:773 +#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 tcl/tooledit.tcl:468 msgid "Quit" msgstr "Quitter" -#: src/hal/utils/scope_horiz.c:745 hal/utils/scope_horiz.c:745 +#: src/hal/utils/scope_horiz.c:764 msgid "Realtime thread(s) not running" msgstr "Thread temps réel non lancé" -#: src/hal/utils/scope_horiz.c:746 hal/utils/scope_horiz.c:746 +#: src/hal/utils/scope_horiz.c:765 msgid "" "HALSCOPE uses code in a realtime HAL thread to sample\n" "signals for display. The HAL thread(s) are not running.\n" @@ -391,15 +2051,15 @@ msgstr "" "ou\n" "Cliquer 'Quitter' pour sortir de HALSCOPE" -#: src/hal/utils/scope_horiz.c:779 hal/utils/scope_horiz.c:779 +#: src/hal/utils/scope_horiz.c:798 msgid "Pick log file to write to:" msgstr "Choisir le fichier dans lequel écrire:" -#: src/hal/utils/scope_horiz.c:962 hal/utils/scope_horiz.c:962 +#: src/hal/utils/scope_horiz.c:981 msgid "Not enough channels" msgstr "Pas assez de canaux" -#: src/hal/utils/scope_horiz.c:963 hal/utils/scope_horiz.c:963 +#: src/hal/utils/scope_horiz.c:982 msgid "" "This record length cannot handle the channels\n" "that are currently enabled. Pick a shorter\n" @@ -409,7 +2069,7 @@ msgstr "" "contenir tous les canaux validés. Réduire\n" "l'enregistrement supportera plus de canaux." -#: src/hal/utils/scope_horiz.c:1051 hal/utils/scope_horiz.c:1051 +#: src/hal/utils/scope_horiz.c:1070 #, c-format msgid "" "%s\n" @@ -418,7 +2078,7 @@ msgstr "" "%s\n" "par div" -#: src/hal/utils/scope_horiz.c:1066 hal/utils/scope_horiz.c:1066 +#: src/hal/utils/scope_horiz.c:1085 #, c-format msgid "" "%s samples\n" @@ -427,61 +2087,45 @@ msgstr "" "%s échantil.\n" "à %s" -#: src/hal/utils/scope_horiz.c:1170 hal/utils/scope_horiz.c:1170 +#: src/hal/utils/scope_horiz.c:1189 msgid "nSec" msgstr "ns" -#: src/hal/utils/scope_horiz.c:1173 hal/utils/scope_horiz.c:1173 +#: src/hal/utils/scope_horiz.c:1192 msgid "uSec" msgstr "us" -#: src/hal/utils/scope_horiz.c:1177 hal/utils/scope_horiz.c:1177 +#: src/hal/utils/scope_horiz.c:1196 msgid "mSec" msgstr "ms" -#: src/hal/utils/scope_horiz.c:1181 -#: src/emc/usr_intf/pncconf/pncconf.glade:1953 -#: src/emc/usr_intf/pncconf/pncconf.glade:2825 -#: src/emc/usr_intf/pncconf/pncconf.glade:3706 -#: src/emc/usr_intf/pncconf/pncconf.glade:4587 hal/utils/scope_horiz.c:1181 -#: emc/usr_intf/pncconf/pncconf.glade:1953 -#: emc/usr_intf/pncconf/pncconf.glade:2825 -#: emc/usr_intf/pncconf/pncconf.glade:3706 -#: emc/usr_intf/pncconf/pncconf.glade:4587 -#: src/emc/usr_intf/pncconf/pncconf.glade:1961 -#: src/emc/usr_intf/pncconf/pncconf.glade:2833 -#: src/emc/usr_intf/pncconf/pncconf.glade:3714 -#: src/emc/usr_intf/pncconf/pncconf.glade:4595 +#: src/hal/utils/scope_horiz.c:1200 src/emc/usr_intf/pncconf/pncconf.glade:2635 +#: src/emc/usr_intf/pncconf/pncconf.glade:3533 +#: src/emc/usr_intf/pncconf/pncconf.glade:4414 +#: src/emc/usr_intf/pncconf/pncconf.glade:5295 msgid "Sec" msgstr "s" -#: src/hal/utils/scope_horiz.c:1198 -#: src/emc/usr_intf/stepconf/stepconf.glade:3664 -#: src/emc/usr_intf/stepconf/stepconf.glade:4040 -#: src/emc/usr_intf/pncconf/pncconf.glade:8268 -#: src/emc/usr_intf/pncconf/pncconf.glade:8281 -#: src/emc/usr_intf/pncconf/pncconf.glade:8458 hal/utils/scope_horiz.c:1198 -#: emc/usr_intf/stepconf/stepconf.glade:3664 -#: emc/usr_intf/stepconf/stepconf.glade:4040 -#: emc/usr_intf/pncconf/pncconf.glade:8268 -#: emc/usr_intf/pncconf/pncconf.glade:8281 -#: emc/usr_intf/pncconf/pncconf.glade:8458 -#: src/emc/usr_intf/pncconf/pncconf.glade:8292 -#: src/emc/usr_intf/pncconf/pncconf.glade:8305 -#: src/emc/usr_intf/pncconf/pncconf.glade:8482 +#: src/hal/utils/scope_horiz.c:1217 src/emc/usr_intf/stepconf/spindle.glade:301 +#: src/emc/usr_intf/stepconf/axisx.glade:693 +#: src/emc/usr_intf/stepconf/axisy.glade:679 +#: src/emc/usr_intf/stepconf/axisz.glade:679 +#: src/emc/usr_intf/stepconf/axisa.glade:693 +#: src/emc/usr_intf/pncconf/pncconf.glade:8024 +#: src/emc/usr_intf/pncconf/pncconf.glade:8201 +#: src/emc/usr_intf/pncconf/pncconf.glade:8213 msgid "Hz" msgstr "Hz" -#: src/hal/utils/scope_horiz.c:1201 hal/utils/scope_horiz.c:1201 +#: src/hal/utils/scope_horiz.c:1220 msgid "KHz" msgstr "kHz" -#: src/hal/utils/scope_horiz.c:1205 hal/utils/scope_horiz.c:1205 +#: src/hal/utils/scope_horiz.c:1224 msgid "Mhz" msgstr "MHz" -#: src/hal/utils/scope_vert.c:403 src/hal/utils/scope_vert.c:1258 -#: hal/utils/scope_vert.c:403 hal/utils/scope_vert.c:1258 +#: src/hal/utils/scope_vert.c:413 src/hal/utils/scope_vert.c:1303 #, c-format msgid "" "Offset\n" @@ -490,31 +2134,28 @@ msgstr "" "Offset\n" "%s" -#: src/hal/utils/scope_vert.c:618 hal/utils/scope_vert.c:618 +#: src/hal/utils/scope_vert.c:628 msgid "Gain" msgstr "Gain" -#: src/hal/utils/scope_vert.c:630 src/hal/utils/scope_trig.c:252 -#: hal/utils/scope_vert.c:630 hal/utils/scope_trig.c:252 +#: src/hal/utils/scope_vert.c:640 src/hal/utils/scope_trig.c:272 msgid "Pos" msgstr "Pos" -#: src/hal/utils/scope_vert.c:644 tcl/ngcgui_ttt.tcl:214 -#: src/emc/usr_intf/pncconf/pncconf.glade:57147 hal/utils/scope_vert.c:644 -#: ../tcl/ngcgui_ttt.tcl:214 emc/usr_intf/pncconf/pncconf.glade:57147 -#: src/emc/usr_intf/pncconf/pncconf.glade:64076 +#: src/hal/utils/scope_vert.c:654 tcl/ngcgui_ttt.tcl:214 +#: src/emc/usr_intf/pncconf/pncconf.glade:64273 msgid "Scale" msgstr "Échelle" -#: src/hal/utils/scope_vert.c:657 hal/utils/scope_vert.c:657 +#: src/hal/utils/scope_vert.c:667 msgid "Chan Off" msgstr "Canal Off" -#: src/hal/utils/scope_vert.c:713 hal/utils/scope_vert.c:713 +#: src/hal/utils/scope_vert.c:723 msgid "Set Offset" msgstr "Ajuster l'offset" -#: src/hal/utils/scope_vert.c:714 hal/utils/scope_vert.c:714 +#: src/hal/utils/scope_vert.c:724 #, c-format msgid "" "Set the vertical offset\n" @@ -523,49 +2164,33 @@ msgstr "" "Ajuster l'offset vertical\n" "pour le canal %d." -#: src/hal/utils/scope_vert.c:734 hal/utils/scope_vert.c:734 +#: src/hal/utils/scope_vert.c:744 msgid "AC Coupled" msgstr "AC Couplé" -#: src/hal/utils/scope_vert.c:769 src/hal/utils/scope_vert.c:1171 -#: src/hal/utils/scope_trig.c:367 tcl/bin/emccalib.tcl:229 +#: src/hal/utils/scope_vert.c:779 src/hal/utils/scope_vert.c:1215 +#: src/hal/utils/scope_trig.c:387 tcl/bin/emccalib.tcl:234 #: tcl/bin/genedit.tcl:294 tcl/bin/halconfig.tcl:103 tcl/bin/halconfig.tcl:684 -#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:260 -#: tcl/bin/pickconfig.tcl:369 tcl/mini.tcl:1457 tcl/mini.tcl:2938 +#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:390 +#: tcl/bin/pickconfig.tcl:567 tcl/mini.tcl:1457 tcl/mini.tcl:2938 #: tcl/mini.tcl:3110 tcl/tklinuxcnc.tcl:162 tcl/tklinuxcnc.tcl:213 #: tcl/tklinuxcnc.tcl:420 tcl/tklinuxcnc.tcl:1339 tcl/tklinuxcnc.tcl:1408 #: tcl/tklinuxcnc.tcl:1439 tcl/tklinuxcnc.tcl:1470 tcl/tklinuxcnc.tcl:2103 -#: src/emc/usr_intf/axis/scripts/axis.py:1391 -#: src/emc/usr_intf/axis/scripts/axis.py:1446 -#: src/emc/usr_intf/axis/scripts/axis.py:1633 +#: src/emc/usr_intf/axis/scripts/axis.py:1453 +#: src/emc/usr_intf/axis/scripts/axis.py:1509 +#: src/emc/usr_intf/axis/scripts/axis.py:1699 +#: src/emc/usr_intf/axis/scripts/axis.py:2108 #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:720 -#: src/emc/usr_intf/axis/scripts/axis.py:1404 -#: src/emc/usr_intf/axis/scripts/axis.py:1459 -#: src/emc/usr_intf/axis/scripts/axis.py:1646 hal/utils/scope_vert.c:769 -#: hal/utils/scope_vert.c:1171 hal/utils/scope_trig.c:367 -#: ../tcl/bin/emccalib.tcl:229 ../tcl/bin/genedit.tcl:294 -#: ../tcl/bin/halconfig.tcl:103 ../tcl/bin/halconfig.tcl:684 -#: ../tcl/bin/halconfig.tcl:735 ../tcl/bin/pickconfig.tcl:260 -#: ../tcl/bin/pickconfig.tcl:369 ../tcl/mini.tcl:1457 ../tcl/mini.tcl:2938 -#: ../tcl/mini.tcl:3110 ../tcl/tklinuxcnc.tcl:162 ../tcl/tklinuxcnc.tcl:213 -#: ../tcl/tklinuxcnc.tcl:420 ../tcl/tklinuxcnc.tcl:1339 -#: ../tcl/tklinuxcnc.tcl:1408 ../tcl/tklinuxcnc.tcl:1439 -#: ../tcl/tklinuxcnc.tcl:1470 ../tcl/tklinuxcnc.tcl:2103 -#: emc/usr_intf/axis/scripts/axis.py:1391 -#: emc/usr_intf/axis/scripts/axis.py:1446 -#: emc/usr_intf/axis/scripts/axis.py:1633 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:720 tcl/bin/emccalib.tcl:228 -#: src/emc/usr_intf/axis/scripts/axis.py:1395 -#: src/emc/usr_intf/axis/scripts/axis.py:1450 -#: src/emc/usr_intf/axis/scripts/axis.py:1637 +#: src/emc/usr_intf/stepconf/main_page.glade:467 +#: src/emc/usr_intf/gscreen/gscreen.glade:3986 msgid "Cancel" msgstr "Annuler" -#: src/hal/utils/scope_vert.c:849 hal/utils/scope_vert.c:849 +#: src/hal/utils/scope_vert.c:859 msgid "Too many channels" msgstr "Trop de canaux" -#: src/hal/utils/scope_vert.c:850 hal/utils/scope_vert.c:850 +#: src/hal/utils/scope_vert.c:860 msgid "" "You cannot add another channel.\n" "\n" @@ -577,11 +2202,11 @@ msgstr "" "Soit désactiver un ou plusieurs canaux, soit\n" "raccourcir la durée d'enregistrement" -#: src/hal/utils/scope_vert.c:1026 hal/utils/scope_vert.c:1026 +#: src/hal/utils/scope_vert.c:1074 msgid "Select Channel Source" msgstr "Sélectionner le canal source" -#: src/hal/utils/scope_vert.c:1027 hal/utils/scope_vert.c:1027 +#: src/hal/utils/scope_vert.c:1075 #, c-format msgid "" "Select a pin, signal, or parameter\n" @@ -590,31 +2215,29 @@ msgstr "" "Sélectionner la pin, signal, ou paramètre\n" "qui sera la source du canal %d." -#: src/hal/utils/scope_vert.c:1059 hal/utils/scope_vert.c:1059 +#: src/hal/utils/scope_vert.c:1107 msgid "Pins" msgstr "Pins" -#: src/hal/utils/scope_vert.c:1060 hal/utils/scope_vert.c:1060 +#: src/hal/utils/scope_vert.c:1108 msgid "Signals" msgstr "Signaux" -#: src/hal/utils/scope_vert.c:1061 hal/utils/scope_vert.c:1061 +#: src/hal/utils/scope_vert.c:1109 msgid "Parameters" msgstr "Paramètres" -#: src/hal/utils/scope_trig.c:110 hal/utils/scope_trig.c:110 +#: src/hal/utils/scope_trig.c:110 #, c-format msgid "Falling" msgstr "Descendant" -#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:275 -#: hal/utils/scope_trig.c:112 hal/utils/scope_trig.c:275 +#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:295 #, c-format msgid "Rising" msgstr "Montant" -#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:283 -#: hal/utils/scope_trig.c:119 hal/utils/scope_trig.c:283 +#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:303 msgid "" "Source\n" "None" @@ -622,7 +2245,7 @@ msgstr "" "Source\n" "Sans" -#: src/hal/utils/scope_trig.c:124 hal/utils/scope_trig.c:124 +#: src/hal/utils/scope_trig.c:124 #, c-format msgid "" "Source\n" @@ -631,42 +2254,40 @@ msgstr "" "Source\n" "Canal %2d" -#: src/hal/utils/scope_trig.c:199 tcl/tklinuxcnc.tcl:827 -#: src/emc/usr_intf/touchy/touchy.glade:2469 hal/utils/scope_trig.c:199 -#: ../tcl/tklinuxcnc.tcl:827 emc/usr_intf/touchy/touchy.glade:2469 +#: src/hal/utils/scope_trig.c:219 tcl/tklinuxcnc.tcl:827 +#: src/emc/usr_intf/touchy/touchy.glade:2469 msgid "Auto" msgstr "Auto" -#: src/hal/utils/scope_trig.c:201 hal/utils/scope_trig.c:201 +#: src/hal/utils/scope_trig.c:221 msgid "Force" msgstr "Forcer" -#: src/hal/utils/scope_trig.c:235 src/hal/utils/scope_trig.c:269 -#: hal/utils/scope_trig.c:235 hal/utils/scope_trig.c:269 +#: src/hal/utils/scope_trig.c:255 src/hal/utils/scope_trig.c:289 msgid "Level" msgstr "Niveau" -#: src/hal/utils/scope_trig.c:303 hal/utils/scope_trig.c:303 +#: src/hal/utils/scope_trig.c:323 msgid "Trigger Source" msgstr "Trigger Source" -#: src/hal/utils/scope_trig.c:304 hal/utils/scope_trig.c:304 +#: src/hal/utils/scope_trig.c:324 msgid "Select a channel to use for triggering." msgstr "Sélectionner le canal de déclenchement." -#: src/hal/utils/scope_trig.c:327 hal/utils/scope_trig.c:327 +#: src/hal/utils/scope_trig.c:347 msgid "Chan" msgstr "Canal" -#: src/hal/utils/scope_trig.c:328 hal/utils/scope_trig.c:328 +#: src/hal/utils/scope_trig.c:348 msgid "Source" msgstr "Source" -#: src/emc/motion/control.c:261 emc/motion/control.c:261 +#: src/emc/motion/control.c:270 msgid "Unexpected realtime delay: check dmesg for details." msgstr "Délai temps réel inattendu: plus de détails avec dmesg." -#: src/emc/motion/control.c:263 emc/motion/control.c:263 +#: src/emc/motion/control.c:272 #, c-format msgid "" "\n" @@ -679,7 +2300,7 @@ msgstr "" "%ld, %ld, %ld, %ld, et %ld\n" "dépassements de temps entre les appels au contrôleur de mouvement.\n" -#: src/emc/motion/control.c:268 emc/motion/control.c:268 +#: src/emc/motion/control.c:277 #, c-format msgid "" "This time, there were %ld which is so anomalously\n" @@ -695,355 +2316,359 @@ msgstr "" " ce message n'apparaitra plus.\n" "\n" -#: src/emc/motion/control.c:384 emc/motion/control.c:384 +#: src/emc/motion/control.c:394 msgid "G38.4 move finished without breaking contact." msgstr "mouvement G38.4 terminé sans quitter le contact." -#: src/emc/motion/control.c:387 emc/motion/control.c:387 +#: src/emc/motion/control.c:397 msgid "G38.2 move finished without making contact." msgstr "mouvement G38.2 terminé sans obtenir le contact." -#: src/emc/motion/control.c:401 emc/motion/control.c:401 +#: src/emc/motion/control.c:412 msgid "Probe tripped during non-probe MDI command." msgstr "" "La sonde à touché pendant une commande MDI ne faisant pas appel à elle." -#: src/emc/motion/control.c:429 emc/motion/control.c:429 +#: src/emc/motion/control.c:440 msgid "Probe tripped during homing motion." msgstr "La sonde à touché pendant un mouvement de prise d'origine." -#: src/emc/motion/control.c:433 emc/motion/control.c:433 +#: src/emc/motion/control.c:444 msgid "Probe tripped during a jog." msgstr "La sonde à touché pendant un mouvement à la manivelle." -#: src/emc/motion/control.c:697 src/emc/motion/control.c:718 -#: emc/motion/control.c:697 +#: src/emc/motion/control.c:622 +#, fuzzy +msgid "can't add coordinated return move" +msgstr "ne peut pas ajouter de mouvement circulaire" + +#: src/emc/motion/control.c:663 +#, fuzzy +msgid "can't add linear coordinated jog move" +msgstr "ne peut pas ajouter de mouvement linéaire" + +#: src/emc/motion/control.c:817 +#, c-format +msgid "fault %d during orient in progress" +msgstr "Défaut %d pendant une orientation" + +#: src/emc/motion/control.c:957 msgid "motion stopped by enable input" msgstr "mouvement stoppé par enable input" -#: src/emc/motion/control.c:720 src/emc/motion/control.c:741 -#: emc/motion/control.c:720 +#: src/emc/motion/control.c:980 #, c-format msgid "joint %d on limit switch error" msgstr "jointure %d en erreur sur un contact de limite" -#: src/emc/motion/control.c:732 src/emc/motion/control.c:753 -#: emc/motion/control.c:732 +#: src/emc/motion/control.c:992 #, c-format msgid "joint %d amplifier fault" msgstr "amplificateur jointure %d en défaut" -#: src/emc/motion/control.c:741 src/emc/motion/control.c:762 -#: emc/motion/control.c:741 +#: src/emc/motion/control.c:1001 #, c-format msgid "joint %d following error" msgstr "Erreur de suivi jointure %d:" -#: src/emc/motion/control.c:1423 src/emc/motion/control.c:1444 -#: emc/motion/control.c:1423 +#: src/emc/motion/control.c:1687 #, c-format msgid "Exceeded positive soft limit on joint %d" msgstr "La jointure %d à dépassé la limite logicielle positive" -#: src/emc/motion/control.c:1428 src/emc/motion/control.c:1449 -#: emc/motion/control.c:1428 +#: src/emc/motion/control.c:1692 #, c-format msgid "Exceeded negative soft limit on joint %d" msgstr "La jointure %d à dépassé la limite logicielle négative" -#: src/emc/motion/command.c:159 emc/motion/command.c:159 +#: src/emc/motion/command.c:163 #, c-format msgid "Can't jog invalid joint number %d." msgstr "numéro d'articulation %d invalide, jog impossible." -#: src/emc/motion/command.c:163 emc/motion/command.c:163 +#: src/emc/motion/command.c:167 #, c-format msgid "Can't jog joint %d further past max hard limit." msgstr "" "L'articulation %d à dépassé la limite physique maximale, jog impossible." -#: src/emc/motion/command.c:168 emc/motion/command.c:168 +#: src/emc/motion/command.c:172 #, c-format msgid "Can't jog joint %d further past min hard limit." msgstr "" "L'articulation %d à dépassé la limite physique minimale, jog impossible." -#: src/emc/motion/command.c:174 emc/motion/command.c:174 +#: src/emc/motion/command.c:178 #, c-format msgid "Can't jog joint %d further past max soft limit." msgstr "" "L'articulation %d à dépassé la limite logicielle maximale, jog impossible." -#: src/emc/motion/command.c:179 emc/motion/command.c:179 +#: src/emc/motion/command.c:183 #, c-format msgid "Can't jog joint %d further past min soft limit." msgstr "" "L'articulation %d à dépassé la limite logicielle minimale, jog impossible." -#: src/emc/motion/command.c:237 emc/motion/command.c:237 +#: src/emc/motion/command.c:243 #, c-format msgid "%s move on line %d would exceed joint %d's positive limit" msgstr "" "le mouvement %s de la ligne %d va dépasser la limite positive de la jointure " "%d's" -#: src/emc/motion/command.c:240 emc/motion/command.c:240 -#, c-format -msgid "%s move in MDI would exceed joint %d's positive limit" -msgstr "" -"le mouvement %s du MDI va dépasser la limite positive de la jointure %d's" - -#: src/emc/motion/command.c:247 emc/motion/command.c:247 +#: src/emc/motion/command.c:250 #, c-format msgid "%s move on line %d would exceed joint %d's negative limit" msgstr "" "le mouvement %s de la ligne %d va dépasser la limite négative de la jointure " "%d's" -#: src/emc/motion/command.c:250 emc/motion/command.c:250 -#, c-format -msgid "%s move in MDI would exceed joint %d's negative limit" -msgstr "" -"le mouvement %s du MDI va dépasser la limite négative de la jointure %d's" - -#: src/emc/motion/command.c:500 emc/motion/command.c:500 +#: src/emc/motion/command.c:535 msgid "all joints must be homed before going into coordinated mode" msgstr "" "La prise d'origine de toutes les jointures doit être faite avant d'aller en " "mode coordonné" -#: src/emc/motion/command.c:521 emc/motion/command.c:521 +#: src/emc/motion/command.c:556 msgid "all joints must be homed before going into teleop mode" msgstr "" "La prise d'origine de toutes les jointures doit être faite avant d'aller en " "mode teleop" -#: src/emc/motion/command.c:675 src/emc/motion/command.c:741 -#: src/emc/motion/command.c:814 emc/motion/command.c:675 -#: emc/motion/command.c:741 emc/motion/command.c:814 +#: src/emc/motion/command.c:710 src/emc/motion/command.c:776 +#: src/emc/motion/command.c:849 msgid "Can't jog joint in coordinated mode." msgstr "Jog d'articulation impossible en mode coordonné." -#: src/emc/motion/command.c:680 src/emc/motion/command.c:746 -#: src/emc/motion/command.c:819 emc/motion/command.c:680 -#: emc/motion/command.c:746 emc/motion/command.c:819 +#: src/emc/motion/command.c:715 src/emc/motion/command.c:781 +#: src/emc/motion/command.c:854 msgid "Can't jog joint when not enabled." msgstr "Jog d'articulation impossible quand elle n'est pas activée." -#: src/emc/motion/command.c:685 src/emc/motion/command.c:824 -#: emc/motion/command.c:685 emc/motion/command.c:824 +#: src/emc/motion/command.c:720 src/emc/motion/command.c:859 msgid "Can't jog any joints while homing." msgstr "Jog d'articulations impossible avant la prise d'origine." -#: src/emc/motion/command.c:751 emc/motion/command.c:751 +#: src/emc/motion/command.c:786 msgid "Can't jog any joint while homing." msgstr "Jog d'articulation impossible avant la prise d'origine." -#: src/emc/motion/command.c:881 emc/motion/command.c:881 +#: src/emc/motion/command.c:918 msgid "need to be enabled, in coord mode for linear move" msgstr "doit être activé en mode coordonné pour mouvement linéaire" -#: src/emc/motion/command.c:891 emc/motion/command.c:891 +#: src/emc/motion/command.c:928 msgid "can't do linear move with limits exceeded" msgstr "mouvement linéaire impossible avec des limites dépassées" -#: src/emc/motion/command.c:910 emc/motion/command.c:910 -msgid "can't add linear move" -msgstr "ne peut pas ajouter de mouvement linéaire" +#: src/emc/motion/command.c:954 +#, fuzzy, c-format +msgid "can't add linear move at line %d, error code %d" +msgstr "mouvement linéaire impossible avec des limites dépassées" -#: src/emc/motion/command.c:930 emc/motion/command.c:930 +#: src/emc/motion/command.c:982 msgid "need to be enabled, in coord mode for circular move" msgstr "doit être activé en mode coordonné pour un mouvement circulaire" -#: src/emc/motion/command.c:940 emc/motion/command.c:940 +#: src/emc/motion/command.c:993 msgid "can't do circular move with limits exceeded" msgstr "mouvement circulaire impossible avec des limites dépassées" -#: src/emc/motion/command.c:958 emc/motion/command.c:958 -msgid "can't add circular move" -msgstr "ne peut pas ajouter de mouvement circulaire" +#: src/emc/motion/command.c:1015 +#, fuzzy, c-format +msgid "can't add circular move at line %d, error code %d" +msgstr "mouvement circulaire impossible avec des limites dépassées" + +#: src/emc/motion/command.c:1114 +#, fuzzy +msgid "MOTION: can't STEP while jogging" +msgstr "MOTION: can't STEP while already executing" -#: src/emc/motion/command.c:1048 emc/motion/command.c:1048 -msgid "MOTION: can't STEP while already executing" +#: src/emc/motion/command.c:1117 +#, fuzzy +msgid "MOTION: can't STEP while in return move" +msgstr "MOTION: can't STEP while already executing" + +#: src/emc/motion/command.c:1127 +#, fuzzy, c-format +msgid "MOTION: STEP while in state %d" msgstr "MOTION: can't STEP while already executing" -#: src/emc/motion/command.c:1140 emc/motion/command.c:1140 +#: src/emc/motion/command.c:1229 msgid "can't enable motion, enable input is false" msgstr "ne peut pas activer le mouvement, l'entrée activation est false" -#: src/emc/motion/command.c:1213 emc/motion/command.c:1213 +#: src/emc/motion/command.c:1302 msgid "must be in joint mode to home" msgstr "doit être en mode jointure pour la prise d'origine" -#: src/emc/motion/command.c:1224 src/emc/motion/command.c:1235 -#: emc/motion/command.c:1224 emc/motion/command.c:1235 +#: src/emc/motion/command.c:1313 src/emc/motion/command.c:1324 msgid "homing sequence already in progress" msgstr "séquence de prise d'origine déjà en cours" -#: src/emc/motion/command.c:1233 emc/motion/command.c:1233 +#: src/emc/motion/command.c:1322 msgid "homing already in progress" msgstr "prise d'origine déjà en cours" -#: src/emc/motion/command.c:1263 emc/motion/command.c:1263 +#: src/emc/motion/command.c:1352 msgid "must be in joint mode or disabled to unhome" msgstr "doit être en mode jointure ou désactivé pour effacer l'origine" -#: src/emc/motion/command.c:1275 src/emc/motion/command.c:1298 -#: emc/motion/command.c:1275 emc/motion/command.c:1298 +#: src/emc/motion/command.c:1364 src/emc/motion/command.c:1387 #, c-format msgid "Cannot unhome while homing, joint %d" msgstr "impossible d'effacer l'origine pendant la prise d'origine, jointure %d" -#: src/emc/motion/command.c:1279 src/emc/motion/command.c:1302 -#: emc/motion/command.c:1279 emc/motion/command.c:1302 +#: src/emc/motion/command.c:1368 src/emc/motion/command.c:1391 #, c-format msgid "Cannot unhome while moving, joint %d" msgstr "impossible d'effacer l'origine pendant un mouvement, jointure %d" -#: src/emc/motion/command.c:1307 emc/motion/command.c:1307 +#: src/emc/motion/command.c:1396 #, c-format msgid "Cannot unhome inactive joint %d" msgstr "impossible d'effacer l'origine d'une jointure inactive, jointure %d" -#: src/emc/motion/command.c:1311 emc/motion/command.c:1311 +#: src/emc/motion/command.c:1400 #, c-format msgid "Cannot unhome invalid joint %d (max %d)" msgstr "impossible d'effacer l'origine de la jointure invalide %d (max %d)" -#: src/emc/motion/command.c:1338 emc/motion/command.c:1338 +#: src/emc/motion/command.c:1427 msgid "need to be enabled, in coord mode for probe move" msgstr "doit être activé, en mode coordonné pour un mouvement avec sonde" -#: src/emc/motion/command.c:1348 emc/motion/command.c:1348 +#: src/emc/motion/command.c:1437 msgid "can't do probe move with limits exceeded" msgstr "mouvement avec sonde impossible avec des limites dépassées" -#: src/emc/motion/command.c:1362 emc/motion/command.c:1362 +#: src/emc/motion/command.c:1451 msgid "Probe is already clear when starting G38.4 or G38.5 move" msgstr "la sonde est déjà clair au début du mouvement G38.4 ou G38.5" -#: src/emc/motion/command.c:1364 emc/motion/command.c:1364 +#: src/emc/motion/command.c:1453 msgid "Probe is already tripped when starting G38.2 or G38.3 move" msgstr "la sonde est enfoncée au début du mouvement G38.2 ou G38.3" -#: src/emc/motion/command.c:1376 emc/motion/command.c:1376 +#: src/emc/motion/command.c:1473 msgid "can't add probe move" msgstr "ne peut pas ajouter de mouvement avec sonde" -#: src/emc/motion/command.c:1400 emc/motion/command.c:1400 +#: src/emc/motion/command.c:1498 msgid "need to be enabled, in coord mode for rigid tap move" msgstr "" "doit être activé, en mode coordonné pour un mouvement de taraudage rigide" -#: src/emc/motion/command.c:1410 emc/motion/command.c:1410 +#: src/emc/motion/command.c:1509 msgid "can't do rigid tap move with limits exceeded" msgstr "" "ne peut pas lancer un mouvement de taraudage rigide avec des limites " "dépassées" -#: src/emc/motion/command.c:1421 emc/motion/command.c:1421 +#: src/emc/motion/command.c:1526 msgid "can't add rigid tap move" msgstr "ne peut pas ajouter de mouvement de taraudage rigide" -#: src/emc/motion/command.c:1435 emc/motion/command.c:1435 +#: src/emc/motion/command.c:1541 msgid "need to be enabled, in teleop mode for teleop move" msgstr "doit être activé, en mode teleop pour un mouvement teleop" -#: src/emc/motion/command.c:1556 src/emc/motion/command.c:1605 -#: emc/motion/command.c:1556 src/emc/motion/command.c:1550 +#: src/emc/motion/command.c:1710 #, c-format msgid "joint %d: too many compensation entries" msgstr "jointure %d: trop d'entrées de compensation" -#: src/emc/motion/command.c:1562 src/emc/motion/command.c:1611 -#: emc/motion/command.c:1562 src/emc/motion/command.c:1556 +#: src/emc/motion/command.c:1716 #, c-format msgid "joint %d: compensation values must increase" msgstr "jointure %d: les valeurs de compensations doivent augmenter" -#: src/emc/motion/command.c:1591 src/emc/motion/command.c:1640 -#: emc/motion/command.c:1591 src/emc/motion/command.c:1585 +#: src/emc/motion/command.c:1745 #, c-format msgid "unrecognized command %d" msgstr "commande %d inconnue" -#: src/emc/motion/motion.c:185 emc/motion/motion.c:184 +#: src/emc/motion/motion.c:212 msgid "MOTION: hal_init() failed\n" msgstr "MOTION: défaut hal_init()\n" -#: src/emc/motion/motion.c:190 emc/motion/motion.c:189 +#: src/emc/motion/motion.c:217 #, c-format msgid "MOTION: num_joints is %d, must be between 1 and %d\n" msgstr "MOTION: num_joints est %d, doit être compris entre 1 et %d\n" -#: src/emc/motion/motion.c:197 emc/motion/motion.c:196 +#: src/emc/motion/motion.c:224 #, c-format msgid "MOTION: num_dio is %d, must be between 1 and %d\n" msgstr "MOTION: num_dio est %d, doit être compris entre 1 et %d\n" -#: src/emc/motion/motion.c:204 emc/motion/motion.c:203 +#: src/emc/motion/motion.c:231 #, c-format msgid "MOTION: num_aio is %d, must be between 1 and %d\n" msgstr "MOTION: num_aio est %d, doit être compris entre 1 et %d\n" -#: src/emc/motion/motion.c:212 emc/motion/motion.c:211 +#: src/emc/motion/motion.c:239 msgid "MOTION: init_hal_io() failed\n" msgstr "MOTION: défaut init_hal_io()\n" -#: src/emc/motion/motion.c:221 emc/motion/motion.c:220 +#: src/emc/motion/motion.c:248 msgid "MOTION: init_comm_buffers() failed\n" msgstr "MOTION: défaut init_comm_buffers()\n" -#: src/emc/motion/motion.c:229 emc/motion/motion.c:228 +#: src/emc/motion/motion.c:256 msgid "MOTION: init_threads() failed\n" msgstr "MOTION: défaut init_threads()\n" -#: src/emc/motion/motion.c:254 emc/motion/motion.c:253 +#: src/emc/motion/motion.c:281 #, c-format msgid "MOTION: hal_stop_threads() failed, returned %d\n" msgstr "MOTION: défaut hal_stop_threads(), a retourné %d\n" -#: src/emc/motion/motion.c:260 emc/motion/motion.c:259 +#: src/emc/motion/motion.c:294 #, c-format msgid "MOTION: rtapi_shmem_delete() failed, returned %d\n" msgstr "MOTION: défaut rtapi_shmem_delete(), a retourné %d\n" -#: src/emc/motion/motion.c:266 emc/motion/motion.c:265 +#: src/emc/motion/motion.c:300 #, c-format msgid "MOTION: hal_exit() failed, returned %d\n" msgstr "MOTION:défaut hal_exit(), a retourné %d\n" -#: src/emc/motion/motion.c:289 emc/motion/motion.c:288 +#: src/emc/motion/motion.c:323 msgid "MOTION: emcmot_hal_data malloc failed\n" msgstr "MOTION: défaut emcmot_hal_data malloc\n" -#: src/emc/motion/motion.c:585 src/emc/motion/motion.c:597 -#: emc/motion/motion.c:584 +#: src/emc/motion/motion.c:331 +#, fuzzy +msgid "MOTION: joints malloc failed\n" +msgstr "MOTION: défaut init_hal_io()\n" + +#: src/emc/motion/motion.c:695 #, c-format msgid "MOTION: joint %d pin/param export failed\n" msgstr "MOTION: défaut joint %d pin/param export\n" #: src/emc/motion/homing.c:80 src/emc/motion/homing.c:748 -#: emc/motion/homing.c:80 emc/motion/homing.c:748 #, c-format msgid "hit limit in home state %d" msgstr "limite atteinte en recherche d'origine %d" -#: src/emc/motion/homing.c:90 emc/motion/homing.c:90 +#: src/emc/motion/homing.c:90 #, c-format msgid "end of move in home state %d" msgstr "fin de mouvement en recherche d'origine %d" -#: src/emc/motion/homing.c:185 emc/motion/homing.c:185 +#: src/emc/motion/homing.c:185 #, c-format msgid "unknown state '%d' during homing sequence" msgstr "état '%d' inconnu durant une séquence de prise d'origine" -#: src/emc/motion/homing.c:246 emc/motion/homing.c:246 +#: src/emc/motion/homing.c:246 msgid "Cannot home while shared home switch is closed" msgstr "ne peut rechercher l'origine tant que le contact partagé est attaqué" -#: src/emc/motion/homing.c:290 emc/motion/homing.c:290 +#: src/emc/motion/homing.c:290 msgid "" "invalid homing config: non-zero LATCH_VEL needs either SEARCH_VEL or " "USE_INDEX" @@ -1051,91 +2676,76 @@ msgstr "" "configuration des origines invalide: non-zero LATCH_VEL a besoin de " "SEARCH_VEL ou de USE_INDEX" -#: src/emc/motion/homing.c:299 emc/motion/homing.c:299 +#: src/emc/motion/homing.c:299 msgid "invalid homing config: non-zero SEARCH_VEL needs LATCH_VEL" msgstr "" "configuration des origines invalide: non-zero SEARCH_VEL a besoin de " "LATCH_VEL" -#: src/emc/motion/homing.c:447 emc/motion/homing.c:447 +#: src/emc/motion/homing.c:447 msgid "Home switch inactive before start of backoff move" msgstr "contact d'origine inactif avant le début du mouvement de retour" -#: src/emc/motion/homing.c:495 emc/motion/homing.c:495 +#: src/emc/motion/homing.c:495 msgid "Home switch active before start of latch move" msgstr "contact d'origine actif avant le début du mouvement de verrouillage" -#: src/emc/motion/homing.c:551 emc/motion/homing.c:551 +#: src/emc/motion/homing.c:551 msgid "Home switch inactive before start of latch move" msgstr "contact d'origine inactif avant le début du mouvement de verrouillage" -#: src/emc/motion/homing.c:797 emc/motion/homing.c:797 +#: src/emc/motion/homing.c:797 #, c-format msgid "unknown state '%d' during homing" msgstr "état '%d' inconnu pendant la prise d'origine" -#: tcl/bin/emccalib.tcl:80 ../tcl/bin/emccalib.tcl:80 -msgid "LinuxCNC Servo Axis Calibration" +#: tcl/bin/emccalib.tcl:80 +#, fuzzy +msgid "Machinekit Servo Axis Calibration" msgstr "LinuxCNC Calibration asservissement des axes" -#: tcl/bin/emccalib.tcl:90 ../tcl/bin/emccalib.tcl:90 +#: tcl/bin/emccalib.tcl:90 msgid "Save To File" msgstr "Enregistrer dans un fichier" #: tcl/bin/emccalib.tcl:106 tcl/bin/genedit.tcl:77 tcl/bin/halconfig.tcl:151 -#: tcl/bin/halshow.tcl:86 tcl/mini.tcl:2516 tcl/tklinuxcnc.tcl:719 -#: tcl/ngcgui.tcl:549 tcl/bin/halshow.tcl:85 ../tcl/bin/emccalib.tcl:106 -#: ../tcl/bin/genedit.tcl:77 ../tcl/bin/halconfig.tcl:151 -#: ../tcl/bin/halshow.tcl:86 ../tcl/mini.tcl:2516 ../tcl/tklinuxcnc.tcl:719 -#: ../tcl/ngcgui.tcl:549 tcl/ngcgui.tcl:556 +#: tcl/bin/halshow.tcl:85 tcl/mini.tcl:2516 tcl/tklinuxcnc.tcl:719 +#: tcl/ngcgui.tcl:489 msgid "File" msgstr "Fichier" -#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:231 tcl/bin/halconfig.tcl:153 +#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:236 tcl/bin/halconfig.tcl:153 #: tcl/mini.tcl:3558 src/emc/usr_intf/touchy/touchy.glade:2420 -#: ../tcl/bin/emccalib.tcl:108 ../tcl/bin/emccalib.tcl:231 -#: ../tcl/bin/halconfig.tcl:153 ../tcl/mini.tcl:3558 -#: emc/usr_intf/touchy/touchy.glade:2420 tcl/bin/emccalib.tcl:230 msgid "Refresh" msgstr "Rafraîchir" #: tcl/bin/emccalib.tcl:110 tcl/bin/genedit.tcl:82 tcl/bin/halconfig.tcl:155 -#: tcl/mini.tcl:2535 ../tcl/bin/emccalib.tcl:110 ../tcl/bin/genedit.tcl:82 -#: ../tcl/bin/halconfig.tcl:155 ../tcl/mini.tcl:2535 +#: tcl/mini.tcl:2535 src/emc/usr_intf/axis/scripts/axis.py:2107 msgid "Save" msgstr "Enregistrer" -#: tcl/bin/emccalib.tcl:159 tcl/bin/halconfig.tcl:623 -#: ../tcl/bin/emccalib.tcl:159 ../tcl/bin/halconfig.tcl:623 +#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:623 #, tcl-format msgid "Tune %d" msgstr "Calibrer %d" -#: tcl/bin/emccalib.tcl:160 tcl/bin/halconfig.tcl:628 -#: ../tcl/bin/emccalib.tcl:160 ../tcl/bin/halconfig.tcl:628 +#: tcl/bin/emccalib.tcl:162 tcl/bin/halconfig.tcl:628 msgid "INI Name" msgstr "Nom d'ini" -#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:629 -#: ../tcl/bin/emccalib.tcl:161 ../tcl/bin/halconfig.tcl:629 +#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:629 msgid "HAL's Value" msgstr "Valeurs de HAL" -#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:631 -#: ../tcl/bin/emccalib.tcl:163 ../tcl/bin/halconfig.tcl:631 +#: tcl/bin/emccalib.tcl:165 tcl/bin/halconfig.tcl:631 msgid "Next Value" msgstr "Valeur suivante" -#: tcl/bin/emccalib.tcl:225 tcl/bin/halconfig.tcl:680 -#: tcl/bin/halconfig.tcl:731 ../tcl/bin/emccalib.tcl:225 -#: ../tcl/bin/halconfig.tcl:680 ../tcl/bin/halconfig.tcl:731 -#: tcl/bin/emccalib.tcl:224 +#: tcl/bin/emccalib.tcl:230 tcl/bin/halconfig.tcl:680 tcl/bin/halconfig.tcl:731 msgid "Test" msgstr "Tester" -#: tcl/bin/emccalib.tcl:358 tcl/bin/halconfig.tcl:883 -#: ../tcl/bin/emccalib.tcl:358 ../tcl/bin/halconfig.tcl:883 -#: tcl/bin/emccalib.tcl:357 +#: tcl/bin/emccalib.tcl:388 tcl/bin/halconfig.tcl:883 #, tcl-format msgid "" "The HAL parameter \n" @@ -1148,9 +2758,7 @@ msgstr "" " a changé. \n" " Quitter vraiment ?" -#: tcl/bin/emccalib.tcl:383 tcl/bin/halconfig.tcl:1170 -#: ../tcl/bin/emccalib.tcl:383 ../tcl/bin/halconfig.tcl:1170 -#: tcl/bin/emccalib.tcl:382 +#: tcl/bin/emccalib.tcl:413 tcl/bin/halconfig.tcl:1170 msgid "" "Not permitted to save here.\n" "\n" @@ -1161,177 +2769,150 @@ msgstr "" " Copier une configuration dans un répertoire utilisateur et travailler sur " "cette copie." -#: tcl/bin/emccalib.tcl:457 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 -#: tcl/bin/pickconfig.tcl:544 tcl/bin/pickconfig.tcl:555 +#: tcl/bin/emccalib.tcl:487 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 +#: tcl/bin/pickconfig.tcl:843 tcl/bin/pickconfig.tcl:854 #: tcl/scripts/Set_Coordinates.tcl:205 tcl/scripts/Set_Coordinates.tcl:228 -#: ../tcl/bin/emccalib.tcl:457 ../tcl/bin/genedit.tcl:211 -#: ../tcl/bin/halconfig.tcl:1242 ../tcl/bin/pickconfig.tcl:544 -#: ../tcl/bin/pickconfig.tcl:555 ../tcl/scripts/Set_Coordinates.tcl:205 -#: ../tcl/scripts/Set_Coordinates.tcl:228 tcl/bin/emccalib.tcl:456 -#: tcl/bin/pickconfig.tcl:548 tcl/bin/pickconfig.tcl:559 #, fuzzy, tcl-format msgid "can't save %s" -msgstr "" -"Impossible d'enregistrer %s " +msgstr "Impossible d'enregistrer %s " #: tcl/bin/emcdebug.tcl:166 tcl/bin/emcdebug.tcl:177 -#: ../tcl/bin/emcdebug.tcl:166 ../tcl/bin/emcdebug.tcl:177 msgid "LinuxCNC Debug" msgstr "Débogage LinuxCNC" -#: tcl/bin/emcdebug.tcl:185 ../tcl/bin/emcdebug.tcl:185 +#: tcl/bin/emcdebug.tcl:185 msgid "Invalid INI file entries" msgstr "Entrées invalides dans le fichier ini" -#: tcl/bin/emcdebug.tcl:186 ../tcl/bin/emcdebug.tcl:186 +#: tcl/bin/emcdebug.tcl:186 msgid "Configuration information" msgstr "Informations de configuration" -#: tcl/bin/emcdebug.tcl:187 ../tcl/bin/emcdebug.tcl:187 +#: tcl/bin/emcdebug.tcl:187 msgid "Use of defaults" msgstr "Utiliser par défaut" -#: tcl/bin/emcdebug.tcl:188 ../tcl/bin/emcdebug.tcl:188 +#: tcl/bin/emcdebug.tcl:188 msgid "Version information" msgstr "Informations de version" -#: tcl/bin/emcdebug.tcl:189 ../tcl/bin/emcdebug.tcl:189 +#: tcl/bin/emcdebug.tcl:189 msgid "Command issuing" msgstr "Problème de commande" -#: tcl/bin/emcdebug.tcl:190 ../tcl/bin/emcdebug.tcl:190 +#: tcl/bin/emcdebug.tcl:190 msgid "IO points" msgstr "E/S points" -#: tcl/bin/emcdebug.tcl:191 ../tcl/bin/emcdebug.tcl:191 +#: tcl/bin/emcdebug.tcl:191 msgid "NML" msgstr "NML" -#: tcl/bin/emcdebug.tcl:192 ../tcl/bin/emcdebug.tcl:192 +#: tcl/bin/emcdebug.tcl:192 msgid "Motion time" msgstr "Temps de mouvement" #: tcl/bin/emcdebug.tcl:193 src/emc/usr_intf/axis/scripts/debuglevel.py:42 -#: ../tcl/bin/emcdebug.tcl:193 emc/usr_intf/axis/scripts/debuglevel.py:42 msgid "Interpreter" msgstr "Interpréteur" -#: tcl/bin/emcdebug.tcl:194 ../tcl/bin/emcdebug.tcl:194 +#: tcl/bin/emcdebug.tcl:194 msgid "RCS" msgstr "RCS" -#: tcl/bin/emcdebug.tcl:195 ../tcl/bin/emcdebug.tcl:195 +#: tcl/bin/emcdebug.tcl:195 msgid "Trajectory level" msgstr "Niveau de trajectoire" -#: tcl/bin/emcdebug.tcl:196 ../tcl/bin/emcdebug.tcl:196 +#: tcl/bin/emcdebug.tcl:196 msgid "Interpreter list" msgstr "Liste de l'interpréteur" -#: tcl/bin/genedit.tcl:78 tcl/mini.tcl:2533 ../tcl/bin/genedit.tcl:78 -#: ../tcl/mini.tcl:2533 +#: tcl/bin/genedit.tcl:78 tcl/mini.tcl:2533 msgid "New" msgstr "Nouveau" #: tcl/bin/genedit.tcl:80 tcl/mini.tcl:1667 tcl/mini.tcl:2534 -#: tcl/tklinuxcnc.tcl:720 tcl/tklinuxcnc.tcl:1657 ../tcl/bin/genedit.tcl:80 -#: ../tcl/mini.tcl:1667 ../tcl/mini.tcl:2534 ../tcl/tklinuxcnc.tcl:720 -#: ../tcl/tklinuxcnc.tcl:1657 +#: tcl/tklinuxcnc.tcl:720 tcl/tklinuxcnc.tcl:1657 msgid "Open..." msgstr "Ouvrir..." -#: tcl/bin/genedit.tcl:84 tcl/mini.tcl:2536 ../tcl/bin/genedit.tcl:84 -#: ../tcl/mini.tcl:2536 +#: tcl/bin/genedit.tcl:84 tcl/mini.tcl:2536 msgid "Save As..." msgstr "Enregistrer sous..." -#: tcl/bin/genedit.tcl:87 tcl/bin/halconfig.tcl:165 tcl/bin/halshow.tcl:93 -#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1243 -#: tcl/ngcgui.tcl:3680 tcl/bin/halshow.tcl:92 ../tcl/bin/genedit.tcl:87 -#: ../tcl/bin/halconfig.tcl:165 ../tcl/bin/halshow.tcl:93 ../tcl/mini.tcl:954 -#: ../tcl/tklinuxcnc.tcl:734 ../tcl/ngcgui.tcl:1243 ../tcl/ngcgui.tcl:3680 -#: tcl/ngcgui.tcl:1269 tcl/ngcgui.tcl:3710 +#: tcl/bin/genedit.tcl:87 tcl/bin/halconfig.tcl:165 tcl/bin/halshow.tcl:92 +#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1322 +#: tcl/ngcgui.tcl:3832 msgid "Exit" msgstr "Quitter" -#: tcl/bin/genedit.tcl:91 tcl/mini.tcl:2517 ../tcl/bin/genedit.tcl:91 -#: ../tcl/mini.tcl:2517 +#: tcl/bin/genedit.tcl:91 tcl/mini.tcl:2517 +#: src/emc/usr_intf/gscreen/gscreen.glade:2685 msgid "Edit" msgstr "Éditer" -#: tcl/bin/genedit.tcl:92 tcl/mini.tcl:2543 ../tcl/bin/genedit.tcl:92 -#: ../tcl/mini.tcl:2543 +#: tcl/bin/genedit.tcl:92 tcl/mini.tcl:2543 msgid "Cut" msgstr "Couper" -#: tcl/bin/genedit.tcl:94 tcl/mini.tcl:2544 ../tcl/bin/genedit.tcl:94 -#: ../tcl/mini.tcl:2544 +#: tcl/bin/genedit.tcl:94 tcl/mini.tcl:2544 msgid "Copy" msgstr "Copier" -#: tcl/bin/genedit.tcl:96 tcl/mini.tcl:2545 ../tcl/bin/genedit.tcl:96 -#: ../tcl/mini.tcl:2545 +#: tcl/bin/genedit.tcl:96 tcl/mini.tcl:2545 msgid "Paste" msgstr "Coller" -#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:68 -#: ../tcl/bin/genedit.tcl:99 ../tcl/mini.tcl:2548 ../tcl/show_errors.tcl:68 +#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:73 msgid "Select All" msgstr "Tout sélectionner" #: tcl/bin/genedit.tcl:104 tcl/bin/halconfig.tcl:192 tcl/mini.tcl:919 -#: tcl/mini.tcl:2519 tcl/tklinuxcnc.tcl:790 ../tcl/bin/genedit.tcl:104 -#: ../tcl/bin/halconfig.tcl:192 ../tcl/mini.tcl:919 ../tcl/mini.tcl:2519 -#: ../tcl/tklinuxcnc.tcl:790 +#: tcl/mini.tcl:2519 tcl/tklinuxcnc.tcl:790 +#: src/emc/usr_intf/stepconf/main_page.glade:445 msgid "Help" msgstr "Aide" #: tcl/bin/genedit.tcl:105 tcl/mini.tcl:1011 tcl/mini.tcl:2559 -#: tcl/tklinuxcnc.tcl:796 ../tcl/bin/genedit.tcl:105 ../tcl/mini.tcl:1011 -#: ../tcl/mini.tcl:2559 ../tcl/tklinuxcnc.tcl:796 +#: tcl/tklinuxcnc.tcl:796 msgid "About..." msgstr "À propos..." -#: tcl/bin/genedit.tcl:130 ../tcl/bin/genedit.tcl:130 +#: tcl/bin/genedit.tcl:130 msgid "Save and Reload" msgstr "Enregistrer et recharger" -#: tcl/bin/genedit.tcl:133 tcl/mini.tcl:2550 ../tcl/bin/genedit.tcl:133 -#: ../tcl/mini.tcl:2550 +#: tcl/bin/genedit.tcl:133 tcl/mini.tcl:2550 msgid "Find..." msgstr "Chercher..." -#: tcl/bin/genedit.tcl:135 tcl/mini.tcl:2552 ../tcl/bin/genedit.tcl:135 -#: ../tcl/mini.tcl:2552 +#: tcl/bin/genedit.tcl:135 tcl/mini.tcl:2552 msgid "Renumber File..." msgstr "Re-numéroter le fichier..." #: tcl/bin/genedit.tcl:140 tcl/mini.tcl:917 tcl/mini.tcl:2518 -#: tcl/tklinuxcnc.tcl:746 ../tcl/bin/genedit.tcl:140 ../tcl/mini.tcl:917 -#: ../tcl/mini.tcl:2518 ../tcl/tklinuxcnc.tcl:746 +#: tcl/tklinuxcnc.tcl:746 src/emc/usr_intf/gmoccapy/gmoccapy.glade:5135 msgid "Settings" msgstr "Réglages" -#: tcl/bin/genedit.tcl:141 tcl/mini.tcl:2554 ../tcl/bin/genedit.tcl:141 -#: ../tcl/mini.tcl:2554 +#: tcl/bin/genedit.tcl:141 tcl/mini.tcl:2554 msgid "No Numbering" msgstr "Sans numérotation" -#: tcl/bin/genedit.tcl:144 tcl/mini.tcl:2556 ../tcl/bin/genedit.tcl:144 -#: ../tcl/mini.tcl:2556 +#: tcl/bin/genedit.tcl:144 tcl/mini.tcl:2556 msgid "Line Numbering..." msgstr "Numérotation de ligne..." -#: tcl/bin/genedit.tcl:150 tcl/tklinuxcnc.tcl:768 ../tcl/bin/genedit.tcl:150 -#: ../tcl/tklinuxcnc.tcl:768 +#: tcl/bin/genedit.tcl:150 tcl/tklinuxcnc.tcl:768 msgid "Scripts" msgstr "Scripts" -#: tcl/bin/genedit.tcl:177 ../tcl/bin/genedit.tcl:177 +#: tcl/bin/genedit.tcl:177 msgid "About TkEditor" msgstr "A propos de TkEditor" -#: tcl/bin/genedit.tcl:179 ../tcl/bin/genedit.tcl:179 +#: tcl/bin/genedit.tcl:179 msgid "" "TkEditor\n" "\n" @@ -1345,246 +2926,208 @@ msgstr "" "\n" "GPL Version 2" -#: tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 tcl/mini.tcl:1775 -#: tcl/tklinuxcnc.tcl:451 src/emc/task/emctaskmain.cc:2000 -#: src/emc/task/emctaskmain.cc:2072 ../tcl/bin/genedit.tcl:197 -#: ../tcl/mini.tcl:1373 ../tcl/mini.tcl:1775 ../tcl/tklinuxcnc.tcl:451 -#: emc/task/emctaskmain.cc:2000 -#, fuzzy, c-format, tcl-format -msgid "can't open %s" -msgstr "" -"Impossible d'ouvrir %s " - -#: tcl/bin/genedit.tcl:267 tcl/mini.tcl:3090 ../tcl/bin/genedit.tcl:267 -#: ../tcl/mini.tcl:3090 +#: tcl/bin/genedit.tcl:267 tcl/mini.tcl:3090 msgid "Find" msgstr "Chercher" -#: tcl/bin/genedit.tcl:270 ../tcl/bin/genedit.tcl:270 +#: tcl/bin/genedit.tcl:270 msgid "Find:" msgstr "Chercher:" -#: tcl/bin/genedit.tcl:276 ../tcl/bin/genedit.tcl:276 +#: tcl/bin/genedit.tcl:276 msgid "Replace:" msgstr "Remplacer:" -#: tcl/bin/genedit.tcl:282 ../tcl/bin/genedit.tcl:282 +#: tcl/bin/genedit.tcl:282 msgid "Find All" msgstr "Chercher tous" -#: tcl/bin/genedit.tcl:285 tcl/mini.tcl:3113 ../tcl/bin/genedit.tcl:285 -#: ../tcl/mini.tcl:3113 +#: tcl/bin/genedit.tcl:285 tcl/mini.tcl:3113 msgid "Replace All" msgstr "Remplacer tous" -#: tcl/bin/genedit.tcl:288 ../tcl/bin/genedit.tcl:288 +#: tcl/bin/genedit.tcl:288 msgid "Skip This" msgstr "Sauter ça" -#: tcl/bin/genedit.tcl:291 ../tcl/bin/genedit.tcl:291 +#: tcl/bin/genedit.tcl:291 msgid "Replace This" msgstr "Remplacer ça" -#: tcl/bin/genedit.tcl:297 ../tcl/bin/genedit.tcl:297 +#: tcl/bin/genedit.tcl:297 msgid "Clear" msgstr "Nettoyer" -#: tcl/bin/genedit.tcl:422 tcl/mini.tcl:2640 ../tcl/bin/genedit.tcl:422 -#: ../tcl/mini.tcl:2640 +#: tcl/bin/genedit.tcl:422 tcl/mini.tcl:2640 msgid "Set Line Numbering" msgstr "Ajuster la numérotation de ligne" -#: tcl/bin/genedit.tcl:424 tcl/mini.tcl:2644 ../tcl/bin/genedit.tcl:424 -#: ../tcl/mini.tcl:2644 +#: tcl/bin/genedit.tcl:424 tcl/mini.tcl:2644 msgid "Increment" msgstr "Incrément" -#: tcl/bin/genedit.tcl:426 tcl/mini.tcl:2646 ../tcl/bin/genedit.tcl:426 -#: ../tcl/mini.tcl:2646 +#: tcl/bin/genedit.tcl:426 tcl/mini.tcl:2646 msgid "One" msgstr "Un" -#: tcl/bin/genedit.tcl:429 tcl/mini.tcl:2648 ../tcl/bin/genedit.tcl:429 -#: ../tcl/mini.tcl:2648 +#: tcl/bin/genedit.tcl:429 tcl/mini.tcl:2648 msgid "Two" msgstr "Deux" -#: tcl/bin/genedit.tcl:432 tcl/mini.tcl:2650 ../tcl/bin/genedit.tcl:432 -#: ../tcl/mini.tcl:2650 +#: tcl/bin/genedit.tcl:432 tcl/mini.tcl:2650 msgid "Five" msgstr "Cinq" -#: tcl/bin/genedit.tcl:435 tcl/mini.tcl:2652 ../tcl/bin/genedit.tcl:435 -#: ../tcl/mini.tcl:2652 +#: tcl/bin/genedit.tcl:435 tcl/mini.tcl:2652 msgid "Ten" msgstr "Dix" -#: tcl/bin/genedit.tcl:439 tcl/mini.tcl:2654 ../tcl/bin/genedit.tcl:439 -#: ../tcl/mini.tcl:2654 +#: tcl/bin/genedit.tcl:439 tcl/mini.tcl:2654 msgid "Space" msgstr "Espace" -#: tcl/bin/genedit.tcl:441 tcl/mini.tcl:2656 ../tcl/bin/genedit.tcl:441 -#: ../tcl/mini.tcl:2656 +#: tcl/bin/genedit.tcl:441 tcl/mini.tcl:2656 msgid "Single Space" msgstr "Simple espace" -#: tcl/bin/genedit.tcl:444 tcl/mini.tcl:2658 ../tcl/bin/genedit.tcl:444 -#: ../tcl/mini.tcl:2658 +#: tcl/bin/genedit.tcl:444 tcl/mini.tcl:2658 msgid "Double Space" msgstr "Double espace" -#: tcl/bin/genedit.tcl:447 tcl/mini.tcl:2660 ../tcl/bin/genedit.tcl:447 -#: ../tcl/mini.tcl:2660 +#: tcl/bin/genedit.tcl:447 tcl/mini.tcl:2660 msgid "Tab Space" msgstr "Espace arrière" -#: tcl/bin/genedit.tcl:453 ../tcl/bin/genedit.tcl:453 +#: tcl/bin/genedit.tcl:453 msgid "Next Number:" msgstr "Numéro suivant" -#: tcl/bin/genedit.tcl:474 tcl/mini.tcl:2668 ../tcl/bin/genedit.tcl:474 -#: ../tcl/mini.tcl:2668 +#: tcl/bin/genedit.tcl:474 tcl/mini.tcl:2668 msgid "Renumber" msgstr "Re-numéroter" -#: tcl/bin/halconfig.tcl:88 tcl/bin/halshow.tcl:33 ../tcl/bin/halconfig.tcl:88 -#: ../tcl/bin/halshow.tcl:33 +#: tcl/bin/halconfig.tcl:88 tcl/bin/halshow.tcl:33 msgid "HAL Configuration" msgstr "Configuration HAL" -#: tcl/bin/halconfig.tcl:103 ../tcl/bin/halconfig.tcl:103 +#: tcl/bin/halconfig.tcl:103 msgid "Would you like to save your configuration before you exit?" msgstr "Enregistrer la configuration avant de quitter ?" -#: tcl/bin/halconfig.tcl:103 ../tcl/bin/halconfig.tcl:103 +#: tcl/bin/halconfig.tcl:103 msgid "Save All" msgstr "Tout enregistrer" -#: tcl/bin/halconfig.tcl:103 ../tcl/bin/halconfig.tcl:103 +#: tcl/bin/halconfig.tcl:103 msgid "Save Tune" msgstr "Enregistrer le réglage" -#: tcl/bin/halconfig.tcl:103 ../tcl/bin/halconfig.tcl:103 +#: tcl/bin/halconfig.tcl:103 msgid "Save as Netlist" msgstr "Enregistrer comme liste de liaisons" -#: tcl/bin/halconfig.tcl:103 ../tcl/bin/halconfig.tcl:103 +#: tcl/bin/halconfig.tcl:103 msgid "Don't Save" msgstr "Ne pas enregistrer" -#: tcl/bin/halconfig.tcl:132 ../tcl/bin/halconfig.tcl:132 +#: tcl/bin/halconfig.tcl:132 msgid "Show" msgstr "Afficher" -#: tcl/bin/halconfig.tcl:133 ../tcl/bin/halconfig.tcl:133 +#: tcl/bin/halconfig.tcl:133 msgid "Watch" msgstr "Watch" -#: tcl/bin/halconfig.tcl:134 ../tcl/bin/halconfig.tcl:134 +#: tcl/bin/halconfig.tcl:134 msgid "Modify" msgstr "Modifier" -#: tcl/bin/halconfig.tcl:157 ../tcl/bin/halconfig.tcl:157 +#: tcl/bin/halconfig.tcl:157 msgid "Save INI Tuning" msgstr "Enregistrer les réglages d'initialisation" -#: tcl/bin/halconfig.tcl:159 ../tcl/bin/halconfig.tcl:159 +#: tcl/bin/halconfig.tcl:159 msgid "Save HAL Ini" msgstr "Enregistrer l'initialisation de HAL" -#: tcl/bin/halconfig.tcl:161 ../tcl/bin/halconfig.tcl:161 +#: tcl/bin/halconfig.tcl:161 msgid "Save HAL Net" msgstr "Enregistrer les liaisons HAL" -#: tcl/bin/halconfig.tcl:163 ../tcl/bin/halconfig.tcl:163 +#: tcl/bin/halconfig.tcl:163 msgid "Save and Exit" msgstr "Enregistrer et quitter" #: tcl/bin/halconfig.tcl:168 tcl/mini.tcl:916 tcl/tklinuxcnc.tcl:739 -#: ../tcl/bin/halconfig.tcl:168 ../tcl/mini.tcl:916 ../tcl/tklinuxcnc.tcl:739 msgid "View" msgstr "Vues" -#: tcl/bin/halconfig.tcl:170 tcl/bin/halshow.tcl:105 tcl/bin/halshow.tcl:104 -#: ../tcl/bin/halconfig.tcl:170 ../tcl/bin/halshow.tcl:105 +#: tcl/bin/halconfig.tcl:170 tcl/bin/halshow.tcl:104 msgid "Expand Tree" msgstr "Déployer l'arborescence" -#: tcl/bin/halconfig.tcl:172 tcl/bin/halshow.tcl:107 tcl/bin/halshow.tcl:106 -#: ../tcl/bin/halconfig.tcl:172 ../tcl/bin/halshow.tcl:107 +#: tcl/bin/halconfig.tcl:172 tcl/bin/halshow.tcl:106 msgid "Collapse Tree" msgstr "Replier l'arborescence" -#: tcl/bin/halconfig.tcl:175 tcl/bin/halshow.tcl:110 tcl/bin/halshow.tcl:109 -#: ../tcl/bin/halconfig.tcl:175 ../tcl/bin/halshow.tcl:110 +#: tcl/bin/halconfig.tcl:175 tcl/bin/halshow.tcl:109 msgid "Expand Pins" msgstr "Déployer les « pins »" -#: tcl/bin/halconfig.tcl:177 tcl/bin/halshow.tcl:112 tcl/bin/halshow.tcl:111 -#: ../tcl/bin/halconfig.tcl:177 ../tcl/bin/halshow.tcl:112 +#: tcl/bin/halconfig.tcl:177 tcl/bin/halshow.tcl:111 msgid "Expand Parameters" msgstr "Déployer les paramètres" -#: tcl/bin/halconfig.tcl:179 tcl/bin/halshow.tcl:114 tcl/bin/halshow.tcl:113 -#: ../tcl/bin/halconfig.tcl:179 ../tcl/bin/halshow.tcl:114 +#: tcl/bin/halconfig.tcl:179 tcl/bin/halshow.tcl:113 msgid "Expand Signals" msgstr "Déployer les signaux" -#: tcl/bin/halconfig.tcl:182 tcl/bin/halshow.tcl:117 tcl/bin/halshow.tcl:116 -#: ../tcl/bin/halconfig.tcl:182 ../tcl/bin/halshow.tcl:117 +#: tcl/bin/halconfig.tcl:182 tcl/bin/halshow.tcl:116 msgid "Erase Watch" msgstr "Effacer l'écran de watch " #: tcl/bin/halconfig.tcl:194 tcl/mini.tcl:840 tcl/mini.tcl:2785 -#: ../tcl/bin/halconfig.tcl:194 ../tcl/mini.tcl:840 ../tcl/mini.tcl:2785 -#: src/emc/usr_intf/pncconf/pncconf.glade:73055 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "About" msgstr "À propos" -#: tcl/bin/halconfig.tcl:196 ../tcl/bin/halconfig.tcl:196 +#: tcl/bin/halconfig.tcl:196 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2579 msgid "Main" msgstr "Manuel" -#: tcl/bin/halconfig.tcl:476 ../tcl/bin/halconfig.tcl:476 +#: tcl/bin/halconfig.tcl:476 msgid "Enter HAL command :" msgstr "Entrer une commande HAL:" -#: tcl/bin/halconfig.tcl:479 tcl/bin/halconfig.tcl:528 tcl/bin/halshow.tcl:357 -#: tcl/bin/halshow.tcl:354 ../tcl/bin/halconfig.tcl:479 -#: ../tcl/bin/halconfig.tcl:528 ../tcl/bin/halshow.tcl:357 +#: tcl/bin/halconfig.tcl:479 tcl/bin/halconfig.tcl:528 tcl/bin/halshow.tcl:354 msgid "Execute" msgstr "Exécuter" -#: tcl/bin/halconfig.tcl:943 tcl/bin/halshow.tcl:413 tcl/bin/halshow.tcl:405 -#: ../tcl/bin/halconfig.tcl:943 ../tcl/bin/halshow.tcl:413 +#: tcl/bin/halconfig.tcl:943 tcl/bin/halshow.tcl:405 msgid "Select a node to show." msgstr "Sélectionner un « node » à afficher" -#: tcl/bin/halconfig.tcl:968 tcl/bin/halshow.tcl:438 tcl/bin/halshow.tcl:429 -#: ../tcl/bin/halconfig.tcl:968 ../tcl/bin/halshow.tcl:438 +#: tcl/bin/halconfig.tcl:968 tcl/bin/halshow.tcl:429 msgid "<-- Select a Leaf. Click on its name." msgstr "<-- Sélectionner une feuille par un clic sur son nom." #: tcl/bin/halconfig.tcl:1085 tcl/bin/halconfig.tcl:1095 #: tcl/bin/halconfig.tcl:1102 tcl/bin/halconfig.tcl:1109 -#: tcl/bin/halconfig.tcl:1116 ../tcl/bin/halconfig.tcl:1085 -#: ../tcl/bin/halconfig.tcl:1095 ../tcl/bin/halconfig.tcl:1102 -#: ../tcl/bin/halconfig.tcl:1109 ../tcl/bin/halconfig.tcl:1116 +#: tcl/bin/halconfig.tcl:1116 #, tcl-format msgid "Click a highlighted entry where %s should go." msgstr "Cliquer une ligne en surbrillance ou %s doit aller." -#: tcl/bin/halconfig.tcl:1092 ../tcl/bin/halconfig.tcl:1092 +#: tcl/bin/halconfig.tcl:1092 msgid "Nothing to be done for parameters here. Try the tuning page" msgstr "Rien n'est paramétrable ici. Essayer la page de réglage" -#: tcl/bin/halconfig.tcl:1124 ../tcl/bin/halconfig.tcl:1124 +#: tcl/bin/halconfig.tcl:1124 #, tcl-format msgid "%s is not a leaf, try again" msgstr "%s n'est pas une feuille, essayez encore" -#: tcl/bin/halconfig.tcl:1281 ../tcl/bin/halconfig.tcl:1281 +#: tcl/bin/halconfig.tcl:1281 msgid "" "Copyright Raymond E Henry. 2006\n" "License: GPL Version 2\n" @@ -1607,39 +3150,39 @@ msgstr "" "garantie ou ou responsabilité pour son usage dans la mesure autorisée par la " "loi." -#: tcl/bin/halshow.tcl:70 tcl/bin/halshow.tcl:69 ../tcl/bin/halshow.tcl:70 +#: tcl/bin/halshow.tcl:69 msgid " SHOW " msgstr " MONTRER " -#: tcl/bin/halshow.tcl:71 tcl/bin/halshow.tcl:70 ../tcl/bin/halshow.tcl:71 +#: tcl/bin/halshow.tcl:70 msgid " WATCH " msgstr " WATCH " -#: tcl/bin/halshow.tcl:91 tcl/bin/halshow.tcl:90 ../tcl/bin/halshow.tcl:91 +#: tcl/bin/halshow.tcl:90 msgid "Load Watch List" msgstr "Charger liste de watch" -#: tcl/bin/halshow.tcl:103 tcl/bin/halshow.tcl:102 ../tcl/bin/halshow.tcl:103 +#: tcl/bin/halshow.tcl:102 msgid "Tree View" msgstr "Arborescence" -#: tcl/bin/halshow.tcl:354 tcl/bin/halshow.tcl:349 ../tcl/bin/halshow.tcl:354 +#: tcl/bin/halshow.tcl:349 msgid "Test HAL command :" msgstr "Tester une commande HAL :" -#: tcl/bin/halshow.tcl:556 tcl/bin/halshow.tcl:544 ../tcl/bin/halshow.tcl:556 +#: tcl/bin/halshow.tcl:544 msgid "Load a watch list" msgstr "Charger une liste de watch" -#: tcl/bin/halshow.tcl:579 tcl/bin/halshow.tcl:567 ../tcl/bin/halshow.tcl:579 +#: tcl/bin/halshow.tcl:567 msgid "Save current watch list" msgstr "Enregistrer liste de watch courante" -#: tcl/bin/halshow.tcl:593 tcl/bin/halshow.tcl:581 ../tcl/bin/halshow.tcl:593 +#: tcl/bin/halshow.tcl:581 msgid "Commands may be tested here but they will NOT be saved" msgstr "Ces commandes peuvent être testées ici mais ne seront PAS enregistrées" -#: tcl/bin/pickconfig.tcl:50 ../tcl/bin/pickconfig.tcl:50 +#: tcl/bin/pickconfig.tcl:96 msgid "" "Can't find the bwidget 1.7 package. There is a debian bwidget package; " "install \n" @@ -1649,17 +3192,19 @@ msgstr "" "l'installer \n" "avec sudo apt-get install bwidget." -#: tcl/bin/pickconfig.tcl:178 ../tcl/bin/pickconfig.tcl:178 +#: tcl/bin/pickconfig.tcl:154 +#, fuzzy +msgid "Machinekit Configuration Selector" +msgstr "Sélecteur de configuration de LinuxCNC " + +#: tcl/bin/pickconfig.tcl:296 msgid "No details available." msgstr "Aucun détail disponible." -#: tcl/bin/pickconfig.tcl:194 ../tcl/bin/pickconfig.tcl:194 -msgid "LinuxCNC Configuration Selector" -msgstr "Sélecteur de configuration de LinuxCNC " - -#: tcl/bin/pickconfig.tcl:215 ../tcl/bin/pickconfig.tcl:215 +#: tcl/bin/pickconfig.tcl:343 +#, fuzzy msgid "" -"Welcome to LinuxCNC.\n" +"Welcome to MachineKit.\n" "\n" "Select a machine configuration from the list on the left.\n" "Details about the selected configuration will appear in the display on the " @@ -1672,24 +3217,24 @@ msgstr "" "Les détails à propos de cette configuration apparaîtront à droite.\n" "Cliquer 'OK' pour lancer la configuration sélectionnée." -#: tcl/bin/pickconfig.tcl:271 ../tcl/bin/pickconfig.tcl:271 +#: tcl/bin/pickconfig.tcl:401 msgid "My Configurations" msgstr "Mes configurations" -#: tcl/bin/pickconfig.tcl:274 ../tcl/bin/pickconfig.tcl:274 +#: tcl/bin/pickconfig.tcl:405 msgid "Sample Configurations" msgstr "Exemples de configuration" -#: tcl/bin/pickconfig.tcl:332 ../tcl/bin/pickconfig.tcl:332 +#: tcl/bin/pickconfig.tcl:530 #, tcl-format msgid "ERROR: no configurations found in path '%s'" msgstr "ERREUR: Aucune configuration trouvée dans le chemin '%s'" -#: tcl/bin/pickconfig.tcl:369 ../tcl/bin/pickconfig.tcl:369 +#: tcl/bin/pickconfig.tcl:567 msgid "Copy Configuration?" msgstr "Copier la configuration ?" -#: tcl/bin/pickconfig.tcl:369 ../tcl/bin/pickconfig.tcl:369 +#: tcl/bin/pickconfig.tcl:567 #, tcl-format msgid "" "Would you like to copy the %s configuration to your home directory so you " @@ -1698,35 +3243,29 @@ msgstr "" "Voulez-vous copier le dossier %s dans votre répertoire home pour pouvoir " "l'adapter à vos besoins ?" -#: tcl/bin/pickconfig.tcl:369 +#: tcl/bin/pickconfig.tcl:567 #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:563 -#: ../tcl/bin/pickconfig.tcl:369 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:563 msgid "Yes" msgstr "Oui" -#: tcl/bin/pickconfig.tcl:479 ../tcl/bin/pickconfig.tcl:479 -#: tcl/bin/pickconfig.tcl:483 +#: tcl/bin/pickconfig.tcl:749 msgid "Configuration Copied" msgstr "Configuration copiée" -#: tcl/bin/pickconfig.tcl:479 ../tcl/bin/pickconfig.tcl:479 -#: tcl/bin/pickconfig.tcl:483 -#, tcl-format +#: tcl/bin/pickconfig.tcl:749 +#, fuzzy, tcl-format msgid "" "The configuration file has been copied to %s. Next time, choose this " -"location when starting LinuxCNC." +"location when starting MachineKit." msgstr "" "Le fichier de configuration a bien été copié dans %s. La prochaine fois, " "choisissez cet emplacement au démarrage de LinuxCNC." -#: tcl/bin/pickconfig.tcl:506 ../tcl/bin/pickconfig.tcl:506 -#: tcl/bin/pickconfig.tcl:510 +#: tcl/bin/pickconfig.tcl:799 msgid "Shortcut Created" msgstr "Raccourci créé" -#: tcl/bin/pickconfig.tcl:506 ../tcl/bin/pickconfig.tcl:506 -#: tcl/bin/pickconfig.tcl:510 +#: tcl/bin/pickconfig.tcl:799 msgid "" "A shortcut to this configuration file has been created on your desktop. You " "can use it to automatically launch this configuration." @@ -1734,58 +3273,57 @@ msgstr "" "Un lien vers ce fichier de configuration a bien été créé sur votre bureau. " "Vous pourrez l'utiliser pour démarrer automatiquement cette configuration." -#: tcl/bin/pickconfig.tcl:511 ../tcl/bin/pickconfig.tcl:511 -#: tcl/bin/pickconfig.tcl:515 +#: tcl/bin/pickconfig.tcl:805 msgid "Create Desktop Shortcut" msgstr "Créer un raccourci sur le bureau" -#: tcl/bin/tkbackplot.tcl:110 ../tcl/bin/tkbackplot.tcl:110 +#: tcl/bin/tkbackplot.tcl:110 msgid "TkLinuxCNC BackPlot" msgstr "Parcours d'outil TkLinuxCNC" -#: tcl/bin/tkbackplot.tcl:125 ../tcl/bin/tkbackplot.tcl:125 +#: tcl/bin/tkbackplot.tcl:125 msgid "SETUP" msgstr "SETUP" -#: tcl/bin/tkbackplot.tcl:127 ../tcl/bin/tkbackplot.tcl:127 +#: tcl/bin/tkbackplot.tcl:127 msgid "RESET" msgstr "RESET" -#: tcl/bin/tkbackplot.tcl:129 ../tcl/bin/tkbackplot.tcl:129 +#: tcl/bin/tkbackplot.tcl:129 msgid "CANCEL" msgstr "ANNULER" -#: tcl/bin/tkbackplot.tcl:250 ../tcl/bin/tkbackplot.tcl:250 +#: tcl/bin/tkbackplot.tcl:250 msgid "AXIS" msgstr "AXES" -#: tcl/bin/tkbackplot.tcl:251 ../tcl/bin/tkbackplot.tcl:251 +#: tcl/bin/tkbackplot.tcl:251 msgid "OFFSET" msgstr "OFFSET" -#: tcl/bin/tkbackplot.tcl:252 ../tcl/bin/tkbackplot.tcl:252 +#: tcl/bin/tkbackplot.tcl:252 msgid "ANGLE" msgstr "ANGLE" -#: tcl/bin/tkbackplot.tcl:253 ../tcl/bin/tkbackplot.tcl:253 +#: tcl/bin/tkbackplot.tcl:253 msgid "DIRECTION" msgstr "DIRECTION" -#: tcl/bin/tkbackplot.tcl:270 ../tcl/bin/tkbackplot.tcl:270 +#: tcl/bin/tkbackplot.tcl:270 msgid "SIZE :" msgstr "TAILLE:" -#: tcl/mini.tcl:490 ../tcl/mini.tcl:490 +#: tcl/mini.tcl:490 #, tcl-format msgid "JOG %s +" msgstr "JOG %s +" -#: tcl/mini.tcl:491 ../tcl/mini.tcl:491 +#: tcl/mini.tcl:491 #, tcl-format msgid "JOG %s -" msgstr "JOG %s -" -#: tcl/mini.tcl:492 ../tcl/mini.tcl:492 +#: tcl/mini.tcl:492 #, tcl-format msgid "" "%s\n" @@ -1802,7 +3340,7 @@ msgstr "" "R\n" "O" -#: tcl/mini.tcl:840 ../tcl/mini.tcl:840 +#: tcl/mini.tcl:840 msgid "" "TkMini \n" "\n" @@ -1828,139 +3366,135 @@ msgstr "" "This software comes with ABSOLUTELY NO GUARANTEE! \n" "For details see the copyright.html file in this directory." -#: tcl/mini.tcl:915 ../tcl/mini.tcl:915 +#: tcl/mini.tcl:915 msgid "Program" msgstr "Programme" -#: tcl/mini.tcl:918 ../tcl/mini.tcl:918 +#: tcl/mini.tcl:918 msgid "Info" msgstr "Informations" -#: tcl/mini.tcl:923 ../tcl/mini.tcl:923 +#: tcl/mini.tcl:923 msgid "Backplot" msgstr "Parcours d'outil" -#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:6125 -#: ../tcl/mini.tcl:925 emc/usr_intf/pncconf/pncconf.glade:6125 -#: src/emc/usr_intf/pncconf/pncconf.glade:6133 +#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:5915 msgid "Editor" msgstr "Éditeur" -#: tcl/mini.tcl:927 ../tcl/mini.tcl:927 +#: tcl/mini.tcl:927 msgid "Offsets" msgstr "Offsets" -#: tcl/mini.tcl:929 ../tcl/mini.tcl:929 +#: tcl/mini.tcl:929 msgid "Tools" msgstr "Outils" #: tcl/mini.tcl:951 tcl/mini.tcl:3565 tcl/tklinuxcnc.tcl:732 -#: ../tcl/mini.tcl:951 ../tcl/mini.tcl:3565 ../tcl/tklinuxcnc.tcl:732 msgid "Reset" msgstr "Reset" -#: tcl/mini.tcl:960 ../tcl/mini.tcl:960 +#: tcl/mini.tcl:960 msgid "Position Type" msgstr "Type de position" -#: tcl/mini.tcl:962 ../tcl/mini.tcl:962 +#: tcl/mini.tcl:962 msgid "Tool Info" msgstr "Informations outil" -#: tcl/mini.tcl:964 ../tcl/mini.tcl:964 +#: tcl/mini.tcl:964 msgid "Offset Info" msgstr "Informations offset" -#: tcl/mini.tcl:967 ../tcl/mini.tcl:967 +#: tcl/mini.tcl:967 msgid "Show Restart" msgstr "Afficher « Reprise »" -#: tcl/mini.tcl:968 ../tcl/mini.tcl:968 +#: tcl/mini.tcl:968 msgid "Hide Restart" msgstr "Masquer « Reprise »" -#: tcl/mini.tcl:970 ../tcl/mini.tcl:970 +#: tcl/mini.tcl:970 msgid "Show Split Right" msgstr "Diviser la vue droite" -#: tcl/mini.tcl:972 ../tcl/mini.tcl:972 +#: tcl/mini.tcl:972 msgid "Show Mode Full" msgstr "Afficher en mode complet" -#: tcl/mini.tcl:974 ../tcl/mini.tcl:974 +#: tcl/mini.tcl:974 msgid "Show Popin Full" msgstr "Afficher dans toute la fenêtre" -#: tcl/mini.tcl:978 ../tcl/mini.tcl:978 +#: tcl/mini.tcl:978 msgid "Actual Position" msgstr "Position actuelle" -#: tcl/mini.tcl:980 ../tcl/mini.tcl:980 +#: tcl/mini.tcl:980 msgid "Commanded Position" msgstr "Position commandée" -#: tcl/mini.tcl:983 ../tcl/mini.tcl:983 +#: tcl/mini.tcl:983 msgid "Machine Position" msgstr "Position machine" -#: tcl/mini.tcl:985 ../tcl/mini.tcl:985 +#: tcl/mini.tcl:985 msgid "Relative Position" msgstr "Position relative" -#: tcl/mini.tcl:988 tcl/tklinuxcnc.tcl:747 ../tcl/mini.tcl:988 -#: ../tcl/tklinuxcnc.tcl:747 +#: tcl/mini.tcl:988 tcl/tklinuxcnc.tcl:747 msgid "Calibration..." msgstr "Calibration..." -#: tcl/mini.tcl:990 ../tcl/mini.tcl:990 +#: tcl/mini.tcl:990 msgid "HAL Show..." msgstr "Montrer config. HAL..." -#: tcl/mini.tcl:992 ../tcl/mini.tcl:992 +#: tcl/mini.tcl:992 msgid "HAL Config..." msgstr "Configurer HAL" -#: tcl/mini.tcl:997 ../tcl/mini.tcl:997 +#: tcl/mini.tcl:997 msgid "Program File" msgstr "Fichier programme" -#: tcl/mini.tcl:998 ../tcl/mini.tcl:998 +#: tcl/mini.tcl:998 #, tcl-format msgid "Program file is %s" msgstr "Le fichier programme est %s" -#: tcl/mini.tcl:999 ../tcl/mini.tcl:999 +#: tcl/mini.tcl:999 msgid "Editor File" msgstr "Éditeur de fichier" -#: tcl/mini.tcl:1000 ../tcl/mini.tcl:1000 +#: tcl/mini.tcl:1000 #, tcl-format msgid "Editor file is %s" msgstr "L'éditeur de fichier est %s" -#: tcl/mini.tcl:1001 ../tcl/mini.tcl:1001 +#: tcl/mini.tcl:1001 msgid "Parameter File" msgstr "Fichier de paramètres" -#: tcl/mini.tcl:1002 ../tcl/mini.tcl:1002 +#: tcl/mini.tcl:1002 #, tcl-format msgid "Parameter file is %s" msgstr "Fichier de paramètres %s" -#: tcl/mini.tcl:1003 ../tcl/mini.tcl:1003 +#: tcl/mini.tcl:1003 msgid "Tool File" msgstr "Fichier d'outils" -#: tcl/mini.tcl:1004 ../tcl/mini.tcl:1004 +#: tcl/mini.tcl:1004 #, tcl-format msgid "Tool file is %s" msgstr "Le fichier d'outils %s" -#: tcl/mini.tcl:1006 ../tcl/mini.tcl:1006 +#: tcl/mini.tcl:1006 msgid "Active G Codes" msgstr "G-codes actifs" -#: tcl/mini.tcl:1007 ../tcl/mini.tcl:1007 +#: tcl/mini.tcl:1007 #, tcl-format msgid "" "Active codes include; \n" @@ -1970,136 +3504,123 @@ msgstr "" "%s" #: tcl/mini.tcl:1010 tcl/mini.tcl:2558 tcl/tklinuxcnc.tcl:791 -#: ../tcl/mini.tcl:1010 ../tcl/mini.tcl:2558 ../tcl/tklinuxcnc.tcl:791 msgid "Help..." msgstr "Aide..." -#: tcl/mini.tcl:1027 tcl/tklinuxcnc.tcl:890 ../tcl/mini.tcl:1027 -#: ../tcl/tklinuxcnc.tcl:890 +#: tcl/mini.tcl:1027 tcl/tklinuxcnc.tcl:890 msgid "ABORT" msgstr "ABANDON" -#: tcl/mini.tcl:1038 tcl/mini.tcl:2048 ../tcl/mini.tcl:1038 -#: ../tcl/mini.tcl:2048 +#: tcl/mini.tcl:1038 tcl/mini.tcl:2048 msgid "CONTINUE" msgstr "CONTINUER" #: tcl/mini.tcl:1044 tcl/tklinuxcnc.tcl:828 tcl/tklinuxcnc.tcl:2248 -#: src/emc/usr_intf/touchy/touchy.glade:1264 ../tcl/mini.tcl:1044 -#: ../tcl/tklinuxcnc.tcl:828 ../tcl/tklinuxcnc.tcl:2248 -#: emc/usr_intf/touchy/touchy.glade:1264 +#: src/emc/usr_intf/touchy/touchy.glade:1264 msgid "MDI" msgstr "MDI" -#: tcl/mini.tcl:1048 tcl/tklinuxcnc.tcl:2239 ../tcl/mini.tcl:1048 -#: ../tcl/tklinuxcnc.tcl:2239 +#: tcl/mini.tcl:1048 tcl/tklinuxcnc.tcl:2239 msgid "AUTO" msgstr "AUTO" #: tcl/mini.tcl:1052 tcl/mini.tcl:1812 tcl/tklinuxcnc.tcl:2141 -#: tcl/tklinuxcnc.tcl:2261 ../tcl/mini.tcl:1052 ../tcl/mini.tcl:1812 -#: ../tcl/tklinuxcnc.tcl:2141 ../tcl/tklinuxcnc.tcl:2261 +#: tcl/tklinuxcnc.tcl:2261 msgid "MANUAL" msgstr "MANUEL" -#: tcl/mini.tcl:1106 ../tcl/mini.tcl:1106 +#: tcl/mini.tcl:1106 msgid "Tool #:" msgstr "Outil N°:" -#: tcl/mini.tcl:1108 ../tcl/mini.tcl:1108 +#: tcl/mini.tcl:1108 msgid "Length :" msgstr "Longueur :" -#: tcl/mini.tcl:1119 ../tcl/mini.tcl:1119 +#: tcl/mini.tcl:1119 msgid "Work Offsets: " msgstr "Offsets de travail:" -#: tcl/mini.tcl:1121 ../tcl/mini.tcl:1121 +#: tcl/mini.tcl:1121 msgid "start offsets popup here" msgstr "Ouvrir la fenêtre des offsets ici" -#: tcl/mini.tcl:1165 ../tcl/mini.tcl:1165 +#: tcl/mini.tcl:1165 msgid "start override popup here" msgstr "Ouvrir la fenêtre des correcteurs ici" -#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1669 -#: ../tcl/mini.tcl:1168 ../tcl/tklinuxcnc.tcl:1576 -#: ../share/axis/tcl/axis.tcl:1669 +#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1739 msgid "Feed Override:" msgstr "Correcteur de vitesse:" -#: tcl/mini.tcl:1180 ../tcl/mini.tcl:1180 +#: tcl/mini.tcl:1180 msgid "-- MESSAGES --" msgstr "-- MESSAGES --" -#: tcl/mini.tcl:1230 ../tcl/mini.tcl:1230 +#: tcl/mini.tcl:1230 msgid "toggleView's not doin nothin yet" msgstr "Le basculement des vues ne donnera rien ici" -#: tcl/mini.tcl:1282 ../tcl/mini.tcl:1282 +#: tcl/mini.tcl:1282 msgid "Can't set zero with a tool offset active so I issued G49 to cancel it." msgstr "" "Impossible de régler le zéro avec l'offset d'outil activé, un G49 a donc été " "appliqué pour le désactiver" -#: tcl/mini.tcl:1346 ../tcl/mini.tcl:1346 +#: tcl/mini.tcl:1346 #, tcl-format msgid "Can't update the var file while machine is in auto and %s." msgstr "" "Impossible de mettre le fichier de variables à jour tant que la machine est " "en auto et %s" -#: tcl/mini.tcl:1400 tcl/tklinuxcnc.tcl:1227 ../tcl/mini.tcl:1400 -#: ../tcl/tklinuxcnc.tcl:1227 +#: tcl/mini.tcl:1400 tcl/tklinuxcnc.tcl:1227 msgid "override limits" msgstr "Dépassement de limite" -#: tcl/mini.tcl:1405 tcl/tklinuxcnc.tcl:1263 ../tcl/mini.tcl:1405 -#: ../tcl/tklinuxcnc.tcl:1263 +#: tcl/mini.tcl:1405 tcl/tklinuxcnc.tcl:1263 msgid "home" msgstr "origine" -#: tcl/mini.tcl:1426 ../tcl/mini.tcl:1426 +#: tcl/mini.tcl:1426 msgid "DEFAULT" msgstr "DÉFAUT" -#: tcl/mini.tcl:1427 ../tcl/mini.tcl:1427 +#: tcl/mini.tcl:1427 msgid "Speed:" msgstr "Vitesse:" -#: tcl/mini.tcl:1430 ../tcl/mini.tcl:1430 +#: tcl/mini.tcl:1430 msgid "RAPID" msgstr "RAPIDE" -#: tcl/mini.tcl:1447 tcl/tklinuxcnc.tcl:1391 ../tcl/mini.tcl:1447 -#: ../tcl/tklinuxcnc.tcl:1391 +#: tcl/mini.tcl:1447 tcl/tklinuxcnc.tcl:1391 msgid "Set Jog Speed" msgstr "Ajuster la vitesse de jog" -#: tcl/mini.tcl:1453 tcl/tklinuxcnc.tcl:1404 ../tcl/mini.tcl:1453 -#: ../tcl/tklinuxcnc.tcl:1404 +#: tcl/mini.tcl:1453 tcl/tklinuxcnc.tcl:1404 msgid "Set jog speed:" msgstr "Ajuster la vitesse de jog:" -#: tcl/mini.tcl:1511 ../tcl/mini.tcl:1511 +#: tcl/mini.tcl:1511 msgid "JOG X +" msgstr "JOG X +" -#: tcl/mini.tcl:1512 ../tcl/mini.tcl:1512 +#: tcl/mini.tcl:1512 msgid "JOG X -" msgstr "JOG X -" -#: tcl/mini.tcl:1516 ../tcl/mini.tcl:1516 +#: tcl/mini.tcl:1516 msgid "increment" msgstr "incréments" #: tcl/mini.tcl:1518 tcl/tklinuxcnc.tcl:602 tcl/tklinuxcnc.tcl:1249 -#: tcl/tklinuxcnc.tcl:1253 ../tcl/mini.tcl:1518 ../tcl/tklinuxcnc.tcl:602 -#: ../tcl/tklinuxcnc.tcl:1249 ../tcl/tklinuxcnc.tcl:1253 +#: tcl/tklinuxcnc.tcl:1253 src/emc/usr_intf/gscreen/gscreen.glade:1574 +#: src/emc/usr_intf/gscreen/gscreen.glade:1586 msgid "continuous" msgstr "continu" -#: tcl/mini.tcl:1520 ../tcl/mini.tcl:1520 +#: tcl/mini.tcl:1520 msgid "" "A\n" "L\n" @@ -2120,128 +3641,86 @@ msgstr "" "O" #: tcl/mini.tcl:1588 src/emc/usr_intf/touchy/touchy.glade:1422 -#: ../tcl/mini.tcl:1588 emc/usr_intf/touchy/touchy.glade:1422 msgid "Spindle Forward" msgstr "Broche sens horaire" #: tcl/mini.tcl:1589 src/emc/usr_intf/touchy/touchy.glade:1433 -#: ../tcl/mini.tcl:1589 emc/usr_intf/touchy/touchy.glade:1433 msgid "Spindle Reverse" msgstr "Broche sens anti-horaire" -#: tcl/mini.tcl:1590 tcl/tklinuxcnc.tcl:871 ../tcl/mini.tcl:1590 -#: ../tcl/tklinuxcnc.tcl:871 +#: tcl/mini.tcl:1590 tcl/tklinuxcnc.tcl:871 msgid "Spindle off" msgstr "Arrêt de broche" #: tcl/mini.tcl:1592 src/emc/usr_intf/touchy/touchy.glade:1479 -#: ../tcl/mini.tcl:1592 emc/usr_intf/touchy/touchy.glade:1479 msgid "Spindle Slower" msgstr "Broche moins vite" #: tcl/mini.tcl:1596 src/emc/usr_intf/touchy/touchy.glade:1464 -#: ../tcl/mini.tcl:1596 emc/usr_intf/touchy/touchy.glade:1464 msgid "Spindle Faster" msgstr "Broche plus vite" -#: tcl/mini.tcl:1632 tcl/tklinuxcnc.tcl:1620 ../tcl/mini.tcl:1632 -#: ../tcl/tklinuxcnc.tcl:1620 +#: tcl/mini.tcl:1632 tcl/tklinuxcnc.tcl:1620 msgid "MDI:" msgstr "MDI:" #: tcl/mini.tcl:1669 tcl/tklinuxcnc.tcl:1658 -#: src/emc/usr_intf/stepconf/stepconf.glade:4403 -#: src/emc/usr_intf/pncconf/pncconf.glade:60509 -#: src/emc/usr_intf/pncconf/pncconf.glade:61603 -#: src/emc/usr_intf/pncconf/pncconf.glade:62696 -#: src/emc/usr_intf/pncconf/pncconf.glade:63789 -#: src/emc/usr_intf/pncconf/pncconf.glade:64889 ../tcl/mini.tcl:1669 -#: ../tcl/tklinuxcnc.tcl:1658 emc/usr_intf/stepconf/stepconf.glade:4403 -#: emc/usr_intf/pncconf/pncconf.glade:60509 -#: emc/usr_intf/pncconf/pncconf.glade:61603 -#: emc/usr_intf/pncconf/pncconf.glade:62696 -#: emc/usr_intf/pncconf/pncconf.glade:63789 -#: emc/usr_intf/pncconf/pncconf.glade:64889 -#: src/emc/usr_intf/pncconf/pncconf.glade:67485 -#: src/emc/usr_intf/pncconf/pncconf.glade:68579 -#: src/emc/usr_intf/pncconf/pncconf.glade:69672 -#: src/emc/usr_intf/pncconf/pncconf.glade:70765 -#: src/emc/usr_intf/pncconf/pncconf.glade:71865 +#: src/emc/usr_intf/stepconf/main_page.glade:298 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2625 msgid "Run" msgstr "Lancer" #: tcl/mini.tcl:1671 tcl/tklinuxcnc.tcl:1659 -#: src/emc/usr_intf/pncconf/pncconf.glade:60574 -#: src/emc/usr_intf/pncconf/pncconf.glade:61668 -#: src/emc/usr_intf/pncconf/pncconf.glade:62761 -#: src/emc/usr_intf/pncconf/pncconf.glade:63854 ../tcl/mini.tcl:1671 -#: ../tcl/tklinuxcnc.tcl:1659 emc/usr_intf/pncconf/pncconf.glade:60574 -#: emc/usr_intf/pncconf/pncconf.glade:61668 -#: emc/usr_intf/pncconf/pncconf.glade:62761 -#: emc/usr_intf/pncconf/pncconf.glade:63854 -#: src/emc/usr_intf/pncconf/pncconf.glade:67550 -#: src/emc/usr_intf/pncconf/pncconf.glade:68644 -#: src/emc/usr_intf/pncconf/pncconf.glade:69737 -#: src/emc/usr_intf/pncconf/pncconf.glade:70830 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2638 msgid "Pause" msgstr "Pause" -#: tcl/mini.tcl:1673 tcl/tklinuxcnc.tcl:1660 ../tcl/mini.tcl:1673 -#: ../tcl/tklinuxcnc.tcl:1660 +#: tcl/mini.tcl:1673 tcl/tklinuxcnc.tcl:1660 msgid "Resume" msgstr "Reprise" -#: tcl/mini.tcl:1675 tcl/tklinuxcnc.tcl:1661 ../tcl/mini.tcl:1675 -#: ../tcl/tklinuxcnc.tcl:1661 +#: tcl/mini.tcl:1675 tcl/tklinuxcnc.tcl:1661 msgid "Step" msgstr "Pas à pas" -#: tcl/mini.tcl:1677 tcl/tklinuxcnc.tcl:1662 ../tcl/mini.tcl:1677 -#: ../tcl/tklinuxcnc.tcl:1662 +#: tcl/mini.tcl:1677 tcl/tklinuxcnc.tcl:1662 msgid "Verify" msgstr "Vérifier" -#: tcl/mini.tcl:1698 ../tcl/mini.tcl:1698 +#: tcl/mini.tcl:1698 msgid "RESTART LINE" msgstr "LIGNE DE REPRISE" -#: tcl/mini.tcl:1699 ../tcl/mini.tcl:1699 +#: tcl/mini.tcl:1699 src/emc/usr_intf/stepconf/main_page.glade:531 msgid "Back" msgstr "Arrière" -#: tcl/mini.tcl:1700 ../tcl/mini.tcl:1700 +#: tcl/mini.tcl:1700 msgid "Ahead" msgstr "Avant" -#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1221 ../tcl/mini.tcl:1701 -#: ../tcl/ngcgui.tcl:1221 tcl/ngcgui.tcl:1247 +#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1300 +#: src/emc/usr_intf/gscreen/gscreen.glade:3973 msgid "Restart" msgstr "Reprise" -#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 -#: tcl/tklinuxcnc.tcl:465 src/emc/usr_intf/axis/scripts/axis.py:1872 +#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 tcl/tklinuxcnc.tcl:465 +#: src/emc/usr_intf/axis/scripts/axis.py:2023 #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:754 -#: src/emc/usr_intf/axis/scripts/axis.py:1885 ../tcl/mini.tcl:1711 -#: ../tcl/mini.tcl:2823 ../tcl/mini.tcl:2882 ../tcl/tklinuxcnc.tcl:465 -#: emc/usr_intf/axis/scripts/axis.py:1872 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:754 -#: src/emc/usr_intf/axis/scripts/axis.py:1876 msgid "All files" msgstr "Tous les fichiers" -#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 -#: tcl/tklinuxcnc.tcl:466 ../tcl/mini.tcl:1712 ../tcl/mini.tcl:2824 -#: ../tcl/mini.tcl:2883 ../tcl/tklinuxcnc.tcl:466 +#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 tcl/tklinuxcnc.tcl:466 msgid "Text files" msgstr "Fichiers texte" -#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 -#: tcl/tklinuxcnc.tcl:467 ../tcl/mini.tcl:1713 ../tcl/mini.tcl:2825 -#: ../tcl/mini.tcl:2884 ../tcl/tklinuxcnc.tcl:467 +#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 tcl/tklinuxcnc.tcl:467 msgid "NC files" msgstr "Fichiers NC" -#: tcl/mini.tcl:1753 ../tcl/mini.tcl:1753 +#: tcl/mini.tcl:1753 msgid "" "The interpreter is running. \n" " Pressing OK will abort and load the new program" @@ -2249,99 +3728,83 @@ msgstr "" "L'interpréteur est en marche. \n" " Presser OK va annuler et charger le nouveau programme" -#: tcl/mini.tcl:1886 ../tcl/mini.tcl:1886 +#: tcl/mini.tcl:1886 msgid "ESTOPPED" msgstr "A/U ENGAGÉ" -#: tcl/mini.tcl:1889 ../tcl/mini.tcl:1889 +#: tcl/mini.tcl:1889 msgid "ESTOP PUSH" msgstr "A/U" -#: tcl/mini.tcl:1892 tcl/tklinuxcnc.tcl:2233 ../tcl/mini.tcl:1892 -#: ../tcl/tklinuxcnc.tcl:2233 +#: tcl/mini.tcl:1892 tcl/tklinuxcnc.tcl:2233 msgid "ESTOP RESET" msgstr "A/U LIBÉRÉ" -#: tcl/mini.tcl:1897 tcl/tklinuxcnc.tcl:2298 ../tcl/mini.tcl:1897 -#: ../tcl/tklinuxcnc.tcl:2298 +#: tcl/mini.tcl:1897 tcl/tklinuxcnc.tcl:2298 msgid "SPINDLE FORWARD" msgstr "BROCHE SENS HORAIRE" -#: tcl/mini.tcl:1899 tcl/tklinuxcnc.tcl:2300 ../tcl/mini.tcl:1899 -#: ../tcl/tklinuxcnc.tcl:2300 +#: tcl/mini.tcl:1899 tcl/tklinuxcnc.tcl:2300 msgid "SPINDLE REVERSE" msgstr "BROCHE SENS ANTI-HORAIRE" -#: tcl/mini.tcl:1901 tcl/tklinuxcnc.tcl:2302 ../tcl/mini.tcl:1901 -#: ../tcl/tklinuxcnc.tcl:2302 +#: tcl/mini.tcl:1901 tcl/tklinuxcnc.tcl:2302 msgid "SPINDLE OFF" msgstr "ARRÊT BROCHE" -#: tcl/mini.tcl:1903 tcl/tklinuxcnc.tcl:2304 ../tcl/mini.tcl:1903 -#: ../tcl/tklinuxcnc.tcl:2304 +#: tcl/mini.tcl:1903 tcl/tklinuxcnc.tcl:2304 msgid "SPINDLE INCREASE" msgstr "BROCHE ACCÉLÈRE" -#: tcl/mini.tcl:1905 tcl/tklinuxcnc.tcl:2306 ../tcl/mini.tcl:1905 -#: ../tcl/tklinuxcnc.tcl:2306 +#: tcl/mini.tcl:1905 tcl/tklinuxcnc.tcl:2306 msgid "SPINDLE DECREASE" msgstr "BROCHE DÉCÉLÈRE" -#: tcl/mini.tcl:1907 tcl/tklinuxcnc.tcl:2308 ../tcl/mini.tcl:1907 -#: ../tcl/tklinuxcnc.tcl:2308 +#: tcl/mini.tcl:1907 tcl/tklinuxcnc.tcl:2308 msgid "SPINDLE ?" msgstr "BROCHE ?" -#: tcl/mini.tcl:1911 tcl/tklinuxcnc.tcl:2312 ../tcl/mini.tcl:1911 -#: ../tcl/tklinuxcnc.tcl:2312 +#: tcl/mini.tcl:1911 tcl/tklinuxcnc.tcl:2312 msgid "BRAKE ON" msgstr "FREIN ENGAGÉ" -#: tcl/mini.tcl:1913 tcl/tklinuxcnc.tcl:2314 ../tcl/mini.tcl:1913 -#: ../tcl/tklinuxcnc.tcl:2314 +#: tcl/mini.tcl:1913 tcl/tklinuxcnc.tcl:2314 msgid "BRAKE OFF" msgstr "FREIN LIBÉRÉ" -#: tcl/mini.tcl:1915 tcl/tklinuxcnc.tcl:2316 ../tcl/mini.tcl:1915 -#: ../tcl/tklinuxcnc.tcl:2316 +#: tcl/mini.tcl:1915 tcl/tklinuxcnc.tcl:2316 msgid "BRAKE ?" msgstr "FREIN ?" -#: tcl/mini.tcl:1919 tcl/tklinuxcnc.tcl:2274 ../tcl/mini.tcl:1919 -#: ../tcl/tklinuxcnc.tcl:2274 +#: tcl/mini.tcl:1919 tcl/tklinuxcnc.tcl:2274 msgid "MIST ON" msgstr "AVEC GOUTTELETTES" -#: tcl/mini.tcl:1921 tcl/tklinuxcnc.tcl:2276 ../tcl/mini.tcl:1921 -#: ../tcl/tklinuxcnc.tcl:2276 +#: tcl/mini.tcl:1921 tcl/tklinuxcnc.tcl:2276 msgid "MIST OFF" msgstr "SANS GOUTELETTES" -#: tcl/mini.tcl:1923 tcl/tklinuxcnc.tcl:2278 ../tcl/mini.tcl:1923 -#: ../tcl/tklinuxcnc.tcl:2278 +#: tcl/mini.tcl:1923 tcl/tklinuxcnc.tcl:2278 msgid "MIST ?" msgstr "GOUTTELETTES ?" -#: tcl/mini.tcl:1927 tcl/tklinuxcnc.tcl:2282 ../tcl/mini.tcl:1927 -#: ../tcl/tklinuxcnc.tcl:2282 +#: tcl/mini.tcl:1927 tcl/tklinuxcnc.tcl:2282 msgid "FLOOD ON" msgstr "AVEC ARROSAGE" -#: tcl/mini.tcl:1929 tcl/tklinuxcnc.tcl:2284 ../tcl/mini.tcl:1929 -#: ../tcl/tklinuxcnc.tcl:2284 +#: tcl/mini.tcl:1929 tcl/tklinuxcnc.tcl:2284 msgid "FLOOD OFF" msgstr "SANS ARROSAGE" -#: tcl/mini.tcl:1931 tcl/tklinuxcnc.tcl:2286 ../tcl/mini.tcl:1931 -#: ../tcl/tklinuxcnc.tcl:2286 +#: tcl/mini.tcl:1931 tcl/tklinuxcnc.tcl:2286 msgid "FLOOD ?" msgstr "ARROSAGE ?" -#: tcl/mini.tcl:2052 ../tcl/mini.tcl:2052 +#: tcl/mini.tcl:2052 msgid "FEEDHOLD" msgstr "VITESSE-0" -#: tcl/mini.tcl:2124 ../tcl/mini.tcl:2124 +#: tcl/mini.tcl:2124 #, fuzzy msgid "" "TOOL SETUP \n" @@ -2351,43 +3814,42 @@ msgstr "" " Clique ou Tab pour éditer. Presser Entrée pour retourner au contrôle de " "la machine depuis le clavier." -#: tcl/mini.tcl:2130 ../tcl/mini.tcl:2130 +#: tcl/mini.tcl:2130 msgid " TOOL NUMBER " msgstr "NUMÉRO D'OUTIL" -#: tcl/mini.tcl:2131 ../tcl/mini.tcl:2131 +#: tcl/mini.tcl:2131 msgid " LENGTH " msgstr " LONGUEUR " -#: tcl/mini.tcl:2132 ../tcl/mini.tcl:2132 +#: tcl/mini.tcl:2132 msgid " DIAMETER " msgstr " DIAMÈTRE " -#: tcl/mini.tcl:2133 ../tcl/mini.tcl:2133 +#: tcl/mini.tcl:2133 msgid " COMMENT " msgstr " COMMENTAIRE " -#: tcl/mini.tcl:2188 ../tcl/mini.tcl:2188 +#: tcl/mini.tcl:2188 msgid "Add Extra Tool" msgstr "Ajouter un outil" -#: tcl/mini.tcl:2189 ../tcl/mini.tcl:2189 +#: tcl/mini.tcl:2189 msgid "Remove Last Tool" msgstr "Enlever le dernier outil" -#: tcl/mini.tcl:2217 tcl/mini.tcl:2253 ../tcl/mini.tcl:2217 -#: ../tcl/mini.tcl:2253 +#: tcl/mini.tcl:2217 tcl/mini.tcl:2253 #, tcl-format msgid "Can't update the tool file while machine is in auto and %s." msgstr "" "Impossible de mettre à jour le fichier d'outils tant que la machine est en " "auto et %s" -#: tcl/mini.tcl:2229 ../tcl/mini.tcl:2229 +#: tcl/mini.tcl:2229 msgid "This is not a good number." msgstr "Ce n'est pas un nombre correct." -#: tcl/mini.tcl:2293 ../tcl/mini.tcl:2293 +#: tcl/mini.tcl:2293 msgid "" "COORDINATE SYSTEM SETUP \n" "\n" @@ -2401,113 +3863,114 @@ msgstr "" "contrôle de la machine depuis le clavier. \n" " " -#: tcl/mini.tcl:2320 tcl/scripts/Set_Coordinates.tcl:80 ../tcl/mini.tcl:2320 -#: ../tcl/scripts/Set_Coordinates.tcl:80 +#: tcl/mini.tcl:2320 tcl/scripts/Set_Coordinates.tcl:80 msgid "Axis " msgstr "Axe" -#: tcl/mini.tcl:2321 ../tcl/mini.tcl:2321 +#: tcl/mini.tcl:2321 msgid "Value " msgstr "Valeur" -#: tcl/mini.tcl:2326 tcl/scripts/Set_Coordinates.tcl:91 ../tcl/mini.tcl:2326 -#: ../tcl/scripts/Set_Coordinates.tcl:91 +#: tcl/mini.tcl:2326 tcl/scripts/Set_Coordinates.tcl:91 msgid "Teach" msgstr "Apprentissage" -#: tcl/mini.tcl:2334 ../tcl/mini.tcl:2334 +#: tcl/mini.tcl:2334 msgid "Write And Load File " msgstr "Enregistrer et recharger le fichier" -#: tcl/mini.tcl:2336 ../tcl/mini.tcl:2336 +#: tcl/mini.tcl:2336 msgid "Offset By Radius" msgstr "Offset par rayon" -#: tcl/mini.tcl:2337 ../tcl/mini.tcl:2337 +#: tcl/mini.tcl:2337 msgid "Offset By Length" msgstr "Offset par longueur" -#: tcl/mini.tcl:2342 ../tcl/mini.tcl:2342 +#: tcl/mini.tcl:2342 msgid "Subtract" msgstr "Soustraire" -#: tcl/mini.tcl:2344 ../tcl/mini.tcl:2344 +#: tcl/mini.tcl:2344 src/emc/usr_intf/gmoccapy/gmoccapy.glade:6712 msgid "Add" msgstr "Ajouter" -#: tcl/mini.tcl:2366 ../tcl/mini.tcl:2366 +#: tcl/mini.tcl:2366 msgid "Zero All G54" msgstr "Tous les G54 à zéro" -#: tcl/mini.tcl:2367 ../tcl/mini.tcl:2367 +#: tcl/mini.tcl:2367 msgid "Zero All G55" msgstr "Tous les G55 à zéro" -#: tcl/mini.tcl:2368 ../tcl/mini.tcl:2368 +#: tcl/mini.tcl:2368 msgid "Zero All G56" msgstr "Tous les G56 à zéro" -#: tcl/mini.tcl:2369 ../tcl/mini.tcl:2369 +#: tcl/mini.tcl:2369 msgid "Zero All G57" msgstr "Tous les G57 à zéro" -#: tcl/mini.tcl:2370 ../tcl/mini.tcl:2370 +#: tcl/mini.tcl:2370 msgid "Zero All G58" msgstr "Tous les G58 à zéro" -#: tcl/mini.tcl:2371 ../tcl/mini.tcl:2371 +#: tcl/mini.tcl:2371 msgid "Zero All G59" msgstr "Tous les G59 à zéro" -#: tcl/mini.tcl:2372 ../tcl/mini.tcl:2372 +#: tcl/mini.tcl:2372 msgid "Zero All G59.1" msgstr "Tous les G59.1 à zéro" -#: tcl/mini.tcl:2373 ../tcl/mini.tcl:2373 +#: tcl/mini.tcl:2373 msgid "Zero All G59.2" msgstr "Tous les G59.2 à zéro" -#: tcl/mini.tcl:2374 ../tcl/mini.tcl:2374 +#: tcl/mini.tcl:2374 msgid "Zero All G59.3" msgstr "Tous les G59.3 à zéro" -#: tcl/mini.tcl:2375 ../tcl/mini.tcl:2375 +#: tcl/mini.tcl:2375 msgid "Zero All ????" msgstr "Tous les ???? à zéro" -#: tcl/mini.tcl:2493 ../tcl/mini.tcl:2493 +#: tcl/mini.tcl:2493 msgid "Modified..." msgstr "Modifié..." -#: tcl/mini.tcl:2538 ../tcl/mini.tcl:2538 +#: tcl/mini.tcl:2538 msgid "Save and Load" msgstr "Enregistrer et charger" -#: tcl/mini.tcl:2540 ../tcl/mini.tcl:2540 +#: tcl/mini.tcl:2540 src/emc/usr_intf/gscreen/gscreen.glade:3515 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2363 msgid "Undo" msgstr "Annuler" -#: tcl/mini.tcl:2541 ../tcl/mini.tcl:2541 +#: tcl/mini.tcl:2541 src/emc/usr_intf/gscreen/gscreen.glade:3526 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2411 msgid "Redo" msgstr "Rétablir" -#: tcl/mini.tcl:2546 ../tcl/mini.tcl:2546 src/emc/usr_intf/tooledit.tcl:488 +#: tcl/mini.tcl:2546 tcl/tooledit.tcl:488 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6695 msgid "Delete" msgstr "Effacer" -#: tcl/mini.tcl:2551 ../tcl/mini.tcl:2551 +#: tcl/mini.tcl:2551 msgid "Replace..." msgstr "Remplacer" -#: tcl/mini.tcl:2664 ../tcl/mini.tcl:2664 +#: tcl/mini.tcl:2664 msgid "Next Number: " msgstr "Numéro suivant: " -#: tcl/mini.tcl:2765 ../tcl/mini.tcl:2765 +#: tcl/mini.tcl:2765 msgid "Basic Help" msgstr "Aide simplifiée" -#: tcl/mini.tcl:2765 ../tcl/mini.tcl:2765 +#: tcl/mini.tcl:2765 msgid "" "This is a simple ASCII editor like many others.\n" "\n" @@ -2539,7 +4002,7 @@ msgstr "" "Ctrl+F Chercher\n" "Ctrl+R Remplacer " -#: tcl/mini.tcl:2785 ../tcl/mini.tcl:2785 +#: tcl/mini.tcl:2785 msgid "" "tknotepad by Joseph Acosta. \n" "\n" @@ -2549,7 +4012,7 @@ msgstr "" "\n" " Modifié pour LinuxCNC par: Paul Corner " -#: tcl/mini.tcl:2793 ../tcl/mini.tcl:2793 +#: tcl/mini.tcl:2793 msgid "" "The contents of this file may have changed, do you wish to to save your " "changes?" @@ -2557,79 +4020,81 @@ msgstr "" "Le contenu de ce fichier peut avoir changé, voulez-vous enregistrer vos " "changements ?" -#: tcl/mini.tcl:2794 ../tcl/mini.tcl:2794 +#: tcl/mini.tcl:2794 msgid "New Confirm?" msgstr "Nouvelle confirmation ?" -#: tcl/mini.tcl:2928 ../tcl/mini.tcl:2928 +#: tcl/mini.tcl:2928 msgid "Print Setup" msgstr "Réglages imprimante" -#: tcl/mini.tcl:2932 ../tcl/mini.tcl:2932 +#: tcl/mini.tcl:2932 msgid "Print Command: " msgstr "Commande d'impression:" -#: tcl/mini.tcl:3095 ../tcl/mini.tcl:3095 +#: tcl/mini.tcl:3095 msgid "Find what:" msgstr "Chercher quoi:" -#: tcl/mini.tcl:3101 ../tcl/mini.tcl:3101 +#: tcl/mini.tcl:3101 msgid "Replace with:" msgstr "Remplacer par:" -#: tcl/mini.tcl:3109 ../tcl/mini.tcl:3109 +#: tcl/mini.tcl:3109 msgid "Find Next" msgstr "Trouver le suivant" -#: tcl/mini.tcl:3112 ../tcl/mini.tcl:3112 +#: tcl/mini.tcl:3112 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2494 msgid "Replace" msgstr "Remplacer" -#: tcl/mini.tcl:3120 ../tcl/mini.tcl:3120 +#: tcl/mini.tcl:3120 src/emc/usr_intf/gscreen/gscreen.py:2750 +#: src/emc/usr_intf/gmoccapy/dialogs.py:171 msgid "Up" msgstr "Haut" -#: tcl/mini.tcl:3121 ../tcl/mini.tcl:3121 +#: tcl/mini.tcl:3121 src/emc/usr_intf/gscreen/gscreen.py:2754 +#: src/emc/usr_intf/gmoccapy/dialogs.py:175 msgid "Down" msgstr "Bas" -#: tcl/mini.tcl:3124 ../tcl/mini.tcl:3124 +#: tcl/mini.tcl:3124 msgid "Match case" msgstr "Majuscule" -#: tcl/mini.tcl:3569 ../tcl/mini.tcl:3569 +#: tcl/mini.tcl:3569 msgid "rot-x" msgstr "Tourner x" -#: tcl/mini.tcl:3579 ../tcl/mini.tcl:3579 +#: tcl/mini.tcl:3579 msgid "rot-y" msgstr "Tourner y" -#: tcl/mini.tcl:3589 ../tcl/mini.tcl:3589 +#: tcl/mini.tcl:3589 msgid "rot-z" msgstr "Tourner z" -#: tcl/mini.tcl:3599 ../tcl/mini.tcl:3599 +#: tcl/mini.tcl:3599 msgid "zoom" msgstr "zoomer" -#: tcl/mini.tcl:3655 ../tcl/mini.tcl:3655 +#: tcl/mini.tcl:3655 msgid "TEST" msgstr "TESTER" -#: tcl/mini.tcl:3699 ../tcl/mini.tcl:3699 +#: tcl/mini.tcl:3699 msgid "Hide Setup" msgstr "Masquer les réglages" -#: tcl/mini.tcl:3703 ../tcl/mini.tcl:3703 +#: tcl/mini.tcl:3703 msgid "Show Setup" msgstr "Afficher les réglages" -#: tcl/show_errors.tcl:41 ../tcl/show_errors.tcl:41 +#: tcl/show_errors.tcl:41 msgid "LinuxCNC Errors" msgstr "Erreurs de LinuxCNC" -#: tcl/show_errors.tcl:44 ../tcl/show_errors.tcl:44 +#: tcl/show_errors.tcl:44 msgid "" "LinuxCNC terminated with an error. When reporting problems, please include " "all the information below in your message." @@ -2637,75 +4102,64 @@ msgstr "" "LinuxCNC s'est terminé avec une erreur. Si vous rapportez le problème, " "merci d'inclure toutes les informations suivantes dans votre message." -#: tcl/show_errors.tcl:69 tcl/scripts/Set_Coordinates.tcl:103 -#: ../tcl/show_errors.tcl:69 ../tcl/scripts/Set_Coordinates.tcl:103 +#: tcl/show_errors.tcl:74 tcl/scripts/Set_Coordinates.tcl:103 msgid "Close" msgstr "Fermer" -#: tcl/tklinuxcnc.tcl:154 tcl/tklinuxcnc.tcl:181 ../tcl/tklinuxcnc.tcl:154 -#: ../tcl/tklinuxcnc.tcl:181 +#: tcl/tklinuxcnc.tcl:154 tcl/tklinuxcnc.tcl:181 msgid "Set Run Mark" msgstr "Ajuster point de départ" -#: tcl/tklinuxcnc.tcl:156 ../tcl/tklinuxcnc.tcl:156 +#: tcl/tklinuxcnc.tcl:156 #, tcl-format msgid "Set run mark at line %s?" msgstr "Ajuster point de départ sur la ligne %s?" -#: tcl/tklinuxcnc.tcl:176 tcl/tklinuxcnc.tcl:204 ../tcl/tklinuxcnc.tcl:176 -#: ../tcl/tklinuxcnc.tcl:204 +#: tcl/tklinuxcnc.tcl:176 tcl/tklinuxcnc.tcl:204 msgid "untitled" msgstr "Sans titre" -#: tcl/tklinuxcnc.tcl:212 ../tcl/tklinuxcnc.tcl:212 +#: tcl/tklinuxcnc.tcl:212 msgid "Load Parameter File" msgstr "Chargement du fichier de paramètres" -#: tcl/tklinuxcnc.tcl:261 ../tcl/tklinuxcnc.tcl:261 +#: tcl/tklinuxcnc.tcl:261 msgid "LinuxCNC Diagnostics" msgstr "Diagnostics LinuxCNC" -#: tcl/tklinuxcnc.tcl:263 ../tcl/tklinuxcnc.tcl:263 +#: tcl/tklinuxcnc.tcl:263 msgid "Task" msgstr "Tâche" #: tcl/tklinuxcnc.tcl:265 tcl/tklinuxcnc.tcl:288 tcl/tklinuxcnc.tcl:311 -#: ../tcl/tklinuxcnc.tcl:265 ../tcl/tklinuxcnc.tcl:288 -#: ../tcl/tklinuxcnc.tcl:311 msgid "Heartbeat:" msgstr "Fréquence:" #: tcl/tklinuxcnc.tcl:268 tcl/tklinuxcnc.tcl:291 tcl/tklinuxcnc.tcl:314 -#: ../tcl/tklinuxcnc.tcl:268 ../tcl/tklinuxcnc.tcl:291 -#: ../tcl/tklinuxcnc.tcl:314 msgid "Command:" msgstr "Commande:" #: tcl/tklinuxcnc.tcl:271 tcl/tklinuxcnc.tcl:294 tcl/tklinuxcnc.tcl:317 -#: ../tcl/tklinuxcnc.tcl:271 ../tcl/tklinuxcnc.tcl:294 -#: ../tcl/tklinuxcnc.tcl:317 msgid "Command #:" msgstr "Commande #:" #: tcl/tklinuxcnc.tcl:274 tcl/tklinuxcnc.tcl:297 tcl/tklinuxcnc.tcl:320 -#: ../tcl/tklinuxcnc.tcl:274 ../tcl/tklinuxcnc.tcl:297 -#: ../tcl/tklinuxcnc.tcl:320 msgid "Status:" msgstr "Status:" -#: tcl/tklinuxcnc.tcl:286 ../tcl/tklinuxcnc.tcl:286 +#: tcl/tklinuxcnc.tcl:286 msgid "Io" msgstr "E/s" -#: tcl/tklinuxcnc.tcl:309 ../tcl/tklinuxcnc.tcl:309 +#: tcl/tklinuxcnc.tcl:309 msgid "Motion" msgstr "Mouvement" -#: tcl/tklinuxcnc.tcl:350 ../tcl/tklinuxcnc.tcl:350 +#: tcl/tklinuxcnc.tcl:350 msgid "About TkLinuxCNC" msgstr "A propos de TkLinuxCNC" -#: tcl/tklinuxcnc.tcl:351 ../tcl/tklinuxcnc.tcl:351 +#: tcl/tklinuxcnc.tcl:351 msgid "" "TkLinuxcnc\n" "\n" @@ -2719,367 +4173,324 @@ msgstr "" "\n" "Domaine Publique (1999)/n Traduction française de Francis Tisserant." -#: tcl/tklinuxcnc.tcl:399 ../tcl/tklinuxcnc.tcl:399 +#: tcl/tklinuxcnc.tcl:399 msgid "Set Tool Offset" msgstr "Ajuster l'offset d'outil" -#: tcl/tklinuxcnc.tcl:404 tcl/tklinuxcnc.tcl:905 ../tcl/tklinuxcnc.tcl:404 -#: ../tcl/tklinuxcnc.tcl:905 +#: tcl/tklinuxcnc.tcl:404 tcl/tklinuxcnc.tcl:905 msgid "Tool:" msgstr "Outil:" -#: tcl/tklinuxcnc.tcl:722 ../tcl/tklinuxcnc.tcl:722 +#: tcl/tklinuxcnc.tcl:722 msgid "Edit..." msgstr "Éditer.." -#: tcl/tklinuxcnc.tcl:727 ../tcl/tklinuxcnc.tcl:727 +#: tcl/tklinuxcnc.tcl:727 msgid "Tool Table Editor..." msgstr "Editeur de fichier d'outils..." #: tcl/tklinuxcnc.tcl:730 src/emc/usr_intf/touchy/touchy.glade:1383 -#: ../tcl/tklinuxcnc.tcl:730 emc/usr_intf/touchy/touchy.glade:1383 msgid "Reload Tool Table" msgstr "Recharger table d'outils" -#: tcl/tklinuxcnc.tcl:740 ../tcl/tklinuxcnc.tcl:740 +#: tcl/tklinuxcnc.tcl:740 msgid "Offsets and Variables..." msgstr "Offsets et variables.." -#: tcl/tklinuxcnc.tcl:741 ../tcl/tklinuxcnc.tcl:741 +#: tcl/tklinuxcnc.tcl:741 msgid "Diagnostics..." msgstr "Diagnostiques..." -#: tcl/tklinuxcnc.tcl:742 ../tcl/tklinuxcnc.tcl:742 +#: tcl/tklinuxcnc.tcl:742 msgid "Backplot..." msgstr "Parcours d'outil..." -#: tcl/tklinuxcnc.tcl:748 ../tcl/tklinuxcnc.tcl:748 +#: tcl/tklinuxcnc.tcl:748 msgid "Testing..." msgstr "Testing..." -#: tcl/tklinuxcnc.tcl:749 ../tcl/tklinuxcnc.tcl:749 +#: tcl/tklinuxcnc.tcl:749 msgid "Debug..." msgstr "Débogue..." -#: tcl/tklinuxcnc.tcl:750 ../tcl/tklinuxcnc.tcl:750 +#: tcl/tklinuxcnc.tcl:750 msgid "Font..." msgstr "Police..." #: tcl/tklinuxcnc.tcl:754 src/emc/usr_intf/axis/scripts/image-to-gcode.py:665 -#: ../tcl/tklinuxcnc.tcl:754 emc/usr_intf/axis/scripts/image-to-gcode.py:665 msgid "Units" msgstr "Unités" -#: tcl/tklinuxcnc.tcl:755 ../tcl/tklinuxcnc.tcl:755 +#: tcl/tklinuxcnc.tcl:755 msgid "auto" msgstr "auto" -#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8876 -#: ../tcl/tklinuxcnc.tcl:756 emc/usr_intf/pncconf/pncconf.py:8510 -#: src/emc/usr_intf/pncconf/pncconf.py:8512 +#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8873 msgid "inches" msgstr "pouces" -#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1543 -#: src/emc/usr_intf/axis/scripts/axis.py:1713 +#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1609 +#: src/emc/usr_intf/axis/scripts/axis.py:1855 +#: src/emc/usr_intf/axis/scripts/axis.py:2386 #: src/emc/usr_intf/touchy/touchy.glade:3301 -#: src/emc/usr_intf/stepconf/stepconf.py:1685 -#: src/emc/usr_intf/stepconf/stepconf.py:2221 -#: src/emc/usr_intf/stepconf/stepconf.glade:4357 -#: src/emc/usr_intf/pncconf/pncconf.py:8508 -#: src/emc/usr_intf/pncconf/pncconf.glade:2229 -#: src/emc/usr_intf/pncconf/pncconf.glade:2394 -#: src/emc/usr_intf/pncconf/pncconf.glade:57616 -#: src/emc/usr_intf/pncconf/pncconf.glade:57688 -#: src/emc/usr_intf/pncconf/pncconf.glade:60646 -#: src/emc/usr_intf/pncconf/pncconf.glade:61739 -#: src/emc/usr_intf/pncconf/pncconf.glade:62832 -#: src/emc/usr_intf/pncconf/pncconf.glade:63925 -#: src/emc/usr_intf/pncconf/pncconf.glade:65091 -#: src/emc/usr_intf/axis/scripts/axis.py:1556 -#: src/emc/usr_intf/axis/scripts/axis.py:1726 ../tcl/tklinuxcnc.tcl:757 -#: emc/usr_intf/axis/scripts/axis.py:1543 -#: emc/usr_intf/axis/scripts/axis.py:1713 -#: emc/usr_intf/touchy/touchy.glade:3301 -#: emc/usr_intf/stepconf/stepconf.py:1685 -#: emc/usr_intf/stepconf/stepconf.py:2221 -#: emc/usr_intf/stepconf/stepconf.glade:4357 -#: emc/usr_intf/pncconf/pncconf.py:8506 -#: emc/usr_intf/pncconf/pncconf.glade:2229 -#: emc/usr_intf/pncconf/pncconf.glade:2394 -#: emc/usr_intf/pncconf/pncconf.glade:57616 -#: emc/usr_intf/pncconf/pncconf.glade:57688 -#: emc/usr_intf/pncconf/pncconf.glade:60646 -#: emc/usr_intf/pncconf/pncconf.glade:61739 -#: emc/usr_intf/pncconf/pncconf.glade:62832 -#: emc/usr_intf/pncconf/pncconf.glade:63925 -#: emc/usr_intf/pncconf/pncconf.glade:65091 -#: src/emc/usr_intf/axis/scripts/axis.py:1547 -#: src/emc/usr_intf/axis/scripts/axis.py:1717 -#: src/emc/usr_intf/pncconf/pncconf.py:8851 -#: src/emc/usr_intf/pncconf/pncconf.glade:2237 -#: src/emc/usr_intf/pncconf/pncconf.glade:2402 -#: src/emc/usr_intf/pncconf/pncconf.glade:64589 -#: src/emc/usr_intf/pncconf/pncconf.glade:64661 -#: src/emc/usr_intf/pncconf/pncconf.glade:67622 -#: src/emc/usr_intf/pncconf/pncconf.glade:68715 -#: src/emc/usr_intf/pncconf/pncconf.glade:69808 -#: src/emc/usr_intf/pncconf/pncconf.glade:70901 -#: src/emc/usr_intf/pncconf/pncconf.glade:72067 +#: src/emc/usr_intf/stepconf/stepconf.py:1314 +#: src/emc/usr_intf/stepconf/pages.py:625 +#: src/emc/usr_intf/stepconf/main_page.glade:251 +#: src/emc/usr_intf/pncconf/pncconf.py:8869 +#: src/emc/usr_intf/pncconf/pncconf.glade:2195 +#: src/emc/usr_intf/pncconf/pncconf.glade:2362 +#: src/emc/usr_intf/pncconf/pncconf.glade:64552 +#: src/emc/usr_intf/pncconf/pncconf.glade:64621 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "mm" msgstr "mm" -#: tcl/tklinuxcnc.tcl:758 ../tcl/tklinuxcnc.tcl:758 +#: tcl/tklinuxcnc.tcl:758 msgid "cm" msgstr "cm" -#: tcl/tklinuxcnc.tcl:762 ../tcl/tklinuxcnc.tcl:762 +#: tcl/tklinuxcnc.tcl:762 msgid "Utilities" msgstr "Utilitaires" -#: tcl/tklinuxcnc.tcl:763 ../tcl/tklinuxcnc.tcl:763 +#: tcl/tklinuxcnc.tcl:763 msgid "Hal Scope" msgstr "HalScope" -#: tcl/tklinuxcnc.tcl:785 ../tcl/tklinuxcnc.tcl:785 +#: tcl/tklinuxcnc.tcl:785 msgid "HAL Show" msgstr "Afficher HAL" -#: tcl/tklinuxcnc.tcl:786 ../tcl/tklinuxcnc.tcl:786 +#: tcl/tklinuxcnc.tcl:786 msgid "HAL Config" msgstr "Configuration HAL" -#: tcl/tklinuxcnc.tcl:792 ../tcl/tklinuxcnc.tcl:792 +#: tcl/tklinuxcnc.tcl:792 msgid "Balloon help" msgstr "Bulle d'aide" -#: tcl/tklinuxcnc.tcl:815 ../tcl/tklinuxcnc.tcl:815 +#: tcl/tklinuxcnc.tcl:815 msgid "Estop on" msgstr "A/U engagé" -#: tcl/tklinuxcnc.tcl:816 ../tcl/tklinuxcnc.tcl:816 +#: tcl/tklinuxcnc.tcl:816 msgid "Estop off" msgstr "A/U libéré" -#: tcl/tklinuxcnc.tcl:818 ../tcl/tklinuxcnc.tcl:818 +#: tcl/tklinuxcnc.tcl:818 msgid "Machine on" msgstr "Machine en marche" -#: tcl/tklinuxcnc.tcl:819 ../tcl/tklinuxcnc.tcl:819 +#: tcl/tklinuxcnc.tcl:819 src/emc/usr_intf/gscreen/gscreen.glade:2452 msgid "Machine off" msgstr "Machine arrêtée" #: tcl/tklinuxcnc.tcl:826 src/emc/usr_intf/touchy/touchy.glade:1561 -#: ../tcl/tklinuxcnc.tcl:826 emc/usr_intf/touchy/touchy.glade:1561 msgid "Manual" msgstr "Manuel" -#: tcl/tklinuxcnc.tcl:835 ../tcl/tklinuxcnc.tcl:835 +#: tcl/tklinuxcnc.tcl:835 msgid "Mist on" msgstr "Avec gouttelettes" -#: tcl/tklinuxcnc.tcl:836 ../tcl/tklinuxcnc.tcl:836 +#: tcl/tklinuxcnc.tcl:836 msgid "Mist off" msgstr "Sans gouttelettes" -#: tcl/tklinuxcnc.tcl:843 ../tcl/tklinuxcnc.tcl:843 +#: tcl/tklinuxcnc.tcl:843 msgid "Flood on" msgstr "Avec arrosage" -#: tcl/tklinuxcnc.tcl:844 ../tcl/tklinuxcnc.tcl:844 +#: tcl/tklinuxcnc.tcl:844 msgid "Flood off" msgstr "Sans arrosage" -#: tcl/tklinuxcnc.tcl:851 ../tcl/tklinuxcnc.tcl:851 +#: tcl/tklinuxcnc.tcl:851 msgid "Lube on" msgstr "Avec lubrifiant" -#: tcl/tklinuxcnc.tcl:852 ../tcl/tklinuxcnc.tcl:852 +#: tcl/tklinuxcnc.tcl:852 msgid "Lube off" msgstr "Sans lubrifiant" -#: tcl/tklinuxcnc.tcl:869 ../tcl/tklinuxcnc.tcl:869 +#: tcl/tklinuxcnc.tcl:869 msgid "Spindle forward" msgstr "Broche sens horaire" -#: tcl/tklinuxcnc.tcl:870 ../tcl/tklinuxcnc.tcl:870 +#: tcl/tklinuxcnc.tcl:870 msgid "Spindle reverse" msgstr "Broche sens anti-horaire" -#: tcl/tklinuxcnc.tcl:885 ../tcl/tklinuxcnc.tcl:885 +#: tcl/tklinuxcnc.tcl:885 msgid "Brake on" msgstr "Frein engagé" -#: tcl/tklinuxcnc.tcl:886 ../tcl/tklinuxcnc.tcl:886 +#: tcl/tklinuxcnc.tcl:886 msgid "Brake off" msgstr "Frein libéré" -#: tcl/tklinuxcnc.tcl:907 ../tcl/tklinuxcnc.tcl:907 +#: tcl/tklinuxcnc.tcl:907 msgid "Offset:" msgstr "Offset:" -#: tcl/tklinuxcnc.tcl:913 ../tcl/tklinuxcnc.tcl:913 +#: tcl/tklinuxcnc.tcl:913 msgid "Work Offsets:" msgstr "Offsets de travail:" -#: tcl/tklinuxcnc.tcl:1233 ../tcl/tklinuxcnc.tcl:1233 +#: tcl/tklinuxcnc.tcl:1233 msgid "relative" msgstr "relatif" -#: tcl/tklinuxcnc.tcl:1234 ../tcl/tklinuxcnc.tcl:1234 +#: tcl/tklinuxcnc.tcl:1234 msgid "machine" msgstr "machine" -#: tcl/tklinuxcnc.tcl:1236 ../tcl/tklinuxcnc.tcl:1236 +#: tcl/tklinuxcnc.tcl:1236 msgid "actual" msgstr "actuelle" -#: tcl/tklinuxcnc.tcl:1237 ../tcl/tklinuxcnc.tcl:1237 +#: tcl/tklinuxcnc.tcl:1237 msgid "commanded" msgstr "commandée" -#: tcl/tklinuxcnc.tcl:1239 ../tcl/tklinuxcnc.tcl:1239 +#: tcl/tklinuxcnc.tcl:1239 msgid "joint" msgstr "jointure" -#: tcl/tklinuxcnc.tcl:1240 ../tcl/tklinuxcnc.tcl:1240 +#: tcl/tklinuxcnc.tcl:1240 msgid "world" msgstr "global" -#: tcl/tklinuxcnc.tcl:1333 ../tcl/tklinuxcnc.tcl:1333 +#: tcl/tklinuxcnc.tcl:1333 msgid "Axis Offset" msgstr "Offset d'axe" -#: tcl/tklinuxcnc.tcl:1335 ../tcl/tklinuxcnc.tcl:1335 +#: tcl/tklinuxcnc.tcl:1335 msgid "Set axis value:" msgstr "Ajuster valeurs d'axes" -#: tcl/tklinuxcnc.tcl:1429 ../tcl/tklinuxcnc.tcl:1429 +#: tcl/tklinuxcnc.tcl:1429 msgid "Set Feed Override" msgstr "Ajuster le correcteur de vitesse" -#: tcl/tklinuxcnc.tcl:1435 ../tcl/tklinuxcnc.tcl:1435 +#: tcl/tklinuxcnc.tcl:1435 msgid "Set feed override:" msgstr "Ajuster le correcteur de vitesse:" -#: tcl/tklinuxcnc.tcl:1460 ../tcl/tklinuxcnc.tcl:1460 +#: tcl/tklinuxcnc.tcl:1460 msgid "Set Spindle Override" msgstr "Ajuster le correcteur de vitesse de broche" -#: tcl/tklinuxcnc.tcl:1466 ../tcl/tklinuxcnc.tcl:1466 +#: tcl/tklinuxcnc.tcl:1466 msgid "Set spindle speed override:" msgstr "Ajustement de la vitesse de broche:" -#: tcl/tklinuxcnc.tcl:1521 ../tcl/tklinuxcnc.tcl:1521 +#: tcl/tklinuxcnc.tcl:1521 msgid "Linear Jog Speed" msgstr "Vitesse de jog linéaire" -#: tcl/tklinuxcnc.tcl:1552 ../tcl/tklinuxcnc.tcl:1552 +#: tcl/tklinuxcnc.tcl:1552 msgid "Angular Jog Speed (deg)/min:" msgstr "Vitesse de jog angulaire (degrés)/min:" -#: tcl/tklinuxcnc.tcl:1596 ../tcl/tklinuxcnc.tcl:1596 +#: tcl/tklinuxcnc.tcl:1596 msgid "Spindle speed Override:" msgstr "Ajustement de la vitesse de broche:" -#: tcl/tklinuxcnc.tcl:1642 ../tcl/tklinuxcnc.tcl:1642 +#: tcl/tklinuxcnc.tcl:1642 msgid "Program: " msgstr "Programme: " -#: tcl/tklinuxcnc.tcl:1647 ../tcl/tklinuxcnc.tcl:1647 +#: tcl/tklinuxcnc.tcl:1647 msgid " - Status: " msgstr " - Status: " -#: tcl/tklinuxcnc.tcl:1663 ../tcl/tklinuxcnc.tcl:1663 +#: tcl/tklinuxcnc.tcl:1663 msgid "Optional Stop" msgstr "Arrêt optionnel" -#: tcl/tklinuxcnc.tcl:2010 ../tcl/tklinuxcnc.tcl:2010 +#: tcl/tklinuxcnc.tcl:2010 msgid "Error" msgstr "Erreur" -#: tcl/tklinuxcnc.tcl:2070 tcl/ngcgui_ttt.tcl:46 ../tcl/tklinuxcnc.tcl:2070 -#: ../tcl/ngcgui_ttt.tcl:46 +#: tcl/tklinuxcnc.tcl:2070 tcl/ngcgui_ttt.tcl:46 msgid "Set Font" msgstr "Choisir police" -#: tcl/tklinuxcnc.tcl:2079 tcl/ngcgui_ttt.tcl:283 ../tcl/tklinuxcnc.tcl:2079 -#: ../tcl/ngcgui_ttt.tcl:283 +#: tcl/tklinuxcnc.tcl:2079 tcl/ngcgui_ttt.tcl:283 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4827 msgid "Font" msgstr "Police" -#: tcl/tklinuxcnc.tcl:2086 ../tcl/tklinuxcnc.tcl:2086 +#: tcl/tklinuxcnc.tcl:2086 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3257 msgid "Size" msgstr "Taille" -#: tcl/tklinuxcnc.tcl:2093 ../tcl/tklinuxcnc.tcl:2093 +#: tcl/tklinuxcnc.tcl:2093 msgid "Style" msgstr "Style" -#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:1916 -#: ../tcl/tklinuxcnc.tcl:2229 ../share/axis/tcl/axis.tcl:1916 +#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:2031 msgid "ESTOP" msgstr "A/U" -#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2840 share/axis/tcl/axis.tcl:1918 -#: ../tcl/tklinuxcnc.tcl:2231 ../tcl/ngcgui.tcl:2840 -#: ../share/axis/tcl/axis.tcl:1918 tcl/ngcgui.tcl:2866 +#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2979 share/axis/tcl/axis.tcl:2033 msgid "ON" msgstr "EN MARCHE" -#: tcl/tklinuxcnc.tcl:2290 ../tcl/tklinuxcnc.tcl:2290 +#: tcl/tklinuxcnc.tcl:2290 msgid "LUBE ON" msgstr "LUBRIFIANT ON" -#: tcl/tklinuxcnc.tcl:2292 ../tcl/tklinuxcnc.tcl:2292 +#: tcl/tklinuxcnc.tcl:2292 msgid "LUBE OFF" msgstr "LUBRIFIANT OFF" -#: tcl/tklinuxcnc.tcl:2294 ../tcl/tklinuxcnc.tcl:2294 +#: tcl/tklinuxcnc.tcl:2294 msgid "LUBE ?" msgstr "LUBRIFIANT ?" -#: tcl/scripts/Set_Coordinates.tcl:23 ../tcl/scripts/Set_Coordinates.tcl:23 +#: tcl/scripts/Set_Coordinates.tcl:23 msgid "LinuxCNC Set Coordinate" msgstr "Réglage coordonnées de LinuxCNC" -#: tcl/scripts/Set_Coordinates.tcl:26 ../tcl/scripts/Set_Coordinates.tcl:26 +#: tcl/scripts/Set_Coordinates.tcl:26 msgid "Coordinate System Control Window" msgstr "Fenêtre de contrôle des coordonnées système" -#: tcl/scripts/Set_Coordinates.tcl:81 ../tcl/scripts/Set_Coordinates.tcl:81 +#: tcl/scripts/Set_Coordinates.tcl:81 msgid "Var # " msgstr "Var # " -#: tcl/scripts/Set_Coordinates.tcl:82 ../tcl/scripts/Set_Coordinates.tcl:82 +#: tcl/scripts/Set_Coordinates.tcl:82 msgid "Offset Value " msgstr "Valeur d'offset" -#: tcl/scripts/Set_Coordinates.tcl:83 ../tcl/scripts/Set_Coordinates.tcl:83 +#: tcl/scripts/Set_Coordinates.tcl:83 msgid "What to Teach" msgstr "Qu'apprendre" -#: tcl/scripts/Set_Coordinates.tcl:101 ../tcl/scripts/Set_Coordinates.tcl:101 +#: tcl/scripts/Set_Coordinates.tcl:101 msgid "Set Old" msgstr "Ancien réglage" -#: tcl/scripts/Set_Coordinates.tcl:102 ../tcl/scripts/Set_Coordinates.tcl:102 +#: tcl/scripts/Set_Coordinates.tcl:102 msgid "Set Zero" msgstr "Régler le zéro" -#: tcl/scripts/Set_Coordinates.tcl:104 ../tcl/scripts/Set_Coordinates.tcl:104 +#: tcl/scripts/Set_Coordinates.tcl:104 msgid "Write" msgstr "Écrire" -#: tcl/ngcgui.tcl:467 ../tcl/ngcgui.tcl:467 tcl/ngcgui.tcl:474 +#: tcl/ngcgui.tcl:439 tcl/ngcgui.tcl:846 msgid "Need non-null file name" msgstr "Nécessite un nom de fichier" -#: tcl/ngcgui.tcl:543 ../tcl/ngcgui.tcl:543 tcl/ngcgui.tcl:550 +#: tcl/ngcgui.tcl:483 msgid "Disallowed use of ngcgui generated file as Subfile" msgstr "Refus d'utiliser le fichier ngcgui généré comme un sous-fichier" -#: tcl/ngcgui.tcl:549 ../tcl/ngcgui.tcl:549 tcl/ngcgui.tcl:556 +#: tcl/ngcgui.tcl:489 msgid "" "marked (not_a_subfile)\n" "Not intended for use as a subfile" @@ -3087,1268 +4498,1393 @@ msgstr "" "marked (not_a_subfile)\n" "Not intended for use as a subfile" -#: tcl/ngcgui.tcl:564 ../tcl/ngcgui.tcl:564 tcl/ngcgui.tcl:580 +#: tcl/ngcgui.tcl:503 tcl/ngcgui.tcl:522 tcl/ngcgui.tcl:544 tcl/ngcgui.tcl:557 +#: tcl/ngcgui.tcl:577 tcl/ngcgui.tcl:682 +msgid "bogus" +msgstr "bogue" + +#: tcl/ngcgui.tcl:505 +msgid "can not include subroutines within ngcgui subfile" +msgstr "inclusion d'un sous programme dans un sous-fichier ngcgui impossible" + +#: tcl/ngcgui.tcl:513 msgid "Multiple subroutines in file not allowed" msgstr "Multiples sous-programmes dans un fichier non permis" -#: tcl/ngcgui.tcl:573 tcl/ngcgui.tcl:595 tcl/ngcgui.tcl:608 tcl/ngcgui.tcl:650 -#: tcl/ngcgui.tcl:755 ../tcl/ngcgui.tcl:573 ../tcl/ngcgui.tcl:595 -#: ../tcl/ngcgui.tcl:608 ../tcl/ngcgui.tcl:650 ../tcl/ngcgui.tcl:755 -#: tcl/ngcgui.tcl:570 tcl/ngcgui.tcl:589 tcl/ngcgui.tcl:611 tcl/ngcgui.tcl:624 -#: tcl/ngcgui.tcl:666 tcl/ngcgui.tcl:771 -msgid "bogus" -msgstr "bogue" - -#: tcl/ngcgui.tcl:575 ../tcl/ngcgui.tcl:575 tcl/ngcgui.tcl:591 +#: tcl/ngcgui.tcl:524 msgid "sub label" msgstr "sous-label" -#: tcl/ngcgui.tcl:575 tcl/ngcgui.tcl:652 ../tcl/ngcgui.tcl:575 -#: ../tcl/ngcgui.tcl:652 tcl/ngcgui.tcl:591 tcl/ngcgui.tcl:668 +#: tcl/ngcgui.tcl:524 tcl/ngcgui.tcl:579 msgid "does not match subroutine file name" msgstr "le sous-programme ne correspond pas au nom de fichier" -#: tcl/ngcgui.tcl:590 tcl/ngcgui.tcl:591 ../tcl/ngcgui.tcl:590 -#: ../tcl/ngcgui.tcl:591 tcl/ngcgui.tcl:606 tcl/ngcgui.tcl:607 +#: tcl/ngcgui.tcl:539 tcl/ngcgui.tcl:540 msgid "ignoring M2 after endsub" msgstr "M2 ignoré après endsub" -#: tcl/ngcgui.tcl:596 ../tcl/ngcgui.tcl:596 tcl/ngcgui.tcl:612 +#: tcl/ngcgui.tcl:545 msgid "file contains lines after subend" msgstr "le fichier contient des lignes après subend" -#: tcl/ngcgui.tcl:609 ../tcl/ngcgui.tcl:609 tcl/ngcgui.tcl:625 +#: tcl/ngcgui.tcl:558 msgid "file contains lines before sub" msgstr "le fichier contient des lignes avant sub" -#: tcl/ngcgui.tcl:652 ../tcl/ngcgui.tcl:652 tcl/ngcgui.tcl:668 +#: tcl/ngcgui.tcl:579 msgid "endsub label" msgstr "label endsub" -#: tcl/ngcgui.tcl:757 ../tcl/ngcgui.tcl:757 tcl/ngcgui.tcl:773 +#: tcl/ngcgui.tcl:684 msgid "out of sequence positional parameter" msgstr "paramètres positionnels hors séquence" -#: tcl/ngcgui.tcl:757 ../tcl/ngcgui.tcl:757 tcl/ngcgui.tcl:773 +#: tcl/ngcgui.tcl:684 msgid "expected" msgstr "attendu" -#: tcl/ngcgui.tcl:817 ../tcl/ngcgui.tcl:817 tcl/ngcgui.tcl:843 -msgid "toomany" -msgstr "trop" - -#: tcl/ngcgui.tcl:868 ../tcl/ngcgui.tcl:868 tcl/ngcgui.tcl:894 +#: tcl/ngcgui.tcl:735 msgid "no sub found in file" msgstr "pas de sub dans le fichier" -#: tcl/ngcgui.tcl:871 ../tcl/ngcgui.tcl:871 tcl/ngcgui.tcl:897 +#: tcl/ngcgui.tcl:738 msgid "no endsub found in file" msgstr "pas de endsub dans le fichier" -#: tcl/ngcgui.tcl:961 ../tcl/ngcgui.tcl:961 tcl/ngcgui.tcl:987 +#: tcl/ngcgui.tcl:801 +msgid "Cannot find gcmc executable" +msgstr "" + +#: tcl/ngcgui.tcl:802 +#, fuzzy +msgid "Please Install in path" +msgstr "Installer Img" + +#: tcl/ngcgui.tcl:810 +msgid "not embedded, deriving outdir from:" +msgstr "" + +#: tcl/ngcgui.tcl:1038 msgid "Choose Files" msgstr "Choisir fichiers" -#: tcl/ngcgui.tcl:1100 ../tcl/ngcgui.tcl:1100 tcl/ngcgui.tcl:1126 +#: tcl/ngcgui.tcl:1178 msgid "Controls" msgstr "Contrôles" -#: tcl/ngcgui.tcl:1109 ../tcl/ngcgui.tcl:1109 tcl/ngcgui.tcl:1135 +#: tcl/ngcgui.tcl:1187 msgid "Preamble" msgstr "Préambule" -#: tcl/ngcgui.tcl:1122 ../tcl/ngcgui.tcl:1122 tcl/ngcgui.tcl:1148 +#: tcl/ngcgui.tcl:1200 msgid "Subfile" msgstr "Sous-fichier" -#: tcl/ngcgui.tcl:1134 ../tcl/ngcgui.tcl:1134 tcl/ngcgui.tcl:1160 +#: tcl/ngcgui.tcl:1212 msgid "Postamble" msgstr "Postambule" -#: tcl/ngcgui.tcl:1151 ../tcl/ngcgui.tcl:1151 tcl/ngcgui.tcl:1177 +#: tcl/ngcgui.tcl:1229 msgid "Retain values on Subfile read" msgstr "Conserver les valeurs à la lecture du sous-fichier" -#: tcl/ngcgui.tcl:1159 ../tcl/ngcgui.tcl:1159 tcl/ngcgui.tcl:1185 +#: tcl/ngcgui.tcl:1237 msgid "Expand subroutine" msgstr "Déployer le sous-programme" -#: tcl/ngcgui.tcl:1168 tcl/ngcgui.tcl:2414 ../tcl/ngcgui.tcl:1168 -#: ../tcl/ngcgui.tcl:2414 tcl/ngcgui.tcl:1194 tcl/ngcgui.tcl:2440 +#: tcl/ngcgui.tcl:1247 tcl/ngcgui.tcl:2571 msgid "Autosend" msgstr "EnvoiAuto" -#: tcl/ngcgui.tcl:1178 ../tcl/ngcgui.tcl:1178 tcl/ngcgui.tcl:1204 +#: tcl/ngcgui.tcl:1257 msgid "Verbose ngcfile" msgstr "Fichier G-code clair" -#: tcl/ngcgui.tcl:1188 tcl/ngcgui.tcl:2235 tcl/ngcgui.tcl:2259 -#: tcl/ngcgui.tcl:2289 ../tcl/ngcgui.tcl:1188 ../tcl/ngcgui.tcl:2235 -#: ../tcl/ngcgui.tcl:2259 ../tcl/ngcgui.tcl:2289 tcl/ngcgui.tcl:1214 -#: tcl/ngcgui.tcl:2261 tcl/ngcgui.tcl:2285 tcl/ngcgui.tcl:2315 +#: tcl/ngcgui.tcl:1267 tcl/ngcgui.tcl:2393 tcl/ngcgui.tcl:2416 +#: tcl/ngcgui.tcl:2446 msgid "Create Feature" msgstr "Créer la fonction" -#: tcl/ngcgui.tcl:1194 tcl/ngcgui.tcl:2919 ../tcl/ngcgui.tcl:1194 -#: ../tcl/ngcgui.tcl:2919 tcl/ngcgui.tcl:1220 tcl/ngcgui.tcl:2945 +#: tcl/ngcgui.tcl:1273 tcl/ngcgui.tcl:3058 msgid "MakeFile" msgstr "Fichier makefile" -#: tcl/ngcgui.tcl:1195 tcl/ngcgui.tcl:2916 ../tcl/ngcgui.tcl:1195 -#: ../tcl/ngcgui.tcl:2916 tcl/ngcgui.tcl:1221 tcl/ngcgui.tcl:2942 +#: tcl/ngcgui.tcl:1274 tcl/ngcgui.tcl:3055 msgid "Finalize" msgstr "Finaliser" -#: tcl/ngcgui.tcl:1212 ../tcl/ngcgui.tcl:1212 tcl/ngcgui.tcl:1238 +#: tcl/ngcgui.tcl:1291 msgid "Reread" msgstr "Relis" -#: tcl/ngcgui.tcl:1231 ../tcl/ngcgui.tcl:1231 tcl/ngcgui.tcl:1257 +#: tcl/ngcgui.tcl:1310 msgid "SendFileToAxis" msgstr "SendFileToAxis" -#: tcl/ngcgui.tcl:1274 ../tcl/ngcgui.tcl:1274 tcl/ngcgui.tcl:1300 +#: tcl/ngcgui.tcl:1353 msgid "Unrecoverable problem" msgstr "Problème sans solution" -#: tcl/ngcgui.tcl:1374 ../tcl/ngcgui.tcl:1374 tcl/ngcgui.tcl:1400 +#: tcl/ngcgui.tcl:1431 msgid "Postamble file" msgstr "Fichier postambule" -#: tcl/ngcgui.tcl:1424 ../tcl/ngcgui.tcl:1424 tcl/ngcgui.tcl:1450 +#: tcl/ngcgui.tcl:1481 msgid "Subroutine file" msgstr "Fichier sous-programme" -#: tcl/ngcgui.tcl:1482 ../tcl/ngcgui.tcl:1482 tcl/ngcgui.tcl:1508 +#: tcl/ngcgui.tcl:1545 msgid "Positional Parameters" msgstr "Paramètres de position" -#: tcl/ngcgui.tcl:1587 ../tcl/ngcgui.tcl:1587 tcl/ngcgui.tcl:1613 -msgid "_Globals" -msgstr "_Globaux" - -#: tcl/ngcgui.tcl:1690 ../tcl/ngcgui.tcl:1690 tcl/ngcgui.tcl:1716 +#: tcl/ngcgui.tcl:1694 msgid "No Subfile specified" msgstr "Aucun sous-fichier spécifié" -#: tcl/ngcgui.tcl:1692 ../tcl/ngcgui.tcl:1692 tcl/ngcgui.tcl:1718 +#: tcl/ngcgui.tcl:1696 msgid "No parameters yet" msgstr "Pas encore de paramètre" -#: tcl/ngcgui.tcl:1701 ../tcl/ngcgui.tcl:1701 tcl/ngcgui.tcl:1727 +#: tcl/ngcgui.tcl:1705 msgid "Missing value for parm" msgstr "Valeur de paramètre manquante" -#: tcl/ngcgui.tcl:1735 ../tcl/ngcgui.tcl:1735 tcl/ngcgui.tcl:1761 +#: tcl/ngcgui.tcl:1726 msgid "Output file" msgstr "Fichier de sortie" -#: tcl/ngcgui.tcl:1827 ../tcl/ngcgui.tcl:1827 tcl/ngcgui.tcl:1853 -msgid "Positional parameters for" -msgstr "Paramètres de position pour" - -#: tcl/ngcgui.tcl:1835 ../tcl/ngcgui.tcl:1835 tcl/ngcgui.tcl:1861 -msgid "expanded file" -msgstr "Fichier étendu" - -#: tcl/ngcgui.tcl:1849 ../tcl/ngcgui.tcl:1849 tcl/ngcgui.tcl:1875 -msgid "call subroutine file" -msgstr "Appel de fichier sous-programme" - -#: tcl/ngcgui.tcl:1919 ../tcl/ngcgui.tcl:1919 tcl/ngcgui.tcl:1945 +#: tcl/ngcgui.tcl:1841 msgid "Multiple Tabs with Features" msgstr "Onglets multiples avec fonctions" -#: tcl/ngcgui.tcl:1920 ../tcl/ngcgui.tcl:1920 tcl/ngcgui.tcl:1946 +#: tcl/ngcgui.tcl:1842 msgid "Finalize all Tabs?" msgstr "Finaliser tous les onglets?" -#: tcl/ngcgui.tcl:1920 ../tcl/ngcgui.tcl:1920 tcl/ngcgui.tcl:1946 +#: tcl/ngcgui.tcl:1842 msgid "Order" msgstr "Commande" -#: tcl/ngcgui.tcl:1922 ../tcl/ngcgui.tcl:1922 tcl/ngcgui.tcl:1948 +#: tcl/ngcgui.tcl:1844 msgid "No, just this page" msgstr "Non, juste cette page" -#: tcl/ngcgui.tcl:1936 ../tcl/ngcgui.tcl:1936 tcl/ngcgui.tcl:1962 +#: tcl/ngcgui.tcl:1858 msgid "Axis is not responding" msgstr "Axis ne répond pas" -#: tcl/ngcgui.tcl:1937 ../tcl/ngcgui.tcl:1937 tcl/ngcgui.tcl:1963 +#: tcl/ngcgui.tcl:1859 msgid "Error: " msgstr "Erreur:" -#: tcl/ngcgui.tcl:1939 ../tcl/ngcgui.tcl:1939 tcl/ngcgui.tcl:1965 +#: tcl/ngcgui.tcl:1861 msgid "Autosend disabled, Ctrl-A toggles autosend" msgstr "EnvoiAuto désactivé, Ctrl-A bascule EnvoiAuto" -#: tcl/ngcgui.tcl:1941 ../tcl/ngcgui.tcl:1941 tcl/ngcgui.tcl:1967 +#: tcl/ngcgui.tcl:1863 msgid "File saving enabled -- Finalize to save" msgstr "Sauvegarde activée -- Finaliser la sauvegarde" -#: tcl/ngcgui.tcl:1957 ../tcl/ngcgui.tcl:1957 tcl/ngcgui.tcl:1983 +#: tcl/ngcgui.tcl:1879 msgid "Require .ngc suffix for filename" msgstr "Requiert l'extension .ngc pour le nom de fichier" -#: tcl/ngcgui.tcl:1967 ../tcl/ngcgui.tcl:1967 tcl/ngcgui.tcl:1993 +#: tcl/ngcgui.tcl:1889 msgid "Disallowed overwrite of" msgstr "Écrasement refusé" -#: tcl/ngcgui.tcl:1986 ../tcl/ngcgui.tcl:1986 tcl/ngcgui.tcl:2012 +#: tcl/ngcgui.tcl:1913 msgid "FEATURE" msgstr "FONCTION" -#: tcl/ngcgui.tcl:1993 ../tcl/ngcgui.tcl:1993 tcl/ngcgui.tcl:2019 +#: tcl/ngcgui.tcl:1920 msgid "feature line added" msgstr "ligne de fonction ajoutée" -#: tcl/ngcgui.tcl:2002 ../tcl/ngcgui.tcl:2002 tcl/ngcgui.tcl:2028 +#: tcl/ngcgui.tcl:1932 msgid "line added" msgstr "ligne ajoutée" -#: tcl/ngcgui.tcl:2002 ../tcl/ngcgui.tcl:2002 tcl/ngcgui.tcl:2028 +#: tcl/ngcgui.tcl:1932 msgid "activated" msgstr "activé" -#: tcl/ngcgui.tcl:2004 ../tcl/ngcgui.tcl:2004 tcl/ngcgui.tcl:2030 +#: tcl/ngcgui.tcl:1934 msgid "restores" msgstr "restaurer" -#: tcl/ngcgui.tcl:2041 ../tcl/ngcgui.tcl:2041 tcl/ngcgui.tcl:2067 +#: tcl/ngcgui.tcl:1973 msgid "NOTREACHED mode" msgstr "Mode NONATTEINT" -#: tcl/ngcgui.tcl:2236 ../tcl/ngcgui.tcl:2236 tcl/ngcgui.tcl:2262 +#: tcl/ngcgui.tcl:1989 +msgid "Positional parameters for" +msgstr "Paramètres de position pour" + +#: tcl/ngcgui.tcl:1997 +msgid "expanded file" +msgstr "Fichier étendu" + +#: tcl/ngcgui.tcl:2011 +msgid "call subroutine file" +msgstr "Appel de fichier sous-programme" + +#: tcl/ngcgui.tcl:2394 msgid "Enter parms for 1st feature" msgstr "Entrer paramètres 1ère fonction" -#: tcl/ngcgui.tcl:2243 ../tcl/ngcgui.tcl:2243 tcl/ngcgui.tcl:2269 +#: tcl/ngcgui.tcl:2401 msgid "New Outfile" msgstr "Nouveau fichier de sortie" -#: tcl/ngcgui.tcl:2245 ../tcl/ngcgui.tcl:2245 tcl/ngcgui.tcl:2271 +#: tcl/ngcgui.tcl:2403 msgid "Ready to make New Outfile" msgstr "Prêt à créer un nouveau fichier de sortie" -#: tcl/ngcgui.tcl:2262 tcl/ngcgui.tcl:2295 ../tcl/ngcgui.tcl:2262 -#: ../tcl/ngcgui.tcl:2295 tcl/ngcgui.tcl:2288 tcl/ngcgui.tcl:2321 +#: tcl/ngcgui.tcl:2419 tcl/ngcgui.tcl:2452 msgid "Enter parms for feature " msgstr "Entrer paramètres pour la fonction " -#: tcl/ngcgui.tcl:2282 ../tcl/ngcgui.tcl:2282 tcl/ngcgui.tcl:2308 +#: tcl/ngcgui.tcl:2439 msgid "feature" msgstr "fonction" -#: tcl/ngcgui.tcl:2287 ../tcl/ngcgui.tcl:2287 tcl/ngcgui.tcl:2313 +#: tcl/ngcgui.tcl:2444 msgid "Create Next" msgstr "Créer le suivant" -#: tcl/ngcgui.tcl:2292 ../tcl/ngcgui.tcl:2292 tcl/ngcgui.tcl:2318 +#: tcl/ngcgui.tcl:2449 msgid "Created feature " msgstr "Fonction créée" -#: tcl/ngcgui.tcl:2316 ../tcl/ngcgui.tcl:2316 tcl/ngcgui.tcl:2342 +#: tcl/ngcgui.tcl:2473 msgid "option" msgstr "option" -#: tcl/ngcgui.tcl:2327 ../tcl/ngcgui.tcl:2327 tcl/ngcgui.tcl:2353 +#: tcl/ngcgui.tcl:2484 msgid "Missing parameters" msgstr "Paramètres manquants" -#: tcl/ngcgui.tcl:2331 ../tcl/ngcgui.tcl:2331 tcl/ngcgui.tcl:2357 +#: tcl/ngcgui.tcl:2488 msgid "Parse Error" msgstr "Erreur d'analyse" -#: tcl/ngcgui.tcl:2338 ../tcl/ngcgui.tcl:2338 tcl/ngcgui.tcl:2364 +#: tcl/ngcgui.tcl:2495 msgid "Null Preamble" msgstr "Aucun préambule" -#: tcl/ngcgui.tcl:2343 ../tcl/ngcgui.tcl:2343 tcl/ngcgui.tcl:2369 +#: tcl/ngcgui.tcl:2500 msgid "Read Preamble" msgstr "Lecture préambule" -#: tcl/ngcgui.tcl:2347 ../tcl/ngcgui.tcl:2347 tcl/ngcgui.tcl:2373 +#: tcl/ngcgui.tcl:2504 msgid "Preamble Error" msgstr "Erreur de préambule" -#: tcl/ngcgui.tcl:2352 ../tcl/ngcgui.tcl:2352 tcl/ngcgui.tcl:2378 +#: tcl/ngcgui.tcl:2509 msgid "Null Postamble" msgstr "Aucun postambule" -#: tcl/ngcgui.tcl:2357 ../tcl/ngcgui.tcl:2357 tcl/ngcgui.tcl:2383 +#: tcl/ngcgui.tcl:2514 msgid "Read Postamble" msgstr "Lis le synchroniseur final" -#: tcl/ngcgui.tcl:2361 ../tcl/ngcgui.tcl:2361 tcl/ngcgui.tcl:2387 +#: tcl/ngcgui.tcl:2518 msgid "Postamble Error" msgstr "Erreur de postambule" -#: tcl/ngcgui.tcl:2366 ../tcl/ngcgui.tcl:2366 tcl/ngcgui.tcl:2392 +#: tcl/ngcgui.tcl:2523 msgid "Read Subfile" msgstr "Lecture sous-fichier" -#: tcl/ngcgui.tcl:2371 ../tcl/ngcgui.tcl:2371 tcl/ngcgui.tcl:2397 +#: tcl/ngcgui.tcl:2528 msgid "Write Error" msgstr "Erreur d'écriture" -#: tcl/ngcgui.tcl:2375 ../tcl/ngcgui.tcl:2375 tcl/ngcgui.tcl:2401 +#: tcl/ngcgui.tcl:2532 msgid "Outfile set" msgstr "Outfile set" -#: tcl/ngcgui.tcl:2380 ../tcl/ngcgui.tcl:2380 tcl/ngcgui.tcl:2406 +#: tcl/ngcgui.tcl:2537 msgid "Finished" msgstr "Fini" -#: tcl/ngcgui.tcl:2385 ../tcl/ngcgui.tcl:2385 tcl/ngcgui.tcl:2411 +#: tcl/ngcgui.tcl:2542 msgid "Canceled" msgstr "Annuler" -#: tcl/ngcgui.tcl:2391 ../tcl/ngcgui.tcl:2391 tcl/ngcgui.tcl:2417 +#: tcl/ngcgui.tcl:2548 msgid "Sent" msgstr "Envoyé" -#: tcl/ngcgui.tcl:2395 ../tcl/ngcgui.tcl:2395 tcl/ngcgui.tcl:2421 +#: tcl/ngcgui.tcl:2552 msgid "SendFileToAxis failed" msgstr "Défaut avec SendFileToAxis" -#: tcl/ngcgui.tcl:2399 ../tcl/ngcgui.tcl:2399 tcl/ngcgui.tcl:2425 +#: tcl/ngcgui.tcl:2556 msgid "Ctrl-k for Key bindings" msgstr "Ctrl-k pour raccourcis clavier" -#: tcl/ngcgui.tcl:2403 ../tcl/ngcgui.tcl:2403 tcl/ngcgui.tcl:2429 +#: tcl/ngcgui.tcl:2560 msgid "Expand sub" msgstr "Déployer sous-programme" -#: tcl/ngcgui.tcl:2407 ../tcl/ngcgui.tcl:2407 tcl/ngcgui.tcl:2433 +#: tcl/ngcgui.tcl:2564 msgid "Retain values" msgstr "Valeurs retenues" -#: tcl/ngcgui.tcl:2411 ../tcl/ngcgui.tcl:2411 tcl/ngcgui.tcl:2437 +#: tcl/ngcgui.tcl:2568 msgid "Verbose" msgstr "Verbeux" -#: tcl/ngcgui.tcl:2417 ../tcl/ngcgui.tcl:2417 tcl/ngcgui.tcl:2443 +#: tcl/ngcgui.tcl:2574 msgid "Finalize Canceled" msgstr "Finaliser l'abandon" -#: tcl/ngcgui.tcl:2572 tcl/ngcgui.tcl:2728 ../tcl/ngcgui.tcl:2572 -#: ../tcl/ngcgui.tcl:2728 tcl/ngcgui.tcl:2598 tcl/ngcgui.tcl:2754 +#: tcl/ngcgui.tcl:2711 tcl/ngcgui.tcl:2867 msgid "Dismiss" msgstr "Rejeter" -#: tcl/ngcgui.tcl:2577 ../tcl/ngcgui.tcl:2577 tcl/ngcgui.tcl:2603 +#: tcl/ngcgui.tcl:2716 msgid "ngcgui Error" msgstr "Erreur ngcgui" -#: tcl/ngcgui.tcl:2600 ../tcl/ngcgui.tcl:2600 tcl/ngcgui.tcl:2626 +#: tcl/ngcgui.tcl:2739 msgid "Declining support for tk send bug in ngcgui" msgstr "Declining support for tk send bug in ngcgui" -#: tcl/ngcgui.tcl:2601 ../tcl/ngcgui.tcl:2601 tcl/ngcgui.tcl:2627 +#: tcl/ngcgui.tcl:2740 msgid "You should upgrade linuxcnc to >= linuxcnc2.5" msgstr "Vous devez mettre LinuxCNC à jour en version >= 2.5" -#: tcl/ngcgui.tcl:2645 ../tcl/ngcgui.tcl:2645 tcl/ngcgui.tcl:2671 +#: tcl/ngcgui.tcl:2784 msgid "pre2.4_send_file_to_axis:error" msgstr "erreur: pre2.4_send_file_to_axis" -#: tcl/ngcgui.tcl:2839 share/axis/tcl/axis.tcl:1917 ../tcl/ngcgui.tcl:2839 -#: ../share/axis/tcl/axis.tcl:1917 tcl/ngcgui.tcl:2865 +#: tcl/ngcgui.tcl:2978 share/axis/tcl/axis.tcl:2032 msgid "OFF" msgstr "ARRÊT" -#: tcl/ngcgui.tcl:2842 ../tcl/ngcgui.tcl:2842 tcl/ngcgui.tcl:2868 +#: tcl/ngcgui.tcl:2981 msgid "Toggle autosend" msgstr "Bascule envoi auto" -#: tcl/ngcgui.tcl:2843 tcl/ngcgui.tcl:3057 ../tcl/ngcgui.tcl:2843 -#: ../tcl/ngcgui.tcl:3057 tcl/ngcgui.tcl:2869 tcl/ngcgui.tcl:3083 +#: tcl/ngcgui.tcl:2982 tcl/ngcgui.tcl:3189 msgid "Clear entries" msgstr "Effacer les entrées" -#: tcl/ngcgui.tcl:2844 ../tcl/ngcgui.tcl:2844 tcl/ngcgui.tcl:2870 +#: tcl/ngcgui.tcl:2983 msgid "Set entries to default values" msgstr "Réglez les entrées aux valeurs par défaut" -#: tcl/ngcgui.tcl:2845 tcl/ngcgui.tcl:2859 tcl/ngcgui.tcl:2861 -#: ../tcl/ngcgui.tcl:2845 ../tcl/ngcgui.tcl:2859 ../tcl/ngcgui.tcl:2861 -#: tcl/ngcgui.tcl:2871 tcl/ngcgui.tcl:2885 tcl/ngcgui.tcl:2887 +#: tcl/ngcgui.tcl:2984 tcl/ngcgui.tcl:2998 tcl/ngcgui.tcl:3000 msgid "Open editor specified by" msgstr "Ouvrir l'éditeur spécifié par" -#: tcl/ngcgui.tcl:2846 ../tcl/ngcgui.tcl:2846 tcl/ngcgui.tcl:2872 +#: tcl/ngcgui.tcl:2985 msgid "on last outfile" msgstr "sur le dernier fichier de sortie" -#: tcl/ngcgui.tcl:2847 ../tcl/ngcgui.tcl:2847 tcl/ngcgui.tcl:2873 +#: tcl/ngcgui.tcl:2986 msgid "toggle expand subroutines" msgstr "bascule déploiement sous-programmes" -#: tcl/ngcgui.tcl:2848 ../tcl/ngcgui.tcl:2848 tcl/ngcgui.tcl:2874 +#: tcl/ngcgui.tcl:2987 msgid "Create feature" msgstr "Crée la fonction" -#: tcl/ngcgui.tcl:2849 ../tcl/ngcgui.tcl:2849 tcl/ngcgui.tcl:2875 +#: tcl/ngcgui.tcl:2988 msgid "Finalize (AUTO send is" msgstr "Finaliser (AUTO envoi" -#: tcl/ngcgui.tcl:2850 ../tcl/ngcgui.tcl:2850 tcl/ngcgui.tcl:2876 +#: tcl/ngcgui.tcl:2989 msgid "Show key bindings" msgstr "Montrer raccourcis clavier" -#: tcl/ngcgui.tcl:2851 ../tcl/ngcgui.tcl:2851 tcl/ngcgui.tcl:2877 +#: tcl/ngcgui.tcl:2990 msgid "Restart (cancel pending)" msgstr "Redémarre (annule les en cours)" -#: tcl/ngcgui.tcl:2852 ../tcl/ngcgui.tcl:2852 tcl/ngcgui.tcl:2878 +#: tcl/ngcgui.tcl:2991 msgid "(re)Read Preamble" msgstr "(re)lecture préambule" -#: tcl/ngcgui.tcl:2853 ../tcl/ngcgui.tcl:2853 tcl/ngcgui.tcl:2879 +#: tcl/ngcgui.tcl:2992 msgid "(re)Read Postamble" msgstr "Relis le synchronisateur final" -#: tcl/ngcgui.tcl:2854 ../tcl/ngcgui.tcl:2854 tcl/ngcgui.tcl:2880 +#: tcl/ngcgui.tcl:2993 msgid "(re)Read Subfile" msgstr "(re)lecture sous-fichier" -#: tcl/ngcgui.tcl:2855 ../tcl/ngcgui.tcl:2855 tcl/ngcgui.tcl:2881 +#: tcl/ngcgui.tcl:2994 msgid "toggle retain values" msgstr "alterner les valeurs retenues" -#: tcl/ngcgui.tcl:2856 ../tcl/ngcgui.tcl:2856 tcl/ngcgui.tcl:2882 +#: tcl/ngcgui.tcl:2995 msgid "toggle output file verbosity" msgstr "alterner la verbosité du fichier de sortie" -#: tcl/ngcgui.tcl:2857 ../tcl/ngcgui.tcl:2857 tcl/ngcgui.tcl:2883 +#: tcl/ngcgui.tcl:2996 msgid "Show status" msgstr "Afficher le status" -#: tcl/ngcgui.tcl:2858 ../tcl/ngcgui.tcl:2858 tcl/ngcgui.tcl:2884 +#: tcl/ngcgui.tcl:2997 msgid "Show full status (debug info)" msgstr "Afficher le status complet (infos de deboguage)" -#: tcl/ngcgui.tcl:2860 ../tcl/ngcgui.tcl:2860 tcl/ngcgui.tcl:2886 +#: tcl/ngcgui.tcl:2999 msgid "on current subfile" msgstr "on current subfile" -#: tcl/ngcgui.tcl:2862 ../tcl/ngcgui.tcl:2862 tcl/ngcgui.tcl:2888 +#: tcl/ngcgui.tcl:3001 msgid "on current preamble" msgstr "le préambule courant" -#: tcl/ngcgui.tcl:2865 ../tcl/ngcgui.tcl:2865 tcl/ngcgui.tcl:2891 +#: tcl/ngcgui.tcl:3004 msgid " Escape Return to Preview page" msgstr "Échappe pour revenir à la page précédente" -#: tcl/ngcgui.tcl:2942 ../tcl/ngcgui.tcl:2942 tcl/ngcgui.tcl:2968 +#: tcl/ngcgui.tcl:3081 msgid "Editing requires setting for environmental variable VISUAL" msgstr "Pour l'édition, la variable d'environnement VISUAL doit être ajustée" -#: tcl/ngcgui.tcl:2943 ../tcl/ngcgui.tcl:2943 tcl/ngcgui.tcl:2969 +#: tcl/ngcgui.tcl:3082 msgid "Trying gedit" msgstr "Essayer gedit" -#: tcl/ngcgui.tcl:2955 ../tcl/ngcgui.tcl:2955 tcl/ngcgui.tcl:2981 +#: tcl/ngcgui.tcl:3095 msgid "No file available for editing yet" msgstr "Aucun fichier a éditer n'est encore disponible" -#: tcl/ngcgui.tcl:2964 tcl/ngcgui.tcl:2973 ../tcl/ngcgui.tcl:2964 -#: ../tcl/ngcgui.tcl:2973 tcl/ngcgui.tcl:2990 tcl/ngcgui.tcl:2999 +#: tcl/ngcgui.tcl:3104 tcl/ngcgui.tcl:3113 msgid "No file available for editing" msgstr "Aucun fichier a éditer n'est disponible" -#: tcl/ngcgui.tcl:2990 ../tcl/ngcgui.tcl:2990 tcl/ngcgui.tcl:3016 +#: tcl/ngcgui.tcl:3130 msgid "Status items" msgstr "Items de status:" -#: tcl/ngcgui.tcl:3003 ../tcl/ngcgui.tcl:3003 tcl/ngcgui.tcl:3029 +#: tcl/ngcgui.tcl:3143 msgid "All-page opt items" msgstr "Items optionnels pour toutes les pages" -#: tcl/ngcgui.tcl:3009 ../tcl/ngcgui.tcl:3009 tcl/ngcgui.tcl:3035 +#: tcl/ngcgui.tcl:3149 msgid "any-items" msgstr "Tous les items" -#: tcl/ngcgui.tcl:3046 ../tcl/ngcgui.tcl:3046 tcl/ngcgui.tcl:3072 +#: tcl/ngcgui.tcl:3182 msgid "Set defaults" msgstr "Fixe par défaut" -#: tcl/ngcgui.tcl:3125 ../tcl/ngcgui.tcl:3125 tcl/ngcgui.tcl:3151 +#: tcl/ngcgui.tcl:3257 msgid "not writable" msgstr "non inscriptible" -#: tcl/ngcgui.tcl:3263 tcl/ngcgui.tcl:3443 ../tcl/ngcgui.tcl:3263 -#: ../tcl/ngcgui.tcl:3443 tcl/ngcgui.tcl:3289 tcl/ngcgui.tcl:3469 +#: tcl/ngcgui.tcl:3396 tcl/ngcgui.tcl:3577 msgid "new" msgstr "nouveau" -#: tcl/ngcgui.tcl:3288 ../tcl/ngcgui.tcl:3288 tcl/ngcgui.tcl:3314 -msgid "Open a new Subfile" -msgstr "Ouvrir un nouveau sous-fichier" +#: tcl/ngcgui.tcl:3422 +msgid "Open a new Subfile" +msgstr "Ouvrir un nouveau sous-fichier" + +#: tcl/ngcgui.tcl:3568 +msgid "remove" +msgstr "enlever" + +#: tcl/ngcgui.tcl:3590 tcl/ngcgui.tcl:3596 +msgid "move" +msgstr "déplacer" + +#: tcl/ngcgui.tcl:3704 src/emc/usr_intf/pncconf/pncconf.py:7374 +#: src/emc/usr_intf/pncconf/pncconf.py:7485 +#: src/emc/usr_intf/pncconf/pncconf.py:7650 +msgid "Custom" +msgstr "Personnalisé" + +#: tcl/ngcgui.tcl:3730 +msgid "Problem creating page" +msgstr "Problème à la création de la page" + +#: tcl/ngcgui.tcl:3737 +msgid "entrykeybindings not available" +msgstr "raccourci clavier non disponible" + +#: tcl/ngcgui.tcl:3781 +msgid "Found multiple matches for" +msgstr "Trouve plusieurs occurrences pour" + +#: tcl/ngcgui.tcl:3782 +msgid "using path" +msgstr "utiliser le chemin" + +#: tcl/ngcgui.tcl:3790 src/emc/usr_intf/axis/scripts/axis.py:2440 +#: src/emc/usr_intf/axis/scripts/axis.py:2453 +msgid "Warning" +msgstr "Attention" + +#: tcl/ngcgui.tcl:3791 +msgid "File absolute path specifier conflicts with searchpath result" +msgstr "" +"Chemin de fichier spécifié absolu, conflit avec le résultat de la recherche" + +#: tcl/ngcgui.tcl:3792 +msgid "Absolute Specifier" +msgstr "Spécificateur absolu" + +#: tcl/ngcgui.tcl:3793 +msgid "Using Search Result" +msgstr "Utiliser le résultat de la recherche" + +#: tcl/ngcgui.tcl:3798 +msgid "File not in Search Path" +msgstr "Fichier non trouvé dans le chemin de recherche" + +#: tcl/ngcgui.tcl:3800 +msgid "Must be in search path" +msgstr "Doit être dans le chemin de recherche" + +#: tcl/ngcgui.tcl:3802 +msgid "(File found -- not in search path)" +msgstr "(Fichier trouvé, hors du chemin de recherche)" + +#: tcl/ngcgui.tcl:3804 +msgid "Current directory" +msgstr "Répertoire courant" + +#: tcl/ngcgui.tcl:3805 +msgid "Search path" +msgstr "Chemin de recherche" + +#: tcl/ngcgui.tcl:3815 +msgid "Check setting for" +msgstr "Vérifie le réglage des" + +#: tcl/ngcgui.tcl:3816 +msgid "in ini file" +msgstr "dans le fichier ini" + +#: tcl/ngcgui.tcl:3817 +msgid "(Restart required after fixing ini file)" +msgstr "(Redémarrage requis après modif. du fichier ini)" + +#: tcl/ngcgui.tcl:3832 +msgid "Try to Continue" +msgstr "Essayer de continuer" + +#: tcl/ngcgui.tcl:3837 +msgid "Ngcgui Configuration File Not Found" +msgstr "Fichier de configuration Ngcgui introuvable" + +#: tcl/ngcgui.tcl:3917 +msgid "Missing Tcl Package Img" +msgstr "Paquet Tcl lmg manquant" + +#: tcl/ngcgui.tcl:3918 +msgid "Please install Img" +msgstr "Installer Img" + +#: tcl/ngcgui.tcl:4122 +msgid "ini file" +msgstr "fichier ini" + +#: tcl/ngcgui.tcl:4131 +msgid "not found" +msgstr "introuvable" + +#: tcl/ngcgui_ttt.tcl:67 +msgid "found truetype-tracer v4 -OK" +msgstr "truetype-tracer v4 trouvé -OK" + +#: tcl/ngcgui_ttt.tcl:70 +msgid "Note truetype-tracer v4 is required" +msgstr "Note truetype-tracer v4 est requis" + +#: tcl/ngcgui_ttt.tcl:71 +msgid "Note: truetype-tracer v4 is required" +msgstr "Note: truetype-tracer v4 est requis" + +#: tcl/ngcgui_ttt.tcl:81 +msgid "ngcgui_app.tcl must be loaded before" +msgstr "ngcgui_app.tcl doit être chargé avant" + +#: tcl/ngcgui_ttt.tcl:89 +msgid "Create a subroutine file from truetype-tracer (V4 reqd)" +msgstr "Crée un fichier sous-programme avec truetype-tracer (V4.requis)" + +#: tcl/ngcgui_ttt.tcl:102 tcl/ngcgui_ttt.tcl:115 +msgid "problem with" +msgstr "problème avec" + +#: tcl/ngcgui_ttt.tcl:106 +msgid "No entry for" +msgstr "Aucune entrée pour" + +#: tcl/ngcgui_ttt.tcl:109 +msgid "wrong version of truetype-tracer" +msgstr "mauvaise version de truetype-tracer" + +#: tcl/ngcgui_ttt.tcl:125 +msgid "not writable, using" +msgstr "Pas accessible en écriture, en utilisant" + +#: tcl/ngcgui_ttt.tcl:125 +msgid "and setting expandsub" +msgstr "and setting expandsub" + +#: tcl/ngcgui_ttt.tcl:161 +msgid "Text" +msgstr "Texte" + +#: tcl/ngcgui_ttt.tcl:171 +msgid "Linescale" +msgstr "Graduation" + +#: tcl/ngcgui_ttt.tcl:177 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3583 +msgid "none" +msgstr "Aucun" + +#: tcl/ngcgui_ttt.tcl:192 +msgid "Subdiv" +msgstr "Subdivision" + +#: tcl/ngcgui_ttt.tcl:199 +msgid "default" +msgstr "défaut" + +#: tcl/ngcgui_ttt.tcl:239 +msgid "Mode" +msgstr "Mode" + +#: tcl/ngcgui_ttt.tcl:247 +msgid "normal" +msgstr "normal" + +#: tcl/ngcgui_ttt.tcl:248 +msgid "date" +msgstr "date" + +#: tcl/ngcgui_ttt.tcl:249 +msgid "fontname" +msgstr "nom de police" + +#: tcl/ngcgui_ttt.tcl:262 +msgid "Switches" +msgstr "Switches" + +#: tcl/ngcgui_ttt.tcl:270 +msgid "Unicode" +msgstr "Unicode" + +#: tcl/ngcgui_ttt.tcl:275 +msgid "Allow Rotation" +msgstr "Rotation permise" + +#: tcl/ngcgui_ttt.tcl:295 +msgid "Make ngcgui-compatible subfile and new tab page" +msgstr "Crée un sous-fichier compatible ngcgui dans nouvel onglet" + +#: tcl/ngcgui_ttt.tcl:353 +msgid "Null text" +msgstr "Texte Null" + +#: tcl/ngcgui_ttt.tcl:384 +msgid "Using truetype-tracer default font" +msgstr "Utilise la font par défaut avec truetype-tracer" + +#: tcl/ngcgui_ttt.tcl:388 +msgid "no such file" +msgstr "aucun fichier" + +#: tcl/ngcgui_ttt.tcl:393 +msgid "file not readable" +msgstr "fichier illisible" + +#: tcl/ngcgui_ttt.tcl:507 +msgid "Creating new tab page" +msgstr "Créer un nouvel onglet" + +#: tcl/ngcgui_app.tcl:25 +msgid "" +"requires command inifindall\n" +"from axis.py (LinuxCNC 2.5) or" +msgstr "" +"nécessite une commande inifindall\n" +"depuis axis.py (LinuxCNC 2.5) ou" + +#: tcl/ngcgui_app.tcl:55 +msgid "Substituting" +msgstr "Substitution" + +#: tcl/ngcgui_app.tcl:55 +msgid "for" +msgstr "pour" + +#: tcl/ngcgui_app.tcl:59 +msgid "not readable" +msgstr "illisible" + +#: tcl/ngcgui_app.tcl:65 tcl/ngcgui_app.tcl:68 +msgid "Unexpected: multiple startups for ngcgui" +msgstr "Inattendu: startups multiples pour ngcgui" + +#: tcl/ngcgui_app.tcl:66 +msgid "LinuxCNC" +msgstr "LinuxCNC" + +#: tcl/ngcgui_app.tcl:67 +msgid "for linuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" +msgstr "pour LinuxCNC 2.5.xxx. Ne pas inclure tkapp.py dans le fichier ini" + +#: tcl/ngcgui_app.tcl:86 +msgid "LinuxCNC version" +msgstr "LinuxCNC version" + +#: tcl/ngcgui_app.tcl:87 +msgid "for LinuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" +msgstr "pour LinuxCNC 2.5.xxx. Ne pas inclure tkapp.py dans le fichier ini" + +#: tcl/tooledit.tcl:65 +msgid "Problem reading ~/.tooleditrc" +msgstr "Problème à la lecture de ~/.tooleditrc" + +#: tcl/tooledit.tcl:82 +#, tcl-format +msgid "Note: Ignoring duplicate column name: %s" +msgstr "Note: ignore le nom des colonnes dupliquées: %s" + +#: tcl/tooledit.tcl:93 +#, tcl-format +msgid "Unknown column: %s" +msgstr "Colonne %s inconnue" + +#: tcl/tooledit.tcl:210 tcl/tooledit.tcl:213 tcl/tooledit.tcl:598 +#: tcl/tooledit.tcl:599 tcl/tooledit.tcl:1032 +msgid "NEW" +msgstr "Nouveau" + +#: tcl/tooledit.tcl:232 +#, tcl-format +msgid "%s must be a number" +msgstr "%s doit être un nombre" + +#: tcl/tooledit.tcl:241 +#, tcl-format +msgid "filename: <%s> not readable" +msgstr "fichier <%s> illisible" + +#: tcl/tooledit.tcl:245 +#, tcl-format +msgid "filename: <%s> not writable" +msgstr "fichier <%s> protégé en écriture" + +#: tcl/tooledit.tcl:250 +#, tcl-format +msgid "directory: <%s> not writable" +msgstr "répertoire <%s> protégé en écriture" + +#: tcl/tooledit.tcl:294 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, value <%s> is not a number" +msgstr "" +"N° de ligne %d sauté pour le tag %s, la valeur <%s> n'est pas un nombre" -#: tcl/ngcgui.tcl:3434 ../tcl/ngcgui.tcl:3434 tcl/ngcgui.tcl:3460 -msgid "remove" -msgstr "enlever" +#: tcl/tooledit.tcl:300 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, expected integer not <%s>" +msgstr "N° de ligne %d sauté pour le tag %s, attends un entier, non <%s>" -#: tcl/ngcgui.tcl:3456 tcl/ngcgui.tcl:3462 ../tcl/ngcgui.tcl:3456 -#: ../tcl/ngcgui.tcl:3462 tcl/ngcgui.tcl:3482 tcl/ngcgui.tcl:3488 -msgid "move" -msgstr "déplacer" +#: tcl/tooledit.tcl:316 +#, tcl-format +msgid "At linenumber %d, Unknown tag <%s>" +msgstr "Au N° de ligne %d, tag <%s> inconnu" -#: tcl/ngcgui.tcl:3561 src/emc/usr_intf/pncconf/pncconf.py:7022 -#: src/emc/usr_intf/pncconf/pncconf.py:7139 -#: src/emc/usr_intf/pncconf/pncconf.py:7306 ../tcl/ngcgui.tcl:3561 -#: emc/usr_intf/pncconf/pncconf.py:7020 emc/usr_intf/pncconf/pncconf.py:7137 -#: emc/usr_intf/pncconf/pncconf.py:7304 tcl/ngcgui.tcl:3587 -#: src/emc/usr_intf/pncconf/pncconf.py:7369 -#: src/emc/usr_intf/pncconf/pncconf.py:7480 -#: src/emc/usr_intf/pncconf/pncconf.py:7645 -msgid "Custom" -msgstr "Personnalisé" +#: tcl/tooledit.tcl:399 +#, tcl-format +msgid "%s: Column sorting not available with tcl_version==%s" +msgstr "%s: tri de colonnes indisponible avec la version tcl==%s" -#: tcl/ngcgui.tcl:3587 ../tcl/ngcgui.tcl:3587 tcl/ngcgui.tcl:3613 -msgid "Problem creating page" -msgstr "Problème à la création de la page" +#: tcl/tooledit.tcl:408 +msgid "tool" +msgstr "outil" -#: tcl/ngcgui.tcl:3594 ../tcl/ngcgui.tcl:3594 tcl/ngcgui.tcl:3620 -msgid "entrykeybindings not available" -msgstr "raccourci clavier non disponible" +#: tcl/tooledit.tcl:409 +msgid "poc" +msgstr "poc" -#: tcl/ngcgui.tcl:3633 ../tcl/ngcgui.tcl:3633 tcl/ngcgui.tcl:3659 -msgid "Found multiple matches for" -msgstr "Trouve plusieurs occurrences pour" +#: tcl/tooledit.tcl:410 +msgid "diam" +msgstr "dia" -#: tcl/ngcgui.tcl:3634 ../tcl/ngcgui.tcl:3634 tcl/ngcgui.tcl:3660 -msgid "using path" -msgstr "utiliser le chemin" +#: tcl/tooledit.tcl:411 +msgid "front" +msgstr "frontal" -#: tcl/ngcgui.tcl:3642 src/emc/usr_intf/axis/scripts/axis.py:2242 -#: src/emc/usr_intf/axis/scripts/axis.py:2255 -#: src/emc/usr_intf/axis/scripts/axis.py:2268 ../tcl/ngcgui.tcl:3642 -#: emc/usr_intf/axis/scripts/axis.py:2242 -#: emc/usr_intf/axis/scripts/axis.py:2255 tcl/ngcgui.tcl:3668 -#: src/emc/usr_intf/axis/scripts/axis.py:2246 -#: src/emc/usr_intf/axis/scripts/axis.py:2259 -msgid "Warning" -msgstr "Attention" +#: tcl/tooledit.tcl:412 +msgid "back" +msgstr "arrière" -#: tcl/ngcgui.tcl:3643 ../tcl/ngcgui.tcl:3643 tcl/ngcgui.tcl:3669 -msgid "File absolute path specifier conflicts with searchpath result" -msgstr "" -"Chemin de fichier spécifié absolu, conflit avec le résultat de la recherche" +#: tcl/tooledit.tcl:413 +msgid "orien" +msgstr "orient." -#: tcl/ngcgui.tcl:3644 ../tcl/ngcgui.tcl:3644 tcl/ngcgui.tcl:3670 -msgid "Absolute Specifier" -msgstr "Spécificateur absolu" +#: tcl/tooledit.tcl:414 +msgid "comment" +msgstr "commentaire" -#: tcl/ngcgui.tcl:3645 ../tcl/ngcgui.tcl:3645 tcl/ngcgui.tcl:3671 -msgid "Using Search Result" -msgstr "Utiliser le résultat de la recherche" +#: tcl/tooledit.tcl:444 +msgid "Del" +msgstr "Eff." -#: tcl/ngcgui.tcl:3650 ../tcl/ngcgui.tcl:3650 tcl/ngcgui.tcl:3676 -msgid "File not in Search Path" -msgstr "Fichier non trouvé dans le chemin de recherche" +#: tcl/tooledit.tcl:473 +msgid "ReLoadTable" +msgstr "RechargerTable" -#: tcl/ngcgui.tcl:3652 ../tcl/ngcgui.tcl:3652 tcl/ngcgui.tcl:3678 -msgid "Must be in search path" -msgstr "Doit être dans le chemin de recherche" +#: tcl/tooledit.tcl:478 +msgid "SaveFile" +msgstr "EnregistrerFichier" -#: tcl/ngcgui.tcl:3654 ../tcl/ngcgui.tcl:3654 tcl/ngcgui.tcl:3680 -msgid "(File found -- not in search path)" -msgstr "(Fichier trouvé, hors du chemin de recherche)" +#: tcl/tooledit.tcl:483 +msgid "ReRead" +msgstr "Relire" -#: tcl/ngcgui.tcl:3656 ../tcl/ngcgui.tcl:3656 tcl/ngcgui.tcl:3682 -msgid "Current directory" -msgstr "Répertoire courant" +#: tcl/tooledit.tcl:485 +msgid "AddTool" +msgstr "AjouterOutil" -#: tcl/ngcgui.tcl:3657 ../tcl/ngcgui.tcl:3657 tcl/ngcgui.tcl:3683 -msgid "Search path" -msgstr "Chemin de recherche" +#: tcl/tooledit.tcl:535 +#, tcl-format +msgid "Opened %s" +msgstr "Ouvrir %s" -#: tcl/ngcgui.tcl:3663 ../tcl/ngcgui.tcl:3663 tcl/ngcgui.tcl:3693 -msgid "Check setting for" -msgstr "Vérifie le réglage des" +#: tcl/tooledit.tcl:536 +#, tcl-format +msgid "Created %s" +msgstr "Créer %s" -#: tcl/ngcgui.tcl:3664 ../tcl/ngcgui.tcl:3664 tcl/ngcgui.tcl:3694 -msgid "in ini file" -msgstr "dans le fichier ini" +#: tcl/tooledit.tcl:537 +msgid "File updated" +msgstr "Fichier mis à jour" -#: tcl/ngcgui.tcl:3665 ../tcl/ngcgui.tcl:3665 tcl/ngcgui.tcl:3695 -msgid "(Restart required after fixing ini file)" -msgstr "(Redémarrage requis après modif. du fichier ini)" +#: tcl/tooledit.tcl:538 +msgid "File modified" +msgstr "Fichier modifié" -#: tcl/ngcgui.tcl:3680 ../tcl/ngcgui.tcl:3680 tcl/ngcgui.tcl:3710 -msgid "Try to Continue" -msgstr "Essayer de continuer" +#: tcl/tooledit.tcl:539 +msgid "File check errors" +msgstr "Erreurs de contrôle du fichier" -#: tcl/ngcgui.tcl:3685 ../tcl/ngcgui.tcl:3685 tcl/ngcgui.tcl:3715 -msgid "Ngcgui Configuration File Not Found" -msgstr "Fichier de configuration Ngcgui introuvable" +#: tcl/tooledit.tcl:540 +msgid "File checked" +msgstr "Fichier vérifié" -#: tcl/ngcgui.tcl:3765 ../tcl/ngcgui.tcl:3765 tcl/ngcgui.tcl:3795 -msgid "Missing Tcl Package Img" -msgstr "Paquet Tcl lmg manquant" +#: tcl/tooledit.tcl:541 +msgid "File items deleted" +msgstr "Items du fichier effacés" -#: tcl/ngcgui.tcl:3766 ../tcl/ngcgui.tcl:3766 tcl/ngcgui.tcl:3796 -msgid "Please install Img" -msgstr "Installer Img" +#: tcl/tooledit.tcl:542 +msgid "Bogus lines in file ignored" +msgstr "Lignes du fichier boguées ignorées" -#: tcl/ngcgui.tcl:3965 ../tcl/ngcgui.tcl:3965 tcl/ngcgui.tcl:3995 -msgid "ini file" -msgstr "fichier ini" +#: tcl/tooledit.tcl:543 +msgid "File errors -- Check Entries" +msgstr "Erreurs de fichier -- Vérifier les entrées" -#: tcl/ngcgui.tcl:3973 ../tcl/ngcgui.tcl:3973 tcl/ngcgui.tcl:4003 -msgid "not found" -msgstr "introuvable" +#: tcl/tooledit.tcl:544 +msgid "Warning: File changed by another process" +msgstr "Attention: Fichier modifié par un autre process" -#: tcl/ngcgui_ttt.tcl:67 ../tcl/ngcgui_ttt.tcl:67 -msgid "found truetype-tracer v4 -OK" -msgstr "truetype-tracer v4 trouvé -OK" +#: tcl/tooledit.tcl:545 +msgid "Warning: File deleted by another process" +msgstr "Attention: Fichier effacé par un autre process" -#: tcl/ngcgui_ttt.tcl:70 ../tcl/ngcgui_ttt.tcl:70 -msgid "Note truetype-tracer v4 is required" -msgstr "Note truetype-tracer v4 est requis" +#: tcl/tooledit.tcl:546 +msgid "Added Tool" +msgstr "Outil ajouté" -#: tcl/ngcgui_ttt.tcl:71 ../tcl/ngcgui_ttt.tcl:71 -msgid "Note: truetype-tracer v4 is required" -msgstr "Note: truetype-tracer v4 est requis" +#: tcl/tooledit.tcl:550 +#, tcl-format +msgid "Sorted by %s, increasing" +msgstr "Tri croissant par %s" -#: tcl/ngcgui_ttt.tcl:81 ../tcl/ngcgui_ttt.tcl:81 -msgid "ngcgui_app.tcl must be loaded before" -msgstr "ngcgui_app.tcl doit être chargé avant" +#: tcl/tooledit.tcl:551 +#, tcl-format +msgid "Sorted by %s, decreasing" +msgstr "Tri décroissant par %s" -#: tcl/ngcgui_ttt.tcl:89 ../tcl/ngcgui_ttt.tcl:89 -msgid "Create a subroutine file from truetype-tracer (V4 reqd)" -msgstr "Crée un fichier sous-programme avec truetype-tracer (V4.requis)" +#: tcl/tooledit.tcl:593 +msgid "Added" +msgstr "Ajouté" -#: tcl/ngcgui_ttt.tcl:102 tcl/ngcgui_ttt.tcl:115 ../tcl/ngcgui_ttt.tcl:102 -#: ../tcl/ngcgui_ttt.tcl:115 -msgid "problem with" -msgstr "problème avec" +#: tcl/tooledit.tcl:802 +#, tcl-format +msgid "Tool %s, Column %s, parameter %s is not a number" +msgstr "Outil %s, colonne %s, le paramètre %s n'est pas un nombre" -#: tcl/ngcgui_ttt.tcl:106 ../tcl/ngcgui_ttt.tcl:106 -msgid "No entry for" -msgstr "Aucune entrée pour" +#: tcl/tooledit.tcl:811 +#, tcl-format +msgid "Tool %s, parameter %s must be nonnegative integer" +msgstr "Outil %s, le paramètre %s ne doit pas être négatif" -#: tcl/ngcgui_ttt.tcl:109 ../tcl/ngcgui_ttt.tcl:109 -msgid "wrong version of truetype-tracer" -msgstr "mauvaise version de truetype-tracer" +#: tcl/tooledit.tcl:819 +#, tcl-format +msgid "Tool %s: must be 0..9 integer" +msgstr "Outil %s: doit être un entier entre 0 et 9" -#: tcl/ngcgui_ttt.tcl:125 ../tcl/ngcgui_ttt.tcl:125 -msgid "not writable, using" -msgstr "Pas accessible en écriture, en utilisant" +#: tcl/tooledit.tcl:826 +#, tcl-format +msgid "Tool %s: <%s> must be between -360 and 360" +msgstr "Outil %s: <%s> doit être compris entre -360 et 360" -#: tcl/ngcgui_ttt.tcl:125 ../tcl/ngcgui_ttt.tcl:125 -msgid "and setting expandsub" -msgstr "and setting expandsub" +#: tcl/tooledit.tcl:842 +#, tcl-format +msgid "Pocket <%s> specified multiple times" +msgstr "Poche <%s> spécifiée de multiples fois" -#: tcl/ngcgui_ttt.tcl:161 ../tcl/ngcgui_ttt.tcl:161 -msgid "Text" -msgstr "Texte" +#: tcl/tooledit.tcl:857 +#, tcl-format +msgid "Tool <%s> specified multiple times" +msgstr "Outil <%s> spécifié de multiples fois" -#: tcl/ngcgui_ttt.tcl:171 ../tcl/ngcgui_ttt.tcl:171 -msgid "Linescale" -msgstr "Graduation" +#: tcl/tooledit.tcl:902 +msgid "File Modified" +msgstr "Fichier modifié" -#: tcl/ngcgui_ttt.tcl:177 ../tcl/ngcgui_ttt.tcl:177 -msgid "none" -msgstr "Aucun" +#: tcl/tooledit.tcl:903 +msgid "Save Modifications to File?" +msgstr "Enregistrer les modifications ?" -#: tcl/ngcgui_ttt.tcl:192 ../tcl/ngcgui_ttt.tcl:192 -msgid "Subdiv" -msgstr "Subdivision" +#: tcl/tooledit.tcl:930 +#, tcl-format +msgid "" +"Only these columns are currently used:\n" +"\n" +" %s" +msgstr "" +"Seules ces colonnes sont utilisé actuellement:\n" +"\n" +" %s" -#: tcl/ngcgui_ttt.tcl:199 ../tcl/ngcgui_ttt.tcl:199 -msgid "default" -msgstr "défaut" +#: tcl/tooledit.tcl:931 +msgid "Limit display to these columns by specifying" +msgstr "Limite l'affichage aux colonnes spécifiées" -#: tcl/ngcgui_ttt.tcl:239 ../tcl/ngcgui_ttt.tcl:239 -msgid "Mode" -msgstr "Mode" +#: tcl/tooledit.tcl:933 +msgid "Format for ini file is" +msgstr "Le format pour le fichier ini est" -#: tcl/ngcgui_ttt.tcl:247 ../tcl/ngcgui_ttt.tcl:247 -msgid "normal" -msgstr "normal" +#: tcl/tooledit.tcl:935 +msgid "For standalone use, invoke as" +msgstr "Pour l'utilisation autonome, invoquer comme" -#: tcl/ngcgui_ttt.tcl:248 ../tcl/ngcgui_ttt.tcl:248 -msgid "date" -msgstr "date" +#: tcl/tooledit.tcl:936 +msgid "tool_table_filename" +msgstr "nom_fichier_outils" -#: tcl/ngcgui_ttt.tcl:249 ../tcl/ngcgui_ttt.tcl:249 -msgid "fontname" -msgstr "nom de police" +#: tcl/tooledit.tcl:956 +#, tcl-format +msgid "Created by %s" +msgstr "Créé par %s" -#: tcl/ngcgui_ttt.tcl:262 ../tcl/ngcgui_ttt.tcl:262 -msgid "Switches" -msgstr "Switches" +#: tcl/tooledit.tcl:957 +msgid "Saved geometry (updated on program termination)" +msgstr "Géométrie enregistrée (mise à jour en quittant le programme)" -#: tcl/ngcgui_ttt.tcl:270 ../tcl/ngcgui_ttt.tcl:270 -msgid "Unicode" -msgstr "Unicode" +#: tcl/tooledit.tcl:980 +#, tcl-format +msgid "" +"%s: Axis inifile specifies multiple inifile items for: [EMCIO]TOOL_TABLE" +msgstr "" +"%s: Fichier ini d'Axis spécifie de multiples items pour: [EMCIO]TOOL_TABLE" -#: tcl/ngcgui_ttt.tcl:275 ../tcl/ngcgui_ttt.tcl:275 -msgid "Allow Rotation" -msgstr "Rotation permise" +#: tcl/tooledit.tcl:981 +#, tcl-format +msgid "%s: Using: %s" +msgstr "%s: Utiliser: %s" -#: tcl/ngcgui_ttt.tcl:295 ../tcl/ngcgui_ttt.tcl:295 -msgid "Make ngcgui-compatible subfile and new tab page" -msgstr "Crée un sous-fichier compatible ngcgui dans nouvel onglet" +#: tcl/tooledit.tcl:990 +#, tcl-format +msgid "" +"%s: Warning: Axis is running but the tool table file <%s> \n" +"differs from the standalone startup file <%s>" +msgstr "" +"%s: Attention: Axis est lancé mais le fichier de table d'outils <%s> \n" +"diffère du fichier <%s> du lancement en autonome" -#: tcl/ngcgui_ttt.tcl:353 ../tcl/ngcgui_ttt.tcl:353 -msgid "Null text" -msgstr "Texte Null" +#: tcl/tooledit.tcl:1004 +msgid "Must be On and Idle to reload tool table" +msgstr "Doit être En marche et inactive pour recharger la table d'outils" -#: tcl/ngcgui_ttt.tcl:384 ../tcl/ngcgui_ttt.tcl:384 -msgid "Using truetype-tracer default font" -msgstr "Utilise la font par défaut avec truetype-tracer" +#: tcl/tooledit.tcl:1093 +msgid "Usage" +msgstr "Utilisation" -#: tcl/ngcgui_ttt.tcl:388 ../tcl/ngcgui_ttt.tcl:388 -msgid "no such file" -msgstr "aucun fichier" +#: tcl/tooledit.tcl:1094 tcl/tooledit.tcl:1095 +msgid "filename" +msgstr "nom de fichier" -#: tcl/ngcgui_ttt.tcl:393 ../tcl/ngcgui_ttt.tcl:393 -msgid "file not readable" -msgstr "fichier illisible" +#: tcl/tooledit.tcl:1096 +#, tcl-format +msgid "Allowed column_ names are: %s" +msgstr "Nom de colonn_e alloué: %s" -#: tcl/ngcgui_ttt.tcl:507 ../tcl/ngcgui_ttt.tcl:507 -msgid "Creating new tab page" -msgstr "Créer un nouvel onglet" +#: tcl/tooledit.tcl:1106 +msgid "Missing filename" +msgstr "Nom de fichier manquant" -#: src/emc/usr_intf/axis/scripts/axis.py:144 -#: src/emc/usr_intf/axis/scripts/axis.py:148 -#: emc/usr_intf/axis/scripts/axis.py:144 +#: src/emc/usr_intf/axis/scripts/axis.py:183 msgid "Emergency stop" msgstr "Arrêt d'urgence" -#: src/emc/usr_intf/axis/scripts/axis.py:145 -#: src/emc/usr_intf/axis/scripts/axis.py:149 -#: emc/usr_intf/axis/scripts/axis.py:145 +#: src/emc/usr_intf/axis/scripts/axis.py:184 msgid "Turn machine on" msgstr "Marche machine" -#: src/emc/usr_intf/axis/scripts/axis.py:147 -#: src/emc/usr_intf/axis/scripts/axis.py:151 -#: emc/usr_intf/axis/scripts/axis.py:147 +#: src/emc/usr_intf/axis/scripts/axis.py:186 msgid "Activate first axis" msgstr "Activer le premier axe" -#: src/emc/usr_intf/axis/scripts/axis.py:148 -#: src/emc/usr_intf/axis/scripts/axis.py:152 -#: emc/usr_intf/axis/scripts/axis.py:148 +#: src/emc/usr_intf/axis/scripts/axis.py:187 msgid "Activate second axis" msgstr "Activer le deuxième axe " -#: src/emc/usr_intf/axis/scripts/axis.py:149 -#: src/emc/usr_intf/axis/scripts/axis.py:153 -#: emc/usr_intf/axis/scripts/axis.py:149 +#: src/emc/usr_intf/axis/scripts/axis.py:188 msgid "Activate third axis" msgstr "Activer le troisième axe " -#: src/emc/usr_intf/axis/scripts/axis.py:150 -#: src/emc/usr_intf/axis/scripts/axis.py:154 -#: emc/usr_intf/axis/scripts/axis.py:150 +#: src/emc/usr_intf/axis/scripts/axis.py:189 msgid "Activate fourth axis" msgstr "Activer le quatrième axe " -#: src/emc/usr_intf/axis/scripts/axis.py:151 -#: src/emc/usr_intf/axis/scripts/axis.py:155 -#: emc/usr_intf/axis/scripts/axis.py:151 +#: src/emc/usr_intf/axis/scripts/axis.py:190 msgid "Activate fifth through ninth axis" msgstr "Activer du cinquième axe au neuvième" -#: src/emc/usr_intf/axis/scripts/axis.py:152 -#: src/emc/usr_intf/axis/scripts/axis.py:156 -#: emc/usr_intf/axis/scripts/axis.py:152 +#: src/emc/usr_intf/axis/scripts/axis.py:191 msgid "Set Feed Override from 0% to 100%" msgstr "Correction de la vitesse entre 0% et 100%" -#: src/emc/usr_intf/axis/scripts/axis.py:153 -#: src/emc/usr_intf/axis/scripts/axis.py:157 -#: emc/usr_intf/axis/scripts/axis.py:153 +#: src/emc/usr_intf/axis/scripts/axis.py:192 msgid ", and ." msgstr ", et ." -#: src/emc/usr_intf/axis/scripts/axis.py:153 -#: src/emc/usr_intf/axis/scripts/axis.py:157 -#: emc/usr_intf/axis/scripts/axis.py:153 +#: src/emc/usr_intf/axis/scripts/axis.py:192 msgid "Select jog speed" msgstr "Sélection de la vitesse de jog" -#: src/emc/usr_intf/axis/scripts/axis.py:154 -#: src/emc/usr_intf/axis/scripts/axis.py:158 -#: emc/usr_intf/axis/scripts/axis.py:154 +#: src/emc/usr_intf/axis/scripts/axis.py:193 msgid "< and >" msgstr "< et >" -#: src/emc/usr_intf/axis/scripts/axis.py:154 -#: src/emc/usr_intf/axis/scripts/axis.py:158 -#: emc/usr_intf/axis/scripts/axis.py:154 +#: src/emc/usr_intf/axis/scripts/axis.py:193 msgid "Select angular jog speed" msgstr "Sélection de la vitesse angulaire de jog" -#: src/emc/usr_intf/axis/scripts/axis.py:155 -#: src/emc/usr_intf/axis/scripts/axis.py:159 -#: emc/usr_intf/axis/scripts/axis.py:155 +#: src/emc/usr_intf/axis/scripts/axis.py:194 msgid "I, Shift-I" msgstr "I, Maj+I" -#: src/emc/usr_intf/axis/scripts/axis.py:155 share/axis/tcl/axis.tcl:2356 -#: src/emc/usr_intf/axis/scripts/axis.py:159 -#: emc/usr_intf/axis/scripts/axis.py:155 ../share/axis/tcl/axis.tcl:2356 +#: src/emc/usr_intf/axis/scripts/axis.py:194 share/axis/tcl/axis.tcl:2481 msgid "Select jog increment" msgstr "Sélection d'incrément de jog" -#: src/emc/usr_intf/axis/scripts/axis.py:156 -#: src/emc/usr_intf/axis/scripts/axis.py:160 -#: emc/usr_intf/axis/scripts/axis.py:156 +#: src/emc/usr_intf/axis/scripts/axis.py:195 msgid "Continuous jog" msgstr "Jog en continu" -#: src/emc/usr_intf/axis/scripts/axis.py:157 -#: src/emc/usr_intf/pncconf/pncconf.py:479 -#: src/emc/usr_intf/axis/scripts/axis.py:161 -#: emc/usr_intf/axis/scripts/axis.py:157 emc/usr_intf/pncconf/pncconf.py:479 -#: src/emc/usr_intf/pncconf/pncconf.py:501 +#: src/emc/usr_intf/axis/scripts/axis.py:196 +#: src/emc/usr_intf/pncconf/pncconf.py:408 msgid "Home" msgstr "Origine" -#: src/emc/usr_intf/axis/scripts/axis.py:157 -#: src/emc/usr_intf/axis/scripts/axis.py:161 -#: emc/usr_intf/axis/scripts/axis.py:157 +#: src/emc/usr_intf/axis/scripts/axis.py:196 msgid "Send active axis home" msgstr "Prise d'origine machine de l'axe courant" -#: src/emc/usr_intf/axis/scripts/axis.py:158 -#: src/emc/usr_intf/axis/scripts/axis.py:162 -#: emc/usr_intf/axis/scripts/axis.py:158 +#: src/emc/usr_intf/axis/scripts/axis.py:197 msgid "Ctrl-Home" msgstr "Ctrl+origine" -#: src/emc/usr_intf/axis/scripts/axis.py:158 -#: src/emc/usr_intf/axis/scripts/axis.py:162 -#: emc/usr_intf/axis/scripts/axis.py:158 +#: src/emc/usr_intf/axis/scripts/axis.py:197 msgid "Home all axes" msgstr "Prise d'origine machine de tous les axes" -#: src/emc/usr_intf/axis/scripts/axis.py:159 -#: src/emc/usr_intf/axis/scripts/axis.py:163 -#: emc/usr_intf/axis/scripts/axis.py:159 +#: src/emc/usr_intf/axis/scripts/axis.py:198 msgid "Shift-Home" msgstr "Maj+origine" -#: src/emc/usr_intf/axis/scripts/axis.py:159 -#: src/emc/usr_intf/axis/scripts/axis.py:163 -#: emc/usr_intf/axis/scripts/axis.py:159 +#: src/emc/usr_intf/axis/scripts/axis.py:198 msgid "Zero G54 offset for active axis" msgstr "Annule le décalage G54 de l'axe actif" -#: src/emc/usr_intf/axis/scripts/axis.py:160 -#: src/emc/usr_intf/axis/scripts/axis.py:164 -#: emc/usr_intf/axis/scripts/axis.py:160 +#: src/emc/usr_intf/axis/scripts/axis.py:199 msgid "End" msgstr "Fin" -#: src/emc/usr_intf/axis/scripts/axis.py:160 -#: src/emc/usr_intf/axis/scripts/axis.py:164 -#: emc/usr_intf/axis/scripts/axis.py:160 +#: src/emc/usr_intf/axis/scripts/axis.py:199 msgid "Set G54 offset for active axis" msgstr "Valide le décalage G54 de l'axe actif" -#: src/emc/usr_intf/axis/scripts/axis.py:161 -#: src/emc/usr_intf/axis/scripts/axis.py:165 -#: emc/usr_intf/axis/scripts/axis.py:161 +#: src/emc/usr_intf/axis/scripts/axis.py:200 msgid "Jog active axis" msgstr "Jog de l'axe actif" -#: src/emc/usr_intf/axis/scripts/axis.py:164 -#: src/emc/usr_intf/axis/scripts/axis.py:168 -#: emc/usr_intf/axis/scripts/axis.py:164 +#: src/emc/usr_intf/axis/scripts/axis.py:203 msgid "Left, Right" msgstr "Gauche, Droite" -#: src/emc/usr_intf/axis/scripts/axis.py:164 -#: src/emc/usr_intf/axis/scripts/axis.py:168 -#: emc/usr_intf/axis/scripts/axis.py:164 +#: src/emc/usr_intf/axis/scripts/axis.py:203 msgid "Jog first axis" msgstr "Jog du premier axe" -#: src/emc/usr_intf/axis/scripts/axis.py:165 -#: src/emc/usr_intf/axis/scripts/axis.py:169 -#: emc/usr_intf/axis/scripts/axis.py:165 +#: src/emc/usr_intf/axis/scripts/axis.py:204 msgid "Up, Down" msgstr "Haut, Bas" -#: src/emc/usr_intf/axis/scripts/axis.py:165 -#: src/emc/usr_intf/axis/scripts/axis.py:169 -#: emc/usr_intf/axis/scripts/axis.py:165 +#: src/emc/usr_intf/axis/scripts/axis.py:204 msgid "Jog second axis" msgstr "Jog du deuxième axe" -#: src/emc/usr_intf/axis/scripts/axis.py:166 -#: src/emc/usr_intf/axis/scripts/axis.py:170 -#: emc/usr_intf/axis/scripts/axis.py:166 +#: src/emc/usr_intf/axis/scripts/axis.py:205 msgid "Pg Up, Pg Dn" msgstr "Pg.Préc, Pg.Suiv" -#: src/emc/usr_intf/axis/scripts/axis.py:166 -#: src/emc/usr_intf/axis/scripts/axis.py:170 -#: emc/usr_intf/axis/scripts/axis.py:166 +#: src/emc/usr_intf/axis/scripts/axis.py:205 msgid "Jog third axis" msgstr "Jog du troisième axe" -#: src/emc/usr_intf/axis/scripts/axis.py:167 -#: src/emc/usr_intf/axis/scripts/axis.py:171 -#: emc/usr_intf/axis/scripts/axis.py:167 +#: src/emc/usr_intf/axis/scripts/axis.py:206 msgid "Shift+above jogs" msgstr "Shift+jog dessus" -#: src/emc/usr_intf/axis/scripts/axis.py:167 -#: src/emc/usr_intf/axis/scripts/axis.py:171 -#: emc/usr_intf/axis/scripts/axis.py:167 +#: src/emc/usr_intf/axis/scripts/axis.py:206 msgid "Jog at traverse speed" msgstr "Jog en vitesse rapide" -#: src/emc/usr_intf/axis/scripts/axis.py:168 -#: src/emc/usr_intf/axis/scripts/axis.py:172 -#: emc/usr_intf/axis/scripts/axis.py:168 +#: src/emc/usr_intf/axis/scripts/axis.py:207 msgid "Jog fourth axis" msgstr "Jog du quatrième axe" -#: src/emc/usr_intf/axis/scripts/axis.py:171 -#: src/emc/usr_intf/axis/scripts/axis.py:175 -#: emc/usr_intf/axis/scripts/axis.py:171 +#: src/emc/usr_intf/axis/scripts/axis.py:210 msgid "Toggle between Drag and Rotate mode" msgstr "Bascule entre « glisser la vue » et « tourner la vue »" -#: src/emc/usr_intf/axis/scripts/axis.py:172 -#: src/emc/usr_intf/axis/scripts/axis.py:176 -#: emc/usr_intf/axis/scripts/axis.py:172 +#: src/emc/usr_intf/axis/scripts/axis.py:211 msgid "Left Button" msgstr "Bouton gauche" -#: src/emc/usr_intf/axis/scripts/axis.py:172 -#: src/emc/usr_intf/axis/scripts/axis.py:176 -#: emc/usr_intf/axis/scripts/axis.py:172 +#: src/emc/usr_intf/axis/scripts/axis.py:211 msgid "Pan, rotate or select line" msgstr "Glisser la vue, la tourner ou sélectionner la ligne" -#: src/emc/usr_intf/axis/scripts/axis.py:173 -#: src/emc/usr_intf/axis/scripts/axis.py:177 -#: emc/usr_intf/axis/scripts/axis.py:173 +#: src/emc/usr_intf/axis/scripts/axis.py:212 msgid "Shift+Left Button" msgstr "Maj+bouton gauche" -#: src/emc/usr_intf/axis/scripts/axis.py:173 -#: src/emc/usr_intf/axis/scripts/axis.py:177 -#: emc/usr_intf/axis/scripts/axis.py:173 +#: src/emc/usr_intf/axis/scripts/axis.py:212 msgid "Rotate or pan" msgstr "Rotation ou glissement de la vue" -#: src/emc/usr_intf/axis/scripts/axis.py:174 -#: src/emc/usr_intf/axis/scripts/axis.py:178 -#: emc/usr_intf/axis/scripts/axis.py:174 +#: src/emc/usr_intf/axis/scripts/axis.py:213 msgid "Right Button" msgstr "Bouton droit" -#: src/emc/usr_intf/axis/scripts/axis.py:174 -#: src/emc/usr_intf/axis/scripts/axis.py:176 -#: src/emc/usr_intf/axis/scripts/axis.py:177 -#: src/emc/usr_intf/axis/scripts/axis.py:178 -#: src/emc/usr_intf/axis/scripts/axis.py:180 -#: src/emc/usr_intf/axis/scripts/axis.py:181 -#: emc/usr_intf/axis/scripts/axis.py:174 emc/usr_intf/axis/scripts/axis.py:176 -#: emc/usr_intf/axis/scripts/axis.py:177 +#: src/emc/usr_intf/axis/scripts/axis.py:213 +#: src/emc/usr_intf/axis/scripts/axis.py:215 +#: src/emc/usr_intf/axis/scripts/axis.py:216 msgid "Zoom view" msgstr "Zoomer la vue" -#: src/emc/usr_intf/axis/scripts/axis.py:175 -#: src/emc/usr_intf/axis/scripts/axis.py:179 -#: emc/usr_intf/axis/scripts/axis.py:175 +#: src/emc/usr_intf/axis/scripts/axis.py:214 msgid "Wheel Button" msgstr "Appui molette souris" -#: src/emc/usr_intf/axis/scripts/axis.py:175 -#: src/emc/usr_intf/axis/scripts/axis.py:179 -#: emc/usr_intf/axis/scripts/axis.py:175 +#: src/emc/usr_intf/axis/scripts/axis.py:214 msgid "Rotate view" msgstr "Tourner la vue" -#: src/emc/usr_intf/axis/scripts/axis.py:176 -#: src/emc/usr_intf/axis/scripts/axis.py:180 -#: emc/usr_intf/axis/scripts/axis.py:176 +#: src/emc/usr_intf/axis/scripts/axis.py:215 msgid "Rotate Wheel" msgstr "Rotation molette souris" -#: src/emc/usr_intf/axis/scripts/axis.py:177 -#: src/emc/usr_intf/axis/scripts/axis.py:181 -#: emc/usr_intf/axis/scripts/axis.py:177 +#: src/emc/usr_intf/axis/scripts/axis.py:216 msgid "Control+Left Button" msgstr "Ctrl+bouton gauche" -#: src/emc/usr_intf/axis/scripts/axis.py:180 -#: src/emc/usr_intf/axis/scripts/axis.py:184 -#: emc/usr_intf/axis/scripts/axis.py:180 +#: src/emc/usr_intf/axis/scripts/axis.py:219 msgid "Manual control" msgstr "Contrôle manuel" -#: src/emc/usr_intf/axis/scripts/axis.py:181 -#: src/emc/usr_intf/axis/scripts/axis.py:185 -#: emc/usr_intf/axis/scripts/axis.py:181 +#: src/emc/usr_intf/axis/scripts/axis.py:220 msgid "Code entry (MDI)" msgstr "Données en manuel (MDI)" -#: src/emc/usr_intf/axis/scripts/axis.py:182 -#: src/emc/usr_intf/axis/scripts/axis.py:186 -#: emc/usr_intf/axis/scripts/axis.py:182 +#: src/emc/usr_intf/axis/scripts/axis.py:221 msgid "Control-M" msgstr "Ctrl+M" -#: src/emc/usr_intf/axis/scripts/axis.py:182 -#: src/emc/usr_intf/axis/scripts/axis.py:186 -#: emc/usr_intf/axis/scripts/axis.py:182 +#: src/emc/usr_intf/axis/scripts/axis.py:221 msgid "Clear MDI history" msgstr "Vider l'historique du MDI" -#: src/emc/usr_intf/axis/scripts/axis.py:183 -#: src/emc/usr_intf/axis/scripts/axis.py:187 -#: emc/usr_intf/axis/scripts/axis.py:183 +#: src/emc/usr_intf/axis/scripts/axis.py:222 msgid "Control-H" msgstr "Ctrl+H" -#: src/emc/usr_intf/axis/scripts/axis.py:183 -#: src/emc/usr_intf/axis/scripts/axis.py:187 -#: emc/usr_intf/axis/scripts/axis.py:183 +#: src/emc/usr_intf/axis/scripts/axis.py:222 msgid "Copy selected MDI history elements" msgstr "Copier la sélection de l'historique du MDI" -#: src/emc/usr_intf/axis/scripts/axis.py:184 -#: src/emc/usr_intf/axis/scripts/axis.py:188 -#: emc/usr_intf/axis/scripts/axis.py:184 +#: src/emc/usr_intf/axis/scripts/axis.py:223 msgid "to clipboard" msgstr "dans le presse-papiers" -#: src/emc/usr_intf/axis/scripts/axis.py:185 -#: src/emc/usr_intf/axis/scripts/axis.py:189 -#: emc/usr_intf/axis/scripts/axis.py:185 +#: src/emc/usr_intf/axis/scripts/axis.py:224 msgid "Control-Shift-H" msgstr "Ctrl+Maj+H" -#: src/emc/usr_intf/axis/scripts/axis.py:185 -#: src/emc/usr_intf/axis/scripts/axis.py:189 -#: emc/usr_intf/axis/scripts/axis.py:185 +#: src/emc/usr_intf/axis/scripts/axis.py:224 msgid "Paste clipboard to MDI history" msgstr "Coller dans l'historique du MDI" -#: src/emc/usr_intf/axis/scripts/axis.py:186 share/axis/tcl/axis.tcl:1113 +#: src/emc/usr_intf/axis/scripts/axis.py:225 share/axis/tcl/axis.tcl:1183 #: src/emc/usr_intf/touchy/touchy.glade:508 -#: src/emc/usr_intf/axis/scripts/axis.py:190 -#: emc/usr_intf/axis/scripts/axis.py:186 ../share/axis/tcl/axis.tcl:1113 -#: emc/usr_intf/touchy/touchy.glade:508 msgid "Override Limits" msgstr "Dépassement des limites" -#: src/emc/usr_intf/axis/scripts/axis.py:188 -#: src/emc/usr_intf/axis/scripts/axis.py:192 -#: emc/usr_intf/axis/scripts/axis.py:188 +#: src/emc/usr_intf/axis/scripts/axis.py:227 msgid "Open program" msgstr "Ouvrir programme" -#: src/emc/usr_intf/axis/scripts/axis.py:189 -#: src/emc/usr_intf/axis/scripts/axis.py:193 -#: emc/usr_intf/axis/scripts/axis.py:189 +#: src/emc/usr_intf/axis/scripts/axis.py:228 msgid "Control-R" msgstr "Ctrl+R" -#: src/emc/usr_intf/axis/scripts/axis.py:189 -#: src/emc/usr_intf/axis/scripts/axis.py:193 -#: emc/usr_intf/axis/scripts/axis.py:189 +#: src/emc/usr_intf/axis/scripts/axis.py:228 msgid "Reload program" msgstr "Recharger le programme" -#: src/emc/usr_intf/axis/scripts/axis.py:190 -#: src/emc/usr_intf/axis/scripts/axis.py:194 -#: emc/usr_intf/axis/scripts/axis.py:190 +#: src/emc/usr_intf/axis/scripts/axis.py:229 msgid "Control-S" msgstr "Ctrl+S" -#: src/emc/usr_intf/axis/scripts/axis.py:190 -#: src/emc/usr_intf/axis/scripts/axis.py:194 -#: emc/usr_intf/axis/scripts/axis.py:190 +#: src/emc/usr_intf/axis/scripts/axis.py:229 msgid "Save g-code as" msgstr "Enregistrer le G-code sous" -#: src/emc/usr_intf/axis/scripts/axis.py:191 -#: src/emc/usr_intf/axis/scripts/axis.py:195 -#: emc/usr_intf/axis/scripts/axis.py:191 +#: src/emc/usr_intf/axis/scripts/axis.py:230 msgid "Run program" msgstr "Lancer le programme" -#: src/emc/usr_intf/axis/scripts/axis.py:192 -#: src/emc/usr_intf/axis/scripts/axis.py:196 -#: emc/usr_intf/axis/scripts/axis.py:192 +#: src/emc/usr_intf/axis/scripts/axis.py:231 msgid "Step program" msgstr "Programme pas à pas" -#: src/emc/usr_intf/axis/scripts/axis.py:193 -#: src/emc/usr_intf/axis/scripts/axis.py:197 -#: emc/usr_intf/axis/scripts/axis.py:193 +#: src/emc/usr_intf/axis/scripts/axis.py:232 msgid "Pause program" msgstr "Programme en pause" -#: src/emc/usr_intf/axis/scripts/axis.py:194 -#: src/emc/usr_intf/axis/scripts/axis.py:198 -#: emc/usr_intf/axis/scripts/axis.py:194 +#: src/emc/usr_intf/axis/scripts/axis.py:233 msgid "Resume program" msgstr "Reprise du programme" -#: src/emc/usr_intf/axis/scripts/axis.py:195 -#: src/emc/usr_intf/axis/scripts/axis.py:199 -#: emc/usr_intf/axis/scripts/axis.py:195 +#: src/emc/usr_intf/axis/scripts/axis.py:234 msgid "Stop running program, or" msgstr "Arrêter le programme, ou" -#: src/emc/usr_intf/axis/scripts/axis.py:196 -#: src/emc/usr_intf/axis/scripts/axis.py:200 -#: emc/usr_intf/axis/scripts/axis.py:196 +#: src/emc/usr_intf/axis/scripts/axis.py:235 msgid "stop loading program preview" msgstr "stopper le parcours d'outil" -#: src/emc/usr_intf/axis/scripts/axis.py:198 -#: src/emc/usr_intf/axis/scripts/axis.py:202 -#: emc/usr_intf/axis/scripts/axis.py:198 +#: src/emc/usr_intf/axis/scripts/axis.py:237 msgid "Toggle mist" msgstr "Avec ou sans gouttelettes" -#: src/emc/usr_intf/axis/scripts/axis.py:199 -#: src/emc/usr_intf/axis/scripts/axis.py:203 -#: emc/usr_intf/axis/scripts/axis.py:199 +#: src/emc/usr_intf/axis/scripts/axis.py:238 msgid "Toggle flood" msgstr "Avec ou sans arrosage" -#: src/emc/usr_intf/axis/scripts/axis.py:200 -#: src/emc/usr_intf/axis/scripts/axis.py:204 -#: emc/usr_intf/axis/scripts/axis.py:200 +#: src/emc/usr_intf/axis/scripts/axis.py:239 msgid "Spindle brake off" msgstr "Relâchement frein de broche" -#: src/emc/usr_intf/axis/scripts/axis.py:201 -#: src/emc/usr_intf/axis/scripts/axis.py:205 -#: emc/usr_intf/axis/scripts/axis.py:201 +#: src/emc/usr_intf/axis/scripts/axis.py:240 msgid "Shift-B" msgstr "Maj+B" -#: src/emc/usr_intf/axis/scripts/axis.py:201 -#: src/emc/usr_intf/axis/scripts/axis.py:205 -#: emc/usr_intf/axis/scripts/axis.py:201 +#: src/emc/usr_intf/axis/scripts/axis.py:240 msgid "Spindle brake on" msgstr "Activation frein de broche" -#: src/emc/usr_intf/axis/scripts/axis.py:202 -#: src/emc/usr_intf/axis/scripts/axis.py:206 -#: emc/usr_intf/axis/scripts/axis.py:202 +#: src/emc/usr_intf/axis/scripts/axis.py:241 msgid "Turn spindle clockwise" msgstr "Broche en sens horaire" -#: src/emc/usr_intf/axis/scripts/axis.py:203 -#: src/emc/usr_intf/axis/scripts/axis.py:207 -#: emc/usr_intf/axis/scripts/axis.py:203 +#: src/emc/usr_intf/axis/scripts/axis.py:242 msgid "Turn spindle counterclockwise" msgstr "Broche en sens anti-horaire" -#: src/emc/usr_intf/axis/scripts/axis.py:204 -#: src/emc/usr_intf/axis/scripts/axis.py:208 -#: emc/usr_intf/axis/scripts/axis.py:204 +#: src/emc/usr_intf/axis/scripts/axis.py:243 msgid "Turn spindle more slowly" msgstr "Diminuer la vitesse de broche" -#: src/emc/usr_intf/axis/scripts/axis.py:205 -#: src/emc/usr_intf/axis/scripts/axis.py:209 -#: emc/usr_intf/axis/scripts/axis.py:205 +#: src/emc/usr_intf/axis/scripts/axis.py:244 msgid "Turn spindle more quickly" msgstr "Augmenter la vitesse de broche" -#: src/emc/usr_intf/axis/scripts/axis.py:207 -#: src/emc/usr_intf/axis/scripts/axis.py:211 -#: emc/usr_intf/axis/scripts/axis.py:207 +#: src/emc/usr_intf/axis/scripts/axis.py:246 msgid "Control-K" msgstr "Ctrl+K" -#: src/emc/usr_intf/axis/scripts/axis.py:207 -#: src/emc/usr_intf/axis/scripts/axis.py:211 -#: emc/usr_intf/axis/scripts/axis.py:207 +#: src/emc/usr_intf/axis/scripts/axis.py:246 msgid "Clear live plot" msgstr "Rafraîchir le parcours d'outil" -#: src/emc/usr_intf/axis/scripts/axis.py:208 -#: src/emc/usr_intf/axis/scripts/axis.py:212 -#: emc/usr_intf/axis/scripts/axis.py:208 +#: src/emc/usr_intf/axis/scripts/axis.py:247 msgid "Cycle among preset views" msgstr "Défilement cyclique des vues prédéfinies" -#: src/emc/usr_intf/axis/scripts/axis.py:209 -#: src/emc/usr_intf/axis/scripts/axis.py:213 -#: emc/usr_intf/axis/scripts/axis.py:209 +#: src/emc/usr_intf/axis/scripts/axis.py:248 msgid "Cycle among preview, DRO, and user tabs" msgstr "Défilement parcours d'outil, visu et onglets utilisateur" -#: src/emc/usr_intf/axis/scripts/axis.py:211 -#: src/emc/usr_intf/axis/scripts/axis.py:215 -#: emc/usr_intf/axis/scripts/axis.py:211 +#: src/emc/usr_intf/axis/scripts/axis.py:250 msgid "Ctrl-Space" msgstr "Ctrl-Espace" -#: src/emc/usr_intf/axis/scripts/axis.py:211 -#: src/emc/usr_intf/axis/scripts/axis.py:215 -#: emc/usr_intf/axis/scripts/axis.py:211 +#: src/emc/usr_intf/axis/scripts/axis.py:250 msgid "Clear notifications" msgstr "Effacer les notifications" -#: src/emc/usr_intf/axis/scripts/axis.py:828 -#: src/emc/usr_intf/axis/scripts/axis.py:836 -#: emc/usr_intf/axis/scripts/axis.py:828 +#: src/emc/usr_intf/axis/scripts/axis.py:850 #, python-format msgid "Unknown tool %d" msgstr "Outil %d inconnu" -#: src/emc/usr_intf/axis/scripts/axis.py:830 -#: src/emc/usr_intf/axis/scripts/axis.py:838 -#: emc/usr_intf/axis/scripts/axis.py:830 +#: src/emc/usr_intf/axis/scripts/axis.py:852 msgid "No tool" msgstr "Pas d'outil" -#: src/emc/usr_intf/axis/scripts/axis.py:832 -#: src/emc/usr_intf/axis/scripts/axis.py:840 -#: emc/usr_intf/axis/scripts/axis.py:832 +#: src/emc/usr_intf/axis/scripts/axis.py:854 #, python-format msgid "Tool %(tool)d, offset %(zo)g, diameter %(dia)g" msgstr "Outil %(tool)d, offset %(zo)g, diamètre %(dia)g" -#: src/emc/usr_intf/axis/scripts/axis.py:834 -#: src/emc/usr_intf/axis/scripts/axis.py:842 -#: emc/usr_intf/axis/scripts/axis.py:834 +#: src/emc/usr_intf/axis/scripts/axis.py:856 #, python-format msgid "Tool %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" msgstr "Outil %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" -#: src/emc/usr_intf/axis/scripts/axis.py:1005 -#: src/emc/usr_intf/axis/scripts/axis.py:1013 -#: emc/usr_intf/axis/scripts/axis.py:1005 -#: src/emc/usr_intf/axis/scripts/axis.py:1009 +#: src/emc/usr_intf/axis/scripts/axis.py:1031 msgid "Filtering..." msgstr "Filtrage..." -#: src/emc/usr_intf/axis/scripts/axis.py:1065 -#: src/emc/usr_intf/axis/scripts/axis.py:1073 -#: emc/usr_intf/axis/scripts/axis.py:1065 -#: src/emc/usr_intf/axis/scripts/axis.py:1069 +#: src/emc/usr_intf/axis/scripts/axis.py:1102 msgid "Filter failed" msgstr "Le filtrage a échoué" -#: src/emc/usr_intf/axis/scripts/axis.py:1066 -#: src/emc/usr_intf/axis/scripts/axis.py:1074 -#: emc/usr_intf/axis/scripts/axis.py:1066 -#: src/emc/usr_intf/axis/scripts/axis.py:1070 +#: src/emc/usr_intf/axis/scripts/axis.py:1103 #, python-format msgid "" "The program %(program)r exited with code %(code)d. Any error messages it " @@ -4357,18 +5893,12 @@ msgstr "" "Le programme %(program)r s'est arrêté avec le code %(code)d. Si des " "messages ont été produits, ils sont ci-dessous:" -#: src/emc/usr_intf/axis/scripts/axis.py:1127 -#: src/emc/usr_intf/axis/scripts/axis.py:1139 -#: emc/usr_intf/axis/scripts/axis.py:1127 -#: src/emc/usr_intf/axis/scripts/axis.py:1131 +#: src/emc/usr_intf/axis/scripts/axis.py:1171 #, python-format msgid "G-Code error in %s" msgstr "Erreur de G-code en %s" -#: src/emc/usr_intf/axis/scripts/axis.py:1128 -#: src/emc/usr_intf/axis/scripts/axis.py:1140 -#: emc/usr_intf/axis/scripts/axis.py:1128 -#: src/emc/usr_intf/axis/scripts/axis.py:1132 +#: src/emc/usr_intf/axis/scripts/axis.py:1172 #, python-format msgid "" "Near line %(seq)d of %(f)s:\n" @@ -4377,230 +5907,134 @@ msgstr "" "Vers la ligne %(seq)d de %(f)s:\n" "%(error_str)s" -#: src/emc/usr_intf/axis/scripts/axis.py:1279 -#: src/emc/usr_intf/axis/scripts/axis.py:2712 share/axis/tcl/axis.tcl:1092 -#: share/axis/tcl/axis.tcl:1094 share/axis/tcl/axis.tcl:2144 -#: src/emc/usr_intf/axis/scripts/axis.py:1292 -#: src/emc/usr_intf/axis/scripts/axis.py:2725 -#: emc/usr_intf/axis/scripts/axis.py:1279 -#: emc/usr_intf/axis/scripts/axis.py:2712 ../share/axis/tcl/axis.tcl:1092 -#: ../share/axis/tcl/axis.tcl:1094 ../share/axis/tcl/axis.tcl:2144 -#: src/emc/usr_intf/axis/scripts/axis.py:1283 -#: src/emc/usr_intf/axis/scripts/axis.py:2716 +#: src/emc/usr_intf/axis/scripts/axis.py:1341 +#: src/emc/usr_intf/axis/scripts/axis.py:2942 share/axis/tcl/axis.tcl:1162 +#: share/axis/tcl/axis.tcl:1164 share/axis/tcl/axis.tcl:2269 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:895 msgid "Continuous" msgstr "Continu" -#: src/emc/usr_intf/axis/scripts/axis.py:1390 -#: src/emc/usr_intf/axis/scripts/axis.py:1403 -#: emc/usr_intf/axis/scripts/axis.py:1390 -#: src/emc/usr_intf/axis/scripts/axis.py:1394 +#: src/emc/usr_intf/axis/scripts/axis.py:1452 msgid "Ok" msgstr "Ok" -#: src/emc/usr_intf/axis/scripts/axis.py:1533 -#: src/emc/usr_intf/axis/scripts/axis.py:1546 -#: emc/usr_intf/axis/scripts/axis.py:1533 -#: src/emc/usr_intf/axis/scripts/axis.py:1537 +#: src/emc/usr_intf/axis/scripts/axis.py:1599 msgid "T Tool Table" msgstr "T Table d'outils" -#: src/emc/usr_intf/axis/scripts/axis.py:1544 -#: src/emc/usr_intf/axis/scripts/axis.py:1717 -#: src/emc/usr_intf/stepconf/stepconf.py:1691 -#: src/emc/usr_intf/stepconf/stepconf.py:2235 -#: src/emc/usr_intf/axis/scripts/axis.py:1557 -#: src/emc/usr_intf/axis/scripts/axis.py:1730 -#: emc/usr_intf/axis/scripts/axis.py:1544 -#: emc/usr_intf/axis/scripts/axis.py:1717 -#: emc/usr_intf/stepconf/stepconf.py:1691 -#: emc/usr_intf/stepconf/stepconf.py:2235 -#: src/emc/usr_intf/axis/scripts/axis.py:1548 -#: src/emc/usr_intf/axis/scripts/axis.py:1721 +#: src/emc/usr_intf/axis/scripts/axis.py:1610 +#: src/emc/usr_intf/axis/scripts/axis.py:1859 +#: src/emc/usr_intf/axis/scripts/axis.py:2387 +#: src/emc/usr_intf/stepconf/stepconf.py:1328 +#: src/emc/usr_intf/stepconf/pages.py:631 msgid "in" msgstr "en" -#: src/emc/usr_intf/axis/scripts/axis.py:1547 -#: src/emc/usr_intf/axis/scripts/axis.py:1560 -#: emc/usr_intf/axis/scripts/axis.py:1547 -#: src/emc/usr_intf/axis/scripts/axis.py:1551 +#: src/emc/usr_intf/axis/scripts/axis.py:1613 msgid " radius" msgstr "rayon" -#: src/emc/usr_intf/axis/scripts/axis.py:1549 -#: src/emc/usr_intf/axis/scripts/axis.py:1562 -#: emc/usr_intf/axis/scripts/axis.py:1549 -#: src/emc/usr_intf/axis/scripts/axis.py:1553 +#: src/emc/usr_intf/axis/scripts/axis.py:1615 msgid " diameter" msgstr "diamètre" -#: src/emc/usr_intf/axis/scripts/axis.py:1550 -#: src/emc/usr_intf/axis/scripts/axis.py:1563 -#: emc/usr_intf/axis/scripts/axis.py:1550 -#: src/emc/usr_intf/axis/scripts/axis.py:1554 +#: src/emc/usr_intf/axis/scripts/axis.py:1616 msgid "°" msgstr "°" -#: src/emc/usr_intf/axis/scripts/axis.py:1559 -#: src/emc/usr_intf/axis/scripts/axis.py:1572 -#: emc/usr_intf/axis/scripts/axis.py:1559 -#: src/emc/usr_intf/axis/scripts/axis.py:1563 +#: src/emc/usr_intf/axis/scripts/axis.py:1625 msgid "Coordinate System:" msgstr "Décalage origine pièce" -#: src/emc/usr_intf/axis/scripts/axis.py:1575 -#: src/emc/usr_intf/axis/scripts/axis.py:1588 -#: emc/usr_intf/axis/scripts/axis.py:1575 -#: src/emc/usr_intf/axis/scripts/axis.py:1579 +#: src/emc/usr_intf/axis/scripts/axis.py:1641 msgid "fixture" msgstr "porte-pièce" -#: src/emc/usr_intf/axis/scripts/axis.py:1576 -#: src/emc/usr_intf/axis/scripts/axis.py:1589 -#: emc/usr_intf/axis/scripts/axis.py:1576 -#: src/emc/usr_intf/axis/scripts/axis.py:1580 +#: src/emc/usr_intf/axis/scripts/axis.py:1642 msgid "workpiece" msgstr "la pièce" -#: src/emc/usr_intf/axis/scripts/axis.py:1592 -#: src/emc/usr_intf/axis/scripts/axis.py:1605 -#: emc/usr_intf/axis/scripts/axis.py:1592 -#: src/emc/usr_intf/axis/scripts/axis.py:1596 +#: src/emc/usr_intf/axis/scripts/axis.py:1658 msgid "Name:" msgstr "Nom:" -#: src/emc/usr_intf/axis/scripts/axis.py:1592 -#: src/emc/usr_intf/axis/scripts/axis.py:1605 -#: emc/usr_intf/axis/scripts/axis.py:1592 -#: src/emc/usr_intf/axis/scripts/axis.py:1596 +#: src/emc/usr_intf/axis/scripts/axis.py:1658 msgid "Size:" msgstr "Taille:" -#: src/emc/usr_intf/axis/scripts/axis.py:1593 -#: src/emc/usr_intf/axis/scripts/axis.py:1606 -#: emc/usr_intf/axis/scripts/axis.py:1593 -#: src/emc/usr_intf/axis/scripts/axis.py:1597 +#: src/emc/usr_intf/axis/scripts/axis.py:1659 msgid "Tool order:" msgstr "Outil N°:" -#: src/emc/usr_intf/axis/scripts/axis.py:1593 -#: src/emc/usr_intf/axis/scripts/axis.py:1606 -#: emc/usr_intf/axis/scripts/axis.py:1593 -#: src/emc/usr_intf/axis/scripts/axis.py:1597 +#: src/emc/usr_intf/axis/scripts/axis.py:1659 msgid "Rapid distance:" msgstr "Distance en vitesse rapide:" -#: src/emc/usr_intf/axis/scripts/axis.py:1594 -#: src/emc/usr_intf/axis/scripts/axis.py:1607 -#: emc/usr_intf/axis/scripts/axis.py:1594 -#: src/emc/usr_intf/axis/scripts/axis.py:1598 +#: src/emc/usr_intf/axis/scripts/axis.py:1660 msgid "Feed distance:" msgstr "Distance en vitesse travail:" -#: src/emc/usr_intf/axis/scripts/axis.py:1594 -#: src/emc/usr_intf/axis/scripts/axis.py:1607 -#: emc/usr_intf/axis/scripts/axis.py:1594 -#: src/emc/usr_intf/axis/scripts/axis.py:1598 +#: src/emc/usr_intf/axis/scripts/axis.py:1660 msgid "Total distance:" msgstr "Distance totale:" -#: src/emc/usr_intf/axis/scripts/axis.py:1595 -#: src/emc/usr_intf/axis/scripts/axis.py:1608 -#: emc/usr_intf/axis/scripts/axis.py:1595 -#: src/emc/usr_intf/axis/scripts/axis.py:1599 +#: src/emc/usr_intf/axis/scripts/axis.py:1661 msgid "Run time:" msgstr "Run time:" -#: src/emc/usr_intf/axis/scripts/axis.py:1595 -#: src/emc/usr_intf/axis/scripts/axis.py:1608 -#: emc/usr_intf/axis/scripts/axis.py:1595 -#: src/emc/usr_intf/axis/scripts/axis.py:1599 +#: src/emc/usr_intf/axis/scripts/axis.py:1661 msgid "X bounds:" msgstr "Limites X:" -#: src/emc/usr_intf/axis/scripts/axis.py:1596 -#: src/emc/usr_intf/axis/scripts/axis.py:1609 -#: emc/usr_intf/axis/scripts/axis.py:1596 -#: src/emc/usr_intf/axis/scripts/axis.py:1600 +#: src/emc/usr_intf/axis/scripts/axis.py:1662 msgid "Y bounds:" msgstr "Limites Y:" -#: src/emc/usr_intf/axis/scripts/axis.py:1596 -#: src/emc/usr_intf/axis/scripts/axis.py:1609 -#: emc/usr_intf/axis/scripts/axis.py:1596 -#: src/emc/usr_intf/axis/scripts/axis.py:1600 +#: src/emc/usr_intf/axis/scripts/axis.py:1662 msgid "Z bounds:" msgstr "Limites Z:" -#: src/emc/usr_intf/axis/scripts/axis.py:1597 -#: src/emc/usr_intf/axis/scripts/axis.py:1610 -#: emc/usr_intf/axis/scripts/axis.py:1597 -#: src/emc/usr_intf/axis/scripts/axis.py:1601 +#: src/emc/usr_intf/axis/scripts/axis.py:1663 msgid "A bounds:" msgstr "Limites A:" -#: src/emc/usr_intf/axis/scripts/axis.py:1597 -#: src/emc/usr_intf/axis/scripts/axis.py:1610 -#: emc/usr_intf/axis/scripts/axis.py:1597 -#: src/emc/usr_intf/axis/scripts/axis.py:1601 +#: src/emc/usr_intf/axis/scripts/axis.py:1663 msgid "B bounds:" msgstr "Limites B:" -#: src/emc/usr_intf/axis/scripts/axis.py:1598 -#: src/emc/usr_intf/axis/scripts/axis.py:1611 -#: emc/usr_intf/axis/scripts/axis.py:1598 -#: src/emc/usr_intf/axis/scripts/axis.py:1602 +#: src/emc/usr_intf/axis/scripts/axis.py:1664 msgid "C bounds:" msgstr "Limites C:" -#: src/emc/usr_intf/axis/scripts/axis.py:1622 -#: src/emc/usr_intf/axis/scripts/axis.py:1635 -#: emc/usr_intf/axis/scripts/axis.py:1622 -#: src/emc/usr_intf/axis/scripts/axis.py:1626 +#: src/emc/usr_intf/axis/scripts/axis.py:1688 #, python-format msgid "Program exceeds machine minimum on axis %s" msgstr "Le programme dépasse la limite mini sur l'axe %s" -#: src/emc/usr_intf/axis/scripts/axis.py:1625 -#: src/emc/usr_intf/axis/scripts/axis.py:1638 -#: emc/usr_intf/axis/scripts/axis.py:1625 -#: src/emc/usr_intf/axis/scripts/axis.py:1629 +#: src/emc/usr_intf/axis/scripts/axis.py:1691 #, python-format msgid "Program exceeds machine maximum on axis %s" msgstr "Le programme dépasse la limite maxi sur l'axe %s" -#: src/emc/usr_intf/axis/scripts/axis.py:1630 -#: src/emc/usr_intf/axis/scripts/axis.py:1643 -#: emc/usr_intf/axis/scripts/axis.py:1630 -#: src/emc/usr_intf/axis/scripts/axis.py:1634 +#: src/emc/usr_intf/axis/scripts/axis.py:1696 msgid "Program exceeds machine limits" msgstr "Le programme excède les limites machine" -#: src/emc/usr_intf/axis/scripts/axis.py:1633 -#: src/emc/usr_intf/axis/scripts/axis.py:1646 -#: emc/usr_intf/axis/scripts/axis.py:1633 -#: src/emc/usr_intf/axis/scripts/axis.py:1637 +#: src/emc/usr_intf/axis/scripts/axis.py:1699 msgid "Run Anyway" msgstr "Exécuter tout de même" -#: src/emc/usr_intf/axis/scripts/axis.py:1695 -#: src/emc/usr_intf/axis/scripts/axis.py:1708 -#: emc/usr_intf/axis/scripts/axis.py:1695 -#: src/emc/usr_intf/axis/scripts/axis.py:1699 +#: src/emc/usr_intf/axis/scripts/axis.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1581 msgid "No file loaded" msgstr "Aucun fichier chargé" -#: src/emc/usr_intf/axis/scripts/axis.py:1703 -#: src/emc/usr_intf/axis/scripts/axis.py:1716 -#: emc/usr_intf/axis/scripts/axis.py:1703 -#: src/emc/usr_intf/axis/scripts/axis.py:1707 +#: src/emc/usr_intf/axis/scripts/axis.py:1845 #, python-format msgid "generated from %s" msgstr "produit depuis %s" -#: src/emc/usr_intf/axis/scripts/axis.py:1709 -#: src/emc/usr_intf/axis/scripts/axis.py:1722 -#: emc/usr_intf/axis/scripts/axis.py:1709 -#: src/emc/usr_intf/axis/scripts/axis.py:1713 +#: src/emc/usr_intf/axis/scripts/axis.py:1851 #, python-format msgid "" "%(size)s bytes\n" @@ -4609,202 +6043,152 @@ msgstr "" "%(size)s octets\n" "%(lines)s lignes de gcode" -#: src/emc/usr_intf/axis/scripts/axis.py:1735 -#: src/emc/usr_intf/axis/scripts/axis.py:1748 -#: emc/usr_intf/axis/scripts/axis.py:1735 -#: src/emc/usr_intf/axis/scripts/axis.py:1739 +#: src/emc/usr_intf/axis/scripts/axis.py:1877 #, python-format msgid "%.1f minutes" msgstr "% 1f minutes" -#: src/emc/usr_intf/axis/scripts/axis.py:1737 -#: src/emc/usr_intf/axis/scripts/axis.py:1750 -#: emc/usr_intf/axis/scripts/axis.py:1737 -#: src/emc/usr_intf/axis/scripts/axis.py:1741 +#: src/emc/usr_intf/axis/scripts/axis.py:1879 #, python-format msgid "%d seconds" msgstr "%d secondes" -#: src/emc/usr_intf/axis/scripts/axis.py:1745 -#: src/emc/usr_intf/axis/scripts/axis.py:1758 -#: emc/usr_intf/axis/scripts/axis.py:1745 -#: src/emc/usr_intf/axis/scripts/axis.py:1749 +#: src/emc/usr_intf/axis/scripts/axis.py:1887 #, python-format msgid "%(a)f to %(b)f = %(diff)f %(units)s" msgstr "%(a)f à %(b)f = %(diff)f %(units)s" -#: src/emc/usr_intf/axis/scripts/axis.py:1746 -#: src/emc/usr_intf/axis/scripts/axis.py:1759 -#: emc/usr_intf/axis/scripts/axis.py:1746 -#: src/emc/usr_intf/axis/scripts/axis.py:1750 +#: src/emc/usr_intf/axis/scripts/axis.py:1888 msgid "G-Code Properties" msgstr "Propriétés du G-code" -#: src/emc/usr_intf/axis/scripts/axis.py:1870 -#: src/emc/usr_intf/axis/scripts/axis.py:1883 -#: emc/usr_intf/axis/scripts/axis.py:1870 -#: src/emc/usr_intf/axis/scripts/axis.py:1874 +#: src/emc/usr_intf/axis/scripts/axis.py:2021 msgid "All machinable files" msgstr "Tous les fichiers d'usinage" -#: src/emc/usr_intf/axis/scripts/axis.py:1871 -#: src/emc/usr_intf/axis/scripts/axis.py:2451 -#: src/emc/usr_intf/axis/scripts/axis.py:1884 -#: src/emc/usr_intf/axis/scripts/axis.py:2464 -#: emc/usr_intf/axis/scripts/axis.py:1871 -#: emc/usr_intf/axis/scripts/axis.py:2451 -#: src/emc/usr_intf/axis/scripts/axis.py:1875 -#: src/emc/usr_intf/axis/scripts/axis.py:2455 +#: src/emc/usr_intf/axis/scripts/axis.py:2022 +#: src/emc/usr_intf/axis/scripts/axis.py:2659 msgid "rs274ngc files" msgstr "Fichiers rs274ngc" -#: src/emc/usr_intf/axis/scripts/axis.py:1886 -#: src/emc/usr_intf/axis/scripts/axis.py:1899 -#: emc/usr_intf/axis/scripts/axis.py:1886 -#: src/emc/usr_intf/axis/scripts/axis.py:1890 +#: src/emc/usr_intf/axis/scripts/axis.py:2037 msgid "axis cannot accept remote command while running" msgstr "" "les axes n'acceptent pas de commande à distance pendant leur fonctionnement" -#: src/emc/usr_intf/axis/scripts/axis.py:2242 -#: src/emc/usr_intf/axis/scripts/axis.py:2255 -#: emc/usr_intf/axis/scripts/axis.py:2242 -#: src/emc/usr_intf/axis/scripts/axis.py:2246 +#: src/emc/usr_intf/axis/scripts/axis.py:2098 +#, fuzzy +msgid "File not Writable:" +msgstr "fichier illisible" + +#: src/emc/usr_intf/axis/scripts/axis.py:2099 +msgid "" +"This file is not writable\n" +"You can Edit-readonly\n" +"\n" +"or\n" +"\n" +"Save it to your own directory\n" +"then open that saved, writable file" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2106 +msgid "Edit-readonly" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2440 msgid "Axis is already homed, are you sure you want to re-home?" msgstr "" "Les axes sont déjà référencés, vous êtes sûr de vouloir relancer une prise " "d'origine générale ?" -#: src/emc/usr_intf/axis/scripts/axis.py:2255 -#: src/emc/usr_intf/axis/scripts/axis.py:2268 -#: emc/usr_intf/axis/scripts/axis.py:2255 -#: src/emc/usr_intf/axis/scripts/axis.py:2259 +#: src/emc/usr_intf/axis/scripts/axis.py:2453 msgid "This axis is already homed, are you sure you want to re-home?" msgstr "" "Cet axe est déjà référencé, êtes vous sûr de vouloir relancer une prise " "d'origine ?" -#: src/emc/usr_intf/axis/scripts/axis.py:2295 share/axis/tcl/axis.tcl:1108 -#: src/emc/usr_intf/axis/scripts/axis.py:2308 -#: emc/usr_intf/axis/scripts/axis.py:2295 ../share/axis/tcl/axis.tcl:1108 -#: src/emc/usr_intf/axis/scripts/axis.py:2299 +#: src/emc/usr_intf/axis/scripts/axis.py:2493 share/axis/tcl/axis.tcl:1178 msgid "Touch Off" msgstr "Toucher" -#: src/emc/usr_intf/axis/scripts/axis.py:2296 -#: src/emc/usr_intf/axis/scripts/axis.py:2309 -#: emc/usr_intf/axis/scripts/axis.py:2296 -#: src/emc/usr_intf/axis/scripts/axis.py:2300 +#: src/emc/usr_intf/axis/scripts/axis.py:2494 #, python-format msgid "Enter %s coordinate relative to %%s:" msgstr "Coordonnée %s relative à %%s:" -#: src/emc/usr_intf/axis/scripts/axis.py:2463 -#: src/emc/usr_intf/axis/scripts/axis.py:2476 -#: emc/usr_intf/axis/scripts/axis.py:2463 -#: src/emc/usr_intf/axis/scripts/axis.py:2467 +#: src/emc/usr_intf/axis/scripts/axis.py:2671 msgid "Error saving file" msgstr "Erreur d'enregistrement du fichier" -#: src/emc/usr_intf/axis/scripts/axis.py:2845 +#: src/emc/usr_intf/axis/scripts/axis.py:3077 #: src/emc/usr_intf/touchy/touchy.glade:577 -#: src/emc/usr_intf/axis/scripts/axis.py:2859 -#: emc/usr_intf/axis/scripts/axis.py:2845 emc/usr_intf/touchy/touchy.glade:577 -#: src/emc/usr_intf/axis/scripts/axis.py:2849 +#: src/emc/usr_intf/gscreen/gscreen.glade:2933 msgid "Home All" msgstr "Prise d'origine générale" -#: src/emc/usr_intf/axis/scripts/axis.py:2847 -#: src/emc/usr_intf/axis/scripts/axis.py:2861 -#: emc/usr_intf/axis/scripts/axis.py:2847 -#: src/emc/usr_intf/axis/scripts/axis.py:2851 +#: src/emc/usr_intf/axis/scripts/axis.py:3079 msgid "Home all axes [Ctrl-Home]" msgstr "Prise d'origine machine générale [Ctrl+origine]" -#: src/emc/usr_intf/axis/scripts/axis.py:2850 -#: src/emc/usr_intf/axis/scripts/axis.py:2864 -#: emc/usr_intf/axis/scripts/axis.py:2850 -#: src/emc/usr_intf/axis/scripts/axis.py:2854 +#: src/emc/usr_intf/axis/scripts/axis.py:3082 msgid "Home All Axes" msgstr "POM générale" -#: src/emc/usr_intf/axis/scripts/axis.py:2855 -#: src/emc/usr_intf/axis/scripts/axis.py:2871 -#: emc/usr_intf/axis/scripts/axis.py:2855 -#: src/emc/usr_intf/axis/scripts/axis.py:2859 +#: src/emc/usr_intf/axis/scripts/axis.py:3089 msgid "Unhome All Axes" msgstr "Annulation OM de tous les axes" -#: src/emc/usr_intf/axis/scripts/axis.py:2879 -#: src/emc/usr_intf/axis/scripts/axis.py:2895 -#: emc/usr_intf/axis/scripts/axis.py:2879 -#: src/emc/usr_intf/axis/scripts/axis.py:2883 +#: src/emc/usr_intf/axis/scripts/axis.py:3113 #, python-format msgid "Home Axis _%s" msgstr "POM de l'axe _%s" -#: src/emc/usr_intf/axis/scripts/axis.py:2881 -#: src/emc/usr_intf/axis/scripts/axis.py:2897 -#: emc/usr_intf/axis/scripts/axis.py:2881 -#: src/emc/usr_intf/axis/scripts/axis.py:2885 +#: src/emc/usr_intf/axis/scripts/axis.py:3115 #, python-format msgid "Unhome Axis _%s" msgstr "Annulation OM de l'axe _%s" -#: src/emc/usr_intf/axis/scripts/axis.py:3024 -#: src/emc/usr_intf/axis/scripts/axis.py:3040 -#: emc/usr_intf/axis/scripts/axis.py:3024 -#: src/emc/usr_intf/axis/scripts/axis.py:3028 +#: src/emc/usr_intf/axis/scripts/axis.py:3282 msgid "Run from here" msgstr "Démarrer depuis ici" -#: src/emc/usr_intf/axis/scripts/axis.py:3319 -#: src/emc/usr_intf/axis/scripts/axis.py:3335 -#: emc/usr_intf/axis/scripts/axis.py:3319 -#: src/emc/usr_intf/axis/scripts/axis.py:3323 +#: src/emc/usr_intf/axis/scripts/axis.py:3598 msgid "Error in ~/.axisrc" msgstr "Erreur dans ~/.axisrc" #: src/emc/usr_intf/axis/scripts/linuxcnctop.py:102 -#: emc/usr_intf/axis/scripts/linuxcnctop.py:102 -msgid "LinuxCNC Status" -msgstr "Statu de LinuxCNC" +#, fuzzy +msgid "Machinekit Status" +msgstr "Unité machine" #: src/emc/usr_intf/axis/scripts/linuxcnctop.py:118 -#: emc/usr_intf/axis/scripts/linuxcnctop.py:118 msgid "Copy All" msgstr "Copier tout" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:29 -#: emc/usr_intf/axis/scripts/hal_manualtoolchange.py:29 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 #, python-format msgid "Insert tool %d and click continue when ready" msgstr "Monter l'outil %d puis cliquer « continuer »" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:31 -#: emc/usr_intf/axis/scripts/hal_manualtoolchange.py:31 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:39 msgid "Remove the tool and click continue when ready" msgstr "Démonter l'outil puis cliquer « terminer »" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 -#: src/emc/usr_intf/touchy/mdi.py:49 -#: emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 -#: emc/usr_intf/touchy/mdi.py:49 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 +#: src/emc/usr_intf/touchy/mdi.py:49 src/emc/usr_intf/gscreen/mdi.py:49 msgid "Tool change" msgstr "Appel d'outil" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 -#: emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 msgid "Continue" msgstr "Continuer" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:55 -#: emc/usr_intf/axis/scripts/hal_manualtoolchange.py:55 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:64 msgid "AXIS Manual Toolchanger" msgstr "Changement d'outil manuel d'AXIS" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:59 -#: emc/usr_intf/axis/scripts/hal_manualtoolchange.py:59 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:68 msgid "" "This window is part of the AXIS manual toolchanger. It is safe to close or " "iconify this window, or it will close automatically after a few seconds." @@ -4813,18 +6197,15 @@ msgstr "" "fermée ou réduite, elle se fermera automatiquement dans quelques secondes." #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:507 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:507 #, python-format msgid "%s: Image to gcode" msgstr "%s: Image vers gcode" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:508 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:508 msgid "Image to gcode" msgstr "Image vers gcode" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:518 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:518 #, python-format msgid "" "Image size: %(w)d x %(h)d pixels\n" @@ -4836,266 +6217,213 @@ msgstr "" "Nombre maximum de pixels: %(max)d" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:608 msgid "G20 (in)" msgstr "G20 (pouces)" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:608 msgid "G21 (mm)" msgstr "G21 (mm)" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 #: src/emc/usr_intf/touchy/emc_interface.py:417 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:611 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:624 -#: emc/usr_intf/touchy/emc_interface.py:417 msgid "None" msgstr "Aucun" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:611 msgid "White" msgstr "Blanc" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:611 msgid "Black" msgstr "Noir" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:617 msgid "Rows" msgstr "Rangées" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:617 msgid "Columns" msgstr "Colonnes" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:617 msgid "Rows then Columns" msgstr "Rangées puis colonnes" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:617 msgid "Columns then Rows" msgstr "Colonnes puis rangées" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:618 msgid "Positive" msgstr "Positif" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:618 msgid "Negative" msgstr "Négatif" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:618 msgid "Alternating" msgstr "En alternance" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:618 msgid "Up Milling" msgstr "Fraisage montant" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:618 msgid "Down Milling" msgstr "Fraisage descendant" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:623 msgid "Ball End" msgstr "Hémisphèrique" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:623 msgid "Flat End" msgstr "Bout plat" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:623 msgid "30 Degree" msgstr "30 degrés" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:623 msgid "45 Degree" msgstr "45 Degrés" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:623 msgid "60 Degree" msgstr "60 Degrés" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:624 msgid "Secondary" msgstr "Secondaire" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:624 msgid "Full" msgstr "Plein" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:654 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:654 msgid "Invert Image" msgstr "Inverse l'image" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:655 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:655 msgid "Normalize Image" msgstr "Normalise l'image" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:656 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:656 msgid "Extend Image Border" msgstr "Etend les bords de la vue" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:657 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:657 msgid "Pixel Size (Units)" msgstr "Taille du pixel (unités)" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:658 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:658 msgid "Depth (units)" msgstr "Profondeur (unités)" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:659 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:659 msgid "Tolerance (units)" msgstr "Tolérance (unités)" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:660 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:660 msgid "Stepover (pixels)" msgstr "Chevauchement (pixels)" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:661 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:661 msgid "Tool Diameter (units)" msgstr "Diamètre d'outil (unités)" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:662 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:662 msgid "Tool Type" msgstr "Type d'outils" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:663 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:663 msgid "Feed Rate (units per minute)" msgstr "Vitesse d'avance travail (unités par minute)" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:664 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:664 msgid "Plunge Feed Rate (units per minute)" msgstr "Vitesse d'avance en plongée (unités par minute)" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:666 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:666 msgid "Safety Height (units)" msgstr "Hauteur de sécurité (unités)" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:667 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:667 msgid "Scan Pattern" msgstr "Grille de numérisation" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:668 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:668 msgid "Scan Direction" msgstr "Sens de numérisation" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:669 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:669 msgid "Lace Bounding" msgstr "Lace Bouding" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:670 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:670 msgid "Contact Angle (degrees)" msgstr "Angle de contact (degrés)" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:671 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:671 msgid "Spindle Speed (RPM)" msgstr "Vitesse d broche (tr/mn)" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:672 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:672 msgid "Roughing offset (units, 0=no roughing)" msgstr "Offset d'ébauche (unités, 0=pas d'ébauche)" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:673 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:673 msgid "Roughing depth per pass (units)" msgstr "Profondeur par passe d'ébauche (unités)" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:740 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:740 msgid "image-to-gcode: User pressed cancel" msgstr "image-vers-gcode: L'utilisateur a pressé « Annuler »" #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:753 -#: emc/usr_intf/axis/scripts/image-to-gcode.py:753 msgid "Depth images" msgstr "Profondeur d'images" #: src/emc/usr_intf/axis/scripts/debuglevel.py:22 -#: emc/usr_intf/axis/scripts/debuglevel.py:22 -msgid "LinuxCNC Debug Level" -msgstr "Niveau de débogage LinuxCNC" +#, fuzzy +msgid "Machinekit Debug Level" +msgstr "Choisir le niveau de _Debug" #: src/emc/usr_intf/axis/scripts/debuglevel.py:23 -#: emc/usr_intf/axis/scripts/debuglevel.py:23 msgid "debuglevel" msgstr "niveau de déboguage" #: src/emc/usr_intf/axis/scripts/debuglevel.py:36 -#: emc/usr_intf/axis/scripts/debuglevel.py:36 msgid "Configuration *" msgstr "Configuration *" #: src/emc/usr_intf/axis/scripts/debuglevel.py:37 -#: emc/usr_intf/axis/scripts/debuglevel.py:37 msgid "Version Numbers *" msgstr "Numéro de version * " #: src/emc/usr_intf/axis/scripts/debuglevel.py:38 -#: emc/usr_intf/axis/scripts/debuglevel.py:38 msgid "NML *" msgstr "NML *" #: src/emc/usr_intf/axis/scripts/debuglevel.py:39 -#: emc/usr_intf/axis/scripts/debuglevel.py:39 msgid "RCS *" msgstr "RCS *" #: src/emc/usr_intf/axis/scripts/debuglevel.py:40 -#: emc/usr_intf/axis/scripts/debuglevel.py:40 msgid "Task Issue" msgstr "Problème de tâche" #: src/emc/usr_intf/axis/scripts/debuglevel.py:41 -#: emc/usr_intf/axis/scripts/debuglevel.py:41 msgid "Motion Time" msgstr "Temps de mouvement" #: src/emc/usr_intf/axis/scripts/debuglevel.py:43 -#: emc/usr_intf/axis/scripts/debuglevel.py:43 msgid "Interpreter List" msgstr "Liste de l'interpréteur" #: src/emc/usr_intf/axis/scripts/debuglevel.py:47 -#: emc/usr_intf/axis/scripts/debuglevel.py:47 #, python-format msgid "" "Inifile setting for this debug level:\n" @@ -5105,646 +6433,607 @@ msgstr "" "[EMC]DEBUG=0x%08x" #: src/emc/usr_intf/axis/scripts/debuglevel.py:81 -#: emc/usr_intf/axis/scripts/debuglevel.py:81 msgid " * This option can only be enabled in the inifile" msgstr " * Cette option ne peut être activée que dans le fichier ini" -#: share/axis/tcl/axis.tcl:49 ../share/axis/tcl/axis.tcl:49 +#: share/axis/tcl/axis.tcl:52 msgid "_Open..." msgstr "_Ouvrir..." -#: share/axis/tcl/axis.tcl:53 ../share/axis/tcl/axis.tcl:53 +#: share/axis/tcl/axis.tcl:56 msgid "Recent _Files" msgstr "_Fichiers récents" -#: share/axis/tcl/axis.tcl:57 ../share/axis/tcl/axis.tcl:57 +#: share/axis/tcl/axis.tcl:60 msgid "_Edit..." msgstr "_Éditer.." -#: share/axis/tcl/axis.tcl:60 ../share/axis/tcl/axis.tcl:60 +#: share/axis/tcl/axis.tcl:63 msgid "Ctrl-R" msgstr "Ctrl+R" -#: share/axis/tcl/axis.tcl:62 ../share/axis/tcl/axis.tcl:62 +#: share/axis/tcl/axis.tcl:65 msgid "_Reload" msgstr "_Recharger" -#: share/axis/tcl/axis.tcl:65 ../share/axis/tcl/axis.tcl:65 +#: share/axis/tcl/axis.tcl:68 msgid "Ctrl-S" msgstr "Ctrl+S" -#: share/axis/tcl/axis.tcl:67 ../share/axis/tcl/axis.tcl:67 +#: share/axis/tcl/axis.tcl:70 msgid "_Save gcode as..." msgstr "Enregi_strer le G-code sous..." -#: share/axis/tcl/axis.tcl:71 ../share/axis/tcl/axis.tcl:71 +#: share/axis/tcl/axis.tcl:74 msgid "_Properties..." msgstr "_Propriétés..." -#: share/axis/tcl/axis.tcl:77 ../share/axis/tcl/axis.tcl:77 +#: share/axis/tcl/axis.tcl:80 msgid "Edit _tool table..." msgstr "Éditer la _table d'outils" -#: share/axis/tcl/axis.tcl:81 ../share/axis/tcl/axis.tcl:81 +#: share/axis/tcl/axis.tcl:84 msgid "Reload tool ta_ble" msgstr "Recharger la ta_ble d'outils" -#: share/axis/tcl/axis.tcl:87 ../share/axis/tcl/axis.tcl:87 +#: share/axis/tcl/axis.tcl:90 msgid "_Ladder Editor..." msgstr "Editeur de _Ladder..." -#: share/axis/tcl/axis.tcl:99 ../share/axis/tcl/axis.tcl:99 +#: share/axis/tcl/axis.tcl:102 msgid "Toggle _Emergency Stop" msgstr "_Arrêt d'urgence" -#: share/axis/tcl/axis.tcl:104 ../share/axis/tcl/axis.tcl:104 +#: share/axis/tcl/axis.tcl:107 msgid "Toggle _Machine Power" msgstr "_Marche/Arrêt machine" -#: share/axis/tcl/axis.tcl:111 ../share/axis/tcl/axis.tcl:111 +#: share/axis/tcl/axis.tcl:114 msgid "_Run program" msgstr "Déma_rrer le programme" -#: share/axis/tcl/axis.tcl:115 ../share/axis/tcl/axis.tcl:115 +#: share/axis/tcl/axis.tcl:118 msgid "Ru_n from selected line" msgstr "Démarrer à la lig_ne sélectionnée" -#: share/axis/tcl/axis.tcl:120 ../share/axis/tcl/axis.tcl:120 +#: share/axis/tcl/axis.tcl:123 msgid "S_tep" msgstr "Pas à pas" -#: share/axis/tcl/axis.tcl:125 ../share/axis/tcl/axis.tcl:125 +#: share/axis/tcl/axis.tcl:128 msgid "_Pause" msgstr "_Pause" -#: share/axis/tcl/axis.tcl:130 ../share/axis/tcl/axis.tcl:130 +#: share/axis/tcl/axis.tcl:133 msgid "Re_sume" msgstr "Repri_se" -#: share/axis/tcl/axis.tcl:140 ../share/axis/tcl/axis.tcl:140 +#: share/axis/tcl/axis.tcl:143 msgid "Stop at M_1" msgstr "Arrêt sur M_1" -#: share/axis/tcl/axis.tcl:145 ../share/axis/tcl/axis.tcl:145 +#: share/axis/tcl/axis.tcl:148 msgid "Skip lines with '_/'" msgstr "Sauter les lignes avec '_/'" -#: share/axis/tcl/axis.tcl:150 ../share/axis/tcl/axis.tcl:150 +#: share/axis/tcl/axis.tcl:153 msgid "Ctrl-M" msgstr "Ctrl+M" -#: share/axis/tcl/axis.tcl:152 ../share/axis/tcl/axis.tcl:152 +#: share/axis/tcl/axis.tcl:155 msgid "Clear MDI h_istory" msgstr "Vider l'h_istorique du MDI" -#: share/axis/tcl/axis.tcl:154 ../share/axis/tcl/axis.tcl:154 +#: share/axis/tcl/axis.tcl:157 msgid "Ctrl-H" msgstr "Ctrl+H" -#: share/axis/tcl/axis.tcl:156 ../share/axis/tcl/axis.tcl:156 +#: share/axis/tcl/axis.tcl:159 msgid "Copy from MDI hist_ory" msgstr "Copier depuis l'hist_orique du MDI" -#: share/axis/tcl/axis.tcl:158 ../share/axis/tcl/axis.tcl:158 +#: share/axis/tcl/axis.tcl:161 msgid "Ctrl-Shift-H" msgstr "Ctrl+Maj+H" -#: share/axis/tcl/axis.tcl:160 ../share/axis/tcl/axis.tcl:160 +#: share/axis/tcl/axis.tcl:163 msgid "Paste to MDI histor_y" msgstr "Coller dans l'historique du MDI" -#: share/axis/tcl/axis.tcl:166 ../share/axis/tcl/axis.tcl:166 +#: share/axis/tcl/axis.tcl:169 msgid "_Calibration" msgstr "_Calibration" -#: share/axis/tcl/axis.tcl:170 ../share/axis/tcl/axis.tcl:170 +#: share/axis/tcl/axis.tcl:173 msgid "Show _Hal Configuration" msgstr "Afficher configuration de _HAL" -#: share/axis/tcl/axis.tcl:174 ../share/axis/tcl/axis.tcl:174 +#: share/axis/tcl/axis.tcl:177 msgid "H_al Meter" msgstr "H_al mètre" -#: share/axis/tcl/axis.tcl:178 ../share/axis/tcl/axis.tcl:178 +#: share/axis/tcl/axis.tcl:181 msgid "Ha_l Scope" msgstr "Ha_l scope" -#: share/axis/tcl/axis.tcl:182 ../share/axis/tcl/axis.tcl:182 -msgid "Sho_w LinuxCNC Status" +#: share/axis/tcl/axis.tcl:185 +#, fuzzy +msgid "Sho_w Machinekit Status" msgstr "A_fficher le statu de LinuxCNC" -#: share/axis/tcl/axis.tcl:186 ../share/axis/tcl/axis.tcl:186 +#: share/axis/tcl/axis.tcl:189 msgid "Set _Debug Level" msgstr "Choisir le niveau de _Debug" -#: share/axis/tcl/axis.tcl:192 ../share/axis/tcl/axis.tcl:192 +#: share/axis/tcl/axis.tcl:195 msgid "Homin_g" msgstr "Prise d'ori_gine" -#: share/axis/tcl/axis.tcl:196 ../share/axis/tcl/axis.tcl:196 +#: share/axis/tcl/axis.tcl:199 msgid "_Unhoming" msgstr "Annulation OM" -#: share/axis/tcl/axis.tcl:200 ../share/axis/tcl/axis.tcl:200 +#: share/axis/tcl/axis.tcl:203 msgid "_Zero coordinate system" msgstr "Annulation décalage d'origine" -#: share/axis/tcl/axis.tcl:204 ../share/axis/tcl/axis.tcl:204 +#: share/axis/tcl/axis.tcl:207 msgid "P1 G5_4" msgstr "P1··G5_4" -#: share/axis/tcl/axis.tcl:208 ../share/axis/tcl/axis.tcl:208 +#: share/axis/tcl/axis.tcl:211 msgid "P2 G5_5" msgstr "P2··G5_5" -#: share/axis/tcl/axis.tcl:212 ../share/axis/tcl/axis.tcl:212 +#: share/axis/tcl/axis.tcl:215 msgid "P3 G5_6" msgstr "P3 G5_6" -#: share/axis/tcl/axis.tcl:216 ../share/axis/tcl/axis.tcl:216 +#: share/axis/tcl/axis.tcl:219 msgid "P4 G5_7" msgstr "P4 G5_7" -#: share/axis/tcl/axis.tcl:220 ../share/axis/tcl/axis.tcl:220 +#: share/axis/tcl/axis.tcl:223 msgid "P5 G5_8" msgstr "P5 G5_8" -#: share/axis/tcl/axis.tcl:224 ../share/axis/tcl/axis.tcl:224 +#: share/axis/tcl/axis.tcl:227 msgid "P6 G5_9" msgstr "P6 G5_9" -#: share/axis/tcl/axis.tcl:228 ../share/axis/tcl/axis.tcl:228 +#: share/axis/tcl/axis.tcl:231 msgid "P7 G59._1" msgstr "P7 G59._1" -#: share/axis/tcl/axis.tcl:232 ../share/axis/tcl/axis.tcl:232 +#: share/axis/tcl/axis.tcl:235 msgid "P8 G59._2" msgstr "P8 G59._2" -#: share/axis/tcl/axis.tcl:236 ../share/axis/tcl/axis.tcl:236 +#: share/axis/tcl/axis.tcl:239 msgid "P9 G59._3" msgstr "P9 G59._3" -#: share/axis/tcl/axis.tcl:240 ../share/axis/tcl/axis.tcl:240 +#: share/axis/tcl/axis.tcl:243 msgid "_G92" msgstr "_G92" -#: share/axis/tcl/axis.tcl:248 ../share/axis/tcl/axis.tcl:248 +#: share/axis/tcl/axis.tcl:251 msgid "Tool touch off to wor_kpiece" msgstr "L'outil touchera la pièce" -#: share/axis/tcl/axis.tcl:254 ../share/axis/tcl/axis.tcl:254 +#: share/axis/tcl/axis.tcl:257 msgid "Tool touch off to _fixture" msgstr "L'outil touchera le porte-pièce" -#: share/axis/tcl/axis.tcl:262 ../share/axis/tcl/axis.tcl:262 +#: share/axis/tcl/axis.tcl:265 msgid "_Top view" msgstr "Vue de dess_us" -#: share/axis/tcl/axis.tcl:269 ../share/axis/tcl/axis.tcl:269 +#: share/axis/tcl/axis.tcl:272 msgid "_Rotated Top view" msgstr "Vue de dessus _basculée" -#: share/axis/tcl/axis.tcl:276 ../share/axis/tcl/axis.tcl:276 +#: share/axis/tcl/axis.tcl:279 msgid "_Side view" msgstr "Vue de _côté" -#: share/axis/tcl/axis.tcl:283 ../share/axis/tcl/axis.tcl:283 +#: share/axis/tcl/axis.tcl:286 msgid "_Front view" msgstr "Vue de _face" -#: share/axis/tcl/axis.tcl:290 ../share/axis/tcl/axis.tcl:290 +#: share/axis/tcl/axis.tcl:293 msgid "_Perspective view" msgstr "Vue en per_spective" -#: share/axis/tcl/axis.tcl:299 ../share/axis/tcl/axis.tcl:299 +#: share/axis/tcl/axis.tcl:302 msgid "Display _Inches" msgstr "Affichage en _pouces" -#: share/axis/tcl/axis.tcl:306 ../share/axis/tcl/axis.tcl:306 +#: share/axis/tcl/axis.tcl:309 msgid "Display _MM" msgstr "Affichage en _mm" -#: share/axis/tcl/axis.tcl:313 ../share/axis/tcl/axis.tcl:313 +#: share/axis/tcl/axis.tcl:316 msgid "S_how program" msgstr "Affic_her le programme" -#: share/axis/tcl/axis.tcl:318 ../share/axis/tcl/axis.tcl:318 +#: share/axis/tcl/axis.tcl:321 msgid "Show program r_apids" msgstr "Parcours d'outil en vitesse r_apide" -#: share/axis/tcl/axis.tcl:323 ../share/axis/tcl/axis.tcl:323 +#: share/axis/tcl/axis.tcl:326 msgid "Alpha-_blend program" msgstr "Simulation de _transparence" -#: share/axis/tcl/axis.tcl:328 ../share/axis/tcl/axis.tcl:328 +#: share/axis/tcl/axis.tcl:331 msgid "Sho_w live plot" msgstr "Pa_rcours d'outil en temps réel" -#: share/axis/tcl/axis.tcl:333 ../share/axis/tcl/axis.tcl:333 +#: share/axis/tcl/axis.tcl:336 msgid "Show too_l" msgstr "Afficher _l'outil" -#: share/axis/tcl/axis.tcl:338 ../share/axis/tcl/axis.tcl:338 +#: share/axis/tcl/axis.tcl:341 msgid "Show e_xtents" msgstr "Afficher les étendues" -#: share/axis/tcl/axis.tcl:343 ../share/axis/tcl/axis.tcl:343 +#: share/axis/tcl/axis.tcl:345 +msgid "_Grid" +msgstr "" + +#: share/axis/tcl/axis.tcl:350 msgid "Show o_ffsets" msgstr "Afficher les offs_ets" -#: share/axis/tcl/axis.tcl:348 ../share/axis/tcl/axis.tcl:348 +#: share/axis/tcl/axis.tcl:355 msgid "Sh_ow machine limits" msgstr "Afficher les l_imites machine" -#: share/axis/tcl/axis.tcl:353 ../share/axis/tcl/axis.tcl:353 +#: share/axis/tcl/axis.tcl:360 msgid "Show v_elocity" msgstr "Afficher la _vitesse d'avance" -#: share/axis/tcl/axis.tcl:358 ../share/axis/tcl/axis.tcl:358 +#: share/axis/tcl/axis.tcl:365 msgid "Show _distance to go" msgstr "Afficher la _distance restante" -#: share/axis/tcl/axis.tcl:363 ../share/axis/tcl/axis.tcl:363 +#: share/axis/tcl/axis.tcl:370 msgid "Large coordinate fo_nt" msgstr "Coordonnées en p_olice large " -#: share/axis/tcl/axis.tcl:366 ../share/axis/tcl/axis.tcl:366 +#: share/axis/tcl/axis.tcl:373 msgid "Ctrl-K" msgstr "Ctrl+K" -#: share/axis/tcl/axis.tcl:368 ../share/axis/tcl/axis.tcl:368 +#: share/axis/tcl/axis.tcl:375 msgid "_Clear live plot" msgstr "Rafraîchir le parcours d'outil" -#: share/axis/tcl/axis.tcl:377 ../share/axis/tcl/axis.tcl:377 +#: share/axis/tcl/axis.tcl:384 msgid "Show commanded position" msgstr "Afficher la position _commandée" -#: share/axis/tcl/axis.tcl:384 ../share/axis/tcl/axis.tcl:384 +#: share/axis/tcl/axis.tcl:391 msgid "Show actual position" msgstr "Afficher la position _actuelle" -#: share/axis/tcl/axis.tcl:393 ../share/axis/tcl/axis.tcl:393 +#: share/axis/tcl/axis.tcl:400 msgid "Show machine position" msgstr "Afficher la position _machine" -#: share/axis/tcl/axis.tcl:400 ../share/axis/tcl/axis.tcl:400 +#: share/axis/tcl/axis.tcl:407 msgid "Show relative position" msgstr "Afficher la position _relative" -#: share/axis/tcl/axis.tcl:409 ../share/axis/tcl/axis.tcl:409 +#: share/axis/tcl/axis.tcl:416 msgid "Joint mode" msgstr "Mode articulations" -#: share/axis/tcl/axis.tcl:416 ../share/axis/tcl/axis.tcl:416 +#: share/axis/tcl/axis.tcl:423 msgid "World mode" msgstr "Mode articulations" -#: share/axis/tcl/axis.tcl:425 ../share/axis/tcl/axis.tcl:425 +#: share/axis/tcl/axis.tcl:431 +msgid "_Off" +msgstr "" + +#: share/axis/tcl/axis.tcl:437 +#, fuzzy +msgid "_Custom" +msgstr "Personnalisé" + +#: share/axis/tcl/axis.tcl:443 +msgid "User_0" +msgstr "" + +#: share/axis/tcl/axis.tcl:447 +msgid "User_1" +msgstr "" + +#: share/axis/tcl/axis.tcl:451 +msgid "User_2" +msgstr "" + +#: share/axis/tcl/axis.tcl:455 +msgid "User_3" +msgstr "" + +#: share/axis/tcl/axis.tcl:459 +msgid "User_4" +msgstr "" + +#: share/axis/tcl/axis.tcl:463 +msgid "User_5" +msgstr "" + +#: share/axis/tcl/axis.tcl:467 +msgid "User_6" +msgstr "" + +#: share/axis/tcl/axis.tcl:471 +msgid "User_7" +msgstr "" + +#: share/axis/tcl/axis.tcl:475 +msgid "User_8" +msgstr "" + +#: share/axis/tcl/axis.tcl:479 +msgid "User_9" +msgstr "" + +#: share/axis/tcl/axis.tcl:491 msgid "_About AXIS" msgstr "_À propos d'AXIS" -#: share/axis/tcl/axis.tcl:429 ../share/axis/tcl/axis.tcl:429 +#: share/axis/tcl/axis.tcl:495 msgid "Quick _Reference" msgstr "Aide _rapide" -#: share/axis/tcl/axis.tcl:439 ../share/axis/tcl/axis.tcl:439 +#: share/axis/tcl/axis.tcl:505 msgid "_Machine" msgstr "_Machine" -#: share/axis/tcl/axis.tcl:443 ../share/axis/tcl/axis.tcl:443 +#: share/axis/tcl/axis.tcl:509 msgid "_View" msgstr "_Vues" -#: share/axis/tcl/axis.tcl:456 ../share/axis/tcl/axis.tcl:456 +#: share/axis/tcl/axis.tcl:513 +msgid "_User" +msgstr "" + +#: share/axis/tcl/axis.tcl:526 msgid "Toggle Emergency Stop [F1]" msgstr "Arrêt d'urgence [F1]" -#: share/axis/tcl/axis.tcl:465 ../share/axis/tcl/axis.tcl:465 +#: share/axis/tcl/axis.tcl:535 msgid "Toggle Machine power [F2]" msgstr "Marche/arrêt machine [F2]" -#: share/axis/tcl/axis.tcl:476 ../share/axis/tcl/axis.tcl:476 +#: share/axis/tcl/axis.tcl:546 msgid "Open G-Code file [O]" msgstr "Ouvrir fichier G-code [O]" -#: share/axis/tcl/axis.tcl:484 ../share/axis/tcl/axis.tcl:484 +#: share/axis/tcl/axis.tcl:554 msgid "Reopen current file [Control-R]" msgstr "Recharger le fichier courant [Ctrl+R]" -#: share/axis/tcl/axis.tcl:494 ../share/axis/tcl/axis.tcl:494 +#: share/axis/tcl/axis.tcl:564 msgid "Begin executing current file [R]" msgstr "Départ cycle [R]" -#: share/axis/tcl/axis.tcl:502 ../share/axis/tcl/axis.tcl:502 +#: share/axis/tcl/axis.tcl:572 msgid "Execute next line [T]" msgstr "Exécuter la ligne suivante [T]" -#: share/axis/tcl/axis.tcl:510 ../share/axis/tcl/axis.tcl:510 +#: share/axis/tcl/axis.tcl:580 msgid "Pause [P] / resume [S] execution" msgstr "Pause [P] / reprise [S] d'exécution" -#: share/axis/tcl/axis.tcl:518 ../share/axis/tcl/axis.tcl:518 +#: share/axis/tcl/axis.tcl:588 msgid "Stop program execution [ESC]" msgstr "Stopper l'exécution du programme [ESC]" -#: share/axis/tcl/axis.tcl:528 ../share/axis/tcl/axis.tcl:528 +#: share/axis/tcl/axis.tcl:598 msgid "Toggle skip lines with '/' [Alt-M /]" msgstr "Sauter ou non les lignes avec '/' [Alt-M /]" -#: share/axis/tcl/axis.tcl:535 ../share/axis/tcl/axis.tcl:535 +#: share/axis/tcl/axis.tcl:605 msgid "Toggle optional pause [Alt-M 1]" msgstr "Avec ou sans pause optionnelle [Alt-M 1]" -#: share/axis/tcl/axis.tcl:544 ../share/axis/tcl/axis.tcl:544 +#: share/axis/tcl/axis.tcl:614 src/emc/usr_intf/gmoccapy/gmoccapy.glade:549 msgid "Zoom in" msgstr "Zoom plus [+]" -#: share/axis/tcl/axis.tcl:552 ../share/axis/tcl/axis.tcl:552 +#: share/axis/tcl/axis.tcl:622 src/emc/usr_intf/gmoccapy/gmoccapy.glade:567 msgid "Zoom out" msgstr "Zoom moins [-]" -#: share/axis/tcl/axis.tcl:560 ../share/axis/tcl/axis.tcl:560 +#: share/axis/tcl/axis.tcl:630 msgid "Top view" msgstr "Vue de dessus" -#: share/axis/tcl/axis.tcl:568 ../share/axis/tcl/axis.tcl:568 +#: share/axis/tcl/axis.tcl:638 msgid "Rotated top view" msgstr "Vue de dessus, basculée" -#: share/axis/tcl/axis.tcl:576 ../share/axis/tcl/axis.tcl:576 +#: share/axis/tcl/axis.tcl:646 msgid "Side view" msgstr "Vue de côté" -#: share/axis/tcl/axis.tcl:584 ../share/axis/tcl/axis.tcl:584 +#: share/axis/tcl/axis.tcl:654 msgid "Front view" msgstr "Vue de face" -#: share/axis/tcl/axis.tcl:592 ../share/axis/tcl/axis.tcl:592 +#: share/axis/tcl/axis.tcl:662 msgid "Perspective view" msgstr "Vue en perspective" -#: share/axis/tcl/axis.tcl:600 ../share/axis/tcl/axis.tcl:600 +#: share/axis/tcl/axis.tcl:670 msgid "Toggle between Drag and Rotate Mode [D]" msgstr "Bascule entre « glisser la vue » et « tourner la vue» " -#: share/axis/tcl/axis.tcl:615 ../share/axis/tcl/axis.tcl:615 +#: share/axis/tcl/axis.tcl:685 msgid "Clear live plot [Ctrl-K]" msgstr "Rafraîchi le parcours d'outil [Ctrl+K]" -#: share/axis/tcl/axis.tcl:766 ../share/axis/tcl/axis.tcl:766 +#: share/axis/tcl/axis.tcl:836 msgid "Manual Control [F3]" msgstr "Contrôle manuel [F3]" -#: share/axis/tcl/axis.tcl:767 ../share/axis/tcl/axis.tcl:767 +#: share/axis/tcl/axis.tcl:837 msgid "MDI [F5]" msgstr "Données manuelles [F5]" -#: share/axis/tcl/axis.tcl:781 share/axis/tcl/axis.tcl:2036 -#: share/axis/tcl/axis.tcl:2203 ../share/axis/tcl/axis.tcl:781 -#: ../share/axis/tcl/axis.tcl:2036 ../share/axis/tcl/axis.tcl:2203 +#: share/axis/tcl/axis.tcl:851 share/axis/tcl/axis.tcl:2158 +#: share/axis/tcl/axis.tcl:2328 msgid "Axis:" msgstr "Axe:" -#: share/axis/tcl/axis.tcl:1102 ../share/axis/tcl/axis.tcl:1102 +#: share/axis/tcl/axis.tcl:1172 src/emc/usr_intf/gscreen/gscreen.glade:2944 msgid "Home Axis" msgstr "POM des axes" -#: share/axis/tcl/axis.tcl:1176 ../share/axis/tcl/axis.tcl:1176 +#: share/axis/tcl/axis.tcl:1246 msgid "Spindle:" msgstr "Broche:" -#: share/axis/tcl/axis.tcl:1223 src/emc/usr_intf/touchy/touchy.glade:946 -#: ../share/axis/tcl/axis.tcl:1223 emc/usr_intf/touchy/touchy.glade:946 +#: share/axis/tcl/axis.tcl:1293 src/emc/usr_intf/touchy/touchy.glade:946 +#: src/emc/usr_intf/stepconf/main_page.glade:406 +#: src/emc/usr_intf/gscreen/gscreen.glade:4067 msgid "-" msgstr "-" -#: share/axis/tcl/axis.tcl:1237 ../share/axis/tcl/axis.tcl:1237 +#: share/axis/tcl/axis.tcl:1307 src/emc/usr_intf/stepconf/main_page.glade:403 +#: src/emc/usr_intf/gscreen/gscreen.glade:4056 msgid "+" msgstr "+" -#: share/axis/tcl/axis.tcl:1242 ../share/axis/tcl/axis.tcl:1242 +#: share/axis/tcl/axis.tcl:1312 msgid "Brake" msgstr "Frein" -#: share/axis/tcl/axis.tcl:1289 ../share/axis/tcl/axis.tcl:1289 +#: share/axis/tcl/axis.tcl:1359 msgid "Coolant:" msgstr "Arrosage:" -#: share/axis/tcl/axis.tcl:1294 ../share/axis/tcl/axis.tcl:1294 +#: share/axis/tcl/axis.tcl:1364 msgid "Mist" msgstr "Gouttelettes" -#: share/axis/tcl/axis.tcl:1299 ../share/axis/tcl/axis.tcl:1299 +#: share/axis/tcl/axis.tcl:1369 msgid "Flood" msgstr "Fluide" -#: share/axis/tcl/axis.tcl:1371 ../share/axis/tcl/axis.tcl:1371 +#: share/axis/tcl/axis.tcl:1441 msgid "History:" msgstr "Historique:" -#: share/axis/tcl/axis.tcl:1394 ../share/axis/tcl/axis.tcl:1394 +#: share/axis/tcl/axis.tcl:1464 msgid "MDI Command:" msgstr "Commande MDI:" -#: share/axis/tcl/axis.tcl:1403 ../share/axis/tcl/axis.tcl:1403 +#: share/axis/tcl/axis.tcl:1473 msgid "Go" msgstr "Envoi" -#: share/axis/tcl/axis.tcl:1409 ../share/axis/tcl/axis.tcl:1409 +#: share/axis/tcl/axis.tcl:1479 msgid "Active G-Codes:" msgstr "G-codes actifs:" -#: share/axis/tcl/axis.tcl:1487 ../share/axis/tcl/axis.tcl:1487 +#: share/axis/tcl/axis.tcl:1557 src/emc/usr_intf/gmoccapy/gmoccapy.glade:771 msgid "Preview" msgstr "Parcours d'outil" -#: share/axis/tcl/axis.tcl:1488 ../share/axis/tcl/axis.tcl:1488 +#: share/axis/tcl/axis.tcl:1558 msgid "DRO" msgstr "Visu" -#: share/axis/tcl/axis.tcl:1575 share/axis/tcl/axis.tcl:1588 -#: ../share/axis/tcl/axis.tcl:1575 ../share/axis/tcl/axis.tcl:1588 +#: share/axis/tcl/axis.tcl:1645 share/axis/tcl/axis.tcl:1658 msgid "Jog Speed:" msgstr "Vitesse de jog:" -#: share/axis/tcl/axis.tcl:1600 ../share/axis/tcl/axis.tcl:1600 +#: share/axis/tcl/axis.tcl:1670 msgid "Max Velocity:" msgstr "Vitesse maximale:" -#: share/axis/tcl/axis.tcl:1629 ../share/axis/tcl/axis.tcl:1629 +#: share/axis/tcl/axis.tcl:1699 msgid "Spindle Override:" msgstr "Correction vitesse de broche:" -#: share/axis/tcl/axis.tcl:1631 share/axis/tcl/axis.tcl:1671 -#: src/emc/usr_intf/pncconf/pncconf.glade:3141 -#: src/emc/usr_intf/pncconf/pncconf.glade:3154 -#: src/emc/usr_intf/pncconf/pncconf.glade:3167 -#: src/emc/usr_intf/pncconf/pncconf.glade:3180 -#: src/emc/usr_intf/pncconf/pncconf.glade:3193 -#: src/emc/usr_intf/pncconf/pncconf.glade:3206 -#: src/emc/usr_intf/pncconf/pncconf.glade:3219 -#: src/emc/usr_intf/pncconf/pncconf.glade:3232 -#: src/emc/usr_intf/pncconf/pncconf.glade:3345 -#: src/emc/usr_intf/pncconf/pncconf.glade:3358 -#: src/emc/usr_intf/pncconf/pncconf.glade:3371 -#: src/emc/usr_intf/pncconf/pncconf.glade:3384 -#: src/emc/usr_intf/pncconf/pncconf.glade:3397 -#: src/emc/usr_intf/pncconf/pncconf.glade:3410 -#: src/emc/usr_intf/pncconf/pncconf.glade:3516 -#: src/emc/usr_intf/pncconf/pncconf.glade:3527 -#: src/emc/usr_intf/pncconf/pncconf.glade:4022 -#: src/emc/usr_intf/pncconf/pncconf.glade:4035 -#: src/emc/usr_intf/pncconf/pncconf.glade:4048 -#: src/emc/usr_intf/pncconf/pncconf.glade:4061 -#: src/emc/usr_intf/pncconf/pncconf.glade:4074 -#: src/emc/usr_intf/pncconf/pncconf.glade:4087 -#: src/emc/usr_intf/pncconf/pncconf.glade:4100 -#: src/emc/usr_intf/pncconf/pncconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:4226 -#: src/emc/usr_intf/pncconf/pncconf.glade:4239 -#: src/emc/usr_intf/pncconf/pncconf.glade:4252 -#: src/emc/usr_intf/pncconf/pncconf.glade:4265 -#: src/emc/usr_intf/pncconf/pncconf.glade:4278 -#: src/emc/usr_intf/pncconf/pncconf.glade:4291 -#: src/emc/usr_intf/pncconf/pncconf.glade:4397 -#: src/emc/usr_intf/pncconf/pncconf.glade:4408 -#: src/emc/usr_intf/pncconf/pncconf.glade:4903 -#: src/emc/usr_intf/pncconf/pncconf.glade:4916 -#: src/emc/usr_intf/pncconf/pncconf.glade:4929 -#: src/emc/usr_intf/pncconf/pncconf.glade:4942 -#: src/emc/usr_intf/pncconf/pncconf.glade:4955 -#: src/emc/usr_intf/pncconf/pncconf.glade:4968 -#: src/emc/usr_intf/pncconf/pncconf.glade:4981 -#: src/emc/usr_intf/pncconf/pncconf.glade:4994 -#: src/emc/usr_intf/pncconf/pncconf.glade:5107 -#: src/emc/usr_intf/pncconf/pncconf.glade:5120 -#: src/emc/usr_intf/pncconf/pncconf.glade:5133 -#: src/emc/usr_intf/pncconf/pncconf.glade:5146 -#: src/emc/usr_intf/pncconf/pncconf.glade:5159 -#: src/emc/usr_intf/pncconf/pncconf.glade:5172 -#: src/emc/usr_intf/pncconf/pncconf.glade:5278 -#: src/emc/usr_intf/pncconf/pncconf.glade:5289 -#: src/emc/usr_intf/pncconf/pncconf.glade:5582 +#: share/axis/tcl/axis.tcl:1701 share/axis/tcl/axis.tcl:1741 +#: share/axis/tcl/axis.tcl:1779 src/emc/usr_intf/pncconf/pncconf.glade:2834 +#: src/emc/usr_intf/pncconf/pncconf.glade:2845 +#: src/emc/usr_intf/pncconf/pncconf.glade:2949 +#: src/emc/usr_intf/pncconf/pncconf.glade:2962 +#: src/emc/usr_intf/pncconf/pncconf.glade:2975 +#: src/emc/usr_intf/pncconf/pncconf.glade:2988 +#: src/emc/usr_intf/pncconf/pncconf.glade:3001 +#: src/emc/usr_intf/pncconf/pncconf.glade:3014 +#: src/emc/usr_intf/pncconf/pncconf.glade:3127 +#: src/emc/usr_intf/pncconf/pncconf.glade:3140 +#: src/emc/usr_intf/pncconf/pncconf.glade:3153 +#: src/emc/usr_intf/pncconf/pncconf.glade:3166 +#: src/emc/usr_intf/pncconf/pncconf.glade:3179 +#: src/emc/usr_intf/pncconf/pncconf.glade:3192 +#: src/emc/usr_intf/pncconf/pncconf.glade:3205 +#: src/emc/usr_intf/pncconf/pncconf.glade:3218 +#: src/emc/usr_intf/pncconf/pncconf.glade:3715 +#: src/emc/usr_intf/pncconf/pncconf.glade:3726 +#: src/emc/usr_intf/pncconf/pncconf.glade:3830 +#: src/emc/usr_intf/pncconf/pncconf.glade:3843 +#: src/emc/usr_intf/pncconf/pncconf.glade:3856 +#: src/emc/usr_intf/pncconf/pncconf.glade:3869 +#: src/emc/usr_intf/pncconf/pncconf.glade:3882 +#: src/emc/usr_intf/pncconf/pncconf.glade:3895 +#: src/emc/usr_intf/pncconf/pncconf.glade:4008 +#: src/emc/usr_intf/pncconf/pncconf.glade:4021 +#: src/emc/usr_intf/pncconf/pncconf.glade:4034 +#: src/emc/usr_intf/pncconf/pncconf.glade:4047 +#: src/emc/usr_intf/pncconf/pncconf.glade:4060 +#: src/emc/usr_intf/pncconf/pncconf.glade:4073 +#: src/emc/usr_intf/pncconf/pncconf.glade:4086 +#: src/emc/usr_intf/pncconf/pncconf.glade:4099 +#: src/emc/usr_intf/pncconf/pncconf.glade:4596 +#: src/emc/usr_intf/pncconf/pncconf.glade:4607 +#: src/emc/usr_intf/pncconf/pncconf.glade:4711 +#: src/emc/usr_intf/pncconf/pncconf.glade:4724 +#: src/emc/usr_intf/pncconf/pncconf.glade:4737 +#: src/emc/usr_intf/pncconf/pncconf.glade:4750 +#: src/emc/usr_intf/pncconf/pncconf.glade:4763 +#: src/emc/usr_intf/pncconf/pncconf.glade:4776 +#: src/emc/usr_intf/pncconf/pncconf.glade:4889 +#: src/emc/usr_intf/pncconf/pncconf.glade:4902 +#: src/emc/usr_intf/pncconf/pncconf.glade:4915 +#: src/emc/usr_intf/pncconf/pncconf.glade:4928 +#: src/emc/usr_intf/pncconf/pncconf.glade:4941 +#: src/emc/usr_intf/pncconf/pncconf.glade:4954 +#: src/emc/usr_intf/pncconf/pncconf.glade:4967 +#: src/emc/usr_intf/pncconf/pncconf.glade:4980 #: src/emc/usr_intf/pncconf/pncconf.glade:5631 -#: src/emc/usr_intf/pncconf/pncconf.glade:5641 ../share/axis/tcl/axis.tcl:1631 -#: ../share/axis/tcl/axis.tcl:1671 emc/usr_intf/pncconf/pncconf.glade:3141 -#: emc/usr_intf/pncconf/pncconf.glade:3154 -#: emc/usr_intf/pncconf/pncconf.glade:3167 -#: emc/usr_intf/pncconf/pncconf.glade:3180 -#: emc/usr_intf/pncconf/pncconf.glade:3193 -#: emc/usr_intf/pncconf/pncconf.glade:3206 -#: emc/usr_intf/pncconf/pncconf.glade:3219 -#: emc/usr_intf/pncconf/pncconf.glade:3232 -#: emc/usr_intf/pncconf/pncconf.glade:3345 -#: emc/usr_intf/pncconf/pncconf.glade:3358 -#: emc/usr_intf/pncconf/pncconf.glade:3371 -#: emc/usr_intf/pncconf/pncconf.glade:3384 -#: emc/usr_intf/pncconf/pncconf.glade:3397 -#: emc/usr_intf/pncconf/pncconf.glade:3410 -#: emc/usr_intf/pncconf/pncconf.glade:3516 -#: emc/usr_intf/pncconf/pncconf.glade:3527 -#: emc/usr_intf/pncconf/pncconf.glade:4022 -#: emc/usr_intf/pncconf/pncconf.glade:4035 -#: emc/usr_intf/pncconf/pncconf.glade:4048 -#: emc/usr_intf/pncconf/pncconf.glade:4061 -#: emc/usr_intf/pncconf/pncconf.glade:4074 -#: emc/usr_intf/pncconf/pncconf.glade:4087 -#: emc/usr_intf/pncconf/pncconf.glade:4100 -#: emc/usr_intf/pncconf/pncconf.glade:4113 -#: emc/usr_intf/pncconf/pncconf.glade:4226 -#: emc/usr_intf/pncconf/pncconf.glade:4239 -#: emc/usr_intf/pncconf/pncconf.glade:4252 -#: emc/usr_intf/pncconf/pncconf.glade:4265 -#: emc/usr_intf/pncconf/pncconf.glade:4278 -#: emc/usr_intf/pncconf/pncconf.glade:4291 -#: emc/usr_intf/pncconf/pncconf.glade:4397 -#: emc/usr_intf/pncconf/pncconf.glade:4408 -#: emc/usr_intf/pncconf/pncconf.glade:4903 -#: emc/usr_intf/pncconf/pncconf.glade:4916 -#: emc/usr_intf/pncconf/pncconf.glade:4929 -#: emc/usr_intf/pncconf/pncconf.glade:4942 -#: emc/usr_intf/pncconf/pncconf.glade:4955 -#: emc/usr_intf/pncconf/pncconf.glade:4968 -#: emc/usr_intf/pncconf/pncconf.glade:4981 -#: emc/usr_intf/pncconf/pncconf.glade:4994 -#: emc/usr_intf/pncconf/pncconf.glade:5107 -#: emc/usr_intf/pncconf/pncconf.glade:5120 -#: emc/usr_intf/pncconf/pncconf.glade:5133 -#: emc/usr_intf/pncconf/pncconf.glade:5146 -#: emc/usr_intf/pncconf/pncconf.glade:5159 -#: emc/usr_intf/pncconf/pncconf.glade:5172 -#: emc/usr_intf/pncconf/pncconf.glade:5278 -#: emc/usr_intf/pncconf/pncconf.glade:5289 -#: emc/usr_intf/pncconf/pncconf.glade:5582 -#: emc/usr_intf/pncconf/pncconf.glade:5631 -#: emc/usr_intf/pncconf/pncconf.glade:5641 -#: src/emc/usr_intf/pncconf/pncconf.glade:3149 -#: src/emc/usr_intf/pncconf/pncconf.glade:3162 -#: src/emc/usr_intf/pncconf/pncconf.glade:3175 -#: src/emc/usr_intf/pncconf/pncconf.glade:3188 -#: src/emc/usr_intf/pncconf/pncconf.glade:3201 -#: src/emc/usr_intf/pncconf/pncconf.glade:3214 -#: src/emc/usr_intf/pncconf/pncconf.glade:3227 -#: src/emc/usr_intf/pncconf/pncconf.glade:3240 -#: src/emc/usr_intf/pncconf/pncconf.glade:3353 -#: src/emc/usr_intf/pncconf/pncconf.glade:3366 -#: src/emc/usr_intf/pncconf/pncconf.glade:3379 -#: src/emc/usr_intf/pncconf/pncconf.glade:3392 -#: src/emc/usr_intf/pncconf/pncconf.glade:3405 -#: src/emc/usr_intf/pncconf/pncconf.glade:3418 -#: src/emc/usr_intf/pncconf/pncconf.glade:3524 -#: src/emc/usr_intf/pncconf/pncconf.glade:3535 -#: src/emc/usr_intf/pncconf/pncconf.glade:4030 -#: src/emc/usr_intf/pncconf/pncconf.glade:4043 -#: src/emc/usr_intf/pncconf/pncconf.glade:4056 -#: src/emc/usr_intf/pncconf/pncconf.glade:4069 -#: src/emc/usr_intf/pncconf/pncconf.glade:4082 -#: src/emc/usr_intf/pncconf/pncconf.glade:4095 -#: src/emc/usr_intf/pncconf/pncconf.glade:4108 -#: src/emc/usr_intf/pncconf/pncconf.glade:4121 -#: src/emc/usr_intf/pncconf/pncconf.glade:4234 -#: src/emc/usr_intf/pncconf/pncconf.glade:4247 -#: src/emc/usr_intf/pncconf/pncconf.glade:4260 -#: src/emc/usr_intf/pncconf/pncconf.glade:4273 -#: src/emc/usr_intf/pncconf/pncconf.glade:4286 -#: src/emc/usr_intf/pncconf/pncconf.glade:4299 -#: src/emc/usr_intf/pncconf/pncconf.glade:4405 -#: src/emc/usr_intf/pncconf/pncconf.glade:4416 -#: src/emc/usr_intf/pncconf/pncconf.glade:4911 -#: src/emc/usr_intf/pncconf/pncconf.glade:4924 -#: src/emc/usr_intf/pncconf/pncconf.glade:4937 -#: src/emc/usr_intf/pncconf/pncconf.glade:4950 -#: src/emc/usr_intf/pncconf/pncconf.glade:4963 -#: src/emc/usr_intf/pncconf/pncconf.glade:4976 -#: src/emc/usr_intf/pncconf/pncconf.glade:4989 -#: src/emc/usr_intf/pncconf/pncconf.glade:5002 -#: src/emc/usr_intf/pncconf/pncconf.glade:5115 -#: src/emc/usr_intf/pncconf/pncconf.glade:5128 -#: src/emc/usr_intf/pncconf/pncconf.glade:5141 -#: src/emc/usr_intf/pncconf/pncconf.glade:5154 -#: src/emc/usr_intf/pncconf/pncconf.glade:5167 -#: src/emc/usr_intf/pncconf/pncconf.glade:5180 -#: src/emc/usr_intf/pncconf/pncconf.glade:5286 -#: src/emc/usr_intf/pncconf/pncconf.glade:5297 -#: src/emc/usr_intf/pncconf/pncconf.glade:5590 -#: src/emc/usr_intf/pncconf/pncconf.glade:5639 -#: src/emc/usr_intf/pncconf/pncconf.glade:5649 +#: src/emc/usr_intf/pncconf/pncconf.glade:5643 +#: src/emc/usr_intf/pncconf/pncconf.glade:5690 msgid "%" msgstr "%" -#: share/axis/tcl/axis.tcl:1711 ../share/axis/tcl/axis.tcl:1711 +#: share/axis/tcl/axis.tcl:1777 +#, fuzzy +msgid "Rapid Override:" +msgstr "Correction vitesse de broche:" + +#: share/axis/tcl/axis.tcl:1819 +#, fuzzy msgid "" -"LinuxCNC/AXIS version $version\n" +"Machinekit/AXIS version $version\n" "\n" "Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff " "Epler and Chris Radek.\n" "\n" "This is free software, and you are welcome to redistribute it under certain " -"conditions. See the file COPYING, included with LinuxCNC.\n" +"conditions. See the file COPYING, included with Machinekit.\n" "\n" -"Visit the LinuxCNC web site: " +"Visit the Machinekit web site: " msgstr "" "LinuxCNC/AXIS version $version\n" "\n" @@ -5755,697 +7044,525 @@ msgstr "" "\n" "Visitez le site web: " -#: share/axis/tcl/axis.tcl:1739 ../share/axis/tcl/axis.tcl:1739 +#: share/axis/tcl/axis.tcl:1847 msgid "About AXIS" msgstr "À propos d'AXIS" -#: share/axis/tcl/axis.tcl:1768 ../share/axis/tcl/axis.tcl:1768 +#: share/axis/tcl/axis.tcl:1876 msgid "AXIS Quick Reference" msgstr "Aide rapide d'AXIS" -#: share/axis/tcl/axis.tcl:1903 ../share/axis/tcl/axis.tcl:1903 -msgid "AXIS $::version on $::machine" +#: share/axis/tcl/axis.tcl:2017 +#, fuzzy +msgid "AXIS with MachineKit $::version on $::machine" msgstr "AXIS $::version sur $::machine" -#: share/axis/tcl/axis.tcl:1905 ../share/axis/tcl/axis.tcl:1905 +#: share/axis/tcl/axis.tcl:2019 msgid "(no file)" msgstr "(pas de fichier)" -#: share/axis/tcl/axis.tcl:1976 share/axis/tcl/axis.tcl:1981 -#: ../share/axis/tcl/axis.tcl:1976 ../share/axis/tcl/axis.tcl:1981 +#: share/axis/tcl/axis.tcl:2091 share/axis/tcl/axis.tcl:2096 msgid "Position:" msgstr "Position:" -#: share/axis/tcl/axis.tcl:1978 ../share/axis/tcl/axis.tcl:1978 +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/gscreen/gscreen.py:3516 msgid "Machine" msgstr "Machine" -#: share/axis/tcl/axis.tcl:1978 src/emc/usr_intf/touchy/touchy.glade:155 -#: ../share/axis/tcl/axis.tcl:1978 emc/usr_intf/touchy/touchy.glade:155 +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/touchy/touchy.glade:155 msgid "Relative" msgstr "Relatif" -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3329 -#: ../share/axis/tcl/axis.tcl:1979 emc/usr_intf/touchy/touchy.glade:3329 +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3329 msgid "Actual" msgstr "Actuelle" -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3318 -#: ../share/axis/tcl/axis.tcl:1979 emc/usr_intf/touchy/touchy.glade:3318 +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3318 msgid "Commanded" msgstr "Commandée" -#: share/axis/tcl/axis.tcl:2032 share/axis/tcl/axis.tcl:2203 -#: ../share/axis/tcl/axis.tcl:2032 ../share/axis/tcl/axis.tcl:2203 +#: share/axis/tcl/axis.tcl:2154 share/axis/tcl/axis.tcl:2328 msgid "Joint:" msgstr "Jointure:" -#: share/axis/tcl/axis.tcl:2338 ../share/axis/tcl/axis.tcl:2338 +#: share/axis/tcl/axis.tcl:2463 msgid "Turn spindle counterclockwise [F10]" msgstr "Broche en sens anti-horaire [F10]" -#: share/axis/tcl/axis.tcl:2339 ../share/axis/tcl/axis.tcl:2339 +#: share/axis/tcl/axis.tcl:2464 msgid "Turn spindle clockwise [F9]" msgstr "Broche en sens horaire [F9]" -#: share/axis/tcl/axis.tcl:2340 ../share/axis/tcl/axis.tcl:2340 +#: share/axis/tcl/axis.tcl:2465 msgid "Stop spindle [F9/F10]" msgstr "Arrêt broche [F9/F10]" -#: share/axis/tcl/axis.tcl:2341 ../share/axis/tcl/axis.tcl:2341 +#: share/axis/tcl/axis.tcl:2466 msgid "Turn spindle Faster [F12]" msgstr "Broche plus vite [F12]" -#: share/axis/tcl/axis.tcl:2342 ../share/axis/tcl/axis.tcl:2342 +#: share/axis/tcl/axis.tcl:2467 msgid "Turn spindle Slower [F11]" msgstr "Broche moins vite [F11]" -#: share/axis/tcl/axis.tcl:2343 ../share/axis/tcl/axis.tcl:2343 +#: share/axis/tcl/axis.tcl:2468 msgid "Turn spindle brake on [Shift-B] or off [B]" msgstr "Activer [Maj+B] ou arrêter [B] le frein de broche" -#: share/axis/tcl/axis.tcl:2344 ../share/axis/tcl/axis.tcl:2344 +#: share/axis/tcl/axis.tcl:2469 msgid "Turn flood on or off [F8]" msgstr "Avec ou sans arrosage [F8]" -#: share/axis/tcl/axis.tcl:2345 ../share/axis/tcl/axis.tcl:2345 +#: share/axis/tcl/axis.tcl:2470 msgid "Turn mist on or off [F7]" msgstr "Avec ou sans gouttelettes [F7]" -#: share/axis/tcl/axis.tcl:2346 ../share/axis/tcl/axis.tcl:2346 +#: share/axis/tcl/axis.tcl:2471 msgid "Send active axis home [Home]" msgstr "Prise d'origine machine de l'axe courant [origine]" -#: share/axis/tcl/axis.tcl:2347 ../share/axis/tcl/axis.tcl:2347 +#: share/axis/tcl/axis.tcl:2472 msgid "Set G54 offset for active axis [End]" msgstr "Valide le décalage G54 de l'axe actif [Fin]" -#: share/axis/tcl/axis.tcl:2348 ../share/axis/tcl/axis.tcl:2348 +#: share/axis/tcl/axis.tcl:2473 msgid "Activate axis [X]" msgstr "Activer l'axe [X]" -#: share/axis/tcl/axis.tcl:2349 ../share/axis/tcl/axis.tcl:2349 +#: share/axis/tcl/axis.tcl:2474 msgid "Activate axis [Y]" msgstr "Activer l'axe [Y]" -#: share/axis/tcl/axis.tcl:2350 ../share/axis/tcl/axis.tcl:2350 +#: share/axis/tcl/axis.tcl:2475 msgid "Activate axis [Z]" msgstr "Activer l'axe [Z]" -#: share/axis/tcl/axis.tcl:2351 ../share/axis/tcl/axis.tcl:2351 +#: share/axis/tcl/axis.tcl:2476 msgid "Activate axis [A]" msgstr "Activer l'axe [A]" -#: share/axis/tcl/axis.tcl:2352 ../share/axis/tcl/axis.tcl:2352 +#: share/axis/tcl/axis.tcl:2477 msgid "Activate axis [4]" msgstr "Activer l'axe [4]" -#: share/axis/tcl/axis.tcl:2353 ../share/axis/tcl/axis.tcl:2353 +#: share/axis/tcl/axis.tcl:2478 msgid "Activate axis [5]" msgstr "Activer l'axe [5]" -#: share/axis/tcl/axis.tcl:2354 share/axis/tcl/axis.tcl:2355 -#: ../share/axis/tcl/axis.tcl:2354 ../share/axis/tcl/axis.tcl:2355 +#: share/axis/tcl/axis.tcl:2479 share/axis/tcl/axis.tcl:2480 msgid "Jog selected axis" msgstr "Jog de l'axe sélectionné" -#: share/axis/tcl/axis.tcl:2357 ../share/axis/tcl/axis.tcl:2357 +#: share/axis/tcl/axis.tcl:2482 msgid "Temporarily allow jogging outside machine limits [L]" msgstr "Mouvement temporaire hors limites [L]" -#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 emc/usr_intf/touchy/mdi.py:47 -#: emc/usr_intf/stepconf/stepconf.py:155 emc/usr_intf/pncconf/pncconf.py:440 -#: src/emc/usr_intf/pncconf/pncconf.py:461 +#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:47 msgid "Spindle CW" msgstr "Broche en sens horaire" -#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 emc/usr_intf/touchy/mdi.py:48 -#: emc/usr_intf/stepconf/stepconf.py:155 emc/usr_intf/pncconf/pncconf.py:440 -#: src/emc/usr_intf/pncconf/pncconf.py:461 +#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:48 msgid "Spindle CCW" msgstr "Broche en sens anti-horaire" -#: src/emc/usr_intf/touchy/mdi.py:50 emc/usr_intf/touchy/mdi.py:50 +#: src/emc/usr_intf/touchy/mdi.py:50 +#, fuzzy +msgid "Set tool number" +msgstr "Re-numéroter" + +#: src/emc/usr_intf/touchy/mdi.py:51 src/emc/usr_intf/gscreen/mdi.py:50 msgid "Input control" msgstr "Contrôle d'entrée" -#: src/emc/usr_intf/touchy/mdi.py:53 src/emc/usr_intf/touchy/mdi.py:54 -#: emc/usr_intf/touchy/mdi.py:53 emc/usr_intf/touchy/mdi.py:54 +#: src/emc/usr_intf/touchy/mdi.py:54 src/emc/usr_intf/touchy/mdi.py:55 +#: src/emc/usr_intf/gscreen/mdi.py:53 src/emc/usr_intf/gscreen/mdi.py:54 msgid "Straight rapid" msgstr "droite rapide" -#: src/emc/usr_intf/touchy/mdi.py:55 src/emc/usr_intf/touchy/mdi.py:56 -#: emc/usr_intf/touchy/mdi.py:55 emc/usr_intf/touchy/mdi.py:56 +#: src/emc/usr_intf/touchy/mdi.py:56 src/emc/usr_intf/touchy/mdi.py:57 +#: src/emc/usr_intf/gscreen/mdi.py:55 src/emc/usr_intf/gscreen/mdi.py:56 msgid "Straight feed" msgstr "droite vitesse travail" -#: src/emc/usr_intf/touchy/mdi.py:57 src/emc/usr_intf/touchy/mdi.py:58 -#: emc/usr_intf/touchy/mdi.py:57 emc/usr_intf/touchy/mdi.py:58 +#: src/emc/usr_intf/touchy/mdi.py:58 src/emc/usr_intf/touchy/mdi.py:59 +#: src/emc/usr_intf/gscreen/mdi.py:57 src/emc/usr_intf/gscreen/mdi.py:58 msgid "Arc CW" msgstr "Arc sens horaire" -#: src/emc/usr_intf/touchy/mdi.py:59 src/emc/usr_intf/touchy/mdi.py:60 -#: emc/usr_intf/touchy/mdi.py:59 emc/usr_intf/touchy/mdi.py:60 +#: src/emc/usr_intf/touchy/mdi.py:60 src/emc/usr_intf/touchy/mdi.py:61 +#: src/emc/usr_intf/gscreen/mdi.py:59 src/emc/usr_intf/gscreen/mdi.py:60 msgid "Arc CCW" msgstr "Arc sens anti-horaire" -#: src/emc/usr_intf/touchy/mdi.py:61 src/emc/usr_intf/touchy/mdi.py:62 -#: emc/usr_intf/touchy/mdi.py:61 emc/usr_intf/touchy/mdi.py:62 +#: src/emc/usr_intf/touchy/mdi.py:62 src/emc/usr_intf/touchy/mdi.py:63 +#: src/emc/usr_intf/gscreen/mdi.py:61 src/emc/usr_intf/gscreen/mdi.py:62 msgid "Dwell" msgstr "Tempo" -#: src/emc/usr_intf/touchy/mdi.py:63 emc/usr_intf/touchy/mdi.py:63 +#: src/emc/usr_intf/touchy/mdi.py:64 src/emc/usr_intf/gscreen/mdi.py:63 msgid "Setup" msgstr "Installation" -#: src/emc/usr_intf/touchy/mdi.py:64 emc/usr_intf/touchy/mdi.py:64 +#: src/emc/usr_intf/touchy/mdi.py:65 src/emc/usr_intf/gscreen/mdi.py:64 msgid "Spindle synchronized feed" msgstr "Spindle synchronized feed" -#: src/emc/usr_intf/touchy/mdi.py:65 emc/usr_intf/touchy/mdi.py:65 +#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:65 msgid "Rigid tap" msgstr "Taraudage rigide" -#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/touchy/mdi.py:67 -#: src/emc/usr_intf/touchy/mdi.py:68 src/emc/usr_intf/touchy/mdi.py:69 -#: emc/usr_intf/touchy/mdi.py:66 emc/usr_intf/touchy/mdi.py:67 -#: emc/usr_intf/touchy/mdi.py:68 emc/usr_intf/touchy/mdi.py:69 +#: src/emc/usr_intf/touchy/mdi.py:67 src/emc/usr_intf/touchy/mdi.py:68 +#: src/emc/usr_intf/touchy/mdi.py:69 src/emc/usr_intf/touchy/mdi.py:70 +#: src/emc/usr_intf/gscreen/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:67 +#: src/emc/usr_intf/gscreen/mdi.py:68 src/emc/usr_intf/gscreen/mdi.py:69 msgid "Probe" msgstr "Palpeur" -#: src/emc/usr_intf/touchy/mdi.py:70 emc/usr_intf/touchy/mdi.py:70 +#: src/emc/usr_intf/touchy/mdi.py:71 src/emc/usr_intf/gscreen/mdi.py:70 msgid "Radius compensation left" msgstr "Compensation de rayon à gauche" -#: src/emc/usr_intf/touchy/mdi.py:71 emc/usr_intf/touchy/mdi.py:71 +#: src/emc/usr_intf/touchy/mdi.py:72 src/emc/usr_intf/gscreen/mdi.py:71 msgid "Radius compensation right" msgstr "Compensation de rayon à droite" -#: src/emc/usr_intf/touchy/mdi.py:72 emc/usr_intf/touchy/mdi.py:72 +#: src/emc/usr_intf/touchy/mdi.py:73 src/emc/usr_intf/gscreen/mdi.py:72 msgid "Radius compensation left, immediate" msgstr "Compensation de rayon à gauche, immédiate" -#: src/emc/usr_intf/touchy/mdi.py:73 emc/usr_intf/touchy/mdi.py:73 +#: src/emc/usr_intf/touchy/mdi.py:74 src/emc/usr_intf/gscreen/mdi.py:73 msgid "Radius compensation right, immediate" msgstr "Compensation de rayon à droite, immédiate" -#: src/emc/usr_intf/touchy/mdi.py:74 emc/usr_intf/touchy/mdi.py:74 +#: src/emc/usr_intf/touchy/mdi.py:75 src/emc/usr_intf/gscreen/mdi.py:74 msgid "Tool length offset" msgstr "Offset de longueur d'outil" -#: src/emc/usr_intf/touchy/mdi.py:75 emc/usr_intf/touchy/mdi.py:75 +#: src/emc/usr_intf/touchy/mdi.py:76 src/emc/usr_intf/gscreen/mdi.py:75 msgid "Tool length offset immediate" msgstr "Offset de longueur d'outil immédiat" -#: src/emc/usr_intf/touchy/mdi.py:76 emc/usr_intf/touchy/mdi.py:76 +#: src/emc/usr_intf/touchy/mdi.py:77 src/emc/usr_intf/gscreen/mdi.py:76 msgid "Motion in unoffset coordinates" msgstr "Mouvement en coordonnées non décalées" -#: src/emc/usr_intf/touchy/mdi.py:77 emc/usr_intf/touchy/mdi.py:77 +#: src/emc/usr_intf/touchy/mdi.py:78 src/emc/usr_intf/gscreen/mdi.py:77 msgid "Continuous mode" msgstr "Mode continu" -#: src/emc/usr_intf/touchy/mdi.py:79 emc/usr_intf/touchy/mdi.py:79 +#: src/emc/usr_intf/touchy/mdi.py:80 src/emc/usr_intf/gscreen/mdi.py:79 msgid "Drill" msgstr "Perçage" -#: src/emc/usr_intf/touchy/mdi.py:80 emc/usr_intf/touchy/mdi.py:80 +#: src/emc/usr_intf/touchy/mdi.py:81 src/emc/usr_intf/gscreen/mdi.py:80 msgid "Drill with dwell" msgstr "Perçage avec tempo" -#: src/emc/usr_intf/touchy/mdi.py:81 emc/usr_intf/touchy/mdi.py:81 +#: src/emc/usr_intf/touchy/mdi.py:82 src/emc/usr_intf/gscreen/mdi.py:81 msgid "Peck drill" msgstr "Perçage avec débourrage" -#: src/emc/usr_intf/touchy/mdi.py:82 emc/usr_intf/touchy/mdi.py:82 +#: src/emc/usr_intf/touchy/mdi.py:83 src/emc/usr_intf/gscreen/mdi.py:82 msgid "Chip-break drill" msgstr "Perçage avec brise copeaux" -#: src/emc/usr_intf/touchy/mdi.py:83 emc/usr_intf/touchy/mdi.py:83 +#: src/emc/usr_intf/touchy/mdi.py:84 src/emc/usr_intf/gscreen/mdi.py:83 msgid "Bore" msgstr "Perce" -#: src/emc/usr_intf/touchy/mdi.py:84 emc/usr_intf/touchy/mdi.py:84 +#: src/emc/usr_intf/touchy/mdi.py:85 src/emc/usr_intf/gscreen/mdi.py:84 msgid "Bore with dwell" msgstr "Alésage avec tempo" -#: src/emc/usr_intf/touchy/mdi.py:85 emc/usr_intf/touchy/mdi.py:85 +#: src/emc/usr_intf/touchy/mdi.py:86 src/emc/usr_intf/gscreen/mdi.py:85 msgid "Offset all coordinate systems" msgstr "Décale toutes les coordonnées système" -#: src/emc/usr_intf/touchy/mdi.py:86 emc/usr_intf/touchy/mdi.py:86 +#: src/emc/usr_intf/touchy/mdi.py:87 src/emc/usr_intf/gscreen/mdi.py:86 msgid "CSS Mode" msgstr "Mode CSS" #: src/emc/usr_intf/touchy/emc_interface.py:410 -#: emc/usr_intf/touchy/emc_interface.py:410 msgid "CCW" msgstr "Sens anti-horaire" #: src/emc/usr_intf/touchy/emc_interface.py:410 -#: emc/usr_intf/touchy/emc_interface.py:410 msgid "Stopped" msgstr "Stoppé" #: src/emc/usr_intf/touchy/emc_interface.py:410 -#: emc/usr_intf/touchy/emc_interface.py:410 msgid "CW" msgstr "Sens horaire" -#: src/emc/usr_intf/touchy/touchy.glade:7 emc/usr_intf/touchy/touchy.glade:7 +#: src/emc/usr_intf/touchy/touchy.glade:7 msgid "LinuxCNC/Touchy" msgstr "LinuxCNC/Touchy" -#: src/emc/usr_intf/touchy/touchy.glade:11 emc/usr_intf/touchy/touchy.glade:11 +#. # Touchy is Copyright (c) 2009 Chris Radek # # Touchy 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 2 of the License, or # (at your option) any later version. # # Touchy 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. +#: src/emc/usr_intf/touchy/touchy.glade:11 msgid "window1" msgstr "window1" -#: src/emc/usr_intf/touchy/touchy.glade:31 emc/usr_intf/touchy/touchy.glade:31 +#: src/emc/usr_intf/touchy/touchy.glade:31 msgid "xa" msgstr "xa" -#: src/emc/usr_intf/touchy/touchy.glade:44 emc/usr_intf/touchy/touchy.glade:44 +#: src/emc/usr_intf/touchy/touchy.glade:44 msgid "xd" msgstr "xd" -#: src/emc/usr_intf/touchy/touchy.glade:57 emc/usr_intf/touchy/touchy.glade:57 +#: src/emc/usr_intf/touchy/touchy.glade:57 msgid "yr" msgstr "yr" -#: src/emc/usr_intf/touchy/touchy.glade:68 emc/usr_intf/touchy/touchy.glade:68 +#: src/emc/usr_intf/touchy/touchy.glade:68 msgid "ya" msgstr "ya" -#: src/emc/usr_intf/touchy/touchy.glade:81 emc/usr_intf/touchy/touchy.glade:81 +#: src/emc/usr_intf/touchy/touchy.glade:81 msgid "yd" msgstr "yd" -#: src/emc/usr_intf/touchy/touchy.glade:94 emc/usr_intf/touchy/touchy.glade:94 +#: src/emc/usr_intf/touchy/touchy.glade:94 msgid "zr" msgstr "zr" #: src/emc/usr_intf/touchy/touchy.glade:105 -#: emc/usr_intf/touchy/touchy.glade:105 msgid "za" msgstr "za" #: src/emc/usr_intf/touchy/touchy.glade:118 -#: emc/usr_intf/touchy/touchy.glade:118 msgid "zd" msgstr "zd" #: src/emc/usr_intf/touchy/touchy.glade:131 -#: emc/usr_intf/touchy/touchy.glade:131 +#: src/emc/usr_intf/gscreen/gscreen.glade:85 +#: src/emc/usr_intf/gscreen/gscreen.glade:213 +#: src/emc/usr_intf/gscreen/gscreen.glade:343 +#: src/emc/usr_intf/gscreen/gscreen.glade:471 +#: src/emc/usr_intf/gscreen/gscreen.glade:599 +#: src/emc/usr_intf/gscreen/gscreen.glade:727 +#: src/emc/usr_intf/gscreen/gscreen.glade:855 +#: src/emc/usr_intf/gscreen/gscreen.glade:983 +#: src/emc/usr_intf/gscreen/gscreen.glade:1111 msgid "DTG" msgstr "DTG" #: src/emc/usr_intf/touchy/touchy.glade:143 -#: src/emc/usr_intf/pncconf/pncconf.glade:59755 -#: emc/usr_intf/touchy/touchy.glade:143 -#: emc/usr_intf/pncconf/pncconf.glade:59755 -#: src/emc/usr_intf/pncconf/pncconf.glade:66728 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Absolute" msgstr "Absolu" #: src/emc/usr_intf/touchy/touchy.glade:165 -#: emc/usr_intf/touchy/touchy.glade:165 msgid "xr" msgstr "xr" #: src/emc/usr_intf/touchy/touchy.glade:176 -#: emc/usr_intf/touchy/touchy.glade:176 msgid "ar" msgstr "ar" #: src/emc/usr_intf/touchy/touchy.glade:188 -#: emc/usr_intf/touchy/touchy.glade:188 msgid "br" msgstr "br" #: src/emc/usr_intf/touchy/touchy.glade:200 -#: emc/usr_intf/touchy/touchy.glade:200 msgid "cr" msgstr "cr" #: src/emc/usr_intf/touchy/touchy.glade:212 -#: emc/usr_intf/touchy/touchy.glade:212 msgid "ur" msgstr "ur" #: src/emc/usr_intf/touchy/touchy.glade:224 -#: emc/usr_intf/touchy/touchy.glade:224 msgid "vr" msgstr "vr" #: src/emc/usr_intf/touchy/touchy.glade:236 -#: emc/usr_intf/touchy/touchy.glade:236 msgid "wr" msgstr "wr" #: src/emc/usr_intf/touchy/touchy.glade:248 -#: emc/usr_intf/touchy/touchy.glade:248 msgid "aa" msgstr "aa" #: src/emc/usr_intf/touchy/touchy.glade:262 -#: emc/usr_intf/touchy/touchy.glade:262 msgid "ba" msgstr "ba" #: src/emc/usr_intf/touchy/touchy.glade:276 -#: emc/usr_intf/touchy/touchy.glade:276 msgid "ca" msgstr "ca" #: src/emc/usr_intf/touchy/touchy.glade:290 -#: emc/usr_intf/touchy/touchy.glade:290 msgid "ua" msgstr "ua" #: src/emc/usr_intf/touchy/touchy.glade:304 -#: emc/usr_intf/touchy/touchy.glade:304 msgid "va" msgstr "va" #: src/emc/usr_intf/touchy/touchy.glade:318 -#: emc/usr_intf/touchy/touchy.glade:318 msgid "wa" msgstr "wa" #: src/emc/usr_intf/touchy/touchy.glade:332 -#: emc/usr_intf/touchy/touchy.glade:332 msgid "ad" msgstr "ajoute" #: src/emc/usr_intf/touchy/touchy.glade:346 -#: emc/usr_intf/touchy/touchy.glade:346 msgid "bd" msgstr "bd" #: src/emc/usr_intf/touchy/touchy.glade:360 -#: emc/usr_intf/touchy/touchy.glade:360 msgid "cd" msgstr "cd" #: src/emc/usr_intf/touchy/touchy.glade:374 -#: emc/usr_intf/touchy/touchy.glade:374 msgid "ud" msgstr "ud" #: src/emc/usr_intf/touchy/touchy.glade:388 -#: emc/usr_intf/touchy/touchy.glade:388 msgid "vd" msgstr "vd" #: src/emc/usr_intf/touchy/touchy.glade:402 -#: emc/usr_intf/touchy/touchy.glade:402 msgid "wd" msgstr "wd" #: src/emc/usr_intf/touchy/touchy.glade:448 -#: emc/usr_intf/touchy/touchy.glade:448 msgid "Estop Reset" msgstr "Réinitialisation A/U" #: src/emc/usr_intf/touchy/touchy.glade:459 -#: emc/usr_intf/touchy/touchy.glade:459 +#: src/emc/usr_intf/stepconf/pport1.glade:21 +#: src/emc/usr_intf/stepconf/pport2.glade:1409 +#: src/emc/usr_intf/gscreen/gscreen.glade:2442 msgid "Estop" msgstr "A/U" #: src/emc/usr_intf/touchy/touchy.glade:475 -#: emc/usr_intf/touchy/touchy.glade:475 msgid "Machine On" msgstr "Marche machine" #: src/emc/usr_intf/touchy/touchy.glade:490 -#: emc/usr_intf/touchy/touchy.glade:490 msgid "Machine Off" msgstr "Arrêt machine" #: src/emc/usr_intf/touchy/touchy.glade:531 -#: emc/usr_intf/touchy/touchy.glade:531 msgid "Power" msgstr "Puissance" #: src/emc/usr_intf/touchy/touchy.glade:562 -#: emc/usr_intf/touchy/touchy.glade:562 msgid "Unhome All" msgstr "Annulation OM de tous les axes" #: src/emc/usr_intf/touchy/touchy.glade:588 -#: emc/usr_intf/touchy/touchy.glade:588 msgid "Home Selected" msgstr "Prise d'origine axe courant" #: src/emc/usr_intf/touchy/touchy.glade:603 -#: emc/usr_intf/touchy/touchy.glade:603 msgid "Unhome Selected" msgstr "Annulation OM axe courant" #: src/emc/usr_intf/touchy/touchy.glade:625 -#: emc/usr_intf/touchy/touchy.glade:625 msgid "Homing" msgstr "Prise d'origine" #: src/emc/usr_intf/touchy/touchy.glade:644 -#: emc/usr_intf/touchy/touchy.glade:644 msgid "Startup" msgstr "Démarrage" #: src/emc/usr_intf/touchy/touchy.glade:727 -#: emc/usr_intf/touchy/touchy.glade:727 msgid "G" msgstr "G" #: src/emc/usr_intf/touchy/touchy.glade:929 -#: emc/usr_intf/touchy/touchy.glade:929 msgid "." msgstr "." #: src/emc/usr_intf/touchy/touchy.glade:963 -#: src/emc/usr_intf/pncconf/pncconf.glade:60883 -#: src/emc/usr_intf/pncconf/pncconf.glade:60895 -#: src/emc/usr_intf/pncconf/pncconf.glade:61017 -#: src/emc/usr_intf/pncconf/pncconf.glade:61029 -#: src/emc/usr_intf/pncconf/pncconf.glade:61041 -#: src/emc/usr_intf/pncconf/pncconf.glade:61053 -#: src/emc/usr_intf/pncconf/pncconf.glade:61065 -#: src/emc/usr_intf/pncconf/pncconf.glade:61077 -#: src/emc/usr_intf/pncconf/pncconf.glade:62040 -#: src/emc/usr_intf/pncconf/pncconf.glade:62052 -#: src/emc/usr_intf/pncconf/pncconf.glade:62064 -#: src/emc/usr_intf/pncconf/pncconf.glade:62076 -#: src/emc/usr_intf/pncconf/pncconf.glade:62088 -#: src/emc/usr_intf/pncconf/pncconf.glade:62100 -#: src/emc/usr_intf/pncconf/pncconf.glade:62222 -#: src/emc/usr_intf/pncconf/pncconf.glade:62234 -#: src/emc/usr_intf/pncconf/pncconf.glade:63069 -#: src/emc/usr_intf/pncconf/pncconf.glade:63081 -#: src/emc/usr_intf/pncconf/pncconf.glade:63203 -#: src/emc/usr_intf/pncconf/pncconf.glade:63215 -#: src/emc/usr_intf/pncconf/pncconf.glade:63227 -#: src/emc/usr_intf/pncconf/pncconf.glade:63239 -#: src/emc/usr_intf/pncconf/pncconf.glade:63251 -#: src/emc/usr_intf/pncconf/pncconf.glade:63263 -#: src/emc/usr_intf/pncconf/pncconf.glade:64226 -#: src/emc/usr_intf/pncconf/pncconf.glade:64238 -#: src/emc/usr_intf/pncconf/pncconf.glade:64250 -#: src/emc/usr_intf/pncconf/pncconf.glade:64262 -#: src/emc/usr_intf/pncconf/pncconf.glade:64274 -#: src/emc/usr_intf/pncconf/pncconf.glade:64286 -#: src/emc/usr_intf/pncconf/pncconf.glade:64408 -#: src/emc/usr_intf/pncconf/pncconf.glade:64420 -#: src/emc/usr_intf/pncconf/pncconf.glade:65231 -#: src/emc/usr_intf/pncconf/pncconf.glade:65243 -#: src/emc/usr_intf/pncconf/pncconf.glade:65359 -#: src/emc/usr_intf/pncconf/pncconf.glade:65371 -#: src/emc/usr_intf/pncconf/pncconf.glade:65383 -#: src/emc/usr_intf/pncconf/pncconf.glade:65395 -#: src/emc/usr_intf/pncconf/pncconf.glade:65407 -#: src/emc/usr_intf/pncconf/pncconf.glade:65419 -#: src/emc/usr_intf/pncconf/pncconf.glade:67091 -#: emc/usr_intf/touchy/touchy.glade:963 -#: emc/usr_intf/pncconf/pncconf.glade:60883 -#: emc/usr_intf/pncconf/pncconf.glade:60895 -#: emc/usr_intf/pncconf/pncconf.glade:61017 -#: emc/usr_intf/pncconf/pncconf.glade:61029 -#: emc/usr_intf/pncconf/pncconf.glade:61041 -#: emc/usr_intf/pncconf/pncconf.glade:61053 -#: emc/usr_intf/pncconf/pncconf.glade:61065 -#: emc/usr_intf/pncconf/pncconf.glade:61077 -#: emc/usr_intf/pncconf/pncconf.glade:62040 -#: emc/usr_intf/pncconf/pncconf.glade:62052 -#: emc/usr_intf/pncconf/pncconf.glade:62064 -#: emc/usr_intf/pncconf/pncconf.glade:62076 -#: emc/usr_intf/pncconf/pncconf.glade:62088 -#: emc/usr_intf/pncconf/pncconf.glade:62100 -#: emc/usr_intf/pncconf/pncconf.glade:62222 -#: emc/usr_intf/pncconf/pncconf.glade:62234 -#: emc/usr_intf/pncconf/pncconf.glade:63069 -#: emc/usr_intf/pncconf/pncconf.glade:63081 -#: emc/usr_intf/pncconf/pncconf.glade:63203 -#: emc/usr_intf/pncconf/pncconf.glade:63215 -#: emc/usr_intf/pncconf/pncconf.glade:63227 -#: emc/usr_intf/pncconf/pncconf.glade:63239 -#: emc/usr_intf/pncconf/pncconf.glade:63251 -#: emc/usr_intf/pncconf/pncconf.glade:63263 -#: emc/usr_intf/pncconf/pncconf.glade:64226 -#: emc/usr_intf/pncconf/pncconf.glade:64238 -#: emc/usr_intf/pncconf/pncconf.glade:64250 -#: emc/usr_intf/pncconf/pncconf.glade:64262 -#: emc/usr_intf/pncconf/pncconf.glade:64274 -#: emc/usr_intf/pncconf/pncconf.glade:64286 -#: emc/usr_intf/pncconf/pncconf.glade:64408 -#: emc/usr_intf/pncconf/pncconf.glade:64420 -#: emc/usr_intf/pncconf/pncconf.glade:65231 -#: emc/usr_intf/pncconf/pncconf.glade:65243 -#: emc/usr_intf/pncconf/pncconf.glade:65359 -#: emc/usr_intf/pncconf/pncconf.glade:65371 -#: emc/usr_intf/pncconf/pncconf.glade:65383 -#: emc/usr_intf/pncconf/pncconf.glade:65395 -#: emc/usr_intf/pncconf/pncconf.glade:65407 -#: emc/usr_intf/pncconf/pncconf.glade:65419 -#: emc/usr_intf/pncconf/pncconf.glade:67091 -#: src/emc/usr_intf/pncconf/pncconf.glade:67859 -#: src/emc/usr_intf/pncconf/pncconf.glade:67871 -#: src/emc/usr_intf/pncconf/pncconf.glade:67993 -#: src/emc/usr_intf/pncconf/pncconf.glade:68005 -#: src/emc/usr_intf/pncconf/pncconf.glade:68017 -#: src/emc/usr_intf/pncconf/pncconf.glade:68029 -#: src/emc/usr_intf/pncconf/pncconf.glade:68041 -#: src/emc/usr_intf/pncconf/pncconf.glade:68053 -#: src/emc/usr_intf/pncconf/pncconf.glade:69016 -#: src/emc/usr_intf/pncconf/pncconf.glade:69028 -#: src/emc/usr_intf/pncconf/pncconf.glade:69040 -#: src/emc/usr_intf/pncconf/pncconf.glade:69052 -#: src/emc/usr_intf/pncconf/pncconf.glade:69064 -#: src/emc/usr_intf/pncconf/pncconf.glade:69076 -#: src/emc/usr_intf/pncconf/pncconf.glade:69198 -#: src/emc/usr_intf/pncconf/pncconf.glade:69210 -#: src/emc/usr_intf/pncconf/pncconf.glade:70045 -#: src/emc/usr_intf/pncconf/pncconf.glade:70057 -#: src/emc/usr_intf/pncconf/pncconf.glade:70179 -#: src/emc/usr_intf/pncconf/pncconf.glade:70191 -#: src/emc/usr_intf/pncconf/pncconf.glade:70203 -#: src/emc/usr_intf/pncconf/pncconf.glade:70215 -#: src/emc/usr_intf/pncconf/pncconf.glade:70227 -#: src/emc/usr_intf/pncconf/pncconf.glade:70239 -#: src/emc/usr_intf/pncconf/pncconf.glade:71202 -#: src/emc/usr_intf/pncconf/pncconf.glade:71214 -#: src/emc/usr_intf/pncconf/pncconf.glade:71226 -#: src/emc/usr_intf/pncconf/pncconf.glade:71238 -#: src/emc/usr_intf/pncconf/pncconf.glade:71250 -#: src/emc/usr_intf/pncconf/pncconf.glade:71262 -#: src/emc/usr_intf/pncconf/pncconf.glade:71384 -#: src/emc/usr_intf/pncconf/pncconf.glade:71396 -#: src/emc/usr_intf/pncconf/pncconf.glade:72207 -#: src/emc/usr_intf/pncconf/pncconf.glade:72219 -#: src/emc/usr_intf/pncconf/pncconf.glade:72335 -#: src/emc/usr_intf/pncconf/pncconf.glade:72347 -#: src/emc/usr_intf/pncconf/pncconf.glade:72359 -#: src/emc/usr_intf/pncconf/pncconf.glade:72371 -#: src/emc/usr_intf/pncconf/pncconf.glade:72383 -#: src/emc/usr_intf/pncconf/pncconf.glade:72395 -#: src/emc/usr_intf/pncconf/pncconf.glade:74094 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "0" msgstr "0" #: src/emc/usr_intf/touchy/touchy.glade:980 -#: emc/usr_intf/touchy/touchy.glade:980 msgid "3" msgstr "3" #: src/emc/usr_intf/touchy/touchy.glade:997 -#: emc/usr_intf/touchy/touchy.glade:997 msgid "2" msgstr "2" #: src/emc/usr_intf/touchy/touchy.glade:1014 -#: emc/usr_intf/touchy/touchy.glade:1014 msgid "1" msgstr "1" #: src/emc/usr_intf/touchy/touchy.glade:1031 -#: emc/usr_intf/touchy/touchy.glade:1031 msgid "6" msgstr "6" #: src/emc/usr_intf/touchy/touchy.glade:1048 -#: emc/usr_intf/touchy/touchy.glade:1048 msgid "5" msgstr "5" #: src/emc/usr_intf/touchy/touchy.glade:1065 -#: emc/usr_intf/touchy/touchy.glade:1065 msgid "4" msgstr "4" #: src/emc/usr_intf/touchy/touchy.glade:1082 -#: emc/usr_intf/touchy/touchy.glade:1082 msgid "9" msgstr "9" #: src/emc/usr_intf/touchy/touchy.glade:1097 -#: emc/usr_intf/touchy/touchy.glade:1097 msgid "8" msgstr "8" #: src/emc/usr_intf/touchy/touchy.glade:1112 -#: emc/usr_intf/touchy/touchy.glade:1112 msgid "7" msgstr "7" #: src/emc/usr_intf/touchy/touchy.glade:1297 -#: emc/usr_intf/touchy/touchy.glade:1297 msgid "Flood On" msgstr "Marche arrosage" #: src/emc/usr_intf/touchy/touchy.glade:1308 -#: emc/usr_intf/touchy/touchy.glade:1308 msgid "Flood Off" msgstr "Arrêt arrosage" #: src/emc/usr_intf/touchy/touchy.glade:1324 -#: emc/usr_intf/touchy/touchy.glade:1324 msgid "Mist On" msgstr "Marche gouttelettes" #: src/emc/usr_intf/touchy/touchy.glade:1339 -#: emc/usr_intf/touchy/touchy.glade:1339 msgid "Mist Off" msgstr "Arrêt gouttelettes" #: src/emc/usr_intf/touchy/touchy.glade:1362 -#: emc/usr_intf/touchy/touchy.glade:1362 msgid "Coolant" msgstr "Arrosage" #: src/emc/usr_intf/touchy/touchy.glade:1448 -#: emc/usr_intf/touchy/touchy.glade:1448 msgid "Spindle Off" msgstr "Arrêt broche" #: src/emc/usr_intf/touchy/touchy.glade:1501 #: src/emc/usr_intf/touchy/touchy.glade:2578 -#: emc/usr_intf/touchy/touchy.glade:1501 emc/usr_intf/touchy/touchy.glade:2578 msgid "Spindle speed:" msgstr "Vitesse de broche:" #: src/emc/usr_intf/touchy/touchy.glade:1513 #: src/emc/usr_intf/touchy/touchy.glade:2707 -#: emc/usr_intf/touchy/touchy.glade:1513 emc/usr_intf/touchy/touchy.glade:2707 msgid "label26" msgstr "label26" #: src/emc/usr_intf/touchy/touchy.glade:1539 -#: emc/usr_intf/touchy/touchy.glade:1539 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4226 msgid "Spindle" msgstr "Broche" #: src/emc/usr_intf/touchy/touchy.glade:1597 -#: emc/usr_intf/touchy/touchy.glade:1597 msgid "file.ngc" msgstr "fichier.ngc" @@ -6459,95 +7576,62 @@ msgstr "fichier.ngc" #: src/emc/usr_intf/touchy/touchy.glade:2137 #: src/emc/usr_intf/touchy/touchy.glade:2157 #: src/emc/usr_intf/touchy/touchy.glade:2177 -#: emc/usr_intf/touchy/touchy.glade:1812 emc/usr_intf/touchy/touchy.glade:2017 -#: emc/usr_intf/touchy/touchy.glade:2037 emc/usr_intf/touchy/touchy.glade:2057 -#: emc/usr_intf/touchy/touchy.glade:2077 emc/usr_intf/touchy/touchy.glade:2097 -#: emc/usr_intf/touchy/touchy.glade:2117 emc/usr_intf/touchy/touchy.glade:2137 -#: emc/usr_intf/touchy/touchy.glade:2157 emc/usr_intf/touchy/touchy.glade:2177 msgid "M2" msgstr "M2" #: src/emc/usr_intf/touchy/touchy.glade:2244 #: src/emc/usr_intf/touchy/touchy.glade:2374 -#: emc/usr_intf/touchy/touchy.glade:2244 emc/usr_intf/touchy/touchy.glade:2374 msgid "Page" msgstr "Page" #: src/emc/usr_intf/touchy/touchy.glade:2308 -#: emc/usr_intf/touchy/touchy.glade:2308 msgid "Start Point" msgstr "Start Point" #: src/emc/usr_intf/touchy/touchy.glade:2452 -#: emc/usr_intf/touchy/touchy.glade:2452 msgid "Loaded File" msgstr "Fichier chargé" #: src/emc/usr_intf/touchy/touchy.glade:2488 -#: emc/usr_intf/touchy/touchy.glade:2488 msgid "Loaded file:" msgstr "Fichier chargé:" #: src/emc/usr_intf/touchy/touchy.glade:2499 -#: emc/usr_intf/touchy/touchy.glade:2499 msgid "Interpreted line:" msgstr "Ligne interprétée" #: src/emc/usr_intf/touchy/touchy.glade:2513 -#: emc/usr_intf/touchy/touchy.glade:2513 msgid "Distance:" msgstr "Distance:" #: src/emc/usr_intf/touchy/touchy.glade:2526 -#: src/emc/usr_intf/stepconf/stepconf.glade:4148 -#: src/emc/usr_intf/pncconf/pncconf.glade:60476 -#: src/emc/usr_intf/pncconf/pncconf.glade:61571 -#: src/emc/usr_intf/pncconf/pncconf.glade:62664 -#: src/emc/usr_intf/pncconf/pncconf.glade:63757 -#: src/emc/usr_intf/pncconf/pncconf.glade:64856 -#: emc/usr_intf/touchy/touchy.glade:2526 -#: emc/usr_intf/stepconf/stepconf.glade:4148 -#: emc/usr_intf/pncconf/pncconf.glade:60476 -#: emc/usr_intf/pncconf/pncconf.glade:61571 -#: emc/usr_intf/pncconf/pncconf.glade:62664 -#: emc/usr_intf/pncconf/pncconf.glade:63757 -#: emc/usr_intf/pncconf/pncconf.glade:64856 -#: src/emc/usr_intf/pncconf/pncconf.glade:67452 -#: src/emc/usr_intf/pncconf/pncconf.glade:68547 -#: src/emc/usr_intf/pncconf/pncconf.glade:69640 -#: src/emc/usr_intf/pncconf/pncconf.glade:70733 -#: src/emc/usr_intf/pncconf/pncconf.glade:71832 +#: src/emc/usr_intf/stepconf/main_page.glade:23 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Velocity:" msgstr "Vitesse:" #: src/emc/usr_intf/touchy/touchy.glade:2539 -#: emc/usr_intf/touchy/touchy.glade:2539 msgid "Delay:" msgstr "Délais:" #: src/emc/usr_intf/touchy/touchy.glade:2552 -#: emc/usr_intf/touchy/touchy.glade:2552 msgid "On limit switch:" msgstr "Sur un contact de limite" #: src/emc/usr_intf/touchy/touchy.glade:2565 -#: emc/usr_intf/touchy/touchy.glade:2565 msgid "Spindle direction:" msgstr "Direction broche:" #: src/emc/usr_intf/touchy/touchy.glade:2591 -#: emc/usr_intf/touchy/touchy.glade:2591 msgid "Loaded tool:" msgstr "Outil chargé" #: src/emc/usr_intf/touchy/touchy.glade:2604 #: src/emc/usr_intf/touchy/touchy.glade:2955 -#: emc/usr_intf/touchy/touchy.glade:2604 emc/usr_intf/touchy/touchy.glade:2955 msgid "label19" msgstr "label19" #: src/emc/usr_intf/touchy/touchy.glade:2617 -#: emc/usr_intf/touchy/touchy.glade:2617 msgid "label20" msgstr "label20" @@ -6556,69 +7640,54 @@ msgstr "label20" #: src/emc/usr_intf/touchy/touchy.glade:2808 #: src/emc/usr_intf/touchy/touchy.glade:2912 #: src/emc/usr_intf/touchy/touchy.glade:2927 -#: emc/usr_intf/touchy/touchy.glade:2632 emc/usr_intf/touchy/touchy.glade:2779 -#: emc/usr_intf/touchy/touchy.glade:2808 emc/usr_intf/touchy/touchy.glade:2912 -#: emc/usr_intf/touchy/touchy.glade:2927 msgid "label21" msgstr "label21" #: src/emc/usr_intf/touchy/touchy.glade:2647 -#: emc/usr_intf/touchy/touchy.glade:2647 msgid "label22" msgstr "label22" #: src/emc/usr_intf/touchy/touchy.glade:2662 -#: emc/usr_intf/touchy/touchy.glade:2662 msgid "label23" msgstr "label23" #: src/emc/usr_intf/touchy/touchy.glade:2677 -#: emc/usr_intf/touchy/touchy.glade:2677 msgid "label24" msgstr "label24" #: src/emc/usr_intf/touchy/touchy.glade:2692 -#: emc/usr_intf/touchy/touchy.glade:2692 msgid "label25" msgstr "label25" #: src/emc/usr_intf/touchy/touchy.glade:2722 -#: emc/usr_intf/touchy/touchy.glade:2722 msgid "label27" msgstr "label27" #: src/emc/usr_intf/touchy/touchy.glade:2737 -#: emc/usr_intf/touchy/touchy.glade:2737 msgid "Prepped tool:" msgstr "Outil préparé:" #: src/emc/usr_intf/touchy/touchy.glade:2750 -#: emc/usr_intf/touchy/touchy.glade:2750 msgid "label28" msgstr "label28" #: src/emc/usr_intf/touchy/touchy.glade:2765 -#: emc/usr_intf/touchy/touchy.glade:2765 msgid "Running line:" msgstr "Ligne courante:" #: src/emc/usr_intf/touchy/touchy.glade:2794 -#: emc/usr_intf/touchy/touchy.glade:2794 msgid "XY Rotation:" msgstr "Rotation XY:" #: src/emc/usr_intf/touchy/touchy.glade:2823 -#: emc/usr_intf/touchy/touchy.glade:2823 msgid "Tool length:" msgstr "Longueur d'outils" #: src/emc/usr_intf/touchy/touchy.glade:2836 -#: emc/usr_intf/touchy/touchy.glade:2836 msgid "label52" msgstr "label52" #: src/emc/usr_intf/touchy/touchy.glade:2851 -#: emc/usr_intf/touchy/touchy.glade:2851 msgid "" "G1 G2 G3\n" "M1 M2 M3\n" @@ -6629,32 +7698,26 @@ msgstr "" "F1 S1" #: src/emc/usr_intf/touchy/touchy.glade:2870 -#: emc/usr_intf/touchy/touchy.glade:2870 msgid "Active codes:" msgstr "Codes actifs:" #: src/emc/usr_intf/touchy/touchy.glade:2883 -#: emc/usr_intf/touchy/touchy.glade:2883 msgid "G5x Offset:" msgstr "Offset G5x:" #: src/emc/usr_intf/touchy/touchy.glade:2898 -#: emc/usr_intf/touchy/touchy.glade:2898 msgid "G92 Offset:" msgstr "Offset G92:" #: src/emc/usr_intf/touchy/touchy.glade:2942 -#: emc/usr_intf/touchy/touchy.glade:2942 msgid "Loaded file lines:" msgstr "Lignes fichier chargé:" #: src/emc/usr_intf/touchy/touchy.glade:2971 -#: emc/usr_intf/touchy/touchy.glade:2971 msgid "Pockets:" msgstr "Poches:" #: src/emc/usr_intf/touchy/touchy.glade:2984 -#: emc/usr_intf/touchy/touchy.glade:2984 msgid "" "1\n" "2\n" @@ -6665,217 +7728,184 @@ msgstr "" "3" #: src/emc/usr_intf/touchy/touchy.glade:3009 -#: emc/usr_intf/touchy/touchy.glade:3009 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6414 msgid "Status" msgstr "Status:" #: src/emc/usr_intf/touchy/touchy.glade:3038 -#: emc/usr_intf/touchy/touchy.glade:3038 msgid "Control Font:" msgstr "Contrôle police:" #: src/emc/usr_intf/touchy/touchy.glade:3050 -#: emc/usr_intf/touchy/touchy.glade:3050 msgid "DRO Font:" msgstr "Police DRO:" #: src/emc/usr_intf/touchy/touchy.glade:3064 -#: emc/usr_intf/touchy/touchy.glade:3064 msgid "Error Font:" msgstr "Police erreur:" #: src/emc/usr_intf/touchy/touchy.glade:3081 -#: emc/usr_intf/touchy/touchy.glade:3081 msgid "ControlFont" msgstr "Police Contrôle" #: src/emc/usr_intf/touchy/touchy.glade:3100 -#: emc/usr_intf/touchy/touchy.glade:3100 msgid "DRO Font" msgstr "Police DRO" #: src/emc/usr_intf/touchy/touchy.glade:3121 -#: emc/usr_intf/touchy/touchy.glade:3121 msgid "Error Font" msgstr "Police erreur" #: src/emc/usr_intf/touchy/touchy.glade:3139 -#: emc/usr_intf/touchy/touchy.glade:3139 msgid "Listing Font:" msgstr "Police listing:" #: src/emc/usr_intf/touchy/touchy.glade:3156 -#: emc/usr_intf/touchy/touchy.glade:3156 msgid "Listing Font" msgstr "Police listing" #: src/emc/usr_intf/touchy/touchy.glade:3176 -#: emc/usr_intf/touchy/touchy.glade:3176 msgid "Hide pointer" msgstr "Cacher pointeur" #: src/emc/usr_intf/touchy/touchy.glade:3187 -#: emc/usr_intf/touchy/touchy.glade:3187 msgid "Show pointer" msgstr "Afficher pointeur" #: src/emc/usr_intf/touchy/touchy.glade:3214 -#: emc/usr_intf/touchy/touchy.glade:3214 msgid "Theme:" msgstr "Thème:" #: src/emc/usr_intf/touchy/touchy.glade:3228 -#: emc/usr_intf/touchy/touchy.glade:3228 msgid "default\n" msgstr "défaut\n" #: src/emc/usr_intf/touchy/touchy.glade:3252 -#: emc/usr_intf/touchy/touchy.glade:3252 msgid "Display Options" msgstr "Options d'affichage" #: src/emc/usr_intf/touchy/touchy.glade:3286 -#: emc/usr_intf/touchy/touchy.glade:3286 +#: src/emc/usr_intf/stepconf/base.glade:867 +#: src/emc/usr_intf/gscreen/gscreen.glade:3664 msgid "Inch" msgstr "pouce" #: src/emc/usr_intf/touchy/touchy.glade:3349 -#: emc/usr_intf/touchy/touchy.glade:3349 msgid "Position Readout" msgstr "Afficheur position" #: src/emc/usr_intf/touchy/touchy.glade:3379 -#: emc/usr_intf/touchy/touchy.glade:3379 msgid "Workpiece" msgstr "Pièce" #: src/emc/usr_intf/touchy/touchy.glade:3390 -#: emc/usr_intf/touchy/touchy.glade:3390 msgid "Fixture" msgstr "Porte-pièce" #: src/emc/usr_intf/touchy/touchy.glade:3410 -#: emc/usr_intf/touchy/touchy.glade:3410 msgid "Tool Setting" msgstr "Ajustement outil" #: src/emc/usr_intf/touchy/touchy.glade:3441 -#: emc/usr_intf/touchy/touchy.glade:3441 msgid "Delete / lines" msgstr "Efface / lignes" #: src/emc/usr_intf/touchy/touchy.glade:3456 -#: emc/usr_intf/touchy/touchy.glade:3456 msgid "Keep / lines" msgstr "Sauter / lignes" #: src/emc/usr_intf/touchy/touchy.glade:3473 -#: emc/usr_intf/touchy/touchy.glade:3473 msgid "Pause on M1" msgstr "Pause sur M1" #: src/emc/usr_intf/touchy/touchy.glade:3484 -#: emc/usr_intf/touchy/touchy.glade:3484 msgid "Ignore M1" msgstr "Ignorer M1" #: src/emc/usr_intf/touchy/touchy.glade:3504 -#: emc/usr_intf/touchy/touchy.glade:3504 msgid "Program Options" msgstr "Options de programme" #: src/emc/usr_intf/touchy/touchy.glade:3531 -#: emc/usr_intf/touchy/touchy.glade:3531 +#: src/emc/usr_intf/gscreen/gscreen.glade:2200 msgid "Preferences" msgstr "Préférences" #: src/emc/usr_intf/touchy/touchy.glade:3567 -#: emc/usr_intf/touchy/touchy.glade:3567 +#: src/emc/usr_intf/gscreen/gscreen.glade:1425 msgid "FO: 100%" msgstr "FO: 100%" #: src/emc/usr_intf/touchy/touchy.glade:3582 -#: emc/usr_intf/touchy/touchy.glade:3582 +#: src/emc/usr_intf/gscreen/gscreen.glade:1437 msgid "SO: 100%" msgstr "SO: 100%" #: src/emc/usr_intf/touchy/touchy.glade:3596 -#: emc/usr_intf/touchy/touchy.glade:3596 msgid "MV: 100" msgstr "MV: 100" #: src/emc/usr_intf/touchy/touchy.glade:3610 -#: emc/usr_intf/touchy/touchy.glade:3610 msgid "Jogging" msgstr "Jog" -#: src/emc/usr_intf/touchy/touchy.glade:3637 -#: emc/usr_intf/touchy/touchy.glade:3637 +#: src/emc/usr_intf/touchy/touchy.glade:3624 +msgid "Start Point" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:3651 msgid ".01" msgstr ".01" -#: src/emc/usr_intf/touchy/touchy.glade:3650 -#: emc/usr_intf/touchy/touchy.glade:3650 +#: src/emc/usr_intf/touchy/touchy.glade:3664 msgid ".001" msgstr ".001" -#: src/emc/usr_intf/touchy/touchy.glade:3666 -#: emc/usr_intf/touchy/touchy.glade:3666 +#: src/emc/usr_intf/touchy/touchy.glade:3680 msgid ".0001" msgstr ".0001" -#: src/emc/usr_intf/touchy/touchy.glade:3694 -#: emc/usr_intf/touchy/touchy.glade:3694 +#: src/emc/usr_intf/touchy/touchy.glade:3708 msgid " X " msgstr " X " -#: src/emc/usr_intf/touchy/touchy.glade:3706 -#: emc/usr_intf/touchy/touchy.glade:3706 +#: src/emc/usr_intf/touchy/touchy.glade:3720 msgid " Y " msgstr " Y " -#: src/emc/usr_intf/touchy/touchy.glade:3721 -#: emc/usr_intf/touchy/touchy.glade:3721 +#: src/emc/usr_intf/touchy/touchy.glade:3735 msgid " Z " msgstr " Z " -#: src/emc/usr_intf/touchy/touchy.glade:3736 -#: emc/usr_intf/touchy/touchy.glade:3736 +#: src/emc/usr_intf/touchy/touchy.glade:3750 msgid " A " msgstr " A " -#: src/emc/usr_intf/touchy/touchy.glade:3752 -#: emc/usr_intf/touchy/touchy.glade:3752 +#: src/emc/usr_intf/touchy/touchy.glade:3766 msgid " B " msgstr " B " -#: src/emc/usr_intf/touchy/touchy.glade:3770 -#: emc/usr_intf/touchy/touchy.glade:3770 +#: src/emc/usr_intf/touchy/touchy.glade:3784 msgid " C " msgstr " C " -#: src/emc/usr_intf/touchy/touchy.glade:3788 -#: emc/usr_intf/touchy/touchy.glade:3788 +#: src/emc/usr_intf/touchy/touchy.glade:3802 msgid " U " msgstr " U " -#: src/emc/usr_intf/touchy/touchy.glade:3804 -#: emc/usr_intf/touchy/touchy.glade:3804 +#: src/emc/usr_intf/touchy/touchy.glade:3818 msgid " V " msgstr " V " -#: src/emc/usr_intf/touchy/touchy.glade:3822 -#: emc/usr_intf/touchy/touchy.glade:3822 +#: src/emc/usr_intf/touchy/touchy.glade:3836 msgid " W " msgstr " W " -#: src/emc/usr_intf/touchy/touchy.glade:3855 -#: emc/usr_intf/touchy/touchy.glade:3855 +#: src/emc/usr_intf/touchy/touchy.glade:3869 msgid "Handwheel" msgstr "Manivelle" -#: src/emc/usr_intf/stepconf/stepconf.py:53 -#: emc/usr_intf/stepconf/stepconf.py:53 +#: src/emc/usr_intf/stepconf/stepconf.py:57 msgid "" "Stepconf encountered an error. The following information may be useful in " "troubleshooting:\n" @@ -6885,461 +7915,519 @@ msgstr "" "identifier le dysfonctionnement:\n" "\n" -#: src/emc/usr_intf/stepconf/stepconf.py:70 -#: src/emc/usr_intf/pncconf/pncconf.py:133 -#: emc/usr_intf/stepconf/stepconf.py:70 emc/usr_intf/pncconf/pncconf.py:133 +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#, fuzzy +msgid "Stepconf" +msgstr "Pas à pas" + +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#: src/emc/usr_intf/stepconf/stepconf.py:217 +#: src/emc/usr_intf/stepconf/main_page.glade:557 +#: src/emc/usr_intf/gscreen/gscreen.py:3414 +#: src/emc/usr_intf/gscreen/gscreen.py:3415 +#: src/emc/usr_intf/gscreen/gscreen.glade:4043 +#, fuzzy +msgid "Start" +msgstr "Démarrage" + +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Base Information" +msgstr "Informations machine" + +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Parallel Port 1" +msgstr "Réglage port parallèle" + +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Parallel Port 2" +msgstr "Réglage port parallèle" + +#: src/emc/usr_intf/stepconf/stepconf.py:130 +#, fuzzy +msgid "Options" +msgstr "Options des interfaces graphiques" + +#: src/emc/usr_intf/stepconf/stepconf.py:130 +#, fuzzy +msgid "Axis X" +msgstr "Axe" + +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis Y" +msgstr "Axe" + +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis Z" +msgstr "Axe" + +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis A" +msgstr "Axe" + +#: src/emc/usr_intf/stepconf/stepconf.py:132 +#: src/emc/usr_intf/pncconf/pncconf.py:378 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +msgid "Spindle" +msgstr "Broche" + +#: src/emc/usr_intf/stepconf/stepconf.py:132 +msgid "Almost Done" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:136 +#: src/emc/usr_intf/pncconf/pncconf.py:135 msgid "Gecko 201" msgstr "Gecko 201" -#: src/emc/usr_intf/stepconf/stepconf.py:71 -#: src/emc/usr_intf/pncconf/pncconf.py:134 -#: emc/usr_intf/stepconf/stepconf.py:71 emc/usr_intf/pncconf/pncconf.py:134 +#: src/emc/usr_intf/stepconf/stepconf.py:137 +#: src/emc/usr_intf/pncconf/pncconf.py:136 msgid "Gecko 202" msgstr "Gecko 202" -#: src/emc/usr_intf/stepconf/stepconf.py:72 -#: src/emc/usr_intf/pncconf/pncconf.py:135 -#: emc/usr_intf/stepconf/stepconf.py:72 emc/usr_intf/pncconf/pncconf.py:135 +#: src/emc/usr_intf/stepconf/stepconf.py:138 +#: src/emc/usr_intf/pncconf/pncconf.py:137 msgid "Gecko 203v" msgstr "Gecko 203v" -#: src/emc/usr_intf/stepconf/stepconf.py:73 -#: src/emc/usr_intf/pncconf/pncconf.py:136 -#: emc/usr_intf/stepconf/stepconf.py:73 emc/usr_intf/pncconf/pncconf.py:136 +#: src/emc/usr_intf/stepconf/stepconf.py:139 +#: src/emc/usr_intf/pncconf/pncconf.py:138 msgid "Gecko 210" msgstr "Gecko 210" -#: src/emc/usr_intf/stepconf/stepconf.py:74 -#: src/emc/usr_intf/pncconf/pncconf.py:137 -#: emc/usr_intf/stepconf/stepconf.py:74 emc/usr_intf/pncconf/pncconf.py:137 +#: src/emc/usr_intf/stepconf/stepconf.py:140 +#: src/emc/usr_intf/pncconf/pncconf.py:139 msgid "Gecko 212" msgstr "Gecko 212" -#: src/emc/usr_intf/stepconf/stepconf.py:75 -#: src/emc/usr_intf/pncconf/pncconf.py:138 -#: emc/usr_intf/stepconf/stepconf.py:75 emc/usr_intf/pncconf/pncconf.py:138 +#: src/emc/usr_intf/stepconf/stepconf.py:141 +#: src/emc/usr_intf/pncconf/pncconf.py:140 msgid "Gecko 320" msgstr "Gecko 320" -#: src/emc/usr_intf/stepconf/stepconf.py:76 -#: src/emc/usr_intf/pncconf/pncconf.py:139 -#: emc/usr_intf/stepconf/stepconf.py:76 emc/usr_intf/pncconf/pncconf.py:139 +#: src/emc/usr_intf/stepconf/stepconf.py:142 +#: src/emc/usr_intf/pncconf/pncconf.py:141 msgid "Gecko 540" msgstr "Gecko 540" -#: src/emc/usr_intf/stepconf/stepconf.py:77 -#: src/emc/usr_intf/pncconf/pncconf.py:140 -#: emc/usr_intf/stepconf/stepconf.py:77 emc/usr_intf/pncconf/pncconf.py:140 +#: src/emc/usr_intf/stepconf/stepconf.py:143 +#: src/emc/usr_intf/pncconf/pncconf.py:142 msgid "L297" msgstr "L297" -#: src/emc/usr_intf/stepconf/stepconf.py:78 -#: src/emc/usr_intf/pncconf/pncconf.py:141 -#: emc/usr_intf/stepconf/stepconf.py:78 emc/usr_intf/pncconf/pncconf.py:141 +#: src/emc/usr_intf/stepconf/stepconf.py:144 +#: src/emc/usr_intf/pncconf/pncconf.py:143 msgid "PMDX-150" msgstr "PMDX-150" -#: src/emc/usr_intf/stepconf/stepconf.py:79 -#: src/emc/usr_intf/pncconf/pncconf.py:142 -#: emc/usr_intf/stepconf/stepconf.py:79 emc/usr_intf/pncconf/pncconf.py:142 +#: src/emc/usr_intf/stepconf/stepconf.py:145 +#: src/emc/usr_intf/stepconf/pport1.glade:32 +#: src/emc/usr_intf/pncconf/pncconf.py:144 msgid "Sherline" msgstr "Sherline" -#: src/emc/usr_intf/stepconf/stepconf.py:80 -#: src/emc/usr_intf/pncconf/pncconf.py:143 -#: emc/usr_intf/stepconf/stepconf.py:80 emc/usr_intf/pncconf/pncconf.py:143 +#: src/emc/usr_intf/stepconf/stepconf.py:146 +#: src/emc/usr_intf/pncconf/pncconf.py:145 msgid "Xylotex 8S-3" msgstr "Xylotex 8S-3" -#: src/emc/usr_intf/stepconf/stepconf.py:81 -#: src/emc/usr_intf/pncconf/pncconf.py:144 -#: emc/usr_intf/stepconf/stepconf.py:81 emc/usr_intf/pncconf/pncconf.py:144 +#: src/emc/usr_intf/stepconf/stepconf.py:147 +#: src/emc/usr_intf/pncconf/pncconf.py:146 msgid "Parker-Compumotor oem750" msgstr "Parker-Compumotor oem750" -#: src/emc/usr_intf/stepconf/stepconf.py:82 -#: src/emc/usr_intf/pncconf/pncconf.py:145 -#: emc/usr_intf/stepconf/stepconf.py:82 emc/usr_intf/pncconf/pncconf.py:145 +#: src/emc/usr_intf/stepconf/stepconf.py:148 +#: src/emc/usr_intf/pncconf/pncconf.py:147 msgid "JVL-SMD41 or 42" msgstr "JVL-SMD41 ou 42" -#: src/emc/usr_intf/stepconf/stepconf.py:83 -#: src/emc/usr_intf/pncconf/pncconf.py:146 -#: emc/usr_intf/stepconf/stepconf.py:83 emc/usr_intf/pncconf/pncconf.py:146 +#: src/emc/usr_intf/stepconf/stepconf.py:149 +#: src/emc/usr_intf/pncconf/pncconf.py:148 msgid "Hobbycnc Pro Chopper" msgstr "Hobbycnc Pro Chopper" -#: src/emc/usr_intf/stepconf/stepconf.py:84 -#: src/emc/usr_intf/pncconf/pncconf.py:147 -#: emc/usr_intf/stepconf/stepconf.py:84 emc/usr_intf/pncconf/pncconf.py:147 -msgid "Keling 4030" +#: src/emc/usr_intf/stepconf/stepconf.py:150 +#, fuzzy +msgid "Kelling 4030" msgstr "Keling 4030" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -#: emc/usr_intf/stepconf/stepconf.py:153 +#: src/emc/usr_intf/stepconf/stepconf.py:151 +msgid "Leadshine Series" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:190 msgid "X Step" msgstr "Pas en X" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -#: emc/usr_intf/stepconf/stepconf.py:153 +#: src/emc/usr_intf/stepconf/stepconf.py:190 msgid "X Direction" msgstr "Direction X" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -#: emc/usr_intf/stepconf/stepconf.py:153 +#: src/emc/usr_intf/stepconf/stepconf.py:190 msgid "Y Step" msgstr "Pas en Y" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -#: emc/usr_intf/stepconf/stepconf.py:153 +#: src/emc/usr_intf/stepconf/stepconf.py:190 msgid "Y Direction" msgstr "Direction Y" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -#: emc/usr_intf/stepconf/stepconf.py:154 +#: src/emc/usr_intf/stepconf/stepconf.py:191 msgid "Z Step" msgstr "Pas en Z" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -#: emc/usr_intf/stepconf/stepconf.py:154 +#: src/emc/usr_intf/stepconf/stepconf.py:191 msgid "Z Direction" msgstr "Direction Z" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -#: emc/usr_intf/stepconf/stepconf.py:154 +#: src/emc/usr_intf/stepconf/stepconf.py:191 msgid "A Step" msgstr "Pas en A" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -#: emc/usr_intf/stepconf/stepconf.py:154 +#: src/emc/usr_intf/stepconf/stepconf.py:191 msgid "A Direction" msgstr "Direction A" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -#: emc/usr_intf/stepconf/stepconf.py:155 emc/usr_intf/pncconf/pncconf.py:440 -#: src/emc/usr_intf/pncconf/pncconf.py:461 +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 msgid "Spindle ON" msgstr "Marche broche" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#: emc/usr_intf/stepconf/stepconf.py:155 emc/usr_intf/pncconf/pncconf.py:557 -#: src/emc/usr_intf/pncconf/pncconf.py:581 +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:488 msgid "Spindle PWM" msgstr "PWM broche" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -#: emc/usr_intf/stepconf/stepconf.py:155 emc/usr_intf/pncconf/pncconf.py:440 -#: src/emc/usr_intf/pncconf/pncconf.py:461 +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 msgid "Spindle Brake" msgstr "Frein de broche" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 -#: emc/usr_intf/stepconf/stepconf.py:156 emc/usr_intf/pncconf/pncconf.py:441 -#: src/emc/usr_intf/pncconf/pncconf.py:462 +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 msgid "Coolant Mist" msgstr "Gouttelettes" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 -#: emc/usr_intf/stepconf/stepconf.py:156 emc/usr_intf/pncconf/pncconf.py:441 -#: src/emc/usr_intf/pncconf/pncconf.py:462 +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 msgid "Coolant Flood" msgstr "Arrosage" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:442 -#: emc/usr_intf/stepconf/stepconf.py:156 emc/usr_intf/pncconf/pncconf.py:442 -#: src/emc/usr_intf/pncconf/pncconf.py:463 +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:370 msgid "ESTOP Out" msgstr "Sortie arrêt d'urgence" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: emc/usr_intf/stepconf/stepconf.py:156 +#: src/emc/usr_intf/stepconf/stepconf.py:193 msgid "Amplifier Enable" msgstr "Activation ampli (enable)" -#: src/emc/usr_intf/stepconf/stepconf.py:157 -#: src/emc/usr_intf/pncconf/pncconf.py:443 -#: emc/usr_intf/stepconf/stepconf.py:157 emc/usr_intf/pncconf/pncconf.py:443 -#: src/emc/usr_intf/pncconf/pncconf.py:464 +#: src/emc/usr_intf/stepconf/stepconf.py:194 +#: src/emc/usr_intf/pncconf/pncconf.py:371 msgid "Charge Pump" msgstr "Pompe de charge" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -#: emc/usr_intf/stepconf/stepconf.py:158 emc/usr_intf/pncconf/pncconf.py:444 -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 msgid "Digital out 0" msgstr "Sortie numérique 0" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -#: emc/usr_intf/stepconf/stepconf.py:158 emc/usr_intf/pncconf/pncconf.py:444 -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 msgid "Digital out 1" msgstr "Sortie numérique 1" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -#: emc/usr_intf/stepconf/stepconf.py:158 emc/usr_intf/pncconf/pncconf.py:444 -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 msgid "Digital out 2" msgstr "Sortie numérique 2" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -#: emc/usr_intf/stepconf/stepconf.py:158 emc/usr_intf/pncconf/pncconf.py:444 -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 msgid "Digital out 3" msgstr "Sortie numérique 3" -#: src/emc/usr_intf/stepconf/stepconf.py:159 -#: src/emc/usr_intf/stepconf/stepconf.py:178 -#: emc/usr_intf/stepconf/stepconf.py:159 emc/usr_intf/stepconf/stepconf.py:178 +#: src/emc/usr_intf/stepconf/stepconf.py:196 +#: src/emc/usr_intf/stepconf/stepconf.py:215 +#: src/emc/usr_intf/stepconf/pport1.glade:18 +#: src/emc/usr_intf/stepconf/pport2.glade:1406 +#: src/emc/usr_intf/stepconf/pport2.glade:1420 msgid "Unused" msgstr "Inutilisé" -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 -#: emc/usr_intf/stepconf/stepconf.py:161 emc/usr_intf/pncconf/pncconf.py:471 -#: src/emc/usr_intf/pncconf/pncconf.py:493 +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 msgid "ESTOP In" msgstr "Entrée A/U" -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 -#: emc/usr_intf/stepconf/stepconf.py:161 emc/usr_intf/pncconf/pncconf.py:471 -#: src/emc/usr_intf/pncconf/pncconf.py:493 +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 msgid "Probe In" msgstr "Entrée palpeur" -#: src/emc/usr_intf/stepconf/stepconf.py:162 -#: emc/usr_intf/stepconf/stepconf.py:162 +#: src/emc/usr_intf/stepconf/stepconf.py:199 msgid "Spindle Index" msgstr "Index broche" -#: src/emc/usr_intf/stepconf/stepconf.py:162 -#: emc/usr_intf/stepconf/stepconf.py:162 +#: src/emc/usr_intf/stepconf/stepconf.py:199 msgid "Spindle Phase A" msgstr "Phase A broche" -#: src/emc/usr_intf/stepconf/stepconf.py:162 -#: emc/usr_intf/stepconf/stepconf.py:162 +#: src/emc/usr_intf/stepconf/stepconf.py:199 msgid "Spindle Phase B" msgstr "Phase B broche" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -#: emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/stepconf.py:200 msgid "Home X" msgstr "Origine X" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -#: emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/stepconf.py:200 msgid "Home Y" msgstr "Origine Y" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -#: emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/stepconf.py:200 msgid "Home Z" msgstr "Origine Z" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -#: emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/stepconf.py:200 msgid "Home A" msgstr "Origine A" -#: src/emc/usr_intf/stepconf/stepconf.py:164 -#: emc/usr_intf/stepconf/stepconf.py:164 +#: src/emc/usr_intf/stepconf/stepconf.py:201 msgid "Minimum Limit + Home X" msgstr "Limite mini + origine machine X" -#: src/emc/usr_intf/stepconf/stepconf.py:164 -#: emc/usr_intf/stepconf/stepconf.py:164 +#: src/emc/usr_intf/stepconf/stepconf.py:201 msgid "Minimum Limit + Home Y" msgstr "Limite mini + origine machine Y" -#: src/emc/usr_intf/stepconf/stepconf.py:165 -#: emc/usr_intf/stepconf/stepconf.py:165 +#: src/emc/usr_intf/stepconf/stepconf.py:202 msgid "Minimum Limit + Home Z" msgstr "Limite mini + origine machine Z" -#: src/emc/usr_intf/stepconf/stepconf.py:165 -#: emc/usr_intf/stepconf/stepconf.py:165 +#: src/emc/usr_intf/stepconf/stepconf.py:202 msgid "Minimum Limit + Home A" msgstr "Limite mini + origine machine A" -#: src/emc/usr_intf/stepconf/stepconf.py:166 -#: emc/usr_intf/stepconf/stepconf.py:166 +#: src/emc/usr_intf/stepconf/stepconf.py:203 msgid "Maximum Limit + Home X" msgstr "Limite maxi + origine machine X" -#: src/emc/usr_intf/stepconf/stepconf.py:166 -#: emc/usr_intf/stepconf/stepconf.py:166 +#: src/emc/usr_intf/stepconf/stepconf.py:203 msgid "Maximum Limit + Home Y" msgstr "Limite maxi + origine machine Y" -#: src/emc/usr_intf/stepconf/stepconf.py:167 -#: emc/usr_intf/stepconf/stepconf.py:167 +#: src/emc/usr_intf/stepconf/stepconf.py:204 msgid "Maximum Limit + Home Z" msgstr "Limite maxi + origine machine Z" -#: src/emc/usr_intf/stepconf/stepconf.py:167 -#: emc/usr_intf/stepconf/stepconf.py:167 +#: src/emc/usr_intf/stepconf/stepconf.py:204 msgid "Maximum Limit + Home A" msgstr "Limite maxi + origine machine A" -#: src/emc/usr_intf/stepconf/stepconf.py:168 -#: emc/usr_intf/stepconf/stepconf.py:168 +#: src/emc/usr_intf/stepconf/stepconf.py:205 msgid "Both Limit + Home X" msgstr "Les deux limites + origine machine X" -#: src/emc/usr_intf/stepconf/stepconf.py:168 -#: emc/usr_intf/stepconf/stepconf.py:168 +#: src/emc/usr_intf/stepconf/stepconf.py:205 msgid "Both Limit + Home Y" msgstr "Les deux limites + origine machine Y" -#: src/emc/usr_intf/stepconf/stepconf.py:169 -#: emc/usr_intf/stepconf/stepconf.py:169 +#: src/emc/usr_intf/stepconf/stepconf.py:206 msgid "Both Limit + Home Z" msgstr "Les deux limites + origine machine Z" -#: src/emc/usr_intf/stepconf/stepconf.py:169 -#: emc/usr_intf/stepconf/stepconf.py:169 +#: src/emc/usr_intf/stepconf/stepconf.py:206 msgid "Both Limit + Home A" msgstr "Les deux limites + origine machine A" -#: src/emc/usr_intf/stepconf/stepconf.py:170 -#: emc/usr_intf/stepconf/stepconf.py:170 +#: src/emc/usr_intf/stepconf/stepconf.py:207 msgid "Minimum Limit X" msgstr "Limite mini X" -#: src/emc/usr_intf/stepconf/stepconf.py:170 -#: emc/usr_intf/stepconf/stepconf.py:170 +#: src/emc/usr_intf/stepconf/stepconf.py:207 msgid "Minimum Limit Y" msgstr "Limite mini Y" -#: src/emc/usr_intf/stepconf/stepconf.py:171 -#: emc/usr_intf/stepconf/stepconf.py:171 +#: src/emc/usr_intf/stepconf/stepconf.py:208 msgid "Minimum Limit Z" msgstr "Limite mini Z" -#: src/emc/usr_intf/stepconf/stepconf.py:171 -#: emc/usr_intf/stepconf/stepconf.py:171 +#: src/emc/usr_intf/stepconf/stepconf.py:208 msgid "Minimum Limit A" msgstr "Limite mini A" -#: src/emc/usr_intf/stepconf/stepconf.py:172 -#: emc/usr_intf/stepconf/stepconf.py:172 +#: src/emc/usr_intf/stepconf/stepconf.py:209 msgid "Maximum Limit X" msgstr "Limite maxi X" -#: src/emc/usr_intf/stepconf/stepconf.py:172 -#: emc/usr_intf/stepconf/stepconf.py:172 +#: src/emc/usr_intf/stepconf/stepconf.py:209 msgid "Maximum Limit Y" msgstr "Limite maxi Y" -#: src/emc/usr_intf/stepconf/stepconf.py:173 -#: emc/usr_intf/stepconf/stepconf.py:173 +#: src/emc/usr_intf/stepconf/stepconf.py:210 msgid "Maximum Limit Z" msgstr "Limite maxi Z" -#: src/emc/usr_intf/stepconf/stepconf.py:173 -#: emc/usr_intf/stepconf/stepconf.py:173 +#: src/emc/usr_intf/stepconf/stepconf.py:210 msgid "Maximum Limit A" msgstr "Limite maxi A" -#: src/emc/usr_intf/stepconf/stepconf.py:174 -#: emc/usr_intf/stepconf/stepconf.py:174 +#: src/emc/usr_intf/stepconf/stepconf.py:211 msgid "Both Limit X" msgstr "Toutes les limites X" -#: src/emc/usr_intf/stepconf/stepconf.py:174 -#: emc/usr_intf/stepconf/stepconf.py:174 +#: src/emc/usr_intf/stepconf/stepconf.py:211 msgid "Both Limit Y" msgstr "Toutes les limites Y" -#: src/emc/usr_intf/stepconf/stepconf.py:175 -#: emc/usr_intf/stepconf/stepconf.py:175 +#: src/emc/usr_intf/stepconf/stepconf.py:212 msgid "Both Limit Z" msgstr "Toutes les limites Z" -#: src/emc/usr_intf/stepconf/stepconf.py:175 -#: emc/usr_intf/stepconf/stepconf.py:175 +#: src/emc/usr_intf/stepconf/stepconf.py:212 msgid "Both Limit A" msgstr "Toutes les limites A" -#: src/emc/usr_intf/stepconf/stepconf.py:176 -#: emc/usr_intf/stepconf/stepconf.py:176 +#: src/emc/usr_intf/stepconf/stepconf.py:213 msgid "All limits" msgstr "Toutes les limites" -#: src/emc/usr_intf/stepconf/stepconf.py:176 -#: emc/usr_intf/stepconf/stepconf.py:176 +#: src/emc/usr_intf/stepconf/stepconf.py:213 msgid "All home" msgstr "Toutes les origines" -#: src/emc/usr_intf/stepconf/stepconf.py:176 -#: emc/usr_intf/stepconf/stepconf.py:176 +#: src/emc/usr_intf/stepconf/stepconf.py:213 msgid "All limits + homes" msgstr "Toutes les limites + origines" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -#: emc/usr_intf/stepconf/stepconf.py:177 emc/usr_intf/pncconf/pncconf.py:463 -#: src/emc/usr_intf/pncconf/pncconf.py:484 +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 msgid "Digital in 0" msgstr "Entrée numérique 0" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -#: emc/usr_intf/stepconf/stepconf.py:177 emc/usr_intf/pncconf/pncconf.py:463 -#: src/emc/usr_intf/pncconf/pncconf.py:484 +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 msgid "Digital in 1" msgstr "Entrée numérique 1" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -#: emc/usr_intf/stepconf/stepconf.py:177 emc/usr_intf/pncconf/pncconf.py:463 -#: src/emc/usr_intf/pncconf/pncconf.py:484 +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 msgid "Digital in 2" msgstr "Entrée numérique 2" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -#: emc/usr_intf/stepconf/stepconf.py:177 emc/usr_intf/pncconf/pncconf.py:463 -#: src/emc/usr_intf/pncconf/pncconf.py:484 +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 msgid "Digital in 3" msgstr "Entrée numérique 3" -#: src/emc/usr_intf/stepconf/stepconf.py:203 -#: emc/usr_intf/stepconf/stepconf.py:203 +#: src/emc/usr_intf/stepconf/stepconf.py:218 +#, fuzzy +msgid "Forward" +msgstr "Broche sens horaire" + +#: src/emc/usr_intf/stepconf/stepconf.py:219 +msgid "Done" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:220 +msgid "" +"OK to replace existing custom ladder program?\n" +"Existing Custom.clp will be renamed custom_backup.clp.\n" +"Any existing file named -custom_backup.clp- will be lost. " +msgstr "" +"OK pour remplacer le programme ladder existant ?\n" +"Le fichier custom.clp existant sera renommé custom_backup.clp \n" +"Tout autre fichier custom_backup.clp précédent sera perdu." + +#: src/emc/usr_intf/stepconf/stepconf.py:221 +#: src/emc/usr_intf/pncconf/pncconf.py:8163 +msgid "" +"You edited a ladder program and have selected a different program to copy to " +"your configuration file.\n" +"The edited program will be lost.\n" +"\n" +"Are you sure? " +msgstr "" +"Vous avez déjà édité un programme ladder mais vous avez choisi \n" +"un programme différent pour enregistrer votre fichier de configuration. \n" +"Le fichier édité auparavant sera perdu. \n" +"\n" +"Etes-vous sûr de ce choix ? " + +#: src/emc/usr_intf/stepconf/stepconf.py:222 +msgid "" +"You need to designate an E-stop input pin in the Parallel Port Setup page " +"for this program." +msgstr "" +"Pour ce programme, vous devez indiquer une broche d'entrée pour l'arrêt " +"d'urgence dans la page de réglage du port parallèle." + +#: src/emc/usr_intf/stepconf/stepconf.py:223 +msgid "" +"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" +"Existing custompanel.xml and custom_postgui.hal will be renamed " +"custompanel_backup.xml and postgui_backup.hal.\n" +"Any existing file named custompanel_backup.xml and custom_postgui.hal will " +"be lost. " +msgstr "" +"OK pour remplacer le fichier custom_postgui.hal et le panneau pyvcp " +"existant ? \n" +"Les fichiers existants custompanel.xml et custom_postgui.hal seront " +"renommés \n" +"custompanel_backup.xml et postgui_backup.hal \n" +"Tout fichier existant portant déjà un de ces noms sera écrasé." + +#: src/emc/usr_intf/stepconf/stepconf.py:224 +msgid "Quit Stepconf and discard changes?" +msgstr "Quitter Stepconf et perdre les modifications ?" + +#: src/emc/usr_intf/stepconf/stepconf.py:225 +msgid "" +"The configuration has been built and saved.\n" +"Do you want to quit?" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:226 +#, fuzzy +msgid "" +"You are using a simulated-realtime version of Machinekit, so testing / " +"tuning of hardware is unavailable." +msgstr "" +"Vous utilisez une version de LinuxCNC temps réel simulé, / les réglages du " +"matériel n'y sont pas disponibles." + +#: src/emc/usr_intf/stepconf/stepconf.py:227 +#, fuzzy, python-format +msgid "" +"You are using a realtime version of Machinekit but didn't load a realtime " +"kernel so testing / tuning of hardware is unavailable.\n" +"This is possibly because you updated the OS and it doesn't automatically " +"load the RTAI kernel anymore.\n" +"You are using the %(actual)s kernel.\n" +"You need to use kernel:" +msgstr "" +"Vous utilisez une version temps réel de LinuxCNC mais il n'a pas pu charger " +"de kernel temps réel pour ce test / les réglages du matériel seront " +"indisponibles.\n" +"C'est peut-être provoqué par une mise à jour de l'OS qui empêche désormais " +"le chargement automatique du kernel RTAI.\n" + +#: src/emc/usr_intf/stepconf/stepconf.py:246 msgid "my-mill" msgstr "ma-machine" -#: src/emc/usr_intf/stepconf/stepconf.py:215 -#: src/emc/usr_intf/stepconf/stepconf.py:217 -#: src/emc/usr_intf/pncconf/pncconf.py:983 -#: src/emc/usr_intf/pncconf/pncconf.py:985 -#: emc/usr_intf/stepconf/stepconf.py:215 emc/usr_intf/stepconf/stepconf.py:217 -#: emc/usr_intf/pncconf/pncconf.py:983 emc/usr_intf/pncconf/pncconf.py:985 -#: src/emc/usr_intf/pncconf/pncconf.py:1021 -#: src/emc/usr_intf/pncconf/pncconf.py:1023 -#: src/emc/usr_intf/pncconf/pncconf.py:1025 -msgid "Enter Address" -msgstr "Entrer l'adresse" - -#: src/emc/usr_intf/stepconf/stepconf.py:375 -#: emc/usr_intf/stepconf/stepconf.py:375 +#: src/emc/usr_intf/stepconf/stepconf.py:585 #, python-format msgid "File %r was modified since it was written by stepconf" msgstr "Le fichier %r a été modifié depuis qu'il a été écrit par Stepconf" -#: src/emc/usr_intf/stepconf/stepconf.py:378 -#: emc/usr_intf/stepconf/stepconf.py:378 +#: src/emc/usr_intf/stepconf/stepconf.py:588 msgid "" "Saving this configuration file will discard configuration changes made " "outside stepconf." @@ -7347,97 +8435,186 @@ msgstr "" "Enregistrer cette configuration va écraser les modifications faites à " "l'extérieur de Stepconf" -#: src/emc/usr_intf/stepconf/stepconf.py:393 -#: src/emc/usr_intf/pncconf/pncconf.py:1356 -#: emc/usr_intf/stepconf/stepconf.py:393 emc/usr_intf/pncconf/pncconf.py:1356 -#: src/emc/usr_intf/pncconf/pncconf.py:1400 +#: src/emc/usr_intf/stepconf/stepconf.py:603 +#: src/emc/usr_intf/pncconf/pncconf.py:1318 msgid "Continue? " msgstr "Continuer ?" -#: src/emc/usr_intf/stepconf/stepconf.py:394 -#: src/emc/usr_intf/pncconf/pncconf.py:1357 -#: emc/usr_intf/stepconf/stepconf.py:394 emc/usr_intf/pncconf/pncconf.py:1357 -#: src/emc/usr_intf/pncconf/pncconf.py:1401 +#: src/emc/usr_intf/stepconf/stepconf.py:604 +#: src/emc/usr_intf/pncconf/pncconf.py:1319 msgid "yY" msgstr "yY" -#: src/emc/usr_intf/stepconf/stepconf.py:446 -#: src/emc/usr_intf/stepconf/stepconf.py:786 -#: emc/usr_intf/stepconf/stepconf.py:446 emc/usr_intf/stepconf/stepconf.py:786 +#: src/emc/usr_intf/stepconf/stepconf.py:689 +#: src/emc/usr_intf/pncconf/pncconf.py:3591 +#, python-format +msgid "launch %s" +msgstr "lancer %s" + +#: src/emc/usr_intf/stepconf/stepconf.py:693 +#, fuzzy +msgid "Desktop Launcher for Machinekit config made by Stepconf" +msgstr "" +"Lanceur de bureau pour LinuxCNC avec la configuration faite par Stepconf" + +#: src/emc/usr_intf/stepconf/stepconf.py:860 +#: src/emc/usr_intf/stepconf/pages.py:145 +msgid "Other" +msgstr "Autre" + +#: src/emc/usr_intf/stepconf/stepconf.py:1295 +#: src/emc/usr_intf/pncconf/pncconf.py:9302 #, python-format -msgid "# Generated by stepconf at %s" +msgid "%s Axis Test" +msgstr "Test axe %s" + +#: src/emc/usr_intf/stepconf/stepconf.py:1298 +#: src/emc/usr_intf/stepconf/pages.py:617 +msgid "deg / s" +msgstr "deg / s" + +#: src/emc/usr_intf/stepconf/stepconf.py:1299 +#: src/emc/usr_intf/stepconf/pages.py:618 +msgid "deg / s²" +msgstr "degré / s²" + +#: src/emc/usr_intf/stepconf/stepconf.py:1300 +#: src/emc/usr_intf/stepconf/pages.py:619 +msgid "deg" +msgstr "deg" + +#: src/emc/usr_intf/stepconf/stepconf.py:1312 +#: src/emc/usr_intf/stepconf/pages.py:623 +#: src/emc/usr_intf/stepconf/axisx.glade:629 +#: src/emc/usr_intf/stepconf/axisy.glade:615 +#: src/emc/usr_intf/stepconf/axisz.glade:615 +#: src/emc/usr_intf/stepconf/axisa.glade:629 +#: src/emc/usr_intf/pncconf/pncconf.glade:64717 +msgid "mm / s" +msgstr "mm / s" + +#: src/emc/usr_intf/stepconf/stepconf.py:1313 +#: src/emc/usr_intf/stepconf/pages.py:624 +#: src/emc/usr_intf/stepconf/axisx.glade:645 +#: src/emc/usr_intf/stepconf/axisy.glade:631 +#: src/emc/usr_intf/stepconf/axisz.glade:631 +#: src/emc/usr_intf/stepconf/axisa.glade:645 +#: src/emc/usr_intf/pncconf/pncconf.glade:64732 +msgid "mm / s²" +msgstr "mm / s²" + +#: src/emc/usr_intf/stepconf/stepconf.py:1326 +#: src/emc/usr_intf/stepconf/pages.py:629 +msgid "in / s" +msgstr "pouces / s" + +#: src/emc/usr_intf/stepconf/stepconf.py:1327 +#: src/emc/usr_intf/stepconf/pages.py:630 +msgid "in / s²" +msgstr "pouces / s²" + +#: src/emc/usr_intf/stepconf/pages.py:189 +#, fuzzy +msgid "Machinekit 'stepconf' configuration files" +msgstr "Fichiers de configuration 'stepconf' de LinuxCNC " + +#: src/emc/usr_intf/stepconf/pages.py:190 +#: src/emc/usr_intf/pncconf/pncconf.py:4257 +msgid "Modify Existing Configuration" +msgstr "Modifier configuration existante" + +#: src/emc/usr_intf/stepconf/pages.py:616 +msgid "degree / rev" +msgstr "degrés / tour" + +#: src/emc/usr_intf/stepconf/pages.py:620 +msgid "Steps / deg" +msgstr "Pas / degré" + +#: src/emc/usr_intf/stepconf/pages.py:622 +#: src/emc/usr_intf/stepconf/axisx.glade:613 +#: src/emc/usr_intf/stepconf/axisy.glade:599 +#: src/emc/usr_intf/stepconf/axisz.glade:599 +#: src/emc/usr_intf/stepconf/axisa.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / rev" +msgstr "mm / tour" + +#: src/emc/usr_intf/stepconf/pages.py:626 +#: src/emc/usr_intf/stepconf/axisx.glade:15 +#: src/emc/usr_intf/stepconf/axisy.glade:15 +#: src/emc/usr_intf/stepconf/axisz.glade:15 +#: src/emc/usr_intf/stepconf/axisa.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Steps / mm" +msgstr "Pas / mm" + +#: src/emc/usr_intf/stepconf/pages.py:628 +msgid "rev / in" +msgstr "tour / pouce" + +#: src/emc/usr_intf/stepconf/pages.py:632 +msgid "Steps / in" +msgstr "Pas / pouce" + +#: src/emc/usr_intf/stepconf/build_INI.py:45 +#: src/emc/usr_intf/stepconf/build_HAL.py:41 +#, fuzzy, python-format +msgid "# Generated by stepconf 1.1 at %s" msgstr "# Généré par Stepconf le %s" -#: src/emc/usr_intf/stepconf/stepconf.py:447 -#: src/emc/usr_intf/stepconf/stepconf.py:787 -#: src/emc/usr_intf/pncconf/pncconf.py:1366 -#: src/emc/usr_intf/pncconf/pncconf.py:2369 -#: emc/usr_intf/stepconf/stepconf.py:447 emc/usr_intf/stepconf/stepconf.py:787 -#: emc/usr_intf/pncconf/pncconf.py:1366 emc/usr_intf/pncconf/pncconf.py:2369 -#: src/emc/usr_intf/pncconf/pncconf.py:1410 -#: src/emc/usr_intf/pncconf/pncconf.py:2477 +#: src/emc/usr_intf/stepconf/build_INI.py:46 +#: src/emc/usr_intf/stepconf/build_HAL.py:42 +#: src/emc/usr_intf/pncconf/pncconf.py:1328 +#: src/emc/usr_intf/pncconf/pncconf.py:2422 msgid "# If you make changes to this file, they will be" msgstr "# Si vous modifiez ce fichier, il sera" -#: src/emc/usr_intf/stepconf/stepconf.py:448 -#: src/emc/usr_intf/stepconf/stepconf.py:788 -#: emc/usr_intf/stepconf/stepconf.py:448 emc/usr_intf/stepconf/stepconf.py:788 +#: src/emc/usr_intf/stepconf/build_INI.py:47 +#: src/emc/usr_intf/stepconf/build_HAL.py:43 msgid "# overwritten when you run stepconf again" msgstr "# écrasé quand vous relancerez Stepconf" -#: src/emc/usr_intf/stepconf/stepconf.py:516 -#: emc/usr_intf/stepconf/stepconf.py:516 +#: src/emc/usr_intf/stepconf/build_INI.py:126 msgid "# add halui MDI commands here (max 64) " msgstr "# ajoutez ici les commandes MDI halui (maximum 64) " -#: src/emc/usr_intf/stepconf/stepconf.py:991 -#: emc/usr_intf/stepconf/stepconf.py:991 emc/usr_intf/pncconf/pncconf.py:2991 -#: src/emc/usr_intf/pncconf/pncconf.py:2991 +#: src/emc/usr_intf/stepconf/build_HAL.py:275 +#: src/emc/usr_intf/pncconf/pncconf.py:3131 msgid "# **** Setup for external estop ladder program -START ****" msgstr "# **** Paramètre -START pour l'A/U externe du programme ladder ****" -#: src/emc/usr_intf/stepconf/stepconf.py:998 -#: src/emc/usr_intf/pncconf/pncconf.py:2998 -#: emc/usr_intf/stepconf/stepconf.py:998 emc/usr_intf/pncconf/pncconf.py:2998 -#: src/emc/usr_intf/pncconf/pncconf.py:3160 +#: src/emc/usr_intf/stepconf/build_HAL.py:282 +#: src/emc/usr_intf/pncconf/pncconf.py:3138 msgid "# **** Setup for external estop ladder program -END ****" msgstr "# **** Paramètre -END pour l'A/U externe du programme ladder ****" -#: src/emc/usr_intf/stepconf/stepconf.py:1018 -#: src/emc/usr_intf/pncconf/pncconf.py:3025 -#: emc/usr_intf/stepconf/stepconf.py:1018 emc/usr_intf/pncconf/pncconf.py:3025 -#: src/emc/usr_intf/pncconf/pncconf.py:3187 +#: src/emc/usr_intf/stepconf/build_HAL.py:302 +#: src/emc/usr_intf/pncconf/pncconf.py:3165 msgid "" "# Load Classicladder with modbus master included (GUI must run for Modbus)" msgstr "" "# Chargement de Classicladder avec modbus maître inclus (La GUI doit tourner " "avec Modbus)" -#: src/emc/usr_intf/stepconf/stepconf.py:1021 -#: src/emc/usr_intf/pncconf/pncconf.py:3030 -#: emc/usr_intf/stepconf/stepconf.py:1021 emc/usr_intf/pncconf/pncconf.py:3030 -#: src/emc/usr_intf/pncconf/pncconf.py:3192 +#: src/emc/usr_intf/stepconf/build_HAL.py:305 +#: src/emc/usr_intf/pncconf/pncconf.py:3170 msgid "# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI" msgstr "" "# Chargement de Classicladder sans GUI (peut recharger la GUI LADDER dans la " "GUI AXIS)" -#: src/emc/usr_intf/stepconf/stepconf.py:1031 -#: src/emc/usr_intf/pncconf/pncconf.py:3112 -#: emc/usr_intf/stepconf/stepconf.py:1031 emc/usr_intf/pncconf/pncconf.py:3112 -#: src/emc/usr_intf/pncconf/pncconf.py:3274 +#: src/emc/usr_intf/stepconf/build_HAL.py:315 +#: src/emc/usr_intf/pncconf/pncconf.py:3252 msgid "Include your PyVCP panel here.\n" msgstr "Inclure son propre panneau PyVCP ici.\n" -#: src/emc/usr_intf/stepconf/stepconf.py:1040 -#: src/emc/usr_intf/stepconf/stepconf.py:1087 -#: emc/usr_intf/stepconf/stepconf.py:1040 -#: emc/usr_intf/stepconf/stepconf.py:1087 +#: src/emc/usr_intf/stepconf/build_HAL.py:324 +#: src/emc/usr_intf/stepconf/build_HAL.py:370 msgid "# Include your customized HAL commands here" msgstr "# Inclure vos commandes HAL personnalisées ici" -#: src/emc/usr_intf/stepconf/stepconf.py:1041 -#: emc/usr_intf/stepconf/stepconf.py:1041 +#: src/emc/usr_intf/stepconf/build_HAL.py:325 msgid "" "# The commands in this file are run after the AXIS GUI (including PyVCP " "panel) starts" @@ -7445,321 +8622,126 @@ msgstr "" "# Les commandes contenues dans ce fichier seront lancées après " "quel'interface graphique AXIS (PyVCP inclus) aura démarré." -#: src/emc/usr_intf/stepconf/stepconf.py:1045 -#: src/emc/usr_intf/pncconf/pncconf.py:3140 -#: emc/usr_intf/stepconf/stepconf.py:1045 emc/usr_intf/pncconf/pncconf.py:3140 -#: src/emc/usr_intf/pncconf/pncconf.py:3302 +#: src/emc/usr_intf/stepconf/build_HAL.py:328 +#: src/emc/usr_intf/pncconf/pncconf.py:3280 msgid "# **** Setup of spindle speed display using pyvcp -START ****" msgstr "# **** Réglage de l'affichage de vitesse broche avec pyvcp -START ****" - -#: src/emc/usr_intf/stepconf/stepconf.py:1047 -#: emc/usr_intf/stepconf/stepconf.py:1047 -msgid "# **** Use ACTUAL spindle velocity from spindle encoder" -msgstr "" -"# **** Utiliser la vitesse de broche actuelle depuis le codeur de broche" - -#: src/emc/usr_intf/stepconf/stepconf.py:1048 -#: emc/usr_intf/stepconf/stepconf.py:1048 -msgid "# **** spindle-velocity bounces around so we filter it with lowpass" -msgstr "# **** filtre passe-bas sur la vitesse de broche" - -#: src/emc/usr_intf/stepconf/stepconf.py:1049 -#: emc/usr_intf/stepconf/stepconf.py:1049 -msgid "" -"# **** spindle-velocity is signed so we use absolute component to remove sign" -msgstr "" -"# **** utilisation du composant absolu pour enlever le signe si vitesse " -"broche avec signe" - -#: src/emc/usr_intf/stepconf/stepconf.py:1050 -#: emc/usr_intf/stepconf/stepconf.py:1050 -msgid "# **** ACTUAL velocity is in RPS not RPM so we scale it." -msgstr "" -"# **** La vitesse ACTUELLE est en tr/s et non en tr/mn, elle peut, si " -"besoin, être mise à l'échelle." - -#: src/emc/usr_intf/stepconf/stepconf.py:1059 -#: emc/usr_intf/stepconf/stepconf.py:1059 -msgid "# **** set up spindle at speed indicator ****" -msgstr "# **** ajuster vitesse max broche selon l'indicateur de vitesse ****" - -#: src/emc/usr_intf/stepconf/stepconf.py:1072 -#: emc/usr_intf/stepconf/stepconf.py:1072 -msgid "" -"# **** Use COMMANDED spindle velocity from LinuxCNC because no spindle " -"encoder was specified" -msgstr "" -"# **** Utilise la vitesse de broche COMMANDÉE depuis LinuxCNC puisqu'aucun " -"codeur de broche n'a été spécifié" - -#: src/emc/usr_intf/stepconf/stepconf.py:1073 -#: emc/usr_intf/stepconf/stepconf.py:1073 -msgid "" -"# **** COMANDED velocity is signed so we use absolute component (abs.0) to " -"remove sign" -msgstr "" -"# **** La vitesse COMMANDÉE est signée, le composant absolu (abs.0) peut " -"être utilisé pour enlever le signe" - -#: src/emc/usr_intf/stepconf/stepconf.py:1088 -#: emc/usr_intf/stepconf/stepconf.py:1088 -msgid "# This file will not be overwritten when you run stepconf again" -msgstr "# Ce fichier ne sera pas écrasé si vous relancez Stepconf" - -#: src/emc/usr_intf/stepconf/stepconf.py:1095 -#: emc/usr_intf/stepconf/stepconf.py:1095 -#, python-format -msgid "Generated by stepconf at %s" -msgstr "Généré par Stepconf le %s" - -#: src/emc/usr_intf/stepconf/stepconf.py:1166 -#: src/emc/usr_intf/pncconf/pncconf.py:3451 -#: emc/usr_intf/stepconf/stepconf.py:1166 emc/usr_intf/pncconf/pncconf.py:3451 -#: src/emc/usr_intf/pncconf/pncconf.py:3613 -#, python-format -msgid "launch %s" -msgstr "lancer %s" - -#: src/emc/usr_intf/stepconf/stepconf.py:1170 -#: emc/usr_intf/stepconf/stepconf.py:1170 -msgid "Desktop Launcher for LinuxCNC config made by Stepconf" -msgstr "" -"Lanceur de bureau pour LinuxCNC avec la configuration faite par Stepconf" - -#: src/emc/usr_intf/stepconf/stepconf.py:1196 -#: src/emc/usr_intf/pncconf/pncconf.py:3700 -#: emc/usr_intf/stepconf/stepconf.py:1196 emc/usr_intf/pncconf/pncconf.py:3700 -#: src/emc/usr_intf/pncconf/pncconf.py:3883 -#, python-format -msgid "%s Axis Configuration" -msgstr "Configuration axe %s" - -#: src/emc/usr_intf/stepconf/stepconf.py:1238 -#: src/emc/usr_intf/stepconf/stepconf.py:1337 -#: emc/usr_intf/stepconf/stepconf.py:1238 -#: emc/usr_intf/stepconf/stepconf.py:1337 -msgid "Other" -msgstr "Autre" - -#: src/emc/usr_intf/stepconf/stepconf.py:1249 -#: emc/usr_intf/stepconf/stepconf.py:1249 -msgid "Quit Stepconf and discard changes?" -msgstr "Quitter Stepconf et perdre les modifications ?" - -#: src/emc/usr_intf/stepconf/stepconf.py:1280 -#: emc/usr_intf/stepconf/stepconf.py:1280 -msgid "" -"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " -"of hardware is unavailable." -msgstr "" -"Vous utilisez une version de LinuxCNC temps réel simulé, / les réglages du " -"matériel n'y sont pas disponibles." - -#: src/emc/usr_intf/stepconf/stepconf.py:1283 -#: emc/usr_intf/stepconf/stepconf.py:1283 -msgid "" -"You are using a realtime version of LinuxCNC but didn't load a realtime " -"kernel so testing / tuning of hardware is unavailable.\n" -"This is possibly because you updated the OS and it doesn't automatically " -"load the RTAI kernel anymore.\n" -msgstr "" -"Vous utilisez une version temps réel de LinuxCNC mais il n'a pas pu charger " -"de kernel temps réel pour ce test / les réglages du matériel seront " -"indisponibles.\n" -"C'est peut-être provoqué par une mise à jour de l'OS qui empêche désormais " -"le chargement automatique du kernel RTAI.\n" - -#: src/emc/usr_intf/stepconf/stepconf.py:1298 -#: emc/usr_intf/stepconf/stepconf.py:1298 -msgid "LinuxCNC 'stepconf' configuration files" -msgstr "Fichiers de configuration 'stepconf' de LinuxCNC " - -#: src/emc/usr_intf/stepconf/stepconf.py:1299 -#: src/emc/usr_intf/pncconf/pncconf.py:4094 -#: emc/usr_intf/stepconf/stepconf.py:1299 emc/usr_intf/pncconf/pncconf.py:4094 -#: src/emc/usr_intf/pncconf/pncconf.py:4277 -msgid "Modify Existing Configuration" -msgstr "Modifier configuration existante" - -#: src/emc/usr_intf/stepconf/stepconf.py:1439 -#: emc/usr_intf/stepconf/stepconf.py:1439 -msgid "" -"You need to designate an E-stop input pin in the Parallel Port Setup page " -"for this program." -msgstr "" -"Pour ce programme, vous devez indiquer une broche d'entrée pour l'arrêt " -"d'urgence dans la page de réglage du port parallèle." - -#: src/emc/usr_intf/stepconf/stepconf.py:1452 -#: emc/usr_intf/stepconf/stepconf.py:1452 -msgid "" -"OK to replace existing custom ladder program?\n" -"Existing Custom.clp will be renamed custom_backup.clp.\n" -"Any existing file named -custom_backup.clp- will be lost. " -msgstr "" -"OK pour remplacer le programme ladder existant ?\n" -"Le fichier custom.clp existant sera renommé custom_backup.clp \n" -"Tout autre fichier custom_backup.clp précédent sera perdu." - -#: src/emc/usr_intf/stepconf/stepconf.py:1457 -#: src/emc/usr_intf/pncconf/pncconf.py:7815 -#: emc/usr_intf/stepconf/stepconf.py:1457 emc/usr_intf/pncconf/pncconf.py:7813 -#: src/emc/usr_intf/pncconf/pncconf.py:8154 -msgid "" -"You edited a ladder program and have selected a different program to copy to " -"your configuration file.\n" -"The edited program will be lost.\n" -"\n" -"Are you sure? " -msgstr "" -"Vous avez déjà édité un programme ladder mais vous avez choisi \n" -"un programme différent pour enregistrer votre fichier de configuration. \n" -"Le fichier édité auparavant sera perdu. \n" -"\n" -"Etes-vous sûr de ce choix ? " - -#: src/emc/usr_intf/stepconf/stepconf.py:1471 -#: emc/usr_intf/stepconf/stepconf.py:1471 -msgid "" -"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" -"Existing custompanel.xml and custom_postgui.hal will be renamed " -"custompanel_backup.xml and postgui_backup.hal.\n" -"Any existing file named custompanel_backup.xml and custom_postgui.hal will " -"be lost. " + +#: src/emc/usr_intf/stepconf/build_HAL.py:330 +msgid "# **** Use ACTUAL spindle velocity from spindle encoder" msgstr "" -"OK pour remplacer le fichier custom_postgui.hal et le panneau pyvcp " -"existant ? \n" -"Les fichiers existants custompanel.xml et custom_postgui.hal seront " -"renommés \n" -"custompanel_backup.xml et postgui_backup.hal \n" -"Tout fichier existant portant déjà un de ces noms sera écrasé." +"# **** Utiliser la vitesse de broche actuelle depuis le codeur de broche" -#: src/emc/usr_intf/stepconf/stepconf.py:1676 -#: emc/usr_intf/stepconf/stepconf.py:1676 -msgid "degree / rev" -msgstr "degrés / tour" +#: src/emc/usr_intf/stepconf/build_HAL.py:331 +#, fuzzy +msgid "" +"# **** spindle-velocity-feedback-rps bounces around so we filter it with " +"lowpass" +msgstr "# **** filtre passe-bas sur la vitesse de broche" -#: src/emc/usr_intf/stepconf/stepconf.py:1677 -#: src/emc/usr_intf/stepconf/stepconf.py:2205 -#: emc/usr_intf/stepconf/stepconf.py:1677 -#: emc/usr_intf/stepconf/stepconf.py:2205 -msgid "deg / s" -msgstr "deg / s" +#: src/emc/usr_intf/stepconf/build_HAL.py:332 +#, fuzzy +msgid "" +"# **** spindle-velocity-feedback-rps is signed so we use absolute component " +"to remove sign" +msgstr "" +"# **** utilisation du composant absolu pour enlever le signe si vitesse " +"broche avec signe" -#: src/emc/usr_intf/stepconf/stepconf.py:1678 -#: src/emc/usr_intf/stepconf/stepconf.py:2206 -#: emc/usr_intf/stepconf/stepconf.py:1678 -#: emc/usr_intf/stepconf/stepconf.py:2206 -msgid "deg / s²" -msgstr "degré / s²" +#: src/emc/usr_intf/stepconf/build_HAL.py:333 +msgid "# **** ACTUAL velocity is in RPS not RPM so we scale it." +msgstr "" +"# **** La vitesse ACTUELLE est en tr/s et non en tr/mn, elle peut, si " +"besoin, être mise à l'échelle." -#: src/emc/usr_intf/stepconf/stepconf.py:1679 -#: src/emc/usr_intf/stepconf/stepconf.py:2207 -#: emc/usr_intf/stepconf/stepconf.py:1679 -#: emc/usr_intf/stepconf/stepconf.py:2207 -msgid "deg" -msgstr "deg" +#: src/emc/usr_intf/stepconf/build_HAL.py:342 +msgid "# **** set up spindle at speed indicator ****" +msgstr "# **** ajuster vitesse max broche selon l'indicateur de vitesse ****" -#: src/emc/usr_intf/stepconf/stepconf.py:1680 -#: emc/usr_intf/stepconf/stepconf.py:1680 -msgid "Steps / deg" -msgstr "Pas / degré" +#: src/emc/usr_intf/stepconf/build_HAL.py:355 +msgid "" +"# **** Use COMMANDED spindle velocity from LinuxCNC because no spindle " +"encoder was specified" +msgstr "" +"# **** Utilise la vitesse de broche COMMANDÉE depuis LinuxCNC puisqu'aucun " +"codeur de broche n'a été spécifié" -#: src/emc/usr_intf/stepconf/stepconf.py:1682 -#: src/emc/usr_intf/stepconf/stepconf.glade:3589 -#: src/emc/usr_intf/pncconf/pncconf.glade:66138 -#: src/emc/usr_intf/pncconf/pncconf.glade:66424 -#: emc/usr_intf/stepconf/stepconf.py:1682 -#: emc/usr_intf/stepconf/stepconf.glade:3589 -#: emc/usr_intf/pncconf/pncconf.glade:66138 -#: emc/usr_intf/pncconf/pncconf.glade:66424 -#: src/emc/usr_intf/pncconf/pncconf.glade:73141 -#: src/emc/usr_intf/pncconf/pncconf.glade:73427 -msgid "mm / rev" -msgstr "mm / tour" +#: src/emc/usr_intf/stepconf/build_HAL.py:371 +msgid "# This file will not be overwritten when you run stepconf again" +msgstr "# Ce fichier ne sera pas écrasé si vous relancez Stepconf" -#: src/emc/usr_intf/stepconf/stepconf.py:1683 -#: src/emc/usr_intf/stepconf/stepconf.py:2219 -#: src/emc/usr_intf/stepconf/stepconf.glade:3604 -#: src/emc/usr_intf/pncconf/pncconf.glade:57828 -#: emc/usr_intf/stepconf/stepconf.py:1683 -#: emc/usr_intf/stepconf/stepconf.py:2219 -#: emc/usr_intf/stepconf/stepconf.glade:3604 -#: emc/usr_intf/pncconf/pncconf.glade:57828 -#: src/emc/usr_intf/pncconf/pncconf.glade:64801 -msgid "mm / s" -msgstr "mm / s" +#: src/emc/usr_intf/stepconf/build_HAL.py:412 +msgid "# This file sets up simulated limits/home/spindle encoder hardware." +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1684 -#: src/emc/usr_intf/stepconf/stepconf.py:2220 -#: src/emc/usr_intf/stepconf/stepconf.glade:3619 -#: src/emc/usr_intf/pncconf/pncconf.glade:57813 -#: emc/usr_intf/stepconf/stepconf.py:1684 -#: emc/usr_intf/stepconf/stepconf.py:2220 -#: emc/usr_intf/stepconf/stepconf.glade:3619 -#: emc/usr_intf/pncconf/pncconf.glade:57813 -#: src/emc/usr_intf/pncconf/pncconf.glade:64786 -msgid "mm / s²" -msgstr "mm / s²" +#: src/emc/usr_intf/stepconf/build_HAL.py:413 +msgid "# This is a generated file do not edit." +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1686 -#: src/emc/usr_intf/stepconf/stepconf.glade:3075 -#: src/emc/usr_intf/pncconf/pncconf.glade:66888 -#: emc/usr_intf/stepconf/stepconf.py:1686 -#: emc/usr_intf/stepconf/stepconf.glade:3075 -#: emc/usr_intf/pncconf/pncconf.glade:66888 -#: src/emc/usr_intf/pncconf/pncconf.glade:73891 -msgid "Steps / mm" -msgstr "Pas / mm" +#: src/emc/usr_intf/stepconf/main_page.glade:35 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Acceleration:" +msgstr "Accélération:" -#: src/emc/usr_intf/stepconf/stepconf.py:1688 -#: emc/usr_intf/stepconf/stepconf.py:1688 -msgid "rev / in" -msgstr "tour / pouce" +#: src/emc/usr_intf/stepconf/main_page.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Jog:" +msgstr "Jog:" -#: src/emc/usr_intf/stepconf/stepconf.py:1689 -#: src/emc/usr_intf/stepconf/stepconf.py:2233 -#: emc/usr_intf/stepconf/stepconf.py:1689 -#: emc/usr_intf/stepconf/stepconf.py:2233 -msgid "in / s" -msgstr "pouces / s" +#: src/emc/usr_intf/stepconf/main_page.glade:63 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Test Area:" +msgstr "Zone de test:" -#: src/emc/usr_intf/stepconf/stepconf.py:1690 -#: src/emc/usr_intf/stepconf/stepconf.py:2234 -#: emc/usr_intf/stepconf/stepconf.py:1690 -#: emc/usr_intf/stepconf/stepconf.py:2234 -msgid "in / s²" -msgstr "pouces / s²" +#: src/emc/usr_intf/stepconf/main_page.glade:97 +msgid "mm/s^2" +msgstr "mm/s^2" -#: src/emc/usr_intf/stepconf/stepconf.py:1692 -#: emc/usr_intf/stepconf/stepconf.py:1692 -msgid "Steps / in" -msgstr "Pas / pouce" +#: src/emc/usr_intf/stepconf/main_page.glade:138 +msgid "mm/s" +msgstr "mm/s" -#: src/emc/usr_intf/stepconf/stepconf.py:2202 -#: src/emc/usr_intf/pncconf/pncconf.py:8893 -#: emc/usr_intf/stepconf/stepconf.py:2202 emc/usr_intf/pncconf/pncconf.py:8891 -#: src/emc/usr_intf/pncconf/pncconf.py:9265 -#, python-format -msgid "%s Axis Test" -msgstr "Test axe %s" +#: src/emc/usr_intf/stepconf/main_page.glade:400 +msgid "±" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:8 -#: src/emc/usr_intf/stepconf/stepconf.glade:21 -#: emc/usr_intf/stepconf/stepconf.glade:8 -#: emc/usr_intf/stepconf/stepconf.glade:21 -msgid "LinuxCNC Stepper Mill Configuration" +#: src/emc/usr_intf/stepconf/main_page.glade:423 +#, fuzzy +msgid "Stepconf -Stepper Configuration Wizard" msgstr "Configuration de LinuxCNC pour moteurs pas à pas" -#: src/emc/usr_intf/stepconf/stepconf.glade:22 -#: emc/usr_intf/stepconf/stepconf.glade:22 +#: src/emc/usr_intf/stepconf/main_page.glade:503 +#: src/emc/usr_intf/pncconf/pncconf.glade:2054 +#: src/emc/usr_intf/pncconf/pncconf.glade:2067 +#: src/emc/usr_intf/pncconf/pncconf.glade:2080 +#: src/emc/usr_intf/pncconf/pncconf.glade:2093 +#: src/emc/usr_intf/pncconf/pncconf.glade:2106 +#: src/emc/usr_intf/pncconf/pncconf.glade:2119 +#: src/emc/usr_intf/pncconf/pncconf.glade:2132 +#: src/emc/usr_intf/pncconf/pncconf.glade:2145 +#: src/emc/usr_intf/pncconf/pncconf.glade:2156 +#: src/emc/usr_intf/pncconf/pncconf.glade:2169 +#: src/emc/usr_intf/pncconf/pncconf.glade:2182 +#: src/emc/usr_intf/pncconf/pncconf.glade:2528 +#: src/emc/usr_intf/pncconf/pncconf.glade:2541 +#: src/emc/usr_intf/pncconf/pncconf.glade:2554 +#: src/emc/usr_intf/pncconf/pncconf.glade:8104 +#: src/emc/usr_intf/pncconf/pncconf.glade:8139 +#: src/emc/usr_intf/pncconf/pncconf.glade:63377 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:1342 +#: src/emc/usr_intf/gscreen/gscreen.glade:1360 +#: src/emc/usr_intf/gscreen/gscreen.glade:1378 +msgid "label" +msgstr "label" + +#: src/emc/usr_intf/stepconf/main_page.glade:605 +#, fuzzy msgid "" "This program creates configuration files (.ini and .hal) for \"step and " "direction\" milling machines and lathes connected to the PC parallel port.\n" "\n" -"Stepconf requires a minimum 800 X 600 display resolution.\n" -"You may need to collapse the 'Driver Timing Settings' and \n" -"Parallel Port Settings' expanders." +"Stepconf requires a minimum 800 X 600 display resolution." msgstr "" "Ce programme crée les fichiers de configuration .ini et .hal pour fraiseuses " "ou tours de type \"step/dir.\" connectés au port parallèle du PC. \n" @@ -7768,29 +8750,143 @@ msgstr "" "Il faudra peut être réduire les 'réglages de timing du \n" "pilote' et augmenter ceux du port parallèle." -#: src/emc/usr_intf/stepconf/stepconf.glade:51 -#: emc/usr_intf/stepconf/stepconf.glade:51 +#: src/emc/usr_intf/stepconf/main_page.glade:628 +#: src/emc/usr_intf/pncconf/pncconf.glade:28799 +#: src/emc/usr_intf/pncconf/pncconf.glade:35720 +#: src/emc/usr_intf/pncconf/pncconf.glade:42643 +#: src/emc/usr_intf/pncconf/pncconf.glade:49566 +#: src/emc/usr_intf/pncconf/pncconf.glade:56489 +msgid "page 1" +msgstr "page 1" + +#: src/emc/usr_intf/stepconf/base.glade:18 +msgid "XYZ" +msgstr "" + +#: src/emc/usr_intf/stepconf/base.glade:21 +msgid "XYZA" +msgstr "" + +#: src/emc/usr_intf/stepconf/base.glade:24 +#, fuzzy +msgid "XZ (Lathe)" +msgstr "" +"XYZ\n" +"XYZA\n" +"XZ (tour)" + +#: src/emc/usr_intf/stepconf/base.glade:79 +msgid "Step _Time:" +msgstr "Step _Time:" + +#: src/emc/usr_intf/stepconf/base.glade:113 +#: src/emc/usr_intf/stepconf/base.glade:165 +#: src/emc/usr_intf/stepconf/base.glade:219 +#: src/emc/usr_intf/stepconf/base.glade:271 +#: src/emc/usr_intf/stepconf/base.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:443 +#: src/emc/usr_intf/pncconf/pncconf.glade:8226 +msgid "ns" +msgstr "ns" + +#: src/emc/usr_intf/stepconf/base.glade:127 +msgid "Step _Space:" +msgstr "Valeur _Space d'un pas:" + +#: src/emc/usr_intf/stepconf/base.glade:181 +msgid "Direction _Hold:" +msgstr "Direction _Hold:" + +#: src/emc/usr_intf/stepconf/base.glade:235 +msgid "_Direction Setup:" +msgstr "Réglage _direction:" + +#: src/emc/usr_intf/stepconf/base.glade:338 +msgid "Driver Timing Settings" +msgstr "Réglages de timing du pilote" + +#: src/emc/usr_intf/stepconf/base.glade:351 +msgid "" +"_Test Base\n" +"Period Jitter " +msgstr "" +"_Test de\n" +" latence" + +#: src/emc/usr_intf/stepconf/base.glade:372 +msgid "Machine _Name:" +msgstr "Nom de la machine:" + +#: src/emc/usr_intf/stepconf/base.glade:386 +msgid "_Axis configuration:" +msgstr "Configuration des _axes" + +#: src/emc/usr_intf/stepconf/base.glade:401 +#, fuzzy +msgid "Reset Default machine _units:" +msgstr "_Unité machine" + +#: src/emc/usr_intf/stepconf/base.glade:416 +#: src/emc/usr_intf/pncconf/pncconf.glade:245 +msgid "Configuration directory:" +msgstr "Répertoire de configuration: " + +#: src/emc/usr_intf/stepconf/base.glade:430 +msgid "D_river type:" +msgstr "Type de d_river:" + +#: src/emc/usr_intf/stepconf/base.glade:545 +msgid "" +"Driver characteristics: (Multiply by 1000 for times specified in µs or " +"microseconds)" +msgstr "" + +#: src/emc/usr_intf/stepconf/base.glade:573 +msgid "Base Period Maximum _Jitter:" +msgstr "Base Period Maximum _Jitter:" + +#: src/emc/usr_intf/stepconf/base.glade:630 +#, fuzzy +msgid "One Parport" +msgstr "%(name)s Parport" + +#: src/emc/usr_intf/stepconf/base.glade:646 +msgid "Two Parports" +msgstr "" + +#: src/emc/usr_intf/stepconf/base.glade:663 +#, fuzzy +msgid "Three Parports" +msgstr "Adresse du troisième port parallèle:" + +#: src/emc/usr_intf/stepconf/base.glade:698 +msgid "Min Base Period:" +msgstr "Période de base minimale:" + +#: src/emc/usr_intf/stepconf/base.glade:735 +msgid "Max step rate:" +msgstr "Fréquence maxi des pas:" + +#: src/emc/usr_intf/stepconf/base.glade:870 +msgid "MM" +msgstr "" + +#: src/emc/usr_intf/stepconf/start.glade:11 msgid "Create a _new configuration" msgstr "Créer une _nouvelle configuration" -#: src/emc/usr_intf/stepconf/stepconf.glade:69 -#: src/emc/usr_intf/pncconf/pncconf.glade:70 -#: emc/usr_intf/stepconf/stepconf.glade:69 -#: emc/usr_intf/pncconf/pncconf.glade:70 +#: src/emc/usr_intf/stepconf/start.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:130 msgid "Modify a configuration already created with this program" msgstr "Modifier une configuration déjà créée avec ce programme" -#: src/emc/usr_intf/stepconf/stepconf.glade:87 -#: src/emc/usr_intf/pncconf/pncconf.glade:88 -#: emc/usr_intf/stepconf/stepconf.glade:87 -#: emc/usr_intf/pncconf/pncconf.glade:88 +#: src/emc/usr_intf/stepconf/start.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:118 msgid "Do you wish to:" msgstr "Que voulez-vous faire:" -#: src/emc/usr_intf/stepconf/stepconf.glade:99 +#: src/emc/usr_intf/stepconf/start.glade:61 #: src/emc/usr_intf/pncconf/pncconf.glade:100 -#: emc/usr_intf/stepconf/stepconf.glade:99 -#: emc/usr_intf/pncconf/pncconf.glade:100 msgid "" "If you have made modifications to this configuration outside this program, " "they will be lost when you select \"Modify a configuration\"" @@ -7799,264 +8895,303 @@ msgstr "" "modifications seront perdues si vous choisissez \"Modifier une configuration" "\"." -#: src/emc/usr_intf/stepconf/stepconf.glade:116 -#: emc/usr_intf/stepconf/stepconf.glade:116 +#: src/emc/usr_intf/stepconf/start.glade:76 msgid "Create a desktop _shortcut (symlink) to configuration files." msgstr "Créer un lien sur le bureau vers les fichiers de configurations." -#: src/emc/usr_intf/stepconf/stepconf.glade:133 -#: emc/usr_intf/stepconf/stepconf.glade:133 +#: src/emc/usr_intf/stepconf/start.glade:93 msgid "Create a desktop _launcher to start LinuxCNC with this configuration." msgstr "Créer un lanceur pour démarrer LinuxCNC avec cette configuration." -#: src/emc/usr_intf/stepconf/stepconf.glade:169 -#: src/emc/usr_intf/pncconf/pncconf.glade:175 -#: emc/usr_intf/stepconf/stepconf.glade:169 -#: emc/usr_intf/pncconf/pncconf.glade:175 -msgid "Basic machine information" -msgstr "Informations machine" +#: src/emc/usr_intf/stepconf/start.glade:124 +#, fuzzy +msgid "Create simulated hardware configuration." +msgstr "Créer une nouvelle configuration" -#: src/emc/usr_intf/stepconf/stepconf.glade:327 -#: emc/usr_intf/stepconf/stepconf.glade:327 -msgid "Step _Time:" -msgstr "Step _Time:" +#: src/emc/usr_intf/stepconf/pport1.glade:35 +#, fuzzy +msgid "Xylotex" +msgstr "Xylotex 8S-3" -#: src/emc/usr_intf/stepconf/stepconf.glade:356 -#: src/emc/usr_intf/stepconf/stepconf.glade:402 -#: src/emc/usr_intf/stepconf/stepconf.glade:449 -#: src/emc/usr_intf/stepconf/stepconf.glade:494 -#: src/emc/usr_intf/stepconf/stepconf.glade:909 -#: src/emc/usr_intf/pncconf/pncconf.glade:458 -#: src/emc/usr_intf/pncconf/pncconf.glade:8256 -#: emc/usr_intf/stepconf/stepconf.glade:356 -#: emc/usr_intf/stepconf/stepconf.glade:402 -#: emc/usr_intf/stepconf/stepconf.glade:449 -#: emc/usr_intf/stepconf/stepconf.glade:494 -#: emc/usr_intf/stepconf/stepconf.glade:909 -#: emc/usr_intf/pncconf/pncconf.glade:458 -#: emc/usr_intf/pncconf/pncconf.glade:8256 -#: src/emc/usr_intf/pncconf/pncconf.glade:466 -#: src/emc/usr_intf/pncconf/pncconf.glade:8280 -msgid "ns" -msgstr "ns" +#: src/emc/usr_intf/stepconf/pport1.glade:38 +msgid "TB6560 3 axes" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:369 -#: emc/usr_intf/stepconf/stepconf.glade:369 -msgid "Step _Space:" -msgstr "Valeur _Space d'un pas:" +#: src/emc/usr_intf/stepconf/pport1.glade:41 +msgid "TB6560 4 axes" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:417 -#: emc/usr_intf/stepconf/stepconf.glade:417 -msgid "Direction _Hold:" -msgstr "Direction _Hold:" +#: src/emc/usr_intf/stepconf/pport1.glade:59 +#: src/emc/usr_intf/pncconf/pncconf.glade:62915 +msgid "Pin _1:" +msgstr "Broche _1:" -#: src/emc/usr_intf/stepconf/stepconf.glade:464 -#: emc/usr_intf/stepconf/stepconf.glade:464 -msgid "_Direction Setup:" -msgstr "Réglage _direction:" +#: src/emc/usr_intf/stepconf/pport1.glade:74 +#: src/emc/usr_intf/stepconf/pport2.glade:768 +#: src/emc/usr_intf/pncconf/pncconf.glade:61685 +#: src/emc/usr_intf/pncconf/pncconf.glade:62901 +msgid "Pin _2:" +msgstr "Broche _2:" + +#: src/emc/usr_intf/stepconf/pport1.glade:89 +#: src/emc/usr_intf/stepconf/pport2.glade:814 +#: src/emc/usr_intf/pncconf/pncconf.glade:61668 +#: src/emc/usr_intf/pncconf/pncconf.glade:62887 +msgid "Pin _3:" +msgstr "Broche _3:" + +#: src/emc/usr_intf/stepconf/pport1.glade:104 +#: src/emc/usr_intf/stepconf/pport2.glade:860 +#: src/emc/usr_intf/pncconf/pncconf.glade:61651 +#: src/emc/usr_intf/pncconf/pncconf.glade:62873 +msgid "Pin _4:" +msgstr "Broche _4:" + +#: src/emc/usr_intf/stepconf/pport1.glade:119 +#: src/emc/usr_intf/stepconf/pport2.glade:906 +#: src/emc/usr_intf/pncconf/pncconf.glade:61634 +#: src/emc/usr_intf/pncconf/pncconf.glade:62859 +msgid "Pin _5:" +msgstr "Broche _5:" + +#: src/emc/usr_intf/stepconf/pport1.glade:134 +#: src/emc/usr_intf/stepconf/pport2.glade:952 +#: src/emc/usr_intf/pncconf/pncconf.glade:61617 +#: src/emc/usr_intf/pncconf/pncconf.glade:62845 +msgid "Pin _6:" +msgstr "Broche _6:" + +#: src/emc/usr_intf/stepconf/pport1.glade:149 +#: src/emc/usr_intf/stepconf/pport2.glade:998 +#: src/emc/usr_intf/pncconf/pncconf.glade:61600 +#: src/emc/usr_intf/pncconf/pncconf.glade:62831 +msgid "Pin _7:" +msgstr "Broche _7:" + +#: src/emc/usr_intf/stepconf/pport1.glade:164 +#: src/emc/usr_intf/stepconf/pport2.glade:1044 +#: src/emc/usr_intf/pncconf/pncconf.glade:61583 +#: src/emc/usr_intf/pncconf/pncconf.glade:62817 +msgid "Pin _8:" +msgstr "Broche _8:" + +#: src/emc/usr_intf/stepconf/pport1.glade:179 +#: src/emc/usr_intf/stepconf/pport2.glade:1090 +#: src/emc/usr_intf/pncconf/pncconf.glade:61566 +#: src/emc/usr_intf/pncconf/pncconf.glade:62803 +msgid "Pin _9:" +msgstr "Broche _9:" + +#: src/emc/usr_intf/stepconf/pport1.glade:194 +#: src/emc/usr_intf/stepconf/pport2.glade:1137 +#: src/emc/usr_intf/pncconf/pncconf.glade:62789 +msgid "_Pin 14:" +msgstr "B_roche 14:" + +#: src/emc/usr_intf/stepconf/pport1.glade:209 +#: src/emc/usr_intf/stepconf/pport2.glade:1185 +#: src/emc/usr_intf/pncconf/pncconf.glade:62775 +msgid "P_in 16:" +msgstr "Br_oche 16:" + +#: src/emc/usr_intf/stepconf/pport1.glade:224 +#: src/emc/usr_intf/stepconf/pport2.glade:1233 +#: src/emc/usr_intf/pncconf/pncconf.glade:62761 +msgid "Pi_n 17:" +msgstr "Bro_che 17:" + +#: src/emc/usr_intf/stepconf/pport1.glade:470 +#: src/emc/usr_intf/stepconf/pport2.glade:692 +msgid "Outputs (PC to Mill):" +msgstr "Sorties (PC vers machine)" + +#: src/emc/usr_intf/stepconf/pport1.glade:483 +#: src/emc/usr_intf/stepconf/pport2.glade:427 +#: src/emc/usr_intf/pncconf/pncconf.glade:61701 +msgid "Pin 1_0:" +msgstr "Broche 1_0:" + +#: src/emc/usr_intf/stepconf/pport1.glade:500 +#: src/emc/usr_intf/stepconf/pport2.glade:475 +#: src/emc/usr_intf/pncconf/pncconf.glade:61717 +msgid "Pin 1_1:" +msgstr "Broche 1_1:" + +#: src/emc/usr_intf/stepconf/pport1.glade:517 +#: src/emc/usr_intf/stepconf/pport2.glade:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:61733 +msgid "Pin 1_2:" +msgstr "Broche 1_2:" + +#: src/emc/usr_intf/stepconf/pport1.glade:534 +#: src/emc/usr_intf/stepconf/pport2.glade:571 +#: src/emc/usr_intf/pncconf/pncconf.glade:61749 +msgid "Pin 1_3:" +msgstr "Broche 1_3:" + +#: src/emc/usr_intf/stepconf/pport1.glade:551 +#: src/emc/usr_intf/stepconf/pport2.glade:619 +#: src/emc/usr_intf/pncconf/pncconf.glade:61765 +msgid "Pin 1_5:" +msgstr "Broche 1_5:" + +#: src/emc/usr_intf/stepconf/pport1.glade:590 +#: src/emc/usr_intf/stepconf/pport2.glade:16 +msgid "Inputs (Mill to PC):" +msgstr "Entrées (machine vers PC)" + +#: src/emc/usr_intf/stepconf/pport1.glade:618 +#: src/emc/usr_intf/stepconf/pport1.glade:632 +#: src/emc/usr_intf/stepconf/pport2.glade:29 +#: src/emc/usr_intf/stepconf/pport2.glade:702 +#: src/emc/usr_intf/pncconf/pncconf.glade:62335 +#: src/emc/usr_intf/pncconf/pncconf.glade:62348 +msgid "Invert" +msgstr "Inverser" + +#: src/emc/usr_intf/stepconf/pport1.glade:1018 +msgid "Output pinout presets:" +msgstr "Sorties préselectionnées" + +#: src/emc/usr_intf/stepconf/pport1.glade:1096 +#, fuzzy +msgid "Parport _Base Address:" +msgstr "Adresse de _base du port parallèle:" + +#: src/emc/usr_intf/stepconf/pport1.glade:1132 +#, fuzzy +msgid "Preset" +msgstr "Reset" + +#: src/emc/usr_intf/stepconf/pport2.glade:47 +#, fuzzy +msgid "Pin 2:" +msgstr "Broche _2:" + +#: src/emc/usr_intf/stepconf/pport2.glade:94 +#, fuzzy +msgid "Pin 3:" +msgstr "Broche _3:" -#: src/emc/usr_intf/stepconf/stepconf.glade:512 -#: emc/usr_intf/stepconf/stepconf.glade:512 -msgid "Driver Timing Settings" -msgstr "Réglages de timing du pilote" +#: src/emc/usr_intf/stepconf/pport2.glade:141 +#, fuzzy +msgid "Pin 4:" +msgstr "Broche _4:" -#: src/emc/usr_intf/stepconf/stepconf.glade:538 -#: emc/usr_intf/stepconf/stepconf.glade:538 -msgid "First Parport _Base Address:" -msgstr "Adresse de _base du port parallèle:" +#: src/emc/usr_intf/stepconf/pport2.glade:188 +#, fuzzy +msgid "Pin 5:" +msgstr "Broche _5:" -#: src/emc/usr_intf/stepconf/stepconf.glade:564 -#: emc/usr_intf/stepconf/stepconf.glade:564 -msgid " Out" -msgstr ".....Sortie" +#: src/emc/usr_intf/stepconf/pport2.glade:235 +#, fuzzy +msgid "Pin 6:" +msgstr "Broche _6:" -#: src/emc/usr_intf/stepconf/stepconf.glade:575 -#: src/emc/usr_intf/stepconf/stepconf.glade:591 -msgid "" -"Out\n" -"In" -msgstr "" -"Sortie\n" -"Entrée" +#: src/emc/usr_intf/stepconf/pport2.glade:282 +#, fuzzy +msgid "Pin 7:" +msgstr "Broche _7:" -#: src/emc/usr_intf/stepconf/stepconf.glade:633 -#: emc/usr_intf/stepconf/stepconf.glade:633 -msgid "S_econd Parport Address:" -msgstr "Adr_esse du second port parallèle:" +#: src/emc/usr_intf/stepconf/pport2.glade:329 +#, fuzzy +msgid "Pin 8:" +msgstr "Broche _8:" -#: src/emc/usr_intf/stepconf/stepconf.glade:650 -#: emc/usr_intf/stepconf/stepconf.glade:650 -msgid "T_hird Parport Address:" -msgstr "Adresse du troisième port parallèle:" +#: src/emc/usr_intf/stepconf/pport2.glade:376 +#, fuzzy +msgid "Pin 9:" +msgstr "Broche _9:" -#: src/emc/usr_intf/stepconf/stepconf.glade:667 -#: emc/usr_intf/stepconf/stepconf.glade:667 -msgid " Parallel Port Settings" -msgstr "Réglages port parallèle" +#: src/emc/usr_intf/stepconf/pport2.glade:721 +#, fuzzy +msgid "Pin _1: " +msgstr "Broche _1:" -#: src/emc/usr_intf/stepconf/stepconf.glade:684 -#: emc/usr_intf/stepconf/stepconf.glade:684 -msgid "" -"_Test Base\n" -"Period Jitter " -msgstr "" -"_Test de\n" -" latence" +#: src/emc/usr_intf/stepconf/pport2.glade:1431 +#, fuzzy +msgid "Out" +msgstr "Couper" -#: src/emc/usr_intf/stepconf/stepconf.glade:703 -#: emc/usr_intf/stepconf/stepconf.glade:703 -msgid "Machine _Name:" -msgstr "Nom de la machine:" +#: src/emc/usr_intf/stepconf/pport2.glade:1434 +#, fuzzy +msgid "In" +msgstr "Inverser" -#: src/emc/usr_intf/stepconf/stepconf.glade:716 -#: emc/usr_intf/stepconf/stepconf.glade:716 -msgid "_Axis configuration:" -msgstr "Configuration des _axes" +#: src/emc/usr_intf/stepconf/spindle.glade:23 +msgid "Use spindle-at-speed:" +msgstr "Utiliser vitesse-broche-atteinte:" -#: src/emc/usr_intf/stepconf/stepconf.glade:730 -#: emc/usr_intf/stepconf/stepconf.glade:730 -msgid "Machine _units:" -msgstr "_Unité machine" +#: src/emc/usr_intf/stepconf/spindle.glade:64 +msgid "Speed display filter gain:" +msgstr "Gain du filtre d'affichage vitesse:" -#: src/emc/usr_intf/stepconf/stepconf.glade:744 -#: src/emc/usr_intf/pncconf/pncconf.glade:246 -#: emc/usr_intf/stepconf/stepconf.glade:744 -#: emc/usr_intf/pncconf/pncconf.glade:246 -#: src/emc/usr_intf/pncconf/pncconf.glade:245 -msgid "Configuration directory:" -msgstr "Répertoire de configuration: " +#: src/emc/usr_intf/stepconf/spindle.glade:99 +msgid "Calibration:" +msgstr "Calibration:" -#: src/emc/usr_intf/stepconf/stepconf.glade:757 -#: emc/usr_intf/stepconf/stepconf.glade:757 -msgid "D_river type:" -msgstr "Type de d_river:" +#: src/emc/usr_intf/stepconf/spindle.glade:113 +msgid "_Speed 1:" +msgstr "Vite_sse 1:" -#: src/emc/usr_intf/stepconf/stepconf.glade:785 -#: src/emc/usr_intf/pncconf/pncconf.glade:326 -#: emc/usr_intf/stepconf/stepconf.glade:785 -#: emc/usr_intf/pncconf/pncconf.glade:326 -#: src/emc/usr_intf/pncconf/pncconf.glade:337 -msgid "" -"Inch\n" -"Millimeter" -msgstr "" -"pouce\n" -"millimètre" +#: src/emc/usr_intf/stepconf/spindle.glade:129 +msgid "_PWM 1:" +msgstr "_PWM 1:" -#: src/emc/usr_intf/stepconf/stepconf.glade:800 -#: src/emc/usr_intf/pncconf/pncconf.glade:291 -#: emc/usr_intf/stepconf/stepconf.glade:800 -#: emc/usr_intf/pncconf/pncconf.glade:291 -#: src/emc/usr_intf/pncconf/pncconf.glade:295 -msgid "" -"XYZ\n" -"XYZA\n" -"XZ (Lathe)" -msgstr "" -"XYZ\n" -"XYZA\n" -"XZ (tour)" +#: src/emc/usr_intf/stepconf/spindle.glade:148 +msgid "S_peed 2:" +msgstr "Vitesse 2:" -#: src/emc/usr_intf/stepconf/stepconf.glade:847 -#: emc/usr_intf/stepconf/stepconf.glade:847 -msgid "" -"Driver characteristics: (Multiply by 1000 for times specified in µs or " -"microseconds)\n" -" Additional signal conditioning or isolation such as optocouplers " -"and RC filters\n" -" can impose timing constraints of their own, in addition to those of " -"the driver." -msgstr "" -"Caractéristiques du pilote: (Multipliez par 1000 pour les temps spécifiés en " -"µs ou microsecondes)\n" -"Mise en forme du signal, isolement galvanique, optocoupleurs ou filtres RC\n" -"peuvent imposer des contraintes de temps à ajouter à celles du pilote." - -#: src/emc/usr_intf/stepconf/stepconf.glade:875 -#: emc/usr_intf/stepconf/stepconf.glade:875 -msgid "Base Period Maximum _Jitter:" -msgstr "Base Period Maximum _Jitter:" +#: src/emc/usr_intf/stepconf/spindle.glade:164 +msgid "P_WM 2:" +msgstr "P_WM 2:" -#: src/emc/usr_intf/stepconf/stepconf.glade:924 -#: emc/usr_intf/stepconf/stepconf.glade:924 -msgid "Max step rate:" -msgstr "Fréquence maxi des pas:" +#: src/emc/usr_intf/stepconf/spindle.glade:183 +msgid "PWM _Rate:" +msgstr "F_réquence PWM:" -#: src/emc/usr_intf/stepconf/stepconf.glade:940 -#: emc/usr_intf/stepconf/stepconf.glade:940 -msgid "Min Base Period:" -msgstr "Période de base minimale:" +#: src/emc/usr_intf/stepconf/spindle.glade:285 +msgid "_Cycles per revolution:" +msgstr "_Cycles par tour:" -#: src/emc/usr_intf/stepconf/stepconf.glade:956 -#: emc/usr_intf/stepconf/stepconf.glade:956 -msgid "" -"_Onscreen prompt for\n" -"tool change" -msgstr "" -"Dialogue à l'écran pour\n" -"le changement d'outil" +#: src/emc/usr_intf/stepconf/spindle.glade:347 +msgid "Enter 0 Hz for \"PDM\" mode" +msgstr "Entrer 0 Hz pour le mode \"PDM\"" -#: src/emc/usr_intf/stepconf/stepconf.glade:1015 -#: emc/usr_intf/stepconf/stepconf.glade:1015 -msgid "Advanced Configuration Options" -msgstr "Options de configuration avancée" +#: src/emc/usr_intf/stepconf/spindle.glade:360 +msgid "Scale %" +msgstr "Echelle %" -#: src/emc/usr_intf/stepconf/stepconf.glade:1033 -#: emc/usr_intf/stepconf/stepconf.glade:1033 +#: src/emc/usr_intf/stepconf/options.glade:50 msgid "Include Halui user interface component" msgstr "Inclure l'interface utilisateur Halui" -#: src/emc/usr_intf/stepconf/stepconf.glade:1074 -#: src/emc/usr_intf/pncconf/pncconf.glade:6745 -#: emc/usr_intf/stepconf/stepconf.glade:1074 -#: emc/usr_intf/pncconf/pncconf.glade:6745 +#: src/emc/usr_intf/stepconf/options.glade:102 #: src/emc/usr_intf/pncconf/pncconf.glade:6753 msgid "Blank program" msgstr "Programme vierge" -#: src/emc/usr_intf/stepconf/stepconf.glade:1089 -#: src/emc/usr_intf/pncconf/pncconf.glade:6760 -#: emc/usr_intf/stepconf/stepconf.glade:1089 -#: emc/usr_intf/pncconf/pncconf.glade:6760 +#: src/emc/usr_intf/stepconf/options.glade:119 #: src/emc/usr_intf/pncconf/pncconf.glade:6768 msgid "Spindle speed display " msgstr "Afficheur vitesse broche" -#: src/emc/usr_intf/stepconf/stepconf.glade:1105 -#: src/emc/usr_intf/stepconf/stepconf.glade:1543 -#: src/emc/usr_intf/pncconf/pncconf.glade:6791 -#: src/emc/usr_intf/pncconf/pncconf.glade:7112 -#: src/emc/usr_intf/pncconf/pncconf.glade:59393 -#: emc/usr_intf/stepconf/stepconf.glade:1105 -#: emc/usr_intf/stepconf/stepconf.glade:1543 -#: emc/usr_intf/pncconf/pncconf.glade:6791 -#: emc/usr_intf/pncconf/pncconf.glade:7112 -#: emc/usr_intf/pncconf/pncconf.glade:59393 +#: src/emc/usr_intf/stepconf/options.glade:136 +#: src/emc/usr_intf/stepconf/options.glade:671 #: src/emc/usr_intf/pncconf/pncconf.glade:6799 #: src/emc/usr_intf/pncconf/pncconf.glade:7120 -#: src/emc/usr_intf/pncconf/pncconf.glade:66366 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Existing custom program" msgstr "Programme personnalisé existant" -#: src/emc/usr_intf/stepconf/stepconf.glade:1120 -#: src/emc/usr_intf/stepconf/stepconf.glade:1559 -#: src/emc/usr_intf/pncconf/pncconf.glade:6806 -#: src/emc/usr_intf/pncconf/pncconf.glade:59409 -#: emc/usr_intf/stepconf/stepconf.glade:1120 -#: emc/usr_intf/stepconf/stepconf.glade:1559 -#: emc/usr_intf/pncconf/pncconf.glade:6806 -#: emc/usr_intf/pncconf/pncconf.glade:59409 +#: src/emc/usr_intf/stepconf/options.glade:153 +#: src/emc/usr_intf/stepconf/options.glade:688 #: src/emc/usr_intf/pncconf/pncconf.glade:6814 -#: src/emc/usr_intf/pncconf/pncconf.glade:66382 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Include connections to HAL" msgstr "Inclure les connections à HAL" -#: src/emc/usr_intf/stepconf/stepconf.glade:1154 -#: src/emc/usr_intf/pncconf/pncconf.glade:6989 -#: src/emc/usr_intf/pncconf/pncconf.glade:7537 -#: emc/usr_intf/stepconf/stepconf.glade:1154 -#: emc/usr_intf/pncconf/pncconf.glade:6989 -#: emc/usr_intf/pncconf/pncconf.glade:7537 +#: src/emc/usr_intf/stepconf/options.glade:202 #: src/emc/usr_intf/pncconf/pncconf.glade:6997 #: src/emc/usr_intf/pncconf/pncconf.glade:7545 msgid "" @@ -8068,98 +9203,65 @@ msgstr "" "panneau\n" "simple" -#: src/emc/usr_intf/stepconf/stepconf.glade:1188 -#: src/emc/usr_intf/pncconf/pncconf.glade:7048 -#: emc/usr_intf/stepconf/stepconf.glade:1188 -#: emc/usr_intf/pncconf/pncconf.glade:7048 +#: src/emc/usr_intf/stepconf/options.glade:243 #: src/emc/usr_intf/pncconf/pncconf.glade:7056 msgid "Include custom PyVCP GUI panel" msgstr "Inclure un panneau PyVCP personnalisé" -#: src/emc/usr_intf/stepconf/stepconf.glade:1321 -#: src/emc/usr_intf/pncconf/pncconf.glade:59199 -#: emc/usr_intf/stepconf/stepconf.glade:1321 -#: emc/usr_intf/pncconf/pncconf.glade:59199 -#: src/emc/usr_intf/pncconf/pncconf.glade:66172 +#: src/emc/usr_intf/stepconf/options.glade:414 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid " Number of analog (float) out pins:" msgstr "Nombre de broches de sortie analogique (float)" -#: src/emc/usr_intf/stepconf/stepconf.glade:1335 -#: src/emc/usr_intf/pncconf/pncconf.glade:59184 -#: emc/usr_intf/stepconf/stepconf.glade:1335 -#: emc/usr_intf/pncconf/pncconf.glade:59184 -#: src/emc/usr_intf/pncconf/pncconf.glade:66157 +#: src/emc/usr_intf/stepconf/options.glade:429 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid " Number of analog (float) in pins:" msgstr "Nombre de broches d'entrée analogique (float)" -#: src/emc/usr_intf/stepconf/stepconf.glade:1349 -#: src/emc/usr_intf/pncconf/pncconf.glade:59169 -#: emc/usr_intf/stepconf/stepconf.glade:1349 -#: emc/usr_intf/pncconf/pncconf.glade:59169 -#: src/emc/usr_intf/pncconf/pncconf.glade:66142 +#: src/emc/usr_intf/stepconf/options.glade:444 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid " Number of analog (s32) out pins:" msgstr "Nombre de broches de sortie analogique (s32)" -#: src/emc/usr_intf/stepconf/stepconf.glade:1363 -#: src/emc/usr_intf/pncconf/pncconf.glade:59153 -#: emc/usr_intf/stepconf/stepconf.glade:1363 -#: emc/usr_intf/pncconf/pncconf.glade:59153 -#: src/emc/usr_intf/pncconf/pncconf.glade:66126 +#: src/emc/usr_intf/stepconf/options.glade:459 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid " Number of analog (s32) in pins:" msgstr "Nombre de broches d'entrée analogique (s32)" -#: src/emc/usr_intf/stepconf/stepconf.glade:1378 -#: emc/usr_intf/stepconf/stepconf.glade:1378 +#: src/emc/usr_intf/stepconf/options.glade:475 msgid "Number of digital out pins:" msgstr "Nombre de broches de sortie numérique:" -#: src/emc/usr_intf/stepconf/stepconf.glade:1403 -#: emc/usr_intf/stepconf/stepconf.glade:1403 +#: src/emc/usr_intf/stepconf/options.glade:506 msgid "Number of digital in pins:" msgstr "Nombre de broches d'entrée numérique:" -#: src/emc/usr_intf/stepconf/stepconf.glade:1414 -#: emc/usr_intf/stepconf/stepconf.glade:1414 +#: src/emc/usr_intf/stepconf/options.glade:518 msgid "setup number of external pins" msgstr "Nombre de broches externes" -#: src/emc/usr_intf/stepconf/stepconf.glade:1429 -#: src/emc/usr_intf/pncconf/pncconf.glade:59213 -#: emc/usr_intf/stepconf/stepconf.glade:1429 -#: emc/usr_intf/pncconf/pncconf.glade:59213 -#: src/emc/usr_intf/pncconf/pncconf.glade:66186 +#: src/emc/usr_intf/stepconf/options.glade:533 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Include modbus master support" msgstr "Inclure le support modbus maître" -#: src/emc/usr_intf/stepconf/stepconf.glade:1500 -#: src/emc/usr_intf/pncconf/pncconf.glade:59333 -#: emc/usr_intf/stepconf/stepconf.glade:1500 -#: emc/usr_intf/pncconf/pncconf.glade:59333 -#: src/emc/usr_intf/pncconf/pncconf.glade:66306 +#: src/emc/usr_intf/stepconf/options.glade:625 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Blank ladder program" msgstr "Programme ladder vierge" -#: src/emc/usr_intf/stepconf/stepconf.glade:1513 -#: src/emc/usr_intf/pncconf/pncconf.glade:59346 -#: emc/usr_intf/stepconf/stepconf.glade:1513 -#: emc/usr_intf/pncconf/pncconf.glade:59346 -#: src/emc/usr_intf/pncconf/pncconf.glade:66319 +#: src/emc/usr_intf/stepconf/options.glade:638 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Estop ladder program" msgstr "Programme ladder d'arrêt d'urgence" -#: src/emc/usr_intf/stepconf/stepconf.glade:1527 -#: src/emc/usr_intf/pncconf/pncconf.glade:59377 -#: emc/usr_intf/stepconf/stepconf.glade:1527 -#: emc/usr_intf/pncconf/pncconf.glade:59377 -#: src/emc/usr_intf/pncconf/pncconf.glade:66350 +#: src/emc/usr_intf/stepconf/options.glade:654 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Serial modbus program" msgstr "Programme Modbus série" -#: src/emc/usr_intf/stepconf/stepconf.glade:1592 -#: src/emc/usr_intf/pncconf/pncconf.glade:59443 -#: emc/usr_intf/stepconf/stepconf.glade:1592 -#: emc/usr_intf/pncconf/pncconf.glade:59443 -#: src/emc/usr_intf/pncconf/pncconf.glade:66416 +#: src/emc/usr_intf/stepconf/options.glade:740 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" "Edit ladder\n" "program" @@ -8167,442 +9269,190 @@ msgstr "" "Editer prog.\n" "ladder" -#: src/emc/usr_intf/stepconf/stepconf.glade:1628 -#: src/emc/usr_intf/pncconf/pncconf.glade:59479 -#: emc/usr_intf/stepconf/stepconf.glade:1628 -#: emc/usr_intf/pncconf/pncconf.glade:59479 -#: src/emc/usr_intf/pncconf/pncconf.glade:66452 +#: src/emc/usr_intf/stepconf/options.glade:781 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Include _Classicladder PLC" msgstr "Inclure l'API _Classicladder" -#: src/emc/usr_intf/stepconf/stepconf.glade:1653 -#: emc/usr_intf/stepconf/stepconf.glade:1653 -msgid "Parallel Port Setup" -msgstr "Réglage port parallèle" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1760 -#: src/emc/usr_intf/pncconf/pncconf.glade:54010 -#: emc/usr_intf/stepconf/stepconf.glade:1760 -#: emc/usr_intf/pncconf/pncconf.glade:54010 -#: src/emc/usr_intf/pncconf/pncconf.glade:60957 -msgid "Pin _1:" -msgstr "Broche _1:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1774 -#: src/emc/usr_intf/pncconf/pncconf.glade:54024 -#: src/emc/usr_intf/pncconf/pncconf.glade:55239 -#: emc/usr_intf/stepconf/stepconf.glade:1774 -#: emc/usr_intf/pncconf/pncconf.glade:54024 -#: emc/usr_intf/pncconf/pncconf.glade:55239 -#: src/emc/usr_intf/pncconf/pncconf.glade:60971 -#: src/emc/usr_intf/pncconf/pncconf.glade:62186 -msgid "Pin _2:" -msgstr "Broche _2:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1788 -#: src/emc/usr_intf/pncconf/pncconf.glade:54038 -#: src/emc/usr_intf/pncconf/pncconf.glade:55256 -#: emc/usr_intf/stepconf/stepconf.glade:1788 -#: emc/usr_intf/pncconf/pncconf.glade:54038 -#: emc/usr_intf/pncconf/pncconf.glade:55256 -#: src/emc/usr_intf/pncconf/pncconf.glade:60985 -#: src/emc/usr_intf/pncconf/pncconf.glade:62203 -msgid "Pin _3:" -msgstr "Broche _3:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1802 -#: src/emc/usr_intf/pncconf/pncconf.glade:54052 -#: src/emc/usr_intf/pncconf/pncconf.glade:55273 -#: emc/usr_intf/stepconf/stepconf.glade:1802 -#: emc/usr_intf/pncconf/pncconf.glade:54052 -#: emc/usr_intf/pncconf/pncconf.glade:55273 -#: src/emc/usr_intf/pncconf/pncconf.glade:60999 -#: src/emc/usr_intf/pncconf/pncconf.glade:62220 -msgid "Pin _4:" -msgstr "Broche _4:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1816 -#: src/emc/usr_intf/pncconf/pncconf.glade:54066 -#: src/emc/usr_intf/pncconf/pncconf.glade:55290 -#: emc/usr_intf/stepconf/stepconf.glade:1816 -#: emc/usr_intf/pncconf/pncconf.glade:54066 -#: emc/usr_intf/pncconf/pncconf.glade:55290 -#: src/emc/usr_intf/pncconf/pncconf.glade:61013 -#: src/emc/usr_intf/pncconf/pncconf.glade:62237 -msgid "Pin _5:" -msgstr "Broche _5:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1830 -#: src/emc/usr_intf/pncconf/pncconf.glade:54080 -#: src/emc/usr_intf/pncconf/pncconf.glade:55307 -#: emc/usr_intf/stepconf/stepconf.glade:1830 -#: emc/usr_intf/pncconf/pncconf.glade:54080 -#: emc/usr_intf/pncconf/pncconf.glade:55307 -#: src/emc/usr_intf/pncconf/pncconf.glade:61027 -#: src/emc/usr_intf/pncconf/pncconf.glade:62254 -msgid "Pin _6:" -msgstr "Broche _6:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1844 -#: src/emc/usr_intf/pncconf/pncconf.glade:54094 -#: src/emc/usr_intf/pncconf/pncconf.glade:55324 -#: emc/usr_intf/stepconf/stepconf.glade:1844 -#: emc/usr_intf/pncconf/pncconf.glade:54094 -#: emc/usr_intf/pncconf/pncconf.glade:55324 -#: src/emc/usr_intf/pncconf/pncconf.glade:61041 -#: src/emc/usr_intf/pncconf/pncconf.glade:62271 -msgid "Pin _7:" -msgstr "Broche _7:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1858 -#: src/emc/usr_intf/pncconf/pncconf.glade:54108 -#: src/emc/usr_intf/pncconf/pncconf.glade:55341 -#: emc/usr_intf/stepconf/stepconf.glade:1858 -#: emc/usr_intf/pncconf/pncconf.glade:54108 -#: emc/usr_intf/pncconf/pncconf.glade:55341 -#: src/emc/usr_intf/pncconf/pncconf.glade:61055 -#: src/emc/usr_intf/pncconf/pncconf.glade:62288 -msgid "Pin _8:" -msgstr "Broche _8:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1872 -#: src/emc/usr_intf/pncconf/pncconf.glade:54122 -#: src/emc/usr_intf/pncconf/pncconf.glade:55358 -#: emc/usr_intf/stepconf/stepconf.glade:1872 -#: emc/usr_intf/pncconf/pncconf.glade:54122 -#: emc/usr_intf/pncconf/pncconf.glade:55358 -#: src/emc/usr_intf/pncconf/pncconf.glade:61069 -#: src/emc/usr_intf/pncconf/pncconf.glade:62305 -msgid "Pin _9:" -msgstr "Broche _9:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1886 -#: src/emc/usr_intf/pncconf/pncconf.glade:54136 -#: emc/usr_intf/stepconf/stepconf.glade:1886 -#: emc/usr_intf/pncconf/pncconf.glade:54136 -#: src/emc/usr_intf/pncconf/pncconf.glade:61083 -msgid "_Pin 14:" -msgstr "B_roche 14:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1900 -#: src/emc/usr_intf/pncconf/pncconf.glade:54150 -#: emc/usr_intf/stepconf/stepconf.glade:1900 -#: emc/usr_intf/pncconf/pncconf.glade:54150 -#: src/emc/usr_intf/pncconf/pncconf.glade:61097 -msgid "P_in 16:" -msgstr "Br_oche 16:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1914 -#: src/emc/usr_intf/pncconf/pncconf.glade:54164 -#: emc/usr_intf/stepconf/stepconf.glade:1914 -#: emc/usr_intf/pncconf/pncconf.glade:54164 -#: src/emc/usr_intf/pncconf/pncconf.glade:61111 -msgid "Pi_n 17:" -msgstr "Bro_che 17:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2258 -#: emc/usr_intf/stepconf/stepconf.glade:2258 -msgid "Outputs (PC to Mill):" -msgstr "Sorties (PC vers machine)" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2270 -#: src/emc/usr_intf/pncconf/pncconf.glade:55222 -#: emc/usr_intf/stepconf/stepconf.glade:2270 -#: emc/usr_intf/pncconf/pncconf.glade:55222 -#: src/emc/usr_intf/pncconf/pncconf.glade:62169 -msgid "Pin 1_0:" -msgstr "Broche 1_0:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2286 -#: src/emc/usr_intf/pncconf/pncconf.glade:55206 -#: emc/usr_intf/stepconf/stepconf.glade:2286 -#: emc/usr_intf/pncconf/pncconf.glade:55206 -#: src/emc/usr_intf/pncconf/pncconf.glade:62153 -msgid "Pin 1_1:" -msgstr "Broche 1_1:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2302 -#: src/emc/usr_intf/pncconf/pncconf.glade:55190 -#: emc/usr_intf/stepconf/stepconf.glade:2302 -#: emc/usr_intf/pncconf/pncconf.glade:55190 -#: src/emc/usr_intf/pncconf/pncconf.glade:62137 -msgid "Pin 1_2:" -msgstr "Broche 1_2:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2318 -#: src/emc/usr_intf/pncconf/pncconf.glade:55174 -#: emc/usr_intf/stepconf/stepconf.glade:2318 -#: emc/usr_intf/pncconf/pncconf.glade:55174 -#: src/emc/usr_intf/pncconf/pncconf.glade:62121 -msgid "Pin 1_3:" -msgstr "Broche 1_3:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2334 -#: src/emc/usr_intf/pncconf/pncconf.glade:55158 -#: emc/usr_intf/stepconf/stepconf.glade:2334 -#: emc/usr_intf/pncconf/pncconf.glade:55158 -#: src/emc/usr_intf/pncconf/pncconf.glade:62105 -msgid "Pin 1_5:" -msgstr "Broche 1_5:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2399 -#: emc/usr_intf/stepconf/stepconf.glade:2399 -msgid "Inputs (Mill to PC):" -msgstr "Entrées (machine vers PC)" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2425 -#: src/emc/usr_intf/stepconf/stepconf.glade:2438 -#: src/emc/usr_intf/pncconf/pncconf.glade:54578 -#: src/emc/usr_intf/pncconf/pncconf.glade:54591 -#: emc/usr_intf/stepconf/stepconf.glade:2425 -#: emc/usr_intf/stepconf/stepconf.glade:2438 -#: emc/usr_intf/pncconf/pncconf.glade:54578 -#: emc/usr_intf/pncconf/pncconf.glade:54591 -#: src/emc/usr_intf/pncconf/pncconf.glade:61525 -#: src/emc/usr_intf/pncconf/pncconf.glade:61538 -msgid "Invert" -msgstr "Inverser" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2887 -#: emc/usr_intf/stepconf/stepconf.glade:2887 -msgid "_Sherline Outputs" -msgstr "Sorties de type _Sherline" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2905 -#: emc/usr_intf/stepconf/stepconf.glade:2905 -msgid "_Xylotex Outputs" -msgstr "Sorties de type _Xylotex" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2923 -#: emc/usr_intf/stepconf/stepconf.glade:2923 -msgid "Output pinout presets:" -msgstr "Sorties préselectionnées" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3022 -#: src/emc/usr_intf/pncconf/pncconf.glade:57970 -#: emc/usr_intf/stepconf/stepconf.glade:3022 -#: emc/usr_intf/pncconf/pncconf.glade:57970 -#: src/emc/usr_intf/pncconf/pncconf.glade:64943 -msgid "X Axis Configuration" -msgstr "Configuration axe X" +#: src/emc/usr_intf/stepconf/options.glade:802 +#, fuzzy +msgid "_Onscreen prompt for manual tool change" +msgstr "Prompt à l'écran pour le changement d'outil" -#: src/emc/usr_intf/stepconf/stepconf.glade:3090 -#: emc/usr_intf/stepconf/stepconf.glade:3090 +#: src/emc/usr_intf/stepconf/axisx.glade:31 +#: src/emc/usr_intf/stepconf/axisy.glade:31 +#: src/emc/usr_intf/stepconf/axisz.glade:31 +#: src/emc/usr_intf/stepconf/axisa.glade:45 msgid "_Motor steps per revolution:" msgstr "No_mbre de pas moteur par tour:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3103 -#: emc/usr_intf/stepconf/stepconf.glade:3103 +#: src/emc/usr_intf/stepconf/axisx.glade:45 +#: src/emc/usr_intf/stepconf/axisy.glade:44 +#: src/emc/usr_intf/stepconf/axisz.glade:44 +#: src/emc/usr_intf/stepconf/axisa.glade:58 msgid "_Driver Microstepping:" msgstr "Micropas du _pilote:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3118 -#: emc/usr_intf/stepconf/stepconf.glade:3118 +#: src/emc/usr_intf/stepconf/axisx.glade:61 +#: src/emc/usr_intf/stepconf/axisy.glade:59 +#: src/emc/usr_intf/stepconf/axisz.glade:59 +#: src/emc/usr_intf/stepconf/axisa.glade:73 msgid "_Pulley teeth (Motor:Leadscrew):" msgstr "Dents des _poulies (moteur:vis):" -#: src/emc/usr_intf/stepconf/stepconf.glade:3133 -#: emc/usr_intf/stepconf/stepconf.glade:3133 +#: src/emc/usr_intf/stepconf/axisx.glade:77 +#: src/emc/usr_intf/stepconf/axisy.glade:74 +#: src/emc/usr_intf/stepconf/axisz.glade:74 +#: src/emc/usr_intf/stepconf/axisa.glade:88 msgid "_Leadscrew Pitch:" msgstr "Pas de _la vis:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3148 -#: src/emc/usr_intf/pncconf/pncconf.glade:57858 -#: emc/usr_intf/stepconf/stepconf.glade:3148 -#: emc/usr_intf/pncconf/pncconf.glade:57858 -#: src/emc/usr_intf/pncconf/pncconf.glade:64831 +#: src/emc/usr_intf/stepconf/axisx.glade:93 +#: src/emc/usr_intf/stepconf/axisy.glade:89 +#: src/emc/usr_intf/stepconf/axisz.glade:89 +#: src/emc/usr_intf/stepconf/axisa.glade:103 +#: src/emc/usr_intf/pncconf/pncconf.glade:64687 msgid "Maximum _Velocity:" msgstr "_Vitesse maximale:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3163 -#: src/emc/usr_intf/pncconf/pncconf.glade:57843 -#: emc/usr_intf/stepconf/stepconf.glade:3163 -#: emc/usr_intf/pncconf/pncconf.glade:57843 -#: src/emc/usr_intf/pncconf/pncconf.glade:64816 +#: src/emc/usr_intf/stepconf/axisx.glade:109 +#: src/emc/usr_intf/stepconf/axisy.glade:104 +#: src/emc/usr_intf/stepconf/axisz.glade:104 +#: src/emc/usr_intf/stepconf/axisa.glade:118 +#: src/emc/usr_intf/pncconf/pncconf.glade:64702 msgid "Maximum _Acceleration:" msgstr "_Accélération maximale:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3178 -#: src/emc/usr_intf/pncconf/pncconf.glade:67063 -#: emc/usr_intf/stepconf/stepconf.glade:3178 -#: emc/usr_intf/pncconf/pncconf.glade:67063 -#: src/emc/usr_intf/pncconf/pncconf.glade:74066 +#: src/emc/usr_intf/stepconf/axisx.glade:125 +#: src/emc/usr_intf/stepconf/axisy.glade:119 +#: src/emc/usr_intf/stepconf/axisz.glade:119 +#: src/emc/usr_intf/stepconf/axisa.glade:133 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Time to accelerate to max speed:" msgstr "Temps pour accélérer à la vitesse maxi:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3193 -#: emc/usr_intf/stepconf/stepconf.glade:3193 +#: src/emc/usr_intf/stepconf/axisx.glade:141 +#: src/emc/usr_intf/stepconf/axisy.glade:134 +#: src/emc/usr_intf/stepconf/axisz.glade:134 +#: src/emc/usr_intf/stepconf/axisa.glade:148 msgid "Distance to accelerate to max speed:" msgstr "Distance pour accélérer à la vitesse maxi:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3292 -#: src/emc/usr_intf/pncconf/pncconf.glade:67036 -#: emc/usr_intf/stepconf/stepconf.glade:3292 -#: emc/usr_intf/pncconf/pncconf.glade:67036 -#: src/emc/usr_intf/pncconf/pncconf.glade:74039 +#: src/emc/usr_intf/stepconf/axisx.glade:271 +#: src/emc/usr_intf/stepconf/axisy.glade:263 +#: src/emc/usr_intf/stepconf/axisz.glade:263 +#: src/emc/usr_intf/stepconf/axisa.glade:277 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Pulse rate at max speed:" msgstr "Fréquence des impulsions à la vitesse maxi:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3362 -#: emc/usr_intf/stepconf/stepconf.glade:3362 +#: src/emc/usr_intf/stepconf/axisx.glade:342 +#: src/emc/usr_intf/stepconf/axisy.glade:334 +#: src/emc/usr_intf/stepconf/axisz.glade:334 +#: src/emc/usr_intf/stepconf/axisa.glade:348 msgid "_Home location:" msgstr "Emplacement de l'origine mac_hine:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3377 -#: emc/usr_intf/stepconf/stepconf.glade:3377 +#: src/emc/usr_intf/stepconf/axisx.glade:358 +#: src/emc/usr_intf/stepconf/axisy.glade:349 +#: src/emc/usr_intf/stepconf/axisz.glade:349 +#: src/emc/usr_intf/stepconf/axisa.glade:363 msgid "Home _Switch location:" msgstr "Po_sition du contact d'origine machine:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3392 -#: emc/usr_intf/stepconf/stepconf.glade:3392 +#: src/emc/usr_intf/stepconf/axisx.glade:374 +#: src/emc/usr_intf/stepconf/axisy.glade:364 +#: src/emc/usr_intf/stepconf/axisz.glade:364 +#: src/emc/usr_intf/stepconf/axisa.glade:378 msgid "Home Sear_ch velocity:" msgstr "Vitesse de re_cherche de l'origine:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3407 -#: emc/usr_intf/stepconf/stepconf.glade:3407 +#: src/emc/usr_intf/stepconf/axisx.glade:390 +#: src/emc/usr_intf/stepconf/axisy.glade:379 +#: src/emc/usr_intf/stepconf/axisz.glade:379 +#: src/emc/usr_intf/stepconf/axisa.glade:393 msgid "Home La_tch direction:" msgstr "Dégagement du contac_t d'origine:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3420 -#: src/emc/usr_intf/pncconf/pncconf.glade:66232 -#: src/emc/usr_intf/pncconf/pncconf.glade:66274 -#: src/emc/usr_intf/pncconf/pncconf.glade:66505 -#: src/emc/usr_intf/pncconf/pncconf.glade:66570 -#: emc/usr_intf/stepconf/stepconf.glade:3420 -#: emc/usr_intf/pncconf/pncconf.glade:66232 -#: emc/usr_intf/pncconf/pncconf.glade:66274 -#: emc/usr_intf/pncconf/pncconf.glade:66505 -#: emc/usr_intf/pncconf/pncconf.glade:66570 -#: src/emc/usr_intf/pncconf/pncconf.glade:73235 -#: src/emc/usr_intf/pncconf/pncconf.glade:73277 -#: src/emc/usr_intf/pncconf/pncconf.glade:73508 -#: src/emc/usr_intf/pncconf/pncconf.glade:73573 +#: src/emc/usr_intf/stepconf/axisx.glade:404 +#: src/emc/usr_intf/stepconf/axisy.glade:393 +#: src/emc/usr_intf/stepconf/axisz.glade:393 +#: src/emc/usr_intf/stepconf/axisa.glade:407 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "_:" msgstr "_:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3437 -#: src/emc/usr_intf/pncconf/pncconf.glade:58536 -#: emc/usr_intf/stepconf/stepconf.glade:3437 -#: emc/usr_intf/pncconf/pncconf.glade:58536 -#: src/emc/usr_intf/pncconf/pncconf.glade:65509 -msgid "" -"Same\n" -"Opposite" -msgstr "" -"Identique\n" -"Opposée" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3492 -#: emc/usr_intf/stepconf/stepconf.glade:3492 +#: src/emc/usr_intf/stepconf/axisx.glade:498 +#: src/emc/usr_intf/stepconf/axisy.glade:486 +#: src/emc/usr_intf/stepconf/axisz.glade:486 +#: src/emc/usr_intf/stepconf/axisa.glade:500 msgid "Tab_le travel:" msgstr "Course de la tab_le:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3519 -#: emc/usr_intf/stepconf/stepconf.glade:3519 +#: src/emc/usr_intf/stepconf/axisx.glade:531 +#: src/emc/usr_intf/stepconf/axisy.glade:518 +#: src/emc/usr_intf/stepconf/axisz.glade:518 +#: src/emc/usr_intf/stepconf/axisa.glade:532 msgid "t_o" msgstr " à " -#: src/emc/usr_intf/stepconf/stepconf.glade:3649 -#: emc/usr_intf/stepconf/stepconf.glade:3649 +#: src/emc/usr_intf/stepconf/axisx.glade:677 +#: src/emc/usr_intf/stepconf/axisy.glade:663 +#: src/emc/usr_intf/stepconf/axisz.glade:663 +#: src/emc/usr_intf/stepconf/axisa.glade:677 msgid "s" msgstr "s" -#: src/emc/usr_intf/stepconf/stepconf.glade:3703 -#: emc/usr_intf/stepconf/stepconf.glade:3703 +#: src/emc/usr_intf/stepconf/axisx.glade:738 +#: src/emc/usr_intf/stepconf/axisy.glade:724 +#: src/emc/usr_intf/stepconf/axisz.glade:724 +#: src/emc/usr_intf/stepconf/axisa.glade:738 msgid "T_est this axis" msgstr "T_ester cet axe" -#: src/emc/usr_intf/stepconf/stepconf.glade:3729 -#: emc/usr_intf/stepconf/stepconf.glade:3729 +#: src/emc/usr_intf/stepconf/axisx.glade:765 +#: src/emc/usr_intf/stepconf/axisy.glade:751 +#: src/emc/usr_intf/stepconf/axisz.glade:751 +#: src/emc/usr_intf/stepconf/axisa.glade:765 msgid "Axis SCALE:" msgstr "Echelle de l'axe:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3765 -#: emc/usr_intf/stepconf/stepconf.glade:3765 -msgid "Spindle Configuration" -msgstr "Configuration broche" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3785 -#: emc/usr_intf/stepconf/stepconf.glade:3785 -msgid "Use spindle-at-speed:" -msgstr "Utiliser vitesse-broche-atteinte:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3841 -#: emc/usr_intf/stepconf/stepconf.glade:3841 -msgid "Speed display filter gain:" -msgstr "Gain du filtre d'affichage vitesse:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3870 -#: emc/usr_intf/stepconf/stepconf.glade:3870 -msgid "Calibration:" -msgstr "Calibration:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3883 -#: emc/usr_intf/stepconf/stepconf.glade:3883 -msgid "_Speed 1:" -msgstr "Vite_sse 1:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3898 -#: emc/usr_intf/stepconf/stepconf.glade:3898 -msgid "_PWM 1:" -msgstr "_PWM 1:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3916 -#: emc/usr_intf/stepconf/stepconf.glade:3916 -msgid "S_peed 2:" -msgstr "Vitesse 2:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3931 -#: emc/usr_intf/stepconf/stepconf.glade:3931 -msgid "P_WM 2:" -msgstr "P_WM 2:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3949 -#: emc/usr_intf/stepconf/stepconf.glade:3949 -msgid "PWM _Rate:" -msgstr "F_réquence PWM:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4025 -#: emc/usr_intf/stepconf/stepconf.glade:4025 -msgid "_Cycles per revolution:" -msgstr "_Cycles par tour:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4079 -#: emc/usr_intf/stepconf/stepconf.glade:4079 -msgid "Enter 0 Hz for \"PDM\" mode" -msgstr "Entrer 0 Hz pour le mode \"PDM\"" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4091 -#: emc/usr_intf/stepconf/stepconf.glade:4091 -msgid "Scale %" -msgstr "Echelle %" +#: src/emc/usr_intf/stepconf/axisx.glade:833 +#: src/emc/usr_intf/stepconf/axisy.glade:819 +#: src/emc/usr_intf/stepconf/axisz.glade:819 +#: src/emc/usr_intf/stepconf/axisa.glade:12 +msgid "Same" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:60002 -#: emc/usr_intf/stepconf/stepconf.glade:4113 -#: emc/usr_intf/pncconf/pncconf.glade:60002 -#: src/emc/usr_intf/pncconf/pncconf.glade:66975 -msgid "Machine configuration complete" -msgstr "Configuration machine complète" +#: src/emc/usr_intf/stepconf/axisx.glade:836 +#: src/emc/usr_intf/stepconf/axisy.glade:822 +#: src/emc/usr_intf/stepconf/axisz.glade:822 +#: src/emc/usr_intf/stepconf/axisa.glade:15 +#, fuzzy +msgid "Opposite" +msgstr "" +"Identique\n" +"Opposée" -#: src/emc/usr_intf/stepconf/stepconf.glade:4114 -#: src/emc/usr_intf/pncconf/pncconf.glade:60003 -#: emc/usr_intf/stepconf/stepconf.glade:4114 -#: emc/usr_intf/pncconf/pncconf.glade:60003 +#: src/emc/usr_intf/stepconf/finished.glade:6 +#, fuzzy msgid "" -"All the necessary information has now been gathered. Click \"Apply\" to " -"write your configuration files to disk.\n" -"If you experience lockups while running LinuxCNC, you will need to decrease " -"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" +"All the necessary information has now been gathered. \n" +"Click \"Done\" to write your configuration files to disk.\n" "\n" -"If you experience lost steps while running LinuxCNC, first verify that you " -"entered the proper timings for your stepper drivers. If that does not fix " -"the problem, then run a more thorough latency test as described on the " -"linuxcnc.org wiki:\n" +"If you experience lockups while running LinuxCNC:\n" +"-you will need to decrease the maximum velocity which will have the effect " +"of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC:\n" +"-first verify that you entered the proper timings for your stepper " +"drivers. \n" +"-then run a more thorough latency test as described on the linuxcnc.org " +"wiki.\n" " http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" "\n" -"If you experience the \"Unexpected Realtime Delay\" message, run a more " -"thorough latency test as described on the linuxcnc.org wiki: \n" +"If you experience the \"Unexpected Realtime Delay\" message:\n" +"-run a more thorough latency test as described on the linuxcnc.org wiki: \n" " http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" msgstr "" "Toutes les informations nécessaires ont été recueillies. \n" @@ -8620,103 +9470,7 @@ msgstr "" "\n" "Faire de même si le message \"Unexpected Realtime Delay\" apparait. " -#: src/emc/usr_intf/stepconf/stepconf.glade:4160 -#: src/emc/usr_intf/pncconf/pncconf.glade:60462 -#: src/emc/usr_intf/pncconf/pncconf.glade:61557 -#: src/emc/usr_intf/pncconf/pncconf.glade:62650 -#: src/emc/usr_intf/pncconf/pncconf.glade:63743 -#: src/emc/usr_intf/pncconf/pncconf.glade:64842 -#: emc/usr_intf/stepconf/stepconf.glade:4160 -#: emc/usr_intf/pncconf/pncconf.glade:60462 -#: emc/usr_intf/pncconf/pncconf.glade:61557 -#: emc/usr_intf/pncconf/pncconf.glade:62650 -#: emc/usr_intf/pncconf/pncconf.glade:63743 -#: emc/usr_intf/pncconf/pncconf.glade:64842 -#: src/emc/usr_intf/pncconf/pncconf.glade:67438 -#: src/emc/usr_intf/pncconf/pncconf.glade:68533 -#: src/emc/usr_intf/pncconf/pncconf.glade:69626 -#: src/emc/usr_intf/pncconf/pncconf.glade:70719 -#: src/emc/usr_intf/pncconf/pncconf.glade:71818 -msgid "Acceleration:" -msgstr "Accélération:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4174 -#: src/emc/usr_intf/pncconf/pncconf.glade:60231 -#: src/emc/usr_intf/pncconf/pncconf.glade:60695 -#: src/emc/usr_intf/pncconf/pncconf.glade:61788 -#: src/emc/usr_intf/pncconf/pncconf.glade:62881 -#: src/emc/usr_intf/pncconf/pncconf.glade:63974 -#: src/emc/usr_intf/pncconf/pncconf.glade:64954 -#: emc/usr_intf/stepconf/stepconf.glade:4174 -#: emc/usr_intf/pncconf/pncconf.glade:60231 -#: emc/usr_intf/pncconf/pncconf.glade:60695 -#: emc/usr_intf/pncconf/pncconf.glade:61788 -#: emc/usr_intf/pncconf/pncconf.glade:62881 -#: emc/usr_intf/pncconf/pncconf.glade:63974 -#: emc/usr_intf/pncconf/pncconf.glade:64954 -#: src/emc/usr_intf/pncconf/pncconf.glade:67207 -#: src/emc/usr_intf/pncconf/pncconf.glade:67671 -#: src/emc/usr_intf/pncconf/pncconf.glade:68764 -#: src/emc/usr_intf/pncconf/pncconf.glade:69857 -#: src/emc/usr_intf/pncconf/pncconf.glade:70950 -#: src/emc/usr_intf/pncconf/pncconf.glade:71930 -msgid "Jog:" -msgstr "Jog:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4188 -#: src/emc/usr_intf/pncconf/pncconf.glade:60681 -#: src/emc/usr_intf/pncconf/pncconf.glade:61774 -#: src/emc/usr_intf/pncconf/pncconf.glade:62867 -#: src/emc/usr_intf/pncconf/pncconf.glade:63960 -#: emc/usr_intf/stepconf/stepconf.glade:4188 -#: emc/usr_intf/pncconf/pncconf.glade:60681 -#: emc/usr_intf/pncconf/pncconf.glade:61774 -#: emc/usr_intf/pncconf/pncconf.glade:62867 -#: emc/usr_intf/pncconf/pncconf.glade:63960 -#: src/emc/usr_intf/pncconf/pncconf.glade:67657 -#: src/emc/usr_intf/pncconf/pncconf.glade:68750 -#: src/emc/usr_intf/pncconf/pncconf.glade:69843 -#: src/emc/usr_intf/pncconf/pncconf.glade:70936 -msgid "Test Area:" -msgstr "Zone de test:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4217 -#: emc/usr_intf/stepconf/stepconf.glade:4217 -msgid "mm/s^2" -msgstr "mm/s^2" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4253 -#: emc/usr_intf/stepconf/stepconf.glade:4253 -msgid "mm/s" -msgstr "mm/s" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4329 -#: src/emc/usr_intf/pncconf/pncconf.glade:60620 -#: src/emc/usr_intf/pncconf/pncconf.glade:61713 -#: src/emc/usr_intf/pncconf/pncconf.glade:62806 -#: src/emc/usr_intf/pncconf/pncconf.glade:63899 -#: src/emc/usr_intf/pncconf/pncconf.glade:65066 -#: emc/usr_intf/stepconf/stepconf.glade:4329 -#: emc/usr_intf/pncconf/pncconf.glade:60620 -#: emc/usr_intf/pncconf/pncconf.glade:61713 -#: emc/usr_intf/pncconf/pncconf.glade:62806 -#: emc/usr_intf/pncconf/pncconf.glade:63899 -#: emc/usr_intf/pncconf/pncconf.glade:65066 -#: src/emc/usr_intf/pncconf/pncconf.glade:67596 -#: src/emc/usr_intf/pncconf/pncconf.glade:68689 -#: src/emc/usr_intf/pncconf/pncconf.glade:69782 -#: src/emc/usr_intf/pncconf/pncconf.glade:70875 -#: src/emc/usr_intf/pncconf/pncconf.glade:72042 -msgid "" -"±\n" -"+\n" -"-\n" -msgstr "" -"±\n" -"+\n" -"-\n" - -#: emc/usr_intf/pncconf/pncconf.py:79 src/emc/usr_intf/pncconf/pncconf.py:79 +#: src/emc/usr_intf/pncconf/pncconf.py:81 #, fuzzy msgid "" "PNCconf encountered an error. The following information may be useful in " @@ -8727,1472 +9481,1317 @@ msgstr "" "résoudre ce dysfonctionnement:\n" "\n" -#: src/emc/usr_intf/pncconf/pncconf.py:149 emc/usr_intf/pncconf/pncconf.py:149 +#: src/emc/usr_intf/pncconf/pncconf.py:149 +msgid "Keling 4030" +msgstr "Keling 4030" + +#: src/emc/usr_intf/pncconf/pncconf.py:151 msgid "Not Used" msgstr "Inutilisé" -#: src/emc/usr_intf/pncconf/pncconf.py:149 -#: src/emc/usr_intf/pncconf/pncconf.py:150 emc/usr_intf/pncconf/pncconf.py:149 -#: emc/usr_intf/pncconf/pncconf.py:150 src/emc/usr_intf/pncconf/pncconf.py:174 +#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:176 msgid "Dummy" msgstr "Factice" -#: src/emc/usr_intf/pncconf/pncconf.py:150 emc/usr_intf/pncconf/pncconf.py:150 +#: src/emc/usr_intf/pncconf/pncconf.py:152 msgid "8i20 Servo Drive" msgstr "8i20 Pilote Servo " -#: src/emc/usr_intf/pncconf/pncconf.py:151 emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:153 msgid "POT Output" msgstr "Sortie POT" -#: src/emc/usr_intf/pncconf/pncconf.py:151 emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:153 msgid "POT Enable" msgstr "Validation POT" -#: src/emc/usr_intf/pncconf/pncconf.py:151 emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:153 msgid "POT Direction" msgstr "Direction POT" -#: src/emc/usr_intf/pncconf/pncconf.py:152 emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:154 msgid "GPIO Input" msgstr "Entrée GPIO" -#: src/emc/usr_intf/pncconf/pncconf.py:152 emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:154 msgid "GPIO Output" msgstr "Sortie GPIO" -#: src/emc/usr_intf/pncconf/pncconf.py:152 emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:154 msgid "GPIO O Drain" msgstr "GPIO O Drain" -#: src/emc/usr_intf/pncconf/pncconf.py:153 emc/usr_intf/pncconf/pncconf.py:153 +#: src/emc/usr_intf/pncconf/pncconf.py:155 msgid "Quad Encoder-A" msgstr "Codeur quad.-A" -#: src/emc/usr_intf/pncconf/pncconf.py:153 emc/usr_intf/pncconf/pncconf.py:153 +#: src/emc/usr_intf/pncconf/pncconf.py:155 msgid "Quad Encoder-B" msgstr "Codeur quad.-B" -#: src/emc/usr_intf/pncconf/pncconf.py:153 emc/usr_intf/pncconf/pncconf.py:153 +#: src/emc/usr_intf/pncconf/pncconf.py:155 msgid "Quad Encoder-I" msgstr "Codeur quad.-I" -#: src/emc/usr_intf/pncconf/pncconf.py:153 emc/usr_intf/pncconf/pncconf.py:153 +#: src/emc/usr_intf/pncconf/pncconf.py:155 msgid "Quad Encoder-M" msgstr "Codeur quad.-M" -#: src/emc/usr_intf/pncconf/pncconf.py:154 emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 msgid "Muxed Encoder 0" msgstr "Codeur multiplexé-0" -#: src/emc/usr_intf/pncconf/pncconf.py:154 emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 msgid "Muxed Encoder 1" msgstr "Codeur multiplexé-A" -#: src/emc/usr_intf/pncconf/pncconf.py:154 emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 msgid "muxed enc" msgstr "Codeur multiplexé" -#: src/emc/usr_intf/pncconf/pncconf.py:154 emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 msgid "mux enc mask" msgstr "masque de codeur multiplexé" -#: src/emc/usr_intf/pncconf/pncconf.py:154 emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 msgid "mux select" msgstr "mux select" -#: src/emc/usr_intf/pncconf/pncconf.py:155 emc/usr_intf/pncconf/pncconf.py:155 +#: src/emc/usr_intf/pncconf/pncconf.py:157 msgid "Resolver 0 Encoder" msgstr "Résolveur encoder 0" -#: src/emc/usr_intf/pncconf/pncconf.py:155 emc/usr_intf/pncconf/pncconf.py:155 +#: src/emc/usr_intf/pncconf/pncconf.py:157 msgid "Resolver 1 Encoder" msgstr "Résolveur encoder 1" -#: src/emc/usr_intf/pncconf/pncconf.py:155 emc/usr_intf/pncconf/pncconf.py:155 +#: src/emc/usr_intf/pncconf/pncconf.py:157 msgid "Resolver 2 Encoder" msgstr "Résolveur encoder 2" -#: src/emc/usr_intf/pncconf/pncconf.py:156 emc/usr_intf/pncconf/pncconf.py:156 +#: src/emc/usr_intf/pncconf/pncconf.py:158 msgid "Resolver 3 Encoder" msgstr "Résolveur encoder 3" -#: src/emc/usr_intf/pncconf/pncconf.py:156 emc/usr_intf/pncconf/pncconf.py:156 +#: src/emc/usr_intf/pncconf/pncconf.py:158 msgid "Resolver 4 Encoder" msgstr "Résolveur encoder 4" -#: src/emc/usr_intf/pncconf/pncconf.py:156 emc/usr_intf/pncconf/pncconf.py:156 +#: src/emc/usr_intf/pncconf/pncconf.py:158 msgid "Resolver 5 Encoder" msgstr "Résolveur encoder 5" -#: src/emc/usr_intf/pncconf/pncconf.py:157 emc/usr_intf/pncconf/pncconf.py:157 +#: src/emc/usr_intf/pncconf/pncconf.py:159 msgid "Step Gen-A" msgstr "Géné step-A" -#: src/emc/usr_intf/pncconf/pncconf.py:157 emc/usr_intf/pncconf/pncconf.py:157 +#: src/emc/usr_intf/pncconf/pncconf.py:159 msgid "Dir Gen-B" msgstr "Géné dir-B" -#: src/emc/usr_intf/pncconf/pncconf.py:157 emc/usr_intf/pncconf/pncconf.py:157 +#: src/emc/usr_intf/pncconf/pncconf.py:159 msgid "Step/Dir Gen-C" msgstr "Géné Step/Dir -C" -#: src/emc/usr_intf/pncconf/pncconf.py:157 emc/usr_intf/pncconf/pncconf.py:157 +#: src/emc/usr_intf/pncconf/pncconf.py:159 msgid "Step/Dir Gen-D" msgstr "Géné Step/Dir -D" -#: src/emc/usr_intf/pncconf/pncconf.py:158 emc/usr_intf/pncconf/pncconf.py:158 +#: src/emc/usr_intf/pncconf/pncconf.py:160 msgid "Step/Dir Gen-E" msgstr "Géné Step/Dir -E" -#: src/emc/usr_intf/pncconf/pncconf.py:158 emc/usr_intf/pncconf/pncconf.py:158 +#: src/emc/usr_intf/pncconf/pncconf.py:160 msgid "Step/dir Gen-F" msgstr "Géné Step/Dir -F" -#: src/emc/usr_intf/pncconf/pncconf.py:159 emc/usr_intf/pncconf/pncconf.py:159 +#: src/emc/usr_intf/pncconf/pncconf.py:161 msgid "Pulse Width Gen-P" msgstr "Géné Pulse Width-P" -#: src/emc/usr_intf/pncconf/pncconf.py:159 emc/usr_intf/pncconf/pncconf.py:159 +#: src/emc/usr_intf/pncconf/pncconf.py:161 msgid "Pulse Width Gen-D" msgstr "Géné Pulse Width-D" -#: src/emc/usr_intf/pncconf/pncconf.py:159 emc/usr_intf/pncconf/pncconf.py:159 +#: src/emc/usr_intf/pncconf/pncconf.py:161 msgid "Pulse Width Gen-E" msgstr "Géné Pulse Width-E" -#: src/emc/usr_intf/pncconf/pncconf.py:160 emc/usr_intf/pncconf/pncconf.py:160 +#: src/emc/usr_intf/pncconf/pncconf.py:162 msgid "Pulse Density Gen-P" msgstr "Géné Pulse Density-P" -#: src/emc/usr_intf/pncconf/pncconf.py:160 emc/usr_intf/pncconf/pncconf.py:160 +#: src/emc/usr_intf/pncconf/pncconf.py:162 msgid "Pulse Density Gen-D" msgstr "Géné Pulse Density-D" -#: src/emc/usr_intf/pncconf/pncconf.py:160 emc/usr_intf/pncconf/pncconf.py:160 +#: src/emc/usr_intf/pncconf/pncconf.py:162 msgid "Pulse Density Gen-E" msgstr "Géné Pulse Density-E" -#: src/emc/usr_intf/pncconf/pncconf.py:161 emc/usr_intf/pncconf/pncconf.py:161 +#: src/emc/usr_intf/pncconf/pncconf.py:163 msgid "Up/Down Mode -Up" msgstr "Up/Down Mode -Up" -#: src/emc/usr_intf/pncconf/pncconf.py:161 emc/usr_intf/pncconf/pncconf.py:161 +#: src/emc/usr_intf/pncconf/pncconf.py:163 msgid "Up/Down Mode-Down" msgstr "Up/Down Mode-Down" -#: src/emc/usr_intf/pncconf/pncconf.py:161 emc/usr_intf/pncconf/pncconf.py:161 +#: src/emc/usr_intf/pncconf/pncconf.py:163 msgid "Up/Down Mode-Enable" msgstr "Up/Down Mode-Enable" -#: src/emc/usr_intf/pncconf/pncconf.py:162 emc/usr_intf/pncconf/pncconf.py:162 +#: src/emc/usr_intf/pncconf/pncconf.py:164 msgid "Motor Phase A" msgstr "Moteur phase A" -#: src/emc/usr_intf/pncconf/pncconf.py:162 emc/usr_intf/pncconf/pncconf.py:162 +#: src/emc/usr_intf/pncconf/pncconf.py:164 msgid "Motor Phase B" msgstr "Moteur phase B" -#: src/emc/usr_intf/pncconf/pncconf.py:162 emc/usr_intf/pncconf/pncconf.py:162 +#: src/emc/usr_intf/pncconf/pncconf.py:164 msgid "Motor Phase C" msgstr "Moteur phase C" -#: src/emc/usr_intf/pncconf/pncconf.py:163 emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Phase A Not" msgstr "Moteur phase A Not" -#: src/emc/usr_intf/pncconf/pncconf.py:163 emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Phase B Not" msgstr "Moteur phase B Not" -#: src/emc/usr_intf/pncconf/pncconf.py:163 emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Phase C Not" msgstr "Moteur phase C Not" -#: src/emc/usr_intf/pncconf/pncconf.py:163 emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Enable" msgstr "Activation moteur" -#: src/emc/usr_intf/pncconf/pncconf.py:163 emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Fault" msgstr "Défaut moteur" -#: src/emc/usr_intf/pncconf/pncconf.py:165 emc/usr_intf/pncconf/pncconf.py:165 -#: src/emc/usr_intf/pncconf/pncconf.py:166 +#: src/emc/usr_intf/pncconf/pncconf.py:168 msgid "SMARTSERIAL-P0-TX" msgstr "SMARTSERIAL-P0-TX" -#: src/emc/usr_intf/pncconf/pncconf.py:166 emc/usr_intf/pncconf/pncconf.py:166 -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P0-RX" msgstr "SMARTSERIAL-P0-RX" -#: src/emc/usr_intf/pncconf/pncconf.py:166 emc/usr_intf/pncconf/pncconf.py:166 -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P0-EN" msgstr "SMARTSERIAL-P0-EN" -#: src/emc/usr_intf/pncconf/pncconf.py:166 emc/usr_intf/pncconf/pncconf.py:166 -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P1-TX" msgstr "SMARTSERIAL-P1-TX" -#: src/emc/usr_intf/pncconf/pncconf.py:166 emc/usr_intf/pncconf/pncconf.py:166 -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P1-RX" msgstr "SMARTSERIAL-P1-RX" -#: src/emc/usr_intf/pncconf/pncconf.py:166 emc/usr_intf/pncconf/pncconf.py:166 -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P1-EN" msgstr "SMARTSERIAL-P1-EN" -#: src/emc/usr_intf/pncconf/pncconf.py:167 emc/usr_intf/pncconf/pncconf.py:167 -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P2-TX" msgstr "SMARTSERIAL-P2-TX" -#: src/emc/usr_intf/pncconf/pncconf.py:167 emc/usr_intf/pncconf/pncconf.py:167 -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P2-RX" msgstr "SMARTSERIAL-P2-RX" -#: src/emc/usr_intf/pncconf/pncconf.py:167 emc/usr_intf/pncconf/pncconf.py:167 -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P2-EN" msgstr "SMARTSERIAL-P2-EN" -#: src/emc/usr_intf/pncconf/pncconf.py:167 emc/usr_intf/pncconf/pncconf.py:167 -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P3-TX" msgstr "SMARTSERIAL-P3-TX" -#: src/emc/usr_intf/pncconf/pncconf.py:167 emc/usr_intf/pncconf/pncconf.py:167 -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P3-RX" msgstr "SMARTSERIAL-P3-RX" -#: src/emc/usr_intf/pncconf/pncconf.py:167 emc/usr_intf/pncconf/pncconf.py:167 -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P3-EN" msgstr "SMARTSERIAL-P3-EN" -#: src/emc/usr_intf/pncconf/pncconf.py:168 emc/usr_intf/pncconf/pncconf.py:168 -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P4-TX" msgstr "SMARTSERIAL-P4-TX" -#: src/emc/usr_intf/pncconf/pncconf.py:168 emc/usr_intf/pncconf/pncconf.py:168 -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P4-RX" msgstr "SMARTSERIAL-P4-RX" -#: src/emc/usr_intf/pncconf/pncconf.py:168 emc/usr_intf/pncconf/pncconf.py:168 -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P4-EN" msgstr "SMARTSERIAL-P4-EN" -#: src/emc/usr_intf/pncconf/pncconf.py:168 emc/usr_intf/pncconf/pncconf.py:168 -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P5-TX" msgstr "SMARTSERIAL-P5-TX" -#: src/emc/usr_intf/pncconf/pncconf.py:168 emc/usr_intf/pncconf/pncconf.py:168 -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P5-RX" msgstr "SMARTSERIAL-P5-RX" -#: src/emc/usr_intf/pncconf/pncconf.py:168 emc/usr_intf/pncconf/pncconf.py:168 -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P5-EN" msgstr "SMARTSERIAL-P5-EN" -#: src/emc/usr_intf/pncconf/pncconf.py:169 emc/usr_intf/pncconf/pncconf.py:169 -#: src/emc/usr_intf/pncconf/pncconf.py:170 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P6-TX" msgstr "SMARTSERIAL-P6-TX" -#: src/emc/usr_intf/pncconf/pncconf.py:169 emc/usr_intf/pncconf/pncconf.py:169 -#: src/emc/usr_intf/pncconf/pncconf.py:170 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P6-RX" msgstr "SMARTSERIAL-P6-RX" -#: src/emc/usr_intf/pncconf/pncconf.py:169 emc/usr_intf/pncconf/pncconf.py:169 -#: src/emc/usr_intf/pncconf/pncconf.py:170 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P6-EN" msgstr "SMARTSERIAL-P6-EN" -#: src/emc/usr_intf/pncconf/pncconf.py:169 emc/usr_intf/pncconf/pncconf.py:169 -#: src/emc/usr_intf/pncconf/pncconf.py:170 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P7-TX" msgstr "SMARTSERIAL-P7-TX" -#: src/emc/usr_intf/pncconf/pncconf.py:169 emc/usr_intf/pncconf/pncconf.py:169 -#: src/emc/usr_intf/pncconf/pncconf.py:170 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P7-RX" msgstr "SMARTSERIAL-P7-RX" -#: src/emc/usr_intf/pncconf/pncconf.py:169 emc/usr_intf/pncconf/pncconf.py:169 -#: src/emc/usr_intf/pncconf/pncconf.py:170 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P7-EN" msgstr "SMARTSERIAL-P7-EN" -#: src/emc/usr_intf/pncconf/pncconf.py:170 emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #1" -msgstr "7i76 sserial #1" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS0)" +msgstr "7i76 E/S (SS0)" + +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS2)" +msgstr "7i76 E/S (SS2)" + +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS3)" +msgstr "7i76 E/S (SS3)" + +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 I/O (SS0)" +msgstr "7i77 E/S (SS0)" + +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 Analog (SS1)" +msgstr "7i77 Analogique (SS1)" + +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 I/O (SS3)" +msgstr "7i77 E/S (SS3)" + +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 Analog (SS4)" +msgstr "7i77 Analogique (SS4)" + +#: src/emc/usr_intf/pncconf/pncconf.py:176 +msgid "Analog Input" +msgstr "Entrée analogique" + +#: src/emc/usr_intf/pncconf/pncconf.py:277 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +msgid "Axis Selection" +msgstr "Sélection d'axe" + +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "" +"7i64-Input\n" +"P3 and P4" +msgstr "" +"Entrée 7i64\n" +"P3 et P4" + +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "" +"7i64-Output\n" +"P2 and P5" +msgstr "" +"Sortie 7i64\n" +"P2 et P5" + +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "7i64-Analog In" +msgstr "7i64-Entrée analogique " + +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P2" +msgstr "" +"7i69\n" +"P2" + +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P3" +msgstr "" +"7i69\n" +"P3" + +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB3" +msgstr "" +"7i70-Entrée\n" +"TB3" + +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB2" +msgstr "" +"7i70-Entrée\n" +"TB2" + +#: src/emc/usr_intf/pncconf/pncconf.py:309 +msgid "" +"7i71-Output\n" +"TB3" +msgstr "" +"7i71-Sortie\n" +"TB3" + +#: src/emc/usr_intf/pncconf/pncconf.py:309 +msgid "" +"7i71-Output\n" +"TB2" +msgstr "" +"7i71-Sortie\n" +"TB2" + +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-I/O\n" +"TB6" +msgstr "" +"7i76-E/S\n" +"TB6" + +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-I/O\n" +"TB5" +msgstr "" +"7i76-E/S\n" +"TB5" + +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-Analog Output\n" +"TB4" +msgstr "" +"7i76-Sortie analogique\n" +"TB4" + +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB8" +msgstr "" +"7i77-E/S\n" +"TB8" + +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB7" +msgstr "" +"7i77-E/S\n" +"TB7" + +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-Analog Output\n" +"TB5" +msgstr "" +"7i77-Sortie analogique\n" +"TB5" -#: src/emc/usr_intf/pncconf/pncconf.py:170 emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #2" -msgstr "7i76 sserial #2" +#: src/emc/usr_intf/pncconf/pncconf.py:333 +msgid "7i73-I/O\n" +msgstr "7i73-E/S\n" -#: src/emc/usr_intf/pncconf/pncconf.py:420 emc/usr_intf/pncconf/pncconf.py:420 -#: src/emc/usr_intf/pncconf/pncconf.py:441 +#: src/emc/usr_intf/pncconf/pncconf.py:348 msgid "Unused Unused" msgstr "Inutilisé Inutilisé" -#: src/emc/usr_intf/pncconf/pncconf.py:442 emc/usr_intf/pncconf/pncconf.py:442 -#: src/emc/usr_intf/pncconf/pncconf.py:463 +#: src/emc/usr_intf/pncconf/pncconf.py:370 msgid "Machine Is Enabled" msgstr "Machine activée" -#: src/emc/usr_intf/pncconf/pncconf.py:442 emc/usr_intf/pncconf/pncconf.py:442 -#: src/emc/usr_intf/pncconf/pncconf.py:463 +#: src/emc/usr_intf/pncconf/pncconf.py:370 msgid "X Amplifier Enable" msgstr "Activation ampli X" -#: src/emc/usr_intf/pncconf/pncconf.py:442 emc/usr_intf/pncconf/pncconf.py:442 -#: src/emc/usr_intf/pncconf/pncconf.py:463 +#: src/emc/usr_intf/pncconf/pncconf.py:370 msgid "Y Amplifier Enable" msgstr "Activation ampli Y" -#: src/emc/usr_intf/pncconf/pncconf.py:442 emc/usr_intf/pncconf/pncconf.py:442 -#: src/emc/usr_intf/pncconf/pncconf.py:463 +#: src/emc/usr_intf/pncconf/pncconf.py:370 msgid "Z Amplifier Enable" msgstr "Activation ampli Z" -#: src/emc/usr_intf/pncconf/pncconf.py:443 emc/usr_intf/pncconf/pncconf.py:443 -#: src/emc/usr_intf/pncconf/pncconf.py:464 +#: src/emc/usr_intf/pncconf/pncconf.py:371 msgid "A Amplifier Enable" msgstr "Activation ampli A" -#: emc/usr_intf/pncconf/pncconf.py:443 src/emc/usr_intf/pncconf/pncconf.py:443 +#: src/emc/usr_intf/pncconf/pncconf.py:371 #, fuzzy msgid "Force Pin True" -msgstr "" -"Force la pin à True" +msgstr "Force la pin à True" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 emc/usr_intf/pncconf/pncconf.py:445 -#: emc/usr_intf/pncconf/pncconf.py:472 src/emc/usr_intf/pncconf/pncconf.py:466 -#: src/emc/usr_intf/pncconf/pncconf.py:494 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X HALL 1" msgstr "X HALL 1" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 emc/usr_intf/pncconf/pncconf.py:445 -#: emc/usr_intf/pncconf/pncconf.py:472 src/emc/usr_intf/pncconf/pncconf.py:466 -#: src/emc/usr_intf/pncconf/pncconf.py:494 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X HALL 2" msgstr "X HALL 2" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 emc/usr_intf/pncconf/pncconf.py:445 -#: emc/usr_intf/pncconf/pncconf.py:472 src/emc/usr_intf/pncconf/pncconf.py:466 -#: src/emc/usr_intf/pncconf/pncconf.py:494 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X HALL 3" msgstr "X HALL 3" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 emc/usr_intf/pncconf/pncconf.py:445 -#: emc/usr_intf/pncconf/pncconf.py:472 src/emc/usr_intf/pncconf/pncconf.py:466 -#: src/emc/usr_intf/pncconf/pncconf.py:494 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X Gray C1" msgstr "X Gray C1" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 emc/usr_intf/pncconf/pncconf.py:445 -#: emc/usr_intf/pncconf/pncconf.py:472 src/emc/usr_intf/pncconf/pncconf.py:466 -#: src/emc/usr_intf/pncconf/pncconf.py:494 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X Gray C2" msgstr "X Gray C2" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 emc/usr_intf/pncconf/pncconf.py:445 -#: emc/usr_intf/pncconf/pncconf.py:472 src/emc/usr_intf/pncconf/pncconf.py:466 -#: src/emc/usr_intf/pncconf/pncconf.py:494 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X Gray C4" msgstr "X Gray C4" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 emc/usr_intf/pncconf/pncconf.py:445 -#: emc/usr_intf/pncconf/pncconf.py:472 src/emc/usr_intf/pncconf/pncconf.py:466 -#: src/emc/usr_intf/pncconf/pncconf.py:494 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X Gray C8" msgstr "X Gray C8" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 emc/usr_intf/pncconf/pncconf.py:446 -#: emc/usr_intf/pncconf/pncconf.py:473 src/emc/usr_intf/pncconf/pncconf.py:467 -#: src/emc/usr_intf/pncconf/pncconf.py:495 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y HALL 1" msgstr "Y HALL 1" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 emc/usr_intf/pncconf/pncconf.py:446 -#: emc/usr_intf/pncconf/pncconf.py:473 src/emc/usr_intf/pncconf/pncconf.py:467 -#: src/emc/usr_intf/pncconf/pncconf.py:495 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y HALL 2" msgstr "Y HALL 2" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 emc/usr_intf/pncconf/pncconf.py:446 -#: emc/usr_intf/pncconf/pncconf.py:473 src/emc/usr_intf/pncconf/pncconf.py:467 -#: src/emc/usr_intf/pncconf/pncconf.py:495 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y HALL 3" msgstr "Y HALL 3" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 emc/usr_intf/pncconf/pncconf.py:446 -#: emc/usr_intf/pncconf/pncconf.py:473 src/emc/usr_intf/pncconf/pncconf.py:467 -#: src/emc/usr_intf/pncconf/pncconf.py:495 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y Gray C1" msgstr "Y Gray C1" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 emc/usr_intf/pncconf/pncconf.py:446 -#: emc/usr_intf/pncconf/pncconf.py:473 src/emc/usr_intf/pncconf/pncconf.py:467 -#: src/emc/usr_intf/pncconf/pncconf.py:495 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y Gray C2" msgstr "Y Gray C2" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 emc/usr_intf/pncconf/pncconf.py:446 -#: emc/usr_intf/pncconf/pncconf.py:473 src/emc/usr_intf/pncconf/pncconf.py:467 -#: src/emc/usr_intf/pncconf/pncconf.py:495 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y Gray C4" msgstr "Y Gray C4" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 emc/usr_intf/pncconf/pncconf.py:446 -#: emc/usr_intf/pncconf/pncconf.py:473 src/emc/usr_intf/pncconf/pncconf.py:467 -#: src/emc/usr_intf/pncconf/pncconf.py:495 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y Gray C8" msgstr "Y Gray C8" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 emc/usr_intf/pncconf/pncconf.py:447 -#: emc/usr_intf/pncconf/pncconf.py:474 src/emc/usr_intf/pncconf/pncconf.py:468 -#: src/emc/usr_intf/pncconf/pncconf.py:496 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z HALL 1" msgstr "Z HALL 1" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 emc/usr_intf/pncconf/pncconf.py:447 -#: emc/usr_intf/pncconf/pncconf.py:474 src/emc/usr_intf/pncconf/pncconf.py:468 -#: src/emc/usr_intf/pncconf/pncconf.py:496 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z HALL 2" msgstr "Z HALL 2" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 emc/usr_intf/pncconf/pncconf.py:447 -#: emc/usr_intf/pncconf/pncconf.py:474 src/emc/usr_intf/pncconf/pncconf.py:468 -#: src/emc/usr_intf/pncconf/pncconf.py:496 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z HALL 3" msgstr "Z HALL 3" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 emc/usr_intf/pncconf/pncconf.py:447 -#: emc/usr_intf/pncconf/pncconf.py:474 src/emc/usr_intf/pncconf/pncconf.py:468 -#: src/emc/usr_intf/pncconf/pncconf.py:496 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z Gray C1" msgstr "Z Gray C1" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 emc/usr_intf/pncconf/pncconf.py:447 -#: emc/usr_intf/pncconf/pncconf.py:474 src/emc/usr_intf/pncconf/pncconf.py:468 -#: src/emc/usr_intf/pncconf/pncconf.py:496 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z Gray C2" msgstr "Z Gray C2" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 emc/usr_intf/pncconf/pncconf.py:447 -#: emc/usr_intf/pncconf/pncconf.py:474 src/emc/usr_intf/pncconf/pncconf.py:468 -#: src/emc/usr_intf/pncconf/pncconf.py:496 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z Gray C4" msgstr "Z Gray C4" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 emc/usr_intf/pncconf/pncconf.py:447 -#: emc/usr_intf/pncconf/pncconf.py:474 src/emc/usr_intf/pncconf/pncconf.py:468 -#: src/emc/usr_intf/pncconf/pncconf.py:496 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z Gray C8" msgstr "Z Gray C8" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 emc/usr_intf/pncconf/pncconf.py:448 -#: emc/usr_intf/pncconf/pncconf.py:475 src/emc/usr_intf/pncconf/pncconf.py:469 -#: src/emc/usr_intf/pncconf/pncconf.py:497 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A HALL 1" msgstr "A HALL 1" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 emc/usr_intf/pncconf/pncconf.py:448 -#: emc/usr_intf/pncconf/pncconf.py:475 src/emc/usr_intf/pncconf/pncconf.py:469 -#: src/emc/usr_intf/pncconf/pncconf.py:497 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A HALL 2" msgstr "A HALL 2" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 emc/usr_intf/pncconf/pncconf.py:448 -#: emc/usr_intf/pncconf/pncconf.py:475 src/emc/usr_intf/pncconf/pncconf.py:469 -#: src/emc/usr_intf/pncconf/pncconf.py:497 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A HALL 3" msgstr "A HALL 3" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 emc/usr_intf/pncconf/pncconf.py:448 -#: emc/usr_intf/pncconf/pncconf.py:475 src/emc/usr_intf/pncconf/pncconf.py:469 -#: src/emc/usr_intf/pncconf/pncconf.py:497 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A Gray C1" msgstr "A Gray C1" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 emc/usr_intf/pncconf/pncconf.py:448 -#: emc/usr_intf/pncconf/pncconf.py:475 src/emc/usr_intf/pncconf/pncconf.py:469 -#: src/emc/usr_intf/pncconf/pncconf.py:497 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A Gray C2" msgstr "A Gray C2" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 emc/usr_intf/pncconf/pncconf.py:448 -#: emc/usr_intf/pncconf/pncconf.py:475 src/emc/usr_intf/pncconf/pncconf.py:469 -#: src/emc/usr_intf/pncconf/pncconf.py:497 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A Gray C4" msgstr "A Gray C4" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 emc/usr_intf/pncconf/pncconf.py:448 -#: emc/usr_intf/pncconf/pncconf.py:475 src/emc/usr_intf/pncconf/pncconf.py:469 -#: src/emc/usr_intf/pncconf/pncconf.py:497 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A Gray C8" msgstr "A Gray C8" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 emc/usr_intf/pncconf/pncconf.py:449 -#: emc/usr_intf/pncconf/pncconf.py:476 src/emc/usr_intf/pncconf/pncconf.py:470 -#: src/emc/usr_intf/pncconf/pncconf.py:498 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S HALL 1" msgstr "S HALL 1" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 emc/usr_intf/pncconf/pncconf.py:449 -#: emc/usr_intf/pncconf/pncconf.py:476 src/emc/usr_intf/pncconf/pncconf.py:470 -#: src/emc/usr_intf/pncconf/pncconf.py:498 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S HALL 2" msgstr "S HALL 2" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 emc/usr_intf/pncconf/pncconf.py:449 -#: emc/usr_intf/pncconf/pncconf.py:476 src/emc/usr_intf/pncconf/pncconf.py:470 -#: src/emc/usr_intf/pncconf/pncconf.py:498 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S HALL 3" msgstr "S HALL 3" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 emc/usr_intf/pncconf/pncconf.py:449 -#: emc/usr_intf/pncconf/pncconf.py:476 src/emc/usr_intf/pncconf/pncconf.py:470 -#: src/emc/usr_intf/pncconf/pncconf.py:498 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S Gray C1" msgstr "S Gray C1" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 emc/usr_intf/pncconf/pncconf.py:449 -#: emc/usr_intf/pncconf/pncconf.py:476 src/emc/usr_intf/pncconf/pncconf.py:470 -#: src/emc/usr_intf/pncconf/pncconf.py:498 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S Gray C2" msgstr "S Gray C2" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 emc/usr_intf/pncconf/pncconf.py:449 -#: emc/usr_intf/pncconf/pncconf.py:476 src/emc/usr_intf/pncconf/pncconf.py:470 -#: src/emc/usr_intf/pncconf/pncconf.py:498 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S Gray C4" msgstr "S Gray C4" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 emc/usr_intf/pncconf/pncconf.py:449 -#: emc/usr_intf/pncconf/pncconf.py:476 src/emc/usr_intf/pncconf/pncconf.py:470 -#: src/emc/usr_intf/pncconf/pncconf.py:498 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S Gray C8" msgstr "S Gray C8" -#: src/emc/usr_intf/pncconf/pncconf.py:450 emc/usr_intf/pncconf/pncconf.py:450 -#: src/emc/usr_intf/pncconf/pncconf.py:471 +#: src/emc/usr_intf/pncconf/pncconf.py:378 msgid "Unused Output" msgstr "Sortie inutilisée" -#: src/emc/usr_intf/pncconf/pncconf.py:450 -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#: src/emc/usr_intf/pncconf/pncconf.py:593 emc/usr_intf/pncconf/pncconf.py:450 -#: emc/usr_intf/pncconf/pncconf.py:480 emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.py:471 -#: src/emc/usr_intf/pncconf/pncconf.py:502 -#: src/emc/usr_intf/pncconf/pncconf.py:617 -msgid "Spindle" -msgstr "Broche" - -#: src/emc/usr_intf/pncconf/pncconf.py:450 emc/usr_intf/pncconf/pncconf.py:450 -#: src/emc/usr_intf/pncconf/pncconf.py:471 +#: src/emc/usr_intf/pncconf/pncconf.py:378 msgid "Coolant" msgstr "Arrosage" -#: src/emc/usr_intf/pncconf/pncconf.py:451 emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:379 msgid "Control" msgstr "Contrôle" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:480 emc/usr_intf/pncconf/pncconf.py:451 -#: emc/usr_intf/pncconf/pncconf.py:480 src/emc/usr_intf/pncconf/pncconf.py:472 -#: src/emc/usr_intf/pncconf/pncconf.py:502 +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:409 msgid "Digital" msgstr "Numérique" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:481 emc/usr_intf/pncconf/pncconf.py:451 -#: emc/usr_intf/pncconf/pncconf.py:481 src/emc/usr_intf/pncconf/pncconf.py:472 -#: src/emc/usr_intf/pncconf/pncconf.py:503 +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:410 msgid "X BLDC Control" msgstr "X BLDC Control" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 emc/usr_intf/pncconf/pncconf.py:452 -#: emc/usr_intf/pncconf/pncconf.py:482 src/emc/usr_intf/pncconf/pncconf.py:473 -#: src/emc/usr_intf/pncconf/pncconf.py:504 +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 msgid "Y BLDC Control" msgstr "Y BLDC Control" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 emc/usr_intf/pncconf/pncconf.py:452 -#: emc/usr_intf/pncconf/pncconf.py:482 src/emc/usr_intf/pncconf/pncconf.py:473 -#: src/emc/usr_intf/pncconf/pncconf.py:504 +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 msgid "Z BLDC Control" msgstr "Z BLDC Control" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 emc/usr_intf/pncconf/pncconf.py:452 -#: emc/usr_intf/pncconf/pncconf.py:482 src/emc/usr_intf/pncconf/pncconf.py:473 -#: src/emc/usr_intf/pncconf/pncconf.py:504 +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 msgid "A BLDC Control" msgstr "A BLDC Control" -#: src/emc/usr_intf/pncconf/pncconf.py:453 emc/usr_intf/pncconf/pncconf.py:453 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:381 msgid " S BLDC Control" msgstr " S BLDC Control" -#: src/emc/usr_intf/pncconf/pncconf.py:453 -#: src/emc/usr_intf/pncconf/pncconf.py:483 -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#: src/emc/usr_intf/pncconf/pncconf.py:585 -#: src/emc/usr_intf/pncconf/pncconf.py:588 -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.py:597 -#: src/emc/usr_intf/pncconf/pncconf.py:614 -#: src/emc/usr_intf/pncconf/pncconf.py:629 emc/usr_intf/pncconf/pncconf.py:453 -#: emc/usr_intf/pncconf/pncconf.py:483 emc/usr_intf/pncconf/pncconf.py:557 -#: emc/usr_intf/pncconf/pncconf.py:585 emc/usr_intf/pncconf/pncconf.py:588 -#: emc/usr_intf/pncconf/pncconf.py:593 emc/usr_intf/pncconf/pncconf.py:597 -#: emc/usr_intf/pncconf/pncconf.py:614 emc/usr_intf/pncconf/pncconf.py:629 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -#: src/emc/usr_intf/pncconf/pncconf.py:505 -#: src/emc/usr_intf/pncconf/pncconf.py:581 -#: src/emc/usr_intf/pncconf/pncconf.py:609 -#: src/emc/usr_intf/pncconf/pncconf.py:612 -#: src/emc/usr_intf/pncconf/pncconf.py:617 -#: src/emc/usr_intf/pncconf/pncconf.py:621 -#: src/emc/usr_intf/pncconf/pncconf.py:646 -#: src/emc/usr_intf/pncconf/pncconf.py:661 -#: src/emc/usr_intf/pncconf/pncconf.py:673 +#: src/emc/usr_intf/pncconf/pncconf.py:381 +#: src/emc/usr_intf/pncconf/pncconf.py:412 +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#: src/emc/usr_intf/pncconf/pncconf.py:516 +#: src/emc/usr_intf/pncconf/pncconf.py:519 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.py:528 +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#: src/emc/usr_intf/pncconf/pncconf.py:568 +#: src/emc/usr_intf/pncconf/pncconf.py:580 msgid "Custom Signals" msgstr " Signaux personnalisés" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 emc/usr_intf/pncconf/pncconf.py:455 -#: emc/usr_intf/pncconf/pncconf.py:541 src/emc/usr_intf/pncconf/pncconf.py:476 -#: src/emc/usr_intf/pncconf/pncconf.py:565 +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 msgid "X Minimum Limit" msgstr "Limite minimale X" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 emc/usr_intf/pncconf/pncconf.py:455 -#: emc/usr_intf/pncconf/pncconf.py:541 src/emc/usr_intf/pncconf/pncconf.py:476 -#: src/emc/usr_intf/pncconf/pncconf.py:565 +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 msgid "Y Minimum Limit" msgstr "Limite minimale Y" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 emc/usr_intf/pncconf/pncconf.py:455 -#: emc/usr_intf/pncconf/pncconf.py:542 src/emc/usr_intf/pncconf/pncconf.py:476 -#: src/emc/usr_intf/pncconf/pncconf.py:566 +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 msgid "Z Minimum Limit" msgstr "Limite minimale Z" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 emc/usr_intf/pncconf/pncconf.py:455 -#: emc/usr_intf/pncconf/pncconf.py:542 src/emc/usr_intf/pncconf/pncconf.py:476 -#: src/emc/usr_intf/pncconf/pncconf.py:566 +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 msgid "A Minimum Limit" msgstr "Limite minimale A" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 emc/usr_intf/pncconf/pncconf.py:456 -#: emc/usr_intf/pncconf/pncconf.py:543 src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:567 +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 msgid "X Maximum Limit" msgstr "Limite maximale X " -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 emc/usr_intf/pncconf/pncconf.py:456 -#: emc/usr_intf/pncconf/pncconf.py:543 src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:567 +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 msgid "Y Maximum Limit" msgstr "Limite maximale Y" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 emc/usr_intf/pncconf/pncconf.py:456 -#: emc/usr_intf/pncconf/pncconf.py:544 src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:568 +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 msgid "Z Maximum Limit" msgstr "Limite maximale Z" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 emc/usr_intf/pncconf/pncconf.py:456 -#: emc/usr_intf/pncconf/pncconf.py:544 src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:568 +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 msgid "A Maximum Limit" msgstr "Limite maximale A" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 emc/usr_intf/pncconf/pncconf.py:457 -#: emc/usr_intf/pncconf/pncconf.py:545 src/emc/usr_intf/pncconf/pncconf.py:478 -#: src/emc/usr_intf/pncconf/pncconf.py:569 +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 msgid "X Both Limit" msgstr "Toutes les limites X" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 emc/usr_intf/pncconf/pncconf.py:457 -#: emc/usr_intf/pncconf/pncconf.py:545 src/emc/usr_intf/pncconf/pncconf.py:478 -#: src/emc/usr_intf/pncconf/pncconf.py:569 +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 msgid "Y Both Limit" msgstr "Toutes les limites Y" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 emc/usr_intf/pncconf/pncconf.py:457 -#: emc/usr_intf/pncconf/pncconf.py:546 src/emc/usr_intf/pncconf/pncconf.py:478 -#: src/emc/usr_intf/pncconf/pncconf.py:570 +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 msgid "Z Both Limit" msgstr "Toutes les limites Z" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 emc/usr_intf/pncconf/pncconf.py:457 -#: emc/usr_intf/pncconf/pncconf.py:546 src/emc/usr_intf/pncconf/pncconf.py:478 -#: src/emc/usr_intf/pncconf/pncconf.py:570 +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 msgid "A Both Limit" msgstr "Toutes les limites A" -#: src/emc/usr_intf/pncconf/pncconf.py:458 -#: src/emc/usr_intf/pncconf/pncconf.py:546 emc/usr_intf/pncconf/pncconf.py:458 -#: emc/usr_intf/pncconf/pncconf.py:546 src/emc/usr_intf/pncconf/pncconf.py:479 -#: src/emc/usr_intf/pncconf/pncconf.py:570 +#: src/emc/usr_intf/pncconf/pncconf.py:386 +#: src/emc/usr_intf/pncconf/pncconf.py:477 msgid "All Limits" msgstr "Toutes les limites" -#: src/emc/usr_intf/pncconf/pncconf.py:459 emc/usr_intf/pncconf/pncconf.py:459 -#: src/emc/usr_intf/pncconf/pncconf.py:480 +#: src/emc/usr_intf/pncconf/pncconf.py:387 msgid "X Home" msgstr "Origine X" -#: src/emc/usr_intf/pncconf/pncconf.py:459 emc/usr_intf/pncconf/pncconf.py:459 -#: src/emc/usr_intf/pncconf/pncconf.py:480 +#: src/emc/usr_intf/pncconf/pncconf.py:387 msgid "Y Home" msgstr "Origine Y" -#: src/emc/usr_intf/pncconf/pncconf.py:459 emc/usr_intf/pncconf/pncconf.py:459 -#: src/emc/usr_intf/pncconf/pncconf.py:480 +#: src/emc/usr_intf/pncconf/pncconf.py:387 msgid "Z Home" msgstr "Origine Z" -#: src/emc/usr_intf/pncconf/pncconf.py:459 emc/usr_intf/pncconf/pncconf.py:459 -#: src/emc/usr_intf/pncconf/pncconf.py:480 +#: src/emc/usr_intf/pncconf/pncconf.py:387 msgid "A Home" msgstr "Origine A" -#: src/emc/usr_intf/pncconf/pncconf.py:459 emc/usr_intf/pncconf/pncconf.py:459 -#: src/emc/usr_intf/pncconf/pncconf.py:480 +#: src/emc/usr_intf/pncconf/pncconf.py:387 msgid "All Home" msgstr "Toutes les origines" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 emc/usr_intf/pncconf/pncconf.py:460 -#: emc/usr_intf/pncconf/pncconf.py:534 src/emc/usr_intf/pncconf/pncconf.py:481 -#: src/emc/usr_intf/pncconf/pncconf.py:558 +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 msgid "X Minimum Limit + Home" msgstr "Limite mini + origine machine X " -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 emc/usr_intf/pncconf/pncconf.py:460 -#: emc/usr_intf/pncconf/pncconf.py:534 src/emc/usr_intf/pncconf/pncconf.py:481 -#: src/emc/usr_intf/pncconf/pncconf.py:558 +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 msgid "Y Minimum Limit + Home" msgstr "Limite mini + origine machine Y" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 emc/usr_intf/pncconf/pncconf.py:460 -#: emc/usr_intf/pncconf/pncconf.py:535 src/emc/usr_intf/pncconf/pncconf.py:481 -#: src/emc/usr_intf/pncconf/pncconf.py:559 +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 msgid "Z Minimum Limit + Home" msgstr "Limite mini + origine machine Z" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 emc/usr_intf/pncconf/pncconf.py:460 -#: emc/usr_intf/pncconf/pncconf.py:535 src/emc/usr_intf/pncconf/pncconf.py:481 -#: src/emc/usr_intf/pncconf/pncconf.py:559 +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 msgid "A Minimum Limit + Home" msgstr "Limite mini + origine machine A" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 emc/usr_intf/pncconf/pncconf.py:461 -#: emc/usr_intf/pncconf/pncconf.py:536 src/emc/usr_intf/pncconf/pncconf.py:482 -#: src/emc/usr_intf/pncconf/pncconf.py:560 +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 msgid "X Maximum Limit + Home" msgstr "Limite maxi + origine machine X " -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 emc/usr_intf/pncconf/pncconf.py:461 -#: emc/usr_intf/pncconf/pncconf.py:536 src/emc/usr_intf/pncconf/pncconf.py:482 -#: src/emc/usr_intf/pncconf/pncconf.py:560 +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 msgid "Y Maximum Limit + Home" msgstr "Limite maxi + origine machine Y" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 emc/usr_intf/pncconf/pncconf.py:461 -#: emc/usr_intf/pncconf/pncconf.py:537 src/emc/usr_intf/pncconf/pncconf.py:482 -#: src/emc/usr_intf/pncconf/pncconf.py:561 +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 msgid "Z Maximum Limit + Home" msgstr "Limite maxi + origine machine Z" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 emc/usr_intf/pncconf/pncconf.py:461 -#: emc/usr_intf/pncconf/pncconf.py:537 src/emc/usr_intf/pncconf/pncconf.py:482 -#: src/emc/usr_intf/pncconf/pncconf.py:561 +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 msgid "A Maximum Limit + Home" msgstr "Limite maxi + origine machine A" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 emc/usr_intf/pncconf/pncconf.py:462 -#: emc/usr_intf/pncconf/pncconf.py:538 src/emc/usr_intf/pncconf/pncconf.py:483 -#: src/emc/usr_intf/pncconf/pncconf.py:562 +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 msgid "X Both Limit + Home" msgstr "Les deux limites + origine machine X " -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 emc/usr_intf/pncconf/pncconf.py:462 -#: emc/usr_intf/pncconf/pncconf.py:538 src/emc/usr_intf/pncconf/pncconf.py:483 -#: src/emc/usr_intf/pncconf/pncconf.py:562 +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 msgid "Y Both Limit + Home" msgstr "Les deux limites + origine machine Y" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 emc/usr_intf/pncconf/pncconf.py:462 -#: emc/usr_intf/pncconf/pncconf.py:539 src/emc/usr_intf/pncconf/pncconf.py:483 -#: src/emc/usr_intf/pncconf/pncconf.py:563 +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 msgid "Z Both Limit + Home" msgstr "Les deux limites + origine machine Z " -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 emc/usr_intf/pncconf/pncconf.py:462 -#: emc/usr_intf/pncconf/pncconf.py:539 src/emc/usr_intf/pncconf/pncconf.py:483 -#: src/emc/usr_intf/pncconf/pncconf.py:563 +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 msgid "A Both Limit + Home" msgstr "Les deux limites + origine machine A" -#: src/emc/usr_intf/pncconf/pncconf.py:464 emc/usr_intf/pncconf/pncconf.py:464 -#: src/emc/usr_intf/pncconf/pncconf.py:485 +#: src/emc/usr_intf/pncconf/pncconf.py:392 msgid "Joint select A" msgstr "Sélection jointure A" -#: src/emc/usr_intf/pncconf/pncconf.py:464 emc/usr_intf/pncconf/pncconf.py:464 -#: src/emc/usr_intf/pncconf/pncconf.py:485 +#: src/emc/usr_intf/pncconf/pncconf.py:392 msgid "Joint select B" msgstr "Sélection jointure B" -#: src/emc/usr_intf/pncconf/pncconf.py:464 emc/usr_intf/pncconf/pncconf.py:464 -#: src/emc/usr_intf/pncconf/pncconf.py:485 +#: src/emc/usr_intf/pncconf/pncconf.py:392 msgid "Joint select C" msgstr "Sélection jointure C" -#: src/emc/usr_intf/pncconf/pncconf.py:464 emc/usr_intf/pncconf/pncconf.py:464 -#: src/emc/usr_intf/pncconf/pncconf.py:485 +#: src/emc/usr_intf/pncconf/pncconf.py:392 msgid "Joint select D" msgstr "Sélection jointure D" -#: src/emc/usr_intf/pncconf/pncconf.py:465 emc/usr_intf/pncconf/pncconf.py:465 -#: src/emc/usr_intf/pncconf/pncconf.py:486 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Jog incr A" msgstr "Incrément du Jog A" -#: src/emc/usr_intf/pncconf/pncconf.py:465 emc/usr_intf/pncconf/pncconf.py:465 -#: src/emc/usr_intf/pncconf/pncconf.py:486 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Jog incr B" msgstr "Incrément du Jog B" -#: src/emc/usr_intf/pncconf/pncconf.py:465 emc/usr_intf/pncconf/pncconf.py:465 -#: src/emc/usr_intf/pncconf/pncconf.py:486 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Jog incr C" msgstr "Incrément du Jog C" -#: src/emc/usr_intf/pncconf/pncconf.py:465 emc/usr_intf/pncconf/pncconf.py:465 -#: src/emc/usr_intf/pncconf/pncconf.py:486 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Jog incr D" msgstr "Incrément du Jog D" -#: src/emc/usr_intf/pncconf/pncconf.py:465 emc/usr_intf/pncconf/pncconf.py:465 -#: src/emc/usr_intf/pncconf/pncconf.py:486 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Feed Override incr A" msgstr "Incrément correcteur de vitesse A" -#: src/emc/usr_intf/pncconf/pncconf.py:465 emc/usr_intf/pncconf/pncconf.py:465 -#: src/emc/usr_intf/pncconf/pncconf.py:486 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Feed Override incr B" msgstr "Incrément correcteur de vitesse B" -#: src/emc/usr_intf/pncconf/pncconf.py:466 emc/usr_intf/pncconf/pncconf.py:466 -#: src/emc/usr_intf/pncconf/pncconf.py:487 +#: src/emc/usr_intf/pncconf/pncconf.py:394 msgid "Feed Override incr C" msgstr "Incrément correcteur de vitesse C" -#: src/emc/usr_intf/pncconf/pncconf.py:466 emc/usr_intf/pncconf/pncconf.py:466 -#: src/emc/usr_intf/pncconf/pncconf.py:487 +#: src/emc/usr_intf/pncconf/pncconf.py:394 msgid "Feed Override incr D" msgstr "Incrément correcteur de vitesse D" -#: src/emc/usr_intf/pncconf/pncconf.py:466 emc/usr_intf/pncconf/pncconf.py:466 -#: src/emc/usr_intf/pncconf/pncconf.py:487 +#: src/emc/usr_intf/pncconf/pncconf.py:394 msgid "Spindle Override incr A" msgstr "Incrément correcteur de vitesse broche A" -#: src/emc/usr_intf/pncconf/pncconf.py:466 emc/usr_intf/pncconf/pncconf.py:466 -#: src/emc/usr_intf/pncconf/pncconf.py:487 +#: src/emc/usr_intf/pncconf/pncconf.py:394 msgid "Spindle Override incr B" msgstr "Incrément correcteur de vitesse broche B" -#: src/emc/usr_intf/pncconf/pncconf.py:467 emc/usr_intf/pncconf/pncconf.py:467 -#: src/emc/usr_intf/pncconf/pncconf.py:488 +#: src/emc/usr_intf/pncconf/pncconf.py:395 msgid "Spindle Override incr C" msgstr "Incrément correcteur de vitesse broche C" -#: src/emc/usr_intf/pncconf/pncconf.py:467 emc/usr_intf/pncconf/pncconf.py:467 -#: src/emc/usr_intf/pncconf/pncconf.py:488 +#: src/emc/usr_intf/pncconf/pncconf.py:395 msgid "Spindle Override incr D" msgstr "Incrément correcteur de vitesse broche D" -#: src/emc/usr_intf/pncconf/pncconf.py:467 emc/usr_intf/pncconf/pncconf.py:467 -#: src/emc/usr_intf/pncconf/pncconf.py:488 +#: src/emc/usr_intf/pncconf/pncconf.py:395 msgid "Max Vel Override incr A" msgstr "Incrément correcteur de vitesse maximale A" -#: src/emc/usr_intf/pncconf/pncconf.py:467 emc/usr_intf/pncconf/pncconf.py:467 -#: src/emc/usr_intf/pncconf/pncconf.py:488 +#: src/emc/usr_intf/pncconf/pncconf.py:395 msgid "Max Vel Override incr B" msgstr "Incrément correcteur de vitesse maximale B" -#: src/emc/usr_intf/pncconf/pncconf.py:468 emc/usr_intf/pncconf/pncconf.py:468 -#: src/emc/usr_intf/pncconf/pncconf.py:489 +#: src/emc/usr_intf/pncconf/pncconf.py:396 msgid "Max Vel Override incr C" msgstr "Incrément correcteur de vitesse maximale C" -#: src/emc/usr_intf/pncconf/pncconf.py:468 emc/usr_intf/pncconf/pncconf.py:468 -#: src/emc/usr_intf/pncconf/pncconf.py:489 +#: src/emc/usr_intf/pncconf/pncconf.py:396 msgid "Max Vel Override incr D" msgstr "Incrément correcteur de vitesse maximale D" -#: src/emc/usr_intf/pncconf/pncconf.py:469 emc/usr_intf/pncconf/pncconf.py:469 -#: src/emc/usr_intf/pncconf/pncconf.py:491 +#: src/emc/usr_intf/pncconf/pncconf.py:396 +msgid "Feed Override enable" +msgstr "Correcteur de vitesse activé" + +#: src/emc/usr_intf/pncconf/pncconf.py:396 +msgid "Spindle Override enable" +msgstr "Correction vitesse de broche activé" + +#: src/emc/usr_intf/pncconf/pncconf.py:397 +msgid "Max Vel Override enable" +msgstr "Correcteur de vitesse maximale activé" + +#: src/emc/usr_intf/pncconf/pncconf.py:398 msgid "Manual Spindle CW" msgstr "Marche manuelle broche en sens horaire" -#: src/emc/usr_intf/pncconf/pncconf.py:469 emc/usr_intf/pncconf/pncconf.py:469 -#: src/emc/usr_intf/pncconf/pncconf.py:491 +#: src/emc/usr_intf/pncconf/pncconf.py:398 msgid "Manual Spindle CCW" msgstr "Marche manuelle broche en sens anti-horaire" -#: src/emc/usr_intf/pncconf/pncconf.py:469 emc/usr_intf/pncconf/pncconf.py:469 -#: src/emc/usr_intf/pncconf/pncconf.py:491 +#: src/emc/usr_intf/pncconf/pncconf.py:398 msgid "Manual Spindle Stop" msgstr "Arrêt de broche manuel" -#: src/emc/usr_intf/pncconf/pncconf.py:469 emc/usr_intf/pncconf/pncconf.py:469 -#: src/emc/usr_intf/pncconf/pncconf.py:491 +#: src/emc/usr_intf/pncconf/pncconf.py:398 msgid "Spindle Up-To-Speed" msgstr "Broche Up-To-Speed" -#: src/emc/usr_intf/pncconf/pncconf.py:470 emc/usr_intf/pncconf/pncconf.py:470 -#: src/emc/usr_intf/pncconf/pncconf.py:492 +#: src/emc/usr_intf/pncconf/pncconf.py:399 msgid "Cycle Start" msgstr "Départ cycle" -#: src/emc/usr_intf/pncconf/pncconf.py:470 emc/usr_intf/pncconf/pncconf.py:470 -#: src/emc/usr_intf/pncconf/pncconf.py:492 +#: src/emc/usr_intf/pncconf/pncconf.py:399 msgid "Abort" msgstr "Abandon" -#: src/emc/usr_intf/pncconf/pncconf.py:470 emc/usr_intf/pncconf/pncconf.py:470 -#: src/emc/usr_intf/pncconf/pncconf.py:492 +#: src/emc/usr_intf/pncconf/pncconf.py:399 msgid "Single Step" msgstr "Pas par pas" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 emc/usr_intf/pncconf/pncconf.py:477 -#: emc/usr_intf/pncconf/pncconf.py:529 src/emc/usr_intf/pncconf/pncconf.py:499 -#: src/emc/usr_intf/pncconf/pncconf.py:553 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 msgid "Jog X +" msgstr "Jog X +" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 emc/usr_intf/pncconf/pncconf.py:477 -#: emc/usr_intf/pncconf/pncconf.py:529 src/emc/usr_intf/pncconf/pncconf.py:499 -#: src/emc/usr_intf/pncconf/pncconf.py:553 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 msgid "Jog X -" msgstr "Jog X -" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 emc/usr_intf/pncconf/pncconf.py:477 -#: emc/usr_intf/pncconf/pncconf.py:530 src/emc/usr_intf/pncconf/pncconf.py:499 -#: src/emc/usr_intf/pncconf/pncconf.py:554 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 msgid "Jog Y +" msgstr "Jog Y +" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 emc/usr_intf/pncconf/pncconf.py:477 -#: emc/usr_intf/pncconf/pncconf.py:530 src/emc/usr_intf/pncconf/pncconf.py:499 -#: src/emc/usr_intf/pncconf/pncconf.py:554 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 msgid "Jog Y -" msgstr "Jog Y -" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 emc/usr_intf/pncconf/pncconf.py:477 -#: emc/usr_intf/pncconf/pncconf.py:531 src/emc/usr_intf/pncconf/pncconf.py:499 -#: src/emc/usr_intf/pncconf/pncconf.py:555 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 msgid "Jog Z +" msgstr "Jog Z +" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 emc/usr_intf/pncconf/pncconf.py:477 -#: emc/usr_intf/pncconf/pncconf.py:531 src/emc/usr_intf/pncconf/pncconf.py:499 -#: src/emc/usr_intf/pncconf/pncconf.py:555 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 msgid "Jog Z -" msgstr "Jog Z -" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 emc/usr_intf/pncconf/pncconf.py:477 -#: emc/usr_intf/pncconf/pncconf.py:532 src/emc/usr_intf/pncconf/pncconf.py:499 -#: src/emc/usr_intf/pncconf/pncconf.py:556 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 msgid "Jog A +" msgstr "Jog A +" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 emc/usr_intf/pncconf/pncconf.py:477 -#: emc/usr_intf/pncconf/pncconf.py:532 src/emc/usr_intf/pncconf/pncconf.py:499 -#: src/emc/usr_intf/pncconf/pncconf.py:556 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 msgid "Jog A -" msgstr "Jog A -" -#: src/emc/usr_intf/pncconf/pncconf.py:478 emc/usr_intf/pncconf/pncconf.py:478 -#: src/emc/usr_intf/pncconf/pncconf.py:500 +#: src/emc/usr_intf/pncconf/pncconf.py:407 msgid "Jog button selected +" msgstr "Bouton + du Jog sélectionné" -#: src/emc/usr_intf/pncconf/pncconf.py:478 emc/usr_intf/pncconf/pncconf.py:478 -#: src/emc/usr_intf/pncconf/pncconf.py:500 +#: src/emc/usr_intf/pncconf/pncconf.py:407 msgid "Jog button selected -" msgstr "Bouton - du Jog sélectionné" -#: src/emc/usr_intf/pncconf/pncconf.py:479 emc/usr_intf/pncconf/pncconf.py:479 -#: src/emc/usr_intf/pncconf/pncconf.py:501 +#: src/emc/usr_intf/pncconf/pncconf.py:408 msgid "Unused Input" msgstr "Entrée inutilisée" -#: src/emc/usr_intf/pncconf/pncconf.py:479 emc/usr_intf/pncconf/pncconf.py:479 -#: src/emc/usr_intf/pncconf/pncconf.py:501 +#: src/emc/usr_intf/pncconf/pncconf.py:408 msgid "Limits" msgstr "Limites" -#: src/emc/usr_intf/pncconf/pncconf.py:479 emc/usr_intf/pncconf/pncconf.py:479 -#: src/emc/usr_intf/pncconf/pncconf.py:501 +#: src/emc/usr_intf/pncconf/pncconf.py:408 msgid "Limts/Home Shared" msgstr "Limites/origines partagées" -#: src/emc/usr_intf/pncconf/pncconf.py:480 emc/usr_intf/pncconf/pncconf.py:480 -#: src/emc/usr_intf/pncconf/pncconf.py:370 -#: src/emc/usr_intf/pncconf/pncconf.py:502 -msgid "Axis Selection" -msgstr "Sélection d'axe" - -#: src/emc/usr_intf/pncconf/pncconf.py:480 emc/usr_intf/pncconf/pncconf.py:480 -#: src/emc/usr_intf/pncconf/pncconf.py:502 +#: src/emc/usr_intf/pncconf/pncconf.py:409 msgid "Overrides" msgstr "Survitesse" -#: src/emc/usr_intf/pncconf/pncconf.py:481 emc/usr_intf/pncconf/pncconf.py:481 -#: src/emc/usr_intf/pncconf/pncconf.py:503 +#: src/emc/usr_intf/pncconf/pncconf.py:410 msgid "Operation" msgstr "Opération" -#: src/emc/usr_intf/pncconf/pncconf.py:481 emc/usr_intf/pncconf/pncconf.py:481 -#: src/emc/usr_intf/pncconf/pncconf.py:503 +#: src/emc/usr_intf/pncconf/pncconf.py:410 msgid "External Control" msgstr "Contrôle externe" -#: src/emc/usr_intf/pncconf/pncconf.py:481 emc/usr_intf/pncconf/pncconf.py:481 -#: src/emc/usr_intf/pncconf/pncconf.py:503 +#: src/emc/usr_intf/pncconf/pncconf.py:410 msgid "Axis rapid" msgstr "Axe rapide" -#: src/emc/usr_intf/pncconf/pncconf.py:483 emc/usr_intf/pncconf/pncconf.py:483 -#: src/emc/usr_intf/pncconf/pncconf.py:505 +#: src/emc/usr_intf/pncconf/pncconf.py:412 msgid "S BLDC Control" msgstr "S BLDC Control" -#: src/emc/usr_intf/pncconf/pncconf.py:556 emc/usr_intf/pncconf/pncconf.py:556 -#: src/emc/usr_intf/pncconf/pncconf.py:580 +#: src/emc/usr_intf/pncconf/pncconf.py:487 msgid "Unused PWM Gen" msgstr "Géné PWM inutilisé" -#: src/emc/usr_intf/pncconf/pncconf.py:556 emc/usr_intf/pncconf/pncconf.py:556 -#: src/emc/usr_intf/pncconf/pncconf.py:580 +#: src/emc/usr_intf/pncconf/pncconf.py:487 msgid "X Axis PWM" msgstr "PWM axe X" -#: src/emc/usr_intf/pncconf/pncconf.py:556 emc/usr_intf/pncconf/pncconf.py:556 -#: src/emc/usr_intf/pncconf/pncconf.py:580 +#: src/emc/usr_intf/pncconf/pncconf.py:487 msgid "Y Axis PWM" msgstr "PWM axe Y" -#: src/emc/usr_intf/pncconf/pncconf.py:557 emc/usr_intf/pncconf/pncconf.py:557 -#: src/emc/usr_intf/pncconf/pncconf.py:581 +#: src/emc/usr_intf/pncconf/pncconf.py:488 msgid "Z Axis PWM" msgstr "PWM axe Z" -#: src/emc/usr_intf/pncconf/pncconf.py:557 emc/usr_intf/pncconf/pncconf.py:557 -#: src/emc/usr_intf/pncconf/pncconf.py:581 +#: src/emc/usr_intf/pncconf/pncconf.py:488 msgid "A Axis PWM" msgstr "PWM axe A" -#: src/emc/usr_intf/pncconf/pncconf.py:581 emc/usr_intf/pncconf/pncconf.py:581 -#: src/emc/usr_intf/pncconf/pncconf.py:605 +#: src/emc/usr_intf/pncconf/pncconf.py:512 msgid "X Encoder" msgstr "Codeur X" -#: src/emc/usr_intf/pncconf/pncconf.py:581 emc/usr_intf/pncconf/pncconf.py:581 -#: src/emc/usr_intf/pncconf/pncconf.py:605 +#: src/emc/usr_intf/pncconf/pncconf.py:512 msgid "Y Encoder" msgstr "Codeur Y" -#: src/emc/usr_intf/pncconf/pncconf.py:581 emc/usr_intf/pncconf/pncconf.py:581 -#: src/emc/usr_intf/pncconf/pncconf.py:605 +#: src/emc/usr_intf/pncconf/pncconf.py:512 msgid "Z Encoder" msgstr "Codeur Z" -#: src/emc/usr_intf/pncconf/pncconf.py:581 emc/usr_intf/pncconf/pncconf.py:581 -#: src/emc/usr_intf/pncconf/pncconf.py:605 +#: src/emc/usr_intf/pncconf/pncconf.py:512 msgid "A Encoder" msgstr "Codeur A" -#: src/emc/usr_intf/pncconf/pncconf.py:581 emc/usr_intf/pncconf/pncconf.py:581 -#: src/emc/usr_intf/pncconf/pncconf.py:605 +#: src/emc/usr_intf/pncconf/pncconf.py:512 msgid "Spindle Encoder" msgstr "Codeur broche" -#: src/emc/usr_intf/pncconf/pncconf.py:582 emc/usr_intf/pncconf/pncconf.py:582 -#: src/emc/usr_intf/pncconf/pncconf.py:606 +#: src/emc/usr_intf/pncconf/pncconf.py:513 msgid "X Hand Wheel" msgstr "Manivelle X" -#: src/emc/usr_intf/pncconf/pncconf.py:582 emc/usr_intf/pncconf/pncconf.py:582 -#: src/emc/usr_intf/pncconf/pncconf.py:606 +#: src/emc/usr_intf/pncconf/pncconf.py:513 msgid "Y Hand Wheel" msgstr "Manivelle Y" -#: src/emc/usr_intf/pncconf/pncconf.py:582 emc/usr_intf/pncconf/pncconf.py:582 -#: src/emc/usr_intf/pncconf/pncconf.py:606 +#: src/emc/usr_intf/pncconf/pncconf.py:513 msgid "Z Hand Wheel" msgstr "Manivelle Z" -#: src/emc/usr_intf/pncconf/pncconf.py:582 emc/usr_intf/pncconf/pncconf.py:582 -#: src/emc/usr_intf/pncconf/pncconf.py:606 +#: src/emc/usr_intf/pncconf/pncconf.py:513 msgid "A Hand Wheel" msgstr "Manivelle A" -#: src/emc/usr_intf/pncconf/pncconf.py:582 emc/usr_intf/pncconf/pncconf.py:582 -#: src/emc/usr_intf/pncconf/pncconf.py:606 +#: src/emc/usr_intf/pncconf/pncconf.py:513 msgid "Multi Hand Wheel" msgstr "Manivelle multi-axes" -#: src/emc/usr_intf/pncconf/pncconf.py:583 emc/usr_intf/pncconf/pncconf.py:583 -#: src/emc/usr_intf/pncconf/pncconf.py:607 +#: src/emc/usr_intf/pncconf/pncconf.py:514 msgid "Feed Override" msgstr "Correcteur de vitesse" -#: src/emc/usr_intf/pncconf/pncconf.py:583 emc/usr_intf/pncconf/pncconf.py:583 -#: src/emc/usr_intf/pncconf/pncconf.py:607 +#: src/emc/usr_intf/pncconf/pncconf.py:514 msgid "spindle Override" msgstr "Correcteur de vitesse broche" -#: src/emc/usr_intf/pncconf/pncconf.py:583 emc/usr_intf/pncconf/pncconf.py:583 -#: src/emc/usr_intf/pncconf/pncconf.py:607 +#: src/emc/usr_intf/pncconf/pncconf.py:514 msgid "Max Vel Override" msgstr "Correcteur de vitesse maximale" -#: src/emc/usr_intf/pncconf/pncconf.py:584 emc/usr_intf/pncconf/pncconf.py:584 -#: src/emc/usr_intf/pncconf/pncconf.py:608 +#: src/emc/usr_intf/pncconf/pncconf.py:515 msgid "Unused Encoder" msgstr "Codeur inutilisé" -#: src/emc/usr_intf/pncconf/pncconf.py:584 emc/usr_intf/pncconf/pncconf.py:584 -#: src/emc/usr_intf/pncconf/pncconf.py:608 +#: src/emc/usr_intf/pncconf/pncconf.py:515 msgid "Axis Encoder" msgstr "Codeur d'axe" -#: src/emc/usr_intf/pncconf/pncconf.py:584 emc/usr_intf/pncconf/pncconf.py:584 -#: src/emc/usr_intf/pncconf/pncconf.py:608 +#: src/emc/usr_intf/pncconf/pncconf.py:515 msgid "MPG Jog Controls" msgstr "Contrôles sur manivelle de jog" -#: src/emc/usr_intf/pncconf/pncconf.py:584 emc/usr_intf/pncconf/pncconf.py:584 -#: src/emc/usr_intf/pncconf/pncconf.py:608 +#: src/emc/usr_intf/pncconf/pncconf.py:515 msgid "Override MPG control" msgstr "Contrôle correcteur par manivelle" -#: src/emc/usr_intf/pncconf/pncconf.py:587 emc/usr_intf/pncconf/pncconf.py:587 -#: src/emc/usr_intf/pncconf/pncconf.py:611 +#: src/emc/usr_intf/pncconf/pncconf.py:518 msgid "Unused Resolver" msgstr "Résolveur inutilisé" -#: src/emc/usr_intf/pncconf/pncconf.py:587 emc/usr_intf/pncconf/pncconf.py:587 -#: src/emc/usr_intf/pncconf/pncconf.py:611 +#: src/emc/usr_intf/pncconf/pncconf.py:518 msgid "X Resolver" msgstr "Résolveur X" -#: src/emc/usr_intf/pncconf/pncconf.py:587 emc/usr_intf/pncconf/pncconf.py:587 -#: src/emc/usr_intf/pncconf/pncconf.py:611 +#: src/emc/usr_intf/pncconf/pncconf.py:518 msgid "Y Resolver" msgstr "Résolveur Y" -#: src/emc/usr_intf/pncconf/pncconf.py:587 emc/usr_intf/pncconf/pncconf.py:587 -#: src/emc/usr_intf/pncconf/pncconf.py:611 +#: src/emc/usr_intf/pncconf/pncconf.py:518 msgid "Z Resolver" msgstr "Résolveur Z" -#: src/emc/usr_intf/pncconf/pncconf.py:588 emc/usr_intf/pncconf/pncconf.py:588 -#: src/emc/usr_intf/pncconf/pncconf.py:612 +#: src/emc/usr_intf/pncconf/pncconf.py:519 msgid "A Resolver" msgstr "Résolveur A" -#: src/emc/usr_intf/pncconf/pncconf.py:588 emc/usr_intf/pncconf/pncconf.py:588 -#: src/emc/usr_intf/pncconf/pncconf.py:612 +#: src/emc/usr_intf/pncconf/pncconf.py:519 msgid "S Resolver" msgstr "Résolveur S" -#: src/emc/usr_intf/pncconf/pncconf.py:592 emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.py:616 +#: src/emc/usr_intf/pncconf/pncconf.py:523 msgid "Unused 8I20" msgstr "8I20 inutilisé" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:61457 -#: emc/usr_intf/pncconf/pncconf.py:592 -#: emc/usr_intf/pncconf/pncconf.glade:61457 -#: src/emc/usr_intf/pncconf/pncconf.py:616 -#: src/emc/usr_intf/pncconf/pncconf.glade:68433 +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "X Axis" msgstr "Axe X" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:62549 -#: emc/usr_intf/pncconf/pncconf.py:592 -#: emc/usr_intf/pncconf/pncconf.glade:62549 -#: src/emc/usr_intf/pncconf/pncconf.py:616 -#: src/emc/usr_intf/pncconf/pncconf.glade:69525 +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Y Axis" msgstr "Axe Y" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:63642 -#: emc/usr_intf/pncconf/pncconf.py:592 -#: emc/usr_intf/pncconf/pncconf.glade:63642 -#: src/emc/usr_intf/pncconf/pncconf.py:616 -#: src/emc/usr_intf/pncconf/pncconf.glade:70618 +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Z Axis" msgstr "Axe Z" -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.glade:64735 -#: emc/usr_intf/pncconf/pncconf.py:593 -#: emc/usr_intf/pncconf/pncconf.glade:64735 -#: src/emc/usr_intf/pncconf/pncconf.py:617 -#: src/emc/usr_intf/pncconf/pncconf.glade:71711 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "A Axis" msgstr "Axe A" -#: src/emc/usr_intf/pncconf/pncconf.py:597 emc/usr_intf/pncconf/pncconf.py:597 -#: src/emc/usr_intf/pncconf/pncconf.py:621 +#: src/emc/usr_intf/pncconf/pncconf.py:528 msgid "Unused Analog Output" msgstr "Sortie analogique inutilisée" -#: src/emc/usr_intf/pncconf/pncconf.py:597 emc/usr_intf/pncconf/pncconf.py:597 -#: src/emc/usr_intf/pncconf/pncconf.py:621 +#: src/emc/usr_intf/pncconf/pncconf.py:528 msgid "Spindle Output" msgstr "Sortie broche" -#: src/emc/usr_intf/pncconf/pncconf.py:613 emc/usr_intf/pncconf/pncconf.py:613 -#: src/emc/usr_intf/pncconf/pncconf.py:642 +#: src/emc/usr_intf/pncconf/pncconf.py:551 msgid "Unused StepGen" msgstr "Géné. de pas inutilisé" -#: src/emc/usr_intf/pncconf/pncconf.py:613 emc/usr_intf/pncconf/pncconf.py:613 -#: src/emc/usr_intf/pncconf/pncconf.py:642 +#: src/emc/usr_intf/pncconf/pncconf.py:551 msgid "X Axis StepGen" msgstr "Géné. de pas axe X" -#: src/emc/usr_intf/pncconf/pncconf.py:613 emc/usr_intf/pncconf/pncconf.py:613 -#: src/emc/usr_intf/pncconf/pncconf.py:642 +#: src/emc/usr_intf/pncconf/pncconf.py:551 msgid "Y Axis StepGen" msgstr "Géné. de pas axe Y" -#: src/emc/usr_intf/pncconf/pncconf.py:613 emc/usr_intf/pncconf/pncconf.py:613 -#: src/emc/usr_intf/pncconf/pncconf.py:642 +#: src/emc/usr_intf/pncconf/pncconf.py:551 msgid "Z Axis StepGen" msgstr "Géné. de pas axe Z" -#: src/emc/usr_intf/pncconf/pncconf.py:614 emc/usr_intf/pncconf/pncconf.py:614 -#: src/emc/usr_intf/pncconf/pncconf.py:643 +#: src/emc/usr_intf/pncconf/pncconf.py:552 msgid "A Axis StepGen" msgstr "Géné. de pas axe A" -#: src/emc/usr_intf/pncconf/pncconf.py:614 emc/usr_intf/pncconf/pncconf.py:614 -#: src/emc/usr_intf/pncconf/pncconf.py:643 +#: src/emc/usr_intf/pncconf/pncconf.py:552 msgid "Spindle StepGen" msgstr "Géné. de pas de la broche" -#: src/emc/usr_intf/pncconf/pncconf.py:645 +#: src/emc/usr_intf/pncconf/pncconf.py:552 msgid "X2 Tandem StepGen" msgstr "X2 Tandem StepGen" -#: src/emc/usr_intf/pncconf/pncconf.py:645 +#: src/emc/usr_intf/pncconf/pncconf.py:552 msgid "Y2 Tandem StepGen" msgstr "Y2 Tandem StepGen" -#: src/emc/usr_intf/pncconf/pncconf.py:646 +#: src/emc/usr_intf/pncconf/pncconf.py:553 msgid "Z2 Tandem StepGen" msgstr "Z2 Tandem StepGen" -#: src/emc/usr_intf/pncconf/pncconf.py:646 +#: src/emc/usr_intf/pncconf/pncconf.py:553 msgid "Charge Pump StepGen" msgstr "Pompe de charge StepGen" -#: src/emc/usr_intf/pncconf/pncconf.py:660 emc/usr_intf/pncconf/pncconf.py:628 -#: src/emc/usr_intf/pncconf/pncconf.py:628 +#: src/emc/usr_intf/pncconf/pncconf.py:567 #, fuzzy msgid "Unused TPPWM Gen" -msgstr "" -"TPPWM Gen inutilisé" +msgstr "TPPWM Gen inutilisé" -#: src/emc/usr_intf/pncconf/pncconf.py:628 emc/usr_intf/pncconf/pncconf.py:628 -#: src/emc/usr_intf/pncconf/pncconf.py:658 +#: src/emc/usr_intf/pncconf/pncconf.py:567 msgid "X Axis BL Driver" msgstr "X Axis BL Driver" -#: src/emc/usr_intf/pncconf/pncconf.py:628 emc/usr_intf/pncconf/pncconf.py:628 -#: src/emc/usr_intf/pncconf/pncconf.py:658 +#: src/emc/usr_intf/pncconf/pncconf.py:567 msgid "Y Axis BL Driver" msgstr "Y Axis BL Driver" -#: src/emc/usr_intf/pncconf/pncconf.py:629 emc/usr_intf/pncconf/pncconf.py:629 -#: src/emc/usr_intf/pncconf/pncconf.py:659 +#: src/emc/usr_intf/pncconf/pncconf.py:568 msgid "Z Axis BL Driver" msgstr "Z Axis BL Driver" -#: src/emc/usr_intf/pncconf/pncconf.py:629 emc/usr_intf/pncconf/pncconf.py:629 -#: src/emc/usr_intf/pncconf/pncconf.py:659 +#: src/emc/usr_intf/pncconf/pncconf.py:568 msgid "A Axis BL Driver" msgstr "A Axis BL Driver" -#: src/emc/usr_intf/pncconf/pncconf.py:629 emc/usr_intf/pncconf/pncconf.py:629 -#: src/emc/usr_intf/pncconf/pncconf.py:659 +#: src/emc/usr_intf/pncconf/pncconf.py:568 msgid "S Axis BL Driver" msgstr "S Axis BL Driver" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -#: src/emc/usr_intf/pncconf/pncconf.py:6557 -#: emc/usr_intf/pncconf/pncconf.py:636 emc/usr_intf/pncconf/pncconf.py:6555 -#: src/emc/usr_intf/pncconf/pncconf.py:667 -#: src/emc/usr_intf/pncconf/pncconf.py:6877 +#: src/emc/usr_intf/pncconf/pncconf.py:576 +#: src/emc/usr_intf/pncconf/pncconf.py:6882 msgid "Unused Channel" msgstr "Voie inutilisée" -#: src/emc/usr_intf/pncconf/pncconf.py:636 emc/usr_intf/pncconf/pncconf.py:636 -#: src/emc/usr_intf/pncconf/pncconf.py:667 +#: src/emc/usr_intf/pncconf/pncconf.py:576 #, fuzzy msgid "8i20 Amplifier Card" -msgstr "" -"8i20 Carte amplificateur" +msgstr "8i20 Carte amplificateur" -#: src/emc/usr_intf/pncconf/pncconf.py:636 emc/usr_intf/pncconf/pncconf.py:636 -#: src/emc/usr_intf/pncconf/pncconf.py:667 +#: src/emc/usr_intf/pncconf/pncconf.py:576 msgid "7i64 I/O Card" msgstr "Carte E/S 7i64" -#: src/emc/usr_intf/pncconf/pncconf.py:636 emc/usr_intf/pncconf/pncconf.py:636 -#: src/emc/usr_intf/pncconf/pncconf.py:667 +#: src/emc/usr_intf/pncconf/pncconf.py:576 msgid "7i69 I/O Card" msgstr "Carte E/S 7i69" -#: src/emc/usr_intf/pncconf/pncconf.py:637 emc/usr_intf/pncconf/pncconf.py:637 -#: src/emc/usr_intf/pncconf/pncconf.py:668 +#: src/emc/usr_intf/pncconf/pncconf.py:577 msgid "7i70 I/O Card" msgstr "Carte E/S 7i70" -#: src/emc/usr_intf/pncconf/pncconf.py:637 emc/usr_intf/pncconf/pncconf.py:637 -#: src/emc/usr_intf/pncconf/pncconf.py:668 +#: src/emc/usr_intf/pncconf/pncconf.py:577 msgid "7i71 I/O Card" msgstr "Carte E/S 7i71 " -#: src/emc/usr_intf/pncconf/pncconf.py:637 emc/usr_intf/pncconf/pncconf.py:637 -#: src/emc/usr_intf/pncconf/pncconf.py:668 +#: src/emc/usr_intf/pncconf/pncconf.py:577 msgid "7i76 Mode 0 I/O Card" msgstr "Carte E/S 7i76 Mode 0" -#: src/emc/usr_intf/pncconf/pncconf.py:670 +#: src/emc/usr_intf/pncconf/pncconf.py:577 msgid "7i77 Mode 0 I/O Card" msgstr "Carte E/S 7i77 Mode 0" -#: src/emc/usr_intf/pncconf/pncconf.py:671 +#: src/emc/usr_intf/pncconf/pncconf.py:578 msgid "7i73 Mode 1 Pendant Card" msgstr "Carte 7i73 Mode 1" -#: src/emc/usr_intf/pncconf/pncconf.py:673 +#: src/emc/usr_intf/pncconf/pncconf.py:580 msgid "Unused Analog In" msgstr "Entrée analogique inutilisée" -#: src/emc/usr_intf/pncconf/pncconf.py:762 emc/usr_intf/pncconf/pncconf.py:722 -#: src/emc/usr_intf/pncconf/pncconf.py:722 +#: src/emc/usr_intf/pncconf/pncconf.py:676 msgid "my_LinuxCNC_machine" msgstr "ma_machine_LinuxCNC" -#: src/emc/usr_intf/pncconf/pncconf.py:1328 -#: emc/usr_intf/pncconf/pncconf.py:1328 -#: src/emc/usr_intf/pncconf/pncconf.py:1372 +#: src/emc/usr_intf/pncconf/pncconf.py:939 +#: src/emc/usr_intf/pncconf/pncconf.py:941 +msgid "Enter Address" +msgstr "Entrer l'adresse" + +#: src/emc/usr_intf/pncconf/pncconf.py:1290 msgid "" "This configuration was saved with an earlier version of pncconf which may be " "incompatible.\n" @@ -10210,16 +10809,12 @@ msgstr "" "version, posez la question sur le forum linuxcnc.org,\n" "c'est peut être possible..." -#: src/emc/usr_intf/pncconf/pncconf.py:1334 -#: emc/usr_intf/pncconf/pncconf.py:1334 -#: src/emc/usr_intf/pncconf/pncconf.py:1378 +#: src/emc/usr_intf/pncconf/pncconf.py:1296 #, python-format msgid "File %r was modified since it was written by PNCconf" msgstr "Le fichier %r a été modifié depuis qu'il a été écrit par PNCconf" -#: src/emc/usr_intf/pncconf/pncconf.py:1338 -#: emc/usr_intf/pncconf/pncconf.py:1338 -#: src/emc/usr_intf/pncconf/pncconf.py:1382 +#: src/emc/usr_intf/pncconf/pncconf.py:1300 msgid "" "Saving this configuration file will discard configuration changes made " "outside PNCconf." @@ -10227,196 +10822,120 @@ msgstr "" "Enregistrer cette configuration va écraser les modifications faites à " "l'extérieur de PNCconf" -#: src/emc/usr_intf/pncconf/pncconf.py:1365 -#: src/emc/usr_intf/pncconf/pncconf.py:2368 -#: emc/usr_intf/pncconf/pncconf.py:1365 emc/usr_intf/pncconf/pncconf.py:2368 -#: src/emc/usr_intf/pncconf/pncconf.py:1409 -#: src/emc/usr_intf/pncconf/pncconf.py:2476 +#: src/emc/usr_intf/pncconf/pncconf.py:1327 +#: src/emc/usr_intf/pncconf/pncconf.py:2421 #, python-format msgid "# Generated by PNCconf at %s" msgstr "# Généré par PNCconf le %s" -#: src/emc/usr_intf/pncconf/pncconf.py:1367 -#: src/emc/usr_intf/pncconf/pncconf.py:2370 -#: emc/usr_intf/pncconf/pncconf.py:1367 emc/usr_intf/pncconf/pncconf.py:2370 -#: src/emc/usr_intf/pncconf/pncconf.py:1411 -#: src/emc/usr_intf/pncconf/pncconf.py:2478 +#: src/emc/usr_intf/pncconf/pncconf.py:1329 +#: src/emc/usr_intf/pncconf/pncconf.py:2423 msgid "# overwritten when you run PNCconf again" msgstr "# écrasé quand vous relancerez PNCconf" -#: src/emc/usr_intf/pncconf/pncconf.py:2070 -#: emc/usr_intf/pncconf/pncconf.py:2070 -#: src/emc/usr_intf/pncconf/pncconf.py:2172 +#: src/emc/usr_intf/pncconf/pncconf.py:2134 msgid "# Use ACTUAL spindle velocity from spindle encoder" msgstr "# Utiliser la vitesse de broche actuelle depuis le codeur de broche" -#: src/emc/usr_intf/pncconf/pncconf.py:2071 -#: emc/usr_intf/pncconf/pncconf.py:2071 -#: src/emc/usr_intf/pncconf/pncconf.py:2173 +#: src/emc/usr_intf/pncconf/pncconf.py:2135 msgid "# spindle-velocity bounces around so we filter it with lowpass" msgstr "" "# les variations parasites de la vitesse de broche seront filtrées par un " "filtre passe-bas" -#: src/emc/usr_intf/pncconf/pncconf.py:2072 -#: emc/usr_intf/pncconf/pncconf.py:2072 -#: src/emc/usr_intf/pncconf/pncconf.py:2174 +#: src/emc/usr_intf/pncconf/pncconf.py:2136 msgid "" "# spindle-velocity is signed so we use absolute component to remove sign" msgstr "" "# le signe de la vitesse de broche sera enlevé par un composant absolu" -#: src/emc/usr_intf/pncconf/pncconf.py:2073 -#: emc/usr_intf/pncconf/pncconf.py:2073 -#: src/emc/usr_intf/pncconf/pncconf.py:2175 +#: src/emc/usr_intf/pncconf/pncconf.py:2137 msgid "# ACTUAL velocity is in RPS not RPM so we scale it." msgstr "" "# La vitesse ACTUELLE est en tr/s et non en tr/mn elle doit être mise à " "l'échelle." -#: src/emc/usr_intf/pncconf/pncconf.py:2082 -#: emc/usr_intf/pncconf/pncconf.py:2082 -#: src/emc/usr_intf/pncconf/pncconf.py:2184 -msgid "" -"# Use COMMANDED spindle velocity from LinuxCNC because no spindle encoder " -"was specified" -msgstr "" -"# Pas de codeur de broche spécifié, la vitesse de broche COMMANDEE depuis " -"LinuxCNC sera utilisée" - -#: src/emc/usr_intf/pncconf/pncconf.py:2083 -#: emc/usr_intf/pncconf/pncconf.py:2083 -#: src/emc/usr_intf/pncconf/pncconf.py:2185 -#, fuzzy -msgid "" -"# COMMANDED velocity is signed so we use absolute component to remove sign" -msgstr "" -"# La vitesse COMMANDEE est signée, un composant absolu (abs.0) sera utilisé " -"pour enlever le signe" - -#: src/emc/usr_intf/pncconf/pncconf.py:2727 -#: emc/usr_intf/pncconf/pncconf.py:2727 -#: src/emc/usr_intf/pncconf/pncconf.py:2844 +#: src/emc/usr_intf/pncconf/pncconf.py:2821 msgid "# connect miscellaneous signals" msgstr "#connections de signaux divers" -#: src/emc/usr_intf/pncconf/pncconf.py:2730 -#: emc/usr_intf/pncconf/pncconf.py:2730 -#: src/emc/usr_intf/pncconf/pncconf.py:2847 +#: src/emc/usr_intf/pncconf/pncconf.py:2824 msgid "# ---HALUI signals---" msgstr "# ---signaux HALUI---" -#: src/emc/usr_intf/pncconf/pncconf.py:2749 -#: emc/usr_intf/pncconf/pncconf.py:2749 -#: src/emc/usr_intf/pncconf/pncconf.py:2866 +#: src/emc/usr_intf/pncconf/pncconf.py:2843 msgid "# ---charge pump signals---" msgstr "# ---signaux pompe de charge---" -#: src/emc/usr_intf/pncconf/pncconf.py:2753 -#: emc/usr_intf/pncconf/pncconf.py:2753 -#: src/emc/usr_intf/pncconf/pncconf.py:2870 +#: src/emc/usr_intf/pncconf/pncconf.py:2847 msgid "# ---coolant signals---" msgstr "# ---signaux d'arrosage---" -#: src/emc/usr_intf/pncconf/pncconf.py:2758 -#: emc/usr_intf/pncconf/pncconf.py:2758 -#: src/emc/usr_intf/pncconf/pncconf.py:2875 +#: src/emc/usr_intf/pncconf/pncconf.py:2852 msgid "# ---probe signal---" msgstr "# ---signal de sonde---" -#: src/emc/usr_intf/pncconf/pncconf.py:2763 -#: emc/usr_intf/pncconf/pncconf.py:2763 -#: src/emc/usr_intf/pncconf/pncconf.py:2880 +#: src/emc/usr_intf/pncconf/pncconf.py:2857 msgid "# ---jog button signals---" msgstr "# ---signaux de boutons de jog---" -#: src/emc/usr_intf/pncconf/pncconf.py:2768 -#: emc/usr_intf/pncconf/pncconf.py:2768 -#: src/emc/usr_intf/pncconf/pncconf.py:2885 +#: src/emc/usr_intf/pncconf/pncconf.py:2862 msgid "# ---USB device jog button signals---" msgstr "# ---signaux de boutons de jog sur dispositif USB---" -#: src/emc/usr_intf/pncconf/pncconf.py:2803 -#: src/emc/usr_intf/pncconf/pncconf.py:2825 -#: emc/usr_intf/pncconf/pncconf.py:2803 emc/usr_intf/pncconf/pncconf.py:2825 -#: src/emc/usr_intf/pncconf/pncconf.py:2925 -#: src/emc/usr_intf/pncconf/pncconf.py:2951 +#: src/emc/usr_intf/pncconf/pncconf.py:2903 +#: src/emc/usr_intf/pncconf/pncconf.py:2929 msgid "# ---mpg signals---" msgstr "# ---signaux manivelle---" -#: src/emc/usr_intf/pncconf/pncconf.py:2971 -#: emc/usr_intf/pncconf/pncconf.py:2971 -#: src/emc/usr_intf/pncconf/pncconf.py:3133 +#: src/emc/usr_intf/pncconf/pncconf.py:3111 msgid "# ---motion control signals---" msgstr "# ---signaux contrôle mouvement---" -#: src/emc/usr_intf/pncconf/pncconf.py:2976 -#: emc/usr_intf/pncconf/pncconf.py:2976 -#: src/emc/usr_intf/pncconf/pncconf.py:3138 +#: src/emc/usr_intf/pncconf/pncconf.py:3116 msgid "# ---digital in / out signals---" msgstr "# ---signaux entrée / sortie numérique---" -#: src/emc/usr_intf/pncconf/pncconf.py:2986 -#: emc/usr_intf/pncconf/pncconf.py:2986 -#: src/emc/usr_intf/pncconf/pncconf.py:3148 +#: src/emc/usr_intf/pncconf/pncconf.py:3126 msgid "# ---estop signals---" msgstr "# ---signaux d'A/U---" -#: src/emc/usr_intf/pncconf/pncconf.py:3005 -#: emc/usr_intf/pncconf/pncconf.py:3005 -#: src/emc/usr_intf/pncconf/pncconf.py:3167 +#: src/emc/usr_intf/pncconf/pncconf.py:3145 msgid "# ---manual tool change signals---" msgstr "# ---signaux changeur manuel d'outil---" -#: src/emc/usr_intf/pncconf/pncconf.py:3014 -#: emc/usr_intf/pncconf/pncconf.py:3014 -#: src/emc/usr_intf/pncconf/pncconf.py:3176 +#: src/emc/usr_intf/pncconf/pncconf.py:3154 msgid "# ---toolchange signals for custom tool changer---" msgstr "# ---signaux pour changeur d'outil personnalisé---" -#: src/emc/usr_intf/pncconf/pncconf.py:3036 -#: emc/usr_intf/pncconf/pncconf.py:3036 -#: src/emc/usr_intf/pncconf/pncconf.py:3198 +#: src/emc/usr_intf/pncconf/pncconf.py:3176 msgid "# --- Classicladder signals for Z axis Auto touch off program---" msgstr "" "# --- signaux Classicladder programme de toucher automatique pour l'axe Z---" -#: src/emc/usr_intf/pncconf/pncconf.py:3055 -#: emc/usr_intf/pncconf/pncconf.py:3055 -#: src/emc/usr_intf/pncconf/pncconf.py:3217 +#: src/emc/usr_intf/pncconf/pncconf.py:3195 msgid "# These files are loaded post gladeVCP, in the order they appear" msgstr "" "# Ces fichiers sont chargés après gladeVCP, dans leur ordre d'apparition" -#: src/emc/usr_intf/pncconf/pncconf.py:3069 -#: src/emc/usr_intf/pncconf/pncconf.py:3136 -#: emc/usr_intf/pncconf/pncconf.py:3069 emc/usr_intf/pncconf/pncconf.py:3136 -#: src/emc/usr_intf/pncconf/pncconf.py:3231 -#: src/emc/usr_intf/pncconf/pncconf.py:3298 +#: src/emc/usr_intf/pncconf/pncconf.py:3209 +#: src/emc/usr_intf/pncconf/pncconf.py:3276 msgid "# _DO NOT_ include your HAL commands here." msgstr "# _NE PAS_ inclure vos commandes HAL ici" -#: src/emc/usr_intf/pncconf/pncconf.py:3070 -#: emc/usr_intf/pncconf/pncconf.py:3070 -#: src/emc/usr_intf/pncconf/pncconf.py:3232 +#: src/emc/usr_intf/pncconf/pncconf.py:3210 msgid "# Put custom HAL commands in custom_gvcp.hal" msgstr "# Placez vos commandes HAL personnalisées dans custom_gvcp.hal" -#: src/emc/usr_intf/pncconf/pncconf.py:3073 -#: emc/usr_intf/pncconf/pncconf.py:3073 -#: src/emc/usr_intf/pncconf/pncconf.py:3235 +#: src/emc/usr_intf/pncconf/pncconf.py:3213 msgid "# **** Setup of spindle speed display using gladevcp ****" msgstr "# **** Réglage de vitesse broche affiché avec gladevcp ****" -#: src/emc/usr_intf/pncconf/pncconf.py:3082 -#: emc/usr_intf/pncconf/pncconf.py:3082 -#: src/emc/usr_intf/pncconf/pncconf.py:3244 +#: src/emc/usr_intf/pncconf/pncconf.py:3222 msgid "# **** Setup GLADE MDI buttons ****" msgstr "# **** Boutons de réglage GLADE MDI ****" -#: src/emc/usr_intf/pncconf/pncconf.py:3095 -#: emc/usr_intf/pncconf/pncconf.py:3095 -#: src/emc/usr_intf/pncconf/pncconf.py:3257 +#: src/emc/usr_intf/pncconf/pncconf.py:3235 msgid "" "# **** Z axis touch-off button - requires the touch-off classicladder " "program ****" @@ -10424,167 +10943,119 @@ msgstr "" "# **** Bouton toucher de l'axe Z - requiert le programme de toucher de " "classicladder ****" -#: src/emc/usr_intf/pncconf/pncconf.py:3125 -#: emc/usr_intf/pncconf/pncconf.py:3125 -#: src/emc/usr_intf/pncconf/pncconf.py:3287 +#: src/emc/usr_intf/pncconf/pncconf.py:3265 msgid "# These files are loaded post GUI, in the order they appear" msgstr "# Ces fichiers sont chargés après la GUI, dans leur ordre d'apparition" -#: src/emc/usr_intf/pncconf/pncconf.py:3137 -#: emc/usr_intf/pncconf/pncconf.py:3137 -#: src/emc/usr_intf/pncconf/pncconf.py:3299 +#: src/emc/usr_intf/pncconf/pncconf.py:3277 msgid "# Put custom HAL commands in custom_postgui.hal" msgstr "# Placez vos commandes HAL personnalisées dans custom_postgui.hal" -#: src/emc/usr_intf/pncconf/pncconf.py:3138 -#: emc/usr_intf/pncconf/pncconf.py:3138 -#: src/emc/usr_intf/pncconf/pncconf.py:3300 +#: src/emc/usr_intf/pncconf/pncconf.py:3278 msgid "# The commands in this file are run after the GUI loads" msgstr "" "# Les commandes de ce fichier seront exécutées après le chargement de la GUI" -#: src/emc/usr_intf/pncconf/pncconf.py:3148 -#: emc/usr_intf/pncconf/pncconf.py:3148 -#: src/emc/usr_intf/pncconf/pncconf.py:3310 +#: src/emc/usr_intf/pncconf/pncconf.py:3288 msgid "# **** Setup of spindle speed display using pyvcp -END ****" msgstr "# **** Réglage de vitesse broche affiché avec pyvcp -END ****" -#: src/emc/usr_intf/pncconf/pncconf.py:3160 -#: emc/usr_intf/pncconf/pncconf.py:3160 -#: src/emc/usr_intf/pncconf/pncconf.py:3322 +#: src/emc/usr_intf/pncconf/pncconf.py:3300 msgid "# This file will not be overwritten when you run PNCconf again" msgstr "# Ce fichier ne sera pas écrasé si vous relancez PNCconf" -#: src/emc/usr_intf/pncconf/pncconf.py:3166 -#: emc/usr_intf/pncconf/pncconf.py:3166 -#: src/emc/usr_intf/pncconf/pncconf.py:3328 +#: src/emc/usr_intf/pncconf/pncconf.py:3306 msgid "# These commands are required for Touchy GUI" msgstr "# Ces commandes sont requises par la GUI Touchy" -#: src/emc/usr_intf/pncconf/pncconf.py:3218 -#: emc/usr_intf/pncconf/pncconf.py:3218 -#: src/emc/usr_intf/pncconf/pncconf.py:3380 +#: src/emc/usr_intf/pncconf/pncconf.py:3358 #, python-format msgid "Generated by PNCconf at %s" msgstr "Généré par PNCconf le %s" -#: src/emc/usr_intf/pncconf/pncconf.py:3230 -#: emc/usr_intf/pncconf/pncconf.py:3230 -#: src/emc/usr_intf/pncconf/pncconf.py:3392 +#: src/emc/usr_intf/pncconf/pncconf.py:3370 msgid "configures LinuxCNC as:\n" msgstr "configurer LinuxCNC comme:\n" -#: src/emc/usr_intf/pncconf/pncconf.py:3231 -#: emc/usr_intf/pncconf/pncconf.py:3231 -#: src/emc/usr_intf/pncconf/pncconf.py:3393 +#: src/emc/usr_intf/pncconf/pncconf.py:3371 msgid "type CNC\n" msgstr "type de CNC\n" -#: src/emc/usr_intf/pncconf/pncconf.py:3232 -#: emc/usr_intf/pncconf/pncconf.py:3232 -#: src/emc/usr_intf/pncconf/pncconf.py:3394 +#: src/emc/usr_intf/pncconf/pncconf.py:3372 msgid "will be used as the frontend display" msgstr "sera utilisé en façade de l'affichage" -#: src/emc/usr_intf/pncconf/pncconf.py:3241 -#: emc/usr_intf/pncconf/pncconf.py:3241 -#: src/emc/usr_intf/pncconf/pncconf.py:3403 +#: src/emc/usr_intf/pncconf/pncconf.py:3381 msgid " connector" msgstr " connecteur" -#: src/emc/usr_intf/pncconf/pncconf.py:3253 -#: emc/usr_intf/pncconf/pncconf.py:3253 -#: src/emc/usr_intf/pncconf/pncconf.py:3415 +#: src/emc/usr_intf/pncconf/pncconf.py:3393 msgid "invrt" msgstr "Inverser" -#: src/emc/usr_intf/pncconf/pncconf.py:3262 -#: emc/usr_intf/pncconf/pncconf.py:3262 -#: src/emc/usr_intf/pncconf/pncconf.py:3424 +#: src/emc/usr_intf/pncconf/pncconf.py:3402 #, python-format msgid "%(name)s Parport" msgstr "%(name)s Parport" -#: src/emc/usr_intf/pncconf/pncconf.py:3267 -#: src/emc/usr_intf/pncconf/pncconf.py:3275 -#: emc/usr_intf/pncconf/pncconf.py:3267 emc/usr_intf/pncconf/pncconf.py:3275 -#: src/emc/usr_intf/pncconf/pncconf.py:3429 -#: src/emc/usr_intf/pncconf/pncconf.py:3437 +#: src/emc/usr_intf/pncconf/pncconf.py:3407 +#: src/emc/usr_intf/pncconf/pncconf.py:3415 msgid "-> inverted" msgstr "-> inversé" -#: src/emc/usr_intf/pncconf/pncconf.py:3269 -#: emc/usr_intf/pncconf/pncconf.py:3269 -#: src/emc/usr_intf/pncconf/pncconf.py:3431 +#: src/emc/usr_intf/pncconf/pncconf.py:3409 #, python-format msgid "pin# %(pinnum)d is connected to input signal:'%(data)s' %(mesag)s" msgstr "pin# %(pinnum)d est connectée au signal d'entrée:'%(data)s' %(mesag)s" -#: src/emc/usr_intf/pncconf/pncconf.py:3277 -#: emc/usr_intf/pncconf/pncconf.py:3277 -#: src/emc/usr_intf/pncconf/pncconf.py:3439 +#: src/emc/usr_intf/pncconf/pncconf.py:3417 #, python-format msgid "pin# %(pinnum)d is connected to output signal:'%(data)s' %(mesag)s" msgstr "pin# %(pinnum)d est connectée au signal de sortie:'%(data)s' %(mesag)s" -#: src/emc/usr_intf/pncconf/pncconf.py:3455 -#: emc/usr_intf/pncconf/pncconf.py:3455 -#: src/emc/usr_intf/pncconf/pncconf.py:3617 +#: src/emc/usr_intf/pncconf/pncconf.py:3595 msgid "Desktop Launcher for LinuxCNC config made by PNCconf" msgstr "" "Lanceur de bureau pour LinuxCNC avec la configuration faite par PNCconf" -#: src/emc/usr_intf/pncconf/pncconf.py:3725 -#: emc/usr_intf/pncconf/pncconf.py:3725 -#: src/emc/usr_intf/pncconf/pncconf.py:3908 +#: src/emc/usr_intf/pncconf/pncconf.py:3856 +#, python-format +msgid "%s Axis Configuration" +msgstr "Configuration axe %s" + +#: src/emc/usr_intf/pncconf/pncconf.py:3881 msgid "Spindle Motor/Encoder Configuration" msgstr "Configuration moteur/codeur de la broche" -#: src/emc/usr_intf/pncconf/pncconf.py:3727 -#: emc/usr_intf/pncconf/pncconf.py:3727 -#: src/emc/usr_intf/pncconf/pncconf.py:3910 +#: src/emc/usr_intf/pncconf/pncconf.py:3883 #, python-format msgid "%s Axis Motor/Encoder Configuration" msgstr "Configuration moteur/codeur de l'axe %s" -#: src/emc/usr_intf/pncconf/pncconf.py:3756 -#: emc/usr_intf/pncconf/pncconf.py:3756 -#: src/emc/usr_intf/pncconf/pncconf.py:3939 +#: src/emc/usr_intf/pncconf/pncconf.py:3912 #, python-format msgid "%s Parallel Port Setup" msgstr "Réglage du port parallèle %s" -#: src/emc/usr_intf/pncconf/pncconf.py:3780 -#: emc/usr_intf/pncconf/pncconf.py:3780 -#: src/emc/usr_intf/pncconf/pncconf.py:3963 +#: src/emc/usr_intf/pncconf/pncconf.py:3936 #, python-format msgid "%s I/0 Setup" msgstr "Réglage E/S %s " -#: src/emc/usr_intf/pncconf/pncconf.py:4001 -#: emc/usr_intf/pncconf/pncconf.py:4001 -#: src/emc/usr_intf/pncconf/pncconf.py:4184 +#: src/emc/usr_intf/pncconf/pncconf.py:4162 msgid "Quit PNCconfig and discard changes?" msgstr "Quitter PNCconf et perdre les modifications ?" -#: src/emc/usr_intf/pncconf/pncconf.py:4042 -#: src/emc/usr_intf/pncconf/pncconf.glade:65849 -#: emc/usr_intf/pncconf/pncconf.py:4042 -#: emc/usr_intf/pncconf/pncconf.glade:65849 -#: src/emc/usr_intf/pncconf/pncconf.py:4225 -#: src/emc/usr_intf/pncconf/pncconf.glade:72825 +#: src/emc/usr_intf/pncconf/pncconf.py:4203 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Help Pages" msgstr "Pages d'aide" -#: src/emc/usr_intf/pncconf/pncconf.py:4047 -#: emc/usr_intf/pncconf/pncconf.py:4047 -#: src/emc/usr_intf/pncconf/pncconf.py:4230 +#: src/emc/usr_intf/pncconf/pncconf.py:4208 msgid "Help page is unavailable\n" msgstr "Page d'aide indisponible\n" -#: src/emc/usr_intf/pncconf/pncconf.py:4054 -#: emc/usr_intf/pncconf/pncconf.py:4054 -#: src/emc/usr_intf/pncconf/pncconf.py:4237 +#: src/emc/usr_intf/pncconf/pncconf.py:4218 msgid "" "You are using a simulated-realtime version of LinuxCNC, so testing / tuning " "of external hardware is unavailable." @@ -10592,9 +11063,7 @@ msgstr "" "Vous utilisez une version de LinuxCNC en temps réel simulé, les tests et " "réglages du matériel externe sont impossibles." -#: src/emc/usr_intf/pncconf/pncconf.py:4059 -#: emc/usr_intf/pncconf/pncconf.py:4059 -#: src/emc/usr_intf/pncconf/pncconf.py:4242 +#: src/emc/usr_intf/pncconf/pncconf.py:4223 #, python-format msgid "" "You are using a realtime version of LinuxCNC but didn't load a realtime " @@ -10610,31 +11079,12 @@ msgstr "" "incapable de charger le noyau RTAI\n" " Vous utilisez actuellement le noyau %(actual)s au lieu du noyau %(needed)s" -#: src/emc/usr_intf/pncconf/pncconf.py:4079 -#: emc/usr_intf/pncconf/pncconf.py:4079 -#: src/emc/usr_intf/pncconf/pncconf.py:4262 -#, python-format -msgid "" -"You are have no hostmot2 firmware downloaded in folder:\n" -"%s\n" -"PNCconf will use sample firmware data\n" -"live testing will not be possible" -msgstr "" -"Aucun micro-logiciel hostmod2 n'est chargé dans le répertoire:\n" -"%s\n" -"PNCconf utilisera un micro-logiciel échantillon,\n" -"les tests en direct ne seront pas possible." - -#: emc/usr_intf/pncconf/pncconf.py:4093 -#: src/emc/usr_intf/pncconf/pncconf.py:4093 +#: src/emc/usr_intf/pncconf/pncconf.py:4256 #, fuzzy msgid "LinuxCNC 'PNCconf' configuration files" -msgstr "" -"Fichiers de configuration 'PNCconf' de LinuxCNC " +msgstr "Fichiers de configuration 'PNCconf' de LinuxCNC " -#: src/emc/usr_intf/pncconf/pncconf.py:4123 -#: emc/usr_intf/pncconf/pncconf.py:4123 -#: src/emc/usr_intf/pncconf/pncconf.py:4306 +#: src/emc/usr_intf/pncconf/pncconf.py:4286 msgid "" "It seems data in this file is from too old of a version of PNCConf to " "continue.\n" @@ -10644,26 +11094,19 @@ msgstr "" "ancienne de PNCConf, impossible de continuer.\n" "." -#: src/emc/usr_intf/pncconf/pncconf.py:4130 -#: src/emc/usr_intf/pncconf/pncconf.py:4228 -#: emc/usr_intf/pncconf/pncconf.py:4130 emc/usr_intf/pncconf/pncconf.py:4228 -#: src/emc/usr_intf/pncconf/pncconf.py:4313 -#: src/emc/usr_intf/pncconf/pncconf.py:4411 +#: src/emc/usr_intf/pncconf/pncconf.py:4293 +#: src/emc/usr_intf/pncconf/pncconf.py:4391 #, python-format msgid "Point and click configuration - %s.pncconf " msgstr "Configuration à la souris - %s.pncconf " -#: src/emc/usr_intf/pncconf/pncconf.py:4250 -#: emc/usr_intf/pncconf/pncconf.py:4250 -#: src/emc/usr_intf/pncconf/pncconf.py:4433 +#: src/emc/usr_intf/pncconf/pncconf.py:4413 msgid "" "You need to designate a parport and/or mesa I/O device before continuing." msgstr "" "Vous devez définir un port parallèle et/ou une carte Mesa avant de continuer." -#: src/emc/usr_intf/pncconf/pncconf.py:4309 -#: emc/usr_intf/pncconf/pncconf.py:4309 -#: src/emc/usr_intf/pncconf/pncconf.py:4492 +#: src/emc/usr_intf/pncconf/pncconf.py:4481 msgid "" "You Have choosen to re-edit the current config, so you can not go to the new/" "modify page.\n" @@ -10674,9 +11117,7 @@ msgstr "" " Quittez puis relancez PNCconf si vous voulez construire une nouvelle " "configuration." -#: src/emc/usr_intf/pncconf/pncconf.py:4313 -#: emc/usr_intf/pncconf/pncconf.py:4313 -#: src/emc/usr_intf/pncconf/pncconf.py:4496 +#: src/emc/usr_intf/pncconf/pncconf.py:4485 msgid "" "If you can not go to the new/modify page your current data will be lost.\n" "Ok to reset data and start a new configuration?" @@ -10686,51 +11127,42 @@ msgstr "" "Êtes-vous sûr de vouloir effacer les données courantes et démarrer une " "nouvelle configuration ?" -#: src/emc/usr_intf/pncconf/pncconf.py:4594 -#: emc/usr_intf/pncconf/pncconf.py:4594 -#: src/emc/usr_intf/pncconf/pncconf.py:4805 +#: src/emc/usr_intf/pncconf/pncconf.py:4811 msgid "USB device Info Search" msgstr "Recherche informations dispositif USB" -#: src/emc/usr_intf/pncconf/pncconf.py:4608 -#: emc/usr_intf/pncconf/pncconf.py:4608 -#: src/emc/usr_intf/pncconf/pncconf.py:4819 +#: src/emc/usr_intf/pncconf/pncconf.py:4825 msgid "USB device page is unavailable\n" msgstr "La page du dispositif USB est indisponible\n" -#: src/emc/usr_intf/pncconf/pncconf.py:4673 -#: emc/usr_intf/pncconf/pncconf.py:4673 -#: src/emc/usr_intf/pncconf/pncconf.py:4884 +#: src/emc/usr_intf/pncconf/pncconf.py:4890 msgid "Pin names are unavailable\n" msgstr "Nom de broche indisponible\n" -#: src/emc/usr_intf/pncconf/pncconf.py:4695 -#: emc/usr_intf/pncconf/pncconf.py:4695 -#: src/emc/usr_intf/pncconf/pncconf.py:4906 +#: src/emc/usr_intf/pncconf/pncconf.py:4912 msgid "Device names are unavailable\n" msgstr "Nom de dispositif indisponible\n" -#: emc/usr_intf/pncconf/pncconf.py:4698 -#: src/emc/usr_intf/pncconf/pncconf.py:4698 +#: src/emc/usr_intf/pncconf/pncconf.py:4915 #, fuzzy msgid "No Pncconf made device rules were found\n" -msgstr "" -"Aucune règle créée par Pncconf n'a été trouvée\n" +msgstr "Aucune règle créée par Pncconf n'a été trouvée\n" -#: src/emc/usr_intf/pncconf/pncconf.py:4822 -#: emc/usr_intf/pncconf/pncconf.py:4822 +#: src/emc/usr_intf/pncconf/pncconf.py:5041 msgid "" "OK to replace existing glade panel ?\n" "It will be renamed and added to 'backups' folder.\n" -" Clicking 'existing custom program' will aviod this warning. " +" Clicking 'existing custom program' will avoid this warning, but if you " +"change related options later -such as spindle feedback- the HAL connection " +"will not update" msgstr "" "Voulez vous remplacer le panneau glade existant ?\n" "Il sera renommé et ajouté au dossier 'backup'.\n" -" Cliquer 'programme utilisateur existant' pour éviter cet avertissement. " +" Cliquer 'programme utilisateur existant' pour éviter cet avertissement, " +"mais si vous changez ces options plus tard -comme le retour de vitesse " +"broche- la connexion ne sera plus à jour" -#: src/emc/usr_intf/pncconf/pncconf.py:4827 -#: emc/usr_intf/pncconf/pncconf.py:4827 -#: src/emc/usr_intf/pncconf/pncconf.py:5041 +#: src/emc/usr_intf/pncconf/pncconf.py:5047 msgid "" "OK to replace existing custom pyvcp panel?\n" "Existing pyvcp-panel.xml will be renamed and added to 'backups' folder\n" @@ -10740,9 +11172,7 @@ msgstr "" "Le fichier pyvcp-panel.xml sera renommé et ajouté au dossier 'backup'. \n" "Cliquez 'programme utilisateur existant' pour éviter cet avertissement." -#: src/emc/usr_intf/pncconf/pncconf.py:5250 -#: emc/usr_intf/pncconf/pncconf.py:5248 -#: src/emc/usr_intf/pncconf/pncconf.py:5486 +#: src/emc/usr_intf/pncconf/pncconf.py:5493 msgid "" "You need to configure the mesa0 page.\n" " Choose the board type, firmware, component amounts and press 'Accept " @@ -10752,9 +11182,7 @@ msgstr "" "Choisir le type de carte, de micro-logiciel, de composants et presser le " "bouton 'Accepter les changements de composants'" -#: src/emc/usr_intf/pncconf/pncconf.py:5254 -#: emc/usr_intf/pncconf/pncconf.py:5252 -#: src/emc/usr_intf/pncconf/pncconf.py:5490 +#: src/emc/usr_intf/pncconf/pncconf.py:5497 msgid "" "The chosen Mesa0 board is different from the current displayed.\n" "please press 'Accept component changes' button'" @@ -10762,9 +11190,7 @@ msgstr "" "La carte Mesa0 choisie est différente de celle affichée.\n" "Presser le bouton 'Accepter les changements de composants'" -#: src/emc/usr_intf/pncconf/pncconf.py:5297 -#: emc/usr_intf/pncconf/pncconf.py:5295 -#: src/emc/usr_intf/pncconf/pncconf.py:5533 +#: src/emc/usr_intf/pncconf/pncconf.py:5540 msgid "" "You need to configure the mesa1 page.\n" " Choose the board type, firmware, component amounts and press 'Accept " @@ -10774,9 +11200,7 @@ msgstr "" "Choisir le type de carte, de micro-logiciel, de composants et presser le " "bouton 'Accepter les changements de composants'" -#: src/emc/usr_intf/pncconf/pncconf.py:5301 -#: emc/usr_intf/pncconf/pncconf.py:5299 -#: src/emc/usr_intf/pncconf/pncconf.py:5537 +#: src/emc/usr_intf/pncconf/pncconf.py:5544 msgid "" "The chosen Mesa1 board is different from the current displayed.\n" "please press 'Accept component changes' button'" @@ -10784,9 +11208,7 @@ msgstr "" "La carte Mesa1 choisie est différente de celle affichée.\n" "Presser le bouton 'Accepter les changements de composants'" -#: src/emc/usr_intf/pncconf/pncconf.py:5315 -#: emc/usr_intf/pncconf/pncconf.py:5313 -#: src/emc/usr_intf/pncconf/pncconf.py:5551 +#: src/emc/usr_intf/pncconf/pncconf.py:5558 msgid "" "Do to technical reasons this test panel can be loaded only once without " "reloading pncconf.You also will not be able to do any other testing untill " @@ -10801,114 +11223,84 @@ msgstr "" "permettre son utilisation, mais parfois il est très utile.\n" "Souhaitez-vous continuer le test ?" -#: src/emc/usr_intf/pncconf/pncconf.py:6699 -#: emc/usr_intf/pncconf/pncconf.py:6697 -#: src/emc/usr_intf/pncconf/pncconf.py:7037 +#: src/emc/usr_intf/pncconf/pncconf.py:7042 msgid "First Parallel Port set for OUTPUT" msgstr "Réglage du premier port parallèle en SORTIES" -#: src/emc/usr_intf/pncconf/pncconf.py:6701 -#: emc/usr_intf/pncconf/pncconf.py:6699 -#: src/emc/usr_intf/pncconf/pncconf.py:7039 +#: src/emc/usr_intf/pncconf/pncconf.py:7044 msgid "First Parallel Port set for INPUT" msgstr "Réglage du premier port parallèle en ENTREES" -#: src/emc/usr_intf/pncconf/pncconf.py:6725 -#: emc/usr_intf/pncconf/pncconf.py:6723 -#: src/emc/usr_intf/pncconf/pncconf.py:7063 +#: src/emc/usr_intf/pncconf/pncconf.py:7068 msgid "Second Parallel Port set for OUTPUT" msgstr "Réglage du deuxième port parallèle en SORTIES" -#: src/emc/usr_intf/pncconf/pncconf.py:6727 -#: emc/usr_intf/pncconf/pncconf.py:6725 -#: src/emc/usr_intf/pncconf/pncconf.py:7065 +#: src/emc/usr_intf/pncconf/pncconf.py:7070 msgid "Second Parallel Port set for INPUT" msgstr "Réglage du deuxième port parallèle en ENTREES" -#: src/emc/usr_intf/pncconf/pncconf.py:6739 -#: emc/usr_intf/pncconf/pncconf.py:6737 -#: src/emc/usr_intf/pncconf/pncconf.py:7077 +#: src/emc/usr_intf/pncconf/pncconf.py:7082 msgid "Third Parallel Port set for OUTPUT" msgstr "Réglage du troisième port parallèle en SORTIES" -#: src/emc/usr_intf/pncconf/pncconf.py:6741 -#: emc/usr_intf/pncconf/pncconf.py:6739 -#: src/emc/usr_intf/pncconf/pncconf.py:7079 +#: src/emc/usr_intf/pncconf/pncconf.py:7084 msgid "Third Parallel Port set for INPUT" msgstr "Réglage du troisième port parallèle en ENTREES" -#: src/emc/usr_intf/pncconf/pncconf.py:6866 -#: emc/usr_intf/pncconf/pncconf.py:6864 -#: src/emc/usr_intf/pncconf/pncconf.py:7205 +#: src/emc/usr_intf/pncconf/pncconf.py:7210 msgid "You can not have both steppers and pwm signals for spindle control\n" msgstr "" "Il est impossible d'avoir simultanément les signaux PWM et de pas à pas pour " "contrôler la broche\n" -#: src/emc/usr_intf/pncconf/pncconf.py:6870 -#: emc/usr_intf/pncconf/pncconf.py:6868 -#: src/emc/usr_intf/pncconf/pncconf.py:7209 +#: src/emc/usr_intf/pncconf/pncconf.py:7214 #, python-format msgid "You forgot to designate a stepper or pwm signal for axis %s\n" msgstr "Vous avez omis de déclarer un signal PWM ou pas à pas pour l'axe %s\n" -#: src/emc/usr_intf/pncconf/pncconf.py:6873 -#: emc/usr_intf/pncconf/pncconf.py:6871 -#: src/emc/usr_intf/pncconf/pncconf.py:7212 +#: src/emc/usr_intf/pncconf/pncconf.py:7217 #, python-format msgid "You forgot to designate an encoder /resolver signal for axis %s servo\n" msgstr "" "Vous avez omis de déclarer un signal de codeur/résolveur pour le servo de " "l'axe %s\n" -#: src/emc/usr_intf/pncconf/pncconf.py:6876 -#: emc/usr_intf/pncconf/pncconf.py:6874 -#: src/emc/usr_intf/pncconf/pncconf.py:7215 +#: src/emc/usr_intf/pncconf/pncconf.py:7220 #, python-format msgid "You forgot to designate a pwm signal or stepper signal for axis %s\n" msgstr "" -"Vous avez omis de déclarer un signal PWM ou un signal pas à pas pour l'axe %" -"s\n" +"Vous avez omis de déclarer un signal PWM ou un signal pas à pas pour l'axe " +"%s\n" -#: src/emc/usr_intf/pncconf/pncconf.py:6879 -#: emc/usr_intf/pncconf/pncconf.py:6877 -#: src/emc/usr_intf/pncconf/pncconf.py:7218 +#: src/emc/usr_intf/pncconf/pncconf.py:7223 #, python-format msgid "You can not have both steppers and pwm signals for axis %s\n" msgstr "" "Vous ne pouvez pas avoir simultanément des signaux PWM et de pas à pas pour " "l'axe %s\n" -#: src/emc/usr_intf/pncconf/pncconf.py:7242 +#: src/emc/usr_intf/pncconf/pncconf.py:7226 #, python-format msgid "" -"If using a tandem axis stepper, you must select a master stepgen for axis %" -"s\n" +"If using a tandem axis stepper, you must select a master stepgen for axis " +"%s\n" msgstr "" "Si un tandem de moteur pas à pas est utilisé, vous devez choisir un stepgen " "maître pour l'axe %s \n" -#: src/emc/usr_intf/pncconf/pncconf.py:7251 -#: emc/usr_intf/pncconf/pncconf.py:6885 -#: src/emc/usr_intf/pncconf/pncconf.py:6887 +#: src/emc/usr_intf/pncconf/pncconf.py:7235 msgid "Touchy require an external cycle start signal\n" msgstr "Touchy requiert un signal de départ cycle externe\n" -#: src/emc/usr_intf/pncconf/pncconf.py:6890 -#: emc/usr_intf/pncconf/pncconf.py:6888 -#: src/emc/usr_intf/pncconf/pncconf.py:7233 +#: src/emc/usr_intf/pncconf/pncconf.py:7238 msgid "Touchy require an external abort signal\n" msgstr "Touchy requiert un signal d'abandon externe\n" -#: src/emc/usr_intf/pncconf/pncconf.py:6893 -#: emc/usr_intf/pncconf/pncconf.py:6891 -#: src/emc/usr_intf/pncconf/pncconf.py:7236 +#: src/emc/usr_intf/pncconf/pncconf.py:7241 msgid "Touchy require an external single-step signal\n" msgstr "Touchy requiert un signal d'avance par pas externe\n" -#: src/emc/usr_intf/pncconf/pncconf.py:6896 -#: emc/usr_intf/pncconf/pncconf.py:6894 -#: src/emc/usr_intf/pncconf/pncconf.py:7239 +#: src/emc/usr_intf/pncconf/pncconf.py:7244 msgid "" "Touchy require an external multi handwheel MPG encoder signal on the mesa " "page\n" @@ -10916,9 +11308,7 @@ msgstr "" "Touchy requiert le signal du codeur de manivelle multi-axes sur la page " "mesa\n" -#: src/emc/usr_intf/pncconf/pncconf.py:6899 -#: emc/usr_intf/pncconf/pncconf.py:6897 -#: src/emc/usr_intf/pncconf/pncconf.py:7242 +#: src/emc/usr_intf/pncconf/pncconf.py:7247 msgid "" "Touchy require 'external mpg jogging' to be selected on the external control " "page\n" @@ -10926,9 +11316,7 @@ msgstr "" "Touchy requiert qu'une 'Manivelle de jog externe' soit sélectionnée sur la " "page des contrôles externes\n" -#: src/emc/usr_intf/pncconf/pncconf.py:6902 -#: emc/usr_intf/pncconf/pncconf.py:6900 -#: src/emc/usr_intf/pncconf/pncconf.py:7245 +#: src/emc/usr_intf/pncconf/pncconf.py:7250 msgid "" "Touchy require the external mpg to be in 'shared mpg' mode on the external " "controls page\n" @@ -10936,9 +11324,7 @@ msgstr "" "Touchy requiert que la manivelle externe soit en mode 'Manivelle partagée' " "sur la page des contrôles externes\n" -#: src/emc/usr_intf/pncconf/pncconf.py:6905 -#: emc/usr_intf/pncconf/pncconf.py:6903 -#: src/emc/usr_intf/pncconf/pncconf.py:7248 +#: src/emc/usr_intf/pncconf/pncconf.py:7253 msgid "" "Touchy require selectable increments to be unchecked on the external " "controls page\n" @@ -10946,9 +11332,7 @@ msgstr "" "Touchy requiert que la case 'Incréments de manivelle sélectionnables' soit " "décochée sur la page des contrôles externes\n" -#: src/emc/usr_intf/pncconf/pncconf.py:6909 -#: emc/usr_intf/pncconf/pncconf.py:6907 -#: src/emc/usr_intf/pncconf/pncconf.py:7252 +#: src/emc/usr_intf/pncconf/pncconf.py:7257 msgid "" "The 7i29 daughter board requires PWM type generators and a PWM base " "frequency of 20 khz\n" @@ -10956,9 +11340,7 @@ msgstr "" "La carte fille 7i29 requiert des générateurs de type PWM et une fréquence " "PWM de base de 20 kHz\n" -#: src/emc/usr_intf/pncconf/pncconf.py:6912 -#: emc/usr_intf/pncconf/pncconf.py:6910 -#: src/emc/usr_intf/pncconf/pncconf.py:7255 +#: src/emc/usr_intf/pncconf/pncconf.py:7260 msgid "" "The 7i30 daughter board requires PWM type generators and a PWM base " "frequency of 20 khz\n" @@ -10966,9 +11348,7 @@ msgstr "" "La carte fille 7i30 requiert des générateurs de type PWM et une fréquence " "PWM de base de 20 kHz\n" -#: src/emc/usr_intf/pncconf/pncconf.py:6915 -#: emc/usr_intf/pncconf/pncconf.py:6913 -#: src/emc/usr_intf/pncconf/pncconf.py:7258 +#: src/emc/usr_intf/pncconf/pncconf.py:7263 msgid "" "The 7i33 daughter board requires PDM type generators and a PDM base " "frequency of 6 Mhz\n" @@ -10976,9 +11356,7 @@ msgstr "" "La carte fille 7i33 requiert des générateurs de type PDM et une fréquence " "PDM de base de 6 MHz\n" -#: src/emc/usr_intf/pncconf/pncconf.py:6918 -#: emc/usr_intf/pncconf/pncconf.py:6916 -#: src/emc/usr_intf/pncconf/pncconf.py:7261 +#: src/emc/usr_intf/pncconf/pncconf.py:7266 msgid "" "The 7i40 daughter board requires PWM type generators and a PWM base " "frequency of 50 khz\n" @@ -10986,9 +11364,7 @@ msgstr "" "La carte fille 7i40 requiert des générateurs de type PWM et une fréquence " "PWM de base de 50 kHz\n" -#: src/emc/usr_intf/pncconf/pncconf.py:6921 -#: emc/usr_intf/pncconf/pncconf.py:6919 -#: src/emc/usr_intf/pncconf/pncconf.py:7264 +#: src/emc/usr_intf/pncconf/pncconf.py:7269 msgid "" "The 7i48 daughter board requires UDM type generators and a PWM base " "frequency of 24 khz\n" @@ -10996,116 +11372,76 @@ msgstr "" "La carte fille 7i48 requiert des générateurs de type UDM et une fréquence " "PWM de base de 24 kHz\n" -#: src/emc/usr_intf/pncconf/pncconf.py:7148 -#: emc/usr_intf/pncconf/pncconf.py:7146 -#: src/emc/usr_intf/pncconf/pncconf.py:7489 +#: src/emc/usr_intf/pncconf/pncconf.py:7494 msgid "Gearbox Reduction Ratio" msgstr "Rapport de réduction des pignons" -#: src/emc/usr_intf/pncconf/pncconf.py:7151 -#: emc/usr_intf/pncconf/pncconf.py:7149 -#: src/emc/usr_intf/pncconf/pncconf.py:7492 +#: src/emc/usr_intf/pncconf/pncconf.py:7497 msgid "Reduction Ratio" msgstr "Rapport de réduction" -#: src/emc/usr_intf/pncconf/pncconf.py:7154 -#: emc/usr_intf/pncconf/pncconf.py:7152 -#: src/emc/usr_intf/pncconf/pncconf.py:7495 +#: src/emc/usr_intf/pncconf/pncconf.py:7500 msgid "Leadscrew Pitch" msgstr "Pas de la vis" -#: src/emc/usr_intf/pncconf/pncconf.py:7157 -#: src/emc/usr_intf/pncconf/pncconf.glade:66327 -#: src/emc/usr_intf/pncconf/pncconf.glade:66622 -#: emc/usr_intf/pncconf/pncconf.py:7155 -#: emc/usr_intf/pncconf/pncconf.glade:66327 -#: emc/usr_intf/pncconf/pncconf.glade:66622 -#: src/emc/usr_intf/pncconf/pncconf.py:7498 -#: src/emc/usr_intf/pncconf/pncconf.glade:73330 -#: src/emc/usr_intf/pncconf/pncconf.glade:73625 +#: src/emc/usr_intf/pncconf/pncconf.py:7503 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Leadscrew TPI" msgstr "Filets de la vis par pouce" -#: src/emc/usr_intf/pncconf/pncconf.py:7161 -#: src/emc/usr_intf/pncconf/pncconf.py:7162 -#: emc/usr_intf/pncconf/pncconf.py:7159 emc/usr_intf/pncconf/pncconf.py:7160 -#: src/emc/usr_intf/pncconf/pncconf.py:7502 -#: src/emc/usr_intf/pncconf/pncconf.py:7503 +#: src/emc/usr_intf/pncconf/pncconf.py:7507 +#: src/emc/usr_intf/pncconf/pncconf.py:7508 msgid "(" msgstr "(" -#: src/emc/usr_intf/pncconf/pncconf.py:7163 -#: src/emc/usr_intf/pncconf/pncconf.py:7173 -#: src/emc/usr_intf/pncconf/pncconf.py:7174 -#: src/emc/usr_intf/pncconf/pncconf.py:7175 -#: emc/usr_intf/pncconf/pncconf.py:7161 emc/usr_intf/pncconf/pncconf.py:7171 -#: emc/usr_intf/pncconf/pncconf.py:7172 emc/usr_intf/pncconf/pncconf.py:7173 -#: src/emc/usr_intf/pncconf/pncconf.py:7504 -#: src/emc/usr_intf/pncconf/pncconf.py:7514 -#: src/emc/usr_intf/pncconf/pncconf.py:7515 -#: src/emc/usr_intf/pncconf/pncconf.py:7516 +#: src/emc/usr_intf/pncconf/pncconf.py:7509 +#: src/emc/usr_intf/pncconf/pncconf.py:7519 +#: src/emc/usr_intf/pncconf/pncconf.py:7520 +#: src/emc/usr_intf/pncconf/pncconf.py:7521 msgid " / min" msgstr " / mn" -#: src/emc/usr_intf/pncconf/pncconf.py:7164 -#: emc/usr_intf/pncconf/pncconf.py:7162 -#: src/emc/usr_intf/pncconf/pncconf.py:7505 +#: src/emc/usr_intf/pncconf/pncconf.py:7510 msgid " / sec²" msgstr " / s²" -#: src/emc/usr_intf/pncconf/pncconf.py:7167 -#: emc/usr_intf/pncconf/pncconf.py:7165 -#: src/emc/usr_intf/pncconf/pncconf.py:7508 +#: src/emc/usr_intf/pncconf/pncconf.py:7513 msgid " / Step" msgstr " / pas" -#: src/emc/usr_intf/pncconf/pncconf.py:7168 -#: emc/usr_intf/pncconf/pncconf.py:7166 -#: src/emc/usr_intf/pncconf/pncconf.py:7509 +#: src/emc/usr_intf/pncconf/pncconf.py:7514 msgid "Steps / " msgstr "Pas / " -#: src/emc/usr_intf/pncconf/pncconf.py:7170 -#: emc/usr_intf/pncconf/pncconf.py:7168 -#: src/emc/usr_intf/pncconf/pncconf.py:7511 +#: src/emc/usr_intf/pncconf/pncconf.py:7516 msgid " / encoder pulse" msgstr " / impulsion codeur" -#: src/emc/usr_intf/pncconf/pncconf.py:7171 -#: emc/usr_intf/pncconf/pncconf.py:7169 -#: src/emc/usr_intf/pncconf/pncconf.py:7512 +#: src/emc/usr_intf/pncconf/pncconf.py:7517 msgid "Encoder pulses / " msgstr "Impulsions de codeur / " -#: src/emc/usr_intf/pncconf/pncconf.py:7541 +#: src/emc/usr_intf/pncconf/pncconf.py:7525 msgid "Resolver Scale:" msgstr "Échelle codeur:" -#: src/emc/usr_intf/pncconf/pncconf.py:7842 -#: emc/usr_intf/pncconf/pncconf.py:7480 -#: src/emc/usr_intf/pncconf/pncconf.py:7482 +#: src/emc/usr_intf/pncconf/pncconf.py:7826 msgid "Axis Scale Calculation" msgstr "Calcul d'échelle d'axe" -#: src/emc/usr_intf/pncconf/pncconf.py:7785 -#: emc/usr_intf/pncconf/pncconf.py:7783 -#: src/emc/usr_intf/pncconf/pncconf.py:8124 +#: src/emc/usr_intf/pncconf/pncconf.py:8133 msgid "You need to designate an E-stop input pin for this ladder program." msgstr "" "Pour ce programme ladder, vous devez indiquer une broche d'entrée pour " "l'arrêt d'urgence." -#: src/emc/usr_intf/pncconf/pncconf.py:7797 -#: emc/usr_intf/pncconf/pncconf.py:7795 -#: src/emc/usr_intf/pncconf/pncconf.py:8136 +#: src/emc/usr_intf/pncconf/pncconf.py:8145 msgid "You need to designate a probe input pin for this ladder program." msgstr "" "Pour ce programme ladder, vous devez indiquer une broche d'entrée pour le " "palpeur." -#: src/emc/usr_intf/pncconf/pncconf.py:7808 -#: emc/usr_intf/pncconf/pncconf.py:7806 -#: src/emc/usr_intf/pncconf/pncconf.py:8147 +#: src/emc/usr_intf/pncconf/pncconf.py:8156 msgid "" "OK to replace existing custom ladder program?\n" "Existing Custom.clp will be renamed custom_backup.clp.\n" @@ -11117,21 +11453,15 @@ msgstr "" "Tout autre fichier custom_backup.clp précédent sera écrasé. Presser " "'programme ladder existant' pour éviter cet avertissement" -#: src/emc/usr_intf/pncconf/pncconf.py:8019 -#: emc/usr_intf/pncconf/pncconf.py:8017 -#: src/emc/usr_intf/pncconf/pncconf.py:8361 +#: src/emc/usr_intf/pncconf/pncconf.py:8374 msgid "Do you wish to continue to edit this configuration." msgstr "Voulez-vous continuer pour éditer cette configuration." -#: src/emc/usr_intf/pncconf/pncconf.py:8058 -#: emc/usr_intf/pncconf/pncconf.py:8056 -#: src/emc/usr_intf/pncconf/pncconf.py:8400 +#: src/emc/usr_intf/pncconf/pncconf.py:8413 msgid "PCI search page is unavailable\n" msgstr "Page de recherche PCI indisponible\n" -#: src/emc/usr_intf/pncconf/pncconf.py:8176 -#: emc/usr_intf/pncconf/pncconf.py:8174 -#: src/emc/usr_intf/pncconf/pncconf.py:8518 +#: src/emc/usr_intf/pncconf/pncconf.py:8532 msgid "" "You specified there is an existing gladefile, But there is not one in the " "machine-named folder.." @@ -11139,91 +11469,59 @@ msgstr "" "Vous avez spécifié un fichier glade comme existant alors que le dossier " "portant le nom de la machine n'en contient pas..." -#: src/emc/usr_intf/pncconf/pncconf.py:8495 -#: emc/usr_intf/pncconf/pncconf.py:8493 -#: src/emc/usr_intf/pncconf/pncconf.py:8838 +#: src/emc/usr_intf/pncconf/pncconf.py:8856 msgid "Servo tuning is not avaiable in PNCconf yet\n" msgstr "Les réglages de servo ne sont pas opérationnels dans PNCconf \n" -#: src/emc/usr_intf/pncconf/pncconf.py:8500 -#: emc/usr_intf/pncconf/pncconf.py:8498 -#: src/emc/usr_intf/pncconf/pncconf.py:8843 +#: src/emc/usr_intf/pncconf/pncconf.py:8861 msgid "degrees" msgstr "degrés" -#: src/emc/usr_intf/pncconf/pncconf.py:8501 -#: emc/usr_intf/pncconf/pncconf.py:8499 -#: src/emc/usr_intf/pncconf/pncconf.py:8844 +#: src/emc/usr_intf/pncconf/pncconf.py:8862 msgid "degrees / minute" msgstr "degrés / minute" -#: src/emc/usr_intf/pncconf/pncconf.py:8502 -#: emc/usr_intf/pncconf/pncconf.py:8500 -#: src/emc/usr_intf/pncconf/pncconf.py:8845 +#: src/emc/usr_intf/pncconf/pncconf.py:8863 msgid "degrees / second²" msgstr "degrés / seconde²" -#: src/emc/usr_intf/pncconf/pncconf.py:8504 -#: emc/usr_intf/pncconf/pncconf.py:8502 -#: src/emc/usr_intf/pncconf/pncconf.py:8847 +#: src/emc/usr_intf/pncconf/pncconf.py:8865 msgid "revolutions" msgstr "tour" -#: src/emc/usr_intf/pncconf/pncconf.py:8505 -#: emc/usr_intf/pncconf/pncconf.py:8503 -#: src/emc/usr_intf/pncconf/pncconf.py:8848 +#: src/emc/usr_intf/pncconf/pncconf.py:8866 msgid "rpm" msgstr "tr/mn" -#: src/emc/usr_intf/pncconf/pncconf.py:8506 -#: emc/usr_intf/pncconf/pncconf.py:8504 -#: src/emc/usr_intf/pncconf/pncconf.py:8849 +#: src/emc/usr_intf/pncconf/pncconf.py:8867 msgid "revs / second²" msgstr "tours / seconde²" -#: src/emc/usr_intf/pncconf/pncconf.py:8509 -#: src/emc/usr_intf/pncconf/pncconf.glade:58295 -#: src/emc/usr_intf/pncconf/pncconf.glade:58479 -#: src/emc/usr_intf/pncconf/pncconf.glade:58576 -#: emc/usr_intf/pncconf/pncconf.py:8507 -#: emc/usr_intf/pncconf/pncconf.glade:58295 -#: emc/usr_intf/pncconf/pncconf.glade:58479 -#: emc/usr_intf/pncconf/pncconf.glade:58576 -#: src/emc/usr_intf/pncconf/pncconf.py:8852 -#: src/emc/usr_intf/pncconf/pncconf.glade:65268 -#: src/emc/usr_intf/pncconf/pncconf.glade:65452 -#: src/emc/usr_intf/pncconf/pncconf.glade:65549 +#: src/emc/usr_intf/pncconf/pncconf.py:8870 +#: src/emc/usr_intf/pncconf/pncconf.glade:65184 +#: src/emc/usr_intf/pncconf/pncconf.glade:65281 +#: src/emc/usr_intf/pncconf/pncconf.glade:65465 msgid "mm / minute" msgstr "mm / minute" -#: src/emc/usr_intf/pncconf/pncconf.py:8510 -#: emc/usr_intf/pncconf/pncconf.py:8508 -#: src/emc/usr_intf/pncconf/pncconf.py:8853 +#: src/emc/usr_intf/pncconf/pncconf.py:8871 msgid "mm / second²" msgstr "mm / seconde²" -#: src/emc/usr_intf/pncconf/pncconf.py:8513 -#: emc/usr_intf/pncconf/pncconf.py:8511 -#: src/emc/usr_intf/pncconf/pncconf.py:8856 +#: src/emc/usr_intf/pncconf/pncconf.py:8874 msgid "inches / minute" msgstr "pouces / minute" -#: src/emc/usr_intf/pncconf/pncconf.py:8514 -#: emc/usr_intf/pncconf/pncconf.py:8512 -#: src/emc/usr_intf/pncconf/pncconf.py:8857 +#: src/emc/usr_intf/pncconf/pncconf.py:8875 msgid "inches / second²" msgstr "pouces / seconde²" -#: src/emc/usr_intf/pncconf/pncconf.py:8646 -#: emc/usr_intf/pncconf/pncconf.py:8644 -#: src/emc/usr_intf/pncconf/pncconf.py:9006 +#: src/emc/usr_intf/pncconf/pncconf.py:9031 #, python-format msgid "%s Axis Tune" msgstr "Calibration de l'axe %s" -#: src/emc/usr_intf/pncconf/pncconf.py:8810 -#: emc/usr_intf/pncconf/pncconf.py:8808 -#: src/emc/usr_intf/pncconf/pncconf.py:9170 +#: src/emc/usr_intf/pncconf/pncconf.py:9195 msgid "" " You must designate a ENCODER / RESOLVER signal and an ANALOG SPINDLE signal " "for this axis test" @@ -11231,9 +11529,7 @@ msgstr "" " Un signal CODEUR / RESOLVEUR et un signal ANALOGIQUE de broche doivent être " "déclarés pour tester cet axe" -#: src/emc/usr_intf/pncconf/pncconf.py:8814 -#: emc/usr_intf/pncconf/pncconf.py:8812 -#: src/emc/usr_intf/pncconf/pncconf.py:9174 +#: src/emc/usr_intf/pncconf/pncconf.py:9199 msgid "" " You must designate a ENCODER / RESOLVER signal and a PWM signal for this " "axis test" @@ -11242,17 +11538,14 @@ msgstr "" "tester cet axe" #: src/emc/usr_intf/pncconf/pncconf.glade:8 -#: emc/usr_intf/pncconf/pncconf.glade:8 msgid "LinuxCNC Point And Click Configuration" msgstr "Configuration graphique de LinuxCNC" #: src/emc/usr_intf/pncconf/pncconf.glade:23 -#: emc/usr_intf/pncconf/pncconf.glade:23 msgid "LinuxCNC Configuration Wizard Beta 1 Version" msgstr "Assistant de configuration pour LinuxCNC Version Beta 1" #: src/emc/usr_intf/pncconf/pncconf.glade:24 -#: emc/usr_intf/pncconf/pncconf.glade:24 msgid "" "\tThis program creates configuration \n" " files for \"Closed Loop Servo\" \n" @@ -11264,64 +11557,69 @@ msgstr "" " \"boucle fermée\" et celles à moteurs pas à pas" #: src/emc/usr_intf/pncconf/pncconf.glade:34 -#: emc/usr_intf/pncconf/pncconf.glade:34 msgid "Create or Edit" msgstr "Créer ou éditer" -#: src/emc/usr_intf/pncconf/pncconf.glade:52 -#: emc/usr_intf/pncconf/pncconf.glade:52 -msgid "Create a new configuration" -msgstr "Créer une nouvelle configuration" - -#: src/emc/usr_intf/pncconf/pncconf.glade:118 -#: emc/usr_intf/pncconf/pncconf.glade:118 -msgid "Create a desktop shortcut (symlink) to configuration files." -msgstr "Créer un lien sur le bureau vers les fichiers de configurations." - -#: src/emc/usr_intf/pncconf/pncconf.glade:135 -#: emc/usr_intf/pncconf/pncconf.glade:135 +#: src/emc/usr_intf/pncconf/pncconf.glade:66 msgid "Create a desktop launcher to start LinuxCNC with this configuration." msgstr "" "Créer un lanceur sur le bureau pour démarrer LinuxCNC avec cette " "configuration." +#: src/emc/usr_intf/pncconf/pncconf.glade:83 +msgid "Create a desktop shortcut (symlink) to configuration files." +msgstr "Créer un lien sur le bureau vers les fichiers de configurations." + +#: src/emc/usr_intf/pncconf/pncconf.glade:148 +msgid "Create a new configuration" +msgstr "Créer une nouvelle configuration" + +#: src/emc/usr_intf/pncconf/pncconf.glade:175 +msgid "Basic machine information" +msgstr "Informations machine" + #: src/emc/usr_intf/pncconf/pncconf.glade:214 -#: emc/usr_intf/pncconf/pncconf.glade:214 msgid "Machine Name:" msgstr "Nom de la machine:" -#: src/emc/usr_intf/pncconf/pncconf.glade:281 -#: emc/usr_intf/pncconf/pncconf.glade:281 #: src/emc/usr_intf/pncconf/pncconf.glade:280 msgid "Axis configuration:" msgstr "Configuration des axes:" -#: src/emc/usr_intf/pncconf/pncconf.glade:316 -#: emc/usr_intf/pncconf/pncconf.glade:316 +#: src/emc/usr_intf/pncconf/pncconf.glade:295 +msgid "" +"XYZ\n" +"XYZA\n" +"XZ (Lathe)" +msgstr "" +"XYZ\n" +"XYZA\n" +"XZ (tour)" + #: src/emc/usr_intf/pncconf/pncconf.glade:322 msgid "Machine units:" msgstr "Unité machine" -#: src/emc/usr_intf/pncconf/pncconf.glade:355 -#: emc/usr_intf/pncconf/pncconf.glade:355 +#: src/emc/usr_intf/pncconf/pncconf.glade:337 +msgid "" +"Inch\n" +"Millimeter" +msgstr "" +"pouce\n" +"millimètre" + #: src/emc/usr_intf/pncconf/pncconf.glade:363 msgid "Machine Basics" msgstr "Éléments de base" -#: src/emc/usr_intf/pncconf/pncconf.glade:405 -#: emc/usr_intf/pncconf/pncconf.glade:405 -#: src/emc/usr_intf/pncconf/pncconf.glade:413 -msgid "Recommend servo period: 1000000" -msgstr "Période servo recommandée: 1000000" - -#: src/emc/usr_intf/pncconf/pncconf.glade:431 -#: emc/usr_intf/pncconf/pncconf.glade:431 -#: src/emc/usr_intf/pncconf/pncconf.glade:439 +#: src/emc/usr_intf/pncconf/pncconf.glade:416 msgid "Actual Servo Period: " msgstr "Période servo actuelle: " -#: src/emc/usr_intf/pncconf/pncconf.glade:486 -#: emc/usr_intf/pncconf/pncconf.glade:486 +#: src/emc/usr_intf/pncconf/pncconf.glade:475 +msgid "Recommend servo period: 1000000" +msgstr "Période servo recommandée: 1000000" + #: src/emc/usr_intf/pncconf/pncconf.glade:494 msgid "" " Test Base\n" @@ -11330,46 +11628,31 @@ msgstr "" " Test de\n" " latence " -#: src/emc/usr_intf/pncconf/pncconf.glade:511 -#: emc/usr_intf/pncconf/pncconf.glade:511 #: src/emc/usr_intf/pncconf/pncconf.glade:519 msgid "Computer Response Time" msgstr "Temps de réponse de l'ordinateur" -#: src/emc/usr_intf/pncconf/pncconf.glade:553 -#: emc/usr_intf/pncconf/pncconf.glade:553 #: src/emc/usr_intf/pncconf/pncconf.glade:561 msgid "Mesa0 PCI / Parport Card:" msgstr "Mesa0 PCI / Parport Card:" -#: src/emc/usr_intf/pncconf/pncconf.glade:563 -#: emc/usr_intf/pncconf/pncconf.glade:563 #: src/emc/usr_intf/pncconf/pncconf.glade:571 msgid "Mesa1 PCI / Parport Card:" msgstr "Mesa1 PCI / Parport Card:" -#: src/emc/usr_intf/pncconf/pncconf.glade:576 -#: emc/usr_intf/pncconf/pncconf.glade:576 #: src/emc/usr_intf/pncconf/pncconf.glade:584 msgid "First Parport Address:" msgstr "Adresse du premier port parallèle:" -#: src/emc/usr_intf/pncconf/pncconf.glade:589 -#: emc/usr_intf/pncconf/pncconf.glade:589 #: src/emc/usr_intf/pncconf/pncconf.glade:597 msgid "Second Parport Address:" msgstr "Adresse du second port parallèle:" -#: src/emc/usr_intf/pncconf/pncconf.glade:604 -#: emc/usr_intf/pncconf/pncconf.glade:604 #: src/emc/usr_intf/pncconf/pncconf.glade:612 msgid "Third Parport Address:" msgstr "Adresse du troisième port parallèle:" -#: src/emc/usr_intf/pncconf/pncconf.glade:627 #: src/emc/usr_intf/pncconf/pncconf.glade:635 -#: emc/usr_intf/pncconf/pncconf.glade:627 -#: emc/usr_intf/pncconf/pncconf.glade:635 #: src/emc/usr_intf/pncconf/pncconf.glade:643 msgid "" "5i20\n" @@ -11380,14 +11663,6 @@ msgstr "" "5i23\n" "5i22" -#: src/emc/usr_intf/pncconf/pncconf.glade:708 -#: src/emc/usr_intf/pncconf/pncconf.glade:720 -#: src/emc/usr_intf/pncconf/pncconf.glade:733 -#: emc/usr_intf/stepconf/stepconf.glade:575 -#: emc/usr_intf/stepconf/stepconf.glade:591 -#: emc/usr_intf/pncconf/pncconf.glade:708 -#: emc/usr_intf/pncconf/pncconf.glade:720 -#: emc/usr_intf/pncconf/pncconf.glade:733 #: src/emc/usr_intf/pncconf/pncconf.glade:716 #: src/emc/usr_intf/pncconf/pncconf.glade:728 #: src/emc/usr_intf/pncconf/pncconf.glade:741 @@ -11398,8 +11673,6 @@ msgstr "" "Entrée\n" "Sortie" -#: src/emc/usr_intf/pncconf/pncconf.glade:796 -#: emc/usr_intf/pncconf/pncconf.glade:796 #: src/emc/usr_intf/pncconf/pncconf.glade:804 msgid "" "Add-on PCI\n" @@ -11411,272 +11684,155 @@ msgstr "" " recherche d'adresses\n" " de ports parallèles PCI" -#: src/emc/usr_intf/pncconf/pncconf.glade:821 -#: emc/usr_intf/pncconf/pncconf.glade:821 #: src/emc/usr_intf/pncconf/pncconf.glade:829 msgid "I/O Control Ports/ Boards" msgstr "Ports et cartes d'entrées/sorties" -#: src/emc/usr_intf/pncconf/pncconf.glade:870 -#: emc/usr_intf/pncconf/pncconf.glade:870 #: src/emc/usr_intf/pncconf/pncconf.glade:878 msgid "Axis" msgstr "Axis" -#: src/emc/usr_intf/pncconf/pncconf.glade:885 -#: emc/usr_intf/pncconf/pncconf.glade:885 #: src/emc/usr_intf/pncconf/pncconf.glade:893 msgid "TKLinuxCNC" msgstr "TKLinuxCNC" -#: src/emc/usr_intf/pncconf/pncconf.glade:899 -#: emc/usr_intf/pncconf/pncconf.glade:899 #: src/emc/usr_intf/pncconf/pncconf.glade:907 msgid "Mini" msgstr "Mini" -#: src/emc/usr_intf/pncconf/pncconf.glade:913 -#: src/emc/usr_intf/pncconf/pncconf.glade:6648 -#: emc/usr_intf/pncconf/pncconf.glade:913 -#: emc/usr_intf/pncconf/pncconf.glade:6648 #: src/emc/usr_intf/pncconf/pncconf.glade:921 #: src/emc/usr_intf/pncconf/pncconf.glade:6656 msgid "Touchy" msgstr "Touchy" -#: src/emc/usr_intf/pncconf/pncconf.glade:930 -#: emc/usr_intf/pncconf/pncconf.glade:930 #: src/emc/usr_intf/pncconf/pncconf.glade:938 msgid "GUI frontend list" msgstr "Liste des interfaces graphiques" -#: src/emc/usr_intf/pncconf/pncconf.glade:965 -#: emc/usr_intf/pncconf/pncconf.glade:965 #: src/emc/usr_intf/pncconf/pncconf.glade:973 msgid "External Controls" msgstr "Contrôles externes" -#: src/emc/usr_intf/pncconf/pncconf.glade:1006 -#: emc/usr_intf/pncconf/pncconf.glade:1006 #: src/emc/usr_intf/pncconf/pncconf.glade:1014 msgid "Add device rule" msgstr "Ajouter règle dispositif" -#: src/emc/usr_intf/pncconf/pncconf.glade:1019 -#: emc/usr_intf/pncconf/pncconf.glade:1019 #: src/emc/usr_intf/pncconf/pncconf.glade:1027 msgid "Test device" msgstr "Test dispositif" -#: src/emc/usr_intf/pncconf/pncconf.glade:1033 -#: emc/usr_intf/pncconf/pncconf.glade:1033 #: src/emc/usr_intf/pncconf/pncconf.glade:1041 msgid "Search for device rules" msgstr "Rechercher règles pour le dispositif" -#: src/emc/usr_intf/pncconf/pncconf.glade:1054 -#: emc/usr_intf/pncconf/pncconf.glade:1054 #: src/emc/usr_intf/pncconf/pncconf.glade:1062 msgid "Device Name:" msgstr "Nom du dispositif:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1117 -#: src/emc/usr_intf/pncconf/pncconf.glade:1255 -#: emc/usr_intf/pncconf/pncconf.glade:1117 -#: emc/usr_intf/pncconf/pncconf.glade:1255 #: src/emc/usr_intf/pncconf/pncconf.glade:1125 -#: src/emc/usr_intf/pncconf/pncconf.glade:1263 -msgid "Jog Speed select A" -msgstr "Sélecteur A de vitesse de jog" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1195 -#: emc/usr_intf/pncconf/pncconf.glade:1195 -#: src/emc/usr_intf/pncconf/pncconf.glade:1203 -msgid "Z -" -msgstr "Z -" +msgid "A +" +msgstr "A +" -#: src/emc/usr_intf/pncconf/pncconf.glade:1207 -#: emc/usr_intf/pncconf/pncconf.glade:1207 -#: src/emc/usr_intf/pncconf/pncconf.glade:1215 -msgid "Y -" -msgstr "Y -" +#: src/emc/usr_intf/pncconf/pncconf.glade:1135 +msgid "A -" +msgstr "A -" -#: src/emc/usr_intf/pncconf/pncconf.glade:1219 -#: emc/usr_intf/pncconf/pncconf.glade:1219 -#: src/emc/usr_intf/pncconf/pncconf.glade:1227 -msgid "X -" -msgstr "X -" +#: src/emc/usr_intf/pncconf/pncconf.glade:1169 +#: src/emc/usr_intf/pncconf/pncconf.glade:1181 +#: src/emc/usr_intf/pncconf/pncconf.glade:1191 +#: src/emc/usr_intf/pncconf/pncconf.glade:1246 +#: src/emc/usr_intf/pncconf/pncconf.glade:1759 +msgid "mm/min " +msgstr "mm / mn " -#: src/emc/usr_intf/pncconf/pncconf.glade:1229 -#: emc/usr_intf/pncconf/pncconf.glade:1229 -#: src/emc/usr_intf/pncconf/pncconf.glade:1237 -msgid "Z +" -msgstr "Z +" +#: src/emc/usr_intf/pncconf/pncconf.glade:1269 +msgid " ab)" +msgstr "ab)" -#: src/emc/usr_intf/pncconf/pncconf.glade:1239 -#: emc/usr_intf/pncconf/pncconf.glade:1239 -#: src/emc/usr_intf/pncconf/pncconf.glade:1247 -msgid "Y +" -msgstr "Y +" +#: src/emc/usr_intf/pncconf/pncconf.glade:1282 +#: src/emc/usr_intf/pncconf/pncconf.glade:2493 +#: src/emc/usr_intf/pncconf/pncconf.glade:2927 +#: src/emc/usr_intf/pncconf/pncconf.glade:3808 +#: src/emc/usr_intf/pncconf/pncconf.glade:4689 +msgid " b)" +msgstr "b)" -#: src/emc/usr_intf/pncconf/pncconf.glade:1249 -#: emc/usr_intf/pncconf/pncconf.glade:1249 -#: src/emc/usr_intf/pncconf/pncconf.glade:1257 -msgid "X +" -msgstr "X +" +#: src/emc/usr_intf/pncconf/pncconf.glade:1293 +#: src/emc/usr_intf/pncconf/pncconf.glade:2482 +#: src/emc/usr_intf/pncconf/pncconf.glade:2916 +#: src/emc/usr_intf/pncconf/pncconf.glade:3797 +#: src/emc/usr_intf/pncconf/pncconf.glade:4678 +msgid " a)" +msgstr "a)" -#: src/emc/usr_intf/pncconf/pncconf.glade:1289 -#: src/emc/usr_intf/pncconf/pncconf.glade:2208 -#: src/emc/usr_intf/pncconf/pncconf.glade:3496 -#: src/emc/usr_intf/pncconf/pncconf.glade:4377 -#: src/emc/usr_intf/pncconf/pncconf.glade:5258 -#: emc/usr_intf/pncconf/pncconf.glade:1289 -#: emc/usr_intf/pncconf/pncconf.glade:2208 -#: emc/usr_intf/pncconf/pncconf.glade:3496 -#: emc/usr_intf/pncconf/pncconf.glade:4377 -#: emc/usr_intf/pncconf/pncconf.glade:5258 -#: src/emc/usr_intf/pncconf/pncconf.glade:1297 -#: src/emc/usr_intf/pncconf/pncconf.glade:2216 -#: src/emc/usr_intf/pncconf/pncconf.glade:3504 -#: src/emc/usr_intf/pncconf/pncconf.glade:4385 -#: src/emc/usr_intf/pncconf/pncconf.glade:5266 +#: src/emc/usr_intf/pncconf/pncconf.glade:1305 +#: src/emc/usr_intf/pncconf/pncconf.glade:2385 +#: src/emc/usr_intf/pncconf/pncconf.glade:2867 +#: src/emc/usr_intf/pncconf/pncconf.glade:3748 +#: src/emc/usr_intf/pncconf/pncconf.glade:4629 msgid "default" msgstr "défaut" -#: src/emc/usr_intf/pncconf/pncconf.glade:1299 -#: src/emc/usr_intf/pncconf/pncconf.glade:2107 -#: src/emc/usr_intf/pncconf/pncconf.glade:3443 -#: src/emc/usr_intf/pncconf/pncconf.glade:4324 -#: src/emc/usr_intf/pncconf/pncconf.glade:5205 -#: emc/usr_intf/pncconf/pncconf.glade:1299 -#: emc/usr_intf/pncconf/pncconf.glade:2107 -#: emc/usr_intf/pncconf/pncconf.glade:3443 -#: emc/usr_intf/pncconf/pncconf.glade:4324 -#: emc/usr_intf/pncconf/pncconf.glade:5205 -#: src/emc/usr_intf/pncconf/pncconf.glade:1307 -#: src/emc/usr_intf/pncconf/pncconf.glade:2115 -#: src/emc/usr_intf/pncconf/pncconf.glade:3451 -#: src/emc/usr_intf/pncconf/pncconf.glade:4332 -#: src/emc/usr_intf/pncconf/pncconf.glade:5213 -msgid " a)" -msgstr "a)" +#: src/emc/usr_intf/pncconf/pncconf.glade:1336 +#: src/emc/usr_intf/pncconf/pncconf.glade:1476 +msgid "Jog Speed select A" +msgstr "Sélecteur A de vitesse de jog" -#: src/emc/usr_intf/pncconf/pncconf.glade:1311 -#: src/emc/usr_intf/pncconf/pncconf.glade:2096 -#: src/emc/usr_intf/pncconf/pncconf.glade:3432 -#: src/emc/usr_intf/pncconf/pncconf.glade:4313 -#: src/emc/usr_intf/pncconf/pncconf.glade:5194 -#: emc/usr_intf/pncconf/pncconf.glade:1311 -#: emc/usr_intf/pncconf/pncconf.glade:2096 -#: emc/usr_intf/pncconf/pncconf.glade:3432 -#: emc/usr_intf/pncconf/pncconf.glade:4313 -#: emc/usr_intf/pncconf/pncconf.glade:5194 -#: src/emc/usr_intf/pncconf/pncconf.glade:1319 -#: src/emc/usr_intf/pncconf/pncconf.glade:2104 -#: src/emc/usr_intf/pncconf/pncconf.glade:3440 -#: src/emc/usr_intf/pncconf/pncconf.glade:4321 -#: src/emc/usr_intf/pncconf/pncconf.glade:5202 -msgid " b)" -msgstr "b)" +#: src/emc/usr_intf/pncconf/pncconf.glade:1348 +msgid "X +" +msgstr "X +" -#: src/emc/usr_intf/pncconf/pncconf.glade:1322 -#: emc/usr_intf/pncconf/pncconf.glade:1322 -#: src/emc/usr_intf/pncconf/pncconf.glade:1330 -msgid " ab)" -msgstr "ab)" +#: src/emc/usr_intf/pncconf/pncconf.glade:1354 +msgid "Y +" +msgstr "Y +" -#: src/emc/usr_intf/pncconf/pncconf.glade:1348 -#: src/emc/usr_intf/pncconf/pncconf.glade:1401 -#: src/emc/usr_intf/pncconf/pncconf.glade:1413 -#: src/emc/usr_intf/pncconf/pncconf.glade:1423 -#: src/emc/usr_intf/pncconf/pncconf.glade:1751 -#: emc/usr_intf/pncconf/pncconf.glade:1348 -#: emc/usr_intf/pncconf/pncconf.glade:1401 -#: emc/usr_intf/pncconf/pncconf.glade:1413 -#: emc/usr_intf/pncconf/pncconf.glade:1423 -#: emc/usr_intf/pncconf/pncconf.glade:1751 -#: src/emc/usr_intf/pncconf/pncconf.glade:1356 -#: src/emc/usr_intf/pncconf/pncconf.glade:1409 -#: src/emc/usr_intf/pncconf/pncconf.glade:1421 -#: src/emc/usr_intf/pncconf/pncconf.glade:1431 -#: src/emc/usr_intf/pncconf/pncconf.glade:1759 -msgid "mm/min " -msgstr "mm / mn " +#: src/emc/usr_intf/pncconf/pncconf.glade:1364 +msgid "Z +" +msgstr "Z +" -#: src/emc/usr_intf/pncconf/pncconf.glade:1456 -#: emc/usr_intf/pncconf/pncconf.glade:1456 -#: src/emc/usr_intf/pncconf/pncconf.glade:1464 -msgid "A -" -msgstr "A -" +#: src/emc/usr_intf/pncconf/pncconf.glade:1374 +msgid "X -" +msgstr "X -" -#: src/emc/usr_intf/pncconf/pncconf.glade:1468 -#: emc/usr_intf/pncconf/pncconf.glade:1468 -#: src/emc/usr_intf/pncconf/pncconf.glade:1476 -msgid "A +" -msgstr "A +" +#: src/emc/usr_intf/pncconf/pncconf.glade:1384 +msgid "Y -" +msgstr "Y -" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1396 +msgid "Z -" +msgstr "Z -" -#: src/emc/usr_intf/pncconf/pncconf.glade:1492 -#: emc/usr_intf/pncconf/pncconf.glade:1492 #: src/emc/usr_intf/pncconf/pncconf.glade:1500 msgid "Digital Control" msgstr "Contrôle numérique" -#: src/emc/usr_intf/pncconf/pncconf.glade:1539 -#: emc/usr_intf/pncconf/pncconf.glade:1539 -#: src/emc/usr_intf/pncconf/pncconf.glade:1547 -msgid "X " -msgstr "X " - -#: src/emc/usr_intf/pncconf/pncconf.glade:1545 -#: src/emc/usr_intf/pncconf/pncconf.glade:5901 -#: src/emc/usr_intf/pncconf/pncconf.glade:6531 -#: src/emc/usr_intf/pncconf/pncconf.glade:6910 -#: src/emc/usr_intf/pncconf/pncconf.glade:7257 -#: emc/usr_intf/pncconf/pncconf.glade:1545 -#: emc/usr_intf/pncconf/pncconf.glade:5901 -#: emc/usr_intf/pncconf/pncconf.glade:6531 -#: emc/usr_intf/pncconf/pncconf.glade:6910 -#: emc/usr_intf/pncconf/pncconf.glade:7257 -#: src/emc/usr_intf/pncconf/pncconf.glade:1553 -#: src/emc/usr_intf/pncconf/pncconf.glade:5909 -#: src/emc/usr_intf/pncconf/pncconf.glade:6539 -#: src/emc/usr_intf/pncconf/pncconf.glade:6918 -#: src/emc/usr_intf/pncconf/pncconf.glade:7265 -msgid "Y" -msgstr "Y" +#: src/emc/usr_intf/pncconf/pncconf.glade:1593 +#: src/emc/usr_intf/gscreen/gscreen.glade:502 +msgid "A" +msgstr "A" -#: src/emc/usr_intf/pncconf/pncconf.glade:1555 -#: emc/usr_intf/pncconf/pncconf.glade:1555 -#: src/emc/usr_intf/pncconf/pncconf.glade:1563 +#: src/emc/usr_intf/pncconf/pncconf.glade:1603 +#: src/emc/usr_intf/gscreen/gscreen.glade:374 msgid "Z" msgstr "Z" -#: src/emc/usr_intf/pncconf/pncconf.glade:1565 -#: emc/usr_intf/pncconf/pncconf.glade:1565 -#: src/emc/usr_intf/pncconf/pncconf.glade:1573 -msgid "A" -msgstr "A" +#: src/emc/usr_intf/pncconf/pncconf.glade:1613 +#: src/emc/usr_intf/pncconf/pncconf.glade:6134 +#: src/emc/usr_intf/pncconf/pncconf.glade:6458 +#: src/emc/usr_intf/pncconf/pncconf.glade:6860 +#: src/emc/usr_intf/pncconf/pncconf.glade:7235 +#: src/emc/usr_intf/gscreen/gscreen.glade:244 +msgid "Y" +msgstr "Y" #: src/emc/usr_intf/pncconf/pncconf.glade:1623 -#: emc/usr_intf/pncconf/pncconf.glade:1623 +msgid "X " +msgstr "X " + #: src/emc/usr_intf/pncconf/pncconf.glade:1631 msgid "Analog Control" msgstr "Contrôle analogique" -#: src/emc/usr_intf/pncconf/pncconf.glade:1649 -#: src/emc/usr_intf/pncconf/pncconf.glade:1780 -#: src/emc/usr_intf/pncconf/pncconf.glade:2690 -#: src/emc/usr_intf/pncconf/pncconf.glade:3571 -#: src/emc/usr_intf/pncconf/pncconf.glade:4452 -#: src/emc/usr_intf/pncconf/pncconf.glade:5333 -#: src/emc/usr_intf/pncconf/pncconf.glade:57371 -#: emc/usr_intf/pncconf/pncconf.glade:1649 -#: emc/usr_intf/pncconf/pncconf.glade:1780 -#: emc/usr_intf/pncconf/pncconf.glade:2690 -#: emc/usr_intf/pncconf/pncconf.glade:3571 -#: emc/usr_intf/pncconf/pncconf.glade:4452 -#: emc/usr_intf/pncconf/pncconf.glade:5333 -#: emc/usr_intf/pncconf/pncconf.glade:57371 #: src/emc/usr_intf/pncconf/pncconf.glade:1657 #: src/emc/usr_intf/pncconf/pncconf.glade:1788 #: src/emc/usr_intf/pncconf/pncconf.glade:2698 @@ -11687,982 +11843,509 @@ msgstr "Contrôle analogique" msgid "Details" msgstr "Détails" -#: src/emc/usr_intf/pncconf/pncconf.glade:1667 -#: emc/usr_intf/pncconf/pncconf.glade:1667 #: src/emc/usr_intf/pncconf/pncconf.glade:1675 msgid "USB Joystick Jogging " msgstr "Joystick USB pour le jog" -#: src/emc/usr_intf/pncconf/pncconf.glade:1711 -#: emc/usr_intf/pncconf/pncconf.glade:1711 #: src/emc/usr_intf/pncconf/pncconf.glade:1719 msgid "shared buttons for all axis" msgstr "Partager les boutons pour tous les axes" -#: src/emc/usr_intf/pncconf/pncconf.glade:1724 -#: emc/usr_intf/pncconf/pncconf.glade:1724 #: src/emc/usr_intf/pncconf/pncconf.glade:1732 msgid "buttons for each axis" msgstr "Boutons pour chacun des axes" -#: src/emc/usr_intf/pncconf/pncconf.glade:1798 -#: emc/usr_intf/pncconf/pncconf.glade:1798 #: src/emc/usr_intf/pncconf/pncconf.glade:1806 msgid "External Button Jogging" msgstr "Boutons de jog externes" -#: src/emc/usr_intf/pncconf/pncconf.glade:1839 -#: emc/usr_intf/pncconf/pncconf.glade:1839 #: src/emc/usr_intf/pncconf/pncconf.glade:1847 msgid "Shared MPG / selectable axis" msgstr "Manivelle partagée / axes sélectionnables" -#: src/emc/usr_intf/pncconf/pncconf.glade:1852 -#: emc/usr_intf/pncconf/pncconf.glade:1852 #: src/emc/usr_intf/pncconf/pncconf.glade:1860 msgid "Mpg per axis" msgstr "Une manivelle par axe" -#: src/emc/usr_intf/pncconf/pncconf.glade:1867 -#: emc/usr_intf/pncconf/pncconf.glade:1867 #: src/emc/usr_intf/pncconf/pncconf.glade:1875 msgid "selectable MPG increments" msgstr "Incréments de manivelle sélectionnables" -#: src/emc/usr_intf/pncconf/pncconf.glade:1932 -#: src/emc/usr_intf/pncconf/pncconf.glade:2907 -#: src/emc/usr_intf/pncconf/pncconf.glade:3788 -#: src/emc/usr_intf/pncconf/pncconf.glade:4669 -#: emc/usr_intf/pncconf/pncconf.glade:1932 -#: emc/usr_intf/pncconf/pncconf.glade:2907 -#: emc/usr_intf/pncconf/pncconf.glade:3788 -#: emc/usr_intf/pncconf/pncconf.glade:4669 #: src/emc/usr_intf/pncconf/pncconf.glade:1940 -#: src/emc/usr_intf/pncconf/pncconf.glade:2915 -#: src/emc/usr_intf/pncconf/pncconf.glade:3796 -#: src/emc/usr_intf/pncconf/pncconf.glade:4677 -msgid "Mux options" -msgstr "Options de multiplexage" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1980 -#: src/emc/usr_intf/pncconf/pncconf.glade:2868 -#: src/emc/usr_intf/pncconf/pncconf.glade:3763 -#: src/emc/usr_intf/pncconf/pncconf.glade:4644 -#: emc/usr_intf/pncconf/pncconf.glade:1980 -#: emc/usr_intf/pncconf/pncconf.glade:2868 -#: emc/usr_intf/pncconf/pncconf.glade:3763 -#: emc/usr_intf/pncconf/pncconf.glade:4644 -#: src/emc/usr_intf/pncconf/pncconf.glade:1988 -#: src/emc/usr_intf/pncconf/pncconf.glade:2876 -#: src/emc/usr_intf/pncconf/pncconf.glade:3771 -#: src/emc/usr_intf/pncconf/pncconf.glade:4652 -msgid "use debounce" -msgstr "utiliser anti-rebonds" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1995 -#: emc/usr_intf/pncconf/pncconf.glade:1995 -#: src/emc/usr_intf/pncconf/pncconf.glade:2003 -msgid "use gray code" -msgstr "utiliser le code Gray" +#: src/emc/usr_intf/pncconf/pncconf.glade:3379 +#: src/emc/usr_intf/pncconf/pncconf.glade:4260 +#: src/emc/usr_intf/pncconf/pncconf.glade:5141 +msgid " d)" +msgstr "d)" -#: src/emc/usr_intf/pncconf/pncconf.glade:2010 -#: emc/usr_intf/pncconf/pncconf.glade:2010 -#: src/emc/usr_intf/pncconf/pncconf.glade:2018 -msgid "ignore all inputs false" -msgstr "ignorer les entrées false" +#: src/emc/usr_intf/pncconf/pncconf.glade:1952 +#: src/emc/usr_intf/pncconf/pncconf.glade:3340 +#: src/emc/usr_intf/pncconf/pncconf.glade:4221 +#: src/emc/usr_intf/pncconf/pncconf.glade:5102 +msgid " abcd)" +msgstr " abcd)" -#: src/emc/usr_intf/pncconf/pncconf.glade:2035 -#: src/emc/usr_intf/pncconf/pncconf.glade:2048 -#: src/emc/usr_intf/pncconf/pncconf.glade:2061 -#: src/emc/usr_intf/pncconf/pncconf.glade:2407 -#: src/emc/usr_intf/pncconf/pncconf.glade:2420 -#: src/emc/usr_intf/pncconf/pncconf.glade:2433 -#: src/emc/usr_intf/pncconf/pncconf.glade:2446 -#: src/emc/usr_intf/pncconf/pncconf.glade:2457 -#: src/emc/usr_intf/pncconf/pncconf.glade:2470 -#: src/emc/usr_intf/pncconf/pncconf.glade:2483 -#: src/emc/usr_intf/pncconf/pncconf.glade:2496 -#: src/emc/usr_intf/pncconf/pncconf.glade:2509 -#: src/emc/usr_intf/pncconf/pncconf.glade:2522 -#: src/emc/usr_intf/pncconf/pncconf.glade:2535 -#: src/emc/usr_intf/pncconf/pncconf.glade:8343 -#: src/emc/usr_intf/pncconf/pncconf.glade:8379 -#: src/emc/usr_intf/pncconf/pncconf.glade:56542 -#: src/emc/usr_intf/pncconf/pncconf.glade:61266 -#: src/emc/usr_intf/pncconf/pncconf.glade:61278 -#: src/emc/usr_intf/pncconf/pncconf.glade:61290 -#: src/emc/usr_intf/pncconf/pncconf.glade:61302 -#: src/emc/usr_intf/pncconf/pncconf.glade:62475 -#: src/emc/usr_intf/pncconf/pncconf.glade:62487 -#: src/emc/usr_intf/pncconf/pncconf.glade:62499 -#: src/emc/usr_intf/pncconf/pncconf.glade:62511 -#: src/emc/usr_intf/pncconf/pncconf.glade:63452 -#: src/emc/usr_intf/pncconf/pncconf.glade:63464 -#: src/emc/usr_intf/pncconf/pncconf.glade:63476 -#: src/emc/usr_intf/pncconf/pncconf.glade:63488 -#: src/emc/usr_intf/pncconf/pncconf.glade:64661 -#: src/emc/usr_intf/pncconf/pncconf.glade:64673 -#: src/emc/usr_intf/pncconf/pncconf.glade:64685 -#: src/emc/usr_intf/pncconf/pncconf.glade:64697 -#: src/emc/usr_intf/pncconf/pncconf.glade:65608 -#: src/emc/usr_intf/pncconf/pncconf.glade:65620 -#: src/emc/usr_intf/pncconf/pncconf.glade:65632 -#: src/emc/usr_intf/pncconf/pncconf.glade:65644 -#: emc/usr_intf/pncconf/pncconf.glade:2035 -#: emc/usr_intf/pncconf/pncconf.glade:2048 -#: emc/usr_intf/pncconf/pncconf.glade:2061 -#: emc/usr_intf/pncconf/pncconf.glade:2407 -#: emc/usr_intf/pncconf/pncconf.glade:2420 -#: emc/usr_intf/pncconf/pncconf.glade:2433 -#: emc/usr_intf/pncconf/pncconf.glade:2446 -#: emc/usr_intf/pncconf/pncconf.glade:2457 -#: emc/usr_intf/pncconf/pncconf.glade:2470 -#: emc/usr_intf/pncconf/pncconf.glade:2483 -#: emc/usr_intf/pncconf/pncconf.glade:2496 -#: emc/usr_intf/pncconf/pncconf.glade:2509 -#: emc/usr_intf/pncconf/pncconf.glade:2522 -#: emc/usr_intf/pncconf/pncconf.glade:2535 -#: emc/usr_intf/pncconf/pncconf.glade:8343 -#: emc/usr_intf/pncconf/pncconf.glade:8379 -#: emc/usr_intf/pncconf/pncconf.glade:56542 -#: emc/usr_intf/pncconf/pncconf.glade:61266 -#: emc/usr_intf/pncconf/pncconf.glade:61278 -#: emc/usr_intf/pncconf/pncconf.glade:61290 -#: emc/usr_intf/pncconf/pncconf.glade:61302 -#: emc/usr_intf/pncconf/pncconf.glade:62475 -#: emc/usr_intf/pncconf/pncconf.glade:62487 -#: emc/usr_intf/pncconf/pncconf.glade:62499 -#: emc/usr_intf/pncconf/pncconf.glade:62511 -#: emc/usr_intf/pncconf/pncconf.glade:63452 -#: emc/usr_intf/pncconf/pncconf.glade:63464 -#: emc/usr_intf/pncconf/pncconf.glade:63476 -#: emc/usr_intf/pncconf/pncconf.glade:63488 -#: emc/usr_intf/pncconf/pncconf.glade:64661 -#: emc/usr_intf/pncconf/pncconf.glade:64673 -#: emc/usr_intf/pncconf/pncconf.glade:64685 -#: emc/usr_intf/pncconf/pncconf.glade:64697 -#: emc/usr_intf/pncconf/pncconf.glade:65608 -#: emc/usr_intf/pncconf/pncconf.glade:65620 -#: emc/usr_intf/pncconf/pncconf.glade:65632 -#: emc/usr_intf/pncconf/pncconf.glade:65644 -#: src/emc/usr_intf/pncconf/pncconf.glade:2043 -#: src/emc/usr_intf/pncconf/pncconf.glade:2056 -#: src/emc/usr_intf/pncconf/pncconf.glade:2069 -#: src/emc/usr_intf/pncconf/pncconf.glade:2415 -#: src/emc/usr_intf/pncconf/pncconf.glade:2428 -#: src/emc/usr_intf/pncconf/pncconf.glade:2441 -#: src/emc/usr_intf/pncconf/pncconf.glade:2454 -#: src/emc/usr_intf/pncconf/pncconf.glade:2465 -#: src/emc/usr_intf/pncconf/pncconf.glade:2478 -#: src/emc/usr_intf/pncconf/pncconf.glade:2491 -#: src/emc/usr_intf/pncconf/pncconf.glade:2504 -#: src/emc/usr_intf/pncconf/pncconf.glade:2517 -#: src/emc/usr_intf/pncconf/pncconf.glade:2530 -#: src/emc/usr_intf/pncconf/pncconf.glade:2543 -#: src/emc/usr_intf/pncconf/pncconf.glade:8367 -#: src/emc/usr_intf/pncconf/pncconf.glade:8403 -#: src/emc/usr_intf/pncconf/pncconf.glade:63498 -#: src/emc/usr_intf/pncconf/pncconf.glade:68242 -#: src/emc/usr_intf/pncconf/pncconf.glade:68254 -#: src/emc/usr_intf/pncconf/pncconf.glade:68266 -#: src/emc/usr_intf/pncconf/pncconf.glade:68278 -#: src/emc/usr_intf/pncconf/pncconf.glade:69451 -#: src/emc/usr_intf/pncconf/pncconf.glade:69463 -#: src/emc/usr_intf/pncconf/pncconf.glade:69475 -#: src/emc/usr_intf/pncconf/pncconf.glade:69487 -#: src/emc/usr_intf/pncconf/pncconf.glade:70428 -#: src/emc/usr_intf/pncconf/pncconf.glade:70440 -#: src/emc/usr_intf/pncconf/pncconf.glade:70452 -#: src/emc/usr_intf/pncconf/pncconf.glade:70464 -#: src/emc/usr_intf/pncconf/pncconf.glade:71637 -#: src/emc/usr_intf/pncconf/pncconf.glade:71649 -#: src/emc/usr_intf/pncconf/pncconf.glade:71661 -#: src/emc/usr_intf/pncconf/pncconf.glade:71673 -#: src/emc/usr_intf/pncconf/pncconf.glade:72584 -#: src/emc/usr_intf/pncconf/pncconf.glade:72596 -#: src/emc/usr_intf/pncconf/pncconf.glade:72608 -#: src/emc/usr_intf/pncconf/pncconf.glade:72620 -msgid "label" -msgstr "label" +#: src/emc/usr_intf/pncconf/pncconf.glade:1965 +#: src/emc/usr_intf/pncconf/pncconf.glade:3353 +#: src/emc/usr_intf/pncconf/pncconf.glade:4234 +#: src/emc/usr_intf/pncconf/pncconf.glade:5115 +msgid " bcd)" +msgstr " bcd)" -#: src/emc/usr_intf/pncconf/pncconf.glade:2073 -#: src/emc/usr_intf/pncconf/pncconf.glade:2559 -#: src/emc/usr_intf/pncconf/pncconf.glade:3300 -#: src/emc/usr_intf/pncconf/pncconf.glade:4181 -#: src/emc/usr_intf/pncconf/pncconf.glade:5062 -#: emc/usr_intf/pncconf/pncconf.glade:2073 -#: emc/usr_intf/pncconf/pncconf.glade:2559 -#: emc/usr_intf/pncconf/pncconf.glade:3300 -#: emc/usr_intf/pncconf/pncconf.glade:4181 -#: emc/usr_intf/pncconf/pncconf.glade:5062 -#: src/emc/usr_intf/pncconf/pncconf.glade:2081 -#: src/emc/usr_intf/pncconf/pncconf.glade:2567 -#: src/emc/usr_intf/pncconf/pncconf.glade:3308 -#: src/emc/usr_intf/pncconf/pncconf.glade:4189 -#: src/emc/usr_intf/pncconf/pncconf.glade:5070 -msgid " abc)" -msgstr " abc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:1978 +#: src/emc/usr_intf/pncconf/pncconf.glade:3366 +#: src/emc/usr_intf/pncconf/pncconf.glade:4247 +#: src/emc/usr_intf/pncconf/pncconf.glade:5128 +msgid " acd)" +msgstr " acd)" -#: src/emc/usr_intf/pncconf/pncconf.glade:2086 -#: src/emc/usr_intf/pncconf/pncconf.glade:3422 -#: src/emc/usr_intf/pncconf/pncconf.glade:4303 -#: src/emc/usr_intf/pncconf/pncconf.glade:5184 -#: emc/usr_intf/pncconf/pncconf.glade:2086 -#: emc/usr_intf/pncconf/pncconf.glade:3422 -#: emc/usr_intf/pncconf/pncconf.glade:4303 -#: emc/usr_intf/pncconf/pncconf.glade:5184 -#: src/emc/usr_intf/pncconf/pncconf.glade:2094 +#: src/emc/usr_intf/pncconf/pncconf.glade:1991 #: src/emc/usr_intf/pncconf/pncconf.glade:3430 #: src/emc/usr_intf/pncconf/pncconf.glade:4311 #: src/emc/usr_intf/pncconf/pncconf.glade:5192 -msgid " ab)" -msgstr " ab)" +msgid " cd)" +msgstr " cd)" + +#: src/emc/usr_intf/pncconf/pncconf.glade:2004 +#: src/emc/usr_intf/pncconf/pncconf.glade:3404 +#: src/emc/usr_intf/pncconf/pncconf.glade:4285 +#: src/emc/usr_intf/pncconf/pncconf.glade:5166 +msgid " bd)" +msgstr " bd)" -#: src/emc/usr_intf/pncconf/pncconf.glade:2372 -#: src/emc/usr_intf/pncconf/pncconf.glade:3321 -#: src/emc/usr_intf/pncconf/pncconf.glade:4202 -#: src/emc/usr_intf/pncconf/pncconf.glade:5083 -#: emc/usr_intf/pncconf/pncconf.glade:2372 -#: emc/usr_intf/pncconf/pncconf.glade:3321 -#: emc/usr_intf/pncconf/pncconf.glade:4202 -#: emc/usr_intf/pncconf/pncconf.glade:5083 -#: src/emc/usr_intf/pncconf/pncconf.glade:2380 -#: src/emc/usr_intf/pncconf/pncconf.glade:3329 -#: src/emc/usr_intf/pncconf/pncconf.glade:4210 -#: src/emc/usr_intf/pncconf/pncconf.glade:5091 -msgid " ac)" -msgstr " ac)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2017 +#: src/emc/usr_intf/pncconf/pncconf.glade:3391 +#: src/emc/usr_intf/pncconf/pncconf.glade:4272 +#: src/emc/usr_intf/pncconf/pncconf.glade:5153 +msgid " ad)" +msgstr " ad)" -#: src/emc/usr_intf/pncconf/pncconf.glade:2383 -#: src/emc/usr_intf/pncconf/pncconf.glade:3311 -#: src/emc/usr_intf/pncconf/pncconf.glade:4192 -#: src/emc/usr_intf/pncconf/pncconf.glade:5073 -#: emc/usr_intf/pncconf/pncconf.glade:2383 -#: emc/usr_intf/pncconf/pncconf.glade:3311 -#: emc/usr_intf/pncconf/pncconf.glade:4192 -#: emc/usr_intf/pncconf/pncconf.glade:5073 -#: src/emc/usr_intf/pncconf/pncconf.glade:2391 -#: src/emc/usr_intf/pncconf/pncconf.glade:3319 -#: src/emc/usr_intf/pncconf/pncconf.glade:4200 -#: src/emc/usr_intf/pncconf/pncconf.glade:5081 -msgid " bc)" -msgstr " bc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2030 +#: src/emc/usr_intf/pncconf/pncconf.glade:2514 +#: src/emc/usr_intf/pncconf/pncconf.glade:3059 +#: src/emc/usr_intf/pncconf/pncconf.glade:3940 +#: src/emc/usr_intf/pncconf/pncconf.glade:4821 +msgid " abc)" +msgstr " abc)" -#: src/emc/usr_intf/pncconf/pncconf.glade:2547 -#: src/emc/usr_intf/pncconf/pncconf.glade:3332 -#: src/emc/usr_intf/pncconf/pncconf.glade:4213 -#: src/emc/usr_intf/pncconf/pncconf.glade:5094 -#: emc/usr_intf/pncconf/pncconf.glade:2547 -#: emc/usr_intf/pncconf/pncconf.glade:3332 -#: emc/usr_intf/pncconf/pncconf.glade:4213 -#: emc/usr_intf/pncconf/pncconf.glade:5094 -#: src/emc/usr_intf/pncconf/pncconf.glade:2555 -#: src/emc/usr_intf/pncconf/pncconf.glade:3340 -#: src/emc/usr_intf/pncconf/pncconf.glade:4221 -#: src/emc/usr_intf/pncconf/pncconf.glade:5102 +#: src/emc/usr_intf/pncconf/pncconf.glade:2041 +#: src/emc/usr_intf/pncconf/pncconf.glade:3026 +#: src/emc/usr_intf/pncconf/pncconf.glade:3907 +#: src/emc/usr_intf/pncconf/pncconf.glade:4788 msgid " c)" msgstr " c)" -#: src/emc/usr_intf/pncconf/pncconf.glade:2570 -#: src/emc/usr_intf/pncconf/pncconf.glade:2966 -#: src/emc/usr_intf/pncconf/pncconf.glade:3847 -#: src/emc/usr_intf/pncconf/pncconf.glade:4728 -#: emc/usr_intf/pncconf/pncconf.glade:2570 -#: emc/usr_intf/pncconf/pncconf.glade:2966 -#: emc/usr_intf/pncconf/pncconf.glade:3847 -#: emc/usr_intf/pncconf/pncconf.glade:4728 -#: src/emc/usr_intf/pncconf/pncconf.glade:2578 -#: src/emc/usr_intf/pncconf/pncconf.glade:2974 -#: src/emc/usr_intf/pncconf/pncconf.glade:3855 -#: src/emc/usr_intf/pncconf/pncconf.glade:4736 -msgid " ad)" -msgstr " ad)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2207 +#: src/emc/usr_intf/pncconf/pncconf.glade:3049 +#: src/emc/usr_intf/pncconf/pncconf.glade:3930 +#: src/emc/usr_intf/pncconf/pncconf.glade:4811 +msgid " bc)" +msgstr " bc)" -#: src/emc/usr_intf/pncconf/pncconf.glade:2583 -#: src/emc/usr_intf/pncconf/pncconf.glade:2953 -#: src/emc/usr_intf/pncconf/pncconf.glade:3834 -#: src/emc/usr_intf/pncconf/pncconf.glade:4715 -#: emc/usr_intf/pncconf/pncconf.glade:2583 -#: emc/usr_intf/pncconf/pncconf.glade:2953 -#: emc/usr_intf/pncconf/pncconf.glade:3834 -#: emc/usr_intf/pncconf/pncconf.glade:4715 -#: src/emc/usr_intf/pncconf/pncconf.glade:2591 -#: src/emc/usr_intf/pncconf/pncconf.glade:2961 -#: src/emc/usr_intf/pncconf/pncconf.glade:3842 -#: src/emc/usr_intf/pncconf/pncconf.glade:4723 -msgid " bd)" -msgstr " bd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2217 +#: src/emc/usr_intf/pncconf/pncconf.glade:3038 +#: src/emc/usr_intf/pncconf/pncconf.glade:3919 +#: src/emc/usr_intf/pncconf/pncconf.glade:4800 +msgid " ac)" +msgstr " ac)" -#: src/emc/usr_intf/pncconf/pncconf.glade:2596 -#: src/emc/usr_intf/pncconf/pncconf.glade:2927 -#: src/emc/usr_intf/pncconf/pncconf.glade:3808 -#: src/emc/usr_intf/pncconf/pncconf.glade:4689 -#: emc/usr_intf/pncconf/pncconf.glade:2596 -#: emc/usr_intf/pncconf/pncconf.glade:2927 -#: emc/usr_intf/pncconf/pncconf.glade:3808 -#: emc/usr_intf/pncconf/pncconf.glade:4689 -#: src/emc/usr_intf/pncconf/pncconf.glade:2604 -#: src/emc/usr_intf/pncconf/pncconf.glade:2935 -#: src/emc/usr_intf/pncconf/pncconf.glade:3816 -#: src/emc/usr_intf/pncconf/pncconf.glade:4697 -msgid " cd)" -msgstr " cd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2504 +#: src/emc/usr_intf/pncconf/pncconf.glade:2938 +#: src/emc/usr_intf/pncconf/pncconf.glade:3819 +#: src/emc/usr_intf/pncconf/pncconf.glade:4700 +msgid " ab)" +msgstr " ab)" -#: src/emc/usr_intf/pncconf/pncconf.glade:2609 -#: src/emc/usr_intf/pncconf/pncconf.glade:2991 -#: src/emc/usr_intf/pncconf/pncconf.glade:3872 -#: src/emc/usr_intf/pncconf/pncconf.glade:4753 -#: emc/usr_intf/pncconf/pncconf.glade:2609 -#: emc/usr_intf/pncconf/pncconf.glade:2991 -#: emc/usr_intf/pncconf/pncconf.glade:3872 -#: emc/usr_intf/pncconf/pncconf.glade:4753 -#: src/emc/usr_intf/pncconf/pncconf.glade:2617 -#: src/emc/usr_intf/pncconf/pncconf.glade:2999 -#: src/emc/usr_intf/pncconf/pncconf.glade:3880 -#: src/emc/usr_intf/pncconf/pncconf.glade:4761 -msgid " acd)" -msgstr " acd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2577 +msgid "ignore all inputs false" +msgstr "ignorer les entrées false" -#: src/emc/usr_intf/pncconf/pncconf.glade:2622 -#: src/emc/usr_intf/pncconf/pncconf.glade:3004 -#: src/emc/usr_intf/pncconf/pncconf.glade:3885 -#: src/emc/usr_intf/pncconf/pncconf.glade:4766 -#: emc/usr_intf/pncconf/pncconf.glade:2622 -#: emc/usr_intf/pncconf/pncconf.glade:3004 -#: emc/usr_intf/pncconf/pncconf.glade:3885 -#: emc/usr_intf/pncconf/pncconf.glade:4766 -#: src/emc/usr_intf/pncconf/pncconf.glade:2630 -#: src/emc/usr_intf/pncconf/pncconf.glade:3012 -#: src/emc/usr_intf/pncconf/pncconf.glade:3893 -#: src/emc/usr_intf/pncconf/pncconf.glade:4774 -msgid " bcd)" -msgstr " bcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2592 +msgid "use gray code" +msgstr "utiliser le code Gray" -#: src/emc/usr_intf/pncconf/pncconf.glade:2635 -#: src/emc/usr_intf/pncconf/pncconf.glade:3017 -#: src/emc/usr_intf/pncconf/pncconf.glade:3898 -#: src/emc/usr_intf/pncconf/pncconf.glade:4779 -#: emc/usr_intf/pncconf/pncconf.glade:2635 -#: emc/usr_intf/pncconf/pncconf.glade:3017 -#: emc/usr_intf/pncconf/pncconf.glade:3898 -#: emc/usr_intf/pncconf/pncconf.glade:4779 -#: src/emc/usr_intf/pncconf/pncconf.glade:2643 -#: src/emc/usr_intf/pncconf/pncconf.glade:3025 -#: src/emc/usr_intf/pncconf/pncconf.glade:3906 -#: src/emc/usr_intf/pncconf/pncconf.glade:4787 -msgid " abcd)" -msgstr " abcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2607 +#: src/emc/usr_intf/pncconf/pncconf.glade:3489 +#: src/emc/usr_intf/pncconf/pncconf.glade:4356 +#: src/emc/usr_intf/pncconf/pncconf.glade:5237 +msgid "use debounce" +msgstr "utiliser anti-rebonds" -#: src/emc/usr_intf/pncconf/pncconf.glade:2648 -#: src/emc/usr_intf/pncconf/pncconf.glade:2979 -#: src/emc/usr_intf/pncconf/pncconf.glade:3860 -#: src/emc/usr_intf/pncconf/pncconf.glade:4741 -#: emc/usr_intf/pncconf/pncconf.glade:2648 -#: emc/usr_intf/pncconf/pncconf.glade:2979 -#: emc/usr_intf/pncconf/pncconf.glade:3860 -#: emc/usr_intf/pncconf/pncconf.glade:4741 -#: src/emc/usr_intf/pncconf/pncconf.glade:2656 -#: src/emc/usr_intf/pncconf/pncconf.glade:2987 -#: src/emc/usr_intf/pncconf/pncconf.glade:3868 -#: src/emc/usr_intf/pncconf/pncconf.glade:4749 -msgid " d)" -msgstr "d)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2658 +#: src/emc/usr_intf/pncconf/pncconf.glade:3453 +#: src/emc/usr_intf/pncconf/pncconf.glade:4334 +#: src/emc/usr_intf/pncconf/pncconf.glade:5215 +msgid "Mux options" +msgstr "Options de multiplexage" -#: src/emc/usr_intf/pncconf/pncconf.glade:2664 -#: emc/usr_intf/pncconf/pncconf.glade:2664 #: src/emc/usr_intf/pncconf/pncconf.glade:2672 msgid "increments" msgstr "incréments" -#: src/emc/usr_intf/pncconf/pncconf.glade:2708 -#: emc/usr_intf/pncconf/pncconf.glade:2708 #: src/emc/usr_intf/pncconf/pncconf.glade:2716 msgid "External MPG Jogging" msgstr "Manivelle de jog externe" -#: src/emc/usr_intf/pncconf/pncconf.glade:2739 -#: src/emc/usr_intf/pncconf/pncconf.glade:3620 -#: src/emc/usr_intf/pncconf/pncconf.glade:4501 -#: emc/usr_intf/pncconf/pncconf.glade:2739 -#: emc/usr_intf/pncconf/pncconf.glade:3620 -#: emc/usr_intf/pncconf/pncconf.glade:4501 #: src/emc/usr_intf/pncconf/pncconf.glade:2747 #: src/emc/usr_intf/pncconf/pncconf.glade:3628 #: src/emc/usr_intf/pncconf/pncconf.glade:4509 msgid "Use MPG " msgstr "Utiliser une manivelle" -#: src/emc/usr_intf/pncconf/pncconf.glade:2752 -#: src/emc/usr_intf/pncconf/pncconf.glade:3633 -#: src/emc/usr_intf/pncconf/pncconf.glade:4514 -#: emc/usr_intf/pncconf/pncconf.glade:2752 -#: emc/usr_intf/pncconf/pncconf.glade:3633 -#: emc/usr_intf/pncconf/pncconf.glade:4514 #: src/emc/usr_intf/pncconf/pncconf.glade:2760 #: src/emc/usr_intf/pncconf/pncconf.glade:3641 #: src/emc/usr_intf/pncconf/pncconf.glade:4522 msgid "use switches" msgstr "Utiliser contacts" -#: src/emc/usr_intf/pncconf/pncconf.glade:2838 -#: src/emc/usr_intf/pncconf/pncconf.glade:3733 -#: src/emc/usr_intf/pncconf/pncconf.glade:4614 -#: emc/usr_intf/pncconf/pncconf.glade:2838 -#: emc/usr_intf/pncconf/pncconf.glade:3733 -#: emc/usr_intf/pncconf/pncconf.glade:4614 -#: src/emc/usr_intf/pncconf/pncconf.glade:2846 -#: src/emc/usr_intf/pncconf/pncconf.glade:3741 -#: src/emc/usr_intf/pncconf/pncconf.glade:4622 -msgid "ignore all-inputs false" -msgstr "ignorer les entrées false" +#: src/emc/usr_intf/pncconf/pncconf.glade:3417 +#: src/emc/usr_intf/pncconf/pncconf.glade:4298 +#: src/emc/usr_intf/pncconf/pncconf.glade:5179 +msgid " abd)" +msgstr " abd)" -#: src/emc/usr_intf/pncconf/pncconf.glade:2853 -#: src/emc/usr_intf/pncconf/pncconf.glade:3748 -#: src/emc/usr_intf/pncconf/pncconf.glade:4629 -#: emc/usr_intf/pncconf/pncconf.glade:2853 -#: emc/usr_intf/pncconf/pncconf.glade:3748 -#: emc/usr_intf/pncconf/pncconf.glade:4629 -#: src/emc/usr_intf/pncconf/pncconf.glade:2861 -#: src/emc/usr_intf/pncconf/pncconf.glade:3756 -#: src/emc/usr_intf/pncconf/pncconf.glade:4637 +#: src/emc/usr_intf/pncconf/pncconf.glade:3504 +#: src/emc/usr_intf/pncconf/pncconf.glade:4371 +#: src/emc/usr_intf/pncconf/pncconf.glade:5252 msgid "use graycode" msgstr "utiliser le code Gray" -#: src/emc/usr_intf/pncconf/pncconf.glade:2940 -#: src/emc/usr_intf/pncconf/pncconf.glade:3821 -#: src/emc/usr_intf/pncconf/pncconf.glade:4702 -#: emc/usr_intf/pncconf/pncconf.glade:2940 -#: emc/usr_intf/pncconf/pncconf.glade:3821 -#: emc/usr_intf/pncconf/pncconf.glade:4702 -#: src/emc/usr_intf/pncconf/pncconf.glade:2948 -#: src/emc/usr_intf/pncconf/pncconf.glade:3829 -#: src/emc/usr_intf/pncconf/pncconf.glade:4710 -msgid " abd)" -msgstr " abd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:3519 +#: src/emc/usr_intf/pncconf/pncconf.glade:4386 +#: src/emc/usr_intf/pncconf/pncconf.glade:5267 +msgid "ignore all-inputs false" +msgstr "ignorer les entrées false" -#: src/emc/usr_intf/pncconf/pncconf.glade:3555 -#: src/emc/usr_intf/pncconf/pncconf.glade:4436 -#: src/emc/usr_intf/pncconf/pncconf.glade:5317 -#: emc/usr_intf/pncconf/pncconf.glade:3555 -#: emc/usr_intf/pncconf/pncconf.glade:4436 -#: emc/usr_intf/pncconf/pncconf.glade:5317 #: src/emc/usr_intf/pncconf/pncconf.glade:3563 #: src/emc/usr_intf/pncconf/pncconf.glade:4444 #: src/emc/usr_intf/pncconf/pncconf.glade:5325 msgid "Increments" msgstr "Incréments" -#: src/emc/usr_intf/pncconf/pncconf.glade:3589 -#: emc/usr_intf/pncconf/pncconf.glade:3589 #: src/emc/usr_intf/pncconf/pncconf.glade:3597 msgid "External Feed Override" msgstr "Correcteur de vitesse externe" -#: src/emc/usr_intf/pncconf/pncconf.glade:4470 -#: emc/usr_intf/pncconf/pncconf.glade:4470 #: src/emc/usr_intf/pncconf/pncconf.glade:4478 msgid "Max Velocity Override" msgstr "Correcteur de vitesse maximale" -#: src/emc/usr_intf/pncconf/pncconf.glade:5351 -#: emc/usr_intf/pncconf/pncconf.glade:5351 #: src/emc/usr_intf/pncconf/pncconf.glade:5359 msgid "External Spindle Override" msgstr "Correcteur de vitesse broche externe" -#: src/emc/usr_intf/pncconf/pncconf.glade:5379 -#: emc/usr_intf/pncconf/pncconf.glade:5379 #: src/emc/usr_intf/pncconf/pncconf.glade:5387 msgid "GUI configuration" msgstr "Configuration GUI" -#: src/emc/usr_intf/pncconf/pncconf.glade:5398 -#: emc/usr_intf/pncconf/pncconf.glade:5398 #: src/emc/usr_intf/pncconf/pncconf.glade:5406 msgid "Frontend" msgstr "Frontaux" -#: src/emc/usr_intf/pncconf/pncconf.glade:5557 -#: emc/usr_intf/pncconf/pncconf.glade:5557 -#: src/emc/usr_intf/pncconf/pncconf.glade:5565 -msgid "" -"Commanded\n" -"Actual" -msgstr "" -"Commandée\n" -"Actuelle" +#: src/emc/usr_intf/pncconf/pncconf.glade:5566 +msgid "Position_offset" +msgstr "Offset_position" -#: src/emc/usr_intf/pncconf/pncconf.glade:5570 -#: emc/usr_intf/pncconf/pncconf.glade:5570 -#: src/emc/usr_intf/pncconf/pncconf.glade:5578 -msgid "" -"Machine\n" -"Relative\n" -msgstr "" -"Machine\n" -"Relatif\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:5573 +msgid "Position_feedback" +msgstr "Retour_position" -#: src/emc/usr_intf/pncconf/pncconf.glade:5608 -#: emc/usr_intf/pncconf/pncconf.glade:5608 -#: src/emc/usr_intf/pncconf/pncconf.glade:5616 -msgid "Max Feed Override" -msgstr "Correcteur de vitesse maximale" +#: src/emc/usr_intf/pncconf/pncconf.glade:5584 +msgid "Max Spindle Override " +msgstr "Correcteur de vitesse broche maximale" -#: src/emc/usr_intf/pncconf/pncconf.glade:5667 -#: emc/usr_intf/pncconf/pncconf.glade:5667 -#: src/emc/usr_intf/pncconf/pncconf.glade:5675 +#: src/emc/usr_intf/pncconf/pncconf.glade:5606 msgid "Min Spindle Override" msgstr "Correcteur de vitesse broche minimale" -#: src/emc/usr_intf/pncconf/pncconf.glade:5691 -#: emc/usr_intf/pncconf/pncconf.glade:5691 -#: src/emc/usr_intf/pncconf/pncconf.glade:5699 -msgid "Max Spindle Override " -msgstr "Correcteur de vitesse broche maximale" +#: src/emc/usr_intf/pncconf/pncconf.glade:5665 +msgid "Max Feed Override" +msgstr "Correcteur de vitesse maximale" #: src/emc/usr_intf/pncconf/pncconf.glade:5702 -#: emc/usr_intf/pncconf/pncconf.glade:5702 -#: src/emc/usr_intf/pncconf/pncconf.glade:5710 -msgid "Position_feedback" -msgstr "Retour_position" +msgid "" +"Machine\n" +"Relative\n" +msgstr "" +"Machine\n" +"Relatif\n" -#: src/emc/usr_intf/pncconf/pncconf.glade:5713 -#: emc/usr_intf/pncconf/pncconf.glade:5713 -#: src/emc/usr_intf/pncconf/pncconf.glade:5721 -msgid "Position_offset" -msgstr "Offset_position" +#: src/emc/usr_intf/pncconf/pncconf.glade:5714 +msgid "" +"Commanded\n" +"Actual" +msgstr "" +"Commandée\n" +"Actuelle" -#: src/emc/usr_intf/pncconf/pncconf.glade:5721 -#: emc/usr_intf/pncconf/pncconf.glade:5721 #: src/emc/usr_intf/pncconf/pncconf.glade:5729 msgid "General GUI Defaults" msgstr "Valeurs communes par défauts" -#: src/emc/usr_intf/pncconf/pncconf.glade:5808 -#: emc/usr_intf/pncconf/pncconf.glade:5808 -#: src/emc/usr_intf/pncconf/pncconf.glade:5816 -msgid "Force Axis to Maximize" -msgstr "Forcer Axis à maximiser" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5832 -#: src/emc/usr_intf/pncconf/pncconf.glade:6602 -#: src/emc/usr_intf/pncconf/pncconf.glade:6841 -#: src/emc/usr_intf/pncconf/pncconf.glade:7328 -#: emc/usr_intf/pncconf/pncconf.glade:5832 -#: emc/usr_intf/pncconf/pncconf.glade:6602 -#: emc/usr_intf/pncconf/pncconf.glade:6841 -#: emc/usr_intf/pncconf/pncconf.glade:7328 -#: src/emc/usr_intf/pncconf/pncconf.glade:5840 -#: src/emc/usr_intf/pncconf/pncconf.glade:6610 -#: src/emc/usr_intf/pncconf/pncconf.glade:6849 -#: src/emc/usr_intf/pncconf/pncconf.glade:7336 -msgid "H" -msgstr "H" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5866 -#: src/emc/usr_intf/pncconf/pncconf.glade:6568 -#: src/emc/usr_intf/pncconf/pncconf.glade:6875 -#: src/emc/usr_intf/pncconf/pncconf.glade:7294 -#: emc/usr_intf/pncconf/pncconf.glade:5866 -#: emc/usr_intf/pncconf/pncconf.glade:6568 -#: emc/usr_intf/pncconf/pncconf.glade:6875 -#: emc/usr_intf/pncconf/pncconf.glade:7294 -#: src/emc/usr_intf/pncconf/pncconf.glade:5874 -#: src/emc/usr_intf/pncconf/pncconf.glade:6576 -#: src/emc/usr_intf/pncconf/pncconf.glade:6883 -#: src/emc/usr_intf/pncconf/pncconf.glade:7302 -msgid "W" -msgstr "W" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5876 -#: src/emc/usr_intf/pncconf/pncconf.glade:6556 -#: src/emc/usr_intf/pncconf/pncconf.glade:6885 -#: src/emc/usr_intf/pncconf/pncconf.glade:7282 -#: emc/usr_intf/pncconf/pncconf.glade:5876 -#: emc/usr_intf/pncconf/pncconf.glade:6556 -#: emc/usr_intf/pncconf/pncconf.glade:6885 -#: emc/usr_intf/pncconf/pncconf.glade:7282 -#: src/emc/usr_intf/pncconf/pncconf.glade:5884 -#: src/emc/usr_intf/pncconf/pncconf.glade:6564 -#: src/emc/usr_intf/pncconf/pncconf.glade:6893 -#: src/emc/usr_intf/pncconf/pncconf.glade:7290 -msgid "X" -msgstr "X" +#: src/emc/usr_intf/pncconf/pncconf.glade:5811 +msgid "Default linear velocity " +msgstr "Vitesse linéaire par défaut" -#: src/emc/usr_intf/pncconf/pncconf.glade:5914 -#: src/emc/usr_intf/pncconf/pncconf.glade:6519 -#: src/emc/usr_intf/pncconf/pncconf.glade:6923 -#: src/emc/usr_intf/pncconf/pncconf.glade:7244 -#: emc/usr_intf/pncconf/pncconf.glade:5914 -#: emc/usr_intf/pncconf/pncconf.glade:6519 -#: emc/usr_intf/pncconf/pncconf.glade:6923 -#: emc/usr_intf/pncconf/pncconf.glade:7244 -#: src/emc/usr_intf/pncconf/pncconf.glade:5922 -#: src/emc/usr_intf/pncconf/pncconf.glade:6527 -#: src/emc/usr_intf/pncconf/pncconf.glade:6931 -#: src/emc/usr_intf/pncconf/pncconf.glade:7252 -msgid "Position" -msgstr "Position" +#: src/emc/usr_intf/pncconf/pncconf.glade:5818 +msgid "Min linear velocity" +msgstr "Vitesse linéaire minimale" -#: src/emc/usr_intf/pncconf/pncconf.glade:5927 -#: src/emc/usr_intf/pncconf/pncconf.glade:6510 -#: src/emc/usr_intf/pncconf/pncconf.glade:6936 -#: src/emc/usr_intf/pncconf/pncconf.glade:7234 -#: emc/usr_intf/pncconf/pncconf.glade:5927 -#: emc/usr_intf/pncconf/pncconf.glade:6510 -#: emc/usr_intf/pncconf/pncconf.glade:6936 -#: emc/usr_intf/pncconf/pncconf.glade:7234 -#: src/emc/usr_intf/pncconf/pncconf.glade:5935 -#: src/emc/usr_intf/pncconf/pncconf.glade:6518 -#: src/emc/usr_intf/pncconf/pncconf.glade:6944 -#: src/emc/usr_intf/pncconf/pncconf.glade:7242 -msgid "size" -msgstr "Taille" +#: src/emc/usr_intf/pncconf/pncconf.glade:5829 +msgid "Max linear velocity" +msgstr "Vitesse linéaire maximale" -#: src/emc/usr_intf/pncconf/pncconf.glade:5942 -#: src/emc/usr_intf/pncconf/pncconf.glade:5952 -#: src/emc/usr_intf/pncconf/pncconf.glade:6158 -#: emc/usr_intf/pncconf/pncconf.glade:5942 -#: emc/usr_intf/pncconf/pncconf.glade:5952 -#: emc/usr_intf/pncconf/pncconf.glade:6158 -#: src/emc/usr_intf/pncconf/pncconf.glade:5950 -#: src/emc/usr_intf/pncconf/pncconf.glade:5960 -#: src/emc/usr_intf/pncconf/pncconf.glade:6166 +#: src/emc/usr_intf/pncconf/pncconf.glade:5879 +#: src/emc/usr_intf/pncconf/pncconf.glade:6085 +#: src/emc/usr_intf/pncconf/pncconf.glade:6097 msgid "mm / min" msgstr "mm / mn" -#: src/emc/usr_intf/pncconf/pncconf.glade:5975 -#: src/emc/usr_intf/pncconf/pncconf.glade:5985 -#: src/emc/usr_intf/pncconf/pncconf.glade:5997 -#: emc/usr_intf/pncconf/pncconf.glade:5975 -#: emc/usr_intf/pncconf/pncconf.glade:5985 -#: emc/usr_intf/pncconf/pncconf.glade:5997 -#: src/emc/usr_intf/pncconf/pncconf.glade:5983 -#: src/emc/usr_intf/pncconf/pncconf.glade:5993 -#: src/emc/usr_intf/pncconf/pncconf.glade:6005 -msgid "Deg / min" -msgstr "degrés / mn" +#: src/emc/usr_intf/pncconf/pncconf.glade:5892 +msgid "Default Angular velocity " +msgstr "Vitesse angulaire par défaut" -#: src/emc/usr_intf/pncconf/pncconf.glade:6010 -#: emc/usr_intf/pncconf/pncconf.glade:6010 -#: src/emc/usr_intf/pncconf/pncconf.glade:6018 -msgid "xyzabc" -msgstr "xyzabc" +#: src/emc/usr_intf/pncconf/pncconf.glade:5926 +msgid "gedit" +msgstr "gedit" -#: src/emc/usr_intf/pncconf/pncconf.glade:6023 -#: emc/usr_intf/pncconf/pncconf.glade:6023 -#: src/emc/usr_intf/pncconf/pncconf.glade:6031 -msgid "Axis Geometry" -msgstr "Géométrie des axes" +#: src/emc/usr_intf/pncconf/pncconf.glade:5939 +msgid "Min Angular velocity" +msgstr "Vitesse angulaire minimale" -#: src/emc/usr_intf/pncconf/pncconf.glade:6048 -#: emc/usr_intf/pncconf/pncconf.glade:6048 -#: src/emc/usr_intf/pncconf/pncconf.glade:6056 -msgid "Max Angular velocity" -msgstr "Vitesse angulaire maximale" +#: src/emc/usr_intf/pncconf/pncconf.glade:5966 +msgid "Increments " +msgstr "Incréments" -#: src/emc/usr_intf/pncconf/pncconf.glade:6061 -#: emc/usr_intf/pncconf/pncconf.glade:6061 -#: src/emc/usr_intf/pncconf/pncconf.glade:6069 +#: src/emc/usr_intf/pncconf/pncconf.glade:5977 msgid "5mm 1mm .5mm .1mm .05mm .01mm .005mm" msgstr "5mm 1mm .5mm .1mm .05mm .01mm .005mm" -#: src/emc/usr_intf/pncconf/pncconf.glade:6074 -#: emc/usr_intf/pncconf/pncconf.glade:6074 -#: src/emc/usr_intf/pncconf/pncconf.glade:6082 -msgid "Increments " -msgstr "Incréments" +#: src/emc/usr_intf/pncconf/pncconf.glade:5990 +msgid "Max Angular velocity" +msgstr "Vitesse angulaire maximale" -#: src/emc/usr_intf/pncconf/pncconf.glade:6099 -#: emc/usr_intf/pncconf/pncconf.glade:6099 -#: src/emc/usr_intf/pncconf/pncconf.glade:6107 -msgid "Min Angular velocity" -msgstr "Vitesse angulaire minimale" +#: src/emc/usr_intf/pncconf/pncconf.glade:6017 +msgid "Axis Geometry" +msgstr "Géométrie des axes" -#: src/emc/usr_intf/pncconf/pncconf.glade:6112 -#: emc/usr_intf/pncconf/pncconf.glade:6112 -#: src/emc/usr_intf/pncconf/pncconf.glade:6120 -msgid "gedit" -msgstr "gedit" +#: src/emc/usr_intf/pncconf/pncconf.glade:6028 +msgid "xyzabc" +msgstr "xyzabc" -#: src/emc/usr_intf/pncconf/pncconf.glade:6148 -#: emc/usr_intf/pncconf/pncconf.glade:6148 -#: src/emc/usr_intf/pncconf/pncconf.glade:6156 -msgid "Default Angular velocity " -msgstr "Vitesse angulaire par défaut" +#: src/emc/usr_intf/pncconf/pncconf.glade:6040 +#: src/emc/usr_intf/pncconf/pncconf.glade:6052 +#: src/emc/usr_intf/pncconf/pncconf.glade:6064 +msgid "Deg / min" +msgstr "degrés / mn" -#: src/emc/usr_intf/pncconf/pncconf.glade:6211 -#: emc/usr_intf/pncconf/pncconf.glade:6211 -#: src/emc/usr_intf/pncconf/pncconf.glade:6219 -msgid "Max linear velocity" -msgstr "Vitesse linéaire maximale" +#: src/emc/usr_intf/pncconf/pncconf.glade:6113 +#: src/emc/usr_intf/pncconf/pncconf.glade:6484 +#: src/emc/usr_intf/pncconf/pncconf.glade:6839 +#: src/emc/usr_intf/pncconf/pncconf.glade:7262 +msgid "size" +msgstr "Taille" -#: src/emc/usr_intf/pncconf/pncconf.glade:6222 -#: emc/usr_intf/pncconf/pncconf.glade:6222 -#: src/emc/usr_intf/pncconf/pncconf.glade:6230 -msgid "Min linear velocity" -msgstr "Vitesse linéaire minimale" +#: src/emc/usr_intf/pncconf/pncconf.glade:6122 +#: src/emc/usr_intf/pncconf/pncconf.glade:6471 +#: src/emc/usr_intf/pncconf/pncconf.glade:6848 +#: src/emc/usr_intf/pncconf/pncconf.glade:7248 +msgid "Position" +msgstr "Position" -#: src/emc/usr_intf/pncconf/pncconf.glade:6233 -#: emc/usr_intf/pncconf/pncconf.glade:6233 -#: src/emc/usr_intf/pncconf/pncconf.glade:6241 -msgid "Default linear velocity " -msgstr "Vitesse linéaire par défaut" +#: src/emc/usr_intf/pncconf/pncconf.glade:6159 +#: src/emc/usr_intf/pncconf/pncconf.glade:6433 +#: src/emc/usr_intf/pncconf/pncconf.glade:6885 +#: src/emc/usr_intf/pncconf/pncconf.glade:7210 +#: src/emc/usr_intf/gscreen/gscreen.glade:116 +msgid "X" +msgstr "X" + +#: src/emc/usr_intf/pncconf/pncconf.glade:6171 +#: src/emc/usr_intf/pncconf/pncconf.glade:6423 +#: src/emc/usr_intf/pncconf/pncconf.glade:6897 +#: src/emc/usr_intf/pncconf/pncconf.glade:7200 +#: src/emc/usr_intf/gscreen/gscreen.glade:1142 +msgid "W" +msgstr "W" + +#: src/emc/usr_intf/pncconf/pncconf.glade:6205 +#: src/emc/usr_intf/pncconf/pncconf.glade:6389 +#: src/emc/usr_intf/pncconf/pncconf.glade:6931 +#: src/emc/usr_intf/pncconf/pncconf.glade:7166 +msgid "H" +msgstr "H" + +#: src/emc/usr_intf/pncconf/pncconf.glade:6227 +msgid "Force Axis to Maximize" +msgstr "Forcer Axis à maximiser" -#: src/emc/usr_intf/pncconf/pncconf.glade:6241 -#: emc/usr_intf/pncconf/pncconf.glade:6241 #: src/emc/usr_intf/pncconf/pncconf.glade:6249 msgid "AXIS defaults" msgstr "Options par défaut d'AXIS" -#: src/emc/usr_intf/pncconf/pncconf.glade:6352 -#: emc/usr_intf/pncconf/pncconf.glade:6352 -#: src/emc/usr_intf/pncconf/pncconf.glade:6360 -msgid "Error Textcolor" -msgstr "Couleur texte Erreurs" - #: src/emc/usr_intf/pncconf/pncconf.glade:6365 -#: emc/usr_intf/pncconf/pncconf.glade:6365 -#: src/emc/usr_intf/pncconf/pncconf.glade:6373 -msgid "DTG Textcolor" -msgstr "DTG Textcolor" +msgid "Force Touchy to Maximize after positioning" +msgstr "Force Touchy à maximiser après le positionnement" -#: src/emc/usr_intf/pncconf/pncconf.glade:6378 -#: emc/usr_intf/pncconf/pncconf.glade:6378 -#: src/emc/usr_intf/pncconf/pncconf.glade:6386 -msgid "Relative Textcolor" -msgstr "Couleur texte Relatif" +#: src/emc/usr_intf/pncconf/pncconf.glade:6501 +#: src/emc/usr_intf/pncconf/pncconf.glade:7333 +msgid "Follow System Theme\n" +msgstr "Suit le thème du système\n" -#: src/emc/usr_intf/pncconf/pncconf.glade:6391 -#: emc/usr_intf/pncconf/pncconf.glade:6391 -#: src/emc/usr_intf/pncconf/pncconf.glade:6399 -msgid "Absolute Textcolor" -msgstr "Couleur texte Absolu" +#: src/emc/usr_intf/pncconf/pncconf.glade:6514 +#: src/emc/usr_intf/pncconf/pncconf.glade:7347 +msgid "GTK Theme" +msgstr "Thème GTK" -#: src/emc/usr_intf/pncconf/pncconf.glade:6454 -#: emc/usr_intf/pncconf/pncconf.glade:6454 -#: src/emc/usr_intf/pncconf/pncconf.glade:6462 +#: src/emc/usr_intf/pncconf/pncconf.glade:6540 +#: src/emc/usr_intf/gscreen/gscreen.glade:1857 msgid "Absolute Text Color" msgstr "Couleur texte Absolu" -#: src/emc/usr_intf/pncconf/pncconf.glade:6479 -#: src/emc/usr_intf/pncconf/pncconf.glade:7148 -#: emc/usr_intf/pncconf/pncconf.glade:6479 -#: emc/usr_intf/pncconf/pncconf.glade:7148 -#: src/emc/usr_intf/pncconf/pncconf.glade:6487 -#: src/emc/usr_intf/pncconf/pncconf.glade:7156 -msgid "GTK Theme" -msgstr "Thème GTK" +#: src/emc/usr_intf/pncconf/pncconf.glade:6603 +msgid "Absolute Textcolor" +msgstr "Couleur texte Absolu" -#: src/emc/usr_intf/pncconf/pncconf.glade:6491 -#: src/emc/usr_intf/pncconf/pncconf.glade:7158 -#: emc/usr_intf/pncconf/pncconf.glade:6491 -#: emc/usr_intf/pncconf/pncconf.glade:7158 -#: src/emc/usr_intf/pncconf/pncconf.glade:6499 -#: src/emc/usr_intf/pncconf/pncconf.glade:7166 -msgid "Follow System Theme\n" -msgstr "Suit le thème du système\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:6616 +msgid "Relative Textcolor" +msgstr "Couleur texte Relatif" -#: src/emc/usr_intf/pncconf/pncconf.glade:6624 -#: emc/usr_intf/pncconf/pncconf.glade:6624 -#: src/emc/usr_intf/pncconf/pncconf.glade:6632 -msgid "Force Touchy to Maximize after positioning" -msgstr "Force Touchy à maximiser après le positionnement" +#: src/emc/usr_intf/pncconf/pncconf.glade:6629 +msgid "DTG Textcolor" +msgstr "DTG Textcolor" + +#: src/emc/usr_intf/pncconf/pncconf.glade:6642 +msgid "Error Textcolor" +msgstr "Couleur texte Erreurs" -#: src/emc/usr_intf/pncconf/pncconf.glade:6669 -#: emc/usr_intf/pncconf/pncconf.glade:6669 #: src/emc/usr_intf/pncconf/pncconf.glade:6677 msgid "GUI Options" msgstr "Options des interfaces graphiques" -#: src/emc/usr_intf/pncconf/pncconf.glade:6700 -#: emc/usr_intf/pncconf/pncconf.glade:6700 #: src/emc/usr_intf/pncconf/pncconf.glade:6708 msgid "Virtual Control Panel" msgstr "Panneaux de contrôle virtuels" -#: src/emc/usr_intf/pncconf/pncconf.glade:6775 -#: emc/usr_intf/pncconf/pncconf.glade:6775 #: src/emc/usr_intf/pncconf/pncconf.glade:6783 msgid "XYZ buttons (uses Halui)" msgstr "Boutons XYZ (utilise Halui)" -#: src/emc/usr_intf/pncconf/pncconf.glade:6946 -#: emc/usr_intf/pncconf/pncconf.glade:6946 #: src/emc/usr_intf/pncconf/pncconf.glade:6954 msgid "Geometry Options" msgstr "Options de géomètrie" -#: src/emc/usr_intf/pncconf/pncconf.glade:7025 -#: emc/usr_intf/pncconf/pncconf.glade:7025 #: src/emc/usr_intf/pncconf/pncconf.glade:7033 msgid "Pyvcp Details" msgstr "Détails pyvcp" -#: src/emc/usr_intf/pncconf/pncconf.glade:7097 -#: emc/usr_intf/pncconf/pncconf.glade:7097 #: src/emc/usr_intf/pncconf/pncconf.glade:7105 msgid "Sample display " msgstr "Affichage simple" -#: src/emc/usr_intf/pncconf/pncconf.glade:7172 -#: emc/usr_intf/pncconf/pncconf.glade:7172 -#: src/emc/usr_intf/pncconf/pncconf.glade:7180 -msgid "Force Maximize" -msgstr "Force à maximiser" - -#: src/emc/usr_intf/pncconf/pncconf.glade:7186 -#: emc/usr_intf/pncconf/pncconf.glade:7186 -#: src/emc/usr_intf/pncconf/pncconf.glade:7194 -msgid "Center Tab Embeded" -msgstr "Center Tab Embeded" +#: src/emc/usr_intf/pncconf/pncconf.glade:7272 +msgid "Standalone Panel" +msgstr "Panneau autonome" -#: src/emc/usr_intf/pncconf/pncconf.glade:7201 -#: emc/usr_intf/pncconf/pncconf.glade:7201 -#: src/emc/usr_intf/pncconf/pncconf.glade:7209 +#: src/emc/usr_intf/pncconf/pncconf.glade:7289 msgid "Rightside Embeded" msgstr "Rightside Embeded" -#: src/emc/usr_intf/pncconf/pncconf.glade:7217 -#: emc/usr_intf/pncconf/pncconf.glade:7217 -#: src/emc/usr_intf/pncconf/pncconf.glade:7225 -msgid "Standalone Panel" -msgstr "Panneau autonome" +#: src/emc/usr_intf/pncconf/pncconf.glade:7305 +msgid "Center Tab Embeded" +msgstr "Center Tab Embeded" + +#: src/emc/usr_intf/pncconf/pncconf.glade:7320 +msgid "Force Maximize" +msgstr "Force à maximiser" -#: src/emc/usr_intf/pncconf/pncconf.glade:7351 -#: emc/usr_intf/pncconf/pncconf.glade:7351 #: src/emc/usr_intf/pncconf/pncconf.glade:7359 msgid "Display Options" msgstr "Options d'affichage" -#: src/emc/usr_intf/pncconf/pncconf.glade:7401 -#: emc/usr_intf/pncconf/pncconf.glade:7401 #: src/emc/usr_intf/pncconf/pncconf.glade:7409 msgid "Max RPM" msgstr "tr/mn maximaux" -#: src/emc/usr_intf/pncconf/pncconf.glade:7414 -#: emc/usr_intf/pncconf/pncconf.glade:7414 #: src/emc/usr_intf/pncconf/pncconf.glade:7422 msgid "Spindle Speed Indicator" msgstr "Indicateur de vitesse de broche" -#: src/emc/usr_intf/pncconf/pncconf.glade:7426 -#: emc/usr_intf/pncconf/pncconf.glade:7426 #: src/emc/usr_intf/pncconf/pncconf.glade:7434 msgid "Spindle At Speed LED" msgstr "LED Vitesse de broche atteinte" -#: src/emc/usr_intf/pncconf/pncconf.glade:7438 -#: emc/usr_intf/pncconf/pncconf.glade:7438 #: src/emc/usr_intf/pncconf/pncconf.glade:7446 msgid "Zero X Button" msgstr "Bouton X à zéro" -#: src/emc/usr_intf/pncconf/pncconf.glade:7450 -#: emc/usr_intf/pncconf/pncconf.glade:7450 #: src/emc/usr_intf/pncconf/pncconf.glade:7458 msgid "Zero Y Button" msgstr "Bouton Y à zéro" -#: src/emc/usr_intf/pncconf/pncconf.glade:7462 -#: emc/usr_intf/pncconf/pncconf.glade:7462 #: src/emc/usr_intf/pncconf/pncconf.glade:7470 msgid "Zero Z Button" msgstr "Bouton Z à zéro" -#: src/emc/usr_intf/pncconf/pncconf.glade:7474 -#: emc/usr_intf/pncconf/pncconf.glade:7474 #: src/emc/usr_intf/pncconf/pncconf.glade:7482 msgid "Zero A Button" msgstr "Bouton A à zéro" -#: src/emc/usr_intf/pncconf/pncconf.glade:7486 -#: emc/usr_intf/pncconf/pncconf.glade:7486 #: src/emc/usr_intf/pncconf/pncconf.glade:7494 msgid "Requires Classicladder touch-off program" msgstr "Requiert le programme de 'touch-off de Classicladder" -#: src/emc/usr_intf/pncconf/pncconf.glade:7487 -#: emc/usr_intf/pncconf/pncconf.glade:7487 #: src/emc/usr_intf/pncconf/pncconf.glade:7495 msgid "Auto Z Touch Off Button" msgstr "Bouton toucher Z automatique " -#: src/emc/usr_intf/pncconf/pncconf.glade:7500 -#: emc/usr_intf/pncconf/pncconf.glade:7500 #: src/emc/usr_intf/pncconf/pncconf.glade:7508 msgid "Sample Options" msgstr "Echantillon d'options" -#: src/emc/usr_intf/pncconf/pncconf.glade:7574 -#: emc/usr_intf/pncconf/pncconf.glade:7574 #: src/emc/usr_intf/pncconf/pncconf.glade:7582 msgid "Gladevcp Details" msgstr "Détails Gladevcp" -#: src/emc/usr_intf/pncconf/pncconf.glade:7597 -#: emc/usr_intf/pncconf/pncconf.glade:7597 #: src/emc/usr_intf/pncconf/pncconf.glade:7605 msgid "Include custom GladeVCP GUI panel" msgstr "Inclure un panneau utilisateur GladeVCP" -#: src/emc/usr_intf/pncconf/pncconf.glade:7668 -#: emc/usr_intf/pncconf/pncconf.glade:7668 #: src/emc/usr_intf/pncconf/pncconf.glade:7676 -msgid "Restore joint position after shutdown" -msgstr "Recupération position jointure après arrêt" +msgid "Force individual manual homing" +msgstr "Forcer la prise d'origine individuelle en manuel" -#: src/emc/usr_intf/pncconf/pncconf.glade:7683 -#: emc/usr_intf/pncconf/pncconf.glade:7683 -#: src/emc/usr_intf/pncconf/pncconf.glade:7691 -msgid "Move spindle up before tool change" -msgstr "Relever la broche avant le changement d'outil" +#: src/emc/usr_intf/pncconf/pncconf.glade:7689 +msgid "Random position toolchanger " +msgstr "Changeur d'outil à position aléatoire " -#: src/emc/usr_intf/pncconf/pncconf.glade:7696 -#: emc/usr_intf/pncconf/pncconf.glade:7696 #: src/emc/usr_intf/pncconf/pncconf.glade:7704 -msgid "Leave spindle on during tool change" -msgstr "Laisser tourner la broche pendant le changement d'outil" +msgid "Require homing before MDI / Running" +msgstr "Prise d'origine requise avant tout mouvement" -#: src/emc/usr_intf/pncconf/pncconf.glade:7709 -#: emc/usr_intf/pncconf/pncconf.glade:7709 -#: src/emc/usr_intf/pncconf/pncconf.glade:7717 +#: src/emc/usr_intf/pncconf/pncconf.glade:7713 msgid "Popup Toolchange Prompt" msgstr "Dialogue pour le changement d'outil" -#: src/emc/usr_intf/pncconf/pncconf.glade:7723 -#: emc/usr_intf/pncconf/pncconf.glade:7723 -#: src/emc/usr_intf/pncconf/pncconf.glade:7731 -msgid "Require homing before MDI / Running" -msgstr "Prise d'origine requise avant tout mouvement" +#: src/emc/usr_intf/pncconf/pncconf.glade:7727 +msgid "Leave spindle on during tool change" +msgstr "Laisser tourner la broche pendant le changement d'outil" -#: src/emc/usr_intf/pncconf/pncconf.glade:7732 -#: emc/usr_intf/pncconf/pncconf.glade:7732 #: src/emc/usr_intf/pncconf/pncconf.glade:7740 -msgid "Random position toolchanger " -msgstr "Changeur d'outil à position aléatoire " +msgid "Move spindle up before tool change" +msgstr "Relever la broche avant le changement d'outil" -#: src/emc/usr_intf/pncconf/pncconf.glade:7747 -#: emc/usr_intf/pncconf/pncconf.glade:7747 -#: src/emc/usr_intf/pncconf/pncconf.glade:7755 -msgid "Force individual manual homing" -msgstr "Forcer la prise d'origine individuelle en manuel" +#: src/emc/usr_intf/pncconf/pncconf.glade:7753 +msgid "Restore joint position after shutdown" +msgstr "Recupération position jointure après arrêt" -#: src/emc/usr_intf/pncconf/pncconf.glade:7761 -#: emc/usr_intf/pncconf/pncconf.glade:7761 #: src/emc/usr_intf/pncconf/pncconf.glade:7769 msgid "Defaults and Options" msgstr "Défauts et options" -#: src/emc/usr_intf/pncconf/pncconf.glade:7789 -#: emc/usr_intf/pncconf/pncconf.glade:7789 #: src/emc/usr_intf/pncconf/pncconf.glade:7797 msgid "Mesa0 I/O setup\n" msgstr "Config. E/S Mesa\n" -#: src/emc/usr_intf/pncconf/pncconf.glade:7809 -#: emc/usr_intf/pncconf/pncconf.glade:7809 #: src/emc/usr_intf/pncconf/pncconf.glade:7817 msgid "" "Click on each page tab to configure signal names for each connector port.\n" @@ -12675,144 +12358,102 @@ msgstr "" "\n" "Presser sur le bouton pour accepter les changements sur les pages.\n" -#: src/emc/usr_intf/pncconf/pncconf.glade:7998 -#: emc/usr_intf/pncconf/pncconf.glade:7998 -#: src/emc/usr_intf/pncconf/pncconf.glade:8022 -msgid "Num of channels: " -msgstr "Nombre de voies:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8001 +msgid "3PWM base frequency:" +msgstr "3PWM fréquence de base:" #: src/emc/usr_intf/pncconf/pncconf.glade:8036 -#: emc/usr_intf/pncconf/pncconf.glade:8036 -#: src/emc/usr_intf/pncconf/pncconf.glade:8060 -msgid "7i29 daughter board" -msgstr "carte fille 7i29" - -#: src/emc/usr_intf/pncconf/pncconf.glade:8045 -#: emc/usr_intf/pncconf/pncconf.glade:8045 -#: src/emc/usr_intf/pncconf/pncconf.glade:8069 -msgid "7i30 daughter board" -msgstr "carte fille 7i30" +msgid "Mesa parport address:" +msgstr "Adresse port parallèle Mesa:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8057 -#: emc/usr_intf/pncconf/pncconf.glade:8057 -#: src/emc/usr_intf/pncconf/pncconf.glade:8081 -msgid "7i33 daughter board" -msgstr "carte fille 7i33" +#: src/emc/usr_intf/pncconf/pncconf.glade:8047 +msgid "Firmware:" +msgstr "Micro-logiciel:" #: src/emc/usr_intf/pncconf/pncconf.glade:8069 -#: emc/usr_intf/pncconf/pncconf.glade:8069 -#: src/emc/usr_intf/pncconf/pncconf.glade:8093 -msgid "7i40 daughter board" -msgstr "carte fille 7i40" +msgid "SVST8_4" +msgstr "SVST8_4" -#: src/emc/usr_intf/pncconf/pncconf.glade:8081 -#: emc/usr_intf/pncconf/pncconf.glade:8081 -#: src/emc/usr_intf/pncconf/pncconf.glade:8105 -msgid "7i48 daughter board" -msgstr "carte fille 7i48" +#: src/emc/usr_intf/pncconf/pncconf.glade:8094 +msgid "Num of 3 pwm generators: " +msgstr "Nombre de générateurs 3PWM:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8096 -#: emc/usr_intf/pncconf/pncconf.glade:8096 -#: src/emc/usr_intf/pncconf/pncconf.glade:8120 -msgid "Sanity Checks" -msgstr "Contrôle d'intégrité" +#: src/emc/usr_intf/pncconf/pncconf.glade:8128 +msgid "Total number of pins:" +msgstr "Nombre total de broches:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8137 -#: emc/usr_intf/pncconf/pncconf.glade:8137 -#: src/emc/usr_intf/pncconf/pncconf.glade:8161 -msgid "Num of Smart Serial Ports:" -msgstr "Nombre de ports Smart Serial:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8153 +msgid "" +"Accept components\n" +" Changes" +msgstr "" +"Accepter les changements\n" +" de composants" -#: src/emc/usr_intf/pncconf/pncconf.glade:8148 -#: emc/usr_intf/pncconf/pncconf.glade:8148 -#: src/emc/usr_intf/pncconf/pncconf.glade:8172 -msgid "Board name" -msgstr "Nom de la carte" +#: src/emc/usr_intf/pncconf/pncconf.glade:8168 +msgid "PWM base frequency:" +msgstr "Fréquence de base PWM:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8155 -#: emc/usr_intf/pncconf/pncconf.glade:8155 #: src/emc/usr_intf/pncconf/pncconf.glade:8179 -msgid "Num of step generators: " -msgstr "Nombre de générateurs de pas:" +msgid "PDM base frequency:" +msgstr "Fréquence de base PDM:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8166 -#: emc/usr_intf/pncconf/pncconf.glade:8166 #: src/emc/usr_intf/pncconf/pncconf.glade:8190 -msgid "Num of pwm generators:" -msgstr "Nombre de générateurs de PWM:" +msgid "Watchdog timeout:" +msgstr "Délai du chien de garde:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8177 -#: emc/usr_intf/pncconf/pncconf.glade:8177 -#: src/emc/usr_intf/pncconf/pncconf.glade:8201 +#: src/emc/usr_intf/pncconf/pncconf.glade:8307 msgid "Num of encoders:" msgstr "Nombre de codeurs:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8294 -#: emc/usr_intf/pncconf/pncconf.glade:8294 #: src/emc/usr_intf/pncconf/pncconf.glade:8318 -msgid "Watchdog timeout:" -msgstr "Délai du chien de garde:" +msgid "Num of pwm generators:" +msgstr "Nombre de générateurs de PWM:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8305 -#: emc/usr_intf/pncconf/pncconf.glade:8305 #: src/emc/usr_intf/pncconf/pncconf.glade:8329 -msgid "PDM base frequency:" -msgstr "Fréquence de base PDM:" +msgid "Num of step generators: " +msgstr "Nombre de générateurs de pas:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8316 -#: emc/usr_intf/pncconf/pncconf.glade:8316 #: src/emc/usr_intf/pncconf/pncconf.glade:8340 -msgid "PWM base frequency:" -msgstr "Fréquence de base PWM:" +msgid "Board name" +msgstr "Nom de la carte" -#: src/emc/usr_intf/pncconf/pncconf.glade:8328 -#: emc/usr_intf/pncconf/pncconf.glade:8328 -#: src/emc/usr_intf/pncconf/pncconf.glade:8352 -msgid "" -"Accept components\n" -" Changes" -msgstr "" -"Accepter les changements\n" -" de composants" +#: src/emc/usr_intf/pncconf/pncconf.glade:8346 +msgid "Num of Smart Serial Ports:" +msgstr "Nombre de ports Smart Serial:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8356 -#: emc/usr_intf/pncconf/pncconf.glade:8356 -#: src/emc/usr_intf/pncconf/pncconf.glade:8380 -msgid "Total number of pins:" -msgstr "Nombre total de broches:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8393 +msgid "7i29 daughter board" +msgstr "carte fille 7i29" -#: src/emc/usr_intf/pncconf/pncconf.glade:8389 -#: emc/usr_intf/pncconf/pncconf.glade:8389 -#: src/emc/usr_intf/pncconf/pncconf.glade:8413 -msgid "Num of 3 pwm generators: " -msgstr "Nombre de générateurs 3PWM:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8402 +msgid "7i30 daughter board" +msgstr "carte fille 7i30" -#: src/emc/usr_intf/pncconf/pncconf.glade:8412 -#: emc/usr_intf/pncconf/pncconf.glade:8412 -#: src/emc/usr_intf/pncconf/pncconf.glade:8436 -msgid "SVST8_4" -msgstr "SVST8_4" +#: src/emc/usr_intf/pncconf/pncconf.glade:8414 +msgid "7i33 daughter board" +msgstr "carte fille 7i33" -#: src/emc/usr_intf/pncconf/pncconf.glade:8437 -#: emc/usr_intf/pncconf/pncconf.glade:8437 -#: src/emc/usr_intf/pncconf/pncconf.glade:8461 -msgid "Firmware:" -msgstr "Micro-logiciel:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8426 +msgid "7i40 daughter board" +msgstr "carte fille 7i40" -#: src/emc/usr_intf/pncconf/pncconf.glade:8447 -#: emc/usr_intf/pncconf/pncconf.glade:8447 -#: src/emc/usr_intf/pncconf/pncconf.glade:8471 -msgid "Mesa parport address:" -msgstr "Adresse port parallèle Mesa:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8438 +msgid "7i48 daughter board" +msgstr "carte fille 7i48" + +#: src/emc/usr_intf/pncconf/pncconf.glade:8453 +msgid "Sanity Checks" +msgstr "Contrôle d'intégrité" #: src/emc/usr_intf/pncconf/pncconf.glade:8482 -#: emc/usr_intf/pncconf/pncconf.glade:8482 -#: src/emc/usr_intf/pncconf/pncconf.glade:8506 -msgid "3PWM base frequency:" -msgstr "3PWM fréquence de base:" +msgid "Num of channels: " +msgstr "Nombre de voies:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:8494 +msgid "Num of resolvers:" +msgstr "Nombre de codeurs:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8504 -#: emc/usr_intf/pncconf/pncconf.glade:8504 #: src/emc/usr_intf/pncconf/pncconf.glade:8528 msgid "" "Configuration\n" @@ -12821,2132 +12462,290 @@ msgstr "" " Page de\n" " configuration" -#: src/emc/usr_intf/pncconf/pncconf.glade:8698 -#: src/emc/usr_intf/pncconf/pncconf.glade:8712 -#: src/emc/usr_intf/pncconf/pncconf.glade:13677 -#: src/emc/usr_intf/pncconf/pncconf.glade:13689 -#: src/emc/usr_intf/pncconf/pncconf.glade:16373 -#: src/emc/usr_intf/pncconf/pncconf.glade:16385 -#: src/emc/usr_intf/pncconf/pncconf.glade:18883 -#: src/emc/usr_intf/pncconf/pncconf.glade:18895 -#: src/emc/usr_intf/pncconf/pncconf.glade:20747 -#: src/emc/usr_intf/pncconf/pncconf.glade:20759 -#: src/emc/usr_intf/pncconf/pncconf.glade:20962 -#: src/emc/usr_intf/pncconf/pncconf.glade:20976 -#: src/emc/usr_intf/pncconf/pncconf.glade:22758 -#: src/emc/usr_intf/pncconf/pncconf.glade:22772 -#: src/emc/usr_intf/pncconf/pncconf.glade:24554 -#: src/emc/usr_intf/pncconf/pncconf.glade:24568 -#: src/emc/usr_intf/pncconf/pncconf.glade:26330 -#: src/emc/usr_intf/pncconf/pncconf.glade:26344 -#: src/emc/usr_intf/pncconf/pncconf.glade:31324 -#: src/emc/usr_intf/pncconf/pncconf.glade:31336 -#: src/emc/usr_intf/pncconf/pncconf.glade:31600 -#: src/emc/usr_intf/pncconf/pncconf.glade:35669 -#: src/emc/usr_intf/pncconf/pncconf.glade:35681 -#: src/emc/usr_intf/pncconf/pncconf.glade:35814 -#: src/emc/usr_intf/pncconf/pncconf.glade:35828 -#: src/emc/usr_intf/pncconf/pncconf.glade:40000 -#: src/emc/usr_intf/pncconf/pncconf.glade:40012 -#: src/emc/usr_intf/pncconf/pncconf.glade:40174 -#: src/emc/usr_intf/pncconf/pncconf.glade:40188 -#: src/emc/usr_intf/pncconf/pncconf.glade:45168 -#: src/emc/usr_intf/pncconf/pncconf.glade:45180 -#: src/emc/usr_intf/pncconf/pncconf.glade:45431 -#: src/emc/usr_intf/pncconf/pncconf.glade:45445 -#: src/emc/usr_intf/pncconf/pncconf.glade:47097 -#: src/emc/usr_intf/pncconf/pncconf.glade:47111 -#: src/emc/usr_intf/pncconf/pncconf.glade:52091 -#: src/emc/usr_intf/pncconf/pncconf.glade:52103 -#: src/emc/usr_intf/pncconf/pncconf.glade:52354 -#: src/emc/usr_intf/pncconf/pncconf.glade:52368 -#: emc/usr_intf/pncconf/pncconf.glade:8698 -#: emc/usr_intf/pncconf/pncconf.glade:8712 -#: emc/usr_intf/pncconf/pncconf.glade:13677 -#: emc/usr_intf/pncconf/pncconf.glade:13689 -#: emc/usr_intf/pncconf/pncconf.glade:16373 -#: emc/usr_intf/pncconf/pncconf.glade:16385 -#: emc/usr_intf/pncconf/pncconf.glade:18883 -#: emc/usr_intf/pncconf/pncconf.glade:18895 -#: emc/usr_intf/pncconf/pncconf.glade:20747 -#: emc/usr_intf/pncconf/pncconf.glade:20759 -#: emc/usr_intf/pncconf/pncconf.glade:20962 -#: emc/usr_intf/pncconf/pncconf.glade:20976 -#: emc/usr_intf/pncconf/pncconf.glade:22758 -#: emc/usr_intf/pncconf/pncconf.glade:22772 -#: emc/usr_intf/pncconf/pncconf.glade:24554 -#: emc/usr_intf/pncconf/pncconf.glade:24568 -#: emc/usr_intf/pncconf/pncconf.glade:26330 -#: emc/usr_intf/pncconf/pncconf.glade:26344 -#: emc/usr_intf/pncconf/pncconf.glade:31324 -#: emc/usr_intf/pncconf/pncconf.glade:31336 -#: emc/usr_intf/pncconf/pncconf.glade:31600 -#: emc/usr_intf/pncconf/pncconf.glade:35669 -#: emc/usr_intf/pncconf/pncconf.glade:35681 -#: emc/usr_intf/pncconf/pncconf.glade:35814 -#: emc/usr_intf/pncconf/pncconf.glade:35828 -#: emc/usr_intf/pncconf/pncconf.glade:40000 -#: emc/usr_intf/pncconf/pncconf.glade:40012 -#: emc/usr_intf/pncconf/pncconf.glade:40174 -#: emc/usr_intf/pncconf/pncconf.glade:40188 -#: emc/usr_intf/pncconf/pncconf.glade:45168 -#: emc/usr_intf/pncconf/pncconf.glade:45180 -#: emc/usr_intf/pncconf/pncconf.glade:45431 -#: emc/usr_intf/pncconf/pncconf.glade:45445 -#: emc/usr_intf/pncconf/pncconf.glade:47097 -#: emc/usr_intf/pncconf/pncconf.glade:47111 -#: emc/usr_intf/pncconf/pncconf.glade:52091 -#: emc/usr_intf/pncconf/pncconf.glade:52103 -#: emc/usr_intf/pncconf/pncconf.glade:52354 -#: emc/usr_intf/pncconf/pncconf.glade:52368 -#: src/emc/usr_intf/pncconf/pncconf.glade:8722 -#: src/emc/usr_intf/pncconf/pncconf.glade:8736 -#: src/emc/usr_intf/pncconf/pncconf.glade:13701 -#: src/emc/usr_intf/pncconf/pncconf.glade:13713 -#: src/emc/usr_intf/pncconf/pncconf.glade:16397 -#: src/emc/usr_intf/pncconf/pncconf.glade:16409 -#: src/emc/usr_intf/pncconf/pncconf.glade:18907 -#: src/emc/usr_intf/pncconf/pncconf.glade:18919 -#: src/emc/usr_intf/pncconf/pncconf.glade:20771 -#: src/emc/usr_intf/pncconf/pncconf.glade:20783 -#: src/emc/usr_intf/pncconf/pncconf.glade:20986 -#: src/emc/usr_intf/pncconf/pncconf.glade:21000 -#: src/emc/usr_intf/pncconf/pncconf.glade:22782 -#: src/emc/usr_intf/pncconf/pncconf.glade:22796 -#: src/emc/usr_intf/pncconf/pncconf.glade:24578 -#: src/emc/usr_intf/pncconf/pncconf.glade:24592 -#: src/emc/usr_intf/pncconf/pncconf.glade:26354 -#: src/emc/usr_intf/pncconf/pncconf.glade:26368 -#: src/emc/usr_intf/pncconf/pncconf.glade:31348 -#: src/emc/usr_intf/pncconf/pncconf.glade:31360 -#: src/emc/usr_intf/pncconf/pncconf.glade:31624 -#: src/emc/usr_intf/pncconf/pncconf.glade:35693 -#: src/emc/usr_intf/pncconf/pncconf.glade:35705 -#: src/emc/usr_intf/pncconf/pncconf.glade:35838 -#: src/emc/usr_intf/pncconf/pncconf.glade:35852 -#: src/emc/usr_intf/pncconf/pncconf.glade:40024 -#: src/emc/usr_intf/pncconf/pncconf.glade:40036 -#: src/emc/usr_intf/pncconf/pncconf.glade:40198 -#: src/emc/usr_intf/pncconf/pncconf.glade:40212 -#: src/emc/usr_intf/pncconf/pncconf.glade:45192 -#: src/emc/usr_intf/pncconf/pncconf.glade:45204 -#: src/emc/usr_intf/pncconf/pncconf.glade:45455 -#: src/emc/usr_intf/pncconf/pncconf.glade:45469 -#: src/emc/usr_intf/pncconf/pncconf.glade:47121 -#: src/emc/usr_intf/pncconf/pncconf.glade:47135 -#: src/emc/usr_intf/pncconf/pncconf.glade:52115 -#: src/emc/usr_intf/pncconf/pncconf.glade:52127 -#: src/emc/usr_intf/pncconf/pncconf.glade:52378 -#: src/emc/usr_intf/pncconf/pncconf.glade:52392 -#: src/emc/usr_intf/pncconf/pncconf.glade:54044 -#: src/emc/usr_intf/pncconf/pncconf.glade:54058 -#: src/emc/usr_intf/pncconf/pncconf.glade:59038 -#: src/emc/usr_intf/pncconf/pncconf.glade:59050 -#: src/emc/usr_intf/pncconf/pncconf.glade:59301 -#: src/emc/usr_intf/pncconf/pncconf.glade:59315 -msgid "Num" -msgstr "Numéro" - -#: src/emc/usr_intf/pncconf/pncconf.glade:8723 -#: src/emc/usr_intf/pncconf/pncconf.glade:8743 -#: src/emc/usr_intf/pncconf/pncconf.glade:8763 -#: src/emc/usr_intf/pncconf/pncconf.glade:8783 -#: src/emc/usr_intf/pncconf/pncconf.glade:8803 -#: src/emc/usr_intf/pncconf/pncconf.glade:8823 -#: src/emc/usr_intf/pncconf/pncconf.glade:8843 -#: src/emc/usr_intf/pncconf/pncconf.glade:8863 -#: src/emc/usr_intf/pncconf/pncconf.glade:8883 -#: src/emc/usr_intf/pncconf/pncconf.glade:8903 -#: src/emc/usr_intf/pncconf/pncconf.glade:8923 -#: src/emc/usr_intf/pncconf/pncconf.glade:8943 -#: src/emc/usr_intf/pncconf/pncconf.glade:8963 -#: src/emc/usr_intf/pncconf/pncconf.glade:8983 -#: src/emc/usr_intf/pncconf/pncconf.glade:9003 -#: src/emc/usr_intf/pncconf/pncconf.glade:9023 -#: src/emc/usr_intf/pncconf/pncconf.glade:9043 -#: src/emc/usr_intf/pncconf/pncconf.glade:9063 -#: src/emc/usr_intf/pncconf/pncconf.glade:9083 -#: src/emc/usr_intf/pncconf/pncconf.glade:9103 -#: src/emc/usr_intf/pncconf/pncconf.glade:9123 -#: src/emc/usr_intf/pncconf/pncconf.glade:9143 -#: src/emc/usr_intf/pncconf/pncconf.glade:9163 -#: src/emc/usr_intf/pncconf/pncconf.glade:11027 -#: src/emc/usr_intf/pncconf/pncconf.glade:11353 -#: src/emc/usr_intf/pncconf/pncconf.glade:13216 -#: src/emc/usr_intf/pncconf/pncconf.glade:13236 -#: src/emc/usr_intf/pncconf/pncconf.glade:13256 -#: src/emc/usr_intf/pncconf/pncconf.glade:13276 -#: src/emc/usr_intf/pncconf/pncconf.glade:13296 -#: src/emc/usr_intf/pncconf/pncconf.glade:13316 -#: src/emc/usr_intf/pncconf/pncconf.glade:13336 -#: src/emc/usr_intf/pncconf/pncconf.glade:13356 -#: src/emc/usr_intf/pncconf/pncconf.glade:13376 -#: src/emc/usr_intf/pncconf/pncconf.glade:13396 -#: src/emc/usr_intf/pncconf/pncconf.glade:13416 -#: src/emc/usr_intf/pncconf/pncconf.glade:13436 -#: src/emc/usr_intf/pncconf/pncconf.glade:13456 -#: src/emc/usr_intf/pncconf/pncconf.glade:13476 -#: src/emc/usr_intf/pncconf/pncconf.glade:13496 -#: src/emc/usr_intf/pncconf/pncconf.glade:13516 -#: src/emc/usr_intf/pncconf/pncconf.glade:13536 -#: src/emc/usr_intf/pncconf/pncconf.glade:13556 -#: src/emc/usr_intf/pncconf/pncconf.glade:13576 -#: src/emc/usr_intf/pncconf/pncconf.glade:13596 -#: src/emc/usr_intf/pncconf/pncconf.glade:13616 -#: src/emc/usr_intf/pncconf/pncconf.glade:13636 -#: src/emc/usr_intf/pncconf/pncconf.glade:13656 -#: src/emc/usr_intf/pncconf/pncconf.glade:13966 -#: src/emc/usr_intf/pncconf/pncconf.glade:15912 -#: src/emc/usr_intf/pncconf/pncconf.glade:15932 -#: src/emc/usr_intf/pncconf/pncconf.glade:15952 -#: src/emc/usr_intf/pncconf/pncconf.glade:15972 -#: src/emc/usr_intf/pncconf/pncconf.glade:15992 -#: src/emc/usr_intf/pncconf/pncconf.glade:16012 -#: src/emc/usr_intf/pncconf/pncconf.glade:16032 -#: src/emc/usr_intf/pncconf/pncconf.glade:16052 -#: src/emc/usr_intf/pncconf/pncconf.glade:16072 -#: src/emc/usr_intf/pncconf/pncconf.glade:16092 -#: src/emc/usr_intf/pncconf/pncconf.glade:16112 -#: src/emc/usr_intf/pncconf/pncconf.glade:16132 -#: src/emc/usr_intf/pncconf/pncconf.glade:16152 -#: src/emc/usr_intf/pncconf/pncconf.glade:16172 -#: src/emc/usr_intf/pncconf/pncconf.glade:16192 -#: src/emc/usr_intf/pncconf/pncconf.glade:16212 -#: src/emc/usr_intf/pncconf/pncconf.glade:16232 -#: src/emc/usr_intf/pncconf/pncconf.glade:16252 -#: src/emc/usr_intf/pncconf/pncconf.glade:16272 -#: src/emc/usr_intf/pncconf/pncconf.glade:16292 -#: src/emc/usr_intf/pncconf/pncconf.glade:16312 -#: src/emc/usr_intf/pncconf/pncconf.glade:16332 -#: src/emc/usr_intf/pncconf/pncconf.glade:16352 -#: src/emc/usr_intf/pncconf/pncconf.glade:16558 -#: src/emc/usr_intf/pncconf/pncconf.glade:18422 -#: src/emc/usr_intf/pncconf/pncconf.glade:18442 -#: src/emc/usr_intf/pncconf/pncconf.glade:18462 -#: src/emc/usr_intf/pncconf/pncconf.glade:18482 -#: src/emc/usr_intf/pncconf/pncconf.glade:18502 -#: src/emc/usr_intf/pncconf/pncconf.glade:18522 -#: src/emc/usr_intf/pncconf/pncconf.glade:18542 -#: src/emc/usr_intf/pncconf/pncconf.glade:18562 -#: src/emc/usr_intf/pncconf/pncconf.glade:18582 -#: src/emc/usr_intf/pncconf/pncconf.glade:18602 -#: src/emc/usr_intf/pncconf/pncconf.glade:18622 -#: src/emc/usr_intf/pncconf/pncconf.glade:18642 -#: src/emc/usr_intf/pncconf/pncconf.glade:18662 -#: src/emc/usr_intf/pncconf/pncconf.glade:18682 -#: src/emc/usr_intf/pncconf/pncconf.glade:18702 -#: src/emc/usr_intf/pncconf/pncconf.glade:18722 -#: src/emc/usr_intf/pncconf/pncconf.glade:18742 -#: src/emc/usr_intf/pncconf/pncconf.glade:18762 -#: src/emc/usr_intf/pncconf/pncconf.glade:18782 -#: src/emc/usr_intf/pncconf/pncconf.glade:18802 -#: src/emc/usr_intf/pncconf/pncconf.glade:18822 -#: src/emc/usr_intf/pncconf/pncconf.glade:18842 -#: src/emc/usr_intf/pncconf/pncconf.glade:18862 -#: src/emc/usr_intf/pncconf/pncconf.glade:26355 -#: src/emc/usr_intf/pncconf/pncconf.glade:26375 -#: src/emc/usr_intf/pncconf/pncconf.glade:26395 -#: src/emc/usr_intf/pncconf/pncconf.glade:26415 -#: src/emc/usr_intf/pncconf/pncconf.glade:26435 -#: src/emc/usr_intf/pncconf/pncconf.glade:26455 -#: src/emc/usr_intf/pncconf/pncconf.glade:26475 -#: src/emc/usr_intf/pncconf/pncconf.glade:26495 -#: src/emc/usr_intf/pncconf/pncconf.glade:26515 -#: src/emc/usr_intf/pncconf/pncconf.glade:26535 -#: src/emc/usr_intf/pncconf/pncconf.glade:26555 -#: src/emc/usr_intf/pncconf/pncconf.glade:26575 -#: src/emc/usr_intf/pncconf/pncconf.glade:26595 -#: src/emc/usr_intf/pncconf/pncconf.glade:26615 -#: src/emc/usr_intf/pncconf/pncconf.glade:26635 -#: src/emc/usr_intf/pncconf/pncconf.glade:26655 -#: src/emc/usr_intf/pncconf/pncconf.glade:26675 -#: src/emc/usr_intf/pncconf/pncconf.glade:26695 -#: src/emc/usr_intf/pncconf/pncconf.glade:26715 -#: src/emc/usr_intf/pncconf/pncconf.glade:26735 -#: src/emc/usr_intf/pncconf/pncconf.glade:26755 -#: src/emc/usr_intf/pncconf/pncconf.glade:26775 -#: src/emc/usr_intf/pncconf/pncconf.glade:26795 -#: src/emc/usr_intf/pncconf/pncconf.glade:28711 -#: src/emc/usr_intf/pncconf/pncconf.glade:28934 -#: src/emc/usr_intf/pncconf/pncconf.glade:30863 -#: src/emc/usr_intf/pncconf/pncconf.glade:30883 -#: src/emc/usr_intf/pncconf/pncconf.glade:30903 -#: src/emc/usr_intf/pncconf/pncconf.glade:30923 -#: src/emc/usr_intf/pncconf/pncconf.glade:30943 -#: src/emc/usr_intf/pncconf/pncconf.glade:30963 -#: src/emc/usr_intf/pncconf/pncconf.glade:30983 -#: src/emc/usr_intf/pncconf/pncconf.glade:31003 -#: src/emc/usr_intf/pncconf/pncconf.glade:31023 -#: src/emc/usr_intf/pncconf/pncconf.glade:31043 -#: src/emc/usr_intf/pncconf/pncconf.glade:31063 -#: src/emc/usr_intf/pncconf/pncconf.glade:31083 -#: src/emc/usr_intf/pncconf/pncconf.glade:31103 -#: src/emc/usr_intf/pncconf/pncconf.glade:31123 -#: src/emc/usr_intf/pncconf/pncconf.glade:31143 -#: src/emc/usr_intf/pncconf/pncconf.glade:31163 -#: src/emc/usr_intf/pncconf/pncconf.glade:31183 -#: src/emc/usr_intf/pncconf/pncconf.glade:31203 -#: src/emc/usr_intf/pncconf/pncconf.glade:31223 -#: src/emc/usr_intf/pncconf/pncconf.glade:31243 -#: src/emc/usr_intf/pncconf/pncconf.glade:31263 -#: src/emc/usr_intf/pncconf/pncconf.glade:31283 -#: src/emc/usr_intf/pncconf/pncconf.glade:31303 -#: src/emc/usr_intf/pncconf/pncconf.glade:31611 -#: src/emc/usr_intf/pncconf/pncconf.glade:31631 -#: src/emc/usr_intf/pncconf/pncconf.glade:31651 -#: src/emc/usr_intf/pncconf/pncconf.glade:31671 -#: src/emc/usr_intf/pncconf/pncconf.glade:31691 -#: src/emc/usr_intf/pncconf/pncconf.glade:31711 -#: src/emc/usr_intf/pncconf/pncconf.glade:31731 -#: src/emc/usr_intf/pncconf/pncconf.glade:31751 -#: src/emc/usr_intf/pncconf/pncconf.glade:31771 -#: src/emc/usr_intf/pncconf/pncconf.glade:31791 -#: src/emc/usr_intf/pncconf/pncconf.glade:31811 -#: src/emc/usr_intf/pncconf/pncconf.glade:33029 -#: src/emc/usr_intf/pncconf/pncconf.glade:33292 -#: src/emc/usr_intf/pncconf/pncconf.glade:35208 -#: src/emc/usr_intf/pncconf/pncconf.glade:35228 -#: src/emc/usr_intf/pncconf/pncconf.glade:35248 -#: src/emc/usr_intf/pncconf/pncconf.glade:35268 -#: src/emc/usr_intf/pncconf/pncconf.glade:35288 -#: src/emc/usr_intf/pncconf/pncconf.glade:35308 -#: src/emc/usr_intf/pncconf/pncconf.glade:35328 -#: src/emc/usr_intf/pncconf/pncconf.glade:35348 -#: src/emc/usr_intf/pncconf/pncconf.glade:35368 -#: src/emc/usr_intf/pncconf/pncconf.glade:35388 -#: src/emc/usr_intf/pncconf/pncconf.glade:35408 -#: src/emc/usr_intf/pncconf/pncconf.glade:35428 -#: src/emc/usr_intf/pncconf/pncconf.glade:35448 -#: src/emc/usr_intf/pncconf/pncconf.glade:35468 -#: src/emc/usr_intf/pncconf/pncconf.glade:35488 -#: src/emc/usr_intf/pncconf/pncconf.glade:35508 -#: src/emc/usr_intf/pncconf/pncconf.glade:35528 -#: src/emc/usr_intf/pncconf/pncconf.glade:35548 -#: src/emc/usr_intf/pncconf/pncconf.glade:35568 -#: src/emc/usr_intf/pncconf/pncconf.glade:35588 -#: src/emc/usr_intf/pncconf/pncconf.glade:35608 -#: src/emc/usr_intf/pncconf/pncconf.glade:35628 -#: src/emc/usr_intf/pncconf/pncconf.glade:35648 -#: src/emc/usr_intf/pncconf/pncconf.glade:35839 -#: src/emc/usr_intf/pncconf/pncconf.glade:35859 -#: src/emc/usr_intf/pncconf/pncconf.glade:35879 -#: src/emc/usr_intf/pncconf/pncconf.glade:35899 -#: src/emc/usr_intf/pncconf/pncconf.glade:35919 -#: src/emc/usr_intf/pncconf/pncconf.glade:35939 -#: src/emc/usr_intf/pncconf/pncconf.glade:35959 -#: src/emc/usr_intf/pncconf/pncconf.glade:35979 -#: src/emc/usr_intf/pncconf/pncconf.glade:35999 -#: src/emc/usr_intf/pncconf/pncconf.glade:36019 -#: src/emc/usr_intf/pncconf/pncconf.glade:36039 -#: src/emc/usr_intf/pncconf/pncconf.glade:36059 -#: src/emc/usr_intf/pncconf/pncconf.glade:36079 -#: src/emc/usr_intf/pncconf/pncconf.glade:36099 -#: src/emc/usr_intf/pncconf/pncconf.glade:36119 -#: src/emc/usr_intf/pncconf/pncconf.glade:36139 -#: src/emc/usr_intf/pncconf/pncconf.glade:36159 -#: src/emc/usr_intf/pncconf/pncconf.glade:36179 -#: src/emc/usr_intf/pncconf/pncconf.glade:36199 -#: src/emc/usr_intf/pncconf/pncconf.glade:36219 -#: src/emc/usr_intf/pncconf/pncconf.glade:36239 -#: src/emc/usr_intf/pncconf/pncconf.glade:36259 -#: src/emc/usr_intf/pncconf/pncconf.glade:36279 -#: src/emc/usr_intf/pncconf/pncconf.glade:38208 -#: src/emc/usr_intf/pncconf/pncconf.glade:38549 -#: src/emc/usr_intf/pncconf/pncconf.glade:39779 -#: src/emc/usr_intf/pncconf/pncconf.glade:39799 -#: src/emc/usr_intf/pncconf/pncconf.glade:39819 -#: src/emc/usr_intf/pncconf/pncconf.glade:39839 -#: src/emc/usr_intf/pncconf/pncconf.glade:39859 -#: src/emc/usr_intf/pncconf/pncconf.glade:39879 -#: src/emc/usr_intf/pncconf/pncconf.glade:39899 -#: src/emc/usr_intf/pncconf/pncconf.glade:39919 -#: src/emc/usr_intf/pncconf/pncconf.glade:39939 -#: src/emc/usr_intf/pncconf/pncconf.glade:39959 -#: src/emc/usr_intf/pncconf/pncconf.glade:39979 -#: src/emc/usr_intf/pncconf/pncconf.glade:40199 -#: src/emc/usr_intf/pncconf/pncconf.glade:40219 -#: src/emc/usr_intf/pncconf/pncconf.glade:40239 -#: src/emc/usr_intf/pncconf/pncconf.glade:40259 -#: src/emc/usr_intf/pncconf/pncconf.glade:40279 -#: src/emc/usr_intf/pncconf/pncconf.glade:40299 -#: src/emc/usr_intf/pncconf/pncconf.glade:40319 -#: src/emc/usr_intf/pncconf/pncconf.glade:40339 -#: src/emc/usr_intf/pncconf/pncconf.glade:40359 -#: src/emc/usr_intf/pncconf/pncconf.glade:40379 -#: src/emc/usr_intf/pncconf/pncconf.glade:40399 -#: src/emc/usr_intf/pncconf/pncconf.glade:40419 -#: src/emc/usr_intf/pncconf/pncconf.glade:40439 -#: src/emc/usr_intf/pncconf/pncconf.glade:40459 -#: src/emc/usr_intf/pncconf/pncconf.glade:40479 -#: src/emc/usr_intf/pncconf/pncconf.glade:40499 -#: src/emc/usr_intf/pncconf/pncconf.glade:40519 -#: src/emc/usr_intf/pncconf/pncconf.glade:40539 -#: src/emc/usr_intf/pncconf/pncconf.glade:40559 -#: src/emc/usr_intf/pncconf/pncconf.glade:40579 -#: src/emc/usr_intf/pncconf/pncconf.glade:40599 -#: src/emc/usr_intf/pncconf/pncconf.glade:40619 -#: src/emc/usr_intf/pncconf/pncconf.glade:40639 -#: src/emc/usr_intf/pncconf/pncconf.glade:42555 -#: src/emc/usr_intf/pncconf/pncconf.glade:42778 -#: src/emc/usr_intf/pncconf/pncconf.glade:44707 -#: src/emc/usr_intf/pncconf/pncconf.glade:44727 -#: src/emc/usr_intf/pncconf/pncconf.glade:44747 -#: src/emc/usr_intf/pncconf/pncconf.glade:44767 -#: src/emc/usr_intf/pncconf/pncconf.glade:44787 -#: src/emc/usr_intf/pncconf/pncconf.glade:44807 -#: src/emc/usr_intf/pncconf/pncconf.glade:44827 -#: src/emc/usr_intf/pncconf/pncconf.glade:44847 -#: src/emc/usr_intf/pncconf/pncconf.glade:44867 -#: src/emc/usr_intf/pncconf/pncconf.glade:44887 -#: src/emc/usr_intf/pncconf/pncconf.glade:44907 -#: src/emc/usr_intf/pncconf/pncconf.glade:44927 -#: src/emc/usr_intf/pncconf/pncconf.glade:44947 -#: src/emc/usr_intf/pncconf/pncconf.glade:44967 -#: src/emc/usr_intf/pncconf/pncconf.glade:44987 -#: src/emc/usr_intf/pncconf/pncconf.glade:45007 -#: src/emc/usr_intf/pncconf/pncconf.glade:45027 -#: src/emc/usr_intf/pncconf/pncconf.glade:45047 -#: src/emc/usr_intf/pncconf/pncconf.glade:45067 -#: src/emc/usr_intf/pncconf/pncconf.glade:45087 -#: src/emc/usr_intf/pncconf/pncconf.glade:45107 -#: src/emc/usr_intf/pncconf/pncconf.glade:45127 -#: src/emc/usr_intf/pncconf/pncconf.glade:45147 -#: src/emc/usr_intf/pncconf/pncconf.glade:45456 -#: src/emc/usr_intf/pncconf/pncconf.glade:45476 -#: src/emc/usr_intf/pncconf/pncconf.glade:45496 -#: src/emc/usr_intf/pncconf/pncconf.glade:45516 -#: src/emc/usr_intf/pncconf/pncconf.glade:45536 -#: src/emc/usr_intf/pncconf/pncconf.glade:45556 -#: src/emc/usr_intf/pncconf/pncconf.glade:45576 -#: src/emc/usr_intf/pncconf/pncconf.glade:45596 -#: src/emc/usr_intf/pncconf/pncconf.glade:45616 -#: src/emc/usr_intf/pncconf/pncconf.glade:45636 -#: src/emc/usr_intf/pncconf/pncconf.glade:45656 -#: src/emc/usr_intf/pncconf/pncconf.glade:46886 -#: src/emc/usr_intf/pncconf/pncconf.glade:47122 -#: src/emc/usr_intf/pncconf/pncconf.glade:47142 -#: src/emc/usr_intf/pncconf/pncconf.glade:47162 -#: src/emc/usr_intf/pncconf/pncconf.glade:47182 -#: src/emc/usr_intf/pncconf/pncconf.glade:47202 -#: src/emc/usr_intf/pncconf/pncconf.glade:47222 -#: src/emc/usr_intf/pncconf/pncconf.glade:47242 -#: src/emc/usr_intf/pncconf/pncconf.glade:47262 -#: src/emc/usr_intf/pncconf/pncconf.glade:47282 -#: src/emc/usr_intf/pncconf/pncconf.glade:47302 -#: src/emc/usr_intf/pncconf/pncconf.glade:47322 -#: src/emc/usr_intf/pncconf/pncconf.glade:47342 -#: src/emc/usr_intf/pncconf/pncconf.glade:47362 -#: src/emc/usr_intf/pncconf/pncconf.glade:47382 -#: src/emc/usr_intf/pncconf/pncconf.glade:47402 -#: src/emc/usr_intf/pncconf/pncconf.glade:47422 -#: src/emc/usr_intf/pncconf/pncconf.glade:47442 -#: src/emc/usr_intf/pncconf/pncconf.glade:47462 -#: src/emc/usr_intf/pncconf/pncconf.glade:47482 -#: src/emc/usr_intf/pncconf/pncconf.glade:47502 -#: src/emc/usr_intf/pncconf/pncconf.glade:47522 -#: src/emc/usr_intf/pncconf/pncconf.glade:47542 -#: src/emc/usr_intf/pncconf/pncconf.glade:47562 -#: src/emc/usr_intf/pncconf/pncconf.glade:49478 -#: src/emc/usr_intf/pncconf/pncconf.glade:49701 -#: src/emc/usr_intf/pncconf/pncconf.glade:51630 -#: src/emc/usr_intf/pncconf/pncconf.glade:51650 -#: src/emc/usr_intf/pncconf/pncconf.glade:51670 -#: src/emc/usr_intf/pncconf/pncconf.glade:51690 -#: src/emc/usr_intf/pncconf/pncconf.glade:51710 -#: src/emc/usr_intf/pncconf/pncconf.glade:51730 -#: src/emc/usr_intf/pncconf/pncconf.glade:51750 -#: src/emc/usr_intf/pncconf/pncconf.glade:51770 -#: src/emc/usr_intf/pncconf/pncconf.glade:51790 -#: src/emc/usr_intf/pncconf/pncconf.glade:51810 -#: src/emc/usr_intf/pncconf/pncconf.glade:51830 -#: src/emc/usr_intf/pncconf/pncconf.glade:51850 -#: src/emc/usr_intf/pncconf/pncconf.glade:51870 -#: src/emc/usr_intf/pncconf/pncconf.glade:51890 -#: src/emc/usr_intf/pncconf/pncconf.glade:51910 -#: src/emc/usr_intf/pncconf/pncconf.glade:51930 -#: src/emc/usr_intf/pncconf/pncconf.glade:51950 -#: src/emc/usr_intf/pncconf/pncconf.glade:51970 -#: src/emc/usr_intf/pncconf/pncconf.glade:51990 -#: src/emc/usr_intf/pncconf/pncconf.glade:52010 -#: src/emc/usr_intf/pncconf/pncconf.glade:52030 -#: src/emc/usr_intf/pncconf/pncconf.glade:52050 -#: src/emc/usr_intf/pncconf/pncconf.glade:52070 -#: src/emc/usr_intf/pncconf/pncconf.glade:52379 -#: src/emc/usr_intf/pncconf/pncconf.glade:52399 -#: src/emc/usr_intf/pncconf/pncconf.glade:52419 -#: src/emc/usr_intf/pncconf/pncconf.glade:52439 -#: src/emc/usr_intf/pncconf/pncconf.glade:52459 -#: src/emc/usr_intf/pncconf/pncconf.glade:52479 -#: src/emc/usr_intf/pncconf/pncconf.glade:52499 -#: src/emc/usr_intf/pncconf/pncconf.glade:52519 -#: src/emc/usr_intf/pncconf/pncconf.glade:52539 -#: src/emc/usr_intf/pncconf/pncconf.glade:52559 -#: src/emc/usr_intf/pncconf/pncconf.glade:52579 -#: src/emc/usr_intf/pncconf/pncconf.glade:53809 -#: emc/usr_intf/pncconf/pncconf.glade:8723 -#: emc/usr_intf/pncconf/pncconf.glade:8743 -#: emc/usr_intf/pncconf/pncconf.glade:8763 -#: emc/usr_intf/pncconf/pncconf.glade:8783 -#: emc/usr_intf/pncconf/pncconf.glade:8803 -#: emc/usr_intf/pncconf/pncconf.glade:8823 -#: emc/usr_intf/pncconf/pncconf.glade:8843 -#: emc/usr_intf/pncconf/pncconf.glade:8863 -#: emc/usr_intf/pncconf/pncconf.glade:8883 -#: emc/usr_intf/pncconf/pncconf.glade:8903 -#: emc/usr_intf/pncconf/pncconf.glade:8923 -#: emc/usr_intf/pncconf/pncconf.glade:8943 -#: emc/usr_intf/pncconf/pncconf.glade:8963 -#: emc/usr_intf/pncconf/pncconf.glade:8983 -#: emc/usr_intf/pncconf/pncconf.glade:9003 -#: emc/usr_intf/pncconf/pncconf.glade:9023 -#: emc/usr_intf/pncconf/pncconf.glade:9043 -#: emc/usr_intf/pncconf/pncconf.glade:9063 -#: emc/usr_intf/pncconf/pncconf.glade:9083 -#: emc/usr_intf/pncconf/pncconf.glade:9103 -#: emc/usr_intf/pncconf/pncconf.glade:9123 -#: emc/usr_intf/pncconf/pncconf.glade:9143 -#: emc/usr_intf/pncconf/pncconf.glade:9163 -#: emc/usr_intf/pncconf/pncconf.glade:11027 -#: emc/usr_intf/pncconf/pncconf.glade:11353 -#: emc/usr_intf/pncconf/pncconf.glade:13216 -#: emc/usr_intf/pncconf/pncconf.glade:13236 -#: emc/usr_intf/pncconf/pncconf.glade:13256 -#: emc/usr_intf/pncconf/pncconf.glade:13276 -#: emc/usr_intf/pncconf/pncconf.glade:13296 -#: emc/usr_intf/pncconf/pncconf.glade:13316 -#: emc/usr_intf/pncconf/pncconf.glade:13336 -#: emc/usr_intf/pncconf/pncconf.glade:13356 -#: emc/usr_intf/pncconf/pncconf.glade:13376 -#: emc/usr_intf/pncconf/pncconf.glade:13396 -#: emc/usr_intf/pncconf/pncconf.glade:13416 -#: emc/usr_intf/pncconf/pncconf.glade:13436 -#: emc/usr_intf/pncconf/pncconf.glade:13456 -#: emc/usr_intf/pncconf/pncconf.glade:13476 -#: emc/usr_intf/pncconf/pncconf.glade:13496 -#: emc/usr_intf/pncconf/pncconf.glade:13516 -#: emc/usr_intf/pncconf/pncconf.glade:13536 -#: emc/usr_intf/pncconf/pncconf.glade:13556 -#: emc/usr_intf/pncconf/pncconf.glade:13576 -#: emc/usr_intf/pncconf/pncconf.glade:13596 -#: emc/usr_intf/pncconf/pncconf.glade:13616 -#: emc/usr_intf/pncconf/pncconf.glade:13636 -#: emc/usr_intf/pncconf/pncconf.glade:13656 -#: emc/usr_intf/pncconf/pncconf.glade:13966 -#: emc/usr_intf/pncconf/pncconf.glade:15912 -#: emc/usr_intf/pncconf/pncconf.glade:15932 -#: emc/usr_intf/pncconf/pncconf.glade:15952 -#: emc/usr_intf/pncconf/pncconf.glade:15972 -#: emc/usr_intf/pncconf/pncconf.glade:15992 -#: emc/usr_intf/pncconf/pncconf.glade:16012 -#: emc/usr_intf/pncconf/pncconf.glade:16032 -#: emc/usr_intf/pncconf/pncconf.glade:16052 -#: emc/usr_intf/pncconf/pncconf.glade:16072 -#: emc/usr_intf/pncconf/pncconf.glade:16092 -#: emc/usr_intf/pncconf/pncconf.glade:16112 -#: emc/usr_intf/pncconf/pncconf.glade:16132 -#: emc/usr_intf/pncconf/pncconf.glade:16152 -#: emc/usr_intf/pncconf/pncconf.glade:16172 -#: emc/usr_intf/pncconf/pncconf.glade:16192 -#: emc/usr_intf/pncconf/pncconf.glade:16212 -#: emc/usr_intf/pncconf/pncconf.glade:16232 -#: emc/usr_intf/pncconf/pncconf.glade:16252 -#: emc/usr_intf/pncconf/pncconf.glade:16272 -#: emc/usr_intf/pncconf/pncconf.glade:16292 -#: emc/usr_intf/pncconf/pncconf.glade:16312 -#: emc/usr_intf/pncconf/pncconf.glade:16332 -#: emc/usr_intf/pncconf/pncconf.glade:16352 -#: emc/usr_intf/pncconf/pncconf.glade:16558 -#: emc/usr_intf/pncconf/pncconf.glade:18422 -#: emc/usr_intf/pncconf/pncconf.glade:18442 -#: emc/usr_intf/pncconf/pncconf.glade:18462 -#: emc/usr_intf/pncconf/pncconf.glade:18482 -#: emc/usr_intf/pncconf/pncconf.glade:18502 -#: emc/usr_intf/pncconf/pncconf.glade:18522 -#: emc/usr_intf/pncconf/pncconf.glade:18542 -#: emc/usr_intf/pncconf/pncconf.glade:18562 -#: emc/usr_intf/pncconf/pncconf.glade:18582 -#: emc/usr_intf/pncconf/pncconf.glade:18602 -#: emc/usr_intf/pncconf/pncconf.glade:18622 -#: emc/usr_intf/pncconf/pncconf.glade:18642 -#: emc/usr_intf/pncconf/pncconf.glade:18662 -#: emc/usr_intf/pncconf/pncconf.glade:18682 -#: emc/usr_intf/pncconf/pncconf.glade:18702 -#: emc/usr_intf/pncconf/pncconf.glade:18722 -#: emc/usr_intf/pncconf/pncconf.glade:18742 -#: emc/usr_intf/pncconf/pncconf.glade:18762 -#: emc/usr_intf/pncconf/pncconf.glade:18782 -#: emc/usr_intf/pncconf/pncconf.glade:18802 -#: emc/usr_intf/pncconf/pncconf.glade:18822 -#: emc/usr_intf/pncconf/pncconf.glade:18842 -#: emc/usr_intf/pncconf/pncconf.glade:18862 -#: emc/usr_intf/pncconf/pncconf.glade:26355 -#: emc/usr_intf/pncconf/pncconf.glade:26375 -#: emc/usr_intf/pncconf/pncconf.glade:26395 -#: emc/usr_intf/pncconf/pncconf.glade:26415 -#: emc/usr_intf/pncconf/pncconf.glade:26435 -#: emc/usr_intf/pncconf/pncconf.glade:26455 -#: emc/usr_intf/pncconf/pncconf.glade:26475 -#: emc/usr_intf/pncconf/pncconf.glade:26495 -#: emc/usr_intf/pncconf/pncconf.glade:26515 -#: emc/usr_intf/pncconf/pncconf.glade:26535 -#: emc/usr_intf/pncconf/pncconf.glade:26555 -#: emc/usr_intf/pncconf/pncconf.glade:26575 -#: emc/usr_intf/pncconf/pncconf.glade:26595 -#: emc/usr_intf/pncconf/pncconf.glade:26615 -#: emc/usr_intf/pncconf/pncconf.glade:26635 -#: emc/usr_intf/pncconf/pncconf.glade:26655 -#: emc/usr_intf/pncconf/pncconf.glade:26675 -#: emc/usr_intf/pncconf/pncconf.glade:26695 -#: emc/usr_intf/pncconf/pncconf.glade:26715 -#: emc/usr_intf/pncconf/pncconf.glade:26735 -#: emc/usr_intf/pncconf/pncconf.glade:26755 -#: emc/usr_intf/pncconf/pncconf.glade:26775 -#: emc/usr_intf/pncconf/pncconf.glade:26795 -#: emc/usr_intf/pncconf/pncconf.glade:28711 -#: emc/usr_intf/pncconf/pncconf.glade:28934 -#: emc/usr_intf/pncconf/pncconf.glade:30863 -#: emc/usr_intf/pncconf/pncconf.glade:30883 -#: emc/usr_intf/pncconf/pncconf.glade:30903 -#: emc/usr_intf/pncconf/pncconf.glade:30923 -#: emc/usr_intf/pncconf/pncconf.glade:30943 -#: emc/usr_intf/pncconf/pncconf.glade:30963 -#: emc/usr_intf/pncconf/pncconf.glade:30983 -#: emc/usr_intf/pncconf/pncconf.glade:31003 -#: emc/usr_intf/pncconf/pncconf.glade:31023 -#: emc/usr_intf/pncconf/pncconf.glade:31043 -#: emc/usr_intf/pncconf/pncconf.glade:31063 -#: emc/usr_intf/pncconf/pncconf.glade:31083 -#: emc/usr_intf/pncconf/pncconf.glade:31103 -#: emc/usr_intf/pncconf/pncconf.glade:31123 -#: emc/usr_intf/pncconf/pncconf.glade:31143 -#: emc/usr_intf/pncconf/pncconf.glade:31163 -#: emc/usr_intf/pncconf/pncconf.glade:31183 -#: emc/usr_intf/pncconf/pncconf.glade:31203 -#: emc/usr_intf/pncconf/pncconf.glade:31223 -#: emc/usr_intf/pncconf/pncconf.glade:31243 -#: emc/usr_intf/pncconf/pncconf.glade:31263 -#: emc/usr_intf/pncconf/pncconf.glade:31283 -#: emc/usr_intf/pncconf/pncconf.glade:31303 -#: emc/usr_intf/pncconf/pncconf.glade:31611 -#: emc/usr_intf/pncconf/pncconf.glade:31631 -#: emc/usr_intf/pncconf/pncconf.glade:31651 -#: emc/usr_intf/pncconf/pncconf.glade:31671 -#: emc/usr_intf/pncconf/pncconf.glade:31691 -#: emc/usr_intf/pncconf/pncconf.glade:31711 -#: emc/usr_intf/pncconf/pncconf.glade:31731 -#: emc/usr_intf/pncconf/pncconf.glade:31751 -#: emc/usr_intf/pncconf/pncconf.glade:31771 -#: emc/usr_intf/pncconf/pncconf.glade:31791 -#: emc/usr_intf/pncconf/pncconf.glade:31811 -#: emc/usr_intf/pncconf/pncconf.glade:33029 -#: emc/usr_intf/pncconf/pncconf.glade:33292 -#: emc/usr_intf/pncconf/pncconf.glade:35208 -#: emc/usr_intf/pncconf/pncconf.glade:35228 -#: emc/usr_intf/pncconf/pncconf.glade:35248 -#: emc/usr_intf/pncconf/pncconf.glade:35268 -#: emc/usr_intf/pncconf/pncconf.glade:35288 -#: emc/usr_intf/pncconf/pncconf.glade:35308 -#: emc/usr_intf/pncconf/pncconf.glade:35328 -#: emc/usr_intf/pncconf/pncconf.glade:35348 -#: emc/usr_intf/pncconf/pncconf.glade:35368 -#: emc/usr_intf/pncconf/pncconf.glade:35388 -#: emc/usr_intf/pncconf/pncconf.glade:35408 -#: emc/usr_intf/pncconf/pncconf.glade:35428 -#: emc/usr_intf/pncconf/pncconf.glade:35448 -#: emc/usr_intf/pncconf/pncconf.glade:35468 -#: emc/usr_intf/pncconf/pncconf.glade:35488 -#: emc/usr_intf/pncconf/pncconf.glade:35508 -#: emc/usr_intf/pncconf/pncconf.glade:35528 -#: emc/usr_intf/pncconf/pncconf.glade:35548 -#: emc/usr_intf/pncconf/pncconf.glade:35568 -#: emc/usr_intf/pncconf/pncconf.glade:35588 -#: emc/usr_intf/pncconf/pncconf.glade:35608 -#: emc/usr_intf/pncconf/pncconf.glade:35628 -#: emc/usr_intf/pncconf/pncconf.glade:35648 -#: emc/usr_intf/pncconf/pncconf.glade:35839 -#: emc/usr_intf/pncconf/pncconf.glade:35859 -#: emc/usr_intf/pncconf/pncconf.glade:35879 -#: emc/usr_intf/pncconf/pncconf.glade:35899 -#: emc/usr_intf/pncconf/pncconf.glade:35919 -#: emc/usr_intf/pncconf/pncconf.glade:35939 -#: emc/usr_intf/pncconf/pncconf.glade:35959 -#: emc/usr_intf/pncconf/pncconf.glade:35979 -#: emc/usr_intf/pncconf/pncconf.glade:35999 -#: emc/usr_intf/pncconf/pncconf.glade:36019 -#: emc/usr_intf/pncconf/pncconf.glade:36039 -#: emc/usr_intf/pncconf/pncconf.glade:36059 -#: emc/usr_intf/pncconf/pncconf.glade:36079 -#: emc/usr_intf/pncconf/pncconf.glade:36099 -#: emc/usr_intf/pncconf/pncconf.glade:36119 -#: emc/usr_intf/pncconf/pncconf.glade:36139 -#: emc/usr_intf/pncconf/pncconf.glade:36159 -#: emc/usr_intf/pncconf/pncconf.glade:36179 -#: emc/usr_intf/pncconf/pncconf.glade:36199 -#: emc/usr_intf/pncconf/pncconf.glade:36219 -#: emc/usr_intf/pncconf/pncconf.glade:36239 -#: emc/usr_intf/pncconf/pncconf.glade:36259 -#: emc/usr_intf/pncconf/pncconf.glade:36279 -#: emc/usr_intf/pncconf/pncconf.glade:38208 -#: emc/usr_intf/pncconf/pncconf.glade:38549 -#: emc/usr_intf/pncconf/pncconf.glade:39779 -#: emc/usr_intf/pncconf/pncconf.glade:39799 -#: emc/usr_intf/pncconf/pncconf.glade:39819 -#: emc/usr_intf/pncconf/pncconf.glade:39839 -#: emc/usr_intf/pncconf/pncconf.glade:39859 -#: emc/usr_intf/pncconf/pncconf.glade:39879 -#: emc/usr_intf/pncconf/pncconf.glade:39899 -#: emc/usr_intf/pncconf/pncconf.glade:39919 -#: emc/usr_intf/pncconf/pncconf.glade:39939 -#: emc/usr_intf/pncconf/pncconf.glade:39959 -#: emc/usr_intf/pncconf/pncconf.glade:39979 -#: emc/usr_intf/pncconf/pncconf.glade:40199 -#: emc/usr_intf/pncconf/pncconf.glade:40219 -#: emc/usr_intf/pncconf/pncconf.glade:40239 -#: emc/usr_intf/pncconf/pncconf.glade:40259 -#: emc/usr_intf/pncconf/pncconf.glade:40279 -#: emc/usr_intf/pncconf/pncconf.glade:40299 -#: emc/usr_intf/pncconf/pncconf.glade:40319 -#: emc/usr_intf/pncconf/pncconf.glade:40339 -#: emc/usr_intf/pncconf/pncconf.glade:40359 -#: emc/usr_intf/pncconf/pncconf.glade:40379 -#: emc/usr_intf/pncconf/pncconf.glade:40399 -#: emc/usr_intf/pncconf/pncconf.glade:40419 -#: emc/usr_intf/pncconf/pncconf.glade:40439 -#: emc/usr_intf/pncconf/pncconf.glade:40459 -#: emc/usr_intf/pncconf/pncconf.glade:40479 -#: emc/usr_intf/pncconf/pncconf.glade:40499 -#: emc/usr_intf/pncconf/pncconf.glade:40519 -#: emc/usr_intf/pncconf/pncconf.glade:40539 -#: emc/usr_intf/pncconf/pncconf.glade:40559 -#: emc/usr_intf/pncconf/pncconf.glade:40579 -#: emc/usr_intf/pncconf/pncconf.glade:40599 -#: emc/usr_intf/pncconf/pncconf.glade:40619 -#: emc/usr_intf/pncconf/pncconf.glade:40639 -#: emc/usr_intf/pncconf/pncconf.glade:42555 -#: emc/usr_intf/pncconf/pncconf.glade:42778 -#: emc/usr_intf/pncconf/pncconf.glade:44707 -#: emc/usr_intf/pncconf/pncconf.glade:44727 -#: emc/usr_intf/pncconf/pncconf.glade:44747 -#: emc/usr_intf/pncconf/pncconf.glade:44767 -#: emc/usr_intf/pncconf/pncconf.glade:44787 -#: emc/usr_intf/pncconf/pncconf.glade:44807 -#: emc/usr_intf/pncconf/pncconf.glade:44827 -#: emc/usr_intf/pncconf/pncconf.glade:44847 -#: emc/usr_intf/pncconf/pncconf.glade:44867 -#: emc/usr_intf/pncconf/pncconf.glade:44887 -#: emc/usr_intf/pncconf/pncconf.glade:44907 -#: emc/usr_intf/pncconf/pncconf.glade:44927 -#: emc/usr_intf/pncconf/pncconf.glade:44947 -#: emc/usr_intf/pncconf/pncconf.glade:44967 -#: emc/usr_intf/pncconf/pncconf.glade:44987 -#: emc/usr_intf/pncconf/pncconf.glade:45007 -#: emc/usr_intf/pncconf/pncconf.glade:45027 -#: emc/usr_intf/pncconf/pncconf.glade:45047 -#: emc/usr_intf/pncconf/pncconf.glade:45067 -#: emc/usr_intf/pncconf/pncconf.glade:45087 -#: emc/usr_intf/pncconf/pncconf.glade:45107 -#: emc/usr_intf/pncconf/pncconf.glade:45127 -#: emc/usr_intf/pncconf/pncconf.glade:45147 -#: emc/usr_intf/pncconf/pncconf.glade:45456 -#: emc/usr_intf/pncconf/pncconf.glade:45476 -#: emc/usr_intf/pncconf/pncconf.glade:45496 -#: emc/usr_intf/pncconf/pncconf.glade:45516 -#: emc/usr_intf/pncconf/pncconf.glade:45536 -#: emc/usr_intf/pncconf/pncconf.glade:45556 -#: emc/usr_intf/pncconf/pncconf.glade:45576 -#: emc/usr_intf/pncconf/pncconf.glade:45596 -#: emc/usr_intf/pncconf/pncconf.glade:45616 -#: emc/usr_intf/pncconf/pncconf.glade:45636 -#: emc/usr_intf/pncconf/pncconf.glade:45656 -#: emc/usr_intf/pncconf/pncconf.glade:46886 -#: emc/usr_intf/pncconf/pncconf.glade:47122 -#: emc/usr_intf/pncconf/pncconf.glade:47142 -#: emc/usr_intf/pncconf/pncconf.glade:47162 -#: emc/usr_intf/pncconf/pncconf.glade:47182 -#: emc/usr_intf/pncconf/pncconf.glade:47202 -#: emc/usr_intf/pncconf/pncconf.glade:47222 -#: emc/usr_intf/pncconf/pncconf.glade:47242 -#: emc/usr_intf/pncconf/pncconf.glade:47262 -#: emc/usr_intf/pncconf/pncconf.glade:47282 -#: emc/usr_intf/pncconf/pncconf.glade:47302 -#: emc/usr_intf/pncconf/pncconf.glade:47322 -#: emc/usr_intf/pncconf/pncconf.glade:47342 -#: emc/usr_intf/pncconf/pncconf.glade:47362 -#: emc/usr_intf/pncconf/pncconf.glade:47382 -#: emc/usr_intf/pncconf/pncconf.glade:47402 -#: emc/usr_intf/pncconf/pncconf.glade:47422 -#: emc/usr_intf/pncconf/pncconf.glade:47442 -#: emc/usr_intf/pncconf/pncconf.glade:47462 -#: emc/usr_intf/pncconf/pncconf.glade:47482 -#: emc/usr_intf/pncconf/pncconf.glade:47502 -#: emc/usr_intf/pncconf/pncconf.glade:47522 -#: emc/usr_intf/pncconf/pncconf.glade:47542 -#: emc/usr_intf/pncconf/pncconf.glade:47562 -#: emc/usr_intf/pncconf/pncconf.glade:49478 -#: emc/usr_intf/pncconf/pncconf.glade:49701 -#: emc/usr_intf/pncconf/pncconf.glade:51630 -#: emc/usr_intf/pncconf/pncconf.glade:51650 -#: emc/usr_intf/pncconf/pncconf.glade:51670 -#: emc/usr_intf/pncconf/pncconf.glade:51690 -#: emc/usr_intf/pncconf/pncconf.glade:51710 -#: emc/usr_intf/pncconf/pncconf.glade:51730 -#: emc/usr_intf/pncconf/pncconf.glade:51750 -#: emc/usr_intf/pncconf/pncconf.glade:51770 -#: emc/usr_intf/pncconf/pncconf.glade:51790 -#: emc/usr_intf/pncconf/pncconf.glade:51810 -#: emc/usr_intf/pncconf/pncconf.glade:51830 -#: emc/usr_intf/pncconf/pncconf.glade:51850 -#: emc/usr_intf/pncconf/pncconf.glade:51870 -#: emc/usr_intf/pncconf/pncconf.glade:51890 -#: emc/usr_intf/pncconf/pncconf.glade:51910 -#: emc/usr_intf/pncconf/pncconf.glade:51930 -#: emc/usr_intf/pncconf/pncconf.glade:51950 -#: emc/usr_intf/pncconf/pncconf.glade:51970 -#: emc/usr_intf/pncconf/pncconf.glade:51990 -#: emc/usr_intf/pncconf/pncconf.glade:52010 -#: emc/usr_intf/pncconf/pncconf.glade:52030 -#: emc/usr_intf/pncconf/pncconf.glade:52050 -#: emc/usr_intf/pncconf/pncconf.glade:52070 -#: emc/usr_intf/pncconf/pncconf.glade:52379 -#: emc/usr_intf/pncconf/pncconf.glade:52399 -#: emc/usr_intf/pncconf/pncconf.glade:52419 -#: emc/usr_intf/pncconf/pncconf.glade:52439 -#: emc/usr_intf/pncconf/pncconf.glade:52459 -#: emc/usr_intf/pncconf/pncconf.glade:52479 -#: emc/usr_intf/pncconf/pncconf.glade:52499 -#: emc/usr_intf/pncconf/pncconf.glade:52519 -#: emc/usr_intf/pncconf/pncconf.glade:52539 -#: emc/usr_intf/pncconf/pncconf.glade:52559 -#: emc/usr_intf/pncconf/pncconf.glade:52579 -#: emc/usr_intf/pncconf/pncconf.glade:53809 -#: src/emc/usr_intf/pncconf/pncconf.glade:8747 -#: src/emc/usr_intf/pncconf/pncconf.glade:8767 -#: src/emc/usr_intf/pncconf/pncconf.glade:8787 -#: src/emc/usr_intf/pncconf/pncconf.glade:8807 -#: src/emc/usr_intf/pncconf/pncconf.glade:8827 -#: src/emc/usr_intf/pncconf/pncconf.glade:8847 -#: src/emc/usr_intf/pncconf/pncconf.glade:8867 -#: src/emc/usr_intf/pncconf/pncconf.glade:8887 -#: src/emc/usr_intf/pncconf/pncconf.glade:8907 -#: src/emc/usr_intf/pncconf/pncconf.glade:8927 -#: src/emc/usr_intf/pncconf/pncconf.glade:8947 -#: src/emc/usr_intf/pncconf/pncconf.glade:8967 -#: src/emc/usr_intf/pncconf/pncconf.glade:8987 -#: src/emc/usr_intf/pncconf/pncconf.glade:9007 -#: src/emc/usr_intf/pncconf/pncconf.glade:9027 -#: src/emc/usr_intf/pncconf/pncconf.glade:9047 -#: src/emc/usr_intf/pncconf/pncconf.glade:9067 -#: src/emc/usr_intf/pncconf/pncconf.glade:9087 -#: src/emc/usr_intf/pncconf/pncconf.glade:9107 -#: src/emc/usr_intf/pncconf/pncconf.glade:9127 -#: src/emc/usr_intf/pncconf/pncconf.glade:9147 -#: src/emc/usr_intf/pncconf/pncconf.glade:9167 -#: src/emc/usr_intf/pncconf/pncconf.glade:9187 -#: src/emc/usr_intf/pncconf/pncconf.glade:11051 -#: src/emc/usr_intf/pncconf/pncconf.glade:11377 -#: src/emc/usr_intf/pncconf/pncconf.glade:13240 -#: src/emc/usr_intf/pncconf/pncconf.glade:13260 -#: src/emc/usr_intf/pncconf/pncconf.glade:13280 -#: src/emc/usr_intf/pncconf/pncconf.glade:13300 -#: src/emc/usr_intf/pncconf/pncconf.glade:13320 -#: src/emc/usr_intf/pncconf/pncconf.glade:13340 -#: src/emc/usr_intf/pncconf/pncconf.glade:13360 -#: src/emc/usr_intf/pncconf/pncconf.glade:13380 -#: src/emc/usr_intf/pncconf/pncconf.glade:13400 -#: src/emc/usr_intf/pncconf/pncconf.glade:13420 -#: src/emc/usr_intf/pncconf/pncconf.glade:13440 -#: src/emc/usr_intf/pncconf/pncconf.glade:13460 -#: src/emc/usr_intf/pncconf/pncconf.glade:13480 -#: src/emc/usr_intf/pncconf/pncconf.glade:13500 -#: src/emc/usr_intf/pncconf/pncconf.glade:13520 -#: src/emc/usr_intf/pncconf/pncconf.glade:13540 -#: src/emc/usr_intf/pncconf/pncconf.glade:13560 -#: src/emc/usr_intf/pncconf/pncconf.glade:13580 -#: src/emc/usr_intf/pncconf/pncconf.glade:13600 -#: src/emc/usr_intf/pncconf/pncconf.glade:13620 -#: src/emc/usr_intf/pncconf/pncconf.glade:13640 -#: src/emc/usr_intf/pncconf/pncconf.glade:13660 -#: src/emc/usr_intf/pncconf/pncconf.glade:13680 -#: src/emc/usr_intf/pncconf/pncconf.glade:13990 -#: src/emc/usr_intf/pncconf/pncconf.glade:15936 -#: src/emc/usr_intf/pncconf/pncconf.glade:15956 -#: src/emc/usr_intf/pncconf/pncconf.glade:15976 -#: src/emc/usr_intf/pncconf/pncconf.glade:15996 -#: src/emc/usr_intf/pncconf/pncconf.glade:16016 -#: src/emc/usr_intf/pncconf/pncconf.glade:16036 -#: src/emc/usr_intf/pncconf/pncconf.glade:16056 -#: src/emc/usr_intf/pncconf/pncconf.glade:16076 -#: src/emc/usr_intf/pncconf/pncconf.glade:16096 -#: src/emc/usr_intf/pncconf/pncconf.glade:16116 -#: src/emc/usr_intf/pncconf/pncconf.glade:16136 -#: src/emc/usr_intf/pncconf/pncconf.glade:16156 -#: src/emc/usr_intf/pncconf/pncconf.glade:16176 -#: src/emc/usr_intf/pncconf/pncconf.glade:16196 -#: src/emc/usr_intf/pncconf/pncconf.glade:16216 -#: src/emc/usr_intf/pncconf/pncconf.glade:16236 -#: src/emc/usr_intf/pncconf/pncconf.glade:16256 -#: src/emc/usr_intf/pncconf/pncconf.glade:16276 -#: src/emc/usr_intf/pncconf/pncconf.glade:16296 -#: src/emc/usr_intf/pncconf/pncconf.glade:16316 -#: src/emc/usr_intf/pncconf/pncconf.glade:16336 -#: src/emc/usr_intf/pncconf/pncconf.glade:16356 -#: src/emc/usr_intf/pncconf/pncconf.glade:16376 -#: src/emc/usr_intf/pncconf/pncconf.glade:16582 -#: src/emc/usr_intf/pncconf/pncconf.glade:18446 -#: src/emc/usr_intf/pncconf/pncconf.glade:18466 -#: src/emc/usr_intf/pncconf/pncconf.glade:18486 -#: src/emc/usr_intf/pncconf/pncconf.glade:18506 -#: src/emc/usr_intf/pncconf/pncconf.glade:18526 -#: src/emc/usr_intf/pncconf/pncconf.glade:18546 -#: src/emc/usr_intf/pncconf/pncconf.glade:18566 -#: src/emc/usr_intf/pncconf/pncconf.glade:18586 -#: src/emc/usr_intf/pncconf/pncconf.glade:18606 -#: src/emc/usr_intf/pncconf/pncconf.glade:18626 -#: src/emc/usr_intf/pncconf/pncconf.glade:18646 -#: src/emc/usr_intf/pncconf/pncconf.glade:18666 -#: src/emc/usr_intf/pncconf/pncconf.glade:18686 -#: src/emc/usr_intf/pncconf/pncconf.glade:18706 -#: src/emc/usr_intf/pncconf/pncconf.glade:18726 -#: src/emc/usr_intf/pncconf/pncconf.glade:18746 -#: src/emc/usr_intf/pncconf/pncconf.glade:18766 -#: src/emc/usr_intf/pncconf/pncconf.glade:18786 -#: src/emc/usr_intf/pncconf/pncconf.glade:18806 -#: src/emc/usr_intf/pncconf/pncconf.glade:18826 -#: src/emc/usr_intf/pncconf/pncconf.glade:18846 -#: src/emc/usr_intf/pncconf/pncconf.glade:18866 -#: src/emc/usr_intf/pncconf/pncconf.glade:18886 -#: src/emc/usr_intf/pncconf/pncconf.glade:26379 -#: src/emc/usr_intf/pncconf/pncconf.glade:26399 -#: src/emc/usr_intf/pncconf/pncconf.glade:26419 -#: src/emc/usr_intf/pncconf/pncconf.glade:26439 -#: src/emc/usr_intf/pncconf/pncconf.glade:26459 -#: src/emc/usr_intf/pncconf/pncconf.glade:26479 -#: src/emc/usr_intf/pncconf/pncconf.glade:26499 -#: src/emc/usr_intf/pncconf/pncconf.glade:26519 -#: src/emc/usr_intf/pncconf/pncconf.glade:26539 -#: src/emc/usr_intf/pncconf/pncconf.glade:26559 -#: src/emc/usr_intf/pncconf/pncconf.glade:26579 -#: src/emc/usr_intf/pncconf/pncconf.glade:26599 -#: src/emc/usr_intf/pncconf/pncconf.glade:26619 -#: src/emc/usr_intf/pncconf/pncconf.glade:26639 -#: src/emc/usr_intf/pncconf/pncconf.glade:26659 -#: src/emc/usr_intf/pncconf/pncconf.glade:26679 -#: src/emc/usr_intf/pncconf/pncconf.glade:26699 -#: src/emc/usr_intf/pncconf/pncconf.glade:26719 -#: src/emc/usr_intf/pncconf/pncconf.glade:26739 -#: src/emc/usr_intf/pncconf/pncconf.glade:26759 -#: src/emc/usr_intf/pncconf/pncconf.glade:26779 -#: src/emc/usr_intf/pncconf/pncconf.glade:26799 -#: src/emc/usr_intf/pncconf/pncconf.glade:26819 -#: src/emc/usr_intf/pncconf/pncconf.glade:28735 -#: src/emc/usr_intf/pncconf/pncconf.glade:28958 -#: src/emc/usr_intf/pncconf/pncconf.glade:30887 -#: src/emc/usr_intf/pncconf/pncconf.glade:30907 -#: src/emc/usr_intf/pncconf/pncconf.glade:30927 -#: src/emc/usr_intf/pncconf/pncconf.glade:30947 -#: src/emc/usr_intf/pncconf/pncconf.glade:30967 -#: src/emc/usr_intf/pncconf/pncconf.glade:30987 -#: src/emc/usr_intf/pncconf/pncconf.glade:31007 -#: src/emc/usr_intf/pncconf/pncconf.glade:31027 -#: src/emc/usr_intf/pncconf/pncconf.glade:31047 -#: src/emc/usr_intf/pncconf/pncconf.glade:31067 -#: src/emc/usr_intf/pncconf/pncconf.glade:31087 -#: src/emc/usr_intf/pncconf/pncconf.glade:31107 -#: src/emc/usr_intf/pncconf/pncconf.glade:31127 -#: src/emc/usr_intf/pncconf/pncconf.glade:31147 -#: src/emc/usr_intf/pncconf/pncconf.glade:31167 -#: src/emc/usr_intf/pncconf/pncconf.glade:31187 -#: src/emc/usr_intf/pncconf/pncconf.glade:31207 -#: src/emc/usr_intf/pncconf/pncconf.glade:31227 -#: src/emc/usr_intf/pncconf/pncconf.glade:31247 -#: src/emc/usr_intf/pncconf/pncconf.glade:31267 -#: src/emc/usr_intf/pncconf/pncconf.glade:31287 -#: src/emc/usr_intf/pncconf/pncconf.glade:31307 -#: src/emc/usr_intf/pncconf/pncconf.glade:31327 -#: src/emc/usr_intf/pncconf/pncconf.glade:31635 -#: src/emc/usr_intf/pncconf/pncconf.glade:31655 -#: src/emc/usr_intf/pncconf/pncconf.glade:31675 -#: src/emc/usr_intf/pncconf/pncconf.glade:31695 -#: src/emc/usr_intf/pncconf/pncconf.glade:31715 -#: src/emc/usr_intf/pncconf/pncconf.glade:31735 -#: src/emc/usr_intf/pncconf/pncconf.glade:31755 -#: src/emc/usr_intf/pncconf/pncconf.glade:31775 -#: src/emc/usr_intf/pncconf/pncconf.glade:31795 -#: src/emc/usr_intf/pncconf/pncconf.glade:31815 -#: src/emc/usr_intf/pncconf/pncconf.glade:31835 -#: src/emc/usr_intf/pncconf/pncconf.glade:33053 -#: src/emc/usr_intf/pncconf/pncconf.glade:33316 -#: src/emc/usr_intf/pncconf/pncconf.glade:35232 -#: src/emc/usr_intf/pncconf/pncconf.glade:35252 -#: src/emc/usr_intf/pncconf/pncconf.glade:35272 -#: src/emc/usr_intf/pncconf/pncconf.glade:35292 -#: src/emc/usr_intf/pncconf/pncconf.glade:35312 -#: src/emc/usr_intf/pncconf/pncconf.glade:35332 -#: src/emc/usr_intf/pncconf/pncconf.glade:35352 -#: src/emc/usr_intf/pncconf/pncconf.glade:35372 -#: src/emc/usr_intf/pncconf/pncconf.glade:35392 -#: src/emc/usr_intf/pncconf/pncconf.glade:35412 -#: src/emc/usr_intf/pncconf/pncconf.glade:35432 -#: src/emc/usr_intf/pncconf/pncconf.glade:35452 -#: src/emc/usr_intf/pncconf/pncconf.glade:35472 -#: src/emc/usr_intf/pncconf/pncconf.glade:35492 -#: src/emc/usr_intf/pncconf/pncconf.glade:35512 -#: src/emc/usr_intf/pncconf/pncconf.glade:35532 -#: src/emc/usr_intf/pncconf/pncconf.glade:35552 -#: src/emc/usr_intf/pncconf/pncconf.glade:35572 -#: src/emc/usr_intf/pncconf/pncconf.glade:35592 -#: src/emc/usr_intf/pncconf/pncconf.glade:35612 -#: src/emc/usr_intf/pncconf/pncconf.glade:35632 -#: src/emc/usr_intf/pncconf/pncconf.glade:35652 -#: src/emc/usr_intf/pncconf/pncconf.glade:35672 -#: src/emc/usr_intf/pncconf/pncconf.glade:35863 -#: src/emc/usr_intf/pncconf/pncconf.glade:35883 -#: src/emc/usr_intf/pncconf/pncconf.glade:35903 -#: src/emc/usr_intf/pncconf/pncconf.glade:35923 -#: src/emc/usr_intf/pncconf/pncconf.glade:35943 -#: src/emc/usr_intf/pncconf/pncconf.glade:35963 -#: src/emc/usr_intf/pncconf/pncconf.glade:35983 -#: src/emc/usr_intf/pncconf/pncconf.glade:36003 -#: src/emc/usr_intf/pncconf/pncconf.glade:36023 -#: src/emc/usr_intf/pncconf/pncconf.glade:36043 -#: src/emc/usr_intf/pncconf/pncconf.glade:36063 -#: src/emc/usr_intf/pncconf/pncconf.glade:36083 -#: src/emc/usr_intf/pncconf/pncconf.glade:36103 -#: src/emc/usr_intf/pncconf/pncconf.glade:36123 -#: src/emc/usr_intf/pncconf/pncconf.glade:36143 -#: src/emc/usr_intf/pncconf/pncconf.glade:36163 -#: src/emc/usr_intf/pncconf/pncconf.glade:36183 -#: src/emc/usr_intf/pncconf/pncconf.glade:36203 -#: src/emc/usr_intf/pncconf/pncconf.glade:36223 -#: src/emc/usr_intf/pncconf/pncconf.glade:36243 -#: src/emc/usr_intf/pncconf/pncconf.glade:36263 -#: src/emc/usr_intf/pncconf/pncconf.glade:36283 -#: src/emc/usr_intf/pncconf/pncconf.glade:36303 -#: src/emc/usr_intf/pncconf/pncconf.glade:38232 -#: src/emc/usr_intf/pncconf/pncconf.glade:38573 -#: src/emc/usr_intf/pncconf/pncconf.glade:39803 -#: src/emc/usr_intf/pncconf/pncconf.glade:39823 -#: src/emc/usr_intf/pncconf/pncconf.glade:39843 -#: src/emc/usr_intf/pncconf/pncconf.glade:39863 -#: src/emc/usr_intf/pncconf/pncconf.glade:39883 -#: src/emc/usr_intf/pncconf/pncconf.glade:39903 -#: src/emc/usr_intf/pncconf/pncconf.glade:39923 -#: src/emc/usr_intf/pncconf/pncconf.glade:39943 -#: src/emc/usr_intf/pncconf/pncconf.glade:39963 -#: src/emc/usr_intf/pncconf/pncconf.glade:39983 -#: src/emc/usr_intf/pncconf/pncconf.glade:40003 -#: src/emc/usr_intf/pncconf/pncconf.glade:40223 -#: src/emc/usr_intf/pncconf/pncconf.glade:40243 -#: src/emc/usr_intf/pncconf/pncconf.glade:40263 -#: src/emc/usr_intf/pncconf/pncconf.glade:40283 -#: src/emc/usr_intf/pncconf/pncconf.glade:40303 -#: src/emc/usr_intf/pncconf/pncconf.glade:40323 -#: src/emc/usr_intf/pncconf/pncconf.glade:40343 -#: src/emc/usr_intf/pncconf/pncconf.glade:40363 -#: src/emc/usr_intf/pncconf/pncconf.glade:40383 -#: src/emc/usr_intf/pncconf/pncconf.glade:40403 -#: src/emc/usr_intf/pncconf/pncconf.glade:40423 -#: src/emc/usr_intf/pncconf/pncconf.glade:40443 -#: src/emc/usr_intf/pncconf/pncconf.glade:40463 -#: src/emc/usr_intf/pncconf/pncconf.glade:40483 -#: src/emc/usr_intf/pncconf/pncconf.glade:40503 -#: src/emc/usr_intf/pncconf/pncconf.glade:40523 -#: src/emc/usr_intf/pncconf/pncconf.glade:40543 -#: src/emc/usr_intf/pncconf/pncconf.glade:40563 -#: src/emc/usr_intf/pncconf/pncconf.glade:40583 -#: src/emc/usr_intf/pncconf/pncconf.glade:40603 -#: src/emc/usr_intf/pncconf/pncconf.glade:40623 -#: src/emc/usr_intf/pncconf/pncconf.glade:40643 -#: src/emc/usr_intf/pncconf/pncconf.glade:40663 -#: src/emc/usr_intf/pncconf/pncconf.glade:42579 -#: src/emc/usr_intf/pncconf/pncconf.glade:42802 -#: src/emc/usr_intf/pncconf/pncconf.glade:44731 -#: src/emc/usr_intf/pncconf/pncconf.glade:44751 -#: src/emc/usr_intf/pncconf/pncconf.glade:44771 -#: src/emc/usr_intf/pncconf/pncconf.glade:44791 -#: src/emc/usr_intf/pncconf/pncconf.glade:44811 -#: src/emc/usr_intf/pncconf/pncconf.glade:44831 -#: src/emc/usr_intf/pncconf/pncconf.glade:44851 -#: src/emc/usr_intf/pncconf/pncconf.glade:44871 -#: src/emc/usr_intf/pncconf/pncconf.glade:44891 -#: src/emc/usr_intf/pncconf/pncconf.glade:44911 -#: src/emc/usr_intf/pncconf/pncconf.glade:44931 -#: src/emc/usr_intf/pncconf/pncconf.glade:44951 -#: src/emc/usr_intf/pncconf/pncconf.glade:44971 -#: src/emc/usr_intf/pncconf/pncconf.glade:44991 -#: src/emc/usr_intf/pncconf/pncconf.glade:45011 -#: src/emc/usr_intf/pncconf/pncconf.glade:45031 -#: src/emc/usr_intf/pncconf/pncconf.glade:45051 -#: src/emc/usr_intf/pncconf/pncconf.glade:45071 -#: src/emc/usr_intf/pncconf/pncconf.glade:45091 -#: src/emc/usr_intf/pncconf/pncconf.glade:45111 -#: src/emc/usr_intf/pncconf/pncconf.glade:45131 -#: src/emc/usr_intf/pncconf/pncconf.glade:45151 -#: src/emc/usr_intf/pncconf/pncconf.glade:45171 -#: src/emc/usr_intf/pncconf/pncconf.glade:45480 -#: src/emc/usr_intf/pncconf/pncconf.glade:45500 -#: src/emc/usr_intf/pncconf/pncconf.glade:45520 -#: src/emc/usr_intf/pncconf/pncconf.glade:45540 -#: src/emc/usr_intf/pncconf/pncconf.glade:45560 -#: src/emc/usr_intf/pncconf/pncconf.glade:45580 -#: src/emc/usr_intf/pncconf/pncconf.glade:45600 -#: src/emc/usr_intf/pncconf/pncconf.glade:45620 -#: src/emc/usr_intf/pncconf/pncconf.glade:45640 -#: src/emc/usr_intf/pncconf/pncconf.glade:45660 -#: src/emc/usr_intf/pncconf/pncconf.glade:45680 -#: src/emc/usr_intf/pncconf/pncconf.glade:46910 -#: src/emc/usr_intf/pncconf/pncconf.glade:47146 -#: src/emc/usr_intf/pncconf/pncconf.glade:47166 -#: src/emc/usr_intf/pncconf/pncconf.glade:47186 -#: src/emc/usr_intf/pncconf/pncconf.glade:47206 -#: src/emc/usr_intf/pncconf/pncconf.glade:47226 -#: src/emc/usr_intf/pncconf/pncconf.glade:47246 -#: src/emc/usr_intf/pncconf/pncconf.glade:47266 -#: src/emc/usr_intf/pncconf/pncconf.glade:47286 -#: src/emc/usr_intf/pncconf/pncconf.glade:47306 -#: src/emc/usr_intf/pncconf/pncconf.glade:47326 -#: src/emc/usr_intf/pncconf/pncconf.glade:47346 -#: src/emc/usr_intf/pncconf/pncconf.glade:47366 -#: src/emc/usr_intf/pncconf/pncconf.glade:47386 -#: src/emc/usr_intf/pncconf/pncconf.glade:47406 -#: src/emc/usr_intf/pncconf/pncconf.glade:47426 -#: src/emc/usr_intf/pncconf/pncconf.glade:47446 -#: src/emc/usr_intf/pncconf/pncconf.glade:47466 -#: src/emc/usr_intf/pncconf/pncconf.glade:47486 -#: src/emc/usr_intf/pncconf/pncconf.glade:47506 -#: src/emc/usr_intf/pncconf/pncconf.glade:47526 -#: src/emc/usr_intf/pncconf/pncconf.glade:47546 -#: src/emc/usr_intf/pncconf/pncconf.glade:47566 -#: src/emc/usr_intf/pncconf/pncconf.glade:47586 -#: src/emc/usr_intf/pncconf/pncconf.glade:49502 -#: src/emc/usr_intf/pncconf/pncconf.glade:49725 -#: src/emc/usr_intf/pncconf/pncconf.glade:51654 -#: src/emc/usr_intf/pncconf/pncconf.glade:51674 -#: src/emc/usr_intf/pncconf/pncconf.glade:51694 -#: src/emc/usr_intf/pncconf/pncconf.glade:51714 -#: src/emc/usr_intf/pncconf/pncconf.glade:51734 -#: src/emc/usr_intf/pncconf/pncconf.glade:51754 -#: src/emc/usr_intf/pncconf/pncconf.glade:51774 -#: src/emc/usr_intf/pncconf/pncconf.glade:51794 -#: src/emc/usr_intf/pncconf/pncconf.glade:51814 -#: src/emc/usr_intf/pncconf/pncconf.glade:51834 -#: src/emc/usr_intf/pncconf/pncconf.glade:51854 -#: src/emc/usr_intf/pncconf/pncconf.glade:51874 -#: src/emc/usr_intf/pncconf/pncconf.glade:51894 -#: src/emc/usr_intf/pncconf/pncconf.glade:51914 -#: src/emc/usr_intf/pncconf/pncconf.glade:51934 -#: src/emc/usr_intf/pncconf/pncconf.glade:51954 -#: src/emc/usr_intf/pncconf/pncconf.glade:51974 -#: src/emc/usr_intf/pncconf/pncconf.glade:51994 -#: src/emc/usr_intf/pncconf/pncconf.glade:52014 -#: src/emc/usr_intf/pncconf/pncconf.glade:52034 -#: src/emc/usr_intf/pncconf/pncconf.glade:52054 -#: src/emc/usr_intf/pncconf/pncconf.glade:52074 -#: src/emc/usr_intf/pncconf/pncconf.glade:52094 -#: src/emc/usr_intf/pncconf/pncconf.glade:52403 -#: src/emc/usr_intf/pncconf/pncconf.glade:52423 -#: src/emc/usr_intf/pncconf/pncconf.glade:52443 -#: src/emc/usr_intf/pncconf/pncconf.glade:52463 -#: src/emc/usr_intf/pncconf/pncconf.glade:52483 -#: src/emc/usr_intf/pncconf/pncconf.glade:52503 -#: src/emc/usr_intf/pncconf/pncconf.glade:52523 -#: src/emc/usr_intf/pncconf/pncconf.glade:52543 -#: src/emc/usr_intf/pncconf/pncconf.glade:52563 -#: src/emc/usr_intf/pncconf/pncconf.glade:52583 -#: src/emc/usr_intf/pncconf/pncconf.glade:52603 -#: src/emc/usr_intf/pncconf/pncconf.glade:53833 -#: src/emc/usr_intf/pncconf/pncconf.glade:54069 -#: src/emc/usr_intf/pncconf/pncconf.glade:54089 -#: src/emc/usr_intf/pncconf/pncconf.glade:54109 -#: src/emc/usr_intf/pncconf/pncconf.glade:54129 -#: src/emc/usr_intf/pncconf/pncconf.glade:54149 -#: src/emc/usr_intf/pncconf/pncconf.glade:54169 -#: src/emc/usr_intf/pncconf/pncconf.glade:54189 -#: src/emc/usr_intf/pncconf/pncconf.glade:54209 -#: src/emc/usr_intf/pncconf/pncconf.glade:54229 -#: src/emc/usr_intf/pncconf/pncconf.glade:54249 -#: src/emc/usr_intf/pncconf/pncconf.glade:54269 -#: src/emc/usr_intf/pncconf/pncconf.glade:54289 -#: src/emc/usr_intf/pncconf/pncconf.glade:54309 -#: src/emc/usr_intf/pncconf/pncconf.glade:54329 -#: src/emc/usr_intf/pncconf/pncconf.glade:54349 -#: src/emc/usr_intf/pncconf/pncconf.glade:54369 -#: src/emc/usr_intf/pncconf/pncconf.glade:54389 -#: src/emc/usr_intf/pncconf/pncconf.glade:54409 -#: src/emc/usr_intf/pncconf/pncconf.glade:54429 -#: src/emc/usr_intf/pncconf/pncconf.glade:54449 -#: src/emc/usr_intf/pncconf/pncconf.glade:54469 -#: src/emc/usr_intf/pncconf/pncconf.glade:54489 -#: src/emc/usr_intf/pncconf/pncconf.glade:54509 -#: src/emc/usr_intf/pncconf/pncconf.glade:56425 -#: src/emc/usr_intf/pncconf/pncconf.glade:56648 -#: src/emc/usr_intf/pncconf/pncconf.glade:58577 -#: src/emc/usr_intf/pncconf/pncconf.glade:58597 -#: src/emc/usr_intf/pncconf/pncconf.glade:58617 -#: src/emc/usr_intf/pncconf/pncconf.glade:58637 -#: src/emc/usr_intf/pncconf/pncconf.glade:58657 -#: src/emc/usr_intf/pncconf/pncconf.glade:58677 -#: src/emc/usr_intf/pncconf/pncconf.glade:58697 -#: src/emc/usr_intf/pncconf/pncconf.glade:58717 -#: src/emc/usr_intf/pncconf/pncconf.glade:58737 -#: src/emc/usr_intf/pncconf/pncconf.glade:58757 -#: src/emc/usr_intf/pncconf/pncconf.glade:58777 -#: src/emc/usr_intf/pncconf/pncconf.glade:58797 -#: src/emc/usr_intf/pncconf/pncconf.glade:58817 -#: src/emc/usr_intf/pncconf/pncconf.glade:58837 -#: src/emc/usr_intf/pncconf/pncconf.glade:58857 -#: src/emc/usr_intf/pncconf/pncconf.glade:58877 -#: src/emc/usr_intf/pncconf/pncconf.glade:58897 -#: src/emc/usr_intf/pncconf/pncconf.glade:58917 -#: src/emc/usr_intf/pncconf/pncconf.glade:58937 -#: src/emc/usr_intf/pncconf/pncconf.glade:58957 -#: src/emc/usr_intf/pncconf/pncconf.glade:58977 -#: src/emc/usr_intf/pncconf/pncconf.glade:58997 -#: src/emc/usr_intf/pncconf/pncconf.glade:59017 -#: src/emc/usr_intf/pncconf/pncconf.glade:59326 -#: src/emc/usr_intf/pncconf/pncconf.glade:59346 -#: src/emc/usr_intf/pncconf/pncconf.glade:59366 -#: src/emc/usr_intf/pncconf/pncconf.glade:59386 -#: src/emc/usr_intf/pncconf/pncconf.glade:59406 -#: src/emc/usr_intf/pncconf/pncconf.glade:59426 -#: src/emc/usr_intf/pncconf/pncconf.glade:59446 -#: src/emc/usr_intf/pncconf/pncconf.glade:59466 -#: src/emc/usr_intf/pncconf/pncconf.glade:59486 -#: src/emc/usr_intf/pncconf/pncconf.glade:59506 -#: src/emc/usr_intf/pncconf/pncconf.glade:59526 -#: src/emc/usr_intf/pncconf/pncconf.glade:60756 -msgid "" -"GPIO Input\n" -"GPIO Output\n" -"GPIO O Drain\n" -"Encoder\n" -"PWM\n" -"StepGen\n" -msgstr "" -"Entrée GPIO\n" -"Sortie GPIO\n" -"GPIO O Drain\n" -"Codeur\n" -"PWM\n" -"StepGen\n" - -#: src/emc/usr_intf/pncconf/pncconf.glade:9198 -#: src/emc/usr_intf/pncconf/pncconf.glade:13188 -#: src/emc/usr_intf/pncconf/pncconf.glade:15884 -#: src/emc/usr_intf/pncconf/pncconf.glade:18394 -#: src/emc/usr_intf/pncconf/pncconf.glade:20397 -#: src/emc/usr_intf/pncconf/pncconf.glade:21325 -#: src/emc/usr_intf/pncconf/pncconf.glade:23121 -#: src/emc/usr_intf/pncconf/pncconf.glade:24917 -#: emc/usr_intf/pncconf/pncconf.glade:9198 -#: emc/usr_intf/pncconf/pncconf.glade:13188 -#: emc/usr_intf/pncconf/pncconf.glade:15884 -#: emc/usr_intf/pncconf/pncconf.glade:18394 -#: emc/usr_intf/pncconf/pncconf.glade:20397 -#: emc/usr_intf/pncconf/pncconf.glade:21325 -#: emc/usr_intf/pncconf/pncconf.glade:23121 -#: emc/usr_intf/pncconf/pncconf.glade:24917 -#: src/emc/usr_intf/pncconf/pncconf.glade:9222 -#: src/emc/usr_intf/pncconf/pncconf.glade:13212 -#: src/emc/usr_intf/pncconf/pncconf.glade:15908 -#: src/emc/usr_intf/pncconf/pncconf.glade:18418 -#: src/emc/usr_intf/pncconf/pncconf.glade:20421 -#: src/emc/usr_intf/pncconf/pncconf.glade:21349 -#: src/emc/usr_intf/pncconf/pncconf.glade:23145 -#: src/emc/usr_intf/pncconf/pncconf.glade:24941 -msgid "Launch test panel" -msgstr "Lancer le panneau de test" - -#: src/emc/usr_intf/pncconf/pncconf.glade:9213 -#: src/emc/usr_intf/pncconf/pncconf.glade:9225 -#: src/emc/usr_intf/pncconf/pncconf.glade:13162 -#: src/emc/usr_intf/pncconf/pncconf.glade:13174 -#: src/emc/usr_intf/pncconf/pncconf.glade:15858 -#: src/emc/usr_intf/pncconf/pncconf.glade:15870 -#: src/emc/usr_intf/pncconf/pncconf.glade:18367 -#: src/emc/usr_intf/pncconf/pncconf.glade:18379 -#: src/emc/usr_intf/pncconf/pncconf.glade:20370 -#: src/emc/usr_intf/pncconf/pncconf.glade:20382 -#: src/emc/usr_intf/pncconf/pncconf.glade:21339 -#: src/emc/usr_intf/pncconf/pncconf.glade:21351 -#: src/emc/usr_intf/pncconf/pncconf.glade:23135 -#: src/emc/usr_intf/pncconf/pncconf.glade:23147 -#: src/emc/usr_intf/pncconf/pncconf.glade:24931 -#: src/emc/usr_intf/pncconf/pncconf.glade:24943 -#: src/emc/usr_intf/pncconf/pncconf.glade:26815 -#: src/emc/usr_intf/pncconf/pncconf.glade:26827 -#: src/emc/usr_intf/pncconf/pncconf.glade:30826 -#: src/emc/usr_intf/pncconf/pncconf.glade:30838 -#: src/emc/usr_intf/pncconf/pncconf.glade:31831 -#: src/emc/usr_intf/pncconf/pncconf.glade:35184 -#: src/emc/usr_intf/pncconf/pncconf.glade:35196 -#: src/emc/usr_intf/pncconf/pncconf.glade:36312 -#: src/emc/usr_intf/pncconf/pncconf.glade:36324 -#: src/emc/usr_intf/pncconf/pncconf.glade:39755 -#: src/emc/usr_intf/pncconf/pncconf.glade:39767 -#: src/emc/usr_intf/pncconf/pncconf.glade:40659 -#: src/emc/usr_intf/pncconf/pncconf.glade:40671 -#: src/emc/usr_intf/pncconf/pncconf.glade:44670 -#: src/emc/usr_intf/pncconf/pncconf.glade:44682 -#: src/emc/usr_intf/pncconf/pncconf.glade:45676 -#: src/emc/usr_intf/pncconf/pncconf.glade:45688 -#: src/emc/usr_intf/pncconf/pncconf.glade:47582 -#: src/emc/usr_intf/pncconf/pncconf.glade:47594 -#: src/emc/usr_intf/pncconf/pncconf.glade:51593 -#: src/emc/usr_intf/pncconf/pncconf.glade:51605 -#: src/emc/usr_intf/pncconf/pncconf.glade:52599 -#: src/emc/usr_intf/pncconf/pncconf.glade:52611 -#: emc/usr_intf/pncconf/pncconf.glade:9213 -#: emc/usr_intf/pncconf/pncconf.glade:9225 -#: emc/usr_intf/pncconf/pncconf.glade:13162 -#: emc/usr_intf/pncconf/pncconf.glade:13174 -#: emc/usr_intf/pncconf/pncconf.glade:15858 -#: emc/usr_intf/pncconf/pncconf.glade:15870 -#: emc/usr_intf/pncconf/pncconf.glade:18367 -#: emc/usr_intf/pncconf/pncconf.glade:18379 -#: emc/usr_intf/pncconf/pncconf.glade:20370 -#: emc/usr_intf/pncconf/pncconf.glade:20382 -#: emc/usr_intf/pncconf/pncconf.glade:21339 -#: emc/usr_intf/pncconf/pncconf.glade:21351 -#: emc/usr_intf/pncconf/pncconf.glade:23135 -#: emc/usr_intf/pncconf/pncconf.glade:23147 -#: emc/usr_intf/pncconf/pncconf.glade:24931 -#: emc/usr_intf/pncconf/pncconf.glade:24943 -#: emc/usr_intf/pncconf/pncconf.glade:26815 -#: emc/usr_intf/pncconf/pncconf.glade:26827 -#: emc/usr_intf/pncconf/pncconf.glade:30826 -#: emc/usr_intf/pncconf/pncconf.glade:30838 -#: emc/usr_intf/pncconf/pncconf.glade:31831 -#: emc/usr_intf/pncconf/pncconf.glade:35184 -#: emc/usr_intf/pncconf/pncconf.glade:35196 -#: emc/usr_intf/pncconf/pncconf.glade:36312 -#: emc/usr_intf/pncconf/pncconf.glade:36324 -#: emc/usr_intf/pncconf/pncconf.glade:39755 -#: emc/usr_intf/pncconf/pncconf.glade:39767 -#: emc/usr_intf/pncconf/pncconf.glade:40659 -#: emc/usr_intf/pncconf/pncconf.glade:40671 -#: emc/usr_intf/pncconf/pncconf.glade:44670 -#: emc/usr_intf/pncconf/pncconf.glade:44682 -#: emc/usr_intf/pncconf/pncconf.glade:45676 -#: emc/usr_intf/pncconf/pncconf.glade:45688 -#: emc/usr_intf/pncconf/pncconf.glade:47582 -#: emc/usr_intf/pncconf/pncconf.glade:47594 -#: emc/usr_intf/pncconf/pncconf.glade:51593 -#: emc/usr_intf/pncconf/pncconf.glade:51605 -#: emc/usr_intf/pncconf/pncconf.glade:52599 -#: emc/usr_intf/pncconf/pncconf.glade:52611 -#: src/emc/usr_intf/pncconf/pncconf.glade:9237 +#: src/emc/usr_intf/pncconf/pncconf.glade:8721 +#: src/emc/usr_intf/pncconf/pncconf.glade:8773 +#: src/emc/usr_intf/pncconf/pncconf.glade:9093 +#: src/emc/usr_intf/pncconf/pncconf.glade:9145 +#: src/emc/usr_intf/pncconf/pncconf.glade:9197 #: src/emc/usr_intf/pncconf/pncconf.glade:9249 -#: src/emc/usr_intf/pncconf/pncconf.glade:13186 -#: src/emc/usr_intf/pncconf/pncconf.glade:13198 -#: src/emc/usr_intf/pncconf/pncconf.glade:15882 -#: src/emc/usr_intf/pncconf/pncconf.glade:15894 -#: src/emc/usr_intf/pncconf/pncconf.glade:18391 -#: src/emc/usr_intf/pncconf/pncconf.glade:18403 -#: src/emc/usr_intf/pncconf/pncconf.glade:20394 -#: src/emc/usr_intf/pncconf/pncconf.glade:20406 -#: src/emc/usr_intf/pncconf/pncconf.glade:21363 -#: src/emc/usr_intf/pncconf/pncconf.glade:21375 -#: src/emc/usr_intf/pncconf/pncconf.glade:23159 -#: src/emc/usr_intf/pncconf/pncconf.glade:23171 -#: src/emc/usr_intf/pncconf/pncconf.glade:24955 -#: src/emc/usr_intf/pncconf/pncconf.glade:24967 -#: src/emc/usr_intf/pncconf/pncconf.glade:26839 -#: src/emc/usr_intf/pncconf/pncconf.glade:26851 -#: src/emc/usr_intf/pncconf/pncconf.glade:30850 -#: src/emc/usr_intf/pncconf/pncconf.glade:30862 -#: src/emc/usr_intf/pncconf/pncconf.glade:31855 -#: src/emc/usr_intf/pncconf/pncconf.glade:35208 -#: src/emc/usr_intf/pncconf/pncconf.glade:35220 -#: src/emc/usr_intf/pncconf/pncconf.glade:36336 -#: src/emc/usr_intf/pncconf/pncconf.glade:36348 -#: src/emc/usr_intf/pncconf/pncconf.glade:39779 -#: src/emc/usr_intf/pncconf/pncconf.glade:39791 -#: src/emc/usr_intf/pncconf/pncconf.glade:40683 -#: src/emc/usr_intf/pncconf/pncconf.glade:40695 -#: src/emc/usr_intf/pncconf/pncconf.glade:44694 -#: src/emc/usr_intf/pncconf/pncconf.glade:44706 -#: src/emc/usr_intf/pncconf/pncconf.glade:45700 -#: src/emc/usr_intf/pncconf/pncconf.glade:45712 -#: src/emc/usr_intf/pncconf/pncconf.glade:47606 -#: src/emc/usr_intf/pncconf/pncconf.glade:47618 -#: src/emc/usr_intf/pncconf/pncconf.glade:51617 -#: src/emc/usr_intf/pncconf/pncconf.glade:51629 -#: src/emc/usr_intf/pncconf/pncconf.glade:52623 -#: src/emc/usr_intf/pncconf/pncconf.glade:52635 -#: src/emc/usr_intf/pncconf/pncconf.glade:54529 -#: src/emc/usr_intf/pncconf/pncconf.glade:54541 -#: src/emc/usr_intf/pncconf/pncconf.glade:58540 -#: src/emc/usr_intf/pncconf/pncconf.glade:58552 -#: src/emc/usr_intf/pncconf/pncconf.glade:59546 -#: src/emc/usr_intf/pncconf/pncconf.glade:59558 -msgid "function" -msgstr "Fonction" - -#: src/emc/usr_intf/pncconf/pncconf.glade:9305 -#: src/emc/usr_intf/pncconf/pncconf.glade:9357 -#: src/emc/usr_intf/pncconf/pncconf.glade:9409 -#: src/emc/usr_intf/pncconf/pncconf.glade:9461 -#: src/emc/usr_intf/pncconf/pncconf.glade:10301 -#: src/emc/usr_intf/pncconf/pncconf.glade:10353 -#: src/emc/usr_intf/pncconf/pncconf.glade:10405 -#: src/emc/usr_intf/pncconf/pncconf.glade:10457 -#: src/emc/usr_intf/pncconf/pncconf.glade:10509 -#: src/emc/usr_intf/pncconf/pncconf.glade:10561 -#: src/emc/usr_intf/pncconf/pncconf.glade:10613 -#: src/emc/usr_intf/pncconf/pncconf.glade:10665 -#: src/emc/usr_intf/pncconf/pncconf.glade:10717 -#: src/emc/usr_intf/pncconf/pncconf.glade:10769 -#: src/emc/usr_intf/pncconf/pncconf.glade:11089 -#: src/emc/usr_intf/pncconf/pncconf.glade:11141 -#: src/emc/usr_intf/pncconf/pncconf.glade:11579 -#: src/emc/usr_intf/pncconf/pncconf.glade:11631 -#: src/emc/usr_intf/pncconf/pncconf.glade:11683 -#: src/emc/usr_intf/pncconf/pncconf.glade:11735 -#: src/emc/usr_intf/pncconf/pncconf.glade:11787 -#: src/emc/usr_intf/pncconf/pncconf.glade:11839 -#: src/emc/usr_intf/pncconf/pncconf.glade:11891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11943 -#: src/emc/usr_intf/pncconf/pncconf.glade:11995 +#: src/emc/usr_intf/pncconf/pncconf.glade:9301 +#: src/emc/usr_intf/pncconf/pncconf.glade:9353 +#: src/emc/usr_intf/pncconf/pncconf.glade:9405 +#: src/emc/usr_intf/pncconf/pncconf.glade:9457 +#: src/emc/usr_intf/pncconf/pncconf.glade:9509 +#: src/emc/usr_intf/pncconf/pncconf.glade:9561 +#: src/emc/usr_intf/pncconf/pncconf.glade:10400 +#: src/emc/usr_intf/pncconf/pncconf.glade:10453 +#: src/emc/usr_intf/pncconf/pncconf.glade:10505 +#: src/emc/usr_intf/pncconf/pncconf.glade:10557 +#: src/emc/usr_intf/pncconf/pncconf.glade:11335 +#: src/emc/usr_intf/pncconf/pncconf.glade:11387 #: src/emc/usr_intf/pncconf/pncconf.glade:12047 -#: src/emc/usr_intf/pncconf/pncconf.glade:12886 -#: src/emc/usr_intf/pncconf/pncconf.glade:12938 -#: src/emc/usr_intf/pncconf/pncconf.glade:12990 +#: src/emc/usr_intf/pncconf/pncconf.glade:12099 +#: src/emc/usr_intf/pncconf/pncconf.glade:12151 +#: src/emc/usr_intf/pncconf/pncconf.glade:12203 #: src/emc/usr_intf/pncconf/pncconf.glade:13042 -#: src/emc/usr_intf/pncconf/pncconf.glade:13702 -#: src/emc/usr_intf/pncconf/pncconf.glade:13754 -#: src/emc/usr_intf/pncconf/pncconf.glade:14183 -#: src/emc/usr_intf/pncconf/pncconf.glade:14235 -#: src/emc/usr_intf/pncconf/pncconf.glade:14287 -#: src/emc/usr_intf/pncconf/pncconf.glade:14339 -#: src/emc/usr_intf/pncconf/pncconf.glade:14391 -#: src/emc/usr_intf/pncconf/pncconf.glade:14443 -#: src/emc/usr_intf/pncconf/pncconf.glade:14495 -#: src/emc/usr_intf/pncconf/pncconf.glade:14547 -#: src/emc/usr_intf/pncconf/pncconf.glade:14599 -#: src/emc/usr_intf/pncconf/pncconf.glade:14651 -#: src/emc/usr_intf/pncconf/pncconf.glade:14703 -#: src/emc/usr_intf/pncconf/pncconf.glade:14755 -#: src/emc/usr_intf/pncconf/pncconf.glade:15582 -#: src/emc/usr_intf/pncconf/pncconf.glade:15634 -#: src/emc/usr_intf/pncconf/pncconf.glade:15686 -#: src/emc/usr_intf/pncconf/pncconf.glade:15738 -#: src/emc/usr_intf/pncconf/pncconf.glade:16784 -#: src/emc/usr_intf/pncconf/pncconf.glade:16836 -#: src/emc/usr_intf/pncconf/pncconf.glade:16888 -#: src/emc/usr_intf/pncconf/pncconf.glade:16940 -#: src/emc/usr_intf/pncconf/pncconf.glade:16992 -#: src/emc/usr_intf/pncconf/pncconf.glade:17044 -#: src/emc/usr_intf/pncconf/pncconf.glade:17096 -#: src/emc/usr_intf/pncconf/pncconf.glade:17148 -#: src/emc/usr_intf/pncconf/pncconf.glade:17200 -#: src/emc/usr_intf/pncconf/pncconf.glade:17252 -#: src/emc/usr_intf/pncconf/pncconf.glade:17304 -#: src/emc/usr_intf/pncconf/pncconf.glade:18143 -#: src/emc/usr_intf/pncconf/pncconf.glade:18195 -#: src/emc/usr_intf/pncconf/pncconf.glade:18247 -#: src/emc/usr_intf/pncconf/pncconf.glade:18908 -#: src/emc/usr_intf/pncconf/pncconf.glade:18960 -#: src/emc/usr_intf/pncconf/pncconf.glade:26907 -#: src/emc/usr_intf/pncconf/pncconf.glade:26959 -#: src/emc/usr_intf/pncconf/pncconf.glade:27011 -#: src/emc/usr_intf/pncconf/pncconf.glade:27063 -#: src/emc/usr_intf/pncconf/pncconf.glade:27890 -#: src/emc/usr_intf/pncconf/pncconf.glade:27942 -#: src/emc/usr_intf/pncconf/pncconf.glade:27994 -#: src/emc/usr_intf/pncconf/pncconf.glade:28046 -#: src/emc/usr_intf/pncconf/pncconf.glade:28098 -#: src/emc/usr_intf/pncconf/pncconf.glade:28150 -#: src/emc/usr_intf/pncconf/pncconf.glade:28202 -#: src/emc/usr_intf/pncconf/pncconf.glade:28254 -#: src/emc/usr_intf/pncconf/pncconf.glade:28306 -#: src/emc/usr_intf/pncconf/pncconf.glade:28358 -#: src/emc/usr_intf/pncconf/pncconf.glade:28410 -#: src/emc/usr_intf/pncconf/pncconf.glade:28462 -#: src/emc/usr_intf/pncconf/pncconf.glade:29151 -#: src/emc/usr_intf/pncconf/pncconf.glade:29203 -#: src/emc/usr_intf/pncconf/pncconf.glade:29255 -#: src/emc/usr_intf/pncconf/pncconf.glade:29307 -#: src/emc/usr_intf/pncconf/pncconf.glade:29359 -#: src/emc/usr_intf/pncconf/pncconf.glade:29411 -#: src/emc/usr_intf/pncconf/pncconf.glade:29463 -#: src/emc/usr_intf/pncconf/pncconf.glade:29515 -#: src/emc/usr_intf/pncconf/pncconf.glade:29567 -#: src/emc/usr_intf/pncconf/pncconf.glade:29619 -#: src/emc/usr_intf/pncconf/pncconf.glade:29671 -#: src/emc/usr_intf/pncconf/pncconf.glade:29723 -#: src/emc/usr_intf/pncconf/pncconf.glade:30550 -#: src/emc/usr_intf/pncconf/pncconf.glade:30602 -#: src/emc/usr_intf/pncconf/pncconf.glade:30654 -#: src/emc/usr_intf/pncconf/pncconf.glade:30706 -#: src/emc/usr_intf/pncconf/pncconf.glade:32210 -#: src/emc/usr_intf/pncconf/pncconf.glade:32262 -#: src/emc/usr_intf/pncconf/pncconf.glade:32314 -#: src/emc/usr_intf/pncconf/pncconf.glade:32366 -#: src/emc/usr_intf/pncconf/pncconf.glade:32418 -#: src/emc/usr_intf/pncconf/pncconf.glade:32470 -#: src/emc/usr_intf/pncconf/pncconf.glade:32522 -#: src/emc/usr_intf/pncconf/pncconf.glade:32574 -#: src/emc/usr_intf/pncconf/pncconf.glade:32626 -#: src/emc/usr_intf/pncconf/pncconf.glade:32678 -#: src/emc/usr_intf/pncconf/pncconf.glade:32730 -#: src/emc/usr_intf/pncconf/pncconf.glade:32782 -#: src/emc/usr_intf/pncconf/pncconf.glade:33509 -#: src/emc/usr_intf/pncconf/pncconf.glade:33561 -#: src/emc/usr_intf/pncconf/pncconf.glade:33613 -#: src/emc/usr_intf/pncconf/pncconf.glade:33665 -#: src/emc/usr_intf/pncconf/pncconf.glade:33717 -#: src/emc/usr_intf/pncconf/pncconf.glade:33769 -#: src/emc/usr_intf/pncconf/pncconf.glade:33821 -#: src/emc/usr_intf/pncconf/pncconf.glade:33873 -#: src/emc/usr_intf/pncconf/pncconf.glade:33925 -#: src/emc/usr_intf/pncconf/pncconf.glade:33977 -#: src/emc/usr_intf/pncconf/pncconf.glade:34029 -#: src/emc/usr_intf/pncconf/pncconf.glade:34081 -#: src/emc/usr_intf/pncconf/pncconf.glade:34908 -#: src/emc/usr_intf/pncconf/pncconf.glade:34960 -#: src/emc/usr_intf/pncconf/pncconf.glade:35012 -#: src/emc/usr_intf/pncconf/pncconf.glade:35064 -#: src/emc/usr_intf/pncconf/pncconf.glade:36404 -#: src/emc/usr_intf/pncconf/pncconf.glade:36456 -#: src/emc/usr_intf/pncconf/pncconf.glade:36508 -#: src/emc/usr_intf/pncconf/pncconf.glade:36560 -#: src/emc/usr_intf/pncconf/pncconf.glade:37387 -#: src/emc/usr_intf/pncconf/pncconf.glade:37439 -#: src/emc/usr_intf/pncconf/pncconf.glade:37491 -#: src/emc/usr_intf/pncconf/pncconf.glade:37543 -#: src/emc/usr_intf/pncconf/pncconf.glade:37595 -#: src/emc/usr_intf/pncconf/pncconf.glade:37647 -#: src/emc/usr_intf/pncconf/pncconf.glade:37699 -#: src/emc/usr_intf/pncconf/pncconf.glade:37751 -#: src/emc/usr_intf/pncconf/pncconf.glade:37803 -#: src/emc/usr_intf/pncconf/pncconf.glade:37855 -#: src/emc/usr_intf/pncconf/pncconf.glade:37907 -#: src/emc/usr_intf/pncconf/pncconf.glade:37959 -#: src/emc/usr_intf/pncconf/pncconf.glade:38764 -#: src/emc/usr_intf/pncconf/pncconf.glade:38816 -#: src/emc/usr_intf/pncconf/pncconf.glade:38868 -#: src/emc/usr_intf/pncconf/pncconf.glade:38920 -#: src/emc/usr_intf/pncconf/pncconf.glade:38972 -#: src/emc/usr_intf/pncconf/pncconf.glade:39024 -#: src/emc/usr_intf/pncconf/pncconf.glade:39076 -#: src/emc/usr_intf/pncconf/pncconf.glade:39128 -#: src/emc/usr_intf/pncconf/pncconf.glade:39180 -#: src/emc/usr_intf/pncconf/pncconf.glade:39232 -#: src/emc/usr_intf/pncconf/pncconf.glade:39284 -#: src/emc/usr_intf/pncconf/pncconf.glade:39336 -#: src/emc/usr_intf/pncconf/pncconf.glade:40751 -#: src/emc/usr_intf/pncconf/pncconf.glade:40803 -#: src/emc/usr_intf/pncconf/pncconf.glade:40855 -#: src/emc/usr_intf/pncconf/pncconf.glade:40907 -#: src/emc/usr_intf/pncconf/pncconf.glade:41734 -#: src/emc/usr_intf/pncconf/pncconf.glade:41786 -#: src/emc/usr_intf/pncconf/pncconf.glade:41838 -#: src/emc/usr_intf/pncconf/pncconf.glade:41890 -#: src/emc/usr_intf/pncconf/pncconf.glade:41942 -#: src/emc/usr_intf/pncconf/pncconf.glade:41994 -#: src/emc/usr_intf/pncconf/pncconf.glade:42046 -#: src/emc/usr_intf/pncconf/pncconf.glade:42098 -#: src/emc/usr_intf/pncconf/pncconf.glade:42150 -#: src/emc/usr_intf/pncconf/pncconf.glade:42202 -#: src/emc/usr_intf/pncconf/pncconf.glade:42254 -#: src/emc/usr_intf/pncconf/pncconf.glade:42306 -#: src/emc/usr_intf/pncconf/pncconf.glade:42995 -#: src/emc/usr_intf/pncconf/pncconf.glade:43047 -#: src/emc/usr_intf/pncconf/pncconf.glade:43099 -#: src/emc/usr_intf/pncconf/pncconf.glade:43151 -#: src/emc/usr_intf/pncconf/pncconf.glade:43203 -#: src/emc/usr_intf/pncconf/pncconf.glade:43255 -#: src/emc/usr_intf/pncconf/pncconf.glade:43307 -#: src/emc/usr_intf/pncconf/pncconf.glade:43359 -#: src/emc/usr_intf/pncconf/pncconf.glade:43411 -#: src/emc/usr_intf/pncconf/pncconf.glade:43463 -#: src/emc/usr_intf/pncconf/pncconf.glade:43515 -#: src/emc/usr_intf/pncconf/pncconf.glade:43567 -#: src/emc/usr_intf/pncconf/pncconf.glade:44394 -#: src/emc/usr_intf/pncconf/pncconf.glade:44446 -#: src/emc/usr_intf/pncconf/pncconf.glade:44498 -#: src/emc/usr_intf/pncconf/pncconf.glade:44550 -#: src/emc/usr_intf/pncconf/pncconf.glade:46067 -#: src/emc/usr_intf/pncconf/pncconf.glade:46119 -#: src/emc/usr_intf/pncconf/pncconf.glade:46171 -#: src/emc/usr_intf/pncconf/pncconf.glade:46223 -#: src/emc/usr_intf/pncconf/pncconf.glade:46275 -#: src/emc/usr_intf/pncconf/pncconf.glade:46327 -#: src/emc/usr_intf/pncconf/pncconf.glade:46379 -#: src/emc/usr_intf/pncconf/pncconf.glade:46431 -#: src/emc/usr_intf/pncconf/pncconf.glade:46483 -#: src/emc/usr_intf/pncconf/pncconf.glade:46535 -#: src/emc/usr_intf/pncconf/pncconf.glade:46587 -#: src/emc/usr_intf/pncconf/pncconf.glade:46639 -#: src/emc/usr_intf/pncconf/pncconf.glade:47674 -#: src/emc/usr_intf/pncconf/pncconf.glade:47726 -#: src/emc/usr_intf/pncconf/pncconf.glade:47778 -#: src/emc/usr_intf/pncconf/pncconf.glade:47830 -#: src/emc/usr_intf/pncconf/pncconf.glade:48657 -#: src/emc/usr_intf/pncconf/pncconf.glade:48709 -#: src/emc/usr_intf/pncconf/pncconf.glade:48761 -#: src/emc/usr_intf/pncconf/pncconf.glade:48813 -#: src/emc/usr_intf/pncconf/pncconf.glade:48865 -#: src/emc/usr_intf/pncconf/pncconf.glade:48917 -#: src/emc/usr_intf/pncconf/pncconf.glade:48969 -#: src/emc/usr_intf/pncconf/pncconf.glade:49021 -#: src/emc/usr_intf/pncconf/pncconf.glade:49073 -#: src/emc/usr_intf/pncconf/pncconf.glade:49125 -#: src/emc/usr_intf/pncconf/pncconf.glade:49177 -#: src/emc/usr_intf/pncconf/pncconf.glade:49229 -#: src/emc/usr_intf/pncconf/pncconf.glade:49918 -#: src/emc/usr_intf/pncconf/pncconf.glade:49970 -#: src/emc/usr_intf/pncconf/pncconf.glade:50022 -#: src/emc/usr_intf/pncconf/pncconf.glade:50074 -#: src/emc/usr_intf/pncconf/pncconf.glade:50126 -#: src/emc/usr_intf/pncconf/pncconf.glade:50178 -#: src/emc/usr_intf/pncconf/pncconf.glade:50230 -#: src/emc/usr_intf/pncconf/pncconf.glade:50282 -#: src/emc/usr_intf/pncconf/pncconf.glade:50334 -#: src/emc/usr_intf/pncconf/pncconf.glade:50386 -#: src/emc/usr_intf/pncconf/pncconf.glade:50438 -#: src/emc/usr_intf/pncconf/pncconf.glade:50490 -#: src/emc/usr_intf/pncconf/pncconf.glade:51317 -#: src/emc/usr_intf/pncconf/pncconf.glade:51369 -#: src/emc/usr_intf/pncconf/pncconf.glade:51421 -#: src/emc/usr_intf/pncconf/pncconf.glade:51473 -#: src/emc/usr_intf/pncconf/pncconf.glade:52990 -#: src/emc/usr_intf/pncconf/pncconf.glade:53042 -#: src/emc/usr_intf/pncconf/pncconf.glade:53094 -#: src/emc/usr_intf/pncconf/pncconf.glade:53146 -#: src/emc/usr_intf/pncconf/pncconf.glade:53198 -#: src/emc/usr_intf/pncconf/pncconf.glade:53250 -#: src/emc/usr_intf/pncconf/pncconf.glade:53302 -#: src/emc/usr_intf/pncconf/pncconf.glade:53354 -#: src/emc/usr_intf/pncconf/pncconf.glade:53406 -#: src/emc/usr_intf/pncconf/pncconf.glade:53458 -#: src/emc/usr_intf/pncconf/pncconf.glade:53510 -#: src/emc/usr_intf/pncconf/pncconf.glade:53562 -#: emc/usr_intf/pncconf/pncconf.glade:9305 -#: emc/usr_intf/pncconf/pncconf.glade:9357 -#: emc/usr_intf/pncconf/pncconf.glade:9409 -#: emc/usr_intf/pncconf/pncconf.glade:9461 -#: emc/usr_intf/pncconf/pncconf.glade:10301 -#: emc/usr_intf/pncconf/pncconf.glade:10353 -#: emc/usr_intf/pncconf/pncconf.glade:10405 -#: emc/usr_intf/pncconf/pncconf.glade:10457 -#: emc/usr_intf/pncconf/pncconf.glade:10509 -#: emc/usr_intf/pncconf/pncconf.glade:10561 -#: emc/usr_intf/pncconf/pncconf.glade:10613 -#: emc/usr_intf/pncconf/pncconf.glade:10665 -#: emc/usr_intf/pncconf/pncconf.glade:10717 -#: emc/usr_intf/pncconf/pncconf.glade:10769 -#: emc/usr_intf/pncconf/pncconf.glade:11089 -#: emc/usr_intf/pncconf/pncconf.glade:11141 -#: emc/usr_intf/pncconf/pncconf.glade:11579 -#: emc/usr_intf/pncconf/pncconf.glade:11631 -#: emc/usr_intf/pncconf/pncconf.glade:11683 -#: emc/usr_intf/pncconf/pncconf.glade:11735 -#: emc/usr_intf/pncconf/pncconf.glade:11787 -#: emc/usr_intf/pncconf/pncconf.glade:11839 -#: emc/usr_intf/pncconf/pncconf.glade:11891 -#: emc/usr_intf/pncconf/pncconf.glade:11943 -#: emc/usr_intf/pncconf/pncconf.glade:11995 -#: emc/usr_intf/pncconf/pncconf.glade:12047 -#: emc/usr_intf/pncconf/pncconf.glade:12886 -#: emc/usr_intf/pncconf/pncconf.glade:12938 -#: emc/usr_intf/pncconf/pncconf.glade:12990 -#: emc/usr_intf/pncconf/pncconf.glade:13042 -#: emc/usr_intf/pncconf/pncconf.glade:13702 -#: emc/usr_intf/pncconf/pncconf.glade:13754 -#: emc/usr_intf/pncconf/pncconf.glade:14183 -#: emc/usr_intf/pncconf/pncconf.glade:14235 -#: emc/usr_intf/pncconf/pncconf.glade:14287 -#: emc/usr_intf/pncconf/pncconf.glade:14339 -#: emc/usr_intf/pncconf/pncconf.glade:14391 -#: emc/usr_intf/pncconf/pncconf.glade:14443 -#: emc/usr_intf/pncconf/pncconf.glade:14495 -#: emc/usr_intf/pncconf/pncconf.glade:14547 -#: emc/usr_intf/pncconf/pncconf.glade:14599 -#: emc/usr_intf/pncconf/pncconf.glade:14651 -#: emc/usr_intf/pncconf/pncconf.glade:14703 -#: emc/usr_intf/pncconf/pncconf.glade:14755 -#: emc/usr_intf/pncconf/pncconf.glade:15582 -#: emc/usr_intf/pncconf/pncconf.glade:15634 -#: emc/usr_intf/pncconf/pncconf.glade:15686 -#: emc/usr_intf/pncconf/pncconf.glade:15738 -#: emc/usr_intf/pncconf/pncconf.glade:16784 -#: emc/usr_intf/pncconf/pncconf.glade:16836 -#: emc/usr_intf/pncconf/pncconf.glade:16888 -#: emc/usr_intf/pncconf/pncconf.glade:16940 -#: emc/usr_intf/pncconf/pncconf.glade:16992 -#: emc/usr_intf/pncconf/pncconf.glade:17044 -#: emc/usr_intf/pncconf/pncconf.glade:17096 -#: emc/usr_intf/pncconf/pncconf.glade:17148 -#: emc/usr_intf/pncconf/pncconf.glade:17200 -#: emc/usr_intf/pncconf/pncconf.glade:17252 -#: emc/usr_intf/pncconf/pncconf.glade:17304 -#: emc/usr_intf/pncconf/pncconf.glade:18143 -#: emc/usr_intf/pncconf/pncconf.glade:18195 -#: emc/usr_intf/pncconf/pncconf.glade:18247 -#: emc/usr_intf/pncconf/pncconf.glade:18908 -#: emc/usr_intf/pncconf/pncconf.glade:18960 -#: emc/usr_intf/pncconf/pncconf.glade:26907 -#: emc/usr_intf/pncconf/pncconf.glade:26959 -#: emc/usr_intf/pncconf/pncconf.glade:27011 -#: emc/usr_intf/pncconf/pncconf.glade:27063 -#: emc/usr_intf/pncconf/pncconf.glade:27890 -#: emc/usr_intf/pncconf/pncconf.glade:27942 -#: emc/usr_intf/pncconf/pncconf.glade:27994 -#: emc/usr_intf/pncconf/pncconf.glade:28046 -#: emc/usr_intf/pncconf/pncconf.glade:28098 -#: emc/usr_intf/pncconf/pncconf.glade:28150 -#: emc/usr_intf/pncconf/pncconf.glade:28202 -#: emc/usr_intf/pncconf/pncconf.glade:28254 -#: emc/usr_intf/pncconf/pncconf.glade:28306 -#: emc/usr_intf/pncconf/pncconf.glade:28358 -#: emc/usr_intf/pncconf/pncconf.glade:28410 -#: emc/usr_intf/pncconf/pncconf.glade:28462 -#: emc/usr_intf/pncconf/pncconf.glade:29151 -#: emc/usr_intf/pncconf/pncconf.glade:29203 -#: emc/usr_intf/pncconf/pncconf.glade:29255 -#: emc/usr_intf/pncconf/pncconf.glade:29307 -#: emc/usr_intf/pncconf/pncconf.glade:29359 -#: emc/usr_intf/pncconf/pncconf.glade:29411 -#: emc/usr_intf/pncconf/pncconf.glade:29463 -#: emc/usr_intf/pncconf/pncconf.glade:29515 -#: emc/usr_intf/pncconf/pncconf.glade:29567 -#: emc/usr_intf/pncconf/pncconf.glade:29619 -#: emc/usr_intf/pncconf/pncconf.glade:29671 -#: emc/usr_intf/pncconf/pncconf.glade:29723 -#: emc/usr_intf/pncconf/pncconf.glade:30550 -#: emc/usr_intf/pncconf/pncconf.glade:30602 -#: emc/usr_intf/pncconf/pncconf.glade:30654 -#: emc/usr_intf/pncconf/pncconf.glade:30706 -#: emc/usr_intf/pncconf/pncconf.glade:32210 -#: emc/usr_intf/pncconf/pncconf.glade:32262 -#: emc/usr_intf/pncconf/pncconf.glade:32314 -#: emc/usr_intf/pncconf/pncconf.glade:32366 -#: emc/usr_intf/pncconf/pncconf.glade:32418 -#: emc/usr_intf/pncconf/pncconf.glade:32470 -#: emc/usr_intf/pncconf/pncconf.glade:32522 -#: emc/usr_intf/pncconf/pncconf.glade:32574 -#: emc/usr_intf/pncconf/pncconf.glade:32626 -#: emc/usr_intf/pncconf/pncconf.glade:32678 -#: emc/usr_intf/pncconf/pncconf.glade:32730 -#: emc/usr_intf/pncconf/pncconf.glade:32782 -#: emc/usr_intf/pncconf/pncconf.glade:33509 -#: emc/usr_intf/pncconf/pncconf.glade:33561 -#: emc/usr_intf/pncconf/pncconf.glade:33613 -#: emc/usr_intf/pncconf/pncconf.glade:33665 -#: emc/usr_intf/pncconf/pncconf.glade:33717 -#: emc/usr_intf/pncconf/pncconf.glade:33769 -#: emc/usr_intf/pncconf/pncconf.glade:33821 -#: emc/usr_intf/pncconf/pncconf.glade:33873 -#: emc/usr_intf/pncconf/pncconf.glade:33925 -#: emc/usr_intf/pncconf/pncconf.glade:33977 -#: emc/usr_intf/pncconf/pncconf.glade:34029 -#: emc/usr_intf/pncconf/pncconf.glade:34081 -#: emc/usr_intf/pncconf/pncconf.glade:34908 -#: emc/usr_intf/pncconf/pncconf.glade:34960 -#: emc/usr_intf/pncconf/pncconf.glade:35012 -#: emc/usr_intf/pncconf/pncconf.glade:35064 -#: emc/usr_intf/pncconf/pncconf.glade:36404 -#: emc/usr_intf/pncconf/pncconf.glade:36456 -#: emc/usr_intf/pncconf/pncconf.glade:36508 -#: emc/usr_intf/pncconf/pncconf.glade:36560 -#: emc/usr_intf/pncconf/pncconf.glade:37387 -#: emc/usr_intf/pncconf/pncconf.glade:37439 -#: emc/usr_intf/pncconf/pncconf.glade:37491 -#: emc/usr_intf/pncconf/pncconf.glade:37543 -#: emc/usr_intf/pncconf/pncconf.glade:37595 -#: emc/usr_intf/pncconf/pncconf.glade:37647 -#: emc/usr_intf/pncconf/pncconf.glade:37699 -#: emc/usr_intf/pncconf/pncconf.glade:37751 -#: emc/usr_intf/pncconf/pncconf.glade:37803 -#: emc/usr_intf/pncconf/pncconf.glade:37855 -#: emc/usr_intf/pncconf/pncconf.glade:37907 -#: emc/usr_intf/pncconf/pncconf.glade:37959 -#: emc/usr_intf/pncconf/pncconf.glade:38764 -#: emc/usr_intf/pncconf/pncconf.glade:38816 -#: emc/usr_intf/pncconf/pncconf.glade:38868 -#: emc/usr_intf/pncconf/pncconf.glade:38920 -#: emc/usr_intf/pncconf/pncconf.glade:38972 -#: emc/usr_intf/pncconf/pncconf.glade:39024 -#: emc/usr_intf/pncconf/pncconf.glade:39076 -#: emc/usr_intf/pncconf/pncconf.glade:39128 -#: emc/usr_intf/pncconf/pncconf.glade:39180 -#: emc/usr_intf/pncconf/pncconf.glade:39232 -#: emc/usr_intf/pncconf/pncconf.glade:39284 -#: emc/usr_intf/pncconf/pncconf.glade:39336 -#: emc/usr_intf/pncconf/pncconf.glade:40751 -#: emc/usr_intf/pncconf/pncconf.glade:40803 -#: emc/usr_intf/pncconf/pncconf.glade:40855 -#: emc/usr_intf/pncconf/pncconf.glade:40907 -#: emc/usr_intf/pncconf/pncconf.glade:41734 -#: emc/usr_intf/pncconf/pncconf.glade:41786 -#: emc/usr_intf/pncconf/pncconf.glade:41838 -#: emc/usr_intf/pncconf/pncconf.glade:41890 -#: emc/usr_intf/pncconf/pncconf.glade:41942 -#: emc/usr_intf/pncconf/pncconf.glade:41994 -#: emc/usr_intf/pncconf/pncconf.glade:42046 -#: emc/usr_intf/pncconf/pncconf.glade:42098 -#: emc/usr_intf/pncconf/pncconf.glade:42150 -#: emc/usr_intf/pncconf/pncconf.glade:42202 -#: emc/usr_intf/pncconf/pncconf.glade:42254 -#: emc/usr_intf/pncconf/pncconf.glade:42306 -#: emc/usr_intf/pncconf/pncconf.glade:42995 -#: emc/usr_intf/pncconf/pncconf.glade:43047 -#: emc/usr_intf/pncconf/pncconf.glade:43099 -#: emc/usr_intf/pncconf/pncconf.glade:43151 -#: emc/usr_intf/pncconf/pncconf.glade:43203 -#: emc/usr_intf/pncconf/pncconf.glade:43255 -#: emc/usr_intf/pncconf/pncconf.glade:43307 -#: emc/usr_intf/pncconf/pncconf.glade:43359 -#: emc/usr_intf/pncconf/pncconf.glade:43411 -#: emc/usr_intf/pncconf/pncconf.glade:43463 -#: emc/usr_intf/pncconf/pncconf.glade:43515 -#: emc/usr_intf/pncconf/pncconf.glade:43567 -#: emc/usr_intf/pncconf/pncconf.glade:44394 -#: emc/usr_intf/pncconf/pncconf.glade:44446 -#: emc/usr_intf/pncconf/pncconf.glade:44498 -#: emc/usr_intf/pncconf/pncconf.glade:44550 -#: emc/usr_intf/pncconf/pncconf.glade:46067 -#: emc/usr_intf/pncconf/pncconf.glade:46119 -#: emc/usr_intf/pncconf/pncconf.glade:46171 -#: emc/usr_intf/pncconf/pncconf.glade:46223 -#: emc/usr_intf/pncconf/pncconf.glade:46275 -#: emc/usr_intf/pncconf/pncconf.glade:46327 -#: emc/usr_intf/pncconf/pncconf.glade:46379 -#: emc/usr_intf/pncconf/pncconf.glade:46431 -#: emc/usr_intf/pncconf/pncconf.glade:46483 -#: emc/usr_intf/pncconf/pncconf.glade:46535 -#: emc/usr_intf/pncconf/pncconf.glade:46587 -#: emc/usr_intf/pncconf/pncconf.glade:46639 -#: emc/usr_intf/pncconf/pncconf.glade:47674 -#: emc/usr_intf/pncconf/pncconf.glade:47726 -#: emc/usr_intf/pncconf/pncconf.glade:47778 -#: emc/usr_intf/pncconf/pncconf.glade:47830 -#: emc/usr_intf/pncconf/pncconf.glade:48657 -#: emc/usr_intf/pncconf/pncconf.glade:48709 -#: emc/usr_intf/pncconf/pncconf.glade:48761 -#: emc/usr_intf/pncconf/pncconf.glade:48813 -#: emc/usr_intf/pncconf/pncconf.glade:48865 -#: emc/usr_intf/pncconf/pncconf.glade:48917 -#: emc/usr_intf/pncconf/pncconf.glade:48969 -#: emc/usr_intf/pncconf/pncconf.glade:49021 -#: emc/usr_intf/pncconf/pncconf.glade:49073 -#: emc/usr_intf/pncconf/pncconf.glade:49125 -#: emc/usr_intf/pncconf/pncconf.glade:49177 -#: emc/usr_intf/pncconf/pncconf.glade:49229 -#: emc/usr_intf/pncconf/pncconf.glade:49918 -#: emc/usr_intf/pncconf/pncconf.glade:49970 -#: emc/usr_intf/pncconf/pncconf.glade:50022 -#: emc/usr_intf/pncconf/pncconf.glade:50074 -#: emc/usr_intf/pncconf/pncconf.glade:50126 -#: emc/usr_intf/pncconf/pncconf.glade:50178 -#: emc/usr_intf/pncconf/pncconf.glade:50230 -#: emc/usr_intf/pncconf/pncconf.glade:50282 -#: emc/usr_intf/pncconf/pncconf.glade:50334 -#: emc/usr_intf/pncconf/pncconf.glade:50386 -#: emc/usr_intf/pncconf/pncconf.glade:50438 -#: emc/usr_intf/pncconf/pncconf.glade:50490 -#: emc/usr_intf/pncconf/pncconf.glade:51317 -#: emc/usr_intf/pncconf/pncconf.glade:51369 -#: emc/usr_intf/pncconf/pncconf.glade:51421 -#: emc/usr_intf/pncconf/pncconf.glade:51473 -#: emc/usr_intf/pncconf/pncconf.glade:52990 -#: emc/usr_intf/pncconf/pncconf.glade:53042 -#: emc/usr_intf/pncconf/pncconf.glade:53094 -#: emc/usr_intf/pncconf/pncconf.glade:53146 -#: emc/usr_intf/pncconf/pncconf.glade:53198 -#: emc/usr_intf/pncconf/pncconf.glade:53250 -#: emc/usr_intf/pncconf/pncconf.glade:53302 -#: emc/usr_intf/pncconf/pncconf.glade:53354 -#: emc/usr_intf/pncconf/pncconf.glade:53406 -#: emc/usr_intf/pncconf/pncconf.glade:53458 -#: emc/usr_intf/pncconf/pncconf.glade:53510 -#: emc/usr_intf/pncconf/pncconf.glade:53562 -#: src/emc/usr_intf/pncconf/pncconf.glade:9329 -#: src/emc/usr_intf/pncconf/pncconf.glade:9381 -#: src/emc/usr_intf/pncconf/pncconf.glade:9433 -#: src/emc/usr_intf/pncconf/pncconf.glade:9485 -#: src/emc/usr_intf/pncconf/pncconf.glade:10325 -#: src/emc/usr_intf/pncconf/pncconf.glade:10377 -#: src/emc/usr_intf/pncconf/pncconf.glade:10429 -#: src/emc/usr_intf/pncconf/pncconf.glade:10481 -#: src/emc/usr_intf/pncconf/pncconf.glade:10533 -#: src/emc/usr_intf/pncconf/pncconf.glade:10585 -#: src/emc/usr_intf/pncconf/pncconf.glade:10637 -#: src/emc/usr_intf/pncconf/pncconf.glade:10689 -#: src/emc/usr_intf/pncconf/pncconf.glade:10741 -#: src/emc/usr_intf/pncconf/pncconf.glade:10793 -#: src/emc/usr_intf/pncconf/pncconf.glade:11113 -#: src/emc/usr_intf/pncconf/pncconf.glade:11165 -#: src/emc/usr_intf/pncconf/pncconf.glade:11603 -#: src/emc/usr_intf/pncconf/pncconf.glade:11655 -#: src/emc/usr_intf/pncconf/pncconf.glade:11707 -#: src/emc/usr_intf/pncconf/pncconf.glade:11759 -#: src/emc/usr_intf/pncconf/pncconf.glade:11811 -#: src/emc/usr_intf/pncconf/pncconf.glade:11863 -#: src/emc/usr_intf/pncconf/pncconf.glade:11915 -#: src/emc/usr_intf/pncconf/pncconf.glade:11967 -#: src/emc/usr_intf/pncconf/pncconf.glade:12019 -#: src/emc/usr_intf/pncconf/pncconf.glade:12071 -#: src/emc/usr_intf/pncconf/pncconf.glade:12910 -#: src/emc/usr_intf/pncconf/pncconf.glade:12962 -#: src/emc/usr_intf/pncconf/pncconf.glade:13014 -#: src/emc/usr_intf/pncconf/pncconf.glade:13066 -#: src/emc/usr_intf/pncconf/pncconf.glade:13726 -#: src/emc/usr_intf/pncconf/pncconf.glade:13778 -#: src/emc/usr_intf/pncconf/pncconf.glade:14207 -#: src/emc/usr_intf/pncconf/pncconf.glade:14259 -#: src/emc/usr_intf/pncconf/pncconf.glade:14311 -#: src/emc/usr_intf/pncconf/pncconf.glade:14363 -#: src/emc/usr_intf/pncconf/pncconf.glade:14415 -#: src/emc/usr_intf/pncconf/pncconf.glade:14467 -#: src/emc/usr_intf/pncconf/pncconf.glade:14519 -#: src/emc/usr_intf/pncconf/pncconf.glade:14571 -#: src/emc/usr_intf/pncconf/pncconf.glade:14623 -#: src/emc/usr_intf/pncconf/pncconf.glade:14675 -#: src/emc/usr_intf/pncconf/pncconf.glade:14727 -#: src/emc/usr_intf/pncconf/pncconf.glade:14779 -#: src/emc/usr_intf/pncconf/pncconf.glade:15606 -#: src/emc/usr_intf/pncconf/pncconf.glade:15658 -#: src/emc/usr_intf/pncconf/pncconf.glade:15710 -#: src/emc/usr_intf/pncconf/pncconf.glade:15762 -#: src/emc/usr_intf/pncconf/pncconf.glade:16808 -#: src/emc/usr_intf/pncconf/pncconf.glade:16860 -#: src/emc/usr_intf/pncconf/pncconf.glade:16912 -#: src/emc/usr_intf/pncconf/pncconf.glade:16964 -#: src/emc/usr_intf/pncconf/pncconf.glade:17016 -#: src/emc/usr_intf/pncconf/pncconf.glade:17068 -#: src/emc/usr_intf/pncconf/pncconf.glade:17120 -#: src/emc/usr_intf/pncconf/pncconf.glade:17172 -#: src/emc/usr_intf/pncconf/pncconf.glade:17224 -#: src/emc/usr_intf/pncconf/pncconf.glade:17276 -#: src/emc/usr_intf/pncconf/pncconf.glade:17328 -#: src/emc/usr_intf/pncconf/pncconf.glade:18167 -#: src/emc/usr_intf/pncconf/pncconf.glade:18219 -#: src/emc/usr_intf/pncconf/pncconf.glade:18271 -#: src/emc/usr_intf/pncconf/pncconf.glade:18932 -#: src/emc/usr_intf/pncconf/pncconf.glade:18984 -#: src/emc/usr_intf/pncconf/pncconf.glade:26931 -#: src/emc/usr_intf/pncconf/pncconf.glade:26983 -#: src/emc/usr_intf/pncconf/pncconf.glade:27035 -#: src/emc/usr_intf/pncconf/pncconf.glade:27087 -#: src/emc/usr_intf/pncconf/pncconf.glade:27914 -#: src/emc/usr_intf/pncconf/pncconf.glade:27966 -#: src/emc/usr_intf/pncconf/pncconf.glade:28018 -#: src/emc/usr_intf/pncconf/pncconf.glade:28070 -#: src/emc/usr_intf/pncconf/pncconf.glade:28122 -#: src/emc/usr_intf/pncconf/pncconf.glade:28174 -#: src/emc/usr_intf/pncconf/pncconf.glade:28226 -#: src/emc/usr_intf/pncconf/pncconf.glade:28278 -#: src/emc/usr_intf/pncconf/pncconf.glade:28330 -#: src/emc/usr_intf/pncconf/pncconf.glade:28382 -#: src/emc/usr_intf/pncconf/pncconf.glade:28434 -#: src/emc/usr_intf/pncconf/pncconf.glade:28486 -#: src/emc/usr_intf/pncconf/pncconf.glade:29175 -#: src/emc/usr_intf/pncconf/pncconf.glade:29227 -#: src/emc/usr_intf/pncconf/pncconf.glade:29279 -#: src/emc/usr_intf/pncconf/pncconf.glade:29331 -#: src/emc/usr_intf/pncconf/pncconf.glade:29383 -#: src/emc/usr_intf/pncconf/pncconf.glade:29435 -#: src/emc/usr_intf/pncconf/pncconf.glade:29487 -#: src/emc/usr_intf/pncconf/pncconf.glade:29539 -#: src/emc/usr_intf/pncconf/pncconf.glade:29591 -#: src/emc/usr_intf/pncconf/pncconf.glade:29643 -#: src/emc/usr_intf/pncconf/pncconf.glade:29695 -#: src/emc/usr_intf/pncconf/pncconf.glade:29747 -#: src/emc/usr_intf/pncconf/pncconf.glade:30574 -#: src/emc/usr_intf/pncconf/pncconf.glade:30626 -#: src/emc/usr_intf/pncconf/pncconf.glade:30678 -#: src/emc/usr_intf/pncconf/pncconf.glade:30730 -#: src/emc/usr_intf/pncconf/pncconf.glade:32234 -#: src/emc/usr_intf/pncconf/pncconf.glade:32286 -#: src/emc/usr_intf/pncconf/pncconf.glade:32338 -#: src/emc/usr_intf/pncconf/pncconf.glade:32390 -#: src/emc/usr_intf/pncconf/pncconf.glade:32442 -#: src/emc/usr_intf/pncconf/pncconf.glade:32494 -#: src/emc/usr_intf/pncconf/pncconf.glade:32546 -#: src/emc/usr_intf/pncconf/pncconf.glade:32598 -#: src/emc/usr_intf/pncconf/pncconf.glade:32650 -#: src/emc/usr_intf/pncconf/pncconf.glade:32702 -#: src/emc/usr_intf/pncconf/pncconf.glade:32754 -#: src/emc/usr_intf/pncconf/pncconf.glade:32806 -#: src/emc/usr_intf/pncconf/pncconf.glade:33533 -#: src/emc/usr_intf/pncconf/pncconf.glade:33585 -#: src/emc/usr_intf/pncconf/pncconf.glade:33637 -#: src/emc/usr_intf/pncconf/pncconf.glade:33689 -#: src/emc/usr_intf/pncconf/pncconf.glade:33741 -#: src/emc/usr_intf/pncconf/pncconf.glade:33793 -#: src/emc/usr_intf/pncconf/pncconf.glade:33845 -#: src/emc/usr_intf/pncconf/pncconf.glade:33897 -#: src/emc/usr_intf/pncconf/pncconf.glade:33949 -#: src/emc/usr_intf/pncconf/pncconf.glade:34001 -#: src/emc/usr_intf/pncconf/pncconf.glade:34053 -#: src/emc/usr_intf/pncconf/pncconf.glade:34105 -#: src/emc/usr_intf/pncconf/pncconf.glade:34932 -#: src/emc/usr_intf/pncconf/pncconf.glade:34984 -#: src/emc/usr_intf/pncconf/pncconf.glade:35036 -#: src/emc/usr_intf/pncconf/pncconf.glade:35088 -#: src/emc/usr_intf/pncconf/pncconf.glade:36428 -#: src/emc/usr_intf/pncconf/pncconf.glade:36480 -#: src/emc/usr_intf/pncconf/pncconf.glade:36532 -#: src/emc/usr_intf/pncconf/pncconf.glade:36584 -#: src/emc/usr_intf/pncconf/pncconf.glade:37411 -#: src/emc/usr_intf/pncconf/pncconf.glade:37463 -#: src/emc/usr_intf/pncconf/pncconf.glade:37515 -#: src/emc/usr_intf/pncconf/pncconf.glade:37567 -#: src/emc/usr_intf/pncconf/pncconf.glade:37619 -#: src/emc/usr_intf/pncconf/pncconf.glade:37671 -#: src/emc/usr_intf/pncconf/pncconf.glade:37723 -#: src/emc/usr_intf/pncconf/pncconf.glade:37775 -#: src/emc/usr_intf/pncconf/pncconf.glade:37827 -#: src/emc/usr_intf/pncconf/pncconf.glade:37879 -#: src/emc/usr_intf/pncconf/pncconf.glade:37931 -#: src/emc/usr_intf/pncconf/pncconf.glade:37983 -#: src/emc/usr_intf/pncconf/pncconf.glade:38788 -#: src/emc/usr_intf/pncconf/pncconf.glade:38840 -#: src/emc/usr_intf/pncconf/pncconf.glade:38892 -#: src/emc/usr_intf/pncconf/pncconf.glade:38944 -#: src/emc/usr_intf/pncconf/pncconf.glade:38996 -#: src/emc/usr_intf/pncconf/pncconf.glade:39048 -#: src/emc/usr_intf/pncconf/pncconf.glade:39100 -#: src/emc/usr_intf/pncconf/pncconf.glade:39152 -#: src/emc/usr_intf/pncconf/pncconf.glade:39204 -#: src/emc/usr_intf/pncconf/pncconf.glade:39256 -#: src/emc/usr_intf/pncconf/pncconf.glade:39308 -#: src/emc/usr_intf/pncconf/pncconf.glade:39360 -#: src/emc/usr_intf/pncconf/pncconf.glade:40775 -#: src/emc/usr_intf/pncconf/pncconf.glade:40827 -#: src/emc/usr_intf/pncconf/pncconf.glade:40879 -#: src/emc/usr_intf/pncconf/pncconf.glade:40931 -#: src/emc/usr_intf/pncconf/pncconf.glade:41758 -#: src/emc/usr_intf/pncconf/pncconf.glade:41810 -#: src/emc/usr_intf/pncconf/pncconf.glade:41862 -#: src/emc/usr_intf/pncconf/pncconf.glade:41914 -#: src/emc/usr_intf/pncconf/pncconf.glade:41966 -#: src/emc/usr_intf/pncconf/pncconf.glade:42018 -#: src/emc/usr_intf/pncconf/pncconf.glade:42070 -#: src/emc/usr_intf/pncconf/pncconf.glade:42122 -#: src/emc/usr_intf/pncconf/pncconf.glade:42174 -#: src/emc/usr_intf/pncconf/pncconf.glade:42226 -#: src/emc/usr_intf/pncconf/pncconf.glade:42278 -#: src/emc/usr_intf/pncconf/pncconf.glade:42330 -#: src/emc/usr_intf/pncconf/pncconf.glade:43019 -#: src/emc/usr_intf/pncconf/pncconf.glade:43071 -#: src/emc/usr_intf/pncconf/pncconf.glade:43123 -#: src/emc/usr_intf/pncconf/pncconf.glade:43175 -#: src/emc/usr_intf/pncconf/pncconf.glade:43227 -#: src/emc/usr_intf/pncconf/pncconf.glade:43279 -#: src/emc/usr_intf/pncconf/pncconf.glade:43331 -#: src/emc/usr_intf/pncconf/pncconf.glade:43383 -#: src/emc/usr_intf/pncconf/pncconf.glade:43435 -#: src/emc/usr_intf/pncconf/pncconf.glade:43487 -#: src/emc/usr_intf/pncconf/pncconf.glade:43539 -#: src/emc/usr_intf/pncconf/pncconf.glade:43591 -#: src/emc/usr_intf/pncconf/pncconf.glade:44418 -#: src/emc/usr_intf/pncconf/pncconf.glade:44470 -#: src/emc/usr_intf/pncconf/pncconf.glade:44522 -#: src/emc/usr_intf/pncconf/pncconf.glade:44574 -#: src/emc/usr_intf/pncconf/pncconf.glade:46091 -#: src/emc/usr_intf/pncconf/pncconf.glade:46143 -#: src/emc/usr_intf/pncconf/pncconf.glade:46195 -#: src/emc/usr_intf/pncconf/pncconf.glade:46247 -#: src/emc/usr_intf/pncconf/pncconf.glade:46299 -#: src/emc/usr_intf/pncconf/pncconf.glade:46351 -#: src/emc/usr_intf/pncconf/pncconf.glade:46403 -#: src/emc/usr_intf/pncconf/pncconf.glade:46455 -#: src/emc/usr_intf/pncconf/pncconf.glade:46507 -#: src/emc/usr_intf/pncconf/pncconf.glade:46559 -#: src/emc/usr_intf/pncconf/pncconf.glade:46611 -#: src/emc/usr_intf/pncconf/pncconf.glade:46663 -#: src/emc/usr_intf/pncconf/pncconf.glade:47698 -#: src/emc/usr_intf/pncconf/pncconf.glade:47750 -#: src/emc/usr_intf/pncconf/pncconf.glade:47802 -#: src/emc/usr_intf/pncconf/pncconf.glade:47854 -#: src/emc/usr_intf/pncconf/pncconf.glade:48681 -#: src/emc/usr_intf/pncconf/pncconf.glade:48733 -#: src/emc/usr_intf/pncconf/pncconf.glade:48785 -#: src/emc/usr_intf/pncconf/pncconf.glade:48837 -#: src/emc/usr_intf/pncconf/pncconf.glade:48889 -#: src/emc/usr_intf/pncconf/pncconf.glade:48941 -#: src/emc/usr_intf/pncconf/pncconf.glade:48993 -#: src/emc/usr_intf/pncconf/pncconf.glade:49045 -#: src/emc/usr_intf/pncconf/pncconf.glade:49097 -#: src/emc/usr_intf/pncconf/pncconf.glade:49149 -#: src/emc/usr_intf/pncconf/pncconf.glade:49201 -#: src/emc/usr_intf/pncconf/pncconf.glade:49253 -#: src/emc/usr_intf/pncconf/pncconf.glade:49942 -#: src/emc/usr_intf/pncconf/pncconf.glade:49994 -#: src/emc/usr_intf/pncconf/pncconf.glade:50046 -#: src/emc/usr_intf/pncconf/pncconf.glade:50098 -#: src/emc/usr_intf/pncconf/pncconf.glade:50150 -#: src/emc/usr_intf/pncconf/pncconf.glade:50202 -#: src/emc/usr_intf/pncconf/pncconf.glade:50254 -#: src/emc/usr_intf/pncconf/pncconf.glade:50306 -#: src/emc/usr_intf/pncconf/pncconf.glade:50358 -#: src/emc/usr_intf/pncconf/pncconf.glade:50410 -#: src/emc/usr_intf/pncconf/pncconf.glade:50462 -#: src/emc/usr_intf/pncconf/pncconf.glade:50514 -#: src/emc/usr_intf/pncconf/pncconf.glade:51341 -#: src/emc/usr_intf/pncconf/pncconf.glade:51393 -#: src/emc/usr_intf/pncconf/pncconf.glade:51445 -#: src/emc/usr_intf/pncconf/pncconf.glade:51497 -#: src/emc/usr_intf/pncconf/pncconf.glade:53014 -#: src/emc/usr_intf/pncconf/pncconf.glade:53066 -#: src/emc/usr_intf/pncconf/pncconf.glade:53118 -#: src/emc/usr_intf/pncconf/pncconf.glade:53170 -#: src/emc/usr_intf/pncconf/pncconf.glade:53222 -#: src/emc/usr_intf/pncconf/pncconf.glade:53274 -#: src/emc/usr_intf/pncconf/pncconf.glade:53326 -#: src/emc/usr_intf/pncconf/pncconf.glade:53378 -#: src/emc/usr_intf/pncconf/pncconf.glade:53430 -#: src/emc/usr_intf/pncconf/pncconf.glade:53482 -#: src/emc/usr_intf/pncconf/pncconf.glade:53534 -#: src/emc/usr_intf/pncconf/pncconf.glade:53586 -#: src/emc/usr_intf/pncconf/pncconf.glade:54621 -#: src/emc/usr_intf/pncconf/pncconf.glade:54673 -#: src/emc/usr_intf/pncconf/pncconf.glade:54725 -#: src/emc/usr_intf/pncconf/pncconf.glade:54777 -#: src/emc/usr_intf/pncconf/pncconf.glade:55604 -#: src/emc/usr_intf/pncconf/pncconf.glade:55656 -#: src/emc/usr_intf/pncconf/pncconf.glade:55708 -#: src/emc/usr_intf/pncconf/pncconf.glade:55760 -#: src/emc/usr_intf/pncconf/pncconf.glade:55812 -#: src/emc/usr_intf/pncconf/pncconf.glade:55864 -#: src/emc/usr_intf/pncconf/pncconf.glade:55916 -#: src/emc/usr_intf/pncconf/pncconf.glade:55968 -#: src/emc/usr_intf/pncconf/pncconf.glade:56020 -#: src/emc/usr_intf/pncconf/pncconf.glade:56072 -#: src/emc/usr_intf/pncconf/pncconf.glade:56124 -#: src/emc/usr_intf/pncconf/pncconf.glade:56176 -#: src/emc/usr_intf/pncconf/pncconf.glade:56865 -#: src/emc/usr_intf/pncconf/pncconf.glade:56917 -#: src/emc/usr_intf/pncconf/pncconf.glade:56969 -#: src/emc/usr_intf/pncconf/pncconf.glade:57021 -#: src/emc/usr_intf/pncconf/pncconf.glade:57073 -#: src/emc/usr_intf/pncconf/pncconf.glade:57125 -#: src/emc/usr_intf/pncconf/pncconf.glade:57177 -#: src/emc/usr_intf/pncconf/pncconf.glade:57229 -#: src/emc/usr_intf/pncconf/pncconf.glade:57281 -#: src/emc/usr_intf/pncconf/pncconf.glade:57333 -#: src/emc/usr_intf/pncconf/pncconf.glade:57385 -#: src/emc/usr_intf/pncconf/pncconf.glade:57437 -#: src/emc/usr_intf/pncconf/pncconf.glade:58264 -#: src/emc/usr_intf/pncconf/pncconf.glade:58316 -#: src/emc/usr_intf/pncconf/pncconf.glade:58368 -#: src/emc/usr_intf/pncconf/pncconf.glade:58420 -#: src/emc/usr_intf/pncconf/pncconf.glade:59937 -#: src/emc/usr_intf/pncconf/pncconf.glade:59989 -#: src/emc/usr_intf/pncconf/pncconf.glade:60041 -#: src/emc/usr_intf/pncconf/pncconf.glade:60093 -#: src/emc/usr_intf/pncconf/pncconf.glade:60145 -#: src/emc/usr_intf/pncconf/pncconf.glade:60197 -#: src/emc/usr_intf/pncconf/pncconf.glade:60249 -#: src/emc/usr_intf/pncconf/pncconf.glade:60301 -#: src/emc/usr_intf/pncconf/pncconf.glade:60353 -#: src/emc/usr_intf/pncconf/pncconf.glade:60405 -#: src/emc/usr_intf/pncconf/pncconf.glade:60457 -#: src/emc/usr_intf/pncconf/pncconf.glade:60509 +#: src/emc/usr_intf/pncconf/pncconf.glade:13094 +#: src/emc/usr_intf/pncconf/pncconf.glade:13146 +#: src/emc/usr_intf/pncconf/pncconf.glade:13198 +#: src/emc/usr_intf/pncconf/pncconf.glade:13250 +#: src/emc/usr_intf/pncconf/pncconf.glade:13302 +#: src/emc/usr_intf/pncconf/pncconf.glade:13354 +#: src/emc/usr_intf/pncconf/pncconf.glade:13406 +#: src/emc/usr_intf/pncconf/pncconf.glade:13458 +#: src/emc/usr_intf/pncconf/pncconf.glade:13510 +#: src/emc/usr_intf/pncconf/pncconf.glade:14556 +#: src/emc/usr_intf/pncconf/pncconf.glade:14608 +#: src/emc/usr_intf/pncconf/pncconf.glade:14660 +#: src/emc/usr_intf/pncconf/pncconf.glade:14712 +#: src/emc/usr_intf/pncconf/pncconf.glade:15539 +#: src/emc/usr_intf/pncconf/pncconf.glade:15591 +#: src/emc/usr_intf/pncconf/pncconf.glade:15643 +#: src/emc/usr_intf/pncconf/pncconf.glade:15695 +#: src/emc/usr_intf/pncconf/pncconf.glade:15747 +#: src/emc/usr_intf/pncconf/pncconf.glade:15799 +#: src/emc/usr_intf/pncconf/pncconf.glade:15851 +#: src/emc/usr_intf/pncconf/pncconf.glade:15903 +#: src/emc/usr_intf/pncconf/pncconf.glade:15955 +#: src/emc/usr_intf/pncconf/pncconf.glade:16007 +#: src/emc/usr_intf/pncconf/pncconf.glade:16059 +#: src/emc/usr_intf/pncconf/pncconf.glade:16111 +#: src/emc/usr_intf/pncconf/pncconf.glade:16540 +#: src/emc/usr_intf/pncconf/pncconf.glade:16592 +#: src/emc/usr_intf/pncconf/pncconf.glade:17253 +#: src/emc/usr_intf/pncconf/pncconf.glade:17305 +#: src/emc/usr_intf/pncconf/pncconf.glade:17357 +#: src/emc/usr_intf/pncconf/pncconf.glade:18196 +#: src/emc/usr_intf/pncconf/pncconf.glade:18248 +#: src/emc/usr_intf/pncconf/pncconf.glade:18300 +#: src/emc/usr_intf/pncconf/pncconf.glade:18352 +#: src/emc/usr_intf/pncconf/pncconf.glade:18404 +#: src/emc/usr_intf/pncconf/pncconf.glade:18456 +#: src/emc/usr_intf/pncconf/pncconf.glade:18508 +#: src/emc/usr_intf/pncconf/pncconf.glade:18560 +#: src/emc/usr_intf/pncconf/pncconf.glade:18612 +#: src/emc/usr_intf/pncconf/pncconf.glade:18664 +#: src/emc/usr_intf/pncconf/pncconf.glade:18716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26612 +#: src/emc/usr_intf/pncconf/pncconf.glade:26664 +#: src/emc/usr_intf/pncconf/pncconf.glade:26716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26768 +#: src/emc/usr_intf/pncconf/pncconf.glade:26820 +#: src/emc/usr_intf/pncconf/pncconf.glade:26872 +#: src/emc/usr_intf/pncconf/pncconf.glade:26924 +#: src/emc/usr_intf/pncconf/pncconf.glade:26976 +#: src/emc/usr_intf/pncconf/pncconf.glade:27028 +#: src/emc/usr_intf/pncconf/pncconf.glade:27080 +#: src/emc/usr_intf/pncconf/pncconf.glade:27132 +#: src/emc/usr_intf/pncconf/pncconf.glade:27184 +#: src/emc/usr_intf/pncconf/pncconf.glade:28011 +#: src/emc/usr_intf/pncconf/pncconf.glade:28063 +#: src/emc/usr_intf/pncconf/pncconf.glade:28115 +#: src/emc/usr_intf/pncconf/pncconf.glade:28167 +#: src/emc/usr_intf/pncconf/pncconf.glade:29507 +#: src/emc/usr_intf/pncconf/pncconf.glade:29559 +#: src/emc/usr_intf/pncconf/pncconf.glade:29611 +#: src/emc/usr_intf/pncconf/pncconf.glade:29663 +#: src/emc/usr_intf/pncconf/pncconf.glade:30490 +#: src/emc/usr_intf/pncconf/pncconf.glade:30542 +#: src/emc/usr_intf/pncconf/pncconf.glade:30594 +#: src/emc/usr_intf/pncconf/pncconf.glade:30646 +#: src/emc/usr_intf/pncconf/pncconf.glade:30698 +#: src/emc/usr_intf/pncconf/pncconf.glade:30750 +#: src/emc/usr_intf/pncconf/pncconf.glade:30802 +#: src/emc/usr_intf/pncconf/pncconf.glade:30854 +#: src/emc/usr_intf/pncconf/pncconf.glade:30906 +#: src/emc/usr_intf/pncconf/pncconf.glade:30958 +#: src/emc/usr_intf/pncconf/pncconf.glade:31010 +#: src/emc/usr_intf/pncconf/pncconf.glade:31062 +#: src/emc/usr_intf/pncconf/pncconf.glade:31878 +#: src/emc/usr_intf/pncconf/pncconf.glade:31930 +#: src/emc/usr_intf/pncconf/pncconf.glade:31982 +#: src/emc/usr_intf/pncconf/pncconf.glade:32034 +#: src/emc/usr_intf/pncconf/pncconf.glade:32086 +#: src/emc/usr_intf/pncconf/pncconf.glade:32138 +#: src/emc/usr_intf/pncconf/pncconf.glade:32190 +#: src/emc/usr_intf/pncconf/pncconf.glade:32242 +#: src/emc/usr_intf/pncconf/pncconf.glade:32294 +#: src/emc/usr_intf/pncconf/pncconf.glade:32346 +#: src/emc/usr_intf/pncconf/pncconf.glade:32398 +#: src/emc/usr_intf/pncconf/pncconf.glade:32450 +#: src/emc/usr_intf/pncconf/pncconf.glade:33852 +#: src/emc/usr_intf/pncconf/pncconf.glade:33904 +#: src/emc/usr_intf/pncconf/pncconf.glade:33956 +#: src/emc/usr_intf/pncconf/pncconf.glade:34008 +#: src/emc/usr_intf/pncconf/pncconf.glade:34835 +#: src/emc/usr_intf/pncconf/pncconf.glade:34887 +#: src/emc/usr_intf/pncconf/pncconf.glade:34939 +#: src/emc/usr_intf/pncconf/pncconf.glade:34991 +#: src/emc/usr_intf/pncconf/pncconf.glade:35043 +#: src/emc/usr_intf/pncconf/pncconf.glade:35095 +#: src/emc/usr_intf/pncconf/pncconf.glade:35147 +#: src/emc/usr_intf/pncconf/pncconf.glade:35199 +#: src/emc/usr_intf/pncconf/pncconf.glade:35251 +#: src/emc/usr_intf/pncconf/pncconf.glade:35303 +#: src/emc/usr_intf/pncconf/pncconf.glade:35355 +#: src/emc/usr_intf/pncconf/pncconf.glade:35407 +#: src/emc/usr_intf/pncconf/pncconf.glade:36096 +#: src/emc/usr_intf/pncconf/pncconf.glade:36148 +#: src/emc/usr_intf/pncconf/pncconf.glade:36200 +#: src/emc/usr_intf/pncconf/pncconf.glade:36252 +#: src/emc/usr_intf/pncconf/pncconf.glade:36304 +#: src/emc/usr_intf/pncconf/pncconf.glade:36356 +#: src/emc/usr_intf/pncconf/pncconf.glade:36408 +#: src/emc/usr_intf/pncconf/pncconf.glade:36460 +#: src/emc/usr_intf/pncconf/pncconf.glade:36512 +#: src/emc/usr_intf/pncconf/pncconf.glade:36564 +#: src/emc/usr_intf/pncconf/pncconf.glade:36616 +#: src/emc/usr_intf/pncconf/pncconf.glade:36668 +#: src/emc/usr_intf/pncconf/pncconf.glade:37495 +#: src/emc/usr_intf/pncconf/pncconf.glade:37547 +#: src/emc/usr_intf/pncconf/pncconf.glade:37599 +#: src/emc/usr_intf/pncconf/pncconf.glade:37651 +#: src/emc/usr_intf/pncconf/pncconf.glade:39168 +#: src/emc/usr_intf/pncconf/pncconf.glade:39220 +#: src/emc/usr_intf/pncconf/pncconf.glade:39272 +#: src/emc/usr_intf/pncconf/pncconf.glade:39324 +#: src/emc/usr_intf/pncconf/pncconf.glade:39376 +#: src/emc/usr_intf/pncconf/pncconf.glade:39428 +#: src/emc/usr_intf/pncconf/pncconf.glade:39480 +#: src/emc/usr_intf/pncconf/pncconf.glade:39532 +#: src/emc/usr_intf/pncconf/pncconf.glade:39584 +#: src/emc/usr_intf/pncconf/pncconf.glade:39636 +#: src/emc/usr_intf/pncconf/pncconf.glade:39688 +#: src/emc/usr_intf/pncconf/pncconf.glade:39740 +#: src/emc/usr_intf/pncconf/pncconf.glade:40456 +#: src/emc/usr_intf/pncconf/pncconf.glade:40508 +#: src/emc/usr_intf/pncconf/pncconf.glade:40560 +#: src/emc/usr_intf/pncconf/pncconf.glade:40612 +#: src/emc/usr_intf/pncconf/pncconf.glade:40664 +#: src/emc/usr_intf/pncconf/pncconf.glade:40716 +#: src/emc/usr_intf/pncconf/pncconf.glade:40768 +#: src/emc/usr_intf/pncconf/pncconf.glade:40820 +#: src/emc/usr_intf/pncconf/pncconf.glade:40872 +#: src/emc/usr_intf/pncconf/pncconf.glade:40924 +#: src/emc/usr_intf/pncconf/pncconf.glade:40976 +#: src/emc/usr_intf/pncconf/pncconf.glade:41028 +#: src/emc/usr_intf/pncconf/pncconf.glade:41855 +#: src/emc/usr_intf/pncconf/pncconf.glade:41907 +#: src/emc/usr_intf/pncconf/pncconf.glade:41959 +#: src/emc/usr_intf/pncconf/pncconf.glade:42011 +#: src/emc/usr_intf/pncconf/pncconf.glade:43351 +#: src/emc/usr_intf/pncconf/pncconf.glade:43403 +#: src/emc/usr_intf/pncconf/pncconf.glade:43455 +#: src/emc/usr_intf/pncconf/pncconf.glade:43507 +#: src/emc/usr_intf/pncconf/pncconf.glade:44334 +#: src/emc/usr_intf/pncconf/pncconf.glade:44386 +#: src/emc/usr_intf/pncconf/pncconf.glade:44438 +#: src/emc/usr_intf/pncconf/pncconf.glade:44490 +#: src/emc/usr_intf/pncconf/pncconf.glade:44542 +#: src/emc/usr_intf/pncconf/pncconf.glade:44594 +#: src/emc/usr_intf/pncconf/pncconf.glade:44646 +#: src/emc/usr_intf/pncconf/pncconf.glade:44698 +#: src/emc/usr_intf/pncconf/pncconf.glade:44750 +#: src/emc/usr_intf/pncconf/pncconf.glade:44802 +#: src/emc/usr_intf/pncconf/pncconf.glade:44854 +#: src/emc/usr_intf/pncconf/pncconf.glade:44906 +#: src/emc/usr_intf/pncconf/pncconf.glade:45711 +#: src/emc/usr_intf/pncconf/pncconf.glade:45763 +#: src/emc/usr_intf/pncconf/pncconf.glade:45815 +#: src/emc/usr_intf/pncconf/pncconf.glade:45867 +#: src/emc/usr_intf/pncconf/pncconf.glade:45919 +#: src/emc/usr_intf/pncconf/pncconf.glade:45971 +#: src/emc/usr_intf/pncconf/pncconf.glade:46023 +#: src/emc/usr_intf/pncconf/pncconf.glade:46075 +#: src/emc/usr_intf/pncconf/pncconf.glade:46127 +#: src/emc/usr_intf/pncconf/pncconf.glade:46179 +#: src/emc/usr_intf/pncconf/pncconf.glade:46231 +#: src/emc/usr_intf/pncconf/pncconf.glade:46283 +#: src/emc/usr_intf/pncconf/pncconf.glade:47379 +#: src/emc/usr_intf/pncconf/pncconf.glade:47431 +#: src/emc/usr_intf/pncconf/pncconf.glade:47483 +#: src/emc/usr_intf/pncconf/pncconf.glade:47535 +#: src/emc/usr_intf/pncconf/pncconf.glade:47587 +#: src/emc/usr_intf/pncconf/pncconf.glade:47639 +#: src/emc/usr_intf/pncconf/pncconf.glade:47691 +#: src/emc/usr_intf/pncconf/pncconf.glade:47743 +#: src/emc/usr_intf/pncconf/pncconf.glade:47795 +#: src/emc/usr_intf/pncconf/pncconf.glade:47847 +#: src/emc/usr_intf/pncconf/pncconf.glade:47899 +#: src/emc/usr_intf/pncconf/pncconf.glade:47951 +#: src/emc/usr_intf/pncconf/pncconf.glade:48778 +#: src/emc/usr_intf/pncconf/pncconf.glade:48830 +#: src/emc/usr_intf/pncconf/pncconf.glade:48882 +#: src/emc/usr_intf/pncconf/pncconf.glade:48934 +#: src/emc/usr_intf/pncconf/pncconf.glade:50274 +#: src/emc/usr_intf/pncconf/pncconf.glade:50326 +#: src/emc/usr_intf/pncconf/pncconf.glade:50378 +#: src/emc/usr_intf/pncconf/pncconf.glade:50430 +#: src/emc/usr_intf/pncconf/pncconf.glade:51257 +#: src/emc/usr_intf/pncconf/pncconf.glade:51309 +#: src/emc/usr_intf/pncconf/pncconf.glade:51361 +#: src/emc/usr_intf/pncconf/pncconf.glade:51413 +#: src/emc/usr_intf/pncconf/pncconf.glade:51465 +#: src/emc/usr_intf/pncconf/pncconf.glade:51517 +#: src/emc/usr_intf/pncconf/pncconf.glade:51569 +#: src/emc/usr_intf/pncconf/pncconf.glade:51621 +#: src/emc/usr_intf/pncconf/pncconf.glade:51673 +#: src/emc/usr_intf/pncconf/pncconf.glade:51725 +#: src/emc/usr_intf/pncconf/pncconf.glade:51777 +#: src/emc/usr_intf/pncconf/pncconf.glade:51829 +#: src/emc/usr_intf/pncconf/pncconf.glade:52634 +#: src/emc/usr_intf/pncconf/pncconf.glade:52686 +#: src/emc/usr_intf/pncconf/pncconf.glade:52738 +#: src/emc/usr_intf/pncconf/pncconf.glade:52790 +#: src/emc/usr_intf/pncconf/pncconf.glade:52842 +#: src/emc/usr_intf/pncconf/pncconf.glade:52894 +#: src/emc/usr_intf/pncconf/pncconf.glade:52946 +#: src/emc/usr_intf/pncconf/pncconf.glade:52998 +#: src/emc/usr_intf/pncconf/pncconf.glade:53050 +#: src/emc/usr_intf/pncconf/pncconf.glade:53102 +#: src/emc/usr_intf/pncconf/pncconf.glade:53154 +#: src/emc/usr_intf/pncconf/pncconf.glade:53206 +#: src/emc/usr_intf/pncconf/pncconf.glade:54302 +#: src/emc/usr_intf/pncconf/pncconf.glade:54354 +#: src/emc/usr_intf/pncconf/pncconf.glade:54406 +#: src/emc/usr_intf/pncconf/pncconf.glade:54458 +#: src/emc/usr_intf/pncconf/pncconf.glade:54510 +#: src/emc/usr_intf/pncconf/pncconf.glade:54562 +#: src/emc/usr_intf/pncconf/pncconf.glade:54614 +#: src/emc/usr_intf/pncconf/pncconf.glade:54666 +#: src/emc/usr_intf/pncconf/pncconf.glade:54718 +#: src/emc/usr_intf/pncconf/pncconf.glade:54770 +#: src/emc/usr_intf/pncconf/pncconf.glade:54822 +#: src/emc/usr_intf/pncconf/pncconf.glade:54874 +#: src/emc/usr_intf/pncconf/pncconf.glade:55701 +#: src/emc/usr_intf/pncconf/pncconf.glade:55753 +#: src/emc/usr_intf/pncconf/pncconf.glade:55805 +#: src/emc/usr_intf/pncconf/pncconf.glade:55857 +#: src/emc/usr_intf/pncconf/pncconf.glade:57197 +#: src/emc/usr_intf/pncconf/pncconf.glade:57249 +#: src/emc/usr_intf/pncconf/pncconf.glade:57301 +#: src/emc/usr_intf/pncconf/pncconf.glade:57353 +#: src/emc/usr_intf/pncconf/pncconf.glade:58180 +#: src/emc/usr_intf/pncconf/pncconf.glade:58232 +#: src/emc/usr_intf/pncconf/pncconf.glade:58284 +#: src/emc/usr_intf/pncconf/pncconf.glade:58336 +#: src/emc/usr_intf/pncconf/pncconf.glade:58388 +#: src/emc/usr_intf/pncconf/pncconf.glade:58440 +#: src/emc/usr_intf/pncconf/pncconf.glade:58492 +#: src/emc/usr_intf/pncconf/pncconf.glade:58544 +#: src/emc/usr_intf/pncconf/pncconf.glade:58596 +#: src/emc/usr_intf/pncconf/pncconf.glade:58648 +#: src/emc/usr_intf/pncconf/pncconf.glade:58700 +#: src/emc/usr_intf/pncconf/pncconf.glade:58752 +#: src/emc/usr_intf/pncconf/pncconf.glade:59557 +#: src/emc/usr_intf/pncconf/pncconf.glade:59609 +#: src/emc/usr_intf/pncconf/pncconf.glade:59661 +#: src/emc/usr_intf/pncconf/pncconf.glade:59713 +#: src/emc/usr_intf/pncconf/pncconf.glade:59765 +#: src/emc/usr_intf/pncconf/pncconf.glade:59817 +#: src/emc/usr_intf/pncconf/pncconf.glade:59869 +#: src/emc/usr_intf/pncconf/pncconf.glade:59921 +#: src/emc/usr_intf/pncconf/pncconf.glade:59973 +#: src/emc/usr_intf/pncconf/pncconf.glade:60025 +#: src/emc/usr_intf/pncconf/pncconf.glade:60077 +#: src/emc/usr_intf/pncconf/pncconf.glade:60129 msgid "" "ESTOP IN\n" "Spindle PPR\n" @@ -15020,816 +12819,852 @@ msgstr "" "All home\n" "Unused" -#: src/emc/usr_intf/pncconf/pncconf.glade:9515 -#: src/emc/usr_intf/pncconf/pncconf.glade:12871 -#: src/emc/usr_intf/pncconf/pncconf.glade:18128 -#: src/emc/usr_intf/pncconf/pncconf.glade:20233 -#: src/emc/usr_intf/pncconf/pncconf.glade:21486 -#: src/emc/usr_intf/pncconf/pncconf.glade:23282 -#: src/emc/usr_intf/pncconf/pncconf.glade:25078 -#: emc/usr_intf/pncconf/pncconf.glade:9515 -#: emc/usr_intf/pncconf/pncconf.glade:12871 -#: emc/usr_intf/pncconf/pncconf.glade:18128 -#: emc/usr_intf/pncconf/pncconf.glade:20233 -#: emc/usr_intf/pncconf/pncconf.glade:21486 -#: emc/usr_intf/pncconf/pncconf.glade:23282 -#: emc/usr_intf/pncconf/pncconf.glade:25078 -#: src/emc/usr_intf/pncconf/pncconf.glade:9539 -#: src/emc/usr_intf/pncconf/pncconf.glade:12895 -#: src/emc/usr_intf/pncconf/pncconf.glade:18152 -#: src/emc/usr_intf/pncconf/pncconf.glade:20257 -#: src/emc/usr_intf/pncconf/pncconf.glade:21510 -#: src/emc/usr_intf/pncconf/pncconf.glade:23306 -#: src/emc/usr_intf/pncconf/pncconf.glade:25102 -msgid "31:" -msgstr "31:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8825 +#: src/emc/usr_intf/pncconf/pncconf.glade:9081 +#: src/emc/usr_intf/pncconf/pncconf.glade:13563 +#: src/emc/usr_intf/pncconf/pncconf.glade:13818 +#: src/emc/usr_intf/pncconf/pncconf.glade:16164 +#: src/emc/usr_intf/pncconf/pncconf.glade:16410 +#: src/emc/usr_intf/pncconf/pncconf.glade:18769 +#: src/emc/usr_intf/pncconf/pncconf.glade:19024 +#: src/emc/usr_intf/pncconf/pncconf.glade:20571 +#: src/emc/usr_intf/pncconf/pncconf.glade:20820 +#: src/emc/usr_intf/pncconf/pncconf.glade:20949 +#: src/emc/usr_intf/pncconf/pncconf.glade:21199 +#: src/emc/usr_intf/pncconf/pncconf.glade:22745 +#: src/emc/usr_intf/pncconf/pncconf.glade:22995 +#: src/emc/usr_intf/pncconf/pncconf.glade:24541 +#: src/emc/usr_intf/pncconf/pncconf.glade:24791 +#: src/emc/usr_intf/pncconf/pncconf.glade:26353 +#: src/emc/usr_intf/pncconf/pncconf.glade:26600 +#: src/emc/usr_intf/pncconf/pncconf.glade:31115 +#: src/emc/usr_intf/pncconf/pncconf.glade:31361 +#: src/emc/usr_intf/pncconf/pncconf.glade:31621 +#: src/emc/usr_intf/pncconf/pncconf.glade:35460 +#: src/emc/usr_intf/pncconf/pncconf.glade:35706 +#: src/emc/usr_intf/pncconf/pncconf.glade:35837 +#: src/emc/usr_intf/pncconf/pncconf.glade:36084 +#: src/emc/usr_intf/pncconf/pncconf.glade:40037 +#: src/emc/usr_intf/pncconf/pncconf.glade:40197 +#: src/emc/usr_intf/pncconf/pncconf.glade:40444 +#: src/emc/usr_intf/pncconf/pncconf.glade:44959 +#: src/emc/usr_intf/pncconf/pncconf.glade:45205 +#: src/emc/usr_intf/pncconf/pncconf.glade:45454 +#: src/emc/usr_intf/pncconf/pncconf.glade:47120 +#: src/emc/usr_intf/pncconf/pncconf.glade:47367 +#: src/emc/usr_intf/pncconf/pncconf.glade:51882 +#: src/emc/usr_intf/pncconf/pncconf.glade:52128 +#: src/emc/usr_intf/pncconf/pncconf.glade:52377 +#: src/emc/usr_intf/pncconf/pncconf.glade:54043 +#: src/emc/usr_intf/pncconf/pncconf.glade:54290 +#: src/emc/usr_intf/pncconf/pncconf.glade:58805 +#: src/emc/usr_intf/pncconf/pncconf.glade:59051 +#: src/emc/usr_intf/pncconf/pncconf.glade:59300 +msgid "Pin Type" +msgstr "Type de broche" -#: src/emc/usr_intf/pncconf/pncconf.glade:9531 -#: src/emc/usr_intf/pncconf/pncconf.glade:12855 -#: src/emc/usr_intf/pncconf/pncconf.glade:18112 -#: src/emc/usr_intf/pncconf/pncconf.glade:20217 -#: src/emc/usr_intf/pncconf/pncconf.glade:21502 -#: src/emc/usr_intf/pncconf/pncconf.glade:23298 -#: src/emc/usr_intf/pncconf/pncconf.glade:25094 -#: emc/usr_intf/pncconf/pncconf.glade:9531 -#: emc/usr_intf/pncconf/pncconf.glade:12855 -#: emc/usr_intf/pncconf/pncconf.glade:18112 -#: emc/usr_intf/pncconf/pncconf.glade:20217 -#: emc/usr_intf/pncconf/pncconf.glade:21502 -#: emc/usr_intf/pncconf/pncconf.glade:23298 -#: emc/usr_intf/pncconf/pncconf.glade:25094 -#: src/emc/usr_intf/pncconf/pncconf.glade:9555 -#: src/emc/usr_intf/pncconf/pncconf.glade:12879 -#: src/emc/usr_intf/pncconf/pncconf.glade:18136 -#: src/emc/usr_intf/pncconf/pncconf.glade:20241 -#: src/emc/usr_intf/pncconf/pncconf.glade:21526 -#: src/emc/usr_intf/pncconf/pncconf.glade:23322 -#: src/emc/usr_intf/pncconf/pncconf.glade:25118 -msgid "29:" -msgstr "29:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8838 +#: src/emc/usr_intf/pncconf/pncconf.glade:8900 +#: src/emc/usr_intf/pncconf/pncconf.glade:13743 +#: src/emc/usr_intf/pncconf/pncconf.glade:13806 +#: src/emc/usr_intf/pncconf/pncconf.glade:16335 +#: src/emc/usr_intf/pncconf/pncconf.glade:16398 +#: src/emc/usr_intf/pncconf/pncconf.glade:18949 +#: src/emc/usr_intf/pncconf/pncconf.glade:19012 +#: src/emc/usr_intf/pncconf/pncconf.glade:20751 +#: src/emc/usr_intf/pncconf/pncconf.glade:20808 +#: src/emc/usr_intf/pncconf/pncconf.glade:20962 +#: src/emc/usr_intf/pncconf/pncconf.glade:21018 +#: src/emc/usr_intf/pncconf/pncconf.glade:22758 +#: src/emc/usr_intf/pncconf/pncconf.glade:22814 +#: src/emc/usr_intf/pncconf/pncconf.glade:24554 +#: src/emc/usr_intf/pncconf/pncconf.glade:24610 +#: src/emc/usr_intf/pncconf/pncconf.glade:26366 +#: src/emc/usr_intf/pncconf/pncconf.glade:26428 +#: src/emc/usr_intf/pncconf/pncconf.glade:31286 +#: src/emc/usr_intf/pncconf/pncconf.glade:31349 +#: src/emc/usr_intf/pncconf/pncconf.glade:31634 +#: src/emc/usr_intf/pncconf/pncconf.glade:35631 +#: src/emc/usr_intf/pncconf/pncconf.glade:35694 +#: src/emc/usr_intf/pncconf/pncconf.glade:35850 +#: src/emc/usr_intf/pncconf/pncconf.glade:35912 +#: src/emc/usr_intf/pncconf/pncconf.glade:40025 +#: src/emc/usr_intf/pncconf/pncconf.glade:40210 +#: src/emc/usr_intf/pncconf/pncconf.glade:40272 +#: src/emc/usr_intf/pncconf/pncconf.glade:45130 +#: src/emc/usr_intf/pncconf/pncconf.glade:45193 +#: src/emc/usr_intf/pncconf/pncconf.glade:45467 +#: src/emc/usr_intf/pncconf/pncconf.glade:47133 +#: src/emc/usr_intf/pncconf/pncconf.glade:47195 +#: src/emc/usr_intf/pncconf/pncconf.glade:52053 +#: src/emc/usr_intf/pncconf/pncconf.glade:52116 +#: src/emc/usr_intf/pncconf/pncconf.glade:52390 +#: src/emc/usr_intf/pncconf/pncconf.glade:54056 +#: src/emc/usr_intf/pncconf/pncconf.glade:54118 +#: src/emc/usr_intf/pncconf/pncconf.glade:58976 +#: src/emc/usr_intf/pncconf/pncconf.glade:59039 +#: src/emc/usr_intf/pncconf/pncconf.glade:59313 +msgid "Inv" +msgstr "Inverser" -#: src/emc/usr_intf/pncconf/pncconf.glade:9547 -#: src/emc/usr_intf/pncconf/pncconf.glade:12839 -#: src/emc/usr_intf/pncconf/pncconf.glade:18096 -#: src/emc/usr_intf/pncconf/pncconf.glade:20201 -#: src/emc/usr_intf/pncconf/pncconf.glade:21518 -#: src/emc/usr_intf/pncconf/pncconf.glade:23314 -#: src/emc/usr_intf/pncconf/pncconf.glade:25110 -#: emc/usr_intf/pncconf/pncconf.glade:9547 -#: emc/usr_intf/pncconf/pncconf.glade:12839 -#: emc/usr_intf/pncconf/pncconf.glade:18096 -#: emc/usr_intf/pncconf/pncconf.glade:20201 -#: emc/usr_intf/pncconf/pncconf.glade:21518 -#: emc/usr_intf/pncconf/pncconf.glade:23314 -#: emc/usr_intf/pncconf/pncconf.glade:25110 -#: src/emc/usr_intf/pncconf/pncconf.glade:9571 -#: src/emc/usr_intf/pncconf/pncconf.glade:12863 -#: src/emc/usr_intf/pncconf/pncconf.glade:18120 -#: src/emc/usr_intf/pncconf/pncconf.glade:20225 -#: src/emc/usr_intf/pncconf/pncconf.glade:21542 -#: src/emc/usr_intf/pncconf/pncconf.glade:23338 -#: src/emc/usr_intf/pncconf/pncconf.glade:25134 -msgid "27:" -msgstr "27:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8867 +#: src/emc/usr_intf/pncconf/pncconf.glade:10731 +#: src/emc/usr_intf/pncconf/pncconf.glade:10751 +#: src/emc/usr_intf/pncconf/pncconf.glade:10771 +#: src/emc/usr_intf/pncconf/pncconf.glade:10791 +#: src/emc/usr_intf/pncconf/pncconf.glade:10811 +#: src/emc/usr_intf/pncconf/pncconf.glade:10831 +#: src/emc/usr_intf/pncconf/pncconf.glade:10851 +#: src/emc/usr_intf/pncconf/pncconf.glade:10871 +#: src/emc/usr_intf/pncconf/pncconf.glade:10891 +#: src/emc/usr_intf/pncconf/pncconf.glade:10911 +#: src/emc/usr_intf/pncconf/pncconf.glade:10931 +#: src/emc/usr_intf/pncconf/pncconf.glade:10951 +#: src/emc/usr_intf/pncconf/pncconf.glade:10971 +#: src/emc/usr_intf/pncconf/pncconf.glade:10991 +#: src/emc/usr_intf/pncconf/pncconf.glade:11011 +#: src/emc/usr_intf/pncconf/pncconf.glade:11031 +#: src/emc/usr_intf/pncconf/pncconf.glade:11051 +#: src/emc/usr_intf/pncconf/pncconf.glade:11071 +#: src/emc/usr_intf/pncconf/pncconf.glade:11091 +#: src/emc/usr_intf/pncconf/pncconf.glade:11111 +#: src/emc/usr_intf/pncconf/pncconf.glade:11131 +#: src/emc/usr_intf/pncconf/pncconf.glade:11151 +#: src/emc/usr_intf/pncconf/pncconf.glade:11171 +#: src/emc/usr_intf/pncconf/pncconf.glade:11465 +#: src/emc/usr_intf/pncconf/pncconf.glade:11485 +#: src/emc/usr_intf/pncconf/pncconf.glade:11505 +#: src/emc/usr_intf/pncconf/pncconf.glade:11525 +#: src/emc/usr_intf/pncconf/pncconf.glade:11545 +#: src/emc/usr_intf/pncconf/pncconf.glade:11565 +#: src/emc/usr_intf/pncconf/pncconf.glade:11585 +#: src/emc/usr_intf/pncconf/pncconf.glade:11605 +#: src/emc/usr_intf/pncconf/pncconf.glade:11625 +#: src/emc/usr_intf/pncconf/pncconf.glade:11645 +#: src/emc/usr_intf/pncconf/pncconf.glade:11665 +#: src/emc/usr_intf/pncconf/pncconf.glade:11685 +#: src/emc/usr_intf/pncconf/pncconf.glade:11705 +#: src/emc/usr_intf/pncconf/pncconf.glade:11725 +#: src/emc/usr_intf/pncconf/pncconf.glade:11745 +#: src/emc/usr_intf/pncconf/pncconf.glade:11765 +#: src/emc/usr_intf/pncconf/pncconf.glade:11785 +#: src/emc/usr_intf/pncconf/pncconf.glade:11805 +#: src/emc/usr_intf/pncconf/pncconf.glade:11825 +#: src/emc/usr_intf/pncconf/pncconf.glade:11845 +#: src/emc/usr_intf/pncconf/pncconf.glade:11865 +#: src/emc/usr_intf/pncconf/pncconf.glade:11885 +#: src/emc/usr_intf/pncconf/pncconf.glade:11905 +#: src/emc/usr_intf/pncconf/pncconf.glade:13768 +#: src/emc/usr_intf/pncconf/pncconf.glade:13974 +#: src/emc/usr_intf/pncconf/pncconf.glade:13994 +#: src/emc/usr_intf/pncconf/pncconf.glade:14014 +#: src/emc/usr_intf/pncconf/pncconf.glade:14034 +#: src/emc/usr_intf/pncconf/pncconf.glade:14054 +#: src/emc/usr_intf/pncconf/pncconf.glade:14074 +#: src/emc/usr_intf/pncconf/pncconf.glade:14094 +#: src/emc/usr_intf/pncconf/pncconf.glade:14114 +#: src/emc/usr_intf/pncconf/pncconf.glade:14134 +#: src/emc/usr_intf/pncconf/pncconf.glade:14154 +#: src/emc/usr_intf/pncconf/pncconf.glade:14174 +#: src/emc/usr_intf/pncconf/pncconf.glade:14194 +#: src/emc/usr_intf/pncconf/pncconf.glade:14214 +#: src/emc/usr_intf/pncconf/pncconf.glade:14234 +#: src/emc/usr_intf/pncconf/pncconf.glade:14254 +#: src/emc/usr_intf/pncconf/pncconf.glade:14274 +#: src/emc/usr_intf/pncconf/pncconf.glade:14294 +#: src/emc/usr_intf/pncconf/pncconf.glade:14314 +#: src/emc/usr_intf/pncconf/pncconf.glade:14334 +#: src/emc/usr_intf/pncconf/pncconf.glade:14354 +#: src/emc/usr_intf/pncconf/pncconf.glade:14374 +#: src/emc/usr_intf/pncconf/pncconf.glade:14394 +#: src/emc/usr_intf/pncconf/pncconf.glade:14414 +#: src/emc/usr_intf/pncconf/pncconf.glade:16360 +#: src/emc/usr_intf/pncconf/pncconf.glade:16670 +#: src/emc/usr_intf/pncconf/pncconf.glade:16690 +#: src/emc/usr_intf/pncconf/pncconf.glade:16710 +#: src/emc/usr_intf/pncconf/pncconf.glade:16730 +#: src/emc/usr_intf/pncconf/pncconf.glade:16750 +#: src/emc/usr_intf/pncconf/pncconf.glade:16770 +#: src/emc/usr_intf/pncconf/pncconf.glade:16790 +#: src/emc/usr_intf/pncconf/pncconf.glade:16810 +#: src/emc/usr_intf/pncconf/pncconf.glade:16830 +#: src/emc/usr_intf/pncconf/pncconf.glade:16850 +#: src/emc/usr_intf/pncconf/pncconf.glade:16870 +#: src/emc/usr_intf/pncconf/pncconf.glade:16890 +#: src/emc/usr_intf/pncconf/pncconf.glade:16910 +#: src/emc/usr_intf/pncconf/pncconf.glade:16930 +#: src/emc/usr_intf/pncconf/pncconf.glade:16950 +#: src/emc/usr_intf/pncconf/pncconf.glade:16970 +#: src/emc/usr_intf/pncconf/pncconf.glade:16990 +#: src/emc/usr_intf/pncconf/pncconf.glade:17010 +#: src/emc/usr_intf/pncconf/pncconf.glade:17030 +#: src/emc/usr_intf/pncconf/pncconf.glade:17050 +#: src/emc/usr_intf/pncconf/pncconf.glade:17070 +#: src/emc/usr_intf/pncconf/pncconf.glade:17090 +#: src/emc/usr_intf/pncconf/pncconf.glade:17110 +#: src/emc/usr_intf/pncconf/pncconf.glade:18974 +#: src/emc/usr_intf/pncconf/pncconf.glade:26395 +#: src/emc/usr_intf/pncconf/pncconf.glade:28311 +#: src/emc/usr_intf/pncconf/pncconf.glade:28331 +#: src/emc/usr_intf/pncconf/pncconf.glade:28351 +#: src/emc/usr_intf/pncconf/pncconf.glade:28371 +#: src/emc/usr_intf/pncconf/pncconf.glade:28391 +#: src/emc/usr_intf/pncconf/pncconf.glade:28411 +#: src/emc/usr_intf/pncconf/pncconf.glade:28431 +#: src/emc/usr_intf/pncconf/pncconf.glade:28451 +#: src/emc/usr_intf/pncconf/pncconf.glade:28471 +#: src/emc/usr_intf/pncconf/pncconf.glade:28491 +#: src/emc/usr_intf/pncconf/pncconf.glade:28511 +#: src/emc/usr_intf/pncconf/pncconf.glade:28531 +#: src/emc/usr_intf/pncconf/pncconf.glade:28551 +#: src/emc/usr_intf/pncconf/pncconf.glade:28571 +#: src/emc/usr_intf/pncconf/pncconf.glade:28591 +#: src/emc/usr_intf/pncconf/pncconf.glade:28611 +#: src/emc/usr_intf/pncconf/pncconf.glade:28631 +#: src/emc/usr_intf/pncconf/pncconf.glade:28651 +#: src/emc/usr_intf/pncconf/pncconf.glade:28671 +#: src/emc/usr_intf/pncconf/pncconf.glade:28691 +#: src/emc/usr_intf/pncconf/pncconf.glade:28711 +#: src/emc/usr_intf/pncconf/pncconf.glade:28731 +#: src/emc/usr_intf/pncconf/pncconf.glade:28751 +#: src/emc/usr_intf/pncconf/pncconf.glade:28942 +#: src/emc/usr_intf/pncconf/pncconf.glade:28962 +#: src/emc/usr_intf/pncconf/pncconf.glade:28982 +#: src/emc/usr_intf/pncconf/pncconf.glade:29002 +#: src/emc/usr_intf/pncconf/pncconf.glade:29022 +#: src/emc/usr_intf/pncconf/pncconf.glade:29042 +#: src/emc/usr_intf/pncconf/pncconf.glade:29062 +#: src/emc/usr_intf/pncconf/pncconf.glade:29082 +#: src/emc/usr_intf/pncconf/pncconf.glade:29102 +#: src/emc/usr_intf/pncconf/pncconf.glade:29122 +#: src/emc/usr_intf/pncconf/pncconf.glade:29142 +#: src/emc/usr_intf/pncconf/pncconf.glade:29162 +#: src/emc/usr_intf/pncconf/pncconf.glade:29182 +#: src/emc/usr_intf/pncconf/pncconf.glade:29202 +#: src/emc/usr_intf/pncconf/pncconf.glade:29222 +#: src/emc/usr_intf/pncconf/pncconf.glade:29242 +#: src/emc/usr_intf/pncconf/pncconf.glade:29262 +#: src/emc/usr_intf/pncconf/pncconf.glade:29282 +#: src/emc/usr_intf/pncconf/pncconf.glade:29302 +#: src/emc/usr_intf/pncconf/pncconf.glade:29322 +#: src/emc/usr_intf/pncconf/pncconf.glade:29342 +#: src/emc/usr_intf/pncconf/pncconf.glade:29362 +#: src/emc/usr_intf/pncconf/pncconf.glade:29382 +#: src/emc/usr_intf/pncconf/pncconf.glade:31311 +#: src/emc/usr_intf/pncconf/pncconf.glade:31663 +#: src/emc/usr_intf/pncconf/pncconf.glade:32881 +#: src/emc/usr_intf/pncconf/pncconf.glade:32901 +#: src/emc/usr_intf/pncconf/pncconf.glade:32921 +#: src/emc/usr_intf/pncconf/pncconf.glade:32941 +#: src/emc/usr_intf/pncconf/pncconf.glade:32961 +#: src/emc/usr_intf/pncconf/pncconf.glade:32981 +#: src/emc/usr_intf/pncconf/pncconf.glade:33001 +#: src/emc/usr_intf/pncconf/pncconf.glade:33021 +#: src/emc/usr_intf/pncconf/pncconf.glade:33041 +#: src/emc/usr_intf/pncconf/pncconf.glade:33061 +#: src/emc/usr_intf/pncconf/pncconf.glade:33081 +#: src/emc/usr_intf/pncconf/pncconf.glade:33300 +#: src/emc/usr_intf/pncconf/pncconf.glade:33320 +#: src/emc/usr_intf/pncconf/pncconf.glade:33340 +#: src/emc/usr_intf/pncconf/pncconf.glade:33360 +#: src/emc/usr_intf/pncconf/pncconf.glade:33380 +#: src/emc/usr_intf/pncconf/pncconf.glade:33400 +#: src/emc/usr_intf/pncconf/pncconf.glade:33420 +#: src/emc/usr_intf/pncconf/pncconf.glade:33440 +#: src/emc/usr_intf/pncconf/pncconf.glade:33460 +#: src/emc/usr_intf/pncconf/pncconf.glade:33480 +#: src/emc/usr_intf/pncconf/pncconf.glade:33500 +#: src/emc/usr_intf/pncconf/pncconf.glade:33520 +#: src/emc/usr_intf/pncconf/pncconf.glade:33540 +#: src/emc/usr_intf/pncconf/pncconf.glade:33560 +#: src/emc/usr_intf/pncconf/pncconf.glade:33580 +#: src/emc/usr_intf/pncconf/pncconf.glade:33600 +#: src/emc/usr_intf/pncconf/pncconf.glade:33620 +#: src/emc/usr_intf/pncconf/pncconf.glade:33640 +#: src/emc/usr_intf/pncconf/pncconf.glade:33660 +#: src/emc/usr_intf/pncconf/pncconf.glade:33680 +#: src/emc/usr_intf/pncconf/pncconf.glade:33700 +#: src/emc/usr_intf/pncconf/pncconf.glade:33720 +#: src/emc/usr_intf/pncconf/pncconf.glade:33740 +#: src/emc/usr_intf/pncconf/pncconf.glade:35656 +#: src/emc/usr_intf/pncconf/pncconf.glade:35879 +#: src/emc/usr_intf/pncconf/pncconf.glade:37808 +#: src/emc/usr_intf/pncconf/pncconf.glade:37828 +#: src/emc/usr_intf/pncconf/pncconf.glade:37848 +#: src/emc/usr_intf/pncconf/pncconf.glade:37868 +#: src/emc/usr_intf/pncconf/pncconf.glade:37888 +#: src/emc/usr_intf/pncconf/pncconf.glade:37908 +#: src/emc/usr_intf/pncconf/pncconf.glade:37928 +#: src/emc/usr_intf/pncconf/pncconf.glade:37948 +#: src/emc/usr_intf/pncconf/pncconf.glade:37968 +#: src/emc/usr_intf/pncconf/pncconf.glade:37988 +#: src/emc/usr_intf/pncconf/pncconf.glade:38008 +#: src/emc/usr_intf/pncconf/pncconf.glade:38028 +#: src/emc/usr_intf/pncconf/pncconf.glade:38048 +#: src/emc/usr_intf/pncconf/pncconf.glade:38068 +#: src/emc/usr_intf/pncconf/pncconf.glade:38088 +#: src/emc/usr_intf/pncconf/pncconf.glade:38108 +#: src/emc/usr_intf/pncconf/pncconf.glade:38128 +#: src/emc/usr_intf/pncconf/pncconf.glade:38148 +#: src/emc/usr_intf/pncconf/pncconf.glade:38168 +#: src/emc/usr_intf/pncconf/pncconf.glade:38188 +#: src/emc/usr_intf/pncconf/pncconf.glade:38208 +#: src/emc/usr_intf/pncconf/pncconf.glade:38228 +#: src/emc/usr_intf/pncconf/pncconf.glade:38248 +#: src/emc/usr_intf/pncconf/pncconf.glade:38557 +#: src/emc/usr_intf/pncconf/pncconf.glade:38577 +#: src/emc/usr_intf/pncconf/pncconf.glade:38597 +#: src/emc/usr_intf/pncconf/pncconf.glade:38617 +#: src/emc/usr_intf/pncconf/pncconf.glade:38637 +#: src/emc/usr_intf/pncconf/pncconf.glade:38657 +#: src/emc/usr_intf/pncconf/pncconf.glade:38677 +#: src/emc/usr_intf/pncconf/pncconf.glade:38697 +#: src/emc/usr_intf/pncconf/pncconf.glade:38717 +#: src/emc/usr_intf/pncconf/pncconf.glade:38737 +#: src/emc/usr_intf/pncconf/pncconf.glade:38757 +#: src/emc/usr_intf/pncconf/pncconf.glade:39987 +#: src/emc/usr_intf/pncconf/pncconf.glade:40239 +#: src/emc/usr_intf/pncconf/pncconf.glade:42155 +#: src/emc/usr_intf/pncconf/pncconf.glade:42175 +#: src/emc/usr_intf/pncconf/pncconf.glade:42195 +#: src/emc/usr_intf/pncconf/pncconf.glade:42215 +#: src/emc/usr_intf/pncconf/pncconf.glade:42235 +#: src/emc/usr_intf/pncconf/pncconf.glade:42255 +#: src/emc/usr_intf/pncconf/pncconf.glade:42275 +#: src/emc/usr_intf/pncconf/pncconf.glade:42295 +#: src/emc/usr_intf/pncconf/pncconf.glade:42315 +#: src/emc/usr_intf/pncconf/pncconf.glade:42335 +#: src/emc/usr_intf/pncconf/pncconf.glade:42355 +#: src/emc/usr_intf/pncconf/pncconf.glade:42375 +#: src/emc/usr_intf/pncconf/pncconf.glade:42395 +#: src/emc/usr_intf/pncconf/pncconf.glade:42415 +#: src/emc/usr_intf/pncconf/pncconf.glade:42435 +#: src/emc/usr_intf/pncconf/pncconf.glade:42455 +#: src/emc/usr_intf/pncconf/pncconf.glade:42475 +#: src/emc/usr_intf/pncconf/pncconf.glade:42495 +#: src/emc/usr_intf/pncconf/pncconf.glade:42515 +#: src/emc/usr_intf/pncconf/pncconf.glade:42535 +#: src/emc/usr_intf/pncconf/pncconf.glade:42555 +#: src/emc/usr_intf/pncconf/pncconf.glade:42575 +#: src/emc/usr_intf/pncconf/pncconf.glade:42595 +#: src/emc/usr_intf/pncconf/pncconf.glade:42786 +#: src/emc/usr_intf/pncconf/pncconf.glade:42806 +#: src/emc/usr_intf/pncconf/pncconf.glade:42826 +#: src/emc/usr_intf/pncconf/pncconf.glade:42846 +#: src/emc/usr_intf/pncconf/pncconf.glade:42866 +#: src/emc/usr_intf/pncconf/pncconf.glade:42886 +#: src/emc/usr_intf/pncconf/pncconf.glade:42906 +#: src/emc/usr_intf/pncconf/pncconf.glade:42926 +#: src/emc/usr_intf/pncconf/pncconf.glade:42946 +#: src/emc/usr_intf/pncconf/pncconf.glade:42966 +#: src/emc/usr_intf/pncconf/pncconf.glade:42986 +#: src/emc/usr_intf/pncconf/pncconf.glade:43006 +#: src/emc/usr_intf/pncconf/pncconf.glade:43026 +#: src/emc/usr_intf/pncconf/pncconf.glade:43046 +#: src/emc/usr_intf/pncconf/pncconf.glade:43066 +#: src/emc/usr_intf/pncconf/pncconf.glade:43086 +#: src/emc/usr_intf/pncconf/pncconf.glade:43106 +#: src/emc/usr_intf/pncconf/pncconf.glade:43126 +#: src/emc/usr_intf/pncconf/pncconf.glade:43146 +#: src/emc/usr_intf/pncconf/pncconf.glade:43166 +#: src/emc/usr_intf/pncconf/pncconf.glade:43186 +#: src/emc/usr_intf/pncconf/pncconf.glade:43206 +#: src/emc/usr_intf/pncconf/pncconf.glade:43226 +#: src/emc/usr_intf/pncconf/pncconf.glade:45155 +#: src/emc/usr_intf/pncconf/pncconf.glade:45496 +#: src/emc/usr_intf/pncconf/pncconf.glade:46726 +#: src/emc/usr_intf/pncconf/pncconf.glade:46746 +#: src/emc/usr_intf/pncconf/pncconf.glade:46766 +#: src/emc/usr_intf/pncconf/pncconf.glade:46786 +#: src/emc/usr_intf/pncconf/pncconf.glade:46806 +#: src/emc/usr_intf/pncconf/pncconf.glade:46826 +#: src/emc/usr_intf/pncconf/pncconf.glade:46846 +#: src/emc/usr_intf/pncconf/pncconf.glade:46866 +#: src/emc/usr_intf/pncconf/pncconf.glade:46886 +#: src/emc/usr_intf/pncconf/pncconf.glade:46906 +#: src/emc/usr_intf/pncconf/pncconf.glade:46926 +#: src/emc/usr_intf/pncconf/pncconf.glade:47162 +#: src/emc/usr_intf/pncconf/pncconf.glade:49078 +#: src/emc/usr_intf/pncconf/pncconf.glade:49098 +#: src/emc/usr_intf/pncconf/pncconf.glade:49118 +#: src/emc/usr_intf/pncconf/pncconf.glade:49138 +#: src/emc/usr_intf/pncconf/pncconf.glade:49158 +#: src/emc/usr_intf/pncconf/pncconf.glade:49178 +#: src/emc/usr_intf/pncconf/pncconf.glade:49198 +#: src/emc/usr_intf/pncconf/pncconf.glade:49218 +#: src/emc/usr_intf/pncconf/pncconf.glade:49238 +#: src/emc/usr_intf/pncconf/pncconf.glade:49258 +#: src/emc/usr_intf/pncconf/pncconf.glade:49278 +#: src/emc/usr_intf/pncconf/pncconf.glade:49298 +#: src/emc/usr_intf/pncconf/pncconf.glade:49318 +#: src/emc/usr_intf/pncconf/pncconf.glade:49338 +#: src/emc/usr_intf/pncconf/pncconf.glade:49358 +#: src/emc/usr_intf/pncconf/pncconf.glade:49378 +#: src/emc/usr_intf/pncconf/pncconf.glade:49398 +#: src/emc/usr_intf/pncconf/pncconf.glade:49418 +#: src/emc/usr_intf/pncconf/pncconf.glade:49438 +#: src/emc/usr_intf/pncconf/pncconf.glade:49458 +#: src/emc/usr_intf/pncconf/pncconf.glade:49478 +#: src/emc/usr_intf/pncconf/pncconf.glade:49498 +#: src/emc/usr_intf/pncconf/pncconf.glade:49518 +#: src/emc/usr_intf/pncconf/pncconf.glade:49709 +#: src/emc/usr_intf/pncconf/pncconf.glade:49729 +#: src/emc/usr_intf/pncconf/pncconf.glade:49749 +#: src/emc/usr_intf/pncconf/pncconf.glade:49769 +#: src/emc/usr_intf/pncconf/pncconf.glade:49789 +#: src/emc/usr_intf/pncconf/pncconf.glade:49809 +#: src/emc/usr_intf/pncconf/pncconf.glade:49829 +#: src/emc/usr_intf/pncconf/pncconf.glade:49849 +#: src/emc/usr_intf/pncconf/pncconf.glade:49869 +#: src/emc/usr_intf/pncconf/pncconf.glade:49889 +#: src/emc/usr_intf/pncconf/pncconf.glade:49909 +#: src/emc/usr_intf/pncconf/pncconf.glade:49929 +#: src/emc/usr_intf/pncconf/pncconf.glade:49949 +#: src/emc/usr_intf/pncconf/pncconf.glade:49969 +#: src/emc/usr_intf/pncconf/pncconf.glade:49989 +#: src/emc/usr_intf/pncconf/pncconf.glade:50009 +#: src/emc/usr_intf/pncconf/pncconf.glade:50029 +#: src/emc/usr_intf/pncconf/pncconf.glade:50049 +#: src/emc/usr_intf/pncconf/pncconf.glade:50069 +#: src/emc/usr_intf/pncconf/pncconf.glade:50089 +#: src/emc/usr_intf/pncconf/pncconf.glade:50109 +#: src/emc/usr_intf/pncconf/pncconf.glade:50129 +#: src/emc/usr_intf/pncconf/pncconf.glade:50149 +#: src/emc/usr_intf/pncconf/pncconf.glade:52078 +#: src/emc/usr_intf/pncconf/pncconf.glade:52419 +#: src/emc/usr_intf/pncconf/pncconf.glade:53649 +#: src/emc/usr_intf/pncconf/pncconf.glade:53669 +#: src/emc/usr_intf/pncconf/pncconf.glade:53689 +#: src/emc/usr_intf/pncconf/pncconf.glade:53709 +#: src/emc/usr_intf/pncconf/pncconf.glade:53729 +#: src/emc/usr_intf/pncconf/pncconf.glade:53749 +#: src/emc/usr_intf/pncconf/pncconf.glade:53769 +#: src/emc/usr_intf/pncconf/pncconf.glade:53789 +#: src/emc/usr_intf/pncconf/pncconf.glade:53809 +#: src/emc/usr_intf/pncconf/pncconf.glade:53829 +#: src/emc/usr_intf/pncconf/pncconf.glade:53849 +#: src/emc/usr_intf/pncconf/pncconf.glade:54085 +#: src/emc/usr_intf/pncconf/pncconf.glade:56001 +#: src/emc/usr_intf/pncconf/pncconf.glade:56021 +#: src/emc/usr_intf/pncconf/pncconf.glade:56041 +#: src/emc/usr_intf/pncconf/pncconf.glade:56061 +#: src/emc/usr_intf/pncconf/pncconf.glade:56081 +#: src/emc/usr_intf/pncconf/pncconf.glade:56101 +#: src/emc/usr_intf/pncconf/pncconf.glade:56121 +#: src/emc/usr_intf/pncconf/pncconf.glade:56141 +#: src/emc/usr_intf/pncconf/pncconf.glade:56161 +#: src/emc/usr_intf/pncconf/pncconf.glade:56181 +#: src/emc/usr_intf/pncconf/pncconf.glade:56201 +#: src/emc/usr_intf/pncconf/pncconf.glade:56221 +#: src/emc/usr_intf/pncconf/pncconf.glade:56241 +#: src/emc/usr_intf/pncconf/pncconf.glade:56261 +#: src/emc/usr_intf/pncconf/pncconf.glade:56281 +#: src/emc/usr_intf/pncconf/pncconf.glade:56301 +#: src/emc/usr_intf/pncconf/pncconf.glade:56321 +#: src/emc/usr_intf/pncconf/pncconf.glade:56341 +#: src/emc/usr_intf/pncconf/pncconf.glade:56361 +#: src/emc/usr_intf/pncconf/pncconf.glade:56381 +#: src/emc/usr_intf/pncconf/pncconf.glade:56401 +#: src/emc/usr_intf/pncconf/pncconf.glade:56421 +#: src/emc/usr_intf/pncconf/pncconf.glade:56441 +#: src/emc/usr_intf/pncconf/pncconf.glade:56632 +#: src/emc/usr_intf/pncconf/pncconf.glade:56652 +#: src/emc/usr_intf/pncconf/pncconf.glade:56672 +#: src/emc/usr_intf/pncconf/pncconf.glade:56692 +#: src/emc/usr_intf/pncconf/pncconf.glade:56712 +#: src/emc/usr_intf/pncconf/pncconf.glade:56732 +#: src/emc/usr_intf/pncconf/pncconf.glade:56752 +#: src/emc/usr_intf/pncconf/pncconf.glade:56772 +#: src/emc/usr_intf/pncconf/pncconf.glade:56792 +#: src/emc/usr_intf/pncconf/pncconf.glade:56812 +#: src/emc/usr_intf/pncconf/pncconf.glade:56832 +#: src/emc/usr_intf/pncconf/pncconf.glade:56852 +#: src/emc/usr_intf/pncconf/pncconf.glade:56872 +#: src/emc/usr_intf/pncconf/pncconf.glade:56892 +#: src/emc/usr_intf/pncconf/pncconf.glade:56912 +#: src/emc/usr_intf/pncconf/pncconf.glade:56932 +#: src/emc/usr_intf/pncconf/pncconf.glade:56952 +#: src/emc/usr_intf/pncconf/pncconf.glade:56972 +#: src/emc/usr_intf/pncconf/pncconf.glade:56992 +#: src/emc/usr_intf/pncconf/pncconf.glade:57012 +#: src/emc/usr_intf/pncconf/pncconf.glade:57032 +#: src/emc/usr_intf/pncconf/pncconf.glade:57052 +#: src/emc/usr_intf/pncconf/pncconf.glade:57072 +#: src/emc/usr_intf/pncconf/pncconf.glade:59001 +#: src/emc/usr_intf/pncconf/pncconf.glade:59342 +#: src/emc/usr_intf/pncconf/pncconf.glade:60572 +#: src/emc/usr_intf/pncconf/pncconf.glade:60592 +#: src/emc/usr_intf/pncconf/pncconf.glade:60612 +#: src/emc/usr_intf/pncconf/pncconf.glade:60632 +#: src/emc/usr_intf/pncconf/pncconf.glade:60652 +#: src/emc/usr_intf/pncconf/pncconf.glade:60672 +#: src/emc/usr_intf/pncconf/pncconf.glade:60692 +#: src/emc/usr_intf/pncconf/pncconf.glade:60712 +#: src/emc/usr_intf/pncconf/pncconf.glade:60732 +#: src/emc/usr_intf/pncconf/pncconf.glade:60752 +#: src/emc/usr_intf/pncconf/pncconf.glade:60772 +msgid "" +"GPIO Input\n" +"GPIO Output\n" +"GPIO O Drain\n" +"Encoder\n" +"PWM\n" +"StepGen\n" +msgstr "" +"Entrée GPIO\n" +"Sortie GPIO\n" +"GPIO O Drain\n" +"Codeur\n" +"PWM\n" +"StepGen\n" -#: src/emc/usr_intf/pncconf/pncconf.glade:9563 -#: src/emc/usr_intf/pncconf/pncconf.glade:12823 -#: src/emc/usr_intf/pncconf/pncconf.glade:18080 -#: src/emc/usr_intf/pncconf/pncconf.glade:20185 -#: src/emc/usr_intf/pncconf/pncconf.glade:21534 -#: src/emc/usr_intf/pncconf/pncconf.glade:23330 -#: src/emc/usr_intf/pncconf/pncconf.glade:25126 -#: emc/usr_intf/pncconf/pncconf.glade:9563 -#: emc/usr_intf/pncconf/pncconf.glade:12823 -#: emc/usr_intf/pncconf/pncconf.glade:18080 -#: emc/usr_intf/pncconf/pncconf.glade:20185 -#: emc/usr_intf/pncconf/pncconf.glade:21534 -#: emc/usr_intf/pncconf/pncconf.glade:23330 -#: emc/usr_intf/pncconf/pncconf.glade:25126 -#: src/emc/usr_intf/pncconf/pncconf.glade:9587 -#: src/emc/usr_intf/pncconf/pncconf.glade:12847 -#: src/emc/usr_intf/pncconf/pncconf.glade:18104 -#: src/emc/usr_intf/pncconf/pncconf.glade:20209 -#: src/emc/usr_intf/pncconf/pncconf.glade:21558 -#: src/emc/usr_intf/pncconf/pncconf.glade:23354 -#: src/emc/usr_intf/pncconf/pncconf.glade:25150 -msgid "25:" -msgstr "25:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8913 +#: src/emc/usr_intf/pncconf/pncconf.glade:13730 +#: src/emc/usr_intf/pncconf/pncconf.glade:18936 +#: src/emc/usr_intf/pncconf/pncconf.glade:20738 +#: src/emc/usr_intf/pncconf/pncconf.glade:21031 +#: src/emc/usr_intf/pncconf/pncconf.glade:22827 +#: src/emc/usr_intf/pncconf/pncconf.glade:24623 +msgid " 1:" +msgstr " 1:" -#: src/emc/usr_intf/pncconf/pncconf.glade:9936 -#: src/emc/usr_intf/pncconf/pncconf.glade:12450 -#: src/emc/usr_intf/pncconf/pncconf.glade:17707 -#: src/emc/usr_intf/pncconf/pncconf.glade:19924 -#: src/emc/usr_intf/pncconf/pncconf.glade:21795 -#: src/emc/usr_intf/pncconf/pncconf.glade:23591 -#: src/emc/usr_intf/pncconf/pncconf.glade:25387 -#: emc/usr_intf/pncconf/pncconf.glade:9936 -#: emc/usr_intf/pncconf/pncconf.glade:12450 -#: emc/usr_intf/pncconf/pncconf.glade:17707 -#: emc/usr_intf/pncconf/pncconf.glade:19924 -#: emc/usr_intf/pncconf/pncconf.glade:21795 -#: emc/usr_intf/pncconf/pncconf.glade:23591 -#: emc/usr_intf/pncconf/pncconf.glade:25387 -#: src/emc/usr_intf/pncconf/pncconf.glade:9960 -#: src/emc/usr_intf/pncconf/pncconf.glade:12474 -#: src/emc/usr_intf/pncconf/pncconf.glade:17731 -#: src/emc/usr_intf/pncconf/pncconf.glade:19948 -#: src/emc/usr_intf/pncconf/pncconf.glade:21819 -#: src/emc/usr_intf/pncconf/pncconf.glade:23615 -#: src/emc/usr_intf/pncconf/pncconf.glade:25411 -msgid "33:" -msgstr "33:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8927 +#: src/emc/usr_intf/pncconf/pncconf.glade:13716 +#: src/emc/usr_intf/pncconf/pncconf.glade:18922 +#: src/emc/usr_intf/pncconf/pncconf.glade:20724 +#: src/emc/usr_intf/pncconf/pncconf.glade:21045 +#: src/emc/usr_intf/pncconf/pncconf.glade:22841 +#: src/emc/usr_intf/pncconf/pncconf.glade:24637 +msgid " 3:" +msgstr " 3:" -#: src/emc/usr_intf/pncconf/pncconf.glade:9952 -#: src/emc/usr_intf/pncconf/pncconf.glade:12434 -#: src/emc/usr_intf/pncconf/pncconf.glade:17691 -#: src/emc/usr_intf/pncconf/pncconf.glade:19908 -#: src/emc/usr_intf/pncconf/pncconf.glade:21811 -#: src/emc/usr_intf/pncconf/pncconf.glade:23607 -#: src/emc/usr_intf/pncconf/pncconf.glade:25403 -#: emc/usr_intf/pncconf/pncconf.glade:9952 -#: emc/usr_intf/pncconf/pncconf.glade:12434 -#: emc/usr_intf/pncconf/pncconf.glade:17691 -#: emc/usr_intf/pncconf/pncconf.glade:19908 -#: emc/usr_intf/pncconf/pncconf.glade:21811 -#: emc/usr_intf/pncconf/pncconf.glade:23607 -#: emc/usr_intf/pncconf/pncconf.glade:25403 -#: src/emc/usr_intf/pncconf/pncconf.glade:9976 -#: src/emc/usr_intf/pncconf/pncconf.glade:12458 -#: src/emc/usr_intf/pncconf/pncconf.glade:17715 -#: src/emc/usr_intf/pncconf/pncconf.glade:19932 -#: src/emc/usr_intf/pncconf/pncconf.glade:21835 -#: src/emc/usr_intf/pncconf/pncconf.glade:23631 -#: src/emc/usr_intf/pncconf/pncconf.glade:25427 -msgid "35:" -msgstr "35:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8941 +#: src/emc/usr_intf/pncconf/pncconf.glade:13702 +#: src/emc/usr_intf/pncconf/pncconf.glade:18908 +#: src/emc/usr_intf/pncconf/pncconf.glade:20710 +#: src/emc/usr_intf/pncconf/pncconf.glade:21059 +#: src/emc/usr_intf/pncconf/pncconf.glade:22855 +#: src/emc/usr_intf/pncconf/pncconf.glade:24651 +msgid " 5:" +msgstr " 5:" -#: src/emc/usr_intf/pncconf/pncconf.glade:9968 -#: src/emc/usr_intf/pncconf/pncconf.glade:12418 -#: src/emc/usr_intf/pncconf/pncconf.glade:17675 -#: src/emc/usr_intf/pncconf/pncconf.glade:19892 -#: src/emc/usr_intf/pncconf/pncconf.glade:21827 -#: src/emc/usr_intf/pncconf/pncconf.glade:23623 -#: src/emc/usr_intf/pncconf/pncconf.glade:25419 -#: emc/usr_intf/pncconf/pncconf.glade:9968 -#: emc/usr_intf/pncconf/pncconf.glade:12418 -#: emc/usr_intf/pncconf/pncconf.glade:17675 -#: emc/usr_intf/pncconf/pncconf.glade:19892 -#: emc/usr_intf/pncconf/pncconf.glade:21827 -#: emc/usr_intf/pncconf/pncconf.glade:23623 -#: emc/usr_intf/pncconf/pncconf.glade:25419 -#: src/emc/usr_intf/pncconf/pncconf.glade:9992 -#: src/emc/usr_intf/pncconf/pncconf.glade:12442 -#: src/emc/usr_intf/pncconf/pncconf.glade:17699 -#: src/emc/usr_intf/pncconf/pncconf.glade:19916 -#: src/emc/usr_intf/pncconf/pncconf.glade:21851 -#: src/emc/usr_intf/pncconf/pncconf.glade:23647 -#: src/emc/usr_intf/pncconf/pncconf.glade:25443 -msgid "37:" -msgstr "37:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8955 +#: src/emc/usr_intf/pncconf/pncconf.glade:13688 +#: src/emc/usr_intf/pncconf/pncconf.glade:18894 +#: src/emc/usr_intf/pncconf/pncconf.glade:20696 +#: src/emc/usr_intf/pncconf/pncconf.glade:21073 +#: src/emc/usr_intf/pncconf/pncconf.glade:22869 +#: src/emc/usr_intf/pncconf/pncconf.glade:24665 +msgid " 7:" +msgstr " 7:" -#: src/emc/usr_intf/pncconf/pncconf.glade:9984 -#: src/emc/usr_intf/pncconf/pncconf.glade:12402 -#: src/emc/usr_intf/pncconf/pncconf.glade:17659 -#: src/emc/usr_intf/pncconf/pncconf.glade:19876 -#: src/emc/usr_intf/pncconf/pncconf.glade:21843 -#: src/emc/usr_intf/pncconf/pncconf.glade:23639 -#: src/emc/usr_intf/pncconf/pncconf.glade:25435 -#: emc/usr_intf/pncconf/pncconf.glade:9984 -#: emc/usr_intf/pncconf/pncconf.glade:12402 -#: emc/usr_intf/pncconf/pncconf.glade:17659 -#: emc/usr_intf/pncconf/pncconf.glade:19876 -#: emc/usr_intf/pncconf/pncconf.glade:21843 -#: emc/usr_intf/pncconf/pncconf.glade:23639 -#: emc/usr_intf/pncconf/pncconf.glade:25435 -#: src/emc/usr_intf/pncconf/pncconf.glade:10008 -#: src/emc/usr_intf/pncconf/pncconf.glade:12426 -#: src/emc/usr_intf/pncconf/pncconf.glade:17683 -#: src/emc/usr_intf/pncconf/pncconf.glade:19900 -#: src/emc/usr_intf/pncconf/pncconf.glade:21867 -#: src/emc/usr_intf/pncconf/pncconf.glade:23663 -#: src/emc/usr_intf/pncconf/pncconf.glade:25459 -msgid "39:" -msgstr "39:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8969 +#: src/emc/usr_intf/pncconf/pncconf.glade:13674 +#: src/emc/usr_intf/pncconf/pncconf.glade:18880 +#: src/emc/usr_intf/pncconf/pncconf.glade:20682 +#: src/emc/usr_intf/pncconf/pncconf.glade:21087 +#: src/emc/usr_intf/pncconf/pncconf.glade:22883 +#: src/emc/usr_intf/pncconf/pncconf.glade:24679 +msgid " 9:" +msgstr " 9:" -#: src/emc/usr_intf/pncconf/pncconf.glade:10000 -#: src/emc/usr_intf/pncconf/pncconf.glade:12386 -#: src/emc/usr_intf/pncconf/pncconf.glade:17643 -#: src/emc/usr_intf/pncconf/pncconf.glade:19860 -#: src/emc/usr_intf/pncconf/pncconf.glade:21859 -#: src/emc/usr_intf/pncconf/pncconf.glade:23655 -#: src/emc/usr_intf/pncconf/pncconf.glade:25451 -#: emc/usr_intf/pncconf/pncconf.glade:10000 -#: emc/usr_intf/pncconf/pncconf.glade:12386 -#: emc/usr_intf/pncconf/pncconf.glade:17643 -#: emc/usr_intf/pncconf/pncconf.glade:19860 -#: emc/usr_intf/pncconf/pncconf.glade:21859 -#: emc/usr_intf/pncconf/pncconf.glade:23655 -#: emc/usr_intf/pncconf/pncconf.glade:25451 -#: src/emc/usr_intf/pncconf/pncconf.glade:10024 -#: src/emc/usr_intf/pncconf/pncconf.glade:12410 -#: src/emc/usr_intf/pncconf/pncconf.glade:17667 -#: src/emc/usr_intf/pncconf/pncconf.glade:19884 -#: src/emc/usr_intf/pncconf/pncconf.glade:21883 -#: src/emc/usr_intf/pncconf/pncconf.glade:23679 -#: src/emc/usr_intf/pncconf/pncconf.glade:25475 -msgid "41:" -msgstr "41:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8983 +#: src/emc/usr_intf/pncconf/pncconf.glade:13660 +#: src/emc/usr_intf/pncconf/pncconf.glade:18866 +#: src/emc/usr_intf/pncconf/pncconf.glade:20668 +#: src/emc/usr_intf/pncconf/pncconf.glade:21101 +#: src/emc/usr_intf/pncconf/pncconf.glade:22897 +#: src/emc/usr_intf/pncconf/pncconf.glade:24693 +msgid "11:" +msgstr "11:" -#: src/emc/usr_intf/pncconf/pncconf.glade:10016 -#: src/emc/usr_intf/pncconf/pncconf.glade:12370 -#: src/emc/usr_intf/pncconf/pncconf.glade:17627 -#: src/emc/usr_intf/pncconf/pncconf.glade:19844 -#: src/emc/usr_intf/pncconf/pncconf.glade:21875 -#: src/emc/usr_intf/pncconf/pncconf.glade:23671 -#: src/emc/usr_intf/pncconf/pncconf.glade:25467 -#: emc/usr_intf/pncconf/pncconf.glade:10016 -#: emc/usr_intf/pncconf/pncconf.glade:12370 -#: emc/usr_intf/pncconf/pncconf.glade:17627 -#: emc/usr_intf/pncconf/pncconf.glade:19844 -#: emc/usr_intf/pncconf/pncconf.glade:21875 -#: emc/usr_intf/pncconf/pncconf.glade:23671 -#: emc/usr_intf/pncconf/pncconf.glade:25467 -#: src/emc/usr_intf/pncconf/pncconf.glade:10040 -#: src/emc/usr_intf/pncconf/pncconf.glade:12394 -#: src/emc/usr_intf/pncconf/pncconf.glade:17651 -#: src/emc/usr_intf/pncconf/pncconf.glade:19868 -#: src/emc/usr_intf/pncconf/pncconf.glade:21899 -#: src/emc/usr_intf/pncconf/pncconf.glade:23695 -#: src/emc/usr_intf/pncconf/pncconf.glade:25491 -msgid "43:" -msgstr "43:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8997 +#: src/emc/usr_intf/pncconf/pncconf.glade:13646 +#: src/emc/usr_intf/pncconf/pncconf.glade:18852 +#: src/emc/usr_intf/pncconf/pncconf.glade:20654 +#: src/emc/usr_intf/pncconf/pncconf.glade:21115 +#: src/emc/usr_intf/pncconf/pncconf.glade:22911 +#: src/emc/usr_intf/pncconf/pncconf.glade:24707 +msgid "13:" +msgstr "13:" -#: src/emc/usr_intf/pncconf/pncconf.glade:10032 -#: src/emc/usr_intf/pncconf/pncconf.glade:12354 -#: src/emc/usr_intf/pncconf/pncconf.glade:17611 -#: src/emc/usr_intf/pncconf/pncconf.glade:19828 -#: src/emc/usr_intf/pncconf/pncconf.glade:21891 -#: src/emc/usr_intf/pncconf/pncconf.glade:23687 -#: src/emc/usr_intf/pncconf/pncconf.glade:25483 -#: emc/usr_intf/pncconf/pncconf.glade:10032 -#: emc/usr_intf/pncconf/pncconf.glade:12354 -#: emc/usr_intf/pncconf/pncconf.glade:17611 -#: emc/usr_intf/pncconf/pncconf.glade:19828 -#: emc/usr_intf/pncconf/pncconf.glade:21891 -#: emc/usr_intf/pncconf/pncconf.glade:23687 -#: emc/usr_intf/pncconf/pncconf.glade:25483 -#: src/emc/usr_intf/pncconf/pncconf.glade:10056 -#: src/emc/usr_intf/pncconf/pncconf.glade:12378 -#: src/emc/usr_intf/pncconf/pncconf.glade:17635 -#: src/emc/usr_intf/pncconf/pncconf.glade:19852 -#: src/emc/usr_intf/pncconf/pncconf.glade:21915 -#: src/emc/usr_intf/pncconf/pncconf.glade:23711 -#: src/emc/usr_intf/pncconf/pncconf.glade:25507 -msgid "45:" -msgstr "45:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9011 +#: src/emc/usr_intf/pncconf/pncconf.glade:13632 +#: src/emc/usr_intf/pncconf/pncconf.glade:18838 +#: src/emc/usr_intf/pncconf/pncconf.glade:20640 +#: src/emc/usr_intf/pncconf/pncconf.glade:21129 +#: src/emc/usr_intf/pncconf/pncconf.glade:22925 +#: src/emc/usr_intf/pncconf/pncconf.glade:24721 +msgid "15:" +msgstr "15:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:9025 +#: src/emc/usr_intf/pncconf/pncconf.glade:13618 +#: src/emc/usr_intf/pncconf/pncconf.glade:18824 +#: src/emc/usr_intf/pncconf/pncconf.glade:20626 +#: src/emc/usr_intf/pncconf/pncconf.glade:21143 +#: src/emc/usr_intf/pncconf/pncconf.glade:22939 +#: src/emc/usr_intf/pncconf/pncconf.glade:24735 +msgid "17:" +msgstr "17:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:9039 +#: src/emc/usr_intf/pncconf/pncconf.glade:13604 +#: src/emc/usr_intf/pncconf/pncconf.glade:18810 +#: src/emc/usr_intf/pncconf/pncconf.glade:20612 +#: src/emc/usr_intf/pncconf/pncconf.glade:21157 +#: src/emc/usr_intf/pncconf/pncconf.glade:22953 +#: src/emc/usr_intf/pncconf/pncconf.glade:24749 +msgid "19:" +msgstr "19:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:9053 +#: src/emc/usr_intf/pncconf/pncconf.glade:13590 +#: src/emc/usr_intf/pncconf/pncconf.glade:18796 +#: src/emc/usr_intf/pncconf/pncconf.glade:20598 +#: src/emc/usr_intf/pncconf/pncconf.glade:21171 +#: src/emc/usr_intf/pncconf/pncconf.glade:22967 +#: src/emc/usr_intf/pncconf/pncconf.glade:24763 +msgid "21:" +msgstr "21:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:9067 +#: src/emc/usr_intf/pncconf/pncconf.glade:13576 +#: src/emc/usr_intf/pncconf/pncconf.glade:18782 +#: src/emc/usr_intf/pncconf/pncconf.glade:20584 +#: src/emc/usr_intf/pncconf/pncconf.glade:21185 +#: src/emc/usr_intf/pncconf/pncconf.glade:22981 +#: src/emc/usr_intf/pncconf/pncconf.glade:24777 +msgid "23:" +msgstr "23:" -#: src/emc/usr_intf/pncconf/pncconf.glade:10099 -#: src/emc/usr_intf/pncconf/pncconf.glade:12287 -#: src/emc/usr_intf/pncconf/pncconf.glade:17544 -#: src/emc/usr_intf/pncconf/pncconf.glade:19777 -#: src/emc/usr_intf/pncconf/pncconf.glade:21942 -#: src/emc/usr_intf/pncconf/pncconf.glade:23738 -#: src/emc/usr_intf/pncconf/pncconf.glade:25534 -#: emc/usr_intf/pncconf/pncconf.glade:10099 -#: emc/usr_intf/pncconf/pncconf.glade:12287 -#: emc/usr_intf/pncconf/pncconf.glade:17544 -#: emc/usr_intf/pncconf/pncconf.glade:19777 -#: emc/usr_intf/pncconf/pncconf.glade:21942 -#: emc/usr_intf/pncconf/pncconf.glade:23738 -#: emc/usr_intf/pncconf/pncconf.glade:25534 -#: src/emc/usr_intf/pncconf/pncconf.glade:10123 -#: src/emc/usr_intf/pncconf/pncconf.glade:12311 -#: src/emc/usr_intf/pncconf/pncconf.glade:17568 -#: src/emc/usr_intf/pncconf/pncconf.glade:19801 -#: src/emc/usr_intf/pncconf/pncconf.glade:21966 -#: src/emc/usr_intf/pncconf/pncconf.glade:23762 -#: src/emc/usr_intf/pncconf/pncconf.glade:25558 +#: src/emc/usr_intf/pncconf/pncconf.glade:9801 +#: src/emc/usr_intf/pncconf/pncconf.glade:12840 +#: src/emc/usr_intf/pncconf/pncconf.glade:17994 +#: src/emc/usr_intf/pncconf/pncconf.glade:20170 +#: src/emc/usr_intf/pncconf/pncconf.glade:21597 +#: src/emc/usr_intf/pncconf/pncconf.glade:23393 +#: src/emc/usr_intf/pncconf/pncconf.glade:25189 msgid "47:" msgstr "47:" -#: src/emc/usr_intf/pncconf/pncconf.glade:10822 -#: src/emc/usr_intf/pncconf/pncconf.glade:11077 -#: src/emc/usr_intf/pncconf/pncconf.glade:11311 -#: src/emc/usr_intf/pncconf/pncconf.glade:11567 -#: src/emc/usr_intf/pncconf/pncconf.glade:13924 -#: src/emc/usr_intf/pncconf/pncconf.glade:14171 -#: src/emc/usr_intf/pncconf/pncconf.glade:16516 -#: src/emc/usr_intf/pncconf/pncconf.glade:16772 -#: src/emc/usr_intf/pncconf/pncconf.glade:19129 -#: src/emc/usr_intf/pncconf/pncconf.glade:19379 -#: src/emc/usr_intf/pncconf/pncconf.glade:22343 -#: src/emc/usr_intf/pncconf/pncconf.glade:22592 -#: src/emc/usr_intf/pncconf/pncconf.glade:24139 -#: src/emc/usr_intf/pncconf/pncconf.glade:24388 -#: src/emc/usr_intf/pncconf/pncconf.glade:25935 -#: src/emc/usr_intf/pncconf/pncconf.glade:26184 -#: src/emc/usr_intf/pncconf/pncconf.glade:28515 -#: src/emc/usr_intf/pncconf/pncconf.glade:28761 -#: src/emc/usr_intf/pncconf/pncconf.glade:28892 -#: src/emc/usr_intf/pncconf/pncconf.glade:29139 -#: src/emc/usr_intf/pncconf/pncconf.glade:33079 -#: src/emc/usr_intf/pncconf/pncconf.glade:33250 -#: src/emc/usr_intf/pncconf/pncconf.glade:33497 -#: src/emc/usr_intf/pncconf/pncconf.glade:38012 -#: src/emc/usr_intf/pncconf/pncconf.glade:38258 -#: src/emc/usr_intf/pncconf/pncconf.glade:38507 -#: src/emc/usr_intf/pncconf/pncconf.glade:42359 -#: src/emc/usr_intf/pncconf/pncconf.glade:42605 -#: src/emc/usr_intf/pncconf/pncconf.glade:42736 -#: src/emc/usr_intf/pncconf/pncconf.glade:42983 -#: src/emc/usr_intf/pncconf/pncconf.glade:46936 -#: src/emc/usr_intf/pncconf/pncconf.glade:49282 -#: src/emc/usr_intf/pncconf/pncconf.glade:49528 -#: src/emc/usr_intf/pncconf/pncconf.glade:49659 -#: src/emc/usr_intf/pncconf/pncconf.glade:49906 -#: src/emc/usr_intf/pncconf/pncconf.glade:53859 -#: emc/usr_intf/pncconf/pncconf.glade:10822 -#: emc/usr_intf/pncconf/pncconf.glade:11077 -#: emc/usr_intf/pncconf/pncconf.glade:11311 -#: emc/usr_intf/pncconf/pncconf.glade:11567 -#: emc/usr_intf/pncconf/pncconf.glade:13924 -#: emc/usr_intf/pncconf/pncconf.glade:14171 -#: emc/usr_intf/pncconf/pncconf.glade:16516 -#: emc/usr_intf/pncconf/pncconf.glade:16772 -#: emc/usr_intf/pncconf/pncconf.glade:19129 -#: emc/usr_intf/pncconf/pncconf.glade:19379 -#: emc/usr_intf/pncconf/pncconf.glade:22343 -#: emc/usr_intf/pncconf/pncconf.glade:22592 -#: emc/usr_intf/pncconf/pncconf.glade:24139 -#: emc/usr_intf/pncconf/pncconf.glade:24388 -#: emc/usr_intf/pncconf/pncconf.glade:25935 -#: emc/usr_intf/pncconf/pncconf.glade:26184 -#: emc/usr_intf/pncconf/pncconf.glade:28515 -#: emc/usr_intf/pncconf/pncconf.glade:28761 -#: emc/usr_intf/pncconf/pncconf.glade:28892 -#: emc/usr_intf/pncconf/pncconf.glade:29139 -#: emc/usr_intf/pncconf/pncconf.glade:33079 -#: emc/usr_intf/pncconf/pncconf.glade:33250 -#: emc/usr_intf/pncconf/pncconf.glade:33497 -#: emc/usr_intf/pncconf/pncconf.glade:38012 -#: emc/usr_intf/pncconf/pncconf.glade:38258 -#: emc/usr_intf/pncconf/pncconf.glade:38507 -#: emc/usr_intf/pncconf/pncconf.glade:42359 -#: emc/usr_intf/pncconf/pncconf.glade:42605 -#: emc/usr_intf/pncconf/pncconf.glade:42736 -#: emc/usr_intf/pncconf/pncconf.glade:42983 -#: emc/usr_intf/pncconf/pncconf.glade:46936 -#: emc/usr_intf/pncconf/pncconf.glade:49282 -#: emc/usr_intf/pncconf/pncconf.glade:49528 -#: emc/usr_intf/pncconf/pncconf.glade:49659 -#: emc/usr_intf/pncconf/pncconf.glade:49906 -#: emc/usr_intf/pncconf/pncconf.glade:53859 -#: src/emc/usr_intf/pncconf/pncconf.glade:10846 -#: src/emc/usr_intf/pncconf/pncconf.glade:11101 -#: src/emc/usr_intf/pncconf/pncconf.glade:11335 -#: src/emc/usr_intf/pncconf/pncconf.glade:11591 -#: src/emc/usr_intf/pncconf/pncconf.glade:13948 -#: src/emc/usr_intf/pncconf/pncconf.glade:14195 -#: src/emc/usr_intf/pncconf/pncconf.glade:16540 -#: src/emc/usr_intf/pncconf/pncconf.glade:16796 -#: src/emc/usr_intf/pncconf/pncconf.glade:19153 -#: src/emc/usr_intf/pncconf/pncconf.glade:19403 -#: src/emc/usr_intf/pncconf/pncconf.glade:22367 -#: src/emc/usr_intf/pncconf/pncconf.glade:22616 -#: src/emc/usr_intf/pncconf/pncconf.glade:24163 -#: src/emc/usr_intf/pncconf/pncconf.glade:24412 -#: src/emc/usr_intf/pncconf/pncconf.glade:25959 -#: src/emc/usr_intf/pncconf/pncconf.glade:26208 -#: src/emc/usr_intf/pncconf/pncconf.glade:28539 -#: src/emc/usr_intf/pncconf/pncconf.glade:28785 -#: src/emc/usr_intf/pncconf/pncconf.glade:28916 -#: src/emc/usr_intf/pncconf/pncconf.glade:29163 -#: src/emc/usr_intf/pncconf/pncconf.glade:33103 -#: src/emc/usr_intf/pncconf/pncconf.glade:33274 -#: src/emc/usr_intf/pncconf/pncconf.glade:33521 -#: src/emc/usr_intf/pncconf/pncconf.glade:38036 -#: src/emc/usr_intf/pncconf/pncconf.glade:38282 -#: src/emc/usr_intf/pncconf/pncconf.glade:38531 -#: src/emc/usr_intf/pncconf/pncconf.glade:42383 -#: src/emc/usr_intf/pncconf/pncconf.glade:42629 -#: src/emc/usr_intf/pncconf/pncconf.glade:42760 -#: src/emc/usr_intf/pncconf/pncconf.glade:43007 -#: src/emc/usr_intf/pncconf/pncconf.glade:46960 -#: src/emc/usr_intf/pncconf/pncconf.glade:49306 -#: src/emc/usr_intf/pncconf/pncconf.glade:49552 -#: src/emc/usr_intf/pncconf/pncconf.glade:49683 -#: src/emc/usr_intf/pncconf/pncconf.glade:49930 -#: src/emc/usr_intf/pncconf/pncconf.glade:53883 -#: src/emc/usr_intf/pncconf/pncconf.glade:56229 -#: src/emc/usr_intf/pncconf/pncconf.glade:56475 -#: src/emc/usr_intf/pncconf/pncconf.glade:56606 -#: src/emc/usr_intf/pncconf/pncconf.glade:56853 -#: src/emc/usr_intf/pncconf/pncconf.glade:60806 -msgid "Pin Type" -msgstr "Type de broche" - -#: src/emc/usr_intf/pncconf/pncconf.glade:10835 -#: src/emc/usr_intf/pncconf/pncconf.glade:11553 -#: src/emc/usr_intf/pncconf/pncconf.glade:16758 -#: src/emc/usr_intf/pncconf/pncconf.glade:19365 -#: src/emc/usr_intf/pncconf/pncconf.glade:22356 -#: src/emc/usr_intf/pncconf/pncconf.glade:24152 -#: src/emc/usr_intf/pncconf/pncconf.glade:25948 -#: emc/usr_intf/pncconf/pncconf.glade:10835 -#: emc/usr_intf/pncconf/pncconf.glade:11553 -#: emc/usr_intf/pncconf/pncconf.glade:16758 -#: emc/usr_intf/pncconf/pncconf.glade:19365 -#: emc/usr_intf/pncconf/pncconf.glade:22356 -#: emc/usr_intf/pncconf/pncconf.glade:24152 -#: emc/usr_intf/pncconf/pncconf.glade:25948 -#: src/emc/usr_intf/pncconf/pncconf.glade:10859 -#: src/emc/usr_intf/pncconf/pncconf.glade:11577 -#: src/emc/usr_intf/pncconf/pncconf.glade:16782 -#: src/emc/usr_intf/pncconf/pncconf.glade:19389 -#: src/emc/usr_intf/pncconf/pncconf.glade:22380 -#: src/emc/usr_intf/pncconf/pncconf.glade:24176 -#: src/emc/usr_intf/pncconf/pncconf.glade:25972 -msgid "23:" -msgstr "23:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9868 +#: src/emc/usr_intf/pncconf/pncconf.glade:12773 +#: src/emc/usr_intf/pncconf/pncconf.glade:17927 +#: src/emc/usr_intf/pncconf/pncconf.glade:20119 +#: src/emc/usr_intf/pncconf/pncconf.glade:21648 +#: src/emc/usr_intf/pncconf/pncconf.glade:23444 +#: src/emc/usr_intf/pncconf/pncconf.glade:25240 +msgid "45:" +msgstr "45:" -#: src/emc/usr_intf/pncconf/pncconf.glade:10849 -#: src/emc/usr_intf/pncconf/pncconf.glade:11539 -#: src/emc/usr_intf/pncconf/pncconf.glade:16744 -#: src/emc/usr_intf/pncconf/pncconf.glade:19351 -#: src/emc/usr_intf/pncconf/pncconf.glade:22370 -#: src/emc/usr_intf/pncconf/pncconf.glade:24166 -#: src/emc/usr_intf/pncconf/pncconf.glade:25962 -#: emc/usr_intf/pncconf/pncconf.glade:10849 -#: emc/usr_intf/pncconf/pncconf.glade:11539 -#: emc/usr_intf/pncconf/pncconf.glade:16744 -#: emc/usr_intf/pncconf/pncconf.glade:19351 -#: emc/usr_intf/pncconf/pncconf.glade:22370 -#: emc/usr_intf/pncconf/pncconf.glade:24166 -#: emc/usr_intf/pncconf/pncconf.glade:25962 -#: src/emc/usr_intf/pncconf/pncconf.glade:10873 -#: src/emc/usr_intf/pncconf/pncconf.glade:11563 -#: src/emc/usr_intf/pncconf/pncconf.glade:16768 -#: src/emc/usr_intf/pncconf/pncconf.glade:19375 -#: src/emc/usr_intf/pncconf/pncconf.glade:22394 -#: src/emc/usr_intf/pncconf/pncconf.glade:24190 -#: src/emc/usr_intf/pncconf/pncconf.glade:25986 -msgid "21:" -msgstr "21:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9884 +#: src/emc/usr_intf/pncconf/pncconf.glade:12757 +#: src/emc/usr_intf/pncconf/pncconf.glade:17911 +#: src/emc/usr_intf/pncconf/pncconf.glade:20103 +#: src/emc/usr_intf/pncconf/pncconf.glade:21664 +#: src/emc/usr_intf/pncconf/pncconf.glade:23460 +#: src/emc/usr_intf/pncconf/pncconf.glade:25256 +msgid "43:" +msgstr "43:" -#: src/emc/usr_intf/pncconf/pncconf.glade:10863 -#: src/emc/usr_intf/pncconf/pncconf.glade:11525 -#: src/emc/usr_intf/pncconf/pncconf.glade:16730 -#: src/emc/usr_intf/pncconf/pncconf.glade:19337 -#: src/emc/usr_intf/pncconf/pncconf.glade:22384 -#: src/emc/usr_intf/pncconf/pncconf.glade:24180 -#: src/emc/usr_intf/pncconf/pncconf.glade:25976 -#: emc/usr_intf/pncconf/pncconf.glade:10863 -#: emc/usr_intf/pncconf/pncconf.glade:11525 -#: emc/usr_intf/pncconf/pncconf.glade:16730 -#: emc/usr_intf/pncconf/pncconf.glade:19337 -#: emc/usr_intf/pncconf/pncconf.glade:22384 -#: emc/usr_intf/pncconf/pncconf.glade:24180 -#: emc/usr_intf/pncconf/pncconf.glade:25976 -#: src/emc/usr_intf/pncconf/pncconf.glade:10887 -#: src/emc/usr_intf/pncconf/pncconf.glade:11549 -#: src/emc/usr_intf/pncconf/pncconf.glade:16754 -#: src/emc/usr_intf/pncconf/pncconf.glade:19361 -#: src/emc/usr_intf/pncconf/pncconf.glade:22408 -#: src/emc/usr_intf/pncconf/pncconf.glade:24204 -#: src/emc/usr_intf/pncconf/pncconf.glade:26000 -msgid "19:" -msgstr "19:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9900 +#: src/emc/usr_intf/pncconf/pncconf.glade:12741 +#: src/emc/usr_intf/pncconf/pncconf.glade:17895 +#: src/emc/usr_intf/pncconf/pncconf.glade:20087 +#: src/emc/usr_intf/pncconf/pncconf.glade:21680 +#: src/emc/usr_intf/pncconf/pncconf.glade:23476 +#: src/emc/usr_intf/pncconf/pncconf.glade:25272 +msgid "41:" +msgstr "41:" -#: src/emc/usr_intf/pncconf/pncconf.glade:10877 -#: src/emc/usr_intf/pncconf/pncconf.glade:11511 -#: src/emc/usr_intf/pncconf/pncconf.glade:16716 -#: src/emc/usr_intf/pncconf/pncconf.glade:19323 -#: src/emc/usr_intf/pncconf/pncconf.glade:22398 -#: src/emc/usr_intf/pncconf/pncconf.glade:24194 -#: src/emc/usr_intf/pncconf/pncconf.glade:25990 -#: emc/usr_intf/pncconf/pncconf.glade:10877 -#: emc/usr_intf/pncconf/pncconf.glade:11511 -#: emc/usr_intf/pncconf/pncconf.glade:16716 -#: emc/usr_intf/pncconf/pncconf.glade:19323 -#: emc/usr_intf/pncconf/pncconf.glade:22398 -#: emc/usr_intf/pncconf/pncconf.glade:24194 -#: emc/usr_intf/pncconf/pncconf.glade:25990 -#: src/emc/usr_intf/pncconf/pncconf.glade:10901 -#: src/emc/usr_intf/pncconf/pncconf.glade:11535 -#: src/emc/usr_intf/pncconf/pncconf.glade:16740 -#: src/emc/usr_intf/pncconf/pncconf.glade:19347 -#: src/emc/usr_intf/pncconf/pncconf.glade:22422 -#: src/emc/usr_intf/pncconf/pncconf.glade:24218 -#: src/emc/usr_intf/pncconf/pncconf.glade:26014 -msgid "17:" -msgstr "17:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9916 +#: src/emc/usr_intf/pncconf/pncconf.glade:12725 +#: src/emc/usr_intf/pncconf/pncconf.glade:17879 +#: src/emc/usr_intf/pncconf/pncconf.glade:20071 +#: src/emc/usr_intf/pncconf/pncconf.glade:21696 +#: src/emc/usr_intf/pncconf/pncconf.glade:23492 +#: src/emc/usr_intf/pncconf/pncconf.glade:25288 +msgid "39:" +msgstr "39:" -#: src/emc/usr_intf/pncconf/pncconf.glade:10891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11497 -#: src/emc/usr_intf/pncconf/pncconf.glade:16702 -#: src/emc/usr_intf/pncconf/pncconf.glade:19309 -#: src/emc/usr_intf/pncconf/pncconf.glade:22412 -#: src/emc/usr_intf/pncconf/pncconf.glade:24208 -#: src/emc/usr_intf/pncconf/pncconf.glade:26004 -#: emc/usr_intf/pncconf/pncconf.glade:10891 -#: emc/usr_intf/pncconf/pncconf.glade:11497 -#: emc/usr_intf/pncconf/pncconf.glade:16702 -#: emc/usr_intf/pncconf/pncconf.glade:19309 -#: emc/usr_intf/pncconf/pncconf.glade:22412 -#: emc/usr_intf/pncconf/pncconf.glade:24208 -#: emc/usr_intf/pncconf/pncconf.glade:26004 -#: src/emc/usr_intf/pncconf/pncconf.glade:10915 -#: src/emc/usr_intf/pncconf/pncconf.glade:11521 -#: src/emc/usr_intf/pncconf/pncconf.glade:16726 -#: src/emc/usr_intf/pncconf/pncconf.glade:19333 -#: src/emc/usr_intf/pncconf/pncconf.glade:22436 -#: src/emc/usr_intf/pncconf/pncconf.glade:24232 -#: src/emc/usr_intf/pncconf/pncconf.glade:26028 -msgid "15:" -msgstr "15:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9932 +#: src/emc/usr_intf/pncconf/pncconf.glade:12709 +#: src/emc/usr_intf/pncconf/pncconf.glade:17863 +#: src/emc/usr_intf/pncconf/pncconf.glade:20055 +#: src/emc/usr_intf/pncconf/pncconf.glade:21712 +#: src/emc/usr_intf/pncconf/pncconf.glade:23508 +#: src/emc/usr_intf/pncconf/pncconf.glade:25304 +msgid "37:" +msgstr "37:" -#: src/emc/usr_intf/pncconf/pncconf.glade:10905 -#: src/emc/usr_intf/pncconf/pncconf.glade:11483 -#: src/emc/usr_intf/pncconf/pncconf.glade:16688 -#: src/emc/usr_intf/pncconf/pncconf.glade:19295 -#: src/emc/usr_intf/pncconf/pncconf.glade:22426 -#: src/emc/usr_intf/pncconf/pncconf.glade:24222 -#: src/emc/usr_intf/pncconf/pncconf.glade:26018 -#: emc/usr_intf/pncconf/pncconf.glade:10905 -#: emc/usr_intf/pncconf/pncconf.glade:11483 -#: emc/usr_intf/pncconf/pncconf.glade:16688 -#: emc/usr_intf/pncconf/pncconf.glade:19295 -#: emc/usr_intf/pncconf/pncconf.glade:22426 -#: emc/usr_intf/pncconf/pncconf.glade:24222 -#: emc/usr_intf/pncconf/pncconf.glade:26018 -#: src/emc/usr_intf/pncconf/pncconf.glade:10929 -#: src/emc/usr_intf/pncconf/pncconf.glade:11507 -#: src/emc/usr_intf/pncconf/pncconf.glade:16712 -#: src/emc/usr_intf/pncconf/pncconf.glade:19319 -#: src/emc/usr_intf/pncconf/pncconf.glade:22450 -#: src/emc/usr_intf/pncconf/pncconf.glade:24246 -#: src/emc/usr_intf/pncconf/pncconf.glade:26042 -msgid "13:" -msgstr "13:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9948 +#: src/emc/usr_intf/pncconf/pncconf.glade:12693 +#: src/emc/usr_intf/pncconf/pncconf.glade:17847 +#: src/emc/usr_intf/pncconf/pncconf.glade:20039 +#: src/emc/usr_intf/pncconf/pncconf.glade:21728 +#: src/emc/usr_intf/pncconf/pncconf.glade:23524 +#: src/emc/usr_intf/pncconf/pncconf.glade:25320 +msgid "35:" +msgstr "35:" -#: src/emc/usr_intf/pncconf/pncconf.glade:10919 -#: src/emc/usr_intf/pncconf/pncconf.glade:11469 -#: src/emc/usr_intf/pncconf/pncconf.glade:16674 -#: src/emc/usr_intf/pncconf/pncconf.glade:19281 -#: src/emc/usr_intf/pncconf/pncconf.glade:22440 -#: src/emc/usr_intf/pncconf/pncconf.glade:24236 -#: src/emc/usr_intf/pncconf/pncconf.glade:26032 -#: emc/usr_intf/pncconf/pncconf.glade:10919 -#: emc/usr_intf/pncconf/pncconf.glade:11469 -#: emc/usr_intf/pncconf/pncconf.glade:16674 -#: emc/usr_intf/pncconf/pncconf.glade:19281 -#: emc/usr_intf/pncconf/pncconf.glade:22440 -#: emc/usr_intf/pncconf/pncconf.glade:24236 -#: emc/usr_intf/pncconf/pncconf.glade:26032 -#: src/emc/usr_intf/pncconf/pncconf.glade:10943 -#: src/emc/usr_intf/pncconf/pncconf.glade:11493 -#: src/emc/usr_intf/pncconf/pncconf.glade:16698 -#: src/emc/usr_intf/pncconf/pncconf.glade:19305 -#: src/emc/usr_intf/pncconf/pncconf.glade:22464 -#: src/emc/usr_intf/pncconf/pncconf.glade:24260 -#: src/emc/usr_intf/pncconf/pncconf.glade:26056 -msgid "11:" -msgstr "11:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9964 +#: src/emc/usr_intf/pncconf/pncconf.glade:12677 +#: src/emc/usr_intf/pncconf/pncconf.glade:17831 +#: src/emc/usr_intf/pncconf/pncconf.glade:20023 +#: src/emc/usr_intf/pncconf/pncconf.glade:21744 +#: src/emc/usr_intf/pncconf/pncconf.glade:23540 +#: src/emc/usr_intf/pncconf/pncconf.glade:25336 +msgid "33:" +msgstr "33:" -#: src/emc/usr_intf/pncconf/pncconf.glade:10933 -#: src/emc/usr_intf/pncconf/pncconf.glade:11455 -#: src/emc/usr_intf/pncconf/pncconf.glade:16660 -#: src/emc/usr_intf/pncconf/pncconf.glade:19267 -#: src/emc/usr_intf/pncconf/pncconf.glade:22454 -#: src/emc/usr_intf/pncconf/pncconf.glade:24250 -#: src/emc/usr_intf/pncconf/pncconf.glade:26046 -#: emc/usr_intf/pncconf/pncconf.glade:10933 -#: emc/usr_intf/pncconf/pncconf.glade:11455 -#: emc/usr_intf/pncconf/pncconf.glade:16660 -#: emc/usr_intf/pncconf/pncconf.glade:19267 -#: emc/usr_intf/pncconf/pncconf.glade:22454 -#: emc/usr_intf/pncconf/pncconf.glade:24250 -#: emc/usr_intf/pncconf/pncconf.glade:26046 -#: src/emc/usr_intf/pncconf/pncconf.glade:10957 -#: src/emc/usr_intf/pncconf/pncconf.glade:11479 -#: src/emc/usr_intf/pncconf/pncconf.glade:16684 -#: src/emc/usr_intf/pncconf/pncconf.glade:19291 -#: src/emc/usr_intf/pncconf/pncconf.glade:22478 -#: src/emc/usr_intf/pncconf/pncconf.glade:24274 -#: src/emc/usr_intf/pncconf/pncconf.glade:26070 -msgid " 9:" -msgstr " 9:" +#: src/emc/usr_intf/pncconf/pncconf.glade:10337 +#: src/emc/usr_intf/pncconf/pncconf.glade:12304 +#: src/emc/usr_intf/pncconf/pncconf.glade:17458 +#: src/emc/usr_intf/pncconf/pncconf.glade:19762 +#: src/emc/usr_intf/pncconf/pncconf.glade:22005 +#: src/emc/usr_intf/pncconf/pncconf.glade:23801 +#: src/emc/usr_intf/pncconf/pncconf.glade:25597 +msgid "25:" +msgstr "25:" -#: src/emc/usr_intf/pncconf/pncconf.glade:10947 -#: src/emc/usr_intf/pncconf/pncconf.glade:11441 -#: src/emc/usr_intf/pncconf/pncconf.glade:16646 -#: src/emc/usr_intf/pncconf/pncconf.glade:19253 -#: src/emc/usr_intf/pncconf/pncconf.glade:22468 -#: src/emc/usr_intf/pncconf/pncconf.glade:24264 -#: src/emc/usr_intf/pncconf/pncconf.glade:26060 -#: emc/usr_intf/pncconf/pncconf.glade:10947 -#: emc/usr_intf/pncconf/pncconf.glade:11441 -#: emc/usr_intf/pncconf/pncconf.glade:16646 -#: emc/usr_intf/pncconf/pncconf.glade:19253 -#: emc/usr_intf/pncconf/pncconf.glade:22468 -#: emc/usr_intf/pncconf/pncconf.glade:24264 -#: emc/usr_intf/pncconf/pncconf.glade:26060 -#: src/emc/usr_intf/pncconf/pncconf.glade:10971 -#: src/emc/usr_intf/pncconf/pncconf.glade:11465 -#: src/emc/usr_intf/pncconf/pncconf.glade:16670 -#: src/emc/usr_intf/pncconf/pncconf.glade:19277 -#: src/emc/usr_intf/pncconf/pncconf.glade:22492 -#: src/emc/usr_intf/pncconf/pncconf.glade:24288 -#: src/emc/usr_intf/pncconf/pncconf.glade:26084 -msgid " 7:" -msgstr " 7:" +#: src/emc/usr_intf/pncconf/pncconf.glade:10353 +#: src/emc/usr_intf/pncconf/pncconf.glade:12288 +#: src/emc/usr_intf/pncconf/pncconf.glade:17442 +#: src/emc/usr_intf/pncconf/pncconf.glade:19746 +#: src/emc/usr_intf/pncconf/pncconf.glade:22021 +#: src/emc/usr_intf/pncconf/pncconf.glade:23817 +#: src/emc/usr_intf/pncconf/pncconf.glade:25613 +msgid "27:" +msgstr "27:" -#: src/emc/usr_intf/pncconf/pncconf.glade:10961 -#: src/emc/usr_intf/pncconf/pncconf.glade:11427 -#: src/emc/usr_intf/pncconf/pncconf.glade:16632 -#: src/emc/usr_intf/pncconf/pncconf.glade:19239 -#: src/emc/usr_intf/pncconf/pncconf.glade:22482 -#: src/emc/usr_intf/pncconf/pncconf.glade:24278 -#: src/emc/usr_intf/pncconf/pncconf.glade:26074 -#: emc/usr_intf/pncconf/pncconf.glade:10961 -#: emc/usr_intf/pncconf/pncconf.glade:11427 -#: emc/usr_intf/pncconf/pncconf.glade:16632 -#: emc/usr_intf/pncconf/pncconf.glade:19239 -#: emc/usr_intf/pncconf/pncconf.glade:22482 -#: emc/usr_intf/pncconf/pncconf.glade:24278 -#: emc/usr_intf/pncconf/pncconf.glade:26074 -#: src/emc/usr_intf/pncconf/pncconf.glade:10985 -#: src/emc/usr_intf/pncconf/pncconf.glade:11451 -#: src/emc/usr_intf/pncconf/pncconf.glade:16656 -#: src/emc/usr_intf/pncconf/pncconf.glade:19263 -#: src/emc/usr_intf/pncconf/pncconf.glade:22506 -#: src/emc/usr_intf/pncconf/pncconf.glade:24302 -#: src/emc/usr_intf/pncconf/pncconf.glade:26098 -msgid " 5:" -msgstr " 5:" +#: src/emc/usr_intf/pncconf/pncconf.glade:10369 +#: src/emc/usr_intf/pncconf/pncconf.glade:12272 +#: src/emc/usr_intf/pncconf/pncconf.glade:17426 +#: src/emc/usr_intf/pncconf/pncconf.glade:19730 +#: src/emc/usr_intf/pncconf/pncconf.glade:22037 +#: src/emc/usr_intf/pncconf/pncconf.glade:23833 +#: src/emc/usr_intf/pncconf/pncconf.glade:25629 +msgid "29:" +msgstr "29:" -#: src/emc/usr_intf/pncconf/pncconf.glade:10975 -#: src/emc/usr_intf/pncconf/pncconf.glade:11413 -#: src/emc/usr_intf/pncconf/pncconf.glade:16618 -#: src/emc/usr_intf/pncconf/pncconf.glade:19225 -#: src/emc/usr_intf/pncconf/pncconf.glade:22496 -#: src/emc/usr_intf/pncconf/pncconf.glade:24292 -#: src/emc/usr_intf/pncconf/pncconf.glade:26088 -#: emc/usr_intf/pncconf/pncconf.glade:10975 -#: emc/usr_intf/pncconf/pncconf.glade:11413 -#: emc/usr_intf/pncconf/pncconf.glade:16618 -#: emc/usr_intf/pncconf/pncconf.glade:19225 -#: emc/usr_intf/pncconf/pncconf.glade:22496 -#: emc/usr_intf/pncconf/pncconf.glade:24292 -#: emc/usr_intf/pncconf/pncconf.glade:26088 -#: src/emc/usr_intf/pncconf/pncconf.glade:10999 -#: src/emc/usr_intf/pncconf/pncconf.glade:11437 -#: src/emc/usr_intf/pncconf/pncconf.glade:16642 -#: src/emc/usr_intf/pncconf/pncconf.glade:19249 -#: src/emc/usr_intf/pncconf/pncconf.glade:22520 -#: src/emc/usr_intf/pncconf/pncconf.glade:24316 -#: src/emc/usr_intf/pncconf/pncconf.glade:26112 -msgid " 3:" -msgstr " 3:" +#: src/emc/usr_intf/pncconf/pncconf.glade:10385 +#: src/emc/usr_intf/pncconf/pncconf.glade:12256 +#: src/emc/usr_intf/pncconf/pncconf.glade:17410 +#: src/emc/usr_intf/pncconf/pncconf.glade:19714 +#: src/emc/usr_intf/pncconf/pncconf.glade:22053 +#: src/emc/usr_intf/pncconf/pncconf.glade:23849 +#: src/emc/usr_intf/pncconf/pncconf.glade:25645 +msgid "31:" +msgstr "31:" -#: src/emc/usr_intf/pncconf/pncconf.glade:10989 -#: src/emc/usr_intf/pncconf/pncconf.glade:11399 -#: src/emc/usr_intf/pncconf/pncconf.glade:16604 -#: src/emc/usr_intf/pncconf/pncconf.glade:19211 -#: src/emc/usr_intf/pncconf/pncconf.glade:22510 -#: src/emc/usr_intf/pncconf/pncconf.glade:24306 -#: src/emc/usr_intf/pncconf/pncconf.glade:26102 -#: emc/usr_intf/pncconf/pncconf.glade:10989 -#: emc/usr_intf/pncconf/pncconf.glade:11399 -#: emc/usr_intf/pncconf/pncconf.glade:16604 -#: emc/usr_intf/pncconf/pncconf.glade:19211 -#: emc/usr_intf/pncconf/pncconf.glade:22510 -#: emc/usr_intf/pncconf/pncconf.glade:24306 -#: emc/usr_intf/pncconf/pncconf.glade:26102 -#: src/emc/usr_intf/pncconf/pncconf.glade:11013 -#: src/emc/usr_intf/pncconf/pncconf.glade:11423 -#: src/emc/usr_intf/pncconf/pncconf.glade:16628 -#: src/emc/usr_intf/pncconf/pncconf.glade:19235 -#: src/emc/usr_intf/pncconf/pncconf.glade:22534 -#: src/emc/usr_intf/pncconf/pncconf.glade:24330 -#: src/emc/usr_intf/pncconf/pncconf.glade:26126 -msgid " 1:" -msgstr " 1:" +#: src/emc/usr_intf/pncconf/pncconf.glade:10677 +#: src/emc/usr_intf/pncconf/pncconf.glade:10689 +#: src/emc/usr_intf/pncconf/pncconf.glade:11955 +#: src/emc/usr_intf/pncconf/pncconf.glade:11967 +#: src/emc/usr_intf/pncconf/pncconf.glade:14464 +#: src/emc/usr_intf/pncconf/pncconf.glade:14476 +#: src/emc/usr_intf/pncconf/pncconf.glade:17161 +#: src/emc/usr_intf/pncconf/pncconf.glade:17173 +#: src/emc/usr_intf/pncconf/pncconf.glade:19567 +#: src/emc/usr_intf/pncconf/pncconf.glade:19579 +#: src/emc/usr_intf/pncconf/pncconf.glade:22190 +#: src/emc/usr_intf/pncconf/pncconf.glade:22202 +#: src/emc/usr_intf/pncconf/pncconf.glade:23986 +#: src/emc/usr_intf/pncconf/pncconf.glade:23998 +#: src/emc/usr_intf/pncconf/pncconf.glade:25782 +#: src/emc/usr_intf/pncconf/pncconf.glade:25794 +#: src/emc/usr_intf/pncconf/pncconf.glade:28287 +#: src/emc/usr_intf/pncconf/pncconf.glade:28299 +#: src/emc/usr_intf/pncconf/pncconf.glade:29415 +#: src/emc/usr_intf/pncconf/pncconf.glade:29427 +#: src/emc/usr_intf/pncconf/pncconf.glade:32869 +#: src/emc/usr_intf/pncconf/pncconf.glade:33760 +#: src/emc/usr_intf/pncconf/pncconf.glade:33772 +#: src/emc/usr_intf/pncconf/pncconf.glade:37771 +#: src/emc/usr_intf/pncconf/pncconf.glade:37783 +#: src/emc/usr_intf/pncconf/pncconf.glade:38777 +#: src/emc/usr_intf/pncconf/pncconf.glade:38789 +#: src/emc/usr_intf/pncconf/pncconf.glade:42131 +#: src/emc/usr_intf/pncconf/pncconf.glade:42143 +#: src/emc/usr_intf/pncconf/pncconf.glade:43259 +#: src/emc/usr_intf/pncconf/pncconf.glade:43271 +#: src/emc/usr_intf/pncconf/pncconf.glade:46702 +#: src/emc/usr_intf/pncconf/pncconf.glade:46714 +#: src/emc/usr_intf/pncconf/pncconf.glade:49054 +#: src/emc/usr_intf/pncconf/pncconf.glade:49066 +#: src/emc/usr_intf/pncconf/pncconf.glade:50182 +#: src/emc/usr_intf/pncconf/pncconf.glade:50194 +#: src/emc/usr_intf/pncconf/pncconf.glade:53625 +#: src/emc/usr_intf/pncconf/pncconf.glade:53637 +#: src/emc/usr_intf/pncconf/pncconf.glade:55977 +#: src/emc/usr_intf/pncconf/pncconf.glade:55989 +#: src/emc/usr_intf/pncconf/pncconf.glade:57105 +#: src/emc/usr_intf/pncconf/pncconf.glade:57117 +#: src/emc/usr_intf/pncconf/pncconf.glade:60548 +#: src/emc/usr_intf/pncconf/pncconf.glade:60560 +msgid "function" +msgstr "Fonction" -#: src/emc/usr_intf/pncconf/pncconf.glade:11002 -#: src/emc/usr_intf/pncconf/pncconf.glade:11065 -#: src/emc/usr_intf/pncconf/pncconf.glade:11324 -#: src/emc/usr_intf/pncconf/pncconf.glade:11386 -#: src/emc/usr_intf/pncconf/pncconf.glade:13937 -#: src/emc/usr_intf/pncconf/pncconf.glade:13999 -#: src/emc/usr_intf/pncconf/pncconf.glade:16529 -#: src/emc/usr_intf/pncconf/pncconf.glade:16591 -#: src/emc/usr_intf/pncconf/pncconf.glade:19142 -#: src/emc/usr_intf/pncconf/pncconf.glade:19198 -#: src/emc/usr_intf/pncconf/pncconf.glade:22523 -#: src/emc/usr_intf/pncconf/pncconf.glade:22580 -#: src/emc/usr_intf/pncconf/pncconf.glade:24319 -#: src/emc/usr_intf/pncconf/pncconf.glade:24376 -#: src/emc/usr_intf/pncconf/pncconf.glade:26115 -#: src/emc/usr_intf/pncconf/pncconf.glade:26172 -#: src/emc/usr_intf/pncconf/pncconf.glade:28686 -#: src/emc/usr_intf/pncconf/pncconf.glade:28749 -#: src/emc/usr_intf/pncconf/pncconf.glade:28905 -#: src/emc/usr_intf/pncconf/pncconf.glade:28967 -#: src/emc/usr_intf/pncconf/pncconf.glade:33067 -#: src/emc/usr_intf/pncconf/pncconf.glade:33263 -#: src/emc/usr_intf/pncconf/pncconf.glade:33325 -#: src/emc/usr_intf/pncconf/pncconf.glade:38183 -#: src/emc/usr_intf/pncconf/pncconf.glade:38246 -#: src/emc/usr_intf/pncconf/pncconf.glade:38520 -#: src/emc/usr_intf/pncconf/pncconf.glade:42530 -#: src/emc/usr_intf/pncconf/pncconf.glade:42593 -#: src/emc/usr_intf/pncconf/pncconf.glade:42749 -#: src/emc/usr_intf/pncconf/pncconf.glade:42811 -#: src/emc/usr_intf/pncconf/pncconf.glade:46924 -#: src/emc/usr_intf/pncconf/pncconf.glade:49453 -#: src/emc/usr_intf/pncconf/pncconf.glade:49516 -#: src/emc/usr_intf/pncconf/pncconf.glade:49672 -#: src/emc/usr_intf/pncconf/pncconf.glade:49734 -#: src/emc/usr_intf/pncconf/pncconf.glade:53847 -#: emc/usr_intf/pncconf/pncconf.glade:11002 -#: emc/usr_intf/pncconf/pncconf.glade:11065 -#: emc/usr_intf/pncconf/pncconf.glade:11324 -#: emc/usr_intf/pncconf/pncconf.glade:11386 -#: emc/usr_intf/pncconf/pncconf.glade:13937 -#: emc/usr_intf/pncconf/pncconf.glade:13999 -#: emc/usr_intf/pncconf/pncconf.glade:16529 -#: emc/usr_intf/pncconf/pncconf.glade:16591 -#: emc/usr_intf/pncconf/pncconf.glade:19142 -#: emc/usr_intf/pncconf/pncconf.glade:19198 -#: emc/usr_intf/pncconf/pncconf.glade:22523 -#: emc/usr_intf/pncconf/pncconf.glade:22580 -#: emc/usr_intf/pncconf/pncconf.glade:24319 -#: emc/usr_intf/pncconf/pncconf.glade:24376 -#: emc/usr_intf/pncconf/pncconf.glade:26115 -#: emc/usr_intf/pncconf/pncconf.glade:26172 -#: emc/usr_intf/pncconf/pncconf.glade:28686 -#: emc/usr_intf/pncconf/pncconf.glade:28749 -#: emc/usr_intf/pncconf/pncconf.glade:28905 -#: emc/usr_intf/pncconf/pncconf.glade:28967 -#: emc/usr_intf/pncconf/pncconf.glade:33067 -#: emc/usr_intf/pncconf/pncconf.glade:33263 -#: emc/usr_intf/pncconf/pncconf.glade:33325 -#: emc/usr_intf/pncconf/pncconf.glade:38183 -#: emc/usr_intf/pncconf/pncconf.glade:38246 -#: emc/usr_intf/pncconf/pncconf.glade:38520 -#: emc/usr_intf/pncconf/pncconf.glade:42530 -#: emc/usr_intf/pncconf/pncconf.glade:42593 -#: emc/usr_intf/pncconf/pncconf.glade:42749 -#: emc/usr_intf/pncconf/pncconf.glade:42811 -#: emc/usr_intf/pncconf/pncconf.glade:46924 -#: emc/usr_intf/pncconf/pncconf.glade:49453 -#: emc/usr_intf/pncconf/pncconf.glade:49516 -#: emc/usr_intf/pncconf/pncconf.glade:49672 -#: emc/usr_intf/pncconf/pncconf.glade:49734 -#: emc/usr_intf/pncconf/pncconf.glade:53847 -#: src/emc/usr_intf/pncconf/pncconf.glade:11026 -#: src/emc/usr_intf/pncconf/pncconf.glade:11089 -#: src/emc/usr_intf/pncconf/pncconf.glade:11348 -#: src/emc/usr_intf/pncconf/pncconf.glade:11410 -#: src/emc/usr_intf/pncconf/pncconf.glade:13961 -#: src/emc/usr_intf/pncconf/pncconf.glade:14023 -#: src/emc/usr_intf/pncconf/pncconf.glade:16553 -#: src/emc/usr_intf/pncconf/pncconf.glade:16615 -#: src/emc/usr_intf/pncconf/pncconf.glade:19166 -#: src/emc/usr_intf/pncconf/pncconf.glade:19222 -#: src/emc/usr_intf/pncconf/pncconf.glade:22547 -#: src/emc/usr_intf/pncconf/pncconf.glade:22604 -#: src/emc/usr_intf/pncconf/pncconf.glade:24343 -#: src/emc/usr_intf/pncconf/pncconf.glade:24400 -#: src/emc/usr_intf/pncconf/pncconf.glade:26139 -#: src/emc/usr_intf/pncconf/pncconf.glade:26196 -#: src/emc/usr_intf/pncconf/pncconf.glade:28710 -#: src/emc/usr_intf/pncconf/pncconf.glade:28773 -#: src/emc/usr_intf/pncconf/pncconf.glade:28929 -#: src/emc/usr_intf/pncconf/pncconf.glade:28991 -#: src/emc/usr_intf/pncconf/pncconf.glade:33091 -#: src/emc/usr_intf/pncconf/pncconf.glade:33287 -#: src/emc/usr_intf/pncconf/pncconf.glade:33349 -#: src/emc/usr_intf/pncconf/pncconf.glade:38207 -#: src/emc/usr_intf/pncconf/pncconf.glade:38270 -#: src/emc/usr_intf/pncconf/pncconf.glade:38544 -#: src/emc/usr_intf/pncconf/pncconf.glade:42554 -#: src/emc/usr_intf/pncconf/pncconf.glade:42617 -#: src/emc/usr_intf/pncconf/pncconf.glade:42773 -#: src/emc/usr_intf/pncconf/pncconf.glade:42835 -#: src/emc/usr_intf/pncconf/pncconf.glade:46948 -#: src/emc/usr_intf/pncconf/pncconf.glade:49477 -#: src/emc/usr_intf/pncconf/pncconf.glade:49540 -#: src/emc/usr_intf/pncconf/pncconf.glade:49696 -#: src/emc/usr_intf/pncconf/pncconf.glade:49758 -#: src/emc/usr_intf/pncconf/pncconf.glade:53871 -#: src/emc/usr_intf/pncconf/pncconf.glade:56400 -#: src/emc/usr_intf/pncconf/pncconf.glade:56463 -#: src/emc/usr_intf/pncconf/pncconf.glade:56619 -#: src/emc/usr_intf/pncconf/pncconf.glade:56681 -#: src/emc/usr_intf/pncconf/pncconf.glade:60794 -msgid "Inv" -msgstr "Inverser" +#: src/emc/usr_intf/pncconf/pncconf.glade:10703 +#: src/emc/usr_intf/pncconf/pncconf.glade:11940 +#: src/emc/usr_intf/pncconf/pncconf.glade:14449 +#: src/emc/usr_intf/pncconf/pncconf.glade:17146 +#: src/emc/usr_intf/pncconf/pncconf.glade:19553 +#: src/emc/usr_intf/pncconf/pncconf.glade:22217 +#: src/emc/usr_intf/pncconf/pncconf.glade:24013 +#: src/emc/usr_intf/pncconf/pncconf.glade:25809 +msgid "Launch test panel" +msgstr "Lancer le panneau de test" + +#: src/emc/usr_intf/pncconf/pncconf.glade:11192 +#: src/emc/usr_intf/pncconf/pncconf.glade:11204 +#: src/emc/usr_intf/pncconf/pncconf.glade:11440 +#: src/emc/usr_intf/pncconf/pncconf.glade:11454 +#: src/emc/usr_intf/pncconf/pncconf.glade:13949 +#: src/emc/usr_intf/pncconf/pncconf.glade:13963 +#: src/emc/usr_intf/pncconf/pncconf.glade:16645 +#: src/emc/usr_intf/pncconf/pncconf.glade:16659 +#: src/emc/usr_intf/pncconf/pncconf.glade:19190 +#: src/emc/usr_intf/pncconf/pncconf.glade:19204 +#: src/emc/usr_intf/pncconf/pncconf.glade:22567 +#: src/emc/usr_intf/pncconf/pncconf.glade:22579 +#: src/emc/usr_intf/pncconf/pncconf.glade:24363 +#: src/emc/usr_intf/pncconf/pncconf.glade:24375 +#: src/emc/usr_intf/pncconf/pncconf.glade:26159 +#: src/emc/usr_intf/pncconf/pncconf.glade:26171 +#: src/emc/usr_intf/pncconf/pncconf.glade:28772 +#: src/emc/usr_intf/pncconf/pncconf.glade:28784 +#: src/emc/usr_intf/pncconf/pncconf.glade:28917 +#: src/emc/usr_intf/pncconf/pncconf.glade:28931 +#: src/emc/usr_intf/pncconf/pncconf.glade:33102 +#: src/emc/usr_intf/pncconf/pncconf.glade:33275 +#: src/emc/usr_intf/pncconf/pncconf.glade:33289 +#: src/emc/usr_intf/pncconf/pncconf.glade:38269 +#: src/emc/usr_intf/pncconf/pncconf.glade:38281 +#: src/emc/usr_intf/pncconf/pncconf.glade:38532 +#: src/emc/usr_intf/pncconf/pncconf.glade:38546 +#: src/emc/usr_intf/pncconf/pncconf.glade:42616 +#: src/emc/usr_intf/pncconf/pncconf.glade:42628 +#: src/emc/usr_intf/pncconf/pncconf.glade:42761 +#: src/emc/usr_intf/pncconf/pncconf.glade:42775 +#: src/emc/usr_intf/pncconf/pncconf.glade:46947 +#: src/emc/usr_intf/pncconf/pncconf.glade:46959 +#: src/emc/usr_intf/pncconf/pncconf.glade:49539 +#: src/emc/usr_intf/pncconf/pncconf.glade:49551 +#: src/emc/usr_intf/pncconf/pncconf.glade:49684 +#: src/emc/usr_intf/pncconf/pncconf.glade:49698 +#: src/emc/usr_intf/pncconf/pncconf.glade:53870 +#: src/emc/usr_intf/pncconf/pncconf.glade:53882 +#: src/emc/usr_intf/pncconf/pncconf.glade:56462 +#: src/emc/usr_intf/pncconf/pncconf.glade:56474 +#: src/emc/usr_intf/pncconf/pncconf.glade:56607 +#: src/emc/usr_intf/pncconf/pncconf.glade:56621 +#: src/emc/usr_intf/pncconf/pncconf.glade:60793 +#: src/emc/usr_intf/pncconf/pncconf.glade:60805 +msgid "Num" +msgstr "Numéro" -#: src/emc/usr_intf/pncconf/pncconf.glade:11198 -#: emc/usr_intf/pncconf/pncconf.glade:11198 #: src/emc/usr_intf/pncconf/pncconf.glade:11222 msgid "" " I/O\n" @@ -15838,8 +13673,6 @@ msgstr "" "Entrées/Sorties\n" "Connecteur 2" -#: src/emc/usr_intf/pncconf/pncconf.glade:13811 -#: emc/usr_intf/pncconf/pncconf.glade:13811 #: src/emc/usr_intf/pncconf/pncconf.glade:13835 msgid "" " I/O\n" @@ -15848,137 +13681,57 @@ msgstr "" "Entrées/Sorties \n" " Connecteur 3" -#: src/emc/usr_intf/pncconf/pncconf.glade:14012 -#: src/emc/usr_intf/pncconf/pncconf.glade:14039 -#: src/emc/usr_intf/pncconf/pncconf.glade:14053 -#: src/emc/usr_intf/pncconf/pncconf.glade:28632 -#: src/emc/usr_intf/pncconf/pncconf.glade:28646 -#: src/emc/usr_intf/pncconf/pncconf.glade:28673 -#: src/emc/usr_intf/pncconf/pncconf.glade:28980 -#: src/emc/usr_intf/pncconf/pncconf.glade:29007 -#: src/emc/usr_intf/pncconf/pncconf.glade:29021 -#: src/emc/usr_intf/pncconf/pncconf.glade:32951 -#: src/emc/usr_intf/pncconf/pncconf.glade:32965 -#: src/emc/usr_intf/pncconf/pncconf.glade:32992 -#: src/emc/usr_intf/pncconf/pncconf.glade:33338 -#: src/emc/usr_intf/pncconf/pncconf.glade:33365 -#: src/emc/usr_intf/pncconf/pncconf.glade:33379 -#: src/emc/usr_intf/pncconf/pncconf.glade:38129 -#: src/emc/usr_intf/pncconf/pncconf.glade:38143 -#: src/emc/usr_intf/pncconf/pncconf.glade:38170 -#: src/emc/usr_intf/pncconf/pncconf.glade:38594 -#: src/emc/usr_intf/pncconf/pncconf.glade:38621 -#: src/emc/usr_intf/pncconf/pncconf.glade:38635 -#: src/emc/usr_intf/pncconf/pncconf.glade:42476 -#: src/emc/usr_intf/pncconf/pncconf.glade:42490 -#: src/emc/usr_intf/pncconf/pncconf.glade:42517 -#: src/emc/usr_intf/pncconf/pncconf.glade:42824 -#: src/emc/usr_intf/pncconf/pncconf.glade:42851 -#: src/emc/usr_intf/pncconf/pncconf.glade:42865 -#: src/emc/usr_intf/pncconf/pncconf.glade:46808 -#: src/emc/usr_intf/pncconf/pncconf.glade:46822 -#: src/emc/usr_intf/pncconf/pncconf.glade:46849 -#: src/emc/usr_intf/pncconf/pncconf.glade:49399 -#: src/emc/usr_intf/pncconf/pncconf.glade:49413 -#: src/emc/usr_intf/pncconf/pncconf.glade:49440 -#: src/emc/usr_intf/pncconf/pncconf.glade:49747 -#: src/emc/usr_intf/pncconf/pncconf.glade:49774 -#: src/emc/usr_intf/pncconf/pncconf.glade:49788 -#: src/emc/usr_intf/pncconf/pncconf.glade:53731 -#: src/emc/usr_intf/pncconf/pncconf.glade:53745 -#: src/emc/usr_intf/pncconf/pncconf.glade:53772 -#: emc/usr_intf/pncconf/pncconf.glade:14012 -#: emc/usr_intf/pncconf/pncconf.glade:14039 -#: emc/usr_intf/pncconf/pncconf.glade:14053 -#: emc/usr_intf/pncconf/pncconf.glade:28632 -#: emc/usr_intf/pncconf/pncconf.glade:28646 -#: emc/usr_intf/pncconf/pncconf.glade:28673 -#: emc/usr_intf/pncconf/pncconf.glade:28980 -#: emc/usr_intf/pncconf/pncconf.glade:29007 -#: emc/usr_intf/pncconf/pncconf.glade:29021 -#: emc/usr_intf/pncconf/pncconf.glade:32951 -#: emc/usr_intf/pncconf/pncconf.glade:32965 -#: emc/usr_intf/pncconf/pncconf.glade:32992 -#: emc/usr_intf/pncconf/pncconf.glade:33338 -#: emc/usr_intf/pncconf/pncconf.glade:33365 -#: emc/usr_intf/pncconf/pncconf.glade:33379 -#: emc/usr_intf/pncconf/pncconf.glade:38129 -#: emc/usr_intf/pncconf/pncconf.glade:38143 -#: emc/usr_intf/pncconf/pncconf.glade:38170 -#: emc/usr_intf/pncconf/pncconf.glade:38594 -#: emc/usr_intf/pncconf/pncconf.glade:38621 -#: emc/usr_intf/pncconf/pncconf.glade:38635 -#: emc/usr_intf/pncconf/pncconf.glade:42476 -#: emc/usr_intf/pncconf/pncconf.glade:42490 -#: emc/usr_intf/pncconf/pncconf.glade:42517 -#: emc/usr_intf/pncconf/pncconf.glade:42824 -#: emc/usr_intf/pncconf/pncconf.glade:42851 -#: emc/usr_intf/pncconf/pncconf.glade:42865 -#: emc/usr_intf/pncconf/pncconf.glade:46808 -#: emc/usr_intf/pncconf/pncconf.glade:46822 -#: emc/usr_intf/pncconf/pncconf.glade:46849 -#: emc/usr_intf/pncconf/pncconf.glade:49399 -#: emc/usr_intf/pncconf/pncconf.glade:49413 -#: emc/usr_intf/pncconf/pncconf.glade:49440 -#: emc/usr_intf/pncconf/pncconf.glade:49747 -#: emc/usr_intf/pncconf/pncconf.glade:49774 -#: emc/usr_intf/pncconf/pncconf.glade:49788 -#: emc/usr_intf/pncconf/pncconf.glade:53731 -#: emc/usr_intf/pncconf/pncconf.glade:53745 -#: emc/usr_intf/pncconf/pncconf.glade:53772 -#: src/emc/usr_intf/pncconf/pncconf.glade:14036 -#: src/emc/usr_intf/pncconf/pncconf.glade:14063 -#: src/emc/usr_intf/pncconf/pncconf.glade:14077 -#: src/emc/usr_intf/pncconf/pncconf.glade:28656 -#: src/emc/usr_intf/pncconf/pncconf.glade:28670 -#: src/emc/usr_intf/pncconf/pncconf.glade:28697 -#: src/emc/usr_intf/pncconf/pncconf.glade:29004 -#: src/emc/usr_intf/pncconf/pncconf.glade:29031 -#: src/emc/usr_intf/pncconf/pncconf.glade:29045 -#: src/emc/usr_intf/pncconf/pncconf.glade:32975 -#: src/emc/usr_intf/pncconf/pncconf.glade:32989 -#: src/emc/usr_intf/pncconf/pncconf.glade:33016 -#: src/emc/usr_intf/pncconf/pncconf.glade:33362 -#: src/emc/usr_intf/pncconf/pncconf.glade:33389 -#: src/emc/usr_intf/pncconf/pncconf.glade:33403 -#: src/emc/usr_intf/pncconf/pncconf.glade:38153 -#: src/emc/usr_intf/pncconf/pncconf.glade:38167 -#: src/emc/usr_intf/pncconf/pncconf.glade:38194 -#: src/emc/usr_intf/pncconf/pncconf.glade:38618 -#: src/emc/usr_intf/pncconf/pncconf.glade:38645 -#: src/emc/usr_intf/pncconf/pncconf.glade:38659 -#: src/emc/usr_intf/pncconf/pncconf.glade:42500 -#: src/emc/usr_intf/pncconf/pncconf.glade:42514 -#: src/emc/usr_intf/pncconf/pncconf.glade:42541 -#: src/emc/usr_intf/pncconf/pncconf.glade:42848 -#: src/emc/usr_intf/pncconf/pncconf.glade:42875 -#: src/emc/usr_intf/pncconf/pncconf.glade:42889 -#: src/emc/usr_intf/pncconf/pncconf.glade:46832 -#: src/emc/usr_intf/pncconf/pncconf.glade:46846 -#: src/emc/usr_intf/pncconf/pncconf.glade:46873 -#: src/emc/usr_intf/pncconf/pncconf.glade:49423 -#: src/emc/usr_intf/pncconf/pncconf.glade:49437 -#: src/emc/usr_intf/pncconf/pncconf.glade:49464 -#: src/emc/usr_intf/pncconf/pncconf.glade:49771 -#: src/emc/usr_intf/pncconf/pncconf.glade:49798 -#: src/emc/usr_intf/pncconf/pncconf.glade:49812 -#: src/emc/usr_intf/pncconf/pncconf.glade:53755 -#: src/emc/usr_intf/pncconf/pncconf.glade:53769 -#: src/emc/usr_intf/pncconf/pncconf.glade:53796 -#: src/emc/usr_intf/pncconf/pncconf.glade:56346 -#: src/emc/usr_intf/pncconf/pncconf.glade:56360 -#: src/emc/usr_intf/pncconf/pncconf.glade:56387 -#: src/emc/usr_intf/pncconf/pncconf.glade:56694 -#: src/emc/usr_intf/pncconf/pncconf.glade:56721 -#: src/emc/usr_intf/pncconf/pncconf.glade:56735 -#: src/emc/usr_intf/pncconf/pncconf.glade:60678 -#: src/emc/usr_intf/pncconf/pncconf.glade:60692 -#: src/emc/usr_intf/pncconf/pncconf.glade:60719 +#: src/emc/usr_intf/pncconf/pncconf.glade:16281 +#: src/emc/usr_intf/pncconf/pncconf.glade:16295 +#: src/emc/usr_intf/pncconf/pncconf.glade:16322 +#: src/emc/usr_intf/pncconf/pncconf.glade:26441 +#: src/emc/usr_intf/pncconf/pncconf.glade:26468 +#: src/emc/usr_intf/pncconf/pncconf.glade:26482 +#: src/emc/usr_intf/pncconf/pncconf.glade:31232 +#: src/emc/usr_intf/pncconf/pncconf.glade:31246 +#: src/emc/usr_intf/pncconf/pncconf.glade:31273 +#: src/emc/usr_intf/pncconf/pncconf.glade:31708 +#: src/emc/usr_intf/pncconf/pncconf.glade:31735 +#: src/emc/usr_intf/pncconf/pncconf.glade:31749 +#: src/emc/usr_intf/pncconf/pncconf.glade:35577 +#: src/emc/usr_intf/pncconf/pncconf.glade:35591 +#: src/emc/usr_intf/pncconf/pncconf.glade:35618 +#: src/emc/usr_intf/pncconf/pncconf.glade:35925 +#: src/emc/usr_intf/pncconf/pncconf.glade:35952 +#: src/emc/usr_intf/pncconf/pncconf.glade:35966 +#: src/emc/usr_intf/pncconf/pncconf.glade:39909 +#: src/emc/usr_intf/pncconf/pncconf.glade:39923 +#: src/emc/usr_intf/pncconf/pncconf.glade:39950 +#: src/emc/usr_intf/pncconf/pncconf.glade:40285 +#: src/emc/usr_intf/pncconf/pncconf.glade:40312 +#: src/emc/usr_intf/pncconf/pncconf.glade:40326 +#: src/emc/usr_intf/pncconf/pncconf.glade:45076 +#: src/emc/usr_intf/pncconf/pncconf.glade:45090 +#: src/emc/usr_intf/pncconf/pncconf.glade:45117 +#: src/emc/usr_intf/pncconf/pncconf.glade:45541 +#: src/emc/usr_intf/pncconf/pncconf.glade:45568 +#: src/emc/usr_intf/pncconf/pncconf.glade:45582 +#: src/emc/usr_intf/pncconf/pncconf.glade:47208 +#: src/emc/usr_intf/pncconf/pncconf.glade:47235 +#: src/emc/usr_intf/pncconf/pncconf.glade:47249 +#: src/emc/usr_intf/pncconf/pncconf.glade:51999 +#: src/emc/usr_intf/pncconf/pncconf.glade:52013 +#: src/emc/usr_intf/pncconf/pncconf.glade:52040 +#: src/emc/usr_intf/pncconf/pncconf.glade:52464 +#: src/emc/usr_intf/pncconf/pncconf.glade:52491 +#: src/emc/usr_intf/pncconf/pncconf.glade:52505 +#: src/emc/usr_intf/pncconf/pncconf.glade:54131 +#: src/emc/usr_intf/pncconf/pncconf.glade:54158 +#: src/emc/usr_intf/pncconf/pncconf.glade:54172 +#: src/emc/usr_intf/pncconf/pncconf.glade:58922 +#: src/emc/usr_intf/pncconf/pncconf.glade:58936 +#: src/emc/usr_intf/pncconf/pncconf.glade:58963 +#: src/emc/usr_intf/pncconf/pncconf.glade:59387 +#: src/emc/usr_intf/pncconf/pncconf.glade:59414 +#: src/emc/usr_intf/pncconf/pncconf.glade:59428 msgid " " msgstr " " -#: src/emc/usr_intf/pncconf/pncconf.glade:16403 -#: emc/usr_intf/pncconf/pncconf.glade:16403 #: src/emc/usr_intf/pncconf/pncconf.glade:16427 msgid "" " I/O\n" @@ -15987,8 +13740,6 @@ msgstr "" "Entrées/Sorties\n" " Connecteur 4" -#: src/emc/usr_intf/pncconf/pncconf.glade:19017 -#: emc/usr_intf/pncconf/pncconf.glade:19017 #: src/emc/usr_intf/pncconf/pncconf.glade:19041 msgid "" " I/O\n" @@ -15997,8 +13748,6 @@ msgstr "" "Entrées/Sorties\n" " Connecteur 5" -#: src/emc/usr_intf/pncconf/pncconf.glade:20813 -#: emc/usr_intf/pncconf/pncconf.glade:20813 #: src/emc/usr_intf/pncconf/pncconf.glade:20837 msgid "" " I/O\n" @@ -16007,8 +13756,6 @@ msgstr "" "Entrées/Sorties\n" " Connecteur 6" -#: src/emc/usr_intf/pncconf/pncconf.glade:22609 -#: emc/usr_intf/pncconf/pncconf.glade:22609 #: src/emc/usr_intf/pncconf/pncconf.glade:22633 msgid "" " I/O\n" @@ -16017,8 +13764,6 @@ msgstr "" "Entrées/Sorties\n" " Connecteur 7" -#: src/emc/usr_intf/pncconf/pncconf.glade:24405 -#: emc/usr_intf/pncconf/pncconf.glade:24405 #: src/emc/usr_intf/pncconf/pncconf.glade:24429 msgid "" " I/O\n" @@ -16027,8 +13772,6 @@ msgstr "" "Entrées/Sorties\n" " Connecteur 8" -#: src/emc/usr_intf/pncconf/pncconf.glade:26201 -#: emc/usr_intf/pncconf/pncconf.glade:26201 #: src/emc/usr_intf/pncconf/pncconf.glade:26225 msgid "" " I/O\n" @@ -16037,30 +13780,6 @@ msgstr "" "Entrées/Sorties\n" "Connecteur 9" -#: src/emc/usr_intf/pncconf/pncconf.glade:28775 -#: src/emc/usr_intf/pncconf/pncconf.glade:35696 -#: src/emc/usr_intf/pncconf/pncconf.glade:42619 -#: src/emc/usr_intf/pncconf/pncconf.glade:49542 -#: emc/usr_intf/pncconf/pncconf.glade:28775 -#: emc/usr_intf/pncconf/pncconf.glade:35696 -#: emc/usr_intf/pncconf/pncconf.glade:42619 -#: emc/usr_intf/pncconf/pncconf.glade:49542 -#: src/emc/usr_intf/pncconf/pncconf.glade:28799 -#: src/emc/usr_intf/pncconf/pncconf.glade:35720 -#: src/emc/usr_intf/pncconf/pncconf.glade:42643 -#: src/emc/usr_intf/pncconf/pncconf.glade:49566 -#: src/emc/usr_intf/pncconf/pncconf.glade:56489 -msgid "page 1" -msgstr "page 1" - -#: src/emc/usr_intf/pncconf/pncconf.glade:31354 -#: src/emc/usr_intf/pncconf/pncconf.glade:38275 -#: src/emc/usr_intf/pncconf/pncconf.glade:45198 -#: src/emc/usr_intf/pncconf/pncconf.glade:52121 -#: emc/usr_intf/pncconf/pncconf.glade:31354 -#: emc/usr_intf/pncconf/pncconf.glade:38275 -#: emc/usr_intf/pncconf/pncconf.glade:45198 -#: emc/usr_intf/pncconf/pncconf.glade:52121 #: src/emc/usr_intf/pncconf/pncconf.glade:31378 #: src/emc/usr_intf/pncconf/pncconf.glade:38299 #: src/emc/usr_intf/pncconf/pncconf.glade:45222 @@ -16069,14 +13788,6 @@ msgstr "page 1" msgid "page 2" msgstr "page 2" -#: src/emc/usr_intf/pncconf/pncconf.glade:33107 -#: src/emc/usr_intf/pncconf/pncconf.glade:40030 -#: src/emc/usr_intf/pncconf/pncconf.glade:46953 -#: src/emc/usr_intf/pncconf/pncconf.glade:53876 -#: emc/usr_intf/pncconf/pncconf.glade:33107 -#: emc/usr_intf/pncconf/pncconf.glade:40030 -#: emc/usr_intf/pncconf/pncconf.glade:46953 -#: emc/usr_intf/pncconf/pncconf.glade:53876 #: src/emc/usr_intf/pncconf/pncconf.glade:33131 #: src/emc/usr_intf/pncconf/pncconf.glade:40054 #: src/emc/usr_intf/pncconf/pncconf.glade:46977 @@ -16085,192 +13796,103 @@ msgstr "page 2" msgid "page 3" msgstr "page 3" -#: src/emc/usr_intf/pncconf/pncconf.glade:33123 -#: emc/usr_intf/pncconf/pncconf.glade:33123 #: src/emc/usr_intf/pncconf/pncconf.glade:33147 msgid "Smart Serial 0" msgstr "Smart Serial 0" -#: src/emc/usr_intf/pncconf/pncconf.glade:40046 -#: emc/usr_intf/pncconf/pncconf.glade:40046 #: src/emc/usr_intf/pncconf/pncconf.glade:40070 msgid "Smart Serial 1" msgstr "Smart Serial 1" -#: src/emc/usr_intf/pncconf/pncconf.glade:46969 -#: emc/usr_intf/pncconf/pncconf.glade:46969 #: src/emc/usr_intf/pncconf/pncconf.glade:46993 msgid "Smart Serial 2" msgstr "Smart Serial 2" -#: src/emc/usr_intf/pncconf/pncconf.glade:53892 -#: emc/usr_intf/pncconf/pncconf.glade:53892 #: src/emc/usr_intf/pncconf/pncconf.glade:53916 msgid "Smart Serial 3" msgstr "Smart Serial 3" -#: src/emc/usr_intf/pncconf/pncconf.glade:53914 -#: emc/usr_intf/pncconf/pncconf.glade:53914 +#: src/emc/usr_intf/pncconf/pncconf.glade:60839 +msgid "Smart Serial 4" +msgstr "Smart Serial 4" + #: src/emc/usr_intf/pncconf/pncconf.glade:60861 msgid "First Parallel Port Setup" msgstr "Réglage du premier port parallèle" -#: src/emc/usr_intf/pncconf/pncconf.glade:53998 -#: emc/usr_intf/pncconf/pncconf.glade:53998 -#: src/emc/usr_intf/pncconf/pncconf.glade:60945 -msgid "Outputs (PC to Machine):" -msgstr "Sorties (PC vers machine):" +#: src/emc/usr_intf/pncconf/pncconf.glade:60946 +msgid "Launch Test Panel" +msgstr "Lancer le panneau de test" -#: src/emc/usr_intf/pncconf/pncconf.glade:54552 -#: emc/usr_intf/pncconf/pncconf.glade:54552 -#: src/emc/usr_intf/pncconf/pncconf.glade:61499 +#: src/emc/usr_intf/pncconf/pncconf.glade:62374 msgid "Inputs (Machine to PC):" msgstr "Entrées (machine vers PC):" -#: src/emc/usr_intf/pncconf/pncconf.glade:55977 -#: emc/usr_intf/pncconf/pncconf.glade:55977 -#: src/emc/usr_intf/pncconf/pncconf.glade:62924 -msgid "Launch Test Panel" -msgstr "Lancer le panneau de test" +#: src/emc/usr_intf/pncconf/pncconf.glade:62929 +msgid "Outputs (PC to Machine):" +msgstr "Sorties (PC vers machine):" -#: src/emc/usr_intf/pncconf/pncconf.glade:56003 -#: emc/usr_intf/pncconf/pncconf.glade:56003 #: src/emc/usr_intf/pncconf/pncconf.glade:62950 msgid "X Axis Motor/Encoder Configuration" msgstr "Configuration moteur/codeur de l'axe X" -#: src/emc/usr_intf/pncconf/pncconf.glade:56091 -#: emc/usr_intf/pncconf/pncconf.glade:56091 -#: src/emc/usr_intf/pncconf/pncconf.glade:63038 -msgid "D" -msgstr "D" +#: src/emc/usr_intf/pncconf/pncconf.glade:63005 +msgid "Max Output" +msgstr "Sortie max." -#: src/emc/usr_intf/pncconf/pncconf.glade:56104 -#: emc/usr_intf/pncconf/pncconf.glade:56104 -#: src/emc/usr_intf/pncconf/pncconf.glade:63051 -msgid "I" -msgstr "I" +#: src/emc/usr_intf/pncconf/pncconf.glade:63070 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF2" +msgstr "FF2" -#: src/emc/usr_intf/pncconf/pncconf.glade:56117 -#: emc/usr_intf/pncconf/pncconf.glade:56117 -#: src/emc/usr_intf/pncconf/pncconf.glade:63064 -msgid "P" -msgstr "P" +#: src/emc/usr_intf/pncconf/pncconf.glade:63083 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF1" +msgstr "FF1" -#: src/emc/usr_intf/pncconf/pncconf.glade:56128 -#: src/emc/usr_intf/pncconf/pncconf.glade:60917 -#: src/emc/usr_intf/pncconf/pncconf.glade:62202 -#: src/emc/usr_intf/pncconf/pncconf.glade:63103 -#: src/emc/usr_intf/pncconf/pncconf.glade:64388 -#: src/emc/usr_intf/pncconf/pncconf.glade:65265 -#: emc/usr_intf/pncconf/pncconf.glade:56128 -#: emc/usr_intf/pncconf/pncconf.glade:60917 -#: emc/usr_intf/pncconf/pncconf.glade:62202 -#: emc/usr_intf/pncconf/pncconf.glade:63103 -#: emc/usr_intf/pncconf/pncconf.glade:64388 -#: emc/usr_intf/pncconf/pncconf.glade:65265 -#: src/emc/usr_intf/pncconf/pncconf.glade:63075 -#: src/emc/usr_intf/pncconf/pncconf.glade:67893 -#: src/emc/usr_intf/pncconf/pncconf.glade:69178 -#: src/emc/usr_intf/pncconf/pncconf.glade:70079 -#: src/emc/usr_intf/pncconf/pncconf.glade:71364 -#: src/emc/usr_intf/pncconf/pncconf.glade:72241 -msgid "Bias" -msgstr "Bias" +#: src/emc/usr_intf/pncconf/pncconf.glade:63096 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF0" +msgstr "FF0" -#: src/emc/usr_intf/pncconf/pncconf.glade:56141 -#: emc/usr_intf/pncconf/pncconf.glade:56141 -#: src/emc/usr_intf/pncconf/pncconf.glade:63088 +#: src/emc/usr_intf/pncconf/pncconf.glade:63143 msgid "Deadband" msgstr "Deadband" -#: src/emc/usr_intf/pncconf/pncconf.glade:56188 -#: src/emc/usr_intf/pncconf/pncconf.glade:61128 -#: src/emc/usr_intf/pncconf/pncconf.glade:61991 -#: src/emc/usr_intf/pncconf/pncconf.glade:63314 -#: src/emc/usr_intf/pncconf/pncconf.glade:64177 -#: src/emc/usr_intf/pncconf/pncconf.glade:65470 -#: emc/usr_intf/pncconf/pncconf.glade:56188 -#: emc/usr_intf/pncconf/pncconf.glade:61128 -#: emc/usr_intf/pncconf/pncconf.glade:61991 -#: emc/usr_intf/pncconf/pncconf.glade:63314 -#: emc/usr_intf/pncconf/pncconf.glade:64177 -#: emc/usr_intf/pncconf/pncconf.glade:65470 -#: src/emc/usr_intf/pncconf/pncconf.glade:63135 -#: src/emc/usr_intf/pncconf/pncconf.glade:68104 -#: src/emc/usr_intf/pncconf/pncconf.glade:68967 -#: src/emc/usr_intf/pncconf/pncconf.glade:70290 -#: src/emc/usr_intf/pncconf/pncconf.glade:71153 -#: src/emc/usr_intf/pncconf/pncconf.glade:72446 -msgid "FF0" -msgstr "FF0" +#: src/emc/usr_intf/pncconf/pncconf.glade:63156 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Bias" +msgstr "Bias" -#: src/emc/usr_intf/pncconf/pncconf.glade:56201 -#: src/emc/usr_intf/pncconf/pncconf.glade:61118 -#: src/emc/usr_intf/pncconf/pncconf.glade:62001 -#: src/emc/usr_intf/pncconf/pncconf.glade:63304 -#: src/emc/usr_intf/pncconf/pncconf.glade:64187 -#: src/emc/usr_intf/pncconf/pncconf.glade:65460 -#: emc/usr_intf/pncconf/pncconf.glade:56201 -#: emc/usr_intf/pncconf/pncconf.glade:61118 -#: emc/usr_intf/pncconf/pncconf.glade:62001 -#: emc/usr_intf/pncconf/pncconf.glade:63304 -#: emc/usr_intf/pncconf/pncconf.glade:64187 -#: emc/usr_intf/pncconf/pncconf.glade:65460 -#: src/emc/usr_intf/pncconf/pncconf.glade:63148 -#: src/emc/usr_intf/pncconf/pncconf.glade:68094 -#: src/emc/usr_intf/pncconf/pncconf.glade:68977 -#: src/emc/usr_intf/pncconf/pncconf.glade:70280 -#: src/emc/usr_intf/pncconf/pncconf.glade:71163 -#: src/emc/usr_intf/pncconf/pncconf.glade:72436 -msgid "FF1" -msgstr "FF1" +#: src/emc/usr_intf/pncconf/pncconf.glade:63169 +msgid "P" +msgstr "P" -#: src/emc/usr_intf/pncconf/pncconf.glade:56214 -#: src/emc/usr_intf/pncconf/pncconf.glade:61108 -#: src/emc/usr_intf/pncconf/pncconf.glade:62011 -#: src/emc/usr_intf/pncconf/pncconf.glade:63294 -#: src/emc/usr_intf/pncconf/pncconf.glade:64197 -#: src/emc/usr_intf/pncconf/pncconf.glade:65450 -#: emc/usr_intf/pncconf/pncconf.glade:56214 -#: emc/usr_intf/pncconf/pncconf.glade:61108 -#: emc/usr_intf/pncconf/pncconf.glade:62011 -#: emc/usr_intf/pncconf/pncconf.glade:63294 -#: emc/usr_intf/pncconf/pncconf.glade:64197 -#: emc/usr_intf/pncconf/pncconf.glade:65450 -#: src/emc/usr_intf/pncconf/pncconf.glade:63161 -#: src/emc/usr_intf/pncconf/pncconf.glade:68084 -#: src/emc/usr_intf/pncconf/pncconf.glade:68987 -#: src/emc/usr_intf/pncconf/pncconf.glade:70270 -#: src/emc/usr_intf/pncconf/pncconf.glade:71173 -#: src/emc/usr_intf/pncconf/pncconf.glade:72426 -msgid "FF2" -msgstr "FF2" +#: src/emc/usr_intf/pncconf/pncconf.glade:63180 +msgid "I" +msgstr "I" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63193 +msgid "D" +msgstr "D" -#: src/emc/usr_intf/pncconf/pncconf.glade:56282 -#: emc/usr_intf/pncconf/pncconf.glade:56282 #: src/emc/usr_intf/pncconf/pncconf.glade:63258 msgid "Servo Info" msgstr "Informations servo" -#: src/emc/usr_intf/pncconf/pncconf.glade:56362 -#: emc/usr_intf/pncconf/pncconf.glade:56362 -msgid "Spindle Max Output:" -msgstr "Sortie broche Max:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63337 +msgid "3pwm Scale:" +msgstr "Échelle 3pwm" -#: src/emc/usr_intf/pncconf/pncconf.glade:56412 -#: emc/usr_intf/pncconf/pncconf.glade:56412 -msgid "Spindle Max limit:" -msgstr "Limite broche Max:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63348 +msgid "3pwm Deadtime:" +msgstr "Bande morte 3pwm:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56426 -#: emc/usr_intf/pncconf/pncconf.glade:56426 -msgid "Spindle Min Limit:" -msgstr "Limite broche Min:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63361 +msgid "Quad Pulses / Rev:" +msgstr "Impulsions en quadrature / tour:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56456 -#: emc/usr_intf/pncconf/pncconf.glade:56456 -#: src/emc/usr_intf/pncconf/pncconf.glade:63444 +#: src/emc/usr_intf/pncconf/pncconf.glade:63438 msgid "" "Open Loop\n" " Test" @@ -16278,295 +13900,209 @@ msgstr "" "Test boucle\n" " ouverte" -#: src/emc/usr_intf/pncconf/pncconf.glade:56557 -#: emc/usr_intf/pncconf/pncconf.glade:56557 -#: src/emc/usr_intf/pncconf/pncconf.glade:63513 -msgid "Quad Pulses / Rev:" -msgstr "Impulsions en quadrature / tour:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:56572 -#: emc/usr_intf/pncconf/pncconf.glade:56572 -msgid "Dac Max Output:" -msgstr "Sortie max. du DAC:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:56586 -#: emc/usr_intf/pncconf/pncconf.glade:56586 -msgid "Dac Output Scale:" -msgstr "Échelle de sortie DAC:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63462 +msgid "Analog Min Limit:" +msgstr "Limite analogique min:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56599 -#: emc/usr_intf/pncconf/pncconf.glade:56599 -#: src/emc/usr_intf/pncconf/pncconf.glade:63527 -msgid "3pwm Deadtime:" -msgstr "Bande morte 3pwm:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63476 +msgid "Analog Max limit:" +msgstr "Limite analogique max:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56612 -#: emc/usr_intf/pncconf/pncconf.glade:56612 -#: src/emc/usr_intf/pncconf/pncconf.glade:63540 -msgid "3pwm Scale:" -msgstr "Échelle 3pwm" +#: src/emc/usr_intf/pncconf/pncconf.glade:63490 +msgid "Analog Max Scale:" +msgstr "Échelle analogique max:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56626 -#: emc/usr_intf/pncconf/pncconf.glade:56626 #: src/emc/usr_intf/pncconf/pncconf.glade:63554 msgid "Output Info" msgstr "Info sortie" -#: src/emc/usr_intf/pncconf/pncconf.glade:56691 -#: emc/usr_intf/pncconf/pncconf.glade:56691 -#: src/emc/usr_intf/pncconf/pncconf.glade:63619 -msgid "Driver Type:" -msgstr "Type de pilote:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63603 +msgid "Step On-Time" +msgstr "Step On-Time" -#: src/emc/usr_intf/pncconf/pncconf.glade:56735 -#: emc/usr_intf/pncconf/pncconf.glade:56735 -#: src/emc/usr_intf/pncconf/pncconf.glade:63663 -msgid "Direction Setup" -msgstr "Direction Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:63616 +msgid "Step Space" +msgstr "Step Space" -#: src/emc/usr_intf/pncconf/pncconf.glade:56748 -#: emc/usr_intf/pncconf/pncconf.glade:56748 -#: src/emc/usr_intf/pncconf/pncconf.glade:63676 +#: src/emc/usr_intf/pncconf/pncconf.glade:63659 msgid "Direction Hold" msgstr "Direction Hold" -#: src/emc/usr_intf/pncconf/pncconf.glade:56791 -#: emc/usr_intf/pncconf/pncconf.glade:56791 -#: src/emc/usr_intf/pncconf/pncconf.glade:63719 -msgid "Step Space" -msgstr "Step Space" +#: src/emc/usr_intf/pncconf/pncconf.glade:63672 +msgid "Direction Setup" +msgstr "Direction Setup" -#: src/emc/usr_intf/pncconf/pncconf.glade:56804 -#: emc/usr_intf/pncconf/pncconf.glade:56804 -#: src/emc/usr_intf/pncconf/pncconf.glade:63732 -msgid "Step On-Time" -msgstr "Step On-Time" +#: src/emc/usr_intf/pncconf/pncconf.glade:63715 +msgid "Driver Type:" +msgstr "Type de pilote:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56820 -#: emc/usr_intf/pncconf/pncconf.glade:56820 #: src/emc/usr_intf/pncconf/pncconf.glade:63748 msgid "Stepper Info" msgstr "Info moteur pas à pas" -#: src/emc/usr_intf/pncconf/pncconf.glade:56871 -#: emc/usr_intf/pncconf/pncconf.glade:56871 #: src/emc/usr_intf/pncconf/pncconf.glade:63800 msgid "No feedback" msgstr "Pas de retour" -#: src/emc/usr_intf/pncconf/pncconf.glade:56881 -#: emc/usr_intf/pncconf/pncconf.glade:56881 #: src/emc/usr_intf/pncconf/pncconf.glade:63810 msgid "Absolute Feedback" msgstr "Retour absolu" -#: src/emc/usr_intf/pncconf/pncconf.glade:56895 -#: emc/usr_intf/pncconf/pncconf.glade:56895 #: src/emc/usr_intf/pncconf/pncconf.glade:63824 msgid "Incremental Feedback" msgstr "Retour incrémental" -#: src/emc/usr_intf/pncconf/pncconf.glade:56909 -#: emc/usr_intf/pncconf/pncconf.glade:56909 #: src/emc/usr_intf/pncconf/pncconf.glade:63838 msgid "Incremental Encoder" msgstr "Codeur incrémental" -#: src/emc/usr_intf/pncconf/pncconf.glade:56921 -#: emc/usr_intf/pncconf/pncconf.glade:56921 #: src/emc/usr_intf/pncconf/pncconf.glade:63850 msgid "Hall sensors" msgstr "Capteurs HALL" -#: src/emc/usr_intf/pncconf/pncconf.glade:56933 -#: emc/usr_intf/pncconf/pncconf.glade:56933 #: src/emc/usr_intf/pncconf/pncconf.glade:63862 msgid "Fanuc Red Cap " msgstr "Fanuc Red Cap " -#: src/emc/usr_intf/pncconf/pncconf.glade:56945 -#: emc/usr_intf/pncconf/pncconf.glade:56945 #: src/emc/usr_intf/pncconf/pncconf.glade:63874 msgid "Use encoder Index" msgstr "Utiliser l'index codeur:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56976 -#: emc/usr_intf/pncconf/pncconf.glade:56976 #: src/emc/usr_intf/pncconf/pncconf.glade:63905 msgid "Input Options" msgstr "Options d'entrée" -#: src/emc/usr_intf/pncconf/pncconf.glade:57000 -#: emc/usr_intf/pncconf/pncconf.glade:57000 #: src/emc/usr_intf/pncconf/pncconf.glade:63929 msgid "Digital instead of PWM outputs" msgstr "Sorties numériques au lieu de PWM" -#: src/emc/usr_intf/pncconf/pncconf.glade:57009 -#: emc/usr_intf/pncconf/pncconf.glade:57009 #: src/emc/usr_intf/pncconf/pncconf.glade:63938 msgid "6 outputs instead of 3 " msgstr "6 sorties au lieu de 3" -#: src/emc/usr_intf/pncconf/pncconf.glade:57021 -#: emc/usr_intf/pncconf/pncconf.glade:57021 #: src/emc/usr_intf/pncconf/pncconf.glade:63950 msgid "Force Trapezoid Mode" msgstr "Forcer le mode trapézoïdal" -#: src/emc/usr_intf/pncconf/pncconf.glade:57033 -#: emc/usr_intf/pncconf/pncconf.glade:57033 #: src/emc/usr_intf/pncconf/pncconf.glade:63962 msgid "Emulate feedback " msgstr "Émuler le retour" -#: src/emc/usr_intf/pncconf/pncconf.glade:57045 -#: emc/usr_intf/pncconf/pncconf.glade:57045 #: src/emc/usr_intf/pncconf/pncconf.glade:63974 msgid "Emulated Hall sensors" msgstr "Émuler capteurs HALL" -#: src/emc/usr_intf/pncconf/pncconf.glade:57058 -#: emc/usr_intf/pncconf/pncconf.glade:57058 #: src/emc/usr_intf/pncconf/pncconf.glade:63987 msgid "Emulated Fanuc Red Cap" msgstr "Émuler Fanuc Red Cap" -#: src/emc/usr_intf/pncconf/pncconf.glade:57085 -#: emc/usr_intf/pncconf/pncconf.glade:57085 #: src/emc/usr_intf/pncconf/pncconf.glade:64014 msgid "8i20 Max Current" msgstr "Courant Max 8i20" -#: src/emc/usr_intf/pncconf/pncconf.glade:57119 -#: emc/usr_intf/pncconf/pncconf.glade:57119 #: src/emc/usr_intf/pncconf/pncconf.glade:64048 msgid "Output Options" msgstr "Options de sortie" -#: src/emc/usr_intf/pncconf/pncconf.glade:57153 -#: emc/usr_intf/pncconf/pncconf.glade:57153 -#: src/emc/usr_intf/pncconf/pncconf.glade:64082 -msgid "Poles" -msgstr "Pôles" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57163 -#: emc/usr_intf/pncconf/pncconf.glade:57163 -#: src/emc/usr_intf/pncconf/pncconf.glade:64092 -msgid "Encoder-offset" -msgstr "Offset codeur" +#: src/emc/usr_intf/pncconf/pncconf.glade:64103 +msgid "alignment current" +msgstr "Alignement courant" -#: src/emc/usr_intf/pncconf/pncconf.glade:57173 -#: emc/usr_intf/pncconf/pncconf.glade:57173 -#: src/emc/usr_intf/pncconf/pncconf.glade:64102 -msgid "Drive-offset" -msgstr "Drive-offset" +#: src/emc/usr_intf/pncconf/pncconf.glade:64113 +msgid "lead angle" +msgstr "Angle de pente" -#: src/emc/usr_intf/pncconf/pncconf.glade:57183 -#: emc/usr_intf/pncconf/pncconf.glade:57183 -#: src/emc/usr_intf/pncconf/pncconf.glade:64112 -msgid "output-pattern" -msgstr "Motif de sortie" +#: src/emc/usr_intf/pncconf/pncconf.glade:64213 +msgid "Reverse" +msgstr "Inverse" -#: src/emc/usr_intf/pncconf/pncconf.glade:57193 -#: emc/usr_intf/pncconf/pncconf.glade:57193 -#: src/emc/usr_intf/pncconf/pncconf.glade:64122 +#: src/emc/usr_intf/pncconf/pncconf.glade:64223 msgid "Input-pattern" msgstr "Motif d'entrée" -#: src/emc/usr_intf/pncconf/pncconf.glade:57203 -#: emc/usr_intf/pncconf/pncconf.glade:57203 -#: src/emc/usr_intf/pncconf/pncconf.glade:64132 -msgid "Reverse" -msgstr "Inverse" +#: src/emc/usr_intf/pncconf/pncconf.glade:64233 +msgid "output-pattern" +msgstr "Motif de sortie" -#: src/emc/usr_intf/pncconf/pncconf.glade:57303 -#: emc/usr_intf/pncconf/pncconf.glade:57303 -#: src/emc/usr_intf/pncconf/pncconf.glade:64232 -msgid "lead angle" -msgstr "Angle de pente" +#: src/emc/usr_intf/pncconf/pncconf.glade:64243 +msgid "Drive-offset" +msgstr "Drive-offset" -#: src/emc/usr_intf/pncconf/pncconf.glade:57313 -#: emc/usr_intf/pncconf/pncconf.glade:57313 -#: src/emc/usr_intf/pncconf/pncconf.glade:64242 -msgid "alignment current" -msgstr "Alignement courant" +#: src/emc/usr_intf/pncconf/pncconf.glade:64253 +msgid "Encoder-offset" +msgstr "Offset codeur" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64263 +msgid "Poles" +msgstr "Pôles" -#: src/emc/usr_intf/pncconf/pncconf.glade:57354 -#: emc/usr_intf/pncconf/pncconf.glade:57354 #: src/emc/usr_intf/pncconf/pncconf.glade:64283 msgid "Configuration" msgstr "Configuration" -#: src/emc/usr_intf/pncconf/pncconf.glade:57389 -#: emc/usr_intf/pncconf/pncconf.glade:57389 #: src/emc/usr_intf/pncconf/pncconf.glade:64318 -msgid "Use Brushless Motor Control" +#, fuzzy +msgid "Use BLDC Motor Commutation Control" msgstr "Utiliser contrôle moteur brushless" -#: src/emc/usr_intf/pncconf/pncconf.glade:57425 -#: emc/usr_intf/pncconf/pncconf.glade:57425 #: src/emc/usr_intf/pncconf/pncconf.glade:64354 msgid "Scale:" msgstr "Échelle:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57446 -#: emc/usr_intf/pncconf/pncconf.glade:57446 #: src/emc/usr_intf/pncconf/pncconf.glade:64375 msgid "% " msgstr "%" -#: src/emc/usr_intf/pncconf/pncconf.glade:57466 -#: emc/usr_intf/pncconf/pncconf.glade:57466 +#: src/emc/usr_intf/pncconf/pncconf.glade:64394 +msgid "Range:" +msgstr "Etendue:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64419 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "RPM" +msgstr "RPM" + #: src/emc/usr_intf/pncconf/pncconf.glade:64439 msgid "Use Spindle-At-Speed" msgstr "Utiliser vitesse-broche-atteinte" -#: src/emc/usr_intf/pncconf/pncconf.glade:57491 -#: emc/usr_intf/pncconf/pncconf.glade:57491 #: src/emc/usr_intf/pncconf/pncconf.glade:64464 msgid "Filter gain:" msgstr "Gain du filtre:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57526 -#: emc/usr_intf/pncconf/pncconf.glade:57526 #: src/emc/usr_intf/pncconf/pncconf.glade:64499 msgid "Spindle Display Filter Settings" msgstr "Réglages filtre d'affichage broche" -#: src/emc/usr_intf/pncconf/pncconf.glade:57577 -#: emc/usr_intf/pncconf/pncconf.glade:57577 -#: src/emc/usr_intf/pncconf/pncconf.glade:64550 -msgid "Single Input Encoder" -msgstr "Entrée codeur" +#: src/emc/usr_intf/pncconf/pncconf.glade:64565 +msgid "Rapid Speed Following Error:" +msgstr "Erreur de suivi vitesse rapide:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57631 -#: emc/usr_intf/pncconf/pncconf.glade:57631 -#: src/emc/usr_intf/pncconf/pncconf.glade:64604 -msgid "Invert Encoder Direction " -msgstr "Inverser direction codeur" +#: src/emc/usr_intf/pncconf/pncconf.glade:64577 +msgid "Feed Speed Following Error:" +msgstr "Erreur de suivi vitesse travail:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57646 -#: emc/usr_intf/pncconf/pncconf.glade:57646 -#: src/emc/usr_intf/pncconf/pncconf.glade:64619 +#: src/emc/usr_intf/pncconf/pncconf.glade:64591 msgid "Invert Motor Direction" msgstr "Inverser direction moteur" -#: src/emc/usr_intf/pncconf/pncconf.glade:57661 -#: emc/usr_intf/pncconf/pncconf.glade:57661 -#: src/emc/usr_intf/pncconf/pncconf.glade:64634 -msgid "Feed Speed Following Error:" -msgstr "Erreur de suivi vitesse travail:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64606 +msgid "Invert Encoder Direction " +msgstr "Inverser direction codeur" -#: src/emc/usr_intf/pncconf/pncconf.glade:57675 -#: emc/usr_intf/pncconf/pncconf.glade:57675 -#: src/emc/usr_intf/pncconf/pncconf.glade:64648 -msgid "Rapid Speed Following Error:" -msgstr "Erreur de suivi vitesse rapide:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64661 +msgid "Single Input Encoder" +msgstr "Entrée codeur" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64776 +msgid "encoder Scale:" +msgstr "Échelle codeur:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64801 +msgid "Stepper Scale:" +msgstr "Échelle moteur pas à pas:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57715 -#: emc/usr_intf/pncconf/pncconf.glade:57715 -#: src/emc/usr_intf/pncconf/pncconf.glade:64688 +#: src/emc/usr_intf/pncconf/pncconf.glade:64831 msgid "" "Calculate\n" "Scale" @@ -16574,73 +14110,63 @@ msgstr "" "Calculer\n" "l'échelle" -#: src/emc/usr_intf/pncconf/pncconf.glade:57744 -#: emc/usr_intf/pncconf/pncconf.glade:57744 -#: src/emc/usr_intf/pncconf/pncconf.glade:64717 -msgid "Stepper Scale:" -msgstr "Échelle moteur pas à pas:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57771 -#: emc/usr_intf/pncconf/pncconf.glade:57771 -#: src/emc/usr_intf/pncconf/pncconf.glade:64744 -msgid "encoder Scale:" -msgstr "Échelle codeur:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57928 -#: emc/usr_intf/pncconf/pncconf.glade:57928 #: src/emc/usr_intf/pncconf/pncconf.glade:64901 msgid "Test / Tune Axis" msgstr "Test / calibration axe" -#: src/emc/usr_intf/pncconf/pncconf.glade:58235 -#: emc/usr_intf/pncconf/pncconf.glade:58235 -#: src/emc/usr_intf/pncconf/pncconf.glade:65208 -msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " +#: src/emc/usr_intf/pncconf/pncconf.glade:64943 +msgid "X Axis Configuration" +msgstr "Configuration axe X" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65155 +msgid "" +"NO\n" +"YES" msgstr "" -"Longueur de course positive (distance entre l'origine et la fin de la " -"course en sens positif): " +"NON\n" +"OUI" -#: src/emc/usr_intf/pncconf/pncconf.glade:58251 -#: emc/usr_intf/pncconf/pncconf.glade:58251 -#: src/emc/usr_intf/pncconf/pncconf.glade:65224 -msgid "Home Search Velocity:" -msgstr "Vitesse de recherche de l'origine:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65171 +msgid "Use Encoder Index For Home:" +msgstr "Utiliser l'index codeur pour la prise d'origine:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65212 +msgid "Home Final Velocity:" +msgstr "Vitesse finale de re_cherche d'origine:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65222 +msgid "" +"Same\n" +"Opposite" +msgstr "" +"Identique\n" +"Opposée" -#: src/emc/usr_intf/pncconf/pncconf.glade:58266 -#: emc/usr_intf/pncconf/pncconf.glade:58266 -#: src/emc/usr_intf/pncconf/pncconf.glade:65239 -msgid "Home Switch location (Offset from machine zero Origin):" -msgstr "Position du contact d'origine (décalage depuis l'origine machine):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65238 +msgid "Home Latch Direction:" +msgstr "Direction de dégagement du contact d'origine:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58310 -#: emc/usr_intf/pncconf/pncconf.glade:58310 -#: src/emc/usr_intf/pncconf/pncconf.glade:65283 -msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " +#: src/emc/usr_intf/pncconf/pncconf.glade:65251 +msgid "" +"Towards Negative limit\n" +"Towards Positive limit" msgstr "" -"Longueur de course négative (distance entre l'origine et la fin de la " -"course en sens négatif): " +"Limite négative inverse\n" +"Limite positive inverse" -#: src/emc/usr_intf/pncconf/pncconf.glade:58326 -#: emc/usr_intf/pncconf/pncconf.glade:58326 -#: src/emc/usr_intf/pncconf/pncconf.glade:65299 -msgid "Home Position location (offset from machine zero Origin):" -msgstr "Position de l'origine (distance de l'origine machine):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65267 +msgid "Home Search Direction:" +msgstr "Direction de recherche du contact d'origine:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58355 -#: emc/usr_intf/pncconf/pncconf.glade:58355 -#: src/emc/usr_intf/pncconf/pncconf.glade:65328 -msgid "Use Backlash Compensation:" -msgstr "Utiliser la compensation de jeu:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65309 +msgid "Home latch Velocity:" +msgstr "Vitesse de dégagement du contact d'origine:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58369 -#: emc/usr_intf/pncconf/pncconf.glade:58369 -#: src/emc/usr_intf/pncconf/pncconf.glade:65342 -msgid "Use Compensation File:" -msgstr "Utiliser un fichier de compensation:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65334 +msgid "filename:" +msgstr "nom de fichier:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58412 -#: emc/usr_intf/pncconf/pncconf.glade:58412 -#: src/emc/usr_intf/pncconf/pncconf.glade:65385 +#: src/emc/usr_intf/pncconf/pncconf.glade:65347 msgid "" "Type 1\n" "Type 2" @@ -16648,275 +14174,234 @@ msgstr "" "Type 1\n" "Type 2" -#: src/emc/usr_intf/pncconf/pncconf.glade:58427 -#: emc/usr_intf/pncconf/pncconf.glade:58427 -#: src/emc/usr_intf/pncconf/pncconf.glade:65400 -msgid "filename:" -msgstr "nom de fichier:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65392 +msgid "Use Compensation File:" +msgstr "Utiliser un fichier de compensation:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58455 -#: emc/usr_intf/pncconf/pncconf.glade:58455 -#: src/emc/usr_intf/pncconf/pncconf.glade:65428 -msgid "Home latch Velocity:" -msgstr "Vitesse de dégagement du contact d'origine:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65406 +msgid "Use Backlash Compensation:" +msgstr "Utiliser la compensation de jeu:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58494 -#: emc/usr_intf/pncconf/pncconf.glade:58494 -#: src/emc/usr_intf/pncconf/pncconf.glade:65467 -msgid "Home Search Direction:" -msgstr "Direction de recherche du contact d'origine:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65433 +msgid "Home Position location (offset from machine zero Origin):" +msgstr "Position de l'origine (distance de l'origine machine):" -#: src/emc/usr_intf/pncconf/pncconf.glade:58507 -#: emc/usr_intf/pncconf/pncconf.glade:58507 -#: src/emc/usr_intf/pncconf/pncconf.glade:65480 -msgid "" -"Towards Negative limit\n" -"Towards Positive limit" +#: src/emc/usr_intf/pncconf/pncconf.glade:65449 +msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " msgstr "" -"Limite négative inverse\n" -"Limite positive inverse" - -#: src/emc/usr_intf/pncconf/pncconf.glade:58523 -#: emc/usr_intf/pncconf/pncconf.glade:58523 -#: src/emc/usr_intf/pncconf/pncconf.glade:65496 -msgid "Home Latch Direction:" -msgstr "Direction de dégagement du contact d'origine:" +"Longueur de course négative (distance entre l'origine et la fin de la " +"course en sens négatif): " -#: src/emc/usr_intf/pncconf/pncconf.glade:58552 -#: emc/usr_intf/pncconf/pncconf.glade:58552 -#: src/emc/usr_intf/pncconf/pncconf.glade:65525 -msgid "Home Final Velocity:" -msgstr "Vitesse finale de re_cherche d'origine:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65493 +msgid "Home Switch location (Offset from machine zero Origin):" +msgstr "Position du contact d'origine (décalage depuis l'origine machine):" -#: src/emc/usr_intf/pncconf/pncconf.glade:58591 -#: emc/usr_intf/pncconf/pncconf.glade:58591 -#: src/emc/usr_intf/pncconf/pncconf.glade:65564 -msgid "Use Encoder Index For Home:" -msgstr "Utiliser l'index codeur pour la prise d'origine:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65509 +msgid "Home Search Velocity:" +msgstr "Vitesse de recherche de l'origine:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58603 -#: emc/usr_intf/pncconf/pncconf.glade:58603 -#: src/emc/usr_intf/pncconf/pncconf.glade:65576 -msgid "" -"NO\n" -"YES" +#: src/emc/usr_intf/pncconf/pncconf.glade:65524 +msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " msgstr "" -"NON\n" -"OUI" +"Longueur de course positive (distance entre l'origine et la fin de la " +"course en sens positif): " -#: src/emc/usr_intf/pncconf/pncconf.glade:58628 -#: emc/usr_intf/pncconf/pncconf.glade:58628 -#: src/emc/usr_intf/pncconf/pncconf.glade:65601 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Advanced Options" msgstr "Options avancées" -#: src/emc/usr_intf/pncconf/pncconf.glade:58712 -#: emc/usr_intf/pncconf/pncconf.glade:58712 -#: src/emc/usr_intf/pncconf/pncconf.glade:65685 -msgid "Cmd 1" -msgstr "Cmd 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 15" +msgstr "Cmd 15" -#: src/emc/usr_intf/pncconf/pncconf.glade:58718 -#: emc/usr_intf/pncconf/pncconf.glade:58718 -#: src/emc/usr_intf/pncconf/pncconf.glade:65691 -msgid "Cmd 2" -msgstr "Cmd 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 14" +msgstr "Cmd 14" -#: src/emc/usr_intf/pncconf/pncconf.glade:58728 -#: emc/usr_intf/pncconf/pncconf.glade:58728 -#: src/emc/usr_intf/pncconf/pncconf.glade:65701 -msgid "Cmd 3" -msgstr "Cmd 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 13" +msgstr "Cmd 13" -#: src/emc/usr_intf/pncconf/pncconf.glade:58738 -#: emc/usr_intf/pncconf/pncconf.glade:58738 -#: src/emc/usr_intf/pncconf/pncconf.glade:65711 -msgid "Cmd 4" -msgstr "Cmd 4" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 12" +msgstr "Cmd 12" -#: src/emc/usr_intf/pncconf/pncconf.glade:58748 -#: emc/usr_intf/pncconf/pncconf.glade:58748 -#: src/emc/usr_intf/pncconf/pncconf.glade:65721 -msgid "Cmd 5" -msgstr "Cmd 5" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 11" +msgstr "Cmd 11" -#: src/emc/usr_intf/pncconf/pncconf.glade:58874 -#: emc/usr_intf/pncconf/pncconf.glade:58874 -#: src/emc/usr_intf/pncconf/pncconf.glade:65847 -msgid "Cmd 6" -msgstr "Cmd 6" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 10" +msgstr "Cmd 10" -#: src/emc/usr_intf/pncconf/pncconf.glade:58884 -#: emc/usr_intf/pncconf/pncconf.glade:58884 -#: src/emc/usr_intf/pncconf/pncconf.glade:65857 -msgid "Cmd 7" -msgstr "Cmd 7" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 9" +msgstr "Cmd 9" -#: src/emc/usr_intf/pncconf/pncconf.glade:58896 -#: emc/usr_intf/pncconf/pncconf.glade:58896 -#: src/emc/usr_intf/pncconf/pncconf.glade:65869 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Cmd 8" msgstr "Cmd 8" -#: src/emc/usr_intf/pncconf/pncconf.glade:58908 -#: emc/usr_intf/pncconf/pncconf.glade:58908 -#: src/emc/usr_intf/pncconf/pncconf.glade:65881 -msgid "Cmd 9" -msgstr "Cmd 9" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 7" +msgstr "Cmd 7" -#: src/emc/usr_intf/pncconf/pncconf.glade:58920 -#: emc/usr_intf/pncconf/pncconf.glade:58920 -#: src/emc/usr_intf/pncconf/pncconf.glade:65893 -msgid "Cmd 10" -msgstr "Cmd 10" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 6" +msgstr "Cmd 6" -#: src/emc/usr_intf/pncconf/pncconf.glade:58990 -#: emc/usr_intf/pncconf/pncconf.glade:58990 -#: src/emc/usr_intf/pncconf/pncconf.glade:65963 -msgid "Cmd 11" -msgstr "Cmd 11" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 5" +msgstr "Cmd 5" -#: src/emc/usr_intf/pncconf/pncconf.glade:59000 -#: emc/usr_intf/pncconf/pncconf.glade:59000 -#: src/emc/usr_intf/pncconf/pncconf.glade:65973 -msgid "Cmd 12" -msgstr "Cmd 12" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 4" +msgstr "Cmd 4" -#: src/emc/usr_intf/pncconf/pncconf.glade:59012 -#: emc/usr_intf/pncconf/pncconf.glade:59012 -#: src/emc/usr_intf/pncconf/pncconf.glade:65985 -msgid "Cmd 13" -msgstr "Cmd 13" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 3" +msgstr "Cmd 3" -#: src/emc/usr_intf/pncconf/pncconf.glade:59024 -#: emc/usr_intf/pncconf/pncconf.glade:59024 -#: src/emc/usr_intf/pncconf/pncconf.glade:65997 -msgid "Cmd 14" -msgstr "Cmd 14" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 2" +msgstr "Cmd 2" -#: src/emc/usr_intf/pncconf/pncconf.glade:59036 -#: emc/usr_intf/pncconf/pncconf.glade:59036 -#: src/emc/usr_intf/pncconf/pncconf.glade:66009 -msgid "Cmd 15" -msgstr "Cmd 15" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 1" +msgstr "Cmd 1" -#: src/emc/usr_intf/pncconf/pncconf.glade:59053 -#: emc/usr_intf/pncconf/pncconf.glade:59053 -#: src/emc/usr_intf/pncconf/pncconf.glade:66026 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Include Halui user interface component / commands" msgstr "Inclure les composants / commandes de l'interface utilisateur Halui" -#: src/emc/usr_intf/pncconf/pncconf.glade:59127 -#: emc/usr_intf/pncconf/pncconf.glade:59127 -#: src/emc/usr_intf/pncconf/pncconf.glade:66100 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Number of digital (bit) in pins:" msgstr "Nombre de broches d'entrée numérique:" -#: src/emc/usr_intf/pncconf/pncconf.glade:59138 -#: emc/usr_intf/pncconf/pncconf.glade:59138 -#: src/emc/usr_intf/pncconf/pncconf.glade:66111 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Number of digital (bit) out pins:" msgstr "Nombre de broches de sortie numérique:" -#: src/emc/usr_intf/pncconf/pncconf.glade:59308 -#: emc/usr_intf/pncconf/pncconf.glade:59308 -#: src/emc/usr_intf/pncconf/pncconf.glade:66281 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid " Number of Internal bit memory:" +msgstr "Nombre de broches de sortie numérique:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of Internal word memory:" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Setup number of external pins" msgstr "Nombre de broches externes" -#: src/emc/usr_intf/pncconf/pncconf.glade:59360 -#: emc/usr_intf/pncconf/pncconf.glade:59360 -#: src/emc/usr_intf/pncconf/pncconf.glade:66333 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Z Auto Touch off program" msgstr "Programme de toucher Z automatique" -#: src/emc/usr_intf/pncconf/pncconf.glade:59505 -#: emc/usr_intf/pncconf/pncconf.glade:59505 -#: src/emc/usr_intf/pncconf/pncconf.glade:66478 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "HAL Component Page" msgstr "Page de composants de HAL" -#: src/emc/usr_intf/pncconf/pncconf.glade:59648 -#: emc/usr_intf/pncconf/pncconf.glade:59648 -#: src/emc/usr_intf/pncconf/pncconf.glade:66621 -msgid "lowpass" -msgstr "passe-bas" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Add HAL components with this page." +msgstr "Ajouter les composants de HAL depuis cette page." -#: src/emc/usr_intf/pncconf/pncconf.glade:59675 -#: emc/usr_intf/pncconf/pncconf.glade:59675 -#: src/emc/usr_intf/pncconf/pncconf.glade:66648 -msgid "mux16" -msgstr "mux16" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Component" +msgstr "Composant" -#: src/emc/usr_intf/pncconf/pncconf.glade:59702 -#: emc/usr_intf/pncconf/pncconf.glade:59702 -#: src/emc/usr_intf/pncconf/pncconf.glade:66675 -msgid "scale" -msgstr "échelle" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "number of components" +msgstr "nombre de composants" -#: src/emc/usr_intf/pncconf/pncconf.glade:59728 -#: emc/usr_intf/pncconf/pncconf.glade:59728 -#: src/emc/usr_intf/pncconf/pncconf.glade:66701 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "PID" msgstr "PID" -#: src/emc/usr_intf/pncconf/pncconf.glade:59739 -#: emc/usr_intf/pncconf/pncconf.glade:59739 -#: src/emc/usr_intf/pncconf/pncconf.glade:66712 -msgid "number of components" -msgstr "nombre de composants" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "scale" +msgstr "échelle" -#: src/emc/usr_intf/pncconf/pncconf.glade:59767 -#: emc/usr_intf/pncconf/pncconf.glade:59767 -#: src/emc/usr_intf/pncconf/pncconf.glade:66740 -msgid "Component" -msgstr "Composant" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mux16" +msgstr "mux16" -#: src/emc/usr_intf/pncconf/pncconf.glade:59794 -#: emc/usr_intf/pncconf/pncconf.glade:59794 -#: src/emc/usr_intf/pncconf/pncconf.glade:66767 -msgid "Add HAL components with this page." -msgstr "Ajouter les composants de HAL depuis cette page." +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "lowpass" +msgstr "passe-bas" -#: src/emc/usr_intf/pncconf/pncconf.glade:59844 -#: emc/usr_intf/pncconf/pncconf.glade:59844 -#: src/emc/usr_intf/pncconf/pncconf.glade:66817 -msgid "Thread Command" -msgstr "Commande de thread" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Base Thread" +msgstr "Base Thread" -#: src/emc/usr_intf/pncconf/pncconf.glade:59854 -#: emc/usr_intf/pncconf/pncconf.glade:59854 -#: src/emc/usr_intf/pncconf/pncconf.glade:66827 -msgid "Thread Speed" -msgstr "Thread vitesse" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Servo Thread" +msgstr "Thread servo" -#: src/emc/usr_intf/pncconf/pncconf.glade:59906 -#: emc/usr_intf/pncconf/pncconf.glade:59906 -#: src/emc/usr_intf/pncconf/pncconf.glade:66879 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Load Command " msgstr "Charger commande" -#: src/emc/usr_intf/pncconf/pncconf.glade:59952 -#: emc/usr_intf/pncconf/pncconf.glade:59952 -#: src/emc/usr_intf/pncconf/pncconf.glade:66925 -msgid "Servo Thread" -msgstr "Thread servo" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Thread Speed" +msgstr "Thread vitesse" -#: src/emc/usr_intf/pncconf/pncconf.glade:59965 -#: emc/usr_intf/pncconf/pncconf.glade:59965 -#: src/emc/usr_intf/pncconf/pncconf.glade:66938 -msgid "Base Thread" -msgstr "Base Thread" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Thread Command" +msgstr "Commande de thread" -#: src/emc/usr_intf/pncconf/pncconf.glade:59979 -#: emc/usr_intf/pncconf/pncconf.glade:59979 -#: src/emc/usr_intf/pncconf/pncconf.glade:66952 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Custom Components Commands" msgstr "Commandes de composants utilisateur" -#: src/emc/usr_intf/pncconf/pncconf.glade:60031 -#: emc/usr_intf/pncconf/pncconf.glade:60031 -#: src/emc/usr_intf/pncconf/pncconf.glade:67007 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Machine configuration complete" +msgstr "Configuration machine complète" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"All the necessary information has now been gathered. Click \"Apply\" to " +"write your configuration files to disk.\n" +"\n" +"If you are using the 5i25 card with daugther boards or are using SSerial " +"based daughter cards, the cards must be connected and/or field power " +"supplied to the 5i25 \n" +"for the HAL pins to be available. If the config is expecting the pins and " +"they are not there, linuxcnc will error.\n" +"If you experience lockups while running LinuxCNC, you will need to decrease " +"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC, first verify that you " +"entered the proper timings for your stepper drivers. If that does not fix " +"the problem, then run a more thorough latency test as described on the " +"linuxcnc.org wiki:\n" +" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" +"\n" +"If you experience the \"Unexpected Realtime Delay\" message, run a more " +"thorough latency test as described on the linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" +msgstr "" +"Toutes les informations nécessaires ont été recueillies. \n" +" Cliquer sur \"Appliquer\" pour enregistrer les fichiers de configuration " +"sur le disque.\n" +"Si une carte 5i25 avec des cartes filles ou une carte fille SSerial sont " +"utilisées, ces cartes doivent être connectées et alimentées pour que les " +"pins de HAL soient disponibles. Sinon, LinuxCNC produira une erreur.\n" +"\n" +"Si un blocage de l'ordinateur est constaté quand LinuxCNC fonctionne avec " +"cette configuration, diminuer la vitesse maximum ce qui aura pour effet " +"d'augmenter la valeur de BASE_PERIOD.\n" +"\n" +"Si des pertes de pas sont constatées quand LinuxCNC fonctionne avec cette " +"configuration, vérifier en premier que les constantes de temps du pilote des " +"moteurs sont bien renseignées. Si le problème persiste, relancer un " +"minutieux \"latency test\" comme décrit sur le wiki de linuxcnc.org:\n" +" http://wiki.linuxcnc.org/cgi-bin/wikinfo.pl?TroubleShooting\n" +"\n" +"Faire de même si le message \"Unexpected Realtime Delay\" apparait. " + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" " Motor Encoder Test\n" "Warning limits switches \n" @@ -16926,420 +14411,125 @@ msgstr "" "Warning limits switches \n" " Will not be obeyed" -#: src/emc/usr_intf/pncconf/pncconf.glade:60067 -#: src/emc/usr_intf/pncconf/pncconf.glade:60766 -#: src/emc/usr_intf/pncconf/pncconf.glade:61859 -#: src/emc/usr_intf/pncconf/pncconf.glade:62952 -#: src/emc/usr_intf/pncconf/pncconf.glade:64045 -#: src/emc/usr_intf/pncconf/pncconf.glade:65025 -#: emc/usr_intf/pncconf/pncconf.glade:60067 -#: emc/usr_intf/pncconf/pncconf.glade:60766 -#: emc/usr_intf/pncconf/pncconf.glade:61859 -#: emc/usr_intf/pncconf/pncconf.glade:62952 -#: emc/usr_intf/pncconf/pncconf.glade:64045 -#: emc/usr_intf/pncconf/pncconf.glade:65025 -#: src/emc/usr_intf/pncconf/pncconf.glade:67043 -#: src/emc/usr_intf/pncconf/pncconf.glade:67742 -#: src/emc/usr_intf/pncconf/pncconf.glade:68835 -#: src/emc/usr_intf/pncconf/pncconf.glade:69928 -#: src/emc/usr_intf/pncconf/pncconf.glade:71021 -#: src/emc/usr_intf/pncconf/pncconf.glade:72001 -msgid "Invert Motor" -msgstr "Inverser moteur" - -#: src/emc/usr_intf/pncconf/pncconf.glade:60083 -#: src/emc/usr_intf/pncconf/pncconf.glade:60782 -#: src/emc/usr_intf/pncconf/pncconf.glade:61875 -#: src/emc/usr_intf/pncconf/pncconf.glade:62968 -#: src/emc/usr_intf/pncconf/pncconf.glade:64061 -#: src/emc/usr_intf/pncconf/pncconf.glade:65040 -#: emc/usr_intf/pncconf/pncconf.glade:60083 -#: emc/usr_intf/pncconf/pncconf.glade:60782 -#: emc/usr_intf/pncconf/pncconf.glade:61875 -#: emc/usr_intf/pncconf/pncconf.glade:62968 -#: emc/usr_intf/pncconf/pncconf.glade:64061 -#: emc/usr_intf/pncconf/pncconf.glade:65040 -#: src/emc/usr_intf/pncconf/pncconf.glade:67059 -#: src/emc/usr_intf/pncconf/pncconf.glade:67758 -#: src/emc/usr_intf/pncconf/pncconf.glade:68851 -#: src/emc/usr_intf/pncconf/pncconf.glade:69944 -#: src/emc/usr_intf/pncconf/pncconf.glade:71037 -#: src/emc/usr_intf/pncconf/pncconf.glade:72016 -msgid "Invert Encoder" -msgstr "Inverser codeur" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Slow Dac Speed" +msgstr "Slow Dac Speed" -#: src/emc/usr_intf/pncconf/pncconf.glade:60100 -#: emc/usr_intf/pncconf/pncconf.glade:60100 -#: src/emc/usr_intf/pncconf/pncconf.glade:67076 -msgid "Enable Amp" -msgstr "Validation ampli" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Fast Dac Speed" +msgstr "Fast Dac Speed" -#: src/emc/usr_intf/pncconf/pncconf.glade:60114 -#: emc/usr_intf/pncconf/pncconf.glade:60114 -#: src/emc/usr_intf/pncconf/pncconf.glade:67090 -msgid "Reset Encoder" -msgstr "Reset codeur" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Dac Offset:" +msgstr "Offset du DAC:" -#: src/emc/usr_intf/pncconf/pncconf.glade:60142 -#: emc/usr_intf/pncconf/pncconf.glade:60142 -#: src/emc/usr_intf/pncconf/pncconf.glade:67118 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Encoder Scale:" msgstr "Échelle codeur:" -#: src/emc/usr_intf/pncconf/pncconf.glade:60153 -#: emc/usr_intf/pncconf/pncconf.glade:60153 -#: src/emc/usr_intf/pncconf/pncconf.glade:67129 -msgid "Dac Offset:" -msgstr "Offset du DAC:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Reset Encoder" +msgstr "Reset codeur" -#: src/emc/usr_intf/pncconf/pncconf.glade:60243 -#: emc/usr_intf/pncconf/pncconf.glade:60243 -#: src/emc/usr_intf/pncconf/pncconf.glade:67219 -msgid "Fast Dac Speed" -msgstr "Fast Dac Speed" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Enable Amp" +msgstr "Validation ampli" -#: src/emc/usr_intf/pncconf/pncconf.glade:60258 -#: emc/usr_intf/pncconf/pncconf.glade:60258 -#: src/emc/usr_intf/pncconf/pncconf.glade:67234 -msgid "Slow Dac Speed" -msgstr "Slow Dac Speed" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Invert Encoder" +msgstr "Inverser codeur" -#: src/emc/usr_intf/pncconf/pncconf.glade:60407 -#: src/emc/usr_intf/pncconf/pncconf.glade:61503 -#: src/emc/usr_intf/pncconf/pncconf.glade:62596 -#: src/emc/usr_intf/pncconf/pncconf.glade:63689 -#: src/emc/usr_intf/pncconf/pncconf.glade:64788 -#: emc/usr_intf/pncconf/pncconf.glade:60407 -#: emc/usr_intf/pncconf/pncconf.glade:61503 -#: emc/usr_intf/pncconf/pncconf.glade:62596 -#: emc/usr_intf/pncconf/pncconf.glade:63689 -#: emc/usr_intf/pncconf/pncconf.glade:64788 -#: src/emc/usr_intf/pncconf/pncconf.glade:67383 -#: src/emc/usr_intf/pncconf/pncconf.glade:68479 -#: src/emc/usr_intf/pncconf/pncconf.glade:69572 -#: src/emc/usr_intf/pncconf/pncconf.glade:70665 -#: src/emc/usr_intf/pncconf/pncconf.glade:71764 -msgid "mm/minute" -msgstr "mm/minute" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Invert Motor" +msgstr "Inverser moteur" -#: src/emc/usr_intf/pncconf/pncconf.glade:60441 -#: src/emc/usr_intf/pncconf/pncconf.glade:61536 -#: src/emc/usr_intf/pncconf/pncconf.glade:62629 -#: src/emc/usr_intf/pncconf/pncconf.glade:63722 -#: src/emc/usr_intf/pncconf/pncconf.glade:64821 -#: emc/usr_intf/pncconf/pncconf.glade:60441 -#: emc/usr_intf/pncconf/pncconf.glade:61536 -#: emc/usr_intf/pncconf/pncconf.glade:62629 -#: emc/usr_intf/pncconf/pncconf.glade:63722 -#: emc/usr_intf/pncconf/pncconf.glade:64821 -#: src/emc/usr_intf/pncconf/pncconf.glade:67417 -#: src/emc/usr_intf/pncconf/pncconf.glade:68512 -#: src/emc/usr_intf/pncconf/pncconf.glade:69605 -#: src/emc/usr_intf/pncconf/pncconf.glade:70698 -#: src/emc/usr_intf/pncconf/pncconf.glade:71797 -msgid "mm/minute^2" -msgstr "mm/minute^2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"±\n" +"+\n" +"-\n" +msgstr "" +"±\n" +"+\n" +"-\n" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Seconds" +msgstr "Secondes" -#: src/emc/usr_intf/pncconf/pncconf.glade:60550 -#: src/emc/usr_intf/pncconf/pncconf.glade:61644 -#: src/emc/usr_intf/pncconf/pncconf.glade:62737 -#: src/emc/usr_intf/pncconf/pncconf.glade:64930 -#: emc/usr_intf/pncconf/pncconf.glade:60550 -#: emc/usr_intf/pncconf/pncconf.glade:61644 -#: emc/usr_intf/pncconf/pncconf.glade:62737 -#: emc/usr_intf/pncconf/pncconf.glade:64930 -#: src/emc/usr_intf/pncconf/pncconf.glade:67526 -#: src/emc/usr_intf/pncconf/pncconf.glade:68620 -#: src/emc/usr_intf/pncconf/pncconf.glade:69713 -#: src/emc/usr_intf/pncconf/pncconf.glade:71906 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Enable" msgstr "Validation" -#: src/emc/usr_intf/pncconf/pncconf.glade:60600 -#: src/emc/usr_intf/pncconf/pncconf.glade:61693 -#: src/emc/usr_intf/pncconf/pncconf.glade:62786 -#: src/emc/usr_intf/pncconf/pncconf.glade:63879 -#: src/emc/usr_intf/pncconf/pncconf.glade:65139 -#: emc/usr_intf/pncconf/pncconf.glade:60600 -#: emc/usr_intf/pncconf/pncconf.glade:61693 -#: emc/usr_intf/pncconf/pncconf.glade:62786 -#: emc/usr_intf/pncconf/pncconf.glade:63879 -#: emc/usr_intf/pncconf/pncconf.glade:65139 -#: src/emc/usr_intf/pncconf/pncconf.glade:67576 -#: src/emc/usr_intf/pncconf/pncconf.glade:68669 -#: src/emc/usr_intf/pncconf/pncconf.glade:69762 -#: src/emc/usr_intf/pncconf/pncconf.glade:70855 -#: src/emc/usr_intf/pncconf/pncconf.glade:72115 -msgid "Seconds" -msgstr "Secondes" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm/minute^2" +msgstr "mm/minute^2" -#: src/emc/usr_intf/pncconf/pncconf.glade:60907 -#: src/emc/usr_intf/pncconf/pncconf.glade:62212 -#: src/emc/usr_intf/pncconf/pncconf.glade:63093 -#: src/emc/usr_intf/pncconf/pncconf.glade:64398 -#: src/emc/usr_intf/pncconf/pncconf.glade:65255 -#: emc/usr_intf/pncconf/pncconf.glade:60907 -#: emc/usr_intf/pncconf/pncconf.glade:62212 -#: emc/usr_intf/pncconf/pncconf.glade:63093 -#: emc/usr_intf/pncconf/pncconf.glade:64398 -#: emc/usr_intf/pncconf/pncconf.glade:65255 -#: src/emc/usr_intf/pncconf/pncconf.glade:67883 -#: src/emc/usr_intf/pncconf/pncconf.glade:69188 -#: src/emc/usr_intf/pncconf/pncconf.glade:70069 -#: src/emc/usr_intf/pncconf/pncconf.glade:71374 -#: src/emc/usr_intf/pncconf/pncconf.glade:72231 -msgid "DeadBand" -msgstr "DeadBand" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm/minute" +msgstr "mm/minute" -#: src/emc/usr_intf/pncconf/pncconf.glade:61089 -#: src/emc/usr_intf/pncconf/pncconf.glade:61380 -#: src/emc/usr_intf/pncconf/pncconf.glade:62030 -#: src/emc/usr_intf/pncconf/pncconf.glade:62401 -#: src/emc/usr_intf/pncconf/pncconf.glade:63275 -#: src/emc/usr_intf/pncconf/pncconf.glade:63562 -#: src/emc/usr_intf/pncconf/pncconf.glade:64216 -#: src/emc/usr_intf/pncconf/pncconf.glade:64587 -#: src/emc/usr_intf/pncconf/pncconf.glade:65431 -#: src/emc/usr_intf/pncconf/pncconf.glade:65718 -#: emc/usr_intf/pncconf/pncconf.glade:61089 -#: emc/usr_intf/pncconf/pncconf.glade:61380 -#: emc/usr_intf/pncconf/pncconf.glade:62030 -#: emc/usr_intf/pncconf/pncconf.glade:62401 -#: emc/usr_intf/pncconf/pncconf.glade:63275 -#: emc/usr_intf/pncconf/pncconf.glade:63562 -#: emc/usr_intf/pncconf/pncconf.glade:64216 -#: emc/usr_intf/pncconf/pncconf.glade:64587 -#: emc/usr_intf/pncconf/pncconf.glade:65431 -#: emc/usr_intf/pncconf/pncconf.glade:65718 -#: src/emc/usr_intf/pncconf/pncconf.glade:68065 -#: src/emc/usr_intf/pncconf/pncconf.glade:68356 -#: src/emc/usr_intf/pncconf/pncconf.glade:69006 -#: src/emc/usr_intf/pncconf/pncconf.glade:69377 -#: src/emc/usr_intf/pncconf/pncconf.glade:70251 -#: src/emc/usr_intf/pncconf/pncconf.glade:70538 -#: src/emc/usr_intf/pncconf/pncconf.glade:71192 -#: src/emc/usr_intf/pncconf/pncconf.glade:71563 -#: src/emc/usr_intf/pncconf/pncconf.glade:72407 -#: src/emc/usr_intf/pncconf/pncconf.glade:72694 -msgid "Original" -msgstr "Original" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Current" +msgstr "Courant" -#: src/emc/usr_intf/pncconf/pncconf.glade:61138 -#: src/emc/usr_intf/pncconf/pncconf.glade:61981 -#: src/emc/usr_intf/pncconf/pncconf.glade:63324 -#: src/emc/usr_intf/pncconf/pncconf.glade:64167 -#: src/emc/usr_intf/pncconf/pncconf.glade:65480 -#: emc/usr_intf/pncconf/pncconf.glade:61138 -#: emc/usr_intf/pncconf/pncconf.glade:61981 -#: emc/usr_intf/pncconf/pncconf.glade:63324 -#: emc/usr_intf/pncconf/pncconf.glade:64167 -#: emc/usr_intf/pncconf/pncconf.glade:65480 -#: src/emc/usr_intf/pncconf/pncconf.glade:68114 -#: src/emc/usr_intf/pncconf/pncconf.glade:68957 -#: src/emc/usr_intf/pncconf/pncconf.glade:70300 -#: src/emc/usr_intf/pncconf/pncconf.glade:71143 -#: src/emc/usr_intf/pncconf/pncconf.glade:72456 -msgid "D:" -msgstr "D:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "P:" +msgstr "P:" -#: src/emc/usr_intf/pncconf/pncconf.glade:61148 -#: src/emc/usr_intf/pncconf/pncconf.glade:61971 -#: src/emc/usr_intf/pncconf/pncconf.glade:63334 -#: src/emc/usr_intf/pncconf/pncconf.glade:64157 -#: src/emc/usr_intf/pncconf/pncconf.glade:65490 -#: emc/usr_intf/pncconf/pncconf.glade:61148 -#: emc/usr_intf/pncconf/pncconf.glade:61971 -#: emc/usr_intf/pncconf/pncconf.glade:63334 -#: emc/usr_intf/pncconf/pncconf.glade:64157 -#: emc/usr_intf/pncconf/pncconf.glade:65490 -#: src/emc/usr_intf/pncconf/pncconf.glade:68124 -#: src/emc/usr_intf/pncconf/pncconf.glade:68947 -#: src/emc/usr_intf/pncconf/pncconf.glade:70310 -#: src/emc/usr_intf/pncconf/pncconf.glade:71133 -#: src/emc/usr_intf/pncconf/pncconf.glade:72466 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "I:" msgstr "I:" -#: src/emc/usr_intf/pncconf/pncconf.glade:61158 -#: src/emc/usr_intf/pncconf/pncconf.glade:61961 -#: src/emc/usr_intf/pncconf/pncconf.glade:63344 -#: src/emc/usr_intf/pncconf/pncconf.glade:64147 -#: src/emc/usr_intf/pncconf/pncconf.glade:65500 -#: emc/usr_intf/pncconf/pncconf.glade:61158 -#: emc/usr_intf/pncconf/pncconf.glade:61961 -#: emc/usr_intf/pncconf/pncconf.glade:63344 -#: emc/usr_intf/pncconf/pncconf.glade:64147 -#: emc/usr_intf/pncconf/pncconf.glade:65500 -#: src/emc/usr_intf/pncconf/pncconf.glade:68134 -#: src/emc/usr_intf/pncconf/pncconf.glade:68937 -#: src/emc/usr_intf/pncconf/pncconf.glade:70320 -#: src/emc/usr_intf/pncconf/pncconf.glade:71123 -#: src/emc/usr_intf/pncconf/pncconf.glade:72476 -msgid "P:" -msgstr "P:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "D:" +msgstr "D:" -#: src/emc/usr_intf/pncconf/pncconf.glade:61168 -#: src/emc/usr_intf/pncconf/pncconf.glade:61392 -#: src/emc/usr_intf/pncconf/pncconf.glade:61951 -#: src/emc/usr_intf/pncconf/pncconf.glade:62389 -#: src/emc/usr_intf/pncconf/pncconf.glade:63354 -#: src/emc/usr_intf/pncconf/pncconf.glade:63574 -#: src/emc/usr_intf/pncconf/pncconf.glade:64137 -#: src/emc/usr_intf/pncconf/pncconf.glade:64575 -#: src/emc/usr_intf/pncconf/pncconf.glade:65510 -#: src/emc/usr_intf/pncconf/pncconf.glade:65730 -#: emc/usr_intf/pncconf/pncconf.glade:61168 -#: emc/usr_intf/pncconf/pncconf.glade:61392 -#: emc/usr_intf/pncconf/pncconf.glade:61951 -#: emc/usr_intf/pncconf/pncconf.glade:62389 -#: emc/usr_intf/pncconf/pncconf.glade:63354 -#: emc/usr_intf/pncconf/pncconf.glade:63574 -#: emc/usr_intf/pncconf/pncconf.glade:64137 -#: emc/usr_intf/pncconf/pncconf.glade:64575 -#: emc/usr_intf/pncconf/pncconf.glade:65510 -#: emc/usr_intf/pncconf/pncconf.glade:65730 -#: src/emc/usr_intf/pncconf/pncconf.glade:68144 -#: src/emc/usr_intf/pncconf/pncconf.glade:68368 -#: src/emc/usr_intf/pncconf/pncconf.glade:68927 -#: src/emc/usr_intf/pncconf/pncconf.glade:69365 -#: src/emc/usr_intf/pncconf/pncconf.glade:70330 -#: src/emc/usr_intf/pncconf/pncconf.glade:70550 -#: src/emc/usr_intf/pncconf/pncconf.glade:71113 -#: src/emc/usr_intf/pncconf/pncconf.glade:71551 -#: src/emc/usr_intf/pncconf/pncconf.glade:72486 -#: src/emc/usr_intf/pncconf/pncconf.glade:72706 -msgid "Current" -msgstr "Courant" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Original" +msgstr "Original" -#: src/emc/usr_intf/pncconf/pncconf.glade:61185 -#: src/emc/usr_intf/pncconf/pncconf.glade:62278 -#: src/emc/usr_intf/pncconf/pncconf.glade:63371 -#: src/emc/usr_intf/pncconf/pncconf.glade:64464 -#: src/emc/usr_intf/pncconf/pncconf.glade:65527 -#: emc/usr_intf/pncconf/pncconf.glade:61185 -#: emc/usr_intf/pncconf/pncconf.glade:62278 -#: emc/usr_intf/pncconf/pncconf.glade:63371 -#: emc/usr_intf/pncconf/pncconf.glade:64464 -#: emc/usr_intf/pncconf/pncconf.glade:65527 -#: src/emc/usr_intf/pncconf/pncconf.glade:68161 -#: src/emc/usr_intf/pncconf/pncconf.glade:69254 -#: src/emc/usr_intf/pncconf/pncconf.glade:70347 -#: src/emc/usr_intf/pncconf/pncconf.glade:71440 -#: src/emc/usr_intf/pncconf/pncconf.glade:72503 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "DeadBand" +msgstr "DeadBand" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "PID Tuning" msgstr "Calibration PID" -#: src/emc/usr_intf/pncconf/pncconf.glade:61370 -#: src/emc/usr_intf/pncconf/pncconf.glade:62413 -#: src/emc/usr_intf/pncconf/pncconf.glade:63552 -#: src/emc/usr_intf/pncconf/pncconf.glade:64599 -#: src/emc/usr_intf/pncconf/pncconf.glade:65708 -#: emc/usr_intf/pncconf/pncconf.glade:61370 -#: emc/usr_intf/pncconf/pncconf.glade:62413 -#: emc/usr_intf/pncconf/pncconf.glade:63552 -#: emc/usr_intf/pncconf/pncconf.glade:64599 -#: emc/usr_intf/pncconf/pncconf.glade:65708 -#: src/emc/usr_intf/pncconf/pncconf.glade:68346 -#: src/emc/usr_intf/pncconf/pncconf.glade:69389 -#: src/emc/usr_intf/pncconf/pncconf.glade:70528 -#: src/emc/usr_intf/pncconf/pncconf.glade:71575 -#: src/emc/usr_intf/pncconf/pncconf.glade:72684 -msgid "Direction Setup:" -msgstr "Réglage direction:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:61404 -#: src/emc/usr_intf/pncconf/pncconf.glade:62379 -#: src/emc/usr_intf/pncconf/pncconf.glade:63586 -#: src/emc/usr_intf/pncconf/pncconf.glade:64565 -#: src/emc/usr_intf/pncconf/pncconf.glade:65742 -#: emc/usr_intf/pncconf/pncconf.glade:61404 -#: emc/usr_intf/pncconf/pncconf.glade:62379 -#: emc/usr_intf/pncconf/pncconf.glade:63586 -#: emc/usr_intf/pncconf/pncconf.glade:64565 -#: emc/usr_intf/pncconf/pncconf.glade:65742 -#: src/emc/usr_intf/pncconf/pncconf.glade:68380 -#: src/emc/usr_intf/pncconf/pncconf.glade:69355 -#: src/emc/usr_intf/pncconf/pncconf.glade:70562 -#: src/emc/usr_intf/pncconf/pncconf.glade:71541 -#: src/emc/usr_intf/pncconf/pncconf.glade:72718 -msgid "Direction Hold:" -msgstr "Direction Hold:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Time:" +msgstr "Step Time:" -#: src/emc/usr_intf/pncconf/pncconf.glade:61414 -#: src/emc/usr_intf/pncconf/pncconf.glade:62369 -#: src/emc/usr_intf/pncconf/pncconf.glade:63596 -#: src/emc/usr_intf/pncconf/pncconf.glade:64555 -#: src/emc/usr_intf/pncconf/pncconf.glade:65752 -#: emc/usr_intf/pncconf/pncconf.glade:61414 -#: emc/usr_intf/pncconf/pncconf.glade:62369 -#: emc/usr_intf/pncconf/pncconf.glade:63596 -#: emc/usr_intf/pncconf/pncconf.glade:64555 -#: emc/usr_intf/pncconf/pncconf.glade:65752 -#: src/emc/usr_intf/pncconf/pncconf.glade:68390 -#: src/emc/usr_intf/pncconf/pncconf.glade:69345 -#: src/emc/usr_intf/pncconf/pncconf.glade:70572 -#: src/emc/usr_intf/pncconf/pncconf.glade:71531 -#: src/emc/usr_intf/pncconf/pncconf.glade:72728 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Step Space:" msgstr "Step Space:" -#: src/emc/usr_intf/pncconf/pncconf.glade:61424 -#: src/emc/usr_intf/pncconf/pncconf.glade:62359 -#: src/emc/usr_intf/pncconf/pncconf.glade:63606 -#: src/emc/usr_intf/pncconf/pncconf.glade:64545 -#: src/emc/usr_intf/pncconf/pncconf.glade:65762 -#: emc/usr_intf/pncconf/pncconf.glade:61424 -#: emc/usr_intf/pncconf/pncconf.glade:62359 -#: emc/usr_intf/pncconf/pncconf.glade:63606 -#: emc/usr_intf/pncconf/pncconf.glade:64545 -#: emc/usr_intf/pncconf/pncconf.glade:65762 -#: src/emc/usr_intf/pncconf/pncconf.glade:68400 -#: src/emc/usr_intf/pncconf/pncconf.glade:69335 -#: src/emc/usr_intf/pncconf/pncconf.glade:70582 -#: src/emc/usr_intf/pncconf/pncconf.glade:71521 -#: src/emc/usr_intf/pncconf/pncconf.glade:72738 -msgid "Step Time:" -msgstr "Step Time:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Direction Hold:" +msgstr "Direction Hold:" -#: src/emc/usr_intf/pncconf/pncconf.glade:61439 -#: src/emc/usr_intf/pncconf/pncconf.glade:62528 -#: src/emc/usr_intf/pncconf/pncconf.glade:63621 -#: src/emc/usr_intf/pncconf/pncconf.glade:64714 -#: src/emc/usr_intf/pncconf/pncconf.glade:65777 -#: emc/usr_intf/pncconf/pncconf.glade:61439 -#: emc/usr_intf/pncconf/pncconf.glade:62528 -#: emc/usr_intf/pncconf/pncconf.glade:63621 -#: emc/usr_intf/pncconf/pncconf.glade:64714 -#: emc/usr_intf/pncconf/pncconf.glade:65777 -#: src/emc/usr_intf/pncconf/pncconf.glade:68415 -#: src/emc/usr_intf/pncconf/pncconf.glade:69504 -#: src/emc/usr_intf/pncconf/pncconf.glade:70597 -#: src/emc/usr_intf/pncconf/pncconf.glade:71690 -#: src/emc/usr_intf/pncconf/pncconf.glade:72753 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Direction Setup:" +msgstr "Réglage direction:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Step Timing" msgstr "Step Timing" -#: src/emc/usr_intf/pncconf/pncconf.glade:63830 -#: emc/usr_intf/pncconf/pncconf.glade:63830 -#: src/emc/usr_intf/pncconf/pncconf.glade:70806 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "enable" msgstr "validation" -#: src/emc/usr_intf/pncconf/pncconf.glade:65798 -#: emc/usr_intf/pncconf/pncconf.glade:65798 -#: src/emc/usr_intf/pncconf/pncconf.glade:72774 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "spindle" msgstr "Broche" -#: src/emc/usr_intf/pncconf/pncconf.glade:65881 -#: emc/usr_intf/pncconf/pncconf.glade:65881 -#: src/emc/usr_intf/pncconf/pncconf.glade:72857 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Help Page" msgstr "Pages d'aide" -#: src/emc/usr_intf/pncconf/pncconf.glade:65911 -#: emc/usr_intf/pncconf/pncconf.glade:65911 -#: src/emc/usr_intf/pncconf/pncconf.glade:72887 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" "X axis:\n" "Total Travel = 10\n" @@ -17402,15 +14592,11 @@ msgstr "" "Nota: Ceci est un exemple, beaucoup d'autres combinaisons \n" "sont possibles." -#: src/emc/usr_intf/pncconf/pncconf.glade:65951 -#: emc/usr_intf/pncconf/pncconf.glade:65951 -#: src/emc/usr_intf/pncconf/pncconf.glade:72927 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Mill" msgstr "Fraiseuse" -#: src/emc/usr_intf/pncconf/pncconf.glade:65970 -#: emc/usr_intf/pncconf/pncconf.glade:65970 -#: src/emc/usr_intf/pncconf/pncconf.glade:72946 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" "Total Travel = 4 + 6 = 10\n" "Z Home Offset = Origin to Home Switch distance = 10\n" @@ -17434,2766 +14620,2956 @@ msgstr "" "Ceci est juste un exemple, d'autres combinaisons de contacts sont\n" "possibles." -#: src/emc/usr_intf/pncconf/pncconf.glade:65994 -#: emc/usr_intf/pncconf/pncconf.glade:65994 -#: src/emc/usr_intf/pncconf/pncconf.glade:72970 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Lathe" msgstr "Tour" -#: src/emc/usr_intf/pncconf/pncconf.glade:66010 -#: emc/usr_intf/pncconf/pncconf.glade:66010 -#: src/emc/usr_intf/pncconf/pncconf.glade:72986 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Diagram" msgstr "Schéma" -#: src/emc/usr_intf/pncconf/pncconf.glade:66043 -#: emc/usr_intf/pncconf/pncconf.glade:66043 -#: src/emc/usr_intf/pncconf/pncconf.glade:73019 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Output" msgstr "Sortie" -#: src/emc/usr_intf/pncconf/pncconf.glade:66123 -#: emc/usr_intf/pncconf/pncconf.glade:66123 -#: src/emc/usr_intf/pncconf/pncconf.glade:73126 -msgid "Motor steps per revolution:" -msgstr "Nombre de pas moteur par tour:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"\t\t\t\tPNCconf - Point aNd Click CONFigurator\n" +"PNCconf is a configuration program for Linuxcnc.\n" +"It configures machines using Mesa I/O cards.\n" +"It configures servo,stepper or closed loop stepper machines.\n" +"It supports some of Mesa's sserial cards.\n" +"It will forever be a work in progress as Linuxcnc changes.\n" +"\n" +"Many thanks To:\n" +"Jeff Eppler - PNCconf is based on stepconf - Jeff's creation. Jeff also has " +"helped with techincal difficulties.\n" +"Big John T - John drew the original machine illustrations. Testing and " +"suggestions.\n" +"Peter Wallace - Technical questions on Mesa's I/O cards. Supplied sample " +"equipment to test with.\n" +"Andy Pugh - suggestions, questions answered and many pin name changes :) \n" +"Dave Armstrong - testing and suggestions expecially with resolvers.\n" +"Everyone who gave a bug report ! I cannot test everything thoughly enough so " +"reports help.\n" +"\n" +"Beta 1 version" +msgstr "" +"\t\t\t\tPNCconf - Configurateur -à la souris-\n" +"PNCconf est un programme de configuration pour Linuxcnc.\n" +"Il configure les machines utilisant les cartes E/S de Mesa.\n" +"Il configure les machines à servomoteurs, à pas à pas ou à pas à pas en " +"boucle fermée.\n" +"Il supporte certaines cartes série Mesa.\n" +"Il évoluera pour suivre les changements de Linuxcnc.\n" +"\n" +"Merci beaucoup à:\n" +"Jeff Eppler - PNCconf est basé sur stepconf qui est une création de Jeff. " +"Jeff nous a aussi beaucoup aidé à surmonter les difficultés techniques.\n" +"Big John T - John à créé les illustrations de la machine d'origine. Testé " +"est faits de nombreuses suggestions.\n" +"Peter Wallace - Questions techniques sur les cartes E/S Mesa. Il nous a " +"fourni des équipements pour nos test.\n" +"Andy Pugh - Suggestions, réponses aux questions et de nombreux changements " +"de noms de pin :) \n" +"Dave Armstrong - Il a testé et suggéré des solutions, spécialement pour les " +"résolveurs.\n" +"Et tout ceux qui nous ont fourni des rapports de bogue ! Je n'aurais pas pu " +"tester tout sans l'aide de ces rapports.\n" +"\n" +"Beta 1 version" -#: src/emc/usr_intf/pncconf/pncconf.glade:66173 -#: src/emc/usr_intf/pncconf/pncconf.glade:66459 -#: emc/usr_intf/pncconf/pncconf.glade:66173 -#: emc/usr_intf/pncconf/pncconf.glade:66459 -#: src/emc/usr_intf/pncconf/pncconf.glade:73176 -#: src/emc/usr_intf/pncconf/pncconf.glade:73462 -msgid "Leadscrew Metric Pitch" -msgstr "Vis en pas métrique" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "TPI " +msgstr "TPI " -#: src/emc/usr_intf/pncconf/pncconf.glade:66186 -#: emc/usr_intf/pncconf/pncconf.glade:66186 -#: src/emc/usr_intf/pncconf/pncconf.glade:73189 -msgid "Microstep Multiplication Factor:" -msgstr "Facteur de multiplication dû aux micropas:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulley teeth (motor:Leadscrew):" +msgstr "Dents des poulies (moteur:vis):" -#: src/emc/usr_intf/pncconf/pncconf.glade:66199 -#: src/emc/usr_intf/pncconf/pncconf.glade:66481 -#: emc/usr_intf/pncconf/pncconf.glade:66199 -#: emc/usr_intf/pncconf/pncconf.glade:66481 -#: src/emc/usr_intf/pncconf/pncconf.glade:73202 -#: src/emc/usr_intf/pncconf/pncconf.glade:73484 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Worm turn ratio (Input:Outputl)" msgstr "Rapport de réduction (Entrée:Sortie)" -#: src/emc/usr_intf/pncconf/pncconf.glade:66212 -#: emc/usr_intf/pncconf/pncconf.glade:66212 -#: src/emc/usr_intf/pncconf/pncconf.glade:73215 -msgid "Pulley teeth (motor:Leadscrew):" -msgstr "Dents des poulies (moteur:vis):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Microstep Multiplication Factor:" +msgstr "Facteur de multiplication dû aux micropas:" -#: src/emc/usr_intf/pncconf/pncconf.glade:66356 -#: emc/usr_intf/pncconf/pncconf.glade:66356 -#: src/emc/usr_intf/pncconf/pncconf.glade:73359 -msgid "TPI " -msgstr "TPI " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Leadscrew Metric Pitch" +msgstr "Vis en pas métrique" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motor steps per revolution:" +msgstr "Nombre de pas moteur par tour:" -#: src/emc/usr_intf/pncconf/pncconf.glade:66372 -#: emc/usr_intf/pncconf/pncconf.glade:66372 -#: src/emc/usr_intf/pncconf/pncconf.glade:73375 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Step Motor Scale" msgstr "Échelle moteur pas à pas" -#: src/emc/usr_intf/pncconf/pncconf.glade:66472 -#: emc/usr_intf/pncconf/pncconf.glade:66472 -#: src/emc/usr_intf/pncconf/pncconf.glade:73475 -msgid "Pulley teeth (encoder:Leadscrew):" -msgstr "Dents des poulies (codeur:vis):" - -#: src/emc/usr_intf/pncconf/pncconf.glade:66537 -#: emc/usr_intf/pncconf/pncconf.glade:66537 -#: src/emc/usr_intf/pncconf/pncconf.glade:73540 -msgid "Encoder lines per revolution:" -msgstr "Impulsions de codeur par tour:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "TPI" +msgstr "TPI" -#: src/emc/usr_intf/pncconf/pncconf.glade:66547 -#: emc/usr_intf/pncconf/pncconf.glade:66547 -#: src/emc/usr_intf/pncconf/pncconf.glade:73550 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "X 4 = Pulses/Rev" msgstr "Impulsions en quadrature par tour" -#: src/emc/usr_intf/pncconf/pncconf.glade:66651 -#: emc/usr_intf/pncconf/pncconf.glade:66651 -#: src/emc/usr_intf/pncconf/pncconf.glade:73654 -msgid "TPI" -msgstr "TPI" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder lines per revolution:" +msgstr "Impulsions de codeur par tour:" -#: src/emc/usr_intf/pncconf/pncconf.glade:66667 -#: emc/usr_intf/pncconf/pncconf.glade:66667 -#: src/emc/usr_intf/pncconf/pncconf.glade:73670 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulley teeth (encoder:Leadscrew):" +msgstr "Dents des poulies (codeur:vis):" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Encoder Scale" msgstr "Échelle codeur" -#: src/emc/usr_intf/pncconf/pncconf.glade:66711 -#: emc/usr_intf/pncconf/pncconf.glade:66711 -#: src/emc/usr_intf/pncconf/pncconf.glade:73714 -msgid "motor steps per unit:" -msgstr "Nombre de pas moteur par unité:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " " +msgstr " " -#: src/emc/usr_intf/pncconf/pncconf.glade:66721 -#: emc/usr_intf/pncconf/pncconf.glade:66721 -#: src/emc/usr_intf/pncconf/pncconf.glade:73724 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "encoder pulses per unit:" msgstr "impulsions de codeur par unité:" -#: src/emc/usr_intf/pncconf/pncconf.glade:66756 -#: emc/usr_intf/pncconf/pncconf.glade:66756 -#: src/emc/usr_intf/pncconf/pncconf.glade:73759 -msgid " " -msgstr " " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "motor steps per unit:" +msgstr "Nombre de pas moteur par unité:" -#: src/emc/usr_intf/pncconf/pncconf.glade:66770 -#: emc/usr_intf/pncconf/pncconf.glade:66770 -#: src/emc/usr_intf/pncconf/pncconf.glade:73773 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Calculated Scale" msgstr "Échelle calculée" -#: src/emc/usr_intf/pncconf/pncconf.glade:66848 -#: emc/usr_intf/pncconf/pncconf.glade:66848 -#: src/emc/usr_intf/pncconf/pncconf.glade:73851 -msgid "xmaxrpm" -msgstr "xmaxrpm" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / encoder pulse" +msgstr "mm / impulsion codeur" -#: src/emc/usr_intf/pncconf/pncconf.glade:66864 -#: emc/usr_intf/pncconf/pncconf.glade:66864 -#: src/emc/usr_intf/pncconf/pncconf.glade:64419 -#: src/emc/usr_intf/pncconf/pncconf.glade:73867 -msgid "RPM" -msgstr "RPM" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Resolution:" +msgstr "Résolution:" -#: src/emc/usr_intf/pncconf/pncconf.glade:66877 -#: emc/usr_intf/pncconf/pncconf.glade:66877 -#: src/emc/usr_intf/pncconf/pncconf.glade:73880 -msgid "Motor RPM at max speed:" -msgstr "Vitesse maxi moteur en tr/mn:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Distance to acheave max speed:" +msgstr "Distance pour atteindre la vitesse maxi:" -#: src/emc/usr_intf/pncconf/pncconf.glade:66921 -#: emc/usr_intf/pncconf/pncconf.glade:66921 -#: src/emc/usr_intf/pncconf/pncconf.glade:73924 -msgid "Calculated Axis SCALE:" -msgstr "Echelle d'axe calculée:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "sec" +msgstr "s" -#: src/emc/usr_intf/pncconf/pncconf.glade:66934 -#: emc/usr_intf/pncconf/pncconf.glade:66934 -#: src/emc/usr_intf/pncconf/pncconf.glade:73937 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Khz" msgstr "kHz" -#: src/emc/usr_intf/pncconf/pncconf.glade:66949 -#: emc/usr_intf/pncconf/pncconf.glade:66949 -#: src/emc/usr_intf/pncconf/pncconf.glade:73952 -msgid "sec" -msgstr "s" - -#: src/emc/usr_intf/pncconf/pncconf.glade:67049 -#: emc/usr_intf/pncconf/pncconf.glade:67049 -#: src/emc/usr_intf/pncconf/pncconf.glade:74052 -msgid "Distance to acheave max speed:" -msgstr "Distance pour atteindre la vitesse maxi:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Calculated Axis SCALE:" +msgstr "Echelle d'axe calculée:" -#: src/emc/usr_intf/pncconf/pncconf.glade:67077 -#: emc/usr_intf/pncconf/pncconf.glade:67077 -#: src/emc/usr_intf/pncconf/pncconf.glade:74080 -msgid "Resolution:" -msgstr "Résolution:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motor RPM at max speed:" +msgstr "Vitesse maxi moteur en tr/mn:" -#: src/emc/usr_intf/pncconf/pncconf.glade:67105 -#: emc/usr_intf/pncconf/pncconf.glade:67105 -#: src/emc/usr_intf/pncconf/pncconf.glade:74108 -msgid "mm / encoder pulse" -msgstr "mm / impulsion codeur" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "xmaxrpm" +msgstr "xmaxrpm" -#: src/emc/usr_intf/pncconf/pncconf.glade:67123 -#: emc/usr_intf/pncconf/pncconf.glade:67123 -#: src/emc/usr_intf/pncconf/pncconf.glade:74126 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Motion Data" msgstr "Données mouvement" -#: src/emc/usr_intf/pncconf/pncconf.glade:67151 -#: emc/usr_intf/pncconf/pncconf.glade:67151 -#: src/emc/usr_intf/pncconf/pncconf.glade:74154 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "gtk-cancel" msgstr "gtk-cancel" -#: src/emc/task/emctaskmain.cc:427 src/emc/task/emctaskmain.cc:460 -#: src/emc/task/emctaskmain.cc:467 src/emc/task/emctaskmain.cc:500 -#: emc/task/emctaskmain.cc:427 emc/task/emctaskmain.cc:460 -#, c-format -msgid "%s exceeds +X limit" -msgstr "%s limite +X dépassée" - -#: src/emc/task/emctaskmain.cc:432 src/emc/task/emctaskmain.cc:465 -#: src/emc/task/emctaskmain.cc:472 src/emc/task/emctaskmain.cc:505 -#: emc/task/emctaskmain.cc:432 emc/task/emctaskmain.cc:465 -#, c-format -msgid "%s exceeds +Y limit" -msgstr "%s limite +Y dépassée" - -#: src/emc/task/emctaskmain.cc:437 src/emc/task/emctaskmain.cc:470 -#: src/emc/task/emctaskmain.cc:477 src/emc/task/emctaskmain.cc:510 -#: emc/task/emctaskmain.cc:437 emc/task/emctaskmain.cc:470 -#, c-format -msgid "%s exceeds +Z limit" -msgstr "%s limite +Z dépassée" - -#: src/emc/task/emctaskmain.cc:442 src/emc/task/emctaskmain.cc:475 -#: src/emc/task/emctaskmain.cc:482 src/emc/task/emctaskmain.cc:515 -#: emc/task/emctaskmain.cc:442 emc/task/emctaskmain.cc:475 -#, c-format -msgid "%s exceeds -X limit" -msgstr "%s limite -X dépassée" - -#: src/emc/task/emctaskmain.cc:447 src/emc/task/emctaskmain.cc:480 -#: src/emc/task/emctaskmain.cc:487 src/emc/task/emctaskmain.cc:520 -#: emc/task/emctaskmain.cc:447 emc/task/emctaskmain.cc:480 -#, c-format -msgid "%s exceeds -Y limit" -msgstr "%s limite -Y dépassée" +#: src/emc/usr_intf/gscreen/gscreen.py:349 +#, python-format +msgid "adding import dir %s" +msgstr "" -#: src/emc/task/emctaskmain.cc:452 src/emc/task/emctaskmain.cc:485 -#: src/emc/task/emctaskmain.cc:492 src/emc/task/emctaskmain.cc:525 -#: emc/task/emctaskmain.cc:452 emc/task/emctaskmain.cc:485 -#, c-format -msgid "%s exceeds -Z limit" -msgstr "%s limite -Z dépassée" +#: src/emc/usr_intf/gscreen/gscreen.py:355 +#, python-format +msgid "module '%s' imported OK" +msgstr "" -#: src/emc/task/emctaskmain.cc:810 src/emc/task/emctaskmain.cc:853 -#: emc/task/emctaskmain.cc:810 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.py:452 +#, python-format msgid "" -"command (%s) cannot be executed until the machine is out of E-stop and " -"turned on" +"\n" +"**** GSCREEN INFO: Using CUSTOM glade file from %s ****" msgstr "" -"La commande (%s) ne peut être exécutée tant que la machine n'est pas sortie " -"de l'arrêt d'urgence et mise en marche" - -#: src/emc/task/emctaskmain.cc:930 src/emc/task/emctaskmain.cc:973 -#: emc/task/emctaskmain.cc:930 -#, c-format -msgid "can't do that (%s) in manual mode" -msgstr "Commande (%s) impossible en mode manuel" - -#: src/emc/task/emctaskmain.cc:1027 src/emc/task/emctaskmain.cc:1072 -#: emc/task/emctaskmain.cc:1027 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter idle" -msgstr "(%s) impossible en mode auto avec l'interpréteur en charge" - -#: src/emc/task/emctaskmain.cc:1087 src/emc/task/emctaskmain.cc:1132 -#: emc/task/emctaskmain.cc:1087 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter reading" -msgstr "(%s) impossible en mode auto avec l'interpréteur en lecture" - -#: src/emc/task/emctaskmain.cc:1169 src/emc/task/emctaskmain.cc:1216 -#: emc/task/emctaskmain.cc:1169 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter paused" -msgstr "(%s) impossible en mode auto avec l'interpréteur en pause" - -#: src/emc/task/emctaskmain.cc:1231 src/emc/task/emctaskmain.cc:1278 -#: emc/task/emctaskmain.cc:1231 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter waiting" -msgstr "(%s) impossible en mode auto avec l'interpréteur en attente" - -#: src/emc/task/emctaskmain.cc:1321 src/emc/task/emctaskmain.cc:1370 -#: emc/task/emctaskmain.cc:1321 -#, c-format -msgid "can't do that (%s) in MDI mode" -msgstr "Commande (%s) impossible en mode MDI" - -#: src/emc/task/emctaskmain.cc:1943 src/emc/task/emctaskmain.cc:2015 -#: emc/task/emctaskmain.cc:1943 -msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" -msgstr "Impossible de quitter le mode AUTO si l'interpréteur est en charge" - -#: src/emc/task/emctaskmain.cc:2012 src/emc/task/emctaskmain.cc:2084 -#: emc/task/emctaskmain.cc:2012 -msgid "Can't issue MDI command when not homed" -msgstr "Pas de commande MDI avant la prise d'origine machine" -#: src/emc/task/emctaskmain.cc:2017 src/emc/task/emctaskmain.cc:2089 -#: emc/task/emctaskmain.cc:2017 -msgid "Must be in MDI mode to issue MDI command" -msgstr "Pas de commande MDI hors du mode MDI" - -#: src/emc/task/emctaskmain.cc:2078 src/emc/task/emctaskmain.cc:2151 -#: emc/task/emctaskmain.cc:2078 -msgid "Can't run a program when not homed" -msgstr "Pas de départ cycle avant la prise d'origine machine" - -#: src/emc/rs274ngc/interp_arc.cc:108 src/emc/rs274ngc/rs274ngc_return.hh:160 -#: emc/rs274ngc/interp_arc.cc:108 emc/rs274ngc/rs274ngc_return.hh:160 -msgid "Zero radius arc" -msgstr "Arc de rayon zero" - -#: src/emc/rs274ngc/interp_arc.cc:112 src/emc/rs274ngc/interp_arc.cc:279 -#: emc/rs274ngc/interp_arc.cc:112 emc/rs274ngc/interp_arc.cc:279 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.py:457 +#, python-format msgid "" -"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " -"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " -"rel_err=%.4f%%" +"\n" +"**** GSCREEN INFO: Using SKIN glade file from %s ****" msgstr "" -"Le rayon à la fin de l'arc diffère de celui du début: début=(%c%.4f,%c%.4f) " -"centre=(%c%.4f,%c%.4f) fin=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " -"rel_err=%.4f%%" - -#: src/emc/rs274ngc/interp_check.cc:89 src/emc/rs274ngc/interp_check.cc:90 -#: emc/rs274ngc/interp_check.cc:89 -msgid "G4 not allowed with G2 or G3 because they both use P" -msgstr "G4 non autorisé avec G2 ou G3 qui utilisent tous les deux P" - -#: src/emc/rs274ngc/interp_check.cc:92 src/emc/rs274ngc/interp_check.cc:93 -#: emc/rs274ngc/interp_check.cc:92 -msgid "Line with G10 does not have L1, L10, L11, L2, or L20" -msgstr "Ligne avec G10 qui n'a pas de L1, L10, L11, L2 ou L20" -#: src/emc/rs274ngc/interp_check.cc:93 src/emc/rs274ngc/interp_check.cc:94 -#: emc/rs274ngc/interp_check.cc:93 -msgid "P value not an integer with G10" -msgstr "La valeur de P n'est pas un entier avec G10" - -#: src/emc/rs274ngc/interp_check.cc:94 src/emc/rs274ngc/interp_check.cc:95 -#: emc/rs274ngc/interp_check.cc:94 -msgid "P value out of range (0-9) with G10 L2 or L20" -msgstr "Valeur de P hors d'échelle (0-9) avec G10 L2 ou L20" +#: src/emc/usr_intf/gscreen/gscreen.py:460 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: using STOCK glade file from: %s ****" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:95 src/emc/rs274ngc/interp_check.cc:96 -#: emc/rs274ngc/interp_check.cc:95 -msgid "P value out of range with G10 L1 or G10 L10" -msgstr "Valeur de P hors d'échelle avec G10 L1 ou G10 L10" +#: src/emc/usr_intf/gscreen/gscreen.py:466 +#, python-format +msgid "**** Gscreen GLADE ERROR: With main screen xml file: %s" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:99 src/emc/rs274ngc/interp_check.cc:100 -#: emc/rs274ngc/interp_check.cc:99 -msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." +#: src/emc/usr_intf/gscreen/gscreen.py:471 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Screen 2 -Using CUSTOM glade file from %s ****" msgstr "" -"Entre les codes G5.2 et G5.3, seul le code additionnel G5.2 est autorisé." -#: src/emc/rs274ngc/interp_check.cc:248 src/emc/rs274ngc/interp_check.cc:258 -#: emc/rs274ngc/interp_check.cc:248 -msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" -msgstr "Mot D sans G41, G41.1, G42, G42.1 ou G96 l'utilisant" +#: src/emc/usr_intf/gscreen/gscreen.py:477 +#, python-format +msgid "**** Gscreen GLADE ERROR: With screen 2's xml file: %s" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:254 src/emc/rs274ngc/interp_check.cc:264 -#: emc/rs274ngc/interp_check.cc:254 -msgid "E word with no G76, M66, M67 or M68 to use it" -msgstr "Mot E sans G76, M66, M67 ou M68 l'utilisant" +#: src/emc/usr_intf/gscreen/gscreen.py:479 +msgid "" +"\n" +"**** GSCREEN INFO: No Screen 2 glade file present" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:259 src/emc/rs274ngc/interp_check.cc:269 -#: emc/rs274ngc/interp_check.cc:259 -msgid "H word with no G43 or G76 to use it" -msgstr "Mot H sans G43 ou G76 l'utilisant" +#: src/emc/usr_intf/gscreen/gscreen.py:519 +msgid "No UNITS entry found in [TRAJ] or [AXIS_0] of INI file" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:265 src/emc/rs274ngc/interp_check.cc:275 -#: emc/rs274ngc/interp_check.cc:265 -msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" -msgstr "Mot I sans G2, G3, G5, G5.1, G10, G76 ou G87 l'utilisant" +#: src/emc/usr_intf/gscreen/gscreen.py:532 +msgid "" +"*** Gscreen ERROR: Asking for a HAL component using a name that already " +"exists." +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:271 src/emc/rs274ngc/interp_check.cc:281 -#: emc/rs274ngc/interp_check.cc:271 -msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" -msgstr "Mot J sans G2, G3, G5, G5.1, G10, G76 ou G87 l'utilisant" +#: src/emc/usr_intf/gscreen/gscreen.py:585 +msgid "No default jog increments entry found in [DISPLAY] of INI file" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:277 src/emc/rs274ngc/interp_check.cc:287 -#: emc/rs274ngc/interp_check.cc:277 -msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" -msgstr "Mot K sans G2, G3, G33, G33.1, G76 ou G87 l'utilisant" +#: src/emc/usr_intf/gscreen/gscreen.py:598 +msgid "No default angular jog increments entry found in [DISPLAY] of INI file" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:287 src/emc/rs274ngc/interp_check.cc:297 -#: emc/rs274ngc/interp_check.cc:287 +#: src/emc/usr_intf/gscreen/gscreen.py:607 +#, python-format msgid "" -"L word with no G10, cutter compensation, canned cycle, digital/analog input, " -"or NURBS code" +"No DEFAULT_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" msgstr "" -"Mot L sans G10, ni code de compensation d'outil, cycle préprogrammé, entrée " -"digitale/analogique ou NURBS" -#: src/emc/rs274ngc/interp_check.cc:299 src/emc/rs274ngc/interp_check.cc:309 -#: emc/rs274ngc/interp_check.cc:299 +#: src/emc/usr_intf/gscreen/gscreen.py:618 +#, python-format msgid "" -"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " -"M53 M62 M63 M64 M65 M66 or user M code to use it" +"No MAX_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" msgstr "" -"Mot P sans G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 ou M50 M51 M52 M53 " -"M62 M63 M64 M65 M66 ni code M utilisateur l'utilisant" -#: src/emc/rs274ngc/interp_check.cc:302 emc/rs274ngc/interp_check.cc:302 -msgid "P value not an integer with G2 or G3" -msgstr "La valeur de P avec G2 ou G3 n'est pas un entier " +#: src/emc/usr_intf/gscreen/gscreen.py:625 +msgid "No MAX_VELOCITY found in [TRAJ] of the INI file" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:304 src/emc/rs274ngc/interp_check.cc:318 -#: emc/rs274ngc/interp_check.cc:304 -msgid "P value should be 1 or greater with G2 or G3" -msgstr "Valeur de P doit être 1 ou plus avec G2 ou G3" +#: src/emc/usr_intf/gscreen/gscreen.py:638 +#, python-format +msgid "" +"No DEFAULT_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:311 emc/rs274ngc/interp_check.cc:311 +#: src/emc/usr_intf/gscreen/gscreen.py:649 +#, python-format msgid "" -"Q word with no G5, G10, G64, G73, G76, G83, M66, M67, M68 or user M code " -"that uses it" +"No MAX_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" msgstr "" -"Mot Q sans G5, G10, G64, G73, G76, G83, M66, M67, M68 ou code M utilisateur " -"l'utilisant" -#: src/emc/rs274ngc/interp_convert.cc:138 emc/rs274ngc/interp_convert.cc:138 -msgid "You must specify both X and Y coordinates for Control Points" +#: src/emc/usr_intf/gscreen/gscreen.py:657 +msgid "No MAX_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -"Vous devez spécifier les coordonnées X et Y pour les points de contrôle" -#: src/emc/rs274ngc/interp_convert.cc:141 emc/rs274ngc/interp_convert.cc:141 -msgid "Can specify P without X and Y only for the first control point" +#: src/emc/usr_intf/gscreen/gscreen.py:663 +msgid "No MIN_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -"Possibilité de spécifier P sans X et Y, seulement pour le premier point de " -"contrôle" -#: src/emc/rs274ngc/interp_convert.cc:144 emc/rs274ngc/interp_convert.cc:144 -msgid "Must specify positive weight P for every Control Point" -msgstr "Un poids P positif doit être spécifié pour chaque point de contrôle" +#: src/emc/usr_intf/gscreen/gscreen.py:669 +msgid "No MAX_FEED_OVERRIDE entry found in [DISPLAY] of INI file" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:147 emc/rs274ngc/interp_convert.cc:147 -msgid "Cannot make a NURBS with 0 feedrate" -msgstr "Impossible de faire un NURBS avec une vitesse nulle" +#: src/emc/usr_intf/gscreen/gscreen.py:674 +msgid "This screen will be orientated for Lathe options" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:182 emc/rs274ngc/interp_convert.cc:182 -msgid "Cannot use G5.3 without G5.2 first" -msgstr "Impossible d'utiliser G5.3 sans G5.2 en premier" +#: src/emc/usr_intf/gscreen/gscreen.py:727 +msgid "CYCLE_TIME in [DISPLAY] of INI file is missing: defaulting to 100ms" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:183 emc/rs274ngc/interp_convert.cc:183 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.py:730 +msgid "CYCLE_TIME in [DISPLAY] of INI file is too small: defaulting to 100ms" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:732 +#, python-format +msgid "timeout %d" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1001 msgid "" -"You must specify a number of control points at least equal to the order L = %" -"d" +"**** WARNING GSCREEN: could not understand the window geometry info in " +"hidden preference file" msgstr "" -"Vous devez spécifier un nombre de points de contrôle au moins égal à l'ordre " -"L = %d" -#: src/emc/rs274ngc/interp_convert.cc:212 emc/rs274ngc/interp_convert.cc:212 -msgid "Cannot convert spline with cutter radius compensation" +#: src/emc/usr_intf/gscreen/gscreen.py:1089 +msgid "Control powered up and initialized" msgstr "" -"Impossible de convertir une spline avec la compensation de rayon d'outil" -#: src/emc/rs274ngc/interp_convert.cc:222 emc/rs274ngc/interp_convert.cc:222 -msgid "Splines must be in the XY plane" -msgstr "Les splines doivent être dans le plan XY" +#: src/emc/usr_intf/gscreen/gscreen.py:1264 +msgid "Cycle start pressed in AUTO mode" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:227 emc/rs274ngc/interp_convert.cc:227 -msgid "Splines may not have motion in Z, A, B, or C" -msgstr "Splines may not have motion in Z, A, B, or C" +#: src/emc/usr_intf/gscreen/gscreen.py:1267 +#, fuzzy +msgid "Cycle start pressed in MDI mode" +msgstr "Commande (%s) impossible en mode MDI" -#: src/emc/rs274ngc/interp_convert.cc:231 emc/rs274ngc/interp_convert.cc:231 -msgid "Must specify both I and J with G5.1" -msgstr "I et J doivent être spécifiés tous les deux avec G5.1" +#: src/emc/usr_intf/gscreen/gscreen.py:1290 +#, python-format +msgid "Please change to tool # %s, then click OK." +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1291 +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +#: src/emc/usr_intf/gscreen/gscreen.py:1789 +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2849 +msgid "INFO:" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +msgid "Can't start spindle manually while MDI busy" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +#, fuzzy +msgid "can't start spindle manually in Auto mode" +msgstr "Commande (%s) impossible en mode manuel" -#: src/emc/rs274ngc/interp_convert.cc:250 emc/rs274ngc/interp_convert.cc:250 -msgid "Must specify both I and J, or neither" -msgstr "I et J doivent être spécifiés tous les deux, ou aucun" +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +msgid "No direction selected for spindle" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:261 emc/rs274ngc/interp_convert.cc:261 -msgid "Must specify both P and Q with G5" -msgstr "P et Q doivent être spécifiés tous les deux avec G5" +#: src/emc/usr_intf/gscreen/gscreen.py:1331 +#: src/emc/usr_intf/gscreen/gscreen.py:1333 +#, fuzzy +msgid "Spindle Speed Preset Entry" +msgstr "Indicateur de vitesse de broche" -#: src/emc/rs274ngc/interp_convert.cc:362 emc/rs274ngc/interp_convert.cc:362 -msgid "" -"The move just after exiting cutter compensation mode must be straight, not " -"an arc" +#: src/emc/usr_intf/gscreen/gscreen.py:1362 +#: src/emc/usr_intf/gscreen/gscreen.py:1367 +#, fuzzy +msgid "Manual Tool Index Entry" +msgstr "Changement d'outil manuel d'AXIS" + +#: src/emc/usr_intf/gscreen/gscreen.py:1489 +msgid "Entry dialog" msgstr "" -"Le premier mouvement après l'arrêt de la compensation de rayon d'outil doit " -"être une droite, pas un arc" -#: src/emc/rs274ngc/interp_convert.cc:370 emc/rs274ngc/interp_convert.cc:370 -msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" -msgstr "Un arc est impossible dans les plans G17.1, G18.1 ou G19.1" +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +#, fuzzy +msgid "Classicladder realtime component not detected" +msgstr "Composant temps réel non chargé" -#: src/emc/rs274ngc/interp_convert.cc:382 -#: src/emc/rs274ngc/interp_convert.cc:3909 -#: src/emc/rs274ngc/interp_convert.cc:4266 emc/rs274ngc/interp_convert.cc:382 -#: emc/rs274ngc/interp_convert.cc:3912 src/emc/rs274ngc/interp_convert.cc:3911 -msgid "Cannot feed with zero spindle speed in feed per rev mode" +#: src/emc/usr_intf/gscreen/gscreen.py:1617 +msgid "ladder not available - is the realtime component loaded?" msgstr "" -"Mouvement impossible en mode longueur par tour avec une vitesse de broche à " -"zéro" -#: src/emc/rs274ngc/interp_convert.cc:393 -#: src/emc/rs274ngc/interp_convert.cc:399 -#: src/emc/rs274ngc/interp_convert.cc:408 -#: src/emc/rs274ngc/interp_convert.cc:414 -#: src/emc/rs274ngc/interp_convert.cc:423 -#: src/emc/rs274ngc/interp_convert.cc:429 emc/rs274ngc/interp_convert.cc:393 -#: emc/rs274ngc/interp_convert.cc:399 emc/rs274ngc/interp_convert.cc:408 -#: emc/rs274ngc/interp_convert.cc:414 emc/rs274ngc/interp_convert.cc:423 -#: emc/rs274ngc/interp_convert.cc:429 -#, c-format -msgid "%c word missing in absolute center arc" -msgstr "Mot %c manquant en centre d'arc absolu" +#: src/emc/usr_intf/gscreen/gscreen.py:1691 +#, fuzzy +msgid "Override Entry" +msgstr "Contrôle correcteur par manivelle" -#: src/emc/rs274ngc/interp_convert.cc:649 emc/rs274ngc/interp_convert.cc:649 -msgid "" -"Radius of cutter compensation entry arc is not greater than the tool radius" +#: src/emc/usr_intf/gscreen/gscreen.py:1719 +#, fuzzy +msgid "Machine powered on" +msgstr "Machine en marche" + +#: src/emc/usr_intf/gscreen/gscreen.py:1724 +#, fuzzy +msgid "Machine Estopped!" +msgstr "Position machine" + +#: src/emc/usr_intf/gscreen/gscreen.py:1727 +#, fuzzy +msgid "Calculator" msgstr "" -"L'arc d'entrée de compensation de rayon d'outil est plus petit que le rayon " -"de l'outil" +"Calculer\n" +"l'échelle" -#: src/emc/rs274ngc/interp_convert.cc:868 -#: src/emc/rs274ngc/interp_convert.cc:878 src/emc/rs274ngc/interp_queue.cc:541 -#: src/emc/rs274ngc/interp_queue.cc:592 emc/rs274ngc/interp_convert.cc:868 -#: emc/rs274ngc/interp_convert.cc:878 emc/rs274ngc/interp_queue.cc:541 -msgid "" -"Arc move in concave corner cannot be reached by the tool without gouging" +#: src/emc/usr_intf/gscreen/gscreen.py:1857 +#, python-format +msgid "Axes %s are homed" msgstr "" -"Le mouvement en arc dans l'angle intérieur ne peut pas s'achever sans que " -"l'outil n'interfère avec la pièce" -#: src/emc/rs274ngc/interp_convert.cc:904 emc/rs274ngc/interp_convert.cc:904 -msgid "Arc to arc motion is invalid because the arcs have the same center" -msgstr "Mouvement d'arc en arc impossible, les deux arcs ayant le même centre" +#: src/emc/usr_intf/gscreen/gscreen.py:1864 +msgid "All the axes have been homed" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:907 emc/rs274ngc/interp_convert.cc:907 -msgid "" -"Arc to arc motion makes a corner the compensated tool can't fit in without " -"gouging" +#: src/emc/usr_intf/gscreen/gscreen.py:1874 +#, python-format +msgid "There are unhomed axes: %s" msgstr "" -"Mouvement d'arc en arc, pour initier la compensation d'outil, ne pouvant pas " -"être suivi sans interférer avec la pièce" -#: src/emc/rs274ngc/interp_convert.cc:1036 -#: src/emc/rs274ngc/interp_convert.cc:1037 -#: src/emc/rs274ngc/interp_convert.cc:1038 -#: src/emc/rs274ngc/interp_convert.cc:3376 -#: src/emc/rs274ngc/interp_convert.cc:3379 -#: src/emc/rs274ngc/interp_convert.cc:3382 src/emc/rs274ngc/interp_find.cc:97 -#: src/emc/rs274ngc/interp_convert.cc:3733 -#: src/emc/rs274ngc/interp_convert.cc:3736 -#: src/emc/rs274ngc/interp_convert.cc:3739 emc/rs274ngc/interp_convert.cc:1036 -#: emc/rs274ngc/interp_convert.cc:1037 emc/rs274ngc/interp_convert.cc:1038 -#: emc/rs274ngc/interp_convert.cc:3379 emc/rs274ngc/interp_convert.cc:3382 -#: emc/rs274ngc/interp_convert.cc:3385 emc/rs274ngc/interp_find.cc:97 -#, c-format -msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" -msgstr "Position absolue %5.2f invalide pour l'axe rotatif wrapped %c" +#: src/emc/usr_intf/gscreen/gscreen.py:1879 +#, fuzzy, python-format +msgid "Program loaded: %s" +msgstr "Le fichier programme est %s" -#: src/emc/rs274ngc/interp_convert.cc:1466 -#: src/emc/rs274ngc/interp_convert.cc:1494 emc/rs274ngc/interp_convert.cc:1466 -#: src/emc/rs274ngc/interp_convert.cc:1465 -msgid "Cannot change control mode with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.py:1977 +#, fuzzy +msgid "Manual Spindle Control" +msgstr "Arrêt de broche manuel" + +#: src/emc/usr_intf/gscreen/gscreen.py:2034 +msgid "Keyboard" msgstr "" -"Changement de mode de contrôle impossible avec la compensation de rayon " -"d'outil activée" -#: src/emc/rs274ngc/interp_convert.cc:1579 -#: src/emc/rs274ngc/interp_convert.cc:1607 emc/rs274ngc/interp_convert.cc:1579 -#: src/emc/rs274ngc/interp_convert.cc:1578 -msgid "Cannot change coordinate systems with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.py:2067 +msgid "Error with launching 'Onboard' on-screen keyboard program" msgstr "" -"Changement de système de coordonnées impossible avec la compensation de " -"rayon d'outil activée" -#: src/emc/rs274ngc/interp_convert.cc:1823 -#: src/emc/rs274ngc/interp_convert.cc:1851 emc/rs274ngc/interp_convert.cc:1823 -#: src/emc/rs274ngc/interp_convert.cc:1822 -#, c-format -msgid "G%d.1 with no D word" -msgstr "G%d.1 sans mot D" +#: src/emc/usr_intf/gscreen/gscreen.py:2215 +#, python-format +msgid "**** GSCREEN INFO: Overriding internal signal call to %s" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1826 -#: src/emc/rs274ngc/interp_convert.cc:1854 emc/rs274ngc/interp_convert.cc:1826 -#: src/emc/rs274ngc/interp_convert.cc:1825 -#, c-format -msgid "G%d.1 with L word, but plane is not G18" -msgstr "G%d.1 avec mot L, mais le plan n'est pas G18" +#: src/emc/usr_intf/gscreen/gscreen.py:2643 +#, fuzzy +msgid " Zero Origin" +msgstr "Original" -#: src/emc/rs274ngc/interp_convert.cc:1837 -#: src/emc/rs274ngc/interp_convert.cc:1865 emc/rs274ngc/interp_convert.cc:1837 -#: src/emc/rs274ngc/interp_convert.cc:1836 -#, c-format -msgid "G%d requires D word to be a whole number" -msgstr "G%d exige que le mot D soit un nombre entier" +#: src/emc/usr_intf/gscreen/gscreen.py:2644 +#, fuzzy +msgid "Offset Origin" +msgstr "Informations offset" -#: src/emc/rs274ngc/interp_convert.cc:1844 -#: src/emc/rs274ngc/interp_convert.cc:1872 emc/rs274ngc/interp_convert.cc:1844 -#: src/emc/rs274ngc/interp_convert.cc:1843 -#, c-format -msgid "G%d with lathe tool, but plane is not G18" -msgstr "G%d avec outil de tour, mais le plan n'est pas G18" +#: src/emc/usr_intf/gscreen/gscreen.py:2659 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing text or type) " +"in INI File [DISPLAY] section" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2228 -#: src/emc/rs274ngc/interp_convert.cc:2271 emc/rs274ngc/interp_convert.cc:2228 -#: src/emc/rs274ngc/interp_convert.cc:2227 -msgid "Cannot set reference point with cutter compensation in effect" +#: src/emc/usr_intf/gscreen/gscreen.py:2661 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing pinname) in " +"INI File [DISPLAY] section" msgstr "" -"Réglage de point de référence impossible avec la compensation d'outil activée" -#: src/emc/rs274ngc/interp_convert.cc:2628 -#: src/emc/rs274ngc/interp_convert.cc:2885 emc/rs274ngc/interp_convert.cc:2631 -#: src/emc/rs274ngc/interp_convert.cc:2627 -msgid "Cannot set motion output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.py:2663 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing boldtext) in " +"INI File [DISPLAY] section" msgstr "" -"Réglage de sortie mouvement impossible avec la compensation de rayon d'outil " -"activée" -#: src/emc/rs274ngc/interp_convert.cc:2629 -#: src/emc/rs274ngc/interp_convert.cc:2886 emc/rs274ngc/interp_convert.cc:2632 -#: src/emc/rs274ngc/interp_convert.cc:2628 -msgid "No valid P word with M62" -msgstr "Pas de mot P valide avec M62" +#: src/emc/usr_intf/gscreen/gscreen.py:2667 +#, python-format +msgid "" +"**** Gscreen ERROR: invalid message type (%s)in INI File [DISPLAY] section" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2633 -#: src/emc/rs274ngc/interp_convert.cc:2890 emc/rs274ngc/interp_convert.cc:2636 -#: src/emc/rs274ngc/interp_convert.cc:2632 -msgid "Cannot set motion digital output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.py:2699 +msgid "Dialog error - Is the dialog handler missing from the handler file?" msgstr "" -"Réglage de sortie numérique impossible avec la compensation de rayon d'outil " -"activée" -#: src/emc/rs274ngc/interp_convert.cc:2634 -#: src/emc/rs274ngc/interp_convert.cc:2891 emc/rs274ngc/interp_convert.cc:2637 -#: src/emc/rs274ngc/interp_convert.cc:2633 -msgid "No valid P word with M63" -msgstr "Pas de mot P valide avec M63" +#: src/emc/usr_intf/gscreen/gscreen.py:2701 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3540 +#, fuzzy +msgid "Manual Toolchange" +msgstr "Changement d'outil manuel d'AXIS" -#: src/emc/rs274ngc/interp_convert.cc:2638 -#: src/emc/rs274ngc/interp_convert.cc:2643 -#: src/emc/rs274ngc/interp_convert.cc:2895 -#: src/emc/rs274ngc/interp_convert.cc:2900 emc/rs274ngc/interp_convert.cc:2641 -#: emc/rs274ngc/interp_convert.cc:2646 src/emc/rs274ngc/interp_convert.cc:2637 -#: src/emc/rs274ngc/interp_convert.cc:2642 -msgid "Cannot set auxiliary digital output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.py:2703 +#: src/emc/usr_intf/gmoccapy/dialogs.py:94 +#: src/emc/usr_intf/gmoccapy/dialogs.py:107 +#: src/emc/usr_intf/gmoccapy/dialogs.py:119 +msgid "Operator Message" msgstr "" -"Réglage de sortie numérique auxiliaire impossible avec la compensation de " -"rayon d'outil activée" -#: src/emc/rs274ngc/interp_convert.cc:2639 -#: src/emc/rs274ngc/interp_convert.cc:2896 emc/rs274ngc/interp_convert.cc:2642 -#: src/emc/rs274ngc/interp_convert.cc:2638 -msgid "No valid P word with M64" -msgstr "Pas de mot P valide avec M64" +#: src/emc/usr_intf/gscreen/gscreen.py:2737 +#: src/emc/usr_intf/gscreen/gscreen.py:2741 +#: src/emc/usr_intf/gmoccapy/dialogs.py:155 +#: src/emc/usr_intf/gmoccapy/dialogs.py:159 +#, fuzzy +msgid "Restart Entry" +msgstr "Reprise" -#: src/emc/rs274ngc/interp_convert.cc:2644 -#: src/emc/rs274ngc/interp_convert.cc:2901 emc/rs274ngc/interp_convert.cc:2647 -#: src/emc/rs274ngc/interp_convert.cc:2643 -msgid "No valid P word with M65" -msgstr "Pas de mot P valide avec M65" +#: src/emc/usr_intf/gscreen/gscreen.py:2752 +#: src/emc/usr_intf/gmoccapy/dialogs.py:173 +msgid "Enter" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2673 -#: src/emc/rs274ngc/interp_convert.cc:2931 emc/rs274ngc/interp_convert.cc:2676 -#: src/emc/rs274ngc/interp_convert.cc:2672 -msgid "invalid P-word with M66" -msgstr "Mot P valide avec M66" +#: src/emc/usr_intf/gscreen/gscreen.py:2774 +#, python-format +msgid "Ready to Restart program from line %d" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2688 -#: src/emc/rs274ngc/interp_convert.cc:2946 emc/rs274ngc/interp_convert.cc:2691 -#: src/emc/rs274ngc/interp_convert.cc:2687 -msgid "Cannot wait for digital input with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.py:2807 +#, fuzzy +msgid "Invalid embeded tab configuration" +msgstr "Créer une nouvelle configuration" + +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +msgid "Can't jog multiple axis" msgstr "" -"Attente d'une entrée numérique impossible avec la compensation de rayon " -"d'outil activée" -#: src/emc/rs274ngc/interp_convert.cc:2700 -#: src/emc/rs274ngc/interp_convert.cc:2958 emc/rs274ngc/interp_convert.cc:2703 -#: src/emc/rs274ngc/interp_convert.cc:2699 -msgid "Cannot wait for analog input with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +#, fuzzy +msgid "No axis selected to jog" +msgstr "Entrée B sélection d'axe" + +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +#, fuzzy +msgid "No axis selected to move" +msgstr "Entrée B sélection d'axe" + +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +msgid "Can't home multiple axis - select HOME ALL instead" msgstr "" -"Attente d'une entrée analogique impossible avec la compensation de rayon " -"d'outil activée" -#: src/emc/rs274ngc/interp_convert.cc:2714 -#: src/emc/rs274ngc/interp_convert.cc:2973 emc/rs274ngc/interp_convert.cc:2717 -#: src/emc/rs274ngc/interp_convert.cc:2713 -msgid "Cannot set motion analog output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +#, fuzzy +msgid "No axis selected to home" +msgstr "Entrée B sélection d'axe" + +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +msgid "Can't unhome multiple axis" msgstr "" -"Réglage de sortie analogique impossible avec la compensation de rayon " -"d'outil activée" -#: src/emc/rs274ngc/interp_convert.cc:2715 -#: src/emc/rs274ngc/interp_convert.cc:2974 emc/rs274ngc/interp_convert.cc:2718 -#: src/emc/rs274ngc/interp_convert.cc:2714 -msgid "Invalid analog index with M67" -msgstr "Index analogique invalide avec M67" +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +msgid "No axis selected to unhome" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2721 -#: src/emc/rs274ngc/interp_convert.cc:2980 emc/rs274ngc/interp_convert.cc:2724 -#: src/emc/rs274ngc/interp_convert.cc:2720 -msgid "Cannot set auxiliary analog output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +msgid "No axis selected for origin zeroing" msgstr "" -"Réglage de sortie analogique auxiliaire impossible avec la compensation de " -"rayon d'outil activée" -#: src/emc/rs274ngc/interp_convert.cc:2722 -#: src/emc/rs274ngc/interp_convert.cc:2981 emc/rs274ngc/interp_convert.cc:2725 -#: src/emc/rs274ngc/interp_convert.cc:2721 -msgid "Invalid analog index with M68" -msgstr "Index analogique invalide avec M68" +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +msgid "No axis selected for origin touch-off" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2733 emc/rs274ngc/interp_convert.cc:2736 -#: src/emc/rs274ngc/interp_convert.cc:2732 -msgid "Need positive Q-word to specify tool number with M61" -msgstr "Avec M61, un mot Q positif doit spécifier le numéro de l'outil" +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +msgid "Can't tool touch-off multiple axes" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2806 -#: src/emc/rs274ngc/interp_convert.cc:2823 -#: src/emc/rs274ngc/interp_convert.cc:2837 -#: src/emc/rs274ngc/interp_convert.cc:2851 -#: src/emc/rs274ngc/interp_convert.cc:2865 -#: src/emc/rs274ngc/interp_convert.cc:3156 -#: src/emc/rs274ngc/interp_convert.cc:3173 -#: src/emc/rs274ngc/interp_convert.cc:3188 -#: src/emc/rs274ngc/interp_convert.cc:3202 -#: src/emc/rs274ngc/interp_convert.cc:3216 emc/rs274ngc/interp_convert.cc:2809 -#: emc/rs274ngc/interp_convert.cc:2826 emc/rs274ngc/interp_convert.cc:2840 -#: emc/rs274ngc/interp_convert.cc:2854 emc/rs274ngc/interp_convert.cc:2868 -#: src/emc/rs274ngc/interp_convert.cc:2805 -#: src/emc/rs274ngc/interp_convert.cc:2822 -#: src/emc/rs274ngc/interp_convert.cc:2836 -#: src/emc/rs274ngc/interp_convert.cc:2850 -#: src/emc/rs274ngc/interp_convert.cc:2864 -msgid "Cannot enable overrides with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +msgid "No axis selected for tool touch-off" msgstr "" -"Activation des correcteurs impossible avec la compensation de rayon d'outil" -#: src/emc/rs274ngc/interp_convert.cc:2813 -#: src/emc/rs274ngc/interp_convert.cc:2828 -#: src/emc/rs274ngc/interp_convert.cc:2842 -#: src/emc/rs274ngc/interp_convert.cc:2856 -#: src/emc/rs274ngc/interp_convert.cc:2870 -#: src/emc/rs274ngc/interp_convert.cc:3163 -#: src/emc/rs274ngc/interp_convert.cc:3178 -#: src/emc/rs274ngc/interp_convert.cc:3193 -#: src/emc/rs274ngc/interp_convert.cc:3207 -#: src/emc/rs274ngc/interp_convert.cc:3221 emc/rs274ngc/interp_convert.cc:2816 -#: emc/rs274ngc/interp_convert.cc:2831 emc/rs274ngc/interp_convert.cc:2845 -#: emc/rs274ngc/interp_convert.cc:2859 emc/rs274ngc/interp_convert.cc:2873 -#: src/emc/rs274ngc/interp_convert.cc:2812 -#: src/emc/rs274ngc/interp_convert.cc:2827 -#: src/emc/rs274ngc/interp_convert.cc:2841 -#: src/emc/rs274ngc/interp_convert.cc:2855 -#: src/emc/rs274ngc/interp_convert.cc:2869 -msgid "Cannot disable overrides with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#: src/emc/usr_intf/gscreen/gscreen.py:3375 +#, fuzzy +msgid "Error Message" +msgstr "Erreur d'enregistrement du fichier" + +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#, python-format +msgid "Tool editor error - is the %s editor available?" msgstr "" -"Désactivation des correcteurs impossible avec la compensation de rayon " -"d'outil" -#: src/emc/rs274ngc/interp_convert.cc:2970 -#: src/emc/rs274ngc/interp_convert.cc:2971 -#: src/emc/rs274ngc/interp_convert.cc:2972 -#: src/emc/rs274ngc/interp_convert.cc:3325 -#: src/emc/rs274ngc/interp_convert.cc:3326 -#: src/emc/rs274ngc/interp_convert.cc:3327 emc/rs274ngc/interp_convert.cc:2973 -#: emc/rs274ngc/interp_convert.cc:2974 emc/rs274ngc/interp_convert.cc:2975 -#: src/emc/rs274ngc/interp_convert.cc:2969 -#, c-format -msgid "Indexing axis %c can only be moved with G0" -msgstr "Indexing axis %c can only be moved with G0" +#: src/emc/usr_intf/gscreen/gscreen.py:3377 +#: src/emc/usr_intf/gscreen/gscreen.py:3379 +#, fuzzy +msgid "Message" +msgstr "Utilisation" -#: src/emc/rs274ngc/interp_convert.cc:2979 -#: src/emc/rs274ngc/interp_convert.cc:2981 -#: src/emc/rs274ngc/interp_convert.cc:2983 -#: src/emc/rs274ngc/interp_convert.cc:3334 -#: src/emc/rs274ngc/interp_convert.cc:3336 -#: src/emc/rs274ngc/interp_convert.cc:3338 emc/rs274ngc/interp_convert.cc:2982 -#: emc/rs274ngc/interp_convert.cc:2984 emc/rs274ngc/interp_convert.cc:2986 -#: src/emc/rs274ngc/interp_convert.cc:2978 -#: src/emc/rs274ngc/interp_convert.cc:2980 -#: src/emc/rs274ngc/interp_convert.cc:2982 -#, c-format -msgid "Indexing axis %c can only be moved alone" -msgstr "Indexing axis %c can only be moved alone" +#: src/emc/usr_intf/gscreen/gscreen.py:3409 +#, fuzzy, python-format +msgid "%d RPM" +msgstr "tr/mn maximaux" -#: src/emc/rs274ngc/interp_convert.cc:3076 -#: src/emc/rs274ngc/interp_convert.cc:3433 emc/rs274ngc/interp_convert.cc:3079 -#: src/emc/rs274ngc/interp_convert.cc:3075 -msgid "Cannot probe with feed per rev mode" -msgstr "Mesure impossible dans le mode vitesse en unités par tour" +#: src/emc/usr_intf/gscreen/gscreen.glade:48 +#: src/emc/usr_intf/gscreen/gscreen.glade:59 +#: src/emc/usr_intf/gscreen/gscreen.glade:135 +#: src/emc/usr_intf/gscreen/gscreen.glade:176 +#: src/emc/usr_intf/gscreen/gscreen.glade:187 +#: src/emc/usr_intf/gscreen/gscreen.glade:264 +#: src/emc/usr_intf/gscreen/gscreen.glade:306 +#: src/emc/usr_intf/gscreen/gscreen.glade:317 +#: src/emc/usr_intf/gscreen/gscreen.glade:393 +#: src/emc/usr_intf/gscreen/gscreen.glade:434 +#: src/emc/usr_intf/gscreen/gscreen.glade:445 +#: src/emc/usr_intf/gscreen/gscreen.glade:521 +#: src/emc/usr_intf/gscreen/gscreen.glade:562 +#: src/emc/usr_intf/gscreen/gscreen.glade:573 +#: src/emc/usr_intf/gscreen/gscreen.glade:649 +#: src/emc/usr_intf/gscreen/gscreen.glade:690 +#: src/emc/usr_intf/gscreen/gscreen.glade:701 +#: src/emc/usr_intf/gscreen/gscreen.glade:777 +#: src/emc/usr_intf/gscreen/gscreen.glade:818 +#: src/emc/usr_intf/gscreen/gscreen.glade:829 +#: src/emc/usr_intf/gscreen/gscreen.glade:905 +#: src/emc/usr_intf/gscreen/gscreen.glade:946 +#: src/emc/usr_intf/gscreen/gscreen.glade:957 +#: src/emc/usr_intf/gscreen/gscreen.glade:1033 +#: src/emc/usr_intf/gscreen/gscreen.glade:1074 +#: src/emc/usr_intf/gscreen/gscreen.glade:1085 +#: src/emc/usr_intf/gscreen/gscreen.glade:1161 +msgid "0000.0000" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:73 +#: src/emc/usr_intf/gscreen/gscreen.glade:201 +#: src/emc/usr_intf/gscreen/gscreen.glade:331 +#: src/emc/usr_intf/gscreen/gscreen.glade:459 +#: src/emc/usr_intf/gscreen/gscreen.glade:587 +#: src/emc/usr_intf/gscreen/gscreen.glade:715 +#: src/emc/usr_intf/gscreen/gscreen.glade:843 +#: src/emc/usr_intf/gscreen/gscreen.glade:971 +#: src/emc/usr_intf/gscreen/gscreen.glade:1099 +msgid "REL" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:99 +#: src/emc/usr_intf/gscreen/gscreen.glade:227 +#: src/emc/usr_intf/gscreen/gscreen.glade:357 +#: src/emc/usr_intf/gscreen/gscreen.glade:485 +#: src/emc/usr_intf/gscreen/gscreen.glade:613 +#: src/emc/usr_intf/gscreen/gscreen.glade:741 +#: src/emc/usr_intf/gscreen/gscreen.glade:869 +#: src/emc/usr_intf/gscreen/gscreen.glade:997 +#: src/emc/usr_intf/gscreen/gscreen.glade:1125 +msgid "ABS" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:630 +msgid "B" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:758 +#, fuzzy +msgid "C" +msgstr "Sens horaire" -#: src/emc/rs274ngc/interp_convert.cc:3124 -#: src/emc/rs274ngc/interp_convert.cc:3481 emc/rs274ngc/interp_convert.cc:3127 -#: src/emc/rs274ngc/interp_convert.cc:3123 -msgid "Cannot change retract mode with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:886 +#, fuzzy +msgid "U" +msgstr "Haut" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1014 +msgid "V" msgstr "" -"Changement de mode de retrait impossible avec la compensation de rayon " -"d'outil" -#: src/emc/rs274ngc/interp_convert.cc:3158 -#: src/emc/rs274ngc/interp_convert.cc:3515 emc/rs274ngc/interp_convert.cc:3161 -msgid "G10 L1 without offsets has no effect" -msgstr "G10 L1 sans offsets n'a aucun effet" +#: src/emc/usr_intf/gscreen/gscreen.glade:1298 +#, fuzzy +msgid "G code" +msgstr "Codeur X" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1392 +#, fuzzy +msgid "G Codes Active" +msgstr "Fichier chargé" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1451 +#, fuzzy +msgid "MV:100%" +msgstr "FO: 100%" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1470 +#, fuzzy +msgid " Mist" +msgstr "Gouttelettes" -#: src/emc/rs274ngc/interp_convert.cc:3264 -#: src/emc/rs274ngc/interp_convert.cc:3621 emc/rs274ngc/interp_convert.cc:3267 -msgid "Q number in G10 is not an integer" -msgstr "Le nombre Q dans G10 n'est pas un entier" +#: src/emc/usr_intf/gscreen/gscreen.glade:1481 +#, fuzzy +msgid " Flood " +msgstr "Fluide" -#: src/emc/rs274ngc/interp_convert.cc:3265 -#: src/emc/rs274ngc/interp_convert.cc:3622 emc/rs274ngc/interp_convert.cc:3268 -msgid "Invalid tool orientation" -msgstr "Orientation d'outil invalide" +#: src/emc/usr_intf/gscreen/gscreen.glade:1533 +#, fuzzy +msgid " At Speed " +msgstr "LED Vitesse de broche atteinte" -#: src/emc/rs274ngc/interp_convert.cc:3364 -#: src/emc/rs274ngc/interp_convert.cc:3721 emc/rs274ngc/interp_convert.cc:3367 -msgid "I J words not allowed with G10 L2" -msgstr "Mots I J non permis avec G10 L2" +#: src/emc/usr_intf/gscreen/gscreen.glade:1546 +#, fuzzy +msgid " Jog mode" +msgstr "Mode articulations" -#: src/emc/rs274ngc/interp_convert.cc:3385 -#: src/emc/rs274ngc/interp_convert.cc:3742 emc/rs274ngc/interp_convert.cc:3388 -msgid "" -"Cannot change the active coordinate system with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:1600 +msgid "10 DPM" msgstr "" -"Changement de système de coordonnées impossible avec la compensation de " -"rayon d'outil activée" -#: src/emc/rs274ngc/interp_convert.cc:3393 -#: src/emc/rs274ngc/interp_convert.cc:3750 emc/rs274ngc/interp_convert.cc:3396 -msgid "R not allowed in G10 L20" -msgstr "R n'est pas permis avec G10 L20" +#: src/emc/usr_intf/gscreen/gscreen.glade:1616 +msgid "10 Ipm" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3966 -#: src/emc/rs274ngc/interp_convert.cc:4323 emc/rs274ngc/interp_convert.cc:3969 -#: src/emc/rs274ngc/interp_convert.cc:3968 -msgid "Spindle not turning in G33" -msgstr "Broche pas en rotation en G33" +#: src/emc/usr_intf/gscreen/gscreen.glade:1690 +#, fuzzy +msgid "Status" +msgstr "a)" -#: src/emc/rs274ngc/interp_convert.cc:3976 -#: src/emc/rs274ngc/interp_convert.cc:4333 emc/rs274ngc/interp_convert.cc:3979 -#: src/emc/rs274ngc/interp_convert.cc:3978 -msgid "Spindle not turning in G33.1" -msgstr "Broche pas en rotation en G33.1" +#: src/emc/usr_intf/gscreen/gscreen.glade:1715 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2510 +#, fuzzy +msgid "" +"Search\n" +" Text:" +msgstr "Chemin de recherche" -#: src/emc/rs274ngc/interp_convert.cc:4019 -#: src/emc/rs274ngc/interp_convert.cc:4376 emc/rs274ngc/interp_convert.cc:4022 -#: src/emc/rs274ngc/interp_convert.cc:4021 -msgid "BUG: An axis incorrectly moved along with an indexer" -msgstr "BUG: An axis incorrectly moved along with an indexer" +#: src/emc/usr_intf/gscreen/gscreen.glade:1766 +#, fuzzy +msgid "Mode" +msgstr "Puissance" -#: src/emc/rs274ngc/interp_convert.cc:4032 -#: src/emc/rs274ngc/interp_convert.cc:4389 emc/rs274ngc/interp_convert.cc:4035 -#: src/emc/rs274ngc/interp_convert.cc:4034 -msgid "BUG: trying to index incorrect axis" -msgstr "BUG: trying to index incorrect axis" +#: src/emc/usr_intf/gscreen/gscreen.glade:1782 +#, fuzzy +msgid "Main Level" +msgstr "Niveau" -#: src/emc/rs274ngc/interp_convert.cc:4124 -#: src/emc/rs274ngc/interp_convert.cc:4481 emc/rs274ngc/interp_convert.cc:4127 -#: src/emc/rs274ngc/interp_convert.cc:4126 -msgid "Cannot use G76 threading cycle with cutter radius compensation on" -msgstr "Cycle de filetage G76 impossible avec la compensation de rayon d'outil" +#: src/emc/usr_intf/gscreen/gscreen.glade:1823 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3678 +#, fuzzy +msgid "Themes" +msgstr "Thème:" -#: src/emc/rs274ngc/interp_convert.cc:4127 -#: src/emc/rs274ngc/interp_convert.cc:4484 emc/rs274ngc/interp_convert.cc:4130 -#: src/emc/rs274ngc/interp_convert.cc:4129 -msgid "In G76, I must not be 0" -msgstr "I ne peut pas être à 0 dans G76" +#: src/emc/usr_intf/gscreen/gscreen.glade:1847 +#, fuzzy +msgid "Relative Text Color" +msgstr "Couleur texte Relatif" -#: src/emc/rs274ngc/interp_convert.cc:4129 -#: src/emc/rs274ngc/interp_convert.cc:4486 emc/rs274ngc/interp_convert.cc:4132 -#: src/emc/rs274ngc/interp_convert.cc:4131 -msgid "In G76, J must be greater than 0" -msgstr "J doit être supérieur à 0 dans G76" +#: src/emc/usr_intf/gscreen/gscreen.glade:1895 +#, fuzzy +msgid "DTG Text Color" +msgstr "DTG Textcolor" -#: src/emc/rs274ngc/interp_convert.cc:4131 -#: src/emc/rs274ngc/interp_convert.cc:4488 emc/rs274ngc/interp_convert.cc:4134 -#: src/emc/rs274ngc/interp_convert.cc:4133 -msgid "In G76, K must be greater than J" -msgstr "K doit être plus grand que J dans G76" +#: src/emc/usr_intf/gscreen/gscreen.glade:1916 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3710 +#, fuzzy +msgid "Warning Audio" +msgstr "Attention" -#: src/emc/rs274ngc/interp_convert.cc:4274 -#: src/emc/rs274ngc/interp_convert.cc:4631 emc/rs274ngc/interp_convert.cc:4277 -#: src/emc/rs274ngc/interp_convert.cc:4276 -msgid "" -"Length of cutter compensation entry move is not greater than the tool radius" +#: src/emc/usr_intf/gscreen/gscreen.glade:1926 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3723 +msgid "Alert Audio" msgstr "" -"Le mouvement d'entrée en compensation de longueur d'outil doit être plus " -"grand que le rayon d'outil" -#: src/emc/rs274ngc/interp_convert.cc:4493 -#: src/emc/rs274ngc/interp_convert.cc:4850 emc/rs274ngc/interp_convert.cc:4496 -#: src/emc/rs274ngc/interp_convert.cc:4495 -msgid "Zero degree inside corner is invalid for cutter compensation" +#: src/emc/usr_intf/gscreen/gscreen.glade:1947 +#, fuzzy +msgid "Grid Size" +msgstr "Taille" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1986 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4119 +#, fuzzy +msgid "Starting RPM" +msgstr "Réglages" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2015 +msgid "Metric\n" msgstr "" -"Un angle interne de zéro degré est invalide pour la compensation de rayon " -"d'outil" -#: src/emc/rs274ngc/interp_convert.cc:4531 -#: src/emc/rs274ngc/interp_convert.cc:4539 -#: src/emc/rs274ngc/interp_convert.cc:4888 -#: src/emc/rs274ngc/interp_convert.cc:4896 emc/rs274ngc/interp_convert.cc:4534 -#: emc/rs274ngc/interp_convert.cc:4542 src/emc/rs274ngc/interp_convert.cc:4533 -#: src/emc/rs274ngc/interp_convert.cc:4541 +#: src/emc/usr_intf/gscreen/gscreen.glade:2030 msgid "" -"Arc to straight motion makes a corner the compensated tool can't fit in " -"without gouging" +" Display\n" +"Aux Screen" msgstr "" -"Mouvement d'arc vers une droite, pour initier la compensation d'outil, ne " -"pouvant pas être suivi sans interférer avec la pièce" -#: src/emc/rs274ngc/interp_convert.cc:4623 -#: src/emc/rs274ngc/interp_convert.cc:4980 emc/rs274ngc/interp_convert.cc:4626 -#: src/emc/rs274ngc/interp_convert.cc:4625 -msgid "Cannot change tools with cutter radius compensation on" -msgstr "" -"Changement d'outil impossible avec la compensation de rayon d'outil active" +#: src/emc/usr_intf/gscreen/gscreen.glade:2045 +#, fuzzy +msgid "" +"Diameter\n" +" Mode" +msgstr "Diamètre:" -#: src/emc/rs274ngc/interp_convert.cc:4743 -#: src/emc/rs274ngc/interp_convert.cc:5101 emc/rs274ngc/interp_convert.cc:4746 -#: src/emc/rs274ngc/interp_convert.cc:4745 -msgid "Cannot change tool offset with cutter radius compensation on" -msgstr "" -"Changement d'offsetd'outil impossible avec la compensation de rayon d'outil " -"active" +#: src/emc/usr_intf/gscreen/gscreen.glade:2062 +#: src/emc/usr_intf/gscreen/gscreen.glade:3096 +#, fuzzy +msgid "" +" Show\n" +"Offsets" +msgstr "Afficher les offs_ets" -#: src/emc/rs274ngc/interp_queue.cc:539 src/emc/rs274ngc/interp_queue.cc:590 -#: emc/rs274ngc/interp_queue.cc:539 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:2079 +#, fuzzy msgid "" -"BUG: cutter compensation has generated an invalid arc with mismatched radii " -"r1 %f r2 %f\n" +"Show\n" +"DTG" +msgstr "Afficher" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2096 +msgid "" +" Gscreen\n" +"Fullscreen" msgstr "" -"BOGUE: la compensation d'outil a généré un arc invalide avec des rayons " -"incorrects r1 %f r2 %f\n" -#: src/emc/rs274ngc/interp_queue.cc:561 src/emc/rs274ngc/interp_queue.cc:612 -#: emc/rs274ngc/interp_queue.cc:561 -msgid "BUG: Unsupported plane in cutter compensation" -msgstr "BOGUE: Plan incorrect avec la compensation d'outil" +#: src/emc/usr_intf/gscreen/gscreen.glade:2118 +msgid "" +" On M7 Use\n" +"Aux Coolant" +msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:571 src/emc/rs274ngc/interp_queue.cc:622 -#: emc/rs274ngc/interp_queue.cc:571 +#: src/emc/usr_intf/gscreen/gscreen.glade:2131 msgid "" -"Straight traverse in concave corner cannot be reached by the tool without " -"gouging" +" On M8 Use\n" +"Aux Coolant" msgstr "" -"Le mouvement rectiligne en vitesse rapide dans l'angle intérieur ne peut pas " -"s'achever sans que l'outil n'interfère avec la pièce" -#: src/emc/rs274ngc/interp_queue.cc:599 src/emc/rs274ngc/interp_queue.cc:650 -#: emc/rs274ngc/interp_queue.cc:599 -#, c-format -msgid "BUG: Unsupported plane [%d] in cutter compensation" -msgstr "BOGUE: Plan [%d] non supporté avec la compensation d'outil" +#: src/emc/usr_intf/gscreen/gscreen.glade:2144 +#, fuzzy +msgid "Hide Pointer" +msgstr "Cacher pointeur" -#: src/emc/rs274ngc/interp_queue.cc:610 src/emc/rs274ngc/interp_queue.cc:661 -#: emc/rs274ngc/interp_queue.cc:610 +#: src/emc/usr_intf/gscreen/gscreen.glade:2156 msgid "" -"Straight feed in concave corner cannot be reached by the tool without gouging" +" Desktop\n" +"Notification" msgstr "" -"Le mouvement rectiligne en vitesse travail dans l'angle intérieur ne peut " -"pas s'achever sans que l'outil n'interfère avec la pièce" -#: src/emc/rs274ngc/interp_cycles.cc:628 emc/rs274ngc/interp_cycles.cc:628 -msgid "Cannot feed with zero feed rate" -msgstr "Mouvement impossible avec une vitesse nulle" +#: src/emc/usr_intf/gscreen/gscreen.glade:2228 +#: src/emc/usr_intf/gscreen/gscreen.glade:2368 +#, fuzzy +msgid "Debug" +msgstr "Débogue..." -#: src/emc/rs274ngc/interp_cycles.cc:629 emc/rs274ngc/interp_cycles.cc:629 -msgid "Cannot use inverse time feed with canned cycles" -msgstr "Cycle préprogrammé impossible en mode vitesse inverse du temps" +#: src/emc/usr_intf/gscreen/gscreen.glade:2263 +#, fuzzy +msgid "Alarm History" +msgstr "Historique:" -#: src/emc/rs274ngc/interp_cycles.cc:630 emc/rs274ngc/interp_cycles.cc:630 -msgid "Cannot use canned cycles with cutter compensation on" -msgstr "Cycle préprogrammé impossible avec la compensation d'outil activée" +#: src/emc/usr_intf/gscreen/gscreen.glade:2281 +msgid "" +" Launch\n" +"Halshow" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:818 emc/rs274ngc/interp_cycles.cc:818 -msgid "G17 canned cycle is not possible on a machine without Z axis" -msgstr "Le cycle préprogrammé G17 est impossible sur une machine sans axe Z" +#: src/emc/usr_intf/gscreen/gscreen.glade:2293 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6449 +#, fuzzy +msgid "Calibration" +msgstr "_Calibration" -#: src/emc/rs274ngc/interp_cycles.cc:1001 -#: src/emc/rs274ngc/interp_cycles.cc:1004 emc/rs274ngc/interp_cycles.cc:1001 -msgid "G17.1 canned cycle is not possible on a machine without W axis" -msgstr "Le cycle préprogrammé G17.1 est impossible sur une machine sans axe W" +#: src/emc/usr_intf/gscreen/gscreen.glade:2304 +#, fuzzy +msgid "Halmeter" +msgstr "HalMeter" -#: src/emc/rs274ngc/interp_cycles.cc:1217 -#: src/emc/rs274ngc/interp_cycles.cc:1220 emc/rs274ngc/interp_cycles.cc:1217 -msgid "G19 canned cycle is not possible on a machine without X axis" -msgstr "Le cycle préprogrammé G19 est impossible sur une machine sans axe X" +#: src/emc/usr_intf/gscreen/gscreen.glade:2315 +#, fuzzy +msgid "" +"linuxcnc\n" +" Status" +msgstr "Statu de LinuxCNC" -#: src/emc/rs274ngc/interp_cycles.cc:1385 -#: src/emc/rs274ngc/interp_cycles.cc:1388 emc/rs274ngc/interp_cycles.cc:1385 -msgid "G19.1 canned cycle is not possible on a machine without U axis" -msgstr "Le cycle préprogrammé G19.1 est impossible sur une machine sans axe U" +#: src/emc/usr_intf/gscreen/gscreen.glade:2327 +#, fuzzy +msgid "Halscope" +msgstr "HalScope" -#: src/emc/rs274ngc/interp_cycles.cc:1610 -#: src/emc/rs274ngc/interp_cycles.cc:1613 emc/rs274ngc/interp_cycles.cc:1610 -msgid "G18 canned cycle is not possible on a machine without Y axis" -msgstr "Le cycle préprogrammé G18 est impossible sur une machine sans axe Y" +#: src/emc/usr_intf/gscreen/gscreen.glade:2338 +msgid "Ladder" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1777 -#: src/emc/rs274ngc/interp_cycles.cc:1780 emc/rs274ngc/interp_cycles.cc:1777 -msgid "G18.1 canned cycle is not possible on a machine without V axis" -msgstr "Le cycle préprogrammé G18.1 est impossible sur une machine sans axe V" +#: src/emc/usr_intf/gscreen/gscreen.glade:2386 +#, fuzzy +msgid "Tooleditor" +msgstr "Editeur de fichier d'outils..." -# -#: src/emc/rs274ngc/interp_find.cc:170 emc/rs274ngc/interp_find.cc:170 -msgid "Cannot use polar coordinates with G53" -msgstr "Coordonnées polaires inutilisables avec G53" +#: src/emc/usr_intf/gscreen/gscreen.glade:2404 +#, fuzzy +msgid "" +"Offset\n" +" Page" +msgstr "Valeur d'offset" -#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 -#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 -#: src/emc/rs274ngc/interp_find.cc:347 emc/rs274ngc/interp_find.cc:266 -#: emc/rs274ngc/interp_find.cc:271 emc/rs274ngc/interp_find.cc:278 -#: emc/rs274ngc/interp_find.cc:337 emc/rs274ngc/interp_find.cc:347 -msgid "Cannot specify X or Y words with polar coordinate" -msgstr "Impossible de spécifier les mots X et Y avec des coordonnées polaires" +#: src/emc/usr_intf/gscreen/gscreen.glade:2572 +#: src/emc/usr_intf/gscreen/gscreen.glade:2749 +#: src/emc/usr_intf/gscreen/gscreen.glade:3156 +msgid "\n" +msgstr "" -#: src/emc/rs274ngc/interp_find.cc:272 emc/rs274ngc/interp_find.cc:272 -msgid "Must specify angle in polar coordinate if at the origin" -msgstr "Un angle en coordonnées polaires doit être spécifié si à l'origine" +#: src/emc/usr_intf/gscreen/gscreen.glade:2584 +#, fuzzy +msgid "Tool Setting" +msgstr "Ajustement outil" -#: src/emc/rs274ngc/interp_find.cc:338 emc/rs274ngc/interp_find.cc:338 +#: src/emc/usr_intf/gscreen/gscreen.glade:2648 +#, fuzzy msgid "" -"Incremental motion with polar coordinates is indeterminate when at the origin" -msgstr "" -"Un mouvement incrémental avec des coordonnées polaires est indéterminé si à " -"l'origine" - -#: src/emc/rs274ngc/interp_find.cc:348 emc/rs274ngc/interp_find.cc:348 -msgid "G91 motion with polar coordinates is indeterminate when at the origin" -msgstr "" -"Un mouvement G91 avec des coordonnées polaires est indéterminé si à l'origine" +"Single\n" +" Step" +msgstr "Pas par pas" -#: src/emc/rs274ngc/interp_find.cc:720 emc/rs274ngc/interp_find.cc:720 -#, c-format -msgid "Requested tool %d not found in the tool table" -msgstr "L'outil demandé %d n'est pas dans la table d'outils" +#: src/emc/usr_intf/gscreen/gscreen.glade:2661 +#, fuzzy +msgid "" +"Run At\n" +" Line" +msgstr "Run time:" -#: src/emc/rs274ngc/interp_internal.cc:151 -#: src/emc/rs274ngc/interp_internal.cc:154 emc/rs274ngc/interp_internal.cc:151 -msgid "Cannot use polar coordinate on a machine lacking X or Y axes" +#: src/emc/usr_intf/gscreen/gscreen.glade:2673 +msgid "" +"Change \n" +" View" msgstr "" -"Impossible d'utiliser les coordonnées polaires sur une machine sans axes X " -"ou Y" -#: src/emc/rs274ngc/interp_internal.cc:152 -#: src/emc/rs274ngc/interp_internal.cc:155 emc/rs274ngc/interp_internal.cc:152 -msgid "Cannot use polar coordinate except in G17 plane" -msgstr "" -"Possibilité d'utiliser les coordonnées polaires uniquement dans le plan G17" +#: src/emc/usr_intf/gscreen/gscreen.glade:2760 +#, fuzzy +msgid "Homing\n" +msgstr "Prise d'ori_gine" -#: src/emc/rs274ngc/interp_internal.cc:153 -#: src/emc/rs274ngc/interp_internal.cc:156 emc/rs274ngc/interp_internal.cc:153 -msgid "Cannot specify both polar coordinate and X word" -msgstr "Impossible de spécifier ensemble les coordonnées polaires et le mot X" +#: src/emc/usr_intf/gscreen/gscreen.glade:2781 +#, fuzzy +msgid "" +"Ignore\n" +"Limits" +msgstr "Limites" -#: src/emc/rs274ngc/interp_internal.cc:154 -#: src/emc/rs274ngc/interp_internal.cc:157 emc/rs274ngc/interp_internal.cc:154 -msgid "Cannot specify both polar coordinate and Y word" -msgstr "Impossible de spécifier ensemble les coordonnées polaires et le mot Y" +#: src/emc/usr_intf/gscreen/gscreen.glade:2810 +#, fuzzy +msgid "" +" Set\n" +"Override" +msgstr "Ajuster le correcteur de vitesse" -#: src/emc/rs274ngc/interp_internal.cc:175 -#: src/emc/rs274ngc/interp_internal.cc:187 -#: src/emc/rs274ngc/interp_internal.cc:200 -#: src/emc/rs274ngc/interp_internal.cc:178 -#: src/emc/rs274ngc/interp_internal.cc:190 -#: src/emc/rs274ngc/interp_internal.cc:203 emc/rs274ngc/interp_internal.cc:175 -#: emc/rs274ngc/interp_internal.cc:187 emc/rs274ngc/interp_internal.cc:200 -msgid "Polar coordinates can only be used for motion" +#: src/emc/usr_intf/gscreen/gscreen.glade:2824 +msgid "Graphics\n" msgstr "" -"Les coordonnées polaires peuvent être utilisées seulement pour un mouvement" - -#: src/emc/rs274ngc/interp_read.cc:1112 src/emc/rs274ngc/interp_read.cc:1116 -#: src/emc/rs274ngc/interp_read.cc:1143 src/emc/rs274ngc/interp_read.cc:1147 -#: emc/rs274ngc/interp_read.cc:1112 emc/rs274ngc/interp_read.cc:1116 -#, c-format -msgid "Bad character '\\%03o' used" -msgstr "Caractère '\\%03o' incorrect" -#: src/emc/rs274ngc/interp_read.cc:1116 src/emc/rs274ngc/interp_read.cc:1147 -#: emc/rs274ngc/interp_read.cc:1116 -#, c-format -msgid "Bad character '%c' used" -msgstr "Caractère '%c' incorrect" +#: src/emc/usr_intf/gscreen/gscreen.glade:2838 +#, fuzzy +msgid "" +"Menu\n" +"Level" +msgstr "Niveau" -#: src/emc/rs274ngc/interp_read.cc:1623 src/emc/rs274ngc/interp_read.cc:1671 -#: emc/rs274ngc/interp_read.cc:1623 -msgid "Left bracket missing after 'while'" -msgstr "Crochet gauche manquant après 'while'" +#: src/emc/usr_intf/gscreen/gscreen.glade:2851 +msgid "" +" Launch\n" +"Keyboard" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1638 src/emc/rs274ngc/interp_read.cc:1686 -#: emc/rs274ngc/interp_read.cc:1638 -msgid "Left bracket missing after 'repeat'" -msgstr "Crochet gauche manquant 'repeat'" +#: src/emc/usr_intf/gscreen/gscreen.glade:2868 +#, fuzzy +msgid "Select Buttons" +msgstr "Options de sortie" -#: src/emc/rs274ngc/interp_read.cc:1653 src/emc/rs274ngc/interp_read.cc:1701 -#: emc/rs274ngc/interp_read.cc:1653 -msgid "Left bracket missing after 'if'" -msgstr "Crochet gauche manquant après 'if'" +#: src/emc/usr_intf/gscreen/gscreen.glade:2955 +#, fuzzy +msgid "" +"Unhome \n" +" All" +msgstr "Annulation OM de tous les axes" -#: src/emc/rs274ngc/interp_read.cc:1668 src/emc/rs274ngc/interp_read.cc:1716 -#: emc/rs274ngc/interp_read.cc:1668 -msgid "Left bracket missing after 'elseif'" -msgstr "Crochet gauche manquant après 'elseif'" +#: src/emc/usr_intf/gscreen/gscreen.glade:2967 +#, fuzzy +msgid "" +"Unhome\n" +" Axis" +msgstr "Annulation OM de l'axe _%s" -#: src/emc/rs274ngc/interp_read.cc:1858 emc/rs274ngc/interp_read.cc:1858 -#, c-format -msgid "Cannot change #<%s>" -msgstr "Ne peux modifier #<%s>" +#: src/emc/usr_intf/gscreen/gscreen.glade:2979 +#: src/emc/usr_intf/gscreen/gscreen.glade:3084 +#, fuzzy +msgid "" +"Toggle\n" +"Readout" +msgstr "Bascule envoi auto" -#: src/emc/rs274ngc/interp_read.cc:1889 src/emc/rs274ngc/interp_read.cc:1932 -#: src/emc/rs274ngc/interp_namedparams.cc:370 emc/rs274ngc/interp_read.cc:1889 -#: emc/rs274ngc/interp_read.cc:1932 -#, c-format -msgid "Internal error: Could not assign #<%s>" -msgstr "Erreur interne: Ne peut assigner #<%s>" +#: src/emc/usr_intf/gscreen/gscreen.glade:3004 +#, fuzzy +msgid "" +"Jogging\n" +" Mode" +msgstr "Jog" -#: src/emc/rs274ngc/interp_read.cc:1906 emc/rs274ngc/interp_read.cc:1906 -#, c-format -msgid "init_named_parameter must be global #<%s>" -msgstr "init_named_parameter doit être global #<%s>" +#: src/emc/usr_intf/gscreen/gscreen.glade:3016 +#, fuzzy +msgid "" +"coordinate\n" +" System" +msgstr "Décalage origine pièce" -#: src/emc/rs274ngc/interp_read.cc:2093 -#: src/emc/rs274ngc/interp_namedparams.cc:161 emc/rs274ngc/interp_read.cc:2093 -#, c-format -msgid "Named parameter #<%s> not defined" -msgstr "Paramètre nommé #<%s> non défini" +#: src/emc/usr_intf/gscreen/gscreen.glade:3060 +#, fuzzy +msgid "" +"Index\n" +" Tool" +msgstr "Index only" -#: src/emc/rs274ngc/interp_read.cc:2174 src/emc/rs274ngc/interp_read.cc:1919 -#: emc/rs274ngc/interp_read.cc:2174 -msgid "Cannot read current position with cutter radius compensation on" -msgstr "" -"Lecture de la position courante impossible avec la compensation de rayon " -"d'outil activée" +#: src/emc/usr_intf/gscreen/gscreen.glade:3072 +#, fuzzy +msgid "" +"Spindle\n" +"Controls" +msgstr "Contrôles" -#: src/emc/rs274ngc/interp_read.cc:2189 src/emc/rs274ngc/interp_read.cc:1934 -#: emc/rs274ngc/interp_read.cc:2189 -msgid "Expected # reading parameter" -msgstr "Lecture paramètre # attendue" -#: src/emc/rs274ngc/interp_check.cc:94 -#, c-format -msgid "P value out of range (0-9) with G10 L%d" -msgstr "Valeur de P hors d'échelle (0-9) avec G10 L%d" +#: src/emc/usr_intf/gscreen/gscreen.glade:3195 +#, fuzzy +msgid "Open" +msgstr "Ouvrir..." -#: src/emc/rs274ngc/interp_read.cc:2191 src/emc/rs274ngc/interp_read.cc:1936 -#: emc/rs274ngc/interp_read.cc:2191 -msgid "Expected ] reading bracketed parameter" -msgstr "La lecture de paramètre entre crochets attendait un ]" -#: src/emc/rs274ngc/interp_check.cc:95 -#, c-format -msgid "P value out of range with G10 L%d" -msgstr "Valeur de P hors d'échelle avec G10 L%d" +#: src/emc/usr_intf/gscreen/gscreen.glade:3205 +#, fuzzy +msgid "" +" Block\n" +"Delete" +msgstr "Effacer" -#: src/emc/rs274ngc/interp_read.cc:2881 src/emc/rs274ngc/interp_read.cc:2608 -#: emc/rs274ngc/interp_read.cc:2881 -#, c-format -msgid "bad number format (conversion failed) parsing '%s'" +#: src/emc/usr_intf/gscreen/gscreen.glade:3217 +#, fuzzy +msgid "" +"Optional\n" +" Stop" +msgstr "Arrêt optionnel" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3229 +msgid "" +" Full\n" +"View" msgstr "" -"mauvais format de nombre (la conversion a échoué) lors de l'analyse de '%s'" -#: src/emc/rs274ngc/interp_read.cc:2882 src/emc/rs274ngc/interp_read.cc:2609 -#: emc/rs274ngc/interp_read.cc:2882 -#, c-format -msgid "bad number format (trailing characters) parsing '%s'" -msgstr "mauvais format de nombre (caractère de fin) lors de l'analyse de '%s'" +#: src/emc/usr_intf/gscreen/gscreen.glade:3265 +#, fuzzy +msgid "" +"Next\n" +" Tab" +msgstr "Valeur suivante" -#: src/emc/rs274ngc/interp_read.cc:2972 src/emc/rs274ngc/interp_read.cc:2699 -#: emc/rs274ngc/interp_read.cc:2972 -msgid "Calculation resulted in 'not a number'" -msgstr "Le résultat du calcul est 'pas un nombre'" +#: src/emc/usr_intf/gscreen/gscreen.glade:3285 +#, fuzzy +msgid "" +" Feed\n" +"Override" +msgstr "Correcteur de vitesse" -#: src/emc/rs274ngc/interp_read.cc:2974 src/emc/rs274ngc/interp_read.cc:2701 -#: emc/rs274ngc/interp_read.cc:2974 -msgid "Calculation resulted in 'infinity'" -msgstr "Le résultat du calcul est 'infini'" +#: src/emc/usr_intf/gscreen/gscreen.glade:3298 +#, fuzzy +msgid "" +"Spindle\n" +"Override" +msgstr "Correction vitesse de broche:" -#: src/emc/rs274ngc/interp_read.cc:3268 src/emc/rs274ngc/interp_read.cc:2994 -#: emc/rs274ngc/interp_read.cc:3268 -#, c-format -msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" -msgstr "EOF dans le fichier: %s cherche le mot-O: o<%s> à la ligne: %d" +#: src/emc/usr_intf/gscreen/gscreen.glade:3311 +#, fuzzy +msgid "" +" Rapid\n" +"Override" +msgstr "Correcteur de vitesse broche" -#: src/emc/rs274ngc/interp_read.cc:3391 src/emc/rs274ngc/interp_read.cc:3106 -#: emc/rs274ngc/interp_read.cc:3391 -msgid "Multiple U words on one line" -msgstr "Multiples mots U sur une ligne" +#: src/emc/usr_intf/gscreen/gscreen.glade:3332 +#, fuzzy +msgid "" +" Jog\n" +"Speed" +msgstr "Vitesse de jog:" -#: src/emc/rs274ngc/interp_read.cc:3407 src/emc/rs274ngc/interp_read.cc:3122 -#: emc/rs274ngc/interp_read.cc:3407 -msgid "Multiple V words on one line" -msgstr "Multiples mots V sur une ligne" +#: src/emc/usr_intf/gscreen/gscreen.glade:3345 +#, fuzzy +msgid "" +" Jog\n" +"Increments" +msgstr "Incréments" -#: src/emc/rs274ngc/interp_read.cc:3423 src/emc/rs274ngc/interp_read.cc:3138 -#: emc/rs274ngc/interp_read.cc:3423 -msgid "Multiple W words on one line" -msgstr "Multiples mots W sur une ligne" +#: src/emc/usr_intf/gscreen/gscreen.glade:3361 +msgid "" +"Adjust\n" +"Rotary" +msgstr "" -#: src/emc/rs274ngc/interp_o_word.cc:104 src/emc/rs274ngc/interp_o_word.cc:95 -#: emc/rs274ngc/interp_o_word.cc:104 -#, c-format -msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" +#: src/emc/usr_intf/gscreen/gscreen.glade:3383 +msgid "" +"Change\n" +" View" msgstr "" -"Fichier:%s ligne:%d redéfinition sub: o|%s| déjà défini dans le fichier:%s" -#: src/emc/rs274ngc/rs274ngc_pre.cc:897 src/emc/rs274ngc/rs274ngc_pre.cc:1269 -#: src/emc/rs274ngc/rs274ngc_pre.cc:1344 emc/rs274ngc/rs274ngc_pre.cc:895 -#: src/emc/rs274ngc/rs274ngc_pre.cc:898 -msgid "Queue is not empty after tool change" -msgstr "La queue n'est pas vide après changement d'outil" +#: src/emc/usr_intf/gscreen/gscreen.glade:3431 +#, fuzzy +msgid "" +" Pan\n" +"Vertical" +msgstr "Vertical" -#: src/emc/rs274ngc/rs274ngc_pre.cc:1145 src/emc/rs274ngc/rs274ngc_pre.cc:1648 -#: emc/rs274ngc/rs274ngc_pre.cc:1143 src/emc/rs274ngc/rs274ngc_pre.cc:1146 -#, c-format -msgid "Unable to open parameter file: '%s'" -msgstr "Impossible d'ouvrir le fichier de paramètres:'%s'" +#: src/emc/usr_intf/gscreen/gscreen.glade:3444 +#, fuzzy +msgid "" +" Pan\n" +"Horizontal" +msgstr "Horizontal" -#: src/emc/rs274ngc/rs274ngc_return.hh:4 emc/rs274ngc/rs274ngc_return.hh:4 -msgid "A file is already open" -msgstr "Un fichier est déjà ouvert" +#: src/emc/usr_intf/gscreen/gscreen.glade:3457 +#, fuzzy +msgid "" +" Rotate\n" +"Horiontal" +msgstr "Horizontal" -#: src/emc/rs274ngc/rs274ngc_return.hh:5 emc/rs274ngc/rs274ngc_return.hh:5 -msgid "All axes missing with g92" -msgstr "Les axes sont manquants avec g92" +#: src/emc/usr_intf/gscreen/gscreen.glade:3470 +#, fuzzy +msgid "" +" Rotate\n" +"Vertical" +msgstr "Vertical" -#: src/emc/rs274ngc/rs274ngc_return.hh:6 emc/rs274ngc/rs274ngc_return.hh:6 -msgid "All axes missing with motion code" -msgstr "Les axes sont manquants avec un code mouvement" +#: src/emc/usr_intf/gscreen/gscreen.glade:3491 +#, fuzzy +msgid "" +"Search\n" +" Bwd" +msgstr "Chemin de recherche" -#: src/emc/rs274ngc/rs274ngc_return.hh:7 emc/rs274ngc/rs274ngc_return.hh:7 -msgid "Arc radius too small to reach end point" -msgstr "Le rayon de l'arc est trop petit pour atteindre le point final" +#: src/emc/usr_intf/gscreen/gscreen.glade:3503 +#, fuzzy +msgid "" +"Search\n" +" Fwd" +msgstr "Chemin de recherche" -#: src/emc/rs274ngc/rs274ngc_return.hh:8 emc/rs274ngc/rs274ngc_return.hh:8 -msgid "Argument to acos out of range" -msgstr "Argument de acos hors d'échelle" +#: src/emc/usr_intf/gscreen/gscreen.glade:3561 +#, fuzzy +msgid "" +" Reload\n" +"Program" +msgstr "Recharger le programme" -#: src/emc/rs274ngc/rs274ngc_return.hh:9 emc/rs274ngc/rs274ngc_return.hh:9 -msgid "Argument to asin out of range" -msgstr "Argument de asin hors d'échelle" +#: src/emc/usr_intf/gscreen/gscreen.glade:3604 +msgid "" +" Clear\n" +"status" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:10 emc/rs274ngc/rs274ngc_return.hh:10 -msgid "Attempt to divide by zero" -msgstr "Tentative de division par zéro" +#: src/emc/usr_intf/gscreen/gscreen.glade:3634 +msgid "G54" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:11 emc/rs274ngc/rs274ngc_return.hh:11 -msgid "Attempt to raise negative to non integer power" -msgstr "Tentative d'élever un nombre négatif à une puissance non entière" +#: src/emc/usr_intf/gscreen/gscreen.glade:3650 +msgid "calc" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:12 emc/rs274ngc/rs274ngc_return.hh:12 -msgid "Bad format unsigned integer" -msgstr "Mauvais format d'entier non signé" +#: src/emc/usr_intf/gscreen/gscreen.glade:3725 +msgid "test" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:13 emc/rs274ngc/rs274ngc_return.hh:13 -msgid "Bad number format" -msgstr "Mauvais format de nombre" +#: src/emc/usr_intf/gscreen/gscreen.glade:3728 +msgid "test2" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:14 emc/rs274ngc/rs274ngc_return.hh:14 -msgid "Bug bad g code modal group 0" -msgstr "Erreur de Gcode dans le groupe modal 0" +#: src/emc/usr_intf/gscreen/gscreen.glade:3778 +msgid "Data Entry" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:15 emc/rs274ngc/rs274ngc_return.hh:15 -msgid "Bug code not g0 or g1" -msgstr "Bug-code sans g0 ou g1" +#: src/emc/usr_intf/gscreen/gscreen.glade:3805 +#, fuzzy +msgid "Calculator Entry" +msgstr "Échelle calculée" -#: src/emc/rs274ngc/rs274ngc_return.hh:16 emc/rs274ngc/rs274ngc_return.hh:16 -msgid "Bug code not g17 g18 or g19" -msgstr "Bug-code sans g17 g18 ou g19" +#: src/emc/usr_intf/gscreen/gscreen.glade:3894 +#, fuzzy +msgid "Program Restart" +msgstr "Afficher « Reprise »" -#: src/emc/rs274ngc/rs274ngc_return.hh:17 emc/rs274ngc/rs274ngc_return.hh:17 -msgid "Bug code not g20 or g21" -msgstr "Bug-code sans g20 ou g21" +#: src/emc/usr_intf/gscreen/gscreen.glade:3909 +msgid "" +"Highlighting the run-at-line with the\n" +"up / down buttons or entering the line\n" +"directly." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:18 emc/rs274ngc/rs274ngc_return.hh:18 -msgid "Bug code not g28 or g30" -msgstr "Bug-code sans g28 ou g30" +#: src/emc/usr_intf/gscreen/gscreen.glade:3923 +msgid "" +"Line\n" +" Up" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:19 emc/rs274ngc/rs274ngc_return.hh:19 -msgid "Bug code not g2 or g3" -msgstr "Bug-code sans g2 ou g3" +#: src/emc/usr_intf/gscreen/gscreen.glade:3946 +msgid "" +" Line\n" +"Down" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:20 emc/rs274ngc/rs274ngc_return.hh:20 -msgid "Bug code not g4 g10 g28 g30 g53 or g92 series" -msgstr "Bug-code sans g4 g10 g28 g30 g53 ou des séries g92" +#: src/emc/usr_intf/gscreen/gscreen.glade:4028 +#, fuzzy +msgid "S 1000" +msgstr "SO: 100%" -#: src/emc/rs274ngc/rs274ngc_return.hh:21 emc/rs274ngc/rs274ngc_return.hh:21 -msgid "Bug code not g61 g61.1 or g64" -msgstr "Bug-code sans g61 g61.1 ou g64" +#: src/emc/usr_intf/gscreen/gscreen.glade:4098 +msgid " FWD" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:22 emc/rs274ngc/rs274ngc_return.hh:22 -msgid "Bug code not g90 or g91" -msgstr "Bug-code sans g90 ou g91" +#: src/emc/usr_intf/gscreen/gscreen.glade:4133 +msgid " REV" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:23 emc/rs274ngc/rs274ngc_return.hh:23 -msgid "Bug code not g98 or g99" -msgstr "Bug-code sans g98 ou g99" +#: src/emc/usr_intf/gscreen/gscreen2.glade:35 +msgid "screen 2" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:24 emc/rs274ngc/rs274ngc_return.hh:24 -msgid "Bug code not in g92 series" -msgstr "Bug-code en dehors des séries g92" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:403 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:884 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:923 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:934 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:949 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1099 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1102 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1156 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1163 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1166 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2148 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2157 +msgid "**** GMOCCAPY INFO ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:25 emc/rs274ngc/rs274ngc_return.hh:25 -msgid "Bug code not in range g54 to g593" -msgstr "Bug-code hors gamme g54 a g593" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:404 +msgid "**** no valid probe config in INI File ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:26 emc/rs274ngc/rs274ngc_return.hh:26 -msgid "Bug code not m0 m1 m2 m30 m60" -msgstr "Bug-code sans m0 m1 m2 m30 m60" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:405 +msgid "**** disabled tool measurement ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:27 emc/rs274ngc/rs274ngc_return.hh:27 -msgid "Bug distance mode not g90 or g91" -msgstr "Bug-mode distance sans g90 ou g91" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:770 +msgid "**** GMOCCAPY ERROR : ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:28 emc/rs274ngc/rs274ngc_return.hh:28 -msgid "Bug function should not have been called" -msgstr "Bug; la fonction n'a pas du être bien appelée" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:772 +#, python-format +msgid "" +"**** gmoccapy can only handle 4 axis, ****\n" +"**** but you have given %d through your INI file ****\n" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:29 emc/rs274ngc/rs274ngc_return.hh:29 -msgid "Bug in tool radius comp" -msgstr "Bogue dans la compensation de rayon d'outil" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:774 +msgid "" +"**** gmoccapy will not start ****\n" +"\n" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:30 emc/rs274ngc/rs274ngc_return.hh:30 -msgid "Bug plane not xy yz or xz" -msgstr "Bug-plan ni xy yz ou xz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:786 +#, fuzzy, python-format +msgid "Home axis %s" +msgstr "POM de l'axe _%s" -#: src/emc/rs274ngc/rs274ngc_return.hh:31 emc/rs274ngc/rs274ngc_return.hh:31 -msgid "Bug side not right or left" -msgstr "Bug-cote ni droit ni gauche" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:885 +msgid "**** To many increments given in INI File for this screen ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:32 emc/rs274ngc/rs274ngc_return.hh:32 -msgid "Bug unknown motion code" -msgstr "Bug-code mouvement inconnu" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:886 +msgid "**** Only the first 10 will be reachable through this screen ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:33 emc/rs274ngc/rs274ngc_return.hh:33 -msgid "Bug unknown operation" -msgstr "Bug-opération inconnue" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:924 +msgid "**** gmoccapy screen 2 found ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:34 emc/rs274ngc/rs274ngc_return.hh:34 -msgid "Cannot change axis offsets with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:929 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1055 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1177 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1225 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1844 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2190 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2200 +msgid "**** GMOCCAPY ERROR ****" msgstr "" -"Impossible de changer les décalages d'axe avec la compensation de rayon " -"d'outil active " -#: src/emc/rs274ngc/rs274ngc_return.hh:35 emc/rs274ngc/rs274ngc_return.hh:35 -msgid "Cannot create backup file" -msgstr "Impossible de créer le fichier de sauveguarde" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:930 +msgid "**** screen 2 GLADE ERROR: ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:36 emc/rs274ngc/rs274ngc_return.hh:36 -msgid "Cannot do g1 with zero feed rate" -msgstr "Impossible d'effectuer un g1 avec une vitesse nulle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:935 +msgid "**** No gmoccapy2.glade file present ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:37 emc/rs274ngc/rs274ngc_return.hh:37 -msgid "Cannot do zero repeats of cycle" -msgstr "Impossible de répéter le cycle zéro fois" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:950 +msgid "**** Invalid embeded tab configuration ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:38 emc/rs274ngc/rs274ngc_return.hh:38 -msgid "Cannot make arc with zero feed rate" -msgstr "Impossible de faire un arc avec une vitesse nulle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:951 +msgid "**** No tabs will be added! ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:39 emc/rs274ngc/rs274ngc_return.hh:39 -msgid "Cannot open backup file" -msgstr "Impossible d'ouvrir le fichier de sauveguarde" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:964 +msgid "ERROR, trying to initialize the user tabs or panaels, check for typos" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:40 emc/rs274ngc/rs274ngc_return.hh:40 -msgid "Cannot open variable file" -msgstr "Impossible d'ouvrir le fichier de variables" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1056 +msgid "**** Did not find a toolfile file in [EMCIO] TOOL_TABLE ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:41 emc/rs274ngc/rs274ngc_return.hh:41 -msgid "Cannot probe with cutter radius comp on" -msgstr "Mesure impossible avec la compensation de rayon d'outil" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1100 +msgid "**** audio available! ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:42 emc/rs274ngc/rs274ngc_return.hh:42 -msgid "Cannot probe with zero feed rate" -msgstr "Mesure impossible avec une vitesse nulle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1103 +msgid "**** no audio available! ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:43 emc/rs274ngc/rs274ngc_return.hh:43 -msgid "Cannot put a b in canned cycle" -msgstr "Mot b interdit dans un cycle préprogrammé" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1104 +msgid "**** PYGST libray not installed? ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:44 emc/rs274ngc/rs274ngc_return.hh:44 -msgid "Cannot put a c in canned cycle" -msgstr "Mot c interdit dans un cycle préprogrammé" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1157 +msgid "**** virtual keyboard program found : " +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:45 emc/rs274ngc/rs274ngc_return.hh:45 -msgid "Cannot put an a in canned cycle" -msgstr "Mot a interdit dans un cycle préprogrammé" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1164 +msgid "**** virtual keyboard program found : " +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:46 emc/rs274ngc/rs274ngc_return.hh:46 -msgid "Cannot turn cutter radius comp on when on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1167 +msgid "" +"**** No virtual keyboard installed, we checked for and ." msgstr "" -"Impossible d'activer la compensation de rayon d'outil quand elle est déjà " -"active" -#: src/emc/rs274ngc/rs274ngc_return.hh:47 emc/rs274ngc/rs274ngc_return.hh:47 -msgid "Cannot use axis values with g80" -msgstr "Impossible d'utiliser des valeurs d'axe avec G80" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1178 +msgid "**** Error with launching virtual keyboard," +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:48 emc/rs274ngc/rs274ngc_return.hh:48 -msgid "Cannot use axis values without a g code that uses them" -msgstr "Impossible d'employer des valeurs d'axe sans G code pour les utiliser" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1179 +msgid "**** is onboard or matchbox-keyboard installed? ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:49 emc/rs274ngc/rs274ngc_return.hh:49 -msgid "Cannot use g28 or g30 with cutter radius comp" -msgstr "Impossible d'utiliser G28 ou G30 avec la compensation de rayon d'outil" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1193 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1875 +msgid "interrupt running macro" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:50 emc/rs274ngc/rs274ngc_return.hh:50 -msgid "Cannot use g53 incremental" -msgstr "Impossible d'utiliser G53 en incrémental" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1226 +msgid "**** Did not find a parameter file in [RS274NGC] PARAMETER_FILE ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:51 emc/rs274ngc/rs274ngc_return.hh:51 -msgid "Cannot use g53 with cutter radius comp" -msgstr "Impossible d'utiliser G53 avec la compensation de rayon d'outil" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1294 +msgid "Select the file you want to be loaded at program start" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:52 emc/rs274ngc/rs274ngc_return.hh:52 -msgid "Cannot use two g codes that both use axis values" -msgstr "Impossible d'utiliser deux Gcodes avec plusieurs valeurs d'axe" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1329 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1353 +#, python-format +msgid "**** GMOCCAPY ERROR **** /n Message type %s not suported" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:53 emc/rs274ngc/rs274ngc_return.hh:53 -msgid "Command too long" -msgstr "Commande trop longue" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1462 +msgid "Unknown error type and no error text given" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:54 emc/rs274ngc/rs274ngc_return.hh:54 -msgid "Current point same as end point of arc" -msgstr "Point courant identique au point final de l'arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1478 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1840 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1847 +msgid "Important Warning" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:55 emc/rs274ngc/rs274ngc_return.hh:55 -msgid "Dwell time missing with g4" -msgstr "Tempo manquante avec G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1498 +msgid "ERROR : External ESTOP is set, could not change state!" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1511 +msgid "ERROR : Could not switch the machine on, is limit switch aktivated?" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1730 +msgid "It is not possible to change to MDI Mode at the moment" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:56 emc/rs274ngc/rs274ngc_return.hh:56 -msgid "Dwell time p word missing with g82" -msgstr "Tempo manquante avec G96" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1754 +msgid "It is not possible to change to Auto Mode at the moment" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:57 emc/rs274ngc/rs274ngc_return.hh:57 -msgid "Dwell time p word missing with g86" -msgstr "Tempo manquante avec G96" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1838 +msgid "" +"\n" +"**** No subroutine folder or program prefix is given in the ini file **** \n" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:58 emc/rs274ngc/rs274ngc_return.hh:58 -msgid "Dwell time p word missing with g88" -msgstr "Tempo manquante avec G96" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1839 +msgid "**** so the corresponding file could not be found ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:59 emc/rs274ngc/rs274ngc_return.hh:59 -msgid "Dwell time p word missing with g89" -msgstr "Tempo manquante avec G96" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1845 +#, python-format +msgid "" +"\n" +"**** File %s of the macro could not be found ****\n" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:60 emc/rs274ngc/rs274ngc_return.hh:60 -msgid "Equal sign missing in parameter setting" -msgstr "Signe égal manquant dans le réglage des paramètres" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1846 +#, fuzzy, python-format +msgid "**** we searched in subdirectory %s ****" +msgstr "# **** ajuster vitesse max broche selon l'indicateur de vitesse ****" -#: src/emc/rs274ngc/rs274ngc_return.hh:61 emc/rs274ngc/rs274ngc_return.hh:61 -msgid "F word missing with inverse time arc move" -msgstr "Mot F manquant pour un arc en mouvement contrôle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1851 +msgid "Enter value:" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:62 emc/rs274ngc/rs274ngc_return.hh:62 -msgid "F word missing with inverse time g1 move" -msgstr "Mot F manquant pour g1 en mouvement contrôle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1852 +#, fuzzy, python-format +msgid "Set parameter %s to:" +msgstr "Pas encore de paramètre" -#: src/emc/rs274ngc/rs274ngc_return.hh:63 emc/rs274ngc/rs274ngc_return.hh:63 -msgid "File ended with no percent sign" -msgstr "Le fichier se termine sans signe pourcent" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1854 +msgid "conversion error" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:64 emc/rs274ngc/rs274ngc_return.hh:64 -msgid "File ended with no percent sign or program end" -msgstr "Le fichier se termine sans signe pourcent ni fin de programme" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1855 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3610 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3634 +msgid "Conversion error !" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:65 emc/rs274ngc/rs274ngc_return.hh:65 -msgid "File name too long" -msgstr "Nom de fichier trop long" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1856 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3299 +msgid "" +"Please enter only numerical values\n" +"Values have not been applied" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:66 emc/rs274ngc/rs274ngc_return.hh:66 -msgid "G code out of range" -msgstr "G code hors d'étendue" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2149 +#, python-brace-format +msgid "**** replaced {0} to {1} ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:67 emc/rs274ngc/rs274ngc_return.hh:67 -msgid "I word given for arc in yz plane" -msgstr "Mot I donné pour un arc dans le plan yz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2158 +msgid "" +"\n" +"**** found more than 9 macros, only the first 9 will be used ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:68 emc/rs274ngc/rs274ngc_return.hh:68 -msgid "I word missing with g87" -msgstr "Mot I manquant avec G87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2191 +#, python-format +msgid "**** %s ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:69 emc/rs274ngc/rs274ngc_return.hh:69 -msgid "J word given for arc in xz plane" -msgstr "Mot J donne pour un arc dans le plan xz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2201 +#, python-format +msgid "**** No widget named: %s to sensitize ****" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:70 emc/rs274ngc/rs274ngc_return.hh:70 -msgid "J word missing with g87" -msgstr "Mot J manquant avec G87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2366 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1561 +#, fuzzy +msgid "No tool description available" +msgstr "Aucun détail disponible." -#: src/emc/rs274ngc/rs274ngc_return.hh:71 emc/rs274ngc/rs274ngc_return.hh:71 -msgid "K word given for arc in xy plane" -msgstr "Mot K donne pour un arc dans le plan xy" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2591 +#, python-format +msgid "Halo, welcome to the test message %d" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:72 emc/rs274ngc/rs274ngc_return.hh:72 -msgid "K word missing with g87" -msgstr "Mot K manquant avec G87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2732 +msgid "Hal Pin is low, Access denied" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:73 emc/rs274ngc/rs274ngc_return.hh:73 -msgid "Left bracket missing after slash with atan" -msgstr "Crochet gauche manquant après le slash avec atan" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2734 +msgid "wrong code entered, Access denied" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:74 emc/rs274ngc/rs274ngc_return.hh:74 -msgid "Left bracket missing after unary operation name" -msgstr "Crochet gauche manquant après un nom d'opération unaire" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2735 +msgid "Just to warn you" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:75 emc/rs274ngc/rs274ngc_return.hh:75 -msgid "M code greater than 199" -msgstr "M-code plus grand que 199" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2810 +msgid "ERROR : No limit switch is active, ignore limits will not be set." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:76 emc/rs274ngc/rs274ngc_return.hh:76 -msgid "Mixed radius ijk format for arc" -msgstr "Mélange de format de rayon ijk pour un arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2850 +#, fuzzy +msgid "Classicladder real-time component not detected" +msgstr "Composant temps réel non chargé" -#: src/emc/rs274ngc/rs274ngc_return.hh:77 emc/rs274ngc/rs274ngc_return.hh:77 -msgid "Multiple a words on one line" -msgstr "Multiples mots a sur une ligne" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2937 +msgid "Something went wrong, we have an unknown spindle widget" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:78 emc/rs274ngc/rs274ngc_return.hh:78 -msgid "Multiple b words on one line" -msgstr "Multiples mots b sur une ligne" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3046 +msgid "Do you really want to delete the MDI history?\n" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:79 emc/rs274ngc/rs274ngc_return.hh:79 -msgid "Multiple c words on one line" -msgstr "Multiples mots c sur une ligne" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3047 +msgid "this will not delete the MDI History file, but will\n" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:80 emc/rs274ngc/rs274ngc_return.hh:80 -msgid "Multiple d words on one line" -msgstr "Multiples mots d sur une ligne" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3048 +msgid "delete the listbox entries for this session" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:81 emc/rs274ngc/rs274ngc_return.hh:81 -msgid "Multiple f words on one line" -msgstr "Multiples mots f sur une ligne" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3049 +msgid "Attention!!" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:82 emc/rs274ngc/rs274ngc_return.hh:82 -msgid "Multiple h words on one line" -msgstr "Multiples mots h sur une ligne" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3076 +msgid "This button will show or hide the keyboard" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:83 emc/rs274ngc/rs274ngc_return.hh:83 -msgid "Multiple i words on one line" -msgstr "Multiples mots i sur une ligne" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3196 +#, python-format +msgid "Offset %s could not be set, because off unknown axis" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:84 emc/rs274ngc/rs274ngc_return.hh:84 -msgid "Multiple j words on one line" -msgstr "Multiples mots j sur une ligne" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3197 +msgid "Wrong offset setting!" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:85 emc/rs274ngc/rs274ngc_return.hh:85 -msgid "Multiple k words on one line" -msgstr "Multiples mots k sur une ligne" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3202 +#, fuzzy +msgid "Enter value for diameter" +msgstr "Valeur non entière pour un entier" -#: src/emc/rs274ngc/rs274ngc_return.hh:86 emc/rs274ngc/rs274ngc_return.hh:86 -msgid "Multiple l words on one line" -msgstr "Multiples mots l sur une ligne" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3203 +#, fuzzy +msgid "Set diameter to:" +msgstr "diamètre" -#: src/emc/rs274ngc/rs274ngc_return.hh:87 emc/rs274ngc/rs274ngc_return.hh:87 -msgid "Multiple p words on one line" -msgstr "Multiples mots p sur une ligne" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3206 +#, fuzzy +msgid "Enter value for radius" +msgstr "Valeur non entière pour un entier" -#: src/emc/rs274ngc/rs274ngc_return.hh:88 emc/rs274ngc/rs274ngc_return.hh:88 -msgid "Multiple q words on one line" -msgstr "Multiples mots q sur une ligne" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3207 +#, fuzzy +msgid "Set radius to:" +msgstr "rayon" -#: src/emc/rs274ngc/rs274ngc_return.hh:89 emc/rs274ngc/rs274ngc_return.hh:89 -msgid "Multiple r words on one line" -msgstr "Multiples mots r sur une ligne" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3210 +#, fuzzy, python-format +msgid "Enter value for axis %s" +msgstr "Valeur non entière pour un entier" -#: src/emc/rs274ngc/rs274ngc_return.hh:90 emc/rs274ngc/rs274ngc_return.hh:90 -msgid "Multiple s words on one line" -msgstr "Multiples mots s sur une ligne" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3211 +#, fuzzy, python-format +msgid "Set axis %s to:" +msgstr "Ajuster valeurs d'axes" -#: src/emc/rs274ngc/rs274ngc_return.hh:91 emc/rs274ngc/rs274ngc_return.hh:91 -msgid "Multiple t words on one line" -msgstr "Multiples mots t sur une ligne" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3215 +msgid "Conversion error in btn_set_value" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:92 emc/rs274ngc/rs274ngc_return.hh:92 -msgid "Multiple x words on one line" -msgstr "Multiples mots x sur une ligne" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3216 +msgid "Conversion error in btn_set_value!" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:93 emc/rs274ngc/rs274ngc_return.hh:93 -msgid "Multiple y words on one line" -msgstr "Multiples mots y sur une ligne" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3217 +msgid "Please enter only numerical values. Values have not been applied" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:94 emc/rs274ngc/rs274ngc_return.hh:94 -msgid "Multiple z words on one line" -msgstr "Multiples mots z sur une ligne" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3232 +msgid "" +"you did not selected a system to be changed to, so nothing will be changed" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:95 emc/rs274ngc/rs274ngc_return.hh:95 -msgid "Must use g0 or g1 with g53" -msgstr "Nécessaire d'utiliser g0 ou g1 avec g53" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3640 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3654 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3658 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3673 +msgid "Important Warning!" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:96 emc/rs274ngc/rs274ngc_return.hh:96 -msgid "Negative argument to sqrt" -msgstr "Argument négatif pour sqrt" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3284 +msgid "Enter the block height" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:97 emc/rs274ngc/rs274ngc_return.hh:97 -msgid "Negative d word tool radius index used" -msgstr "Utilisation d'un d'index D de rayon d'outil négatif" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3285 +msgid "Block height measured from base table" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:98 emc/rs274ngc/rs274ngc_return.hh:98 -msgid "Negative f word used" -msgstr "Utilisation d'un mot f négatif" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3297 +msgid "Conversion error in btn_block_height" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:99 emc/rs274ngc/rs274ngc_return.hh:99 -msgid "Negative g code used" -msgstr "Utilisation d'un g-code négatif" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3298 +msgid "Conversion error in btn_block_height!" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:100 emc/rs274ngc/rs274ngc_return.hh:100 -msgid "Negative h word used" -msgstr "Utilisation d'un mot H négatif" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3536 +msgid "Please remove the mounted tool and press OK when done" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:101 emc/rs274ngc/rs274ngc_return.hh:101 -msgid "Negative l word used" -msgstr "Utilisation d'un mot l négatif" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3539 +#, python-brace-format +msgid "" +"Please change to tool\n" +"\n" +"# {0:d} {1}\n" +"\n" +" then click OK." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:102 emc/rs274ngc/rs274ngc_return.hh:102 -msgid "Negative m code used" -msgstr "Utilisation d'un m-code négatif" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3549 +msgid "Tool Change has been aborted!\n" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:103 emc/rs274ngc/rs274ngc_return.hh:103 -msgid "Negative or zero q value used" -msgstr "Utilisation d'une valeur q à zéro ou négative" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3550 +msgid "The old tool will remain set!" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:104 emc/rs274ngc/rs274ngc_return.hh:104 -msgid "Negative p word used" -msgstr "Utilisation d'un mot p négatif" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3570 +msgid "No or more than one tool selected in tool table" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:105 emc/rs274ngc/rs274ngc_return.hh:105 -msgid "Negative spindle speed used" -msgstr "Utilisation d'une vitesse de broche négative" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3571 +msgid "Please select only one tool in the table" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:106 emc/rs274ngc/rs274ngc_return.hh:106 -msgid "Negative tool id used" -msgstr "Utilisation d'un index d'outil négatif" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3573 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3580 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3589 +msgid "Warning Tool Touch off not possible!" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:107 emc/rs274ngc/rs274ngc_return.hh:107 -msgid "Nested comment found" -msgstr "Commentaires imbriqués" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3577 +msgid "you can not touch of a tool, witch is not mounted in the spindle" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:108 emc/rs274ngc/rs274ngc_return.hh:108 -msgid "No characters found in reading real value" -msgstr "Pas de caractère trouvé en lisant une valeur réelle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3578 +msgid "your selection has been reseted to the tool in spindle" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:109 emc/rs274ngc/rs274ngc_return.hh:109 -msgid "Non integer value for integer" -msgstr "Valeur non entière pour un entier" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3586 +#, fuzzy +msgid "" +"Tool touch off is not possible with cutter radius compensation switched on!\n" +msgstr "" +"Changement d'offsetd'outil impossible avec la compensation de rayon d'outil " +"active" -#: src/emc/rs274ngc/rs274ngc_return.hh:110 emc/rs274ngc/rs274ngc_return.hh:110 -msgid "Null missing after newline" -msgstr "Null manquant après un saut de ligne" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3587 +msgid "Please emit an G40 before tool touch off" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:111 emc/rs274ngc/rs274ngc_return.hh:111 -msgid "Parameter file out of order" -msgstr "Fichier de paramètres hors d'échelle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3597 +msgid "Real big error!" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:112 emc/rs274ngc/rs274ngc_return.hh:112 -msgid "Parameter number out of range" -msgstr "Numéro de paramètre hors d'échelle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3598 +msgid "" +"You managed to come to a place that is not possible in on_btn_tool_touchoff" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:113 emc/rs274ngc/rs274ngc_return.hh:113 -msgid "Parameter is readonly" -msgstr "Paramètres en lecture seule" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3602 +#, fuzzy, python-format +msgid "Enter value for axis %s to set:" +msgstr "Valeur non entière pour un entier" -#: src/emc/rs274ngc/rs274ngc_return.hh:114 emc/rs274ngc/rs274ngc_return.hh:114 -msgid "Q word missing with g83" -msgstr "Mot q manquant avec G83" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3603 +#, python-brace-format +msgid "Set parameter of tool {0:d} and axis {1} to:" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:115 emc/rs274ngc/rs274ngc_return.hh:115 -msgid "Queue is not empty after probing" -msgstr "La queue n'est pas vide après la mesure" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3608 +#, python-format +msgid "Conversion error because of wrong entry for touch off axis %s" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:116 emc/rs274ngc/rs274ngc_return.hh:116 -msgid "R clearance plane unspecified in cycle" -msgstr "Plan de retrait R non spécifié dans le cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3628 +#, fuzzy +msgid "Enter the tool number as integer " +msgstr "Récupération du N° d'outil après arrêt" -#: src/emc/rs274ngc/rs274ngc_return.hh:117 emc/rs274ngc/rs274ngc_return.hh:117 -msgid "R i j k words all missing for arc" -msgstr "Mots R i j k manquants pour l'arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3629 +#, fuzzy +msgid "Select the tool to change" +msgstr "Choisir l'item à mesurer" -#: src/emc/rs274ngc/rs274ngc_return.hh:118 emc/rs274ngc/rs274ngc_return.hh:118 -msgid "R less than x in cycle in yz plane" -msgstr "R inférieur à x dans un cycle dans le plan yz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3631 +msgid "Conversion error because of wrong entry for tool number\n" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:119 emc/rs274ngc/rs274ngc_return.hh:119 -msgid "R less than y in cycle in xz plane" -msgstr "R inférieur à y dans un cycle dans le plan xz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3632 +msgid "enter only integer nummbers" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:120 emc/rs274ngc/rs274ngc_return.hh:120 -msgid "R less than z in cycle in xy plane" -msgstr "R inférieur à z dans un cycle dans le plan xy" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3657 +msgid "Selected tool is already in spindle, no change needed." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:121 emc/rs274ngc/rs274ngc_return.hh:121 -msgid "R word with no g code that uses it" -msgstr "Mot R sans Gcode pour l'utiliser" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3653 +msgid "" +"you selected no or more than one tool, the tool selection must be unique" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:122 emc/rs274ngc/rs274ngc_return.hh:122 -msgid "Slash missing after first atan argument" -msgstr "Slash manquant après le premier argument d'atan" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3672 +msgid "Could not understand the entered tool number. Will not change anything" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:123 emc/rs274ngc/rs274ngc_return.hh:123 -msgid "Spindle not turning clockwise in g84" -msgstr "La broche ne tourne pas en sens horaire dans g84" +#: src/emc/usr_intf/gmoccapy/dialogs.py:33 +#: src/emc/usr_intf/gmoccapy/dialogs.py:38 +msgid "Enter System Unlock Code" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:124 emc/rs274ngc/rs274ngc_return.hh:124 -msgid "Spindle not turning in g86" -msgstr "Broche pas en rotation en G86" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter value" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:125 emc/rs274ngc/rs274ngc_return.hh:125 -msgid "Spindle not turning in g87" -msgstr "Broche pas en rotation en G87" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter the value to set" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:126 emc/rs274ngc/rs274ngc_return.hh:126 -msgid "Spindle not turning in g88" -msgstr "Broche pas en rotation en G88" +#: src/emc/usr_intf/gmoccapy/notification.py:205 +#, python-format +msgid "Error trying to delet the message with number %s" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:127 emc/rs274ngc/rs274ngc_return.hh:127 -msgid "Sscanf failed" -msgstr "Erreur de sscanf()" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:409 +msgid "left rotate, middle move, right zoom" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:128 emc/rs274ngc/rs274ngc_return.hh:128 -msgid "Start point too close to probe point" -msgstr "Point de départ trop proche du point cible" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:413 +msgid "left zoom, middle move, right rotate" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:129 emc/rs274ngc/rs274ngc_return.hh:129 -msgid "Too many m codes on line" -msgstr "Trop de M-codes sur une ligne" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:417 +msgid "left move, middle rotate, right zoom" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:130 emc/rs274ngc/rs274ngc_return.hh:130 -msgid "Pocket max too large" -msgstr "Poche max trop grande" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:421 +msgid "left zoom, middle rotate, right move" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:425 +msgid "left move, middle zoom, right rotate" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:131 emc/rs274ngc/rs274ngc_return.hh:131 -msgid "Tool radius not less than arc radius with comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:429 +msgid "left rotate, middle zoom, right move" msgstr "" -"Rayon d'outil non inférieur au rayon de l'arc après compensation de rayon " -"d'outil" -#: src/emc/rs274ngc/rs274ngc_return.hh:132 emc/rs274ngc/rs274ngc_return.hh:132 -msgid "Two g codes used from same modal group" -msgstr "Deux Gcodes utilisés dans le même groupe modal" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:526 +#, fuzzy +msgid "clear plot" +msgstr "Rafraîchir le parcours d'outil" -#: src/emc/rs274ngc/rs274ngc_return.hh:133 emc/rs274ngc/rs274ngc_return.hh:133 -msgid "Two m codes used from same modal group" -msgstr "Deux Mcodes utilisés dans le même groupe modal" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:585 +#, fuzzy +msgid "view perspective" +msgstr "Vue en perspective" -#: src/emc/rs274ngc/rs274ngc_return.hh:134 emc/rs274ngc/rs274ngc_return.hh:134 -#, c-format -msgid "Unable to open file <%s>" -msgstr "Impossible d'ouvrir le fichier <%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:608 +msgid "view along the X axis from positive to negative" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:135 emc/rs274ngc/rs274ngc_return.hh:135 -msgid "Unclosed comment found" -msgstr "Commentaire non fermé" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:633 +msgid "view along the Y axis from positive to negative" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:136 emc/rs274ngc/rs274ngc_return.hh:136 -msgid "Unclosed expression" -msgstr "Expression non fermée" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:658 +msgid "view along the Z axis from positive to negative" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:137 emc/rs274ngc/rs274ngc_return.hh:137 -msgid "Unknown g code used" -msgstr "Utilisation d'un G code inconnu" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:685 +msgid "Show or hide tool path" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:138 emc/rs274ngc/rs274ngc_return.hh:138 -msgid "Unknown m code used" -msgstr "Utilisation d'un Mcode inconnu" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:708 +#, fuzzy +msgid "Show or hide dimensions" +msgstr "Montrer raccourcis clavier" -#: src/emc/rs274ngc/rs274ngc_return.hh:139 emc/rs274ngc/rs274ngc_return.hh:139 -msgid "Unknown operation" -msgstr "Opération inconnue" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:731 +msgid "" +"view along the Y axis from positive to negative as viewn for a back tool " +"lathe" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:140 emc/rs274ngc/rs274ngc_return.hh:140 -msgid "Unknown operation name starting with a" -msgstr "Nom d'opération commençant par a inconnu " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:791 +#, fuzzy +msgid "Offset Page" +msgstr "Valeur d'offset" -#: src/emc/rs274ngc/rs274ngc_return.hh:141 emc/rs274ngc/rs274ngc_return.hh:141 -msgid "Unknown operation name starting with m" -msgstr "Nom d'opération commençant par m inconnu " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:809 +#, fuzzy +msgid "Tooledit" +msgstr "Outils" -#: src/emc/rs274ngc/rs274ngc_return.hh:142 emc/rs274ngc/rs274ngc_return.hh:142 -msgid "Unknown operation name starting with o" -msgstr "Nom d'opération commençant par o inconnu " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:831 +#, fuzzy +msgid "File Selection" +msgstr "Sélection d'axe" -#: src/emc/rs274ngc/rs274ngc_return.hh:143 emc/rs274ngc/rs274ngc_return.hh:143 -msgid "Unknown operation name starting with x" -msgstr "Nom d'opération commençant par x inconnu " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:869 +#, fuzzy +msgid "Toggle between metric and imperial units" +msgstr "Bascule entre « glisser la vue » et « tourner la vue »" -#: src/emc/rs274ngc/rs274ngc_return.hh:144 emc/rs274ngc/rs274ngc_return.hh:144 -msgid "Unknown word starting with a" -msgstr "Mot commençant par a inconnu " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:887 +msgid "Switch DRO to DTG mode" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:145 emc/rs274ngc/rs274ngc_return.hh:145 -msgid "Unknown word starting with c" -msgstr "Mot commençant par c inconnu " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:905 +#, fuzzy +msgid "Toggle between machine and relative coordinates" +msgstr "Bascule entre « glisser la vue » et « tourner la vue »" -#: src/emc/rs274ngc/rs274ngc_return.hh:146 emc/rs274ngc/rs274ngc_return.hh:146 -msgid "Unknown word starting with e" -msgstr "Mot commençant par e inconnu " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:928 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:946 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:963 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:980 +msgid "Klick to toggle through the DRO modes" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:147 emc/rs274ngc/rs274ngc_return.hh:147 -msgid "Unknown word starting with f" -msgstr "Mot commençant par f inconnu " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1253 +#, fuzzy +msgid "Ignore limits" +msgstr "Dépassement de limite" -#: src/emc/rs274ngc/rs274ngc_return.hh:148 emc/rs274ngc/rs274ngc_return.hh:148 -msgid "Unknown word starting with l" -msgstr "Mot commençant par l inconnu " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1321 +#, fuzzy +msgid "Jogging" +msgstr "Prise d'origine" -#: src/emc/rs274ngc/rs274ngc_return.hh:149 emc/rs274ngc/rs274ngc_return.hh:149 -msgid "Unknown word starting with r" -msgstr "Mot commençant par r inconnu " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1430 +msgid "Information over the tool in spindle" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:150 emc/rs274ngc/rs274ngc_return.hh:150 -msgid "Unknown word starting with s" -msgstr "Mot commençant par s inconnu " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1448 +#, fuzzy +msgid "Tool no." +msgstr "Informations outil" -#: src/emc/rs274ngc/rs274ngc_return.hh:151 emc/rs274ngc/rs274ngc_return.hh:151 -msgid "Unknown word starting with t" -msgstr "Mot commençant par t inconnu " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1474 +#, fuzzy +msgid "Diameter" +msgstr "Diamètre:" -#: src/emc/rs274ngc/rs274ngc_return.hh:152 emc/rs274ngc/rs274ngc_return.hh:152 -msgid "Unknown word where unary operation could be" -msgstr "Mot inconnu là ou devrait être une opération unaire" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1503 +#, fuzzy +msgid "offset z" +msgstr "Offsets" -#: src/emc/rs274ngc/rs274ngc_return.hh:153 emc/rs274ngc/rs274ngc_return.hh:153 -msgid "X and y words missing for arc in xy plane" -msgstr "Mots x et y manquants pour un arc dans le plan xy" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1532 +#, fuzzy +msgid "offset x" +msgstr "Offsets" -#: src/emc/rs274ngc/rs274ngc_return.hh:154 emc/rs274ngc/rs274ngc_return.hh:154 -msgid "X and z words missing for arc in xz plane" -msgstr "Mots x et z manquants pour un arc dans le plan xz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1580 +#, fuzzy +msgid "Tool information" +msgstr "Configuration" -#: src/emc/rs274ngc/rs274ngc_return.hh:155 emc/rs274ngc/rs274ngc_return.hh:155 -msgid "X value unspecified in yz plane canned cycle" -msgstr "Valeur de x non spécifiée dans un cycle préprogrammé dans le plan yz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1592 +msgid "G and M code information as well as speed and feed" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:156 emc/rs274ngc/rs274ngc_return.hh:156 -msgid "Y and z words missing for arc in yz plane" -msgstr "Mots y et z manquants pour un arc dans le plan yz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1611 +#, fuzzy +msgid "active_mcodes_label" +msgstr "Codes actifs:" -#: src/emc/rs274ngc/rs274ngc_return.hh:157 emc/rs274ngc/rs274ngc_return.hh:157 -msgid "Y value unspecified in xz plane canned cycle" -msgstr "Valeur de y non spécifiée dans un cycle préprogrammé dans le plan xz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1663 +#, fuzzy +msgid "active_gcodes_label" +msgstr "Codes actifs:" -#: src/emc/rs274ngc/rs274ngc_return.hh:158 emc/rs274ngc/rs274ngc_return.hh:158 -msgid "Z value unspecified in xy plane canned cycle" -msgstr "Valeur de z non spécifiée pour un cycle préprogrammé dans le plan xy" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1717 +#, fuzzy +msgid "G-Code" +msgstr "Puissance" -#: src/emc/rs274ngc/rs274ngc_return.hh:159 emc/rs274ngc/rs274ngc_return.hh:159 -msgid "Zero or negative argument to ln" -msgstr "Argument négatif ou à zéro pour ln" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1730 +msgid "The name and location of the loaded program" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:161 emc/rs274ngc/rs274ngc_return.hh:161 -msgid "K word missing with g33/g33.1" -msgstr "Mot K manquant avec G33/G33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1742 +#, fuzzy +msgid "No Program loaded" +msgstr "Fichier programme" -#: src/emc/rs274ngc/rs274ngc_return.hh:162 emc/rs274ngc/rs274ngc_return.hh:162 -msgid "F word used with a g33/g33.1" -msgstr "Mot F utilisé avec un G33/G33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1750 +#, fuzzy +msgid "Program" +msgstr "Options de programme" -#: src/emc/rs274ngc/rs274ngc_return.hh:163 emc/rs274ngc/rs274ngc_return.hh:163 -msgid "Unknown operation name starting with e" -msgstr "Nom d'opération commençant par e inconnu " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1800 +msgid "Vel." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:164 emc/rs274ngc/rs274ngc_return.hh:164 -msgid "Unknown operation name starting with n" -msgstr "Nom d'opération commençant par n inconnu " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1814 +msgid "Displays the current velocity" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:165 emc/rs274ngc/rs274ngc_return.hh:165 -msgid "Unknown operation name starting with g" -msgstr "Nom d'opération commençant par g inconnu " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1838 +msgid "adjust max vel of machine" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:166 emc/rs274ngc/rs274ngc_return.hh:166 -msgid "Unknown operation name starting with l" -msgstr "Nom d'opération commençant par l inconnu " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1854 +#, fuzzy +msgid "Max. Velocity" +msgstr "Correcteur de vitesse maximale" -#: src/emc/rs274ngc/rs274ngc_return.hh:167 emc/rs274ngc/rs274ngc_return.hh:167 -msgid "Too many subroutine parameters" -msgstr "Trop de paramètres de sous-programmes" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1885 +msgid "Displayes the programmed feed rate" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:168 emc/rs274ngc/rs274ngc_return.hh:168 -msgid "Too many subroutine levels" -msgstr "Trop de niveaux de sous-programmes" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1904 +#, fuzzy +msgid "reset feed override to 100 %" +msgstr "Correction de la vitesse entre 0% et 100%" -#: src/emc/rs274ngc/rs274ngc_return.hh:169 -#: src/emc/rs274ngc/rs274ngc_return.hh:170 emc/rs274ngc/rs274ngc_return.hh:169 -msgid "Unknown control command in o word" -msgstr "Commande de contrôle inconnue des mot o" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1922 +#, fuzzy +msgid "adjust feed override" +msgstr "Ajuster le correcteur de vitesse:" -#: src/emc/rs274ngc/rs274ngc_return.hh:170 -#: src/emc/rs274ngc/rs274ngc_return.hh:171 emc/rs274ngc/rs274ngc_return.hh:170 -msgid "Too many oword labels" -msgstr "Trop de labels mots o" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1941 +#, fuzzy +msgid "Feed Override [%]" +msgstr "Correcteur de vitesse externe" -#: src/emc/rs274ngc/rs274ngc_return.hh:171 -#: src/emc/rs274ngc/rs274ngc_return.hh:172 emc/rs274ngc/rs274ngc_return.hh:171 -msgid "Unknown oword number" -msgstr "Nombre de mots o inconnu" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2034 +#, fuzzy +msgid "Cooling" +msgstr "Arrosage" -#: src/emc/rs274ngc/rs274ngc_return.hh:172 -#: src/emc/rs274ngc/rs274ngc_return.hh:173 emc/rs274ngc/rs274ngc_return.hh:172 -msgid "Nested subroutine definition" -msgstr "Définition de sous programmes imbriquées" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2285 +#, fuzzy +msgid "Spindle [rpm]" +msgstr "Broche" -#: src/emc/rs274ngc/rs274ngc_return.hh:173 -#: src/emc/rs274ngc/rs274ngc_return.hh:174 emc/rs274ngc/rs274ngc_return.hh:173 -msgid "Not in subroutine definition" -msgstr "Pas dans une définition de sous-programmme" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2377 +#, fuzzy +msgid "" +"Search\n" +" back" +msgstr "Chemin de recherche" -#: src/emc/rs274ngc/rs274ngc_return.hh:174 -#: src/emc/rs274ngc/rs274ngc_return.hh:175 emc/rs274ngc/rs274ngc_return.hh:174 -msgid "File not open" -msgstr "Fichier non ouvert" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2394 +#, fuzzy +msgid "" +"Search\n" +" fwd" +msgstr "Chemin de recherche" -#: src/emc/rs274ngc/rs274ngc_return.hh:175 -#: src/emc/rs274ngc/rs274ngc_return.hh:176 emc/rs274ngc/rs274ngc_return.hh:175 -msgid "Need tool prepared -Txx- for toolchange" -msgstr "Nécessaire d'appeler l'outil -Txx pour le changeur d'outil" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2446 +#, fuzzy +msgid "" +"Replace\n" +" Text:" +msgstr "Remplacer par:" -#: src/emc/rs274ngc/rs274ngc_return.hh:176 -#: src/emc/rs274ngc/rs274ngc_return.hh:177 emc/rs274ngc/rs274ngc_return.hh:176 -msgid "Cannot change planes with cutter radius compensation on" -msgstr "Impossible de changer de plan avec la compensation de rayon d'outil" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2456 +#, fuzzy +msgid "" +"Replace\n" +" All" +msgstr "Remplacer tous" -#: src/emc/rs274ngc/rs274ngc_return.hh:177 -#: src/emc/rs274ngc/rs274ngc_return.hh:178 emc/rs274ngc/rs274ngc_return.hh:177 -msgid "Cutter radius compensation allowed only in XY, XZ planes" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2470 +#, fuzzy +msgid "" +"Ignore\n" +" Case" +msgstr "Ignorer M1" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2616 +msgid "Start as fullscreen" msgstr "" -"Compensation de rayon d'outil permise seulement dans les plans XY et XZ" -#: src/emc/rs274ngc/rs274ngc_return.hh:178 -#: src/emc/rs274ngc/rs274ngc_return.hh:179 emc/rs274ngc/rs274ngc_return.hh:178 -msgid "P word missing with G76" -msgstr "Mot P manquant avec G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2631 +#, fuzzy +msgid "Start maximized" +msgstr "Force à maximiser" -#: src/emc/rs274ngc/rs274ngc_return.hh:179 -#: src/emc/rs274ngc/rs274ngc_return.hh:180 emc/rs274ngc/rs274ngc_return.hh:179 -msgid "I J or K words missing with G76" -msgstr "Mot I,j ou k manquants avec G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2646 +msgid "Start as window" +msgstr "" -# -#: src/emc/rs274ngc/rs274ngc_return.hh:180 -#: src/emc/rs274ngc/rs274ngc_return.hh:181 emc/rs274ngc/rs274ngc_return.hh:180 -msgid "Cannot move rotary axes with G76" -msgstr "Impossible d'actionner les axes rotatifs avec G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2670 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4426 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4943 +#, fuzzy +msgid "X Pos." +msgstr " Pos " -#: src/emc/rs274ngc/rs274ngc_return.hh:181 -#: src/emc/rs274ngc/rs274ngc_return.hh:182 emc/rs274ngc/rs274ngc_return.hh:181 -msgid "Multiple e words on one line" -msgstr "Multiples mots e sur une ligne" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2683 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4437 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4928 +#, fuzzy +msgid "Y Pos." +msgstr " Pos " -#: src/emc/rs274ngc/rs274ngc_return.hh:182 -#: src/emc/rs274ngc/rs274ngc_return.hh:183 emc/rs274ngc/rs274ngc_return.hh:182 -msgid "Named parameter not terminated" -msgstr "Paramètre nommé non terminé" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2698 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4855 +msgid "Width" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:183 -#: src/emc/rs274ngc/rs274ngc_return.hh:184 emc/rs274ngc/rs274ngc_return.hh:183 -msgid "Out of memory" -msgstr "Débordement de mémoire" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2713 +msgid "Height" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:184 -#: src/emc/rs274ngc/rs274ngc_return.hh:185 emc/rs274ngc/rs274ngc_return.hh:184 -msgid "S word missing with G96" -msgstr "Mot S manquant avec G96" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2811 +msgid "hide cursor" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:185 -#: src/emc/rs274ngc/rs274ngc_return.hh:186 emc/rs274ngc/rs274ngc_return.hh:185 -msgid "Queue is not empty after external input" -msgstr "La queue n'est pas vide après une entrée externe" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2830 +#, fuzzy +msgid "Main Window" +msgstr "Éléments de base" -#: src/emc/rs274ngc/rs274ngc_return.hh:186 -#: src/emc/rs274ngc/rs274ngc_return.hh:187 emc/rs274ngc/rs274ngc_return.hh:186 -msgid "Can't select analog input with wait type != immediate return" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2857 +#, fuzzy +msgid "Show keyboard on offset" +msgstr "Afficher les offs_ets" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2871 +msgid "Show keyboard on tooledit" msgstr "" -"Ne peut sélectionner une entrée analogique avec le type attente != retour " -"immédiat" -#: src/emc/rs274ngc/rs274ngc_return.hh:187 -#: src/emc/rs274ngc/rs274ngc_return.hh:188 emc/rs274ngc/rs274ngc_return.hh:187 -msgid "Zero timeout with wait type != immediate return" -msgstr "Attente de zéro avec un type attente != retour immédiat" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2885 +msgid "Show keyboard on MDI" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:188 -#: src/emc/rs274ngc/rs274ngc_return.hh:189 emc/rs274ngc/rs274ngc_return.hh:188 -msgid "Invalid to select both a digital and an analog input with M66" -msgstr "Impossible de mélanger entrées digitales et analogiques avec M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2899 +msgid "Show keyboard on EDIT" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:189 -#: src/emc/rs274ngc/rs274ngc_return.hh:190 emc/rs274ngc/rs274ngc_return.hh:189 -msgid "Need to have either a valid P or a valid E word with M66" -msgstr "Nécessaire d'avoir au choix un mot p ou un mot e valide avec m66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2913 +msgid "Show keyboard on load file" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:190 -#: src/emc/rs274ngc/rs274ngc_return.hh:191 emc/rs274ngc/rs274ngc_return.hh:190 -msgid "Q word missing with g73" -msgstr "Mot Q manquant avec G73" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2931 +#, fuzzy +msgid "Keyboard" +msgstr "Puissance" -#: src/emc/rs274ngc/rs274ngc_return.hh:191 -#: src/emc/rs274ngc/rs274ngc_return.hh:192 emc/rs274ngc/rs274ngc_return.hh:191 -msgid "Digital input selected out of bounds" -msgstr "Entrée numérique choisie hors limites" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2959 +#, fuzzy +msgid "show preview" +msgstr "Parcours d'outil" -#: src/emc/rs274ngc/rs274ngc_return.hh:192 -#: src/emc/rs274ngc/rs274ngc_return.hh:193 emc/rs274ngc/rs274ngc_return.hh:192 -msgid "Analog input selected out of bounds" -msgstr "Entrée analogique choisie hors limites" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2973 +#, fuzzy +msgid "show offsets" +msgstr "Afficher les offs_ets" -#: src/emc/rs274ngc/rs274ngc_return.hh:193 -#: src/emc/rs274ngc/rs274ngc_return.hh:194 emc/rs274ngc/rs274ngc_return.hh:193 -msgid "W value unspecified in UV plane canned cycle" -msgstr "Valeur de W non spécifiée pour un cycle préprogrammé dans le plan UV" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2991 +msgid "On Touch off" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:194 -#: src/emc/rs274ngc/rs274ngc_return.hh:195 emc/rs274ngc/rs274ngc_return.hh:194 -msgid "U value unspecified in VW plane canned cycle" -msgstr "Valeur de U non spécifiée pour un cycle préprogrammé dans le plan xy" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3005 +msgid "" +" Display \n" +"Aux Screen" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:195 -#: src/emc/rs274ngc/rs274ngc_return.hh:196 emc/rs274ngc/rs274ngc_return.hh:195 -msgid "V value unspecified in UW plane canned cycle" -msgstr "Valeur de V non spécifiée pour un cycle préprogrammé dans le plan UW" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3052 +#, fuzzy +msgid "Relative Color" +msgstr "Couleur texte Relatif" -#: src/emc/rs274ngc/rs274ngc_return.hh:196 -#: src/emc/rs274ngc/rs274ngc_return.hh:197 emc/rs274ngc/rs274ngc_return.hh:196 -msgid "R less than W in cycle in UV plane" -msgstr "R inférieur à W dans un cycle dans le plan UV" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3079 +#, fuzzy +msgid "Absolute Color" +msgstr "Couleur texte Absolu" -#: src/emc/rs274ngc/rs274ngc_return.hh:197 -#: src/emc/rs274ngc/rs274ngc_return.hh:198 emc/rs274ngc/rs274ngc_return.hh:197 -msgid "R less than U in cycle in VW plane" -msgstr "R inférieur à U dans un cycle dans le plan VW" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3110 +#, fuzzy +msgid "DTG Color" +msgstr "DTG Textcolor" -#: src/emc/rs274ngc/rs274ngc_return.hh:198 -#: src/emc/rs274ngc/rs274ngc_return.hh:199 emc/rs274ngc/rs274ngc_return.hh:198 -msgid "R less than V in cycle in UW plane" -msgstr "R inférieur à V dans un cycle dans le plan UW" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3139 +msgid "Use Auto Units" +msgstr "" -#: src/emc/motion/control.c:578 -#, c-format -msgid "fault %d during orient in progress" -msgstr "Défaut %d pendant une orientation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3159 +#, fuzzy +msgid "Show the DRO Button" +msgstr "Maj+bouton gauche" -#: src/emc/rs274ngc/interp_check.cc:316 -msgid "P value must be 0,1,or 2 with M19" -msgstr "Valeur de P doit être 0, 1 ou 2 avec M19 " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3190 +#, fuzzy +msgid "Homed color" +msgstr "Prise d'origine générale" -#: src/emc/rs274ngc/interp_check.cc:336 -msgid "R value must be within 0..360 with M19" -msgstr "La valeur de R doit être comprise entre 0 et 360 avec M19" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3204 +#, fuzzy +msgid "Unhomed color" +msgstr "Annulation OM de tous les axes" -#: src/emc/rs274ngc/interp_convert.cc:2786 -#, c-format +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3299 +#, fuzzy +msgid "Digits" +msgstr "Numérique" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3344 msgid "" -"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" +"toggle DRO mode \n" +"clicking on the DRO" msgstr "" -"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" - -#: src/emc/rs274ngc/interp_convert.cc:2787 -#, c-format -msgid "BUG: restore from level %d !?" -msgstr "BUG: restore from level %d !?" -#: src/emc/rs274ngc/interp_convert.cc:2788 -#, c-format -msgid "BUG: restore to level %d !?" -msgstr "BUG: restore to level %d !?" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3369 +#, fuzzy +msgid "DRO" +msgstr "a)" -#: src/emc/rs274ngc/interp_convert.cc:3115 -msgid "Cannot restore context from invalid stack frame - missing M70/M73?" -msgstr "Cannot restore context from invalid stack frame - missing M70/M73?" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3401 +#, fuzzy +msgid "Grid size" +msgstr "Taille" -#: src/emc/rs274ngc/interp_namedparams.cc:191 -#, c-format -msgid "cant open ini file '%s'" -msgstr "Impossible d'ouvrir %s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3430 +#, fuzzy +msgid "Show DRO" +msgstr "Afficher" -#: src/emc/rs274ngc/interp_namedparams.cc:208 -#, c-format -msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" -msgstr "Paramètre nommé #<%s> non trouvé au '%s': erreur=0x%x" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3444 +#, fuzzy +msgid "Show offsets" +msgstr "Afficher les offs_ets" -#: src/emc/rs274ngc/interp_namedparams.cc:378 -#, c-format -msgid "Cannot assign to read-only parameter #<%s>" -msgstr "Impossible d'assigner au paramètre #<%s> il est en lecture seule" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3458 +#, fuzzy +msgid "Show DTG" +msgstr "Afficher" -#: src/emc/usr_intf/pncconf/pncconf.glade:60839 -msgid "Smart Serial 4" -msgstr "Smart Serial 4" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3483 +#, fuzzy +msgid "Mouse Button mode" +msgstr "Boutons de jog externes" -#: tcl/ngcgui.tcl:572 -msgid "can not include subroutines within ngcgui subfile" -msgstr "inclusion d'un sous programme dans un sous-fichier ngcgui impossible" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3512 +#, fuzzy +msgid "Preview" +msgstr "Page" -#: tcl/ngcgui_app.tcl:25 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3565 +#, fuzzy msgid "" -"requires command inifindall\n" -"from axis.py (LinuxCNC 2.5) or" +"current\n" +" file" +msgstr "on current subfile" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3611 +msgid "File to load on start" msgstr "" -"nécessite une commande inifindall\n" -"depuis axis.py (LinuxCNC 2.5) ou" -#: tcl/ngcgui_app.tcl:54 -msgid "Substituting" -msgstr "Substitution" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3638 +#, fuzzy +msgid "Select user dir" +msgstr "Sélection de la vitesse de jog" -#: tcl/ngcgui_app.tcl:54 -msgid "for" -msgstr "pour" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3647 +#, fuzzy +msgid "Select jump to dir" +msgstr "Choisir l'item à mesurer" -#: tcl/ngcgui_app.tcl:58 -msgid "not readable" -msgstr "illisible" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3767 +#, fuzzy +msgid "Themes and sound" +msgstr "Défauts et options" -#: tcl/ngcgui_app.tcl:64 tcl/ngcgui_app.tcl:67 -msgid "Unexpected: multiple startups for ngcgui" -msgstr "Inattendu: startups multiples pour ngcgui" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3799 +msgid "Appearance" +msgstr "" -#: tcl/ngcgui_app.tcl:65 -msgid "LinuxCNC" -msgstr "LinuxCNC" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3833 +#, fuzzy +msgid "Scale max velocity" +msgstr "Vitesse linéaire maximale" -#: tcl/ngcgui_app.tcl:66 -msgid "for linuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" -msgstr "pour LinuxCNC 2.5.xxx. Ne pas inclure tkapp.py dans le fichier ini" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3846 +#, fuzzy +msgid "Scale jog velocity" +msgstr "Afficher la _vitesse d'avance" -#: tcl/ngcgui_app.tcl:85 -msgid "LinuxCNC version" -msgstr "LinuxCNC version" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3861 +#, fuzzy +msgid "Scale feed override" +msgstr "Ajuster le correcteur de vitesse:" -#: tcl/ngcgui_app.tcl:86 -msgid "for LinuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" -msgstr "pour LinuxCNC 2.5.xxx. Ne pas inclure tkapp.py dans le fichier ini" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3876 +#, fuzzy +msgid "Scale spindle override" +msgstr "Ajuster le correcteur de vitesse de broche" -#: src/emc/usr_intf/tooledit.tcl:65 -msgid "Problem reading ~/.tooleditrc" -msgstr "Problème à la lecture de ~/.tooleditrc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3970 +#, fuzzy +msgid "Hardware MPG Scale" +msgstr "Échelle moteur pas à pas" -#: src/emc/usr_intf/tooledit.tcl:82 -#, tcl-format -msgid "Note: Ignoring duplicate column name: %s" -msgstr "Note: ignore le nom des colonnes dupliquées: %s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3994 +msgid "Use keyboard shortcuts" +msgstr "" -#: src/emc/usr_intf/tooledit.tcl:93 -#, tcl-format -msgid "Unknown column: %s" -msgstr "Colonne %s inconnue" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4007 +msgid "Keyboard shortcuts" +msgstr "" -#: src/emc/usr_intf/tooledit.tcl:210 src/emc/usr_intf/tooledit.tcl:213 -#: src/emc/usr_intf/tooledit.tcl:598 src/emc/usr_intf/tooledit.tcl:599 -#: src/emc/usr_intf/tooledit.tcl:1032 -msgid "NEW" -msgstr "Nouveau" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4034 +#, fuzzy +msgid "Use unlock code" +msgstr "Codeur inutilisé" -#: src/emc/usr_intf/tooledit.tcl:232 -#, tcl-format -msgid "%s must be a number" -msgstr "%s doit être un nombre" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4050 +msgid "Do not use unlock code" +msgstr "" -#: src/emc/usr_intf/tooledit.tcl:241 -#, tcl-format -msgid "filename: <%s> not readable" -msgstr "fichier <%s> illisible" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4066 +msgid "Use hal pin to unlock" +msgstr "" -#: src/emc/usr_intf/tooledit.tcl:245 -#, tcl-format -msgid "filename: <%s> not writable" -msgstr "fichier <%s> protégé en écriture" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4087 +#, fuzzy +msgid "Unlock settings" +msgstr "Ajustement outil" -#: src/emc/usr_intf/tooledit.tcl:250 -#, tcl-format -msgid "directory: <%s> not writable" -msgstr "répertoire <%s> protégé en écriture" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4197 +#, fuzzy +msgid "Spindle bar min" +msgstr "Activation frein de broche" -#: src/emc/usr_intf/tooledit.tcl:294 -#, tcl-format -msgid "Skipping linenumber %d for tag %s, value <%s> is not a number" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4210 +#, fuzzy +msgid "Spindle bar max" +msgstr "Frein de broche" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4252 +msgid "Hide turtle Jog Button" msgstr "" -"N° de ligne %d sauté pour le tag %s, la valeur <%s> n'est pas un nombre" -#: src/emc/usr_intf/tooledit.tcl:300 -#, tcl-format -msgid "Skipping linenumber %d for tag %s, expected integer not <%s>" -msgstr "N° de ligne %d sauté pour le tag %s, attends un entier, non <%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4282 +msgid "Turtle jog Factor" +msgstr "" -#: src/emc/usr_intf/tooledit.tcl:316 -#, tcl-format -msgid "At linenumber %d, Unknown tag <%s>" -msgstr "Au N° de ligne %d, tag <%s> inconnu" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4318 +#, fuzzy +msgid "Turtle Jog" +msgstr "Frontaux" -#: src/emc/usr_intf/tooledit.tcl:399 -#, tcl-format -msgid "%s: Column sorting not available with tcl_version==%s" -msgstr "%s: tri de colonnes indisponible avec la version tcl==%s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4360 +msgid "Hardware" +msgstr "" -#: src/emc/usr_intf/tooledit.tcl:408 -msgid "tool" -msgstr "outil" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4392 +msgid "Use auto tool measurement" +msgstr "" -#: src/emc/usr_intf/tooledit.tcl:409 -msgid "poc" -msgstr "poc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4450 +#, fuzzy +msgid "Probe Height" +msgstr "Entrée palpeur" -#: src/emc/usr_intf/tooledit.tcl:410 -msgid "diam" -msgstr "dia" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4485 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4498 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4527 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4556 +#, fuzzy +msgid "0.000" +msgstr ".0001" -#: src/emc/usr_intf/tooledit.tcl:411 -msgid "front" -msgstr "frontal" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4514 +#, fuzzy +msgid "Z Pos." +msgstr " Pos " -#: src/emc/usr_intf/tooledit.tcl:412 -msgid "back" -msgstr "arrière" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4543 +#, fuzzy +msgid "Max. Probe" +msgstr "Palpeur" -#: src/emc/usr_intf/tooledit.tcl:413 -msgid "orien" -msgstr "orient." +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4575 +#, fuzzy +msgid "Probe Informations" +msgstr "Options de programme" -#: src/emc/usr_intf/tooledit.tcl:414 -msgid "comment" -msgstr "commentaire" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4607 +#, fuzzy +msgid "Search Vel." +msgstr "Chemin de recherche" -#: src/emc/usr_intf/tooledit.tcl:444 -msgid "Del" -msgstr "Eff." +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4618 +#, fuzzy +msgid "Probe Vel." +msgstr "Entrée palpeur" -#: src/emc/usr_intf/tooledit.tcl:473 -msgid "ReLoadTable" -msgstr "RechargerTable" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4674 +#, fuzzy +msgid "Probe velocitys" +msgstr "Liste des interfaces graphiques" -#: src/emc/usr_intf/tooledit.tcl:478 -msgid "SaveFile" -msgstr "EnregistrerFichier" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4688 +msgid "" +"No valid configuration\n" +"found in your INI file,\n" +"please take a look at \n" +"the WIKI to check how\n" +"to configure the settings." +msgstr "" -#: src/emc/usr_intf/tooledit.tcl:483 -msgid "ReRead" -msgstr "Relire" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4708 +#, fuzzy +msgid "Tool Measurement" +msgstr "Arrosage" -#: src/emc/usr_intf/tooledit.tcl:485 -msgid "AddTool" -msgstr "AjouterOutil" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4737 +msgid "" +"If the 4'th axis is used\n" +"for a tool changer, you\n" +"hide the DRO and\n" +"jog buttons." +msgstr "" -#: src/emc/usr_intf/tooledit.tcl:535 -#, tcl-format -msgid "Opened %s" -msgstr "Ouvrir %s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4749 +#, fuzzy +msgid "Hide 4'th axis" +msgstr "T_ester cet axe" -#: src/emc/usr_intf/tooledit.tcl:536 -#, tcl-format -msgid "Created %s" -msgstr "Créer %s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4769 +#, fuzzy +msgid "Tool Changer" +msgstr "Ajustement outil" -#: src/emc/usr_intf/tooledit.tcl:537 -msgid "File updated" -msgstr "Fichier mis à jour" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4808 +msgid "Use frames" +msgstr "" -#: src/emc/usr_intf/tooledit.tcl:538 -msgid "File modified" -msgstr "Fichier modifié" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4840 +msgid "max." +msgstr "" -#: src/emc/usr_intf/tooledit.tcl:539 -msgid "File check errors" -msgstr "Erreurs de contrôle du fichier" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4992 +#, fuzzy +msgid "Launch test message" +msgstr "Lancer le panneau de test" -#: src/emc/usr_intf/tooledit.tcl:540 -msgid "File checked" -msgstr "Fichier vérifié" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5011 +msgid "" +" gmoccapy message\n" +" behavior and appearance " +msgstr "" -#: src/emc/usr_intf/tooledit.tcl:541 -msgid "File items deleted" -msgstr "Items du fichier effacés" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5049 +msgid "Do not use run from line" +msgstr "" -#: src/emc/usr_intf/tooledit.tcl:542 -msgid "Bogus lines in file ignored" -msgstr "Lignes du fichier boguées ignorées" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5065 +#, fuzzy +msgid "Use run from line" +msgstr "Démarrer à la lig_ne sélectionnée" -#: src/emc/usr_intf/tooledit.tcl:543 -msgid "File errors -- Check Entries" -msgstr "Erreurs de fichier -- Vérifier les entrées" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5086 +#, fuzzy +msgid "Run from line" +msgstr "Prise d'origine" -#: src/emc/usr_intf/tooledit.tcl:544 -msgid "Warning: File changed by another process" -msgstr "Attention: Fichier modifié par un autre process" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5119 +#, fuzzy +msgid "" +"Advanced\n" +" Settings" +msgstr "Options avancées" -#: src/emc/usr_intf/tooledit.tcl:545 -msgid "Warning: File deleted by another process" -msgstr "Attention: Fichier effacé par un autre process" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5157 +msgid "User tab 1" +msgstr "" -#: src/emc/usr_intf/tooledit.tcl:546 -msgid "Added Tool" -msgstr "Outil ajouté" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5171 +msgid "User tabs" +msgstr "" -#: src/emc/usr_intf/tooledit.tcl:550 -#, tcl-format -msgid "Sorted by %s, increasing" -msgstr "Tri croissant par %s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5207 +msgid "Estop the machine" +msgstr "" -#: src/emc/usr_intf/tooledit.tcl:551 -#, tcl-format -msgid "Sorted by %s, decreasing" -msgstr "Tri décroissant par %s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5229 +#, fuzzy +msgid "Turn the machine on/off" +msgstr "Marche machine" -#: src/emc/usr_intf/tooledit.tcl:593 -msgid "Added" -msgstr "Ajouté" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5251 +msgid "enter manual mode to jog axis by hand or touch off" +msgstr "" -#: src/emc/usr_intf/tooledit.tcl:802 -#, tcl-format -msgid "Tool %s, Column %s, parameter %s is not a number" -msgstr "Outil %s, colonne %s, le paramètre %s n'est pas un nombre" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5271 +#, fuzzy +msgid "enter MDI mode to launch g-code commands" +msgstr "Pas de commande MDI hors du mode MDI" -#: src/emc/usr_intf/tooledit.tcl:811 -#, tcl-format -msgid "Tool %s, parameter %s must be nonnegative integer" -msgstr "Outil %s, le paramètre %s ne doit pas être négatif" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5290 +#, fuzzy +msgid "enter auto mode to run programs" +msgstr "Programme Modbus série" -#: src/emc/usr_intf/tooledit.tcl:819 -#, tcl-format -msgid "Tool %s: must be 0..9 integer" -msgstr "Outil %s: doit être un entier entre 0 et 9" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5308 +msgid "Enter the settings page, the default code is \"123\"" +msgstr "" -#: src/emc/usr_intf/tooledit.tcl:826 -#, tcl-format -msgid "Tool %s: <%s> must be between -360 and 360" -msgstr "Outil %s: <%s> doit être compris entre -360 et 360" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5330 +#, fuzzy +msgid "show user tabs" +msgstr "Afficher le status" -#: src/emc/usr_intf/tooledit.tcl:842 -#, tcl-format -msgid "Pocket <%s> specified multiple times" -msgstr "Poche <%s> spécifiée de multiples fois" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5381 +msgid "open homing button list" +msgstr "" -#: src/emc/usr_intf/tooledit.tcl:857 -#, tcl-format -msgid "Tool <%s> specified multiple times" -msgstr "Outil <%s> spécifié de multiples fois" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5398 +#, fuzzy +msgid "open touch off button list" +msgstr "L'outil touchera le porte-pièce" -#: src/emc/usr_intf/tooledit.tcl:902 -msgid "File Modified" -msgstr "Fichier modifié" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5427 +msgid "Open the tooleditor page" +msgstr "" -#: src/emc/usr_intf/tooledit.tcl:903 -msgid "Save Modifications to File?" -msgstr "Enregistrer les modifications ?" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5498 +msgid "make the preview as large as possible" +msgstr "" -#: src/emc/usr_intf/tooledit.tcl:930 -#, tcl-format -msgid "" -"Only these columns are currently used:\n" -"\n" -" %s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5515 +msgid "Close moccapy / leave the program" msgstr "" -"Seules ces colonnes sont utilisé actuellement:\n" -"\n" -" %s" -#: src/emc/usr_intf/tooledit.tcl:931 -msgid "Limit display to these columns by specifying" -msgstr "Limite l'affichage aux colonnes spécifiées" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5577 +msgid "This button will show or hide the Keyboard" +msgstr "" -#: src/emc/usr_intf/tooledit.tcl:933 -msgid "Format for ini file is" -msgstr "Le format pour le fichier ini est" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5620 +#, fuzzy +msgid "Load a new program" +msgstr "Recharger le programme" -#: src/emc/usr_intf/tooledit.tcl:935 -msgid "For standalone use, invoke as" -msgstr "Pour l'utilisation autonome, invoquer comme" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5637 +#, fuzzy +msgid "Run the loaded program" +msgstr "Recharger le programme" -#: src/emc/usr_intf/tooledit.tcl:936 -msgid "tool_table_filename" -msgstr "nom_fichier_outils" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5654 +#, fuzzy +msgid "Stop the running program" +msgstr "Arrêter le programme, ou" -#: src/emc/usr_intf/tooledit.tcl:956 -#, tcl-format -msgid "Created by %s" -msgstr "Créé par %s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5672 +#, fuzzy +msgid "Pause the running program" +msgstr "Arrêter le programme, ou" -#: src/emc/usr_intf/tooledit.tcl:957 -msgid "Saved geometry (updated on program termination)" -msgstr "Géométrie enregistrée (mise à jour en quittant le programme)" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5680 +#, fuzzy +msgid "pause the running program" +msgstr "Arrêter le programme, ou" -#: src/emc/usr_intf/tooledit.tcl:980 -#, tcl-format -msgid "" -"%s: Axis inifile specifies multiple inifile items for: [EMCIO]TOOL_TABLE" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5698 +msgid "Run the loaded program step by step" msgstr "" -"%s: Fichier ini d'Axis spécifie de multiples items pour: [EMCIO]TOOL_TABLE" -#: src/emc/usr_intf/tooledit.tcl:981 -#, tcl-format -msgid "%s: Using: %s" -msgstr "%s: Utiliser: %s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5715 +msgid "" +"run the program from a certain line, attention, that is dangerous, because " +"the previous lines will not checed!" +msgstr "" -#: src/emc/usr_intf/tooledit.tcl:990 -#, tcl-format +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5732 msgid "" -"%s: Warning: Axis is running but the tool table file <%s> \n" -"differs from the standalone startup file <%s>" +"Machine or not the optional blocks of the program. If the button is pressed, " +"the optional blocks will not be machined. The button will indicate this by a " +"yellow background." msgstr "" -"%s: Attention: Axis est lancé mais le fichier de table d'outils <%s> \n" -"diffère du fichier <%s> du lancement en autonome" -#: src/emc/usr_intf/tooledit.tcl:1004 -msgid "Must be On and Idle to reload tool table" -msgstr "Doit être En marche et inactive pour recharger la table d'outils" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5757 +msgid "" +"Make optional stops or not. if an M1 is programed and the button is pressed " +"(is active) the programm will pause if it found a M1" +msgstr "" -#: src/emc/usr_intf/tooledit.tcl:1093 -msgid "Usage" -msgstr "Utilisation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5789 +#, fuzzy +msgid "Edit the loaded program" +msgstr "" +"Editer prog.\n" +"ladder" -#: src/emc/usr_intf/tooledit.tcl:1094 src/emc/usr_intf/tooledit.tcl:1095 -msgid "filename" -msgstr "nom de fichier" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5837 +#, fuzzy +msgid "home all axis" +msgstr "Prise d'origine machine de tous les axes" -#: src/emc/usr_intf/tooledit.tcl:1096 -#, tcl-format -msgid "Allowed column_ names are: %s" -msgstr "Nom de colonn_e alloué: %s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5873 +#, fuzzy +msgid "home x axis" +msgstr "POM des axes" -#: src/emc/usr_intf/tooledit.tcl:1106 -msgid "Missing filename" -msgstr "Nom de fichier manquant" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5897 +#, fuzzy +msgid "home y axis" +msgstr "POM des axes" -#: src/emc/usr_intf/pncconf/pncconf.py:171 -msgid "7i76 I/O (SS0)" -msgstr "7i76 E/S (SS0)" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5929 +#, fuzzy +msgid "home z axis" +msgstr "POM des axes" -#: src/emc/usr_intf/pncconf/pncconf.py:171 -msgid "7i76 I/O (SS2)" -msgstr "7i76 E/S (SS2)" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5987 +#, fuzzy +msgid "Unhome all axis" +msgstr "Annulation OM de tous les axes" -#: src/emc/usr_intf/pncconf/pncconf.py:171 -msgid "7i76 I/O (SS3)" -msgstr "7i76 E/S (SS3)" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6023 +msgid "go back to main button list" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:171 -msgid "7i77 I/O (SS0)" -msgstr "7i77 E/S (SS0)" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6053 +msgid "" +" edit\n" +"offsets" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:171 -msgid "7i77 Analog (SS1)" -msgstr "7i77 Analogique (SS1)" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6060 +#, fuzzy +msgid "Edit offsets" +msgstr "Afficher les offs_ets" -#: src/emc/usr_intf/pncconf/pncconf.py:172 -msgid "7i77 I/O (SS3)" -msgstr "7i77 E/S (SS3)" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6076 +msgid "touch off X / set X to 0" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:172 -msgid "7i77 Analog (SS4)" -msgstr "7i77 Analogique (SS4)" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6100 +msgid "touch off Y / set Y to 0" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:174 -msgid "Analog Input" -msgstr "Entrée analogique" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6135 +msgid "touch off Z / set Z to 0" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:378 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6155 msgid "" -"7i64-Input\n" -"P3 and P4" +"zero\n" +"G92" msgstr "" -"Entrée 7i64\n" -"P3 et P4" -#: src/emc/usr_intf/pncconf/pncconf.py:378 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6161 +#, fuzzy +msgid "Zero all G92 offsets" +msgstr "Tous les G59.2 à zéro" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6172 msgid "" -"7i64-Output\n" -"P2 and P5" +" Block\n" +"Height" msgstr "" -"Sortie 7i64\n" -"P2 et P5" -#: src/emc/usr_intf/pncconf/pncconf.py:378 -msgid "7i64-Analog In" -msgstr "7i64-Entrée analogique " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6192 +msgid "touch off X / set X to an desired value" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:386 -msgid "" -"7i69\n" -"P2" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6216 +msgid "touch off Y / set Y to an desired value" msgstr "" -"7i69\n" -"P2" -#: src/emc/usr_intf/pncconf/pncconf.py:386 -msgid "" -"7i69\n" -"P3" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6251 +msgid "touch off Z / set Z to an desired value" msgstr "" -"7i69\n" -"P3" -#: src/emc/usr_intf/pncconf/pncconf.py:394 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6270 msgid "" -"7i70-Input\n" -"TB3" +" set\n" +"selected" msgstr "" -"7i70-Entrée\n" -"TB3" -#: src/emc/usr_intf/pncconf/pncconf.py:394 -msgid "" -"7i70-Input\n" -"TB2" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6277 +#, fuzzy +msgid "set the selected coordinate system to be the active one" msgstr "" -"7i70-Entrée\n" -"TB2" +"Changement de système de coordonnées impossible avec la compensation de " +"rayon d'outil activée" -#: src/emc/usr_intf/pncconf/pncconf.py:402 -msgid "" -"7i71-Output\n" -"TB3" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6293 +msgid "Go back to main view" msgstr "" -"7i71-Sortie\n" -"TB3" -#: src/emc/usr_intf/pncconf/pncconf.py:402 -msgid "" -"7i71-Output\n" -"TB2" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6324 +#, fuzzy +msgid "delete MDI" +msgstr "Effacer" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6330 +#, fuzzy +msgid "delete MDI history" +msgstr "Vider l'historique du MDI" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6380 +msgid "Cl.-ladder" msgstr "" -"7i71-Sortie\n" -"TB2" -#: src/emc/usr_intf/pncconf/pncconf.py:410 -msgid "" -"7i76-I/O\n" -"TB6" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6386 +#, fuzzy +msgid "Open classicladder" +msgstr "Inclure l'API _Classicladder" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6397 +#, fuzzy +msgid "Hal-Scope" +msgstr "HalScope" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6403 +#, fuzzy +msgid "launch hal scope" +msgstr "lancer %s" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6420 +msgid "launch linuxcnc status" msgstr "" -"7i76-E/S\n" -"TB6" -#: src/emc/usr_intf/pncconf/pncconf.py:410 -msgid "" -"7i76-I/O\n" -"TB5" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6437 +msgid "launch hal meter" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6455 +#, fuzzy +msgid "launch calibration" +msgstr "_Calibration" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6466 +msgid "Halshow" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6472 +msgid "opens the show hal tool" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6537 +msgid "save the file using the original name" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6559 +msgid "save the file with a new name" msgstr "" -"7i76-E/S\n" -"TB5" -#: src/emc/usr_intf/pncconf/pncconf.py:410 -msgid "" -"7i76-Analog Output\n" -"TB4" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6605 +msgid "clear the edit field and make a new file" msgstr "" -"7i76-Sortie analogique\n" -"TB4" -#: src/emc/usr_intf/pncconf/pncconf.py:418 -msgid "" -"7i77-I/O\n" -"TB8" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6641 +msgid "Show or hide the virtual keyboard" msgstr "" -"7i77-E/S\n" -"TB8" -#: src/emc/usr_intf/pncconf/pncconf.py:418 -msgid "" -"7i77-I/O\n" -"TB7" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6665 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6879 +msgid "Go back to main button list" msgstr "" -"7i77-E/S\n" -"TB7" -#: src/emc/usr_intf/pncconf/pncconf.py:418 -msgid "" -"7i77-Analog Output\n" -"TB5" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6701 +msgid "delete selected tool or tools" msgstr "" -"7i77-Sortie analogique\n" -"TB5" -#: src/emc/usr_intf/pncconf/pncconf.py:426 -msgid "7i73-I/O\n" -msgstr "7i73-E/S\n" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6718 +#, fuzzy +msgid "add a new tool to tool table" +msgstr "Recharger la ta_ble d'outils" -#: src/emc/usr_intf/pncconf/pncconf.py:489 -msgid "Feed Override enable" -msgstr "Correcteur de vitesse activé" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6729 +#, fuzzy +msgid "Reload" +msgstr "_Recharger" -#: src/emc/usr_intf/pncconf/pncconf.py:489 -msgid "Spindle Override enable" -msgstr "Correction vitesse de broche activé" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6735 +#, fuzzy +msgid "reload tool table from file" +msgstr "Recharger la ta_ble d'outils" -#: src/emc/usr_intf/pncconf/pncconf.py:490 -msgid "Max Vel Override enable" -msgstr "Correcteur de vitesse maximale activé" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6746 +msgid "Apply" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5035 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6752 msgid "" -"OK to replace existing glade panel ?\n" -"It will be renamed and added to 'backups' folder.\n" -" Clicking 'existing custom program' will avoid this warning, but if you " -"change related options later -such as spindle feedback- the HAL connection " -"will not update" +"apply the changes you made, G43 will be excecuted only if it is active g-code" msgstr "" -"Voulez vous remplacer le panneau glade existant ?\n" -"Il sera renommé et ajouté au dossier 'backup'.\n" -" Cliquer 'programme utilisateur existant' pour éviter cet avertissement, " -"mais si vous changez ces options plus tard -comme le retour de vitesse " -"broche- la connexion ne sera plus à jour" - -#: src/emc/usr_intf/pncconf/pncconf.glade:8013 -msgid "Num of resolvers:" -msgstr "Nombre de codeurs:" -#: src/emc/usr_intf/pncconf/pncconf.glade:63226 -msgid "Max Output" -msgstr "Sortie max." +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6768 +#, fuzzy +msgid "Select a tool by number" +msgstr "Choisir l'item à mesurer" -#: src/emc/usr_intf/pncconf/pncconf.glade:63386 -msgid "Analog Max Scale:" -msgstr "Échelle analogique max:" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6790 +msgid "change tool with the command M61 Q?, no machine move will be done" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:63400 -msgid "Analog Max limit:" -msgstr "Limite analogique max:" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6812 +msgid "change tool to the selected one" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:63414 -msgid "Analog Min Limit:" -msgstr "Limite analogique min:" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6824 +#, fuzzy +msgid "" +"touchoff\n" +" tool x" +msgstr "L'outil touchera le porte-pièce" -#: src/emc/usr_intf/pncconf/pncconf.glade:64394 -msgid "Range:" -msgstr "Etendue:" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6832 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6863 +#, fuzzy +msgid "touch off the tool and set the value to the tool table" +msgstr "L'outil demandé %d n'est pas dans la table d'outils" -#: src/emc/usr_intf/pncconf/pncconf.glade:66976 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6855 msgid "" -"All the necessary information has now been gathered. Click \"Apply\" to " -"write your configuration files to disk.\n" -"\n" -"If you are using the 5i25 card with daugther boards or are using SSerial " -"based daughter cards, the cards must be connected and/or field power " -"supplied to the 5i25 \n" -"for the HAL pins to be available. If the config is expecting the pins and " -"they are not there, linuxcnc will error.\n" -"If you experience lockups while running LinuxCNC, you will need to decrease " -"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" -"\n" -"If you experience lost steps while running LinuxCNC, first verify that you " -"entered the proper timings for your stepper drivers. If that does not fix " -"the problem, then run a more thorough latency test as described on the " -"linuxcnc.org wiki:\n" -" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" -"\n" -"If you experience the \"Unexpected Realtime Delay\" message, run a more " -"thorough latency test as described on the linuxcnc.org wiki: \n" -" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" +"touchoff\n" +" tool z" msgstr "" -"Toutes les informations nécessaires ont été recueillies. \n" -" Cliquer sur \"Appliquer\" pour enregistrer les fichiers de configuration " -"sur le disque.\n" -"Si une carte 5i25 avec des cartes filles ou une carte fille SSerial sont " -"utilisées, ces cartes doivent être connectées et alimentées pour que les " -"pins de HAL soient disponibles. Sinon, LinuxCNC produira une erreur.\n" -"\n" -"Si un blocage de l'ordinateur est constaté quand LinuxCNC fonctionne avec " -"cette configuration, diminuer la vitesse maximum ce qui aura pour effet " -"d'augmenter la valeur de BASE_PERIOD.\n" -"\n" -"Si des pertes de pas sont constatées quand LinuxCNC fonctionne avec cette " -"configuration, vérifier en premier que les constantes de temps du pilote des " -"moteurs sont bien renseignées. Si le problème persiste, relancer un " -"minutieux \"latency test\" comme décrit sur le wiki de linuxcnc.org:\n" -" http://wiki.linuxcnc.org/cgi-bin/wikinfo.pl?TroubleShooting\n" -"\n" -"Faire de même si le message \"Unexpected Realtime Delay\" apparait. " -#: src/emc/usr_intf/pncconf/pncconf.glade:73031 -msgid "" -"\t\t\t\tPNCconf - Point aNd Click CONFigurator\n" -"PNCconf is a configuration program for Linuxcnc.\n" -"It configures machines using Mesa I/O cards.\n" -"It configures servo,stepper or closed loop stepper machines.\n" -"It supports some of Mesa's sserial cards.\n" -"It will forever be a work in progress as Linuxcnc changes.\n" -"\n" -"Many thanks To:\n" -"Jeff Eppler - PNCconf is based on stepconf - Jeff's creation. Jeff also has " -"helped with techincal difficulties.\n" -"Big John T - John drew the original machine illustrations. Testing and " -"suggestions.\n" -"Peter Wallace - Technical questions on Mesa's I/O cards. Supplied sample " -"equipment to test with.\n" -"Andy Pugh - suggestions, questions answered and many pin name changes :) \n" -"Dave Armstrong - testing and suggestions expecially with resolvers.\n" -"Everyone who gave a bug report ! I cannot test everything thoughly enough so " -"reports help.\n" -"\n" -"Beta 1 version" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6915 +msgid "Move to your home directory" msgstr "" -"\t\t\t\tPNCconf - Configurateur -à la souris-\n" -"PNCconf est un programme de configuration pour Linuxcnc.\n" -"Il configure les machines utilisant les cartes E/S de Mesa.\n" -"Il configure les machines à servomoteurs, à pas à pas ou à pas à pas en " -"boucle fermée.\n" -"Il supporte certaines cartes série Mesa.\n" -"Il évoluera pour suivre les changements de Linuxcnc.\n" -"\n" -"Merci beaucoup à:\n" -"Jeff Eppler - PNCconf est basé sur stepconf qui est une création de Jeff. " -"Jeff nous a aussi beaucoup aidé à surmonter les difficultés techniques.\n" -"Big John T - John à créé les illustrations de la machine d'origine. Testé " -"est faits de nombreuses suggestions.\n" -"Peter Wallace - Questions techniques sur les cartes E/S Mesa. Il nous a " -"fourni des équipements pour nos test.\n" -"Andy Pugh - Suggestions, réponses aux questions et de nombreux changements " -"de noms de pin :) \n" -"Dave Armstrong - Il a testé et suggéré des solutions, spécialement pour les " -"résolveurs.\n" -"Et tout ceux qui nous ont fourni des rapports de bogue ! Je n'aurais pas pu " -"tester tout sans l'aide de ces rapports.\n" -"\n" -"Beta 1 version" -#: src/emc/rs274ngc/interp_check.cc:314 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6932 #, fuzzy -msgid "P value not an integer with M19 G2 or G3" -msgstr "" -"La valeur de P avec M19 G2 ou G3 n'est pas un entier" +msgid "Move to parrent directory" +msgstr "Répertoire courant" -#: src/emc/rs274ngc/interp_check.cc:326 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6961 #, fuzzy -msgid "" -"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " -"code that uses it" -msgstr "" -"Mot Q sans G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 ou code M " -"utilisateur l'utilisant" +msgid "Select the previos file" +msgstr "Choisir l'item à afficher" -#: src/emc/rs274ngc/interp_convert.cc:3012 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6979 #, fuzzy -msgid "Need non-negative Q-word to specify tool number with M61" +msgid "Select the next file" +msgstr "Choisir l'item à afficher" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6997 +msgid "Jump to user defined directory" msgstr "" -"Avec M61, un mot Q positif doit spécifier le numéro de l'outil" -#: src/emc/rs274ngc/interp_convert.cc:3087 -#, fuzzy -msgid "Q word with M19 requires a value > 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7027 +msgid "select the highlighted file and return the path" msgstr "" -"Avec M19, un mot Q doit être > 0" -#: ../share/axis/tcl/axis.tcl:1711 share/axis/tcl/axis.tcl:1711 -msgid "" -"LinuxCNC/AXIS version $version\n" -"\n" -"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Jeff Epler and Chris " -"Radek.\n" -"\n" -"This is free software, and you are welcome to redistribute it under certain " -"conditions. See the file COPYING, included with LinuxCNC.\n" -"\n" -"Visit the LinuxCNC web site: " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7057 +msgid "Close without returning a file path" msgstr "" -"LinuxCNC/AXIS version $version\n" -"\n" -"Copyright (C) 2004-2012 Jeff Epler et Chris Radek.\n" -"\n" -"Ceci est un logiciel libre, vous pouvez le redistribuer sous certaines " -"conditions. Regardez le fichier COPYING, inclus dans LinuxCNC.\n" -"\n" -"Visitez le site web: " -#~ msgid "M7x: restore_settings G20/G21 failed: '%s'" -#~ msgstr "M7x: restauration paramètres G20/G21 impossible: '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7075 +#, fuzzy +msgid "Load File" +msgstr "Fichier chargé:" + +#~ msgid "%s move in MDI would exceed joint %d's positive limit" +#~ msgstr "" +#~ "le mouvement %s du MDI va dépasser la limite positive de la jointure %d's" + +#~ msgid "%s move in MDI would exceed joint %d's negative limit" +#~ msgstr "" +#~ "le mouvement %s du MDI va dépasser la limite négative de la jointure %d's" + +#~ msgid "toomany" +#~ msgstr "trop" + +#~ msgid "_Globals" +#~ msgstr "_Globaux" + +#~ msgid "LinuxCNC Debug Level" +#~ msgstr "Niveau de débogage LinuxCNC" + +#~ msgid "" +#~ "# **** COMANDED velocity is signed so we use absolute component (abs.0) " +#~ "to remove sign" +#~ msgstr "" +#~ "# **** La vitesse COMMANDÉE est signée, le composant absolu (abs.0) peut " +#~ "être utilisé pour enlever le signe" + +#~ msgid "Generated by stepconf at %s" +#~ msgstr "Généré par Stepconf le %s" + +#~ msgid " Out" +#~ msgstr ".....Sortie" + +#~ msgid "" +#~ "Out\n" +#~ "In" +#~ msgstr "" +#~ "Sortie\n" +#~ "Entrée" + +#~ msgid "S_econd Parport Address:" +#~ msgstr "Adr_esse du second port parallèle:" + +#~ msgid "T_hird Parport Address:" +#~ msgstr "Adresse du troisième port parallèle:" + +#~ msgid " Parallel Port Settings" +#~ msgstr "Réglages port parallèle" + +#~ msgid "" +#~ "Driver characteristics: (Multiply by 1000 for times specified in µs or " +#~ "microseconds)\n" +#~ " Additional signal conditioning or isolation such as optocouplers " +#~ "and RC filters\n" +#~ " can impose timing constraints of their own, in addition to those " +#~ "of the driver." +#~ msgstr "" +#~ "Caractéristiques du pilote: (Multipliez par 1000 pour les temps spécifiés " +#~ "en µs ou microsecondes)\n" +#~ "Mise en forme du signal, isolement galvanique, optocoupleurs ou filtres " +#~ "RC\n" +#~ "peuvent imposer des contraintes de temps à ajouter à celles du pilote." + +#~ msgid "" +#~ "_Onscreen prompt for\n" +#~ "tool change" +#~ msgstr "" +#~ "Dialogue à l'écran pour\n" +#~ "le changement d'outil" + +#~ msgid "Advanced Configuration Options" +#~ msgstr "Options de configuration avancée" + +#~ msgid "_Sherline Outputs" +#~ msgstr "Sorties de type _Sherline" + +#~ msgid "_Xylotex Outputs" +#~ msgstr "Sorties de type _Xylotex" + +#~ msgid "Spindle Configuration" +#~ msgstr "Configuration broche" + +#~ msgid "7i76 sserial #1" +#~ msgstr "7i76 sserial #1" + +#~ msgid "7i76 sserial #2" +#~ msgstr "7i76 sserial #2" + +#~ msgid "" +#~ "# Use COMMANDED spindle velocity from LinuxCNC because no spindle " +#~ "encoder was specified" +#~ msgstr "" +#~ "# Pas de codeur de broche spécifié, la vitesse de broche COMMANDEE " +#~ "depuis LinuxCNC sera utilisée" + +#, fuzzy +#~ msgid "" +#~ "# COMMANDED velocity is signed so we use absolute component to remove " +#~ "sign" +#~ msgstr "" +#~ "# La vitesse COMMANDEE est signée, un composant absolu (abs.0) sera " +#~ "utilisé pour enlever le signe" + +#~ msgid "" +#~ "You are have no hostmot2 firmware downloaded in folder:\n" +#~ "%s\n" +#~ "PNCconf will use sample firmware data\n" +#~ "live testing will not be possible" +#~ msgstr "" +#~ "Aucun micro-logiciel hostmod2 n'est chargé dans le répertoire:\n" +#~ "%s\n" +#~ "PNCconf utilisera un micro-logiciel échantillon,\n" +#~ "les tests en direct ne seront pas possible." + +#~ msgid "" +#~ "OK to replace existing glade panel ?\n" +#~ "It will be renamed and added to 'backups' folder.\n" +#~ " Clicking 'existing custom program' will aviod this warning. " +#~ msgstr "" +#~ "Voulez vous remplacer le panneau glade existant ?\n" +#~ "Il sera renommé et ajouté au dossier 'backup'.\n" +#~ " Cliquer 'programme utilisateur existant' pour éviter cet avertissement. " + +#~ msgid "Spindle Max Output:" +#~ msgstr "Sortie broche Max:" + +#~ msgid "Spindle Max limit:" +#~ msgstr "Limite broche Max:" + +#~ msgid "Spindle Min Limit:" +#~ msgstr "Limite broche Min:" + +#~ msgid "Dac Max Output:" +#~ msgstr "Sortie max. du DAC:" + +#~ msgid "Dac Output Scale:" +#~ msgstr "Échelle de sortie DAC:" + +#~ msgid "P value out of range (0-9) with G10 L2 or L20" +#~ msgstr "Valeur de P hors d'échelle (0-9) avec G10 L2 ou L20" + +#~ msgid "P value out of range with G10 L1 or G10 L10" +#~ msgstr "Valeur de P hors d'échelle avec G10 L1 ou G10 L10" + +#~ msgid "P value not an integer with G2 or G3" +#~ msgstr "La valeur de P avec G2 ou G3 n'est pas un entier " + +#~ msgid "" +#~ "Q word with no G5, G10, G64, G73, G76, G83, M66, M67, M68 or user M code " +#~ "that uses it" +#~ msgstr "" +#~ "Mot Q sans G5, G10, G64, G73, G76, G83, M66, M67, M68 ou code M " +#~ "utilisateur l'utilisant" + +#~ msgid "Cannot set motion output with cutter radius compensation on" +#~ msgstr "" +#~ "Réglage de sortie mouvement impossible avec la compensation de rayon " +#~ "d'outil activée" + +#~ msgid "Cannot set motion digital output with cutter radius compensation on" +#~ msgstr "" +#~ "Réglage de sortie numérique impossible avec la compensation de rayon " +#~ "d'outil activée" + +#~ msgid "" +#~ "Cannot set auxiliary digital output with cutter radius compensation on" +#~ msgstr "" +#~ "Réglage de sortie numérique auxiliaire impossible avec la compensation de " +#~ "rayon d'outil activée" -#~ msgid "M7x: restore_settings failed executing: '%s': %s" -#~ msgstr "M7x: échec restauration paramètres exécution de: '%s': %s" +#~ msgid "Cannot set motion analog output with cutter radius compensation on" +#~ msgstr "" +#~ "Réglage de sortie analogique impossible avec la compensation de rayon " +#~ "d'outil activée" + +#~ msgid "" +#~ "Cannot set auxiliary analog output with cutter radius compensation on" +#~ msgstr "" +#~ "Réglage de sortie analogique auxiliaire impossible avec la compensation " +#~ "de rayon d'outil activée" -#~ msgid "fetch_hal_param: hal_init(%s): %d" -#~ msgstr "fetch_hal_param: hal_init(%s): %d" +#~ msgid "Need positive Q-word to specify tool number with M61" +#~ msgstr "Avec M61, un mot Q positif doit spécifier le numéro de l'outil" -#~ msgid "fetch_hal_param: hal_ready(): %d" -#~ msgstr "fetch_hal_param: hal_ready(): %d" +#~ msgid "Cannot change #<%s>" +#~ msgstr "Ne peux modifier #<%s>" -#~ msgid "BUG: lookup_named_param(%s): unhandled index=%fn" -#~ msgstr "BUG: lookup_named_param(%s): unhandled index=%fn" +#~ msgid "init_named_parameter must be global #<%s>" +#~ msgstr "init_named_parameter doit être global #<%s>" -#~ msgid "Bug: call stack underrun" -#~ msgstr "Bogue: violation d'accès à la pile" +#~ msgid "" +#~ "LinuxCNC/AXIS version $version\n" +#~ "\n" +#~ "Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Jeff Epler and Chris " +#~ "Radek.\n" +#~ "\n" +#~ "This is free software, and you are welcome to redistribute it under " +#~ "certain conditions. See the file COPYING, included with LinuxCNC.\n" +#~ "\n" +#~ "Visit the LinuxCNC web site: " +#~ msgstr "" +#~ "LinuxCNC/AXIS version $version\n" +#~ "\n" +#~ "Copyright (C) 2004-2012 Jeff Epler et Chris Radek.\n" +#~ "\n" +#~ "Ceci est un logiciel libre, vous pouvez le redistribuer sous certaines " +#~ "conditions. Regardez le fichier COPYING, inclus dans LinuxCNC.\n" +#~ "\n" +#~ "Visitez le site web: " #~ msgid "EMC Debug" #~ msgstr "Débogueur LinuxCNC" @@ -20246,9 +17622,6 @@ msgstr "" #~ msgid "Muxed Encoder-M" #~ msgstr "Muxed Encoder-M" -#~ msgid "Select item to display" -#~ msgstr "Choisir l'item à afficher" - #~ msgid "ERROR: must specify a path to search for configurations" #~ msgstr "ERREUR: Spécifiez un chemin où chercher les configurations" @@ -20258,9 +17631,6 @@ msgstr "" #~ msgid "Length:" #~ msgstr "Longueur:" -#~ msgid "Diameter:" -#~ msgstr "Diamètre:" - #~ msgid "Tools..." #~ msgstr "Outils..." @@ -20285,9 +17655,6 @@ msgstr "" #~ msgid "HDW PDM Gen-E" #~ msgstr "PWMGen HDW E" -#~ msgid "Axis select input B" -#~ msgstr "Entrée B sélection d'axe" - #~ msgid "Axis select input C" #~ msgstr "Entrée C sélection d'axe" @@ -20619,27 +17986,18 @@ msgstr "" #~ msgid "Switch only" #~ msgstr "Switch only" -#~ msgid "Index only" -#~ msgstr "Index only" - #~ msgid "Limit And Homing Switches" #~ msgstr "Limites et Switches de prise d'origine" #~ msgid "External MPG Scale settings:" #~ msgstr "Réglage d'échelle du MPG externe:" -#~ msgid "Onscreen prompt for tool change" -#~ msgstr "Prompt à l'écran pour le changement d'outil" - #~ msgid "GUI list" #~ msgstr "Liste des GUI" #~ msgid "Tool offset on W instead of Z" #~ msgstr "offset d'outil en W à la place de Z" -#~ msgid "Restore tool number after shutdown" -#~ msgstr "Récupération du N° d'outil après arrêt" - #~ msgid "htz" #~ msgstr "Htz" diff --git a/src/po/hu.po b/src/po/hu.po index 63a1d6097f..245a5e1f07 100644 --- a/src/po/hu.po +++ b/src/po/hu.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: AXIS Hungarian Translation 0.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-10 13:40-0600\n" +"POT-Creation-Date: 2019-02-20 07:49+0000\n" "PO-Revision-Date: 2006-01-18 21:22-0000\n" "Last-Translator: Dani Zsolt \n" "Language-Team: Hungarian \n" @@ -22,13737 +22,16855 @@ msgstr "" "X-Poedit-Language: Hungarian\n" "X-Poedit-Country: HUNGARY\n" -#: src/hal/utils/meter.c:198 +#: src/emc/task/emctaskmain.cc:479 src/emc/task/emctaskmain.cc:512 +#, fuzzy, c-format +msgid "%s exceeds +X limit" +msgstr "A program túllép a gép korlátain" + +#: src/emc/task/emctaskmain.cc:484 src/emc/task/emctaskmain.cc:517 +#, fuzzy, c-format +msgid "%s exceeds +Y limit" +msgstr "A program túllép a gép korlátain" + +#: src/emc/task/emctaskmain.cc:489 src/emc/task/emctaskmain.cc:522 +#, fuzzy, c-format +msgid "%s exceeds +Z limit" +msgstr "A program túllép a gép korlátain" + +#: src/emc/task/emctaskmain.cc:494 src/emc/task/emctaskmain.cc:527 +#, fuzzy, c-format +msgid "%s exceeds -X limit" +msgstr "A program túllép a gép korlátain" + +#: src/emc/task/emctaskmain.cc:499 src/emc/task/emctaskmain.cc:532 +#, fuzzy, c-format +msgid "%s exceeds -Y limit" +msgstr "A program túllép a gép korlátain" + +#: src/emc/task/emctaskmain.cc:504 src/emc/task/emctaskmain.cc:537 +#, fuzzy, c-format +msgid "%s exceeds -Z limit" +msgstr "A program túllép a gép korlátain" + +#: src/emc/task/emctaskmain.cc:892 #, c-format -msgid "ERROR: '%s' is not a valid probe type\n" -msgstr "HIBA: '%s' nem érvényes tapintó típus\n" +msgid "" +"command (%s) cannot be executed until the machine is out of E-stop and " +"turned on" +msgstr "" -#: src/hal/utils/meter.c:206 +#: src/emc/task/emctaskmain.cc:1013 #, c-format -msgid "ERROR: no pin/signal/parameter name\n" -msgstr "HIBA: láb/jel/paraméter név hiányzik\n" +msgid "can't do that (%s:%d) in manual mode" +msgstr "" -#: src/hal/utils/meter.c:212 +#: src/emc/task/emctaskmain.cc:1113 #, c-format -msgid "" -"ERROR: -s option requires a probe type and a pin/signal/parameter name\n" +msgid "can't do that (%s) in auto mode with the interpreter idle" msgstr "" -"HIBA: -s opcióhoz szükséges a tapintó típusa és egy láb/jell/paraméter név\n" -#: src/hal/utils/meter.c:238 tcl/tklinuxcnc.tcl:764 -msgid "Hal Meter" +#: src/emc/task/emctaskmain.cc:1180 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter reading" msgstr "" -#: src/hal/utils/meter.c:287 -msgid "_Select" +#: src/emc/task/emctaskmain.cc:1265 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter paused" msgstr "" -#: src/hal/utils/meter.c:288 -msgid "E_xit" +#: src/emc/task/emctaskmain.cc:1334 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter waiting" msgstr "" -#: src/hal/utils/meter.c:336 src/hal/utils/meter.c:364 -msgid "Select Item to Probe" -msgstr "Válaszd ki a vizsgálandó elemet" +#: src/emc/task/emctaskmain.cc:1442 +#, c-format +msgid "can't do that (%s:%d) in MDI mode" +msgstr "" -#: src/hal/utils/meter.c:640 -msgid " _Pins " -msgstr " _Lábak " +#: src/emc/task/emctaskmain.cc:2100 +msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" +msgstr "" -#: src/hal/utils/meter.c:641 -msgid " _Signals " -msgstr " _Jelek " +#: src/emc/task/emctaskmain.cc:2157 tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 +#: tcl/mini.tcl:1775 tcl/tklinuxcnc.tcl:451 +#, c-format, tcl-format +msgid "can't open %s" +msgstr "" -#: src/hal/utils/meter.c:642 -msgid " Para_meters " -msgstr " Para_méterek " +#: src/emc/task/emctaskmain.cc:2169 +msgid "Can't issue MDI command when not homed" +msgstr "" -#: src/hal/utils/meter.c:685 -msgid "_Close" -msgstr "_Bezárás" +#: src/emc/task/emctaskmain.cc:2174 +msgid "Must be in MDI mode to issue MDI command" +msgstr "" -#: src/hal/utils/scope.c:126 -#, fuzzy +#: src/emc/task/emctaskmain.cc:2256 +msgid "Can't run a program when not homed" +msgstr "" + +#: src/emc/rs274ngc/interp_arc.cc:110 src/emc/rs274ngc/interp_arc.cc:284 +#, c-format msgid "" -"Usage:\n" -" halscope [-h] [-i infile] [-o outfile] [num_samples]\n" +"Zero-radius arc: start=(%c%.4f,%c%.4f) center=(%c%.4f,%c%.4f) end=(%c%.4f,%c" +"%.4f) r1=%.4f r2=%.4f" msgstr "" -"Használat:\n" -" halscope [-h] [-i ini_fájl] [-o kimeneti_fájl] [mintavétel_száma]\n" -#: src/hal/utils/scope.c:474 src/hal/utils/scope.c:501 -msgid "Open Configuration File:" -msgstr "Konfigurációs fájl megnyitása:" +#: src/emc/rs274ngc/interp_arc.cc:120 src/emc/rs274ngc/interp_arc.cc:292 +#, c-format +msgid "" +"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " +"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " +"rel_err=%.4f%%" +msgstr "" -#: src/hal/utils/scope.c:535 -msgid "_Open Configuration..." -msgstr "Konfiguráció meg_nyitása..." +#: src/emc/rs274ngc/interp_check.cc:90 +msgid "G4 not allowed with G2 or G3 because they both use P" +msgstr "" -#: src/hal/utils/scope.c:541 -msgid "_Save Configuration..." -msgstr "Konfiguráció el_mentése..." +#: src/emc/rs274ngc/interp_check.cc:93 +msgid "Line with G10 does not have L1, L10, L11, L2, or L20" +msgstr "" -#: src/hal/utils/scope.c:550 -msgid "O_pen Data File..." -msgstr "Adatfájl meg_nyitása..." +#: src/emc/rs274ngc/interp_check.cc:94 +msgid "P value not an integer with G10" +msgstr "" -#: src/hal/utils/scope.c:557 -msgid "S_ave Data File..." -msgstr "Adatfájl el_mentésa..." +#: src/emc/rs274ngc/interp_check.cc:95 +#, c-format +msgid "P value out of range (0-9) with G10 L%d" +msgstr "" -#: src/hal/utils/scope.c:566 share/axis/tcl/axis.tcl:93 -#, fuzzy -msgid "_Quit" -msgstr "_Kilépés" +#: src/emc/rs274ngc/interp_check.cc:96 +#, c-format +msgid "P value out of range with G10 L%d" +msgstr "" -#: src/hal/utils/scope.c:572 -msgid "_About Halscope" -msgstr "_Halszkóp névjegy" +#: src/emc/rs274ngc/interp_check.cc:100 +msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." +msgstr "" -#: src/hal/utils/scope.c:578 share/axis/tcl/axis.tcl:435 -#, fuzzy -msgid "_File" -msgstr "_Fájl" +#: src/emc/rs274ngc/interp_check.cc:259 +msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" +msgstr "" -#: src/hal/utils/scope.c:582 share/axis/tcl/axis.tcl:447 -#, fuzzy -msgid "_Help" -msgstr "_Segítség" +#: src/emc/rs274ngc/interp_check.cc:265 +msgid "E word with no G76, M66, M67 or M68 to use it" +msgstr "" -#: src/hal/utils/scope.c:641 -msgid "HAL Oscilloscope" -msgstr "HAL Oszcilloszkóp" +#: src/emc/rs274ngc/interp_check.cc:270 +msgid "H word with no G43 or G76 to use it" +msgstr "" -#: src/hal/utils/scope.c:669 -msgid "Horizontal" -msgstr "Horizontális" +#: src/emc/rs274ngc/interp_check.cc:276 +msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" +msgstr "" -#: src/hal/utils/scope.c:677 -msgid "Selected Channel" -msgstr "Kiválasztott csatorna" +#: src/emc/rs274ngc/interp_check.cc:282 +msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" +msgstr "" -#: src/hal/utils/scope.c:683 -msgid "Run Mode" -msgstr "Futási mód" +#: src/emc/rs274ngc/interp_check.cc:288 +msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" +msgstr "" -#: src/hal/utils/scope.c:686 -msgid "Trigger" -msgstr "Trigger jel" +#: src/emc/rs274ngc/interp_check.cc:298 +msgid "" +"L word with no G10, cutter compensation, canned cycle, digital/analog input, " +"or NURBS code" +msgstr "" -#: src/hal/utils/scope.c:692 -msgid "Vertical" -msgstr "Vertikális" +#: src/emc/rs274ngc/interp_check.cc:310 +msgid "" +"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " +"M53 M62 M63 M64 M65 M66 or user M code to use it" +msgstr "" -#: src/hal/utils/scope.c:700 share/axis/tcl/axis.tcl:135 -#: share/axis/tcl/axis.tcl:1199 -msgid "Stop" -msgstr "Stop" +#: src/emc/rs274ngc/interp_check.cc:315 +msgid "P value not an integer with M19 G2 or G3" +msgstr "" -#: src/hal/utils/scope.c:703 -msgid "Normal" -msgstr "Normál" +#: src/emc/rs274ngc/interp_check.cc:317 +msgid "P value must be 0,1,or 2 with M19" +msgstr "" -#: src/hal/utils/scope.c:706 -msgid "Single" -msgstr "Egyedi" +#: src/emc/rs274ngc/interp_check.cc:319 +msgid "P value should be 1 or greater with G2 or G3" +msgstr "" -#: src/hal/utils/scope.c:709 -msgid "Roll" -msgstr "Görgetés" +#: src/emc/rs274ngc/interp_check.cc:327 +msgid "" +"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " +"code that uses it" +msgstr "" -#: src/hal/utils/scope_horiz.c:130 -msgid "Zoom" -msgstr "Közelítés" +#: src/emc/rs274ngc/interp_check.cc:337 +msgid "R value must be within 0..360 with M19" +msgstr "" -#: src/hal/utils/scope_horiz.c:131 -msgid " Pos " -msgstr " Poz " +#: src/emc/rs274ngc/interp_convert.cc:139 +msgid "You must specify both X and Y coordinates for Control Points" +msgstr "" -#: src/hal/utils/scope_horiz.c:164 -msgid "" -"----- Samples\n" -"at ---- KHz" +#: src/emc/rs274ngc/interp_convert.cc:142 +msgid "Can specify P without X and Y only for the first control point" msgstr "" -"----- mintavétel\n" -"---- KHz-en" -#: src/hal/utils/scope_horiz.c:459 -msgid "Realtime component not loaded" -msgstr "Valós idejű komponens nincs betöltve" +#: src/emc/rs274ngc/interp_convert.cc:145 +msgid "Must specify positive weight P for every Control Point" +msgstr "" -#: src/hal/utils/scope_horiz.c:460 -msgid "" -"HALSCOPE uses a realtime component called scope_rt'\n" -"to sample signals for display. It is not currently loaded\n" -"and attempting to load it automatically failed. More information\n" -"may be available in the terminal where halscope was started.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Load the component (using 'halcmd loadrt scope_rt'), then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +#: src/emc/rs274ngc/interp_convert.cc:148 +msgid "Cannot make a NURBS with 0 feedrate" msgstr "" -#: src/hal/utils/scope_horiz.c:495 -msgid "Realtime function not linked" +#: src/emc/rs274ngc/interp_convert.cc:183 +msgid "Cannot use G5.3 without G5.2 first" msgstr "" -#: src/hal/utils/scope_horiz.c:496 +#: src/emc/rs274ngc/interp_convert.cc:184 +#, c-format msgid "" -"The HALSCOPE realtime sampling function\n" -"must be called from a HAL thread in to\n" -"determine the sampling rate.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Select a thread name and multiplier then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +"You must specify a number of control points at least equal to the order L = " +"%d" msgstr "" -#: src/hal/utils/scope_horiz.c:503 -msgid "Select Sample Rate" +#: src/emc/rs274ngc/interp_convert.cc:213 +msgid "Cannot convert spline with cutter radius compensation" msgstr "" -#: src/hal/utils/scope_horiz.c:504 -msgid "" -"Select a thread name and multiplier then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +#: src/emc/rs274ngc/interp_convert.cc:223 +msgid "Splines must be in the XY plane" msgstr "" -#: src/hal/utils/scope_horiz.c:526 -msgid "Thread:" +#: src/emc/rs274ngc/interp_convert.cc:228 +msgid "Splines may not have motion in Z, A, B, or C" msgstr "" -#: src/hal/utils/scope_horiz.c:534 -msgid "Sample Period:" +#: src/emc/rs274ngc/interp_convert.cc:232 +msgid "Must specify both I and J with G5.1" msgstr "" -#: src/hal/utils/scope_horiz.c:542 -msgid "Sample Rate:" +#: src/emc/rs274ngc/interp_convert.cc:251 +msgid "Must specify both I and J, or neither" msgstr "" -#: src/hal/utils/scope_horiz.c:558 src/emc/usr_intf/touchy/mdi.py:78 -msgid "Thread" +#: src/emc/rs274ngc/interp_convert.cc:262 +msgid "Must specify both P and Q with G5" msgstr "" -#: src/hal/utils/scope_horiz.c:559 -msgid "Period" +#: src/emc/rs274ngc/interp_convert.cc:363 +msgid "" +"The move just after exiting cutter compensation mode must be straight, not " +"an arc" msgstr "" -#: src/hal/utils/scope_horiz.c:619 -msgid "Multiplier:" +#: src/emc/rs274ngc/interp_convert.cc:371 +msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" msgstr "" -#: src/hal/utils/scope_horiz.c:636 -msgid "Record Length" +#: src/emc/rs274ngc/interp_convert.cc:383 +#: src/emc/rs274ngc/interp_convert.cc:4488 +msgid "Cannot feed with zero spindle speed in feed per rev mode" msgstr "" -#: src/hal/utils/scope_horiz.c:639 +#: src/emc/rs274ngc/interp_convert.cc:394 +#: src/emc/rs274ngc/interp_convert.cc:400 +#: src/emc/rs274ngc/interp_convert.cc:409 +#: src/emc/rs274ngc/interp_convert.cc:415 +#: src/emc/rs274ngc/interp_convert.cc:424 +#: src/emc/rs274ngc/interp_convert.cc:430 #, c-format -msgid "%5d samples (1 channel)" +msgid "%c word missing in absolute center arc" msgstr "" -#: src/hal/utils/scope_horiz.c:641 -#, c-format -msgid "%5d samples (2 channels)" +#: src/emc/rs274ngc/interp_convert.cc:662 +msgid "" +"Radius of cutter compensation entry arc is not greater than the tool radius" msgstr "" -#: src/hal/utils/scope_horiz.c:645 -#, c-format -msgid "%5d samples (4 channels)" +#: src/emc/rs274ngc/interp_convert.cc:882 +#: src/emc/rs274ngc/interp_convert.cc:892 src/emc/rs274ngc/interp_queue.cc:696 +msgid "" +"Arc move in concave corner cannot be reached by the tool without gouging" msgstr "" -#: src/hal/utils/scope_horiz.c:649 -#, c-format -msgid "%5d samples (8 channels)" +#: src/emc/rs274ngc/interp_convert.cc:918 +msgid "Arc to arc motion is invalid because the arcs have the same center" msgstr "" -#: src/hal/utils/scope_horiz.c:653 +#: src/emc/rs274ngc/interp_convert.cc:921 +msgid "" +"Arc to arc motion makes a corner the compensated tool can't fit in without " +"gouging" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:1053 +#: src/emc/rs274ngc/interp_convert.cc:1057 +#: src/emc/rs274ngc/interp_convert.cc:1061 +#: src/emc/rs274ngc/interp_convert.cc:3945 +#: src/emc/rs274ngc/interp_convert.cc:3948 +#: src/emc/rs274ngc/interp_convert.cc:3951 src/emc/rs274ngc/interp_find.cc:97 #, c-format -msgid "%5d samples (16 channels)" +msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" msgstr "" -#: src/hal/utils/scope_horiz.c:708 src/hal/utils/scope_horiz.c:754 -#: src/hal/utils/scope_horiz.c:966 src/hal/utils/scope_vert.c:761 -#: src/hal/utils/scope_vert.c:853 tcl/bin/emccalib.tcl:227 -#: tcl/bin/genedit.tcl:180 tcl/bin/genedit.tcl:450 tcl/bin/halconfig.tcl:682 -#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:257 -#: tcl/bin/pickconfig.tcl:479 tcl/bin/pickconfig.tcl:506 tcl/mini.tcl:1456 -#: tcl/mini.tcl:2937 tcl/tklinuxcnc.tcl:160 tcl/tklinuxcnc.tcl:245 -#: tcl/tklinuxcnc.tcl:419 tcl/tklinuxcnc.tcl:1338 tcl/tklinuxcnc.tcl:1407 -#: tcl/tklinuxcnc.tcl:1438 tcl/tklinuxcnc.tcl:1469 tcl/tklinuxcnc.tcl:2017 -#: tcl/tklinuxcnc.tcl:2036 tcl/tklinuxcnc.tcl:2055 tcl/tklinuxcnc.tcl:2102 -#: src/emc/usr_intf/axis/scripts/axis.py:1077 -#: src/emc/usr_intf/axis/scripts/axis.py:1141 -#: src/emc/usr_intf/axis/scripts/axis.py:1458 -#: src/emc/usr_intf/axis/scripts/axis.py:2477 -#: src/emc/usr_intf/axis/scripts/axis.py:3336 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:718 -#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1720 -#: share/axis/tcl/axis.tcl:1757 src/emc/usr_intf/axis/scripts/axis.py:1069 -#: src/emc/usr_intf/axis/scripts/axis.py:1129 -#: src/emc/usr_intf/axis/scripts/axis.py:1445 -#: src/emc/usr_intf/axis/scripts/axis.py:2464 -#: src/emc/usr_intf/axis/scripts/axis.py:3320 -msgid "OK" -msgstr "OK" +#: src/emc/rs274ngc/interp_convert.cc:1563 +msgid "Cannot change control mode with cutter radius compensation on" +msgstr "" -#: src/hal/utils/scope_horiz.c:713 src/hal/utils/scope_horiz.c:754 -#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 -#, fuzzy -msgid "Quit" -msgstr "_Kilépés" +#: src/emc/rs274ngc/interp_convert.cc:1676 +msgid "Cannot change coordinate systems with cutter radius compensation on" +msgstr "" -#: src/hal/utils/scope_horiz.c:745 -msgid "Realtime thread(s) not running" +#: src/emc/rs274ngc/interp_convert.cc:1920 +#, c-format +msgid "G%d.1 with no D word" msgstr "" -#: src/hal/utils/scope_horiz.c:746 -msgid "" -"HALSCOPE uses code in a realtime HAL thread to sample\n" -"signals for display. The HAL thread(s) are not running.\n" -"Threads are usually started by the application you are\n" -"attempting to run, or you can use the 'halcmd start' command.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Start the threads, then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +#: src/emc/rs274ngc/interp_convert.cc:1923 +#, c-format +msgid "G%d.1 with L word, but plane is not G18" msgstr "" -#: src/hal/utils/scope_horiz.c:779 -msgid "Pick log file to write to:" +#: src/emc/rs274ngc/interp_convert.cc:1934 +#, c-format +msgid "G%d requires D word to be a whole number" msgstr "" -#: src/hal/utils/scope_horiz.c:962 -msgid "Not enough channels" +#: src/emc/rs274ngc/interp_convert.cc:1941 +#, c-format +msgid "G%d with lathe tool, but plane is not G18" msgstr "" -#: src/hal/utils/scope_horiz.c:963 -msgid "" -"This record length cannot handle the channels\n" -"that are currently enabled. Pick a shorter\n" -"record length that supports more channels." +#: src/emc/rs274ngc/interp_convert.cc:2340 +msgid "Cannot set reference point with cutter compensation in effect" msgstr "" -#: src/hal/utils/scope_horiz.c:1051 +#: src/emc/rs274ngc/interp_convert.cc:2859 #, c-format -msgid "" -"%s\n" -"per div" +msgid "gen_restore G20/G21 failed: '%s'" msgstr "" -#: src/hal/utils/scope_horiz.c:1066 +#: src/emc/rs274ngc/interp_convert.cc:2907 #, c-format msgid "" -"%s samples\n" -"at %s" -msgstr "" - -#: src/hal/utils/scope_horiz.c:1170 -msgid "nSec" +"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" msgstr "" -#: src/hal/utils/scope_horiz.c:1173 -msgid "uSec" +#: src/emc/rs274ngc/interp_convert.cc:2908 +#, c-format +msgid "BUG: restore from level %d !?" msgstr "" -#: src/hal/utils/scope_horiz.c:1177 -msgid "mSec" +#: src/emc/rs274ngc/interp_convert.cc:2909 +#, c-format +msgid "BUG: restore to level %d !?" msgstr "" -#: src/hal/utils/scope_horiz.c:1181 -#: src/emc/usr_intf/pncconf/pncconf.glade:1953 -#: src/emc/usr_intf/pncconf/pncconf.glade:2825 -#: src/emc/usr_intf/pncconf/pncconf.glade:3706 -#: src/emc/usr_intf/pncconf/pncconf.glade:4587 -msgid "Sec" +#: src/emc/rs274ngc/interp_convert.cc:2928 +#, c-format +msgid "M7x: restore_settings G20/G21 failed: '%s'" msgstr "" -#: src/hal/utils/scope_horiz.c:1198 -#: src/emc/usr_intf/stepconf/stepconf.glade:3664 -#: src/emc/usr_intf/stepconf/stepconf.glade:4040 -#: src/emc/usr_intf/pncconf/pncconf.glade:8268 -#: src/emc/usr_intf/pncconf/pncconf.glade:8281 -#: src/emc/usr_intf/pncconf/pncconf.glade:8458 -msgid "Hz" +#: src/emc/rs274ngc/interp_convert.cc:2946 +#, c-format +msgid "M7x: restore_settings failed executing: '%s': %s" msgstr "" -#: src/hal/utils/scope_horiz.c:1201 -msgid "KHz" +#: src/emc/rs274ngc/interp_convert.cc:3005 +#, c-format +msgid "Failed to restore interp state on abort '%s': %s" msgstr "" -#: src/hal/utils/scope_horiz.c:1205 -msgid "Mhz" +#: src/emc/rs274ngc/interp_convert.cc:3069 +msgid "No valid P word with M62" msgstr "" -#: src/hal/utils/scope_vert.c:403 src/hal/utils/scope_vert.c:1258 -#, fuzzy, c-format -msgid "" -"Offset\n" -"%s" -msgstr "Eltolás" - -#: src/hal/utils/scope_vert.c:618 -msgid "Gain" +#: src/emc/rs274ngc/interp_convert.cc:3072 +msgid "No valid P word with M63" msgstr "" -#: src/hal/utils/scope_vert.c:630 src/hal/utils/scope_trig.c:252 -msgid "Pos" +#: src/emc/rs274ngc/interp_convert.cc:3075 +msgid "No valid P word with M64" msgstr "" -#: src/hal/utils/scope_vert.c:644 tcl/ngcgui_ttt.tcl:214 -#: src/emc/usr_intf/pncconf/pncconf.glade:57147 -msgid "Scale" +#: src/emc/rs274ngc/interp_convert.cc:3078 +msgid "No valid P word with M65" msgstr "" -#: src/hal/utils/scope_vert.c:657 -msgid "Chan Off" +#: src/emc/rs274ngc/interp_convert.cc:3111 +msgid "invalid P-word with M66" msgstr "" -#: src/hal/utils/scope_vert.c:713 -#, fuzzy -msgid "Set Offset" -msgstr "Eltolás" - -#: src/hal/utils/scope_vert.c:714 -#, c-format -msgid "" -"Set the vertical offset\n" -"for channel %d." +#: src/emc/rs274ngc/interp_convert.cc:3126 +msgid "Cannot wait for digital input with cutter radius compensation on" msgstr "" -#: src/hal/utils/scope_vert.c:734 -msgid "AC Coupled" +#: src/emc/rs274ngc/interp_convert.cc:3138 +msgid "Cannot wait for analog input with cutter radius compensation on" msgstr "" -#: src/hal/utils/scope_vert.c:769 src/hal/utils/scope_vert.c:1171 -#: src/hal/utils/scope_trig.c:367 tcl/bin/emccalib.tcl:229 -#: tcl/bin/genedit.tcl:294 tcl/bin/halconfig.tcl:103 tcl/bin/halconfig.tcl:684 -#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:260 -#: tcl/bin/pickconfig.tcl:369 tcl/mini.tcl:1457 tcl/mini.tcl:2938 -#: tcl/mini.tcl:3110 tcl/tklinuxcnc.tcl:162 tcl/tklinuxcnc.tcl:213 -#: tcl/tklinuxcnc.tcl:420 tcl/tklinuxcnc.tcl:1339 tcl/tklinuxcnc.tcl:1408 -#: tcl/tklinuxcnc.tcl:1439 tcl/tklinuxcnc.tcl:1470 tcl/tklinuxcnc.tcl:2103 -#: src/emc/usr_intf/axis/scripts/axis.py:1404 -#: src/emc/usr_intf/axis/scripts/axis.py:1459 -#: src/emc/usr_intf/axis/scripts/axis.py:1646 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:720 -#: src/emc/usr_intf/axis/scripts/axis.py:1391 -#: src/emc/usr_intf/axis/scripts/axis.py:1446 -#: src/emc/usr_intf/axis/scripts/axis.py:1633 -msgid "Cancel" -msgstr "Mégsem" - -#: src/hal/utils/scope_vert.c:849 -msgid "Too many channels" +#: src/emc/rs274ngc/interp_convert.cc:3152 +msgid "Invalid analog index with M67" msgstr "" -#: src/hal/utils/scope_vert.c:850 -msgid "" -"You cannot add another channel.\n" -"\n" -"Either turn off one or more channels, or shorten\n" -"the record length to allow for more channels" +#: src/emc/rs274ngc/interp_convert.cc:3157 +msgid "Invalid analog index with M68" msgstr "" -#: src/hal/utils/scope_vert.c:1026 -msgid "Select Channel Source" +#: src/emc/rs274ngc/interp_convert.cc:3188 +msgid "Need non-negative Q-word to specify tool number with M61" msgstr "" -#: src/hal/utils/scope_vert.c:1027 -#, c-format -msgid "" -"Select a pin, signal, or parameter\n" -"as the source for channel %d." +#: src/emc/rs274ngc/interp_convert.cc:3258 +msgid "Q word with M19 requires a value > 0" msgstr "" -#: src/hal/utils/scope_vert.c:1059 -msgid "Pins" +#: src/emc/rs274ngc/interp_convert.cc:3286 +msgid "Cannot restore context from invalid stack frame - missing M70/M73?" msgstr "" -#: src/hal/utils/scope_vert.c:1060 -msgid "Signals" +#: src/emc/rs274ngc/interp_convert.cc:3327 +#: src/emc/rs274ngc/interp_convert.cc:3344 +#: src/emc/rs274ngc/interp_convert.cc:3359 +#: src/emc/rs274ngc/interp_convert.cc:3373 +#: src/emc/rs274ngc/interp_convert.cc:3387 +msgid "Cannot enable overrides with cutter radius compensation on" msgstr "" -#: src/hal/utils/scope_vert.c:1061 -msgid "Parameters" +#: src/emc/rs274ngc/interp_convert.cc:3334 +#: src/emc/rs274ngc/interp_convert.cc:3349 +#: src/emc/rs274ngc/interp_convert.cc:3364 +#: src/emc/rs274ngc/interp_convert.cc:3378 +#: src/emc/rs274ngc/interp_convert.cc:3392 +msgid "Cannot disable overrides with cutter radius compensation on" msgstr "" -#: src/hal/utils/scope_trig.c:110 +#: src/emc/rs274ngc/interp_convert.cc:3506 +#: src/emc/rs274ngc/interp_convert.cc:3507 +#: src/emc/rs274ngc/interp_convert.cc:3508 #, c-format -msgid "Falling" +msgid "Indexing axis %c can only be moved with G0" msgstr "" -#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:275 +#: src/emc/rs274ngc/interp_convert.cc:3515 +#: src/emc/rs274ngc/interp_convert.cc:3517 +#: src/emc/rs274ngc/interp_convert.cc:3519 #, c-format -msgid "Rising" +msgid "Indexing axis %c can only be moved alone" msgstr "" -#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:283 -msgid "" -"Source\n" -"None" +#: src/emc/rs274ngc/interp_convert.cc:3621 +msgid "Cannot probe with feed per rev mode" msgstr "" -#: src/hal/utils/scope_trig.c:124 -#, c-format -msgid "" -"Source\n" -"Chan %2d" +#: src/emc/rs274ngc/interp_convert.cc:3669 +msgid "Cannot change retract mode with cutter radius compensation on" msgstr "" -#: src/hal/utils/scope_trig.c:199 tcl/tklinuxcnc.tcl:827 -#: src/emc/usr_intf/touchy/touchy.glade:2469 -msgid "Auto" +#: src/emc/rs274ngc/interp_convert.cc:3703 +msgid "G10 L1 without offsets has no effect" msgstr "" -#: src/hal/utils/scope_trig.c:201 -msgid "Force" +#: src/emc/rs274ngc/interp_convert.cc:3809 +msgid "Q number in G10 is not an integer" msgstr "" -#: src/hal/utils/scope_trig.c:235 src/hal/utils/scope_trig.c:269 -msgid "Level" +#: src/emc/rs274ngc/interp_convert.cc:3810 +msgid "Invalid tool orientation" msgstr "" -#: src/hal/utils/scope_trig.c:303 -msgid "Trigger Source" +#: src/emc/rs274ngc/interp_convert.cc:3933 +msgid "I J words not allowed with G10 L2" msgstr "" -#: src/hal/utils/scope_trig.c:304 -msgid "Select a channel to use for triggering." +#: src/emc/rs274ngc/interp_convert.cc:3954 +msgid "" +"Cannot change the active coordinate system with cutter radius compensation on" msgstr "" -#: src/hal/utils/scope_trig.c:327 -msgid "Chan" +#: src/emc/rs274ngc/interp_convert.cc:3962 +msgid "R not allowed in G10 L20" msgstr "" -#: src/hal/utils/scope_trig.c:328 -msgid "Source" +#: src/emc/rs274ngc/interp_convert.cc:4550 +msgid "Spindle not turning in G33" msgstr "" -#: src/emc/motion/control.c:261 -msgid "Unexpected realtime delay: check dmesg for details." +#: src/emc/rs274ngc/interp_convert.cc:4560 +msgid "Spindle not turning in G33.1" msgstr "" -#: src/emc/motion/control.c:263 -#, c-format -msgid "" -"\n" -"In recent history there were\n" -"%ld, %ld, %ld, %ld, and %ld\n" -"elapsed clocks between calls to the motion controller.\n" +#: src/emc/rs274ngc/interp_convert.cc:4603 +msgid "BUG: An axis incorrectly moved along with an indexer" msgstr "" -#: src/emc/motion/control.c:268 -#, c-format -msgid "" -"This time, there were %ld which is so anomalously\n" -"large that it probably signifies a problem with your\n" -"realtime configuration. For the rest of this run of\n" -"EMC, this message will be suppressed.\n" -"\n" +#: src/emc/rs274ngc/interp_convert.cc:4616 +msgid "BUG: trying to index incorrect axis" msgstr "" -#: src/emc/motion/control.c:384 -msgid "G38.4 move finished without breaking contact." +#: src/emc/rs274ngc/interp_convert.cc:4708 +msgid "Cannot use G76 threading cycle with cutter radius compensation on" msgstr "" -#: src/emc/motion/control.c:387 -msgid "G38.2 move finished without making contact." +#: src/emc/rs274ngc/interp_convert.cc:4711 +msgid "In G76, I must not be 0" msgstr "" -#: src/emc/motion/control.c:401 -msgid "Probe tripped during non-probe MDI command." +#: src/emc/rs274ngc/interp_convert.cc:4713 +msgid "In G76, J must be greater than 0" msgstr "" -#: src/emc/motion/control.c:429 -msgid "Probe tripped during homing motion." +#: src/emc/rs274ngc/interp_convert.cc:4715 +msgid "In G76, K must be greater than J" msgstr "" -#: src/emc/motion/control.c:433 -msgid "Probe tripped during a jog." +#: src/emc/rs274ngc/interp_convert.cc:4858 +msgid "" +"Length of cutter compensation entry move is not greater than the tool radius" msgstr "" -#: src/emc/motion/control.c:578 -#, c-format -msgid "fault %d during orient in progress" +#: src/emc/rs274ngc/interp_convert.cc:5077 +msgid "Zero degree inside corner is invalid for cutter compensation" msgstr "" -#: src/emc/motion/control.c:718 src/emc/motion/control.c:697 -msgid "motion stopped by enable input" +#: src/emc/rs274ngc/interp_convert.cc:5115 +#: src/emc/rs274ngc/interp_convert.cc:5123 +msgid "" +"Arc to straight motion makes a corner the compensated tool can't fit in " +"without gouging" msgstr "" -#: src/emc/motion/control.c:741 src/emc/motion/control.c:720 -#, c-format -msgid "joint %d on limit switch error" +#: src/emc/rs274ngc/interp_convert.cc:5207 +msgid "Cannot change tools with cutter radius compensation on" msgstr "" -#: src/emc/motion/control.c:753 src/emc/motion/control.c:732 -#, c-format -msgid "joint %d amplifier fault" +#: src/emc/rs274ngc/interp_convert.cc:5328 +msgid "Cannot change tool offset with cutter radius compensation on" msgstr "" -#: src/emc/motion/control.c:762 src/emc/motion/control.c:741 +#: src/emc/rs274ngc/interp_queue.cc:694 #, c-format -msgid "joint %d following error" +msgid "" +"BUG: cutter compensation has generated an invalid arc with mismatched radii " +"r1 %f r2 %f\n" msgstr "" -#: src/emc/motion/control.c:1444 src/emc/motion/control.c:1423 -#, c-format -msgid "Exceeded positive soft limit on joint %d" +#: src/emc/rs274ngc/interp_queue.cc:716 +msgid "BUG: Unsupported plane in cutter compensation" msgstr "" -#: src/emc/motion/control.c:1449 src/emc/motion/control.c:1428 -#, c-format -msgid "Exceeded negative soft limit on joint %d" +#: src/emc/rs274ngc/interp_queue.cc:729 +msgid "" +"Straight traverse in concave corner cannot be reached by the tool without " +"gouging" msgstr "" -#: src/emc/motion/command.c:159 +#: src/emc/rs274ngc/interp_queue.cc:757 #, c-format -msgid "Can't jog invalid joint number %d." +msgid "BUG: Unsupported plane [%d] in cutter compensation" msgstr "" -#: src/emc/motion/command.c:163 -#, c-format -msgid "Can't jog joint %d further past max hard limit." +#: src/emc/rs274ngc/interp_queue.cc:771 +msgid "" +"Straight feed in concave corner cannot be reached by the tool without gouging" msgstr "" -#: src/emc/motion/command.c:168 -#, c-format -msgid "Can't jog joint %d further past min hard limit." +#: src/emc/rs274ngc/interp_cycles.cc:630 +msgid "Cannot feed with zero feed rate" msgstr "" -#: src/emc/motion/command.c:174 -#, c-format -msgid "Can't jog joint %d further past max soft limit." +#: src/emc/rs274ngc/interp_cycles.cc:631 +msgid "Cannot use inverse time feed with canned cycles" msgstr "" -#: src/emc/motion/command.c:179 -#, c-format -msgid "Can't jog joint %d further past min soft limit." +#: src/emc/rs274ngc/interp_cycles.cc:632 +msgid "Cannot use canned cycles with cutter compensation on" msgstr "" -#: src/emc/motion/command.c:237 -#, c-format -msgid "%s move on line %d would exceed joint %d's positive limit" +#: src/emc/rs274ngc/interp_cycles.cc:829 +msgid "G17 canned cycle is not possible on a machine without Z axis" msgstr "" -#: src/emc/motion/command.c:240 -#, c-format -msgid "%s move in MDI would exceed joint %d's positive limit" +#: src/emc/rs274ngc/interp_cycles.cc:1015 +msgid "G17.1 canned cycle is not possible on a machine without W axis" msgstr "" -#: src/emc/motion/command.c:247 -#, c-format -msgid "%s move on line %d would exceed joint %d's negative limit" +#: src/emc/rs274ngc/interp_cycles.cc:1231 +msgid "G19 canned cycle is not possible on a machine without X axis" msgstr "" -#: src/emc/motion/command.c:250 -#, c-format -msgid "%s move in MDI would exceed joint %d's negative limit" +#: src/emc/rs274ngc/interp_cycles.cc:1399 +msgid "G19.1 canned cycle is not possible on a machine without U axis" msgstr "" -#: src/emc/motion/command.c:500 -msgid "all joints must be homed before going into coordinated mode" +#: src/emc/rs274ngc/interp_cycles.cc:1624 +msgid "G18 canned cycle is not possible on a machine without Y axis" msgstr "" -#: src/emc/motion/command.c:521 -msgid "all joints must be homed before going into teleop mode" +#: src/emc/rs274ngc/interp_cycles.cc:1791 +msgid "G18.1 canned cycle is not possible on a machine without V axis" msgstr "" -#: src/emc/motion/command.c:675 src/emc/motion/command.c:741 -#: src/emc/motion/command.c:814 -msgid "Can't jog joint in coordinated mode." +#: src/emc/rs274ngc/interp_find.cc:170 +msgid "Cannot use polar coordinates with G53" msgstr "" -#: src/emc/motion/command.c:680 src/emc/motion/command.c:746 -#: src/emc/motion/command.c:819 -msgid "Can't jog joint when not enabled." +#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 +#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 +#: src/emc/rs274ngc/interp_find.cc:347 +msgid "Cannot specify X or Y words with polar coordinate" msgstr "" -#: src/emc/motion/command.c:685 src/emc/motion/command.c:824 -msgid "Can't jog any joints while homing." +#: src/emc/rs274ngc/interp_find.cc:272 +msgid "Must specify angle in polar coordinate if at the origin" msgstr "" -#: src/emc/motion/command.c:751 -msgid "Can't jog any joint while homing." -msgstr "" - -#: src/emc/motion/command.c:881 -msgid "need to be enabled, in coord mode for linear move" +#: src/emc/rs274ngc/interp_find.cc:338 +msgid "" +"Incremental motion with polar coordinates is indeterminate when at the origin" msgstr "" -#: src/emc/motion/command.c:891 -msgid "can't do linear move with limits exceeded" +#: src/emc/rs274ngc/interp_find.cc:348 +msgid "G91 motion with polar coordinates is indeterminate when at the origin" msgstr "" -#: src/emc/motion/command.c:910 -msgid "can't add linear move" +#: src/emc/rs274ngc/interp_find.cc:720 +#, c-format +msgid "Requested tool %d not found in the tool table" msgstr "" -#: src/emc/motion/command.c:930 -msgid "need to be enabled, in coord mode for circular move" +#: src/emc/rs274ngc/interp_internal.cc:161 +msgid "Cannot use polar coordinate on a machine lacking X or Y axes" msgstr "" -#: src/emc/motion/command.c:940 -msgid "can't do circular move with limits exceeded" +#: src/emc/rs274ngc/interp_internal.cc:162 +msgid "Cannot use polar coordinate except in G17 plane" msgstr "" -#: src/emc/motion/command.c:958 -msgid "can't add circular move" +#: src/emc/rs274ngc/interp_internal.cc:163 +msgid "Cannot specify both polar coordinate and X word" msgstr "" -#: src/emc/motion/command.c:1048 -msgid "MOTION: can't STEP while already executing" +#: src/emc/rs274ngc/interp_internal.cc:164 +msgid "Cannot specify both polar coordinate and Y word" msgstr "" -#: src/emc/motion/command.c:1140 -msgid "can't enable motion, enable input is false" +#: src/emc/rs274ngc/interp_internal.cc:185 +#: src/emc/rs274ngc/interp_internal.cc:199 +#: src/emc/rs274ngc/interp_internal.cc:214 +msgid "Polar coordinates can only be used for motion" msgstr "" -#: src/emc/motion/command.c:1213 -msgid "must be in joint mode to home" +#: src/emc/rs274ngc/interp_read.cc:1150 src/emc/rs274ngc/interp_read.cc:1154 +#, c-format +msgid "Bad character '\\%03o' used" msgstr "" -#: src/emc/motion/command.c:1224 src/emc/motion/command.c:1235 -msgid "homing sequence already in progress" +#: src/emc/rs274ngc/interp_read.cc:1154 +#, c-format +msgid "Bad character '%c' used" msgstr "" -#: src/emc/motion/command.c:1233 -msgid "homing already in progress" +#: src/emc/rs274ngc/interp_read.cc:1678 +msgid "Left bracket missing after 'while'" msgstr "" -#: src/emc/motion/command.c:1263 -msgid "must be in joint mode or disabled to unhome" +#: src/emc/rs274ngc/interp_read.cc:1693 +msgid "Left bracket missing after 'repeat'" msgstr "" -#: src/emc/motion/command.c:1275 src/emc/motion/command.c:1298 -#, c-format -msgid "Cannot unhome while homing, joint %d" +#: src/emc/rs274ngc/interp_read.cc:1708 +msgid "Left bracket missing after 'if'" msgstr "" -#: src/emc/motion/command.c:1279 src/emc/motion/command.c:1302 -#, c-format -msgid "Cannot unhome while moving, joint %d" +#: src/emc/rs274ngc/interp_read.cc:1723 +msgid "Left bracket missing after 'elseif'" msgstr "" -#: src/emc/motion/command.c:1307 -#, c-format -msgid "Cannot unhome inactive joint %d" +#: src/emc/rs274ngc/interp_read.cc:1926 +msgid "Cannot read current position with cutter radius compensation on" msgstr "" -#: src/emc/motion/command.c:1311 -#, c-format -msgid "Cannot unhome invalid joint %d (max %d)" +#: src/emc/rs274ngc/interp_read.cc:1941 +msgid "Expected # reading parameter" msgstr "" -#: src/emc/motion/command.c:1338 -msgid "need to be enabled, in coord mode for probe move" +#: src/emc/rs274ngc/interp_read.cc:1943 +msgid "Expected ] reading bracketed parameter" msgstr "" -#: src/emc/motion/command.c:1348 -msgid "can't do probe move with limits exceeded" +#: src/emc/rs274ngc/interp_read.cc:2615 +#, c-format +msgid "bad number format (conversion failed) parsing '%s'" msgstr "" -#: src/emc/motion/command.c:1362 -msgid "Probe is already clear when starting G38.4 or G38.5 move" +#: src/emc/rs274ngc/interp_read.cc:2616 +#, c-format +msgid "bad number format (trailing characters) parsing '%s'" msgstr "" -#: src/emc/motion/command.c:1364 -msgid "Probe is already tripped when starting G38.2 or G38.3 move" +#: src/emc/rs274ngc/interp_read.cc:2706 +msgid "Calculation resulted in 'not a number'" msgstr "" -#: src/emc/motion/command.c:1376 -msgid "can't add probe move" +#: src/emc/rs274ngc/interp_read.cc:2708 +msgid "Calculation resulted in 'infinity'" msgstr "" -#: src/emc/motion/command.c:1400 -msgid "need to be enabled, in coord mode for rigid tap move" +#: src/emc/rs274ngc/interp_read.cc:3001 +#, c-format +msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" msgstr "" -#: src/emc/motion/command.c:1410 -msgid "can't do rigid tap move with limits exceeded" +#: src/emc/rs274ngc/interp_read.cc:3113 +msgid "Multiple U words on one line" msgstr "" -#: src/emc/motion/command.c:1421 -msgid "can't add rigid tap move" +#: src/emc/rs274ngc/interp_read.cc:3129 +msgid "Multiple V words on one line" msgstr "" -#: src/emc/motion/command.c:1435 -msgid "need to be enabled, in teleop mode for teleop move" +#: src/emc/rs274ngc/interp_read.cc:3145 +msgid "Multiple W words on one line" msgstr "" -#: src/emc/motion/command.c:1605 src/emc/motion/command.c:1556 +#: src/emc/rs274ngc/interp_o_word.cc:97 #, c-format -msgid "joint %d: too many compensation entries" +msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" msgstr "" -#: src/emc/motion/command.c:1611 src/emc/motion/command.c:1562 +#: src/emc/rs274ngc/interp_o_word.cc:722 #, c-format -msgid "joint %d: compensation values must increase" +msgid "%d: not in a subroutine definition: '%s'" msgstr "" -#: src/emc/motion/command.c:1640 src/emc/motion/command.c:1591 +#: src/emc/rs274ngc/interp_o_word.cc:759 src/emc/rs274ngc/interp_o_word.cc:809 #, c-format -msgid "unrecognized command %d" +msgid "%d: duplicate O-word label: '%s' - defined in line %d" msgstr "" -#: src/emc/motion/motion.c:185 -msgid "MOTION: hal_init() failed\n" +#: src/emc/rs274ngc/interp_o_word.cc:862 +#, c-format +msgid "%d: duplicate O-word label - already defined in line %d: '%s'" msgstr "" -#: src/emc/motion/motion.c:190 +#: src/emc/rs274ngc/interp_o_word.cc:886 src/emc/rs274ngc/interp_o_word.cc:944 +#: src/emc/rs274ngc/interp_o_word.cc:978 src/emc/rs274ngc/interp_o_word.cc:996 +#: src/emc/rs274ngc/interp_o_word.cc:1013 +#: src/emc/rs274ngc/interp_o_word.cc:1038 #, c-format -msgid "MOTION: num_joints is %d, must be between 1 and %d\n" +msgid "%d: undefined O-word label: '%s'" msgstr "" -#: src/emc/motion/motion.c:197 +#: src/emc/rs274ngc/interp_o_word.cc:889 src/emc/rs274ngc/interp_o_word.cc:947 #, c-format -msgid "MOTION: num_dio is %d, must be between 1 and %d\n" +msgid "%d: no matching 'if' label: '%s' (found '%s' in line %d)" msgstr "" -#: src/emc/motion/motion.c:204 +#: src/emc/rs274ngc/interp_o_word.cc:981 #, c-format -msgid "MOTION: num_aio is %d, must be between 1 and %d\n" +msgid "%d: no matching label: '%s' (found '%s' in line %d): '%s'" msgstr "" -#: src/emc/motion/motion.c:212 -msgid "MOTION: init_hal_io() failed\n" +#: src/emc/rs274ngc/interp_o_word.cc:999 src/emc/rs274ngc/interp_o_word.cc:1016 +#, c-format +msgid "%d: no matching while/do label: '%s' (found '%s' in line %d)" msgstr "" -#: src/emc/motion/motion.c:221 -msgid "MOTION: init_comm_buffers() failed\n" +#: src/emc/rs274ngc/interp_o_word.cc:1042 +#, c-format +msgid "%d: no matching label: '%s' (found '%s' in line %d)" msgstr "" -#: src/emc/motion/motion.c:229 -msgid "MOTION: init_threads() failed\n" +#: src/emc/rs274ngc/interp_namedparams.cc:166 +#, c-format +msgid "Named parameter #<%s> not defined" msgstr "" -#: src/emc/motion/motion.c:254 +#: src/emc/rs274ngc/interp_namedparams.cc:196 #, c-format -msgid "MOTION: hal_stop_threads() failed, returned %d\n" +msgid "cant open ini file '%s'" msgstr "" -#: src/emc/motion/motion.c:260 +#: src/emc/rs274ngc/interp_namedparams.cc:213 #, c-format -msgid "MOTION: rtapi_shmem_delete() failed, returned %d\n" +msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" msgstr "" -#: src/emc/motion/motion.c:266 +#: src/emc/rs274ngc/interp_namedparams.cc:237 #, c-format -msgid "MOTION: hal_exit() failed, returned %d\n" +msgid "fetch_hal_param: hal_init(%s): %d" msgstr "" -#: src/emc/motion/motion.c:289 -msgid "MOTION: emcmot_hal_data malloc failed\n" +#: src/emc/rs274ngc/interp_namedparams.cc:238 +#, c-format +msgid "fetch_hal_param: hal_ready(): %d" msgstr "" -#: src/emc/motion/motion.c:597 src/emc/motion/motion.c:585 +#: src/emc/rs274ngc/interp_namedparams.cc:419 #, c-format -msgid "MOTION: joint %d pin/param export failed\n" +msgid "Internal error: Could not assign #<%s>" msgstr "" -#: src/emc/motion/homing.c:80 src/emc/motion/homing.c:748 +#: src/emc/rs274ngc/interp_namedparams.cc:427 #, c-format -msgid "hit limit in home state %d" +msgid "Cannot assign to read-only parameter #<%s>" msgstr "" -#: src/emc/motion/homing.c:90 +#: src/emc/rs274ngc/interp_namedparams.cc:731 #, c-format -msgid "end of move in home state %d" +msgid "BUG: lookup_named_param(%s): unhandled index=%fn" msgstr "" -#: src/emc/motion/homing.c:185 -#, c-format -msgid "unknown state '%d' during homing sequence" +#: src/emc/rs274ngc/rs274ngc_pre.cc:1407 src/emc/rs274ngc/rs274ngc_pre.cc:1482 +msgid "Queue is not empty after tool change" msgstr "" -#: src/emc/motion/homing.c:246 -msgid "Cannot home while shared home switch is closed" +#: src/emc/rs274ngc/rs274ngc_pre.cc:1786 +#, c-format +msgid "Unable to open parameter file: '%s'" msgstr "" -#: src/emc/motion/homing.c:290 -msgid "" -"invalid homing config: non-zero LATCH_VEL needs either SEARCH_VEL or " -"USE_INDEX" +#: src/emc/rs274ngc/rs274ngc_return.hh:19 +msgid "A file is already open" msgstr "" -#: src/emc/motion/homing.c:299 -msgid "invalid homing config: non-zero SEARCH_VEL needs LATCH_VEL" +#: src/emc/rs274ngc/rs274ngc_return.hh:21 +msgid "All axes missing with g52 or g92" msgstr "" -#: src/emc/motion/homing.c:447 -msgid "Home switch inactive before start of backoff move" +#: src/emc/rs274ngc/rs274ngc_return.hh:22 +msgid "All axes missing with motion code" msgstr "" -#: src/emc/motion/homing.c:495 -msgid "Home switch active before start of latch move" +#: src/emc/rs274ngc/rs274ngc_return.hh:23 +msgid "Arc radius too small to reach end point" msgstr "" -#: src/emc/motion/homing.c:551 -msgid "Home switch inactive before start of latch move" +#: src/emc/rs274ngc/rs274ngc_return.hh:24 +msgid "Argument to acos out of range" msgstr "" -#: src/emc/motion/homing.c:797 -#, c-format -msgid "unknown state '%d' during homing" +#: src/emc/rs274ngc/rs274ngc_return.hh:25 +msgid "Argument to asin out of range" msgstr "" -#: tcl/bin/emccalib.tcl:80 -msgid "LinuxCNC Servo Axis Calibration" +#: src/emc/rs274ngc/rs274ngc_return.hh:26 +msgid "Attempt to divide by zero" msgstr "" -#: tcl/bin/emccalib.tcl:90 -msgid "Save To File" +#: src/emc/rs274ngc/rs274ngc_return.hh:27 +msgid "Attempt to raise negative to non integer power" msgstr "" -#: tcl/bin/emccalib.tcl:106 tcl/bin/genedit.tcl:77 tcl/bin/halconfig.tcl:151 -#: tcl/bin/halshow.tcl:85 tcl/mini.tcl:2516 tcl/tklinuxcnc.tcl:719 -#: tcl/ngcgui.tcl:549 tcl/bin/halshow.tcl:86 -#, fuzzy -msgid "File" -msgstr "_Fájl" +#: src/emc/rs274ngc/rs274ngc_return.hh:28 +msgid "Bad format unsigned integer" +msgstr "" -#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:231 tcl/bin/halconfig.tcl:153 -#: tcl/mini.tcl:3558 src/emc/usr_intf/touchy/touchy.glade:2420 -msgid "Refresh" +#: src/emc/rs274ngc/rs274ngc_return.hh:29 +msgid "Bad number format" msgstr "" -#: tcl/bin/emccalib.tcl:110 tcl/bin/genedit.tcl:82 tcl/bin/halconfig.tcl:155 -#: tcl/mini.tcl:2535 -msgid "Save" +#: src/emc/rs274ngc/rs274ngc_return.hh:30 +msgid "Bug bad g code modal group 0" msgstr "" -#: tcl/bin/emccalib.tcl:159 tcl/bin/halconfig.tcl:623 -#, tcl-format -msgid "Tune %d" +#: src/emc/rs274ngc/rs274ngc_return.hh:31 +msgid "Bug code not g0 or g1" msgstr "" -#: tcl/bin/emccalib.tcl:160 tcl/bin/halconfig.tcl:628 -msgid "INI Name" +#: src/emc/rs274ngc/rs274ngc_return.hh:32 +msgid "Bug code not g17 g18 or g19" msgstr "" -#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:629 -msgid "HAL's Value" +#: src/emc/rs274ngc/rs274ngc_return.hh:33 +msgid "Bug code not g20 or g21" msgstr "" -#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:631 -msgid "Next Value" +#: src/emc/rs274ngc/rs274ngc_return.hh:34 +msgid "Bug code not g28 or g30" msgstr "" -#: tcl/bin/emccalib.tcl:225 tcl/bin/halconfig.tcl:680 -#: tcl/bin/halconfig.tcl:731 -msgid "Test" +#: src/emc/rs274ngc/rs274ngc_return.hh:35 +msgid "Bug code not g2 or g3" msgstr "" -#: tcl/bin/emccalib.tcl:358 tcl/bin/halconfig.tcl:883 -#, tcl-format -msgid "" -"The HAL parameter \n" -" %s \n" -" has changed. \n" -" Really quit?" +#: src/emc/rs274ngc/rs274ngc_return.hh:37 +msgid "Bug code not g4 g10 g28 g30 g52 g53 or g92 series" msgstr "" -#: tcl/bin/emccalib.tcl:383 tcl/bin/halconfig.tcl:1170 -msgid "" -"Not permitted to save here.\n" -"\n" -" You need to copy a configuration to your home directory and work there." +#: src/emc/rs274ngc/rs274ngc_return.hh:38 +msgid "Bug code not g61 g61.1 or g64" msgstr "" -#: tcl/bin/emccalib.tcl:457 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 -#: tcl/bin/pickconfig.tcl:544 tcl/bin/pickconfig.tcl:555 -#: tcl/scripts/Set_Coordinates.tcl:205 tcl/scripts/Set_Coordinates.tcl:228 -#, tcl-format -msgid "can't save %s" +#: src/emc/rs274ngc/rs274ngc_return.hh:39 +msgid "Bug code not g90 or g91" msgstr "" -#: tcl/bin/emcdebug.tcl:166 tcl/bin/emcdebug.tcl:177 -msgid "LinuxCNC Debug" +#: src/emc/rs274ngc/rs274ngc_return.hh:40 +msgid "Bug code not g98 or g99" msgstr "" -#: tcl/bin/emcdebug.tcl:185 -msgid "Invalid INI file entries" +#: src/emc/rs274ngc/rs274ngc_return.hh:41 +msgid "Bug code not in g52 or g92 series" msgstr "" -#: tcl/bin/emcdebug.tcl:186 -msgid "Configuration information" +#: src/emc/rs274ngc/rs274ngc_return.hh:42 +msgid "Bug code not in range g54 to g593" msgstr "" -#: tcl/bin/emcdebug.tcl:187 -msgid "Use of defaults" +#: src/emc/rs274ngc/rs274ngc_return.hh:43 +msgid "Bug code not m0 m1 m2 m30 m60" msgstr "" -#: tcl/bin/emcdebug.tcl:188 -msgid "Version information" +#: src/emc/rs274ngc/rs274ngc_return.hh:44 +msgid "Bug distance mode not g90 or g91" msgstr "" -#: tcl/bin/emcdebug.tcl:189 -msgid "Command issuing" +#: src/emc/rs274ngc/rs274ngc_return.hh:45 +msgid "Bug function should not have been called" msgstr "" -#: tcl/bin/emcdebug.tcl:190 -msgid "IO points" +#: src/emc/rs274ngc/rs274ngc_return.hh:46 +msgid "Bug in tool radius comp" msgstr "" -#: tcl/bin/emcdebug.tcl:191 -msgid "NML" +#: src/emc/rs274ngc/rs274ngc_return.hh:47 +msgid "Bug plane not xy yz or xz" msgstr "" -#: tcl/bin/emcdebug.tcl:192 -msgid "Motion time" +#: src/emc/rs274ngc/rs274ngc_return.hh:48 +msgid "Bug side not right or left" msgstr "" -#: tcl/bin/emcdebug.tcl:193 src/emc/usr_intf/axis/scripts/debuglevel.py:42 -msgid "Interpreter" +#: src/emc/rs274ngc/rs274ngc_return.hh:49 +msgid "Bug unknown motion code" msgstr "" -#: tcl/bin/emcdebug.tcl:194 -msgid "RCS" +#: src/emc/rs274ngc/rs274ngc_return.hh:50 +msgid "Bug unknown operation" msgstr "" -#: tcl/bin/emcdebug.tcl:195 -msgid "Trajectory level" +#: src/emc/rs274ngc/rs274ngc_return.hh:51 +msgid "Cannot change axis offsets with cutter radius comp" msgstr "" -#: tcl/bin/emcdebug.tcl:196 -msgid "Interpreter list" +#: src/emc/rs274ngc/rs274ngc_return.hh:52 +msgid "Cannot create backup file" msgstr "" -#: tcl/bin/genedit.tcl:78 tcl/mini.tcl:2533 -msgid "New" +#: src/emc/rs274ngc/rs274ngc_return.hh:53 +msgid "Cannot do g1 with zero feed rate" msgstr "" -#: tcl/bin/genedit.tcl:80 tcl/mini.tcl:1667 tcl/mini.tcl:2534 -#: tcl/tklinuxcnc.tcl:720 tcl/tklinuxcnc.tcl:1657 -#, fuzzy -msgid "Open..." -msgstr "_Megnyitás" +#: src/emc/rs274ngc/rs274ngc_return.hh:54 +msgid "Cannot do zero repeats of cycle" +msgstr "" -#: tcl/bin/genedit.tcl:84 tcl/mini.tcl:2536 -msgid "Save As..." +#: src/emc/rs274ngc/rs274ngc_return.hh:55 +msgid "Cannot make arc with zero feed rate" msgstr "" -#: tcl/bin/genedit.tcl:87 tcl/bin/halconfig.tcl:165 tcl/bin/halshow.tcl:92 -#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1243 -#: tcl/ngcgui.tcl:3680 tcl/bin/halshow.tcl:93 -#, fuzzy -msgid "Exit" -msgstr "Sz_erkesztés" - -#: tcl/bin/genedit.tcl:91 tcl/mini.tcl:2517 -#, fuzzy -msgid "Edit" -msgstr "Sz_erkesztés" - -#: tcl/bin/genedit.tcl:92 tcl/mini.tcl:2543 -msgid "Cut" +#: src/emc/rs274ngc/rs274ngc_return.hh:56 +msgid "Cannot open backup file" msgstr "" -#: tcl/bin/genedit.tcl:94 tcl/mini.tcl:2544 -#, fuzzy -msgid "Copy" -msgstr "Máso_lás" - -#: tcl/bin/genedit.tcl:96 tcl/mini.tcl:2545 -#, fuzzy -msgid "Paste" -msgstr "Szü_net" - -#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:68 -msgid "Select All" +#: src/emc/rs274ngc/rs274ngc_return.hh:57 +msgid "Cannot open variable file" msgstr "" -#: tcl/bin/genedit.tcl:104 tcl/bin/halconfig.tcl:192 tcl/mini.tcl:919 -#: tcl/mini.tcl:2519 tcl/tklinuxcnc.tcl:790 -#, fuzzy -msgid "Help" -msgstr "_Segítség" - -#: tcl/bin/genedit.tcl:105 tcl/mini.tcl:1011 tcl/mini.tcl:2559 -#: tcl/tklinuxcnc.tcl:796 -msgid "About..." +#: src/emc/rs274ngc/rs274ngc_return.hh:58 +msgid "Cannot probe with cutter radius comp on" msgstr "" -#: tcl/bin/genedit.tcl:130 -msgid "Save and Reload" +#: src/emc/rs274ngc/rs274ngc_return.hh:59 +msgid "Cannot probe with zero feed rate" msgstr "" -#: tcl/bin/genedit.tcl:133 tcl/mini.tcl:2550 -msgid "Find..." +#: src/emc/rs274ngc/rs274ngc_return.hh:60 +msgid "Cannot put a b in canned cycle" msgstr "" -#: tcl/bin/genedit.tcl:135 tcl/mini.tcl:2552 -msgid "Renumber File..." +#: src/emc/rs274ngc/rs274ngc_return.hh:61 +msgid "Cannot put a c in canned cycle" msgstr "" -#: tcl/bin/genedit.tcl:140 tcl/mini.tcl:917 tcl/mini.tcl:2518 -#: tcl/tklinuxcnc.tcl:746 -msgid "Settings" +#: src/emc/rs274ngc/rs274ngc_return.hh:62 +msgid "Cannot put an a in canned cycle" msgstr "" -#: tcl/bin/genedit.tcl:141 tcl/mini.tcl:2554 -msgid "No Numbering" +#: src/emc/rs274ngc/rs274ngc_return.hh:63 +msgid "Cannot turn cutter radius comp on when on" msgstr "" -#: tcl/bin/genedit.tcl:144 tcl/mini.tcl:2556 -msgid "Line Numbering..." +#: src/emc/rs274ngc/rs274ngc_return.hh:64 +msgid "Cannot use axis values with g80" msgstr "" -#: tcl/bin/genedit.tcl:150 tcl/tklinuxcnc.tcl:768 -msgid "Scripts" +#: src/emc/rs274ngc/rs274ngc_return.hh:65 +msgid "Cannot use axis values without a g code that uses them" msgstr "" -#: tcl/bin/genedit.tcl:177 -msgid "About TkEditor" +#: src/emc/rs274ngc/rs274ngc_return.hh:66 +msgid "Cannot use g28 or g30 with cutter radius comp" msgstr "" -#: tcl/bin/genedit.tcl:179 -msgid "" -"TkEditor\n" -"\n" -"Simple Tcl/Tk Text Editor\n" -"\n" -"GPL Version 2" +#: src/emc/rs274ngc/rs274ngc_return.hh:67 +msgid "Cannot use g53 incremental" msgstr "" -#: tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 tcl/mini.tcl:1775 -#: tcl/tklinuxcnc.tcl:451 src/emc/task/emctaskmain.cc:2072 -#: src/emc/task/emctaskmain.cc:2000 -#, c-format, tcl-format -msgid "can't open %s" +#: src/emc/rs274ngc/rs274ngc_return.hh:68 +msgid "Cannot use g53 with cutter radius comp" msgstr "" -#: tcl/bin/genedit.tcl:267 tcl/mini.tcl:3090 -msgid "Find" +#: src/emc/rs274ngc/rs274ngc_return.hh:69 +msgid "Cannot use two g codes that both use axis values" msgstr "" -#: tcl/bin/genedit.tcl:270 +#: src/emc/rs274ngc/rs274ngc_return.hh:70 #, fuzzy -msgid "Find:" -msgstr "Fő orsó:" +msgid "Command too long" +msgstr "Mutasd a programozott pozíciót" -#: tcl/bin/genedit.tcl:276 -#, fuzzy -msgid "Replace:" -msgstr "Relatív" +#: src/emc/rs274ngc/rs274ngc_return.hh:71 +msgid "Current point same as end point of arc" +msgstr "" -#: tcl/bin/genedit.tcl:282 -msgid "Find All" +#: src/emc/rs274ngc/rs274ngc_return.hh:72 +msgid "Dwell time missing with g4" msgstr "" -#: tcl/bin/genedit.tcl:285 tcl/mini.tcl:3113 -msgid "Replace All" +#: src/emc/rs274ngc/rs274ngc_return.hh:73 +msgid "Dwell time p word missing with g82" msgstr "" -#: tcl/bin/genedit.tcl:288 -msgid "Skip This" +#: src/emc/rs274ngc/rs274ngc_return.hh:74 +msgid "Dwell time p word missing with g86" msgstr "" -#: tcl/bin/genedit.tcl:291 -msgid "Replace This" +#: src/emc/rs274ngc/rs274ngc_return.hh:75 +msgid "Dwell time p word missing with g88" msgstr "" -#: tcl/bin/genedit.tcl:297 -msgid "Clear" +#: src/emc/rs274ngc/rs274ngc_return.hh:76 +msgid "Dwell time p word missing with g89" msgstr "" -#: tcl/bin/genedit.tcl:422 tcl/mini.tcl:2640 -msgid "Set Line Numbering" +#: src/emc/rs274ngc/rs274ngc_return.hh:77 +msgid "Equal sign missing in parameter setting" msgstr "" -#: tcl/bin/genedit.tcl:424 tcl/mini.tcl:2644 -msgid "Increment" +#: src/emc/rs274ngc/rs274ngc_return.hh:78 +msgid "F word missing with inverse time arc move" msgstr "" -#: tcl/bin/genedit.tcl:426 tcl/mini.tcl:2646 -msgid "One" +#: src/emc/rs274ngc/rs274ngc_return.hh:79 +msgid "F word missing with inverse time g1 move" msgstr "" -#: tcl/bin/genedit.tcl:429 tcl/mini.tcl:2648 -msgid "Two" +#: src/emc/rs274ngc/rs274ngc_return.hh:80 +msgid "File ended with no percent sign" msgstr "" -#: tcl/bin/genedit.tcl:432 tcl/mini.tcl:2650 -#, fuzzy -msgid "Five" -msgstr "_Fájl" +#: src/emc/rs274ngc/rs274ngc_return.hh:81 +msgid "File ended with no percent sign or program end" +msgstr "" -#: tcl/bin/genedit.tcl:435 tcl/mini.tcl:2652 -msgid "Ten" +#: src/emc/rs274ngc/rs274ngc_return.hh:82 +msgid "File name too long" msgstr "" -#: tcl/bin/genedit.tcl:439 tcl/mini.tcl:2654 -msgid "Space" +#: src/emc/rs274ngc/rs274ngc_return.hh:83 +msgid "G code out of range" msgstr "" -#: tcl/bin/genedit.tcl:441 tcl/mini.tcl:2656 -msgid "Single Space" +#: src/emc/rs274ngc/rs274ngc_return.hh:84 +msgid "I word given for arc in yz plane" msgstr "" -#: tcl/bin/genedit.tcl:444 tcl/mini.tcl:2658 -msgid "Double Space" +#: src/emc/rs274ngc/rs274ngc_return.hh:85 +msgid "I word missing with g87" msgstr "" -#: tcl/bin/genedit.tcl:447 tcl/mini.tcl:2660 -msgid "Tab Space" +#: src/emc/rs274ngc/rs274ngc_return.hh:86 +msgid "J word given for arc in xz plane" msgstr "" -#: tcl/bin/genedit.tcl:453 -msgid "Next Number:" +#: src/emc/rs274ngc/rs274ngc_return.hh:87 +msgid "J word missing with g87" msgstr "" -#: tcl/bin/genedit.tcl:474 tcl/mini.tcl:2668 -#, fuzzy -msgid "Renumber" -msgstr "Folytatás" +#: src/emc/rs274ngc/rs274ngc_return.hh:88 +msgid "K word given for arc in xy plane" +msgstr "" -#: tcl/bin/halconfig.tcl:88 tcl/bin/halshow.tcl:33 -msgid "HAL Configuration" +#: src/emc/rs274ngc/rs274ngc_return.hh:89 +msgid "K word missing with g87" msgstr "" -#: tcl/bin/halconfig.tcl:103 -msgid "Would you like to save your configuration before you exit?" +#: src/emc/rs274ngc/rs274ngc_return.hh:90 +msgid "Left bracket missing after slash with atan" msgstr "" -#: tcl/bin/halconfig.tcl:103 -msgid "Save All" +#: src/emc/rs274ngc/rs274ngc_return.hh:91 +msgid "Left bracket missing after unary operation name" msgstr "" -#: tcl/bin/halconfig.tcl:103 -msgid "Save Tune" +#: src/emc/rs274ngc/rs274ngc_return.hh:92 +#, c-format +msgid "M code greater than 199: M%d" msgstr "" -#: tcl/bin/halconfig.tcl:103 -msgid "Save as Netlist" +#: src/emc/rs274ngc/rs274ngc_return.hh:93 +msgid "Mixed radius ijk format for arc" msgstr "" -#: tcl/bin/halconfig.tcl:103 -#, fuzzy -msgid "Don't Save" -msgstr "Elől nézet" +#: src/emc/rs274ngc/rs274ngc_return.hh:94 +msgid "Multiple a words on one line" +msgstr "" -#: tcl/bin/halconfig.tcl:132 -msgid "Show" +#: src/emc/rs274ngc/rs274ngc_return.hh:95 +msgid "Multiple b words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:133 -msgid "Watch" +#: src/emc/rs274ngc/rs274ngc_return.hh:96 +msgid "Multiple c words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:134 -msgid "Modify" +#: src/emc/rs274ngc/rs274ngc_return.hh:97 +msgid "Multiple d words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:157 -msgid "Save INI Tuning" +#: src/emc/rs274ngc/rs274ngc_return.hh:98 +msgid "Multiple f words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:159 -msgid "Save HAL Ini" +#: src/emc/rs274ngc/rs274ngc_return.hh:99 +msgid "Multiple h words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:161 -msgid "Save HAL Net" +#: src/emc/rs274ngc/rs274ngc_return.hh:100 +msgid "Multiple i words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:163 -msgid "Save and Exit" +#: src/emc/rs274ngc/rs274ngc_return.hh:101 +msgid "Multiple j words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:168 tcl/mini.tcl:916 tcl/tklinuxcnc.tcl:739 -#, fuzzy -msgid "View" -msgstr "_Nézet" +#: src/emc/rs274ngc/rs274ngc_return.hh:102 +msgid "Multiple k words on one line" +msgstr "" -#: tcl/bin/halconfig.tcl:170 tcl/bin/halshow.tcl:104 tcl/bin/halshow.tcl:105 -msgid "Expand Tree" +#: src/emc/rs274ngc/rs274ngc_return.hh:103 +msgid "Multiple l words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:172 tcl/bin/halshow.tcl:106 tcl/bin/halshow.tcl:107 -msgid "Collapse Tree" +#: src/emc/rs274ngc/rs274ngc_return.hh:104 +msgid "Multiple p words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:175 tcl/bin/halshow.tcl:109 tcl/bin/halshow.tcl:110 -msgid "Expand Pins" +#: src/emc/rs274ngc/rs274ngc_return.hh:105 +msgid "Multiple q words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:177 tcl/bin/halshow.tcl:111 tcl/bin/halshow.tcl:112 -msgid "Expand Parameters" +#: src/emc/rs274ngc/rs274ngc_return.hh:106 +msgid "Multiple r words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:179 tcl/bin/halshow.tcl:113 tcl/bin/halshow.tcl:114 -msgid "Expand Signals" +#: src/emc/rs274ngc/rs274ngc_return.hh:107 +msgid "Multiple s words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:182 tcl/bin/halshow.tcl:116 tcl/bin/halshow.tcl:117 -msgid "Erase Watch" +#: src/emc/rs274ngc/rs274ngc_return.hh:108 +msgid "Multiple t words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:194 tcl/mini.tcl:840 tcl/mini.tcl:2785 -#, fuzzy -msgid "About" -msgstr "Az AXIS névjegye" - -#: tcl/bin/halconfig.tcl:196 -#, fuzzy -msgid "Main" -msgstr "Gép" - -#: tcl/bin/halconfig.tcl:476 -msgid "Enter HAL command :" +#: src/emc/rs274ngc/rs274ngc_return.hh:109 +msgid "Multiple x words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:479 tcl/bin/halconfig.tcl:528 tcl/bin/halshow.tcl:354 -#: tcl/bin/halshow.tcl:357 -msgid "Execute" +#: src/emc/rs274ngc/rs274ngc_return.hh:110 +msgid "Multiple y words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:943 tcl/bin/halshow.tcl:405 tcl/bin/halshow.tcl:413 -msgid "Select a node to show." +#: src/emc/rs274ngc/rs274ngc_return.hh:111 +msgid "Multiple z words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:968 tcl/bin/halshow.tcl:429 tcl/bin/halshow.tcl:438 -msgid "<-- Select a Leaf. Click on its name." +#: src/emc/rs274ngc/rs274ngc_return.hh:112 +msgid "Must use g0 or g1 with g53" msgstr "" -#: tcl/bin/halconfig.tcl:1085 tcl/bin/halconfig.tcl:1095 -#: tcl/bin/halconfig.tcl:1102 tcl/bin/halconfig.tcl:1109 -#: tcl/bin/halconfig.tcl:1116 -#, tcl-format -msgid "Click a highlighted entry where %s should go." +#: src/emc/rs274ngc/rs274ngc_return.hh:113 +msgid "Negative argument to sqrt" msgstr "" -#: tcl/bin/halconfig.tcl:1092 -msgid "Nothing to be done for parameters here. Try the tuning page" +#: src/emc/rs274ngc/rs274ngc_return.hh:114 +msgid "Negative d word tool radius index used" msgstr "" -#: tcl/bin/halconfig.tcl:1124 -#, tcl-format -msgid "%s is not a leaf, try again" +#: src/emc/rs274ngc/rs274ngc_return.hh:115 +msgid "Negative f word used" msgstr "" -#: tcl/bin/halconfig.tcl:1281 -msgid "" -"Copyright Raymond E Henry. 2006\n" -"License: GPL Version 2\n" -"\n" -"Halconfig is an LinuxCNC configuration tool. It requires that you have " -"started an instance of linuxcnc.\n" -"\n" -"This script carries no warranty or liability for its use to the extent " -"allowed by law." +#: src/emc/rs274ngc/rs274ngc_return.hh:116 +msgid "Negative g code used" msgstr "" -#: tcl/bin/halshow.tcl:69 tcl/bin/halshow.tcl:70 -msgid " SHOW " +#: src/emc/rs274ngc/rs274ngc_return.hh:117 +msgid "Negative h word used" msgstr "" -#: tcl/bin/halshow.tcl:70 tcl/bin/halshow.tcl:71 -msgid " WATCH " +#: src/emc/rs274ngc/rs274ngc_return.hh:118 +msgid "Negative l word used" msgstr "" -#: tcl/bin/halshow.tcl:90 tcl/bin/halshow.tcl:91 -msgid "Load Watch List" +#: src/emc/rs274ngc/rs274ngc_return.hh:119 +msgid "Negative m code used" msgstr "" -#: tcl/bin/halshow.tcl:102 tcl/bin/halshow.tcl:103 -msgid "Tree View" +#: src/emc/rs274ngc/rs274ngc_return.hh:120 +msgid "Negative or zero q value used" msgstr "" -#: tcl/bin/halshow.tcl:349 tcl/bin/halshow.tcl:354 -msgid "Test HAL command :" +#: src/emc/rs274ngc/rs274ngc_return.hh:121 +msgid "Negative p word used" msgstr "" -#: tcl/bin/halshow.tcl:544 tcl/bin/halshow.tcl:556 -msgid "Load a watch list" -msgstr "" +#: src/emc/rs274ngc/rs274ngc_return.hh:122 +#, fuzzy +msgid "Negative spindle speed used" +msgstr "Túlhajtás (%):" -#: tcl/bin/halshow.tcl:567 tcl/bin/halshow.tcl:579 -msgid "Save current watch list" +#: src/emc/rs274ngc/rs274ngc_return.hh:123 +msgid "Negative tool id used" msgstr "" -#: tcl/bin/halshow.tcl:581 tcl/bin/halshow.tcl:593 -msgid "Commands may be tested here but they will NOT be saved" +#: src/emc/rs274ngc/rs274ngc_return.hh:124 +msgid "Nested comment found" msgstr "" -#: tcl/bin/pickconfig.tcl:50 -msgid "" -"Can't find the bwidget 1.7 package. There is a debian bwidget package; " -"install \n" -"it with sudo apt-get install bwidget." +#: src/emc/rs274ngc/rs274ngc_return.hh:125 +msgid "No characters found in reading real value" msgstr "" -#: tcl/bin/pickconfig.tcl:178 -msgid "No details available." +#: src/emc/rs274ngc/rs274ngc_return.hh:126 +msgid "Non integer value for integer" msgstr "" -#: tcl/bin/pickconfig.tcl:194 -#, fuzzy -msgid "LinuxCNC Configuration Selector" -msgstr "Fő orsó fék bekapcsolva" - -#: tcl/bin/pickconfig.tcl:215 -msgid "" -"Welcome to LinuxCNC.\n" -"\n" -"Select a machine configuration from the list on the left.\n" -"Details about the selected configuration will appear in the display on the " -"right.\n" -"Click 'OK' to run the selected configuration" +#: src/emc/rs274ngc/rs274ngc_return.hh:127 +msgid "Null missing after newline" msgstr "" -#: tcl/bin/pickconfig.tcl:271 -msgid "My Configurations" +#: src/emc/rs274ngc/rs274ngc_return.hh:128 +msgid "Parameter file out of order" msgstr "" -#: tcl/bin/pickconfig.tcl:274 -msgid "Sample Configurations" +#: src/emc/rs274ngc/rs274ngc_return.hh:129 +msgid "Parameter number out of range" msgstr "" -#: tcl/bin/pickconfig.tcl:332 -#, tcl-format -msgid "ERROR: no configurations found in path '%s'" +#: src/emc/rs274ngc/rs274ngc_return.hh:130 +msgid "Parameter is readonly" msgstr "" -#: tcl/bin/pickconfig.tcl:369 -msgid "Copy Configuration?" +#: src/emc/rs274ngc/rs274ngc_return.hh:131 +msgid "Q word missing with g83" msgstr "" -#: tcl/bin/pickconfig.tcl:369 -#, tcl-format -msgid "" -"Would you like to copy the %s configuration to your home directory so you " -"can customize it?" +#: src/emc/rs274ngc/rs274ngc_return.hh:132 +msgid "Queue is not empty after probing" msgstr "" -#: tcl/bin/pickconfig.tcl:369 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:563 -msgid "Yes" +#: src/emc/rs274ngc/rs274ngc_return.hh:133 +msgid "R clearance plane unspecified in cycle" msgstr "" -#: tcl/bin/pickconfig.tcl:479 -msgid "Configuration Copied" +#: src/emc/rs274ngc/rs274ngc_return.hh:134 +msgid "R i j k words all missing for arc" msgstr "" -#: tcl/bin/pickconfig.tcl:479 -#, tcl-format -msgid "" -"The configuration file has been copied to %s. Next time, choose this " -"location when starting LinuxCNC." +#: src/emc/rs274ngc/rs274ngc_return.hh:135 +msgid "R less than x in cycle in yz plane" msgstr "" -#: tcl/bin/pickconfig.tcl:506 -msgid "Shortcut Created" +#: src/emc/rs274ngc/rs274ngc_return.hh:136 +msgid "R less than y in cycle in xz plane" msgstr "" -#: tcl/bin/pickconfig.tcl:506 -msgid "" -"A shortcut to this configuration file has been created on your desktop. You " -"can use it to automatically launch this configuration." +#: src/emc/rs274ngc/rs274ngc_return.hh:137 +msgid "R less than z in cycle in xy plane" msgstr "" -#: tcl/bin/pickconfig.tcl:511 -msgid "Create Desktop Shortcut" +#: src/emc/rs274ngc/rs274ngc_return.hh:138 +msgid "R word with no g code that uses it" msgstr "" -#: tcl/bin/tkbackplot.tcl:110 -msgid "TkLinuxCNC BackPlot" +#: src/emc/rs274ngc/rs274ngc_return.hh:139 +msgid "Slash missing after first atan argument" msgstr "" -#: tcl/bin/tkbackplot.tcl:125 -#, fuzzy -msgid "SETUP" -msgstr "ESTOP" - -#: tcl/bin/tkbackplot.tcl:127 -#, fuzzy -msgid "RESET" -msgstr "ESTOP RESET" +#: src/emc/rs274ngc/rs274ngc_return.hh:140 +msgid "Spindle not turning clockwise in g84" +msgstr "" -#: tcl/bin/tkbackplot.tcl:129 -msgid "CANCEL" +#: src/emc/rs274ngc/rs274ngc_return.hh:141 +msgid "Spindle not turning in g86" msgstr "" -#: tcl/bin/tkbackplot.tcl:250 -msgid "AXIS" +#: src/emc/rs274ngc/rs274ngc_return.hh:142 +msgid "Spindle not turning in g87" msgstr "" -#: tcl/bin/tkbackplot.tcl:251 -msgid "OFFSET" +#: src/emc/rs274ngc/rs274ngc_return.hh:143 +msgid "Spindle not turning in g88" msgstr "" -#: tcl/bin/tkbackplot.tcl:252 -msgid "ANGLE" +#: src/emc/rs274ngc/rs274ngc_return.hh:144 +msgid "Sscanf failed" msgstr "" -#: tcl/bin/tkbackplot.tcl:253 -msgid "DIRECTION" +#: src/emc/rs274ngc/rs274ngc_return.hh:145 +msgid "Start point too close to probe point" msgstr "" -#: tcl/bin/tkbackplot.tcl:270 -msgid "SIZE :" +#: src/emc/rs274ngc/rs274ngc_return.hh:146 +msgid "Too many m codes on line" msgstr "" -#: tcl/mini.tcl:490 -#, tcl-format -msgid "JOG %s +" +#: src/emc/rs274ngc/rs274ngc_return.hh:147 +msgid "Pocket max too large" msgstr "" -#: tcl/mini.tcl:491 -#, tcl-format -msgid "JOG %s -" +#: src/emc/rs274ngc/rs274ngc_return.hh:148 +msgid "Tool radius not less than arc radius with comp" msgstr "" -#: tcl/mini.tcl:492 -#, tcl-format -msgid "" -"%s\n" -"\n" -"Z\n" -"E\n" -"R\n" -"O" +#: src/emc/rs274ngc/rs274ngc_return.hh:149 +msgid "Two g codes used from same modal group" msgstr "" -#: tcl/mini.tcl:840 -msgid "" -"TkMini \n" -"\n" -"Tcl/Tk GUI for Enhanced Machine Controller\n" -"\n" -"GPL Copyright 2003 \n" -"Ray Henry \n" -"\n" -" 3D backplotter by Paul Corner \n" -" \n" -"This software comes with ABSOLUTELY NO GUARANTEE! \n" -"For details see the copyright.html file in this directory." +#: src/emc/rs274ngc/rs274ngc_return.hh:150 +msgid "Two m codes used from same modal group" msgstr "" -#: tcl/mini.tcl:915 -#, fuzzy -msgid "Program" -msgstr "_Program" +#: src/emc/rs274ngc/rs274ngc_return.hh:151 +#, c-format +msgid "Unable to open file <%s>" +msgstr "" -#: tcl/mini.tcl:918 -msgid "Info" +#: src/emc/rs274ngc/rs274ngc_return.hh:152 +msgid "Unclosed comment found" msgstr "" -#: tcl/mini.tcl:923 -msgid "Backplot" +#: src/emc/rs274ngc/rs274ngc_return.hh:153 +msgid "Unclosed expression" msgstr "" -#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:6125 +#: src/emc/rs274ngc/rs274ngc_return.hh:154 #, fuzzy -msgid "Editor" -msgstr "Sz_erkesztés" +msgid "Unknown g code used" +msgstr "Szerszám %d ismeretlen" -#: tcl/mini.tcl:927 +#: src/emc/rs274ngc/rs274ngc_return.hh:155 +#, fuzzy, c-format +msgid "Unknown m code used: M%d" +msgstr "Szerszám %d ismeretlen" + +#: src/emc/rs274ngc/rs274ngc_return.hh:156 #, fuzzy -msgid "Offsets" -msgstr "Eltolás" +msgid "Unknown operation" +msgstr "Ismeretlen hiba %s" -#: tcl/mini.tcl:929 -msgid "Tools" +#: src/emc/rs274ngc/rs274ngc_return.hh:157 +msgid "Unknown operation name starting with a" msgstr "" -#: tcl/mini.tcl:951 tcl/mini.tcl:3565 tcl/tklinuxcnc.tcl:732 -#, fuzzy -msgid "Reset" -msgstr "Folytatás" +#: src/emc/rs274ngc/rs274ngc_return.hh:158 +msgid "Unknown operation name starting with m" +msgstr "" -#: tcl/mini.tcl:960 -#, fuzzy -msgid "Position Type" -msgstr "Pozíció:" +#: src/emc/rs274ngc/rs274ngc_return.hh:159 +msgid "Unknown operation name starting with o" +msgstr "" -#: tcl/mini.tcl:962 -msgid "Tool Info" +#: src/emc/rs274ngc/rs274ngc_return.hh:160 +msgid "Unknown operation name starting with x" msgstr "" -#: tcl/mini.tcl:964 -#, fuzzy -msgid "Offset Info" -msgstr "Eltolás" +#: src/emc/rs274ngc/rs274ngc_return.hh:161 +msgid "Unknown word starting with a" +msgstr "" -#: tcl/mini.tcl:967 -#, fuzzy -msgid "Show Restart" -msgstr "Mutasd a _határokat" +#: src/emc/rs274ngc/rs274ngc_return.hh:162 +msgid "Unknown word starting with c" +msgstr "" -#: tcl/mini.tcl:968 -msgid "Hide Restart" +#: src/emc/rs274ngc/rs274ngc_return.hh:163 +msgid "Unknown word starting with e" msgstr "" -#: tcl/mini.tcl:970 -msgid "Show Split Right" +#: src/emc/rs274ngc/rs274ngc_return.hh:164 +msgid "Unknown word starting with f" msgstr "" -#: tcl/mini.tcl:972 -msgid "Show Mode Full" +#: src/emc/rs274ngc/rs274ngc_return.hh:165 +msgid "Unknown word starting with l" msgstr "" -#: tcl/mini.tcl:974 -msgid "Show Popin Full" +#: src/emc/rs274ngc/rs274ngc_return.hh:166 +msgid "Unknown word starting with r" msgstr "" -#: tcl/mini.tcl:978 -#, fuzzy -msgid "Actual Position" -msgstr "Mutasd az aktuális pozíciót" +#: src/emc/rs274ngc/rs274ngc_return.hh:167 +msgid "Unknown word starting with s" +msgstr "" -#: tcl/mini.tcl:980 -#, fuzzy -msgid "Commanded Position" -msgstr "Mutasd a programozott pozíciót" +#: src/emc/rs274ngc/rs274ngc_return.hh:168 +msgid "Unknown word starting with t" +msgstr "" -#: tcl/mini.tcl:983 -#, fuzzy -msgid "Machine Position" -msgstr "Mutasd a gép pozícióját" +#: src/emc/rs274ngc/rs274ngc_return.hh:169 +msgid "Unknown word where unary operation could be" +msgstr "" -#: tcl/mini.tcl:985 -#, fuzzy -msgid "Relative Position" -msgstr "Mutasd a relatív pozíciót" +#: src/emc/rs274ngc/rs274ngc_return.hh:170 +msgid "X and y words missing for arc in xy plane" +msgstr "" -#: tcl/mini.tcl:988 tcl/tklinuxcnc.tcl:747 -msgid "Calibration..." +#: src/emc/rs274ngc/rs274ngc_return.hh:171 +msgid "X and z words missing for arc in xz plane" msgstr "" -#: tcl/mini.tcl:990 -msgid "HAL Show..." +#: src/emc/rs274ngc/rs274ngc_return.hh:172 +msgid "X value unspecified in yz plane canned cycle" msgstr "" -#: tcl/mini.tcl:992 -msgid "HAL Config..." +#: src/emc/rs274ngc/rs274ngc_return.hh:173 +msgid "Y and z words missing for arc in yz plane" msgstr "" -#: tcl/mini.tcl:997 -#, fuzzy -msgid "Program File" -msgstr "_Program" +#: src/emc/rs274ngc/rs274ngc_return.hh:174 +msgid "Y value unspecified in xz plane canned cycle" +msgstr "" -#: tcl/mini.tcl:998 -#, fuzzy, tcl-format -msgid "Program file is %s" -msgstr "Program_szűrő %r sikertelen" +#: src/emc/rs274ngc/rs274ngc_return.hh:175 +msgid "Z value unspecified in xy plane canned cycle" +msgstr "" -#: tcl/mini.tcl:999 -msgid "Editor File" +#: src/emc/rs274ngc/rs274ngc_return.hh:176 +msgid "Zero or negative argument to ln" msgstr "" -#: tcl/mini.tcl:1000 -#, tcl-format -msgid "Editor file is %s" +#: src/emc/rs274ngc/rs274ngc_return.hh:177 +msgid "Zero radius arc" msgstr "" -#: tcl/mini.tcl:1001 -msgid "Parameter File" +#: src/emc/rs274ngc/rs274ngc_return.hh:178 +msgid "K word missing with g33/g33.1" msgstr "" -#: tcl/mini.tcl:1002 -#, tcl-format -msgid "Parameter file is %s" +#: src/emc/rs274ngc/rs274ngc_return.hh:179 +msgid "F word used with a g33/g33.1" msgstr "" -#: tcl/mini.tcl:1003 -msgid "Tool File" +#: src/emc/rs274ngc/rs274ngc_return.hh:180 +msgid "Unknown operation name starting with e" msgstr "" -#: tcl/mini.tcl:1004 -#, tcl-format -msgid "Tool file is %s" +#: src/emc/rs274ngc/rs274ngc_return.hh:181 +msgid "Unknown operation name starting with n" msgstr "" -#: tcl/mini.tcl:1006 -#, fuzzy -msgid "Active G Codes" -msgstr "Aktuális G-kódok:" +#: src/emc/rs274ngc/rs274ngc_return.hh:182 +msgid "Unknown operation name starting with g" +msgstr "" -#: tcl/mini.tcl:1007 -#, tcl-format -msgid "" -"Active codes include; \n" -"%s" +#: src/emc/rs274ngc/rs274ngc_return.hh:183 +msgid "Unknown operation name starting with l" msgstr "" -#: tcl/mini.tcl:1010 tcl/mini.tcl:2558 tcl/tklinuxcnc.tcl:791 -#, fuzzy -msgid "Help..." -msgstr "_Segítség" +#: src/emc/rs274ngc/rs274ngc_return.hh:184 +msgid "Too many subroutine parameters" +msgstr "" -#: tcl/mini.tcl:1027 tcl/tklinuxcnc.tcl:890 -msgid "ABORT" +#: src/emc/rs274ngc/rs274ngc_return.hh:185 +msgid "Too many subroutine levels" msgstr "" -#: tcl/mini.tcl:1038 tcl/mini.tcl:2048 -msgid "CONTINUE" +#: src/emc/rs274ngc/rs274ngc_return.hh:186 +msgid "Bug: call stack underrun" msgstr "" -#: tcl/mini.tcl:1044 tcl/tklinuxcnc.tcl:828 tcl/tklinuxcnc.tcl:2248 -#: src/emc/usr_intf/touchy/touchy.glade:1264 -msgid "MDI" +#: src/emc/rs274ngc/rs274ngc_return.hh:187 +msgid "Unknown control command in o word" msgstr "" -#: tcl/mini.tcl:1048 tcl/tklinuxcnc.tcl:2239 -msgid "AUTO" +#: src/emc/rs274ngc/rs274ngc_return.hh:188 +msgid "Too many oword labels" msgstr "" -#: tcl/mini.tcl:1052 tcl/mini.tcl:1812 tcl/tklinuxcnc.tcl:2141 -#: tcl/tklinuxcnc.tcl:2261 -msgid "MANUAL" +#: src/emc/rs274ngc/rs274ngc_return.hh:189 +#, fuzzy +msgid "Unknown oword number" +msgstr "Szerszám %d ismeretlen" + +#: src/emc/rs274ngc/rs274ngc_return.hh:190 +msgid "Nested subroutine definition" msgstr "" -#: tcl/mini.tcl:1106 -msgid "Tool #:" +#: src/emc/rs274ngc/rs274ngc_return.hh:191 +msgid "Not in subroutine definition" msgstr "" -#: tcl/mini.tcl:1108 -msgid "Length :" +#: src/emc/rs274ngc/rs274ngc_return.hh:192 +msgid "File not open" msgstr "" -#: tcl/mini.tcl:1119 -#, fuzzy -msgid "Work Offsets: " -msgstr "Eltolás" +#: src/emc/rs274ngc/rs274ngc_return.hh:193 +#, c-format +msgid "cannot reopen file %s - removed or renamed? (%s)" +msgstr "" -#: tcl/mini.tcl:1121 -msgid "start offsets popup here" +#: src/emc/rs274ngc/rs274ngc_return.hh:194 +msgid "Need tool prepared -Txx- for toolchange" msgstr "" -#: tcl/mini.tcl:1165 -msgid "start override popup here" +#: src/emc/rs274ngc/rs274ngc_return.hh:195 +msgid "Cannot change planes with cutter radius compensation on" msgstr "" -#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1669 -#, fuzzy -msgid "Feed Override:" -msgstr "Túlhajtás (%):" +#: src/emc/rs274ngc/rs274ngc_return.hh:196 +msgid "Cutter radius compensation allowed only in XY, XZ planes" +msgstr "" -#: tcl/mini.tcl:1180 -msgid "-- MESSAGES --" +#: src/emc/rs274ngc/rs274ngc_return.hh:197 +msgid "P word missing with G76" msgstr "" -#: tcl/mini.tcl:1230 -msgid "toggleView's not doin nothin yet" +#: src/emc/rs274ngc/rs274ngc_return.hh:198 +msgid "I J or K words missing with G76" msgstr "" -#: tcl/mini.tcl:1282 -msgid "Can't set zero with a tool offset active so I issued G49 to cancel it." +#: src/emc/rs274ngc/rs274ngc_return.hh:199 +msgid "Cannot move rotary axes with G76" msgstr "" -#: tcl/mini.tcl:1346 -#, tcl-format -msgid "Can't update the var file while machine is in auto and %s." +#: src/emc/rs274ngc/rs274ngc_return.hh:200 +msgid "Multiple e words on one line" msgstr "" -#: tcl/mini.tcl:1400 tcl/tklinuxcnc.tcl:1227 -#, fuzzy -msgid "override limits" -msgstr "Határok módosítása" +#: src/emc/rs274ngc/rs274ngc_return.hh:201 +msgid "Named parameter not terminated" +msgstr "" -#: tcl/mini.tcl:1405 tcl/tklinuxcnc.tcl:1263 -#, fuzzy -msgid "home" -msgstr "Nullpont" +#: src/emc/rs274ngc/rs274ngc_return.hh:202 +msgid "Out of memory" +msgstr "" -#: tcl/mini.tcl:1426 -msgid "DEFAULT" +#: src/emc/rs274ngc/rs274ngc_return.hh:203 +msgid "S word missing with G96" msgstr "" -#: tcl/mini.tcl:1427 -msgid "Speed:" +#: src/emc/rs274ngc/rs274ngc_return.hh:204 +msgid "Queue is not empty after external input" msgstr "" -#: tcl/mini.tcl:1430 -msgid "RAPID" +#: src/emc/rs274ngc/rs274ngc_return.hh:205 +msgid "Can't select analog input with wait type != immediate return" msgstr "" -#: tcl/mini.tcl:1447 tcl/tklinuxcnc.tcl:1391 -msgid "Set Jog Speed" +#: src/emc/rs274ngc/rs274ngc_return.hh:206 +msgid "Zero timeout with wait type != immediate return" msgstr "" -#: tcl/mini.tcl:1453 tcl/tklinuxcnc.tcl:1404 -msgid "Set jog speed:" +#: src/emc/rs274ngc/rs274ngc_return.hh:207 +msgid "Invalid to select both a digital and an analog input with M66" msgstr "" -#: tcl/mini.tcl:1511 -msgid "JOG X +" +#: src/emc/rs274ngc/rs274ngc_return.hh:208 +msgid "Need to have either a valid P or a valid E word with M66" msgstr "" -#: tcl/mini.tcl:1512 -msgid "JOG X -" +#: src/emc/rs274ngc/rs274ngc_return.hh:209 +msgid "Q word missing with g73" msgstr "" -#: tcl/mini.tcl:1516 -#, fuzzy -msgid "increment" -msgstr "Lépes növelése" +#: src/emc/rs274ngc/rs274ngc_return.hh:210 +msgid "Digital input selected out of bounds" +msgstr "" -#: tcl/mini.tcl:1518 tcl/tklinuxcnc.tcl:602 tcl/tklinuxcnc.tcl:1249 -#: tcl/tklinuxcnc.tcl:1253 -#, fuzzy -msgid "continuous" -msgstr "Folytonos" - -#: tcl/mini.tcl:1520 -msgid "" -"A\n" -"L\n" -"L\n" -"\n" -"Z\n" -"E\n" -"R\n" -"O" +#: src/emc/rs274ngc/rs274ngc_return.hh:211 +msgid "Analog input selected out of bounds" msgstr "" -#: tcl/mini.tcl:1588 src/emc/usr_intf/touchy/touchy.glade:1422 -#, fuzzy -msgid "Spindle Forward" -msgstr "Fő orsó fék bekapcsolva" - -#: tcl/mini.tcl:1589 src/emc/usr_intf/touchy/touchy.glade:1433 -#, fuzzy -msgid "Spindle Reverse" -msgstr "Fő orsó fék bekapcsolva" - -#: tcl/mini.tcl:1590 tcl/tklinuxcnc.tcl:871 -#, fuzzy -msgid "Spindle off" -msgstr "Fő orsó fék kikapcsolva" +#: src/emc/rs274ngc/rs274ngc_return.hh:212 +msgid "W value unspecified in UV plane canned cycle" +msgstr "" -#: tcl/mini.tcl:1592 src/emc/usr_intf/touchy/touchy.glade:1479 -#, fuzzy -msgid "Spindle Slower" -msgstr "Fő orsó lassítása [F11]" +#: src/emc/rs274ngc/rs274ngc_return.hh:213 +msgid "U value unspecified in VW plane canned cycle" +msgstr "" -#: tcl/mini.tcl:1596 src/emc/usr_intf/touchy/touchy.glade:1464 -#, fuzzy -msgid "Spindle Faster" -msgstr "Fő orsó gyorsítása [F12]" +#: src/emc/rs274ngc/rs274ngc_return.hh:214 +msgid "V value unspecified in UW plane canned cycle" +msgstr "" -#: tcl/mini.tcl:1632 tcl/tklinuxcnc.tcl:1620 -msgid "MDI:" +#: src/emc/rs274ngc/rs274ngc_return.hh:215 +msgid "R less than W in cycle in UV plane" msgstr "" -#: tcl/mini.tcl:1669 tcl/tklinuxcnc.tcl:1658 -#: src/emc/usr_intf/stepconf/stepconf.glade:4403 -#: src/emc/usr_intf/pncconf/pncconf.glade:60509 -#: src/emc/usr_intf/pncconf/pncconf.glade:61603 -#: src/emc/usr_intf/pncconf/pncconf.glade:62696 -#: src/emc/usr_intf/pncconf/pncconf.glade:63789 -#: src/emc/usr_intf/pncconf/pncconf.glade:64889 -msgid "Run" +#: src/emc/rs274ngc/rs274ngc_return.hh:216 +msgid "R less than U in cycle in VW plane" msgstr "" -#: tcl/mini.tcl:1671 tcl/tklinuxcnc.tcl:1659 -#: src/emc/usr_intf/pncconf/pncconf.glade:60574 -#: src/emc/usr_intf/pncconf/pncconf.glade:61668 -#: src/emc/usr_intf/pncconf/pncconf.glade:62761 -#: src/emc/usr_intf/pncconf/pncconf.glade:63854 -#, fuzzy -msgid "Pause" -msgstr "Szü_net" +#: src/emc/rs274ngc/rs274ngc_return.hh:217 +msgid "R less than V in cycle in UW plane" +msgstr "" -#: tcl/mini.tcl:1673 tcl/tklinuxcnc.tcl:1660 -#, fuzzy -msgid "Resume" -msgstr "Folytatás" +#: src/hal/utils/meter.c:200 +#, c-format +msgid "ERROR: '%s' is not a valid probe type\n" +msgstr "HIBA: '%s' nem érvényes tapintó típus\n" -#: tcl/mini.tcl:1675 tcl/tklinuxcnc.tcl:1661 -#, fuzzy -msgid "Step" -msgstr "Lépé_s" +#: src/hal/utils/meter.c:208 +#, c-format +msgid "ERROR: no pin/signal/parameter name\n" +msgstr "HIBA: láb/jel/paraméter név hiányzik\n" -#: tcl/mini.tcl:1677 tcl/tklinuxcnc.tcl:1662 -msgid "Verify" +#: src/hal/utils/meter.c:214 +#, c-format +msgid "" +"ERROR: -s option requires a probe type and a pin/signal/parameter name\n" msgstr "" +"HIBA: -s opcióhoz szükséges a tapintó típusa és egy láb/jell/paraméter név\n" -#: tcl/mini.tcl:1698 -msgid "RESTART LINE" +#: src/hal/utils/meter.c:240 tcl/tklinuxcnc.tcl:764 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6431 +msgid "Hal Meter" msgstr "" -#: tcl/mini.tcl:1699 -#, fuzzy -msgid "Back" -msgstr "Fék" - -#: tcl/mini.tcl:1700 -msgid "Ahead" +#: src/hal/utils/meter.c:290 +msgid "_Select" msgstr "" -#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1221 -msgid "Restart" +#: src/hal/utils/meter.c:291 +msgid "E_xit" msgstr "" -#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 -#: tcl/tklinuxcnc.tcl:465 src/emc/usr_intf/axis/scripts/axis.py:1885 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:754 -#: src/emc/usr_intf/axis/scripts/axis.py:1872 -msgid "All files" -msgstr "" +#: src/hal/utils/meter.c:339 src/hal/utils/meter.c:367 +msgid "Select Item to Probe" +msgstr "Válaszd ki a vizsgálandó elemet" -#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 -#: tcl/tklinuxcnc.tcl:466 -msgid "Text files" -msgstr "" +#: src/hal/utils/meter.c:669 +msgid " _Pins " +msgstr " _Lábak " -#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 -#: tcl/tklinuxcnc.tcl:467 -msgid "NC files" -msgstr "" +#: src/hal/utils/meter.c:670 +msgid " _Signals " +msgstr " _Jelek " -#: tcl/mini.tcl:1753 +#: src/hal/utils/meter.c:671 +msgid " Para_meters " +msgstr " Para_méterek " + +#: src/hal/utils/meter.c:714 +msgid "_Close" +msgstr "_Bezárás" + +#: src/hal/utils/scope.c:126 +#, fuzzy msgid "" -"The interpreter is running. \n" -" Pressing OK will abort and load the new program" +"Usage:\n" +" halscope [-h] [-i infile] [-o outfile] [num_samples]\n" msgstr "" +"Használat:\n" +" halscope [-h] [-i ini_fájl] [-o kimeneti_fájl] [mintavétel_száma]\n" -#: tcl/mini.tcl:1886 +#: src/hal/utils/scope.c:479 src/hal/utils/scope.c:506 +msgid "Open Configuration File:" +msgstr "Konfigurációs fájl megnyitása:" + +#: src/hal/utils/scope.c:540 +msgid "_Open Configuration..." +msgstr "Konfiguráció meg_nyitása..." + +#: src/hal/utils/scope.c:546 +msgid "_Save Configuration..." +msgstr "Konfiguráció el_mentése..." + +#: src/hal/utils/scope.c:555 +msgid "O_pen Data File..." +msgstr "Adatfájl meg_nyitása..." + +#: src/hal/utils/scope.c:562 +msgid "S_ave Data File..." +msgstr "Adatfájl el_mentésa..." + +#: src/hal/utils/scope.c:571 share/axis/tcl/axis.tcl:96 #, fuzzy -msgid "ESTOPPED" -msgstr "ESTOP" +msgid "_Quit" +msgstr "_Kilépés" -#: tcl/mini.tcl:1889 +#: src/hal/utils/scope.c:577 +msgid "_About Halscope" +msgstr "_Halszkóp névjegy" + +#: src/hal/utils/scope.c:583 share/axis/tcl/axis.tcl:501 #, fuzzy -msgid "ESTOP PUSH" -msgstr "ESTOP RESET" +msgid "_File" +msgstr "_Fájl" -#: tcl/mini.tcl:1892 tcl/tklinuxcnc.tcl:2233 -msgid "ESTOP RESET" -msgstr "ESTOP RESET" +#: src/hal/utils/scope.c:587 share/axis/tcl/axis.tcl:517 +#, fuzzy +msgid "_Help" +msgstr "_Segítség" -#: tcl/mini.tcl:1897 tcl/tklinuxcnc.tcl:2298 -msgid "SPINDLE FORWARD" -msgstr "" +#: src/hal/utils/scope.c:646 +msgid "HAL Oscilloscope" +msgstr "HAL Oszcilloszkóp" -#: tcl/mini.tcl:1899 tcl/tklinuxcnc.tcl:2300 -msgid "SPINDLE REVERSE" +#: src/hal/utils/scope.c:674 +msgid "Horizontal" +msgstr "Horizontális" + +#: src/hal/utils/scope.c:682 +msgid "Selected Channel" +msgstr "Kiválasztott csatorna" + +#: src/hal/utils/scope.c:688 +msgid "Run Mode" +msgstr "Futási mód" + +#: src/hal/utils/scope.c:691 +msgid "Trigger" +msgstr "Trigger jel" + +#: src/hal/utils/scope.c:697 +msgid "Vertical" +msgstr "Vertikális" + +#: src/hal/utils/scope.c:705 share/axis/tcl/axis.tcl:138 +#: share/axis/tcl/axis.tcl:1269 src/emc/usr_intf/gscreen/gscreen.py:3416 +#: src/emc/usr_intf/gscreen/gscreen.py:3417 +#: src/emc/usr_intf/gscreen/gscreen.glade:2614 +msgid "Stop" +msgstr "Stop" + +#: src/hal/utils/scope.c:708 +msgid "Normal" +msgstr "Normál" + +#: src/hal/utils/scope.c:711 +msgid "Single" +msgstr "Egyedi" + +#: src/hal/utils/scope.c:714 +msgid "Roll" +msgstr "Görgetés" + +#: src/hal/utils/scope_horiz.c:130 src/emc/usr_intf/gscreen/gscreen.glade:3419 +msgid "Zoom" +msgstr "Közelítés" + +#: src/hal/utils/scope_horiz.c:131 +msgid " Pos " +msgstr " Poz " + +#: src/hal/utils/scope_horiz.c:164 +msgid "" +"----- Samples\n" +"at ---- KHz" msgstr "" +"----- mintavétel\n" +"---- KHz-en" -#: tcl/mini.tcl:1901 tcl/tklinuxcnc.tcl:2302 -msgid "SPINDLE OFF" +#: src/hal/utils/scope_horiz.c:464 +msgid "Realtime component not loaded" +msgstr "Valós idejű komponens nincs betöltve" + +#: src/hal/utils/scope_horiz.c:465 +msgid "" +"HALSCOPE uses a realtime component called scope_rt'\n" +"to sample signals for display. It is not currently loaded\n" +"and attempting to load it automatically failed. More information\n" +"may be available in the terminal where halscope was started.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Load the component (using 'halcmd loadrt scope_rt'), then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" msgstr "" -#: tcl/mini.tcl:1903 tcl/tklinuxcnc.tcl:2304 -msgid "SPINDLE INCREASE" +#: src/hal/utils/scope_horiz.c:536 +msgid "Realtime function not linked" msgstr "" -#: tcl/mini.tcl:1905 tcl/tklinuxcnc.tcl:2306 -msgid "SPINDLE DECREASE" +#: src/hal/utils/scope_horiz.c:537 +msgid "" +"The HALSCOPE realtime sampling function\n" +"must be called from a HAL thread in to\n" +"determine the sampling rate.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Select a thread name and multiplier then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" msgstr "" -#: tcl/mini.tcl:1907 tcl/tklinuxcnc.tcl:2308 -msgid "SPINDLE ?" +#: src/hal/utils/scope_horiz.c:544 +msgid "Select Sample Rate" msgstr "" -#: tcl/mini.tcl:1911 tcl/tklinuxcnc.tcl:2312 -msgid "BRAKE ON" +#: src/hal/utils/scope_horiz.c:545 +msgid "" +"Select a thread name and multiplier then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" msgstr "" -#: tcl/mini.tcl:1913 tcl/tklinuxcnc.tcl:2314 -msgid "BRAKE OFF" +#: src/hal/utils/scope_horiz.c:567 +msgid "Thread:" msgstr "" -#: tcl/mini.tcl:1915 tcl/tklinuxcnc.tcl:2316 -msgid "BRAKE ?" +#: src/hal/utils/scope_horiz.c:575 +msgid "Sample Period:" msgstr "" -#: tcl/mini.tcl:1919 tcl/tklinuxcnc.tcl:2274 -msgid "MIST ON" +#: src/hal/utils/scope_horiz.c:583 +msgid "Sample Rate:" msgstr "" -#: tcl/mini.tcl:1921 tcl/tklinuxcnc.tcl:2276 -msgid "MIST OFF" +#: src/hal/utils/scope_horiz.c:599 src/emc/usr_intf/touchy/mdi.py:79 +#: src/emc/usr_intf/gscreen/mdi.py:78 +msgid "Thread" msgstr "" -#: tcl/mini.tcl:1923 tcl/tklinuxcnc.tcl:2278 -msgid "MIST ?" +#: src/hal/utils/scope_horiz.c:600 +msgid "Period" msgstr "" -#: tcl/mini.tcl:1927 tcl/tklinuxcnc.tcl:2282 -msgid "FLOOD ON" +#: src/hal/utils/scope_horiz.c:638 +msgid "Multiplier:" msgstr "" -#: tcl/mini.tcl:1929 tcl/tklinuxcnc.tcl:2284 -msgid "FLOOD OFF" +#: src/hal/utils/scope_horiz.c:655 +msgid "Record Length" msgstr "" -#: tcl/mini.tcl:1931 tcl/tklinuxcnc.tcl:2286 -msgid "FLOOD ?" +#: src/hal/utils/scope_horiz.c:658 +#, c-format +msgid "%5d samples (1 channel)" msgstr "" -#: tcl/mini.tcl:2052 -msgid "FEEDHOLD" +#: src/hal/utils/scope_horiz.c:660 +#, c-format +msgid "%5d samples (2 channels)" msgstr "" -#: tcl/mini.tcl:2124 -msgid "" -"TOOL SETUP \n" -" Click or tab to edit. Press enter to return to keyboard machine control." +#: src/hal/utils/scope_horiz.c:664 +#, c-format +msgid "%5d samples (4 channels)" msgstr "" -#: tcl/mini.tcl:2130 -msgid " TOOL NUMBER " +#: src/hal/utils/scope_horiz.c:668 +#, c-format +msgid "%5d samples (8 channels)" msgstr "" -#: tcl/mini.tcl:2131 -msgid " LENGTH " +#: src/hal/utils/scope_horiz.c:672 +#, c-format +msgid "%5d samples (16 channels)" msgstr "" -#: tcl/mini.tcl:2132 -msgid " DIAMETER " -msgstr "" +#: src/hal/utils/scope_horiz.c:727 src/hal/utils/scope_horiz.c:773 +#: src/hal/utils/scope_horiz.c:985 src/hal/utils/scope_vert.c:771 +#: src/hal/utils/scope_vert.c:863 tcl/bin/emccalib.tcl:232 +#: tcl/bin/genedit.tcl:180 tcl/bin/genedit.tcl:450 tcl/bin/halconfig.tcl:682 +#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:387 +#: tcl/bin/pickconfig.tcl:749 tcl/bin/pickconfig.tcl:799 tcl/mini.tcl:1456 +#: tcl/mini.tcl:2937 tcl/tklinuxcnc.tcl:160 tcl/tklinuxcnc.tcl:245 +#: tcl/tklinuxcnc.tcl:419 tcl/tklinuxcnc.tcl:1338 tcl/tklinuxcnc.tcl:1407 +#: tcl/tklinuxcnc.tcl:1438 tcl/tklinuxcnc.tcl:1469 tcl/tklinuxcnc.tcl:2017 +#: tcl/tklinuxcnc.tcl:2036 tcl/tklinuxcnc.tcl:2055 tcl/tklinuxcnc.tcl:2102 +#: src/emc/usr_intf/axis/scripts/axis.py:1106 +#: src/emc/usr_intf/axis/scripts/axis.py:1173 +#: src/emc/usr_intf/axis/scripts/axis.py:1508 +#: src/emc/usr_intf/axis/scripts/axis.py:2672 +#: src/emc/usr_intf/axis/scripts/axis.py:3599 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:718 +#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1828 +#: share/axis/tcl/axis.tcl:1865 +msgid "OK" +msgstr "OK" -#: tcl/mini.tcl:2133 -msgid " COMMENT " -msgstr "" +#: src/hal/utils/scope_horiz.c:732 src/hal/utils/scope_horiz.c:773 +#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 tcl/tooledit.tcl:468 +#, fuzzy +msgid "Quit" +msgstr "_Kilépés" -#: tcl/mini.tcl:2188 -msgid "Add Extra Tool" +#: src/hal/utils/scope_horiz.c:764 +msgid "Realtime thread(s) not running" msgstr "" -#: tcl/mini.tcl:2189 -msgid "Remove Last Tool" +#: src/hal/utils/scope_horiz.c:765 +msgid "" +"HALSCOPE uses code in a realtime HAL thread to sample\n" +"signals for display. The HAL thread(s) are not running.\n" +"Threads are usually started by the application you are\n" +"attempting to run, or you can use the 'halcmd start' command.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Start the threads, then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" msgstr "" -#: tcl/mini.tcl:2217 tcl/mini.tcl:2253 -#, tcl-format -msgid "Can't update the tool file while machine is in auto and %s." +#: src/hal/utils/scope_horiz.c:798 +msgid "Pick log file to write to:" msgstr "" -#: tcl/mini.tcl:2229 -msgid "This is not a good number." +#: src/hal/utils/scope_horiz.c:981 +msgid "Not enough channels" msgstr "" -#: tcl/mini.tcl:2293 +#: src/hal/utils/scope_horiz.c:982 msgid "" -"COORDINATE SYSTEM SETUP \n" -"\n" -" Click value to edit with keyboard. Press enter to return to keyboard " -"control of machine. \n" -" " +"This record length cannot handle the channels\n" +"that are currently enabled. Pick a shorter\n" +"record length that supports more channels." msgstr "" -#: tcl/mini.tcl:2320 tcl/scripts/Set_Coordinates.tcl:80 -#, fuzzy -msgid "Axis " -msgstr "Tengely:" - -#: tcl/mini.tcl:2321 -msgid "Value " +#: src/hal/utils/scope_horiz.c:1070 +#, c-format +msgid "" +"%s\n" +"per div" msgstr "" -#: tcl/mini.tcl:2326 tcl/scripts/Set_Coordinates.tcl:91 -msgid "Teach" +#: src/hal/utils/scope_horiz.c:1085 +#, c-format +msgid "" +"%s samples\n" +"at %s" msgstr "" -#: tcl/mini.tcl:2334 -msgid "Write And Load File " +#: src/hal/utils/scope_horiz.c:1189 +msgid "nSec" msgstr "" -#: tcl/mini.tcl:2336 -msgid "Offset By Radius" +#: src/hal/utils/scope_horiz.c:1192 +msgid "uSec" msgstr "" -#: tcl/mini.tcl:2337 -msgid "Offset By Length" +#: src/hal/utils/scope_horiz.c:1196 +msgid "mSec" msgstr "" -#: tcl/mini.tcl:2342 -msgid "Subtract" +#: src/hal/utils/scope_horiz.c:1200 src/emc/usr_intf/pncconf/pncconf.glade:2635 +#: src/emc/usr_intf/pncconf/pncconf.glade:3533 +#: src/emc/usr_intf/pncconf/pncconf.glade:4414 +#: src/emc/usr_intf/pncconf/pncconf.glade:5295 +msgid "Sec" msgstr "" -#: tcl/mini.tcl:2344 -msgid "Add" +#: src/hal/utils/scope_horiz.c:1217 src/emc/usr_intf/stepconf/spindle.glade:301 +#: src/emc/usr_intf/stepconf/axisx.glade:693 +#: src/emc/usr_intf/stepconf/axisy.glade:679 +#: src/emc/usr_intf/stepconf/axisz.glade:679 +#: src/emc/usr_intf/stepconf/axisa.glade:693 +#: src/emc/usr_intf/pncconf/pncconf.glade:8024 +#: src/emc/usr_intf/pncconf/pncconf.glade:8201 +#: src/emc/usr_intf/pncconf/pncconf.glade:8213 +msgid "Hz" msgstr "" -#: tcl/mini.tcl:2366 -msgid "Zero All G54" +#: src/hal/utils/scope_horiz.c:1220 +msgid "KHz" msgstr "" -#: tcl/mini.tcl:2367 -msgid "Zero All G55" +#: src/hal/utils/scope_horiz.c:1224 +msgid "Mhz" msgstr "" -#: tcl/mini.tcl:2368 -msgid "Zero All G56" -msgstr "" +#: src/hal/utils/scope_vert.c:413 src/hal/utils/scope_vert.c:1303 +#, fuzzy, c-format +msgid "" +"Offset\n" +"%s" +msgstr "Eltolás" -#: tcl/mini.tcl:2369 -msgid "Zero All G57" +#: src/hal/utils/scope_vert.c:628 +msgid "Gain" msgstr "" -#: tcl/mini.tcl:2370 -msgid "Zero All G58" +#: src/hal/utils/scope_vert.c:640 src/hal/utils/scope_trig.c:272 +msgid "Pos" msgstr "" -#: tcl/mini.tcl:2371 -msgid "Zero All G59" +#: src/hal/utils/scope_vert.c:654 tcl/ngcgui_ttt.tcl:214 +#: src/emc/usr_intf/pncconf/pncconf.glade:64273 +msgid "Scale" msgstr "" -#: tcl/mini.tcl:2372 -msgid "Zero All G59.1" +#: src/hal/utils/scope_vert.c:667 +msgid "Chan Off" msgstr "" -#: tcl/mini.tcl:2373 -msgid "Zero All G59.2" -msgstr "" +#: src/hal/utils/scope_vert.c:723 +#, fuzzy +msgid "Set Offset" +msgstr "Eltolás" -#: tcl/mini.tcl:2374 -msgid "Zero All G59.3" +#: src/hal/utils/scope_vert.c:724 +#, c-format +msgid "" +"Set the vertical offset\n" +"for channel %d." msgstr "" -#: tcl/mini.tcl:2375 -msgid "Zero All ????" +#: src/hal/utils/scope_vert.c:744 +msgid "AC Coupled" msgstr "" -#: tcl/mini.tcl:2493 -msgid "Modified..." -msgstr "" +#: src/hal/utils/scope_vert.c:779 src/hal/utils/scope_vert.c:1215 +#: src/hal/utils/scope_trig.c:387 tcl/bin/emccalib.tcl:234 +#: tcl/bin/genedit.tcl:294 tcl/bin/halconfig.tcl:103 tcl/bin/halconfig.tcl:684 +#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:390 +#: tcl/bin/pickconfig.tcl:567 tcl/mini.tcl:1457 tcl/mini.tcl:2938 +#: tcl/mini.tcl:3110 tcl/tklinuxcnc.tcl:162 tcl/tklinuxcnc.tcl:213 +#: tcl/tklinuxcnc.tcl:420 tcl/tklinuxcnc.tcl:1339 tcl/tklinuxcnc.tcl:1408 +#: tcl/tklinuxcnc.tcl:1439 tcl/tklinuxcnc.tcl:1470 tcl/tklinuxcnc.tcl:2103 +#: src/emc/usr_intf/axis/scripts/axis.py:1453 +#: src/emc/usr_intf/axis/scripts/axis.py:1509 +#: src/emc/usr_intf/axis/scripts/axis.py:1699 +#: src/emc/usr_intf/axis/scripts/axis.py:2108 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:720 +#: src/emc/usr_intf/stepconf/main_page.glade:467 +#: src/emc/usr_intf/gscreen/gscreen.glade:3986 +msgid "Cancel" +msgstr "Mégsem" -#: tcl/mini.tcl:2538 -msgid "Save and Load" +#: src/hal/utils/scope_vert.c:859 +msgid "Too many channels" msgstr "" -#: tcl/mini.tcl:2540 -msgid "Undo" +#: src/hal/utils/scope_vert.c:860 +msgid "" +"You cannot add another channel.\n" +"\n" +"Either turn off one or more channels, or shorten\n" +"the record length to allow for more channels" msgstr "" -#: tcl/mini.tcl:2541 -msgid "Redo" +#: src/hal/utils/scope_vert.c:1074 +msgid "Select Channel Source" msgstr "" -#: tcl/mini.tcl:2546 -msgid "Delete" +#: src/hal/utils/scope_vert.c:1075 +#, c-format +msgid "" +"Select a pin, signal, or parameter\n" +"as the source for channel %d." msgstr "" -#: tcl/mini.tcl:2551 -msgid "Replace..." +#: src/hal/utils/scope_vert.c:1107 +msgid "Pins" msgstr "" -#: tcl/mini.tcl:2664 -msgid "Next Number: " +#: src/hal/utils/scope_vert.c:1108 +msgid "Signals" msgstr "" -#: tcl/mini.tcl:2765 -msgid "Basic Help" +#: src/hal/utils/scope_vert.c:1109 +msgid "Parameters" msgstr "" -#: tcl/mini.tcl:2765 -msgid "" -"This is a simple ASCII editor like many others.\n" -"\n" -"Ctrl+O Open\n" -"Ctrl+S Save\n" -"Ctrl+Z Undo\n" -"Ctrl+Y Redo\n" -"Ctrl+X Cut\n" -"Ctrl+C Copy\n" -"Ctrl+V Paste\n" -"Del Delete\n" -"Ctrl+A Select All\n" -"\n" -"Ctrl+F Find\n" -"Ctrl+R Replace " +#: src/hal/utils/scope_trig.c:110 +#, c-format +msgid "Falling" msgstr "" -#: tcl/mini.tcl:2785 -msgid "" -"tknotepad by Joseph Acosta. \n" -"\n" -" Modified for EMC by: Paul Corner " +#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:295 +#, c-format +msgid "Rising" msgstr "" -#: tcl/mini.tcl:2793 +#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:303 msgid "" -"The contents of this file may have changed, do you wish to to save your " -"changes?" +"Source\n" +"None" msgstr "" -#: tcl/mini.tcl:2794 -msgid "New Confirm?" +#: src/hal/utils/scope_trig.c:124 +#, c-format +msgid "" +"Source\n" +"Chan %2d" msgstr "" -#: tcl/mini.tcl:2928 -msgid "Print Setup" +#: src/hal/utils/scope_trig.c:219 tcl/tklinuxcnc.tcl:827 +#: src/emc/usr_intf/touchy/touchy.glade:2469 +msgid "Auto" msgstr "" -#: tcl/mini.tcl:2932 -#, fuzzy -msgid "Print Command: " -msgstr "MDI parancs:" - -#: tcl/mini.tcl:3095 -msgid "Find what:" +#: src/hal/utils/scope_trig.c:221 +msgid "Force" msgstr "" -#: tcl/mini.tcl:3101 -msgid "Replace with:" +#: src/hal/utils/scope_trig.c:255 src/hal/utils/scope_trig.c:289 +msgid "Level" msgstr "" -#: tcl/mini.tcl:3109 -msgid "Find Next" +#: src/hal/utils/scope_trig.c:323 +msgid "Trigger Source" msgstr "" -#: tcl/mini.tcl:3112 -#, fuzzy -msgid "Replace" -msgstr "Relatív" - -#: tcl/mini.tcl:3120 -msgid "Up" +#: src/hal/utils/scope_trig.c:324 +msgid "Select a channel to use for triggering." msgstr "" -#: tcl/mini.tcl:3121 -msgid "Down" +#: src/hal/utils/scope_trig.c:347 +msgid "Chan" msgstr "" -#: tcl/mini.tcl:3124 -msgid "Match case" +#: src/hal/utils/scope_trig.c:348 +msgid "Source" msgstr "" -#: tcl/mini.tcl:3569 -msgid "rot-x" +#: src/emc/motion/control.c:270 +msgid "Unexpected realtime delay: check dmesg for details." msgstr "" -#: tcl/mini.tcl:3579 -msgid "rot-y" +#: src/emc/motion/control.c:272 +#, c-format +msgid "" +"\n" +"In recent history there were\n" +"%ld, %ld, %ld, %ld, and %ld\n" +"elapsed clocks between calls to the motion controller.\n" msgstr "" -#: tcl/mini.tcl:3589 -msgid "rot-z" +#: src/emc/motion/control.c:277 +#, c-format +msgid "" +"This time, there were %ld which is so anomalously\n" +"large that it probably signifies a problem with your\n" +"realtime configuration. For the rest of this run of\n" +"EMC, this message will be suppressed.\n" +"\n" msgstr "" -#: tcl/mini.tcl:3599 -msgid "zoom" +#: src/emc/motion/control.c:394 +msgid "G38.4 move finished without breaking contact." msgstr "" -#: tcl/mini.tcl:3655 -#, fuzzy -msgid "TEST" -msgstr "ESTOP" - -#: tcl/mini.tcl:3699 -msgid "Hide Setup" +#: src/emc/motion/control.c:397 +msgid "G38.2 move finished without making contact." msgstr "" -#: tcl/mini.tcl:3703 -#, fuzzy -msgid "Show Setup" -msgstr "EMC állapot mutatása" +#: src/emc/motion/control.c:412 +msgid "Probe tripped during non-probe MDI command." +msgstr "" -#: tcl/show_errors.tcl:41 -msgid "LinuxCNC Errors" +#: src/emc/motion/control.c:440 +msgid "Probe tripped during homing motion." msgstr "" -#: tcl/show_errors.tcl:44 -msgid "" -"LinuxCNC terminated with an error. When reporting problems, please include " -"all the information below in your message." +#: src/emc/motion/control.c:444 +msgid "Probe tripped during a jog." msgstr "" -#: tcl/show_errors.tcl:69 tcl/scripts/Set_Coordinates.tcl:103 -msgid "Close" +#: src/emc/motion/control.c:622 +msgid "can't add coordinated return move" msgstr "" -#: tcl/tklinuxcnc.tcl:154 tcl/tklinuxcnc.tcl:181 -msgid "Set Run Mark" +#: src/emc/motion/control.c:663 +msgid "can't add linear coordinated jog move" msgstr "" -#: tcl/tklinuxcnc.tcl:156 -#, tcl-format -msgid "Set run mark at line %s?" +#: src/emc/motion/control.c:817 +#, c-format +msgid "fault %d during orient in progress" msgstr "" -#: tcl/tklinuxcnc.tcl:176 tcl/tklinuxcnc.tcl:204 -msgid "untitled" +#: src/emc/motion/control.c:957 +msgid "motion stopped by enable input" msgstr "" -#: tcl/tklinuxcnc.tcl:212 -msgid "Load Parameter File" +#: src/emc/motion/control.c:980 +#, c-format +msgid "joint %d on limit switch error" msgstr "" -#: tcl/tklinuxcnc.tcl:261 -msgid "LinuxCNC Diagnostics" +#: src/emc/motion/control.c:992 +#, c-format +msgid "joint %d amplifier fault" msgstr "" -#: tcl/tklinuxcnc.tcl:263 -msgid "Task" +#: src/emc/motion/control.c:1001 +#, c-format +msgid "joint %d following error" msgstr "" -#: tcl/tklinuxcnc.tcl:265 tcl/tklinuxcnc.tcl:288 tcl/tklinuxcnc.tcl:311 -msgid "Heartbeat:" +#: src/emc/motion/control.c:1687 +#, c-format +msgid "Exceeded positive soft limit on joint %d" msgstr "" -#: tcl/tklinuxcnc.tcl:268 tcl/tklinuxcnc.tcl:291 tcl/tklinuxcnc.tcl:314 -#, fuzzy -msgid "Command:" -msgstr "Irányított" +#: src/emc/motion/control.c:1692 +#, c-format +msgid "Exceeded negative soft limit on joint %d" +msgstr "" -#: tcl/tklinuxcnc.tcl:271 tcl/tklinuxcnc.tcl:294 tcl/tklinuxcnc.tcl:317 -#, fuzzy -msgid "Command #:" -msgstr "Irányított" +#: src/emc/motion/command.c:163 +#, c-format +msgid "Can't jog invalid joint number %d." +msgstr "" -#: tcl/tklinuxcnc.tcl:274 tcl/tklinuxcnc.tcl:297 tcl/tklinuxcnc.tcl:320 -msgid "Status:" +#: src/emc/motion/command.c:167 +#, c-format +msgid "Can't jog joint %d further past max hard limit." msgstr "" -#: tcl/tklinuxcnc.tcl:286 -msgid "Io" +#: src/emc/motion/command.c:172 +#, c-format +msgid "Can't jog joint %d further past min hard limit." msgstr "" -#: tcl/tklinuxcnc.tcl:309 -#, fuzzy -msgid "Motion" -msgstr "Pozíció:" +#: src/emc/motion/command.c:178 +#, c-format +msgid "Can't jog joint %d further past max soft limit." +msgstr "" -#: tcl/tklinuxcnc.tcl:350 -msgid "About TkLinuxCNC" +#: src/emc/motion/command.c:183 +#, c-format +msgid "Can't jog joint %d further past min soft limit." msgstr "" -#: tcl/tklinuxcnc.tcl:351 -msgid "" -"TkLinuxcnc\n" -"\n" -"Tcl/Tk GUI for LinuxCNC\n" -"\n" -"GPL Version 2 (2012)" +#: src/emc/motion/command.c:243 +#, c-format +msgid "%s move on line %d would exceed joint %d's positive limit" msgstr "" -#: tcl/tklinuxcnc.tcl:399 -msgid "Set Tool Offset" +#: src/emc/motion/command.c:250 +#, c-format +msgid "%s move on line %d would exceed joint %d's negative limit" msgstr "" -#: tcl/tklinuxcnc.tcl:404 tcl/tklinuxcnc.tcl:905 -#, fuzzy -msgid "Tool:" -msgstr "Hűtés:" +#: src/emc/motion/command.c:535 +msgid "all joints must be homed before going into coordinated mode" +msgstr "" -#: tcl/tklinuxcnc.tcl:722 -#, fuzzy -msgid "Edit..." -msgstr "Sz_erkesztés" +#: src/emc/motion/command.c:556 +msgid "all joints must be homed before going into teleop mode" +msgstr "" -#: tcl/tklinuxcnc.tcl:727 -msgid "Tool Table Editor..." +#: src/emc/motion/command.c:710 src/emc/motion/command.c:776 +#: src/emc/motion/command.c:849 +msgid "Can't jog joint in coordinated mode." msgstr "" -#: tcl/tklinuxcnc.tcl:730 src/emc/usr_intf/touchy/touchy.glade:1383 -msgid "Reload Tool Table" +#: src/emc/motion/command.c:715 src/emc/motion/command.c:781 +#: src/emc/motion/command.c:854 +msgid "Can't jog joint when not enabled." msgstr "" -#: tcl/tklinuxcnc.tcl:740 -msgid "Offsets and Variables..." +#: src/emc/motion/command.c:720 src/emc/motion/command.c:859 +msgid "Can't jog any joints while homing." msgstr "" -#: tcl/tklinuxcnc.tcl:741 -msgid "Diagnostics..." +#: src/emc/motion/command.c:786 +msgid "Can't jog any joint while homing." msgstr "" -#: tcl/tklinuxcnc.tcl:742 -msgid "Backplot..." +#: src/emc/motion/command.c:918 +msgid "need to be enabled, in coord mode for linear move" msgstr "" -#: tcl/tklinuxcnc.tcl:748 -msgid "Testing..." +#: src/emc/motion/command.c:928 +msgid "can't do linear move with limits exceeded" msgstr "" -#: tcl/tklinuxcnc.tcl:749 -msgid "Debug..." +#: src/emc/motion/command.c:954 +#, c-format +msgid "can't add linear move at line %d, error code %d" msgstr "" -#: tcl/tklinuxcnc.tcl:750 -msgid "Font..." +#: src/emc/motion/command.c:982 +msgid "need to be enabled, in coord mode for circular move" msgstr "" -#: tcl/tklinuxcnc.tcl:754 src/emc/usr_intf/axis/scripts/image-to-gcode.py:665 -msgid "Units" +#: src/emc/motion/command.c:993 +msgid "can't do circular move with limits exceeded" msgstr "" -#: tcl/tklinuxcnc.tcl:755 -msgid "auto" +#: src/emc/motion/command.c:1015 +#, c-format +msgid "can't add circular move at line %d, error code %d" msgstr "" -#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8512 -msgid "inches" +#: src/emc/motion/command.c:1114 +msgid "MOTION: can't STEP while jogging" msgstr "" -#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1556 -#: src/emc/usr_intf/axis/scripts/axis.py:1726 -#: src/emc/usr_intf/touchy/touchy.glade:3301 -#: src/emc/usr_intf/stepconf/stepconf.py:1685 -#: src/emc/usr_intf/stepconf/stepconf.py:2221 -#: src/emc/usr_intf/stepconf/stepconf.glade:4357 -#: src/emc/usr_intf/pncconf/pncconf.py:8508 -#: src/emc/usr_intf/pncconf/pncconf.glade:2229 -#: src/emc/usr_intf/pncconf/pncconf.glade:2394 -#: src/emc/usr_intf/pncconf/pncconf.glade:57616 -#: src/emc/usr_intf/pncconf/pncconf.glade:57688 -#: src/emc/usr_intf/pncconf/pncconf.glade:60646 -#: src/emc/usr_intf/pncconf/pncconf.glade:61739 -#: src/emc/usr_intf/pncconf/pncconf.glade:62832 -#: src/emc/usr_intf/pncconf/pncconf.glade:63925 -#: src/emc/usr_intf/pncconf/pncconf.glade:65091 -#: src/emc/usr_intf/axis/scripts/axis.py:1543 -#: src/emc/usr_intf/axis/scripts/axis.py:1713 -msgid "mm" +#: src/emc/motion/command.c:1117 +msgid "MOTION: can't STEP while in return move" msgstr "" -#: tcl/tklinuxcnc.tcl:758 -msgid "cm" +#: src/emc/motion/command.c:1127 +#, c-format +msgid "MOTION: STEP while in state %d" msgstr "" -#: tcl/tklinuxcnc.tcl:762 -msgid "Utilities" +#: src/emc/motion/command.c:1229 +msgid "can't enable motion, enable input is false" msgstr "" -#: tcl/tklinuxcnc.tcl:763 -msgid "Hal Scope" +#: src/emc/motion/command.c:1302 +msgid "must be in joint mode to home" msgstr "" -#: tcl/tklinuxcnc.tcl:785 -msgid "HAL Show" +#: src/emc/motion/command.c:1313 src/emc/motion/command.c:1324 +msgid "homing sequence already in progress" msgstr "" -#: tcl/tklinuxcnc.tcl:786 -msgid "HAL Config" +#: src/emc/motion/command.c:1322 +msgid "homing already in progress" msgstr "" -#: tcl/tklinuxcnc.tcl:792 -msgid "Balloon help" +#: src/emc/motion/command.c:1352 +msgid "must be in joint mode or disabled to unhome" msgstr "" -#: tcl/tklinuxcnc.tcl:815 -msgid "Estop on" +#: src/emc/motion/command.c:1364 src/emc/motion/command.c:1387 +#, c-format +msgid "Cannot unhome while homing, joint %d" msgstr "" -#: tcl/tklinuxcnc.tcl:816 -msgid "Estop off" +#: src/emc/motion/command.c:1368 src/emc/motion/command.c:1391 +#, c-format +msgid "Cannot unhome while moving, joint %d" msgstr "" -#: tcl/tklinuxcnc.tcl:818 -#, fuzzy -msgid "Machine on" -msgstr "Gép" +#: src/emc/motion/command.c:1396 +#, c-format +msgid "Cannot unhome inactive joint %d" +msgstr "" -#: tcl/tklinuxcnc.tcl:819 -#, fuzzy -msgid "Machine off" -msgstr "Gép" +#: src/emc/motion/command.c:1400 +#, c-format +msgid "Cannot unhome invalid joint %d (max %d)" +msgstr "" -#: tcl/tklinuxcnc.tcl:826 src/emc/usr_intf/touchy/touchy.glade:1561 -#, fuzzy -msgid "Manual" -msgstr "Kézi vezérlés" +#: src/emc/motion/command.c:1427 +msgid "need to be enabled, in coord mode for probe move" +msgstr "" -#: tcl/tklinuxcnc.tcl:835 -#, fuzzy -msgid "Mist on" -msgstr "Elszívás" +#: src/emc/motion/command.c:1437 +msgid "can't do probe move with limits exceeded" +msgstr "" -#: tcl/tklinuxcnc.tcl:836 -#, fuzzy -msgid "Mist off" -msgstr "Elszívás" +#: src/emc/motion/command.c:1451 +msgid "Probe is already clear when starting G38.4 or G38.5 move" +msgstr "" -#: tcl/tklinuxcnc.tcl:843 -#, fuzzy -msgid "Flood on" -msgstr "Folyadék" +#: src/emc/motion/command.c:1453 +msgid "Probe is already tripped when starting G38.2 or G38.3 move" +msgstr "" -#: tcl/tklinuxcnc.tcl:844 -#, fuzzy -msgid "Flood off" -msgstr "Folyadék" +#: src/emc/motion/command.c:1473 +msgid "can't add probe move" +msgstr "" -#: tcl/tklinuxcnc.tcl:851 -msgid "Lube on" +#: src/emc/motion/command.c:1498 +msgid "need to be enabled, in coord mode for rigid tap move" msgstr "" -#: tcl/tklinuxcnc.tcl:852 -msgid "Lube off" +#: src/emc/motion/command.c:1509 +msgid "can't do rigid tap move with limits exceeded" msgstr "" -#: tcl/tklinuxcnc.tcl:869 -#, fuzzy -msgid "Spindle forward" -msgstr "Fő orsó fék bekapcsolva" +#: src/emc/motion/command.c:1526 +msgid "can't add rigid tap move" +msgstr "" -#: tcl/tklinuxcnc.tcl:870 -#, fuzzy -msgid "Spindle reverse" -msgstr "Fő orsó fék bekapcsolva" +#: src/emc/motion/command.c:1541 +msgid "need to be enabled, in teleop mode for teleop move" +msgstr "" -#: tcl/tklinuxcnc.tcl:885 -#, fuzzy -msgid "Brake on" -msgstr "Fék" +#: src/emc/motion/command.c:1710 +#, c-format +msgid "joint %d: too many compensation entries" +msgstr "" -#: tcl/tklinuxcnc.tcl:886 -#, fuzzy -msgid "Brake off" -msgstr "Fék" +#: src/emc/motion/command.c:1716 +#, c-format +msgid "joint %d: compensation values must increase" +msgstr "" -#: tcl/tklinuxcnc.tcl:907 -#, fuzzy -msgid "Offset:" -msgstr "Eltolás" - -#: tcl/tklinuxcnc.tcl:913 -#, fuzzy -msgid "Work Offsets:" -msgstr "Eltolás" - -#: tcl/tklinuxcnc.tcl:1233 -#, fuzzy -msgid "relative" -msgstr "Relatív" - -#: tcl/tklinuxcnc.tcl:1234 -#, fuzzy -msgid "machine" -msgstr "Gép" - -#: tcl/tklinuxcnc.tcl:1236 -#, fuzzy -msgid "actual" -msgstr "Aktuális" - -#: tcl/tklinuxcnc.tcl:1237 -#, fuzzy -msgid "commanded" -msgstr "Irányított" - -#: tcl/tklinuxcnc.tcl:1239 -msgid "joint" +#: src/emc/motion/command.c:1745 +#, c-format +msgid "unrecognized command %d" msgstr "" -#: tcl/tklinuxcnc.tcl:1240 -msgid "world" +#: src/emc/motion/motion.c:212 +msgid "MOTION: hal_init() failed\n" msgstr "" -#: tcl/tklinuxcnc.tcl:1333 -#, fuzzy -msgid "Axis Offset" -msgstr "Eltolás" - -#: tcl/tklinuxcnc.tcl:1335 -msgid "Set axis value:" +#: src/emc/motion/motion.c:217 +#, c-format +msgid "MOTION: num_joints is %d, must be between 1 and %d\n" msgstr "" -#: tcl/tklinuxcnc.tcl:1429 -#, fuzzy -msgid "Set Feed Override" -msgstr "Túlhajtás (%):" - -#: tcl/tklinuxcnc.tcl:1435 -#, fuzzy -msgid "Set feed override:" -msgstr "Túlhajtás (%):" - -#: tcl/tklinuxcnc.tcl:1460 -msgid "Set Spindle Override" +#: src/emc/motion/motion.c:224 +#, c-format +msgid "MOTION: num_dio is %d, must be between 1 and %d\n" msgstr "" -#: tcl/tklinuxcnc.tcl:1466 -msgid "Set spindle speed override:" +#: src/emc/motion/motion.c:231 +#, c-format +msgid "MOTION: num_aio is %d, must be between 1 and %d\n" msgstr "" -#: tcl/tklinuxcnc.tcl:1521 -msgid "Linear Jog Speed" +#: src/emc/motion/motion.c:239 +msgid "MOTION: init_hal_io() failed\n" msgstr "" -#: tcl/tklinuxcnc.tcl:1552 -msgid "Angular Jog Speed (deg)/min:" +#: src/emc/motion/motion.c:248 +msgid "MOTION: init_comm_buffers() failed\n" msgstr "" -#: tcl/tklinuxcnc.tcl:1596 -#, fuzzy -msgid "Spindle speed Override:" -msgstr "Túlhajtás (%):" - -#: tcl/tklinuxcnc.tcl:1642 -#, fuzzy -msgid "Program: " -msgstr "_Program" - -#: tcl/tklinuxcnc.tcl:1647 -msgid " - Status: " +#: src/emc/motion/motion.c:256 +msgid "MOTION: init_threads() failed\n" msgstr "" -#: tcl/tklinuxcnc.tcl:1663 -msgid "Optional Stop" +#: src/emc/motion/motion.c:281 +#, c-format +msgid "MOTION: hal_stop_threads() failed, returned %d\n" msgstr "" -#: tcl/tklinuxcnc.tcl:2010 -msgid "Error" +#: src/emc/motion/motion.c:294 +#, c-format +msgid "MOTION: rtapi_shmem_delete() failed, returned %d\n" msgstr "" -#: tcl/tklinuxcnc.tcl:2070 tcl/ngcgui_ttt.tcl:46 -msgid "Set Font" +#: src/emc/motion/motion.c:300 +#, c-format +msgid "MOTION: hal_exit() failed, returned %d\n" msgstr "" -#: tcl/tklinuxcnc.tcl:2079 tcl/ngcgui_ttt.tcl:283 -msgid "Font" +#: src/emc/motion/motion.c:323 +msgid "MOTION: emcmot_hal_data malloc failed\n" msgstr "" -#: tcl/tklinuxcnc.tcl:2086 -msgid "Size" +#: src/emc/motion/motion.c:331 +msgid "MOTION: joints malloc failed\n" msgstr "" -#: tcl/tklinuxcnc.tcl:2093 -#, fuzzy -msgid "Style" -msgstr "Lépé_s" - -#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:1916 -msgid "ESTOP" -msgstr "ESTOP" - -#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2840 share/axis/tcl/axis.tcl:1918 -msgid "ON" -msgstr "ON" - -#: tcl/tklinuxcnc.tcl:2290 -msgid "LUBE ON" +#: src/emc/motion/motion.c:695 +#, c-format +msgid "MOTION: joint %d pin/param export failed\n" msgstr "" -#: tcl/tklinuxcnc.tcl:2292 -msgid "LUBE OFF" +#: src/emc/motion/homing.c:80 src/emc/motion/homing.c:748 +#, c-format +msgid "hit limit in home state %d" msgstr "" -#: tcl/tklinuxcnc.tcl:2294 -msgid "LUBE ?" +#: src/emc/motion/homing.c:90 +#, c-format +msgid "end of move in home state %d" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:23 -msgid "LinuxCNC Set Coordinate" +#: src/emc/motion/homing.c:185 +#, c-format +msgid "unknown state '%d' during homing sequence" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:26 -msgid "Coordinate System Control Window" +#: src/emc/motion/homing.c:246 +msgid "Cannot home while shared home switch is closed" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:81 -msgid "Var # " +#: src/emc/motion/homing.c:290 +msgid "" +"invalid homing config: non-zero LATCH_VEL needs either SEARCH_VEL or " +"USE_INDEX" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:82 -#, fuzzy -msgid "Offset Value " -msgstr "Eltolás" - -#: tcl/scripts/Set_Coordinates.tcl:83 -msgid "What to Teach" +#: src/emc/motion/homing.c:299 +msgid "invalid homing config: non-zero SEARCH_VEL needs LATCH_VEL" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:101 -msgid "Set Old" +#: src/emc/motion/homing.c:447 +msgid "Home switch inactive before start of backoff move" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:102 -msgid "Set Zero" +#: src/emc/motion/homing.c:495 +msgid "Home switch active before start of latch move" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:104 -msgid "Write" +#: src/emc/motion/homing.c:551 +msgid "Home switch inactive before start of latch move" msgstr "" -#: tcl/ngcgui.tcl:467 -msgid "Need non-null file name" +#: src/emc/motion/homing.c:797 +#, c-format +msgid "unknown state '%d' during homing" msgstr "" -#: tcl/ngcgui.tcl:543 -msgid "Disallowed use of ngcgui generated file as Subfile" -msgstr "" +#: tcl/bin/emccalib.tcl:80 +#, fuzzy +msgid "Machinekit Servo Axis Calibration" +msgstr "Mutasd a gép pozícióját" -#: tcl/ngcgui.tcl:549 -msgid "" -"marked (not_a_subfile)\n" -"Not intended for use as a subfile" +#: tcl/bin/emccalib.tcl:90 +msgid "Save To File" msgstr "" -#: tcl/ngcgui.tcl:564 -msgid "Multiple subroutines in file not allowed" +#: tcl/bin/emccalib.tcl:106 tcl/bin/genedit.tcl:77 tcl/bin/halconfig.tcl:151 +#: tcl/bin/halshow.tcl:85 tcl/mini.tcl:2516 tcl/tklinuxcnc.tcl:719 +#: tcl/ngcgui.tcl:489 +#, fuzzy +msgid "File" +msgstr "_Fájl" + +#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:236 tcl/bin/halconfig.tcl:153 +#: tcl/mini.tcl:3558 src/emc/usr_intf/touchy/touchy.glade:2420 +msgid "Refresh" msgstr "" -#: tcl/ngcgui.tcl:573 tcl/ngcgui.tcl:595 tcl/ngcgui.tcl:608 tcl/ngcgui.tcl:650 -#: tcl/ngcgui.tcl:755 -msgid "bogus" +#: tcl/bin/emccalib.tcl:110 tcl/bin/genedit.tcl:82 tcl/bin/halconfig.tcl:155 +#: tcl/mini.tcl:2535 src/emc/usr_intf/axis/scripts/axis.py:2107 +msgid "Save" msgstr "" -#: tcl/ngcgui.tcl:575 -msgid "sub label" +#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:623 +#, tcl-format +msgid "Tune %d" msgstr "" -#: tcl/ngcgui.tcl:575 tcl/ngcgui.tcl:652 -msgid "does not match subroutine file name" +#: tcl/bin/emccalib.tcl:162 tcl/bin/halconfig.tcl:628 +msgid "INI Name" msgstr "" -#: tcl/ngcgui.tcl:590 tcl/ngcgui.tcl:591 -msgid "ignoring M2 after endsub" +#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:629 +msgid "HAL's Value" msgstr "" -#: tcl/ngcgui.tcl:596 -msgid "file contains lines after subend" +#: tcl/bin/emccalib.tcl:165 tcl/bin/halconfig.tcl:631 +msgid "Next Value" msgstr "" -#: tcl/ngcgui.tcl:609 -msgid "file contains lines before sub" +#: tcl/bin/emccalib.tcl:230 tcl/bin/halconfig.tcl:680 tcl/bin/halconfig.tcl:731 +msgid "Test" msgstr "" -#: tcl/ngcgui.tcl:652 -msgid "endsub label" +#: tcl/bin/emccalib.tcl:388 tcl/bin/halconfig.tcl:883 +#, tcl-format +msgid "" +"The HAL parameter \n" +" %s \n" +" has changed. \n" +" Really quit?" msgstr "" -#: tcl/ngcgui.tcl:757 -msgid "out of sequence positional parameter" +#: tcl/bin/emccalib.tcl:413 tcl/bin/halconfig.tcl:1170 +msgid "" +"Not permitted to save here.\n" +"\n" +" You need to copy a configuration to your home directory and work there." msgstr "" -#: tcl/ngcgui.tcl:757 -msgid "expected" +#: tcl/bin/emccalib.tcl:487 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 +#: tcl/bin/pickconfig.tcl:843 tcl/bin/pickconfig.tcl:854 +#: tcl/scripts/Set_Coordinates.tcl:205 tcl/scripts/Set_Coordinates.tcl:228 +#, tcl-format +msgid "can't save %s" msgstr "" -#: tcl/ngcgui.tcl:817 -msgid "toomany" +#: tcl/bin/emcdebug.tcl:166 tcl/bin/emcdebug.tcl:177 +msgid "LinuxCNC Debug" msgstr "" -#: tcl/ngcgui.tcl:868 -msgid "no sub found in file" +#: tcl/bin/emcdebug.tcl:185 +msgid "Invalid INI file entries" msgstr "" -#: tcl/ngcgui.tcl:871 -msgid "no endsub found in file" +#: tcl/bin/emcdebug.tcl:186 +msgid "Configuration information" msgstr "" -#: tcl/ngcgui.tcl:961 -msgid "Choose Files" +#: tcl/bin/emcdebug.tcl:187 +msgid "Use of defaults" msgstr "" -#: tcl/ngcgui.tcl:1100 -#, fuzzy -msgid "Controls" -msgstr "Folytonos" +#: tcl/bin/emcdebug.tcl:188 +msgid "Version information" +msgstr "" -#: tcl/ngcgui.tcl:1109 -msgid "Preamble" +#: tcl/bin/emcdebug.tcl:189 +msgid "Command issuing" msgstr "" -#: tcl/ngcgui.tcl:1122 -msgid "Subfile" +#: tcl/bin/emcdebug.tcl:190 +msgid "IO points" msgstr "" -#: tcl/ngcgui.tcl:1134 -msgid "Postamble" +#: tcl/bin/emcdebug.tcl:191 +msgid "NML" msgstr "" -#: tcl/ngcgui.tcl:1151 -msgid "Retain values on Subfile read" +#: tcl/bin/emcdebug.tcl:192 +msgid "Motion time" msgstr "" -#: tcl/ngcgui.tcl:1159 -msgid "Expand subroutine" +#: tcl/bin/emcdebug.tcl:193 src/emc/usr_intf/axis/scripts/debuglevel.py:42 +msgid "Interpreter" msgstr "" -#: tcl/ngcgui.tcl:1168 tcl/ngcgui.tcl:2414 -msgid "Autosend" +#: tcl/bin/emcdebug.tcl:194 +msgid "RCS" msgstr "" -#: tcl/ngcgui.tcl:1178 -msgid "Verbose ngcfile" +#: tcl/bin/emcdebug.tcl:195 +msgid "Trajectory level" msgstr "" -#: tcl/ngcgui.tcl:1188 tcl/ngcgui.tcl:2235 tcl/ngcgui.tcl:2259 -#: tcl/ngcgui.tcl:2289 -msgid "Create Feature" +#: tcl/bin/emcdebug.tcl:196 +msgid "Interpreter list" msgstr "" -#: tcl/ngcgui.tcl:1194 tcl/ngcgui.tcl:2919 +#: tcl/bin/genedit.tcl:78 tcl/mini.tcl:2533 +msgid "New" +msgstr "" + +#: tcl/bin/genedit.tcl:80 tcl/mini.tcl:1667 tcl/mini.tcl:2534 +#: tcl/tklinuxcnc.tcl:720 tcl/tklinuxcnc.tcl:1657 #, fuzzy -msgid "MakeFile" -msgstr "_Fájl" +msgid "Open..." +msgstr "_Megnyitás" -#: tcl/ngcgui.tcl:1195 tcl/ngcgui.tcl:2916 -msgid "Finalize" +#: tcl/bin/genedit.tcl:84 tcl/mini.tcl:2536 +msgid "Save As..." msgstr "" -#: tcl/ngcgui.tcl:1212 -msgid "Reread" -msgstr "" +#: tcl/bin/genedit.tcl:87 tcl/bin/halconfig.tcl:165 tcl/bin/halshow.tcl:92 +#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1322 +#: tcl/ngcgui.tcl:3832 +#, fuzzy +msgid "Exit" +msgstr "Sz_erkesztés" -#: tcl/ngcgui.tcl:1231 -msgid "SendFileToAxis" -msgstr "" +#: tcl/bin/genedit.tcl:91 tcl/mini.tcl:2517 +#: src/emc/usr_intf/gscreen/gscreen.glade:2685 +#, fuzzy +msgid "Edit" +msgstr "Sz_erkesztés" -#: tcl/ngcgui.tcl:1274 -msgid "Unrecoverable problem" +#: tcl/bin/genedit.tcl:92 tcl/mini.tcl:2543 +msgid "Cut" msgstr "" -#: tcl/ngcgui.tcl:1374 -msgid "Postamble file" -msgstr "" +#: tcl/bin/genedit.tcl:94 tcl/mini.tcl:2544 +#, fuzzy +msgid "Copy" +msgstr "Máso_lás" -#: tcl/ngcgui.tcl:1424 -msgid "Subroutine file" -msgstr "" +#: tcl/bin/genedit.tcl:96 tcl/mini.tcl:2545 +#, fuzzy +msgid "Paste" +msgstr "Szü_net" -#: tcl/ngcgui.tcl:1482 -msgid "Positional Parameters" +#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:73 +msgid "Select All" msgstr "" -#: tcl/ngcgui.tcl:1587 -msgid "_Globals" -msgstr "" +#: tcl/bin/genedit.tcl:104 tcl/bin/halconfig.tcl:192 tcl/mini.tcl:919 +#: tcl/mini.tcl:2519 tcl/tklinuxcnc.tcl:790 +#: src/emc/usr_intf/stepconf/main_page.glade:445 +#, fuzzy +msgid "Help" +msgstr "_Segítség" -#: tcl/ngcgui.tcl:1690 -msgid "No Subfile specified" +#: tcl/bin/genedit.tcl:105 tcl/mini.tcl:1011 tcl/mini.tcl:2559 +#: tcl/tklinuxcnc.tcl:796 +msgid "About..." msgstr "" -#: tcl/ngcgui.tcl:1692 -msgid "No parameters yet" +#: tcl/bin/genedit.tcl:130 +msgid "Save and Reload" msgstr "" -#: tcl/ngcgui.tcl:1701 -msgid "Missing value for parm" +#: tcl/bin/genedit.tcl:133 tcl/mini.tcl:2550 +msgid "Find..." msgstr "" -#: tcl/ngcgui.tcl:1735 -msgid "Output file" +#: tcl/bin/genedit.tcl:135 tcl/mini.tcl:2552 +msgid "Renumber File..." msgstr "" -#: tcl/ngcgui.tcl:1827 -msgid "Positional parameters for" +#: tcl/bin/genedit.tcl:140 tcl/mini.tcl:917 tcl/mini.tcl:2518 +#: tcl/tklinuxcnc.tcl:746 src/emc/usr_intf/gmoccapy/gmoccapy.glade:5135 +msgid "Settings" msgstr "" -#: tcl/ngcgui.tcl:1835 -msgid "expanded file" +#: tcl/bin/genedit.tcl:141 tcl/mini.tcl:2554 +msgid "No Numbering" msgstr "" -#: tcl/ngcgui.tcl:1849 -msgid "call subroutine file" +#: tcl/bin/genedit.tcl:144 tcl/mini.tcl:2556 +msgid "Line Numbering..." msgstr "" -#: tcl/ngcgui.tcl:1919 -msgid "Multiple Tabs with Features" +#: tcl/bin/genedit.tcl:150 tcl/tklinuxcnc.tcl:768 +msgid "Scripts" msgstr "" -#: tcl/ngcgui.tcl:1920 -msgid "Finalize all Tabs?" +#: tcl/bin/genedit.tcl:177 +msgid "About TkEditor" msgstr "" -#: tcl/ngcgui.tcl:1920 -msgid "Order" +#: tcl/bin/genedit.tcl:179 +msgid "" +"TkEditor\n" +"\n" +"Simple Tcl/Tk Text Editor\n" +"\n" +"GPL Version 2" msgstr "" -#: tcl/ngcgui.tcl:1922 -msgid "No, just this page" +#: tcl/bin/genedit.tcl:267 tcl/mini.tcl:3090 +msgid "Find" msgstr "" -#: tcl/ngcgui.tcl:1936 -msgid "Axis is not responding" -msgstr "" +#: tcl/bin/genedit.tcl:270 +#, fuzzy +msgid "Find:" +msgstr "Fő orsó:" -#: tcl/ngcgui.tcl:1937 -msgid "Error: " -msgstr "" +#: tcl/bin/genedit.tcl:276 +#, fuzzy +msgid "Replace:" +msgstr "Relatív" -#: tcl/ngcgui.tcl:1939 -msgid "Autosend disabled, Ctrl-A toggles autosend" +#: tcl/bin/genedit.tcl:282 +msgid "Find All" msgstr "" -#: tcl/ngcgui.tcl:1941 -msgid "File saving enabled -- Finalize to save" +#: tcl/bin/genedit.tcl:285 tcl/mini.tcl:3113 +msgid "Replace All" msgstr "" -#: tcl/ngcgui.tcl:1957 -msgid "Require .ngc suffix for filename" +#: tcl/bin/genedit.tcl:288 +msgid "Skip This" msgstr "" -#: tcl/ngcgui.tcl:1967 -msgid "Disallowed overwrite of" +#: tcl/bin/genedit.tcl:291 +msgid "Replace This" msgstr "" -#: tcl/ngcgui.tcl:1986 -msgid "FEATURE" +#: tcl/bin/genedit.tcl:297 +msgid "Clear" msgstr "" -#: tcl/ngcgui.tcl:1993 -msgid "feature line added" +#: tcl/bin/genedit.tcl:422 tcl/mini.tcl:2640 +msgid "Set Line Numbering" msgstr "" -#: tcl/ngcgui.tcl:2002 -msgid "line added" +#: tcl/bin/genedit.tcl:424 tcl/mini.tcl:2644 +msgid "Increment" msgstr "" -#: tcl/ngcgui.tcl:2002 -msgid "activated" +#: tcl/bin/genedit.tcl:426 tcl/mini.tcl:2646 +msgid "One" msgstr "" -#: tcl/ngcgui.tcl:2004 -#, fuzzy -msgid "restores" -msgstr "Stop" - -#: tcl/ngcgui.tcl:2041 -msgid "NOTREACHED mode" +#: tcl/bin/genedit.tcl:429 tcl/mini.tcl:2648 +msgid "Two" msgstr "" -#: tcl/ngcgui.tcl:2236 -msgid "Enter parms for 1st feature" -msgstr "" +#: tcl/bin/genedit.tcl:432 tcl/mini.tcl:2650 +#, fuzzy +msgid "Five" +msgstr "_Fájl" -#: tcl/ngcgui.tcl:2243 -msgid "New Outfile" +#: tcl/bin/genedit.tcl:435 tcl/mini.tcl:2652 +msgid "Ten" msgstr "" -#: tcl/ngcgui.tcl:2245 -msgid "Ready to make New Outfile" +#: tcl/bin/genedit.tcl:439 tcl/mini.tcl:2654 +msgid "Space" msgstr "" -#: tcl/ngcgui.tcl:2262 tcl/ngcgui.tcl:2295 -msgid "Enter parms for feature " +#: tcl/bin/genedit.tcl:441 tcl/mini.tcl:2656 +msgid "Single Space" msgstr "" -#: tcl/ngcgui.tcl:2282 -msgid "feature" +#: tcl/bin/genedit.tcl:444 tcl/mini.tcl:2658 +msgid "Double Space" msgstr "" -#: tcl/ngcgui.tcl:2287 -msgid "Create Next" +#: tcl/bin/genedit.tcl:447 tcl/mini.tcl:2660 +msgid "Tab Space" msgstr "" -#: tcl/ngcgui.tcl:2292 -msgid "Created feature " +#: tcl/bin/genedit.tcl:453 +msgid "Next Number:" msgstr "" -#: tcl/ngcgui.tcl:2316 +#: tcl/bin/genedit.tcl:474 tcl/mini.tcl:2668 #, fuzzy -msgid "option" -msgstr "Pozíció:" +msgid "Renumber" +msgstr "Folytatás" -#: tcl/ngcgui.tcl:2327 -msgid "Missing parameters" +#: tcl/bin/halconfig.tcl:88 tcl/bin/halshow.tcl:33 +msgid "HAL Configuration" msgstr "" -#: tcl/ngcgui.tcl:2331 -msgid "Parse Error" +#: tcl/bin/halconfig.tcl:103 +msgid "Would you like to save your configuration before you exit?" msgstr "" -#: tcl/ngcgui.tcl:2338 -msgid "Null Preamble" +#: tcl/bin/halconfig.tcl:103 +msgid "Save All" msgstr "" -#: tcl/ngcgui.tcl:2343 -msgid "Read Preamble" +#: tcl/bin/halconfig.tcl:103 +msgid "Save Tune" msgstr "" -#: tcl/ngcgui.tcl:2347 -msgid "Preamble Error" +#: tcl/bin/halconfig.tcl:103 +msgid "Save as Netlist" msgstr "" -#: tcl/ngcgui.tcl:2352 -msgid "Null Postamble" +#: tcl/bin/halconfig.tcl:103 +#, fuzzy +msgid "Don't Save" +msgstr "Elől nézet" + +#: tcl/bin/halconfig.tcl:132 +msgid "Show" msgstr "" -#: tcl/ngcgui.tcl:2357 -msgid "Read Postamble" +#: tcl/bin/halconfig.tcl:133 +msgid "Watch" msgstr "" -#: tcl/ngcgui.tcl:2361 -msgid "Postamble Error" +#: tcl/bin/halconfig.tcl:134 +msgid "Modify" msgstr "" -#: tcl/ngcgui.tcl:2366 -msgid "Read Subfile" +#: tcl/bin/halconfig.tcl:157 +msgid "Save INI Tuning" msgstr "" -#: tcl/ngcgui.tcl:2371 -msgid "Write Error" +#: tcl/bin/halconfig.tcl:159 +msgid "Save HAL Ini" msgstr "" -#: tcl/ngcgui.tcl:2375 -msgid "Outfile set" +#: tcl/bin/halconfig.tcl:161 +msgid "Save HAL Net" msgstr "" -#: tcl/ngcgui.tcl:2380 -msgid "Finished" +#: tcl/bin/halconfig.tcl:163 +msgid "Save and Exit" msgstr "" -#: tcl/ngcgui.tcl:2385 +#: tcl/bin/halconfig.tcl:168 tcl/mini.tcl:916 tcl/tklinuxcnc.tcl:739 #, fuzzy -msgid "Canceled" -msgstr "Mégsem" +msgid "View" +msgstr "_Nézet" -#: tcl/ngcgui.tcl:2391 -msgid "Sent" +#: tcl/bin/halconfig.tcl:170 tcl/bin/halshow.tcl:104 +msgid "Expand Tree" msgstr "" -#: tcl/ngcgui.tcl:2395 -#, fuzzy -msgid "SendFileToAxis failed" -msgstr "Program_szűrő %r sikertelen" +#: tcl/bin/halconfig.tcl:172 tcl/bin/halshow.tcl:106 +msgid "Collapse Tree" +msgstr "" -#: tcl/ngcgui.tcl:2399 -msgid "Ctrl-k for Key bindings" +#: tcl/bin/halconfig.tcl:175 tcl/bin/halshow.tcl:109 +msgid "Expand Pins" msgstr "" -#: tcl/ngcgui.tcl:2403 -msgid "Expand sub" +#: tcl/bin/halconfig.tcl:177 tcl/bin/halshow.tcl:111 +msgid "Expand Parameters" msgstr "" -#: tcl/ngcgui.tcl:2407 -msgid "Retain values" +#: tcl/bin/halconfig.tcl:179 tcl/bin/halshow.tcl:113 +msgid "Expand Signals" msgstr "" -#: tcl/ngcgui.tcl:2411 -msgid "Verbose" +#: tcl/bin/halconfig.tcl:182 tcl/bin/halshow.tcl:116 +msgid "Erase Watch" msgstr "" -#: tcl/ngcgui.tcl:2417 -msgid "Finalize Canceled" +#: tcl/bin/halconfig.tcl:194 tcl/mini.tcl:840 tcl/mini.tcl:2785 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "About" +msgstr "Az AXIS névjegye" + +#: tcl/bin/halconfig.tcl:196 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2579 +#, fuzzy +msgid "Main" +msgstr "Gép" + +#: tcl/bin/halconfig.tcl:476 +msgid "Enter HAL command :" msgstr "" -#: tcl/ngcgui.tcl:2572 tcl/ngcgui.tcl:2728 -msgid "Dismiss" +#: tcl/bin/halconfig.tcl:479 tcl/bin/halconfig.tcl:528 tcl/bin/halshow.tcl:354 +msgid "Execute" msgstr "" -#: tcl/ngcgui.tcl:2577 -msgid "ngcgui Error" +#: tcl/bin/halconfig.tcl:943 tcl/bin/halshow.tcl:405 +msgid "Select a node to show." msgstr "" -#: tcl/ngcgui.tcl:2600 -msgid "Declining support for tk send bug in ngcgui" +#: tcl/bin/halconfig.tcl:968 tcl/bin/halshow.tcl:429 +msgid "<-- Select a Leaf. Click on its name." msgstr "" -#: tcl/ngcgui.tcl:2601 -msgid "You should upgrade linuxcnc to >= linuxcnc2.5" +#: tcl/bin/halconfig.tcl:1085 tcl/bin/halconfig.tcl:1095 +#: tcl/bin/halconfig.tcl:1102 tcl/bin/halconfig.tcl:1109 +#: tcl/bin/halconfig.tcl:1116 +#, tcl-format +msgid "Click a highlighted entry where %s should go." msgstr "" -#: tcl/ngcgui.tcl:2645 -msgid "pre2.4_send_file_to_axis:error" +#: tcl/bin/halconfig.tcl:1092 +msgid "Nothing to be done for parameters here. Try the tuning page" msgstr "" -#: tcl/ngcgui.tcl:2839 share/axis/tcl/axis.tcl:1917 -msgid "OFF" +#: tcl/bin/halconfig.tcl:1124 +#, tcl-format +msgid "%s is not a leaf, try again" msgstr "" -#: tcl/ngcgui.tcl:2842 -#, fuzzy -msgid "Toggle autosend" -msgstr "Hűtés Ki/Be" - -#: tcl/ngcgui.tcl:2843 tcl/ngcgui.tcl:3057 -msgid "Clear entries" -msgstr "" - -#: tcl/ngcgui.tcl:2844 -msgid "Set entries to default values" +#: tcl/bin/halconfig.tcl:1281 +msgid "" +"Copyright Raymond E Henry. 2006\n" +"License: GPL Version 2\n" +"\n" +"Halconfig is an LinuxCNC configuration tool. It requires that you have " +"started an instance of linuxcnc.\n" +"\n" +"This script carries no warranty or liability for its use to the extent " +"allowed by law." msgstr "" -#: tcl/ngcgui.tcl:2845 tcl/ngcgui.tcl:2859 tcl/ngcgui.tcl:2861 -msgid "Open editor specified by" +#: tcl/bin/halshow.tcl:69 +msgid " SHOW " msgstr "" -#: tcl/ngcgui.tcl:2846 -msgid "on last outfile" +#: tcl/bin/halshow.tcl:70 +msgid " WATCH " msgstr "" -#: tcl/ngcgui.tcl:2847 -msgid "toggle expand subroutines" +#: tcl/bin/halshow.tcl:90 +msgid "Load Watch List" msgstr "" -#: tcl/ngcgui.tcl:2848 -msgid "Create feature" +#: tcl/bin/halshow.tcl:102 +msgid "Tree View" msgstr "" -#: tcl/ngcgui.tcl:2849 -msgid "Finalize (AUTO send is" +#: tcl/bin/halshow.tcl:349 +msgid "Test HAL command :" msgstr "" -#: tcl/ngcgui.tcl:2850 -msgid "Show key bindings" +#: tcl/bin/halshow.tcl:544 +msgid "Load a watch list" msgstr "" -#: tcl/ngcgui.tcl:2851 -msgid "Restart (cancel pending)" +#: tcl/bin/halshow.tcl:567 +msgid "Save current watch list" msgstr "" -#: tcl/ngcgui.tcl:2852 -msgid "(re)Read Preamble" +#: tcl/bin/halshow.tcl:581 +msgid "Commands may be tested here but they will NOT be saved" msgstr "" -#: tcl/ngcgui.tcl:2853 -msgid "(re)Read Postamble" +#: tcl/bin/pickconfig.tcl:96 +msgid "" +"Can't find the bwidget 1.7 package. There is a debian bwidget package; " +"install \n" +"it with sudo apt-get install bwidget." msgstr "" -#: tcl/ngcgui.tcl:2854 -msgid "(re)Read Subfile" -msgstr "" +#: tcl/bin/pickconfig.tcl:154 +#, fuzzy +msgid "Machinekit Configuration Selector" +msgstr "Fő orsó fék bekapcsolva" -#: tcl/ngcgui.tcl:2855 -msgid "toggle retain values" +#: tcl/bin/pickconfig.tcl:296 +msgid "No details available." msgstr "" -#: tcl/ngcgui.tcl:2856 -msgid "toggle output file verbosity" +#: tcl/bin/pickconfig.tcl:343 +msgid "" +"Welcome to MachineKit.\n" +"\n" +"Select a machine configuration from the list on the left.\n" +"Details about the selected configuration will appear in the display on the " +"right.\n" +"Click 'OK' to run the selected configuration" msgstr "" -#: tcl/ngcgui.tcl:2857 -#, fuzzy -msgid "Show status" -msgstr "Mutasd a _határokat" - -#: tcl/ngcgui.tcl:2858 -msgid "Show full status (debug info)" +#: tcl/bin/pickconfig.tcl:401 +msgid "My Configurations" msgstr "" -#: tcl/ngcgui.tcl:2860 -#, fuzzy -msgid "on current subfile" -msgstr "Újratöltés [Control-R]" - -#: tcl/ngcgui.tcl:2862 -msgid "on current preamble" +#: tcl/bin/pickconfig.tcl:405 +msgid "Sample Configurations" msgstr "" -#: tcl/ngcgui.tcl:2865 -msgid " Escape Return to Preview page" +#: tcl/bin/pickconfig.tcl:530 +#, tcl-format +msgid "ERROR: no configurations found in path '%s'" msgstr "" -#: tcl/ngcgui.tcl:2942 -msgid "Editing requires setting for environmental variable VISUAL" +#: tcl/bin/pickconfig.tcl:567 +msgid "Copy Configuration?" msgstr "" -#: tcl/ngcgui.tcl:2943 -msgid "Trying gedit" +#: tcl/bin/pickconfig.tcl:567 +#, tcl-format +msgid "" +"Would you like to copy the %s configuration to your home directory so you " +"can customize it?" msgstr "" -#: tcl/ngcgui.tcl:2955 -msgid "No file available for editing yet" +#: tcl/bin/pickconfig.tcl:567 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:563 +msgid "Yes" msgstr "" -#: tcl/ngcgui.tcl:2964 tcl/ngcgui.tcl:2973 -msgid "No file available for editing" +#: tcl/bin/pickconfig.tcl:749 +msgid "Configuration Copied" msgstr "" -#: tcl/ngcgui.tcl:2990 -msgid "Status items" +#: tcl/bin/pickconfig.tcl:749 +#, tcl-format +msgid "" +"The configuration file has been copied to %s. Next time, choose this " +"location when starting MachineKit." msgstr "" -#: tcl/ngcgui.tcl:3003 -msgid "All-page opt items" +#: tcl/bin/pickconfig.tcl:799 +msgid "Shortcut Created" msgstr "" -#: tcl/ngcgui.tcl:3009 -msgid "any-items" +#: tcl/bin/pickconfig.tcl:799 +msgid "" +"A shortcut to this configuration file has been created on your desktop. You " +"can use it to automatically launch this configuration." msgstr "" -#: tcl/ngcgui.tcl:3046 -msgid "Set defaults" +#: tcl/bin/pickconfig.tcl:805 +msgid "Create Desktop Shortcut" msgstr "" -#: tcl/ngcgui.tcl:3125 -msgid "not writable" +#: tcl/bin/tkbackplot.tcl:110 +msgid "TkLinuxCNC BackPlot" msgstr "" -#: tcl/ngcgui.tcl:3263 tcl/ngcgui.tcl:3443 -msgid "new" -msgstr "" +#: tcl/bin/tkbackplot.tcl:125 +#, fuzzy +msgid "SETUP" +msgstr "ESTOP" -#: tcl/ngcgui.tcl:3288 -msgid "Open a new Subfile" -msgstr "" +#: tcl/bin/tkbackplot.tcl:127 +#, fuzzy +msgid "RESET" +msgstr "ESTOP RESET" -#: tcl/ngcgui.tcl:3434 -msgid "remove" +#: tcl/bin/tkbackplot.tcl:129 +msgid "CANCEL" msgstr "" -#: tcl/ngcgui.tcl:3456 tcl/ngcgui.tcl:3462 -msgid "move" +#: tcl/bin/tkbackplot.tcl:250 +msgid "AXIS" msgstr "" -#: tcl/ngcgui.tcl:3561 src/emc/usr_intf/pncconf/pncconf.py:7022 -#: src/emc/usr_intf/pncconf/pncconf.py:7139 -#: src/emc/usr_intf/pncconf/pncconf.py:7306 -msgid "Custom" +#: tcl/bin/tkbackplot.tcl:251 +msgid "OFFSET" msgstr "" -#: tcl/ngcgui.tcl:3587 -msgid "Problem creating page" +#: tcl/bin/tkbackplot.tcl:252 +msgid "ANGLE" msgstr "" -#: tcl/ngcgui.tcl:3594 -msgid "entrykeybindings not available" +#: tcl/bin/tkbackplot.tcl:253 +msgid "DIRECTION" msgstr "" -#: tcl/ngcgui.tcl:3633 -msgid "Found multiple matches for" +#: tcl/bin/tkbackplot.tcl:270 +msgid "SIZE :" msgstr "" -#: tcl/ngcgui.tcl:3634 -msgid "using path" +#: tcl/mini.tcl:490 +#, tcl-format +msgid "JOG %s +" msgstr "" -#: tcl/ngcgui.tcl:3642 src/emc/usr_intf/axis/scripts/axis.py:2255 -#: src/emc/usr_intf/axis/scripts/axis.py:2268 -#: src/emc/usr_intf/axis/scripts/axis.py:2242 -msgid "Warning" +#: tcl/mini.tcl:491 +#, tcl-format +msgid "JOG %s -" msgstr "" -#: tcl/ngcgui.tcl:3643 -msgid "File absolute path specifier conflicts with searchpath result" +#: tcl/mini.tcl:492 +#, tcl-format +msgid "" +"%s\n" +"\n" +"Z\n" +"E\n" +"R\n" +"O" msgstr "" -#: tcl/ngcgui.tcl:3644 -msgid "Absolute Specifier" +#: tcl/mini.tcl:840 +msgid "" +"TkMini \n" +"\n" +"Tcl/Tk GUI for Enhanced Machine Controller\n" +"\n" +"GPL Copyright 2003 \n" +"Ray Henry \n" +"\n" +" 3D backplotter by Paul Corner \n" +" \n" +"This software comes with ABSOLUTELY NO GUARANTEE! \n" +"For details see the copyright.html file in this directory." msgstr "" -#: tcl/ngcgui.tcl:3645 -msgid "Using Search Result" -msgstr "" +#: tcl/mini.tcl:915 +#, fuzzy +msgid "Program" +msgstr "_Program" -#: tcl/ngcgui.tcl:3650 -msgid "File not in Search Path" +#: tcl/mini.tcl:918 +msgid "Info" msgstr "" -#: tcl/ngcgui.tcl:3652 -msgid "Must be in search path" +#: tcl/mini.tcl:923 +msgid "Backplot" msgstr "" -#: tcl/ngcgui.tcl:3654 -msgid "(File found -- not in search path)" -msgstr "" +#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:5915 +#, fuzzy +msgid "Editor" +msgstr "Sz_erkesztés" -#: tcl/ngcgui.tcl:3656 -msgid "Current directory" -msgstr "" +#: tcl/mini.tcl:927 +#, fuzzy +msgid "Offsets" +msgstr "Eltolás" -#: tcl/ngcgui.tcl:3657 -msgid "Search path" +#: tcl/mini.tcl:929 +msgid "Tools" msgstr "" -#: tcl/ngcgui.tcl:3663 -msgid "Check setting for" -msgstr "" +#: tcl/mini.tcl:951 tcl/mini.tcl:3565 tcl/tklinuxcnc.tcl:732 +#, fuzzy +msgid "Reset" +msgstr "Folytatás" -#: tcl/ngcgui.tcl:3664 +#: tcl/mini.tcl:960 #, fuzzy -msgid "in ini file" -msgstr "AXIS (Nincs fájl)" +msgid "Position Type" +msgstr "Pozíció:" -#: tcl/ngcgui.tcl:3665 -msgid "(Restart required after fixing ini file)" +#: tcl/mini.tcl:962 +msgid "Tool Info" msgstr "" -#: tcl/ngcgui.tcl:3680 +#: tcl/mini.tcl:964 #, fuzzy -msgid "Try to Continue" -msgstr "Folytonos" +msgid "Offset Info" +msgstr "Eltolás" -#: tcl/ngcgui.tcl:3685 -msgid "Ngcgui Configuration File Not Found" +#: tcl/mini.tcl:967 +#, fuzzy +msgid "Show Restart" +msgstr "Mutasd a _határokat" + +#: tcl/mini.tcl:968 +msgid "Hide Restart" msgstr "" -#: tcl/ngcgui.tcl:3765 -msgid "Missing Tcl Package Img" +#: tcl/mini.tcl:970 +msgid "Show Split Right" msgstr "" -#: tcl/ngcgui.tcl:3766 -msgid "Please install Img" +#: tcl/mini.tcl:972 +msgid "Show Mode Full" msgstr "" -#: tcl/ngcgui.tcl:3965 +#: tcl/mini.tcl:974 +msgid "Show Popin Full" +msgstr "" + +#: tcl/mini.tcl:978 #, fuzzy -msgid "ini file" -msgstr "AXIS (Nincs fájl)" +msgid "Actual Position" +msgstr "Mutasd az aktuális pozíciót" -#: tcl/ngcgui.tcl:3973 -msgid "not found" -msgstr "" +#: tcl/mini.tcl:980 +#, fuzzy +msgid "Commanded Position" +msgstr "Mutasd a programozott pozíciót" -#: tcl/ngcgui_ttt.tcl:67 -msgid "found truetype-tracer v4 -OK" -msgstr "" +#: tcl/mini.tcl:983 +#, fuzzy +msgid "Machine Position" +msgstr "Mutasd a gép pozícióját" -#: tcl/ngcgui_ttt.tcl:70 -msgid "Note truetype-tracer v4 is required" +#: tcl/mini.tcl:985 +#, fuzzy +msgid "Relative Position" +msgstr "Mutasd a relatív pozíciót" + +#: tcl/mini.tcl:988 tcl/tklinuxcnc.tcl:747 +msgid "Calibration..." msgstr "" -#: tcl/ngcgui_ttt.tcl:71 -msgid "Note: truetype-tracer v4 is required" +#: tcl/mini.tcl:990 +msgid "HAL Show..." msgstr "" -#: tcl/ngcgui_ttt.tcl:81 -msgid "ngcgui_app.tcl must be loaded before" +#: tcl/mini.tcl:992 +msgid "HAL Config..." msgstr "" -#: tcl/ngcgui_ttt.tcl:89 -msgid "Create a subroutine file from truetype-tracer (V4 reqd)" -msgstr "" +#: tcl/mini.tcl:997 +#, fuzzy +msgid "Program File" +msgstr "_Program" -#: tcl/ngcgui_ttt.tcl:102 tcl/ngcgui_ttt.tcl:115 -msgid "problem with" -msgstr "" +#: tcl/mini.tcl:998 +#, fuzzy, tcl-format +msgid "Program file is %s" +msgstr "Program_szűrő %r sikertelen" -#: tcl/ngcgui_ttt.tcl:106 -msgid "No entry for" +#: tcl/mini.tcl:999 +msgid "Editor File" msgstr "" -#: tcl/ngcgui_ttt.tcl:109 -msgid "wrong version of truetype-tracer" +#: tcl/mini.tcl:1000 +#, tcl-format +msgid "Editor file is %s" msgstr "" -#: tcl/ngcgui_ttt.tcl:125 -msgid "not writable, using" +#: tcl/mini.tcl:1001 +msgid "Parameter File" msgstr "" -#: tcl/ngcgui_ttt.tcl:125 -msgid "and setting expandsub" +#: tcl/mini.tcl:1002 +#, tcl-format +msgid "Parameter file is %s" msgstr "" -#: tcl/ngcgui_ttt.tcl:161 -msgid "Text" +#: tcl/mini.tcl:1003 +msgid "Tool File" msgstr "" -#: tcl/ngcgui_ttt.tcl:171 -msgid "Linescale" +#: tcl/mini.tcl:1004 +#, tcl-format +msgid "Tool file is %s" msgstr "" -#: tcl/ngcgui_ttt.tcl:177 -msgid "none" -msgstr "" +#: tcl/mini.tcl:1006 +#, fuzzy +msgid "Active G Codes" +msgstr "Aktuális G-kódok:" -#: tcl/ngcgui_ttt.tcl:192 -msgid "Subdiv" +#: tcl/mini.tcl:1007 +#, tcl-format +msgid "" +"Active codes include; \n" +"%s" msgstr "" -#: tcl/ngcgui_ttt.tcl:199 -msgid "default" -msgstr "" +#: tcl/mini.tcl:1010 tcl/mini.tcl:2558 tcl/tklinuxcnc.tcl:791 +#, fuzzy +msgid "Help..." +msgstr "_Segítség" -#: tcl/ngcgui_ttt.tcl:239 -msgid "Mode" +#: tcl/mini.tcl:1027 tcl/tklinuxcnc.tcl:890 +msgid "ABORT" msgstr "" -#: tcl/ngcgui_ttt.tcl:247 -msgid "normal" +#: tcl/mini.tcl:1038 tcl/mini.tcl:2048 +msgid "CONTINUE" msgstr "" -#: tcl/ngcgui_ttt.tcl:248 -msgid "date" +#: tcl/mini.tcl:1044 tcl/tklinuxcnc.tcl:828 tcl/tklinuxcnc.tcl:2248 +#: src/emc/usr_intf/touchy/touchy.glade:1264 +msgid "MDI" msgstr "" -#: tcl/ngcgui_ttt.tcl:249 -msgid "fontname" +#: tcl/mini.tcl:1048 tcl/tklinuxcnc.tcl:2239 +msgid "AUTO" msgstr "" -#: tcl/ngcgui_ttt.tcl:262 -msgid "Switches" +#: tcl/mini.tcl:1052 tcl/mini.tcl:1812 tcl/tklinuxcnc.tcl:2141 +#: tcl/tklinuxcnc.tcl:2261 +msgid "MANUAL" msgstr "" -#: tcl/ngcgui_ttt.tcl:270 -msgid "Unicode" +#: tcl/mini.tcl:1106 +msgid "Tool #:" msgstr "" -#: tcl/ngcgui_ttt.tcl:275 -msgid "Allow Rotation" +#: tcl/mini.tcl:1108 +msgid "Length :" msgstr "" -#: tcl/ngcgui_ttt.tcl:295 -msgid "Make ngcgui-compatible subfile and new tab page" -msgstr "" +#: tcl/mini.tcl:1119 +#, fuzzy +msgid "Work Offsets: " +msgstr "Eltolás" -#: tcl/ngcgui_ttt.tcl:353 -msgid "Null text" +#: tcl/mini.tcl:1121 +msgid "start offsets popup here" msgstr "" -#: tcl/ngcgui_ttt.tcl:384 -msgid "Using truetype-tracer default font" +#: tcl/mini.tcl:1165 +msgid "start override popup here" msgstr "" -#: tcl/ngcgui_ttt.tcl:388 +#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1739 #, fuzzy -msgid "no such file" -msgstr "AXIS (Nincs fájl)" +msgid "Feed Override:" +msgstr "Túlhajtás (%):" -#: tcl/ngcgui_ttt.tcl:393 -msgid "file not readable" +#: tcl/mini.tcl:1180 +msgid "-- MESSAGES --" msgstr "" -#: tcl/ngcgui_ttt.tcl:507 -msgid "Creating new tab page" +#: tcl/mini.tcl:1230 +msgid "toggleView's not doin nothin yet" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:148 -#: src/emc/usr_intf/axis/scripts/axis.py:144 -msgid "Emergency stop" -msgstr "Vészleállítás" - -#: src/emc/usr_intf/axis/scripts/axis.py:149 -#: src/emc/usr_intf/axis/scripts/axis.py:145 -msgid "Turn machine on" -msgstr "Kapcsold be a gépet" - -#: src/emc/usr_intf/axis/scripts/axis.py:151 -#: src/emc/usr_intf/axis/scripts/axis.py:147 -msgid "Activate first axis" -msgstr "1. tengely beindítva" - -#: src/emc/usr_intf/axis/scripts/axis.py:152 -#: src/emc/usr_intf/axis/scripts/axis.py:148 -msgid "Activate second axis" -msgstr "2. tengely beindítva" +#: tcl/mini.tcl:1282 +msgid "Can't set zero with a tool offset active so I issued G49 to cancel it." +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:153 -#: src/emc/usr_intf/axis/scripts/axis.py:149 -msgid "Activate third axis" -msgstr "3. tengely beindítva" +#: tcl/mini.tcl:1346 +#, tcl-format +msgid "Can't update the var file while machine is in auto and %s." +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:154 -#: src/emc/usr_intf/axis/scripts/axis.py:150 -msgid "Activate fourth axis" -msgstr "4. tengely beindítva" +#: tcl/mini.tcl:1400 tcl/tklinuxcnc.tcl:1227 +#, fuzzy +msgid "override limits" +msgstr "Határok módosítása" -#: src/emc/usr_intf/axis/scripts/axis.py:155 -#: src/emc/usr_intf/axis/scripts/axis.py:151 +#: tcl/mini.tcl:1405 tcl/tklinuxcnc.tcl:1263 #, fuzzy -msgid "Activate fifth through ninth axis" -msgstr "5. tengely beindítva" +msgid "home" +msgstr "Nullpont" -#: src/emc/usr_intf/axis/scripts/axis.py:156 -#: src/emc/usr_intf/axis/scripts/axis.py:152 -msgid "Set Feed Override from 0% to 100%" +#: tcl/mini.tcl:1426 +msgid "DEFAULT" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:157 -#: src/emc/usr_intf/axis/scripts/axis.py:153 -msgid ", and ." +#: tcl/mini.tcl:1427 +msgid "Speed:" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:157 -#: src/emc/usr_intf/axis/scripts/axis.py:153 -#, fuzzy -msgid "Select jog speed" -msgstr "Lépes növelése" +#: tcl/mini.tcl:1430 +msgid "RAPID" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:158 -#: src/emc/usr_intf/axis/scripts/axis.py:154 -msgid "< and >" +#: tcl/mini.tcl:1447 tcl/tklinuxcnc.tcl:1391 +msgid "Set Jog Speed" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:158 -#: src/emc/usr_intf/axis/scripts/axis.py:154 -msgid "Select angular jog speed" +#: tcl/mini.tcl:1453 tcl/tklinuxcnc.tcl:1404 +msgid "Set jog speed:" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:159 -#: src/emc/usr_intf/axis/scripts/axis.py:155 -msgid "I, Shift-I" +#: tcl/mini.tcl:1511 +msgid "JOG X +" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:159 share/axis/tcl/axis.tcl:2356 -#: src/emc/usr_intf/axis/scripts/axis.py:155 -msgid "Select jog increment" +#: tcl/mini.tcl:1512 +msgid "JOG X -" +msgstr "" + +#: tcl/mini.tcl:1516 +#, fuzzy +msgid "increment" msgstr "Lépes növelése" -#: src/emc/usr_intf/axis/scripts/axis.py:160 -#: src/emc/usr_intf/axis/scripts/axis.py:156 -msgid "Continuous jog" -msgstr "Folytonos lépés" +#: tcl/mini.tcl:1518 tcl/tklinuxcnc.tcl:602 tcl/tklinuxcnc.tcl:1249 +#: tcl/tklinuxcnc.tcl:1253 src/emc/usr_intf/gscreen/gscreen.glade:1574 +#: src/emc/usr_intf/gscreen/gscreen.glade:1586 +#, fuzzy +msgid "continuous" +msgstr "Folytonos" -#: src/emc/usr_intf/axis/scripts/axis.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:479 -#: src/emc/usr_intf/axis/scripts/axis.py:157 -msgid "Home" -msgstr "Nullpont" +#: tcl/mini.tcl:1520 +msgid "" +"A\n" +"L\n" +"L\n" +"\n" +"Z\n" +"E\n" +"R\n" +"O" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:161 -#: src/emc/usr_intf/axis/scripts/axis.py:157 -msgid "Send active axis home" -msgstr "Aktuális tengely kiinduló pozicióba" +#: tcl/mini.tcl:1588 src/emc/usr_intf/touchy/touchy.glade:1422 +#, fuzzy +msgid "Spindle Forward" +msgstr "Fő orsó fék bekapcsolva" -#: src/emc/usr_intf/axis/scripts/axis.py:162 -#: src/emc/usr_intf/axis/scripts/axis.py:158 +#: tcl/mini.tcl:1589 src/emc/usr_intf/touchy/touchy.glade:1433 #, fuzzy -msgid "Ctrl-Home" -msgstr "Nullpont" +msgid "Spindle Reverse" +msgstr "Fő orsó fék bekapcsolva" -#: src/emc/usr_intf/axis/scripts/axis.py:162 -#: src/emc/usr_intf/axis/scripts/axis.py:158 -msgid "Home all axes" -msgstr "" +#: tcl/mini.tcl:1590 tcl/tklinuxcnc.tcl:871 +#, fuzzy +msgid "Spindle off" +msgstr "Fő orsó fék kikapcsolva" -#: src/emc/usr_intf/axis/scripts/axis.py:163 -#: src/emc/usr_intf/axis/scripts/axis.py:159 -msgid "Shift-Home" -msgstr "" +#: tcl/mini.tcl:1592 src/emc/usr_intf/touchy/touchy.glade:1479 +#, fuzzy +msgid "Spindle Slower" +msgstr "Fő orsó lassítása [F11]" -#: src/emc/usr_intf/axis/scripts/axis.py:163 -#: src/emc/usr_intf/axis/scripts/axis.py:159 +#: tcl/mini.tcl:1596 src/emc/usr_intf/touchy/touchy.glade:1464 #, fuzzy -msgid "Zero G54 offset for active axis" -msgstr "A G54 offszet beállítása az aktiv tengelyen" +msgid "Spindle Faster" +msgstr "Fő orsó gyorsítása [F12]" -#: src/emc/usr_intf/axis/scripts/axis.py:164 -#: src/emc/usr_intf/axis/scripts/axis.py:160 -msgid "End" +#: tcl/mini.tcl:1632 tcl/tklinuxcnc.tcl:1620 +msgid "MDI:" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:164 -#: src/emc/usr_intf/axis/scripts/axis.py:160 -msgid "Set G54 offset for active axis" -msgstr "A G54 offszet beállítása az aktiv tengelyen" +#: tcl/mini.tcl:1669 tcl/tklinuxcnc.tcl:1658 +#: src/emc/usr_intf/stepconf/main_page.glade:298 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2625 +msgid "Run" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:165 -#: src/emc/usr_intf/axis/scripts/axis.py:161 +#: tcl/mini.tcl:1671 tcl/tklinuxcnc.tcl:1659 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2638 #, fuzzy -msgid "Jog active axis" -msgstr "3. tengely léptetés" +msgid "Pause" +msgstr "Szü_net" -#: src/emc/usr_intf/axis/scripts/axis.py:168 -#: src/emc/usr_intf/axis/scripts/axis.py:164 -msgid "Left, Right" -msgstr "" +#: tcl/mini.tcl:1673 tcl/tklinuxcnc.tcl:1660 +#, fuzzy +msgid "Resume" +msgstr "Folytatás" -#: src/emc/usr_intf/axis/scripts/axis.py:168 -#: src/emc/usr_intf/axis/scripts/axis.py:164 -msgid "Jog first axis" -msgstr "1. tengely léptetés" +#: tcl/mini.tcl:1675 tcl/tklinuxcnc.tcl:1661 +#, fuzzy +msgid "Step" +msgstr "Lépé_s" -#: src/emc/usr_intf/axis/scripts/axis.py:169 -#: src/emc/usr_intf/axis/scripts/axis.py:165 -msgid "Up, Down" +#: tcl/mini.tcl:1677 tcl/tklinuxcnc.tcl:1662 +msgid "Verify" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:169 -#: src/emc/usr_intf/axis/scripts/axis.py:165 -msgid "Jog second axis" -msgstr "2. tengely léptetés" - -#: src/emc/usr_intf/axis/scripts/axis.py:170 -#: src/emc/usr_intf/axis/scripts/axis.py:166 -msgid "Pg Up, Pg Dn" +#: tcl/mini.tcl:1698 +msgid "RESTART LINE" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:170 -#: src/emc/usr_intf/axis/scripts/axis.py:166 -msgid "Jog third axis" -msgstr "3. tengely léptetés" +#: tcl/mini.tcl:1699 src/emc/usr_intf/stepconf/main_page.glade:531 +#, fuzzy +msgid "Back" +msgstr "Fék" -#: src/emc/usr_intf/axis/scripts/axis.py:171 -#: src/emc/usr_intf/axis/scripts/axis.py:167 -msgid "Shift+above jogs" +#: tcl/mini.tcl:1700 +msgid "Ahead" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:171 -#: src/emc/usr_intf/axis/scripts/axis.py:167 -msgid "Jog at traverse speed" +#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1300 +#: src/emc/usr_intf/gscreen/gscreen.glade:3973 +msgid "Restart" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:172 -#: src/emc/usr_intf/axis/scripts/axis.py:168 -msgid "Jog fourth axis" -msgstr "4. tengely léptetés" - -#: src/emc/usr_intf/axis/scripts/axis.py:175 -#: src/emc/usr_intf/axis/scripts/axis.py:171 -msgid "Toggle between Drag and Rotate mode" +#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 tcl/tklinuxcnc.tcl:465 +#: src/emc/usr_intf/axis/scripts/axis.py:2023 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:754 +msgid "All files" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:176 -#: src/emc/usr_intf/axis/scripts/axis.py:172 -msgid "Left Button" -msgstr "Bal egér gomb" +#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 tcl/tklinuxcnc.tcl:466 +msgid "Text files" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:176 -#: src/emc/usr_intf/axis/scripts/axis.py:172 -#, fuzzy -msgid "Pan, rotate or select line" -msgstr "Nézet mozgatás vagy sor kijelölés" +#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 tcl/tklinuxcnc.tcl:467 +msgid "NC files" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:177 -#: src/emc/usr_intf/axis/scripts/axis.py:173 -msgid "Shift+Left Button" -msgstr "Shift+Bal egér gomb" +#: tcl/mini.tcl:1753 +msgid "" +"The interpreter is running. \n" +" Pressing OK will abort and load the new program" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:177 -#: src/emc/usr_intf/axis/scripts/axis.py:173 +#: tcl/mini.tcl:1886 #, fuzzy -msgid "Rotate or pan" -msgstr "Forgatott felül nézet" +msgid "ESTOPPED" +msgstr "ESTOP" -#: src/emc/usr_intf/axis/scripts/axis.py:178 -#: src/emc/usr_intf/axis/scripts/axis.py:174 -msgid "Right Button" -msgstr "Jobb egérgomb" +#: tcl/mini.tcl:1889 +#, fuzzy +msgid "ESTOP PUSH" +msgstr "ESTOP RESET" -#: src/emc/usr_intf/axis/scripts/axis.py:178 -#: src/emc/usr_intf/axis/scripts/axis.py:180 -#: src/emc/usr_intf/axis/scripts/axis.py:181 -#: src/emc/usr_intf/axis/scripts/axis.py:174 -#: src/emc/usr_intf/axis/scripts/axis.py:176 -#: src/emc/usr_intf/axis/scripts/axis.py:177 -msgid "Zoom view" -msgstr "Nagyitás" +#: tcl/mini.tcl:1892 tcl/tklinuxcnc.tcl:2233 +msgid "ESTOP RESET" +msgstr "ESTOP RESET" -#: src/emc/usr_intf/axis/scripts/axis.py:179 -#: src/emc/usr_intf/axis/scripts/axis.py:175 -msgid "Wheel Button" -msgstr "Egér görgő gomb" +#: tcl/mini.tcl:1897 tcl/tklinuxcnc.tcl:2298 +msgid "SPINDLE FORWARD" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:179 -#: src/emc/usr_intf/axis/scripts/axis.py:175 -msgid "Rotate view" -msgstr "Forgatott nézet" +#: tcl/mini.tcl:1899 tcl/tklinuxcnc.tcl:2300 +msgid "SPINDLE REVERSE" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:180 -#: src/emc/usr_intf/axis/scripts/axis.py:176 -msgid "Rotate Wheel" -msgstr "Egér görgető kerék" +#: tcl/mini.tcl:1901 tcl/tklinuxcnc.tcl:2302 +msgid "SPINDLE OFF" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:181 -#: src/emc/usr_intf/axis/scripts/axis.py:177 -#, fuzzy -msgid "Control+Left Button" -msgstr "Bal egér gomb" +#: tcl/mini.tcl:1903 tcl/tklinuxcnc.tcl:2304 +msgid "SPINDLE INCREASE" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:184 -#: src/emc/usr_intf/axis/scripts/axis.py:180 -msgid "Manual control" -msgstr "Kézi vezérlés" +#: tcl/mini.tcl:1905 tcl/tklinuxcnc.tcl:2306 +msgid "SPINDLE DECREASE" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:185 -#: src/emc/usr_intf/axis/scripts/axis.py:181 -msgid "Code entry (MDI)" -msgstr "Kód mező (MDI)" +#: tcl/mini.tcl:1907 tcl/tklinuxcnc.tcl:2308 +msgid "SPINDLE ?" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:186 -#: src/emc/usr_intf/axis/scripts/axis.py:182 -msgid "Control-M" +#: tcl/mini.tcl:1911 tcl/tklinuxcnc.tcl:2312 +msgid "BRAKE ON" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:186 -#: src/emc/usr_intf/axis/scripts/axis.py:182 -msgid "Clear MDI history" +#: tcl/mini.tcl:1913 tcl/tklinuxcnc.tcl:2314 +msgid "BRAKE OFF" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:187 -#: src/emc/usr_intf/axis/scripts/axis.py:183 -msgid "Control-H" +#: tcl/mini.tcl:1915 tcl/tklinuxcnc.tcl:2316 +msgid "BRAKE ?" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:187 -#: src/emc/usr_intf/axis/scripts/axis.py:183 -msgid "Copy selected MDI history elements" +#: tcl/mini.tcl:1919 tcl/tklinuxcnc.tcl:2274 +msgid "MIST ON" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:188 -#: src/emc/usr_intf/axis/scripts/axis.py:184 -msgid "to clipboard" +#: tcl/mini.tcl:1921 tcl/tklinuxcnc.tcl:2276 +msgid "MIST OFF" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:189 -#: src/emc/usr_intf/axis/scripts/axis.py:185 -msgid "Control-Shift-H" +#: tcl/mini.tcl:1923 tcl/tklinuxcnc.tcl:2278 +msgid "MIST ?" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:189 -#: src/emc/usr_intf/axis/scripts/axis.py:185 -msgid "Paste clipboard to MDI history" +#: tcl/mini.tcl:1927 tcl/tklinuxcnc.tcl:2282 +msgid "FLOOD ON" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:190 share/axis/tcl/axis.tcl:1113 -#: src/emc/usr_intf/touchy/touchy.glade:508 -#: src/emc/usr_intf/axis/scripts/axis.py:186 -msgid "Override Limits" -msgstr "Határok módosítása" +#: tcl/mini.tcl:1929 tcl/tklinuxcnc.tcl:2284 +msgid "FLOOD OFF" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:192 -#: src/emc/usr_intf/axis/scripts/axis.py:188 -msgid "Open program" -msgstr "Program betöltés" +#: tcl/mini.tcl:1931 tcl/tklinuxcnc.tcl:2286 +msgid "FLOOD ?" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:193 -#: src/emc/usr_intf/axis/scripts/axis.py:189 -msgid "Control-R" +#: tcl/mini.tcl:2052 +msgid "FEEDHOLD" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:193 -#: src/emc/usr_intf/axis/scripts/axis.py:189 -#, fuzzy -msgid "Reload program" -msgstr "Program indítás" +#: tcl/mini.tcl:2124 +msgid "" +"TOOL SETUP \n" +" Click or tab to edit. Press enter to return to keyboard machine control." +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:194 -#: src/emc/usr_intf/axis/scripts/axis.py:190 -msgid "Control-S" +#: tcl/mini.tcl:2130 +msgid " TOOL NUMBER " msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:194 -#: src/emc/usr_intf/axis/scripts/axis.py:190 -msgid "Save g-code as" +#: tcl/mini.tcl:2131 +msgid " LENGTH " msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:195 -#: src/emc/usr_intf/axis/scripts/axis.py:191 -msgid "Run program" -msgstr "Program indítás" +#: tcl/mini.tcl:2132 +msgid " DIAMETER " +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:196 -#: src/emc/usr_intf/axis/scripts/axis.py:192 -msgid "Step program" -msgstr "Program léptetés" +#: tcl/mini.tcl:2133 +msgid " COMMENT " +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:197 -#: src/emc/usr_intf/axis/scripts/axis.py:193 -msgid "Pause program" -msgstr "Program szünet" +#: tcl/mini.tcl:2188 +msgid "Add Extra Tool" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:198 -#: src/emc/usr_intf/axis/scripts/axis.py:194 -msgid "Resume program" -msgstr "Program folytatása" +#: tcl/mini.tcl:2189 +msgid "Remove Last Tool" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:199 -#: src/emc/usr_intf/axis/scripts/axis.py:195 -#, fuzzy -msgid "Stop running program, or" -msgstr "Program megszakítása" +#: tcl/mini.tcl:2217 tcl/mini.tcl:2253 +#, tcl-format +msgid "Can't update the tool file while machine is in auto and %s." +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:200 -#: src/emc/usr_intf/axis/scripts/axis.py:196 -msgid "stop loading program preview" +#: tcl/mini.tcl:2229 +msgid "This is not a good number." msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:202 -#: src/emc/usr_intf/axis/scripts/axis.py:198 -msgid "Toggle mist" -msgstr "Elszívó Ki/Be" +#: tcl/mini.tcl:2293 +msgid "" +"COORDINATE SYSTEM SETUP \n" +"\n" +" Click value to edit with keyboard. Press enter to return to keyboard " +"control of machine. \n" +" " +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:203 -#: src/emc/usr_intf/axis/scripts/axis.py:199 -msgid "Toggle flood" -msgstr "Hűtés Ki/Be" +#: tcl/mini.tcl:2320 tcl/scripts/Set_Coordinates.tcl:80 +#, fuzzy +msgid "Axis " +msgstr "Tengely:" -#: src/emc/usr_intf/axis/scripts/axis.py:204 -#: src/emc/usr_intf/axis/scripts/axis.py:200 -msgid "Spindle brake off" -msgstr "Fő orsó fék kikapcsolva" +#: tcl/mini.tcl:2321 +msgid "Value " +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:205 -#: src/emc/usr_intf/axis/scripts/axis.py:201 -msgid "Shift-B" +#: tcl/mini.tcl:2326 tcl/scripts/Set_Coordinates.tcl:91 +msgid "Teach" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:205 -#: src/emc/usr_intf/axis/scripts/axis.py:201 -msgid "Spindle brake on" -msgstr "Fő orsó fék bekapcsolva" +#: tcl/mini.tcl:2334 +msgid "Write And Load File " +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:206 -#: src/emc/usr_intf/axis/scripts/axis.py:202 -msgid "Turn spindle clockwise" -msgstr "Fő orsó jobbra fordul" +#: tcl/mini.tcl:2336 +msgid "Offset By Radius" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:207 -#: src/emc/usr_intf/axis/scripts/axis.py:203 -msgid "Turn spindle counterclockwise" -msgstr "Fő orsó balra fordul" +#: tcl/mini.tcl:2337 +msgid "Offset By Length" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:208 -#: src/emc/usr_intf/axis/scripts/axis.py:204 -msgid "Turn spindle more slowly" -msgstr "Fő orsó lassítás" +#: tcl/mini.tcl:2342 +msgid "Subtract" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:209 -#: src/emc/usr_intf/axis/scripts/axis.py:205 -msgid "Turn spindle more quickly" -msgstr "Fő orsó gyorsítás" +#: tcl/mini.tcl:2344 src/emc/usr_intf/gmoccapy/gmoccapy.glade:6712 +msgid "Add" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:211 -#: src/emc/usr_intf/axis/scripts/axis.py:207 -msgid "Control-K" -msgstr "" - -#: src/emc/usr_intf/axis/scripts/axis.py:211 -#: src/emc/usr_intf/axis/scripts/axis.py:207 -msgid "Clear live plot" -msgstr "Grafikus szimuláció törlése" - -#: src/emc/usr_intf/axis/scripts/axis.py:212 -#: src/emc/usr_intf/axis/scripts/axis.py:208 -msgid "Cycle among preset views" -msgstr "Ciklus előre beállított nézetek között" - -#: src/emc/usr_intf/axis/scripts/axis.py:213 -#: src/emc/usr_intf/axis/scripts/axis.py:209 -#, fuzzy -msgid "Cycle among preview, DRO, and user tabs" -msgstr "Ciklus előre beállított nézetek között" - -#: src/emc/usr_intf/axis/scripts/axis.py:215 -#: src/emc/usr_intf/axis/scripts/axis.py:211 -msgid "Ctrl-Space" +#: tcl/mini.tcl:2366 +msgid "Zero All G54" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:215 -#: src/emc/usr_intf/axis/scripts/axis.py:211 -msgid "Clear notifications" +#: tcl/mini.tcl:2367 +msgid "Zero All G55" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:836 -#: src/emc/usr_intf/axis/scripts/axis.py:828 -#, python-format -msgid "Unknown tool %d" -msgstr "Szerszám %d ismeretlen" - -#: src/emc/usr_intf/axis/scripts/axis.py:838 -#: src/emc/usr_intf/axis/scripts/axis.py:830 -msgid "No tool" -msgstr "Nincs szerszám" - -#: src/emc/usr_intf/axis/scripts/axis.py:840 -#: src/emc/usr_intf/axis/scripts/axis.py:832 -#, fuzzy, python-format -msgid "Tool %(tool)d, offset %(zo)g, diameter %(dia)g" -msgstr "Szerszám %d, eltolás %g, atmerő %g" - -#: src/emc/usr_intf/axis/scripts/axis.py:842 -#: src/emc/usr_intf/axis/scripts/axis.py:834 -#, python-format -msgid "Tool %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" +#: tcl/mini.tcl:2368 +msgid "Zero All G56" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1013 -#: src/emc/usr_intf/axis/scripts/axis.py:1005 -msgid "Filtering..." +#: tcl/mini.tcl:2369 +msgid "Zero All G57" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1073 -#: src/emc/usr_intf/axis/scripts/axis.py:1065 -#, fuzzy -msgid "Filter failed" -msgstr "Program_szűrő %r sikertelen" - -#: src/emc/usr_intf/axis/scripts/axis.py:1074 -#: src/emc/usr_intf/axis/scripts/axis.py:1066 -#, python-format -msgid "" -"The program %(program)r exited with code %(code)d. Any error messages it " -"produced are shown below:" +#: tcl/mini.tcl:2370 +msgid "Zero All G58" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1139 -#: src/emc/usr_intf/axis/scripts/axis.py:1127 -#, python-format -msgid "G-Code error in %s" -msgstr "G-kód hiba %s -ben" - -#: src/emc/usr_intf/axis/scripts/axis.py:1140 -#: src/emc/usr_intf/axis/scripts/axis.py:1128 -#, fuzzy, python-format -msgid "" -"Near line %(seq)d of %(f)s:\n" -"%(error_str)s" +#: tcl/mini.tcl:2371 +msgid "Zero All G59" msgstr "" -"Közel a %d sorhoz, %s -ból:\n" -"%s" -#: src/emc/usr_intf/axis/scripts/axis.py:1292 -#: src/emc/usr_intf/axis/scripts/axis.py:2725 share/axis/tcl/axis.tcl:1092 -#: share/axis/tcl/axis.tcl:1094 share/axis/tcl/axis.tcl:2144 -#: src/emc/usr_intf/axis/scripts/axis.py:1279 -#: src/emc/usr_intf/axis/scripts/axis.py:2712 -msgid "Continuous" -msgstr "Folytonos" - -#: src/emc/usr_intf/axis/scripts/axis.py:1403 -#: src/emc/usr_intf/axis/scripts/axis.py:1390 -msgid "Ok" +#: tcl/mini.tcl:2372 +msgid "Zero All G59.1" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1546 -#: src/emc/usr_intf/axis/scripts/axis.py:1533 -msgid "T Tool Table" +#: tcl/mini.tcl:2373 +msgid "Zero All G59.2" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1557 -#: src/emc/usr_intf/axis/scripts/axis.py:1730 -#: src/emc/usr_intf/stepconf/stepconf.py:1691 -#: src/emc/usr_intf/stepconf/stepconf.py:2235 -#: src/emc/usr_intf/axis/scripts/axis.py:1544 -#: src/emc/usr_intf/axis/scripts/axis.py:1717 -msgid "in" +#: tcl/mini.tcl:2374 +msgid "Zero All G59.3" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1560 -#: src/emc/usr_intf/axis/scripts/axis.py:1547 -msgid " radius" +#: tcl/mini.tcl:2375 +msgid "Zero All ????" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1562 -#: src/emc/usr_intf/axis/scripts/axis.py:1549 -msgid " diameter" +#: tcl/mini.tcl:2493 +msgid "Modified..." msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1563 -#: src/emc/usr_intf/axis/scripts/axis.py:1550 -msgid "°" +#: tcl/mini.tcl:2538 +msgid "Save and Load" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1572 -#: src/emc/usr_intf/axis/scripts/axis.py:1559 -msgid "Coordinate System:" +#: tcl/mini.tcl:2540 src/emc/usr_intf/gscreen/gscreen.glade:3515 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2363 +msgid "Undo" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1588 -#: src/emc/usr_intf/axis/scripts/axis.py:1575 -msgid "fixture" +#: tcl/mini.tcl:2541 src/emc/usr_intf/gscreen/gscreen.glade:3526 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2411 +msgid "Redo" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1589 -#: src/emc/usr_intf/axis/scripts/axis.py:1576 -msgid "workpiece" +#: tcl/mini.tcl:2546 tcl/tooledit.tcl:488 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6695 +msgid "Delete" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1605 -#: src/emc/usr_intf/axis/scripts/axis.py:1592 -msgid "Name:" +#: tcl/mini.tcl:2551 +msgid "Replace..." msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1605 -#: src/emc/usr_intf/axis/scripts/axis.py:1592 -#, fuzzy -msgid "Size:" -msgstr "Fő orsó:" - -#: src/emc/usr_intf/axis/scripts/axis.py:1606 -#: src/emc/usr_intf/axis/scripts/axis.py:1593 -msgid "Tool order:" +#: tcl/mini.tcl:2664 +msgid "Next Number: " msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1606 -#: src/emc/usr_intf/axis/scripts/axis.py:1593 -msgid "Rapid distance:" +#: tcl/mini.tcl:2765 +msgid "Basic Help" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1607 -#: src/emc/usr_intf/axis/scripts/axis.py:1594 -msgid "Feed distance:" +#: tcl/mini.tcl:2765 +msgid "" +"This is a simple ASCII editor like many others.\n" +"\n" +"Ctrl+O Open\n" +"Ctrl+S Save\n" +"Ctrl+Z Undo\n" +"Ctrl+Y Redo\n" +"Ctrl+X Cut\n" +"Ctrl+C Copy\n" +"Ctrl+V Paste\n" +"Del Delete\n" +"Ctrl+A Select All\n" +"\n" +"Ctrl+F Find\n" +"Ctrl+R Replace " msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1607 -#: src/emc/usr_intf/axis/scripts/axis.py:1594 -msgid "Total distance:" +#: tcl/mini.tcl:2785 +msgid "" +"tknotepad by Joseph Acosta. \n" +"\n" +" Modified for EMC by: Paul Corner " msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1608 -#: src/emc/usr_intf/axis/scripts/axis.py:1595 -msgid "Run time:" +#: tcl/mini.tcl:2793 +msgid "" +"The contents of this file may have changed, do you wish to to save your " +"changes?" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1608 -#: src/emc/usr_intf/axis/scripts/axis.py:1595 -msgid "X bounds:" +#: tcl/mini.tcl:2794 +msgid "New Confirm?" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1609 -#: src/emc/usr_intf/axis/scripts/axis.py:1596 -msgid "Y bounds:" +#: tcl/mini.tcl:2928 +msgid "Print Setup" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1609 -#: src/emc/usr_intf/axis/scripts/axis.py:1596 -msgid "Z bounds:" -msgstr "" +#: tcl/mini.tcl:2932 +#, fuzzy +msgid "Print Command: " +msgstr "MDI parancs:" -#: src/emc/usr_intf/axis/scripts/axis.py:1610 -#: src/emc/usr_intf/axis/scripts/axis.py:1597 -msgid "A bounds:" +#: tcl/mini.tcl:3095 +msgid "Find what:" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1610 -#: src/emc/usr_intf/axis/scripts/axis.py:1597 -msgid "B bounds:" +#: tcl/mini.tcl:3101 +msgid "Replace with:" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1611 -#: src/emc/usr_intf/axis/scripts/axis.py:1598 -msgid "C bounds:" +#: tcl/mini.tcl:3109 +msgid "Find Next" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1635 -#: src/emc/usr_intf/axis/scripts/axis.py:1622 -#, python-format -msgid "Program exceeds machine minimum on axis %s" -msgstr "A program meghaladja a gép minimumat: %s tengelyen" - -#: src/emc/usr_intf/axis/scripts/axis.py:1638 -#: src/emc/usr_intf/axis/scripts/axis.py:1625 -#, python-format -msgid "Program exceeds machine maximum on axis %s" -msgstr "A program meghaladja a gép maximumat: %s tengelyen" - -#: src/emc/usr_intf/axis/scripts/axis.py:1643 -#: src/emc/usr_intf/axis/scripts/axis.py:1630 -msgid "Program exceeds machine limits" -msgstr "A program túllép a gép korlátain" +#: tcl/mini.tcl:3112 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2494 +#, fuzzy +msgid "Replace" +msgstr "Relatív" -#: src/emc/usr_intf/axis/scripts/axis.py:1646 -#: src/emc/usr_intf/axis/scripts/axis.py:1633 -msgid "Run Anyway" -msgstr "Program folytatás" +#: tcl/mini.tcl:3120 src/emc/usr_intf/gscreen/gscreen.py:2750 +#: src/emc/usr_intf/gmoccapy/dialogs.py:171 +msgid "Up" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1708 -#: src/emc/usr_intf/axis/scripts/axis.py:1695 -msgid "No file loaded" +#: tcl/mini.tcl:3121 src/emc/usr_intf/gscreen/gscreen.py:2754 +#: src/emc/usr_intf/gmoccapy/dialogs.py:175 +msgid "Down" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1716 -#: src/emc/usr_intf/axis/scripts/axis.py:1703 -#, python-format -msgid "generated from %s" +#: tcl/mini.tcl:3124 +msgid "Match case" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1722 -#: src/emc/usr_intf/axis/scripts/axis.py:1709 -#, python-format -msgid "" -"%(size)s bytes\n" -"%(lines)s gcode lines" +#: tcl/mini.tcl:3569 +msgid "rot-x" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1748 -#: src/emc/usr_intf/axis/scripts/axis.py:1735 -#, python-format -msgid "%.1f minutes" +#: tcl/mini.tcl:3579 +msgid "rot-y" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1750 -#: src/emc/usr_intf/axis/scripts/axis.py:1737 -#, fuzzy, python-format -msgid "%d seconds" -msgstr "2. tengely léptetés" +#: tcl/mini.tcl:3589 +msgid "rot-z" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1758 -#: src/emc/usr_intf/axis/scripts/axis.py:1745 -#, python-format -msgid "%(a)f to %(b)f = %(diff)f %(units)s" +#: tcl/mini.tcl:3599 +msgid "zoom" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1759 -#: src/emc/usr_intf/axis/scripts/axis.py:1746 +#: tcl/mini.tcl:3655 #, fuzzy -msgid "G-Code Properties" -msgstr "G-kód hiba %s -ben" +msgid "TEST" +msgstr "ESTOP" -#: src/emc/usr_intf/axis/scripts/axis.py:1883 -#: src/emc/usr_intf/axis/scripts/axis.py:1870 -msgid "All machinable files" +#: tcl/mini.tcl:3699 +msgid "Hide Setup" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1884 -#: src/emc/usr_intf/axis/scripts/axis.py:2464 -#: src/emc/usr_intf/axis/scripts/axis.py:1871 -#: src/emc/usr_intf/axis/scripts/axis.py:2451 -msgid "rs274ngc files" -msgstr "" +#: tcl/mini.tcl:3703 +#, fuzzy +msgid "Show Setup" +msgstr "EMC állapot mutatása" -#: src/emc/usr_intf/axis/scripts/axis.py:1899 -#: src/emc/usr_intf/axis/scripts/axis.py:1886 -msgid "axis cannot accept remote command while running" +#: tcl/show_errors.tcl:41 +msgid "LinuxCNC Errors" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2255 -#: src/emc/usr_intf/axis/scripts/axis.py:2242 -msgid "Axis is already homed, are you sure you want to re-home?" +#: tcl/show_errors.tcl:44 +msgid "" +"LinuxCNC terminated with an error. When reporting problems, please include " +"all the information below in your message." msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2268 -#: src/emc/usr_intf/axis/scripts/axis.py:2255 -msgid "This axis is already homed, are you sure you want to re-home?" +#: tcl/show_errors.tcl:74 tcl/scripts/Set_Coordinates.tcl:103 +msgid "Close" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2308 share/axis/tcl/axis.tcl:1108 -#: src/emc/usr_intf/axis/scripts/axis.py:2295 -msgid "Touch Off" +#: tcl/tklinuxcnc.tcl:154 tcl/tklinuxcnc.tcl:181 +msgid "Set Run Mark" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2309 -#: src/emc/usr_intf/axis/scripts/axis.py:2296 -#, python-format -msgid "Enter %s coordinate relative to %%s:" +#: tcl/tklinuxcnc.tcl:156 +#, tcl-format +msgid "Set run mark at line %s?" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2476 -#: src/emc/usr_intf/axis/scripts/axis.py:2463 -msgid "Error saving file" +#: tcl/tklinuxcnc.tcl:176 tcl/tklinuxcnc.tcl:204 +msgid "untitled" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2859 -#: src/emc/usr_intf/touchy/touchy.glade:577 -#: src/emc/usr_intf/axis/scripts/axis.py:2845 -#, fuzzy -msgid "Home All" -msgstr "Nullpont" - -#: src/emc/usr_intf/axis/scripts/axis.py:2861 -#: src/emc/usr_intf/axis/scripts/axis.py:2847 -msgid "Home all axes [Ctrl-Home]" +#: tcl/tklinuxcnc.tcl:212 +msgid "Load Parameter File" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2864 -#: src/emc/usr_intf/axis/scripts/axis.py:2850 -msgid "Home All Axes" +#: tcl/tklinuxcnc.tcl:261 +msgid "LinuxCNC Diagnostics" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2871 -#: src/emc/usr_intf/axis/scripts/axis.py:2855 -msgid "Unhome All Axes" +#: tcl/tklinuxcnc.tcl:263 +msgid "Task" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2895 -#: src/emc/usr_intf/axis/scripts/axis.py:2879 -#, python-format -msgid "Home Axis _%s" +#: tcl/tklinuxcnc.tcl:265 tcl/tklinuxcnc.tcl:288 tcl/tklinuxcnc.tcl:311 +msgid "Heartbeat:" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2897 -#: src/emc/usr_intf/axis/scripts/axis.py:2881 -#, python-format -msgid "Unhome Axis _%s" -msgstr "" +#: tcl/tklinuxcnc.tcl:268 tcl/tklinuxcnc.tcl:291 tcl/tklinuxcnc.tcl:314 +#, fuzzy +msgid "Command:" +msgstr "Irányított" -#: src/emc/usr_intf/axis/scripts/axis.py:3040 -#: src/emc/usr_intf/axis/scripts/axis.py:3024 -msgid "Run from here" -msgstr "" +#: tcl/tklinuxcnc.tcl:271 tcl/tklinuxcnc.tcl:294 tcl/tklinuxcnc.tcl:317 +#, fuzzy +msgid "Command #:" +msgstr "Irányított" -#: src/emc/usr_intf/axis/scripts/axis.py:3335 -#: src/emc/usr_intf/axis/scripts/axis.py:3319 -msgid "Error in ~/.axisrc" +#: tcl/tklinuxcnc.tcl:274 tcl/tklinuxcnc.tcl:297 tcl/tklinuxcnc.tcl:320 +msgid "Status:" msgstr "" -#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:102 -msgid "LinuxCNC Status" +#: tcl/tklinuxcnc.tcl:286 +msgid "Io" msgstr "" -#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:118 +#: tcl/tklinuxcnc.tcl:309 #, fuzzy -msgid "Copy All" -msgstr "Máso_lás" +msgid "Motion" +msgstr "Pozíció:" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:29 -#, python-format -msgid "Insert tool %d and click continue when ready" +#: tcl/tklinuxcnc.tcl:350 +msgid "About TkLinuxCNC" msgstr "" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:31 -msgid "Remove the tool and click continue when ready" +#: tcl/tklinuxcnc.tcl:351 +msgid "" +"TkLinuxcnc\n" +"\n" +"Tcl/Tk GUI for LinuxCNC\n" +"\n" +"GPL Version 2 (2012)" msgstr "" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 -#: src/emc/usr_intf/touchy/mdi.py:49 -msgid "Tool change" +#: tcl/tklinuxcnc.tcl:399 +msgid "Set Tool Offset" msgstr "" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 +#: tcl/tklinuxcnc.tcl:404 tcl/tklinuxcnc.tcl:905 #, fuzzy -msgid "Continue" -msgstr "Folytonos" +msgid "Tool:" +msgstr "Hűtés:" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:55 -msgid "AXIS Manual Toolchanger" -msgstr "" +#: tcl/tklinuxcnc.tcl:722 +#, fuzzy +msgid "Edit..." +msgstr "Sz_erkesztés" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:59 -msgid "" -"This window is part of the AXIS manual toolchanger. It is safe to close or " -"iconify this window, or it will close automatically after a few seconds." +#: tcl/tklinuxcnc.tcl:727 +msgid "Tool Table Editor..." msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:507 -#, python-format -msgid "%s: Image to gcode" +#: tcl/tklinuxcnc.tcl:730 src/emc/usr_intf/touchy/touchy.glade:1383 +msgid "Reload Tool Table" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:508 -msgid "Image to gcode" +#: tcl/tklinuxcnc.tcl:740 +msgid "Offsets and Variables..." msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:518 -#, python-format -msgid "" -"Image size: %(w)d x %(h)d pixels\n" -"Minimum pixel value: %(min)d\n" -"Maximum pixel value: %(max)d" +#: tcl/tklinuxcnc.tcl:741 +msgid "Diagnostics..." msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 -msgid "G20 (in)" +#: tcl/tklinuxcnc.tcl:742 +msgid "Backplot..." msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 -msgid "G21 (mm)" +#: tcl/tklinuxcnc.tcl:748 +msgid "Testing..." msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 -#: src/emc/usr_intf/touchy/emc_interface.py:417 -msgid "None" +#: tcl/tklinuxcnc.tcl:749 +msgid "Debug..." msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 -msgid "White" +#: tcl/tklinuxcnc.tcl:750 +msgid "Font..." msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 -#, fuzzy -msgid "Black" -msgstr "Fék" - -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Rows" +#: tcl/tklinuxcnc.tcl:754 src/emc/usr_intf/axis/scripts/image-to-gcode.py:665 +msgid "Units" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Columns" +#: tcl/tklinuxcnc.tcl:755 +msgid "auto" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Rows then Columns" +#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8873 +msgid "inches" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Columns then Rows" +#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1609 +#: src/emc/usr_intf/axis/scripts/axis.py:1855 +#: src/emc/usr_intf/axis/scripts/axis.py:2386 +#: src/emc/usr_intf/touchy/touchy.glade:3301 +#: src/emc/usr_intf/stepconf/stepconf.py:1314 +#: src/emc/usr_intf/stepconf/pages.py:625 +#: src/emc/usr_intf/stepconf/main_page.glade:251 +#: src/emc/usr_intf/pncconf/pncconf.py:8869 +#: src/emc/usr_intf/pncconf/pncconf.glade:2195 +#: src/emc/usr_intf/pncconf/pncconf.glade:2362 +#: src/emc/usr_intf/pncconf/pncconf.glade:64552 +#: src/emc/usr_intf/pncconf/pncconf.glade:64621 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -#, fuzzy -msgid "Positive" -msgstr "Pozíció:" - -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -#, fuzzy -msgid "Negative" -msgstr "Relatív" - -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Alternating" +#: tcl/tklinuxcnc.tcl:758 +msgid "cm" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Up Milling" +#: tcl/tklinuxcnc.tcl:762 +msgid "Utilities" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Down Milling" +#: tcl/tklinuxcnc.tcl:763 +msgid "Hal Scope" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "Ball End" +#: tcl/tklinuxcnc.tcl:785 +msgid "HAL Show" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "Flat End" +#: tcl/tklinuxcnc.tcl:786 +msgid "HAL Config" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "30 Degree" +#: tcl/tklinuxcnc.tcl:792 +msgid "Balloon help" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "45 Degree" +#: tcl/tklinuxcnc.tcl:815 +msgid "Estop on" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "60 Degree" +#: tcl/tklinuxcnc.tcl:816 +msgid "Estop off" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 -msgid "Secondary" -msgstr "" +#: tcl/tklinuxcnc.tcl:818 +#, fuzzy +msgid "Machine on" +msgstr "Gép" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 -msgid "Full" -msgstr "" +#: tcl/tklinuxcnc.tcl:819 src/emc/usr_intf/gscreen/gscreen.glade:2452 +#, fuzzy +msgid "Machine off" +msgstr "Gép" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:654 -msgid "Invert Image" -msgstr "" +#: tcl/tklinuxcnc.tcl:826 src/emc/usr_intf/touchy/touchy.glade:1561 +#, fuzzy +msgid "Manual" +msgstr "Kézi vezérlés" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:655 -msgid "Normalize Image" -msgstr "" +#: tcl/tklinuxcnc.tcl:835 +#, fuzzy +msgid "Mist on" +msgstr "Elszívás" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:656 -msgid "Extend Image Border" -msgstr "" +#: tcl/tklinuxcnc.tcl:836 +#, fuzzy +msgid "Mist off" +msgstr "Elszívás" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:657 -msgid "Pixel Size (Units)" -msgstr "" +#: tcl/tklinuxcnc.tcl:843 +#, fuzzy +msgid "Flood on" +msgstr "Folyadék" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:658 -msgid "Depth (units)" -msgstr "" +#: tcl/tklinuxcnc.tcl:844 +#, fuzzy +msgid "Flood off" +msgstr "Folyadék" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:659 -msgid "Tolerance (units)" +#: tcl/tklinuxcnc.tcl:851 +msgid "Lube on" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:660 -msgid "Stepover (pixels)" +#: tcl/tklinuxcnc.tcl:852 +msgid "Lube off" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:661 -msgid "Tool Diameter (units)" -msgstr "" +#: tcl/tklinuxcnc.tcl:869 +#, fuzzy +msgid "Spindle forward" +msgstr "Fő orsó fék bekapcsolva" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:662 -msgid "Tool Type" -msgstr "" +#: tcl/tklinuxcnc.tcl:870 +#, fuzzy +msgid "Spindle reverse" +msgstr "Fő orsó fék bekapcsolva" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:663 -msgid "Feed Rate (units per minute)" -msgstr "" +#: tcl/tklinuxcnc.tcl:885 +#, fuzzy +msgid "Brake on" +msgstr "Fék" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:664 -msgid "Plunge Feed Rate (units per minute)" -msgstr "" +#: tcl/tklinuxcnc.tcl:886 +#, fuzzy +msgid "Brake off" +msgstr "Fék" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:666 -msgid "Safety Height (units)" -msgstr "" +#: tcl/tklinuxcnc.tcl:907 +#, fuzzy +msgid "Offset:" +msgstr "Eltolás" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:667 -msgid "Scan Pattern" -msgstr "" +#: tcl/tklinuxcnc.tcl:913 +#, fuzzy +msgid "Work Offsets:" +msgstr "Eltolás" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:668 -msgid "Scan Direction" -msgstr "" +#: tcl/tklinuxcnc.tcl:1233 +#, fuzzy +msgid "relative" +msgstr "Relatív" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:669 -msgid "Lace Bounding" -msgstr "" +#: tcl/tklinuxcnc.tcl:1234 +#, fuzzy +msgid "machine" +msgstr "Gép" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:670 -msgid "Contact Angle (degrees)" -msgstr "" +#: tcl/tklinuxcnc.tcl:1236 +#, fuzzy +msgid "actual" +msgstr "Aktuális" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:671 -msgid "Spindle Speed (RPM)" -msgstr "" +#: tcl/tklinuxcnc.tcl:1237 +#, fuzzy +msgid "commanded" +msgstr "Irányított" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:672 -msgid "Roughing offset (units, 0=no roughing)" +#: tcl/tklinuxcnc.tcl:1239 +msgid "joint" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:673 -msgid "Roughing depth per pass (units)" +#: tcl/tklinuxcnc.tcl:1240 +msgid "world" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:740 -msgid "image-to-gcode: User pressed cancel" -msgstr "" +#: tcl/tklinuxcnc.tcl:1333 +#, fuzzy +msgid "Axis Offset" +msgstr "Eltolás" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:753 -msgid "Depth images" +#: tcl/tklinuxcnc.tcl:1335 +msgid "Set axis value:" msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:22 -msgid "LinuxCNC Debug Level" -msgstr "" +#: tcl/tklinuxcnc.tcl:1429 +#, fuzzy +msgid "Set Feed Override" +msgstr "Túlhajtás (%):" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:23 -msgid "debuglevel" -msgstr "" +#: tcl/tklinuxcnc.tcl:1435 +#, fuzzy +msgid "Set feed override:" +msgstr "Túlhajtás (%):" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:36 -msgid "Configuration *" +#: tcl/tklinuxcnc.tcl:1460 +msgid "Set Spindle Override" msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:37 -msgid "Version Numbers *" +#: tcl/tklinuxcnc.tcl:1466 +msgid "Set spindle speed override:" msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:38 -msgid "NML *" +#: tcl/tklinuxcnc.tcl:1521 +msgid "Linear Jog Speed" msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:39 -msgid "RCS *" +#: tcl/tklinuxcnc.tcl:1552 +msgid "Angular Jog Speed (deg)/min:" msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:40 -msgid "Task Issue" -msgstr "" +#: tcl/tklinuxcnc.tcl:1596 +#, fuzzy +msgid "Spindle speed Override:" +msgstr "Túlhajtás (%):" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:41 -msgid "Motion Time" -msgstr "" +#: tcl/tklinuxcnc.tcl:1642 +#, fuzzy +msgid "Program: " +msgstr "_Program" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:43 -msgid "Interpreter List" +#: tcl/tklinuxcnc.tcl:1647 +msgid " - Status: " msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:47 -#, python-format -msgid "" -"Inifile setting for this debug level:\n" -"[EMC]DEBUG=0x%08x" +#: tcl/tklinuxcnc.tcl:1663 +msgid "Optional Stop" msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:81 -msgid " * This option can only be enabled in the inifile" +#: tcl/tklinuxcnc.tcl:2010 +msgid "Error" msgstr "" -#: share/axis/tcl/axis.tcl:49 -#, fuzzy -msgid "_Open..." -msgstr "_Megnyitás" +#: tcl/tklinuxcnc.tcl:2070 tcl/ngcgui_ttt.tcl:46 +msgid "Set Font" +msgstr "" -#: share/axis/tcl/axis.tcl:53 -msgid "Recent _Files" +#: tcl/tklinuxcnc.tcl:2079 tcl/ngcgui_ttt.tcl:283 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4827 +msgid "Font" msgstr "" -#: share/axis/tcl/axis.tcl:57 -#, fuzzy -msgid "_Edit..." -msgstr "Sz_erkesztés" +#: tcl/tklinuxcnc.tcl:2086 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3257 +msgid "Size" +msgstr "" -#: share/axis/tcl/axis.tcl:60 +#: tcl/tklinuxcnc.tcl:2093 #, fuzzy -msgid "Ctrl-R" -msgstr "Nullpont" +msgid "Style" +msgstr "Lépé_s" -#: share/axis/tcl/axis.tcl:62 -msgid "_Reload" -msgstr "Ú_jratöltés" +#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:2031 +msgid "ESTOP" +msgstr "ESTOP" -#: share/axis/tcl/axis.tcl:65 -#, fuzzy -msgid "Ctrl-S" -msgstr "Nullpont" +#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2979 share/axis/tcl/axis.tcl:2033 +msgid "ON" +msgstr "ON" -#: share/axis/tcl/axis.tcl:67 -msgid "_Save gcode as..." +#: tcl/tklinuxcnc.tcl:2290 +msgid "LUBE ON" msgstr "" -#: share/axis/tcl/axis.tcl:71 -#, fuzzy -msgid "_Properties..." -msgstr "G-kód hiba %s -ben" - -#: share/axis/tcl/axis.tcl:77 -msgid "Edit _tool table..." +#: tcl/tklinuxcnc.tcl:2292 +msgid "LUBE OFF" msgstr "" -#: share/axis/tcl/axis.tcl:81 -msgid "Reload tool ta_ble" +#: tcl/tklinuxcnc.tcl:2294 +msgid "LUBE ?" msgstr "" -#: share/axis/tcl/axis.tcl:87 -msgid "_Ladder Editor..." +#: tcl/scripts/Set_Coordinates.tcl:23 +msgid "LinuxCNC Set Coordinate" msgstr "" -#: share/axis/tcl/axis.tcl:99 -msgid "Toggle _Emergency Stop" -msgstr "Vészm_egállítás Ki/Be" - -#: share/axis/tcl/axis.tcl:104 -msgid "Toggle _Machine Power" -msgstr "_Megmunkáló motor Ki/Be" - -#: share/axis/tcl/axis.tcl:111 -msgid "_Run program" -msgstr "P_rogram indítás" - -#: share/axis/tcl/axis.tcl:115 -#, fuzzy -msgid "Ru_n from selected line" -msgstr "Nézet mozgatás vagy sor kijelölés" +#: tcl/scripts/Set_Coordinates.tcl:26 +msgid "Coordinate System Control Window" +msgstr "" -#: share/axis/tcl/axis.tcl:120 -#, fuzzy -msgid "S_tep" -msgstr "Lépé_s" +#: tcl/scripts/Set_Coordinates.tcl:81 +msgid "Var # " +msgstr "" -#: share/axis/tcl/axis.tcl:125 +#: tcl/scripts/Set_Coordinates.tcl:82 #, fuzzy -msgid "_Pause" -msgstr "Szü_net" +msgid "Offset Value " +msgstr "Eltolás" -#: share/axis/tcl/axis.tcl:130 -#, fuzzy -msgid "Re_sume" -msgstr "Folytatás" +#: tcl/scripts/Set_Coordinates.tcl:83 +msgid "What to Teach" +msgstr "" -#: share/axis/tcl/axis.tcl:140 -msgid "Stop at M_1" +#: tcl/scripts/Set_Coordinates.tcl:101 +msgid "Set Old" msgstr "" -#: share/axis/tcl/axis.tcl:145 -msgid "Skip lines with '_/'" +#: tcl/scripts/Set_Coordinates.tcl:102 +msgid "Set Zero" msgstr "" -#: share/axis/tcl/axis.tcl:150 -#, fuzzy -msgid "Ctrl-M" -msgstr "Nullpont" +#: tcl/scripts/Set_Coordinates.tcl:104 +msgid "Write" +msgstr "" -#: share/axis/tcl/axis.tcl:152 -msgid "Clear MDI h_istory" +#: tcl/ngcgui.tcl:439 tcl/ngcgui.tcl:846 +msgid "Need non-null file name" msgstr "" -#: share/axis/tcl/axis.tcl:154 -#, fuzzy -msgid "Ctrl-H" -msgstr "Nullpont" +#: tcl/ngcgui.tcl:483 +msgid "Disallowed use of ngcgui generated file as Subfile" +msgstr "" -#: share/axis/tcl/axis.tcl:156 -msgid "Copy from MDI hist_ory" +#: tcl/ngcgui.tcl:489 +msgid "" +"marked (not_a_subfile)\n" +"Not intended for use as a subfile" msgstr "" -#: share/axis/tcl/axis.tcl:158 -msgid "Ctrl-Shift-H" +#: tcl/ngcgui.tcl:503 tcl/ngcgui.tcl:522 tcl/ngcgui.tcl:544 tcl/ngcgui.tcl:557 +#: tcl/ngcgui.tcl:577 tcl/ngcgui.tcl:682 +msgid "bogus" msgstr "" -#: share/axis/tcl/axis.tcl:160 -msgid "Paste to MDI histor_y" +#: tcl/ngcgui.tcl:505 +msgid "can not include subroutines within ngcgui subfile" msgstr "" -#: share/axis/tcl/axis.tcl:166 -msgid "_Calibration" +#: tcl/ngcgui.tcl:513 +msgid "Multiple subroutines in file not allowed" msgstr "" -#: share/axis/tcl/axis.tcl:170 -#, fuzzy -msgid "Show _Hal Configuration" -msgstr "Fő orsó fék bekapcsolva" +#: tcl/ngcgui.tcl:524 +msgid "sub label" +msgstr "" -#: share/axis/tcl/axis.tcl:174 -msgid "H_al Meter" +#: tcl/ngcgui.tcl:524 tcl/ngcgui.tcl:579 +msgid "does not match subroutine file name" msgstr "" -#: share/axis/tcl/axis.tcl:178 -msgid "Ha_l Scope" +#: tcl/ngcgui.tcl:539 tcl/ngcgui.tcl:540 +msgid "ignoring M2 after endsub" msgstr "" -#: share/axis/tcl/axis.tcl:182 -#, fuzzy -msgid "Sho_w LinuxCNC Status" -msgstr "Mutasd az _EMC állapotát" +#: tcl/ngcgui.tcl:545 +msgid "file contains lines after subend" +msgstr "" -#: share/axis/tcl/axis.tcl:186 -msgid "Set _Debug Level" +#: tcl/ngcgui.tcl:558 +msgid "file contains lines before sub" msgstr "" -#: share/axis/tcl/axis.tcl:192 -msgid "Homin_g" +#: tcl/ngcgui.tcl:579 +msgid "endsub label" msgstr "" -#: share/axis/tcl/axis.tcl:196 -msgid "_Unhoming" +#: tcl/ngcgui.tcl:684 +msgid "out of sequence positional parameter" msgstr "" -#: share/axis/tcl/axis.tcl:200 -msgid "_Zero coordinate system" +#: tcl/ngcgui.tcl:684 +msgid "expected" msgstr "" -#: share/axis/tcl/axis.tcl:204 -msgid "P1 G5_4" +#: tcl/ngcgui.tcl:735 +msgid "no sub found in file" msgstr "" -#: share/axis/tcl/axis.tcl:208 -msgid "P2 G5_5" +#: tcl/ngcgui.tcl:738 +msgid "no endsub found in file" msgstr "" -#: share/axis/tcl/axis.tcl:212 -msgid "P3 G5_6" +#: tcl/ngcgui.tcl:801 +msgid "Cannot find gcmc executable" msgstr "" -#: share/axis/tcl/axis.tcl:216 -msgid "P4 G5_7" +#: tcl/ngcgui.tcl:802 +msgid "Please Install in path" msgstr "" -#: share/axis/tcl/axis.tcl:220 -msgid "P5 G5_8" +#: tcl/ngcgui.tcl:810 +msgid "not embedded, deriving outdir from:" msgstr "" -#: share/axis/tcl/axis.tcl:224 -msgid "P6 G5_9" +#: tcl/ngcgui.tcl:1038 +msgid "Choose Files" msgstr "" -#: share/axis/tcl/axis.tcl:228 -msgid "P7 G59._1" +#: tcl/ngcgui.tcl:1178 +#, fuzzy +msgid "Controls" +msgstr "Folytonos" + +#: tcl/ngcgui.tcl:1187 +msgid "Preamble" msgstr "" -#: share/axis/tcl/axis.tcl:232 -msgid "P8 G59._2" +#: tcl/ngcgui.tcl:1200 +msgid "Subfile" msgstr "" -#: share/axis/tcl/axis.tcl:236 -msgid "P9 G59._3" +#: tcl/ngcgui.tcl:1212 +msgid "Postamble" msgstr "" -#: share/axis/tcl/axis.tcl:240 -msgid "_G92" +#: tcl/ngcgui.tcl:1229 +msgid "Retain values on Subfile read" msgstr "" -#: share/axis/tcl/axis.tcl:248 -msgid "Tool touch off to wor_kpiece" +#: tcl/ngcgui.tcl:1237 +msgid "Expand subroutine" msgstr "" -#: share/axis/tcl/axis.tcl:254 -msgid "Tool touch off to _fixture" +#: tcl/ngcgui.tcl:1247 tcl/ngcgui.tcl:2571 +msgid "Autosend" msgstr "" -#: share/axis/tcl/axis.tcl:262 -msgid "_Top view" -msgstr "_Felül nézet" +#: tcl/ngcgui.tcl:1257 +msgid "Verbose ngcfile" +msgstr "" -#: share/axis/tcl/axis.tcl:269 -msgid "_Rotated Top view" -msgstr "Fo_rgatott felül nézet" +#: tcl/ngcgui.tcl:1267 tcl/ngcgui.tcl:2393 tcl/ngcgui.tcl:2416 +#: tcl/ngcgui.tcl:2446 +msgid "Create Feature" +msgstr "" -#: share/axis/tcl/axis.tcl:276 -msgid "_Side view" -msgstr "_Oldal nézet" +#: tcl/ngcgui.tcl:1273 tcl/ngcgui.tcl:3058 +#, fuzzy +msgid "MakeFile" +msgstr "_Fájl" -#: share/axis/tcl/axis.tcl:283 -msgid "_Front view" -msgstr "_Elől nézet" +#: tcl/ngcgui.tcl:1274 tcl/ngcgui.tcl:3055 +msgid "Finalize" +msgstr "" -#: share/axis/tcl/axis.tcl:290 -msgid "_Perspective view" -msgstr "_Perspektíva nézet" +#: tcl/ngcgui.tcl:1291 +msgid "Reread" +msgstr "" -#: share/axis/tcl/axis.tcl:299 -msgid "Display _Inches" -msgstr "Mértékegység: _Inch" +#: tcl/ngcgui.tcl:1310 +msgid "SendFileToAxis" +msgstr "" -#: share/axis/tcl/axis.tcl:306 -msgid "Display _MM" -msgstr "Mértékegység: _mm" +#: tcl/ngcgui.tcl:1353 +msgid "Unrecoverable problem" +msgstr "" -#: share/axis/tcl/axis.tcl:313 -msgid "S_how program" -msgstr "Muta_sd a programot" +#: tcl/ngcgui.tcl:1431 +msgid "Postamble file" +msgstr "" -#: share/axis/tcl/axis.tcl:318 -#, fuzzy -msgid "Show program r_apids" -msgstr "Muta_sd a programot" +#: tcl/ngcgui.tcl:1481 +msgid "Subroutine file" +msgstr "" -#: share/axis/tcl/axis.tcl:323 -#, fuzzy -msgid "Alpha-_blend program" -msgstr "Program betöltés" +#: tcl/ngcgui.tcl:1545 +msgid "Positional Parameters" +msgstr "" -#: share/axis/tcl/axis.tcl:328 -msgid "Sho_w live plot" -msgstr "Mutas_d a grafikus szimulációt" +#: tcl/ngcgui.tcl:1694 +msgid "No Subfile specified" +msgstr "" -#: share/axis/tcl/axis.tcl:333 -msgid "Show too_l" -msgstr "Mu_tasd a szerszámot" +#: tcl/ngcgui.tcl:1696 +msgid "No parameters yet" +msgstr "" -#: share/axis/tcl/axis.tcl:338 -#, fuzzy -msgid "Show e_xtents" -msgstr "Mutasd a _határokat" +#: tcl/ngcgui.tcl:1705 +msgid "Missing value for parm" +msgstr "" -#: share/axis/tcl/axis.tcl:343 -#, fuzzy -msgid "Show o_ffsets" -msgstr "Mutasd a _határokat" +#: tcl/ngcgui.tcl:1726 +msgid "Output file" +msgstr "" -#: share/axis/tcl/axis.tcl:348 -#, fuzzy -msgid "Sh_ow machine limits" -msgstr "A program túllép a gép korlátain" +#: tcl/ngcgui.tcl:1841 +msgid "Multiple Tabs with Features" +msgstr "" -#: share/axis/tcl/axis.tcl:353 -#, fuzzy -msgid "Show v_elocity" -msgstr "Mutas_d a grafikus szimulációt" +#: tcl/ngcgui.tcl:1842 +msgid "Finalize all Tabs?" +msgstr "" -#: share/axis/tcl/axis.tcl:358 -msgid "Show _distance to go" +#: tcl/ngcgui.tcl:1842 +msgid "Order" msgstr "" -#: share/axis/tcl/axis.tcl:363 -msgid "Large coordinate fo_nt" +#: tcl/ngcgui.tcl:1844 +msgid "No, just this page" msgstr "" -#: share/axis/tcl/axis.tcl:366 -#, fuzzy -msgid "Ctrl-K" -msgstr "Nullpont" +#: tcl/ngcgui.tcl:1858 +msgid "Axis is not responding" +msgstr "" -#: share/axis/tcl/axis.tcl:368 -#, fuzzy -msgid "_Clear live plot" -msgstr "Grafikus szimuláció törlése" +#: tcl/ngcgui.tcl:1859 +msgid "Error: " +msgstr "" -#: share/axis/tcl/axis.tcl:377 -#, fuzzy -msgid "Show commanded position" -msgstr "Mutasd a programozott pozíciót" +#: tcl/ngcgui.tcl:1861 +msgid "Autosend disabled, Ctrl-A toggles autosend" +msgstr "" -#: share/axis/tcl/axis.tcl:384 -#, fuzzy -msgid "Show actual position" -msgstr "Mutasd az aktuális pozíciót" +#: tcl/ngcgui.tcl:1863 +msgid "File saving enabled -- Finalize to save" +msgstr "" -#: share/axis/tcl/axis.tcl:393 -#, fuzzy -msgid "Show machine position" -msgstr "Mutasd a gép pozícióját" +#: tcl/ngcgui.tcl:1879 +msgid "Require .ngc suffix for filename" +msgstr "" -#: share/axis/tcl/axis.tcl:400 -#, fuzzy -msgid "Show relative position" -msgstr "Mutasd a relatív pozíciót" +#: tcl/ngcgui.tcl:1889 +msgid "Disallowed overwrite of" +msgstr "" -#: share/axis/tcl/axis.tcl:409 -msgid "Joint mode" +#: tcl/ngcgui.tcl:1913 +msgid "FEATURE" msgstr "" -#: share/axis/tcl/axis.tcl:416 -msgid "World mode" +#: tcl/ngcgui.tcl:1920 +msgid "feature line added" msgstr "" -#: share/axis/tcl/axis.tcl:425 -msgid "_About AXIS" -msgstr "_AXIS névjegye" +#: tcl/ngcgui.tcl:1932 +msgid "line added" +msgstr "" -#: share/axis/tcl/axis.tcl:429 -msgid "Quick _Reference" -msgstr "Gyors _referencia" +#: tcl/ngcgui.tcl:1932 +msgid "activated" +msgstr "" -#: share/axis/tcl/axis.tcl:439 +#: tcl/ngcgui.tcl:1934 #, fuzzy -msgid "_Machine" -msgstr "Gép" +msgid "restores" +msgstr "Stop" -#: share/axis/tcl/axis.tcl:443 -#, fuzzy -msgid "_View" -msgstr "_Nézet" +#: tcl/ngcgui.tcl:1973 +msgid "NOTREACHED mode" +msgstr "" -#: share/axis/tcl/axis.tcl:456 -msgid "Toggle Emergency Stop [F1]" -msgstr "Vészmegallítás Ki/Be [F1]" +#: tcl/ngcgui.tcl:1989 +msgid "Positional parameters for" +msgstr "" -#: share/axis/tcl/axis.tcl:465 -#, fuzzy -msgid "Toggle Machine power [F2]" -msgstr "Gép Ki/Be [F2]" +#: tcl/ngcgui.tcl:1997 +msgid "expanded file" +msgstr "" -#: share/axis/tcl/axis.tcl:476 -msgid "Open G-Code file [O]" -msgstr "G-kód megnyitás [O]" +#: tcl/ngcgui.tcl:2011 +msgid "call subroutine file" +msgstr "" -#: share/axis/tcl/axis.tcl:484 -msgid "Reopen current file [Control-R]" -msgstr "Újratöltés [Control-R]" +#: tcl/ngcgui.tcl:2394 +msgid "Enter parms for 1st feature" +msgstr "" -#: share/axis/tcl/axis.tcl:494 -msgid "Begin executing current file [R]" -msgstr "Program indítás [R]" +#: tcl/ngcgui.tcl:2401 +msgid "New Outfile" +msgstr "" -#: share/axis/tcl/axis.tcl:502 -msgid "Execute next line [T]" -msgstr "Következő sor végrehajtása [T]" +#: tcl/ngcgui.tcl:2403 +msgid "Ready to make New Outfile" +msgstr "" -#: share/axis/tcl/axis.tcl:510 -msgid "Pause [P] / resume [S] execution" -msgstr "Program szünet [P]/folytatás [S]" +#: tcl/ngcgui.tcl:2419 tcl/ngcgui.tcl:2452 +msgid "Enter parms for feature " +msgstr "" -#: share/axis/tcl/axis.tcl:518 -msgid "Stop program execution [ESC]" -msgstr "Program leállítása [ESC]" +#: tcl/ngcgui.tcl:2439 +msgid "feature" +msgstr "" -#: share/axis/tcl/axis.tcl:528 -msgid "Toggle skip lines with '/' [Alt-M /]" +#: tcl/ngcgui.tcl:2444 +msgid "Create Next" msgstr "" -#: share/axis/tcl/axis.tcl:535 -msgid "Toggle optional pause [Alt-M 1]" +#: tcl/ngcgui.tcl:2449 +msgid "Created feature " msgstr "" -#: share/axis/tcl/axis.tcl:544 +#: tcl/ngcgui.tcl:2473 #, fuzzy -msgid "Zoom in" -msgstr "Közelítés [+]" +msgid "option" +msgstr "Pozíció:" -#: share/axis/tcl/axis.tcl:552 -#, fuzzy -msgid "Zoom out" -msgstr "Távolítás [-]" +#: tcl/ngcgui.tcl:2484 +msgid "Missing parameters" +msgstr "" -#: share/axis/tcl/axis.tcl:560 -msgid "Top view" -msgstr "Felül nézet" +#: tcl/ngcgui.tcl:2488 +msgid "Parse Error" +msgstr "" -#: share/axis/tcl/axis.tcl:568 -#, fuzzy -msgid "Rotated top view" -msgstr "Fo_rgatott felül nézet" +#: tcl/ngcgui.tcl:2495 +msgid "Null Preamble" +msgstr "" -#: share/axis/tcl/axis.tcl:576 -msgid "Side view" -msgstr "Oldal nézet" +#: tcl/ngcgui.tcl:2500 +msgid "Read Preamble" +msgstr "" -#: share/axis/tcl/axis.tcl:584 -#, fuzzy -msgid "Front view" -msgstr "_Elől nézet" +#: tcl/ngcgui.tcl:2504 +msgid "Preamble Error" +msgstr "" -#: share/axis/tcl/axis.tcl:592 -msgid "Perspective view" -msgstr "Perspektíva nézet" +#: tcl/ngcgui.tcl:2509 +msgid "Null Postamble" +msgstr "" -#: share/axis/tcl/axis.tcl:600 -msgid "Toggle between Drag and Rotate Mode [D]" +#: tcl/ngcgui.tcl:2514 +msgid "Read Postamble" msgstr "" -#: share/axis/tcl/axis.tcl:615 -msgid "Clear live plot [Ctrl-K]" -msgstr "Grafikus szimuláció törlése [Ctrl-K]" +#: tcl/ngcgui.tcl:2518 +msgid "Postamble Error" +msgstr "" -#: share/axis/tcl/axis.tcl:766 -msgid "Manual Control [F3]" -msgstr "Kézi vezérlés [F3]" +#: tcl/ngcgui.tcl:2523 +msgid "Read Subfile" +msgstr "" -#: share/axis/tcl/axis.tcl:767 -msgid "MDI [F5]" +#: tcl/ngcgui.tcl:2528 +msgid "Write Error" msgstr "" -#: share/axis/tcl/axis.tcl:781 share/axis/tcl/axis.tcl:2036 -#: share/axis/tcl/axis.tcl:2203 -#, fuzzy -msgid "Axis:" -msgstr "Tengely:" +#: tcl/ngcgui.tcl:2532 +msgid "Outfile set" +msgstr "" -#: share/axis/tcl/axis.tcl:1102 -#, fuzzy -msgid "Home Axis" -msgstr "Nullpont" +#: tcl/ngcgui.tcl:2537 +msgid "Finished" +msgstr "" -#: share/axis/tcl/axis.tcl:1176 +#: tcl/ngcgui.tcl:2542 #, fuzzy -msgid "Spindle:" -msgstr "Fő orsó:" - -#: share/axis/tcl/axis.tcl:1223 src/emc/usr_intf/touchy/touchy.glade:946 -msgid "-" -msgstr "-" - -#: share/axis/tcl/axis.tcl:1237 -msgid "+" -msgstr "+" +msgid "Canceled" +msgstr "Mégsem" -#: share/axis/tcl/axis.tcl:1242 -#, fuzzy -msgid "Brake" -msgstr "Fék" +#: tcl/ngcgui.tcl:2548 +msgid "Sent" +msgstr "" -#: share/axis/tcl/axis.tcl:1289 +#: tcl/ngcgui.tcl:2552 #, fuzzy -msgid "Coolant:" -msgstr "Hűtés:" +msgid "SendFileToAxis failed" +msgstr "Program_szűrő %r sikertelen" -#: share/axis/tcl/axis.tcl:1294 -#, fuzzy -msgid "Mist" -msgstr "Elszívás" +#: tcl/ngcgui.tcl:2556 +msgid "Ctrl-k for Key bindings" +msgstr "" -#: share/axis/tcl/axis.tcl:1299 -#, fuzzy -msgid "Flood" -msgstr "Folyadék" +#: tcl/ngcgui.tcl:2560 +msgid "Expand sub" +msgstr "" -#: share/axis/tcl/axis.tcl:1371 -msgid "History:" -msgstr "Előzmények:" +#: tcl/ngcgui.tcl:2564 +msgid "Retain values" +msgstr "" -#: share/axis/tcl/axis.tcl:1394 -#, fuzzy -msgid "MDI Command:" -msgstr "Irányított" +#: tcl/ngcgui.tcl:2568 +msgid "Verbose" +msgstr "" -#: share/axis/tcl/axis.tcl:1403 -msgid "Go" -msgstr "Indulj" +#: tcl/ngcgui.tcl:2574 +msgid "Finalize Canceled" +msgstr "" -#: share/axis/tcl/axis.tcl:1409 -#, fuzzy -msgid "Active G-Codes:" -msgstr "Aktuális G-kódok:" +#: tcl/ngcgui.tcl:2711 tcl/ngcgui.tcl:2867 +msgid "Dismiss" +msgstr "" -#: share/axis/tcl/axis.tcl:1487 -#, fuzzy -msgid "Preview" -msgstr "Oldal nézet" +#: tcl/ngcgui.tcl:2716 +msgid "ngcgui Error" +msgstr "" -#: share/axis/tcl/axis.tcl:1488 -msgid "DRO" +#: tcl/ngcgui.tcl:2739 +msgid "Declining support for tk send bug in ngcgui" msgstr "" -#: share/axis/tcl/axis.tcl:1575 share/axis/tcl/axis.tcl:1588 -msgid "Jog Speed:" +#: tcl/ngcgui.tcl:2740 +msgid "You should upgrade linuxcnc to >= linuxcnc2.5" msgstr "" -#: share/axis/tcl/axis.tcl:1600 -msgid "Max Velocity:" +#: tcl/ngcgui.tcl:2784 +msgid "pre2.4_send_file_to_axis:error" +msgstr "" + +#: tcl/ngcgui.tcl:2978 share/axis/tcl/axis.tcl:2032 +msgid "OFF" msgstr "" -#: share/axis/tcl/axis.tcl:1629 +#: tcl/ngcgui.tcl:2981 #, fuzzy -msgid "Spindle Override:" -msgstr "Túlhajtás (%):" +msgid "Toggle autosend" +msgstr "Hűtés Ki/Be" -#: share/axis/tcl/axis.tcl:1631 share/axis/tcl/axis.tcl:1671 -#: src/emc/usr_intf/pncconf/pncconf.glade:3141 -#: src/emc/usr_intf/pncconf/pncconf.glade:3154 -#: src/emc/usr_intf/pncconf/pncconf.glade:3167 -#: src/emc/usr_intf/pncconf/pncconf.glade:3180 -#: src/emc/usr_intf/pncconf/pncconf.glade:3193 -#: src/emc/usr_intf/pncconf/pncconf.glade:3206 -#: src/emc/usr_intf/pncconf/pncconf.glade:3219 -#: src/emc/usr_intf/pncconf/pncconf.glade:3232 -#: src/emc/usr_intf/pncconf/pncconf.glade:3345 -#: src/emc/usr_intf/pncconf/pncconf.glade:3358 -#: src/emc/usr_intf/pncconf/pncconf.glade:3371 -#: src/emc/usr_intf/pncconf/pncconf.glade:3384 -#: src/emc/usr_intf/pncconf/pncconf.glade:3397 -#: src/emc/usr_intf/pncconf/pncconf.glade:3410 -#: src/emc/usr_intf/pncconf/pncconf.glade:3516 -#: src/emc/usr_intf/pncconf/pncconf.glade:3527 -#: src/emc/usr_intf/pncconf/pncconf.glade:4022 -#: src/emc/usr_intf/pncconf/pncconf.glade:4035 -#: src/emc/usr_intf/pncconf/pncconf.glade:4048 -#: src/emc/usr_intf/pncconf/pncconf.glade:4061 -#: src/emc/usr_intf/pncconf/pncconf.glade:4074 -#: src/emc/usr_intf/pncconf/pncconf.glade:4087 -#: src/emc/usr_intf/pncconf/pncconf.glade:4100 -#: src/emc/usr_intf/pncconf/pncconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:4226 -#: src/emc/usr_intf/pncconf/pncconf.glade:4239 -#: src/emc/usr_intf/pncconf/pncconf.glade:4252 -#: src/emc/usr_intf/pncconf/pncconf.glade:4265 -#: src/emc/usr_intf/pncconf/pncconf.glade:4278 -#: src/emc/usr_intf/pncconf/pncconf.glade:4291 -#: src/emc/usr_intf/pncconf/pncconf.glade:4397 -#: src/emc/usr_intf/pncconf/pncconf.glade:4408 -#: src/emc/usr_intf/pncconf/pncconf.glade:4903 -#: src/emc/usr_intf/pncconf/pncconf.glade:4916 -#: src/emc/usr_intf/pncconf/pncconf.glade:4929 -#: src/emc/usr_intf/pncconf/pncconf.glade:4942 -#: src/emc/usr_intf/pncconf/pncconf.glade:4955 -#: src/emc/usr_intf/pncconf/pncconf.glade:4968 -#: src/emc/usr_intf/pncconf/pncconf.glade:4981 -#: src/emc/usr_intf/pncconf/pncconf.glade:4994 -#: src/emc/usr_intf/pncconf/pncconf.glade:5107 -#: src/emc/usr_intf/pncconf/pncconf.glade:5120 -#: src/emc/usr_intf/pncconf/pncconf.glade:5133 -#: src/emc/usr_intf/pncconf/pncconf.glade:5146 -#: src/emc/usr_intf/pncconf/pncconf.glade:5159 -#: src/emc/usr_intf/pncconf/pncconf.glade:5172 -#: src/emc/usr_intf/pncconf/pncconf.glade:5278 -#: src/emc/usr_intf/pncconf/pncconf.glade:5289 -#: src/emc/usr_intf/pncconf/pncconf.glade:5582 -#: src/emc/usr_intf/pncconf/pncconf.glade:5631 -#: src/emc/usr_intf/pncconf/pncconf.glade:5641 -msgid "%" +#: tcl/ngcgui.tcl:2982 tcl/ngcgui.tcl:3189 +msgid "Clear entries" msgstr "" -#: share/axis/tcl/axis.tcl:1711 -#, fuzzy -msgid "" -"LinuxCNC/AXIS version $version\n" -"\n" -"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff " -"Epler and Chris Radek.\n" -"\n" -"This is free software, and you are welcome to redistribute it under certain " -"conditions. See the file COPYING, included with LinuxCNC.\n" -"\n" -"Visit the LinuxCNC web site: " +#: tcl/ngcgui.tcl:2983 +msgid "Set entries to default values" msgstr "" -"LinuxCNC/AXIS verzió $version\n" -"\n" -"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff " -"Epler es Chris Radek.\n" -"\n" -"Ez egy ingyenes szoftver. Szabadon továbbadható az AXIS csomag COPYING " -"feltételei szerint.\n" -"\n" -"Szívesen látunk az LinuxCNC web oldalán: " -#: share/axis/tcl/axis.tcl:1739 -#, fuzzy -msgid "About AXIS" -msgstr "_AXIS névjegye" +#: tcl/ngcgui.tcl:2984 tcl/ngcgui.tcl:2998 tcl/ngcgui.tcl:3000 +msgid "Open editor specified by" +msgstr "" -#: share/axis/tcl/axis.tcl:1768 -msgid "AXIS Quick Reference" -msgstr "AXIS gyors referencia" +#: tcl/ngcgui.tcl:2985 +msgid "on last outfile" +msgstr "" -#: share/axis/tcl/axis.tcl:1903 -msgid "AXIS $::version on $::machine" +#: tcl/ngcgui.tcl:2986 +msgid "toggle expand subroutines" msgstr "" -#: share/axis/tcl/axis.tcl:1905 -#, fuzzy -msgid "(no file)" -msgstr "AXIS (Nincs fájl)" +#: tcl/ngcgui.tcl:2987 +msgid "Create feature" +msgstr "" -#: share/axis/tcl/axis.tcl:1976 share/axis/tcl/axis.tcl:1981 -#, fuzzy -msgid "Position:" -msgstr "Pozíció:" +#: tcl/ngcgui.tcl:2988 +msgid "Finalize (AUTO send is" +msgstr "" -#: share/axis/tcl/axis.tcl:1978 -#, fuzzy -msgid "Machine" -msgstr "Gép" +#: tcl/ngcgui.tcl:2989 +msgid "Show key bindings" +msgstr "" -#: share/axis/tcl/axis.tcl:1978 src/emc/usr_intf/touchy/touchy.glade:155 -#, fuzzy -msgid "Relative" -msgstr "Relatív" +#: tcl/ngcgui.tcl:2990 +msgid "Restart (cancel pending)" +msgstr "" + +#: tcl/ngcgui.tcl:2991 +msgid "(re)Read Preamble" +msgstr "" + +#: tcl/ngcgui.tcl:2992 +msgid "(re)Read Postamble" +msgstr "" + +#: tcl/ngcgui.tcl:2993 +msgid "(re)Read Subfile" +msgstr "" + +#: tcl/ngcgui.tcl:2994 +msgid "toggle retain values" +msgstr "" -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3329 +#: tcl/ngcgui.tcl:2995 +msgid "toggle output file verbosity" +msgstr "" + +#: tcl/ngcgui.tcl:2996 #, fuzzy -msgid "Actual" -msgstr "Aktuális" +msgid "Show status" +msgstr "Mutasd a _határokat" + +#: tcl/ngcgui.tcl:2997 +msgid "Show full status (debug info)" +msgstr "" -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3318 +#: tcl/ngcgui.tcl:2999 #, fuzzy -msgid "Commanded" -msgstr "Irányított" +msgid "on current subfile" +msgstr "Újratöltés [Control-R]" -#: share/axis/tcl/axis.tcl:2032 share/axis/tcl/axis.tcl:2203 -msgid "Joint:" +#: tcl/ngcgui.tcl:3001 +msgid "on current preamble" msgstr "" -#: share/axis/tcl/axis.tcl:2338 -msgid "Turn spindle counterclockwise [F10]" -msgstr "Fő orsó balra forgatása [F10]" +#: tcl/ngcgui.tcl:3004 +msgid " Escape Return to Preview page" +msgstr "" -#: share/axis/tcl/axis.tcl:2339 -msgid "Turn spindle clockwise [F9]" -msgstr "Fő orsó jobbra forgatása [F9]" +#: tcl/ngcgui.tcl:3081 +msgid "Editing requires setting for environmental variable VISUAL" +msgstr "" -#: share/axis/tcl/axis.tcl:2340 -msgid "Stop spindle [F9/F10]" -msgstr "Fő orsó leállítása [F9/F10]" +#: tcl/ngcgui.tcl:3082 +msgid "Trying gedit" +msgstr "" -#: share/axis/tcl/axis.tcl:2341 -#, fuzzy -msgid "Turn spindle Faster [F12]" -msgstr "Fő orsó jobbra forgatása [F9]" +#: tcl/ngcgui.tcl:3095 +msgid "No file available for editing yet" +msgstr "" -#: share/axis/tcl/axis.tcl:2342 -#, fuzzy -msgid "Turn spindle Slower [F11]" -msgstr "Fő orsó jobbra forgatása [F9]" +#: tcl/ngcgui.tcl:3104 tcl/ngcgui.tcl:3113 +msgid "No file available for editing" +msgstr "" -#: share/axis/tcl/axis.tcl:2343 -msgid "Turn spindle brake on [Shift-B] or off [B]" -msgstr "Fő orsó fék be- [Shift-B] vagy ki- [B] kapcsolása" +#: tcl/ngcgui.tcl:3130 +msgid "Status items" +msgstr "" -#: share/axis/tcl/axis.tcl:2344 -msgid "Turn flood on or off [F8]" -msgstr "Hűtőfolyadék Ki/Be [F8]" +#: tcl/ngcgui.tcl:3143 +msgid "All-page opt items" +msgstr "" -#: share/axis/tcl/axis.tcl:2345 -msgid "Turn mist on or off [F7]" -msgstr "Elszívás Ki/Be [F7]" +#: tcl/ngcgui.tcl:3149 +msgid "any-items" +msgstr "" -#: share/axis/tcl/axis.tcl:2346 -msgid "Send active axis home [Home]" -msgstr "Aktív tengely nullpontra [Home]" +#: tcl/ngcgui.tcl:3182 +msgid "Set defaults" +msgstr "" -#: share/axis/tcl/axis.tcl:2347 -#, fuzzy -msgid "Set G54 offset for active axis [End]" -msgstr "A G54 offszet beállítása az aktiv tengelyen" +#: tcl/ngcgui.tcl:3257 +msgid "not writable" +msgstr "" -#: share/axis/tcl/axis.tcl:2348 -msgid "Activate axis [X]" -msgstr "[X] engely aktiválása" +#: tcl/ngcgui.tcl:3396 tcl/ngcgui.tcl:3577 +msgid "new" +msgstr "" -#: share/axis/tcl/axis.tcl:2349 -msgid "Activate axis [Y]" -msgstr "[Y] Tengely aktiválása" +#: tcl/ngcgui.tcl:3422 +msgid "Open a new Subfile" +msgstr "" -#: share/axis/tcl/axis.tcl:2350 -msgid "Activate axis [Z]" -msgstr "[Z] Tengely aktiválása" +#: tcl/ngcgui.tcl:3568 +msgid "remove" +msgstr "" -#: share/axis/tcl/axis.tcl:2351 -msgid "Activate axis [A]" -msgstr "[A] Tengely aktiválása" +#: tcl/ngcgui.tcl:3590 tcl/ngcgui.tcl:3596 +msgid "move" +msgstr "" -#: share/axis/tcl/axis.tcl:2352 -msgid "Activate axis [4]" -msgstr "[4] Tengely aktiválása" +#: tcl/ngcgui.tcl:3704 src/emc/usr_intf/pncconf/pncconf.py:7374 +#: src/emc/usr_intf/pncconf/pncconf.py:7485 +#: src/emc/usr_intf/pncconf/pncconf.py:7650 +msgid "Custom" +msgstr "" -#: share/axis/tcl/axis.tcl:2353 -msgid "Activate axis [5]" -msgstr "[5] Tengely aktiválása" +#: tcl/ngcgui.tcl:3730 +msgid "Problem creating page" +msgstr "" -#: share/axis/tcl/axis.tcl:2354 share/axis/tcl/axis.tcl:2355 -msgid "Jog selected axis" -msgstr "Lépés a kiválasztott tengelyen" +#: tcl/ngcgui.tcl:3737 +msgid "entrykeybindings not available" +msgstr "" -#: share/axis/tcl/axis.tcl:2357 -msgid "Temporarily allow jogging outside machine limits [L]" -msgstr "Átmenetileg túl léphető határok [L]" +#: tcl/ngcgui.tcl:3781 +msgid "Found multiple matches for" +msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -#, fuzzy -msgid "Spindle CW" -msgstr "Fő orsó:" +#: tcl/ngcgui.tcl:3782 +msgid "using path" +msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -#, fuzzy -msgid "Spindle CCW" -msgstr "Fő orsó:" +#: tcl/ngcgui.tcl:3790 src/emc/usr_intf/axis/scripts/axis.py:2440 +#: src/emc/usr_intf/axis/scripts/axis.py:2453 +msgid "Warning" +msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:50 -#, fuzzy -msgid "Input control" -msgstr "Kézi vezérlés" +#: tcl/ngcgui.tcl:3791 +msgid "File absolute path specifier conflicts with searchpath result" +msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:53 src/emc/usr_intf/touchy/mdi.py:54 -msgid "Straight rapid" +#: tcl/ngcgui.tcl:3792 +msgid "Absolute Specifier" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:55 src/emc/usr_intf/touchy/mdi.py:56 -msgid "Straight feed" +#: tcl/ngcgui.tcl:3793 +msgid "Using Search Result" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:57 src/emc/usr_intf/touchy/mdi.py:58 -msgid "Arc CW" +#: tcl/ngcgui.tcl:3798 +msgid "File not in Search Path" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:59 src/emc/usr_intf/touchy/mdi.py:60 -msgid "Arc CCW" +#: tcl/ngcgui.tcl:3800 +msgid "Must be in search path" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:61 src/emc/usr_intf/touchy/mdi.py:62 -msgid "Dwell" +#: tcl/ngcgui.tcl:3802 +msgid "(File found -- not in search path)" +msgstr "" + +#: tcl/ngcgui.tcl:3804 +msgid "Current directory" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:63 +#: tcl/ngcgui.tcl:3805 +msgid "Search path" +msgstr "" + +#: tcl/ngcgui.tcl:3815 +msgid "Check setting for" +msgstr "" + +#: tcl/ngcgui.tcl:3816 #, fuzzy -msgid "Setup" -msgstr "EMC állapot mutatása" +msgid "in ini file" +msgstr "AXIS (Nincs fájl)" + +#: tcl/ngcgui.tcl:3817 +msgid "(Restart required after fixing ini file)" +msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:64 +#: tcl/ngcgui.tcl:3832 #, fuzzy -msgid "Spindle synchronized feed" -msgstr "Fő orsó fék bekapcsolva" +msgid "Try to Continue" +msgstr "Folytonos" -#: src/emc/usr_intf/touchy/mdi.py:65 -msgid "Rigid tap" +#: tcl/ngcgui.tcl:3837 +msgid "Ngcgui Configuration File Not Found" +msgstr "" + +#: tcl/ngcgui.tcl:3917 +msgid "Missing Tcl Package Img" +msgstr "" + +#: tcl/ngcgui.tcl:3918 +msgid "Please install Img" +msgstr "" + +#: tcl/ngcgui.tcl:4122 +#, fuzzy +msgid "ini file" +msgstr "AXIS (Nincs fájl)" + +#: tcl/ngcgui.tcl:4131 +msgid "not found" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:67 +msgid "found truetype-tracer v4 -OK" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:70 +msgid "Note truetype-tracer v4 is required" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:71 +msgid "Note: truetype-tracer v4 is required" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:81 +msgid "ngcgui_app.tcl must be loaded before" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:89 +msgid "Create a subroutine file from truetype-tracer (V4 reqd)" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:102 tcl/ngcgui_ttt.tcl:115 +msgid "problem with" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:106 +msgid "No entry for" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:109 +msgid "wrong version of truetype-tracer" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:125 +msgid "not writable, using" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:125 +msgid "and setting expandsub" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:161 +msgid "Text" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:171 +msgid "Linescale" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:177 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3583 +msgid "none" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:192 +msgid "Subdiv" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:199 +msgid "default" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:239 +msgid "Mode" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:247 +msgid "normal" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:248 +msgid "date" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:249 +msgid "fontname" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:262 +msgid "Switches" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:270 +msgid "Unicode" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:275 +msgid "Allow Rotation" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:295 +msgid "Make ngcgui-compatible subfile and new tab page" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:353 +msgid "Null text" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:384 +msgid "Using truetype-tracer default font" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:388 +#, fuzzy +msgid "no such file" +msgstr "AXIS (Nincs fájl)" + +#: tcl/ngcgui_ttt.tcl:393 +msgid "file not readable" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:507 +msgid "Creating new tab page" +msgstr "" + +#: tcl/ngcgui_app.tcl:25 +msgid "" +"requires command inifindall\n" +"from axis.py (LinuxCNC 2.5) or" +msgstr "" + +#: tcl/ngcgui_app.tcl:55 +msgid "Substituting" +msgstr "" + +#: tcl/ngcgui_app.tcl:55 +msgid "for" +msgstr "" + +#: tcl/ngcgui_app.tcl:59 +msgid "not readable" +msgstr "" + +#: tcl/ngcgui_app.tcl:65 tcl/ngcgui_app.tcl:68 +msgid "Unexpected: multiple startups for ngcgui" +msgstr "" + +#: tcl/ngcgui_app.tcl:66 +msgid "LinuxCNC" +msgstr "" + +#: tcl/ngcgui_app.tcl:67 +msgid "for linuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" +msgstr "" + +#: tcl/ngcgui_app.tcl:86 +msgid "LinuxCNC version" +msgstr "" + +#: tcl/ngcgui_app.tcl:87 +msgid "for LinuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" +msgstr "" + +#: tcl/tooledit.tcl:65 +msgid "Problem reading ~/.tooleditrc" +msgstr "" + +#: tcl/tooledit.tcl:82 +#, tcl-format +msgid "Note: Ignoring duplicate column name: %s" +msgstr "" + +#: tcl/tooledit.tcl:93 +#, fuzzy, tcl-format +msgid "Unknown column: %s" +msgstr "Szerszám %d ismeretlen" + +#: tcl/tooledit.tcl:210 tcl/tooledit.tcl:213 tcl/tooledit.tcl:598 +#: tcl/tooledit.tcl:599 tcl/tooledit.tcl:1032 +msgid "NEW" +msgstr "" + +#: tcl/tooledit.tcl:232 +#, tcl-format +msgid "%s must be a number" +msgstr "" + +#: tcl/tooledit.tcl:241 +#, tcl-format +msgid "filename: <%s> not readable" +msgstr "" + +#: tcl/tooledit.tcl:245 +#, tcl-format +msgid "filename: <%s> not writable" +msgstr "" + +#: tcl/tooledit.tcl:250 +#, tcl-format +msgid "directory: <%s> not writable" +msgstr "" + +#: tcl/tooledit.tcl:294 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, value <%s> is not a number" +msgstr "" + +#: tcl/tooledit.tcl:300 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, expected integer not <%s>" +msgstr "" + +#: tcl/tooledit.tcl:316 +#, tcl-format +msgid "At linenumber %d, Unknown tag <%s>" +msgstr "" + +#: tcl/tooledit.tcl:399 +#, tcl-format +msgid "%s: Column sorting not available with tcl_version==%s" +msgstr "" + +#: tcl/tooledit.tcl:408 +#, fuzzy +msgid "tool" +msgstr "Nincs szerszám" + +#: tcl/tooledit.tcl:409 +msgid "poc" +msgstr "" + +#: tcl/tooledit.tcl:410 +msgid "diam" +msgstr "" + +#: tcl/tooledit.tcl:411 +msgid "front" +msgstr "" + +#: tcl/tooledit.tcl:412 +msgid "back" +msgstr "" + +#: tcl/tooledit.tcl:413 +msgid "orien" +msgstr "" + +#: tcl/tooledit.tcl:414 +#, fuzzy +msgid "comment" +msgstr "Lépes növelése" + +#: tcl/tooledit.tcl:444 +msgid "Del" +msgstr "" + +#: tcl/tooledit.tcl:473 +msgid "ReLoadTable" +msgstr "" + +#: tcl/tooledit.tcl:478 +#, fuzzy +msgid "SaveFile" +msgstr "_Fájl" + +#: tcl/tooledit.tcl:483 +msgid "ReRead" +msgstr "" + +#: tcl/tooledit.tcl:485 +#, fuzzy +msgid "AddTool" +msgstr "Hűtés:" + +#: tcl/tooledit.tcl:535 +#, tcl-format +msgid "Opened %s" +msgstr "" + +#: tcl/tooledit.tcl:536 +#, tcl-format +msgid "Created %s" +msgstr "" + +#: tcl/tooledit.tcl:537 +msgid "File updated" +msgstr "" + +#: tcl/tooledit.tcl:538 +msgid "File modified" +msgstr "" + +#: tcl/tooledit.tcl:539 +msgid "File check errors" +msgstr "" + +#: tcl/tooledit.tcl:540 +msgid "File checked" +msgstr "" + +#: tcl/tooledit.tcl:541 +msgid "File items deleted" +msgstr "" + +#: tcl/tooledit.tcl:542 +msgid "Bogus lines in file ignored" +msgstr "" + +#: tcl/tooledit.tcl:543 +msgid "File errors -- Check Entries" +msgstr "" + +#: tcl/tooledit.tcl:544 +msgid "Warning: File changed by another process" +msgstr "" + +#: tcl/tooledit.tcl:545 +msgid "Warning: File deleted by another process" +msgstr "" + +#: tcl/tooledit.tcl:546 +#, fuzzy +msgid "Added Tool" +msgstr "Nincs szerszám" + +#: tcl/tooledit.tcl:550 +#, tcl-format +msgid "Sorted by %s, increasing" +msgstr "" + +#: tcl/tooledit.tcl:551 +#, tcl-format +msgid "Sorted by %s, decreasing" +msgstr "" + +#: tcl/tooledit.tcl:593 +msgid "Added" +msgstr "" + +#: tcl/tooledit.tcl:802 +#, tcl-format +msgid "Tool %s, Column %s, parameter %s is not a number" +msgstr "" + +#: tcl/tooledit.tcl:811 +#, tcl-format +msgid "Tool %s, parameter %s must be nonnegative integer" +msgstr "" + +#: tcl/tooledit.tcl:819 +#, tcl-format +msgid "Tool %s: must be 0..9 integer" +msgstr "" + +#: tcl/tooledit.tcl:826 +#, tcl-format +msgid "Tool %s: <%s> must be between -360 and 360" +msgstr "" + +#: tcl/tooledit.tcl:842 +#, tcl-format +msgid "Pocket <%s> specified multiple times" +msgstr "" + +#: tcl/tooledit.tcl:857 +#, tcl-format +msgid "Tool <%s> specified multiple times" +msgstr "" + +#: tcl/tooledit.tcl:902 +msgid "File Modified" +msgstr "" + +#: tcl/tooledit.tcl:903 +msgid "Save Modifications to File?" +msgstr "" + +#: tcl/tooledit.tcl:930 +#, tcl-format +msgid "" +"Only these columns are currently used:\n" +"\n" +" %s" +msgstr "" + +#: tcl/tooledit.tcl:931 +msgid "Limit display to these columns by specifying" +msgstr "" + +#: tcl/tooledit.tcl:933 +msgid "Format for ini file is" +msgstr "" + +#: tcl/tooledit.tcl:935 +msgid "For standalone use, invoke as" +msgstr "" + +#: tcl/tooledit.tcl:936 +msgid "tool_table_filename" +msgstr "" + +#: tcl/tooledit.tcl:956 +#, tcl-format +msgid "Created by %s" +msgstr "" + +#: tcl/tooledit.tcl:957 +msgid "Saved geometry (updated on program termination)" +msgstr "" + +#: tcl/tooledit.tcl:980 +#, tcl-format +msgid "" +"%s: Axis inifile specifies multiple inifile items for: [EMCIO]TOOL_TABLE" +msgstr "" + +#: tcl/tooledit.tcl:981 +#, tcl-format +msgid "%s: Using: %s" +msgstr "" + +#: tcl/tooledit.tcl:990 +#, tcl-format +msgid "" +"%s: Warning: Axis is running but the tool table file <%s> \n" +"differs from the standalone startup file <%s>" +msgstr "" + +#: tcl/tooledit.tcl:1004 +msgid "Must be On and Idle to reload tool table" +msgstr "" + +#: tcl/tooledit.tcl:1093 +msgid "Usage" +msgstr "" + +#: tcl/tooledit.tcl:1094 tcl/tooledit.tcl:1095 +msgid "filename" +msgstr "" + +#: tcl/tooledit.tcl:1096 +#, tcl-format +msgid "Allowed column_ names are: %s" +msgstr "" + +#: tcl/tooledit.tcl:1106 +msgid "Missing filename" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:183 +msgid "Emergency stop" +msgstr "Vészleállítás" + +#: src/emc/usr_intf/axis/scripts/axis.py:184 +msgid "Turn machine on" +msgstr "Kapcsold be a gépet" + +#: src/emc/usr_intf/axis/scripts/axis.py:186 +msgid "Activate first axis" +msgstr "1. tengely beindítva" + +#: src/emc/usr_intf/axis/scripts/axis.py:187 +msgid "Activate second axis" +msgstr "2. tengely beindítva" + +#: src/emc/usr_intf/axis/scripts/axis.py:188 +msgid "Activate third axis" +msgstr "3. tengely beindítva" + +#: src/emc/usr_intf/axis/scripts/axis.py:189 +msgid "Activate fourth axis" +msgstr "4. tengely beindítva" + +#: src/emc/usr_intf/axis/scripts/axis.py:190 +#, fuzzy +msgid "Activate fifth through ninth axis" +msgstr "5. tengely beindítva" + +#: src/emc/usr_intf/axis/scripts/axis.py:191 +msgid "Set Feed Override from 0% to 100%" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:192 +msgid ", and ." +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:192 +#, fuzzy +msgid "Select jog speed" +msgstr "Lépes növelése" + +#: src/emc/usr_intf/axis/scripts/axis.py:193 +msgid "< and >" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:193 +msgid "Select angular jog speed" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:194 +msgid "I, Shift-I" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:194 share/axis/tcl/axis.tcl:2481 +msgid "Select jog increment" +msgstr "Lépes növelése" + +#: src/emc/usr_intf/axis/scripts/axis.py:195 +msgid "Continuous jog" +msgstr "Folytonos lépés" + +#: src/emc/usr_intf/axis/scripts/axis.py:196 +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Home" +msgstr "Nullpont" + +#: src/emc/usr_intf/axis/scripts/axis.py:196 +msgid "Send active axis home" +msgstr "Aktuális tengely kiinduló pozicióba" + +#: src/emc/usr_intf/axis/scripts/axis.py:197 +#, fuzzy +msgid "Ctrl-Home" +msgstr "Nullpont" + +#: src/emc/usr_intf/axis/scripts/axis.py:197 +msgid "Home all axes" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:198 +msgid "Shift-Home" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:198 +#, fuzzy +msgid "Zero G54 offset for active axis" +msgstr "A G54 offszet beállítása az aktiv tengelyen" + +#: src/emc/usr_intf/axis/scripts/axis.py:199 +msgid "End" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:199 +msgid "Set G54 offset for active axis" +msgstr "A G54 offszet beállítása az aktiv tengelyen" + +#: src/emc/usr_intf/axis/scripts/axis.py:200 +#, fuzzy +msgid "Jog active axis" +msgstr "3. tengely léptetés" + +#: src/emc/usr_intf/axis/scripts/axis.py:203 +msgid "Left, Right" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:203 +msgid "Jog first axis" +msgstr "1. tengely léptetés" + +#: src/emc/usr_intf/axis/scripts/axis.py:204 +msgid "Up, Down" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:204 +msgid "Jog second axis" +msgstr "2. tengely léptetés" + +#: src/emc/usr_intf/axis/scripts/axis.py:205 +msgid "Pg Up, Pg Dn" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:205 +msgid "Jog third axis" +msgstr "3. tengely léptetés" + +#: src/emc/usr_intf/axis/scripts/axis.py:206 +msgid "Shift+above jogs" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:206 +msgid "Jog at traverse speed" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:207 +msgid "Jog fourth axis" +msgstr "4. tengely léptetés" + +#: src/emc/usr_intf/axis/scripts/axis.py:210 +msgid "Toggle between Drag and Rotate mode" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:211 +msgid "Left Button" +msgstr "Bal egér gomb" + +#: src/emc/usr_intf/axis/scripts/axis.py:211 +#, fuzzy +msgid "Pan, rotate or select line" +msgstr "Nézet mozgatás vagy sor kijelölés" + +#: src/emc/usr_intf/axis/scripts/axis.py:212 +msgid "Shift+Left Button" +msgstr "Shift+Bal egér gomb" + +#: src/emc/usr_intf/axis/scripts/axis.py:212 +#, fuzzy +msgid "Rotate or pan" +msgstr "Forgatott felül nézet" + +#: src/emc/usr_intf/axis/scripts/axis.py:213 +msgid "Right Button" +msgstr "Jobb egérgomb" + +#: src/emc/usr_intf/axis/scripts/axis.py:213 +#: src/emc/usr_intf/axis/scripts/axis.py:215 +#: src/emc/usr_intf/axis/scripts/axis.py:216 +msgid "Zoom view" +msgstr "Nagyitás" + +#: src/emc/usr_intf/axis/scripts/axis.py:214 +msgid "Wheel Button" +msgstr "Egér görgő gomb" + +#: src/emc/usr_intf/axis/scripts/axis.py:214 +msgid "Rotate view" +msgstr "Forgatott nézet" + +#: src/emc/usr_intf/axis/scripts/axis.py:215 +msgid "Rotate Wheel" +msgstr "Egér görgető kerék" + +#: src/emc/usr_intf/axis/scripts/axis.py:216 +#, fuzzy +msgid "Control+Left Button" +msgstr "Bal egér gomb" + +#: src/emc/usr_intf/axis/scripts/axis.py:219 +msgid "Manual control" +msgstr "Kézi vezérlés" + +#: src/emc/usr_intf/axis/scripts/axis.py:220 +msgid "Code entry (MDI)" +msgstr "Kód mező (MDI)" + +#: src/emc/usr_intf/axis/scripts/axis.py:221 +msgid "Control-M" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:221 +msgid "Clear MDI history" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:222 +msgid "Control-H" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:222 +msgid "Copy selected MDI history elements" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:223 +msgid "to clipboard" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:224 +msgid "Control-Shift-H" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:224 +msgid "Paste clipboard to MDI history" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:225 share/axis/tcl/axis.tcl:1183 +#: src/emc/usr_intf/touchy/touchy.glade:508 +msgid "Override Limits" +msgstr "Határok módosítása" + +#: src/emc/usr_intf/axis/scripts/axis.py:227 +msgid "Open program" +msgstr "Program betöltés" + +#: src/emc/usr_intf/axis/scripts/axis.py:228 +msgid "Control-R" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:228 +#, fuzzy +msgid "Reload program" +msgstr "Program indítás" + +#: src/emc/usr_intf/axis/scripts/axis.py:229 +msgid "Control-S" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:229 +msgid "Save g-code as" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:230 +msgid "Run program" +msgstr "Program indítás" + +#: src/emc/usr_intf/axis/scripts/axis.py:231 +msgid "Step program" +msgstr "Program léptetés" + +#: src/emc/usr_intf/axis/scripts/axis.py:232 +msgid "Pause program" +msgstr "Program szünet" + +#: src/emc/usr_intf/axis/scripts/axis.py:233 +msgid "Resume program" +msgstr "Program folytatása" + +#: src/emc/usr_intf/axis/scripts/axis.py:234 +#, fuzzy +msgid "Stop running program, or" +msgstr "Program megszakítása" + +#: src/emc/usr_intf/axis/scripts/axis.py:235 +msgid "stop loading program preview" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:237 +msgid "Toggle mist" +msgstr "Elszívó Ki/Be" + +#: src/emc/usr_intf/axis/scripts/axis.py:238 +msgid "Toggle flood" +msgstr "Hűtés Ki/Be" + +#: src/emc/usr_intf/axis/scripts/axis.py:239 +msgid "Spindle brake off" +msgstr "Fő orsó fék kikapcsolva" + +#: src/emc/usr_intf/axis/scripts/axis.py:240 +msgid "Shift-B" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:240 +msgid "Spindle brake on" +msgstr "Fő orsó fék bekapcsolva" + +#: src/emc/usr_intf/axis/scripts/axis.py:241 +msgid "Turn spindle clockwise" +msgstr "Fő orsó jobbra fordul" + +#: src/emc/usr_intf/axis/scripts/axis.py:242 +msgid "Turn spindle counterclockwise" +msgstr "Fő orsó balra fordul" + +#: src/emc/usr_intf/axis/scripts/axis.py:243 +msgid "Turn spindle more slowly" +msgstr "Fő orsó lassítás" + +#: src/emc/usr_intf/axis/scripts/axis.py:244 +msgid "Turn spindle more quickly" +msgstr "Fő orsó gyorsítás" + +#: src/emc/usr_intf/axis/scripts/axis.py:246 +msgid "Control-K" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:246 +msgid "Clear live plot" +msgstr "Grafikus szimuláció törlése" + +#: src/emc/usr_intf/axis/scripts/axis.py:247 +msgid "Cycle among preset views" +msgstr "Ciklus előre beállított nézetek között" + +#: src/emc/usr_intf/axis/scripts/axis.py:248 +#, fuzzy +msgid "Cycle among preview, DRO, and user tabs" +msgstr "Ciklus előre beállított nézetek között" + +#: src/emc/usr_intf/axis/scripts/axis.py:250 +msgid "Ctrl-Space" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:250 +msgid "Clear notifications" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:850 +#, python-format +msgid "Unknown tool %d" +msgstr "Szerszám %d ismeretlen" + +#: src/emc/usr_intf/axis/scripts/axis.py:852 +msgid "No tool" +msgstr "Nincs szerszám" + +#: src/emc/usr_intf/axis/scripts/axis.py:854 +#, fuzzy, python-format +msgid "Tool %(tool)d, offset %(zo)g, diameter %(dia)g" +msgstr "Szerszám %d, eltolás %g, atmerő %g" + +#: src/emc/usr_intf/axis/scripts/axis.py:856 +#, python-format +msgid "Tool %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1031 +msgid "Filtering..." +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1102 +#, fuzzy +msgid "Filter failed" +msgstr "Program_szűrő %r sikertelen" + +#: src/emc/usr_intf/axis/scripts/axis.py:1103 +#, python-format +msgid "" +"The program %(program)r exited with code %(code)d. Any error messages it " +"produced are shown below:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1171 +#, python-format +msgid "G-Code error in %s" +msgstr "G-kód hiba %s -ben" + +#: src/emc/usr_intf/axis/scripts/axis.py:1172 +#, fuzzy, python-format +msgid "" +"Near line %(seq)d of %(f)s:\n" +"%(error_str)s" +msgstr "" +"Közel a %d sorhoz, %s -ból:\n" +"%s" + +#: src/emc/usr_intf/axis/scripts/axis.py:1341 +#: src/emc/usr_intf/axis/scripts/axis.py:2942 share/axis/tcl/axis.tcl:1162 +#: share/axis/tcl/axis.tcl:1164 share/axis/tcl/axis.tcl:2269 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:895 +msgid "Continuous" +msgstr "Folytonos" + +#: src/emc/usr_intf/axis/scripts/axis.py:1452 +msgid "Ok" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1599 +msgid "T Tool Table" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1610 +#: src/emc/usr_intf/axis/scripts/axis.py:1859 +#: src/emc/usr_intf/axis/scripts/axis.py:2387 +#: src/emc/usr_intf/stepconf/stepconf.py:1328 +#: src/emc/usr_intf/stepconf/pages.py:631 +msgid "in" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1613 +msgid " radius" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1615 +msgid " diameter" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1616 +msgid "°" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1625 +msgid "Coordinate System:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1641 +msgid "fixture" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1642 +msgid "workpiece" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1658 +msgid "Name:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1658 +#, fuzzy +msgid "Size:" +msgstr "Fő orsó:" + +#: src/emc/usr_intf/axis/scripts/axis.py:1659 +msgid "Tool order:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1659 +msgid "Rapid distance:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1660 +msgid "Feed distance:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1660 +msgid "Total distance:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1661 +msgid "Run time:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1661 +msgid "X bounds:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1662 +msgid "Y bounds:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1662 +msgid "Z bounds:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1663 +msgid "A bounds:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1663 +msgid "B bounds:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1664 +msgid "C bounds:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1688 +#, python-format +msgid "Program exceeds machine minimum on axis %s" +msgstr "A program meghaladja a gép minimumat: %s tengelyen" + +#: src/emc/usr_intf/axis/scripts/axis.py:1691 +#, python-format +msgid "Program exceeds machine maximum on axis %s" +msgstr "A program meghaladja a gép maximumat: %s tengelyen" + +#: src/emc/usr_intf/axis/scripts/axis.py:1696 +msgid "Program exceeds machine limits" +msgstr "A program túllép a gép korlátain" + +#: src/emc/usr_intf/axis/scripts/axis.py:1699 +msgid "Run Anyway" +msgstr "Program folytatás" + +#: src/emc/usr_intf/axis/scripts/axis.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1581 +msgid "No file loaded" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1845 +#, python-format +msgid "generated from %s" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1851 +#, python-format +msgid "" +"%(size)s bytes\n" +"%(lines)s gcode lines" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1877 +#, python-format +msgid "%.1f minutes" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1879 +#, fuzzy, python-format +msgid "%d seconds" +msgstr "2. tengely léptetés" + +#: src/emc/usr_intf/axis/scripts/axis.py:1887 +#, python-format +msgid "%(a)f to %(b)f = %(diff)f %(units)s" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1888 +#, fuzzy +msgid "G-Code Properties" +msgstr "G-kód hiba %s -ben" + +#: src/emc/usr_intf/axis/scripts/axis.py:2021 +msgid "All machinable files" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2022 +#: src/emc/usr_intf/axis/scripts/axis.py:2659 +msgid "rs274ngc files" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2037 +msgid "axis cannot accept remote command while running" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2098 +msgid "File not Writable:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2099 +msgid "" +"This file is not writable\n" +"You can Edit-readonly\n" +"\n" +"or\n" +"\n" +"Save it to your own directory\n" +"then open that saved, writable file" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2106 +msgid "Edit-readonly" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2440 +msgid "Axis is already homed, are you sure you want to re-home?" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2453 +msgid "This axis is already homed, are you sure you want to re-home?" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2493 share/axis/tcl/axis.tcl:1178 +msgid "Touch Off" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2494 +#, python-format +msgid "Enter %s coordinate relative to %%s:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2671 +msgid "Error saving file" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:3077 +#: src/emc/usr_intf/touchy/touchy.glade:577 +#: src/emc/usr_intf/gscreen/gscreen.glade:2933 +#, fuzzy +msgid "Home All" +msgstr "Nullpont" + +#: src/emc/usr_intf/axis/scripts/axis.py:3079 +msgid "Home all axes [Ctrl-Home]" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:3082 +msgid "Home All Axes" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:3089 +msgid "Unhome All Axes" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:3113 +#, python-format +msgid "Home Axis _%s" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:3115 +#, python-format +msgid "Unhome Axis _%s" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:3282 +msgid "Run from here" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:3598 +msgid "Error in ~/.axisrc" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:102 +#, fuzzy +msgid "Machinekit Status" +msgstr "Gép" + +#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:118 +#, fuzzy +msgid "Copy All" +msgstr "Máso_lás" + +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 +#, python-format +msgid "Insert tool %d and click continue when ready" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:39 +msgid "Remove the tool and click continue when ready" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 +#: src/emc/usr_intf/touchy/mdi.py:49 src/emc/usr_intf/gscreen/mdi.py:49 +msgid "Tool change" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 +#, fuzzy +msgid "Continue" +msgstr "Folytonos" + +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:64 +msgid "AXIS Manual Toolchanger" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:68 +msgid "" +"This window is part of the AXIS manual toolchanger. It is safe to close or " +"iconify this window, or it will close automatically after a few seconds." +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:507 +#, python-format +msgid "%s: Image to gcode" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:508 +msgid "Image to gcode" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:518 +#, python-format +msgid "" +"Image size: %(w)d x %(h)d pixels\n" +"Minimum pixel value: %(min)d\n" +"Maximum pixel value: %(max)d" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 +msgid "G20 (in)" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 +msgid "G21 (mm)" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 +#: src/emc/usr_intf/touchy/emc_interface.py:417 +msgid "None" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +msgid "White" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +#, fuzzy +msgid "Black" +msgstr "Fék" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Rows" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Columns" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Rows then Columns" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Columns then Rows" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +#, fuzzy +msgid "Positive" +msgstr "Pozíció:" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +#, fuzzy +msgid "Negative" +msgstr "Relatív" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Alternating" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Up Milling" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Down Milling" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "Ball End" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "Flat End" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "30 Degree" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "45 Degree" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "60 Degree" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 +msgid "Secondary" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 +msgid "Full" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:654 +msgid "Invert Image" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:655 +msgid "Normalize Image" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:656 +msgid "Extend Image Border" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:657 +msgid "Pixel Size (Units)" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:658 +msgid "Depth (units)" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:659 +msgid "Tolerance (units)" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:660 +msgid "Stepover (pixels)" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:661 +msgid "Tool Diameter (units)" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:662 +msgid "Tool Type" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:663 +msgid "Feed Rate (units per minute)" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:664 +msgid "Plunge Feed Rate (units per minute)" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:666 +msgid "Safety Height (units)" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:667 +msgid "Scan Pattern" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:668 +msgid "Scan Direction" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:669 +msgid "Lace Bounding" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:670 +msgid "Contact Angle (degrees)" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:671 +msgid "Spindle Speed (RPM)" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:672 +msgid "Roughing offset (units, 0=no roughing)" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:673 +msgid "Roughing depth per pass (units)" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:740 +msgid "image-to-gcode: User pressed cancel" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:753 +msgid "Depth images" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:22 +msgid "Machinekit Debug Level" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:23 +msgid "debuglevel" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:36 +msgid "Configuration *" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:37 +msgid "Version Numbers *" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:38 +msgid "NML *" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:39 +msgid "RCS *" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:40 +msgid "Task Issue" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:41 +msgid "Motion Time" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:43 +msgid "Interpreter List" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:47 +#, python-format +msgid "" +"Inifile setting for this debug level:\n" +"[EMC]DEBUG=0x%08x" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:81 +msgid " * This option can only be enabled in the inifile" +msgstr "" + +#: share/axis/tcl/axis.tcl:52 +#, fuzzy +msgid "_Open..." +msgstr "_Megnyitás" + +#: share/axis/tcl/axis.tcl:56 +msgid "Recent _Files" +msgstr "" + +#: share/axis/tcl/axis.tcl:60 +#, fuzzy +msgid "_Edit..." +msgstr "Sz_erkesztés" + +#: share/axis/tcl/axis.tcl:63 +#, fuzzy +msgid "Ctrl-R" +msgstr "Nullpont" + +#: share/axis/tcl/axis.tcl:65 +msgid "_Reload" +msgstr "Ú_jratöltés" + +#: share/axis/tcl/axis.tcl:68 +#, fuzzy +msgid "Ctrl-S" +msgstr "Nullpont" + +#: share/axis/tcl/axis.tcl:70 +msgid "_Save gcode as..." +msgstr "" + +#: share/axis/tcl/axis.tcl:74 +#, fuzzy +msgid "_Properties..." +msgstr "G-kód hiba %s -ben" + +#: share/axis/tcl/axis.tcl:80 +msgid "Edit _tool table..." +msgstr "" + +#: share/axis/tcl/axis.tcl:84 +msgid "Reload tool ta_ble" +msgstr "" + +#: share/axis/tcl/axis.tcl:90 +msgid "_Ladder Editor..." +msgstr "" + +#: share/axis/tcl/axis.tcl:102 +msgid "Toggle _Emergency Stop" +msgstr "Vészm_egállítás Ki/Be" + +#: share/axis/tcl/axis.tcl:107 +msgid "Toggle _Machine Power" +msgstr "_Megmunkáló motor Ki/Be" + +#: share/axis/tcl/axis.tcl:114 +msgid "_Run program" +msgstr "P_rogram indítás" + +#: share/axis/tcl/axis.tcl:118 +#, fuzzy +msgid "Ru_n from selected line" +msgstr "Nézet mozgatás vagy sor kijelölés" + +#: share/axis/tcl/axis.tcl:123 +#, fuzzy +msgid "S_tep" +msgstr "Lépé_s" + +#: share/axis/tcl/axis.tcl:128 +#, fuzzy +msgid "_Pause" +msgstr "Szü_net" + +#: share/axis/tcl/axis.tcl:133 +#, fuzzy +msgid "Re_sume" +msgstr "Folytatás" + +#: share/axis/tcl/axis.tcl:143 +msgid "Stop at M_1" +msgstr "" + +#: share/axis/tcl/axis.tcl:148 +msgid "Skip lines with '_/'" +msgstr "" + +#: share/axis/tcl/axis.tcl:153 +#, fuzzy +msgid "Ctrl-M" +msgstr "Nullpont" + +#: share/axis/tcl/axis.tcl:155 +msgid "Clear MDI h_istory" +msgstr "" + +#: share/axis/tcl/axis.tcl:157 +#, fuzzy +msgid "Ctrl-H" +msgstr "Nullpont" + +#: share/axis/tcl/axis.tcl:159 +msgid "Copy from MDI hist_ory" +msgstr "" + +#: share/axis/tcl/axis.tcl:161 +msgid "Ctrl-Shift-H" +msgstr "" + +#: share/axis/tcl/axis.tcl:163 +msgid "Paste to MDI histor_y" +msgstr "" + +#: share/axis/tcl/axis.tcl:169 +msgid "_Calibration" +msgstr "" + +#: share/axis/tcl/axis.tcl:173 +#, fuzzy +msgid "Show _Hal Configuration" +msgstr "Fő orsó fék bekapcsolva" + +#: share/axis/tcl/axis.tcl:177 +msgid "H_al Meter" +msgstr "" + +#: share/axis/tcl/axis.tcl:181 +msgid "Ha_l Scope" +msgstr "" + +#: share/axis/tcl/axis.tcl:185 +#, fuzzy +msgid "Sho_w Machinekit Status" +msgstr "Mutasd az _EMC állapotát" + +#: share/axis/tcl/axis.tcl:189 +msgid "Set _Debug Level" +msgstr "" + +#: share/axis/tcl/axis.tcl:195 +msgid "Homin_g" +msgstr "" + +#: share/axis/tcl/axis.tcl:199 +msgid "_Unhoming" +msgstr "" + +#: share/axis/tcl/axis.tcl:203 +msgid "_Zero coordinate system" +msgstr "" + +#: share/axis/tcl/axis.tcl:207 +msgid "P1 G5_4" +msgstr "" + +#: share/axis/tcl/axis.tcl:211 +msgid "P2 G5_5" +msgstr "" + +#: share/axis/tcl/axis.tcl:215 +msgid "P3 G5_6" +msgstr "" + +#: share/axis/tcl/axis.tcl:219 +msgid "P4 G5_7" +msgstr "" + +#: share/axis/tcl/axis.tcl:223 +msgid "P5 G5_8" +msgstr "" + +#: share/axis/tcl/axis.tcl:227 +msgid "P6 G5_9" +msgstr "" + +#: share/axis/tcl/axis.tcl:231 +msgid "P7 G59._1" +msgstr "" + +#: share/axis/tcl/axis.tcl:235 +msgid "P8 G59._2" +msgstr "" + +#: share/axis/tcl/axis.tcl:239 +msgid "P9 G59._3" +msgstr "" + +#: share/axis/tcl/axis.tcl:243 +msgid "_G92" +msgstr "" + +#: share/axis/tcl/axis.tcl:251 +msgid "Tool touch off to wor_kpiece" +msgstr "" + +#: share/axis/tcl/axis.tcl:257 +msgid "Tool touch off to _fixture" +msgstr "" + +#: share/axis/tcl/axis.tcl:265 +msgid "_Top view" +msgstr "_Felül nézet" + +#: share/axis/tcl/axis.tcl:272 +msgid "_Rotated Top view" +msgstr "Fo_rgatott felül nézet" + +#: share/axis/tcl/axis.tcl:279 +msgid "_Side view" +msgstr "_Oldal nézet" + +#: share/axis/tcl/axis.tcl:286 +msgid "_Front view" +msgstr "_Elől nézet" + +#: share/axis/tcl/axis.tcl:293 +msgid "_Perspective view" +msgstr "_Perspektíva nézet" + +#: share/axis/tcl/axis.tcl:302 +msgid "Display _Inches" +msgstr "Mértékegység: _Inch" + +#: share/axis/tcl/axis.tcl:309 +msgid "Display _MM" +msgstr "Mértékegység: _mm" + +#: share/axis/tcl/axis.tcl:316 +msgid "S_how program" +msgstr "Muta_sd a programot" + +#: share/axis/tcl/axis.tcl:321 +#, fuzzy +msgid "Show program r_apids" +msgstr "Muta_sd a programot" + +#: share/axis/tcl/axis.tcl:326 +#, fuzzy +msgid "Alpha-_blend program" +msgstr "Program betöltés" + +#: share/axis/tcl/axis.tcl:331 +msgid "Sho_w live plot" +msgstr "Mutas_d a grafikus szimulációt" + +#: share/axis/tcl/axis.tcl:336 +msgid "Show too_l" +msgstr "Mu_tasd a szerszámot" + +#: share/axis/tcl/axis.tcl:341 +#, fuzzy +msgid "Show e_xtents" +msgstr "Mutasd a _határokat" + +#: share/axis/tcl/axis.tcl:345 +msgid "_Grid" +msgstr "" + +#: share/axis/tcl/axis.tcl:350 +#, fuzzy +msgid "Show o_ffsets" +msgstr "Mutasd a _határokat" + +#: share/axis/tcl/axis.tcl:355 +#, fuzzy +msgid "Sh_ow machine limits" +msgstr "A program túllép a gép korlátain" + +#: share/axis/tcl/axis.tcl:360 +#, fuzzy +msgid "Show v_elocity" +msgstr "Mutas_d a grafikus szimulációt" + +#: share/axis/tcl/axis.tcl:365 +msgid "Show _distance to go" +msgstr "" + +#: share/axis/tcl/axis.tcl:370 +msgid "Large coordinate fo_nt" +msgstr "" + +#: share/axis/tcl/axis.tcl:373 +#, fuzzy +msgid "Ctrl-K" +msgstr "Nullpont" + +#: share/axis/tcl/axis.tcl:375 +#, fuzzy +msgid "_Clear live plot" +msgstr "Grafikus szimuláció törlése" + +#: share/axis/tcl/axis.tcl:384 +#, fuzzy +msgid "Show commanded position" +msgstr "Mutasd a programozott pozíciót" + +#: share/axis/tcl/axis.tcl:391 +#, fuzzy +msgid "Show actual position" +msgstr "Mutasd az aktuális pozíciót" + +#: share/axis/tcl/axis.tcl:400 +#, fuzzy +msgid "Show machine position" +msgstr "Mutasd a gép pozícióját" + +#: share/axis/tcl/axis.tcl:407 +#, fuzzy +msgid "Show relative position" +msgstr "Mutasd a relatív pozíciót" + +#: share/axis/tcl/axis.tcl:416 +msgid "Joint mode" +msgstr "" + +#: share/axis/tcl/axis.tcl:423 +msgid "World mode" +msgstr "" + +#: share/axis/tcl/axis.tcl:431 +msgid "_Off" +msgstr "" + +#: share/axis/tcl/axis.tcl:437 +msgid "_Custom" +msgstr "" + +#: share/axis/tcl/axis.tcl:443 +msgid "User_0" +msgstr "" + +#: share/axis/tcl/axis.tcl:447 +msgid "User_1" +msgstr "" + +#: share/axis/tcl/axis.tcl:451 +msgid "User_2" +msgstr "" + +#: share/axis/tcl/axis.tcl:455 +msgid "User_3" +msgstr "" + +#: share/axis/tcl/axis.tcl:459 +msgid "User_4" +msgstr "" + +#: share/axis/tcl/axis.tcl:463 +msgid "User_5" +msgstr "" + +#: share/axis/tcl/axis.tcl:467 +msgid "User_6" +msgstr "" + +#: share/axis/tcl/axis.tcl:471 +msgid "User_7" +msgstr "" + +#: share/axis/tcl/axis.tcl:475 +msgid "User_8" +msgstr "" + +#: share/axis/tcl/axis.tcl:479 +msgid "User_9" +msgstr "" + +#: share/axis/tcl/axis.tcl:491 +msgid "_About AXIS" +msgstr "_AXIS névjegye" + +#: share/axis/tcl/axis.tcl:495 +msgid "Quick _Reference" +msgstr "Gyors _referencia" + +#: share/axis/tcl/axis.tcl:505 +#, fuzzy +msgid "_Machine" +msgstr "Gép" + +#: share/axis/tcl/axis.tcl:509 +#, fuzzy +msgid "_View" +msgstr "_Nézet" + +#: share/axis/tcl/axis.tcl:513 +msgid "_User" +msgstr "" + +#: share/axis/tcl/axis.tcl:526 +msgid "Toggle Emergency Stop [F1]" +msgstr "Vészmegallítás Ki/Be [F1]" + +#: share/axis/tcl/axis.tcl:535 +#, fuzzy +msgid "Toggle Machine power [F2]" +msgstr "Gép Ki/Be [F2]" + +#: share/axis/tcl/axis.tcl:546 +msgid "Open G-Code file [O]" +msgstr "G-kód megnyitás [O]" + +#: share/axis/tcl/axis.tcl:554 +msgid "Reopen current file [Control-R]" +msgstr "Újratöltés [Control-R]" + +#: share/axis/tcl/axis.tcl:564 +msgid "Begin executing current file [R]" +msgstr "Program indítás [R]" + +#: share/axis/tcl/axis.tcl:572 +msgid "Execute next line [T]" +msgstr "Következő sor végrehajtása [T]" + +#: share/axis/tcl/axis.tcl:580 +msgid "Pause [P] / resume [S] execution" +msgstr "Program szünet [P]/folytatás [S]" + +#: share/axis/tcl/axis.tcl:588 +msgid "Stop program execution [ESC]" +msgstr "Program leállítása [ESC]" + +#: share/axis/tcl/axis.tcl:598 +msgid "Toggle skip lines with '/' [Alt-M /]" +msgstr "" + +#: share/axis/tcl/axis.tcl:605 +msgid "Toggle optional pause [Alt-M 1]" +msgstr "" + +#: share/axis/tcl/axis.tcl:614 src/emc/usr_intf/gmoccapy/gmoccapy.glade:549 +#, fuzzy +msgid "Zoom in" +msgstr "Közelítés [+]" + +#: share/axis/tcl/axis.tcl:622 src/emc/usr_intf/gmoccapy/gmoccapy.glade:567 +#, fuzzy +msgid "Zoom out" +msgstr "Távolítás [-]" + +#: share/axis/tcl/axis.tcl:630 +msgid "Top view" +msgstr "Felül nézet" + +#: share/axis/tcl/axis.tcl:638 +#, fuzzy +msgid "Rotated top view" +msgstr "Fo_rgatott felül nézet" + +#: share/axis/tcl/axis.tcl:646 +msgid "Side view" +msgstr "Oldal nézet" + +#: share/axis/tcl/axis.tcl:654 +#, fuzzy +msgid "Front view" +msgstr "_Elől nézet" + +#: share/axis/tcl/axis.tcl:662 +msgid "Perspective view" +msgstr "Perspektíva nézet" + +#: share/axis/tcl/axis.tcl:670 +msgid "Toggle between Drag and Rotate Mode [D]" +msgstr "" + +#: share/axis/tcl/axis.tcl:685 +msgid "Clear live plot [Ctrl-K]" +msgstr "Grafikus szimuláció törlése [Ctrl-K]" + +#: share/axis/tcl/axis.tcl:836 +msgid "Manual Control [F3]" +msgstr "Kézi vezérlés [F3]" + +#: share/axis/tcl/axis.tcl:837 +msgid "MDI [F5]" +msgstr "" + +#: share/axis/tcl/axis.tcl:851 share/axis/tcl/axis.tcl:2158 +#: share/axis/tcl/axis.tcl:2328 +#, fuzzy +msgid "Axis:" +msgstr "Tengely:" + +#: share/axis/tcl/axis.tcl:1172 src/emc/usr_intf/gscreen/gscreen.glade:2944 +#, fuzzy +msgid "Home Axis" +msgstr "Nullpont" + +#: share/axis/tcl/axis.tcl:1246 +#, fuzzy +msgid "Spindle:" +msgstr "Fő orsó:" + +#: share/axis/tcl/axis.tcl:1293 src/emc/usr_intf/touchy/touchy.glade:946 +#: src/emc/usr_intf/stepconf/main_page.glade:406 +#: src/emc/usr_intf/gscreen/gscreen.glade:4067 +msgid "-" +msgstr "-" + +#: share/axis/tcl/axis.tcl:1307 src/emc/usr_intf/stepconf/main_page.glade:403 +#: src/emc/usr_intf/gscreen/gscreen.glade:4056 +msgid "+" +msgstr "+" + +#: share/axis/tcl/axis.tcl:1312 +#, fuzzy +msgid "Brake" +msgstr "Fék" + +#: share/axis/tcl/axis.tcl:1359 +#, fuzzy +msgid "Coolant:" +msgstr "Hűtés:" + +#: share/axis/tcl/axis.tcl:1364 +#, fuzzy +msgid "Mist" +msgstr "Elszívás" + +#: share/axis/tcl/axis.tcl:1369 +#, fuzzy +msgid "Flood" +msgstr "Folyadék" + +#: share/axis/tcl/axis.tcl:1441 +msgid "History:" +msgstr "Előzmények:" + +#: share/axis/tcl/axis.tcl:1464 +#, fuzzy +msgid "MDI Command:" +msgstr "Irányított" + +#: share/axis/tcl/axis.tcl:1473 +msgid "Go" +msgstr "Indulj" + +#: share/axis/tcl/axis.tcl:1479 +#, fuzzy +msgid "Active G-Codes:" +msgstr "Aktuális G-kódok:" + +#: share/axis/tcl/axis.tcl:1557 src/emc/usr_intf/gmoccapy/gmoccapy.glade:771 +#, fuzzy +msgid "Preview" +msgstr "Oldal nézet" + +#: share/axis/tcl/axis.tcl:1558 +msgid "DRO" +msgstr "" + +#: share/axis/tcl/axis.tcl:1645 share/axis/tcl/axis.tcl:1658 +msgid "Jog Speed:" +msgstr "" + +#: share/axis/tcl/axis.tcl:1670 +msgid "Max Velocity:" +msgstr "" + +#: share/axis/tcl/axis.tcl:1699 +#, fuzzy +msgid "Spindle Override:" +msgstr "Túlhajtás (%):" + +#: share/axis/tcl/axis.tcl:1701 share/axis/tcl/axis.tcl:1741 +#: share/axis/tcl/axis.tcl:1779 src/emc/usr_intf/pncconf/pncconf.glade:2834 +#: src/emc/usr_intf/pncconf/pncconf.glade:2845 +#: src/emc/usr_intf/pncconf/pncconf.glade:2949 +#: src/emc/usr_intf/pncconf/pncconf.glade:2962 +#: src/emc/usr_intf/pncconf/pncconf.glade:2975 +#: src/emc/usr_intf/pncconf/pncconf.glade:2988 +#: src/emc/usr_intf/pncconf/pncconf.glade:3001 +#: src/emc/usr_intf/pncconf/pncconf.glade:3014 +#: src/emc/usr_intf/pncconf/pncconf.glade:3127 +#: src/emc/usr_intf/pncconf/pncconf.glade:3140 +#: src/emc/usr_intf/pncconf/pncconf.glade:3153 +#: src/emc/usr_intf/pncconf/pncconf.glade:3166 +#: src/emc/usr_intf/pncconf/pncconf.glade:3179 +#: src/emc/usr_intf/pncconf/pncconf.glade:3192 +#: src/emc/usr_intf/pncconf/pncconf.glade:3205 +#: src/emc/usr_intf/pncconf/pncconf.glade:3218 +#: src/emc/usr_intf/pncconf/pncconf.glade:3715 +#: src/emc/usr_intf/pncconf/pncconf.glade:3726 +#: src/emc/usr_intf/pncconf/pncconf.glade:3830 +#: src/emc/usr_intf/pncconf/pncconf.glade:3843 +#: src/emc/usr_intf/pncconf/pncconf.glade:3856 +#: src/emc/usr_intf/pncconf/pncconf.glade:3869 +#: src/emc/usr_intf/pncconf/pncconf.glade:3882 +#: src/emc/usr_intf/pncconf/pncconf.glade:3895 +#: src/emc/usr_intf/pncconf/pncconf.glade:4008 +#: src/emc/usr_intf/pncconf/pncconf.glade:4021 +#: src/emc/usr_intf/pncconf/pncconf.glade:4034 +#: src/emc/usr_intf/pncconf/pncconf.glade:4047 +#: src/emc/usr_intf/pncconf/pncconf.glade:4060 +#: src/emc/usr_intf/pncconf/pncconf.glade:4073 +#: src/emc/usr_intf/pncconf/pncconf.glade:4086 +#: src/emc/usr_intf/pncconf/pncconf.glade:4099 +#: src/emc/usr_intf/pncconf/pncconf.glade:4596 +#: src/emc/usr_intf/pncconf/pncconf.glade:4607 +#: src/emc/usr_intf/pncconf/pncconf.glade:4711 +#: src/emc/usr_intf/pncconf/pncconf.glade:4724 +#: src/emc/usr_intf/pncconf/pncconf.glade:4737 +#: src/emc/usr_intf/pncconf/pncconf.glade:4750 +#: src/emc/usr_intf/pncconf/pncconf.glade:4763 +#: src/emc/usr_intf/pncconf/pncconf.glade:4776 +#: src/emc/usr_intf/pncconf/pncconf.glade:4889 +#: src/emc/usr_intf/pncconf/pncconf.glade:4902 +#: src/emc/usr_intf/pncconf/pncconf.glade:4915 +#: src/emc/usr_intf/pncconf/pncconf.glade:4928 +#: src/emc/usr_intf/pncconf/pncconf.glade:4941 +#: src/emc/usr_intf/pncconf/pncconf.glade:4954 +#: src/emc/usr_intf/pncconf/pncconf.glade:4967 +#: src/emc/usr_intf/pncconf/pncconf.glade:4980 +#: src/emc/usr_intf/pncconf/pncconf.glade:5631 +#: src/emc/usr_intf/pncconf/pncconf.glade:5643 +#: src/emc/usr_intf/pncconf/pncconf.glade:5690 +msgid "%" +msgstr "" + +#: share/axis/tcl/axis.tcl:1777 +#, fuzzy +msgid "Rapid Override:" +msgstr "Túlhajtás (%):" + +#: share/axis/tcl/axis.tcl:1819 +#, fuzzy +msgid "" +"Machinekit/AXIS version $version\n" +"\n" +"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff " +"Epler and Chris Radek.\n" +"\n" +"This is free software, and you are welcome to redistribute it under certain " +"conditions. See the file COPYING, included with Machinekit.\n" +"\n" +"Visit the Machinekit web site: " +msgstr "" +"LinuxCNC/AXIS verzió $version\n" +"\n" +"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff " +"Epler es Chris Radek.\n" +"\n" +"Ez egy ingyenes szoftver. Szabadon továbbadható az AXIS csomag COPYING " +"feltételei szerint.\n" +"\n" +"Szívesen látunk az LinuxCNC web oldalán: " + +#: share/axis/tcl/axis.tcl:1847 +#, fuzzy +msgid "About AXIS" +msgstr "_AXIS névjegye" + +#: share/axis/tcl/axis.tcl:1876 +msgid "AXIS Quick Reference" +msgstr "AXIS gyors referencia" + +#: share/axis/tcl/axis.tcl:2017 +msgid "AXIS with MachineKit $::version on $::machine" +msgstr "" + +#: share/axis/tcl/axis.tcl:2019 +#, fuzzy +msgid "(no file)" +msgstr "AXIS (Nincs fájl)" + +#: share/axis/tcl/axis.tcl:2091 share/axis/tcl/axis.tcl:2096 +#, fuzzy +msgid "Position:" +msgstr "Pozíció:" + +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/gscreen/gscreen.py:3516 +#, fuzzy +msgid "Machine" +msgstr "Gép" + +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/touchy/touchy.glade:155 +#, fuzzy +msgid "Relative" +msgstr "Relatív" + +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3329 +#, fuzzy +msgid "Actual" +msgstr "Aktuális" + +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3318 +#, fuzzy +msgid "Commanded" +msgstr "Irányított" + +#: share/axis/tcl/axis.tcl:2154 share/axis/tcl/axis.tcl:2328 +msgid "Joint:" +msgstr "" + +#: share/axis/tcl/axis.tcl:2463 +msgid "Turn spindle counterclockwise [F10]" +msgstr "Fő orsó balra forgatása [F10]" + +#: share/axis/tcl/axis.tcl:2464 +msgid "Turn spindle clockwise [F9]" +msgstr "Fő orsó jobbra forgatása [F9]" + +#: share/axis/tcl/axis.tcl:2465 +msgid "Stop spindle [F9/F10]" +msgstr "Fő orsó leállítása [F9/F10]" + +#: share/axis/tcl/axis.tcl:2466 +#, fuzzy +msgid "Turn spindle Faster [F12]" +msgstr "Fő orsó jobbra forgatása [F9]" + +#: share/axis/tcl/axis.tcl:2467 +#, fuzzy +msgid "Turn spindle Slower [F11]" +msgstr "Fő orsó jobbra forgatása [F9]" + +#: share/axis/tcl/axis.tcl:2468 +msgid "Turn spindle brake on [Shift-B] or off [B]" +msgstr "Fő orsó fék be- [Shift-B] vagy ki- [B] kapcsolása" + +#: share/axis/tcl/axis.tcl:2469 +msgid "Turn flood on or off [F8]" +msgstr "Hűtőfolyadék Ki/Be [F8]" + +#: share/axis/tcl/axis.tcl:2470 +msgid "Turn mist on or off [F7]" +msgstr "Elszívás Ki/Be [F7]" + +#: share/axis/tcl/axis.tcl:2471 +msgid "Send active axis home [Home]" +msgstr "Aktív tengely nullpontra [Home]" + +#: share/axis/tcl/axis.tcl:2472 +#, fuzzy +msgid "Set G54 offset for active axis [End]" +msgstr "A G54 offszet beállítása az aktiv tengelyen" + +#: share/axis/tcl/axis.tcl:2473 +msgid "Activate axis [X]" +msgstr "[X] engely aktiválása" + +#: share/axis/tcl/axis.tcl:2474 +msgid "Activate axis [Y]" +msgstr "[Y] Tengely aktiválása" + +#: share/axis/tcl/axis.tcl:2475 +msgid "Activate axis [Z]" +msgstr "[Z] Tengely aktiválása" + +#: share/axis/tcl/axis.tcl:2476 +msgid "Activate axis [A]" +msgstr "[A] Tengely aktiválása" + +#: share/axis/tcl/axis.tcl:2477 +msgid "Activate axis [4]" +msgstr "[4] Tengely aktiválása" + +#: share/axis/tcl/axis.tcl:2478 +msgid "Activate axis [5]" +msgstr "[5] Tengely aktiválása" + +#: share/axis/tcl/axis.tcl:2479 share/axis/tcl/axis.tcl:2480 +msgid "Jog selected axis" +msgstr "Lépés a kiválasztott tengelyen" + +#: share/axis/tcl/axis.tcl:2482 +msgid "Temporarily allow jogging outside machine limits [L]" +msgstr "Átmenetileg túl léphető határok [L]" + +#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:47 +#, fuzzy +msgid "Spindle CW" +msgstr "Fő orsó:" + +#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:48 +#, fuzzy +msgid "Spindle CCW" +msgstr "Fő orsó:" + +#: src/emc/usr_intf/touchy/mdi.py:50 +#, fuzzy +msgid "Set tool number" +msgstr "Folytatás" + +#: src/emc/usr_intf/touchy/mdi.py:51 src/emc/usr_intf/gscreen/mdi.py:50 +#, fuzzy +msgid "Input control" +msgstr "Kézi vezérlés" + +#: src/emc/usr_intf/touchy/mdi.py:54 src/emc/usr_intf/touchy/mdi.py:55 +#: src/emc/usr_intf/gscreen/mdi.py:53 src/emc/usr_intf/gscreen/mdi.py:54 +msgid "Straight rapid" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:56 src/emc/usr_intf/touchy/mdi.py:57 +#: src/emc/usr_intf/gscreen/mdi.py:55 src/emc/usr_intf/gscreen/mdi.py:56 +msgid "Straight feed" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:58 src/emc/usr_intf/touchy/mdi.py:59 +#: src/emc/usr_intf/gscreen/mdi.py:57 src/emc/usr_intf/gscreen/mdi.py:58 +msgid "Arc CW" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:60 src/emc/usr_intf/touchy/mdi.py:61 +#: src/emc/usr_intf/gscreen/mdi.py:59 src/emc/usr_intf/gscreen/mdi.py:60 +msgid "Arc CCW" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:62 src/emc/usr_intf/touchy/mdi.py:63 +#: src/emc/usr_intf/gscreen/mdi.py:61 src/emc/usr_intf/gscreen/mdi.py:62 +msgid "Dwell" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:64 src/emc/usr_intf/gscreen/mdi.py:63 +#, fuzzy +msgid "Setup" +msgstr "EMC állapot mutatása" + +#: src/emc/usr_intf/touchy/mdi.py:65 src/emc/usr_intf/gscreen/mdi.py:64 +#, fuzzy +msgid "Spindle synchronized feed" +msgstr "Fő orsó fék bekapcsolva" + +#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:65 +msgid "Rigid tap" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:67 src/emc/usr_intf/touchy/mdi.py:68 +#: src/emc/usr_intf/touchy/mdi.py:69 src/emc/usr_intf/touchy/mdi.py:70 +#: src/emc/usr_intf/gscreen/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:67 +#: src/emc/usr_intf/gscreen/mdi.py:68 src/emc/usr_intf/gscreen/mdi.py:69 +msgid "Probe" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:71 src/emc/usr_intf/gscreen/mdi.py:70 +msgid "Radius compensation left" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:72 src/emc/usr_intf/gscreen/mdi.py:71 +msgid "Radius compensation right" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:73 src/emc/usr_intf/gscreen/mdi.py:72 +msgid "Radius compensation left, immediate" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:74 src/emc/usr_intf/gscreen/mdi.py:73 +msgid "Radius compensation right, immediate" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:75 src/emc/usr_intf/gscreen/mdi.py:74 +msgid "Tool length offset" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:76 src/emc/usr_intf/gscreen/mdi.py:75 +msgid "Tool length offset immediate" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:77 src/emc/usr_intf/gscreen/mdi.py:76 +msgid "Motion in unoffset coordinates" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:78 src/emc/usr_intf/gscreen/mdi.py:77 +#, fuzzy +msgid "Continuous mode" +msgstr "Folytonos lépés" + +#: src/emc/usr_intf/touchy/mdi.py:80 src/emc/usr_intf/gscreen/mdi.py:79 +msgid "Drill" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:81 src/emc/usr_intf/gscreen/mdi.py:80 +msgid "Drill with dwell" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:82 src/emc/usr_intf/gscreen/mdi.py:81 +msgid "Peck drill" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:83 src/emc/usr_intf/gscreen/mdi.py:82 +msgid "Chip-break drill" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:84 src/emc/usr_intf/gscreen/mdi.py:83 +msgid "Bore" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:85 src/emc/usr_intf/gscreen/mdi.py:84 +msgid "Bore with dwell" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:86 src/emc/usr_intf/gscreen/mdi.py:85 +msgid "Offset all coordinate systems" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:87 src/emc/usr_intf/gscreen/mdi.py:86 +msgid "CSS Mode" +msgstr "" + +#: src/emc/usr_intf/touchy/emc_interface.py:410 +msgid "CCW" +msgstr "" + +#: src/emc/usr_intf/touchy/emc_interface.py:410 +#, fuzzy +msgid "Stopped" +msgstr "S_top" + +#: src/emc/usr_intf/touchy/emc_interface.py:410 +msgid "CW" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:7 +msgid "LinuxCNC/Touchy" +msgstr "" + +#. # Touchy is Copyright (c) 2009 Chris Radek # # Touchy 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 2 of the License, or # (at your option) any later version. # # Touchy 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. +#: src/emc/usr_intf/touchy/touchy.glade:11 +msgid "window1" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:31 +msgid "xa" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:44 +msgid "xd" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:57 +msgid "yr" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:68 +msgid "ya" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:81 +msgid "yd" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:94 +msgid "zr" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:105 +msgid "za" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:118 +msgid "zd" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:131 +#: src/emc/usr_intf/gscreen/gscreen.glade:85 +#: src/emc/usr_intf/gscreen/gscreen.glade:213 +#: src/emc/usr_intf/gscreen/gscreen.glade:343 +#: src/emc/usr_intf/gscreen/gscreen.glade:471 +#: src/emc/usr_intf/gscreen/gscreen.glade:599 +#: src/emc/usr_intf/gscreen/gscreen.glade:727 +#: src/emc/usr_intf/gscreen/gscreen.glade:855 +#: src/emc/usr_intf/gscreen/gscreen.glade:983 +#: src/emc/usr_intf/gscreen/gscreen.glade:1111 +msgid "DTG" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:143 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Absolute" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:165 +msgid "xr" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:176 +msgid "ar" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:188 +msgid "br" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:200 +msgid "cr" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:212 +msgid "ur" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:224 +msgid "vr" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:236 +msgid "wr" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:248 +msgid "aa" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:262 +msgid "ba" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:276 +msgid "ca" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:290 +msgid "ua" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:304 +msgid "va" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:318 +msgid "wa" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:332 +msgid "ad" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:346 +msgid "bd" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:360 +msgid "cd" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:374 +msgid "ud" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:388 +msgid "vd" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:402 +msgid "wd" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:448 +#, fuzzy +msgid "Estop Reset" +msgstr "Folytatás" + +#: src/emc/usr_intf/touchy/touchy.glade:459 +#: src/emc/usr_intf/stepconf/pport1.glade:21 +#: src/emc/usr_intf/stepconf/pport2.glade:1409 +#: src/emc/usr_intf/gscreen/gscreen.glade:2442 +#, fuzzy +msgid "Estop" +msgstr "Stop" + +#: src/emc/usr_intf/touchy/touchy.glade:475 +#, fuzzy +msgid "Machine On" +msgstr "Gép" + +#: src/emc/usr_intf/touchy/touchy.glade:490 +#, fuzzy +msgid "Machine Off" +msgstr "Gép" + +#: src/emc/usr_intf/touchy/touchy.glade:531 +msgid "Power" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:562 +#, fuzzy +msgid "Unhome All" +msgstr "Nullpont" + +#: src/emc/usr_intf/touchy/touchy.glade:588 +#, fuzzy +msgid "Home Selected" +msgstr "Lépés a kiválasztott tengelyen" + +#: src/emc/usr_intf/touchy/touchy.glade:603 +msgid "Unhome Selected" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:625 +msgid "Homing" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:644 +msgid "Startup" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:727 +#, fuzzy +msgid "G" +msgstr "Indulj" + +#: src/emc/usr_intf/touchy/touchy.glade:929 +msgid "." +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:963 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "0" +msgstr "0" + +#: src/emc/usr_intf/touchy/touchy.glade:980 +msgid "3" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:997 +msgid "2" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:1014 +msgid "1" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:1031 +msgid "6" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:1048 +msgid "5" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:1065 +msgid "4" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:1082 +msgid "9" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:1097 +msgid "8" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:1112 +msgid "7" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:1297 +#, fuzzy +msgid "Flood On" +msgstr "Folyadék" + +#: src/emc/usr_intf/touchy/touchy.glade:1308 +#, fuzzy +msgid "Flood Off" +msgstr "Folyadék" + +#: src/emc/usr_intf/touchy/touchy.glade:1324 +#, fuzzy +msgid "Mist On" +msgstr "Elszívás" + +#: src/emc/usr_intf/touchy/touchy.glade:1339 +#, fuzzy +msgid "Mist Off" +msgstr "Elszívás" + +#: src/emc/usr_intf/touchy/touchy.glade:1362 +#, fuzzy +msgid "Coolant" +msgstr "Hűtés:" + +#: src/emc/usr_intf/touchy/touchy.glade:1448 +#, fuzzy +msgid "Spindle Off" +msgstr "Fő orsó fék kikapcsolva" + +#: src/emc/usr_intf/touchy/touchy.glade:1501 +#: src/emc/usr_intf/touchy/touchy.glade:2578 +#, fuzzy +msgid "Spindle speed:" +msgstr "Túlhajtás (%):" + +#: src/emc/usr_intf/touchy/touchy.glade:1513 +#: src/emc/usr_intf/touchy/touchy.glade:2707 +msgid "label26" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:1539 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4226 +#, fuzzy +msgid "Spindle" +msgstr "Fő orsó:" + +#: src/emc/usr_intf/touchy/touchy.glade:1597 +msgid "file.ngc" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:1812 +#: src/emc/usr_intf/touchy/touchy.glade:2017 +#: src/emc/usr_intf/touchy/touchy.glade:2037 +#: src/emc/usr_intf/touchy/touchy.glade:2057 +#: src/emc/usr_intf/touchy/touchy.glade:2077 +#: src/emc/usr_intf/touchy/touchy.glade:2097 +#: src/emc/usr_intf/touchy/touchy.glade:2117 +#: src/emc/usr_intf/touchy/touchy.glade:2137 +#: src/emc/usr_intf/touchy/touchy.glade:2157 +#: src/emc/usr_intf/touchy/touchy.glade:2177 +msgid "M2" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2244 +#: src/emc/usr_intf/touchy/touchy.glade:2374 +msgid "Page" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2308 +msgid "Start Point" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2452 +msgid "Loaded File" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2488 +msgid "Loaded file:" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2499 +msgid "Interpreted line:" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2513 +msgid "Distance:" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2526 +#: src/emc/usr_intf/stepconf/main_page.glade:23 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Velocity:" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2539 +msgid "Delay:" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2552 +msgid "On limit switch:" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2565 +#, fuzzy +msgid "Spindle direction:" +msgstr "Fő orsó fék bekapcsolva" + +#: src/emc/usr_intf/touchy/touchy.glade:2591 +#, fuzzy +msgid "Loaded tool:" +msgstr "Nincs szerszám" + +#: src/emc/usr_intf/touchy/touchy.glade:2604 +#: src/emc/usr_intf/touchy/touchy.glade:2955 +msgid "label19" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2617 +msgid "label20" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2632 +#: src/emc/usr_intf/touchy/touchy.glade:2779 +#: src/emc/usr_intf/touchy/touchy.glade:2808 +#: src/emc/usr_intf/touchy/touchy.glade:2912 +#: src/emc/usr_intf/touchy/touchy.glade:2927 +msgid "label21" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2647 +msgid "label22" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2662 +msgid "label23" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2677 +msgid "label24" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2692 +msgid "label25" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2722 +msgid "label27" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2737 +msgid "Prepped tool:" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2750 +msgid "label28" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2765 +msgid "Running line:" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2794 +#, fuzzy +msgid "XY Rotation:" +msgstr "Pozíció:" + +#: src/emc/usr_intf/touchy/touchy.glade:2823 +msgid "Tool length:" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2836 +msgid "label52" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2851 +msgid "" +"G1 G2 G3\n" +"M1 M2 M3\n" +"F1 S1" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2870 +#, fuzzy +msgid "Active codes:" +msgstr "Aktuális G-kódok:" + +#: src/emc/usr_intf/touchy/touchy.glade:2883 +#, fuzzy +msgid "G5x Offset:" +msgstr "Eltolás" + +#: src/emc/usr_intf/touchy/touchy.glade:2898 +#, fuzzy +msgid "G92 Offset:" +msgstr "Eltolás" + +#: src/emc/usr_intf/touchy/touchy.glade:2942 +msgid "Loaded file lines:" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2971 +msgid "Pockets:" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2984 +msgid "" +"1\n" +"2\n" +"3" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/touchy/mdi.py:67 -#: src/emc/usr_intf/touchy/mdi.py:68 src/emc/usr_intf/touchy/mdi.py:69 -msgid "Probe" +#: src/emc/usr_intf/touchy/touchy.glade:3009 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6414 +msgid "Status" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:70 -msgid "Radius compensation left" +#: src/emc/usr_intf/touchy/touchy.glade:3038 +#, fuzzy +msgid "Control Font:" +msgstr "Bal egér gomb" + +#: src/emc/usr_intf/touchy/touchy.glade:3050 +msgid "DRO Font:" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:71 -msgid "Radius compensation right" +#: src/emc/usr_intf/touchy/touchy.glade:3064 +msgid "Error Font:" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:72 -msgid "Radius compensation left, immediate" +#: src/emc/usr_intf/touchy/touchy.glade:3081 +#, fuzzy +msgid "ControlFont" +msgstr "Bal egér gomb" + +#: src/emc/usr_intf/touchy/touchy.glade:3100 +msgid "DRO Font" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:73 -msgid "Radius compensation right, immediate" +#: src/emc/usr_intf/touchy/touchy.glade:3121 +msgid "Error Font" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:74 -msgid "Tool length offset" +#: src/emc/usr_intf/touchy/touchy.glade:3139 +msgid "Listing Font:" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:75 -msgid "Tool length offset immediate" +#: src/emc/usr_intf/touchy/touchy.glade:3156 +msgid "Listing Font" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:76 -msgid "Motion in unoffset coordinates" +#: src/emc/usr_intf/touchy/touchy.glade:3176 +msgid "Hide pointer" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:77 +#: src/emc/usr_intf/touchy/touchy.glade:3187 #, fuzzy -msgid "Continuous mode" -msgstr "Folytonos lépés" - -#: src/emc/usr_intf/touchy/mdi.py:79 -msgid "Drill" -msgstr "" +msgid "Show pointer" +msgstr "Muta_sd a programot" -#: src/emc/usr_intf/touchy/mdi.py:80 -msgid "Drill with dwell" +#: src/emc/usr_intf/touchy/touchy.glade:3214 +msgid "Theme:" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:81 -msgid "Peck drill" +#: src/emc/usr_intf/touchy/touchy.glade:3228 +msgid "default\n" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:82 -msgid "Chip-break drill" +#: src/emc/usr_intf/touchy/touchy.glade:3252 +msgid "Display Options" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:83 -msgid "Bore" +#: src/emc/usr_intf/touchy/touchy.glade:3286 +#: src/emc/usr_intf/stepconf/base.glade:867 +#: src/emc/usr_intf/gscreen/gscreen.glade:3664 +msgid "Inch" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:84 -msgid "Bore with dwell" +#: src/emc/usr_intf/touchy/touchy.glade:3349 +msgid "Position Readout" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:85 -msgid "Offset all coordinate systems" +#: src/emc/usr_intf/touchy/touchy.glade:3379 +msgid "Workpiece" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:86 -msgid "CSS Mode" +#: src/emc/usr_intf/touchy/touchy.glade:3390 +msgid "Fixture" msgstr "" -#: src/emc/usr_intf/touchy/emc_interface.py:410 -msgid "CCW" +#: src/emc/usr_intf/touchy/touchy.glade:3410 +msgid "Tool Setting" msgstr "" -#: src/emc/usr_intf/touchy/emc_interface.py:410 -#, fuzzy -msgid "Stopped" -msgstr "S_top" - -#: src/emc/usr_intf/touchy/emc_interface.py:410 -msgid "CW" +#: src/emc/usr_intf/touchy/touchy.glade:3441 +msgid "Delete / lines" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:7 -msgid "LinuxCNC/Touchy" +#: src/emc/usr_intf/touchy/touchy.glade:3456 +msgid "Keep / lines" msgstr "" -#. # Touchy is Copyright (c) 2009 Chris Radek # # Touchy 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 2 of the License, or # (at your option) any later version. # # Touchy 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. -#: src/emc/usr_intf/touchy/touchy.glade:11 -msgid "window1" -msgstr "" +#: src/emc/usr_intf/touchy/touchy.glade:3473 +#, fuzzy +msgid "Pause on M1" +msgstr "Szü_net" -#: src/emc/usr_intf/touchy/touchy.glade:31 -msgid "xa" +#: src/emc/usr_intf/touchy/touchy.glade:3484 +msgid "Ignore M1" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:44 -msgid "xd" +#: src/emc/usr_intf/touchy/touchy.glade:3504 +msgid "Program Options" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:57 -msgid "yr" +#: src/emc/usr_intf/touchy/touchy.glade:3531 +#: src/emc/usr_intf/gscreen/gscreen.glade:2200 +msgid "Preferences" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:68 -msgid "ya" +#: src/emc/usr_intf/touchy/touchy.glade:3567 +#: src/emc/usr_intf/gscreen/gscreen.glade:1425 +msgid "FO: 100%" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:81 -msgid "yd" +#: src/emc/usr_intf/touchy/touchy.glade:3582 +#: src/emc/usr_intf/gscreen/gscreen.glade:1437 +msgid "SO: 100%" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:94 -msgid "zr" +#: src/emc/usr_intf/touchy/touchy.glade:3596 +msgid "MV: 100" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:105 -msgid "za" +#: src/emc/usr_intf/touchy/touchy.glade:3610 +msgid "Jogging" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:118 -msgid "zd" +#: src/emc/usr_intf/touchy/touchy.glade:3624 +msgid "Start Point" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:131 -msgid "DTG" +#: src/emc/usr_intf/touchy/touchy.glade:3651 +msgid ".01" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:143 -#: src/emc/usr_intf/pncconf/pncconf.glade:59755 -msgid "Absolute" +#: src/emc/usr_intf/touchy/touchy.glade:3664 +msgid ".001" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:165 -msgid "xr" +#: src/emc/usr_intf/touchy/touchy.glade:3680 +msgid ".0001" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:176 -msgid "ar" +#: src/emc/usr_intf/touchy/touchy.glade:3708 +msgid " X " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:188 -msgid "br" +#: src/emc/usr_intf/touchy/touchy.glade:3720 +msgid " Y " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:200 -msgid "cr" +#: src/emc/usr_intf/touchy/touchy.glade:3735 +msgid " Z " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:212 -msgid "ur" +#: src/emc/usr_intf/touchy/touchy.glade:3750 +msgid " A " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:224 -msgid "vr" +#: src/emc/usr_intf/touchy/touchy.glade:3766 +msgid " B " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:236 -msgid "wr" +#: src/emc/usr_intf/touchy/touchy.glade:3784 +msgid " C " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:248 -msgid "aa" +#: src/emc/usr_intf/touchy/touchy.glade:3802 +msgid " U " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:262 -msgid "ba" +#: src/emc/usr_intf/touchy/touchy.glade:3818 +msgid " V " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:276 -msgid "ca" +#: src/emc/usr_intf/touchy/touchy.glade:3836 +msgid " W " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:290 -msgid "ua" +#: src/emc/usr_intf/touchy/touchy.glade:3869 +msgid "Handwheel" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:304 -msgid "va" +#: src/emc/usr_intf/stepconf/stepconf.py:57 +msgid "" +"Stepconf encountered an error. The following information may be useful in " +"troubleshooting:\n" +"\n" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:318 -msgid "wa" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#, fuzzy +msgid "Stepconf" +msgstr "Lépé_s" -#: src/emc/usr_intf/touchy/touchy.glade:332 -msgid "ad" +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#: src/emc/usr_intf/stepconf/stepconf.py:217 +#: src/emc/usr_intf/stepconf/main_page.glade:557 +#: src/emc/usr_intf/gscreen/gscreen.py:3414 +#: src/emc/usr_intf/gscreen/gscreen.py:3415 +#: src/emc/usr_intf/gscreen/gscreen.glade:4043 +msgid "Start" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:346 -msgid "bd" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Base Information" +msgstr "Mutasd a gép pozícióját" -#: src/emc/usr_intf/touchy/touchy.glade:360 -msgid "cd" +#: src/emc/usr_intf/stepconf/stepconf.py:129 +msgid "Parallel Port 1" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:374 -msgid "ud" +#: src/emc/usr_intf/stepconf/stepconf.py:129 +msgid "Parallel Port 2" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:388 -msgid "vd" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:130 +#, fuzzy +msgid "Options" +msgstr "Pozíció:" -#: src/emc/usr_intf/touchy/touchy.glade:402 -msgid "wd" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:130 +#, fuzzy +msgid "Axis X" +msgstr "Tengely:" -#: src/emc/usr_intf/touchy/touchy.glade:448 +#: src/emc/usr_intf/stepconf/stepconf.py:131 #, fuzzy -msgid "Estop Reset" -msgstr "Folytatás" +msgid "Axis Y" +msgstr "Tengely:" -#: src/emc/usr_intf/touchy/touchy.glade:459 +#: src/emc/usr_intf/stepconf/stepconf.py:131 #, fuzzy -msgid "Estop" -msgstr "Stop" +msgid "Axis Z" +msgstr "Tengely:" -#: src/emc/usr_intf/touchy/touchy.glade:475 +#: src/emc/usr_intf/stepconf/stepconf.py:131 #, fuzzy -msgid "Machine On" -msgstr "Gép" +msgid "Axis A" +msgstr "Tengely:" -#: src/emc/usr_intf/touchy/touchy.glade:490 +#: src/emc/usr_intf/stepconf/stepconf.py:132 +#: src/emc/usr_intf/pncconf/pncconf.py:378 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +#: src/emc/usr_intf/pncconf/pncconf.py:524 #, fuzzy -msgid "Machine Off" -msgstr "Gép" +msgid "Spindle" +msgstr "Fő orsó:" -#: src/emc/usr_intf/touchy/touchy.glade:531 -msgid "Power" +#: src/emc/usr_intf/stepconf/stepconf.py:132 +msgid "Almost Done" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:562 -#, fuzzy -msgid "Unhome All" -msgstr "Nullpont" +#: src/emc/usr_intf/stepconf/stepconf.py:136 +#: src/emc/usr_intf/pncconf/pncconf.py:135 +msgid "Gecko 201" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:588 -#, fuzzy -msgid "Home Selected" -msgstr "Lépés a kiválasztott tengelyen" +#: src/emc/usr_intf/stepconf/stepconf.py:137 +#: src/emc/usr_intf/pncconf/pncconf.py:136 +msgid "Gecko 202" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:603 -msgid "Unhome Selected" +#: src/emc/usr_intf/stepconf/stepconf.py:138 +#: src/emc/usr_intf/pncconf/pncconf.py:137 +msgid "Gecko 203v" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:625 -msgid "Homing" +#: src/emc/usr_intf/stepconf/stepconf.py:139 +#: src/emc/usr_intf/pncconf/pncconf.py:138 +msgid "Gecko 210" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:644 -msgid "Startup" +#: src/emc/usr_intf/stepconf/stepconf.py:140 +#: src/emc/usr_intf/pncconf/pncconf.py:139 +msgid "Gecko 212" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:727 -#, fuzzy -msgid "G" -msgstr "Indulj" +#: src/emc/usr_intf/stepconf/stepconf.py:141 +#: src/emc/usr_intf/pncconf/pncconf.py:140 +msgid "Gecko 320" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:929 -msgid "." +#: src/emc/usr_intf/stepconf/stepconf.py:142 +#: src/emc/usr_intf/pncconf/pncconf.py:141 +msgid "Gecko 540" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:963 -#: src/emc/usr_intf/pncconf/pncconf.glade:60883 -#: src/emc/usr_intf/pncconf/pncconf.glade:60895 -#: src/emc/usr_intf/pncconf/pncconf.glade:61017 -#: src/emc/usr_intf/pncconf/pncconf.glade:61029 -#: src/emc/usr_intf/pncconf/pncconf.glade:61041 -#: src/emc/usr_intf/pncconf/pncconf.glade:61053 -#: src/emc/usr_intf/pncconf/pncconf.glade:61065 -#: src/emc/usr_intf/pncconf/pncconf.glade:61077 -#: src/emc/usr_intf/pncconf/pncconf.glade:62040 -#: src/emc/usr_intf/pncconf/pncconf.glade:62052 -#: src/emc/usr_intf/pncconf/pncconf.glade:62064 -#: src/emc/usr_intf/pncconf/pncconf.glade:62076 -#: src/emc/usr_intf/pncconf/pncconf.glade:62088 -#: src/emc/usr_intf/pncconf/pncconf.glade:62100 -#: src/emc/usr_intf/pncconf/pncconf.glade:62222 -#: src/emc/usr_intf/pncconf/pncconf.glade:62234 -#: src/emc/usr_intf/pncconf/pncconf.glade:63069 -#: src/emc/usr_intf/pncconf/pncconf.glade:63081 -#: src/emc/usr_intf/pncconf/pncconf.glade:63203 -#: src/emc/usr_intf/pncconf/pncconf.glade:63215 -#: src/emc/usr_intf/pncconf/pncconf.glade:63227 -#: src/emc/usr_intf/pncconf/pncconf.glade:63239 -#: src/emc/usr_intf/pncconf/pncconf.glade:63251 -#: src/emc/usr_intf/pncconf/pncconf.glade:63263 -#: src/emc/usr_intf/pncconf/pncconf.glade:64226 -#: src/emc/usr_intf/pncconf/pncconf.glade:64238 -#: src/emc/usr_intf/pncconf/pncconf.glade:64250 -#: src/emc/usr_intf/pncconf/pncconf.glade:64262 -#: src/emc/usr_intf/pncconf/pncconf.glade:64274 -#: src/emc/usr_intf/pncconf/pncconf.glade:64286 -#: src/emc/usr_intf/pncconf/pncconf.glade:64408 -#: src/emc/usr_intf/pncconf/pncconf.glade:64420 -#: src/emc/usr_intf/pncconf/pncconf.glade:65231 -#: src/emc/usr_intf/pncconf/pncconf.glade:65243 -#: src/emc/usr_intf/pncconf/pncconf.glade:65359 -#: src/emc/usr_intf/pncconf/pncconf.glade:65371 -#: src/emc/usr_intf/pncconf/pncconf.glade:65383 -#: src/emc/usr_intf/pncconf/pncconf.glade:65395 -#: src/emc/usr_intf/pncconf/pncconf.glade:65407 -#: src/emc/usr_intf/pncconf/pncconf.glade:65419 -#: src/emc/usr_intf/pncconf/pncconf.glade:67091 -msgid "0" -msgstr "0" +#: src/emc/usr_intf/stepconf/stepconf.py:143 +#: src/emc/usr_intf/pncconf/pncconf.py:142 +msgid "L297" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:980 -msgid "3" +#: src/emc/usr_intf/stepconf/stepconf.py:144 +#: src/emc/usr_intf/pncconf/pncconf.py:143 +msgid "PMDX-150" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:997 -msgid "2" +#: src/emc/usr_intf/stepconf/stepconf.py:145 +#: src/emc/usr_intf/stepconf/pport1.glade:32 +#: src/emc/usr_intf/pncconf/pncconf.py:144 +msgid "Sherline" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1014 -msgid "1" +#: src/emc/usr_intf/stepconf/stepconf.py:146 +#: src/emc/usr_intf/pncconf/pncconf.py:145 +msgid "Xylotex 8S-3" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1031 -msgid "6" +#: src/emc/usr_intf/stepconf/stepconf.py:147 +#: src/emc/usr_intf/pncconf/pncconf.py:146 +msgid "Parker-Compumotor oem750" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1048 -msgid "5" +#: src/emc/usr_intf/stepconf/stepconf.py:148 +#: src/emc/usr_intf/pncconf/pncconf.py:147 +msgid "JVL-SMD41 or 42" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1065 -msgid "4" +#: src/emc/usr_intf/stepconf/stepconf.py:149 +#: src/emc/usr_intf/pncconf/pncconf.py:148 +msgid "Hobbycnc Pro Chopper" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1082 -msgid "9" +#: src/emc/usr_intf/stepconf/stepconf.py:150 +msgid "Kelling 4030" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1097 -msgid "8" +#: src/emc/usr_intf/stepconf/stepconf.py:151 +msgid "Leadshine Series" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1112 -msgid "7" +#: src/emc/usr_intf/stepconf/stepconf.py:190 +#, fuzzy +msgid "X Step" +msgstr "Lépé_s" + +#: src/emc/usr_intf/stepconf/stepconf.py:190 +msgid "X Direction" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1297 +#: src/emc/usr_intf/stepconf/stepconf.py:190 #, fuzzy -msgid "Flood On" -msgstr "Folyadék" +msgid "Y Step" +msgstr "Lépé_s" -#: src/emc/usr_intf/touchy/touchy.glade:1308 +#: src/emc/usr_intf/stepconf/stepconf.py:190 +msgid "Y Direction" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:191 #, fuzzy -msgid "Flood Off" -msgstr "Folyadék" +msgid "Z Step" +msgstr "Lépé_s" -#: src/emc/usr_intf/touchy/touchy.glade:1324 +#: src/emc/usr_intf/stepconf/stepconf.py:191 +msgid "Z Direction" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:191 #, fuzzy -msgid "Mist On" -msgstr "Elszívás" +msgid "A Step" +msgstr "Lépé_s" -#: src/emc/usr_intf/touchy/touchy.glade:1339 +#: src/emc/usr_intf/stepconf/stepconf.py:191 +msgid "A Direction" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 #, fuzzy -msgid "Mist Off" -msgstr "Elszívás" +msgid "Spindle ON" +msgstr "Fő orsó:" -#: src/emc/usr_intf/touchy/touchy.glade:1362 +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:488 #, fuzzy -msgid "Coolant" -msgstr "Hűtés:" +msgid "Spindle PWM" +msgstr "Fő orsó:" -#: src/emc/usr_intf/touchy/touchy.glade:1448 +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 #, fuzzy -msgid "Spindle Off" -msgstr "Fő orsó fék kikapcsolva" +msgid "Spindle Brake" +msgstr "Fő orsó fék bekapcsolva" -#: src/emc/usr_intf/touchy/touchy.glade:1501 -#: src/emc/usr_intf/touchy/touchy.glade:2578 +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 #, fuzzy -msgid "Spindle speed:" -msgstr "Túlhajtás (%):" +msgid "Coolant Mist" +msgstr "Hűtés:" -#: src/emc/usr_intf/touchy/touchy.glade:1513 -#: src/emc/usr_intf/touchy/touchy.glade:2707 -msgid "label26" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 +#, fuzzy +msgid "Coolant Flood" +msgstr "Hűtés:" -#: src/emc/usr_intf/touchy/touchy.glade:1539 +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:370 #, fuzzy -msgid "Spindle" -msgstr "Fő orsó:" +msgid "ESTOP Out" +msgstr "ESTOP" -#: src/emc/usr_intf/touchy/touchy.glade:1597 -msgid "file.ngc" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +msgid "Amplifier Enable" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1812 -#: src/emc/usr_intf/touchy/touchy.glade:2017 -#: src/emc/usr_intf/touchy/touchy.glade:2037 -#: src/emc/usr_intf/touchy/touchy.glade:2057 -#: src/emc/usr_intf/touchy/touchy.glade:2077 -#: src/emc/usr_intf/touchy/touchy.glade:2097 -#: src/emc/usr_intf/touchy/touchy.glade:2117 -#: src/emc/usr_intf/touchy/touchy.glade:2137 -#: src/emc/usr_intf/touchy/touchy.glade:2157 -#: src/emc/usr_intf/touchy/touchy.glade:2177 -msgid "M2" +#: src/emc/usr_intf/stepconf/stepconf.py:194 +#: src/emc/usr_intf/pncconf/pncconf.py:371 +msgid "Charge Pump" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2244 -#: src/emc/usr_intf/touchy/touchy.glade:2374 -msgid "Page" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 0" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2308 -msgid "Start Point" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 1" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2452 -msgid "Loaded File" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 2" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2488 -msgid "Loaded file:" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 3" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2499 -msgid "Interpreted line:" +#: src/emc/usr_intf/stepconf/stepconf.py:196 +#: src/emc/usr_intf/stepconf/stepconf.py:215 +#: src/emc/usr_intf/stepconf/pport1.glade:18 +#: src/emc/usr_intf/stepconf/pport2.glade:1406 +#: src/emc/usr_intf/stepconf/pport2.glade:1420 +msgid "Unused" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2513 -msgid "Distance:" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 +#, fuzzy +msgid "ESTOP In" +msgstr "ESTOP" -#: src/emc/usr_intf/touchy/touchy.glade:2526 -#: src/emc/usr_intf/stepconf/stepconf.glade:4148 -#: src/emc/usr_intf/pncconf/pncconf.glade:60476 -#: src/emc/usr_intf/pncconf/pncconf.glade:61571 -#: src/emc/usr_intf/pncconf/pncconf.glade:62664 -#: src/emc/usr_intf/pncconf/pncconf.glade:63757 -#: src/emc/usr_intf/pncconf/pncconf.glade:64856 -msgid "Velocity:" +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 +msgid "Probe In" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2539 -msgid "Delay:" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:199 +#, fuzzy +msgid "Spindle Index" +msgstr "Fő orsó:" -#: src/emc/usr_intf/touchy/touchy.glade:2552 -msgid "On limit switch:" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:199 +#, fuzzy +msgid "Spindle Phase A" +msgstr "Fő orsó fék bekapcsolva" -#: src/emc/usr_intf/touchy/touchy.glade:2565 +#: src/emc/usr_intf/stepconf/stepconf.py:199 #, fuzzy -msgid "Spindle direction:" +msgid "Spindle Phase B" msgstr "Fő orsó fék bekapcsolva" -#: src/emc/usr_intf/touchy/touchy.glade:2591 +#: src/emc/usr_intf/stepconf/stepconf.py:200 #, fuzzy -msgid "Loaded tool:" -msgstr "Nincs szerszám" +msgid "Home X" +msgstr "Nullpont" -#: src/emc/usr_intf/touchy/touchy.glade:2604 -#: src/emc/usr_intf/touchy/touchy.glade:2955 -msgid "label19" +#: src/emc/usr_intf/stepconf/stepconf.py:200 +#, fuzzy +msgid "Home Y" +msgstr "Nullpont" + +#: src/emc/usr_intf/stepconf/stepconf.py:200 +#, fuzzy +msgid "Home Z" +msgstr "Nullpont" + +#: src/emc/usr_intf/stepconf/stepconf.py:200 +#, fuzzy +msgid "Home A" +msgstr "Nullpont" + +#: src/emc/usr_intf/stepconf/stepconf.py:201 +msgid "Minimum Limit + Home X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2617 -msgid "label20" +#: src/emc/usr_intf/stepconf/stepconf.py:201 +msgid "Minimum Limit + Home Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2632 -#: src/emc/usr_intf/touchy/touchy.glade:2779 -#: src/emc/usr_intf/touchy/touchy.glade:2808 -#: src/emc/usr_intf/touchy/touchy.glade:2912 -#: src/emc/usr_intf/touchy/touchy.glade:2927 -msgid "label21" +#: src/emc/usr_intf/stepconf/stepconf.py:202 +msgid "Minimum Limit + Home Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2647 -msgid "label22" +#: src/emc/usr_intf/stepconf/stepconf.py:202 +msgid "Minimum Limit + Home A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2662 -msgid "label23" +#: src/emc/usr_intf/stepconf/stepconf.py:203 +msgid "Maximum Limit + Home X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2677 -msgid "label24" +#: src/emc/usr_intf/stepconf/stepconf.py:203 +msgid "Maximum Limit + Home Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2692 -msgid "label25" +#: src/emc/usr_intf/stepconf/stepconf.py:204 +msgid "Maximum Limit + Home Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2722 -msgid "label27" +#: src/emc/usr_intf/stepconf/stepconf.py:204 +msgid "Maximum Limit + Home A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2737 -msgid "Prepped tool:" +#: src/emc/usr_intf/stepconf/stepconf.py:205 +msgid "Both Limit + Home X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2750 -msgid "label28" +#: src/emc/usr_intf/stepconf/stepconf.py:205 +msgid "Both Limit + Home Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2765 -msgid "Running line:" +#: src/emc/usr_intf/stepconf/stepconf.py:206 +msgid "Both Limit + Home Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2794 -#, fuzzy -msgid "XY Rotation:" -msgstr "Pozíció:" +#: src/emc/usr_intf/stepconf/stepconf.py:206 +msgid "Both Limit + Home A" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2823 -msgid "Tool length:" +#: src/emc/usr_intf/stepconf/stepconf.py:207 +msgid "Minimum Limit X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2836 -msgid "label52" +#: src/emc/usr_intf/stepconf/stepconf.py:207 +msgid "Minimum Limit Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2851 -msgid "" -"G1 G2 G3\n" -"M1 M2 M3\n" -"F1 S1" +#: src/emc/usr_intf/stepconf/stepconf.py:208 +msgid "Minimum Limit Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2870 -#, fuzzy -msgid "Active codes:" -msgstr "Aktuális G-kódok:" +#: src/emc/usr_intf/stepconf/stepconf.py:208 +msgid "Minimum Limit A" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2883 -#, fuzzy -msgid "G5x Offset:" -msgstr "Eltolás" +#: src/emc/usr_intf/stepconf/stepconf.py:209 +msgid "Maximum Limit X" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2898 -#, fuzzy -msgid "G92 Offset:" -msgstr "Eltolás" +#: src/emc/usr_intf/stepconf/stepconf.py:209 +msgid "Maximum Limit Y" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2942 -msgid "Loaded file lines:" +#: src/emc/usr_intf/stepconf/stepconf.py:210 +msgid "Maximum Limit Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2971 -msgid "Pockets:" +#: src/emc/usr_intf/stepconf/stepconf.py:210 +msgid "Maximum Limit A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2984 -msgid "" -"1\n" -"2\n" -"3" +#: src/emc/usr_intf/stepconf/stepconf.py:211 +msgid "Both Limit X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3009 -msgid "Status" +#: src/emc/usr_intf/stepconf/stepconf.py:211 +msgid "Both Limit Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3038 -#, fuzzy -msgid "Control Font:" -msgstr "Bal egér gomb" +#: src/emc/usr_intf/stepconf/stepconf.py:212 +msgid "Both Limit Z" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3050 -msgid "DRO Font:" +#: src/emc/usr_intf/stepconf/stepconf.py:212 +msgid "Both Limit A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3064 -msgid "Error Font:" +#: src/emc/usr_intf/stepconf/stepconf.py:213 +msgid "All limits" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3081 -#, fuzzy -msgid "ControlFont" -msgstr "Bal egér gomb" +#: src/emc/usr_intf/stepconf/stepconf.py:213 +msgid "All home" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3100 -msgid "DRO Font" +#: src/emc/usr_intf/stepconf/stepconf.py:213 +msgid "All limits + homes" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3121 -msgid "Error Font" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 0" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3139 -msgid "Listing Font:" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 1" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3156 -msgid "Listing Font" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 2" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3176 -msgid "Hide pointer" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 3" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3187 +#: src/emc/usr_intf/stepconf/stepconf.py:218 #, fuzzy -msgid "Show pointer" -msgstr "Muta_sd a programot" +msgid "Forward" +msgstr "Fő orsó fék bekapcsolva" -#: src/emc/usr_intf/touchy/touchy.glade:3214 -msgid "Theme:" +#: src/emc/usr_intf/stepconf/stepconf.py:219 +msgid "Done" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3228 -msgid "default\n" +#: src/emc/usr_intf/stepconf/stepconf.py:220 +msgid "" +"OK to replace existing custom ladder program?\n" +"Existing Custom.clp will be renamed custom_backup.clp.\n" +"Any existing file named -custom_backup.clp- will be lost. " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3252 -msgid "Display Options" +#: src/emc/usr_intf/stepconf/stepconf.py:221 +#: src/emc/usr_intf/pncconf/pncconf.py:8163 +msgid "" +"You edited a ladder program and have selected a different program to copy to " +"your configuration file.\n" +"The edited program will be lost.\n" +"\n" +"Are you sure? " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3286 -msgid "Inch" +#: src/emc/usr_intf/stepconf/stepconf.py:222 +msgid "" +"You need to designate an E-stop input pin in the Parallel Port Setup page " +"for this program." msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3349 -msgid "Position Readout" +#: src/emc/usr_intf/stepconf/stepconf.py:223 +msgid "" +"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" +"Existing custompanel.xml and custom_postgui.hal will be renamed " +"custompanel_backup.xml and postgui_backup.hal.\n" +"Any existing file named custompanel_backup.xml and custom_postgui.hal will " +"be lost. " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3379 -msgid "Workpiece" +#: src/emc/usr_intf/stepconf/stepconf.py:224 +msgid "Quit Stepconf and discard changes?" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3390 -msgid "Fixture" +#: src/emc/usr_intf/stepconf/stepconf.py:225 +msgid "" +"The configuration has been built and saved.\n" +"Do you want to quit?" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3410 -msgid "Tool Setting" +#: src/emc/usr_intf/stepconf/stepconf.py:226 +msgid "" +"You are using a simulated-realtime version of Machinekit, so testing / " +"tuning of hardware is unavailable." msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3441 -msgid "Delete / lines" +#: src/emc/usr_intf/stepconf/stepconf.py:227 +#, python-format +msgid "" +"You are using a realtime version of Machinekit but didn't load a realtime " +"kernel so testing / tuning of hardware is unavailable.\n" +"This is possibly because you updated the OS and it doesn't automatically " +"load the RTAI kernel anymore.\n" +"You are using the %(actual)s kernel.\n" +"You need to use kernel:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3456 -msgid "Keep / lines" +#: src/emc/usr_intf/stepconf/stepconf.py:246 +msgid "my-mill" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3473 -#, fuzzy -msgid "Pause on M1" -msgstr "Szü_net" - -#: src/emc/usr_intf/touchy/touchy.glade:3484 -msgid "Ignore M1" +#: src/emc/usr_intf/stepconf/stepconf.py:585 +#, python-format +msgid "File %r was modified since it was written by stepconf" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3504 -msgid "Program Options" +#: src/emc/usr_intf/stepconf/stepconf.py:588 +msgid "" +"Saving this configuration file will discard configuration changes made " +"outside stepconf." msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3531 -msgid "Preferences" +#: src/emc/usr_intf/stepconf/stepconf.py:603 +#: src/emc/usr_intf/pncconf/pncconf.py:1318 +#, fuzzy +msgid "Continue? " +msgstr "Folytonos" + +#: src/emc/usr_intf/stepconf/stepconf.py:604 +#: src/emc/usr_intf/pncconf/pncconf.py:1319 +msgid "yY" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3567 -msgid "FO: 100%" +#: src/emc/usr_intf/stepconf/stepconf.py:689 +#: src/emc/usr_intf/pncconf/pncconf.py:3591 +#, python-format +msgid "launch %s" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3582 -msgid "SO: 100%" +#: src/emc/usr_intf/stepconf/stepconf.py:693 +msgid "Desktop Launcher for Machinekit config made by Stepconf" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3596 -msgid "MV: 100" +#: src/emc/usr_intf/stepconf/stepconf.py:860 +#: src/emc/usr_intf/stepconf/pages.py:145 +msgid "Other" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3610 -msgid "Jogging" +#: src/emc/usr_intf/stepconf/stepconf.py:1295 +#: src/emc/usr_intf/pncconf/pncconf.py:9302 +#, python-format +msgid "%s Axis Test" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3637 -msgid ".01" +#: src/emc/usr_intf/stepconf/stepconf.py:1298 +#: src/emc/usr_intf/stepconf/pages.py:617 +msgid "deg / s" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3650 -msgid ".001" +#: src/emc/usr_intf/stepconf/stepconf.py:1299 +#: src/emc/usr_intf/stepconf/pages.py:618 +msgid "deg / s²" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3666 -msgid ".0001" +#: src/emc/usr_intf/stepconf/stepconf.py:1300 +#: src/emc/usr_intf/stepconf/pages.py:619 +msgid "deg" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3694 -msgid " X " +#: src/emc/usr_intf/stepconf/stepconf.py:1312 +#: src/emc/usr_intf/stepconf/pages.py:623 +#: src/emc/usr_intf/stepconf/axisx.glade:629 +#: src/emc/usr_intf/stepconf/axisy.glade:615 +#: src/emc/usr_intf/stepconf/axisz.glade:615 +#: src/emc/usr_intf/stepconf/axisa.glade:629 +#: src/emc/usr_intf/pncconf/pncconf.glade:64717 +msgid "mm / s" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3706 -msgid " Y " +#: src/emc/usr_intf/stepconf/stepconf.py:1313 +#: src/emc/usr_intf/stepconf/pages.py:624 +#: src/emc/usr_intf/stepconf/axisx.glade:645 +#: src/emc/usr_intf/stepconf/axisy.glade:631 +#: src/emc/usr_intf/stepconf/axisz.glade:631 +#: src/emc/usr_intf/stepconf/axisa.glade:645 +#: src/emc/usr_intf/pncconf/pncconf.glade:64732 +msgid "mm / s²" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3721 -msgid " Z " +#: src/emc/usr_intf/stepconf/stepconf.py:1326 +#: src/emc/usr_intf/stepconf/pages.py:629 +msgid "in / s" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3736 -msgid " A " +#: src/emc/usr_intf/stepconf/stepconf.py:1327 +#: src/emc/usr_intf/stepconf/pages.py:630 +msgid "in / s²" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3752 -msgid " B " +#: src/emc/usr_intf/stepconf/pages.py:189 +msgid "Machinekit 'stepconf' configuration files" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3770 -msgid " C " +#: src/emc/usr_intf/stepconf/pages.py:190 +#: src/emc/usr_intf/pncconf/pncconf.py:4257 +msgid "Modify Existing Configuration" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3788 -msgid " U " +#: src/emc/usr_intf/stepconf/pages.py:616 +msgid "degree / rev" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3804 -msgid " V " +#: src/emc/usr_intf/stepconf/pages.py:620 +msgid "Steps / deg" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3822 -msgid " W " +#: src/emc/usr_intf/stepconf/pages.py:622 +#: src/emc/usr_intf/stepconf/axisx.glade:613 +#: src/emc/usr_intf/stepconf/axisy.glade:599 +#: src/emc/usr_intf/stepconf/axisz.glade:599 +#: src/emc/usr_intf/stepconf/axisa.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / rev" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3855 -msgid "Handwheel" +#: src/emc/usr_intf/stepconf/pages.py:626 +#: src/emc/usr_intf/stepconf/axisx.glade:15 +#: src/emc/usr_intf/stepconf/axisy.glade:15 +#: src/emc/usr_intf/stepconf/axisz.glade:15 +#: src/emc/usr_intf/stepconf/axisa.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Steps / mm" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:53 -msgid "" -"Stepconf encountered an error. The following information may be useful in " -"troubleshooting:\n" -"\n" +#: src/emc/usr_intf/stepconf/pages.py:628 +msgid "rev / in" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:70 -#: src/emc/usr_intf/pncconf/pncconf.py:133 -msgid "Gecko 201" +#: src/emc/usr_intf/stepconf/pages.py:632 +msgid "Steps / in" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:71 -#: src/emc/usr_intf/pncconf/pncconf.py:134 -msgid "Gecko 202" +#: src/emc/usr_intf/stepconf/build_INI.py:45 +#: src/emc/usr_intf/stepconf/build_HAL.py:41 +#, python-format +msgid "# Generated by stepconf 1.1 at %s" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:72 -#: src/emc/usr_intf/pncconf/pncconf.py:135 -msgid "Gecko 203v" +#: src/emc/usr_intf/stepconf/build_INI.py:46 +#: src/emc/usr_intf/stepconf/build_HAL.py:42 +#: src/emc/usr_intf/pncconf/pncconf.py:1328 +#: src/emc/usr_intf/pncconf/pncconf.py:2422 +msgid "# If you make changes to this file, they will be" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:73 -#: src/emc/usr_intf/pncconf/pncconf.py:136 -msgid "Gecko 210" +#: src/emc/usr_intf/stepconf/build_INI.py:47 +#: src/emc/usr_intf/stepconf/build_HAL.py:43 +msgid "# overwritten when you run stepconf again" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:74 -#: src/emc/usr_intf/pncconf/pncconf.py:137 -msgid "Gecko 212" +#: src/emc/usr_intf/stepconf/build_INI.py:126 +msgid "# add halui MDI commands here (max 64) " msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:75 -#: src/emc/usr_intf/pncconf/pncconf.py:138 -msgid "Gecko 320" +#: src/emc/usr_intf/stepconf/build_HAL.py:275 +#: src/emc/usr_intf/pncconf/pncconf.py:3131 +msgid "# **** Setup for external estop ladder program -START ****" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:76 -#: src/emc/usr_intf/pncconf/pncconf.py:139 -msgid "Gecko 540" +#: src/emc/usr_intf/stepconf/build_HAL.py:282 +#: src/emc/usr_intf/pncconf/pncconf.py:3138 +msgid "# **** Setup for external estop ladder program -END ****" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:77 -#: src/emc/usr_intf/pncconf/pncconf.py:140 -msgid "L297" +#: src/emc/usr_intf/stepconf/build_HAL.py:302 +#: src/emc/usr_intf/pncconf/pncconf.py:3165 +msgid "" +"# Load Classicladder with modbus master included (GUI must run for Modbus)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:78 -#: src/emc/usr_intf/pncconf/pncconf.py:141 -msgid "PMDX-150" +#: src/emc/usr_intf/stepconf/build_HAL.py:305 +#: src/emc/usr_intf/pncconf/pncconf.py:3170 +msgid "# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:79 -#: src/emc/usr_intf/pncconf/pncconf.py:142 -msgid "Sherline" +#: src/emc/usr_intf/stepconf/build_HAL.py:315 +#: src/emc/usr_intf/pncconf/pncconf.py:3252 +msgid "Include your PyVCP panel here.\n" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:80 -#: src/emc/usr_intf/pncconf/pncconf.py:143 -msgid "Xylotex 8S-3" +#: src/emc/usr_intf/stepconf/build_HAL.py:324 +#: src/emc/usr_intf/stepconf/build_HAL.py:370 +msgid "# Include your customized HAL commands here" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:81 -#: src/emc/usr_intf/pncconf/pncconf.py:144 -msgid "Parker-Compumotor oem750" +#: src/emc/usr_intf/stepconf/build_HAL.py:325 +msgid "" +"# The commands in this file are run after the AXIS GUI (including PyVCP " +"panel) starts" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:82 -#: src/emc/usr_intf/pncconf/pncconf.py:145 -msgid "JVL-SMD41 or 42" +#: src/emc/usr_intf/stepconf/build_HAL.py:328 +#: src/emc/usr_intf/pncconf/pncconf.py:3280 +msgid "# **** Setup of spindle speed display using pyvcp -START ****" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:83 -#: src/emc/usr_intf/pncconf/pncconf.py:146 -msgid "Hobbycnc Pro Chopper" +#: src/emc/usr_intf/stepconf/build_HAL.py:330 +msgid "# **** Use ACTUAL spindle velocity from spindle encoder" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:84 -#: src/emc/usr_intf/pncconf/pncconf.py:147 -msgid "Keling 4030" +#: src/emc/usr_intf/stepconf/build_HAL.py:331 +msgid "" +"# **** spindle-velocity-feedback-rps bounces around so we filter it with " +"lowpass" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -#, fuzzy -msgid "X Step" -msgstr "Lépé_s" +#: src/emc/usr_intf/stepconf/build_HAL.py:332 +msgid "" +"# **** spindle-velocity-feedback-rps is signed so we use absolute component " +"to remove sign" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -msgid "X Direction" +#: src/emc/usr_intf/stepconf/build_HAL.py:333 +msgid "# **** ACTUAL velocity is in RPS not RPM so we scale it." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -#, fuzzy -msgid "Y Step" -msgstr "Lépé_s" +#: src/emc/usr_intf/stepconf/build_HAL.py:342 +msgid "# **** set up spindle at speed indicator ****" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -msgid "Y Direction" +#: src/emc/usr_intf/stepconf/build_HAL.py:355 +msgid "" +"# **** Use COMMANDED spindle velocity from LinuxCNC because no spindle " +"encoder was specified" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -#, fuzzy -msgid "Z Step" -msgstr "Lépé_s" +#: src/emc/usr_intf/stepconf/build_HAL.py:371 +msgid "# This file will not be overwritten when you run stepconf again" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -msgid "Z Direction" +#: src/emc/usr_intf/stepconf/build_HAL.py:412 +msgid "# This file sets up simulated limits/home/spindle encoder hardware." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -#, fuzzy -msgid "A Step" -msgstr "Lépé_s" +#: src/emc/usr_intf/stepconf/build_HAL.py:413 +msgid "# This is a generated file do not edit." +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -msgid "A Direction" +#: src/emc/usr_intf/stepconf/main_page.glade:35 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Acceleration:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -#, fuzzy -msgid "Spindle ON" -msgstr "Fő orsó:" +#: src/emc/usr_intf/stepconf/main_page.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Jog:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#, fuzzy -msgid "Spindle PWM" -msgstr "Fő orsó:" +#: src/emc/usr_intf/stepconf/main_page.glade:63 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Test Area:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -#, fuzzy -msgid "Spindle Brake" -msgstr "Fő orsó fék bekapcsolva" +#: src/emc/usr_intf/stepconf/main_page.glade:97 +msgid "mm/s^2" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 -#, fuzzy -msgid "Coolant Mist" -msgstr "Hűtés:" +#: src/emc/usr_intf/stepconf/main_page.glade:138 +msgid "mm/s" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 -#, fuzzy -msgid "Coolant Flood" -msgstr "Hűtés:" +#: src/emc/usr_intf/stepconf/main_page.glade:400 +msgid "±" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/stepconf/main_page.glade:423 #, fuzzy -msgid "ESTOP Out" -msgstr "ESTOP" +msgid "Stepconf -Stepper Configuration Wizard" +msgstr "Fő orsó fék bekapcsolva" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -msgid "Amplifier Enable" +#: src/emc/usr_intf/stepconf/main_page.glade:503 +#: src/emc/usr_intf/pncconf/pncconf.glade:2054 +#: src/emc/usr_intf/pncconf/pncconf.glade:2067 +#: src/emc/usr_intf/pncconf/pncconf.glade:2080 +#: src/emc/usr_intf/pncconf/pncconf.glade:2093 +#: src/emc/usr_intf/pncconf/pncconf.glade:2106 +#: src/emc/usr_intf/pncconf/pncconf.glade:2119 +#: src/emc/usr_intf/pncconf/pncconf.glade:2132 +#: src/emc/usr_intf/pncconf/pncconf.glade:2145 +#: src/emc/usr_intf/pncconf/pncconf.glade:2156 +#: src/emc/usr_intf/pncconf/pncconf.glade:2169 +#: src/emc/usr_intf/pncconf/pncconf.glade:2182 +#: src/emc/usr_intf/pncconf/pncconf.glade:2528 +#: src/emc/usr_intf/pncconf/pncconf.glade:2541 +#: src/emc/usr_intf/pncconf/pncconf.glade:2554 +#: src/emc/usr_intf/pncconf/pncconf.glade:8104 +#: src/emc/usr_intf/pncconf/pncconf.glade:8139 +#: src/emc/usr_intf/pncconf/pncconf.glade:63377 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:1342 +#: src/emc/usr_intf/gscreen/gscreen.glade:1360 +#: src/emc/usr_intf/gscreen/gscreen.glade:1378 +msgid "label" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:157 -#: src/emc/usr_intf/pncconf/pncconf.py:443 -msgid "Charge Pump" +#: src/emc/usr_intf/stepconf/main_page.glade:605 +msgid "" +"This program creates configuration files (.ini and .hal) for \"step and " +"direction\" milling machines and lathes connected to the PC parallel port.\n" +"\n" +"Stepconf requires a minimum 800 X 600 display resolution." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 0" +#: src/emc/usr_intf/stepconf/main_page.glade:628 +#: src/emc/usr_intf/pncconf/pncconf.glade:28799 +#: src/emc/usr_intf/pncconf/pncconf.glade:35720 +#: src/emc/usr_intf/pncconf/pncconf.glade:42643 +#: src/emc/usr_intf/pncconf/pncconf.glade:49566 +#: src/emc/usr_intf/pncconf/pncconf.glade:56489 +msgid "page 1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 1" +#: src/emc/usr_intf/stepconf/base.glade:18 +msgid "XYZ" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 2" +#: src/emc/usr_intf/stepconf/base.glade:21 +msgid "XYZA" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 3" +#: src/emc/usr_intf/stepconf/base.glade:24 +msgid "XZ (Lathe)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:159 -#: src/emc/usr_intf/stepconf/stepconf.py:178 -msgid "Unused" +#: src/emc/usr_intf/stepconf/base.glade:79 +msgid "Step _Time:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 -#, fuzzy -msgid "ESTOP In" -msgstr "ESTOP" - -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 -msgid "Probe In" +#: src/emc/usr_intf/stepconf/base.glade:113 +#: src/emc/usr_intf/stepconf/base.glade:165 +#: src/emc/usr_intf/stepconf/base.glade:219 +#: src/emc/usr_intf/stepconf/base.glade:271 +#: src/emc/usr_intf/stepconf/base.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:443 +#: src/emc/usr_intf/pncconf/pncconf.glade:8226 +msgid "ns" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:162 -#, fuzzy -msgid "Spindle Index" -msgstr "Fő orsó:" - -#: src/emc/usr_intf/stepconf/stepconf.py:162 -#, fuzzy -msgid "Spindle Phase A" -msgstr "Fő orsó fék bekapcsolva" +#: src/emc/usr_intf/stepconf/base.glade:127 +msgid "Step _Space:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:162 -#, fuzzy -msgid "Spindle Phase B" -msgstr "Fő orsó fék bekapcsolva" +#: src/emc/usr_intf/stepconf/base.glade:181 +msgid "Direction _Hold:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -#, fuzzy -msgid "Home X" -msgstr "Nullpont" +#: src/emc/usr_intf/stepconf/base.glade:235 +msgid "_Direction Setup:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -#, fuzzy -msgid "Home Y" -msgstr "Nullpont" +#: src/emc/usr_intf/stepconf/base.glade:338 +msgid "Driver Timing Settings" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -#, fuzzy -msgid "Home Z" -msgstr "Nullpont" +#: src/emc/usr_intf/stepconf/base.glade:351 +msgid "" +"_Test Base\n" +"Period Jitter " +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/base.glade:372 #, fuzzy -msgid "Home A" -msgstr "Nullpont" +msgid "Machine _Name:" +msgstr "Gép" -#: src/emc/usr_intf/stepconf/stepconf.py:164 -msgid "Minimum Limit + Home X" +#: src/emc/usr_intf/stepconf/base.glade:386 +msgid "_Axis configuration:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:164 -msgid "Minimum Limit + Home Y" -msgstr "" +#: src/emc/usr_intf/stepconf/base.glade:401 +#, fuzzy +msgid "Reset Default machine _units:" +msgstr "Gép" -#: src/emc/usr_intf/stepconf/stepconf.py:165 -msgid "Minimum Limit + Home Z" +#: src/emc/usr_intf/stepconf/base.glade:416 +#: src/emc/usr_intf/pncconf/pncconf.glade:245 +msgid "Configuration directory:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:165 -msgid "Minimum Limit + Home A" +#: src/emc/usr_intf/stepconf/base.glade:430 +msgid "D_river type:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:166 -msgid "Maximum Limit + Home X" +#: src/emc/usr_intf/stepconf/base.glade:545 +msgid "" +"Driver characteristics: (Multiply by 1000 for times specified in µs or " +"microseconds)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:166 -msgid "Maximum Limit + Home Y" +#: src/emc/usr_intf/stepconf/base.glade:573 +msgid "Base Period Maximum _Jitter:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:167 -msgid "Maximum Limit + Home Z" +#: src/emc/usr_intf/stepconf/base.glade:630 +msgid "One Parport" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:167 -msgid "Maximum Limit + Home A" +#: src/emc/usr_intf/stepconf/base.glade:646 +msgid "Two Parports" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:168 -msgid "Both Limit + Home X" +#: src/emc/usr_intf/stepconf/base.glade:663 +msgid "Three Parports" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:168 -msgid "Both Limit + Home Y" +#: src/emc/usr_intf/stepconf/base.glade:698 +msgid "Min Base Period:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:169 -msgid "Both Limit + Home Z" +#: src/emc/usr_intf/stepconf/base.glade:735 +msgid "Max step rate:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:169 -msgid "Both Limit + Home A" +#: src/emc/usr_intf/stepconf/base.glade:870 +msgid "MM" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:170 -msgid "Minimum Limit X" +#: src/emc/usr_intf/stepconf/start.glade:11 +msgid "Create a _new configuration" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:170 -msgid "Minimum Limit Y" +#: src/emc/usr_intf/stepconf/start.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:130 +msgid "Modify a configuration already created with this program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:171 -msgid "Minimum Limit Z" +#: src/emc/usr_intf/stepconf/start.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:118 +msgid "Do you wish to:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:171 -msgid "Minimum Limit A" +#: src/emc/usr_intf/stepconf/start.glade:61 +#: src/emc/usr_intf/pncconf/pncconf.glade:100 +msgid "" +"If you have made modifications to this configuration outside this program, " +"they will be lost when you select \"Modify a configuration\"" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:172 -msgid "Maximum Limit X" +#: src/emc/usr_intf/stepconf/start.glade:76 +msgid "Create a desktop _shortcut (symlink) to configuration files." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:172 -msgid "Maximum Limit Y" +#: src/emc/usr_intf/stepconf/start.glade:93 +msgid "Create a desktop _launcher to start LinuxCNC with this configuration." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:173 -msgid "Maximum Limit Z" +#: src/emc/usr_intf/stepconf/start.glade:124 +msgid "Create simulated hardware configuration." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:173 -msgid "Maximum Limit A" +#: src/emc/usr_intf/stepconf/pport1.glade:35 +msgid "Xylotex" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:174 -msgid "Both Limit X" +#: src/emc/usr_intf/stepconf/pport1.glade:38 +msgid "TB6560 3 axes" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:174 -msgid "Both Limit Y" +#: src/emc/usr_intf/stepconf/pport1.glade:41 +msgid "TB6560 4 axes" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:175 -msgid "Both Limit Z" +#: src/emc/usr_intf/stepconf/pport1.glade:59 +#: src/emc/usr_intf/pncconf/pncconf.glade:62915 +msgid "Pin _1:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:175 -msgid "Both Limit A" +#: src/emc/usr_intf/stepconf/pport1.glade:74 +#: src/emc/usr_intf/stepconf/pport2.glade:768 +#: src/emc/usr_intf/pncconf/pncconf.glade:61685 +#: src/emc/usr_intf/pncconf/pncconf.glade:62901 +msgid "Pin _2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:176 -msgid "All limits" +#: src/emc/usr_intf/stepconf/pport1.glade:89 +#: src/emc/usr_intf/stepconf/pport2.glade:814 +#: src/emc/usr_intf/pncconf/pncconf.glade:61668 +#: src/emc/usr_intf/pncconf/pncconf.glade:62887 +msgid "Pin _3:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:176 -msgid "All home" +#: src/emc/usr_intf/stepconf/pport1.glade:104 +#: src/emc/usr_intf/stepconf/pport2.glade:860 +#: src/emc/usr_intf/pncconf/pncconf.glade:61651 +#: src/emc/usr_intf/pncconf/pncconf.glade:62873 +msgid "Pin _4:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:176 -msgid "All limits + homes" +#: src/emc/usr_intf/stepconf/pport1.glade:119 +#: src/emc/usr_intf/stepconf/pport2.glade:906 +#: src/emc/usr_intf/pncconf/pncconf.glade:61634 +#: src/emc/usr_intf/pncconf/pncconf.glade:62859 +msgid "Pin _5:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 0" +#: src/emc/usr_intf/stepconf/pport1.glade:134 +#: src/emc/usr_intf/stepconf/pport2.glade:952 +#: src/emc/usr_intf/pncconf/pncconf.glade:61617 +#: src/emc/usr_intf/pncconf/pncconf.glade:62845 +msgid "Pin _6:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 1" +#: src/emc/usr_intf/stepconf/pport1.glade:149 +#: src/emc/usr_intf/stepconf/pport2.glade:998 +#: src/emc/usr_intf/pncconf/pncconf.glade:61600 +#: src/emc/usr_intf/pncconf/pncconf.glade:62831 +msgid "Pin _7:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 2" +#: src/emc/usr_intf/stepconf/pport1.glade:164 +#: src/emc/usr_intf/stepconf/pport2.glade:1044 +#: src/emc/usr_intf/pncconf/pncconf.glade:61583 +#: src/emc/usr_intf/pncconf/pncconf.glade:62817 +msgid "Pin _8:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 3" +#: src/emc/usr_intf/stepconf/pport1.glade:179 +#: src/emc/usr_intf/stepconf/pport2.glade:1090 +#: src/emc/usr_intf/pncconf/pncconf.glade:61566 +#: src/emc/usr_intf/pncconf/pncconf.glade:62803 +msgid "Pin _9:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:203 -msgid "my-mill" +#: src/emc/usr_intf/stepconf/pport1.glade:194 +#: src/emc/usr_intf/stepconf/pport2.glade:1137 +#: src/emc/usr_intf/pncconf/pncconf.glade:62789 +msgid "_Pin 14:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:215 -#: src/emc/usr_intf/stepconf/stepconf.py:217 -#: src/emc/usr_intf/pncconf/pncconf.py:983 -#: src/emc/usr_intf/pncconf/pncconf.py:985 -msgid "Enter Address" +#: src/emc/usr_intf/stepconf/pport1.glade:209 +#: src/emc/usr_intf/stepconf/pport2.glade:1185 +#: src/emc/usr_intf/pncconf/pncconf.glade:62775 +msgid "P_in 16:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:375 -#, python-format -msgid "File %r was modified since it was written by stepconf" +#: src/emc/usr_intf/stepconf/pport1.glade:224 +#: src/emc/usr_intf/stepconf/pport2.glade:1233 +#: src/emc/usr_intf/pncconf/pncconf.glade:62761 +msgid "Pi_n 17:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:378 -msgid "" -"Saving this configuration file will discard configuration changes made " -"outside stepconf." +#: src/emc/usr_intf/stepconf/pport1.glade:470 +#: src/emc/usr_intf/stepconf/pport2.glade:692 +msgid "Outputs (PC to Mill):" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:393 -#: src/emc/usr_intf/pncconf/pncconf.py:1356 -#, fuzzy -msgid "Continue? " -msgstr "Folytonos" - -#: src/emc/usr_intf/stepconf/stepconf.py:394 -#: src/emc/usr_intf/pncconf/pncconf.py:1357 -msgid "yY" +#: src/emc/usr_intf/stepconf/pport1.glade:483 +#: src/emc/usr_intf/stepconf/pport2.glade:427 +#: src/emc/usr_intf/pncconf/pncconf.glade:61701 +msgid "Pin 1_0:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:446 -#: src/emc/usr_intf/stepconf/stepconf.py:786 -#, python-format -msgid "# Generated by stepconf at %s" +#: src/emc/usr_intf/stepconf/pport1.glade:500 +#: src/emc/usr_intf/stepconf/pport2.glade:475 +#: src/emc/usr_intf/pncconf/pncconf.glade:61717 +msgid "Pin 1_1:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:447 -#: src/emc/usr_intf/stepconf/stepconf.py:787 -#: src/emc/usr_intf/pncconf/pncconf.py:1366 -#: src/emc/usr_intf/pncconf/pncconf.py:2369 -msgid "# If you make changes to this file, they will be" +#: src/emc/usr_intf/stepconf/pport1.glade:517 +#: src/emc/usr_intf/stepconf/pport2.glade:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:61733 +msgid "Pin 1_2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:448 -#: src/emc/usr_intf/stepconf/stepconf.py:788 -msgid "# overwritten when you run stepconf again" +#: src/emc/usr_intf/stepconf/pport1.glade:534 +#: src/emc/usr_intf/stepconf/pport2.glade:571 +#: src/emc/usr_intf/pncconf/pncconf.glade:61749 +msgid "Pin 1_3:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:516 -msgid "# add halui MDI commands here (max 64) " +#: src/emc/usr_intf/stepconf/pport1.glade:551 +#: src/emc/usr_intf/stepconf/pport2.glade:619 +#: src/emc/usr_intf/pncconf/pncconf.glade:61765 +msgid "Pin 1_5:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:991 -#: src/emc/usr_intf/pncconf/pncconf.py:2991 -msgid "# **** Setup for external estop ladder program -START ****" +#: src/emc/usr_intf/stepconf/pport1.glade:590 +#: src/emc/usr_intf/stepconf/pport2.glade:16 +msgid "Inputs (Mill to PC):" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:998 -#: src/emc/usr_intf/pncconf/pncconf.py:2998 -msgid "# **** Setup for external estop ladder program -END ****" +#: src/emc/usr_intf/stepconf/pport1.glade:618 +#: src/emc/usr_intf/stepconf/pport1.glade:632 +#: src/emc/usr_intf/stepconf/pport2.glade:29 +#: src/emc/usr_intf/stepconf/pport2.glade:702 +#: src/emc/usr_intf/pncconf/pncconf.glade:62335 +#: src/emc/usr_intf/pncconf/pncconf.glade:62348 +msgid "Invert" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1018 -#: src/emc/usr_intf/pncconf/pncconf.py:3025 -msgid "" -"# Load Classicladder with modbus master included (GUI must run for Modbus)" +#: src/emc/usr_intf/stepconf/pport1.glade:1018 +msgid "Output pinout presets:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1021 -#: src/emc/usr_intf/pncconf/pncconf.py:3030 -msgid "# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI" +#: src/emc/usr_intf/stepconf/pport1.glade:1096 +msgid "Parport _Base Address:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1031 -#: src/emc/usr_intf/pncconf/pncconf.py:3112 -msgid "Include your PyVCP panel here.\n" -msgstr "" +#: src/emc/usr_intf/stepconf/pport1.glade:1132 +#, fuzzy +msgid "Preset" +msgstr "Folytatás" -#: src/emc/usr_intf/stepconf/stepconf.py:1040 -#: src/emc/usr_intf/stepconf/stepconf.py:1087 -msgid "# Include your customized HAL commands here" +#: src/emc/usr_intf/stepconf/pport2.glade:47 +msgid "Pin 2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1041 -msgid "" -"# The commands in this file are run after the AXIS GUI (including PyVCP " -"panel) starts" +#: src/emc/usr_intf/stepconf/pport2.glade:94 +msgid "Pin 3:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1045 -#: src/emc/usr_intf/pncconf/pncconf.py:3140 -msgid "# **** Setup of spindle speed display using pyvcp -START ****" +#: src/emc/usr_intf/stepconf/pport2.glade:141 +msgid "Pin 4:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1047 -msgid "# **** Use ACTUAL spindle velocity from spindle encoder" +#: src/emc/usr_intf/stepconf/pport2.glade:188 +msgid "Pin 5:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1048 -msgid "# **** spindle-velocity bounces around so we filter it with lowpass" +#: src/emc/usr_intf/stepconf/pport2.glade:235 +msgid "Pin 6:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1049 -msgid "" -"# **** spindle-velocity is signed so we use absolute component to remove sign" +#: src/emc/usr_intf/stepconf/pport2.glade:282 +msgid "Pin 7:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1050 -msgid "# **** ACTUAL velocity is in RPS not RPM so we scale it." +#: src/emc/usr_intf/stepconf/pport2.glade:329 +msgid "Pin 8:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1059 -msgid "# **** set up spindle at speed indicator ****" +#: src/emc/usr_intf/stepconf/pport2.glade:376 +msgid "Pin 9:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1072 -msgid "" -"# **** Use COMMANDED spindle velocity from LinuxCNC because no spindle " -"encoder was specified" +#: src/emc/usr_intf/stepconf/pport2.glade:721 +msgid "Pin _1: " msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1073 -msgid "" -"# **** COMANDED velocity is signed so we use absolute component (abs.0) to " -"remove sign" +#: src/emc/usr_intf/stepconf/pport2.glade:1431 +msgid "Out" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1088 -msgid "# This file will not be overwritten when you run stepconf again" +#: src/emc/usr_intf/stepconf/pport2.glade:1434 +msgid "In" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1095 -#, python-format -msgid "Generated by stepconf at %s" +#: src/emc/usr_intf/stepconf/spindle.glade:23 +msgid "Use spindle-at-speed:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1166 -#: src/emc/usr_intf/pncconf/pncconf.py:3451 -#, python-format -msgid "launch %s" +#: src/emc/usr_intf/stepconf/spindle.glade:64 +msgid "Speed display filter gain:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1170 -msgid "Desktop Launcher for LinuxCNC config made by Stepconf" +#: src/emc/usr_intf/stepconf/spindle.glade:99 +msgid "Calibration:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1196 -#: src/emc/usr_intf/pncconf/pncconf.py:3700 -#, python-format -msgid "%s Axis Configuration" +#: src/emc/usr_intf/stepconf/spindle.glade:113 +msgid "_Speed 1:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1238 -#: src/emc/usr_intf/stepconf/stepconf.py:1337 -msgid "Other" +#: src/emc/usr_intf/stepconf/spindle.glade:129 +msgid "_PWM 1:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1249 -msgid "Quit Stepconf and discard changes?" +#: src/emc/usr_intf/stepconf/spindle.glade:148 +msgid "S_peed 2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1280 -msgid "" -"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " -"of hardware is unavailable." +#: src/emc/usr_intf/stepconf/spindle.glade:164 +msgid "P_WM 2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1283 -msgid "" -"You are using a realtime version of LinuxCNC but didn't load a realtime " -"kernel so testing / tuning of hardware is unavailable.\n" -"This is possibly because you updated the OS and it doesn't automatically " -"load the RTAI kernel anymore.\n" +#: src/emc/usr_intf/stepconf/spindle.glade:183 +msgid "PWM _Rate:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1298 -msgid "LinuxCNC 'stepconf' configuration files" +#: src/emc/usr_intf/stepconf/spindle.glade:285 +msgid "_Cycles per revolution:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1299 -#: src/emc/usr_intf/pncconf/pncconf.py:4094 -msgid "Modify Existing Configuration" +#: src/emc/usr_intf/stepconf/spindle.glade:347 +msgid "Enter 0 Hz for \"PDM\" mode" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1439 -msgid "" -"You need to designate an E-stop input pin in the Parallel Port Setup page " -"for this program." +#: src/emc/usr_intf/stepconf/spindle.glade:360 +msgid "Scale %" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1452 -msgid "" -"OK to replace existing custom ladder program?\n" -"Existing Custom.clp will be renamed custom_backup.clp.\n" -"Any existing file named -custom_backup.clp- will be lost. " +#: src/emc/usr_intf/stepconf/options.glade:50 +msgid "Include Halui user interface component" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1457 -#: src/emc/usr_intf/pncconf/pncconf.py:7815 -msgid "" -"You edited a ladder program and have selected a different program to copy to " -"your configuration file.\n" -"The edited program will be lost.\n" -"\n" -"Are you sure? " -msgstr "" +#: src/emc/usr_intf/stepconf/options.glade:102 +#: src/emc/usr_intf/pncconf/pncconf.glade:6753 +#, fuzzy +msgid "Blank program" +msgstr "Program indítás" -#: src/emc/usr_intf/stepconf/stepconf.py:1471 -msgid "" -"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" -"Existing custompanel.xml and custom_postgui.hal will be renamed " -"custompanel_backup.xml and postgui_backup.hal.\n" -"Any existing file named custompanel_backup.xml and custom_postgui.hal will " -"be lost. " -msgstr "" +#: src/emc/usr_intf/stepconf/options.glade:119 +#: src/emc/usr_intf/pncconf/pncconf.glade:6768 +#, fuzzy +msgid "Spindle speed display " +msgstr "Túlhajtás (%):" -#: src/emc/usr_intf/stepconf/stepconf.py:1676 -msgid "degree / rev" +#: src/emc/usr_intf/stepconf/options.glade:136 +#: src/emc/usr_intf/stepconf/options.glade:671 +#: src/emc/usr_intf/pncconf/pncconf.glade:6799 +#: src/emc/usr_intf/pncconf/pncconf.glade:7120 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Existing custom program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1677 -#: src/emc/usr_intf/stepconf/stepconf.py:2205 -msgid "deg / s" +#: src/emc/usr_intf/stepconf/options.glade:153 +#: src/emc/usr_intf/stepconf/options.glade:688 +#: src/emc/usr_intf/pncconf/pncconf.glade:6814 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include connections to HAL" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1678 -#: src/emc/usr_intf/stepconf/stepconf.py:2206 -msgid "deg / s²" +#: src/emc/usr_intf/stepconf/options.glade:202 +#: src/emc/usr_intf/pncconf/pncconf.glade:6997 +#: src/emc/usr_intf/pncconf/pncconf.glade:7545 +msgid "" +"_Display\n" +"sample\n" +"panel" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1679 -#: src/emc/usr_intf/stepconf/stepconf.py:2207 -msgid "deg" +#: src/emc/usr_intf/stepconf/options.glade:243 +#: src/emc/usr_intf/pncconf/pncconf.glade:7056 +msgid "Include custom PyVCP GUI panel" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1680 -msgid "Steps / deg" +#: src/emc/usr_intf/stepconf/options.glade:414 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (float) out pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1682 -#: src/emc/usr_intf/stepconf/stepconf.glade:3589 -#: src/emc/usr_intf/pncconf/pncconf.glade:66138 -#: src/emc/usr_intf/pncconf/pncconf.glade:66424 -msgid "mm / rev" +#: src/emc/usr_intf/stepconf/options.glade:429 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (float) in pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1683 -#: src/emc/usr_intf/stepconf/stepconf.py:2219 -#: src/emc/usr_intf/stepconf/stepconf.glade:3604 -#: src/emc/usr_intf/pncconf/pncconf.glade:57828 -msgid "mm / s" +#: src/emc/usr_intf/stepconf/options.glade:444 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (s32) out pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1684 -#: src/emc/usr_intf/stepconf/stepconf.py:2220 -#: src/emc/usr_intf/stepconf/stepconf.glade:3619 -#: src/emc/usr_intf/pncconf/pncconf.glade:57813 -msgid "mm / s²" +#: src/emc/usr_intf/stepconf/options.glade:459 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (s32) in pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1686 -#: src/emc/usr_intf/stepconf/stepconf.glade:3075 -#: src/emc/usr_intf/pncconf/pncconf.glade:66888 -msgid "Steps / mm" +#: src/emc/usr_intf/stepconf/options.glade:475 +msgid "Number of digital out pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1688 -msgid "rev / in" +#: src/emc/usr_intf/stepconf/options.glade:506 +msgid "Number of digital in pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1689 -#: src/emc/usr_intf/stepconf/stepconf.py:2233 -msgid "in / s" +#: src/emc/usr_intf/stepconf/options.glade:518 +msgid "setup number of external pins" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1690 -#: src/emc/usr_intf/stepconf/stepconf.py:2234 -msgid "in / s²" +#: src/emc/usr_intf/stepconf/options.glade:533 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include modbus master support" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1692 -msgid "Steps / in" -msgstr "" +#: src/emc/usr_intf/stepconf/options.glade:625 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Blank ladder program" +msgstr "Program szünet" -#: src/emc/usr_intf/stepconf/stepconf.py:2202 -#: src/emc/usr_intf/pncconf/pncconf.py:8893 -#, python-format -msgid "%s Axis Test" -msgstr "" +#: src/emc/usr_intf/stepconf/options.glade:638 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Estop ladder program" +msgstr "Program megszakítása" -#: src/emc/usr_intf/stepconf/stepconf.glade:8 -#: src/emc/usr_intf/stepconf/stepconf.glade:21 -msgid "LinuxCNC Stepper Mill Configuration" -msgstr "" +#: src/emc/usr_intf/stepconf/options.glade:654 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Serial modbus program" +msgstr "Program szünet" -#: src/emc/usr_intf/stepconf/stepconf.glade:22 +#: src/emc/usr_intf/stepconf/options.glade:740 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" -"This program creates configuration files (.ini and .hal) for \"step and " -"direction\" milling machines and lathes connected to the PC parallel port.\n" -"\n" -"Stepconf requires a minimum 800 X 600 display resolution.\n" -"You may need to collapse the 'Driver Timing Settings' and \n" -"Parallel Port Settings' expanders." +"Edit ladder\n" +"program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:51 -msgid "Create a _new configuration" +#: src/emc/usr_intf/stepconf/options.glade:781 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include _Classicladder PLC" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:69 -#: src/emc/usr_intf/pncconf/pncconf.glade:70 -msgid "Modify a configuration already created with this program" +#: src/emc/usr_intf/stepconf/options.glade:802 +msgid "_Onscreen prompt for manual tool change" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:87 -#: src/emc/usr_intf/pncconf/pncconf.glade:88 -msgid "Do you wish to:" +#: src/emc/usr_intf/stepconf/axisx.glade:31 +#: src/emc/usr_intf/stepconf/axisy.glade:31 +#: src/emc/usr_intf/stepconf/axisz.glade:31 +#: src/emc/usr_intf/stepconf/axisa.glade:45 +msgid "_Motor steps per revolution:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:99 -#: src/emc/usr_intf/pncconf/pncconf.glade:100 -msgid "" -"If you have made modifications to this configuration outside this program, " -"they will be lost when you select \"Modify a configuration\"" +#: src/emc/usr_intf/stepconf/axisx.glade:45 +#: src/emc/usr_intf/stepconf/axisy.glade:44 +#: src/emc/usr_intf/stepconf/axisz.glade:44 +#: src/emc/usr_intf/stepconf/axisa.glade:58 +msgid "_Driver Microstepping:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:116 -msgid "Create a desktop _shortcut (symlink) to configuration files." +#: src/emc/usr_intf/stepconf/axisx.glade:61 +#: src/emc/usr_intf/stepconf/axisy.glade:59 +#: src/emc/usr_intf/stepconf/axisz.glade:59 +#: src/emc/usr_intf/stepconf/axisa.glade:73 +msgid "_Pulley teeth (Motor:Leadscrew):" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:133 -msgid "Create a desktop _launcher to start LinuxCNC with this configuration." +#: src/emc/usr_intf/stepconf/axisx.glade:77 +#: src/emc/usr_intf/stepconf/axisy.glade:74 +#: src/emc/usr_intf/stepconf/axisz.glade:74 +#: src/emc/usr_intf/stepconf/axisa.glade:88 +msgid "_Leadscrew Pitch:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:169 -#: src/emc/usr_intf/pncconf/pncconf.glade:175 -#, fuzzy -msgid "Basic machine information" -msgstr "Mutasd a gép pozícióját" - -#: src/emc/usr_intf/stepconf/stepconf.glade:327 -msgid "Step _Time:" +#: src/emc/usr_intf/stepconf/axisx.glade:93 +#: src/emc/usr_intf/stepconf/axisy.glade:89 +#: src/emc/usr_intf/stepconf/axisz.glade:89 +#: src/emc/usr_intf/stepconf/axisa.glade:103 +#: src/emc/usr_intf/pncconf/pncconf.glade:64687 +msgid "Maximum _Velocity:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:356 -#: src/emc/usr_intf/stepconf/stepconf.glade:402 -#: src/emc/usr_intf/stepconf/stepconf.glade:449 -#: src/emc/usr_intf/stepconf/stepconf.glade:494 -#: src/emc/usr_intf/stepconf/stepconf.glade:909 -#: src/emc/usr_intf/pncconf/pncconf.glade:458 -#: src/emc/usr_intf/pncconf/pncconf.glade:8256 -msgid "ns" +#: src/emc/usr_intf/stepconf/axisx.glade:109 +#: src/emc/usr_intf/stepconf/axisy.glade:104 +#: src/emc/usr_intf/stepconf/axisz.glade:104 +#: src/emc/usr_intf/stepconf/axisa.glade:118 +#: src/emc/usr_intf/pncconf/pncconf.glade:64702 +msgid "Maximum _Acceleration:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:369 -msgid "Step _Space:" +#: src/emc/usr_intf/stepconf/axisx.glade:125 +#: src/emc/usr_intf/stepconf/axisy.glade:119 +#: src/emc/usr_intf/stepconf/axisz.glade:119 +#: src/emc/usr_intf/stepconf/axisa.glade:133 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Time to accelerate to max speed:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:417 -msgid "Direction _Hold:" +#: src/emc/usr_intf/stepconf/axisx.glade:141 +#: src/emc/usr_intf/stepconf/axisy.glade:134 +#: src/emc/usr_intf/stepconf/axisz.glade:134 +#: src/emc/usr_intf/stepconf/axisa.glade:148 +msgid "Distance to accelerate to max speed:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:464 -msgid "_Direction Setup:" +#: src/emc/usr_intf/stepconf/axisx.glade:271 +#: src/emc/usr_intf/stepconf/axisy.glade:263 +#: src/emc/usr_intf/stepconf/axisz.glade:263 +#: src/emc/usr_intf/stepconf/axisa.glade:277 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulse rate at max speed:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:512 -msgid "Driver Timing Settings" +#: src/emc/usr_intf/stepconf/axisx.glade:342 +#: src/emc/usr_intf/stepconf/axisy.glade:334 +#: src/emc/usr_intf/stepconf/axisz.glade:334 +#: src/emc/usr_intf/stepconf/axisa.glade:348 +msgid "_Home location:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:538 -msgid "First Parport _Base Address:" +#: src/emc/usr_intf/stepconf/axisx.glade:358 +#: src/emc/usr_intf/stepconf/axisy.glade:349 +#: src/emc/usr_intf/stepconf/axisz.glade:349 +#: src/emc/usr_intf/stepconf/axisa.glade:363 +msgid "Home _Switch location:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:564 -msgid " Out" +#: src/emc/usr_intf/stepconf/axisx.glade:374 +#: src/emc/usr_intf/stepconf/axisy.glade:364 +#: src/emc/usr_intf/stepconf/axisz.glade:364 +#: src/emc/usr_intf/stepconf/axisa.glade:378 +msgid "Home Sear_ch velocity:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:575 -#: src/emc/usr_intf/stepconf/stepconf.glade:591 -msgid "" -"Out\n" -"In" +#: src/emc/usr_intf/stepconf/axisx.glade:390 +#: src/emc/usr_intf/stepconf/axisy.glade:379 +#: src/emc/usr_intf/stepconf/axisz.glade:379 +#: src/emc/usr_intf/stepconf/axisa.glade:393 +msgid "Home La_tch direction:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:633 -msgid "S_econd Parport Address:" +#: src/emc/usr_intf/stepconf/axisx.glade:404 +#: src/emc/usr_intf/stepconf/axisy.glade:393 +#: src/emc/usr_intf/stepconf/axisz.glade:393 +#: src/emc/usr_intf/stepconf/axisa.glade:407 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "_:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:650 -msgid "T_hird Parport Address:" +#: src/emc/usr_intf/stepconf/axisx.glade:498 +#: src/emc/usr_intf/stepconf/axisy.glade:486 +#: src/emc/usr_intf/stepconf/axisz.glade:486 +#: src/emc/usr_intf/stepconf/axisa.glade:500 +msgid "Tab_le travel:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:667 -msgid " Parallel Port Settings" +#: src/emc/usr_intf/stepconf/axisx.glade:531 +#: src/emc/usr_intf/stepconf/axisy.glade:518 +#: src/emc/usr_intf/stepconf/axisz.glade:518 +#: src/emc/usr_intf/stepconf/axisa.glade:532 +msgid "t_o" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:684 -msgid "" -"_Test Base\n" -"Period Jitter " +#: src/emc/usr_intf/stepconf/axisx.glade:677 +#: src/emc/usr_intf/stepconf/axisy.glade:663 +#: src/emc/usr_intf/stepconf/axisz.glade:663 +#: src/emc/usr_intf/stepconf/axisa.glade:677 +msgid "s" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:703 +#: src/emc/usr_intf/stepconf/axisx.glade:738 +#: src/emc/usr_intf/stepconf/axisy.glade:724 +#: src/emc/usr_intf/stepconf/axisz.glade:724 +#: src/emc/usr_intf/stepconf/axisa.glade:738 #, fuzzy -msgid "Machine _Name:" -msgstr "Gép" - -#: src/emc/usr_intf/stepconf/stepconf.glade:716 -msgid "_Axis configuration:" -msgstr "" +msgid "T_est this axis" +msgstr "3. tengely léptetés" -#: src/emc/usr_intf/stepconf/stepconf.glade:730 +#: src/emc/usr_intf/stepconf/axisx.glade:765 +#: src/emc/usr_intf/stepconf/axisy.glade:751 +#: src/emc/usr_intf/stepconf/axisz.glade:751 +#: src/emc/usr_intf/stepconf/axisa.glade:765 #, fuzzy -msgid "Machine _units:" -msgstr "Gép" - -#: src/emc/usr_intf/stepconf/stepconf.glade:744 -#: src/emc/usr_intf/pncconf/pncconf.glade:246 -msgid "Configuration directory:" -msgstr "" +msgid "Axis SCALE:" +msgstr "Tengely:" -#: src/emc/usr_intf/stepconf/stepconf.glade:757 -msgid "D_river type:" +#: src/emc/usr_intf/stepconf/axisx.glade:833 +#: src/emc/usr_intf/stepconf/axisy.glade:819 +#: src/emc/usr_intf/stepconf/axisz.glade:819 +#: src/emc/usr_intf/stepconf/axisa.glade:12 +msgid "Same" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:785 -#: src/emc/usr_intf/pncconf/pncconf.glade:326 -msgid "" -"Inch\n" -"Millimeter" -msgstr "" +#: src/emc/usr_intf/stepconf/axisx.glade:836 +#: src/emc/usr_intf/stepconf/axisy.glade:822 +#: src/emc/usr_intf/stepconf/axisz.glade:822 +#: src/emc/usr_intf/stepconf/axisa.glade:15 +#, fuzzy +msgid "Opposite" +msgstr "Pozíció:" -#: src/emc/usr_intf/stepconf/stepconf.glade:800 -#: src/emc/usr_intf/pncconf/pncconf.glade:291 +#: src/emc/usr_intf/stepconf/finished.glade:6 msgid "" -"XYZ\n" -"XYZA\n" -"XZ (Lathe)" +"All the necessary information has now been gathered. \n" +"Click \"Done\" to write your configuration files to disk.\n" +"\n" +"If you experience lockups while running LinuxCNC:\n" +"-you will need to decrease the maximum velocity which will have the effect " +"of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC:\n" +"-first verify that you entered the proper timings for your stepper " +"drivers. \n" +"-then run a more thorough latency test as described on the linuxcnc.org " +"wiki.\n" +" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" +"\n" +"If you experience the \"Unexpected Realtime Delay\" message:\n" +"-run a more thorough latency test as described on the linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:847 +#: src/emc/usr_intf/pncconf/pncconf.py:81 msgid "" -"Driver characteristics: (Multiply by 1000 for times specified in µs or " -"microseconds)\n" -" Additional signal conditioning or isolation such as optocouplers " -"and RC filters\n" -" can impose timing constraints of their own, in addition to those of " -"the driver." +"PNCconf encountered an error. The following information may be useful in " +"troubleshooting:\n" +"\n" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:875 -msgid "Base Period Maximum _Jitter:" +#: src/emc/usr_intf/pncconf/pncconf.py:149 +msgid "Keling 4030" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:924 -msgid "Max step rate:" +#: src/emc/usr_intf/pncconf/pncconf.py:151 +msgid "Not Used" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:940 -msgid "Min Base Period:" +#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:176 +msgid "Dummy" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:956 -msgid "" -"_Onscreen prompt for\n" -"tool change" +#: src/emc/usr_intf/pncconf/pncconf.py:152 +msgid "8i20 Servo Drive" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1015 -msgid "Advanced Configuration Options" +#: src/emc/usr_intf/pncconf/pncconf.py:153 +msgid "POT Output" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1033 -msgid "Include Halui user interface component" +#: src/emc/usr_intf/pncconf/pncconf.py:153 +msgid "POT Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1074 -#: src/emc/usr_intf/pncconf/pncconf.glade:6745 -#, fuzzy -msgid "Blank program" -msgstr "Program indítás" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1089 -#: src/emc/usr_intf/pncconf/pncconf.glade:6760 +#: src/emc/usr_intf/pncconf/pncconf.py:153 #, fuzzy -msgid "Spindle speed display " -msgstr "Túlhajtás (%):" +msgid "POT Direction" +msgstr "Fő orsó fék bekapcsolva" -#: src/emc/usr_intf/stepconf/stepconf.glade:1105 -#: src/emc/usr_intf/stepconf/stepconf.glade:1543 -#: src/emc/usr_intf/pncconf/pncconf.glade:6791 -#: src/emc/usr_intf/pncconf/pncconf.glade:7112 -#: src/emc/usr_intf/pncconf/pncconf.glade:59393 -msgid "Existing custom program" +#: src/emc/usr_intf/pncconf/pncconf.py:154 +msgid "GPIO Input" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1120 -#: src/emc/usr_intf/stepconf/stepconf.glade:1559 -#: src/emc/usr_intf/pncconf/pncconf.glade:6806 -#: src/emc/usr_intf/pncconf/pncconf.glade:59409 -msgid "Include connections to HAL" +#: src/emc/usr_intf/pncconf/pncconf.py:154 +msgid "GPIO Output" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1154 -#: src/emc/usr_intf/pncconf/pncconf.glade:6989 -#: src/emc/usr_intf/pncconf/pncconf.glade:7537 -msgid "" -"_Display\n" -"sample\n" -"panel" +#: src/emc/usr_intf/pncconf/pncconf.py:154 +msgid "GPIO O Drain" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1188 -#: src/emc/usr_intf/pncconf/pncconf.glade:7048 -msgid "Include custom PyVCP GUI panel" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-A" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1321 -#: src/emc/usr_intf/pncconf/pncconf.glade:59199 -msgid " Number of analog (float) out pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-B" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1335 -#: src/emc/usr_intf/pncconf/pncconf.glade:59184 -msgid " Number of analog (float) in pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-I" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1349 -#: src/emc/usr_intf/pncconf/pncconf.glade:59169 -msgid " Number of analog (s32) out pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-M" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1363 -#: src/emc/usr_intf/pncconf/pncconf.glade:59153 -msgid " Number of analog (s32) in pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "Muxed Encoder 0" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1378 -msgid "Number of digital out pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "Muxed Encoder 1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1403 -msgid "Number of digital in pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "muxed enc" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1414 -msgid "setup number of external pins" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "mux enc mask" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1429 -#: src/emc/usr_intf/pncconf/pncconf.glade:59213 -msgid "Include modbus master support" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "mux select" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1500 -#: src/emc/usr_intf/pncconf/pncconf.glade:59333 -#, fuzzy -msgid "Blank ladder program" -msgstr "Program szünet" +#: src/emc/usr_intf/pncconf/pncconf.py:157 +msgid "Resolver 0 Encoder" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1513 -#: src/emc/usr_intf/pncconf/pncconf.glade:59346 -#, fuzzy -msgid "Estop ladder program" -msgstr "Program megszakítása" +#: src/emc/usr_intf/pncconf/pncconf.py:157 +msgid "Resolver 1 Encoder" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1527 -#: src/emc/usr_intf/pncconf/pncconf.glade:59377 -#, fuzzy -msgid "Serial modbus program" -msgstr "Program szünet" +#: src/emc/usr_intf/pncconf/pncconf.py:157 +msgid "Resolver 2 Encoder" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1592 -#: src/emc/usr_intf/pncconf/pncconf.glade:59443 -msgid "" -"Edit ladder\n" -"program" +#: src/emc/usr_intf/pncconf/pncconf.py:158 +msgid "Resolver 3 Encoder" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1628 -#: src/emc/usr_intf/pncconf/pncconf.glade:59479 -msgid "Include _Classicladder PLC" +#: src/emc/usr_intf/pncconf/pncconf.py:158 +msgid "Resolver 4 Encoder" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1653 -msgid "Parallel Port Setup" +#: src/emc/usr_intf/pncconf/pncconf.py:158 +msgid "Resolver 5 Encoder" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1760 -#: src/emc/usr_intf/pncconf/pncconf.glade:54010 -msgid "Pin _1:" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +#, fuzzy +msgid "Step Gen-A" +msgstr "Program léptetés" + +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Dir Gen-B" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1774 -#: src/emc/usr_intf/pncconf/pncconf.glade:54024 -#: src/emc/usr_intf/pncconf/pncconf.glade:55239 -msgid "Pin _2:" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Step/Dir Gen-C" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1788 -#: src/emc/usr_intf/pncconf/pncconf.glade:54038 -#: src/emc/usr_intf/pncconf/pncconf.glade:55256 -msgid "Pin _3:" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Step/Dir Gen-D" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1802 -#: src/emc/usr_intf/pncconf/pncconf.glade:54052 -#: src/emc/usr_intf/pncconf/pncconf.glade:55273 -msgid "Pin _4:" +#: src/emc/usr_intf/pncconf/pncconf.py:160 +msgid "Step/Dir Gen-E" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1816 -#: src/emc/usr_intf/pncconf/pncconf.glade:54066 -#: src/emc/usr_intf/pncconf/pncconf.glade:55290 -msgid "Pin _5:" +#: src/emc/usr_intf/pncconf/pncconf.py:160 +msgid "Step/dir Gen-F" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1830 -#: src/emc/usr_intf/pncconf/pncconf.glade:54080 -#: src/emc/usr_intf/pncconf/pncconf.glade:55307 -msgid "Pin _6:" +#: src/emc/usr_intf/pncconf/pncconf.py:161 +msgid "Pulse Width Gen-P" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1844 -#: src/emc/usr_intf/pncconf/pncconf.glade:54094 -#: src/emc/usr_intf/pncconf/pncconf.glade:55324 -msgid "Pin _7:" +#: src/emc/usr_intf/pncconf/pncconf.py:161 +msgid "Pulse Width Gen-D" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1858 -#: src/emc/usr_intf/pncconf/pncconf.glade:54108 -#: src/emc/usr_intf/pncconf/pncconf.glade:55341 -msgid "Pin _8:" +#: src/emc/usr_intf/pncconf/pncconf.py:161 +msgid "Pulse Width Gen-E" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1872 -#: src/emc/usr_intf/pncconf/pncconf.glade:54122 -#: src/emc/usr_intf/pncconf/pncconf.glade:55358 -msgid "Pin _9:" +#: src/emc/usr_intf/pncconf/pncconf.py:162 +msgid "Pulse Density Gen-P" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1886 -#: src/emc/usr_intf/pncconf/pncconf.glade:54136 -msgid "_Pin 14:" +#: src/emc/usr_intf/pncconf/pncconf.py:162 +msgid "Pulse Density Gen-D" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1900 -#: src/emc/usr_intf/pncconf/pncconf.glade:54150 -msgid "P_in 16:" +#: src/emc/usr_intf/pncconf/pncconf.py:162 +msgid "Pulse Density Gen-E" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1914 -#: src/emc/usr_intf/pncconf/pncconf.glade:54164 -msgid "Pi_n 17:" +#: src/emc/usr_intf/pncconf/pncconf.py:163 +msgid "Up/Down Mode -Up" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2258 -msgid "Outputs (PC to Mill):" +#: src/emc/usr_intf/pncconf/pncconf.py:163 +msgid "Up/Down Mode-Down" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2270 -#: src/emc/usr_intf/pncconf/pncconf.glade:55222 -msgid "Pin 1_0:" +#: src/emc/usr_intf/pncconf/pncconf.py:163 +msgid "Up/Down Mode-Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2286 -#: src/emc/usr_intf/pncconf/pncconf.glade:55206 -msgid "Pin 1_1:" +#: src/emc/usr_intf/pncconf/pncconf.py:164 +msgid "Motor Phase A" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2302 -#: src/emc/usr_intf/pncconf/pncconf.glade:55190 -msgid "Pin 1_2:" +#: src/emc/usr_intf/pncconf/pncconf.py:164 +msgid "Motor Phase B" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2318 -#: src/emc/usr_intf/pncconf/pncconf.glade:55174 -msgid "Pin 1_3:" +#: src/emc/usr_intf/pncconf/pncconf.py:164 +msgid "Motor Phase C" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2334 -#: src/emc/usr_intf/pncconf/pncconf.glade:55158 -msgid "Pin 1_5:" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Phase A Not" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2399 -msgid "Inputs (Mill to PC):" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Phase B Not" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2425 -#: src/emc/usr_intf/stepconf/stepconf.glade:2438 -#: src/emc/usr_intf/pncconf/pncconf.glade:54578 -#: src/emc/usr_intf/pncconf/pncconf.glade:54591 -msgid "Invert" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Phase C Not" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2887 -msgid "_Sherline Outputs" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2905 -msgid "_Xylotex Outputs" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Fault" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2923 -msgid "Output pinout presets:" +#: src/emc/usr_intf/pncconf/pncconf.py:168 +msgid "SMARTSERIAL-P0-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3022 -#: src/emc/usr_intf/pncconf/pncconf.glade:57970 -msgid "X Axis Configuration" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P0-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3090 -msgid "_Motor steps per revolution:" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P0-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3103 -msgid "_Driver Microstepping:" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3118 -msgid "_Pulley teeth (Motor:Leadscrew):" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3133 -msgid "_Leadscrew Pitch:" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3148 -#: src/emc/usr_intf/pncconf/pncconf.glade:57858 -msgid "Maximum _Velocity:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3163 -#: src/emc/usr_intf/pncconf/pncconf.glade:57843 -msgid "Maximum _Acceleration:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3178 -#: src/emc/usr_intf/pncconf/pncconf.glade:67063 -msgid "Time to accelerate to max speed:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3193 -msgid "Distance to accelerate to max speed:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3292 -#: src/emc/usr_intf/pncconf/pncconf.glade:67036 -msgid "Pulse rate at max speed:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3362 -msgid "_Home location:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3377 -msgid "Home _Switch location:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3392 -msgid "Home Sear_ch velocity:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3407 -msgid "Home La_tch direction:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3420 -#: src/emc/usr_intf/pncconf/pncconf.glade:66232 -#: src/emc/usr_intf/pncconf/pncconf.glade:66274 -#: src/emc/usr_intf/pncconf/pncconf.glade:66505 -#: src/emc/usr_intf/pncconf/pncconf.glade:66570 -msgid "_:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3437 -#: src/emc/usr_intf/pncconf/pncconf.glade:58536 -msgid "" -"Same\n" -"Opposite" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3492 -msgid "Tab_le travel:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3519 -msgid "t_o" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3649 -msgid "s" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3703 -#, fuzzy -msgid "T_est this axis" -msgstr "3. tengely léptetés" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3729 -#, fuzzy -msgid "Axis SCALE:" -msgstr "Tengely:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3765 -#, fuzzy -msgid "Spindle Configuration" -msgstr "Fő orsó fék bekapcsolva" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3785 -msgid "Use spindle-at-speed:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3841 -msgid "Speed display filter gain:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3870 -msgid "Calibration:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3883 -msgid "_Speed 1:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3898 -msgid "_PWM 1:" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS0)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3916 -msgid "S_peed 2:" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS2)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3931 -msgid "P_WM 2:" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS3)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3949 -msgid "PWM _Rate:" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 I/O (SS0)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4025 -msgid "_Cycles per revolution:" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 Analog (SS1)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4079 -msgid "Enter 0 Hz for \"PDM\" mode" +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 I/O (SS3)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4091 -msgid "Scale %" +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 Analog (SS4)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:60002 -msgid "Machine configuration complete" +#: src/emc/usr_intf/pncconf/pncconf.py:176 +#, fuzzy +msgid "Analog Input" +msgstr "Kézi vezérlés" + +#: src/emc/usr_intf/pncconf/pncconf.py:277 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +msgid "Axis Selection" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4114 -#: src/emc/usr_intf/pncconf/pncconf.glade:60003 +#: src/emc/usr_intf/pncconf/pncconf.py:285 msgid "" -"All the necessary information has now been gathered. Click \"Apply\" to " -"write your configuration files to disk.\n" -"If you experience lockups while running LinuxCNC, you will need to decrease " -"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" -"\n" -"If you experience lost steps while running LinuxCNC, first verify that you " -"entered the proper timings for your stepper drivers. If that does not fix " -"the problem, then run a more thorough latency test as described on the " -"linuxcnc.org wiki:\n" -" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" -"\n" -"If you experience the \"Unexpected Realtime Delay\" message, run a more " -"thorough latency test as described on the linuxcnc.org wiki: \n" -" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" +"7i64-Input\n" +"P3 and P4" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4160 -#: src/emc/usr_intf/pncconf/pncconf.glade:60462 -#: src/emc/usr_intf/pncconf/pncconf.glade:61557 -#: src/emc/usr_intf/pncconf/pncconf.glade:62650 -#: src/emc/usr_intf/pncconf/pncconf.glade:63743 -#: src/emc/usr_intf/pncconf/pncconf.glade:64842 -msgid "Acceleration:" +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "" +"7i64-Output\n" +"P2 and P5" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4174 -#: src/emc/usr_intf/pncconf/pncconf.glade:60231 -#: src/emc/usr_intf/pncconf/pncconf.glade:60695 -#: src/emc/usr_intf/pncconf/pncconf.glade:61788 -#: src/emc/usr_intf/pncconf/pncconf.glade:62881 -#: src/emc/usr_intf/pncconf/pncconf.glade:63974 -#: src/emc/usr_intf/pncconf/pncconf.glade:64954 -msgid "Jog:" +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "7i64-Analog In" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4188 -#: src/emc/usr_intf/pncconf/pncconf.glade:60681 -#: src/emc/usr_intf/pncconf/pncconf.glade:61774 -#: src/emc/usr_intf/pncconf/pncconf.glade:62867 -#: src/emc/usr_intf/pncconf/pncconf.glade:63960 -msgid "Test Area:" +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4217 -msgid "mm/s^2" +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4253 -msgid "mm/s" +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4329 -#: src/emc/usr_intf/pncconf/pncconf.glade:60620 -#: src/emc/usr_intf/pncconf/pncconf.glade:61713 -#: src/emc/usr_intf/pncconf/pncconf.glade:62806 -#: src/emc/usr_intf/pncconf/pncconf.glade:63899 -#: src/emc/usr_intf/pncconf/pncconf.glade:65066 +#: src/emc/usr_intf/pncconf/pncconf.py:301 msgid "" -"±\n" -"+\n" -"-\n" +"7i70-Input\n" +"TB2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:79 +#: src/emc/usr_intf/pncconf/pncconf.py:309 msgid "" -"PNCconf encountered an error. The following information may be useful in " -"troubleshooting:\n" -"\n" +"7i71-Output\n" +"TB3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:149 -msgid "Not Used" +#: src/emc/usr_intf/pncconf/pncconf.py:309 +msgid "" +"7i71-Output\n" +"TB2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:149 -#: src/emc/usr_intf/pncconf/pncconf.py:150 -msgid "Dummy" +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-I/O\n" +"TB6" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:150 -msgid "8i20 Servo Drive" +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-I/O\n" +"TB5" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:151 -msgid "POT Output" +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-Analog Output\n" +"TB4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:151 -msgid "POT Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:151 -#, fuzzy -msgid "POT Direction" -msgstr "Fő orsó fék bekapcsolva" - -#: src/emc/usr_intf/pncconf/pncconf.py:152 -msgid "GPIO Input" +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB7" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:152 -msgid "GPIO Output" +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-Analog Output\n" +"TB5" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:152 -msgid "GPIO O Drain" +#: src/emc/usr_intf/pncconf/pncconf.py:333 +msgid "7i73-I/O\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-A" +#: src/emc/usr_intf/pncconf/pncconf.py:348 +msgid "Unused Unused" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-B" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +#, fuzzy +msgid "Machine Is Enabled" +msgstr "Gép" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-I" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "X Amplifier Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-M" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "Y Amplifier Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "Muxed Encoder 0" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "Z Amplifier Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "Muxed Encoder 1" +#: src/emc/usr_intf/pncconf/pncconf.py:371 +msgid "A Amplifier Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "muxed enc" +#: src/emc/usr_intf/pncconf/pncconf.py:371 +msgid "Force Pin True" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "mux enc mask" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "mux select" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:155 -msgid "Resolver 0 Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:155 -msgid "Resolver 1 Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:155 -msgid "Resolver 2 Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:156 -msgid "Resolver 3 Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:156 -msgid "Resolver 4 Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:156 -msgid "Resolver 5 Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -#, fuzzy -msgid "Step Gen-A" -msgstr "Program léptetés" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y HALL 2" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -msgid "Dir Gen-B" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -msgid "Step/Dir Gen-C" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -msgid "Step/Dir Gen-D" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:158 -msgid "Step/Dir Gen-E" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:158 -msgid "Step/dir Gen-F" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 -msgid "Pulse Width Gen-P" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 -msgid "Pulse Width Gen-D" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 -msgid "Pulse Width Gen-E" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 -msgid "Pulse Density Gen-P" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 -msgid "Pulse Density Gen-D" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 -msgid "Pulse Density Gen-E" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 -msgid "Up/Down Mode -Up" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 -msgid "Up/Down Mode-Down" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 -msgid "Up/Down Mode-Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 -msgid "Motor Phase A" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 -msgid "Motor Phase B" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 -msgid "Motor Phase C" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Phase A Not" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Phase B Not" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Phase C Not" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Fault" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:165 -msgid "SMARTSERIAL-P0-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P0-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P0-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:378 +msgid "Unused Output" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-EN" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:378 +#, fuzzy +msgid "Coolant" +msgstr "Hűtés:" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:379 +msgid "Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +msgid "Digital" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:410 +msgid "X BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 +msgid "Y BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 +msgid "Z BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 +msgid "A BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:381 +msgid " S BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:381 +#: src/emc/usr_intf/pncconf/pncconf.py:412 +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#: src/emc/usr_intf/pncconf/pncconf.py:516 +#: src/emc/usr_intf/pncconf/pncconf.py:519 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.py:528 +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#: src/emc/usr_intf/pncconf/pncconf.py:568 +#: src/emc/usr_intf/pncconf/pncconf.py:580 +msgid "Custom Signals" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 +msgid "X Minimum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 +msgid "Y Minimum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 +msgid "Z Minimum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 +msgid "A Minimum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 +msgid "X Maximum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 +msgid "Y Maximum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 +msgid "Z Maximum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 +msgid "A Maximum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 +msgid "X Both Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 +msgid "Y Both Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #1" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 +msgid "Z Both Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #2" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 +msgid "A Both Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:420 -msgid "Unused Unused" +#: src/emc/usr_intf/pncconf/pncconf.py:386 +#: src/emc/usr_intf/pncconf/pncconf.py:477 +msgid "All Limits" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/pncconf/pncconf.py:387 #, fuzzy -msgid "Machine Is Enabled" -msgstr "Gép" +msgid "X Home" +msgstr "Nullpont" -#: src/emc/usr_intf/pncconf/pncconf.py:442 -msgid "X Amplifier Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:387 +#, fuzzy +msgid "Y Home" +msgstr "Nullpont" + +#: src/emc/usr_intf/pncconf/pncconf.py:387 +#, fuzzy +msgid "Z Home" +msgstr "Nullpont" + +#: src/emc/usr_intf/pncconf/pncconf.py:387 +#, fuzzy +msgid "A Home" +msgstr "Nullpont" + +#: src/emc/usr_intf/pncconf/pncconf.py:387 +#, fuzzy +msgid "All Home" +msgstr "Nullpont" + +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 +msgid "X Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:442 -msgid "Y Amplifier Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 +msgid "Y Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:442 -msgid "Z Amplifier Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 +msgid "Z Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:443 -msgid "A Amplifier Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 +msgid "A Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:443 -msgid "Force Pin True" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 +msgid "X Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 +msgid "Y Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 +msgid "Z Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 +msgid "A Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 +msgid "X Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 +msgid "Y Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 +msgid "Z Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 +msgid "A Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:392 +#, fuzzy +msgid "Joint select A" +msgstr "Lépés a kiválasztott tengelyen" + +#: src/emc/usr_intf/pncconf/pncconf.py:392 +#, fuzzy +msgid "Joint select B" +msgstr "Lépés a kiválasztott tengelyen" + +#: src/emc/usr_intf/pncconf/pncconf.py:392 +#, fuzzy +msgid "Joint select C" +msgstr "Lépés a kiválasztott tengelyen" + +#: src/emc/usr_intf/pncconf/pncconf.py:392 +#, fuzzy +msgid "Joint select D" +msgstr "Lépés a kiválasztott tengelyen" + +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +#, fuzzy +msgid "Feed Override incr A" +msgstr "Túlhajtás (%):" + +#: src/emc/usr_intf/pncconf/pncconf.py:393 +#, fuzzy +msgid "Feed Override incr B" +msgstr "Túlhajtás (%):" + +#: src/emc/usr_intf/pncconf/pncconf.py:394 +#, fuzzy +msgid "Feed Override incr C" +msgstr "Túlhajtás (%):" + +#: src/emc/usr_intf/pncconf/pncconf.py:394 +#, fuzzy +msgid "Feed Override incr D" +msgstr "Túlhajtás (%):" + +#: src/emc/usr_intf/pncconf/pncconf.py:394 +#, fuzzy +msgid "Spindle Override incr A" +msgstr "Túlhajtás (%):" + +#: src/emc/usr_intf/pncconf/pncconf.py:394 +#, fuzzy +msgid "Spindle Override incr B" +msgstr "Túlhajtás (%):" + +#: src/emc/usr_intf/pncconf/pncconf.py:395 +#, fuzzy +msgid "Spindle Override incr C" +msgstr "Túlhajtás (%):" + +#: src/emc/usr_intf/pncconf/pncconf.py:395 +#, fuzzy +msgid "Spindle Override incr D" +msgstr "Túlhajtás (%):" + +#: src/emc/usr_intf/pncconf/pncconf.py:395 +msgid "Max Vel Override incr A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:395 +msgid "Max Vel Override incr B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:396 +msgid "Max Vel Override incr C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:396 +msgid "Max Vel Override incr D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:396 +#, fuzzy +msgid "Feed Override enable" +msgstr "Túlhajtás (%):" + +#: src/emc/usr_intf/pncconf/pncconf.py:396 +#, fuzzy +msgid "Spindle Override enable" +msgstr "Túlhajtás (%):" + +#: src/emc/usr_intf/pncconf/pncconf.py:397 +#, fuzzy +msgid "Max Vel Override enable" +msgstr "Túlhajtás (%):" + +#: src/emc/usr_intf/pncconf/pncconf.py:398 +#, fuzzy +msgid "Manual Spindle CW" +msgstr "Fő orsó:" + +#: src/emc/usr_intf/pncconf/pncconf.py:398 +#, fuzzy +msgid "Manual Spindle CCW" +msgstr "Fő orsó:" + +#: src/emc/usr_intf/pncconf/pncconf.py:398 +#, fuzzy +msgid "Manual Spindle Stop" +msgstr "Fő orsó lassítása [F11]" + +#: src/emc/usr_intf/pncconf/pncconf.py:398 +#, fuzzy +msgid "Spindle Up-To-Speed" +msgstr "Fő orsó lassítása [F11]" + +#: src/emc/usr_intf/pncconf/pncconf.py:399 +msgid "Cycle Start" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:399 +msgid "Abort" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:399 +#, fuzzy +msgid "Single Step" +msgstr "Fő orsó lassítása [F11]" + +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 +msgid "Jog X +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 +msgid "Jog X -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 +msgid "Jog Y +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 +msgid "Jog Y -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 +msgid "Jog Z +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 +msgid "Jog Z -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 +msgid "Jog A +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 +msgid "Jog A -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C2" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:407 +#, fuzzy +msgid "Jog button selected +" +msgstr "Lépés a kiválasztott tengelyen" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C4" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:407 +#, fuzzy +msgid "Jog button selected -" +msgstr "Lépés a kiválasztott tengelyen" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Unused Input" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Limits" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Limts/Home Shared" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S HALL 3" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:409 +#, fuzzy +msgid "Overrides" +msgstr "Határok módosítása" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:410 +#, fuzzy +msgid "Operation" +msgstr "Ismeretlen hiba %s" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C2" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:410 +#, fuzzy +msgid "External Control" +msgstr "Kézi vezérlés" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C4" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:410 +#, fuzzy +msgid "Axis rapid" +msgstr "Tengely:" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:412 +msgid "S BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:450 -msgid "Unused Output" +#: src/emc/usr_intf/pncconf/pncconf.py:487 +msgid "Unused PWM Gen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:450 -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#: src/emc/usr_intf/pncconf/pncconf.py:593 +#: src/emc/usr_intf/pncconf/pncconf.py:487 #, fuzzy -msgid "Spindle" -msgstr "Fő orsó:" +msgid "X Axis PWM" +msgstr "Tengely:" -#: src/emc/usr_intf/pncconf/pncconf.py:450 +#: src/emc/usr_intf/pncconf/pncconf.py:487 #, fuzzy -msgid "Coolant" -msgstr "Hűtés:" +msgid "Y Axis PWM" +msgstr "Tengely:" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -msgid "Control" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#, fuzzy +msgid "Z Axis PWM" +msgstr "Tengely:" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:480 -msgid "Digital" +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#, fuzzy +msgid "A Axis PWM" +msgstr "Tengely:" + +#: src/emc/usr_intf/pncconf/pncconf.py:512 +msgid "X Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:481 -msgid "X BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +msgid "Y Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 -msgid "Y BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +msgid "Z Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 -msgid "Z BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +msgid "A Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 -msgid "A BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +#, fuzzy +msgid "Spindle Encoder" +msgstr "Fő orsó:" + +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "X Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:453 -msgid " S BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "Y Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:453 -#: src/emc/usr_intf/pncconf/pncconf.py:483 -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#: src/emc/usr_intf/pncconf/pncconf.py:585 -#: src/emc/usr_intf/pncconf/pncconf.py:588 -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.py:597 -#: src/emc/usr_intf/pncconf/pncconf.py:614 -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "Custom Signals" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "Z Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 -msgid "X Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "A Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 -msgid "Y Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "Multi Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 -msgid "Z Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:514 +#, fuzzy +msgid "Feed Override" +msgstr "Túlhajtás (%):" + +#: src/emc/usr_intf/pncconf/pncconf.py:514 +#, fuzzy +msgid "spindle Override" +msgstr "Túlhajtás (%):" + +#: src/emc/usr_intf/pncconf/pncconf.py:514 +#, fuzzy +msgid "Max Vel Override" +msgstr "Túlhajtás (%):" + +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "Unused Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 -msgid "A Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "Axis Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 -msgid "X Maximum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "MPG Jog Controls" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 -msgid "Y Maximum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "Override MPG control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 -msgid "Z Maximum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "Unused Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 -msgid "A Maximum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "X Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 -msgid "X Both Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "Y Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 -msgid "Y Both Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "Z Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 -msgid "Z Both Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:519 +msgid "A Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 -msgid "A Both Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:519 +msgid "S Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:458 -#: src/emc/usr_intf/pncconf/pncconf.py:546 -msgid "All Limits" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +msgid "Unused 8I20" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "X Home" -msgstr "Nullpont" +msgid "X Axis" +msgstr "Tengely:" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Y Home" -msgstr "Nullpont" +msgid "Y Axis" +msgstr "Tengely:" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Z Home" -msgstr "Nullpont" +msgid "Z Axis" +msgstr "Tengely:" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "A Home" -msgstr "Nullpont" +msgid "A Axis" +msgstr "Tengely:" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:528 +msgid "Unused Analog Output" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:528 #, fuzzy -msgid "All Home" -msgstr "Nullpont" +msgid "Spindle Output" +msgstr "Fő orsó:" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 -msgid "X Minimum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:551 +msgid "Unused StepGen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 -msgid "Y Minimum Limit + Home" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:551 +#, fuzzy +msgid "X Axis StepGen" +msgstr "Tengely:" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 -msgid "Z Minimum Limit + Home" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:551 +#, fuzzy +msgid "Y Axis StepGen" +msgstr "Tengely:" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 -msgid "A Minimum Limit + Home" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:551 +#, fuzzy +msgid "Z Axis StepGen" +msgstr "Tengely:" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 -msgid "X Maximum Limit + Home" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:552 +#, fuzzy +msgid "A Axis StepGen" +msgstr "Tengely:" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 -msgid "Y Maximum Limit + Home" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:552 +#, fuzzy +msgid "Spindle StepGen" +msgstr "Fő orsó lassítása [F11]" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 -msgid "Z Maximum Limit + Home" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:552 +#, fuzzy +msgid "X2 Tandem StepGen" +msgstr "Fő orsó lassítása [F11]" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 -msgid "A Maximum Limit + Home" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:552 +#, fuzzy +msgid "Y2 Tandem StepGen" +msgstr "Fő orsó lassítása [F11]" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 -msgid "X Both Limit + Home" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#, fuzzy +msgid "Z2 Tandem StepGen" +msgstr "Fő orsó lassítása [F11]" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 -msgid "Y Both Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:553 +msgid "Charge Pump StepGen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 -msgid "Z Both Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:567 +msgid "Unused TPPWM Gen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 -msgid "A Both Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:567 +msgid "X Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -#, fuzzy -msgid "Joint select A" -msgstr "Lépés a kiválasztott tengelyen" - -#: src/emc/usr_intf/pncconf/pncconf.py:464 -#, fuzzy -msgid "Joint select B" -msgstr "Lépés a kiválasztott tengelyen" +#: src/emc/usr_intf/pncconf/pncconf.py:567 +msgid "Y Axis BL Driver" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -#, fuzzy -msgid "Joint select C" -msgstr "Lépés a kiválasztott tengelyen" +#: src/emc/usr_intf/pncconf/pncconf.py:568 +msgid "Z Axis BL Driver" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -#, fuzzy -msgid "Joint select D" -msgstr "Lépés a kiválasztott tengelyen" +#: src/emc/usr_intf/pncconf/pncconf.py:568 +msgid "A Axis BL Driver" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr A" +#: src/emc/usr_intf/pncconf/pncconf.py:568 +msgid "S Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr B" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +#: src/emc/usr_intf/pncconf/pncconf.py:6882 +msgid "Unused Channel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr C" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +msgid "8i20 Amplifier Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr D" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +msgid "7i64 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -#, fuzzy -msgid "Feed Override incr A" -msgstr "Túlhajtás (%):" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +msgid "7i69 I/O Card" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -#, fuzzy -msgid "Feed Override incr B" -msgstr "Túlhajtás (%):" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i70 I/O Card" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#, fuzzy -msgid "Feed Override incr C" -msgstr "Túlhajtás (%):" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i71 I/O Card" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#, fuzzy -msgid "Feed Override incr D" -msgstr "Túlhajtás (%):" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i76 Mode 0 I/O Card" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#, fuzzy -msgid "Spindle Override incr A" -msgstr "Túlhajtás (%):" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i77 Mode 0 I/O Card" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#, fuzzy -msgid "Spindle Override incr B" -msgstr "Túlhajtás (%):" +#: src/emc/usr_intf/pncconf/pncconf.py:578 +msgid "7i73 Mode 1 Pendant Card" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -#, fuzzy -msgid "Spindle Override incr C" -msgstr "Túlhajtás (%):" +#: src/emc/usr_intf/pncconf/pncconf.py:580 +msgid "Unused Analog In" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:467 +#: src/emc/usr_intf/pncconf/pncconf.py:676 #, fuzzy -msgid "Spindle Override incr D" -msgstr "Túlhajtás (%):" +msgid "my_LinuxCNC_machine" +msgstr "Gép" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -msgid "Max Vel Override incr A" +#: src/emc/usr_intf/pncconf/pncconf.py:939 +#: src/emc/usr_intf/pncconf/pncconf.py:941 +msgid "Enter Address" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -msgid "Max Vel Override incr B" +#: src/emc/usr_intf/pncconf/pncconf.py:1290 +msgid "" +"This configuration was saved with an earlier version of pncconf which may be " +"incompatible.\n" +"If it doesn't plainly cause an error, you still may want to save it with " +"another name and check it. Safer to start from scratch.\n" +"If you have a REALLY large config that you wish to convert to this newer " +"version of PNConf - ask on the LinuxCNC forum - it may be possible.." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:468 -msgid "Max Vel Override incr C" +#: src/emc/usr_intf/pncconf/pncconf.py:1296 +#, python-format +msgid "File %r was modified since it was written by PNCconf" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:468 -msgid "Max Vel Override incr D" +#: src/emc/usr_intf/pncconf/pncconf.py:1300 +msgid "" +"Saving this configuration file will discard configuration changes made " +"outside PNCconf." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#, fuzzy -msgid "Manual Spindle CW" -msgstr "Fő orsó:" - -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#, fuzzy -msgid "Manual Spindle CCW" -msgstr "Fő orsó:" - -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#, fuzzy -msgid "Manual Spindle Stop" -msgstr "Fő orsó lassítása [F11]" +#: src/emc/usr_intf/pncconf/pncconf.py:1327 +#: src/emc/usr_intf/pncconf/pncconf.py:2421 +#, python-format +msgid "# Generated by PNCconf at %s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#, fuzzy -msgid "Spindle Up-To-Speed" -msgstr "Fő orsó lassítása [F11]" +#: src/emc/usr_intf/pncconf/pncconf.py:1329 +#: src/emc/usr_intf/pncconf/pncconf.py:2423 +msgid "# overwritten when you run PNCconf again" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:470 -msgid "Cycle Start" +#: src/emc/usr_intf/pncconf/pncconf.py:2134 +msgid "# Use ACTUAL spindle velocity from spindle encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:470 -msgid "Abort" +#: src/emc/usr_intf/pncconf/pncconf.py:2135 +msgid "# spindle-velocity bounces around so we filter it with lowpass" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:470 -#, fuzzy -msgid "Single Step" -msgstr "Fő orsó lassítása [F11]" +#: src/emc/usr_intf/pncconf/pncconf.py:2136 +msgid "" +"# spindle-velocity is signed so we use absolute component to remove sign" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 -msgid "Jog X +" +#: src/emc/usr_intf/pncconf/pncconf.py:2137 +msgid "# ACTUAL velocity is in RPS not RPM so we scale it." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 -msgid "Jog X -" +#: src/emc/usr_intf/pncconf/pncconf.py:2821 +msgid "# connect miscellaneous signals" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 -msgid "Jog Y +" +#: src/emc/usr_intf/pncconf/pncconf.py:2824 +msgid "# ---HALUI signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 -msgid "Jog Y -" +#: src/emc/usr_intf/pncconf/pncconf.py:2843 +msgid "# ---charge pump signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 -msgid "Jog Z +" +#: src/emc/usr_intf/pncconf/pncconf.py:2847 +msgid "# ---coolant signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 -msgid "Jog Z -" +#: src/emc/usr_intf/pncconf/pncconf.py:2852 +msgid "# ---probe signal---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 -msgid "Jog A +" +#: src/emc/usr_intf/pncconf/pncconf.py:2857 +msgid "# ---jog button signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 -msgid "Jog A -" +#: src/emc/usr_intf/pncconf/pncconf.py:2862 +msgid "# ---USB device jog button signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:478 -#, fuzzy -msgid "Jog button selected +" -msgstr "Lépés a kiválasztott tengelyen" +#: src/emc/usr_intf/pncconf/pncconf.py:2903 +#: src/emc/usr_intf/pncconf/pncconf.py:2929 +msgid "# ---mpg signals---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:478 -#, fuzzy -msgid "Jog button selected -" -msgstr "Lépés a kiválasztott tengelyen" +#: src/emc/usr_intf/pncconf/pncconf.py:3111 +msgid "# ---motion control signals---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:479 -msgid "Unused Input" +#: src/emc/usr_intf/pncconf/pncconf.py:3116 +msgid "# ---digital in / out signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:479 -msgid "Limits" +#: src/emc/usr_intf/pncconf/pncconf.py:3126 +msgid "# ---estop signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:479 -msgid "Limts/Home Shared" +#: src/emc/usr_intf/pncconf/pncconf.py:3145 +msgid "# ---manual tool change signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:480 -msgid "Axis Selection" +#: src/emc/usr_intf/pncconf/pncconf.py:3154 +msgid "# ---toolchange signals for custom tool changer---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#, fuzzy -msgid "Overrides" -msgstr "Határok módosítása" +#: src/emc/usr_intf/pncconf/pncconf.py:3176 +msgid "# --- Classicladder signals for Z axis Auto touch off program---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:481 -#, fuzzy -msgid "Operation" -msgstr "Ismeretlen hiba %s" +#: src/emc/usr_intf/pncconf/pncconf.py:3195 +msgid "# These files are loaded post gladeVCP, in the order they appear" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:481 -#, fuzzy -msgid "External Control" -msgstr "Kézi vezérlés" +#: src/emc/usr_intf/pncconf/pncconf.py:3209 +#: src/emc/usr_intf/pncconf/pncconf.py:3276 +msgid "# _DO NOT_ include your HAL commands here." +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:481 -#, fuzzy -msgid "Axis rapid" -msgstr "Tengely:" +#: src/emc/usr_intf/pncconf/pncconf.py:3210 +msgid "# Put custom HAL commands in custom_gvcp.hal" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:483 -msgid "S BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:3213 +msgid "# **** Setup of spindle speed display using gladevcp ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:556 -msgid "Unused PWM Gen" +#: src/emc/usr_intf/pncconf/pncconf.py:3222 +msgid "# **** Setup GLADE MDI buttons ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:556 -#, fuzzy -msgid "X Axis PWM" -msgstr "Tengely:" +#: src/emc/usr_intf/pncconf/pncconf.py:3235 +msgid "" +"# **** Z axis touch-off button - requires the touch-off classicladder " +"program ****" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:556 -#, fuzzy -msgid "Y Axis PWM" -msgstr "Tengely:" +#: src/emc/usr_intf/pncconf/pncconf.py:3265 +msgid "# These files are loaded post GUI, in the order they appear" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#, fuzzy -msgid "Z Axis PWM" -msgstr "Tengely:" +#: src/emc/usr_intf/pncconf/pncconf.py:3277 +msgid "# Put custom HAL commands in custom_postgui.hal" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#, fuzzy -msgid "A Axis PWM" -msgstr "Tengely:" +#: src/emc/usr_intf/pncconf/pncconf.py:3278 +msgid "# The commands in this file are run after the GUI loads" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -msgid "X Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:3288 +msgid "# **** Setup of spindle speed display using pyvcp -END ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -msgid "Y Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:3300 +msgid "# This file will not be overwritten when you run PNCconf again" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -msgid "Z Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:3306 +msgid "# These commands are required for Touchy GUI" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -msgid "A Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:3358 +#, python-format +msgid "Generated by PNCconf at %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -#, fuzzy -msgid "Spindle Encoder" -msgstr "Fő orsó:" +#: src/emc/usr_intf/pncconf/pncconf.py:3370 +msgid "configures LinuxCNC as:\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "X Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:3371 +msgid "type CNC\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "Y Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:3372 +msgid "will be used as the frontend display" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "Z Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:3381 +msgid " connector" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "A Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:3393 +msgid "invrt" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "Multi Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:3402 +#, python-format +msgid "%(name)s Parport" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:583 -#, fuzzy -msgid "Feed Override" -msgstr "Túlhajtás (%):" +#: src/emc/usr_intf/pncconf/pncconf.py:3407 +#: src/emc/usr_intf/pncconf/pncconf.py:3415 +msgid "-> inverted" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:583 -#, fuzzy -msgid "spindle Override" -msgstr "Túlhajtás (%):" +#: src/emc/usr_intf/pncconf/pncconf.py:3409 +#, python-format +msgid "pin# %(pinnum)d is connected to input signal:'%(data)s' %(mesag)s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:583 -#, fuzzy -msgid "Max Vel Override" -msgstr "Túlhajtás (%):" +#: src/emc/usr_intf/pncconf/pncconf.py:3417 +#, python-format +msgid "pin# %(pinnum)d is connected to output signal:'%(data)s' %(mesag)s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "Unused Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:3595 +msgid "Desktop Launcher for LinuxCNC config made by PNCconf" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "Axis Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:3856 +#, python-format +msgid "%s Axis Configuration" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "MPG Jog Controls" +#: src/emc/usr_intf/pncconf/pncconf.py:3881 +#, fuzzy +msgid "Spindle Motor/Encoder Configuration" +msgstr "Fő orsó fék bekapcsolva" + +#: src/emc/usr_intf/pncconf/pncconf.py:3883 +#, python-format +msgid "%s Axis Motor/Encoder Configuration" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "Override MPG control" +#: src/emc/usr_intf/pncconf/pncconf.py:3912 +#, python-format +msgid "%s Parallel Port Setup" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "Unused Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:3936 +#, python-format +msgid "%s I/0 Setup" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "X Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:4162 +msgid "Quit PNCconfig and discard changes?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "Y Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:4203 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Help Pages" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "Z Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:4208 +msgid "Help page is unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:588 -msgid "A Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:4218 +msgid "" +"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " +"of external hardware is unavailable." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:588 -msgid "S Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:4223 +#, python-format +msgid "" +"You are using a realtime version of LinuxCNC but didn't load a realtime " +"kernel so testing / tuning of external hardware is unavailable.\n" +" This is probably because you updated the OS and it doesn't load the RTAI " +"kernel anymore\n" +" You are using the %(actual)s kernel instead of %(needed)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -msgid "Unused 8I20" +#: src/emc/usr_intf/pncconf/pncconf.py:4256 +msgid "LinuxCNC 'PNCconf' configuration files" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:61457 -#, fuzzy -msgid "X Axis" -msgstr "Tengely:" - -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:62549 -#, fuzzy -msgid "Y Axis" -msgstr "Tengely:" +#: src/emc/usr_intf/pncconf/pncconf.py:4286 +msgid "" +"It seems data in this file is from too old of a version of PNCConf to " +"continue.\n" +"." +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:63642 -#, fuzzy -msgid "Z Axis" -msgstr "Tengely:" +#: src/emc/usr_intf/pncconf/pncconf.py:4293 +#: src/emc/usr_intf/pncconf/pncconf.py:4391 +#, python-format +msgid "Point and click configuration - %s.pncconf " +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.glade:64735 -#, fuzzy -msgid "A Axis" -msgstr "Tengely:" +#: src/emc/usr_intf/pncconf/pncconf.py:4413 +msgid "" +"You need to designate a parport and/or mesa I/O device before continuing." +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:597 -msgid "Unused Analog Output" +#: src/emc/usr_intf/pncconf/pncconf.py:4481 +msgid "" +"You Have choosen to re-edit the current config, so you can not go to the new/" +"modify page.\n" +" Quit and reload PNCconf if you wish to build a new config." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:597 -#, fuzzy -msgid "Spindle Output" -msgstr "Fő orsó:" +#: src/emc/usr_intf/pncconf/pncconf.py:4485 +msgid "" +"If you can not go to the new/modify page your current data will be lost.\n" +"Ok to reset data and start a new configuration?" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:613 -msgid "Unused StepGen" +#: src/emc/usr_intf/pncconf/pncconf.py:4811 +msgid "USB device Info Search" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:613 -#, fuzzy -msgid "X Axis StepGen" -msgstr "Tengely:" +#: src/emc/usr_intf/pncconf/pncconf.py:4825 +msgid "USB device page is unavailable\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:613 -#, fuzzy -msgid "Y Axis StepGen" -msgstr "Tengely:" +#: src/emc/usr_intf/pncconf/pncconf.py:4890 +msgid "Pin names are unavailable\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:613 -#, fuzzy -msgid "Z Axis StepGen" -msgstr "Tengely:" +#: src/emc/usr_intf/pncconf/pncconf.py:4912 +msgid "Device names are unavailable\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:614 -#, fuzzy -msgid "A Axis StepGen" -msgstr "Tengely:" +#: src/emc/usr_intf/pncconf/pncconf.py:4915 +msgid "No Pncconf made device rules were found\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:614 -#, fuzzy -msgid "Spindle StepGen" -msgstr "Fő orsó lassítása [F11]" +#: src/emc/usr_intf/pncconf/pncconf.py:5041 +msgid "" +"OK to replace existing glade panel ?\n" +"It will be renamed and added to 'backups' folder.\n" +" Clicking 'existing custom program' will avoid this warning, but if you " +"change related options later -such as spindle feedback- the HAL connection " +"will not update" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:628 -msgid "Unused TPPWM Gen" +#: src/emc/usr_intf/pncconf/pncconf.py:5047 +msgid "" +"OK to replace existing custom pyvcp panel?\n" +"Existing pyvcp-panel.xml will be renamed and added to 'backups' folder\n" +"Clicking 'existing custom program' will aviod this warning. " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:628 -msgid "X Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:5493 +msgid "" +"You need to configure the mesa0 page.\n" +" Choose the board type, firmware, component amounts and press 'Accept " +"component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:628 -msgid "Y Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:5497 +msgid "" +"The chosen Mesa0 board is different from the current displayed.\n" +"please press 'Accept component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "Z Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:5540 +msgid "" +"You need to configure the mesa1 page.\n" +" Choose the board type, firmware, component amounts and press 'Accept " +"component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "A Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:5544 +msgid "" +"The chosen Mesa1 board is different from the current displayed.\n" +"please press 'Accept component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "S Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:5558 +msgid "" +"Do to technical reasons this test panel can be loaded only once without " +"reloading pncconf.You also will not be able to do any other testing untill " +"you reload pncconf and quite possibly open a terminal and type 'halrun -U' I " +"hesitate to even allow it's use but at times it's very useful.\n" +"Do you wish to continue the test?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -#: src/emc/usr_intf/pncconf/pncconf.py:6557 -msgid "Unused Channel" +#: src/emc/usr_intf/pncconf/pncconf.py:7042 +msgid "First Parallel Port set for OUTPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -msgid "8i20 Amplifier Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7044 +msgid "First Parallel Port set for INPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -msgid "7i64 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7068 +msgid "Second Parallel Port set for OUTPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -msgid "7i69 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7070 +msgid "Second Parallel Port set for INPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 -msgid "7i70 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7082 +msgid "Third Parallel Port set for OUTPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 -msgid "7i71 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7084 +msgid "Third Parallel Port set for INPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 -msgid "7i76 Mode 0 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7210 +msgid "You can not have both steppers and pwm signals for spindle control\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:722 -#, fuzzy -msgid "my_LinuxCNC_machine" -msgstr "Gép" +#: src/emc/usr_intf/pncconf/pncconf.py:7214 +#, python-format +msgid "You forgot to designate a stepper or pwm signal for axis %s\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1328 -msgid "" -"This configuration was saved with an earlier version of pncconf which may be " -"incompatible.\n" -"If it doesn't plainly cause an error, you still may want to save it with " -"another name and check it. Safer to start from scratch.\n" -"If you have a REALLY large config that you wish to convert to this newer " -"version of PNConf - ask on the LinuxCNC forum - it may be possible.." +#: src/emc/usr_intf/pncconf/pncconf.py:7217 +#, python-format +msgid "You forgot to designate an encoder /resolver signal for axis %s servo\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1334 +#: src/emc/usr_intf/pncconf/pncconf.py:7220 #, python-format -msgid "File %r was modified since it was written by PNCconf" +msgid "You forgot to designate a pwm signal or stepper signal for axis %s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1338 -msgid "" -"Saving this configuration file will discard configuration changes made " -"outside PNCconf." +#: src/emc/usr_intf/pncconf/pncconf.py:7223 +#, python-format +msgid "You can not have both steppers and pwm signals for axis %s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1365 -#: src/emc/usr_intf/pncconf/pncconf.py:2368 +#: src/emc/usr_intf/pncconf/pncconf.py:7226 #, python-format -msgid "# Generated by PNCconf at %s" +msgid "" +"If using a tandem axis stepper, you must select a master stepgen for axis " +"%s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1367 -#: src/emc/usr_intf/pncconf/pncconf.py:2370 -msgid "# overwritten when you run PNCconf again" +#: src/emc/usr_intf/pncconf/pncconf.py:7235 +msgid "Touchy require an external cycle start signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2070 -msgid "# Use ACTUAL spindle velocity from spindle encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:7238 +msgid "Touchy require an external abort signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2071 -msgid "# spindle-velocity bounces around so we filter it with lowpass" +#: src/emc/usr_intf/pncconf/pncconf.py:7241 +msgid "Touchy require an external single-step signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2072 +#: src/emc/usr_intf/pncconf/pncconf.py:7244 msgid "" -"# spindle-velocity is signed so we use absolute component to remove sign" +"Touchy require an external multi handwheel MPG encoder signal on the mesa " +"page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2073 -msgid "# ACTUAL velocity is in RPS not RPM so we scale it." +#: src/emc/usr_intf/pncconf/pncconf.py:7247 +msgid "" +"Touchy require 'external mpg jogging' to be selected on the external control " +"page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2082 +#: src/emc/usr_intf/pncconf/pncconf.py:7250 msgid "" -"# Use COMMANDED spindle velocity from LinuxCNC because no spindle encoder " -"was specified" +"Touchy require the external mpg to be in 'shared mpg' mode on the external " +"controls page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2083 +#: src/emc/usr_intf/pncconf/pncconf.py:7253 msgid "" -"# COMMANDED velocity is signed so we use absolute component to remove sign" +"Touchy require selectable increments to be unchecked on the external " +"controls page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2727 -msgid "# connect miscellaneous signals" +#: src/emc/usr_intf/pncconf/pncconf.py:7257 +msgid "" +"The 7i29 daughter board requires PWM type generators and a PWM base " +"frequency of 20 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2730 -msgid "# ---HALUI signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7260 +msgid "" +"The 7i30 daughter board requires PWM type generators and a PWM base " +"frequency of 20 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2749 -msgid "# ---charge pump signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7263 +msgid "" +"The 7i33 daughter board requires PDM type generators and a PDM base " +"frequency of 6 Mhz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2753 -msgid "# ---coolant signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7266 +msgid "" +"The 7i40 daughter board requires PWM type generators and a PWM base " +"frequency of 50 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2758 -msgid "# ---probe signal---" +#: src/emc/usr_intf/pncconf/pncconf.py:7269 +msgid "" +"The 7i48 daughter board requires UDM type generators and a PWM base " +"frequency of 24 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2763 -msgid "# ---jog button signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7494 +msgid "Gearbox Reduction Ratio" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2768 -msgid "# ---USB device jog button signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7497 +msgid "Reduction Ratio" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2803 -#: src/emc/usr_intf/pncconf/pncconf.py:2825 -msgid "# ---mpg signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7500 +msgid "Leadscrew Pitch" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2971 -msgid "# ---motion control signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7503 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Leadscrew TPI" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2976 -msgid "# ---digital in / out signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7507 +#: src/emc/usr_intf/pncconf/pncconf.py:7508 +msgid "(" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2986 -msgid "# ---estop signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7509 +#: src/emc/usr_intf/pncconf/pncconf.py:7519 +#: src/emc/usr_intf/pncconf/pncconf.py:7520 +#: src/emc/usr_intf/pncconf/pncconf.py:7521 +msgid " / min" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3005 -msgid "# ---manual tool change signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7510 +msgid " / sec²" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3014 -msgid "# ---toolchange signals for custom tool changer---" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:7513 +#, fuzzy +msgid " / Step" +msgstr "Lépé_s" -#: src/emc/usr_intf/pncconf/pncconf.py:3036 -msgid "# --- Classicladder signals for Z axis Auto touch off program---" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:7514 +#, fuzzy +msgid "Steps / " +msgstr "Lépé_s" -#: src/emc/usr_intf/pncconf/pncconf.py:3055 -msgid "# These files are loaded post gladeVCP, in the order they appear" +#: src/emc/usr_intf/pncconf/pncconf.py:7516 +msgid " / encoder pulse" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3069 -#: src/emc/usr_intf/pncconf/pncconf.py:3136 -msgid "# _DO NOT_ include your HAL commands here." +#: src/emc/usr_intf/pncconf/pncconf.py:7517 +msgid "Encoder pulses / " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3070 -msgid "# Put custom HAL commands in custom_gvcp.hal" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:7525 +#, fuzzy +msgid "Resolver Scale:" +msgstr "Program léptetés" -#: src/emc/usr_intf/pncconf/pncconf.py:3073 -msgid "# **** Setup of spindle speed display using gladevcp ****" +#: src/emc/usr_intf/pncconf/pncconf.py:7826 +msgid "Axis Scale Calculation" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3082 -msgid "# **** Setup GLADE MDI buttons ****" +#: src/emc/usr_intf/pncconf/pncconf.py:8133 +msgid "You need to designate an E-stop input pin for this ladder program." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3095 -msgid "" -"# **** Z axis touch-off button - requires the touch-off classicladder " -"program ****" +#: src/emc/usr_intf/pncconf/pncconf.py:8145 +msgid "You need to designate a probe input pin for this ladder program." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3125 -msgid "# These files are loaded post GUI, in the order they appear" +#: src/emc/usr_intf/pncconf/pncconf.py:8156 +msgid "" +"OK to replace existing custom ladder program?\n" +"Existing Custom.clp will be renamed custom_backup.clp.\n" +"Any existing file named -custom_backup.clp- will be lost.Selecting 'existing " +"ladder program' will avoid this warning" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3137 -msgid "# Put custom HAL commands in custom_postgui.hal" +#: src/emc/usr_intf/pncconf/pncconf.py:8374 +msgid "Do you wish to continue to edit this configuration." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3138 -msgid "# The commands in this file are run after the GUI loads" +#: src/emc/usr_intf/pncconf/pncconf.py:8413 +msgid "PCI search page is unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3148 -msgid "# **** Setup of spindle speed display using pyvcp -END ****" +#: src/emc/usr_intf/pncconf/pncconf.py:8532 +msgid "" +"You specified there is an existing gladefile, But there is not one in the " +"machine-named folder.." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3160 -msgid "# This file will not be overwritten when you run PNCconf again" +#: src/emc/usr_intf/pncconf/pncconf.py:8856 +msgid "Servo tuning is not avaiable in PNCconf yet\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3166 -msgid "# These commands are required for Touchy GUI" +#: src/emc/usr_intf/pncconf/pncconf.py:8861 +msgid "degrees" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3218 -#, python-format -msgid "Generated by PNCconf at %s" +#: src/emc/usr_intf/pncconf/pncconf.py:8862 +msgid "degrees / minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3230 -msgid "configures LinuxCNC as:\n" +#: src/emc/usr_intf/pncconf/pncconf.py:8863 +msgid "degrees / second²" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3231 -msgid "type CNC\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:8865 +#, fuzzy +msgid "revolutions" +msgstr "Pozíció:" -#: src/emc/usr_intf/pncconf/pncconf.py:3232 -msgid "will be used as the frontend display" +#: src/emc/usr_intf/pncconf/pncconf.py:8866 +msgid "rpm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3241 -msgid " connector" +#: src/emc/usr_intf/pncconf/pncconf.py:8867 +msgid "revs / second²" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3253 -msgid "invrt" +#: src/emc/usr_intf/pncconf/pncconf.py:8870 +#: src/emc/usr_intf/pncconf/pncconf.glade:65184 +#: src/emc/usr_intf/pncconf/pncconf.glade:65281 +#: src/emc/usr_intf/pncconf/pncconf.glade:65465 +msgid "mm / minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3262 -#, python-format -msgid "%(name)s Parport" +#: src/emc/usr_intf/pncconf/pncconf.py:8871 +#, fuzzy +msgid "mm / second²" +msgstr "2. tengely léptetés" + +#: src/emc/usr_intf/pncconf/pncconf.py:8874 +msgid "inches / minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3267 -#: src/emc/usr_intf/pncconf/pncconf.py:3275 -msgid "-> inverted" +#: src/emc/usr_intf/pncconf/pncconf.py:8875 +msgid "inches / second²" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3269 +#: src/emc/usr_intf/pncconf/pncconf.py:9031 #, python-format -msgid "pin# %(pinnum)d is connected to input signal:'%(data)s' %(mesag)s" +msgid "%s Axis Tune" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3277 -#, python-format -msgid "pin# %(pinnum)d is connected to output signal:'%(data)s' %(mesag)s" +#: src/emc/usr_intf/pncconf/pncconf.py:9195 +msgid "" +" You must designate a ENCODER / RESOLVER signal and an ANALOG SPINDLE signal " +"for this axis test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3455 -msgid "Desktop Launcher for LinuxCNC config made by PNCconf" +#: src/emc/usr_intf/pncconf/pncconf.py:9199 +msgid "" +" You must designate a ENCODER / RESOLVER signal and a PWM signal for this " +"axis test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3725 +#: src/emc/usr_intf/pncconf/pncconf.glade:8 #, fuzzy -msgid "Spindle Motor/Encoder Configuration" +msgid "LinuxCNC Point And Click Configuration" msgstr "Fő orsó fék bekapcsolva" -#: src/emc/usr_intf/pncconf/pncconf.py:3727 -#, python-format -msgid "%s Axis Motor/Encoder Configuration" +#: src/emc/usr_intf/pncconf/pncconf.glade:23 +msgid "LinuxCNC Configuration Wizard Beta 1 Version" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3756 -#, python-format -msgid "%s Parallel Port Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:24 +msgid "" +"\tThis program creates configuration \n" +" files for \"Closed Loop Servo\" \n" +"\t \t and hardware stepper\n" +" \tmachines" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3780 -#, python-format -msgid "%s I/0 Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:34 +msgid "Create or Edit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4001 -msgid "Quit PNCconfig and discard changes?" +#: src/emc/usr_intf/pncconf/pncconf.glade:66 +msgid "Create a desktop launcher to start LinuxCNC with this configuration." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4042 -#: src/emc/usr_intf/pncconf/pncconf.glade:65849 -msgid "Help Pages" +#: src/emc/usr_intf/pncconf/pncconf.glade:83 +msgid "Create a desktop shortcut (symlink) to configuration files." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4047 -msgid "Help page is unavailable\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:148 +msgid "Create a new configuration" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4054 -msgid "" -"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " -"of external hardware is unavailable." -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:175 +#, fuzzy +msgid "Basic machine information" +msgstr "Mutasd a gép pozícióját" -#: src/emc/usr_intf/pncconf/pncconf.py:4059 -#, python-format -msgid "" -"You are using a realtime version of LinuxCNC but didn't load a realtime " -"kernel so testing / tuning of external hardware is unavailable.\n" -" This is probably because you updated the OS and it doesn't load the RTAI " -"kernel anymore\n" -" You are using the %(actual)s kernel instead of %(needed)s" +#: src/emc/usr_intf/pncconf/pncconf.glade:214 +#, fuzzy +msgid "Machine Name:" +msgstr "Gép" + +#: src/emc/usr_intf/pncconf/pncconf.glade:280 +msgid "Axis configuration:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4079 -#, python-format +#: src/emc/usr_intf/pncconf/pncconf.glade:295 msgid "" -"You are have no hostmot2 firmware downloaded in folder:\n" -"%s\n" -"PNCconf will use sample firmware data\n" -"live testing will not be possible" +"XYZ\n" +"XYZA\n" +"XZ (Lathe)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4093 -msgid "LinuxCNC 'PNCconf' configuration files" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:322 +#, fuzzy +msgid "Machine units:" +msgstr "Gép" -#: src/emc/usr_intf/pncconf/pncconf.py:4123 +#: src/emc/usr_intf/pncconf/pncconf.glade:337 msgid "" -"It seems data in this file is from too old of a version of PNCConf to " -"continue.\n" -"." +"Inch\n" +"Millimeter" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4130 -#: src/emc/usr_intf/pncconf/pncconf.py:4228 -#, python-format -msgid "Point and click configuration - %s.pncconf " +#: src/emc/usr_intf/pncconf/pncconf.glade:363 +msgid "Machine Basics" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4250 -msgid "" -"You need to designate a parport and/or mesa I/O device before continuing." +#: src/emc/usr_intf/pncconf/pncconf.glade:416 +msgid "Actual Servo Period: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4309 -msgid "" -"You Have choosen to re-edit the current config, so you can not go to the new/" -"modify page.\n" -" Quit and reload PNCconf if you wish to build a new config." +#: src/emc/usr_intf/pncconf/pncconf.glade:475 +msgid "Recommend servo period: 1000000" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4313 +#: src/emc/usr_intf/pncconf/pncconf.glade:494 msgid "" -"If you can not go to the new/modify page your current data will be lost.\n" -"Ok to reset data and start a new configuration?" +" Test Base\n" +"Period Jitter " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4594 -msgid "USB device Info Search" +#: src/emc/usr_intf/pncconf/pncconf.glade:519 +msgid "Computer Response Time" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4608 -msgid "USB device page is unavailable\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:561 +msgid "Mesa0 PCI / Parport Card:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4673 -msgid "Pin names are unavailable\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:571 +msgid "Mesa1 PCI / Parport Card:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4695 -msgid "Device names are unavailable\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:584 +msgid "First Parport Address:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4698 -msgid "No Pncconf made device rules were found\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:597 +msgid "Second Parport Address:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4822 -msgid "" -"OK to replace existing glade panel ?\n" -"It will be renamed and added to 'backups' folder.\n" -" Clicking 'existing custom program' will aviod this warning. " +#: src/emc/usr_intf/pncconf/pncconf.glade:612 +msgid "Third Parport Address:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4827 +#: src/emc/usr_intf/pncconf/pncconf.glade:635 +#: src/emc/usr_intf/pncconf/pncconf.glade:643 msgid "" -"OK to replace existing custom pyvcp panel?\n" -"Existing pyvcp-panel.xml will be renamed and added to 'backups' folder\n" -"Clicking 'existing custom program' will aviod this warning. " +"5i20\n" +"5i23\n" +"5i22" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5250 +#: src/emc/usr_intf/pncconf/pncconf.glade:716 +#: src/emc/usr_intf/pncconf/pncconf.glade:728 +#: src/emc/usr_intf/pncconf/pncconf.glade:741 msgid "" -"You need to configure the mesa0 page.\n" -" Choose the board type, firmware, component amounts and press 'Accept " -"component changes' button'" +"In\n" +"Out" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5254 +#: src/emc/usr_intf/pncconf/pncconf.glade:804 msgid "" -"The chosen Mesa0 board is different from the current displayed.\n" -"please press 'Accept component changes' button'" +"Add-on PCI\n" +" Parport\n" +" Address \n" +" Search" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5297 -msgid "" -"You need to configure the mesa1 page.\n" -" Choose the board type, firmware, component amounts and press 'Accept " -"component changes' button'" +#: src/emc/usr_intf/pncconf/pncconf.glade:829 +msgid "I/O Control Ports/ Boards" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5301 -msgid "" -"The chosen Mesa1 board is different from the current displayed.\n" -"please press 'Accept component changes' button'" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:878 +#, fuzzy +msgid "Axis" +msgstr "Tengely:" -#: src/emc/usr_intf/pncconf/pncconf.py:5315 -msgid "" -"Do to technical reasons this test panel can be loaded only once without " -"reloading pncconf.You also will not be able to do any other testing untill " -"you reload pncconf and quite possibly open a terminal and type 'halrun -U' I " -"hesitate to even allow it's use but at times it's very useful.\n" -"Do you wish to continue the test?" +#: src/emc/usr_intf/pncconf/pncconf.glade:893 +msgid "TKLinuxCNC" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6699 -msgid "First Parallel Port set for OUTPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:907 +msgid "Mini" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6701 -msgid "First Parallel Port set for INPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:921 +#: src/emc/usr_intf/pncconf/pncconf.glade:6656 +msgid "Touchy" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6725 -msgid "Second Parallel Port set for OUTPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:938 +msgid "GUI frontend list" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6727 -msgid "Second Parallel Port set for INPUT" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:973 +#, fuzzy +msgid "External Controls" +msgstr "Kézi vezérlés" -#: src/emc/usr_intf/pncconf/pncconf.py:6739 -msgid "Third Parallel Port set for OUTPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:1014 +msgid "Add device rule" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6741 -msgid "Third Parallel Port set for INPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:1027 +msgid "Test device" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6866 -msgid "You can not have both steppers and pwm signals for spindle control\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1041 +msgid "Search for device rules" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6870 -#, python-format -msgid "You forgot to designate a stepper or pwm signal for axis %s\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1062 +#, fuzzy +msgid "Device Name:" +msgstr "Gép" -#: src/emc/usr_intf/pncconf/pncconf.py:6873 -#, python-format -msgid "You forgot to designate an encoder /resolver signal for axis %s servo\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1125 +msgid "A +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6876 -#, python-format -msgid "You forgot to designate a pwm signal or stepper signal for axis %s\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1135 +msgid "A -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6879 -#, python-format -msgid "You can not have both steppers and pwm signals for axis %s\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1169 +#: src/emc/usr_intf/pncconf/pncconf.glade:1181 +#: src/emc/usr_intf/pncconf/pncconf.glade:1191 +#: src/emc/usr_intf/pncconf/pncconf.glade:1246 +#: src/emc/usr_intf/pncconf/pncconf.glade:1759 +msgid "mm/min " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6887 -msgid "Touchy require an external cycle start signal\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1269 +msgid " ab)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6890 -msgid "Touchy require an external abort signal\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1282 +#: src/emc/usr_intf/pncconf/pncconf.glade:2493 +#: src/emc/usr_intf/pncconf/pncconf.glade:2927 +#: src/emc/usr_intf/pncconf/pncconf.glade:3808 +#: src/emc/usr_intf/pncconf/pncconf.glade:4689 +msgid " b)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6893 -msgid "Touchy require an external single-step signal\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1293 +#: src/emc/usr_intf/pncconf/pncconf.glade:2482 +#: src/emc/usr_intf/pncconf/pncconf.glade:2916 +#: src/emc/usr_intf/pncconf/pncconf.glade:3797 +#: src/emc/usr_intf/pncconf/pncconf.glade:4678 +msgid " a)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6896 -msgid "" -"Touchy require an external multi handwheel MPG encoder signal on the mesa " -"page\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1305 +#: src/emc/usr_intf/pncconf/pncconf.glade:2385 +#: src/emc/usr_intf/pncconf/pncconf.glade:2867 +#: src/emc/usr_intf/pncconf/pncconf.glade:3748 +#: src/emc/usr_intf/pncconf/pncconf.glade:4629 +msgid "default" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6899 -msgid "" -"Touchy require 'external mpg jogging' to be selected on the external control " -"page\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1336 +#: src/emc/usr_intf/pncconf/pncconf.glade:1476 +#, fuzzy +msgid "Jog Speed select A" +msgstr "Lépés a kiválasztott tengelyen" -#: src/emc/usr_intf/pncconf/pncconf.py:6902 -msgid "" -"Touchy require the external mpg to be in 'shared mpg' mode on the external " -"controls page\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1348 +msgid "X +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6905 -msgid "" -"Touchy require selectable increments to be unchecked on the external " -"controls page\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1354 +msgid "Y +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6909 -msgid "" -"The 7i29 daughter board requires PWM type generators and a PWM base " -"frequency of 20 khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1364 +msgid "Z +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6912 -msgid "" -"The 7i30 daughter board requires PWM type generators and a PWM base " -"frequency of 20 khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1374 +msgid "X -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6915 -msgid "" -"The 7i33 daughter board requires PDM type generators and a PDM base " -"frequency of 6 Mhz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1384 +msgid "Y -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6918 -msgid "" -"The 7i40 daughter board requires PWM type generators and a PWM base " -"frequency of 50 khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1396 +msgid "Z -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6921 -msgid "" -"The 7i48 daughter board requires UDM type generators and a PWM base " -"frequency of 24 khz\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1500 +#, fuzzy +msgid "Digital Control" +msgstr "Kézi vezérlés" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1593 +#: src/emc/usr_intf/gscreen/gscreen.glade:502 +#, fuzzy +msgid "A" +msgstr "_A" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1603 +#: src/emc/usr_intf/gscreen/gscreen.glade:374 +#, fuzzy +msgid "Z" +msgstr "_Z" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1613 +#: src/emc/usr_intf/pncconf/pncconf.glade:6134 +#: src/emc/usr_intf/pncconf/pncconf.glade:6458 +#: src/emc/usr_intf/pncconf/pncconf.glade:6860 +#: src/emc/usr_intf/pncconf/pncconf.glade:7235 +#: src/emc/usr_intf/gscreen/gscreen.glade:244 +#, fuzzy +msgid "Y" +msgstr "_Y" -#: src/emc/usr_intf/pncconf/pncconf.py:7148 -msgid "Gearbox Reduction Ratio" +#: src/emc/usr_intf/pncconf/pncconf.glade:1623 +msgid "X " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7151 -msgid "Reduction Ratio" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1631 +#, fuzzy +msgid "Analog Control" +msgstr "Kézi vezérlés" -#: src/emc/usr_intf/pncconf/pncconf.py:7154 -msgid "Leadscrew Pitch" +#: src/emc/usr_intf/pncconf/pncconf.glade:1657 +#: src/emc/usr_intf/pncconf/pncconf.glade:1788 +#: src/emc/usr_intf/pncconf/pncconf.glade:2698 +#: src/emc/usr_intf/pncconf/pncconf.glade:3579 +#: src/emc/usr_intf/pncconf/pncconf.glade:4460 +#: src/emc/usr_intf/pncconf/pncconf.glade:5341 +#: src/emc/usr_intf/pncconf/pncconf.glade:64300 +msgid "Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7157 -#: src/emc/usr_intf/pncconf/pncconf.glade:66327 -#: src/emc/usr_intf/pncconf/pncconf.glade:66622 -msgid "Leadscrew TPI" +#: src/emc/usr_intf/pncconf/pncconf.glade:1675 +msgid "USB Joystick Jogging " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7161 -#: src/emc/usr_intf/pncconf/pncconf.py:7162 -msgid "(" +#: src/emc/usr_intf/pncconf/pncconf.glade:1719 +msgid "shared buttons for all axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7163 -#: src/emc/usr_intf/pncconf/pncconf.py:7173 -#: src/emc/usr_intf/pncconf/pncconf.py:7174 -#: src/emc/usr_intf/pncconf/pncconf.py:7175 -msgid " / min" +#: src/emc/usr_intf/pncconf/pncconf.glade:1732 +#, fuzzy +msgid "buttons for each axis" +msgstr "4. tengely léptetés" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1806 +msgid "External Button Jogging" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7164 -msgid " / sec²" +#: src/emc/usr_intf/pncconf/pncconf.glade:1847 +msgid "Shared MPG / selectable axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7167 +#: src/emc/usr_intf/pncconf/pncconf.glade:1860 #, fuzzy -msgid " / Step" -msgstr "Lépé_s" +msgid "Mpg per axis" +msgstr "1. tengely léptetés" -#: src/emc/usr_intf/pncconf/pncconf.py:7168 +#: src/emc/usr_intf/pncconf/pncconf.glade:1875 #, fuzzy -msgid "Steps / " -msgstr "Lépé_s" +msgid "selectable MPG increments" +msgstr "Lépes növelése" -#: src/emc/usr_intf/pncconf/pncconf.py:7170 -msgid " / encoder pulse" +#: src/emc/usr_intf/pncconf/pncconf.glade:1940 +#: src/emc/usr_intf/pncconf/pncconf.glade:3379 +#: src/emc/usr_intf/pncconf/pncconf.glade:4260 +#: src/emc/usr_intf/pncconf/pncconf.glade:5141 +msgid " d)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7171 -msgid "Encoder pulses / " +#: src/emc/usr_intf/pncconf/pncconf.glade:1952 +#: src/emc/usr_intf/pncconf/pncconf.glade:3340 +#: src/emc/usr_intf/pncconf/pncconf.glade:4221 +#: src/emc/usr_intf/pncconf/pncconf.glade:5102 +msgid " abcd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7482 -msgid "Axis Scale Calculation" +#: src/emc/usr_intf/pncconf/pncconf.glade:1965 +#: src/emc/usr_intf/pncconf/pncconf.glade:3353 +#: src/emc/usr_intf/pncconf/pncconf.glade:4234 +#: src/emc/usr_intf/pncconf/pncconf.glade:5115 +msgid " bcd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7785 -msgid "You need to designate an E-stop input pin for this ladder program." +#: src/emc/usr_intf/pncconf/pncconf.glade:1978 +#: src/emc/usr_intf/pncconf/pncconf.glade:3366 +#: src/emc/usr_intf/pncconf/pncconf.glade:4247 +#: src/emc/usr_intf/pncconf/pncconf.glade:5128 +msgid " acd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7797 -msgid "You need to designate a probe input pin for this ladder program." +#: src/emc/usr_intf/pncconf/pncconf.glade:1991 +#: src/emc/usr_intf/pncconf/pncconf.glade:3430 +#: src/emc/usr_intf/pncconf/pncconf.glade:4311 +#: src/emc/usr_intf/pncconf/pncconf.glade:5192 +msgid " cd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7808 -msgid "" -"OK to replace existing custom ladder program?\n" -"Existing Custom.clp will be renamed custom_backup.clp.\n" -"Any existing file named -custom_backup.clp- will be lost.Selecting 'existing " -"ladder program' will avoid this warning" +#: src/emc/usr_intf/pncconf/pncconf.glade:2004 +#: src/emc/usr_intf/pncconf/pncconf.glade:3404 +#: src/emc/usr_intf/pncconf/pncconf.glade:4285 +#: src/emc/usr_intf/pncconf/pncconf.glade:5166 +msgid " bd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8019 -msgid "Do you wish to continue to edit this configuration." +#: src/emc/usr_intf/pncconf/pncconf.glade:2017 +#: src/emc/usr_intf/pncconf/pncconf.glade:3391 +#: src/emc/usr_intf/pncconf/pncconf.glade:4272 +#: src/emc/usr_intf/pncconf/pncconf.glade:5153 +msgid " ad)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8058 -msgid "PCI search page is unavailable\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2030 +#: src/emc/usr_intf/pncconf/pncconf.glade:2514 +#: src/emc/usr_intf/pncconf/pncconf.glade:3059 +#: src/emc/usr_intf/pncconf/pncconf.glade:3940 +#: src/emc/usr_intf/pncconf/pncconf.glade:4821 +msgid " abc)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8176 -msgid "" -"You specified there is an existing gladefile, But there is not one in the " -"machine-named folder.." +#: src/emc/usr_intf/pncconf/pncconf.glade:2041 +#: src/emc/usr_intf/pncconf/pncconf.glade:3026 +#: src/emc/usr_intf/pncconf/pncconf.glade:3907 +#: src/emc/usr_intf/pncconf/pncconf.glade:4788 +msgid " c)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8495 -msgid "Servo tuning is not avaiable in PNCconf yet\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2207 +#: src/emc/usr_intf/pncconf/pncconf.glade:3049 +#: src/emc/usr_intf/pncconf/pncconf.glade:3930 +#: src/emc/usr_intf/pncconf/pncconf.glade:4811 +msgid " bc)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8500 -msgid "degrees" +#: src/emc/usr_intf/pncconf/pncconf.glade:2217 +#: src/emc/usr_intf/pncconf/pncconf.glade:3038 +#: src/emc/usr_intf/pncconf/pncconf.glade:3919 +#: src/emc/usr_intf/pncconf/pncconf.glade:4800 +msgid " ac)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8501 -msgid "degrees / minute" +#: src/emc/usr_intf/pncconf/pncconf.glade:2504 +#: src/emc/usr_intf/pncconf/pncconf.glade:2938 +#: src/emc/usr_intf/pncconf/pncconf.glade:3819 +#: src/emc/usr_intf/pncconf/pncconf.glade:4700 +msgid " ab)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8502 -msgid "degrees / second²" +#: src/emc/usr_intf/pncconf/pncconf.glade:2577 +msgid "ignore all inputs false" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8504 -#, fuzzy -msgid "revolutions" -msgstr "Pozíció:" - -#: src/emc/usr_intf/pncconf/pncconf.py:8505 -msgid "rpm" +#: src/emc/usr_intf/pncconf/pncconf.glade:2592 +msgid "use gray code" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8506 -msgid "revs / second²" +#: src/emc/usr_intf/pncconf/pncconf.glade:2607 +#: src/emc/usr_intf/pncconf/pncconf.glade:3489 +#: src/emc/usr_intf/pncconf/pncconf.glade:4356 +#: src/emc/usr_intf/pncconf/pncconf.glade:5237 +msgid "use debounce" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8509 -#: src/emc/usr_intf/pncconf/pncconf.glade:58295 -#: src/emc/usr_intf/pncconf/pncconf.glade:58479 -#: src/emc/usr_intf/pncconf/pncconf.glade:58576 -msgid "mm / minute" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:2658 +#: src/emc/usr_intf/pncconf/pncconf.glade:3453 +#: src/emc/usr_intf/pncconf/pncconf.glade:4334 +#: src/emc/usr_intf/pncconf/pncconf.glade:5215 +#, fuzzy +msgid "Mux options" +msgstr "Pozíció:" -#: src/emc/usr_intf/pncconf/pncconf.py:8510 +#: src/emc/usr_intf/pncconf/pncconf.glade:2672 #, fuzzy -msgid "mm / second²" -msgstr "2. tengely léptetés" +msgid "increments" +msgstr "Lépes növelése" -#: src/emc/usr_intf/pncconf/pncconf.py:8513 -msgid "inches / minute" +#: src/emc/usr_intf/pncconf/pncconf.glade:2716 +msgid "External MPG Jogging" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8514 -msgid "inches / second²" +#: src/emc/usr_intf/pncconf/pncconf.glade:2747 +#: src/emc/usr_intf/pncconf/pncconf.glade:3628 +#: src/emc/usr_intf/pncconf/pncconf.glade:4509 +msgid "Use MPG " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8646 -#, python-format -msgid "%s Axis Tune" +#: src/emc/usr_intf/pncconf/pncconf.glade:2760 +#: src/emc/usr_intf/pncconf/pncconf.glade:3641 +#: src/emc/usr_intf/pncconf/pncconf.glade:4522 +msgid "use switches" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8810 -msgid "" -" You must designate a ENCODER / RESOLVER signal and an ANALOG SPINDLE signal " -"for this axis test" +#: src/emc/usr_intf/pncconf/pncconf.glade:3417 +#: src/emc/usr_intf/pncconf/pncconf.glade:4298 +#: src/emc/usr_intf/pncconf/pncconf.glade:5179 +msgid " abd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8814 -msgid "" -" You must designate a ENCODER / RESOLVER signal and a PWM signal for this " -"axis test" +#: src/emc/usr_intf/pncconf/pncconf.glade:3504 +#: src/emc/usr_intf/pncconf/pncconf.glade:4371 +#: src/emc/usr_intf/pncconf/pncconf.glade:5252 +msgid "use graycode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8 +#: src/emc/usr_intf/pncconf/pncconf.glade:3519 +#: src/emc/usr_intf/pncconf/pncconf.glade:4386 +#: src/emc/usr_intf/pncconf/pncconf.glade:5267 +msgid "ignore all-inputs false" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:3563 +#: src/emc/usr_intf/pncconf/pncconf.glade:4444 +#: src/emc/usr_intf/pncconf/pncconf.glade:5325 #, fuzzy -msgid "LinuxCNC Point And Click Configuration" -msgstr "Fő orsó fék bekapcsolva" +msgid "Increments" +msgstr "Lépes növelése" -#: src/emc/usr_intf/pncconf/pncconf.glade:23 -msgid "LinuxCNC Configuration Wizard Beta 1 Version" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:3597 +#, fuzzy +msgid "External Feed Override" +msgstr "Túlhajtás (%):" -#: src/emc/usr_intf/pncconf/pncconf.glade:24 -msgid "" -"\tThis program creates configuration \n" -" files for \"Closed Loop Servo\" \n" -"\t \t and hardware stepper\n" -" \tmachines" +#: src/emc/usr_intf/pncconf/pncconf.glade:4478 +msgid "Max Velocity Override" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:34 -msgid "Create or Edit" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5359 +#, fuzzy +msgid "External Spindle Override" +msgstr "Túlhajtás (%):" -#: src/emc/usr_intf/pncconf/pncconf.glade:52 -msgid "Create a new configuration" +#: src/emc/usr_intf/pncconf/pncconf.glade:5387 +msgid "GUI configuration" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:118 -msgid "Create a desktop shortcut (symlink) to configuration files." +#: src/emc/usr_intf/pncconf/pncconf.glade:5406 +msgid "Frontend" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:135 -msgid "Create a desktop launcher to start LinuxCNC with this configuration." -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5566 +#, fuzzy +msgid "Position_offset" +msgstr "Pozíció:" -#: src/emc/usr_intf/pncconf/pncconf.glade:214 +#: src/emc/usr_intf/pncconf/pncconf.glade:5573 #, fuzzy -msgid "Machine Name:" -msgstr "Gép" +msgid "Position_feedback" +msgstr "Pozíció:" -#: src/emc/usr_intf/pncconf/pncconf.glade:281 -msgid "Axis configuration:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5584 +#, fuzzy +msgid "Max Spindle Override " +msgstr "Túlhajtás (%):" -#: src/emc/usr_intf/pncconf/pncconf.glade:316 +#: src/emc/usr_intf/pncconf/pncconf.glade:5606 #, fuzzy -msgid "Machine units:" -msgstr "Gép" +msgid "Min Spindle Override" +msgstr "Túlhajtás (%):" -#: src/emc/usr_intf/pncconf/pncconf.glade:355 -msgid "Machine Basics" +#: src/emc/usr_intf/pncconf/pncconf.glade:5665 +#, fuzzy +msgid "Max Feed Override" +msgstr "Túlhajtás (%):" + +#: src/emc/usr_intf/pncconf/pncconf.glade:5702 +#, fuzzy +msgid "" +"Machine\n" +"Relative\n" +msgstr "Relatív" + +#: src/emc/usr_intf/pncconf/pncconf.glade:5714 +#, fuzzy +msgid "" +"Commanded\n" +"Actual" +msgstr "Irányított" + +#: src/emc/usr_intf/pncconf/pncconf.glade:5729 +msgid "General GUI Defaults" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:405 -msgid "Recommend servo period: 1000000" +#: src/emc/usr_intf/pncconf/pncconf.glade:5811 +msgid "Default linear velocity " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:431 -msgid "Actual Servo Period: " +#: src/emc/usr_intf/pncconf/pncconf.glade:5818 +msgid "Min linear velocity" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:486 -msgid "" -" Test Base\n" -"Period Jitter " +#: src/emc/usr_intf/pncconf/pncconf.glade:5829 +msgid "Max linear velocity" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:511 -msgid "Computer Response Time" +#: src/emc/usr_intf/pncconf/pncconf.glade:5879 +#: src/emc/usr_intf/pncconf/pncconf.glade:6085 +#: src/emc/usr_intf/pncconf/pncconf.glade:6097 +msgid "mm / min" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:553 -msgid "Mesa0 PCI / Parport Card:" +#: src/emc/usr_intf/pncconf/pncconf.glade:5892 +msgid "Default Angular velocity " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:563 -msgid "Mesa1 PCI / Parport Card:" +#: src/emc/usr_intf/pncconf/pncconf.glade:5926 +msgid "gedit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:576 -msgid "First Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.glade:5939 +msgid "Min Angular velocity" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:589 -msgid "Second Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.glade:5966 +#, fuzzy +msgid "Increments " +msgstr "Lépes növelése" + +#: src/emc/usr_intf/pncconf/pncconf.glade:5977 +msgid "5mm 1mm .5mm .1mm .05mm .01mm .005mm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:604 -msgid "Third Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.glade:5990 +msgid "Max Angular velocity" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:627 -#: src/emc/usr_intf/pncconf/pncconf.glade:635 -msgid "" -"5i20\n" -"5i23\n" -"5i22" +#: src/emc/usr_intf/pncconf/pncconf.glade:6017 +msgid "Axis Geometry" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:708 -#: src/emc/usr_intf/pncconf/pncconf.glade:720 -#: src/emc/usr_intf/pncconf/pncconf.glade:733 -msgid "" -"In\n" -"Out" +#: src/emc/usr_intf/pncconf/pncconf.glade:6028 +msgid "xyzabc" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:796 -msgid "" -"Add-on PCI\n" -" Parport\n" -" Address \n" -" Search" +#: src/emc/usr_intf/pncconf/pncconf.glade:6040 +#: src/emc/usr_intf/pncconf/pncconf.glade:6052 +#: src/emc/usr_intf/pncconf/pncconf.glade:6064 +msgid "Deg / min" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:821 -msgid "I/O Control Ports/ Boards" +#: src/emc/usr_intf/pncconf/pncconf.glade:6113 +#: src/emc/usr_intf/pncconf/pncconf.glade:6484 +#: src/emc/usr_intf/pncconf/pncconf.glade:6839 +#: src/emc/usr_intf/pncconf/pncconf.glade:7262 +msgid "size" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:870 +#: src/emc/usr_intf/pncconf/pncconf.glade:6122 +#: src/emc/usr_intf/pncconf/pncconf.glade:6471 +#: src/emc/usr_intf/pncconf/pncconf.glade:6848 +#: src/emc/usr_intf/pncconf/pncconf.glade:7248 #, fuzzy -msgid "Axis" -msgstr "Tengely:" +msgid "Position" +msgstr "Pozíció:" -#: src/emc/usr_intf/pncconf/pncconf.glade:885 -msgid "TKLinuxCNC" +#: src/emc/usr_intf/pncconf/pncconf.glade:6159 +#: src/emc/usr_intf/pncconf/pncconf.glade:6433 +#: src/emc/usr_intf/pncconf/pncconf.glade:6885 +#: src/emc/usr_intf/pncconf/pncconf.glade:7210 +#: src/emc/usr_intf/gscreen/gscreen.glade:116 +#, fuzzy +msgid "X" +msgstr "_X" + +#: src/emc/usr_intf/pncconf/pncconf.glade:6171 +#: src/emc/usr_intf/pncconf/pncconf.glade:6423 +#: src/emc/usr_intf/pncconf/pncconf.glade:6897 +#: src/emc/usr_intf/pncconf/pncconf.glade:7200 +#: src/emc/usr_intf/gscreen/gscreen.glade:1142 +msgid "W" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:899 -msgid "Mini" +#: src/emc/usr_intf/pncconf/pncconf.glade:6205 +#: src/emc/usr_intf/pncconf/pncconf.glade:6389 +#: src/emc/usr_intf/pncconf/pncconf.glade:6931 +#: src/emc/usr_intf/pncconf/pncconf.glade:7166 +msgid "H" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:913 -#: src/emc/usr_intf/pncconf/pncconf.glade:6648 -msgid "Touchy" +#: src/emc/usr_intf/pncconf/pncconf.glade:6227 +msgid "Force Axis to Maximize" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:930 -msgid "GUI frontend list" +#: src/emc/usr_intf/pncconf/pncconf.glade:6249 +msgid "AXIS defaults" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:965 -#, fuzzy -msgid "External Controls" -msgstr "Kézi vezérlés" +#: src/emc/usr_intf/pncconf/pncconf.glade:6365 +msgid "Force Touchy to Maximize after positioning" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1006 -msgid "Add device rule" +#: src/emc/usr_intf/pncconf/pncconf.glade:6501 +#: src/emc/usr_intf/pncconf/pncconf.glade:7333 +msgid "Follow System Theme\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1019 -msgid "Test device" +#: src/emc/usr_intf/pncconf/pncconf.glade:6514 +#: src/emc/usr_intf/pncconf/pncconf.glade:7347 +msgid "GTK Theme" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1033 -msgid "Search for device rules" +#: src/emc/usr_intf/pncconf/pncconf.glade:6540 +#: src/emc/usr_intf/gscreen/gscreen.glade:1857 +msgid "Absolute Text Color" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1054 -#, fuzzy -msgid "Device Name:" -msgstr "Gép" +#: src/emc/usr_intf/pncconf/pncconf.glade:6603 +msgid "Absolute Textcolor" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1117 -#: src/emc/usr_intf/pncconf/pncconf.glade:1255 +#: src/emc/usr_intf/pncconf/pncconf.glade:6616 #, fuzzy -msgid "Jog Speed select A" -msgstr "Lépés a kiválasztott tengelyen" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1195 -msgid "Z -" -msgstr "" +msgid "Relative Textcolor" +msgstr "Mutasd a relatív pozíciót" -#: src/emc/usr_intf/pncconf/pncconf.glade:1207 -msgid "Y -" +#: src/emc/usr_intf/pncconf/pncconf.glade:6629 +msgid "DTG Textcolor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1219 -msgid "X -" +#: src/emc/usr_intf/pncconf/pncconf.glade:6642 +msgid "Error Textcolor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1229 -msgid "Z +" +#: src/emc/usr_intf/pncconf/pncconf.glade:6677 +msgid "GUI Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1239 -msgid "Y +" +#: src/emc/usr_intf/pncconf/pncconf.glade:6708 +msgid "Virtual Control Panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1249 -msgid "X +" +#: src/emc/usr_intf/pncconf/pncconf.glade:6783 +msgid "XYZ buttons (uses Halui)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1289 -#: src/emc/usr_intf/pncconf/pncconf.glade:2208 -#: src/emc/usr_intf/pncconf/pncconf.glade:3496 -#: src/emc/usr_intf/pncconf/pncconf.glade:4377 -#: src/emc/usr_intf/pncconf/pncconf.glade:5258 -msgid "default" +#: src/emc/usr_intf/pncconf/pncconf.glade:6954 +msgid "Geometry Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1299 -#: src/emc/usr_intf/pncconf/pncconf.glade:2107 -#: src/emc/usr_intf/pncconf/pncconf.glade:3443 -#: src/emc/usr_intf/pncconf/pncconf.glade:4324 -#: src/emc/usr_intf/pncconf/pncconf.glade:5205 -msgid " a)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7033 +msgid "Pyvcp Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1311 -#: src/emc/usr_intf/pncconf/pncconf.glade:2096 -#: src/emc/usr_intf/pncconf/pncconf.glade:3432 -#: src/emc/usr_intf/pncconf/pncconf.glade:4313 -#: src/emc/usr_intf/pncconf/pncconf.glade:5194 -msgid " b)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7105 +msgid "Sample display " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1322 -msgid " ab)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7272 +msgid "Standalone Panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1348 -#: src/emc/usr_intf/pncconf/pncconf.glade:1401 -#: src/emc/usr_intf/pncconf/pncconf.glade:1413 -#: src/emc/usr_intf/pncconf/pncconf.glade:1423 -#: src/emc/usr_intf/pncconf/pncconf.glade:1751 -msgid "mm/min " +#: src/emc/usr_intf/pncconf/pncconf.glade:7289 +msgid "Rightside Embeded" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1456 -msgid "A -" +#: src/emc/usr_intf/pncconf/pncconf.glade:7305 +msgid "Center Tab Embeded" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1468 -msgid "A +" +#: src/emc/usr_intf/pncconf/pncconf.glade:7320 +msgid "Force Maximize" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1492 +#: src/emc/usr_intf/pncconf/pncconf.glade:7359 #, fuzzy -msgid "Digital Control" -msgstr "Kézi vezérlés" +msgid "Display Options" +msgstr "Mértékegység: _Inch" -#: src/emc/usr_intf/pncconf/pncconf.glade:1539 -msgid "X " +#: src/emc/usr_intf/pncconf/pncconf.glade:7409 +msgid "Max RPM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1545 -#: src/emc/usr_intf/pncconf/pncconf.glade:5901 -#: src/emc/usr_intf/pncconf/pncconf.glade:6531 -#: src/emc/usr_intf/pncconf/pncconf.glade:6910 -#: src/emc/usr_intf/pncconf/pncconf.glade:7257 +#: src/emc/usr_intf/pncconf/pncconf.glade:7422 #, fuzzy -msgid "Y" -msgstr "_Y" +msgid "Spindle Speed Indicator" +msgstr "Fő orsó:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1555 +#: src/emc/usr_intf/pncconf/pncconf.glade:7434 #, fuzzy -msgid "Z" -msgstr "_Z" +msgid "Spindle At Speed LED" +msgstr "Túlhajtás (%):" -#: src/emc/usr_intf/pncconf/pncconf.glade:1565 +#: src/emc/usr_intf/pncconf/pncconf.glade:7446 #, fuzzy -msgid "A" -msgstr "_A" +msgid "Zero X Button" +msgstr "Bal egér gomb" -#: src/emc/usr_intf/pncconf/pncconf.glade:1623 +#: src/emc/usr_intf/pncconf/pncconf.glade:7458 #, fuzzy -msgid "Analog Control" -msgstr "Kézi vezérlés" +msgid "Zero Y Button" +msgstr "Bal egér gomb" -#: src/emc/usr_intf/pncconf/pncconf.glade:1649 -#: src/emc/usr_intf/pncconf/pncconf.glade:1780 -#: src/emc/usr_intf/pncconf/pncconf.glade:2690 -#: src/emc/usr_intf/pncconf/pncconf.glade:3571 -#: src/emc/usr_intf/pncconf/pncconf.glade:4452 -#: src/emc/usr_intf/pncconf/pncconf.glade:5333 -#: src/emc/usr_intf/pncconf/pncconf.glade:57371 -msgid "Details" +#: src/emc/usr_intf/pncconf/pncconf.glade:7470 +#, fuzzy +msgid "Zero Z Button" +msgstr "Bal egér gomb" + +#: src/emc/usr_intf/pncconf/pncconf.glade:7482 +#, fuzzy +msgid "Zero A Button" +msgstr "Bal egér gomb" + +#: src/emc/usr_intf/pncconf/pncconf.glade:7494 +msgid "Requires Classicladder touch-off program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1667 -msgid "USB Joystick Jogging " +#: src/emc/usr_intf/pncconf/pncconf.glade:7495 +msgid "Auto Z Touch Off Button" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1711 -msgid "shared buttons for all axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:7508 +msgid "Sample Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1724 -#, fuzzy -msgid "buttons for each axis" -msgstr "4. tengely léptetés" +#: src/emc/usr_intf/pncconf/pncconf.glade:7582 +msgid "Gladevcp Details" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1798 -msgid "External Button Jogging" +#: src/emc/usr_intf/pncconf/pncconf.glade:7605 +msgid "Include custom GladeVCP GUI panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1839 -msgid "Shared MPG / selectable axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:7676 +msgid "Force individual manual homing" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1852 -#, fuzzy -msgid "Mpg per axis" -msgstr "1. tengely léptetés" +#: src/emc/usr_intf/pncconf/pncconf.glade:7689 +msgid "Random position toolchanger " +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1867 -#, fuzzy -msgid "selectable MPG increments" -msgstr "Lépes növelése" +#: src/emc/usr_intf/pncconf/pncconf.glade:7704 +msgid "Require homing before MDI / Running" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1932 -#: src/emc/usr_intf/pncconf/pncconf.glade:2907 -#: src/emc/usr_intf/pncconf/pncconf.glade:3788 -#: src/emc/usr_intf/pncconf/pncconf.glade:4669 -#, fuzzy -msgid "Mux options" -msgstr "Pozíció:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7713 +msgid "Popup Toolchange Prompt" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1980 -#: src/emc/usr_intf/pncconf/pncconf.glade:2868 -#: src/emc/usr_intf/pncconf/pncconf.glade:3763 -#: src/emc/usr_intf/pncconf/pncconf.glade:4644 -msgid "use debounce" +#: src/emc/usr_intf/pncconf/pncconf.glade:7727 +msgid "Leave spindle on during tool change" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1995 -msgid "use gray code" +#: src/emc/usr_intf/pncconf/pncconf.glade:7740 +msgid "Move spindle up before tool change" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2010 -msgid "ignore all inputs false" +#: src/emc/usr_intf/pncconf/pncconf.glade:7753 +msgid "Restore joint position after shutdown" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2035 -#: src/emc/usr_intf/pncconf/pncconf.glade:2048 -#: src/emc/usr_intf/pncconf/pncconf.glade:2061 -#: src/emc/usr_intf/pncconf/pncconf.glade:2407 -#: src/emc/usr_intf/pncconf/pncconf.glade:2420 -#: src/emc/usr_intf/pncconf/pncconf.glade:2433 -#: src/emc/usr_intf/pncconf/pncconf.glade:2446 -#: src/emc/usr_intf/pncconf/pncconf.glade:2457 -#: src/emc/usr_intf/pncconf/pncconf.glade:2470 -#: src/emc/usr_intf/pncconf/pncconf.glade:2483 -#: src/emc/usr_intf/pncconf/pncconf.glade:2496 -#: src/emc/usr_intf/pncconf/pncconf.glade:2509 -#: src/emc/usr_intf/pncconf/pncconf.glade:2522 -#: src/emc/usr_intf/pncconf/pncconf.glade:2535 -#: src/emc/usr_intf/pncconf/pncconf.glade:8343 -#: src/emc/usr_intf/pncconf/pncconf.glade:8379 -#: src/emc/usr_intf/pncconf/pncconf.glade:56542 -#: src/emc/usr_intf/pncconf/pncconf.glade:61266 -#: src/emc/usr_intf/pncconf/pncconf.glade:61278 -#: src/emc/usr_intf/pncconf/pncconf.glade:61290 -#: src/emc/usr_intf/pncconf/pncconf.glade:61302 -#: src/emc/usr_intf/pncconf/pncconf.glade:62475 -#: src/emc/usr_intf/pncconf/pncconf.glade:62487 -#: src/emc/usr_intf/pncconf/pncconf.glade:62499 -#: src/emc/usr_intf/pncconf/pncconf.glade:62511 -#: src/emc/usr_intf/pncconf/pncconf.glade:63452 -#: src/emc/usr_intf/pncconf/pncconf.glade:63464 -#: src/emc/usr_intf/pncconf/pncconf.glade:63476 -#: src/emc/usr_intf/pncconf/pncconf.glade:63488 -#: src/emc/usr_intf/pncconf/pncconf.glade:64661 -#: src/emc/usr_intf/pncconf/pncconf.glade:64673 -#: src/emc/usr_intf/pncconf/pncconf.glade:64685 -#: src/emc/usr_intf/pncconf/pncconf.glade:64697 -#: src/emc/usr_intf/pncconf/pncconf.glade:65608 -#: src/emc/usr_intf/pncconf/pncconf.glade:65620 -#: src/emc/usr_intf/pncconf/pncconf.glade:65632 -#: src/emc/usr_intf/pncconf/pncconf.glade:65644 -msgid "label" +#: src/emc/usr_intf/pncconf/pncconf.glade:7769 +msgid "Defaults and Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2073 -#: src/emc/usr_intf/pncconf/pncconf.glade:2559 -#: src/emc/usr_intf/pncconf/pncconf.glade:3300 -#: src/emc/usr_intf/pncconf/pncconf.glade:4181 -#: src/emc/usr_intf/pncconf/pncconf.glade:5062 -msgid " abc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7797 +msgid "Mesa0 I/O setup\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2086 -#: src/emc/usr_intf/pncconf/pncconf.glade:3422 -#: src/emc/usr_intf/pncconf/pncconf.glade:4303 -#: src/emc/usr_intf/pncconf/pncconf.glade:5184 -msgid " ab)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7817 +msgid "" +"Click on each page tab to configure signal names for each connector port.\n" +"\n" +"Press the button to make the tabbed pages\n" +"accept the changes.\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2372 -#: src/emc/usr_intf/pncconf/pncconf.glade:3321 -#: src/emc/usr_intf/pncconf/pncconf.glade:4202 -#: src/emc/usr_intf/pncconf/pncconf.glade:5083 -msgid " ac)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8001 +msgid "3PWM base frequency:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2383 -#: src/emc/usr_intf/pncconf/pncconf.glade:3311 -#: src/emc/usr_intf/pncconf/pncconf.glade:4192 -#: src/emc/usr_intf/pncconf/pncconf.glade:5073 -msgid " bc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8036 +msgid "Mesa parport address:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2547 -#: src/emc/usr_intf/pncconf/pncconf.glade:3332 -#: src/emc/usr_intf/pncconf/pncconf.glade:4213 -#: src/emc/usr_intf/pncconf/pncconf.glade:5094 -msgid " c)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8047 +msgid "Firmware:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2570 -#: src/emc/usr_intf/pncconf/pncconf.glade:2966 -#: src/emc/usr_intf/pncconf/pncconf.glade:3847 -#: src/emc/usr_intf/pncconf/pncconf.glade:4728 -msgid " ad)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8069 +msgid "SVST8_4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2583 -#: src/emc/usr_intf/pncconf/pncconf.glade:2953 -#: src/emc/usr_intf/pncconf/pncconf.glade:3834 -#: src/emc/usr_intf/pncconf/pncconf.glade:4715 -msgid " bd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8094 +msgid "Num of 3 pwm generators: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2596 -#: src/emc/usr_intf/pncconf/pncconf.glade:2927 -#: src/emc/usr_intf/pncconf/pncconf.glade:3808 -#: src/emc/usr_intf/pncconf/pncconf.glade:4689 -msgid " cd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8128 +msgid "Total number of pins:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2609 -#: src/emc/usr_intf/pncconf/pncconf.glade:2991 -#: src/emc/usr_intf/pncconf/pncconf.glade:3872 -#: src/emc/usr_intf/pncconf/pncconf.glade:4753 -msgid " acd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8153 +msgid "" +"Accept components\n" +" Changes" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2622 -#: src/emc/usr_intf/pncconf/pncconf.glade:3004 -#: src/emc/usr_intf/pncconf/pncconf.glade:3885 -#: src/emc/usr_intf/pncconf/pncconf.glade:4766 -msgid " bcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8168 +msgid "PWM base frequency:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2635 -#: src/emc/usr_intf/pncconf/pncconf.glade:3017 -#: src/emc/usr_intf/pncconf/pncconf.glade:3898 -#: src/emc/usr_intf/pncconf/pncconf.glade:4779 -msgid " abcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8179 +msgid "PDM base frequency:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2648 -#: src/emc/usr_intf/pncconf/pncconf.glade:2979 -#: src/emc/usr_intf/pncconf/pncconf.glade:3860 -#: src/emc/usr_intf/pncconf/pncconf.glade:4741 -msgid " d)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8190 +msgid "Watchdog timeout:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2664 -#, fuzzy -msgid "increments" -msgstr "Lépes növelése" +#: src/emc/usr_intf/pncconf/pncconf.glade:8307 +msgid "Num of encoders:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2708 -msgid "External MPG Jogging" +#: src/emc/usr_intf/pncconf/pncconf.glade:8318 +msgid "Num of pwm generators:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2739 -#: src/emc/usr_intf/pncconf/pncconf.glade:3620 -#: src/emc/usr_intf/pncconf/pncconf.glade:4501 -msgid "Use MPG " +#: src/emc/usr_intf/pncconf/pncconf.glade:8329 +msgid "Num of step generators: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2752 -#: src/emc/usr_intf/pncconf/pncconf.glade:3633 -#: src/emc/usr_intf/pncconf/pncconf.glade:4514 -msgid "use switches" +#: src/emc/usr_intf/pncconf/pncconf.glade:8340 +msgid "Board name" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2838 -#: src/emc/usr_intf/pncconf/pncconf.glade:3733 -#: src/emc/usr_intf/pncconf/pncconf.glade:4614 -msgid "ignore all-inputs false" +#: src/emc/usr_intf/pncconf/pncconf.glade:8346 +msgid "Num of Smart Serial Ports:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2853 -#: src/emc/usr_intf/pncconf/pncconf.glade:3748 -#: src/emc/usr_intf/pncconf/pncconf.glade:4629 -msgid "use graycode" +#: src/emc/usr_intf/pncconf/pncconf.glade:8393 +msgid "7i29 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2940 -#: src/emc/usr_intf/pncconf/pncconf.glade:3821 -#: src/emc/usr_intf/pncconf/pncconf.glade:4702 -msgid " abd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8402 +msgid "7i30 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:3555 -#: src/emc/usr_intf/pncconf/pncconf.glade:4436 -#: src/emc/usr_intf/pncconf/pncconf.glade:5317 -#, fuzzy -msgid "Increments" -msgstr "Lépes növelése" +#: src/emc/usr_intf/pncconf/pncconf.glade:8414 +msgid "7i33 daughter board" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:3589 -#, fuzzy -msgid "External Feed Override" -msgstr "Túlhajtás (%):" +#: src/emc/usr_intf/pncconf/pncconf.glade:8426 +msgid "7i40 daughter board" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:4470 -msgid "Max Velocity Override" +#: src/emc/usr_intf/pncconf/pncconf.glade:8438 +msgid "7i48 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5351 -#, fuzzy -msgid "External Spindle Override" -msgstr "Túlhajtás (%):" +#: src/emc/usr_intf/pncconf/pncconf.glade:8453 +msgid "Sanity Checks" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5379 -msgid "GUI configuration" +#: src/emc/usr_intf/pncconf/pncconf.glade:8482 +msgid "Num of channels: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5398 -msgid "Frontend" +#: src/emc/usr_intf/pncconf/pncconf.glade:8494 +msgid "Num of resolvers:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5557 -#, fuzzy +#: src/emc/usr_intf/pncconf/pncconf.glade:8528 msgid "" -"Commanded\n" -"Actual" -msgstr "Irányított" +"Configuration\n" +" Page" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5570 -#, fuzzy +#: src/emc/usr_intf/pncconf/pncconf.glade:8721 +#: src/emc/usr_intf/pncconf/pncconf.glade:8773 +#: src/emc/usr_intf/pncconf/pncconf.glade:9093 +#: src/emc/usr_intf/pncconf/pncconf.glade:9145 +#: src/emc/usr_intf/pncconf/pncconf.glade:9197 +#: src/emc/usr_intf/pncconf/pncconf.glade:9249 +#: src/emc/usr_intf/pncconf/pncconf.glade:9301 +#: src/emc/usr_intf/pncconf/pncconf.glade:9353 +#: src/emc/usr_intf/pncconf/pncconf.glade:9405 +#: src/emc/usr_intf/pncconf/pncconf.glade:9457 +#: src/emc/usr_intf/pncconf/pncconf.glade:9509 +#: src/emc/usr_intf/pncconf/pncconf.glade:9561 +#: src/emc/usr_intf/pncconf/pncconf.glade:10400 +#: src/emc/usr_intf/pncconf/pncconf.glade:10453 +#: src/emc/usr_intf/pncconf/pncconf.glade:10505 +#: src/emc/usr_intf/pncconf/pncconf.glade:10557 +#: src/emc/usr_intf/pncconf/pncconf.glade:11335 +#: src/emc/usr_intf/pncconf/pncconf.glade:11387 +#: src/emc/usr_intf/pncconf/pncconf.glade:12047 +#: src/emc/usr_intf/pncconf/pncconf.glade:12099 +#: src/emc/usr_intf/pncconf/pncconf.glade:12151 +#: src/emc/usr_intf/pncconf/pncconf.glade:12203 +#: src/emc/usr_intf/pncconf/pncconf.glade:13042 +#: src/emc/usr_intf/pncconf/pncconf.glade:13094 +#: src/emc/usr_intf/pncconf/pncconf.glade:13146 +#: src/emc/usr_intf/pncconf/pncconf.glade:13198 +#: src/emc/usr_intf/pncconf/pncconf.glade:13250 +#: src/emc/usr_intf/pncconf/pncconf.glade:13302 +#: src/emc/usr_intf/pncconf/pncconf.glade:13354 +#: src/emc/usr_intf/pncconf/pncconf.glade:13406 +#: src/emc/usr_intf/pncconf/pncconf.glade:13458 +#: src/emc/usr_intf/pncconf/pncconf.glade:13510 +#: src/emc/usr_intf/pncconf/pncconf.glade:14556 +#: src/emc/usr_intf/pncconf/pncconf.glade:14608 +#: src/emc/usr_intf/pncconf/pncconf.glade:14660 +#: src/emc/usr_intf/pncconf/pncconf.glade:14712 +#: src/emc/usr_intf/pncconf/pncconf.glade:15539 +#: src/emc/usr_intf/pncconf/pncconf.glade:15591 +#: src/emc/usr_intf/pncconf/pncconf.glade:15643 +#: src/emc/usr_intf/pncconf/pncconf.glade:15695 +#: src/emc/usr_intf/pncconf/pncconf.glade:15747 +#: src/emc/usr_intf/pncconf/pncconf.glade:15799 +#: src/emc/usr_intf/pncconf/pncconf.glade:15851 +#: src/emc/usr_intf/pncconf/pncconf.glade:15903 +#: src/emc/usr_intf/pncconf/pncconf.glade:15955 +#: src/emc/usr_intf/pncconf/pncconf.glade:16007 +#: src/emc/usr_intf/pncconf/pncconf.glade:16059 +#: src/emc/usr_intf/pncconf/pncconf.glade:16111 +#: src/emc/usr_intf/pncconf/pncconf.glade:16540 +#: src/emc/usr_intf/pncconf/pncconf.glade:16592 +#: src/emc/usr_intf/pncconf/pncconf.glade:17253 +#: src/emc/usr_intf/pncconf/pncconf.glade:17305 +#: src/emc/usr_intf/pncconf/pncconf.glade:17357 +#: src/emc/usr_intf/pncconf/pncconf.glade:18196 +#: src/emc/usr_intf/pncconf/pncconf.glade:18248 +#: src/emc/usr_intf/pncconf/pncconf.glade:18300 +#: src/emc/usr_intf/pncconf/pncconf.glade:18352 +#: src/emc/usr_intf/pncconf/pncconf.glade:18404 +#: src/emc/usr_intf/pncconf/pncconf.glade:18456 +#: src/emc/usr_intf/pncconf/pncconf.glade:18508 +#: src/emc/usr_intf/pncconf/pncconf.glade:18560 +#: src/emc/usr_intf/pncconf/pncconf.glade:18612 +#: src/emc/usr_intf/pncconf/pncconf.glade:18664 +#: src/emc/usr_intf/pncconf/pncconf.glade:18716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26612 +#: src/emc/usr_intf/pncconf/pncconf.glade:26664 +#: src/emc/usr_intf/pncconf/pncconf.glade:26716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26768 +#: src/emc/usr_intf/pncconf/pncconf.glade:26820 +#: src/emc/usr_intf/pncconf/pncconf.glade:26872 +#: src/emc/usr_intf/pncconf/pncconf.glade:26924 +#: src/emc/usr_intf/pncconf/pncconf.glade:26976 +#: src/emc/usr_intf/pncconf/pncconf.glade:27028 +#: src/emc/usr_intf/pncconf/pncconf.glade:27080 +#: src/emc/usr_intf/pncconf/pncconf.glade:27132 +#: src/emc/usr_intf/pncconf/pncconf.glade:27184 +#: src/emc/usr_intf/pncconf/pncconf.glade:28011 +#: src/emc/usr_intf/pncconf/pncconf.glade:28063 +#: src/emc/usr_intf/pncconf/pncconf.glade:28115 +#: src/emc/usr_intf/pncconf/pncconf.glade:28167 +#: src/emc/usr_intf/pncconf/pncconf.glade:29507 +#: src/emc/usr_intf/pncconf/pncconf.glade:29559 +#: src/emc/usr_intf/pncconf/pncconf.glade:29611 +#: src/emc/usr_intf/pncconf/pncconf.glade:29663 +#: src/emc/usr_intf/pncconf/pncconf.glade:30490 +#: src/emc/usr_intf/pncconf/pncconf.glade:30542 +#: src/emc/usr_intf/pncconf/pncconf.glade:30594 +#: src/emc/usr_intf/pncconf/pncconf.glade:30646 +#: src/emc/usr_intf/pncconf/pncconf.glade:30698 +#: src/emc/usr_intf/pncconf/pncconf.glade:30750 +#: src/emc/usr_intf/pncconf/pncconf.glade:30802 +#: src/emc/usr_intf/pncconf/pncconf.glade:30854 +#: src/emc/usr_intf/pncconf/pncconf.glade:30906 +#: src/emc/usr_intf/pncconf/pncconf.glade:30958 +#: src/emc/usr_intf/pncconf/pncconf.glade:31010 +#: src/emc/usr_intf/pncconf/pncconf.glade:31062 +#: src/emc/usr_intf/pncconf/pncconf.glade:31878 +#: src/emc/usr_intf/pncconf/pncconf.glade:31930 +#: src/emc/usr_intf/pncconf/pncconf.glade:31982 +#: src/emc/usr_intf/pncconf/pncconf.glade:32034 +#: src/emc/usr_intf/pncconf/pncconf.glade:32086 +#: src/emc/usr_intf/pncconf/pncconf.glade:32138 +#: src/emc/usr_intf/pncconf/pncconf.glade:32190 +#: src/emc/usr_intf/pncconf/pncconf.glade:32242 +#: src/emc/usr_intf/pncconf/pncconf.glade:32294 +#: src/emc/usr_intf/pncconf/pncconf.glade:32346 +#: src/emc/usr_intf/pncconf/pncconf.glade:32398 +#: src/emc/usr_intf/pncconf/pncconf.glade:32450 +#: src/emc/usr_intf/pncconf/pncconf.glade:33852 +#: src/emc/usr_intf/pncconf/pncconf.glade:33904 +#: src/emc/usr_intf/pncconf/pncconf.glade:33956 +#: src/emc/usr_intf/pncconf/pncconf.glade:34008 +#: src/emc/usr_intf/pncconf/pncconf.glade:34835 +#: src/emc/usr_intf/pncconf/pncconf.glade:34887 +#: src/emc/usr_intf/pncconf/pncconf.glade:34939 +#: src/emc/usr_intf/pncconf/pncconf.glade:34991 +#: src/emc/usr_intf/pncconf/pncconf.glade:35043 +#: src/emc/usr_intf/pncconf/pncconf.glade:35095 +#: src/emc/usr_intf/pncconf/pncconf.glade:35147 +#: src/emc/usr_intf/pncconf/pncconf.glade:35199 +#: src/emc/usr_intf/pncconf/pncconf.glade:35251 +#: src/emc/usr_intf/pncconf/pncconf.glade:35303 +#: src/emc/usr_intf/pncconf/pncconf.glade:35355 +#: src/emc/usr_intf/pncconf/pncconf.glade:35407 +#: src/emc/usr_intf/pncconf/pncconf.glade:36096 +#: src/emc/usr_intf/pncconf/pncconf.glade:36148 +#: src/emc/usr_intf/pncconf/pncconf.glade:36200 +#: src/emc/usr_intf/pncconf/pncconf.glade:36252 +#: src/emc/usr_intf/pncconf/pncconf.glade:36304 +#: src/emc/usr_intf/pncconf/pncconf.glade:36356 +#: src/emc/usr_intf/pncconf/pncconf.glade:36408 +#: src/emc/usr_intf/pncconf/pncconf.glade:36460 +#: src/emc/usr_intf/pncconf/pncconf.glade:36512 +#: src/emc/usr_intf/pncconf/pncconf.glade:36564 +#: src/emc/usr_intf/pncconf/pncconf.glade:36616 +#: src/emc/usr_intf/pncconf/pncconf.glade:36668 +#: src/emc/usr_intf/pncconf/pncconf.glade:37495 +#: src/emc/usr_intf/pncconf/pncconf.glade:37547 +#: src/emc/usr_intf/pncconf/pncconf.glade:37599 +#: src/emc/usr_intf/pncconf/pncconf.glade:37651 +#: src/emc/usr_intf/pncconf/pncconf.glade:39168 +#: src/emc/usr_intf/pncconf/pncconf.glade:39220 +#: src/emc/usr_intf/pncconf/pncconf.glade:39272 +#: src/emc/usr_intf/pncconf/pncconf.glade:39324 +#: src/emc/usr_intf/pncconf/pncconf.glade:39376 +#: src/emc/usr_intf/pncconf/pncconf.glade:39428 +#: src/emc/usr_intf/pncconf/pncconf.glade:39480 +#: src/emc/usr_intf/pncconf/pncconf.glade:39532 +#: src/emc/usr_intf/pncconf/pncconf.glade:39584 +#: src/emc/usr_intf/pncconf/pncconf.glade:39636 +#: src/emc/usr_intf/pncconf/pncconf.glade:39688 +#: src/emc/usr_intf/pncconf/pncconf.glade:39740 +#: src/emc/usr_intf/pncconf/pncconf.glade:40456 +#: src/emc/usr_intf/pncconf/pncconf.glade:40508 +#: src/emc/usr_intf/pncconf/pncconf.glade:40560 +#: src/emc/usr_intf/pncconf/pncconf.glade:40612 +#: src/emc/usr_intf/pncconf/pncconf.glade:40664 +#: src/emc/usr_intf/pncconf/pncconf.glade:40716 +#: src/emc/usr_intf/pncconf/pncconf.glade:40768 +#: src/emc/usr_intf/pncconf/pncconf.glade:40820 +#: src/emc/usr_intf/pncconf/pncconf.glade:40872 +#: src/emc/usr_intf/pncconf/pncconf.glade:40924 +#: src/emc/usr_intf/pncconf/pncconf.glade:40976 +#: src/emc/usr_intf/pncconf/pncconf.glade:41028 +#: src/emc/usr_intf/pncconf/pncconf.glade:41855 +#: src/emc/usr_intf/pncconf/pncconf.glade:41907 +#: src/emc/usr_intf/pncconf/pncconf.glade:41959 +#: src/emc/usr_intf/pncconf/pncconf.glade:42011 +#: src/emc/usr_intf/pncconf/pncconf.glade:43351 +#: src/emc/usr_intf/pncconf/pncconf.glade:43403 +#: src/emc/usr_intf/pncconf/pncconf.glade:43455 +#: src/emc/usr_intf/pncconf/pncconf.glade:43507 +#: src/emc/usr_intf/pncconf/pncconf.glade:44334 +#: src/emc/usr_intf/pncconf/pncconf.glade:44386 +#: src/emc/usr_intf/pncconf/pncconf.glade:44438 +#: src/emc/usr_intf/pncconf/pncconf.glade:44490 +#: src/emc/usr_intf/pncconf/pncconf.glade:44542 +#: src/emc/usr_intf/pncconf/pncconf.glade:44594 +#: src/emc/usr_intf/pncconf/pncconf.glade:44646 +#: src/emc/usr_intf/pncconf/pncconf.glade:44698 +#: src/emc/usr_intf/pncconf/pncconf.glade:44750 +#: src/emc/usr_intf/pncconf/pncconf.glade:44802 +#: src/emc/usr_intf/pncconf/pncconf.glade:44854 +#: src/emc/usr_intf/pncconf/pncconf.glade:44906 +#: src/emc/usr_intf/pncconf/pncconf.glade:45711 +#: src/emc/usr_intf/pncconf/pncconf.glade:45763 +#: src/emc/usr_intf/pncconf/pncconf.glade:45815 +#: src/emc/usr_intf/pncconf/pncconf.glade:45867 +#: src/emc/usr_intf/pncconf/pncconf.glade:45919 +#: src/emc/usr_intf/pncconf/pncconf.glade:45971 +#: src/emc/usr_intf/pncconf/pncconf.glade:46023 +#: src/emc/usr_intf/pncconf/pncconf.glade:46075 +#: src/emc/usr_intf/pncconf/pncconf.glade:46127 +#: src/emc/usr_intf/pncconf/pncconf.glade:46179 +#: src/emc/usr_intf/pncconf/pncconf.glade:46231 +#: src/emc/usr_intf/pncconf/pncconf.glade:46283 +#: src/emc/usr_intf/pncconf/pncconf.glade:47379 +#: src/emc/usr_intf/pncconf/pncconf.glade:47431 +#: src/emc/usr_intf/pncconf/pncconf.glade:47483 +#: src/emc/usr_intf/pncconf/pncconf.glade:47535 +#: src/emc/usr_intf/pncconf/pncconf.glade:47587 +#: src/emc/usr_intf/pncconf/pncconf.glade:47639 +#: src/emc/usr_intf/pncconf/pncconf.glade:47691 +#: src/emc/usr_intf/pncconf/pncconf.glade:47743 +#: src/emc/usr_intf/pncconf/pncconf.glade:47795 +#: src/emc/usr_intf/pncconf/pncconf.glade:47847 +#: src/emc/usr_intf/pncconf/pncconf.glade:47899 +#: src/emc/usr_intf/pncconf/pncconf.glade:47951 +#: src/emc/usr_intf/pncconf/pncconf.glade:48778 +#: src/emc/usr_intf/pncconf/pncconf.glade:48830 +#: src/emc/usr_intf/pncconf/pncconf.glade:48882 +#: src/emc/usr_intf/pncconf/pncconf.glade:48934 +#: src/emc/usr_intf/pncconf/pncconf.glade:50274 +#: src/emc/usr_intf/pncconf/pncconf.glade:50326 +#: src/emc/usr_intf/pncconf/pncconf.glade:50378 +#: src/emc/usr_intf/pncconf/pncconf.glade:50430 +#: src/emc/usr_intf/pncconf/pncconf.glade:51257 +#: src/emc/usr_intf/pncconf/pncconf.glade:51309 +#: src/emc/usr_intf/pncconf/pncconf.glade:51361 +#: src/emc/usr_intf/pncconf/pncconf.glade:51413 +#: src/emc/usr_intf/pncconf/pncconf.glade:51465 +#: src/emc/usr_intf/pncconf/pncconf.glade:51517 +#: src/emc/usr_intf/pncconf/pncconf.glade:51569 +#: src/emc/usr_intf/pncconf/pncconf.glade:51621 +#: src/emc/usr_intf/pncconf/pncconf.glade:51673 +#: src/emc/usr_intf/pncconf/pncconf.glade:51725 +#: src/emc/usr_intf/pncconf/pncconf.glade:51777 +#: src/emc/usr_intf/pncconf/pncconf.glade:51829 +#: src/emc/usr_intf/pncconf/pncconf.glade:52634 +#: src/emc/usr_intf/pncconf/pncconf.glade:52686 +#: src/emc/usr_intf/pncconf/pncconf.glade:52738 +#: src/emc/usr_intf/pncconf/pncconf.glade:52790 +#: src/emc/usr_intf/pncconf/pncconf.glade:52842 +#: src/emc/usr_intf/pncconf/pncconf.glade:52894 +#: src/emc/usr_intf/pncconf/pncconf.glade:52946 +#: src/emc/usr_intf/pncconf/pncconf.glade:52998 +#: src/emc/usr_intf/pncconf/pncconf.glade:53050 +#: src/emc/usr_intf/pncconf/pncconf.glade:53102 +#: src/emc/usr_intf/pncconf/pncconf.glade:53154 +#: src/emc/usr_intf/pncconf/pncconf.glade:53206 +#: src/emc/usr_intf/pncconf/pncconf.glade:54302 +#: src/emc/usr_intf/pncconf/pncconf.glade:54354 +#: src/emc/usr_intf/pncconf/pncconf.glade:54406 +#: src/emc/usr_intf/pncconf/pncconf.glade:54458 +#: src/emc/usr_intf/pncconf/pncconf.glade:54510 +#: src/emc/usr_intf/pncconf/pncconf.glade:54562 +#: src/emc/usr_intf/pncconf/pncconf.glade:54614 +#: src/emc/usr_intf/pncconf/pncconf.glade:54666 +#: src/emc/usr_intf/pncconf/pncconf.glade:54718 +#: src/emc/usr_intf/pncconf/pncconf.glade:54770 +#: src/emc/usr_intf/pncconf/pncconf.glade:54822 +#: src/emc/usr_intf/pncconf/pncconf.glade:54874 +#: src/emc/usr_intf/pncconf/pncconf.glade:55701 +#: src/emc/usr_intf/pncconf/pncconf.glade:55753 +#: src/emc/usr_intf/pncconf/pncconf.glade:55805 +#: src/emc/usr_intf/pncconf/pncconf.glade:55857 +#: src/emc/usr_intf/pncconf/pncconf.glade:57197 +#: src/emc/usr_intf/pncconf/pncconf.glade:57249 +#: src/emc/usr_intf/pncconf/pncconf.glade:57301 +#: src/emc/usr_intf/pncconf/pncconf.glade:57353 +#: src/emc/usr_intf/pncconf/pncconf.glade:58180 +#: src/emc/usr_intf/pncconf/pncconf.glade:58232 +#: src/emc/usr_intf/pncconf/pncconf.glade:58284 +#: src/emc/usr_intf/pncconf/pncconf.glade:58336 +#: src/emc/usr_intf/pncconf/pncconf.glade:58388 +#: src/emc/usr_intf/pncconf/pncconf.glade:58440 +#: src/emc/usr_intf/pncconf/pncconf.glade:58492 +#: src/emc/usr_intf/pncconf/pncconf.glade:58544 +#: src/emc/usr_intf/pncconf/pncconf.glade:58596 +#: src/emc/usr_intf/pncconf/pncconf.glade:58648 +#: src/emc/usr_intf/pncconf/pncconf.glade:58700 +#: src/emc/usr_intf/pncconf/pncconf.glade:58752 +#: src/emc/usr_intf/pncconf/pncconf.glade:59557 +#: src/emc/usr_intf/pncconf/pncconf.glade:59609 +#: src/emc/usr_intf/pncconf/pncconf.glade:59661 +#: src/emc/usr_intf/pncconf/pncconf.glade:59713 +#: src/emc/usr_intf/pncconf/pncconf.glade:59765 +#: src/emc/usr_intf/pncconf/pncconf.glade:59817 +#: src/emc/usr_intf/pncconf/pncconf.glade:59869 +#: src/emc/usr_intf/pncconf/pncconf.glade:59921 +#: src/emc/usr_intf/pncconf/pncconf.glade:59973 +#: src/emc/usr_intf/pncconf/pncconf.glade:60025 +#: src/emc/usr_intf/pncconf/pncconf.glade:60077 +#: src/emc/usr_intf/pncconf/pncconf.glade:60129 msgid "" -"Machine\n" -"Relative\n" -msgstr "Relatív" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5608 -#, fuzzy -msgid "Max Feed Override" -msgstr "Túlhajtás (%):" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5667 -#, fuzzy -msgid "Min Spindle Override" -msgstr "Túlhajtás (%):" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5691 -#, fuzzy -msgid "Max Spindle Override " -msgstr "Túlhajtás (%):" +"ESTOP IN\n" +"Spindle PPR\n" +"Spindle A \n" +"Spindle B \n" +"Home X \n" +"Home Y \n" +"Home Z\n" +"Home A\n" +"Minimum Limit + Home X \n" +"Minimum Limit + Home Y \n" +"Minimum Limit + Home Z \n" +"Minimum Limit + Home A\n" +"Maximum Limit + Home X \n" +"Maximum Limit + Home Y \n" +"Maximum Limit + Home Z \n" +"Maximum Limit + Home A\n" +"Both Limit + Home X \n" +"Both Limit + Home Y \n" +"Both Limit + Home Z \n" +"Both Limit + Home A\n" +"Minimum Limit X \n" +"Minimum Limit Y \n" +"Minimum Limit Z \n" +"Minimum Limit A\n" +"Maximum Limit X \n" +"Maximum Limit Y \n" +"Maximum Limit Z \n" +"Maximum Limit A\n" +"Both Limit X \n" +"Both Limit Y \n" +"Both Limit Z \n" +"Both Limit A\n" +"All limits\n" +"All home\n" +"Unused" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5702 -#, fuzzy -msgid "Position_feedback" -msgstr "Pozíció:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8825 +#: src/emc/usr_intf/pncconf/pncconf.glade:9081 +#: src/emc/usr_intf/pncconf/pncconf.glade:13563 +#: src/emc/usr_intf/pncconf/pncconf.glade:13818 +#: src/emc/usr_intf/pncconf/pncconf.glade:16164 +#: src/emc/usr_intf/pncconf/pncconf.glade:16410 +#: src/emc/usr_intf/pncconf/pncconf.glade:18769 +#: src/emc/usr_intf/pncconf/pncconf.glade:19024 +#: src/emc/usr_intf/pncconf/pncconf.glade:20571 +#: src/emc/usr_intf/pncconf/pncconf.glade:20820 +#: src/emc/usr_intf/pncconf/pncconf.glade:20949 +#: src/emc/usr_intf/pncconf/pncconf.glade:21199 +#: src/emc/usr_intf/pncconf/pncconf.glade:22745 +#: src/emc/usr_intf/pncconf/pncconf.glade:22995 +#: src/emc/usr_intf/pncconf/pncconf.glade:24541 +#: src/emc/usr_intf/pncconf/pncconf.glade:24791 +#: src/emc/usr_intf/pncconf/pncconf.glade:26353 +#: src/emc/usr_intf/pncconf/pncconf.glade:26600 +#: src/emc/usr_intf/pncconf/pncconf.glade:31115 +#: src/emc/usr_intf/pncconf/pncconf.glade:31361 +#: src/emc/usr_intf/pncconf/pncconf.glade:31621 +#: src/emc/usr_intf/pncconf/pncconf.glade:35460 +#: src/emc/usr_intf/pncconf/pncconf.glade:35706 +#: src/emc/usr_intf/pncconf/pncconf.glade:35837 +#: src/emc/usr_intf/pncconf/pncconf.glade:36084 +#: src/emc/usr_intf/pncconf/pncconf.glade:40037 +#: src/emc/usr_intf/pncconf/pncconf.glade:40197 +#: src/emc/usr_intf/pncconf/pncconf.glade:40444 +#: src/emc/usr_intf/pncconf/pncconf.glade:44959 +#: src/emc/usr_intf/pncconf/pncconf.glade:45205 +#: src/emc/usr_intf/pncconf/pncconf.glade:45454 +#: src/emc/usr_intf/pncconf/pncconf.glade:47120 +#: src/emc/usr_intf/pncconf/pncconf.glade:47367 +#: src/emc/usr_intf/pncconf/pncconf.glade:51882 +#: src/emc/usr_intf/pncconf/pncconf.glade:52128 +#: src/emc/usr_intf/pncconf/pncconf.glade:52377 +#: src/emc/usr_intf/pncconf/pncconf.glade:54043 +#: src/emc/usr_intf/pncconf/pncconf.glade:54290 +#: src/emc/usr_intf/pncconf/pncconf.glade:58805 +#: src/emc/usr_intf/pncconf/pncconf.glade:59051 +#: src/emc/usr_intf/pncconf/pncconf.glade:59300 +msgid "Pin Type" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5713 -#, fuzzy -msgid "Position_offset" -msgstr "Pozíció:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8838 +#: src/emc/usr_intf/pncconf/pncconf.glade:8900 +#: src/emc/usr_intf/pncconf/pncconf.glade:13743 +#: src/emc/usr_intf/pncconf/pncconf.glade:13806 +#: src/emc/usr_intf/pncconf/pncconf.glade:16335 +#: src/emc/usr_intf/pncconf/pncconf.glade:16398 +#: src/emc/usr_intf/pncconf/pncconf.glade:18949 +#: src/emc/usr_intf/pncconf/pncconf.glade:19012 +#: src/emc/usr_intf/pncconf/pncconf.glade:20751 +#: src/emc/usr_intf/pncconf/pncconf.glade:20808 +#: src/emc/usr_intf/pncconf/pncconf.glade:20962 +#: src/emc/usr_intf/pncconf/pncconf.glade:21018 +#: src/emc/usr_intf/pncconf/pncconf.glade:22758 +#: src/emc/usr_intf/pncconf/pncconf.glade:22814 +#: src/emc/usr_intf/pncconf/pncconf.glade:24554 +#: src/emc/usr_intf/pncconf/pncconf.glade:24610 +#: src/emc/usr_intf/pncconf/pncconf.glade:26366 +#: src/emc/usr_intf/pncconf/pncconf.glade:26428 +#: src/emc/usr_intf/pncconf/pncconf.glade:31286 +#: src/emc/usr_intf/pncconf/pncconf.glade:31349 +#: src/emc/usr_intf/pncconf/pncconf.glade:31634 +#: src/emc/usr_intf/pncconf/pncconf.glade:35631 +#: src/emc/usr_intf/pncconf/pncconf.glade:35694 +#: src/emc/usr_intf/pncconf/pncconf.glade:35850 +#: src/emc/usr_intf/pncconf/pncconf.glade:35912 +#: src/emc/usr_intf/pncconf/pncconf.glade:40025 +#: src/emc/usr_intf/pncconf/pncconf.glade:40210 +#: src/emc/usr_intf/pncconf/pncconf.glade:40272 +#: src/emc/usr_intf/pncconf/pncconf.glade:45130 +#: src/emc/usr_intf/pncconf/pncconf.glade:45193 +#: src/emc/usr_intf/pncconf/pncconf.glade:45467 +#: src/emc/usr_intf/pncconf/pncconf.glade:47133 +#: src/emc/usr_intf/pncconf/pncconf.glade:47195 +#: src/emc/usr_intf/pncconf/pncconf.glade:52053 +#: src/emc/usr_intf/pncconf/pncconf.glade:52116 +#: src/emc/usr_intf/pncconf/pncconf.glade:52390 +#: src/emc/usr_intf/pncconf/pncconf.glade:54056 +#: src/emc/usr_intf/pncconf/pncconf.glade:54118 +#: src/emc/usr_intf/pncconf/pncconf.glade:58976 +#: src/emc/usr_intf/pncconf/pncconf.glade:59039 +#: src/emc/usr_intf/pncconf/pncconf.glade:59313 +msgid "Inv" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5721 -msgid "General GUI Defaults" +#: src/emc/usr_intf/pncconf/pncconf.glade:8867 +#: src/emc/usr_intf/pncconf/pncconf.glade:10731 +#: src/emc/usr_intf/pncconf/pncconf.glade:10751 +#: src/emc/usr_intf/pncconf/pncconf.glade:10771 +#: src/emc/usr_intf/pncconf/pncconf.glade:10791 +#: src/emc/usr_intf/pncconf/pncconf.glade:10811 +#: src/emc/usr_intf/pncconf/pncconf.glade:10831 +#: src/emc/usr_intf/pncconf/pncconf.glade:10851 +#: src/emc/usr_intf/pncconf/pncconf.glade:10871 +#: src/emc/usr_intf/pncconf/pncconf.glade:10891 +#: src/emc/usr_intf/pncconf/pncconf.glade:10911 +#: src/emc/usr_intf/pncconf/pncconf.glade:10931 +#: src/emc/usr_intf/pncconf/pncconf.glade:10951 +#: src/emc/usr_intf/pncconf/pncconf.glade:10971 +#: src/emc/usr_intf/pncconf/pncconf.glade:10991 +#: src/emc/usr_intf/pncconf/pncconf.glade:11011 +#: src/emc/usr_intf/pncconf/pncconf.glade:11031 +#: src/emc/usr_intf/pncconf/pncconf.glade:11051 +#: src/emc/usr_intf/pncconf/pncconf.glade:11071 +#: src/emc/usr_intf/pncconf/pncconf.glade:11091 +#: src/emc/usr_intf/pncconf/pncconf.glade:11111 +#: src/emc/usr_intf/pncconf/pncconf.glade:11131 +#: src/emc/usr_intf/pncconf/pncconf.glade:11151 +#: src/emc/usr_intf/pncconf/pncconf.glade:11171 +#: src/emc/usr_intf/pncconf/pncconf.glade:11465 +#: src/emc/usr_intf/pncconf/pncconf.glade:11485 +#: src/emc/usr_intf/pncconf/pncconf.glade:11505 +#: src/emc/usr_intf/pncconf/pncconf.glade:11525 +#: src/emc/usr_intf/pncconf/pncconf.glade:11545 +#: src/emc/usr_intf/pncconf/pncconf.glade:11565 +#: src/emc/usr_intf/pncconf/pncconf.glade:11585 +#: src/emc/usr_intf/pncconf/pncconf.glade:11605 +#: src/emc/usr_intf/pncconf/pncconf.glade:11625 +#: src/emc/usr_intf/pncconf/pncconf.glade:11645 +#: src/emc/usr_intf/pncconf/pncconf.glade:11665 +#: src/emc/usr_intf/pncconf/pncconf.glade:11685 +#: src/emc/usr_intf/pncconf/pncconf.glade:11705 +#: src/emc/usr_intf/pncconf/pncconf.glade:11725 +#: src/emc/usr_intf/pncconf/pncconf.glade:11745 +#: src/emc/usr_intf/pncconf/pncconf.glade:11765 +#: src/emc/usr_intf/pncconf/pncconf.glade:11785 +#: src/emc/usr_intf/pncconf/pncconf.glade:11805 +#: src/emc/usr_intf/pncconf/pncconf.glade:11825 +#: src/emc/usr_intf/pncconf/pncconf.glade:11845 +#: src/emc/usr_intf/pncconf/pncconf.glade:11865 +#: src/emc/usr_intf/pncconf/pncconf.glade:11885 +#: src/emc/usr_intf/pncconf/pncconf.glade:11905 +#: src/emc/usr_intf/pncconf/pncconf.glade:13768 +#: src/emc/usr_intf/pncconf/pncconf.glade:13974 +#: src/emc/usr_intf/pncconf/pncconf.glade:13994 +#: src/emc/usr_intf/pncconf/pncconf.glade:14014 +#: src/emc/usr_intf/pncconf/pncconf.glade:14034 +#: src/emc/usr_intf/pncconf/pncconf.glade:14054 +#: src/emc/usr_intf/pncconf/pncconf.glade:14074 +#: src/emc/usr_intf/pncconf/pncconf.glade:14094 +#: src/emc/usr_intf/pncconf/pncconf.glade:14114 +#: src/emc/usr_intf/pncconf/pncconf.glade:14134 +#: src/emc/usr_intf/pncconf/pncconf.glade:14154 +#: src/emc/usr_intf/pncconf/pncconf.glade:14174 +#: src/emc/usr_intf/pncconf/pncconf.glade:14194 +#: src/emc/usr_intf/pncconf/pncconf.glade:14214 +#: src/emc/usr_intf/pncconf/pncconf.glade:14234 +#: src/emc/usr_intf/pncconf/pncconf.glade:14254 +#: src/emc/usr_intf/pncconf/pncconf.glade:14274 +#: src/emc/usr_intf/pncconf/pncconf.glade:14294 +#: src/emc/usr_intf/pncconf/pncconf.glade:14314 +#: src/emc/usr_intf/pncconf/pncconf.glade:14334 +#: src/emc/usr_intf/pncconf/pncconf.glade:14354 +#: src/emc/usr_intf/pncconf/pncconf.glade:14374 +#: src/emc/usr_intf/pncconf/pncconf.glade:14394 +#: src/emc/usr_intf/pncconf/pncconf.glade:14414 +#: src/emc/usr_intf/pncconf/pncconf.glade:16360 +#: src/emc/usr_intf/pncconf/pncconf.glade:16670 +#: src/emc/usr_intf/pncconf/pncconf.glade:16690 +#: src/emc/usr_intf/pncconf/pncconf.glade:16710 +#: src/emc/usr_intf/pncconf/pncconf.glade:16730 +#: src/emc/usr_intf/pncconf/pncconf.glade:16750 +#: src/emc/usr_intf/pncconf/pncconf.glade:16770 +#: src/emc/usr_intf/pncconf/pncconf.glade:16790 +#: src/emc/usr_intf/pncconf/pncconf.glade:16810 +#: src/emc/usr_intf/pncconf/pncconf.glade:16830 +#: src/emc/usr_intf/pncconf/pncconf.glade:16850 +#: src/emc/usr_intf/pncconf/pncconf.glade:16870 +#: src/emc/usr_intf/pncconf/pncconf.glade:16890 +#: src/emc/usr_intf/pncconf/pncconf.glade:16910 +#: src/emc/usr_intf/pncconf/pncconf.glade:16930 +#: src/emc/usr_intf/pncconf/pncconf.glade:16950 +#: src/emc/usr_intf/pncconf/pncconf.glade:16970 +#: src/emc/usr_intf/pncconf/pncconf.glade:16990 +#: src/emc/usr_intf/pncconf/pncconf.glade:17010 +#: src/emc/usr_intf/pncconf/pncconf.glade:17030 +#: src/emc/usr_intf/pncconf/pncconf.glade:17050 +#: src/emc/usr_intf/pncconf/pncconf.glade:17070 +#: src/emc/usr_intf/pncconf/pncconf.glade:17090 +#: src/emc/usr_intf/pncconf/pncconf.glade:17110 +#: src/emc/usr_intf/pncconf/pncconf.glade:18974 +#: src/emc/usr_intf/pncconf/pncconf.glade:26395 +#: src/emc/usr_intf/pncconf/pncconf.glade:28311 +#: src/emc/usr_intf/pncconf/pncconf.glade:28331 +#: src/emc/usr_intf/pncconf/pncconf.glade:28351 +#: src/emc/usr_intf/pncconf/pncconf.glade:28371 +#: src/emc/usr_intf/pncconf/pncconf.glade:28391 +#: src/emc/usr_intf/pncconf/pncconf.glade:28411 +#: src/emc/usr_intf/pncconf/pncconf.glade:28431 +#: src/emc/usr_intf/pncconf/pncconf.glade:28451 +#: src/emc/usr_intf/pncconf/pncconf.glade:28471 +#: src/emc/usr_intf/pncconf/pncconf.glade:28491 +#: src/emc/usr_intf/pncconf/pncconf.glade:28511 +#: src/emc/usr_intf/pncconf/pncconf.glade:28531 +#: src/emc/usr_intf/pncconf/pncconf.glade:28551 +#: src/emc/usr_intf/pncconf/pncconf.glade:28571 +#: src/emc/usr_intf/pncconf/pncconf.glade:28591 +#: src/emc/usr_intf/pncconf/pncconf.glade:28611 +#: src/emc/usr_intf/pncconf/pncconf.glade:28631 +#: src/emc/usr_intf/pncconf/pncconf.glade:28651 +#: src/emc/usr_intf/pncconf/pncconf.glade:28671 +#: src/emc/usr_intf/pncconf/pncconf.glade:28691 +#: src/emc/usr_intf/pncconf/pncconf.glade:28711 +#: src/emc/usr_intf/pncconf/pncconf.glade:28731 +#: src/emc/usr_intf/pncconf/pncconf.glade:28751 +#: src/emc/usr_intf/pncconf/pncconf.glade:28942 +#: src/emc/usr_intf/pncconf/pncconf.glade:28962 +#: src/emc/usr_intf/pncconf/pncconf.glade:28982 +#: src/emc/usr_intf/pncconf/pncconf.glade:29002 +#: src/emc/usr_intf/pncconf/pncconf.glade:29022 +#: src/emc/usr_intf/pncconf/pncconf.glade:29042 +#: src/emc/usr_intf/pncconf/pncconf.glade:29062 +#: src/emc/usr_intf/pncconf/pncconf.glade:29082 +#: src/emc/usr_intf/pncconf/pncconf.glade:29102 +#: src/emc/usr_intf/pncconf/pncconf.glade:29122 +#: src/emc/usr_intf/pncconf/pncconf.glade:29142 +#: src/emc/usr_intf/pncconf/pncconf.glade:29162 +#: src/emc/usr_intf/pncconf/pncconf.glade:29182 +#: src/emc/usr_intf/pncconf/pncconf.glade:29202 +#: src/emc/usr_intf/pncconf/pncconf.glade:29222 +#: src/emc/usr_intf/pncconf/pncconf.glade:29242 +#: src/emc/usr_intf/pncconf/pncconf.glade:29262 +#: src/emc/usr_intf/pncconf/pncconf.glade:29282 +#: src/emc/usr_intf/pncconf/pncconf.glade:29302 +#: src/emc/usr_intf/pncconf/pncconf.glade:29322 +#: src/emc/usr_intf/pncconf/pncconf.glade:29342 +#: src/emc/usr_intf/pncconf/pncconf.glade:29362 +#: src/emc/usr_intf/pncconf/pncconf.glade:29382 +#: src/emc/usr_intf/pncconf/pncconf.glade:31311 +#: src/emc/usr_intf/pncconf/pncconf.glade:31663 +#: src/emc/usr_intf/pncconf/pncconf.glade:32881 +#: src/emc/usr_intf/pncconf/pncconf.glade:32901 +#: src/emc/usr_intf/pncconf/pncconf.glade:32921 +#: src/emc/usr_intf/pncconf/pncconf.glade:32941 +#: src/emc/usr_intf/pncconf/pncconf.glade:32961 +#: src/emc/usr_intf/pncconf/pncconf.glade:32981 +#: src/emc/usr_intf/pncconf/pncconf.glade:33001 +#: src/emc/usr_intf/pncconf/pncconf.glade:33021 +#: src/emc/usr_intf/pncconf/pncconf.glade:33041 +#: src/emc/usr_intf/pncconf/pncconf.glade:33061 +#: src/emc/usr_intf/pncconf/pncconf.glade:33081 +#: src/emc/usr_intf/pncconf/pncconf.glade:33300 +#: src/emc/usr_intf/pncconf/pncconf.glade:33320 +#: src/emc/usr_intf/pncconf/pncconf.glade:33340 +#: src/emc/usr_intf/pncconf/pncconf.glade:33360 +#: src/emc/usr_intf/pncconf/pncconf.glade:33380 +#: src/emc/usr_intf/pncconf/pncconf.glade:33400 +#: src/emc/usr_intf/pncconf/pncconf.glade:33420 +#: src/emc/usr_intf/pncconf/pncconf.glade:33440 +#: src/emc/usr_intf/pncconf/pncconf.glade:33460 +#: src/emc/usr_intf/pncconf/pncconf.glade:33480 +#: src/emc/usr_intf/pncconf/pncconf.glade:33500 +#: src/emc/usr_intf/pncconf/pncconf.glade:33520 +#: src/emc/usr_intf/pncconf/pncconf.glade:33540 +#: src/emc/usr_intf/pncconf/pncconf.glade:33560 +#: src/emc/usr_intf/pncconf/pncconf.glade:33580 +#: src/emc/usr_intf/pncconf/pncconf.glade:33600 +#: src/emc/usr_intf/pncconf/pncconf.glade:33620 +#: src/emc/usr_intf/pncconf/pncconf.glade:33640 +#: src/emc/usr_intf/pncconf/pncconf.glade:33660 +#: src/emc/usr_intf/pncconf/pncconf.glade:33680 +#: src/emc/usr_intf/pncconf/pncconf.glade:33700 +#: src/emc/usr_intf/pncconf/pncconf.glade:33720 +#: src/emc/usr_intf/pncconf/pncconf.glade:33740 +#: src/emc/usr_intf/pncconf/pncconf.glade:35656 +#: src/emc/usr_intf/pncconf/pncconf.glade:35879 +#: src/emc/usr_intf/pncconf/pncconf.glade:37808 +#: src/emc/usr_intf/pncconf/pncconf.glade:37828 +#: src/emc/usr_intf/pncconf/pncconf.glade:37848 +#: src/emc/usr_intf/pncconf/pncconf.glade:37868 +#: src/emc/usr_intf/pncconf/pncconf.glade:37888 +#: src/emc/usr_intf/pncconf/pncconf.glade:37908 +#: src/emc/usr_intf/pncconf/pncconf.glade:37928 +#: src/emc/usr_intf/pncconf/pncconf.glade:37948 +#: src/emc/usr_intf/pncconf/pncconf.glade:37968 +#: src/emc/usr_intf/pncconf/pncconf.glade:37988 +#: src/emc/usr_intf/pncconf/pncconf.glade:38008 +#: src/emc/usr_intf/pncconf/pncconf.glade:38028 +#: src/emc/usr_intf/pncconf/pncconf.glade:38048 +#: src/emc/usr_intf/pncconf/pncconf.glade:38068 +#: src/emc/usr_intf/pncconf/pncconf.glade:38088 +#: src/emc/usr_intf/pncconf/pncconf.glade:38108 +#: src/emc/usr_intf/pncconf/pncconf.glade:38128 +#: src/emc/usr_intf/pncconf/pncconf.glade:38148 +#: src/emc/usr_intf/pncconf/pncconf.glade:38168 +#: src/emc/usr_intf/pncconf/pncconf.glade:38188 +#: src/emc/usr_intf/pncconf/pncconf.glade:38208 +#: src/emc/usr_intf/pncconf/pncconf.glade:38228 +#: src/emc/usr_intf/pncconf/pncconf.glade:38248 +#: src/emc/usr_intf/pncconf/pncconf.glade:38557 +#: src/emc/usr_intf/pncconf/pncconf.glade:38577 +#: src/emc/usr_intf/pncconf/pncconf.glade:38597 +#: src/emc/usr_intf/pncconf/pncconf.glade:38617 +#: src/emc/usr_intf/pncconf/pncconf.glade:38637 +#: src/emc/usr_intf/pncconf/pncconf.glade:38657 +#: src/emc/usr_intf/pncconf/pncconf.glade:38677 +#: src/emc/usr_intf/pncconf/pncconf.glade:38697 +#: src/emc/usr_intf/pncconf/pncconf.glade:38717 +#: src/emc/usr_intf/pncconf/pncconf.glade:38737 +#: src/emc/usr_intf/pncconf/pncconf.glade:38757 +#: src/emc/usr_intf/pncconf/pncconf.glade:39987 +#: src/emc/usr_intf/pncconf/pncconf.glade:40239 +#: src/emc/usr_intf/pncconf/pncconf.glade:42155 +#: src/emc/usr_intf/pncconf/pncconf.glade:42175 +#: src/emc/usr_intf/pncconf/pncconf.glade:42195 +#: src/emc/usr_intf/pncconf/pncconf.glade:42215 +#: src/emc/usr_intf/pncconf/pncconf.glade:42235 +#: src/emc/usr_intf/pncconf/pncconf.glade:42255 +#: src/emc/usr_intf/pncconf/pncconf.glade:42275 +#: src/emc/usr_intf/pncconf/pncconf.glade:42295 +#: src/emc/usr_intf/pncconf/pncconf.glade:42315 +#: src/emc/usr_intf/pncconf/pncconf.glade:42335 +#: src/emc/usr_intf/pncconf/pncconf.glade:42355 +#: src/emc/usr_intf/pncconf/pncconf.glade:42375 +#: src/emc/usr_intf/pncconf/pncconf.glade:42395 +#: src/emc/usr_intf/pncconf/pncconf.glade:42415 +#: src/emc/usr_intf/pncconf/pncconf.glade:42435 +#: src/emc/usr_intf/pncconf/pncconf.glade:42455 +#: src/emc/usr_intf/pncconf/pncconf.glade:42475 +#: src/emc/usr_intf/pncconf/pncconf.glade:42495 +#: src/emc/usr_intf/pncconf/pncconf.glade:42515 +#: src/emc/usr_intf/pncconf/pncconf.glade:42535 +#: src/emc/usr_intf/pncconf/pncconf.glade:42555 +#: src/emc/usr_intf/pncconf/pncconf.glade:42575 +#: src/emc/usr_intf/pncconf/pncconf.glade:42595 +#: src/emc/usr_intf/pncconf/pncconf.glade:42786 +#: src/emc/usr_intf/pncconf/pncconf.glade:42806 +#: src/emc/usr_intf/pncconf/pncconf.glade:42826 +#: src/emc/usr_intf/pncconf/pncconf.glade:42846 +#: src/emc/usr_intf/pncconf/pncconf.glade:42866 +#: src/emc/usr_intf/pncconf/pncconf.glade:42886 +#: src/emc/usr_intf/pncconf/pncconf.glade:42906 +#: src/emc/usr_intf/pncconf/pncconf.glade:42926 +#: src/emc/usr_intf/pncconf/pncconf.glade:42946 +#: src/emc/usr_intf/pncconf/pncconf.glade:42966 +#: src/emc/usr_intf/pncconf/pncconf.glade:42986 +#: src/emc/usr_intf/pncconf/pncconf.glade:43006 +#: src/emc/usr_intf/pncconf/pncconf.glade:43026 +#: src/emc/usr_intf/pncconf/pncconf.glade:43046 +#: src/emc/usr_intf/pncconf/pncconf.glade:43066 +#: src/emc/usr_intf/pncconf/pncconf.glade:43086 +#: src/emc/usr_intf/pncconf/pncconf.glade:43106 +#: src/emc/usr_intf/pncconf/pncconf.glade:43126 +#: src/emc/usr_intf/pncconf/pncconf.glade:43146 +#: src/emc/usr_intf/pncconf/pncconf.glade:43166 +#: src/emc/usr_intf/pncconf/pncconf.glade:43186 +#: src/emc/usr_intf/pncconf/pncconf.glade:43206 +#: src/emc/usr_intf/pncconf/pncconf.glade:43226 +#: src/emc/usr_intf/pncconf/pncconf.glade:45155 +#: src/emc/usr_intf/pncconf/pncconf.glade:45496 +#: src/emc/usr_intf/pncconf/pncconf.glade:46726 +#: src/emc/usr_intf/pncconf/pncconf.glade:46746 +#: src/emc/usr_intf/pncconf/pncconf.glade:46766 +#: src/emc/usr_intf/pncconf/pncconf.glade:46786 +#: src/emc/usr_intf/pncconf/pncconf.glade:46806 +#: src/emc/usr_intf/pncconf/pncconf.glade:46826 +#: src/emc/usr_intf/pncconf/pncconf.glade:46846 +#: src/emc/usr_intf/pncconf/pncconf.glade:46866 +#: src/emc/usr_intf/pncconf/pncconf.glade:46886 +#: src/emc/usr_intf/pncconf/pncconf.glade:46906 +#: src/emc/usr_intf/pncconf/pncconf.glade:46926 +#: src/emc/usr_intf/pncconf/pncconf.glade:47162 +#: src/emc/usr_intf/pncconf/pncconf.glade:49078 +#: src/emc/usr_intf/pncconf/pncconf.glade:49098 +#: src/emc/usr_intf/pncconf/pncconf.glade:49118 +#: src/emc/usr_intf/pncconf/pncconf.glade:49138 +#: src/emc/usr_intf/pncconf/pncconf.glade:49158 +#: src/emc/usr_intf/pncconf/pncconf.glade:49178 +#: src/emc/usr_intf/pncconf/pncconf.glade:49198 +#: src/emc/usr_intf/pncconf/pncconf.glade:49218 +#: src/emc/usr_intf/pncconf/pncconf.glade:49238 +#: src/emc/usr_intf/pncconf/pncconf.glade:49258 +#: src/emc/usr_intf/pncconf/pncconf.glade:49278 +#: src/emc/usr_intf/pncconf/pncconf.glade:49298 +#: src/emc/usr_intf/pncconf/pncconf.glade:49318 +#: src/emc/usr_intf/pncconf/pncconf.glade:49338 +#: src/emc/usr_intf/pncconf/pncconf.glade:49358 +#: src/emc/usr_intf/pncconf/pncconf.glade:49378 +#: src/emc/usr_intf/pncconf/pncconf.glade:49398 +#: src/emc/usr_intf/pncconf/pncconf.glade:49418 +#: src/emc/usr_intf/pncconf/pncconf.glade:49438 +#: src/emc/usr_intf/pncconf/pncconf.glade:49458 +#: src/emc/usr_intf/pncconf/pncconf.glade:49478 +#: src/emc/usr_intf/pncconf/pncconf.glade:49498 +#: src/emc/usr_intf/pncconf/pncconf.glade:49518 +#: src/emc/usr_intf/pncconf/pncconf.glade:49709 +#: src/emc/usr_intf/pncconf/pncconf.glade:49729 +#: src/emc/usr_intf/pncconf/pncconf.glade:49749 +#: src/emc/usr_intf/pncconf/pncconf.glade:49769 +#: src/emc/usr_intf/pncconf/pncconf.glade:49789 +#: src/emc/usr_intf/pncconf/pncconf.glade:49809 +#: src/emc/usr_intf/pncconf/pncconf.glade:49829 +#: src/emc/usr_intf/pncconf/pncconf.glade:49849 +#: src/emc/usr_intf/pncconf/pncconf.glade:49869 +#: src/emc/usr_intf/pncconf/pncconf.glade:49889 +#: src/emc/usr_intf/pncconf/pncconf.glade:49909 +#: src/emc/usr_intf/pncconf/pncconf.glade:49929 +#: src/emc/usr_intf/pncconf/pncconf.glade:49949 +#: src/emc/usr_intf/pncconf/pncconf.glade:49969 +#: src/emc/usr_intf/pncconf/pncconf.glade:49989 +#: src/emc/usr_intf/pncconf/pncconf.glade:50009 +#: src/emc/usr_intf/pncconf/pncconf.glade:50029 +#: src/emc/usr_intf/pncconf/pncconf.glade:50049 +#: src/emc/usr_intf/pncconf/pncconf.glade:50069 +#: src/emc/usr_intf/pncconf/pncconf.glade:50089 +#: src/emc/usr_intf/pncconf/pncconf.glade:50109 +#: src/emc/usr_intf/pncconf/pncconf.glade:50129 +#: src/emc/usr_intf/pncconf/pncconf.glade:50149 +#: src/emc/usr_intf/pncconf/pncconf.glade:52078 +#: src/emc/usr_intf/pncconf/pncconf.glade:52419 +#: src/emc/usr_intf/pncconf/pncconf.glade:53649 +#: src/emc/usr_intf/pncconf/pncconf.glade:53669 +#: src/emc/usr_intf/pncconf/pncconf.glade:53689 +#: src/emc/usr_intf/pncconf/pncconf.glade:53709 +#: src/emc/usr_intf/pncconf/pncconf.glade:53729 +#: src/emc/usr_intf/pncconf/pncconf.glade:53749 +#: src/emc/usr_intf/pncconf/pncconf.glade:53769 +#: src/emc/usr_intf/pncconf/pncconf.glade:53789 +#: src/emc/usr_intf/pncconf/pncconf.glade:53809 +#: src/emc/usr_intf/pncconf/pncconf.glade:53829 +#: src/emc/usr_intf/pncconf/pncconf.glade:53849 +#: src/emc/usr_intf/pncconf/pncconf.glade:54085 +#: src/emc/usr_intf/pncconf/pncconf.glade:56001 +#: src/emc/usr_intf/pncconf/pncconf.glade:56021 +#: src/emc/usr_intf/pncconf/pncconf.glade:56041 +#: src/emc/usr_intf/pncconf/pncconf.glade:56061 +#: src/emc/usr_intf/pncconf/pncconf.glade:56081 +#: src/emc/usr_intf/pncconf/pncconf.glade:56101 +#: src/emc/usr_intf/pncconf/pncconf.glade:56121 +#: src/emc/usr_intf/pncconf/pncconf.glade:56141 +#: src/emc/usr_intf/pncconf/pncconf.glade:56161 +#: src/emc/usr_intf/pncconf/pncconf.glade:56181 +#: src/emc/usr_intf/pncconf/pncconf.glade:56201 +#: src/emc/usr_intf/pncconf/pncconf.glade:56221 +#: src/emc/usr_intf/pncconf/pncconf.glade:56241 +#: src/emc/usr_intf/pncconf/pncconf.glade:56261 +#: src/emc/usr_intf/pncconf/pncconf.glade:56281 +#: src/emc/usr_intf/pncconf/pncconf.glade:56301 +#: src/emc/usr_intf/pncconf/pncconf.glade:56321 +#: src/emc/usr_intf/pncconf/pncconf.glade:56341 +#: src/emc/usr_intf/pncconf/pncconf.glade:56361 +#: src/emc/usr_intf/pncconf/pncconf.glade:56381 +#: src/emc/usr_intf/pncconf/pncconf.glade:56401 +#: src/emc/usr_intf/pncconf/pncconf.glade:56421 +#: src/emc/usr_intf/pncconf/pncconf.glade:56441 +#: src/emc/usr_intf/pncconf/pncconf.glade:56632 +#: src/emc/usr_intf/pncconf/pncconf.glade:56652 +#: src/emc/usr_intf/pncconf/pncconf.glade:56672 +#: src/emc/usr_intf/pncconf/pncconf.glade:56692 +#: src/emc/usr_intf/pncconf/pncconf.glade:56712 +#: src/emc/usr_intf/pncconf/pncconf.glade:56732 +#: src/emc/usr_intf/pncconf/pncconf.glade:56752 +#: src/emc/usr_intf/pncconf/pncconf.glade:56772 +#: src/emc/usr_intf/pncconf/pncconf.glade:56792 +#: src/emc/usr_intf/pncconf/pncconf.glade:56812 +#: src/emc/usr_intf/pncconf/pncconf.glade:56832 +#: src/emc/usr_intf/pncconf/pncconf.glade:56852 +#: src/emc/usr_intf/pncconf/pncconf.glade:56872 +#: src/emc/usr_intf/pncconf/pncconf.glade:56892 +#: src/emc/usr_intf/pncconf/pncconf.glade:56912 +#: src/emc/usr_intf/pncconf/pncconf.glade:56932 +#: src/emc/usr_intf/pncconf/pncconf.glade:56952 +#: src/emc/usr_intf/pncconf/pncconf.glade:56972 +#: src/emc/usr_intf/pncconf/pncconf.glade:56992 +#: src/emc/usr_intf/pncconf/pncconf.glade:57012 +#: src/emc/usr_intf/pncconf/pncconf.glade:57032 +#: src/emc/usr_intf/pncconf/pncconf.glade:57052 +#: src/emc/usr_intf/pncconf/pncconf.glade:57072 +#: src/emc/usr_intf/pncconf/pncconf.glade:59001 +#: src/emc/usr_intf/pncconf/pncconf.glade:59342 +#: src/emc/usr_intf/pncconf/pncconf.glade:60572 +#: src/emc/usr_intf/pncconf/pncconf.glade:60592 +#: src/emc/usr_intf/pncconf/pncconf.glade:60612 +#: src/emc/usr_intf/pncconf/pncconf.glade:60632 +#: src/emc/usr_intf/pncconf/pncconf.glade:60652 +#: src/emc/usr_intf/pncconf/pncconf.glade:60672 +#: src/emc/usr_intf/pncconf/pncconf.glade:60692 +#: src/emc/usr_intf/pncconf/pncconf.glade:60712 +#: src/emc/usr_intf/pncconf/pncconf.glade:60732 +#: src/emc/usr_intf/pncconf/pncconf.glade:60752 +#: src/emc/usr_intf/pncconf/pncconf.glade:60772 +msgid "" +"GPIO Input\n" +"GPIO Output\n" +"GPIO O Drain\n" +"Encoder\n" +"PWM\n" +"StepGen\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5808 -msgid "Force Axis to Maximize" +#: src/emc/usr_intf/pncconf/pncconf.glade:8913 +#: src/emc/usr_intf/pncconf/pncconf.glade:13730 +#: src/emc/usr_intf/pncconf/pncconf.glade:18936 +#: src/emc/usr_intf/pncconf/pncconf.glade:20738 +#: src/emc/usr_intf/pncconf/pncconf.glade:21031 +#: src/emc/usr_intf/pncconf/pncconf.glade:22827 +#: src/emc/usr_intf/pncconf/pncconf.glade:24623 +msgid " 1:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5832 -#: src/emc/usr_intf/pncconf/pncconf.glade:6602 -#: src/emc/usr_intf/pncconf/pncconf.glade:6841 -#: src/emc/usr_intf/pncconf/pncconf.glade:7328 -msgid "H" +#: src/emc/usr_intf/pncconf/pncconf.glade:8927 +#: src/emc/usr_intf/pncconf/pncconf.glade:13716 +#: src/emc/usr_intf/pncconf/pncconf.glade:18922 +#: src/emc/usr_intf/pncconf/pncconf.glade:20724 +#: src/emc/usr_intf/pncconf/pncconf.glade:21045 +#: src/emc/usr_intf/pncconf/pncconf.glade:22841 +#: src/emc/usr_intf/pncconf/pncconf.glade:24637 +msgid " 3:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5866 -#: src/emc/usr_intf/pncconf/pncconf.glade:6568 -#: src/emc/usr_intf/pncconf/pncconf.glade:6875 -#: src/emc/usr_intf/pncconf/pncconf.glade:7294 -msgid "W" +#: src/emc/usr_intf/pncconf/pncconf.glade:8941 +#: src/emc/usr_intf/pncconf/pncconf.glade:13702 +#: src/emc/usr_intf/pncconf/pncconf.glade:18908 +#: src/emc/usr_intf/pncconf/pncconf.glade:20710 +#: src/emc/usr_intf/pncconf/pncconf.glade:21059 +#: src/emc/usr_intf/pncconf/pncconf.glade:22855 +#: src/emc/usr_intf/pncconf/pncconf.glade:24651 +msgid " 5:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5876 -#: src/emc/usr_intf/pncconf/pncconf.glade:6556 -#: src/emc/usr_intf/pncconf/pncconf.glade:6885 -#: src/emc/usr_intf/pncconf/pncconf.glade:7282 -#, fuzzy -msgid "X" -msgstr "_X" +#: src/emc/usr_intf/pncconf/pncconf.glade:8955 +#: src/emc/usr_intf/pncconf/pncconf.glade:13688 +#: src/emc/usr_intf/pncconf/pncconf.glade:18894 +#: src/emc/usr_intf/pncconf/pncconf.glade:20696 +#: src/emc/usr_intf/pncconf/pncconf.glade:21073 +#: src/emc/usr_intf/pncconf/pncconf.glade:22869 +#: src/emc/usr_intf/pncconf/pncconf.glade:24665 +msgid " 7:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5914 -#: src/emc/usr_intf/pncconf/pncconf.glade:6519 -#: src/emc/usr_intf/pncconf/pncconf.glade:6923 -#: src/emc/usr_intf/pncconf/pncconf.glade:7244 -#, fuzzy -msgid "Position" -msgstr "Pozíció:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8969 +#: src/emc/usr_intf/pncconf/pncconf.glade:13674 +#: src/emc/usr_intf/pncconf/pncconf.glade:18880 +#: src/emc/usr_intf/pncconf/pncconf.glade:20682 +#: src/emc/usr_intf/pncconf/pncconf.glade:21087 +#: src/emc/usr_intf/pncconf/pncconf.glade:22883 +#: src/emc/usr_intf/pncconf/pncconf.glade:24679 +msgid " 9:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5927 -#: src/emc/usr_intf/pncconf/pncconf.glade:6510 -#: src/emc/usr_intf/pncconf/pncconf.glade:6936 -#: src/emc/usr_intf/pncconf/pncconf.glade:7234 -msgid "size" +#: src/emc/usr_intf/pncconf/pncconf.glade:8983 +#: src/emc/usr_intf/pncconf/pncconf.glade:13660 +#: src/emc/usr_intf/pncconf/pncconf.glade:18866 +#: src/emc/usr_intf/pncconf/pncconf.glade:20668 +#: src/emc/usr_intf/pncconf/pncconf.glade:21101 +#: src/emc/usr_intf/pncconf/pncconf.glade:22897 +#: src/emc/usr_intf/pncconf/pncconf.glade:24693 +msgid "11:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5942 -#: src/emc/usr_intf/pncconf/pncconf.glade:5952 -#: src/emc/usr_intf/pncconf/pncconf.glade:6158 -msgid "mm / min" +#: src/emc/usr_intf/pncconf/pncconf.glade:8997 +#: src/emc/usr_intf/pncconf/pncconf.glade:13646 +#: src/emc/usr_intf/pncconf/pncconf.glade:18852 +#: src/emc/usr_intf/pncconf/pncconf.glade:20654 +#: src/emc/usr_intf/pncconf/pncconf.glade:21115 +#: src/emc/usr_intf/pncconf/pncconf.glade:22911 +#: src/emc/usr_intf/pncconf/pncconf.glade:24707 +msgid "13:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5975 -#: src/emc/usr_intf/pncconf/pncconf.glade:5985 -#: src/emc/usr_intf/pncconf/pncconf.glade:5997 -msgid "Deg / min" +#: src/emc/usr_intf/pncconf/pncconf.glade:9011 +#: src/emc/usr_intf/pncconf/pncconf.glade:13632 +#: src/emc/usr_intf/pncconf/pncconf.glade:18838 +#: src/emc/usr_intf/pncconf/pncconf.glade:20640 +#: src/emc/usr_intf/pncconf/pncconf.glade:21129 +#: src/emc/usr_intf/pncconf/pncconf.glade:22925 +#: src/emc/usr_intf/pncconf/pncconf.glade:24721 +msgid "15:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6010 -msgid "xyzabc" +#: src/emc/usr_intf/pncconf/pncconf.glade:9025 +#: src/emc/usr_intf/pncconf/pncconf.glade:13618 +#: src/emc/usr_intf/pncconf/pncconf.glade:18824 +#: src/emc/usr_intf/pncconf/pncconf.glade:20626 +#: src/emc/usr_intf/pncconf/pncconf.glade:21143 +#: src/emc/usr_intf/pncconf/pncconf.glade:22939 +#: src/emc/usr_intf/pncconf/pncconf.glade:24735 +msgid "17:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6023 -msgid "Axis Geometry" +#: src/emc/usr_intf/pncconf/pncconf.glade:9039 +#: src/emc/usr_intf/pncconf/pncconf.glade:13604 +#: src/emc/usr_intf/pncconf/pncconf.glade:18810 +#: src/emc/usr_intf/pncconf/pncconf.glade:20612 +#: src/emc/usr_intf/pncconf/pncconf.glade:21157 +#: src/emc/usr_intf/pncconf/pncconf.glade:22953 +#: src/emc/usr_intf/pncconf/pncconf.glade:24749 +msgid "19:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6048 -msgid "Max Angular velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:9053 +#: src/emc/usr_intf/pncconf/pncconf.glade:13590 +#: src/emc/usr_intf/pncconf/pncconf.glade:18796 +#: src/emc/usr_intf/pncconf/pncconf.glade:20598 +#: src/emc/usr_intf/pncconf/pncconf.glade:21171 +#: src/emc/usr_intf/pncconf/pncconf.glade:22967 +#: src/emc/usr_intf/pncconf/pncconf.glade:24763 +msgid "21:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6061 -msgid "5mm 1mm .5mm .1mm .05mm .01mm .005mm" +#: src/emc/usr_intf/pncconf/pncconf.glade:9067 +#: src/emc/usr_intf/pncconf/pncconf.glade:13576 +#: src/emc/usr_intf/pncconf/pncconf.glade:18782 +#: src/emc/usr_intf/pncconf/pncconf.glade:20584 +#: src/emc/usr_intf/pncconf/pncconf.glade:21185 +#: src/emc/usr_intf/pncconf/pncconf.glade:22981 +#: src/emc/usr_intf/pncconf/pncconf.glade:24777 +msgid "23:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6074 -#, fuzzy -msgid "Increments " -msgstr "Lépes növelése" +#: src/emc/usr_intf/pncconf/pncconf.glade:9801 +#: src/emc/usr_intf/pncconf/pncconf.glade:12840 +#: src/emc/usr_intf/pncconf/pncconf.glade:17994 +#: src/emc/usr_intf/pncconf/pncconf.glade:20170 +#: src/emc/usr_intf/pncconf/pncconf.glade:21597 +#: src/emc/usr_intf/pncconf/pncconf.glade:23393 +#: src/emc/usr_intf/pncconf/pncconf.glade:25189 +msgid "47:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6099 -msgid "Min Angular velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:9868 +#: src/emc/usr_intf/pncconf/pncconf.glade:12773 +#: src/emc/usr_intf/pncconf/pncconf.glade:17927 +#: src/emc/usr_intf/pncconf/pncconf.glade:20119 +#: src/emc/usr_intf/pncconf/pncconf.glade:21648 +#: src/emc/usr_intf/pncconf/pncconf.glade:23444 +#: src/emc/usr_intf/pncconf/pncconf.glade:25240 +msgid "45:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6112 -msgid "gedit" +#: src/emc/usr_intf/pncconf/pncconf.glade:9884 +#: src/emc/usr_intf/pncconf/pncconf.glade:12757 +#: src/emc/usr_intf/pncconf/pncconf.glade:17911 +#: src/emc/usr_intf/pncconf/pncconf.glade:20103 +#: src/emc/usr_intf/pncconf/pncconf.glade:21664 +#: src/emc/usr_intf/pncconf/pncconf.glade:23460 +#: src/emc/usr_intf/pncconf/pncconf.glade:25256 +msgid "43:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6148 -msgid "Default Angular velocity " +#: src/emc/usr_intf/pncconf/pncconf.glade:9900 +#: src/emc/usr_intf/pncconf/pncconf.glade:12741 +#: src/emc/usr_intf/pncconf/pncconf.glade:17895 +#: src/emc/usr_intf/pncconf/pncconf.glade:20087 +#: src/emc/usr_intf/pncconf/pncconf.glade:21680 +#: src/emc/usr_intf/pncconf/pncconf.glade:23476 +#: src/emc/usr_intf/pncconf/pncconf.glade:25272 +msgid "41:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6211 -msgid "Max linear velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:9916 +#: src/emc/usr_intf/pncconf/pncconf.glade:12725 +#: src/emc/usr_intf/pncconf/pncconf.glade:17879 +#: src/emc/usr_intf/pncconf/pncconf.glade:20071 +#: src/emc/usr_intf/pncconf/pncconf.glade:21696 +#: src/emc/usr_intf/pncconf/pncconf.glade:23492 +#: src/emc/usr_intf/pncconf/pncconf.glade:25288 +msgid "39:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6222 -msgid "Min linear velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:9932 +#: src/emc/usr_intf/pncconf/pncconf.glade:12709 +#: src/emc/usr_intf/pncconf/pncconf.glade:17863 +#: src/emc/usr_intf/pncconf/pncconf.glade:20055 +#: src/emc/usr_intf/pncconf/pncconf.glade:21712 +#: src/emc/usr_intf/pncconf/pncconf.glade:23508 +#: src/emc/usr_intf/pncconf/pncconf.glade:25304 +msgid "37:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6233 -msgid "Default linear velocity " +#: src/emc/usr_intf/pncconf/pncconf.glade:9948 +#: src/emc/usr_intf/pncconf/pncconf.glade:12693 +#: src/emc/usr_intf/pncconf/pncconf.glade:17847 +#: src/emc/usr_intf/pncconf/pncconf.glade:20039 +#: src/emc/usr_intf/pncconf/pncconf.glade:21728 +#: src/emc/usr_intf/pncconf/pncconf.glade:23524 +#: src/emc/usr_intf/pncconf/pncconf.glade:25320 +msgid "35:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6241 -msgid "AXIS defaults" +#: src/emc/usr_intf/pncconf/pncconf.glade:9964 +#: src/emc/usr_intf/pncconf/pncconf.glade:12677 +#: src/emc/usr_intf/pncconf/pncconf.glade:17831 +#: src/emc/usr_intf/pncconf/pncconf.glade:20023 +#: src/emc/usr_intf/pncconf/pncconf.glade:21744 +#: src/emc/usr_intf/pncconf/pncconf.glade:23540 +#: src/emc/usr_intf/pncconf/pncconf.glade:25336 +msgid "33:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6352 -msgid "Error Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:10337 +#: src/emc/usr_intf/pncconf/pncconf.glade:12304 +#: src/emc/usr_intf/pncconf/pncconf.glade:17458 +#: src/emc/usr_intf/pncconf/pncconf.glade:19762 +#: src/emc/usr_intf/pncconf/pncconf.glade:22005 +#: src/emc/usr_intf/pncconf/pncconf.glade:23801 +#: src/emc/usr_intf/pncconf/pncconf.glade:25597 +msgid "25:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6365 -msgid "DTG Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:10353 +#: src/emc/usr_intf/pncconf/pncconf.glade:12288 +#: src/emc/usr_intf/pncconf/pncconf.glade:17442 +#: src/emc/usr_intf/pncconf/pncconf.glade:19746 +#: src/emc/usr_intf/pncconf/pncconf.glade:22021 +#: src/emc/usr_intf/pncconf/pncconf.glade:23817 +#: src/emc/usr_intf/pncconf/pncconf.glade:25613 +msgid "27:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6378 -#, fuzzy -msgid "Relative Textcolor" -msgstr "Mutasd a relatív pozíciót" +#: src/emc/usr_intf/pncconf/pncconf.glade:10369 +#: src/emc/usr_intf/pncconf/pncconf.glade:12272 +#: src/emc/usr_intf/pncconf/pncconf.glade:17426 +#: src/emc/usr_intf/pncconf/pncconf.glade:19730 +#: src/emc/usr_intf/pncconf/pncconf.glade:22037 +#: src/emc/usr_intf/pncconf/pncconf.glade:23833 +#: src/emc/usr_intf/pncconf/pncconf.glade:25629 +msgid "29:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6391 -msgid "Absolute Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:10385 +#: src/emc/usr_intf/pncconf/pncconf.glade:12256 +#: src/emc/usr_intf/pncconf/pncconf.glade:17410 +#: src/emc/usr_intf/pncconf/pncconf.glade:19714 +#: src/emc/usr_intf/pncconf/pncconf.glade:22053 +#: src/emc/usr_intf/pncconf/pncconf.glade:23849 +#: src/emc/usr_intf/pncconf/pncconf.glade:25645 +msgid "31:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6454 -msgid "Absolute Text Color" +#: src/emc/usr_intf/pncconf/pncconf.glade:10677 +#: src/emc/usr_intf/pncconf/pncconf.glade:10689 +#: src/emc/usr_intf/pncconf/pncconf.glade:11955 +#: src/emc/usr_intf/pncconf/pncconf.glade:11967 +#: src/emc/usr_intf/pncconf/pncconf.glade:14464 +#: src/emc/usr_intf/pncconf/pncconf.glade:14476 +#: src/emc/usr_intf/pncconf/pncconf.glade:17161 +#: src/emc/usr_intf/pncconf/pncconf.glade:17173 +#: src/emc/usr_intf/pncconf/pncconf.glade:19567 +#: src/emc/usr_intf/pncconf/pncconf.glade:19579 +#: src/emc/usr_intf/pncconf/pncconf.glade:22190 +#: src/emc/usr_intf/pncconf/pncconf.glade:22202 +#: src/emc/usr_intf/pncconf/pncconf.glade:23986 +#: src/emc/usr_intf/pncconf/pncconf.glade:23998 +#: src/emc/usr_intf/pncconf/pncconf.glade:25782 +#: src/emc/usr_intf/pncconf/pncconf.glade:25794 +#: src/emc/usr_intf/pncconf/pncconf.glade:28287 +#: src/emc/usr_intf/pncconf/pncconf.glade:28299 +#: src/emc/usr_intf/pncconf/pncconf.glade:29415 +#: src/emc/usr_intf/pncconf/pncconf.glade:29427 +#: src/emc/usr_intf/pncconf/pncconf.glade:32869 +#: src/emc/usr_intf/pncconf/pncconf.glade:33760 +#: src/emc/usr_intf/pncconf/pncconf.glade:33772 +#: src/emc/usr_intf/pncconf/pncconf.glade:37771 +#: src/emc/usr_intf/pncconf/pncconf.glade:37783 +#: src/emc/usr_intf/pncconf/pncconf.glade:38777 +#: src/emc/usr_intf/pncconf/pncconf.glade:38789 +#: src/emc/usr_intf/pncconf/pncconf.glade:42131 +#: src/emc/usr_intf/pncconf/pncconf.glade:42143 +#: src/emc/usr_intf/pncconf/pncconf.glade:43259 +#: src/emc/usr_intf/pncconf/pncconf.glade:43271 +#: src/emc/usr_intf/pncconf/pncconf.glade:46702 +#: src/emc/usr_intf/pncconf/pncconf.glade:46714 +#: src/emc/usr_intf/pncconf/pncconf.glade:49054 +#: src/emc/usr_intf/pncconf/pncconf.glade:49066 +#: src/emc/usr_intf/pncconf/pncconf.glade:50182 +#: src/emc/usr_intf/pncconf/pncconf.glade:50194 +#: src/emc/usr_intf/pncconf/pncconf.glade:53625 +#: src/emc/usr_intf/pncconf/pncconf.glade:53637 +#: src/emc/usr_intf/pncconf/pncconf.glade:55977 +#: src/emc/usr_intf/pncconf/pncconf.glade:55989 +#: src/emc/usr_intf/pncconf/pncconf.glade:57105 +#: src/emc/usr_intf/pncconf/pncconf.glade:57117 +#: src/emc/usr_intf/pncconf/pncconf.glade:60548 +#: src/emc/usr_intf/pncconf/pncconf.glade:60560 +msgid "function" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6479 -#: src/emc/usr_intf/pncconf/pncconf.glade:7148 -msgid "GTK Theme" +#: src/emc/usr_intf/pncconf/pncconf.glade:10703 +#: src/emc/usr_intf/pncconf/pncconf.glade:11940 +#: src/emc/usr_intf/pncconf/pncconf.glade:14449 +#: src/emc/usr_intf/pncconf/pncconf.glade:17146 +#: src/emc/usr_intf/pncconf/pncconf.glade:19553 +#: src/emc/usr_intf/pncconf/pncconf.glade:22217 +#: src/emc/usr_intf/pncconf/pncconf.glade:24013 +#: src/emc/usr_intf/pncconf/pncconf.glade:25809 +msgid "Launch test panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6491 -#: src/emc/usr_intf/pncconf/pncconf.glade:7158 -msgid "Follow System Theme\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:11192 +#: src/emc/usr_intf/pncconf/pncconf.glade:11204 +#: src/emc/usr_intf/pncconf/pncconf.glade:11440 +#: src/emc/usr_intf/pncconf/pncconf.glade:11454 +#: src/emc/usr_intf/pncconf/pncconf.glade:13949 +#: src/emc/usr_intf/pncconf/pncconf.glade:13963 +#: src/emc/usr_intf/pncconf/pncconf.glade:16645 +#: src/emc/usr_intf/pncconf/pncconf.glade:16659 +#: src/emc/usr_intf/pncconf/pncconf.glade:19190 +#: src/emc/usr_intf/pncconf/pncconf.glade:19204 +#: src/emc/usr_intf/pncconf/pncconf.glade:22567 +#: src/emc/usr_intf/pncconf/pncconf.glade:22579 +#: src/emc/usr_intf/pncconf/pncconf.glade:24363 +#: src/emc/usr_intf/pncconf/pncconf.glade:24375 +#: src/emc/usr_intf/pncconf/pncconf.glade:26159 +#: src/emc/usr_intf/pncconf/pncconf.glade:26171 +#: src/emc/usr_intf/pncconf/pncconf.glade:28772 +#: src/emc/usr_intf/pncconf/pncconf.glade:28784 +#: src/emc/usr_intf/pncconf/pncconf.glade:28917 +#: src/emc/usr_intf/pncconf/pncconf.glade:28931 +#: src/emc/usr_intf/pncconf/pncconf.glade:33102 +#: src/emc/usr_intf/pncconf/pncconf.glade:33275 +#: src/emc/usr_intf/pncconf/pncconf.glade:33289 +#: src/emc/usr_intf/pncconf/pncconf.glade:38269 +#: src/emc/usr_intf/pncconf/pncconf.glade:38281 +#: src/emc/usr_intf/pncconf/pncconf.glade:38532 +#: src/emc/usr_intf/pncconf/pncconf.glade:38546 +#: src/emc/usr_intf/pncconf/pncconf.glade:42616 +#: src/emc/usr_intf/pncconf/pncconf.glade:42628 +#: src/emc/usr_intf/pncconf/pncconf.glade:42761 +#: src/emc/usr_intf/pncconf/pncconf.glade:42775 +#: src/emc/usr_intf/pncconf/pncconf.glade:46947 +#: src/emc/usr_intf/pncconf/pncconf.glade:46959 +#: src/emc/usr_intf/pncconf/pncconf.glade:49539 +#: src/emc/usr_intf/pncconf/pncconf.glade:49551 +#: src/emc/usr_intf/pncconf/pncconf.glade:49684 +#: src/emc/usr_intf/pncconf/pncconf.glade:49698 +#: src/emc/usr_intf/pncconf/pncconf.glade:53870 +#: src/emc/usr_intf/pncconf/pncconf.glade:53882 +#: src/emc/usr_intf/pncconf/pncconf.glade:56462 +#: src/emc/usr_intf/pncconf/pncconf.glade:56474 +#: src/emc/usr_intf/pncconf/pncconf.glade:56607 +#: src/emc/usr_intf/pncconf/pncconf.glade:56621 +#: src/emc/usr_intf/pncconf/pncconf.glade:60793 +#: src/emc/usr_intf/pncconf/pncconf.glade:60805 +msgid "Num" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6624 -msgid "Force Touchy to Maximize after positioning" +#: src/emc/usr_intf/pncconf/pncconf.glade:11222 +msgid "" +" I/O\n" +"Connector 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6669 -msgid "GUI Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:13835 +msgid "" +" I/O\n" +" Connector 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6700 -msgid "Virtual Control Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:16281 +#: src/emc/usr_intf/pncconf/pncconf.glade:16295 +#: src/emc/usr_intf/pncconf/pncconf.glade:16322 +#: src/emc/usr_intf/pncconf/pncconf.glade:26441 +#: src/emc/usr_intf/pncconf/pncconf.glade:26468 +#: src/emc/usr_intf/pncconf/pncconf.glade:26482 +#: src/emc/usr_intf/pncconf/pncconf.glade:31232 +#: src/emc/usr_intf/pncconf/pncconf.glade:31246 +#: src/emc/usr_intf/pncconf/pncconf.glade:31273 +#: src/emc/usr_intf/pncconf/pncconf.glade:31708 +#: src/emc/usr_intf/pncconf/pncconf.glade:31735 +#: src/emc/usr_intf/pncconf/pncconf.glade:31749 +#: src/emc/usr_intf/pncconf/pncconf.glade:35577 +#: src/emc/usr_intf/pncconf/pncconf.glade:35591 +#: src/emc/usr_intf/pncconf/pncconf.glade:35618 +#: src/emc/usr_intf/pncconf/pncconf.glade:35925 +#: src/emc/usr_intf/pncconf/pncconf.glade:35952 +#: src/emc/usr_intf/pncconf/pncconf.glade:35966 +#: src/emc/usr_intf/pncconf/pncconf.glade:39909 +#: src/emc/usr_intf/pncconf/pncconf.glade:39923 +#: src/emc/usr_intf/pncconf/pncconf.glade:39950 +#: src/emc/usr_intf/pncconf/pncconf.glade:40285 +#: src/emc/usr_intf/pncconf/pncconf.glade:40312 +#: src/emc/usr_intf/pncconf/pncconf.glade:40326 +#: src/emc/usr_intf/pncconf/pncconf.glade:45076 +#: src/emc/usr_intf/pncconf/pncconf.glade:45090 +#: src/emc/usr_intf/pncconf/pncconf.glade:45117 +#: src/emc/usr_intf/pncconf/pncconf.glade:45541 +#: src/emc/usr_intf/pncconf/pncconf.glade:45568 +#: src/emc/usr_intf/pncconf/pncconf.glade:45582 +#: src/emc/usr_intf/pncconf/pncconf.glade:47208 +#: src/emc/usr_intf/pncconf/pncconf.glade:47235 +#: src/emc/usr_intf/pncconf/pncconf.glade:47249 +#: src/emc/usr_intf/pncconf/pncconf.glade:51999 +#: src/emc/usr_intf/pncconf/pncconf.glade:52013 +#: src/emc/usr_intf/pncconf/pncconf.glade:52040 +#: src/emc/usr_intf/pncconf/pncconf.glade:52464 +#: src/emc/usr_intf/pncconf/pncconf.glade:52491 +#: src/emc/usr_intf/pncconf/pncconf.glade:52505 +#: src/emc/usr_intf/pncconf/pncconf.glade:54131 +#: src/emc/usr_intf/pncconf/pncconf.glade:54158 +#: src/emc/usr_intf/pncconf/pncconf.glade:54172 +#: src/emc/usr_intf/pncconf/pncconf.glade:58922 +#: src/emc/usr_intf/pncconf/pncconf.glade:58936 +#: src/emc/usr_intf/pncconf/pncconf.glade:58963 +#: src/emc/usr_intf/pncconf/pncconf.glade:59387 +#: src/emc/usr_intf/pncconf/pncconf.glade:59414 +#: src/emc/usr_intf/pncconf/pncconf.glade:59428 +msgid " " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6775 -msgid "XYZ buttons (uses Halui)" +#: src/emc/usr_intf/pncconf/pncconf.glade:16427 +msgid "" +" I/O\n" +" Connector 4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6946 -msgid "Geometry Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:19041 +msgid "" +" I/O\n" +" Connector 5" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7025 -msgid "Pyvcp Details" +#: src/emc/usr_intf/pncconf/pncconf.glade:20837 +msgid "" +" I/O\n" +"Connector 6" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7097 -msgid "Sample display " +#: src/emc/usr_intf/pncconf/pncconf.glade:22633 +msgid "" +" I/O\n" +"Connector 7" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7172 -msgid "Force Maximize" +#: src/emc/usr_intf/pncconf/pncconf.glade:24429 +msgid "" +" I/O\n" +"Connector 8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7186 -msgid "Center Tab Embeded" +#: src/emc/usr_intf/pncconf/pncconf.glade:26225 +msgid "" +" I/O\n" +" Connector 9" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7201 -msgid "Rightside Embeded" +#: src/emc/usr_intf/pncconf/pncconf.glade:31378 +#: src/emc/usr_intf/pncconf/pncconf.glade:38299 +#: src/emc/usr_intf/pncconf/pncconf.glade:45222 +#: src/emc/usr_intf/pncconf/pncconf.glade:52145 +#: src/emc/usr_intf/pncconf/pncconf.glade:59068 +msgid "page 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7217 -msgid "Standalone Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:33131 +#: src/emc/usr_intf/pncconf/pncconf.glade:40054 +#: src/emc/usr_intf/pncconf/pncconf.glade:46977 +#: src/emc/usr_intf/pncconf/pncconf.glade:53900 +#: src/emc/usr_intf/pncconf/pncconf.glade:60823 +msgid "page 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7351 -#, fuzzy -msgid "Display Options" -msgstr "Mértékegység: _Inch" +#: src/emc/usr_intf/pncconf/pncconf.glade:33147 +msgid "Smart Serial 0" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7401 -msgid "Max RPM" +#: src/emc/usr_intf/pncconf/pncconf.glade:40070 +msgid "Smart Serial 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7414 -#, fuzzy -msgid "Spindle Speed Indicator" -msgstr "Fő orsó:" +#: src/emc/usr_intf/pncconf/pncconf.glade:46993 +msgid "Smart Serial 2" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7426 -#, fuzzy -msgid "Spindle At Speed LED" -msgstr "Túlhajtás (%):" +#: src/emc/usr_intf/pncconf/pncconf.glade:53916 +msgid "Smart Serial 3" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7438 -#, fuzzy -msgid "Zero X Button" -msgstr "Bal egér gomb" +#: src/emc/usr_intf/pncconf/pncconf.glade:60839 +msgid "Smart Serial 4" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7450 -#, fuzzy -msgid "Zero Y Button" -msgstr "Bal egér gomb" +#: src/emc/usr_intf/pncconf/pncconf.glade:60861 +msgid "First Parallel Port Setup" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7462 -#, fuzzy -msgid "Zero Z Button" -msgstr "Bal egér gomb" +#: src/emc/usr_intf/pncconf/pncconf.glade:60946 +msgid "Launch Test Panel" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7474 -#, fuzzy -msgid "Zero A Button" -msgstr "Bal egér gomb" +#: src/emc/usr_intf/pncconf/pncconf.glade:62374 +msgid "Inputs (Machine to PC):" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7486 -msgid "Requires Classicladder touch-off program" +#: src/emc/usr_intf/pncconf/pncconf.glade:62929 +msgid "Outputs (PC to Machine):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7487 -msgid "Auto Z Touch Off Button" +#: src/emc/usr_intf/pncconf/pncconf.glade:62950 +msgid "X Axis Motor/Encoder Configuration" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7500 -msgid "Sample Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:63005 +#, fuzzy +msgid "Max Output" +msgstr "Fő orsó:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63070 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7574 -msgid "Gladevcp Details" +#: src/emc/usr_intf/pncconf/pncconf.glade:63083 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7597 -msgid "Include custom GladeVCP GUI panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:63096 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF0" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7668 -msgid "Restore joint position after shutdown" +#: src/emc/usr_intf/pncconf/pncconf.glade:63143 +msgid "Deadband" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7683 -msgid "Move spindle up before tool change" +#: src/emc/usr_intf/pncconf/pncconf.glade:63156 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Bias" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7696 -msgid "Leave spindle on during tool change" +#: src/emc/usr_intf/pncconf/pncconf.glade:63169 +msgid "P" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7709 -msgid "Popup Toolchange Prompt" +#: src/emc/usr_intf/pncconf/pncconf.glade:63180 +msgid "I" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7723 -msgid "Require homing before MDI / Running" +#: src/emc/usr_intf/pncconf/pncconf.glade:63193 +msgid "D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7732 -msgid "Random position toolchanger " +#: src/emc/usr_intf/pncconf/pncconf.glade:63258 +msgid "Servo Info" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7747 -msgid "Force individual manual homing" +#: src/emc/usr_intf/pncconf/pncconf.glade:63337 +msgid "3pwm Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7761 -msgid "Defaults and Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:63348 +msgid "3pwm Deadtime:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7789 -msgid "Mesa0 I/O setup\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:63361 +msgid "Quad Pulses / Rev:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7809 +#: src/emc/usr_intf/pncconf/pncconf.glade:63438 msgid "" -"Click on each page tab to configure signal names for each connector port.\n" -"\n" -"Press the button to make the tabbed pages\n" -"accept the changes.\n" +"Open Loop\n" +" Test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7998 -msgid "Num of channels: " -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63462 +#, fuzzy +msgid "Analog Min Limit:" +msgstr "Fő orsó:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8036 -msgid "7i29 daughter board" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63476 +#, fuzzy +msgid "Analog Max limit:" +msgstr "Fő orsó gyorsítása [F12]" -#: src/emc/usr_intf/pncconf/pncconf.glade:8045 -msgid "7i30 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:63490 +msgid "Analog Max Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8057 -msgid "7i33 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:63554 +#, fuzzy +msgid "Output Info" +msgstr "Eltolás" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63603 +msgid "Step On-Time" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8069 -msgid "7i40 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:63616 +#, fuzzy +msgid "Step Space" +msgstr "Program léptetés" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63659 +msgid "Direction Hold" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8081 -msgid "7i48 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:63672 +msgid "Direction Setup" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8096 -msgid "Sanity Checks" +#: src/emc/usr_intf/pncconf/pncconf.glade:63715 +msgid "Driver Type:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8137 -msgid "Num of Smart Serial Ports:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63748 +msgid "Stepper Info" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8148 -msgid "Board name" +#: src/emc/usr_intf/pncconf/pncconf.glade:63800 +msgid "No feedback" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8155 -msgid "Num of step generators: " +#: src/emc/usr_intf/pncconf/pncconf.glade:63810 +msgid "Absolute Feedback" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8166 -msgid "Num of pwm generators:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63824 +msgid "Incremental Feedback" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8177 -msgid "Num of encoders:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63838 +msgid "Incremental Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8294 -msgid "Watchdog timeout:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63850 +msgid "Hall sensors" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8305 -msgid "PDM base frequency:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63862 +msgid "Fanuc Red Cap " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8316 -msgid "PWM base frequency:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63874 +#, fuzzy +msgid "Use encoder Index" +msgstr "Fő orsó:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63905 +msgid "Input Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8328 -msgid "" -"Accept components\n" -" Changes" +#: src/emc/usr_intf/pncconf/pncconf.glade:63929 +msgid "Digital instead of PWM outputs" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8356 -msgid "Total number of pins:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63938 +msgid "6 outputs instead of 3 " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8389 -msgid "Num of 3 pwm generators: " +#: src/emc/usr_intf/pncconf/pncconf.glade:63950 +msgid "Force Trapezoid Mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8412 -msgid "SVST8_4" +#: src/emc/usr_intf/pncconf/pncconf.glade:63962 +msgid "Emulate feedback " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8437 -msgid "Firmware:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63974 +msgid "Emulated Hall sensors" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8447 -msgid "Mesa parport address:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63987 +msgid "Emulated Fanuc Red Cap" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8482 -msgid "3PWM base frequency:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64014 +msgid "8i20 Max Current" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8504 -msgid "" -"Configuration\n" -" Page" +#: src/emc/usr_intf/pncconf/pncconf.glade:64048 +msgid "Output Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8698 -#: src/emc/usr_intf/pncconf/pncconf.glade:8712 -#: src/emc/usr_intf/pncconf/pncconf.glade:13677 -#: src/emc/usr_intf/pncconf/pncconf.glade:13689 -#: src/emc/usr_intf/pncconf/pncconf.glade:16373 -#: src/emc/usr_intf/pncconf/pncconf.glade:16385 -#: src/emc/usr_intf/pncconf/pncconf.glade:18883 -#: src/emc/usr_intf/pncconf/pncconf.glade:18895 -#: src/emc/usr_intf/pncconf/pncconf.glade:20747 -#: src/emc/usr_intf/pncconf/pncconf.glade:20759 -#: src/emc/usr_intf/pncconf/pncconf.glade:20962 -#: src/emc/usr_intf/pncconf/pncconf.glade:20976 -#: src/emc/usr_intf/pncconf/pncconf.glade:22758 -#: src/emc/usr_intf/pncconf/pncconf.glade:22772 -#: src/emc/usr_intf/pncconf/pncconf.glade:24554 -#: src/emc/usr_intf/pncconf/pncconf.glade:24568 -#: src/emc/usr_intf/pncconf/pncconf.glade:26330 -#: src/emc/usr_intf/pncconf/pncconf.glade:26344 -#: src/emc/usr_intf/pncconf/pncconf.glade:31324 -#: src/emc/usr_intf/pncconf/pncconf.glade:31336 -#: src/emc/usr_intf/pncconf/pncconf.glade:31600 -#: src/emc/usr_intf/pncconf/pncconf.glade:35669 -#: src/emc/usr_intf/pncconf/pncconf.glade:35681 -#: src/emc/usr_intf/pncconf/pncconf.glade:35814 -#: src/emc/usr_intf/pncconf/pncconf.glade:35828 -#: src/emc/usr_intf/pncconf/pncconf.glade:40000 -#: src/emc/usr_intf/pncconf/pncconf.glade:40012 -#: src/emc/usr_intf/pncconf/pncconf.glade:40174 -#: src/emc/usr_intf/pncconf/pncconf.glade:40188 -#: src/emc/usr_intf/pncconf/pncconf.glade:45168 -#: src/emc/usr_intf/pncconf/pncconf.glade:45180 -#: src/emc/usr_intf/pncconf/pncconf.glade:45431 -#: src/emc/usr_intf/pncconf/pncconf.glade:45445 -#: src/emc/usr_intf/pncconf/pncconf.glade:47097 -#: src/emc/usr_intf/pncconf/pncconf.glade:47111 -#: src/emc/usr_intf/pncconf/pncconf.glade:52091 -#: src/emc/usr_intf/pncconf/pncconf.glade:52103 -#: src/emc/usr_intf/pncconf/pncconf.glade:52354 -#: src/emc/usr_intf/pncconf/pncconf.glade:52368 -msgid "Num" +#: src/emc/usr_intf/pncconf/pncconf.glade:64103 +msgid "alignment current" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8723 -#: src/emc/usr_intf/pncconf/pncconf.glade:8743 -#: src/emc/usr_intf/pncconf/pncconf.glade:8763 -#: src/emc/usr_intf/pncconf/pncconf.glade:8783 -#: src/emc/usr_intf/pncconf/pncconf.glade:8803 -#: src/emc/usr_intf/pncconf/pncconf.glade:8823 -#: src/emc/usr_intf/pncconf/pncconf.glade:8843 -#: src/emc/usr_intf/pncconf/pncconf.glade:8863 -#: src/emc/usr_intf/pncconf/pncconf.glade:8883 -#: src/emc/usr_intf/pncconf/pncconf.glade:8903 -#: src/emc/usr_intf/pncconf/pncconf.glade:8923 -#: src/emc/usr_intf/pncconf/pncconf.glade:8943 -#: src/emc/usr_intf/pncconf/pncconf.glade:8963 -#: src/emc/usr_intf/pncconf/pncconf.glade:8983 -#: src/emc/usr_intf/pncconf/pncconf.glade:9003 -#: src/emc/usr_intf/pncconf/pncconf.glade:9023 -#: src/emc/usr_intf/pncconf/pncconf.glade:9043 -#: src/emc/usr_intf/pncconf/pncconf.glade:9063 -#: src/emc/usr_intf/pncconf/pncconf.glade:9083 -#: src/emc/usr_intf/pncconf/pncconf.glade:9103 -#: src/emc/usr_intf/pncconf/pncconf.glade:9123 -#: src/emc/usr_intf/pncconf/pncconf.glade:9143 -#: src/emc/usr_intf/pncconf/pncconf.glade:9163 -#: src/emc/usr_intf/pncconf/pncconf.glade:11027 -#: src/emc/usr_intf/pncconf/pncconf.glade:11353 -#: src/emc/usr_intf/pncconf/pncconf.glade:13216 -#: src/emc/usr_intf/pncconf/pncconf.glade:13236 -#: src/emc/usr_intf/pncconf/pncconf.glade:13256 -#: src/emc/usr_intf/pncconf/pncconf.glade:13276 -#: src/emc/usr_intf/pncconf/pncconf.glade:13296 -#: src/emc/usr_intf/pncconf/pncconf.glade:13316 -#: src/emc/usr_intf/pncconf/pncconf.glade:13336 -#: src/emc/usr_intf/pncconf/pncconf.glade:13356 -#: src/emc/usr_intf/pncconf/pncconf.glade:13376 -#: src/emc/usr_intf/pncconf/pncconf.glade:13396 -#: src/emc/usr_intf/pncconf/pncconf.glade:13416 -#: src/emc/usr_intf/pncconf/pncconf.glade:13436 -#: src/emc/usr_intf/pncconf/pncconf.glade:13456 -#: src/emc/usr_intf/pncconf/pncconf.glade:13476 -#: src/emc/usr_intf/pncconf/pncconf.glade:13496 -#: src/emc/usr_intf/pncconf/pncconf.glade:13516 -#: src/emc/usr_intf/pncconf/pncconf.glade:13536 -#: src/emc/usr_intf/pncconf/pncconf.glade:13556 -#: src/emc/usr_intf/pncconf/pncconf.glade:13576 -#: src/emc/usr_intf/pncconf/pncconf.glade:13596 -#: src/emc/usr_intf/pncconf/pncconf.glade:13616 -#: src/emc/usr_intf/pncconf/pncconf.glade:13636 -#: src/emc/usr_intf/pncconf/pncconf.glade:13656 -#: src/emc/usr_intf/pncconf/pncconf.glade:13966 -#: src/emc/usr_intf/pncconf/pncconf.glade:15912 -#: src/emc/usr_intf/pncconf/pncconf.glade:15932 -#: src/emc/usr_intf/pncconf/pncconf.glade:15952 -#: src/emc/usr_intf/pncconf/pncconf.glade:15972 -#: src/emc/usr_intf/pncconf/pncconf.glade:15992 -#: src/emc/usr_intf/pncconf/pncconf.glade:16012 -#: src/emc/usr_intf/pncconf/pncconf.glade:16032 -#: src/emc/usr_intf/pncconf/pncconf.glade:16052 -#: src/emc/usr_intf/pncconf/pncconf.glade:16072 -#: src/emc/usr_intf/pncconf/pncconf.glade:16092 -#: src/emc/usr_intf/pncconf/pncconf.glade:16112 -#: src/emc/usr_intf/pncconf/pncconf.glade:16132 -#: src/emc/usr_intf/pncconf/pncconf.glade:16152 -#: src/emc/usr_intf/pncconf/pncconf.glade:16172 -#: src/emc/usr_intf/pncconf/pncconf.glade:16192 -#: src/emc/usr_intf/pncconf/pncconf.glade:16212 -#: src/emc/usr_intf/pncconf/pncconf.glade:16232 -#: src/emc/usr_intf/pncconf/pncconf.glade:16252 -#: src/emc/usr_intf/pncconf/pncconf.glade:16272 -#: src/emc/usr_intf/pncconf/pncconf.glade:16292 -#: src/emc/usr_intf/pncconf/pncconf.glade:16312 -#: src/emc/usr_intf/pncconf/pncconf.glade:16332 -#: src/emc/usr_intf/pncconf/pncconf.glade:16352 -#: src/emc/usr_intf/pncconf/pncconf.glade:16558 -#: src/emc/usr_intf/pncconf/pncconf.glade:18422 -#: src/emc/usr_intf/pncconf/pncconf.glade:18442 -#: src/emc/usr_intf/pncconf/pncconf.glade:18462 -#: src/emc/usr_intf/pncconf/pncconf.glade:18482 -#: src/emc/usr_intf/pncconf/pncconf.glade:18502 -#: src/emc/usr_intf/pncconf/pncconf.glade:18522 -#: src/emc/usr_intf/pncconf/pncconf.glade:18542 -#: src/emc/usr_intf/pncconf/pncconf.glade:18562 -#: src/emc/usr_intf/pncconf/pncconf.glade:18582 -#: src/emc/usr_intf/pncconf/pncconf.glade:18602 -#: src/emc/usr_intf/pncconf/pncconf.glade:18622 -#: src/emc/usr_intf/pncconf/pncconf.glade:18642 -#: src/emc/usr_intf/pncconf/pncconf.glade:18662 -#: src/emc/usr_intf/pncconf/pncconf.glade:18682 -#: src/emc/usr_intf/pncconf/pncconf.glade:18702 -#: src/emc/usr_intf/pncconf/pncconf.glade:18722 -#: src/emc/usr_intf/pncconf/pncconf.glade:18742 -#: src/emc/usr_intf/pncconf/pncconf.glade:18762 -#: src/emc/usr_intf/pncconf/pncconf.glade:18782 -#: src/emc/usr_intf/pncconf/pncconf.glade:18802 -#: src/emc/usr_intf/pncconf/pncconf.glade:18822 -#: src/emc/usr_intf/pncconf/pncconf.glade:18842 -#: src/emc/usr_intf/pncconf/pncconf.glade:18862 -#: src/emc/usr_intf/pncconf/pncconf.glade:26355 -#: src/emc/usr_intf/pncconf/pncconf.glade:26375 -#: src/emc/usr_intf/pncconf/pncconf.glade:26395 -#: src/emc/usr_intf/pncconf/pncconf.glade:26415 -#: src/emc/usr_intf/pncconf/pncconf.glade:26435 -#: src/emc/usr_intf/pncconf/pncconf.glade:26455 -#: src/emc/usr_intf/pncconf/pncconf.glade:26475 -#: src/emc/usr_intf/pncconf/pncconf.glade:26495 -#: src/emc/usr_intf/pncconf/pncconf.glade:26515 -#: src/emc/usr_intf/pncconf/pncconf.glade:26535 -#: src/emc/usr_intf/pncconf/pncconf.glade:26555 -#: src/emc/usr_intf/pncconf/pncconf.glade:26575 -#: src/emc/usr_intf/pncconf/pncconf.glade:26595 -#: src/emc/usr_intf/pncconf/pncconf.glade:26615 -#: src/emc/usr_intf/pncconf/pncconf.glade:26635 -#: src/emc/usr_intf/pncconf/pncconf.glade:26655 -#: src/emc/usr_intf/pncconf/pncconf.glade:26675 -#: src/emc/usr_intf/pncconf/pncconf.glade:26695 -#: src/emc/usr_intf/pncconf/pncconf.glade:26715 -#: src/emc/usr_intf/pncconf/pncconf.glade:26735 -#: src/emc/usr_intf/pncconf/pncconf.glade:26755 -#: src/emc/usr_intf/pncconf/pncconf.glade:26775 -#: src/emc/usr_intf/pncconf/pncconf.glade:26795 -#: src/emc/usr_intf/pncconf/pncconf.glade:28711 -#: src/emc/usr_intf/pncconf/pncconf.glade:28934 -#: src/emc/usr_intf/pncconf/pncconf.glade:30863 -#: src/emc/usr_intf/pncconf/pncconf.glade:30883 -#: src/emc/usr_intf/pncconf/pncconf.glade:30903 -#: src/emc/usr_intf/pncconf/pncconf.glade:30923 -#: src/emc/usr_intf/pncconf/pncconf.glade:30943 -#: src/emc/usr_intf/pncconf/pncconf.glade:30963 -#: src/emc/usr_intf/pncconf/pncconf.glade:30983 -#: src/emc/usr_intf/pncconf/pncconf.glade:31003 -#: src/emc/usr_intf/pncconf/pncconf.glade:31023 -#: src/emc/usr_intf/pncconf/pncconf.glade:31043 -#: src/emc/usr_intf/pncconf/pncconf.glade:31063 -#: src/emc/usr_intf/pncconf/pncconf.glade:31083 -#: src/emc/usr_intf/pncconf/pncconf.glade:31103 -#: src/emc/usr_intf/pncconf/pncconf.glade:31123 -#: src/emc/usr_intf/pncconf/pncconf.glade:31143 -#: src/emc/usr_intf/pncconf/pncconf.glade:31163 -#: src/emc/usr_intf/pncconf/pncconf.glade:31183 -#: src/emc/usr_intf/pncconf/pncconf.glade:31203 -#: src/emc/usr_intf/pncconf/pncconf.glade:31223 -#: src/emc/usr_intf/pncconf/pncconf.glade:31243 -#: src/emc/usr_intf/pncconf/pncconf.glade:31263 -#: src/emc/usr_intf/pncconf/pncconf.glade:31283 -#: src/emc/usr_intf/pncconf/pncconf.glade:31303 -#: src/emc/usr_intf/pncconf/pncconf.glade:31611 -#: src/emc/usr_intf/pncconf/pncconf.glade:31631 -#: src/emc/usr_intf/pncconf/pncconf.glade:31651 -#: src/emc/usr_intf/pncconf/pncconf.glade:31671 -#: src/emc/usr_intf/pncconf/pncconf.glade:31691 -#: src/emc/usr_intf/pncconf/pncconf.glade:31711 -#: src/emc/usr_intf/pncconf/pncconf.glade:31731 -#: src/emc/usr_intf/pncconf/pncconf.glade:31751 -#: src/emc/usr_intf/pncconf/pncconf.glade:31771 -#: src/emc/usr_intf/pncconf/pncconf.glade:31791 -#: src/emc/usr_intf/pncconf/pncconf.glade:31811 -#: src/emc/usr_intf/pncconf/pncconf.glade:33029 -#: src/emc/usr_intf/pncconf/pncconf.glade:33292 -#: src/emc/usr_intf/pncconf/pncconf.glade:35208 -#: src/emc/usr_intf/pncconf/pncconf.glade:35228 -#: src/emc/usr_intf/pncconf/pncconf.glade:35248 -#: src/emc/usr_intf/pncconf/pncconf.glade:35268 -#: src/emc/usr_intf/pncconf/pncconf.glade:35288 -#: src/emc/usr_intf/pncconf/pncconf.glade:35308 -#: src/emc/usr_intf/pncconf/pncconf.glade:35328 -#: src/emc/usr_intf/pncconf/pncconf.glade:35348 -#: src/emc/usr_intf/pncconf/pncconf.glade:35368 -#: src/emc/usr_intf/pncconf/pncconf.glade:35388 -#: src/emc/usr_intf/pncconf/pncconf.glade:35408 -#: src/emc/usr_intf/pncconf/pncconf.glade:35428 -#: src/emc/usr_intf/pncconf/pncconf.glade:35448 -#: src/emc/usr_intf/pncconf/pncconf.glade:35468 -#: src/emc/usr_intf/pncconf/pncconf.glade:35488 -#: src/emc/usr_intf/pncconf/pncconf.glade:35508 -#: src/emc/usr_intf/pncconf/pncconf.glade:35528 -#: src/emc/usr_intf/pncconf/pncconf.glade:35548 -#: src/emc/usr_intf/pncconf/pncconf.glade:35568 -#: src/emc/usr_intf/pncconf/pncconf.glade:35588 -#: src/emc/usr_intf/pncconf/pncconf.glade:35608 -#: src/emc/usr_intf/pncconf/pncconf.glade:35628 -#: src/emc/usr_intf/pncconf/pncconf.glade:35648 -#: src/emc/usr_intf/pncconf/pncconf.glade:35839 -#: src/emc/usr_intf/pncconf/pncconf.glade:35859 -#: src/emc/usr_intf/pncconf/pncconf.glade:35879 -#: src/emc/usr_intf/pncconf/pncconf.glade:35899 -#: src/emc/usr_intf/pncconf/pncconf.glade:35919 -#: src/emc/usr_intf/pncconf/pncconf.glade:35939 -#: src/emc/usr_intf/pncconf/pncconf.glade:35959 -#: src/emc/usr_intf/pncconf/pncconf.glade:35979 -#: src/emc/usr_intf/pncconf/pncconf.glade:35999 -#: src/emc/usr_intf/pncconf/pncconf.glade:36019 -#: src/emc/usr_intf/pncconf/pncconf.glade:36039 -#: src/emc/usr_intf/pncconf/pncconf.glade:36059 -#: src/emc/usr_intf/pncconf/pncconf.glade:36079 -#: src/emc/usr_intf/pncconf/pncconf.glade:36099 -#: src/emc/usr_intf/pncconf/pncconf.glade:36119 -#: src/emc/usr_intf/pncconf/pncconf.glade:36139 -#: src/emc/usr_intf/pncconf/pncconf.glade:36159 -#: src/emc/usr_intf/pncconf/pncconf.glade:36179 -#: src/emc/usr_intf/pncconf/pncconf.glade:36199 -#: src/emc/usr_intf/pncconf/pncconf.glade:36219 -#: src/emc/usr_intf/pncconf/pncconf.glade:36239 -#: src/emc/usr_intf/pncconf/pncconf.glade:36259 -#: src/emc/usr_intf/pncconf/pncconf.glade:36279 -#: src/emc/usr_intf/pncconf/pncconf.glade:38208 -#: src/emc/usr_intf/pncconf/pncconf.glade:38549 -#: src/emc/usr_intf/pncconf/pncconf.glade:39779 -#: src/emc/usr_intf/pncconf/pncconf.glade:39799 -#: src/emc/usr_intf/pncconf/pncconf.glade:39819 -#: src/emc/usr_intf/pncconf/pncconf.glade:39839 -#: src/emc/usr_intf/pncconf/pncconf.glade:39859 -#: src/emc/usr_intf/pncconf/pncconf.glade:39879 -#: src/emc/usr_intf/pncconf/pncconf.glade:39899 -#: src/emc/usr_intf/pncconf/pncconf.glade:39919 -#: src/emc/usr_intf/pncconf/pncconf.glade:39939 -#: src/emc/usr_intf/pncconf/pncconf.glade:39959 -#: src/emc/usr_intf/pncconf/pncconf.glade:39979 -#: src/emc/usr_intf/pncconf/pncconf.glade:40199 -#: src/emc/usr_intf/pncconf/pncconf.glade:40219 -#: src/emc/usr_intf/pncconf/pncconf.glade:40239 -#: src/emc/usr_intf/pncconf/pncconf.glade:40259 -#: src/emc/usr_intf/pncconf/pncconf.glade:40279 -#: src/emc/usr_intf/pncconf/pncconf.glade:40299 -#: src/emc/usr_intf/pncconf/pncconf.glade:40319 -#: src/emc/usr_intf/pncconf/pncconf.glade:40339 -#: src/emc/usr_intf/pncconf/pncconf.glade:40359 -#: src/emc/usr_intf/pncconf/pncconf.glade:40379 -#: src/emc/usr_intf/pncconf/pncconf.glade:40399 -#: src/emc/usr_intf/pncconf/pncconf.glade:40419 -#: src/emc/usr_intf/pncconf/pncconf.glade:40439 -#: src/emc/usr_intf/pncconf/pncconf.glade:40459 -#: src/emc/usr_intf/pncconf/pncconf.glade:40479 -#: src/emc/usr_intf/pncconf/pncconf.glade:40499 -#: src/emc/usr_intf/pncconf/pncconf.glade:40519 -#: src/emc/usr_intf/pncconf/pncconf.glade:40539 -#: src/emc/usr_intf/pncconf/pncconf.glade:40559 -#: src/emc/usr_intf/pncconf/pncconf.glade:40579 -#: src/emc/usr_intf/pncconf/pncconf.glade:40599 -#: src/emc/usr_intf/pncconf/pncconf.glade:40619 -#: src/emc/usr_intf/pncconf/pncconf.glade:40639 -#: src/emc/usr_intf/pncconf/pncconf.glade:42555 -#: src/emc/usr_intf/pncconf/pncconf.glade:42778 -#: src/emc/usr_intf/pncconf/pncconf.glade:44707 -#: src/emc/usr_intf/pncconf/pncconf.glade:44727 -#: src/emc/usr_intf/pncconf/pncconf.glade:44747 -#: src/emc/usr_intf/pncconf/pncconf.glade:44767 -#: src/emc/usr_intf/pncconf/pncconf.glade:44787 -#: src/emc/usr_intf/pncconf/pncconf.glade:44807 -#: src/emc/usr_intf/pncconf/pncconf.glade:44827 -#: src/emc/usr_intf/pncconf/pncconf.glade:44847 -#: src/emc/usr_intf/pncconf/pncconf.glade:44867 -#: src/emc/usr_intf/pncconf/pncconf.glade:44887 -#: src/emc/usr_intf/pncconf/pncconf.glade:44907 -#: src/emc/usr_intf/pncconf/pncconf.glade:44927 -#: src/emc/usr_intf/pncconf/pncconf.glade:44947 -#: src/emc/usr_intf/pncconf/pncconf.glade:44967 -#: src/emc/usr_intf/pncconf/pncconf.glade:44987 -#: src/emc/usr_intf/pncconf/pncconf.glade:45007 -#: src/emc/usr_intf/pncconf/pncconf.glade:45027 -#: src/emc/usr_intf/pncconf/pncconf.glade:45047 -#: src/emc/usr_intf/pncconf/pncconf.glade:45067 -#: src/emc/usr_intf/pncconf/pncconf.glade:45087 -#: src/emc/usr_intf/pncconf/pncconf.glade:45107 -#: src/emc/usr_intf/pncconf/pncconf.glade:45127 -#: src/emc/usr_intf/pncconf/pncconf.glade:45147 -#: src/emc/usr_intf/pncconf/pncconf.glade:45456 -#: src/emc/usr_intf/pncconf/pncconf.glade:45476 -#: src/emc/usr_intf/pncconf/pncconf.glade:45496 -#: src/emc/usr_intf/pncconf/pncconf.glade:45516 -#: src/emc/usr_intf/pncconf/pncconf.glade:45536 -#: src/emc/usr_intf/pncconf/pncconf.glade:45556 -#: src/emc/usr_intf/pncconf/pncconf.glade:45576 -#: src/emc/usr_intf/pncconf/pncconf.glade:45596 -#: src/emc/usr_intf/pncconf/pncconf.glade:45616 -#: src/emc/usr_intf/pncconf/pncconf.glade:45636 -#: src/emc/usr_intf/pncconf/pncconf.glade:45656 -#: src/emc/usr_intf/pncconf/pncconf.glade:46886 -#: src/emc/usr_intf/pncconf/pncconf.glade:47122 -#: src/emc/usr_intf/pncconf/pncconf.glade:47142 -#: src/emc/usr_intf/pncconf/pncconf.glade:47162 -#: src/emc/usr_intf/pncconf/pncconf.glade:47182 -#: src/emc/usr_intf/pncconf/pncconf.glade:47202 -#: src/emc/usr_intf/pncconf/pncconf.glade:47222 -#: src/emc/usr_intf/pncconf/pncconf.glade:47242 -#: src/emc/usr_intf/pncconf/pncconf.glade:47262 -#: src/emc/usr_intf/pncconf/pncconf.glade:47282 -#: src/emc/usr_intf/pncconf/pncconf.glade:47302 -#: src/emc/usr_intf/pncconf/pncconf.glade:47322 -#: src/emc/usr_intf/pncconf/pncconf.glade:47342 -#: src/emc/usr_intf/pncconf/pncconf.glade:47362 -#: src/emc/usr_intf/pncconf/pncconf.glade:47382 -#: src/emc/usr_intf/pncconf/pncconf.glade:47402 -#: src/emc/usr_intf/pncconf/pncconf.glade:47422 -#: src/emc/usr_intf/pncconf/pncconf.glade:47442 -#: src/emc/usr_intf/pncconf/pncconf.glade:47462 -#: src/emc/usr_intf/pncconf/pncconf.glade:47482 -#: src/emc/usr_intf/pncconf/pncconf.glade:47502 -#: src/emc/usr_intf/pncconf/pncconf.glade:47522 -#: src/emc/usr_intf/pncconf/pncconf.glade:47542 -#: src/emc/usr_intf/pncconf/pncconf.glade:47562 -#: src/emc/usr_intf/pncconf/pncconf.glade:49478 -#: src/emc/usr_intf/pncconf/pncconf.glade:49701 -#: src/emc/usr_intf/pncconf/pncconf.glade:51630 -#: src/emc/usr_intf/pncconf/pncconf.glade:51650 -#: src/emc/usr_intf/pncconf/pncconf.glade:51670 -#: src/emc/usr_intf/pncconf/pncconf.glade:51690 -#: src/emc/usr_intf/pncconf/pncconf.glade:51710 -#: src/emc/usr_intf/pncconf/pncconf.glade:51730 -#: src/emc/usr_intf/pncconf/pncconf.glade:51750 -#: src/emc/usr_intf/pncconf/pncconf.glade:51770 -#: src/emc/usr_intf/pncconf/pncconf.glade:51790 -#: src/emc/usr_intf/pncconf/pncconf.glade:51810 -#: src/emc/usr_intf/pncconf/pncconf.glade:51830 -#: src/emc/usr_intf/pncconf/pncconf.glade:51850 -#: src/emc/usr_intf/pncconf/pncconf.glade:51870 -#: src/emc/usr_intf/pncconf/pncconf.glade:51890 -#: src/emc/usr_intf/pncconf/pncconf.glade:51910 -#: src/emc/usr_intf/pncconf/pncconf.glade:51930 -#: src/emc/usr_intf/pncconf/pncconf.glade:51950 -#: src/emc/usr_intf/pncconf/pncconf.glade:51970 -#: src/emc/usr_intf/pncconf/pncconf.glade:51990 -#: src/emc/usr_intf/pncconf/pncconf.glade:52010 -#: src/emc/usr_intf/pncconf/pncconf.glade:52030 -#: src/emc/usr_intf/pncconf/pncconf.glade:52050 -#: src/emc/usr_intf/pncconf/pncconf.glade:52070 -#: src/emc/usr_intf/pncconf/pncconf.glade:52379 -#: src/emc/usr_intf/pncconf/pncconf.glade:52399 -#: src/emc/usr_intf/pncconf/pncconf.glade:52419 -#: src/emc/usr_intf/pncconf/pncconf.glade:52439 -#: src/emc/usr_intf/pncconf/pncconf.glade:52459 -#: src/emc/usr_intf/pncconf/pncconf.glade:52479 -#: src/emc/usr_intf/pncconf/pncconf.glade:52499 -#: src/emc/usr_intf/pncconf/pncconf.glade:52519 -#: src/emc/usr_intf/pncconf/pncconf.glade:52539 -#: src/emc/usr_intf/pncconf/pncconf.glade:52559 -#: src/emc/usr_intf/pncconf/pncconf.glade:52579 -#: src/emc/usr_intf/pncconf/pncconf.glade:53809 -msgid "" -"GPIO Input\n" -"GPIO Output\n" -"GPIO O Drain\n" -"Encoder\n" -"PWM\n" -"StepGen\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:64113 +msgid "lead angle" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9198 -#: src/emc/usr_intf/pncconf/pncconf.glade:13188 -#: src/emc/usr_intf/pncconf/pncconf.glade:15884 -#: src/emc/usr_intf/pncconf/pncconf.glade:18394 -#: src/emc/usr_intf/pncconf/pncconf.glade:20397 -#: src/emc/usr_intf/pncconf/pncconf.glade:21325 -#: src/emc/usr_intf/pncconf/pncconf.glade:23121 -#: src/emc/usr_intf/pncconf/pncconf.glade:24917 -msgid "Launch test panel" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64213 +#, fuzzy +msgid "Reverse" +msgstr "Fő orsó fék bekapcsolva" -#: src/emc/usr_intf/pncconf/pncconf.glade:9213 -#: src/emc/usr_intf/pncconf/pncconf.glade:9225 -#: src/emc/usr_intf/pncconf/pncconf.glade:13162 -#: src/emc/usr_intf/pncconf/pncconf.glade:13174 -#: src/emc/usr_intf/pncconf/pncconf.glade:15858 -#: src/emc/usr_intf/pncconf/pncconf.glade:15870 -#: src/emc/usr_intf/pncconf/pncconf.glade:18367 -#: src/emc/usr_intf/pncconf/pncconf.glade:18379 -#: src/emc/usr_intf/pncconf/pncconf.glade:20370 -#: src/emc/usr_intf/pncconf/pncconf.glade:20382 -#: src/emc/usr_intf/pncconf/pncconf.glade:21339 -#: src/emc/usr_intf/pncconf/pncconf.glade:21351 -#: src/emc/usr_intf/pncconf/pncconf.glade:23135 -#: src/emc/usr_intf/pncconf/pncconf.glade:23147 -#: src/emc/usr_intf/pncconf/pncconf.glade:24931 -#: src/emc/usr_intf/pncconf/pncconf.glade:24943 -#: src/emc/usr_intf/pncconf/pncconf.glade:26815 -#: src/emc/usr_intf/pncconf/pncconf.glade:26827 -#: src/emc/usr_intf/pncconf/pncconf.glade:30826 -#: src/emc/usr_intf/pncconf/pncconf.glade:30838 -#: src/emc/usr_intf/pncconf/pncconf.glade:31831 -#: src/emc/usr_intf/pncconf/pncconf.glade:35184 -#: src/emc/usr_intf/pncconf/pncconf.glade:35196 -#: src/emc/usr_intf/pncconf/pncconf.glade:36312 -#: src/emc/usr_intf/pncconf/pncconf.glade:36324 -#: src/emc/usr_intf/pncconf/pncconf.glade:39755 -#: src/emc/usr_intf/pncconf/pncconf.glade:39767 -#: src/emc/usr_intf/pncconf/pncconf.glade:40659 -#: src/emc/usr_intf/pncconf/pncconf.glade:40671 -#: src/emc/usr_intf/pncconf/pncconf.glade:44670 -#: src/emc/usr_intf/pncconf/pncconf.glade:44682 -#: src/emc/usr_intf/pncconf/pncconf.glade:45676 -#: src/emc/usr_intf/pncconf/pncconf.glade:45688 -#: src/emc/usr_intf/pncconf/pncconf.glade:47582 -#: src/emc/usr_intf/pncconf/pncconf.glade:47594 -#: src/emc/usr_intf/pncconf/pncconf.glade:51593 -#: src/emc/usr_intf/pncconf/pncconf.glade:51605 -#: src/emc/usr_intf/pncconf/pncconf.glade:52599 -#: src/emc/usr_intf/pncconf/pncconf.glade:52611 -msgid "function" +#: src/emc/usr_intf/pncconf/pncconf.glade:64223 +msgid "Input-pattern" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9305 -#: src/emc/usr_intf/pncconf/pncconf.glade:9357 -#: src/emc/usr_intf/pncconf/pncconf.glade:9409 -#: src/emc/usr_intf/pncconf/pncconf.glade:9461 -#: src/emc/usr_intf/pncconf/pncconf.glade:10301 -#: src/emc/usr_intf/pncconf/pncconf.glade:10353 -#: src/emc/usr_intf/pncconf/pncconf.glade:10405 -#: src/emc/usr_intf/pncconf/pncconf.glade:10457 -#: src/emc/usr_intf/pncconf/pncconf.glade:10509 -#: src/emc/usr_intf/pncconf/pncconf.glade:10561 -#: src/emc/usr_intf/pncconf/pncconf.glade:10613 -#: src/emc/usr_intf/pncconf/pncconf.glade:10665 -#: src/emc/usr_intf/pncconf/pncconf.glade:10717 -#: src/emc/usr_intf/pncconf/pncconf.glade:10769 -#: src/emc/usr_intf/pncconf/pncconf.glade:11089 -#: src/emc/usr_intf/pncconf/pncconf.glade:11141 -#: src/emc/usr_intf/pncconf/pncconf.glade:11579 -#: src/emc/usr_intf/pncconf/pncconf.glade:11631 -#: src/emc/usr_intf/pncconf/pncconf.glade:11683 -#: src/emc/usr_intf/pncconf/pncconf.glade:11735 -#: src/emc/usr_intf/pncconf/pncconf.glade:11787 -#: src/emc/usr_intf/pncconf/pncconf.glade:11839 -#: src/emc/usr_intf/pncconf/pncconf.glade:11891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11943 -#: src/emc/usr_intf/pncconf/pncconf.glade:11995 -#: src/emc/usr_intf/pncconf/pncconf.glade:12047 -#: src/emc/usr_intf/pncconf/pncconf.glade:12886 -#: src/emc/usr_intf/pncconf/pncconf.glade:12938 -#: src/emc/usr_intf/pncconf/pncconf.glade:12990 -#: src/emc/usr_intf/pncconf/pncconf.glade:13042 -#: src/emc/usr_intf/pncconf/pncconf.glade:13702 -#: src/emc/usr_intf/pncconf/pncconf.glade:13754 -#: src/emc/usr_intf/pncconf/pncconf.glade:14183 -#: src/emc/usr_intf/pncconf/pncconf.glade:14235 -#: src/emc/usr_intf/pncconf/pncconf.glade:14287 -#: src/emc/usr_intf/pncconf/pncconf.glade:14339 -#: src/emc/usr_intf/pncconf/pncconf.glade:14391 -#: src/emc/usr_intf/pncconf/pncconf.glade:14443 -#: src/emc/usr_intf/pncconf/pncconf.glade:14495 -#: src/emc/usr_intf/pncconf/pncconf.glade:14547 -#: src/emc/usr_intf/pncconf/pncconf.glade:14599 -#: src/emc/usr_intf/pncconf/pncconf.glade:14651 -#: src/emc/usr_intf/pncconf/pncconf.glade:14703 -#: src/emc/usr_intf/pncconf/pncconf.glade:14755 -#: src/emc/usr_intf/pncconf/pncconf.glade:15582 -#: src/emc/usr_intf/pncconf/pncconf.glade:15634 -#: src/emc/usr_intf/pncconf/pncconf.glade:15686 -#: src/emc/usr_intf/pncconf/pncconf.glade:15738 -#: src/emc/usr_intf/pncconf/pncconf.glade:16784 -#: src/emc/usr_intf/pncconf/pncconf.glade:16836 -#: src/emc/usr_intf/pncconf/pncconf.glade:16888 -#: src/emc/usr_intf/pncconf/pncconf.glade:16940 -#: src/emc/usr_intf/pncconf/pncconf.glade:16992 -#: src/emc/usr_intf/pncconf/pncconf.glade:17044 -#: src/emc/usr_intf/pncconf/pncconf.glade:17096 -#: src/emc/usr_intf/pncconf/pncconf.glade:17148 -#: src/emc/usr_intf/pncconf/pncconf.glade:17200 -#: src/emc/usr_intf/pncconf/pncconf.glade:17252 -#: src/emc/usr_intf/pncconf/pncconf.glade:17304 -#: src/emc/usr_intf/pncconf/pncconf.glade:18143 -#: src/emc/usr_intf/pncconf/pncconf.glade:18195 -#: src/emc/usr_intf/pncconf/pncconf.glade:18247 -#: src/emc/usr_intf/pncconf/pncconf.glade:18908 -#: src/emc/usr_intf/pncconf/pncconf.glade:18960 -#: src/emc/usr_intf/pncconf/pncconf.glade:26907 -#: src/emc/usr_intf/pncconf/pncconf.glade:26959 -#: src/emc/usr_intf/pncconf/pncconf.glade:27011 -#: src/emc/usr_intf/pncconf/pncconf.glade:27063 -#: src/emc/usr_intf/pncconf/pncconf.glade:27890 -#: src/emc/usr_intf/pncconf/pncconf.glade:27942 -#: src/emc/usr_intf/pncconf/pncconf.glade:27994 -#: src/emc/usr_intf/pncconf/pncconf.glade:28046 -#: src/emc/usr_intf/pncconf/pncconf.glade:28098 -#: src/emc/usr_intf/pncconf/pncconf.glade:28150 -#: src/emc/usr_intf/pncconf/pncconf.glade:28202 -#: src/emc/usr_intf/pncconf/pncconf.glade:28254 -#: src/emc/usr_intf/pncconf/pncconf.glade:28306 -#: src/emc/usr_intf/pncconf/pncconf.glade:28358 -#: src/emc/usr_intf/pncconf/pncconf.glade:28410 -#: src/emc/usr_intf/pncconf/pncconf.glade:28462 -#: src/emc/usr_intf/pncconf/pncconf.glade:29151 -#: src/emc/usr_intf/pncconf/pncconf.glade:29203 -#: src/emc/usr_intf/pncconf/pncconf.glade:29255 -#: src/emc/usr_intf/pncconf/pncconf.glade:29307 -#: src/emc/usr_intf/pncconf/pncconf.glade:29359 -#: src/emc/usr_intf/pncconf/pncconf.glade:29411 -#: src/emc/usr_intf/pncconf/pncconf.glade:29463 -#: src/emc/usr_intf/pncconf/pncconf.glade:29515 -#: src/emc/usr_intf/pncconf/pncconf.glade:29567 -#: src/emc/usr_intf/pncconf/pncconf.glade:29619 -#: src/emc/usr_intf/pncconf/pncconf.glade:29671 -#: src/emc/usr_intf/pncconf/pncconf.glade:29723 -#: src/emc/usr_intf/pncconf/pncconf.glade:30550 -#: src/emc/usr_intf/pncconf/pncconf.glade:30602 -#: src/emc/usr_intf/pncconf/pncconf.glade:30654 -#: src/emc/usr_intf/pncconf/pncconf.glade:30706 -#: src/emc/usr_intf/pncconf/pncconf.glade:32210 -#: src/emc/usr_intf/pncconf/pncconf.glade:32262 -#: src/emc/usr_intf/pncconf/pncconf.glade:32314 -#: src/emc/usr_intf/pncconf/pncconf.glade:32366 -#: src/emc/usr_intf/pncconf/pncconf.glade:32418 -#: src/emc/usr_intf/pncconf/pncconf.glade:32470 -#: src/emc/usr_intf/pncconf/pncconf.glade:32522 -#: src/emc/usr_intf/pncconf/pncconf.glade:32574 -#: src/emc/usr_intf/pncconf/pncconf.glade:32626 -#: src/emc/usr_intf/pncconf/pncconf.glade:32678 -#: src/emc/usr_intf/pncconf/pncconf.glade:32730 -#: src/emc/usr_intf/pncconf/pncconf.glade:32782 -#: src/emc/usr_intf/pncconf/pncconf.glade:33509 -#: src/emc/usr_intf/pncconf/pncconf.glade:33561 -#: src/emc/usr_intf/pncconf/pncconf.glade:33613 -#: src/emc/usr_intf/pncconf/pncconf.glade:33665 -#: src/emc/usr_intf/pncconf/pncconf.glade:33717 -#: src/emc/usr_intf/pncconf/pncconf.glade:33769 -#: src/emc/usr_intf/pncconf/pncconf.glade:33821 -#: src/emc/usr_intf/pncconf/pncconf.glade:33873 -#: src/emc/usr_intf/pncconf/pncconf.glade:33925 -#: src/emc/usr_intf/pncconf/pncconf.glade:33977 -#: src/emc/usr_intf/pncconf/pncconf.glade:34029 -#: src/emc/usr_intf/pncconf/pncconf.glade:34081 -#: src/emc/usr_intf/pncconf/pncconf.glade:34908 -#: src/emc/usr_intf/pncconf/pncconf.glade:34960 -#: src/emc/usr_intf/pncconf/pncconf.glade:35012 -#: src/emc/usr_intf/pncconf/pncconf.glade:35064 -#: src/emc/usr_intf/pncconf/pncconf.glade:36404 -#: src/emc/usr_intf/pncconf/pncconf.glade:36456 -#: src/emc/usr_intf/pncconf/pncconf.glade:36508 -#: src/emc/usr_intf/pncconf/pncconf.glade:36560 -#: src/emc/usr_intf/pncconf/pncconf.glade:37387 -#: src/emc/usr_intf/pncconf/pncconf.glade:37439 -#: src/emc/usr_intf/pncconf/pncconf.glade:37491 -#: src/emc/usr_intf/pncconf/pncconf.glade:37543 -#: src/emc/usr_intf/pncconf/pncconf.glade:37595 -#: src/emc/usr_intf/pncconf/pncconf.glade:37647 -#: src/emc/usr_intf/pncconf/pncconf.glade:37699 -#: src/emc/usr_intf/pncconf/pncconf.glade:37751 -#: src/emc/usr_intf/pncconf/pncconf.glade:37803 -#: src/emc/usr_intf/pncconf/pncconf.glade:37855 -#: src/emc/usr_intf/pncconf/pncconf.glade:37907 -#: src/emc/usr_intf/pncconf/pncconf.glade:37959 -#: src/emc/usr_intf/pncconf/pncconf.glade:38764 -#: src/emc/usr_intf/pncconf/pncconf.glade:38816 -#: src/emc/usr_intf/pncconf/pncconf.glade:38868 -#: src/emc/usr_intf/pncconf/pncconf.glade:38920 -#: src/emc/usr_intf/pncconf/pncconf.glade:38972 -#: src/emc/usr_intf/pncconf/pncconf.glade:39024 -#: src/emc/usr_intf/pncconf/pncconf.glade:39076 -#: src/emc/usr_intf/pncconf/pncconf.glade:39128 -#: src/emc/usr_intf/pncconf/pncconf.glade:39180 -#: src/emc/usr_intf/pncconf/pncconf.glade:39232 -#: src/emc/usr_intf/pncconf/pncconf.glade:39284 -#: src/emc/usr_intf/pncconf/pncconf.glade:39336 -#: src/emc/usr_intf/pncconf/pncconf.glade:40751 -#: src/emc/usr_intf/pncconf/pncconf.glade:40803 -#: src/emc/usr_intf/pncconf/pncconf.glade:40855 -#: src/emc/usr_intf/pncconf/pncconf.glade:40907 -#: src/emc/usr_intf/pncconf/pncconf.glade:41734 -#: src/emc/usr_intf/pncconf/pncconf.glade:41786 -#: src/emc/usr_intf/pncconf/pncconf.glade:41838 -#: src/emc/usr_intf/pncconf/pncconf.glade:41890 -#: src/emc/usr_intf/pncconf/pncconf.glade:41942 -#: src/emc/usr_intf/pncconf/pncconf.glade:41994 -#: src/emc/usr_intf/pncconf/pncconf.glade:42046 -#: src/emc/usr_intf/pncconf/pncconf.glade:42098 -#: src/emc/usr_intf/pncconf/pncconf.glade:42150 -#: src/emc/usr_intf/pncconf/pncconf.glade:42202 -#: src/emc/usr_intf/pncconf/pncconf.glade:42254 -#: src/emc/usr_intf/pncconf/pncconf.glade:42306 -#: src/emc/usr_intf/pncconf/pncconf.glade:42995 -#: src/emc/usr_intf/pncconf/pncconf.glade:43047 -#: src/emc/usr_intf/pncconf/pncconf.glade:43099 -#: src/emc/usr_intf/pncconf/pncconf.glade:43151 -#: src/emc/usr_intf/pncconf/pncconf.glade:43203 -#: src/emc/usr_intf/pncconf/pncconf.glade:43255 -#: src/emc/usr_intf/pncconf/pncconf.glade:43307 -#: src/emc/usr_intf/pncconf/pncconf.glade:43359 -#: src/emc/usr_intf/pncconf/pncconf.glade:43411 -#: src/emc/usr_intf/pncconf/pncconf.glade:43463 -#: src/emc/usr_intf/pncconf/pncconf.glade:43515 -#: src/emc/usr_intf/pncconf/pncconf.glade:43567 -#: src/emc/usr_intf/pncconf/pncconf.glade:44394 -#: src/emc/usr_intf/pncconf/pncconf.glade:44446 -#: src/emc/usr_intf/pncconf/pncconf.glade:44498 -#: src/emc/usr_intf/pncconf/pncconf.glade:44550 -#: src/emc/usr_intf/pncconf/pncconf.glade:46067 -#: src/emc/usr_intf/pncconf/pncconf.glade:46119 -#: src/emc/usr_intf/pncconf/pncconf.glade:46171 -#: src/emc/usr_intf/pncconf/pncconf.glade:46223 -#: src/emc/usr_intf/pncconf/pncconf.glade:46275 -#: src/emc/usr_intf/pncconf/pncconf.glade:46327 -#: src/emc/usr_intf/pncconf/pncconf.glade:46379 -#: src/emc/usr_intf/pncconf/pncconf.glade:46431 -#: src/emc/usr_intf/pncconf/pncconf.glade:46483 -#: src/emc/usr_intf/pncconf/pncconf.glade:46535 -#: src/emc/usr_intf/pncconf/pncconf.glade:46587 -#: src/emc/usr_intf/pncconf/pncconf.glade:46639 -#: src/emc/usr_intf/pncconf/pncconf.glade:47674 -#: src/emc/usr_intf/pncconf/pncconf.glade:47726 -#: src/emc/usr_intf/pncconf/pncconf.glade:47778 -#: src/emc/usr_intf/pncconf/pncconf.glade:47830 -#: src/emc/usr_intf/pncconf/pncconf.glade:48657 -#: src/emc/usr_intf/pncconf/pncconf.glade:48709 -#: src/emc/usr_intf/pncconf/pncconf.glade:48761 -#: src/emc/usr_intf/pncconf/pncconf.glade:48813 -#: src/emc/usr_intf/pncconf/pncconf.glade:48865 -#: src/emc/usr_intf/pncconf/pncconf.glade:48917 -#: src/emc/usr_intf/pncconf/pncconf.glade:48969 -#: src/emc/usr_intf/pncconf/pncconf.glade:49021 -#: src/emc/usr_intf/pncconf/pncconf.glade:49073 -#: src/emc/usr_intf/pncconf/pncconf.glade:49125 -#: src/emc/usr_intf/pncconf/pncconf.glade:49177 -#: src/emc/usr_intf/pncconf/pncconf.glade:49229 -#: src/emc/usr_intf/pncconf/pncconf.glade:49918 -#: src/emc/usr_intf/pncconf/pncconf.glade:49970 -#: src/emc/usr_intf/pncconf/pncconf.glade:50022 -#: src/emc/usr_intf/pncconf/pncconf.glade:50074 -#: src/emc/usr_intf/pncconf/pncconf.glade:50126 -#: src/emc/usr_intf/pncconf/pncconf.glade:50178 -#: src/emc/usr_intf/pncconf/pncconf.glade:50230 -#: src/emc/usr_intf/pncconf/pncconf.glade:50282 -#: src/emc/usr_intf/pncconf/pncconf.glade:50334 -#: src/emc/usr_intf/pncconf/pncconf.glade:50386 -#: src/emc/usr_intf/pncconf/pncconf.glade:50438 -#: src/emc/usr_intf/pncconf/pncconf.glade:50490 -#: src/emc/usr_intf/pncconf/pncconf.glade:51317 -#: src/emc/usr_intf/pncconf/pncconf.glade:51369 -#: src/emc/usr_intf/pncconf/pncconf.glade:51421 -#: src/emc/usr_intf/pncconf/pncconf.glade:51473 -#: src/emc/usr_intf/pncconf/pncconf.glade:52990 -#: src/emc/usr_intf/pncconf/pncconf.glade:53042 -#: src/emc/usr_intf/pncconf/pncconf.glade:53094 -#: src/emc/usr_intf/pncconf/pncconf.glade:53146 -#: src/emc/usr_intf/pncconf/pncconf.glade:53198 -#: src/emc/usr_intf/pncconf/pncconf.glade:53250 -#: src/emc/usr_intf/pncconf/pncconf.glade:53302 -#: src/emc/usr_intf/pncconf/pncconf.glade:53354 -#: src/emc/usr_intf/pncconf/pncconf.glade:53406 -#: src/emc/usr_intf/pncconf/pncconf.glade:53458 -#: src/emc/usr_intf/pncconf/pncconf.glade:53510 -#: src/emc/usr_intf/pncconf/pncconf.glade:53562 -msgid "" -"ESTOP IN\n" -"Spindle PPR\n" -"Spindle A \n" -"Spindle B \n" -"Home X \n" -"Home Y \n" -"Home Z\n" -"Home A\n" -"Minimum Limit + Home X \n" -"Minimum Limit + Home Y \n" -"Minimum Limit + Home Z \n" -"Minimum Limit + Home A\n" -"Maximum Limit + Home X \n" -"Maximum Limit + Home Y \n" -"Maximum Limit + Home Z \n" -"Maximum Limit + Home A\n" -"Both Limit + Home X \n" -"Both Limit + Home Y \n" -"Both Limit + Home Z \n" -"Both Limit + Home A\n" -"Minimum Limit X \n" -"Minimum Limit Y \n" -"Minimum Limit Z \n" -"Minimum Limit A\n" -"Maximum Limit X \n" -"Maximum Limit Y \n" -"Maximum Limit Z \n" -"Maximum Limit A\n" -"Both Limit X \n" -"Both Limit Y \n" -"Both Limit Z \n" -"Both Limit A\n" -"All limits\n" -"All home\n" -"Unused" +#: src/emc/usr_intf/pncconf/pncconf.glade:64233 +msgid "output-pattern" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9515 -#: src/emc/usr_intf/pncconf/pncconf.glade:12871 -#: src/emc/usr_intf/pncconf/pncconf.glade:18128 -#: src/emc/usr_intf/pncconf/pncconf.glade:20233 -#: src/emc/usr_intf/pncconf/pncconf.glade:21486 -#: src/emc/usr_intf/pncconf/pncconf.glade:23282 -#: src/emc/usr_intf/pncconf/pncconf.glade:25078 -msgid "31:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64243 +msgid "Drive-offset" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9531 -#: src/emc/usr_intf/pncconf/pncconf.glade:12855 -#: src/emc/usr_intf/pncconf/pncconf.glade:18112 -#: src/emc/usr_intf/pncconf/pncconf.glade:20217 -#: src/emc/usr_intf/pncconf/pncconf.glade:21502 -#: src/emc/usr_intf/pncconf/pncconf.glade:23298 -#: src/emc/usr_intf/pncconf/pncconf.glade:25094 -msgid "29:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64253 +msgid "Encoder-offset" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9547 -#: src/emc/usr_intf/pncconf/pncconf.glade:12839 -#: src/emc/usr_intf/pncconf/pncconf.glade:18096 -#: src/emc/usr_intf/pncconf/pncconf.glade:20201 -#: src/emc/usr_intf/pncconf/pncconf.glade:21518 -#: src/emc/usr_intf/pncconf/pncconf.glade:23314 -#: src/emc/usr_intf/pncconf/pncconf.glade:25110 -msgid "27:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64263 +msgid "Poles" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9563 -#: src/emc/usr_intf/pncconf/pncconf.glade:12823 -#: src/emc/usr_intf/pncconf/pncconf.glade:18080 -#: src/emc/usr_intf/pncconf/pncconf.glade:20185 -#: src/emc/usr_intf/pncconf/pncconf.glade:21534 -#: src/emc/usr_intf/pncconf/pncconf.glade:23330 -#: src/emc/usr_intf/pncconf/pncconf.glade:25126 -msgid "25:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64283 +#, fuzzy +msgid "Configuration" +msgstr "Fő orsó fék bekapcsolva" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64318 +msgid "Use BLDC Motor Commutation Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9936 -#: src/emc/usr_intf/pncconf/pncconf.glade:12450 -#: src/emc/usr_intf/pncconf/pncconf.glade:17707 -#: src/emc/usr_intf/pncconf/pncconf.glade:19924 -#: src/emc/usr_intf/pncconf/pncconf.glade:21795 -#: src/emc/usr_intf/pncconf/pncconf.glade:23591 -#: src/emc/usr_intf/pncconf/pncconf.glade:25387 -msgid "33:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64354 +msgid "Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9952 -#: src/emc/usr_intf/pncconf/pncconf.glade:12434 -#: src/emc/usr_intf/pncconf/pncconf.glade:17691 -#: src/emc/usr_intf/pncconf/pncconf.glade:19908 -#: src/emc/usr_intf/pncconf/pncconf.glade:21811 -#: src/emc/usr_intf/pncconf/pncconf.glade:23607 -#: src/emc/usr_intf/pncconf/pncconf.glade:25403 -msgid "35:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64375 +msgid "% " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9968 -#: src/emc/usr_intf/pncconf/pncconf.glade:12418 -#: src/emc/usr_intf/pncconf/pncconf.glade:17675 -#: src/emc/usr_intf/pncconf/pncconf.glade:19892 -#: src/emc/usr_intf/pncconf/pncconf.glade:21827 -#: src/emc/usr_intf/pncconf/pncconf.glade:23623 -#: src/emc/usr_intf/pncconf/pncconf.glade:25419 -msgid "37:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64394 +msgid "Range:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9984 -#: src/emc/usr_intf/pncconf/pncconf.glade:12402 -#: src/emc/usr_intf/pncconf/pncconf.glade:17659 -#: src/emc/usr_intf/pncconf/pncconf.glade:19876 -#: src/emc/usr_intf/pncconf/pncconf.glade:21843 -#: src/emc/usr_intf/pncconf/pncconf.glade:23639 -#: src/emc/usr_intf/pncconf/pncconf.glade:25435 -msgid "39:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64419 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "RPM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10000 -#: src/emc/usr_intf/pncconf/pncconf.glade:12386 -#: src/emc/usr_intf/pncconf/pncconf.glade:17643 -#: src/emc/usr_intf/pncconf/pncconf.glade:19860 -#: src/emc/usr_intf/pncconf/pncconf.glade:21859 -#: src/emc/usr_intf/pncconf/pncconf.glade:23655 -#: src/emc/usr_intf/pncconf/pncconf.glade:25451 -msgid "41:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64439 +msgid "Use Spindle-At-Speed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10016 -#: src/emc/usr_intf/pncconf/pncconf.glade:12370 -#: src/emc/usr_intf/pncconf/pncconf.glade:17627 -#: src/emc/usr_intf/pncconf/pncconf.glade:19844 -#: src/emc/usr_intf/pncconf/pncconf.glade:21875 -#: src/emc/usr_intf/pncconf/pncconf.glade:23671 -#: src/emc/usr_intf/pncconf/pncconf.glade:25467 -msgid "43:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64464 +#, fuzzy +msgid "Filter gain:" +msgstr "Program_szűrő %r sikertelen" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64499 +msgid "Spindle Display Filter Settings" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10032 -#: src/emc/usr_intf/pncconf/pncconf.glade:12354 -#: src/emc/usr_intf/pncconf/pncconf.glade:17611 -#: src/emc/usr_intf/pncconf/pncconf.glade:19828 -#: src/emc/usr_intf/pncconf/pncconf.glade:21891 -#: src/emc/usr_intf/pncconf/pncconf.glade:23687 -#: src/emc/usr_intf/pncconf/pncconf.glade:25483 -msgid "45:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64565 +msgid "Rapid Speed Following Error:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10099 -#: src/emc/usr_intf/pncconf/pncconf.glade:12287 -#: src/emc/usr_intf/pncconf/pncconf.glade:17544 -#: src/emc/usr_intf/pncconf/pncconf.glade:19777 -#: src/emc/usr_intf/pncconf/pncconf.glade:21942 -#: src/emc/usr_intf/pncconf/pncconf.glade:23738 -#: src/emc/usr_intf/pncconf/pncconf.glade:25534 -msgid "47:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64577 +msgid "Feed Speed Following Error:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10822 -#: src/emc/usr_intf/pncconf/pncconf.glade:11077 -#: src/emc/usr_intf/pncconf/pncconf.glade:11311 -#: src/emc/usr_intf/pncconf/pncconf.glade:11567 -#: src/emc/usr_intf/pncconf/pncconf.glade:13924 -#: src/emc/usr_intf/pncconf/pncconf.glade:14171 -#: src/emc/usr_intf/pncconf/pncconf.glade:16516 -#: src/emc/usr_intf/pncconf/pncconf.glade:16772 -#: src/emc/usr_intf/pncconf/pncconf.glade:19129 -#: src/emc/usr_intf/pncconf/pncconf.glade:19379 -#: src/emc/usr_intf/pncconf/pncconf.glade:22343 -#: src/emc/usr_intf/pncconf/pncconf.glade:22592 -#: src/emc/usr_intf/pncconf/pncconf.glade:24139 -#: src/emc/usr_intf/pncconf/pncconf.glade:24388 -#: src/emc/usr_intf/pncconf/pncconf.glade:25935 -#: src/emc/usr_intf/pncconf/pncconf.glade:26184 -#: src/emc/usr_intf/pncconf/pncconf.glade:28515 -#: src/emc/usr_intf/pncconf/pncconf.glade:28761 -#: src/emc/usr_intf/pncconf/pncconf.glade:28892 -#: src/emc/usr_intf/pncconf/pncconf.glade:29139 -#: src/emc/usr_intf/pncconf/pncconf.glade:33079 -#: src/emc/usr_intf/pncconf/pncconf.glade:33250 -#: src/emc/usr_intf/pncconf/pncconf.glade:33497 -#: src/emc/usr_intf/pncconf/pncconf.glade:38012 -#: src/emc/usr_intf/pncconf/pncconf.glade:38258 -#: src/emc/usr_intf/pncconf/pncconf.glade:38507 -#: src/emc/usr_intf/pncconf/pncconf.glade:42359 -#: src/emc/usr_intf/pncconf/pncconf.glade:42605 -#: src/emc/usr_intf/pncconf/pncconf.glade:42736 -#: src/emc/usr_intf/pncconf/pncconf.glade:42983 -#: src/emc/usr_intf/pncconf/pncconf.glade:46936 -#: src/emc/usr_intf/pncconf/pncconf.glade:49282 -#: src/emc/usr_intf/pncconf/pncconf.glade:49528 -#: src/emc/usr_intf/pncconf/pncconf.glade:49659 -#: src/emc/usr_intf/pncconf/pncconf.glade:49906 -#: src/emc/usr_intf/pncconf/pncconf.glade:53859 -msgid "Pin Type" +#: src/emc/usr_intf/pncconf/pncconf.glade:64591 +msgid "Invert Motor Direction" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10835 -#: src/emc/usr_intf/pncconf/pncconf.glade:11553 -#: src/emc/usr_intf/pncconf/pncconf.glade:16758 -#: src/emc/usr_intf/pncconf/pncconf.glade:19365 -#: src/emc/usr_intf/pncconf/pncconf.glade:22356 -#: src/emc/usr_intf/pncconf/pncconf.glade:24152 -#: src/emc/usr_intf/pncconf/pncconf.glade:25948 -msgid "23:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64606 +msgid "Invert Encoder Direction " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10849 -#: src/emc/usr_intf/pncconf/pncconf.glade:11539 -#: src/emc/usr_intf/pncconf/pncconf.glade:16744 -#: src/emc/usr_intf/pncconf/pncconf.glade:19351 -#: src/emc/usr_intf/pncconf/pncconf.glade:22370 -#: src/emc/usr_intf/pncconf/pncconf.glade:24166 -#: src/emc/usr_intf/pncconf/pncconf.glade:25962 -msgid "21:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64661 +#, fuzzy +msgid "Single Input Encoder" +msgstr "Fő orsó:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64776 +msgid "encoder Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10863 -#: src/emc/usr_intf/pncconf/pncconf.glade:11525 -#: src/emc/usr_intf/pncconf/pncconf.glade:16730 -#: src/emc/usr_intf/pncconf/pncconf.glade:19337 -#: src/emc/usr_intf/pncconf/pncconf.glade:22384 -#: src/emc/usr_intf/pncconf/pncconf.glade:24180 -#: src/emc/usr_intf/pncconf/pncconf.glade:25976 -msgid "19:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64801 +#, fuzzy +msgid "Stepper Scale:" +msgstr "Program léptetés" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64831 +msgid "" +"Calculate\n" +"Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10877 -#: src/emc/usr_intf/pncconf/pncconf.glade:11511 -#: src/emc/usr_intf/pncconf/pncconf.glade:16716 -#: src/emc/usr_intf/pncconf/pncconf.glade:19323 -#: src/emc/usr_intf/pncconf/pncconf.glade:22398 -#: src/emc/usr_intf/pncconf/pncconf.glade:24194 -#: src/emc/usr_intf/pncconf/pncconf.glade:25990 -msgid "17:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64901 +msgid "Test / Tune Axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11497 -#: src/emc/usr_intf/pncconf/pncconf.glade:16702 -#: src/emc/usr_intf/pncconf/pncconf.glade:19309 -#: src/emc/usr_intf/pncconf/pncconf.glade:22412 -#: src/emc/usr_intf/pncconf/pncconf.glade:24208 -#: src/emc/usr_intf/pncconf/pncconf.glade:26004 -msgid "15:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64943 +msgid "X Axis Configuration" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10905 -#: src/emc/usr_intf/pncconf/pncconf.glade:11483 -#: src/emc/usr_intf/pncconf/pncconf.glade:16688 -#: src/emc/usr_intf/pncconf/pncconf.glade:19295 -#: src/emc/usr_intf/pncconf/pncconf.glade:22426 -#: src/emc/usr_intf/pncconf/pncconf.glade:24222 -#: src/emc/usr_intf/pncconf/pncconf.glade:26018 -msgid "13:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65155 +msgid "" +"NO\n" +"YES" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10919 -#: src/emc/usr_intf/pncconf/pncconf.glade:11469 -#: src/emc/usr_intf/pncconf/pncconf.glade:16674 -#: src/emc/usr_intf/pncconf/pncconf.glade:19281 -#: src/emc/usr_intf/pncconf/pncconf.glade:22440 -#: src/emc/usr_intf/pncconf/pncconf.glade:24236 -#: src/emc/usr_intf/pncconf/pncconf.glade:26032 -msgid "11:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65171 +msgid "Use Encoder Index For Home:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10933 -#: src/emc/usr_intf/pncconf/pncconf.glade:11455 -#: src/emc/usr_intf/pncconf/pncconf.glade:16660 -#: src/emc/usr_intf/pncconf/pncconf.glade:19267 -#: src/emc/usr_intf/pncconf/pncconf.glade:22454 -#: src/emc/usr_intf/pncconf/pncconf.glade:24250 -#: src/emc/usr_intf/pncconf/pncconf.glade:26046 -msgid " 9:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65212 +msgid "Home Final Velocity:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10947 -#: src/emc/usr_intf/pncconf/pncconf.glade:11441 -#: src/emc/usr_intf/pncconf/pncconf.glade:16646 -#: src/emc/usr_intf/pncconf/pncconf.glade:19253 -#: src/emc/usr_intf/pncconf/pncconf.glade:22468 -#: src/emc/usr_intf/pncconf/pncconf.glade:24264 -#: src/emc/usr_intf/pncconf/pncconf.glade:26060 -msgid " 7:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65222 +msgid "" +"Same\n" +"Opposite" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10961 -#: src/emc/usr_intf/pncconf/pncconf.glade:11427 -#: src/emc/usr_intf/pncconf/pncconf.glade:16632 -#: src/emc/usr_intf/pncconf/pncconf.glade:19239 -#: src/emc/usr_intf/pncconf/pncconf.glade:22482 -#: src/emc/usr_intf/pncconf/pncconf.glade:24278 -#: src/emc/usr_intf/pncconf/pncconf.glade:26074 -msgid " 5:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65238 +msgid "Home Latch Direction:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10975 -#: src/emc/usr_intf/pncconf/pncconf.glade:11413 -#: src/emc/usr_intf/pncconf/pncconf.glade:16618 -#: src/emc/usr_intf/pncconf/pncconf.glade:19225 -#: src/emc/usr_intf/pncconf/pncconf.glade:22496 -#: src/emc/usr_intf/pncconf/pncconf.glade:24292 -#: src/emc/usr_intf/pncconf/pncconf.glade:26088 -msgid " 3:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65251 +msgid "" +"Towards Negative limit\n" +"Towards Positive limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10989 -#: src/emc/usr_intf/pncconf/pncconf.glade:11399 -#: src/emc/usr_intf/pncconf/pncconf.glade:16604 -#: src/emc/usr_intf/pncconf/pncconf.glade:19211 -#: src/emc/usr_intf/pncconf/pncconf.glade:22510 -#: src/emc/usr_intf/pncconf/pncconf.glade:24306 -#: src/emc/usr_intf/pncconf/pncconf.glade:26102 -msgid " 1:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65267 +msgid "Home Search Direction:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:11002 -#: src/emc/usr_intf/pncconf/pncconf.glade:11065 -#: src/emc/usr_intf/pncconf/pncconf.glade:11324 -#: src/emc/usr_intf/pncconf/pncconf.glade:11386 -#: src/emc/usr_intf/pncconf/pncconf.glade:13937 -#: src/emc/usr_intf/pncconf/pncconf.glade:13999 -#: src/emc/usr_intf/pncconf/pncconf.glade:16529 -#: src/emc/usr_intf/pncconf/pncconf.glade:16591 -#: src/emc/usr_intf/pncconf/pncconf.glade:19142 -#: src/emc/usr_intf/pncconf/pncconf.glade:19198 -#: src/emc/usr_intf/pncconf/pncconf.glade:22523 -#: src/emc/usr_intf/pncconf/pncconf.glade:22580 -#: src/emc/usr_intf/pncconf/pncconf.glade:24319 -#: src/emc/usr_intf/pncconf/pncconf.glade:24376 -#: src/emc/usr_intf/pncconf/pncconf.glade:26115 -#: src/emc/usr_intf/pncconf/pncconf.glade:26172 -#: src/emc/usr_intf/pncconf/pncconf.glade:28686 -#: src/emc/usr_intf/pncconf/pncconf.glade:28749 -#: src/emc/usr_intf/pncconf/pncconf.glade:28905 -#: src/emc/usr_intf/pncconf/pncconf.glade:28967 -#: src/emc/usr_intf/pncconf/pncconf.glade:33067 -#: src/emc/usr_intf/pncconf/pncconf.glade:33263 -#: src/emc/usr_intf/pncconf/pncconf.glade:33325 -#: src/emc/usr_intf/pncconf/pncconf.glade:38183 -#: src/emc/usr_intf/pncconf/pncconf.glade:38246 -#: src/emc/usr_intf/pncconf/pncconf.glade:38520 -#: src/emc/usr_intf/pncconf/pncconf.glade:42530 -#: src/emc/usr_intf/pncconf/pncconf.glade:42593 -#: src/emc/usr_intf/pncconf/pncconf.glade:42749 -#: src/emc/usr_intf/pncconf/pncconf.glade:42811 -#: src/emc/usr_intf/pncconf/pncconf.glade:46924 -#: src/emc/usr_intf/pncconf/pncconf.glade:49453 -#: src/emc/usr_intf/pncconf/pncconf.glade:49516 -#: src/emc/usr_intf/pncconf/pncconf.glade:49672 -#: src/emc/usr_intf/pncconf/pncconf.glade:49734 -#: src/emc/usr_intf/pncconf/pncconf.glade:53847 -msgid "Inv" +#: src/emc/usr_intf/pncconf/pncconf.glade:65309 +msgid "Home latch Velocity:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:11198 -msgid "" -" I/O\n" -"Connector 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65334 +msgid "filename:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:13811 +#: src/emc/usr_intf/pncconf/pncconf.glade:65347 msgid "" -" I/O\n" -" Connector 3" +"Type 1\n" +"Type 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:14012 -#: src/emc/usr_intf/pncconf/pncconf.glade:14039 -#: src/emc/usr_intf/pncconf/pncconf.glade:14053 -#: src/emc/usr_intf/pncconf/pncconf.glade:28632 -#: src/emc/usr_intf/pncconf/pncconf.glade:28646 -#: src/emc/usr_intf/pncconf/pncconf.glade:28673 -#: src/emc/usr_intf/pncconf/pncconf.glade:28980 -#: src/emc/usr_intf/pncconf/pncconf.glade:29007 -#: src/emc/usr_intf/pncconf/pncconf.glade:29021 -#: src/emc/usr_intf/pncconf/pncconf.glade:32951 -#: src/emc/usr_intf/pncconf/pncconf.glade:32965 -#: src/emc/usr_intf/pncconf/pncconf.glade:32992 -#: src/emc/usr_intf/pncconf/pncconf.glade:33338 -#: src/emc/usr_intf/pncconf/pncconf.glade:33365 -#: src/emc/usr_intf/pncconf/pncconf.glade:33379 -#: src/emc/usr_intf/pncconf/pncconf.glade:38129 -#: src/emc/usr_intf/pncconf/pncconf.glade:38143 -#: src/emc/usr_intf/pncconf/pncconf.glade:38170 -#: src/emc/usr_intf/pncconf/pncconf.glade:38594 -#: src/emc/usr_intf/pncconf/pncconf.glade:38621 -#: src/emc/usr_intf/pncconf/pncconf.glade:38635 -#: src/emc/usr_intf/pncconf/pncconf.glade:42476 -#: src/emc/usr_intf/pncconf/pncconf.glade:42490 -#: src/emc/usr_intf/pncconf/pncconf.glade:42517 -#: src/emc/usr_intf/pncconf/pncconf.glade:42824 -#: src/emc/usr_intf/pncconf/pncconf.glade:42851 -#: src/emc/usr_intf/pncconf/pncconf.glade:42865 -#: src/emc/usr_intf/pncconf/pncconf.glade:46808 -#: src/emc/usr_intf/pncconf/pncconf.glade:46822 -#: src/emc/usr_intf/pncconf/pncconf.glade:46849 -#: src/emc/usr_intf/pncconf/pncconf.glade:49399 -#: src/emc/usr_intf/pncconf/pncconf.glade:49413 -#: src/emc/usr_intf/pncconf/pncconf.glade:49440 -#: src/emc/usr_intf/pncconf/pncconf.glade:49747 -#: src/emc/usr_intf/pncconf/pncconf.glade:49774 -#: src/emc/usr_intf/pncconf/pncconf.glade:49788 -#: src/emc/usr_intf/pncconf/pncconf.glade:53731 -#: src/emc/usr_intf/pncconf/pncconf.glade:53745 -#: src/emc/usr_intf/pncconf/pncconf.glade:53772 -msgid " " +#: src/emc/usr_intf/pncconf/pncconf.glade:65392 +msgid "Use Compensation File:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:16403 -msgid "" -" I/O\n" -" Connector 4" +#: src/emc/usr_intf/pncconf/pncconf.glade:65406 +msgid "Use Backlash Compensation:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:19017 -msgid "" -" I/O\n" -" Connector 5" +#: src/emc/usr_intf/pncconf/pncconf.glade:65433 +msgid "Home Position location (offset from machine zero Origin):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:20813 -msgid "" -" I/O\n" -"Connector 6" +#: src/emc/usr_intf/pncconf/pncconf.glade:65449 +msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:22609 -msgid "" -" I/O\n" -"Connector 7" +#: src/emc/usr_intf/pncconf/pncconf.glade:65493 +msgid "Home Switch location (Offset from machine zero Origin):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:24405 -msgid "" -" I/O\n" -"Connector 8" +#: src/emc/usr_intf/pncconf/pncconf.glade:65509 +msgid "Home Search Velocity:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:26201 -msgid "" -" I/O\n" -" Connector 9" +#: src/emc/usr_intf/pncconf/pncconf.glade:65524 +msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:28775 -#: src/emc/usr_intf/pncconf/pncconf.glade:35696 -#: src/emc/usr_intf/pncconf/pncconf.glade:42619 -#: src/emc/usr_intf/pncconf/pncconf.glade:49542 -msgid "page 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Advanced Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:31354 -#: src/emc/usr_intf/pncconf/pncconf.glade:38275 -#: src/emc/usr_intf/pncconf/pncconf.glade:45198 -#: src/emc/usr_intf/pncconf/pncconf.glade:52121 -msgid "page 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 15" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:33107 -#: src/emc/usr_intf/pncconf/pncconf.glade:40030 -#: src/emc/usr_intf/pncconf/pncconf.glade:46953 -#: src/emc/usr_intf/pncconf/pncconf.glade:53876 -msgid "page 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 14" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:33123 -msgid "Smart Serial 0" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 13" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:40046 -msgid "Smart Serial 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 12" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:46969 -msgid "Smart Serial 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 11" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53892 -msgid "Smart Serial 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 10" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53914 -msgid "First Parallel Port Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 9" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53998 -msgid "Outputs (PC to Machine):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:54552 -msgid "Inputs (Machine to PC):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 7" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:55977 -msgid "Launch Test Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 6" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56003 -msgid "X Axis Motor/Encoder Configuration" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 5" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56091 -msgid "D" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56104 -msgid "I" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56117 -msgid "P" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56128 -#: src/emc/usr_intf/pncconf/pncconf.glade:60917 -#: src/emc/usr_intf/pncconf/pncconf.glade:62202 -#: src/emc/usr_intf/pncconf/pncconf.glade:63103 -#: src/emc/usr_intf/pncconf/pncconf.glade:64388 -#: src/emc/usr_intf/pncconf/pncconf.glade:65265 -msgid "Bias" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56141 -msgid "Deadband" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include Halui user interface component / commands" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56188 -#: src/emc/usr_intf/pncconf/pncconf.glade:61128 -#: src/emc/usr_intf/pncconf/pncconf.glade:61991 -#: src/emc/usr_intf/pncconf/pncconf.glade:63314 -#: src/emc/usr_intf/pncconf/pncconf.glade:64177 -#: src/emc/usr_intf/pncconf/pncconf.glade:65470 -msgid "FF0" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Number of digital (bit) in pins:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56201 -#: src/emc/usr_intf/pncconf/pncconf.glade:61118 -#: src/emc/usr_intf/pncconf/pncconf.glade:62001 -#: src/emc/usr_intf/pncconf/pncconf.glade:63304 -#: src/emc/usr_intf/pncconf/pncconf.glade:64187 -#: src/emc/usr_intf/pncconf/pncconf.glade:65460 -msgid "FF1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Number of digital (bit) out pins:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56214 -#: src/emc/usr_intf/pncconf/pncconf.glade:61108 -#: src/emc/usr_intf/pncconf/pncconf.glade:62011 -#: src/emc/usr_intf/pncconf/pncconf.glade:63294 -#: src/emc/usr_intf/pncconf/pncconf.glade:64197 -#: src/emc/usr_intf/pncconf/pncconf.glade:65450 -msgid "FF2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of Internal bit memory:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56282 -msgid "Servo Info" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of Internal word memory:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56362 -#, fuzzy -msgid "Spindle Max Output:" -msgstr "Fő orsó:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:56412 -#, fuzzy -msgid "Spindle Max limit:" -msgstr "Fő orsó gyorsítása [F12]" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Setup number of external pins" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56426 -#, fuzzy -msgid "Spindle Min Limit:" -msgstr "Fő orsó:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Z Auto Touch off program" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56456 -msgid "" -"Open Loop\n" -" Test" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "HAL Component Page" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56557 -msgid "Quad Pulses / Rev:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Add HAL components with this page." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56572 -msgid "Dac Max Output:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Component" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56586 -msgid "Dac Output Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "number of components" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56599 -msgid "3pwm Deadtime:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "PID" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56612 -msgid "3pwm Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56626 -#, fuzzy -msgid "Output Info" -msgstr "Eltolás" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mux16" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56691 -msgid "Driver Type:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "lowpass" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56735 -msgid "Direction Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Base Thread" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56748 -msgid "Direction Hold" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Servo Thread" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56791 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Step Space" -msgstr "Program léptetés" +msgid "Load Command " +msgstr "Irányított" -#: src/emc/usr_intf/pncconf/pncconf.glade:56804 -msgid "Step On-Time" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Thread Speed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56820 -msgid "Stepper Info" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Thread Command" +msgstr "Irányított" -#: src/emc/usr_intf/pncconf/pncconf.glade:56871 -msgid "No feedback" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Custom Components Commands" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56881 -msgid "Absolute Feedback" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Machine configuration complete" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56895 -msgid "Incremental Feedback" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"All the necessary information has now been gathered. Click \"Apply\" to " +"write your configuration files to disk.\n" +"\n" +"If you are using the 5i25 card with daugther boards or are using SSerial " +"based daughter cards, the cards must be connected and/or field power " +"supplied to the 5i25 \n" +"for the HAL pins to be available. If the config is expecting the pins and " +"they are not there, linuxcnc will error.\n" +"If you experience lockups while running LinuxCNC, you will need to decrease " +"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC, first verify that you " +"entered the proper timings for your stepper drivers. If that does not fix " +"the problem, then run a more thorough latency test as described on the " +"linuxcnc.org wiki:\n" +" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" +"\n" +"If you experience the \"Unexpected Realtime Delay\" message, run a more " +"thorough latency test as described on the linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56909 -msgid "Incremental Encoder" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +" Motor Encoder Test\n" +"Warning limits switches \n" +" Will not be obeyed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56921 -msgid "Hall sensors" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Slow Dac Speed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56933 -msgid "Fanuc Red Cap " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Fast Dac Speed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56945 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Use encoder Index" -msgstr "Fő orsó:" +msgid "Dac Offset:" +msgstr "Eltolás" -#: src/emc/usr_intf/pncconf/pncconf.glade:56976 -msgid "Input Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57000 -msgid "Digital instead of PWM outputs" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Reset Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57009 -msgid "6 outputs instead of 3 " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Enable Amp" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57021 -msgid "Force Trapezoid Mode" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Invert Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57033 -msgid "Emulate feedback " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Invert Motor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57045 -msgid "Emulated Hall sensors" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"±\n" +"+\n" +"-\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57058 -msgid "Emulated Fanuc Red Cap" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Seconds" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57085 -msgid "8i20 Max Current" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57119 -msgid "Output Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm/minute^2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57153 -msgid "Poles" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm/minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57163 -msgid "Encoder-offset" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Current" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57173 -msgid "Drive-offset" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "P:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57183 -msgid "output-pattern" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "I:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57193 -msgid "Input-pattern" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "D:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57203 -#, fuzzy -msgid "Reverse" -msgstr "Fő orsó fék bekapcsolva" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Original" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57303 -msgid "lead angle" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "DeadBand" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57313 -msgid "alignment current" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "PID Tuning" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57354 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Configuration" -msgstr "Fő orsó fék bekapcsolva" +msgid "Step Time:" +msgstr "Program léptetés" -#: src/emc/usr_intf/pncconf/pncconf.glade:57389 -msgid "Use Brushless Motor Control" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Step Space:" +msgstr "Program léptetés" -#: src/emc/usr_intf/pncconf/pncconf.glade:57425 -msgid "Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Direction Hold:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57446 -msgid "% " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Direction Setup:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57466 -msgid "Use Spindle-At-Speed" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Timing" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57491 -#, fuzzy -msgid "Filter gain:" -msgstr "Program_szűrő %r sikertelen" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57526 -msgid "Spindle Display Filter Settings" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57577 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Single Input Encoder" +msgid "spindle" msgstr "Fő orsó:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57631 -msgid "Invert Encoder Direction " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Help Page" +msgstr "_Segítség" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"X axis:\n" +"Total Travel = 10\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = 0\n" +"Pos Travel Distance = Total Travel - neg travel distance = 10\n" +"Home Position = Origin to Home Position distance = 6\n" +"\n" +"Y axis:\n" +"Total Travel = 8\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = -8\n" +"Pos Travel Distance = Total Travel - neg travel distance = 0\n" +"Home Position = Origin to Home Position distance = 0\n" +"\n" +"Z axis:\n" +"Total Travel = 12\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = -12\n" +"Pos Travel Distance = Total Travel - neg travel distance = 0\n" +"Home Position = Origin to Home Position distance = 0\n" +"\n" +"Note that the direction indicators on the top right show \n" +"movement of the TOOL and on the actual machine,\n" +"often it is the table that actually moves. In that case the \n" +"directions are opposite of shown.\n" +"\n" +"Note this is an example, Many other combinations are \n" +"possible" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57646 -msgid "Invert Motor Direction" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Mill" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57661 -msgid "Feed Speed Following Error:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"Total Travel = 4 + 6 = 10\n" +"Z Home Offset = Origin to Home Switch distance = 10\n" +"Z Neg Travel Distance = Origin to neg limit distance = 0\n" +"Z Pos Travel Distance = Total Travel - neg travel distance = 10\n" +"Z Home Position = Origin to Home Position distance = 4\n" +"\n" +"X axis would be similar but not shown fully for clarity.\n" +"This is just a sample reference other switch combinations are\n" +"possible." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57675 -msgid "Rapid Speed Following Error:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Lathe" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57715 -msgid "" -"Calculate\n" -"Scale" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Diagram" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57744 -#, fuzzy -msgid "Stepper Scale:" -msgstr "Program léptetés" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Output" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57771 -msgid "encoder Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"\t\t\t\tPNCconf - Point aNd Click CONFigurator\n" +"PNCconf is a configuration program for Linuxcnc.\n" +"It configures machines using Mesa I/O cards.\n" +"It configures servo,stepper or closed loop stepper machines.\n" +"It supports some of Mesa's sserial cards.\n" +"It will forever be a work in progress as Linuxcnc changes.\n" +"\n" +"Many thanks To:\n" +"Jeff Eppler - PNCconf is based on stepconf - Jeff's creation. Jeff also has " +"helped with techincal difficulties.\n" +"Big John T - John drew the original machine illustrations. Testing and " +"suggestions.\n" +"Peter Wallace - Technical questions on Mesa's I/O cards. Supplied sample " +"equipment to test with.\n" +"Andy Pugh - suggestions, questions answered and many pin name changes :) \n" +"Dave Armstrong - testing and suggestions expecially with resolvers.\n" +"Everyone who gave a bug report ! I cannot test everything thoughly enough so " +"reports help.\n" +"\n" +"Beta 1 version" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57928 -msgid "Test / Tune Axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "TPI " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58235 -msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulley teeth (motor:Leadscrew):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58251 -msgid "Home Search Velocity:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Worm turn ratio (Input:Outputl)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58266 -msgid "Home Switch location (Offset from machine zero Origin):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Microstep Multiplication Factor:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58310 -msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Leadscrew Metric Pitch" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58326 -msgid "Home Position location (offset from machine zero Origin):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motor steps per revolution:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58355 -msgid "Use Backlash Compensation:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Motor Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58369 -msgid "Use Compensation File:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "TPI" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58412 -msgid "" -"Type 1\n" -"Type 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "X 4 = Pulses/Rev" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58427 -msgid "filename:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder lines per revolution:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58455 -msgid "Home latch Velocity:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulley teeth (encoder:Leadscrew):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58494 -msgid "Home Search Direction:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58507 -msgid "" -"Towards Negative limit\n" -"Towards Positive limit" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58523 -msgid "Home Latch Direction:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "encoder pulses per unit:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58552 -msgid "Home Final Velocity:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "motor steps per unit:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58591 -msgid "Use Encoder Index For Home:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Calculated Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58603 -msgid "" -"NO\n" -"YES" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / encoder pulse" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58628 -msgid "Advanced Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Resolution:" +msgstr "Pozíció:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Distance to acheave max speed:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58712 -msgid "Cmd 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "sec" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58718 -msgid "Cmd 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Khz" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58728 -msgid "Cmd 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Calculated Axis SCALE:" +msgstr "Tengely:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motor RPM at max speed:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58738 -msgid "Cmd 4" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "xmaxrpm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58748 -msgid "Cmd 5" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motion Data" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58874 -msgid "Cmd 6" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "gtk-cancel" +msgstr "Mégsem" + +#: src/emc/usr_intf/gscreen/gscreen.py:349 +#, python-format +msgid "adding import dir %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58884 -msgid "Cmd 7" +#: src/emc/usr_intf/gscreen/gscreen.py:355 +#, python-format +msgid "module '%s' imported OK" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58896 -msgid "Cmd 8" +#: src/emc/usr_intf/gscreen/gscreen.py:452 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Using CUSTOM glade file from %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58908 -msgid "Cmd 9" +#: src/emc/usr_intf/gscreen/gscreen.py:457 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Using SKIN glade file from %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58920 -msgid "Cmd 10" +#: src/emc/usr_intf/gscreen/gscreen.py:460 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: using STOCK glade file from: %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58990 -msgid "Cmd 11" +#: src/emc/usr_intf/gscreen/gscreen.py:466 +#, python-format +msgid "**** Gscreen GLADE ERROR: With main screen xml file: %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59000 -msgid "Cmd 12" +#: src/emc/usr_intf/gscreen/gscreen.py:471 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Screen 2 -Using CUSTOM glade file from %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59012 -msgid "Cmd 13" +#: src/emc/usr_intf/gscreen/gscreen.py:477 +#, python-format +msgid "**** Gscreen GLADE ERROR: With screen 2's xml file: %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59024 -msgid "Cmd 14" +#: src/emc/usr_intf/gscreen/gscreen.py:479 +msgid "" +"\n" +"**** GSCREEN INFO: No Screen 2 glade file present" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59036 -msgid "Cmd 15" +#: src/emc/usr_intf/gscreen/gscreen.py:519 +msgid "No UNITS entry found in [TRAJ] or [AXIS_0] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59053 -msgid "Include Halui user interface component / commands" +#: src/emc/usr_intf/gscreen/gscreen.py:532 +msgid "" +"*** Gscreen ERROR: Asking for a HAL component using a name that already " +"exists." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59127 -msgid "Number of digital (bit) in pins:" +#: src/emc/usr_intf/gscreen/gscreen.py:585 +msgid "No default jog increments entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59138 -msgid "Number of digital (bit) out pins:" +#: src/emc/usr_intf/gscreen/gscreen.py:598 +msgid "No default angular jog increments entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59308 -msgid "Setup number of external pins" +#: src/emc/usr_intf/gscreen/gscreen.py:607 +#, python-format +msgid "" +"No DEFAULT_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59360 -msgid "Z Auto Touch off program" +#: src/emc/usr_intf/gscreen/gscreen.py:618 +#, python-format +msgid "" +"No MAX_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59505 -msgid "HAL Component Page" +#: src/emc/usr_intf/gscreen/gscreen.py:625 +msgid "No MAX_VELOCITY found in [TRAJ] of the INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59648 -msgid "lowpass" +#: src/emc/usr_intf/gscreen/gscreen.py:638 +#, python-format +msgid "" +"No DEFAULT_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59675 -msgid "mux16" +#: src/emc/usr_intf/gscreen/gscreen.py:649 +#, python-format +msgid "" +"No MAX_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59702 -msgid "scale" +#: src/emc/usr_intf/gscreen/gscreen.py:657 +msgid "No MAX_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59728 -msgid "PID" +#: src/emc/usr_intf/gscreen/gscreen.py:663 +msgid "No MIN_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59739 -msgid "number of components" +#: src/emc/usr_intf/gscreen/gscreen.py:669 +msgid "No MAX_FEED_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59767 -msgid "Component" +#: src/emc/usr_intf/gscreen/gscreen.py:674 +msgid "This screen will be orientated for Lathe options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59794 -msgid "Add HAL components with this page." +#: src/emc/usr_intf/gscreen/gscreen.py:727 +msgid "CYCLE_TIME in [DISPLAY] of INI file is missing: defaulting to 100ms" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59844 -#, fuzzy -msgid "Thread Command" -msgstr "Irányított" - -#: src/emc/usr_intf/pncconf/pncconf.glade:59854 -msgid "Thread Speed" +#: src/emc/usr_intf/gscreen/gscreen.py:730 +msgid "CYCLE_TIME in [DISPLAY] of INI file is too small: defaulting to 100ms" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59906 -#, fuzzy -msgid "Load Command " -msgstr "Irányított" +#: src/emc/usr_intf/gscreen/gscreen.py:732 +#, python-format +msgid "timeout %d" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59952 -msgid "Servo Thread" +#: src/emc/usr_intf/gscreen/gscreen.py:1001 +msgid "" +"**** WARNING GSCREEN: could not understand the window geometry info in " +"hidden preference file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59965 -msgid "Base Thread" +#: src/emc/usr_intf/gscreen/gscreen.py:1089 +msgid "Control powered up and initialized" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59979 -msgid "Custom Components Commands" +#: src/emc/usr_intf/gscreen/gscreen.py:1264 +msgid "Cycle start pressed in AUTO mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60031 -msgid "" -" Motor Encoder Test\n" -"Warning limits switches \n" -" Will not be obeyed" +#: src/emc/usr_intf/gscreen/gscreen.py:1267 +msgid "Cycle start pressed in MDI mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60067 -#: src/emc/usr_intf/pncconf/pncconf.glade:60766 -#: src/emc/usr_intf/pncconf/pncconf.glade:61859 -#: src/emc/usr_intf/pncconf/pncconf.glade:62952 -#: src/emc/usr_intf/pncconf/pncconf.glade:64045 -#: src/emc/usr_intf/pncconf/pncconf.glade:65025 -msgid "Invert Motor" +#: src/emc/usr_intf/gscreen/gscreen.py:1290 +#, python-format +msgid "Please change to tool # %s, then click OK." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60083 -#: src/emc/usr_intf/pncconf/pncconf.glade:60782 -#: src/emc/usr_intf/pncconf/pncconf.glade:61875 -#: src/emc/usr_intf/pncconf/pncconf.glade:62968 -#: src/emc/usr_intf/pncconf/pncconf.glade:64061 -#: src/emc/usr_intf/pncconf/pncconf.glade:65040 -msgid "Invert Encoder" +#: src/emc/usr_intf/gscreen/gscreen.py:1291 +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +#: src/emc/usr_intf/gscreen/gscreen.py:1789 +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2849 +msgid "INFO:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60100 -msgid "Enable Amp" +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +msgid "Can't start spindle manually while MDI busy" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60114 -msgid "Reset Encoder" +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +msgid "can't start spindle manually in Auto mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60142 -msgid "Encoder Scale:" +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +msgid "No direction selected for spindle" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60153 +#: src/emc/usr_intf/gscreen/gscreen.py:1331 +#: src/emc/usr_intf/gscreen/gscreen.py:1333 #, fuzzy -msgid "Dac Offset:" -msgstr "Eltolás" +msgid "Spindle Speed Preset Entry" +msgstr "Fő orsó:" -#: src/emc/usr_intf/pncconf/pncconf.glade:60243 -msgid "Fast Dac Speed" +#: src/emc/usr_intf/gscreen/gscreen.py:1362 +#: src/emc/usr_intf/gscreen/gscreen.py:1367 +msgid "Manual Tool Index Entry" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60258 -msgid "Slow Dac Speed" +#: src/emc/usr_intf/gscreen/gscreen.py:1489 +msgid "Entry dialog" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60407 -#: src/emc/usr_intf/pncconf/pncconf.glade:61503 -#: src/emc/usr_intf/pncconf/pncconf.glade:62596 -#: src/emc/usr_intf/pncconf/pncconf.glade:63689 -#: src/emc/usr_intf/pncconf/pncconf.glade:64788 -msgid "mm/minute" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +#, fuzzy +msgid "Classicladder realtime component not detected" +msgstr "Valós idejű komponens nincs betöltve" -#: src/emc/usr_intf/pncconf/pncconf.glade:60441 -#: src/emc/usr_intf/pncconf/pncconf.glade:61536 -#: src/emc/usr_intf/pncconf/pncconf.glade:62629 -#: src/emc/usr_intf/pncconf/pncconf.glade:63722 -#: src/emc/usr_intf/pncconf/pncconf.glade:64821 -msgid "mm/minute^2" +#: src/emc/usr_intf/gscreen/gscreen.py:1617 +msgid "ladder not available - is the realtime component loaded?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60550 -#: src/emc/usr_intf/pncconf/pncconf.glade:61644 -#: src/emc/usr_intf/pncconf/pncconf.glade:62737 -#: src/emc/usr_intf/pncconf/pncconf.glade:64930 -msgid "Enable" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:1691 +#, fuzzy +msgid "Override Entry" +msgstr "Határok módosítása" -#: src/emc/usr_intf/pncconf/pncconf.glade:60600 -#: src/emc/usr_intf/pncconf/pncconf.glade:61693 -#: src/emc/usr_intf/pncconf/pncconf.glade:62786 -#: src/emc/usr_intf/pncconf/pncconf.glade:63879 -#: src/emc/usr_intf/pncconf/pncconf.glade:65139 -msgid "Seconds" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:1719 +#, fuzzy +msgid "Machine powered on" +msgstr "Gép" -#: src/emc/usr_intf/pncconf/pncconf.glade:60907 -#: src/emc/usr_intf/pncconf/pncconf.glade:62212 -#: src/emc/usr_intf/pncconf/pncconf.glade:63093 -#: src/emc/usr_intf/pncconf/pncconf.glade:64398 -#: src/emc/usr_intf/pncconf/pncconf.glade:65255 -msgid "DeadBand" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:1724 +#, fuzzy +msgid "Machine Estopped!" +msgstr "Mutasd a gép pozícióját" -#: src/emc/usr_intf/pncconf/pncconf.glade:61089 -#: src/emc/usr_intf/pncconf/pncconf.glade:61380 -#: src/emc/usr_intf/pncconf/pncconf.glade:62030 -#: src/emc/usr_intf/pncconf/pncconf.glade:62401 -#: src/emc/usr_intf/pncconf/pncconf.glade:63275 -#: src/emc/usr_intf/pncconf/pncconf.glade:63562 -#: src/emc/usr_intf/pncconf/pncconf.glade:64216 -#: src/emc/usr_intf/pncconf/pncconf.glade:64587 -#: src/emc/usr_intf/pncconf/pncconf.glade:65431 -#: src/emc/usr_intf/pncconf/pncconf.glade:65718 -msgid "Original" +#: src/emc/usr_intf/gscreen/gscreen.py:1727 +msgid "Calculator" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61138 -#: src/emc/usr_intf/pncconf/pncconf.glade:61981 -#: src/emc/usr_intf/pncconf/pncconf.glade:63324 -#: src/emc/usr_intf/pncconf/pncconf.glade:64167 -#: src/emc/usr_intf/pncconf/pncconf.glade:65480 -msgid "D:" +#: src/emc/usr_intf/gscreen/gscreen.py:1857 +#, python-format +msgid "Axes %s are homed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61148 -#: src/emc/usr_intf/pncconf/pncconf.glade:61971 -#: src/emc/usr_intf/pncconf/pncconf.glade:63334 -#: src/emc/usr_intf/pncconf/pncconf.glade:64157 -#: src/emc/usr_intf/pncconf/pncconf.glade:65490 -msgid "I:" +#: src/emc/usr_intf/gscreen/gscreen.py:1864 +msgid "All the axes have been homed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61158 -#: src/emc/usr_intf/pncconf/pncconf.glade:61961 -#: src/emc/usr_intf/pncconf/pncconf.glade:63344 -#: src/emc/usr_intf/pncconf/pncconf.glade:64147 -#: src/emc/usr_intf/pncconf/pncconf.glade:65500 -msgid "P:" +#: src/emc/usr_intf/gscreen/gscreen.py:1874 +#, python-format +msgid "There are unhomed axes: %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61168 -#: src/emc/usr_intf/pncconf/pncconf.glade:61392 -#: src/emc/usr_intf/pncconf/pncconf.glade:61951 -#: src/emc/usr_intf/pncconf/pncconf.glade:62389 -#: src/emc/usr_intf/pncconf/pncconf.glade:63354 -#: src/emc/usr_intf/pncconf/pncconf.glade:63574 -#: src/emc/usr_intf/pncconf/pncconf.glade:64137 -#: src/emc/usr_intf/pncconf/pncconf.glade:64575 -#: src/emc/usr_intf/pncconf/pncconf.glade:65510 -#: src/emc/usr_intf/pncconf/pncconf.glade:65730 -msgid "Current" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:1879 +#, fuzzy, python-format +msgid "Program loaded: %s" +msgstr "Program_szűrő %r sikertelen" -#: src/emc/usr_intf/pncconf/pncconf.glade:61185 -#: src/emc/usr_intf/pncconf/pncconf.glade:62278 -#: src/emc/usr_intf/pncconf/pncconf.glade:63371 -#: src/emc/usr_intf/pncconf/pncconf.glade:64464 -#: src/emc/usr_intf/pncconf/pncconf.glade:65527 -msgid "PID Tuning" +#: src/emc/usr_intf/gscreen/gscreen.py:1977 +#, fuzzy +msgid "Manual Spindle Control" +msgstr "Fő orsó lassítása [F11]" + +#: src/emc/usr_intf/gscreen/gscreen.py:2034 +msgid "Keyboard" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61370 -#: src/emc/usr_intf/pncconf/pncconf.glade:62413 -#: src/emc/usr_intf/pncconf/pncconf.glade:63552 -#: src/emc/usr_intf/pncconf/pncconf.glade:64599 -#: src/emc/usr_intf/pncconf/pncconf.glade:65708 -msgid "Direction Setup:" +#: src/emc/usr_intf/gscreen/gscreen.py:2067 +msgid "Error with launching 'Onboard' on-screen keyboard program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61404 -#: src/emc/usr_intf/pncconf/pncconf.glade:62379 -#: src/emc/usr_intf/pncconf/pncconf.glade:63586 -#: src/emc/usr_intf/pncconf/pncconf.glade:64565 -#: src/emc/usr_intf/pncconf/pncconf.glade:65742 -msgid "Direction Hold:" +#: src/emc/usr_intf/gscreen/gscreen.py:2215 +#, python-format +msgid "**** GSCREEN INFO: Overriding internal signal call to %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61414 -#: src/emc/usr_intf/pncconf/pncconf.glade:62369 -#: src/emc/usr_intf/pncconf/pncconf.glade:63596 -#: src/emc/usr_intf/pncconf/pncconf.glade:64555 -#: src/emc/usr_intf/pncconf/pncconf.glade:65752 -#, fuzzy -msgid "Step Space:" -msgstr "Program léptetés" +#: src/emc/usr_intf/gscreen/gscreen.py:2643 +msgid " Zero Origin" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61424 -#: src/emc/usr_intf/pncconf/pncconf.glade:62359 -#: src/emc/usr_intf/pncconf/pncconf.glade:63606 -#: src/emc/usr_intf/pncconf/pncconf.glade:64545 -#: src/emc/usr_intf/pncconf/pncconf.glade:65762 +#: src/emc/usr_intf/gscreen/gscreen.py:2644 #, fuzzy -msgid "Step Time:" -msgstr "Program léptetés" +msgid "Offset Origin" +msgstr "Eltolás" -#: src/emc/usr_intf/pncconf/pncconf.glade:61439 -#: src/emc/usr_intf/pncconf/pncconf.glade:62528 -#: src/emc/usr_intf/pncconf/pncconf.glade:63621 -#: src/emc/usr_intf/pncconf/pncconf.glade:64714 -#: src/emc/usr_intf/pncconf/pncconf.glade:65777 -msgid "Step Timing" +#: src/emc/usr_intf/gscreen/gscreen.py:2659 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing text or type) " +"in INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:63830 -msgid "enable" +#: src/emc/usr_intf/gscreen/gscreen.py:2661 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing pinname) in " +"INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65798 -#, fuzzy -msgid "spindle" -msgstr "Fő orsó:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:65881 -#, fuzzy -msgid "Help Page" -msgstr "_Segítség" +#: src/emc/usr_intf/gscreen/gscreen.py:2663 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing boldtext) in " +"INI File [DISPLAY] section" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65911 +#: src/emc/usr_intf/gscreen/gscreen.py:2667 +#, python-format msgid "" -"X axis:\n" -"Total Travel = 10\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = 0\n" -"Pos Travel Distance = Total Travel - neg travel distance = 10\n" -"Home Position = Origin to Home Position distance = 6\n" -"\n" -"Y axis:\n" -"Total Travel = 8\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = -8\n" -"Pos Travel Distance = Total Travel - neg travel distance = 0\n" -"Home Position = Origin to Home Position distance = 0\n" -"\n" -"Z axis:\n" -"Total Travel = 12\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = -12\n" -"Pos Travel Distance = Total Travel - neg travel distance = 0\n" -"Home Position = Origin to Home Position distance = 0\n" -"\n" -"Note that the direction indicators on the top right show \n" -"movement of the TOOL and on the actual machine,\n" -"often it is the table that actually moves. In that case the \n" -"directions are opposite of shown.\n" -"\n" -"Note this is an example, Many other combinations are \n" -"possible" +"**** Gscreen ERROR: invalid message type (%s)in INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65951 -msgid "Mill" +#: src/emc/usr_intf/gscreen/gscreen.py:2699 +msgid "Dialog error - Is the dialog handler missing from the handler file?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65970 -msgid "" -"Total Travel = 4 + 6 = 10\n" -"Z Home Offset = Origin to Home Switch distance = 10\n" -"Z Neg Travel Distance = Origin to neg limit distance = 0\n" -"Z Pos Travel Distance = Total Travel - neg travel distance = 10\n" -"Z Home Position = Origin to Home Position distance = 4\n" -"\n" -"X axis would be similar but not shown fully for clarity.\n" -"This is just a sample reference other switch combinations are\n" -"possible." +#: src/emc/usr_intf/gscreen/gscreen.py:2701 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3540 +#, fuzzy +msgid "Manual Toolchange" +msgstr "Kézi vezérlés" + +#: src/emc/usr_intf/gscreen/gscreen.py:2703 +#: src/emc/usr_intf/gmoccapy/dialogs.py:94 +#: src/emc/usr_intf/gmoccapy/dialogs.py:107 +#: src/emc/usr_intf/gmoccapy/dialogs.py:119 +msgid "Operator Message" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65994 -msgid "Lathe" +#: src/emc/usr_intf/gscreen/gscreen.py:2737 +#: src/emc/usr_intf/gscreen/gscreen.py:2741 +#: src/emc/usr_intf/gmoccapy/dialogs.py:155 +#: src/emc/usr_intf/gmoccapy/dialogs.py:159 +msgid "Restart Entry" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66010 -msgid "Diagram" +#: src/emc/usr_intf/gscreen/gscreen.py:2752 +#: src/emc/usr_intf/gmoccapy/dialogs.py:173 +msgid "Enter" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66043 -msgid "Output" +#: src/emc/usr_intf/gscreen/gscreen.py:2774 +#, python-format +msgid "Ready to Restart program from line %d" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66123 -msgid "Motor steps per revolution:" +#: src/emc/usr_intf/gscreen/gscreen.py:2807 +msgid "Invalid embeded tab configuration" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66173 -#: src/emc/usr_intf/pncconf/pncconf.glade:66459 -msgid "Leadscrew Metric Pitch" +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +msgid "Can't jog multiple axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66186 -msgid "Microstep Multiplication Factor:" +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +msgid "No axis selected to jog" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66199 -#: src/emc/usr_intf/pncconf/pncconf.glade:66481 -msgid "Worm turn ratio (Input:Outputl)" +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +msgid "No axis selected to move" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66212 -msgid "Pulley teeth (motor:Leadscrew):" +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +msgid "Can't home multiple axis - select HOME ALL instead" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66356 -msgid "TPI " +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +msgid "No axis selected to home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66372 -msgid "Step Motor Scale" +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +msgid "Can't unhome multiple axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66472 -msgid "Pulley teeth (encoder:Leadscrew):" +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +msgid "No axis selected to unhome" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66537 -msgid "Encoder lines per revolution:" +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +msgid "No axis selected for origin zeroing" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66547 -msgid "X 4 = Pulses/Rev" +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +msgid "No axis selected for origin touch-off" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66651 -msgid "TPI" +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +msgid "Can't tool touch-off multiple axes" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66667 -msgid "Encoder Scale" +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +msgid "No axis selected for tool touch-off" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66711 -msgid "motor steps per unit:" +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#: src/emc/usr_intf/gscreen/gscreen.py:3375 +msgid "Error Message" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66721 -msgid "encoder pulses per unit:" +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#, python-format +msgid "Tool editor error - is the %s editor available?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66756 -msgid " " +#: src/emc/usr_intf/gscreen/gscreen.py:3377 +#: src/emc/usr_intf/gscreen/gscreen.py:3379 +msgid "Message" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66770 -msgid "Calculated Scale" +#: src/emc/usr_intf/gscreen/gscreen.py:3409 +#, python-format +msgid "%d RPM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66848 -msgid "xmaxrpm" +#: src/emc/usr_intf/gscreen/gscreen.glade:48 +#: src/emc/usr_intf/gscreen/gscreen.glade:59 +#: src/emc/usr_intf/gscreen/gscreen.glade:135 +#: src/emc/usr_intf/gscreen/gscreen.glade:176 +#: src/emc/usr_intf/gscreen/gscreen.glade:187 +#: src/emc/usr_intf/gscreen/gscreen.glade:264 +#: src/emc/usr_intf/gscreen/gscreen.glade:306 +#: src/emc/usr_intf/gscreen/gscreen.glade:317 +#: src/emc/usr_intf/gscreen/gscreen.glade:393 +#: src/emc/usr_intf/gscreen/gscreen.glade:434 +#: src/emc/usr_intf/gscreen/gscreen.glade:445 +#: src/emc/usr_intf/gscreen/gscreen.glade:521 +#: src/emc/usr_intf/gscreen/gscreen.glade:562 +#: src/emc/usr_intf/gscreen/gscreen.glade:573 +#: src/emc/usr_intf/gscreen/gscreen.glade:649 +#: src/emc/usr_intf/gscreen/gscreen.glade:690 +#: src/emc/usr_intf/gscreen/gscreen.glade:701 +#: src/emc/usr_intf/gscreen/gscreen.glade:777 +#: src/emc/usr_intf/gscreen/gscreen.glade:818 +#: src/emc/usr_intf/gscreen/gscreen.glade:829 +#: src/emc/usr_intf/gscreen/gscreen.glade:905 +#: src/emc/usr_intf/gscreen/gscreen.glade:946 +#: src/emc/usr_intf/gscreen/gscreen.glade:957 +#: src/emc/usr_intf/gscreen/gscreen.glade:1033 +#: src/emc/usr_intf/gscreen/gscreen.glade:1074 +#: src/emc/usr_intf/gscreen/gscreen.glade:1085 +#: src/emc/usr_intf/gscreen/gscreen.glade:1161 +msgid "0000.0000" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66864 -msgid "RPM" +#: src/emc/usr_intf/gscreen/gscreen.glade:73 +#: src/emc/usr_intf/gscreen/gscreen.glade:201 +#: src/emc/usr_intf/gscreen/gscreen.glade:331 +#: src/emc/usr_intf/gscreen/gscreen.glade:459 +#: src/emc/usr_intf/gscreen/gscreen.glade:587 +#: src/emc/usr_intf/gscreen/gscreen.glade:715 +#: src/emc/usr_intf/gscreen/gscreen.glade:843 +#: src/emc/usr_intf/gscreen/gscreen.glade:971 +#: src/emc/usr_intf/gscreen/gscreen.glade:1099 +msgid "REL" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66877 -msgid "Motor RPM at max speed:" +#: src/emc/usr_intf/gscreen/gscreen.glade:99 +#: src/emc/usr_intf/gscreen/gscreen.glade:227 +#: src/emc/usr_intf/gscreen/gscreen.glade:357 +#: src/emc/usr_intf/gscreen/gscreen.glade:485 +#: src/emc/usr_intf/gscreen/gscreen.glade:613 +#: src/emc/usr_intf/gscreen/gscreen.glade:741 +#: src/emc/usr_intf/gscreen/gscreen.glade:869 +#: src/emc/usr_intf/gscreen/gscreen.glade:997 +#: src/emc/usr_intf/gscreen/gscreen.glade:1125 +msgid "ABS" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66921 +#: src/emc/usr_intf/gscreen/gscreen.glade:630 #, fuzzy -msgid "Calculated Axis SCALE:" -msgstr "Tengely:" +msgid "B" +msgstr "_B" -#: src/emc/usr_intf/pncconf/pncconf.glade:66934 -msgid "Khz" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:758 +#, fuzzy +msgid "C" +msgstr "_C" -#: src/emc/usr_intf/pncconf/pncconf.glade:66949 -msgid "sec" +#: src/emc/usr_intf/gscreen/gscreen.glade:886 +msgid "U" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67049 -msgid "Distance to acheave max speed:" +#: src/emc/usr_intf/gscreen/gscreen.glade:1014 +msgid "V" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67077 -#, fuzzy -msgid "Resolution:" -msgstr "Pozíció:" +#: src/emc/usr_intf/gscreen/gscreen.glade:1298 +msgid "G code" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67105 -msgid "mm / encoder pulse" +#: src/emc/usr_intf/gscreen/gscreen.glade:1392 +msgid "G Codes Active" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67123 -msgid "Motion Data" +#: src/emc/usr_intf/gscreen/gscreen.glade:1451 +msgid "MV:100%" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67151 +#: src/emc/usr_intf/gscreen/gscreen.glade:1470 #, fuzzy -msgid "gtk-cancel" -msgstr "Mégsem" +msgid " Mist" +msgstr "Elszívás" -#: src/emc/task/emctaskmain.cc:467 src/emc/task/emctaskmain.cc:500 -#: src/emc/task/emctaskmain.cc:427 src/emc/task/emctaskmain.cc:460 -#, fuzzy, c-format -msgid "%s exceeds +X limit" -msgstr "A program túllép a gép korlátain" +#: src/emc/usr_intf/gscreen/gscreen.glade:1481 +#, fuzzy +msgid " Flood " +msgstr "Folyadék" -#: src/emc/task/emctaskmain.cc:472 src/emc/task/emctaskmain.cc:505 -#: src/emc/task/emctaskmain.cc:432 src/emc/task/emctaskmain.cc:465 -#, fuzzy, c-format -msgid "%s exceeds +Y limit" -msgstr "A program túllép a gép korlátain" +#: src/emc/usr_intf/gscreen/gscreen.glade:1533 +#, fuzzy +msgid " At Speed " +msgstr "Túlhajtás (%):" -#: src/emc/task/emctaskmain.cc:477 src/emc/task/emctaskmain.cc:510 -#: src/emc/task/emctaskmain.cc:437 src/emc/task/emctaskmain.cc:470 -#, fuzzy, c-format -msgid "%s exceeds +Z limit" -msgstr "A program túllép a gép korlátain" +#: src/emc/usr_intf/gscreen/gscreen.glade:1546 +msgid " Jog mode" +msgstr "" -#: src/emc/task/emctaskmain.cc:482 src/emc/task/emctaskmain.cc:515 -#: src/emc/task/emctaskmain.cc:442 src/emc/task/emctaskmain.cc:475 -#, fuzzy, c-format -msgid "%s exceeds -X limit" -msgstr "A program túllép a gép korlátain" +#: src/emc/usr_intf/gscreen/gscreen.glade:1600 +msgid "10 DPM" +msgstr "" -#: src/emc/task/emctaskmain.cc:487 src/emc/task/emctaskmain.cc:520 -#: src/emc/task/emctaskmain.cc:447 src/emc/task/emctaskmain.cc:480 -#, fuzzy, c-format -msgid "%s exceeds -Y limit" -msgstr "A program túllép a gép korlátain" +#: src/emc/usr_intf/gscreen/gscreen.glade:1616 +msgid "10 Ipm" +msgstr "" -#: src/emc/task/emctaskmain.cc:492 src/emc/task/emctaskmain.cc:525 -#: src/emc/task/emctaskmain.cc:452 src/emc/task/emctaskmain.cc:485 -#, fuzzy, c-format -msgid "%s exceeds -Z limit" -msgstr "A program túllép a gép korlátain" +#: src/emc/usr_intf/gscreen/gscreen.glade:1690 +#, fuzzy +msgid "Status" +msgstr "Hűtés:" -#: src/emc/task/emctaskmain.cc:853 src/emc/task/emctaskmain.cc:810 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:1715 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2510 msgid "" -"command (%s) cannot be executed until the machine is out of E-stop and " -"turned on" +"Search\n" +" Text:" msgstr "" -#: src/emc/task/emctaskmain.cc:973 src/emc/task/emctaskmain.cc:930 -#, c-format -msgid "can't do that (%s) in manual mode" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1766 +#, fuzzy +msgid "Mode" +msgstr "Fő orsó:" -#: src/emc/task/emctaskmain.cc:1072 src/emc/task/emctaskmain.cc:1027 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter idle" +#: src/emc/usr_intf/gscreen/gscreen.glade:1782 +msgid "Main Level" msgstr "" -#: src/emc/task/emctaskmain.cc:1132 src/emc/task/emctaskmain.cc:1087 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter reading" +#: src/emc/usr_intf/gscreen/gscreen.glade:1823 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3678 +msgid "Themes" msgstr "" -#: src/emc/task/emctaskmain.cc:1216 src/emc/task/emctaskmain.cc:1169 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter paused" +#: src/emc/usr_intf/gscreen/gscreen.glade:1847 +#, fuzzy +msgid "Relative Text Color" +msgstr "Mutasd a relatív pozíciót" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1895 +msgid "DTG Text Color" msgstr "" -#: src/emc/task/emctaskmain.cc:1278 src/emc/task/emctaskmain.cc:1231 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter waiting" +#: src/emc/usr_intf/gscreen/gscreen.glade:1916 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3710 +msgid "Warning Audio" msgstr "" -#: src/emc/task/emctaskmain.cc:1370 src/emc/task/emctaskmain.cc:1321 -#, c-format -msgid "can't do that (%s) in MDI mode" +#: src/emc/usr_intf/gscreen/gscreen.glade:1926 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3723 +msgid "Alert Audio" msgstr "" -#: src/emc/task/emctaskmain.cc:2015 src/emc/task/emctaskmain.cc:1943 -msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" +#: src/emc/usr_intf/gscreen/gscreen.glade:1947 +msgid "Grid Size" msgstr "" -#: src/emc/task/emctaskmain.cc:2084 src/emc/task/emctaskmain.cc:2012 -msgid "Can't issue MDI command when not homed" +#: src/emc/usr_intf/gscreen/gscreen.glade:1986 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4119 +msgid "Starting RPM" msgstr "" -#: src/emc/task/emctaskmain.cc:2089 src/emc/task/emctaskmain.cc:2017 -msgid "Must be in MDI mode to issue MDI command" +#: src/emc/usr_intf/gscreen/gscreen.glade:2015 +msgid "Metric\n" msgstr "" -#: src/emc/task/emctaskmain.cc:2151 src/emc/task/emctaskmain.cc:2078 -msgid "Can't run a program when not homed" +#: src/emc/usr_intf/gscreen/gscreen.glade:2030 +msgid "" +" Display\n" +"Aux Screen" msgstr "" -#: src/emc/rs274ngc/interp_arc.cc:108 src/emc/rs274ngc/rs274ngc_return.hh:160 -msgid "Zero radius arc" +#: src/emc/usr_intf/gscreen/gscreen.glade:2045 +msgid "" +"Diameter\n" +" Mode" msgstr "" -#: src/emc/rs274ngc/interp_arc.cc:112 src/emc/rs274ngc/interp_arc.cc:279 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:2062 +#: src/emc/usr_intf/gscreen/gscreen.glade:3096 +#, fuzzy msgid "" -"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " -"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " -"rel_err=%.4f%%" +" Show\n" +"Offsets" +msgstr "Mutasd a _határokat" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2079 +msgid "" +"Show\n" +"DTG" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:90 src/emc/rs274ngc/interp_check.cc:89 -msgid "G4 not allowed with G2 or G3 because they both use P" +#: src/emc/usr_intf/gscreen/gscreen.glade:2096 +msgid "" +" Gscreen\n" +"Fullscreen" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:93 src/emc/rs274ngc/interp_check.cc:92 -msgid "Line with G10 does not have L1, L10, L11, L2, or L20" +#: src/emc/usr_intf/gscreen/gscreen.glade:2118 +msgid "" +" On M7 Use\n" +"Aux Coolant" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:94 src/emc/rs274ngc/interp_check.cc:93 -msgid "P value not an integer with G10" +#: src/emc/usr_intf/gscreen/gscreen.glade:2131 +msgid "" +" On M8 Use\n" +"Aux Coolant" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:95 src/emc/rs274ngc/interp_check.cc:94 -msgid "P value out of range (0-9) with G10 L2 or L20" +#: src/emc/usr_intf/gscreen/gscreen.glade:2144 +msgid "Hide Pointer" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:96 src/emc/rs274ngc/interp_check.cc:95 -msgid "P value out of range with G10 L1 or G10 L10" +#: src/emc/usr_intf/gscreen/gscreen.glade:2156 +msgid "" +" Desktop\n" +"Notification" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:100 src/emc/rs274ngc/interp_check.cc:99 -msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." +#: src/emc/usr_intf/gscreen/gscreen.glade:2228 +#: src/emc/usr_intf/gscreen/gscreen.glade:2368 +msgid "Debug" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:258 src/emc/rs274ngc/interp_check.cc:248 -msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2263 +#, fuzzy +msgid "Alarm History" +msgstr "Előzmények:" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2281 +msgid "" +" Launch\n" +"Halshow" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:264 src/emc/rs274ngc/interp_check.cc:254 -msgid "E word with no G76, M66, M67 or M68 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2293 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6449 +#, fuzzy +msgid "Calibration" +msgstr "Ismeretlen hiba %s" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2304 +msgid "Halmeter" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:269 src/emc/rs274ngc/interp_check.cc:259 -msgid "H word with no G43 or G76 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2315 +msgid "" +"linuxcnc\n" +" Status" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:275 src/emc/rs274ngc/interp_check.cc:265 -msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2327 +#, fuzzy +msgid "Halscope" +msgstr "_Halszkóp névjegy" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2338 +msgid "Ladder" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:281 src/emc/rs274ngc/interp_check.cc:271 -msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2386 +#, fuzzy +msgid "Tooleditor" +msgstr "Sz_erkesztés" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2404 +#, fuzzy +msgid "" +"Offset\n" +" Page" +msgstr "Eltolás" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2572 +#: src/emc/usr_intf/gscreen/gscreen.glade:2749 +#: src/emc/usr_intf/gscreen/gscreen.glade:3156 +msgid "\n" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:287 src/emc/rs274ngc/interp_check.cc:277 -msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2584 +msgid "Tool Setting" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:297 src/emc/rs274ngc/interp_check.cc:287 +#: src/emc/usr_intf/gscreen/gscreen.glade:2648 +#, fuzzy msgid "" -"L word with no G10, cutter compensation, canned cycle, digital/analog input, " -"or NURBS code" -msgstr "" +"Single\n" +" Step" +msgstr "Fő orsó lassítása [F11]" -#: src/emc/rs274ngc/interp_check.cc:309 src/emc/rs274ngc/interp_check.cc:299 +#: src/emc/usr_intf/gscreen/gscreen.glade:2661 msgid "" -"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " -"M53 M62 M63 M64 M65 M66 or user M code to use it" +"Run At\n" +" Line" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:314 -msgid "P value not an integer with M19 G2 or G3" +#: src/emc/usr_intf/gscreen/gscreen.glade:2673 +msgid "" +"Change \n" +" View" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:316 -msgid "P value must be 0,1,or 2 with M19" +#: src/emc/usr_intf/gscreen/gscreen.glade:2760 +msgid "Homing\n" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:318 src/emc/rs274ngc/interp_check.cc:304 -msgid "P value should be 1 or greater with G2 or G3" +#: src/emc/usr_intf/gscreen/gscreen.glade:2781 +msgid "" +"Ignore\n" +"Limits" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:326 +#: src/emc/usr_intf/gscreen/gscreen.glade:2810 +#, fuzzy msgid "" -"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " -"code that uses it" -msgstr "" +" Set\n" +"Override" +msgstr "Túlhajtás (%):" -#: src/emc/rs274ngc/interp_check.cc:336 -msgid "R value must be within 0..360 with M19" +#: src/emc/usr_intf/gscreen/gscreen.glade:2824 +msgid "Graphics\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:138 -msgid "You must specify both X and Y coordinates for Control Points" +#: src/emc/usr_intf/gscreen/gscreen.glade:2838 +msgid "" +"Menu\n" +"Level" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:141 -msgid "Can specify P without X and Y only for the first control point" +#: src/emc/usr_intf/gscreen/gscreen.glade:2851 +msgid "" +" Launch\n" +"Keyboard" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:144 -msgid "Must specify positive weight P for every Control Point" +#: src/emc/usr_intf/gscreen/gscreen.glade:2868 +msgid "Select Buttons" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:147 -msgid "Cannot make a NURBS with 0 feedrate" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2955 +#, fuzzy +msgid "" +"Unhome \n" +" All" +msgstr "Nullpont" -#: src/emc/rs274ngc/interp_convert.cc:182 -msgid "Cannot use G5.3 without G5.2 first" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2967 +#, fuzzy +msgid "" +"Unhome\n" +" Axis" +msgstr "Nullpont" -#: src/emc/rs274ngc/interp_convert.cc:183 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:2979 +#: src/emc/usr_intf/gscreen/gscreen.glade:3084 +#, fuzzy msgid "" -"You must specify a number of control points at least equal to the order L = %" -"d" -msgstr "" +"Toggle\n" +"Readout" +msgstr "Hűtés Ki/Be" -#: src/emc/rs274ngc/interp_convert.cc:212 -msgid "Cannot convert spline with cutter radius compensation" +#: src/emc/usr_intf/gscreen/gscreen.glade:3004 +msgid "" +"Jogging\n" +" Mode" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:222 -msgid "Splines must be in the XY plane" +#: src/emc/usr_intf/gscreen/gscreen.glade:3016 +msgid "" +"coordinate\n" +" System" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:227 -msgid "Splines may not have motion in Z, A, B, or C" +#: src/emc/usr_intf/gscreen/gscreen.glade:3060 +msgid "" +"Index\n" +" Tool" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:231 -msgid "Must specify both I and J with G5.1" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3072 +#, fuzzy +msgid "" +"Spindle\n" +"Controls" +msgstr "Folytonos" -#: src/emc/rs274ngc/interp_convert.cc:250 -msgid "Must specify both I and J, or neither" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3195 +#, fuzzy +msgid "Open" +msgstr "_Megnyitás" -#: src/emc/rs274ngc/interp_convert.cc:261 -msgid "Must specify both P and Q with G5" +#: src/emc/usr_intf/gscreen/gscreen.glade:3205 +msgid "" +" Block\n" +"Delete" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:362 +#: src/emc/usr_intf/gscreen/gscreen.glade:3217 msgid "" -"The move just after exiting cutter compensation mode must be straight, not " -"an arc" +"Optional\n" +" Stop" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:370 -msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" +#: src/emc/usr_intf/gscreen/gscreen.glade:3229 +msgid "" +" Full\n" +"View" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:382 -#: src/emc/rs274ngc/interp_convert.cc:4266 -#: src/emc/rs274ngc/interp_convert.cc:3909 -msgid "Cannot feed with zero spindle speed in feed per rev mode" +#: src/emc/usr_intf/gscreen/gscreen.glade:3265 +msgid "" +"Next\n" +" Tab" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:393 -#: src/emc/rs274ngc/interp_convert.cc:399 -#: src/emc/rs274ngc/interp_convert.cc:408 -#: src/emc/rs274ngc/interp_convert.cc:414 -#: src/emc/rs274ngc/interp_convert.cc:423 -#: src/emc/rs274ngc/interp_convert.cc:429 -#, c-format -msgid "%c word missing in absolute center arc" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3285 +#, fuzzy +msgid "" +" Feed\n" +"Override" +msgstr "Túlhajtás (%):" -#: src/emc/rs274ngc/interp_convert.cc:649 +#: src/emc/usr_intf/gscreen/gscreen.glade:3298 +#, fuzzy msgid "" -"Radius of cutter compensation entry arc is not greater than the tool radius" -msgstr "" +"Spindle\n" +"Override" +msgstr "Túlhajtás (%):" -#: src/emc/rs274ngc/interp_convert.cc:868 -#: src/emc/rs274ngc/interp_convert.cc:878 src/emc/rs274ngc/interp_queue.cc:592 -#: src/emc/rs274ngc/interp_queue.cc:541 +#: src/emc/usr_intf/gscreen/gscreen.glade:3311 +#, fuzzy msgid "" -"Arc move in concave corner cannot be reached by the tool without gouging" -msgstr "" +" Rapid\n" +"Override" +msgstr "Túlhajtás (%):" -#: src/emc/rs274ngc/interp_convert.cc:904 -msgid "Arc to arc motion is invalid because the arcs have the same center" +#: src/emc/usr_intf/gscreen/gscreen.glade:3332 +msgid "" +" Jog\n" +"Speed" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:907 +#: src/emc/usr_intf/gscreen/gscreen.glade:3345 +#, fuzzy msgid "" -"Arc to arc motion makes a corner the compensated tool can't fit in without " -"gouging" -msgstr "" +" Jog\n" +"Increments" +msgstr "Lépes növelése" -#: src/emc/rs274ngc/interp_convert.cc:1036 -#: src/emc/rs274ngc/interp_convert.cc:1037 -#: src/emc/rs274ngc/interp_convert.cc:1038 -#: src/emc/rs274ngc/interp_convert.cc:3733 -#: src/emc/rs274ngc/interp_convert.cc:3736 -#: src/emc/rs274ngc/interp_convert.cc:3739 src/emc/rs274ngc/interp_find.cc:97 -#: src/emc/rs274ngc/interp_convert.cc:3376 -#: src/emc/rs274ngc/interp_convert.cc:3379 -#: src/emc/rs274ngc/interp_convert.cc:3382 -#, c-format -msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" +#: src/emc/usr_intf/gscreen/gscreen.glade:3361 +msgid "" +"Adjust\n" +"Rotary" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1494 -#: src/emc/rs274ngc/interp_convert.cc:1466 -msgid "Cannot change control mode with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3383 +msgid "" +"Change\n" +" View" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1607 -#: src/emc/rs274ngc/interp_convert.cc:1579 -msgid "Cannot change coordinate systems with cutter radius compensation on" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3431 +#, fuzzy +msgid "" +" Pan\n" +"Vertical" +msgstr "Vertikális" -#: src/emc/rs274ngc/interp_convert.cc:1851 -#: src/emc/rs274ngc/interp_convert.cc:1823 -#, c-format -msgid "G%d.1 with no D word" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3444 +#, fuzzy +msgid "" +" Pan\n" +"Horizontal" +msgstr "Horizontális" -#: src/emc/rs274ngc/interp_convert.cc:1854 -#: src/emc/rs274ngc/interp_convert.cc:1826 -#, c-format -msgid "G%d.1 with L word, but plane is not G18" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3457 +#, fuzzy +msgid "" +" Rotate\n" +"Horiontal" +msgstr "Horizontális" -#: src/emc/rs274ngc/interp_convert.cc:1865 -#: src/emc/rs274ngc/interp_convert.cc:1837 -#, c-format -msgid "G%d requires D word to be a whole number" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3470 +#, fuzzy +msgid "" +" Rotate\n" +"Vertical" +msgstr "Vertikális" -#: src/emc/rs274ngc/interp_convert.cc:1872 -#: src/emc/rs274ngc/interp_convert.cc:1844 -#, c-format -msgid "G%d with lathe tool, but plane is not G18" +#: src/emc/usr_intf/gscreen/gscreen.glade:3491 +msgid "" +"Search\n" +" Bwd" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2271 -#: src/emc/rs274ngc/interp_convert.cc:2228 -msgid "Cannot set reference point with cutter compensation in effect" +#: src/emc/usr_intf/gscreen/gscreen.glade:3503 +msgid "" +"Search\n" +" Fwd" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2786 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:3561 +#, fuzzy msgid "" -"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" -msgstr "" +" Reload\n" +"Program" +msgstr "Program indítás" -#: src/emc/rs274ngc/interp_convert.cc:2787 -#, c-format -msgid "BUG: restore from level %d !?" +#: src/emc/usr_intf/gscreen/gscreen.glade:3604 +msgid "" +" Clear\n" +"status" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2788 -#, c-format -msgid "BUG: restore to level %d !?" +#: src/emc/usr_intf/gscreen/gscreen.glade:3634 +msgid "G54" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2807 -#, c-format -msgid "M7x: restore_settings G20/G21 failed: '%s'" +#: src/emc/usr_intf/gscreen/gscreen.glade:3650 +msgid "calc" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2819 -#, c-format -msgid "M7x: restore_settings failed executing: '%s': %s" +#: src/emc/usr_intf/gscreen/gscreen.glade:3725 +msgid "test" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2885 -#: src/emc/rs274ngc/interp_convert.cc:2628 -msgid "Cannot set motion output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3728 +msgid "test2" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2886 -#: src/emc/rs274ngc/interp_convert.cc:2629 -msgid "No valid P word with M62" +#: src/emc/usr_intf/gscreen/gscreen.glade:3778 +msgid "Data Entry" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2890 -#: src/emc/rs274ngc/interp_convert.cc:2633 -msgid "Cannot set motion digital output with cutter radius compensation on" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3805 +#, fuzzy +msgid "Calculator Entry" +msgstr "Hűtés:" -#: src/emc/rs274ngc/interp_convert.cc:2891 -#: src/emc/rs274ngc/interp_convert.cc:2634 -msgid "No valid P word with M63" +#: src/emc/usr_intf/gscreen/gscreen.glade:3894 +#, fuzzy +msgid "Program Restart" +msgstr "Mutasd a _határokat" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3909 +msgid "" +"Highlighting the run-at-line with the\n" +"up / down buttons or entering the line\n" +"directly." msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2895 -#: src/emc/rs274ngc/interp_convert.cc:2900 -#: src/emc/rs274ngc/interp_convert.cc:2638 -#: src/emc/rs274ngc/interp_convert.cc:2643 -msgid "Cannot set auxiliary digital output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3923 +msgid "" +"Line\n" +" Up" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2896 -#: src/emc/rs274ngc/interp_convert.cc:2639 -msgid "No valid P word with M64" +#: src/emc/usr_intf/gscreen/gscreen.glade:3946 +msgid "" +" Line\n" +"Down" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2901 -#: src/emc/rs274ngc/interp_convert.cc:2644 -msgid "No valid P word with M65" +#: src/emc/usr_intf/gscreen/gscreen.glade:4028 +msgid "S 1000" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2931 -#: src/emc/rs274ngc/interp_convert.cc:2673 -msgid "invalid P-word with M66" +#: src/emc/usr_intf/gscreen/gscreen.glade:4098 +msgid " FWD" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2946 -#: src/emc/rs274ngc/interp_convert.cc:2688 -msgid "Cannot wait for digital input with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:4133 +msgid " REV" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2958 -#: src/emc/rs274ngc/interp_convert.cc:2700 -msgid "Cannot wait for analog input with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen2.glade:35 +msgid "screen 2" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2973 -#: src/emc/rs274ngc/interp_convert.cc:2714 -msgid "Cannot set motion analog output with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:403 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:884 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:923 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:934 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:949 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1099 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1102 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1156 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1163 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1166 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2148 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2157 +msgid "**** GMOCCAPY INFO ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2974 -#: src/emc/rs274ngc/interp_convert.cc:2715 -msgid "Invalid analog index with M67" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:404 +msgid "**** no valid probe config in INI File ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2980 -#: src/emc/rs274ngc/interp_convert.cc:2721 -msgid "Cannot set auxiliary analog output with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:405 +msgid "**** disabled tool measurement ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2981 -#: src/emc/rs274ngc/interp_convert.cc:2722 -msgid "Invalid analog index with M68" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:770 +msgid "**** GMOCCAPY ERROR : ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3012 -msgid "Need non-negative Q-word to specify tool number with M61" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:772 +#, python-format +msgid "" +"**** gmoccapy can only handle 4 axis, ****\n" +"**** but you have given %d through your INI file ****\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3087 -msgid "Q word with M19 requires a value > 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:774 +msgid "" +"**** gmoccapy will not start ****\n" +"\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3115 -msgid "Cannot restore context from invalid stack frame - missing M70/M73?" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:786 +#, fuzzy, python-format +msgid "Home axis %s" +msgstr "Nullpont" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:885 +msgid "**** To many increments given in INI File for this screen ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3156 -#: src/emc/rs274ngc/interp_convert.cc:3173 -#: src/emc/rs274ngc/interp_convert.cc:3188 -#: src/emc/rs274ngc/interp_convert.cc:3202 -#: src/emc/rs274ngc/interp_convert.cc:3216 -#: src/emc/rs274ngc/interp_convert.cc:2806 -#: src/emc/rs274ngc/interp_convert.cc:2823 -#: src/emc/rs274ngc/interp_convert.cc:2837 -#: src/emc/rs274ngc/interp_convert.cc:2851 -#: src/emc/rs274ngc/interp_convert.cc:2865 -msgid "Cannot enable overrides with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:886 +msgid "**** Only the first 10 will be reachable through this screen ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3163 -#: src/emc/rs274ngc/interp_convert.cc:3178 -#: src/emc/rs274ngc/interp_convert.cc:3193 -#: src/emc/rs274ngc/interp_convert.cc:3207 -#: src/emc/rs274ngc/interp_convert.cc:3221 -#: src/emc/rs274ngc/interp_convert.cc:2813 -#: src/emc/rs274ngc/interp_convert.cc:2828 -#: src/emc/rs274ngc/interp_convert.cc:2842 -#: src/emc/rs274ngc/interp_convert.cc:2856 -#: src/emc/rs274ngc/interp_convert.cc:2870 -msgid "Cannot disable overrides with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:924 +msgid "**** gmoccapy screen 2 found ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3325 -#: src/emc/rs274ngc/interp_convert.cc:3326 -#: src/emc/rs274ngc/interp_convert.cc:3327 -#: src/emc/rs274ngc/interp_convert.cc:2970 -#: src/emc/rs274ngc/interp_convert.cc:2971 -#: src/emc/rs274ngc/interp_convert.cc:2972 -#, c-format -msgid "Indexing axis %c can only be moved with G0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:929 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1055 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1177 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1225 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1844 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2190 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2200 +msgid "**** GMOCCAPY ERROR ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3334 -#: src/emc/rs274ngc/interp_convert.cc:3336 -#: src/emc/rs274ngc/interp_convert.cc:3338 -#: src/emc/rs274ngc/interp_convert.cc:2979 -#: src/emc/rs274ngc/interp_convert.cc:2981 -#: src/emc/rs274ngc/interp_convert.cc:2983 -#, c-format -msgid "Indexing axis %c can only be moved alone" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:930 +msgid "**** screen 2 GLADE ERROR: ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3433 -#: src/emc/rs274ngc/interp_convert.cc:3076 -msgid "Cannot probe with feed per rev mode" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:935 +msgid "**** No gmoccapy2.glade file present ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3481 -#: src/emc/rs274ngc/interp_convert.cc:3124 -msgid "Cannot change retract mode with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:950 +msgid "**** Invalid embeded tab configuration ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3515 -#: src/emc/rs274ngc/interp_convert.cc:3158 -msgid "G10 L1 without offsets has no effect" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:951 +msgid "**** No tabs will be added! ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3621 -#: src/emc/rs274ngc/interp_convert.cc:3264 -msgid "Q number in G10 is not an integer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:964 +msgid "ERROR, trying to initialize the user tabs or panaels, check for typos" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3622 -#: src/emc/rs274ngc/interp_convert.cc:3265 -msgid "Invalid tool orientation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1056 +msgid "**** Did not find a toolfile file in [EMCIO] TOOL_TABLE ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3721 -#: src/emc/rs274ngc/interp_convert.cc:3364 -msgid "I J words not allowed with G10 L2" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1100 +msgid "**** audio available! ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3742 -#: src/emc/rs274ngc/interp_convert.cc:3385 -msgid "" -"Cannot change the active coordinate system with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1103 +msgid "**** no audio available! ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3750 -#: src/emc/rs274ngc/interp_convert.cc:3393 -msgid "R not allowed in G10 L20" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1104 +msgid "**** PYGST libray not installed? ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4323 -#: src/emc/rs274ngc/interp_convert.cc:3966 -msgid "Spindle not turning in G33" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1157 +msgid "**** virtual keyboard program found : " msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4333 -#: src/emc/rs274ngc/interp_convert.cc:3976 -msgid "Spindle not turning in G33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1164 +msgid "**** virtual keyboard program found : " msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4376 -#: src/emc/rs274ngc/interp_convert.cc:4019 -msgid "BUG: An axis incorrectly moved along with an indexer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1167 +msgid "" +"**** No virtual keyboard installed, we checked for and ." msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4389 -#: src/emc/rs274ngc/interp_convert.cc:4032 -msgid "BUG: trying to index incorrect axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1178 +msgid "**** Error with launching virtual keyboard," msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4481 -#: src/emc/rs274ngc/interp_convert.cc:4124 -msgid "Cannot use G76 threading cycle with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1179 +msgid "**** is onboard or matchbox-keyboard installed? ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4484 -#: src/emc/rs274ngc/interp_convert.cc:4127 -msgid "In G76, I must not be 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1193 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1875 +msgid "interrupt running macro" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4486 -#: src/emc/rs274ngc/interp_convert.cc:4129 -msgid "In G76, J must be greater than 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1226 +msgid "**** Did not find a parameter file in [RS274NGC] PARAMETER_FILE ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4488 -#: src/emc/rs274ngc/interp_convert.cc:4131 -msgid "In G76, K must be greater than J" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1294 +msgid "Select the file you want to be loaded at program start" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4631 -#: src/emc/rs274ngc/interp_convert.cc:4274 -msgid "" -"Length of cutter compensation entry move is not greater than the tool radius" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1329 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1353 +#, python-format +msgid "**** GMOCCAPY ERROR **** /n Message type %s not suported" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4850 -#: src/emc/rs274ngc/interp_convert.cc:4493 -msgid "Zero degree inside corner is invalid for cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1462 +msgid "Unknown error type and no error text given" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4888 -#: src/emc/rs274ngc/interp_convert.cc:4896 -#: src/emc/rs274ngc/interp_convert.cc:4531 -#: src/emc/rs274ngc/interp_convert.cc:4539 -msgid "" -"Arc to straight motion makes a corner the compensated tool can't fit in " -"without gouging" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1478 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1840 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1847 +msgid "Important Warning" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4980 -#: src/emc/rs274ngc/interp_convert.cc:4623 -msgid "Cannot change tools with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1498 +msgid "ERROR : External ESTOP is set, could not change state!" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:5101 -#: src/emc/rs274ngc/interp_convert.cc:4743 -msgid "Cannot change tool offset with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1511 +msgid "ERROR : Could not switch the machine on, is limit switch aktivated?" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:590 src/emc/rs274ngc/interp_queue.cc:539 -#, c-format -msgid "" -"BUG: cutter compensation has generated an invalid arc with mismatched radii " -"r1 %f r2 %f\n" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1730 +msgid "It is not possible to change to MDI Mode at the moment" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:612 src/emc/rs274ngc/interp_queue.cc:561 -msgid "BUG: Unsupported plane in cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1754 +msgid "It is not possible to change to Auto Mode at the moment" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:622 src/emc/rs274ngc/interp_queue.cc:571 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1838 msgid "" -"Straight traverse in concave corner cannot be reached by the tool without " -"gouging" +"\n" +"**** No subroutine folder or program prefix is given in the ini file **** \n" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:650 src/emc/rs274ngc/interp_queue.cc:599 -#, c-format -msgid "BUG: Unsupported plane [%d] in cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1839 +msgid "**** so the corresponding file could not be found ****" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:661 src/emc/rs274ngc/interp_queue.cc:610 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1845 +#, python-format msgid "" -"Straight feed in concave corner cannot be reached by the tool without gouging" +"\n" +"**** File %s of the macro could not be found ****\n" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:628 -msgid "Cannot feed with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1846 +#, python-format +msgid "**** we searched in subdirectory %s ****" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:629 -msgid "Cannot use inverse time feed with canned cycles" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1851 +msgid "Enter value:" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:630 -msgid "Cannot use canned cycles with cutter compensation on" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1852 +#, fuzzy, python-format +msgid "Set parameter %s to:" +msgstr " Para_méterek " -#: src/emc/rs274ngc/interp_cycles.cc:818 -msgid "G17 canned cycle is not possible on a machine without Z axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1854 +msgid "conversion error" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1004 -#: src/emc/rs274ngc/interp_cycles.cc:1001 -msgid "G17.1 canned cycle is not possible on a machine without W axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1855 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3610 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3634 +msgid "Conversion error !" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1220 -#: src/emc/rs274ngc/interp_cycles.cc:1217 -msgid "G19 canned cycle is not possible on a machine without X axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1856 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3299 +msgid "" +"Please enter only numerical values\n" +"Values have not been applied" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1388 -#: src/emc/rs274ngc/interp_cycles.cc:1385 -msgid "G19.1 canned cycle is not possible on a machine without U axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2149 +#, python-brace-format +msgid "**** replaced {0} to {1} ****" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1613 -#: src/emc/rs274ngc/interp_cycles.cc:1610 -msgid "G18 canned cycle is not possible on a machine without Y axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2158 +msgid "" +"\n" +"**** found more than 9 macros, only the first 9 will be used ****" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1780 -#: src/emc/rs274ngc/interp_cycles.cc:1777 -msgid "G18.1 canned cycle is not possible on a machine without V axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2191 +#, python-format +msgid "**** %s ****" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:170 -msgid "Cannot use polar coordinates with G53" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2201 +#, python-format +msgid "**** No widget named: %s to sensitize ****" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 -#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 -#: src/emc/rs274ngc/interp_find.cc:347 -msgid "Cannot specify X or Y words with polar coordinate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2366 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1561 +msgid "No tool description available" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:272 -msgid "Must specify angle in polar coordinate if at the origin" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2591 +#, python-format +msgid "Halo, welcome to the test message %d" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:338 -msgid "" -"Incremental motion with polar coordinates is indeterminate when at the origin" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2732 +msgid "Hal Pin is low, Access denied" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:348 -msgid "G91 motion with polar coordinates is indeterminate when at the origin" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2734 +msgid "wrong code entered, Access denied" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:720 -#, c-format -msgid "Requested tool %d not found in the tool table" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2735 +msgid "Just to warn you" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:154 -#: src/emc/rs274ngc/interp_internal.cc:151 -msgid "Cannot use polar coordinate on a machine lacking X or Y axes" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2810 +msgid "ERROR : No limit switch is active, ignore limits will not be set." msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:155 -#: src/emc/rs274ngc/interp_internal.cc:152 -msgid "Cannot use polar coordinate except in G17 plane" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2850 +#, fuzzy +msgid "Classicladder real-time component not detected" +msgstr "Valós idejű komponens nincs betöltve" -#: src/emc/rs274ngc/interp_internal.cc:156 -#: src/emc/rs274ngc/interp_internal.cc:153 -msgid "Cannot specify both polar coordinate and X word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2937 +msgid "Something went wrong, we have an unknown spindle widget" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:157 -#: src/emc/rs274ngc/interp_internal.cc:154 -msgid "Cannot specify both polar coordinate and Y word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3046 +msgid "Do you really want to delete the MDI history?\n" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:178 -#: src/emc/rs274ngc/interp_internal.cc:190 -#: src/emc/rs274ngc/interp_internal.cc:203 -#: src/emc/rs274ngc/interp_internal.cc:175 -#: src/emc/rs274ngc/interp_internal.cc:187 -#: src/emc/rs274ngc/interp_internal.cc:200 -msgid "Polar coordinates can only be used for motion" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3047 +msgid "this will not delete the MDI History file, but will\n" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1143 src/emc/rs274ngc/interp_read.cc:1147 -#: src/emc/rs274ngc/interp_read.cc:1112 src/emc/rs274ngc/interp_read.cc:1116 -#, c-format -msgid "Bad character '\\%03o' used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3048 +msgid "delete the listbox entries for this session" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1147 src/emc/rs274ngc/interp_read.cc:1116 -#, c-format -msgid "Bad character '%c' used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3049 +msgid "Attention!!" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1671 src/emc/rs274ngc/interp_read.cc:1623 -msgid "Left bracket missing after 'while'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3076 +msgid "This button will show or hide the keyboard" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1686 src/emc/rs274ngc/interp_read.cc:1638 -msgid "Left bracket missing after 'repeat'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3196 +#, python-format +msgid "Offset %s could not be set, because off unknown axis" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1701 src/emc/rs274ngc/interp_read.cc:1653 -msgid "Left bracket missing after 'if'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3197 +msgid "Wrong offset setting!" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1716 src/emc/rs274ngc/interp_read.cc:1668 -msgid "Left bracket missing after 'elseif'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3202 +msgid "Enter value for diameter" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1919 src/emc/rs274ngc/interp_read.cc:2174 -msgid "Cannot read current position with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3203 +msgid "Set diameter to:" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1934 src/emc/rs274ngc/interp_read.cc:2189 -msgid "Expected # reading parameter" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3206 +msgid "Enter value for radius" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1936 src/emc/rs274ngc/interp_read.cc:2191 -msgid "Expected ] reading bracketed parameter" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3207 +msgid "Set radius to:" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2608 src/emc/rs274ngc/interp_read.cc:2881 -#, c-format -msgid "bad number format (conversion failed) parsing '%s'" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3210 +#, fuzzy, python-format +msgid "Enter value for axis %s" +msgstr "4. tengely beindítva" -#: src/emc/rs274ngc/interp_read.cc:2609 src/emc/rs274ngc/interp_read.cc:2882 -#, c-format -msgid "bad number format (trailing characters) parsing '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3211 +#, python-format +msgid "Set axis %s to:" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2699 src/emc/rs274ngc/interp_read.cc:2972 -msgid "Calculation resulted in 'not a number'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3215 +msgid "Conversion error in btn_set_value" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2701 src/emc/rs274ngc/interp_read.cc:2974 -msgid "Calculation resulted in 'infinity'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3216 +msgid "Conversion error in btn_set_value!" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2994 src/emc/rs274ngc/interp_read.cc:3268 -#, c-format -msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3217 +msgid "Please enter only numerical values. Values have not been applied" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3106 src/emc/rs274ngc/interp_read.cc:3391 -msgid "Multiple U words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3232 +msgid "" +"you did not selected a system to be changed to, so nothing will be changed" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3122 src/emc/rs274ngc/interp_read.cc:3407 -msgid "Multiple V words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3640 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3654 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3658 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3673 +msgid "Important Warning!" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3138 src/emc/rs274ngc/interp_read.cc:3423 -msgid "Multiple W words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3284 +msgid "Enter the block height" msgstr "" -#: src/emc/rs274ngc/interp_o_word.cc:95 src/emc/rs274ngc/interp_o_word.cc:104 -#, c-format -msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3285 +msgid "Block height measured from base table" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:161 -#: src/emc/rs274ngc/interp_read.cc:2093 -#, c-format -msgid "Named parameter #<%s> not defined" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3297 +msgid "Conversion error in btn_block_height" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:191 -#, c-format -msgid "cant open ini file '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3298 +msgid "Conversion error in btn_block_height!" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:208 -#, c-format -msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3536 +msgid "Please remove the mounted tool and press OK when done" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:232 -#, c-format -msgid "fetch_hal_param: hal_init(%s): %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3539 +#, python-brace-format +msgid "" +"Please change to tool\n" +"\n" +"# {0:d} {1}\n" +"\n" +" then click OK." msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:233 -#, c-format -msgid "fetch_hal_param: hal_ready(): %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3549 +msgid "Tool Change has been aborted!\n" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:370 -#: src/emc/rs274ngc/interp_read.cc:1889 src/emc/rs274ngc/interp_read.cc:1932 -#, c-format -msgid "Internal error: Could not assign #<%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3550 +msgid "The old tool will remain set!" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:378 -#, c-format -msgid "Cannot assign to read-only parameter #<%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3570 +msgid "No or more than one tool selected in tool table" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:682 -#, c-format -msgid "BUG: lookup_named_param(%s): unhandled index=%fn" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3571 +msgid "Please select only one tool in the table" msgstr "" -#: src/emc/rs274ngc/rs274ngc_pre.cc:1269 src/emc/rs274ngc/rs274ngc_pre.cc:1344 -#: src/emc/rs274ngc/rs274ngc_pre.cc:897 -msgid "Queue is not empty after tool change" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3573 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3580 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3589 +msgid "Warning Tool Touch off not possible!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_pre.cc:1648 src/emc/rs274ngc/rs274ngc_pre.cc:1145 -#, c-format -msgid "Unable to open parameter file: '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3577 +msgid "you can not touch of a tool, witch is not mounted in the spindle" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:4 -msgid "A file is already open" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3578 +msgid "your selection has been reseted to the tool in spindle" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:5 -msgid "All axes missing with g92" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3586 +msgid "" +"Tool touch off is not possible with cutter radius compensation switched on!\n" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:6 -msgid "All axes missing with motion code" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3587 +msgid "Please emit an G40 before tool touch off" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:7 -msgid "Arc radius too small to reach end point" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3597 +msgid "Real big error!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:8 -msgid "Argument to acos out of range" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3598 +msgid "" +"You managed to come to a place that is not possible in on_btn_tool_touchoff" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:9 -msgid "Argument to asin out of range" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3602 +#, python-format +msgid "Enter value for axis %s to set:" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:10 -msgid "Attempt to divide by zero" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3603 +#, python-brace-format +msgid "Set parameter of tool {0:d} and axis {1} to:" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:11 -msgid "Attempt to raise negative to non integer power" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3608 +#, python-format +msgid "Conversion error because of wrong entry for touch off axis %s" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:12 -msgid "Bad format unsigned integer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3628 +msgid "Enter the tool number as integer " msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:13 -msgid "Bad number format" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3629 +#, fuzzy +msgid "Select the tool to change" +msgstr "Válaszd ki a vizsgálandó elemet" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3631 +msgid "Conversion error because of wrong entry for tool number\n" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:14 -msgid "Bug bad g code modal group 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3632 +msgid "enter only integer nummbers" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:15 -msgid "Bug code not g0 or g1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3657 +msgid "Selected tool is already in spindle, no change needed." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:16 -msgid "Bug code not g17 g18 or g19" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3653 +msgid "" +"you selected no or more than one tool, the tool selection must be unique" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:17 -msgid "Bug code not g20 or g21" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3672 +msgid "Could not understand the entered tool number. Will not change anything" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:18 -msgid "Bug code not g28 or g30" +#: src/emc/usr_intf/gmoccapy/dialogs.py:33 +#: src/emc/usr_intf/gmoccapy/dialogs.py:38 +msgid "Enter System Unlock Code" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:19 -msgid "Bug code not g2 or g3" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:20 -msgid "Bug code not g4 g10 g28 g30 g53 or g92 series" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter the value to set" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:21 -msgid "Bug code not g61 g61.1 or g64" +#: src/emc/usr_intf/gmoccapy/notification.py:205 +#, python-format +msgid "Error trying to delet the message with number %s" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:22 -msgid "Bug code not g90 or g91" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:409 +msgid "left rotate, middle move, right zoom" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:23 -msgid "Bug code not g98 or g99" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:413 +msgid "left zoom, middle move, right rotate" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:24 -msgid "Bug code not in g92 series" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:417 +msgid "left move, middle rotate, right zoom" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:25 -msgid "Bug code not in range g54 to g593" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:421 +msgid "left zoom, middle rotate, right move" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:26 -msgid "Bug code not m0 m1 m2 m30 m60" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:425 +msgid "left move, middle zoom, right rotate" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:27 -msgid "Bug distance mode not g90 or g91" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:429 +msgid "left rotate, middle zoom, right move" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:28 -msgid "Bug function should not have been called" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:526 +#, fuzzy +msgid "clear plot" +msgstr "Grafikus szimuláció törlése" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:585 +#, fuzzy +msgid "view perspective" +msgstr "Perspektíva nézet" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:608 +msgid "view along the X axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:29 -msgid "Bug in tool radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:633 +msgid "view along the Y axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:30 -msgid "Bug plane not xy yz or xz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:658 +msgid "view along the Z axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:31 -msgid "Bug side not right or left" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:685 +msgid "Show or hide tool path" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:32 -msgid "Bug unknown motion code" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:708 +msgid "Show or hide dimensions" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:33 -msgid "Bug unknown operation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:731 +msgid "" +"view along the Y axis from positive to negative as viewn for a back tool " +"lathe" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:34 -msgid "Cannot change axis offsets with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:791 +#, fuzzy +msgid "Offset Page" +msgstr "Eltolás" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:809 +#, fuzzy +msgid "Tooledit" +msgstr "Hűtés:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:831 +#, fuzzy +msgid "File Selection" +msgstr "Fő orsó fék bekapcsolva" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:869 +msgid "Toggle between metric and imperial units" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:35 -msgid "Cannot create backup file" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:887 +msgid "Switch DRO to DTG mode" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:36 -msgid "Cannot do g1 with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:905 +msgid "Toggle between machine and relative coordinates" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:37 -msgid "Cannot do zero repeats of cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:928 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:946 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:963 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:980 +msgid "Klick to toggle through the DRO modes" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:38 -msgid "Cannot make arc with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1253 +#, fuzzy +msgid "Ignore limits" +msgstr "Határok módosítása" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1321 +#, fuzzy +msgid "Jogging" +msgstr "Fő orsó fék bekapcsolva" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1430 +msgid "Information over the tool in spindle" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:39 -msgid "Cannot open backup file" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1448 +#, fuzzy +msgid "Tool no." +msgstr "Hűtés:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1474 +msgid "Diameter" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:40 -msgid "Cannot open variable file" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1503 +#, fuzzy +msgid "offset z" +msgstr "Eltolás" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1532 +#, fuzzy +msgid "offset x" +msgstr "Eltolás" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1580 +#, fuzzy +msgid "Tool information" +msgstr "Fő orsó fék bekapcsolva" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1592 +msgid "G and M code information as well as speed and feed" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:41 -msgid "Cannot probe with cutter radius comp on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1611 +#, fuzzy +msgid "active_mcodes_label" +msgstr "Aktuális G-kódok:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1663 +#, fuzzy +msgid "active_gcodes_label" +msgstr "Aktuális G-kódok:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1717 +#, fuzzy +msgid "G-Code" +msgstr "Fő orsó:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1730 +msgid "The name and location of the loaded program" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:42 -msgid "Cannot probe with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1742 +#, fuzzy +msgid "No Program loaded" +msgstr "_Program" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1750 +#, fuzzy +msgid "Program" +msgstr "_Program" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1800 +msgid "Vel." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:43 -msgid "Cannot put a b in canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1814 +msgid "Displays the current velocity" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:44 -msgid "Cannot put a c in canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1838 +msgid "adjust max vel of machine" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:45 -msgid "Cannot put an a in canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1854 +msgid "Max. Velocity" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:46 -msgid "Cannot turn cutter radius comp on when on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1885 +msgid "Displayes the programmed feed rate" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:47 -msgid "Cannot use axis values with g80" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1904 +#, fuzzy +msgid "reset feed override to 100 %" +msgstr "Túlhajtás (%):" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1922 +#, fuzzy +msgid "adjust feed override" +msgstr "Túlhajtás (%):" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1941 +#, fuzzy +msgid "Feed Override [%]" +msgstr "Túlhajtás (%):" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2034 +#, fuzzy +msgid "Cooling" +msgstr "Hűtés:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2285 +#, fuzzy +msgid "Spindle [rpm]" +msgstr "Fő orsó:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2377 +msgid "" +"Search\n" +" back" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:48 -msgid "Cannot use axis values without a g code that uses them" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2394 +msgid "" +"Search\n" +" fwd" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:49 -msgid "Cannot use g28 or g30 with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2446 +#, fuzzy +msgid "" +"Replace\n" +" Text:" +msgstr "Relatív" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2456 +#, fuzzy +msgid "" +"Replace\n" +" All" +msgstr "Relatív" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2470 +msgid "" +"Ignore\n" +" Case" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:50 -msgid "Cannot use g53 incremental" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2616 +msgid "Start as fullscreen" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:51 -msgid "Cannot use g53 with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2631 +msgid "Start maximized" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:52 -msgid "Cannot use two g codes that both use axis values" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2646 +msgid "Start as window" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:53 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2670 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4426 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4943 #, fuzzy -msgid "Command too long" -msgstr "Mutasd a programozott pozíciót" +msgid "X Pos." +msgstr " Poz " -#: src/emc/rs274ngc/rs274ngc_return.hh:54 -msgid "Current point same as end point of arc" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2683 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4437 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4928 +#, fuzzy +msgid "Y Pos." +msgstr " Poz " -#: src/emc/rs274ngc/rs274ngc_return.hh:55 -msgid "Dwell time missing with g4" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2698 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4855 +msgid "Width" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:56 -msgid "Dwell time p word missing with g82" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2713 +msgid "Height" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:57 -msgid "Dwell time p word missing with g86" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2811 +msgid "hide cursor" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:58 -msgid "Dwell time p word missing with g88" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2830 +#, fuzzy +msgid "Main Window" +msgstr "Fő orsó:" -#: src/emc/rs274ngc/rs274ngc_return.hh:59 -msgid "Dwell time p word missing with g89" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2857 +#, fuzzy +msgid "Show keyboard on offset" +msgstr "Mutasd a _határokat" -#: src/emc/rs274ngc/rs274ngc_return.hh:60 -msgid "Equal sign missing in parameter setting" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2871 +msgid "Show keyboard on tooledit" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:61 -msgid "F word missing with inverse time arc move" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2885 +msgid "Show keyboard on MDI" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:62 -msgid "F word missing with inverse time g1 move" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2899 +msgid "Show keyboard on EDIT" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:63 -msgid "File ended with no percent sign" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2913 +msgid "Show keyboard on load file" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:64 -msgid "File ended with no percent sign or program end" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2931 +#, fuzzy +msgid "Keyboard" +msgstr "Hűtés:" -#: src/emc/rs274ngc/rs274ngc_return.hh:65 -msgid "File name too long" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2959 +#, fuzzy +msgid "show preview" +msgstr "Oldal nézet" -#: src/emc/rs274ngc/rs274ngc_return.hh:66 -msgid "G code out of range" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2973 +#, fuzzy +msgid "show offsets" +msgstr "Mutasd a _határokat" -#: src/emc/rs274ngc/rs274ngc_return.hh:67 -msgid "I word given for arc in yz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2991 +msgid "On Touch off" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:68 -msgid "I word missing with g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3005 +msgid "" +" Display \n" +"Aux Screen" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:69 -msgid "J word given for arc in xz plane" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3052 +#, fuzzy +msgid "Relative Color" +msgstr "Mutasd a relatív pozíciót" -#: src/emc/rs274ngc/rs274ngc_return.hh:70 -msgid "J word missing with g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3079 +msgid "Absolute Color" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:71 -msgid "K word given for arc in xy plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3110 +msgid "DTG Color" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:72 -msgid "K word missing with g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3139 +msgid "Use Auto Units" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:73 -msgid "Left bracket missing after slash with atan" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3159 +#, fuzzy +msgid "Show the DRO Button" +msgstr "Shift+Bal egér gomb" -#: src/emc/rs274ngc/rs274ngc_return.hh:74 -msgid "Left bracket missing after unary operation name" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3190 +#, fuzzy +msgid "Homed color" +msgstr "Nullpont" -#: src/emc/rs274ngc/rs274ngc_return.hh:75 -msgid "M code greater than 199" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3204 +#, fuzzy +msgid "Unhomed color" +msgstr "Nullpont" -#: src/emc/rs274ngc/rs274ngc_return.hh:76 -msgid "Mixed radius ijk format for arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3299 +msgid "Digits" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:77 -msgid "Multiple a words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3344 +msgid "" +"toggle DRO mode \n" +"clicking on the DRO" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:78 -msgid "Multiple b words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3369 +msgid "DRO" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:79 -msgid "Multiple c words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3401 +msgid "Grid size" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:80 -msgid "Multiple d words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3430 +#, fuzzy +msgid "Show DRO" +msgstr "Mutasd a _határokat" -#: src/emc/rs274ngc/rs274ngc_return.hh:81 -msgid "Multiple f words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3444 +#, fuzzy +msgid "Show offsets" +msgstr "Mutasd a _határokat" -#: src/emc/rs274ngc/rs274ngc_return.hh:82 -msgid "Multiple h words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3458 +msgid "Show DTG" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:83 -msgid "Multiple i words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3483 +msgid "Mouse Button mode" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:84 -msgid "Multiple j words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3512 +#, fuzzy +msgid "Preview" +msgstr "Oldal nézet" -#: src/emc/rs274ngc/rs274ngc_return.hh:85 -msgid "Multiple k words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3565 +#, fuzzy +msgid "" +"current\n" +" file" +msgstr "Újratöltés [Control-R]" -#: src/emc/rs274ngc/rs274ngc_return.hh:86 -msgid "Multiple l words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3611 +msgid "File to load on start" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:87 -msgid "Multiple p words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3638 +#, fuzzy +msgid "Select user dir" +msgstr "Lépes növelése" -#: src/emc/rs274ngc/rs274ngc_return.hh:88 -msgid "Multiple q words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3647 +#, fuzzy +msgid "Select jump to dir" +msgstr "Válaszd ki a vizsgálandó elemet" -#: src/emc/rs274ngc/rs274ngc_return.hh:89 -msgid "Multiple r words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3767 +msgid "Themes and sound" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:90 -msgid "Multiple s words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3799 +msgid "Appearance" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:91 -msgid "Multiple t words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3833 +#, fuzzy +msgid "Scale max velocity" +msgstr "Mutas_d a grafikus szimulációt" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3846 +#, fuzzy +msgid "Scale jog velocity" +msgstr "Mutas_d a grafikus szimulációt" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3861 +#, fuzzy +msgid "Scale feed override" +msgstr "Túlhajtás (%):" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3876 +#, fuzzy +msgid "Scale spindle override" +msgstr "Túlhajtás (%):" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3970 +msgid "Hardware MPG Scale" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:92 -msgid "Multiple x words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3994 +msgid "Use keyboard shortcuts" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:93 -msgid "Multiple y words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4007 +msgid "Keyboard shortcuts" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:94 -msgid "Multiple z words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4034 +msgid "Use unlock code" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:95 -msgid "Must use g0 or g1 with g53" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4050 +msgid "Do not use unlock code" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:96 -msgid "Negative argument to sqrt" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4066 +msgid "Use hal pin to unlock" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:97 -msgid "Negative d word tool radius index used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4087 +msgid "Unlock settings" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:98 -msgid "Negative f word used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4197 +#, fuzzy +msgid "Spindle bar min" +msgstr "Fő orsó fék bekapcsolva" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4210 +#, fuzzy +msgid "Spindle bar max" +msgstr "Fő orsó fék bekapcsolva" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4252 +msgid "Hide turtle Jog Button" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:99 -msgid "Negative g code used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4282 +msgid "Turtle jog Factor" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:100 -msgid "Negative h word used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4318 +msgid "Turtle Jog" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:101 -msgid "Negative l word used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4360 +msgid "Hardware" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:102 -msgid "Negative m code used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4392 +msgid "Use auto tool measurement" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:103 -msgid "Negative or zero q value used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4450 +msgid "Probe Height" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:104 -msgid "Negative p word used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4485 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4498 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4527 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4556 +msgid "0.000" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:105 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4514 #, fuzzy -msgid "Negative spindle speed used" -msgstr "Túlhajtás (%):" +msgid "Z Pos." +msgstr " Poz " -#: src/emc/rs274ngc/rs274ngc_return.hh:106 -msgid "Negative tool id used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4543 +msgid "Max. Probe" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:107 -msgid "Nested comment found" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4575 +#, fuzzy +msgid "Probe Informations" +msgstr "Fő orsó fék bekapcsolva" -#: src/emc/rs274ngc/rs274ngc_return.hh:108 -msgid "No characters found in reading real value" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4607 +msgid "Search Vel." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:109 -msgid "Non integer value for integer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4618 +msgid "Probe Vel." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:110 -msgid "Null missing after newline" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4674 +msgid "Probe velocitys" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:111 -msgid "Parameter file out of order" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4688 +msgid "" +"No valid configuration\n" +"found in your INI file,\n" +"please take a look at \n" +"the WIKI to check how\n" +"to configure the settings." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:112 -msgid "Parameter number out of range" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4708 +#, fuzzy +msgid "Tool Measurement" +msgstr "Hűtés:" -#: src/emc/rs274ngc/rs274ngc_return.hh:113 -msgid "Parameter is readonly" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4737 +msgid "" +"If the 4'th axis is used\n" +"for a tool changer, you\n" +"hide the DRO and\n" +"jog buttons." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:114 -msgid "Q word missing with g83" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4749 +#, fuzzy +msgid "Hide 4'th axis" +msgstr "3. tengely léptetés" -#: src/emc/rs274ngc/rs274ngc_return.hh:115 -msgid "Queue is not empty after probing" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4769 +#, fuzzy +msgid "Tool Changer" +msgstr "Hűtés:" -#: src/emc/rs274ngc/rs274ngc_return.hh:116 -msgid "R clearance plane unspecified in cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4808 +msgid "Use frames" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:117 -msgid "R i j k words all missing for arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4840 +msgid "max." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:118 -msgid "R less than x in cycle in yz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4992 +msgid "Launch test message" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:119 -msgid "R less than y in cycle in xz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5011 +msgid "" +" gmoccapy message\n" +" behavior and appearance " msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:120 -msgid "R less than z in cycle in xy plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5049 +msgid "Do not use run from line" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:121 -msgid "R word with no g code that uses it" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5065 +#, fuzzy +msgid "Use run from line" +msgstr "Nézet mozgatás vagy sor kijelölés" -#: src/emc/rs274ngc/rs274ngc_return.hh:122 -msgid "Slash missing after first atan argument" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5086 +#, fuzzy +msgid "Run from line" +msgstr "Nézet mozgatás vagy sor kijelölés" -#: src/emc/rs274ngc/rs274ngc_return.hh:123 -msgid "Spindle not turning clockwise in g84" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5119 +msgid "" +"Advanced\n" +" Settings" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:124 -msgid "Spindle not turning in g86" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5157 +msgid "User tab 1" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:125 -msgid "Spindle not turning in g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5171 +msgid "User tabs" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:126 -msgid "Spindle not turning in g88" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5207 +msgid "Estop the machine" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:127 -msgid "Sscanf failed" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5229 +#, fuzzy +msgid "Turn the machine on/off" +msgstr "Kapcsold be a gépet" -#: src/emc/rs274ngc/rs274ngc_return.hh:128 -msgid "Start point too close to probe point" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5251 +msgid "enter manual mode to jog axis by hand or touch off" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:129 -msgid "Too many m codes on line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5271 +msgid "enter MDI mode to launch g-code commands" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:130 -msgid "Pocket max too large" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5290 +#, fuzzy +msgid "enter auto mode to run programs" +msgstr "Program szünet" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5308 +msgid "Enter the settings page, the default code is \"123\"" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:131 -msgid "Tool radius not less than arc radius with comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5330 +#, fuzzy +msgid "show user tabs" +msgstr "Mutasd a _határokat" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5381 +msgid "open homing button list" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:132 -msgid "Two g codes used from same modal group" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5398 +msgid "open touch off button list" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:133 -msgid "Two m codes used from same modal group" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5427 +msgid "Open the tooleditor page" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:134 -#, c-format -msgid "Unable to open file <%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5498 +msgid "make the preview as large as possible" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:135 -msgid "Unclosed comment found" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5515 +msgid "Close moccapy / leave the program" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:136 -msgid "Unclosed expression" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5577 +msgid "This button will show or hide the Keyboard" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:137 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5620 #, fuzzy -msgid "Unknown g code used" -msgstr "Szerszám %d ismeretlen" +msgid "Load a new program" +msgstr "Program indítás" -#: src/emc/rs274ngc/rs274ngc_return.hh:138 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5637 #, fuzzy -msgid "Unknown m code used" -msgstr "Szerszám %d ismeretlen" +msgid "Run the loaded program" +msgstr "Program indítás" -#: src/emc/rs274ngc/rs274ngc_return.hh:139 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5654 #, fuzzy -msgid "Unknown operation" -msgstr "Ismeretlen hiba %s" +msgid "Stop the running program" +msgstr "Program megszakítása" -#: src/emc/rs274ngc/rs274ngc_return.hh:140 -msgid "Unknown operation name starting with a" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5672 +#, fuzzy +msgid "Pause the running program" +msgstr "Program megszakítása" -#: src/emc/rs274ngc/rs274ngc_return.hh:141 -msgid "Unknown operation name starting with m" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5680 +#, fuzzy +msgid "pause the running program" +msgstr "Program megszakítása" -#: src/emc/rs274ngc/rs274ngc_return.hh:142 -msgid "Unknown operation name starting with o" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5698 +msgid "Run the loaded program step by step" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:143 -msgid "Unknown operation name starting with x" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5715 +msgid "" +"run the program from a certain line, attention, that is dangerous, because " +"the previous lines will not checed!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:144 -msgid "Unknown word starting with a" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5732 +msgid "" +"Machine or not the optional blocks of the program. If the button is pressed, " +"the optional blocks will not be machined. The button will indicate this by a " +"yellow background." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:145 -msgid "Unknown word starting with c" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5757 +msgid "" +"Make optional stops or not. if an M1 is programed and the button is pressed " +"(is active) the programm will pause if it found a M1" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:146 -msgid "Unknown word starting with e" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5789 +#, fuzzy +msgid "Edit the loaded program" +msgstr "Program indítás" -#: src/emc/rs274ngc/rs274ngc_return.hh:147 -msgid "Unknown word starting with f" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5837 +#, fuzzy +msgid "home all axis" +msgstr "Nullpont" -#: src/emc/rs274ngc/rs274ngc_return.hh:148 -msgid "Unknown word starting with l" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5873 +#, fuzzy +msgid "home x axis" +msgstr "Nullpont" -#: src/emc/rs274ngc/rs274ngc_return.hh:149 -msgid "Unknown word starting with r" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5897 +#, fuzzy +msgid "home y axis" +msgstr "Nullpont" -#: src/emc/rs274ngc/rs274ngc_return.hh:150 -msgid "Unknown word starting with s" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5929 +#, fuzzy +msgid "home z axis" +msgstr "Nullpont" -#: src/emc/rs274ngc/rs274ngc_return.hh:151 -msgid "Unknown word starting with t" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5987 +#, fuzzy +msgid "Unhome all axis" +msgstr "Nullpont" -#: src/emc/rs274ngc/rs274ngc_return.hh:152 -msgid "Unknown word where unary operation could be" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6023 +msgid "go back to main button list" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:153 -msgid "X and y words missing for arc in xy plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6053 +msgid "" +" edit\n" +"offsets" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:154 -msgid "X and z words missing for arc in xz plane" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6060 +#, fuzzy +msgid "Edit offsets" +msgstr "Mutasd a _határokat" -#: src/emc/rs274ngc/rs274ngc_return.hh:155 -msgid "X value unspecified in yz plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6076 +msgid "touch off X / set X to 0" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:156 -msgid "Y and z words missing for arc in yz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6100 +msgid "touch off Y / set Y to 0" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:157 -msgid "Y value unspecified in xz plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6135 +msgid "touch off Z / set Z to 0" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:158 -msgid "Z value unspecified in xy plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6155 +msgid "" +"zero\n" +"G92" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:159 -msgid "Zero or negative argument to ln" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6161 +msgid "Zero all G92 offsets" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:161 -msgid "K word missing with g33/g33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6172 +msgid "" +" Block\n" +"Height" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:162 -msgid "F word used with a g33/g33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6192 +msgid "touch off X / set X to an desired value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:163 -msgid "Unknown operation name starting with e" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6216 +msgid "touch off Y / set Y to an desired value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:164 -msgid "Unknown operation name starting with n" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6251 +msgid "touch off Z / set Z to an desired value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:165 -msgid "Unknown operation name starting with g" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6270 +msgid "" +" set\n" +"selected" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:166 -msgid "Unknown operation name starting with l" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6277 +msgid "set the selected coordinate system to be the active one" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:167 -msgid "Too many subroutine parameters" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6293 +msgid "Go back to main view" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:168 -msgid "Too many subroutine levels" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6324 +msgid "delete MDI" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:169 -msgid "Bug: call stack underrun" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6330 +msgid "delete MDI history" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:170 -#: src/emc/rs274ngc/rs274ngc_return.hh:169 -msgid "Unknown control command in o word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6380 +msgid "Cl.-ladder" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:171 -#: src/emc/rs274ngc/rs274ngc_return.hh:170 -msgid "Too many oword labels" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6386 +msgid "Open classicladder" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:172 -#: src/emc/rs274ngc/rs274ngc_return.hh:171 -#, fuzzy -msgid "Unknown oword number" -msgstr "Szerszám %d ismeretlen" - -#: src/emc/rs274ngc/rs274ngc_return.hh:173 -#: src/emc/rs274ngc/rs274ngc_return.hh:172 -msgid "Nested subroutine definition" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6397 +msgid "Hal-Scope" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:174 -#: src/emc/rs274ngc/rs274ngc_return.hh:173 -msgid "Not in subroutine definition" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6403 +msgid "launch hal scope" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:175 -#: src/emc/rs274ngc/rs274ngc_return.hh:174 -msgid "File not open" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6420 +msgid "launch linuxcnc status" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:176 -#: src/emc/rs274ngc/rs274ngc_return.hh:175 -msgid "Need tool prepared -Txx- for toolchange" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6437 +msgid "launch hal meter" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:177 -#: src/emc/rs274ngc/rs274ngc_return.hh:176 -msgid "Cannot change planes with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6455 +msgid "launch calibration" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:178 -#: src/emc/rs274ngc/rs274ngc_return.hh:177 -msgid "Cutter radius compensation allowed only in XY, XZ planes" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6466 +msgid "Halshow" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:179 -#: src/emc/rs274ngc/rs274ngc_return.hh:178 -msgid "P word missing with G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6472 +msgid "opens the show hal tool" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:180 -#: src/emc/rs274ngc/rs274ngc_return.hh:179 -msgid "I J or K words missing with G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6537 +msgid "save the file using the original name" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:181 -#: src/emc/rs274ngc/rs274ngc_return.hh:180 -msgid "Cannot move rotary axes with G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6559 +msgid "save the file with a new name" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:182 -#: src/emc/rs274ngc/rs274ngc_return.hh:181 -msgid "Multiple e words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6605 +msgid "clear the edit field and make a new file" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:183 -#: src/emc/rs274ngc/rs274ngc_return.hh:182 -msgid "Named parameter not terminated" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6641 +msgid "Show or hide the virtual keyboard" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:184 -#: src/emc/rs274ngc/rs274ngc_return.hh:183 -msgid "Out of memory" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6665 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6879 +msgid "Go back to main button list" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:185 -#: src/emc/rs274ngc/rs274ngc_return.hh:184 -msgid "S word missing with G96" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6701 +msgid "delete selected tool or tools" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:186 -#: src/emc/rs274ngc/rs274ngc_return.hh:185 -msgid "Queue is not empty after external input" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6718 +msgid "add a new tool to tool table" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:187 -#: src/emc/rs274ngc/rs274ngc_return.hh:186 -msgid "Can't select analog input with wait type != immediate return" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6729 +#, fuzzy +msgid "Reload" +msgstr "Ú_jratöltés" -#: src/emc/rs274ngc/rs274ngc_return.hh:188 -#: src/emc/rs274ngc/rs274ngc_return.hh:187 -msgid "Zero timeout with wait type != immediate return" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6735 +msgid "reload tool table from file" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:189 -#: src/emc/rs274ngc/rs274ngc_return.hh:188 -msgid "Invalid to select both a digital and an analog input with M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6746 +msgid "Apply" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:190 -#: src/emc/rs274ngc/rs274ngc_return.hh:189 -msgid "Need to have either a valid P or a valid E word with M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6752 +msgid "" +"apply the changes you made, G43 will be excecuted only if it is active g-code" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:191 -#: src/emc/rs274ngc/rs274ngc_return.hh:190 -msgid "Q word missing with g73" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6768 +#, fuzzy +msgid "Select a tool by number" +msgstr "Válaszd ki a vizsgálandó elemet" -#: src/emc/rs274ngc/rs274ngc_return.hh:192 -#: src/emc/rs274ngc/rs274ngc_return.hh:191 -msgid "Digital input selected out of bounds" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6790 +msgid "change tool with the command M61 Q?, no machine move will be done" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:193 -#: src/emc/rs274ngc/rs274ngc_return.hh:192 -msgid "Analog input selected out of bounds" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6812 +msgid "change tool to the selected one" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:194 -#: src/emc/rs274ngc/rs274ngc_return.hh:193 -msgid "W value unspecified in UV plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6824 +msgid "" +"touchoff\n" +" tool x" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:195 -#: src/emc/rs274ngc/rs274ngc_return.hh:194 -msgid "U value unspecified in VW plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6832 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6863 +msgid "touch off the tool and set the value to the tool table" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:196 -#: src/emc/rs274ngc/rs274ngc_return.hh:195 -msgid "V value unspecified in UW plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6855 +msgid "" +"touchoff\n" +" tool z" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:197 -#: src/emc/rs274ngc/rs274ngc_return.hh:196 -msgid "R less than W in cycle in UV plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6915 +msgid "Move to your home directory" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:198 -#: src/emc/rs274ngc/rs274ngc_return.hh:197 -msgid "R less than U in cycle in VW plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6932 +msgid "Move to parrent directory" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:199 -#: src/emc/rs274ngc/rs274ngc_return.hh:198 -msgid "R less than V in cycle in UW plane" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6961 +#, fuzzy +msgid "Select the previos file" +msgstr "Válaszd ki a vizsgálandó elemet" -#: share/axis/tcl/axis.tcl:1711 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6979 #, fuzzy -msgid "" -"LinuxCNC/AXIS version $version\n" -"\n" -"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Jeff Epler and Chris " -"Radek.\n" -"\n" -"This is free software, and you are welcome to redistribute it under certain " -"conditions. See the file COPYING, included with LinuxCNC.\n" -"\n" -"Visit the LinuxCNC web site: " -msgstr "" -"AXIS verzió $version\n" -"\n" -"Copyright (C) 2004, 2005, 2006 Jeff Epler es Chris Radek.\n" -"\n" -"Ez egy ingyenes szoftver. Szabadon továbbadható az AXIS csomag COPYING " -"feltételei szerint.\n" -"\n" -"Szívesen látunk az AXIS web oldalán: " +msgid "Select the next file" +msgstr "Válaszd ki a vizsgálandó elemet" -#: src/emc/rs274ngc/interp_check.cc:302 -msgid "P value not an integer with G2 or G3" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6997 +msgid "Jump to user defined directory" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:311 -msgid "" -"Q word with no G5, G10, G64, G73, G76, G83, M66, M67, M68 or user M code " -"that uses it" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7027 +msgid "select the highlighted file and return the path" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2733 -msgid "Need positive Q-word to specify tool number with M61" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7057 +msgid "Close without returning a file path" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1858 -#, c-format -msgid "Cannot change #<%s>" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7075 +#, fuzzy +msgid "Load File" +msgstr "_Program" -#: src/emc/rs274ngc/interp_read.cc:1906 -#, c-format -msgid "init_named_parameter must be global #<%s>" -msgstr "" +#, fuzzy +#~ msgid "" +#~ "LinuxCNC/AXIS version $version\n" +#~ "\n" +#~ "Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Jeff Epler and Chris " +#~ "Radek.\n" +#~ "\n" +#~ "This is free software, and you are welcome to redistribute it under " +#~ "certain conditions. See the file COPYING, included with LinuxCNC.\n" +#~ "\n" +#~ "Visit the LinuxCNC web site: " +#~ msgstr "" +#~ "AXIS verzió $version\n" +#~ "\n" +#~ "Copyright (C) 2004, 2005, 2006 Jeff Epler es Chris Radek.\n" +#~ "\n" +#~ "Ez egy ingyenes szoftver. Szabadon továbbadható az AXIS csomag COPYING " +#~ "feltételei szerint.\n" +#~ "\n" +#~ "Szívesen látunk az AXIS web oldalán: " #, fuzzy #~ msgid "to" @@ -13785,9 +16903,3 @@ msgstr "" #~ msgid "Set G54 offset for active axis [Shift-Home]" #~ msgstr "A G54 eltolás rögzítése az aktív tengelyen [Shift-Home]" - -#~ msgid "_B" -#~ msgstr "_B" - -#~ msgid "_C" -#~ msgstr "_C" diff --git a/src/po/it.po b/src/po/it.po index cdb07d9351..39d49c1fe9 100644 --- a/src/po/it.po +++ b/src/po/it.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: it_rs274_err\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-10 13:40-0600\n" +"POT-Creation-Date: 2019-02-20 07:49+0000\n" "PO-Revision-Date: 2014-03-14 12:57+0100\n" "Last-Translator: Ernesto Lo Valvo \n" "Language-Team: \n" @@ -19,13688 +19,17417 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.6.4\n" -#: src/hal/utils/meter.c:198 +#: src/emc/task/emctaskmain.cc:479 src/emc/task/emctaskmain.cc:512 #, c-format -msgid "ERROR: '%s' is not a valid probe type\n" -msgstr "ERRORE: '%s' non è un tipo di esame valido\n" +msgid "%s exceeds +X limit" +msgstr "%s supera limite +X " -#: src/hal/utils/meter.c:206 +#: src/emc/task/emctaskmain.cc:484 src/emc/task/emctaskmain.cc:517 #, c-format -msgid "ERROR: no pin/signal/parameter name\n" -msgstr "ERRORE: nessun nome di pin/segnale/parametro\n" +msgid "%s exceeds +Y limit" +msgstr "%s supera limite +Y" -#: src/hal/utils/meter.c:212 +#: src/emc/task/emctaskmain.cc:489 src/emc/task/emctaskmain.cc:522 #, c-format -msgid "" -"ERROR: -s option requires a probe type and a pin/signal/parameter name\n" -msgstr "" -"ERRORE: opzione -s richiede un tipo di esame ed un nome di pin/segnale/" -"parametro\n" - -#: src/hal/utils/meter.c:238 tcl/tklinuxcnc.tcl:764 -msgid "Hal Meter" -msgstr "Hal Meter" +msgid "%s exceeds +Z limit" +msgstr "%s supera limite +Z" -#: src/hal/utils/meter.c:287 -msgid "_Select" -msgstr "_Seleziona" +#: src/emc/task/emctaskmain.cc:494 src/emc/task/emctaskmain.cc:527 +#, c-format +msgid "%s exceeds -X limit" +msgstr "%s supera limite -X " -#: src/hal/utils/meter.c:288 -msgid "E_xit" -msgstr "E_sci" +#: src/emc/task/emctaskmain.cc:499 src/emc/task/emctaskmain.cc:532 +#, c-format +msgid "%s exceeds -Y limit" +msgstr "%s supera limite -Y" -#: src/hal/utils/meter.c:336 src/hal/utils/meter.c:364 -msgid "Select Item to Probe" -msgstr "Selezione Elemento da Esaminare" +#: src/emc/task/emctaskmain.cc:504 src/emc/task/emctaskmain.cc:537 +#, c-format +msgid "%s exceeds -Z limit" +msgstr "%s supera limite -Z" -#: src/hal/utils/meter.c:640 -msgid " _Pins " -msgstr " _Pins " +#: src/emc/task/emctaskmain.cc:892 +#, c-format +msgid "" +"command (%s) cannot be executed until the machine is out of E-stop and " +"turned on" +msgstr "" +"Il comando (%s) non può essere eseguito finchè la macchina non è in E-Stop " +"ed accesa" -#: src/hal/utils/meter.c:641 -msgid " _Signals " -msgstr "_Segnali " +#: src/emc/task/emctaskmain.cc:1013 +#, fuzzy, c-format +msgid "can't do that (%s:%d) in manual mode" +msgstr "Impossibile eseguire il comando (%s) in modalità manuale" -#: src/hal/utils/meter.c:642 -msgid " Para_meters " -msgstr " Para_metri " +#: src/emc/task/emctaskmain.cc:1113 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter idle" +msgstr "" +"Impossibile eseguire il comando (%s) in modalità automatica con l'interprete " +"in stato di libero" -#: src/hal/utils/meter.c:685 -msgid "_Close" -msgstr "_Chiudi" +#: src/emc/task/emctaskmain.cc:1180 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter reading" +msgstr "" +"Impossibile eseguire il comando (%s) in modalità automatica con l'interprete " +"in stato di lettura" -#: src/hal/utils/scope.c:126 -msgid "" -"Usage:\n" -" halscope [-h] [-i infile] [-o outfile] [num_samples]\n" +#: src/emc/task/emctaskmain.cc:1265 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter paused" msgstr "" -"Uso:\n" -" halscope [-h] [-i infile] [-o outfile] [numero_campioni]\n" +"Impossibile eseguire il comando (%s) in modalità automatica con l'interprete " +"in stato di pausa" -#: src/hal/utils/scope.c:474 src/hal/utils/scope.c:501 -msgid "Open Configuration File:" -msgstr "Apri File Configurazione:" +#: src/emc/task/emctaskmain.cc:1334 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter waiting" +msgstr "" +"Impossibile eseguire il comando (%s) in modalità automatica con l'interprete " +"in stato di attesa" -#: src/hal/utils/scope.c:535 -msgid "_Open Configuration..." -msgstr "Apri C_onfigurazione..." +#: src/emc/task/emctaskmain.cc:1442 +#, fuzzy, c-format +msgid "can't do that (%s:%d) in MDI mode" +msgstr "Impossibile eseguire il comando (%s) in modalità MDI" -#: src/hal/utils/scope.c:541 -msgid "_Save Configuration..." -msgstr "_Salva configurazione" +#: src/emc/task/emctaskmain.cc:2100 +msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" +msgstr "" +"Non è possibile cambiare modo mentre si è in AUTO e l'interprete non è " +"INATTIVO" -#: src/hal/utils/scope.c:550 -msgid "O_pen Data File..." -msgstr "A_pri File Dati..." +#: src/emc/task/emctaskmain.cc:2157 tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 +#: tcl/mini.tcl:1775 tcl/tklinuxcnc.tcl:451 +#, c-format, tcl-format +msgid "can't open %s" +msgstr "impossibile aprire %s " -#: src/hal/utils/scope.c:557 -msgid "S_ave Data File..." -msgstr "S_alva File Dati..." +#: src/emc/task/emctaskmain.cc:2169 +msgid "Can't issue MDI command when not homed" +msgstr "Non è possibile usare comandi MDI quando la macchina non è azzerata" -#: src/hal/utils/scope.c:566 share/axis/tcl/axis.tcl:93 -msgid "_Quit" -msgstr "_Esci" +#: src/emc/task/emctaskmain.cc:2174 +msgid "Must be in MDI mode to issue MDI command" +msgstr "Bisogna essere in modalità MDI per eseguire comandi MDI" -#: src/hal/utils/scope.c:572 -msgid "_About Halscope" -msgstr "Inform_azioni su Halscope" +#: src/emc/task/emctaskmain.cc:2256 +msgid "Can't run a program when not homed" +msgstr "" +"Non è possibile far girare un programma se la macchina non è stata azzerata" -#: src/hal/utils/scope.c:578 share/axis/tcl/axis.tcl:435 -msgid "_File" -msgstr "_File" +#: src/emc/rs274ngc/interp_arc.cc:110 src/emc/rs274ngc/interp_arc.cc:284 +#, fuzzy, c-format +msgid "" +"Zero-radius arc: start=(%c%.4f,%c%.4f) center=(%c%.4f,%c%.4f) end=(%c%.4f,%c" +"%.4f) r1=%.4f r2=%.4f" +msgstr "" +"Il raggio alla fine dell'arco differisce dal raggio alla partenza: " +"partenza=(%c%.4f,%c%.4f) centro=(%c%.4f,%c%.4f) fine=(%c%.4f,%c%.4f) r1=%.4f " +"r2=%.4f err_abs=%.4g err_rel=%.4f%%" -#: src/hal/utils/scope.c:582 share/axis/tcl/axis.tcl:447 -msgid "_Help" -msgstr "_Aiuto" +#: src/emc/rs274ngc/interp_arc.cc:120 src/emc/rs274ngc/interp_arc.cc:292 +#, c-format +msgid "" +"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " +"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " +"rel_err=%.4f%%" +msgstr "" +"Il raggio alla fine dell'arco differisce dal raggio alla partenza: " +"partenza=(%c%.4f,%c%.4f) centro=(%c%.4f,%c%.4f) fine=(%c%.4f,%c%.4f) r1=%.4f " +"r2=%.4f err_abs=%.4g err_rel=%.4f%%" -#: src/hal/utils/scope.c:641 -msgid "HAL Oscilloscope" -msgstr "Oscilloscopio HAL" +#: src/emc/rs274ngc/interp_check.cc:90 +msgid "G4 not allowed with G2 or G3 because they both use P" +msgstr "G4 non disponibile con G2 o G3 perchè entrambi usano P" -#: src/hal/utils/scope.c:669 -msgid "Horizontal" -msgstr "Orizzontale" +#: src/emc/rs274ngc/interp_check.cc:93 +msgid "Line with G10 does not have L1, L10, L11, L2, or L20" +msgstr "La linea con G10 manca di L1, L10, L11, L2, o L20" -#: src/hal/utils/scope.c:677 -msgid "Selected Channel" -msgstr "Canale Selezionato" +#: src/emc/rs274ngc/interp_check.cc:94 +msgid "P value not an integer with G10" +msgstr "Valore P-non intero con G10" -#: src/hal/utils/scope.c:683 -msgid "Run Mode" -msgstr "Modo Operativo" +#: src/emc/rs274ngc/interp_check.cc:95 +#, fuzzy, c-format +msgid "P value out of range (0-9) with G10 L%d" +msgstr "Valore P fuori limite (0-9) con G10 L2 o L20" -#: src/hal/utils/scope.c:686 -msgid "Trigger" -msgstr "Trigger" +#: src/emc/rs274ngc/interp_check.cc:96 +#, fuzzy, c-format +msgid "P value out of range with G10 L%d" +msgstr "Valore P-fuori limite con G10 L2 o G10 L20" -#: src/hal/utils/scope.c:692 -msgid "Vertical" -msgstr "Verticale" +#: src/emc/rs274ngc/interp_check.cc:100 +msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." +msgstr "" +"Fra i codici G5.2 e G5.3, sono consentiti solo codici G5.2 addizionali." -#: src/hal/utils/scope.c:700 share/axis/tcl/axis.tcl:135 -#: share/axis/tcl/axis.tcl:1199 -msgid "Stop" -msgstr "Stop" +#: src/emc/rs274ngc/interp_check.cc:259 +msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" +msgstr "Parametro D senza funzioni G41, G41.1. G42, G42.1 o G96 che lo usino" -#: src/hal/utils/scope.c:703 -msgid "Normal" -msgstr "Normale" +#: src/emc/rs274ngc/interp_check.cc:265 +msgid "E word with no G76, M66, M67 or M68 to use it" +msgstr "Parametro E senza funzioni G76, M66, M67 o M68 che lo usino" -#: src/hal/utils/scope.c:706 -msgid "Single" -msgstr "Singolo" +#: src/emc/rs274ngc/interp_check.cc:270 +msgid "H word with no G43 or G76 to use it" +msgstr "Parametro H senza funzioni G43 o G76 che lo usino" -#: src/hal/utils/scope.c:709 -msgid "Roll" -msgstr "Roll" +#: src/emc/rs274ngc/interp_check.cc:276 +msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" +msgstr "Parametro I senza funzioni G2, G3, G5, G5.1, G76 o G87 che lo usino" -#: src/hal/utils/scope_horiz.c:130 -msgid "Zoom" -msgstr "Zoom" +#: src/emc/rs274ngc/interp_check.cc:282 +msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" +msgstr "" +"Parametro J senza funzioni G2, G3, G5, G5.1, G10, G76 o G87 che lo usino" -#: src/hal/utils/scope_horiz.c:131 -msgid " Pos " -msgstr " Pos " +#: src/emc/rs274ngc/interp_check.cc:288 +msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" +msgstr "Parametro K senza funzioni G2, G3, G33, G331.1, G76 o G87 che lo usino" -#: src/hal/utils/scope_horiz.c:164 +#: src/emc/rs274ngc/interp_check.cc:298 msgid "" -"----- Samples\n" -"at ---- KHz" +"L word with no G10, cutter compensation, canned cycle, digital/analog input, " +"or NURBS code" msgstr "" -"----- Campioni\n" -"a ---- KHz" - -#: src/hal/utils/scope_horiz.c:459 -msgid "Realtime component not loaded" -msgstr "Componente realtime non caricato" +"Parametro L word senza G10, compensazione utensile , ciclo fisso, input " +"digitale/analogico, o codice NURBS" -#: src/hal/utils/scope_horiz.c:460 +#: src/emc/rs274ngc/interp_check.cc:310 msgid "" -"HALSCOPE uses a realtime component called scope_rt'\n" -"to sample signals for display. It is not currently loaded\n" -"and attempting to load it automatically failed. More information\n" -"may be available in the terminal where halscope was started.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Load the component (using 'halcmd loadrt scope_rt'), then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " +"M53 M62 M63 M64 M65 M66 or user M code to use it" msgstr "" -"HALSCOPE usa il componente realtime chiamato scope_rt'\n" -"per campionare i segnali da visualizzare. Esso non è al momento caricato\n" -"e il tentativo di caricarlo automaticamente è fallito. Maggiori " -"informazioni\n" -"possono essere disponibili nel terminale dal quale halscope era stato " -"avviato.\n" -"\n" -"Si prega di scegliere una delle opzioni seguenti:\n" -"\n" -"Caricare il componente (usando 'halcmd loadrt scope_rt'), quindi cliccare " -"'OK'\n" -"oppure\n" -"Cliccare 'Esci' per uscire da HALSCOPE" +"Parametro P senza funzioni G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 o " +"M50 M51 M52 M53 M62 M63 M64 M65 M66 o codice M utente che lo usino" -#: src/hal/utils/scope_horiz.c:495 -msgid "Realtime function not linked" -msgstr "Funzione realtime non collegata" +#: src/emc/rs274ngc/interp_check.cc:315 +msgid "P value not an integer with M19 G2 or G3" +msgstr "Valore P non intero con M19, G2 o G3" -#: src/hal/utils/scope_horiz.c:496 -msgid "" -"The HALSCOPE realtime sampling function\n" -"must be called from a HAL thread in to\n" -"determine the sampling rate.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Select a thread name and multiplier then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" -msgstr "" -"La funzione di campionamento realtime di HALSCOPE\n" -"deve essere chiamata da un thread HAL per\n" -"determinare la velocità di campionamento.\n" -"\n" -"Si prega di scegliere una delle opzioni seguenti:\n" -"\n" -"Selezionare il nome di un thread e il moltiplicatore, quindi cliccare 'OK'\n" -"oppure\n" -"Cliccare 'Esci' per uscire da HALSCOPE" +#: src/emc/rs274ngc/interp_check.cc:317 +msgid "P value must be 0,1,or 2 with M19" +msgstr "Il valore di P con M19 deve essere 0, 1 o 2" -#: src/hal/utils/scope_horiz.c:503 -msgid "Select Sample Rate" -msgstr "Seleziona Velocità Campionamento" +#: src/emc/rs274ngc/interp_check.cc:319 +msgid "P value should be 1 or greater with G2 or G3" +msgstr "Valore P deve essere 1 o maggiore con G2 o G3" -#: src/hal/utils/scope_horiz.c:504 +#: src/emc/rs274ngc/interp_check.cc:327 msgid "" -"Select a thread name and multiplier then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " +"code that uses it" msgstr "" -"Selezionare il nome di un thread e il moltiplicatore, quindi cliccare 'OK'\n" -"oppure\n" -"Cliccare 'Esci' per uscire da HALSCOPE" +"Parametro Q senza funzioni G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 o " +"codice M utente che lo usino" -#: src/hal/utils/scope_horiz.c:526 -msgid "Thread:" -msgstr "Thread:" +#: src/emc/rs274ngc/interp_check.cc:337 +msgid "R value must be within 0..360 with M19" +msgstr "Il valore di R con M19 deve essere tra 0..360" -#: src/hal/utils/scope_horiz.c:534 -msgid "Sample Period:" -msgstr "Periodo Campionamento:" +#: src/emc/rs274ngc/interp_convert.cc:139 +msgid "You must specify both X and Y coordinates for Control Points" +msgstr "Bisogna specificare nei Punti di Controllo sia X che Y" -#: src/hal/utils/scope_horiz.c:542 -msgid "Sample Rate:" -msgstr "Velocità Campionamento:" +#: src/emc/rs274ngc/interp_convert.cc:142 +#, fuzzy +msgid "Can specify P without X and Y only for the first control point" +msgstr "Bisogna specificare nei Punti di Controllo sia X che Y" -#: src/hal/utils/scope_horiz.c:558 src/emc/usr_intf/touchy/mdi.py:78 -msgid "Thread" -msgstr "Thread" +#: src/emc/rs274ngc/interp_convert.cc:145 +#, fuzzy +msgid "Must specify positive weight P for every Control Point" +msgstr "Bisogna specificare un peso R positivo per ogni Punto di Controllo" -#: src/hal/utils/scope_horiz.c:559 -msgid "Period" -msgstr "Periodo" +#: src/emc/rs274ngc/interp_convert.cc:148 +msgid "Cannot make a NURBS with 0 feedrate" +msgstr "Impossibile eseguire NURBS con avanzamento nullo" -#: src/hal/utils/scope_horiz.c:619 -msgid "Multiplier:" -msgstr "Moltiplicatore:" +#: src/emc/rs274ngc/interp_convert.cc:183 +msgid "Cannot use G5.3 without G5.2 first" +msgstr "Impossibile usare G5.3 senza G5.2 prima" -#: src/hal/utils/scope_horiz.c:636 -msgid "Record Length" -msgstr "Lunghezza Registrazione" +#: src/emc/rs274ngc/interp_convert.cc:184 +#, fuzzy, c-format +msgid "" +"You must specify a number of control points at least equal to the order L = " +"%d" +msgstr "" +"Bisogna specificare un numero di punti di controllo almeno uguale all'ordine " +"P = %d" -#: src/hal/utils/scope_horiz.c:639 -#, c-format -msgid "%5d samples (1 channel)" -msgstr "%5d campioni (1 canale)" +#: src/emc/rs274ngc/interp_convert.cc:213 +msgid "Cannot convert spline with cutter radius compensation" +msgstr "Impossibile convertire spline con compensazione raggio utensile" -#: src/hal/utils/scope_horiz.c:641 -#, c-format -msgid "%5d samples (2 channels)" -msgstr "%5d campioni (2 canali)" +#: src/emc/rs274ngc/interp_convert.cc:223 +msgid "Splines must be in the XY plane" +msgstr "Le spline devono essere sul piano XY" -#: src/hal/utils/scope_horiz.c:645 -#, c-format -msgid "%5d samples (4 channels)" -msgstr "%5d campioni (4 canali)" +#: src/emc/rs274ngc/interp_convert.cc:228 +msgid "Splines may not have motion in Z, A, B, or C" +msgstr "Le spline non possono avere movimenti in Z, A, B, o C" -#: src/hal/utils/scope_horiz.c:649 -#, c-format -msgid "%5d samples (8 channels)" -msgstr "%5d campioni (8 canali)" +#: src/emc/rs274ngc/interp_convert.cc:232 +msgid "Must specify both I and J with G5.1" +msgstr "Bisogna specificare sia I e J con G5.1" -#: src/hal/utils/scope_horiz.c:653 -#, c-format -msgid "%5d samples (16 channels)" -msgstr "%5d campioni (16 canali)" +#: src/emc/rs274ngc/interp_convert.cc:251 +msgid "Must specify both I and J, or neither" +msgstr "Bisogna indicare sia I e J oppure nessuno dei due" -#: src/hal/utils/scope_horiz.c:708 src/hal/utils/scope_horiz.c:754 -#: src/hal/utils/scope_horiz.c:966 src/hal/utils/scope_vert.c:761 -#: src/hal/utils/scope_vert.c:853 tcl/bin/emccalib.tcl:227 -#: tcl/bin/genedit.tcl:180 tcl/bin/genedit.tcl:450 tcl/bin/halconfig.tcl:682 -#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:257 -#: tcl/bin/pickconfig.tcl:479 tcl/bin/pickconfig.tcl:506 tcl/mini.tcl:1456 -#: tcl/mini.tcl:2937 tcl/tklinuxcnc.tcl:160 tcl/tklinuxcnc.tcl:245 -#: tcl/tklinuxcnc.tcl:419 tcl/tklinuxcnc.tcl:1338 tcl/tklinuxcnc.tcl:1407 -#: tcl/tklinuxcnc.tcl:1438 tcl/tklinuxcnc.tcl:1469 tcl/tklinuxcnc.tcl:2017 -#: tcl/tklinuxcnc.tcl:2036 tcl/tklinuxcnc.tcl:2055 tcl/tklinuxcnc.tcl:2102 -#: src/emc/usr_intf/axis/scripts/axis.py:1077 -#: src/emc/usr_intf/axis/scripts/axis.py:1141 -#: src/emc/usr_intf/axis/scripts/axis.py:1458 -#: src/emc/usr_intf/axis/scripts/axis.py:2477 -#: src/emc/usr_intf/axis/scripts/axis.py:3336 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:718 -#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1720 -#: share/axis/tcl/axis.tcl:1757 -msgid "OK" -msgstr "OK" +#: src/emc/rs274ngc/interp_convert.cc:262 +msgid "Must specify both P and Q with G5" +msgstr "Bisogna specificare sia P e Q con G5" -#: src/hal/utils/scope_horiz.c:713 src/hal/utils/scope_horiz.c:754 -#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 -msgid "Quit" -msgstr "Esci" +#: src/emc/rs274ngc/interp_convert.cc:363 +msgid "" +"The move just after exiting cutter compensation mode must be straight, not " +"an arc" +msgstr "" +"Il movimento subito dopo l'uscita dal modo compensazione utensile deve essre " +"diritto, non un arco" -#: src/hal/utils/scope_horiz.c:745 -msgid "Realtime thread(s) not running" -msgstr "Threads realtime non attivi" +#: src/emc/rs274ngc/interp_convert.cc:371 +msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" +msgstr "Impossibile fare un arco nei piani G17.1, G18.1, o G19.1" -#: src/hal/utils/scope_horiz.c:746 -msgid "" -"HALSCOPE uses code in a realtime HAL thread to sample\n" -"signals for display. The HAL thread(s) are not running.\n" -"Threads are usually started by the application you are\n" -"attempting to run, or you can use the 'halcmd start' command.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Start the threads, then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +#: src/emc/rs274ngc/interp_convert.cc:383 +#: src/emc/rs274ngc/interp_convert.cc:4488 +msgid "Cannot feed with zero spindle speed in feed per rev mode" msgstr "" -"HALSCOPE usa codice in un thread realtime HAL per campionare\n" -"i segnali da visualizzare. I thread HAL non sono attivi.\n" -"I thread normalmente sono avviati dall'applicazione che si\n" -"sta cercando di attivare, oppure si può usare il comando 'halcmd start'.\n" -"\n" -"Si prega di scegliere una delle opzioni seguenti:\n" -"\n" -"Avviare i threads, quindi cliccare 'OK'\n" -"oppure\n" -"Cliccare 'Esci' per uscire da HALSCOPE" +"Movimento impossibile con velocità zero del mandrino in modalità avanzamento " +"per giro" -#: src/hal/utils/scope_horiz.c:779 -msgid "Pick log file to write to:" -msgstr "Selezionare il file log da scrivere su:" +#: src/emc/rs274ngc/interp_convert.cc:394 +#: src/emc/rs274ngc/interp_convert.cc:400 +#: src/emc/rs274ngc/interp_convert.cc:409 +#: src/emc/rs274ngc/interp_convert.cc:415 +#: src/emc/rs274ngc/interp_convert.cc:424 +#: src/emc/rs274ngc/interp_convert.cc:430 +#, c-format +msgid "%c word missing in absolute center arc" +msgstr "Parametro %c mancante in centro arco assoluto" -#: src/hal/utils/scope_horiz.c:962 -msgid "Not enough channels" -msgstr "Canali non sufficienti" +#: src/emc/rs274ngc/interp_convert.cc:662 +msgid "" +"Radius of cutter compensation entry arc is not greater than the tool radius" +msgstr "" +"Il raggio del arco di ingresso della compensazione raggio utensile non è " +"maggiore del raggio utensile" -#: src/hal/utils/scope_horiz.c:963 +#: src/emc/rs274ngc/interp_convert.cc:882 +#: src/emc/rs274ngc/interp_convert.cc:892 src/emc/rs274ngc/interp_queue.cc:696 msgid "" -"This record length cannot handle the channels\n" -"that are currently enabled. Pick a shorter\n" -"record length that supports more channels." +"Arc move in concave corner cannot be reached by the tool without gouging" msgstr "" -"Questa lunghezza del record non può utilizzare i canali\n" -"che sono attualmente attivati. Scegliere una lunghezza\n" -"del record più piccola che supporta più canali." +"Movimento arco in un angolo concavo non può essre raggiungo dall'utensile " +"senza urto" -#: src/hal/utils/scope_horiz.c:1051 -#, c-format +#: src/emc/rs274ngc/interp_convert.cc:918 +msgid "Arc to arc motion is invalid because the arcs have the same center" +msgstr "" +"Il movimento da arco ad arco non è valido perchè gli archi hanno lo stesso " +"centro" + +#: src/emc/rs274ngc/interp_convert.cc:921 msgid "" -"%s\n" -"per div" +"Arc to arc motion makes a corner the compensated tool can't fit in without " +"gouging" msgstr "" -"%s\n" -"per div" +"Il movimento da arco ad arco genera un angolo concavo che l'utensile " +"compensato non può essere effettuato senza urto" -#: src/hal/utils/scope_horiz.c:1066 +#: src/emc/rs274ngc/interp_convert.cc:1053 +#: src/emc/rs274ngc/interp_convert.cc:1057 +#: src/emc/rs274ngc/interp_convert.cc:1061 +#: src/emc/rs274ngc/interp_convert.cc:3945 +#: src/emc/rs274ngc/interp_convert.cc:3948 +#: src/emc/rs274ngc/interp_convert.cc:3951 src/emc/rs274ngc/interp_find.cc:97 #, c-format -msgid "" -"%s samples\n" -"at %s" +msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" +msgstr "Posizione assoluta %5.2f invalida per asse rotante %c" + +#: src/emc/rs274ngc/interp_convert.cc:1563 +msgid "Cannot change control mode with cutter radius compensation on" msgstr "" -"%s campioni\n" -"a %s" +"Impossibile cambiare modalità controllo con compensazione raggio utensile " +"attiva" -#: src/hal/utils/scope_horiz.c:1170 -msgid "nSec" -msgstr "nSec" +#: src/emc/rs274ngc/interp_convert.cc:1676 +msgid "Cannot change coordinate systems with cutter radius compensation on" +msgstr "" +"Impossibile cambiare sistema coordinate con compensazione raggio utensile " +"attiva" -#: src/hal/utils/scope_horiz.c:1173 -msgid "uSec" -msgstr "uSec" +#: src/emc/rs274ngc/interp_convert.cc:1920 +#, c-format +msgid "G%d.1 with no D word" +msgstr "G%d.1 senza parametro D" -#: src/hal/utils/scope_horiz.c:1177 -msgid "mSec" -msgstr "mSec" +#: src/emc/rs274ngc/interp_convert.cc:1923 +#, c-format +msgid "G%d.1 with L word, but plane is not G18" +msgstr "G%d.1 con parametro L, ma il piano non è G18" -#: src/hal/utils/scope_horiz.c:1181 -#: src/emc/usr_intf/pncconf/pncconf.glade:1953 -#: src/emc/usr_intf/pncconf/pncconf.glade:2825 -#: src/emc/usr_intf/pncconf/pncconf.glade:3706 -#: src/emc/usr_intf/pncconf/pncconf.glade:4587 -msgid "Sec" -msgstr "Sec" +#: src/emc/rs274ngc/interp_convert.cc:1934 +#, c-format +msgid "G%d requires D word to be a whole number" +msgstr "G%d richiede che il parametro D sia un numero intero" -#: src/hal/utils/scope_horiz.c:1198 -#: src/emc/usr_intf/stepconf/stepconf.glade:3664 -#: src/emc/usr_intf/stepconf/stepconf.glade:4040 -#: src/emc/usr_intf/pncconf/pncconf.glade:8268 -#: src/emc/usr_intf/pncconf/pncconf.glade:8281 -#: src/emc/usr_intf/pncconf/pncconf.glade:8458 -msgid "Hz" -msgstr "Hz" +#: src/emc/rs274ngc/interp_convert.cc:1941 +#, c-format +msgid "G%d with lathe tool, but plane is not G18" +msgstr "G%d con utensile da tornio, ma il piano non è G18" -#: src/hal/utils/scope_horiz.c:1201 -msgid "KHz" -msgstr "KHz" +#: src/emc/rs274ngc/interp_convert.cc:2340 +msgid "Cannot set reference point with cutter compensation in effect" +msgstr "" +"impossibile impostare punto riferimento con compensazione raggio utensile " +"attiva" -#: src/hal/utils/scope_horiz.c:1205 -msgid "Mhz" -msgstr "Mhz" +#: src/emc/rs274ngc/interp_convert.cc:2859 +#, fuzzy, c-format +msgid "gen_restore G20/G21 failed: '%s'" +msgstr "M7x: restore_settings G20/G21 errato: '%s'" -#: src/hal/utils/scope_vert.c:403 src/hal/utils/scope_vert.c:1258 +#: src/emc/rs274ngc/interp_convert.cc:2907 #, c-format msgid "" -"Offset\n" -"%s" +"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" msgstr "" -"Offset\n" -"%s" - -#: src/hal/utils/scope_vert.c:618 -msgid "Gain" -msgstr "Guadagno" +"BUG: impossibile restore da u basso call level (%d) ad un alto call level " +"(%d)" -#: src/hal/utils/scope_vert.c:630 src/hal/utils/scope_trig.c:252 -msgid "Pos" -msgstr "Pos" +#: src/emc/rs274ngc/interp_convert.cc:2908 +#, c-format +msgid "BUG: restore from level %d !?" +msgstr "BUG: restore dal livello %d !?" -#: src/hal/utils/scope_vert.c:644 tcl/ngcgui_ttt.tcl:214 -#: src/emc/usr_intf/pncconf/pncconf.glade:57147 -msgid "Scale" -msgstr "Scala" +#: src/emc/rs274ngc/interp_convert.cc:2909 +#, c-format +msgid "BUG: restore to level %d !?" +msgstr "BUG: restore al livello %d !?" -#: src/hal/utils/scope_vert.c:657 -msgid "Chan Off" -msgstr "Canale Off" +#: src/emc/rs274ngc/interp_convert.cc:2928 +#, c-format +msgid "M7x: restore_settings G20/G21 failed: '%s'" +msgstr "M7x: restore_settings G20/G21 errato: '%s'" -#: src/hal/utils/scope_vert.c:713 -msgid "Set Offset" -msgstr "Imposta Offset" +#: src/emc/rs274ngc/interp_convert.cc:2946 +#, c-format +msgid "M7x: restore_settings failed executing: '%s': %s" +msgstr "M7x: restore_settings errato eseguendo '%s': %s" -#: src/hal/utils/scope_vert.c:714 +#: src/emc/rs274ngc/interp_convert.cc:3005 #, c-format -msgid "" -"Set the vertical offset\n" -"for channel %d." +msgid "Failed to restore interp state on abort '%s': %s" msgstr "" -"Imposta l'offset verticale\n" -"per il canale %d." -#: src/hal/utils/scope_vert.c:734 -msgid "AC Coupled" -msgstr "Accoppiamento AC" +#: src/emc/rs274ngc/interp_convert.cc:3069 +msgid "No valid P word with M62" +msgstr "Nessun parametro P con M62" -#: src/hal/utils/scope_vert.c:769 src/hal/utils/scope_vert.c:1171 -#: src/hal/utils/scope_trig.c:367 tcl/bin/emccalib.tcl:229 -#: tcl/bin/genedit.tcl:294 tcl/bin/halconfig.tcl:103 tcl/bin/halconfig.tcl:684 -#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:260 -#: tcl/bin/pickconfig.tcl:369 tcl/mini.tcl:1457 tcl/mini.tcl:2938 -#: tcl/mini.tcl:3110 tcl/tklinuxcnc.tcl:162 tcl/tklinuxcnc.tcl:213 -#: tcl/tklinuxcnc.tcl:420 tcl/tklinuxcnc.tcl:1339 tcl/tklinuxcnc.tcl:1408 -#: tcl/tklinuxcnc.tcl:1439 tcl/tklinuxcnc.tcl:1470 tcl/tklinuxcnc.tcl:2103 -#: src/emc/usr_intf/axis/scripts/axis.py:1404 -#: src/emc/usr_intf/axis/scripts/axis.py:1459 -#: src/emc/usr_intf/axis/scripts/axis.py:1646 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:720 -msgid "Cancel" -msgstr "Annulla" +#: src/emc/rs274ngc/interp_convert.cc:3072 +msgid "No valid P word with M63" +msgstr "Nessun parametro P valido con M63" -# Anmerkung:FJ: Tool max? Was das? -# Anmerkung:AJ: sollte "Index in tool table file too large" sein -#: src/hal/utils/scope_vert.c:849 -msgid "Too many channels" -msgstr "Troppi canali" +#: src/emc/rs274ngc/interp_convert.cc:3075 +msgid "No valid P word with M64" +msgstr "Nessun parametro P valido con M64" -#: src/hal/utils/scope_vert.c:850 -msgid "" -"You cannot add another channel.\n" -"\n" -"Either turn off one or more channels, or shorten\n" -"the record length to allow for more channels" -msgstr "" -"Non è possibile aggiungere un altro canale.\n" -"\n" -"Disattivare uno o più canali, oppure ridurre\n" -"la lunghezza del record così da utilizzare più canali" +#: src/emc/rs274ngc/interp_convert.cc:3078 +msgid "No valid P word with M65" +msgstr "Nessun parametro P valido con M65" -#: src/hal/utils/scope_vert.c:1026 -msgid "Select Channel Source" -msgstr "Selezionare Sorgente Canale" +#: src/emc/rs274ngc/interp_convert.cc:3111 +msgid "invalid P-word with M66" +msgstr "Parametro P errato con M66" -#: src/hal/utils/scope_vert.c:1027 -#, c-format -msgid "" -"Select a pin, signal, or parameter\n" -"as the source for channel %d." +#: src/emc/rs274ngc/interp_convert.cc:3126 +msgid "Cannot wait for digital input with cutter radius compensation on" msgstr "" -"Selezionare un pin, segnale, o parametro\n" -"come sorgente per il canale %d." +"Attesa input digitale impossibile con compensazione raggio utensile attiva" -#: src/hal/utils/scope_vert.c:1059 -msgid "Pins" -msgstr "Pins" +#: src/emc/rs274ngc/interp_convert.cc:3138 +msgid "Cannot wait for analog input with cutter radius compensation on" +msgstr "" +"Attesa input analogico impossibile con compensazione raggio utensile attiva" -#: src/hal/utils/scope_vert.c:1060 -msgid "Signals" -msgstr "Segnali" +#: src/emc/rs274ngc/interp_convert.cc:3152 +msgid "Invalid analog index with M67" +msgstr "Indice analogico non valido con M67" -#: src/hal/utils/scope_vert.c:1061 -msgid "Parameters" -msgstr "Parametri" +#: src/emc/rs274ngc/interp_convert.cc:3157 +msgid "Invalid analog index with M68" +msgstr "Indice analogico non valido con M68" -#: src/hal/utils/scope_trig.c:110 -#, c-format -msgid "Falling" -msgstr "Discesa" +#: src/emc/rs274ngc/interp_convert.cc:3188 +msgid "Need non-negative Q-word to specify tool number with M61" +msgstr "" +"E' necessario un parametro Q non-negativo per specificare il numero " +"utensile con M61" -#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:275 -#, c-format -msgid "Rising" -msgstr "Salita" +#: src/emc/rs274ngc/interp_convert.cc:3258 +msgid "Q word with M19 requires a value > 0" +msgstr "Word Q con M19 richiede un valore > 0" -#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:283 -msgid "" -"Source\n" -"None" +#: src/emc/rs274ngc/interp_convert.cc:3286 +msgid "Cannot restore context from invalid stack frame - missing M70/M73?" msgstr "" -"Sorgente\n" -"Nessuna" +"Impossibile riprendere contesto da stack frame invalido - M70/M73 mancante?" -#: src/hal/utils/scope_trig.c:124 -#, c-format -msgid "" -"Source\n" -"Chan %2d" +#: src/emc/rs274ngc/interp_convert.cc:3327 +#: src/emc/rs274ngc/interp_convert.cc:3344 +#: src/emc/rs274ngc/interp_convert.cc:3359 +#: src/emc/rs274ngc/interp_convert.cc:3373 +#: src/emc/rs274ngc/interp_convert.cc:3387 +msgid "Cannot enable overrides with cutter radius compensation on" msgstr "" -"Sorgente\n" -"Canale %2d" +"Impossibile abilitare superamento con compensazione raggio utensile attiva" -#: src/hal/utils/scope_trig.c:199 tcl/tklinuxcnc.tcl:827 -#: src/emc/usr_intf/touchy/touchy.glade:2469 -msgid "Auto" -msgstr "Auto" +#: src/emc/rs274ngc/interp_convert.cc:3334 +#: src/emc/rs274ngc/interp_convert.cc:3349 +#: src/emc/rs274ngc/interp_convert.cc:3364 +#: src/emc/rs274ngc/interp_convert.cc:3378 +#: src/emc/rs274ngc/interp_convert.cc:3392 +msgid "Cannot disable overrides with cutter radius compensation on" +msgstr "" +"Impossibile disabilitare superamento con compensazione raggio utensile attiva" -#: src/hal/utils/scope_trig.c:201 -msgid "Force" -msgstr "Forza" +#: src/emc/rs274ngc/interp_convert.cc:3506 +#: src/emc/rs274ngc/interp_convert.cc:3507 +#: src/emc/rs274ngc/interp_convert.cc:3508 +#, c-format +msgid "Indexing axis %c can only be moved with G0" +msgstr "Asse Indexato %c può muoversi solo con G0" -#: src/hal/utils/scope_trig.c:235 src/hal/utils/scope_trig.c:269 -msgid "Level" -msgstr "Livello" +#: src/emc/rs274ngc/interp_convert.cc:3515 +#: src/emc/rs274ngc/interp_convert.cc:3517 +#: src/emc/rs274ngc/interp_convert.cc:3519 +#, c-format +msgid "Indexing axis %c can only be moved alone" +msgstr "Asse Indexato %c può muoversi solo singolarmente" -#: src/hal/utils/scope_trig.c:303 -msgid "Trigger Source" -msgstr "Sorgente Trigger" +#: src/emc/rs274ngc/interp_convert.cc:3621 +msgid "Cannot probe with feed per rev mode" +msgstr "Operazione di misura impossibile in modalità avanzamento per giro" -#: src/hal/utils/scope_trig.c:304 -msgid "Select a channel to use for triggering." -msgstr "Selezione un canale da usare per il triggering." +#: src/emc/rs274ngc/interp_convert.cc:3669 +msgid "Cannot change retract mode with cutter radius compensation on" +msgstr "" +"Impossibile cambiare modo retract con compensazione raggio utensile attiva" -#: src/hal/utils/scope_trig.c:327 -msgid "Chan" -msgstr "Canale" +#: src/emc/rs274ngc/interp_convert.cc:3703 +msgid "G10 L1 without offsets has no effect" +msgstr "G10 L1 senza offsets non ha effetto" -#: src/hal/utils/scope_trig.c:328 -msgid "Source" -msgstr "Sorgente" +#: src/emc/rs274ngc/interp_convert.cc:3809 +msgid "Q number in G10 is not an integer" +msgstr "Il numero Q in G10 non è intero" -#: src/emc/motion/control.c:261 -msgid "Unexpected realtime delay: check dmesg for details." -msgstr "Ritardo realtime inatteso: controlla dmesg per i dettagli." +#: src/emc/rs274ngc/interp_convert.cc:3810 +msgid "Invalid tool orientation" +msgstr "Orientazione utensile errata" -#: src/emc/motion/control.c:263 -#, c-format -msgid "" -"\n" -"In recent history there were\n" -"%ld, %ld, %ld, %ld, and %ld\n" -"elapsed clocks between calls to the motion controller.\n" -msgstr "" -"\n" -"Nella storia recente vi sono\n" -"%ld, %ld, %ld, %ld, e %ld\n" -"cicli di clocks trascorsi tra le chiamate al controllo movimento.\n" +#: src/emc/rs274ngc/interp_convert.cc:3933 +msgid "I J words not allowed with G10 L2" +msgstr "Parametri I J non consentiti con G10 L2" -#: src/emc/motion/control.c:268 -#, c-format +#: src/emc/rs274ngc/interp_convert.cc:3954 msgid "" -"This time, there were %ld which is so anomalously\n" -"large that it probably signifies a problem with your\n" -"realtime configuration. For the rest of this run of\n" -"EMC, this message will be suppressed.\n" -"\n" +"Cannot change the active coordinate system with cutter radius compensation on" msgstr "" -"Questo tempo, in cui %ld è cosi particolarmente\n" -"grande che probabilmente indica un problema con la tua\n" -"configurazione realtime. Per il seguito di questa sessione di\n" -"EMC, questo messaggio verrà eliminato.\n" -"\n" - -#: src/emc/motion/control.c:384 -msgid "G38.4 move finished without breaking contact." -msgstr "Movimento G38.4 concluso senza interruzione contatto" - -#: src/emc/motion/control.c:387 -msgid "G38.2 move finished without making contact." -msgstr "Movimento G38.2 concluso senza raggiungimento contatto" - -#: src/emc/motion/control.c:401 -msgid "Probe tripped during non-probe MDI command." -msgstr "Contatto sensore durante comando MDI senza-sensore." +"Impossibile cambiare sistema coordinate con compensazione raggio utensile " +"attiva " -#: src/emc/motion/control.c:429 -msgid "Probe tripped during homing motion." -msgstr "Contatto sensore durante movimento azzeramento" +#: src/emc/rs274ngc/interp_convert.cc:3962 +msgid "R not allowed in G10 L20" +msgstr "R non consentito in G10 L20" -#: src/emc/motion/control.c:433 -msgid "Probe tripped during a jog." -msgstr "Contatto sensore durante movimento" +#: src/emc/rs274ngc/interp_convert.cc:4550 +msgid "Spindle not turning in G33" +msgstr "Il mandrino non gira in G33" -#: src/emc/motion/control.c:578 -#, c-format -msgid "fault %d during orient in progress" -msgstr "errore %d durante orientazione in progress" +#: src/emc/rs274ngc/interp_convert.cc:4560 +msgid "Spindle not turning in G33.1" +msgstr "Il mandrino non gira in G33.1" -#: src/emc/motion/control.c:718 -msgid "motion stopped by enable input" -msgstr "movimento fermato da enable input" +#: src/emc/rs274ngc/interp_convert.cc:4603 +msgid "BUG: An axis incorrectly moved along with an indexer" +msgstr "BUG: Un movimento asse non corretto con un indexer" -#: src/emc/motion/control.c:741 -#, c-format -msgid "joint %d on limit switch error" -msgstr "contatto sul limite %d" +#: src/emc/rs274ngc/interp_convert.cc:4616 +msgid "BUG: trying to index incorrect axis" +msgstr "BUG: tentativo di indicare asse non corretto" -#: src/emc/motion/control.c:753 -#, c-format -msgid "joint %d amplifier fault" -msgstr "errore amplificatore asse %d" +#: src/emc/rs274ngc/interp_convert.cc:4708 +msgid "Cannot use G76 threading cycle with cutter radius compensation on" +msgstr "" +"Impossibile usare il ciclo di filettatura G76 con compensazione raggio " +"utensile attiva" -#: src/emc/motion/control.c:762 -#, c-format -msgid "joint %d following error" -msgstr "Errore Inseguimento asse %d" +#: src/emc/rs274ngc/interp_convert.cc:4711 +msgid "In G76, I must not be 0" +msgstr "in G76, I non può essere 0" -#: src/emc/motion/control.c:1444 -#, c-format -msgid "Exceeded positive soft limit on joint %d" -msgstr "Limite soft positivo superato sull'asse %d" +#: src/emc/rs274ngc/interp_convert.cc:4713 +msgid "In G76, J must be greater than 0" +msgstr "in G76, J deve essere maggiore di 0" -#: src/emc/motion/control.c:1449 -#, c-format -msgid "Exceeded negative soft limit on joint %d" -msgstr "Limite soft negativo superato sull'asse %d" +#: src/emc/rs274ngc/interp_convert.cc:4715 +msgid "In G76, K must be greater than J" +msgstr "in G76, K deve essere maggiore di J" -#: src/emc/motion/command.c:159 -#, c-format -msgid "Can't jog invalid joint number %d." -msgstr "Movimento impossibile per l'asse numero %d non valido" +#: src/emc/rs274ngc/interp_convert.cc:4858 +msgid "" +"Length of cutter compensation entry move is not greater than the tool radius" +msgstr "" +"La lunghezza del movimento di ingresso con compensazione raggio utensile non " +"è maggiore del raggio utensile" -#: src/emc/motion/command.c:163 -#, c-format -msgid "Can't jog joint %d further past max hard limit." -msgstr "Impossibile muovere l'asse %d oltre il limite hard max" +#: src/emc/rs274ngc/interp_convert.cc:5077 +msgid "Zero degree inside corner is invalid for cutter compensation" +msgstr "" +"Angolo interno di 0 gradi non è consentito con la compensazione utensile " +"attiva" -#: src/emc/motion/command.c:168 -#, c-format -msgid "Can't jog joint %d further past min hard limit." -msgstr "Impossibile muovere l'asse %d oltre il limite hard min" +#: src/emc/rs274ngc/interp_convert.cc:5115 +#: src/emc/rs274ngc/interp_convert.cc:5123 +msgid "" +"Arc to straight motion makes a corner the compensated tool can't fit in " +"without gouging" +msgstr "" +"Il movimento da arco a linea genera un angolo che l'utensile compensato non " +"può eseguire senza urto" -#: src/emc/motion/command.c:174 -#, c-format -msgid "Can't jog joint %d further past max soft limit." -msgstr "Impossibile muovere l'asse %d oltre il limite soft max" +#: src/emc/rs274ngc/interp_convert.cc:5207 +msgid "Cannot change tools with cutter radius compensation on" +msgstr "Impossibile cambiare utensile con compensazione raggio utensile attiva" -#: src/emc/motion/command.c:179 -#, c-format -msgid "Can't jog joint %d further past min soft limit." -msgstr "Impossibile muovere l'asse %d oltre il limite soft min" +#: src/emc/rs274ngc/interp_convert.cc:5328 +msgid "Cannot change tool offset with cutter radius compensation on" +msgstr "" +"Impossibile cambiare offset utensile con compensazione raggio utensile attiva" -#: src/emc/motion/command.c:237 +#: src/emc/rs274ngc/interp_queue.cc:694 #, c-format -msgid "%s move on line %d would exceed joint %d's positive limit" -msgstr "%s movimento sulla linea %d oltrepassa il limite positivo dell'asse %d" +msgid "" +"BUG: cutter compensation has generated an invalid arc with mismatched radii " +"r1 %f r2 %f\n" +msgstr "" +"ERRORE: la compensazione utensile ha generato un arco invalido con raggio " +"sbagliato r1 %f r2 %f\n" -#: src/emc/motion/command.c:240 -#, c-format -msgid "%s move in MDI would exceed joint %d's positive limit" -msgstr "%s movimento in MDI oltrepassa il limite positivo dell'asse %d" +#: src/emc/rs274ngc/interp_queue.cc:716 +msgid "BUG: Unsupported plane in cutter compensation" +msgstr "ERRORE: Piano non supportato in compensazione utensile" -#: src/emc/motion/command.c:247 -#, c-format -msgid "%s move on line %d would exceed joint %d's negative limit" -msgstr "%s movimento sulla linea %d oltrepassa il limite negativo dell'asse %d" +#: src/emc/rs274ngc/interp_queue.cc:729 +msgid "" +"Straight traverse in concave corner cannot be reached by the tool without " +"gouging" +msgstr "" +"Il movimento lineare in un angolo concavo non può essere raggiunto " +"dall'utensile senza urto" -#: src/emc/motion/command.c:250 +#: src/emc/rs274ngc/interp_queue.cc:757 #, c-format -msgid "%s move in MDI would exceed joint %d's negative limit" -msgstr "%s movimento in MDI oltrepassa il limite negativo dell'asse %d" +msgid "BUG: Unsupported plane [%d] in cutter compensation" +msgstr "ERRORE: Piano [%d] non supportatto in compensazione utensile" -#: src/emc/motion/command.c:500 -msgid "all joints must be homed before going into coordinated mode" +#: src/emc/rs274ngc/interp_queue.cc:771 +msgid "" +"Straight feed in concave corner cannot be reached by the tool without gouging" msgstr "" -"Tutti gi assi devono essere azzerati prima di andare in modalità coordinate" +"Il movimento lineare in un angolo concavo non può essere raggiunto " +"dall'utensile senza urto" -#: src/emc/motion/command.c:521 -msgid "all joints must be homed before going into teleop mode" -msgstr "" -"Tutti gi assi devono essere azzerati prima di andare in modalità teleop" +#: src/emc/rs274ngc/interp_cycles.cc:630 +msgid "Cannot feed with zero feed rate" +msgstr "Impossibile eseguire avanzamento con avanzamento nullo" -#: src/emc/motion/command.c:675 src/emc/motion/command.c:741 -#: src/emc/motion/command.c:814 -msgid "Can't jog joint in coordinated mode." -msgstr "Impossibile movimentare assi in modalità coordinate" +#: src/emc/rs274ngc/interp_cycles.cc:631 +msgid "Cannot use inverse time feed with canned cycles" +msgstr "Impossibile usare questo tipo di avanzamento con cicli fissi" -#: src/emc/motion/command.c:680 src/emc/motion/command.c:746 -#: src/emc/motion/command.c:819 -msgid "Can't jog joint when not enabled." -msgstr "Impossibile movimentare assi senza abilitazione" +#: src/emc/rs274ngc/interp_cycles.cc:632 +msgid "Cannot use canned cycles with cutter compensation on" +msgstr "Impossibile usare cicli fissi con compensazione raggio utensile attiva" -#: src/emc/motion/command.c:685 src/emc/motion/command.c:824 -msgid "Can't jog any joints while homing." -msgstr "Impossibile movimentare assi durante azzeramento" +#: src/emc/rs274ngc/interp_cycles.cc:829 +msgid "G17 canned cycle is not possible on a machine without Z axis" +msgstr "Il ciclo fisso G17 non è possibile su una macchina senza asse Z" -#: src/emc/motion/command.c:751 -msgid "Can't jog any joint while homing." -msgstr "Impossibile movimentare nessun asse durante azzeramento" +#: src/emc/rs274ngc/interp_cycles.cc:1015 +msgid "G17.1 canned cycle is not possible on a machine without W axis" +msgstr "Il ciclo fisso G17.1 non è possibile su una macchina senza asse W" -#: src/emc/motion/command.c:881 -msgid "need to be enabled, in coord mode for linear move" -msgstr "necessaria abilitazione, per moto lineare in modalità coordinate" +#: src/emc/rs274ngc/interp_cycles.cc:1231 +msgid "G19 canned cycle is not possible on a machine without X axis" +msgstr "Il ciclo fisso G19 non è possibile su una macchina senza asse X" -#: src/emc/motion/command.c:891 -msgid "can't do linear move with limits exceeded" -msgstr "movimento lineare impossibile in presenza superamento limiti" +#: src/emc/rs274ngc/interp_cycles.cc:1399 +msgid "G19.1 canned cycle is not possible on a machine without U axis" +msgstr "Il ciclo fisso G19.1 non è possibile su una macchina senza asse U" -#: src/emc/motion/command.c:910 -msgid "can't add linear move" -msgstr "impossibile aggiungere movimento lineare" +#: src/emc/rs274ngc/interp_cycles.cc:1624 +msgid "G18 canned cycle is not possible on a machine without Y axis" +msgstr "Il ciclo fisso G18 non è possibile su una macchina senza asse Y" -#: src/emc/motion/command.c:930 -msgid "need to be enabled, in coord mode for circular move" -msgstr "necessaria abilitazione, per moto circolare in modalità coordinate" +#: src/emc/rs274ngc/interp_cycles.cc:1791 +msgid "G18.1 canned cycle is not possible on a machine without V axis" +msgstr "Il ciclo fisso G18.1 non è possibile su una macchina senza asse V" -#: src/emc/motion/command.c:940 -msgid "can't do circular move with limits exceeded" -msgstr "movimento circolare impossibile in presenza superamento limiti" +#: src/emc/rs274ngc/interp_find.cc:170 +msgid "Cannot use polar coordinates with G53" +msgstr "Impossibile usare coordinate polari con G53" -#: src/emc/motion/command.c:958 -msgid "can't add circular move" -msgstr "impossibile aggiungere movimento circolare" +#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 +#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 +#: src/emc/rs274ngc/interp_find.cc:347 +msgid "Cannot specify X or Y words with polar coordinate" +msgstr "Impossibile specificare parametri X e Y con coordinate polari" -#: src/emc/motion/command.c:1048 -msgid "MOTION: can't STEP while already executing" -msgstr "MOTION: STEP impossibile in presenza di altre esecuzioni" +#: src/emc/rs274ngc/interp_find.cc:272 +msgid "Must specify angle in polar coordinate if at the origin" +msgstr "" +"Bisogna specificare l'angolo in coordinate polari se riferite all'origine" -#: src/emc/motion/command.c:1140 -msgid "can't enable motion, enable input is false" -msgstr "impossibile abilitare movimento, input enable è falso" +#: src/emc/rs274ngc/interp_find.cc:338 +msgid "" +"Incremental motion with polar coordinates is indeterminate when at the origin" +msgstr "" +"Movimento incrementale in coordinate polari è indeterminato nell'origine" -#: src/emc/motion/command.c:1213 -msgid "must be in joint mode to home" -msgstr "Bisogna essere in modalità assi per eseguire azzeramento" +#: src/emc/rs274ngc/interp_find.cc:348 +msgid "G91 motion with polar coordinates is indeterminate when at the origin" +msgstr "Movimento G91 in coordinate polari è indeterminato nell'origine" -#: src/emc/motion/command.c:1224 src/emc/motion/command.c:1235 -msgid "homing sequence already in progress" -msgstr "sequenza azzeramento già attiva" +#: src/emc/rs274ngc/interp_find.cc:720 +#, c-format +msgid "Requested tool %d not found in the tool table" +msgstr "Utensile richiesto %d mancante nella tabella utensili" -#: src/emc/motion/command.c:1233 -msgid "homing already in progress" -msgstr "azzeramento già attivo" +#: src/emc/rs274ngc/interp_internal.cc:161 +msgid "Cannot use polar coordinate on a machine lacking X or Y axes" +msgstr "Impossibile usare coordinate polari su una macchina senza asse X o Y" -#: src/emc/motion/command.c:1263 -msgid "must be in joint mode or disabled to unhome" -msgstr "Bisogna essere in modalità assi oppure scegliere dis-azzeraramento" +#: src/emc/rs274ngc/interp_internal.cc:162 +msgid "Cannot use polar coordinate except in G17 plane" +msgstr "Impossibile usare coordinate polari tranne che sul piano G17" -#: src/emc/motion/command.c:1275 src/emc/motion/command.c:1298 -#, c-format -msgid "Cannot unhome while homing, joint %d" -msgstr "Impossibile dis-azzerare durante azzeramento, asse %d" +#: src/emc/rs274ngc/interp_internal.cc:163 +msgid "Cannot specify both polar coordinate and X word" +msgstr "Impossibile specificare sia coordinate polari che asse X" -#: src/emc/motion/command.c:1279 src/emc/motion/command.c:1302 -#, c-format -msgid "Cannot unhome while moving, joint %d" -msgstr "Impossibile dis-azzerare durante movimento, asse %d" +#: src/emc/rs274ngc/interp_internal.cc:164 +msgid "Cannot specify both polar coordinate and Y word" +msgstr "Impossibile specificare sia coordinate polari che asse Y" -#: src/emc/motion/command.c:1307 -#, c-format -msgid "Cannot unhome inactive joint %d" -msgstr "Impossibile dis-azzerare asse %d inattivo" +#: src/emc/rs274ngc/interp_internal.cc:185 +#: src/emc/rs274ngc/interp_internal.cc:199 +#: src/emc/rs274ngc/interp_internal.cc:214 +msgid "Polar coordinates can only be used for motion" +msgstr "Le coordinate polari possono essere usate solo per movimenti" -#: src/emc/motion/command.c:1311 +#: src/emc/rs274ngc/interp_read.cc:1150 src/emc/rs274ngc/interp_read.cc:1154 #, c-format -msgid "Cannot unhome invalid joint %d (max %d)" -msgstr "Impossibile dis-azzerare asse invalido %d (max %d)" - -#: src/emc/motion/command.c:1338 -msgid "need to be enabled, in coord mode for probe move" -msgstr "necessaria abilitazione, per movimento sonda in modalità coordinate" +msgid "Bad character '\\%03o' used" +msgstr "Uso di carattere '\\%03o' errato" -#: src/emc/motion/command.c:1348 -msgid "can't do probe move with limits exceeded" -msgstr "Impossibile uso sonda in presenza di superamento limiti" +#: src/emc/rs274ngc/interp_read.cc:1154 +#, c-format +msgid "Bad character '%c' used" +msgstr "Uso di carattere '%c' errato" -#: src/emc/motion/command.c:1362 -msgid "Probe is already clear when starting G38.4 or G38.5 move" -msgstr "Sonda già inattiva all'inizio del movimento con G38.4 o G38.5" +# Anmerkung:FJ: Schrägstrich, atan? Klären? Division wie bei c-Funktion atan2(x,y) ??? +#: src/emc/rs274ngc/interp_read.cc:1678 +msgid "Left bracket missing after 'while'" +msgstr "Parentesi sinistra mancante dopo 'while'" -#: src/emc/motion/command.c:1364 -msgid "Probe is already tripped when starting G38.2 or G38.3 move" -msgstr "Sonda già attiva all'inizio del movimento con G38.2 o G38.3" +#: src/emc/rs274ngc/interp_read.cc:1693 +msgid "Left bracket missing after 'repeat'" +msgstr "Parentesi sinistra mancante dopo 'repeat'" -#: src/emc/motion/command.c:1376 -msgid "can't add probe move" -msgstr "impossibile aggiungere movimento sonda" +# Anmerkung:FJ: Schrägstrich, atan? Klären? Division wie bei c-Funktion atan2(x,y) ??? +#: src/emc/rs274ngc/interp_read.cc:1708 +msgid "Left bracket missing after 'if'" +msgstr "Parentesi sinistra mancante dopo 'if'" -#: src/emc/motion/command.c:1400 -msgid "need to be enabled, in coord mode for rigid tap move" -msgstr "necessaria abilitazione, per movimento rigido in modalità coordinate" +# Anmerkung:FJ: Schrägstrich, atan? Klären? Division wie bei c-Funktion atan2(x,y) ??? +#: src/emc/rs274ngc/interp_read.cc:1723 +msgid "Left bracket missing after 'elseif'" +msgstr "Parentesi sinistra mancante dopo 'elseif'" -#: src/emc/motion/command.c:1410 -msgid "can't do rigid tap move with limits exceeded" -msgstr "Impossibile uso movimento tap rigido in presenza di superamento limiti" +#: src/emc/rs274ngc/interp_read.cc:1926 +msgid "Cannot read current position with cutter radius compensation on" +msgstr "" +"Operazione di lettura posizione corrente impossibile con compensazione " +"raggio utensile attiva " -#: src/emc/motion/command.c:1421 -msgid "can't add rigid tap move" -msgstr "impossibile aggiungere movimento tap rigido" +#: src/emc/rs274ngc/interp_read.cc:1941 +msgid "Expected # reading parameter" +msgstr "Attesi # parametri lettura" -#: src/emc/motion/command.c:1435 -msgid "need to be enabled, in teleop mode for teleop move" -msgstr "necessaria abilitazione, per movimento teleop in modalità teleop" +#: src/emc/rs274ngc/interp_read.cc:1943 +msgid "Expected ] reading bracketed parameter" +msgstr "Atteso ] leggendo parametro parentesi" -#: src/emc/motion/command.c:1605 +#: src/emc/rs274ngc/interp_read.cc:2615 #, c-format -msgid "joint %d: too many compensation entries" -msgstr "asse %d: troppi parametri compensazione" +msgid "bad number format (conversion failed) parsing '%s'" +msgstr "formato numero errato (conversione fallita) analizzando '%s'" -#: src/emc/motion/command.c:1611 +#: src/emc/rs274ngc/interp_read.cc:2616 #, c-format -msgid "joint %d: compensation values must increase" -msgstr "asse %d: i valori della compensazione devono crescere" +msgid "bad number format (trailing characters) parsing '%s'" +msgstr "formato numero errato (caratteri errati) analizzando '%s'" -#: src/emc/motion/command.c:1640 -#, c-format -msgid "unrecognized command %d" -msgstr "comando %d sconosciuto" +#: src/emc/rs274ngc/interp_read.cc:2706 +msgid "Calculation resulted in 'not a number'" +msgstr "Il calcolo effettuato da 'not a number'" -#: src/emc/motion/motion.c:185 -msgid "MOTION: hal_init() failed\n" -msgstr "MOTION: hal_init() fallito\n" +#: src/emc/rs274ngc/interp_read.cc:2708 +msgid "Calculation resulted in 'infinity'" +msgstr "Il calcolo effettuato risulta 'infinito'" -#: src/emc/motion/motion.c:190 +#: src/emc/rs274ngc/interp_read.cc:3001 #, c-format -msgid "MOTION: num_joints is %d, must be between 1 and %d\n" -msgstr "MOTION: num_joints vale %d, deve essere tra 1 e %d\n" +msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" +msgstr "Fine file:%s cercando o-word: o<%s> dalla linea: %d" -#: src/emc/motion/motion.c:197 -#, c-format -msgid "MOTION: num_dio is %d, must be between 1 and %d\n" -msgstr "MOTION: num_dio vale %d, deve essere tra 1 e %d\n" +#: src/emc/rs274ngc/interp_read.cc:3113 +msgid "Multiple U words on one line" +msgstr "Parametro U presente più volte su una linea" -#: src/emc/motion/motion.c:204 -#, c-format -msgid "MOTION: num_aio is %d, must be between 1 and %d\n" -msgstr "MOTION: num_aio vale %d, deve essere tra 1 e %d\n" +#: src/emc/rs274ngc/interp_read.cc:3129 +msgid "Multiple V words on one line" +msgstr "Parametro V presente più volte su una linea" -#: src/emc/motion/motion.c:212 -msgid "MOTION: init_hal_io() failed\n" -msgstr "MOTION: init_hal_io() fallito\n" +#: src/emc/rs274ngc/interp_read.cc:3145 +msgid "Multiple W words on one line" +msgstr "Parametro W presente più volte su una linea" -#: src/emc/motion/motion.c:221 -msgid "MOTION: init_comm_buffers() failed\n" -msgstr "MOTION: init_comm_buffers() fallito\n" +#: src/emc/rs274ngc/interp_o_word.cc:97 +#, c-format +msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" +msgstr "File:%s La linea:%d ridefinisce sub: o|%s| già definita nel file:%s" -#: src/emc/motion/motion.c:229 -msgid "MOTION: init_threads() failed\n" -msgstr "MOTION: init_threads() fallito\n" +#: src/emc/rs274ngc/interp_o_word.cc:722 +#, fuzzy, c-format +msgid "%d: not in a subroutine definition: '%s'" +msgstr "Nessuna definizione in subroutine" -#: src/emc/motion/motion.c:254 +#: src/emc/rs274ngc/interp_o_word.cc:759 src/emc/rs274ngc/interp_o_word.cc:809 #, c-format -msgid "MOTION: hal_stop_threads() failed, returned %d\n" -msgstr "MOTION: hal_stop_threads() fallito, riporta %d\n" +msgid "%d: duplicate O-word label: '%s' - defined in line %d" +msgstr "" -#: src/emc/motion/motion.c:260 +#: src/emc/rs274ngc/interp_o_word.cc:862 #, c-format -msgid "MOTION: rtapi_shmem_delete() failed, returned %d\n" -msgstr "MOTION: rtapi_shmem_delete() fallito, riporta %d\n" +msgid "%d: duplicate O-word label - already defined in line %d: '%s'" +msgstr "" -#: src/emc/motion/motion.c:266 +#: src/emc/rs274ngc/interp_o_word.cc:886 src/emc/rs274ngc/interp_o_word.cc:944 +#: src/emc/rs274ngc/interp_o_word.cc:978 src/emc/rs274ngc/interp_o_word.cc:996 +#: src/emc/rs274ngc/interp_o_word.cc:1013 +#: src/emc/rs274ngc/interp_o_word.cc:1038 #, c-format -msgid "MOTION: hal_exit() failed, returned %d\n" -msgstr "MOTION: hal_exit() fallito, riporta %d\n" +msgid "%d: undefined O-word label: '%s'" +msgstr "" -#: src/emc/motion/motion.c:289 -msgid "MOTION: emcmot_hal_data malloc failed\n" -msgstr "MOTION: emcmot_hal_data malloc fallito\n" +#: src/emc/rs274ngc/interp_o_word.cc:889 src/emc/rs274ngc/interp_o_word.cc:947 +#, c-format +msgid "%d: no matching 'if' label: '%s' (found '%s' in line %d)" +msgstr "" -#: src/emc/motion/motion.c:597 +#: src/emc/rs274ngc/interp_o_word.cc:981 #, c-format -msgid "MOTION: joint %d pin/param export failed\n" -msgstr "MOTION: asse %d pin/param export fallito\n" +msgid "%d: no matching label: '%s' (found '%s' in line %d): '%s'" +msgstr "" -#: src/emc/motion/homing.c:80 src/emc/motion/homing.c:748 +#: src/emc/rs274ngc/interp_o_word.cc:999 src/emc/rs274ngc/interp_o_word.cc:1016 #, c-format -msgid "hit limit in home state %d" -msgstr "raggiunto limite in stato home %d" +msgid "%d: no matching while/do label: '%s' (found '%s' in line %d)" +msgstr "" -#: src/emc/motion/homing.c:90 +#: src/emc/rs274ngc/interp_o_word.cc:1042 #, c-format -msgid "end of move in home state %d" -msgstr "fine movimento in stato home%d" +msgid "%d: no matching label: '%s' (found '%s' in line %d)" +msgstr "" -#: src/emc/motion/homing.c:185 +#: src/emc/rs274ngc/interp_namedparams.cc:166 #, c-format -msgid "unknown state '%d' during homing sequence" -msgstr "stato '%d' sconosciuto durante sequenza azzeramento" +msgid "Named parameter #<%s> not defined" +msgstr "Parametro nominato #<%s> non definito" -#: src/emc/motion/homing.c:246 -msgid "Cannot home while shared home switch is closed" -msgstr "Impossibile azzeramento mente lo switch di zero condiviso è chiuso" +#: src/emc/rs274ngc/interp_namedparams.cc:196 +#, c-format +msgid "cant open ini file '%s'" +msgstr "impossibile aprire file ini '%s' " -#: src/emc/motion/homing.c:290 -msgid "" -"invalid homing config: non-zero LATCH_VEL needs either SEARCH_VEL or " -"USE_INDEX" -msgstr "" -"configurazione azzeramento errata: LATCH_VEL diversa da zero necessita di " -"SEARCH_VEL oUSE_INDEX" +#: src/emc/rs274ngc/interp_namedparams.cc:213 +#, c-format +msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" +msgstr "Parametro ini nominato #<%s> non definito in inifile '%s': error=0x%x" -#: src/emc/motion/homing.c:299 -msgid "invalid homing config: non-zero SEARCH_VEL needs LATCH_VEL" -msgstr "configurazione azzeramento errata: SEARCH_VEL necessita di LATCH_VEL" +#: src/emc/rs274ngc/interp_namedparams.cc:237 +#, c-format +msgid "fetch_hal_param: hal_init(%s): %d" +msgstr "fetch_hal_param: hal_init(%s): %d" -#: src/emc/motion/homing.c:447 -msgid "Home switch inactive before start of backoff move" -msgstr "Switch zero inattivo prima del movimento di ritorno" +#: src/emc/rs274ngc/interp_namedparams.cc:238 +#, c-format +msgid "fetch_hal_param: hal_ready(): %d" +msgstr "fetch_hal_param: hal_ready(): %d" -#: src/emc/motion/homing.c:495 -msgid "Home switch active before start of latch move" -msgstr "Switch zero attivo prima dell'inizio del movimento di avvicinamento" +#: src/emc/rs274ngc/interp_namedparams.cc:419 +#, c-format +msgid "Internal error: Could not assign #<%s>" +msgstr "Errore interno: non posso assegnare #<%s>" -#: src/emc/motion/homing.c:551 -msgid "Home switch inactive before start of latch move" -msgstr "Switch zero inattivo prima dell'inizio del movimento di avvicinamento" +#: src/emc/rs274ngc/interp_namedparams.cc:427 +#, c-format +msgid "Cannot assign to read-only parameter #<%s>" +msgstr "Impossibile assegnare parametro #<%s> read-only" -#: src/emc/motion/homing.c:797 +#: src/emc/rs274ngc/interp_namedparams.cc:731 #, c-format -msgid "unknown state '%d' during homing" -msgstr "stato '%d' sconosciuto durante azzeramento" +msgid "BUG: lookup_named_param(%s): unhandled index=%fn" +msgstr "BUG: lookup_named_param(%s): non gestito indice=%fn" -#: tcl/bin/emccalib.tcl:80 -msgid "LinuxCNC Servo Axis Calibration" -msgstr "LinuxCNC Calibrazione Asse Servo" +#: src/emc/rs274ngc/rs274ngc_pre.cc:1407 src/emc/rs274ngc/rs274ngc_pre.cc:1482 +msgid "Queue is not empty after tool change" +msgstr "Coda non vuota dopo un cambio utensile" -#: tcl/bin/emccalib.tcl:90 -msgid "Save To File" -msgstr "Salvare su File" +#: src/emc/rs274ngc/rs274ngc_pre.cc:1786 +#, c-format +msgid "Unable to open parameter file: '%s'" +msgstr "Impossibile aprire il file parametri : '%s'" -#: tcl/bin/emccalib.tcl:106 tcl/bin/genedit.tcl:77 tcl/bin/halconfig.tcl:151 -#: tcl/bin/halshow.tcl:85 tcl/mini.tcl:2516 tcl/tklinuxcnc.tcl:719 -#: tcl/ngcgui.tcl:549 -msgid "File" -msgstr "File" +#: src/emc/rs274ngc/rs274ngc_return.hh:19 +msgid "A file is already open" +msgstr "Un file è già aperto" -#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:231 tcl/bin/halconfig.tcl:153 -#: tcl/mini.tcl:3558 src/emc/usr_intf/touchy/touchy.glade:2420 -msgid "Refresh" -msgstr "Aggiorna" +#: src/emc/rs274ngc/rs274ngc_return.hh:21 +#, fuzzy +msgid "All axes missing with g52 or g92" +msgstr "Nessuna coordinata per G92" -#: tcl/bin/emccalib.tcl:110 tcl/bin/genedit.tcl:82 tcl/bin/halconfig.tcl:155 -#: tcl/mini.tcl:2535 -msgid "Save" -msgstr "Salva" +#: src/emc/rs274ngc/rs274ngc_return.hh:22 +msgid "All axes missing with motion code" +msgstr "Tutti gli assi mancanti con un codice di movimento" -#: tcl/bin/emccalib.tcl:159 tcl/bin/halconfig.tcl:623 -#, tcl-format -msgid "Tune %d" -msgstr "Regolare %d" +#: src/emc/rs274ngc/rs274ngc_return.hh:23 +msgid "Arc radius too small to reach end point" +msgstr "Raggio arco troppo piccolo per raggiungere il punto finale" -#: tcl/bin/emccalib.tcl:160 tcl/bin/halconfig.tcl:628 -msgid "INI Name" -msgstr "Nome INI" +#: src/emc/rs274ngc/rs274ngc_return.hh:24 +msgid "Argument to acos out of range" +msgstr "Argomento acos fuori limite" -#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:629 -msgid "HAL's Value" -msgstr "Valore HAL" +#: src/emc/rs274ngc/rs274ngc_return.hh:25 +msgid "Argument to asin out of range" +msgstr "Argomento asin fuori limite" -#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:631 -msgid "Next Value" -msgstr "Valore Seguente" +#: src/emc/rs274ngc/rs274ngc_return.hh:26 +msgid "Attempt to divide by zero" +msgstr "Tentativo di divisione per zero" -#: tcl/bin/emccalib.tcl:225 tcl/bin/halconfig.tcl:680 -#: tcl/bin/halconfig.tcl:731 -msgid "Test" -msgstr "Test" +#: src/emc/rs274ngc/rs274ngc_return.hh:27 +msgid "Attempt to raise negative to non integer power" +msgstr "Tentativo di elevazione di numero negativo a potenza non intera" -#: tcl/bin/emccalib.tcl:358 tcl/bin/halconfig.tcl:883 -#, tcl-format -msgid "" -"The HAL parameter \n" -" %s \n" -" has changed. \n" -" Really quit?" -msgstr "" -"Il parametro HAL \n" -" %s \n" -" è cambiato. \n" -"Uscire veramente?" +#: src/emc/rs274ngc/rs274ngc_return.hh:28 +msgid "Bad format unsigned integer" +msgstr "Formato errato intero senza segno" -#: tcl/bin/emccalib.tcl:383 tcl/bin/halconfig.tcl:1170 -msgid "" -"Not permitted to save here.\n" -"\n" -" You need to copy a configuration to your home directory and work there." -msgstr "" -"Non è possibile salvare qui.\n" -"\n" -" Bisogna copiare una configurazione nella home directory e modificarla." +#: src/emc/rs274ngc/rs274ngc_return.hh:29 +msgid "Bad number format" +msgstr "Formato numero errato" -#: tcl/bin/emccalib.tcl:457 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 -#: tcl/bin/pickconfig.tcl:544 tcl/bin/pickconfig.tcl:555 -#: tcl/scripts/Set_Coordinates.tcl:205 tcl/scripts/Set_Coordinates.tcl:228 -#, tcl-format -msgid "can't save %s" -msgstr "Impossibile salvare %s " +#: src/emc/rs274ngc/rs274ngc_return.hh:30 +msgid "Bug bad g code modal group 0" +msgstr "Errore: Errato codice G in Gruppo modale 0" -#: tcl/bin/emcdebug.tcl:166 tcl/bin/emcdebug.tcl:177 -msgid "LinuxCNC Debug" -msgstr "LinuxCNC Debug" +#: src/emc/rs274ngc/rs274ngc_return.hh:31 +msgid "Bug code not g0 or g1" +msgstr "Errore: Codice programma diverso da G0 o G1" -#: tcl/bin/emcdebug.tcl:185 -msgid "Invalid INI file entries" -msgstr "Valori errati nel file INI" +#: src/emc/rs274ngc/rs274ngc_return.hh:32 +msgid "Bug code not g17 g18 or g19" +msgstr "Errore: Codice programma diverso da G17, G18 o G19" -#: tcl/bin/emcdebug.tcl:186 -msgid "Configuration information" -msgstr "Informazione configurazione" +#: src/emc/rs274ngc/rs274ngc_return.hh:33 +msgid "Bug code not g20 or g21" +msgstr "Errore: Codice programma diverso da G20 o G21" -#: tcl/bin/emcdebug.tcl:187 -msgid "Use of defaults" -msgstr "Uso di defaults" +#: src/emc/rs274ngc/rs274ngc_return.hh:34 +msgid "Bug code not g28 or g30" +msgstr "Errore: Codice programma diverso da G28 o G30" -#: tcl/bin/emcdebug.tcl:188 -msgid "Version information" -msgstr "Informazioni versione" +#: src/emc/rs274ngc/rs274ngc_return.hh:35 +msgid "Bug code not g2 or g3" +msgstr "Errore: Codice programma diverso da G2 o G3" -#: tcl/bin/emcdebug.tcl:189 -msgid "Command issuing" -msgstr "Comando fornito" +#: src/emc/rs274ngc/rs274ngc_return.hh:37 +#, fuzzy +msgid "Bug code not g4 g10 g28 g30 g52 g53 or g92 series" +msgstr "Errore: Codice programma diverso da G4, G10, G28, G30, G53 o G92-" -#: tcl/bin/emcdebug.tcl:190 -msgid "IO points" -msgstr "Punti I/O" +#: src/emc/rs274ngc/rs274ngc_return.hh:38 +msgid "Bug code not g61 g61.1 or g64" +msgstr "Errore: Codice programma diverso da G61, G61.1 o G64 " -#: tcl/bin/emcdebug.tcl:191 -msgid "NML" -msgstr "NML" +#: src/emc/rs274ngc/rs274ngc_return.hh:39 +msgid "Bug code not g90 or g91" +msgstr "Errore: Codice programma diverso da G90 o G91" -#: tcl/bin/emcdebug.tcl:192 -msgid "Motion time" -msgstr "Tempo movimento" +#: src/emc/rs274ngc/rs274ngc_return.hh:40 +msgid "Bug code not g98 or g99" +msgstr "Errore: Codice programma diverso da G98 o G99" -#: tcl/bin/emcdebug.tcl:193 src/emc/usr_intf/axis/scripts/debuglevel.py:42 -msgid "Interpreter" -msgstr "Interprete" +#: src/emc/rs274ngc/rs274ngc_return.hh:41 +#, fuzzy +msgid "Bug code not in g52 or g92 series" +msgstr "Errore: Codice programma diverso dalla serie G92" -#: tcl/bin/emcdebug.tcl:194 -msgid "RCS" -msgstr "RCS" +# Anmerkung:FJ: g593 ???? WM: wahrscheinlich g59.3 +#: src/emc/rs274ngc/rs274ngc_return.hh:42 +msgid "Bug code not in range g54 to g593" +msgstr "Errore: Codice programma non compreso tra G54 e G593" -#: tcl/bin/emcdebug.tcl:195 -msgid "Trajectory level" -msgstr "Livello traiettoria" +#: src/emc/rs274ngc/rs274ngc_return.hh:43 +msgid "Bug code not m0 m1 m2 m30 m60" +msgstr "Errore: Codice programma diverso da M0, M1, M2, M30 o M60" -#: tcl/bin/emcdebug.tcl:196 -msgid "Interpreter list" -msgstr "Lista interprete" +#: src/emc/rs274ngc/rs274ngc_return.hh:44 +msgid "Bug distance mode not g90 or g91" +msgstr "Errore: Modalità movimento diversa da G90 o G91" -#: tcl/bin/genedit.tcl:78 tcl/mini.tcl:2533 -msgid "New" -msgstr "Nuovo" +#: src/emc/rs274ngc/rs274ngc_return.hh:45 +msgid "Bug function should not have been called" +msgstr "Errore:la funzione non è stata chiamata" -#: tcl/bin/genedit.tcl:80 tcl/mini.tcl:1667 tcl/mini.tcl:2534 -#: tcl/tklinuxcnc.tcl:720 tcl/tklinuxcnc.tcl:1657 -msgid "Open..." -msgstr "Apri..." +#: src/emc/rs274ngc/rs274ngc_return.hh:46 +msgid "Bug in tool radius comp" +msgstr "Errore nella compensazione raggio utensile" -#: tcl/bin/genedit.tcl:84 tcl/mini.tcl:2536 -msgid "Save As..." -msgstr "Salva come..." +#: src/emc/rs274ngc/rs274ngc_return.hh:47 +msgid "Bug plane not xy yz or xz" +msgstr "Errore: Piano diverso da xy, yz o zx" -#: tcl/bin/genedit.tcl:87 tcl/bin/halconfig.tcl:165 tcl/bin/halshow.tcl:92 -#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1243 -#: tcl/ngcgui.tcl:3680 -msgid "Exit" -msgstr "Esci" +#: src/emc/rs274ngc/rs274ngc_return.hh:48 +msgid "Bug side not right or left" +msgstr "Errore: lato diverso da destro o sinistro" -#: tcl/bin/genedit.tcl:91 tcl/mini.tcl:2517 -msgid "Edit" -msgstr "Modifica" +#: src/emc/rs274ngc/rs274ngc_return.hh:49 +msgid "Bug unknown motion code" +msgstr "Errore: Codice movimento sconosciuto" -#: tcl/bin/genedit.tcl:92 tcl/mini.tcl:2543 -msgid "Cut" -msgstr "Taglia" +#: src/emc/rs274ngc/rs274ngc_return.hh:50 +msgid "Bug unknown operation" +msgstr "Errore: Operazione sconosciuta" -#: tcl/bin/genedit.tcl:94 tcl/mini.tcl:2544 -msgid "Copy" -msgstr "Copia" +#: src/emc/rs274ngc/rs274ngc_return.hh:51 +msgid "Cannot change axis offsets with cutter radius comp" +msgstr "" +"Impossibile cambiare offset assi con compensazione raggio utensile attiva" -#: tcl/bin/genedit.tcl:96 tcl/mini.tcl:2545 -msgid "Paste" -msgstr "Incolla" +#: src/emc/rs274ngc/rs274ngc_return.hh:52 +msgid "Cannot create backup file" +msgstr "Impossibile creare file backup" -#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:68 -msgid "Select All" -msgstr "Seleziona tutto" +#: src/emc/rs274ngc/rs274ngc_return.hh:53 +msgid "Cannot do g1 with zero feed rate" +msgstr "Impossibile eseguire G1 con avanzamento nullo" -#: tcl/bin/genedit.tcl:104 tcl/bin/halconfig.tcl:192 tcl/mini.tcl:919 -#: tcl/mini.tcl:2519 tcl/tklinuxcnc.tcl:790 -msgid "Help" -msgstr "Aiuto" +#: src/emc/rs274ngc/rs274ngc_return.hh:54 +msgid "Cannot do zero repeats of cycle" +msgstr "Impossibile eseguire cicli da 0 passi" -#: tcl/bin/genedit.tcl:105 tcl/mini.tcl:1011 tcl/mini.tcl:2559 -#: tcl/tklinuxcnc.tcl:796 -msgid "About..." -msgstr "Informazioni.." +#: src/emc/rs274ngc/rs274ngc_return.hh:55 +msgid "Cannot make arc with zero feed rate" +msgstr "Impossibile eseguire arco con avanzamento nullo" -#: tcl/bin/genedit.tcl:130 -msgid "Save and Reload" -msgstr "Salva e Ricarica" +#: src/emc/rs274ngc/rs274ngc_return.hh:56 +msgid "Cannot open backup file" +msgstr "Impossibile aprire file backup" -#: tcl/bin/genedit.tcl:133 tcl/mini.tcl:2550 -msgid "Find..." -msgstr "Trova..." +#: src/emc/rs274ngc/rs274ngc_return.hh:57 +msgid "Cannot open variable file" +msgstr "Impossibile aprire file variabili" -#: tcl/bin/genedit.tcl:135 tcl/mini.tcl:2552 -msgid "Renumber File..." -msgstr "Rinumera File..." +#: src/emc/rs274ngc/rs274ngc_return.hh:58 +msgid "Cannot probe with cutter radius comp on" +msgstr "" +"Operazione di misura impossibile con compensazione raggio utensile attiva" -#: tcl/bin/genedit.tcl:140 tcl/mini.tcl:917 tcl/mini.tcl:2518 -#: tcl/tklinuxcnc.tcl:746 -msgid "Settings" -msgstr "Settaggi" +#: src/emc/rs274ngc/rs274ngc_return.hh:59 +msgid "Cannot probe with zero feed rate" +msgstr "Operazione di misura impossibile con avanzamento nullo" -#: tcl/bin/genedit.tcl:141 tcl/mini.tcl:2554 -msgid "No Numbering" -msgstr "Nessuna numerazione" +#: src/emc/rs274ngc/rs274ngc_return.hh:60 +msgid "Cannot put a b in canned cycle" +msgstr "Impossibile inviare B in un ciclo fisso" -#: tcl/bin/genedit.tcl:144 tcl/mini.tcl:2556 -msgid "Line Numbering..." -msgstr "Numerazione Linee..." +#: src/emc/rs274ngc/rs274ngc_return.hh:61 +msgid "Cannot put a c in canned cycle" +msgstr "Impossibile inviare C in un ciclo fisso" -#: tcl/bin/genedit.tcl:150 tcl/tklinuxcnc.tcl:768 -msgid "Scripts" -msgstr "Scripts" +#: src/emc/rs274ngc/rs274ngc_return.hh:62 +msgid "Cannot put an a in canned cycle" +msgstr "Impossibile inviare A in un ciclo fisso" -#: tcl/bin/genedit.tcl:177 -msgid "About TkEditor" -msgstr "Informazioni su TkEditor" +#: src/emc/rs274ngc/rs274ngc_return.hh:63 +msgid "Cannot turn cutter radius comp on when on" +msgstr "Compensazione raggio utensile già attivata" -#: tcl/bin/genedit.tcl:179 -msgid "" -"TkEditor\n" -"\n" -"Simple Tcl/Tk Text Editor\n" -"\n" -"GPL Version 2" -msgstr "" -"TkEditor\n" -"\n" -"Semplice Editore Testo Tcl/Tk \n" -"\n" -"GPL Versione 2" +#: src/emc/rs274ngc/rs274ngc_return.hh:64 +msgid "Cannot use axis values with g80" +msgstr "Impossibile usare valori assi con G80" -#: tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 tcl/mini.tcl:1775 -#: tcl/tklinuxcnc.tcl:451 src/emc/task/emctaskmain.cc:2072 -#, c-format, tcl-format -msgid "can't open %s" -msgstr "impossibile aprire %s " +#: src/emc/rs274ngc/rs274ngc_return.hh:65 +msgid "Cannot use axis values without a g code that uses them" +msgstr "Impossibile usare valore assi senza un codice G che li utilizzi" -#: tcl/bin/genedit.tcl:267 tcl/mini.tcl:3090 -msgid "Find" -msgstr "Trova" +#: src/emc/rs274ngc/rs274ngc_return.hh:66 +msgid "Cannot use g28 or g30 with cutter radius comp" +msgstr "Impossibile usare G28 o G30 con compensazione raggio utensile attiva" -#: tcl/bin/genedit.tcl:270 -msgid "Find:" -msgstr "Trova:" +#: src/emc/rs274ngc/rs274ngc_return.hh:67 +msgid "Cannot use g53 incremental" +msgstr "Impossibile usare G53 in incrementale" -#: tcl/bin/genedit.tcl:276 -msgid "Replace:" -msgstr "Sostituisci:" +#: src/emc/rs274ngc/rs274ngc_return.hh:68 +msgid "Cannot use g53 with cutter radius comp" +msgstr "Impossibile usare G53 con compensazione raggio utensile" -#: tcl/bin/genedit.tcl:282 -msgid "Find All" -msgstr "Trova tutto" +#: src/emc/rs274ngc/rs274ngc_return.hh:69 +msgid "Cannot use two g codes that both use axis values" +msgstr "Impossibile usare due codici G che usino entrambi i valori degli assi" -#: tcl/bin/genedit.tcl:285 tcl/mini.tcl:3113 -msgid "Replace All" -msgstr "Sostituisci Tutto" +#: src/emc/rs274ngc/rs274ngc_return.hh:70 +msgid "Command too long" +msgstr "Comando troppo lungo" -#: tcl/bin/genedit.tcl:288 -msgid "Skip This" -msgstr "Salta Questo" +#: src/emc/rs274ngc/rs274ngc_return.hh:71 +msgid "Current point same as end point of arc" +msgstr "Punto corrente uguale alla fine arco" -#: tcl/bin/genedit.tcl:291 -msgid "Replace This" -msgstr "Sostituisci Questo" +#: src/emc/rs274ngc/rs274ngc_return.hh:72 +msgid "Dwell time missing with g4" +msgstr "Tempo sosta mancante in G4" -#: tcl/bin/genedit.tcl:297 -msgid "Clear" -msgstr "Cancella" +#: src/emc/rs274ngc/rs274ngc_return.hh:73 +msgid "Dwell time p word missing with g82" +msgstr "Parametro P tempo sosta mancante in G82" -#: tcl/bin/genedit.tcl:422 tcl/mini.tcl:2640 -msgid "Set Line Numbering" -msgstr "Imposta Nnumerazione Linee" +#: src/emc/rs274ngc/rs274ngc_return.hh:74 +msgid "Dwell time p word missing with g86" +msgstr "Parametro P tempo sosta mancante in G86" -#: tcl/bin/genedit.tcl:424 tcl/mini.tcl:2644 -msgid "Increment" -msgstr "Incremento" +#: src/emc/rs274ngc/rs274ngc_return.hh:75 +msgid "Dwell time p word missing with g88" +msgstr "Parametro P tempo sosta mancante in G88" -#: tcl/bin/genedit.tcl:426 tcl/mini.tcl:2646 -msgid "One" -msgstr "Uno" +#: src/emc/rs274ngc/rs274ngc_return.hh:76 +msgid "Dwell time p word missing with g89" +msgstr "Parametro P tempo sosta mancante in G89" -#: tcl/bin/genedit.tcl:429 tcl/mini.tcl:2648 -msgid "Two" -msgstr "Due" +#: src/emc/rs274ngc/rs274ngc_return.hh:77 +msgid "Equal sign missing in parameter setting" +msgstr "Segno uguale mancante nel settaggio parametri" -#: tcl/bin/genedit.tcl:432 tcl/mini.tcl:2650 -msgid "Five" -msgstr "Cinque" +#: src/emc/rs274ngc/rs274ngc_return.hh:78 +msgid "F word missing with inverse time arc move" +msgstr "" +"Parametro F mancante in un movimento circolare con tempo di avanzamento " +"controllato" -#: tcl/bin/genedit.tcl:435 tcl/mini.tcl:2652 -msgid "Ten" -msgstr "Dieci" +#: src/emc/rs274ngc/rs274ngc_return.hh:79 +msgid "F word missing with inverse time g1 move" +msgstr "" +"Parametro F mancante in un movimento G1 con tempo di avanzamento controllato" -#: tcl/bin/genedit.tcl:439 tcl/mini.tcl:2654 -msgid "Space" -msgstr "Spazio" +#: src/emc/rs274ngc/rs274ngc_return.hh:80 +msgid "File ended with no percent sign" +msgstr "File mancante del segno percento finale" -#: tcl/bin/genedit.tcl:441 tcl/mini.tcl:2656 -msgid "Single Space" -msgstr "Spazio Singolo" +#: src/emc/rs274ngc/rs274ngc_return.hh:81 +msgid "File ended with no percent sign or program end" +msgstr "File mancante del segno percento finale o fine programma" -#: tcl/bin/genedit.tcl:444 tcl/mini.tcl:2658 -msgid "Double Space" -msgstr "Spazio Doppio" +#: src/emc/rs274ngc/rs274ngc_return.hh:82 +msgid "File name too long" +msgstr "Nome file troppo lungo" -#: tcl/bin/genedit.tcl:447 tcl/mini.tcl:2660 -msgid "Tab Space" -msgstr "Tabulatore" +#: src/emc/rs274ngc/rs274ngc_return.hh:83 +msgid "G code out of range" +msgstr "Codice G fuori limite" -#: tcl/bin/genedit.tcl:453 -msgid "Next Number:" -msgstr "Prossimo Numero:" +# Anmerkung:FJ: BTW: Was ist eigentlich mit Umlauten? Klärung! +#: src/emc/rs274ngc/rs274ngc_return.hh:84 +msgid "I word given for arc in yz plane" +msgstr "Parametro I per archi nel piano yz" -#: tcl/bin/genedit.tcl:474 tcl/mini.tcl:2668 -msgid "Renumber" -msgstr "Rinumera" +#: src/emc/rs274ngc/rs274ngc_return.hh:85 +msgid "I word missing with g87" +msgstr "Parametro I mancante con G87" -#: tcl/bin/halconfig.tcl:88 tcl/bin/halshow.tcl:33 -msgid "HAL Configuration" -msgstr "Configurazione HAL" +#: src/emc/rs274ngc/rs274ngc_return.hh:86 +msgid "J word given for arc in xz plane" +msgstr "Parametro J per archi nel piano xz" -#: tcl/bin/halconfig.tcl:103 -msgid "Would you like to save your configuration before you exit?" -msgstr "Vuoi salvare la tua configurazione prima di uscire?" +#: src/emc/rs274ngc/rs274ngc_return.hh:87 +msgid "J word missing with g87" +msgstr "Parametro J mancante con G87" -#: tcl/bin/halconfig.tcl:103 -msgid "Save All" -msgstr "Salva tutto" +#: src/emc/rs274ngc/rs274ngc_return.hh:88 +msgid "K word given for arc in xy plane" +msgstr "Parametro K per archi nel piano xy" -#: tcl/bin/halconfig.tcl:103 -msgid "Save Tune" -msgstr "Salva Impostazione" +#: src/emc/rs274ngc/rs274ngc_return.hh:89 +msgid "K word missing with g87" +msgstr "Parametro K mancante con G87" -#: tcl/bin/halconfig.tcl:103 -msgid "Save as Netlist" -msgstr "Salva come Netlist" +# Anmerkung:FJ: Schrägstrich, atan? Klären? Division wie bei c-Funktion atan2(x,y) ??? +#: src/emc/rs274ngc/rs274ngc_return.hh:90 +msgid "Left bracket missing after slash with atan" +msgstr "Parentesi sinistra mancante dopo la barra con atan" -#: tcl/bin/halconfig.tcl:103 -msgid "Don't Save" -msgstr "Non Salvare" +#: src/emc/rs274ngc/rs274ngc_return.hh:91 +msgid "Left bracket missing after unary operation name" +msgstr "Parentesi sinistra mancante dopo il nome di una operazione unaria" -#: tcl/bin/halconfig.tcl:132 -msgid "Show" -msgstr "Mostra" +#: src/emc/rs274ngc/rs274ngc_return.hh:92 +#, fuzzy, c-format +msgid "M code greater than 199: M%d" +msgstr "Codice M maggiore di 199" -#: tcl/bin/halconfig.tcl:133 -msgid "Watch" -msgstr "Vista" +#: src/emc/rs274ngc/rs274ngc_return.hh:93 +msgid "Mixed radius ijk format for arc" +msgstr "Arco con formato raggio ijk misto" -#: tcl/bin/halconfig.tcl:134 -msgid "Modify" -msgstr "Modifica" +#: src/emc/rs274ngc/rs274ngc_return.hh:94 +msgid "Multiple a words on one line" +msgstr "Parametro A presente più volte su una linea" -#: tcl/bin/halconfig.tcl:157 -msgid "Save INI Tuning" -msgstr "Salva Impostazioni INI" +#: src/emc/rs274ngc/rs274ngc_return.hh:95 +msgid "Multiple b words on one line" +msgstr "Parametro B presente più volte su una linea" -#: tcl/bin/halconfig.tcl:159 -msgid "Save HAL Ini" -msgstr "Salva ini HAL" +#: src/emc/rs274ngc/rs274ngc_return.hh:96 +msgid "Multiple c words on one line" +msgstr "Parametro C presente più volte su una linea" -#: tcl/bin/halconfig.tcl:161 -msgid "Save HAL Net" -msgstr "Salva Net HAL" +#: src/emc/rs274ngc/rs274ngc_return.hh:97 +msgid "Multiple d words on one line" +msgstr "Parametro D presente più volte su una linea" -#: tcl/bin/halconfig.tcl:163 -msgid "Save and Exit" -msgstr "Salva ed Esci" +#: src/emc/rs274ngc/rs274ngc_return.hh:98 +msgid "Multiple f words on one line" +msgstr "Parametro F presente più volte su una linea" -#: tcl/bin/halconfig.tcl:168 tcl/mini.tcl:916 tcl/tklinuxcnc.tcl:739 -msgid "View" -msgstr "Visualizzare" +#: src/emc/rs274ngc/rs274ngc_return.hh:99 +msgid "Multiple h words on one line" +msgstr "Parametro H presente più volte su una linea" -#: tcl/bin/halconfig.tcl:170 tcl/bin/halshow.tcl:104 -msgid "Expand Tree" -msgstr "Espandi Albero" +#: src/emc/rs274ngc/rs274ngc_return.hh:100 +msgid "Multiple i words on one line" +msgstr "Parametro I presente più volte su una linea" -#: tcl/bin/halconfig.tcl:172 tcl/bin/halshow.tcl:106 -msgid "Collapse Tree" -msgstr "Chiudi albero" +#: src/emc/rs274ngc/rs274ngc_return.hh:101 +msgid "Multiple j words on one line" +msgstr "Parametro J presente più volte su una linea" -#: tcl/bin/halconfig.tcl:175 tcl/bin/halshow.tcl:109 -msgid "Expand Pins" -msgstr "Espandi Pins" +#: src/emc/rs274ngc/rs274ngc_return.hh:102 +msgid "Multiple k words on one line" +msgstr "Parametro K presente più volte su una linea" -#: tcl/bin/halconfig.tcl:177 tcl/bin/halshow.tcl:111 -msgid "Expand Parameters" -msgstr "Espandi parametri" +#: src/emc/rs274ngc/rs274ngc_return.hh:103 +msgid "Multiple l words on one line" +msgstr "Parametro I presente più volte su una linea" -#: tcl/bin/halconfig.tcl:179 tcl/bin/halshow.tcl:113 -msgid "Expand Signals" -msgstr "Espandi Segnali" +#: src/emc/rs274ngc/rs274ngc_return.hh:104 +msgid "Multiple p words on one line" +msgstr "Parametro P presente più volte su una linea" -#: tcl/bin/halconfig.tcl:182 tcl/bin/halshow.tcl:116 -msgid "Erase Watch" -msgstr "Cancella Vista" +#: src/emc/rs274ngc/rs274ngc_return.hh:105 +msgid "Multiple q words on one line" +msgstr "Parametro Q presente più volte su una linea" -#: tcl/bin/halconfig.tcl:194 tcl/mini.tcl:840 tcl/mini.tcl:2785 -msgid "About" -msgstr "Informazioni" +#: src/emc/rs274ngc/rs274ngc_return.hh:106 +msgid "Multiple r words on one line" +msgstr "Parametro R presente più volte su una linea" -#: tcl/bin/halconfig.tcl:196 -msgid "Main" -msgstr "Principale" +#: src/emc/rs274ngc/rs274ngc_return.hh:107 +msgid "Multiple s words on one line" +msgstr "Parametro S presente più volte su una linea" -#: tcl/bin/halconfig.tcl:476 -msgid "Enter HAL command :" -msgstr "Digitare comando HAL :" +#: src/emc/rs274ngc/rs274ngc_return.hh:108 +msgid "Multiple t words on one line" +msgstr "Parametro T presente più volte su una linea" -#: tcl/bin/halconfig.tcl:479 tcl/bin/halconfig.tcl:528 tcl/bin/halshow.tcl:354 -msgid "Execute" -msgstr "Esegui" +#: src/emc/rs274ngc/rs274ngc_return.hh:109 +msgid "Multiple x words on one line" +msgstr "Parametro X presente più volte su una linea" -#: tcl/bin/halconfig.tcl:943 tcl/bin/halshow.tcl:405 -msgid "Select a node to show." -msgstr "Seleziona un nodo da visualizzare." +#: src/emc/rs274ngc/rs274ngc_return.hh:110 +msgid "Multiple y words on one line" +msgstr "Parametro Y presente più volte su una linea" -#: tcl/bin/halconfig.tcl:968 tcl/bin/halshow.tcl:429 -msgid "<-- Select a Leaf. Click on its name." -msgstr "<-- Selezionare un Ramo. Cliccare sul nome." +#: src/emc/rs274ngc/rs274ngc_return.hh:111 +msgid "Multiple z words on one line" +msgstr "Parametro Z presente più volte su una linea" -#: tcl/bin/halconfig.tcl:1085 tcl/bin/halconfig.tcl:1095 -#: tcl/bin/halconfig.tcl:1102 tcl/bin/halconfig.tcl:1109 -#: tcl/bin/halconfig.tcl:1116 -#, tcl-format -msgid "Click a highlighted entry where %s should go." -msgstr "Cliccare una voce evidenziata dove %s deve andare." +#: src/emc/rs274ngc/rs274ngc_return.hh:112 +msgid "Must use g0 or g1 with g53" +msgstr "Necessario usare G0 o G1 con G53" -#: tcl/bin/halconfig.tcl:1092 -msgid "Nothing to be done for parameters here. Try the tuning page" -msgstr "" -"Niente da fare con questi parametri. Provare nella pagina di regolazione" +#: src/emc/rs274ngc/rs274ngc_return.hh:113 +msgid "Negative argument to sqrt" +msgstr "Argomento negativo per sqrt" -#: tcl/bin/halconfig.tcl:1124 -#, tcl-format -msgid "%s is not a leaf, try again" -msgstr "%s non è un ramo, prova ancora" +#: src/emc/rs274ngc/rs274ngc_return.hh:114 +msgid "Negative d word tool radius index used" +msgstr "Uso del parametro D indice raggio utensile negativo" -#: tcl/bin/halconfig.tcl:1281 -msgid "" -"Copyright Raymond E Henry. 2006\n" -"License: GPL Version 2\n" -"\n" -"Halconfig is an LinuxCNC configuration tool. It requires that you have " -"started an instance of linuxcnc.\n" -"\n" -"This script carries no warranty or liability for its use to the extent " -"allowed by law." -msgstr "" -"Copyright Raymond E Henry. 2006\n" -"License: GPL Version 2\n" -"\n" -"Halconfig è uno strumento di configurazione di LinuxCNC. Esso richiede che " -"si parta da una versione di LinuxCNC.\n" -"\n" -"This script is not for the faint hearted and carries no warranty or " -"liability for its use to the extent allowed by law." +#: src/emc/rs274ngc/rs274ngc_return.hh:115 +msgid "Negative f word used" +msgstr "Uso del parametro F negativo" -#: tcl/bin/halshow.tcl:69 -msgid " SHOW " -msgstr " MOSTRA " +#: src/emc/rs274ngc/rs274ngc_return.hh:116 +msgid "Negative g code used" +msgstr "Uso codice G negativo" -#: tcl/bin/halshow.tcl:70 -msgid " WATCH " -msgstr " VISTA" +#: src/emc/rs274ngc/rs274ngc_return.hh:117 +msgid "Negative h word used" +msgstr "Uso codice H negativo" -#: tcl/bin/halshow.tcl:90 -msgid "Load Watch List" -msgstr "Carica Lista Controllo" +#: src/emc/rs274ngc/rs274ngc_return.hh:118 +msgid "Negative l word used" +msgstr "Uso codice I negativo" -#: tcl/bin/halshow.tcl:102 -msgid "Tree View" -msgstr "Vista ad albero" +#: src/emc/rs274ngc/rs274ngc_return.hh:119 +msgid "Negative m code used" +msgstr "Uso codice M negativo" -#: tcl/bin/halshow.tcl:349 -msgid "Test HAL command :" -msgstr "Prova comando HAL:" +#: src/emc/rs274ngc/rs274ngc_return.hh:120 +msgid "Negative or zero q value used" +msgstr "Uso codice Q negativo o nullo" -#: tcl/bin/halshow.tcl:544 -msgid "Load a watch list" -msgstr "Carica una lista di controllo" +#: src/emc/rs274ngc/rs274ngc_return.hh:121 +msgid "Negative p word used" +msgstr "Uso codice P negativo" -#: tcl/bin/halshow.tcl:567 -msgid "Save current watch list" -msgstr "Salva la lista controllo corrente" +#: src/emc/rs274ngc/rs274ngc_return.hh:122 +msgid "Negative spindle speed used" +msgstr "Uso velocità mandrino negativa" -#: tcl/bin/halshow.tcl:581 -msgid "Commands may be tested here but they will NOT be saved" -msgstr "Possono essere provati i comandi ma essi NON saranno salvati" +#: src/emc/rs274ngc/rs274ngc_return.hh:123 +msgid "Negative tool id used" +msgstr "Uso indice utensile negativo" -#: tcl/bin/pickconfig.tcl:50 -msgid "" -"Can't find the bwidget 1.7 package. There is a debian bwidget package; " -"install \n" -"it with sudo apt-get install bwidget." -msgstr "" -"Non posso trovare il package bwidget 1.7 . E' disponibile il package " -"debian bwidget ; installare \n" -"con il comando: sudo apt-get install bwidget." +#: src/emc/rs274ngc/rs274ngc_return.hh:124 +msgid "Nested comment found" +msgstr "Trovato commento nidificato" -#: tcl/bin/pickconfig.tcl:178 -msgid "No details available." -msgstr "Nessun dettaglio disponibile." +#: src/emc/rs274ngc/rs274ngc_return.hh:125 +msgid "No characters found in reading real value" +msgstr "Nessun carattere trovato nella lettura di un valore reale" -#: tcl/bin/pickconfig.tcl:194 -msgid "LinuxCNC Configuration Selector" -msgstr "Selettore Configurazioni LinuxCNC " +#: src/emc/rs274ngc/rs274ngc_return.hh:126 +msgid "Non integer value for integer" +msgstr "Uso di valore non intero per numero intero" -#: tcl/bin/pickconfig.tcl:215 -msgid "" -"Welcome to LinuxCNC.\n" -"\n" -"Select a machine configuration from the list on the left.\n" -"Details about the selected configuration will appear in the display on the " -"right.\n" -"Click 'OK' to run the selected configuration" -msgstr "" -"Benvenuto su LinuxCNC.\n" -"\n" -"Seleziona una configurazione di macchina dalla lista sulla sinistra.\n" -"I dettagli sulla configurazione selezionata appariranno sul video sulla " -"destra.\n" -"Cliccare 'OK' per avviare la configurazione selezionata" +#: src/emc/rs274ngc/rs274ngc_return.hh:127 +msgid "Null missing after newline" +msgstr "Carattere nullo mancante dopo avanzamento linea" -#: tcl/bin/pickconfig.tcl:271 -msgid "My Configurations" -msgstr "Configurazioni Personali" +#: src/emc/rs274ngc/rs274ngc_return.hh:128 +msgid "Parameter file out of order" +msgstr "Parametro numerico fuori ordine" -#: tcl/bin/pickconfig.tcl:274 -msgid "Sample Configurations" -msgstr "Configurazioni Base" +#: src/emc/rs274ngc/rs274ngc_return.hh:129 +msgid "Parameter number out of range" +msgstr "Parametro numerico fuori ordine" -#: tcl/bin/pickconfig.tcl:332 -#, tcl-format -msgid "ERROR: no configurations found in path '%s'" -msgstr "ERRORE: nessuna configurazione trovata nel percorso '%s'" +#: src/emc/rs274ngc/rs274ngc_return.hh:130 +msgid "Parameter is readonly" +msgstr "Parametro è in sola lettura" -#: tcl/bin/pickconfig.tcl:369 -msgid "Copy Configuration?" -msgstr "Copiare Configurazione?" +#: src/emc/rs274ngc/rs274ngc_return.hh:131 +msgid "Q word missing with g83" +msgstr "Parametro Q mancante con G83" -#: tcl/bin/pickconfig.tcl:369 -#, tcl-format -msgid "" -"Would you like to copy the %s configuration to your home directory so you " -"can customize it?" -msgstr "" -"Vuoi copiare la configurazione %s nella tua home directory in maniera da " -"personalizzarla?" +#: src/emc/rs274ngc/rs274ngc_return.hh:132 +msgid "Queue is not empty after probing" +msgstr "Coda non vuota dopo una misura" -#: tcl/bin/pickconfig.tcl:369 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:563 -msgid "Yes" -msgstr "Si" +#: src/emc/rs274ngc/rs274ngc_return.hh:133 +msgid "R clearance plane unspecified in cycle" +msgstr "Piano di sicurezza R non specificato nel ciclo" -#: tcl/bin/pickconfig.tcl:479 -msgid "Configuration Copied" -msgstr "Configurazione Copiata " +#: src/emc/rs274ngc/rs274ngc_return.hh:134 +msgid "R i j k words all missing for arc" +msgstr "Parametri R, I, J o K tutti mancanti in un arco" -#: tcl/bin/pickconfig.tcl:479 -#, tcl-format -msgid "" -"The configuration file has been copied to %s. Next time, choose this " -"location when starting LinuxCNC." -msgstr "" -"Il file di configurazione è stato copiato in %s. La prossima volta, scegli " -"questa posizione quando attivi LinuxCNC." +#: src/emc/rs274ngc/rs274ngc_return.hh:135 +msgid "R less than x in cycle in yz plane" +msgstr "R minore di X in un ciclo nel piano YZ" -#: tcl/bin/pickconfig.tcl:506 -msgid "Shortcut Created" -msgstr "Collegamento Creato" +#: src/emc/rs274ngc/rs274ngc_return.hh:136 +msgid "R less than y in cycle in xz plane" +msgstr "R minore di Y in un ciclo nel piano XZ" -#: tcl/bin/pickconfig.tcl:506 -msgid "" -"A shortcut to this configuration file has been created on your desktop. You " -"can use it to automatically launch this configuration." -msgstr "" -"Sulla scrivania è stato creato un collegamento a questo file di " -"configurazione. E' possibile usarlo per avviare automaticamente questa " -"configurazione." +#: src/emc/rs274ngc/rs274ngc_return.hh:137 +msgid "R less than z in cycle in xy plane" +msgstr "R minore di Z in un ciclo nel piano XY" -#: tcl/bin/pickconfig.tcl:511 -msgid "Create Desktop Shortcut" -msgstr "Crea Collegamento sulla Scrivania" +#: src/emc/rs274ngc/rs274ngc_return.hh:138 +msgid "R word with no g code that uses it" +msgstr "Parametro R senza alcun codice G che lo usi" -#: tcl/bin/tkbackplot.tcl:110 -msgid "TkLinuxCNC BackPlot" -msgstr "TkLinuxCNC BackPlot" +#: src/emc/rs274ngc/rs274ngc_return.hh:139 +msgid "Slash missing after first atan argument" +msgstr "Barra mancante dopo il primo argomento di atan" + +#: src/emc/rs274ngc/rs274ngc_return.hh:140 +msgid "Spindle not turning clockwise in g84" +msgstr "Il mandrino non gira in senso orario in G84" + +#: src/emc/rs274ngc/rs274ngc_return.hh:141 +msgid "Spindle not turning in g86" +msgstr "Il mandrino non gira in G86" + +#: src/emc/rs274ngc/rs274ngc_return.hh:142 +msgid "Spindle not turning in g87" +msgstr "Il mandrino non gira in G87" + +#: src/emc/rs274ngc/rs274ngc_return.hh:143 +msgid "Spindle not turning in g88" +msgstr "Il mandrino non gira in G88" + +#: src/emc/rs274ngc/rs274ngc_return.hh:144 +msgid "Sscanf failed" +msgstr "Errore nella funzione sscanf()" + +#: src/emc/rs274ngc/rs274ngc_return.hh:145 +msgid "Start point too close to probe point" +msgstr "Punto di partenza troppo vicino al punto di misura" + +#: src/emc/rs274ngc/rs274ngc_return.hh:146 +msgid "Too many m codes on line" +msgstr "Troppi codici M su una linea" + +# Anmerkung:FJ: Tool max? Was das? +# Anmerkung:AJ: sollte "Index in tool table file too large" sein +#: src/emc/rs274ngc/rs274ngc_return.hh:147 +msgid "Pocket max too large" +msgstr "Tasca max troppo grande" + +#: src/emc/rs274ngc/rs274ngc_return.hh:148 +msgid "Tool radius not less than arc radius with comp" +msgstr "Raggio utensile non minore del raggio utensile con compensazione" + +#: src/emc/rs274ngc/rs274ngc_return.hh:149 +msgid "Two g codes used from same modal group" +msgstr "Due codici G usati nello stesso gruppo modale" + +#: src/emc/rs274ngc/rs274ngc_return.hh:150 +msgid "Two m codes used from same modal group" +msgstr "Due codici M usati nello stesso gruppo modale" + +#: src/emc/rs274ngc/rs274ngc_return.hh:151 +#, c-format +msgid "Unable to open file <%s>" +msgstr "Impossibile aprire il file <%s>" + +#: src/emc/rs274ngc/rs274ngc_return.hh:152 +msgid "Unclosed comment found" +msgstr "Trovato commento non terminato" + +#: src/emc/rs274ngc/rs274ngc_return.hh:153 +msgid "Unclosed expression" +msgstr "Espressione incompleta" + +#: src/emc/rs274ngc/rs274ngc_return.hh:154 +msgid "Unknown g code used" +msgstr "Uso codice G sconosciuto" + +#: src/emc/rs274ngc/rs274ngc_return.hh:155 +#, fuzzy, c-format +msgid "Unknown m code used: M%d" +msgstr "Uso codice M sconosciuto" + +#: src/emc/rs274ngc/rs274ngc_return.hh:156 +msgid "Unknown operation" +msgstr "Operazione sconosciuta" + +#: src/emc/rs274ngc/rs274ngc_return.hh:157 +msgid "Unknown operation name starting with a" +msgstr "Nome operazione che inizia con A sconosciuta" + +#: src/emc/rs274ngc/rs274ngc_return.hh:158 +msgid "Unknown operation name starting with m" +msgstr "Nome operazione che inizia con M sconosciuta" + +#: src/emc/rs274ngc/rs274ngc_return.hh:159 +msgid "Unknown operation name starting with o" +msgstr "Nome operazione che inizia con O sconosciuta" + +#: src/emc/rs274ngc/rs274ngc_return.hh:160 +msgid "Unknown operation name starting with x" +msgstr "Nome operazione che inizia con X sconosciuta" + +#: src/emc/rs274ngc/rs274ngc_return.hh:161 +msgid "Unknown word starting with a" +msgstr "Nome parametro che inizia con A sconosciuto" + +#: src/emc/rs274ngc/rs274ngc_return.hh:162 +msgid "Unknown word starting with c" +msgstr "Nome parametro che inizia con C sconosciuto" + +#: src/emc/rs274ngc/rs274ngc_return.hh:163 +msgid "Unknown word starting with e" +msgstr "Nome parametro che inizia con E sconosciuto" + +#: src/emc/rs274ngc/rs274ngc_return.hh:164 +msgid "Unknown word starting with f" +msgstr "Nome parametro che inizia con F sconosciuto" + +#: src/emc/rs274ngc/rs274ngc_return.hh:165 +msgid "Unknown word starting with l" +msgstr "Nome parametro che inizia con L sconosciuto" + +#: src/emc/rs274ngc/rs274ngc_return.hh:166 +msgid "Unknown word starting with r" +msgstr "Nome parametro che inizia con R sconosciuto" + +#: src/emc/rs274ngc/rs274ngc_return.hh:167 +msgid "Unknown word starting with s" +msgstr "Nome parametro che inizia con S sconosciuto" + +#: src/emc/rs274ngc/rs274ngc_return.hh:168 +msgid "Unknown word starting with t" +msgstr "Nome parametro che inizia con T sconosciuto" + +#: src/emc/rs274ngc/rs274ngc_return.hh:169 +msgid "Unknown word where unary operation could be" +msgstr "Parametro sconosciuto al posto di una operazione unaria" + +#: src/emc/rs274ngc/rs274ngc_return.hh:170 +msgid "X and y words missing for arc in xy plane" +msgstr "Parametri X e Y mancanti in un arco nel piano XY" + +#: src/emc/rs274ngc/rs274ngc_return.hh:171 +msgid "X and z words missing for arc in xz plane" +msgstr "Parametri X e Z mancanti in un arco nel piano XZ" + +#: src/emc/rs274ngc/rs274ngc_return.hh:172 +msgid "X value unspecified in yz plane canned cycle" +msgstr "Valore X mancante in un ciclo fisso nel piano yz" + +#: src/emc/rs274ngc/rs274ngc_return.hh:173 +msgid "Y and z words missing for arc in yz plane" +msgstr "Parametri Y e Z mancanti in un arco nel piano YZ" + +#: src/emc/rs274ngc/rs274ngc_return.hh:174 +msgid "Y value unspecified in xz plane canned cycle" +msgstr "Valore Y mancante in un ciclo fisso nel piano xz" + +#: src/emc/rs274ngc/rs274ngc_return.hh:175 +msgid "Z value unspecified in xy plane canned cycle" +msgstr "Valore Z mancante in un ciclo fisso nel piano xy" + +#: src/emc/rs274ngc/rs274ngc_return.hh:176 +msgid "Zero or negative argument to ln" +msgstr "Argomento nullo o negativo nella funzione ln" + +#: src/emc/rs274ngc/rs274ngc_return.hh:177 +msgid "Zero radius arc" +msgstr "Raggio arco nullo" + +#: src/emc/rs274ngc/rs274ngc_return.hh:178 +msgid "K word missing with g33/g33.1" +msgstr "Parametro K mancante con G33/G33.1" + +#: src/emc/rs274ngc/rs274ngc_return.hh:179 +msgid "F word used with a g33/g33.1" +msgstr "Parametro F usato con G33/G33.1" + +#: src/emc/rs274ngc/rs274ngc_return.hh:180 +msgid "Unknown operation name starting with e" +msgstr "Nome operazione che inizia con E sconosciuta" + +#: src/emc/rs274ngc/rs274ngc_return.hh:181 +msgid "Unknown operation name starting with n" +msgstr "Nome operazione che inizia con N sconosciuta" + +#: src/emc/rs274ngc/rs274ngc_return.hh:182 +msgid "Unknown operation name starting with g" +msgstr "Nome operazione che inizia con G sconosciuta" + +#: src/emc/rs274ngc/rs274ngc_return.hh:183 +msgid "Unknown operation name starting with l" +msgstr "Nome operazione che inizia con L sconosciuta" + +#: src/emc/rs274ngc/rs274ngc_return.hh:184 +msgid "Too many subroutine parameters" +msgstr "Troppi parametri per la subroutine" + +#: src/emc/rs274ngc/rs274ngc_return.hh:185 +msgid "Too many subroutine levels" +msgstr "Troppi livelli per la subroutine" + +#: src/emc/rs274ngc/rs274ngc_return.hh:186 +msgid "Bug: call stack underrun" +msgstr "Bug: call stack underrun" + +#: src/emc/rs274ngc/rs274ngc_return.hh:187 +msgid "Unknown control command in o word" +msgstr "Parametro O sconosciuto in comando controllo" + +# Anmerkung:FJ: Tool max? Was das? +# Anmerkung:AJ: sollte "Index in tool table file too large" sein +#: src/emc/rs274ngc/rs274ngc_return.hh:188 +msgid "Too many oword labels" +msgstr "Troppe etichette oword" + +#: src/emc/rs274ngc/rs274ngc_return.hh:189 +msgid "Unknown oword number" +msgstr "Numero oword sconosciuto" + +#: src/emc/rs274ngc/rs274ngc_return.hh:190 +msgid "Nested subroutine definition" +msgstr "Definizione subroutine nidificata" + +#: src/emc/rs274ngc/rs274ngc_return.hh:191 +msgid "Not in subroutine definition" +msgstr "Nessuna definizione in subroutine" + +#: src/emc/rs274ngc/rs274ngc_return.hh:192 +msgid "File not open" +msgstr "File non aperto" + +#: src/emc/rs274ngc/rs274ngc_return.hh:193 +#, c-format +msgid "cannot reopen file %s - removed or renamed? (%s)" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:194 +msgid "Need tool prepared -Txx- for toolchange" +msgstr "Necessario preparare utensile -Txx- per cambio utensile" + +#: src/emc/rs274ngc/rs274ngc_return.hh:195 +msgid "Cannot change planes with cutter radius compensation on" +msgstr "Impossibile cambiare piani con compensazione raggio utensile attiva" + +#: src/emc/rs274ngc/rs274ngc_return.hh:196 +msgid "Cutter radius compensation allowed only in XY, XZ planes" +msgstr "Compensazione raggio utensile consentita solamente nei piani XY e XZ" + +#: src/emc/rs274ngc/rs274ngc_return.hh:197 +msgid "P word missing with G76" +msgstr "Parametro P mancante con G76" + +#: src/emc/rs274ngc/rs274ngc_return.hh:198 +msgid "I J or K words missing with G76" +msgstr "Parametro I, J o K mancante con G76" + +# +#: src/emc/rs274ngc/rs274ngc_return.hh:199 +msgid "Cannot move rotary axes with G76" +msgstr "Impossibile muovere asse rotante con G76" + +#: src/emc/rs274ngc/rs274ngc_return.hh:200 +msgid "Multiple e words on one line" +msgstr "Parametro E presente più volte su una linea" + +#: src/emc/rs274ngc/rs274ngc_return.hh:201 +msgid "Named parameter not terminated" +msgstr "Parametro nominato non terminato" + +#: src/emc/rs274ngc/rs274ngc_return.hh:202 +msgid "Out of memory" +msgstr "Fine memoria" + +#: src/emc/rs274ngc/rs274ngc_return.hh:203 +msgid "S word missing with G96" +msgstr "Parametro S mancante con G96" + +#: src/emc/rs274ngc/rs274ngc_return.hh:204 +msgid "Queue is not empty after external input" +msgstr "Coda non vuota dopo un input esterno" + +#: src/emc/rs274ngc/rs274ngc_return.hh:205 +msgid "Can't select analog input with wait type != immediate return" +msgstr "" +"Impossibile selezionare input analogico con tipo attesa diversa da ritorno " +"immediato" + +#: src/emc/rs274ngc/rs274ngc_return.hh:206 +msgid "Zero timeout with wait type != immediate return" +msgstr "Tempo attesa nulla con tipo attesa diversa da ritorno immediato" + +#: src/emc/rs274ngc/rs274ngc_return.hh:207 +msgid "Invalid to select both a digital and an analog input with M66" +msgstr "" +"Invalido selezionare sia un segnale di input digitale che analogico con M66" + +#: src/emc/rs274ngc/rs274ngc_return.hh:208 +msgid "Need to have either a valid P or a valid E word with M66" +msgstr "E' necessario avere sia un parametro P che E valido con M66" + +#: src/emc/rs274ngc/rs274ngc_return.hh:209 +msgid "Q word missing with g73" +msgstr "Parametro Q mancante con G73" + +#: src/emc/rs274ngc/rs274ngc_return.hh:210 +msgid "Digital input selected out of bounds" +msgstr "Input digitale selezionato fuori dai limiti" + +#: src/emc/rs274ngc/rs274ngc_return.hh:211 +msgid "Analog input selected out of bounds" +msgstr "Input analogico selezionato fuori dai limiti" + +#: src/emc/rs274ngc/rs274ngc_return.hh:212 +msgid "W value unspecified in UV plane canned cycle" +msgstr "Valore W mancante in un ciclo fisso nel piano UV" + +#: src/emc/rs274ngc/rs274ngc_return.hh:213 +msgid "U value unspecified in VW plane canned cycle" +msgstr "Valore U mancante in un ciclo fisso nel piano VW" + +#: src/emc/rs274ngc/rs274ngc_return.hh:214 +msgid "V value unspecified in UW plane canned cycle" +msgstr "Valore V mancante in un ciclo fisso nel piano UW" + +#: src/emc/rs274ngc/rs274ngc_return.hh:215 +msgid "R less than W in cycle in UV plane" +msgstr "R minore di W in un ciclo nel piano UV" + +#: src/emc/rs274ngc/rs274ngc_return.hh:216 +msgid "R less than U in cycle in VW plane" +msgstr "R minore di U in un ciclo nel piano VW" + +#: src/emc/rs274ngc/rs274ngc_return.hh:217 +msgid "R less than V in cycle in UW plane" +msgstr "R minore di V in un ciclo nel piano UW" + +#: src/hal/utils/meter.c:200 +#, c-format +msgid "ERROR: '%s' is not a valid probe type\n" +msgstr "ERRORE: '%s' non è un tipo di esame valido\n" + +#: src/hal/utils/meter.c:208 +#, c-format +msgid "ERROR: no pin/signal/parameter name\n" +msgstr "ERRORE: nessun nome di pin/segnale/parametro\n" + +#: src/hal/utils/meter.c:214 +#, c-format +msgid "" +"ERROR: -s option requires a probe type and a pin/signal/parameter name\n" +msgstr "" +"ERRORE: opzione -s richiede un tipo di esame ed un nome di pin/segnale/" +"parametro\n" + +#: src/hal/utils/meter.c:240 tcl/tklinuxcnc.tcl:764 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6431 +msgid "Hal Meter" +msgstr "Hal Meter" + +#: src/hal/utils/meter.c:290 +msgid "_Select" +msgstr "_Seleziona" + +#: src/hal/utils/meter.c:291 +msgid "E_xit" +msgstr "E_sci" + +#: src/hal/utils/meter.c:339 src/hal/utils/meter.c:367 +msgid "Select Item to Probe" +msgstr "Selezione Elemento da Esaminare" + +#: src/hal/utils/meter.c:669 +msgid " _Pins " +msgstr " _Pins " + +#: src/hal/utils/meter.c:670 +msgid " _Signals " +msgstr "_Segnali " + +#: src/hal/utils/meter.c:671 +msgid " Para_meters " +msgstr " Para_metri " + +#: src/hal/utils/meter.c:714 +msgid "_Close" +msgstr "_Chiudi" + +#: src/hal/utils/scope.c:126 +msgid "" +"Usage:\n" +" halscope [-h] [-i infile] [-o outfile] [num_samples]\n" +msgstr "" +"Uso:\n" +" halscope [-h] [-i infile] [-o outfile] [numero_campioni]\n" + +#: src/hal/utils/scope.c:479 src/hal/utils/scope.c:506 +msgid "Open Configuration File:" +msgstr "Apri File Configurazione:" + +#: src/hal/utils/scope.c:540 +msgid "_Open Configuration..." +msgstr "Apri C_onfigurazione..." + +#: src/hal/utils/scope.c:546 +msgid "_Save Configuration..." +msgstr "_Salva configurazione" + +#: src/hal/utils/scope.c:555 +msgid "O_pen Data File..." +msgstr "A_pri File Dati..." + +#: src/hal/utils/scope.c:562 +msgid "S_ave Data File..." +msgstr "S_alva File Dati..." + +#: src/hal/utils/scope.c:571 share/axis/tcl/axis.tcl:96 +msgid "_Quit" +msgstr "_Esci" + +#: src/hal/utils/scope.c:577 +msgid "_About Halscope" +msgstr "Inform_azioni su Halscope" + +#: src/hal/utils/scope.c:583 share/axis/tcl/axis.tcl:501 +msgid "_File" +msgstr "_File" + +#: src/hal/utils/scope.c:587 share/axis/tcl/axis.tcl:517 +msgid "_Help" +msgstr "_Aiuto" + +#: src/hal/utils/scope.c:646 +msgid "HAL Oscilloscope" +msgstr "Oscilloscopio HAL" + +#: src/hal/utils/scope.c:674 +msgid "Horizontal" +msgstr "Orizzontale" + +#: src/hal/utils/scope.c:682 +msgid "Selected Channel" +msgstr "Canale Selezionato" + +#: src/hal/utils/scope.c:688 +msgid "Run Mode" +msgstr "Modo Operativo" + +#: src/hal/utils/scope.c:691 +msgid "Trigger" +msgstr "Trigger" + +#: src/hal/utils/scope.c:697 +msgid "Vertical" +msgstr "Verticale" + +#: src/hal/utils/scope.c:705 share/axis/tcl/axis.tcl:138 +#: share/axis/tcl/axis.tcl:1269 src/emc/usr_intf/gscreen/gscreen.py:3416 +#: src/emc/usr_intf/gscreen/gscreen.py:3417 +#: src/emc/usr_intf/gscreen/gscreen.glade:2614 +msgid "Stop" +msgstr "Stop" + +#: src/hal/utils/scope.c:708 +msgid "Normal" +msgstr "Normale" + +#: src/hal/utils/scope.c:711 +msgid "Single" +msgstr "Singolo" + +#: src/hal/utils/scope.c:714 +msgid "Roll" +msgstr "Roll" + +#: src/hal/utils/scope_horiz.c:130 src/emc/usr_intf/gscreen/gscreen.glade:3419 +msgid "Zoom" +msgstr "Zoom" + +#: src/hal/utils/scope_horiz.c:131 +msgid " Pos " +msgstr " Pos " + +#: src/hal/utils/scope_horiz.c:164 +msgid "" +"----- Samples\n" +"at ---- KHz" +msgstr "" +"----- Campioni\n" +"a ---- KHz" + +#: src/hal/utils/scope_horiz.c:464 +msgid "Realtime component not loaded" +msgstr "Componente realtime non caricato" + +#: src/hal/utils/scope_horiz.c:465 +msgid "" +"HALSCOPE uses a realtime component called scope_rt'\n" +"to sample signals for display. It is not currently loaded\n" +"and attempting to load it automatically failed. More information\n" +"may be available in the terminal where halscope was started.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Load the component (using 'halcmd loadrt scope_rt'), then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" +msgstr "" +"HALSCOPE usa il componente realtime chiamato scope_rt'\n" +"per campionare i segnali da visualizzare. Esso non è al momento caricato\n" +"e il tentativo di caricarlo automaticamente è fallito. Maggiori " +"informazioni\n" +"possono essere disponibili nel terminale dal quale halscope era stato " +"avviato.\n" +"\n" +"Si prega di scegliere una delle opzioni seguenti:\n" +"\n" +"Caricare il componente (usando 'halcmd loadrt scope_rt'), quindi cliccare " +"'OK'\n" +"oppure\n" +"Cliccare 'Esci' per uscire da HALSCOPE" + +#: src/hal/utils/scope_horiz.c:536 +msgid "Realtime function not linked" +msgstr "Funzione realtime non collegata" + +#: src/hal/utils/scope_horiz.c:537 +msgid "" +"The HALSCOPE realtime sampling function\n" +"must be called from a HAL thread in to\n" +"determine the sampling rate.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Select a thread name and multiplier then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" +msgstr "" +"La funzione di campionamento realtime di HALSCOPE\n" +"deve essere chiamata da un thread HAL per\n" +"determinare la velocità di campionamento.\n" +"\n" +"Si prega di scegliere una delle opzioni seguenti:\n" +"\n" +"Selezionare il nome di un thread e il moltiplicatore, quindi cliccare 'OK'\n" +"oppure\n" +"Cliccare 'Esci' per uscire da HALSCOPE" + +#: src/hal/utils/scope_horiz.c:544 +msgid "Select Sample Rate" +msgstr "Seleziona Velocità Campionamento" + +#: src/hal/utils/scope_horiz.c:545 +msgid "" +"Select a thread name and multiplier then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" +msgstr "" +"Selezionare il nome di un thread e il moltiplicatore, quindi cliccare 'OK'\n" +"oppure\n" +"Cliccare 'Esci' per uscire da HALSCOPE" + +#: src/hal/utils/scope_horiz.c:567 +msgid "Thread:" +msgstr "Thread:" + +#: src/hal/utils/scope_horiz.c:575 +msgid "Sample Period:" +msgstr "Periodo Campionamento:" + +#: src/hal/utils/scope_horiz.c:583 +msgid "Sample Rate:" +msgstr "Velocità Campionamento:" + +#: src/hal/utils/scope_horiz.c:599 src/emc/usr_intf/touchy/mdi.py:79 +#: src/emc/usr_intf/gscreen/mdi.py:78 +msgid "Thread" +msgstr "Thread" + +#: src/hal/utils/scope_horiz.c:600 +msgid "Period" +msgstr "Periodo" + +#: src/hal/utils/scope_horiz.c:638 +msgid "Multiplier:" +msgstr "Moltiplicatore:" + +#: src/hal/utils/scope_horiz.c:655 +msgid "Record Length" +msgstr "Lunghezza Registrazione" + +#: src/hal/utils/scope_horiz.c:658 +#, c-format +msgid "%5d samples (1 channel)" +msgstr "%5d campioni (1 canale)" + +#: src/hal/utils/scope_horiz.c:660 +#, c-format +msgid "%5d samples (2 channels)" +msgstr "%5d campioni (2 canali)" + +#: src/hal/utils/scope_horiz.c:664 +#, c-format +msgid "%5d samples (4 channels)" +msgstr "%5d campioni (4 canali)" + +#: src/hal/utils/scope_horiz.c:668 +#, c-format +msgid "%5d samples (8 channels)" +msgstr "%5d campioni (8 canali)" + +#: src/hal/utils/scope_horiz.c:672 +#, c-format +msgid "%5d samples (16 channels)" +msgstr "%5d campioni (16 canali)" + +#: src/hal/utils/scope_horiz.c:727 src/hal/utils/scope_horiz.c:773 +#: src/hal/utils/scope_horiz.c:985 src/hal/utils/scope_vert.c:771 +#: src/hal/utils/scope_vert.c:863 tcl/bin/emccalib.tcl:232 +#: tcl/bin/genedit.tcl:180 tcl/bin/genedit.tcl:450 tcl/bin/halconfig.tcl:682 +#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:387 +#: tcl/bin/pickconfig.tcl:749 tcl/bin/pickconfig.tcl:799 tcl/mini.tcl:1456 +#: tcl/mini.tcl:2937 tcl/tklinuxcnc.tcl:160 tcl/tklinuxcnc.tcl:245 +#: tcl/tklinuxcnc.tcl:419 tcl/tklinuxcnc.tcl:1338 tcl/tklinuxcnc.tcl:1407 +#: tcl/tklinuxcnc.tcl:1438 tcl/tklinuxcnc.tcl:1469 tcl/tklinuxcnc.tcl:2017 +#: tcl/tklinuxcnc.tcl:2036 tcl/tklinuxcnc.tcl:2055 tcl/tklinuxcnc.tcl:2102 +#: src/emc/usr_intf/axis/scripts/axis.py:1106 +#: src/emc/usr_intf/axis/scripts/axis.py:1173 +#: src/emc/usr_intf/axis/scripts/axis.py:1508 +#: src/emc/usr_intf/axis/scripts/axis.py:2672 +#: src/emc/usr_intf/axis/scripts/axis.py:3599 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:718 +#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1828 +#: share/axis/tcl/axis.tcl:1865 +msgid "OK" +msgstr "OK" + +#: src/hal/utils/scope_horiz.c:732 src/hal/utils/scope_horiz.c:773 +#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 tcl/tooledit.tcl:468 +msgid "Quit" +msgstr "Esci" + +#: src/hal/utils/scope_horiz.c:764 +msgid "Realtime thread(s) not running" +msgstr "Threads realtime non attivi" + +#: src/hal/utils/scope_horiz.c:765 +msgid "" +"HALSCOPE uses code in a realtime HAL thread to sample\n" +"signals for display. The HAL thread(s) are not running.\n" +"Threads are usually started by the application you are\n" +"attempting to run, or you can use the 'halcmd start' command.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Start the threads, then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" +msgstr "" +"HALSCOPE usa codice in un thread realtime HAL per campionare\n" +"i segnali da visualizzare. I thread HAL non sono attivi.\n" +"I thread normalmente sono avviati dall'applicazione che si\n" +"sta cercando di attivare, oppure si può usare il comando 'halcmd start'.\n" +"\n" +"Si prega di scegliere una delle opzioni seguenti:\n" +"\n" +"Avviare i threads, quindi cliccare 'OK'\n" +"oppure\n" +"Cliccare 'Esci' per uscire da HALSCOPE" + +#: src/hal/utils/scope_horiz.c:798 +msgid "Pick log file to write to:" +msgstr "Selezionare il file log da scrivere su:" + +#: src/hal/utils/scope_horiz.c:981 +msgid "Not enough channels" +msgstr "Canali non sufficienti" + +#: src/hal/utils/scope_horiz.c:982 +msgid "" +"This record length cannot handle the channels\n" +"that are currently enabled. Pick a shorter\n" +"record length that supports more channels." +msgstr "" +"Questa lunghezza del record non può utilizzare i canali\n" +"che sono attualmente attivati. Scegliere una lunghezza\n" +"del record più piccola che supporta più canali." + +#: src/hal/utils/scope_horiz.c:1070 +#, c-format +msgid "" +"%s\n" +"per div" +msgstr "" +"%s\n" +"per div" + +#: src/hal/utils/scope_horiz.c:1085 +#, c-format +msgid "" +"%s samples\n" +"at %s" +msgstr "" +"%s campioni\n" +"a %s" + +#: src/hal/utils/scope_horiz.c:1189 +msgid "nSec" +msgstr "nSec" + +#: src/hal/utils/scope_horiz.c:1192 +msgid "uSec" +msgstr "uSec" + +#: src/hal/utils/scope_horiz.c:1196 +msgid "mSec" +msgstr "mSec" + +#: src/hal/utils/scope_horiz.c:1200 src/emc/usr_intf/pncconf/pncconf.glade:2635 +#: src/emc/usr_intf/pncconf/pncconf.glade:3533 +#: src/emc/usr_intf/pncconf/pncconf.glade:4414 +#: src/emc/usr_intf/pncconf/pncconf.glade:5295 +msgid "Sec" +msgstr "Sec" + +#: src/hal/utils/scope_horiz.c:1217 src/emc/usr_intf/stepconf/spindle.glade:301 +#: src/emc/usr_intf/stepconf/axisx.glade:693 +#: src/emc/usr_intf/stepconf/axisy.glade:679 +#: src/emc/usr_intf/stepconf/axisz.glade:679 +#: src/emc/usr_intf/stepconf/axisa.glade:693 +#: src/emc/usr_intf/pncconf/pncconf.glade:8024 +#: src/emc/usr_intf/pncconf/pncconf.glade:8201 +#: src/emc/usr_intf/pncconf/pncconf.glade:8213 +msgid "Hz" +msgstr "Hz" + +#: src/hal/utils/scope_horiz.c:1220 +msgid "KHz" +msgstr "KHz" + +#: src/hal/utils/scope_horiz.c:1224 +msgid "Mhz" +msgstr "Mhz" + +#: src/hal/utils/scope_vert.c:413 src/hal/utils/scope_vert.c:1303 +#, c-format +msgid "" +"Offset\n" +"%s" +msgstr "" +"Offset\n" +"%s" + +#: src/hal/utils/scope_vert.c:628 +msgid "Gain" +msgstr "Guadagno" + +#: src/hal/utils/scope_vert.c:640 src/hal/utils/scope_trig.c:272 +msgid "Pos" +msgstr "Pos" + +#: src/hal/utils/scope_vert.c:654 tcl/ngcgui_ttt.tcl:214 +#: src/emc/usr_intf/pncconf/pncconf.glade:64273 +msgid "Scale" +msgstr "Scala" + +#: src/hal/utils/scope_vert.c:667 +msgid "Chan Off" +msgstr "Canale Off" + +#: src/hal/utils/scope_vert.c:723 +msgid "Set Offset" +msgstr "Imposta Offset" + +#: src/hal/utils/scope_vert.c:724 +#, c-format +msgid "" +"Set the vertical offset\n" +"for channel %d." +msgstr "" +"Imposta l'offset verticale\n" +"per il canale %d." + +#: src/hal/utils/scope_vert.c:744 +msgid "AC Coupled" +msgstr "Accoppiamento AC" + +#: src/hal/utils/scope_vert.c:779 src/hal/utils/scope_vert.c:1215 +#: src/hal/utils/scope_trig.c:387 tcl/bin/emccalib.tcl:234 +#: tcl/bin/genedit.tcl:294 tcl/bin/halconfig.tcl:103 tcl/bin/halconfig.tcl:684 +#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:390 +#: tcl/bin/pickconfig.tcl:567 tcl/mini.tcl:1457 tcl/mini.tcl:2938 +#: tcl/mini.tcl:3110 tcl/tklinuxcnc.tcl:162 tcl/tklinuxcnc.tcl:213 +#: tcl/tklinuxcnc.tcl:420 tcl/tklinuxcnc.tcl:1339 tcl/tklinuxcnc.tcl:1408 +#: tcl/tklinuxcnc.tcl:1439 tcl/tklinuxcnc.tcl:1470 tcl/tklinuxcnc.tcl:2103 +#: src/emc/usr_intf/axis/scripts/axis.py:1453 +#: src/emc/usr_intf/axis/scripts/axis.py:1509 +#: src/emc/usr_intf/axis/scripts/axis.py:1699 +#: src/emc/usr_intf/axis/scripts/axis.py:2108 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:720 +#: src/emc/usr_intf/stepconf/main_page.glade:467 +#: src/emc/usr_intf/gscreen/gscreen.glade:3986 +msgid "Cancel" +msgstr "Annulla" + +# Anmerkung:FJ: Tool max? Was das? +# Anmerkung:AJ: sollte "Index in tool table file too large" sein +#: src/hal/utils/scope_vert.c:859 +msgid "Too many channels" +msgstr "Troppi canali" + +#: src/hal/utils/scope_vert.c:860 +msgid "" +"You cannot add another channel.\n" +"\n" +"Either turn off one or more channels, or shorten\n" +"the record length to allow for more channels" +msgstr "" +"Non è possibile aggiungere un altro canale.\n" +"\n" +"Disattivare uno o più canali, oppure ridurre\n" +"la lunghezza del record così da utilizzare più canali" + +#: src/hal/utils/scope_vert.c:1074 +msgid "Select Channel Source" +msgstr "Selezionare Sorgente Canale" + +#: src/hal/utils/scope_vert.c:1075 +#, c-format +msgid "" +"Select a pin, signal, or parameter\n" +"as the source for channel %d." +msgstr "" +"Selezionare un pin, segnale, o parametro\n" +"come sorgente per il canale %d." + +#: src/hal/utils/scope_vert.c:1107 +msgid "Pins" +msgstr "Pins" + +#: src/hal/utils/scope_vert.c:1108 +msgid "Signals" +msgstr "Segnali" + +#: src/hal/utils/scope_vert.c:1109 +msgid "Parameters" +msgstr "Parametri" + +#: src/hal/utils/scope_trig.c:110 +#, c-format +msgid "Falling" +msgstr "Discesa" + +#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:295 +#, c-format +msgid "Rising" +msgstr "Salita" + +#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:303 +msgid "" +"Source\n" +"None" +msgstr "" +"Sorgente\n" +"Nessuna" + +#: src/hal/utils/scope_trig.c:124 +#, c-format +msgid "" +"Source\n" +"Chan %2d" +msgstr "" +"Sorgente\n" +"Canale %2d" + +#: src/hal/utils/scope_trig.c:219 tcl/tklinuxcnc.tcl:827 +#: src/emc/usr_intf/touchy/touchy.glade:2469 +msgid "Auto" +msgstr "Auto" + +#: src/hal/utils/scope_trig.c:221 +msgid "Force" +msgstr "Forza" + +#: src/hal/utils/scope_trig.c:255 src/hal/utils/scope_trig.c:289 +msgid "Level" +msgstr "Livello" + +#: src/hal/utils/scope_trig.c:323 +msgid "Trigger Source" +msgstr "Sorgente Trigger" + +#: src/hal/utils/scope_trig.c:324 +msgid "Select a channel to use for triggering." +msgstr "Selezione un canale da usare per il triggering." + +#: src/hal/utils/scope_trig.c:347 +msgid "Chan" +msgstr "Canale" + +#: src/hal/utils/scope_trig.c:348 +msgid "Source" +msgstr "Sorgente" + +#: src/emc/motion/control.c:270 +msgid "Unexpected realtime delay: check dmesg for details." +msgstr "Ritardo realtime inatteso: controlla dmesg per i dettagli." + +#: src/emc/motion/control.c:272 +#, c-format +msgid "" +"\n" +"In recent history there were\n" +"%ld, %ld, %ld, %ld, and %ld\n" +"elapsed clocks between calls to the motion controller.\n" +msgstr "" +"\n" +"Nella storia recente vi sono\n" +"%ld, %ld, %ld, %ld, e %ld\n" +"cicli di clocks trascorsi tra le chiamate al controllo movimento.\n" + +#: src/emc/motion/control.c:277 +#, c-format +msgid "" +"This time, there were %ld which is so anomalously\n" +"large that it probably signifies a problem with your\n" +"realtime configuration. For the rest of this run of\n" +"EMC, this message will be suppressed.\n" +"\n" +msgstr "" +"Questo tempo, in cui %ld è cosi particolarmente\n" +"grande che probabilmente indica un problema con la tua\n" +"configurazione realtime. Per il seguito di questa sessione di\n" +"EMC, questo messaggio verrà eliminato.\n" +"\n" + +#: src/emc/motion/control.c:394 +msgid "G38.4 move finished without breaking contact." +msgstr "Movimento G38.4 concluso senza interruzione contatto" + +#: src/emc/motion/control.c:397 +msgid "G38.2 move finished without making contact." +msgstr "Movimento G38.2 concluso senza raggiungimento contatto" + +#: src/emc/motion/control.c:412 +msgid "Probe tripped during non-probe MDI command." +msgstr "Contatto sensore durante comando MDI senza-sensore." + +#: src/emc/motion/control.c:440 +msgid "Probe tripped during homing motion." +msgstr "Contatto sensore durante movimento azzeramento" + +#: src/emc/motion/control.c:444 +msgid "Probe tripped during a jog." +msgstr "Contatto sensore durante movimento" + +#: src/emc/motion/control.c:622 +#, fuzzy +msgid "can't add coordinated return move" +msgstr "impossibile aggiungere movimento circolare" + +#: src/emc/motion/control.c:663 +#, fuzzy +msgid "can't add linear coordinated jog move" +msgstr "impossibile aggiungere movimento lineare" + +#: src/emc/motion/control.c:817 +#, c-format +msgid "fault %d during orient in progress" +msgstr "errore %d durante orientazione in progress" + +#: src/emc/motion/control.c:957 +msgid "motion stopped by enable input" +msgstr "movimento fermato da enable input" + +#: src/emc/motion/control.c:980 +#, c-format +msgid "joint %d on limit switch error" +msgstr "contatto sul limite %d" + +#: src/emc/motion/control.c:992 +#, c-format +msgid "joint %d amplifier fault" +msgstr "errore amplificatore asse %d" + +#: src/emc/motion/control.c:1001 +#, c-format +msgid "joint %d following error" +msgstr "Errore Inseguimento asse %d" + +#: src/emc/motion/control.c:1687 +#, c-format +msgid "Exceeded positive soft limit on joint %d" +msgstr "Limite soft positivo superato sull'asse %d" + +#: src/emc/motion/control.c:1692 +#, c-format +msgid "Exceeded negative soft limit on joint %d" +msgstr "Limite soft negativo superato sull'asse %d" + +#: src/emc/motion/command.c:163 +#, c-format +msgid "Can't jog invalid joint number %d." +msgstr "Movimento impossibile per l'asse numero %d non valido" + +#: src/emc/motion/command.c:167 +#, c-format +msgid "Can't jog joint %d further past max hard limit." +msgstr "Impossibile muovere l'asse %d oltre il limite hard max" + +#: src/emc/motion/command.c:172 +#, c-format +msgid "Can't jog joint %d further past min hard limit." +msgstr "Impossibile muovere l'asse %d oltre il limite hard min" + +#: src/emc/motion/command.c:178 +#, c-format +msgid "Can't jog joint %d further past max soft limit." +msgstr "Impossibile muovere l'asse %d oltre il limite soft max" + +#: src/emc/motion/command.c:183 +#, c-format +msgid "Can't jog joint %d further past min soft limit." +msgstr "Impossibile muovere l'asse %d oltre il limite soft min" + +#: src/emc/motion/command.c:243 +#, c-format +msgid "%s move on line %d would exceed joint %d's positive limit" +msgstr "%s movimento sulla linea %d oltrepassa il limite positivo dell'asse %d" + +#: src/emc/motion/command.c:250 +#, c-format +msgid "%s move on line %d would exceed joint %d's negative limit" +msgstr "%s movimento sulla linea %d oltrepassa il limite negativo dell'asse %d" + +#: src/emc/motion/command.c:535 +msgid "all joints must be homed before going into coordinated mode" +msgstr "" +"Tutti gi assi devono essere azzerati prima di andare in modalità coordinate" + +#: src/emc/motion/command.c:556 +msgid "all joints must be homed before going into teleop mode" +msgstr "" +"Tutti gi assi devono essere azzerati prima di andare in modalità teleop" + +#: src/emc/motion/command.c:710 src/emc/motion/command.c:776 +#: src/emc/motion/command.c:849 +msgid "Can't jog joint in coordinated mode." +msgstr "Impossibile movimentare assi in modalità coordinate" + +#: src/emc/motion/command.c:715 src/emc/motion/command.c:781 +#: src/emc/motion/command.c:854 +msgid "Can't jog joint when not enabled." +msgstr "Impossibile movimentare assi senza abilitazione" + +#: src/emc/motion/command.c:720 src/emc/motion/command.c:859 +msgid "Can't jog any joints while homing." +msgstr "Impossibile movimentare assi durante azzeramento" + +#: src/emc/motion/command.c:786 +msgid "Can't jog any joint while homing." +msgstr "Impossibile movimentare nessun asse durante azzeramento" + +#: src/emc/motion/command.c:918 +msgid "need to be enabled, in coord mode for linear move" +msgstr "necessaria abilitazione, per moto lineare in modalità coordinate" + +#: src/emc/motion/command.c:928 +msgid "can't do linear move with limits exceeded" +msgstr "movimento lineare impossibile in presenza superamento limiti" + +#: src/emc/motion/command.c:954 +#, fuzzy, c-format +msgid "can't add linear move at line %d, error code %d" +msgstr "movimento lineare impossibile in presenza superamento limiti" + +#: src/emc/motion/command.c:982 +msgid "need to be enabled, in coord mode for circular move" +msgstr "necessaria abilitazione, per moto circolare in modalità coordinate" + +#: src/emc/motion/command.c:993 +msgid "can't do circular move with limits exceeded" +msgstr "movimento circolare impossibile in presenza superamento limiti" + +#: src/emc/motion/command.c:1015 +#, fuzzy, c-format +msgid "can't add circular move at line %d, error code %d" +msgstr "movimento circolare impossibile in presenza superamento limiti" + +#: src/emc/motion/command.c:1114 +#, fuzzy +msgid "MOTION: can't STEP while jogging" +msgstr "MOTION: STEP impossibile in presenza di altre esecuzioni" + +#: src/emc/motion/command.c:1117 +#, fuzzy +msgid "MOTION: can't STEP while in return move" +msgstr "MOTION: STEP impossibile in presenza di altre esecuzioni" + +#: src/emc/motion/command.c:1127 +#, fuzzy, c-format +msgid "MOTION: STEP while in state %d" +msgstr "MOTION: STEP impossibile in presenza di altre esecuzioni" + +#: src/emc/motion/command.c:1229 +msgid "can't enable motion, enable input is false" +msgstr "impossibile abilitare movimento, input enable è falso" + +#: src/emc/motion/command.c:1302 +msgid "must be in joint mode to home" +msgstr "Bisogna essere in modalità assi per eseguire azzeramento" + +#: src/emc/motion/command.c:1313 src/emc/motion/command.c:1324 +msgid "homing sequence already in progress" +msgstr "sequenza azzeramento già attiva" + +#: src/emc/motion/command.c:1322 +msgid "homing already in progress" +msgstr "azzeramento già attivo" + +#: src/emc/motion/command.c:1352 +msgid "must be in joint mode or disabled to unhome" +msgstr "Bisogna essere in modalità assi oppure scegliere dis-azzeraramento" + +#: src/emc/motion/command.c:1364 src/emc/motion/command.c:1387 +#, c-format +msgid "Cannot unhome while homing, joint %d" +msgstr "Impossibile dis-azzerare durante azzeramento, asse %d" + +#: src/emc/motion/command.c:1368 src/emc/motion/command.c:1391 +#, c-format +msgid "Cannot unhome while moving, joint %d" +msgstr "Impossibile dis-azzerare durante movimento, asse %d" + +#: src/emc/motion/command.c:1396 +#, c-format +msgid "Cannot unhome inactive joint %d" +msgstr "Impossibile dis-azzerare asse %d inattivo" + +#: src/emc/motion/command.c:1400 +#, c-format +msgid "Cannot unhome invalid joint %d (max %d)" +msgstr "Impossibile dis-azzerare asse invalido %d (max %d)" + +#: src/emc/motion/command.c:1427 +msgid "need to be enabled, in coord mode for probe move" +msgstr "necessaria abilitazione, per movimento sonda in modalità coordinate" + +#: src/emc/motion/command.c:1437 +msgid "can't do probe move with limits exceeded" +msgstr "Impossibile uso sonda in presenza di superamento limiti" + +#: src/emc/motion/command.c:1451 +msgid "Probe is already clear when starting G38.4 or G38.5 move" +msgstr "Sonda già inattiva all'inizio del movimento con G38.4 o G38.5" + +#: src/emc/motion/command.c:1453 +msgid "Probe is already tripped when starting G38.2 or G38.3 move" +msgstr "Sonda già attiva all'inizio del movimento con G38.2 o G38.3" + +#: src/emc/motion/command.c:1473 +msgid "can't add probe move" +msgstr "impossibile aggiungere movimento sonda" + +#: src/emc/motion/command.c:1498 +msgid "need to be enabled, in coord mode for rigid tap move" +msgstr "necessaria abilitazione, per movimento rigido in modalità coordinate" + +#: src/emc/motion/command.c:1509 +msgid "can't do rigid tap move with limits exceeded" +msgstr "Impossibile uso movimento tap rigido in presenza di superamento limiti" + +#: src/emc/motion/command.c:1526 +msgid "can't add rigid tap move" +msgstr "impossibile aggiungere movimento tap rigido" + +#: src/emc/motion/command.c:1541 +msgid "need to be enabled, in teleop mode for teleop move" +msgstr "necessaria abilitazione, per movimento teleop in modalità teleop" + +#: src/emc/motion/command.c:1710 +#, c-format +msgid "joint %d: too many compensation entries" +msgstr "asse %d: troppi parametri compensazione" + +#: src/emc/motion/command.c:1716 +#, c-format +msgid "joint %d: compensation values must increase" +msgstr "asse %d: i valori della compensazione devono crescere" + +#: src/emc/motion/command.c:1745 +#, c-format +msgid "unrecognized command %d" +msgstr "comando %d sconosciuto" + +#: src/emc/motion/motion.c:212 +msgid "MOTION: hal_init() failed\n" +msgstr "MOTION: hal_init() fallito\n" + +#: src/emc/motion/motion.c:217 +#, c-format +msgid "MOTION: num_joints is %d, must be between 1 and %d\n" +msgstr "MOTION: num_joints vale %d, deve essere tra 1 e %d\n" + +#: src/emc/motion/motion.c:224 +#, c-format +msgid "MOTION: num_dio is %d, must be between 1 and %d\n" +msgstr "MOTION: num_dio vale %d, deve essere tra 1 e %d\n" + +#: src/emc/motion/motion.c:231 +#, c-format +msgid "MOTION: num_aio is %d, must be between 1 and %d\n" +msgstr "MOTION: num_aio vale %d, deve essere tra 1 e %d\n" + +#: src/emc/motion/motion.c:239 +msgid "MOTION: init_hal_io() failed\n" +msgstr "MOTION: init_hal_io() fallito\n" + +#: src/emc/motion/motion.c:248 +msgid "MOTION: init_comm_buffers() failed\n" +msgstr "MOTION: init_comm_buffers() fallito\n" + +#: src/emc/motion/motion.c:256 +msgid "MOTION: init_threads() failed\n" +msgstr "MOTION: init_threads() fallito\n" + +#: src/emc/motion/motion.c:281 +#, c-format +msgid "MOTION: hal_stop_threads() failed, returned %d\n" +msgstr "MOTION: hal_stop_threads() fallito, riporta %d\n" + +#: src/emc/motion/motion.c:294 +#, c-format +msgid "MOTION: rtapi_shmem_delete() failed, returned %d\n" +msgstr "MOTION: rtapi_shmem_delete() fallito, riporta %d\n" + +#: src/emc/motion/motion.c:300 +#, c-format +msgid "MOTION: hal_exit() failed, returned %d\n" +msgstr "MOTION: hal_exit() fallito, riporta %d\n" + +#: src/emc/motion/motion.c:323 +msgid "MOTION: emcmot_hal_data malloc failed\n" +msgstr "MOTION: emcmot_hal_data malloc fallito\n" + +#: src/emc/motion/motion.c:331 +#, fuzzy +msgid "MOTION: joints malloc failed\n" +msgstr "MOTION: init_hal_io() fallito\n" + +#: src/emc/motion/motion.c:695 +#, c-format +msgid "MOTION: joint %d pin/param export failed\n" +msgstr "MOTION: asse %d pin/param export fallito\n" + +#: src/emc/motion/homing.c:80 src/emc/motion/homing.c:748 +#, c-format +msgid "hit limit in home state %d" +msgstr "raggiunto limite in stato home %d" + +#: src/emc/motion/homing.c:90 +#, c-format +msgid "end of move in home state %d" +msgstr "fine movimento in stato home%d" + +#: src/emc/motion/homing.c:185 +#, c-format +msgid "unknown state '%d' during homing sequence" +msgstr "stato '%d' sconosciuto durante sequenza azzeramento" + +#: src/emc/motion/homing.c:246 +msgid "Cannot home while shared home switch is closed" +msgstr "Impossibile azzeramento mente lo switch di zero condiviso è chiuso" + +#: src/emc/motion/homing.c:290 +msgid "" +"invalid homing config: non-zero LATCH_VEL needs either SEARCH_VEL or " +"USE_INDEX" +msgstr "" +"configurazione azzeramento errata: LATCH_VEL diversa da zero necessita di " +"SEARCH_VEL oUSE_INDEX" + +#: src/emc/motion/homing.c:299 +msgid "invalid homing config: non-zero SEARCH_VEL needs LATCH_VEL" +msgstr "configurazione azzeramento errata: SEARCH_VEL necessita di LATCH_VEL" + +#: src/emc/motion/homing.c:447 +msgid "Home switch inactive before start of backoff move" +msgstr "Switch zero inattivo prima del movimento di ritorno" + +#: src/emc/motion/homing.c:495 +msgid "Home switch active before start of latch move" +msgstr "Switch zero attivo prima dell'inizio del movimento di avvicinamento" + +#: src/emc/motion/homing.c:551 +msgid "Home switch inactive before start of latch move" +msgstr "Switch zero inattivo prima dell'inizio del movimento di avvicinamento" + +#: src/emc/motion/homing.c:797 +#, c-format +msgid "unknown state '%d' during homing" +msgstr "stato '%d' sconosciuto durante azzeramento" + +#: tcl/bin/emccalib.tcl:80 +#, fuzzy +msgid "Machinekit Servo Axis Calibration" +msgstr "LinuxCNC Calibrazione Asse Servo" + +#: tcl/bin/emccalib.tcl:90 +msgid "Save To File" +msgstr "Salvare su File" + +#: tcl/bin/emccalib.tcl:106 tcl/bin/genedit.tcl:77 tcl/bin/halconfig.tcl:151 +#: tcl/bin/halshow.tcl:85 tcl/mini.tcl:2516 tcl/tklinuxcnc.tcl:719 +#: tcl/ngcgui.tcl:489 +msgid "File" +msgstr "File" + +#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:236 tcl/bin/halconfig.tcl:153 +#: tcl/mini.tcl:3558 src/emc/usr_intf/touchy/touchy.glade:2420 +msgid "Refresh" +msgstr "Aggiorna" + +#: tcl/bin/emccalib.tcl:110 tcl/bin/genedit.tcl:82 tcl/bin/halconfig.tcl:155 +#: tcl/mini.tcl:2535 src/emc/usr_intf/axis/scripts/axis.py:2107 +msgid "Save" +msgstr "Salva" + +#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:623 +#, tcl-format +msgid "Tune %d" +msgstr "Regolare %d" + +#: tcl/bin/emccalib.tcl:162 tcl/bin/halconfig.tcl:628 +msgid "INI Name" +msgstr "Nome INI" + +#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:629 +msgid "HAL's Value" +msgstr "Valore HAL" + +#: tcl/bin/emccalib.tcl:165 tcl/bin/halconfig.tcl:631 +msgid "Next Value" +msgstr "Valore Seguente" + +#: tcl/bin/emccalib.tcl:230 tcl/bin/halconfig.tcl:680 tcl/bin/halconfig.tcl:731 +msgid "Test" +msgstr "Test" + +#: tcl/bin/emccalib.tcl:388 tcl/bin/halconfig.tcl:883 +#, tcl-format +msgid "" +"The HAL parameter \n" +" %s \n" +" has changed. \n" +" Really quit?" +msgstr "" +"Il parametro HAL \n" +" %s \n" +" è cambiato. \n" +"Uscire veramente?" + +#: tcl/bin/emccalib.tcl:413 tcl/bin/halconfig.tcl:1170 +msgid "" +"Not permitted to save here.\n" +"\n" +" You need to copy a configuration to your home directory and work there." +msgstr "" +"Non è possibile salvare qui.\n" +"\n" +" Bisogna copiare una configurazione nella home directory e modificarla." + +#: tcl/bin/emccalib.tcl:487 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 +#: tcl/bin/pickconfig.tcl:843 tcl/bin/pickconfig.tcl:854 +#: tcl/scripts/Set_Coordinates.tcl:205 tcl/scripts/Set_Coordinates.tcl:228 +#, tcl-format +msgid "can't save %s" +msgstr "Impossibile salvare %s " + +#: tcl/bin/emcdebug.tcl:166 tcl/bin/emcdebug.tcl:177 +msgid "LinuxCNC Debug" +msgstr "LinuxCNC Debug" + +#: tcl/bin/emcdebug.tcl:185 +msgid "Invalid INI file entries" +msgstr "Valori errati nel file INI" + +#: tcl/bin/emcdebug.tcl:186 +msgid "Configuration information" +msgstr "Informazione configurazione" + +#: tcl/bin/emcdebug.tcl:187 +msgid "Use of defaults" +msgstr "Uso di defaults" + +#: tcl/bin/emcdebug.tcl:188 +msgid "Version information" +msgstr "Informazioni versione" + +#: tcl/bin/emcdebug.tcl:189 +msgid "Command issuing" +msgstr "Comando fornito" + +#: tcl/bin/emcdebug.tcl:190 +msgid "IO points" +msgstr "Punti I/O" + +#: tcl/bin/emcdebug.tcl:191 +msgid "NML" +msgstr "NML" + +#: tcl/bin/emcdebug.tcl:192 +msgid "Motion time" +msgstr "Tempo movimento" + +#: tcl/bin/emcdebug.tcl:193 src/emc/usr_intf/axis/scripts/debuglevel.py:42 +msgid "Interpreter" +msgstr "Interprete" + +#: tcl/bin/emcdebug.tcl:194 +msgid "RCS" +msgstr "RCS" + +#: tcl/bin/emcdebug.tcl:195 +msgid "Trajectory level" +msgstr "Livello traiettoria" + +#: tcl/bin/emcdebug.tcl:196 +msgid "Interpreter list" +msgstr "Lista interprete" + +#: tcl/bin/genedit.tcl:78 tcl/mini.tcl:2533 +msgid "New" +msgstr "Nuovo" + +#: tcl/bin/genedit.tcl:80 tcl/mini.tcl:1667 tcl/mini.tcl:2534 +#: tcl/tklinuxcnc.tcl:720 tcl/tklinuxcnc.tcl:1657 +msgid "Open..." +msgstr "Apri..." + +#: tcl/bin/genedit.tcl:84 tcl/mini.tcl:2536 +msgid "Save As..." +msgstr "Salva come..." + +#: tcl/bin/genedit.tcl:87 tcl/bin/halconfig.tcl:165 tcl/bin/halshow.tcl:92 +#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1322 +#: tcl/ngcgui.tcl:3832 +msgid "Exit" +msgstr "Esci" + +#: tcl/bin/genedit.tcl:91 tcl/mini.tcl:2517 +#: src/emc/usr_intf/gscreen/gscreen.glade:2685 +msgid "Edit" +msgstr "Modifica" + +#: tcl/bin/genedit.tcl:92 tcl/mini.tcl:2543 +msgid "Cut" +msgstr "Taglia" + +#: tcl/bin/genedit.tcl:94 tcl/mini.tcl:2544 +msgid "Copy" +msgstr "Copia" + +#: tcl/bin/genedit.tcl:96 tcl/mini.tcl:2545 +msgid "Paste" +msgstr "Incolla" + +#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:73 +msgid "Select All" +msgstr "Seleziona tutto" + +#: tcl/bin/genedit.tcl:104 tcl/bin/halconfig.tcl:192 tcl/mini.tcl:919 +#: tcl/mini.tcl:2519 tcl/tklinuxcnc.tcl:790 +#: src/emc/usr_intf/stepconf/main_page.glade:445 +msgid "Help" +msgstr "Aiuto" + +#: tcl/bin/genedit.tcl:105 tcl/mini.tcl:1011 tcl/mini.tcl:2559 +#: tcl/tklinuxcnc.tcl:796 +msgid "About..." +msgstr "Informazioni.." + +#: tcl/bin/genedit.tcl:130 +msgid "Save and Reload" +msgstr "Salva e Ricarica" + +#: tcl/bin/genedit.tcl:133 tcl/mini.tcl:2550 +msgid "Find..." +msgstr "Trova..." + +#: tcl/bin/genedit.tcl:135 tcl/mini.tcl:2552 +msgid "Renumber File..." +msgstr "Rinumera File..." + +#: tcl/bin/genedit.tcl:140 tcl/mini.tcl:917 tcl/mini.tcl:2518 +#: tcl/tklinuxcnc.tcl:746 src/emc/usr_intf/gmoccapy/gmoccapy.glade:5135 +msgid "Settings" +msgstr "Settaggi" + +#: tcl/bin/genedit.tcl:141 tcl/mini.tcl:2554 +msgid "No Numbering" +msgstr "Nessuna numerazione" + +#: tcl/bin/genedit.tcl:144 tcl/mini.tcl:2556 +msgid "Line Numbering..." +msgstr "Numerazione Linee..." + +#: tcl/bin/genedit.tcl:150 tcl/tklinuxcnc.tcl:768 +msgid "Scripts" +msgstr "Scripts" + +#: tcl/bin/genedit.tcl:177 +msgid "About TkEditor" +msgstr "Informazioni su TkEditor" + +#: tcl/bin/genedit.tcl:179 +msgid "" +"TkEditor\n" +"\n" +"Simple Tcl/Tk Text Editor\n" +"\n" +"GPL Version 2" +msgstr "" +"TkEditor\n" +"\n" +"Semplice Editore Testo Tcl/Tk \n" +"\n" +"GPL Versione 2" + +#: tcl/bin/genedit.tcl:267 tcl/mini.tcl:3090 +msgid "Find" +msgstr "Trova" + +#: tcl/bin/genedit.tcl:270 +msgid "Find:" +msgstr "Trova:" + +#: tcl/bin/genedit.tcl:276 +msgid "Replace:" +msgstr "Sostituisci:" + +#: tcl/bin/genedit.tcl:282 +msgid "Find All" +msgstr "Trova tutto" + +#: tcl/bin/genedit.tcl:285 tcl/mini.tcl:3113 +msgid "Replace All" +msgstr "Sostituisci Tutto" + +#: tcl/bin/genedit.tcl:288 +msgid "Skip This" +msgstr "Salta Questo" + +#: tcl/bin/genedit.tcl:291 +msgid "Replace This" +msgstr "Sostituisci Questo" + +#: tcl/bin/genedit.tcl:297 +msgid "Clear" +msgstr "Cancella" + +#: tcl/bin/genedit.tcl:422 tcl/mini.tcl:2640 +msgid "Set Line Numbering" +msgstr "Imposta Nnumerazione Linee" + +#: tcl/bin/genedit.tcl:424 tcl/mini.tcl:2644 +msgid "Increment" +msgstr "Incremento" + +#: tcl/bin/genedit.tcl:426 tcl/mini.tcl:2646 +msgid "One" +msgstr "Uno" + +#: tcl/bin/genedit.tcl:429 tcl/mini.tcl:2648 +msgid "Two" +msgstr "Due" + +#: tcl/bin/genedit.tcl:432 tcl/mini.tcl:2650 +msgid "Five" +msgstr "Cinque" + +#: tcl/bin/genedit.tcl:435 tcl/mini.tcl:2652 +msgid "Ten" +msgstr "Dieci" + +#: tcl/bin/genedit.tcl:439 tcl/mini.tcl:2654 +msgid "Space" +msgstr "Spazio" + +#: tcl/bin/genedit.tcl:441 tcl/mini.tcl:2656 +msgid "Single Space" +msgstr "Spazio Singolo" + +#: tcl/bin/genedit.tcl:444 tcl/mini.tcl:2658 +msgid "Double Space" +msgstr "Spazio Doppio" + +#: tcl/bin/genedit.tcl:447 tcl/mini.tcl:2660 +msgid "Tab Space" +msgstr "Tabulatore" + +#: tcl/bin/genedit.tcl:453 +msgid "Next Number:" +msgstr "Prossimo Numero:" + +#: tcl/bin/genedit.tcl:474 tcl/mini.tcl:2668 +msgid "Renumber" +msgstr "Rinumera" + +#: tcl/bin/halconfig.tcl:88 tcl/bin/halshow.tcl:33 +msgid "HAL Configuration" +msgstr "Configurazione HAL" + +#: tcl/bin/halconfig.tcl:103 +msgid "Would you like to save your configuration before you exit?" +msgstr "Vuoi salvare la tua configurazione prima di uscire?" + +#: tcl/bin/halconfig.tcl:103 +msgid "Save All" +msgstr "Salva tutto" + +#: tcl/bin/halconfig.tcl:103 +msgid "Save Tune" +msgstr "Salva Impostazione" + +#: tcl/bin/halconfig.tcl:103 +msgid "Save as Netlist" +msgstr "Salva come Netlist" + +#: tcl/bin/halconfig.tcl:103 +msgid "Don't Save" +msgstr "Non Salvare" + +#: tcl/bin/halconfig.tcl:132 +msgid "Show" +msgstr "Mostra" + +#: tcl/bin/halconfig.tcl:133 +msgid "Watch" +msgstr "Vista" + +#: tcl/bin/halconfig.tcl:134 +msgid "Modify" +msgstr "Modifica" + +#: tcl/bin/halconfig.tcl:157 +msgid "Save INI Tuning" +msgstr "Salva Impostazioni INI" + +#: tcl/bin/halconfig.tcl:159 +msgid "Save HAL Ini" +msgstr "Salva ini HAL" + +#: tcl/bin/halconfig.tcl:161 +msgid "Save HAL Net" +msgstr "Salva Net HAL" + +#: tcl/bin/halconfig.tcl:163 +msgid "Save and Exit" +msgstr "Salva ed Esci" + +#: tcl/bin/halconfig.tcl:168 tcl/mini.tcl:916 tcl/tklinuxcnc.tcl:739 +msgid "View" +msgstr "Visualizzare" + +#: tcl/bin/halconfig.tcl:170 tcl/bin/halshow.tcl:104 +msgid "Expand Tree" +msgstr "Espandi Albero" + +#: tcl/bin/halconfig.tcl:172 tcl/bin/halshow.tcl:106 +msgid "Collapse Tree" +msgstr "Chiudi albero" + +#: tcl/bin/halconfig.tcl:175 tcl/bin/halshow.tcl:109 +msgid "Expand Pins" +msgstr "Espandi Pins" + +#: tcl/bin/halconfig.tcl:177 tcl/bin/halshow.tcl:111 +msgid "Expand Parameters" +msgstr "Espandi parametri" + +#: tcl/bin/halconfig.tcl:179 tcl/bin/halshow.tcl:113 +msgid "Expand Signals" +msgstr "Espandi Segnali" + +#: tcl/bin/halconfig.tcl:182 tcl/bin/halshow.tcl:116 +msgid "Erase Watch" +msgstr "Cancella Vista" + +#: tcl/bin/halconfig.tcl:194 tcl/mini.tcl:840 tcl/mini.tcl:2785 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "About" +msgstr "Informazioni" + +#: tcl/bin/halconfig.tcl:196 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2579 +msgid "Main" +msgstr "Principale" + +#: tcl/bin/halconfig.tcl:476 +msgid "Enter HAL command :" +msgstr "Digitare comando HAL :" + +#: tcl/bin/halconfig.tcl:479 tcl/bin/halconfig.tcl:528 tcl/bin/halshow.tcl:354 +msgid "Execute" +msgstr "Esegui" + +#: tcl/bin/halconfig.tcl:943 tcl/bin/halshow.tcl:405 +msgid "Select a node to show." +msgstr "Seleziona un nodo da visualizzare." + +#: tcl/bin/halconfig.tcl:968 tcl/bin/halshow.tcl:429 +msgid "<-- Select a Leaf. Click on its name." +msgstr "<-- Selezionare un Ramo. Cliccare sul nome." + +#: tcl/bin/halconfig.tcl:1085 tcl/bin/halconfig.tcl:1095 +#: tcl/bin/halconfig.tcl:1102 tcl/bin/halconfig.tcl:1109 +#: tcl/bin/halconfig.tcl:1116 +#, tcl-format +msgid "Click a highlighted entry where %s should go." +msgstr "Cliccare una voce evidenziata dove %s deve andare." + +#: tcl/bin/halconfig.tcl:1092 +msgid "Nothing to be done for parameters here. Try the tuning page" +msgstr "" +"Niente da fare con questi parametri. Provare nella pagina di regolazione" + +#: tcl/bin/halconfig.tcl:1124 +#, tcl-format +msgid "%s is not a leaf, try again" +msgstr "%s non è un ramo, prova ancora" + +#: tcl/bin/halconfig.tcl:1281 +msgid "" +"Copyright Raymond E Henry. 2006\n" +"License: GPL Version 2\n" +"\n" +"Halconfig is an LinuxCNC configuration tool. It requires that you have " +"started an instance of linuxcnc.\n" +"\n" +"This script carries no warranty or liability for its use to the extent " +"allowed by law." +msgstr "" +"Copyright Raymond E Henry. 2006\n" +"License: GPL Version 2\n" +"\n" +"Halconfig è uno strumento di configurazione di LinuxCNC. Esso richiede che " +"si parta da una versione di LinuxCNC.\n" +"\n" +"This script is not for the faint hearted and carries no warranty or " +"liability for its use to the extent allowed by law." + +#: tcl/bin/halshow.tcl:69 +msgid " SHOW " +msgstr " MOSTRA " + +#: tcl/bin/halshow.tcl:70 +msgid " WATCH " +msgstr " VISTA" + +#: tcl/bin/halshow.tcl:90 +msgid "Load Watch List" +msgstr "Carica Lista Controllo" + +#: tcl/bin/halshow.tcl:102 +msgid "Tree View" +msgstr "Vista ad albero" + +#: tcl/bin/halshow.tcl:349 +msgid "Test HAL command :" +msgstr "Prova comando HAL:" + +#: tcl/bin/halshow.tcl:544 +msgid "Load a watch list" +msgstr "Carica una lista di controllo" + +#: tcl/bin/halshow.tcl:567 +msgid "Save current watch list" +msgstr "Salva la lista controllo corrente" + +#: tcl/bin/halshow.tcl:581 +msgid "Commands may be tested here but they will NOT be saved" +msgstr "Possono essere provati i comandi ma essi NON saranno salvati" + +#: tcl/bin/pickconfig.tcl:96 +msgid "" +"Can't find the bwidget 1.7 package. There is a debian bwidget package; " +"install \n" +"it with sudo apt-get install bwidget." +msgstr "" +"Non posso trovare il package bwidget 1.7 . E' disponibile il package " +"debian bwidget ; installare \n" +"con il comando: sudo apt-get install bwidget." + +#: tcl/bin/pickconfig.tcl:154 +#, fuzzy +msgid "Machinekit Configuration Selector" +msgstr "Selettore Configurazioni LinuxCNC " + +#: tcl/bin/pickconfig.tcl:296 +msgid "No details available." +msgstr "Nessun dettaglio disponibile." + +#: tcl/bin/pickconfig.tcl:343 +#, fuzzy +msgid "" +"Welcome to MachineKit.\n" +"\n" +"Select a machine configuration from the list on the left.\n" +"Details about the selected configuration will appear in the display on the " +"right.\n" +"Click 'OK' to run the selected configuration" +msgstr "" +"Benvenuto su LinuxCNC.\n" +"\n" +"Seleziona una configurazione di macchina dalla lista sulla sinistra.\n" +"I dettagli sulla configurazione selezionata appariranno sul video sulla " +"destra.\n" +"Cliccare 'OK' per avviare la configurazione selezionata" + +#: tcl/bin/pickconfig.tcl:401 +msgid "My Configurations" +msgstr "Configurazioni Personali" + +#: tcl/bin/pickconfig.tcl:405 +msgid "Sample Configurations" +msgstr "Configurazioni Base" + +#: tcl/bin/pickconfig.tcl:530 +#, tcl-format +msgid "ERROR: no configurations found in path '%s'" +msgstr "ERRORE: nessuna configurazione trovata nel percorso '%s'" + +#: tcl/bin/pickconfig.tcl:567 +msgid "Copy Configuration?" +msgstr "Copiare Configurazione?" + +#: tcl/bin/pickconfig.tcl:567 +#, tcl-format +msgid "" +"Would you like to copy the %s configuration to your home directory so you " +"can customize it?" +msgstr "" +"Vuoi copiare la configurazione %s nella tua home directory in maniera da " +"personalizzarla?" + +#: tcl/bin/pickconfig.tcl:567 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:563 +msgid "Yes" +msgstr "Si" + +#: tcl/bin/pickconfig.tcl:749 +msgid "Configuration Copied" +msgstr "Configurazione Copiata " + +#: tcl/bin/pickconfig.tcl:749 +#, fuzzy, tcl-format +msgid "" +"The configuration file has been copied to %s. Next time, choose this " +"location when starting MachineKit." +msgstr "" +"Il file di configurazione è stato copiato in %s. La prossima volta, scegli " +"questa posizione quando attivi LinuxCNC." + +#: tcl/bin/pickconfig.tcl:799 +msgid "Shortcut Created" +msgstr "Collegamento Creato" + +#: tcl/bin/pickconfig.tcl:799 +msgid "" +"A shortcut to this configuration file has been created on your desktop. You " +"can use it to automatically launch this configuration." +msgstr "" +"Sulla scrivania è stato creato un collegamento a questo file di " +"configurazione. E' possibile usarlo per avviare automaticamente questa " +"configurazione." + +#: tcl/bin/pickconfig.tcl:805 +msgid "Create Desktop Shortcut" +msgstr "Crea Collegamento sulla Scrivania" + +#: tcl/bin/tkbackplot.tcl:110 +msgid "TkLinuxCNC BackPlot" +msgstr "TkLinuxCNC BackPlot" #: tcl/bin/tkbackplot.tcl:125 msgid "SETUP" msgstr "SETUP" -#: tcl/bin/tkbackplot.tcl:127 -msgid "RESET" -msgstr "RESET" +#: tcl/bin/tkbackplot.tcl:127 +msgid "RESET" +msgstr "RESET" + +#: tcl/bin/tkbackplot.tcl:129 +msgid "CANCEL" +msgstr "CANCELLA" + +#: tcl/bin/tkbackplot.tcl:250 +msgid "AXIS" +msgstr "ASSE" + +#: tcl/bin/tkbackplot.tcl:251 +msgid "OFFSET" +msgstr "OFFSET" + +#: tcl/bin/tkbackplot.tcl:252 +msgid "ANGLE" +msgstr "ANGOLO" + +#: tcl/bin/tkbackplot.tcl:253 +msgid "DIRECTION" +msgstr "DIREZIONE" + +#: tcl/bin/tkbackplot.tcl:270 +msgid "SIZE :" +msgstr "GRANDEZZA :" + +#: tcl/mini.tcl:490 +#, tcl-format +msgid "JOG %s +" +msgstr "JOG %s +" + +#: tcl/mini.tcl:491 +#, tcl-format +msgid "JOG %s -" +msgstr "JOG %s -" + +#: tcl/mini.tcl:492 +#, tcl-format +msgid "" +"%s\n" +"\n" +"Z\n" +"E\n" +"R\n" +"O" +msgstr "" +"%s\n" +"\n" +"Z\n" +"E\n" +"R\n" +"O" + +#: tcl/mini.tcl:840 +msgid "" +"TkMini \n" +"\n" +"Tcl/Tk GUI for Enhanced Machine Controller\n" +"\n" +"GPL Copyright 2003 \n" +"Ray Henry \n" +"\n" +" 3D backplotter by Paul Corner \n" +" \n" +"This software comes with ABSOLUTELY NO GUARANTEE! \n" +"For details see the copyright.html file in this directory." +msgstr "" +"TkMini \n" +"\n" +"Tcl/Tk GUI per Enhanced Machine Controller\n" +"\n" +"GPL Copyright 2003 \n" +"Ray Henry \n" +"\n" +" 3D backplotter di Paul Corner \n" +" \n" +"This software comes with ABSOLUTELY NO GUARANTEE! \n" +"For details see the copyright.html file in this directory." + +#: tcl/mini.tcl:915 +msgid "Program" +msgstr "Programma" + +#: tcl/mini.tcl:918 +msgid "Info" +msgstr "Info" + +#: tcl/mini.tcl:923 +msgid "Backplot" +msgstr "Disegna" + +#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:5915 +msgid "Editor" +msgstr "Editore" + +#: tcl/mini.tcl:927 +msgid "Offsets" +msgstr "Offsets" + +#: tcl/mini.tcl:929 +msgid "Tools" +msgstr "Utensili" + +#: tcl/mini.tcl:951 tcl/mini.tcl:3565 tcl/tklinuxcnc.tcl:732 +msgid "Reset" +msgstr "Reset" + +#: tcl/mini.tcl:960 +msgid "Position Type" +msgstr "Tipo Posizione" + +#: tcl/mini.tcl:962 +msgid "Tool Info" +msgstr "Informazione Utensile" + +#: tcl/mini.tcl:964 +msgid "Offset Info" +msgstr "Informazione Offset" + +#: tcl/mini.tcl:967 +msgid "Show Restart" +msgstr "Mostra Riavvio" + +#: tcl/mini.tcl:968 +msgid "Hide Restart" +msgstr "Nascondi Riavvio" + +#: tcl/mini.tcl:970 +msgid "Show Split Right" +msgstr "Mostra Divisione Destra" + +#: tcl/mini.tcl:972 +msgid "Show Mode Full" +msgstr "Mostra Modo Completo" + +#: tcl/mini.tcl:974 +msgid "Show Popin Full" +msgstr "Mostra Popin Completo" + +#: tcl/mini.tcl:978 +msgid "Actual Position" +msgstr "Posizione Attuale" + +#: tcl/mini.tcl:980 +msgid "Commanded Position" +msgstr "Posizione Comandata" + +#: tcl/mini.tcl:983 +msgid "Machine Position" +msgstr "Posizione Macchina" + +#: tcl/mini.tcl:985 +msgid "Relative Position" +msgstr "Posizione Relativa" + +#: tcl/mini.tcl:988 tcl/tklinuxcnc.tcl:747 +msgid "Calibration..." +msgstr "Calibrazione..." + +#: tcl/mini.tcl:990 +msgid "HAL Show..." +msgstr "Mostra Hal..." + +#: tcl/mini.tcl:992 +msgid "HAL Config..." +msgstr "Configura HAL..." + +#: tcl/mini.tcl:997 +msgid "Program File" +msgstr "File Programma" + +#: tcl/mini.tcl:998 +#, tcl-format +msgid "Program file is %s" +msgstr "Il file Programma è %s" + +#: tcl/mini.tcl:999 +msgid "Editor File" +msgstr "Editore File" + +#: tcl/mini.tcl:1000 +#, tcl-format +msgid "Editor file is %s" +msgstr "Editore File è %s" + +#: tcl/mini.tcl:1001 +msgid "Parameter File" +msgstr "File Parametro" + +#: tcl/mini.tcl:1002 +#, tcl-format +msgid "Parameter file is %s" +msgstr "File Parametro è %s" + +#: tcl/mini.tcl:1003 +msgid "Tool File" +msgstr "File Utensili" + +#: tcl/mini.tcl:1004 +#, tcl-format +msgid "Tool file is %s" +msgstr "File Utensili è %s" + +#: tcl/mini.tcl:1006 +msgid "Active G Codes" +msgstr "Codici G attivi" + +#: tcl/mini.tcl:1007 +#, tcl-format +msgid "" +"Active codes include; \n" +"%s" +msgstr "" +"Codici attivi inclusi; \n" +"%s" + +#: tcl/mini.tcl:1010 tcl/mini.tcl:2558 tcl/tklinuxcnc.tcl:791 +msgid "Help..." +msgstr "Aiuto..." + +#: tcl/mini.tcl:1027 tcl/tklinuxcnc.tcl:890 +msgid "ABORT" +msgstr "ABORTIRE" + +#: tcl/mini.tcl:1038 tcl/mini.tcl:2048 +msgid "CONTINUE" +msgstr "CONTINUARE" + +#: tcl/mini.tcl:1044 tcl/tklinuxcnc.tcl:828 tcl/tklinuxcnc.tcl:2248 +#: src/emc/usr_intf/touchy/touchy.glade:1264 +msgid "MDI" +msgstr "MDI" + +#: tcl/mini.tcl:1048 tcl/tklinuxcnc.tcl:2239 +msgid "AUTO" +msgstr "AUTO" + +#: tcl/mini.tcl:1052 tcl/mini.tcl:1812 tcl/tklinuxcnc.tcl:2141 +#: tcl/tklinuxcnc.tcl:2261 +msgid "MANUAL" +msgstr "MANUALE" + +#: tcl/mini.tcl:1106 +msgid "Tool #:" +msgstr "Utensile n.:" + +#: tcl/mini.tcl:1108 +msgid "Length :" +msgstr "Lunghezza:" + +#: tcl/mini.tcl:1119 +msgid "Work Offsets: " +msgstr "Offset di lavoro: " + +#: tcl/mini.tcl:1121 +msgid "start offsets popup here" +msgstr "avvio popup offset qui" + +#: tcl/mini.tcl:1165 +msgid "start override popup here" +msgstr "avvio popup superamento qui" + +#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1739 +msgid "Feed Override:" +msgstr "Incr. avanzamento:" + +#: tcl/mini.tcl:1180 +msgid "-- MESSAGES --" +msgstr "-- MESSAGGI --" + +#: tcl/mini.tcl:1230 +msgid "toggleView's not doin nothin yet" +msgstr "Qui non è attivo il cambioVista" + +#: tcl/mini.tcl:1282 +msgid "Can't set zero with a tool offset active so I issued G49 to cancel it." +msgstr "" +"Impossibile azzerare con un offset utensile attivo, quindi è stato attivato " +"G49 per cancellarlo." + +#: tcl/mini.tcl:1346 +#, tcl-format +msgid "Can't update the var file while machine is in auto and %s." +msgstr "" +"Impossibile aggiornare il file .var mentre la macchina è in auto e %s." + +#: tcl/mini.tcl:1400 tcl/tklinuxcnc.tcl:1227 +msgid "override limits" +msgstr "superamento limiti" + +#: tcl/mini.tcl:1405 tcl/tklinuxcnc.tcl:1263 +msgid "home" +msgstr "origine" + +#: tcl/mini.tcl:1426 +msgid "DEFAULT" +msgstr "DEFAULT" + +#: tcl/mini.tcl:1427 +msgid "Speed:" +msgstr "Velocità:" + +#: tcl/mini.tcl:1430 +msgid "RAPID" +msgstr "RAPIDO" + +#: tcl/mini.tcl:1447 tcl/tklinuxcnc.tcl:1391 +msgid "Set Jog Speed" +msgstr "Imposta Velocità jog" + +#: tcl/mini.tcl:1453 tcl/tklinuxcnc.tcl:1404 +msgid "Set jog speed:" +msgstr "Imposta velocità jog:" + +#: tcl/mini.tcl:1511 +msgid "JOG X +" +msgstr "JOG X +" + +#: tcl/mini.tcl:1512 +msgid "JOG X -" +msgstr "JOG X -" + +#: tcl/mini.tcl:1516 +msgid "increment" +msgstr "incremento" + +#: tcl/mini.tcl:1518 tcl/tklinuxcnc.tcl:602 tcl/tklinuxcnc.tcl:1249 +#: tcl/tklinuxcnc.tcl:1253 src/emc/usr_intf/gscreen/gscreen.glade:1574 +#: src/emc/usr_intf/gscreen/gscreen.glade:1586 +msgid "continuous" +msgstr "continuo" + +#: tcl/mini.tcl:1520 +msgid "" +"A\n" +"L\n" +"L\n" +"\n" +"Z\n" +"E\n" +"R\n" +"O" +msgstr "" +"A\n" +"L\n" +"L\n" +"\n" +"Z\n" +"E\n" +"R\n" +"O" + +#: tcl/mini.tcl:1588 src/emc/usr_intf/touchy/touchy.glade:1422 +msgid "Spindle Forward" +msgstr "Mandrino Avanti" + +#: tcl/mini.tcl:1589 src/emc/usr_intf/touchy/touchy.glade:1433 +msgid "Spindle Reverse" +msgstr "Mandrino Indietro" + +#: tcl/mini.tcl:1590 tcl/tklinuxcnc.tcl:871 +msgid "Spindle off" +msgstr "Mandrino off" + +#: tcl/mini.tcl:1592 src/emc/usr_intf/touchy/touchy.glade:1479 +msgid "Spindle Slower" +msgstr "Rallentamento Mandrino" + +#: tcl/mini.tcl:1596 src/emc/usr_intf/touchy/touchy.glade:1464 +msgid "Spindle Faster" +msgstr "Accelerazione Mandrino" + +#: tcl/mini.tcl:1632 tcl/tklinuxcnc.tcl:1620 +msgid "MDI:" +msgstr "MDI:" + +#: tcl/mini.tcl:1669 tcl/tklinuxcnc.tcl:1658 +#: src/emc/usr_intf/stepconf/main_page.glade:298 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2625 +msgid "Run" +msgstr "Avvio" + +#: tcl/mini.tcl:1671 tcl/tklinuxcnc.tcl:1659 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2638 +msgid "Pause" +msgstr "Pausa" + +#: tcl/mini.tcl:1673 tcl/tklinuxcnc.tcl:1660 +msgid "Resume" +msgstr "Riprende" + +#: tcl/mini.tcl:1675 tcl/tklinuxcnc.tcl:1661 +msgid "Step" +msgstr "Passo" + +#: tcl/mini.tcl:1677 tcl/tklinuxcnc.tcl:1662 +msgid "Verify" +msgstr "Verifica" + +#: tcl/mini.tcl:1698 +msgid "RESTART LINE" +msgstr "LINEA RIAVVIO" + +#: tcl/mini.tcl:1699 src/emc/usr_intf/stepconf/main_page.glade:531 +msgid "Back" +msgstr "Indietro" + +#: tcl/mini.tcl:1700 +msgid "Ahead" +msgstr "Avanti" + +#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1300 +#: src/emc/usr_intf/gscreen/gscreen.glade:3973 +msgid "Restart" +msgstr "Riavvio" + +#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 tcl/tklinuxcnc.tcl:465 +#: src/emc/usr_intf/axis/scripts/axis.py:2023 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:754 +msgid "All files" +msgstr "Tutti i file" + +#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 tcl/tklinuxcnc.tcl:466 +msgid "Text files" +msgstr "File testo" + +#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 tcl/tklinuxcnc.tcl:467 +msgid "NC files" +msgstr "File NC" + +#: tcl/mini.tcl:1753 +msgid "" +"The interpreter is running. \n" +" Pressing OK will abort and load the new program" +msgstr "" +"L' interprete è attivo. \n" +" Pressare OK per abortire e caricare il nuovo programma" + +#: tcl/mini.tcl:1886 +msgid "ESTOPPED" +msgstr "ESTOPPED" + +#: tcl/mini.tcl:1889 +msgid "ESTOP PUSH" +msgstr "ESTOP PUSH" + +#: tcl/mini.tcl:1892 tcl/tklinuxcnc.tcl:2233 +msgid "ESTOP RESET" +msgstr "ESTOP RESET" + +#: tcl/mini.tcl:1897 tcl/tklinuxcnc.tcl:2298 +msgid "SPINDLE FORWARD" +msgstr "MANDRINO AVANTI" + +#: tcl/mini.tcl:1899 tcl/tklinuxcnc.tcl:2300 +msgid "SPINDLE REVERSE" +msgstr "MANDRINO INDIETRO" + +#: tcl/mini.tcl:1901 tcl/tklinuxcnc.tcl:2302 +msgid "SPINDLE OFF" +msgstr "MANDRINO OFF" + +#: tcl/mini.tcl:1903 tcl/tklinuxcnc.tcl:2304 +msgid "SPINDLE INCREASE" +msgstr "ACCELERARE MANDRINO" + +#: tcl/mini.tcl:1905 tcl/tklinuxcnc.tcl:2306 +msgid "SPINDLE DECREASE" +msgstr "DECELERARE MANDRINO" + +#: tcl/mini.tcl:1907 tcl/tklinuxcnc.tcl:2308 +msgid "SPINDLE ?" +msgstr "MANDRINO ?" + +#: tcl/mini.tcl:1911 tcl/tklinuxcnc.tcl:2312 +msgid "BRAKE ON" +msgstr "FRENO ON" + +#: tcl/mini.tcl:1913 tcl/tklinuxcnc.tcl:2314 +msgid "BRAKE OFF" +msgstr "FRENO OFF" + +#: tcl/mini.tcl:1915 tcl/tklinuxcnc.tcl:2316 +msgid "BRAKE ?" +msgstr "FRENO ?" + +#: tcl/mini.tcl:1919 tcl/tklinuxcnc.tcl:2274 +msgid "MIST ON" +msgstr "ARIA ATTIVA" + +#: tcl/mini.tcl:1921 tcl/tklinuxcnc.tcl:2276 +msgid "MIST OFF" +msgstr "ARIA DISATTIVA" + +#: tcl/mini.tcl:1923 tcl/tklinuxcnc.tcl:2278 +msgid "MIST ?" +msgstr "ARIA ?" + +#: tcl/mini.tcl:1927 tcl/tklinuxcnc.tcl:2282 +msgid "FLOOD ON" +msgstr "REFRIGERANTE ON" + +#: tcl/mini.tcl:1929 tcl/tklinuxcnc.tcl:2284 +msgid "FLOOD OFF" +msgstr "REFRIGERANTE OFF" + +#: tcl/mini.tcl:1931 tcl/tklinuxcnc.tcl:2286 +msgid "FLOOD ?" +msgstr "REFRIGERANTE ?" + +#: tcl/mini.tcl:2052 +msgid "FEEDHOLD" +msgstr "AVANZAMENTO" + +#: tcl/mini.tcl:2124 +msgid "" +"TOOL SETUP \n" +" Click or tab to edit. Press enter to return to keyboard machine control." +msgstr "" +"SETUP UTENSILE \n" +" Cliccare o tab per editare. Pressa invio per ritornare al controllo " +"macchina da tastiera." + +#: tcl/mini.tcl:2130 +msgid " TOOL NUMBER " +msgstr " NUMERO UTENSILE " + +#: tcl/mini.tcl:2131 +msgid " LENGTH " +msgstr " LUNGHEZZA " + +#: tcl/mini.tcl:2132 +msgid " DIAMETER " +msgstr " DIAMETRO " + +#: tcl/mini.tcl:2133 +msgid " COMMENT " +msgstr " COMMENTO " + +#: tcl/mini.tcl:2188 +msgid "Add Extra Tool" +msgstr "Aggiungere Utensile Extra" + +#: tcl/mini.tcl:2189 +msgid "Remove Last Tool" +msgstr "Rimuove Ultimo Utensile" + +#: tcl/mini.tcl:2217 tcl/mini.tcl:2253 +#, tcl-format +msgid "Can't update the tool file while machine is in auto and %s." +msgstr "" +"Impossibile aggiornare il file utensili mentre la macchina è in auto e %s." + +#: tcl/mini.tcl:2229 +msgid "This is not a good number." +msgstr "Questo non è un buon numero." + +#: tcl/mini.tcl:2293 +msgid "" +"COORDINATE SYSTEM SETUP \n" +"\n" +" Click value to edit with keyboard. Press enter to return to keyboard " +"control of machine. \n" +" " +msgstr "" +"IMPOSTA SISTEMA COORDINATE \n" +"\n" +" Clicca il valore da modificare con la tastiera. Pressa invio per tornare " +"al controllo macchina da tastiera. \n" +" " + +#: tcl/mini.tcl:2320 tcl/scripts/Set_Coordinates.tcl:80 +msgid "Axis " +msgstr "Asse " + +#: tcl/mini.tcl:2321 +msgid "Value " +msgstr "Valore " + +#: tcl/mini.tcl:2326 tcl/scripts/Set_Coordinates.tcl:91 +msgid "Teach" +msgstr "Apprendi" + +#: tcl/mini.tcl:2334 +msgid "Write And Load File " +msgstr "Scrive e Carica File " + +#: tcl/mini.tcl:2336 +msgid "Offset By Radius" +msgstr "Offset del Raggio" + +#: tcl/mini.tcl:2337 +msgid "Offset By Length" +msgstr "Offset in Lunghezza" + +#: tcl/mini.tcl:2342 +msgid "Subtract" +msgstr "Sottrai" + +#: tcl/mini.tcl:2344 src/emc/usr_intf/gmoccapy/gmoccapy.glade:6712 +msgid "Add" +msgstr "Aggiungi" + +#: tcl/mini.tcl:2366 +msgid "Zero All G54" +msgstr "Zero Tutti G54" + +#: tcl/mini.tcl:2367 +msgid "Zero All G55" +msgstr "Zero Tutti G55" + +#: tcl/mini.tcl:2368 +msgid "Zero All G56" +msgstr "Zero Tutti G56" + +#: tcl/mini.tcl:2369 +msgid "Zero All G57" +msgstr "Zero Tutti G57" + +#: tcl/mini.tcl:2370 +msgid "Zero All G58" +msgstr "Zero Tutti G58" + +#: tcl/mini.tcl:2371 +msgid "Zero All G59" +msgstr "Zero Tutti G59" + +#: tcl/mini.tcl:2372 +msgid "Zero All G59.1" +msgstr "Zero Tutti G59.1" + +#: tcl/mini.tcl:2373 +msgid "Zero All G59.2" +msgstr "Zero Tutti G59.2" + +#: tcl/mini.tcl:2374 +msgid "Zero All G59.3" +msgstr "Zero Tutti G59.3" + +#: tcl/mini.tcl:2375 +msgid "Zero All ????" +msgstr "Zero Tutti ????" + +#: tcl/mini.tcl:2493 +msgid "Modified..." +msgstr "Modificato..." + +#: tcl/mini.tcl:2538 +msgid "Save and Load" +msgstr "Salva e Carica" + +#: tcl/mini.tcl:2540 src/emc/usr_intf/gscreen/gscreen.glade:3515 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2363 +msgid "Undo" +msgstr "Annulla" + +#: tcl/mini.tcl:2541 src/emc/usr_intf/gscreen/gscreen.glade:3526 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2411 +msgid "Redo" +msgstr "Riesegui" + +#: tcl/mini.tcl:2546 tcl/tooledit.tcl:488 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6695 +msgid "Delete" +msgstr "Cancella" + +#: tcl/mini.tcl:2551 +msgid "Replace..." +msgstr "Sostituisci..." + +#: tcl/mini.tcl:2664 +msgid "Next Number: " +msgstr "Numero Successivo:" + +#: tcl/mini.tcl:2765 +msgid "Basic Help" +msgstr "Aiuto Base" + +#: tcl/mini.tcl:2765 +msgid "" +"This is a simple ASCII editor like many others.\n" +"\n" +"Ctrl+O Open\n" +"Ctrl+S Save\n" +"Ctrl+Z Undo\n" +"Ctrl+Y Redo\n" +"Ctrl+X Cut\n" +"Ctrl+C Copy\n" +"Ctrl+V Paste\n" +"Del Delete\n" +"Ctrl+A Select All\n" +"\n" +"Ctrl+F Find\n" +"Ctrl+R Replace " +msgstr "" +"Questo è un semplice editore come molti altri\n" +"\n" +"Ctrl+O Apri\n" +"Ctrl+S Salva\n" +"Ctrl+Z Cancella\n" +"Ctrl+Y Riesegui\n" +"Ctrl+X Taglia\n" +"Ctrl+C Copia\n" +"Ctrl+V Incolla\n" +"Canc Cancella\n" +"Ctrl+A Seleziona Tutto\n" +"\n" +"Ctrl+F Trova\n" +"Ctrl+R Sostituisci " + +#: tcl/mini.tcl:2785 +msgid "" +"tknotepad by Joseph Acosta. \n" +"\n" +" Modified for EMC by: Paul Corner " +msgstr "" +"tknotepad di Joseph Acosta. \n" +"\n" +" Modificato per EMC da: Paul Corner " + +#: tcl/mini.tcl:2793 +msgid "" +"The contents of this file may have changed, do you wish to to save your " +"changes?" +msgstr "" +"Il contenuto di questo file può essere stato cambiato, vuoi salvare i tuoi " +"cambiamenti?" + +#: tcl/mini.tcl:2794 +msgid "New Confirm?" +msgstr "Nuova Conferma?" + +#: tcl/mini.tcl:2928 +msgid "Print Setup" +msgstr "Setup Stampa:" + +#: tcl/mini.tcl:2932 +msgid "Print Command: " +msgstr "Comando Stampa:" + +#: tcl/mini.tcl:3095 +msgid "Find what:" +msgstr "Trova questo:" + +#: tcl/mini.tcl:3101 +msgid "Replace with:" +msgstr "Sostituisci con:" + +#: tcl/mini.tcl:3109 +msgid "Find Next" +msgstr "Trova Successivo" + +#: tcl/mini.tcl:3112 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2494 +msgid "Replace" +msgstr "Sostituisci" + +#: tcl/mini.tcl:3120 src/emc/usr_intf/gscreen/gscreen.py:2750 +#: src/emc/usr_intf/gmoccapy/dialogs.py:171 +msgid "Up" +msgstr "Su" + +#: tcl/mini.tcl:3121 src/emc/usr_intf/gscreen/gscreen.py:2754 +#: src/emc/usr_intf/gmoccapy/dialogs.py:175 +msgid "Down" +msgstr "Giù" + +#: tcl/mini.tcl:3124 +msgid "Match case" +msgstr "Maiuscolo/minuscolo" + +#: tcl/mini.tcl:3569 +msgid "rot-x" +msgstr "rot x" + +#: tcl/mini.tcl:3579 +msgid "rot-y" +msgstr "rot y" + +#: tcl/mini.tcl:3589 +msgid "rot-z" +msgstr "rot z" + +#: tcl/mini.tcl:3599 +msgid "zoom" +msgstr "zoom" + +#: tcl/mini.tcl:3655 +msgid "TEST" +msgstr "TEST" + +#: tcl/mini.tcl:3699 +msgid "Hide Setup" +msgstr "Nascondi Setup" + +#: tcl/mini.tcl:3703 +msgid "Show Setup" +msgstr "Mostra Setup" + +#: tcl/show_errors.tcl:41 +msgid "LinuxCNC Errors" +msgstr "Errori LinuxCNC" + +#: tcl/show_errors.tcl:44 +msgid "" +"LinuxCNC terminated with an error. When reporting problems, please include " +"all the information below in your message." +msgstr "" +"LinuxCNC termina con un errore. Quando segnali il problema, si prega di " +"includere tutte le informazioni sottostanti nel tuo messaggio." + +#: tcl/show_errors.tcl:74 tcl/scripts/Set_Coordinates.tcl:103 +msgid "Close" +msgstr "Chiudi" + +#: tcl/tklinuxcnc.tcl:154 tcl/tklinuxcnc.tcl:181 +msgid "Set Run Mark" +msgstr "Imposta punto avvio" + +#: tcl/tklinuxcnc.tcl:156 +#, tcl-format +msgid "Set run mark at line %s?" +msgstr "Imposta punto avvio alla linea %s?" + +#: tcl/tklinuxcnc.tcl:176 tcl/tklinuxcnc.tcl:204 +msgid "untitled" +msgstr "anonimo" + +#: tcl/tklinuxcnc.tcl:212 +msgid "Load Parameter File" +msgstr "Carica File Parametri" + +#: tcl/tklinuxcnc.tcl:261 +msgid "LinuxCNC Diagnostics" +msgstr "Diagnostica LinuxCNC" + +#: tcl/tklinuxcnc.tcl:263 +msgid "Task" +msgstr "Task" + +#: tcl/tklinuxcnc.tcl:265 tcl/tklinuxcnc.tcl:288 tcl/tklinuxcnc.tcl:311 +msgid "Heartbeat:" +msgstr "Frequenza:" + +#: tcl/tklinuxcnc.tcl:268 tcl/tklinuxcnc.tcl:291 tcl/tklinuxcnc.tcl:314 +msgid "Command:" +msgstr "Comando:" + +#: tcl/tklinuxcnc.tcl:271 tcl/tklinuxcnc.tcl:294 tcl/tklinuxcnc.tcl:317 +msgid "Command #:" +msgstr "Comando #:" + +#: tcl/tklinuxcnc.tcl:274 tcl/tklinuxcnc.tcl:297 tcl/tklinuxcnc.tcl:320 +msgid "Status:" +msgstr "Stato:" + +#: tcl/tklinuxcnc.tcl:286 +msgid "Io" +msgstr "Io" + +#: tcl/tklinuxcnc.tcl:309 +msgid "Motion" +msgstr "Movimento" + +#: tcl/tklinuxcnc.tcl:350 +msgid "About TkLinuxCNC" +msgstr "Informazioni su TkLinuxCNC" + +#: tcl/tklinuxcnc.tcl:351 +msgid "" +"TkLinuxcnc\n" +"\n" +"Tcl/Tk GUI for LinuxCNC\n" +"\n" +"GPL Version 2 (2012)" +msgstr "" +"TkLinuxCNC\n" +"\n" +"Interfaccia grafica Tcl/Tk per LinuxCNC (n\n" +"GPL Version 2 (2012)/n Traduzione italiana E. Lo Valvo" + +#: tcl/tklinuxcnc.tcl:399 +msgid "Set Tool Offset" +msgstr "Imposta Offset Utensili" + +#: tcl/tklinuxcnc.tcl:404 tcl/tklinuxcnc.tcl:905 +msgid "Tool:" +msgstr "Utensile:" + +#: tcl/tklinuxcnc.tcl:722 +msgid "Edit..." +msgstr "Modifica..." + +#: tcl/tklinuxcnc.tcl:727 +msgid "Tool Table Editor..." +msgstr "Editore Tabella Utensili..." + +#: tcl/tklinuxcnc.tcl:730 src/emc/usr_intf/touchy/touchy.glade:1383 +msgid "Reload Tool Table" +msgstr "Ricarica Tabella Utensile" + +#: tcl/tklinuxcnc.tcl:740 +msgid "Offsets and Variables..." +msgstr "Offset e variabili..." + +#: tcl/tklinuxcnc.tcl:741 +msgid "Diagnostics..." +msgstr "Diagnostica..." + +#: tcl/tklinuxcnc.tcl:742 +msgid "Backplot..." +msgstr "Disegna..." + +#: tcl/tklinuxcnc.tcl:748 +msgid "Testing..." +msgstr "Testing..." + +#: tcl/tklinuxcnc.tcl:749 +msgid "Debug..." +msgstr "Debug..." + +#: tcl/tklinuxcnc.tcl:750 +msgid "Font..." +msgstr "Font..." + +#: tcl/tklinuxcnc.tcl:754 src/emc/usr_intf/axis/scripts/image-to-gcode.py:665 +msgid "Units" +msgstr "Unità" + +#: tcl/tklinuxcnc.tcl:755 +msgid "auto" +msgstr "auto" + +#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8873 +msgid "inches" +msgstr "pollici" + +#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1609 +#: src/emc/usr_intf/axis/scripts/axis.py:1855 +#: src/emc/usr_intf/axis/scripts/axis.py:2386 +#: src/emc/usr_intf/touchy/touchy.glade:3301 +#: src/emc/usr_intf/stepconf/stepconf.py:1314 +#: src/emc/usr_intf/stepconf/pages.py:625 +#: src/emc/usr_intf/stepconf/main_page.glade:251 +#: src/emc/usr_intf/pncconf/pncconf.py:8869 +#: src/emc/usr_intf/pncconf/pncconf.glade:2195 +#: src/emc/usr_intf/pncconf/pncconf.glade:2362 +#: src/emc/usr_intf/pncconf/pncconf.glade:64552 +#: src/emc/usr_intf/pncconf/pncconf.glade:64621 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm" +msgstr "mm" + +#: tcl/tklinuxcnc.tcl:758 +msgid "cm" +msgstr "cm" + +#: tcl/tklinuxcnc.tcl:762 +msgid "Utilities" +msgstr "Utilità" + +#: tcl/tklinuxcnc.tcl:763 +msgid "Hal Scope" +msgstr "Hal Scope" + +#: tcl/tklinuxcnc.tcl:785 +msgid "HAL Show" +msgstr "Mostra HAL" + +#: tcl/tklinuxcnc.tcl:786 +msgid "HAL Config" +msgstr "Configurazione HAL" + +#: tcl/tklinuxcnc.tcl:792 +msgid "Balloon help" +msgstr "Finestra Aiuto" + +#: tcl/tklinuxcnc.tcl:815 +msgid "Estop on" +msgstr "Estop on" + +#: tcl/tklinuxcnc.tcl:816 +msgid "Estop off" +msgstr "Estop off" + +#: tcl/tklinuxcnc.tcl:818 +msgid "Machine on" +msgstr "Macchina on" + +#: tcl/tklinuxcnc.tcl:819 src/emc/usr_intf/gscreen/gscreen.glade:2452 +msgid "Machine off" +msgstr "Macchina off" + +#: tcl/tklinuxcnc.tcl:826 src/emc/usr_intf/touchy/touchy.glade:1561 +msgid "Manual" +msgstr "Manuale" + +#: tcl/tklinuxcnc.tcl:835 +msgid "Mist on" +msgstr "Aria on" + +#: tcl/tklinuxcnc.tcl:836 +msgid "Mist off" +msgstr "Aria off" + +#: tcl/tklinuxcnc.tcl:843 +msgid "Flood on" +msgstr "Refrigerante on" + +#: tcl/tklinuxcnc.tcl:844 +msgid "Flood off" +msgstr "Refrigerante off" + +#: tcl/tklinuxcnc.tcl:851 +msgid "Lube on" +msgstr "Lubrificante on" + +#: tcl/tklinuxcnc.tcl:852 +msgid "Lube off" +msgstr "Lubrificante off" + +#: tcl/tklinuxcnc.tcl:869 +msgid "Spindle forward" +msgstr "Mandrino avanti" + +#: tcl/tklinuxcnc.tcl:870 +msgid "Spindle reverse" +msgstr "Mandrino indietro" + +#: tcl/tklinuxcnc.tcl:885 +msgid "Brake on" +msgstr "Freno on" + +#: tcl/tklinuxcnc.tcl:886 +msgid "Brake off" +msgstr "Freno off" + +#: tcl/tklinuxcnc.tcl:907 +msgid "Offset:" +msgstr "Offset:" + +#: tcl/tklinuxcnc.tcl:913 +msgid "Work Offsets:" +msgstr "Offset di lavoro:" + +#: tcl/tklinuxcnc.tcl:1233 +msgid "relative" +msgstr "relativo" + +#: tcl/tklinuxcnc.tcl:1234 +msgid "machine" +msgstr "macchina" + +#: tcl/tklinuxcnc.tcl:1236 +msgid "actual" +msgstr "attuale" + +#: tcl/tklinuxcnc.tcl:1237 +msgid "commanded" +msgstr "comandato" + +#: tcl/tklinuxcnc.tcl:1239 +msgid "joint" +msgstr "articolazione" + +#: tcl/tklinuxcnc.tcl:1240 +msgid "world" +msgstr "globale" + +#: tcl/tklinuxcnc.tcl:1333 +msgid "Axis Offset" +msgstr "Offset asse" + +#: tcl/tklinuxcnc.tcl:1335 +msgid "Set axis value:" +msgstr "Imposta valore asse:" + +#: tcl/tklinuxcnc.tcl:1429 +msgid "Set Feed Override" +msgstr "Imposta Incr. Avanzamento" + +#: tcl/tklinuxcnc.tcl:1435 +msgid "Set feed override:" +msgstr "Imposta incr. avanzamento:" + +#: tcl/tklinuxcnc.tcl:1460 +msgid "Set Spindle Override" +msgstr "Imposta Incr. Mandrino" + +#: tcl/tklinuxcnc.tcl:1466 +msgid "Set spindle speed override:" +msgstr "Imposta superamento velocità mandrino:" + +#: tcl/tklinuxcnc.tcl:1521 +msgid "Linear Jog Speed" +msgstr "Velocità lineare jog" + +#: tcl/tklinuxcnc.tcl:1552 +msgid "Angular Jog Speed (deg)/min:" +msgstr "Velocità Angolare Jog (gradi)/min" + +#: tcl/tklinuxcnc.tcl:1596 +msgid "Spindle speed Override:" +msgstr "Superamento velocità Mandrino:" + +#: tcl/tklinuxcnc.tcl:1642 +msgid "Program: " +msgstr "Programma: " + +#: tcl/tklinuxcnc.tcl:1647 +msgid " - Status: " +msgstr " - Stato: " + +#: tcl/tklinuxcnc.tcl:1663 +msgid "Optional Stop" +msgstr "Stop Opzionale" + +#: tcl/tklinuxcnc.tcl:2010 +msgid "Error" +msgstr "Errore" + +#: tcl/tklinuxcnc.tcl:2070 tcl/ngcgui_ttt.tcl:46 +msgid "Set Font" +msgstr "Imposta font" + +#: tcl/tklinuxcnc.tcl:2079 tcl/ngcgui_ttt.tcl:283 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4827 +msgid "Font" +msgstr "Font" + +#: tcl/tklinuxcnc.tcl:2086 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3257 +msgid "Size" +msgstr "Dimensione" + +#: tcl/tklinuxcnc.tcl:2093 +msgid "Style" +msgstr "Stile" + +#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:2031 +msgid "ESTOP" +msgstr "ESTOP" -#: tcl/bin/tkbackplot.tcl:129 -msgid "CANCEL" -msgstr "CANCELLA" +#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2979 share/axis/tcl/axis.tcl:2033 +msgid "ON" +msgstr "ON" -#: tcl/bin/tkbackplot.tcl:250 -msgid "AXIS" -msgstr "ASSE" +#: tcl/tklinuxcnc.tcl:2290 +msgid "LUBE ON" +msgstr "LUBRIFICANTE ON" -#: tcl/bin/tkbackplot.tcl:251 -msgid "OFFSET" -msgstr "OFFSET" +#: tcl/tklinuxcnc.tcl:2292 +msgid "LUBE OFF" +msgstr "LUBRIFICANTE OFF" -#: tcl/bin/tkbackplot.tcl:252 -msgid "ANGLE" -msgstr "ANGOLO" +#: tcl/tklinuxcnc.tcl:2294 +msgid "LUBE ?" +msgstr "LUBRIFICANTE ?" -#: tcl/bin/tkbackplot.tcl:253 -msgid "DIRECTION" -msgstr "DIREZIONE" +#: tcl/scripts/Set_Coordinates.tcl:23 +msgid "LinuxCNC Set Coordinate" +msgstr "Imposta Coordinate LinuxCNC" -#: tcl/bin/tkbackplot.tcl:270 -msgid "SIZE :" -msgstr "GRANDEZZA :" +#: tcl/scripts/Set_Coordinates.tcl:26 +msgid "Coordinate System Control Window" +msgstr "Finestra Controllo Sistema Coordinate" -#: tcl/mini.tcl:490 -#, tcl-format -msgid "JOG %s +" -msgstr "JOG %s +" +#: tcl/scripts/Set_Coordinates.tcl:81 +msgid "Var # " +msgstr "Var # " -#: tcl/mini.tcl:491 -#, tcl-format -msgid "JOG %s -" -msgstr "JOG %s -" +#: tcl/scripts/Set_Coordinates.tcl:82 +msgid "Offset Value " +msgstr "Valore Offset:" -#: tcl/mini.tcl:492 -#, tcl-format +#: tcl/scripts/Set_Coordinates.tcl:83 +msgid "What to Teach" +msgstr "What to Teach" + +#: tcl/scripts/Set_Coordinates.tcl:101 +msgid "Set Old" +msgstr "Imposta Precedente" + +#: tcl/scripts/Set_Coordinates.tcl:102 +msgid "Set Zero" +msgstr "Imposta Zero" + +#: tcl/scripts/Set_Coordinates.tcl:104 +msgid "Write" +msgstr "Scrivi" + +#: tcl/ngcgui.tcl:439 tcl/ngcgui.tcl:846 +msgid "Need non-null file name" +msgstr "Necessario nome file non nullo" + +#: tcl/ngcgui.tcl:483 +msgid "Disallowed use of ngcgui generated file as Subfile" +msgstr "Disabilitato uso di file ngcgui generato come Subfile" + +#: tcl/ngcgui.tcl:489 msgid "" -"%s\n" -"\n" -"Z\n" -"E\n" -"R\n" -"O" +"marked (not_a_subfile)\n" +"Not intended for use as a subfile" msgstr "" -"%s\n" -"\n" -"Z\n" -"E\n" -"R\n" -"O" +"marcato (non_un_subfile)\n" +"Non inteso per uso come subfile" -#: tcl/mini.tcl:840 -msgid "" -"TkMini \n" -"\n" -"Tcl/Tk GUI for Enhanced Machine Controller\n" -"\n" -"GPL Copyright 2003 \n" -"Ray Henry \n" -"\n" -" 3D backplotter by Paul Corner \n" -" \n" -"This software comes with ABSOLUTELY NO GUARANTEE! \n" -"For details see the copyright.html file in this directory." +#: tcl/ngcgui.tcl:503 tcl/ngcgui.tcl:522 tcl/ngcgui.tcl:544 tcl/ngcgui.tcl:557 +#: tcl/ngcgui.tcl:577 tcl/ngcgui.tcl:682 +msgid "bogus" +msgstr "finto" + +#: tcl/ngcgui.tcl:505 +msgid "can not include subroutines within ngcgui subfile" msgstr "" -"TkMini \n" -"\n" -"Tcl/Tk GUI per Enhanced Machine Controller\n" -"\n" -"GPL Copyright 2003 \n" -"Ray Henry \n" -"\n" -" 3D backplotter di Paul Corner \n" -" \n" -"This software comes with ABSOLUTELY NO GUARANTEE! \n" -"For details see the copyright.html file in this directory." -#: tcl/mini.tcl:915 -msgid "Program" -msgstr "Programma" +#: tcl/ngcgui.tcl:513 +msgid "Multiple subroutines in file not allowed" +msgstr "Subroutine multiple nel file non consentite" -#: tcl/mini.tcl:918 -msgid "Info" -msgstr "Info" +#: tcl/ngcgui.tcl:524 +msgid "sub label" +msgstr "sub etichetta" -#: tcl/mini.tcl:923 -msgid "Backplot" -msgstr "Disegna" +#: tcl/ngcgui.tcl:524 tcl/ngcgui.tcl:579 +msgid "does not match subroutine file name" +msgstr "non coincide con il nome file subroutine" -#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:6125 -msgid "Editor" -msgstr "Editore" +#: tcl/ngcgui.tcl:539 tcl/ngcgui.tcl:540 +msgid "ignoring M2 after endsub" +msgstr "M2 ignorato dopo endsub" -#: tcl/mini.tcl:927 -msgid "Offsets" -msgstr "Offsets" +#: tcl/ngcgui.tcl:545 +msgid "file contains lines after subend" +msgstr "Il file contiene line dopo endsub" -#: tcl/mini.tcl:929 -msgid "Tools" -msgstr "Utensili" +#: tcl/ngcgui.tcl:558 +msgid "file contains lines before sub" +msgstr "file contiene linee prima di sub" -#: tcl/mini.tcl:951 tcl/mini.tcl:3565 tcl/tklinuxcnc.tcl:732 -msgid "Reset" -msgstr "Reset" +#: tcl/ngcgui.tcl:579 +msgid "endsub label" +msgstr "etichetta endsub" -#: tcl/mini.tcl:960 -msgid "Position Type" -msgstr "Tipo Posizione" +#: tcl/ngcgui.tcl:684 +msgid "out of sequence positional parameter" +msgstr "parametro posizionale fuori sequenza" -#: tcl/mini.tcl:962 -msgid "Tool Info" -msgstr "Informazione Utensile" +#: tcl/ngcgui.tcl:684 +msgid "expected" +msgstr "atteso" -#: tcl/mini.tcl:964 -msgid "Offset Info" -msgstr "Informazione Offset" +#: tcl/ngcgui.tcl:735 +msgid "no sub found in file" +msgstr "Nessun sub presente nel file" -#: tcl/mini.tcl:967 -msgid "Show Restart" -msgstr "Mostra Riavvio" +#: tcl/ngcgui.tcl:738 +msgid "no endsub found in file" +msgstr "Nessun endsub presente nel file" -#: tcl/mini.tcl:968 -msgid "Hide Restart" -msgstr "Nascondi Riavvio" +#: tcl/ngcgui.tcl:801 +msgid "Cannot find gcmc executable" +msgstr "" -#: tcl/mini.tcl:970 -msgid "Show Split Right" -msgstr "Mostra Divisione Destra" +#: tcl/ngcgui.tcl:802 +#, fuzzy +msgid "Please Install in path" +msgstr "Prego installare Img" -#: tcl/mini.tcl:972 -msgid "Show Mode Full" -msgstr "Mostra Modo Completo" +#: tcl/ngcgui.tcl:810 +msgid "not embedded, deriving outdir from:" +msgstr "" -#: tcl/mini.tcl:974 -msgid "Show Popin Full" -msgstr "Mostra Popin Completo" +#: tcl/ngcgui.tcl:1038 +msgid "Choose Files" +msgstr "Scegli files" -#: tcl/mini.tcl:978 -msgid "Actual Position" -msgstr "Posizione Attuale" +#: tcl/ngcgui.tcl:1178 +msgid "Controls" +msgstr "Controlli" -#: tcl/mini.tcl:980 -msgid "Commanded Position" -msgstr "Posizione Comandata" +#: tcl/ngcgui.tcl:1187 +msgid "Preamble" +msgstr "Preambolo" -#: tcl/mini.tcl:983 -msgid "Machine Position" -msgstr "Posizione Macchina" +#: tcl/ngcgui.tcl:1200 +msgid "Subfile" +msgstr "Subfile" + +#: tcl/ngcgui.tcl:1212 +msgid "Postamble" +msgstr "Postambolo" + +#: tcl/ngcgui.tcl:1229 +msgid "Retain values on Subfile read" +msgstr "Mantiene valori su lettura Subfile" + +#: tcl/ngcgui.tcl:1237 +msgid "Expand subroutine" +msgstr "Espandi subroutine" + +#: tcl/ngcgui.tcl:1247 tcl/ngcgui.tcl:2571 +msgid "Autosend" +msgstr "Autosend" + +#: tcl/ngcgui.tcl:1257 +msgid "Verbose ngcfile" +msgstr "Verbose ngcfile" + +#: tcl/ngcgui.tcl:1267 tcl/ngcgui.tcl:2393 tcl/ngcgui.tcl:2416 +#: tcl/ngcgui.tcl:2446 +msgid "Create Feature" +msgstr "Crea Feature" + +#: tcl/ngcgui.tcl:1273 tcl/ngcgui.tcl:3058 +msgid "MakeFile" +msgstr "MakeFile" + +#: tcl/ngcgui.tcl:1274 tcl/ngcgui.tcl:3055 +msgid "Finalize" +msgstr "Finalizza" + +#: tcl/ngcgui.tcl:1291 +msgid "Reread" +msgstr "Riletto" + +#: tcl/ngcgui.tcl:1310 +msgid "SendFileToAxis" +msgstr "MandaFileAdAXis" + +#: tcl/ngcgui.tcl:1353 +msgid "Unrecoverable problem" +msgstr "Problema irrecuperabile" + +#: tcl/ngcgui.tcl:1431 +msgid "Postamble file" +msgstr "File postambolo" + +#: tcl/ngcgui.tcl:1481 +msgid "Subroutine file" +msgstr "File Subroutine" + +#: tcl/ngcgui.tcl:1545 +msgid "Positional Parameters" +msgstr "Parametri Posizionali" + +#: tcl/ngcgui.tcl:1694 +msgid "No Subfile specified" +msgstr "Nessun Subfile specificato" + +#: tcl/ngcgui.tcl:1696 +msgid "No parameters yet" +msgstr "Nessun parametro fornito" -#: tcl/mini.tcl:985 -msgid "Relative Position" -msgstr "Posizione Relativa" +#: tcl/ngcgui.tcl:1705 +msgid "Missing value for parm" +msgstr "Valori mancanti per parametri" -#: tcl/mini.tcl:988 tcl/tklinuxcnc.tcl:747 -msgid "Calibration..." -msgstr "Calibrazione..." +#: tcl/ngcgui.tcl:1726 +msgid "Output file" +msgstr "Output file" -#: tcl/mini.tcl:990 -msgid "HAL Show..." -msgstr "Mostra Hal..." +#: tcl/ngcgui.tcl:1841 +msgid "Multiple Tabs with Features" +msgstr "Tabs Multipli con Features" -#: tcl/mini.tcl:992 -msgid "HAL Config..." -msgstr "Configura HAL..." +#: tcl/ngcgui.tcl:1842 +msgid "Finalize all Tabs?" +msgstr "Finalizzare tutti i Tabs?" -#: tcl/mini.tcl:997 -msgid "Program File" -msgstr "File Programma" +#: tcl/ngcgui.tcl:1842 +msgid "Order" +msgstr "Ordine" -#: tcl/mini.tcl:998 -#, tcl-format -msgid "Program file is %s" -msgstr "Il file Programma è %s" +#: tcl/ngcgui.tcl:1844 +msgid "No, just this page" +msgstr "No, solo questa pagina" -#: tcl/mini.tcl:999 -msgid "Editor File" -msgstr "Editore File" +#: tcl/ngcgui.tcl:1858 +msgid "Axis is not responding" +msgstr "Axis non risponde" -#: tcl/mini.tcl:1000 -#, tcl-format -msgid "Editor file is %s" -msgstr "Editore File è %s" +#: tcl/ngcgui.tcl:1859 +msgid "Error: " +msgstr "Errore:" -#: tcl/mini.tcl:1001 -msgid "Parameter File" -msgstr "File Parametro" +#: tcl/ngcgui.tcl:1861 +msgid "Autosend disabled, Ctrl-A toggles autosend" +msgstr "Autosend disabilitato, Ctrl-A scambia autosend" -#: tcl/mini.tcl:1002 -#, tcl-format -msgid "Parameter file is %s" -msgstr "File Parametro è %s" +#: tcl/ngcgui.tcl:1863 +msgid "File saving enabled -- Finalize to save" +msgstr "Salvataggio file abilitato -- Finalizzare per salvare" -#: tcl/mini.tcl:1003 -msgid "Tool File" -msgstr "File Utensili" +#: tcl/ngcgui.tcl:1879 +msgid "Require .ngc suffix for filename" +msgstr "Richiesto suffisso .ngc per il nome del file" -#: tcl/mini.tcl:1004 -#, tcl-format -msgid "Tool file is %s" -msgstr "File Utensili è %s" +#: tcl/ngcgui.tcl:1889 +msgid "Disallowed overwrite of" +msgstr "Disabilitata sovrascrittura di" -#: tcl/mini.tcl:1006 -msgid "Active G Codes" -msgstr "Codici G attivi" +#: tcl/ngcgui.tcl:1913 +msgid "FEATURE" +msgstr "FEATURE" -#: tcl/mini.tcl:1007 -#, tcl-format -msgid "" -"Active codes include; \n" -"%s" -msgstr "" -"Codici attivi inclusi; \n" -"%s" +#: tcl/ngcgui.tcl:1920 +msgid "feature line added" +msgstr "feature line aggiunta" -#: tcl/mini.tcl:1010 tcl/mini.tcl:2558 tcl/tklinuxcnc.tcl:791 -msgid "Help..." -msgstr "Aiuto..." +#: tcl/ngcgui.tcl:1932 +msgid "line added" +msgstr "aggiunta linea" -#: tcl/mini.tcl:1027 tcl/tklinuxcnc.tcl:890 -msgid "ABORT" -msgstr "ABORTIRE" +#: tcl/ngcgui.tcl:1932 +msgid "activated" +msgstr "attivato" -#: tcl/mini.tcl:1038 tcl/mini.tcl:2048 -msgid "CONTINUE" -msgstr "CONTINUARE" +#: tcl/ngcgui.tcl:1934 +msgid "restores" +msgstr "richiamato" -#: tcl/mini.tcl:1044 tcl/tklinuxcnc.tcl:828 tcl/tklinuxcnc.tcl:2248 -#: src/emc/usr_intf/touchy/touchy.glade:1264 -msgid "MDI" -msgstr "MDI" +#: tcl/ngcgui.tcl:1973 +msgid "NOTREACHED mode" +msgstr "modo NOTREACHED " -#: tcl/mini.tcl:1048 tcl/tklinuxcnc.tcl:2239 -msgid "AUTO" -msgstr "AUTO" +#: tcl/ngcgui.tcl:1989 +msgid "Positional parameters for" +msgstr "Parametro posizionale per" -#: tcl/mini.tcl:1052 tcl/mini.tcl:1812 tcl/tklinuxcnc.tcl:2141 -#: tcl/tklinuxcnc.tcl:2261 -msgid "MANUAL" -msgstr "MANUALE" +#: tcl/ngcgui.tcl:1997 +msgid "expanded file" +msgstr "File espanso" -#: tcl/mini.tcl:1106 -msgid "Tool #:" -msgstr "Utensile n.:" +#: tcl/ngcgui.tcl:2011 +msgid "call subroutine file" +msgstr "chima file subroutine" -#: tcl/mini.tcl:1108 -msgid "Length :" -msgstr "Lunghezza:" +#: tcl/ngcgui.tcl:2394 +msgid "Enter parms for 1st feature" +msgstr "Entra parametri per la 1a feature" -#: tcl/mini.tcl:1119 -msgid "Work Offsets: " -msgstr "Offset di lavoro: " +#: tcl/ngcgui.tcl:2401 +msgid "New Outfile" +msgstr "Nuovo OutFile" -#: tcl/mini.tcl:1121 -msgid "start offsets popup here" -msgstr "avvio popup offset qui" +#: tcl/ngcgui.tcl:2403 +msgid "Ready to make New Outfile" +msgstr "Pronto a creare Nuovo Outfile" -#: tcl/mini.tcl:1165 -msgid "start override popup here" -msgstr "avvio popup superamento qui" +#: tcl/ngcgui.tcl:2419 tcl/ngcgui.tcl:2452 +msgid "Enter parms for feature " +msgstr "Inserisci parametri per feature " -#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1669 -msgid "Feed Override:" -msgstr "Incr. avanzamento:" +#: tcl/ngcgui.tcl:2439 +msgid "feature" +msgstr "feature" -#: tcl/mini.tcl:1180 -msgid "-- MESSAGES --" -msgstr "-- MESSAGGI --" +#: tcl/ngcgui.tcl:2444 +msgid "Create Next" +msgstr "Crea Successivo" -#: tcl/mini.tcl:1230 -msgid "toggleView's not doin nothin yet" -msgstr "Qui non è attivo il cambioVista" +#: tcl/ngcgui.tcl:2449 +msgid "Created feature " +msgstr "Crea Feature" -#: tcl/mini.tcl:1282 -msgid "Can't set zero with a tool offset active so I issued G49 to cancel it." -msgstr "" -"Impossibile azzerare con un offset utensile attivo, quindi è stato attivato " -"G49 per cancellarlo." +#: tcl/ngcgui.tcl:2473 +msgid "option" +msgstr "opzione" -#: tcl/mini.tcl:1346 -#, tcl-format -msgid "Can't update the var file while machine is in auto and %s." -msgstr "" -"Impossibile aggiornare il file .var mentre la macchina è in auto e %s." +#: tcl/ngcgui.tcl:2484 +msgid "Missing parameters" +msgstr "Parametri mancanti " -#: tcl/mini.tcl:1400 tcl/tklinuxcnc.tcl:1227 -msgid "override limits" -msgstr "superamento limiti" +#: tcl/ngcgui.tcl:2488 +msgid "Parse Error" +msgstr "Errore interpretazione" -#: tcl/mini.tcl:1405 tcl/tklinuxcnc.tcl:1263 -msgid "home" -msgstr "origine" +#: tcl/ngcgui.tcl:2495 +msgid "Null Preamble" +msgstr "Preambolo Nullo" -#: tcl/mini.tcl:1426 -msgid "DEFAULT" -msgstr "DEFAULT" +#: tcl/ngcgui.tcl:2500 +msgid "Read Preamble" +msgstr "Legge Preamble" -#: tcl/mini.tcl:1427 -msgid "Speed:" -msgstr "Velocità:" +#: tcl/ngcgui.tcl:2504 +msgid "Preamble Error" +msgstr "Errore Preambolo " -#: tcl/mini.tcl:1430 -msgid "RAPID" -msgstr "RAPIDO" +#: tcl/ngcgui.tcl:2509 +msgid "Null Postamble" +msgstr "Postambolo Nullo " -#: tcl/mini.tcl:1447 tcl/tklinuxcnc.tcl:1391 -msgid "Set Jog Speed" -msgstr "Imposta Velocità jog" +#: tcl/ngcgui.tcl:2514 +msgid "Read Postamble" +msgstr "Legge Postambolo" -#: tcl/mini.tcl:1453 tcl/tklinuxcnc.tcl:1404 -msgid "Set jog speed:" -msgstr "Imposta velocità jog:" +#: tcl/ngcgui.tcl:2518 +msgid "Postamble Error" +msgstr "Errore Postambolo " -#: tcl/mini.tcl:1511 -msgid "JOG X +" -msgstr "JOG X +" +#: tcl/ngcgui.tcl:2523 +msgid "Read Subfile" +msgstr "Legge Subfile" -#: tcl/mini.tcl:1512 -msgid "JOG X -" -msgstr "JOG X -" +#: tcl/ngcgui.tcl:2528 +msgid "Write Error" +msgstr "Errore Scrittura" -#: tcl/mini.tcl:1516 -msgid "increment" -msgstr "incremento" +#: tcl/ngcgui.tcl:2532 +msgid "Outfile set" +msgstr "Outfile set" -#: tcl/mini.tcl:1518 tcl/tklinuxcnc.tcl:602 tcl/tklinuxcnc.tcl:1249 -#: tcl/tklinuxcnc.tcl:1253 -msgid "continuous" -msgstr "continuo" +#: tcl/ngcgui.tcl:2537 +msgid "Finished" +msgstr "Finito" -#: tcl/mini.tcl:1520 -msgid "" -"A\n" -"L\n" -"L\n" -"\n" -"Z\n" -"E\n" -"R\n" -"O" -msgstr "" -"A\n" -"L\n" -"L\n" -"\n" -"Z\n" -"E\n" -"R\n" -"O" +#: tcl/ngcgui.tcl:2542 +msgid "Canceled" +msgstr "Cancellato" -#: tcl/mini.tcl:1588 src/emc/usr_intf/touchy/touchy.glade:1422 -msgid "Spindle Forward" -msgstr "Mandrino Avanti" +#: tcl/ngcgui.tcl:2548 +msgid "Sent" +msgstr "Mandato" -#: tcl/mini.tcl:1589 src/emc/usr_intf/touchy/touchy.glade:1433 -msgid "Spindle Reverse" -msgstr "Mandrino Indietro" +#: tcl/ngcgui.tcl:2552 +msgid "SendFileToAxis failed" +msgstr "SendFileToAxis fallito" + +#: tcl/ngcgui.tcl:2556 +msgid "Ctrl-k for Key bindings" +msgstr "Ctrl-k per Gestione Tasti" -#: tcl/mini.tcl:1590 tcl/tklinuxcnc.tcl:871 -msgid "Spindle off" -msgstr "Mandrino off" +#: tcl/ngcgui.tcl:2560 +msgid "Expand sub" +msgstr "Espandi Sub" -#: tcl/mini.tcl:1592 src/emc/usr_intf/touchy/touchy.glade:1479 -msgid "Spindle Slower" -msgstr "Rallentamento Mandrino" +#: tcl/ngcgui.tcl:2564 +msgid "Retain values" +msgstr "Mantieni valori" -#: tcl/mini.tcl:1596 src/emc/usr_intf/touchy/touchy.glade:1464 -msgid "Spindle Faster" -msgstr "Accelerazione Mandrino" +#: tcl/ngcgui.tcl:2568 +msgid "Verbose" +msgstr "Verbose" -#: tcl/mini.tcl:1632 tcl/tklinuxcnc.tcl:1620 -msgid "MDI:" -msgstr "MDI:" +#: tcl/ngcgui.tcl:2574 +msgid "Finalize Canceled" +msgstr "Finalizazzione Cancellata" -#: tcl/mini.tcl:1669 tcl/tklinuxcnc.tcl:1658 -#: src/emc/usr_intf/stepconf/stepconf.glade:4403 -#: src/emc/usr_intf/pncconf/pncconf.glade:60509 -#: src/emc/usr_intf/pncconf/pncconf.glade:61603 -#: src/emc/usr_intf/pncconf/pncconf.glade:62696 -#: src/emc/usr_intf/pncconf/pncconf.glade:63789 -#: src/emc/usr_intf/pncconf/pncconf.glade:64889 -msgid "Run" -msgstr "Avvio" +#: tcl/ngcgui.tcl:2711 tcl/ngcgui.tcl:2867 +msgid "Dismiss" +msgstr "Eliminato" -#: tcl/mini.tcl:1671 tcl/tklinuxcnc.tcl:1659 -#: src/emc/usr_intf/pncconf/pncconf.glade:60574 -#: src/emc/usr_intf/pncconf/pncconf.glade:61668 -#: src/emc/usr_intf/pncconf/pncconf.glade:62761 -#: src/emc/usr_intf/pncconf/pncconf.glade:63854 -msgid "Pause" -msgstr "Pausa" +#: tcl/ngcgui.tcl:2716 +msgid "ngcgui Error" +msgstr "Errore ngcgui " -#: tcl/mini.tcl:1673 tcl/tklinuxcnc.tcl:1660 -msgid "Resume" -msgstr "Riprende" +#: tcl/ngcgui.tcl:2739 +msgid "Declining support for tk send bug in ngcgui" +msgstr "Declina supporto per l'invio di bug tk in ngcgui" -#: tcl/mini.tcl:1675 tcl/tklinuxcnc.tcl:1661 -msgid "Step" -msgstr "Passo" +#: tcl/ngcgui.tcl:2740 +msgid "You should upgrade linuxcnc to >= linuxcnc2.5" +msgstr "Bisogna aggiornare linuxcnc a >= linuxcnc2.5" -#: tcl/mini.tcl:1677 tcl/tklinuxcnc.tcl:1662 -msgid "Verify" -msgstr "Verifica" +#: tcl/ngcgui.tcl:2784 +msgid "pre2.4_send_file_to_axis:error" +msgstr "pre2.4_send_file_to_axis:errore" -#: tcl/mini.tcl:1698 -msgid "RESTART LINE" -msgstr "LINEA RIAVVIO" +#: tcl/ngcgui.tcl:2978 share/axis/tcl/axis.tcl:2032 +msgid "OFF" +msgstr "OFF" -#: tcl/mini.tcl:1699 -msgid "Back" -msgstr "Indietro" +#: tcl/ngcgui.tcl:2981 +msgid "Toggle autosend" +msgstr "Autosend ON/OFF" -#: tcl/mini.tcl:1700 -msgid "Ahead" -msgstr "Avanti" +#: tcl/ngcgui.tcl:2982 tcl/ngcgui.tcl:3189 +msgid "Clear entries" +msgstr "Elimina notifiche" -#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1221 -msgid "Restart" -msgstr "Riavvio" +#: tcl/ngcgui.tcl:2983 +msgid "Set entries to default values" +msgstr "Imposta dati al valore iniziale" -#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 -#: tcl/tklinuxcnc.tcl:465 src/emc/usr_intf/axis/scripts/axis.py:1885 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:754 -msgid "All files" -msgstr "Tutti i file" +#: tcl/ngcgui.tcl:2984 tcl/ngcgui.tcl:2998 tcl/ngcgui.tcl:3000 +msgid "Open editor specified by" +msgstr "Apri editorr specificato da" -#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 -#: tcl/tklinuxcnc.tcl:466 -msgid "Text files" -msgstr "File testo" +#: tcl/ngcgui.tcl:2985 +msgid "on last outfile" +msgstr "su ultimo outfile" -#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 -#: tcl/tklinuxcnc.tcl:467 -msgid "NC files" -msgstr "File NC" +#: tcl/ngcgui.tcl:2986 +msgid "toggle expand subroutines" +msgstr "ON/OFF espansione subroutine" -#: tcl/mini.tcl:1753 -msgid "" -"The interpreter is running. \n" -" Pressing OK will abort and load the new program" -msgstr "" -"L' interprete è attivo. \n" -" Pressare OK per abortire e caricare il nuovo programma" +#: tcl/ngcgui.tcl:2987 +msgid "Create feature" +msgstr "Crea feature" -#: tcl/mini.tcl:1886 -msgid "ESTOPPED" -msgstr "ESTOPPED" +#: tcl/ngcgui.tcl:2988 +msgid "Finalize (AUTO send is" +msgstr "Finalizza (AUTO inviato è" -#: tcl/mini.tcl:1889 -msgid "ESTOP PUSH" -msgstr "ESTOP PUSH" +#: tcl/ngcgui.tcl:2989 +msgid "Show key bindings" +msgstr "Mostra gestione tasti" -#: tcl/mini.tcl:1892 tcl/tklinuxcnc.tcl:2233 -msgid "ESTOP RESET" -msgstr "ESTOP RESET" +#: tcl/ngcgui.tcl:2990 +msgid "Restart (cancel pending)" +msgstr "Riavvio (cancellazione in sospeso)" -#: tcl/mini.tcl:1897 tcl/tklinuxcnc.tcl:2298 -msgid "SPINDLE FORWARD" -msgstr "MANDRINO AVANTI" +#: tcl/ngcgui.tcl:2991 +msgid "(re)Read Preamble" +msgstr "(ri)Legge Preambolo" -#: tcl/mini.tcl:1899 tcl/tklinuxcnc.tcl:2300 -msgid "SPINDLE REVERSE" -msgstr "MANDRINO INDIETRO" +#: tcl/ngcgui.tcl:2992 +msgid "(re)Read Postamble" +msgstr "(ri)Legge Postambolo" -#: tcl/mini.tcl:1901 tcl/tklinuxcnc.tcl:2302 -msgid "SPINDLE OFF" -msgstr "MANDRINO OFF" +#: tcl/ngcgui.tcl:2993 +msgid "(re)Read Subfile" +msgstr "(ri)Legge Subfile" -#: tcl/mini.tcl:1903 tcl/tklinuxcnc.tcl:2304 -msgid "SPINDLE INCREASE" -msgstr "ACCELERARE MANDRINO" +#: tcl/ngcgui.tcl:2994 +msgid "toggle retain values" +msgstr "scambia valori salvati" -#: tcl/mini.tcl:1905 tcl/tklinuxcnc.tcl:2306 -msgid "SPINDLE DECREASE" -msgstr "DECELERARE MANDRINO" +#: tcl/ngcgui.tcl:2995 +msgid "toggle output file verbosity" +msgstr "scambia verbosità file output " -#: tcl/mini.tcl:1907 tcl/tklinuxcnc.tcl:2308 -msgid "SPINDLE ?" -msgstr "MANDRINO ?" +#: tcl/ngcgui.tcl:2996 +msgid "Show status" +msgstr "Mostra Stato" -#: tcl/mini.tcl:1911 tcl/tklinuxcnc.tcl:2312 -msgid "BRAKE ON" -msgstr "FRENO ON" +#: tcl/ngcgui.tcl:2997 +msgid "Show full status (debug info)" +msgstr "Mostra stato completo (info debug)" -#: tcl/mini.tcl:1913 tcl/tklinuxcnc.tcl:2314 -msgid "BRAKE OFF" -msgstr "FRENO OFF" +#: tcl/ngcgui.tcl:2999 +msgid "on current subfile" +msgstr "sul subfile corrente" -#: tcl/mini.tcl:1915 tcl/tklinuxcnc.tcl:2316 -msgid "BRAKE ?" -msgstr "FRENO ?" +#: tcl/ngcgui.tcl:3001 +msgid "on current preamble" +msgstr "sul preambolo corrente" -#: tcl/mini.tcl:1919 tcl/tklinuxcnc.tcl:2274 -msgid "MIST ON" -msgstr "ARIA ATTIVA" +#: tcl/ngcgui.tcl:3004 +msgid " Escape Return to Preview page" +msgstr "Escape Torna alla pagina di Anteprima" -#: tcl/mini.tcl:1921 tcl/tklinuxcnc.tcl:2276 -msgid "MIST OFF" -msgstr "ARIA DISATTIVA" +#: tcl/ngcgui.tcl:3081 +msgid "Editing requires setting for environmental variable VISUAL" +msgstr "Modifica richiede impostazioni per la variabile di sistema VISUAL" -#: tcl/mini.tcl:1923 tcl/tklinuxcnc.tcl:2278 -msgid "MIST ?" -msgstr "ARIA ?" +#: tcl/ngcgui.tcl:3082 +msgid "Trying gedit" +msgstr "Prova gedit" -#: tcl/mini.tcl:1927 tcl/tklinuxcnc.tcl:2282 -msgid "FLOOD ON" -msgstr "REFRIGERANTE ON" +#: tcl/ngcgui.tcl:3095 +msgid "No file available for editing yet" +msgstr "Nessun file disponibile per la modifica" -#: tcl/mini.tcl:1929 tcl/tklinuxcnc.tcl:2284 -msgid "FLOOD OFF" -msgstr "REFRIGERANTE OFF" +#: tcl/ngcgui.tcl:3104 tcl/ngcgui.tcl:3113 +msgid "No file available for editing" +msgstr "Nessun file disponibile per la modifica" -#: tcl/mini.tcl:1931 tcl/tklinuxcnc.tcl:2286 -msgid "FLOOD ?" -msgstr "REFRIGERANTE ?" +#: tcl/ngcgui.tcl:3130 +msgid "Status items" +msgstr "Stato elementi" -#: tcl/mini.tcl:2052 -msgid "FEEDHOLD" -msgstr "AVANZAMENTO" +#: tcl/ngcgui.tcl:3143 +msgid "All-page opt items" +msgstr "Opzione elemento Pagina intera" -#: tcl/mini.tcl:2124 -msgid "" -"TOOL SETUP \n" -" Click or tab to edit. Press enter to return to keyboard machine control." -msgstr "" -"SETUP UTENSILE \n" -" Cliccare o tab per editare. Pressa invio per ritornare al controllo " -"macchina da tastiera." +#: tcl/ngcgui.tcl:3149 +msgid "any-items" +msgstr "ogni oggetto" -#: tcl/mini.tcl:2130 -msgid " TOOL NUMBER " -msgstr " NUMERO UTENSILE " +#: tcl/ngcgui.tcl:3182 +msgid "Set defaults" +msgstr "Imposta parametri iniziali" -#: tcl/mini.tcl:2131 -msgid " LENGTH " -msgstr " LUNGHEZZA " +#: tcl/ngcgui.tcl:3257 +msgid "not writable" +msgstr "non scrivibile" -#: tcl/mini.tcl:2132 -msgid " DIAMETER " -msgstr " DIAMETRO " +#: tcl/ngcgui.tcl:3396 tcl/ngcgui.tcl:3577 +msgid "new" +msgstr "nuovo" -#: tcl/mini.tcl:2133 -msgid " COMMENT " -msgstr " COMMENTO " +#: tcl/ngcgui.tcl:3422 +msgid "Open a new Subfile" +msgstr "Apri un Nuovo Subfile" -#: tcl/mini.tcl:2188 -msgid "Add Extra Tool" -msgstr "Aggiungere Utensile Extra" +#: tcl/ngcgui.tcl:3568 +msgid "remove" +msgstr "rimuove" -#: tcl/mini.tcl:2189 -msgid "Remove Last Tool" -msgstr "Rimuove Ultimo Utensile" +#: tcl/ngcgui.tcl:3590 tcl/ngcgui.tcl:3596 +msgid "move" +msgstr "muove" -#: tcl/mini.tcl:2217 tcl/mini.tcl:2253 -#, tcl-format -msgid "Can't update the tool file while machine is in auto and %s." -msgstr "" -"Impossibile aggiornare il file utensili mentre la macchina è in auto e %s." +#: tcl/ngcgui.tcl:3704 src/emc/usr_intf/pncconf/pncconf.py:7374 +#: src/emc/usr_intf/pncconf/pncconf.py:7485 +#: src/emc/usr_intf/pncconf/pncconf.py:7650 +msgid "Custom" +msgstr "Personale" -#: tcl/mini.tcl:2229 -msgid "This is not a good number." -msgstr "Questo non è un buon numero." +#: tcl/ngcgui.tcl:3730 +msgid "Problem creating page" +msgstr "Problema nella creazione della pagine" -#: tcl/mini.tcl:2293 -msgid "" -"COORDINATE SYSTEM SETUP \n" -"\n" -" Click value to edit with keyboard. Press enter to return to keyboard " -"control of machine. \n" -" " -msgstr "" -"IMPOSTA SISTEMA COORDINATE \n" -"\n" -" Clicca il valore da modificare con la tastiera. Pressa invio per tornare " -"al controllo macchina da tastiera. \n" -" " +#: tcl/ngcgui.tcl:3737 +msgid "entrykeybindings not available" +msgstr "entrykeybindings non disponibile" -#: tcl/mini.tcl:2320 tcl/scripts/Set_Coordinates.tcl:80 -msgid "Axis " -msgstr "Asse " +#: tcl/ngcgui.tcl:3781 +msgid "Found multiple matches for" +msgstr "Trovati multipli per" + +#: tcl/ngcgui.tcl:3782 +msgid "using path" +msgstr "uso percorso" -#: tcl/mini.tcl:2321 -msgid "Value " -msgstr "Valore " +#: tcl/ngcgui.tcl:3790 src/emc/usr_intf/axis/scripts/axis.py:2440 +#: src/emc/usr_intf/axis/scripts/axis.py:2453 +msgid "Warning" +msgstr "Attenzione" -#: tcl/mini.tcl:2326 tcl/scripts/Set_Coordinates.tcl:91 -msgid "Teach" -msgstr "Apprendi" +#: tcl/ngcgui.tcl:3791 +msgid "File absolute path specifier conflicts with searchpath result" +msgstr "" +"Cammino assoluto file specificato confligge con il risultatp del cammino " +"ricerca" -#: tcl/mini.tcl:2334 -msgid "Write And Load File " -msgstr "Scrive e Carica File " +#: tcl/ngcgui.tcl:3792 +msgid "Absolute Specifier" +msgstr "Specificare Assoluto" -#: tcl/mini.tcl:2336 -msgid "Offset By Radius" -msgstr "Offset del Raggio" +#: tcl/ngcgui.tcl:3793 +msgid "Using Search Result" +msgstr "Sso Risultato Ricerca" -#: tcl/mini.tcl:2337 -msgid "Offset By Length" -msgstr "Offset in Lunghezza" +#: tcl/ngcgui.tcl:3798 +msgid "File not in Search Path" +msgstr "File mancante in percorso Ricerca" -#: tcl/mini.tcl:2342 -msgid "Subtract" -msgstr "Sottrai" +#: tcl/ngcgui.tcl:3800 +msgid "Must be in search path" +msgstr "Deve essere nel percorso ricerca" -#: tcl/mini.tcl:2344 -msgid "Add" -msgstr "Aggiungi" +#: tcl/ngcgui.tcl:3802 +msgid "(File found -- not in search path)" +msgstr "(File trovato -- non nel rpercorso ricerca)" -#: tcl/mini.tcl:2366 -msgid "Zero All G54" -msgstr "Zero Tutti G54" +#: tcl/ngcgui.tcl:3804 +msgid "Current directory" +msgstr "Percorso corrente" -#: tcl/mini.tcl:2367 -msgid "Zero All G55" -msgstr "Zero Tutti G55" +#: tcl/ngcgui.tcl:3805 +msgid "Search path" +msgstr "Percorso ricerca" -#: tcl/mini.tcl:2368 -msgid "Zero All G56" -msgstr "Zero Tutti G56" +#: tcl/ngcgui.tcl:3815 +msgid "Check setting for" +msgstr "Controllo impostazioni per" -#: tcl/mini.tcl:2369 -msgid "Zero All G57" -msgstr "Zero Tutti G57" +#: tcl/ngcgui.tcl:3816 +msgid "in ini file" +msgstr "nel file ini" -#: tcl/mini.tcl:2370 -msgid "Zero All G58" -msgstr "Zero Tutti G58" +#: tcl/ngcgui.tcl:3817 +msgid "(Restart required after fixing ini file)" +msgstr "(Riavvio necessario dopo correzione file ini)" -#: tcl/mini.tcl:2371 -msgid "Zero All G59" -msgstr "Zero Tutti G59" +#: tcl/ngcgui.tcl:3832 +msgid "Try to Continue" +msgstr "Prova a continuare" -#: tcl/mini.tcl:2372 -msgid "Zero All G59.1" -msgstr "Zero Tutti G59.1" +#: tcl/ngcgui.tcl:3837 +msgid "Ngcgui Configuration File Not Found" +msgstr "File Configurazione ngcgui non trovato" -#: tcl/mini.tcl:2373 -msgid "Zero All G59.2" -msgstr "Zero Tutti G59.2" +#: tcl/ngcgui.tcl:3917 +msgid "Missing Tcl Package Img" +msgstr "Tcl Package Img mancante" -#: tcl/mini.tcl:2374 -msgid "Zero All G59.3" -msgstr "Zero Tutti G59.3" +#: tcl/ngcgui.tcl:3918 +msgid "Please install Img" +msgstr "Prego installare Img" -#: tcl/mini.tcl:2375 -msgid "Zero All ????" -msgstr "Zero Tutti ????" +#: tcl/ngcgui.tcl:4122 +msgid "ini file" +msgstr "file ini" -#: tcl/mini.tcl:2493 -msgid "Modified..." -msgstr "Modificato..." +#: tcl/ngcgui.tcl:4131 +msgid "not found" +msgstr "non trovato" -#: tcl/mini.tcl:2538 -msgid "Save and Load" -msgstr "Salva e Carica" +#: tcl/ngcgui_ttt.tcl:67 +msgid "found truetype-tracer v4 -OK" +msgstr "trovato truetype-tracer v4 -OK" -#: tcl/mini.tcl:2540 -msgid "Undo" -msgstr "Annulla" +#: tcl/ngcgui_ttt.tcl:70 +msgid "Note truetype-tracer v4 is required" +msgstr "Nota: è richiesto truetype-tracer v4 " -#: tcl/mini.tcl:2541 -msgid "Redo" -msgstr "Riesegui" +#: tcl/ngcgui_ttt.tcl:71 +msgid "Note: truetype-tracer v4 is required" +msgstr "Nota: è richiesto truetype-tracer v4 " -#: tcl/mini.tcl:2546 -msgid "Delete" -msgstr "Cancella" +#: tcl/ngcgui_ttt.tcl:81 +msgid "ngcgui_app.tcl must be loaded before" +msgstr "bisogna caricare prima ngcgui_app.tcl" -#: tcl/mini.tcl:2551 -msgid "Replace..." -msgstr "Sostituisci..." +#: tcl/ngcgui_ttt.tcl:89 +msgid "Create a subroutine file from truetype-tracer (V4 reqd)" +msgstr "Crea un file subroutine da truetype-tracer (V4 richiesta)" -#: tcl/mini.tcl:2664 -msgid "Next Number: " -msgstr "Numero Successivo:" +#: tcl/ngcgui_ttt.tcl:102 tcl/ngcgui_ttt.tcl:115 +msgid "problem with" +msgstr "problema con" -#: tcl/mini.tcl:2765 -msgid "Basic Help" -msgstr "Aiuto Base" +#: tcl/ngcgui_ttt.tcl:106 +msgid "No entry for" +msgstr "Nessuna voce per " -#: tcl/mini.tcl:2765 -msgid "" -"This is a simple ASCII editor like many others.\n" -"\n" -"Ctrl+O Open\n" -"Ctrl+S Save\n" -"Ctrl+Z Undo\n" -"Ctrl+Y Redo\n" -"Ctrl+X Cut\n" -"Ctrl+C Copy\n" -"Ctrl+V Paste\n" -"Del Delete\n" -"Ctrl+A Select All\n" -"\n" -"Ctrl+F Find\n" -"Ctrl+R Replace " -msgstr "" -"Questo è un semplice editore come molti altri\n" -"\n" -"Ctrl+O Apri\n" -"Ctrl+S Salva\n" -"Ctrl+Z Cancella\n" -"Ctrl+Y Riesegui\n" -"Ctrl+X Taglia\n" -"Ctrl+C Copia\n" -"Ctrl+V Incolla\n" -"Canc Cancella\n" -"Ctrl+A Seleziona Tutto\n" -"\n" -"Ctrl+F Trova\n" -"Ctrl+R Sostituisci " +#: tcl/ngcgui_ttt.tcl:109 +msgid "wrong version of truetype-tracer" +msgstr "versione errata di truetype-tracer" -#: tcl/mini.tcl:2785 -msgid "" -"tknotepad by Joseph Acosta. \n" -"\n" -" Modified for EMC by: Paul Corner " -msgstr "" -"tknotepad di Joseph Acosta. \n" -"\n" -" Modificato per EMC da: Paul Corner " +#: tcl/ngcgui_ttt.tcl:125 +msgid "not writable, using" +msgstr "non scrivibile, usando" -#: tcl/mini.tcl:2793 -msgid "" -"The contents of this file may have changed, do you wish to to save your " -"changes?" -msgstr "" -"Il contenuto di questo file può essere stato cambiato, vuoi salvare i tuoi " -"cambiamenti?" +#: tcl/ngcgui_ttt.tcl:125 +msgid "and setting expandsub" +msgstr "e imposta expandsub" -#: tcl/mini.tcl:2794 -msgid "New Confirm?" -msgstr "Nuova Conferma?" +#: tcl/ngcgui_ttt.tcl:161 +msgid "Text" +msgstr "Testo" -#: tcl/mini.tcl:2928 -msgid "Print Setup" -msgstr "Setup Stampa:" +#: tcl/ngcgui_ttt.tcl:171 +msgid "Linescale" +msgstr "scala lineare" -#: tcl/mini.tcl:2932 -msgid "Print Command: " -msgstr "Comando Stampa:" +#: tcl/ngcgui_ttt.tcl:177 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3583 +msgid "none" +msgstr "niente" -#: tcl/mini.tcl:3095 -msgid "Find what:" -msgstr "Trova questo:" +#: tcl/ngcgui_ttt.tcl:192 +msgid "Subdiv" +msgstr "Subdiv" -#: tcl/mini.tcl:3101 -msgid "Replace with:" -msgstr "Sostituisci con:" +#: tcl/ngcgui_ttt.tcl:199 +msgid "default" +msgstr "default" -#: tcl/mini.tcl:3109 -msgid "Find Next" -msgstr "Trova Successivo" +#: tcl/ngcgui_ttt.tcl:239 +msgid "Mode" +msgstr "Modo " -#: tcl/mini.tcl:3112 -msgid "Replace" -msgstr "Sostituisci" +#: tcl/ngcgui_ttt.tcl:247 +msgid "normal" +msgstr "normale" -#: tcl/mini.tcl:3120 -msgid "Up" -msgstr "Su" +#: tcl/ngcgui_ttt.tcl:248 +msgid "date" +msgstr "data" -#: tcl/mini.tcl:3121 -msgid "Down" -msgstr "Giù" +#: tcl/ngcgui_ttt.tcl:249 +msgid "fontname" +msgstr "Nome font" -#: tcl/mini.tcl:3124 -msgid "Match case" -msgstr "Maiuscolo/minuscolo" +#: tcl/ngcgui_ttt.tcl:262 +msgid "Switches" +msgstr "Switches" -#: tcl/mini.tcl:3569 -msgid "rot-x" -msgstr "rot x" +#: tcl/ngcgui_ttt.tcl:270 +msgid "Unicode" +msgstr "Unicode" -#: tcl/mini.tcl:3579 -msgid "rot-y" -msgstr "rot y" +#: tcl/ngcgui_ttt.tcl:275 +msgid "Allow Rotation" +msgstr "Consente Rotazione " -#: tcl/mini.tcl:3589 -msgid "rot-z" -msgstr "rot z" +#: tcl/ngcgui_ttt.tcl:295 +msgid "Make ngcgui-compatible subfile and new tab page" +msgstr "Genera subfile ngcgui-compatibile e nuova pagina tab " -#: tcl/mini.tcl:3599 -msgid "zoom" -msgstr "zoom" +#: tcl/ngcgui_ttt.tcl:353 +msgid "Null text" +msgstr "Testo nullo" -#: tcl/mini.tcl:3655 -msgid "TEST" -msgstr "TEST" +#: tcl/ngcgui_ttt.tcl:384 +msgid "Using truetype-tracer default font" +msgstr "Uso default font truetype-tracer " -#: tcl/mini.tcl:3699 -msgid "Hide Setup" -msgstr "Nascondi Setup" +#: tcl/ngcgui_ttt.tcl:388 +msgid "no such file" +msgstr "Nessun file" -#: tcl/mini.tcl:3703 -msgid "Show Setup" -msgstr "Mostra Setup" +#: tcl/ngcgui_ttt.tcl:393 +msgid "file not readable" +msgstr "File non leggibile" -#: tcl/show_errors.tcl:41 -msgid "LinuxCNC Errors" -msgstr "Errori LinuxCNC" +#: tcl/ngcgui_ttt.tcl:507 +msgid "Creating new tab page" +msgstr "Crea nuova pagina tab" -#: tcl/show_errors.tcl:44 +#: tcl/ngcgui_app.tcl:25 msgid "" -"LinuxCNC terminated with an error. When reporting problems, please include " -"all the information below in your message." +"requires command inifindall\n" +"from axis.py (LinuxCNC 2.5) or" msgstr "" -"LinuxCNC termina con un errore. Quando segnali il problema, si prega di " -"includere tutte le informazioni sottostanti nel tuo messaggio." -#: tcl/show_errors.tcl:69 tcl/scripts/Set_Coordinates.tcl:103 -msgid "Close" -msgstr "Chiudi" +#: tcl/ngcgui_app.tcl:55 +#, fuzzy +msgid "Substituting" +msgstr "Settaggi" -#: tcl/tklinuxcnc.tcl:154 tcl/tklinuxcnc.tcl:181 -msgid "Set Run Mark" -msgstr "Imposta punto avvio" +#: tcl/ngcgui_app.tcl:55 +#, fuzzy +msgid "for" +msgstr "o" -#: tcl/tklinuxcnc.tcl:156 -#, tcl-format -msgid "Set run mark at line %s?" -msgstr "Imposta punto avvio alla linea %s?" +#: tcl/ngcgui_app.tcl:59 +#, fuzzy +msgid "not readable" +msgstr "File non leggibile" -#: tcl/tklinuxcnc.tcl:176 tcl/tklinuxcnc.tcl:204 -msgid "untitled" -msgstr "anonimo" +#: tcl/ngcgui_app.tcl:65 tcl/ngcgui_app.tcl:68 +msgid "Unexpected: multiple startups for ngcgui" +msgstr "" -#: tcl/tklinuxcnc.tcl:212 -msgid "Load Parameter File" -msgstr "Carica File Parametri" +#: tcl/ngcgui_app.tcl:66 +#, fuzzy +msgid "LinuxCNC" +msgstr "TKLinuxCNC" -#: tcl/tklinuxcnc.tcl:261 -msgid "LinuxCNC Diagnostics" -msgstr "Diagnostica LinuxCNC" +#: tcl/ngcgui_app.tcl:67 +msgid "for linuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" +msgstr "" -#: tcl/tklinuxcnc.tcl:263 -msgid "Task" -msgstr "Task" +#: tcl/ngcgui_app.tcl:86 +#, fuzzy +msgid "LinuxCNC version" +msgstr "Errori LinuxCNC" -#: tcl/tklinuxcnc.tcl:265 tcl/tklinuxcnc.tcl:288 tcl/tklinuxcnc.tcl:311 -msgid "Heartbeat:" -msgstr "Frequenza:" +#: tcl/ngcgui_app.tcl:87 +msgid "for LinuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" +msgstr "" -#: tcl/tklinuxcnc.tcl:268 tcl/tklinuxcnc.tcl:291 tcl/tklinuxcnc.tcl:314 -msgid "Command:" -msgstr "Comando:" +#: tcl/tooledit.tcl:65 +#, fuzzy +msgid "Problem reading ~/.tooleditrc" +msgstr "Problema nella creazione della pagine" -#: tcl/tklinuxcnc.tcl:271 tcl/tklinuxcnc.tcl:294 tcl/tklinuxcnc.tcl:317 -msgid "Command #:" -msgstr "Comando #:" +#: tcl/tooledit.tcl:82 +#, tcl-format +msgid "Note: Ignoring duplicate column name: %s" +msgstr "" -#: tcl/tklinuxcnc.tcl:274 tcl/tklinuxcnc.tcl:297 tcl/tklinuxcnc.tcl:320 -msgid "Status:" -msgstr "Stato:" +#: tcl/tooledit.tcl:93 +#, fuzzy, tcl-format +msgid "Unknown column: %s" +msgstr "Utensile %d sconosciuto" -#: tcl/tklinuxcnc.tcl:286 -msgid "Io" -msgstr "Io" +#: tcl/tooledit.tcl:210 tcl/tooledit.tcl:213 tcl/tooledit.tcl:598 +#: tcl/tooledit.tcl:599 tcl/tooledit.tcl:1032 +msgid "NEW" +msgstr "" -#: tcl/tklinuxcnc.tcl:309 -msgid "Motion" -msgstr "Movimento" +#: tcl/tooledit.tcl:232 +#, tcl-format +msgid "%s must be a number" +msgstr "" -#: tcl/tklinuxcnc.tcl:350 -msgid "About TkLinuxCNC" -msgstr "Informazioni su TkLinuxCNC" +#: tcl/tooledit.tcl:241 +#, fuzzy, tcl-format +msgid "filename: <%s> not readable" +msgstr "File non leggibile" -#: tcl/tklinuxcnc.tcl:351 -msgid "" -"TkLinuxcnc\n" -"\n" -"Tcl/Tk GUI for LinuxCNC\n" -"\n" -"GPL Version 2 (2012)" +#: tcl/tooledit.tcl:245 +#, fuzzy, tcl-format +msgid "filename: <%s> not writable" +msgstr "File non leggibile" + +#: tcl/tooledit.tcl:250 +#, fuzzy, tcl-format +msgid "directory: <%s> not writable" +msgstr "non scrivibile" + +#: tcl/tooledit.tcl:294 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, value <%s> is not a number" msgstr "" -"TkLinuxCNC\n" -"\n" -"Interfaccia grafica Tcl/Tk per LinuxCNC (n\n" -"GPL Version 2 (2012)/n Traduzione italiana E. Lo Valvo" -#: tcl/tklinuxcnc.tcl:399 -msgid "Set Tool Offset" -msgstr "Imposta Offset Utensili" +#: tcl/tooledit.tcl:300 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, expected integer not <%s>" +msgstr "" -#: tcl/tklinuxcnc.tcl:404 tcl/tklinuxcnc.tcl:905 -msgid "Tool:" -msgstr "Utensile:" +#: tcl/tooledit.tcl:316 +#, tcl-format +msgid "At linenumber %d, Unknown tag <%s>" +msgstr "" -#: tcl/tklinuxcnc.tcl:722 -msgid "Edit..." -msgstr "Modifica..." +#: tcl/tooledit.tcl:399 +#, tcl-format +msgid "%s: Column sorting not available with tcl_version==%s" +msgstr "" -#: tcl/tklinuxcnc.tcl:727 -msgid "Tool Table Editor..." -msgstr "Editore Tabella Utensili..." +#: tcl/tooledit.tcl:408 +#, fuzzy +msgid "tool" +msgstr "Utensile assente" -#: tcl/tklinuxcnc.tcl:730 src/emc/usr_intf/touchy/touchy.glade:1383 -msgid "Reload Tool Table" -msgstr "Ricarica Tabella Utensile" +#: tcl/tooledit.tcl:409 +msgid "poc" +msgstr "" -#: tcl/tklinuxcnc.tcl:740 -msgid "Offsets and Variables..." -msgstr "Offset e variabili..." +#: tcl/tooledit.tcl:410 +#, fuzzy +msgid "diam" +msgstr " diametro" -#: tcl/tklinuxcnc.tcl:741 -msgid "Diagnostics..." -msgstr "Diagnostica..." +#: tcl/tooledit.tcl:411 +msgid "front" +msgstr "" -#: tcl/tklinuxcnc.tcl:742 -msgid "Backplot..." -msgstr "Disegna..." +#: tcl/tooledit.tcl:412 +msgid "back" +msgstr "" -#: tcl/tklinuxcnc.tcl:748 -msgid "Testing..." -msgstr "Testing..." +#: tcl/tooledit.tcl:413 +msgid "orien" +msgstr "" -#: tcl/tklinuxcnc.tcl:749 -msgid "Debug..." -msgstr "Debug..." +#: tcl/tooledit.tcl:414 +#, fuzzy +msgid "comment" +msgstr "Incremento" -#: tcl/tklinuxcnc.tcl:750 -msgid "Font..." -msgstr "Font..." +#: tcl/tooledit.tcl:444 +#, fuzzy +msgid "Del" +msgstr "Sosta" -#: tcl/tklinuxcnc.tcl:754 src/emc/usr_intf/axis/scripts/image-to-gcode.py:665 -msgid "Units" -msgstr "Unità" +#: tcl/tooledit.tcl:473 +#, fuzzy +msgid "ReLoadTable" +msgstr "Ricarica Tabella Utensile" -#: tcl/tklinuxcnc.tcl:755 -msgid "auto" -msgstr "auto" +#: tcl/tooledit.tcl:478 +#, fuzzy +msgid "SaveFile" +msgstr "Salvare su File" -#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8512 -msgid "inches" -msgstr "pollici" +#: tcl/tooledit.tcl:483 +msgid "ReRead" +msgstr "" -#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1556 -#: src/emc/usr_intf/axis/scripts/axis.py:1726 -#: src/emc/usr_intf/touchy/touchy.glade:3301 -#: src/emc/usr_intf/stepconf/stepconf.py:1685 -#: src/emc/usr_intf/stepconf/stepconf.py:2221 -#: src/emc/usr_intf/stepconf/stepconf.glade:4357 -#: src/emc/usr_intf/pncconf/pncconf.py:8508 -#: src/emc/usr_intf/pncconf/pncconf.glade:2229 -#: src/emc/usr_intf/pncconf/pncconf.glade:2394 -#: src/emc/usr_intf/pncconf/pncconf.glade:57616 -#: src/emc/usr_intf/pncconf/pncconf.glade:57688 -#: src/emc/usr_intf/pncconf/pncconf.glade:60646 -#: src/emc/usr_intf/pncconf/pncconf.glade:61739 -#: src/emc/usr_intf/pncconf/pncconf.glade:62832 -#: src/emc/usr_intf/pncconf/pncconf.glade:63925 -#: src/emc/usr_intf/pncconf/pncconf.glade:65091 -msgid "mm" -msgstr "mm" +#: tcl/tooledit.tcl:485 +#, fuzzy +msgid "AddTool" +msgstr "Utensili" -#: tcl/tklinuxcnc.tcl:758 -msgid "cm" -msgstr "cm" +#: tcl/tooledit.tcl:535 +#, tcl-format +msgid "Opened %s" +msgstr "" -#: tcl/tklinuxcnc.tcl:762 -msgid "Utilities" -msgstr "Utilità" +#: tcl/tooledit.tcl:536 +#, fuzzy, tcl-format +msgid "Created %s" +msgstr "Crea Successivo" -#: tcl/tklinuxcnc.tcl:763 -msgid "Hal Scope" -msgstr "Hal Scope" +#: tcl/tooledit.tcl:537 +msgid "File updated" +msgstr "" -#: tcl/tklinuxcnc.tcl:785 -msgid "HAL Show" -msgstr "Mostra HAL" +#: tcl/tooledit.tcl:538 +msgid "File modified" +msgstr "" -#: tcl/tklinuxcnc.tcl:786 -msgid "HAL Config" -msgstr "Configurazione HAL" +#: tcl/tooledit.tcl:539 +msgid "File check errors" +msgstr "" -#: tcl/tklinuxcnc.tcl:792 -msgid "Balloon help" -msgstr "Finestra Aiuto" +#: tcl/tooledit.tcl:540 +msgid "File checked" +msgstr "" -#: tcl/tklinuxcnc.tcl:815 -msgid "Estop on" -msgstr "Estop on" +#: tcl/tooledit.tcl:541 +msgid "File items deleted" +msgstr "" -#: tcl/tklinuxcnc.tcl:816 -msgid "Estop off" -msgstr "Estop off" +#: tcl/tooledit.tcl:542 +msgid "Bogus lines in file ignored" +msgstr "" -#: tcl/tklinuxcnc.tcl:818 -msgid "Machine on" -msgstr "Macchina on" +#: tcl/tooledit.tcl:543 +msgid "File errors -- Check Entries" +msgstr "" -#: tcl/tklinuxcnc.tcl:819 -msgid "Machine off" -msgstr "Macchina off" +#: tcl/tooledit.tcl:544 +msgid "Warning: File changed by another process" +msgstr "" -#: tcl/tklinuxcnc.tcl:826 src/emc/usr_intf/touchy/touchy.glade:1561 -msgid "Manual" -msgstr "Manuale" +#: tcl/tooledit.tcl:545 +msgid "Warning: File deleted by another process" +msgstr "" -#: tcl/tklinuxcnc.tcl:835 -msgid "Mist on" -msgstr "Aria on" +#: tcl/tooledit.tcl:546 +#, fuzzy +msgid "Added Tool" +msgstr "Aggiungere Utensile Extra" -#: tcl/tklinuxcnc.tcl:836 -msgid "Mist off" -msgstr "Aria off" +#: tcl/tooledit.tcl:550 +#, tcl-format +msgid "Sorted by %s, increasing" +msgstr "" -#: tcl/tklinuxcnc.tcl:843 -msgid "Flood on" -msgstr "Refrigerante on" +#: tcl/tooledit.tcl:551 +#, tcl-format +msgid "Sorted by %s, decreasing" +msgstr "" -#: tcl/tklinuxcnc.tcl:844 -msgid "Flood off" -msgstr "Refrigerante off" +#: tcl/tooledit.tcl:593 +msgid "Added" +msgstr "" -#: tcl/tklinuxcnc.tcl:851 -msgid "Lube on" -msgstr "Lubrificante on" +#: tcl/tooledit.tcl:802 +#, tcl-format +msgid "Tool %s, Column %s, parameter %s is not a number" +msgstr "" -#: tcl/tklinuxcnc.tcl:852 -msgid "Lube off" -msgstr "Lubrificante off" +#: tcl/tooledit.tcl:811 +#, tcl-format +msgid "Tool %s, parameter %s must be nonnegative integer" +msgstr "" -#: tcl/tklinuxcnc.tcl:869 -msgid "Spindle forward" -msgstr "Mandrino avanti" +#: tcl/tooledit.tcl:819 +#, tcl-format +msgid "Tool %s: must be 0..9 integer" +msgstr "" -#: tcl/tklinuxcnc.tcl:870 -msgid "Spindle reverse" -msgstr "Mandrino indietro" +#: tcl/tooledit.tcl:826 +#, fuzzy, tcl-format +msgid "Tool %s: <%s> must be between -360 and 360" +msgstr "MOTION: num_dio vale %d, deve essere tra 1 e %d\n" -#: tcl/tklinuxcnc.tcl:885 -msgid "Brake on" -msgstr "Freno on" +#: tcl/tooledit.tcl:842 +#, tcl-format +msgid "Pocket <%s> specified multiple times" +msgstr "" -#: tcl/tklinuxcnc.tcl:886 -msgid "Brake off" -msgstr "Freno off" +#: tcl/tooledit.tcl:857 +#, tcl-format +msgid "Tool <%s> specified multiple times" +msgstr "" -#: tcl/tklinuxcnc.tcl:907 -msgid "Offset:" -msgstr "Offset:" +#: tcl/tooledit.tcl:902 +#, fuzzy +msgid "File Modified" +msgstr "Modificato..." -#: tcl/tklinuxcnc.tcl:913 -msgid "Work Offsets:" -msgstr "Offset di lavoro:" +#: tcl/tooledit.tcl:903 +msgid "Save Modifications to File?" +msgstr "" -#: tcl/tklinuxcnc.tcl:1233 -msgid "relative" -msgstr "relativo" +#: tcl/tooledit.tcl:930 +#, tcl-format +msgid "" +"Only these columns are currently used:\n" +"\n" +" %s" +msgstr "" -#: tcl/tklinuxcnc.tcl:1234 -msgid "machine" -msgstr "macchina" +#: tcl/tooledit.tcl:931 +msgid "Limit display to these columns by specifying" +msgstr "" -#: tcl/tklinuxcnc.tcl:1236 -msgid "actual" -msgstr "attuale" +#: tcl/tooledit.tcl:933 +#, fuzzy +msgid "Format for ini file is" +msgstr "impossibile aprire file ini '%s' " -#: tcl/tklinuxcnc.tcl:1237 -msgid "commanded" -msgstr "comandato" +#: tcl/tooledit.tcl:935 +msgid "For standalone use, invoke as" +msgstr "" -#: tcl/tklinuxcnc.tcl:1239 -msgid "joint" -msgstr "articolazione" +#: tcl/tooledit.tcl:936 +#, fuzzy +msgid "tool_table_filename" +msgstr "File postambolo" -#: tcl/tklinuxcnc.tcl:1240 -msgid "world" -msgstr "globale" +#: tcl/tooledit.tcl:956 +#, fuzzy, tcl-format +msgid "Created by %s" +msgstr "Crea Feature" -#: tcl/tklinuxcnc.tcl:1333 -msgid "Axis Offset" -msgstr "Offset asse" +#: tcl/tooledit.tcl:957 +msgid "Saved geometry (updated on program termination)" +msgstr "" -#: tcl/tklinuxcnc.tcl:1335 -msgid "Set axis value:" -msgstr "Imposta valore asse:" +#: tcl/tooledit.tcl:980 +#, tcl-format +msgid "" +"%s: Axis inifile specifies multiple inifile items for: [EMCIO]TOOL_TABLE" +msgstr "" -#: tcl/tklinuxcnc.tcl:1429 -msgid "Set Feed Override" -msgstr "Imposta Incr. Avanzamento" +#: tcl/tooledit.tcl:981 +#, tcl-format +msgid "%s: Using: %s" +msgstr "" -#: tcl/tklinuxcnc.tcl:1435 -msgid "Set feed override:" -msgstr "Imposta incr. avanzamento:" +#: tcl/tooledit.tcl:990 +#, tcl-format +msgid "" +"%s: Warning: Axis is running but the tool table file <%s> \n" +"differs from the standalone startup file <%s>" +msgstr "" -#: tcl/tklinuxcnc.tcl:1460 -msgid "Set Spindle Override" -msgstr "Imposta Incr. Mandrino" +#: tcl/tooledit.tcl:1004 +msgid "Must be On and Idle to reload tool table" +msgstr "" -#: tcl/tklinuxcnc.tcl:1466 -msgid "Set spindle speed override:" -msgstr "Imposta superamento velocità mandrino:" +#: tcl/tooledit.tcl:1093 +msgid "Usage" +msgstr "" -#: tcl/tklinuxcnc.tcl:1521 -msgid "Linear Jog Speed" -msgstr "Velocità lineare jog" +#: tcl/tooledit.tcl:1094 tcl/tooledit.tcl:1095 +#, fuzzy +msgid "filename" +msgstr "Nomefile:" -#: tcl/tklinuxcnc.tcl:1552 -msgid "Angular Jog Speed (deg)/min:" -msgstr "Velocità Angolare Jog (gradi)/min" +#: tcl/tooledit.tcl:1096 +#, tcl-format +msgid "Allowed column_ names are: %s" +msgstr "" -#: tcl/tklinuxcnc.tcl:1596 -msgid "Spindle speed Override:" -msgstr "Superamento velocità Mandrino:" +#: tcl/tooledit.tcl:1106 +#, fuzzy +msgid "Missing filename" +msgstr "Parametri mancanti " -#: tcl/tklinuxcnc.tcl:1642 -msgid "Program: " -msgstr "Programma: " +#: src/emc/usr_intf/axis/scripts/axis.py:183 +msgid "Emergency stop" +msgstr "Stop emergenza" -#: tcl/tklinuxcnc.tcl:1647 -msgid " - Status: " -msgstr " - Stato: " +#: src/emc/usr_intf/axis/scripts/axis.py:184 +msgid "Turn machine on" +msgstr "Macchina on" -#: tcl/tklinuxcnc.tcl:1663 -msgid "Optional Stop" -msgstr "Stop Opzionale" +#: src/emc/usr_intf/axis/scripts/axis.py:186 +msgid "Activate first axis" +msgstr "Attiva asse 1" -#: tcl/tklinuxcnc.tcl:2010 -msgid "Error" -msgstr "Errore" +#: src/emc/usr_intf/axis/scripts/axis.py:187 +msgid "Activate second axis" +msgstr "Attiva asse 2" -#: tcl/tklinuxcnc.tcl:2070 tcl/ngcgui_ttt.tcl:46 -msgid "Set Font" -msgstr "Imposta font" +#: src/emc/usr_intf/axis/scripts/axis.py:188 +msgid "Activate third axis" +msgstr "Attiva asse 3" -#: tcl/tklinuxcnc.tcl:2079 tcl/ngcgui_ttt.tcl:283 -msgid "Font" -msgstr "Font" +#: src/emc/usr_intf/axis/scripts/axis.py:189 +msgid "Activate fourth axis" +msgstr "Attiva asse 4" -#: tcl/tklinuxcnc.tcl:2086 -msgid "Size" -msgstr "Dimensione" +#: src/emc/usr_intf/axis/scripts/axis.py:190 +msgid "Activate fifth through ninth axis" +msgstr "Attiva asse dal 5 fino al 9" -#: tcl/tklinuxcnc.tcl:2093 -msgid "Style" -msgstr "Stile" +#: src/emc/usr_intf/axis/scripts/axis.py:191 +msgid "Set Feed Override from 0% to 100%" +msgstr "Imposta Incr. Avanzamento da 0% al 100%" -#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:1916 -msgid "ESTOP" -msgstr "ESTOP" +#: src/emc/usr_intf/axis/scripts/axis.py:192 +msgid ", and ." +msgstr ", e ." -#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2840 share/axis/tcl/axis.tcl:1918 -msgid "ON" -msgstr "ON" +#: src/emc/usr_intf/axis/scripts/axis.py:192 +msgid "Select jog speed" +msgstr "Imposta velocità jog:" -#: tcl/tklinuxcnc.tcl:2290 -msgid "LUBE ON" -msgstr "LUBRIFICANTE ON" +#: src/emc/usr_intf/axis/scripts/axis.py:193 +msgid "< and >" +msgstr "< e >" -#: tcl/tklinuxcnc.tcl:2292 -msgid "LUBE OFF" -msgstr "LUBRIFICANTE OFF" +#: src/emc/usr_intf/axis/scripts/axis.py:193 +msgid "Select angular jog speed" +msgstr "Imposta velocità angolare jog" -#: tcl/tklinuxcnc.tcl:2294 -msgid "LUBE ?" -msgstr "LUBRIFICANTE ?" +#: src/emc/usr_intf/axis/scripts/axis.py:194 +msgid "I, Shift-I" +msgstr "I, Maiusc-I" -#: tcl/scripts/Set_Coordinates.tcl:23 -msgid "LinuxCNC Set Coordinate" -msgstr "Imposta Coordinate LinuxCNC" +#: src/emc/usr_intf/axis/scripts/axis.py:194 share/axis/tcl/axis.tcl:2481 +msgid "Select jog increment" +msgstr "Selezione incremento movimento" -#: tcl/scripts/Set_Coordinates.tcl:26 -msgid "Coordinate System Control Window" -msgstr "Finestra Controllo Sistema Coordinate" +#: src/emc/usr_intf/axis/scripts/axis.py:195 +msgid "Continuous jog" +msgstr "Continuo" -#: tcl/scripts/Set_Coordinates.tcl:81 -msgid "Var # " -msgstr "Var # " +#: src/emc/usr_intf/axis/scripts/axis.py:196 +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Home" +msgstr "Origine" -#: tcl/scripts/Set_Coordinates.tcl:82 -msgid "Offset Value " -msgstr "Valore Offset:" +#: src/emc/usr_intf/axis/scripts/axis.py:196 +msgid "Send active axis home" +msgstr "Porta asse attivo alla posizione zero" -#: tcl/scripts/Set_Coordinates.tcl:83 -msgid "What to Teach" -msgstr "What to Teach" +#: src/emc/usr_intf/axis/scripts/axis.py:197 +msgid "Ctrl-Home" +msgstr "Ctrl-Home" -#: tcl/scripts/Set_Coordinates.tcl:101 -msgid "Set Old" -msgstr "Imposta Precedente" +#: src/emc/usr_intf/axis/scripts/axis.py:197 +msgid "Home all axes" +msgstr "Azzera tutti gli assi" -#: tcl/scripts/Set_Coordinates.tcl:102 -msgid "Set Zero" -msgstr "Imposta Zero" +#: src/emc/usr_intf/axis/scripts/axis.py:198 +msgid "Shift-Home" +msgstr "Maiusc-Home" -#: tcl/scripts/Set_Coordinates.tcl:104 -msgid "Write" -msgstr "Scrivi" +#: src/emc/usr_intf/axis/scripts/axis.py:198 +msgid "Zero G54 offset for active axis" +msgstr "Azzera posizione G54 per asse corrente" -#: tcl/ngcgui.tcl:467 -msgid "Need non-null file name" -msgstr "Necessario nome file non nullo" +#: src/emc/usr_intf/axis/scripts/axis.py:199 +msgid "End" +msgstr "Fine" -#: tcl/ngcgui.tcl:543 -msgid "Disallowed use of ngcgui generated file as Subfile" -msgstr "Disabilitato uso di file ngcgui generato come Subfile" +#: src/emc/usr_intf/axis/scripts/axis.py:199 +msgid "Set G54 offset for active axis" +msgstr "Imposta posizione offset G54 per asse corrente" -#: tcl/ngcgui.tcl:549 -msgid "" -"marked (not_a_subfile)\n" -"Not intended for use as a subfile" -msgstr "" -"marcato (non_un_subfile)\n" -"Non inteso per uso come subfile" +#: src/emc/usr_intf/axis/scripts/axis.py:200 +msgid "Jog active axis" +msgstr "Muove asse attivo" -#: tcl/ngcgui.tcl:564 -msgid "Multiple subroutines in file not allowed" -msgstr "Subroutine multiple nel file non consentite" +#: src/emc/usr_intf/axis/scripts/axis.py:203 +msgid "Left, Right" +msgstr "Sinistra, Destra" -#: tcl/ngcgui.tcl:573 tcl/ngcgui.tcl:595 tcl/ngcgui.tcl:608 tcl/ngcgui.tcl:650 -#: tcl/ngcgui.tcl:755 -msgid "bogus" -msgstr "finto" +#: src/emc/usr_intf/axis/scripts/axis.py:203 +msgid "Jog first axis" +msgstr "Muovi asse 1" -#: tcl/ngcgui.tcl:575 -msgid "sub label" -msgstr "sub etichetta" +#: src/emc/usr_intf/axis/scripts/axis.py:204 +msgid "Up, Down" +msgstr "Su, Giù" -#: tcl/ngcgui.tcl:575 tcl/ngcgui.tcl:652 -msgid "does not match subroutine file name" -msgstr "non coincide con il nome file subroutine" +#: src/emc/usr_intf/axis/scripts/axis.py:204 +msgid "Jog second axis" +msgstr "Muovi asse 2" -#: tcl/ngcgui.tcl:590 tcl/ngcgui.tcl:591 -msgid "ignoring M2 after endsub" -msgstr "M2 ignorato dopo endsub" +#: src/emc/usr_intf/axis/scripts/axis.py:205 +msgid "Pg Up, Pg Dn" +msgstr "Pag-Su, Pag-Giù" -#: tcl/ngcgui.tcl:596 -msgid "file contains lines after subend" -msgstr "Il file contiene line dopo endsub" +#: src/emc/usr_intf/axis/scripts/axis.py:205 +msgid "Jog third axis" +msgstr "Muovi asse 3" -#: tcl/ngcgui.tcl:609 -msgid "file contains lines before sub" -msgstr "file contiene linee prima di sub" +#: src/emc/usr_intf/axis/scripts/axis.py:206 +msgid "Shift+above jogs" +msgstr "Maiusc+Jogs precedente" -#: tcl/ngcgui.tcl:652 -msgid "endsub label" -msgstr "etichetta endsub" +#: src/emc/usr_intf/axis/scripts/axis.py:206 +msgid "Jog at traverse speed" +msgstr "Jog alla velocità di attraversamento" -#: tcl/ngcgui.tcl:757 -msgid "out of sequence positional parameter" -msgstr "parametro posizionale fuori sequenza" +#: src/emc/usr_intf/axis/scripts/axis.py:207 +msgid "Jog fourth axis" +msgstr "Muovi asse 4" -#: tcl/ngcgui.tcl:757 -msgid "expected" -msgstr "atteso" +#: src/emc/usr_intf/axis/scripts/axis.py:210 +msgid "Toggle between Drag and Rotate mode" +msgstr "Scambia tra il modo Trascina e Ruota" -#: tcl/ngcgui.tcl:817 -msgid "toomany" -msgstr "troppi" +#: src/emc/usr_intf/axis/scripts/axis.py:211 +msgid "Left Button" +msgstr "Tasto sinistro" -#: tcl/ngcgui.tcl:868 -msgid "no sub found in file" -msgstr "Nessun sub presente nel file" +#: src/emc/usr_intf/axis/scripts/axis.py:211 +msgid "Pan, rotate or select line" +msgstr "Sposta, ruota o seleziona linea" -#: tcl/ngcgui.tcl:871 -msgid "no endsub found in file" -msgstr "Nessun endsub presente nel file" +#: src/emc/usr_intf/axis/scripts/axis.py:212 +msgid "Shift+Left Button" +msgstr "Maiusc+Tasto sinistro" -#: tcl/ngcgui.tcl:961 -msgid "Choose Files" -msgstr "Scegli files" +#: src/emc/usr_intf/axis/scripts/axis.py:212 +msgid "Rotate or pan" +msgstr "Ruota o trascina" -#: tcl/ngcgui.tcl:1100 -msgid "Controls" -msgstr "Controlli" +#: src/emc/usr_intf/axis/scripts/axis.py:213 +msgid "Right Button" +msgstr "Tasto destro" -#: tcl/ngcgui.tcl:1109 -msgid "Preamble" -msgstr "Preambolo" +#: src/emc/usr_intf/axis/scripts/axis.py:213 +#: src/emc/usr_intf/axis/scripts/axis.py:215 +#: src/emc/usr_intf/axis/scripts/axis.py:216 +msgid "Zoom view" +msgstr "Visualizza zoom" -#: tcl/ngcgui.tcl:1122 -msgid "Subfile" -msgstr "Subfile" +#: src/emc/usr_intf/axis/scripts/axis.py:214 +msgid "Wheel Button" +msgstr "Tasto Rotella mouse" -#: tcl/ngcgui.tcl:1134 -msgid "Postamble" -msgstr "Postambolo" +#: src/emc/usr_intf/axis/scripts/axis.py:214 +msgid "Rotate view" +msgstr "Ruota vista" -#: tcl/ngcgui.tcl:1151 -msgid "Retain values on Subfile read" -msgstr "Mantiene valori su lettura Subfile" +#: src/emc/usr_intf/axis/scripts/axis.py:215 +msgid "Rotate Wheel" +msgstr "Rotella mouse" -#: tcl/ngcgui.tcl:1159 -msgid "Expand subroutine" -msgstr "Espandi subroutine" +#: src/emc/usr_intf/axis/scripts/axis.py:216 +msgid "Control+Left Button" +msgstr "Control+Bottone sinistro" -#: tcl/ngcgui.tcl:1168 tcl/ngcgui.tcl:2414 -msgid "Autosend" -msgstr "Autosend" +#: src/emc/usr_intf/axis/scripts/axis.py:219 +msgid "Manual control" +msgstr "Controllo Manuale" -#: tcl/ngcgui.tcl:1178 -msgid "Verbose ngcfile" -msgstr "Verbose ngcfile" +#: src/emc/usr_intf/axis/scripts/axis.py:220 +msgid "Code entry (MDI)" +msgstr "Comandi manuali (MDI)" -#: tcl/ngcgui.tcl:1188 tcl/ngcgui.tcl:2235 tcl/ngcgui.tcl:2259 -#: tcl/ngcgui.tcl:2289 -msgid "Create Feature" -msgstr "Crea Feature" +#: src/emc/usr_intf/axis/scripts/axis.py:221 +msgid "Control-M" +msgstr "Control-M" -#: tcl/ngcgui.tcl:1194 tcl/ngcgui.tcl:2919 -msgid "MakeFile" -msgstr "MakeFile" +#: src/emc/usr_intf/axis/scripts/axis.py:221 +msgid "Clear MDI history" +msgstr "Cancella storia MDI" -#: tcl/ngcgui.tcl:1195 tcl/ngcgui.tcl:2916 -msgid "Finalize" -msgstr "Finalizza" +#: src/emc/usr_intf/axis/scripts/axis.py:222 +msgid "Control-H" +msgstr "Control-H" -#: tcl/ngcgui.tcl:1212 -msgid "Reread" -msgstr "Riletto" +#: src/emc/usr_intf/axis/scripts/axis.py:222 +msgid "Copy selected MDI history elements" +msgstr "Copia storia MDI elementi selezionati" -#: tcl/ngcgui.tcl:1231 -msgid "SendFileToAxis" -msgstr "MandaFileAdAXis" +#: src/emc/usr_intf/axis/scripts/axis.py:223 +msgid "to clipboard" +msgstr "verso Appunti" -#: tcl/ngcgui.tcl:1274 -msgid "Unrecoverable problem" -msgstr "Problema irrecuperabile" +#: src/emc/usr_intf/axis/scripts/axis.py:224 +msgid "Control-Shift-H" +msgstr "Control-Maiusc-H" -#: tcl/ngcgui.tcl:1374 -msgid "Postamble file" -msgstr "File postambolo" +#: src/emc/usr_intf/axis/scripts/axis.py:224 +msgid "Paste clipboard to MDI history" +msgstr "Copia Appunti alla storia MDI" -#: tcl/ngcgui.tcl:1424 -msgid "Subroutine file" -msgstr "File Subroutine" +#: src/emc/usr_intf/axis/scripts/axis.py:225 share/axis/tcl/axis.tcl:1183 +#: src/emc/usr_intf/touchy/touchy.glade:508 +msgid "Override Limits" +msgstr "Superamento Limiti" -#: tcl/ngcgui.tcl:1482 -msgid "Positional Parameters" -msgstr "Parametri Posizionali" +#: src/emc/usr_intf/axis/scripts/axis.py:227 +msgid "Open program" +msgstr "Apri programma" -#: tcl/ngcgui.tcl:1587 -msgid "_Globals" -msgstr "_Globali" +#: src/emc/usr_intf/axis/scripts/axis.py:228 +msgid "Control-R" +msgstr "Control-R" -#: tcl/ngcgui.tcl:1690 -msgid "No Subfile specified" -msgstr "Nessun Subfile specificato" +#: src/emc/usr_intf/axis/scripts/axis.py:228 +msgid "Reload program" +msgstr "Ricarica programma" -#: tcl/ngcgui.tcl:1692 -msgid "No parameters yet" -msgstr "Nessun parametro fornito" +#: src/emc/usr_intf/axis/scripts/axis.py:229 +msgid "Control-S" +msgstr "Control-S" -#: tcl/ngcgui.tcl:1701 -msgid "Missing value for parm" -msgstr "Valori mancanti per parametri" +#: src/emc/usr_intf/axis/scripts/axis.py:229 +msgid "Save g-code as" +msgstr "Salva G-code con nome" -#: tcl/ngcgui.tcl:1735 -msgid "Output file" -msgstr "Output file" +#: src/emc/usr_intf/axis/scripts/axis.py:230 +msgid "Run program" +msgstr "Avvio Programma" -#: tcl/ngcgui.tcl:1827 -msgid "Positional parameters for" -msgstr "Parametro posizionale per" +#: src/emc/usr_intf/axis/scripts/axis.py:231 +msgid "Step program" +msgstr "Esegui una riga per volta" -#: tcl/ngcgui.tcl:1835 -msgid "expanded file" -msgstr "File espanso" +#: src/emc/usr_intf/axis/scripts/axis.py:232 +msgid "Pause program" +msgstr "Pausa Programma" -#: tcl/ngcgui.tcl:1849 -msgid "call subroutine file" -msgstr "chima file subroutine" +#: src/emc/usr_intf/axis/scripts/axis.py:233 +msgid "Resume program" +msgstr "Riprende programma" -#: tcl/ngcgui.tcl:1919 -msgid "Multiple Tabs with Features" -msgstr "Tabs Multipli con Features" +#: src/emc/usr_intf/axis/scripts/axis.py:234 +msgid "Stop running program, or" +msgstr "Ferma programma in esecuzione, oppure" -#: tcl/ngcgui.tcl:1920 -msgid "Finalize all Tabs?" -msgstr "Finalizzare tutti i Tabs?" +#: src/emc/usr_intf/axis/scripts/axis.py:235 +msgid "stop loading program preview" +msgstr "ferma caricamento preview programma" -#: tcl/ngcgui.tcl:1920 -msgid "Order" -msgstr "Ordine" +#: src/emc/usr_intf/axis/scripts/axis.py:237 +msgid "Toggle mist" +msgstr "Aria ON/OFF" -#: tcl/ngcgui.tcl:1922 -msgid "No, just this page" -msgstr "No, solo questa pagina" +#: src/emc/usr_intf/axis/scripts/axis.py:238 +msgid "Toggle flood" +msgstr "Refrigerante ON/OFF" -#: tcl/ngcgui.tcl:1936 -msgid "Axis is not responding" -msgstr "Axis non risponde" +#: src/emc/usr_intf/axis/scripts/axis.py:239 +msgid "Spindle brake off" +msgstr "Freno mandrino off" -#: tcl/ngcgui.tcl:1937 -msgid "Error: " -msgstr "Errore:" +#: src/emc/usr_intf/axis/scripts/axis.py:240 +msgid "Shift-B" +msgstr "Maiusc-B" -#: tcl/ngcgui.tcl:1939 -msgid "Autosend disabled, Ctrl-A toggles autosend" -msgstr "Autosend disabilitato, Ctrl-A scambia autosend" +#: src/emc/usr_intf/axis/scripts/axis.py:240 +msgid "Spindle brake on" +msgstr "Freno mandrino on" -#: tcl/ngcgui.tcl:1941 -msgid "File saving enabled -- Finalize to save" -msgstr "Salvataggio file abilitato -- Finalizzare per salvare" +#: src/emc/usr_intf/axis/scripts/axis.py:241 +msgid "Turn spindle clockwise" +msgstr "Rotazione mandrino oraria" -#: tcl/ngcgui.tcl:1957 -msgid "Require .ngc suffix for filename" -msgstr "Richiesto suffisso .ngc per il nome del file" +#: src/emc/usr_intf/axis/scripts/axis.py:242 +msgid "Turn spindle counterclockwise" +msgstr "Rotazione mandrinoantioraria" -#: tcl/ngcgui.tcl:1967 -msgid "Disallowed overwrite of" -msgstr "Disabilitata sovrascrittura di" +#: src/emc/usr_intf/axis/scripts/axis.py:243 +msgid "Turn spindle more slowly" +msgstr "Diminuisci velocità mandrino" -#: tcl/ngcgui.tcl:1986 -msgid "FEATURE" -msgstr "FEATURE" +#: src/emc/usr_intf/axis/scripts/axis.py:244 +msgid "Turn spindle more quickly" +msgstr "Aumenta velocità mandrino" -#: tcl/ngcgui.tcl:1993 -msgid "feature line added" -msgstr "feature line aggiunta" +#: src/emc/usr_intf/axis/scripts/axis.py:246 +msgid "Control-K" +msgstr "Control-K" -#: tcl/ngcgui.tcl:2002 -msgid "line added" -msgstr "aggiunta linea" +#: src/emc/usr_intf/axis/scripts/axis.py:246 +msgid "Clear live plot" +msgstr "Cancella plot grafico" -#: tcl/ngcgui.tcl:2002 -msgid "activated" -msgstr "attivato" +#: src/emc/usr_intf/axis/scripts/axis.py:247 +msgid "Cycle among preset views" +msgstr "Commuta tra le viste preselezionate" -#: tcl/ngcgui.tcl:2004 -msgid "restores" -msgstr "richiamato" +#: src/emc/usr_intf/axis/scripts/axis.py:248 +msgid "Cycle among preview, DRO, and user tabs" +msgstr "Commuta tra la viste, DRO e cartella utente" -#: tcl/ngcgui.tcl:2041 -msgid "NOTREACHED mode" -msgstr "modo NOTREACHED " +#: src/emc/usr_intf/axis/scripts/axis.py:250 +msgid "Ctrl-Space" +msgstr "Ctrl-Spazio" -#: tcl/ngcgui.tcl:2236 -msgid "Enter parms for 1st feature" -msgstr "Entra parametri per la 1a feature" +#: src/emc/usr_intf/axis/scripts/axis.py:250 +msgid "Clear notifications" +msgstr "Elimina notifiche" -#: tcl/ngcgui.tcl:2243 -msgid "New Outfile" -msgstr "Nuovo OutFile" +#: src/emc/usr_intf/axis/scripts/axis.py:850 +#, python-format +msgid "Unknown tool %d" +msgstr "Utensile %d sconosciuto" -#: tcl/ngcgui.tcl:2245 -msgid "Ready to make New Outfile" -msgstr "Pronto a creare Nuovo Outfile" +#: src/emc/usr_intf/axis/scripts/axis.py:852 +msgid "No tool" +msgstr "Utensile assente" -#: tcl/ngcgui.tcl:2262 tcl/ngcgui.tcl:2295 -msgid "Enter parms for feature " -msgstr "Inserisci parametri per feature " +#: src/emc/usr_intf/axis/scripts/axis.py:854 +#, python-format +msgid "Tool %(tool)d, offset %(zo)g, diameter %(dia)g" +msgstr "Utensile %(tool)d, offset %(zo)g, diametro %(dia)g" -#: tcl/ngcgui.tcl:2282 -msgid "feature" -msgstr "feature" +#: src/emc/usr_intf/axis/scripts/axis.py:856 +#, python-format +msgid "Tool %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" +msgstr "Utensile %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" -#: tcl/ngcgui.tcl:2287 -msgid "Create Next" -msgstr "Crea Successivo" +#: src/emc/usr_intf/axis/scripts/axis.py:1031 +msgid "Filtering..." +msgstr "Filtraggio..." -#: tcl/ngcgui.tcl:2292 -msgid "Created feature " -msgstr "Crea Feature" +#: src/emc/usr_intf/axis/scripts/axis.py:1102 +msgid "Filter failed" +msgstr "Filtro fallito" -#: tcl/ngcgui.tcl:2316 -msgid "option" -msgstr "opzione" +#: src/emc/usr_intf/axis/scripts/axis.py:1103 +#, python-format +msgid "" +"The program %(program)r exited with code %(code)d. Any error messages it " +"produced are shown below:" +msgstr "" +"Il programma %(program)r termina con codice %(code)d. Ogni messaggio di " +"errore prodotto è mostrato sotto:" -#: tcl/ngcgui.tcl:2327 -msgid "Missing parameters" -msgstr "Parametri mancanti " +#: src/emc/usr_intf/axis/scripts/axis.py:1171 +#, python-format +msgid "G-Code error in %s" +msgstr "Errore codice G in %s" -#: tcl/ngcgui.tcl:2331 -msgid "Parse Error" -msgstr "Errore interpretazione" +#: src/emc/usr_intf/axis/scripts/axis.py:1172 +#, python-format +msgid "" +"Near line %(seq)d of %(f)s:\n" +"%(error_str)s" +msgstr "" +"Vicino la linea %(seq)d di %(f)s:\n" +"%(error_str)s" -#: tcl/ngcgui.tcl:2338 -msgid "Null Preamble" -msgstr "Preambolo Nullo" +#: src/emc/usr_intf/axis/scripts/axis.py:1341 +#: src/emc/usr_intf/axis/scripts/axis.py:2942 share/axis/tcl/axis.tcl:1162 +#: share/axis/tcl/axis.tcl:1164 share/axis/tcl/axis.tcl:2269 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:895 +msgid "Continuous" +msgstr "Continuo" -#: tcl/ngcgui.tcl:2343 -msgid "Read Preamble" -msgstr "Legge Preamble" +#: src/emc/usr_intf/axis/scripts/axis.py:1452 +msgid "Ok" +msgstr "Ok" -#: tcl/ngcgui.tcl:2347 -msgid "Preamble Error" -msgstr "Errore Preambolo " +#: src/emc/usr_intf/axis/scripts/axis.py:1599 +msgid "T Tool Table" +msgstr "T Tabella Utensile" -#: tcl/ngcgui.tcl:2352 -msgid "Null Postamble" -msgstr "Postambolo Nullo " +#: src/emc/usr_intf/axis/scripts/axis.py:1610 +#: src/emc/usr_intf/axis/scripts/axis.py:1859 +#: src/emc/usr_intf/axis/scripts/axis.py:2387 +#: src/emc/usr_intf/stepconf/stepconf.py:1328 +#: src/emc/usr_intf/stepconf/pages.py:631 +msgid "in" +msgstr "in" -#: tcl/ngcgui.tcl:2357 -msgid "Read Postamble" -msgstr "Legge Postambolo" +#: src/emc/usr_intf/axis/scripts/axis.py:1613 +msgid " radius" +msgstr " raggio" -#: tcl/ngcgui.tcl:2361 -msgid "Postamble Error" -msgstr "Errore Postambolo " +#: src/emc/usr_intf/axis/scripts/axis.py:1615 +msgid " diameter" +msgstr " diametro" -#: tcl/ngcgui.tcl:2366 -msgid "Read Subfile" -msgstr "Legge Subfile" +#: src/emc/usr_intf/axis/scripts/axis.py:1616 +msgid "°" +msgstr "°" -#: tcl/ngcgui.tcl:2371 -msgid "Write Error" -msgstr "Errore Scrittura" +#: src/emc/usr_intf/axis/scripts/axis.py:1625 +msgid "Coordinate System:" +msgstr "Sistema Coordinate:" -#: tcl/ngcgui.tcl:2375 -msgid "Outfile set" -msgstr "Outfile set" +#: src/emc/usr_intf/axis/scripts/axis.py:1641 +msgid "fixture" +msgstr "Fissaggio" -#: tcl/ngcgui.tcl:2380 -msgid "Finished" -msgstr "Finito" +#: src/emc/usr_intf/axis/scripts/axis.py:1642 +msgid "workpiece" +msgstr "Pezzo" -#: tcl/ngcgui.tcl:2385 -msgid "Canceled" -msgstr "Cancellato" +#: src/emc/usr_intf/axis/scripts/axis.py:1658 +msgid "Name:" +msgstr "Nome:" -#: tcl/ngcgui.tcl:2391 -msgid "Sent" -msgstr "Mandato" +#: src/emc/usr_intf/axis/scripts/axis.py:1658 +msgid "Size:" +msgstr "Dimensione:" -#: tcl/ngcgui.tcl:2395 -msgid "SendFileToAxis failed" -msgstr "SendFileToAxis fallito" +#: src/emc/usr_intf/axis/scripts/axis.py:1659 +msgid "Tool order:" +msgstr "Ordine utensile:" -#: tcl/ngcgui.tcl:2399 -msgid "Ctrl-k for Key bindings" -msgstr "Ctrl-k per Gestione Tasti" +#: src/emc/usr_intf/axis/scripts/axis.py:1659 +msgid "Rapid distance:" +msgstr "Distanza rapido:" -#: tcl/ngcgui.tcl:2403 -msgid "Expand sub" -msgstr "Espandi Sub" +#: src/emc/usr_intf/axis/scripts/axis.py:1660 +msgid "Feed distance:" +msgstr "Distanza di lavoro:" -#: tcl/ngcgui.tcl:2407 -msgid "Retain values" -msgstr "Mantieni valori" +#: src/emc/usr_intf/axis/scripts/axis.py:1660 +msgid "Total distance:" +msgstr "Distanza totale:" -#: tcl/ngcgui.tcl:2411 -msgid "Verbose" -msgstr "Verbose" +#: src/emc/usr_intf/axis/scripts/axis.py:1661 +msgid "Run time:" +msgstr "Tempo lavorazione:" -#: tcl/ngcgui.tcl:2417 -msgid "Finalize Canceled" -msgstr "Finalizazzione Cancellata" +#: src/emc/usr_intf/axis/scripts/axis.py:1661 +msgid "X bounds:" +msgstr "Limiti X:" -#: tcl/ngcgui.tcl:2572 tcl/ngcgui.tcl:2728 -msgid "Dismiss" -msgstr "Eliminato" +#: src/emc/usr_intf/axis/scripts/axis.py:1662 +msgid "Y bounds:" +msgstr "Limiti Y:" -#: tcl/ngcgui.tcl:2577 -msgid "ngcgui Error" -msgstr "Errore ngcgui " +#: src/emc/usr_intf/axis/scripts/axis.py:1662 +msgid "Z bounds:" +msgstr "Limiti Z:" -#: tcl/ngcgui.tcl:2600 -msgid "Declining support for tk send bug in ngcgui" -msgstr "Declina supporto per l'invio di bug tk in ngcgui" +#: src/emc/usr_intf/axis/scripts/axis.py:1663 +msgid "A bounds:" +msgstr "Limiti A:" -#: tcl/ngcgui.tcl:2601 -msgid "You should upgrade linuxcnc to >= linuxcnc2.5" -msgstr "Bisogna aggiornare linuxcnc a >= linuxcnc2.5" +#: src/emc/usr_intf/axis/scripts/axis.py:1663 +msgid "B bounds:" +msgstr "Limiti B:" -#: tcl/ngcgui.tcl:2645 -msgid "pre2.4_send_file_to_axis:error" -msgstr "pre2.4_send_file_to_axis:errore" +#: src/emc/usr_intf/axis/scripts/axis.py:1664 +msgid "C bounds:" +msgstr "Limiti C:" -#: tcl/ngcgui.tcl:2839 share/axis/tcl/axis.tcl:1917 -msgid "OFF" -msgstr "OFF" +#: src/emc/usr_intf/axis/scripts/axis.py:1688 +#, python-format +msgid "Program exceeds machine minimum on axis %s" +msgstr "Il programma va oltre il limite inferiore sull'asse %s" -#: tcl/ngcgui.tcl:2842 -msgid "Toggle autosend" -msgstr "Autosend ON/OFF" +#: src/emc/usr_intf/axis/scripts/axis.py:1691 +#, python-format +msgid "Program exceeds machine maximum on axis %s" +msgstr "Il programma va oltre il limite superiore sull'asse %s" -#: tcl/ngcgui.tcl:2843 tcl/ngcgui.tcl:3057 -msgid "Clear entries" -msgstr "Elimina notifiche" +#: src/emc/usr_intf/axis/scripts/axis.py:1696 +msgid "Program exceeds machine limits" +msgstr "Il programma eccede i limiti macchina" -#: tcl/ngcgui.tcl:2844 -msgid "Set entries to default values" -msgstr "Imposta dati al valore iniziale" +#: src/emc/usr_intf/axis/scripts/axis.py:1699 +msgid "Run Anyway" +msgstr "Esegui comunque" -#: tcl/ngcgui.tcl:2845 tcl/ngcgui.tcl:2859 tcl/ngcgui.tcl:2861 -msgid "Open editor specified by" -msgstr "Apri editorr specificato da" +#: src/emc/usr_intf/axis/scripts/axis.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1581 +msgid "No file loaded" +msgstr "Nessun file caricato" -#: tcl/ngcgui.tcl:2846 -msgid "on last outfile" -msgstr "su ultimo outfile" +#: src/emc/usr_intf/axis/scripts/axis.py:1845 +#, python-format +msgid "generated from %s" +msgstr "generato da %s" -#: tcl/ngcgui.tcl:2847 -msgid "toggle expand subroutines" -msgstr "ON/OFF espansione subroutine" +#: src/emc/usr_intf/axis/scripts/axis.py:1851 +#, python-format +msgid "" +"%(size)s bytes\n" +"%(lines)s gcode lines" +msgstr "" +"%(size)s bytes\n" +"%(lines)s linee gcode" -#: tcl/ngcgui.tcl:2848 -msgid "Create feature" -msgstr "Crea feature" +#: src/emc/usr_intf/axis/scripts/axis.py:1877 +#, python-format +msgid "%.1f minutes" +msgstr "%.1f minuti" -#: tcl/ngcgui.tcl:2849 -msgid "Finalize (AUTO send is" -msgstr "Finalizza (AUTO inviato è" +#: src/emc/usr_intf/axis/scripts/axis.py:1879 +#, python-format +msgid "%d seconds" +msgstr "%d secondi" -#: tcl/ngcgui.tcl:2850 -msgid "Show key bindings" -msgstr "Mostra gestione tasti" +#: src/emc/usr_intf/axis/scripts/axis.py:1887 +#, python-format +msgid "%(a)f to %(b)f = %(diff)f %(units)s" +msgstr "%(a)f a %(b)f = %(diff)f %(units)s" -#: tcl/ngcgui.tcl:2851 -msgid "Restart (cancel pending)" -msgstr "Riavvio (cancellazione in sospeso)" +#: src/emc/usr_intf/axis/scripts/axis.py:1888 +msgid "G-Code Properties" +msgstr "Proprietà Codici G" -#: tcl/ngcgui.tcl:2852 -msgid "(re)Read Preamble" -msgstr "(ri)Legge Preambolo" +#: src/emc/usr_intf/axis/scripts/axis.py:2021 +msgid "All machinable files" +msgstr "Tutti i file di lavoro" -#: tcl/ngcgui.tcl:2853 -msgid "(re)Read Postamble" -msgstr "(ri)Legge Postambolo" +#: src/emc/usr_intf/axis/scripts/axis.py:2022 +#: src/emc/usr_intf/axis/scripts/axis.py:2659 +msgid "rs274ngc files" +msgstr "files rs274ngc" -#: tcl/ngcgui.tcl:2854 -msgid "(re)Read Subfile" -msgstr "(ri)Legge Subfile" +#: src/emc/usr_intf/axis/scripts/axis.py:2037 +msgid "axis cannot accept remote command while running" +msgstr "axis non può accettare comandi remoti durante il suo funzionamento" -#: tcl/ngcgui.tcl:2855 -msgid "toggle retain values" -msgstr "scambia valori salvati" +#: src/emc/usr_intf/axis/scripts/axis.py:2098 +#, fuzzy +msgid "File not Writable:" +msgstr "File non leggibile" -#: tcl/ngcgui.tcl:2856 -msgid "toggle output file verbosity" -msgstr "scambia verbosità file output " +#: src/emc/usr_intf/axis/scripts/axis.py:2099 +msgid "" +"This file is not writable\n" +"You can Edit-readonly\n" +"\n" +"or\n" +"\n" +"Save it to your own directory\n" +"then open that saved, writable file" +msgstr "" -#: tcl/ngcgui.tcl:2857 -msgid "Show status" -msgstr "Mostra Stato" +#: src/emc/usr_intf/axis/scripts/axis.py:2106 +msgid "Edit-readonly" +msgstr "" -#: tcl/ngcgui.tcl:2858 -msgid "Show full status (debug info)" -msgstr "Mostra stato completo (info debug)" +#: src/emc/usr_intf/axis/scripts/axis.py:2440 +msgid "Axis is already homed, are you sure you want to re-home?" +msgstr "Asse gia azzerato, sei sicuro che vuoi riazzerarlo?" -#: tcl/ngcgui.tcl:2860 -msgid "on current subfile" -msgstr "sul subfile corrente" +#: src/emc/usr_intf/axis/scripts/axis.py:2453 +msgid "This axis is already homed, are you sure you want to re-home?" +msgstr "Questo asse è gia azzerato, sei sicuro che vuoi riazzerarlo?" -#: tcl/ngcgui.tcl:2862 -msgid "on current preamble" -msgstr "sul preambolo corrente" +#: src/emc/usr_intf/axis/scripts/axis.py:2493 share/axis/tcl/axis.tcl:1178 +msgid "Touch Off" +msgstr "Contatto" -#: tcl/ngcgui.tcl:2865 -msgid " Escape Return to Preview page" -msgstr "Escape Torna alla pagina di Anteprima" +#: src/emc/usr_intf/axis/scripts/axis.py:2494 +#, python-format +msgid "Enter %s coordinate relative to %%s:" +msgstr "Inserire %s coordinate relative al %%s:" -#: tcl/ngcgui.tcl:2942 -msgid "Editing requires setting for environmental variable VISUAL" -msgstr "Modifica richiede impostazioni per la variabile di sistema VISUAL" +#: src/emc/usr_intf/axis/scripts/axis.py:2671 +msgid "Error saving file" +msgstr "Errore nel salvataggio file" -#: tcl/ngcgui.tcl:2943 -msgid "Trying gedit" -msgstr "Prova gedit" +#: src/emc/usr_intf/axis/scripts/axis.py:3077 +#: src/emc/usr_intf/touchy/touchy.glade:577 +#: src/emc/usr_intf/gscreen/gscreen.glade:2933 +msgid "Home All" +msgstr "Azzera tutto" -#: tcl/ngcgui.tcl:2955 -msgid "No file available for editing yet" -msgstr "Nessun file disponibile per la modifica" +#: src/emc/usr_intf/axis/scripts/axis.py:3079 +msgid "Home all axes [Ctrl-Home]" +msgstr "Azzera tutti gli assi [Ctrl-Home]" -#: tcl/ngcgui.tcl:2964 tcl/ngcgui.tcl:2973 -msgid "No file available for editing" -msgstr "Nessun file disponibile per la modifica" +#: src/emc/usr_intf/axis/scripts/axis.py:3082 +msgid "Home All Axes" +msgstr "Azzera tutti gli assi" -#: tcl/ngcgui.tcl:2990 -msgid "Status items" -msgstr "Stato elementi" +#: src/emc/usr_intf/axis/scripts/axis.py:3089 +msgid "Unhome All Axes" +msgstr "Dis-Azzera tutti gli assi" -#: tcl/ngcgui.tcl:3003 -msgid "All-page opt items" -msgstr "Opzione elemento Pagina intera" +#: src/emc/usr_intf/axis/scripts/axis.py:3113 +#, python-format +msgid "Home Axis _%s" +msgstr "Azzera Asse _%s" -#: tcl/ngcgui.tcl:3009 -msgid "any-items" -msgstr "ogni oggetto" +#: src/emc/usr_intf/axis/scripts/axis.py:3115 +#, python-format +msgid "Unhome Axis _%s" +msgstr "Dis-Azzera Asse _%s" -#: tcl/ngcgui.tcl:3046 -msgid "Set defaults" -msgstr "Imposta parametri iniziali" +#: src/emc/usr_intf/axis/scripts/axis.py:3282 +msgid "Run from here" +msgstr "Avvia da qui" -#: tcl/ngcgui.tcl:3125 -msgid "not writable" -msgstr "non scrivibile" +#: src/emc/usr_intf/axis/scripts/axis.py:3598 +msgid "Error in ~/.axisrc" +msgstr "Errore in ~/.axisrc" -#: tcl/ngcgui.tcl:3263 tcl/ngcgui.tcl:3443 -msgid "new" -msgstr "nuovo" +#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:102 +#, fuzzy +msgid "Machinekit Status" +msgstr "Unità Macchina:" -#: tcl/ngcgui.tcl:3288 -msgid "Open a new Subfile" -msgstr "Apri un Nuovo Subfile" +#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:118 +msgid "Copy All" +msgstr "Copia Tutto" -#: tcl/ngcgui.tcl:3434 -msgid "remove" -msgstr "rimuove" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 +#, python-format +msgid "Insert tool %d and click continue when ready" +msgstr "Inserire utensile %d e cliccare continua quando pronto" -#: tcl/ngcgui.tcl:3456 tcl/ngcgui.tcl:3462 -msgid "move" -msgstr "muove" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:39 +msgid "Remove the tool and click continue when ready" +msgstr "Rimuovere l'utensile e cliccare continua quando pronto" -#: tcl/ngcgui.tcl:3561 src/emc/usr_intf/pncconf/pncconf.py:7022 -#: src/emc/usr_intf/pncconf/pncconf.py:7139 -#: src/emc/usr_intf/pncconf/pncconf.py:7306 -msgid "Custom" -msgstr "Personale" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 +#: src/emc/usr_intf/touchy/mdi.py:49 src/emc/usr_intf/gscreen/mdi.py:49 +msgid "Tool change" +msgstr "Cambio utensile" -#: tcl/ngcgui.tcl:3587 -msgid "Problem creating page" -msgstr "Problema nella creazione della pagine" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 +msgid "Continue" +msgstr "Continuo" -#: tcl/ngcgui.tcl:3594 -msgid "entrykeybindings not available" -msgstr "entrykeybindings non disponibile" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:64 +msgid "AXIS Manual Toolchanger" +msgstr "AXIS Cambio utensile Manuale" -#: tcl/ngcgui.tcl:3633 -msgid "Found multiple matches for" -msgstr "Trovati multipli per" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:68 +msgid "" +"This window is part of the AXIS manual toolchanger. It is safe to close or " +"iconify this window, or it will close automatically after a few seconds." +msgstr "" +"Questa finestra fa parte del cambio utensile manuale di AXIS. Questa " +"finestra può essere chiusa o iconificata, ovvero si chiuderà automaticamente " +"dopo qualche secondo." -#: tcl/ngcgui.tcl:3634 -msgid "using path" -msgstr "uso percorso" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:507 +#, python-format +msgid "%s: Image to gcode" +msgstr "%s: Image to gcode (dall'immagine al codice G)" -#: tcl/ngcgui.tcl:3642 src/emc/usr_intf/axis/scripts/axis.py:2255 -#: src/emc/usr_intf/axis/scripts/axis.py:2268 -msgid "Warning" -msgstr "Attenzione" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:508 +msgid "Image to gcode" +msgstr "Image to gcode (dall'immagine al codice G)" -#: tcl/ngcgui.tcl:3643 -msgid "File absolute path specifier conflicts with searchpath result" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:518 +#, python-format +msgid "" +"Image size: %(w)d x %(h)d pixels\n" +"Minimum pixel value: %(min)d\n" +"Maximum pixel value: %(max)d" msgstr "" -"Cammino assoluto file specificato confligge con il risultatp del cammino " -"ricerca" +"Grandezza Immagine: %(w)d x %(h)d pixels\n" +"Valore pixel minimo: %(min)d\n" +"Valore pixel massimo: %(max)d" -#: tcl/ngcgui.tcl:3644 -msgid "Absolute Specifier" -msgstr "Specificare Assoluto" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 +msgid "G20 (in)" +msgstr "G20 (in)" -#: tcl/ngcgui.tcl:3645 -msgid "Using Search Result" -msgstr "Sso Risultato Ricerca" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 +msgid "G21 (mm)" +msgstr "G21 (mm)" -#: tcl/ngcgui.tcl:3650 -msgid "File not in Search Path" -msgstr "File mancante in percorso Ricerca" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 +#: src/emc/usr_intf/touchy/emc_interface.py:417 +msgid "None" +msgstr "Nulla" -#: tcl/ngcgui.tcl:3652 -msgid "Must be in search path" -msgstr "Deve essere nel percorso ricerca" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +msgid "White" +msgstr "Bianco" -#: tcl/ngcgui.tcl:3654 -msgid "(File found -- not in search path)" -msgstr "(File trovato -- non nel rpercorso ricerca)" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +msgid "Black" +msgstr "Nero" -#: tcl/ngcgui.tcl:3656 -msgid "Current directory" -msgstr "Percorso corrente" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Rows" +msgstr "Righe" -#: tcl/ngcgui.tcl:3657 -msgid "Search path" -msgstr "Percorso ricerca" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Columns" +msgstr "Colonne" -#: tcl/ngcgui.tcl:3663 -msgid "Check setting for" -msgstr "Controllo impostazioni per" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Rows then Columns" +msgstr "Righe poi Colonne" -#: tcl/ngcgui.tcl:3664 -msgid "in ini file" -msgstr "nel file ini" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Columns then Rows" +msgstr "Colonne poi Righe" -#: tcl/ngcgui.tcl:3665 -msgid "(Restart required after fixing ini file)" -msgstr "(Riavvio necessario dopo correzione file ini)" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Positive" +msgstr "Positivo" -#: tcl/ngcgui.tcl:3680 -msgid "Try to Continue" -msgstr "Prova a continuare" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Negative" +msgstr "Negativo" -#: tcl/ngcgui.tcl:3685 -msgid "Ngcgui Configuration File Not Found" -msgstr "File Configurazione ngcgui non trovato" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Alternating" +msgstr "Alternato" -#: tcl/ngcgui.tcl:3765 -msgid "Missing Tcl Package Img" -msgstr "Tcl Package Img mancante" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Up Milling" +msgstr "Fresatura sopra" -#: tcl/ngcgui.tcl:3766 -msgid "Please install Img" -msgstr "Prego installare Img" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Down Milling" +msgstr "Fresatura sotto" -#: tcl/ngcgui.tcl:3965 -msgid "ini file" -msgstr "file ini" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "Ball End" +msgstr "Testa sferica" -#: tcl/ngcgui.tcl:3973 -msgid "not found" -msgstr "non trovato" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "Flat End" +msgstr "Fondo piatto" -#: tcl/ngcgui_ttt.tcl:67 -msgid "found truetype-tracer v4 -OK" -msgstr "trovato truetype-tracer v4 -OK" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "30 Degree" +msgstr "30 Gradi" -#: tcl/ngcgui_ttt.tcl:70 -msgid "Note truetype-tracer v4 is required" -msgstr "Nota: è richiesto truetype-tracer v4 " +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "45 Degree" +msgstr "45 Gradi" -#: tcl/ngcgui_ttt.tcl:71 -msgid "Note: truetype-tracer v4 is required" -msgstr "Nota: è richiesto truetype-tracer v4 " +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "60 Degree" +msgstr "60 Gradi" -#: tcl/ngcgui_ttt.tcl:81 -msgid "ngcgui_app.tcl must be loaded before" -msgstr "bisogna caricare prima ngcgui_app.tcl" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 +msgid "Secondary" +msgstr "Secondario" -#: tcl/ngcgui_ttt.tcl:89 -msgid "Create a subroutine file from truetype-tracer (V4 reqd)" -msgstr "Crea un file subroutine da truetype-tracer (V4 richiesta)" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 +msgid "Full" +msgstr "Pieno" -#: tcl/ngcgui_ttt.tcl:102 tcl/ngcgui_ttt.tcl:115 -msgid "problem with" -msgstr "problema con" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:654 +msgid "Invert Image" +msgstr "Inverti immagine" -#: tcl/ngcgui_ttt.tcl:106 -msgid "No entry for" -msgstr "Nessuna voce per " +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:655 +msgid "Normalize Image" +msgstr "Normalizza immagine" -#: tcl/ngcgui_ttt.tcl:109 -msgid "wrong version of truetype-tracer" -msgstr "versione errata di truetype-tracer" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:656 +msgid "Extend Image Border" +msgstr "Estendi Bordo Immagine" -#: tcl/ngcgui_ttt.tcl:125 -msgid "not writable, using" -msgstr "non scrivibile, usando" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:657 +msgid "Pixel Size (Units)" +msgstr "Grandezza pixel (Unità)" -#: tcl/ngcgui_ttt.tcl:125 -msgid "and setting expandsub" -msgstr "e imposta expandsub" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:658 +msgid "Depth (units)" +msgstr "Profondità (unità)" -#: tcl/ngcgui_ttt.tcl:161 -msgid "Text" -msgstr "Testo" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:659 +msgid "Tolerance (units)" +msgstr "Tolleranza (unità)" -#: tcl/ngcgui_ttt.tcl:171 -msgid "Linescale" -msgstr "scala lineare" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:660 +msgid "Stepover (pixels)" +msgstr "Passo Y (pixels)" -#: tcl/ngcgui_ttt.tcl:177 -msgid "none" -msgstr "niente" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:661 +msgid "Tool Diameter (units)" +msgstr "Diametro Utensile (unità)" -#: tcl/ngcgui_ttt.tcl:192 -msgid "Subdiv" -msgstr "Subdiv" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:662 +msgid "Tool Type" +msgstr "Tipo Utensile" -#: tcl/ngcgui_ttt.tcl:199 -msgid "default" -msgstr "default" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:663 +msgid "Feed Rate (units per minute)" +msgstr "Avanzamento (unità per minuto)" -#: tcl/ngcgui_ttt.tcl:239 -msgid "Mode" -msgstr "Modo " +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:664 +msgid "Plunge Feed Rate (units per minute)" +msgstr "Affondamento (unità per minuto)" -#: tcl/ngcgui_ttt.tcl:247 -msgid "normal" -msgstr "normale" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:666 +msgid "Safety Height (units)" +msgstr "Altezza di sicurezza (unità)" -#: tcl/ngcgui_ttt.tcl:248 -msgid "date" -msgstr "data" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:667 +msgid "Scan Pattern" +msgstr "Schema di scansione" -#: tcl/ngcgui_ttt.tcl:249 -msgid "fontname" -msgstr "Nome font" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:668 +msgid "Scan Direction" +msgstr "Direzione scansione" -#: tcl/ngcgui_ttt.tcl:262 -msgid "Switches" -msgstr "Switches" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:669 +msgid "Lace Bounding" +msgstr "Lace Bounding" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:670 +msgid "Contact Angle (degrees)" +msgstr "Angolo contatto (gradi)" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:671 +msgid "Spindle Speed (RPM)" +msgstr "Rotazione Mandrino (giri/min)" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:672 +msgid "Roughing offset (units, 0=no roughing)" +msgstr "Offset Sgrossatura (unita', 0=senza sgrossatura)" -#: tcl/ngcgui_ttt.tcl:270 -msgid "Unicode" -msgstr "Unicode" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:673 +msgid "Roughing depth per pass (units)" +msgstr "Altezza sgrossatura per passata (unita')" -#: tcl/ngcgui_ttt.tcl:275 -msgid "Allow Rotation" -msgstr "Consente Rotazione " +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:740 +msgid "image-to-gcode: User pressed cancel" +msgstr "image-to-gcode: Utente ha premuto cancella" -#: tcl/ngcgui_ttt.tcl:295 -msgid "Make ngcgui-compatible subfile and new tab page" -msgstr "Genera subfile ngcgui-compatibile e nuova pagina tab " +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:753 +msgid "Depth images" +msgstr "Profondità immagini" -#: tcl/ngcgui_ttt.tcl:353 -msgid "Null text" -msgstr "Testo nullo" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:22 +#, fuzzy +msgid "Machinekit Debug Level" +msgstr "Imposta Livello _Debug" -#: tcl/ngcgui_ttt.tcl:384 -msgid "Using truetype-tracer default font" -msgstr "Uso default font truetype-tracer " +#: src/emc/usr_intf/axis/scripts/debuglevel.py:23 +msgid "debuglevel" +msgstr "Livello Debug" -#: tcl/ngcgui_ttt.tcl:388 -msgid "no such file" -msgstr "Nessun file" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:36 +msgid "Configuration *" +msgstr "Configurazione *" -#: tcl/ngcgui_ttt.tcl:393 -msgid "file not readable" -msgstr "File non leggibile" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:37 +msgid "Version Numbers *" +msgstr "Versione Numeri *" -#: tcl/ngcgui_ttt.tcl:507 -msgid "Creating new tab page" -msgstr "Crea nuova pagina tab" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:38 +msgid "NML *" +msgstr "NML *" -#: src/emc/usr_intf/axis/scripts/axis.py:148 -msgid "Emergency stop" -msgstr "Stop emergenza" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:39 +msgid "RCS *" +msgstr "RCS *" -#: src/emc/usr_intf/axis/scripts/axis.py:149 -msgid "Turn machine on" -msgstr "Macchina on" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:40 +msgid "Task Issue" +msgstr "Risultato finale" -#: src/emc/usr_intf/axis/scripts/axis.py:151 -msgid "Activate first axis" -msgstr "Attiva asse 1" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:41 +msgid "Motion Time" +msgstr "Tempo Movimento" -#: src/emc/usr_intf/axis/scripts/axis.py:152 -msgid "Activate second axis" -msgstr "Attiva asse 2" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:43 +msgid "Interpreter List" +msgstr "Lista Interprete" -#: src/emc/usr_intf/axis/scripts/axis.py:153 -msgid "Activate third axis" -msgstr "Attiva asse 3" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:47 +#, python-format +msgid "" +"Inifile setting for this debug level:\n" +"[EMC]DEBUG=0x%08x" +msgstr "" +"Impostazione file ini per questo livello di debug:\n" +"[EMC]DEBUG=0x%08x" -#: src/emc/usr_intf/axis/scripts/axis.py:154 -msgid "Activate fourth axis" -msgstr "Attiva asse 4" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:81 +msgid " * This option can only be enabled in the inifile" +msgstr " * Questa opzione può essere abilitata solo nel file ini" -#: src/emc/usr_intf/axis/scripts/axis.py:155 -msgid "Activate fifth through ninth axis" -msgstr "Attiva asse dal 5 fino al 9" +#: share/axis/tcl/axis.tcl:52 +msgid "_Open..." +msgstr "_Apri..." -#: src/emc/usr_intf/axis/scripts/axis.py:156 -msgid "Set Feed Override from 0% to 100%" -msgstr "Imposta Incr. Avanzamento da 0% al 100%" +#: share/axis/tcl/axis.tcl:56 +msgid "Recent _Files" +msgstr "_File recenti" -#: src/emc/usr_intf/axis/scripts/axis.py:157 -msgid ", and ." -msgstr ", e ." +#: share/axis/tcl/axis.tcl:60 +msgid "_Edit..." +msgstr "_Modifica..." -#: src/emc/usr_intf/axis/scripts/axis.py:157 -msgid "Select jog speed" -msgstr "Imposta velocità jog:" +#: share/axis/tcl/axis.tcl:63 +msgid "Ctrl-R" +msgstr "Ctrl-R" -#: src/emc/usr_intf/axis/scripts/axis.py:158 -msgid "< and >" -msgstr "< e >" +#: share/axis/tcl/axis.tcl:65 +msgid "_Reload" +msgstr "_Ricarica" -#: src/emc/usr_intf/axis/scripts/axis.py:158 -msgid "Select angular jog speed" -msgstr "Imposta velocità angolare jog" +#: share/axis/tcl/axis.tcl:68 +msgid "Ctrl-S" +msgstr "Ctrl-S" -#: src/emc/usr_intf/axis/scripts/axis.py:159 -msgid "I, Shift-I" -msgstr "I, Maiusc-I" +#: share/axis/tcl/axis.tcl:70 +msgid "_Save gcode as..." +msgstr "_Salva g-code con nome..." -#: src/emc/usr_intf/axis/scripts/axis.py:159 share/axis/tcl/axis.tcl:2356 -msgid "Select jog increment" -msgstr "Selezione incremento movimento" +#: share/axis/tcl/axis.tcl:74 +msgid "_Properties..." +msgstr "_Proprietà..." -#: src/emc/usr_intf/axis/scripts/axis.py:160 -msgid "Continuous jog" -msgstr "Continuo" +#: share/axis/tcl/axis.tcl:80 +msgid "Edit _tool table..." +msgstr "Modifica _tabella utensili..." -#: src/emc/usr_intf/axis/scripts/axis.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:479 -msgid "Home" -msgstr "Origine" +#: share/axis/tcl/axis.tcl:84 +msgid "Reload tool ta_ble" +msgstr "Ricarica ta_bella utensile" -#: src/emc/usr_intf/axis/scripts/axis.py:161 -msgid "Send active axis home" -msgstr "Porta asse attivo alla posizione zero" +#: share/axis/tcl/axis.tcl:90 +msgid "_Ladder Editor..." +msgstr "Editore _Ladder..." -#: src/emc/usr_intf/axis/scripts/axis.py:162 -msgid "Ctrl-Home" -msgstr "Ctrl-Home" +#: share/axis/tcl/axis.tcl:102 +msgid "Toggle _Emergency Stop" +msgstr "Stop _Emergenza On/Off" -#: src/emc/usr_intf/axis/scripts/axis.py:162 -msgid "Home all axes" -msgstr "Azzera tutti gli assi" +#: share/axis/tcl/axis.tcl:107 +msgid "Toggle _Machine Power" +msgstr "_Macchina On/Off" -#: src/emc/usr_intf/axis/scripts/axis.py:163 -msgid "Shift-Home" -msgstr "Maiusc-Home" +#: share/axis/tcl/axis.tcl:114 +msgid "_Run program" +msgstr "Esegui prog_ramma" -#: src/emc/usr_intf/axis/scripts/axis.py:163 -msgid "Zero G54 offset for active axis" -msgstr "Azzera posizione G54 per asse corrente" +#: share/axis/tcl/axis.tcl:118 +msgid "Ru_n from selected line" +msgstr "Avvia dalla li_nea selezionata" -#: src/emc/usr_intf/axis/scripts/axis.py:164 -msgid "End" -msgstr "Fine" +#: share/axis/tcl/axis.tcl:123 +msgid "S_tep" +msgstr "Pa_sso" -#: src/emc/usr_intf/axis/scripts/axis.py:164 -msgid "Set G54 offset for active axis" -msgstr "Imposta posizione offset G54 per asse corrente" +#: share/axis/tcl/axis.tcl:128 +msgid "_Pause" +msgstr "_Pausa" -#: src/emc/usr_intf/axis/scripts/axis.py:165 -msgid "Jog active axis" -msgstr "Muove asse attivo" +#: share/axis/tcl/axis.tcl:133 +msgid "Re_sume" +msgstr "Ripren_de" -#: src/emc/usr_intf/axis/scripts/axis.py:168 -msgid "Left, Right" -msgstr "Sinistra, Destra" +#: share/axis/tcl/axis.tcl:143 +msgid "Stop at M_1" +msgstr "Ferma a M_1" -#: src/emc/usr_intf/axis/scripts/axis.py:168 -msgid "Jog first axis" -msgstr "Muovi asse 1" +#: share/axis/tcl/axis.tcl:148 +msgid "Skip lines with '_/'" +msgstr "Salta linee con '_/'" -#: src/emc/usr_intf/axis/scripts/axis.py:169 -msgid "Up, Down" -msgstr "Su, Giù" +#: share/axis/tcl/axis.tcl:153 +msgid "Ctrl-M" +msgstr "Ctrl-M" -#: src/emc/usr_intf/axis/scripts/axis.py:169 -msgid "Jog second axis" -msgstr "Muovi asse 2" +#: share/axis/tcl/axis.tcl:155 +msgid "Clear MDI h_istory" +msgstr "Cancella stor_ia MDI " -#: src/emc/usr_intf/axis/scripts/axis.py:170 -msgid "Pg Up, Pg Dn" -msgstr "Pag-Su, Pag-Giù" +#: share/axis/tcl/axis.tcl:157 +msgid "Ctrl-H" +msgstr "Ctrl-H" -#: src/emc/usr_intf/axis/scripts/axis.py:170 -msgid "Jog third axis" -msgstr "Muovi asse 3" +#: share/axis/tcl/axis.tcl:159 +msgid "Copy from MDI hist_ory" +msgstr "Copia da st_oria MDI" -#: src/emc/usr_intf/axis/scripts/axis.py:171 -msgid "Shift+above jogs" -msgstr "Maiusc+Jogs precedente" +#: share/axis/tcl/axis.tcl:161 +msgid "Ctrl-Shift-H" +msgstr "Ctrl-Maiusc-H" -#: src/emc/usr_intf/axis/scripts/axis.py:171 -msgid "Jog at traverse speed" -msgstr "Jog alla velocità di attraversamento" +#: share/axis/tcl/axis.tcl:163 +msgid "Paste to MDI histor_y" +msgstr "Incolla da stori_a MDI" -#: src/emc/usr_intf/axis/scripts/axis.py:172 -msgid "Jog fourth axis" -msgstr "Muovi asse 4" +#: share/axis/tcl/axis.tcl:169 +msgid "_Calibration" +msgstr "_Calibrazione" -#: src/emc/usr_intf/axis/scripts/axis.py:175 -msgid "Toggle between Drag and Rotate mode" -msgstr "Scambia tra il modo Trascina e Ruota" +#: share/axis/tcl/axis.tcl:173 +msgid "Show _Hal Configuration" +msgstr "Mostra configurazione _HAL" -#: src/emc/usr_intf/axis/scripts/axis.py:176 -msgid "Left Button" -msgstr "Tasto sinistro" +#: share/axis/tcl/axis.tcl:177 +msgid "H_al Meter" +msgstr "H_al Meter" -#: src/emc/usr_intf/axis/scripts/axis.py:176 -msgid "Pan, rotate or select line" -msgstr "Sposta, ruota o seleziona linea" +#: share/axis/tcl/axis.tcl:181 +msgid "Ha_l Scope" +msgstr "Ha_l Scope" -#: src/emc/usr_intf/axis/scripts/axis.py:177 -msgid "Shift+Left Button" -msgstr "Maiusc+Tasto sinistro" +#: share/axis/tcl/axis.tcl:185 +#, fuzzy +msgid "Sho_w Machinekit Status" +msgstr "Most_ra Stato LinuxCNC" -#: src/emc/usr_intf/axis/scripts/axis.py:177 -msgid "Rotate or pan" -msgstr "Ruota o trascina" +#: share/axis/tcl/axis.tcl:189 +msgid "Set _Debug Level" +msgstr "Imposta Livello _Debug" -#: src/emc/usr_intf/axis/scripts/axis.py:178 -msgid "Right Button" -msgstr "Tasto destro" +#: share/axis/tcl/axis.tcl:195 +msgid "Homin_g" +msgstr "A_zzeramento" -#: src/emc/usr_intf/axis/scripts/axis.py:178 -#: src/emc/usr_intf/axis/scripts/axis.py:180 -#: src/emc/usr_intf/axis/scripts/axis.py:181 -msgid "Zoom view" -msgstr "Visualizza zoom" +#: share/axis/tcl/axis.tcl:199 +msgid "_Unhoming" +msgstr "_Dis-Azzeramento" -#: src/emc/usr_intf/axis/scripts/axis.py:179 -msgid "Wheel Button" -msgstr "Tasto Rotella mouse" +#: share/axis/tcl/axis.tcl:203 +msgid "_Zero coordinate system" +msgstr "Sistema coordinate _Zero" -#: src/emc/usr_intf/axis/scripts/axis.py:179 -msgid "Rotate view" -msgstr "Ruota vista" +#: share/axis/tcl/axis.tcl:207 +msgid "P1 G5_4" +msgstr "P1 G5_4" -#: src/emc/usr_intf/axis/scripts/axis.py:180 -msgid "Rotate Wheel" -msgstr "Rotella mouse" +#: share/axis/tcl/axis.tcl:211 +msgid "P2 G5_5" +msgstr "P2 G5_5" -#: src/emc/usr_intf/axis/scripts/axis.py:181 -msgid "Control+Left Button" -msgstr "Control+Bottone sinistro" +#: share/axis/tcl/axis.tcl:215 +msgid "P3 G5_6" +msgstr "P3 G5_6" -#: src/emc/usr_intf/axis/scripts/axis.py:184 -msgid "Manual control" -msgstr "Controllo Manuale" +#: share/axis/tcl/axis.tcl:219 +msgid "P4 G5_7" +msgstr "P4 G5_7" -#: src/emc/usr_intf/axis/scripts/axis.py:185 -msgid "Code entry (MDI)" -msgstr "Comandi manuali (MDI)" +#: share/axis/tcl/axis.tcl:223 +msgid "P5 G5_8" +msgstr "P5 G5_8" -#: src/emc/usr_intf/axis/scripts/axis.py:186 -msgid "Control-M" -msgstr "Control-M" +#: share/axis/tcl/axis.tcl:227 +msgid "P6 G5_9" +msgstr "P6 G5_9" -#: src/emc/usr_intf/axis/scripts/axis.py:186 -msgid "Clear MDI history" -msgstr "Cancella storia MDI" +#: share/axis/tcl/axis.tcl:231 +msgid "P7 G59._1" +msgstr "P7 G59._1" + +#: share/axis/tcl/axis.tcl:235 +msgid "P8 G59._2" +msgstr "P8 G59._2" -#: src/emc/usr_intf/axis/scripts/axis.py:187 -msgid "Control-H" -msgstr "Control-H" +#: share/axis/tcl/axis.tcl:239 +msgid "P9 G59._3" +msgstr "P9 G59._3" -#: src/emc/usr_intf/axis/scripts/axis.py:187 -msgid "Copy selected MDI history elements" -msgstr "Copia storia MDI elementi selezionati" +#: share/axis/tcl/axis.tcl:243 +msgid "_G92" +msgstr "_G92" -#: src/emc/usr_intf/axis/scripts/axis.py:188 -msgid "to clipboard" -msgstr "verso Appunti" +#: share/axis/tcl/axis.tcl:251 +msgid "Tool touch off to wor_kpiece" +msgstr "Contatto utensile su pe_zzo" -#: src/emc/usr_intf/axis/scripts/axis.py:189 -msgid "Control-Shift-H" -msgstr "Control-Maiusc-H" +#: share/axis/tcl/axis.tcl:257 +msgid "Tool touch off to _fixture" +msgstr "Contatto utensile su _fissaggio" -#: src/emc/usr_intf/axis/scripts/axis.py:189 -msgid "Paste clipboard to MDI history" -msgstr "Copia Appunti alla storia MDI" +#: share/axis/tcl/axis.tcl:265 +msgid "_Top view" +msgstr "Vis_ta Superiore" -#: src/emc/usr_intf/axis/scripts/axis.py:190 share/axis/tcl/axis.tcl:1113 -#: src/emc/usr_intf/touchy/touchy.glade:508 -msgid "Override Limits" -msgstr "Superamento Limiti" +#: share/axis/tcl/axis.tcl:272 +msgid "_Rotated Top view" +msgstr "Vista superiore, _Ruotata" -#: src/emc/usr_intf/axis/scripts/axis.py:192 -msgid "Open program" -msgstr "Apri programma" +#: share/axis/tcl/axis.tcl:279 +msgid "_Side view" +msgstr "Vi_sta laterale" -#: src/emc/usr_intf/axis/scripts/axis.py:193 -msgid "Control-R" -msgstr "Control-R" +#: share/axis/tcl/axis.tcl:286 +msgid "_Front view" +msgstr "Vista _frontale" -#: src/emc/usr_intf/axis/scripts/axis.py:193 -msgid "Reload program" -msgstr "Ricarica programma" +#: share/axis/tcl/axis.tcl:293 +msgid "_Perspective view" +msgstr "Vista _Prospettica" -#: src/emc/usr_intf/axis/scripts/axis.py:194 -msgid "Control-S" -msgstr "Control-S" +#: share/axis/tcl/axis.tcl:302 +msgid "Display _Inches" +msgstr "Visualizza Poll_ici" -#: src/emc/usr_intf/axis/scripts/axis.py:194 -msgid "Save g-code as" -msgstr "Salva G-code con nome" +#: share/axis/tcl/axis.tcl:309 +msgid "Display _MM" +msgstr "Visualizza _MM" -#: src/emc/usr_intf/axis/scripts/axis.py:195 -msgid "Run program" -msgstr "Avvio Programma" +#: share/axis/tcl/axis.tcl:316 +msgid "S_how program" +msgstr "Mos_tra Programma" -#: src/emc/usr_intf/axis/scripts/axis.py:196 -msgid "Step program" -msgstr "Esegui una riga per volta" +#: share/axis/tcl/axis.tcl:321 +msgid "Show program r_apids" +msgstr "Mostra r_apidi programma" -#: src/emc/usr_intf/axis/scripts/axis.py:197 -msgid "Pause program" -msgstr "Pausa Programma" +#: share/axis/tcl/axis.tcl:326 +msgid "Alpha-_blend program" +msgstr "Alpha-_blend program" -#: src/emc/usr_intf/axis/scripts/axis.py:198 -msgid "Resume program" -msgstr "Riprende programma" +#: share/axis/tcl/axis.tcl:331 +msgid "Sho_w live plot" +msgstr "Mostr_a percorso attuale" -#: src/emc/usr_intf/axis/scripts/axis.py:199 -msgid "Stop running program, or" -msgstr "Ferma programma in esecuzione, oppure" +#: share/axis/tcl/axis.tcl:336 +msgid "Show too_l" +msgstr "Mostra utensi_le" -#: src/emc/usr_intf/axis/scripts/axis.py:200 -msgid "stop loading program preview" -msgstr "ferma caricamento preview programma" +#: share/axis/tcl/axis.tcl:341 +msgid "Show e_xtents" +msgstr "Mostra limi_ti" -#: src/emc/usr_intf/axis/scripts/axis.py:202 -msgid "Toggle mist" -msgstr "Aria ON/OFF" +#: share/axis/tcl/axis.tcl:345 +msgid "_Grid" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:203 -msgid "Toggle flood" -msgstr "Refrigerante ON/OFF" +#: share/axis/tcl/axis.tcl:350 +msgid "Show o_ffsets" +msgstr "Mostra limi_ti" -#: src/emc/usr_intf/axis/scripts/axis.py:204 -msgid "Spindle brake off" -msgstr "Freno mandrino off" +#: share/axis/tcl/axis.tcl:355 +msgid "Sh_ow machine limits" +msgstr "M_ostra limiti macchina" -#: src/emc/usr_intf/axis/scripts/axis.py:205 -msgid "Shift-B" -msgstr "Maiusc-B" +#: share/axis/tcl/axis.tcl:360 +msgid "Show v_elocity" +msgstr "Mostra v_elocità" -#: src/emc/usr_intf/axis/scripts/axis.py:205 -msgid "Spindle brake on" -msgstr "Freno mandrino on" +#: share/axis/tcl/axis.tcl:365 +msgid "Show _distance to go" +msgstr "Mostra _distanza da percorrere" -#: src/emc/usr_intf/axis/scripts/axis.py:206 -msgid "Turn spindle clockwise" -msgstr "Rotazione mandrino oraria" +#: share/axis/tcl/axis.tcl:370 +msgid "Large coordinate fo_nt" +msgstr "Fo_nt coordinate grande" -#: src/emc/usr_intf/axis/scripts/axis.py:207 -msgid "Turn spindle counterclockwise" -msgstr "Rotazione mandrinoantioraria" +#: share/axis/tcl/axis.tcl:373 +msgid "Ctrl-K" +msgstr "Ctrl-K" -#: src/emc/usr_intf/axis/scripts/axis.py:208 -msgid "Turn spindle more slowly" -msgstr "Diminuisci velocità mandrino" +#: share/axis/tcl/axis.tcl:375 +msgid "_Clear live plot" +msgstr "_Cancella percorso attuale" -#: src/emc/usr_intf/axis/scripts/axis.py:209 -msgid "Turn spindle more quickly" -msgstr "Aumenta velocità mandrino" +#: share/axis/tcl/axis.tcl:384 +msgid "Show commanded position" +msgstr "Mostra posizione comandata" -#: src/emc/usr_intf/axis/scripts/axis.py:211 -msgid "Control-K" -msgstr "Control-K" +#: share/axis/tcl/axis.tcl:391 +msgid "Show actual position" +msgstr "Mostra posizione attuale" -#: src/emc/usr_intf/axis/scripts/axis.py:211 -msgid "Clear live plot" -msgstr "Cancella plot grafico" +#: share/axis/tcl/axis.tcl:400 +msgid "Show machine position" +msgstr "Mostra posizione macchina" -#: src/emc/usr_intf/axis/scripts/axis.py:212 -msgid "Cycle among preset views" -msgstr "Commuta tra le viste preselezionate" +#: share/axis/tcl/axis.tcl:407 +msgid "Show relative position" +msgstr "Mostra posizione relativa" -#: src/emc/usr_intf/axis/scripts/axis.py:213 -msgid "Cycle among preview, DRO, and user tabs" -msgstr "Commuta tra la viste, DRO e cartella utente" +#: share/axis/tcl/axis.tcl:416 +msgid "Joint mode" +msgstr "Modo joint" -#: src/emc/usr_intf/axis/scripts/axis.py:215 -msgid "Ctrl-Space" -msgstr "Ctrl-Spazio" +#: share/axis/tcl/axis.tcl:423 +msgid "World mode" +msgstr "Modo globale" -#: src/emc/usr_intf/axis/scripts/axis.py:215 -msgid "Clear notifications" -msgstr "Elimina notifiche" +#: share/axis/tcl/axis.tcl:431 +msgid "_Off" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:836 -#, python-format -msgid "Unknown tool %d" -msgstr "Utensile %d sconosciuto" +#: share/axis/tcl/axis.tcl:437 +#, fuzzy +msgid "_Custom" +msgstr "Personale" -#: src/emc/usr_intf/axis/scripts/axis.py:838 -msgid "No tool" -msgstr "Utensile assente" +#: share/axis/tcl/axis.tcl:443 +msgid "User_0" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:840 -#, python-format -msgid "Tool %(tool)d, offset %(zo)g, diameter %(dia)g" -msgstr "Utensile %(tool)d, offset %(zo)g, diametro %(dia)g" +#: share/axis/tcl/axis.tcl:447 +msgid "User_1" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:842 -#, python-format -msgid "Tool %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" -msgstr "Utensile %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" +#: share/axis/tcl/axis.tcl:451 +msgid "User_2" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1013 -msgid "Filtering..." -msgstr "Filtraggio..." +#: share/axis/tcl/axis.tcl:455 +msgid "User_3" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1073 -msgid "Filter failed" -msgstr "Filtro fallito" +#: share/axis/tcl/axis.tcl:459 +msgid "User_4" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1074 -#, python-format -msgid "" -"The program %(program)r exited with code %(code)d. Any error messages it " -"produced are shown below:" +#: share/axis/tcl/axis.tcl:463 +msgid "User_5" msgstr "" -"Il programma %(program)r termina con codice %(code)d. Ogni messaggio di " -"errore prodotto è mostrato sotto:" -#: src/emc/usr_intf/axis/scripts/axis.py:1139 -#, python-format -msgid "G-Code error in %s" -msgstr "Errore codice G in %s" +#: share/axis/tcl/axis.tcl:467 +msgid "User_6" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1140 -#, python-format -msgid "" -"Near line %(seq)d of %(f)s:\n" -"%(error_str)s" +#: share/axis/tcl/axis.tcl:471 +msgid "User_7" msgstr "" -"Vicino la linea %(seq)d di %(f)s:\n" -"%(error_str)s" -#: src/emc/usr_intf/axis/scripts/axis.py:1292 -#: src/emc/usr_intf/axis/scripts/axis.py:2725 share/axis/tcl/axis.tcl:1092 -#: share/axis/tcl/axis.tcl:1094 share/axis/tcl/axis.tcl:2144 -msgid "Continuous" -msgstr "Continuo" +#: share/axis/tcl/axis.tcl:475 +msgid "User_8" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1403 -msgid "Ok" -msgstr "Ok" +#: share/axis/tcl/axis.tcl:479 +msgid "User_9" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1546 -msgid "T Tool Table" -msgstr "T Tabella Utensile" +#: share/axis/tcl/axis.tcl:491 +msgid "_About AXIS" +msgstr "Informazioni su _AXIS" -#: src/emc/usr_intf/axis/scripts/axis.py:1557 -#: src/emc/usr_intf/axis/scripts/axis.py:1730 -#: src/emc/usr_intf/stepconf/stepconf.py:1691 -#: src/emc/usr_intf/stepconf/stepconf.py:2235 -msgid "in" -msgstr "in" +#: share/axis/tcl/axis.tcl:495 +msgid "Quick _Reference" +msgstr "Guida _Rapida" -#: src/emc/usr_intf/axis/scripts/axis.py:1560 -msgid " radius" -msgstr " raggio" +#: share/axis/tcl/axis.tcl:505 +msgid "_Machine" +msgstr "_Macchina" -#: src/emc/usr_intf/axis/scripts/axis.py:1562 -msgid " diameter" -msgstr " diametro" +#: share/axis/tcl/axis.tcl:509 +msgid "_View" +msgstr "_Visualizzare" -#: src/emc/usr_intf/axis/scripts/axis.py:1563 -msgid "°" -msgstr "°" +#: share/axis/tcl/axis.tcl:513 +msgid "_User" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1572 -msgid "Coordinate System:" -msgstr "Sistema Coordinate:" +#: share/axis/tcl/axis.tcl:526 +msgid "Toggle Emergency Stop [F1]" +msgstr "Stop Emergenza On/Off [F1]" -#: src/emc/usr_intf/axis/scripts/axis.py:1588 -msgid "fixture" -msgstr "Fissaggio" +#: share/axis/tcl/axis.tcl:535 +msgid "Toggle Machine power [F2]" +msgstr "Macchina ON/OFF [F2]" -#: src/emc/usr_intf/axis/scripts/axis.py:1589 -msgid "workpiece" -msgstr "Pezzo" +#: share/axis/tcl/axis.tcl:546 +msgid "Open G-Code file [O]" +msgstr "Apre file G-code [O]" -#: src/emc/usr_intf/axis/scripts/axis.py:1605 -msgid "Name:" -msgstr "Nome:" +#: share/axis/tcl/axis.tcl:554 +msgid "Reopen current file [Control-R]" +msgstr "Ricarica file corrente [Control-R]" -#: src/emc/usr_intf/axis/scripts/axis.py:1605 -msgid "Size:" -msgstr "Dimensione:" +#: share/axis/tcl/axis.tcl:564 +msgid "Begin executing current file [R]" +msgstr "Esegui file corrente [R]" -#: src/emc/usr_intf/axis/scripts/axis.py:1606 -msgid "Tool order:" -msgstr "Ordine utensile:" +#: share/axis/tcl/axis.tcl:572 +msgid "Execute next line [T]" +msgstr "Esegui codice riga successiva [T]" -#: src/emc/usr_intf/axis/scripts/axis.py:1606 -msgid "Rapid distance:" -msgstr "Distanza rapido:" +#: share/axis/tcl/axis.tcl:580 +msgid "Pause [P] / resume [S] execution" +msgstr "Pausa [P] / riprendi [S] esecuzione" -#: src/emc/usr_intf/axis/scripts/axis.py:1607 -msgid "Feed distance:" -msgstr "Distanza di lavoro:" +#: share/axis/tcl/axis.tcl:588 +msgid "Stop program execution [ESC]" +msgstr "Ferma esecuzione programma [ESC]" -#: src/emc/usr_intf/axis/scripts/axis.py:1607 -msgid "Total distance:" -msgstr "Distanza totale:" +#: share/axis/tcl/axis.tcl:598 +msgid "Toggle skip lines with '/' [Alt-M /]" +msgstr "Scambio Salto linee con '_/' [Alt-M /]" -#: src/emc/usr_intf/axis/scripts/axis.py:1608 -msgid "Run time:" -msgstr "Tempo lavorazione:" +#: share/axis/tcl/axis.tcl:605 +msgid "Toggle optional pause [Alt-M 1]" +msgstr "Scambio pausa opzionale [Alt-M 1]" -#: src/emc/usr_intf/axis/scripts/axis.py:1608 -msgid "X bounds:" -msgstr "Limiti X:" +#: share/axis/tcl/axis.tcl:614 src/emc/usr_intf/gmoccapy/gmoccapy.glade:549 +msgid "Zoom in" +msgstr "Ingrandisci" -#: src/emc/usr_intf/axis/scripts/axis.py:1609 -msgid "Y bounds:" -msgstr "Limiti Y:" +#: share/axis/tcl/axis.tcl:622 src/emc/usr_intf/gmoccapy/gmoccapy.glade:567 +msgid "Zoom out" +msgstr "Riduci" -#: src/emc/usr_intf/axis/scripts/axis.py:1609 -msgid "Z bounds:" -msgstr "Limiti Z:" +#: share/axis/tcl/axis.tcl:630 +msgid "Top view" +msgstr "Vista superiore" -#: src/emc/usr_intf/axis/scripts/axis.py:1610 -msgid "A bounds:" -msgstr "Limiti A:" +#: share/axis/tcl/axis.tcl:638 +msgid "Rotated top view" +msgstr "Vista superiore, ruotata" -#: src/emc/usr_intf/axis/scripts/axis.py:1610 -msgid "B bounds:" -msgstr "Limiti B:" +#: share/axis/tcl/axis.tcl:646 +msgid "Side view" +msgstr "Vista laterale" -#: src/emc/usr_intf/axis/scripts/axis.py:1611 -msgid "C bounds:" -msgstr "Limiti C:" +#: share/axis/tcl/axis.tcl:654 +msgid "Front view" +msgstr "Vista _frontale" -#: src/emc/usr_intf/axis/scripts/axis.py:1635 -#, python-format -msgid "Program exceeds machine minimum on axis %s" -msgstr "Il programma va oltre il limite inferiore sull'asse %s" +#: share/axis/tcl/axis.tcl:662 +msgid "Perspective view" +msgstr "Vista prospettica" -#: src/emc/usr_intf/axis/scripts/axis.py:1638 -#, python-format -msgid "Program exceeds machine maximum on axis %s" -msgstr "Il programma va oltre il limite superiore sull'asse %s" +#: share/axis/tcl/axis.tcl:670 +msgid "Toggle between Drag and Rotate Mode [D]" +msgstr "Scambia tra il modo Trascina e Ruota [D]" -#: src/emc/usr_intf/axis/scripts/axis.py:1643 -msgid "Program exceeds machine limits" -msgstr "Il programma eccede i limiti macchina" +#: share/axis/tcl/axis.tcl:685 +msgid "Clear live plot [Ctrl-K]" +msgstr "Cancella percorso attuale [Ctrl-K]" -#: src/emc/usr_intf/axis/scripts/axis.py:1646 -msgid "Run Anyway" -msgstr "Esegui comunque" +#: share/axis/tcl/axis.tcl:836 +msgid "Manual Control [F3]" +msgstr "Controllo manuale [F3]" -#: src/emc/usr_intf/axis/scripts/axis.py:1708 -msgid "No file loaded" -msgstr "Nessun file caricato" +#: share/axis/tcl/axis.tcl:837 +msgid "MDI [F5]" +msgstr "MDI [F5]" -#: src/emc/usr_intf/axis/scripts/axis.py:1716 -#, python-format -msgid "generated from %s" -msgstr "generato da %s" +#: share/axis/tcl/axis.tcl:851 share/axis/tcl/axis.tcl:2158 +#: share/axis/tcl/axis.tcl:2328 +msgid "Axis:" +msgstr "Asse:" -#: src/emc/usr_intf/axis/scripts/axis.py:1722 -#, python-format -msgid "" -"%(size)s bytes\n" -"%(lines)s gcode lines" -msgstr "" -"%(size)s bytes\n" -"%(lines)s linee gcode" +#: share/axis/tcl/axis.tcl:1172 src/emc/usr_intf/gscreen/gscreen.glade:2944 +msgid "Home Axis" +msgstr "Azzera Asse" -#: src/emc/usr_intf/axis/scripts/axis.py:1748 -#, python-format -msgid "%.1f minutes" -msgstr "%.1f minuti" +#: share/axis/tcl/axis.tcl:1246 +msgid "Spindle:" +msgstr "Mandrino:" -#: src/emc/usr_intf/axis/scripts/axis.py:1750 -#, python-format -msgid "%d seconds" -msgstr "%d secondi" +#: share/axis/tcl/axis.tcl:1293 src/emc/usr_intf/touchy/touchy.glade:946 +#: src/emc/usr_intf/stepconf/main_page.glade:406 +#: src/emc/usr_intf/gscreen/gscreen.glade:4067 +msgid "-" +msgstr "-" -#: src/emc/usr_intf/axis/scripts/axis.py:1758 -#, python-format -msgid "%(a)f to %(b)f = %(diff)f %(units)s" -msgstr "%(a)f a %(b)f = %(diff)f %(units)s" +#: share/axis/tcl/axis.tcl:1307 src/emc/usr_intf/stepconf/main_page.glade:403 +#: src/emc/usr_intf/gscreen/gscreen.glade:4056 +msgid "+" +msgstr "+" -#: src/emc/usr_intf/axis/scripts/axis.py:1759 -msgid "G-Code Properties" -msgstr "Proprietà Codici G" +#: share/axis/tcl/axis.tcl:1312 +msgid "Brake" +msgstr "Freno" -#: src/emc/usr_intf/axis/scripts/axis.py:1883 -msgid "All machinable files" -msgstr "Tutti i file di lavoro" +#: share/axis/tcl/axis.tcl:1359 +msgid "Coolant:" +msgstr "Refrigerante:" -#: src/emc/usr_intf/axis/scripts/axis.py:1884 -#: src/emc/usr_intf/axis/scripts/axis.py:2464 -msgid "rs274ngc files" -msgstr "files rs274ngc" +#: share/axis/tcl/axis.tcl:1364 +msgid "Mist" +msgstr "Aria" -#: src/emc/usr_intf/axis/scripts/axis.py:1899 -msgid "axis cannot accept remote command while running" -msgstr "axis non può accettare comandi remoti durante il suo funzionamento" +#: share/axis/tcl/axis.tcl:1369 +msgid "Flood" +msgstr "Refrigerante" -#: src/emc/usr_intf/axis/scripts/axis.py:2255 -msgid "Axis is already homed, are you sure you want to re-home?" -msgstr "Asse gia azzerato, sei sicuro che vuoi riazzerarlo?" +#: share/axis/tcl/axis.tcl:1441 +msgid "History:" +msgstr "Storia:" -#: src/emc/usr_intf/axis/scripts/axis.py:2268 -msgid "This axis is already homed, are you sure you want to re-home?" -msgstr "Questo asse è gia azzerato, sei sicuro che vuoi riazzerarlo?" +#: share/axis/tcl/axis.tcl:1464 +msgid "MDI Command:" +msgstr "Comando MDI:" -#: src/emc/usr_intf/axis/scripts/axis.py:2308 share/axis/tcl/axis.tcl:1108 -msgid "Touch Off" -msgstr "Contatto" +#: share/axis/tcl/axis.tcl:1473 +msgid "Go" +msgstr "Esegui" -#: src/emc/usr_intf/axis/scripts/axis.py:2309 -#, python-format -msgid "Enter %s coordinate relative to %%s:" -msgstr "Inserire %s coordinate relative al %%s:" +#: share/axis/tcl/axis.tcl:1479 +msgid "Active G-Codes:" +msgstr "Codici G attivi:" -#: src/emc/usr_intf/axis/scripts/axis.py:2476 -msgid "Error saving file" -msgstr "Errore nel salvataggio file" +#: share/axis/tcl/axis.tcl:1557 src/emc/usr_intf/gmoccapy/gmoccapy.glade:771 +msgid "Preview" +msgstr "Visualizzare" -#: src/emc/usr_intf/axis/scripts/axis.py:2859 -#: src/emc/usr_intf/touchy/touchy.glade:577 -msgid "Home All" -msgstr "Azzera tutto" +#: share/axis/tcl/axis.tcl:1558 +msgid "DRO" +msgstr "DRO (Quote)" -#: src/emc/usr_intf/axis/scripts/axis.py:2861 -msgid "Home all axes [Ctrl-Home]" -msgstr "Azzera tutti gli assi [Ctrl-Home]" +#: share/axis/tcl/axis.tcl:1645 share/axis/tcl/axis.tcl:1658 +msgid "Jog Speed:" +msgstr "Velocità jog:" -#: src/emc/usr_intf/axis/scripts/axis.py:2864 -msgid "Home All Axes" -msgstr "Azzera tutti gli assi" +#: share/axis/tcl/axis.tcl:1670 +msgid "Max Velocity:" +msgstr "Velocita' Massima:" -#: src/emc/usr_intf/axis/scripts/axis.py:2871 -msgid "Unhome All Axes" -msgstr "Dis-Azzera tutti gli assi" +#: share/axis/tcl/axis.tcl:1699 +msgid "Spindle Override:" +msgstr "Superamento limite mandrino:" -#: src/emc/usr_intf/axis/scripts/axis.py:2895 -#, python-format -msgid "Home Axis _%s" -msgstr "Azzera Asse _%s" +#: share/axis/tcl/axis.tcl:1701 share/axis/tcl/axis.tcl:1741 +#: share/axis/tcl/axis.tcl:1779 src/emc/usr_intf/pncconf/pncconf.glade:2834 +#: src/emc/usr_intf/pncconf/pncconf.glade:2845 +#: src/emc/usr_intf/pncconf/pncconf.glade:2949 +#: src/emc/usr_intf/pncconf/pncconf.glade:2962 +#: src/emc/usr_intf/pncconf/pncconf.glade:2975 +#: src/emc/usr_intf/pncconf/pncconf.glade:2988 +#: src/emc/usr_intf/pncconf/pncconf.glade:3001 +#: src/emc/usr_intf/pncconf/pncconf.glade:3014 +#: src/emc/usr_intf/pncconf/pncconf.glade:3127 +#: src/emc/usr_intf/pncconf/pncconf.glade:3140 +#: src/emc/usr_intf/pncconf/pncconf.glade:3153 +#: src/emc/usr_intf/pncconf/pncconf.glade:3166 +#: src/emc/usr_intf/pncconf/pncconf.glade:3179 +#: src/emc/usr_intf/pncconf/pncconf.glade:3192 +#: src/emc/usr_intf/pncconf/pncconf.glade:3205 +#: src/emc/usr_intf/pncconf/pncconf.glade:3218 +#: src/emc/usr_intf/pncconf/pncconf.glade:3715 +#: src/emc/usr_intf/pncconf/pncconf.glade:3726 +#: src/emc/usr_intf/pncconf/pncconf.glade:3830 +#: src/emc/usr_intf/pncconf/pncconf.glade:3843 +#: src/emc/usr_intf/pncconf/pncconf.glade:3856 +#: src/emc/usr_intf/pncconf/pncconf.glade:3869 +#: src/emc/usr_intf/pncconf/pncconf.glade:3882 +#: src/emc/usr_intf/pncconf/pncconf.glade:3895 +#: src/emc/usr_intf/pncconf/pncconf.glade:4008 +#: src/emc/usr_intf/pncconf/pncconf.glade:4021 +#: src/emc/usr_intf/pncconf/pncconf.glade:4034 +#: src/emc/usr_intf/pncconf/pncconf.glade:4047 +#: src/emc/usr_intf/pncconf/pncconf.glade:4060 +#: src/emc/usr_intf/pncconf/pncconf.glade:4073 +#: src/emc/usr_intf/pncconf/pncconf.glade:4086 +#: src/emc/usr_intf/pncconf/pncconf.glade:4099 +#: src/emc/usr_intf/pncconf/pncconf.glade:4596 +#: src/emc/usr_intf/pncconf/pncconf.glade:4607 +#: src/emc/usr_intf/pncconf/pncconf.glade:4711 +#: src/emc/usr_intf/pncconf/pncconf.glade:4724 +#: src/emc/usr_intf/pncconf/pncconf.glade:4737 +#: src/emc/usr_intf/pncconf/pncconf.glade:4750 +#: src/emc/usr_intf/pncconf/pncconf.glade:4763 +#: src/emc/usr_intf/pncconf/pncconf.glade:4776 +#: src/emc/usr_intf/pncconf/pncconf.glade:4889 +#: src/emc/usr_intf/pncconf/pncconf.glade:4902 +#: src/emc/usr_intf/pncconf/pncconf.glade:4915 +#: src/emc/usr_intf/pncconf/pncconf.glade:4928 +#: src/emc/usr_intf/pncconf/pncconf.glade:4941 +#: src/emc/usr_intf/pncconf/pncconf.glade:4954 +#: src/emc/usr_intf/pncconf/pncconf.glade:4967 +#: src/emc/usr_intf/pncconf/pncconf.glade:4980 +#: src/emc/usr_intf/pncconf/pncconf.glade:5631 +#: src/emc/usr_intf/pncconf/pncconf.glade:5643 +#: src/emc/usr_intf/pncconf/pncconf.glade:5690 +msgid "%" +msgstr "%" -#: src/emc/usr_intf/axis/scripts/axis.py:2897 -#, python-format -msgid "Unhome Axis _%s" -msgstr "Dis-Azzera Asse _%s" +#: share/axis/tcl/axis.tcl:1777 +#, fuzzy +msgid "Rapid Override:" +msgstr "Superamento limite mandrino:" -#: src/emc/usr_intf/axis/scripts/axis.py:3040 -msgid "Run from here" -msgstr "Avvia da qui" +#: share/axis/tcl/axis.tcl:1819 +#, fuzzy +msgid "" +"Machinekit/AXIS version $version\n" +"\n" +"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff " +"Epler and Chris Radek.\n" +"\n" +"This is free software, and you are welcome to redistribute it under certain " +"conditions. See the file COPYING, included with Machinekit.\n" +"\n" +"Visit the Machinekit web site: " +msgstr "" +"LinuxCNC/AXIS versione $version \n" +"\n" +"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff " +"Epler e Chris Radek.\n" +"\n" +"Questo software è gratuito, ed è possibile ridistribuirlo sotto alcune " +"condizioni. Vedi il file COPYING, incluso in LinuxCNC.\n" +"Traduzione italiana: E. Lo Valvo \n" +"\n" +"Visita il sito web di LinuxCNC: " -#: src/emc/usr_intf/axis/scripts/axis.py:3335 -msgid "Error in ~/.axisrc" -msgstr "Errore in ~/.axisrc" +#: share/axis/tcl/axis.tcl:1847 +msgid "About AXIS" +msgstr "Informazioni su AXIS" -#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:102 -msgid "LinuxCNC Status" -msgstr "Stato LinuxCNC" +#: share/axis/tcl/axis.tcl:1876 +msgid "AXIS Quick Reference" +msgstr "Sommario AXIS" -#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:118 -msgid "Copy All" -msgstr "Copia Tutto" +#: share/axis/tcl/axis.tcl:2017 +#, fuzzy +msgid "AXIS with MachineKit $::version on $::machine" +msgstr "AXIS $::version su $::machine" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:29 -#, python-format -msgid "Insert tool %d and click continue when ready" -msgstr "Inserire utensile %d e cliccare continua quando pronto" +#: share/axis/tcl/axis.tcl:2019 +msgid "(no file)" +msgstr "(Nessun file)" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:31 -msgid "Remove the tool and click continue when ready" -msgstr "Rimuovere l'utensile e cliccare continua quando pronto" +#: share/axis/tcl/axis.tcl:2091 share/axis/tcl/axis.tcl:2096 +msgid "Position:" +msgstr "Posizione:" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 -#: src/emc/usr_intf/touchy/mdi.py:49 -msgid "Tool change" -msgstr "Cambio utensile" +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/gscreen/gscreen.py:3516 +msgid "Machine" +msgstr "Macchina" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 -msgid "Continue" -msgstr "Continuo" +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/touchy/touchy.glade:155 +msgid "Relative" +msgstr "Relativo" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:55 -msgid "AXIS Manual Toolchanger" -msgstr "AXIS Cambio utensile Manuale" +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3329 +msgid "Actual" +msgstr "Attuale" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:59 -msgid "" -"This window is part of the AXIS manual toolchanger. It is safe to close or " -"iconify this window, or it will close automatically after a few seconds." -msgstr "" -"Questa finestra fa parte del cambio utensile manuale di AXIS. Questa " -"finestra può essere chiusa o iconificata, ovvero si chiuderà automaticamente " -"dopo qualche secondo." +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3318 +msgid "Commanded" +msgstr "Comandato" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:507 -#, python-format -msgid "%s: Image to gcode" -msgstr "%s: Image to gcode (dall'immagine al codice G)" +#: share/axis/tcl/axis.tcl:2154 share/axis/tcl/axis.tcl:2328 +msgid "Joint:" +msgstr "articolazione:" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:508 -msgid "Image to gcode" -msgstr "Image to gcode (dall'immagine al codice G)" +#: share/axis/tcl/axis.tcl:2463 +msgid "Turn spindle counterclockwise [F10]" +msgstr "Ruota mandrino in senso antiorario [F10]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:518 -#, python-format -msgid "" -"Image size: %(w)d x %(h)d pixels\n" -"Minimum pixel value: %(min)d\n" -"Maximum pixel value: %(max)d" -msgstr "" -"Grandezza Immagine: %(w)d x %(h)d pixels\n" -"Valore pixel minimo: %(min)d\n" -"Valore pixel massimo: %(max)d" +#: share/axis/tcl/axis.tcl:2464 +msgid "Turn spindle clockwise [F9]" +msgstr "Ruota mandrino in senso orario [F9]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 -msgid "G20 (in)" -msgstr "G20 (in)" +#: share/axis/tcl/axis.tcl:2465 +msgid "Stop spindle [F9/F10]" +msgstr "Ferma mandrino [F9/F10]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 -msgid "G21 (mm)" -msgstr "G21 (mm)" +#: share/axis/tcl/axis.tcl:2466 +msgid "Turn spindle Faster [F12]" +msgstr "Aumenta velocità mandrino [F12]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 -#: src/emc/usr_intf/touchy/emc_interface.py:417 -msgid "None" -msgstr "Nulla" +#: share/axis/tcl/axis.tcl:2467 +msgid "Turn spindle Slower [F11]" +msgstr "Diminuisci velocità mandrino [F11]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 -msgid "White" -msgstr "Bianco" +#: share/axis/tcl/axis.tcl:2468 +msgid "Turn spindle brake on [Shift-B] or off [B]" +msgstr "Attiva [Maiusc-B] / Disattiva [B] freno mandrino" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 -msgid "Black" -msgstr "Nero" +#: share/axis/tcl/axis.tcl:2469 +msgid "Turn flood on or off [F8]" +msgstr "Liquido On/Off [F8]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Rows" -msgstr "Righe" +#: share/axis/tcl/axis.tcl:2470 +msgid "Turn mist on or off [F7]" +msgstr "Aria On/Off [F7]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Columns" -msgstr "Colonne" +#: share/axis/tcl/axis.tcl:2471 +msgid "Send active axis home [Home]" +msgstr "Muovi asse corrente a [Home]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Rows then Columns" -msgstr "Righe poi Colonne" +#: share/axis/tcl/axis.tcl:2472 +msgid "Set G54 offset for active axis [End]" +msgstr "Imposta offset G54 per asse corrente [End]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Columns then Rows" -msgstr "Colonne poi Righe" +#: share/axis/tcl/axis.tcl:2473 +msgid "Activate axis [X]" +msgstr "Attiva asse [X]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Positive" -msgstr "Positivo" +#: share/axis/tcl/axis.tcl:2474 +msgid "Activate axis [Y]" +msgstr "Attiva asse [Y]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Negative" -msgstr "Negativo" +#: share/axis/tcl/axis.tcl:2475 +msgid "Activate axis [Z]" +msgstr "Attiva asse [Z]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Alternating" -msgstr "Alternato" +#: share/axis/tcl/axis.tcl:2476 +msgid "Activate axis [A]" +msgstr "Attiva asse [A]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Up Milling" -msgstr "Fresatura sopra" +#: share/axis/tcl/axis.tcl:2477 +msgid "Activate axis [4]" +msgstr "Attiva asse [4]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Down Milling" -msgstr "Fresatura sotto" +#: share/axis/tcl/axis.tcl:2478 +msgid "Activate axis [5]" +msgstr "Attiva asse [5]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "Ball End" -msgstr "Testa sferica" +#: share/axis/tcl/axis.tcl:2479 share/axis/tcl/axis.tcl:2480 +msgid "Jog selected axis" +msgstr "Muove asse selezionato" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "Flat End" -msgstr "Fondo piatto" +#: share/axis/tcl/axis.tcl:2482 +msgid "Temporarily allow jogging outside machine limits [L]" +msgstr "Permetti movimento temporaneo oltre i limiti macchina [L]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "30 Degree" -msgstr "30 Gradi" +#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:47 +msgid "Spindle CW" +msgstr "Mandrino orario" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "45 Degree" -msgstr "45 Gradi" +#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:48 +msgid "Spindle CCW" +msgstr "Mandrino antiorario" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "60 Degree" -msgstr "60 Gradi" +#: src/emc/usr_intf/touchy/mdi.py:50 +#, fuzzy +msgid "Set tool number" +msgstr "Rinumera" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 -msgid "Secondary" -msgstr "Secondario" +#: src/emc/usr_intf/touchy/mdi.py:51 src/emc/usr_intf/gscreen/mdi.py:50 +msgid "Input control" +msgstr "Controllo Ingresso" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 -msgid "Full" -msgstr "Pieno" +#: src/emc/usr_intf/touchy/mdi.py:54 src/emc/usr_intf/touchy/mdi.py:55 +#: src/emc/usr_intf/gscreen/mdi.py:53 src/emc/usr_intf/gscreen/mdi.py:54 +msgid "Straight rapid" +msgstr "Movimento rapido" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:654 -msgid "Invert Image" -msgstr "Inverti immagine" +#: src/emc/usr_intf/touchy/mdi.py:56 src/emc/usr_intf/touchy/mdi.py:57 +#: src/emc/usr_intf/gscreen/mdi.py:55 src/emc/usr_intf/gscreen/mdi.py:56 +msgid "Straight feed" +msgstr "Movimento lineare" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:655 -msgid "Normalize Image" -msgstr "Normalizza immagine" +#: src/emc/usr_intf/touchy/mdi.py:58 src/emc/usr_intf/touchy/mdi.py:59 +#: src/emc/usr_intf/gscreen/mdi.py:57 src/emc/usr_intf/gscreen/mdi.py:58 +msgid "Arc CW" +msgstr "Arco orario" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:656 -msgid "Extend Image Border" -msgstr "Estendi Bordo Immagine" +#: src/emc/usr_intf/touchy/mdi.py:60 src/emc/usr_intf/touchy/mdi.py:61 +#: src/emc/usr_intf/gscreen/mdi.py:59 src/emc/usr_intf/gscreen/mdi.py:60 +msgid "Arc CCW" +msgstr "Arco antiorario" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:657 -msgid "Pixel Size (Units)" -msgstr "Grandezza pixel (Unità)" +#: src/emc/usr_intf/touchy/mdi.py:62 src/emc/usr_intf/touchy/mdi.py:63 +#: src/emc/usr_intf/gscreen/mdi.py:61 src/emc/usr_intf/gscreen/mdi.py:62 +msgid "Dwell" +msgstr "Sosta" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:658 -msgid "Depth (units)" -msgstr "Profondità (unità)" +#: src/emc/usr_intf/touchy/mdi.py:64 src/emc/usr_intf/gscreen/mdi.py:63 +msgid "Setup" +msgstr "Setup" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:659 -msgid "Tolerance (units)" -msgstr "Tolleranza (unità)" +#: src/emc/usr_intf/touchy/mdi.py:65 src/emc/usr_intf/gscreen/mdi.py:64 +msgid "Spindle synchronized feed" +msgstr "Avanzamento Mandrino sincronizzato" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:660 -msgid "Stepover (pixels)" -msgstr "Passo Y (pixels)" +#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:65 +msgid "Rigid tap" +msgstr "Maschiatura rigida" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:661 -msgid "Tool Diameter (units)" -msgstr "Diametro Utensile (unità)" +#: src/emc/usr_intf/touchy/mdi.py:67 src/emc/usr_intf/touchy/mdi.py:68 +#: src/emc/usr_intf/touchy/mdi.py:69 src/emc/usr_intf/touchy/mdi.py:70 +#: src/emc/usr_intf/gscreen/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:67 +#: src/emc/usr_intf/gscreen/mdi.py:68 src/emc/usr_intf/gscreen/mdi.py:69 +msgid "Probe" +msgstr "Sonda" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:662 -msgid "Tool Type" -msgstr "Tipo Utensile" +#: src/emc/usr_intf/touchy/mdi.py:71 src/emc/usr_intf/gscreen/mdi.py:70 +msgid "Radius compensation left" +msgstr "Compensazione raggio sinistra" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:663 -msgid "Feed Rate (units per minute)" -msgstr "Avanzamento (unità per minuto)" +#: src/emc/usr_intf/touchy/mdi.py:72 src/emc/usr_intf/gscreen/mdi.py:71 +msgid "Radius compensation right" +msgstr "Compensazione raggio destra" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:664 -msgid "Plunge Feed Rate (units per minute)" -msgstr "Affondamento (unità per minuto)" +#: src/emc/usr_intf/touchy/mdi.py:73 src/emc/usr_intf/gscreen/mdi.py:72 +msgid "Radius compensation left, immediate" +msgstr "Compensazione raggio sinistra, immediata" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:666 -msgid "Safety Height (units)" -msgstr "Altezza di sicurezza (unità)" +#: src/emc/usr_intf/touchy/mdi.py:74 src/emc/usr_intf/gscreen/mdi.py:73 +msgid "Radius compensation right, immediate" +msgstr "Compensazione raggio destra, immediata" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:667 -msgid "Scan Pattern" -msgstr "Schema di scansione" +#: src/emc/usr_intf/touchy/mdi.py:75 src/emc/usr_intf/gscreen/mdi.py:74 +msgid "Tool length offset" +msgstr "Offset lunghezza utensile" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:668 -msgid "Scan Direction" -msgstr "Direzione scansione" +#: src/emc/usr_intf/touchy/mdi.py:76 src/emc/usr_intf/gscreen/mdi.py:75 +msgid "Tool length offset immediate" +msgstr "Offset lunghezza utensile immediata" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:669 -msgid "Lace Bounding" -msgstr "Lace Bounding" +#: src/emc/usr_intf/touchy/mdi.py:77 src/emc/usr_intf/gscreen/mdi.py:76 +msgid "Motion in unoffset coordinates" +msgstr "Movimento in coordinate unoffset" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:670 -msgid "Contact Angle (degrees)" -msgstr "Angolo contatto (gradi)" +#: src/emc/usr_intf/touchy/mdi.py:78 src/emc/usr_intf/gscreen/mdi.py:77 +msgid "Continuous mode" +msgstr "Modo Continuo" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:671 -msgid "Spindle Speed (RPM)" -msgstr "Rotazione Mandrino (giri/min)" +#: src/emc/usr_intf/touchy/mdi.py:80 src/emc/usr_intf/gscreen/mdi.py:79 +msgid "Drill" +msgstr "Foratura" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:672 -msgid "Roughing offset (units, 0=no roughing)" -msgstr "Offset Sgrossatura (unita', 0=senza sgrossatura)" +#: src/emc/usr_intf/touchy/mdi.py:81 src/emc/usr_intf/gscreen/mdi.py:80 +msgid "Drill with dwell" +msgstr "Foratura con sosta" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:673 -msgid "Roughing depth per pass (units)" -msgstr "Altezza sgrossatura per passata (unita')" +#: src/emc/usr_intf/touchy/mdi.py:82 src/emc/usr_intf/gscreen/mdi.py:81 +msgid "Peck drill" +msgstr "Foratura profonda" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:740 -msgid "image-to-gcode: User pressed cancel" -msgstr "image-to-gcode: Utente ha premuto cancella" +#: src/emc/usr_intf/touchy/mdi.py:83 src/emc/usr_intf/gscreen/mdi.py:82 +msgid "Chip-break drill" +msgstr "Foratura rompi truciolo" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:753 -msgid "Depth images" -msgstr "Profondità immagini" +#: src/emc/usr_intf/touchy/mdi.py:84 src/emc/usr_intf/gscreen/mdi.py:83 +msgid "Bore" +msgstr "Alesatura" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:22 -msgid "LinuxCNC Debug Level" -msgstr "Livello Debug LinuxCNC" +#: src/emc/usr_intf/touchy/mdi.py:85 src/emc/usr_intf/gscreen/mdi.py:84 +msgid "Bore with dwell" +msgstr "Alesatura con sosta" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:23 -msgid "debuglevel" -msgstr "Livello Debug" +#: src/emc/usr_intf/touchy/mdi.py:86 src/emc/usr_intf/gscreen/mdi.py:85 +msgid "Offset all coordinate systems" +msgstr "Azzerramento completo sistema coordinate" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:36 -msgid "Configuration *" -msgstr "Configurazione *" +#: src/emc/usr_intf/touchy/mdi.py:87 src/emc/usr_intf/gscreen/mdi.py:86 +msgid "CSS Mode" +msgstr "Modo velocità taglio costante" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:37 -msgid "Version Numbers *" -msgstr "Versione Numeri *" +#: src/emc/usr_intf/touchy/emc_interface.py:410 +msgid "CCW" +msgstr "Antiorario" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:38 -msgid "NML *" -msgstr "NML *" +#: src/emc/usr_intf/touchy/emc_interface.py:410 +msgid "Stopped" +msgstr "Fermato" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:39 -msgid "RCS *" -msgstr "RCS *" +#: src/emc/usr_intf/touchy/emc_interface.py:410 +msgid "CW" +msgstr "Orario" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:40 -msgid "Task Issue" -msgstr "Risultato finale" +#: src/emc/usr_intf/touchy/touchy.glade:7 +msgid "LinuxCNC/Touchy" +msgstr "LinuxCNC/Touchy" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:41 -msgid "Motion Time" -msgstr "Tempo Movimento" +#. # Touchy is Copyright (c) 2009 Chris Radek # # Touchy 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 2 of the License, or # (at your option) any later version. # # Touchy 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. +#: src/emc/usr_intf/touchy/touchy.glade:11 +msgid "window1" +msgstr "Finestra1" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:43 -msgid "Interpreter List" -msgstr "Lista Interprete" +#: src/emc/usr_intf/touchy/touchy.glade:31 +msgid "xa" +msgstr "xa" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:47 -#, python-format -msgid "" -"Inifile setting for this debug level:\n" -"[EMC]DEBUG=0x%08x" -msgstr "" -"Impostazione file ini per questo livello di debug:\n" -"[EMC]DEBUG=0x%08x" +#: src/emc/usr_intf/touchy/touchy.glade:44 +msgid "xd" +msgstr "xd" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:81 -msgid " * This option can only be enabled in the inifile" -msgstr " * Questa opzione può essere abilitata solo nel file ini" +#: src/emc/usr_intf/touchy/touchy.glade:57 +msgid "yr" +msgstr "yr" -#: share/axis/tcl/axis.tcl:49 -msgid "_Open..." -msgstr "_Apri..." +#: src/emc/usr_intf/touchy/touchy.glade:68 +msgid "ya" +msgstr "ya" -#: share/axis/tcl/axis.tcl:53 -msgid "Recent _Files" -msgstr "_File recenti" +#: src/emc/usr_intf/touchy/touchy.glade:81 +msgid "yd" +msgstr "yd" -#: share/axis/tcl/axis.tcl:57 -msgid "_Edit..." -msgstr "_Modifica..." +#: src/emc/usr_intf/touchy/touchy.glade:94 +msgid "zr" +msgstr "zr" -#: share/axis/tcl/axis.tcl:60 -msgid "Ctrl-R" -msgstr "Ctrl-R" +#: src/emc/usr_intf/touchy/touchy.glade:105 +msgid "za" +msgstr "za" -#: share/axis/tcl/axis.tcl:62 -msgid "_Reload" -msgstr "_Ricarica" +#: src/emc/usr_intf/touchy/touchy.glade:118 +msgid "zd" +msgstr "zd" -#: share/axis/tcl/axis.tcl:65 -msgid "Ctrl-S" -msgstr "Ctrl-S" +#: src/emc/usr_intf/touchy/touchy.glade:131 +#: src/emc/usr_intf/gscreen/gscreen.glade:85 +#: src/emc/usr_intf/gscreen/gscreen.glade:213 +#: src/emc/usr_intf/gscreen/gscreen.glade:343 +#: src/emc/usr_intf/gscreen/gscreen.glade:471 +#: src/emc/usr_intf/gscreen/gscreen.glade:599 +#: src/emc/usr_intf/gscreen/gscreen.glade:727 +#: src/emc/usr_intf/gscreen/gscreen.glade:855 +#: src/emc/usr_intf/gscreen/gscreen.glade:983 +#: src/emc/usr_intf/gscreen/gscreen.glade:1111 +msgid "DTG" +msgstr "DTG" -#: share/axis/tcl/axis.tcl:67 -msgid "_Save gcode as..." -msgstr "_Salva g-code con nome..." +#: src/emc/usr_intf/touchy/touchy.glade:143 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Absolute" +msgstr "Assoluto" -#: share/axis/tcl/axis.tcl:71 -msgid "_Properties..." -msgstr "_Proprietà..." +#: src/emc/usr_intf/touchy/touchy.glade:165 +msgid "xr" +msgstr "xr" -#: share/axis/tcl/axis.tcl:77 -msgid "Edit _tool table..." -msgstr "Modifica _tabella utensili..." +#: src/emc/usr_intf/touchy/touchy.glade:176 +msgid "ar" +msgstr "ar" -#: share/axis/tcl/axis.tcl:81 -msgid "Reload tool ta_ble" -msgstr "Ricarica ta_bella utensile" +#: src/emc/usr_intf/touchy/touchy.glade:188 +msgid "br" +msgstr "br" -#: share/axis/tcl/axis.tcl:87 -msgid "_Ladder Editor..." -msgstr "Editore _Ladder..." +#: src/emc/usr_intf/touchy/touchy.glade:200 +msgid "cr" +msgstr "cr" -#: share/axis/tcl/axis.tcl:99 -msgid "Toggle _Emergency Stop" -msgstr "Stop _Emergenza On/Off" +#: src/emc/usr_intf/touchy/touchy.glade:212 +msgid "ur" +msgstr "ur" -#: share/axis/tcl/axis.tcl:104 -msgid "Toggle _Machine Power" -msgstr "_Macchina On/Off" +#: src/emc/usr_intf/touchy/touchy.glade:224 +msgid "vr" +msgstr "vr" -#: share/axis/tcl/axis.tcl:111 -msgid "_Run program" -msgstr "Esegui prog_ramma" +#: src/emc/usr_intf/touchy/touchy.glade:236 +msgid "wr" +msgstr "wr" -#: share/axis/tcl/axis.tcl:115 -msgid "Ru_n from selected line" -msgstr "Avvia dalla li_nea selezionata" +#: src/emc/usr_intf/touchy/touchy.glade:248 +msgid "aa" +msgstr "aa" -#: share/axis/tcl/axis.tcl:120 -msgid "S_tep" -msgstr "Pa_sso" +#: src/emc/usr_intf/touchy/touchy.glade:262 +msgid "ba" +msgstr "ba" -#: share/axis/tcl/axis.tcl:125 -msgid "_Pause" -msgstr "_Pausa" +#: src/emc/usr_intf/touchy/touchy.glade:276 +msgid "ca" +msgstr "ca" -#: share/axis/tcl/axis.tcl:130 -msgid "Re_sume" -msgstr "Ripren_de" +#: src/emc/usr_intf/touchy/touchy.glade:290 +msgid "ua" +msgstr "ua" -#: share/axis/tcl/axis.tcl:140 -msgid "Stop at M_1" -msgstr "Ferma a M_1" +#: src/emc/usr_intf/touchy/touchy.glade:304 +msgid "va" +msgstr "va" -#: share/axis/tcl/axis.tcl:145 -msgid "Skip lines with '_/'" -msgstr "Salta linee con '_/'" +#: src/emc/usr_intf/touchy/touchy.glade:318 +msgid "wa" +msgstr "wa" -#: share/axis/tcl/axis.tcl:150 -msgid "Ctrl-M" -msgstr "Ctrl-M" +#: src/emc/usr_intf/touchy/touchy.glade:332 +msgid "ad" +msgstr "ad" -#: share/axis/tcl/axis.tcl:152 -msgid "Clear MDI h_istory" -msgstr "Cancella stor_ia MDI " +#: src/emc/usr_intf/touchy/touchy.glade:346 +msgid "bd" +msgstr "bd" -#: share/axis/tcl/axis.tcl:154 -msgid "Ctrl-H" -msgstr "Ctrl-H" +#: src/emc/usr_intf/touchy/touchy.glade:360 +msgid "cd" +msgstr "cd" -#: share/axis/tcl/axis.tcl:156 -msgid "Copy from MDI hist_ory" -msgstr "Copia da st_oria MDI" +#: src/emc/usr_intf/touchy/touchy.glade:374 +msgid "ud" +msgstr "ud" -#: share/axis/tcl/axis.tcl:158 -msgid "Ctrl-Shift-H" -msgstr "Ctrl-Maiusc-H" +#: src/emc/usr_intf/touchy/touchy.glade:388 +msgid "vd" +msgstr "vd" -#: share/axis/tcl/axis.tcl:160 -msgid "Paste to MDI histor_y" -msgstr "Incolla da stori_a MDI" +#: src/emc/usr_intf/touchy/touchy.glade:402 +msgid "wd" +msgstr "wd" -#: share/axis/tcl/axis.tcl:166 -msgid "_Calibration" -msgstr "_Calibrazione" +#: src/emc/usr_intf/touchy/touchy.glade:448 +msgid "Estop Reset" +msgstr "Estop Reset" -#: share/axis/tcl/axis.tcl:170 -msgid "Show _Hal Configuration" -msgstr "Mostra configurazione _HAL" +#: src/emc/usr_intf/touchy/touchy.glade:459 +#: src/emc/usr_intf/stepconf/pport1.glade:21 +#: src/emc/usr_intf/stepconf/pport2.glade:1409 +#: src/emc/usr_intf/gscreen/gscreen.glade:2442 +msgid "Estop" +msgstr "Estop" -#: share/axis/tcl/axis.tcl:174 -msgid "H_al Meter" -msgstr "H_al Meter" +#: src/emc/usr_intf/touchy/touchy.glade:475 +msgid "Machine On" +msgstr "Macchina On" -#: share/axis/tcl/axis.tcl:178 -msgid "Ha_l Scope" -msgstr "Ha_l Scope" +#: src/emc/usr_intf/touchy/touchy.glade:490 +msgid "Machine Off" +msgstr "Macchina Off" -#: share/axis/tcl/axis.tcl:182 -msgid "Sho_w LinuxCNC Status" -msgstr "Most_ra Stato LinuxCNC" +#: src/emc/usr_intf/touchy/touchy.glade:531 +msgid "Power" +msgstr "Accensione" -#: share/axis/tcl/axis.tcl:186 -msgid "Set _Debug Level" -msgstr "Imposta Livello _Debug" +#: src/emc/usr_intf/touchy/touchy.glade:562 +msgid "Unhome All" +msgstr "Dis-Azzera tutto" -#: share/axis/tcl/axis.tcl:192 -msgid "Homin_g" -msgstr "A_zzeramento" +#: src/emc/usr_intf/touchy/touchy.glade:588 +msgid "Home Selected" +msgstr "Azzera Selezionato" -#: share/axis/tcl/axis.tcl:196 -msgid "_Unhoming" -msgstr "_Dis-Azzeramento" +#: src/emc/usr_intf/touchy/touchy.glade:603 +msgid "Unhome Selected" +msgstr "Dis-Azzera Selezionato" -#: share/axis/tcl/axis.tcl:200 -msgid "_Zero coordinate system" -msgstr "Sistema coordinate _Zero" +#: src/emc/usr_intf/touchy/touchy.glade:625 +msgid "Homing" +msgstr "Azzeramento" -#: share/axis/tcl/axis.tcl:204 -msgid "P1 G5_4" -msgstr "P1 G5_4" +#: src/emc/usr_intf/touchy/touchy.glade:644 +msgid "Startup" +msgstr "Partenza" -#: share/axis/tcl/axis.tcl:208 -msgid "P2 G5_5" -msgstr "P2 G5_5" +#: src/emc/usr_intf/touchy/touchy.glade:727 +msgid "G" +msgstr "G" -#: share/axis/tcl/axis.tcl:212 -msgid "P3 G5_6" -msgstr "P3 G5_6" +#: src/emc/usr_intf/touchy/touchy.glade:929 +msgid "." +msgstr "." -#: share/axis/tcl/axis.tcl:216 -msgid "P4 G5_7" -msgstr "P4 G5_7" +#: src/emc/usr_intf/touchy/touchy.glade:963 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "0" +msgstr "0" -#: share/axis/tcl/axis.tcl:220 -msgid "P5 G5_8" -msgstr "P5 G5_8" +#: src/emc/usr_intf/touchy/touchy.glade:980 +msgid "3" +msgstr "3" -#: share/axis/tcl/axis.tcl:224 -msgid "P6 G5_9" -msgstr "P6 G5_9" +#: src/emc/usr_intf/touchy/touchy.glade:997 +msgid "2" +msgstr "2" -#: share/axis/tcl/axis.tcl:228 -msgid "P7 G59._1" -msgstr "P7 G59._1" +#: src/emc/usr_intf/touchy/touchy.glade:1014 +msgid "1" +msgstr "1" -#: share/axis/tcl/axis.tcl:232 -msgid "P8 G59._2" -msgstr "P8 G59._2" +#: src/emc/usr_intf/touchy/touchy.glade:1031 +msgid "6" +msgstr "6" -#: share/axis/tcl/axis.tcl:236 -msgid "P9 G59._3" -msgstr "P9 G59._3" +#: src/emc/usr_intf/touchy/touchy.glade:1048 +msgid "5" +msgstr "5" -#: share/axis/tcl/axis.tcl:240 -msgid "_G92" -msgstr "_G92" +#: src/emc/usr_intf/touchy/touchy.glade:1065 +msgid "4" +msgstr "4" -#: share/axis/tcl/axis.tcl:248 -msgid "Tool touch off to wor_kpiece" -msgstr "Contatto utensile su pe_zzo" +#: src/emc/usr_intf/touchy/touchy.glade:1082 +msgid "9" +msgstr "9" -#: share/axis/tcl/axis.tcl:254 -msgid "Tool touch off to _fixture" -msgstr "Contatto utensile su _fissaggio" +#: src/emc/usr_intf/touchy/touchy.glade:1097 +msgid "8" +msgstr "8" -#: share/axis/tcl/axis.tcl:262 -msgid "_Top view" -msgstr "Vis_ta Superiore" +#: src/emc/usr_intf/touchy/touchy.glade:1112 +msgid "7" +msgstr "7" -#: share/axis/tcl/axis.tcl:269 -msgid "_Rotated Top view" -msgstr "Vista superiore, _Ruotata" +#: src/emc/usr_intf/touchy/touchy.glade:1297 +msgid "Flood On" +msgstr "Refrigerante On" -#: share/axis/tcl/axis.tcl:276 -msgid "_Side view" -msgstr "Vi_sta laterale" +#: src/emc/usr_intf/touchy/touchy.glade:1308 +msgid "Flood Off" +msgstr "Refrigerante Off" -#: share/axis/tcl/axis.tcl:283 -msgid "_Front view" -msgstr "Vista _frontale" +#: src/emc/usr_intf/touchy/touchy.glade:1324 +msgid "Mist On" +msgstr "Aria On" -#: share/axis/tcl/axis.tcl:290 -msgid "_Perspective view" -msgstr "Vista _Prospettica" +#: src/emc/usr_intf/touchy/touchy.glade:1339 +msgid "Mist Off" +msgstr "Aria Off" -#: share/axis/tcl/axis.tcl:299 -msgid "Display _Inches" -msgstr "Visualizza Poll_ici" +#: src/emc/usr_intf/touchy/touchy.glade:1362 +msgid "Coolant" +msgstr "Refrigerante" -#: share/axis/tcl/axis.tcl:306 -msgid "Display _MM" -msgstr "Visualizza _MM" +#: src/emc/usr_intf/touchy/touchy.glade:1448 +msgid "Spindle Off" +msgstr "Mandrino Off" -#: share/axis/tcl/axis.tcl:313 -msgid "S_how program" -msgstr "Mos_tra Programma" +#: src/emc/usr_intf/touchy/touchy.glade:1501 +#: src/emc/usr_intf/touchy/touchy.glade:2578 +msgid "Spindle speed:" +msgstr "Velocità Mandrino:" -#: share/axis/tcl/axis.tcl:318 -msgid "Show program r_apids" -msgstr "Mostra r_apidi programma" +#: src/emc/usr_intf/touchy/touchy.glade:1513 +#: src/emc/usr_intf/touchy/touchy.glade:2707 +msgid "label26" +msgstr "etichetta26" -#: share/axis/tcl/axis.tcl:323 -msgid "Alpha-_blend program" -msgstr "Alpha-_blend program" +#: src/emc/usr_intf/touchy/touchy.glade:1539 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4226 +msgid "Spindle" +msgstr "Mandrino" -#: share/axis/tcl/axis.tcl:328 -msgid "Sho_w live plot" -msgstr "Mostr_a percorso attuale" +#: src/emc/usr_intf/touchy/touchy.glade:1597 +msgid "file.ngc" +msgstr "file.ngc" -#: share/axis/tcl/axis.tcl:333 -msgid "Show too_l" -msgstr "Mostra utensi_le" +#: src/emc/usr_intf/touchy/touchy.glade:1812 +#: src/emc/usr_intf/touchy/touchy.glade:2017 +#: src/emc/usr_intf/touchy/touchy.glade:2037 +#: src/emc/usr_intf/touchy/touchy.glade:2057 +#: src/emc/usr_intf/touchy/touchy.glade:2077 +#: src/emc/usr_intf/touchy/touchy.glade:2097 +#: src/emc/usr_intf/touchy/touchy.glade:2117 +#: src/emc/usr_intf/touchy/touchy.glade:2137 +#: src/emc/usr_intf/touchy/touchy.glade:2157 +#: src/emc/usr_intf/touchy/touchy.glade:2177 +msgid "M2" +msgstr "M2" -#: share/axis/tcl/axis.tcl:338 -msgid "Show e_xtents" -msgstr "Mostra limi_ti" +#: src/emc/usr_intf/touchy/touchy.glade:2244 +#: src/emc/usr_intf/touchy/touchy.glade:2374 +msgid "Page" +msgstr "Pagina" -#: share/axis/tcl/axis.tcl:343 -msgid "Show o_ffsets" -msgstr "Mostra limi_ti" +#: src/emc/usr_intf/touchy/touchy.glade:2308 +msgid "Start Point" +msgstr "Punto Iniziale" -#: share/axis/tcl/axis.tcl:348 -msgid "Sh_ow machine limits" -msgstr "M_ostra limiti macchina" +#: src/emc/usr_intf/touchy/touchy.glade:2452 +msgid "Loaded File" +msgstr "File caricato" -#: share/axis/tcl/axis.tcl:353 -msgid "Show v_elocity" -msgstr "Mostra v_elocità" +#: src/emc/usr_intf/touchy/touchy.glade:2488 +msgid "Loaded file:" +msgstr "File caricato:" -#: share/axis/tcl/axis.tcl:358 -msgid "Show _distance to go" -msgstr "Mostra _distanza da percorrere" +#: src/emc/usr_intf/touchy/touchy.glade:2499 +msgid "Interpreted line:" +msgstr "Linea interpretata:" -#: share/axis/tcl/axis.tcl:363 -msgid "Large coordinate fo_nt" -msgstr "Fo_nt coordinate grande" +#: src/emc/usr_intf/touchy/touchy.glade:2513 +msgid "Distance:" +msgstr "Distanza:" -#: share/axis/tcl/axis.tcl:366 -msgid "Ctrl-K" -msgstr "Ctrl-K" +#: src/emc/usr_intf/touchy/touchy.glade:2526 +#: src/emc/usr_intf/stepconf/main_page.glade:23 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Velocity:" +msgstr "Velocità:" -#: share/axis/tcl/axis.tcl:368 -msgid "_Clear live plot" -msgstr "_Cancella percorso attuale" +#: src/emc/usr_intf/touchy/touchy.glade:2539 +msgid "Delay:" +msgstr "Ritardo:" -#: share/axis/tcl/axis.tcl:377 -msgid "Show commanded position" -msgstr "Mostra posizione comandata" +#: src/emc/usr_intf/touchy/touchy.glade:2552 +msgid "On limit switch:" +msgstr "Contatto sul limite:" -#: share/axis/tcl/axis.tcl:384 -msgid "Show actual position" -msgstr "Mostra posizione attuale" +#: src/emc/usr_intf/touchy/touchy.glade:2565 +msgid "Spindle direction:" +msgstr "Direzione Mandrino:" -#: share/axis/tcl/axis.tcl:393 -msgid "Show machine position" -msgstr "Mostra posizione macchina" +#: src/emc/usr_intf/touchy/touchy.glade:2591 +msgid "Loaded tool:" +msgstr "Utensile caricato:" -#: share/axis/tcl/axis.tcl:400 -msgid "Show relative position" -msgstr "Mostra posizione relativa" +#: src/emc/usr_intf/touchy/touchy.glade:2604 +#: src/emc/usr_intf/touchy/touchy.glade:2955 +msgid "label19" +msgstr "etichetta19" -#: share/axis/tcl/axis.tcl:409 -msgid "Joint mode" -msgstr "Modo joint" +#: src/emc/usr_intf/touchy/touchy.glade:2617 +msgid "label20" +msgstr "etichetta20" -#: share/axis/tcl/axis.tcl:416 -msgid "World mode" -msgstr "Modo globale" +#: src/emc/usr_intf/touchy/touchy.glade:2632 +#: src/emc/usr_intf/touchy/touchy.glade:2779 +#: src/emc/usr_intf/touchy/touchy.glade:2808 +#: src/emc/usr_intf/touchy/touchy.glade:2912 +#: src/emc/usr_intf/touchy/touchy.glade:2927 +msgid "label21" +msgstr "etichetta21" -#: share/axis/tcl/axis.tcl:425 -msgid "_About AXIS" -msgstr "Informazioni su _AXIS" +#: src/emc/usr_intf/touchy/touchy.glade:2647 +msgid "label22" +msgstr "etichetta22" -#: share/axis/tcl/axis.tcl:429 -msgid "Quick _Reference" -msgstr "Guida _Rapida" +#: src/emc/usr_intf/touchy/touchy.glade:2662 +msgid "label23" +msgstr "etichetta23" -#: share/axis/tcl/axis.tcl:439 -msgid "_Machine" -msgstr "_Macchina" +#: src/emc/usr_intf/touchy/touchy.glade:2677 +msgid "label24" +msgstr "etichetta24" -#: share/axis/tcl/axis.tcl:443 -msgid "_View" -msgstr "_Visualizzare" +#: src/emc/usr_intf/touchy/touchy.glade:2692 +msgid "label25" +msgstr "etichetta25" -#: share/axis/tcl/axis.tcl:456 -msgid "Toggle Emergency Stop [F1]" -msgstr "Stop Emergenza On/Off [F1]" +#: src/emc/usr_intf/touchy/touchy.glade:2722 +msgid "label27" +msgstr "etichetta27" -#: share/axis/tcl/axis.tcl:465 -msgid "Toggle Machine power [F2]" -msgstr "Macchina ON/OFF [F2]" +#: src/emc/usr_intf/touchy/touchy.glade:2737 +msgid "Prepped tool:" +msgstr "Utensile preparato:" -#: share/axis/tcl/axis.tcl:476 -msgid "Open G-Code file [O]" -msgstr "Apre file G-code [O]" +#: src/emc/usr_intf/touchy/touchy.glade:2750 +msgid "label28" +msgstr "etichetta28" -#: share/axis/tcl/axis.tcl:484 -msgid "Reopen current file [Control-R]" -msgstr "Ricarica file corrente [Control-R]" +#: src/emc/usr_intf/touchy/touchy.glade:2765 +msgid "Running line:" +msgstr "Linea corrente:" -#: share/axis/tcl/axis.tcl:494 -msgid "Begin executing current file [R]" -msgstr "Esegui file corrente [R]" +#: src/emc/usr_intf/touchy/touchy.glade:2794 +msgid "XY Rotation:" +msgstr "Rotazione XY:" -#: share/axis/tcl/axis.tcl:502 -msgid "Execute next line [T]" -msgstr "Esegui codice riga successiva [T]" +#: src/emc/usr_intf/touchy/touchy.glade:2823 +msgid "Tool length:" +msgstr "Lunghezza Utensile:" -#: share/axis/tcl/axis.tcl:510 -msgid "Pause [P] / resume [S] execution" -msgstr "Pausa [P] / riprendi [S] esecuzione" +#: src/emc/usr_intf/touchy/touchy.glade:2836 +msgid "label52" +msgstr "etichetta52" -#: share/axis/tcl/axis.tcl:518 -msgid "Stop program execution [ESC]" -msgstr "Ferma esecuzione programma [ESC]" +#: src/emc/usr_intf/touchy/touchy.glade:2851 +msgid "" +"G1 G2 G3\n" +"M1 M2 M3\n" +"F1 S1" +msgstr "" +"G1 G2 G3\n" +"M1 M2 M3\n" +"F1 S1" -#: share/axis/tcl/axis.tcl:528 -msgid "Toggle skip lines with '/' [Alt-M /]" -msgstr "Scambio Salto linee con '_/' [Alt-M /]" +#: src/emc/usr_intf/touchy/touchy.glade:2870 +msgid "Active codes:" +msgstr "Codici attivi:" -#: share/axis/tcl/axis.tcl:535 -msgid "Toggle optional pause [Alt-M 1]" -msgstr "Scambio pausa opzionale [Alt-M 1]" +#: src/emc/usr_intf/touchy/touchy.glade:2883 +msgid "G5x Offset:" +msgstr "G5x Offset:" -#: share/axis/tcl/axis.tcl:544 -msgid "Zoom in" -msgstr "Ingrandisci" +#: src/emc/usr_intf/touchy/touchy.glade:2898 +msgid "G92 Offset:" +msgstr "G92 Offset:" -#: share/axis/tcl/axis.tcl:552 -msgid "Zoom out" -msgstr "Riduci" +#: src/emc/usr_intf/touchy/touchy.glade:2942 +msgid "Loaded file lines:" +msgstr "Linee File caricate:" -#: share/axis/tcl/axis.tcl:560 -msgid "Top view" -msgstr "Vista superiore" +#: src/emc/usr_intf/touchy/touchy.glade:2971 +msgid "Pockets:" +msgstr "Tasche:" -#: share/axis/tcl/axis.tcl:568 -msgid "Rotated top view" -msgstr "Vista superiore, ruotata" +#: src/emc/usr_intf/touchy/touchy.glade:2984 +msgid "" +"1\n" +"2\n" +"3" +msgstr "" +"1\n" +"2\n" +"3" -#: share/axis/tcl/axis.tcl:576 -msgid "Side view" -msgstr "Vista laterale" +#: src/emc/usr_intf/touchy/touchy.glade:3009 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6414 +msgid "Status" +msgstr "Stato" -#: share/axis/tcl/axis.tcl:584 -msgid "Front view" -msgstr "Vista _frontale" +#: src/emc/usr_intf/touchy/touchy.glade:3038 +msgid "Control Font:" +msgstr "Font Controllo:" -#: share/axis/tcl/axis.tcl:592 -msgid "Perspective view" -msgstr "Vista prospettica" +#: src/emc/usr_intf/touchy/touchy.glade:3050 +msgid "DRO Font:" +msgstr "Font DRO:" -#: share/axis/tcl/axis.tcl:600 -msgid "Toggle between Drag and Rotate Mode [D]" -msgstr "Scambia tra il modo Trascina e Ruota [D]" +#: src/emc/usr_intf/touchy/touchy.glade:3064 +msgid "Error Font:" +msgstr "Font Errori: " -#: share/axis/tcl/axis.tcl:615 -msgid "Clear live plot [Ctrl-K]" -msgstr "Cancella percorso attuale [Ctrl-K]" +#: src/emc/usr_intf/touchy/touchy.glade:3081 +msgid "ControlFont" +msgstr "Font Controllo" -#: share/axis/tcl/axis.tcl:766 -msgid "Manual Control [F3]" -msgstr "Controllo manuale [F3]" +#: src/emc/usr_intf/touchy/touchy.glade:3100 +msgid "DRO Font" +msgstr "Font DRO" -#: share/axis/tcl/axis.tcl:767 -msgid "MDI [F5]" -msgstr "MDI [F5]" +#: src/emc/usr_intf/touchy/touchy.glade:3121 +msgid "Error Font" +msgstr "Font Errori" -#: share/axis/tcl/axis.tcl:781 share/axis/tcl/axis.tcl:2036 -#: share/axis/tcl/axis.tcl:2203 -msgid "Axis:" -msgstr "Asse:" +#: src/emc/usr_intf/touchy/touchy.glade:3139 +msgid "Listing Font:" +msgstr "Font Listato:" -#: share/axis/tcl/axis.tcl:1102 -msgid "Home Axis" -msgstr "Azzera Asse" +#: src/emc/usr_intf/touchy/touchy.glade:3156 +msgid "Listing Font" +msgstr "Font Listato" -#: share/axis/tcl/axis.tcl:1176 -msgid "Spindle:" -msgstr "Mandrino:" +#: src/emc/usr_intf/touchy/touchy.glade:3176 +msgid "Hide pointer" +msgstr "Nascondi puntatore" -#: share/axis/tcl/axis.tcl:1223 src/emc/usr_intf/touchy/touchy.glade:946 -msgid "-" -msgstr "-" +#: src/emc/usr_intf/touchy/touchy.glade:3187 +msgid "Show pointer" +msgstr "Mostra puntatore" -#: share/axis/tcl/axis.tcl:1237 -msgid "+" -msgstr "+" +#: src/emc/usr_intf/touchy/touchy.glade:3214 +msgid "Theme:" +msgstr "Tema:" -#: share/axis/tcl/axis.tcl:1242 -msgid "Brake" -msgstr "Freno" +#: src/emc/usr_intf/touchy/touchy.glade:3228 +msgid "default\n" +msgstr "default\n" -#: share/axis/tcl/axis.tcl:1289 -msgid "Coolant:" -msgstr "Refrigerante:" +#: src/emc/usr_intf/touchy/touchy.glade:3252 +msgid "Display Options" +msgstr "Opzioni Visualizzazione" -#: share/axis/tcl/axis.tcl:1294 -msgid "Mist" -msgstr "Aria" +#: src/emc/usr_intf/touchy/touchy.glade:3286 +#: src/emc/usr_intf/stepconf/base.glade:867 +#: src/emc/usr_intf/gscreen/gscreen.glade:3664 +msgid "Inch" +msgstr "Pollici" -#: share/axis/tcl/axis.tcl:1299 -msgid "Flood" -msgstr "Refrigerante" +#: src/emc/usr_intf/touchy/touchy.glade:3349 +msgid "Position Readout" +msgstr "Posizione corrente" -#: share/axis/tcl/axis.tcl:1371 -msgid "History:" -msgstr "Storia:" +#: src/emc/usr_intf/touchy/touchy.glade:3379 +msgid "Workpiece" +msgstr "Pezzo" -#: share/axis/tcl/axis.tcl:1394 -msgid "MDI Command:" -msgstr "Comando MDI:" +#: src/emc/usr_intf/touchy/touchy.glade:3390 +msgid "Fixture" +msgstr "Fissaggio" -#: share/axis/tcl/axis.tcl:1403 -msgid "Go" -msgstr "Esegui" +#: src/emc/usr_intf/touchy/touchy.glade:3410 +msgid "Tool Setting" +msgstr "Impostazoni Utensile" -#: share/axis/tcl/axis.tcl:1409 -msgid "Active G-Codes:" -msgstr "Codici G attivi:" +#: src/emc/usr_intf/touchy/touchy.glade:3441 +msgid "Delete / lines" +msgstr "Cancella linee /" -#: share/axis/tcl/axis.tcl:1487 -msgid "Preview" -msgstr "Visualizzare" +#: src/emc/usr_intf/touchy/touchy.glade:3456 +msgid "Keep / lines" +msgstr "Mantieni linee /" -#: share/axis/tcl/axis.tcl:1488 -msgid "DRO" -msgstr "DRO (Quote)" +#: src/emc/usr_intf/touchy/touchy.glade:3473 +msgid "Pause on M1" +msgstr "Pausa con M1" -#: share/axis/tcl/axis.tcl:1575 share/axis/tcl/axis.tcl:1588 -msgid "Jog Speed:" -msgstr "Velocità jog:" +#: src/emc/usr_intf/touchy/touchy.glade:3484 +msgid "Ignore M1" +msgstr "Ignora M1" -#: share/axis/tcl/axis.tcl:1600 -msgid "Max Velocity:" -msgstr "Velocita' Massima:" +#: src/emc/usr_intf/touchy/touchy.glade:3504 +msgid "Program Options" +msgstr "Opzioni Programma" -#: share/axis/tcl/axis.tcl:1629 -msgid "Spindle Override:" -msgstr "Superamento limite mandrino:" +#: src/emc/usr_intf/touchy/touchy.glade:3531 +#: src/emc/usr_intf/gscreen/gscreen.glade:2200 +msgid "Preferences" +msgstr "Preferenze" -#: share/axis/tcl/axis.tcl:1631 share/axis/tcl/axis.tcl:1671 -#: src/emc/usr_intf/pncconf/pncconf.glade:3141 -#: src/emc/usr_intf/pncconf/pncconf.glade:3154 -#: src/emc/usr_intf/pncconf/pncconf.glade:3167 -#: src/emc/usr_intf/pncconf/pncconf.glade:3180 -#: src/emc/usr_intf/pncconf/pncconf.glade:3193 -#: src/emc/usr_intf/pncconf/pncconf.glade:3206 -#: src/emc/usr_intf/pncconf/pncconf.glade:3219 -#: src/emc/usr_intf/pncconf/pncconf.glade:3232 -#: src/emc/usr_intf/pncconf/pncconf.glade:3345 -#: src/emc/usr_intf/pncconf/pncconf.glade:3358 -#: src/emc/usr_intf/pncconf/pncconf.glade:3371 -#: src/emc/usr_intf/pncconf/pncconf.glade:3384 -#: src/emc/usr_intf/pncconf/pncconf.glade:3397 -#: src/emc/usr_intf/pncconf/pncconf.glade:3410 -#: src/emc/usr_intf/pncconf/pncconf.glade:3516 -#: src/emc/usr_intf/pncconf/pncconf.glade:3527 -#: src/emc/usr_intf/pncconf/pncconf.glade:4022 -#: src/emc/usr_intf/pncconf/pncconf.glade:4035 -#: src/emc/usr_intf/pncconf/pncconf.glade:4048 -#: src/emc/usr_intf/pncconf/pncconf.glade:4061 -#: src/emc/usr_intf/pncconf/pncconf.glade:4074 -#: src/emc/usr_intf/pncconf/pncconf.glade:4087 -#: src/emc/usr_intf/pncconf/pncconf.glade:4100 -#: src/emc/usr_intf/pncconf/pncconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:4226 -#: src/emc/usr_intf/pncconf/pncconf.glade:4239 -#: src/emc/usr_intf/pncconf/pncconf.glade:4252 -#: src/emc/usr_intf/pncconf/pncconf.glade:4265 -#: src/emc/usr_intf/pncconf/pncconf.glade:4278 -#: src/emc/usr_intf/pncconf/pncconf.glade:4291 -#: src/emc/usr_intf/pncconf/pncconf.glade:4397 -#: src/emc/usr_intf/pncconf/pncconf.glade:4408 -#: src/emc/usr_intf/pncconf/pncconf.glade:4903 -#: src/emc/usr_intf/pncconf/pncconf.glade:4916 -#: src/emc/usr_intf/pncconf/pncconf.glade:4929 -#: src/emc/usr_intf/pncconf/pncconf.glade:4942 -#: src/emc/usr_intf/pncconf/pncconf.glade:4955 -#: src/emc/usr_intf/pncconf/pncconf.glade:4968 -#: src/emc/usr_intf/pncconf/pncconf.glade:4981 -#: src/emc/usr_intf/pncconf/pncconf.glade:4994 -#: src/emc/usr_intf/pncconf/pncconf.glade:5107 -#: src/emc/usr_intf/pncconf/pncconf.glade:5120 -#: src/emc/usr_intf/pncconf/pncconf.glade:5133 -#: src/emc/usr_intf/pncconf/pncconf.glade:5146 -#: src/emc/usr_intf/pncconf/pncconf.glade:5159 -#: src/emc/usr_intf/pncconf/pncconf.glade:5172 -#: src/emc/usr_intf/pncconf/pncconf.glade:5278 -#: src/emc/usr_intf/pncconf/pncconf.glade:5289 -#: src/emc/usr_intf/pncconf/pncconf.glade:5582 -#: src/emc/usr_intf/pncconf/pncconf.glade:5631 -#: src/emc/usr_intf/pncconf/pncconf.glade:5641 -msgid "%" -msgstr "%" +#: src/emc/usr_intf/touchy/touchy.glade:3567 +#: src/emc/usr_intf/gscreen/gscreen.glade:1425 +msgid "FO: 100%" +msgstr "FO: 100%" -#: share/axis/tcl/axis.tcl:1711 -msgid "" -"LinuxCNC/AXIS version $version\n" -"\n" -"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff " -"Epler and Chris Radek.\n" -"\n" -"This is free software, and you are welcome to redistribute it under certain " -"conditions. See the file COPYING, included with LinuxCNC.\n" -"\n" -"Visit the LinuxCNC web site: " -msgstr "" -"LinuxCNC/AXIS versione $version \n" -"\n" -"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff " -"Epler e Chris Radek.\n" -"\n" -"Questo software è gratuito, ed è possibile ridistribuirlo sotto alcune " -"condizioni. Vedi il file COPYING, incluso in LinuxCNC.\n" -"Traduzione italiana: E. Lo Valvo \n" -"\n" -"Visita il sito web di LinuxCNC: " +#: src/emc/usr_intf/touchy/touchy.glade:3582 +#: src/emc/usr_intf/gscreen/gscreen.glade:1437 +msgid "SO: 100%" +msgstr "SO: 100%" -#: share/axis/tcl/axis.tcl:1739 -msgid "About AXIS" -msgstr "Informazioni su AXIS" +#: src/emc/usr_intf/touchy/touchy.glade:3596 +msgid "MV: 100" +msgstr "MV: 100" -#: share/axis/tcl/axis.tcl:1768 -msgid "AXIS Quick Reference" -msgstr "Sommario AXIS" +#: src/emc/usr_intf/touchy/touchy.glade:3610 +msgid "Jogging" +msgstr "Movimento" -#: share/axis/tcl/axis.tcl:1903 -msgid "AXIS $::version on $::machine" -msgstr "AXIS $::version su $::machine" +#: src/emc/usr_intf/touchy/touchy.glade:3624 +msgid "Start Point" +msgstr "" -#: share/axis/tcl/axis.tcl:1905 -msgid "(no file)" -msgstr "(Nessun file)" +#: src/emc/usr_intf/touchy/touchy.glade:3651 +msgid ".01" +msgstr ".01" -#: share/axis/tcl/axis.tcl:1976 share/axis/tcl/axis.tcl:1981 -msgid "Position:" -msgstr "Posizione:" +#: src/emc/usr_intf/touchy/touchy.glade:3664 +msgid ".001" +msgstr ".01" -#: share/axis/tcl/axis.tcl:1978 -msgid "Machine" -msgstr "Macchina" +#: src/emc/usr_intf/touchy/touchy.glade:3680 +msgid ".0001" +msgstr ".0001" -#: share/axis/tcl/axis.tcl:1978 src/emc/usr_intf/touchy/touchy.glade:155 -msgid "Relative" -msgstr "Relativo" +#: src/emc/usr_intf/touchy/touchy.glade:3708 +msgid " X " +msgstr " X " -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3329 -msgid "Actual" -msgstr "Attuale" +#: src/emc/usr_intf/touchy/touchy.glade:3720 +msgid " Y " +msgstr " Y " -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3318 -msgid "Commanded" -msgstr "Comandato" +#: src/emc/usr_intf/touchy/touchy.glade:3735 +msgid " Z " +msgstr " Z " -#: share/axis/tcl/axis.tcl:2032 share/axis/tcl/axis.tcl:2203 -msgid "Joint:" -msgstr "articolazione:" +#: src/emc/usr_intf/touchy/touchy.glade:3750 +msgid " A " +msgstr " A " -#: share/axis/tcl/axis.tcl:2338 -msgid "Turn spindle counterclockwise [F10]" -msgstr "Ruota mandrino in senso antiorario [F10]" +#: src/emc/usr_intf/touchy/touchy.glade:3766 +msgid " B " +msgstr " B " -#: share/axis/tcl/axis.tcl:2339 -msgid "Turn spindle clockwise [F9]" -msgstr "Ruota mandrino in senso orario [F9]" +#: src/emc/usr_intf/touchy/touchy.glade:3784 +msgid " C " +msgstr " C " -#: share/axis/tcl/axis.tcl:2340 -msgid "Stop spindle [F9/F10]" -msgstr "Ferma mandrino [F9/F10]" +#: src/emc/usr_intf/touchy/touchy.glade:3802 +msgid " U " +msgstr " U " -#: share/axis/tcl/axis.tcl:2341 -msgid "Turn spindle Faster [F12]" -msgstr "Aumenta velocità mandrino [F12]" +#: src/emc/usr_intf/touchy/touchy.glade:3818 +msgid " V " +msgstr " V " -#: share/axis/tcl/axis.tcl:2342 -msgid "Turn spindle Slower [F11]" -msgstr "Diminuisci velocità mandrino [F11]" +#: src/emc/usr_intf/touchy/touchy.glade:3836 +msgid " W " +msgstr " W " -#: share/axis/tcl/axis.tcl:2343 -msgid "Turn spindle brake on [Shift-B] or off [B]" -msgstr "Attiva [Maiusc-B] / Disattiva [B] freno mandrino" +#: src/emc/usr_intf/touchy/touchy.glade:3869 +msgid "Handwheel" +msgstr "Volantino" -#: share/axis/tcl/axis.tcl:2344 -msgid "Turn flood on or off [F8]" -msgstr "Liquido On/Off [F8]" +#: src/emc/usr_intf/stepconf/stepconf.py:57 +msgid "" +"Stepconf encountered an error. The following information may be useful in " +"troubleshooting:\n" +"\n" +msgstr "" +"Stepconf ha trovato un errore. L' informazione seguente puo' essere utile " +"per la soluzione:\n" +"\n" -#: share/axis/tcl/axis.tcl:2345 -msgid "Turn mist on or off [F7]" -msgstr "Aria On/Off [F7]" +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#, fuzzy +msgid "Stepconf" +msgstr "Passo" -#: share/axis/tcl/axis.tcl:2346 -msgid "Send active axis home [Home]" -msgstr "Muovi asse corrente a [Home]" +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#: src/emc/usr_intf/stepconf/stepconf.py:217 +#: src/emc/usr_intf/stepconf/main_page.glade:557 +#: src/emc/usr_intf/gscreen/gscreen.py:3414 +#: src/emc/usr_intf/gscreen/gscreen.py:3415 +#: src/emc/usr_intf/gscreen/gscreen.glade:4043 +#, fuzzy +msgid "Start" +msgstr "Partenza" -#: share/axis/tcl/axis.tcl:2347 -msgid "Set G54 offset for active axis [End]" -msgstr "Imposta offset G54 per asse corrente [End]" +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Base Information" +msgstr "Informazioni base macchina" -#: share/axis/tcl/axis.tcl:2348 -msgid "Activate axis [X]" -msgstr "Attiva asse [X]" +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Parallel Port 1" +msgstr "Setup Porta Parallela" -#: share/axis/tcl/axis.tcl:2349 -msgid "Activate axis [Y]" -msgstr "Attiva asse [Y]" +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Parallel Port 2" +msgstr "Setup Porta Parallela" -#: share/axis/tcl/axis.tcl:2350 -msgid "Activate axis [Z]" -msgstr "Attiva asse [Z]" +#: src/emc/usr_intf/stepconf/stepconf.py:130 +#, fuzzy +msgid "Options" +msgstr "Opzioni GUI" -#: share/axis/tcl/axis.tcl:2351 -msgid "Activate axis [A]" -msgstr "Attiva asse [A]" +#: src/emc/usr_intf/stepconf/stepconf.py:130 +#, fuzzy +msgid "Axis X" +msgstr "Asse " -#: share/axis/tcl/axis.tcl:2352 -msgid "Activate axis [4]" -msgstr "Attiva asse [4]" +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis Y" +msgstr "Asse " -#: share/axis/tcl/axis.tcl:2353 -msgid "Activate axis [5]" -msgstr "Attiva asse [5]" +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis Z" +msgstr "Asse " -#: share/axis/tcl/axis.tcl:2354 share/axis/tcl/axis.tcl:2355 -msgid "Jog selected axis" -msgstr "Muove asse selezionato" +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis A" +msgstr "Asse " -#: share/axis/tcl/axis.tcl:2357 -msgid "Temporarily allow jogging outside machine limits [L]" -msgstr "Permetti movimento temporaneo oltre i limiti macchina [L]" +#: src/emc/usr_intf/stepconf/stepconf.py:132 +#: src/emc/usr_intf/pncconf/pncconf.py:378 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +msgid "Spindle" +msgstr "Mandrino" -#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -msgid "Spindle CW" -msgstr "Mandrino orario" +#: src/emc/usr_intf/stepconf/stepconf.py:132 +msgid "Almost Done" +msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -msgid "Spindle CCW" -msgstr "Mandrino antiorario" +#: src/emc/usr_intf/stepconf/stepconf.py:136 +#: src/emc/usr_intf/pncconf/pncconf.py:135 +msgid "Gecko 201" +msgstr "Gecko 201" -#: src/emc/usr_intf/touchy/mdi.py:50 -msgid "Input control" -msgstr "Controllo Ingresso" +#: src/emc/usr_intf/stepconf/stepconf.py:137 +#: src/emc/usr_intf/pncconf/pncconf.py:136 +msgid "Gecko 202" +msgstr "Gecko 202" -#: src/emc/usr_intf/touchy/mdi.py:53 src/emc/usr_intf/touchy/mdi.py:54 -msgid "Straight rapid" -msgstr "Movimento rapido" +#: src/emc/usr_intf/stepconf/stepconf.py:138 +#: src/emc/usr_intf/pncconf/pncconf.py:137 +msgid "Gecko 203v" +msgstr "Gecko 203v" -#: src/emc/usr_intf/touchy/mdi.py:55 src/emc/usr_intf/touchy/mdi.py:56 -msgid "Straight feed" -msgstr "Movimento lineare" +#: src/emc/usr_intf/stepconf/stepconf.py:139 +#: src/emc/usr_intf/pncconf/pncconf.py:138 +msgid "Gecko 210" +msgstr "Gecko 210" -#: src/emc/usr_intf/touchy/mdi.py:57 src/emc/usr_intf/touchy/mdi.py:58 -msgid "Arc CW" -msgstr "Arco orario" +#: src/emc/usr_intf/stepconf/stepconf.py:140 +#: src/emc/usr_intf/pncconf/pncconf.py:139 +msgid "Gecko 212" +msgstr "Gecko 212" -#: src/emc/usr_intf/touchy/mdi.py:59 src/emc/usr_intf/touchy/mdi.py:60 -msgid "Arc CCW" -msgstr "Arco antiorario" +#: src/emc/usr_intf/stepconf/stepconf.py:141 +#: src/emc/usr_intf/pncconf/pncconf.py:140 +msgid "Gecko 320" +msgstr "Gecko 320" -#: src/emc/usr_intf/touchy/mdi.py:61 src/emc/usr_intf/touchy/mdi.py:62 -msgid "Dwell" -msgstr "Sosta" +#: src/emc/usr_intf/stepconf/stepconf.py:142 +#: src/emc/usr_intf/pncconf/pncconf.py:141 +msgid "Gecko 540" +msgstr "Gecko 540" -#: src/emc/usr_intf/touchy/mdi.py:63 -msgid "Setup" -msgstr "Setup" +#: src/emc/usr_intf/stepconf/stepconf.py:143 +#: src/emc/usr_intf/pncconf/pncconf.py:142 +msgid "L297" +msgstr "L297" -#: src/emc/usr_intf/touchy/mdi.py:64 -msgid "Spindle synchronized feed" -msgstr "Avanzamento Mandrino sincronizzato" +#: src/emc/usr_intf/stepconf/stepconf.py:144 +#: src/emc/usr_intf/pncconf/pncconf.py:143 +msgid "PMDX-150" +msgstr "PMDX-150" -#: src/emc/usr_intf/touchy/mdi.py:65 -msgid "Rigid tap" -msgstr "Maschiatura rigida" +#: src/emc/usr_intf/stepconf/stepconf.py:145 +#: src/emc/usr_intf/stepconf/pport1.glade:32 +#: src/emc/usr_intf/pncconf/pncconf.py:144 +msgid "Sherline" +msgstr "Sherline" -#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/touchy/mdi.py:67 -#: src/emc/usr_intf/touchy/mdi.py:68 src/emc/usr_intf/touchy/mdi.py:69 -msgid "Probe" -msgstr "Sonda" +#: src/emc/usr_intf/stepconf/stepconf.py:146 +#: src/emc/usr_intf/pncconf/pncconf.py:145 +msgid "Xylotex 8S-3" +msgstr "Xylotex 8S-3" -#: src/emc/usr_intf/touchy/mdi.py:70 -msgid "Radius compensation left" -msgstr "Compensazione raggio sinistra" +#: src/emc/usr_intf/stepconf/stepconf.py:147 +#: src/emc/usr_intf/pncconf/pncconf.py:146 +msgid "Parker-Compumotor oem750" +msgstr "Parker-Compumotor oem750" -#: src/emc/usr_intf/touchy/mdi.py:71 -msgid "Radius compensation right" -msgstr "Compensazione raggio destra" +#: src/emc/usr_intf/stepconf/stepconf.py:148 +#: src/emc/usr_intf/pncconf/pncconf.py:147 +msgid "JVL-SMD41 or 42" +msgstr "JVL-SMD41 or 42" -#: src/emc/usr_intf/touchy/mdi.py:72 -msgid "Radius compensation left, immediate" -msgstr "Compensazione raggio sinistra, immediata" +#: src/emc/usr_intf/stepconf/stepconf.py:149 +#: src/emc/usr_intf/pncconf/pncconf.py:148 +msgid "Hobbycnc Pro Chopper" +msgstr "Hobbycnc Pro Chopper" -#: src/emc/usr_intf/touchy/mdi.py:73 -msgid "Radius compensation right, immediate" -msgstr "Compensazione raggio destra, immediata" +#: src/emc/usr_intf/stepconf/stepconf.py:150 +#, fuzzy +msgid "Kelling 4030" +msgstr "Keling 4030" -#: src/emc/usr_intf/touchy/mdi.py:74 -msgid "Tool length offset" -msgstr "Offset lunghezza utensile" +#: src/emc/usr_intf/stepconf/stepconf.py:151 +msgid "Leadshine Series" +msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:75 -msgid "Tool length offset immediate" -msgstr "Offset lunghezza utensile immediata" +#: src/emc/usr_intf/stepconf/stepconf.py:190 +msgid "X Step" +msgstr "Passo X" -#: src/emc/usr_intf/touchy/mdi.py:76 -msgid "Motion in unoffset coordinates" -msgstr "Movimento in coordinate unoffset" +#: src/emc/usr_intf/stepconf/stepconf.py:190 +msgid "X Direction" +msgstr "Direzione X" -#: src/emc/usr_intf/touchy/mdi.py:77 -msgid "Continuous mode" -msgstr "Modo Continuo" +#: src/emc/usr_intf/stepconf/stepconf.py:190 +msgid "Y Step" +msgstr "Passo Y" -#: src/emc/usr_intf/touchy/mdi.py:79 -msgid "Drill" -msgstr "Foratura" +#: src/emc/usr_intf/stepconf/stepconf.py:190 +msgid "Y Direction" +msgstr "Direzione Y" -#: src/emc/usr_intf/touchy/mdi.py:80 -msgid "Drill with dwell" -msgstr "Foratura con sosta" +#: src/emc/usr_intf/stepconf/stepconf.py:191 +msgid "Z Step" +msgstr "Passo Z" -#: src/emc/usr_intf/touchy/mdi.py:81 -msgid "Peck drill" -msgstr "Foratura profonda" +#: src/emc/usr_intf/stepconf/stepconf.py:191 +msgid "Z Direction" +msgstr "Direzione Z" -#: src/emc/usr_intf/touchy/mdi.py:82 -msgid "Chip-break drill" -msgstr "Foratura rompi truciolo" +#: src/emc/usr_intf/stepconf/stepconf.py:191 +msgid "A Step" +msgstr "Passo A" -#: src/emc/usr_intf/touchy/mdi.py:83 -msgid "Bore" -msgstr "Alesatura" +#: src/emc/usr_intf/stepconf/stepconf.py:191 +msgid "A Direction" +msgstr "Direzione A" -#: src/emc/usr_intf/touchy/mdi.py:84 -msgid "Bore with dwell" -msgstr "Alesatura con sosta" +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 +msgid "Spindle ON" +msgstr "Mandrino ON" -#: src/emc/usr_intf/touchy/mdi.py:85 -msgid "Offset all coordinate systems" -msgstr "Azzerramento completo sistema coordinate" +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:488 +msgid "Spindle PWM" +msgstr "Mandrino PWM" -#: src/emc/usr_intf/touchy/mdi.py:86 -msgid "CSS Mode" -msgstr "Modo velocità taglio costante" +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 +msgid "Spindle Brake" +msgstr "Freno Mandrino" -#: src/emc/usr_intf/touchy/emc_interface.py:410 -msgid "CCW" -msgstr "Antiorario" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 +msgid "Coolant Mist" +msgstr "Refrigerante Aria" -#: src/emc/usr_intf/touchy/emc_interface.py:410 -msgid "Stopped" -msgstr "Fermato" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 +msgid "Coolant Flood" +msgstr "Refrigerante liquido" -#: src/emc/usr_intf/touchy/emc_interface.py:410 -msgid "CW" -msgstr "Orario" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "ESTOP Out" +msgstr "ESTOP Out" -#: src/emc/usr_intf/touchy/touchy.glade:7 -msgid "LinuxCNC/Touchy" -msgstr "LinuxCNC/Touchy" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +msgid "Amplifier Enable" +msgstr "Abilita Amplificatore" -#. # Touchy is Copyright (c) 2009 Chris Radek # # Touchy 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 2 of the License, or # (at your option) any later version. # # Touchy 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. -#: src/emc/usr_intf/touchy/touchy.glade:11 -msgid "window1" -msgstr "Finestra1" +#: src/emc/usr_intf/stepconf/stepconf.py:194 +#: src/emc/usr_intf/pncconf/pncconf.py:371 +msgid "Charge Pump" +msgstr "Carica Pompa" -#: src/emc/usr_intf/touchy/touchy.glade:31 -msgid "xa" -msgstr "xa" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 0" +msgstr "Out digitale 0" -#: src/emc/usr_intf/touchy/touchy.glade:44 -msgid "xd" -msgstr "xd" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 1" +msgstr "Out digitale 1" -#: src/emc/usr_intf/touchy/touchy.glade:57 -msgid "yr" -msgstr "yr" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 2" +msgstr "Out digitale 2" -#: src/emc/usr_intf/touchy/touchy.glade:68 -msgid "ya" -msgstr "ya" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 3" +msgstr "Out digitale 3" -#: src/emc/usr_intf/touchy/touchy.glade:81 -msgid "yd" -msgstr "yd" +#: src/emc/usr_intf/stepconf/stepconf.py:196 +#: src/emc/usr_intf/stepconf/stepconf.py:215 +#: src/emc/usr_intf/stepconf/pport1.glade:18 +#: src/emc/usr_intf/stepconf/pport2.glade:1406 +#: src/emc/usr_intf/stepconf/pport2.glade:1420 +msgid "Unused" +msgstr "Inutilizzato" -#: src/emc/usr_intf/touchy/touchy.glade:94 -msgid "zr" -msgstr "zr" +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 +msgid "ESTOP In" +msgstr "ESTOP In" -#: src/emc/usr_intf/touchy/touchy.glade:105 -msgid "za" -msgstr "za" +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 +msgid "Probe In" +msgstr "Probe In" -#: src/emc/usr_intf/touchy/touchy.glade:118 -msgid "zd" -msgstr "zd" +#: src/emc/usr_intf/stepconf/stepconf.py:199 +msgid "Spindle Index" +msgstr "Indice Mandrino" -#: src/emc/usr_intf/touchy/touchy.glade:131 -msgid "DTG" -msgstr "DTG" +#: src/emc/usr_intf/stepconf/stepconf.py:199 +msgid "Spindle Phase A" +msgstr "Fase A Mandrino" -#: src/emc/usr_intf/touchy/touchy.glade:143 -#: src/emc/usr_intf/pncconf/pncconf.glade:59755 -msgid "Absolute" -msgstr "Assoluto" +#: src/emc/usr_intf/stepconf/stepconf.py:199 +msgid "Spindle Phase B" +msgstr "Fase B Mandrino" -#: src/emc/usr_intf/touchy/touchy.glade:165 -msgid "xr" -msgstr "xr" +#: src/emc/usr_intf/stepconf/stepconf.py:200 +msgid "Home X" +msgstr "Origine X" -#: src/emc/usr_intf/touchy/touchy.glade:176 -msgid "ar" -msgstr "ar" +#: src/emc/usr_intf/stepconf/stepconf.py:200 +msgid "Home Y" +msgstr "Origine Y" -#: src/emc/usr_intf/touchy/touchy.glade:188 -msgid "br" -msgstr "br" +#: src/emc/usr_intf/stepconf/stepconf.py:200 +msgid "Home Z" +msgstr "Origine Z" -#: src/emc/usr_intf/touchy/touchy.glade:200 -msgid "cr" -msgstr "cr" +#: src/emc/usr_intf/stepconf/stepconf.py:200 +msgid "Home A" +msgstr "Origine A" -#: src/emc/usr_intf/touchy/touchy.glade:212 -msgid "ur" -msgstr "ur" +#: src/emc/usr_intf/stepconf/stepconf.py:201 +msgid "Minimum Limit + Home X" +msgstr "Limite Minimo + Home X" -#: src/emc/usr_intf/touchy/touchy.glade:224 -msgid "vr" -msgstr "vr" +#: src/emc/usr_intf/stepconf/stepconf.py:201 +msgid "Minimum Limit + Home Y" +msgstr "Limite Minimo + Home Y" -#: src/emc/usr_intf/touchy/touchy.glade:236 -msgid "wr" -msgstr "wr" +#: src/emc/usr_intf/stepconf/stepconf.py:202 +msgid "Minimum Limit + Home Z" +msgstr "Limite Minimo + Home Z" -#: src/emc/usr_intf/touchy/touchy.glade:248 -msgid "aa" -msgstr "aa" +#: src/emc/usr_intf/stepconf/stepconf.py:202 +msgid "Minimum Limit + Home A" +msgstr "Limite Minimo + Home A" -#: src/emc/usr_intf/touchy/touchy.glade:262 -msgid "ba" -msgstr "ba" +#: src/emc/usr_intf/stepconf/stepconf.py:203 +msgid "Maximum Limit + Home X" +msgstr "Limite Massimo + Home X" -#: src/emc/usr_intf/touchy/touchy.glade:276 -msgid "ca" -msgstr "ca" +#: src/emc/usr_intf/stepconf/stepconf.py:203 +msgid "Maximum Limit + Home Y" +msgstr "Limite Massimo + Home Y" -#: src/emc/usr_intf/touchy/touchy.glade:290 -msgid "ua" -msgstr "ua" +#: src/emc/usr_intf/stepconf/stepconf.py:204 +msgid "Maximum Limit + Home Z" +msgstr "Limite Massimo + Home Z" -#: src/emc/usr_intf/touchy/touchy.glade:304 -msgid "va" -msgstr "va" +#: src/emc/usr_intf/stepconf/stepconf.py:204 +msgid "Maximum Limit + Home A" +msgstr "Limite Massimo + Home A" -#: src/emc/usr_intf/touchy/touchy.glade:318 -msgid "wa" -msgstr "wa" +#: src/emc/usr_intf/stepconf/stepconf.py:205 +msgid "Both Limit + Home X" +msgstr "Entrambi i Limiti + Home X" + +#: src/emc/usr_intf/stepconf/stepconf.py:205 +msgid "Both Limit + Home Y" +msgstr "Entrambi i Limiti + Home Y" -#: src/emc/usr_intf/touchy/touchy.glade:332 -msgid "ad" -msgstr "ad" +#: src/emc/usr_intf/stepconf/stepconf.py:206 +msgid "Both Limit + Home Z" +msgstr "Entrambi i Limiti + Home Z" -#: src/emc/usr_intf/touchy/touchy.glade:346 -msgid "bd" -msgstr "bd" +#: src/emc/usr_intf/stepconf/stepconf.py:206 +msgid "Both Limit + Home A" +msgstr "Entrambi i Limiti + Home A" -#: src/emc/usr_intf/touchy/touchy.glade:360 -msgid "cd" -msgstr "cd" +#: src/emc/usr_intf/stepconf/stepconf.py:207 +msgid "Minimum Limit X" +msgstr "Limite Minimo X" -#: src/emc/usr_intf/touchy/touchy.glade:374 -msgid "ud" -msgstr "ud" +#: src/emc/usr_intf/stepconf/stepconf.py:207 +msgid "Minimum Limit Y" +msgstr "Limite Minimo Y" -#: src/emc/usr_intf/touchy/touchy.glade:388 -msgid "vd" -msgstr "vd" +#: src/emc/usr_intf/stepconf/stepconf.py:208 +msgid "Minimum Limit Z" +msgstr "Limite Minimo Z" -#: src/emc/usr_intf/touchy/touchy.glade:402 -msgid "wd" -msgstr "wd" +#: src/emc/usr_intf/stepconf/stepconf.py:208 +msgid "Minimum Limit A" +msgstr "Limite Minimo A" -#: src/emc/usr_intf/touchy/touchy.glade:448 -msgid "Estop Reset" -msgstr "Estop Reset" +#: src/emc/usr_intf/stepconf/stepconf.py:209 +msgid "Maximum Limit X" +msgstr "Limite Massimo X" -#: src/emc/usr_intf/touchy/touchy.glade:459 -msgid "Estop" -msgstr "Estop" +#: src/emc/usr_intf/stepconf/stepconf.py:209 +msgid "Maximum Limit Y" +msgstr "Limite Massimo Y" -#: src/emc/usr_intf/touchy/touchy.glade:475 -msgid "Machine On" -msgstr "Macchina On" +#: src/emc/usr_intf/stepconf/stepconf.py:210 +msgid "Maximum Limit Z" +msgstr "Limite Massimo Z" -#: src/emc/usr_intf/touchy/touchy.glade:490 -msgid "Machine Off" -msgstr "Macchina Off" +#: src/emc/usr_intf/stepconf/stepconf.py:210 +msgid "Maximum Limit A" +msgstr "Limite Massimo A" -#: src/emc/usr_intf/touchy/touchy.glade:531 -msgid "Power" -msgstr "Accensione" +#: src/emc/usr_intf/stepconf/stepconf.py:211 +msgid "Both Limit X" +msgstr "Entrambi i limiti X" -#: src/emc/usr_intf/touchy/touchy.glade:562 -msgid "Unhome All" -msgstr "Dis-Azzera tutto" +#: src/emc/usr_intf/stepconf/stepconf.py:211 +msgid "Both Limit Y" +msgstr "Entrambi i limiti Y" -#: src/emc/usr_intf/touchy/touchy.glade:588 -msgid "Home Selected" -msgstr "Azzera Selezionato" +#: src/emc/usr_intf/stepconf/stepconf.py:212 +msgid "Both Limit Z" +msgstr "Entrambi i limiti Z" -#: src/emc/usr_intf/touchy/touchy.glade:603 -msgid "Unhome Selected" -msgstr "Dis-Azzera Selezionato" +#: src/emc/usr_intf/stepconf/stepconf.py:212 +msgid "Both Limit A" +msgstr "Entrambi i limiti A" -#: src/emc/usr_intf/touchy/touchy.glade:625 -msgid "Homing" -msgstr "Azzeramento" +#: src/emc/usr_intf/stepconf/stepconf.py:213 +msgid "All limits" +msgstr "Tutti i limiti" -#: src/emc/usr_intf/touchy/touchy.glade:644 -msgid "Startup" -msgstr "Partenza" +#: src/emc/usr_intf/stepconf/stepconf.py:213 +msgid "All home" +msgstr "Azzeramento totale" -#: src/emc/usr_intf/touchy/touchy.glade:727 -msgid "G" -msgstr "G" +#: src/emc/usr_intf/stepconf/stepconf.py:213 +msgid "All limits + homes" +msgstr "Tutti i limiti zero +" -#: src/emc/usr_intf/touchy/touchy.glade:929 -msgid "." -msgstr "." +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 0" +msgstr "Digital in 0" -#: src/emc/usr_intf/touchy/touchy.glade:963 -#: src/emc/usr_intf/pncconf/pncconf.glade:60883 -#: src/emc/usr_intf/pncconf/pncconf.glade:60895 -#: src/emc/usr_intf/pncconf/pncconf.glade:61017 -#: src/emc/usr_intf/pncconf/pncconf.glade:61029 -#: src/emc/usr_intf/pncconf/pncconf.glade:61041 -#: src/emc/usr_intf/pncconf/pncconf.glade:61053 -#: src/emc/usr_intf/pncconf/pncconf.glade:61065 -#: src/emc/usr_intf/pncconf/pncconf.glade:61077 -#: src/emc/usr_intf/pncconf/pncconf.glade:62040 -#: src/emc/usr_intf/pncconf/pncconf.glade:62052 -#: src/emc/usr_intf/pncconf/pncconf.glade:62064 -#: src/emc/usr_intf/pncconf/pncconf.glade:62076 -#: src/emc/usr_intf/pncconf/pncconf.glade:62088 -#: src/emc/usr_intf/pncconf/pncconf.glade:62100 -#: src/emc/usr_intf/pncconf/pncconf.glade:62222 -#: src/emc/usr_intf/pncconf/pncconf.glade:62234 -#: src/emc/usr_intf/pncconf/pncconf.glade:63069 -#: src/emc/usr_intf/pncconf/pncconf.glade:63081 -#: src/emc/usr_intf/pncconf/pncconf.glade:63203 -#: src/emc/usr_intf/pncconf/pncconf.glade:63215 -#: src/emc/usr_intf/pncconf/pncconf.glade:63227 -#: src/emc/usr_intf/pncconf/pncconf.glade:63239 -#: src/emc/usr_intf/pncconf/pncconf.glade:63251 -#: src/emc/usr_intf/pncconf/pncconf.glade:63263 -#: src/emc/usr_intf/pncconf/pncconf.glade:64226 -#: src/emc/usr_intf/pncconf/pncconf.glade:64238 -#: src/emc/usr_intf/pncconf/pncconf.glade:64250 -#: src/emc/usr_intf/pncconf/pncconf.glade:64262 -#: src/emc/usr_intf/pncconf/pncconf.glade:64274 -#: src/emc/usr_intf/pncconf/pncconf.glade:64286 -#: src/emc/usr_intf/pncconf/pncconf.glade:64408 -#: src/emc/usr_intf/pncconf/pncconf.glade:64420 -#: src/emc/usr_intf/pncconf/pncconf.glade:65231 -#: src/emc/usr_intf/pncconf/pncconf.glade:65243 -#: src/emc/usr_intf/pncconf/pncconf.glade:65359 -#: src/emc/usr_intf/pncconf/pncconf.glade:65371 -#: src/emc/usr_intf/pncconf/pncconf.glade:65383 -#: src/emc/usr_intf/pncconf/pncconf.glade:65395 -#: src/emc/usr_intf/pncconf/pncconf.glade:65407 -#: src/emc/usr_intf/pncconf/pncconf.glade:65419 -#: src/emc/usr_intf/pncconf/pncconf.glade:67091 -msgid "0" -msgstr "0" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 1" +msgstr "Digital in 1" -#: src/emc/usr_intf/touchy/touchy.glade:980 -msgid "3" -msgstr "3" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 2" +msgstr "Digital in 2" -#: src/emc/usr_intf/touchy/touchy.glade:997 -msgid "2" -msgstr "2" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 3" +msgstr "Digital n 3" -#: src/emc/usr_intf/touchy/touchy.glade:1014 -msgid "1" -msgstr "1" +#: src/emc/usr_intf/stepconf/stepconf.py:218 +#, fuzzy +msgid "Forward" +msgstr "Mandrino Avanti" -#: src/emc/usr_intf/touchy/touchy.glade:1031 -msgid "6" -msgstr "6" +#: src/emc/usr_intf/stepconf/stepconf.py:219 +msgid "Done" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1048 -msgid "5" -msgstr "5" +#: src/emc/usr_intf/stepconf/stepconf.py:220 +msgid "" +"OK to replace existing custom ladder program?\n" +"Existing Custom.clp will be renamed custom_backup.clp.\n" +"Any existing file named -custom_backup.clp- will be lost. " +msgstr "" +"OK per sostituire il programma ladder custom esistente?\n" +"Custom.clp esistente sarà rinominato custom_backup.clp.\n" +"Qualsiasi file esistente di nome -custom_backup.clp- verrà perso. " -#: src/emc/usr_intf/touchy/touchy.glade:1065 -msgid "4" -msgstr "4" +#: src/emc/usr_intf/stepconf/stepconf.py:221 +#: src/emc/usr_intf/pncconf/pncconf.py:8163 +msgid "" +"You edited a ladder program and have selected a different program to copy to " +"your configuration file.\n" +"The edited program will be lost.\n" +"\n" +"Are you sure? " +msgstr "" +"E' stato modificato un programma ladder e hai scelto un diverso programma " +"per copiare il tuo file di configurazione.\n" +"Il programma modificato verrà perso.\n" +"\n" +"Sei sicuro? " -#: src/emc/usr_intf/touchy/touchy.glade:1082 -msgid "9" -msgstr "9" +#: src/emc/usr_intf/stepconf/stepconf.py:222 +msgid "" +"You need to designate an E-stop input pin in the Parallel Port Setup page " +"for this program." +msgstr "" +"Bisogna indicare un input pin di E-stop nella pagina di Configurazione Porta " +"Parallela di questo programma." -#: src/emc/usr_intf/touchy/touchy.glade:1097 -msgid "8" -msgstr "8" +#: src/emc/usr_intf/stepconf/stepconf.py:223 +msgid "" +"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" +"Existing custompanel.xml and custom_postgui.hal will be renamed " +"custompanel_backup.xml and postgui_backup.hal.\n" +"Any existing file named custompanel_backup.xml and custom_postgui.hal will " +"be lost. " +msgstr "" +"OK a sostituire i file esistenti del pannello pyvcp utente e custom_postgui." +"hal?\n" +"I file custompanel.xml e custom_postgui.hal saranno rinominati " +"custompanel_backup.xml e postgui_backup.hal.\n" +"Qualsiasi file esistente di nome custompanel_backup.xml e custom_postgui.hal " +"sarà perso." -#: src/emc/usr_intf/touchy/touchy.glade:1112 -msgid "7" -msgstr "7" +#: src/emc/usr_intf/stepconf/stepconf.py:224 +msgid "Quit Stepconf and discard changes?" +msgstr "Esci da Stepconf e perdi modifiche?" -#: src/emc/usr_intf/touchy/touchy.glade:1297 -msgid "Flood On" -msgstr "Refrigerante On" +#: src/emc/usr_intf/stepconf/stepconf.py:225 +msgid "" +"The configuration has been built and saved.\n" +"Do you want to quit?" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1308 -msgid "Flood Off" -msgstr "Refrigerante Off" +#: src/emc/usr_intf/stepconf/stepconf.py:226 +#, fuzzy +msgid "" +"You are using a simulated-realtime version of Machinekit, so testing / " +"tuning of hardware is unavailable." +msgstr "" +"Si sta usando una versione di LinuxCNC in realtime simulato, quindi non è " +"possibile la prova/controllo di hardware esterno." -#: src/emc/usr_intf/touchy/touchy.glade:1324 -msgid "Mist On" -msgstr "Aria On" +#: src/emc/usr_intf/stepconf/stepconf.py:227 +#, fuzzy, python-format +msgid "" +"You are using a realtime version of Machinekit but didn't load a realtime " +"kernel so testing / tuning of hardware is unavailable.\n" +"This is possibly because you updated the OS and it doesn't automatically " +"load the RTAI kernel anymore.\n" +"You are using the %(actual)s kernel.\n" +"You need to use kernel:" +msgstr "" +"Si sta usando una versione realtime di LinuxCNC ma il kernel realtime non è " +"caricato pertanto prova/controllo di hardware esterno non è possibile.\n" +" Questo probabilmente accade perchè è stato aggiornato il SO e questo non " +"usa il kernel RTAI\n" -#: src/emc/usr_intf/touchy/touchy.glade:1339 -msgid "Mist Off" -msgstr "Aria Off" +#: src/emc/usr_intf/stepconf/stepconf.py:246 +msgid "my-mill" +msgstr "my-mill" -#: src/emc/usr_intf/touchy/touchy.glade:1362 -msgid "Coolant" -msgstr "Refrigerante" +#: src/emc/usr_intf/stepconf/stepconf.py:585 +#, python-format +msgid "File %r was modified since it was written by stepconf" +msgstr "File %r e' stato modificato da quando è stato scritto da stepconf" -#: src/emc/usr_intf/touchy/touchy.glade:1448 -msgid "Spindle Off" -msgstr "Mandrino Off" +#: src/emc/usr_intf/stepconf/stepconf.py:588 +msgid "" +"Saving this configuration file will discard configuration changes made " +"outside stepconf." +msgstr "" +"Salvare questo file di configurazione eliminera' i cambi alla configurazione " +"fatti fuori da stepconf." -#: src/emc/usr_intf/touchy/touchy.glade:1501 -#: src/emc/usr_intf/touchy/touchy.glade:2578 -msgid "Spindle speed:" -msgstr "Velocità Mandrino:" +#: src/emc/usr_intf/stepconf/stepconf.py:603 +#: src/emc/usr_intf/pncconf/pncconf.py:1318 +msgid "Continue? " +msgstr "Continuo? " -#: src/emc/usr_intf/touchy/touchy.glade:1513 -#: src/emc/usr_intf/touchy/touchy.glade:2707 -msgid "label26" -msgstr "etichetta26" +#: src/emc/usr_intf/stepconf/stepconf.py:604 +#: src/emc/usr_intf/pncconf/pncconf.py:1319 +msgid "yY" +msgstr "yY" -#: src/emc/usr_intf/touchy/touchy.glade:1539 -msgid "Spindle" -msgstr "Mandrino" +#: src/emc/usr_intf/stepconf/stepconf.py:689 +#: src/emc/usr_intf/pncconf/pncconf.py:3591 +#, python-format +msgid "launch %s" +msgstr "avvio %s" -#: src/emc/usr_intf/touchy/touchy.glade:1597 -msgid "file.ngc" -msgstr "file.ngc" +#: src/emc/usr_intf/stepconf/stepconf.py:693 +#, fuzzy +msgid "Desktop Launcher for Machinekit config made by Stepconf" +msgstr "Avvio dalla Scrivania per configurazioni LinuxCNC fatte da Stepconf" -#: src/emc/usr_intf/touchy/touchy.glade:1812 -#: src/emc/usr_intf/touchy/touchy.glade:2017 -#: src/emc/usr_intf/touchy/touchy.glade:2037 -#: src/emc/usr_intf/touchy/touchy.glade:2057 -#: src/emc/usr_intf/touchy/touchy.glade:2077 -#: src/emc/usr_intf/touchy/touchy.glade:2097 -#: src/emc/usr_intf/touchy/touchy.glade:2117 -#: src/emc/usr_intf/touchy/touchy.glade:2137 -#: src/emc/usr_intf/touchy/touchy.glade:2157 -#: src/emc/usr_intf/touchy/touchy.glade:2177 -msgid "M2" -msgstr "M2" +#: src/emc/usr_intf/stepconf/stepconf.py:860 +#: src/emc/usr_intf/stepconf/pages.py:145 +msgid "Other" +msgstr "Altro" -#: src/emc/usr_intf/touchy/touchy.glade:2244 -#: src/emc/usr_intf/touchy/touchy.glade:2374 -msgid "Page" -msgstr "Pagina" +#: src/emc/usr_intf/stepconf/stepconf.py:1295 +#: src/emc/usr_intf/pncconf/pncconf.py:9302 +#, python-format +msgid "%s Axis Test" +msgstr "Test Asse %s" -#: src/emc/usr_intf/touchy/touchy.glade:2308 -msgid "Start Point" -msgstr "Punto Iniziale" +#: src/emc/usr_intf/stepconf/stepconf.py:1298 +#: src/emc/usr_intf/stepconf/pages.py:617 +msgid "deg / s" +msgstr "gradi / s" -#: src/emc/usr_intf/touchy/touchy.glade:2452 -msgid "Loaded File" -msgstr "File caricato" +#: src/emc/usr_intf/stepconf/stepconf.py:1299 +#: src/emc/usr_intf/stepconf/pages.py:618 +msgid "deg / s²" +msgstr "gradi / s²" -#: src/emc/usr_intf/touchy/touchy.glade:2488 -msgid "Loaded file:" -msgstr "File caricato:" +#: src/emc/usr_intf/stepconf/stepconf.py:1300 +#: src/emc/usr_intf/stepconf/pages.py:619 +msgid "deg" +msgstr "gradi" -#: src/emc/usr_intf/touchy/touchy.glade:2499 -msgid "Interpreted line:" -msgstr "Linea interpretata:" +#: src/emc/usr_intf/stepconf/stepconf.py:1312 +#: src/emc/usr_intf/stepconf/pages.py:623 +#: src/emc/usr_intf/stepconf/axisx.glade:629 +#: src/emc/usr_intf/stepconf/axisy.glade:615 +#: src/emc/usr_intf/stepconf/axisz.glade:615 +#: src/emc/usr_intf/stepconf/axisa.glade:629 +#: src/emc/usr_intf/pncconf/pncconf.glade:64717 +msgid "mm / s" +msgstr "mm / s" -#: src/emc/usr_intf/touchy/touchy.glade:2513 -msgid "Distance:" -msgstr "Distanza:" +#: src/emc/usr_intf/stepconf/stepconf.py:1313 +#: src/emc/usr_intf/stepconf/pages.py:624 +#: src/emc/usr_intf/stepconf/axisx.glade:645 +#: src/emc/usr_intf/stepconf/axisy.glade:631 +#: src/emc/usr_intf/stepconf/axisz.glade:631 +#: src/emc/usr_intf/stepconf/axisa.glade:645 +#: src/emc/usr_intf/pncconf/pncconf.glade:64732 +msgid "mm / s²" +msgstr "mm / s²" -#: src/emc/usr_intf/touchy/touchy.glade:2526 -#: src/emc/usr_intf/stepconf/stepconf.glade:4148 -#: src/emc/usr_intf/pncconf/pncconf.glade:60476 -#: src/emc/usr_intf/pncconf/pncconf.glade:61571 -#: src/emc/usr_intf/pncconf/pncconf.glade:62664 -#: src/emc/usr_intf/pncconf/pncconf.glade:63757 -#: src/emc/usr_intf/pncconf/pncconf.glade:64856 -msgid "Velocity:" -msgstr "Velocità:" +#: src/emc/usr_intf/stepconf/stepconf.py:1326 +#: src/emc/usr_intf/stepconf/pages.py:629 +msgid "in / s" +msgstr "in / s" -#: src/emc/usr_intf/touchy/touchy.glade:2539 -msgid "Delay:" -msgstr "Ritardo:" +#: src/emc/usr_intf/stepconf/stepconf.py:1327 +#: src/emc/usr_intf/stepconf/pages.py:630 +msgid "in / s²" +msgstr "in / s²" -#: src/emc/usr_intf/touchy/touchy.glade:2552 -msgid "On limit switch:" -msgstr "Contatto sul limite:" +#: src/emc/usr_intf/stepconf/pages.py:189 +#, fuzzy +msgid "Machinekit 'stepconf' configuration files" +msgstr "File configurazioni LinuxCNC 'stepconf' " -#: src/emc/usr_intf/touchy/touchy.glade:2565 -msgid "Spindle direction:" -msgstr "Direzione Mandrino:" +#: src/emc/usr_intf/stepconf/pages.py:190 +#: src/emc/usr_intf/pncconf/pncconf.py:4257 +msgid "Modify Existing Configuration" +msgstr "Modifica Configurazione Esistente." -#: src/emc/usr_intf/touchy/touchy.glade:2591 -msgid "Loaded tool:" -msgstr "Utensile caricato:" +#: src/emc/usr_intf/stepconf/pages.py:616 +msgid "degree / rev" +msgstr "gradi / giro" -#: src/emc/usr_intf/touchy/touchy.glade:2604 -#: src/emc/usr_intf/touchy/touchy.glade:2955 -msgid "label19" -msgstr "etichetta19" +#: src/emc/usr_intf/stepconf/pages.py:620 +msgid "Steps / deg" +msgstr "Passi / grado" -#: src/emc/usr_intf/touchy/touchy.glade:2617 -msgid "label20" -msgstr "etichetta20" +#: src/emc/usr_intf/stepconf/pages.py:622 +#: src/emc/usr_intf/stepconf/axisx.glade:613 +#: src/emc/usr_intf/stepconf/axisy.glade:599 +#: src/emc/usr_intf/stepconf/axisz.glade:599 +#: src/emc/usr_intf/stepconf/axisa.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / rev" +msgstr "mm / giro" -#: src/emc/usr_intf/touchy/touchy.glade:2632 -#: src/emc/usr_intf/touchy/touchy.glade:2779 -#: src/emc/usr_intf/touchy/touchy.glade:2808 -#: src/emc/usr_intf/touchy/touchy.glade:2912 -#: src/emc/usr_intf/touchy/touchy.glade:2927 -msgid "label21" -msgstr "etichetta21" +#: src/emc/usr_intf/stepconf/pages.py:626 +#: src/emc/usr_intf/stepconf/axisx.glade:15 +#: src/emc/usr_intf/stepconf/axisy.glade:15 +#: src/emc/usr_intf/stepconf/axisz.glade:15 +#: src/emc/usr_intf/stepconf/axisa.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Steps / mm" +msgstr "Passi / mm" -#: src/emc/usr_intf/touchy/touchy.glade:2647 -msgid "label22" -msgstr "etichetta22" +#: src/emc/usr_intf/stepconf/pages.py:628 +msgid "rev / in" +msgstr "giro / in" -#: src/emc/usr_intf/touchy/touchy.glade:2662 -msgid "label23" -msgstr "etichetta23" +#: src/emc/usr_intf/stepconf/pages.py:632 +msgid "Steps / in" +msgstr "Passi / in" -#: src/emc/usr_intf/touchy/touchy.glade:2677 -msgid "label24" -msgstr "etichetta24" +#: src/emc/usr_intf/stepconf/build_INI.py:45 +#: src/emc/usr_intf/stepconf/build_HAL.py:41 +#, fuzzy, python-format +msgid "# Generated by stepconf 1.1 at %s" +msgstr "# Generato da stepconf a %s" -#: src/emc/usr_intf/touchy/touchy.glade:2692 -msgid "label25" -msgstr "etichetta25" +#: src/emc/usr_intf/stepconf/build_INI.py:46 +#: src/emc/usr_intf/stepconf/build_HAL.py:42 +#: src/emc/usr_intf/pncconf/pncconf.py:1328 +#: src/emc/usr_intf/pncconf/pncconf.py:2422 +msgid "# If you make changes to this file, they will be" +msgstr "# Se questo file viene modificato, questo sarà" -#: src/emc/usr_intf/touchy/touchy.glade:2722 -msgid "label27" -msgstr "etichetta27" +#: src/emc/usr_intf/stepconf/build_INI.py:47 +#: src/emc/usr_intf/stepconf/build_HAL.py:43 +msgid "# overwritten when you run stepconf again" +msgstr "# sovrascritto quando si userà ancora stepconf" -#: src/emc/usr_intf/touchy/touchy.glade:2737 -msgid "Prepped tool:" -msgstr "Utensile preparato:" +#: src/emc/usr_intf/stepconf/build_INI.py:126 +msgid "# add halui MDI commands here (max 64) " +msgstr "# aggiungere qui i comandi halui MDI (max 64) " -#: src/emc/usr_intf/touchy/touchy.glade:2750 -msgid "label28" -msgstr "etichetta28" +#: src/emc/usr_intf/stepconf/build_HAL.py:275 +#: src/emc/usr_intf/pncconf/pncconf.py:3131 +msgid "# **** Setup for external estop ladder program -START ****" +msgstr "# **** Setup per programma ladder estop esterno -AVVIO ****" -#: src/emc/usr_intf/touchy/touchy.glade:2765 -msgid "Running line:" -msgstr "Linea corrente:" +#: src/emc/usr_intf/stepconf/build_HAL.py:282 +#: src/emc/usr_intf/pncconf/pncconf.py:3138 +msgid "# **** Setup for external estop ladder program -END ****" +msgstr "# **** Setup per programma ladder estop esterno -FINE ****" -#: src/emc/usr_intf/touchy/touchy.glade:2794 -msgid "XY Rotation:" -msgstr "Rotazione XY:" +#: src/emc/usr_intf/stepconf/build_HAL.py:302 +#: src/emc/usr_intf/pncconf/pncconf.py:3165 +msgid "" +"# Load Classicladder with modbus master included (GUI must run for Modbus)" +msgstr "" +"# Carica Classicladder con modbus master incluso (GUI deve girare per Modbus)" -#: src/emc/usr_intf/touchy/touchy.glade:2823 -msgid "Tool length:" -msgstr "Lunghezza Utensile:" +#: src/emc/usr_intf/stepconf/build_HAL.py:305 +#: src/emc/usr_intf/pncconf/pncconf.py:3170 +msgid "# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI" +msgstr "" +"# Carica Classicladder senza GUI (puoi ricaricare LADDER GUI in AXIS GUI" -#: src/emc/usr_intf/touchy/touchy.glade:2836 -msgid "label52" -msgstr "etichetta52" +#: src/emc/usr_intf/stepconf/build_HAL.py:315 +#: src/emc/usr_intf/pncconf/pncconf.py:3252 +msgid "Include your PyVCP panel here.\n" +msgstr "Includi qui il tuo Panello PyVCP.\n" -#: src/emc/usr_intf/touchy/touchy.glade:2851 +#: src/emc/usr_intf/stepconf/build_HAL.py:324 +#: src/emc/usr_intf/stepconf/build_HAL.py:370 +msgid "# Include your customized HAL commands here" +msgstr "# Includi qui i tuoi comandi HAL personalizzati" + +#: src/emc/usr_intf/stepconf/build_HAL.py:325 msgid "" -"G1 G2 G3\n" -"M1 M2 M3\n" -"F1 S1" +"# The commands in this file are run after the AXIS GUI (including PyVCP " +"panel) starts" msgstr "" -"G1 G2 G3\n" -"M1 M2 M3\n" -"F1 S1" +"# I comandi di questo file saranno eseguiti dopo l'avvio della GUI AXIS " +"(incluso il panello PyVCP)" -#: src/emc/usr_intf/touchy/touchy.glade:2870 -msgid "Active codes:" -msgstr "Codici attivi:" +#: src/emc/usr_intf/stepconf/build_HAL.py:328 +#: src/emc/usr_intf/pncconf/pncconf.py:3280 +msgid "# **** Setup of spindle speed display using pyvcp -START ****" +msgstr "# **** Setup della velocità mandrino tramite pyvcp - START ****" -#: src/emc/usr_intf/touchy/touchy.glade:2883 -msgid "G5x Offset:" -msgstr "G5x Offset:" +#: src/emc/usr_intf/stepconf/build_HAL.py:330 +msgid "# **** Use ACTUAL spindle velocity from spindle encoder" +msgstr "# **** Usa velocità mandrino EFFETTIVA dall'encoder mandrino" -#: src/emc/usr_intf/touchy/touchy.glade:2898 -msgid "G92 Offset:" -msgstr "G92 Offset:" +#: src/emc/usr_intf/stepconf/build_HAL.py:331 +#, fuzzy +msgid "" +"# **** spindle-velocity-feedback-rps bounces around so we filter it with " +"lowpass" +msgstr "# **** velocità mandrino intermittente, usa filtro passabasso " -#: src/emc/usr_intf/touchy/touchy.glade:2942 -msgid "Loaded file lines:" -msgstr "Linee File caricate:" +#: src/emc/usr_intf/stepconf/build_HAL.py:332 +#, fuzzy +msgid "" +"# **** spindle-velocity-feedback-rps is signed so we use absolute component " +"to remove sign" +msgstr "" +"# **** velocità mandrino con il segno, pertanto usa componente assoluta per " +"rimuovere il segno " -#: src/emc/usr_intf/touchy/touchy.glade:2971 -msgid "Pockets:" -msgstr "Tasche:" +#: src/emc/usr_intf/stepconf/build_HAL.py:333 +msgid "# **** ACTUAL velocity is in RPS not RPM so we scale it." +msgstr "" +"# **** velocità EFFETTIVA è in giri/s e non giri/min spertanto viene scalata." -#: src/emc/usr_intf/touchy/touchy.glade:2984 +#: src/emc/usr_intf/stepconf/build_HAL.py:342 +msgid "# **** set up spindle at speed indicator ****" +msgstr "# **** Imposta velocità mandrino come indicatore ****" + +#: src/emc/usr_intf/stepconf/build_HAL.py:355 msgid "" -"1\n" -"2\n" -"3" +"# **** Use COMMANDED spindle velocity from LinuxCNC because no spindle " +"encoder was specified" msgstr "" -"1\n" -"2\n" -"3" +"# **** Usa velocità mandrino COMANDATA da LinuxCNC perchè non è stato " +"specificato nessun encoder mandrino" -#: src/emc/usr_intf/touchy/touchy.glade:3009 -msgid "Status" -msgstr "Stato" +#: src/emc/usr_intf/stepconf/build_HAL.py:371 +msgid "# This file will not be overwritten when you run stepconf again" +msgstr "# Questo file non sara' sovrascritto quando si userà ancora stepconf" -#: src/emc/usr_intf/touchy/touchy.glade:3038 -msgid "Control Font:" -msgstr "Font Controllo:" +#: src/emc/usr_intf/stepconf/build_HAL.py:412 +msgid "# This file sets up simulated limits/home/spindle encoder hardware." +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3050 -msgid "DRO Font:" -msgstr "Font DRO:" +#: src/emc/usr_intf/stepconf/build_HAL.py:413 +msgid "# This is a generated file do not edit." +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3064 -msgid "Error Font:" -msgstr "Font Errori: " +#: src/emc/usr_intf/stepconf/main_page.glade:35 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Acceleration:" +msgstr "Accelerazione:" -#: src/emc/usr_intf/touchy/touchy.glade:3081 -msgid "ControlFont" -msgstr "Font Controllo" +#: src/emc/usr_intf/stepconf/main_page.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Jog:" +msgstr "Jog:" -#: src/emc/usr_intf/touchy/touchy.glade:3100 -msgid "DRO Font" -msgstr "Font DRO" +#: src/emc/usr_intf/stepconf/main_page.glade:63 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Test Area:" +msgstr "Area Test:" -#: src/emc/usr_intf/touchy/touchy.glade:3121 -msgid "Error Font" -msgstr "Font Errori" +#: src/emc/usr_intf/stepconf/main_page.glade:97 +msgid "mm/s^2" +msgstr "mm/s^2" -#: src/emc/usr_intf/touchy/touchy.glade:3139 -msgid "Listing Font:" -msgstr "Font Listato:" +#: src/emc/usr_intf/stepconf/main_page.glade:138 +msgid "mm/s" +msgstr "mm/s" -#: src/emc/usr_intf/touchy/touchy.glade:3156 -msgid "Listing Font" -msgstr "Font Listato" +#: src/emc/usr_intf/stepconf/main_page.glade:400 +msgid "±" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3176 -msgid "Hide pointer" -msgstr "Nascondi puntatore" +#: src/emc/usr_intf/stepconf/main_page.glade:423 +#, fuzzy +msgid "Stepconf -Stepper Configuration Wizard" +msgstr "Configurazione Fresatrice Stepper in LinuxCNC" -#: src/emc/usr_intf/touchy/touchy.glade:3187 -msgid "Show pointer" -msgstr "Mostra puntatore" +#: src/emc/usr_intf/stepconf/main_page.glade:503 +#: src/emc/usr_intf/pncconf/pncconf.glade:2054 +#: src/emc/usr_intf/pncconf/pncconf.glade:2067 +#: src/emc/usr_intf/pncconf/pncconf.glade:2080 +#: src/emc/usr_intf/pncconf/pncconf.glade:2093 +#: src/emc/usr_intf/pncconf/pncconf.glade:2106 +#: src/emc/usr_intf/pncconf/pncconf.glade:2119 +#: src/emc/usr_intf/pncconf/pncconf.glade:2132 +#: src/emc/usr_intf/pncconf/pncconf.glade:2145 +#: src/emc/usr_intf/pncconf/pncconf.glade:2156 +#: src/emc/usr_intf/pncconf/pncconf.glade:2169 +#: src/emc/usr_intf/pncconf/pncconf.glade:2182 +#: src/emc/usr_intf/pncconf/pncconf.glade:2528 +#: src/emc/usr_intf/pncconf/pncconf.glade:2541 +#: src/emc/usr_intf/pncconf/pncconf.glade:2554 +#: src/emc/usr_intf/pncconf/pncconf.glade:8104 +#: src/emc/usr_intf/pncconf/pncconf.glade:8139 +#: src/emc/usr_intf/pncconf/pncconf.glade:63377 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:1342 +#: src/emc/usr_intf/gscreen/gscreen.glade:1360 +#: src/emc/usr_intf/gscreen/gscreen.glade:1378 +msgid "label" +msgstr "etichetta" -#: src/emc/usr_intf/touchy/touchy.glade:3214 -msgid "Theme:" -msgstr "Tema:" +#: src/emc/usr_intf/stepconf/main_page.glade:605 +#, fuzzy +msgid "" +"This program creates configuration files (.ini and .hal) for \"step and " +"direction\" milling machines and lathes connected to the PC parallel port.\n" +"\n" +"Stepconf requires a minimum 800 X 600 display resolution." +msgstr "" +"Questo programma crea files di configurazione (.ini e .hal) per fresatrici " +"\"step e direzione\" e torni connessi alla porta parallela del PC.\n" +"\n" +"Stepconf richiede almeno una risoluzione video 800 x 600.\n" +"E' possibile chiudere il 'Driver Timing Setting' ed \n" +"espandere il Settaggio Porta Parallela." + +#: src/emc/usr_intf/stepconf/main_page.glade:628 +#: src/emc/usr_intf/pncconf/pncconf.glade:28799 +#: src/emc/usr_intf/pncconf/pncconf.glade:35720 +#: src/emc/usr_intf/pncconf/pncconf.glade:42643 +#: src/emc/usr_intf/pncconf/pncconf.glade:49566 +#: src/emc/usr_intf/pncconf/pncconf.glade:56489 +msgid "page 1" +msgstr "pagina 1" + +#: src/emc/usr_intf/stepconf/base.glade:18 +msgid "XYZ" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3228 -msgid "default\n" -msgstr "default\n" +#: src/emc/usr_intf/stepconf/base.glade:21 +msgid "XYZA" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3252 -msgid "Display Options" -msgstr "Opzioni Visualizzazione" +#: src/emc/usr_intf/stepconf/base.glade:24 +#, fuzzy +msgid "XZ (Lathe)" +msgstr "" +"XYZ\n" +"XYZA\n" +"XZ (Tornio)" -#: src/emc/usr_intf/touchy/touchy.glade:3286 -msgid "Inch" -msgstr "Pollici" +#: src/emc/usr_intf/stepconf/base.glade:79 +msgid "Step _Time:" +msgstr "_Tempo Passo:" -#: src/emc/usr_intf/touchy/touchy.glade:3349 -msgid "Position Readout" -msgstr "Posizione corrente" +#: src/emc/usr_intf/stepconf/base.glade:113 +#: src/emc/usr_intf/stepconf/base.glade:165 +#: src/emc/usr_intf/stepconf/base.glade:219 +#: src/emc/usr_intf/stepconf/base.glade:271 +#: src/emc/usr_intf/stepconf/base.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:443 +#: src/emc/usr_intf/pncconf/pncconf.glade:8226 +msgid "ns" +msgstr "ns" -#: src/emc/usr_intf/touchy/touchy.glade:3379 -msgid "Workpiece" -msgstr "Pezzo" +#: src/emc/usr_intf/stepconf/base.glade:127 +msgid "Step _Space:" +msgstr "_Spazio Passo:" -#: src/emc/usr_intf/touchy/touchy.glade:3390 -msgid "Fixture" -msgstr "Fissaggio" +#: src/emc/usr_intf/stepconf/base.glade:181 +msgid "Direction _Hold:" +msgstr "_Mantiene Direzione:" -#: src/emc/usr_intf/touchy/touchy.glade:3410 -msgid "Tool Setting" -msgstr "Impostazoni Utensile" +#: src/emc/usr_intf/stepconf/base.glade:235 +msgid "_Direction Setup:" +msgstr "Setup _Direzione:" -#: src/emc/usr_intf/touchy/touchy.glade:3441 -msgid "Delete / lines" -msgstr "Cancella linee /" +#: src/emc/usr_intf/stepconf/base.glade:338 +msgid "Driver Timing Settings" +msgstr "Impostazione Tempo Driver" -#: src/emc/usr_intf/touchy/touchy.glade:3456 -msgid "Keep / lines" -msgstr "Mantieni linee /" +#: src/emc/usr_intf/stepconf/base.glade:351 +msgid "" +"_Test Base\n" +"Period Jitter " +msgstr "" +"_Test Base\n" +"Periodo Jitter " -#: src/emc/usr_intf/touchy/touchy.glade:3473 -msgid "Pause on M1" -msgstr "Pausa con M1" +#: src/emc/usr_intf/stepconf/base.glade:372 +msgid "Machine _Name:" +msgstr "_Nome Macchina" -#: src/emc/usr_intf/touchy/touchy.glade:3484 -msgid "Ignore M1" -msgstr "Ignora M1" +#: src/emc/usr_intf/stepconf/base.glade:386 +msgid "_Axis configuration:" +msgstr "Configurazione _Asse" -#: src/emc/usr_intf/touchy/touchy.glade:3504 -msgid "Program Options" -msgstr "Opzioni Programma" +#: src/emc/usr_intf/stepconf/base.glade:401 +#, fuzzy +msgid "Reset Default machine _units:" +msgstr "_Unità Macchina" -#: src/emc/usr_intf/touchy/touchy.glade:3531 -msgid "Preferences" -msgstr "Preferenze" +#: src/emc/usr_intf/stepconf/base.glade:416 +#: src/emc/usr_intf/pncconf/pncconf.glade:245 +msgid "Configuration directory:" +msgstr "Percorso Configurazione:" -#: src/emc/usr_intf/touchy/touchy.glade:3567 -msgid "FO: 100%" -msgstr "FO: 100%" +#: src/emc/usr_intf/stepconf/base.glade:430 +msgid "D_river type:" +msgstr "Tipo D_river:" -#: src/emc/usr_intf/touchy/touchy.glade:3582 -msgid "SO: 100%" -msgstr "SO: 100%" +#: src/emc/usr_intf/stepconf/base.glade:545 +msgid "" +"Driver characteristics: (Multiply by 1000 for times specified in µs or " +"microseconds)" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3596 -msgid "MV: 100" -msgstr "MV: 100" +#: src/emc/usr_intf/stepconf/base.glade:573 +msgid "Base Period Maximum _Jitter:" +msgstr "Massimo Periodo Base _Jitter:" -#: src/emc/usr_intf/touchy/touchy.glade:3610 -msgid "Jogging" -msgstr "Movimento" +#: src/emc/usr_intf/stepconf/base.glade:630 +#, fuzzy +msgid "One Parport" +msgstr "%(name)s Porta Parallela" -#: src/emc/usr_intf/touchy/touchy.glade:3637 -msgid ".01" -msgstr ".01" +#: src/emc/usr_intf/stepconf/base.glade:646 +msgid "Two Parports" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3650 -msgid ".001" -msgstr ".01" +#: src/emc/usr_intf/stepconf/base.glade:663 +#, fuzzy +msgid "Three Parports" +msgstr "Terzo Indirizzo Porta Parallela:" -#: src/emc/usr_intf/touchy/touchy.glade:3666 -msgid ".0001" -msgstr ".0001" +#: src/emc/usr_intf/stepconf/base.glade:698 +msgid "Min Base Period:" +msgstr "Periodo Base Min:" -#: src/emc/usr_intf/touchy/touchy.glade:3694 -msgid " X " -msgstr " X " +#: src/emc/usr_intf/stepconf/base.glade:735 +msgid "Max step rate:" +msgstr "Max velocita' step:" -#: src/emc/usr_intf/touchy/touchy.glade:3706 -msgid " Y " -msgstr " Y " +#: src/emc/usr_intf/stepconf/base.glade:870 +msgid "MM" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3721 -msgid " Z " -msgstr " Z " +#: src/emc/usr_intf/stepconf/start.glade:11 +msgid "Create a _new configuration" +msgstr "Crea una _nuova configurazione" -#: src/emc/usr_intf/touchy/touchy.glade:3736 -msgid " A " -msgstr " A " +#: src/emc/usr_intf/stepconf/start.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:130 +msgid "Modify a configuration already created with this program" +msgstr "Modifica una configurazione già creata con questo programma" -#: src/emc/usr_intf/touchy/touchy.glade:3752 -msgid " B " -msgstr " B " +#: src/emc/usr_intf/stepconf/start.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:118 +msgid "Do you wish to:" +msgstr "Desideri:" -#: src/emc/usr_intf/touchy/touchy.glade:3770 -msgid " C " -msgstr " C " +#: src/emc/usr_intf/stepconf/start.glade:61 +#: src/emc/usr_intf/pncconf/pncconf.glade:100 +msgid "" +"If you have made modifications to this configuration outside this program, " +"they will be lost when you select \"Modify a configuration\"" +msgstr "" +"Se hai fatto modifiche a questa configurazione al di fuori di questo " +"programma,queste verranno perse quando selezioni \"Modifica una " +"configurazione\"" -#: src/emc/usr_intf/touchy/touchy.glade:3788 -msgid " U " -msgstr " U " +#: src/emc/usr_intf/stepconf/start.glade:76 +msgid "Create a desktop _shortcut (symlink) to configuration files." +msgstr "" +"Crea un collegamento (symlink) ai file di configurazione sulla _scrivania." -#: src/emc/usr_intf/touchy/touchy.glade:3804 -msgid " V " -msgstr " V " +#: src/emc/usr_intf/stepconf/start.glade:93 +msgid "Create a desktop _launcher to start LinuxCNC with this configuration." +msgstr "" +"Crea un _link sulla scrivania per avviare LinuxCNC con questa configurazione." -#: src/emc/usr_intf/touchy/touchy.glade:3822 -msgid " W " -msgstr " W " +#: src/emc/usr_intf/stepconf/start.glade:124 +#, fuzzy +msgid "Create simulated hardware configuration." +msgstr "Crea una nuova configurazione" -#: src/emc/usr_intf/touchy/touchy.glade:3855 -msgid "Handwheel" -msgstr "Volantino" +#: src/emc/usr_intf/stepconf/pport1.glade:35 +msgid "Xylotex" +msgstr "Xylotex" -#: src/emc/usr_intf/stepconf/stepconf.py:53 -msgid "" -"Stepconf encountered an error. The following information may be useful in " -"troubleshooting:\n" -"\n" +#: src/emc/usr_intf/stepconf/pport1.glade:38 +msgid "TB6560 3 axes" msgstr "" -"Stepconf ha trovato un errore. L' informazione seguente puo' essere utile " -"per la soluzione:\n" -"\n" -#: src/emc/usr_intf/stepconf/stepconf.py:70 -#: src/emc/usr_intf/pncconf/pncconf.py:133 -msgid "Gecko 201" -msgstr "Gecko 201" +#: src/emc/usr_intf/stepconf/pport1.glade:41 +msgid "TB6560 4 axes" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:71 -#: src/emc/usr_intf/pncconf/pncconf.py:134 -msgid "Gecko 202" -msgstr "Gecko 202" +#: src/emc/usr_intf/stepconf/pport1.glade:59 +#: src/emc/usr_intf/pncconf/pncconf.glade:62915 +msgid "Pin _1:" +msgstr "Pin _1:" -#: src/emc/usr_intf/stepconf/stepconf.py:72 -#: src/emc/usr_intf/pncconf/pncconf.py:135 -msgid "Gecko 203v" -msgstr "Gecko 203v" +#: src/emc/usr_intf/stepconf/pport1.glade:74 +#: src/emc/usr_intf/stepconf/pport2.glade:768 +#: src/emc/usr_intf/pncconf/pncconf.glade:61685 +#: src/emc/usr_intf/pncconf/pncconf.glade:62901 +msgid "Pin _2:" +msgstr "Pin _2:" -#: src/emc/usr_intf/stepconf/stepconf.py:73 -#: src/emc/usr_intf/pncconf/pncconf.py:136 -msgid "Gecko 210" -msgstr "Gecko 210" +#: src/emc/usr_intf/stepconf/pport1.glade:89 +#: src/emc/usr_intf/stepconf/pport2.glade:814 +#: src/emc/usr_intf/pncconf/pncconf.glade:61668 +#: src/emc/usr_intf/pncconf/pncconf.glade:62887 +msgid "Pin _3:" +msgstr "Pin _3:" -#: src/emc/usr_intf/stepconf/stepconf.py:74 -#: src/emc/usr_intf/pncconf/pncconf.py:137 -msgid "Gecko 212" -msgstr "Gecko 212" +#: src/emc/usr_intf/stepconf/pport1.glade:104 +#: src/emc/usr_intf/stepconf/pport2.glade:860 +#: src/emc/usr_intf/pncconf/pncconf.glade:61651 +#: src/emc/usr_intf/pncconf/pncconf.glade:62873 +msgid "Pin _4:" +msgstr "Pin _4:" -#: src/emc/usr_intf/stepconf/stepconf.py:75 -#: src/emc/usr_intf/pncconf/pncconf.py:138 -msgid "Gecko 320" -msgstr "Gecko 320" +#: src/emc/usr_intf/stepconf/pport1.glade:119 +#: src/emc/usr_intf/stepconf/pport2.glade:906 +#: src/emc/usr_intf/pncconf/pncconf.glade:61634 +#: src/emc/usr_intf/pncconf/pncconf.glade:62859 +msgid "Pin _5:" +msgstr "Pin _5:" -#: src/emc/usr_intf/stepconf/stepconf.py:76 -#: src/emc/usr_intf/pncconf/pncconf.py:139 -msgid "Gecko 540" -msgstr "Gecko 540" +#: src/emc/usr_intf/stepconf/pport1.glade:134 +#: src/emc/usr_intf/stepconf/pport2.glade:952 +#: src/emc/usr_intf/pncconf/pncconf.glade:61617 +#: src/emc/usr_intf/pncconf/pncconf.glade:62845 +msgid "Pin _6:" +msgstr "Pin _6:" -#: src/emc/usr_intf/stepconf/stepconf.py:77 -#: src/emc/usr_intf/pncconf/pncconf.py:140 -msgid "L297" -msgstr "L297" +#: src/emc/usr_intf/stepconf/pport1.glade:149 +#: src/emc/usr_intf/stepconf/pport2.glade:998 +#: src/emc/usr_intf/pncconf/pncconf.glade:61600 +#: src/emc/usr_intf/pncconf/pncconf.glade:62831 +msgid "Pin _7:" +msgstr "Pin _7:" -#: src/emc/usr_intf/stepconf/stepconf.py:78 -#: src/emc/usr_intf/pncconf/pncconf.py:141 -msgid "PMDX-150" -msgstr "PMDX-150" +#: src/emc/usr_intf/stepconf/pport1.glade:164 +#: src/emc/usr_intf/stepconf/pport2.glade:1044 +#: src/emc/usr_intf/pncconf/pncconf.glade:61583 +#: src/emc/usr_intf/pncconf/pncconf.glade:62817 +msgid "Pin _8:" +msgstr "Pin _8:" -#: src/emc/usr_intf/stepconf/stepconf.py:79 -#: src/emc/usr_intf/pncconf/pncconf.py:142 -msgid "Sherline" -msgstr "Sherline" +#: src/emc/usr_intf/stepconf/pport1.glade:179 +#: src/emc/usr_intf/stepconf/pport2.glade:1090 +#: src/emc/usr_intf/pncconf/pncconf.glade:61566 +#: src/emc/usr_intf/pncconf/pncconf.glade:62803 +msgid "Pin _9:" +msgstr "Pin _9:" -#: src/emc/usr_intf/stepconf/stepconf.py:80 -#: src/emc/usr_intf/pncconf/pncconf.py:143 -msgid "Xylotex 8S-3" -msgstr "Xylotex 8S-3" +#: src/emc/usr_intf/stepconf/pport1.glade:194 +#: src/emc/usr_intf/stepconf/pport2.glade:1137 +#: src/emc/usr_intf/pncconf/pncconf.glade:62789 +msgid "_Pin 14:" +msgstr "_Pin 14:" -#: src/emc/usr_intf/stepconf/stepconf.py:81 -#: src/emc/usr_intf/pncconf/pncconf.py:144 -msgid "Parker-Compumotor oem750" -msgstr "Parker-Compumotor oem750" +#: src/emc/usr_intf/stepconf/pport1.glade:209 +#: src/emc/usr_intf/stepconf/pport2.glade:1185 +#: src/emc/usr_intf/pncconf/pncconf.glade:62775 +msgid "P_in 16:" +msgstr "P_in 16:" -#: src/emc/usr_intf/stepconf/stepconf.py:82 -#: src/emc/usr_intf/pncconf/pncconf.py:145 -msgid "JVL-SMD41 or 42" -msgstr "JVL-SMD41 or 42" +#: src/emc/usr_intf/stepconf/pport1.glade:224 +#: src/emc/usr_intf/stepconf/pport2.glade:1233 +#: src/emc/usr_intf/pncconf/pncconf.glade:62761 +msgid "Pi_n 17:" +msgstr "Pi_n 17:" -#: src/emc/usr_intf/stepconf/stepconf.py:83 -#: src/emc/usr_intf/pncconf/pncconf.py:146 -msgid "Hobbycnc Pro Chopper" -msgstr "Hobbycnc Pro Chopper" +#: src/emc/usr_intf/stepconf/pport1.glade:470 +#: src/emc/usr_intf/stepconf/pport2.glade:692 +msgid "Outputs (PC to Mill):" +msgstr "Outputs (PC verso Fresatrice):" -#: src/emc/usr_intf/stepconf/stepconf.py:84 -#: src/emc/usr_intf/pncconf/pncconf.py:147 -msgid "Keling 4030" -msgstr "Keling 4030" +#: src/emc/usr_intf/stepconf/pport1.glade:483 +#: src/emc/usr_intf/stepconf/pport2.glade:427 +#: src/emc/usr_intf/pncconf/pncconf.glade:61701 +msgid "Pin 1_0:" +msgstr "Pin 1_0:" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -msgid "X Step" -msgstr "Passo X" +#: src/emc/usr_intf/stepconf/pport1.glade:500 +#: src/emc/usr_intf/stepconf/pport2.glade:475 +#: src/emc/usr_intf/pncconf/pncconf.glade:61717 +msgid "Pin 1_1:" +msgstr "Pin 1_1:" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -msgid "X Direction" -msgstr "Direzione X" +#: src/emc/usr_intf/stepconf/pport1.glade:517 +#: src/emc/usr_intf/stepconf/pport2.glade:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:61733 +msgid "Pin 1_2:" +msgstr "Pin 1_2:" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -msgid "Y Step" -msgstr "Passo Y" +#: src/emc/usr_intf/stepconf/pport1.glade:534 +#: src/emc/usr_intf/stepconf/pport2.glade:571 +#: src/emc/usr_intf/pncconf/pncconf.glade:61749 +msgid "Pin 1_3:" +msgstr "Pin 1_3:" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -msgid "Y Direction" -msgstr "Direzione Y" +#: src/emc/usr_intf/stepconf/pport1.glade:551 +#: src/emc/usr_intf/stepconf/pport2.glade:619 +#: src/emc/usr_intf/pncconf/pncconf.glade:61765 +msgid "Pin 1_5:" +msgstr "Pin 1_5:" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -msgid "Z Step" -msgstr "Passo Z" +#: src/emc/usr_intf/stepconf/pport1.glade:590 +#: src/emc/usr_intf/stepconf/pport2.glade:16 +msgid "Inputs (Mill to PC):" +msgstr "Inputs (Fresatrice a PC):" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -msgid "Z Direction" -msgstr "Direzione Z" +#: src/emc/usr_intf/stepconf/pport1.glade:618 +#: src/emc/usr_intf/stepconf/pport1.glade:632 +#: src/emc/usr_intf/stepconf/pport2.glade:29 +#: src/emc/usr_intf/stepconf/pport2.glade:702 +#: src/emc/usr_intf/pncconf/pncconf.glade:62335 +#: src/emc/usr_intf/pncconf/pncconf.glade:62348 +msgid "Invert" +msgstr "Inverti" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -msgid "A Step" -msgstr "Passo A" +#: src/emc/usr_intf/stepconf/pport1.glade:1018 +msgid "Output pinout presets:" +msgstr "Presets pinout output:" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -msgid "A Direction" -msgstr "Direzione A" +#: src/emc/usr_intf/stepconf/pport1.glade:1096 +#, fuzzy +msgid "Parport _Base Address:" +msgstr "Primo Indirizzo _Base Porta Parallela:" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -msgid "Spindle ON" -msgstr "Mandrino ON" +#: src/emc/usr_intf/stepconf/pport1.glade:1132 +#, fuzzy +msgid "Preset" +msgstr "Reset" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:557 -msgid "Spindle PWM" -msgstr "Mandrino PWM" +#: src/emc/usr_intf/stepconf/pport2.glade:47 +#, fuzzy +msgid "Pin 2:" +msgstr "Pin _2:" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -msgid "Spindle Brake" -msgstr "Freno Mandrino" +#: src/emc/usr_intf/stepconf/pport2.glade:94 +#, fuzzy +msgid "Pin 3:" +msgstr "Pin _3:" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 -msgid "Coolant Mist" -msgstr "Refrigerante Aria" +#: src/emc/usr_intf/stepconf/pport2.glade:141 +#, fuzzy +msgid "Pin 4:" +msgstr "Pin _4:" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 -msgid "Coolant Flood" -msgstr "Refrigerante liquido" +#: src/emc/usr_intf/stepconf/pport2.glade:188 +#, fuzzy +msgid "Pin 5:" +msgstr "Pin _5:" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:442 -msgid "ESTOP Out" -msgstr "ESTOP Out" +#: src/emc/usr_intf/stepconf/pport2.glade:235 +#, fuzzy +msgid "Pin 6:" +msgstr "Pin _6:" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -msgid "Amplifier Enable" -msgstr "Abilita Amplificatore" +#: src/emc/usr_intf/stepconf/pport2.glade:282 +#, fuzzy +msgid "Pin 7:" +msgstr "Pin _7:" -#: src/emc/usr_intf/stepconf/stepconf.py:157 -#: src/emc/usr_intf/pncconf/pncconf.py:443 -msgid "Charge Pump" -msgstr "Carica Pompa" +#: src/emc/usr_intf/stepconf/pport2.glade:329 +#, fuzzy +msgid "Pin 8:" +msgstr "Pin _8:" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 0" -msgstr "Out digitale 0" +#: src/emc/usr_intf/stepconf/pport2.glade:376 +#, fuzzy +msgid "Pin 9:" +msgstr "Pin _9:" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 1" -msgstr "Out digitale 1" +#: src/emc/usr_intf/stepconf/pport2.glade:721 +#, fuzzy +msgid "Pin _1: " +msgstr "Pin _1:" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 2" -msgstr "Out digitale 2" +#: src/emc/usr_intf/stepconf/pport2.glade:1431 +msgid "Out" +msgstr "Out" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 3" -msgstr "Out digitale 3" +#: src/emc/usr_intf/stepconf/pport2.glade:1434 +#, fuzzy +msgid "In" +msgstr "Inv" -#: src/emc/usr_intf/stepconf/stepconf.py:159 -#: src/emc/usr_intf/stepconf/stepconf.py:178 -msgid "Unused" -msgstr "Inutilizzato" +#: src/emc/usr_intf/stepconf/spindle.glade:23 +msgid "Use spindle-at-speed:" +msgstr "Usa Velocità Mandrino:" -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 -msgid "ESTOP In" -msgstr "ESTOP In" +#: src/emc/usr_intf/stepconf/spindle.glade:64 +msgid "Speed display filter gain:" +msgstr "Velocità display filtro guadagno:" -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 -msgid "Probe In" -msgstr "Probe In" +#: src/emc/usr_intf/stepconf/spindle.glade:99 +msgid "Calibration:" +msgstr "Calibrazione:" -#: src/emc/usr_intf/stepconf/stepconf.py:162 -msgid "Spindle Index" -msgstr "Indice Mandrino" +#: src/emc/usr_intf/stepconf/spindle.glade:113 +msgid "_Speed 1:" +msgstr "_Velocità 1:" -#: src/emc/usr_intf/stepconf/stepconf.py:162 -msgid "Spindle Phase A" -msgstr "Fase A Mandrino" +#: src/emc/usr_intf/stepconf/spindle.glade:129 +msgid "_PWM 1:" +msgstr "_PWM 1:" -#: src/emc/usr_intf/stepconf/stepconf.py:162 -msgid "Spindle Phase B" -msgstr "Fase B Mandrino" +#: src/emc/usr_intf/stepconf/spindle.glade:148 +msgid "S_peed 2:" +msgstr "Ve_locità 2:" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -msgid "Home X" -msgstr "Origine X" +#: src/emc/usr_intf/stepconf/spindle.glade:164 +msgid "P_WM 2:" +msgstr "P_WM 2:" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -msgid "Home Y" -msgstr "Origine Y" +#: src/emc/usr_intf/stepconf/spindle.glade:183 +msgid "PWM _Rate:" +msgstr "_Velocità PWM:" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -msgid "Home Z" -msgstr "Origine Z" +#: src/emc/usr_intf/stepconf/spindle.glade:285 +msgid "_Cycles per revolution:" +msgstr "_Cicli per giro:" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -msgid "Home A" -msgstr "Origine A" +#: src/emc/usr_intf/stepconf/spindle.glade:347 +msgid "Enter 0 Hz for \"PDM\" mode" +msgstr "Inserisci 0 Hz per modo \"PDM\" " -#: src/emc/usr_intf/stepconf/stepconf.py:164 -msgid "Minimum Limit + Home X" -msgstr "Limite Minimo + Home X" +#: src/emc/usr_intf/stepconf/spindle.glade:360 +msgid "Scale %" +msgstr "Scala %" -#: src/emc/usr_intf/stepconf/stepconf.py:164 -msgid "Minimum Limit + Home Y" -msgstr "Limite Minimo + Home Y" +#: src/emc/usr_intf/stepconf/options.glade:50 +msgid "Include Halui user interface component" +msgstr "Include componente interfaccia utente Halui" -#: src/emc/usr_intf/stepconf/stepconf.py:165 -msgid "Minimum Limit + Home Z" -msgstr "Limite Minimo + Home Z" +#: src/emc/usr_intf/stepconf/options.glade:102 +#: src/emc/usr_intf/pncconf/pncconf.glade:6753 +msgid "Blank program" +msgstr "Azzera programma" -#: src/emc/usr_intf/stepconf/stepconf.py:165 -msgid "Minimum Limit + Home A" -msgstr "Limite Minimo + Home A" +#: src/emc/usr_intf/stepconf/options.glade:119 +#: src/emc/usr_intf/pncconf/pncconf.glade:6768 +msgid "Spindle speed display " +msgstr "Visualizza velocità mandrino" -#: src/emc/usr_intf/stepconf/stepconf.py:166 -msgid "Maximum Limit + Home X" -msgstr "Limite Massimo + Home X" +#: src/emc/usr_intf/stepconf/options.glade:136 +#: src/emc/usr_intf/stepconf/options.glade:671 +#: src/emc/usr_intf/pncconf/pncconf.glade:6799 +#: src/emc/usr_intf/pncconf/pncconf.glade:7120 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Existing custom program" +msgstr "Programma custom esistente" -#: src/emc/usr_intf/stepconf/stepconf.py:166 -msgid "Maximum Limit + Home Y" -msgstr "Limite Massimo + Home Y" +#: src/emc/usr_intf/stepconf/options.glade:153 +#: src/emc/usr_intf/stepconf/options.glade:688 +#: src/emc/usr_intf/pncconf/pncconf.glade:6814 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include connections to HAL" +msgstr "Include collegamenti ad HAL" -#: src/emc/usr_intf/stepconf/stepconf.py:167 -msgid "Maximum Limit + Home Z" -msgstr "Limite Massimo + Home Z" +#: src/emc/usr_intf/stepconf/options.glade:202 +#: src/emc/usr_intf/pncconf/pncconf.glade:6997 +#: src/emc/usr_intf/pncconf/pncconf.glade:7545 +msgid "" +"_Display\n" +"sample\n" +"panel" +msgstr "" +"_Visualizza\n" +"semplice\n" +"panello" -#: src/emc/usr_intf/stepconf/stepconf.py:167 -msgid "Maximum Limit + Home A" -msgstr "Limite Massimo + Home A" +#: src/emc/usr_intf/stepconf/options.glade:243 +#: src/emc/usr_intf/pncconf/pncconf.glade:7056 +msgid "Include custom PyVCP GUI panel" +msgstr "Includi Panello GUI PyVCP personalizzato" -#: src/emc/usr_intf/stepconf/stepconf.py:168 -msgid "Both Limit + Home X" -msgstr "Entrambi i Limiti + Home X" +#: src/emc/usr_intf/stepconf/options.glade:414 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (float) out pins:" +msgstr "Numero di pin input analogici (float):" -#: src/emc/usr_intf/stepconf/stepconf.py:168 -msgid "Both Limit + Home Y" -msgstr "Entrambi i Limiti + Home Y" +#: src/emc/usr_intf/stepconf/options.glade:429 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (float) in pins:" +msgstr "Numero di pin output analogici (float):" -#: src/emc/usr_intf/stepconf/stepconf.py:169 -msgid "Both Limit + Home Z" -msgstr "Entrambi i Limiti + Home Z" +#: src/emc/usr_intf/stepconf/options.glade:444 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (s32) out pins:" +msgstr "Numero di pin output analogici (s32):" -#: src/emc/usr_intf/stepconf/stepconf.py:169 -msgid "Both Limit + Home A" -msgstr "Entrambi i Limiti + Home A" +#: src/emc/usr_intf/stepconf/options.glade:459 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (s32) in pins:" +msgstr "Numero di pin input analogici (s32):" -#: src/emc/usr_intf/stepconf/stepconf.py:170 -msgid "Minimum Limit X" -msgstr "Limite Minimo X" +#: src/emc/usr_intf/stepconf/options.glade:475 +msgid "Number of digital out pins:" +msgstr "Numero di pin output digitali:" -#: src/emc/usr_intf/stepconf/stepconf.py:170 -msgid "Minimum Limit Y" -msgstr "Limite Minimo Y" +#: src/emc/usr_intf/stepconf/options.glade:506 +msgid "Number of digital in pins:" +msgstr "Numero di pin digitali in input:" -#: src/emc/usr_intf/stepconf/stepconf.py:171 -msgid "Minimum Limit Z" -msgstr "Limite Minimo Z" +#: src/emc/usr_intf/stepconf/options.glade:518 +msgid "setup number of external pins" +msgstr "imposta numero di pin esterni" -#: src/emc/usr_intf/stepconf/stepconf.py:171 -msgid "Minimum Limit A" -msgstr "Limite Minimo A" +#: src/emc/usr_intf/stepconf/options.glade:533 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include modbus master support" +msgstr "Include supporto master modbus" -#: src/emc/usr_intf/stepconf/stepconf.py:172 -msgid "Maximum Limit X" -msgstr "Limite Massimo X" +#: src/emc/usr_intf/stepconf/options.glade:625 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Blank ladder program" +msgstr "Azzera programma ladder" -#: src/emc/usr_intf/stepconf/stepconf.py:172 -msgid "Maximum Limit Y" -msgstr "Limite Massimo Y" +#: src/emc/usr_intf/stepconf/options.glade:638 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Estop ladder program" +msgstr "Estop programma ladder" -#: src/emc/usr_intf/stepconf/stepconf.py:173 -msgid "Maximum Limit Z" -msgstr "Limite Massimo Z" +#: src/emc/usr_intf/stepconf/options.glade:654 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Serial modbus program" +msgstr "Programma modbus seriale" -#: src/emc/usr_intf/stepconf/stepconf.py:173 -msgid "Maximum Limit A" -msgstr "Limite Massimo A" +#: src/emc/usr_intf/stepconf/options.glade:740 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"Edit ladder\n" +"program" +msgstr "" +"Modifica programma\n" +"ladder" -#: src/emc/usr_intf/stepconf/stepconf.py:174 -msgid "Both Limit X" -msgstr "Entrambi i limiti X" +#: src/emc/usr_intf/stepconf/options.glade:781 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include _Classicladder PLC" +msgstr "Includi _Classicladder PLC" -#: src/emc/usr_intf/stepconf/stepconf.py:174 -msgid "Both Limit Y" -msgstr "Entrambi i limiti Y" +#: src/emc/usr_intf/stepconf/options.glade:802 +#, fuzzy +msgid "_Onscreen prompt for manual tool change" +msgstr "" +"Avviso sullo schermo\n" +" per cambi_o utensile" -#: src/emc/usr_intf/stepconf/stepconf.py:175 -msgid "Both Limit Z" -msgstr "Entrambi i limiti Z" +#: src/emc/usr_intf/stepconf/axisx.glade:31 +#: src/emc/usr_intf/stepconf/axisy.glade:31 +#: src/emc/usr_intf/stepconf/axisz.glade:31 +#: src/emc/usr_intf/stepconf/axisa.glade:45 +msgid "_Motor steps per revolution:" +msgstr "Passi al giro del _motore:" -#: src/emc/usr_intf/stepconf/stepconf.py:175 -msgid "Both Limit A" -msgstr "Entrambi i limiti A" +#: src/emc/usr_intf/stepconf/axisx.glade:45 +#: src/emc/usr_intf/stepconf/axisy.glade:44 +#: src/emc/usr_intf/stepconf/axisz.glade:44 +#: src/emc/usr_intf/stepconf/axisa.glade:58 +msgid "_Driver Microstepping:" +msgstr "_Driver Microstepping:" -#: src/emc/usr_intf/stepconf/stepconf.py:176 -msgid "All limits" -msgstr "Tutti i limiti" +#: src/emc/usr_intf/stepconf/axisx.glade:61 +#: src/emc/usr_intf/stepconf/axisy.glade:59 +#: src/emc/usr_intf/stepconf/axisz.glade:59 +#: src/emc/usr_intf/stepconf/axisa.glade:73 +msgid "_Pulley teeth (Motor:Leadscrew):" +msgstr "_Puleggia dentata (Motore: vite conduttrice):" -#: src/emc/usr_intf/stepconf/stepconf.py:176 -msgid "All home" -msgstr "Azzeramento totale" +#: src/emc/usr_intf/stepconf/axisx.glade:77 +#: src/emc/usr_intf/stepconf/axisy.glade:74 +#: src/emc/usr_intf/stepconf/axisz.glade:74 +#: src/emc/usr_intf/stepconf/axisa.glade:88 +msgid "_Leadscrew Pitch:" +msgstr "Passo de_lla vite:" -#: src/emc/usr_intf/stepconf/stepconf.py:176 -msgid "All limits + homes" -msgstr "Tutti i limiti zero +" +#: src/emc/usr_intf/stepconf/axisx.glade:93 +#: src/emc/usr_intf/stepconf/axisy.glade:89 +#: src/emc/usr_intf/stepconf/axisz.glade:89 +#: src/emc/usr_intf/stepconf/axisa.glade:103 +#: src/emc/usr_intf/pncconf/pncconf.glade:64687 +msgid "Maximum _Velocity:" +msgstr "_Velocita' Massima:" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 0" -msgstr "Digital in 0" +#: src/emc/usr_intf/stepconf/axisx.glade:109 +#: src/emc/usr_intf/stepconf/axisy.glade:104 +#: src/emc/usr_intf/stepconf/axisz.glade:104 +#: src/emc/usr_intf/stepconf/axisa.glade:118 +#: src/emc/usr_intf/pncconf/pncconf.glade:64702 +msgid "Maximum _Acceleration:" +msgstr "_Accelerazione Massima:" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 1" -msgstr "Digital in 1" +#: src/emc/usr_intf/stepconf/axisx.glade:125 +#: src/emc/usr_intf/stepconf/axisy.glade:119 +#: src/emc/usr_intf/stepconf/axisz.glade:119 +#: src/emc/usr_intf/stepconf/axisa.glade:133 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Time to accelerate to max speed:" +msgstr "Tempo per accelerare alla massima velocita':" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 2" -msgstr "Digital in 2" +#: src/emc/usr_intf/stepconf/axisx.glade:141 +#: src/emc/usr_intf/stepconf/axisy.glade:134 +#: src/emc/usr_intf/stepconf/axisz.glade:134 +#: src/emc/usr_intf/stepconf/axisa.glade:148 +msgid "Distance to accelerate to max speed:" +msgstr "Distanza per accelerare alla massima velocita':" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 3" -msgstr "Digital n 3" +#: src/emc/usr_intf/stepconf/axisx.glade:271 +#: src/emc/usr_intf/stepconf/axisy.glade:263 +#: src/emc/usr_intf/stepconf/axisz.glade:263 +#: src/emc/usr_intf/stepconf/axisa.glade:277 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulse rate at max speed:" +msgstr "Velocità impulsi alla massima velocità:" -#: src/emc/usr_intf/stepconf/stepconf.py:203 -msgid "my-mill" -msgstr "my-mill" +#: src/emc/usr_intf/stepconf/axisx.glade:342 +#: src/emc/usr_intf/stepconf/axisy.glade:334 +#: src/emc/usr_intf/stepconf/axisz.glade:334 +#: src/emc/usr_intf/stepconf/axisa.glade:348 +msgid "_Home location:" +msgstr "Posizione _Home:" -#: src/emc/usr_intf/stepconf/stepconf.py:215 -#: src/emc/usr_intf/stepconf/stepconf.py:217 -#: src/emc/usr_intf/pncconf/pncconf.py:983 -#: src/emc/usr_intf/pncconf/pncconf.py:985 -msgid "Enter Address" -msgstr "Inserisci Indirizzo" +#: src/emc/usr_intf/stepconf/axisx.glade:358 +#: src/emc/usr_intf/stepconf/axisy.glade:349 +#: src/emc/usr_intf/stepconf/axisz.glade:349 +#: src/emc/usr_intf/stepconf/axisa.glade:363 +msgid "Home _Switch location:" +msgstr "Posizione _Switch Home:" -#: src/emc/usr_intf/stepconf/stepconf.py:375 -#, python-format -msgid "File %r was modified since it was written by stepconf" -msgstr "File %r e' stato modificato da quando è stato scritto da stepconf" +#: src/emc/usr_intf/stepconf/axisx.glade:374 +#: src/emc/usr_intf/stepconf/axisy.glade:364 +#: src/emc/usr_intf/stepconf/axisz.glade:364 +#: src/emc/usr_intf/stepconf/axisa.glade:378 +msgid "Home Sear_ch velocity:" +msgstr "Velocita' ricer_ca Home:" -#: src/emc/usr_intf/stepconf/stepconf.py:378 -msgid "" -"Saving this configuration file will discard configuration changes made " -"outside stepconf." -msgstr "" -"Salvare questo file di configurazione eliminera' i cambi alla configurazione " -"fatti fuori da stepconf." +#: src/emc/usr_intf/stepconf/axisx.glade:390 +#: src/emc/usr_intf/stepconf/axisy.glade:379 +#: src/emc/usr_intf/stepconf/axisz.glade:379 +#: src/emc/usr_intf/stepconf/axisa.glade:393 +msgid "Home La_tch direction:" +msgstr "Direzione scansione Home" -#: src/emc/usr_intf/stepconf/stepconf.py:393 -#: src/emc/usr_intf/pncconf/pncconf.py:1356 -msgid "Continue? " -msgstr "Continuo? " +#: src/emc/usr_intf/stepconf/axisx.glade:404 +#: src/emc/usr_intf/stepconf/axisy.glade:393 +#: src/emc/usr_intf/stepconf/axisz.glade:393 +#: src/emc/usr_intf/stepconf/axisa.glade:407 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "_:" +msgstr "_:" -#: src/emc/usr_intf/stepconf/stepconf.py:394 -#: src/emc/usr_intf/pncconf/pncconf.py:1357 -msgid "yY" -msgstr "yY" +#: src/emc/usr_intf/stepconf/axisx.glade:498 +#: src/emc/usr_intf/stepconf/axisy.glade:486 +#: src/emc/usr_intf/stepconf/axisz.glade:486 +#: src/emc/usr_intf/stepconf/axisa.glade:500 +msgid "Tab_le travel:" +msgstr "Spostamento tavo_la:" -#: src/emc/usr_intf/stepconf/stepconf.py:446 -#: src/emc/usr_intf/stepconf/stepconf.py:786 -#, python-format -msgid "# Generated by stepconf at %s" -msgstr "# Generato da stepconf a %s" +#: src/emc/usr_intf/stepconf/axisx.glade:531 +#: src/emc/usr_intf/stepconf/axisy.glade:518 +#: src/emc/usr_intf/stepconf/axisz.glade:518 +#: src/emc/usr_intf/stepconf/axisa.glade:532 +msgid "t_o" +msgstr "a" -#: src/emc/usr_intf/stepconf/stepconf.py:447 -#: src/emc/usr_intf/stepconf/stepconf.py:787 -#: src/emc/usr_intf/pncconf/pncconf.py:1366 -#: src/emc/usr_intf/pncconf/pncconf.py:2369 -msgid "# If you make changes to this file, they will be" -msgstr "# Se questo file viene modificato, questo sarà" +#: src/emc/usr_intf/stepconf/axisx.glade:677 +#: src/emc/usr_intf/stepconf/axisy.glade:663 +#: src/emc/usr_intf/stepconf/axisz.glade:663 +#: src/emc/usr_intf/stepconf/axisa.glade:677 +msgid "s" +msgstr "s" -#: src/emc/usr_intf/stepconf/stepconf.py:448 -#: src/emc/usr_intf/stepconf/stepconf.py:788 -msgid "# overwritten when you run stepconf again" -msgstr "# sovrascritto quando si userà ancora stepconf" +#: src/emc/usr_intf/stepconf/axisx.glade:738 +#: src/emc/usr_intf/stepconf/axisy.glade:724 +#: src/emc/usr_intf/stepconf/axisz.glade:724 +#: src/emc/usr_intf/stepconf/axisa.glade:738 +msgid "T_est this axis" +msgstr "Prova questo ass_e" -#: src/emc/usr_intf/stepconf/stepconf.py:516 -msgid "# add halui MDI commands here (max 64) " -msgstr "# aggiungere qui i comandi halui MDI (max 64) " +#: src/emc/usr_intf/stepconf/axisx.glade:765 +#: src/emc/usr_intf/stepconf/axisy.glade:751 +#: src/emc/usr_intf/stepconf/axisz.glade:751 +#: src/emc/usr_intf/stepconf/axisa.glade:765 +msgid "Axis SCALE:" +msgstr "SCALA asse:" -#: src/emc/usr_intf/stepconf/stepconf.py:991 -#: src/emc/usr_intf/pncconf/pncconf.py:2991 -msgid "# **** Setup for external estop ladder program -START ****" -msgstr "# **** Setup per programma ladder estop esterno -AVVIO ****" +#: src/emc/usr_intf/stepconf/axisx.glade:833 +#: src/emc/usr_intf/stepconf/axisy.glade:819 +#: src/emc/usr_intf/stepconf/axisz.glade:819 +#: src/emc/usr_intf/stepconf/axisa.glade:12 +msgid "Same" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:998 -#: src/emc/usr_intf/pncconf/pncconf.py:2998 -msgid "# **** Setup for external estop ladder program -END ****" -msgstr "# **** Setup per programma ladder estop esterno -FINE ****" +#: src/emc/usr_intf/stepconf/axisx.glade:836 +#: src/emc/usr_intf/stepconf/axisy.glade:822 +#: src/emc/usr_intf/stepconf/axisz.glade:822 +#: src/emc/usr_intf/stepconf/axisa.glade:15 +#, fuzzy +msgid "Opposite" +msgstr "" +"Stesso\n" +"Opposta" -#: src/emc/usr_intf/stepconf/stepconf.py:1018 -#: src/emc/usr_intf/pncconf/pncconf.py:3025 +#: src/emc/usr_intf/stepconf/finished.glade:6 +#, fuzzy msgid "" -"# Load Classicladder with modbus master included (GUI must run for Modbus)" +"All the necessary information has now been gathered. \n" +"Click \"Done\" to write your configuration files to disk.\n" +"\n" +"If you experience lockups while running LinuxCNC:\n" +"-you will need to decrease the maximum velocity which will have the effect " +"of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC:\n" +"-first verify that you entered the proper timings for your stepper " +"drivers. \n" +"-then run a more thorough latency test as described on the linuxcnc.org " +"wiki.\n" +" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" +"\n" +"If you experience the \"Unexpected Realtime Delay\" message:\n" +"-run a more thorough latency test as described on the linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" msgstr "" -"# Carica Classicladder con modbus master incluso (GUI deve girare per Modbus)" +"Tutte le informazioni necessarie sono state raccolte. Clicca \"Applica\" " +"per scrivere il file di configurazione sul disco.\n" +"Se avverti dei blocchi mentre gira LinuxCNC, e' necessario decrementare la " +"velocita' massima che ha l' effetto di incrementare BASE_PERIOD.\n" +"\n" +"Se noti una perdita di passi mentre gira LinuxCNC, prima verifica che siano " +"stati immessi i giusti tempi per i tuoi stepper drivers. Se questo non " +"risolve il problema, allora rieffettua il latency test come descritto sul " +"wiki di linuxcnc.org:\n" +" http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting\n" +"\n" +"Se appare spesso il messaggio \"Unexpected Realtime Delay\", rieffettua il " +"latency test come descritto sul wiki di linuxcnc.org: \n" +" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" -#: src/emc/usr_intf/stepconf/stepconf.py:1021 -#: src/emc/usr_intf/pncconf/pncconf.py:3030 -msgid "# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI" +#: src/emc/usr_intf/pncconf/pncconf.py:81 +msgid "" +"PNCconf encountered an error. The following information may be useful in " +"troubleshooting:\n" +"\n" msgstr "" -"# Carica Classicladder senza GUI (puoi ricaricare LADDER GUI in AXIS GUI" +"PNCconf ha trovato un errore. L' informazione seguente puo' essere utile per " +"la soluzione:\n" +"\n" -#: src/emc/usr_intf/stepconf/stepconf.py:1031 -#: src/emc/usr_intf/pncconf/pncconf.py:3112 -msgid "Include your PyVCP panel here.\n" -msgstr "Includi qui il tuo Panello PyVCP.\n" +#: src/emc/usr_intf/pncconf/pncconf.py:149 +msgid "Keling 4030" +msgstr "Keling 4030" -#: src/emc/usr_intf/stepconf/stepconf.py:1040 -#: src/emc/usr_intf/stepconf/stepconf.py:1087 -msgid "# Include your customized HAL commands here" -msgstr "# Includi qui i tuoi comandi HAL personalizzati" +#: src/emc/usr_intf/pncconf/pncconf.py:151 +msgid "Not Used" +msgstr "Non Usato" -#: src/emc/usr_intf/stepconf/stepconf.py:1041 -msgid "" -"# The commands in this file are run after the AXIS GUI (including PyVCP " -"panel) starts" -msgstr "" -"# I comandi di questo file saranno eseguiti dopo l'avvio della GUI AXIS " -"(incluso il panello PyVCP)" +#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:176 +msgid "Dummy" +msgstr "Dummy" -#: src/emc/usr_intf/stepconf/stepconf.py:1045 -#: src/emc/usr_intf/pncconf/pncconf.py:3140 -msgid "# **** Setup of spindle speed display using pyvcp -START ****" -msgstr "# **** Setup della velocità mandrino tramite pyvcp - START ****" +#: src/emc/usr_intf/pncconf/pncconf.py:152 +msgid "8i20 Servo Drive" +msgstr "8i20 Servo Drive" -#: src/emc/usr_intf/stepconf/stepconf.py:1047 -msgid "# **** Use ACTUAL spindle velocity from spindle encoder" -msgstr "# **** Usa velocità mandrino EFFETTIVA dall'encoder mandrino" +#: src/emc/usr_intf/pncconf/pncconf.py:153 +msgid "POT Output" +msgstr "Output POT" -#: src/emc/usr_intf/stepconf/stepconf.py:1048 -msgid "# **** spindle-velocity bounces around so we filter it with lowpass" -msgstr "# **** velocità mandrino intermittente, usa filtro passabasso " +#: src/emc/usr_intf/pncconf/pncconf.py:153 +msgid "POT Enable" +msgstr "Abilita POT" -#: src/emc/usr_intf/stepconf/stepconf.py:1049 -msgid "" -"# **** spindle-velocity is signed so we use absolute component to remove sign" -msgstr "" -"# **** velocità mandrino con il segno, pertanto usa componente assoluta per " -"rimuovere il segno " +#: src/emc/usr_intf/pncconf/pncconf.py:153 +msgid "POT Direction" +msgstr "Direzione POT" -#: src/emc/usr_intf/stepconf/stepconf.py:1050 -msgid "# **** ACTUAL velocity is in RPS not RPM so we scale it." -msgstr "" -"# **** velocità EFFETTIVA è in giri/s e non giri/min spertanto viene scalata." +#: src/emc/usr_intf/pncconf/pncconf.py:154 +msgid "GPIO Input" +msgstr "Input GPIO" -#: src/emc/usr_intf/stepconf/stepconf.py:1059 -msgid "# **** set up spindle at speed indicator ****" -msgstr "# **** Imposta velocità mandrino come indicatore ****" +#: src/emc/usr_intf/pncconf/pncconf.py:154 +msgid "GPIO Output" +msgstr "Output GPIO" -#: src/emc/usr_intf/stepconf/stepconf.py:1072 -msgid "" -"# **** Use COMMANDED spindle velocity from LinuxCNC because no spindle " -"encoder was specified" -msgstr "" -"# **** Usa velocità mandrino COMANDATA da LinuxCNC perchè non è stato " -"specificato nessun encoder mandrino" +#: src/emc/usr_intf/pncconf/pncconf.py:154 +msgid "GPIO O Drain" +msgstr "GPIO O Drain" -#: src/emc/usr_intf/stepconf/stepconf.py:1073 -msgid "" -"# **** COMANDED velocity is signed so we use absolute component (abs.0) to " -"remove sign" -msgstr "" -"# **** velocità COMANDATA ha il segno, pertanto usa componente assoluto " -"(abs.0) per eliminare segno" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-A" +msgstr "Quad Encoder-A" -#: src/emc/usr_intf/stepconf/stepconf.py:1088 -msgid "# This file will not be overwritten when you run stepconf again" -msgstr "# Questo file non sara' sovrascritto quando si userà ancora stepconf" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-B" +msgstr "Quad Encoder-B" -#: src/emc/usr_intf/stepconf/stepconf.py:1095 -#, python-format -msgid "Generated by stepconf at %s" -msgstr "Generato da stepconf a %s" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-I" +msgstr "Quad Encoder-I" -#: src/emc/usr_intf/stepconf/stepconf.py:1166 -#: src/emc/usr_intf/pncconf/pncconf.py:3451 -#, python-format -msgid "launch %s" -msgstr "avvio %s" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-M" +msgstr "Quad Encoder-M" -#: src/emc/usr_intf/stepconf/stepconf.py:1170 -msgid "Desktop Launcher for LinuxCNC config made by Stepconf" -msgstr "Avvio dalla Scrivania per configurazioni LinuxCNC fatte da Stepconf" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "Muxed Encoder 0" +msgstr "Encoder Muxed 0" -#: src/emc/usr_intf/stepconf/stepconf.py:1196 -#: src/emc/usr_intf/pncconf/pncconf.py:3700 -#, python-format -msgid "%s Axis Configuration" -msgstr "Configurazione Asse %s " +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "Muxed Encoder 1" +msgstr "Encoder Muxed 1" -#: src/emc/usr_intf/stepconf/stepconf.py:1238 -#: src/emc/usr_intf/stepconf/stepconf.py:1337 -msgid "Other" -msgstr "Altro" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "muxed enc" +msgstr "muxed enc" -#: src/emc/usr_intf/stepconf/stepconf.py:1249 -msgid "Quit Stepconf and discard changes?" -msgstr "Esci da Stepconf e perdi modifiche?" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "mux enc mask" +msgstr "mux enc mask" -#: src/emc/usr_intf/stepconf/stepconf.py:1280 -msgid "" -"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " -"of hardware is unavailable." -msgstr "" -"Si sta usando una versione di LinuxCNC in realtime simulato, quindi non è " -"possibile la prova/controllo di hardware esterno." +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "mux select" +msgstr "Seleziona mux" -#: src/emc/usr_intf/stepconf/stepconf.py:1283 -msgid "" -"You are using a realtime version of LinuxCNC but didn't load a realtime " -"kernel so testing / tuning of hardware is unavailable.\n" -"This is possibly because you updated the OS and it doesn't automatically " -"load the RTAI kernel anymore.\n" -msgstr "" -"Si sta usando una versione realtime di LinuxCNC ma il kernel realtime non è " -"caricato pertanto prova/controllo di hardware esterno non è possibile.\n" -" Questo probabilmente accade perchè è stato aggiornato il SO e questo non " -"usa il kernel RTAI\n" +#: src/emc/usr_intf/pncconf/pncconf.py:157 +msgid "Resolver 0 Encoder" +msgstr "Encoder Resolver 0" -#: src/emc/usr_intf/stepconf/stepconf.py:1298 -msgid "LinuxCNC 'stepconf' configuration files" -msgstr "File configurazioni LinuxCNC 'stepconf' " +#: src/emc/usr_intf/pncconf/pncconf.py:157 +msgid "Resolver 1 Encoder" +msgstr "Encoder Resolver 1" -#: src/emc/usr_intf/stepconf/stepconf.py:1299 -#: src/emc/usr_intf/pncconf/pncconf.py:4094 -msgid "Modify Existing Configuration" -msgstr "Modifica Configurazione Esistente." +#: src/emc/usr_intf/pncconf/pncconf.py:157 +msgid "Resolver 2 Encoder" +msgstr "Encoder Resolver 2" -#: src/emc/usr_intf/stepconf/stepconf.py:1439 -msgid "" -"You need to designate an E-stop input pin in the Parallel Port Setup page " -"for this program." -msgstr "" -"Bisogna indicare un input pin di E-stop nella pagina di Configurazione Porta " -"Parallela di questo programma." +#: src/emc/usr_intf/pncconf/pncconf.py:158 +msgid "Resolver 3 Encoder" +msgstr "Encoder Resolver 3" -#: src/emc/usr_intf/stepconf/stepconf.py:1452 -msgid "" -"OK to replace existing custom ladder program?\n" -"Existing Custom.clp will be renamed custom_backup.clp.\n" -"Any existing file named -custom_backup.clp- will be lost. " -msgstr "" -"OK per sostituire il programma ladder custom esistente?\n" -"Custom.clp esistente sarà rinominato custom_backup.clp.\n" -"Qualsiasi file esistente di nome -custom_backup.clp- verrà perso. " +#: src/emc/usr_intf/pncconf/pncconf.py:158 +msgid "Resolver 4 Encoder" +msgstr "Encoder Resolver 4" -#: src/emc/usr_intf/stepconf/stepconf.py:1457 -#: src/emc/usr_intf/pncconf/pncconf.py:7815 -msgid "" -"You edited a ladder program and have selected a different program to copy to " -"your configuration file.\n" -"The edited program will be lost.\n" -"\n" -"Are you sure? " -msgstr "" -"E' stato modificato un programma ladder e hai scelto un diverso programma " -"per copiare il tuo file di configurazione.\n" -"Il programma modificato verrà perso.\n" -"\n" -"Sei sicuro? " +#: src/emc/usr_intf/pncconf/pncconf.py:158 +msgid "Resolver 5 Encoder" +msgstr "Encoder Resolver 5" -#: src/emc/usr_intf/stepconf/stepconf.py:1471 -msgid "" -"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" -"Existing custompanel.xml and custom_postgui.hal will be renamed " -"custompanel_backup.xml and postgui_backup.hal.\n" -"Any existing file named custompanel_backup.xml and custom_postgui.hal will " -"be lost. " -msgstr "" -"OK a sostituire i file esistenti del pannello pyvcp utente e custom_postgui." -"hal?\n" -"I file custompanel.xml e custom_postgui.hal saranno rinominati " -"custompanel_backup.xml e postgui_backup.hal.\n" -"Qualsiasi file esistente di nome custompanel_backup.xml e custom_postgui.hal " -"sarà perso." +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Step Gen-A" +msgstr "Step Gen-A" -#: src/emc/usr_intf/stepconf/stepconf.py:1676 -msgid "degree / rev" -msgstr "gradi / giro" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Dir Gen-B" +msgstr "Dir Gen-B" -#: src/emc/usr_intf/stepconf/stepconf.py:1677 -#: src/emc/usr_intf/stepconf/stepconf.py:2205 -msgid "deg / s" -msgstr "gradi / s" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Step/Dir Gen-C" +msgstr "Step/Dir Gen-C" + +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Step/Dir Gen-D" +msgstr "Step/Dir Gen-D" + +#: src/emc/usr_intf/pncconf/pncconf.py:160 +msgid "Step/Dir Gen-E" +msgstr "Step/Dir Gen-E" + +#: src/emc/usr_intf/pncconf/pncconf.py:160 +msgid "Step/dir Gen-F" +msgstr "Step/Dir Gen-F" + +#: src/emc/usr_intf/pncconf/pncconf.py:161 +msgid "Pulse Width Gen-P" +msgstr "Larghezza impulso Gen-P" + +#: src/emc/usr_intf/pncconf/pncconf.py:161 +msgid "Pulse Width Gen-D" +msgstr "Larghezza impulso Gen-D" -#: src/emc/usr_intf/stepconf/stepconf.py:1678 -#: src/emc/usr_intf/stepconf/stepconf.py:2206 -msgid "deg / s²" -msgstr "gradi / s²" +#: src/emc/usr_intf/pncconf/pncconf.py:161 +msgid "Pulse Width Gen-E" +msgstr "Larghezza impulso Gen-E" -#: src/emc/usr_intf/stepconf/stepconf.py:1679 -#: src/emc/usr_intf/stepconf/stepconf.py:2207 -msgid "deg" -msgstr "gradi" +#: src/emc/usr_intf/pncconf/pncconf.py:162 +msgid "Pulse Density Gen-P" +msgstr "Densità impulso Gen-P" -#: src/emc/usr_intf/stepconf/stepconf.py:1680 -msgid "Steps / deg" -msgstr "Passi / grado" +#: src/emc/usr_intf/pncconf/pncconf.py:162 +msgid "Pulse Density Gen-D" +msgstr "Densità impulso Gen-D" -#: src/emc/usr_intf/stepconf/stepconf.py:1682 -#: src/emc/usr_intf/stepconf/stepconf.glade:3589 -#: src/emc/usr_intf/pncconf/pncconf.glade:66138 -#: src/emc/usr_intf/pncconf/pncconf.glade:66424 -msgid "mm / rev" -msgstr "mm / giro" +#: src/emc/usr_intf/pncconf/pncconf.py:162 +msgid "Pulse Density Gen-E" +msgstr "Densità impulso Gen-E" -#: src/emc/usr_intf/stepconf/stepconf.py:1683 -#: src/emc/usr_intf/stepconf/stepconf.py:2219 -#: src/emc/usr_intf/stepconf/stepconf.glade:3604 -#: src/emc/usr_intf/pncconf/pncconf.glade:57828 -msgid "mm / s" -msgstr "mm / s" +#: src/emc/usr_intf/pncconf/pncconf.py:163 +msgid "Up/Down Mode -Up" +msgstr "Modo Up/Down -Up" -#: src/emc/usr_intf/stepconf/stepconf.py:1684 -#: src/emc/usr_intf/stepconf/stepconf.py:2220 -#: src/emc/usr_intf/stepconf/stepconf.glade:3619 -#: src/emc/usr_intf/pncconf/pncconf.glade:57813 -msgid "mm / s²" -msgstr "mm / s²" +#: src/emc/usr_intf/pncconf/pncconf.py:163 +msgid "Up/Down Mode-Down" +msgstr "Modo Up/Down -Down" -#: src/emc/usr_intf/stepconf/stepconf.py:1686 -#: src/emc/usr_intf/stepconf/stepconf.glade:3075 -#: src/emc/usr_intf/pncconf/pncconf.glade:66888 -msgid "Steps / mm" -msgstr "Passi / mm" +#: src/emc/usr_intf/pncconf/pncconf.py:163 +msgid "Up/Down Mode-Enable" +msgstr "Modo Up/Down -Abilitato" -#: src/emc/usr_intf/stepconf/stepconf.py:1688 -msgid "rev / in" -msgstr "giro / in" +#: src/emc/usr_intf/pncconf/pncconf.py:164 +msgid "Motor Phase A" +msgstr "Motore Fase A" -#: src/emc/usr_intf/stepconf/stepconf.py:1689 -#: src/emc/usr_intf/stepconf/stepconf.py:2233 -msgid "in / s" -msgstr "in / s" +#: src/emc/usr_intf/pncconf/pncconf.py:164 +msgid "Motor Phase B" +msgstr "Motore Fase B" -#: src/emc/usr_intf/stepconf/stepconf.py:1690 -#: src/emc/usr_intf/stepconf/stepconf.py:2234 -msgid "in / s²" -msgstr "in / s²" +#: src/emc/usr_intf/pncconf/pncconf.py:164 +msgid "Motor Phase C" +msgstr "Motore Fase C" -#: src/emc/usr_intf/stepconf/stepconf.py:1692 -msgid "Steps / in" -msgstr "Passi / in" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Phase A Not" +msgstr "Motore Fase A No" -#: src/emc/usr_intf/stepconf/stepconf.py:2202 -#: src/emc/usr_intf/pncconf/pncconf.py:8893 -#, python-format -msgid "%s Axis Test" -msgstr "Test Asse %s" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Phase B Not" +msgstr "Motore Fase B No" -#: src/emc/usr_intf/stepconf/stepconf.glade:8 -#: src/emc/usr_intf/stepconf/stepconf.glade:21 -msgid "LinuxCNC Stepper Mill Configuration" -msgstr "Configurazione Fresatrice Stepper in LinuxCNC" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Phase C Not" +msgstr "Motore Fase C No" -#: src/emc/usr_intf/stepconf/stepconf.glade:22 -msgid "" -"This program creates configuration files (.ini and .hal) for \"step and " -"direction\" milling machines and lathes connected to the PC parallel port.\n" -"\n" -"Stepconf requires a minimum 800 X 600 display resolution.\n" -"You may need to collapse the 'Driver Timing Settings' and \n" -"Parallel Port Settings' expanders." -msgstr "" -"Questo programma crea files di configurazione (.ini e .hal) per fresatrici " -"\"step e direzione\" e torni connessi alla porta parallela del PC.\n" -"\n" -"Stepconf richiede almeno una risoluzione video 800 x 600.\n" -"E' possibile chiudere il 'Driver Timing Setting' ed \n" -"espandere il Settaggio Porta Parallela." +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Enable" +msgstr "Abilita Motore" -#: src/emc/usr_intf/stepconf/stepconf.glade:51 -msgid "Create a _new configuration" -msgstr "Crea una _nuova configurazione" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Fault" +msgstr "Guasto Motore" -#: src/emc/usr_intf/stepconf/stepconf.glade:69 -#: src/emc/usr_intf/pncconf/pncconf.glade:70 -msgid "Modify a configuration already created with this program" -msgstr "Modifica una configurazione già creata con questo programma" +#: src/emc/usr_intf/pncconf/pncconf.py:168 +msgid "SMARTSERIAL-P0-TX" +msgstr "SMARTSERIAL-P0-TX" -#: src/emc/usr_intf/stepconf/stepconf.glade:87 -#: src/emc/usr_intf/pncconf/pncconf.glade:88 -msgid "Do you wish to:" -msgstr "Desideri:" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P0-RX" +msgstr "SMARTSERIAL-P0-RX" -#: src/emc/usr_intf/stepconf/stepconf.glade:99 -#: src/emc/usr_intf/pncconf/pncconf.glade:100 -msgid "" -"If you have made modifications to this configuration outside this program, " -"they will be lost when you select \"Modify a configuration\"" -msgstr "" -"Se hai fatto modifiche a questa configurazione al di fuori di questo " -"programma,queste verranno perse quando selezioni \"Modifica una " -"configurazione\"" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P0-EN" +msgstr "SMARTSERIAL-P0-EN" -#: src/emc/usr_intf/stepconf/stepconf.glade:116 -msgid "Create a desktop _shortcut (symlink) to configuration files." -msgstr "" -"Crea un collegamento (symlink) ai file di configurazione sulla _scrivania." +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-TX" +msgstr "SMARTSERIAL-P1-TX" -#: src/emc/usr_intf/stepconf/stepconf.glade:133 -msgid "Create a desktop _launcher to start LinuxCNC with this configuration." -msgstr "" -"Crea un _link sulla scrivania per avviare LinuxCNC con questa configurazione." +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-RX" +msgstr "SMARTSERIAL-P1-RX" -#: src/emc/usr_intf/stepconf/stepconf.glade:169 -#: src/emc/usr_intf/pncconf/pncconf.glade:175 -msgid "Basic machine information" -msgstr "Informazioni base macchina" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-EN" +msgstr "SMARTSERIAL-P1-EN" -#: src/emc/usr_intf/stepconf/stepconf.glade:327 -msgid "Step _Time:" -msgstr "_Tempo Passo:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-TX" +msgstr "SMARTSERIAL-P2-TX" -#: src/emc/usr_intf/stepconf/stepconf.glade:356 -#: src/emc/usr_intf/stepconf/stepconf.glade:402 -#: src/emc/usr_intf/stepconf/stepconf.glade:449 -#: src/emc/usr_intf/stepconf/stepconf.glade:494 -#: src/emc/usr_intf/stepconf/stepconf.glade:909 -#: src/emc/usr_intf/pncconf/pncconf.glade:458 -#: src/emc/usr_intf/pncconf/pncconf.glade:8256 -msgid "ns" -msgstr "ns" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-RX" +msgstr "SMARTSERIAL-P2-RX" -#: src/emc/usr_intf/stepconf/stepconf.glade:369 -msgid "Step _Space:" -msgstr "_Spazio Passo:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-EN" +msgstr "SMARTSERIAL-P2-EN" -#: src/emc/usr_intf/stepconf/stepconf.glade:417 -msgid "Direction _Hold:" -msgstr "_Mantiene Direzione:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-TX" +msgstr "SMARTSERIAL-P3-TX" -#: src/emc/usr_intf/stepconf/stepconf.glade:464 -msgid "_Direction Setup:" -msgstr "Setup _Direzione:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-RX" +msgstr "SMARTSERIAL-P3-RX" -#: src/emc/usr_intf/stepconf/stepconf.glade:512 -msgid "Driver Timing Settings" -msgstr "Impostazione Tempo Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-EN" +msgstr "SMARTSERIAL-P3-EN" -#: src/emc/usr_intf/stepconf/stepconf.glade:538 -msgid "First Parport _Base Address:" -msgstr "Primo Indirizzo _Base Porta Parallela:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-TX" +msgstr "SMARTSERIAL-P4-TX" -#: src/emc/usr_intf/stepconf/stepconf.glade:564 -msgid " Out" -msgstr " Fuori" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-RX" +msgstr "SMARTSERIAL-P4-RX" -#: src/emc/usr_intf/stepconf/stepconf.glade:575 -#: src/emc/usr_intf/stepconf/stepconf.glade:591 -msgid "" -"Out\n" -"In" -msgstr "" -"Out\n" -"In" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-EN" +msgstr "SMARTSERIAL-P4-EN" -#: src/emc/usr_intf/stepconf/stepconf.glade:633 -msgid "S_econd Parport Address:" -msgstr "S_econdo Indirizzo Porta Parallela:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-TX" +msgstr "SMARTSERIAL-P5-TX" -#: src/emc/usr_intf/stepconf/stepconf.glade:650 -msgid "T_hird Parport Address:" -msgstr "Terzo Indirizzo Porta Parallela:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-RX" +msgstr "SMARTSERIAL-P5-RX" -#: src/emc/usr_intf/stepconf/stepconf.glade:667 -msgid " Parallel Port Settings" -msgstr " Setup Porta Parallela" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-EN" +msgstr "SMARTSERIAL-P5-EN" -#: src/emc/usr_intf/stepconf/stepconf.glade:684 -msgid "" -"_Test Base\n" -"Period Jitter " -msgstr "" -"_Test Base\n" -"Periodo Jitter " +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-TX" +msgstr "SMARTSERIAL-P6-TX" -#: src/emc/usr_intf/stepconf/stepconf.glade:703 -msgid "Machine _Name:" -msgstr "_Nome Macchina" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-RX" +msgstr "SMARTSERIAL-P6-RX" -#: src/emc/usr_intf/stepconf/stepconf.glade:716 -msgid "_Axis configuration:" -msgstr "Configurazione _Asse" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-EN" +msgstr "SMARTSERIAL-P6-EN" -#: src/emc/usr_intf/stepconf/stepconf.glade:730 -msgid "Machine _units:" -msgstr "_Unità Macchina" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-TX" +msgstr "SMARTSERIAL-P7-TX" -#: src/emc/usr_intf/stepconf/stepconf.glade:744 -#: src/emc/usr_intf/pncconf/pncconf.glade:246 -msgid "Configuration directory:" -msgstr "Percorso Configurazione:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-RX" +msgstr "SMARTSERIAL-P7-RX" -#: src/emc/usr_intf/stepconf/stepconf.glade:757 -msgid "D_river type:" -msgstr "Tipo D_river:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-EN" +msgstr "SMARTSERIAL-P7-EN" -#: src/emc/usr_intf/stepconf/stepconf.glade:785 -#: src/emc/usr_intf/pncconf/pncconf.glade:326 -msgid "" -"Inch\n" -"Millimeter" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS0)" msgstr "" -"Pollici\n" -"Millimetri" -#: src/emc/usr_intf/stepconf/stepconf.glade:800 -#: src/emc/usr_intf/pncconf/pncconf.glade:291 -msgid "" -"XYZ\n" -"XYZA\n" -"XZ (Lathe)" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS2)" msgstr "" -"XYZ\n" -"XYZA\n" -"XZ (Tornio)" - -#: src/emc/usr_intf/stepconf/stepconf.glade:847 -msgid "" -"Driver characteristics: (Multiply by 1000 for times specified in µs or " -"microseconds)\n" -" Additional signal conditioning or isolation such as optocouplers " -"and RC filters\n" -" can impose timing constraints of their own, in addition to those of " -"the driver." -msgstr "" -"Caratteristiche del driver : (Moltiplicare per 1000 i tempi specificati in " -"µs o microsecondi)\n" -" Elementi addizionali per il condizionamento o isolamento del " -"segnale come \n" -"accoppiatori ottici e filtri RC\n" -" possono dare vincoli temporali propri, in aggiunta a quelli del " -"driver." - -#: src/emc/usr_intf/stepconf/stepconf.glade:875 -msgid "Base Period Maximum _Jitter:" -msgstr "Massimo Periodo Base _Jitter:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:924 -msgid "Max step rate:" -msgstr "Max velocita' step:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:940 -msgid "Min Base Period:" -msgstr "Periodo Base Min:" -#: src/emc/usr_intf/stepconf/stepconf.glade:956 -msgid "" -"_Onscreen prompt for\n" -"tool change" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS3)" msgstr "" -"Avviso sullo schermo\n" -" per cambi_o utensile" -#: src/emc/usr_intf/stepconf/stepconf.glade:1015 -msgid "Advanced Configuration Options" -msgstr "Opzioni Configurazione Avanzata" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 I/O (SS0)" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1033 -msgid "Include Halui user interface component" -msgstr "Include componente interfaccia utente Halui" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 Analog (SS1)" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1074 -#: src/emc/usr_intf/pncconf/pncconf.glade:6745 -msgid "Blank program" -msgstr "Azzera programma" +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 I/O (SS3)" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1089 -#: src/emc/usr_intf/pncconf/pncconf.glade:6760 -msgid "Spindle speed display " -msgstr "Visualizza velocità mandrino" +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 Analog (SS4)" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1105 -#: src/emc/usr_intf/stepconf/stepconf.glade:1543 -#: src/emc/usr_intf/pncconf/pncconf.glade:6791 -#: src/emc/usr_intf/pncconf/pncconf.glade:7112 -#: src/emc/usr_intf/pncconf/pncconf.glade:59393 -msgid "Existing custom program" -msgstr "Programma custom esistente" +#: src/emc/usr_intf/pncconf/pncconf.py:176 +#, fuzzy +msgid "Analog Input" +msgstr "Controllo Analogico" -#: src/emc/usr_intf/stepconf/stepconf.glade:1120 -#: src/emc/usr_intf/stepconf/stepconf.glade:1559 -#: src/emc/usr_intf/pncconf/pncconf.glade:6806 -#: src/emc/usr_intf/pncconf/pncconf.glade:59409 -msgid "Include connections to HAL" -msgstr "Include collegamenti ad HAL" +#: src/emc/usr_intf/pncconf/pncconf.py:277 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +msgid "Axis Selection" +msgstr "Seleziona asse" -#: src/emc/usr_intf/stepconf/stepconf.glade:1154 -#: src/emc/usr_intf/pncconf/pncconf.glade:6989 -#: src/emc/usr_intf/pncconf/pncconf.glade:7537 +#: src/emc/usr_intf/pncconf/pncconf.py:285 msgid "" -"_Display\n" -"sample\n" -"panel" +"7i64-Input\n" +"P3 and P4" msgstr "" -"_Visualizza\n" -"semplice\n" -"panello" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1188 -#: src/emc/usr_intf/pncconf/pncconf.glade:7048 -msgid "Include custom PyVCP GUI panel" -msgstr "Includi Panello GUI PyVCP personalizzato" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1321 -#: src/emc/usr_intf/pncconf/pncconf.glade:59199 -msgid " Number of analog (float) out pins:" -msgstr "Numero di pin input analogici (float):" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1335 -#: src/emc/usr_intf/pncconf/pncconf.glade:59184 -msgid " Number of analog (float) in pins:" -msgstr "Numero di pin output analogici (float):" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1349 -#: src/emc/usr_intf/pncconf/pncconf.glade:59169 -msgid " Number of analog (s32) out pins:" -msgstr "Numero di pin output analogici (s32):" -#: src/emc/usr_intf/stepconf/stepconf.glade:1363 -#: src/emc/usr_intf/pncconf/pncconf.glade:59153 -msgid " Number of analog (s32) in pins:" -msgstr "Numero di pin input analogici (s32):" +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "" +"7i64-Output\n" +"P2 and P5" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1378 -msgid "Number of digital out pins:" -msgstr "Numero di pin output digitali:" +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "7i64-Analog In" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1403 -msgid "Number of digital in pins:" -msgstr "Numero di pin digitali in input:" +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P2" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1414 -msgid "setup number of external pins" -msgstr "imposta numero di pin esterni" +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P3" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1429 -#: src/emc/usr_intf/pncconf/pncconf.glade:59213 -msgid "Include modbus master support" -msgstr "Include supporto master modbus" +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB3" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1500 -#: src/emc/usr_intf/pncconf/pncconf.glade:59333 -msgid "Blank ladder program" -msgstr "Azzera programma ladder" +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB2" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1513 -#: src/emc/usr_intf/pncconf/pncconf.glade:59346 -msgid "Estop ladder program" -msgstr "Estop programma ladder" +#: src/emc/usr_intf/pncconf/pncconf.py:309 +msgid "" +"7i71-Output\n" +"TB3" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1527 -#: src/emc/usr_intf/pncconf/pncconf.glade:59377 -msgid "Serial modbus program" -msgstr "Programma modbus seriale" +#: src/emc/usr_intf/pncconf/pncconf.py:309 +msgid "" +"7i71-Output\n" +"TB2" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1592 -#: src/emc/usr_intf/pncconf/pncconf.glade:59443 +#: src/emc/usr_intf/pncconf/pncconf.py:317 msgid "" -"Edit ladder\n" -"program" +"7i76-I/O\n" +"TB6" msgstr "" -"Modifica programma\n" -"ladder" -#: src/emc/usr_intf/stepconf/stepconf.glade:1628 -#: src/emc/usr_intf/pncconf/pncconf.glade:59479 -msgid "Include _Classicladder PLC" -msgstr "Includi _Classicladder PLC" +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-I/O\n" +"TB5" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1653 -msgid "Parallel Port Setup" -msgstr "Setup Porta Parallela" +#: src/emc/usr_intf/pncconf/pncconf.py:317 +#, fuzzy +msgid "" +"7i76-Analog Output\n" +"TB4" +msgstr "Output Analogico Inutilizzato" -#: src/emc/usr_intf/stepconf/stepconf.glade:1760 -#: src/emc/usr_intf/pncconf/pncconf.glade:54010 -msgid "Pin _1:" -msgstr "Pin _1:" +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB8" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1774 -#: src/emc/usr_intf/pncconf/pncconf.glade:54024 -#: src/emc/usr_intf/pncconf/pncconf.glade:55239 -msgid "Pin _2:" -msgstr "Pin _2:" +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB7" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1788 -#: src/emc/usr_intf/pncconf/pncconf.glade:54038 -#: src/emc/usr_intf/pncconf/pncconf.glade:55256 -msgid "Pin _3:" -msgstr "Pin _3:" +#: src/emc/usr_intf/pncconf/pncconf.py:325 +#, fuzzy +msgid "" +"7i77-Analog Output\n" +"TB5" +msgstr "Output Analogico Inutilizzato" -#: src/emc/usr_intf/stepconf/stepconf.glade:1802 -#: src/emc/usr_intf/pncconf/pncconf.glade:54052 -#: src/emc/usr_intf/pncconf/pncconf.glade:55273 -msgid "Pin _4:" -msgstr "Pin _4:" +#: src/emc/usr_intf/pncconf/pncconf.py:333 +msgid "7i73-I/O\n" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1816 -#: src/emc/usr_intf/pncconf/pncconf.glade:54066 -#: src/emc/usr_intf/pncconf/pncconf.glade:55290 -msgid "Pin _5:" -msgstr "Pin _5:" +#: src/emc/usr_intf/pncconf/pncconf.py:348 +msgid "Unused Unused" +msgstr "Inutilizzato Inutilizzato" -#: src/emc/usr_intf/stepconf/stepconf.glade:1830 -#: src/emc/usr_intf/pncconf/pncconf.glade:54080 -#: src/emc/usr_intf/pncconf/pncconf.glade:55307 -msgid "Pin _6:" -msgstr "Pin _6:" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "Machine Is Enabled" +msgstr "La Macchina è Abilitata" -#: src/emc/usr_intf/stepconf/stepconf.glade:1844 -#: src/emc/usr_intf/pncconf/pncconf.glade:54094 -#: src/emc/usr_intf/pncconf/pncconf.glade:55324 -msgid "Pin _7:" -msgstr "Pin _7:" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "X Amplifier Enable" +msgstr "Abilita Amplificatore X" -#: src/emc/usr_intf/stepconf/stepconf.glade:1858 -#: src/emc/usr_intf/pncconf/pncconf.glade:54108 -#: src/emc/usr_intf/pncconf/pncconf.glade:55341 -msgid "Pin _8:" -msgstr "Pin _8:" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "Y Amplifier Enable" +msgstr "Abilita Amplificatore Y" -#: src/emc/usr_intf/stepconf/stepconf.glade:1872 -#: src/emc/usr_intf/pncconf/pncconf.glade:54122 -#: src/emc/usr_intf/pncconf/pncconf.glade:55358 -msgid "Pin _9:" -msgstr "Pin _9:" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "Z Amplifier Enable" +msgstr "Abilita Amplificatore Z" -#: src/emc/usr_intf/stepconf/stepconf.glade:1886 -#: src/emc/usr_intf/pncconf/pncconf.glade:54136 -msgid "_Pin 14:" -msgstr "_Pin 14:" +#: src/emc/usr_intf/pncconf/pncconf.py:371 +msgid "A Amplifier Enable" +msgstr "Abilita Amplificatore A" -#: src/emc/usr_intf/stepconf/stepconf.glade:1900 -#: src/emc/usr_intf/pncconf/pncconf.glade:54150 -msgid "P_in 16:" -msgstr "P_in 16:" +#: src/emc/usr_intf/pncconf/pncconf.py:371 +msgid "Force Pin True" +msgstr "Forza Pin True" -#: src/emc/usr_intf/stepconf/stepconf.glade:1914 -#: src/emc/usr_intf/pncconf/pncconf.glade:54164 -msgid "Pi_n 17:" -msgstr "Pi_n 17:" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X HALL 1" +msgstr "X HALL 1" -#: src/emc/usr_intf/stepconf/stepconf.glade:2258 -msgid "Outputs (PC to Mill):" -msgstr "Outputs (PC verso Fresatrice):" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X HALL 2" +msgstr "X HALL 2" -#: src/emc/usr_intf/stepconf/stepconf.glade:2270 -#: src/emc/usr_intf/pncconf/pncconf.glade:55222 -msgid "Pin 1_0:" -msgstr "Pin 1_0:" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X HALL 3" +msgstr "X HALL 3" -#: src/emc/usr_intf/stepconf/stepconf.glade:2286 -#: src/emc/usr_intf/pncconf/pncconf.glade:55206 -msgid "Pin 1_1:" -msgstr "Pin 1_1:" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C1" +msgstr "X Gray C1" -#: src/emc/usr_intf/stepconf/stepconf.glade:2302 -#: src/emc/usr_intf/pncconf/pncconf.glade:55190 -msgid "Pin 1_2:" -msgstr "Pin 1_2:" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C2" +msgstr "X Gray C2" -#: src/emc/usr_intf/stepconf/stepconf.glade:2318 -#: src/emc/usr_intf/pncconf/pncconf.glade:55174 -msgid "Pin 1_3:" -msgstr "Pin 1_3:" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C4" +msgstr "X Gray C4" -#: src/emc/usr_intf/stepconf/stepconf.glade:2334 -#: src/emc/usr_intf/pncconf/pncconf.glade:55158 -msgid "Pin 1_5:" -msgstr "Pin 1_5:" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C8" +msgstr "X Gray C8" -#: src/emc/usr_intf/stepconf/stepconf.glade:2399 -msgid "Inputs (Mill to PC):" -msgstr "Inputs (Fresatrice a PC):" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y HALL 1" +msgstr "Y HALL 1" -#: src/emc/usr_intf/stepconf/stepconf.glade:2425 -#: src/emc/usr_intf/stepconf/stepconf.glade:2438 -#: src/emc/usr_intf/pncconf/pncconf.glade:54578 -#: src/emc/usr_intf/pncconf/pncconf.glade:54591 -msgid "Invert" -msgstr "Inverti" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y HALL 2" +msgstr "Y HALL 2" -#: src/emc/usr_intf/stepconf/stepconf.glade:2887 -msgid "_Sherline Outputs" -msgstr "Outputs tipo _Sherline" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y HALL 3" +msgstr "Y HALL 3" -#: src/emc/usr_intf/stepconf/stepconf.glade:2905 -msgid "_Xylotex Outputs" -msgstr "Outputs tipo _Xylotex" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C1" +msgstr "Y Gray C1" -#: src/emc/usr_intf/stepconf/stepconf.glade:2923 -msgid "Output pinout presets:" -msgstr "Presets pinout output:" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C2" +msgstr "Y Gray C2" -#: src/emc/usr_intf/stepconf/stepconf.glade:3022 -#: src/emc/usr_intf/pncconf/pncconf.glade:57970 -msgid "X Axis Configuration" -msgstr "Configurazione Asse X" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C4" +msgstr "Y Gray C4" -#: src/emc/usr_intf/stepconf/stepconf.glade:3090 -msgid "_Motor steps per revolution:" -msgstr "Passi al giro del _motore:" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C8" +msgstr "Y Gray C8" -#: src/emc/usr_intf/stepconf/stepconf.glade:3103 -msgid "_Driver Microstepping:" -msgstr "_Driver Microstepping:" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z HALL 1" +msgstr "Z HALL 1" -#: src/emc/usr_intf/stepconf/stepconf.glade:3118 -msgid "_Pulley teeth (Motor:Leadscrew):" -msgstr "_Puleggia dentata (Motore: vite conduttrice):" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z HALL 2" +msgstr "Z HALL 2" -#: src/emc/usr_intf/stepconf/stepconf.glade:3133 -msgid "_Leadscrew Pitch:" -msgstr "Passo de_lla vite:" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z HALL 3" +msgstr "Z HALL 3" -#: src/emc/usr_intf/stepconf/stepconf.glade:3148 -#: src/emc/usr_intf/pncconf/pncconf.glade:57858 -msgid "Maximum _Velocity:" -msgstr "_Velocita' Massima:" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C1" +msgstr "Z Gray C1" -#: src/emc/usr_intf/stepconf/stepconf.glade:3163 -#: src/emc/usr_intf/pncconf/pncconf.glade:57843 -msgid "Maximum _Acceleration:" -msgstr "_Accelerazione Massima:" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C2" +msgstr "Z Gray C2" -#: src/emc/usr_intf/stepconf/stepconf.glade:3178 -#: src/emc/usr_intf/pncconf/pncconf.glade:67063 -msgid "Time to accelerate to max speed:" -msgstr "Tempo per accelerare alla massima velocita':" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C4" +msgstr "Z Gray C4" -#: src/emc/usr_intf/stepconf/stepconf.glade:3193 -msgid "Distance to accelerate to max speed:" -msgstr "Distanza per accelerare alla massima velocita':" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C8" +msgstr "Z Gray C8" -#: src/emc/usr_intf/stepconf/stepconf.glade:3292 -#: src/emc/usr_intf/pncconf/pncconf.glade:67036 -msgid "Pulse rate at max speed:" -msgstr "Velocità impulsi alla massima velocità:" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A HALL 1" +msgstr "A HALL 1" -#: src/emc/usr_intf/stepconf/stepconf.glade:3362 -msgid "_Home location:" -msgstr "Posizione _Home:" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A HALL 2" +msgstr "A HALL 2" -#: src/emc/usr_intf/stepconf/stepconf.glade:3377 -msgid "Home _Switch location:" -msgstr "Posizione _Switch Home:" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A HALL 3" +msgstr "A HALL 3" -#: src/emc/usr_intf/stepconf/stepconf.glade:3392 -msgid "Home Sear_ch velocity:" -msgstr "Velocita' ricer_ca Home:" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C1" +msgstr "A Gray C1" -#: src/emc/usr_intf/stepconf/stepconf.glade:3407 -msgid "Home La_tch direction:" -msgstr "Direzione scansione Home" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C2" +msgstr "A Gray C2" -#: src/emc/usr_intf/stepconf/stepconf.glade:3420 -#: src/emc/usr_intf/pncconf/pncconf.glade:66232 -#: src/emc/usr_intf/pncconf/pncconf.glade:66274 -#: src/emc/usr_intf/pncconf/pncconf.glade:66505 -#: src/emc/usr_intf/pncconf/pncconf.glade:66570 -msgid "_:" -msgstr "_:" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C4" +msgstr "A Gray C4" -#: src/emc/usr_intf/stepconf/stepconf.glade:3437 -#: src/emc/usr_intf/pncconf/pncconf.glade:58536 -msgid "" -"Same\n" -"Opposite" -msgstr "" -"Stesso\n" -"Opposta" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C8" +msgstr "A Gray C8" -#: src/emc/usr_intf/stepconf/stepconf.glade:3492 -msgid "Tab_le travel:" -msgstr "Spostamento tavo_la:" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S HALL 1" +msgstr "S HALL 1" -#: src/emc/usr_intf/stepconf/stepconf.glade:3519 -msgid "t_o" -msgstr "a" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S HALL 2" +msgstr "S HALL 2" -#: src/emc/usr_intf/stepconf/stepconf.glade:3649 -msgid "s" -msgstr "s" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S HALL 3" +msgstr "S HALL 3" -#: src/emc/usr_intf/stepconf/stepconf.glade:3703 -msgid "T_est this axis" -msgstr "Prova questo ass_e" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C1" +msgstr "S Gray C1" -#: src/emc/usr_intf/stepconf/stepconf.glade:3729 -msgid "Axis SCALE:" -msgstr "SCALA asse:" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C2" +msgstr "S Gray C2" -#: src/emc/usr_intf/stepconf/stepconf.glade:3765 -msgid "Spindle Configuration" -msgstr "Configurazione Mandrino" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C4" +msgstr "S Gray C4" -#: src/emc/usr_intf/stepconf/stepconf.glade:3785 -msgid "Use spindle-at-speed:" -msgstr "Usa Velocità Mandrino:" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C8" +msgstr "S Gray C8" -#: src/emc/usr_intf/stepconf/stepconf.glade:3841 -msgid "Speed display filter gain:" -msgstr "Velocità display filtro guadagno:" +#: src/emc/usr_intf/pncconf/pncconf.py:378 +msgid "Unused Output" +msgstr "Output Inutilizzato" -#: src/emc/usr_intf/stepconf/stepconf.glade:3870 -msgid "Calibration:" -msgstr "Calibrazione:" +#: src/emc/usr_intf/pncconf/pncconf.py:378 +msgid "Coolant" +msgstr "Refrigerante" -#: src/emc/usr_intf/stepconf/stepconf.glade:3883 -msgid "_Speed 1:" -msgstr "_Velocità 1:" +#: src/emc/usr_intf/pncconf/pncconf.py:379 +msgid "Control" +msgstr "Controllo" -#: src/emc/usr_intf/stepconf/stepconf.glade:3898 -msgid "_PWM 1:" -msgstr "_PWM 1:" +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +msgid "Digital" +msgstr "Digitale" -#: src/emc/usr_intf/stepconf/stepconf.glade:3916 -msgid "S_peed 2:" -msgstr "Ve_locità 2:" +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:410 +msgid "X BLDC Control" +msgstr "X BLDC Control" -#: src/emc/usr_intf/stepconf/stepconf.glade:3931 -msgid "P_WM 2:" -msgstr "P_WM 2:" +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 +msgid "Y BLDC Control" +msgstr "Y BLDC Control" -#: src/emc/usr_intf/stepconf/stepconf.glade:3949 -msgid "PWM _Rate:" -msgstr "_Velocità PWM:" +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 +msgid "Z BLDC Control" +msgstr "Z BLDC Control" -#: src/emc/usr_intf/stepconf/stepconf.glade:4025 -msgid "_Cycles per revolution:" -msgstr "_Cicli per giro:" +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 +msgid "A BLDC Control" +msgstr "A BLDC Control" + +#: src/emc/usr_intf/pncconf/pncconf.py:381 +msgid " S BLDC Control" +msgstr " S BLDC Control" -#: src/emc/usr_intf/stepconf/stepconf.glade:4079 -msgid "Enter 0 Hz for \"PDM\" mode" -msgstr "Inserisci 0 Hz per modo \"PDM\" " +#: src/emc/usr_intf/pncconf/pncconf.py:381 +#: src/emc/usr_intf/pncconf/pncconf.py:412 +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#: src/emc/usr_intf/pncconf/pncconf.py:516 +#: src/emc/usr_intf/pncconf/pncconf.py:519 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.py:528 +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#: src/emc/usr_intf/pncconf/pncconf.py:568 +#: src/emc/usr_intf/pncconf/pncconf.py:580 +msgid "Custom Signals" +msgstr "Segnali personalizzati " -#: src/emc/usr_intf/stepconf/stepconf.glade:4091 -msgid "Scale %" -msgstr "Scala %" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 +msgid "X Minimum Limit" +msgstr "Limite Minimo X" -#: src/emc/usr_intf/stepconf/stepconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:60002 -msgid "Machine configuration complete" -msgstr "Configurazione macchina completa" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 +msgid "Y Minimum Limit" +msgstr "Limite Minimo Y" -#: src/emc/usr_intf/stepconf/stepconf.glade:4114 -#: src/emc/usr_intf/pncconf/pncconf.glade:60003 -msgid "" -"All the necessary information has now been gathered. Click \"Apply\" to " -"write your configuration files to disk.\n" -"If you experience lockups while running LinuxCNC, you will need to decrease " -"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" -"\n" -"If you experience lost steps while running LinuxCNC, first verify that you " -"entered the proper timings for your stepper drivers. If that does not fix " -"the problem, then run a more thorough latency test as described on the " -"linuxcnc.org wiki:\n" -" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" -"\n" -"If you experience the \"Unexpected Realtime Delay\" message, run a more " -"thorough latency test as described on the linuxcnc.org wiki: \n" -" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" -msgstr "" -"Tutte le informazioni necessarie sono state raccolte. Clicca \"Applica\" " -"per scrivere il file di configurazione sul disco.\n" -"Se avverti dei blocchi mentre gira LinuxCNC, e' necessario decrementare la " -"velocita' massima che ha l' effetto di incrementare BASE_PERIOD.\n" -"\n" -"Se noti una perdita di passi mentre gira LinuxCNC, prima verifica che siano " -"stati immessi i giusti tempi per i tuoi stepper drivers. Se questo non " -"risolve il problema, allora rieffettua il latency test come descritto sul " -"wiki di linuxcnc.org:\n" -" http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting\n" -"\n" -"Se appare spesso il messaggio \"Unexpected Realtime Delay\", rieffettua il " -"latency test come descritto sul wiki di linuxcnc.org: \n" -" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 +msgid "Z Minimum Limit" +msgstr "Limite Minimo Z" -#: src/emc/usr_intf/stepconf/stepconf.glade:4160 -#: src/emc/usr_intf/pncconf/pncconf.glade:60462 -#: src/emc/usr_intf/pncconf/pncconf.glade:61557 -#: src/emc/usr_intf/pncconf/pncconf.glade:62650 -#: src/emc/usr_intf/pncconf/pncconf.glade:63743 -#: src/emc/usr_intf/pncconf/pncconf.glade:64842 -msgid "Acceleration:" -msgstr "Accelerazione:" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 +msgid "A Minimum Limit" +msgstr "Limite Minimo A" -#: src/emc/usr_intf/stepconf/stepconf.glade:4174 -#: src/emc/usr_intf/pncconf/pncconf.glade:60231 -#: src/emc/usr_intf/pncconf/pncconf.glade:60695 -#: src/emc/usr_intf/pncconf/pncconf.glade:61788 -#: src/emc/usr_intf/pncconf/pncconf.glade:62881 -#: src/emc/usr_intf/pncconf/pncconf.glade:63974 -#: src/emc/usr_intf/pncconf/pncconf.glade:64954 -msgid "Jog:" -msgstr "Jog:" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 +msgid "X Maximum Limit" +msgstr "Limite Massimo X" -#: src/emc/usr_intf/stepconf/stepconf.glade:4188 -#: src/emc/usr_intf/pncconf/pncconf.glade:60681 -#: src/emc/usr_intf/pncconf/pncconf.glade:61774 -#: src/emc/usr_intf/pncconf/pncconf.glade:62867 -#: src/emc/usr_intf/pncconf/pncconf.glade:63960 -msgid "Test Area:" -msgstr "Area Test:" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 +msgid "Y Maximum Limit" +msgstr "Limite Massimo Y" -#: src/emc/usr_intf/stepconf/stepconf.glade:4217 -msgid "mm/s^2" -msgstr "mm/s^2" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 +msgid "Z Maximum Limit" +msgstr "Limite Massimo Z" -#: src/emc/usr_intf/stepconf/stepconf.glade:4253 -msgid "mm/s" -msgstr "mm/s" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 +msgid "A Maximum Limit" +msgstr "Limite Massimo A" -#: src/emc/usr_intf/stepconf/stepconf.glade:4329 -#: src/emc/usr_intf/pncconf/pncconf.glade:60620 -#: src/emc/usr_intf/pncconf/pncconf.glade:61713 -#: src/emc/usr_intf/pncconf/pncconf.glade:62806 -#: src/emc/usr_intf/pncconf/pncconf.glade:63899 -#: src/emc/usr_intf/pncconf/pncconf.glade:65066 -msgid "" -"±\n" -"+\n" -"-\n" -msgstr "" -"±\n" -"+\n" -"-\n" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 +msgid "X Both Limit" +msgstr "Entrambi i limiti X" -#: src/emc/usr_intf/pncconf/pncconf.py:79 -msgid "" -"PNCconf encountered an error. The following information may be useful in " -"troubleshooting:\n" -"\n" -msgstr "" -"PNCconf ha trovato un errore. L' informazione seguente puo' essere utile per " -"la soluzione:\n" -"\n" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 +msgid "Y Both Limit" +msgstr "Entrambi i limiti Y" -#: src/emc/usr_intf/pncconf/pncconf.py:149 -msgid "Not Used" -msgstr "Non Usato" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 +msgid "Z Both Limit" +msgstr "Entrambi i limiti Z" -#: src/emc/usr_intf/pncconf/pncconf.py:149 -#: src/emc/usr_intf/pncconf/pncconf.py:150 -msgid "Dummy" -msgstr "Dummy" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 +msgid "A Both Limit" +msgstr "Entrambi i limiti A" -#: src/emc/usr_intf/pncconf/pncconf.py:150 -msgid "8i20 Servo Drive" -msgstr "8i20 Servo Drive" +#: src/emc/usr_intf/pncconf/pncconf.py:386 +#: src/emc/usr_intf/pncconf/pncconf.py:477 +msgid "All Limits" +msgstr "Tutti i Limiti " -#: src/emc/usr_intf/pncconf/pncconf.py:151 -msgid "POT Output" -msgstr "Output POT" +#: src/emc/usr_intf/pncconf/pncconf.py:387 +msgid "X Home" +msgstr "Origine X" -#: src/emc/usr_intf/pncconf/pncconf.py:151 -msgid "POT Enable" -msgstr "Abilita POT" +#: src/emc/usr_intf/pncconf/pncconf.py:387 +msgid "Y Home" +msgstr "Origine Y" -#: src/emc/usr_intf/pncconf/pncconf.py:151 -msgid "POT Direction" -msgstr "Direzione POT" +#: src/emc/usr_intf/pncconf/pncconf.py:387 +msgid "Z Home" +msgstr "Origine Z" -#: src/emc/usr_intf/pncconf/pncconf.py:152 -msgid "GPIO Input" -msgstr "Input GPIO" +#: src/emc/usr_intf/pncconf/pncconf.py:387 +msgid "A Home" +msgstr "Origine A" -#: src/emc/usr_intf/pncconf/pncconf.py:152 -msgid "GPIO Output" -msgstr "Output GPIO" +#: src/emc/usr_intf/pncconf/pncconf.py:387 +msgid "All Home" +msgstr "Azzeramento Totale" -#: src/emc/usr_intf/pncconf/pncconf.py:152 -msgid "GPIO O Drain" -msgstr "GPIO O Drain" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 +msgid "X Minimum Limit + Home" +msgstr "Limite Minimo + Home X" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-A" -msgstr "Quad Encoder-A" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 +msgid "Y Minimum Limit + Home" +msgstr "Limite Minimo + Home Y" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-B" -msgstr "Quad Encoder-B" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 +msgid "Z Minimum Limit + Home" +msgstr "Limite Minimo + Home Z" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-I" -msgstr "Quad Encoder-I" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 +msgid "A Minimum Limit + Home" +msgstr "Limite Minimo + Home A" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-M" -msgstr "Quad Encoder-M" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 +msgid "X Maximum Limit + Home" +msgstr "Limite Massimo + Home X" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "Muxed Encoder 0" -msgstr "Encoder Muxed 0" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 +msgid "Y Maximum Limit + Home" +msgstr "Limite Massimo + Home Y" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "Muxed Encoder 1" -msgstr "Encoder Muxed 1" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 +msgid "Z Maximum Limit + Home" +msgstr "Limite Massimo + Home Z" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "muxed enc" -msgstr "muxed enc" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 +msgid "A Maximum Limit + Home" +msgstr "Limite Massimo + Home A" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "mux enc mask" -msgstr "mux enc mask" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 +msgid "X Both Limit + Home" +msgstr "Entrambi i Limiti + Home X" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "mux select" -msgstr "Seleziona mux" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 +msgid "Y Both Limit + Home" +msgstr "Entrambi i Limiti + Home Y" -#: src/emc/usr_intf/pncconf/pncconf.py:155 -msgid "Resolver 0 Encoder" -msgstr "Encoder Resolver 0" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 +msgid "Z Both Limit + Home" +msgstr "Entrambi i Limiti + Home Z" -#: src/emc/usr_intf/pncconf/pncconf.py:155 -msgid "Resolver 1 Encoder" -msgstr "Encoder Resolver 1" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 +msgid "A Both Limit + Home" +msgstr "Entrambi i Limiti + Home A" -#: src/emc/usr_intf/pncconf/pncconf.py:155 -msgid "Resolver 2 Encoder" -msgstr "Encoder Resolver 2" +#: src/emc/usr_intf/pncconf/pncconf.py:392 +msgid "Joint select A" +msgstr "Asse selezionato A" -#: src/emc/usr_intf/pncconf/pncconf.py:156 -msgid "Resolver 3 Encoder" -msgstr "Encoder Resolver 3" +#: src/emc/usr_intf/pncconf/pncconf.py:392 +msgid "Joint select B" +msgstr "Asse selezionato B" -#: src/emc/usr_intf/pncconf/pncconf.py:156 -msgid "Resolver 4 Encoder" -msgstr "Encoder Resolver 4" +#: src/emc/usr_intf/pncconf/pncconf.py:392 +msgid "Joint select C" +msgstr "Asse selezionato C" -#: src/emc/usr_intf/pncconf/pncconf.py:156 -msgid "Resolver 5 Encoder" -msgstr "Encoder Resolver 5" +#: src/emc/usr_intf/pncconf/pncconf.py:392 +msgid "Joint select D" +msgstr "Asse selezionato D" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -msgid "Step Gen-A" -msgstr "Step Gen-A" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr A" +msgstr "Incr asse A" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -msgid "Dir Gen-B" -msgstr "Dir Gen-B" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr B" +msgstr "Incr asse B" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -msgid "Step/Dir Gen-C" -msgstr "Step/Dir Gen-C" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr C" +msgstr "Incr asse C" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -msgid "Step/Dir Gen-D" -msgstr "Step/Dir Gen-D" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr D" +msgstr "Incr asse " -#: src/emc/usr_intf/pncconf/pncconf.py:158 -msgid "Step/Dir Gen-E" -msgstr "Step/Dir Gen-E" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Feed Override incr A" +msgstr "Incr. avanzamento A" -#: src/emc/usr_intf/pncconf/pncconf.py:158 -msgid "Step/dir Gen-F" -msgstr "Step/Dir Gen-F" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Feed Override incr B" +msgstr "Incr. avanzamento B" -#: src/emc/usr_intf/pncconf/pncconf.py:159 -msgid "Pulse Width Gen-P" -msgstr "Larghezza impulso Gen-P" +#: src/emc/usr_intf/pncconf/pncconf.py:394 +msgid "Feed Override incr C" +msgstr "Incr. avanzamento C" -#: src/emc/usr_intf/pncconf/pncconf.py:159 -msgid "Pulse Width Gen-D" -msgstr "Larghezza impulso Gen-D" +#: src/emc/usr_intf/pncconf/pncconf.py:394 +msgid "Feed Override incr D" +msgstr "Incr. avanzamentoD" -#: src/emc/usr_intf/pncconf/pncconf.py:159 -msgid "Pulse Width Gen-E" -msgstr "Larghezza impulso Gen-E" +#: src/emc/usr_intf/pncconf/pncconf.py:394 +msgid "Spindle Override incr A" +msgstr "Superamento limite mandrino A" -#: src/emc/usr_intf/pncconf/pncconf.py:160 -msgid "Pulse Density Gen-P" -msgstr "Densità impulso Gen-P" +#: src/emc/usr_intf/pncconf/pncconf.py:394 +msgid "Spindle Override incr B" +msgstr "Superamento limite mandrino B" -#: src/emc/usr_intf/pncconf/pncconf.py:160 -msgid "Pulse Density Gen-D" -msgstr "Densità impulso Gen-D" +#: src/emc/usr_intf/pncconf/pncconf.py:395 +msgid "Spindle Override incr C" +msgstr "Superamento limite mandrino C" -#: src/emc/usr_intf/pncconf/pncconf.py:160 -msgid "Pulse Density Gen-E" -msgstr "Densità impulso Gen-E" +#: src/emc/usr_intf/pncconf/pncconf.py:395 +msgid "Spindle Override incr D" +msgstr "Superamento limite mandrino D" -#: src/emc/usr_intf/pncconf/pncconf.py:161 -msgid "Up/Down Mode -Up" -msgstr "Modo Up/Down -Up" +#: src/emc/usr_intf/pncconf/pncconf.py:395 +msgid "Max Vel Override incr A" +msgstr "Incr. Vel Max A" -#: src/emc/usr_intf/pncconf/pncconf.py:161 -msgid "Up/Down Mode-Down" -msgstr "Modo Up/Down -Down" +#: src/emc/usr_intf/pncconf/pncconf.py:395 +msgid "Max Vel Override incr B" +msgstr "Incr. Vel Max B" -#: src/emc/usr_intf/pncconf/pncconf.py:161 -msgid "Up/Down Mode-Enable" -msgstr "Modo Up/Down -Abilitato" +#: src/emc/usr_intf/pncconf/pncconf.py:396 +msgid "Max Vel Override incr C" +msgstr "Incr. Vel Max C" -#: src/emc/usr_intf/pncconf/pncconf.py:162 -msgid "Motor Phase A" -msgstr "Motore Fase A" +#: src/emc/usr_intf/pncconf/pncconf.py:396 +msgid "Max Vel Override incr D" +msgstr "Incr. Vel Max D" -#: src/emc/usr_intf/pncconf/pncconf.py:162 -msgid "Motor Phase B" -msgstr "Motore Fase B" +#: src/emc/usr_intf/pncconf/pncconf.py:396 +#, fuzzy +msgid "Feed Override enable" +msgstr "Incr. avanzamento" -#: src/emc/usr_intf/pncconf/pncconf.py:162 -msgid "Motor Phase C" -msgstr "Motore Fase C" +#: src/emc/usr_intf/pncconf/pncconf.py:396 +#, fuzzy +msgid "Spindle Override enable" +msgstr "Superamento limite mandrino:" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Phase A Not" -msgstr "Motore Fase A No" +#: src/emc/usr_intf/pncconf/pncconf.py:397 +#, fuzzy +msgid "Max Vel Override enable" +msgstr "Incr. Vel Max" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Phase B Not" -msgstr "Motore Fase B No" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +msgid "Manual Spindle CW" +msgstr "Mandrino orario manuale" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Phase C Not" -msgstr "Motore Fase C No" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +msgid "Manual Spindle CCW" +msgstr "Mandrino antiorario manuale" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Enable" -msgstr "Abilita Motore" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +msgid "Manual Spindle Stop" +msgstr "Arresto Mandrino Manuale" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Fault" -msgstr "Guasto Motore" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +msgid "Spindle Up-To-Speed" +msgstr "Aumento Velocità Mandrino" -#: src/emc/usr_intf/pncconf/pncconf.py:165 -msgid "SMARTSERIAL-P0-TX" -msgstr "SMARTSERIAL-P0-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:399 +msgid "Cycle Start" +msgstr "Inizio Ciclo" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P0-RX" -msgstr "SMARTSERIAL-P0-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:399 +msgid "Abort" +msgstr "Annulla" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P0-EN" -msgstr "SMARTSERIAL-P0-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:399 +msgid "Single Step" +msgstr "Passo Singolo" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-TX" -msgstr "SMARTSERIAL-P1-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 +msgid "Jog X +" +msgstr "Asse X +" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-RX" -msgstr "SMARTSERIAL-P1-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 +msgid "Jog X -" +msgstr "Jog X -" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-EN" -msgstr "SMARTSERIAL-P1-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 +msgid "Jog Y +" +msgstr "Asse Y +" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-TX" -msgstr "SMARTSERIAL-P2-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 +msgid "Jog Y -" +msgstr "Asse Y -" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-RX" -msgstr "SMARTSERIAL-P2-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 +msgid "Jog Z +" +msgstr "Asse Z +" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-EN" -msgstr "SMARTSERIAL-P2-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 +msgid "Jog Z -" +msgstr "Asse Z -" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-TX" -msgstr "SMARTSERIAL-P3-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 +msgid "Jog A +" +msgstr "Asse A +" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-RX" -msgstr "SMARTSERIAL-P3-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 +msgid "Jog A -" +msgstr "Asse A -" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-EN" -msgstr "SMARTSERIAL-P3-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:407 +msgid "Jog button selected +" +msgstr "Bottone asse selezionato +" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-TX" -msgstr "SMARTSERIAL-P4-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:407 +msgid "Jog button selected -" +msgstr "Muove asse selezionato -" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-RX" -msgstr "SMARTSERIAL-P4-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Unused Input" +msgstr "Input Inutilizzato" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-EN" -msgstr "SMARTSERIAL-P4-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Limits" +msgstr "Limiti " -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-TX" -msgstr "SMARTSERIAL-P5-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Limts/Home Shared" +msgstr "Limiti/Home Condiviso" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-RX" -msgstr "SMARTSERIAL-P5-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:409 +msgid "Overrides" +msgstr "Superamento " -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-EN" -msgstr "SMARTSERIAL-P5-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:410 +msgid "Operation" +msgstr "Operazione" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-TX" -msgstr "SMARTSERIAL-P6-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:410 +msgid "External Control" +msgstr "Controllo Esterno" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-RX" -msgstr "SMARTSERIAL-P6-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:410 +msgid "Axis rapid" +msgstr "Asse rapido" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-EN" -msgstr "SMARTSERIAL-P6-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:412 +msgid "S BLDC Control" +msgstr "S BLDC Control" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-TX" -msgstr "SMARTSERIAL-P7-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:487 +msgid "Unused PWM Gen" +msgstr "Gen PWM Inutilizzato" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-RX" -msgstr "SMARTSERIAL-P7-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:487 +msgid "X Axis PWM" +msgstr "Asse X PWM" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-EN" -msgstr "SMARTSERIAL-P7-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:487 +msgid "Y Axis PWM" +msgstr "Asse Y PWM" -#: src/emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #1" -msgstr "7i76 sserial #1" +#: src/emc/usr_intf/pncconf/pncconf.py:488 +msgid "Z Axis PWM" +msgstr "Asse Z PWM" -#: src/emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #2" -msgstr "7i76 sserial #2" +#: src/emc/usr_intf/pncconf/pncconf.py:488 +msgid "A Axis PWM" +msgstr "Asse A PWM" -#: src/emc/usr_intf/pncconf/pncconf.py:420 -msgid "Unused Unused" -msgstr "Inutilizzato Inutilizzato" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +msgid "X Encoder" +msgstr "Encoder X" -#: src/emc/usr_intf/pncconf/pncconf.py:442 -msgid "Machine Is Enabled" -msgstr "La Macchina è Abilitata" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +msgid "Y Encoder" +msgstr "Encoder Y" -#: src/emc/usr_intf/pncconf/pncconf.py:442 -msgid "X Amplifier Enable" -msgstr "Abilita Amplificatore X" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +msgid "Z Encoder" +msgstr "Encoder Z" -#: src/emc/usr_intf/pncconf/pncconf.py:442 -msgid "Y Amplifier Enable" -msgstr "Abilita Amplificatore Y" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +msgid "A Encoder" +msgstr "Encoder A" -#: src/emc/usr_intf/pncconf/pncconf.py:442 -msgid "Z Amplifier Enable" -msgstr "Abilita Amplificatore Z" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +msgid "Spindle Encoder" +msgstr "Encoder Mandrino" -#: src/emc/usr_intf/pncconf/pncconf.py:443 -msgid "A Amplifier Enable" -msgstr "Abilita Amplificatore A" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "X Hand Wheel" +msgstr "Ruota manuale X" -#: src/emc/usr_intf/pncconf/pncconf.py:443 -msgid "Force Pin True" -msgstr "Forza Pin True" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "Y Hand Wheel" +msgstr "Ruota manuale Y" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X HALL 1" -msgstr "X HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "Z Hand Wheel" +msgstr "Ruota manuale Z" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X HALL 2" -msgstr "X HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "A Hand Wheel" +msgstr "Ruota manuale A" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X HALL 3" -msgstr "X HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "Multi Hand Wheel" +msgstr "Multi Ruota manuale" + +#: src/emc/usr_intf/pncconf/pncconf.py:514 +msgid "Feed Override" +msgstr "Incr. avanzamento" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C1" -msgstr "X Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:514 +msgid "spindle Override" +msgstr "Superamento limite mandrino" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C2" -msgstr "X Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:514 +msgid "Max Vel Override" +msgstr "Incr. Vel Max" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C4" -msgstr "X Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "Unused Encoder" +msgstr "Encoder Inutilizzato" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C8" -msgstr "X Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "Axis Encoder" +msgstr "Encoder Asse" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y HALL 1" -msgstr "Y HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "MPG Jog Controls" +msgstr "Controllo Jog con MPG " -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y HALL 2" -msgstr "Y HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "Override MPG control" +msgstr "Superamento controllo MPG" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y HALL 3" -msgstr "Y HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "Unused Resolver" +msgstr "Resolver Inutilizzato" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C1" -msgstr "Y Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "X Resolver" +msgstr "X Resolver" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C2" -msgstr "Y Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "Y Resolver" +msgstr "Y Resolver" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C4" -msgstr "Y Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "Z Resolver" +msgstr "Z Resolver" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C8" -msgstr "Y Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:519 +msgid "A Resolver" +msgstr "A Resolver" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z HALL 1" -msgstr "Z HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:519 +msgid "S Resolver" +msgstr "S Resolver" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z HALL 2" -msgstr "Z HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +msgid "Unused 8I20" +msgstr "8I20 Inutilizzato" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z HALL 3" -msgstr "Z HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "X Axis" +msgstr "Asse X:" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C1" -msgstr "Z Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Y Axis" +msgstr "Asse Y:" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C2" -msgstr "Z Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Z Axis" +msgstr "Asse Z:" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C4" -msgstr "Z Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "A Axis" +msgstr "Asse A:" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C8" -msgstr "Z Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:528 +msgid "Unused Analog Output" +msgstr "Output Analogico Inutilizzato" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A HALL 1" -msgstr "A HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:528 +msgid "Spindle Output" +msgstr "Uscita Mandrino" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A HALL 2" -msgstr "A HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:551 +msgid "Unused StepGen" +msgstr "StepGen inutilizzato" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A HALL 3" -msgstr "A HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:551 +msgid "X Axis StepGen" +msgstr "StepGen Asse X" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C1" -msgstr "A Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:551 +msgid "Y Axis StepGen" +msgstr "StepGen asse Y" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C2" -msgstr "A Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:551 +msgid "Z Axis StepGen" +msgstr "StepGen asse Z" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C4" -msgstr "A Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:552 +msgid "A Axis StepGen" +msgstr "StepGen asse A" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C8" -msgstr "A Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:552 +msgid "Spindle StepGen" +msgstr "StepGen Mandrino" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S HALL 1" -msgstr "S HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:552 +#, fuzzy +msgid "X2 Tandem StepGen" +msgstr "StepGen Mandrino" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S HALL 2" -msgstr "S HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:552 +#, fuzzy +msgid "Y2 Tandem StepGen" +msgstr "StepGen Mandrino" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S HALL 3" -msgstr "S HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#, fuzzy +msgid "Z2 Tandem StepGen" +msgstr "StepGen Mandrino" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C1" -msgstr "S Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#, fuzzy +msgid "Charge Pump StepGen" +msgstr "Carica Pompa" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C2" -msgstr "S Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:567 +msgid "Unused TPPWM Gen" +msgstr "Gen TPPWM Inutilizzato" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C4" -msgstr "S Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:567 +msgid "X Axis BL Driver" +msgstr "X Axis BL Driver" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C8" -msgstr "S Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:567 +msgid "Y Axis BL Driver" +msgstr "Y Axis BL Driver" -#: src/emc/usr_intf/pncconf/pncconf.py:450 -msgid "Unused Output" -msgstr "Output Inutilizzato" +#: src/emc/usr_intf/pncconf/pncconf.py:568 +msgid "Z Axis BL Driver" +msgstr "Z Axis BL Driver" -#: src/emc/usr_intf/pncconf/pncconf.py:450 -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#: src/emc/usr_intf/pncconf/pncconf.py:593 -msgid "Spindle" -msgstr "Mandrino" +#: src/emc/usr_intf/pncconf/pncconf.py:568 +msgid "A Axis BL Driver" +msgstr "A Axis BL Driver" -#: src/emc/usr_intf/pncconf/pncconf.py:450 -msgid "Coolant" -msgstr "Refrigerante" +#: src/emc/usr_intf/pncconf/pncconf.py:568 +msgid "S Axis BL Driver" +msgstr "S Axis BL Driver" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -msgid "Control" -msgstr "Controllo" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +#: src/emc/usr_intf/pncconf/pncconf.py:6882 +msgid "Unused Channel" +msgstr "Canale Non utilizzato" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:480 -msgid "Digital" -msgstr "Digitale" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +msgid "8i20 Amplifier Card" +msgstr "Scheda Amplificatore 8i20" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:481 -msgid "X BLDC Control" -msgstr "X BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +msgid "7i64 I/O Card" +msgstr "7i64 I/O Card" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 -msgid "Y BLDC Control" -msgstr "Y BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +msgid "7i69 I/O Card" +msgstr "7i69 I/O Card" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 -msgid "Z BLDC Control" -msgstr "Z BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i70 I/O Card" +msgstr "7i70 I/O Card" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 -msgid "A BLDC Control" -msgstr "A BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i71 I/O Card" +msgstr "7i71 I/O Card" -#: src/emc/usr_intf/pncconf/pncconf.py:453 -msgid " S BLDC Control" -msgstr " S BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i76 Mode 0 I/O Card" +msgstr "7i76 Modo 0 I/O Card" -#: src/emc/usr_intf/pncconf/pncconf.py:453 -#: src/emc/usr_intf/pncconf/pncconf.py:483 -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#: src/emc/usr_intf/pncconf/pncconf.py:585 -#: src/emc/usr_intf/pncconf/pncconf.py:588 -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.py:597 -#: src/emc/usr_intf/pncconf/pncconf.py:614 -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "Custom Signals" -msgstr "Segnali personalizzati " +#: src/emc/usr_intf/pncconf/pncconf.py:577 +#, fuzzy +msgid "7i77 Mode 0 I/O Card" +msgstr "7i76 Modo 0 I/O Card" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 -msgid "X Minimum Limit" -msgstr "Limite Minimo X" +#: src/emc/usr_intf/pncconf/pncconf.py:578 +#, fuzzy +msgid "7i73 Mode 1 Pendant Card" +msgstr "7i76 Modo 0 I/O Card" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 -msgid "Y Minimum Limit" -msgstr "Limite Minimo Y" +#: src/emc/usr_intf/pncconf/pncconf.py:580 +#, fuzzy +msgid "Unused Analog In" +msgstr "Output Analogico Inutilizzato" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 -msgid "Z Minimum Limit" -msgstr "Limite Minimo Z" +#: src/emc/usr_intf/pncconf/pncconf.py:676 +msgid "my_LinuxCNC_machine" +msgstr "La_mia_macchina_LinuxCNC" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 -msgid "A Minimum Limit" -msgstr "Limite Minimo A" +#: src/emc/usr_intf/pncconf/pncconf.py:939 +#: src/emc/usr_intf/pncconf/pncconf.py:941 +msgid "Enter Address" +msgstr "Inserisci Indirizzo" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 -msgid "X Maximum Limit" -msgstr "Limite Massimo X" +#: src/emc/usr_intf/pncconf/pncconf.py:1290 +msgid "" +"This configuration was saved with an earlier version of pncconf which may be " +"incompatible.\n" +"If it doesn't plainly cause an error, you still may want to save it with " +"another name and check it. Safer to start from scratch.\n" +"If you have a REALLY large config that you wish to convert to this newer " +"version of PNConf - ask on the LinuxCNC forum - it may be possible.." +msgstr "" +"Questa configurazione era salvata con una precedente versione di pncconf che " +"può essere incompatibile.\n" +"Se ciò non causa errore, è possibile salvarla con un altro nome e " +"controllarla. Più sicuro partire da capo.\n" +"Se tu hai REALMENTE un grande config che vuoi convertire a questa nuova " +"versione di PNConf - chiedi sul forum di LinuxCNC forum - può essere " +"possibile..." -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 -msgid "Y Maximum Limit" -msgstr "Limite Massimo Y" +#: src/emc/usr_intf/pncconf/pncconf.py:1296 +#, python-format +msgid "File %r was modified since it was written by PNCconf" +msgstr "File %r e' stato modificato da quando è stato scritto da PNCconf" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 -msgid "Z Maximum Limit" -msgstr "Limite Massimo Z" +#: src/emc/usr_intf/pncconf/pncconf.py:1300 +msgid "" +"Saving this configuration file will discard configuration changes made " +"outside PNCconf." +msgstr "" +"Salvare questo file di configurazione eliminera' i cambi alla configurazione " +"fatti fuori da PNCconf." -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 -msgid "A Maximum Limit" -msgstr "Limite Massimo A" +#: src/emc/usr_intf/pncconf/pncconf.py:1327 +#: src/emc/usr_intf/pncconf/pncconf.py:2421 +#, python-format +msgid "# Generated by PNCconf at %s" +msgstr "# Generato da PNCconf a %s" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 -msgid "X Both Limit" -msgstr "Entrambi i limiti X" +#: src/emc/usr_intf/pncconf/pncconf.py:1329 +#: src/emc/usr_intf/pncconf/pncconf.py:2423 +msgid "# overwritten when you run PNCconf again" +msgstr "# sovrascritto quando si userà ancora PNCconf" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 -msgid "Y Both Limit" -msgstr "Entrambi i limiti Y" +#: src/emc/usr_intf/pncconf/pncconf.py:2134 +msgid "# Use ACTUAL spindle velocity from spindle encoder" +msgstr "# **** Usa velocità mandrino EFFETTIVA dall'encoder mandrino " -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 -msgid "Z Both Limit" -msgstr "Entrambi i limiti Z" +#: src/emc/usr_intf/pncconf/pncconf.py:2135 +msgid "# spindle-velocity bounces around so we filter it with lowpass" +msgstr "" +"# spindle-velocity intermittente pertanto viene filtrata con passabasso" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 -msgid "A Both Limit" -msgstr "Entrambi i limiti A" +#: src/emc/usr_intf/pncconf/pncconf.py:2136 +msgid "" +"# spindle-velocity is signed so we use absolute component to remove sign" +msgstr "" +"# **** velocità mandrino con il segno, pertanto usa componente assoluta per " +"rimuovere il segno " -#: src/emc/usr_intf/pncconf/pncconf.py:458 -#: src/emc/usr_intf/pncconf/pncconf.py:546 -msgid "All Limits" -msgstr "Tutti i Limiti " +#: src/emc/usr_intf/pncconf/pncconf.py:2137 +msgid "# ACTUAL velocity is in RPS not RPM so we scale it." +msgstr "" +"# **** velocità EFFETTIVA è in giri/s e non giri/min pertanto viene scalata." -#: src/emc/usr_intf/pncconf/pncconf.py:459 -msgid "X Home" -msgstr "Origine X" +#: src/emc/usr_intf/pncconf/pncconf.py:2821 +msgid "# connect miscellaneous signals" +msgstr "# collega diversi segnali" -#: src/emc/usr_intf/pncconf/pncconf.py:459 -msgid "Y Home" -msgstr "Origine Y" +#: src/emc/usr_intf/pncconf/pncconf.py:2824 +msgid "# ---HALUI signals---" +msgstr "# ---segnali HALUI ---" -#: src/emc/usr_intf/pncconf/pncconf.py:459 -msgid "Z Home" -msgstr "Origine Z" +#: src/emc/usr_intf/pncconf/pncconf.py:2843 +msgid "# ---charge pump signals---" +msgstr "# ---carica segnali pompa---" -#: src/emc/usr_intf/pncconf/pncconf.py:459 -msgid "A Home" -msgstr "Origine A" +#: src/emc/usr_intf/pncconf/pncconf.py:2847 +msgid "# ---coolant signals---" +msgstr "# ---segnali refrigerante---" -#: src/emc/usr_intf/pncconf/pncconf.py:459 -msgid "All Home" -msgstr "Azzeramento Totale" +#: src/emc/usr_intf/pncconf/pncconf.py:2852 +msgid "# ---probe signal---" +msgstr "# ---segnale sonda---" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 -msgid "X Minimum Limit + Home" -msgstr "Limite Minimo + Home X" +#: src/emc/usr_intf/pncconf/pncconf.py:2857 +msgid "# ---jog button signals---" +msgstr "# ---segnali bottone asse---" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 -msgid "Y Minimum Limit + Home" -msgstr "Limite Minimo + Home Y" +#: src/emc/usr_intf/pncconf/pncconf.py:2862 +msgid "# ---USB device jog button signals---" +msgstr "# ---segnali bottone elemento jog USB" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 -msgid "Z Minimum Limit + Home" -msgstr "Limite Minimo + Home Z" +#: src/emc/usr_intf/pncconf/pncconf.py:2903 +#: src/emc/usr_intf/pncconf/pncconf.py:2929 +msgid "# ---mpg signals---" +msgstr "# ---segnali mpg---" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 -msgid "A Minimum Limit + Home" -msgstr "Limite Minimo + Home A" +#: src/emc/usr_intf/pncconf/pncconf.py:3111 +msgid "# ---motion control signals---" +msgstr "# ---segnali controllo movimento ---" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 -msgid "X Maximum Limit + Home" -msgstr "Limite Massimo + Home X" +#: src/emc/usr_intf/pncconf/pncconf.py:3116 +msgid "# ---digital in / out signals---" +msgstr "# ---segnali digitali in / out---" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 -msgid "Y Maximum Limit + Home" -msgstr "Limite Massimo + Home Y" +#: src/emc/usr_intf/pncconf/pncconf.py:3126 +msgid "# ---estop signals---" +msgstr "# ---segnali estop---" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 -msgid "Z Maximum Limit + Home" -msgstr "Limite Massimo + Home Z" +#: src/emc/usr_intf/pncconf/pncconf.py:3145 +msgid "# ---manual tool change signals---" +msgstr "# ---segnali cambio utensile manuale---" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 -msgid "A Maximum Limit + Home" -msgstr "Limite Massimo + Home A" +#: src/emc/usr_intf/pncconf/pncconf.py:3154 +msgid "# ---toolchange signals for custom tool changer---" +msgstr "# ---segnali cambioutensile per cambio utensile personalizzato---" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 -msgid "X Both Limit + Home" -msgstr "Entrambi i Limiti + Home X" +#: src/emc/usr_intf/pncconf/pncconf.py:3176 +msgid "# --- Classicladder signals for Z axis Auto touch off program---" +msgstr "# ---segnali Classicladder per il programma touch ff asse Z ---" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 -msgid "Y Both Limit + Home" -msgstr "Entrambi i Limiti + Home Y" +#: src/emc/usr_intf/pncconf/pncconf.py:3195 +msgid "# These files are loaded post gladeVCP, in the order they appear" +msgstr "" +"# Questi files sono caricati dopo gladeVCP, nell'ordine in cui appaiono" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 -msgid "Z Both Limit + Home" -msgstr "Entrambi i Limiti + Home Z" +#: src/emc/usr_intf/pncconf/pncconf.py:3209 +#: src/emc/usr_intf/pncconf/pncconf.py:3276 +msgid "# _DO NOT_ include your HAL commands here." +msgstr "# NON includere qui i tuoi comandi HAL " -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 -msgid "A Both Limit + Home" -msgstr "Entrambi i Limiti + Home A" +#: src/emc/usr_intf/pncconf/pncconf.py:3210 +msgid "# Put custom HAL commands in custom_gvcp.hal" +msgstr "# Inserire comandi custom HAl in custom_gvcp.hal" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -msgid "Joint select A" -msgstr "Asse selezionato A" +#: src/emc/usr_intf/pncconf/pncconf.py:3213 +msgid "# **** Setup of spindle speed display using gladevcp ****" +msgstr "" +"# **** Imposta visualizzazione della velocità mandrino con gladevcp ****" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -msgid "Joint select B" -msgstr "Asse selezionato B" +#: src/emc/usr_intf/pncconf/pncconf.py:3222 +msgid "# **** Setup GLADE MDI buttons ****" +msgstr "# **** Setup bottoni GLADE MDI ****" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -msgid "Joint select C" -msgstr "Asse selezionato C" +#: src/emc/usr_intf/pncconf/pncconf.py:3235 +msgid "" +"# **** Z axis touch-off button - requires the touch-off classicladder " +"program ****" +msgstr "" +"# **** Bottone asse Z touch-off button - richiede il programma touch-off " +"classicladder ****" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -msgid "Joint select D" -msgstr "Asse selezionato D" +#: src/emc/usr_intf/pncconf/pncconf.py:3265 +msgid "# These files are loaded post GUI, in the order they appear" +msgstr "# Questi files sono caricati dopo Gui, nell'ordine con cui appaiono" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr A" -msgstr "Incr asse A" +#: src/emc/usr_intf/pncconf/pncconf.py:3277 +msgid "# Put custom HAL commands in custom_postgui.hal" +msgstr "# Inserire comandi custom HAL in custom_postgui.hal" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr B" -msgstr "Incr asse B" +#: src/emc/usr_intf/pncconf/pncconf.py:3278 +msgid "# The commands in this file are run after the GUI loads" +msgstr "# I comandi di questo file saranno eseguiti dopo l'avvio della GUI" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr C" -msgstr "Incr asse C" +#: src/emc/usr_intf/pncconf/pncconf.py:3288 +msgid "# **** Setup of spindle speed display using pyvcp -END ****" +msgstr "" +"# **** Imposta visualizzazione della velocità mandrino con pyvcp -FINE ****" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr D" -msgstr "Incr asse " +#: src/emc/usr_intf/pncconf/pncconf.py:3300 +msgid "# This file will not be overwritten when you run PNCconf again" +msgstr "# Questo file non sara' sovrascritto quando si userà ancora PNCconf" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Feed Override incr A" -msgstr "Incr. avanzamento A" +#: src/emc/usr_intf/pncconf/pncconf.py:3306 +msgid "# These commands are required for Touchy GUI" +msgstr "# Questi comandi sono necessari per Touchy GUI" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Feed Override incr B" -msgstr "Incr. avanzamento B" +#: src/emc/usr_intf/pncconf/pncconf.py:3358 +#, python-format +msgid "Generated by PNCconf at %s" +msgstr "Generato da PNCconf a %s" -#: src/emc/usr_intf/pncconf/pncconf.py:466 -msgid "Feed Override incr C" -msgstr "Incr. avanzamento C" +#: src/emc/usr_intf/pncconf/pncconf.py:3370 +msgid "configures LinuxCNC as:\n" +msgstr "configura LinuxCNC come: \n" -#: src/emc/usr_intf/pncconf/pncconf.py:466 -msgid "Feed Override incr D" -msgstr "Incr. avanzamentoD" +#: src/emc/usr_intf/pncconf/pncconf.py:3371 +msgid "type CNC\n" +msgstr "tipo CNC\n" -#: src/emc/usr_intf/pncconf/pncconf.py:466 -msgid "Spindle Override incr A" -msgstr "Superamento limite mandrino A" +#: src/emc/usr_intf/pncconf/pncconf.py:3372 +msgid "will be used as the frontend display" +msgstr "sarà usato come display attivo" -#: src/emc/usr_intf/pncconf/pncconf.py:466 -msgid "Spindle Override incr B" -msgstr "Superamento limite mandrino B" +#: src/emc/usr_intf/pncconf/pncconf.py:3381 +msgid " connector" +msgstr " connector" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -msgid "Spindle Override incr C" -msgstr "Superamento limite mandrino C" +#: src/emc/usr_intf/pncconf/pncconf.py:3393 +msgid "invrt" +msgstr "invert" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -msgid "Spindle Override incr D" -msgstr "Superamento limite mandrino D" +#: src/emc/usr_intf/pncconf/pncconf.py:3402 +#, python-format +msgid "%(name)s Parport" +msgstr "%(name)s Porta Parallela" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -msgid "Max Vel Override incr A" -msgstr "Incr. Vel Max A" +#: src/emc/usr_intf/pncconf/pncconf.py:3407 +#: src/emc/usr_intf/pncconf/pncconf.py:3415 +msgid "-> inverted" +msgstr "-> invertito" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -msgid "Max Vel Override incr B" -msgstr "Incr. Vel Max B" +#: src/emc/usr_intf/pncconf/pncconf.py:3409 +#, python-format +msgid "pin# %(pinnum)d is connected to input signal:'%(data)s' %(mesag)s" +msgstr "pin# %(pinnum)d è connesso al segnale di input:'%(data)s' %(mesag)s" -#: src/emc/usr_intf/pncconf/pncconf.py:468 -msgid "Max Vel Override incr C" -msgstr "Incr. Vel Max C" +#: src/emc/usr_intf/pncconf/pncconf.py:3417 +#, python-format +msgid "pin# %(pinnum)d is connected to output signal:'%(data)s' %(mesag)s" +msgstr "pin# %(pinnum)d è connesso al segnale di output:'%(data)s' %(mesag)s" -#: src/emc/usr_intf/pncconf/pncconf.py:468 -msgid "Max Vel Override incr D" -msgstr "Incr. Vel Max D" +#: src/emc/usr_intf/pncconf/pncconf.py:3595 +msgid "Desktop Launcher for LinuxCNC config made by PNCconf" +msgstr "Avvio dalla Scrivania per configurazioni LinuxCNC fatte da PNCconf" -#: src/emc/usr_intf/pncconf/pncconf.py:469 -msgid "Manual Spindle CW" -msgstr "Mandrino orario manuale" +#: src/emc/usr_intf/pncconf/pncconf.py:3856 +#, python-format +msgid "%s Axis Configuration" +msgstr "Configurazione Asse %s " -#: src/emc/usr_intf/pncconf/pncconf.py:469 -msgid "Manual Spindle CCW" -msgstr "Mandrino antiorario manuale" +#: src/emc/usr_intf/pncconf/pncconf.py:3881 +msgid "Spindle Motor/Encoder Configuration" +msgstr "Configurazione Motore/encoder Mandrino" -#: src/emc/usr_intf/pncconf/pncconf.py:469 -msgid "Manual Spindle Stop" -msgstr "Arresto Mandrino Manuale" +#: src/emc/usr_intf/pncconf/pncconf.py:3883 +#, python-format +msgid "%s Axis Motor/Encoder Configuration" +msgstr "Configurazione Asse Motore/Encoder %s" -#: src/emc/usr_intf/pncconf/pncconf.py:469 -msgid "Spindle Up-To-Speed" -msgstr "Aumento Velocità Mandrino" +#: src/emc/usr_intf/pncconf/pncconf.py:3912 +#, python-format +msgid "%s Parallel Port Setup" +msgstr "Setup Porta Parallela %s" -#: src/emc/usr_intf/pncconf/pncconf.py:470 -msgid "Cycle Start" -msgstr "Inizio Ciclo" +#: src/emc/usr_intf/pncconf/pncconf.py:3936 +#, python-format +msgid "%s I/0 Setup" +msgstr "%s Setup I/O" -#: src/emc/usr_intf/pncconf/pncconf.py:470 -msgid "Abort" -msgstr "Annulla" +#: src/emc/usr_intf/pncconf/pncconf.py:4162 +msgid "Quit PNCconfig and discard changes?" +msgstr "Esci da PNCconf e perdi modifiche?" -#: src/emc/usr_intf/pncconf/pncconf.py:470 -msgid "Single Step" -msgstr "Passo Singolo" +#: src/emc/usr_intf/pncconf/pncconf.py:4203 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Help Pages" +msgstr "Pagine Aiuto" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 -msgid "Jog X +" -msgstr "Asse X +" +#: src/emc/usr_intf/pncconf/pncconf.py:4208 +msgid "Help page is unavailable\n" +msgstr "Pagina Aiuto non disponibile.\n" + +#: src/emc/usr_intf/pncconf/pncconf.py:4218 +msgid "" +"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " +"of external hardware is unavailable." +msgstr "" +"Si sta usando una versione di LinuxCNC in realtime simulato, quindi non è " +"possibile la prova/controllo di hardware esterno." -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 -msgid "Jog X -" -msgstr "Jog X -" +#: src/emc/usr_intf/pncconf/pncconf.py:4223 +#, python-format +msgid "" +"You are using a realtime version of LinuxCNC but didn't load a realtime " +"kernel so testing / tuning of external hardware is unavailable.\n" +" This is probably because you updated the OS and it doesn't load the RTAI " +"kernel anymore\n" +" You are using the %(actual)s kernel instead of %(needed)s" +msgstr "" +"Si sta usando una versione realtime di LinuxCNC ma il kernel realtime non è " +"caricato pertanto prova/controllo di hardware esterno non è possibile.\n" +" Questo probabilmente accade perchè è stato aggiornato il SO e questo non " +"usa il kernel RTAI\n" +" Si sta usando il kernel %(actual)s invece del %(needed)s." -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 -msgid "Jog Y +" -msgstr "Asse Y +" +#: src/emc/usr_intf/pncconf/pncconf.py:4256 +msgid "LinuxCNC 'PNCconf' configuration files" +msgstr "File configurazioni 'PNCconf' LinuxCNC " -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 -msgid "Jog Y -" -msgstr "Asse Y -" +#: src/emc/usr_intf/pncconf/pncconf.py:4286 +msgid "" +"It seems data in this file is from too old of a version of PNCConf to " +"continue.\n" +"." +msgstr "" +"I dati presenti in questo file sono riferiti ad una versione troppo vecchia " +"di PNCConf per potere continuare.\n" +"." -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 -msgid "Jog Z +" -msgstr "Asse Z +" +#: src/emc/usr_intf/pncconf/pncconf.py:4293 +#: src/emc/usr_intf/pncconf/pncconf.py:4391 +#, python-format +msgid "Point and click configuration - %s.pncconf " +msgstr "Configurazione %s pncconf. Punta e Clicca" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 -msgid "Jog Z -" -msgstr "Asse Z -" +#: src/emc/usr_intf/pncconf/pncconf.py:4413 +msgid "" +"You need to designate a parport and/or mesa I/O device before continuing." +msgstr "" +"E' necessario indicare una porta parallela e/o scheda I/O mesa prima di " +"continuare." -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 -msgid "Jog A +" -msgstr "Asse A +" +#: src/emc/usr_intf/pncconf/pncconf.py:4481 +msgid "" +"You Have choosen to re-edit the current config, so you can not go to the new/" +"modify page.\n" +" Quit and reload PNCconf if you wish to build a new config." +msgstr "" +"E' stato scelto di ri-editare la configurazione corrente, e quindi non è " +"possibile andare su pagina nuova/modifica.\n" +"Esci e ricarica PNCconf se vuoi ricostruire una nuova configurazione." -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 -msgid "Jog A -" -msgstr "Asse A -" +#: src/emc/usr_intf/pncconf/pncconf.py:4485 +msgid "" +"If you can not go to the new/modify page your current data will be lost.\n" +"Ok to reset data and start a new configuration?" +msgstr "" +"Se non è possibile andare sulla pagina nuovo/modifica i dati correnti " +"verranno persi.\n" +"Ok per cancellare i dati e iniziare una nuova configurazione?" -#: src/emc/usr_intf/pncconf/pncconf.py:478 -msgid "Jog button selected +" -msgstr "Bottone asse selezionato +" +#: src/emc/usr_intf/pncconf/pncconf.py:4811 +msgid "USB device Info Search" +msgstr "Ricerca Informazioni dispositivo USB" -#: src/emc/usr_intf/pncconf/pncconf.py:478 -msgid "Jog button selected -" -msgstr "Muove asse selezionato -" +#: src/emc/usr_intf/pncconf/pncconf.py:4825 +msgid "USB device page is unavailable\n" +msgstr "Pagina dispositivo USB non disponibile.\n" -#: src/emc/usr_intf/pncconf/pncconf.py:479 -msgid "Unused Input" -msgstr "Input Inutilizzato" +#: src/emc/usr_intf/pncconf/pncconf.py:4890 +msgid "Pin names are unavailable\n" +msgstr "Nomi pin non disponibili.\n" -#: src/emc/usr_intf/pncconf/pncconf.py:479 -msgid "Limits" -msgstr "Limiti " +#: src/emc/usr_intf/pncconf/pncconf.py:4912 +msgid "Device names are unavailable\n" +msgstr "Nomi dispositivi non disponibili.\n" -#: src/emc/usr_intf/pncconf/pncconf.py:479 -msgid "Limts/Home Shared" -msgstr "Limiti/Home Condiviso" +#: src/emc/usr_intf/pncconf/pncconf.py:4915 +msgid "No Pncconf made device rules were found\n" +msgstr "Nessun Pncconf made device regola trovata\n" -#: src/emc/usr_intf/pncconf/pncconf.py:480 -msgid "Axis Selection" -msgstr "Seleziona asse" +#: src/emc/usr_intf/pncconf/pncconf.py:5041 +#, fuzzy +msgid "" +"OK to replace existing glade panel ?\n" +"It will be renamed and added to 'backups' folder.\n" +" Clicking 'existing custom program' will avoid this warning, but if you " +"change related options later -such as spindle feedback- the HAL connection " +"will not update" +msgstr "" +"OK a sostituire il pannello glade esistente ?\n" +"Verra rinominato e aggiunto alla cartella 'backups' .\n" +" Cliccando 'existing custom program' eviterà questo avviso. " -#: src/emc/usr_intf/pncconf/pncconf.py:480 -msgid "Overrides" -msgstr "Superamento " +#: src/emc/usr_intf/pncconf/pncconf.py:5047 +msgid "" +"OK to replace existing custom pyvcp panel?\n" +"Existing pyvcp-panel.xml will be renamed and added to 'backups' folder\n" +"Clicking 'existing custom program' will aviod this warning. " +msgstr "" +"OK per sostituire il pannello pyvcp custom esistente?\n" +"pyvcp-panel.xml esistente sarà aggiunto alla cartella 'backups'.\n" +"Cliccando 'existing custom program' eviterà questo avviso." -#: src/emc/usr_intf/pncconf/pncconf.py:481 -msgid "Operation" -msgstr "Operazione" +#: src/emc/usr_intf/pncconf/pncconf.py:5493 +msgid "" +"You need to configure the mesa0 page.\n" +" Choose the board type, firmware, component amounts and press 'Accept " +"component changes' button'" +msgstr "" +"Bisogna configurare la pagina mesa0.\n" +" Scegli il tipo di scheda, firmware, componenti e pressa il bottone 'Accetta " +"cambio componenti'" -#: src/emc/usr_intf/pncconf/pncconf.py:481 -msgid "External Control" -msgstr "Controllo Esterno" +#: src/emc/usr_intf/pncconf/pncconf.py:5497 +msgid "" +"The chosen Mesa0 board is different from the current displayed.\n" +"please press 'Accept component changes' button'" +msgstr "" +"La scheda Mesa0 è diversa da quella correntemente visualizzata.\n" +"Prego pressare bottone 'Accetta cambi componenti' " -#: src/emc/usr_intf/pncconf/pncconf.py:481 -msgid "Axis rapid" -msgstr "Asse rapido" +#: src/emc/usr_intf/pncconf/pncconf.py:5540 +msgid "" +"You need to configure the mesa1 page.\n" +" Choose the board type, firmware, component amounts and press 'Accept " +"component changes' button'" +msgstr "" +"Bisogna configurare la pagina mesa1.\n" +" Scegli il tipo di scheda, firmware, componenti e pressa il bottone 'Accetta " +"cambio componenti'" -#: src/emc/usr_intf/pncconf/pncconf.py:483 -msgid "S BLDC Control" -msgstr "S BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:5544 +msgid "" +"The chosen Mesa1 board is different from the current displayed.\n" +"please press 'Accept component changes' button'" +msgstr "" +"La scheda Mesa1 è diversa da quella correntemente visualizzata.\n" +"Prego pressare bottone 'Accetta cambi componenti' " -#: src/emc/usr_intf/pncconf/pncconf.py:556 -msgid "Unused PWM Gen" -msgstr "Gen PWM Inutilizzato" +#: src/emc/usr_intf/pncconf/pncconf.py:5558 +msgid "" +"Do to technical reasons this test panel can be loaded only once without " +"reloading pncconf.You also will not be able to do any other testing untill " +"you reload pncconf and quite possibly open a terminal and type 'halrun -U' I " +"hesitate to even allow it's use but at times it's very useful.\n" +"Do you wish to continue the test?" +msgstr "" +"Per cause tecniche questo pannello di test può essere caricato solo una " +"volta senza ricaricare pncconf. Non è possibile fare altri test finchè non " +"si ricarica pncconf e possibilmente aprire un terminale e digitare 'halrun -" +"U'. Non è sempre possibile ma a volte è molto utile.\n" +"Vuoi continuare il test?" -#: src/emc/usr_intf/pncconf/pncconf.py:556 -msgid "X Axis PWM" -msgstr "Asse X PWM" +#: src/emc/usr_intf/pncconf/pncconf.py:7042 +msgid "First Parallel Port set for OUTPUT" +msgstr "Imposta Prima Porta Parallela per OUTPUT" -#: src/emc/usr_intf/pncconf/pncconf.py:556 -msgid "Y Axis PWM" -msgstr "Asse Y PWM" +#: src/emc/usr_intf/pncconf/pncconf.py:7044 +msgid "First Parallel Port set for INPUT" +msgstr "Imposta Prima Porta Parallela per INPUT" -#: src/emc/usr_intf/pncconf/pncconf.py:557 -msgid "Z Axis PWM" -msgstr "Asse Z PWM" +#: src/emc/usr_intf/pncconf/pncconf.py:7068 +msgid "Second Parallel Port set for OUTPUT" +msgstr "Imposta Seconda Porta Parallela per OUTPUT" -#: src/emc/usr_intf/pncconf/pncconf.py:557 -msgid "A Axis PWM" -msgstr "Asse A PWM" +#: src/emc/usr_intf/pncconf/pncconf.py:7070 +msgid "Second Parallel Port set for INPUT" +msgstr "Imposta Seconda Porta Parallela per INPUT" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -msgid "X Encoder" -msgstr "Encoder X" +#: src/emc/usr_intf/pncconf/pncconf.py:7082 +msgid "Third Parallel Port set for OUTPUT" +msgstr "Imposta Terza Porta Parallela per OUTPUT" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -msgid "Y Encoder" -msgstr "Encoder Y" +#: src/emc/usr_intf/pncconf/pncconf.py:7084 +msgid "Third Parallel Port set for INPUT" +msgstr "Imposta Terza Porta Parallela per INPUT" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -msgid "Z Encoder" -msgstr "Encoder Z" +#: src/emc/usr_intf/pncconf/pncconf.py:7210 +msgid "You can not have both steppers and pwm signals for spindle control\n" +msgstr "" +"Non è possibile avere sia segnali stepper che pwm per il controllo mandrino\n" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -msgid "A Encoder" -msgstr "Encoder A" +#: src/emc/usr_intf/pncconf/pncconf.py:7214 +#, python-format +msgid "You forgot to designate a stepper or pwm signal for axis %s\n" +msgstr "" +"Ti sei dimenticato di definire un segnale stepper o pwm per l'asse %s\n" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -msgid "Spindle Encoder" -msgstr "Encoder Mandrino" +#: src/emc/usr_intf/pncconf/pncconf.py:7217 +#, python-format +msgid "You forgot to designate an encoder /resolver signal for axis %s servo\n" +msgstr "" +"Ti sei dimenticato di definire un segnale encoder/resolver per l'asse %s " +"servo \n" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "X Hand Wheel" -msgstr "Ruota manuale X" +#: src/emc/usr_intf/pncconf/pncconf.py:7220 +#, python-format +msgid "You forgot to designate a pwm signal or stepper signal for axis %s\n" +msgstr "" +"Ti sei dimenticato di definire un segnale stepper o pwm per l'asse %s\n" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "Y Hand Wheel" -msgstr "Ruota manuale Y" +#: src/emc/usr_intf/pncconf/pncconf.py:7223 +#, python-format +msgid "You can not have both steppers and pwm signals for axis %s\n" +msgstr "Non è possibile avere sia segnali stepper che pwm per l'asse %s\n" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "Z Hand Wheel" -msgstr "Ruota manuale Z" +#: src/emc/usr_intf/pncconf/pncconf.py:7226 +#, python-format +msgid "" +"If using a tandem axis stepper, you must select a master stepgen for axis " +"%s\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "A Hand Wheel" -msgstr "Ruota manuale A" +#: src/emc/usr_intf/pncconf/pncconf.py:7235 +msgid "Touchy require an external cycle start signal\n" +msgstr "Touchy richiede un segnale inizio ciclo esterno\n" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "Multi Hand Wheel" -msgstr "Multi Ruota manuale" +#: src/emc/usr_intf/pncconf/pncconf.py:7238 +msgid "Touchy require an external abort signal\n" +msgstr "Touchy richiede un segnale aborto esterno\n" -#: src/emc/usr_intf/pncconf/pncconf.py:583 -msgid "Feed Override" -msgstr "Incr. avanzamento" +#: src/emc/usr_intf/pncconf/pncconf.py:7241 +msgid "Touchy require an external single-step signal\n" +msgstr "Touchy richiede un segnale passo singolo esterno\n" -#: src/emc/usr_intf/pncconf/pncconf.py:583 -msgid "spindle Override" -msgstr "Superamento limite mandrino" +#: src/emc/usr_intf/pncconf/pncconf.py:7244 +msgid "" +"Touchy require an external multi handwheel MPG encoder signal on the mesa " +"page\n" +msgstr "" +"Touchy richiede un segnale encoder per un encoder multi handwheel MPG sulla " +"pagina mesa\n" -#: src/emc/usr_intf/pncconf/pncconf.py:583 -msgid "Max Vel Override" -msgstr "Incr. Vel Max" +#: src/emc/usr_intf/pncconf/pncconf.py:7247 +msgid "" +"Touchy require 'external mpg jogging' to be selected on the external control " +"page\n" +msgstr "" +"Touchy richiede selezionato 'external mpg jogging' sulla pagina controlli " +"esterni\n" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "Unused Encoder" -msgstr "Encoder Inutilizzato" +#: src/emc/usr_intf/pncconf/pncconf.py:7250 +msgid "" +"Touchy require the external mpg to be in 'shared mpg' mode on the external " +"controls page\n" +msgstr "" +"Touchy richiede gli mpg esterni in modo 'shared-mpg' sulla pagina controlli " +"esterni\n" + +#: src/emc/usr_intf/pncconf/pncconf.py:7253 +msgid "" +"Touchy require selectable increments to be unchecked on the external " +"controls page\n" +msgstr "" +"Touchy richiede gli incrementi selezionabili non selezionati sulla pagina " +"controlli esterni\n" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "Axis Encoder" -msgstr "Encoder Asse" +#: src/emc/usr_intf/pncconf/pncconf.py:7257 +msgid "" +"The 7i29 daughter board requires PWM type generators and a PWM base " +"frequency of 20 khz\n" +msgstr "" +"La scheda madre 7i29 richiede generatori tipo PWM e una frequenza di base " +"PWM di 20 Khz\n" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "MPG Jog Controls" -msgstr "Controllo Jog con MPG " +#: src/emc/usr_intf/pncconf/pncconf.py:7260 +msgid "" +"The 7i30 daughter board requires PWM type generators and a PWM base " +"frequency of 20 khz\n" +msgstr "" +"La scheda madre 7i30 richiede generatori tipo PWM e una frequenza di base " +"PWM di 20 Khz\n" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "Override MPG control" -msgstr "Superamento controllo MPG" +#: src/emc/usr_intf/pncconf/pncconf.py:7263 +msgid "" +"The 7i33 daughter board requires PDM type generators and a PDM base " +"frequency of 6 Mhz\n" +msgstr "" +"La scheda madre 7i33 richiede generatori tipo PDM e una frequenza di base " +"PDM di 6 Mhz\n" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "Unused Resolver" -msgstr "Resolver Inutilizzato" +#: src/emc/usr_intf/pncconf/pncconf.py:7266 +msgid "" +"The 7i40 daughter board requires PWM type generators and a PWM base " +"frequency of 50 khz\n" +msgstr "" +"La scheda madre 7i40 richiede generatori tipo PWM e una frequenza di base " +"PWM di 50 khz\n" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "X Resolver" -msgstr "X Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:7269 +msgid "" +"The 7i48 daughter board requires UDM type generators and a PWM base " +"frequency of 24 khz\n" +msgstr "" +"La scheda madre 7i48 richiede generatori tipo UDM e una frequenza di base " +"PWM di 24 khz\n" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "Y Resolver" -msgstr "Y Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:7494 +msgid "Gearbox Reduction Ratio" +msgstr "Rapporto Riduzione Cambio" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "Z Resolver" -msgstr "Z Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:7497 +msgid "Reduction Ratio" +msgstr "Rapporto Riduzione" -#: src/emc/usr_intf/pncconf/pncconf.py:588 -msgid "A Resolver" -msgstr "A Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:7500 +msgid "Leadscrew Pitch" +msgstr "Passo della vite:" -#: src/emc/usr_intf/pncconf/pncconf.py:588 -msgid "S Resolver" -msgstr "S Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:7503 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Leadscrew TPI" +msgstr "Passo della vite TPI" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -msgid "Unused 8I20" -msgstr "8I20 Inutilizzato" +#: src/emc/usr_intf/pncconf/pncconf.py:7507 +#: src/emc/usr_intf/pncconf/pncconf.py:7508 +msgid "(" +msgstr "(" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:61457 -msgid "X Axis" -msgstr "Asse X:" +#: src/emc/usr_intf/pncconf/pncconf.py:7509 +#: src/emc/usr_intf/pncconf/pncconf.py:7519 +#: src/emc/usr_intf/pncconf/pncconf.py:7520 +#: src/emc/usr_intf/pncconf/pncconf.py:7521 +msgid " / min" +msgstr "/ min" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:62549 -msgid "Y Axis" -msgstr "Asse Y:" +#: src/emc/usr_intf/pncconf/pncconf.py:7510 +msgid " / sec²" +msgstr "/ s²" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:63642 -msgid "Z Axis" -msgstr "Asse Z:" +#: src/emc/usr_intf/pncconf/pncconf.py:7513 +msgid " / Step" +msgstr "/ Passo" -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.glade:64735 -msgid "A Axis" -msgstr "Asse A:" +#: src/emc/usr_intf/pncconf/pncconf.py:7514 +msgid "Steps / " +msgstr "Passi /" -#: src/emc/usr_intf/pncconf/pncconf.py:597 -msgid "Unused Analog Output" -msgstr "Output Analogico Inutilizzato" +#: src/emc/usr_intf/pncconf/pncconf.py:7516 +msgid " / encoder pulse" +msgstr " / impulso encoder" -#: src/emc/usr_intf/pncconf/pncconf.py:597 -msgid "Spindle Output" -msgstr "Uscita Mandrino" +#: src/emc/usr_intf/pncconf/pncconf.py:7517 +msgid "Encoder pulses / " +msgstr "Impulsi encoder /" -#: src/emc/usr_intf/pncconf/pncconf.py:613 -msgid "Unused StepGen" -msgstr "StepGen inutilizzato" +#: src/emc/usr_intf/pncconf/pncconf.py:7525 +#, fuzzy +msgid "Resolver Scale:" +msgstr "scala Encoder:" -#: src/emc/usr_intf/pncconf/pncconf.py:613 -msgid "X Axis StepGen" -msgstr "StepGen Asse X" +#: src/emc/usr_intf/pncconf/pncconf.py:7826 +msgid "Axis Scale Calculation" +msgstr "Calcolo Scala Axis" -#: src/emc/usr_intf/pncconf/pncconf.py:613 -msgid "Y Axis StepGen" -msgstr "StepGen asse Y" +#: src/emc/usr_intf/pncconf/pncconf.py:8133 +msgid "You need to designate an E-stop input pin for this ladder program." +msgstr "Bisogna designare un input pin di E-stop per questo programma ladder." -#: src/emc/usr_intf/pncconf/pncconf.py:613 -msgid "Z Axis StepGen" -msgstr "StepGen asse Z" +#: src/emc/usr_intf/pncconf/pncconf.py:8145 +msgid "You need to designate a probe input pin for this ladder program." +msgstr "Bisogna designare un input pin di sonda per questo programma ladder." -#: src/emc/usr_intf/pncconf/pncconf.py:614 -msgid "A Axis StepGen" -msgstr "StepGen asse A" +#: src/emc/usr_intf/pncconf/pncconf.py:8156 +msgid "" +"OK to replace existing custom ladder program?\n" +"Existing Custom.clp will be renamed custom_backup.clp.\n" +"Any existing file named -custom_backup.clp- will be lost.Selecting 'existing " +"ladder program' will avoid this warning" +msgstr "" +"OK per sostituire il programma ladder custom esistente?\n" +"Custom.clp esistente sarà rinominato custom_backup.clp.\n" +"Qualsiasi file esistente di nome -custom_backup.clp- verrà perso. Seleziona " +"'existing ladder program' per evitare questo avviso" -#: src/emc/usr_intf/pncconf/pncconf.py:614 -msgid "Spindle StepGen" -msgstr "StepGen Mandrino" +#: src/emc/usr_intf/pncconf/pncconf.py:8374 +msgid "Do you wish to continue to edit this configuration." +msgstr "Vuoi cintinuare a modificare queste configurazioni." -#: src/emc/usr_intf/pncconf/pncconf.py:628 -msgid "Unused TPPWM Gen" -msgstr "Gen TPPWM Inutilizzato" +#: src/emc/usr_intf/pncconf/pncconf.py:8413 +msgid "PCI search page is unavailable\n" +msgstr "Pagina Ricerca PCI non disponibile.\n" -#: src/emc/usr_intf/pncconf/pncconf.py:628 -msgid "X Axis BL Driver" -msgstr "X Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:8532 +msgid "" +"You specified there is an existing gladefile, But there is not one in the " +"machine-named folder.." +msgstr "Bisogna specificare un gladefile " -#: src/emc/usr_intf/pncconf/pncconf.py:628 -msgid "Y Axis BL Driver" -msgstr "Y Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:8856 +msgid "Servo tuning is not avaiable in PNCconf yet\n" +msgstr "Taratura servo non disponibile in PNCconf\n" -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "Z Axis BL Driver" -msgstr "Z Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:8861 +msgid "degrees" +msgstr "gradi" -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "A Axis BL Driver" -msgstr "A Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:8862 +msgid "degrees / minute" +msgstr "gradi / minuto" -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "S Axis BL Driver" -msgstr "S Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:8863 +msgid "degrees / second²" +msgstr "gradi / s²" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -#: src/emc/usr_intf/pncconf/pncconf.py:6557 -msgid "Unused Channel" -msgstr "Canale Non utilizzato" +#: src/emc/usr_intf/pncconf/pncconf.py:8865 +msgid "revolutions" +msgstr "giri" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -msgid "8i20 Amplifier Card" -msgstr "Scheda Amplificatore 8i20" +#: src/emc/usr_intf/pncconf/pncconf.py:8866 +msgid "rpm" +msgstr "giri/min" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -msgid "7i64 I/O Card" -msgstr "7i64 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:8867 +msgid "revs / second²" +msgstr "giri / second²" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -msgid "7i69 I/O Card" -msgstr "7i69 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:8870 +#: src/emc/usr_intf/pncconf/pncconf.glade:65184 +#: src/emc/usr_intf/pncconf/pncconf.glade:65281 +#: src/emc/usr_intf/pncconf/pncconf.glade:65465 +msgid "mm / minute" +msgstr "mm / minuto" -#: src/emc/usr_intf/pncconf/pncconf.py:637 -msgid "7i70 I/O Card" -msgstr "7i70 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:8871 +msgid "mm / second²" +msgstr "mm / s²" -#: src/emc/usr_intf/pncconf/pncconf.py:637 -msgid "7i71 I/O Card" -msgstr "7i71 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:8874 +msgid "inches / minute" +msgstr "pollici / minuto" -#: src/emc/usr_intf/pncconf/pncconf.py:637 -msgid "7i76 Mode 0 I/O Card" -msgstr "7i76 Modo 0 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:8875 +msgid "inches / second²" +msgstr "pollici / s²" -#: src/emc/usr_intf/pncconf/pncconf.py:722 -msgid "my_LinuxCNC_machine" -msgstr "La_mia_macchina_LinuxCNC" +#: src/emc/usr_intf/pncconf/pncconf.py:9031 +#, python-format +msgid "%s Axis Tune" +msgstr "Regolazione Asse %s " -#: src/emc/usr_intf/pncconf/pncconf.py:1328 +#: src/emc/usr_intf/pncconf/pncconf.py:9195 msgid "" -"This configuration was saved with an earlier version of pncconf which may be " -"incompatible.\n" -"If it doesn't plainly cause an error, you still may want to save it with " -"another name and check it. Safer to start from scratch.\n" -"If you have a REALLY large config that you wish to convert to this newer " -"version of PNConf - ask on the LinuxCNC forum - it may be possible.." +" You must designate a ENCODER / RESOLVER signal and an ANALOG SPINDLE signal " +"for this axis test" msgstr "" -"Questa configurazione era salvata con una precedente versione di pncconf che " -"può essere incompatibile.\n" -"Se ciò non causa errore, è possibile salvarla con un altro nome e " -"controllarla. Più sicuro partire da capo.\n" -"Se tu hai REALMENTE un grande config che vuoi convertire a questa nuova " -"versione di PNConf - chiedi sul forum di LinuxCNC forum - può essere " -"possibile..." - -#: src/emc/usr_intf/pncconf/pncconf.py:1334 -#, python-format -msgid "File %r was modified since it was written by PNCconf" -msgstr "File %r e' stato modificato da quando è stato scritto da PNCconf" +" Bisogna indicare un segnale di ENCODER / RESOLVER e un ANALOG SPINDLE per " +"il test di quest'asse" -#: src/emc/usr_intf/pncconf/pncconf.py:1338 +#: src/emc/usr_intf/pncconf/pncconf.py:9199 msgid "" -"Saving this configuration file will discard configuration changes made " -"outside PNCconf." +" You must designate a ENCODER / RESOLVER signal and a PWM signal for this " +"axis test" msgstr "" -"Salvare questo file di configurazione eliminera' i cambi alla configurazione " -"fatti fuori da PNCconf." - -#: src/emc/usr_intf/pncconf/pncconf.py:1365 -#: src/emc/usr_intf/pncconf/pncconf.py:2368 -#, python-format -msgid "# Generated by PNCconf at %s" -msgstr "# Generato da PNCconf a %s" +" Bisogna indicare un segnale di ENCODER / RESOLVER e un segnale PWM per il " +"test di quest'asse" -#: src/emc/usr_intf/pncconf/pncconf.py:1367 -#: src/emc/usr_intf/pncconf/pncconf.py:2370 -msgid "# overwritten when you run PNCconf again" -msgstr "# sovrascritto quando si userà ancora PNCconf" +#: src/emc/usr_intf/pncconf/pncconf.glade:8 +msgid "LinuxCNC Point And Click Configuration" +msgstr "Configurazione LinuxCNC Punta e Clicca " -#: src/emc/usr_intf/pncconf/pncconf.py:2070 -msgid "# Use ACTUAL spindle velocity from spindle encoder" -msgstr "# **** Usa velocità mandrino EFFETTIVA dall'encoder mandrino " +#: src/emc/usr_intf/pncconf/pncconf.glade:23 +msgid "LinuxCNC Configuration Wizard Beta 1 Version" +msgstr "Wizard Configurazione LinuxCNC Versione Beta 1" -#: src/emc/usr_intf/pncconf/pncconf.py:2071 -msgid "# spindle-velocity bounces around so we filter it with lowpass" +#: src/emc/usr_intf/pncconf/pncconf.glade:24 +msgid "" +"\tThis program creates configuration \n" +" files for \"Closed Loop Servo\" \n" +"\t \t and hardware stepper\n" +" \tmachines" msgstr "" -"# spindle-velocity intermittente pertanto viene filtrata con passabasso" +"\tQuesto programma crea file configurazione \n" +" per \"Servo Anello Chiuso\" \n" +"\t \t ed hardware di macchine\n" +" \tstepper" -#: src/emc/usr_intf/pncconf/pncconf.py:2072 -msgid "" -"# spindle-velocity is signed so we use absolute component to remove sign" +#: src/emc/usr_intf/pncconf/pncconf.glade:34 +msgid "Create or Edit" +msgstr "Crea o Modifica" + +#: src/emc/usr_intf/pncconf/pncconf.glade:66 +msgid "Create a desktop launcher to start LinuxCNC with this configuration." msgstr "" -"# **** velocità mandrino con il segno, pertanto usa componente assoluta per " -"rimuovere il segno " +"Crea un link sulla scrivania per avviare LinuxCNC con questa configurazione." -#: src/emc/usr_intf/pncconf/pncconf.py:2073 -msgid "# ACTUAL velocity is in RPS not RPM so we scale it." +#: src/emc/usr_intf/pncconf/pncconf.glade:83 +msgid "Create a desktop shortcut (symlink) to configuration files." msgstr "" -"# **** velocità EFFETTIVA è in giri/s e non giri/min pertanto viene scalata." +"Crea un collegamento (symlink) ai file di configurazione sulla scrivania." + +#: src/emc/usr_intf/pncconf/pncconf.glade:148 +msgid "Create a new configuration" +msgstr "Crea una nuova configurazione" + +#: src/emc/usr_intf/pncconf/pncconf.glade:175 +msgid "Basic machine information" +msgstr "Informazioni base macchina" + +#: src/emc/usr_intf/pncconf/pncconf.glade:214 +msgid "Machine Name:" +msgstr "Nome Macchina:" -#: src/emc/usr_intf/pncconf/pncconf.py:2082 -msgid "" -"# Use COMMANDED spindle velocity from LinuxCNC because no spindle encoder " -"was specified" -msgstr "" -"# **** Usa velocità mandrino COMANDATA da LinuxCNC perchè non è stato " -"specificato nessun encoder mandrino" +#: src/emc/usr_intf/pncconf/pncconf.glade:280 +msgid "Axis configuration:" +msgstr "Configurazione Asse:" -#: src/emc/usr_intf/pncconf/pncconf.py:2083 +#: src/emc/usr_intf/pncconf/pncconf.glade:295 msgid "" -"# COMMANDED velocity is signed so we use absolute component to remove sign" +"XYZ\n" +"XYZA\n" +"XZ (Lathe)" msgstr "" -"# **** velocità COMANDATA ha il segno, pertanto usa componente assoluto per " -"eliminare segno" - -#: src/emc/usr_intf/pncconf/pncconf.py:2727 -msgid "# connect miscellaneous signals" -msgstr "# collega diversi segnali" - -#: src/emc/usr_intf/pncconf/pncconf.py:2730 -msgid "# ---HALUI signals---" -msgstr "# ---segnali HALUI ---" +"XYZ\n" +"XYZA\n" +"XZ (Tornio)" -#: src/emc/usr_intf/pncconf/pncconf.py:2749 -msgid "# ---charge pump signals---" -msgstr "# ---carica segnali pompa---" +#: src/emc/usr_intf/pncconf/pncconf.glade:322 +msgid "Machine units:" +msgstr "Unità Macchina:" -#: src/emc/usr_intf/pncconf/pncconf.py:2753 -msgid "# ---coolant signals---" -msgstr "# ---segnali refrigerante---" +#: src/emc/usr_intf/pncconf/pncconf.glade:337 +msgid "" +"Inch\n" +"Millimeter" +msgstr "" +"Pollici\n" +"Millimetri" -#: src/emc/usr_intf/pncconf/pncconf.py:2758 -msgid "# ---probe signal---" -msgstr "# ---segnale sonda---" +#: src/emc/usr_intf/pncconf/pncconf.glade:363 +msgid "Machine Basics" +msgstr "Caratteristiche Macchina" -#: src/emc/usr_intf/pncconf/pncconf.py:2763 -msgid "# ---jog button signals---" -msgstr "# ---segnali bottone asse---" +#: src/emc/usr_intf/pncconf/pncconf.glade:416 +msgid "Actual Servo Period: " +msgstr "Periodo Servo Corrente: " -#: src/emc/usr_intf/pncconf/pncconf.py:2768 -msgid "# ---USB device jog button signals---" -msgstr "# ---segnali bottone elemento jog USB" +#: src/emc/usr_intf/pncconf/pncconf.glade:475 +msgid "Recommend servo period: 1000000" +msgstr "Periodo servo consigliato: 1000000" -#: src/emc/usr_intf/pncconf/pncconf.py:2803 -#: src/emc/usr_intf/pncconf/pncconf.py:2825 -msgid "# ---mpg signals---" -msgstr "# ---segnali mpg---" +#: src/emc/usr_intf/pncconf/pncconf.glade:494 +msgid "" +" Test Base\n" +"Period Jitter " +msgstr "" +" Test Base\n" +"Periodo Jitter " -#: src/emc/usr_intf/pncconf/pncconf.py:2971 -msgid "# ---motion control signals---" -msgstr "# ---segnali controllo movimento ---" +#: src/emc/usr_intf/pncconf/pncconf.glade:519 +msgid "Computer Response Time" +msgstr "Tempo Risposta Computer" -#: src/emc/usr_intf/pncconf/pncconf.py:2976 -msgid "# ---digital in / out signals---" -msgstr "# ---segnali digitali in / out---" +#: src/emc/usr_intf/pncconf/pncconf.glade:561 +msgid "Mesa0 PCI / Parport Card:" +msgstr "Mesa0 PCI / Parport Card:" -#: src/emc/usr_intf/pncconf/pncconf.py:2986 -msgid "# ---estop signals---" -msgstr "# ---segnali estop---" +#: src/emc/usr_intf/pncconf/pncconf.glade:571 +msgid "Mesa1 PCI / Parport Card:" +msgstr "Mesa1 PCI / Parport Card:" -#: src/emc/usr_intf/pncconf/pncconf.py:3005 -msgid "# ---manual tool change signals---" -msgstr "# ---segnali cambio utensile manuale---" +#: src/emc/usr_intf/pncconf/pncconf.glade:584 +msgid "First Parport Address:" +msgstr "Primo Indirizzo Porta Parallela:" -#: src/emc/usr_intf/pncconf/pncconf.py:3014 -msgid "# ---toolchange signals for custom tool changer---" -msgstr "# ---segnali cambioutensile per cambio utensile personalizzato---" +#: src/emc/usr_intf/pncconf/pncconf.glade:597 +msgid "Second Parport Address:" +msgstr "Secondo Indirizzo Porta Parallela:" -#: src/emc/usr_intf/pncconf/pncconf.py:3036 -msgid "# --- Classicladder signals for Z axis Auto touch off program---" -msgstr "# ---segnali Classicladder per il programma touch ff asse Z ---" +#: src/emc/usr_intf/pncconf/pncconf.glade:612 +msgid "Third Parport Address:" +msgstr "Terzo Indirizzo Porta Parallela:" -#: src/emc/usr_intf/pncconf/pncconf.py:3055 -msgid "# These files are loaded post gladeVCP, in the order they appear" +#: src/emc/usr_intf/pncconf/pncconf.glade:635 +#: src/emc/usr_intf/pncconf/pncconf.glade:643 +msgid "" +"5i20\n" +"5i23\n" +"5i22" msgstr "" -"# Questi files sono caricati dopo gladeVCP, nell'ordine in cui appaiono" - -#: src/emc/usr_intf/pncconf/pncconf.py:3069 -#: src/emc/usr_intf/pncconf/pncconf.py:3136 -msgid "# _DO NOT_ include your HAL commands here." -msgstr "# NON includere qui i tuoi comandi HAL " - -#: src/emc/usr_intf/pncconf/pncconf.py:3070 -msgid "# Put custom HAL commands in custom_gvcp.hal" -msgstr "# Inserire comandi custom HAl in custom_gvcp.hal" +"5i20\n" +"5i23\n" +"5i22" -#: src/emc/usr_intf/pncconf/pncconf.py:3073 -msgid "# **** Setup of spindle speed display using gladevcp ****" +#: src/emc/usr_intf/pncconf/pncconf.glade:716 +#: src/emc/usr_intf/pncconf/pncconf.glade:728 +#: src/emc/usr_intf/pncconf/pncconf.glade:741 +msgid "" +"In\n" +"Out" msgstr "" -"# **** Imposta visualizzazione della velocità mandrino con gladevcp ****" - -#: src/emc/usr_intf/pncconf/pncconf.py:3082 -msgid "# **** Setup GLADE MDI buttons ****" -msgstr "# **** Setup bottoni GLADE MDI ****" +"In\n" +"Out" -#: src/emc/usr_intf/pncconf/pncconf.py:3095 +#: src/emc/usr_intf/pncconf/pncconf.glade:804 msgid "" -"# **** Z axis touch-off button - requires the touch-off classicladder " -"program ****" +"Add-on PCI\n" +" Parport\n" +" Address \n" +" Search" msgstr "" -"# **** Bottone asse Z touch-off button - richiede il programma touch-off " -"classicladder ****" +"Aggiunta PCI\n" +" Porta parallela\n" +" Indirizzo \n" +" Ricerca" -#: src/emc/usr_intf/pncconf/pncconf.py:3125 -msgid "# These files are loaded post GUI, in the order they appear" -msgstr "# Questi files sono caricati dopo Gui, nell'ordine con cui appaiono" +#: src/emc/usr_intf/pncconf/pncconf.glade:829 +msgid "I/O Control Ports/ Boards" +msgstr "Porta Controllo I/O / Scheda" -#: src/emc/usr_intf/pncconf/pncconf.py:3137 -msgid "# Put custom HAL commands in custom_postgui.hal" -msgstr "# Inserire comandi custom HAL in custom_postgui.hal" +#: src/emc/usr_intf/pncconf/pncconf.glade:878 +msgid "Axis" +msgstr "Asse " -#: src/emc/usr_intf/pncconf/pncconf.py:3138 -msgid "# The commands in this file are run after the GUI loads" -msgstr "# I comandi di questo file saranno eseguiti dopo l'avvio della GUI" +#: src/emc/usr_intf/pncconf/pncconf.glade:893 +msgid "TKLinuxCNC" +msgstr "TKLinuxCNC" -#: src/emc/usr_intf/pncconf/pncconf.py:3148 -msgid "# **** Setup of spindle speed display using pyvcp -END ****" -msgstr "" -"# **** Imposta visualizzazione della velocità mandrino con pyvcp -FINE ****" +#: src/emc/usr_intf/pncconf/pncconf.glade:907 +msgid "Mini" +msgstr "Mini" -#: src/emc/usr_intf/pncconf/pncconf.py:3160 -msgid "# This file will not be overwritten when you run PNCconf again" -msgstr "# Questo file non sara' sovrascritto quando si userà ancora PNCconf" +#: src/emc/usr_intf/pncconf/pncconf.glade:921 +#: src/emc/usr_intf/pncconf/pncconf.glade:6656 +msgid "Touchy" +msgstr "Touchy" -#: src/emc/usr_intf/pncconf/pncconf.py:3166 -msgid "# These commands are required for Touchy GUI" -msgstr "# Questi comandi sono necessari per Touchy GUI" +#: src/emc/usr_intf/pncconf/pncconf.glade:938 +msgid "GUI frontend list" +msgstr "Lista Gui Frontend" -#: src/emc/usr_intf/pncconf/pncconf.py:3218 -#, python-format -msgid "Generated by PNCconf at %s" -msgstr "Generato da PNCconf a %s" +#: src/emc/usr_intf/pncconf/pncconf.glade:973 +msgid "External Controls" +msgstr "Controlli Esterni" -#: src/emc/usr_intf/pncconf/pncconf.py:3230 -msgid "configures LinuxCNC as:\n" -msgstr "configura LinuxCNC come: \n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1014 +msgid "Add device rule" +msgstr "Aggiungi regola device" -#: src/emc/usr_intf/pncconf/pncconf.py:3231 -msgid "type CNC\n" -msgstr "tipo CNC\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1027 +msgid "Test device" +msgstr "Test dispositivi" -#: src/emc/usr_intf/pncconf/pncconf.py:3232 -msgid "will be used as the frontend display" -msgstr "sarà usato come display attivo" +#: src/emc/usr_intf/pncconf/pncconf.glade:1041 +msgid "Search for device rules" +msgstr "Cerca nelle regole device" -#: src/emc/usr_intf/pncconf/pncconf.py:3241 -msgid " connector" -msgstr " connector" +#: src/emc/usr_intf/pncconf/pncconf.glade:1062 +msgid "Device Name:" +msgstr "Nome dispositivo:" -#: src/emc/usr_intf/pncconf/pncconf.py:3253 -msgid "invrt" -msgstr "invert" +#: src/emc/usr_intf/pncconf/pncconf.glade:1125 +msgid "A +" +msgstr "A +" -#: src/emc/usr_intf/pncconf/pncconf.py:3262 -#, python-format -msgid "%(name)s Parport" -msgstr "%(name)s Porta Parallela" +#: src/emc/usr_intf/pncconf/pncconf.glade:1135 +msgid "A -" +msgstr "A -" -#: src/emc/usr_intf/pncconf/pncconf.py:3267 -#: src/emc/usr_intf/pncconf/pncconf.py:3275 -msgid "-> inverted" -msgstr "-> invertito" +#: src/emc/usr_intf/pncconf/pncconf.glade:1169 +#: src/emc/usr_intf/pncconf/pncconf.glade:1181 +#: src/emc/usr_intf/pncconf/pncconf.glade:1191 +#: src/emc/usr_intf/pncconf/pncconf.glade:1246 +#: src/emc/usr_intf/pncconf/pncconf.glade:1759 +msgid "mm/min " +msgstr "mm/min " -#: src/emc/usr_intf/pncconf/pncconf.py:3269 -#, python-format -msgid "pin# %(pinnum)d is connected to input signal:'%(data)s' %(mesag)s" -msgstr "pin# %(pinnum)d è connesso al segnale di input:'%(data)s' %(mesag)s" +#: src/emc/usr_intf/pncconf/pncconf.glade:1269 +msgid " ab)" +msgstr "ab)" -#: src/emc/usr_intf/pncconf/pncconf.py:3277 -#, python-format -msgid "pin# %(pinnum)d is connected to output signal:'%(data)s' %(mesag)s" -msgstr "pin# %(pinnum)d è connesso al segnale di output:'%(data)s' %(mesag)s" +#: src/emc/usr_intf/pncconf/pncconf.glade:1282 +#: src/emc/usr_intf/pncconf/pncconf.glade:2493 +#: src/emc/usr_intf/pncconf/pncconf.glade:2927 +#: src/emc/usr_intf/pncconf/pncconf.glade:3808 +#: src/emc/usr_intf/pncconf/pncconf.glade:4689 +msgid " b)" +msgstr "b)" -#: src/emc/usr_intf/pncconf/pncconf.py:3455 -msgid "Desktop Launcher for LinuxCNC config made by PNCconf" -msgstr "Avvio dalla Scrivania per configurazioni LinuxCNC fatte da PNCconf" +#: src/emc/usr_intf/pncconf/pncconf.glade:1293 +#: src/emc/usr_intf/pncconf/pncconf.glade:2482 +#: src/emc/usr_intf/pncconf/pncconf.glade:2916 +#: src/emc/usr_intf/pncconf/pncconf.glade:3797 +#: src/emc/usr_intf/pncconf/pncconf.glade:4678 +msgid " a)" +msgstr "a)" -#: src/emc/usr_intf/pncconf/pncconf.py:3725 -msgid "Spindle Motor/Encoder Configuration" -msgstr "Configurazione Motore/encoder Mandrino" +#: src/emc/usr_intf/pncconf/pncconf.glade:1305 +#: src/emc/usr_intf/pncconf/pncconf.glade:2385 +#: src/emc/usr_intf/pncconf/pncconf.glade:2867 +#: src/emc/usr_intf/pncconf/pncconf.glade:3748 +#: src/emc/usr_intf/pncconf/pncconf.glade:4629 +msgid "default" +msgstr "default" -#: src/emc/usr_intf/pncconf/pncconf.py:3727 -#, python-format -msgid "%s Axis Motor/Encoder Configuration" -msgstr "Configurazione Asse Motore/Encoder %s" +#: src/emc/usr_intf/pncconf/pncconf.glade:1336 +#: src/emc/usr_intf/pncconf/pncconf.glade:1476 +msgid "Jog Speed select A" +msgstr "Asse selezionato A " -#: src/emc/usr_intf/pncconf/pncconf.py:3756 -#, python-format -msgid "%s Parallel Port Setup" -msgstr "Setup Porta Parallela %s" +#: src/emc/usr_intf/pncconf/pncconf.glade:1348 +msgid "X +" +msgstr "X +" -#: src/emc/usr_intf/pncconf/pncconf.py:3780 -#, python-format -msgid "%s I/0 Setup" -msgstr "%s Setup I/O" +#: src/emc/usr_intf/pncconf/pncconf.glade:1354 +msgid "Y +" +msgstr "Y +" -#: src/emc/usr_intf/pncconf/pncconf.py:4001 -msgid "Quit PNCconfig and discard changes?" -msgstr "Esci da PNCconf e perdi modifiche?" +#: src/emc/usr_intf/pncconf/pncconf.glade:1364 +msgid "Z +" +msgstr "Z +" -#: src/emc/usr_intf/pncconf/pncconf.py:4042 -#: src/emc/usr_intf/pncconf/pncconf.glade:65849 -msgid "Help Pages" -msgstr "Pagine Aiuto" +#: src/emc/usr_intf/pncconf/pncconf.glade:1374 +msgid "X -" +msgstr "X -" -#: src/emc/usr_intf/pncconf/pncconf.py:4047 -msgid "Help page is unavailable\n" -msgstr "Pagina Aiuto non disponibile.\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1384 +msgid "Y -" +msgstr "Y -" -#: src/emc/usr_intf/pncconf/pncconf.py:4054 -msgid "" -"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " -"of external hardware is unavailable." -msgstr "" -"Si sta usando una versione di LinuxCNC in realtime simulato, quindi non è " -"possibile la prova/controllo di hardware esterno." +#: src/emc/usr_intf/pncconf/pncconf.glade:1396 +msgid "Z -" +msgstr "Z -" -#: src/emc/usr_intf/pncconf/pncconf.py:4059 -#, python-format -msgid "" -"You are using a realtime version of LinuxCNC but didn't load a realtime " -"kernel so testing / tuning of external hardware is unavailable.\n" -" This is probably because you updated the OS and it doesn't load the RTAI " -"kernel anymore\n" -" You are using the %(actual)s kernel instead of %(needed)s" -msgstr "" -"Si sta usando una versione realtime di LinuxCNC ma il kernel realtime non è " -"caricato pertanto prova/controllo di hardware esterno non è possibile.\n" -" Questo probabilmente accade perchè è stato aggiornato il SO e questo non " -"usa il kernel RTAI\n" -" Si sta usando il kernel %(actual)s invece del %(needed)s." +#: src/emc/usr_intf/pncconf/pncconf.glade:1500 +msgid "Digital Control" +msgstr "Controllo digitale " + +#: src/emc/usr_intf/pncconf/pncconf.glade:1593 +#: src/emc/usr_intf/gscreen/gscreen.glade:502 +msgid "A" +msgstr "A" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1603 +#: src/emc/usr_intf/gscreen/gscreen.glade:374 +msgid "Z" +msgstr "Z" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1613 +#: src/emc/usr_intf/pncconf/pncconf.glade:6134 +#: src/emc/usr_intf/pncconf/pncconf.glade:6458 +#: src/emc/usr_intf/pncconf/pncconf.glade:6860 +#: src/emc/usr_intf/pncconf/pncconf.glade:7235 +#: src/emc/usr_intf/gscreen/gscreen.glade:244 +msgid "Y" +msgstr "Y" -#: src/emc/usr_intf/pncconf/pncconf.py:4079 -#, python-format -msgid "" -"You are have no hostmot2 firmware downloaded in folder:\n" -"%s\n" -"PNCconf will use sample firmware data\n" -"live testing will not be possible" -msgstr "" -"Mancano firmware hostmot2 nella cartella:\n" -"%s\n" -"PNCconf usa dati dei sample firmware \n" -"test live non sono possibili" +#: src/emc/usr_intf/pncconf/pncconf.glade:1623 +msgid "X " +msgstr "X" -#: src/emc/usr_intf/pncconf/pncconf.py:4093 -msgid "LinuxCNC 'PNCconf' configuration files" -msgstr "File configurazioni 'PNCconf' LinuxCNC " +#: src/emc/usr_intf/pncconf/pncconf.glade:1631 +msgid "Analog Control" +msgstr "Controllo Analogico" -#: src/emc/usr_intf/pncconf/pncconf.py:4123 -msgid "" -"It seems data in this file is from too old of a version of PNCConf to " -"continue.\n" -"." -msgstr "" -"I dati presenti in questo file sono riferiti ad una versione troppo vecchia " -"di PNCConf per potere continuare.\n" -"." +#: src/emc/usr_intf/pncconf/pncconf.glade:1657 +#: src/emc/usr_intf/pncconf/pncconf.glade:1788 +#: src/emc/usr_intf/pncconf/pncconf.glade:2698 +#: src/emc/usr_intf/pncconf/pncconf.glade:3579 +#: src/emc/usr_intf/pncconf/pncconf.glade:4460 +#: src/emc/usr_intf/pncconf/pncconf.glade:5341 +#: src/emc/usr_intf/pncconf/pncconf.glade:64300 +msgid "Details" +msgstr "Dettagli" -#: src/emc/usr_intf/pncconf/pncconf.py:4130 -#: src/emc/usr_intf/pncconf/pncconf.py:4228 -#, python-format -msgid "Point and click configuration - %s.pncconf " -msgstr "Configurazione %s pncconf. Punta e Clicca" +#: src/emc/usr_intf/pncconf/pncconf.glade:1675 +msgid "USB Joystick Jogging " +msgstr "Movimento joystick USB" -#: src/emc/usr_intf/pncconf/pncconf.py:4250 -msgid "" -"You need to designate a parport and/or mesa I/O device before continuing." -msgstr "" -"E' necessario indicare una porta parallela e/o scheda I/O mesa prima di " -"continuare." +#: src/emc/usr_intf/pncconf/pncconf.glade:1719 +msgid "shared buttons for all axis" +msgstr "bottoni condivisi per ogni asse" -#: src/emc/usr_intf/pncconf/pncconf.py:4309 -msgid "" -"You Have choosen to re-edit the current config, so you can not go to the new/" -"modify page.\n" -" Quit and reload PNCconf if you wish to build a new config." -msgstr "" -"E' stato scelto di ri-editare la configurazione corrente, e quindi non è " -"possibile andare su pagina nuova/modifica.\n" -"Esci e ricarica PNCconf se vuoi ricostruire una nuova configurazione." +#: src/emc/usr_intf/pncconf/pncconf.glade:1732 +msgid "buttons for each axis" +msgstr "bottoni per ogni asse" -#: src/emc/usr_intf/pncconf/pncconf.py:4313 -msgid "" -"If you can not go to the new/modify page your current data will be lost.\n" -"Ok to reset data and start a new configuration?" -msgstr "" -"Se non è possibile andare sulla pagina nuovo/modifica i dati correnti " -"verranno persi.\n" -"Ok per cancellare i dati e iniziare una nuova configurazione?" +#: src/emc/usr_intf/pncconf/pncconf.glade:1806 +msgid "External Button Jogging" +msgstr "Bottoni Movimento Esterno" -#: src/emc/usr_intf/pncconf/pncconf.py:4594 -msgid "USB device Info Search" -msgstr "Ricerca Informazioni dispositivo USB" +#: src/emc/usr_intf/pncconf/pncconf.glade:1847 +msgid "Shared MPG / selectable axis" +msgstr "MPG condiviso / asse selezionabile" -#: src/emc/usr_intf/pncconf/pncconf.py:4608 -msgid "USB device page is unavailable\n" -msgstr "Pagina dispositivo USB non disponibile.\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1860 +msgid "Mpg per axis" +msgstr "Mpg per asse" -#: src/emc/usr_intf/pncconf/pncconf.py:4673 -msgid "Pin names are unavailable\n" -msgstr "Nomi pin non disponibili.\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1875 +msgid "selectable MPG increments" +msgstr "Selezione incrementi MPG" -#: src/emc/usr_intf/pncconf/pncconf.py:4695 -msgid "Device names are unavailable\n" -msgstr "Nomi dispositivi non disponibili.\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1940 +#: src/emc/usr_intf/pncconf/pncconf.glade:3379 +#: src/emc/usr_intf/pncconf/pncconf.glade:4260 +#: src/emc/usr_intf/pncconf/pncconf.glade:5141 +msgid " d)" +msgstr "d)" -#: src/emc/usr_intf/pncconf/pncconf.py:4698 -msgid "No Pncconf made device rules were found\n" -msgstr "Nessun Pncconf made device regola trovata\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1952 +#: src/emc/usr_intf/pncconf/pncconf.glade:3340 +#: src/emc/usr_intf/pncconf/pncconf.glade:4221 +#: src/emc/usr_intf/pncconf/pncconf.glade:5102 +msgid " abcd)" +msgstr " abcd)" -#: src/emc/usr_intf/pncconf/pncconf.py:4822 -msgid "" -"OK to replace existing glade panel ?\n" -"It will be renamed and added to 'backups' folder.\n" -" Clicking 'existing custom program' will aviod this warning. " -msgstr "" -"OK a sostituire il pannello glade esistente ?\n" -"Verra rinominato e aggiunto alla cartella 'backups' .\n" -" Cliccando 'existing custom program' eviterà questo avviso. " +#: src/emc/usr_intf/pncconf/pncconf.glade:1965 +#: src/emc/usr_intf/pncconf/pncconf.glade:3353 +#: src/emc/usr_intf/pncconf/pncconf.glade:4234 +#: src/emc/usr_intf/pncconf/pncconf.glade:5115 +msgid " bcd)" +msgstr " bcd)" -#: src/emc/usr_intf/pncconf/pncconf.py:4827 -msgid "" -"OK to replace existing custom pyvcp panel?\n" -"Existing pyvcp-panel.xml will be renamed and added to 'backups' folder\n" -"Clicking 'existing custom program' will aviod this warning. " -msgstr "" -"OK per sostituire il pannello pyvcp custom esistente?\n" -"pyvcp-panel.xml esistente sarà aggiunto alla cartella 'backups'.\n" -"Cliccando 'existing custom program' eviterà questo avviso." +#: src/emc/usr_intf/pncconf/pncconf.glade:1978 +#: src/emc/usr_intf/pncconf/pncconf.glade:3366 +#: src/emc/usr_intf/pncconf/pncconf.glade:4247 +#: src/emc/usr_intf/pncconf/pncconf.glade:5128 +msgid " acd)" +msgstr " acd)" -#: src/emc/usr_intf/pncconf/pncconf.py:5250 -msgid "" -"You need to configure the mesa0 page.\n" -" Choose the board type, firmware, component amounts and press 'Accept " -"component changes' button'" -msgstr "" -"Bisogna configurare la pagina mesa0.\n" -" Scegli il tipo di scheda, firmware, componenti e pressa il bottone 'Accetta " -"cambio componenti'" +#: src/emc/usr_intf/pncconf/pncconf.glade:1991 +#: src/emc/usr_intf/pncconf/pncconf.glade:3430 +#: src/emc/usr_intf/pncconf/pncconf.glade:4311 +#: src/emc/usr_intf/pncconf/pncconf.glade:5192 +msgid " cd)" +msgstr " cd)" -#: src/emc/usr_intf/pncconf/pncconf.py:5254 -msgid "" -"The chosen Mesa0 board is different from the current displayed.\n" -"please press 'Accept component changes' button'" -msgstr "" -"La scheda Mesa0 è diversa da quella correntemente visualizzata.\n" -"Prego pressare bottone 'Accetta cambi componenti' " +#: src/emc/usr_intf/pncconf/pncconf.glade:2004 +#: src/emc/usr_intf/pncconf/pncconf.glade:3404 +#: src/emc/usr_intf/pncconf/pncconf.glade:4285 +#: src/emc/usr_intf/pncconf/pncconf.glade:5166 +msgid " bd)" +msgstr " bd)" -#: src/emc/usr_intf/pncconf/pncconf.py:5297 -msgid "" -"You need to configure the mesa1 page.\n" -" Choose the board type, firmware, component amounts and press 'Accept " -"component changes' button'" -msgstr "" -"Bisogna configurare la pagina mesa1.\n" -" Scegli il tipo di scheda, firmware, componenti e pressa il bottone 'Accetta " -"cambio componenti'" +#: src/emc/usr_intf/pncconf/pncconf.glade:2017 +#: src/emc/usr_intf/pncconf/pncconf.glade:3391 +#: src/emc/usr_intf/pncconf/pncconf.glade:4272 +#: src/emc/usr_intf/pncconf/pncconf.glade:5153 +msgid " ad)" +msgstr " ad)" -#: src/emc/usr_intf/pncconf/pncconf.py:5301 -msgid "" -"The chosen Mesa1 board is different from the current displayed.\n" -"please press 'Accept component changes' button'" -msgstr "" -"La scheda Mesa1 è diversa da quella correntemente visualizzata.\n" -"Prego pressare bottone 'Accetta cambi componenti' " +#: src/emc/usr_intf/pncconf/pncconf.glade:2030 +#: src/emc/usr_intf/pncconf/pncconf.glade:2514 +#: src/emc/usr_intf/pncconf/pncconf.glade:3059 +#: src/emc/usr_intf/pncconf/pncconf.glade:3940 +#: src/emc/usr_intf/pncconf/pncconf.glade:4821 +msgid " abc)" +msgstr " abc)" -#: src/emc/usr_intf/pncconf/pncconf.py:5315 -msgid "" -"Do to technical reasons this test panel can be loaded only once without " -"reloading pncconf.You also will not be able to do any other testing untill " -"you reload pncconf and quite possibly open a terminal and type 'halrun -U' I " -"hesitate to even allow it's use but at times it's very useful.\n" -"Do you wish to continue the test?" -msgstr "" -"Per cause tecniche questo pannello di test può essere caricato solo una " -"volta senza ricaricare pncconf. Non è possibile fare altri test finchè non " -"si ricarica pncconf e possibilmente aprire un terminale e digitare 'halrun -" -"U'. Non è sempre possibile ma a volte è molto utile.\n" -"Vuoi continuare il test?" +#: src/emc/usr_intf/pncconf/pncconf.glade:2041 +#: src/emc/usr_intf/pncconf/pncconf.glade:3026 +#: src/emc/usr_intf/pncconf/pncconf.glade:3907 +#: src/emc/usr_intf/pncconf/pncconf.glade:4788 +msgid " c)" +msgstr " c)" -#: src/emc/usr_intf/pncconf/pncconf.py:6699 -msgid "First Parallel Port set for OUTPUT" -msgstr "Imposta Prima Porta Parallela per OUTPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:2207 +#: src/emc/usr_intf/pncconf/pncconf.glade:3049 +#: src/emc/usr_intf/pncconf/pncconf.glade:3930 +#: src/emc/usr_intf/pncconf/pncconf.glade:4811 +msgid " bc)" +msgstr " bc)" -#: src/emc/usr_intf/pncconf/pncconf.py:6701 -msgid "First Parallel Port set for INPUT" -msgstr "Imposta Prima Porta Parallela per INPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:2217 +#: src/emc/usr_intf/pncconf/pncconf.glade:3038 +#: src/emc/usr_intf/pncconf/pncconf.glade:3919 +#: src/emc/usr_intf/pncconf/pncconf.glade:4800 +msgid " ac)" +msgstr " ac)" -#: src/emc/usr_intf/pncconf/pncconf.py:6725 -msgid "Second Parallel Port set for OUTPUT" -msgstr "Imposta Seconda Porta Parallela per OUTPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:2504 +#: src/emc/usr_intf/pncconf/pncconf.glade:2938 +#: src/emc/usr_intf/pncconf/pncconf.glade:3819 +#: src/emc/usr_intf/pncconf/pncconf.glade:4700 +msgid " ab)" +msgstr " ab)" -#: src/emc/usr_intf/pncconf/pncconf.py:6727 -msgid "Second Parallel Port set for INPUT" -msgstr "Imposta Seconda Porta Parallela per INPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:2577 +msgid "ignore all inputs false" +msgstr "ignora tutti gli inputs falsi" -#: src/emc/usr_intf/pncconf/pncconf.py:6739 -msgid "Third Parallel Port set for OUTPUT" -msgstr "Imposta Terza Porta Parallela per OUTPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:2592 +msgid "use gray code" +msgstr "usa codice gray" -#: src/emc/usr_intf/pncconf/pncconf.py:6741 -msgid "Third Parallel Port set for INPUT" -msgstr "Imposta Terza Porta Parallela per INPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:2607 +#: src/emc/usr_intf/pncconf/pncconf.glade:3489 +#: src/emc/usr_intf/pncconf/pncconf.glade:4356 +#: src/emc/usr_intf/pncconf/pncconf.glade:5237 +msgid "use debounce" +msgstr "usa debounce" -#: src/emc/usr_intf/pncconf/pncconf.py:6866 -msgid "You can not have both steppers and pwm signals for spindle control\n" -msgstr "" -"Non è possibile avere sia segnali stepper che pwm per il controllo mandrino\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2658 +#: src/emc/usr_intf/pncconf/pncconf.glade:3453 +#: src/emc/usr_intf/pncconf/pncconf.glade:4334 +#: src/emc/usr_intf/pncconf/pncconf.glade:5215 +msgid "Mux options" +msgstr "Opzioni Mux" -#: src/emc/usr_intf/pncconf/pncconf.py:6870 -#, python-format -msgid "You forgot to designate a stepper or pwm signal for axis %s\n" -msgstr "" -"Ti sei dimenticato di definire un segnale stepper o pwm per l'asse %s\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2672 +msgid "increments" +msgstr "incrementi" -#: src/emc/usr_intf/pncconf/pncconf.py:6873 -#, python-format -msgid "You forgot to designate an encoder /resolver signal for axis %s servo\n" -msgstr "" -"Ti sei dimenticato di definire un segnale encoder/resolver per l'asse %s " -"servo \n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2716 +msgid "External MPG Jogging" +msgstr "Movimento MPG Esterno" -#: src/emc/usr_intf/pncconf/pncconf.py:6876 -#, python-format -msgid "You forgot to designate a pwm signal or stepper signal for axis %s\n" -msgstr "" -"Ti sei dimenticato di definire un segnale stepper o pwm per l'asse %s\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2747 +#: src/emc/usr_intf/pncconf/pncconf.glade:3628 +#: src/emc/usr_intf/pncconf/pncconf.glade:4509 +msgid "Use MPG " +msgstr "Usa MPG " -#: src/emc/usr_intf/pncconf/pncconf.py:6879 -#, python-format -msgid "You can not have both steppers and pwm signals for axis %s\n" -msgstr "Non è possibile avere sia segnali stepper che pwm per l'asse %s\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2760 +#: src/emc/usr_intf/pncconf/pncconf.glade:3641 +#: src/emc/usr_intf/pncconf/pncconf.glade:4522 +msgid "use switches" +msgstr "Usa Interruttori " -#: src/emc/usr_intf/pncconf/pncconf.py:6887 -msgid "Touchy require an external cycle start signal\n" -msgstr "Touchy richiede un segnale inizio ciclo esterno\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:3417 +#: src/emc/usr_intf/pncconf/pncconf.glade:4298 +#: src/emc/usr_intf/pncconf/pncconf.glade:5179 +msgid " abd)" +msgstr " abd)" -#: src/emc/usr_intf/pncconf/pncconf.py:6890 -msgid "Touchy require an external abort signal\n" -msgstr "Touchy richiede un segnale aborto esterno\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:3504 +#: src/emc/usr_intf/pncconf/pncconf.glade:4371 +#: src/emc/usr_intf/pncconf/pncconf.glade:5252 +msgid "use graycode" +msgstr "usa codice gray" -#: src/emc/usr_intf/pncconf/pncconf.py:6893 -msgid "Touchy require an external single-step signal\n" -msgstr "Touchy richiede un segnale passo singolo esterno\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:3519 +#: src/emc/usr_intf/pncconf/pncconf.glade:4386 +#: src/emc/usr_intf/pncconf/pncconf.glade:5267 +msgid "ignore all-inputs false" +msgstr "ignora tutti gli inputs falsi" -#: src/emc/usr_intf/pncconf/pncconf.py:6896 -msgid "" -"Touchy require an external multi handwheel MPG encoder signal on the mesa " -"page\n" -msgstr "" -"Touchy richiede un segnale encoder per un encoder multi handwheel MPG sulla " -"pagina mesa\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:3563 +#: src/emc/usr_intf/pncconf/pncconf.glade:4444 +#: src/emc/usr_intf/pncconf/pncconf.glade:5325 +msgid "Increments" +msgstr "Incrementi" -#: src/emc/usr_intf/pncconf/pncconf.py:6899 -msgid "" -"Touchy require 'external mpg jogging' to be selected on the external control " -"page\n" -msgstr "" -"Touchy richiede selezionato 'external mpg jogging' sulla pagina controlli " -"esterni\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:3597 +msgid "External Feed Override" +msgstr "Imposta Incr. Avanzamento" -#: src/emc/usr_intf/pncconf/pncconf.py:6902 -msgid "" -"Touchy require the external mpg to be in 'shared mpg' mode on the external " -"controls page\n" -msgstr "" -"Touchy richiede gli mpg esterni in modo 'shared-mpg' sulla pagina controlli " -"esterni\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:4478 +msgid "Max Velocity Override" +msgstr "Incr. avanzamento Max" -#: src/emc/usr_intf/pncconf/pncconf.py:6905 -msgid "" -"Touchy require selectable increments to be unchecked on the external " -"controls page\n" -msgstr "" -"Touchy richiede gli incrementi selezionabili non selezionati sulla pagina " -"controlli esterni\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:5359 +msgid "External Spindle Override" +msgstr ">b>Imposta Incr. Mandrino>/b>" -#: src/emc/usr_intf/pncconf/pncconf.py:6909 -msgid "" -"The 7i29 daughter board requires PWM type generators and a PWM base " -"frequency of 20 khz\n" -msgstr "" -"La scheda madre 7i29 richiede generatori tipo PWM e una frequenza di base " -"PWM di 20 Khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:5387 +msgid "GUI configuration" +msgstr "Configurazione GUI" + +#: src/emc/usr_intf/pncconf/pncconf.glade:5406 +msgid "Frontend" +msgstr "Frontend" + +#: src/emc/usr_intf/pncconf/pncconf.glade:5566 +msgid "Position_offset" +msgstr "Posizione_distanza" + +#: src/emc/usr_intf/pncconf/pncconf.glade:5573 +msgid "Position_feedback" +msgstr "Posizione_lettura" -#: src/emc/usr_intf/pncconf/pncconf.py:6912 -msgid "" -"The 7i30 daughter board requires PWM type generators and a PWM base " -"frequency of 20 khz\n" -msgstr "" -"La scheda madre 7i30 richiede generatori tipo PWM e una frequenza di base " -"PWM di 20 Khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:5584 +msgid "Max Spindle Override " +msgstr "Superamento Mandrino Max" -#: src/emc/usr_intf/pncconf/pncconf.py:6915 -msgid "" -"The 7i33 daughter board requires PDM type generators and a PDM base " -"frequency of 6 Mhz\n" -msgstr "" -"La scheda madre 7i33 richiede generatori tipo PDM e una frequenza di base " -"PDM di 6 Mhz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:5606 +msgid "Min Spindle Override" +msgstr "Superamento Mandrino min" + +#: src/emc/usr_intf/pncconf/pncconf.glade:5665 +msgid "Max Feed Override" +msgstr "Incr. avanzamento Max" -#: src/emc/usr_intf/pncconf/pncconf.py:6918 +#: src/emc/usr_intf/pncconf/pncconf.glade:5702 msgid "" -"The 7i40 daughter board requires PWM type generators and a PWM base " -"frequency of 50 khz\n" +"Machine\n" +"Relative\n" msgstr "" -"La scheda madre 7i40 richiede generatori tipo PWM e una frequenza di base " -"PWM di 50 khz\n" +"Macchina\n" +"Relativo\n" -#: src/emc/usr_intf/pncconf/pncconf.py:6921 +#: src/emc/usr_intf/pncconf/pncconf.glade:5714 msgid "" -"The 7i48 daughter board requires UDM type generators and a PWM base " -"frequency of 24 khz\n" +"Commanded\n" +"Actual" msgstr "" -"La scheda madre 7i48 richiede generatori tipo UDM e una frequenza di base " -"PWM di 24 khz\n" - -#: src/emc/usr_intf/pncconf/pncconf.py:7148 -msgid "Gearbox Reduction Ratio" -msgstr "Rapporto Riduzione Cambio" - -#: src/emc/usr_intf/pncconf/pncconf.py:7151 -msgid "Reduction Ratio" -msgstr "Rapporto Riduzione" - -#: src/emc/usr_intf/pncconf/pncconf.py:7154 -msgid "Leadscrew Pitch" -msgstr "Passo della vite:" - -#: src/emc/usr_intf/pncconf/pncconf.py:7157 -#: src/emc/usr_intf/pncconf/pncconf.glade:66327 -#: src/emc/usr_intf/pncconf/pncconf.glade:66622 -msgid "Leadscrew TPI" -msgstr "Passo della vite TPI" - -#: src/emc/usr_intf/pncconf/pncconf.py:7161 -#: src/emc/usr_intf/pncconf/pncconf.py:7162 -msgid "(" -msgstr "(" +"Comandato\n" +"Reale" -#: src/emc/usr_intf/pncconf/pncconf.py:7163 -#: src/emc/usr_intf/pncconf/pncconf.py:7173 -#: src/emc/usr_intf/pncconf/pncconf.py:7174 -#: src/emc/usr_intf/pncconf/pncconf.py:7175 -msgid " / min" -msgstr "/ min" +#: src/emc/usr_intf/pncconf/pncconf.glade:5729 +msgid "General GUI Defaults" +msgstr "GUI Generale Standard " -#: src/emc/usr_intf/pncconf/pncconf.py:7164 -msgid " / sec²" -msgstr "/ s²" +#: src/emc/usr_intf/pncconf/pncconf.glade:5811 +msgid "Default linear velocity " +msgstr "Velocita' lineare standard:" -#: src/emc/usr_intf/pncconf/pncconf.py:7167 -msgid " / Step" -msgstr "/ Passo" +#: src/emc/usr_intf/pncconf/pncconf.glade:5818 +msgid "Min linear velocity" +msgstr "Velocita' lineare min" -#: src/emc/usr_intf/pncconf/pncconf.py:7168 -msgid "Steps / " -msgstr "Passi /" +#: src/emc/usr_intf/pncconf/pncconf.glade:5829 +msgid "Max linear velocity" +msgstr "Velocita' lineare Max:" -#: src/emc/usr_intf/pncconf/pncconf.py:7170 -msgid " / encoder pulse" -msgstr " / impulso encoder" +#: src/emc/usr_intf/pncconf/pncconf.glade:5879 +#: src/emc/usr_intf/pncconf/pncconf.glade:6085 +#: src/emc/usr_intf/pncconf/pncconf.glade:6097 +msgid "mm / min" +msgstr "mm / min" -#: src/emc/usr_intf/pncconf/pncconf.py:7171 -msgid "Encoder pulses / " -msgstr "Impulsi encoder /" +#: src/emc/usr_intf/pncconf/pncconf.glade:5892 +msgid "Default Angular velocity " +msgstr "Velocità Angolare standard" -#: src/emc/usr_intf/pncconf/pncconf.py:7482 -msgid "Axis Scale Calculation" -msgstr "Calcolo Scala Axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:5926 +msgid "gedit" +msgstr "gedit" -#: src/emc/usr_intf/pncconf/pncconf.py:7785 -msgid "You need to designate an E-stop input pin for this ladder program." -msgstr "Bisogna designare un input pin di E-stop per questo programma ladder." +#: src/emc/usr_intf/pncconf/pncconf.glade:5939 +msgid "Min Angular velocity" +msgstr "Velocita' Angolare Min:" -#: src/emc/usr_intf/pncconf/pncconf.py:7797 -msgid "You need to designate a probe input pin for this ladder program." -msgstr "Bisogna designare un input pin di sonda per questo programma ladder." +#: src/emc/usr_intf/pncconf/pncconf.glade:5966 +msgid "Increments " +msgstr "Incrementi " -#: src/emc/usr_intf/pncconf/pncconf.py:7808 -msgid "" -"OK to replace existing custom ladder program?\n" -"Existing Custom.clp will be renamed custom_backup.clp.\n" -"Any existing file named -custom_backup.clp- will be lost.Selecting 'existing " -"ladder program' will avoid this warning" -msgstr "" -"OK per sostituire il programma ladder custom esistente?\n" -"Custom.clp esistente sarà rinominato custom_backup.clp.\n" -"Qualsiasi file esistente di nome -custom_backup.clp- verrà perso. Seleziona " -"'existing ladder program' per evitare questo avviso" +#: src/emc/usr_intf/pncconf/pncconf.glade:5977 +msgid "5mm 1mm .5mm .1mm .05mm .01mm .005mm" +msgstr "5mm 1mm .5mm .1mm .05mm .01mm .005mm" -#: src/emc/usr_intf/pncconf/pncconf.py:8019 -msgid "Do you wish to continue to edit this configuration." -msgstr "Vuoi cintinuare a modificare queste configurazioni." +#: src/emc/usr_intf/pncconf/pncconf.glade:5990 +msgid "Max Angular velocity" +msgstr "Velocita' Angolare Massima" -#: src/emc/usr_intf/pncconf/pncconf.py:8058 -msgid "PCI search page is unavailable\n" -msgstr "Pagina Ricerca PCI non disponibile.\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:6017 +msgid "Axis Geometry" +msgstr "Geometria Axis" -#: src/emc/usr_intf/pncconf/pncconf.py:8176 -msgid "" -"You specified there is an existing gladefile, But there is not one in the " -"machine-named folder.." -msgstr "Bisogna specificare un gladefile " +#: src/emc/usr_intf/pncconf/pncconf.glade:6028 +msgid "xyzabc" +msgstr "xyzabc" -#: src/emc/usr_intf/pncconf/pncconf.py:8495 -msgid "Servo tuning is not avaiable in PNCconf yet\n" -msgstr "Taratura servo non disponibile in PNCconf\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:6040 +#: src/emc/usr_intf/pncconf/pncconf.glade:6052 +#: src/emc/usr_intf/pncconf/pncconf.glade:6064 +msgid "Deg / min" +msgstr "Gradi / min" -#: src/emc/usr_intf/pncconf/pncconf.py:8500 -msgid "degrees" -msgstr "gradi" +#: src/emc/usr_intf/pncconf/pncconf.glade:6113 +#: src/emc/usr_intf/pncconf/pncconf.glade:6484 +#: src/emc/usr_intf/pncconf/pncconf.glade:6839 +#: src/emc/usr_intf/pncconf/pncconf.glade:7262 +msgid "size" +msgstr "dimensione" -#: src/emc/usr_intf/pncconf/pncconf.py:8501 -msgid "degrees / minute" -msgstr "gradi / minuto" +#: src/emc/usr_intf/pncconf/pncconf.glade:6122 +#: src/emc/usr_intf/pncconf/pncconf.glade:6471 +#: src/emc/usr_intf/pncconf/pncconf.glade:6848 +#: src/emc/usr_intf/pncconf/pncconf.glade:7248 +msgid "Position" +msgstr "Posizione" -#: src/emc/usr_intf/pncconf/pncconf.py:8502 -msgid "degrees / second²" -msgstr "gradi / s²" +#: src/emc/usr_intf/pncconf/pncconf.glade:6159 +#: src/emc/usr_intf/pncconf/pncconf.glade:6433 +#: src/emc/usr_intf/pncconf/pncconf.glade:6885 +#: src/emc/usr_intf/pncconf/pncconf.glade:7210 +#: src/emc/usr_intf/gscreen/gscreen.glade:116 +msgid "X" +msgstr "X" -#: src/emc/usr_intf/pncconf/pncconf.py:8504 -msgid "revolutions" -msgstr "giri" +#: src/emc/usr_intf/pncconf/pncconf.glade:6171 +#: src/emc/usr_intf/pncconf/pncconf.glade:6423 +#: src/emc/usr_intf/pncconf/pncconf.glade:6897 +#: src/emc/usr_intf/pncconf/pncconf.glade:7200 +#: src/emc/usr_intf/gscreen/gscreen.glade:1142 +msgid "W" +msgstr "W" -#: src/emc/usr_intf/pncconf/pncconf.py:8505 -msgid "rpm" -msgstr "giri/min" +#: src/emc/usr_intf/pncconf/pncconf.glade:6205 +#: src/emc/usr_intf/pncconf/pncconf.glade:6389 +#: src/emc/usr_intf/pncconf/pncconf.glade:6931 +#: src/emc/usr_intf/pncconf/pncconf.glade:7166 +msgid "H" +msgstr "H" -#: src/emc/usr_intf/pncconf/pncconf.py:8506 -msgid "revs / second²" -msgstr "giri / second²" +#: src/emc/usr_intf/pncconf/pncconf.glade:6227 +msgid "Force Axis to Maximize" +msgstr "Forza Axis a Massimizare" -#: src/emc/usr_intf/pncconf/pncconf.py:8509 -#: src/emc/usr_intf/pncconf/pncconf.glade:58295 -#: src/emc/usr_intf/pncconf/pncconf.glade:58479 -#: src/emc/usr_intf/pncconf/pncconf.glade:58576 -msgid "mm / minute" -msgstr "mm / minuto" +#: src/emc/usr_intf/pncconf/pncconf.glade:6249 +msgid "AXIS defaults" +msgstr "AXIS Standard" -#: src/emc/usr_intf/pncconf/pncconf.py:8510 -msgid "mm / second²" -msgstr "mm / s²" +#: src/emc/usr_intf/pncconf/pncconf.glade:6365 +msgid "Force Touchy to Maximize after positioning" +msgstr "Forza Touchy alla Massimizzazione dopo il posizionamento" -#: src/emc/usr_intf/pncconf/pncconf.py:8513 -msgid "inches / minute" -msgstr "pollici / minuto" +#: src/emc/usr_intf/pncconf/pncconf.glade:6501 +#: src/emc/usr_intf/pncconf/pncconf.glade:7333 +msgid "Follow System Theme\n" +msgstr "Segue Tema Sistema\n" -#: src/emc/usr_intf/pncconf/pncconf.py:8514 -msgid "inches / second²" -msgstr "pollici / s²" +#: src/emc/usr_intf/pncconf/pncconf.glade:6514 +#: src/emc/usr_intf/pncconf/pncconf.glade:7347 +msgid "GTK Theme" +msgstr "Tema GTK " -#: src/emc/usr_intf/pncconf/pncconf.py:8646 -#, python-format -msgid "%s Axis Tune" -msgstr "Regolazione Asse %s " +#: src/emc/usr_intf/pncconf/pncconf.glade:6540 +#: src/emc/usr_intf/gscreen/gscreen.glade:1857 +msgid "Absolute Text Color" +msgstr "Colore Testo Assoluto" -#: src/emc/usr_intf/pncconf/pncconf.py:8810 -msgid "" -" You must designate a ENCODER / RESOLVER signal and an ANALOG SPINDLE signal " -"for this axis test" -msgstr "" -" Bisogna indicare un segnale di ENCODER / RESOLVER e un ANALOG SPINDLE per " -"il test di quest'asse" +#: src/emc/usr_intf/pncconf/pncconf.glade:6603 +msgid "Absolute Textcolor" +msgstr "Textcolor Assoluto" -#: src/emc/usr_intf/pncconf/pncconf.py:8814 -msgid "" -" You must designate a ENCODER / RESOLVER signal and a PWM signal for this " -"axis test" -msgstr "" -" Bisogna indicare un segnale di ENCODER / RESOLVER e un segnale PWM per il " -"test di quest'asse" +#: src/emc/usr_intf/pncconf/pncconf.glade:6616 +msgid "Relative Textcolor" +msgstr "Textcolor Relativa" -#: src/emc/usr_intf/pncconf/pncconf.glade:8 -msgid "LinuxCNC Point And Click Configuration" -msgstr "Configurazione LinuxCNC Punta e Clicca " +#: src/emc/usr_intf/pncconf/pncconf.glade:6629 +msgid "DTG Textcolor" +msgstr "DTG Textcolor" -#: src/emc/usr_intf/pncconf/pncconf.glade:23 -msgid "LinuxCNC Configuration Wizard Beta 1 Version" -msgstr "Wizard Configurazione LinuxCNC Versione Beta 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:6642 +msgid "Error Textcolor" +msgstr "Errore Textcolor" -#: src/emc/usr_intf/pncconf/pncconf.glade:24 -msgid "" -"\tThis program creates configuration \n" -" files for \"Closed Loop Servo\" \n" -"\t \t and hardware stepper\n" -" \tmachines" -msgstr "" -"\tQuesto programma crea file configurazione \n" -" per \"Servo Anello Chiuso\" \n" -"\t \t ed hardware di macchine\n" -" \tstepper" +#: src/emc/usr_intf/pncconf/pncconf.glade:6677 +msgid "GUI Options" +msgstr "Opzioni GUI" -#: src/emc/usr_intf/pncconf/pncconf.glade:34 -msgid "Create or Edit" -msgstr "Crea o Modifica" +#: src/emc/usr_intf/pncconf/pncconf.glade:6708 +msgid "Virtual Control Panel" +msgstr "Pannello Controllo Virtuale" -#: src/emc/usr_intf/pncconf/pncconf.glade:52 -msgid "Create a new configuration" -msgstr "Crea una nuova configurazione" +#: src/emc/usr_intf/pncconf/pncconf.glade:6783 +msgid "XYZ buttons (uses Halui)" +msgstr "Bottoni XYZ (usa Halui)" -#: src/emc/usr_intf/pncconf/pncconf.glade:118 -msgid "Create a desktop shortcut (symlink) to configuration files." -msgstr "" -"Crea un collegamento (symlink) ai file di configurazione sulla scrivania." +#: src/emc/usr_intf/pncconf/pncconf.glade:6954 +msgid "Geometry Options" +msgstr "Opzioni Geometria" -#: src/emc/usr_intf/pncconf/pncconf.glade:135 -msgid "Create a desktop launcher to start LinuxCNC with this configuration." -msgstr "" -"Crea un link sulla scrivania per avviare LinuxCNC con questa configurazione." +#: src/emc/usr_intf/pncconf/pncconf.glade:7033 +msgid "Pyvcp Details" +msgstr "Dettagli Pyvcp" -#: src/emc/usr_intf/pncconf/pncconf.glade:214 -msgid "Machine Name:" -msgstr "Nome Macchina:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7105 +msgid "Sample display " +msgstr "Schermo campione" -#: src/emc/usr_intf/pncconf/pncconf.glade:281 -msgid "Axis configuration:" -msgstr "Configurazione Asse:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7272 +msgid "Standalone Panel" +msgstr "Pannello Statico" -#: src/emc/usr_intf/pncconf/pncconf.glade:316 -msgid "Machine units:" -msgstr "Unità Macchina:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7289 +msgid "Rightside Embeded" +msgstr "Integrato Rightside" -#: src/emc/usr_intf/pncconf/pncconf.glade:355 -msgid "Machine Basics" -msgstr "Caratteristiche Macchina" +#: src/emc/usr_intf/pncconf/pncconf.glade:7305 +msgid "Center Tab Embeded" +msgstr "Integrato Tab Centrale" -#: src/emc/usr_intf/pncconf/pncconf.glade:405 -msgid "Recommend servo period: 1000000" -msgstr "Periodo servo consigliato: 1000000" +#: src/emc/usr_intf/pncconf/pncconf.glade:7320 +msgid "Force Maximize" +msgstr "Forza Massimizzazione" -#: src/emc/usr_intf/pncconf/pncconf.glade:431 -msgid "Actual Servo Period: " -msgstr "Periodo Servo Corrente: " +#: src/emc/usr_intf/pncconf/pncconf.glade:7359 +msgid "Display Options" +msgstr "Opzioni Visualizzazione" -#: src/emc/usr_intf/pncconf/pncconf.glade:486 -msgid "" -" Test Base\n" -"Period Jitter " -msgstr "" -" Test Base\n" -"Periodo Jitter " +#: src/emc/usr_intf/pncconf/pncconf.glade:7409 +msgid "Max RPM" +msgstr "Max giri/min" -#: src/emc/usr_intf/pncconf/pncconf.glade:511 -msgid "Computer Response Time" -msgstr "Tempo Risposta Computer" +#: src/emc/usr_intf/pncconf/pncconf.glade:7422 +msgid "Spindle Speed Indicator" +msgstr "Indicatore Rotazione Mandrino" -#: src/emc/usr_intf/pncconf/pncconf.glade:553 -msgid "Mesa0 PCI / Parport Card:" -msgstr "Mesa0 PCI / Parport Card:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7434 +msgid "Spindle At Speed LED" +msgstr "LED Velocità Mandrino" -#: src/emc/usr_intf/pncconf/pncconf.glade:563 -msgid "Mesa1 PCI / Parport Card:" -msgstr "Mesa1 PCI / Parport Card:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7446 +msgid "Zero X Button" +msgstr "Tasto X Zero" -#: src/emc/usr_intf/pncconf/pncconf.glade:576 -msgid "First Parport Address:" -msgstr "Primo Indirizzo Porta Parallela:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7458 +msgid "Zero Y Button" +msgstr "Tasto Y Zero" -#: src/emc/usr_intf/pncconf/pncconf.glade:589 -msgid "Second Parport Address:" -msgstr "Secondo Indirizzo Porta Parallela:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7470 +msgid "Zero Z Button" +msgstr "Tasto Z Zero" -#: src/emc/usr_intf/pncconf/pncconf.glade:604 -msgid "Third Parport Address:" -msgstr "Terzo Indirizzo Porta Parallela:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7482 +msgid "Zero A Button" +msgstr "Tasto A Zero" -#: src/emc/usr_intf/pncconf/pncconf.glade:627 -#: src/emc/usr_intf/pncconf/pncconf.glade:635 -msgid "" -"5i20\n" -"5i23\n" -"5i22" -msgstr "" -"5i20\n" -"5i23\n" -"5i22" +#: src/emc/usr_intf/pncconf/pncconf.glade:7494 +msgid "Requires Classicladder touch-off program" +msgstr "Richiede programma touch-off Classicladder" -#: src/emc/usr_intf/pncconf/pncconf.glade:708 -#: src/emc/usr_intf/pncconf/pncconf.glade:720 -#: src/emc/usr_intf/pncconf/pncconf.glade:733 -msgid "" -"In\n" -"Out" -msgstr "" -"In\n" -"Out" +#: src/emc/usr_intf/pncconf/pncconf.glade:7495 +msgid "Auto Z Touch Off Button" +msgstr "Bottone Auto Z Touch Off " -#: src/emc/usr_intf/pncconf/pncconf.glade:796 -msgid "" -"Add-on PCI\n" -" Parport\n" -" Address \n" -" Search" -msgstr "" -"Aggiunta PCI\n" -" Porta parallela\n" -" Indirizzo \n" -" Ricerca" +#: src/emc/usr_intf/pncconf/pncconf.glade:7508 +msgid "Sample Options" +msgstr " Opzione Esempi " -#: src/emc/usr_intf/pncconf/pncconf.glade:821 -msgid "I/O Control Ports/ Boards" -msgstr "Porta Controllo I/O / Scheda" +#: src/emc/usr_intf/pncconf/pncconf.glade:7582 +msgid "Gladevcp Details" +msgstr "Dettagli Gladevcp" -#: src/emc/usr_intf/pncconf/pncconf.glade:870 -msgid "Axis" -msgstr "Asse " +#: src/emc/usr_intf/pncconf/pncconf.glade:7605 +msgid "Include custom GladeVCP GUI panel" +msgstr "Includi Panello GUI GladeVCP personalizzato" -#: src/emc/usr_intf/pncconf/pncconf.glade:885 -msgid "TKLinuxCNC" -msgstr "TKLinuxCNC" +#: src/emc/usr_intf/pncconf/pncconf.glade:7676 +msgid "Force individual manual homing" +msgstr "Forza azzeramento individuale manuale" -#: src/emc/usr_intf/pncconf/pncconf.glade:899 -msgid "Mini" -msgstr "Mini" +#: src/emc/usr_intf/pncconf/pncconf.glade:7689 +msgid "Random position toolchanger " +msgstr "Posizione cambioutensile random" -#: src/emc/usr_intf/pncconf/pncconf.glade:913 -#: src/emc/usr_intf/pncconf/pncconf.glade:6648 -msgid "Touchy" -msgstr "Touchy" +#: src/emc/usr_intf/pncconf/pncconf.glade:7704 +msgid "Require homing before MDI / Running" +msgstr "Richiede azzeramento prima di MDI / Lavorazione" -#: src/emc/usr_intf/pncconf/pncconf.glade:930 -msgid "GUI frontend list" -msgstr "Lista Gui Frontend" +#: src/emc/usr_intf/pncconf/pncconf.glade:7713 +msgid "Popup Toolchange Prompt" +msgstr "Pannello Popup Cambio Utensile" -#: src/emc/usr_intf/pncconf/pncconf.glade:965 -msgid "External Controls" -msgstr "Controlli Esterni" +#: src/emc/usr_intf/pncconf/pncconf.glade:7727 +msgid "Leave spindle on during tool change" +msgstr "Lascia mandrino acceso durante cambio utensile" -#: src/emc/usr_intf/pncconf/pncconf.glade:1006 -msgid "Add device rule" -msgstr "Aggiungi regola device" +#: src/emc/usr_intf/pncconf/pncconf.glade:7740 +msgid "Move spindle up before tool change" +msgstr "Sposta mandrino in alto prima del cambio utensile" -#: src/emc/usr_intf/pncconf/pncconf.glade:1019 -msgid "Test device" -msgstr "Test dispositivi" +#: src/emc/usr_intf/pncconf/pncconf.glade:7753 +msgid "Restore joint position after shutdown" +msgstr "Riprende posizione asse dopo chiusura" -#: src/emc/usr_intf/pncconf/pncconf.glade:1033 -msgid "Search for device rules" -msgstr "Cerca nelle regole device" +#: src/emc/usr_intf/pncconf/pncconf.glade:7769 +msgid "Defaults and Options" +msgstr "Standard e Opzioni" -#: src/emc/usr_intf/pncconf/pncconf.glade:1054 -msgid "Device Name:" -msgstr "Nome dispositivo:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7797 +msgid "Mesa0 I/O setup\n" +msgstr "Mesa0 I/O setup\n" -#: src/emc/usr_intf/pncconf/pncconf.glade:1117 -#: src/emc/usr_intf/pncconf/pncconf.glade:1255 -msgid "Jog Speed select A" -msgstr "Asse selezionato A " +#: src/emc/usr_intf/pncconf/pncconf.glade:7817 +msgid "" +"Click on each page tab to configure signal names for each connector port.\n" +"\n" +"Press the button to make the tabbed pages\n" +"accept the changes.\n" +msgstr "" +"Clicca su ogni pagina per configurare i nomi dei segnali per ogni porta del " +"connettore.\n" +"\n" +"Pressa il bottone per permettere alle varie pagine\n" +"di accettare le modifiche.\n" -#: src/emc/usr_intf/pncconf/pncconf.glade:1195 -msgid "Z -" -msgstr "Z -" +#: src/emc/usr_intf/pncconf/pncconf.glade:8001 +msgid "3PWM base frequency:" +msgstr "Frequenza base 3PWM:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1207 -msgid "Y -" -msgstr "Y -" +#: src/emc/usr_intf/pncconf/pncconf.glade:8036 +msgid "Mesa parport address:" +msgstr "Indirizzo Porta Parallela Mesa:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1219 -msgid "X -" -msgstr "X -" +#: src/emc/usr_intf/pncconf/pncconf.glade:8047 +msgid "Firmware:" +msgstr "Firmware:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1229 -msgid "Z +" -msgstr "Z +" +#: src/emc/usr_intf/pncconf/pncconf.glade:8069 +msgid "SVST8_4" +msgstr "SVST8_4" -#: src/emc/usr_intf/pncconf/pncconf.glade:1239 -msgid "Y +" -msgstr "Y +" +#: src/emc/usr_intf/pncconf/pncconf.glade:8094 +msgid "Num of 3 pwm generators: " +msgstr "Num di 3 generatori pwm:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1249 -msgid "X +" -msgstr "X +" +#: src/emc/usr_intf/pncconf/pncconf.glade:8128 +msgid "Total number of pins:" +msgstr "Numero totale di pin:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1289 -#: src/emc/usr_intf/pncconf/pncconf.glade:2208 -#: src/emc/usr_intf/pncconf/pncconf.glade:3496 -#: src/emc/usr_intf/pncconf/pncconf.glade:4377 -#: src/emc/usr_intf/pncconf/pncconf.glade:5258 -msgid "default" -msgstr "default" +#: src/emc/usr_intf/pncconf/pncconf.glade:8153 +msgid "" +"Accept components\n" +" Changes" +msgstr "" +"Accetta componenti\n" +" Cambi" -#: src/emc/usr_intf/pncconf/pncconf.glade:1299 -#: src/emc/usr_intf/pncconf/pncconf.glade:2107 -#: src/emc/usr_intf/pncconf/pncconf.glade:3443 -#: src/emc/usr_intf/pncconf/pncconf.glade:4324 -#: src/emc/usr_intf/pncconf/pncconf.glade:5205 -msgid " a)" -msgstr "a)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8168 +msgid "PWM base frequency:" +msgstr "Frequenza base PWM:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1311 -#: src/emc/usr_intf/pncconf/pncconf.glade:2096 -#: src/emc/usr_intf/pncconf/pncconf.glade:3432 -#: src/emc/usr_intf/pncconf/pncconf.glade:4313 -#: src/emc/usr_intf/pncconf/pncconf.glade:5194 -msgid " b)" -msgstr "b)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8179 +msgid "PDM base frequency:" +msgstr "Frequenza base PDM:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1322 -msgid " ab)" -msgstr "ab)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8190 +msgid "Watchdog timeout:" +msgstr "Intervallo attesa:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1348 -#: src/emc/usr_intf/pncconf/pncconf.glade:1401 -#: src/emc/usr_intf/pncconf/pncconf.glade:1413 -#: src/emc/usr_intf/pncconf/pncconf.glade:1423 -#: src/emc/usr_intf/pncconf/pncconf.glade:1751 -msgid "mm/min " -msgstr "mm/min " +#: src/emc/usr_intf/pncconf/pncconf.glade:8307 +msgid "Num of encoders:" +msgstr "Num di encoder:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1456 -msgid "A -" -msgstr "A -" +#: src/emc/usr_intf/pncconf/pncconf.glade:8318 +msgid "Num of pwm generators:" +msgstr "Num di generatori pwm:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1468 -msgid "A +" -msgstr "A +" +#: src/emc/usr_intf/pncconf/pncconf.glade:8329 +msgid "Num of step generators: " +msgstr "Num di generatori passi:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1492 -msgid "Digital Control" -msgstr "Controllo digitale " +#: src/emc/usr_intf/pncconf/pncconf.glade:8340 +msgid "Board name" +msgstr "Nome scheda" -#: src/emc/usr_intf/pncconf/pncconf.glade:1539 -msgid "X " -msgstr "X" +#: src/emc/usr_intf/pncconf/pncconf.glade:8346 +msgid "Num of Smart Serial Ports:" +msgstr "Num di porte Seriali Smart:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1545 -#: src/emc/usr_intf/pncconf/pncconf.glade:5901 -#: src/emc/usr_intf/pncconf/pncconf.glade:6531 -#: src/emc/usr_intf/pncconf/pncconf.glade:6910 -#: src/emc/usr_intf/pncconf/pncconf.glade:7257 -msgid "Y" -msgstr "Y" +#: src/emc/usr_intf/pncconf/pncconf.glade:8393 +msgid "7i29 daughter board" +msgstr "scheda madre 7i29 " -#: src/emc/usr_intf/pncconf/pncconf.glade:1555 -msgid "Z" -msgstr "Z" +#: src/emc/usr_intf/pncconf/pncconf.glade:8402 +msgid "7i30 daughter board" +msgstr "scheda madre 7i30 " -#: src/emc/usr_intf/pncconf/pncconf.glade:1565 -msgid "A" -msgstr "A" +#: src/emc/usr_intf/pncconf/pncconf.glade:8414 +msgid "7i33 daughter board" +msgstr "scheda madre 7i33" -#: src/emc/usr_intf/pncconf/pncconf.glade:1623 -msgid "Analog Control" -msgstr "Controllo Analogico" +#: src/emc/usr_intf/pncconf/pncconf.glade:8426 +msgid "7i40 daughter board" +msgstr "scheda madre 7i40 " -#: src/emc/usr_intf/pncconf/pncconf.glade:1649 -#: src/emc/usr_intf/pncconf/pncconf.glade:1780 -#: src/emc/usr_intf/pncconf/pncconf.glade:2690 -#: src/emc/usr_intf/pncconf/pncconf.glade:3571 -#: src/emc/usr_intf/pncconf/pncconf.glade:4452 -#: src/emc/usr_intf/pncconf/pncconf.glade:5333 -#: src/emc/usr_intf/pncconf/pncconf.glade:57371 -msgid "Details" -msgstr "Dettagli" +#: src/emc/usr_intf/pncconf/pncconf.glade:8438 +msgid "7i48 daughter board" +msgstr "scheda madre 7i48" -#: src/emc/usr_intf/pncconf/pncconf.glade:1667 -msgid "USB Joystick Jogging " -msgstr "Movimento joystick USB" +#: src/emc/usr_intf/pncconf/pncconf.glade:8453 +msgid "Sanity Checks" +msgstr "Controlli Sicurezza" -#: src/emc/usr_intf/pncconf/pncconf.glade:1711 -msgid "shared buttons for all axis" -msgstr "bottoni condivisi per ogni asse" +#: src/emc/usr_intf/pncconf/pncconf.glade:8482 +msgid "Num of channels: " +msgstr "Numero di Canali:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1724 -msgid "buttons for each axis" -msgstr "bottoni per ogni asse" +#: src/emc/usr_intf/pncconf/pncconf.glade:8494 +#, fuzzy +msgid "Num of resolvers:" +msgstr "Num di encoder:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1798 -msgid "External Button Jogging" -msgstr "Bottoni Movimento Esterno" +#: src/emc/usr_intf/pncconf/pncconf.glade:8528 +msgid "" +"Configuration\n" +" Page" +msgstr "" +"Configurazione\n" +" Pagina" + +#: src/emc/usr_intf/pncconf/pncconf.glade:8721 +#: src/emc/usr_intf/pncconf/pncconf.glade:8773 +#: src/emc/usr_intf/pncconf/pncconf.glade:9093 +#: src/emc/usr_intf/pncconf/pncconf.glade:9145 +#: src/emc/usr_intf/pncconf/pncconf.glade:9197 +#: src/emc/usr_intf/pncconf/pncconf.glade:9249 +#: src/emc/usr_intf/pncconf/pncconf.glade:9301 +#: src/emc/usr_intf/pncconf/pncconf.glade:9353 +#: src/emc/usr_intf/pncconf/pncconf.glade:9405 +#: src/emc/usr_intf/pncconf/pncconf.glade:9457 +#: src/emc/usr_intf/pncconf/pncconf.glade:9509 +#: src/emc/usr_intf/pncconf/pncconf.glade:9561 +#: src/emc/usr_intf/pncconf/pncconf.glade:10400 +#: src/emc/usr_intf/pncconf/pncconf.glade:10453 +#: src/emc/usr_intf/pncconf/pncconf.glade:10505 +#: src/emc/usr_intf/pncconf/pncconf.glade:10557 +#: src/emc/usr_intf/pncconf/pncconf.glade:11335 +#: src/emc/usr_intf/pncconf/pncconf.glade:11387 +#: src/emc/usr_intf/pncconf/pncconf.glade:12047 +#: src/emc/usr_intf/pncconf/pncconf.glade:12099 +#: src/emc/usr_intf/pncconf/pncconf.glade:12151 +#: src/emc/usr_intf/pncconf/pncconf.glade:12203 +#: src/emc/usr_intf/pncconf/pncconf.glade:13042 +#: src/emc/usr_intf/pncconf/pncconf.glade:13094 +#: src/emc/usr_intf/pncconf/pncconf.glade:13146 +#: src/emc/usr_intf/pncconf/pncconf.glade:13198 +#: src/emc/usr_intf/pncconf/pncconf.glade:13250 +#: src/emc/usr_intf/pncconf/pncconf.glade:13302 +#: src/emc/usr_intf/pncconf/pncconf.glade:13354 +#: src/emc/usr_intf/pncconf/pncconf.glade:13406 +#: src/emc/usr_intf/pncconf/pncconf.glade:13458 +#: src/emc/usr_intf/pncconf/pncconf.glade:13510 +#: src/emc/usr_intf/pncconf/pncconf.glade:14556 +#: src/emc/usr_intf/pncconf/pncconf.glade:14608 +#: src/emc/usr_intf/pncconf/pncconf.glade:14660 +#: src/emc/usr_intf/pncconf/pncconf.glade:14712 +#: src/emc/usr_intf/pncconf/pncconf.glade:15539 +#: src/emc/usr_intf/pncconf/pncconf.glade:15591 +#: src/emc/usr_intf/pncconf/pncconf.glade:15643 +#: src/emc/usr_intf/pncconf/pncconf.glade:15695 +#: src/emc/usr_intf/pncconf/pncconf.glade:15747 +#: src/emc/usr_intf/pncconf/pncconf.glade:15799 +#: src/emc/usr_intf/pncconf/pncconf.glade:15851 +#: src/emc/usr_intf/pncconf/pncconf.glade:15903 +#: src/emc/usr_intf/pncconf/pncconf.glade:15955 +#: src/emc/usr_intf/pncconf/pncconf.glade:16007 +#: src/emc/usr_intf/pncconf/pncconf.glade:16059 +#: src/emc/usr_intf/pncconf/pncconf.glade:16111 +#: src/emc/usr_intf/pncconf/pncconf.glade:16540 +#: src/emc/usr_intf/pncconf/pncconf.glade:16592 +#: src/emc/usr_intf/pncconf/pncconf.glade:17253 +#: src/emc/usr_intf/pncconf/pncconf.glade:17305 +#: src/emc/usr_intf/pncconf/pncconf.glade:17357 +#: src/emc/usr_intf/pncconf/pncconf.glade:18196 +#: src/emc/usr_intf/pncconf/pncconf.glade:18248 +#: src/emc/usr_intf/pncconf/pncconf.glade:18300 +#: src/emc/usr_intf/pncconf/pncconf.glade:18352 +#: src/emc/usr_intf/pncconf/pncconf.glade:18404 +#: src/emc/usr_intf/pncconf/pncconf.glade:18456 +#: src/emc/usr_intf/pncconf/pncconf.glade:18508 +#: src/emc/usr_intf/pncconf/pncconf.glade:18560 +#: src/emc/usr_intf/pncconf/pncconf.glade:18612 +#: src/emc/usr_intf/pncconf/pncconf.glade:18664 +#: src/emc/usr_intf/pncconf/pncconf.glade:18716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26612 +#: src/emc/usr_intf/pncconf/pncconf.glade:26664 +#: src/emc/usr_intf/pncconf/pncconf.glade:26716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26768 +#: src/emc/usr_intf/pncconf/pncconf.glade:26820 +#: src/emc/usr_intf/pncconf/pncconf.glade:26872 +#: src/emc/usr_intf/pncconf/pncconf.glade:26924 +#: src/emc/usr_intf/pncconf/pncconf.glade:26976 +#: src/emc/usr_intf/pncconf/pncconf.glade:27028 +#: src/emc/usr_intf/pncconf/pncconf.glade:27080 +#: src/emc/usr_intf/pncconf/pncconf.glade:27132 +#: src/emc/usr_intf/pncconf/pncconf.glade:27184 +#: src/emc/usr_intf/pncconf/pncconf.glade:28011 +#: src/emc/usr_intf/pncconf/pncconf.glade:28063 +#: src/emc/usr_intf/pncconf/pncconf.glade:28115 +#: src/emc/usr_intf/pncconf/pncconf.glade:28167 +#: src/emc/usr_intf/pncconf/pncconf.glade:29507 +#: src/emc/usr_intf/pncconf/pncconf.glade:29559 +#: src/emc/usr_intf/pncconf/pncconf.glade:29611 +#: src/emc/usr_intf/pncconf/pncconf.glade:29663 +#: src/emc/usr_intf/pncconf/pncconf.glade:30490 +#: src/emc/usr_intf/pncconf/pncconf.glade:30542 +#: src/emc/usr_intf/pncconf/pncconf.glade:30594 +#: src/emc/usr_intf/pncconf/pncconf.glade:30646 +#: src/emc/usr_intf/pncconf/pncconf.glade:30698 +#: src/emc/usr_intf/pncconf/pncconf.glade:30750 +#: src/emc/usr_intf/pncconf/pncconf.glade:30802 +#: src/emc/usr_intf/pncconf/pncconf.glade:30854 +#: src/emc/usr_intf/pncconf/pncconf.glade:30906 +#: src/emc/usr_intf/pncconf/pncconf.glade:30958 +#: src/emc/usr_intf/pncconf/pncconf.glade:31010 +#: src/emc/usr_intf/pncconf/pncconf.glade:31062 +#: src/emc/usr_intf/pncconf/pncconf.glade:31878 +#: src/emc/usr_intf/pncconf/pncconf.glade:31930 +#: src/emc/usr_intf/pncconf/pncconf.glade:31982 +#: src/emc/usr_intf/pncconf/pncconf.glade:32034 +#: src/emc/usr_intf/pncconf/pncconf.glade:32086 +#: src/emc/usr_intf/pncconf/pncconf.glade:32138 +#: src/emc/usr_intf/pncconf/pncconf.glade:32190 +#: src/emc/usr_intf/pncconf/pncconf.glade:32242 +#: src/emc/usr_intf/pncconf/pncconf.glade:32294 +#: src/emc/usr_intf/pncconf/pncconf.glade:32346 +#: src/emc/usr_intf/pncconf/pncconf.glade:32398 +#: src/emc/usr_intf/pncconf/pncconf.glade:32450 +#: src/emc/usr_intf/pncconf/pncconf.glade:33852 +#: src/emc/usr_intf/pncconf/pncconf.glade:33904 +#: src/emc/usr_intf/pncconf/pncconf.glade:33956 +#: src/emc/usr_intf/pncconf/pncconf.glade:34008 +#: src/emc/usr_intf/pncconf/pncconf.glade:34835 +#: src/emc/usr_intf/pncconf/pncconf.glade:34887 +#: src/emc/usr_intf/pncconf/pncconf.glade:34939 +#: src/emc/usr_intf/pncconf/pncconf.glade:34991 +#: src/emc/usr_intf/pncconf/pncconf.glade:35043 +#: src/emc/usr_intf/pncconf/pncconf.glade:35095 +#: src/emc/usr_intf/pncconf/pncconf.glade:35147 +#: src/emc/usr_intf/pncconf/pncconf.glade:35199 +#: src/emc/usr_intf/pncconf/pncconf.glade:35251 +#: src/emc/usr_intf/pncconf/pncconf.glade:35303 +#: src/emc/usr_intf/pncconf/pncconf.glade:35355 +#: src/emc/usr_intf/pncconf/pncconf.glade:35407 +#: src/emc/usr_intf/pncconf/pncconf.glade:36096 +#: src/emc/usr_intf/pncconf/pncconf.glade:36148 +#: src/emc/usr_intf/pncconf/pncconf.glade:36200 +#: src/emc/usr_intf/pncconf/pncconf.glade:36252 +#: src/emc/usr_intf/pncconf/pncconf.glade:36304 +#: src/emc/usr_intf/pncconf/pncconf.glade:36356 +#: src/emc/usr_intf/pncconf/pncconf.glade:36408 +#: src/emc/usr_intf/pncconf/pncconf.glade:36460 +#: src/emc/usr_intf/pncconf/pncconf.glade:36512 +#: src/emc/usr_intf/pncconf/pncconf.glade:36564 +#: src/emc/usr_intf/pncconf/pncconf.glade:36616 +#: src/emc/usr_intf/pncconf/pncconf.glade:36668 +#: src/emc/usr_intf/pncconf/pncconf.glade:37495 +#: src/emc/usr_intf/pncconf/pncconf.glade:37547 +#: src/emc/usr_intf/pncconf/pncconf.glade:37599 +#: src/emc/usr_intf/pncconf/pncconf.glade:37651 +#: src/emc/usr_intf/pncconf/pncconf.glade:39168 +#: src/emc/usr_intf/pncconf/pncconf.glade:39220 +#: src/emc/usr_intf/pncconf/pncconf.glade:39272 +#: src/emc/usr_intf/pncconf/pncconf.glade:39324 +#: src/emc/usr_intf/pncconf/pncconf.glade:39376 +#: src/emc/usr_intf/pncconf/pncconf.glade:39428 +#: src/emc/usr_intf/pncconf/pncconf.glade:39480 +#: src/emc/usr_intf/pncconf/pncconf.glade:39532 +#: src/emc/usr_intf/pncconf/pncconf.glade:39584 +#: src/emc/usr_intf/pncconf/pncconf.glade:39636 +#: src/emc/usr_intf/pncconf/pncconf.glade:39688 +#: src/emc/usr_intf/pncconf/pncconf.glade:39740 +#: src/emc/usr_intf/pncconf/pncconf.glade:40456 +#: src/emc/usr_intf/pncconf/pncconf.glade:40508 +#: src/emc/usr_intf/pncconf/pncconf.glade:40560 +#: src/emc/usr_intf/pncconf/pncconf.glade:40612 +#: src/emc/usr_intf/pncconf/pncconf.glade:40664 +#: src/emc/usr_intf/pncconf/pncconf.glade:40716 +#: src/emc/usr_intf/pncconf/pncconf.glade:40768 +#: src/emc/usr_intf/pncconf/pncconf.glade:40820 +#: src/emc/usr_intf/pncconf/pncconf.glade:40872 +#: src/emc/usr_intf/pncconf/pncconf.glade:40924 +#: src/emc/usr_intf/pncconf/pncconf.glade:40976 +#: src/emc/usr_intf/pncconf/pncconf.glade:41028 +#: src/emc/usr_intf/pncconf/pncconf.glade:41855 +#: src/emc/usr_intf/pncconf/pncconf.glade:41907 +#: src/emc/usr_intf/pncconf/pncconf.glade:41959 +#: src/emc/usr_intf/pncconf/pncconf.glade:42011 +#: src/emc/usr_intf/pncconf/pncconf.glade:43351 +#: src/emc/usr_intf/pncconf/pncconf.glade:43403 +#: src/emc/usr_intf/pncconf/pncconf.glade:43455 +#: src/emc/usr_intf/pncconf/pncconf.glade:43507 +#: src/emc/usr_intf/pncconf/pncconf.glade:44334 +#: src/emc/usr_intf/pncconf/pncconf.glade:44386 +#: src/emc/usr_intf/pncconf/pncconf.glade:44438 +#: src/emc/usr_intf/pncconf/pncconf.glade:44490 +#: src/emc/usr_intf/pncconf/pncconf.glade:44542 +#: src/emc/usr_intf/pncconf/pncconf.glade:44594 +#: src/emc/usr_intf/pncconf/pncconf.glade:44646 +#: src/emc/usr_intf/pncconf/pncconf.glade:44698 +#: src/emc/usr_intf/pncconf/pncconf.glade:44750 +#: src/emc/usr_intf/pncconf/pncconf.glade:44802 +#: src/emc/usr_intf/pncconf/pncconf.glade:44854 +#: src/emc/usr_intf/pncconf/pncconf.glade:44906 +#: src/emc/usr_intf/pncconf/pncconf.glade:45711 +#: src/emc/usr_intf/pncconf/pncconf.glade:45763 +#: src/emc/usr_intf/pncconf/pncconf.glade:45815 +#: src/emc/usr_intf/pncconf/pncconf.glade:45867 +#: src/emc/usr_intf/pncconf/pncconf.glade:45919 +#: src/emc/usr_intf/pncconf/pncconf.glade:45971 +#: src/emc/usr_intf/pncconf/pncconf.glade:46023 +#: src/emc/usr_intf/pncconf/pncconf.glade:46075 +#: src/emc/usr_intf/pncconf/pncconf.glade:46127 +#: src/emc/usr_intf/pncconf/pncconf.glade:46179 +#: src/emc/usr_intf/pncconf/pncconf.glade:46231 +#: src/emc/usr_intf/pncconf/pncconf.glade:46283 +#: src/emc/usr_intf/pncconf/pncconf.glade:47379 +#: src/emc/usr_intf/pncconf/pncconf.glade:47431 +#: src/emc/usr_intf/pncconf/pncconf.glade:47483 +#: src/emc/usr_intf/pncconf/pncconf.glade:47535 +#: src/emc/usr_intf/pncconf/pncconf.glade:47587 +#: src/emc/usr_intf/pncconf/pncconf.glade:47639 +#: src/emc/usr_intf/pncconf/pncconf.glade:47691 +#: src/emc/usr_intf/pncconf/pncconf.glade:47743 +#: src/emc/usr_intf/pncconf/pncconf.glade:47795 +#: src/emc/usr_intf/pncconf/pncconf.glade:47847 +#: src/emc/usr_intf/pncconf/pncconf.glade:47899 +#: src/emc/usr_intf/pncconf/pncconf.glade:47951 +#: src/emc/usr_intf/pncconf/pncconf.glade:48778 +#: src/emc/usr_intf/pncconf/pncconf.glade:48830 +#: src/emc/usr_intf/pncconf/pncconf.glade:48882 +#: src/emc/usr_intf/pncconf/pncconf.glade:48934 +#: src/emc/usr_intf/pncconf/pncconf.glade:50274 +#: src/emc/usr_intf/pncconf/pncconf.glade:50326 +#: src/emc/usr_intf/pncconf/pncconf.glade:50378 +#: src/emc/usr_intf/pncconf/pncconf.glade:50430 +#: src/emc/usr_intf/pncconf/pncconf.glade:51257 +#: src/emc/usr_intf/pncconf/pncconf.glade:51309 +#: src/emc/usr_intf/pncconf/pncconf.glade:51361 +#: src/emc/usr_intf/pncconf/pncconf.glade:51413 +#: src/emc/usr_intf/pncconf/pncconf.glade:51465 +#: src/emc/usr_intf/pncconf/pncconf.glade:51517 +#: src/emc/usr_intf/pncconf/pncconf.glade:51569 +#: src/emc/usr_intf/pncconf/pncconf.glade:51621 +#: src/emc/usr_intf/pncconf/pncconf.glade:51673 +#: src/emc/usr_intf/pncconf/pncconf.glade:51725 +#: src/emc/usr_intf/pncconf/pncconf.glade:51777 +#: src/emc/usr_intf/pncconf/pncconf.glade:51829 +#: src/emc/usr_intf/pncconf/pncconf.glade:52634 +#: src/emc/usr_intf/pncconf/pncconf.glade:52686 +#: src/emc/usr_intf/pncconf/pncconf.glade:52738 +#: src/emc/usr_intf/pncconf/pncconf.glade:52790 +#: src/emc/usr_intf/pncconf/pncconf.glade:52842 +#: src/emc/usr_intf/pncconf/pncconf.glade:52894 +#: src/emc/usr_intf/pncconf/pncconf.glade:52946 +#: src/emc/usr_intf/pncconf/pncconf.glade:52998 +#: src/emc/usr_intf/pncconf/pncconf.glade:53050 +#: src/emc/usr_intf/pncconf/pncconf.glade:53102 +#: src/emc/usr_intf/pncconf/pncconf.glade:53154 +#: src/emc/usr_intf/pncconf/pncconf.glade:53206 +#: src/emc/usr_intf/pncconf/pncconf.glade:54302 +#: src/emc/usr_intf/pncconf/pncconf.glade:54354 +#: src/emc/usr_intf/pncconf/pncconf.glade:54406 +#: src/emc/usr_intf/pncconf/pncconf.glade:54458 +#: src/emc/usr_intf/pncconf/pncconf.glade:54510 +#: src/emc/usr_intf/pncconf/pncconf.glade:54562 +#: src/emc/usr_intf/pncconf/pncconf.glade:54614 +#: src/emc/usr_intf/pncconf/pncconf.glade:54666 +#: src/emc/usr_intf/pncconf/pncconf.glade:54718 +#: src/emc/usr_intf/pncconf/pncconf.glade:54770 +#: src/emc/usr_intf/pncconf/pncconf.glade:54822 +#: src/emc/usr_intf/pncconf/pncconf.glade:54874 +#: src/emc/usr_intf/pncconf/pncconf.glade:55701 +#: src/emc/usr_intf/pncconf/pncconf.glade:55753 +#: src/emc/usr_intf/pncconf/pncconf.glade:55805 +#: src/emc/usr_intf/pncconf/pncconf.glade:55857 +#: src/emc/usr_intf/pncconf/pncconf.glade:57197 +#: src/emc/usr_intf/pncconf/pncconf.glade:57249 +#: src/emc/usr_intf/pncconf/pncconf.glade:57301 +#: src/emc/usr_intf/pncconf/pncconf.glade:57353 +#: src/emc/usr_intf/pncconf/pncconf.glade:58180 +#: src/emc/usr_intf/pncconf/pncconf.glade:58232 +#: src/emc/usr_intf/pncconf/pncconf.glade:58284 +#: src/emc/usr_intf/pncconf/pncconf.glade:58336 +#: src/emc/usr_intf/pncconf/pncconf.glade:58388 +#: src/emc/usr_intf/pncconf/pncconf.glade:58440 +#: src/emc/usr_intf/pncconf/pncconf.glade:58492 +#: src/emc/usr_intf/pncconf/pncconf.glade:58544 +#: src/emc/usr_intf/pncconf/pncconf.glade:58596 +#: src/emc/usr_intf/pncconf/pncconf.glade:58648 +#: src/emc/usr_intf/pncconf/pncconf.glade:58700 +#: src/emc/usr_intf/pncconf/pncconf.glade:58752 +#: src/emc/usr_intf/pncconf/pncconf.glade:59557 +#: src/emc/usr_intf/pncconf/pncconf.glade:59609 +#: src/emc/usr_intf/pncconf/pncconf.glade:59661 +#: src/emc/usr_intf/pncconf/pncconf.glade:59713 +#: src/emc/usr_intf/pncconf/pncconf.glade:59765 +#: src/emc/usr_intf/pncconf/pncconf.glade:59817 +#: src/emc/usr_intf/pncconf/pncconf.glade:59869 +#: src/emc/usr_intf/pncconf/pncconf.glade:59921 +#: src/emc/usr_intf/pncconf/pncconf.glade:59973 +#: src/emc/usr_intf/pncconf/pncconf.glade:60025 +#: src/emc/usr_intf/pncconf/pncconf.glade:60077 +#: src/emc/usr_intf/pncconf/pncconf.glade:60129 +msgid "" +"ESTOP IN\n" +"Spindle PPR\n" +"Spindle A \n" +"Spindle B \n" +"Home X \n" +"Home Y \n" +"Home Z\n" +"Home A\n" +"Minimum Limit + Home X \n" +"Minimum Limit + Home Y \n" +"Minimum Limit + Home Z \n" +"Minimum Limit + Home A\n" +"Maximum Limit + Home X \n" +"Maximum Limit + Home Y \n" +"Maximum Limit + Home Z \n" +"Maximum Limit + Home A\n" +"Both Limit + Home X \n" +"Both Limit + Home Y \n" +"Both Limit + Home Z \n" +"Both Limit + Home A\n" +"Minimum Limit X \n" +"Minimum Limit Y \n" +"Minimum Limit Z \n" +"Minimum Limit A\n" +"Maximum Limit X \n" +"Maximum Limit Y \n" +"Maximum Limit Z \n" +"Maximum Limit A\n" +"Both Limit X \n" +"Both Limit Y \n" +"Both Limit Z \n" +"Both Limit A\n" +"All limits\n" +"All home\n" +"Unused" +msgstr "" +"ESTOP IN\n" +"Mandrino PPR\n" +"Mandrino A \n" +"Mandrino B \n" +"Zero X \n" +"Zero Y \n" +"Zero Z\n" +"Zero A\n" +"Limite Minimo + Zero X \n" +"Limite Minimo + Zero Y \n" +"Limite Minimo + Zero Z \n" +"Limite Minimo + Zero A \n" +"Limite Massimo + Zero X \n" +"Limite Massimo + Zero Y \n" +"Limite Massimo + Zero Z \n" +"Limite Massimo + Zero A \n" +"Entrambi i Limiti + Zero X \n" +"Entrambi i Limiti + Zero Y \n" +"Entrambi i Limiti + Zero Z \n" +"Entrambi i Limiti + Zero A \n" +"Limite Minimo X \n" +"Limite Minimo Y \n" +"Limite Minimo Z \n" +"Limite Minimo A\n" +"Limite Massimo X \n" +"Limite Massimo Y \n" +"Limite Massimo Z \n" +"Limite Massimo A\n" +"Entrambi i Limiti X \n" +"Entrambi i Limiti Y \n" +"Entrambi i Limiti Z \n" +"Entrambi i Limiti A \n" +"Tutti i limiti\n" +"Tutti gli Zeri\n" +"Inutilizzato" -#: src/emc/usr_intf/pncconf/pncconf.glade:1839 -msgid "Shared MPG / selectable axis" -msgstr "MPG condiviso / asse selezionabile" +#: src/emc/usr_intf/pncconf/pncconf.glade:8825 +#: src/emc/usr_intf/pncconf/pncconf.glade:9081 +#: src/emc/usr_intf/pncconf/pncconf.glade:13563 +#: src/emc/usr_intf/pncconf/pncconf.glade:13818 +#: src/emc/usr_intf/pncconf/pncconf.glade:16164 +#: src/emc/usr_intf/pncconf/pncconf.glade:16410 +#: src/emc/usr_intf/pncconf/pncconf.glade:18769 +#: src/emc/usr_intf/pncconf/pncconf.glade:19024 +#: src/emc/usr_intf/pncconf/pncconf.glade:20571 +#: src/emc/usr_intf/pncconf/pncconf.glade:20820 +#: src/emc/usr_intf/pncconf/pncconf.glade:20949 +#: src/emc/usr_intf/pncconf/pncconf.glade:21199 +#: src/emc/usr_intf/pncconf/pncconf.glade:22745 +#: src/emc/usr_intf/pncconf/pncconf.glade:22995 +#: src/emc/usr_intf/pncconf/pncconf.glade:24541 +#: src/emc/usr_intf/pncconf/pncconf.glade:24791 +#: src/emc/usr_intf/pncconf/pncconf.glade:26353 +#: src/emc/usr_intf/pncconf/pncconf.glade:26600 +#: src/emc/usr_intf/pncconf/pncconf.glade:31115 +#: src/emc/usr_intf/pncconf/pncconf.glade:31361 +#: src/emc/usr_intf/pncconf/pncconf.glade:31621 +#: src/emc/usr_intf/pncconf/pncconf.glade:35460 +#: src/emc/usr_intf/pncconf/pncconf.glade:35706 +#: src/emc/usr_intf/pncconf/pncconf.glade:35837 +#: src/emc/usr_intf/pncconf/pncconf.glade:36084 +#: src/emc/usr_intf/pncconf/pncconf.glade:40037 +#: src/emc/usr_intf/pncconf/pncconf.glade:40197 +#: src/emc/usr_intf/pncconf/pncconf.glade:40444 +#: src/emc/usr_intf/pncconf/pncconf.glade:44959 +#: src/emc/usr_intf/pncconf/pncconf.glade:45205 +#: src/emc/usr_intf/pncconf/pncconf.glade:45454 +#: src/emc/usr_intf/pncconf/pncconf.glade:47120 +#: src/emc/usr_intf/pncconf/pncconf.glade:47367 +#: src/emc/usr_intf/pncconf/pncconf.glade:51882 +#: src/emc/usr_intf/pncconf/pncconf.glade:52128 +#: src/emc/usr_intf/pncconf/pncconf.glade:52377 +#: src/emc/usr_intf/pncconf/pncconf.glade:54043 +#: src/emc/usr_intf/pncconf/pncconf.glade:54290 +#: src/emc/usr_intf/pncconf/pncconf.glade:58805 +#: src/emc/usr_intf/pncconf/pncconf.glade:59051 +#: src/emc/usr_intf/pncconf/pncconf.glade:59300 +msgid "Pin Type" +msgstr "Tipo Pin" -#: src/emc/usr_intf/pncconf/pncconf.glade:1852 -msgid "Mpg per axis" -msgstr "Mpg per asse" +#: src/emc/usr_intf/pncconf/pncconf.glade:8838 +#: src/emc/usr_intf/pncconf/pncconf.glade:8900 +#: src/emc/usr_intf/pncconf/pncconf.glade:13743 +#: src/emc/usr_intf/pncconf/pncconf.glade:13806 +#: src/emc/usr_intf/pncconf/pncconf.glade:16335 +#: src/emc/usr_intf/pncconf/pncconf.glade:16398 +#: src/emc/usr_intf/pncconf/pncconf.glade:18949 +#: src/emc/usr_intf/pncconf/pncconf.glade:19012 +#: src/emc/usr_intf/pncconf/pncconf.glade:20751 +#: src/emc/usr_intf/pncconf/pncconf.glade:20808 +#: src/emc/usr_intf/pncconf/pncconf.glade:20962 +#: src/emc/usr_intf/pncconf/pncconf.glade:21018 +#: src/emc/usr_intf/pncconf/pncconf.glade:22758 +#: src/emc/usr_intf/pncconf/pncconf.glade:22814 +#: src/emc/usr_intf/pncconf/pncconf.glade:24554 +#: src/emc/usr_intf/pncconf/pncconf.glade:24610 +#: src/emc/usr_intf/pncconf/pncconf.glade:26366 +#: src/emc/usr_intf/pncconf/pncconf.glade:26428 +#: src/emc/usr_intf/pncconf/pncconf.glade:31286 +#: src/emc/usr_intf/pncconf/pncconf.glade:31349 +#: src/emc/usr_intf/pncconf/pncconf.glade:31634 +#: src/emc/usr_intf/pncconf/pncconf.glade:35631 +#: src/emc/usr_intf/pncconf/pncconf.glade:35694 +#: src/emc/usr_intf/pncconf/pncconf.glade:35850 +#: src/emc/usr_intf/pncconf/pncconf.glade:35912 +#: src/emc/usr_intf/pncconf/pncconf.glade:40025 +#: src/emc/usr_intf/pncconf/pncconf.glade:40210 +#: src/emc/usr_intf/pncconf/pncconf.glade:40272 +#: src/emc/usr_intf/pncconf/pncconf.glade:45130 +#: src/emc/usr_intf/pncconf/pncconf.glade:45193 +#: src/emc/usr_intf/pncconf/pncconf.glade:45467 +#: src/emc/usr_intf/pncconf/pncconf.glade:47133 +#: src/emc/usr_intf/pncconf/pncconf.glade:47195 +#: src/emc/usr_intf/pncconf/pncconf.glade:52053 +#: src/emc/usr_intf/pncconf/pncconf.glade:52116 +#: src/emc/usr_intf/pncconf/pncconf.glade:52390 +#: src/emc/usr_intf/pncconf/pncconf.glade:54056 +#: src/emc/usr_intf/pncconf/pncconf.glade:54118 +#: src/emc/usr_intf/pncconf/pncconf.glade:58976 +#: src/emc/usr_intf/pncconf/pncconf.glade:59039 +#: src/emc/usr_intf/pncconf/pncconf.glade:59313 +msgid "Inv" +msgstr "Inv" -#: src/emc/usr_intf/pncconf/pncconf.glade:1867 -msgid "selectable MPG increments" -msgstr "Selezione incrementi MPG" +#: src/emc/usr_intf/pncconf/pncconf.glade:8867 +#: src/emc/usr_intf/pncconf/pncconf.glade:10731 +#: src/emc/usr_intf/pncconf/pncconf.glade:10751 +#: src/emc/usr_intf/pncconf/pncconf.glade:10771 +#: src/emc/usr_intf/pncconf/pncconf.glade:10791 +#: src/emc/usr_intf/pncconf/pncconf.glade:10811 +#: src/emc/usr_intf/pncconf/pncconf.glade:10831 +#: src/emc/usr_intf/pncconf/pncconf.glade:10851 +#: src/emc/usr_intf/pncconf/pncconf.glade:10871 +#: src/emc/usr_intf/pncconf/pncconf.glade:10891 +#: src/emc/usr_intf/pncconf/pncconf.glade:10911 +#: src/emc/usr_intf/pncconf/pncconf.glade:10931 +#: src/emc/usr_intf/pncconf/pncconf.glade:10951 +#: src/emc/usr_intf/pncconf/pncconf.glade:10971 +#: src/emc/usr_intf/pncconf/pncconf.glade:10991 +#: src/emc/usr_intf/pncconf/pncconf.glade:11011 +#: src/emc/usr_intf/pncconf/pncconf.glade:11031 +#: src/emc/usr_intf/pncconf/pncconf.glade:11051 +#: src/emc/usr_intf/pncconf/pncconf.glade:11071 +#: src/emc/usr_intf/pncconf/pncconf.glade:11091 +#: src/emc/usr_intf/pncconf/pncconf.glade:11111 +#: src/emc/usr_intf/pncconf/pncconf.glade:11131 +#: src/emc/usr_intf/pncconf/pncconf.glade:11151 +#: src/emc/usr_intf/pncconf/pncconf.glade:11171 +#: src/emc/usr_intf/pncconf/pncconf.glade:11465 +#: src/emc/usr_intf/pncconf/pncconf.glade:11485 +#: src/emc/usr_intf/pncconf/pncconf.glade:11505 +#: src/emc/usr_intf/pncconf/pncconf.glade:11525 +#: src/emc/usr_intf/pncconf/pncconf.glade:11545 +#: src/emc/usr_intf/pncconf/pncconf.glade:11565 +#: src/emc/usr_intf/pncconf/pncconf.glade:11585 +#: src/emc/usr_intf/pncconf/pncconf.glade:11605 +#: src/emc/usr_intf/pncconf/pncconf.glade:11625 +#: src/emc/usr_intf/pncconf/pncconf.glade:11645 +#: src/emc/usr_intf/pncconf/pncconf.glade:11665 +#: src/emc/usr_intf/pncconf/pncconf.glade:11685 +#: src/emc/usr_intf/pncconf/pncconf.glade:11705 +#: src/emc/usr_intf/pncconf/pncconf.glade:11725 +#: src/emc/usr_intf/pncconf/pncconf.glade:11745 +#: src/emc/usr_intf/pncconf/pncconf.glade:11765 +#: src/emc/usr_intf/pncconf/pncconf.glade:11785 +#: src/emc/usr_intf/pncconf/pncconf.glade:11805 +#: src/emc/usr_intf/pncconf/pncconf.glade:11825 +#: src/emc/usr_intf/pncconf/pncconf.glade:11845 +#: src/emc/usr_intf/pncconf/pncconf.glade:11865 +#: src/emc/usr_intf/pncconf/pncconf.glade:11885 +#: src/emc/usr_intf/pncconf/pncconf.glade:11905 +#: src/emc/usr_intf/pncconf/pncconf.glade:13768 +#: src/emc/usr_intf/pncconf/pncconf.glade:13974 +#: src/emc/usr_intf/pncconf/pncconf.glade:13994 +#: src/emc/usr_intf/pncconf/pncconf.glade:14014 +#: src/emc/usr_intf/pncconf/pncconf.glade:14034 +#: src/emc/usr_intf/pncconf/pncconf.glade:14054 +#: src/emc/usr_intf/pncconf/pncconf.glade:14074 +#: src/emc/usr_intf/pncconf/pncconf.glade:14094 +#: src/emc/usr_intf/pncconf/pncconf.glade:14114 +#: src/emc/usr_intf/pncconf/pncconf.glade:14134 +#: src/emc/usr_intf/pncconf/pncconf.glade:14154 +#: src/emc/usr_intf/pncconf/pncconf.glade:14174 +#: src/emc/usr_intf/pncconf/pncconf.glade:14194 +#: src/emc/usr_intf/pncconf/pncconf.glade:14214 +#: src/emc/usr_intf/pncconf/pncconf.glade:14234 +#: src/emc/usr_intf/pncconf/pncconf.glade:14254 +#: src/emc/usr_intf/pncconf/pncconf.glade:14274 +#: src/emc/usr_intf/pncconf/pncconf.glade:14294 +#: src/emc/usr_intf/pncconf/pncconf.glade:14314 +#: src/emc/usr_intf/pncconf/pncconf.glade:14334 +#: src/emc/usr_intf/pncconf/pncconf.glade:14354 +#: src/emc/usr_intf/pncconf/pncconf.glade:14374 +#: src/emc/usr_intf/pncconf/pncconf.glade:14394 +#: src/emc/usr_intf/pncconf/pncconf.glade:14414 +#: src/emc/usr_intf/pncconf/pncconf.glade:16360 +#: src/emc/usr_intf/pncconf/pncconf.glade:16670 +#: src/emc/usr_intf/pncconf/pncconf.glade:16690 +#: src/emc/usr_intf/pncconf/pncconf.glade:16710 +#: src/emc/usr_intf/pncconf/pncconf.glade:16730 +#: src/emc/usr_intf/pncconf/pncconf.glade:16750 +#: src/emc/usr_intf/pncconf/pncconf.glade:16770 +#: src/emc/usr_intf/pncconf/pncconf.glade:16790 +#: src/emc/usr_intf/pncconf/pncconf.glade:16810 +#: src/emc/usr_intf/pncconf/pncconf.glade:16830 +#: src/emc/usr_intf/pncconf/pncconf.glade:16850 +#: src/emc/usr_intf/pncconf/pncconf.glade:16870 +#: src/emc/usr_intf/pncconf/pncconf.glade:16890 +#: src/emc/usr_intf/pncconf/pncconf.glade:16910 +#: src/emc/usr_intf/pncconf/pncconf.glade:16930 +#: src/emc/usr_intf/pncconf/pncconf.glade:16950 +#: src/emc/usr_intf/pncconf/pncconf.glade:16970 +#: src/emc/usr_intf/pncconf/pncconf.glade:16990 +#: src/emc/usr_intf/pncconf/pncconf.glade:17010 +#: src/emc/usr_intf/pncconf/pncconf.glade:17030 +#: src/emc/usr_intf/pncconf/pncconf.glade:17050 +#: src/emc/usr_intf/pncconf/pncconf.glade:17070 +#: src/emc/usr_intf/pncconf/pncconf.glade:17090 +#: src/emc/usr_intf/pncconf/pncconf.glade:17110 +#: src/emc/usr_intf/pncconf/pncconf.glade:18974 +#: src/emc/usr_intf/pncconf/pncconf.glade:26395 +#: src/emc/usr_intf/pncconf/pncconf.glade:28311 +#: src/emc/usr_intf/pncconf/pncconf.glade:28331 +#: src/emc/usr_intf/pncconf/pncconf.glade:28351 +#: src/emc/usr_intf/pncconf/pncconf.glade:28371 +#: src/emc/usr_intf/pncconf/pncconf.glade:28391 +#: src/emc/usr_intf/pncconf/pncconf.glade:28411 +#: src/emc/usr_intf/pncconf/pncconf.glade:28431 +#: src/emc/usr_intf/pncconf/pncconf.glade:28451 +#: src/emc/usr_intf/pncconf/pncconf.glade:28471 +#: src/emc/usr_intf/pncconf/pncconf.glade:28491 +#: src/emc/usr_intf/pncconf/pncconf.glade:28511 +#: src/emc/usr_intf/pncconf/pncconf.glade:28531 +#: src/emc/usr_intf/pncconf/pncconf.glade:28551 +#: src/emc/usr_intf/pncconf/pncconf.glade:28571 +#: src/emc/usr_intf/pncconf/pncconf.glade:28591 +#: src/emc/usr_intf/pncconf/pncconf.glade:28611 +#: src/emc/usr_intf/pncconf/pncconf.glade:28631 +#: src/emc/usr_intf/pncconf/pncconf.glade:28651 +#: src/emc/usr_intf/pncconf/pncconf.glade:28671 +#: src/emc/usr_intf/pncconf/pncconf.glade:28691 +#: src/emc/usr_intf/pncconf/pncconf.glade:28711 +#: src/emc/usr_intf/pncconf/pncconf.glade:28731 +#: src/emc/usr_intf/pncconf/pncconf.glade:28751 +#: src/emc/usr_intf/pncconf/pncconf.glade:28942 +#: src/emc/usr_intf/pncconf/pncconf.glade:28962 +#: src/emc/usr_intf/pncconf/pncconf.glade:28982 +#: src/emc/usr_intf/pncconf/pncconf.glade:29002 +#: src/emc/usr_intf/pncconf/pncconf.glade:29022 +#: src/emc/usr_intf/pncconf/pncconf.glade:29042 +#: src/emc/usr_intf/pncconf/pncconf.glade:29062 +#: src/emc/usr_intf/pncconf/pncconf.glade:29082 +#: src/emc/usr_intf/pncconf/pncconf.glade:29102 +#: src/emc/usr_intf/pncconf/pncconf.glade:29122 +#: src/emc/usr_intf/pncconf/pncconf.glade:29142 +#: src/emc/usr_intf/pncconf/pncconf.glade:29162 +#: src/emc/usr_intf/pncconf/pncconf.glade:29182 +#: src/emc/usr_intf/pncconf/pncconf.glade:29202 +#: src/emc/usr_intf/pncconf/pncconf.glade:29222 +#: src/emc/usr_intf/pncconf/pncconf.glade:29242 +#: src/emc/usr_intf/pncconf/pncconf.glade:29262 +#: src/emc/usr_intf/pncconf/pncconf.glade:29282 +#: src/emc/usr_intf/pncconf/pncconf.glade:29302 +#: src/emc/usr_intf/pncconf/pncconf.glade:29322 +#: src/emc/usr_intf/pncconf/pncconf.glade:29342 +#: src/emc/usr_intf/pncconf/pncconf.glade:29362 +#: src/emc/usr_intf/pncconf/pncconf.glade:29382 +#: src/emc/usr_intf/pncconf/pncconf.glade:31311 +#: src/emc/usr_intf/pncconf/pncconf.glade:31663 +#: src/emc/usr_intf/pncconf/pncconf.glade:32881 +#: src/emc/usr_intf/pncconf/pncconf.glade:32901 +#: src/emc/usr_intf/pncconf/pncconf.glade:32921 +#: src/emc/usr_intf/pncconf/pncconf.glade:32941 +#: src/emc/usr_intf/pncconf/pncconf.glade:32961 +#: src/emc/usr_intf/pncconf/pncconf.glade:32981 +#: src/emc/usr_intf/pncconf/pncconf.glade:33001 +#: src/emc/usr_intf/pncconf/pncconf.glade:33021 +#: src/emc/usr_intf/pncconf/pncconf.glade:33041 +#: src/emc/usr_intf/pncconf/pncconf.glade:33061 +#: src/emc/usr_intf/pncconf/pncconf.glade:33081 +#: src/emc/usr_intf/pncconf/pncconf.glade:33300 +#: src/emc/usr_intf/pncconf/pncconf.glade:33320 +#: src/emc/usr_intf/pncconf/pncconf.glade:33340 +#: src/emc/usr_intf/pncconf/pncconf.glade:33360 +#: src/emc/usr_intf/pncconf/pncconf.glade:33380 +#: src/emc/usr_intf/pncconf/pncconf.glade:33400 +#: src/emc/usr_intf/pncconf/pncconf.glade:33420 +#: src/emc/usr_intf/pncconf/pncconf.glade:33440 +#: src/emc/usr_intf/pncconf/pncconf.glade:33460 +#: src/emc/usr_intf/pncconf/pncconf.glade:33480 +#: src/emc/usr_intf/pncconf/pncconf.glade:33500 +#: src/emc/usr_intf/pncconf/pncconf.glade:33520 +#: src/emc/usr_intf/pncconf/pncconf.glade:33540 +#: src/emc/usr_intf/pncconf/pncconf.glade:33560 +#: src/emc/usr_intf/pncconf/pncconf.glade:33580 +#: src/emc/usr_intf/pncconf/pncconf.glade:33600 +#: src/emc/usr_intf/pncconf/pncconf.glade:33620 +#: src/emc/usr_intf/pncconf/pncconf.glade:33640 +#: src/emc/usr_intf/pncconf/pncconf.glade:33660 +#: src/emc/usr_intf/pncconf/pncconf.glade:33680 +#: src/emc/usr_intf/pncconf/pncconf.glade:33700 +#: src/emc/usr_intf/pncconf/pncconf.glade:33720 +#: src/emc/usr_intf/pncconf/pncconf.glade:33740 +#: src/emc/usr_intf/pncconf/pncconf.glade:35656 +#: src/emc/usr_intf/pncconf/pncconf.glade:35879 +#: src/emc/usr_intf/pncconf/pncconf.glade:37808 +#: src/emc/usr_intf/pncconf/pncconf.glade:37828 +#: src/emc/usr_intf/pncconf/pncconf.glade:37848 +#: src/emc/usr_intf/pncconf/pncconf.glade:37868 +#: src/emc/usr_intf/pncconf/pncconf.glade:37888 +#: src/emc/usr_intf/pncconf/pncconf.glade:37908 +#: src/emc/usr_intf/pncconf/pncconf.glade:37928 +#: src/emc/usr_intf/pncconf/pncconf.glade:37948 +#: src/emc/usr_intf/pncconf/pncconf.glade:37968 +#: src/emc/usr_intf/pncconf/pncconf.glade:37988 +#: src/emc/usr_intf/pncconf/pncconf.glade:38008 +#: src/emc/usr_intf/pncconf/pncconf.glade:38028 +#: src/emc/usr_intf/pncconf/pncconf.glade:38048 +#: src/emc/usr_intf/pncconf/pncconf.glade:38068 +#: src/emc/usr_intf/pncconf/pncconf.glade:38088 +#: src/emc/usr_intf/pncconf/pncconf.glade:38108 +#: src/emc/usr_intf/pncconf/pncconf.glade:38128 +#: src/emc/usr_intf/pncconf/pncconf.glade:38148 +#: src/emc/usr_intf/pncconf/pncconf.glade:38168 +#: src/emc/usr_intf/pncconf/pncconf.glade:38188 +#: src/emc/usr_intf/pncconf/pncconf.glade:38208 +#: src/emc/usr_intf/pncconf/pncconf.glade:38228 +#: src/emc/usr_intf/pncconf/pncconf.glade:38248 +#: src/emc/usr_intf/pncconf/pncconf.glade:38557 +#: src/emc/usr_intf/pncconf/pncconf.glade:38577 +#: src/emc/usr_intf/pncconf/pncconf.glade:38597 +#: src/emc/usr_intf/pncconf/pncconf.glade:38617 +#: src/emc/usr_intf/pncconf/pncconf.glade:38637 +#: src/emc/usr_intf/pncconf/pncconf.glade:38657 +#: src/emc/usr_intf/pncconf/pncconf.glade:38677 +#: src/emc/usr_intf/pncconf/pncconf.glade:38697 +#: src/emc/usr_intf/pncconf/pncconf.glade:38717 +#: src/emc/usr_intf/pncconf/pncconf.glade:38737 +#: src/emc/usr_intf/pncconf/pncconf.glade:38757 +#: src/emc/usr_intf/pncconf/pncconf.glade:39987 +#: src/emc/usr_intf/pncconf/pncconf.glade:40239 +#: src/emc/usr_intf/pncconf/pncconf.glade:42155 +#: src/emc/usr_intf/pncconf/pncconf.glade:42175 +#: src/emc/usr_intf/pncconf/pncconf.glade:42195 +#: src/emc/usr_intf/pncconf/pncconf.glade:42215 +#: src/emc/usr_intf/pncconf/pncconf.glade:42235 +#: src/emc/usr_intf/pncconf/pncconf.glade:42255 +#: src/emc/usr_intf/pncconf/pncconf.glade:42275 +#: src/emc/usr_intf/pncconf/pncconf.glade:42295 +#: src/emc/usr_intf/pncconf/pncconf.glade:42315 +#: src/emc/usr_intf/pncconf/pncconf.glade:42335 +#: src/emc/usr_intf/pncconf/pncconf.glade:42355 +#: src/emc/usr_intf/pncconf/pncconf.glade:42375 +#: src/emc/usr_intf/pncconf/pncconf.glade:42395 +#: src/emc/usr_intf/pncconf/pncconf.glade:42415 +#: src/emc/usr_intf/pncconf/pncconf.glade:42435 +#: src/emc/usr_intf/pncconf/pncconf.glade:42455 +#: src/emc/usr_intf/pncconf/pncconf.glade:42475 +#: src/emc/usr_intf/pncconf/pncconf.glade:42495 +#: src/emc/usr_intf/pncconf/pncconf.glade:42515 +#: src/emc/usr_intf/pncconf/pncconf.glade:42535 +#: src/emc/usr_intf/pncconf/pncconf.glade:42555 +#: src/emc/usr_intf/pncconf/pncconf.glade:42575 +#: src/emc/usr_intf/pncconf/pncconf.glade:42595 +#: src/emc/usr_intf/pncconf/pncconf.glade:42786 +#: src/emc/usr_intf/pncconf/pncconf.glade:42806 +#: src/emc/usr_intf/pncconf/pncconf.glade:42826 +#: src/emc/usr_intf/pncconf/pncconf.glade:42846 +#: src/emc/usr_intf/pncconf/pncconf.glade:42866 +#: src/emc/usr_intf/pncconf/pncconf.glade:42886 +#: src/emc/usr_intf/pncconf/pncconf.glade:42906 +#: src/emc/usr_intf/pncconf/pncconf.glade:42926 +#: src/emc/usr_intf/pncconf/pncconf.glade:42946 +#: src/emc/usr_intf/pncconf/pncconf.glade:42966 +#: src/emc/usr_intf/pncconf/pncconf.glade:42986 +#: src/emc/usr_intf/pncconf/pncconf.glade:43006 +#: src/emc/usr_intf/pncconf/pncconf.glade:43026 +#: src/emc/usr_intf/pncconf/pncconf.glade:43046 +#: src/emc/usr_intf/pncconf/pncconf.glade:43066 +#: src/emc/usr_intf/pncconf/pncconf.glade:43086 +#: src/emc/usr_intf/pncconf/pncconf.glade:43106 +#: src/emc/usr_intf/pncconf/pncconf.glade:43126 +#: src/emc/usr_intf/pncconf/pncconf.glade:43146 +#: src/emc/usr_intf/pncconf/pncconf.glade:43166 +#: src/emc/usr_intf/pncconf/pncconf.glade:43186 +#: src/emc/usr_intf/pncconf/pncconf.glade:43206 +#: src/emc/usr_intf/pncconf/pncconf.glade:43226 +#: src/emc/usr_intf/pncconf/pncconf.glade:45155 +#: src/emc/usr_intf/pncconf/pncconf.glade:45496 +#: src/emc/usr_intf/pncconf/pncconf.glade:46726 +#: src/emc/usr_intf/pncconf/pncconf.glade:46746 +#: src/emc/usr_intf/pncconf/pncconf.glade:46766 +#: src/emc/usr_intf/pncconf/pncconf.glade:46786 +#: src/emc/usr_intf/pncconf/pncconf.glade:46806 +#: src/emc/usr_intf/pncconf/pncconf.glade:46826 +#: src/emc/usr_intf/pncconf/pncconf.glade:46846 +#: src/emc/usr_intf/pncconf/pncconf.glade:46866 +#: src/emc/usr_intf/pncconf/pncconf.glade:46886 +#: src/emc/usr_intf/pncconf/pncconf.glade:46906 +#: src/emc/usr_intf/pncconf/pncconf.glade:46926 +#: src/emc/usr_intf/pncconf/pncconf.glade:47162 +#: src/emc/usr_intf/pncconf/pncconf.glade:49078 +#: src/emc/usr_intf/pncconf/pncconf.glade:49098 +#: src/emc/usr_intf/pncconf/pncconf.glade:49118 +#: src/emc/usr_intf/pncconf/pncconf.glade:49138 +#: src/emc/usr_intf/pncconf/pncconf.glade:49158 +#: src/emc/usr_intf/pncconf/pncconf.glade:49178 +#: src/emc/usr_intf/pncconf/pncconf.glade:49198 +#: src/emc/usr_intf/pncconf/pncconf.glade:49218 +#: src/emc/usr_intf/pncconf/pncconf.glade:49238 +#: src/emc/usr_intf/pncconf/pncconf.glade:49258 +#: src/emc/usr_intf/pncconf/pncconf.glade:49278 +#: src/emc/usr_intf/pncconf/pncconf.glade:49298 +#: src/emc/usr_intf/pncconf/pncconf.glade:49318 +#: src/emc/usr_intf/pncconf/pncconf.glade:49338 +#: src/emc/usr_intf/pncconf/pncconf.glade:49358 +#: src/emc/usr_intf/pncconf/pncconf.glade:49378 +#: src/emc/usr_intf/pncconf/pncconf.glade:49398 +#: src/emc/usr_intf/pncconf/pncconf.glade:49418 +#: src/emc/usr_intf/pncconf/pncconf.glade:49438 +#: src/emc/usr_intf/pncconf/pncconf.glade:49458 +#: src/emc/usr_intf/pncconf/pncconf.glade:49478 +#: src/emc/usr_intf/pncconf/pncconf.glade:49498 +#: src/emc/usr_intf/pncconf/pncconf.glade:49518 +#: src/emc/usr_intf/pncconf/pncconf.glade:49709 +#: src/emc/usr_intf/pncconf/pncconf.glade:49729 +#: src/emc/usr_intf/pncconf/pncconf.glade:49749 +#: src/emc/usr_intf/pncconf/pncconf.glade:49769 +#: src/emc/usr_intf/pncconf/pncconf.glade:49789 +#: src/emc/usr_intf/pncconf/pncconf.glade:49809 +#: src/emc/usr_intf/pncconf/pncconf.glade:49829 +#: src/emc/usr_intf/pncconf/pncconf.glade:49849 +#: src/emc/usr_intf/pncconf/pncconf.glade:49869 +#: src/emc/usr_intf/pncconf/pncconf.glade:49889 +#: src/emc/usr_intf/pncconf/pncconf.glade:49909 +#: src/emc/usr_intf/pncconf/pncconf.glade:49929 +#: src/emc/usr_intf/pncconf/pncconf.glade:49949 +#: src/emc/usr_intf/pncconf/pncconf.glade:49969 +#: src/emc/usr_intf/pncconf/pncconf.glade:49989 +#: src/emc/usr_intf/pncconf/pncconf.glade:50009 +#: src/emc/usr_intf/pncconf/pncconf.glade:50029 +#: src/emc/usr_intf/pncconf/pncconf.glade:50049 +#: src/emc/usr_intf/pncconf/pncconf.glade:50069 +#: src/emc/usr_intf/pncconf/pncconf.glade:50089 +#: src/emc/usr_intf/pncconf/pncconf.glade:50109 +#: src/emc/usr_intf/pncconf/pncconf.glade:50129 +#: src/emc/usr_intf/pncconf/pncconf.glade:50149 +#: src/emc/usr_intf/pncconf/pncconf.glade:52078 +#: src/emc/usr_intf/pncconf/pncconf.glade:52419 +#: src/emc/usr_intf/pncconf/pncconf.glade:53649 +#: src/emc/usr_intf/pncconf/pncconf.glade:53669 +#: src/emc/usr_intf/pncconf/pncconf.glade:53689 +#: src/emc/usr_intf/pncconf/pncconf.glade:53709 +#: src/emc/usr_intf/pncconf/pncconf.glade:53729 +#: src/emc/usr_intf/pncconf/pncconf.glade:53749 +#: src/emc/usr_intf/pncconf/pncconf.glade:53769 +#: src/emc/usr_intf/pncconf/pncconf.glade:53789 +#: src/emc/usr_intf/pncconf/pncconf.glade:53809 +#: src/emc/usr_intf/pncconf/pncconf.glade:53829 +#: src/emc/usr_intf/pncconf/pncconf.glade:53849 +#: src/emc/usr_intf/pncconf/pncconf.glade:54085 +#: src/emc/usr_intf/pncconf/pncconf.glade:56001 +#: src/emc/usr_intf/pncconf/pncconf.glade:56021 +#: src/emc/usr_intf/pncconf/pncconf.glade:56041 +#: src/emc/usr_intf/pncconf/pncconf.glade:56061 +#: src/emc/usr_intf/pncconf/pncconf.glade:56081 +#: src/emc/usr_intf/pncconf/pncconf.glade:56101 +#: src/emc/usr_intf/pncconf/pncconf.glade:56121 +#: src/emc/usr_intf/pncconf/pncconf.glade:56141 +#: src/emc/usr_intf/pncconf/pncconf.glade:56161 +#: src/emc/usr_intf/pncconf/pncconf.glade:56181 +#: src/emc/usr_intf/pncconf/pncconf.glade:56201 +#: src/emc/usr_intf/pncconf/pncconf.glade:56221 +#: src/emc/usr_intf/pncconf/pncconf.glade:56241 +#: src/emc/usr_intf/pncconf/pncconf.glade:56261 +#: src/emc/usr_intf/pncconf/pncconf.glade:56281 +#: src/emc/usr_intf/pncconf/pncconf.glade:56301 +#: src/emc/usr_intf/pncconf/pncconf.glade:56321 +#: src/emc/usr_intf/pncconf/pncconf.glade:56341 +#: src/emc/usr_intf/pncconf/pncconf.glade:56361 +#: src/emc/usr_intf/pncconf/pncconf.glade:56381 +#: src/emc/usr_intf/pncconf/pncconf.glade:56401 +#: src/emc/usr_intf/pncconf/pncconf.glade:56421 +#: src/emc/usr_intf/pncconf/pncconf.glade:56441 +#: src/emc/usr_intf/pncconf/pncconf.glade:56632 +#: src/emc/usr_intf/pncconf/pncconf.glade:56652 +#: src/emc/usr_intf/pncconf/pncconf.glade:56672 +#: src/emc/usr_intf/pncconf/pncconf.glade:56692 +#: src/emc/usr_intf/pncconf/pncconf.glade:56712 +#: src/emc/usr_intf/pncconf/pncconf.glade:56732 +#: src/emc/usr_intf/pncconf/pncconf.glade:56752 +#: src/emc/usr_intf/pncconf/pncconf.glade:56772 +#: src/emc/usr_intf/pncconf/pncconf.glade:56792 +#: src/emc/usr_intf/pncconf/pncconf.glade:56812 +#: src/emc/usr_intf/pncconf/pncconf.glade:56832 +#: src/emc/usr_intf/pncconf/pncconf.glade:56852 +#: src/emc/usr_intf/pncconf/pncconf.glade:56872 +#: src/emc/usr_intf/pncconf/pncconf.glade:56892 +#: src/emc/usr_intf/pncconf/pncconf.glade:56912 +#: src/emc/usr_intf/pncconf/pncconf.glade:56932 +#: src/emc/usr_intf/pncconf/pncconf.glade:56952 +#: src/emc/usr_intf/pncconf/pncconf.glade:56972 +#: src/emc/usr_intf/pncconf/pncconf.glade:56992 +#: src/emc/usr_intf/pncconf/pncconf.glade:57012 +#: src/emc/usr_intf/pncconf/pncconf.glade:57032 +#: src/emc/usr_intf/pncconf/pncconf.glade:57052 +#: src/emc/usr_intf/pncconf/pncconf.glade:57072 +#: src/emc/usr_intf/pncconf/pncconf.glade:59001 +#: src/emc/usr_intf/pncconf/pncconf.glade:59342 +#: src/emc/usr_intf/pncconf/pncconf.glade:60572 +#: src/emc/usr_intf/pncconf/pncconf.glade:60592 +#: src/emc/usr_intf/pncconf/pncconf.glade:60612 +#: src/emc/usr_intf/pncconf/pncconf.glade:60632 +#: src/emc/usr_intf/pncconf/pncconf.glade:60652 +#: src/emc/usr_intf/pncconf/pncconf.glade:60672 +#: src/emc/usr_intf/pncconf/pncconf.glade:60692 +#: src/emc/usr_intf/pncconf/pncconf.glade:60712 +#: src/emc/usr_intf/pncconf/pncconf.glade:60732 +#: src/emc/usr_intf/pncconf/pncconf.glade:60752 +#: src/emc/usr_intf/pncconf/pncconf.glade:60772 +msgid "" +"GPIO Input\n" +"GPIO Output\n" +"GPIO O Drain\n" +"Encoder\n" +"PWM\n" +"StepGen\n" +msgstr "" +"GPIO Input\n" +"GPIO Output\n" +"GPIO O Drain\n" +"Encoder\n" +"PWM\n" +"StepGen\n" -#: src/emc/usr_intf/pncconf/pncconf.glade:1932 -#: src/emc/usr_intf/pncconf/pncconf.glade:2907 -#: src/emc/usr_intf/pncconf/pncconf.glade:3788 -#: src/emc/usr_intf/pncconf/pncconf.glade:4669 -msgid "Mux options" -msgstr "Opzioni Mux" +#: src/emc/usr_intf/pncconf/pncconf.glade:8913 +#: src/emc/usr_intf/pncconf/pncconf.glade:13730 +#: src/emc/usr_intf/pncconf/pncconf.glade:18936 +#: src/emc/usr_intf/pncconf/pncconf.glade:20738 +#: src/emc/usr_intf/pncconf/pncconf.glade:21031 +#: src/emc/usr_intf/pncconf/pncconf.glade:22827 +#: src/emc/usr_intf/pncconf/pncconf.glade:24623 +msgid " 1:" +msgstr " 1:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1980 -#: src/emc/usr_intf/pncconf/pncconf.glade:2868 -#: src/emc/usr_intf/pncconf/pncconf.glade:3763 -#: src/emc/usr_intf/pncconf/pncconf.glade:4644 -msgid "use debounce" -msgstr "usa debounce" +#: src/emc/usr_intf/pncconf/pncconf.glade:8927 +#: src/emc/usr_intf/pncconf/pncconf.glade:13716 +#: src/emc/usr_intf/pncconf/pncconf.glade:18922 +#: src/emc/usr_intf/pncconf/pncconf.glade:20724 +#: src/emc/usr_intf/pncconf/pncconf.glade:21045 +#: src/emc/usr_intf/pncconf/pncconf.glade:22841 +#: src/emc/usr_intf/pncconf/pncconf.glade:24637 +msgid " 3:" +msgstr " 3:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1995 -msgid "use gray code" -msgstr "usa codice gray" +#: src/emc/usr_intf/pncconf/pncconf.glade:8941 +#: src/emc/usr_intf/pncconf/pncconf.glade:13702 +#: src/emc/usr_intf/pncconf/pncconf.glade:18908 +#: src/emc/usr_intf/pncconf/pncconf.glade:20710 +#: src/emc/usr_intf/pncconf/pncconf.glade:21059 +#: src/emc/usr_intf/pncconf/pncconf.glade:22855 +#: src/emc/usr_intf/pncconf/pncconf.glade:24651 +msgid " 5:" +msgstr " 5:" -#: src/emc/usr_intf/pncconf/pncconf.glade:2010 -msgid "ignore all inputs false" -msgstr "ignora tutti gli inputs falsi" +#: src/emc/usr_intf/pncconf/pncconf.glade:8955 +#: src/emc/usr_intf/pncconf/pncconf.glade:13688 +#: src/emc/usr_intf/pncconf/pncconf.glade:18894 +#: src/emc/usr_intf/pncconf/pncconf.glade:20696 +#: src/emc/usr_intf/pncconf/pncconf.glade:21073 +#: src/emc/usr_intf/pncconf/pncconf.glade:22869 +#: src/emc/usr_intf/pncconf/pncconf.glade:24665 +msgid " 7:" +msgstr " 7:" -#: src/emc/usr_intf/pncconf/pncconf.glade:2035 -#: src/emc/usr_intf/pncconf/pncconf.glade:2048 -#: src/emc/usr_intf/pncconf/pncconf.glade:2061 -#: src/emc/usr_intf/pncconf/pncconf.glade:2407 -#: src/emc/usr_intf/pncconf/pncconf.glade:2420 -#: src/emc/usr_intf/pncconf/pncconf.glade:2433 -#: src/emc/usr_intf/pncconf/pncconf.glade:2446 -#: src/emc/usr_intf/pncconf/pncconf.glade:2457 -#: src/emc/usr_intf/pncconf/pncconf.glade:2470 -#: src/emc/usr_intf/pncconf/pncconf.glade:2483 -#: src/emc/usr_intf/pncconf/pncconf.glade:2496 -#: src/emc/usr_intf/pncconf/pncconf.glade:2509 -#: src/emc/usr_intf/pncconf/pncconf.glade:2522 -#: src/emc/usr_intf/pncconf/pncconf.glade:2535 -#: src/emc/usr_intf/pncconf/pncconf.glade:8343 -#: src/emc/usr_intf/pncconf/pncconf.glade:8379 -#: src/emc/usr_intf/pncconf/pncconf.glade:56542 -#: src/emc/usr_intf/pncconf/pncconf.glade:61266 -#: src/emc/usr_intf/pncconf/pncconf.glade:61278 -#: src/emc/usr_intf/pncconf/pncconf.glade:61290 -#: src/emc/usr_intf/pncconf/pncconf.glade:61302 -#: src/emc/usr_intf/pncconf/pncconf.glade:62475 -#: src/emc/usr_intf/pncconf/pncconf.glade:62487 -#: src/emc/usr_intf/pncconf/pncconf.glade:62499 -#: src/emc/usr_intf/pncconf/pncconf.glade:62511 -#: src/emc/usr_intf/pncconf/pncconf.glade:63452 -#: src/emc/usr_intf/pncconf/pncconf.glade:63464 -#: src/emc/usr_intf/pncconf/pncconf.glade:63476 -#: src/emc/usr_intf/pncconf/pncconf.glade:63488 -#: src/emc/usr_intf/pncconf/pncconf.glade:64661 -#: src/emc/usr_intf/pncconf/pncconf.glade:64673 -#: src/emc/usr_intf/pncconf/pncconf.glade:64685 -#: src/emc/usr_intf/pncconf/pncconf.glade:64697 -#: src/emc/usr_intf/pncconf/pncconf.glade:65608 -#: src/emc/usr_intf/pncconf/pncconf.glade:65620 -#: src/emc/usr_intf/pncconf/pncconf.glade:65632 -#: src/emc/usr_intf/pncconf/pncconf.glade:65644 -msgid "label" -msgstr "etichetta" +#: src/emc/usr_intf/pncconf/pncconf.glade:8969 +#: src/emc/usr_intf/pncconf/pncconf.glade:13674 +#: src/emc/usr_intf/pncconf/pncconf.glade:18880 +#: src/emc/usr_intf/pncconf/pncconf.glade:20682 +#: src/emc/usr_intf/pncconf/pncconf.glade:21087 +#: src/emc/usr_intf/pncconf/pncconf.glade:22883 +#: src/emc/usr_intf/pncconf/pncconf.glade:24679 +msgid " 9:" +msgstr " 9:" -#: src/emc/usr_intf/pncconf/pncconf.glade:2073 -#: src/emc/usr_intf/pncconf/pncconf.glade:2559 -#: src/emc/usr_intf/pncconf/pncconf.glade:3300 -#: src/emc/usr_intf/pncconf/pncconf.glade:4181 -#: src/emc/usr_intf/pncconf/pncconf.glade:5062 -msgid " abc)" -msgstr " abc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8983 +#: src/emc/usr_intf/pncconf/pncconf.glade:13660 +#: src/emc/usr_intf/pncconf/pncconf.glade:18866 +#: src/emc/usr_intf/pncconf/pncconf.glade:20668 +#: src/emc/usr_intf/pncconf/pncconf.glade:21101 +#: src/emc/usr_intf/pncconf/pncconf.glade:22897 +#: src/emc/usr_intf/pncconf/pncconf.glade:24693 +msgid "11:" +msgstr "11:" -#: src/emc/usr_intf/pncconf/pncconf.glade:2086 -#: src/emc/usr_intf/pncconf/pncconf.glade:3422 -#: src/emc/usr_intf/pncconf/pncconf.glade:4303 -#: src/emc/usr_intf/pncconf/pncconf.glade:5184 -msgid " ab)" -msgstr " ab)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8997 +#: src/emc/usr_intf/pncconf/pncconf.glade:13646 +#: src/emc/usr_intf/pncconf/pncconf.glade:18852 +#: src/emc/usr_intf/pncconf/pncconf.glade:20654 +#: src/emc/usr_intf/pncconf/pncconf.glade:21115 +#: src/emc/usr_intf/pncconf/pncconf.glade:22911 +#: src/emc/usr_intf/pncconf/pncconf.glade:24707 +msgid "13:" +msgstr "13:" -#: src/emc/usr_intf/pncconf/pncconf.glade:2372 -#: src/emc/usr_intf/pncconf/pncconf.glade:3321 -#: src/emc/usr_intf/pncconf/pncconf.glade:4202 -#: src/emc/usr_intf/pncconf/pncconf.glade:5083 -msgid " ac)" -msgstr " ac)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9011 +#: src/emc/usr_intf/pncconf/pncconf.glade:13632 +#: src/emc/usr_intf/pncconf/pncconf.glade:18838 +#: src/emc/usr_intf/pncconf/pncconf.glade:20640 +#: src/emc/usr_intf/pncconf/pncconf.glade:21129 +#: src/emc/usr_intf/pncconf/pncconf.glade:22925 +#: src/emc/usr_intf/pncconf/pncconf.glade:24721 +msgid "15:" +msgstr "15:" -#: src/emc/usr_intf/pncconf/pncconf.glade:2383 -#: src/emc/usr_intf/pncconf/pncconf.glade:3311 -#: src/emc/usr_intf/pncconf/pncconf.glade:4192 -#: src/emc/usr_intf/pncconf/pncconf.glade:5073 -msgid " bc)" -msgstr " bc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9025 +#: src/emc/usr_intf/pncconf/pncconf.glade:13618 +#: src/emc/usr_intf/pncconf/pncconf.glade:18824 +#: src/emc/usr_intf/pncconf/pncconf.glade:20626 +#: src/emc/usr_intf/pncconf/pncconf.glade:21143 +#: src/emc/usr_intf/pncconf/pncconf.glade:22939 +#: src/emc/usr_intf/pncconf/pncconf.glade:24735 +msgid "17:" +msgstr "17:" -#: src/emc/usr_intf/pncconf/pncconf.glade:2547 -#: src/emc/usr_intf/pncconf/pncconf.glade:3332 -#: src/emc/usr_intf/pncconf/pncconf.glade:4213 -#: src/emc/usr_intf/pncconf/pncconf.glade:5094 -msgid " c)" -msgstr " c)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9039 +#: src/emc/usr_intf/pncconf/pncconf.glade:13604 +#: src/emc/usr_intf/pncconf/pncconf.glade:18810 +#: src/emc/usr_intf/pncconf/pncconf.glade:20612 +#: src/emc/usr_intf/pncconf/pncconf.glade:21157 +#: src/emc/usr_intf/pncconf/pncconf.glade:22953 +#: src/emc/usr_intf/pncconf/pncconf.glade:24749 +msgid "19:" +msgstr "19:" -#: src/emc/usr_intf/pncconf/pncconf.glade:2570 -#: src/emc/usr_intf/pncconf/pncconf.glade:2966 -#: src/emc/usr_intf/pncconf/pncconf.glade:3847 -#: src/emc/usr_intf/pncconf/pncconf.glade:4728 -msgid " ad)" -msgstr " ad)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9053 +#: src/emc/usr_intf/pncconf/pncconf.glade:13590 +#: src/emc/usr_intf/pncconf/pncconf.glade:18796 +#: src/emc/usr_intf/pncconf/pncconf.glade:20598 +#: src/emc/usr_intf/pncconf/pncconf.glade:21171 +#: src/emc/usr_intf/pncconf/pncconf.glade:22967 +#: src/emc/usr_intf/pncconf/pncconf.glade:24763 +msgid "21:" +msgstr "21:" -#: src/emc/usr_intf/pncconf/pncconf.glade:2583 -#: src/emc/usr_intf/pncconf/pncconf.glade:2953 -#: src/emc/usr_intf/pncconf/pncconf.glade:3834 -#: src/emc/usr_intf/pncconf/pncconf.glade:4715 -msgid " bd)" -msgstr " bd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9067 +#: src/emc/usr_intf/pncconf/pncconf.glade:13576 +#: src/emc/usr_intf/pncconf/pncconf.glade:18782 +#: src/emc/usr_intf/pncconf/pncconf.glade:20584 +#: src/emc/usr_intf/pncconf/pncconf.glade:21185 +#: src/emc/usr_intf/pncconf/pncconf.glade:22981 +#: src/emc/usr_intf/pncconf/pncconf.glade:24777 +msgid "23:" +msgstr "23:" -#: src/emc/usr_intf/pncconf/pncconf.glade:2596 -#: src/emc/usr_intf/pncconf/pncconf.glade:2927 -#: src/emc/usr_intf/pncconf/pncconf.glade:3808 -#: src/emc/usr_intf/pncconf/pncconf.glade:4689 -msgid " cd)" -msgstr " cd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9801 +#: src/emc/usr_intf/pncconf/pncconf.glade:12840 +#: src/emc/usr_intf/pncconf/pncconf.glade:17994 +#: src/emc/usr_intf/pncconf/pncconf.glade:20170 +#: src/emc/usr_intf/pncconf/pncconf.glade:21597 +#: src/emc/usr_intf/pncconf/pncconf.glade:23393 +#: src/emc/usr_intf/pncconf/pncconf.glade:25189 +msgid "47:" +msgstr "47:" -#: src/emc/usr_intf/pncconf/pncconf.glade:2609 -#: src/emc/usr_intf/pncconf/pncconf.glade:2991 -#: src/emc/usr_intf/pncconf/pncconf.glade:3872 -#: src/emc/usr_intf/pncconf/pncconf.glade:4753 -msgid " acd)" -msgstr " acd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9868 +#: src/emc/usr_intf/pncconf/pncconf.glade:12773 +#: src/emc/usr_intf/pncconf/pncconf.glade:17927 +#: src/emc/usr_intf/pncconf/pncconf.glade:20119 +#: src/emc/usr_intf/pncconf/pncconf.glade:21648 +#: src/emc/usr_intf/pncconf/pncconf.glade:23444 +#: src/emc/usr_intf/pncconf/pncconf.glade:25240 +msgid "45:" +msgstr "45:" -#: src/emc/usr_intf/pncconf/pncconf.glade:2622 -#: src/emc/usr_intf/pncconf/pncconf.glade:3004 -#: src/emc/usr_intf/pncconf/pncconf.glade:3885 -#: src/emc/usr_intf/pncconf/pncconf.glade:4766 -msgid " bcd)" -msgstr " bcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9884 +#: src/emc/usr_intf/pncconf/pncconf.glade:12757 +#: src/emc/usr_intf/pncconf/pncconf.glade:17911 +#: src/emc/usr_intf/pncconf/pncconf.glade:20103 +#: src/emc/usr_intf/pncconf/pncconf.glade:21664 +#: src/emc/usr_intf/pncconf/pncconf.glade:23460 +#: src/emc/usr_intf/pncconf/pncconf.glade:25256 +msgid "43:" +msgstr "43:" -#: src/emc/usr_intf/pncconf/pncconf.glade:2635 -#: src/emc/usr_intf/pncconf/pncconf.glade:3017 -#: src/emc/usr_intf/pncconf/pncconf.glade:3898 -#: src/emc/usr_intf/pncconf/pncconf.glade:4779 -msgid " abcd)" -msgstr " abcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9900 +#: src/emc/usr_intf/pncconf/pncconf.glade:12741 +#: src/emc/usr_intf/pncconf/pncconf.glade:17895 +#: src/emc/usr_intf/pncconf/pncconf.glade:20087 +#: src/emc/usr_intf/pncconf/pncconf.glade:21680 +#: src/emc/usr_intf/pncconf/pncconf.glade:23476 +#: src/emc/usr_intf/pncconf/pncconf.glade:25272 +msgid "41:" +msgstr "41:" -#: src/emc/usr_intf/pncconf/pncconf.glade:2648 -#: src/emc/usr_intf/pncconf/pncconf.glade:2979 -#: src/emc/usr_intf/pncconf/pncconf.glade:3860 -#: src/emc/usr_intf/pncconf/pncconf.glade:4741 -msgid " d)" -msgstr "d)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9916 +#: src/emc/usr_intf/pncconf/pncconf.glade:12725 +#: src/emc/usr_intf/pncconf/pncconf.glade:17879 +#: src/emc/usr_intf/pncconf/pncconf.glade:20071 +#: src/emc/usr_intf/pncconf/pncconf.glade:21696 +#: src/emc/usr_intf/pncconf/pncconf.glade:23492 +#: src/emc/usr_intf/pncconf/pncconf.glade:25288 +msgid "39:" +msgstr "39:" -#: src/emc/usr_intf/pncconf/pncconf.glade:2664 -msgid "increments" -msgstr "incrementi" +#: src/emc/usr_intf/pncconf/pncconf.glade:9932 +#: src/emc/usr_intf/pncconf/pncconf.glade:12709 +#: src/emc/usr_intf/pncconf/pncconf.glade:17863 +#: src/emc/usr_intf/pncconf/pncconf.glade:20055 +#: src/emc/usr_intf/pncconf/pncconf.glade:21712 +#: src/emc/usr_intf/pncconf/pncconf.glade:23508 +#: src/emc/usr_intf/pncconf/pncconf.glade:25304 +msgid "37:" +msgstr "37:" -#: src/emc/usr_intf/pncconf/pncconf.glade:2708 -msgid "External MPG Jogging" -msgstr "Movimento MPG Esterno" +#: src/emc/usr_intf/pncconf/pncconf.glade:9948 +#: src/emc/usr_intf/pncconf/pncconf.glade:12693 +#: src/emc/usr_intf/pncconf/pncconf.glade:17847 +#: src/emc/usr_intf/pncconf/pncconf.glade:20039 +#: src/emc/usr_intf/pncconf/pncconf.glade:21728 +#: src/emc/usr_intf/pncconf/pncconf.glade:23524 +#: src/emc/usr_intf/pncconf/pncconf.glade:25320 +msgid "35:" +msgstr "35:" -#: src/emc/usr_intf/pncconf/pncconf.glade:2739 -#: src/emc/usr_intf/pncconf/pncconf.glade:3620 -#: src/emc/usr_intf/pncconf/pncconf.glade:4501 -msgid "Use MPG " -msgstr "Usa MPG " +#: src/emc/usr_intf/pncconf/pncconf.glade:9964 +#: src/emc/usr_intf/pncconf/pncconf.glade:12677 +#: src/emc/usr_intf/pncconf/pncconf.glade:17831 +#: src/emc/usr_intf/pncconf/pncconf.glade:20023 +#: src/emc/usr_intf/pncconf/pncconf.glade:21744 +#: src/emc/usr_intf/pncconf/pncconf.glade:23540 +#: src/emc/usr_intf/pncconf/pncconf.glade:25336 +msgid "33:" +msgstr "33:" -#: src/emc/usr_intf/pncconf/pncconf.glade:2752 -#: src/emc/usr_intf/pncconf/pncconf.glade:3633 -#: src/emc/usr_intf/pncconf/pncconf.glade:4514 -msgid "use switches" -msgstr "Usa Interruttori " +#: src/emc/usr_intf/pncconf/pncconf.glade:10337 +#: src/emc/usr_intf/pncconf/pncconf.glade:12304 +#: src/emc/usr_intf/pncconf/pncconf.glade:17458 +#: src/emc/usr_intf/pncconf/pncconf.glade:19762 +#: src/emc/usr_intf/pncconf/pncconf.glade:22005 +#: src/emc/usr_intf/pncconf/pncconf.glade:23801 +#: src/emc/usr_intf/pncconf/pncconf.glade:25597 +msgid "25:" +msgstr "25:" -#: src/emc/usr_intf/pncconf/pncconf.glade:2838 -#: src/emc/usr_intf/pncconf/pncconf.glade:3733 -#: src/emc/usr_intf/pncconf/pncconf.glade:4614 -msgid "ignore all-inputs false" -msgstr "ignora tutti gli inputs falsi" +#: src/emc/usr_intf/pncconf/pncconf.glade:10353 +#: src/emc/usr_intf/pncconf/pncconf.glade:12288 +#: src/emc/usr_intf/pncconf/pncconf.glade:17442 +#: src/emc/usr_intf/pncconf/pncconf.glade:19746 +#: src/emc/usr_intf/pncconf/pncconf.glade:22021 +#: src/emc/usr_intf/pncconf/pncconf.glade:23817 +#: src/emc/usr_intf/pncconf/pncconf.glade:25613 +msgid "27:" +msgstr "27:" -#: src/emc/usr_intf/pncconf/pncconf.glade:2853 -#: src/emc/usr_intf/pncconf/pncconf.glade:3748 -#: src/emc/usr_intf/pncconf/pncconf.glade:4629 -msgid "use graycode" -msgstr "usa codice gray" +#: src/emc/usr_intf/pncconf/pncconf.glade:10369 +#: src/emc/usr_intf/pncconf/pncconf.glade:12272 +#: src/emc/usr_intf/pncconf/pncconf.glade:17426 +#: src/emc/usr_intf/pncconf/pncconf.glade:19730 +#: src/emc/usr_intf/pncconf/pncconf.glade:22037 +#: src/emc/usr_intf/pncconf/pncconf.glade:23833 +#: src/emc/usr_intf/pncconf/pncconf.glade:25629 +msgid "29:" +msgstr "29:" -#: src/emc/usr_intf/pncconf/pncconf.glade:2940 -#: src/emc/usr_intf/pncconf/pncconf.glade:3821 -#: src/emc/usr_intf/pncconf/pncconf.glade:4702 -msgid " abd)" -msgstr " abd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:10385 +#: src/emc/usr_intf/pncconf/pncconf.glade:12256 +#: src/emc/usr_intf/pncconf/pncconf.glade:17410 +#: src/emc/usr_intf/pncconf/pncconf.glade:19714 +#: src/emc/usr_intf/pncconf/pncconf.glade:22053 +#: src/emc/usr_intf/pncconf/pncconf.glade:23849 +#: src/emc/usr_intf/pncconf/pncconf.glade:25645 +msgid "31:" +msgstr "31:" -#: src/emc/usr_intf/pncconf/pncconf.glade:3555 -#: src/emc/usr_intf/pncconf/pncconf.glade:4436 -#: src/emc/usr_intf/pncconf/pncconf.glade:5317 -msgid "Increments" -msgstr "Incrementi" +#: src/emc/usr_intf/pncconf/pncconf.glade:10677 +#: src/emc/usr_intf/pncconf/pncconf.glade:10689 +#: src/emc/usr_intf/pncconf/pncconf.glade:11955 +#: src/emc/usr_intf/pncconf/pncconf.glade:11967 +#: src/emc/usr_intf/pncconf/pncconf.glade:14464 +#: src/emc/usr_intf/pncconf/pncconf.glade:14476 +#: src/emc/usr_intf/pncconf/pncconf.glade:17161 +#: src/emc/usr_intf/pncconf/pncconf.glade:17173 +#: src/emc/usr_intf/pncconf/pncconf.glade:19567 +#: src/emc/usr_intf/pncconf/pncconf.glade:19579 +#: src/emc/usr_intf/pncconf/pncconf.glade:22190 +#: src/emc/usr_intf/pncconf/pncconf.glade:22202 +#: src/emc/usr_intf/pncconf/pncconf.glade:23986 +#: src/emc/usr_intf/pncconf/pncconf.glade:23998 +#: src/emc/usr_intf/pncconf/pncconf.glade:25782 +#: src/emc/usr_intf/pncconf/pncconf.glade:25794 +#: src/emc/usr_intf/pncconf/pncconf.glade:28287 +#: src/emc/usr_intf/pncconf/pncconf.glade:28299 +#: src/emc/usr_intf/pncconf/pncconf.glade:29415 +#: src/emc/usr_intf/pncconf/pncconf.glade:29427 +#: src/emc/usr_intf/pncconf/pncconf.glade:32869 +#: src/emc/usr_intf/pncconf/pncconf.glade:33760 +#: src/emc/usr_intf/pncconf/pncconf.glade:33772 +#: src/emc/usr_intf/pncconf/pncconf.glade:37771 +#: src/emc/usr_intf/pncconf/pncconf.glade:37783 +#: src/emc/usr_intf/pncconf/pncconf.glade:38777 +#: src/emc/usr_intf/pncconf/pncconf.glade:38789 +#: src/emc/usr_intf/pncconf/pncconf.glade:42131 +#: src/emc/usr_intf/pncconf/pncconf.glade:42143 +#: src/emc/usr_intf/pncconf/pncconf.glade:43259 +#: src/emc/usr_intf/pncconf/pncconf.glade:43271 +#: src/emc/usr_intf/pncconf/pncconf.glade:46702 +#: src/emc/usr_intf/pncconf/pncconf.glade:46714 +#: src/emc/usr_intf/pncconf/pncconf.glade:49054 +#: src/emc/usr_intf/pncconf/pncconf.glade:49066 +#: src/emc/usr_intf/pncconf/pncconf.glade:50182 +#: src/emc/usr_intf/pncconf/pncconf.glade:50194 +#: src/emc/usr_intf/pncconf/pncconf.glade:53625 +#: src/emc/usr_intf/pncconf/pncconf.glade:53637 +#: src/emc/usr_intf/pncconf/pncconf.glade:55977 +#: src/emc/usr_intf/pncconf/pncconf.glade:55989 +#: src/emc/usr_intf/pncconf/pncconf.glade:57105 +#: src/emc/usr_intf/pncconf/pncconf.glade:57117 +#: src/emc/usr_intf/pncconf/pncconf.glade:60548 +#: src/emc/usr_intf/pncconf/pncconf.glade:60560 +msgid "function" +msgstr "funzione" -#: src/emc/usr_intf/pncconf/pncconf.glade:3589 -msgid "External Feed Override" -msgstr "Imposta Incr. Avanzamento" +#: src/emc/usr_intf/pncconf/pncconf.glade:10703 +#: src/emc/usr_intf/pncconf/pncconf.glade:11940 +#: src/emc/usr_intf/pncconf/pncconf.glade:14449 +#: src/emc/usr_intf/pncconf/pncconf.glade:17146 +#: src/emc/usr_intf/pncconf/pncconf.glade:19553 +#: src/emc/usr_intf/pncconf/pncconf.glade:22217 +#: src/emc/usr_intf/pncconf/pncconf.glade:24013 +#: src/emc/usr_intf/pncconf/pncconf.glade:25809 +msgid "Launch test panel" +msgstr "Avvio pannello test" -#: src/emc/usr_intf/pncconf/pncconf.glade:4470 -msgid "Max Velocity Override" -msgstr "Incr. avanzamento Max" +#: src/emc/usr_intf/pncconf/pncconf.glade:11192 +#: src/emc/usr_intf/pncconf/pncconf.glade:11204 +#: src/emc/usr_intf/pncconf/pncconf.glade:11440 +#: src/emc/usr_intf/pncconf/pncconf.glade:11454 +#: src/emc/usr_intf/pncconf/pncconf.glade:13949 +#: src/emc/usr_intf/pncconf/pncconf.glade:13963 +#: src/emc/usr_intf/pncconf/pncconf.glade:16645 +#: src/emc/usr_intf/pncconf/pncconf.glade:16659 +#: src/emc/usr_intf/pncconf/pncconf.glade:19190 +#: src/emc/usr_intf/pncconf/pncconf.glade:19204 +#: src/emc/usr_intf/pncconf/pncconf.glade:22567 +#: src/emc/usr_intf/pncconf/pncconf.glade:22579 +#: src/emc/usr_intf/pncconf/pncconf.glade:24363 +#: src/emc/usr_intf/pncconf/pncconf.glade:24375 +#: src/emc/usr_intf/pncconf/pncconf.glade:26159 +#: src/emc/usr_intf/pncconf/pncconf.glade:26171 +#: src/emc/usr_intf/pncconf/pncconf.glade:28772 +#: src/emc/usr_intf/pncconf/pncconf.glade:28784 +#: src/emc/usr_intf/pncconf/pncconf.glade:28917 +#: src/emc/usr_intf/pncconf/pncconf.glade:28931 +#: src/emc/usr_intf/pncconf/pncconf.glade:33102 +#: src/emc/usr_intf/pncconf/pncconf.glade:33275 +#: src/emc/usr_intf/pncconf/pncconf.glade:33289 +#: src/emc/usr_intf/pncconf/pncconf.glade:38269 +#: src/emc/usr_intf/pncconf/pncconf.glade:38281 +#: src/emc/usr_intf/pncconf/pncconf.glade:38532 +#: src/emc/usr_intf/pncconf/pncconf.glade:38546 +#: src/emc/usr_intf/pncconf/pncconf.glade:42616 +#: src/emc/usr_intf/pncconf/pncconf.glade:42628 +#: src/emc/usr_intf/pncconf/pncconf.glade:42761 +#: src/emc/usr_intf/pncconf/pncconf.glade:42775 +#: src/emc/usr_intf/pncconf/pncconf.glade:46947 +#: src/emc/usr_intf/pncconf/pncconf.glade:46959 +#: src/emc/usr_intf/pncconf/pncconf.glade:49539 +#: src/emc/usr_intf/pncconf/pncconf.glade:49551 +#: src/emc/usr_intf/pncconf/pncconf.glade:49684 +#: src/emc/usr_intf/pncconf/pncconf.glade:49698 +#: src/emc/usr_intf/pncconf/pncconf.glade:53870 +#: src/emc/usr_intf/pncconf/pncconf.glade:53882 +#: src/emc/usr_intf/pncconf/pncconf.glade:56462 +#: src/emc/usr_intf/pncconf/pncconf.glade:56474 +#: src/emc/usr_intf/pncconf/pncconf.glade:56607 +#: src/emc/usr_intf/pncconf/pncconf.glade:56621 +#: src/emc/usr_intf/pncconf/pncconf.glade:60793 +#: src/emc/usr_intf/pncconf/pncconf.glade:60805 +msgid "Num" +msgstr "Num" -#: src/emc/usr_intf/pncconf/pncconf.glade:5351 -msgid "External Spindle Override" -msgstr ">b>Imposta Incr. Mandrino>/b>" +#: src/emc/usr_intf/pncconf/pncconf.glade:11222 +msgid "" +" I/O\n" +"Connector 2" +msgstr "" +" I/O\n" +" Connettore 2" -#: src/emc/usr_intf/pncconf/pncconf.glade:5379 -msgid "GUI configuration" -msgstr "Configurazione GUI" +#: src/emc/usr_intf/pncconf/pncconf.glade:13835 +msgid "" +" I/O\n" +" Connector 3" +msgstr "" +" I/O\n" +"Connettore 3" -#: src/emc/usr_intf/pncconf/pncconf.glade:5398 -msgid "Frontend" -msgstr "Frontend" +#: src/emc/usr_intf/pncconf/pncconf.glade:16281 +#: src/emc/usr_intf/pncconf/pncconf.glade:16295 +#: src/emc/usr_intf/pncconf/pncconf.glade:16322 +#: src/emc/usr_intf/pncconf/pncconf.glade:26441 +#: src/emc/usr_intf/pncconf/pncconf.glade:26468 +#: src/emc/usr_intf/pncconf/pncconf.glade:26482 +#: src/emc/usr_intf/pncconf/pncconf.glade:31232 +#: src/emc/usr_intf/pncconf/pncconf.glade:31246 +#: src/emc/usr_intf/pncconf/pncconf.glade:31273 +#: src/emc/usr_intf/pncconf/pncconf.glade:31708 +#: src/emc/usr_intf/pncconf/pncconf.glade:31735 +#: src/emc/usr_intf/pncconf/pncconf.glade:31749 +#: src/emc/usr_intf/pncconf/pncconf.glade:35577 +#: src/emc/usr_intf/pncconf/pncconf.glade:35591 +#: src/emc/usr_intf/pncconf/pncconf.glade:35618 +#: src/emc/usr_intf/pncconf/pncconf.glade:35925 +#: src/emc/usr_intf/pncconf/pncconf.glade:35952 +#: src/emc/usr_intf/pncconf/pncconf.glade:35966 +#: src/emc/usr_intf/pncconf/pncconf.glade:39909 +#: src/emc/usr_intf/pncconf/pncconf.glade:39923 +#: src/emc/usr_intf/pncconf/pncconf.glade:39950 +#: src/emc/usr_intf/pncconf/pncconf.glade:40285 +#: src/emc/usr_intf/pncconf/pncconf.glade:40312 +#: src/emc/usr_intf/pncconf/pncconf.glade:40326 +#: src/emc/usr_intf/pncconf/pncconf.glade:45076 +#: src/emc/usr_intf/pncconf/pncconf.glade:45090 +#: src/emc/usr_intf/pncconf/pncconf.glade:45117 +#: src/emc/usr_intf/pncconf/pncconf.glade:45541 +#: src/emc/usr_intf/pncconf/pncconf.glade:45568 +#: src/emc/usr_intf/pncconf/pncconf.glade:45582 +#: src/emc/usr_intf/pncconf/pncconf.glade:47208 +#: src/emc/usr_intf/pncconf/pncconf.glade:47235 +#: src/emc/usr_intf/pncconf/pncconf.glade:47249 +#: src/emc/usr_intf/pncconf/pncconf.glade:51999 +#: src/emc/usr_intf/pncconf/pncconf.glade:52013 +#: src/emc/usr_intf/pncconf/pncconf.glade:52040 +#: src/emc/usr_intf/pncconf/pncconf.glade:52464 +#: src/emc/usr_intf/pncconf/pncconf.glade:52491 +#: src/emc/usr_intf/pncconf/pncconf.glade:52505 +#: src/emc/usr_intf/pncconf/pncconf.glade:54131 +#: src/emc/usr_intf/pncconf/pncconf.glade:54158 +#: src/emc/usr_intf/pncconf/pncconf.glade:54172 +#: src/emc/usr_intf/pncconf/pncconf.glade:58922 +#: src/emc/usr_intf/pncconf/pncconf.glade:58936 +#: src/emc/usr_intf/pncconf/pncconf.glade:58963 +#: src/emc/usr_intf/pncconf/pncconf.glade:59387 +#: src/emc/usr_intf/pncconf/pncconf.glade:59414 +#: src/emc/usr_intf/pncconf/pncconf.glade:59428 +msgid " " +msgstr " " -#: src/emc/usr_intf/pncconf/pncconf.glade:5557 +#: src/emc/usr_intf/pncconf/pncconf.glade:16427 msgid "" -"Commanded\n" -"Actual" +" I/O\n" +" Connector 4" msgstr "" -"Comandato\n" -"Reale" +" I/O\n" +" Connettore 4" -#: src/emc/usr_intf/pncconf/pncconf.glade:5570 +#: src/emc/usr_intf/pncconf/pncconf.glade:19041 msgid "" -"Machine\n" -"Relative\n" +" I/O\n" +" Connector 5" msgstr "" -"Macchina\n" -"Relativo\n" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5608 -msgid "Max Feed Override" -msgstr "Incr. avanzamento Max" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5667 -msgid "Min Spindle Override" -msgstr "Superamento Mandrino min" +" I/O\n" +" Connettore 5" -#: src/emc/usr_intf/pncconf/pncconf.glade:5691 -msgid "Max Spindle Override " -msgstr "Superamento Mandrino Max" +#: src/emc/usr_intf/pncconf/pncconf.glade:20837 +msgid "" +" I/O\n" +"Connector 6" +msgstr "" +" I/O\n" +"Connettore 6" -#: src/emc/usr_intf/pncconf/pncconf.glade:5702 -msgid "Position_feedback" -msgstr "Posizione_lettura" +#: src/emc/usr_intf/pncconf/pncconf.glade:22633 +msgid "" +" I/O\n" +"Connector 7" +msgstr "" +" I/O\n" +"Connettore 7" -#: src/emc/usr_intf/pncconf/pncconf.glade:5713 -msgid "Position_offset" -msgstr "Posizione_distanza" +#: src/emc/usr_intf/pncconf/pncconf.glade:24429 +msgid "" +" I/O\n" +"Connector 8" +msgstr "" +" I/O\n" +"Connettore 8" -#: src/emc/usr_intf/pncconf/pncconf.glade:5721 -msgid "General GUI Defaults" -msgstr "GUI Generale Standard " +#: src/emc/usr_intf/pncconf/pncconf.glade:26225 +msgid "" +" I/O\n" +" Connector 9" +msgstr "" +" I/O\n" +"Connettore 9" -#: src/emc/usr_intf/pncconf/pncconf.glade:5808 -msgid "Force Axis to Maximize" -msgstr "Forza Axis a Massimizare" +#: src/emc/usr_intf/pncconf/pncconf.glade:31378 +#: src/emc/usr_intf/pncconf/pncconf.glade:38299 +#: src/emc/usr_intf/pncconf/pncconf.glade:45222 +#: src/emc/usr_intf/pncconf/pncconf.glade:52145 +#: src/emc/usr_intf/pncconf/pncconf.glade:59068 +msgid "page 2" +msgstr "pagina 2" -#: src/emc/usr_intf/pncconf/pncconf.glade:5832 -#: src/emc/usr_intf/pncconf/pncconf.glade:6602 -#: src/emc/usr_intf/pncconf/pncconf.glade:6841 -#: src/emc/usr_intf/pncconf/pncconf.glade:7328 -msgid "H" -msgstr "H" +#: src/emc/usr_intf/pncconf/pncconf.glade:33131 +#: src/emc/usr_intf/pncconf/pncconf.glade:40054 +#: src/emc/usr_intf/pncconf/pncconf.glade:46977 +#: src/emc/usr_intf/pncconf/pncconf.glade:53900 +#: src/emc/usr_intf/pncconf/pncconf.glade:60823 +msgid "page 3" +msgstr "pagina 3" -#: src/emc/usr_intf/pncconf/pncconf.glade:5866 -#: src/emc/usr_intf/pncconf/pncconf.glade:6568 -#: src/emc/usr_intf/pncconf/pncconf.glade:6875 -#: src/emc/usr_intf/pncconf/pncconf.glade:7294 -msgid "W" -msgstr "W" +#: src/emc/usr_intf/pncconf/pncconf.glade:33147 +msgid "Smart Serial 0" +msgstr "Smart Serial 0" -#: src/emc/usr_intf/pncconf/pncconf.glade:5876 -#: src/emc/usr_intf/pncconf/pncconf.glade:6556 -#: src/emc/usr_intf/pncconf/pncconf.glade:6885 -#: src/emc/usr_intf/pncconf/pncconf.glade:7282 -msgid "X" -msgstr "X" +#: src/emc/usr_intf/pncconf/pncconf.glade:40070 +msgid "Smart Serial 1" +msgstr "Smart Serial 1" -#: src/emc/usr_intf/pncconf/pncconf.glade:5914 -#: src/emc/usr_intf/pncconf/pncconf.glade:6519 -#: src/emc/usr_intf/pncconf/pncconf.glade:6923 -#: src/emc/usr_intf/pncconf/pncconf.glade:7244 -msgid "Position" -msgstr "Posizione" +#: src/emc/usr_intf/pncconf/pncconf.glade:46993 +msgid "Smart Serial 2" +msgstr "Smart Serial 2" -#: src/emc/usr_intf/pncconf/pncconf.glade:5927 -#: src/emc/usr_intf/pncconf/pncconf.glade:6510 -#: src/emc/usr_intf/pncconf/pncconf.glade:6936 -#: src/emc/usr_intf/pncconf/pncconf.glade:7234 -msgid "size" -msgstr "dimensione" +#: src/emc/usr_intf/pncconf/pncconf.glade:53916 +msgid "Smart Serial 3" +msgstr "Smart Serial 3" -#: src/emc/usr_intf/pncconf/pncconf.glade:5942 -#: src/emc/usr_intf/pncconf/pncconf.glade:5952 -#: src/emc/usr_intf/pncconf/pncconf.glade:6158 -msgid "mm / min" -msgstr "mm / min" +#: src/emc/usr_intf/pncconf/pncconf.glade:60839 +#, fuzzy +msgid "Smart Serial 4" +msgstr "Smart Serial 0" -#: src/emc/usr_intf/pncconf/pncconf.glade:5975 -#: src/emc/usr_intf/pncconf/pncconf.glade:5985 -#: src/emc/usr_intf/pncconf/pncconf.glade:5997 -msgid "Deg / min" -msgstr "Gradi / min" +#: src/emc/usr_intf/pncconf/pncconf.glade:60861 +msgid "First Parallel Port Setup" +msgstr "Setup Prima Porta Parallela" -#: src/emc/usr_intf/pncconf/pncconf.glade:6010 -msgid "xyzabc" -msgstr "xyzabc" +#: src/emc/usr_intf/pncconf/pncconf.glade:60946 +msgid "Launch Test Panel" +msgstr "Avvio Pannello Test" -#: src/emc/usr_intf/pncconf/pncconf.glade:6023 -msgid "Axis Geometry" -msgstr "Geometria Axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:62374 +msgid "Inputs (Machine to PC):" +msgstr "Inputs (Fresatrice a PC):" -#: src/emc/usr_intf/pncconf/pncconf.glade:6048 -msgid "Max Angular velocity" -msgstr "Velocita' Angolare Massima" +#: src/emc/usr_intf/pncconf/pncconf.glade:62929 +msgid "Outputs (PC to Machine):" +msgstr "Outputs (PC verso Fresatrice):" -#: src/emc/usr_intf/pncconf/pncconf.glade:6061 -msgid "5mm 1mm .5mm .1mm .05mm .01mm .005mm" -msgstr "5mm 1mm .5mm .1mm .05mm .01mm .005mm" +#: src/emc/usr_intf/pncconf/pncconf.glade:62950 +msgid "X Axis Motor/Encoder Configuration" +msgstr "Configurazione Motore/encoder Asse X" -#: src/emc/usr_intf/pncconf/pncconf.glade:6074 -msgid "Increments " -msgstr "Incrementi " +#: src/emc/usr_intf/pncconf/pncconf.glade:63005 +#, fuzzy +msgid "Max Output" +msgstr "Max Uscita Dac:" -#: src/emc/usr_intf/pncconf/pncconf.glade:6099 -msgid "Min Angular velocity" -msgstr "Velocita' Angolare Min:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63070 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF2" +msgstr "FF2" -#: src/emc/usr_intf/pncconf/pncconf.glade:6112 -msgid "gedit" -msgstr "gedit" +#: src/emc/usr_intf/pncconf/pncconf.glade:63083 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF1" +msgstr "FF1" -#: src/emc/usr_intf/pncconf/pncconf.glade:6148 -msgid "Default Angular velocity " -msgstr "Velocità Angolare standard" +#: src/emc/usr_intf/pncconf/pncconf.glade:63096 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF0" +msgstr "FF0" -#: src/emc/usr_intf/pncconf/pncconf.glade:6211 -msgid "Max linear velocity" -msgstr "Velocita' lineare Max:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63143 +msgid "Deadband" +msgstr "Zona neutra" -#: src/emc/usr_intf/pncconf/pncconf.glade:6222 -msgid "Min linear velocity" -msgstr "Velocita' lineare min" +#: src/emc/usr_intf/pncconf/pncconf.glade:63156 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Bias" +msgstr "Disturbo" -#: src/emc/usr_intf/pncconf/pncconf.glade:6233 -msgid "Default linear velocity " -msgstr "Velocita' lineare standard:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63169 +msgid "P" +msgstr "P" -#: src/emc/usr_intf/pncconf/pncconf.glade:6241 -msgid "AXIS defaults" -msgstr "AXIS Standard" +#: src/emc/usr_intf/pncconf/pncconf.glade:63180 +msgid "I" +msgstr "I" -#: src/emc/usr_intf/pncconf/pncconf.glade:6352 -msgid "Error Textcolor" -msgstr "Errore Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:63193 +msgid "D" +msgstr "D" -#: src/emc/usr_intf/pncconf/pncconf.glade:6365 -msgid "DTG Textcolor" -msgstr "DTG Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:63258 +msgid "Servo Info" +msgstr "Informazioni Servo" -#: src/emc/usr_intf/pncconf/pncconf.glade:6378 -msgid "Relative Textcolor" -msgstr "Textcolor Relativa" +#: src/emc/usr_intf/pncconf/pncconf.glade:63337 +msgid "3pwm Scale:" +msgstr "Scala 3pwm:" -#: src/emc/usr_intf/pncconf/pncconf.glade:6391 -msgid "Absolute Textcolor" -msgstr "Textcolor Assoluto" +#: src/emc/usr_intf/pncconf/pncconf.glade:63348 +msgid "3pwm Deadtime:" +msgstr "3pwmTempo morto:" -#: src/emc/usr_intf/pncconf/pncconf.glade:6454 -msgid "Absolute Text Color" -msgstr "Colore Testo Assoluto" +#: src/emc/usr_intf/pncconf/pncconf.glade:63361 +msgid "Quad Pulses / Rev:" +msgstr "Impulsi Quad / giro" -#: src/emc/usr_intf/pncconf/pncconf.glade:6479 -#: src/emc/usr_intf/pncconf/pncconf.glade:7148 -msgid "GTK Theme" -msgstr "Tema GTK " +#: src/emc/usr_intf/pncconf/pncconf.glade:63438 +msgid "" +"Open Loop\n" +" Test" +msgstr "" +"Anello Aperto\n" +" Test" -#: src/emc/usr_intf/pncconf/pncconf.glade:6491 -#: src/emc/usr_intf/pncconf/pncconf.glade:7158 -msgid "Follow System Theme\n" -msgstr "Segue Tema Sistema\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:63462 +#, fuzzy +msgid "Analog Min Limit:" +msgstr "Limite Min Mandrino:" -#: src/emc/usr_intf/pncconf/pncconf.glade:6624 -msgid "Force Touchy to Maximize after positioning" -msgstr "Forza Touchy alla Massimizzazione dopo il posizionamento" +#: src/emc/usr_intf/pncconf/pncconf.glade:63476 +#, fuzzy +msgid "Analog Max limit:" +msgstr "Limite Max Mandrino:" -#: src/emc/usr_intf/pncconf/pncconf.glade:6669 -msgid "GUI Options" -msgstr "Opzioni GUI" +#: src/emc/usr_intf/pncconf/pncconf.glade:63490 +msgid "Analog Max Scale:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6700 -msgid "Virtual Control Panel" -msgstr "Pannello Controllo Virtuale" +#: src/emc/usr_intf/pncconf/pncconf.glade:63554 +msgid "Output Info" +msgstr "Info Output" -#: src/emc/usr_intf/pncconf/pncconf.glade:6775 -msgid "XYZ buttons (uses Halui)" -msgstr "Bottoni XYZ (usa Halui)" +#: src/emc/usr_intf/pncconf/pncconf.glade:63603 +msgid "Step On-Time" +msgstr "Tempo Passo" -#: src/emc/usr_intf/pncconf/pncconf.glade:6946 -msgid "Geometry Options" -msgstr "Opzioni Geometria" +#: src/emc/usr_intf/pncconf/pncconf.glade:63616 +msgid "Step Space" +msgstr "Spazio Passo" -#: src/emc/usr_intf/pncconf/pncconf.glade:7025 -msgid "Pyvcp Details" -msgstr "Dettagli Pyvcp" +#: src/emc/usr_intf/pncconf/pncconf.glade:63659 +msgid "Direction Hold" +msgstr "Mantiene Direzione" -#: src/emc/usr_intf/pncconf/pncconf.glade:7097 -msgid "Sample display " -msgstr "Schermo campione" +#: src/emc/usr_intf/pncconf/pncconf.glade:63672 +msgid "Direction Setup" +msgstr "Setup Direzione" -#: src/emc/usr_intf/pncconf/pncconf.glade:7172 -msgid "Force Maximize" -msgstr "Forza Massimizzazione" +#: src/emc/usr_intf/pncconf/pncconf.glade:63715 +msgid "Driver Type:" +msgstr "Tipo Driver:" -#: src/emc/usr_intf/pncconf/pncconf.glade:7186 -msgid "Center Tab Embeded" -msgstr "Integrato Tab Centrale" +#: src/emc/usr_intf/pncconf/pncconf.glade:63748 +msgid "Stepper Info" +msgstr "Informazioni Stepper" -#: src/emc/usr_intf/pncconf/pncconf.glade:7201 -msgid "Rightside Embeded" -msgstr "Integrato Rightside" +#: src/emc/usr_intf/pncconf/pncconf.glade:63800 +msgid "No feedback" +msgstr "Nessun feedback" -#: src/emc/usr_intf/pncconf/pncconf.glade:7217 -msgid "Standalone Panel" -msgstr "Pannello Statico" +#: src/emc/usr_intf/pncconf/pncconf.glade:63810 +msgid "Absolute Feedback" +msgstr "Feedback Assoluto" -#: src/emc/usr_intf/pncconf/pncconf.glade:7351 -msgid "Display Options" -msgstr "Opzioni Visualizzazione" +#: src/emc/usr_intf/pncconf/pncconf.glade:63824 +msgid "Incremental Feedback" +msgstr "Feedback Incrementale" -#: src/emc/usr_intf/pncconf/pncconf.glade:7401 -msgid "Max RPM" -msgstr "Max giri/min" +#: src/emc/usr_intf/pncconf/pncconf.glade:63838 +msgid "Incremental Encoder" +msgstr "Encoder Incrementale" -#: src/emc/usr_intf/pncconf/pncconf.glade:7414 -msgid "Spindle Speed Indicator" -msgstr "Indicatore Rotazione Mandrino" +#: src/emc/usr_intf/pncconf/pncconf.glade:63850 +msgid "Hall sensors" +msgstr "Sensori di Hall " -#: src/emc/usr_intf/pncconf/pncconf.glade:7426 -msgid "Spindle At Speed LED" -msgstr "LED Velocità Mandrino" +#: src/emc/usr_intf/pncconf/pncconf.glade:63862 +msgid "Fanuc Red Cap " +msgstr "Fanuc Red Cap " -#: src/emc/usr_intf/pncconf/pncconf.glade:7438 -msgid "Zero X Button" -msgstr "Tasto X Zero" +#: src/emc/usr_intf/pncconf/pncconf.glade:63874 +msgid "Use encoder Index" +msgstr "Usa Indice Encoder" -#: src/emc/usr_intf/pncconf/pncconf.glade:7450 -msgid "Zero Y Button" -msgstr "Tasto Y Zero" +#: src/emc/usr_intf/pncconf/pncconf.glade:63905 +msgid "Input Options" +msgstr "Opzioni Input" -#: src/emc/usr_intf/pncconf/pncconf.glade:7462 -msgid "Zero Z Button" -msgstr "Tasto Z Zero" +#: src/emc/usr_intf/pncconf/pncconf.glade:63929 +msgid "Digital instead of PWM outputs" +msgstr "Input digitale al posto di output PWM " -#: src/emc/usr_intf/pncconf/pncconf.glade:7474 -msgid "Zero A Button" -msgstr "Tasto A Zero" +#: src/emc/usr_intf/pncconf/pncconf.glade:63938 +msgid "6 outputs instead of 3 " +msgstr "6 uscite invece di 3" -#: src/emc/usr_intf/pncconf/pncconf.glade:7486 -msgid "Requires Classicladder touch-off program" -msgstr "Richiede programma touch-off Classicladder" +#: src/emc/usr_intf/pncconf/pncconf.glade:63950 +msgid "Force Trapezoid Mode" +msgstr "Forza Modo Trapezoidale" -#: src/emc/usr_intf/pncconf/pncconf.glade:7487 -msgid "Auto Z Touch Off Button" -msgstr "Bottone Auto Z Touch Off " +#: src/emc/usr_intf/pncconf/pncconf.glade:63962 +msgid "Emulate feedback " +msgstr "Emulazione feedback " -#: src/emc/usr_intf/pncconf/pncconf.glade:7500 -msgid "Sample Options" -msgstr " Opzione Esempi " +#: src/emc/usr_intf/pncconf/pncconf.glade:63974 +msgid "Emulated Hall sensors" +msgstr "Emulazione sensori Hall " -#: src/emc/usr_intf/pncconf/pncconf.glade:7574 -msgid "Gladevcp Details" -msgstr "Dettagli Gladevcp" +#: src/emc/usr_intf/pncconf/pncconf.glade:63987 +msgid "Emulated Fanuc Red Cap" +msgstr "Emulazione Fanuc Red Cap" -#: src/emc/usr_intf/pncconf/pncconf.glade:7597 -msgid "Include custom GladeVCP GUI panel" -msgstr "Includi Panello GUI GladeVCP personalizzato" +#: src/emc/usr_intf/pncconf/pncconf.glade:64014 +msgid "8i20 Max Current" +msgstr "Corrente Max 8i20" -#: src/emc/usr_intf/pncconf/pncconf.glade:7668 -msgid "Restore joint position after shutdown" -msgstr "Riprende posizione asse dopo chiusura" +#: src/emc/usr_intf/pncconf/pncconf.glade:64048 +msgid "Output Options" +msgstr "Opzioni Uscita" -#: src/emc/usr_intf/pncconf/pncconf.glade:7683 -msgid "Move spindle up before tool change" -msgstr "Sposta mandrino in alto prima del cambio utensile" +#: src/emc/usr_intf/pncconf/pncconf.glade:64103 +msgid "alignment current" +msgstr "allineamento corrente" -#: src/emc/usr_intf/pncconf/pncconf.glade:7696 -msgid "Leave spindle on during tool change" -msgstr "Lascia mandrino acceso durante cambio utensile" +#: src/emc/usr_intf/pncconf/pncconf.glade:64113 +msgid "lead angle" +msgstr "angolo inclinazione" -#: src/emc/usr_intf/pncconf/pncconf.glade:7709 -msgid "Popup Toolchange Prompt" -msgstr "Pannello Popup Cambio Utensile" +#: src/emc/usr_intf/pncconf/pncconf.glade:64213 +msgid "Reverse" +msgstr "Indietro" -#: src/emc/usr_intf/pncconf/pncconf.glade:7723 -msgid "Require homing before MDI / Running" -msgstr "Richiede azzeramento prima di MDI / Lavorazione" +#: src/emc/usr_intf/pncconf/pncconf.glade:64223 +msgid "Input-pattern" +msgstr "Input-pattern" -#: src/emc/usr_intf/pncconf/pncconf.glade:7732 -msgid "Random position toolchanger " -msgstr "Posizione cambioutensile random" +#: src/emc/usr_intf/pncconf/pncconf.glade:64233 +msgid "output-pattern" +msgstr "output-pattern" -#: src/emc/usr_intf/pncconf/pncconf.glade:7747 -msgid "Force individual manual homing" -msgstr "Forza azzeramento individuale manuale" +#: src/emc/usr_intf/pncconf/pncconf.glade:64243 +msgid "Drive-offset" +msgstr "Drive-offset" -#: src/emc/usr_intf/pncconf/pncconf.glade:7761 -msgid "Defaults and Options" -msgstr "Standard e Opzioni" +#: src/emc/usr_intf/pncconf/pncconf.glade:64253 +msgid "Encoder-offset" +msgstr "Offset Encoder" -#: src/emc/usr_intf/pncconf/pncconf.glade:7789 -msgid "Mesa0 I/O setup\n" -msgstr "Mesa0 I/O setup\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:64263 +msgid "Poles" +msgstr "Poli" -#: src/emc/usr_intf/pncconf/pncconf.glade:7809 -msgid "" -"Click on each page tab to configure signal names for each connector port.\n" -"\n" -"Press the button to make the tabbed pages\n" -"accept the changes.\n" -msgstr "" -"Clicca su ogni pagina per configurare i nomi dei segnali per ogni porta del " -"connettore.\n" -"\n" -"Pressa il bottone per permettere alle varie pagine\n" -"di accettare le modifiche.\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:64283 +msgid "Configuration" +msgstr "Configurazione " -#: src/emc/usr_intf/pncconf/pncconf.glade:7998 -msgid "Num of channels: " -msgstr "Numero di Canali:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64318 +#, fuzzy +msgid "Use BLDC Motor Commutation Control" +msgstr "Uso Controllo Motore Brushless " -#: src/emc/usr_intf/pncconf/pncconf.glade:8036 -msgid "7i29 daughter board" -msgstr "scheda madre 7i29 " +#: src/emc/usr_intf/pncconf/pncconf.glade:64354 +msgid "Scale:" +msgstr "Scala:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8045 -msgid "7i30 daughter board" -msgstr "scheda madre 7i30 " +#: src/emc/usr_intf/pncconf/pncconf.glade:64375 +msgid "% " +msgstr "% " -#: src/emc/usr_intf/pncconf/pncconf.glade:8057 -msgid "7i33 daughter board" -msgstr "scheda madre 7i33" +#: src/emc/usr_intf/pncconf/pncconf.glade:64394 +msgid "Range:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8069 -msgid "7i40 daughter board" -msgstr "scheda madre 7i40 " +#: src/emc/usr_intf/pncconf/pncconf.glade:64419 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "RPM" +msgstr "giri/min" -#: src/emc/usr_intf/pncconf/pncconf.glade:8081 -msgid "7i48 daughter board" -msgstr "scheda madre 7i48" +#: src/emc/usr_intf/pncconf/pncconf.glade:64439 +msgid "Use Spindle-At-Speed" +msgstr "Usa Mandrino a velocità" -#: src/emc/usr_intf/pncconf/pncconf.glade:8096 -msgid "Sanity Checks" -msgstr "Controlli Sicurezza" +#: src/emc/usr_intf/pncconf/pncconf.glade:64464 +msgid "Filter gain:" +msgstr "Guadagno Filtro " -#: src/emc/usr_intf/pncconf/pncconf.glade:8137 -msgid "Num of Smart Serial Ports:" -msgstr "Num di porte Seriali Smart:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64499 +msgid "Spindle Display Filter Settings" +msgstr "Spindle Display Filter Settings" -#: src/emc/usr_intf/pncconf/pncconf.glade:8148 -msgid "Board name" -msgstr "Nome scheda" +#: src/emc/usr_intf/pncconf/pncconf.glade:64565 +msgid "Rapid Speed Following Error:" +msgstr "Errore Inseguimento Velocità Rapido:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8155 -msgid "Num of step generators: " -msgstr "Num di generatori passi:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64577 +msgid "Feed Speed Following Error:" +msgstr "Errore Inseguimento Velocità Avanzamento:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8166 -msgid "Num of pwm generators:" -msgstr "Num di generatori pwm:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64591 +msgid "Invert Motor Direction" +msgstr "Inverti Direzione Motore" -#: src/emc/usr_intf/pncconf/pncconf.glade:8177 -msgid "Num of encoders:" -msgstr "Num di encoder:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64606 +msgid "Invert Encoder Direction " +msgstr "Inverti Direzione Encoder " -#: src/emc/usr_intf/pncconf/pncconf.glade:8294 -msgid "Watchdog timeout:" -msgstr "Intervallo attesa:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64661 +msgid "Single Input Encoder" +msgstr "Encoder Ingresso Singolo" -#: src/emc/usr_intf/pncconf/pncconf.glade:8305 -msgid "PDM base frequency:" -msgstr "Frequenza base PDM:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64776 +msgid "encoder Scale:" +msgstr "scala Encoder:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8316 -msgid "PWM base frequency:" -msgstr "Frequenza base PWM:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64801 +msgid "Stepper Scale:" +msgstr "Scala Stepper:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8328 +#: src/emc/usr_intf/pncconf/pncconf.glade:64831 msgid "" -"Accept components\n" -" Changes" +"Calculate\n" +"Scale" msgstr "" -"Accetta componenti\n" -" Cambi" - -#: src/emc/usr_intf/pncconf/pncconf.glade:8356 -msgid "Total number of pins:" -msgstr "Numero totale di pin:" +"Calcola\n" +"Scala" -#: src/emc/usr_intf/pncconf/pncconf.glade:8389 -msgid "Num of 3 pwm generators: " -msgstr "Num di 3 generatori pwm:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64901 +msgid "Test / Tune Axis" +msgstr "Test/Regolazione Asse" -#: src/emc/usr_intf/pncconf/pncconf.glade:8412 -msgid "SVST8_4" -msgstr "SVST8_4" +#: src/emc/usr_intf/pncconf/pncconf.glade:64943 +msgid "X Axis Configuration" +msgstr "Configurazione Asse X" -#: src/emc/usr_intf/pncconf/pncconf.glade:8437 -msgid "Firmware:" -msgstr "Firmware:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65155 +msgid "" +"NO\n" +"YES" +msgstr "" +"NO\n" +"SI" -#: src/emc/usr_intf/pncconf/pncconf.glade:8447 -msgid "Mesa parport address:" -msgstr "Indirizzo Porta Parallela Mesa:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65171 +msgid "Use Encoder Index For Home:" +msgstr "Use Indice Encoder per Zero:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8482 -msgid "3PWM base frequency:" -msgstr "Frequenza base 3PWM:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65212 +msgid "Home Final Velocity:" +msgstr "Velocita' finale Zero:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8504 +#: src/emc/usr_intf/pncconf/pncconf.glade:65222 msgid "" -"Configuration\n" -" Page" +"Same\n" +"Opposite" msgstr "" -"Configurazione\n" -" Pagina" +"Stesso\n" +"Opposta" -#: src/emc/usr_intf/pncconf/pncconf.glade:8698 -#: src/emc/usr_intf/pncconf/pncconf.glade:8712 -#: src/emc/usr_intf/pncconf/pncconf.glade:13677 -#: src/emc/usr_intf/pncconf/pncconf.glade:13689 -#: src/emc/usr_intf/pncconf/pncconf.glade:16373 -#: src/emc/usr_intf/pncconf/pncconf.glade:16385 -#: src/emc/usr_intf/pncconf/pncconf.glade:18883 -#: src/emc/usr_intf/pncconf/pncconf.glade:18895 -#: src/emc/usr_intf/pncconf/pncconf.glade:20747 -#: src/emc/usr_intf/pncconf/pncconf.glade:20759 -#: src/emc/usr_intf/pncconf/pncconf.glade:20962 -#: src/emc/usr_intf/pncconf/pncconf.glade:20976 -#: src/emc/usr_intf/pncconf/pncconf.glade:22758 -#: src/emc/usr_intf/pncconf/pncconf.glade:22772 -#: src/emc/usr_intf/pncconf/pncconf.glade:24554 -#: src/emc/usr_intf/pncconf/pncconf.glade:24568 -#: src/emc/usr_intf/pncconf/pncconf.glade:26330 -#: src/emc/usr_intf/pncconf/pncconf.glade:26344 -#: src/emc/usr_intf/pncconf/pncconf.glade:31324 -#: src/emc/usr_intf/pncconf/pncconf.glade:31336 -#: src/emc/usr_intf/pncconf/pncconf.glade:31600 -#: src/emc/usr_intf/pncconf/pncconf.glade:35669 -#: src/emc/usr_intf/pncconf/pncconf.glade:35681 -#: src/emc/usr_intf/pncconf/pncconf.glade:35814 -#: src/emc/usr_intf/pncconf/pncconf.glade:35828 -#: src/emc/usr_intf/pncconf/pncconf.glade:40000 -#: src/emc/usr_intf/pncconf/pncconf.glade:40012 -#: src/emc/usr_intf/pncconf/pncconf.glade:40174 -#: src/emc/usr_intf/pncconf/pncconf.glade:40188 -#: src/emc/usr_intf/pncconf/pncconf.glade:45168 -#: src/emc/usr_intf/pncconf/pncconf.glade:45180 -#: src/emc/usr_intf/pncconf/pncconf.glade:45431 -#: src/emc/usr_intf/pncconf/pncconf.glade:45445 -#: src/emc/usr_intf/pncconf/pncconf.glade:47097 -#: src/emc/usr_intf/pncconf/pncconf.glade:47111 -#: src/emc/usr_intf/pncconf/pncconf.glade:52091 -#: src/emc/usr_intf/pncconf/pncconf.glade:52103 -#: src/emc/usr_intf/pncconf/pncconf.glade:52354 -#: src/emc/usr_intf/pncconf/pncconf.glade:52368 -msgid "Num" -msgstr "Num" +#: src/emc/usr_intf/pncconf/pncconf.glade:65238 +msgid "Home Latch Direction:" +msgstr "Direzione Ricerca Zero:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8723 -#: src/emc/usr_intf/pncconf/pncconf.glade:8743 -#: src/emc/usr_intf/pncconf/pncconf.glade:8763 -#: src/emc/usr_intf/pncconf/pncconf.glade:8783 -#: src/emc/usr_intf/pncconf/pncconf.glade:8803 -#: src/emc/usr_intf/pncconf/pncconf.glade:8823 -#: src/emc/usr_intf/pncconf/pncconf.glade:8843 -#: src/emc/usr_intf/pncconf/pncconf.glade:8863 -#: src/emc/usr_intf/pncconf/pncconf.glade:8883 -#: src/emc/usr_intf/pncconf/pncconf.glade:8903 -#: src/emc/usr_intf/pncconf/pncconf.glade:8923 -#: src/emc/usr_intf/pncconf/pncconf.glade:8943 -#: src/emc/usr_intf/pncconf/pncconf.glade:8963 -#: src/emc/usr_intf/pncconf/pncconf.glade:8983 -#: src/emc/usr_intf/pncconf/pncconf.glade:9003 -#: src/emc/usr_intf/pncconf/pncconf.glade:9023 -#: src/emc/usr_intf/pncconf/pncconf.glade:9043 -#: src/emc/usr_intf/pncconf/pncconf.glade:9063 -#: src/emc/usr_intf/pncconf/pncconf.glade:9083 -#: src/emc/usr_intf/pncconf/pncconf.glade:9103 -#: src/emc/usr_intf/pncconf/pncconf.glade:9123 -#: src/emc/usr_intf/pncconf/pncconf.glade:9143 -#: src/emc/usr_intf/pncconf/pncconf.glade:9163 -#: src/emc/usr_intf/pncconf/pncconf.glade:11027 -#: src/emc/usr_intf/pncconf/pncconf.glade:11353 -#: src/emc/usr_intf/pncconf/pncconf.glade:13216 -#: src/emc/usr_intf/pncconf/pncconf.glade:13236 -#: src/emc/usr_intf/pncconf/pncconf.glade:13256 -#: src/emc/usr_intf/pncconf/pncconf.glade:13276 -#: src/emc/usr_intf/pncconf/pncconf.glade:13296 -#: src/emc/usr_intf/pncconf/pncconf.glade:13316 -#: src/emc/usr_intf/pncconf/pncconf.glade:13336 -#: src/emc/usr_intf/pncconf/pncconf.glade:13356 -#: src/emc/usr_intf/pncconf/pncconf.glade:13376 -#: src/emc/usr_intf/pncconf/pncconf.glade:13396 -#: src/emc/usr_intf/pncconf/pncconf.glade:13416 -#: src/emc/usr_intf/pncconf/pncconf.glade:13436 -#: src/emc/usr_intf/pncconf/pncconf.glade:13456 -#: src/emc/usr_intf/pncconf/pncconf.glade:13476 -#: src/emc/usr_intf/pncconf/pncconf.glade:13496 -#: src/emc/usr_intf/pncconf/pncconf.glade:13516 -#: src/emc/usr_intf/pncconf/pncconf.glade:13536 -#: src/emc/usr_intf/pncconf/pncconf.glade:13556 -#: src/emc/usr_intf/pncconf/pncconf.glade:13576 -#: src/emc/usr_intf/pncconf/pncconf.glade:13596 -#: src/emc/usr_intf/pncconf/pncconf.glade:13616 -#: src/emc/usr_intf/pncconf/pncconf.glade:13636 -#: src/emc/usr_intf/pncconf/pncconf.glade:13656 -#: src/emc/usr_intf/pncconf/pncconf.glade:13966 -#: src/emc/usr_intf/pncconf/pncconf.glade:15912 -#: src/emc/usr_intf/pncconf/pncconf.glade:15932 -#: src/emc/usr_intf/pncconf/pncconf.glade:15952 -#: src/emc/usr_intf/pncconf/pncconf.glade:15972 -#: src/emc/usr_intf/pncconf/pncconf.glade:15992 -#: src/emc/usr_intf/pncconf/pncconf.glade:16012 -#: src/emc/usr_intf/pncconf/pncconf.glade:16032 -#: src/emc/usr_intf/pncconf/pncconf.glade:16052 -#: src/emc/usr_intf/pncconf/pncconf.glade:16072 -#: src/emc/usr_intf/pncconf/pncconf.glade:16092 -#: src/emc/usr_intf/pncconf/pncconf.glade:16112 -#: src/emc/usr_intf/pncconf/pncconf.glade:16132 -#: src/emc/usr_intf/pncconf/pncconf.glade:16152 -#: src/emc/usr_intf/pncconf/pncconf.glade:16172 -#: src/emc/usr_intf/pncconf/pncconf.glade:16192 -#: src/emc/usr_intf/pncconf/pncconf.glade:16212 -#: src/emc/usr_intf/pncconf/pncconf.glade:16232 -#: src/emc/usr_intf/pncconf/pncconf.glade:16252 -#: src/emc/usr_intf/pncconf/pncconf.glade:16272 -#: src/emc/usr_intf/pncconf/pncconf.glade:16292 -#: src/emc/usr_intf/pncconf/pncconf.glade:16312 -#: src/emc/usr_intf/pncconf/pncconf.glade:16332 -#: src/emc/usr_intf/pncconf/pncconf.glade:16352 -#: src/emc/usr_intf/pncconf/pncconf.glade:16558 -#: src/emc/usr_intf/pncconf/pncconf.glade:18422 -#: src/emc/usr_intf/pncconf/pncconf.glade:18442 -#: src/emc/usr_intf/pncconf/pncconf.glade:18462 -#: src/emc/usr_intf/pncconf/pncconf.glade:18482 -#: src/emc/usr_intf/pncconf/pncconf.glade:18502 -#: src/emc/usr_intf/pncconf/pncconf.glade:18522 -#: src/emc/usr_intf/pncconf/pncconf.glade:18542 -#: src/emc/usr_intf/pncconf/pncconf.glade:18562 -#: src/emc/usr_intf/pncconf/pncconf.glade:18582 -#: src/emc/usr_intf/pncconf/pncconf.glade:18602 -#: src/emc/usr_intf/pncconf/pncconf.glade:18622 -#: src/emc/usr_intf/pncconf/pncconf.glade:18642 -#: src/emc/usr_intf/pncconf/pncconf.glade:18662 -#: src/emc/usr_intf/pncconf/pncconf.glade:18682 -#: src/emc/usr_intf/pncconf/pncconf.glade:18702 -#: src/emc/usr_intf/pncconf/pncconf.glade:18722 -#: src/emc/usr_intf/pncconf/pncconf.glade:18742 -#: src/emc/usr_intf/pncconf/pncconf.glade:18762 -#: src/emc/usr_intf/pncconf/pncconf.glade:18782 -#: src/emc/usr_intf/pncconf/pncconf.glade:18802 -#: src/emc/usr_intf/pncconf/pncconf.glade:18822 -#: src/emc/usr_intf/pncconf/pncconf.glade:18842 -#: src/emc/usr_intf/pncconf/pncconf.glade:18862 -#: src/emc/usr_intf/pncconf/pncconf.glade:26355 -#: src/emc/usr_intf/pncconf/pncconf.glade:26375 -#: src/emc/usr_intf/pncconf/pncconf.glade:26395 -#: src/emc/usr_intf/pncconf/pncconf.glade:26415 -#: src/emc/usr_intf/pncconf/pncconf.glade:26435 -#: src/emc/usr_intf/pncconf/pncconf.glade:26455 -#: src/emc/usr_intf/pncconf/pncconf.glade:26475 -#: src/emc/usr_intf/pncconf/pncconf.glade:26495 -#: src/emc/usr_intf/pncconf/pncconf.glade:26515 -#: src/emc/usr_intf/pncconf/pncconf.glade:26535 -#: src/emc/usr_intf/pncconf/pncconf.glade:26555 -#: src/emc/usr_intf/pncconf/pncconf.glade:26575 -#: src/emc/usr_intf/pncconf/pncconf.glade:26595 -#: src/emc/usr_intf/pncconf/pncconf.glade:26615 -#: src/emc/usr_intf/pncconf/pncconf.glade:26635 -#: src/emc/usr_intf/pncconf/pncconf.glade:26655 -#: src/emc/usr_intf/pncconf/pncconf.glade:26675 -#: src/emc/usr_intf/pncconf/pncconf.glade:26695 -#: src/emc/usr_intf/pncconf/pncconf.glade:26715 -#: src/emc/usr_intf/pncconf/pncconf.glade:26735 -#: src/emc/usr_intf/pncconf/pncconf.glade:26755 -#: src/emc/usr_intf/pncconf/pncconf.glade:26775 -#: src/emc/usr_intf/pncconf/pncconf.glade:26795 -#: src/emc/usr_intf/pncconf/pncconf.glade:28711 -#: src/emc/usr_intf/pncconf/pncconf.glade:28934 -#: src/emc/usr_intf/pncconf/pncconf.glade:30863 -#: src/emc/usr_intf/pncconf/pncconf.glade:30883 -#: src/emc/usr_intf/pncconf/pncconf.glade:30903 -#: src/emc/usr_intf/pncconf/pncconf.glade:30923 -#: src/emc/usr_intf/pncconf/pncconf.glade:30943 -#: src/emc/usr_intf/pncconf/pncconf.glade:30963 -#: src/emc/usr_intf/pncconf/pncconf.glade:30983 -#: src/emc/usr_intf/pncconf/pncconf.glade:31003 -#: src/emc/usr_intf/pncconf/pncconf.glade:31023 -#: src/emc/usr_intf/pncconf/pncconf.glade:31043 -#: src/emc/usr_intf/pncconf/pncconf.glade:31063 -#: src/emc/usr_intf/pncconf/pncconf.glade:31083 -#: src/emc/usr_intf/pncconf/pncconf.glade:31103 -#: src/emc/usr_intf/pncconf/pncconf.glade:31123 -#: src/emc/usr_intf/pncconf/pncconf.glade:31143 -#: src/emc/usr_intf/pncconf/pncconf.glade:31163 -#: src/emc/usr_intf/pncconf/pncconf.glade:31183 -#: src/emc/usr_intf/pncconf/pncconf.glade:31203 -#: src/emc/usr_intf/pncconf/pncconf.glade:31223 -#: src/emc/usr_intf/pncconf/pncconf.glade:31243 -#: src/emc/usr_intf/pncconf/pncconf.glade:31263 -#: src/emc/usr_intf/pncconf/pncconf.glade:31283 -#: src/emc/usr_intf/pncconf/pncconf.glade:31303 -#: src/emc/usr_intf/pncconf/pncconf.glade:31611 -#: src/emc/usr_intf/pncconf/pncconf.glade:31631 -#: src/emc/usr_intf/pncconf/pncconf.glade:31651 -#: src/emc/usr_intf/pncconf/pncconf.glade:31671 -#: src/emc/usr_intf/pncconf/pncconf.glade:31691 -#: src/emc/usr_intf/pncconf/pncconf.glade:31711 -#: src/emc/usr_intf/pncconf/pncconf.glade:31731 -#: src/emc/usr_intf/pncconf/pncconf.glade:31751 -#: src/emc/usr_intf/pncconf/pncconf.glade:31771 -#: src/emc/usr_intf/pncconf/pncconf.glade:31791 -#: src/emc/usr_intf/pncconf/pncconf.glade:31811 -#: src/emc/usr_intf/pncconf/pncconf.glade:33029 -#: src/emc/usr_intf/pncconf/pncconf.glade:33292 -#: src/emc/usr_intf/pncconf/pncconf.glade:35208 -#: src/emc/usr_intf/pncconf/pncconf.glade:35228 -#: src/emc/usr_intf/pncconf/pncconf.glade:35248 -#: src/emc/usr_intf/pncconf/pncconf.glade:35268 -#: src/emc/usr_intf/pncconf/pncconf.glade:35288 -#: src/emc/usr_intf/pncconf/pncconf.glade:35308 -#: src/emc/usr_intf/pncconf/pncconf.glade:35328 -#: src/emc/usr_intf/pncconf/pncconf.glade:35348 -#: src/emc/usr_intf/pncconf/pncconf.glade:35368 -#: src/emc/usr_intf/pncconf/pncconf.glade:35388 -#: src/emc/usr_intf/pncconf/pncconf.glade:35408 -#: src/emc/usr_intf/pncconf/pncconf.glade:35428 -#: src/emc/usr_intf/pncconf/pncconf.glade:35448 -#: src/emc/usr_intf/pncconf/pncconf.glade:35468 -#: src/emc/usr_intf/pncconf/pncconf.glade:35488 -#: src/emc/usr_intf/pncconf/pncconf.glade:35508 -#: src/emc/usr_intf/pncconf/pncconf.glade:35528 -#: src/emc/usr_intf/pncconf/pncconf.glade:35548 -#: src/emc/usr_intf/pncconf/pncconf.glade:35568 -#: src/emc/usr_intf/pncconf/pncconf.glade:35588 -#: src/emc/usr_intf/pncconf/pncconf.glade:35608 -#: src/emc/usr_intf/pncconf/pncconf.glade:35628 -#: src/emc/usr_intf/pncconf/pncconf.glade:35648 -#: src/emc/usr_intf/pncconf/pncconf.glade:35839 -#: src/emc/usr_intf/pncconf/pncconf.glade:35859 -#: src/emc/usr_intf/pncconf/pncconf.glade:35879 -#: src/emc/usr_intf/pncconf/pncconf.glade:35899 -#: src/emc/usr_intf/pncconf/pncconf.glade:35919 -#: src/emc/usr_intf/pncconf/pncconf.glade:35939 -#: src/emc/usr_intf/pncconf/pncconf.glade:35959 -#: src/emc/usr_intf/pncconf/pncconf.glade:35979 -#: src/emc/usr_intf/pncconf/pncconf.glade:35999 -#: src/emc/usr_intf/pncconf/pncconf.glade:36019 -#: src/emc/usr_intf/pncconf/pncconf.glade:36039 -#: src/emc/usr_intf/pncconf/pncconf.glade:36059 -#: src/emc/usr_intf/pncconf/pncconf.glade:36079 -#: src/emc/usr_intf/pncconf/pncconf.glade:36099 -#: src/emc/usr_intf/pncconf/pncconf.glade:36119 -#: src/emc/usr_intf/pncconf/pncconf.glade:36139 -#: src/emc/usr_intf/pncconf/pncconf.glade:36159 -#: src/emc/usr_intf/pncconf/pncconf.glade:36179 -#: src/emc/usr_intf/pncconf/pncconf.glade:36199 -#: src/emc/usr_intf/pncconf/pncconf.glade:36219 -#: src/emc/usr_intf/pncconf/pncconf.glade:36239 -#: src/emc/usr_intf/pncconf/pncconf.glade:36259 -#: src/emc/usr_intf/pncconf/pncconf.glade:36279 -#: src/emc/usr_intf/pncconf/pncconf.glade:38208 -#: src/emc/usr_intf/pncconf/pncconf.glade:38549 -#: src/emc/usr_intf/pncconf/pncconf.glade:39779 -#: src/emc/usr_intf/pncconf/pncconf.glade:39799 -#: src/emc/usr_intf/pncconf/pncconf.glade:39819 -#: src/emc/usr_intf/pncconf/pncconf.glade:39839 -#: src/emc/usr_intf/pncconf/pncconf.glade:39859 -#: src/emc/usr_intf/pncconf/pncconf.glade:39879 -#: src/emc/usr_intf/pncconf/pncconf.glade:39899 -#: src/emc/usr_intf/pncconf/pncconf.glade:39919 -#: src/emc/usr_intf/pncconf/pncconf.glade:39939 -#: src/emc/usr_intf/pncconf/pncconf.glade:39959 -#: src/emc/usr_intf/pncconf/pncconf.glade:39979 -#: src/emc/usr_intf/pncconf/pncconf.glade:40199 -#: src/emc/usr_intf/pncconf/pncconf.glade:40219 -#: src/emc/usr_intf/pncconf/pncconf.glade:40239 -#: src/emc/usr_intf/pncconf/pncconf.glade:40259 -#: src/emc/usr_intf/pncconf/pncconf.glade:40279 -#: src/emc/usr_intf/pncconf/pncconf.glade:40299 -#: src/emc/usr_intf/pncconf/pncconf.glade:40319 -#: src/emc/usr_intf/pncconf/pncconf.glade:40339 -#: src/emc/usr_intf/pncconf/pncconf.glade:40359 -#: src/emc/usr_intf/pncconf/pncconf.glade:40379 -#: src/emc/usr_intf/pncconf/pncconf.glade:40399 -#: src/emc/usr_intf/pncconf/pncconf.glade:40419 -#: src/emc/usr_intf/pncconf/pncconf.glade:40439 -#: src/emc/usr_intf/pncconf/pncconf.glade:40459 -#: src/emc/usr_intf/pncconf/pncconf.glade:40479 -#: src/emc/usr_intf/pncconf/pncconf.glade:40499 -#: src/emc/usr_intf/pncconf/pncconf.glade:40519 -#: src/emc/usr_intf/pncconf/pncconf.glade:40539 -#: src/emc/usr_intf/pncconf/pncconf.glade:40559 -#: src/emc/usr_intf/pncconf/pncconf.glade:40579 -#: src/emc/usr_intf/pncconf/pncconf.glade:40599 -#: src/emc/usr_intf/pncconf/pncconf.glade:40619 -#: src/emc/usr_intf/pncconf/pncconf.glade:40639 -#: src/emc/usr_intf/pncconf/pncconf.glade:42555 -#: src/emc/usr_intf/pncconf/pncconf.glade:42778 -#: src/emc/usr_intf/pncconf/pncconf.glade:44707 -#: src/emc/usr_intf/pncconf/pncconf.glade:44727 -#: src/emc/usr_intf/pncconf/pncconf.glade:44747 -#: src/emc/usr_intf/pncconf/pncconf.glade:44767 -#: src/emc/usr_intf/pncconf/pncconf.glade:44787 -#: src/emc/usr_intf/pncconf/pncconf.glade:44807 -#: src/emc/usr_intf/pncconf/pncconf.glade:44827 -#: src/emc/usr_intf/pncconf/pncconf.glade:44847 -#: src/emc/usr_intf/pncconf/pncconf.glade:44867 -#: src/emc/usr_intf/pncconf/pncconf.glade:44887 -#: src/emc/usr_intf/pncconf/pncconf.glade:44907 -#: src/emc/usr_intf/pncconf/pncconf.glade:44927 -#: src/emc/usr_intf/pncconf/pncconf.glade:44947 -#: src/emc/usr_intf/pncconf/pncconf.glade:44967 -#: src/emc/usr_intf/pncconf/pncconf.glade:44987 -#: src/emc/usr_intf/pncconf/pncconf.glade:45007 -#: src/emc/usr_intf/pncconf/pncconf.glade:45027 -#: src/emc/usr_intf/pncconf/pncconf.glade:45047 -#: src/emc/usr_intf/pncconf/pncconf.glade:45067 -#: src/emc/usr_intf/pncconf/pncconf.glade:45087 -#: src/emc/usr_intf/pncconf/pncconf.glade:45107 -#: src/emc/usr_intf/pncconf/pncconf.glade:45127 -#: src/emc/usr_intf/pncconf/pncconf.glade:45147 -#: src/emc/usr_intf/pncconf/pncconf.glade:45456 -#: src/emc/usr_intf/pncconf/pncconf.glade:45476 -#: src/emc/usr_intf/pncconf/pncconf.glade:45496 -#: src/emc/usr_intf/pncconf/pncconf.glade:45516 -#: src/emc/usr_intf/pncconf/pncconf.glade:45536 -#: src/emc/usr_intf/pncconf/pncconf.glade:45556 -#: src/emc/usr_intf/pncconf/pncconf.glade:45576 -#: src/emc/usr_intf/pncconf/pncconf.glade:45596 -#: src/emc/usr_intf/pncconf/pncconf.glade:45616 -#: src/emc/usr_intf/pncconf/pncconf.glade:45636 -#: src/emc/usr_intf/pncconf/pncconf.glade:45656 -#: src/emc/usr_intf/pncconf/pncconf.glade:46886 -#: src/emc/usr_intf/pncconf/pncconf.glade:47122 -#: src/emc/usr_intf/pncconf/pncconf.glade:47142 -#: src/emc/usr_intf/pncconf/pncconf.glade:47162 -#: src/emc/usr_intf/pncconf/pncconf.glade:47182 -#: src/emc/usr_intf/pncconf/pncconf.glade:47202 -#: src/emc/usr_intf/pncconf/pncconf.glade:47222 -#: src/emc/usr_intf/pncconf/pncconf.glade:47242 -#: src/emc/usr_intf/pncconf/pncconf.glade:47262 -#: src/emc/usr_intf/pncconf/pncconf.glade:47282 -#: src/emc/usr_intf/pncconf/pncconf.glade:47302 -#: src/emc/usr_intf/pncconf/pncconf.glade:47322 -#: src/emc/usr_intf/pncconf/pncconf.glade:47342 -#: src/emc/usr_intf/pncconf/pncconf.glade:47362 -#: src/emc/usr_intf/pncconf/pncconf.glade:47382 -#: src/emc/usr_intf/pncconf/pncconf.glade:47402 -#: src/emc/usr_intf/pncconf/pncconf.glade:47422 -#: src/emc/usr_intf/pncconf/pncconf.glade:47442 -#: src/emc/usr_intf/pncconf/pncconf.glade:47462 -#: src/emc/usr_intf/pncconf/pncconf.glade:47482 -#: src/emc/usr_intf/pncconf/pncconf.glade:47502 -#: src/emc/usr_intf/pncconf/pncconf.glade:47522 -#: src/emc/usr_intf/pncconf/pncconf.glade:47542 -#: src/emc/usr_intf/pncconf/pncconf.glade:47562 -#: src/emc/usr_intf/pncconf/pncconf.glade:49478 -#: src/emc/usr_intf/pncconf/pncconf.glade:49701 -#: src/emc/usr_intf/pncconf/pncconf.glade:51630 -#: src/emc/usr_intf/pncconf/pncconf.glade:51650 -#: src/emc/usr_intf/pncconf/pncconf.glade:51670 -#: src/emc/usr_intf/pncconf/pncconf.glade:51690 -#: src/emc/usr_intf/pncconf/pncconf.glade:51710 -#: src/emc/usr_intf/pncconf/pncconf.glade:51730 -#: src/emc/usr_intf/pncconf/pncconf.glade:51750 -#: src/emc/usr_intf/pncconf/pncconf.glade:51770 -#: src/emc/usr_intf/pncconf/pncconf.glade:51790 -#: src/emc/usr_intf/pncconf/pncconf.glade:51810 -#: src/emc/usr_intf/pncconf/pncconf.glade:51830 -#: src/emc/usr_intf/pncconf/pncconf.glade:51850 -#: src/emc/usr_intf/pncconf/pncconf.glade:51870 -#: src/emc/usr_intf/pncconf/pncconf.glade:51890 -#: src/emc/usr_intf/pncconf/pncconf.glade:51910 -#: src/emc/usr_intf/pncconf/pncconf.glade:51930 -#: src/emc/usr_intf/pncconf/pncconf.glade:51950 -#: src/emc/usr_intf/pncconf/pncconf.glade:51970 -#: src/emc/usr_intf/pncconf/pncconf.glade:51990 -#: src/emc/usr_intf/pncconf/pncconf.glade:52010 -#: src/emc/usr_intf/pncconf/pncconf.glade:52030 -#: src/emc/usr_intf/pncconf/pncconf.glade:52050 -#: src/emc/usr_intf/pncconf/pncconf.glade:52070 -#: src/emc/usr_intf/pncconf/pncconf.glade:52379 -#: src/emc/usr_intf/pncconf/pncconf.glade:52399 -#: src/emc/usr_intf/pncconf/pncconf.glade:52419 -#: src/emc/usr_intf/pncconf/pncconf.glade:52439 -#: src/emc/usr_intf/pncconf/pncconf.glade:52459 -#: src/emc/usr_intf/pncconf/pncconf.glade:52479 -#: src/emc/usr_intf/pncconf/pncconf.glade:52499 -#: src/emc/usr_intf/pncconf/pncconf.glade:52519 -#: src/emc/usr_intf/pncconf/pncconf.glade:52539 -#: src/emc/usr_intf/pncconf/pncconf.glade:52559 -#: src/emc/usr_intf/pncconf/pncconf.glade:52579 -#: src/emc/usr_intf/pncconf/pncconf.glade:53809 +#: src/emc/usr_intf/pncconf/pncconf.glade:65251 msgid "" -"GPIO Input\n" -"GPIO Output\n" -"GPIO O Drain\n" -"Encoder\n" -"PWM\n" -"StepGen\n" +"Towards Negative limit\n" +"Towards Positive limit" msgstr "" -"GPIO Input\n" -"GPIO Output\n" -"GPIO O Drain\n" -"Encoder\n" -"PWM\n" -"StepGen\n" +"Verso limite Negativo\n" +"Verso limite Positivo" -#: src/emc/usr_intf/pncconf/pncconf.glade:9198 -#: src/emc/usr_intf/pncconf/pncconf.glade:13188 -#: src/emc/usr_intf/pncconf/pncconf.glade:15884 -#: src/emc/usr_intf/pncconf/pncconf.glade:18394 -#: src/emc/usr_intf/pncconf/pncconf.glade:20397 -#: src/emc/usr_intf/pncconf/pncconf.glade:21325 -#: src/emc/usr_intf/pncconf/pncconf.glade:23121 -#: src/emc/usr_intf/pncconf/pncconf.glade:24917 -msgid "Launch test panel" -msgstr "Avvio pannello test" +#: src/emc/usr_intf/pncconf/pncconf.glade:65267 +msgid "Home Search Direction:" +msgstr "Direzione Ricerca Zero: " -#: src/emc/usr_intf/pncconf/pncconf.glade:9213 -#: src/emc/usr_intf/pncconf/pncconf.glade:9225 -#: src/emc/usr_intf/pncconf/pncconf.glade:13162 -#: src/emc/usr_intf/pncconf/pncconf.glade:13174 -#: src/emc/usr_intf/pncconf/pncconf.glade:15858 -#: src/emc/usr_intf/pncconf/pncconf.glade:15870 -#: src/emc/usr_intf/pncconf/pncconf.glade:18367 -#: src/emc/usr_intf/pncconf/pncconf.glade:18379 -#: src/emc/usr_intf/pncconf/pncconf.glade:20370 -#: src/emc/usr_intf/pncconf/pncconf.glade:20382 -#: src/emc/usr_intf/pncconf/pncconf.glade:21339 -#: src/emc/usr_intf/pncconf/pncconf.glade:21351 -#: src/emc/usr_intf/pncconf/pncconf.glade:23135 -#: src/emc/usr_intf/pncconf/pncconf.glade:23147 -#: src/emc/usr_intf/pncconf/pncconf.glade:24931 -#: src/emc/usr_intf/pncconf/pncconf.glade:24943 -#: src/emc/usr_intf/pncconf/pncconf.glade:26815 -#: src/emc/usr_intf/pncconf/pncconf.glade:26827 -#: src/emc/usr_intf/pncconf/pncconf.glade:30826 -#: src/emc/usr_intf/pncconf/pncconf.glade:30838 -#: src/emc/usr_intf/pncconf/pncconf.glade:31831 -#: src/emc/usr_intf/pncconf/pncconf.glade:35184 -#: src/emc/usr_intf/pncconf/pncconf.glade:35196 -#: src/emc/usr_intf/pncconf/pncconf.glade:36312 -#: src/emc/usr_intf/pncconf/pncconf.glade:36324 -#: src/emc/usr_intf/pncconf/pncconf.glade:39755 -#: src/emc/usr_intf/pncconf/pncconf.glade:39767 -#: src/emc/usr_intf/pncconf/pncconf.glade:40659 -#: src/emc/usr_intf/pncconf/pncconf.glade:40671 -#: src/emc/usr_intf/pncconf/pncconf.glade:44670 -#: src/emc/usr_intf/pncconf/pncconf.glade:44682 -#: src/emc/usr_intf/pncconf/pncconf.glade:45676 -#: src/emc/usr_intf/pncconf/pncconf.glade:45688 -#: src/emc/usr_intf/pncconf/pncconf.glade:47582 -#: src/emc/usr_intf/pncconf/pncconf.glade:47594 -#: src/emc/usr_intf/pncconf/pncconf.glade:51593 -#: src/emc/usr_intf/pncconf/pncconf.glade:51605 -#: src/emc/usr_intf/pncconf/pncconf.glade:52599 -#: src/emc/usr_intf/pncconf/pncconf.glade:52611 -msgid "function" -msgstr "funzione" +#: src/emc/usr_intf/pncconf/pncconf.glade:65309 +msgid "Home latch Velocity:" +msgstr "Velocita' ricerca Zero:" -#: src/emc/usr_intf/pncconf/pncconf.glade:9305 -#: src/emc/usr_intf/pncconf/pncconf.glade:9357 -#: src/emc/usr_intf/pncconf/pncconf.glade:9409 -#: src/emc/usr_intf/pncconf/pncconf.glade:9461 -#: src/emc/usr_intf/pncconf/pncconf.glade:10301 -#: src/emc/usr_intf/pncconf/pncconf.glade:10353 -#: src/emc/usr_intf/pncconf/pncconf.glade:10405 -#: src/emc/usr_intf/pncconf/pncconf.glade:10457 -#: src/emc/usr_intf/pncconf/pncconf.glade:10509 -#: src/emc/usr_intf/pncconf/pncconf.glade:10561 -#: src/emc/usr_intf/pncconf/pncconf.glade:10613 -#: src/emc/usr_intf/pncconf/pncconf.glade:10665 -#: src/emc/usr_intf/pncconf/pncconf.glade:10717 -#: src/emc/usr_intf/pncconf/pncconf.glade:10769 -#: src/emc/usr_intf/pncconf/pncconf.glade:11089 -#: src/emc/usr_intf/pncconf/pncconf.glade:11141 -#: src/emc/usr_intf/pncconf/pncconf.glade:11579 -#: src/emc/usr_intf/pncconf/pncconf.glade:11631 -#: src/emc/usr_intf/pncconf/pncconf.glade:11683 -#: src/emc/usr_intf/pncconf/pncconf.glade:11735 -#: src/emc/usr_intf/pncconf/pncconf.glade:11787 -#: src/emc/usr_intf/pncconf/pncconf.glade:11839 -#: src/emc/usr_intf/pncconf/pncconf.glade:11891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11943 -#: src/emc/usr_intf/pncconf/pncconf.glade:11995 -#: src/emc/usr_intf/pncconf/pncconf.glade:12047 -#: src/emc/usr_intf/pncconf/pncconf.glade:12886 -#: src/emc/usr_intf/pncconf/pncconf.glade:12938 -#: src/emc/usr_intf/pncconf/pncconf.glade:12990 -#: src/emc/usr_intf/pncconf/pncconf.glade:13042 -#: src/emc/usr_intf/pncconf/pncconf.glade:13702 -#: src/emc/usr_intf/pncconf/pncconf.glade:13754 -#: src/emc/usr_intf/pncconf/pncconf.glade:14183 -#: src/emc/usr_intf/pncconf/pncconf.glade:14235 -#: src/emc/usr_intf/pncconf/pncconf.glade:14287 -#: src/emc/usr_intf/pncconf/pncconf.glade:14339 -#: src/emc/usr_intf/pncconf/pncconf.glade:14391 -#: src/emc/usr_intf/pncconf/pncconf.glade:14443 -#: src/emc/usr_intf/pncconf/pncconf.glade:14495 -#: src/emc/usr_intf/pncconf/pncconf.glade:14547 -#: src/emc/usr_intf/pncconf/pncconf.glade:14599 -#: src/emc/usr_intf/pncconf/pncconf.glade:14651 -#: src/emc/usr_intf/pncconf/pncconf.glade:14703 -#: src/emc/usr_intf/pncconf/pncconf.glade:14755 -#: src/emc/usr_intf/pncconf/pncconf.glade:15582 -#: src/emc/usr_intf/pncconf/pncconf.glade:15634 -#: src/emc/usr_intf/pncconf/pncconf.glade:15686 -#: src/emc/usr_intf/pncconf/pncconf.glade:15738 -#: src/emc/usr_intf/pncconf/pncconf.glade:16784 -#: src/emc/usr_intf/pncconf/pncconf.glade:16836 -#: src/emc/usr_intf/pncconf/pncconf.glade:16888 -#: src/emc/usr_intf/pncconf/pncconf.glade:16940 -#: src/emc/usr_intf/pncconf/pncconf.glade:16992 -#: src/emc/usr_intf/pncconf/pncconf.glade:17044 -#: src/emc/usr_intf/pncconf/pncconf.glade:17096 -#: src/emc/usr_intf/pncconf/pncconf.glade:17148 -#: src/emc/usr_intf/pncconf/pncconf.glade:17200 -#: src/emc/usr_intf/pncconf/pncconf.glade:17252 -#: src/emc/usr_intf/pncconf/pncconf.glade:17304 -#: src/emc/usr_intf/pncconf/pncconf.glade:18143 -#: src/emc/usr_intf/pncconf/pncconf.glade:18195 -#: src/emc/usr_intf/pncconf/pncconf.glade:18247 -#: src/emc/usr_intf/pncconf/pncconf.glade:18908 -#: src/emc/usr_intf/pncconf/pncconf.glade:18960 -#: src/emc/usr_intf/pncconf/pncconf.glade:26907 -#: src/emc/usr_intf/pncconf/pncconf.glade:26959 -#: src/emc/usr_intf/pncconf/pncconf.glade:27011 -#: src/emc/usr_intf/pncconf/pncconf.glade:27063 -#: src/emc/usr_intf/pncconf/pncconf.glade:27890 -#: src/emc/usr_intf/pncconf/pncconf.glade:27942 -#: src/emc/usr_intf/pncconf/pncconf.glade:27994 -#: src/emc/usr_intf/pncconf/pncconf.glade:28046 -#: src/emc/usr_intf/pncconf/pncconf.glade:28098 -#: src/emc/usr_intf/pncconf/pncconf.glade:28150 -#: src/emc/usr_intf/pncconf/pncconf.glade:28202 -#: src/emc/usr_intf/pncconf/pncconf.glade:28254 -#: src/emc/usr_intf/pncconf/pncconf.glade:28306 -#: src/emc/usr_intf/pncconf/pncconf.glade:28358 -#: src/emc/usr_intf/pncconf/pncconf.glade:28410 -#: src/emc/usr_intf/pncconf/pncconf.glade:28462 -#: src/emc/usr_intf/pncconf/pncconf.glade:29151 -#: src/emc/usr_intf/pncconf/pncconf.glade:29203 -#: src/emc/usr_intf/pncconf/pncconf.glade:29255 -#: src/emc/usr_intf/pncconf/pncconf.glade:29307 -#: src/emc/usr_intf/pncconf/pncconf.glade:29359 -#: src/emc/usr_intf/pncconf/pncconf.glade:29411 -#: src/emc/usr_intf/pncconf/pncconf.glade:29463 -#: src/emc/usr_intf/pncconf/pncconf.glade:29515 -#: src/emc/usr_intf/pncconf/pncconf.glade:29567 -#: src/emc/usr_intf/pncconf/pncconf.glade:29619 -#: src/emc/usr_intf/pncconf/pncconf.glade:29671 -#: src/emc/usr_intf/pncconf/pncconf.glade:29723 -#: src/emc/usr_intf/pncconf/pncconf.glade:30550 -#: src/emc/usr_intf/pncconf/pncconf.glade:30602 -#: src/emc/usr_intf/pncconf/pncconf.glade:30654 -#: src/emc/usr_intf/pncconf/pncconf.glade:30706 -#: src/emc/usr_intf/pncconf/pncconf.glade:32210 -#: src/emc/usr_intf/pncconf/pncconf.glade:32262 -#: src/emc/usr_intf/pncconf/pncconf.glade:32314 -#: src/emc/usr_intf/pncconf/pncconf.glade:32366 -#: src/emc/usr_intf/pncconf/pncconf.glade:32418 -#: src/emc/usr_intf/pncconf/pncconf.glade:32470 -#: src/emc/usr_intf/pncconf/pncconf.glade:32522 -#: src/emc/usr_intf/pncconf/pncconf.glade:32574 -#: src/emc/usr_intf/pncconf/pncconf.glade:32626 -#: src/emc/usr_intf/pncconf/pncconf.glade:32678 -#: src/emc/usr_intf/pncconf/pncconf.glade:32730 -#: src/emc/usr_intf/pncconf/pncconf.glade:32782 -#: src/emc/usr_intf/pncconf/pncconf.glade:33509 -#: src/emc/usr_intf/pncconf/pncconf.glade:33561 -#: src/emc/usr_intf/pncconf/pncconf.glade:33613 -#: src/emc/usr_intf/pncconf/pncconf.glade:33665 -#: src/emc/usr_intf/pncconf/pncconf.glade:33717 -#: src/emc/usr_intf/pncconf/pncconf.glade:33769 -#: src/emc/usr_intf/pncconf/pncconf.glade:33821 -#: src/emc/usr_intf/pncconf/pncconf.glade:33873 -#: src/emc/usr_intf/pncconf/pncconf.glade:33925 -#: src/emc/usr_intf/pncconf/pncconf.glade:33977 -#: src/emc/usr_intf/pncconf/pncconf.glade:34029 -#: src/emc/usr_intf/pncconf/pncconf.glade:34081 -#: src/emc/usr_intf/pncconf/pncconf.glade:34908 -#: src/emc/usr_intf/pncconf/pncconf.glade:34960 -#: src/emc/usr_intf/pncconf/pncconf.glade:35012 -#: src/emc/usr_intf/pncconf/pncconf.glade:35064 -#: src/emc/usr_intf/pncconf/pncconf.glade:36404 -#: src/emc/usr_intf/pncconf/pncconf.glade:36456 -#: src/emc/usr_intf/pncconf/pncconf.glade:36508 -#: src/emc/usr_intf/pncconf/pncconf.glade:36560 -#: src/emc/usr_intf/pncconf/pncconf.glade:37387 -#: src/emc/usr_intf/pncconf/pncconf.glade:37439 -#: src/emc/usr_intf/pncconf/pncconf.glade:37491 -#: src/emc/usr_intf/pncconf/pncconf.glade:37543 -#: src/emc/usr_intf/pncconf/pncconf.glade:37595 -#: src/emc/usr_intf/pncconf/pncconf.glade:37647 -#: src/emc/usr_intf/pncconf/pncconf.glade:37699 -#: src/emc/usr_intf/pncconf/pncconf.glade:37751 -#: src/emc/usr_intf/pncconf/pncconf.glade:37803 -#: src/emc/usr_intf/pncconf/pncconf.glade:37855 -#: src/emc/usr_intf/pncconf/pncconf.glade:37907 -#: src/emc/usr_intf/pncconf/pncconf.glade:37959 -#: src/emc/usr_intf/pncconf/pncconf.glade:38764 -#: src/emc/usr_intf/pncconf/pncconf.glade:38816 -#: src/emc/usr_intf/pncconf/pncconf.glade:38868 -#: src/emc/usr_intf/pncconf/pncconf.glade:38920 -#: src/emc/usr_intf/pncconf/pncconf.glade:38972 -#: src/emc/usr_intf/pncconf/pncconf.glade:39024 -#: src/emc/usr_intf/pncconf/pncconf.glade:39076 -#: src/emc/usr_intf/pncconf/pncconf.glade:39128 -#: src/emc/usr_intf/pncconf/pncconf.glade:39180 -#: src/emc/usr_intf/pncconf/pncconf.glade:39232 -#: src/emc/usr_intf/pncconf/pncconf.glade:39284 -#: src/emc/usr_intf/pncconf/pncconf.glade:39336 -#: src/emc/usr_intf/pncconf/pncconf.glade:40751 -#: src/emc/usr_intf/pncconf/pncconf.glade:40803 -#: src/emc/usr_intf/pncconf/pncconf.glade:40855 -#: src/emc/usr_intf/pncconf/pncconf.glade:40907 -#: src/emc/usr_intf/pncconf/pncconf.glade:41734 -#: src/emc/usr_intf/pncconf/pncconf.glade:41786 -#: src/emc/usr_intf/pncconf/pncconf.glade:41838 -#: src/emc/usr_intf/pncconf/pncconf.glade:41890 -#: src/emc/usr_intf/pncconf/pncconf.glade:41942 -#: src/emc/usr_intf/pncconf/pncconf.glade:41994 -#: src/emc/usr_intf/pncconf/pncconf.glade:42046 -#: src/emc/usr_intf/pncconf/pncconf.glade:42098 -#: src/emc/usr_intf/pncconf/pncconf.glade:42150 -#: src/emc/usr_intf/pncconf/pncconf.glade:42202 -#: src/emc/usr_intf/pncconf/pncconf.glade:42254 -#: src/emc/usr_intf/pncconf/pncconf.glade:42306 -#: src/emc/usr_intf/pncconf/pncconf.glade:42995 -#: src/emc/usr_intf/pncconf/pncconf.glade:43047 -#: src/emc/usr_intf/pncconf/pncconf.glade:43099 -#: src/emc/usr_intf/pncconf/pncconf.glade:43151 -#: src/emc/usr_intf/pncconf/pncconf.glade:43203 -#: src/emc/usr_intf/pncconf/pncconf.glade:43255 -#: src/emc/usr_intf/pncconf/pncconf.glade:43307 -#: src/emc/usr_intf/pncconf/pncconf.glade:43359 -#: src/emc/usr_intf/pncconf/pncconf.glade:43411 -#: src/emc/usr_intf/pncconf/pncconf.glade:43463 -#: src/emc/usr_intf/pncconf/pncconf.glade:43515 -#: src/emc/usr_intf/pncconf/pncconf.glade:43567 -#: src/emc/usr_intf/pncconf/pncconf.glade:44394 -#: src/emc/usr_intf/pncconf/pncconf.glade:44446 -#: src/emc/usr_intf/pncconf/pncconf.glade:44498 -#: src/emc/usr_intf/pncconf/pncconf.glade:44550 -#: src/emc/usr_intf/pncconf/pncconf.glade:46067 -#: src/emc/usr_intf/pncconf/pncconf.glade:46119 -#: src/emc/usr_intf/pncconf/pncconf.glade:46171 -#: src/emc/usr_intf/pncconf/pncconf.glade:46223 -#: src/emc/usr_intf/pncconf/pncconf.glade:46275 -#: src/emc/usr_intf/pncconf/pncconf.glade:46327 -#: src/emc/usr_intf/pncconf/pncconf.glade:46379 -#: src/emc/usr_intf/pncconf/pncconf.glade:46431 -#: src/emc/usr_intf/pncconf/pncconf.glade:46483 -#: src/emc/usr_intf/pncconf/pncconf.glade:46535 -#: src/emc/usr_intf/pncconf/pncconf.glade:46587 -#: src/emc/usr_intf/pncconf/pncconf.glade:46639 -#: src/emc/usr_intf/pncconf/pncconf.glade:47674 -#: src/emc/usr_intf/pncconf/pncconf.glade:47726 -#: src/emc/usr_intf/pncconf/pncconf.glade:47778 -#: src/emc/usr_intf/pncconf/pncconf.glade:47830 -#: src/emc/usr_intf/pncconf/pncconf.glade:48657 -#: src/emc/usr_intf/pncconf/pncconf.glade:48709 -#: src/emc/usr_intf/pncconf/pncconf.glade:48761 -#: src/emc/usr_intf/pncconf/pncconf.glade:48813 -#: src/emc/usr_intf/pncconf/pncconf.glade:48865 -#: src/emc/usr_intf/pncconf/pncconf.glade:48917 -#: src/emc/usr_intf/pncconf/pncconf.glade:48969 -#: src/emc/usr_intf/pncconf/pncconf.glade:49021 -#: src/emc/usr_intf/pncconf/pncconf.glade:49073 -#: src/emc/usr_intf/pncconf/pncconf.glade:49125 -#: src/emc/usr_intf/pncconf/pncconf.glade:49177 -#: src/emc/usr_intf/pncconf/pncconf.glade:49229 -#: src/emc/usr_intf/pncconf/pncconf.glade:49918 -#: src/emc/usr_intf/pncconf/pncconf.glade:49970 -#: src/emc/usr_intf/pncconf/pncconf.glade:50022 -#: src/emc/usr_intf/pncconf/pncconf.glade:50074 -#: src/emc/usr_intf/pncconf/pncconf.glade:50126 -#: src/emc/usr_intf/pncconf/pncconf.glade:50178 -#: src/emc/usr_intf/pncconf/pncconf.glade:50230 -#: src/emc/usr_intf/pncconf/pncconf.glade:50282 -#: src/emc/usr_intf/pncconf/pncconf.glade:50334 -#: src/emc/usr_intf/pncconf/pncconf.glade:50386 -#: src/emc/usr_intf/pncconf/pncconf.glade:50438 -#: src/emc/usr_intf/pncconf/pncconf.glade:50490 -#: src/emc/usr_intf/pncconf/pncconf.glade:51317 -#: src/emc/usr_intf/pncconf/pncconf.glade:51369 -#: src/emc/usr_intf/pncconf/pncconf.glade:51421 -#: src/emc/usr_intf/pncconf/pncconf.glade:51473 -#: src/emc/usr_intf/pncconf/pncconf.glade:52990 -#: src/emc/usr_intf/pncconf/pncconf.glade:53042 -#: src/emc/usr_intf/pncconf/pncconf.glade:53094 -#: src/emc/usr_intf/pncconf/pncconf.glade:53146 -#: src/emc/usr_intf/pncconf/pncconf.glade:53198 -#: src/emc/usr_intf/pncconf/pncconf.glade:53250 -#: src/emc/usr_intf/pncconf/pncconf.glade:53302 -#: src/emc/usr_intf/pncconf/pncconf.glade:53354 -#: src/emc/usr_intf/pncconf/pncconf.glade:53406 -#: src/emc/usr_intf/pncconf/pncconf.glade:53458 -#: src/emc/usr_intf/pncconf/pncconf.glade:53510 -#: src/emc/usr_intf/pncconf/pncconf.glade:53562 -msgid "" -"ESTOP IN\n" -"Spindle PPR\n" -"Spindle A \n" -"Spindle B \n" -"Home X \n" -"Home Y \n" -"Home Z\n" -"Home A\n" -"Minimum Limit + Home X \n" -"Minimum Limit + Home Y \n" -"Minimum Limit + Home Z \n" -"Minimum Limit + Home A\n" -"Maximum Limit + Home X \n" -"Maximum Limit + Home Y \n" -"Maximum Limit + Home Z \n" -"Maximum Limit + Home A\n" -"Both Limit + Home X \n" -"Both Limit + Home Y \n" -"Both Limit + Home Z \n" -"Both Limit + Home A\n" -"Minimum Limit X \n" -"Minimum Limit Y \n" -"Minimum Limit Z \n" -"Minimum Limit A\n" -"Maximum Limit X \n" -"Maximum Limit Y \n" -"Maximum Limit Z \n" -"Maximum Limit A\n" -"Both Limit X \n" -"Both Limit Y \n" -"Both Limit Z \n" -"Both Limit A\n" -"All limits\n" -"All home\n" -"Unused" -msgstr "" -"ESTOP IN\n" -"Mandrino PPR\n" -"Mandrino A \n" -"Mandrino B \n" -"Zero X \n" -"Zero Y \n" -"Zero Z\n" -"Zero A\n" -"Limite Minimo + Zero X \n" -"Limite Minimo + Zero Y \n" -"Limite Minimo + Zero Z \n" -"Limite Minimo + Zero A \n" -"Limite Massimo + Zero X \n" -"Limite Massimo + Zero Y \n" -"Limite Massimo + Zero Z \n" -"Limite Massimo + Zero A \n" -"Entrambi i Limiti + Zero X \n" -"Entrambi i Limiti + Zero Y \n" -"Entrambi i Limiti + Zero Z \n" -"Entrambi i Limiti + Zero A \n" -"Limite Minimo X \n" -"Limite Minimo Y \n" -"Limite Minimo Z \n" -"Limite Minimo A\n" -"Limite Massimo X \n" -"Limite Massimo Y \n" -"Limite Massimo Z \n" -"Limite Massimo A\n" -"Entrambi i Limiti X \n" -"Entrambi i Limiti Y \n" -"Entrambi i Limiti Z \n" -"Entrambi i Limiti A \n" -"Tutti i limiti\n" -"Tutti gli Zeri\n" -"Inutilizzato" +#: src/emc/usr_intf/pncconf/pncconf.glade:65334 +msgid "filename:" +msgstr "Nomefile:" -#: src/emc/usr_intf/pncconf/pncconf.glade:9515 -#: src/emc/usr_intf/pncconf/pncconf.glade:12871 -#: src/emc/usr_intf/pncconf/pncconf.glade:18128 -#: src/emc/usr_intf/pncconf/pncconf.glade:20233 -#: src/emc/usr_intf/pncconf/pncconf.glade:21486 -#: src/emc/usr_intf/pncconf/pncconf.glade:23282 -#: src/emc/usr_intf/pncconf/pncconf.glade:25078 -msgid "31:" -msgstr "31:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65347 +msgid "" +"Type 1\n" +"Type 2" +msgstr "" +"Tipo 1\n" +"Tipo 2" -#: src/emc/usr_intf/pncconf/pncconf.glade:9531 -#: src/emc/usr_intf/pncconf/pncconf.glade:12855 -#: src/emc/usr_intf/pncconf/pncconf.glade:18112 -#: src/emc/usr_intf/pncconf/pncconf.glade:20217 -#: src/emc/usr_intf/pncconf/pncconf.glade:21502 -#: src/emc/usr_intf/pncconf/pncconf.glade:23298 -#: src/emc/usr_intf/pncconf/pncconf.glade:25094 -msgid "29:" -msgstr "29:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65392 +msgid "Use Compensation File:" +msgstr "Usa File Compensazione:" -#: src/emc/usr_intf/pncconf/pncconf.glade:9547 -#: src/emc/usr_intf/pncconf/pncconf.glade:12839 -#: src/emc/usr_intf/pncconf/pncconf.glade:18096 -#: src/emc/usr_intf/pncconf/pncconf.glade:20201 -#: src/emc/usr_intf/pncconf/pncconf.glade:21518 -#: src/emc/usr_intf/pncconf/pncconf.glade:23314 -#: src/emc/usr_intf/pncconf/pncconf.glade:25110 -msgid "27:" -msgstr "27:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65406 +msgid "Use Backlash Compensation:" +msgstr "Usa Compensazione Giochi:" -#: src/emc/usr_intf/pncconf/pncconf.glade:9563 -#: src/emc/usr_intf/pncconf/pncconf.glade:12823 -#: src/emc/usr_intf/pncconf/pncconf.glade:18080 -#: src/emc/usr_intf/pncconf/pncconf.glade:20185 -#: src/emc/usr_intf/pncconf/pncconf.glade:21534 -#: src/emc/usr_intf/pncconf/pncconf.glade:23330 -#: src/emc/usr_intf/pncconf/pncconf.glade:25126 -msgid "25:" -msgstr "25:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65433 +msgid "Home Position location (offset from machine zero Origin):" +msgstr "Locazione Posizione Zero (distanza dall' Origine Zero Macchina):" -#: src/emc/usr_intf/pncconf/pncconf.glade:9936 -#: src/emc/usr_intf/pncconf/pncconf.glade:12450 -#: src/emc/usr_intf/pncconf/pncconf.glade:17707 -#: src/emc/usr_intf/pncconf/pncconf.glade:19924 -#: src/emc/usr_intf/pncconf/pncconf.glade:21795 -#: src/emc/usr_intf/pncconf/pncconf.glade:23591 -#: src/emc/usr_intf/pncconf/pncconf.glade:25387 -msgid "33:" -msgstr "33:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65449 +msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " +msgstr "" +"Distanza spostamento Negativa (Origine Zero Macchina fino alla fine corsa): " -#: src/emc/usr_intf/pncconf/pncconf.glade:9952 -#: src/emc/usr_intf/pncconf/pncconf.glade:12434 -#: src/emc/usr_intf/pncconf/pncconf.glade:17691 -#: src/emc/usr_intf/pncconf/pncconf.glade:19908 -#: src/emc/usr_intf/pncconf/pncconf.glade:21811 -#: src/emc/usr_intf/pncconf/pncconf.glade:23607 -#: src/emc/usr_intf/pncconf/pncconf.glade:25403 -msgid "35:" -msgstr "35:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65493 +msgid "Home Switch location (Offset from machine zero Origin):" +msgstr "Posizione Pulsante Zero (Distanza dall'origine Zero Macchina):" -#: src/emc/usr_intf/pncconf/pncconf.glade:9968 -#: src/emc/usr_intf/pncconf/pncconf.glade:12418 -#: src/emc/usr_intf/pncconf/pncconf.glade:17675 -#: src/emc/usr_intf/pncconf/pncconf.glade:19892 -#: src/emc/usr_intf/pncconf/pncconf.glade:21827 -#: src/emc/usr_intf/pncconf/pncconf.glade:23623 -#: src/emc/usr_intf/pncconf/pncconf.glade:25419 -msgid "37:" -msgstr "37:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65509 +msgid "Home Search Velocity:" +msgstr "Velocita' Ricerca Zero:" -#: src/emc/usr_intf/pncconf/pncconf.glade:9984 -#: src/emc/usr_intf/pncconf/pncconf.glade:12402 -#: src/emc/usr_intf/pncconf/pncconf.glade:17659 -#: src/emc/usr_intf/pncconf/pncconf.glade:19876 -#: src/emc/usr_intf/pncconf/pncconf.glade:21843 -#: src/emc/usr_intf/pncconf/pncconf.glade:23639 -#: src/emc/usr_intf/pncconf/pncconf.glade:25435 -msgid "39:" -msgstr "39:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65524 +msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " +msgstr "" +"Distanza corsa positiva (dall'Origine Zero Macchina fino alla fine della " +"corsa +):" -#: src/emc/usr_intf/pncconf/pncconf.glade:10000 -#: src/emc/usr_intf/pncconf/pncconf.glade:12386 -#: src/emc/usr_intf/pncconf/pncconf.glade:17643 -#: src/emc/usr_intf/pncconf/pncconf.glade:19860 -#: src/emc/usr_intf/pncconf/pncconf.glade:21859 -#: src/emc/usr_intf/pncconf/pncconf.glade:23655 -#: src/emc/usr_intf/pncconf/pncconf.glade:25451 -msgid "41:" -msgstr "41:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Advanced Options" +msgstr "Opzioni Avanzate" -#: src/emc/usr_intf/pncconf/pncconf.glade:10016 -#: src/emc/usr_intf/pncconf/pncconf.glade:12370 -#: src/emc/usr_intf/pncconf/pncconf.glade:17627 -#: src/emc/usr_intf/pncconf/pncconf.glade:19844 -#: src/emc/usr_intf/pncconf/pncconf.glade:21875 -#: src/emc/usr_intf/pncconf/pncconf.glade:23671 -#: src/emc/usr_intf/pncconf/pncconf.glade:25467 -msgid "43:" -msgstr "43:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 15" +msgstr "Cmd 15" -#: src/emc/usr_intf/pncconf/pncconf.glade:10032 -#: src/emc/usr_intf/pncconf/pncconf.glade:12354 -#: src/emc/usr_intf/pncconf/pncconf.glade:17611 -#: src/emc/usr_intf/pncconf/pncconf.glade:19828 -#: src/emc/usr_intf/pncconf/pncconf.glade:21891 -#: src/emc/usr_intf/pncconf/pncconf.glade:23687 -#: src/emc/usr_intf/pncconf/pncconf.glade:25483 -msgid "45:" -msgstr "45:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 14" +msgstr "Cmd 14" -#: src/emc/usr_intf/pncconf/pncconf.glade:10099 -#: src/emc/usr_intf/pncconf/pncconf.glade:12287 -#: src/emc/usr_intf/pncconf/pncconf.glade:17544 -#: src/emc/usr_intf/pncconf/pncconf.glade:19777 -#: src/emc/usr_intf/pncconf/pncconf.glade:21942 -#: src/emc/usr_intf/pncconf/pncconf.glade:23738 -#: src/emc/usr_intf/pncconf/pncconf.glade:25534 -msgid "47:" -msgstr "47:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 13" +msgstr "Cmd 13" -#: src/emc/usr_intf/pncconf/pncconf.glade:10822 -#: src/emc/usr_intf/pncconf/pncconf.glade:11077 -#: src/emc/usr_intf/pncconf/pncconf.glade:11311 -#: src/emc/usr_intf/pncconf/pncconf.glade:11567 -#: src/emc/usr_intf/pncconf/pncconf.glade:13924 -#: src/emc/usr_intf/pncconf/pncconf.glade:14171 -#: src/emc/usr_intf/pncconf/pncconf.glade:16516 -#: src/emc/usr_intf/pncconf/pncconf.glade:16772 -#: src/emc/usr_intf/pncconf/pncconf.glade:19129 -#: src/emc/usr_intf/pncconf/pncconf.glade:19379 -#: src/emc/usr_intf/pncconf/pncconf.glade:22343 -#: src/emc/usr_intf/pncconf/pncconf.glade:22592 -#: src/emc/usr_intf/pncconf/pncconf.glade:24139 -#: src/emc/usr_intf/pncconf/pncconf.glade:24388 -#: src/emc/usr_intf/pncconf/pncconf.glade:25935 -#: src/emc/usr_intf/pncconf/pncconf.glade:26184 -#: src/emc/usr_intf/pncconf/pncconf.glade:28515 -#: src/emc/usr_intf/pncconf/pncconf.glade:28761 -#: src/emc/usr_intf/pncconf/pncconf.glade:28892 -#: src/emc/usr_intf/pncconf/pncconf.glade:29139 -#: src/emc/usr_intf/pncconf/pncconf.glade:33079 -#: src/emc/usr_intf/pncconf/pncconf.glade:33250 -#: src/emc/usr_intf/pncconf/pncconf.glade:33497 -#: src/emc/usr_intf/pncconf/pncconf.glade:38012 -#: src/emc/usr_intf/pncconf/pncconf.glade:38258 -#: src/emc/usr_intf/pncconf/pncconf.glade:38507 -#: src/emc/usr_intf/pncconf/pncconf.glade:42359 -#: src/emc/usr_intf/pncconf/pncconf.glade:42605 -#: src/emc/usr_intf/pncconf/pncconf.glade:42736 -#: src/emc/usr_intf/pncconf/pncconf.glade:42983 -#: src/emc/usr_intf/pncconf/pncconf.glade:46936 -#: src/emc/usr_intf/pncconf/pncconf.glade:49282 -#: src/emc/usr_intf/pncconf/pncconf.glade:49528 -#: src/emc/usr_intf/pncconf/pncconf.glade:49659 -#: src/emc/usr_intf/pncconf/pncconf.glade:49906 -#: src/emc/usr_intf/pncconf/pncconf.glade:53859 -msgid "Pin Type" -msgstr "Tipo Pin" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 12" +msgstr "Cmd 12" -#: src/emc/usr_intf/pncconf/pncconf.glade:10835 -#: src/emc/usr_intf/pncconf/pncconf.glade:11553 -#: src/emc/usr_intf/pncconf/pncconf.glade:16758 -#: src/emc/usr_intf/pncconf/pncconf.glade:19365 -#: src/emc/usr_intf/pncconf/pncconf.glade:22356 -#: src/emc/usr_intf/pncconf/pncconf.glade:24152 -#: src/emc/usr_intf/pncconf/pncconf.glade:25948 -msgid "23:" -msgstr "23:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 11" +msgstr "Cmd 11" -#: src/emc/usr_intf/pncconf/pncconf.glade:10849 -#: src/emc/usr_intf/pncconf/pncconf.glade:11539 -#: src/emc/usr_intf/pncconf/pncconf.glade:16744 -#: src/emc/usr_intf/pncconf/pncconf.glade:19351 -#: src/emc/usr_intf/pncconf/pncconf.glade:22370 -#: src/emc/usr_intf/pncconf/pncconf.glade:24166 -#: src/emc/usr_intf/pncconf/pncconf.glade:25962 -msgid "21:" -msgstr "21:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 10" +msgstr "Cmd 10" -#: src/emc/usr_intf/pncconf/pncconf.glade:10863 -#: src/emc/usr_intf/pncconf/pncconf.glade:11525 -#: src/emc/usr_intf/pncconf/pncconf.glade:16730 -#: src/emc/usr_intf/pncconf/pncconf.glade:19337 -#: src/emc/usr_intf/pncconf/pncconf.glade:22384 -#: src/emc/usr_intf/pncconf/pncconf.glade:24180 -#: src/emc/usr_intf/pncconf/pncconf.glade:25976 -msgid "19:" -msgstr "19:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 9" +msgstr "Cmd 9" -#: src/emc/usr_intf/pncconf/pncconf.glade:10877 -#: src/emc/usr_intf/pncconf/pncconf.glade:11511 -#: src/emc/usr_intf/pncconf/pncconf.glade:16716 -#: src/emc/usr_intf/pncconf/pncconf.glade:19323 -#: src/emc/usr_intf/pncconf/pncconf.glade:22398 -#: src/emc/usr_intf/pncconf/pncconf.glade:24194 -#: src/emc/usr_intf/pncconf/pncconf.glade:25990 -msgid "17:" -msgstr "17:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 8" +msgstr "Cmd 8" -#: src/emc/usr_intf/pncconf/pncconf.glade:10891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11497 -#: src/emc/usr_intf/pncconf/pncconf.glade:16702 -#: src/emc/usr_intf/pncconf/pncconf.glade:19309 -#: src/emc/usr_intf/pncconf/pncconf.glade:22412 -#: src/emc/usr_intf/pncconf/pncconf.glade:24208 -#: src/emc/usr_intf/pncconf/pncconf.glade:26004 -msgid "15:" -msgstr "15:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 7" +msgstr "Cmd 7" -#: src/emc/usr_intf/pncconf/pncconf.glade:10905 -#: src/emc/usr_intf/pncconf/pncconf.glade:11483 -#: src/emc/usr_intf/pncconf/pncconf.glade:16688 -#: src/emc/usr_intf/pncconf/pncconf.glade:19295 -#: src/emc/usr_intf/pncconf/pncconf.glade:22426 -#: src/emc/usr_intf/pncconf/pncconf.glade:24222 -#: src/emc/usr_intf/pncconf/pncconf.glade:26018 -msgid "13:" -msgstr "13:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 6" +msgstr "Cmd 6" -#: src/emc/usr_intf/pncconf/pncconf.glade:10919 -#: src/emc/usr_intf/pncconf/pncconf.glade:11469 -#: src/emc/usr_intf/pncconf/pncconf.glade:16674 -#: src/emc/usr_intf/pncconf/pncconf.glade:19281 -#: src/emc/usr_intf/pncconf/pncconf.glade:22440 -#: src/emc/usr_intf/pncconf/pncconf.glade:24236 -#: src/emc/usr_intf/pncconf/pncconf.glade:26032 -msgid "11:" -msgstr "11:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 5" +msgstr "Cmd 5" -#: src/emc/usr_intf/pncconf/pncconf.glade:10933 -#: src/emc/usr_intf/pncconf/pncconf.glade:11455 -#: src/emc/usr_intf/pncconf/pncconf.glade:16660 -#: src/emc/usr_intf/pncconf/pncconf.glade:19267 -#: src/emc/usr_intf/pncconf/pncconf.glade:22454 -#: src/emc/usr_intf/pncconf/pncconf.glade:24250 -#: src/emc/usr_intf/pncconf/pncconf.glade:26046 -msgid " 9:" -msgstr " 9:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 4" +msgstr "Cmd 4" -#: src/emc/usr_intf/pncconf/pncconf.glade:10947 -#: src/emc/usr_intf/pncconf/pncconf.glade:11441 -#: src/emc/usr_intf/pncconf/pncconf.glade:16646 -#: src/emc/usr_intf/pncconf/pncconf.glade:19253 -#: src/emc/usr_intf/pncconf/pncconf.glade:22468 -#: src/emc/usr_intf/pncconf/pncconf.glade:24264 -#: src/emc/usr_intf/pncconf/pncconf.glade:26060 -msgid " 7:" -msgstr " 7:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 3" +msgstr "Cmd 3" -#: src/emc/usr_intf/pncconf/pncconf.glade:10961 -#: src/emc/usr_intf/pncconf/pncconf.glade:11427 -#: src/emc/usr_intf/pncconf/pncconf.glade:16632 -#: src/emc/usr_intf/pncconf/pncconf.glade:19239 -#: src/emc/usr_intf/pncconf/pncconf.glade:22482 -#: src/emc/usr_intf/pncconf/pncconf.glade:24278 -#: src/emc/usr_intf/pncconf/pncconf.glade:26074 -msgid " 5:" -msgstr " 5:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 2" +msgstr "Cmd 2" -#: src/emc/usr_intf/pncconf/pncconf.glade:10975 -#: src/emc/usr_intf/pncconf/pncconf.glade:11413 -#: src/emc/usr_intf/pncconf/pncconf.glade:16618 -#: src/emc/usr_intf/pncconf/pncconf.glade:19225 -#: src/emc/usr_intf/pncconf/pncconf.glade:22496 -#: src/emc/usr_intf/pncconf/pncconf.glade:24292 -#: src/emc/usr_intf/pncconf/pncconf.glade:26088 -msgid " 3:" -msgstr " 3:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 1" +msgstr "Cmd 1" -#: src/emc/usr_intf/pncconf/pncconf.glade:10989 -#: src/emc/usr_intf/pncconf/pncconf.glade:11399 -#: src/emc/usr_intf/pncconf/pncconf.glade:16604 -#: src/emc/usr_intf/pncconf/pncconf.glade:19211 -#: src/emc/usr_intf/pncconf/pncconf.glade:22510 -#: src/emc/usr_intf/pncconf/pncconf.glade:24306 -#: src/emc/usr_intf/pncconf/pncconf.glade:26102 -msgid " 1:" -msgstr " 1:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include Halui user interface component / commands" +msgstr "Include componente/comandi interfaccia utente Halui" -#: src/emc/usr_intf/pncconf/pncconf.glade:11002 -#: src/emc/usr_intf/pncconf/pncconf.glade:11065 -#: src/emc/usr_intf/pncconf/pncconf.glade:11324 -#: src/emc/usr_intf/pncconf/pncconf.glade:11386 -#: src/emc/usr_intf/pncconf/pncconf.glade:13937 -#: src/emc/usr_intf/pncconf/pncconf.glade:13999 -#: src/emc/usr_intf/pncconf/pncconf.glade:16529 -#: src/emc/usr_intf/pncconf/pncconf.glade:16591 -#: src/emc/usr_intf/pncconf/pncconf.glade:19142 -#: src/emc/usr_intf/pncconf/pncconf.glade:19198 -#: src/emc/usr_intf/pncconf/pncconf.glade:22523 -#: src/emc/usr_intf/pncconf/pncconf.glade:22580 -#: src/emc/usr_intf/pncconf/pncconf.glade:24319 -#: src/emc/usr_intf/pncconf/pncconf.glade:24376 -#: src/emc/usr_intf/pncconf/pncconf.glade:26115 -#: src/emc/usr_intf/pncconf/pncconf.glade:26172 -#: src/emc/usr_intf/pncconf/pncconf.glade:28686 -#: src/emc/usr_intf/pncconf/pncconf.glade:28749 -#: src/emc/usr_intf/pncconf/pncconf.glade:28905 -#: src/emc/usr_intf/pncconf/pncconf.glade:28967 -#: src/emc/usr_intf/pncconf/pncconf.glade:33067 -#: src/emc/usr_intf/pncconf/pncconf.glade:33263 -#: src/emc/usr_intf/pncconf/pncconf.glade:33325 -#: src/emc/usr_intf/pncconf/pncconf.glade:38183 -#: src/emc/usr_intf/pncconf/pncconf.glade:38246 -#: src/emc/usr_intf/pncconf/pncconf.glade:38520 -#: src/emc/usr_intf/pncconf/pncconf.glade:42530 -#: src/emc/usr_intf/pncconf/pncconf.glade:42593 -#: src/emc/usr_intf/pncconf/pncconf.glade:42749 -#: src/emc/usr_intf/pncconf/pncconf.glade:42811 -#: src/emc/usr_intf/pncconf/pncconf.glade:46924 -#: src/emc/usr_intf/pncconf/pncconf.glade:49453 -#: src/emc/usr_intf/pncconf/pncconf.glade:49516 -#: src/emc/usr_intf/pncconf/pncconf.glade:49672 -#: src/emc/usr_intf/pncconf/pncconf.glade:49734 -#: src/emc/usr_intf/pncconf/pncconf.glade:53847 -msgid "Inv" -msgstr "Inv" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Number of digital (bit) in pins:" +msgstr "Numero di pin digitali(bit) in input:" -#: src/emc/usr_intf/pncconf/pncconf.glade:11198 -msgid "" -" I/O\n" -"Connector 2" -msgstr "" -" I/O\n" -" Connettore 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Number of digital (bit) out pins:" +msgstr "Numero di pin (bit) output digitali:" -#: src/emc/usr_intf/pncconf/pncconf.glade:13811 -msgid "" -" I/O\n" -" Connector 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid " Number of Internal bit memory:" +msgstr "Numero di pin (bit) output digitali:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of Internal word memory:" msgstr "" -" I/O\n" -"Connettore 3" -#: src/emc/usr_intf/pncconf/pncconf.glade:14012 -#: src/emc/usr_intf/pncconf/pncconf.glade:14039 -#: src/emc/usr_intf/pncconf/pncconf.glade:14053 -#: src/emc/usr_intf/pncconf/pncconf.glade:28632 -#: src/emc/usr_intf/pncconf/pncconf.glade:28646 -#: src/emc/usr_intf/pncconf/pncconf.glade:28673 -#: src/emc/usr_intf/pncconf/pncconf.glade:28980 -#: src/emc/usr_intf/pncconf/pncconf.glade:29007 -#: src/emc/usr_intf/pncconf/pncconf.glade:29021 -#: src/emc/usr_intf/pncconf/pncconf.glade:32951 -#: src/emc/usr_intf/pncconf/pncconf.glade:32965 -#: src/emc/usr_intf/pncconf/pncconf.glade:32992 -#: src/emc/usr_intf/pncconf/pncconf.glade:33338 -#: src/emc/usr_intf/pncconf/pncconf.glade:33365 -#: src/emc/usr_intf/pncconf/pncconf.glade:33379 -#: src/emc/usr_intf/pncconf/pncconf.glade:38129 -#: src/emc/usr_intf/pncconf/pncconf.glade:38143 -#: src/emc/usr_intf/pncconf/pncconf.glade:38170 -#: src/emc/usr_intf/pncconf/pncconf.glade:38594 -#: src/emc/usr_intf/pncconf/pncconf.glade:38621 -#: src/emc/usr_intf/pncconf/pncconf.glade:38635 -#: src/emc/usr_intf/pncconf/pncconf.glade:42476 -#: src/emc/usr_intf/pncconf/pncconf.glade:42490 -#: src/emc/usr_intf/pncconf/pncconf.glade:42517 -#: src/emc/usr_intf/pncconf/pncconf.glade:42824 -#: src/emc/usr_intf/pncconf/pncconf.glade:42851 -#: src/emc/usr_intf/pncconf/pncconf.glade:42865 -#: src/emc/usr_intf/pncconf/pncconf.glade:46808 -#: src/emc/usr_intf/pncconf/pncconf.glade:46822 -#: src/emc/usr_intf/pncconf/pncconf.glade:46849 -#: src/emc/usr_intf/pncconf/pncconf.glade:49399 -#: src/emc/usr_intf/pncconf/pncconf.glade:49413 -#: src/emc/usr_intf/pncconf/pncconf.glade:49440 -#: src/emc/usr_intf/pncconf/pncconf.glade:49747 -#: src/emc/usr_intf/pncconf/pncconf.glade:49774 -#: src/emc/usr_intf/pncconf/pncconf.glade:49788 -#: src/emc/usr_intf/pncconf/pncconf.glade:53731 -#: src/emc/usr_intf/pncconf/pncconf.glade:53745 -#: src/emc/usr_intf/pncconf/pncconf.glade:53772 -msgid " " -msgstr " " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Setup number of external pins" +msgstr "Imposta numero di pin esterni" -#: src/emc/usr_intf/pncconf/pncconf.glade:16403 -msgid "" -" I/O\n" -" Connector 4" -msgstr "" -" I/O\n" -" Connettore 4" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Z Auto Touch off program" +msgstr "programma Z Auto Touch" -#: src/emc/usr_intf/pncconf/pncconf.glade:19017 -msgid "" -" I/O\n" -" Connector 5" -msgstr "" -" I/O\n" -" Connettore 5" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "HAL Component Page" +msgstr "Pagina Componenti HAL" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Add HAL components with this page." +msgstr "Aggiungi componenti HAL con questa pagina." + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Component" +msgstr "Componenti" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "number of components" +msgstr "numero di componenti" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "PID" +msgstr "PID" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "scale" +msgstr "scala" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mux16" +msgstr "mux16" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "lowpass" +msgstr "passabasso" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Base Thread" +msgstr "Thread Base" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Servo Thread" +msgstr "Thread Servo" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Load Command " +msgstr "Carica Comando " + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Thread Speed" +msgstr "Velocità Thread" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Thread Command" +msgstr "Comando Thread" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Custom Components Commands" +msgstr "Componenti Comandi Personalizzati" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Machine configuration complete" +msgstr "Configurazione macchina completa" -#: src/emc/usr_intf/pncconf/pncconf.glade:20813 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy msgid "" -" I/O\n" -"Connector 6" +"All the necessary information has now been gathered. Click \"Apply\" to " +"write your configuration files to disk.\n" +"\n" +"If you are using the 5i25 card with daugther boards or are using SSerial " +"based daughter cards, the cards must be connected and/or field power " +"supplied to the 5i25 \n" +"for the HAL pins to be available. If the config is expecting the pins and " +"they are not there, linuxcnc will error.\n" +"If you experience lockups while running LinuxCNC, you will need to decrease " +"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC, first verify that you " +"entered the proper timings for your stepper drivers. If that does not fix " +"the problem, then run a more thorough latency test as described on the " +"linuxcnc.org wiki:\n" +" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" +"\n" +"If you experience the \"Unexpected Realtime Delay\" message, run a more " +"thorough latency test as described on the linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" msgstr "" -" I/O\n" -"Connettore 6" +"Tutte le informazioni necessarie sono state raccolte. Clicca \"Applica\" " +"per scrivere il file di configurazione sul disco.\n" +"Se avverti dei blocchi mentre gira LinuxCNC, e' necessario decrementare la " +"velocita' massima che ha l' effetto di incrementare BASE_PERIOD.\n" +"\n" +"Se noti una perdita di passi mentre gira LinuxCNC, prima verifica che siano " +"stati immessi i giusti tempi per i tuoi stepper drivers. Se questo non " +"risolve il problema, allora rieffettua il latency test come descritto sul " +"wiki di linuxcnc.org:\n" +" http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting\n" +"\n" +"Se appare spesso il messaggio \"Unexpected Realtime Delay\", rieffettua il " +"latency test come descritto sul wiki di linuxcnc.org: \n" +" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" -#: src/emc/usr_intf/pncconf/pncconf.glade:22609 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" -" I/O\n" -"Connector 7" +" Motor Encoder Test\n" +"Warning limits switches \n" +" Will not be obeyed" msgstr "" -" I/O\n" -"Connettore 7" +" Test Encoder Motore\n" +"Attenzione interruttori limite \n" +" Non verranno rispettati" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Slow Dac Speed" +msgstr "Velocità Dac Lenta" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Fast Dac Speed" +msgstr "Velocità Dac Alta" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Dac Offset:" +msgstr "Dac Offset:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder Scale:" +msgstr "Scala Encoder:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Reset Encoder" +msgstr "Reset Encoder" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Enable Amp" +msgstr "Abilita Amp" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Invert Encoder" +msgstr "Inverti Encoder" -#: src/emc/usr_intf/pncconf/pncconf.glade:24405 -msgid "" -" I/O\n" -"Connector 8" -msgstr "" -" I/O\n" -"Connettore 8" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Invert Motor" +msgstr "Inverti Motore" -#: src/emc/usr_intf/pncconf/pncconf.glade:26201 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" -" I/O\n" -" Connector 9" +"±\n" +"+\n" +"-\n" msgstr "" -" I/O\n" -"Connettore 9" +"±\n" +"+\n" +"-\n" -#: src/emc/usr_intf/pncconf/pncconf.glade:28775 -#: src/emc/usr_intf/pncconf/pncconf.glade:35696 -#: src/emc/usr_intf/pncconf/pncconf.glade:42619 -#: src/emc/usr_intf/pncconf/pncconf.glade:49542 -msgid "page 1" -msgstr "pagina 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Seconds" +msgstr "Secondi" -#: src/emc/usr_intf/pncconf/pncconf.glade:31354 -#: src/emc/usr_intf/pncconf/pncconf.glade:38275 -#: src/emc/usr_intf/pncconf/pncconf.glade:45198 -#: src/emc/usr_intf/pncconf/pncconf.glade:52121 -msgid "page 2" -msgstr "pagina 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Enable" +msgstr "Abilita" -#: src/emc/usr_intf/pncconf/pncconf.glade:33107 -#: src/emc/usr_intf/pncconf/pncconf.glade:40030 -#: src/emc/usr_intf/pncconf/pncconf.glade:46953 -#: src/emc/usr_intf/pncconf/pncconf.glade:53876 -msgid "page 3" -msgstr "pagina 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm/minute^2" +msgstr "mm/minuto^2" -#: src/emc/usr_intf/pncconf/pncconf.glade:33123 -msgid "Smart Serial 0" -msgstr "Smart Serial 0" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm/minute" +msgstr "mm/minuto" -#: src/emc/usr_intf/pncconf/pncconf.glade:40046 -msgid "Smart Serial 1" -msgstr "Smart Serial 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Current" +msgstr "Corrente" -#: src/emc/usr_intf/pncconf/pncconf.glade:46969 -msgid "Smart Serial 2" -msgstr "Smart Serial 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "P:" +msgstr "P:" -#: src/emc/usr_intf/pncconf/pncconf.glade:53892 -msgid "Smart Serial 3" -msgstr "Smart Serial 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "I:" +msgstr "I:" -#: src/emc/usr_intf/pncconf/pncconf.glade:53914 -msgid "First Parallel Port Setup" -msgstr "Setup Prima Porta Parallela" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "D:" +msgstr "D:" -#: src/emc/usr_intf/pncconf/pncconf.glade:53998 -msgid "Outputs (PC to Machine):" -msgstr "Outputs (PC verso Fresatrice):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Original" +msgstr "Originale" -#: src/emc/usr_intf/pncconf/pncconf.glade:54552 -msgid "Inputs (Machine to PC):" -msgstr "Inputs (Fresatrice a PC):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "DeadBand" +msgstr "Zona neutra" -#: src/emc/usr_intf/pncconf/pncconf.glade:55977 -msgid "Launch Test Panel" -msgstr "Avvio Pannello Test" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "PID Tuning" +msgstr "Regolazione PID" -#: src/emc/usr_intf/pncconf/pncconf.glade:56003 -msgid "X Axis Motor/Encoder Configuration" -msgstr "Configurazione Motore/encoder Asse X" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Time:" +msgstr "Tempo Passo:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56091 -msgid "D" -msgstr "D" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Space:" +msgstr "Spazio Passo:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56104 -msgid "I" -msgstr "I" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Direction Hold:" +msgstr "Mantiene Direzione:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56117 -msgid "P" -msgstr "P" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Direction Setup:" +msgstr "Setup Direzione:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56128 -#: src/emc/usr_intf/pncconf/pncconf.glade:60917 -#: src/emc/usr_intf/pncconf/pncconf.glade:62202 -#: src/emc/usr_intf/pncconf/pncconf.glade:63103 -#: src/emc/usr_intf/pncconf/pncconf.glade:64388 -#: src/emc/usr_intf/pncconf/pncconf.glade:65265 -msgid "Bias" -msgstr "Disturbo" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Timing" +msgstr "Tempo Passo:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56141 -msgid "Deadband" -msgstr "Zona neutra" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "enable" +msgstr "abilita" -#: src/emc/usr_intf/pncconf/pncconf.glade:56188 -#: src/emc/usr_intf/pncconf/pncconf.glade:61128 -#: src/emc/usr_intf/pncconf/pncconf.glade:61991 -#: src/emc/usr_intf/pncconf/pncconf.glade:63314 -#: src/emc/usr_intf/pncconf/pncconf.glade:64177 -#: src/emc/usr_intf/pncconf/pncconf.glade:65470 -msgid "FF0" -msgstr "FF0" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "spindle" +msgstr "mandrino" -#: src/emc/usr_intf/pncconf/pncconf.glade:56201 -#: src/emc/usr_intf/pncconf/pncconf.glade:61118 -#: src/emc/usr_intf/pncconf/pncconf.glade:62001 -#: src/emc/usr_intf/pncconf/pncconf.glade:63304 -#: src/emc/usr_intf/pncconf/pncconf.glade:64187 -#: src/emc/usr_intf/pncconf/pncconf.glade:65460 -msgid "FF1" -msgstr "FF1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Help Page" +msgstr "Pagina Aiuto" -#: src/emc/usr_intf/pncconf/pncconf.glade:56214 -#: src/emc/usr_intf/pncconf/pncconf.glade:61108 -#: src/emc/usr_intf/pncconf/pncconf.glade:62011 -#: src/emc/usr_intf/pncconf/pncconf.glade:63294 -#: src/emc/usr_intf/pncconf/pncconf.glade:64197 -#: src/emc/usr_intf/pncconf/pncconf.glade:65450 -msgid "FF2" -msgstr "FF2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"X axis:\n" +"Total Travel = 10\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = 0\n" +"Pos Travel Distance = Total Travel - neg travel distance = 10\n" +"Home Position = Origin to Home Position distance = 6\n" +"\n" +"Y axis:\n" +"Total Travel = 8\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = -8\n" +"Pos Travel Distance = Total Travel - neg travel distance = 0\n" +"Home Position = Origin to Home Position distance = 0\n" +"\n" +"Z axis:\n" +"Total Travel = 12\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = -12\n" +"Pos Travel Distance = Total Travel - neg travel distance = 0\n" +"Home Position = Origin to Home Position distance = 0\n" +"\n" +"Note that the direction indicators on the top right show \n" +"movement of the TOOL and on the actual machine,\n" +"often it is the table that actually moves. In that case the \n" +"directions are opposite of shown.\n" +"\n" +"Note this is an example, Many other combinations are \n" +"possible" +msgstr "" +"Asse X:\n" +"cammino Totale= 10\n" +"Home Offset = distanza Origine fino a Home Switch = 0\n" +"Neg Travel Distance = Origin to neg limit distance = 0\n" +"Pos Travel Distance = Total Travel - neg travel distance = 10\n" +"Home Position = distanza Origine to Home Position = 6\n" +"\n" +"Asse Y\n" +"Total Travel = 8\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = -8\n" +"Pos Travel Distance = Total Travel - neg travel distance = 0\n" +"Home Position = Origin to Home Position distance = 0\n" +"\n" +"Asse Z:\n" +"Total Travel = 12\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = -12\n" +"Pos Travel Distance = Total Travel - neg travel distance = 0\n" +"Home Position = Origin to Home Position distance = 0\n" +"\n" +"Nota che gli indicatori direzione mostrate in alto a destra \n" +"sonoper il movimento del TOOL e sulla macchina reale,\n" +"spesso è la tavola che si muove. In questo caso le direzioni\n" +"del movimento sono opposte rispetto a quelle mostrate.\n" +"\n" +"Nota che è un esempio, Sono possibili molte altre \n" +"combinazioni" -#: src/emc/usr_intf/pncconf/pncconf.glade:56282 -msgid "Servo Info" -msgstr "Informazioni Servo" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Mill" +msgstr "Fresatrice" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"Total Travel = 4 + 6 = 10\n" +"Z Home Offset = Origin to Home Switch distance = 10\n" +"Z Neg Travel Distance = Origin to neg limit distance = 0\n" +"Z Pos Travel Distance = Total Travel - neg travel distance = 10\n" +"Z Home Position = Origin to Home Position distance = 4\n" +"\n" +"X axis would be similar but not shown fully for clarity.\n" +"This is just a sample reference other switch combinations are\n" +"possible." +msgstr "" +"Corsa Totale = 4+6 =10\n" +"Distanza Zero = Distanza dall'origine al pulsante Zero = -1\n" +"Distanza Corsa Neg = Distanza dall'origine al limite neg = -1\n" +"Distanza Corsa Pos = Corsa totale - Distanza Zero = 5\n" +"Posizione Zero = Distanza tra Origine e Posizione Zero = 1" -#: src/emc/usr_intf/pncconf/pncconf.glade:56362 -msgid "Spindle Max Output:" -msgstr "Max Uscita Mandrino:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Lathe" +msgstr "Tornio" -#: src/emc/usr_intf/pncconf/pncconf.glade:56412 -msgid "Spindle Max limit:" -msgstr "Limite Max Mandrino:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Diagram" +msgstr "Diagramma" -#: src/emc/usr_intf/pncconf/pncconf.glade:56426 -msgid "Spindle Min Limit:" -msgstr "Limite Min Mandrino:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Output" +msgstr "Output" -#: src/emc/usr_intf/pncconf/pncconf.glade:56456 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" -"Open Loop\n" -" Test" +"\t\t\t\tPNCconf - Point aNd Click CONFigurator\n" +"PNCconf is a configuration program for Linuxcnc.\n" +"It configures machines using Mesa I/O cards.\n" +"It configures servo,stepper or closed loop stepper machines.\n" +"It supports some of Mesa's sserial cards.\n" +"It will forever be a work in progress as Linuxcnc changes.\n" +"\n" +"Many thanks To:\n" +"Jeff Eppler - PNCconf is based on stepconf - Jeff's creation. Jeff also has " +"helped with techincal difficulties.\n" +"Big John T - John drew the original machine illustrations. Testing and " +"suggestions.\n" +"Peter Wallace - Technical questions on Mesa's I/O cards. Supplied sample " +"equipment to test with.\n" +"Andy Pugh - suggestions, questions answered and many pin name changes :) \n" +"Dave Armstrong - testing and suggestions expecially with resolvers.\n" +"Everyone who gave a bug report ! I cannot test everything thoughly enough so " +"reports help.\n" +"\n" +"Beta 1 version" msgstr "" -"Anello Aperto\n" -" Test" -#: src/emc/usr_intf/pncconf/pncconf.glade:56557 -msgid "Quad Pulses / Rev:" -msgstr "Impulsi Quad / giro" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "TPI " +msgstr "TPI " -#: src/emc/usr_intf/pncconf/pncconf.glade:56572 -msgid "Dac Max Output:" -msgstr "Max Uscita Dac:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulley teeth (motor:Leadscrew):" +msgstr "Puleggia dentata (Motore: vite conduttrice):" -#: src/emc/usr_intf/pncconf/pncconf.glade:56586 -msgid "Dac Output Scale:" -msgstr "Scala Uscita Dac:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Worm turn ratio (Input:Outputl)" +msgstr "Worm turn ratio (Input:Outputl)" -#: src/emc/usr_intf/pncconf/pncconf.glade:56599 -msgid "3pwm Deadtime:" -msgstr "3pwmTempo morto:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Microstep Multiplication Factor:" +msgstr "Fattore Moltiplicativo Microstep:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56612 -msgid "3pwm Scale:" -msgstr "Scala 3pwm:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Leadscrew Metric Pitch" +msgstr "Passo della vite metrica:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56626 -msgid "Output Info" -msgstr "Info Output" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motor steps per revolution:" +msgstr "Passi al giro del motore" -#: src/emc/usr_intf/pncconf/pncconf.glade:56691 -msgid "Driver Type:" -msgstr "Tipo Driver:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Motor Scale" +msgstr "Scala Motore Step " -#: src/emc/usr_intf/pncconf/pncconf.glade:56735 -msgid "Direction Setup" -msgstr "Setup Direzione" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "TPI" +msgstr "TPI" -#: src/emc/usr_intf/pncconf/pncconf.glade:56748 -msgid "Direction Hold" -msgstr "Mantiene Direzione" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "X 4 = Pulses/Rev" +msgstr "X 4 = Impulsi/Giro" -#: src/emc/usr_intf/pncconf/pncconf.glade:56791 -msgid "Step Space" -msgstr "Spazio Passo" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder lines per revolution:" +msgstr "Linee encoder per giro:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56804 -msgid "Step On-Time" -msgstr "Tempo Passo" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulley teeth (encoder:Leadscrew):" +msgstr "Puleggia dentata (encoder:vite conduttrice):" -#: src/emc/usr_intf/pncconf/pncconf.glade:56820 -msgid "Stepper Info" -msgstr "Informazioni Stepper" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder Scale" +msgstr " Scala Encoder:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56871 -msgid "No feedback" -msgstr "Nessun feedback" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " " +msgstr " " -#: src/emc/usr_intf/pncconf/pncconf.glade:56881 -msgid "Absolute Feedback" -msgstr "Feedback Assoluto" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "encoder pulses per unit:" +msgstr "Impulsi encoder per unità:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56895 -msgid "Incremental Feedback" -msgstr "Feedback Incrementale" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "motor steps per unit:" +msgstr "Passi del motore per unità:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Calculated Scale" +msgstr "Scala calcolata" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / encoder pulse" +msgstr "mm / impulso encoder" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Resolution:" +msgstr "Risoluzione:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56909 -msgid "Incremental Encoder" -msgstr "Encoder Incrementale" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Distance to acheave max speed:" +msgstr "Distanza per raggiungere la massima velocita':" -#: src/emc/usr_intf/pncconf/pncconf.glade:56921 -msgid "Hall sensors" -msgstr "Sensori di Hall " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "sec" +msgstr "sec" -#: src/emc/usr_intf/pncconf/pncconf.glade:56933 -msgid "Fanuc Red Cap " -msgstr "Fanuc Red Cap " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Khz" +msgstr "KHz" -#: src/emc/usr_intf/pncconf/pncconf.glade:56945 -msgid "Use encoder Index" -msgstr "Usa Indice Encoder" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Calculated Axis SCALE:" +msgstr "Scala Asse Calcolata:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56976 -msgid "Input Options" -msgstr "Opzioni Input" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motor RPM at max speed:" +msgstr "Giri motore alla massima velocità:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57000 -msgid "Digital instead of PWM outputs" -msgstr "Input digitale al posto di output PWM " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "xmaxrpm" +msgstr "xmaxrpm" -#: src/emc/usr_intf/pncconf/pncconf.glade:57009 -msgid "6 outputs instead of 3 " -msgstr "6 uscite invece di 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motion Data" +msgstr "Dati Movimento" -#: src/emc/usr_intf/pncconf/pncconf.glade:57021 -msgid "Force Trapezoid Mode" -msgstr "Forza Modo Trapezoidale" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "gtk-cancel" +msgstr "Annulla gtk" -#: src/emc/usr_intf/pncconf/pncconf.glade:57033 -msgid "Emulate feedback " -msgstr "Emulazione feedback " +#: src/emc/usr_intf/gscreen/gscreen.py:349 +#, python-format +msgid "adding import dir %s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57045 -msgid "Emulated Hall sensors" -msgstr "Emulazione sensori Hall " +#: src/emc/usr_intf/gscreen/gscreen.py:355 +#, python-format +msgid "module '%s' imported OK" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57058 -msgid "Emulated Fanuc Red Cap" -msgstr "Emulazione Fanuc Red Cap" +#: src/emc/usr_intf/gscreen/gscreen.py:452 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Using CUSTOM glade file from %s ****" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57085 -msgid "8i20 Max Current" -msgstr "Corrente Max 8i20" +#: src/emc/usr_intf/gscreen/gscreen.py:457 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Using SKIN glade file from %s ****" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57119 -msgid "Output Options" -msgstr "Opzioni Uscita" +#: src/emc/usr_intf/gscreen/gscreen.py:460 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: using STOCK glade file from: %s ****" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57153 -msgid "Poles" -msgstr "Poli" +#: src/emc/usr_intf/gscreen/gscreen.py:466 +#, python-format +msgid "**** Gscreen GLADE ERROR: With main screen xml file: %s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57163 -msgid "Encoder-offset" -msgstr "Offset Encoder" +#: src/emc/usr_intf/gscreen/gscreen.py:471 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Screen 2 -Using CUSTOM glade file from %s ****" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57173 -msgid "Drive-offset" -msgstr "Drive-offset" +#: src/emc/usr_intf/gscreen/gscreen.py:477 +#, python-format +msgid "**** Gscreen GLADE ERROR: With screen 2's xml file: %s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57183 -msgid "output-pattern" -msgstr "output-pattern" +#: src/emc/usr_intf/gscreen/gscreen.py:479 +msgid "" +"\n" +"**** GSCREEN INFO: No Screen 2 glade file present" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57193 -msgid "Input-pattern" -msgstr "Input-pattern" +#: src/emc/usr_intf/gscreen/gscreen.py:519 +msgid "No UNITS entry found in [TRAJ] or [AXIS_0] of INI file" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57203 -msgid "Reverse" -msgstr "Indietro" +#: src/emc/usr_intf/gscreen/gscreen.py:532 +msgid "" +"*** Gscreen ERROR: Asking for a HAL component using a name that already " +"exists." +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57303 -msgid "lead angle" -msgstr "angolo inclinazione" +#: src/emc/usr_intf/gscreen/gscreen.py:585 +msgid "No default jog increments entry found in [DISPLAY] of INI file" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57313 -msgid "alignment current" -msgstr "allineamento corrente" +#: src/emc/usr_intf/gscreen/gscreen.py:598 +msgid "No default angular jog increments entry found in [DISPLAY] of INI file" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57354 -msgid "Configuration" -msgstr "Configurazione " +#: src/emc/usr_intf/gscreen/gscreen.py:607 +#, python-format +msgid "" +"No DEFAULT_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57389 -msgid "Use Brushless Motor Control" -msgstr "Uso Controllo Motore Brushless " +#: src/emc/usr_intf/gscreen/gscreen.py:618 +#, python-format +msgid "" +"No MAX_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57425 -msgid "Scale:" -msgstr "Scala:" +#: src/emc/usr_intf/gscreen/gscreen.py:625 +msgid "No MAX_VELOCITY found in [TRAJ] of the INI file" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57446 -msgid "% " -msgstr "% " +#: src/emc/usr_intf/gscreen/gscreen.py:638 +#, python-format +msgid "" +"No DEFAULT_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57466 -msgid "Use Spindle-At-Speed" -msgstr "Usa Mandrino a velocità" +#: src/emc/usr_intf/gscreen/gscreen.py:649 +#, python-format +msgid "" +"No MAX_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57491 -msgid "Filter gain:" -msgstr "Guadagno Filtro " +#: src/emc/usr_intf/gscreen/gscreen.py:657 +msgid "No MAX_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57526 -msgid "Spindle Display Filter Settings" -msgstr "Spindle Display Filter Settings" +#: src/emc/usr_intf/gscreen/gscreen.py:663 +msgid "No MIN_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57577 -msgid "Single Input Encoder" -msgstr "Encoder Ingresso Singolo" +#: src/emc/usr_intf/gscreen/gscreen.py:669 +msgid "No MAX_FEED_OVERRIDE entry found in [DISPLAY] of INI file" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57631 -msgid "Invert Encoder Direction " -msgstr "Inverti Direzione Encoder " +#: src/emc/usr_intf/gscreen/gscreen.py:674 +msgid "This screen will be orientated for Lathe options" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57646 -msgid "Invert Motor Direction" -msgstr "Inverti Direzione Motore" +#: src/emc/usr_intf/gscreen/gscreen.py:727 +msgid "CYCLE_TIME in [DISPLAY] of INI file is missing: defaulting to 100ms" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57661 -msgid "Feed Speed Following Error:" -msgstr "Errore Inseguimento Velocità Avanzamento:" +#: src/emc/usr_intf/gscreen/gscreen.py:730 +msgid "CYCLE_TIME in [DISPLAY] of INI file is too small: defaulting to 100ms" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57675 -msgid "Rapid Speed Following Error:" -msgstr "Errore Inseguimento Velocità Rapido:" +#: src/emc/usr_intf/gscreen/gscreen.py:732 +#, python-format +msgid "timeout %d" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57715 +#: src/emc/usr_intf/gscreen/gscreen.py:1001 msgid "" -"Calculate\n" -"Scale" +"**** WARNING GSCREEN: could not understand the window geometry info in " +"hidden preference file" msgstr "" -"Calcola\n" -"Scala" -#: src/emc/usr_intf/pncconf/pncconf.glade:57744 -msgid "Stepper Scale:" -msgstr "Scala Stepper:" +#: src/emc/usr_intf/gscreen/gscreen.py:1089 +msgid "Control powered up and initialized" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57771 -msgid "encoder Scale:" -msgstr "scala Encoder:" +#: src/emc/usr_intf/gscreen/gscreen.py:1264 +msgid "Cycle start pressed in AUTO mode" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57928 -msgid "Test / Tune Axis" -msgstr "Test/Regolazione Asse" +#: src/emc/usr_intf/gscreen/gscreen.py:1267 +#, fuzzy +msgid "Cycle start pressed in MDI mode" +msgstr "Impossibile eseguire il comando (%s) in modalità MDI" -#: src/emc/usr_intf/pncconf/pncconf.glade:58235 -msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " +#: src/emc/usr_intf/gscreen/gscreen.py:1290 +#, python-format +msgid "Please change to tool # %s, then click OK." msgstr "" -"Distanza corsa positiva (dall'Origine Zero Macchina fino alla fine della " -"corsa +):" -#: src/emc/usr_intf/pncconf/pncconf.glade:58251 -msgid "Home Search Velocity:" -msgstr "Velocita' Ricerca Zero:" +#: src/emc/usr_intf/gscreen/gscreen.py:1291 +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +#: src/emc/usr_intf/gscreen/gscreen.py:1789 +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2849 +msgid "INFO:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58266 -msgid "Home Switch location (Offset from machine zero Origin):" -msgstr "Posizione Pulsante Zero (Distanza dall'origine Zero Macchina):" +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +msgid "Can't start spindle manually while MDI busy" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58310 -msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +#, fuzzy +msgid "can't start spindle manually in Auto mode" +msgstr "Impossibile eseguire il comando (%s) in modalità manuale" + +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +msgid "No direction selected for spindle" msgstr "" -"Distanza spostamento Negativa (Origine Zero Macchina fino alla fine corsa): " -#: src/emc/usr_intf/pncconf/pncconf.glade:58326 -msgid "Home Position location (offset from machine zero Origin):" -msgstr "Locazione Posizione Zero (distanza dall' Origine Zero Macchina):" +#: src/emc/usr_intf/gscreen/gscreen.py:1331 +#: src/emc/usr_intf/gscreen/gscreen.py:1333 +#, fuzzy +msgid "Spindle Speed Preset Entry" +msgstr "Indicatore Rotazione Mandrino" -#: src/emc/usr_intf/pncconf/pncconf.glade:58355 -msgid "Use Backlash Compensation:" -msgstr "Usa Compensazione Giochi:" +#: src/emc/usr_intf/gscreen/gscreen.py:1362 +#: src/emc/usr_intf/gscreen/gscreen.py:1367 +#, fuzzy +msgid "Manual Tool Index Entry" +msgstr "AXIS Cambio utensile Manuale" -#: src/emc/usr_intf/pncconf/pncconf.glade:58369 -msgid "Use Compensation File:" -msgstr "Usa File Compensazione:" +#: src/emc/usr_intf/gscreen/gscreen.py:1489 +msgid "Entry dialog" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58412 -msgid "" -"Type 1\n" -"Type 2" +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +#, fuzzy +msgid "Classicladder realtime component not detected" +msgstr "Componente realtime non caricato" + +#: src/emc/usr_intf/gscreen/gscreen.py:1617 +msgid "ladder not available - is the realtime component loaded?" msgstr "" -"Tipo 1\n" -"Tipo 2" -#: src/emc/usr_intf/pncconf/pncconf.glade:58427 -msgid "filename:" -msgstr "Nomefile:" +#: src/emc/usr_intf/gscreen/gscreen.py:1691 +#, fuzzy +msgid "Override Entry" +msgstr "Superamento controllo MPG" -#: src/emc/usr_intf/pncconf/pncconf.glade:58455 -msgid "Home latch Velocity:" -msgstr "Velocita' ricerca Zero:" +#: src/emc/usr_intf/gscreen/gscreen.py:1719 +#, fuzzy +msgid "Machine powered on" +msgstr "Macchina on" -#: src/emc/usr_intf/pncconf/pncconf.glade:58494 -msgid "Home Search Direction:" -msgstr "Direzione Ricerca Zero: " +#: src/emc/usr_intf/gscreen/gscreen.py:1724 +#, fuzzy +msgid "Machine Estopped!" +msgstr "Posizione Macchina" -#: src/emc/usr_intf/pncconf/pncconf.glade:58507 -msgid "" -"Towards Negative limit\n" -"Towards Positive limit" +#: src/emc/usr_intf/gscreen/gscreen.py:1727 +#, fuzzy +msgid "Calculator" msgstr "" -"Verso limite Negativo\n" -"Verso limite Positivo" +"Calcola\n" +"Scala" -#: src/emc/usr_intf/pncconf/pncconf.glade:58523 -msgid "Home Latch Direction:" -msgstr "Direzione Ricerca Zero:" +#: src/emc/usr_intf/gscreen/gscreen.py:1857 +#, python-format +msgid "Axes %s are homed" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58552 -msgid "Home Final Velocity:" -msgstr "Velocita' finale Zero:" +#: src/emc/usr_intf/gscreen/gscreen.py:1864 +msgid "All the axes have been homed" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58591 -msgid "Use Encoder Index For Home:" -msgstr "Use Indice Encoder per Zero:" +#: src/emc/usr_intf/gscreen/gscreen.py:1874 +#, python-format +msgid "There are unhomed axes: %s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58603 -msgid "" -"NO\n" -"YES" +#: src/emc/usr_intf/gscreen/gscreen.py:1879 +#, fuzzy, python-format +msgid "Program loaded: %s" +msgstr "Il file Programma è %s" + +#: src/emc/usr_intf/gscreen/gscreen.py:1977 +#, fuzzy +msgid "Manual Spindle Control" +msgstr "Arresto Mandrino Manuale" + +#: src/emc/usr_intf/gscreen/gscreen.py:2034 +msgid "Keyboard" msgstr "" -"NO\n" -"SI" -#: src/emc/usr_intf/pncconf/pncconf.glade:58628 -msgid "Advanced Options" -msgstr "Opzioni Avanzate" +#: src/emc/usr_intf/gscreen/gscreen.py:2067 +msgid "Error with launching 'Onboard' on-screen keyboard program" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58712 -msgid "Cmd 1" -msgstr "Cmd 1" +#: src/emc/usr_intf/gscreen/gscreen.py:2215 +#, python-format +msgid "**** GSCREEN INFO: Overriding internal signal call to %s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58718 -msgid "Cmd 2" -msgstr "Cmd 2" +#: src/emc/usr_intf/gscreen/gscreen.py:2643 +#, fuzzy +msgid " Zero Origin" +msgstr "Originale" -#: src/emc/usr_intf/pncconf/pncconf.glade:58728 -msgid "Cmd 3" -msgstr "Cmd 3" +#: src/emc/usr_intf/gscreen/gscreen.py:2644 +#, fuzzy +msgid "Offset Origin" +msgstr "Informazione Offset" -#: src/emc/usr_intf/pncconf/pncconf.glade:58738 -msgid "Cmd 4" -msgstr "Cmd 4" +#: src/emc/usr_intf/gscreen/gscreen.py:2659 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing text or type) " +"in INI File [DISPLAY] section" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58748 -msgid "Cmd 5" -msgstr "Cmd 5" +#: src/emc/usr_intf/gscreen/gscreen.py:2661 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing pinname) in " +"INI File [DISPLAY] section" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58874 -msgid "Cmd 6" -msgstr "Cmd 6" +#: src/emc/usr_intf/gscreen/gscreen.py:2663 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing boldtext) in " +"INI File [DISPLAY] section" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58884 -msgid "Cmd 7" -msgstr "Cmd 7" +#: src/emc/usr_intf/gscreen/gscreen.py:2667 +#, python-format +msgid "" +"**** Gscreen ERROR: invalid message type (%s)in INI File [DISPLAY] section" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58896 -msgid "Cmd 8" -msgstr "Cmd 8" +#: src/emc/usr_intf/gscreen/gscreen.py:2699 +msgid "Dialog error - Is the dialog handler missing from the handler file?" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58908 -msgid "Cmd 9" -msgstr "Cmd 9" +#: src/emc/usr_intf/gscreen/gscreen.py:2701 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3540 +#, fuzzy +msgid "Manual Toolchange" +msgstr "AXIS Cambio utensile Manuale" -#: src/emc/usr_intf/pncconf/pncconf.glade:58920 -msgid "Cmd 10" -msgstr "Cmd 10" +#: src/emc/usr_intf/gscreen/gscreen.py:2703 +#: src/emc/usr_intf/gmoccapy/dialogs.py:94 +#: src/emc/usr_intf/gmoccapy/dialogs.py:107 +#: src/emc/usr_intf/gmoccapy/dialogs.py:119 +msgid "Operator Message" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:2737 +#: src/emc/usr_intf/gscreen/gscreen.py:2741 +#: src/emc/usr_intf/gmoccapy/dialogs.py:155 +#: src/emc/usr_intf/gmoccapy/dialogs.py:159 +#, fuzzy +msgid "Restart Entry" +msgstr "Riavvio" -#: src/emc/usr_intf/pncconf/pncconf.glade:58990 -msgid "Cmd 11" -msgstr "Cmd 11" +#: src/emc/usr_intf/gscreen/gscreen.py:2752 +#: src/emc/usr_intf/gmoccapy/dialogs.py:173 +msgid "Enter" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59000 -msgid "Cmd 12" -msgstr "Cmd 12" +#: src/emc/usr_intf/gscreen/gscreen.py:2774 +#, python-format +msgid "Ready to Restart program from line %d" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59012 -msgid "Cmd 13" -msgstr "Cmd 13" +#: src/emc/usr_intf/gscreen/gscreen.py:2807 +#, fuzzy +msgid "Invalid embeded tab configuration" +msgstr "Includi configurazione _HAL personalizzata" -#: src/emc/usr_intf/pncconf/pncconf.glade:59024 -msgid "Cmd 14" -msgstr "Cmd 14" +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +msgid "Can't jog multiple axis" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59036 -msgid "Cmd 15" -msgstr "Cmd 15" +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +#, fuzzy +msgid "No axis selected to jog" +msgstr "Seleziona Input asse B" -#: src/emc/usr_intf/pncconf/pncconf.glade:59053 -msgid "Include Halui user interface component / commands" -msgstr "Include componente/comandi interfaccia utente Halui" +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +#, fuzzy +msgid "No axis selected to move" +msgstr "Seleziona Input asse B" -#: src/emc/usr_intf/pncconf/pncconf.glade:59127 -msgid "Number of digital (bit) in pins:" -msgstr "Numero di pin digitali(bit) in input:" +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +msgid "Can't home multiple axis - select HOME ALL instead" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59138 -msgid "Number of digital (bit) out pins:" -msgstr "Numero di pin (bit) output digitali:" +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +#, fuzzy +msgid "No axis selected to home" +msgstr "Seleziona Input asse B" -#: src/emc/usr_intf/pncconf/pncconf.glade:59308 -msgid "Setup number of external pins" -msgstr "Imposta numero di pin esterni" +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +msgid "Can't unhome multiple axis" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59360 -msgid "Z Auto Touch off program" -msgstr "programma Z Auto Touch" +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +msgid "No axis selected to unhome" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59505 -msgid "HAL Component Page" -msgstr "Pagina Componenti HAL" +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +msgid "No axis selected for origin zeroing" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59648 -msgid "lowpass" -msgstr "passabasso" +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +msgid "No axis selected for origin touch-off" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59675 -msgid "mux16" -msgstr "mux16" +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +msgid "Can't tool touch-off multiple axes" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59702 -msgid "scale" -msgstr "scala" +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +msgid "No axis selected for tool touch-off" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59728 -msgid "PID" -msgstr "PID" +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#: src/emc/usr_intf/gscreen/gscreen.py:3375 +#, fuzzy +msgid "Error Message" +msgstr "Errore nel salvataggio file" -#: src/emc/usr_intf/pncconf/pncconf.glade:59739 -msgid "number of components" -msgstr "numero di componenti" +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#, python-format +msgid "Tool editor error - is the %s editor available?" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59767 -msgid "Component" -msgstr "Componenti" +#: src/emc/usr_intf/gscreen/gscreen.py:3377 +#: src/emc/usr_intf/gscreen/gscreen.py:3379 +msgid "Message" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59794 -msgid "Add HAL components with this page." -msgstr "Aggiungi componenti HAL con questa pagina." +#: src/emc/usr_intf/gscreen/gscreen.py:3409 +#, fuzzy, python-format +msgid "%d RPM" +msgstr "Max giri/min" -#: src/emc/usr_intf/pncconf/pncconf.glade:59844 -msgid "Thread Command" -msgstr "Comando Thread" +#: src/emc/usr_intf/gscreen/gscreen.glade:48 +#: src/emc/usr_intf/gscreen/gscreen.glade:59 +#: src/emc/usr_intf/gscreen/gscreen.glade:135 +#: src/emc/usr_intf/gscreen/gscreen.glade:176 +#: src/emc/usr_intf/gscreen/gscreen.glade:187 +#: src/emc/usr_intf/gscreen/gscreen.glade:264 +#: src/emc/usr_intf/gscreen/gscreen.glade:306 +#: src/emc/usr_intf/gscreen/gscreen.glade:317 +#: src/emc/usr_intf/gscreen/gscreen.glade:393 +#: src/emc/usr_intf/gscreen/gscreen.glade:434 +#: src/emc/usr_intf/gscreen/gscreen.glade:445 +#: src/emc/usr_intf/gscreen/gscreen.glade:521 +#: src/emc/usr_intf/gscreen/gscreen.glade:562 +#: src/emc/usr_intf/gscreen/gscreen.glade:573 +#: src/emc/usr_intf/gscreen/gscreen.glade:649 +#: src/emc/usr_intf/gscreen/gscreen.glade:690 +#: src/emc/usr_intf/gscreen/gscreen.glade:701 +#: src/emc/usr_intf/gscreen/gscreen.glade:777 +#: src/emc/usr_intf/gscreen/gscreen.glade:818 +#: src/emc/usr_intf/gscreen/gscreen.glade:829 +#: src/emc/usr_intf/gscreen/gscreen.glade:905 +#: src/emc/usr_intf/gscreen/gscreen.glade:946 +#: src/emc/usr_intf/gscreen/gscreen.glade:957 +#: src/emc/usr_intf/gscreen/gscreen.glade:1033 +#: src/emc/usr_intf/gscreen/gscreen.glade:1074 +#: src/emc/usr_intf/gscreen/gscreen.glade:1085 +#: src/emc/usr_intf/gscreen/gscreen.glade:1161 +msgid "0000.0000" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59854 -msgid "Thread Speed" -msgstr "Velocità Thread" +#: src/emc/usr_intf/gscreen/gscreen.glade:73 +#: src/emc/usr_intf/gscreen/gscreen.glade:201 +#: src/emc/usr_intf/gscreen/gscreen.glade:331 +#: src/emc/usr_intf/gscreen/gscreen.glade:459 +#: src/emc/usr_intf/gscreen/gscreen.glade:587 +#: src/emc/usr_intf/gscreen/gscreen.glade:715 +#: src/emc/usr_intf/gscreen/gscreen.glade:843 +#: src/emc/usr_intf/gscreen/gscreen.glade:971 +#: src/emc/usr_intf/gscreen/gscreen.glade:1099 +msgid "REL" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59906 -msgid "Load Command " -msgstr "Carica Comando " +#: src/emc/usr_intf/gscreen/gscreen.glade:99 +#: src/emc/usr_intf/gscreen/gscreen.glade:227 +#: src/emc/usr_intf/gscreen/gscreen.glade:357 +#: src/emc/usr_intf/gscreen/gscreen.glade:485 +#: src/emc/usr_intf/gscreen/gscreen.glade:613 +#: src/emc/usr_intf/gscreen/gscreen.glade:741 +#: src/emc/usr_intf/gscreen/gscreen.glade:869 +#: src/emc/usr_intf/gscreen/gscreen.glade:997 +#: src/emc/usr_intf/gscreen/gscreen.glade:1125 +msgid "ABS" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59952 -msgid "Servo Thread" -msgstr "Thread Servo" +#: src/emc/usr_intf/gscreen/gscreen.glade:630 +msgid "B" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59965 -msgid "Base Thread" -msgstr "Thread Base" +#: src/emc/usr_intf/gscreen/gscreen.glade:758 +#, fuzzy +msgid "C" +msgstr "Orario" -#: src/emc/usr_intf/pncconf/pncconf.glade:59979 -msgid "Custom Components Commands" -msgstr "Componenti Comandi Personalizzati" +#: src/emc/usr_intf/gscreen/gscreen.glade:886 +#, fuzzy +msgid "U" +msgstr "Su" -#: src/emc/usr_intf/pncconf/pncconf.glade:60031 -msgid "" -" Motor Encoder Test\n" -"Warning limits switches \n" -" Will not be obeyed" +#: src/emc/usr_intf/gscreen/gscreen.glade:1014 +msgid "V" msgstr "" -" Test Encoder Motore\n" -"Attenzione interruttori limite \n" -" Non verranno rispettati" -#: src/emc/usr_intf/pncconf/pncconf.glade:60067 -#: src/emc/usr_intf/pncconf/pncconf.glade:60766 -#: src/emc/usr_intf/pncconf/pncconf.glade:61859 -#: src/emc/usr_intf/pncconf/pncconf.glade:62952 -#: src/emc/usr_intf/pncconf/pncconf.glade:64045 -#: src/emc/usr_intf/pncconf/pncconf.glade:65025 -msgid "Invert Motor" -msgstr "Inverti Motore" +#: src/emc/usr_intf/gscreen/gscreen.glade:1298 +#, fuzzy +msgid "G code" +msgstr "Encoder X" -#: src/emc/usr_intf/pncconf/pncconf.glade:60083 -#: src/emc/usr_intf/pncconf/pncconf.glade:60782 -#: src/emc/usr_intf/pncconf/pncconf.glade:61875 -#: src/emc/usr_intf/pncconf/pncconf.glade:62968 -#: src/emc/usr_intf/pncconf/pncconf.glade:64061 -#: src/emc/usr_intf/pncconf/pncconf.glade:65040 -msgid "Invert Encoder" -msgstr "Inverti Encoder" +#: src/emc/usr_intf/gscreen/gscreen.glade:1392 +#, fuzzy +msgid "G Codes Active" +msgstr "File caricato" -#: src/emc/usr_intf/pncconf/pncconf.glade:60100 -msgid "Enable Amp" -msgstr "Abilita Amp" +#: src/emc/usr_intf/gscreen/gscreen.glade:1451 +#, fuzzy +msgid "MV:100%" +msgstr "FO: 100%" -#: src/emc/usr_intf/pncconf/pncconf.glade:60114 -msgid "Reset Encoder" -msgstr "Reset Encoder" +#: src/emc/usr_intf/gscreen/gscreen.glade:1470 +#, fuzzy +msgid " Mist" +msgstr "Aria" -#: src/emc/usr_intf/pncconf/pncconf.glade:60142 -msgid "Encoder Scale:" -msgstr "Scala Encoder:" +#: src/emc/usr_intf/gscreen/gscreen.glade:1481 +#, fuzzy +msgid " Flood " +msgstr "Refrigerante" -#: src/emc/usr_intf/pncconf/pncconf.glade:60153 -msgid "Dac Offset:" -msgstr "Dac Offset:" +#: src/emc/usr_intf/gscreen/gscreen.glade:1533 +#, fuzzy +msgid " At Speed " +msgstr "LED Velocità Mandrino" -#: src/emc/usr_intf/pncconf/pncconf.glade:60243 -msgid "Fast Dac Speed" -msgstr "Velocità Dac Alta" +#: src/emc/usr_intf/gscreen/gscreen.glade:1546 +#, fuzzy +msgid " Jog mode" +msgstr "Modo joint" -#: src/emc/usr_intf/pncconf/pncconf.glade:60258 -msgid "Slow Dac Speed" -msgstr "Velocità Dac Lenta" +#: src/emc/usr_intf/gscreen/gscreen.glade:1600 +msgid "10 DPM" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60407 -#: src/emc/usr_intf/pncconf/pncconf.glade:61503 -#: src/emc/usr_intf/pncconf/pncconf.glade:62596 -#: src/emc/usr_intf/pncconf/pncconf.glade:63689 -#: src/emc/usr_intf/pncconf/pncconf.glade:64788 -msgid "mm/minute" -msgstr "mm/minuto" +#: src/emc/usr_intf/gscreen/gscreen.glade:1616 +msgid "10 Ipm" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60441 -#: src/emc/usr_intf/pncconf/pncconf.glade:61536 -#: src/emc/usr_intf/pncconf/pncconf.glade:62629 -#: src/emc/usr_intf/pncconf/pncconf.glade:63722 -#: src/emc/usr_intf/pncconf/pncconf.glade:64821 -msgid "mm/minute^2" -msgstr "mm/minuto^2" +#: src/emc/usr_intf/gscreen/gscreen.glade:1690 +#, fuzzy +msgid "Status" +msgstr "a)" -#: src/emc/usr_intf/pncconf/pncconf.glade:60550 -#: src/emc/usr_intf/pncconf/pncconf.glade:61644 -#: src/emc/usr_intf/pncconf/pncconf.glade:62737 -#: src/emc/usr_intf/pncconf/pncconf.glade:64930 -msgid "Enable" -msgstr "Abilita" +#: src/emc/usr_intf/gscreen/gscreen.glade:1715 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2510 +#, fuzzy +msgid "" +"Search\n" +" Text:" +msgstr "Percorso ricerca" -#: src/emc/usr_intf/pncconf/pncconf.glade:60600 -#: src/emc/usr_intf/pncconf/pncconf.glade:61693 -#: src/emc/usr_intf/pncconf/pncconf.glade:62786 -#: src/emc/usr_intf/pncconf/pncconf.glade:63879 -#: src/emc/usr_intf/pncconf/pncconf.glade:65139 -msgid "Seconds" -msgstr "Secondi" +#: src/emc/usr_intf/gscreen/gscreen.glade:1766 +#, fuzzy +msgid "Mode" +msgstr "Accensione" -#: src/emc/usr_intf/pncconf/pncconf.glade:60907 -#: src/emc/usr_intf/pncconf/pncconf.glade:62212 -#: src/emc/usr_intf/pncconf/pncconf.glade:63093 -#: src/emc/usr_intf/pncconf/pncconf.glade:64398 -#: src/emc/usr_intf/pncconf/pncconf.glade:65255 -msgid "DeadBand" -msgstr "Zona neutra" +#: src/emc/usr_intf/gscreen/gscreen.glade:1782 +#, fuzzy +msgid "Main Level" +msgstr "Livello" -#: src/emc/usr_intf/pncconf/pncconf.glade:61089 -#: src/emc/usr_intf/pncconf/pncconf.glade:61380 -#: src/emc/usr_intf/pncconf/pncconf.glade:62030 -#: src/emc/usr_intf/pncconf/pncconf.glade:62401 -#: src/emc/usr_intf/pncconf/pncconf.glade:63275 -#: src/emc/usr_intf/pncconf/pncconf.glade:63562 -#: src/emc/usr_intf/pncconf/pncconf.glade:64216 -#: src/emc/usr_intf/pncconf/pncconf.glade:64587 -#: src/emc/usr_intf/pncconf/pncconf.glade:65431 -#: src/emc/usr_intf/pncconf/pncconf.glade:65718 -msgid "Original" -msgstr "Originale" +#: src/emc/usr_intf/gscreen/gscreen.glade:1823 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3678 +#, fuzzy +msgid "Themes" +msgstr "Tema:" -#: src/emc/usr_intf/pncconf/pncconf.glade:61138 -#: src/emc/usr_intf/pncconf/pncconf.glade:61981 -#: src/emc/usr_intf/pncconf/pncconf.glade:63324 -#: src/emc/usr_intf/pncconf/pncconf.glade:64167 -#: src/emc/usr_intf/pncconf/pncconf.glade:65480 -msgid "D:" -msgstr "D:" +#: src/emc/usr_intf/gscreen/gscreen.glade:1847 +#, fuzzy +msgid "Relative Text Color" +msgstr "Textcolor Relativa" -#: src/emc/usr_intf/pncconf/pncconf.glade:61148 -#: src/emc/usr_intf/pncconf/pncconf.glade:61971 -#: src/emc/usr_intf/pncconf/pncconf.glade:63334 -#: src/emc/usr_intf/pncconf/pncconf.glade:64157 -#: src/emc/usr_intf/pncconf/pncconf.glade:65490 -msgid "I:" -msgstr "I:" +#: src/emc/usr_intf/gscreen/gscreen.glade:1895 +#, fuzzy +msgid "DTG Text Color" +msgstr "DTG Textcolor" -#: src/emc/usr_intf/pncconf/pncconf.glade:61158 -#: src/emc/usr_intf/pncconf/pncconf.glade:61961 -#: src/emc/usr_intf/pncconf/pncconf.glade:63344 -#: src/emc/usr_intf/pncconf/pncconf.glade:64147 -#: src/emc/usr_intf/pncconf/pncconf.glade:65500 -msgid "P:" -msgstr "P:" +#: src/emc/usr_intf/gscreen/gscreen.glade:1916 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3710 +#, fuzzy +msgid "Warning Audio" +msgstr "Attenzione" -#: src/emc/usr_intf/pncconf/pncconf.glade:61168 -#: src/emc/usr_intf/pncconf/pncconf.glade:61392 -#: src/emc/usr_intf/pncconf/pncconf.glade:61951 -#: src/emc/usr_intf/pncconf/pncconf.glade:62389 -#: src/emc/usr_intf/pncconf/pncconf.glade:63354 -#: src/emc/usr_intf/pncconf/pncconf.glade:63574 -#: src/emc/usr_intf/pncconf/pncconf.glade:64137 -#: src/emc/usr_intf/pncconf/pncconf.glade:64575 -#: src/emc/usr_intf/pncconf/pncconf.glade:65510 -#: src/emc/usr_intf/pncconf/pncconf.glade:65730 -msgid "Current" -msgstr "Corrente" +#: src/emc/usr_intf/gscreen/gscreen.glade:1926 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3723 +msgid "Alert Audio" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61185 -#: src/emc/usr_intf/pncconf/pncconf.glade:62278 -#: src/emc/usr_intf/pncconf/pncconf.glade:63371 -#: src/emc/usr_intf/pncconf/pncconf.glade:64464 -#: src/emc/usr_intf/pncconf/pncconf.glade:65527 -msgid "PID Tuning" -msgstr "Regolazione PID" +#: src/emc/usr_intf/gscreen/gscreen.glade:1947 +#, fuzzy +msgid "Grid Size" +msgstr "Dimensione" -#: src/emc/usr_intf/pncconf/pncconf.glade:61370 -#: src/emc/usr_intf/pncconf/pncconf.glade:62413 -#: src/emc/usr_intf/pncconf/pncconf.glade:63552 -#: src/emc/usr_intf/pncconf/pncconf.glade:64599 -#: src/emc/usr_intf/pncconf/pncconf.glade:65708 -msgid "Direction Setup:" -msgstr "Setup Direzione:" +#: src/emc/usr_intf/gscreen/gscreen.glade:1986 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4119 +#, fuzzy +msgid "Starting RPM" +msgstr "Settaggi" -#: src/emc/usr_intf/pncconf/pncconf.glade:61404 -#: src/emc/usr_intf/pncconf/pncconf.glade:62379 -#: src/emc/usr_intf/pncconf/pncconf.glade:63586 -#: src/emc/usr_intf/pncconf/pncconf.glade:64565 -#: src/emc/usr_intf/pncconf/pncconf.glade:65742 -msgid "Direction Hold:" -msgstr "Mantiene Direzione:" +#: src/emc/usr_intf/gscreen/gscreen.glade:2015 +msgid "Metric\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61414 -#: src/emc/usr_intf/pncconf/pncconf.glade:62369 -#: src/emc/usr_intf/pncconf/pncconf.glade:63596 -#: src/emc/usr_intf/pncconf/pncconf.glade:64555 -#: src/emc/usr_intf/pncconf/pncconf.glade:65752 -msgid "Step Space:" -msgstr "Spazio Passo:" +#: src/emc/usr_intf/gscreen/gscreen.glade:2030 +msgid "" +" Display\n" +"Aux Screen" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61424 -#: src/emc/usr_intf/pncconf/pncconf.glade:62359 -#: src/emc/usr_intf/pncconf/pncconf.glade:63606 -#: src/emc/usr_intf/pncconf/pncconf.glade:64545 -#: src/emc/usr_intf/pncconf/pncconf.glade:65762 -msgid "Step Time:" -msgstr "Tempo Passo:" +#: src/emc/usr_intf/gscreen/gscreen.glade:2045 +#, fuzzy +msgid "" +"Diameter\n" +" Mode" +msgstr "Diametro:" -#: src/emc/usr_intf/pncconf/pncconf.glade:61439 -#: src/emc/usr_intf/pncconf/pncconf.glade:62528 -#: src/emc/usr_intf/pncconf/pncconf.glade:63621 -#: src/emc/usr_intf/pncconf/pncconf.glade:64714 -#: src/emc/usr_intf/pncconf/pncconf.glade:65777 -msgid "Step Timing" -msgstr "Tempo Passo:" +#: src/emc/usr_intf/gscreen/gscreen.glade:2062 +#: src/emc/usr_intf/gscreen/gscreen.glade:3096 +#, fuzzy +msgid "" +" Show\n" +"Offsets" +msgstr "Mostra limi_ti" -#: src/emc/usr_intf/pncconf/pncconf.glade:63830 -msgid "enable" -msgstr "abilita" +#: src/emc/usr_intf/gscreen/gscreen.glade:2079 +#, fuzzy +msgid "" +"Show\n" +"DTG" +msgstr "Mostra" -#: src/emc/usr_intf/pncconf/pncconf.glade:65798 -msgid "spindle" -msgstr "mandrino" +#: src/emc/usr_intf/gscreen/gscreen.glade:2096 +msgid "" +" Gscreen\n" +"Fullscreen" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65881 -msgid "Help Page" -msgstr "Pagina Aiuto" +#: src/emc/usr_intf/gscreen/gscreen.glade:2118 +msgid "" +" On M7 Use\n" +"Aux Coolant" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65911 +#: src/emc/usr_intf/gscreen/gscreen.glade:2131 msgid "" -"X axis:\n" -"Total Travel = 10\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = 0\n" -"Pos Travel Distance = Total Travel - neg travel distance = 10\n" -"Home Position = Origin to Home Position distance = 6\n" -"\n" -"Y axis:\n" -"Total Travel = 8\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = -8\n" -"Pos Travel Distance = Total Travel - neg travel distance = 0\n" -"Home Position = Origin to Home Position distance = 0\n" -"\n" -"Z axis:\n" -"Total Travel = 12\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = -12\n" -"Pos Travel Distance = Total Travel - neg travel distance = 0\n" -"Home Position = Origin to Home Position distance = 0\n" -"\n" -"Note that the direction indicators on the top right show \n" -"movement of the TOOL and on the actual machine,\n" -"often it is the table that actually moves. In that case the \n" -"directions are opposite of shown.\n" -"\n" -"Note this is an example, Many other combinations are \n" -"possible" +" On M8 Use\n" +"Aux Coolant" msgstr "" -"Asse X:\n" -"cammino Totale= 10\n" -"Home Offset = distanza Origine fino a Home Switch = 0\n" -"Neg Travel Distance = Origin to neg limit distance = 0\n" -"Pos Travel Distance = Total Travel - neg travel distance = 10\n" -"Home Position = distanza Origine to Home Position = 6\n" -"\n" -"Asse Y\n" -"Total Travel = 8\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = -8\n" -"Pos Travel Distance = Total Travel - neg travel distance = 0\n" -"Home Position = Origin to Home Position distance = 0\n" -"\n" -"Asse Z:\n" -"Total Travel = 12\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = -12\n" -"Pos Travel Distance = Total Travel - neg travel distance = 0\n" -"Home Position = Origin to Home Position distance = 0\n" -"\n" -"Nota che gli indicatori direzione mostrate in alto a destra \n" -"sonoper il movimento del TOOL e sulla macchina reale,\n" -"spesso è la tavola che si muove. In questo caso le direzioni\n" -"del movimento sono opposte rispetto a quelle mostrate.\n" -"\n" -"Nota che è un esempio, Sono possibili molte altre \n" -"combinazioni" -#: src/emc/usr_intf/pncconf/pncconf.glade:65951 -msgid "Mill" -msgstr "Fresatrice" +#: src/emc/usr_intf/gscreen/gscreen.glade:2144 +#, fuzzy +msgid "Hide Pointer" +msgstr "Nascondi puntatore" -#: src/emc/usr_intf/pncconf/pncconf.glade:65970 +#: src/emc/usr_intf/gscreen/gscreen.glade:2156 msgid "" -"Total Travel = 4 + 6 = 10\n" -"Z Home Offset = Origin to Home Switch distance = 10\n" -"Z Neg Travel Distance = Origin to neg limit distance = 0\n" -"Z Pos Travel Distance = Total Travel - neg travel distance = 10\n" -"Z Home Position = Origin to Home Position distance = 4\n" -"\n" -"X axis would be similar but not shown fully for clarity.\n" -"This is just a sample reference other switch combinations are\n" -"possible." +" Desktop\n" +"Notification" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2228 +#: src/emc/usr_intf/gscreen/gscreen.glade:2368 +#, fuzzy +msgid "Debug" +msgstr "Debug..." + +#: src/emc/usr_intf/gscreen/gscreen.glade:2263 +#, fuzzy +msgid "Alarm History" +msgstr "Storia:" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2281 +msgid "" +" Launch\n" +"Halshow" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2293 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6449 +#, fuzzy +msgid "Calibration" +msgstr "_Calibrazione" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2304 +#, fuzzy +msgid "Halmeter" +msgstr "Hal Meter" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2315 +#, fuzzy +msgid "" +"linuxcnc\n" +" Status" +msgstr "Stato LinuxCNC" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2327 +#, fuzzy +msgid "Halscope" +msgstr "Hal Scope" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2338 +msgid "Ladder" msgstr "" -"Corsa Totale = 4+6 =10\n" -"Distanza Zero = Distanza dall'origine al pulsante Zero = -1\n" -"Distanza Corsa Neg = Distanza dall'origine al limite neg = -1\n" -"Distanza Corsa Pos = Corsa totale - Distanza Zero = 5\n" -"Posizione Zero = Distanza tra Origine e Posizione Zero = 1" -#: src/emc/usr_intf/pncconf/pncconf.glade:65994 -msgid "Lathe" -msgstr "Tornio" +#: src/emc/usr_intf/gscreen/gscreen.glade:2386 +#, fuzzy +msgid "Tooleditor" +msgstr "Editore Tabella Utensili..." -#: src/emc/usr_intf/pncconf/pncconf.glade:66010 -msgid "Diagram" -msgstr "Diagramma" +#: src/emc/usr_intf/gscreen/gscreen.glade:2404 +#, fuzzy +msgid "" +"Offset\n" +" Page" +msgstr "Valore Offset:" -#: src/emc/usr_intf/pncconf/pncconf.glade:66043 -msgid "Output" -msgstr "Output" +#: src/emc/usr_intf/gscreen/gscreen.glade:2572 +#: src/emc/usr_intf/gscreen/gscreen.glade:2749 +#: src/emc/usr_intf/gscreen/gscreen.glade:3156 +msgid "\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66123 -msgid "Motor steps per revolution:" -msgstr "Passi al giro del motore" +#: src/emc/usr_intf/gscreen/gscreen.glade:2584 +#, fuzzy +msgid "Tool Setting" +msgstr "Impostazoni Utensile" -#: src/emc/usr_intf/pncconf/pncconf.glade:66173 -#: src/emc/usr_intf/pncconf/pncconf.glade:66459 -msgid "Leadscrew Metric Pitch" -msgstr "Passo della vite metrica:" +#: src/emc/usr_intf/gscreen/gscreen.glade:2648 +#, fuzzy +msgid "" +"Single\n" +" Step" +msgstr "Passo Singolo" -#: src/emc/usr_intf/pncconf/pncconf.glade:66186 -msgid "Microstep Multiplication Factor:" -msgstr "Fattore Moltiplicativo Microstep:" +#: src/emc/usr_intf/gscreen/gscreen.glade:2661 +#, fuzzy +msgid "" +"Run At\n" +" Line" +msgstr "Tempo lavorazione:" -#: src/emc/usr_intf/pncconf/pncconf.glade:66199 -#: src/emc/usr_intf/pncconf/pncconf.glade:66481 -msgid "Worm turn ratio (Input:Outputl)" -msgstr "Worm turn ratio (Input:Outputl)" +#: src/emc/usr_intf/gscreen/gscreen.glade:2673 +msgid "" +"Change \n" +" View" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66212 -msgid "Pulley teeth (motor:Leadscrew):" -msgstr "Puleggia dentata (Motore: vite conduttrice):" +#: src/emc/usr_intf/gscreen/gscreen.glade:2760 +#, fuzzy +msgid "Homing\n" +msgstr "A_zzeramento" -#: src/emc/usr_intf/pncconf/pncconf.glade:66356 -msgid "TPI " -msgstr "TPI " +#: src/emc/usr_intf/gscreen/gscreen.glade:2781 +#, fuzzy +msgid "" +"Ignore\n" +"Limits" +msgstr "Limiti " -#: src/emc/usr_intf/pncconf/pncconf.glade:66372 -msgid "Step Motor Scale" -msgstr "Scala Motore Step " +#: src/emc/usr_intf/gscreen/gscreen.glade:2810 +#, fuzzy +msgid "" +" Set\n" +"Override" +msgstr "Imposta Incr. Avanzamento" -#: src/emc/usr_intf/pncconf/pncconf.glade:66472 -msgid "Pulley teeth (encoder:Leadscrew):" -msgstr "Puleggia dentata (encoder:vite conduttrice):" +#: src/emc/usr_intf/gscreen/gscreen.glade:2824 +msgid "Graphics\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66537 -msgid "Encoder lines per revolution:" -msgstr "Linee encoder per giro:" +#: src/emc/usr_intf/gscreen/gscreen.glade:2838 +#, fuzzy +msgid "" +"Menu\n" +"Level" +msgstr "Livello" -#: src/emc/usr_intf/pncconf/pncconf.glade:66547 -msgid "X 4 = Pulses/Rev" -msgstr "X 4 = Impulsi/Giro" +#: src/emc/usr_intf/gscreen/gscreen.glade:2851 +msgid "" +" Launch\n" +"Keyboard" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66651 -msgid "TPI" -msgstr "TPI" +#: src/emc/usr_intf/gscreen/gscreen.glade:2868 +#, fuzzy +msgid "Select Buttons" +msgstr "Opzioni Uscita" -#: src/emc/usr_intf/pncconf/pncconf.glade:66667 -msgid "Encoder Scale" -msgstr " Scala Encoder:" +#: src/emc/usr_intf/gscreen/gscreen.glade:2955 +#, fuzzy +msgid "" +"Unhome \n" +" All" +msgstr "Dis-Azzera tutto" -#: src/emc/usr_intf/pncconf/pncconf.glade:66711 -msgid "motor steps per unit:" -msgstr "Passi del motore per unità:" +#: src/emc/usr_intf/gscreen/gscreen.glade:2967 +#, fuzzy +msgid "" +"Unhome\n" +" Axis" +msgstr "Dis-Azzera Asse _%s" -#: src/emc/usr_intf/pncconf/pncconf.glade:66721 -msgid "encoder pulses per unit:" -msgstr "Impulsi encoder per unità:" +#: src/emc/usr_intf/gscreen/gscreen.glade:2979 +#: src/emc/usr_intf/gscreen/gscreen.glade:3084 +#, fuzzy +msgid "" +"Toggle\n" +"Readout" +msgstr "Autosend ON/OFF" -#: src/emc/usr_intf/pncconf/pncconf.glade:66756 -msgid " " -msgstr " " +#: src/emc/usr_intf/gscreen/gscreen.glade:3004 +#, fuzzy +msgid "" +"Jogging\n" +" Mode" +msgstr "Movimento" -#: src/emc/usr_intf/pncconf/pncconf.glade:66770 -msgid "Calculated Scale" -msgstr "Scala calcolata" +#: src/emc/usr_intf/gscreen/gscreen.glade:3016 +#, fuzzy +msgid "" +"coordinate\n" +" System" +msgstr "Sistema Coordinate:" -#: src/emc/usr_intf/pncconf/pncconf.glade:66848 -msgid "xmaxrpm" -msgstr "xmaxrpm" +#: src/emc/usr_intf/gscreen/gscreen.glade:3060 +#, fuzzy +msgid "" +"Index\n" +" Tool" +msgstr "Solo Indice" -#: src/emc/usr_intf/pncconf/pncconf.glade:66864 -msgid "RPM" -msgstr "giri/min" +#: src/emc/usr_intf/gscreen/gscreen.glade:3072 +#, fuzzy +msgid "" +"Spindle\n" +"Controls" +msgstr "Controlli" -#: src/emc/usr_intf/pncconf/pncconf.glade:66877 -msgid "Motor RPM at max speed:" -msgstr "Giri motore alla massima velocità:" +#: src/emc/usr_intf/gscreen/gscreen.glade:3195 +#, fuzzy +msgid "Open" +msgstr "Apri..." -#: src/emc/usr_intf/pncconf/pncconf.glade:66921 -msgid "Calculated Axis SCALE:" -msgstr "Scala Asse Calcolata:" +#: src/emc/usr_intf/gscreen/gscreen.glade:3205 +#, fuzzy +msgid "" +" Block\n" +"Delete" +msgstr "Cancella" -#: src/emc/usr_intf/pncconf/pncconf.glade:66934 -msgid "Khz" -msgstr "KHz" +#: src/emc/usr_intf/gscreen/gscreen.glade:3217 +#, fuzzy +msgid "" +"Optional\n" +" Stop" +msgstr "Stop Opzionale" -#: src/emc/usr_intf/pncconf/pncconf.glade:66949 -msgid "sec" -msgstr "sec" +#: src/emc/usr_intf/gscreen/gscreen.glade:3229 +msgid "" +" Full\n" +"View" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67049 -msgid "Distance to acheave max speed:" -msgstr "Distanza per raggiungere la massima velocita':" +#: src/emc/usr_intf/gscreen/gscreen.glade:3265 +#, fuzzy +msgid "" +"Next\n" +" Tab" +msgstr "Valore Seguente" -#: src/emc/usr_intf/pncconf/pncconf.glade:67077 -msgid "Resolution:" -msgstr "Risoluzione:" +#: src/emc/usr_intf/gscreen/gscreen.glade:3285 +#, fuzzy +msgid "" +" Feed\n" +"Override" +msgstr "Incr. avanzamento" -#: src/emc/usr_intf/pncconf/pncconf.glade:67105 -msgid "mm / encoder pulse" -msgstr "mm / impulso encoder" +#: src/emc/usr_intf/gscreen/gscreen.glade:3298 +#, fuzzy +msgid "" +"Spindle\n" +"Override" +msgstr "Superamento limite mandrino:" -#: src/emc/usr_intf/pncconf/pncconf.glade:67123 -msgid "Motion Data" -msgstr "Dati Movimento" +#: src/emc/usr_intf/gscreen/gscreen.glade:3311 +#, fuzzy +msgid "" +" Rapid\n" +"Override" +msgstr "Superamento limite mandrino" -#: src/emc/usr_intf/pncconf/pncconf.glade:67151 -msgid "gtk-cancel" -msgstr "Annulla gtk" +#: src/emc/usr_intf/gscreen/gscreen.glade:3332 +#, fuzzy +msgid "" +" Jog\n" +"Speed" +msgstr "Velocità jog:" -#: src/emc/task/emctaskmain.cc:467 src/emc/task/emctaskmain.cc:500 -#, c-format -msgid "%s exceeds +X limit" -msgstr "%s supera limite +X " +#: src/emc/usr_intf/gscreen/gscreen.glade:3345 +#, fuzzy +msgid "" +" Jog\n" +"Increments" +msgstr "Incrementi" -#: src/emc/task/emctaskmain.cc:472 src/emc/task/emctaskmain.cc:505 -#, c-format -msgid "%s exceeds +Y limit" -msgstr "%s supera limite +Y" +#: src/emc/usr_intf/gscreen/gscreen.glade:3361 +msgid "" +"Adjust\n" +"Rotary" +msgstr "" -#: src/emc/task/emctaskmain.cc:477 src/emc/task/emctaskmain.cc:510 -#, c-format -msgid "%s exceeds +Z limit" -msgstr "%s supera limite +Z" +#: src/emc/usr_intf/gscreen/gscreen.glade:3383 +msgid "" +"Change\n" +" View" +msgstr "" -#: src/emc/task/emctaskmain.cc:482 src/emc/task/emctaskmain.cc:515 -#, c-format -msgid "%s exceeds -X limit" -msgstr "%s supera limite -X " +#: src/emc/usr_intf/gscreen/gscreen.glade:3431 +#, fuzzy +msgid "" +" Pan\n" +"Vertical" +msgstr "Verticale" -#: src/emc/task/emctaskmain.cc:487 src/emc/task/emctaskmain.cc:520 -#, c-format -msgid "%s exceeds -Y limit" -msgstr "%s supera limite -Y" +#: src/emc/usr_intf/gscreen/gscreen.glade:3444 +#, fuzzy +msgid "" +" Pan\n" +"Horizontal" +msgstr "Orizzontale" -#: src/emc/task/emctaskmain.cc:492 src/emc/task/emctaskmain.cc:525 -#, c-format -msgid "%s exceeds -Z limit" -msgstr "%s supera limite -Z" +#: src/emc/usr_intf/gscreen/gscreen.glade:3457 +#, fuzzy +msgid "" +" Rotate\n" +"Horiontal" +msgstr "Orizzontale" -#: src/emc/task/emctaskmain.cc:853 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:3470 +#, fuzzy msgid "" -"command (%s) cannot be executed until the machine is out of E-stop and " -"turned on" -msgstr "" -"Il comando (%s) non può essere eseguito finchè la macchina non è in E-Stop " -"ed accesa" +" Rotate\n" +"Vertical" +msgstr "Verticale" -#: src/emc/task/emctaskmain.cc:973 -#, c-format -msgid "can't do that (%s) in manual mode" -msgstr "Impossibile eseguire il comando (%s) in modalità manuale" +#: src/emc/usr_intf/gscreen/gscreen.glade:3491 +#, fuzzy +msgid "" +"Search\n" +" Bwd" +msgstr "Percorso ricerca" -#: src/emc/task/emctaskmain.cc:1072 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter idle" +#: src/emc/usr_intf/gscreen/gscreen.glade:3503 +#, fuzzy +msgid "" +"Search\n" +" Fwd" +msgstr "Percorso ricerca" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3561 +#, fuzzy +msgid "" +" Reload\n" +"Program" +msgstr "Ricarica programma" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3604 +msgid "" +" Clear\n" +"status" msgstr "" -"Impossibile eseguire il comando (%s) in modalità automatica con l'interprete " -"in stato di libero" -#: src/emc/task/emctaskmain.cc:1132 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter reading" +#: src/emc/usr_intf/gscreen/gscreen.glade:3634 +msgid "G54" msgstr "" -"Impossibile eseguire il comando (%s) in modalità automatica con l'interprete " -"in stato di lettura" -#: src/emc/task/emctaskmain.cc:1216 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter paused" +#: src/emc/usr_intf/gscreen/gscreen.glade:3650 +msgid "calc" msgstr "" -"Impossibile eseguire il comando (%s) in modalità automatica con l'interprete " -"in stato di pausa" -#: src/emc/task/emctaskmain.cc:1278 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter waiting" +#: src/emc/usr_intf/gscreen/gscreen.glade:3725 +msgid "test" msgstr "" -"Impossibile eseguire il comando (%s) in modalità automatica con l'interprete " -"in stato di attesa" -#: src/emc/task/emctaskmain.cc:1370 -#, c-format -msgid "can't do that (%s) in MDI mode" -msgstr "Impossibile eseguire il comando (%s) in modalità MDI" +#: src/emc/usr_intf/gscreen/gscreen.glade:3728 +msgid "test2" +msgstr "" -#: src/emc/task/emctaskmain.cc:2015 -msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" +#: src/emc/usr_intf/gscreen/gscreen.glade:3778 +msgid "Data Entry" msgstr "" -"Non è possibile cambiare modo mentre si è in AUTO e l'interprete non è " -"INATTIVO" -#: src/emc/task/emctaskmain.cc:2084 -msgid "Can't issue MDI command when not homed" -msgstr "Non è possibile usare comandi MDI quando la macchina non è azzerata" +#: src/emc/usr_intf/gscreen/gscreen.glade:3805 +#, fuzzy +msgid "Calculator Entry" +msgstr "Scala calcolata" -#: src/emc/task/emctaskmain.cc:2089 -msgid "Must be in MDI mode to issue MDI command" -msgstr "Bisogna essere in modalità MDI per eseguire comandi MDI" +#: src/emc/usr_intf/gscreen/gscreen.glade:3894 +#, fuzzy +msgid "Program Restart" +msgstr "Mostra Riavvio" -#: src/emc/task/emctaskmain.cc:2151 -msgid "Can't run a program when not homed" +#: src/emc/usr_intf/gscreen/gscreen.glade:3909 +msgid "" +"Highlighting the run-at-line with the\n" +"up / down buttons or entering the line\n" +"directly." msgstr "" -"Non è possibile far girare un programma se la macchina non è stata azzerata" - -#: src/emc/rs274ngc/interp_arc.cc:108 src/emc/rs274ngc/rs274ngc_return.hh:160 -msgid "Zero radius arc" -msgstr "Raggio arco nullo" -#: src/emc/rs274ngc/interp_arc.cc:112 src/emc/rs274ngc/interp_arc.cc:279 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:3923 msgid "" -"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " -"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " -"rel_err=%.4f%%" +"Line\n" +" Up" msgstr "" -"Il raggio alla fine dell'arco differisce dal raggio alla partenza: " -"partenza=(%c%.4f,%c%.4f) centro=(%c%.4f,%c%.4f) fine=(%c%.4f,%c%.4f) r1=%.4f " -"r2=%.4f err_abs=%.4g err_rel=%.4f%%" - -#: src/emc/rs274ngc/interp_check.cc:90 -msgid "G4 not allowed with G2 or G3 because they both use P" -msgstr "G4 non disponibile con G2 o G3 perchè entrambi usano P" - -#: src/emc/rs274ngc/interp_check.cc:93 -msgid "Line with G10 does not have L1, L10, L11, L2, or L20" -msgstr "La linea con G10 manca di L1, L10, L11, L2, o L20" - -#: src/emc/rs274ngc/interp_check.cc:94 -msgid "P value not an integer with G10" -msgstr "Valore P-non intero con G10" -#: src/emc/rs274ngc/interp_check.cc:95 -msgid "P value out of range (0-9) with G10 L2 or L20" -msgstr "Valore P fuori limite (0-9) con G10 L2 o L20" +#: src/emc/usr_intf/gscreen/gscreen.glade:3946 +msgid "" +" Line\n" +"Down" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:96 -msgid "P value out of range with G10 L1 or G10 L10" -msgstr "Valore P-fuori limite con G10 L2 o G10 L20" +#: src/emc/usr_intf/gscreen/gscreen.glade:4028 +#, fuzzy +msgid "S 1000" +msgstr "SO: 100%" -#: src/emc/rs274ngc/interp_check.cc:100 -msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." +#: src/emc/usr_intf/gscreen/gscreen.glade:4098 +msgid " FWD" msgstr "" -"Fra i codici G5.2 e G5.3, sono consentiti solo codici G5.2 addizionali." - -#: src/emc/rs274ngc/interp_check.cc:258 -msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" -msgstr "Parametro D senza funzioni G41, G41.1. G42, G42.1 o G96 che lo usino" -#: src/emc/rs274ngc/interp_check.cc:264 -msgid "E word with no G76, M66, M67 or M68 to use it" -msgstr "Parametro E senza funzioni G76, M66, M67 o M68 che lo usino" +#: src/emc/usr_intf/gscreen/gscreen.glade:4133 +msgid " REV" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:269 -msgid "H word with no G43 or G76 to use it" -msgstr "Parametro H senza funzioni G43 o G76 che lo usino" +#: src/emc/usr_intf/gscreen/gscreen2.glade:35 +msgid "screen 2" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:275 -msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" -msgstr "Parametro I senza funzioni G2, G3, G5, G5.1, G76 o G87 che lo usino" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:403 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:884 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:923 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:934 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:949 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1099 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1102 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1156 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1163 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1166 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2148 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2157 +msgid "**** GMOCCAPY INFO ****" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:281 -msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:404 +msgid "**** no valid probe config in INI File ****" msgstr "" -"Parametro J senza funzioni G2, G3, G5, G5.1, G10, G76 o G87 che lo usino" -#: src/emc/rs274ngc/interp_check.cc:287 -msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" -msgstr "Parametro K senza funzioni G2, G3, G33, G331.1, G76 o G87 che lo usino" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:405 +msgid "**** disabled tool measurement ****" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:297 -msgid "" -"L word with no G10, cutter compensation, canned cycle, digital/analog input, " -"or NURBS code" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:770 +msgid "**** GMOCCAPY ERROR : ****" msgstr "" -"Parametro L word senza G10, compensazione utensile , ciclo fisso, input " -"digitale/analogico, o codice NURBS" -#: src/emc/rs274ngc/interp_check.cc:309 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:772 +#, python-format msgid "" -"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " -"M53 M62 M63 M64 M65 M66 or user M code to use it" +"**** gmoccapy can only handle 4 axis, ****\n" +"**** but you have given %d through your INI file ****\n" msgstr "" -"Parametro P senza funzioni G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 o " -"M50 M51 M52 M53 M62 M63 M64 M65 M66 o codice M utente che lo usino" -#: src/emc/rs274ngc/interp_check.cc:314 -msgid "P value not an integer with M19 G2 or G3" -msgstr "Valore P non intero con M19, G2 o G3" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:774 +msgid "" +"**** gmoccapy will not start ****\n" +"\n" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:316 -msgid "P value must be 0,1,or 2 with M19" -msgstr "Il valore di P con M19 deve essere 0, 1 o 2" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:786 +#, fuzzy, python-format +msgid "Home axis %s" +msgstr "Azzera Asse _%s" -#: src/emc/rs274ngc/interp_check.cc:318 -msgid "P value should be 1 or greater with G2 or G3" -msgstr "Valore P deve essere 1 o maggiore con G2 o G3" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:885 +msgid "**** To many increments given in INI File for this screen ****" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:326 -msgid "" -"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " -"code that uses it" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:886 +msgid "**** Only the first 10 will be reachable through this screen ****" msgstr "" -"Parametro Q senza funzioni G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 o " -"codice M utente che lo usino" -#: src/emc/rs274ngc/interp_check.cc:336 -msgid "R value must be within 0..360 with M19" -msgstr "Il valore di R con M19 deve essere tra 0..360" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:924 +msgid "**** gmoccapy screen 2 found ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:138 -msgid "You must specify both X and Y coordinates for Control Points" -msgstr "Bisogna specificare nei Punti di Controllo sia X che Y" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:929 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1055 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1177 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1225 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1844 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2190 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2200 +msgid "**** GMOCCAPY ERROR ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:141 -msgid "Program the order P of NURBS in the first block of instruction" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:930 +msgid "**** screen 2 GLADE ERROR: ****" msgstr "" -"Nel primo blocco di istruzione occorre programmare l'ordine P della NURBS" -#: src/emc/rs274ngc/interp_convert.cc:144 -msgid "Must specify positive weight R for every Control Point" -msgstr "Bisogna specificare un peso R positivo per ogni Punto di Controllo" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:935 +msgid "**** No gmoccapy2.glade file present ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:147 -msgid "Cannot make a NURBS with 0 feedrate" -msgstr "Impossibile eseguire NURBS con avanzamento nullo" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:950 +msgid "**** Invalid embeded tab configuration ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:182 -msgid "Cannot use G5.3 without G5.2 first" -msgstr "Impossibile usare G5.3 senza G5.2 prima" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:951 +msgid "**** No tabs will be added! ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:183 -#, c-format -msgid "" -"You must specify a number of control points at least equal to the order P = " -"%d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:964 +msgid "ERROR, trying to initialize the user tabs or panaels, check for typos" msgstr "" -"Bisogna specificare un numero di punti di controllo almeno uguale all'ordine " -"P = %d" -#: src/emc/rs274ngc/interp_convert.cc:212 -msgid "Cannot convert spline with cutter radius compensation" -msgstr "Impossibile convertire spline con compensazione raggio utensile" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1056 +msgid "**** Did not find a toolfile file in [EMCIO] TOOL_TABLE ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:222 -msgid "Splines must be in the XY plane" -msgstr "Le spline devono essere sul piano XY" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1100 +msgid "**** audio available! ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:227 -msgid "Splines may not have motion in Z, A, B, or C" -msgstr "Le spline non possono avere movimenti in Z, A, B, o C" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1103 +msgid "**** no audio available! ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:231 -msgid "Must specify both I and J with G5.1" -msgstr "Bisogna specificare sia I e J con G5.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1104 +msgid "**** PYGST libray not installed? ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:250 -msgid "Must specify both I and J, or neither" -msgstr "Bisogna indicare sia I e J oppure nessuno dei due" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1157 +msgid "**** virtual keyboard program found : " +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:261 -msgid "Must specify both P and Q with G5" -msgstr "Bisogna specificare sia P e Q con G5" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1164 +msgid "**** virtual keyboard program found : " +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:362 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1167 msgid "" -"The move just after exiting cutter compensation mode must be straight, not " -"an arc" +"**** No virtual keyboard installed, we checked for and ." msgstr "" -"Il movimento subito dopo l'uscita dal modo compensazione utensile deve essre " -"diritto, non un arco" - -#: src/emc/rs274ngc/interp_convert.cc:370 -msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" -msgstr "Impossibile fare un arco nei piani G17.1, G18.1, o G19.1" -#: src/emc/rs274ngc/interp_convert.cc:382 -#: src/emc/rs274ngc/interp_convert.cc:4266 -msgid "Cannot feed with zero spindle speed in feed per rev mode" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1178 +msgid "**** Error with launching virtual keyboard," msgstr "" -"Movimento impossibile con velocità zero del mandrino in modalità avanzamento " -"per giro" -#: src/emc/rs274ngc/interp_convert.cc:393 -#: src/emc/rs274ngc/interp_convert.cc:399 -#: src/emc/rs274ngc/interp_convert.cc:408 -#: src/emc/rs274ngc/interp_convert.cc:414 -#: src/emc/rs274ngc/interp_convert.cc:423 -#: src/emc/rs274ngc/interp_convert.cc:429 -#, c-format -msgid "%c word missing in absolute center arc" -msgstr "Parametro %c mancante in centro arco assoluto" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1179 +msgid "**** is onboard or matchbox-keyboard installed? ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:649 -msgid "" -"Radius of cutter compensation entry arc is not greater than the tool radius" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1193 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1875 +msgid "interrupt running macro" msgstr "" -"Il raggio del arco di ingresso della compensazione raggio utensile non è " -"maggiore del raggio utensile" -#: src/emc/rs274ngc/interp_convert.cc:868 -#: src/emc/rs274ngc/interp_convert.cc:878 src/emc/rs274ngc/interp_queue.cc:592 -msgid "" -"Arc move in concave corner cannot be reached by the tool without gouging" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1226 +msgid "**** Did not find a parameter file in [RS274NGC] PARAMETER_FILE ****" msgstr "" -"Movimento arco in un angolo concavo non può essre raggiungo dall'utensile " -"senza urto" -#: src/emc/rs274ngc/interp_convert.cc:904 -msgid "Arc to arc motion is invalid because the arcs have the same center" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1294 +msgid "Select the file you want to be loaded at program start" msgstr "" -"Il movimento da arco ad arco non è valido perchè gli archi hanno lo stesso " -"centro" -#: src/emc/rs274ngc/interp_convert.cc:907 -msgid "" -"Arc to arc motion makes a corner the compensated tool can't fit in without " -"gouging" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1329 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1353 +#, python-format +msgid "**** GMOCCAPY ERROR **** /n Message type %s not suported" msgstr "" -"Il movimento da arco ad arco genera un angolo concavo che l'utensile " -"compensato non può essere effettuato senza urto" -#: src/emc/rs274ngc/interp_convert.cc:1036 -#: src/emc/rs274ngc/interp_convert.cc:1037 -#: src/emc/rs274ngc/interp_convert.cc:1038 -#: src/emc/rs274ngc/interp_convert.cc:3733 -#: src/emc/rs274ngc/interp_convert.cc:3736 -#: src/emc/rs274ngc/interp_convert.cc:3739 src/emc/rs274ngc/interp_find.cc:97 -#, c-format -msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" -msgstr "Posizione assoluta %5.2f invalida per asse rotante %c" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1462 +msgid "Unknown error type and no error text given" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1494 -msgid "Cannot change control mode with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1478 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1840 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1847 +msgid "Important Warning" msgstr "" -"Impossibile cambiare modalità controllo con compensazione raggio utensile " -"attiva" -#: src/emc/rs274ngc/interp_convert.cc:1607 -msgid "Cannot change coordinate systems with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1498 +msgid "ERROR : External ESTOP is set, could not change state!" msgstr "" -"Impossibile cambiare sistema coordinate con compensazione raggio utensile " -"attiva" -#: src/emc/rs274ngc/interp_convert.cc:1851 -#, c-format -msgid "G%d.1 with no D word" -msgstr "G%d.1 senza parametro D" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1511 +msgid "ERROR : Could not switch the machine on, is limit switch aktivated?" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1854 -#, c-format -msgid "G%d.1 with L word, but plane is not G18" -msgstr "G%d.1 con parametro L, ma il piano non è G18" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1730 +msgid "It is not possible to change to MDI Mode at the moment" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1865 -#, c-format -msgid "G%d requires D word to be a whole number" -msgstr "G%d richiede che il parametro D sia un numero intero" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1754 +msgid "It is not possible to change to Auto Mode at the moment" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1872 -#, c-format -msgid "G%d with lathe tool, but plane is not G18" -msgstr "G%d con utensile da tornio, ma il piano non è G18" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1838 +msgid "" +"\n" +"**** No subroutine folder or program prefix is given in the ini file **** \n" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2271 -msgid "Cannot set reference point with cutter compensation in effect" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1839 +msgid "**** so the corresponding file could not be found ****" msgstr "" -"impossibile impostare punto riferimento con compensazione raggio utensile " -"attiva" -#: src/emc/rs274ngc/interp_convert.cc:2786 -#, c-format +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1845 +#, python-format msgid "" -"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" +"\n" +"**** File %s of the macro could not be found ****\n" msgstr "" -"BUG: impossibile restore da u basso call level (%d) ad un alto call level " -"(%d)" -#: src/emc/rs274ngc/interp_convert.cc:2787 -#, c-format -msgid "BUG: restore from level %d !?" -msgstr "BUG: restore dal livello %d !?" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1846 +#, fuzzy, python-format +msgid "**** we searched in subdirectory %s ****" +msgstr "# **** Imposta velocità mandrino come indicatore ****" -#: src/emc/rs274ngc/interp_convert.cc:2788 -#, c-format -msgid "BUG: restore to level %d !?" -msgstr "BUG: restore al livello %d !?" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1851 +msgid "Enter value:" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2807 -#, c-format -msgid "M7x: restore_settings G20/G21 failed: '%s'" -msgstr "M7x: restore_settings G20/G21 errato: '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1852 +#, fuzzy, python-format +msgid "Set parameter %s to:" +msgstr "Nessun parametro fornito" -#: src/emc/rs274ngc/interp_convert.cc:2819 -#, c-format -msgid "M7x: restore_settings failed executing: '%s': %s" -msgstr "M7x: restore_settings errato eseguendo '%s': %s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1854 +msgid "conversion error" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2885 -msgid "Cannot set motion output with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1855 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3610 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3634 +msgid "Conversion error !" msgstr "" -"Operazione di movimento impossibile con compensazione raggio utensile attiva" -#: src/emc/rs274ngc/interp_convert.cc:2886 -msgid "No valid P word with M62" -msgstr "Nessun parametro P con M62" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1856 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3299 +msgid "" +"Please enter only numerical values\n" +"Values have not been applied" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2890 -msgid "Cannot set motion digital output with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2149 +#, python-brace-format +msgid "**** replaced {0} to {1} ****" msgstr "" -"Operazione di movimento digitale impossibile con compensazione raggio " -"utensile attiva" -#: src/emc/rs274ngc/interp_convert.cc:2891 -msgid "No valid P word with M63" -msgstr "Nessun parametro P valido con M63" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2158 +msgid "" +"\n" +"**** found more than 9 macros, only the first 9 will be used ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2895 -#: src/emc/rs274ngc/interp_convert.cc:2900 -msgid "Cannot set auxiliary digital output with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2191 +#, python-format +msgid "**** %s ****" msgstr "" -"Impossibile definire output digitali ausiliari con compensazione raggio " -"utensile attiva" -#: src/emc/rs274ngc/interp_convert.cc:2896 -msgid "No valid P word with M64" -msgstr "Nessun parametro P valido con M64" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2201 +#, python-format +msgid "**** No widget named: %s to sensitize ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2901 -msgid "No valid P word with M65" -msgstr "Nessun parametro P valido con M65" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2366 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1561 +#, fuzzy +msgid "No tool description available" +msgstr "Nessun dettaglio disponibile." -#: src/emc/rs274ngc/interp_convert.cc:2931 -msgid "invalid P-word with M66" -msgstr "Parametro P errato con M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2591 +#, python-format +msgid "Halo, welcome to the test message %d" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2946 -msgid "Cannot wait for digital input with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2732 +msgid "Hal Pin is low, Access denied" msgstr "" -"Attesa input digitale impossibile con compensazione raggio utensile attiva" -#: src/emc/rs274ngc/interp_convert.cc:2958 -msgid "Cannot wait for analog input with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2734 +msgid "wrong code entered, Access denied" msgstr "" -"Attesa input analogico impossibile con compensazione raggio utensile attiva" -#: src/emc/rs274ngc/interp_convert.cc:2973 -msgid "Cannot set motion analog output with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2735 +msgid "Just to warn you" msgstr "" -"Operazione di movimento analogico impossibile con compensazione raggio " -"utensile attiva" -#: src/emc/rs274ngc/interp_convert.cc:2974 -msgid "Invalid analog index with M67" -msgstr "Indice analogico non valido con M67" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2810 +msgid "ERROR : No limit switch is active, ignore limits will not be set." +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2850 +#, fuzzy +msgid "Classicladder real-time component not detected" +msgstr "Componente realtime non caricato" -#: src/emc/rs274ngc/interp_convert.cc:2980 -msgid "Cannot set auxiliary analog output with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2937 +msgid "Something went wrong, we have an unknown spindle widget" msgstr "" -"Impossibile definire output analogici ausiliari con compensazione raggio " -"utensile attiva" -#: src/emc/rs274ngc/interp_convert.cc:2981 -msgid "Invalid analog index with M68" -msgstr "Indice analogico non valido con M68" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3046 +msgid "Do you really want to delete the MDI history?\n" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3012 -msgid "Need non-negative Q-word to specify tool number with M61" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3047 +msgid "this will not delete the MDI History file, but will\n" msgstr "" -"E' necessario un parametro Q non-negativo per specificare il numero " -"utensile con M61" -#: src/emc/rs274ngc/interp_convert.cc:3087 -msgid "Q word with M19 requires a value > 0" -msgstr "Word Q con M19 richiede un valore > 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3048 +msgid "delete the listbox entries for this session" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3115 -msgid "Cannot restore context from invalid stack frame - missing M70/M73?" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3049 +msgid "Attention!!" msgstr "" -"Impossibile riprendere contesto da stack frame invalido - M70/M73 mancante?" -#: src/emc/rs274ngc/interp_convert.cc:3156 -#: src/emc/rs274ngc/interp_convert.cc:3173 -#: src/emc/rs274ngc/interp_convert.cc:3188 -#: src/emc/rs274ngc/interp_convert.cc:3202 -#: src/emc/rs274ngc/interp_convert.cc:3216 -msgid "Cannot enable overrides with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3076 +msgid "This button will show or hide the keyboard" msgstr "" -"Impossibile abilitare superamento con compensazione raggio utensile attiva" -#: src/emc/rs274ngc/interp_convert.cc:3163 -#: src/emc/rs274ngc/interp_convert.cc:3178 -#: src/emc/rs274ngc/interp_convert.cc:3193 -#: src/emc/rs274ngc/interp_convert.cc:3207 -#: src/emc/rs274ngc/interp_convert.cc:3221 -msgid "Cannot disable overrides with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3196 +#, python-format +msgid "Offset %s could not be set, because off unknown axis" msgstr "" -"Impossibile disabilitare superamento con compensazione raggio utensile attiva" -#: src/emc/rs274ngc/interp_convert.cc:3325 -#: src/emc/rs274ngc/interp_convert.cc:3326 -#: src/emc/rs274ngc/interp_convert.cc:3327 -#, c-format -msgid "Indexing axis %c can only be moved with G0" -msgstr "Asse Indexato %c può muoversi solo con G0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3197 +msgid "Wrong offset setting!" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3334 -#: src/emc/rs274ngc/interp_convert.cc:3336 -#: src/emc/rs274ngc/interp_convert.cc:3338 -#, c-format -msgid "Indexing axis %c can only be moved alone" -msgstr "Asse Indexato %c può muoversi solo singolarmente" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3202 +#, fuzzy +msgid "Enter value for diameter" +msgstr "Uso di valore non intero per numero intero" -#: src/emc/rs274ngc/interp_convert.cc:3433 -msgid "Cannot probe with feed per rev mode" -msgstr "Operazione di misura impossibile in modalità avanzamento per giro" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3203 +#, fuzzy +msgid "Set diameter to:" +msgstr " diametro" -#: src/emc/rs274ngc/interp_convert.cc:3481 -msgid "Cannot change retract mode with cutter radius compensation on" -msgstr "" -"Impossibile cambiare modo retract con compensazione raggio utensile attiva" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3206 +#, fuzzy +msgid "Enter value for radius" +msgstr "Uso di valore non intero per numero intero" -#: src/emc/rs274ngc/interp_convert.cc:3515 -msgid "G10 L1 without offsets has no effect" -msgstr "G10 L1 senza offsets non ha effetto" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3207 +#, fuzzy +msgid "Set radius to:" +msgstr " raggio" -#: src/emc/rs274ngc/interp_convert.cc:3621 -msgid "Q number in G10 is not an integer" -msgstr "Il numero Q in G10 non è intero" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3210 +#, fuzzy, python-format +msgid "Enter value for axis %s" +msgstr "Uso di valore non intero per numero intero" -#: src/emc/rs274ngc/interp_convert.cc:3622 -msgid "Invalid tool orientation" -msgstr "Orientazione utensile errata" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3211 +#, fuzzy, python-format +msgid "Set axis %s to:" +msgstr "Imposta valore asse:" -#: src/emc/rs274ngc/interp_convert.cc:3721 -msgid "I J words not allowed with G10 L2" -msgstr "Parametri I J non consentiti con G10 L2" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3215 +msgid "Conversion error in btn_set_value" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3216 +msgid "Conversion error in btn_set_value!" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3217 +msgid "Please enter only numerical values. Values have not been applied" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3742 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3232 msgid "" -"Cannot change the active coordinate system with cutter radius compensation on" +"you did not selected a system to be changed to, so nothing will be changed" msgstr "" -"Impossibile cambiare sistema coordinate con compensazione raggio utensile " -"attiva " -#: src/emc/rs274ngc/interp_convert.cc:3750 -msgid "R not allowed in G10 L20" -msgstr "R non consentito in G10 L20" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3640 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3654 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3658 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3673 +msgid "Important Warning!" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4323 -msgid "Spindle not turning in G33" -msgstr "Il mandrino non gira in G33" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3284 +msgid "Enter the block height" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4333 -msgid "Spindle not turning in G33.1" -msgstr "Il mandrino non gira in G33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3285 +msgid "Block height measured from base table" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4376 -msgid "BUG: An axis incorrectly moved along with an indexer" -msgstr "BUG: Un movimento asse non corretto con un indexer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3297 +msgid "Conversion error in btn_block_height" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4389 -msgid "BUG: trying to index incorrect axis" -msgstr "BUG: tentativo di indicare asse non corretto" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3298 +msgid "Conversion error in btn_block_height!" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4481 -msgid "Cannot use G76 threading cycle with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3536 +msgid "Please remove the mounted tool and press OK when done" msgstr "" -"Impossibile usare il ciclo di filettatura G76 con compensazione raggio " -"utensile attiva" -#: src/emc/rs274ngc/interp_convert.cc:4484 -msgid "In G76, I must not be 0" -msgstr "in G76, I non può essere 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3539 +#, python-brace-format +msgid "" +"Please change to tool\n" +"\n" +"# {0:d} {1}\n" +"\n" +" then click OK." +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4486 -msgid "In G76, J must be greater than 0" -msgstr "in G76, J deve essere maggiore di 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3549 +msgid "Tool Change has been aborted!\n" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3550 +msgid "The old tool will remain set!" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3570 +msgid "No or more than one tool selected in tool table" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3571 +msgid "Please select only one tool in the table" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4488 -msgid "In G76, K must be greater than J" -msgstr "in G76, K deve essere maggiore di J" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3573 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3580 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3589 +msgid "Warning Tool Touch off not possible!" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4631 -msgid "" -"Length of cutter compensation entry move is not greater than the tool radius" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3577 +msgid "you can not touch of a tool, witch is not mounted in the spindle" msgstr "" -"La lunghezza del movimento di ingresso con compensazione raggio utensile non " -"è maggiore del raggio utensile" -#: src/emc/rs274ngc/interp_convert.cc:4850 -msgid "Zero degree inside corner is invalid for cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3578 +msgid "your selection has been reseted to the tool in spindle" msgstr "" -"Angolo interno di 0 gradi non è consentito con la compensazione utensile " -"attiva" -#: src/emc/rs274ngc/interp_convert.cc:4888 -#: src/emc/rs274ngc/interp_convert.cc:4896 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3586 +#, fuzzy msgid "" -"Arc to straight motion makes a corner the compensated tool can't fit in " -"without gouging" +"Tool touch off is not possible with cutter radius compensation switched on!\n" msgstr "" -"Il movimento da arco a linea genera un angolo che l'utensile compensato non " -"può eseguire senza urto" +"Impossibile cambiare offset utensile con compensazione raggio utensile attiva" -#: src/emc/rs274ngc/interp_convert.cc:4980 -msgid "Cannot change tools with cutter radius compensation on" -msgstr "Impossibile cambiare utensile con compensazione raggio utensile attiva" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3587 +msgid "Please emit an G40 before tool touch off" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:5101 -msgid "Cannot change tool offset with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3597 +msgid "Real big error!" msgstr "" -"Impossibile cambiare offset utensile con compensazione raggio utensile attiva" -#: src/emc/rs274ngc/interp_queue.cc:590 -#, c-format +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3598 msgid "" -"BUG: cutter compensation has generated an invalid arc with mismatched radii " -"r1 %f r2 %f\n" +"You managed to come to a place that is not possible in on_btn_tool_touchoff" msgstr "" -"ERRORE: la compensazione utensile ha generato un arco invalido con raggio " -"sbagliato r1 %f r2 %f\n" -#: src/emc/rs274ngc/interp_queue.cc:612 -msgid "BUG: Unsupported plane in cutter compensation" -msgstr "ERRORE: Piano non supportato in compensazione utensile" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3602 +#, fuzzy, python-format +msgid "Enter value for axis %s to set:" +msgstr "Uso di valore non intero per numero intero" -#: src/emc/rs274ngc/interp_queue.cc:622 -msgid "" -"Straight traverse in concave corner cannot be reached by the tool without " -"gouging" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3603 +#, python-brace-format +msgid "Set parameter of tool {0:d} and axis {1} to:" msgstr "" -"Il movimento lineare in un angolo concavo non può essere raggiunto " -"dall'utensile senza urto" -#: src/emc/rs274ngc/interp_queue.cc:650 -#, c-format -msgid "BUG: Unsupported plane [%d] in cutter compensation" -msgstr "ERRORE: Piano [%d] non supportatto in compensazione utensile" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3608 +#, python-format +msgid "Conversion error because of wrong entry for touch off axis %s" +msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:661 -msgid "" -"Straight feed in concave corner cannot be reached by the tool without gouging" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3628 +#, fuzzy +msgid "Enter the tool number as integer " +msgstr "Ricarica numero utensile dopo chiusura" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3629 +#, fuzzy +msgid "Select the tool to change" +msgstr "Selezione Elemento da Esaminare" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3631 +msgid "Conversion error because of wrong entry for tool number\n" msgstr "" -"Il movimento lineare in un angolo concavo non può essere raggiunto " -"dall'utensile senza urto" -#: src/emc/rs274ngc/interp_cycles.cc:628 -msgid "Cannot feed with zero feed rate" -msgstr "Impossibile eseguire avanzamento con avanzamento nullo" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3632 +msgid "enter only integer nummbers" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:629 -msgid "Cannot use inverse time feed with canned cycles" -msgstr "Impossibile usare questo tipo di avanzamento con cicli fissi" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3657 +msgid "Selected tool is already in spindle, no change needed." +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:630 -msgid "Cannot use canned cycles with cutter compensation on" -msgstr "Impossibile usare cicli fissi con compensazione raggio utensile attiva" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3653 +msgid "" +"you selected no or more than one tool, the tool selection must be unique" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:818 -msgid "G17 canned cycle is not possible on a machine without Z axis" -msgstr "Il ciclo fisso G17 non è possibile su una macchina senza asse Z" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3672 +msgid "Could not understand the entered tool number. Will not change anything" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1004 -msgid "G17.1 canned cycle is not possible on a machine without W axis" -msgstr "Il ciclo fisso G17.1 non è possibile su una macchina senza asse W" +#: src/emc/usr_intf/gmoccapy/dialogs.py:33 +#: src/emc/usr_intf/gmoccapy/dialogs.py:38 +msgid "Enter System Unlock Code" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1220 -msgid "G19 canned cycle is not possible on a machine without X axis" -msgstr "Il ciclo fisso G19 non è possibile su una macchina senza asse X" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter value" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1388 -msgid "G19.1 canned cycle is not possible on a machine without U axis" -msgstr "Il ciclo fisso G19.1 non è possibile su una macchina senza asse U" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter the value to set" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1613 -msgid "G18 canned cycle is not possible on a machine without Y axis" -msgstr "Il ciclo fisso G18 non è possibile su una macchina senza asse Y" +#: src/emc/usr_intf/gmoccapy/notification.py:205 +#, python-format +msgid "Error trying to delet the message with number %s" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1780 -msgid "G18.1 canned cycle is not possible on a machine without V axis" -msgstr "Il ciclo fisso G18.1 non è possibile su una macchina senza asse V" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:409 +msgid "left rotate, middle move, right zoom" +msgstr "" -#: src/emc/rs274ngc/interp_find.cc:170 -msgid "Cannot use polar coordinates with G53" -msgstr "Impossibile usare coordinate polari con G53" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:413 +msgid "left zoom, middle move, right rotate" +msgstr "" -#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 -#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 -#: src/emc/rs274ngc/interp_find.cc:347 -msgid "Cannot specify X or Y words with polar coordinate" -msgstr "Impossibile specificare parametri X e Y con coordinate polari" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:417 +msgid "left move, middle rotate, right zoom" +msgstr "" -#: src/emc/rs274ngc/interp_find.cc:272 -msgid "Must specify angle in polar coordinate if at the origin" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:421 +msgid "left zoom, middle rotate, right move" msgstr "" -"Bisogna specificare l'angolo in coordinate polari se riferite all'origine" -#: src/emc/rs274ngc/interp_find.cc:338 -msgid "" -"Incremental motion with polar coordinates is indeterminate when at the origin" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:425 +msgid "left move, middle zoom, right rotate" msgstr "" -"Movimento incrementale in coordinate polari è indeterminato nell'origine" -#: src/emc/rs274ngc/interp_find.cc:348 -msgid "G91 motion with polar coordinates is indeterminate when at the origin" -msgstr "Movimento G91 in coordinate polari è indeterminato nell'origine" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:429 +msgid "left rotate, middle zoom, right move" +msgstr "" -#: src/emc/rs274ngc/interp_find.cc:720 -#, c-format -msgid "Requested tool %d not found in the tool table" -msgstr "Utensile richiesto %d mancante nella tabella utensili" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:526 +#, fuzzy +msgid "clear plot" +msgstr "Cancella plot grafico" -#: src/emc/rs274ngc/interp_internal.cc:154 -msgid "Cannot use polar coordinate on a machine lacking X or Y axes" -msgstr "Impossibile usare coordinate polari su una macchina senza asse X o Y" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:585 +#, fuzzy +msgid "view perspective" +msgstr "Vista prospettica" -#: src/emc/rs274ngc/interp_internal.cc:155 -msgid "Cannot use polar coordinate except in G17 plane" -msgstr "Impossibile usare coordinate polari tranne che sul piano G17" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:608 +msgid "view along the X axis from positive to negative" +msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:156 -msgid "Cannot specify both polar coordinate and X word" -msgstr "Impossibile specificare sia coordinate polari che asse X" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:633 +msgid "view along the Y axis from positive to negative" +msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:157 -msgid "Cannot specify both polar coordinate and Y word" -msgstr "Impossibile specificare sia coordinate polari che asse Y" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:658 +msgid "view along the Z axis from positive to negative" +msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:178 -#: src/emc/rs274ngc/interp_internal.cc:190 -#: src/emc/rs274ngc/interp_internal.cc:203 -msgid "Polar coordinates can only be used for motion" -msgstr "Le coordinate polari possono essere usate solo per movimenti" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:685 +msgid "Show or hide tool path" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1143 src/emc/rs274ngc/interp_read.cc:1147 -#, c-format -msgid "Bad character '\\%03o' used" -msgstr "Uso di carattere '\\%03o' errato" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:708 +#, fuzzy +msgid "Show or hide dimensions" +msgstr "Mostra gestione tasti" -#: src/emc/rs274ngc/interp_read.cc:1147 -#, c-format -msgid "Bad character '%c' used" -msgstr "Uso di carattere '%c' errato" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:731 +msgid "" +"view along the Y axis from positive to negative as viewn for a back tool " +"lathe" +msgstr "" -# Anmerkung:FJ: Schrägstrich, atan? Klären? Division wie bei c-Funktion atan2(x,y) ??? -#: src/emc/rs274ngc/interp_read.cc:1671 -msgid "Left bracket missing after 'while'" -msgstr "Parentesi sinistra mancante dopo 'while'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:791 +#, fuzzy +msgid "Offset Page" +msgstr "Valore Offset:" -#: src/emc/rs274ngc/interp_read.cc:1686 -msgid "Left bracket missing after 'repeat'" -msgstr "Parentesi sinistra mancante dopo 'repeat'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:809 +#, fuzzy +msgid "Tooledit" +msgstr "Utensili" -# Anmerkung:FJ: Schrägstrich, atan? Klären? Division wie bei c-Funktion atan2(x,y) ??? -#: src/emc/rs274ngc/interp_read.cc:1701 -msgid "Left bracket missing after 'if'" -msgstr "Parentesi sinistra mancante dopo 'if'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:831 +#, fuzzy +msgid "File Selection" +msgstr "Seleziona asse" -# Anmerkung:FJ: Schrägstrich, atan? Klären? Division wie bei c-Funktion atan2(x,y) ??? -#: src/emc/rs274ngc/interp_read.cc:1716 -msgid "Left bracket missing after 'elseif'" -msgstr "Parentesi sinistra mancante dopo 'elseif'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:869 +#, fuzzy +msgid "Toggle between metric and imperial units" +msgstr "Scambia tra il modo Trascina e Ruota" -#: src/emc/rs274ngc/interp_read.cc:1919 -msgid "Cannot read current position with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:887 +msgid "Switch DRO to DTG mode" msgstr "" -"Operazione di lettura posizione corrente impossibile con compensazione " -"raggio utensile attiva " - -#: src/emc/rs274ngc/interp_read.cc:1934 -msgid "Expected # reading parameter" -msgstr "Attesi # parametri lettura" -#: src/emc/rs274ngc/interp_read.cc:1936 -msgid "Expected ] reading bracketed parameter" -msgstr "Atteso ] leggendo parametro parentesi" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:905 +#, fuzzy +msgid "Toggle between machine and relative coordinates" +msgstr "Scambia tra il modo Trascina e Ruota" -#: src/emc/rs274ngc/interp_read.cc:2608 -#, c-format -msgid "bad number format (conversion failed) parsing '%s'" -msgstr "formato numero errato (conversione fallita) analizzando '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:928 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:946 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:963 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:980 +msgid "Klick to toggle through the DRO modes" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2609 -#, c-format -msgid "bad number format (trailing characters) parsing '%s'" -msgstr "formato numero errato (caratteri errati) analizzando '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1253 +#, fuzzy +msgid "Ignore limits" +msgstr "superamento limiti" -#: src/emc/rs274ngc/interp_read.cc:2699 -msgid "Calculation resulted in 'not a number'" -msgstr "Il calcolo effettuato da 'not a number'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1321 +#, fuzzy +msgid "Jogging" +msgstr "Azzeramento" -#: src/emc/rs274ngc/interp_read.cc:2701 -msgid "Calculation resulted in 'infinity'" -msgstr "Il calcolo effettuato risulta 'infinito'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1430 +msgid "Information over the tool in spindle" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2994 -#, c-format -msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" -msgstr "Fine file:%s cercando o-word: o<%s> dalla linea: %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1448 +#, fuzzy +msgid "Tool no." +msgstr "Informazione Utensile" -#: src/emc/rs274ngc/interp_read.cc:3106 -msgid "Multiple U words on one line" -msgstr "Parametro U presente più volte su una linea" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1474 +#, fuzzy +msgid "Diameter" +msgstr "Diametro:" -#: src/emc/rs274ngc/interp_read.cc:3122 -msgid "Multiple V words on one line" -msgstr "Parametro V presente più volte su una linea" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1503 +#, fuzzy +msgid "offset z" +msgstr "Offsets" -#: src/emc/rs274ngc/interp_read.cc:3138 -msgid "Multiple W words on one line" -msgstr "Parametro W presente più volte su una linea" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1532 +#, fuzzy +msgid "offset x" +msgstr "Offsets" -#: src/emc/rs274ngc/interp_o_word.cc:95 -#, c-format -msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" -msgstr "File:%s La linea:%d ridefinisce sub: o|%s| già definita nel file:%s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1580 +#, fuzzy +msgid "Tool information" +msgstr "Configurazione " -#: src/emc/rs274ngc/interp_namedparams.cc:161 -#, c-format -msgid "Named parameter #<%s> not defined" -msgstr "Parametro nominato #<%s> non definito" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1592 +msgid "G and M code information as well as speed and feed" +msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:191 -#, c-format -msgid "cant open ini file '%s'" -msgstr "impossibile aprire file ini '%s' " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1611 +#, fuzzy +msgid "active_mcodes_label" +msgstr "Codici attivi:" -#: src/emc/rs274ngc/interp_namedparams.cc:208 -#, c-format -msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" -msgstr "Parametro ini nominato #<%s> non definito in inifile '%s': error=0x%x" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1663 +#, fuzzy +msgid "active_gcodes_label" +msgstr "Codici attivi:" -#: src/emc/rs274ngc/interp_namedparams.cc:232 -#, c-format -msgid "fetch_hal_param: hal_init(%s): %d" -msgstr "fetch_hal_param: hal_init(%s): %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1717 +#, fuzzy +msgid "G-Code" +msgstr "Accensione" -#: src/emc/rs274ngc/interp_namedparams.cc:233 -#, c-format -msgid "fetch_hal_param: hal_ready(): %d" -msgstr "fetch_hal_param: hal_ready(): %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1730 +msgid "The name and location of the loaded program" +msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:370 -#, c-format -msgid "Internal error: Could not assign #<%s>" -msgstr "Errore interno: non posso assegnare #<%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1742 +#, fuzzy +msgid "No Program loaded" +msgstr "File Programma" -#: src/emc/rs274ngc/interp_namedparams.cc:378 -#, c-format -msgid "Cannot assign to read-only parameter #<%s>" -msgstr "Impossibile assegnare parametro #<%s> read-only" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1750 +#, fuzzy +msgid "Program" +msgstr "Opzioni Programma" -#: src/emc/rs274ngc/interp_namedparams.cc:682 -#, c-format -msgid "BUG: lookup_named_param(%s): unhandled index=%fn" -msgstr "BUG: lookup_named_param(%s): non gestito indice=%fn" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1800 +msgid "Vel." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_pre.cc:1269 src/emc/rs274ngc/rs274ngc_pre.cc:1344 -msgid "Queue is not empty after tool change" -msgstr "Coda non vuota dopo un cambio utensile" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1814 +msgid "Displays the current velocity" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_pre.cc:1648 -#, c-format -msgid "Unable to open parameter file: '%s'" -msgstr "Impossibile aprire il file parametri : '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1838 +msgid "adjust max vel of machine" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:4 -msgid "A file is already open" -msgstr "Un file è già aperto" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1854 +#, fuzzy +msgid "Max. Velocity" +msgstr "Incr. avanzamento Max" -#: src/emc/rs274ngc/rs274ngc_return.hh:5 -msgid "All axes missing with g92" -msgstr "Nessuna coordinata per G92" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1885 +msgid "Displayes the programmed feed rate" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:6 -msgid "All axes missing with motion code" -msgstr "Tutti gli assi mancanti con un codice di movimento" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1904 +#, fuzzy +msgid "reset feed override to 100 %" +msgstr "Imposta Incr. Avanzamento da 0% al 100%" -#: src/emc/rs274ngc/rs274ngc_return.hh:7 -msgid "Arc radius too small to reach end point" -msgstr "Raggio arco troppo piccolo per raggiungere il punto finale" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1922 +#, fuzzy +msgid "adjust feed override" +msgstr "Imposta incr. avanzamento:" -#: src/emc/rs274ngc/rs274ngc_return.hh:8 -msgid "Argument to acos out of range" -msgstr "Argomento acos fuori limite" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1941 +#, fuzzy +msgid "Feed Override [%]" +msgstr "Imposta Incr. Avanzamento" -#: src/emc/rs274ngc/rs274ngc_return.hh:9 -msgid "Argument to asin out of range" -msgstr "Argomento asin fuori limite" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2034 +#, fuzzy +msgid "Cooling" +msgstr "Refrigerante" -#: src/emc/rs274ngc/rs274ngc_return.hh:10 -msgid "Attempt to divide by zero" -msgstr "Tentativo di divisione per zero" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2285 +#, fuzzy +msgid "Spindle [rpm]" +msgstr "Mandrino" -#: src/emc/rs274ngc/rs274ngc_return.hh:11 -msgid "Attempt to raise negative to non integer power" -msgstr "Tentativo di elevazione di numero negativo a potenza non intera" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2377 +#, fuzzy +msgid "" +"Search\n" +" back" +msgstr "Percorso ricerca" -#: src/emc/rs274ngc/rs274ngc_return.hh:12 -msgid "Bad format unsigned integer" -msgstr "Formato errato intero senza segno" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2394 +#, fuzzy +msgid "" +"Search\n" +" fwd" +msgstr "Percorso ricerca" -#: src/emc/rs274ngc/rs274ngc_return.hh:13 -msgid "Bad number format" -msgstr "Formato numero errato" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2446 +#, fuzzy +msgid "" +"Replace\n" +" Text:" +msgstr "Sostituisci con:" -#: src/emc/rs274ngc/rs274ngc_return.hh:14 -msgid "Bug bad g code modal group 0" -msgstr "Errore: Errato codice G in Gruppo modale 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2456 +#, fuzzy +msgid "" +"Replace\n" +" All" +msgstr "Sostituisci Tutto" -#: src/emc/rs274ngc/rs274ngc_return.hh:15 -msgid "Bug code not g0 or g1" -msgstr "Errore: Codice programma diverso da G0 o G1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2470 +#, fuzzy +msgid "" +"Ignore\n" +" Case" +msgstr "Ignora M1" -#: src/emc/rs274ngc/rs274ngc_return.hh:16 -msgid "Bug code not g17 g18 or g19" -msgstr "Errore: Codice programma diverso da G17, G18 o G19" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2616 +msgid "Start as fullscreen" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:17 -msgid "Bug code not g20 or g21" -msgstr "Errore: Codice programma diverso da G20 o G21" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2631 +#, fuzzy +msgid "Start maximized" +msgstr "Forza Massimizzazione" -#: src/emc/rs274ngc/rs274ngc_return.hh:18 -msgid "Bug code not g28 or g30" -msgstr "Errore: Codice programma diverso da G28 o G30" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2646 +msgid "Start as window" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:19 -msgid "Bug code not g2 or g3" -msgstr "Errore: Codice programma diverso da G2 o G3" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2670 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4426 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4943 +#, fuzzy +msgid "X Pos." +msgstr " Pos " -#: src/emc/rs274ngc/rs274ngc_return.hh:20 -msgid "Bug code not g4 g10 g28 g30 g53 or g92 series" -msgstr "Errore: Codice programma diverso da G4, G10, G28, G30, G53 o G92-" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2683 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4437 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4928 +#, fuzzy +msgid "Y Pos." +msgstr " Pos " -#: src/emc/rs274ngc/rs274ngc_return.hh:21 -msgid "Bug code not g61 g61.1 or g64" -msgstr "Errore: Codice programma diverso da G61, G61.1 o G64 " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2698 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4855 +msgid "Width" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:22 -msgid "Bug code not g90 or g91" -msgstr "Errore: Codice programma diverso da G90 o G91" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2713 +msgid "Height" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:23 -msgid "Bug code not g98 or g99" -msgstr "Errore: Codice programma diverso da G98 o G99" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2811 +msgid "hide cursor" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:24 -msgid "Bug code not in g92 series" -msgstr "Errore: Codice programma diverso dalla serie G92" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2830 +#, fuzzy +msgid "Main Window" +msgstr "Caratteristiche Macchina" -# Anmerkung:FJ: g593 ???? WM: wahrscheinlich g59.3 -#: src/emc/rs274ngc/rs274ngc_return.hh:25 -msgid "Bug code not in range g54 to g593" -msgstr "Errore: Codice programma non compreso tra G54 e G593" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2857 +#, fuzzy +msgid "Show keyboard on offset" +msgstr "Mostra limi_ti" -#: src/emc/rs274ngc/rs274ngc_return.hh:26 -msgid "Bug code not m0 m1 m2 m30 m60" -msgstr "Errore: Codice programma diverso da M0, M1, M2, M30 o M60" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2871 +msgid "Show keyboard on tooledit" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:27 -msgid "Bug distance mode not g90 or g91" -msgstr "Errore: Modalità movimento diversa da G90 o G91" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2885 +msgid "Show keyboard on MDI" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:28 -msgid "Bug function should not have been called" -msgstr "Errore:la funzione non è stata chiamata" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2899 +msgid "Show keyboard on EDIT" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:29 -msgid "Bug in tool radius comp" -msgstr "Errore nella compensazione raggio utensile" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2913 +msgid "Show keyboard on load file" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:30 -msgid "Bug plane not xy yz or xz" -msgstr "Errore: Piano diverso da xy, yz o zx" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2931 +#, fuzzy +msgid "Keyboard" +msgstr "Accensione" -#: src/emc/rs274ngc/rs274ngc_return.hh:31 -msgid "Bug side not right or left" -msgstr "Errore: lato diverso da destro o sinistro" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2959 +#, fuzzy +msgid "show preview" +msgstr "Visualizzare" -#: src/emc/rs274ngc/rs274ngc_return.hh:32 -msgid "Bug unknown motion code" -msgstr "Errore: Codice movimento sconosciuto" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2973 +#, fuzzy +msgid "show offsets" +msgstr "Mostra limi_ti" -#: src/emc/rs274ngc/rs274ngc_return.hh:33 -msgid "Bug unknown operation" -msgstr "Errore: Operazione sconosciuta" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2991 +msgid "On Touch off" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:34 -msgid "Cannot change axis offsets with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3005 +msgid "" +" Display \n" +"Aux Screen" msgstr "" -"Impossibile cambiare offset assi con compensazione raggio utensile attiva" -#: src/emc/rs274ngc/rs274ngc_return.hh:35 -msgid "Cannot create backup file" -msgstr "Impossibile creare file backup" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3052 +#, fuzzy +msgid "Relative Color" +msgstr "Textcolor Relativa" -#: src/emc/rs274ngc/rs274ngc_return.hh:36 -msgid "Cannot do g1 with zero feed rate" -msgstr "Impossibile eseguire G1 con avanzamento nullo" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3079 +#, fuzzy +msgid "Absolute Color" +msgstr "Colore Testo Assoluto" -#: src/emc/rs274ngc/rs274ngc_return.hh:37 -msgid "Cannot do zero repeats of cycle" -msgstr "Impossibile eseguire cicli da 0 passi" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3110 +#, fuzzy +msgid "DTG Color" +msgstr "DTG Textcolor" -#: src/emc/rs274ngc/rs274ngc_return.hh:38 -msgid "Cannot make arc with zero feed rate" -msgstr "Impossibile eseguire arco con avanzamento nullo" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3139 +msgid "Use Auto Units" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:39 -msgid "Cannot open backup file" -msgstr "Impossibile aprire file backup" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3159 +#, fuzzy +msgid "Show the DRO Button" +msgstr "Maiusc+Tasto sinistro" -#: src/emc/rs274ngc/rs274ngc_return.hh:40 -msgid "Cannot open variable file" -msgstr "Impossibile aprire file variabili" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3190 +#, fuzzy +msgid "Homed color" +msgstr "Azzera tutto" -#: src/emc/rs274ngc/rs274ngc_return.hh:41 -msgid "Cannot probe with cutter radius comp on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3204 +#, fuzzy +msgid "Unhomed color" +msgstr "Dis-Azzera tutto" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3299 +#, fuzzy +msgid "Digits" +msgstr "Digitale" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3344 +msgid "" +"toggle DRO mode \n" +"clicking on the DRO" msgstr "" -"Operazione di misura impossibile con compensazione raggio utensile attiva" -#: src/emc/rs274ngc/rs274ngc_return.hh:42 -msgid "Cannot probe with zero feed rate" -msgstr "Operazione di misura impossibile con avanzamento nullo" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3369 +#, fuzzy +msgid "DRO" +msgstr "a)" -#: src/emc/rs274ngc/rs274ngc_return.hh:43 -msgid "Cannot put a b in canned cycle" -msgstr "Impossibile inviare B in un ciclo fisso" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3401 +#, fuzzy +msgid "Grid size" +msgstr "dimensione" -#: src/emc/rs274ngc/rs274ngc_return.hh:44 -msgid "Cannot put a c in canned cycle" -msgstr "Impossibile inviare C in un ciclo fisso" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3430 +#, fuzzy +msgid "Show DRO" +msgstr "Mostra" -#: src/emc/rs274ngc/rs274ngc_return.hh:45 -msgid "Cannot put an a in canned cycle" -msgstr "Impossibile inviare A in un ciclo fisso" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3444 +#, fuzzy +msgid "Show offsets" +msgstr "Mostra limi_ti" -#: src/emc/rs274ngc/rs274ngc_return.hh:46 -msgid "Cannot turn cutter radius comp on when on" -msgstr "Compensazione raggio utensile già attivata" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3458 +#, fuzzy +msgid "Show DTG" +msgstr "Mostra" -#: src/emc/rs274ngc/rs274ngc_return.hh:47 -msgid "Cannot use axis values with g80" -msgstr "Impossibile usare valori assi con G80" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3483 +#, fuzzy +msgid "Mouse Button mode" +msgstr "Bottoni Movimento Esterno" -#: src/emc/rs274ngc/rs274ngc_return.hh:48 -msgid "Cannot use axis values without a g code that uses them" -msgstr "Impossibile usare valore assi senza un codice G che li utilizzi" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3512 +#, fuzzy +msgid "Preview" +msgstr "Pagina" -#: src/emc/rs274ngc/rs274ngc_return.hh:49 -msgid "Cannot use g28 or g30 with cutter radius comp" -msgstr "Impossibile usare G28 o G30 con compensazione raggio utensile attiva" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3565 +#, fuzzy +msgid "" +"current\n" +" file" +msgstr "sul subfile corrente" -#: src/emc/rs274ngc/rs274ngc_return.hh:50 -msgid "Cannot use g53 incremental" -msgstr "Impossibile usare G53 in incrementale" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3611 +msgid "File to load on start" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:51 -msgid "Cannot use g53 with cutter radius comp" -msgstr "Impossibile usare G53 con compensazione raggio utensile" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3638 +#, fuzzy +msgid "Select user dir" +msgstr "Imposta velocità jog:" -#: src/emc/rs274ngc/rs274ngc_return.hh:52 -msgid "Cannot use two g codes that both use axis values" -msgstr "Impossibile usare due codici G che usino entrambi i valori degli assi" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3647 +#, fuzzy +msgid "Select jump to dir" +msgstr "Selezione Elemento da Esaminare" -#: src/emc/rs274ngc/rs274ngc_return.hh:53 -msgid "Command too long" -msgstr "Comando troppo lungo" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3767 +#, fuzzy +msgid "Themes and sound" +msgstr "Standard e Opzioni" -#: src/emc/rs274ngc/rs274ngc_return.hh:54 -msgid "Current point same as end point of arc" -msgstr "Punto corrente uguale alla fine arco" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3799 +msgid "Appearance" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:55 -msgid "Dwell time missing with g4" -msgstr "Tempo sosta mancante in G4" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3833 +#, fuzzy +msgid "Scale max velocity" +msgstr "Velocita' lineare Max:" -#: src/emc/rs274ngc/rs274ngc_return.hh:56 -msgid "Dwell time p word missing with g82" -msgstr "Parametro P tempo sosta mancante in G82" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3846 +#, fuzzy +msgid "Scale jog velocity" +msgstr "Mostra v_elocità" -#: src/emc/rs274ngc/rs274ngc_return.hh:57 -msgid "Dwell time p word missing with g86" -msgstr "Parametro P tempo sosta mancante in G86" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3861 +#, fuzzy +msgid "Scale feed override" +msgstr "Imposta incr. avanzamento:" -#: src/emc/rs274ngc/rs274ngc_return.hh:58 -msgid "Dwell time p word missing with g88" -msgstr "Parametro P tempo sosta mancante in G88" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3876 +#, fuzzy +msgid "Scale spindle override" +msgstr "Imposta Incr. Mandrino" -#: src/emc/rs274ngc/rs274ngc_return.hh:59 -msgid "Dwell time p word missing with g89" -msgstr "Parametro P tempo sosta mancante in G89" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3970 +#, fuzzy +msgid "Hardware MPG Scale" +msgstr "Scala Motore Step " -#: src/emc/rs274ngc/rs274ngc_return.hh:60 -msgid "Equal sign missing in parameter setting" -msgstr "Segno uguale mancante nel settaggio parametri" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3994 +msgid "Use keyboard shortcuts" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:61 -msgid "F word missing with inverse time arc move" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4007 +msgid "Keyboard shortcuts" msgstr "" -"Parametro F mancante in un movimento circolare con tempo di avanzamento " -"controllato" -#: src/emc/rs274ngc/rs274ngc_return.hh:62 -msgid "F word missing with inverse time g1 move" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4034 +#, fuzzy +msgid "Use unlock code" +msgstr "Encoder Inutilizzato" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4050 +#, fuzzy +msgid "Do not use unlock code" +msgstr "Impossibile usare codice C" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4066 +msgid "Use hal pin to unlock" msgstr "" -"Parametro F mancante in un movimento G1 con tempo di avanzamento controllato" -#: src/emc/rs274ngc/rs274ngc_return.hh:63 -msgid "File ended with no percent sign" -msgstr "File mancante del segno percento finale" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4087 +#, fuzzy +msgid "Unlock settings" +msgstr "Impostazoni Utensile" -#: src/emc/rs274ngc/rs274ngc_return.hh:64 -msgid "File ended with no percent sign or program end" -msgstr "File mancante del segno percento finale o fine programma" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4197 +#, fuzzy +msgid "Spindle bar min" +msgstr "Freno mandrino on" -#: src/emc/rs274ngc/rs274ngc_return.hh:65 -msgid "File name too long" -msgstr "Nome file troppo lungo" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4210 +#, fuzzy +msgid "Spindle bar max" +msgstr "Freno Mandrino" -#: src/emc/rs274ngc/rs274ngc_return.hh:66 -msgid "G code out of range" -msgstr "Codice G fuori limite" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4252 +msgid "Hide turtle Jog Button" +msgstr "" -# Anmerkung:FJ: BTW: Was ist eigentlich mit Umlauten? Klärung! -#: src/emc/rs274ngc/rs274ngc_return.hh:67 -msgid "I word given for arc in yz plane" -msgstr "Parametro I per archi nel piano yz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4282 +msgid "Turtle jog Factor" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:68 -msgid "I word missing with g87" -msgstr "Parametro I mancante con G87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4318 +#, fuzzy +msgid "Turtle Jog" +msgstr "Frontend" -#: src/emc/rs274ngc/rs274ngc_return.hh:69 -msgid "J word given for arc in xz plane" -msgstr "Parametro J per archi nel piano xz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4360 +msgid "Hardware" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:70 -msgid "J word missing with g87" -msgstr "Parametro J mancante con G87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4392 +msgid "Use auto tool measurement" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:71 -msgid "K word given for arc in xy plane" -msgstr "Parametro K per archi nel piano xy" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4450 +#, fuzzy +msgid "Probe Height" +msgstr "Probe In" -#: src/emc/rs274ngc/rs274ngc_return.hh:72 -msgid "K word missing with g87" -msgstr "Parametro K mancante con G87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4485 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4498 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4527 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4556 +#, fuzzy +msgid "0.000" +msgstr ".0001" -# Anmerkung:FJ: Schrägstrich, atan? Klären? Division wie bei c-Funktion atan2(x,y) ??? -#: src/emc/rs274ngc/rs274ngc_return.hh:73 -msgid "Left bracket missing after slash with atan" -msgstr "Parentesi sinistra mancante dopo la barra con atan" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4514 +#, fuzzy +msgid "Z Pos." +msgstr " Pos " -#: src/emc/rs274ngc/rs274ngc_return.hh:74 -msgid "Left bracket missing after unary operation name" -msgstr "Parentesi sinistra mancante dopo il nome di una operazione unaria" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4543 +#, fuzzy +msgid "Max. Probe" +msgstr "Sonda" -#: src/emc/rs274ngc/rs274ngc_return.hh:75 -msgid "M code greater than 199" -msgstr "Codice M maggiore di 199" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4575 +#, fuzzy +msgid "Probe Informations" +msgstr "Opzioni Programma" -#: src/emc/rs274ngc/rs274ngc_return.hh:76 -msgid "Mixed radius ijk format for arc" -msgstr "Arco con formato raggio ijk misto" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4607 +#, fuzzy +msgid "Search Vel." +msgstr "Percorso ricerca" -#: src/emc/rs274ngc/rs274ngc_return.hh:77 -msgid "Multiple a words on one line" -msgstr "Parametro A presente più volte su una linea" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4618 +#, fuzzy +msgid "Probe Vel." +msgstr "Probe In" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4674 +#, fuzzy +msgid "Probe velocitys" +msgstr "Lista Gui Frontend" -#: src/emc/rs274ngc/rs274ngc_return.hh:78 -msgid "Multiple b words on one line" -msgstr "Parametro B presente più volte su una linea" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4688 +msgid "" +"No valid configuration\n" +"found in your INI file,\n" +"please take a look at \n" +"the WIKI to check how\n" +"to configure the settings." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:79 -msgid "Multiple c words on one line" -msgstr "Parametro C presente più volte su una linea" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4708 +#, fuzzy +msgid "Tool Measurement" +msgstr "Refrigerante" -#: src/emc/rs274ngc/rs274ngc_return.hh:80 -msgid "Multiple d words on one line" -msgstr "Parametro D presente più volte su una linea" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4737 +msgid "" +"If the 4'th axis is used\n" +"for a tool changer, you\n" +"hide the DRO and\n" +"jog buttons." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:81 -msgid "Multiple f words on one line" -msgstr "Parametro F presente più volte su una linea" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4749 +#, fuzzy +msgid "Hide 4'th axis" +msgstr "Prova questo ass_e" -#: src/emc/rs274ngc/rs274ngc_return.hh:82 -msgid "Multiple h words on one line" -msgstr "Parametro H presente più volte su una linea" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4769 +#, fuzzy +msgid "Tool Changer" +msgstr "Impostazoni Utensile" -#: src/emc/rs274ngc/rs274ngc_return.hh:83 -msgid "Multiple i words on one line" -msgstr "Parametro I presente più volte su una linea" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4808 +msgid "Use frames" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:84 -msgid "Multiple j words on one line" -msgstr "Parametro J presente più volte su una linea" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4840 +msgid "max." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:85 -msgid "Multiple k words on one line" -msgstr "Parametro K presente più volte su una linea" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4992 +#, fuzzy +msgid "Launch test message" +msgstr "Avvio pannello test" -#: src/emc/rs274ngc/rs274ngc_return.hh:86 -msgid "Multiple l words on one line" -msgstr "Parametro I presente più volte su una linea" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5011 +msgid "" +" gmoccapy message\n" +" behavior and appearance " +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:87 -msgid "Multiple p words on one line" -msgstr "Parametro P presente più volte su una linea" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5049 +msgid "Do not use run from line" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:88 -msgid "Multiple q words on one line" -msgstr "Parametro Q presente più volte su una linea" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5065 +#, fuzzy +msgid "Use run from line" +msgstr "Avvia dalla li_nea selezionata" -#: src/emc/rs274ngc/rs274ngc_return.hh:89 -msgid "Multiple r words on one line" -msgstr "Parametro R presente più volte su una linea" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5086 +#, fuzzy +msgid "Run from line" +msgstr "Azzeramento" -#: src/emc/rs274ngc/rs274ngc_return.hh:90 -msgid "Multiple s words on one line" -msgstr "Parametro S presente più volte su una linea" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5119 +#, fuzzy +msgid "" +"Advanced\n" +" Settings" +msgstr "Opzioni Avanzate" -#: src/emc/rs274ngc/rs274ngc_return.hh:91 -msgid "Multiple t words on one line" -msgstr "Parametro T presente più volte su una linea" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5157 +msgid "User tab 1" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:92 -msgid "Multiple x words on one line" -msgstr "Parametro X presente più volte su una linea" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5171 +msgid "User tabs" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:93 -msgid "Multiple y words on one line" -msgstr "Parametro Y presente più volte su una linea" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5207 +msgid "Estop the machine" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:94 -msgid "Multiple z words on one line" -msgstr "Parametro Z presente più volte su una linea" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5229 +#, fuzzy +msgid "Turn the machine on/off" +msgstr "Macchina on" -#: src/emc/rs274ngc/rs274ngc_return.hh:95 -msgid "Must use g0 or g1 with g53" -msgstr "Necessario usare G0 o G1 con G53" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5251 +msgid "enter manual mode to jog axis by hand or touch off" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:96 -msgid "Negative argument to sqrt" -msgstr "Argomento negativo per sqrt" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5271 +#, fuzzy +msgid "enter MDI mode to launch g-code commands" +msgstr "Bisogna essere in modalità MDI per eseguire comandi MDI" -#: src/emc/rs274ngc/rs274ngc_return.hh:97 -msgid "Negative d word tool radius index used" -msgstr "Uso del parametro D indice raggio utensile negativo" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5290 +#, fuzzy +msgid "enter auto mode to run programs" +msgstr "Programma modbus seriale" -#: src/emc/rs274ngc/rs274ngc_return.hh:98 -msgid "Negative f word used" -msgstr "Uso del parametro F negativo" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5308 +msgid "Enter the settings page, the default code is \"123\"" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:99 -msgid "Negative g code used" -msgstr "Uso codice G negativo" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5330 +#, fuzzy +msgid "show user tabs" +msgstr "Mostra Stato" -#: src/emc/rs274ngc/rs274ngc_return.hh:100 -msgid "Negative h word used" -msgstr "Uso codice H negativo" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5381 +msgid "open homing button list" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:101 -msgid "Negative l word used" -msgstr "Uso codice I negativo" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5398 +#, fuzzy +msgid "open touch off button list" +msgstr "Contatto utensile su _fissaggio" -#: src/emc/rs274ngc/rs274ngc_return.hh:102 -msgid "Negative m code used" -msgstr "Uso codice M negativo" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5427 +msgid "Open the tooleditor page" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:103 -msgid "Negative or zero q value used" -msgstr "Uso codice Q negativo o nullo" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5498 +msgid "make the preview as large as possible" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:104 -msgid "Negative p word used" -msgstr "Uso codice P negativo" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5515 +msgid "Close moccapy / leave the program" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:105 -msgid "Negative spindle speed used" -msgstr "Uso velocità mandrino negativa" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5577 +msgid "This button will show or hide the Keyboard" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:106 -msgid "Negative tool id used" -msgstr "Uso indice utensile negativo" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5620 +#, fuzzy +msgid "Load a new program" +msgstr "Ricarica programma" -#: src/emc/rs274ngc/rs274ngc_return.hh:107 -msgid "Nested comment found" -msgstr "Trovato commento nidificato" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5637 +#, fuzzy +msgid "Run the loaded program" +msgstr "Ricarica programma" -#: src/emc/rs274ngc/rs274ngc_return.hh:108 -msgid "No characters found in reading real value" -msgstr "Nessun carattere trovato nella lettura di un valore reale" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5654 +#, fuzzy +msgid "Stop the running program" +msgstr "Ferma programma in esecuzione, oppure" -#: src/emc/rs274ngc/rs274ngc_return.hh:109 -msgid "Non integer value for integer" -msgstr "Uso di valore non intero per numero intero" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5672 +#, fuzzy +msgid "Pause the running program" +msgstr "Ferma programma in esecuzione, oppure" -#: src/emc/rs274ngc/rs274ngc_return.hh:110 -msgid "Null missing after newline" -msgstr "Carattere nullo mancante dopo avanzamento linea" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5680 +#, fuzzy +msgid "pause the running program" +msgstr "Ferma programma in esecuzione, oppure" -#: src/emc/rs274ngc/rs274ngc_return.hh:111 -msgid "Parameter file out of order" -msgstr "Parametro numerico fuori ordine" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5698 +msgid "Run the loaded program step by step" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:112 -msgid "Parameter number out of range" -msgstr "Parametro numerico fuori ordine" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5715 +msgid "" +"run the program from a certain line, attention, that is dangerous, because " +"the previous lines will not checed!" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:113 -msgid "Parameter is readonly" -msgstr "Parametro è in sola lettura" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5732 +msgid "" +"Machine or not the optional blocks of the program. If the button is pressed, " +"the optional blocks will not be machined. The button will indicate this by a " +"yellow background." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:114 -msgid "Q word missing with g83" -msgstr "Parametro Q mancante con G83" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5757 +msgid "" +"Make optional stops or not. if an M1 is programed and the button is pressed " +"(is active) the programm will pause if it found a M1" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:115 -msgid "Queue is not empty after probing" -msgstr "Coda non vuota dopo una misura" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5789 +#, fuzzy +msgid "Edit the loaded program" +msgstr "" +"Modifica programma\n" +"ladder" -#: src/emc/rs274ngc/rs274ngc_return.hh:116 -msgid "R clearance plane unspecified in cycle" -msgstr "Piano di sicurezza R non specificato nel ciclo" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5837 +#, fuzzy +msgid "home all axis" +msgstr "Azzera tutti gli assi" -#: src/emc/rs274ngc/rs274ngc_return.hh:117 -msgid "R i j k words all missing for arc" -msgstr "Parametri R, I, J o K tutti mancanti in un arco" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5873 +#, fuzzy +msgid "home x axis" +msgstr "Azzera Asse" -#: src/emc/rs274ngc/rs274ngc_return.hh:118 -msgid "R less than x in cycle in yz plane" -msgstr "R minore di X in un ciclo nel piano YZ" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5897 +#, fuzzy +msgid "home y axis" +msgstr "Azzera Asse" -#: src/emc/rs274ngc/rs274ngc_return.hh:119 -msgid "R less than y in cycle in xz plane" -msgstr "R minore di Y in un ciclo nel piano XZ" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5929 +#, fuzzy +msgid "home z axis" +msgstr "Azzera Asse" -#: src/emc/rs274ngc/rs274ngc_return.hh:120 -msgid "R less than z in cycle in xy plane" -msgstr "R minore di Z in un ciclo nel piano XY" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5987 +#, fuzzy +msgid "Unhome all axis" +msgstr "Dis-Azzera tutti gli assi" -#: src/emc/rs274ngc/rs274ngc_return.hh:121 -msgid "R word with no g code that uses it" -msgstr "Parametro R senza alcun codice G che lo usi" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6023 +msgid "go back to main button list" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:122 -msgid "Slash missing after first atan argument" -msgstr "Barra mancante dopo il primo argomento di atan" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6053 +msgid "" +" edit\n" +"offsets" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:123 -msgid "Spindle not turning clockwise in g84" -msgstr "Il mandrino non gira in senso orario in G84" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6060 +#, fuzzy +msgid "Edit offsets" +msgstr "Mostra limi_ti" -#: src/emc/rs274ngc/rs274ngc_return.hh:124 -msgid "Spindle not turning in g86" -msgstr "Il mandrino non gira in G86" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6076 +msgid "touch off X / set X to 0" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:125 -msgid "Spindle not turning in g87" -msgstr "Il mandrino non gira in G87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6100 +msgid "touch off Y / set Y to 0" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:126 -msgid "Spindle not turning in g88" -msgstr "Il mandrino non gira in G88" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6135 +msgid "touch off Z / set Z to 0" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:127 -msgid "Sscanf failed" -msgstr "Errore nella funzione sscanf()" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6155 +msgid "" +"zero\n" +"G92" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:128 -msgid "Start point too close to probe point" -msgstr "Punto di partenza troppo vicino al punto di misura" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6161 +#, fuzzy +msgid "Zero all G92 offsets" +msgstr "Zero Tutti G59.2" -#: src/emc/rs274ngc/rs274ngc_return.hh:129 -msgid "Too many m codes on line" -msgstr "Troppi codici M su una linea" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6172 +msgid "" +" Block\n" +"Height" +msgstr "" -# Anmerkung:FJ: Tool max? Was das? -# Anmerkung:AJ: sollte "Index in tool table file too large" sein -#: src/emc/rs274ngc/rs274ngc_return.hh:130 -msgid "Pocket max too large" -msgstr "Tasca max troppo grande" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6192 +msgid "touch off X / set X to an desired value" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:131 -msgid "Tool radius not less than arc radius with comp" -msgstr "Raggio utensile non minore del raggio utensile con compensazione" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6216 +msgid "touch off Y / set Y to an desired value" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:132 -msgid "Two g codes used from same modal group" -msgstr "Due codici G usati nello stesso gruppo modale" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6251 +msgid "touch off Z / set Z to an desired value" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:133 -msgid "Two m codes used from same modal group" -msgstr "Due codici M usati nello stesso gruppo modale" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6270 +msgid "" +" set\n" +"selected" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:134 -#, c-format -msgid "Unable to open file <%s>" -msgstr "Impossibile aprire il file <%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6277 +#, fuzzy +msgid "set the selected coordinate system to be the active one" +msgstr "" +"Impossibile cambiare sistema coordinate con compensazione raggio utensile " +"attiva " -#: src/emc/rs274ngc/rs274ngc_return.hh:135 -msgid "Unclosed comment found" -msgstr "Trovato commento non terminato" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6293 +msgid "Go back to main view" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:136 -msgid "Unclosed expression" -msgstr "Espressione incompleta" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6324 +#, fuzzy +msgid "delete MDI" +msgstr "Cancella" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6330 +#, fuzzy +msgid "delete MDI history" +msgstr "Cancella storia MDI" -#: src/emc/rs274ngc/rs274ngc_return.hh:137 -msgid "Unknown g code used" -msgstr "Uso codice G sconosciuto" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6380 +msgid "Cl.-ladder" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:138 -msgid "Unknown m code used" -msgstr "Uso codice M sconosciuto" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6386 +#, fuzzy +msgid "Open classicladder" +msgstr "Includi _Classicladder PLC" -#: src/emc/rs274ngc/rs274ngc_return.hh:139 -msgid "Unknown operation" -msgstr "Operazione sconosciuta" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6397 +#, fuzzy +msgid "Hal-Scope" +msgstr "Hal Scope" -#: src/emc/rs274ngc/rs274ngc_return.hh:140 -msgid "Unknown operation name starting with a" -msgstr "Nome operazione che inizia con A sconosciuta" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6403 +#, fuzzy +msgid "launch hal scope" +msgstr "avvio %s" -#: src/emc/rs274ngc/rs274ngc_return.hh:141 -msgid "Unknown operation name starting with m" -msgstr "Nome operazione che inizia con M sconosciuta" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6420 +msgid "launch linuxcnc status" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:142 -msgid "Unknown operation name starting with o" -msgstr "Nome operazione che inizia con O sconosciuta" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6437 +msgid "launch hal meter" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:143 -msgid "Unknown operation name starting with x" -msgstr "Nome operazione che inizia con X sconosciuta" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6455 +#, fuzzy +msgid "launch calibration" +msgstr "_Calibrazione" -#: src/emc/rs274ngc/rs274ngc_return.hh:144 -msgid "Unknown word starting with a" -msgstr "Nome parametro che inizia con A sconosciuto" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6466 +msgid "Halshow" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:145 -msgid "Unknown word starting with c" -msgstr "Nome parametro che inizia con C sconosciuto" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6472 +msgid "opens the show hal tool" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:146 -msgid "Unknown word starting with e" -msgstr "Nome parametro che inizia con E sconosciuto" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6537 +msgid "save the file using the original name" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:147 -msgid "Unknown word starting with f" -msgstr "Nome parametro che inizia con F sconosciuto" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6559 +msgid "save the file with a new name" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:148 -msgid "Unknown word starting with l" -msgstr "Nome parametro che inizia con L sconosciuto" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6605 +msgid "clear the edit field and make a new file" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:149 -msgid "Unknown word starting with r" -msgstr "Nome parametro che inizia con R sconosciuto" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6641 +msgid "Show or hide the virtual keyboard" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:150 -msgid "Unknown word starting with s" -msgstr "Nome parametro che inizia con S sconosciuto" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6665 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6879 +msgid "Go back to main button list" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:151 -msgid "Unknown word starting with t" -msgstr "Nome parametro che inizia con T sconosciuto" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6701 +#, fuzzy +msgid "delete selected tool or tools" +msgstr "Numero utensile selezionato troppo grande" -#: src/emc/rs274ngc/rs274ngc_return.hh:152 -msgid "Unknown word where unary operation could be" -msgstr "Parametro sconosciuto al posto di una operazione unaria" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6718 +#, fuzzy +msgid "add a new tool to tool table" +msgstr "Ricarica ta_bella utensile" -#: src/emc/rs274ngc/rs274ngc_return.hh:153 -msgid "X and y words missing for arc in xy plane" -msgstr "Parametri X e Y mancanti in un arco nel piano XY" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6729 +#, fuzzy +msgid "Reload" +msgstr "_Ricarica" -#: src/emc/rs274ngc/rs274ngc_return.hh:154 -msgid "X and z words missing for arc in xz plane" -msgstr "Parametri X e Z mancanti in un arco nel piano XZ" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6735 +#, fuzzy +msgid "reload tool table from file" +msgstr "Ricarica ta_bella utensile" -#: src/emc/rs274ngc/rs274ngc_return.hh:155 -msgid "X value unspecified in yz plane canned cycle" -msgstr "Valore X mancante in un ciclo fisso nel piano yz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6746 +msgid "Apply" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:156 -msgid "Y and z words missing for arc in yz plane" -msgstr "Parametri Y e Z mancanti in un arco nel piano YZ" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6752 +msgid "" +"apply the changes you made, G43 will be excecuted only if it is active g-code" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:157 -msgid "Y value unspecified in xz plane canned cycle" -msgstr "Valore Y mancante in un ciclo fisso nel piano xz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6768 +#, fuzzy +msgid "Select a tool by number" +msgstr "Numero utensile selezionato troppo grande" -#: src/emc/rs274ngc/rs274ngc_return.hh:158 -msgid "Z value unspecified in xy plane canned cycle" -msgstr "Valore Z mancante in un ciclo fisso nel piano xy" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6790 +msgid "change tool with the command M61 Q?, no machine move will be done" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:159 -msgid "Zero or negative argument to ln" -msgstr "Argomento nullo o negativo nella funzione ln" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6812 +msgid "change tool to the selected one" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:161 -msgid "K word missing with g33/g33.1" -msgstr "Parametro K mancante con G33/G33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6824 +#, fuzzy +msgid "" +"touchoff\n" +" tool x" +msgstr "Contatto utensile su _fissaggio" -#: src/emc/rs274ngc/rs274ngc_return.hh:162 -msgid "F word used with a g33/g33.1" -msgstr "Parametro F usato con G33/G33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6832 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6863 +#, fuzzy +msgid "touch off the tool and set the value to the tool table" +msgstr "Utensile richiesto %d mancante nella tabella utensili" -#: src/emc/rs274ngc/rs274ngc_return.hh:163 -msgid "Unknown operation name starting with e" -msgstr "Nome operazione che inizia con E sconosciuta" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6855 +msgid "" +"touchoff\n" +" tool z" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:164 -msgid "Unknown operation name starting with n" -msgstr "Nome operazione che inizia con N sconosciuta" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6915 +msgid "Move to your home directory" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:165 -msgid "Unknown operation name starting with g" -msgstr "Nome operazione che inizia con G sconosciuta" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6932 +#, fuzzy +msgid "Move to parrent directory" +msgstr "Percorso corrente" -#: src/emc/rs274ngc/rs274ngc_return.hh:166 -msgid "Unknown operation name starting with l" -msgstr "Nome operazione che inizia con L sconosciuta" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6961 +#, fuzzy +msgid "Select the previos file" +msgstr "Selezione elemento da visualizzare" -#: src/emc/rs274ngc/rs274ngc_return.hh:167 -msgid "Too many subroutine parameters" -msgstr "Troppi parametri per la subroutine" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6979 +#, fuzzy +msgid "Select the next file" +msgstr "Selezione elemento da visualizzare" -#: src/emc/rs274ngc/rs274ngc_return.hh:168 -msgid "Too many subroutine levels" -msgstr "Troppi livelli per la subroutine" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6997 +msgid "Jump to user defined directory" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:169 -msgid "Bug: call stack underrun" -msgstr "Bug: call stack underrun" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7027 +msgid "select the highlighted file and return the path" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:170 -msgid "Unknown control command in o word" -msgstr "Parametro O sconosciuto in comando controllo" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7057 +msgid "Close without returning a file path" +msgstr "" -# Anmerkung:FJ: Tool max? Was das? -# Anmerkung:AJ: sollte "Index in tool table file too large" sein -#: src/emc/rs274ngc/rs274ngc_return.hh:171 -msgid "Too many oword labels" -msgstr "Troppe etichette oword" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7075 +#, fuzzy +msgid "Load File" +msgstr "File caricato:" -#: src/emc/rs274ngc/rs274ngc_return.hh:172 -msgid "Unknown oword number" -msgstr "Numero oword sconosciuto" +#~ msgid "%s move in MDI would exceed joint %d's positive limit" +#~ msgstr "%s movimento in MDI oltrepassa il limite positivo dell'asse %d" -#: src/emc/rs274ngc/rs274ngc_return.hh:173 -msgid "Nested subroutine definition" -msgstr "Definizione subroutine nidificata" +#~ msgid "%s move in MDI would exceed joint %d's negative limit" +#~ msgstr "%s movimento in MDI oltrepassa il limite negativo dell'asse %d" -#: src/emc/rs274ngc/rs274ngc_return.hh:174 -msgid "Not in subroutine definition" -msgstr "Nessuna definizione in subroutine" +#~ msgid "toomany" +#~ msgstr "troppi" -#: src/emc/rs274ngc/rs274ngc_return.hh:175 -msgid "File not open" -msgstr "File non aperto" +#~ msgid "_Globals" +#~ msgstr "_Globali" -#: src/emc/rs274ngc/rs274ngc_return.hh:176 -msgid "Need tool prepared -Txx- for toolchange" -msgstr "Necessario preparare utensile -Txx- per cambio utensile" +#~ msgid "LinuxCNC Debug Level" +#~ msgstr "Livello Debug LinuxCNC" -#: src/emc/rs274ngc/rs274ngc_return.hh:177 -msgid "Cannot change planes with cutter radius compensation on" -msgstr "Impossibile cambiare piani con compensazione raggio utensile attiva" +#~ msgid "" +#~ "# **** COMANDED velocity is signed so we use absolute component (abs.0) " +#~ "to remove sign" +#~ msgstr "" +#~ "# **** velocità COMANDATA ha il segno, pertanto usa componente assoluto " +#~ "(abs.0) per eliminare segno" -#: src/emc/rs274ngc/rs274ngc_return.hh:178 -msgid "Cutter radius compensation allowed only in XY, XZ planes" -msgstr "Compensazione raggio utensile consentita solamente nei piani XY e XZ" +#~ msgid "Generated by stepconf at %s" +#~ msgstr "Generato da stepconf a %s" -#: src/emc/rs274ngc/rs274ngc_return.hh:179 -msgid "P word missing with G76" -msgstr "Parametro P mancante con G76" +#~ msgid " Out" +#~ msgstr " Fuori" -#: src/emc/rs274ngc/rs274ngc_return.hh:180 -msgid "I J or K words missing with G76" -msgstr "Parametro I, J o K mancante con G76" +#~ msgid "" +#~ "Out\n" +#~ "In" +#~ msgstr "" +#~ "Out\n" +#~ "In" -# -#: src/emc/rs274ngc/rs274ngc_return.hh:181 -msgid "Cannot move rotary axes with G76" -msgstr "Impossibile muovere asse rotante con G76" +#~ msgid "S_econd Parport Address:" +#~ msgstr "S_econdo Indirizzo Porta Parallela:" -#: src/emc/rs274ngc/rs274ngc_return.hh:182 -msgid "Multiple e words on one line" -msgstr "Parametro E presente più volte su una linea" +#~ msgid "T_hird Parport Address:" +#~ msgstr "Terzo Indirizzo Porta Parallela:" -#: src/emc/rs274ngc/rs274ngc_return.hh:183 -msgid "Named parameter not terminated" -msgstr "Parametro nominato non terminato" +#~ msgid " Parallel Port Settings" +#~ msgstr " Setup Porta Parallela" -#: src/emc/rs274ngc/rs274ngc_return.hh:184 -msgid "Out of memory" -msgstr "Fine memoria" +#~ msgid "" +#~ "Driver characteristics: (Multiply by 1000 for times specified in µs or " +#~ "microseconds)\n" +#~ " Additional signal conditioning or isolation such as optocouplers " +#~ "and RC filters\n" +#~ " can impose timing constraints of their own, in addition to those " +#~ "of the driver." +#~ msgstr "" +#~ "Caratteristiche del driver : (Moltiplicare per 1000 i tempi specificati " +#~ "in µs o microsecondi)\n" +#~ " Elementi addizionali per il condizionamento o isolamento del " +#~ "segnale come \n" +#~ "accoppiatori ottici e filtri RC\n" +#~ " possono dare vincoli temporali propri, in aggiunta a quelli del " +#~ "driver." -#: src/emc/rs274ngc/rs274ngc_return.hh:185 -msgid "S word missing with G96" -msgstr "Parametro S mancante con G96" +#~ msgid "Advanced Configuration Options" +#~ msgstr "Opzioni Configurazione Avanzata" -#: src/emc/rs274ngc/rs274ngc_return.hh:186 -msgid "Queue is not empty after external input" -msgstr "Coda non vuota dopo un input esterno" +#~ msgid "_Sherline Outputs" +#~ msgstr "Outputs tipo _Sherline" -#: src/emc/rs274ngc/rs274ngc_return.hh:187 -msgid "Can't select analog input with wait type != immediate return" -msgstr "" -"Impossibile selezionare input analogico con tipo attesa diversa da ritorno " -"immediato" +#~ msgid "_Xylotex Outputs" +#~ msgstr "Outputs tipo _Xylotex" -#: src/emc/rs274ngc/rs274ngc_return.hh:188 -msgid "Zero timeout with wait type != immediate return" -msgstr "Tempo attesa nulla con tipo attesa diversa da ritorno immediato" +#~ msgid "Spindle Configuration" +#~ msgstr "Configurazione Mandrino" -#: src/emc/rs274ngc/rs274ngc_return.hh:189 -msgid "Invalid to select both a digital and an analog input with M66" -msgstr "" -"Invalido selezionare sia un segnale di input digitale che analogico con M66" +#~ msgid "7i76 sserial #1" +#~ msgstr "7i76 sserial #1" -#: src/emc/rs274ngc/rs274ngc_return.hh:190 -msgid "Need to have either a valid P or a valid E word with M66" -msgstr "E' necessario avere sia un parametro P che E valido con M66" +#~ msgid "7i76 sserial #2" +#~ msgstr "7i76 sserial #2" -#: src/emc/rs274ngc/rs274ngc_return.hh:191 -msgid "Q word missing with g73" -msgstr "Parametro Q mancante con G73" +#~ msgid "" +#~ "# Use COMMANDED spindle velocity from LinuxCNC because no spindle " +#~ "encoder was specified" +#~ msgstr "" +#~ "# **** Usa velocità mandrino COMANDATA da LinuxCNC perchè non è stato " +#~ "specificato nessun encoder mandrino" -#: src/emc/rs274ngc/rs274ngc_return.hh:192 -msgid "Digital input selected out of bounds" -msgstr "Input digitale selezionato fuori dai limiti" +#~ msgid "" +#~ "# COMMANDED velocity is signed so we use absolute component to remove " +#~ "sign" +#~ msgstr "" +#~ "# **** velocità COMANDATA ha il segno, pertanto usa componente assoluto " +#~ "per eliminare segno" -#: src/emc/rs274ngc/rs274ngc_return.hh:193 -msgid "Analog input selected out of bounds" -msgstr "Input analogico selezionato fuori dai limiti" +#~ msgid "" +#~ "You are have no hostmot2 firmware downloaded in folder:\n" +#~ "%s\n" +#~ "PNCconf will use sample firmware data\n" +#~ "live testing will not be possible" +#~ msgstr "" +#~ "Mancano firmware hostmot2 nella cartella:\n" +#~ "%s\n" +#~ "PNCconf usa dati dei sample firmware \n" +#~ "test live non sono possibili" -#: src/emc/rs274ngc/rs274ngc_return.hh:194 -msgid "W value unspecified in UV plane canned cycle" -msgstr "Valore W mancante in un ciclo fisso nel piano UV" +#~ msgid "Spindle Max Output:" +#~ msgstr "Max Uscita Mandrino:" -#: src/emc/rs274ngc/rs274ngc_return.hh:195 -msgid "U value unspecified in VW plane canned cycle" -msgstr "Valore U mancante in un ciclo fisso nel piano VW" +#~ msgid "Dac Output Scale:" +#~ msgstr "Scala Uscita Dac:" -#: src/emc/rs274ngc/rs274ngc_return.hh:196 -msgid "V value unspecified in UW plane canned cycle" -msgstr "Valore V mancante in un ciclo fisso nel piano UW" +#~ msgid "Program the order P of NURBS in the first block of instruction" +#~ msgstr "" +#~ "Nel primo blocco di istruzione occorre programmare l'ordine P della NURBS" -#: src/emc/rs274ngc/rs274ngc_return.hh:197 -msgid "R less than W in cycle in UV plane" -msgstr "R minore di W in un ciclo nel piano UV" +#~ msgid "Cannot set motion output with cutter radius compensation on" +#~ msgstr "" +#~ "Operazione di movimento impossibile con compensazione raggio utensile " +#~ "attiva" -#: src/emc/rs274ngc/rs274ngc_return.hh:198 -msgid "R less than U in cycle in VW plane" -msgstr "R minore di U in un ciclo nel piano VW" +#~ msgid "Cannot set motion digital output with cutter radius compensation on" +#~ msgstr "" +#~ "Operazione di movimento digitale impossibile con compensazione raggio " +#~ "utensile attiva" -#: src/emc/rs274ngc/rs274ngc_return.hh:199 -msgid "R less than V in cycle in UW plane" -msgstr "R minore di V in un ciclo nel piano UW" +#~ msgid "" +#~ "Cannot set auxiliary digital output with cutter radius compensation on" +#~ msgstr "" +#~ "Impossibile definire output digitali ausiliari con compensazione raggio " +#~ "utensile attiva" + +#~ msgid "Cannot set motion analog output with cutter radius compensation on" +#~ msgstr "" +#~ "Operazione di movimento analogico impossibile con compensazione raggio " +#~ "utensile attiva" -#~ msgid "Select item to display" -#~ msgstr "Selezione elemento da visualizzare" +#~ msgid "" +#~ "Cannot set auxiliary analog output with cutter radius compensation on" +#~ msgstr "" +#~ "Impossibile definire output analogici ausiliari con compensazione raggio " +#~ "utensile attiva" #~ msgid "EMC Debug" #~ msgstr "EMC Debug" @@ -13928,9 +17657,6 @@ msgstr "R minore di V in un ciclo nel piano UW" #~ msgid "Switch only" #~ msgstr "Solo Interruttore" -#~ msgid "Index only" -#~ msgstr "Solo Indice" - #~ msgid "Limit And Homing Switches" #~ msgstr "Interruttori Limiti e Azzeramento" @@ -14027,9 +17753,6 @@ msgstr "R minore di V in un ciclo nel piano UW" #~ msgid "Length:" #~ msgstr "Lunghezza:" -#~ msgid "Diameter:" -#~ msgstr "Diametro:" - #~ msgid "Tools..." #~ msgstr "Utensili..." @@ -14229,9 +17952,6 @@ msgstr "R minore di V in un ciclo nel piano UW" #~ msgid "Mesa 5i20 connector 4 \n" #~ msgstr "Mesa 5i20 connector 4 \n" -#~ msgid "Restore tool number after shutdown" -#~ msgstr "Ricarica numero utensile dopo chiusura" - #~ msgid "123" #~ msgstr "123" @@ -14283,9 +18003,6 @@ msgstr "R minore di V in un ciclo nel piano UW" #~ msgid "Cannot use b word" #~ msgstr "Impossibile usare codice B" -#~ msgid "Cannot use c word" -#~ msgstr "Impossibile usare codice C" - #~ msgid "Cannot use xz plane with cutter radius comp" #~ msgstr "Impossibile usare piano xz con compensazione raggio utensile attiva" @@ -14339,9 +18056,6 @@ msgstr "R minore di V in un ciclo nel piano UW" #~ msgid "Required parameter missing" #~ msgstr "Parametro richiesto mancante" -#~ msgid "Selected tool slot number too large" -#~ msgstr "Numero utensile selezionato troppo grande" - #~ msgid "Tool length offset index too big" #~ msgstr "Indice offset lunghezza utensile troppo grande" @@ -14399,9 +18113,6 @@ msgstr "R minore di V in un ciclo nel piano UW" #~ msgid "htz" #~ msgstr "hz" -#~ msgid "Out" -#~ msgstr "Out" - #~ msgid "Jog select input A" #~ msgstr "Seleziona Input asse A" @@ -14411,9 +18122,6 @@ msgstr "R minore di V in un ciclo nel piano UW" #~ msgid "Jog select input C" #~ msgstr "Seleziona Input asse C" -#~ msgid "Axis select input B" -#~ msgstr "Seleziona Input asse B" - #~ msgid "Axis select input C" #~ msgstr "Seleziona Input asse C" @@ -14447,9 +18155,6 @@ msgstr "R minore di V in un ciclo nel piano UW" #~ msgid "Step generator" #~ msgstr "Generatore Step" -#~ msgid "or" -#~ msgstr "o" - #~ msgid "" #~ "fast (base)\n" #~ "slow (servo)" @@ -14484,9 +18189,6 @@ msgstr "R minore di V in un ciclo nel piano UW" #~ msgid "P word with no g4 g10 g64 g76 g82 g86 g88 g89" #~ msgstr "Parametro P senza G4, G10, G64, G76, G82, G86, G88 o G89" -#~ msgid "Xylotex" -#~ msgstr "Xylotex" - #~ msgid "Space, Ctrl-Space" #~ msgstr "Spazio, CTRL-Spazio" @@ -14519,9 +18221,6 @@ msgstr "R minore di V in un ciclo nel piano UW" #~ "Parker-oem750\n" #~ "Altro" -#~ msgid "Include custom _HAL configuration" -#~ msgstr "Includi configurazione _HAL personalizzata" - #~ msgid "mm / s^2\t" #~ msgstr "mm / s^2\t" diff --git a/src/po/ja.po b/src/po/ja.po index 0f01f36da6..a21e2a119e 100644 --- a/src/po/ja.po +++ b/src/po/ja.po @@ -1,13369 +1,16768 @@ msgid "" msgstr "" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-10 13:40-0600\n" +"POT-Creation-Date: 2019-02-20 07:49+0000\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: src/hal/utils/meter.c:198 +#: src/emc/task/emctaskmain.cc:479 src/emc/task/emctaskmain.cc:512 #, c-format -msgid "ERROR: '%s' is not a valid probe type\n" +msgid "%s exceeds +X limit" msgstr "" -#: src/hal/utils/meter.c:206 +#: src/emc/task/emctaskmain.cc:484 src/emc/task/emctaskmain.cc:517 #, c-format -msgid "ERROR: no pin/signal/parameter name\n" +msgid "%s exceeds +Y limit" msgstr "" -#: src/hal/utils/meter.c:212 +#: src/emc/task/emctaskmain.cc:489 src/emc/task/emctaskmain.cc:522 #, c-format -msgid "" -"ERROR: -s option requires a probe type and a pin/signal/parameter name\n" +msgid "%s exceeds +Z limit" msgstr "" -#: src/hal/utils/meter.c:238 tcl/tklinuxcnc.tcl:764 -msgid "Hal Meter" +#: src/emc/task/emctaskmain.cc:494 src/emc/task/emctaskmain.cc:527 +#, c-format +msgid "%s exceeds -X limit" msgstr "" -#: src/hal/utils/meter.c:287 -msgid "_Select" +#: src/emc/task/emctaskmain.cc:499 src/emc/task/emctaskmain.cc:532 +#, c-format +msgid "%s exceeds -Y limit" msgstr "" -#: src/hal/utils/meter.c:288 -msgid "E_xit" +#: src/emc/task/emctaskmain.cc:504 src/emc/task/emctaskmain.cc:537 +#, c-format +msgid "%s exceeds -Z limit" msgstr "" -#: src/hal/utils/meter.c:336 src/hal/utils/meter.c:364 -msgid "Select Item to Probe" +#: src/emc/task/emctaskmain.cc:892 +#, c-format +msgid "" +"command (%s) cannot be executed until the machine is out of E-stop and " +"turned on" msgstr "" -#: src/hal/utils/meter.c:640 -msgid " _Pins " +#: src/emc/task/emctaskmain.cc:1013 +#, c-format +msgid "can't do that (%s:%d) in manual mode" msgstr "" -#: src/hal/utils/meter.c:641 -msgid " _Signals " +#: src/emc/task/emctaskmain.cc:1113 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter idle" msgstr "" -#: src/hal/utils/meter.c:642 -#, fuzzy -msgid " Para_meters " -msgstr "パラムのファイルを読む" +#: src/emc/task/emctaskmain.cc:1180 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter reading" +msgstr "" -#: src/hal/utils/meter.c:685 -msgid "_Close" +#: src/emc/task/emctaskmain.cc:1265 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter paused" msgstr "" -#: src/hal/utils/scope.c:126 -msgid "" -"Usage:\n" -" halscope [-h] [-i infile] [-o outfile] [num_samples]\n" +#: src/emc/task/emctaskmain.cc:1334 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter waiting" msgstr "" -#: src/hal/utils/scope.c:474 src/hal/utils/scope.c:501 -#, fuzzy -msgid "Open Configuration File:" -msgstr "スピンドル消した" +#: src/emc/task/emctaskmain.cc:1442 +#, c-format +msgid "can't do that (%s:%d) in MDI mode" +msgstr "" -#: src/hal/utils/scope.c:535 -#, fuzzy -msgid "_Open Configuration..." -msgstr "スピンドル消した" +#: src/emc/task/emctaskmain.cc:2100 +msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" +msgstr "" -#: src/hal/utils/scope.c:541 -#, fuzzy -msgid "_Save Configuration..." -msgstr "スピンドル消した" +#: src/emc/task/emctaskmain.cc:2157 tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 +#: tcl/mini.tcl:1775 tcl/tklinuxcnc.tcl:451 +#, fuzzy, c-format, tcl-format +msgid "can't open %s" +msgstr "開けません" -#: src/hal/utils/scope.c:550 -msgid "O_pen Data File..." +#: src/emc/task/emctaskmain.cc:2169 +msgid "Can't issue MDI command when not homed" msgstr "" -#: src/hal/utils/scope.c:557 -msgid "S_ave Data File..." +#: src/emc/task/emctaskmain.cc:2174 +msgid "Must be in MDI mode to issue MDI command" msgstr "" -#: src/hal/utils/scope.c:566 share/axis/tcl/axis.tcl:93 -msgid "_Quit" +#: src/emc/task/emctaskmain.cc:2256 +msgid "Can't run a program when not homed" msgstr "" -#: src/hal/utils/scope.c:572 -msgid "_About Halscope" +#: src/emc/rs274ngc/interp_arc.cc:110 src/emc/rs274ngc/interp_arc.cc:284 +#, c-format +msgid "" +"Zero-radius arc: start=(%c%.4f,%c%.4f) center=(%c%.4f,%c%.4f) end=(%c%.4f,%c" +"%.4f) r1=%.4f r2=%.4f" msgstr "" -#: src/hal/utils/scope.c:578 share/axis/tcl/axis.tcl:435 -#, fuzzy -msgid "_File" -msgstr "ファイル" - -#: src/hal/utils/scope.c:582 share/axis/tcl/axis.tcl:447 -#, fuzzy -msgid "_Help" -msgstr "助け" - -#: src/hal/utils/scope.c:641 -msgid "HAL Oscilloscope" +#: src/emc/rs274ngc/interp_arc.cc:120 src/emc/rs274ngc/interp_arc.cc:292 +#, c-format +msgid "" +"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " +"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " +"rel_err=%.4f%%" msgstr "" -#: src/hal/utils/scope.c:669 -msgid "Horizontal" +#: src/emc/rs274ngc/interp_check.cc:90 +msgid "G4 not allowed with G2 or G3 because they both use P" msgstr "" -#: src/hal/utils/scope.c:677 -msgid "Selected Channel" +#: src/emc/rs274ngc/interp_check.cc:93 +msgid "Line with G10 does not have L1, L10, L11, L2, or L20" msgstr "" -#: src/hal/utils/scope.c:683 -msgid "Run Mode" +#: src/emc/rs274ngc/interp_check.cc:94 +msgid "P value not an integer with G10" msgstr "" -#: src/hal/utils/scope.c:686 -msgid "Trigger" +#: src/emc/rs274ngc/interp_check.cc:95 +#, c-format +msgid "P value out of range (0-9) with G10 L%d" msgstr "" -#: src/hal/utils/scope.c:692 -msgid "Vertical" +#: src/emc/rs274ngc/interp_check.cc:96 +#, c-format +msgid "P value out of range with G10 L%d" msgstr "" -#: src/hal/utils/scope.c:700 share/axis/tcl/axis.tcl:135 -#: share/axis/tcl/axis.tcl:1199 -#, fuzzy -msgid "Stop" -msgstr "徐徐に" +#: src/emc/rs274ngc/interp_check.cc:100 +msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." +msgstr "" -#: src/hal/utils/scope.c:703 -msgid "Normal" +#: src/emc/rs274ngc/interp_check.cc:259 +msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" msgstr "" -#: src/hal/utils/scope.c:706 -msgid "Single" +#: src/emc/rs274ngc/interp_check.cc:265 +msgid "E word with no G76, M66, M67 or M68 to use it" msgstr "" -#: src/hal/utils/scope.c:709 -msgid "Roll" +#: src/emc/rs274ngc/interp_check.cc:270 +msgid "H word with no G43 or G76 to use it" msgstr "" -#: src/hal/utils/scope_horiz.c:130 -msgid "Zoom" +#: src/emc/rs274ngc/interp_check.cc:276 +msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" msgstr "" -#: src/hal/utils/scope_horiz.c:131 -msgid " Pos " +#: src/emc/rs274ngc/interp_check.cc:282 +msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" msgstr "" -#: src/hal/utils/scope_horiz.c:164 -msgid "" -"----- Samples\n" -"at ---- KHz" +#: src/emc/rs274ngc/interp_check.cc:288 +msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" msgstr "" -#: src/hal/utils/scope_horiz.c:459 -msgid "Realtime component not loaded" +#: src/emc/rs274ngc/interp_check.cc:298 +msgid "" +"L word with no G10, cutter compensation, canned cycle, digital/analog input, " +"or NURBS code" msgstr "" -#: src/hal/utils/scope_horiz.c:460 +#: src/emc/rs274ngc/interp_check.cc:310 msgid "" -"HALSCOPE uses a realtime component called scope_rt'\n" -"to sample signals for display. It is not currently loaded\n" -"and attempting to load it automatically failed. More information\n" -"may be available in the terminal where halscope was started.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Load the component (using 'halcmd loadrt scope_rt'), then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " +"M53 M62 M63 M64 M65 M66 or user M code to use it" msgstr "" -#: src/hal/utils/scope_horiz.c:495 -msgid "Realtime function not linked" +#: src/emc/rs274ngc/interp_check.cc:315 +msgid "P value not an integer with M19 G2 or G3" msgstr "" -#: src/hal/utils/scope_horiz.c:496 -msgid "" -"The HALSCOPE realtime sampling function\n" -"must be called from a HAL thread in to\n" -"determine the sampling rate.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Select a thread name and multiplier then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +#: src/emc/rs274ngc/interp_check.cc:317 +msgid "P value must be 0,1,or 2 with M19" msgstr "" -#: src/hal/utils/scope_horiz.c:503 -msgid "Select Sample Rate" +#: src/emc/rs274ngc/interp_check.cc:319 +msgid "P value should be 1 or greater with G2 or G3" msgstr "" -#: src/hal/utils/scope_horiz.c:504 +#: src/emc/rs274ngc/interp_check.cc:327 msgid "" -"Select a thread name and multiplier then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " +"code that uses it" msgstr "" -#: src/hal/utils/scope_horiz.c:526 -msgid "Thread:" +#: src/emc/rs274ngc/interp_check.cc:337 +msgid "R value must be within 0..360 with M19" msgstr "" -#: src/hal/utils/scope_horiz.c:534 -msgid "Sample Period:" +#: src/emc/rs274ngc/interp_convert.cc:139 +msgid "You must specify both X and Y coordinates for Control Points" msgstr "" -#: src/hal/utils/scope_horiz.c:542 -msgid "Sample Rate:" +#: src/emc/rs274ngc/interp_convert.cc:142 +msgid "Can specify P without X and Y only for the first control point" msgstr "" -#: src/hal/utils/scope_horiz.c:558 src/emc/usr_intf/touchy/mdi.py:78 -msgid "Thread" +#: src/emc/rs274ngc/interp_convert.cc:145 +msgid "Must specify positive weight P for every Control Point" msgstr "" -#: src/hal/utils/scope_horiz.c:559 -msgid "Period" +#: src/emc/rs274ngc/interp_convert.cc:148 +msgid "Cannot make a NURBS with 0 feedrate" msgstr "" -#: src/hal/utils/scope_horiz.c:619 -msgid "Multiplier:" +#: src/emc/rs274ngc/interp_convert.cc:183 +msgid "Cannot use G5.3 without G5.2 first" msgstr "" -#: src/hal/utils/scope_horiz.c:636 -#, fuzzy -msgid "Record Length" -msgstr "長さ:" - -#: src/hal/utils/scope_horiz.c:639 +#: src/emc/rs274ngc/interp_convert.cc:184 #, c-format -msgid "%5d samples (1 channel)" +msgid "" +"You must specify a number of control points at least equal to the order L = " +"%d" msgstr "" -#: src/hal/utils/scope_horiz.c:641 -#, c-format -msgid "%5d samples (2 channels)" +#: src/emc/rs274ngc/interp_convert.cc:213 +msgid "Cannot convert spline with cutter radius compensation" msgstr "" -#: src/hal/utils/scope_horiz.c:645 -#, c-format -msgid "%5d samples (4 channels)" +#: src/emc/rs274ngc/interp_convert.cc:223 +msgid "Splines must be in the XY plane" msgstr "" -#: src/hal/utils/scope_horiz.c:649 -#, c-format -msgid "%5d samples (8 channels)" +#: src/emc/rs274ngc/interp_convert.cc:228 +msgid "Splines may not have motion in Z, A, B, or C" msgstr "" -#: src/hal/utils/scope_horiz.c:653 -#, c-format -msgid "%5d samples (16 channels)" +#: src/emc/rs274ngc/interp_convert.cc:232 +msgid "Must specify both I and J with G5.1" msgstr "" -#: src/hal/utils/scope_horiz.c:708 src/hal/utils/scope_horiz.c:754 -#: src/hal/utils/scope_horiz.c:966 src/hal/utils/scope_vert.c:761 -#: src/hal/utils/scope_vert.c:853 tcl/bin/emccalib.tcl:227 -#: tcl/bin/genedit.tcl:180 tcl/bin/genedit.tcl:450 tcl/bin/halconfig.tcl:682 -#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:257 -#: tcl/bin/pickconfig.tcl:479 tcl/bin/pickconfig.tcl:506 tcl/mini.tcl:1456 -#: tcl/mini.tcl:2937 tcl/tklinuxcnc.tcl:160 tcl/tklinuxcnc.tcl:245 -#: tcl/tklinuxcnc.tcl:419 tcl/tklinuxcnc.tcl:1338 tcl/tklinuxcnc.tcl:1407 -#: tcl/tklinuxcnc.tcl:1438 tcl/tklinuxcnc.tcl:1469 tcl/tklinuxcnc.tcl:2017 -#: tcl/tklinuxcnc.tcl:2036 tcl/tklinuxcnc.tcl:2055 tcl/tklinuxcnc.tcl:2102 -#: src/emc/usr_intf/axis/scripts/axis.py:1077 -#: src/emc/usr_intf/axis/scripts/axis.py:1141 -#: src/emc/usr_intf/axis/scripts/axis.py:1458 -#: src/emc/usr_intf/axis/scripts/axis.py:2477 -#: src/emc/usr_intf/axis/scripts/axis.py:3336 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:718 -#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1720 -#: share/axis/tcl/axis.tcl:1757 -msgid "OK" -msgstr "OK" - -#: src/hal/utils/scope_horiz.c:713 src/hal/utils/scope_horiz.c:754 -#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 -msgid "Quit" +#: src/emc/rs274ngc/interp_convert.cc:251 +msgid "Must specify both I and J, or neither" msgstr "" -#: src/hal/utils/scope_horiz.c:745 -msgid "Realtime thread(s) not running" +#: src/emc/rs274ngc/interp_convert.cc:262 +msgid "Must specify both P and Q with G5" msgstr "" -#: src/hal/utils/scope_horiz.c:746 +#: src/emc/rs274ngc/interp_convert.cc:363 msgid "" -"HALSCOPE uses code in a realtime HAL thread to sample\n" -"signals for display. The HAL thread(s) are not running.\n" -"Threads are usually started by the application you are\n" -"attempting to run, or you can use the 'halcmd start' command.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Start the threads, then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +"The move just after exiting cutter compensation mode must be straight, not " +"an arc" msgstr "" -#: src/hal/utils/scope_horiz.c:779 -msgid "Pick log file to write to:" +#: src/emc/rs274ngc/interp_convert.cc:371 +msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" msgstr "" -#: src/hal/utils/scope_horiz.c:962 -msgid "Not enough channels" +#: src/emc/rs274ngc/interp_convert.cc:383 +#: src/emc/rs274ngc/interp_convert.cc:4488 +msgid "Cannot feed with zero spindle speed in feed per rev mode" msgstr "" -#: src/hal/utils/scope_horiz.c:963 +#: src/emc/rs274ngc/interp_convert.cc:394 +#: src/emc/rs274ngc/interp_convert.cc:400 +#: src/emc/rs274ngc/interp_convert.cc:409 +#: src/emc/rs274ngc/interp_convert.cc:415 +#: src/emc/rs274ngc/interp_convert.cc:424 +#: src/emc/rs274ngc/interp_convert.cc:430 +#, c-format +msgid "%c word missing in absolute center arc" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:662 msgid "" -"This record length cannot handle the channels\n" -"that are currently enabled. Pick a shorter\n" -"record length that supports more channels." +"Radius of cutter compensation entry arc is not greater than the tool radius" msgstr "" -#: src/hal/utils/scope_horiz.c:1051 -#, c-format +#: src/emc/rs274ngc/interp_convert.cc:882 +#: src/emc/rs274ngc/interp_convert.cc:892 src/emc/rs274ngc/interp_queue.cc:696 msgid "" -"%s\n" -"per div" +"Arc move in concave corner cannot be reached by the tool without gouging" msgstr "" -#: src/hal/utils/scope_horiz.c:1066 -#, c-format +#: src/emc/rs274ngc/interp_convert.cc:918 +msgid "Arc to arc motion is invalid because the arcs have the same center" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:921 msgid "" -"%s samples\n" -"at %s" +"Arc to arc motion makes a corner the compensated tool can't fit in without " +"gouging" msgstr "" -#: src/hal/utils/scope_horiz.c:1170 -msgid "nSec" +#: src/emc/rs274ngc/interp_convert.cc:1053 +#: src/emc/rs274ngc/interp_convert.cc:1057 +#: src/emc/rs274ngc/interp_convert.cc:1061 +#: src/emc/rs274ngc/interp_convert.cc:3945 +#: src/emc/rs274ngc/interp_convert.cc:3948 +#: src/emc/rs274ngc/interp_convert.cc:3951 src/emc/rs274ngc/interp_find.cc:97 +#, c-format +msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" msgstr "" -#: src/hal/utils/scope_horiz.c:1173 -msgid "uSec" +#: src/emc/rs274ngc/interp_convert.cc:1563 +msgid "Cannot change control mode with cutter radius compensation on" msgstr "" -#: src/hal/utils/scope_horiz.c:1177 -msgid "mSec" +#: src/emc/rs274ngc/interp_convert.cc:1676 +msgid "Cannot change coordinate systems with cutter radius compensation on" msgstr "" -#: src/hal/utils/scope_horiz.c:1181 -#: src/emc/usr_intf/pncconf/pncconf.glade:1953 -#: src/emc/usr_intf/pncconf/pncconf.glade:2825 -#: src/emc/usr_intf/pncconf/pncconf.glade:3706 -#: src/emc/usr_intf/pncconf/pncconf.glade:4587 -msgid "Sec" +#: src/emc/rs274ngc/interp_convert.cc:1920 +#, c-format +msgid "G%d.1 with no D word" msgstr "" -#: src/hal/utils/scope_horiz.c:1198 -#: src/emc/usr_intf/stepconf/stepconf.glade:3664 -#: src/emc/usr_intf/stepconf/stepconf.glade:4040 -#: src/emc/usr_intf/pncconf/pncconf.glade:8268 -#: src/emc/usr_intf/pncconf/pncconf.glade:8281 -#: src/emc/usr_intf/pncconf/pncconf.glade:8458 -msgid "Hz" +#: src/emc/rs274ngc/interp_convert.cc:1923 +#, c-format +msgid "G%d.1 with L word, but plane is not G18" msgstr "" -#: src/hal/utils/scope_horiz.c:1201 -msgid "KHz" +#: src/emc/rs274ngc/interp_convert.cc:1934 +#, c-format +msgid "G%d requires D word to be a whole number" msgstr "" -#: src/hal/utils/scope_horiz.c:1205 -msgid "Mhz" +#: src/emc/rs274ngc/interp_convert.cc:1941 +#, c-format +msgid "G%d with lathe tool, but plane is not G18" msgstr "" -#: src/hal/utils/scope_vert.c:403 src/hal/utils/scope_vert.c:1258 -#, fuzzy, c-format -msgid "" -"Offset\n" -"%s" -msgstr "平行移動:" - -#: src/hal/utils/scope_vert.c:618 -msgid "Gain" -msgstr "" - -#: src/hal/utils/scope_vert.c:630 src/hal/utils/scope_trig.c:252 -msgid "Pos" -msgstr "" - -#: src/hal/utils/scope_vert.c:644 tcl/ngcgui_ttt.tcl:214 -#: src/emc/usr_intf/pncconf/pncconf.glade:57147 -msgid "Scale" +#: src/emc/rs274ngc/interp_convert.cc:2340 +msgid "Cannot set reference point with cutter compensation in effect" msgstr "" -#: src/hal/utils/scope_vert.c:657 -msgid "Chan Off" +#: src/emc/rs274ngc/interp_convert.cc:2859 +#, c-format +msgid "gen_restore G20/G21 failed: '%s'" msgstr "" -#: src/hal/utils/scope_vert.c:713 -#, fuzzy -msgid "Set Offset" -msgstr "道具が平行移動" - -#: src/hal/utils/scope_vert.c:714 +#: src/emc/rs274ngc/interp_convert.cc:2907 #, c-format msgid "" -"Set the vertical offset\n" -"for channel %d." +"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" msgstr "" -#: src/hal/utils/scope_vert.c:734 -msgid "AC Coupled" +#: src/emc/rs274ngc/interp_convert.cc:2908 +#, c-format +msgid "BUG: restore from level %d !?" msgstr "" -#: src/hal/utils/scope_vert.c:769 src/hal/utils/scope_vert.c:1171 -#: src/hal/utils/scope_trig.c:367 tcl/bin/emccalib.tcl:229 -#: tcl/bin/genedit.tcl:294 tcl/bin/halconfig.tcl:103 tcl/bin/halconfig.tcl:684 -#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:260 -#: tcl/bin/pickconfig.tcl:369 tcl/mini.tcl:1457 tcl/mini.tcl:2938 -#: tcl/mini.tcl:3110 tcl/tklinuxcnc.tcl:162 tcl/tklinuxcnc.tcl:213 -#: tcl/tklinuxcnc.tcl:420 tcl/tklinuxcnc.tcl:1339 tcl/tklinuxcnc.tcl:1408 -#: tcl/tklinuxcnc.tcl:1439 tcl/tklinuxcnc.tcl:1470 tcl/tklinuxcnc.tcl:2103 -#: src/emc/usr_intf/axis/scripts/axis.py:1404 -#: src/emc/usr_intf/axis/scripts/axis.py:1459 -#: src/emc/usr_intf/axis/scripts/axis.py:1646 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:720 -msgid "Cancel" -msgstr "中止" - -#: src/hal/utils/scope_vert.c:849 -msgid "Too many channels" +#: src/emc/rs274ngc/interp_convert.cc:2909 +#, c-format +msgid "BUG: restore to level %d !?" msgstr "" -#: src/hal/utils/scope_vert.c:850 -msgid "" -"You cannot add another channel.\n" -"\n" -"Either turn off one or more channels, or shorten\n" -"the record length to allow for more channels" +#: src/emc/rs274ngc/interp_convert.cc:2928 +#, c-format +msgid "M7x: restore_settings G20/G21 failed: '%s'" msgstr "" -#: src/hal/utils/scope_vert.c:1026 -msgid "Select Channel Source" +#: src/emc/rs274ngc/interp_convert.cc:2946 +#, c-format +msgid "M7x: restore_settings failed executing: '%s': %s" msgstr "" -#: src/hal/utils/scope_vert.c:1027 +#: src/emc/rs274ngc/interp_convert.cc:3005 #, c-format -msgid "" -"Select a pin, signal, or parameter\n" -"as the source for channel %d." +msgid "Failed to restore interp state on abort '%s': %s" msgstr "" -#: src/hal/utils/scope_vert.c:1059 -msgid "Pins" +#: src/emc/rs274ngc/interp_convert.cc:3069 +msgid "No valid P word with M62" msgstr "" -#: src/hal/utils/scope_vert.c:1060 -msgid "Signals" +#: src/emc/rs274ngc/interp_convert.cc:3072 +msgid "No valid P word with M63" msgstr "" -#: src/hal/utils/scope_vert.c:1061 -#, fuzzy -msgid "Parameters" -msgstr "パラムのファイルを読む" - -#: src/hal/utils/scope_trig.c:110 -#, c-format -msgid "Falling" +#: src/emc/rs274ngc/interp_convert.cc:3075 +msgid "No valid P word with M64" msgstr "" -#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:275 -#, c-format -msgid "Rising" +#: src/emc/rs274ngc/interp_convert.cc:3078 +msgid "No valid P word with M65" msgstr "" -#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:283 -msgid "" -"Source\n" -"None" +#: src/emc/rs274ngc/interp_convert.cc:3111 +msgid "invalid P-word with M66" msgstr "" -#: src/hal/utils/scope_trig.c:124 -#, c-format -msgid "" -"Source\n" -"Chan %2d" +#: src/emc/rs274ngc/interp_convert.cc:3126 +msgid "Cannot wait for digital input with cutter radius compensation on" msgstr "" -#: src/hal/utils/scope_trig.c:199 tcl/tklinuxcnc.tcl:827 -#: src/emc/usr_intf/touchy/touchy.glade:2469 -msgid "Auto" -msgstr "自動" +#: src/emc/rs274ngc/interp_convert.cc:3138 +msgid "Cannot wait for analog input with cutter radius compensation on" +msgstr "" -#: src/hal/utils/scope_trig.c:201 -msgid "Force" +#: src/emc/rs274ngc/interp_convert.cc:3152 +msgid "Invalid analog index with M67" msgstr "" -#: src/hal/utils/scope_trig.c:235 src/hal/utils/scope_trig.c:269 -msgid "Level" +#: src/emc/rs274ngc/interp_convert.cc:3157 +msgid "Invalid analog index with M68" msgstr "" -#: src/hal/utils/scope_trig.c:303 -msgid "Trigger Source" +#: src/emc/rs274ngc/interp_convert.cc:3188 +msgid "Need non-negative Q-word to specify tool number with M61" msgstr "" -#: src/hal/utils/scope_trig.c:304 -msgid "Select a channel to use for triggering." +#: src/emc/rs274ngc/interp_convert.cc:3258 +msgid "Q word with M19 requires a value > 0" msgstr "" -#: src/hal/utils/scope_trig.c:327 -msgid "Chan" +#: src/emc/rs274ngc/interp_convert.cc:3286 +msgid "Cannot restore context from invalid stack frame - missing M70/M73?" msgstr "" -#: src/hal/utils/scope_trig.c:328 -msgid "Source" +#: src/emc/rs274ngc/interp_convert.cc:3327 +#: src/emc/rs274ngc/interp_convert.cc:3344 +#: src/emc/rs274ngc/interp_convert.cc:3359 +#: src/emc/rs274ngc/interp_convert.cc:3373 +#: src/emc/rs274ngc/interp_convert.cc:3387 +msgid "Cannot enable overrides with cutter radius compensation on" msgstr "" -#: src/emc/motion/control.c:261 -msgid "Unexpected realtime delay: check dmesg for details." +#: src/emc/rs274ngc/interp_convert.cc:3334 +#: src/emc/rs274ngc/interp_convert.cc:3349 +#: src/emc/rs274ngc/interp_convert.cc:3364 +#: src/emc/rs274ngc/interp_convert.cc:3378 +#: src/emc/rs274ngc/interp_convert.cc:3392 +msgid "Cannot disable overrides with cutter radius compensation on" msgstr "" -#: src/emc/motion/control.c:263 +#: src/emc/rs274ngc/interp_convert.cc:3506 +#: src/emc/rs274ngc/interp_convert.cc:3507 +#: src/emc/rs274ngc/interp_convert.cc:3508 #, c-format -msgid "" -"\n" -"In recent history there were\n" -"%ld, %ld, %ld, %ld, and %ld\n" -"elapsed clocks between calls to the motion controller.\n" +msgid "Indexing axis %c can only be moved with G0" msgstr "" -#: src/emc/motion/control.c:268 +#: src/emc/rs274ngc/interp_convert.cc:3515 +#: src/emc/rs274ngc/interp_convert.cc:3517 +#: src/emc/rs274ngc/interp_convert.cc:3519 #, c-format -msgid "" -"This time, there were %ld which is so anomalously\n" -"large that it probably signifies a problem with your\n" -"realtime configuration. For the rest of this run of\n" -"EMC, this message will be suppressed.\n" -"\n" +msgid "Indexing axis %c can only be moved alone" msgstr "" -#: src/emc/motion/control.c:384 -msgid "G38.4 move finished without breaking contact." +#: src/emc/rs274ngc/interp_convert.cc:3621 +msgid "Cannot probe with feed per rev mode" msgstr "" -#: src/emc/motion/control.c:387 -msgid "G38.2 move finished without making contact." +#: src/emc/rs274ngc/interp_convert.cc:3669 +msgid "Cannot change retract mode with cutter radius compensation on" msgstr "" -#: src/emc/motion/control.c:401 -msgid "Probe tripped during non-probe MDI command." +#: src/emc/rs274ngc/interp_convert.cc:3703 +msgid "G10 L1 without offsets has no effect" msgstr "" -#: src/emc/motion/control.c:429 -msgid "Probe tripped during homing motion." +#: src/emc/rs274ngc/interp_convert.cc:3809 +msgid "Q number in G10 is not an integer" msgstr "" -#: src/emc/motion/control.c:433 -msgid "Probe tripped during a jog." +#: src/emc/rs274ngc/interp_convert.cc:3810 +msgid "Invalid tool orientation" msgstr "" -#: src/emc/motion/control.c:578 -#, c-format -msgid "fault %d during orient in progress" +#: src/emc/rs274ngc/interp_convert.cc:3933 +msgid "I J words not allowed with G10 L2" msgstr "" -#: src/emc/motion/control.c:718 -msgid "motion stopped by enable input" +#: src/emc/rs274ngc/interp_convert.cc:3954 +msgid "" +"Cannot change the active coordinate system with cutter radius compensation on" msgstr "" -#: src/emc/motion/control.c:741 -#, c-format -msgid "joint %d on limit switch error" +#: src/emc/rs274ngc/interp_convert.cc:3962 +msgid "R not allowed in G10 L20" msgstr "" -#: src/emc/motion/control.c:753 -#, c-format -msgid "joint %d amplifier fault" +#: src/emc/rs274ngc/interp_convert.cc:4550 +msgid "Spindle not turning in G33" msgstr "" -#: src/emc/motion/control.c:762 -#, c-format -msgid "joint %d following error" +#: src/emc/rs274ngc/interp_convert.cc:4560 +msgid "Spindle not turning in G33.1" msgstr "" -#: src/emc/motion/control.c:1444 -#, c-format -msgid "Exceeded positive soft limit on joint %d" +#: src/emc/rs274ngc/interp_convert.cc:4603 +msgid "BUG: An axis incorrectly moved along with an indexer" msgstr "" -#: src/emc/motion/control.c:1449 -#, c-format -msgid "Exceeded negative soft limit on joint %d" +#: src/emc/rs274ngc/interp_convert.cc:4616 +msgid "BUG: trying to index incorrect axis" msgstr "" -#: src/emc/motion/command.c:159 -#, c-format -msgid "Can't jog invalid joint number %d." +#: src/emc/rs274ngc/interp_convert.cc:4708 +msgid "Cannot use G76 threading cycle with cutter radius compensation on" msgstr "" -#: src/emc/motion/command.c:163 -#, c-format -msgid "Can't jog joint %d further past max hard limit." +#: src/emc/rs274ngc/interp_convert.cc:4711 +msgid "In G76, I must not be 0" msgstr "" -#: src/emc/motion/command.c:168 -#, c-format -msgid "Can't jog joint %d further past min hard limit." +#: src/emc/rs274ngc/interp_convert.cc:4713 +msgid "In G76, J must be greater than 0" msgstr "" -#: src/emc/motion/command.c:174 -#, c-format -msgid "Can't jog joint %d further past max soft limit." +#: src/emc/rs274ngc/interp_convert.cc:4715 +msgid "In G76, K must be greater than J" msgstr "" -#: src/emc/motion/command.c:179 -#, c-format -msgid "Can't jog joint %d further past min soft limit." +#: src/emc/rs274ngc/interp_convert.cc:4858 +msgid "" +"Length of cutter compensation entry move is not greater than the tool radius" msgstr "" -#: src/emc/motion/command.c:237 -#, c-format -msgid "%s move on line %d would exceed joint %d's positive limit" +#: src/emc/rs274ngc/interp_convert.cc:5077 +msgid "Zero degree inside corner is invalid for cutter compensation" msgstr "" -#: src/emc/motion/command.c:240 -#, c-format -msgid "%s move in MDI would exceed joint %d's positive limit" +#: src/emc/rs274ngc/interp_convert.cc:5115 +#: src/emc/rs274ngc/interp_convert.cc:5123 +msgid "" +"Arc to straight motion makes a corner the compensated tool can't fit in " +"without gouging" msgstr "" -#: src/emc/motion/command.c:247 -#, c-format -msgid "%s move on line %d would exceed joint %d's negative limit" +#: src/emc/rs274ngc/interp_convert.cc:5207 +msgid "Cannot change tools with cutter radius compensation on" msgstr "" -#: src/emc/motion/command.c:250 +#: src/emc/rs274ngc/interp_convert.cc:5328 +msgid "Cannot change tool offset with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_queue.cc:694 #, c-format -msgid "%s move in MDI would exceed joint %d's negative limit" +msgid "" +"BUG: cutter compensation has generated an invalid arc with mismatched radii " +"r1 %f r2 %f\n" msgstr "" -#: src/emc/motion/command.c:500 -msgid "all joints must be homed before going into coordinated mode" +#: src/emc/rs274ngc/interp_queue.cc:716 +msgid "BUG: Unsupported plane in cutter compensation" msgstr "" -#: src/emc/motion/command.c:521 -msgid "all joints must be homed before going into teleop mode" +#: src/emc/rs274ngc/interp_queue.cc:729 +msgid "" +"Straight traverse in concave corner cannot be reached by the tool without " +"gouging" msgstr "" -#: src/emc/motion/command.c:675 src/emc/motion/command.c:741 -#: src/emc/motion/command.c:814 -msgid "Can't jog joint in coordinated mode." +#: src/emc/rs274ngc/interp_queue.cc:757 +#, c-format +msgid "BUG: Unsupported plane [%d] in cutter compensation" msgstr "" -#: src/emc/motion/command.c:680 src/emc/motion/command.c:746 -#: src/emc/motion/command.c:819 -msgid "Can't jog joint when not enabled." +#: src/emc/rs274ngc/interp_queue.cc:771 +msgid "" +"Straight feed in concave corner cannot be reached by the tool without gouging" msgstr "" -#: src/emc/motion/command.c:685 src/emc/motion/command.c:824 -msgid "Can't jog any joints while homing." +#: src/emc/rs274ngc/interp_cycles.cc:630 +msgid "Cannot feed with zero feed rate" msgstr "" -#: src/emc/motion/command.c:751 -msgid "Can't jog any joint while homing." +#: src/emc/rs274ngc/interp_cycles.cc:631 +msgid "Cannot use inverse time feed with canned cycles" msgstr "" -#: src/emc/motion/command.c:881 -msgid "need to be enabled, in coord mode for linear move" +#: src/emc/rs274ngc/interp_cycles.cc:632 +msgid "Cannot use canned cycles with cutter compensation on" msgstr "" -#: src/emc/motion/command.c:891 -msgid "can't do linear move with limits exceeded" +#: src/emc/rs274ngc/interp_cycles.cc:829 +msgid "G17 canned cycle is not possible on a machine without Z axis" msgstr "" -#: src/emc/motion/command.c:910 -msgid "can't add linear move" +#: src/emc/rs274ngc/interp_cycles.cc:1015 +msgid "G17.1 canned cycle is not possible on a machine without W axis" msgstr "" -#: src/emc/motion/command.c:930 -msgid "need to be enabled, in coord mode for circular move" +#: src/emc/rs274ngc/interp_cycles.cc:1231 +msgid "G19 canned cycle is not possible on a machine without X axis" msgstr "" -#: src/emc/motion/command.c:940 -msgid "can't do circular move with limits exceeded" +#: src/emc/rs274ngc/interp_cycles.cc:1399 +msgid "G19.1 canned cycle is not possible on a machine without U axis" msgstr "" -#: src/emc/motion/command.c:958 -msgid "can't add circular move" +#: src/emc/rs274ngc/interp_cycles.cc:1624 +msgid "G18 canned cycle is not possible on a machine without Y axis" msgstr "" -#: src/emc/motion/command.c:1048 -msgid "MOTION: can't STEP while already executing" +#: src/emc/rs274ngc/interp_cycles.cc:1791 +msgid "G18.1 canned cycle is not possible on a machine without V axis" msgstr "" -#: src/emc/motion/command.c:1140 -msgid "can't enable motion, enable input is false" +#: src/emc/rs274ngc/interp_find.cc:170 +msgid "Cannot use polar coordinates with G53" msgstr "" -#: src/emc/motion/command.c:1213 -msgid "must be in joint mode to home" +#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 +#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 +#: src/emc/rs274ngc/interp_find.cc:347 +msgid "Cannot specify X or Y words with polar coordinate" msgstr "" -#: src/emc/motion/command.c:1224 src/emc/motion/command.c:1235 -msgid "homing sequence already in progress" +#: src/emc/rs274ngc/interp_find.cc:272 +msgid "Must specify angle in polar coordinate if at the origin" msgstr "" -#: src/emc/motion/command.c:1233 -msgid "homing already in progress" +#: src/emc/rs274ngc/interp_find.cc:338 +msgid "" +"Incremental motion with polar coordinates is indeterminate when at the origin" msgstr "" -#: src/emc/motion/command.c:1263 -msgid "must be in joint mode or disabled to unhome" +#: src/emc/rs274ngc/interp_find.cc:348 +msgid "G91 motion with polar coordinates is indeterminate when at the origin" msgstr "" -#: src/emc/motion/command.c:1275 src/emc/motion/command.c:1298 +#: src/emc/rs274ngc/interp_find.cc:720 #, c-format -msgid "Cannot unhome while homing, joint %d" +msgid "Requested tool %d not found in the tool table" msgstr "" -#: src/emc/motion/command.c:1279 src/emc/motion/command.c:1302 -#, c-format -msgid "Cannot unhome while moving, joint %d" +#: src/emc/rs274ngc/interp_internal.cc:161 +msgid "Cannot use polar coordinate on a machine lacking X or Y axes" msgstr "" -#: src/emc/motion/command.c:1307 -#, c-format -msgid "Cannot unhome inactive joint %d" +#: src/emc/rs274ngc/interp_internal.cc:162 +msgid "Cannot use polar coordinate except in G17 plane" msgstr "" -#: src/emc/motion/command.c:1311 -#, c-format -msgid "Cannot unhome invalid joint %d (max %d)" +#: src/emc/rs274ngc/interp_internal.cc:163 +msgid "Cannot specify both polar coordinate and X word" msgstr "" -#: src/emc/motion/command.c:1338 -msgid "need to be enabled, in coord mode for probe move" +#: src/emc/rs274ngc/interp_internal.cc:164 +msgid "Cannot specify both polar coordinate and Y word" msgstr "" -#: src/emc/motion/command.c:1348 -msgid "can't do probe move with limits exceeded" +#: src/emc/rs274ngc/interp_internal.cc:185 +#: src/emc/rs274ngc/interp_internal.cc:199 +#: src/emc/rs274ngc/interp_internal.cc:214 +msgid "Polar coordinates can only be used for motion" msgstr "" -#: src/emc/motion/command.c:1362 -msgid "Probe is already clear when starting G38.4 or G38.5 move" +#: src/emc/rs274ngc/interp_read.cc:1150 src/emc/rs274ngc/interp_read.cc:1154 +#, c-format +msgid "Bad character '\\%03o' used" msgstr "" -#: src/emc/motion/command.c:1364 -msgid "Probe is already tripped when starting G38.2 or G38.3 move" +#: src/emc/rs274ngc/interp_read.cc:1154 +#, c-format +msgid "Bad character '%c' used" msgstr "" -#: src/emc/motion/command.c:1376 -msgid "can't add probe move" +#: src/emc/rs274ngc/interp_read.cc:1678 +msgid "Left bracket missing after 'while'" msgstr "" -#: src/emc/motion/command.c:1400 -msgid "need to be enabled, in coord mode for rigid tap move" +#: src/emc/rs274ngc/interp_read.cc:1693 +msgid "Left bracket missing after 'repeat'" msgstr "" -#: src/emc/motion/command.c:1410 -msgid "can't do rigid tap move with limits exceeded" +#: src/emc/rs274ngc/interp_read.cc:1708 +msgid "Left bracket missing after 'if'" msgstr "" -#: src/emc/motion/command.c:1421 -msgid "can't add rigid tap move" +#: src/emc/rs274ngc/interp_read.cc:1723 +msgid "Left bracket missing after 'elseif'" msgstr "" -#: src/emc/motion/command.c:1435 -msgid "need to be enabled, in teleop mode for teleop move" +#: src/emc/rs274ngc/interp_read.cc:1926 +msgid "Cannot read current position with cutter radius compensation on" msgstr "" -#: src/emc/motion/command.c:1605 -#, c-format -msgid "joint %d: too many compensation entries" +#: src/emc/rs274ngc/interp_read.cc:1941 +#, fuzzy +msgid "Expected # reading parameter" +msgstr "パラムのファイルを読む" + +#: src/emc/rs274ngc/interp_read.cc:1943 +msgid "Expected ] reading bracketed parameter" msgstr "" -#: src/emc/motion/command.c:1611 +#: src/emc/rs274ngc/interp_read.cc:2615 #, c-format -msgid "joint %d: compensation values must increase" +msgid "bad number format (conversion failed) parsing '%s'" msgstr "" -#: src/emc/motion/command.c:1640 +#: src/emc/rs274ngc/interp_read.cc:2616 #, c-format -msgid "unrecognized command %d" +msgid "bad number format (trailing characters) parsing '%s'" msgstr "" -#: src/emc/motion/motion.c:185 -msgid "MOTION: hal_init() failed\n" +#: src/emc/rs274ngc/interp_read.cc:2706 +msgid "Calculation resulted in 'not a number'" msgstr "" -#: src/emc/motion/motion.c:190 -#, c-format -msgid "MOTION: num_joints is %d, must be between 1 and %d\n" +#: src/emc/rs274ngc/interp_read.cc:2708 +msgid "Calculation resulted in 'infinity'" msgstr "" -#: src/emc/motion/motion.c:197 +#: src/emc/rs274ngc/interp_read.cc:3001 #, c-format -msgid "MOTION: num_dio is %d, must be between 1 and %d\n" +msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" msgstr "" -#: src/emc/motion/motion.c:204 -#, c-format -msgid "MOTION: num_aio is %d, must be between 1 and %d\n" +#: src/emc/rs274ngc/interp_read.cc:3113 +msgid "Multiple U words on one line" msgstr "" -#: src/emc/motion/motion.c:212 -msgid "MOTION: init_hal_io() failed\n" +#: src/emc/rs274ngc/interp_read.cc:3129 +msgid "Multiple V words on one line" msgstr "" -#: src/emc/motion/motion.c:221 -msgid "MOTION: init_comm_buffers() failed\n" +#: src/emc/rs274ngc/interp_read.cc:3145 +msgid "Multiple W words on one line" msgstr "" -#: src/emc/motion/motion.c:229 -msgid "MOTION: init_threads() failed\n" +#: src/emc/rs274ngc/interp_o_word.cc:97 +#, c-format +msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" msgstr "" -#: src/emc/motion/motion.c:254 +#: src/emc/rs274ngc/interp_o_word.cc:722 #, c-format -msgid "MOTION: hal_stop_threads() failed, returned %d\n" +msgid "%d: not in a subroutine definition: '%s'" msgstr "" -#: src/emc/motion/motion.c:260 +#: src/emc/rs274ngc/interp_o_word.cc:759 src/emc/rs274ngc/interp_o_word.cc:809 #, c-format -msgid "MOTION: rtapi_shmem_delete() failed, returned %d\n" +msgid "%d: duplicate O-word label: '%s' - defined in line %d" msgstr "" -#: src/emc/motion/motion.c:266 +#: src/emc/rs274ngc/interp_o_word.cc:862 #, c-format -msgid "MOTION: hal_exit() failed, returned %d\n" +msgid "%d: duplicate O-word label - already defined in line %d: '%s'" msgstr "" -#: src/emc/motion/motion.c:289 -msgid "MOTION: emcmot_hal_data malloc failed\n" +#: src/emc/rs274ngc/interp_o_word.cc:886 src/emc/rs274ngc/interp_o_word.cc:944 +#: src/emc/rs274ngc/interp_o_word.cc:978 src/emc/rs274ngc/interp_o_word.cc:996 +#: src/emc/rs274ngc/interp_o_word.cc:1013 +#: src/emc/rs274ngc/interp_o_word.cc:1038 +#, c-format +msgid "%d: undefined O-word label: '%s'" msgstr "" -#: src/emc/motion/motion.c:597 +#: src/emc/rs274ngc/interp_o_word.cc:889 src/emc/rs274ngc/interp_o_word.cc:947 #, c-format -msgid "MOTION: joint %d pin/param export failed\n" +msgid "%d: no matching 'if' label: '%s' (found '%s' in line %d)" msgstr "" -#: src/emc/motion/homing.c:80 src/emc/motion/homing.c:748 +#: src/emc/rs274ngc/interp_o_word.cc:981 #, c-format -msgid "hit limit in home state %d" +msgid "%d: no matching label: '%s' (found '%s' in line %d): '%s'" msgstr "" -#: src/emc/motion/homing.c:90 +#: src/emc/rs274ngc/interp_o_word.cc:999 src/emc/rs274ngc/interp_o_word.cc:1016 #, c-format -msgid "end of move in home state %d" +msgid "%d: no matching while/do label: '%s' (found '%s' in line %d)" msgstr "" -#: src/emc/motion/homing.c:185 +#: src/emc/rs274ngc/interp_o_word.cc:1042 #, c-format -msgid "unknown state '%d' during homing sequence" +msgid "%d: no matching label: '%s' (found '%s' in line %d)" msgstr "" -#: src/emc/motion/homing.c:246 -msgid "Cannot home while shared home switch is closed" +#: src/emc/rs274ngc/interp_namedparams.cc:166 +#, fuzzy, c-format +msgid "Named parameter #<%s> not defined" +msgstr "パラムのファイルを読む" + +#: src/emc/rs274ngc/interp_namedparams.cc:196 +#, fuzzy, c-format +msgid "cant open ini file '%s'" +msgstr "開けません" + +#: src/emc/rs274ngc/interp_namedparams.cc:213 +#, fuzzy, c-format +msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" +msgstr "パラムのファイルを読む" + +#: src/emc/rs274ngc/interp_namedparams.cc:237 +#, c-format +msgid "fetch_hal_param: hal_init(%s): %d" msgstr "" -#: src/emc/motion/homing.c:290 -msgid "" -"invalid homing config: non-zero LATCH_VEL needs either SEARCH_VEL or " -"USE_INDEX" +#: src/emc/rs274ngc/interp_namedparams.cc:238 +#, c-format +msgid "fetch_hal_param: hal_ready(): %d" msgstr "" -#: src/emc/motion/homing.c:299 -msgid "invalid homing config: non-zero SEARCH_VEL needs LATCH_VEL" +#: src/emc/rs274ngc/interp_namedparams.cc:419 +#, c-format +msgid "Internal error: Could not assign #<%s>" msgstr "" -#: src/emc/motion/homing.c:447 -msgid "Home switch inactive before start of backoff move" +#: src/emc/rs274ngc/interp_namedparams.cc:427 +#, c-format +msgid "Cannot assign to read-only parameter #<%s>" msgstr "" -#: src/emc/motion/homing.c:495 -msgid "Home switch active before start of latch move" +#: src/emc/rs274ngc/interp_namedparams.cc:731 +#, c-format +msgid "BUG: lookup_named_param(%s): unhandled index=%fn" msgstr "" -#: src/emc/motion/homing.c:551 -msgid "Home switch inactive before start of latch move" +#: src/emc/rs274ngc/rs274ngc_pre.cc:1407 src/emc/rs274ngc/rs274ngc_pre.cc:1482 +msgid "Queue is not empty after tool change" msgstr "" -#: src/emc/motion/homing.c:797 +#: src/emc/rs274ngc/rs274ngc_pre.cc:1786 #, c-format -msgid "unknown state '%d' during homing" +msgid "Unable to open parameter file: '%s'" msgstr "" -#: tcl/bin/emccalib.tcl:80 -msgid "LinuxCNC Servo Axis Calibration" +#: src/emc/rs274ngc/rs274ngc_return.hh:19 +msgid "A file is already open" msgstr "" -#: tcl/bin/emccalib.tcl:90 -msgid "Save To File" +#: src/emc/rs274ngc/rs274ngc_return.hh:21 +msgid "All axes missing with g52 or g92" msgstr "" -#: tcl/bin/emccalib.tcl:106 tcl/bin/genedit.tcl:77 tcl/bin/halconfig.tcl:151 -#: tcl/bin/halshow.tcl:85 tcl/mini.tcl:2516 tcl/tklinuxcnc.tcl:719 -#: tcl/ngcgui.tcl:549 -msgid "File" -msgstr "ファイル" +#: src/emc/rs274ngc/rs274ngc_return.hh:22 +msgid "All axes missing with motion code" +msgstr "" -#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:231 tcl/bin/halconfig.tcl:153 -#: tcl/mini.tcl:3558 src/emc/usr_intf/touchy/touchy.glade:2420 -msgid "Refresh" +#: src/emc/rs274ngc/rs274ngc_return.hh:23 +msgid "Arc radius too small to reach end point" msgstr "" -#: tcl/bin/emccalib.tcl:110 tcl/bin/genedit.tcl:82 tcl/bin/halconfig.tcl:155 -#: tcl/mini.tcl:2535 -msgid "Save" +#: src/emc/rs274ngc/rs274ngc_return.hh:24 +msgid "Argument to acos out of range" msgstr "" -#: tcl/bin/emccalib.tcl:159 tcl/bin/halconfig.tcl:623 -#, tcl-format -msgid "Tune %d" +#: src/emc/rs274ngc/rs274ngc_return.hh:25 +msgid "Argument to asin out of range" msgstr "" -#: tcl/bin/emccalib.tcl:160 tcl/bin/halconfig.tcl:628 -msgid "INI Name" +#: src/emc/rs274ngc/rs274ngc_return.hh:26 +msgid "Attempt to divide by zero" msgstr "" -#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:629 -msgid "HAL's Value" +#: src/emc/rs274ngc/rs274ngc_return.hh:27 +msgid "Attempt to raise negative to non integer power" msgstr "" -#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:631 -#, fuzzy -msgid "Next Value" -msgstr "テキストファイル" +#: src/emc/rs274ngc/rs274ngc_return.hh:28 +msgid "Bad format unsigned integer" +msgstr "" -#: tcl/bin/emccalib.tcl:225 tcl/bin/halconfig.tcl:680 -#: tcl/bin/halconfig.tcl:731 -#, fuzzy -msgid "Test" -msgstr "リーセット" +#: src/emc/rs274ngc/rs274ngc_return.hh:29 +msgid "Bad number format" +msgstr "" -#: tcl/bin/emccalib.tcl:358 tcl/bin/halconfig.tcl:883 -#, tcl-format -msgid "" -"The HAL parameter \n" -" %s \n" -" has changed. \n" -" Really quit?" +#: src/emc/rs274ngc/rs274ngc_return.hh:30 +msgid "Bug bad g code modal group 0" msgstr "" -#: tcl/bin/emccalib.tcl:383 tcl/bin/halconfig.tcl:1170 -msgid "" -"Not permitted to save here.\n" -"\n" -" You need to copy a configuration to your home directory and work there." +#: src/emc/rs274ngc/rs274ngc_return.hh:31 +msgid "Bug code not g0 or g1" msgstr "" -#: tcl/bin/emccalib.tcl:457 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 -#: tcl/bin/pickconfig.tcl:544 tcl/bin/pickconfig.tcl:555 -#: tcl/scripts/Set_Coordinates.tcl:205 tcl/scripts/Set_Coordinates.tcl:228 -#, fuzzy, tcl-format -msgid "can't save %s" -msgstr "開けません" +#: src/emc/rs274ngc/rs274ngc_return.hh:32 +msgid "Bug code not g17 g18 or g19" +msgstr "" -#: tcl/bin/emcdebug.tcl:166 tcl/bin/emcdebug.tcl:177 -msgid "LinuxCNC Debug" +#: src/emc/rs274ngc/rs274ngc_return.hh:33 +msgid "Bug code not g20 or g21" msgstr "" -#: tcl/bin/emcdebug.tcl:185 -msgid "Invalid INI file entries" +#: src/emc/rs274ngc/rs274ngc_return.hh:34 +msgid "Bug code not g28 or g30" msgstr "" -#: tcl/bin/emcdebug.tcl:186 -msgid "Configuration information" +#: src/emc/rs274ngc/rs274ngc_return.hh:35 +msgid "Bug code not g2 or g3" msgstr "" -#: tcl/bin/emcdebug.tcl:187 -msgid "Use of defaults" +#: src/emc/rs274ngc/rs274ngc_return.hh:37 +msgid "Bug code not g4 g10 g28 g30 g52 g53 or g92 series" msgstr "" -#: tcl/bin/emcdebug.tcl:188 -msgid "Version information" +#: src/emc/rs274ngc/rs274ngc_return.hh:38 +msgid "Bug code not g61 g61.1 or g64" msgstr "" -#: tcl/bin/emcdebug.tcl:189 -#, fuzzy -msgid "Command issuing" -msgstr "命令番:" +#: src/emc/rs274ngc/rs274ngc_return.hh:39 +msgid "Bug code not g90 or g91" +msgstr "" -#: tcl/bin/emcdebug.tcl:190 -msgid "IO points" +#: src/emc/rs274ngc/rs274ngc_return.hh:40 +msgid "Bug code not g98 or g99" msgstr "" -#: tcl/bin/emcdebug.tcl:191 -msgid "NML" +#: src/emc/rs274ngc/rs274ngc_return.hh:41 +msgid "Bug code not in g52 or g92 series" msgstr "" -#: tcl/bin/emcdebug.tcl:192 -#, fuzzy -msgid "Motion time" -msgstr "動き" +#: src/emc/rs274ngc/rs274ngc_return.hh:42 +msgid "Bug code not in range g54 to g593" +msgstr "" -#: tcl/bin/emcdebug.tcl:193 src/emc/usr_intf/axis/scripts/debuglevel.py:42 -msgid "Interpreter" +#: src/emc/rs274ngc/rs274ngc_return.hh:43 +msgid "Bug code not m0 m1 m2 m30 m60" msgstr "" -#: tcl/bin/emcdebug.tcl:194 -msgid "RCS" +#: src/emc/rs274ngc/rs274ngc_return.hh:44 +msgid "Bug distance mode not g90 or g91" msgstr "" -#: tcl/bin/emcdebug.tcl:195 -msgid "Trajectory level" +#: src/emc/rs274ngc/rs274ngc_return.hh:45 +msgid "Bug function should not have been called" msgstr "" -#: tcl/bin/emcdebug.tcl:196 -msgid "Interpreter list" +#: src/emc/rs274ngc/rs274ngc_return.hh:46 +msgid "Bug in tool radius comp" msgstr "" -#: tcl/bin/genedit.tcl:78 tcl/mini.tcl:2533 -msgid "New" +#: src/emc/rs274ngc/rs274ngc_return.hh:47 +msgid "Bug plane not xy yz or xz" msgstr "" -#: tcl/bin/genedit.tcl:80 tcl/mini.tcl:1667 tcl/mini.tcl:2534 -#: tcl/tklinuxcnc.tcl:720 tcl/tklinuxcnc.tcl:1657 -msgid "Open..." -msgstr "開く..." +#: src/emc/rs274ngc/rs274ngc_return.hh:48 +msgid "Bug side not right or left" +msgstr "" -#: tcl/bin/genedit.tcl:84 tcl/mini.tcl:2536 -msgid "Save As..." +#: src/emc/rs274ngc/rs274ngc_return.hh:49 +msgid "Bug unknown motion code" msgstr "" -#: tcl/bin/genedit.tcl:87 tcl/bin/halconfig.tcl:165 tcl/bin/halshow.tcl:92 -#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1243 -#: tcl/ngcgui.tcl:3680 -msgid "Exit" -msgstr "出る" +#: src/emc/rs274ngc/rs274ngc_return.hh:50 +msgid "Bug unknown operation" +msgstr "" -#: tcl/bin/genedit.tcl:91 tcl/mini.tcl:2517 -#, fuzzy -msgid "Edit" -msgstr "出る" +#: src/emc/rs274ngc/rs274ngc_return.hh:51 +msgid "Cannot change axis offsets with cutter radius comp" +msgstr "" -#: tcl/bin/genedit.tcl:92 tcl/mini.tcl:2543 -msgid "Cut" +#: src/emc/rs274ngc/rs274ngc_return.hh:52 +msgid "Cannot create backup file" msgstr "" -#: tcl/bin/genedit.tcl:94 tcl/mini.tcl:2544 -msgid "Copy" +#: src/emc/rs274ngc/rs274ngc_return.hh:53 +msgid "Cannot do g1 with zero feed rate" msgstr "" -#: tcl/bin/genedit.tcl:96 tcl/mini.tcl:2545 -#, fuzzy -msgid "Paste" -msgstr "間断" +#: src/emc/rs274ngc/rs274ngc_return.hh:54 +msgid "Cannot do zero repeats of cycle" +msgstr "" -#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:68 -msgid "Select All" +#: src/emc/rs274ngc/rs274ngc_return.hh:55 +msgid "Cannot make arc with zero feed rate" msgstr "" -#: tcl/bin/genedit.tcl:104 tcl/bin/halconfig.tcl:192 tcl/mini.tcl:919 -#: tcl/mini.tcl:2519 tcl/tklinuxcnc.tcl:790 -msgid "Help" -msgstr "助け" +#: src/emc/rs274ngc/rs274ngc_return.hh:56 +msgid "Cannot open backup file" +msgstr "" -#: tcl/bin/genedit.tcl:105 tcl/mini.tcl:1011 tcl/mini.tcl:2559 -#: tcl/tklinuxcnc.tcl:796 -msgid "About..." -msgstr "これについて..." - -#: tcl/bin/genedit.tcl:130 -msgid "Save and Reload" +#: src/emc/rs274ngc/rs274ngc_return.hh:57 +msgid "Cannot open variable file" msgstr "" -#: tcl/bin/genedit.tcl:133 tcl/mini.tcl:2550 -#, fuzzy -msgid "Find..." -msgstr "フォント..." - -#: tcl/bin/genedit.tcl:135 tcl/mini.tcl:2552 -msgid "Renumber File..." +#: src/emc/rs274ngc/rs274ngc_return.hh:58 +msgid "Cannot probe with cutter radius comp on" msgstr "" -#: tcl/bin/genedit.tcl:140 tcl/mini.tcl:917 tcl/mini.tcl:2518 -#: tcl/tklinuxcnc.tcl:746 -msgid "Settings" -msgstr "撰" - -#: tcl/bin/genedit.tcl:141 tcl/mini.tcl:2554 -msgid "No Numbering" +#: src/emc/rs274ngc/rs274ngc_return.hh:59 +msgid "Cannot probe with zero feed rate" msgstr "" -#: tcl/bin/genedit.tcl:144 tcl/mini.tcl:2556 -msgid "Line Numbering..." +#: src/emc/rs274ngc/rs274ngc_return.hh:60 +msgid "Cannot put a b in canned cycle" msgstr "" -#: tcl/bin/genedit.tcl:150 tcl/tklinuxcnc.tcl:768 -msgid "Scripts" -msgstr "スクリプト" - -#: tcl/bin/genedit.tcl:177 -#, fuzzy -msgid "About TkEditor" -msgstr "TkEmcについて" - -#: tcl/bin/genedit.tcl:179 -msgid "" -"TkEditor\n" -"\n" -"Simple Tcl/Tk Text Editor\n" -"\n" -"GPL Version 2" +#: src/emc/rs274ngc/rs274ngc_return.hh:61 +msgid "Cannot put a c in canned cycle" msgstr "" -#: tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 tcl/mini.tcl:1775 -#: tcl/tklinuxcnc.tcl:451 src/emc/task/emctaskmain.cc:2072 -#, fuzzy, c-format, tcl-format -msgid "can't open %s" -msgstr "開けません" - -#: tcl/bin/genedit.tcl:267 tcl/mini.tcl:3090 -msgid "Find" +#: src/emc/rs274ngc/rs274ngc_return.hh:62 +msgid "Cannot put an a in canned cycle" msgstr "" -#: tcl/bin/genedit.tcl:270 -msgid "Find:" +#: src/emc/rs274ngc/rs274ngc_return.hh:63 +msgid "Cannot turn cutter radius comp on when on" msgstr "" -#: tcl/bin/genedit.tcl:276 -msgid "Replace:" +#: src/emc/rs274ngc/rs274ngc_return.hh:64 +msgid "Cannot use axis values with g80" msgstr "" -#: tcl/bin/genedit.tcl:282 -msgid "Find All" +#: src/emc/rs274ngc/rs274ngc_return.hh:65 +msgid "Cannot use axis values without a g code that uses them" msgstr "" -#: tcl/bin/genedit.tcl:285 tcl/mini.tcl:3113 -msgid "Replace All" +#: src/emc/rs274ngc/rs274ngc_return.hh:66 +msgid "Cannot use g28 or g30 with cutter radius comp" msgstr "" -#: tcl/bin/genedit.tcl:288 -msgid "Skip This" +#: src/emc/rs274ngc/rs274ngc_return.hh:67 +msgid "Cannot use g53 incremental" msgstr "" -#: tcl/bin/genedit.tcl:291 -msgid "Replace This" +#: src/emc/rs274ngc/rs274ngc_return.hh:68 +msgid "Cannot use g53 with cutter radius comp" msgstr "" -#: tcl/bin/genedit.tcl:297 -msgid "Clear" +#: src/emc/rs274ngc/rs274ngc_return.hh:69 +msgid "Cannot use two g codes that both use axis values" msgstr "" -#: tcl/bin/genedit.tcl:422 tcl/mini.tcl:2640 -msgid "Set Line Numbering" +#: src/emc/rs274ngc/rs274ngc_return.hh:70 +#, fuzzy +msgid "Command too long" +msgstr "命令番:" + +#: src/emc/rs274ngc/rs274ngc_return.hh:71 +msgid "Current point same as end point of arc" msgstr "" -#: tcl/bin/genedit.tcl:424 tcl/mini.tcl:2644 -msgid "Increment" +#: src/emc/rs274ngc/rs274ngc_return.hh:72 +msgid "Dwell time missing with g4" msgstr "" -#: tcl/bin/genedit.tcl:426 tcl/mini.tcl:2646 -msgid "One" +#: src/emc/rs274ngc/rs274ngc_return.hh:73 +msgid "Dwell time p word missing with g82" msgstr "" -#: tcl/bin/genedit.tcl:429 tcl/mini.tcl:2648 -msgid "Two" +#: src/emc/rs274ngc/rs274ngc_return.hh:74 +msgid "Dwell time p word missing with g86" msgstr "" -#: tcl/bin/genedit.tcl:432 tcl/mini.tcl:2650 -#, fuzzy -msgid "Five" -msgstr "ファイル" +#: src/emc/rs274ngc/rs274ngc_return.hh:75 +msgid "Dwell time p word missing with g88" +msgstr "" -#: tcl/bin/genedit.tcl:435 tcl/mini.tcl:2652 -msgid "Ten" +#: src/emc/rs274ngc/rs274ngc_return.hh:76 +msgid "Dwell time p word missing with g89" msgstr "" -#: tcl/bin/genedit.tcl:439 tcl/mini.tcl:2654 -msgid "Space" +#: src/emc/rs274ngc/rs274ngc_return.hh:77 +msgid "Equal sign missing in parameter setting" msgstr "" -#: tcl/bin/genedit.tcl:441 tcl/mini.tcl:2656 -msgid "Single Space" +#: src/emc/rs274ngc/rs274ngc_return.hh:78 +msgid "F word missing with inverse time arc move" msgstr "" -#: tcl/bin/genedit.tcl:444 tcl/mini.tcl:2658 -msgid "Double Space" +#: src/emc/rs274ngc/rs274ngc_return.hh:79 +msgid "F word missing with inverse time g1 move" msgstr "" -#: tcl/bin/genedit.tcl:447 tcl/mini.tcl:2660 -msgid "Tab Space" +#: src/emc/rs274ngc/rs274ngc_return.hh:80 +msgid "File ended with no percent sign" msgstr "" -#: tcl/bin/genedit.tcl:453 -msgid "Next Number:" +#: src/emc/rs274ngc/rs274ngc_return.hh:81 +msgid "File ended with no percent sign or program end" msgstr "" -#: tcl/bin/genedit.tcl:474 tcl/mini.tcl:2668 -#, fuzzy -msgid "Renumber" -msgstr "つづく" +#: src/emc/rs274ngc/rs274ngc_return.hh:82 +msgid "File name too long" +msgstr "" -#: tcl/bin/halconfig.tcl:88 tcl/bin/halshow.tcl:33 -msgid "HAL Configuration" +#: src/emc/rs274ngc/rs274ngc_return.hh:83 +msgid "G code out of range" msgstr "" -#: tcl/bin/halconfig.tcl:103 -msgid "Would you like to save your configuration before you exit?" +#: src/emc/rs274ngc/rs274ngc_return.hh:84 +msgid "I word given for arc in yz plane" msgstr "" -#: tcl/bin/halconfig.tcl:103 -msgid "Save All" +#: src/emc/rs274ngc/rs274ngc_return.hh:85 +msgid "I word missing with g87" msgstr "" -#: tcl/bin/halconfig.tcl:103 -msgid "Save Tune" +#: src/emc/rs274ngc/rs274ngc_return.hh:86 +msgid "J word given for arc in xz plane" msgstr "" -#: tcl/bin/halconfig.tcl:103 -msgid "Save as Netlist" +#: src/emc/rs274ngc/rs274ngc_return.hh:87 +msgid "J word missing with g87" msgstr "" -#: tcl/bin/halconfig.tcl:103 -msgid "Don't Save" +#: src/emc/rs274ngc/rs274ngc_return.hh:88 +msgid "K word given for arc in xy plane" msgstr "" -#: tcl/bin/halconfig.tcl:132 -msgid "Show" +#: src/emc/rs274ngc/rs274ngc_return.hh:89 +msgid "K word missing with g87" msgstr "" -#: tcl/bin/halconfig.tcl:133 -msgid "Watch" +#: src/emc/rs274ngc/rs274ngc_return.hh:90 +msgid "Left bracket missing after slash with atan" msgstr "" -#: tcl/bin/halconfig.tcl:134 -msgid "Modify" +#: src/emc/rs274ngc/rs274ngc_return.hh:91 +msgid "Left bracket missing after unary operation name" msgstr "" -#: tcl/bin/halconfig.tcl:157 -msgid "Save INI Tuning" +#: src/emc/rs274ngc/rs274ngc_return.hh:92 +#, c-format +msgid "M code greater than 199: M%d" msgstr "" -#: tcl/bin/halconfig.tcl:159 -msgid "Save HAL Ini" +#: src/emc/rs274ngc/rs274ngc_return.hh:93 +msgid "Mixed radius ijk format for arc" msgstr "" -#: tcl/bin/halconfig.tcl:161 -msgid "Save HAL Net" +#: src/emc/rs274ngc/rs274ngc_return.hh:94 +msgid "Multiple a words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:163 -msgid "Save and Exit" +#: src/emc/rs274ngc/rs274ngc_return.hh:95 +msgid "Multiple b words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:168 tcl/mini.tcl:916 tcl/tklinuxcnc.tcl:739 -msgid "View" -msgstr "見方" +#: src/emc/rs274ngc/rs274ngc_return.hh:96 +msgid "Multiple c words on one line" +msgstr "" -#: tcl/bin/halconfig.tcl:170 tcl/bin/halshow.tcl:104 -msgid "Expand Tree" +#: src/emc/rs274ngc/rs274ngc_return.hh:97 +msgid "Multiple d words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:172 tcl/bin/halshow.tcl:106 -msgid "Collapse Tree" +#: src/emc/rs274ngc/rs274ngc_return.hh:98 +msgid "Multiple f words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:175 tcl/bin/halshow.tcl:109 -msgid "Expand Pins" +#: src/emc/rs274ngc/rs274ngc_return.hh:99 +msgid "Multiple h words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:177 tcl/bin/halshow.tcl:111 -#, fuzzy -msgid "Expand Parameters" -msgstr "パラムのファイルを読む" +#: src/emc/rs274ngc/rs274ngc_return.hh:100 +msgid "Multiple i words on one line" +msgstr "" -#: tcl/bin/halconfig.tcl:179 tcl/bin/halshow.tcl:113 -msgid "Expand Signals" +#: src/emc/rs274ngc/rs274ngc_return.hh:101 +msgid "Multiple j words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:182 tcl/bin/halshow.tcl:116 -msgid "Erase Watch" +#: src/emc/rs274ngc/rs274ngc_return.hh:102 +msgid "Multiple k words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:194 tcl/mini.tcl:840 tcl/mini.tcl:2785 -#, fuzzy -msgid "About" -msgstr "これについて..." +#: src/emc/rs274ngc/rs274ngc_return.hh:103 +msgid "Multiple l words on one line" +msgstr "" -#: tcl/bin/halconfig.tcl:196 -#, fuzzy -msgid "Main" -msgstr "手動" +#: src/emc/rs274ngc/rs274ngc_return.hh:104 +msgid "Multiple p words on one line" +msgstr "" -#: tcl/bin/halconfig.tcl:476 -msgid "Enter HAL command :" +#: src/emc/rs274ngc/rs274ngc_return.hh:105 +msgid "Multiple q words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:479 tcl/bin/halconfig.tcl:528 tcl/bin/halshow.tcl:354 -msgid "Execute" +#: src/emc/rs274ngc/rs274ngc_return.hh:106 +msgid "Multiple r words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:943 tcl/bin/halshow.tcl:405 -msgid "Select a node to show." +#: src/emc/rs274ngc/rs274ngc_return.hh:107 +msgid "Multiple s words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:968 tcl/bin/halshow.tcl:429 -msgid "<-- Select a Leaf. Click on its name." +#: src/emc/rs274ngc/rs274ngc_return.hh:108 +msgid "Multiple t words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:1085 tcl/bin/halconfig.tcl:1095 -#: tcl/bin/halconfig.tcl:1102 tcl/bin/halconfig.tcl:1109 -#: tcl/bin/halconfig.tcl:1116 -#, tcl-format -msgid "Click a highlighted entry where %s should go." +#: src/emc/rs274ngc/rs274ngc_return.hh:109 +msgid "Multiple x words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:1092 -msgid "Nothing to be done for parameters here. Try the tuning page" +#: src/emc/rs274ngc/rs274ngc_return.hh:110 +msgid "Multiple y words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:1124 -#, tcl-format -msgid "%s is not a leaf, try again" +#: src/emc/rs274ngc/rs274ngc_return.hh:111 +msgid "Multiple z words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:1281 -msgid "" -"Copyright Raymond E Henry. 2006\n" -"License: GPL Version 2\n" -"\n" -"Halconfig is an LinuxCNC configuration tool. It requires that you have " -"started an instance of linuxcnc.\n" -"\n" -"This script carries no warranty or liability for its use to the extent " -"allowed by law." +#: src/emc/rs274ngc/rs274ngc_return.hh:112 +msgid "Must use g0 or g1 with g53" msgstr "" -#: tcl/bin/halshow.tcl:69 -msgid " SHOW " +#: src/emc/rs274ngc/rs274ngc_return.hh:113 +msgid "Negative argument to sqrt" msgstr "" -#: tcl/bin/halshow.tcl:70 -msgid " WATCH " +#: src/emc/rs274ngc/rs274ngc_return.hh:114 +msgid "Negative d word tool radius index used" msgstr "" -#: tcl/bin/halshow.tcl:90 -msgid "Load Watch List" +#: src/emc/rs274ngc/rs274ngc_return.hh:115 +msgid "Negative f word used" msgstr "" -#: tcl/bin/halshow.tcl:102 -#, fuzzy -msgid "Tree View" -msgstr "見方" - -#: tcl/bin/halshow.tcl:349 -msgid "Test HAL command :" +#: src/emc/rs274ngc/rs274ngc_return.hh:116 +msgid "Negative g code used" msgstr "" -#: tcl/bin/halshow.tcl:544 -msgid "Load a watch list" +#: src/emc/rs274ngc/rs274ngc_return.hh:117 +msgid "Negative h word used" msgstr "" -#: tcl/bin/halshow.tcl:567 -msgid "Save current watch list" +#: src/emc/rs274ngc/rs274ngc_return.hh:118 +msgid "Negative l word used" msgstr "" -#: tcl/bin/halshow.tcl:581 -msgid "Commands may be tested here but they will NOT be saved" +#: src/emc/rs274ngc/rs274ngc_return.hh:119 +msgid "Negative m code used" msgstr "" -#: tcl/bin/pickconfig.tcl:50 -msgid "" -"Can't find the bwidget 1.7 package. There is a debian bwidget package; " -"install \n" -"it with sudo apt-get install bwidget." +#: src/emc/rs274ngc/rs274ngc_return.hh:120 +msgid "Negative or zero q value used" msgstr "" -#: tcl/bin/pickconfig.tcl:178 -msgid "No details available." +#: src/emc/rs274ngc/rs274ngc_return.hh:121 +msgid "Negative p word used" msgstr "" -#: tcl/bin/pickconfig.tcl:194 +#: src/emc/rs274ngc/rs274ngc_return.hh:122 #, fuzzy -msgid "LinuxCNC Configuration Selector" -msgstr "スピンドル消した" +msgid "Negative spindle speed used" +msgstr "フィード手直して:" -#: tcl/bin/pickconfig.tcl:215 -msgid "" -"Welcome to LinuxCNC.\n" -"\n" -"Select a machine configuration from the list on the left.\n" -"Details about the selected configuration will appear in the display on the " -"right.\n" -"Click 'OK' to run the selected configuration" +#: src/emc/rs274ngc/rs274ngc_return.hh:123 +msgid "Negative tool id used" msgstr "" -#: tcl/bin/pickconfig.tcl:271 -msgid "My Configurations" +#: src/emc/rs274ngc/rs274ngc_return.hh:124 +msgid "Nested comment found" msgstr "" -#: tcl/bin/pickconfig.tcl:274 -msgid "Sample Configurations" +#: src/emc/rs274ngc/rs274ngc_return.hh:125 +msgid "No characters found in reading real value" msgstr "" -#: tcl/bin/pickconfig.tcl:332 -#, tcl-format -msgid "ERROR: no configurations found in path '%s'" +#: src/emc/rs274ngc/rs274ngc_return.hh:126 +msgid "Non integer value for integer" msgstr "" -#: tcl/bin/pickconfig.tcl:369 -msgid "Copy Configuration?" +#: src/emc/rs274ngc/rs274ngc_return.hh:127 +msgid "Null missing after newline" msgstr "" -#: tcl/bin/pickconfig.tcl:369 -#, tcl-format -msgid "" -"Would you like to copy the %s configuration to your home directory so you " -"can customize it?" +#: src/emc/rs274ngc/rs274ngc_return.hh:128 +#, fuzzy +msgid "Parameter file out of order" +msgstr "パラムのファイルを読む" + +#: src/emc/rs274ngc/rs274ngc_return.hh:129 +msgid "Parameter number out of range" msgstr "" -#: tcl/bin/pickconfig.tcl:369 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:563 -msgid "Yes" +#: src/emc/rs274ngc/rs274ngc_return.hh:130 +#, fuzzy +msgid "Parameter is readonly" +msgstr "パラムのファイルを読む" + +#: src/emc/rs274ngc/rs274ngc_return.hh:131 +msgid "Q word missing with g83" msgstr "" -#: tcl/bin/pickconfig.tcl:479 -msgid "Configuration Copied" +#: src/emc/rs274ngc/rs274ngc_return.hh:132 +msgid "Queue is not empty after probing" msgstr "" -#: tcl/bin/pickconfig.tcl:479 -#, tcl-format -msgid "" -"The configuration file has been copied to %s. Next time, choose this " -"location when starting LinuxCNC." +#: src/emc/rs274ngc/rs274ngc_return.hh:133 +msgid "R clearance plane unspecified in cycle" msgstr "" -#: tcl/bin/pickconfig.tcl:506 -msgid "Shortcut Created" +#: src/emc/rs274ngc/rs274ngc_return.hh:134 +msgid "R i j k words all missing for arc" msgstr "" -#: tcl/bin/pickconfig.tcl:506 -msgid "" -"A shortcut to this configuration file has been created on your desktop. You " -"can use it to automatically launch this configuration." +#: src/emc/rs274ngc/rs274ngc_return.hh:135 +msgid "R less than x in cycle in yz plane" msgstr "" -#: tcl/bin/pickconfig.tcl:511 -msgid "Create Desktop Shortcut" +#: src/emc/rs274ngc/rs274ngc_return.hh:136 +msgid "R less than y in cycle in xz plane" msgstr "" -#: tcl/bin/tkbackplot.tcl:110 -msgid "TkLinuxCNC BackPlot" +#: src/emc/rs274ngc/rs274ngc_return.hh:137 +msgid "R less than z in cycle in xy plane" msgstr "" -#: tcl/bin/tkbackplot.tcl:125 -#, fuzzy -msgid "SETUP" -msgstr "終止符" +#: src/emc/rs274ngc/rs274ngc_return.hh:138 +msgid "R word with no g code that uses it" +msgstr "" -#: tcl/bin/tkbackplot.tcl:127 -#, fuzzy -msgid "RESET" -msgstr "リーセット" +#: src/emc/rs274ngc/rs274ngc_return.hh:139 +msgid "Slash missing after first atan argument" +msgstr "" -#: tcl/bin/tkbackplot.tcl:129 -msgid "CANCEL" +#: src/emc/rs274ngc/rs274ngc_return.hh:140 +msgid "Spindle not turning clockwise in g84" msgstr "" -#: tcl/bin/tkbackplot.tcl:250 -msgid "AXIS" +#: src/emc/rs274ngc/rs274ngc_return.hh:141 +msgid "Spindle not turning in g86" msgstr "" -#: tcl/bin/tkbackplot.tcl:251 -msgid "OFFSET" +#: src/emc/rs274ngc/rs274ngc_return.hh:142 +msgid "Spindle not turning in g87" msgstr "" -#: tcl/bin/tkbackplot.tcl:252 -msgid "ANGLE" +#: src/emc/rs274ngc/rs274ngc_return.hh:143 +msgid "Spindle not turning in g88" msgstr "" -#: tcl/bin/tkbackplot.tcl:253 -msgid "DIRECTION" +#: src/emc/rs274ngc/rs274ngc_return.hh:144 +msgid "Sscanf failed" msgstr "" -#: tcl/bin/tkbackplot.tcl:270 -msgid "SIZE :" +#: src/emc/rs274ngc/rs274ngc_return.hh:145 +msgid "Start point too close to probe point" msgstr "" -#: tcl/mini.tcl:490 -#, tcl-format -msgid "JOG %s +" +#: src/emc/rs274ngc/rs274ngc_return.hh:146 +msgid "Too many m codes on line" msgstr "" -#: tcl/mini.tcl:491 -#, tcl-format -msgid "JOG %s -" +#: src/emc/rs274ngc/rs274ngc_return.hh:147 +msgid "Pocket max too large" msgstr "" -#: tcl/mini.tcl:492 -#, tcl-format -msgid "" -"%s\n" -"\n" -"Z\n" -"E\n" -"R\n" -"O" +#: src/emc/rs274ngc/rs274ngc_return.hh:148 +msgid "Tool radius not less than arc radius with comp" msgstr "" -#: tcl/mini.tcl:840 -msgid "" -"TkMini \n" -"\n" -"Tcl/Tk GUI for Enhanced Machine Controller\n" -"\n" -"GPL Copyright 2003 \n" -"Ray Henry \n" -"\n" -" 3D backplotter by Paul Corner \n" -" \n" -"This software comes with ABSOLUTELY NO GUARANTEE! \n" -"For details see the copyright.html file in this directory." +#: src/emc/rs274ngc/rs274ngc_return.hh:149 +msgid "Two g codes used from same modal group" msgstr "" -#: tcl/mini.tcl:915 -#, fuzzy -msgid "Program" -msgstr "プローグラム: " +#: src/emc/rs274ngc/rs274ngc_return.hh:150 +msgid "Two m codes used from same modal group" +msgstr "" -#: tcl/mini.tcl:918 -#, fuzzy -msgid "Info" -msgstr "インフォ..." +#: src/emc/rs274ngc/rs274ngc_return.hh:151 +#, c-format +msgid "Unable to open file <%s>" +msgstr "" -#: tcl/mini.tcl:923 -#, fuzzy -msgid "Backplot" -msgstr "描" +#: src/emc/rs274ngc/rs274ngc_return.hh:152 +msgid "Unclosed comment found" +msgstr "" -#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:6125 -#, fuzzy -msgid "Editor" -msgstr "エディット..." +#: src/emc/rs274ngc/rs274ngc_return.hh:153 +msgid "Unclosed expression" +msgstr "" -#: tcl/mini.tcl:927 -#, fuzzy -msgid "Offsets" -msgstr "平行移動:" +#: src/emc/rs274ngc/rs274ngc_return.hh:154 +msgid "Unknown g code used" +msgstr "" -#: tcl/mini.tcl:929 -#, fuzzy -msgid "Tools" -msgstr "道具:" +#: src/emc/rs274ngc/rs274ngc_return.hh:155 +#, c-format +msgid "Unknown m code used: M%d" +msgstr "" -#: tcl/mini.tcl:951 tcl/mini.tcl:3565 tcl/tklinuxcnc.tcl:732 -msgid "Reset" -msgstr "リーセット" - -#: tcl/mini.tcl:960 -msgid "Position Type" +#: src/emc/rs274ngc/rs274ngc_return.hh:156 +msgid "Unknown operation" msgstr "" -#: tcl/mini.tcl:962 -msgid "Tool Info" +#: src/emc/rs274ngc/rs274ngc_return.hh:157 +msgid "Unknown operation name starting with a" msgstr "" -#: tcl/mini.tcl:964 -#, fuzzy -msgid "Offset Info" -msgstr "平行移動:" - -#: tcl/mini.tcl:967 -msgid "Show Restart" +#: src/emc/rs274ngc/rs274ngc_return.hh:158 +msgid "Unknown operation name starting with m" msgstr "" -#: tcl/mini.tcl:968 -msgid "Hide Restart" +#: src/emc/rs274ngc/rs274ngc_return.hh:159 +msgid "Unknown operation name starting with o" msgstr "" -#: tcl/mini.tcl:970 -msgid "Show Split Right" +#: src/emc/rs274ngc/rs274ngc_return.hh:160 +msgid "Unknown operation name starting with x" msgstr "" -#: tcl/mini.tcl:972 -msgid "Show Mode Full" +#: src/emc/rs274ngc/rs274ngc_return.hh:161 +msgid "Unknown word starting with a" msgstr "" -#: tcl/mini.tcl:974 -msgid "Show Popin Full" +#: src/emc/rs274ngc/rs274ngc_return.hh:162 +msgid "Unknown word starting with c" msgstr "" -#: tcl/mini.tcl:978 -msgid "Actual Position" +#: src/emc/rs274ngc/rs274ngc_return.hh:163 +msgid "Unknown word starting with e" msgstr "" -#: tcl/mini.tcl:980 -msgid "Commanded Position" +#: src/emc/rs274ngc/rs274ngc_return.hh:164 +msgid "Unknown word starting with f" msgstr "" -#: tcl/mini.tcl:983 -#, fuzzy -msgid "Machine Position" -msgstr "出来るように" +#: src/emc/rs274ngc/rs274ngc_return.hh:165 +msgid "Unknown word starting with l" +msgstr "" -#: tcl/mini.tcl:985 -msgid "Relative Position" +#: src/emc/rs274ngc/rs274ngc_return.hh:166 +msgid "Unknown word starting with r" msgstr "" -#: tcl/mini.tcl:988 tcl/tklinuxcnc.tcl:747 -msgid "Calibration..." -msgstr "較正..." +#: src/emc/rs274ngc/rs274ngc_return.hh:167 +msgid "Unknown word starting with s" +msgstr "" -#: tcl/mini.tcl:990 -msgid "HAL Show..." +#: src/emc/rs274ngc/rs274ngc_return.hh:168 +msgid "Unknown word starting with t" msgstr "" -#: tcl/mini.tcl:992 -#, fuzzy -msgid "HAL Config..." -msgstr "ローグ..." +#: src/emc/rs274ngc/rs274ngc_return.hh:169 +msgid "Unknown word where unary operation could be" +msgstr "" -#: tcl/mini.tcl:997 -#, fuzzy -msgid "Program File" -msgstr "プローグラム: " +#: src/emc/rs274ngc/rs274ngc_return.hh:170 +msgid "X and y words missing for arc in xy plane" +msgstr "" -#: tcl/mini.tcl:998 -#, tcl-format -msgid "Program file is %s" +#: src/emc/rs274ngc/rs274ngc_return.hh:171 +msgid "X and z words missing for arc in xz plane" msgstr "" -#: tcl/mini.tcl:999 -msgid "Editor File" +#: src/emc/rs274ngc/rs274ngc_return.hh:172 +msgid "X value unspecified in yz plane canned cycle" msgstr "" -#: tcl/mini.tcl:1000 -#, tcl-format -msgid "Editor file is %s" +#: src/emc/rs274ngc/rs274ngc_return.hh:173 +msgid "Y and z words missing for arc in yz plane" msgstr "" -#: tcl/mini.tcl:1001 -#, fuzzy -msgid "Parameter File" -msgstr "パラムのファイルを読む" +#: src/emc/rs274ngc/rs274ngc_return.hh:174 +msgid "Y value unspecified in xz plane canned cycle" +msgstr "" -#: tcl/mini.tcl:1002 -#, fuzzy, tcl-format -msgid "Parameter file is %s" -msgstr "パラムのファイルを読む" +#: src/emc/rs274ngc/rs274ngc_return.hh:175 +msgid "Z value unspecified in xy plane canned cycle" +msgstr "" -#: tcl/mini.tcl:1003 -#, fuzzy -msgid "Tool File" -msgstr "ファイル" +#: src/emc/rs274ngc/rs274ngc_return.hh:176 +msgid "Zero or negative argument to ln" +msgstr "" -#: tcl/mini.tcl:1004 -#, tcl-format -msgid "Tool file is %s" +#: src/emc/rs274ngc/rs274ngc_return.hh:177 +msgid "Zero radius arc" msgstr "" -#: tcl/mini.tcl:1006 -msgid "Active G Codes" +#: src/emc/rs274ngc/rs274ngc_return.hh:178 +msgid "K word missing with g33/g33.1" msgstr "" -#: tcl/mini.tcl:1007 -#, tcl-format -msgid "" -"Active codes include; \n" -"%s" +#: src/emc/rs274ngc/rs274ngc_return.hh:179 +msgid "F word used with a g33/g33.1" msgstr "" -#: tcl/mini.tcl:1010 tcl/mini.tcl:2558 tcl/tklinuxcnc.tcl:791 -msgid "Help..." -msgstr "助け..." +#: src/emc/rs274ngc/rs274ngc_return.hh:180 +msgid "Unknown operation name starting with e" +msgstr "" -#: tcl/mini.tcl:1027 tcl/tklinuxcnc.tcl:890 -msgid "ABORT" -msgstr "中断" +#: src/emc/rs274ngc/rs274ngc_return.hh:181 +msgid "Unknown operation name starting with n" +msgstr "" -#: tcl/mini.tcl:1038 tcl/mini.tcl:2048 -msgid "CONTINUE" +#: src/emc/rs274ngc/rs274ngc_return.hh:182 +msgid "Unknown operation name starting with g" msgstr "" -#: tcl/mini.tcl:1044 tcl/tklinuxcnc.tcl:828 tcl/tklinuxcnc.tcl:2248 -#: src/emc/usr_intf/touchy/touchy.glade:1264 -msgid "MDI" -msgstr "一線(MDI)" +#: src/emc/rs274ngc/rs274ngc_return.hh:183 +msgid "Unknown operation name starting with l" +msgstr "" -#: tcl/mini.tcl:1048 tcl/tklinuxcnc.tcl:2239 -msgid "AUTO" -msgstr "自動" +#: src/emc/rs274ngc/rs274ngc_return.hh:184 +msgid "Too many subroutine parameters" +msgstr "" -#: tcl/mini.tcl:1052 tcl/mini.tcl:1812 tcl/tklinuxcnc.tcl:2141 -#: tcl/tklinuxcnc.tcl:2261 -msgid "MANUAL" -msgstr "手動" +#: src/emc/rs274ngc/rs274ngc_return.hh:185 +msgid "Too many subroutine levels" +msgstr "" -#: tcl/mini.tcl:1106 -#, fuzzy -msgid "Tool #:" -msgstr "道具:" +#: src/emc/rs274ngc/rs274ngc_return.hh:186 +msgid "Bug: call stack underrun" +msgstr "" -#: tcl/mini.tcl:1108 -#, fuzzy -msgid "Length :" -msgstr "長さ:" +#: src/emc/rs274ngc/rs274ngc_return.hh:187 +msgid "Unknown control command in o word" +msgstr "" -#: tcl/mini.tcl:1119 -#, fuzzy -msgid "Work Offsets: " -msgstr "工作物平行移動:" +#: src/emc/rs274ngc/rs274ngc_return.hh:188 +msgid "Too many oword labels" +msgstr "" -#: tcl/mini.tcl:1121 -msgid "start offsets popup here" +#: src/emc/rs274ngc/rs274ngc_return.hh:189 +msgid "Unknown oword number" msgstr "" -#: tcl/mini.tcl:1165 -msgid "start override popup here" +#: src/emc/rs274ngc/rs274ngc_return.hh:190 +msgid "Nested subroutine definition" msgstr "" -#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1669 -msgid "Feed Override:" -msgstr "フィード手直し:" +#: src/emc/rs274ngc/rs274ngc_return.hh:191 +msgid "Not in subroutine definition" +msgstr "" -#: tcl/mini.tcl:1180 -msgid "-- MESSAGES --" +#: src/emc/rs274ngc/rs274ngc_return.hh:192 +msgid "File not open" msgstr "" -#: tcl/mini.tcl:1230 -msgid "toggleView's not doin nothin yet" +#: src/emc/rs274ngc/rs274ngc_return.hh:193 +#, c-format +msgid "cannot reopen file %s - removed or renamed? (%s)" msgstr "" -#: tcl/mini.tcl:1282 -msgid "Can't set zero with a tool offset active so I issued G49 to cancel it." +#: src/emc/rs274ngc/rs274ngc_return.hh:194 +msgid "Need tool prepared -Txx- for toolchange" msgstr "" -#: tcl/mini.tcl:1346 -#, tcl-format -msgid "Can't update the var file while machine is in auto and %s." +#: src/emc/rs274ngc/rs274ngc_return.hh:195 +msgid "Cannot change planes with cutter radius compensation on" msgstr "" -#: tcl/mini.tcl:1400 tcl/tklinuxcnc.tcl:1227 -msgid "override limits" -msgstr "方図を聞き捨てる" +#: src/emc/rs274ngc/rs274ngc_return.hh:196 +msgid "Cutter radius compensation allowed only in XY, XZ planes" +msgstr "" -#: tcl/mini.tcl:1405 tcl/tklinuxcnc.tcl:1263 -msgid "home" -msgstr "原点" +#: src/emc/rs274ngc/rs274ngc_return.hh:197 +msgid "P word missing with G76" +msgstr "" -#: tcl/mini.tcl:1426 -msgid "DEFAULT" +#: src/emc/rs274ngc/rs274ngc_return.hh:198 +msgid "I J or K words missing with G76" msgstr "" -#: tcl/mini.tcl:1427 -#, fuzzy -msgid "Speed:" -msgstr "軸の時速:" +#: src/emc/rs274ngc/rs274ngc_return.hh:199 +msgid "Cannot move rotary axes with G76" +msgstr "" -#: tcl/mini.tcl:1430 -msgid "RAPID" +#: src/emc/rs274ngc/rs274ngc_return.hh:200 +msgid "Multiple e words on one line" msgstr "" -#: tcl/mini.tcl:1447 tcl/tklinuxcnc.tcl:1391 -msgid "Set Jog Speed" -msgstr "ジョグ時速" +#: src/emc/rs274ngc/rs274ngc_return.hh:201 +msgid "Named parameter not terminated" +msgstr "" -#: tcl/mini.tcl:1453 tcl/tklinuxcnc.tcl:1404 -msgid "Set jog speed:" -msgstr "ジョグ時速:" +#: src/emc/rs274ngc/rs274ngc_return.hh:202 +msgid "Out of memory" +msgstr "" -#: tcl/mini.tcl:1511 -msgid "JOG X +" +#: src/emc/rs274ngc/rs274ngc_return.hh:203 +msgid "S word missing with G96" msgstr "" -#: tcl/mini.tcl:1512 -msgid "JOG X -" +#: src/emc/rs274ngc/rs274ngc_return.hh:204 +msgid "Queue is not empty after external input" msgstr "" -#: tcl/mini.tcl:1516 -msgid "increment" +#: src/emc/rs274ngc/rs274ngc_return.hh:205 +msgid "Can't select analog input with wait type != immediate return" msgstr "" -#: tcl/mini.tcl:1518 tcl/tklinuxcnc.tcl:602 tcl/tklinuxcnc.tcl:1249 -#: tcl/tklinuxcnc.tcl:1253 -msgid "continuous" -msgstr "連綿" - -#: tcl/mini.tcl:1520 -msgid "" -"A\n" -"L\n" -"L\n" -"\n" -"Z\n" -"E\n" -"R\n" -"O" +#: src/emc/rs274ngc/rs274ngc_return.hh:206 +msgid "Zero timeout with wait type != immediate return" msgstr "" -#: tcl/mini.tcl:1588 src/emc/usr_intf/touchy/touchy.glade:1422 -#, fuzzy -msgid "Spindle Forward" -msgstr "スピンドル前進" +#: src/emc/rs274ngc/rs274ngc_return.hh:207 +msgid "Invalid to select both a digital and an analog input with M66" +msgstr "" -#: tcl/mini.tcl:1589 src/emc/usr_intf/touchy/touchy.glade:1433 -#, fuzzy -msgid "Spindle Reverse" -msgstr "スピンドル逆" +#: src/emc/rs274ngc/rs274ngc_return.hh:208 +msgid "Need to have either a valid P or a valid E word with M66" +msgstr "" -#: tcl/mini.tcl:1590 tcl/tklinuxcnc.tcl:871 -msgid "Spindle off" -msgstr "スピンドル消した" +#: src/emc/rs274ngc/rs274ngc_return.hh:209 +msgid "Q word missing with g73" +msgstr "" -#: tcl/mini.tcl:1592 src/emc/usr_intf/touchy/touchy.glade:1479 -#, fuzzy -msgid "Spindle Slower" -msgstr "スピンドル前進" +#: src/emc/rs274ngc/rs274ngc_return.hh:210 +msgid "Digital input selected out of bounds" +msgstr "" -#: tcl/mini.tcl:1596 src/emc/usr_intf/touchy/touchy.glade:1464 -#, fuzzy -msgid "Spindle Faster" -msgstr "スピンドル前進" +#: src/emc/rs274ngc/rs274ngc_return.hh:211 +msgid "Analog input selected out of bounds" +msgstr "" -#: tcl/mini.tcl:1632 tcl/tklinuxcnc.tcl:1620 -msgid "MDI:" -msgstr "一線(MDI):" +#: src/emc/rs274ngc/rs274ngc_return.hh:212 +msgid "W value unspecified in UV plane canned cycle" +msgstr "" -#: tcl/mini.tcl:1669 tcl/tklinuxcnc.tcl:1658 -#: src/emc/usr_intf/stepconf/stepconf.glade:4403 -#: src/emc/usr_intf/pncconf/pncconf.glade:60509 -#: src/emc/usr_intf/pncconf/pncconf.glade:61603 -#: src/emc/usr_intf/pncconf/pncconf.glade:62696 -#: src/emc/usr_intf/pncconf/pncconf.glade:63789 -#: src/emc/usr_intf/pncconf/pncconf.glade:64889 -msgid "Run" -msgstr "動く" +#: src/emc/rs274ngc/rs274ngc_return.hh:213 +msgid "U value unspecified in VW plane canned cycle" +msgstr "" -#: tcl/mini.tcl:1671 tcl/tklinuxcnc.tcl:1659 -#: src/emc/usr_intf/pncconf/pncconf.glade:60574 -#: src/emc/usr_intf/pncconf/pncconf.glade:61668 -#: src/emc/usr_intf/pncconf/pncconf.glade:62761 -#: src/emc/usr_intf/pncconf/pncconf.glade:63854 -msgid "Pause" -msgstr "間断" +#: src/emc/rs274ngc/rs274ngc_return.hh:214 +msgid "V value unspecified in UW plane canned cycle" +msgstr "" -#: tcl/mini.tcl:1673 tcl/tklinuxcnc.tcl:1660 -msgid "Resume" -msgstr "つづく" +#: src/emc/rs274ngc/rs274ngc_return.hh:215 +msgid "R less than W in cycle in UV plane" +msgstr "" -#: tcl/mini.tcl:1675 tcl/tklinuxcnc.tcl:1661 -msgid "Step" -msgstr "徐徐に" +#: src/emc/rs274ngc/rs274ngc_return.hh:216 +msgid "R less than U in cycle in VW plane" +msgstr "" -#: tcl/mini.tcl:1677 tcl/tklinuxcnc.tcl:1662 -msgid "Verify" -msgstr "質す" +#: src/emc/rs274ngc/rs274ngc_return.hh:217 +msgid "R less than V in cycle in UW plane" +msgstr "" -#: tcl/mini.tcl:1698 -msgid "RESTART LINE" +#: src/hal/utils/meter.c:200 +#, c-format +msgid "ERROR: '%s' is not a valid probe type\n" msgstr "" -#: tcl/mini.tcl:1699 -msgid "Back" +#: src/hal/utils/meter.c:208 +#, c-format +msgid "ERROR: no pin/signal/parameter name\n" msgstr "" -#: tcl/mini.tcl:1700 -msgid "Ahead" +#: src/hal/utils/meter.c:214 +#, c-format +msgid "" +"ERROR: -s option requires a probe type and a pin/signal/parameter name\n" msgstr "" -#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1221 -#, fuzzy -msgid "Restart" -msgstr "リーセット" +#: src/hal/utils/meter.c:240 tcl/tklinuxcnc.tcl:764 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6431 +msgid "Hal Meter" +msgstr "" -#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 -#: tcl/tklinuxcnc.tcl:465 src/emc/usr_intf/axis/scripts/axis.py:1885 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:754 -msgid "All files" -msgstr "全部のファイル" +#: src/hal/utils/meter.c:290 +msgid "_Select" +msgstr "" -#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 -#: tcl/tklinuxcnc.tcl:466 -msgid "Text files" -msgstr "テキストファイル" +#: src/hal/utils/meter.c:291 +msgid "E_xit" +msgstr "" -#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 -#: tcl/tklinuxcnc.tcl:467 -msgid "NC files" -msgstr "NCファイル" +#: src/hal/utils/meter.c:339 src/hal/utils/meter.c:367 +msgid "Select Item to Probe" +msgstr "" -#: tcl/mini.tcl:1753 -msgid "" -"The interpreter is running. \n" -" Pressing OK will abort and load the new program" +#: src/hal/utils/meter.c:669 +msgid " _Pins " msgstr "" -#: tcl/mini.tcl:1886 -#, fuzzy -msgid "ESTOPPED" -msgstr "終止符" +#: src/hal/utils/meter.c:670 +msgid " _Signals " +msgstr "" -#: tcl/mini.tcl:1889 +#: src/hal/utils/meter.c:671 #, fuzzy -msgid "ESTOP PUSH" -msgstr "リーセット" - -#: tcl/mini.tcl:1892 tcl/tklinuxcnc.tcl:2233 -msgid "ESTOP RESET" -msgstr "リーセット" +msgid " Para_meters " +msgstr "パラムのファイルを読む" -#: tcl/mini.tcl:1897 tcl/tklinuxcnc.tcl:2298 -msgid "SPINDLE FORWARD" -msgstr "スピンドル前進" +#: src/hal/utils/meter.c:714 +msgid "_Close" +msgstr "" -#: tcl/mini.tcl:1899 tcl/tklinuxcnc.tcl:2300 -msgid "SPINDLE REVERSE" -msgstr "スピンドル逆" +#: src/hal/utils/scope.c:126 +msgid "" +"Usage:\n" +" halscope [-h] [-i infile] [-o outfile] [num_samples]\n" +msgstr "" -#: tcl/mini.tcl:1901 tcl/tklinuxcnc.tcl:2302 -msgid "SPINDLE OFF" +#: src/hal/utils/scope.c:479 src/hal/utils/scope.c:506 +#, fuzzy +msgid "Open Configuration File:" msgstr "スピンドル消した" -#: tcl/mini.tcl:1903 tcl/tklinuxcnc.tcl:2304 -msgid "SPINDLE INCREASE" -msgstr "スピンドル加速" - -#: tcl/mini.tcl:1905 tcl/tklinuxcnc.tcl:2306 -msgid "SPINDLE DECREASE" -msgstr "スピンドル減速" +#: src/hal/utils/scope.c:540 +#, fuzzy +msgid "_Open Configuration..." +msgstr "スピンドル消した" -#: tcl/mini.tcl:1907 tcl/tklinuxcnc.tcl:2308 -msgid "SPINDLE ?" -msgstr "スピンドルは?" +#: src/hal/utils/scope.c:546 +#, fuzzy +msgid "_Save Configuration..." +msgstr "スピンドル消した" -#: tcl/mini.tcl:1911 tcl/tklinuxcnc.tcl:2312 -msgid "BRAKE ON" -msgstr "ブレーキ点いた" +#: src/hal/utils/scope.c:555 +msgid "O_pen Data File..." +msgstr "" -#: tcl/mini.tcl:1913 tcl/tklinuxcnc.tcl:2314 -msgid "BRAKE OFF" -msgstr "ブレーキ消した" +#: src/hal/utils/scope.c:562 +msgid "S_ave Data File..." +msgstr "" -#: tcl/mini.tcl:1915 tcl/tklinuxcnc.tcl:2316 -msgid "BRAKE ?" -msgstr "ブレーキは?" +#: src/hal/utils/scope.c:571 share/axis/tcl/axis.tcl:96 +msgid "_Quit" +msgstr "" -#: tcl/mini.tcl:1919 tcl/tklinuxcnc.tcl:2274 -msgid "MIST ON" -msgstr "雰点け" +#: src/hal/utils/scope.c:577 +msgid "_About Halscope" +msgstr "" -#: tcl/mini.tcl:1921 tcl/tklinuxcnc.tcl:2276 -msgid "MIST OFF" -msgstr "雰消した" +#: src/hal/utils/scope.c:583 share/axis/tcl/axis.tcl:501 +#, fuzzy +msgid "_File" +msgstr "ファイル" -#: tcl/mini.tcl:1923 tcl/tklinuxcnc.tcl:2278 -msgid "MIST ?" -msgstr "雰は?" +#: src/hal/utils/scope.c:587 share/axis/tcl/axis.tcl:517 +#, fuzzy +msgid "_Help" +msgstr "助け" -#: tcl/mini.tcl:1927 tcl/tklinuxcnc.tcl:2282 -msgid "FLOOD ON" -msgstr "水洗点いた" +#: src/hal/utils/scope.c:646 +msgid "HAL Oscilloscope" +msgstr "" -#: tcl/mini.tcl:1929 tcl/tklinuxcnc.tcl:2284 -msgid "FLOOD OFF" -msgstr "水洗消した" +#: src/hal/utils/scope.c:674 +msgid "Horizontal" +msgstr "" -#: tcl/mini.tcl:1931 tcl/tklinuxcnc.tcl:2286 -msgid "FLOOD ?" -msgstr "水洗は?" +#: src/hal/utils/scope.c:682 +msgid "Selected Channel" +msgstr "" -#: tcl/mini.tcl:2052 -msgid "FEEDHOLD" +#: src/hal/utils/scope.c:688 +msgid "Run Mode" msgstr "" -#: tcl/mini.tcl:2124 -msgid "" -"TOOL SETUP \n" -" Click or tab to edit. Press enter to return to keyboard machine control." +#: src/hal/utils/scope.c:691 +msgid "Trigger" msgstr "" -#: tcl/mini.tcl:2130 -msgid " TOOL NUMBER " +#: src/hal/utils/scope.c:697 +msgid "Vertical" msgstr "" -#: tcl/mini.tcl:2131 -msgid " LENGTH " +#: src/hal/utils/scope.c:705 share/axis/tcl/axis.tcl:138 +#: share/axis/tcl/axis.tcl:1269 src/emc/usr_intf/gscreen/gscreen.py:3416 +#: src/emc/usr_intf/gscreen/gscreen.py:3417 +#: src/emc/usr_intf/gscreen/gscreen.glade:2614 +#, fuzzy +msgid "Stop" +msgstr "徐徐に" + +#: src/hal/utils/scope.c:708 +msgid "Normal" msgstr "" -#: tcl/mini.tcl:2132 -msgid " DIAMETER " +#: src/hal/utils/scope.c:711 +msgid "Single" msgstr "" -#: tcl/mini.tcl:2133 -msgid " COMMENT " +#: src/hal/utils/scope.c:714 +msgid "Roll" msgstr "" -#: tcl/mini.tcl:2188 -msgid "Add Extra Tool" +#: src/hal/utils/scope_horiz.c:130 src/emc/usr_intf/gscreen/gscreen.glade:3419 +msgid "Zoom" msgstr "" -#: tcl/mini.tcl:2189 -msgid "Remove Last Tool" +#: src/hal/utils/scope_horiz.c:131 +msgid " Pos " msgstr "" -#: tcl/mini.tcl:2217 tcl/mini.tcl:2253 -#, tcl-format -msgid "Can't update the tool file while machine is in auto and %s." +#: src/hal/utils/scope_horiz.c:164 +msgid "" +"----- Samples\n" +"at ---- KHz" msgstr "" -#: tcl/mini.tcl:2229 -msgid "This is not a good number." +#: src/hal/utils/scope_horiz.c:464 +msgid "Realtime component not loaded" msgstr "" -#: tcl/mini.tcl:2293 +#: src/hal/utils/scope_horiz.c:465 msgid "" -"COORDINATE SYSTEM SETUP \n" +"HALSCOPE uses a realtime component called scope_rt'\n" +"to sample signals for display. It is not currently loaded\n" +"and attempting to load it automatically failed. More information\n" +"may be available in the terminal where halscope was started.\n" "\n" -" Click value to edit with keyboard. Press enter to return to keyboard " -"control of machine. \n" -" " +"Please do one of the following:\n" +"\n" +"Load the component (using 'halcmd loadrt scope_rt'), then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" msgstr "" -#: tcl/mini.tcl:2320 tcl/scripts/Set_Coordinates.tcl:80 -#, fuzzy -msgid "Axis " -msgstr "軸の平行移動" - -#: tcl/mini.tcl:2321 -msgid "Value " +#: src/hal/utils/scope_horiz.c:536 +msgid "Realtime function not linked" msgstr "" -#: tcl/mini.tcl:2326 tcl/scripts/Set_Coordinates.tcl:91 -msgid "Teach" +#: src/hal/utils/scope_horiz.c:537 +msgid "" +"The HALSCOPE realtime sampling function\n" +"must be called from a HAL thread in to\n" +"determine the sampling rate.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Select a thread name and multiplier then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" msgstr "" -#: tcl/mini.tcl:2334 -msgid "Write And Load File " +#: src/hal/utils/scope_horiz.c:544 +msgid "Select Sample Rate" msgstr "" -#: tcl/mini.tcl:2336 -msgid "Offset By Radius" +#: src/hal/utils/scope_horiz.c:545 +msgid "" +"Select a thread name and multiplier then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" msgstr "" -#: tcl/mini.tcl:2337 -msgid "Offset By Length" +#: src/hal/utils/scope_horiz.c:567 +msgid "Thread:" msgstr "" -#: tcl/mini.tcl:2342 -msgid "Subtract" +#: src/hal/utils/scope_horiz.c:575 +msgid "Sample Period:" msgstr "" -#: tcl/mini.tcl:2344 -msgid "Add" +#: src/hal/utils/scope_horiz.c:583 +msgid "Sample Rate:" msgstr "" -#: tcl/mini.tcl:2366 -msgid "Zero All G54" +#: src/hal/utils/scope_horiz.c:599 src/emc/usr_intf/touchy/mdi.py:79 +#: src/emc/usr_intf/gscreen/mdi.py:78 +msgid "Thread" msgstr "" -#: tcl/mini.tcl:2367 -msgid "Zero All G55" +#: src/hal/utils/scope_horiz.c:600 +msgid "Period" msgstr "" -#: tcl/mini.tcl:2368 -msgid "Zero All G56" +#: src/hal/utils/scope_horiz.c:638 +msgid "Multiplier:" msgstr "" -#: tcl/mini.tcl:2369 -msgid "Zero All G57" +#: src/hal/utils/scope_horiz.c:655 +#, fuzzy +msgid "Record Length" +msgstr "長さ:" + +#: src/hal/utils/scope_horiz.c:658 +#, c-format +msgid "%5d samples (1 channel)" msgstr "" -#: tcl/mini.tcl:2370 -msgid "Zero All G58" +#: src/hal/utils/scope_horiz.c:660 +#, c-format +msgid "%5d samples (2 channels)" msgstr "" -#: tcl/mini.tcl:2371 -msgid "Zero All G59" +#: src/hal/utils/scope_horiz.c:664 +#, c-format +msgid "%5d samples (4 channels)" msgstr "" -#: tcl/mini.tcl:2372 -msgid "Zero All G59.1" +#: src/hal/utils/scope_horiz.c:668 +#, c-format +msgid "%5d samples (8 channels)" msgstr "" -#: tcl/mini.tcl:2373 -msgid "Zero All G59.2" +#: src/hal/utils/scope_horiz.c:672 +#, c-format +msgid "%5d samples (16 channels)" msgstr "" -#: tcl/mini.tcl:2374 -msgid "Zero All G59.3" +#: src/hal/utils/scope_horiz.c:727 src/hal/utils/scope_horiz.c:773 +#: src/hal/utils/scope_horiz.c:985 src/hal/utils/scope_vert.c:771 +#: src/hal/utils/scope_vert.c:863 tcl/bin/emccalib.tcl:232 +#: tcl/bin/genedit.tcl:180 tcl/bin/genedit.tcl:450 tcl/bin/halconfig.tcl:682 +#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:387 +#: tcl/bin/pickconfig.tcl:749 tcl/bin/pickconfig.tcl:799 tcl/mini.tcl:1456 +#: tcl/mini.tcl:2937 tcl/tklinuxcnc.tcl:160 tcl/tklinuxcnc.tcl:245 +#: tcl/tklinuxcnc.tcl:419 tcl/tklinuxcnc.tcl:1338 tcl/tklinuxcnc.tcl:1407 +#: tcl/tklinuxcnc.tcl:1438 tcl/tklinuxcnc.tcl:1469 tcl/tklinuxcnc.tcl:2017 +#: tcl/tklinuxcnc.tcl:2036 tcl/tklinuxcnc.tcl:2055 tcl/tklinuxcnc.tcl:2102 +#: src/emc/usr_intf/axis/scripts/axis.py:1106 +#: src/emc/usr_intf/axis/scripts/axis.py:1173 +#: src/emc/usr_intf/axis/scripts/axis.py:1508 +#: src/emc/usr_intf/axis/scripts/axis.py:2672 +#: src/emc/usr_intf/axis/scripts/axis.py:3599 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:718 +#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1828 +#: share/axis/tcl/axis.tcl:1865 +msgid "OK" +msgstr "OK" + +#: src/hal/utils/scope_horiz.c:732 src/hal/utils/scope_horiz.c:773 +#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 tcl/tooledit.tcl:468 +msgid "Quit" msgstr "" -#: tcl/mini.tcl:2375 -msgid "Zero All ????" +#: src/hal/utils/scope_horiz.c:764 +msgid "Realtime thread(s) not running" msgstr "" -#: tcl/mini.tcl:2493 -msgid "Modified..." +#: src/hal/utils/scope_horiz.c:765 +msgid "" +"HALSCOPE uses code in a realtime HAL thread to sample\n" +"signals for display. The HAL thread(s) are not running.\n" +"Threads are usually started by the application you are\n" +"attempting to run, or you can use the 'halcmd start' command.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Start the threads, then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" msgstr "" -#: tcl/mini.tcl:2538 -msgid "Save and Load" +#: src/hal/utils/scope_horiz.c:798 +msgid "Pick log file to write to:" msgstr "" -#: tcl/mini.tcl:2540 -msgid "Undo" +#: src/hal/utils/scope_horiz.c:981 +msgid "Not enough channels" msgstr "" -#: tcl/mini.tcl:2541 -msgid "Redo" +#: src/hal/utils/scope_horiz.c:982 +msgid "" +"This record length cannot handle the channels\n" +"that are currently enabled. Pick a shorter\n" +"record length that supports more channels." msgstr "" -#: tcl/mini.tcl:2546 -msgid "Delete" +#: src/hal/utils/scope_horiz.c:1070 +#, c-format +msgid "" +"%s\n" +"per div" msgstr "" -#: tcl/mini.tcl:2551 -msgid "Replace..." +#: src/hal/utils/scope_horiz.c:1085 +#, c-format +msgid "" +"%s samples\n" +"at %s" msgstr "" -#: tcl/mini.tcl:2664 -msgid "Next Number: " +#: src/hal/utils/scope_horiz.c:1189 +msgid "nSec" msgstr "" -#: tcl/mini.tcl:2765 -msgid "Basic Help" +#: src/hal/utils/scope_horiz.c:1192 +msgid "uSec" msgstr "" -#: tcl/mini.tcl:2765 -msgid "" -"This is a simple ASCII editor like many others.\n" -"\n" -"Ctrl+O Open\n" -"Ctrl+S Save\n" -"Ctrl+Z Undo\n" -"Ctrl+Y Redo\n" -"Ctrl+X Cut\n" -"Ctrl+C Copy\n" -"Ctrl+V Paste\n" -"Del Delete\n" -"Ctrl+A Select All\n" -"\n" -"Ctrl+F Find\n" -"Ctrl+R Replace " +#: src/hal/utils/scope_horiz.c:1196 +msgid "mSec" msgstr "" -#: tcl/mini.tcl:2785 -msgid "" -"tknotepad by Joseph Acosta. \n" -"\n" -" Modified for EMC by: Paul Corner " +#: src/hal/utils/scope_horiz.c:1200 src/emc/usr_intf/pncconf/pncconf.glade:2635 +#: src/emc/usr_intf/pncconf/pncconf.glade:3533 +#: src/emc/usr_intf/pncconf/pncconf.glade:4414 +#: src/emc/usr_intf/pncconf/pncconf.glade:5295 +msgid "Sec" msgstr "" -#: tcl/mini.tcl:2793 -msgid "" -"The contents of this file may have changed, do you wish to to save your " -"changes?" +#: src/hal/utils/scope_horiz.c:1217 src/emc/usr_intf/stepconf/spindle.glade:301 +#: src/emc/usr_intf/stepconf/axisx.glade:693 +#: src/emc/usr_intf/stepconf/axisy.glade:679 +#: src/emc/usr_intf/stepconf/axisz.glade:679 +#: src/emc/usr_intf/stepconf/axisa.glade:693 +#: src/emc/usr_intf/pncconf/pncconf.glade:8024 +#: src/emc/usr_intf/pncconf/pncconf.glade:8201 +#: src/emc/usr_intf/pncconf/pncconf.glade:8213 +msgid "Hz" msgstr "" -#: tcl/mini.tcl:2794 -msgid "New Confirm?" +#: src/hal/utils/scope_horiz.c:1220 +msgid "KHz" msgstr "" -#: tcl/mini.tcl:2928 -msgid "Print Setup" +#: src/hal/utils/scope_horiz.c:1224 +msgid "Mhz" msgstr "" -#: tcl/mini.tcl:2932 -#, fuzzy -msgid "Print Command: " -msgstr "命令:" +#: src/hal/utils/scope_vert.c:413 src/hal/utils/scope_vert.c:1303 +#, fuzzy, c-format +msgid "" +"Offset\n" +"%s" +msgstr "平行移動:" -#: tcl/mini.tcl:3095 -msgid "Find what:" +#: src/hal/utils/scope_vert.c:628 +msgid "Gain" msgstr "" -#: tcl/mini.tcl:3101 -msgid "Replace with:" +#: src/hal/utils/scope_vert.c:640 src/hal/utils/scope_trig.c:272 +msgid "Pos" msgstr "" -#: tcl/mini.tcl:3109 -msgid "Find Next" +#: src/hal/utils/scope_vert.c:654 tcl/ngcgui_ttt.tcl:214 +#: src/emc/usr_intf/pncconf/pncconf.glade:64273 +msgid "Scale" msgstr "" -#: tcl/mini.tcl:3112 -msgid "Replace" +#: src/hal/utils/scope_vert.c:667 +msgid "Chan Off" msgstr "" -#: tcl/mini.tcl:3120 -msgid "Up" -msgstr "" +#: src/hal/utils/scope_vert.c:723 +#, fuzzy +msgid "Set Offset" +msgstr "道具が平行移動" -#: tcl/mini.tcl:3121 -msgid "Down" +#: src/hal/utils/scope_vert.c:724 +#, c-format +msgid "" +"Set the vertical offset\n" +"for channel %d." msgstr "" -#: tcl/mini.tcl:3124 -msgid "Match case" +#: src/hal/utils/scope_vert.c:744 +msgid "AC Coupled" msgstr "" -#: tcl/mini.tcl:3569 -msgid "rot-x" -msgstr "" +#: src/hal/utils/scope_vert.c:779 src/hal/utils/scope_vert.c:1215 +#: src/hal/utils/scope_trig.c:387 tcl/bin/emccalib.tcl:234 +#: tcl/bin/genedit.tcl:294 tcl/bin/halconfig.tcl:103 tcl/bin/halconfig.tcl:684 +#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:390 +#: tcl/bin/pickconfig.tcl:567 tcl/mini.tcl:1457 tcl/mini.tcl:2938 +#: tcl/mini.tcl:3110 tcl/tklinuxcnc.tcl:162 tcl/tklinuxcnc.tcl:213 +#: tcl/tklinuxcnc.tcl:420 tcl/tklinuxcnc.tcl:1339 tcl/tklinuxcnc.tcl:1408 +#: tcl/tklinuxcnc.tcl:1439 tcl/tklinuxcnc.tcl:1470 tcl/tklinuxcnc.tcl:2103 +#: src/emc/usr_intf/axis/scripts/axis.py:1453 +#: src/emc/usr_intf/axis/scripts/axis.py:1509 +#: src/emc/usr_intf/axis/scripts/axis.py:1699 +#: src/emc/usr_intf/axis/scripts/axis.py:2108 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:720 +#: src/emc/usr_intf/stepconf/main_page.glade:467 +#: src/emc/usr_intf/gscreen/gscreen.glade:3986 +msgid "Cancel" +msgstr "中止" -#: tcl/mini.tcl:3579 -msgid "rot-y" +#: src/hal/utils/scope_vert.c:859 +msgid "Too many channels" msgstr "" -#: tcl/mini.tcl:3589 -msgid "rot-z" +#: src/hal/utils/scope_vert.c:860 +msgid "" +"You cannot add another channel.\n" +"\n" +"Either turn off one or more channels, or shorten\n" +"the record length to allow for more channels" msgstr "" -#: tcl/mini.tcl:3599 -msgid "zoom" +#: src/hal/utils/scope_vert.c:1074 +msgid "Select Channel Source" msgstr "" -#: tcl/mini.tcl:3655 -#, fuzzy -msgid "TEST" -msgstr "終止符" +#: src/hal/utils/scope_vert.c:1075 +#, c-format +msgid "" +"Select a pin, signal, or parameter\n" +"as the source for channel %d." +msgstr "" -#: tcl/mini.tcl:3699 -msgid "Hide Setup" +#: src/hal/utils/scope_vert.c:1107 +msgid "Pins" msgstr "" -#: tcl/mini.tcl:3703 -msgid "Show Setup" +#: src/hal/utils/scope_vert.c:1108 +msgid "Signals" msgstr "" -#: tcl/show_errors.tcl:41 +#: src/hal/utils/scope_vert.c:1109 #, fuzzy -msgid "LinuxCNC Errors" -msgstr "越度" +msgid "Parameters" +msgstr "パラムのファイルを読む" -#: tcl/show_errors.tcl:44 -msgid "" -"LinuxCNC terminated with an error. When reporting problems, please include " -"all the information below in your message." +#: src/hal/utils/scope_trig.c:110 +#, c-format +msgid "Falling" msgstr "" -#: tcl/show_errors.tcl:69 tcl/scripts/Set_Coordinates.tcl:103 -msgid "Close" +#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:295 +#, c-format +msgid "Rising" msgstr "" -#: tcl/tklinuxcnc.tcl:154 tcl/tklinuxcnc.tcl:181 -msgid "Set Run Mark" -msgstr "動く点を決める" +#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:303 +msgid "" +"Source\n" +"None" +msgstr "" + +#: src/hal/utils/scope_trig.c:124 +#, c-format +msgid "" +"Source\n" +"Chan %2d" +msgstr "" + +#: src/hal/utils/scope_trig.c:219 tcl/tklinuxcnc.tcl:827 +#: src/emc/usr_intf/touchy/touchy.glade:2469 +msgid "Auto" +msgstr "自動" + +#: src/hal/utils/scope_trig.c:221 +msgid "Force" +msgstr "" + +#: src/hal/utils/scope_trig.c:255 src/hal/utils/scope_trig.c:289 +msgid "Level" +msgstr "" + +#: src/hal/utils/scope_trig.c:323 +msgid "Trigger Source" +msgstr "" + +#: src/hal/utils/scope_trig.c:324 +msgid "Select a channel to use for triggering." +msgstr "" + +#: src/hal/utils/scope_trig.c:347 +msgid "Chan" +msgstr "" + +#: src/hal/utils/scope_trig.c:348 +msgid "Source" +msgstr "" + +#: src/emc/motion/control.c:270 +msgid "Unexpected realtime delay: check dmesg for details." +msgstr "" + +#: src/emc/motion/control.c:272 +#, c-format +msgid "" +"\n" +"In recent history there were\n" +"%ld, %ld, %ld, %ld, and %ld\n" +"elapsed clocks between calls to the motion controller.\n" +msgstr "" + +#: src/emc/motion/control.c:277 +#, c-format +msgid "" +"This time, there were %ld which is so anomalously\n" +"large that it probably signifies a problem with your\n" +"realtime configuration. For the rest of this run of\n" +"EMC, this message will be suppressed.\n" +"\n" +msgstr "" + +#: src/emc/motion/control.c:394 +msgid "G38.4 move finished without breaking contact." +msgstr "" + +#: src/emc/motion/control.c:397 +msgid "G38.2 move finished without making contact." +msgstr "" + +#: src/emc/motion/control.c:412 +msgid "Probe tripped during non-probe MDI command." +msgstr "" + +#: src/emc/motion/control.c:440 +msgid "Probe tripped during homing motion." +msgstr "" + +#: src/emc/motion/control.c:444 +msgid "Probe tripped during a jog." +msgstr "" + +#: src/emc/motion/control.c:622 +msgid "can't add coordinated return move" +msgstr "" + +#: src/emc/motion/control.c:663 +msgid "can't add linear coordinated jog move" +msgstr "" + +#: src/emc/motion/control.c:817 +#, c-format +msgid "fault %d during orient in progress" +msgstr "" + +#: src/emc/motion/control.c:957 +msgid "motion stopped by enable input" +msgstr "" + +#: src/emc/motion/control.c:980 +#, c-format +msgid "joint %d on limit switch error" +msgstr "" + +#: src/emc/motion/control.c:992 +#, c-format +msgid "joint %d amplifier fault" +msgstr "" + +#: src/emc/motion/control.c:1001 +#, c-format +msgid "joint %d following error" +msgstr "" + +#: src/emc/motion/control.c:1687 +#, c-format +msgid "Exceeded positive soft limit on joint %d" +msgstr "" + +#: src/emc/motion/control.c:1692 +#, c-format +msgid "Exceeded negative soft limit on joint %d" +msgstr "" + +#: src/emc/motion/command.c:163 +#, c-format +msgid "Can't jog invalid joint number %d." +msgstr "" + +#: src/emc/motion/command.c:167 +#, c-format +msgid "Can't jog joint %d further past max hard limit." +msgstr "" + +#: src/emc/motion/command.c:172 +#, c-format +msgid "Can't jog joint %d further past min hard limit." +msgstr "" + +#: src/emc/motion/command.c:178 +#, c-format +msgid "Can't jog joint %d further past max soft limit." +msgstr "" + +#: src/emc/motion/command.c:183 +#, c-format +msgid "Can't jog joint %d further past min soft limit." +msgstr "" + +#: src/emc/motion/command.c:243 +#, c-format +msgid "%s move on line %d would exceed joint %d's positive limit" +msgstr "" + +#: src/emc/motion/command.c:250 +#, c-format +msgid "%s move on line %d would exceed joint %d's negative limit" +msgstr "" + +#: src/emc/motion/command.c:535 +msgid "all joints must be homed before going into coordinated mode" +msgstr "" + +#: src/emc/motion/command.c:556 +msgid "all joints must be homed before going into teleop mode" +msgstr "" + +#: src/emc/motion/command.c:710 src/emc/motion/command.c:776 +#: src/emc/motion/command.c:849 +msgid "Can't jog joint in coordinated mode." +msgstr "" + +#: src/emc/motion/command.c:715 src/emc/motion/command.c:781 +#: src/emc/motion/command.c:854 +msgid "Can't jog joint when not enabled." +msgstr "" + +#: src/emc/motion/command.c:720 src/emc/motion/command.c:859 +msgid "Can't jog any joints while homing." +msgstr "" + +#: src/emc/motion/command.c:786 +msgid "Can't jog any joint while homing." +msgstr "" + +#: src/emc/motion/command.c:918 +msgid "need to be enabled, in coord mode for linear move" +msgstr "" + +#: src/emc/motion/command.c:928 +msgid "can't do linear move with limits exceeded" +msgstr "" + +#: src/emc/motion/command.c:954 +#, c-format +msgid "can't add linear move at line %d, error code %d" +msgstr "" + +#: src/emc/motion/command.c:982 +msgid "need to be enabled, in coord mode for circular move" +msgstr "" + +#: src/emc/motion/command.c:993 +msgid "can't do circular move with limits exceeded" +msgstr "" + +#: src/emc/motion/command.c:1015 +#, c-format +msgid "can't add circular move at line %d, error code %d" +msgstr "" + +#: src/emc/motion/command.c:1114 +msgid "MOTION: can't STEP while jogging" +msgstr "" + +#: src/emc/motion/command.c:1117 +msgid "MOTION: can't STEP while in return move" +msgstr "" + +#: src/emc/motion/command.c:1127 +#, c-format +msgid "MOTION: STEP while in state %d" +msgstr "" + +#: src/emc/motion/command.c:1229 +msgid "can't enable motion, enable input is false" +msgstr "" + +#: src/emc/motion/command.c:1302 +msgid "must be in joint mode to home" +msgstr "" + +#: src/emc/motion/command.c:1313 src/emc/motion/command.c:1324 +msgid "homing sequence already in progress" +msgstr "" + +#: src/emc/motion/command.c:1322 +msgid "homing already in progress" +msgstr "" + +#: src/emc/motion/command.c:1352 +msgid "must be in joint mode or disabled to unhome" +msgstr "" + +#: src/emc/motion/command.c:1364 src/emc/motion/command.c:1387 +#, c-format +msgid "Cannot unhome while homing, joint %d" +msgstr "" + +#: src/emc/motion/command.c:1368 src/emc/motion/command.c:1391 +#, c-format +msgid "Cannot unhome while moving, joint %d" +msgstr "" + +#: src/emc/motion/command.c:1396 +#, c-format +msgid "Cannot unhome inactive joint %d" +msgstr "" + +#: src/emc/motion/command.c:1400 +#, c-format +msgid "Cannot unhome invalid joint %d (max %d)" +msgstr "" + +#: src/emc/motion/command.c:1427 +msgid "need to be enabled, in coord mode for probe move" +msgstr "" + +#: src/emc/motion/command.c:1437 +msgid "can't do probe move with limits exceeded" +msgstr "" + +#: src/emc/motion/command.c:1451 +msgid "Probe is already clear when starting G38.4 or G38.5 move" +msgstr "" + +#: src/emc/motion/command.c:1453 +msgid "Probe is already tripped when starting G38.2 or G38.3 move" +msgstr "" + +#: src/emc/motion/command.c:1473 +msgid "can't add probe move" +msgstr "" + +#: src/emc/motion/command.c:1498 +msgid "need to be enabled, in coord mode for rigid tap move" +msgstr "" + +#: src/emc/motion/command.c:1509 +msgid "can't do rigid tap move with limits exceeded" +msgstr "" + +#: src/emc/motion/command.c:1526 +msgid "can't add rigid tap move" +msgstr "" + +#: src/emc/motion/command.c:1541 +msgid "need to be enabled, in teleop mode for teleop move" +msgstr "" + +#: src/emc/motion/command.c:1710 +#, c-format +msgid "joint %d: too many compensation entries" +msgstr "" + +#: src/emc/motion/command.c:1716 +#, c-format +msgid "joint %d: compensation values must increase" +msgstr "" + +#: src/emc/motion/command.c:1745 +#, c-format +msgid "unrecognized command %d" +msgstr "" + +#: src/emc/motion/motion.c:212 +msgid "MOTION: hal_init() failed\n" +msgstr "" + +#: src/emc/motion/motion.c:217 +#, c-format +msgid "MOTION: num_joints is %d, must be between 1 and %d\n" +msgstr "" + +#: src/emc/motion/motion.c:224 +#, c-format +msgid "MOTION: num_dio is %d, must be between 1 and %d\n" +msgstr "" + +#: src/emc/motion/motion.c:231 +#, c-format +msgid "MOTION: num_aio is %d, must be between 1 and %d\n" +msgstr "" + +#: src/emc/motion/motion.c:239 +msgid "MOTION: init_hal_io() failed\n" +msgstr "" + +#: src/emc/motion/motion.c:248 +msgid "MOTION: init_comm_buffers() failed\n" +msgstr "" + +#: src/emc/motion/motion.c:256 +msgid "MOTION: init_threads() failed\n" +msgstr "" + +#: src/emc/motion/motion.c:281 +#, c-format +msgid "MOTION: hal_stop_threads() failed, returned %d\n" +msgstr "" + +#: src/emc/motion/motion.c:294 +#, c-format +msgid "MOTION: rtapi_shmem_delete() failed, returned %d\n" +msgstr "" + +#: src/emc/motion/motion.c:300 +#, c-format +msgid "MOTION: hal_exit() failed, returned %d\n" +msgstr "" + +#: src/emc/motion/motion.c:323 +msgid "MOTION: emcmot_hal_data malloc failed\n" +msgstr "" + +#: src/emc/motion/motion.c:331 +msgid "MOTION: joints malloc failed\n" +msgstr "" + +#: src/emc/motion/motion.c:695 +#, c-format +msgid "MOTION: joint %d pin/param export failed\n" +msgstr "" + +#: src/emc/motion/homing.c:80 src/emc/motion/homing.c:748 +#, c-format +msgid "hit limit in home state %d" +msgstr "" + +#: src/emc/motion/homing.c:90 +#, c-format +msgid "end of move in home state %d" +msgstr "" + +#: src/emc/motion/homing.c:185 +#, c-format +msgid "unknown state '%d' during homing sequence" +msgstr "" + +#: src/emc/motion/homing.c:246 +msgid "Cannot home while shared home switch is closed" +msgstr "" + +#: src/emc/motion/homing.c:290 +msgid "" +"invalid homing config: non-zero LATCH_VEL needs either SEARCH_VEL or " +"USE_INDEX" +msgstr "" + +#: src/emc/motion/homing.c:299 +msgid "invalid homing config: non-zero SEARCH_VEL needs LATCH_VEL" +msgstr "" + +#: src/emc/motion/homing.c:447 +msgid "Home switch inactive before start of backoff move" +msgstr "" + +#: src/emc/motion/homing.c:495 +msgid "Home switch active before start of latch move" +msgstr "" + +#: src/emc/motion/homing.c:551 +msgid "Home switch inactive before start of latch move" +msgstr "" + +#: src/emc/motion/homing.c:797 +#, c-format +msgid "unknown state '%d' during homing" +msgstr "" + +#: tcl/bin/emccalib.tcl:80 +#, fuzzy +msgid "Machinekit Servo Axis Calibration" +msgstr "出来るように" + +#: tcl/bin/emccalib.tcl:90 +msgid "Save To File" +msgstr "" + +#: tcl/bin/emccalib.tcl:106 tcl/bin/genedit.tcl:77 tcl/bin/halconfig.tcl:151 +#: tcl/bin/halshow.tcl:85 tcl/mini.tcl:2516 tcl/tklinuxcnc.tcl:719 +#: tcl/ngcgui.tcl:489 +msgid "File" +msgstr "ファイル" + +#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:236 tcl/bin/halconfig.tcl:153 +#: tcl/mini.tcl:3558 src/emc/usr_intf/touchy/touchy.glade:2420 +msgid "Refresh" +msgstr "" + +#: tcl/bin/emccalib.tcl:110 tcl/bin/genedit.tcl:82 tcl/bin/halconfig.tcl:155 +#: tcl/mini.tcl:2535 src/emc/usr_intf/axis/scripts/axis.py:2107 +msgid "Save" +msgstr "" + +#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:623 +#, tcl-format +msgid "Tune %d" +msgstr "" + +#: tcl/bin/emccalib.tcl:162 tcl/bin/halconfig.tcl:628 +msgid "INI Name" +msgstr "" + +#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:629 +msgid "HAL's Value" +msgstr "" + +#: tcl/bin/emccalib.tcl:165 tcl/bin/halconfig.tcl:631 +#, fuzzy +msgid "Next Value" +msgstr "テキストファイル" + +#: tcl/bin/emccalib.tcl:230 tcl/bin/halconfig.tcl:680 tcl/bin/halconfig.tcl:731 +#, fuzzy +msgid "Test" +msgstr "リーセット" + +#: tcl/bin/emccalib.tcl:388 tcl/bin/halconfig.tcl:883 +#, tcl-format +msgid "" +"The HAL parameter \n" +" %s \n" +" has changed. \n" +" Really quit?" +msgstr "" + +#: tcl/bin/emccalib.tcl:413 tcl/bin/halconfig.tcl:1170 +msgid "" +"Not permitted to save here.\n" +"\n" +" You need to copy a configuration to your home directory and work there." +msgstr "" + +#: tcl/bin/emccalib.tcl:487 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 +#: tcl/bin/pickconfig.tcl:843 tcl/bin/pickconfig.tcl:854 +#: tcl/scripts/Set_Coordinates.tcl:205 tcl/scripts/Set_Coordinates.tcl:228 +#, fuzzy, tcl-format +msgid "can't save %s" +msgstr "開けません" + +#: tcl/bin/emcdebug.tcl:166 tcl/bin/emcdebug.tcl:177 +msgid "LinuxCNC Debug" +msgstr "" + +#: tcl/bin/emcdebug.tcl:185 +msgid "Invalid INI file entries" +msgstr "" + +#: tcl/bin/emcdebug.tcl:186 +msgid "Configuration information" +msgstr "" + +#: tcl/bin/emcdebug.tcl:187 +msgid "Use of defaults" +msgstr "" + +#: tcl/bin/emcdebug.tcl:188 +msgid "Version information" +msgstr "" + +#: tcl/bin/emcdebug.tcl:189 +#, fuzzy +msgid "Command issuing" +msgstr "命令番:" + +#: tcl/bin/emcdebug.tcl:190 +msgid "IO points" +msgstr "" + +#: tcl/bin/emcdebug.tcl:191 +msgid "NML" +msgstr "" + +#: tcl/bin/emcdebug.tcl:192 +#, fuzzy +msgid "Motion time" +msgstr "動き" + +#: tcl/bin/emcdebug.tcl:193 src/emc/usr_intf/axis/scripts/debuglevel.py:42 +msgid "Interpreter" +msgstr "" + +#: tcl/bin/emcdebug.tcl:194 +msgid "RCS" +msgstr "" + +#: tcl/bin/emcdebug.tcl:195 +msgid "Trajectory level" +msgstr "" + +#: tcl/bin/emcdebug.tcl:196 +msgid "Interpreter list" +msgstr "" + +#: tcl/bin/genedit.tcl:78 tcl/mini.tcl:2533 +msgid "New" +msgstr "" + +#: tcl/bin/genedit.tcl:80 tcl/mini.tcl:1667 tcl/mini.tcl:2534 +#: tcl/tklinuxcnc.tcl:720 tcl/tklinuxcnc.tcl:1657 +msgid "Open..." +msgstr "開く..." + +#: tcl/bin/genedit.tcl:84 tcl/mini.tcl:2536 +msgid "Save As..." +msgstr "" + +#: tcl/bin/genedit.tcl:87 tcl/bin/halconfig.tcl:165 tcl/bin/halshow.tcl:92 +#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1322 +#: tcl/ngcgui.tcl:3832 +msgid "Exit" +msgstr "出る" + +#: tcl/bin/genedit.tcl:91 tcl/mini.tcl:2517 +#: src/emc/usr_intf/gscreen/gscreen.glade:2685 +#, fuzzy +msgid "Edit" +msgstr "出る" + +#: tcl/bin/genedit.tcl:92 tcl/mini.tcl:2543 +msgid "Cut" +msgstr "" + +#: tcl/bin/genedit.tcl:94 tcl/mini.tcl:2544 +msgid "Copy" +msgstr "" + +#: tcl/bin/genedit.tcl:96 tcl/mini.tcl:2545 +#, fuzzy +msgid "Paste" +msgstr "間断" + +#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:73 +msgid "Select All" +msgstr "" + +#: tcl/bin/genedit.tcl:104 tcl/bin/halconfig.tcl:192 tcl/mini.tcl:919 +#: tcl/mini.tcl:2519 tcl/tklinuxcnc.tcl:790 +#: src/emc/usr_intf/stepconf/main_page.glade:445 +msgid "Help" +msgstr "助け" + +#: tcl/bin/genedit.tcl:105 tcl/mini.tcl:1011 tcl/mini.tcl:2559 +#: tcl/tklinuxcnc.tcl:796 +msgid "About..." +msgstr "これについて..." + +#: tcl/bin/genedit.tcl:130 +msgid "Save and Reload" +msgstr "" + +#: tcl/bin/genedit.tcl:133 tcl/mini.tcl:2550 +#, fuzzy +msgid "Find..." +msgstr "フォント..." + +#: tcl/bin/genedit.tcl:135 tcl/mini.tcl:2552 +msgid "Renumber File..." +msgstr "" + +#: tcl/bin/genedit.tcl:140 tcl/mini.tcl:917 tcl/mini.tcl:2518 +#: tcl/tklinuxcnc.tcl:746 src/emc/usr_intf/gmoccapy/gmoccapy.glade:5135 +msgid "Settings" +msgstr "撰" + +#: tcl/bin/genedit.tcl:141 tcl/mini.tcl:2554 +msgid "No Numbering" +msgstr "" + +#: tcl/bin/genedit.tcl:144 tcl/mini.tcl:2556 +msgid "Line Numbering..." +msgstr "" + +#: tcl/bin/genedit.tcl:150 tcl/tklinuxcnc.tcl:768 +msgid "Scripts" +msgstr "スクリプト" + +#: tcl/bin/genedit.tcl:177 +#, fuzzy +msgid "About TkEditor" +msgstr "TkEmcについて" + +#: tcl/bin/genedit.tcl:179 +msgid "" +"TkEditor\n" +"\n" +"Simple Tcl/Tk Text Editor\n" +"\n" +"GPL Version 2" +msgstr "" + +#: tcl/bin/genedit.tcl:267 tcl/mini.tcl:3090 +msgid "Find" +msgstr "" + +#: tcl/bin/genedit.tcl:270 +msgid "Find:" +msgstr "" + +#: tcl/bin/genedit.tcl:276 +msgid "Replace:" +msgstr "" + +#: tcl/bin/genedit.tcl:282 +msgid "Find All" +msgstr "" + +#: tcl/bin/genedit.tcl:285 tcl/mini.tcl:3113 +msgid "Replace All" +msgstr "" + +#: tcl/bin/genedit.tcl:288 +msgid "Skip This" +msgstr "" + +#: tcl/bin/genedit.tcl:291 +msgid "Replace This" +msgstr "" + +#: tcl/bin/genedit.tcl:297 +msgid "Clear" +msgstr "" + +#: tcl/bin/genedit.tcl:422 tcl/mini.tcl:2640 +msgid "Set Line Numbering" +msgstr "" + +#: tcl/bin/genedit.tcl:424 tcl/mini.tcl:2644 +msgid "Increment" +msgstr "" + +#: tcl/bin/genedit.tcl:426 tcl/mini.tcl:2646 +msgid "One" +msgstr "" + +#: tcl/bin/genedit.tcl:429 tcl/mini.tcl:2648 +msgid "Two" +msgstr "" + +#: tcl/bin/genedit.tcl:432 tcl/mini.tcl:2650 +#, fuzzy +msgid "Five" +msgstr "ファイル" + +#: tcl/bin/genedit.tcl:435 tcl/mini.tcl:2652 +msgid "Ten" +msgstr "" + +#: tcl/bin/genedit.tcl:439 tcl/mini.tcl:2654 +msgid "Space" +msgstr "" + +#: tcl/bin/genedit.tcl:441 tcl/mini.tcl:2656 +msgid "Single Space" +msgstr "" + +#: tcl/bin/genedit.tcl:444 tcl/mini.tcl:2658 +msgid "Double Space" +msgstr "" + +#: tcl/bin/genedit.tcl:447 tcl/mini.tcl:2660 +msgid "Tab Space" +msgstr "" + +#: tcl/bin/genedit.tcl:453 +msgid "Next Number:" +msgstr "" + +#: tcl/bin/genedit.tcl:474 tcl/mini.tcl:2668 +#, fuzzy +msgid "Renumber" +msgstr "つづく" + +#: tcl/bin/halconfig.tcl:88 tcl/bin/halshow.tcl:33 +msgid "HAL Configuration" +msgstr "" + +#: tcl/bin/halconfig.tcl:103 +msgid "Would you like to save your configuration before you exit?" +msgstr "" + +#: tcl/bin/halconfig.tcl:103 +msgid "Save All" +msgstr "" + +#: tcl/bin/halconfig.tcl:103 +msgid "Save Tune" +msgstr "" + +#: tcl/bin/halconfig.tcl:103 +msgid "Save as Netlist" +msgstr "" + +#: tcl/bin/halconfig.tcl:103 +msgid "Don't Save" +msgstr "" + +#: tcl/bin/halconfig.tcl:132 +msgid "Show" +msgstr "" + +#: tcl/bin/halconfig.tcl:133 +msgid "Watch" +msgstr "" + +#: tcl/bin/halconfig.tcl:134 +msgid "Modify" +msgstr "" + +#: tcl/bin/halconfig.tcl:157 +msgid "Save INI Tuning" +msgstr "" + +#: tcl/bin/halconfig.tcl:159 +msgid "Save HAL Ini" +msgstr "" + +#: tcl/bin/halconfig.tcl:161 +msgid "Save HAL Net" +msgstr "" + +#: tcl/bin/halconfig.tcl:163 +msgid "Save and Exit" +msgstr "" + +#: tcl/bin/halconfig.tcl:168 tcl/mini.tcl:916 tcl/tklinuxcnc.tcl:739 +msgid "View" +msgstr "見方" + +#: tcl/bin/halconfig.tcl:170 tcl/bin/halshow.tcl:104 +msgid "Expand Tree" +msgstr "" + +#: tcl/bin/halconfig.tcl:172 tcl/bin/halshow.tcl:106 +msgid "Collapse Tree" +msgstr "" + +#: tcl/bin/halconfig.tcl:175 tcl/bin/halshow.tcl:109 +msgid "Expand Pins" +msgstr "" + +#: tcl/bin/halconfig.tcl:177 tcl/bin/halshow.tcl:111 +#, fuzzy +msgid "Expand Parameters" +msgstr "パラムのファイルを読む" + +#: tcl/bin/halconfig.tcl:179 tcl/bin/halshow.tcl:113 +msgid "Expand Signals" +msgstr "" + +#: tcl/bin/halconfig.tcl:182 tcl/bin/halshow.tcl:116 +msgid "Erase Watch" +msgstr "" + +#: tcl/bin/halconfig.tcl:194 tcl/mini.tcl:840 tcl/mini.tcl:2785 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "About" +msgstr "これについて..." + +#: tcl/bin/halconfig.tcl:196 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2579 +#, fuzzy +msgid "Main" +msgstr "手動" + +#: tcl/bin/halconfig.tcl:476 +msgid "Enter HAL command :" +msgstr "" + +#: tcl/bin/halconfig.tcl:479 tcl/bin/halconfig.tcl:528 tcl/bin/halshow.tcl:354 +msgid "Execute" +msgstr "" + +#: tcl/bin/halconfig.tcl:943 tcl/bin/halshow.tcl:405 +msgid "Select a node to show." +msgstr "" + +#: tcl/bin/halconfig.tcl:968 tcl/bin/halshow.tcl:429 +msgid "<-- Select a Leaf. Click on its name." +msgstr "" + +#: tcl/bin/halconfig.tcl:1085 tcl/bin/halconfig.tcl:1095 +#: tcl/bin/halconfig.tcl:1102 tcl/bin/halconfig.tcl:1109 +#: tcl/bin/halconfig.tcl:1116 +#, tcl-format +msgid "Click a highlighted entry where %s should go." +msgstr "" + +#: tcl/bin/halconfig.tcl:1092 +msgid "Nothing to be done for parameters here. Try the tuning page" +msgstr "" + +#: tcl/bin/halconfig.tcl:1124 +#, tcl-format +msgid "%s is not a leaf, try again" +msgstr "" + +#: tcl/bin/halconfig.tcl:1281 +msgid "" +"Copyright Raymond E Henry. 2006\n" +"License: GPL Version 2\n" +"\n" +"Halconfig is an LinuxCNC configuration tool. It requires that you have " +"started an instance of linuxcnc.\n" +"\n" +"This script carries no warranty or liability for its use to the extent " +"allowed by law." +msgstr "" + +#: tcl/bin/halshow.tcl:69 +msgid " SHOW " +msgstr "" + +#: tcl/bin/halshow.tcl:70 +msgid " WATCH " +msgstr "" + +#: tcl/bin/halshow.tcl:90 +msgid "Load Watch List" +msgstr "" + +#: tcl/bin/halshow.tcl:102 +#, fuzzy +msgid "Tree View" +msgstr "見方" + +#: tcl/bin/halshow.tcl:349 +msgid "Test HAL command :" +msgstr "" + +#: tcl/bin/halshow.tcl:544 +msgid "Load a watch list" +msgstr "" + +#: tcl/bin/halshow.tcl:567 +msgid "Save current watch list" +msgstr "" + +#: tcl/bin/halshow.tcl:581 +msgid "Commands may be tested here but they will NOT be saved" +msgstr "" + +#: tcl/bin/pickconfig.tcl:96 +msgid "" +"Can't find the bwidget 1.7 package. There is a debian bwidget package; " +"install \n" +"it with sudo apt-get install bwidget." +msgstr "" + +#: tcl/bin/pickconfig.tcl:154 +#, fuzzy +msgid "Machinekit Configuration Selector" +msgstr "スピンドル消した" + +#: tcl/bin/pickconfig.tcl:296 +msgid "No details available." +msgstr "" + +#: tcl/bin/pickconfig.tcl:343 +msgid "" +"Welcome to MachineKit.\n" +"\n" +"Select a machine configuration from the list on the left.\n" +"Details about the selected configuration will appear in the display on the " +"right.\n" +"Click 'OK' to run the selected configuration" +msgstr "" + +#: tcl/bin/pickconfig.tcl:401 +msgid "My Configurations" +msgstr "" + +#: tcl/bin/pickconfig.tcl:405 +msgid "Sample Configurations" +msgstr "" + +#: tcl/bin/pickconfig.tcl:530 +#, tcl-format +msgid "ERROR: no configurations found in path '%s'" +msgstr "" + +#: tcl/bin/pickconfig.tcl:567 +msgid "Copy Configuration?" +msgstr "" + +#: tcl/bin/pickconfig.tcl:567 +#, tcl-format +msgid "" +"Would you like to copy the %s configuration to your home directory so you " +"can customize it?" +msgstr "" + +#: tcl/bin/pickconfig.tcl:567 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:563 +msgid "Yes" +msgstr "" + +#: tcl/bin/pickconfig.tcl:749 +msgid "Configuration Copied" +msgstr "" + +#: tcl/bin/pickconfig.tcl:749 +#, tcl-format +msgid "" +"The configuration file has been copied to %s. Next time, choose this " +"location when starting MachineKit." +msgstr "" + +#: tcl/bin/pickconfig.tcl:799 +msgid "Shortcut Created" +msgstr "" + +#: tcl/bin/pickconfig.tcl:799 +msgid "" +"A shortcut to this configuration file has been created on your desktop. You " +"can use it to automatically launch this configuration." +msgstr "" + +#: tcl/bin/pickconfig.tcl:805 +msgid "Create Desktop Shortcut" +msgstr "" + +#: tcl/bin/tkbackplot.tcl:110 +msgid "TkLinuxCNC BackPlot" +msgstr "" + +#: tcl/bin/tkbackplot.tcl:125 +#, fuzzy +msgid "SETUP" +msgstr "終止符" + +#: tcl/bin/tkbackplot.tcl:127 +#, fuzzy +msgid "RESET" +msgstr "リーセット" + +#: tcl/bin/tkbackplot.tcl:129 +msgid "CANCEL" +msgstr "" + +#: tcl/bin/tkbackplot.tcl:250 +msgid "AXIS" +msgstr "" + +#: tcl/bin/tkbackplot.tcl:251 +msgid "OFFSET" +msgstr "" + +#: tcl/bin/tkbackplot.tcl:252 +msgid "ANGLE" +msgstr "" + +#: tcl/bin/tkbackplot.tcl:253 +msgid "DIRECTION" +msgstr "" + +#: tcl/bin/tkbackplot.tcl:270 +msgid "SIZE :" +msgstr "" + +#: tcl/mini.tcl:490 +#, tcl-format +msgid "JOG %s +" +msgstr "" + +#: tcl/mini.tcl:491 +#, tcl-format +msgid "JOG %s -" +msgstr "" + +#: tcl/mini.tcl:492 +#, tcl-format +msgid "" +"%s\n" +"\n" +"Z\n" +"E\n" +"R\n" +"O" +msgstr "" + +#: tcl/mini.tcl:840 +msgid "" +"TkMini \n" +"\n" +"Tcl/Tk GUI for Enhanced Machine Controller\n" +"\n" +"GPL Copyright 2003 \n" +"Ray Henry \n" +"\n" +" 3D backplotter by Paul Corner \n" +" \n" +"This software comes with ABSOLUTELY NO GUARANTEE! \n" +"For details see the copyright.html file in this directory." +msgstr "" + +#: tcl/mini.tcl:915 +#, fuzzy +msgid "Program" +msgstr "プローグラム: " + +#: tcl/mini.tcl:918 +#, fuzzy +msgid "Info" +msgstr "インフォ..." + +#: tcl/mini.tcl:923 +#, fuzzy +msgid "Backplot" +msgstr "描" + +#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:5915 +#, fuzzy +msgid "Editor" +msgstr "エディット..." + +#: tcl/mini.tcl:927 +#, fuzzy +msgid "Offsets" +msgstr "平行移動:" + +#: tcl/mini.tcl:929 +#, fuzzy +msgid "Tools" +msgstr "道具:" + +#: tcl/mini.tcl:951 tcl/mini.tcl:3565 tcl/tklinuxcnc.tcl:732 +msgid "Reset" +msgstr "リーセット" + +#: tcl/mini.tcl:960 +msgid "Position Type" +msgstr "" + +#: tcl/mini.tcl:962 +msgid "Tool Info" +msgstr "" + +#: tcl/mini.tcl:964 +#, fuzzy +msgid "Offset Info" +msgstr "平行移動:" + +#: tcl/mini.tcl:967 +msgid "Show Restart" +msgstr "" + +#: tcl/mini.tcl:968 +msgid "Hide Restart" +msgstr "" + +#: tcl/mini.tcl:970 +msgid "Show Split Right" +msgstr "" + +#: tcl/mini.tcl:972 +msgid "Show Mode Full" +msgstr "" + +#: tcl/mini.tcl:974 +msgid "Show Popin Full" +msgstr "" + +#: tcl/mini.tcl:978 +msgid "Actual Position" +msgstr "" + +#: tcl/mini.tcl:980 +msgid "Commanded Position" +msgstr "" + +#: tcl/mini.tcl:983 +#, fuzzy +msgid "Machine Position" +msgstr "出来るように" + +#: tcl/mini.tcl:985 +msgid "Relative Position" +msgstr "" + +#: tcl/mini.tcl:988 tcl/tklinuxcnc.tcl:747 +msgid "Calibration..." +msgstr "較正..." + +#: tcl/mini.tcl:990 +msgid "HAL Show..." +msgstr "" + +#: tcl/mini.tcl:992 +#, fuzzy +msgid "HAL Config..." +msgstr "ローグ..." + +#: tcl/mini.tcl:997 +#, fuzzy +msgid "Program File" +msgstr "プローグラム: " + +#: tcl/mini.tcl:998 +#, tcl-format +msgid "Program file is %s" +msgstr "" + +#: tcl/mini.tcl:999 +msgid "Editor File" +msgstr "" + +#: tcl/mini.tcl:1000 +#, tcl-format +msgid "Editor file is %s" +msgstr "" + +#: tcl/mini.tcl:1001 +#, fuzzy +msgid "Parameter File" +msgstr "パラムのファイルを読む" + +#: tcl/mini.tcl:1002 +#, fuzzy, tcl-format +msgid "Parameter file is %s" +msgstr "パラムのファイルを読む" + +#: tcl/mini.tcl:1003 +#, fuzzy +msgid "Tool File" +msgstr "ファイル" + +#: tcl/mini.tcl:1004 +#, tcl-format +msgid "Tool file is %s" +msgstr "" + +#: tcl/mini.tcl:1006 +msgid "Active G Codes" +msgstr "" + +#: tcl/mini.tcl:1007 +#, tcl-format +msgid "" +"Active codes include; \n" +"%s" +msgstr "" + +#: tcl/mini.tcl:1010 tcl/mini.tcl:2558 tcl/tklinuxcnc.tcl:791 +msgid "Help..." +msgstr "助け..." + +#: tcl/mini.tcl:1027 tcl/tklinuxcnc.tcl:890 +msgid "ABORT" +msgstr "中断" + +#: tcl/mini.tcl:1038 tcl/mini.tcl:2048 +msgid "CONTINUE" +msgstr "" + +#: tcl/mini.tcl:1044 tcl/tklinuxcnc.tcl:828 tcl/tklinuxcnc.tcl:2248 +#: src/emc/usr_intf/touchy/touchy.glade:1264 +msgid "MDI" +msgstr "一線(MDI)" + +#: tcl/mini.tcl:1048 tcl/tklinuxcnc.tcl:2239 +msgid "AUTO" +msgstr "自動" + +#: tcl/mini.tcl:1052 tcl/mini.tcl:1812 tcl/tklinuxcnc.tcl:2141 +#: tcl/tklinuxcnc.tcl:2261 +msgid "MANUAL" +msgstr "手動" + +#: tcl/mini.tcl:1106 +#, fuzzy +msgid "Tool #:" +msgstr "道具:" + +#: tcl/mini.tcl:1108 +#, fuzzy +msgid "Length :" +msgstr "長さ:" + +#: tcl/mini.tcl:1119 +#, fuzzy +msgid "Work Offsets: " +msgstr "工作物平行移動:" + +#: tcl/mini.tcl:1121 +msgid "start offsets popup here" +msgstr "" + +#: tcl/mini.tcl:1165 +msgid "start override popup here" +msgstr "" + +#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1739 +msgid "Feed Override:" +msgstr "フィード手直し:" + +#: tcl/mini.tcl:1180 +msgid "-- MESSAGES --" +msgstr "" + +#: tcl/mini.tcl:1230 +msgid "toggleView's not doin nothin yet" +msgstr "" + +#: tcl/mini.tcl:1282 +msgid "Can't set zero with a tool offset active so I issued G49 to cancel it." +msgstr "" + +#: tcl/mini.tcl:1346 +#, tcl-format +msgid "Can't update the var file while machine is in auto and %s." +msgstr "" + +#: tcl/mini.tcl:1400 tcl/tklinuxcnc.tcl:1227 +msgid "override limits" +msgstr "方図を聞き捨てる" + +#: tcl/mini.tcl:1405 tcl/tklinuxcnc.tcl:1263 +msgid "home" +msgstr "原点" + +#: tcl/mini.tcl:1426 +msgid "DEFAULT" +msgstr "" + +#: tcl/mini.tcl:1427 +#, fuzzy +msgid "Speed:" +msgstr "軸の時速:" + +#: tcl/mini.tcl:1430 +msgid "RAPID" +msgstr "" + +#: tcl/mini.tcl:1447 tcl/tklinuxcnc.tcl:1391 +msgid "Set Jog Speed" +msgstr "ジョグ時速" + +#: tcl/mini.tcl:1453 tcl/tklinuxcnc.tcl:1404 +msgid "Set jog speed:" +msgstr "ジョグ時速:" + +#: tcl/mini.tcl:1511 +msgid "JOG X +" +msgstr "" + +#: tcl/mini.tcl:1512 +msgid "JOG X -" +msgstr "" + +#: tcl/mini.tcl:1516 +msgid "increment" +msgstr "" + +#: tcl/mini.tcl:1518 tcl/tklinuxcnc.tcl:602 tcl/tklinuxcnc.tcl:1249 +#: tcl/tklinuxcnc.tcl:1253 src/emc/usr_intf/gscreen/gscreen.glade:1574 +#: src/emc/usr_intf/gscreen/gscreen.glade:1586 +msgid "continuous" +msgstr "連綿" + +#: tcl/mini.tcl:1520 +msgid "" +"A\n" +"L\n" +"L\n" +"\n" +"Z\n" +"E\n" +"R\n" +"O" +msgstr "" + +#: tcl/mini.tcl:1588 src/emc/usr_intf/touchy/touchy.glade:1422 +#, fuzzy +msgid "Spindle Forward" +msgstr "スピンドル前進" + +#: tcl/mini.tcl:1589 src/emc/usr_intf/touchy/touchy.glade:1433 +#, fuzzy +msgid "Spindle Reverse" +msgstr "スピンドル逆" + +#: tcl/mini.tcl:1590 tcl/tklinuxcnc.tcl:871 +msgid "Spindle off" +msgstr "スピンドル消した" + +#: tcl/mini.tcl:1592 src/emc/usr_intf/touchy/touchy.glade:1479 +#, fuzzy +msgid "Spindle Slower" +msgstr "スピンドル前進" + +#: tcl/mini.tcl:1596 src/emc/usr_intf/touchy/touchy.glade:1464 +#, fuzzy +msgid "Spindle Faster" +msgstr "スピンドル前進" + +#: tcl/mini.tcl:1632 tcl/tklinuxcnc.tcl:1620 +msgid "MDI:" +msgstr "一線(MDI):" + +#: tcl/mini.tcl:1669 tcl/tklinuxcnc.tcl:1658 +#: src/emc/usr_intf/stepconf/main_page.glade:298 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2625 +msgid "Run" +msgstr "動く" + +#: tcl/mini.tcl:1671 tcl/tklinuxcnc.tcl:1659 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2638 +msgid "Pause" +msgstr "間断" + +#: tcl/mini.tcl:1673 tcl/tklinuxcnc.tcl:1660 +msgid "Resume" +msgstr "つづく" + +#: tcl/mini.tcl:1675 tcl/tklinuxcnc.tcl:1661 +msgid "Step" +msgstr "徐徐に" + +#: tcl/mini.tcl:1677 tcl/tklinuxcnc.tcl:1662 +msgid "Verify" +msgstr "質す" + +#: tcl/mini.tcl:1698 +msgid "RESTART LINE" +msgstr "" + +#: tcl/mini.tcl:1699 src/emc/usr_intf/stepconf/main_page.glade:531 +msgid "Back" +msgstr "" + +#: tcl/mini.tcl:1700 +msgid "Ahead" +msgstr "" + +#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1300 +#: src/emc/usr_intf/gscreen/gscreen.glade:3973 +#, fuzzy +msgid "Restart" +msgstr "リーセット" + +#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 tcl/tklinuxcnc.tcl:465 +#: src/emc/usr_intf/axis/scripts/axis.py:2023 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:754 +msgid "All files" +msgstr "全部のファイル" + +#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 tcl/tklinuxcnc.tcl:466 +msgid "Text files" +msgstr "テキストファイル" + +#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 tcl/tklinuxcnc.tcl:467 +msgid "NC files" +msgstr "NCファイル" + +#: tcl/mini.tcl:1753 +msgid "" +"The interpreter is running. \n" +" Pressing OK will abort and load the new program" +msgstr "" + +#: tcl/mini.tcl:1886 +#, fuzzy +msgid "ESTOPPED" +msgstr "終止符" + +#: tcl/mini.tcl:1889 +#, fuzzy +msgid "ESTOP PUSH" +msgstr "リーセット" + +#: tcl/mini.tcl:1892 tcl/tklinuxcnc.tcl:2233 +msgid "ESTOP RESET" +msgstr "リーセット" + +#: tcl/mini.tcl:1897 tcl/tklinuxcnc.tcl:2298 +msgid "SPINDLE FORWARD" +msgstr "スピンドル前進" + +#: tcl/mini.tcl:1899 tcl/tklinuxcnc.tcl:2300 +msgid "SPINDLE REVERSE" +msgstr "スピンドル逆" + +#: tcl/mini.tcl:1901 tcl/tklinuxcnc.tcl:2302 +msgid "SPINDLE OFF" +msgstr "スピンドル消した" + +#: tcl/mini.tcl:1903 tcl/tklinuxcnc.tcl:2304 +msgid "SPINDLE INCREASE" +msgstr "スピンドル加速" + +#: tcl/mini.tcl:1905 tcl/tklinuxcnc.tcl:2306 +msgid "SPINDLE DECREASE" +msgstr "スピンドル減速" + +#: tcl/mini.tcl:1907 tcl/tklinuxcnc.tcl:2308 +msgid "SPINDLE ?" +msgstr "スピンドルは?" + +#: tcl/mini.tcl:1911 tcl/tklinuxcnc.tcl:2312 +msgid "BRAKE ON" +msgstr "ブレーキ点いた" + +#: tcl/mini.tcl:1913 tcl/tklinuxcnc.tcl:2314 +msgid "BRAKE OFF" +msgstr "ブレーキ消した" + +#: tcl/mini.tcl:1915 tcl/tklinuxcnc.tcl:2316 +msgid "BRAKE ?" +msgstr "ブレーキは?" + +#: tcl/mini.tcl:1919 tcl/tklinuxcnc.tcl:2274 +msgid "MIST ON" +msgstr "雰点け" + +#: tcl/mini.tcl:1921 tcl/tklinuxcnc.tcl:2276 +msgid "MIST OFF" +msgstr "雰消した" + +#: tcl/mini.tcl:1923 tcl/tklinuxcnc.tcl:2278 +msgid "MIST ?" +msgstr "雰は?" + +#: tcl/mini.tcl:1927 tcl/tklinuxcnc.tcl:2282 +msgid "FLOOD ON" +msgstr "水洗点いた" + +#: tcl/mini.tcl:1929 tcl/tklinuxcnc.tcl:2284 +msgid "FLOOD OFF" +msgstr "水洗消した" + +#: tcl/mini.tcl:1931 tcl/tklinuxcnc.tcl:2286 +msgid "FLOOD ?" +msgstr "水洗は?" + +#: tcl/mini.tcl:2052 +msgid "FEEDHOLD" +msgstr "" + +#: tcl/mini.tcl:2124 +msgid "" +"TOOL SETUP \n" +" Click or tab to edit. Press enter to return to keyboard machine control." +msgstr "" + +#: tcl/mini.tcl:2130 +msgid " TOOL NUMBER " +msgstr "" + +#: tcl/mini.tcl:2131 +msgid " LENGTH " +msgstr "" + +#: tcl/mini.tcl:2132 +msgid " DIAMETER " +msgstr "" + +#: tcl/mini.tcl:2133 +msgid " COMMENT " +msgstr "" + +#: tcl/mini.tcl:2188 +msgid "Add Extra Tool" +msgstr "" + +#: tcl/mini.tcl:2189 +msgid "Remove Last Tool" +msgstr "" + +#: tcl/mini.tcl:2217 tcl/mini.tcl:2253 +#, tcl-format +msgid "Can't update the tool file while machine is in auto and %s." +msgstr "" + +#: tcl/mini.tcl:2229 +msgid "This is not a good number." +msgstr "" + +#: tcl/mini.tcl:2293 +msgid "" +"COORDINATE SYSTEM SETUP \n" +"\n" +" Click value to edit with keyboard. Press enter to return to keyboard " +"control of machine. \n" +" " +msgstr "" + +#: tcl/mini.tcl:2320 tcl/scripts/Set_Coordinates.tcl:80 +#, fuzzy +msgid "Axis " +msgstr "軸の平行移動" + +#: tcl/mini.tcl:2321 +msgid "Value " +msgstr "" + +#: tcl/mini.tcl:2326 tcl/scripts/Set_Coordinates.tcl:91 +msgid "Teach" +msgstr "" + +#: tcl/mini.tcl:2334 +msgid "Write And Load File " +msgstr "" + +#: tcl/mini.tcl:2336 +msgid "Offset By Radius" +msgstr "" + +#: tcl/mini.tcl:2337 +msgid "Offset By Length" +msgstr "" + +#: tcl/mini.tcl:2342 +msgid "Subtract" +msgstr "" + +#: tcl/mini.tcl:2344 src/emc/usr_intf/gmoccapy/gmoccapy.glade:6712 +msgid "Add" +msgstr "" + +#: tcl/mini.tcl:2366 +msgid "Zero All G54" +msgstr "" + +#: tcl/mini.tcl:2367 +msgid "Zero All G55" +msgstr "" + +#: tcl/mini.tcl:2368 +msgid "Zero All G56" +msgstr "" + +#: tcl/mini.tcl:2369 +msgid "Zero All G57" +msgstr "" + +#: tcl/mini.tcl:2370 +msgid "Zero All G58" +msgstr "" + +#: tcl/mini.tcl:2371 +msgid "Zero All G59" +msgstr "" + +#: tcl/mini.tcl:2372 +msgid "Zero All G59.1" +msgstr "" + +#: tcl/mini.tcl:2373 +msgid "Zero All G59.2" +msgstr "" + +#: tcl/mini.tcl:2374 +msgid "Zero All G59.3" +msgstr "" + +#: tcl/mini.tcl:2375 +msgid "Zero All ????" +msgstr "" + +#: tcl/mini.tcl:2493 +msgid "Modified..." +msgstr "" + +#: tcl/mini.tcl:2538 +msgid "Save and Load" +msgstr "" + +#: tcl/mini.tcl:2540 src/emc/usr_intf/gscreen/gscreen.glade:3515 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2363 +msgid "Undo" +msgstr "" + +#: tcl/mini.tcl:2541 src/emc/usr_intf/gscreen/gscreen.glade:3526 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2411 +msgid "Redo" +msgstr "" + +#: tcl/mini.tcl:2546 tcl/tooledit.tcl:488 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6695 +msgid "Delete" +msgstr "" + +#: tcl/mini.tcl:2551 +msgid "Replace..." +msgstr "" + +#: tcl/mini.tcl:2664 +msgid "Next Number: " +msgstr "" + +#: tcl/mini.tcl:2765 +msgid "Basic Help" +msgstr "" + +#: tcl/mini.tcl:2765 +msgid "" +"This is a simple ASCII editor like many others.\n" +"\n" +"Ctrl+O Open\n" +"Ctrl+S Save\n" +"Ctrl+Z Undo\n" +"Ctrl+Y Redo\n" +"Ctrl+X Cut\n" +"Ctrl+C Copy\n" +"Ctrl+V Paste\n" +"Del Delete\n" +"Ctrl+A Select All\n" +"\n" +"Ctrl+F Find\n" +"Ctrl+R Replace " +msgstr "" + +#: tcl/mini.tcl:2785 +msgid "" +"tknotepad by Joseph Acosta. \n" +"\n" +" Modified for EMC by: Paul Corner " +msgstr "" + +#: tcl/mini.tcl:2793 +msgid "" +"The contents of this file may have changed, do you wish to to save your " +"changes?" +msgstr "" + +#: tcl/mini.tcl:2794 +msgid "New Confirm?" +msgstr "" + +#: tcl/mini.tcl:2928 +msgid "Print Setup" +msgstr "" + +#: tcl/mini.tcl:2932 +#, fuzzy +msgid "Print Command: " +msgstr "命令:" + +#: tcl/mini.tcl:3095 +msgid "Find what:" +msgstr "" + +#: tcl/mini.tcl:3101 +msgid "Replace with:" +msgstr "" + +#: tcl/mini.tcl:3109 +msgid "Find Next" +msgstr "" + +#: tcl/mini.tcl:3112 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2494 +msgid "Replace" +msgstr "" + +#: tcl/mini.tcl:3120 src/emc/usr_intf/gscreen/gscreen.py:2750 +#: src/emc/usr_intf/gmoccapy/dialogs.py:171 +msgid "Up" +msgstr "" + +#: tcl/mini.tcl:3121 src/emc/usr_intf/gscreen/gscreen.py:2754 +#: src/emc/usr_intf/gmoccapy/dialogs.py:175 +msgid "Down" +msgstr "" + +#: tcl/mini.tcl:3124 +msgid "Match case" +msgstr "" + +#: tcl/mini.tcl:3569 +msgid "rot-x" +msgstr "" + +#: tcl/mini.tcl:3579 +msgid "rot-y" +msgstr "" + +#: tcl/mini.tcl:3589 +msgid "rot-z" +msgstr "" + +#: tcl/mini.tcl:3599 +msgid "zoom" +msgstr "" + +#: tcl/mini.tcl:3655 +#, fuzzy +msgid "TEST" +msgstr "終止符" + +#: tcl/mini.tcl:3699 +msgid "Hide Setup" +msgstr "" + +#: tcl/mini.tcl:3703 +msgid "Show Setup" +msgstr "" + +#: tcl/show_errors.tcl:41 +#, fuzzy +msgid "LinuxCNC Errors" +msgstr "越度" + +#: tcl/show_errors.tcl:44 +msgid "" +"LinuxCNC terminated with an error. When reporting problems, please include " +"all the information below in your message." +msgstr "" + +#: tcl/show_errors.tcl:74 tcl/scripts/Set_Coordinates.tcl:103 +msgid "Close" +msgstr "" + +#: tcl/tklinuxcnc.tcl:154 tcl/tklinuxcnc.tcl:181 +msgid "Set Run Mark" +msgstr "動く点を決める" + +#: tcl/tklinuxcnc.tcl:156 +#, fuzzy, tcl-format +msgid "Set run mark at line %s?" +msgstr "線に動く点を決める" + +#: tcl/tklinuxcnc.tcl:176 tcl/tklinuxcnc.tcl:204 +msgid "untitled" +msgstr "" + +#: tcl/tklinuxcnc.tcl:212 +msgid "Load Parameter File" +msgstr "パラムのファイルを読む" + +#: tcl/tklinuxcnc.tcl:261 +#, fuzzy +msgid "LinuxCNC Diagnostics" +msgstr "EMCの診断" + +#: tcl/tklinuxcnc.tcl:263 +msgid "Task" +msgstr "Task" + +#: tcl/tklinuxcnc.tcl:265 tcl/tklinuxcnc.tcl:288 tcl/tklinuxcnc.tcl:311 +msgid "Heartbeat:" +msgstr "心臓の鼓動:" + +#: tcl/tklinuxcnc.tcl:268 tcl/tklinuxcnc.tcl:291 tcl/tklinuxcnc.tcl:314 +msgid "Command:" +msgstr "命令:" + +#: tcl/tklinuxcnc.tcl:271 tcl/tklinuxcnc.tcl:294 tcl/tklinuxcnc.tcl:317 +msgid "Command #:" +msgstr "命令番:" + +#: tcl/tklinuxcnc.tcl:274 tcl/tklinuxcnc.tcl:297 tcl/tklinuxcnc.tcl:320 +msgid "Status:" +msgstr "状態:" + +#: tcl/tklinuxcnc.tcl:286 +msgid "Io" +msgstr "IO" + +#: tcl/tklinuxcnc.tcl:309 +msgid "Motion" +msgstr "動き" + +#: tcl/tklinuxcnc.tcl:350 +#, fuzzy +msgid "About TkLinuxCNC" +msgstr "TkEmcについて" + +#: tcl/tklinuxcnc.tcl:351 +#, fuzzy +msgid "" +"TkLinuxcnc\n" +"\n" +"Tcl/Tk GUI for LinuxCNC\n" +"\n" +"GPL Version 2 (2012)" +msgstr "" +"Enhanced Machine Controller(EMC)の\n" +"\n" +"TkEmc\n" +"\n" +"\n" +"Tcl/Tkで書いたGUI\n" +"\n" +" パブリックドメイン(1999)" + +#: tcl/tklinuxcnc.tcl:399 +msgid "Set Tool Offset" +msgstr "道具が平行移動" + +#: tcl/tklinuxcnc.tcl:404 tcl/tklinuxcnc.tcl:905 +msgid "Tool:" +msgstr "道具:" + +#: tcl/tklinuxcnc.tcl:722 +msgid "Edit..." +msgstr "エディット..." + +#: tcl/tklinuxcnc.tcl:727 +msgid "Tool Table Editor..." +msgstr "" + +#: tcl/tklinuxcnc.tcl:730 src/emc/usr_intf/touchy/touchy.glade:1383 +#, fuzzy +msgid "Reload Tool Table" +msgstr "ツール表を読む" + +#: tcl/tklinuxcnc.tcl:740 +msgid "Offsets and Variables..." +msgstr "平行移動と価..." + +#: tcl/tklinuxcnc.tcl:741 +msgid "Diagnostics..." +msgstr "診断" + +#: tcl/tklinuxcnc.tcl:742 +msgid "Backplot..." +msgstr "描" + +#: tcl/tklinuxcnc.tcl:748 +msgid "Testing..." +msgstr "テスト..." + +#: tcl/tklinuxcnc.tcl:749 +msgid "Debug..." +msgstr "ディバッグ..." + +#: tcl/tklinuxcnc.tcl:750 +msgid "Font..." +msgstr "フォント..." + +#: tcl/tklinuxcnc.tcl:754 src/emc/usr_intf/axis/scripts/image-to-gcode.py:665 +msgid "Units" +msgstr "ユーニット(刻)" + +#: tcl/tklinuxcnc.tcl:755 +msgid "auto" +msgstr "自動" + +#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8873 +msgid "inches" +msgstr "インチ" + +#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1609 +#: src/emc/usr_intf/axis/scripts/axis.py:1855 +#: src/emc/usr_intf/axis/scripts/axis.py:2386 +#: src/emc/usr_intf/touchy/touchy.glade:3301 +#: src/emc/usr_intf/stepconf/stepconf.py:1314 +#: src/emc/usr_intf/stepconf/pages.py:625 +#: src/emc/usr_intf/stepconf/main_page.glade:251 +#: src/emc/usr_intf/pncconf/pncconf.py:8869 +#: src/emc/usr_intf/pncconf/pncconf.glade:2195 +#: src/emc/usr_intf/pncconf/pncconf.glade:2362 +#: src/emc/usr_intf/pncconf/pncconf.glade:64552 +#: src/emc/usr_intf/pncconf/pncconf.glade:64621 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm" +msgstr "mm" + +#: tcl/tklinuxcnc.tcl:758 +msgid "cm" +msgstr "cm" + +#: tcl/tklinuxcnc.tcl:762 +msgid "Utilities" +msgstr "" + +#: tcl/tklinuxcnc.tcl:763 +msgid "Hal Scope" +msgstr "" + +#: tcl/tklinuxcnc.tcl:785 +msgid "HAL Show" +msgstr "" + +#: tcl/tklinuxcnc.tcl:786 +msgid "HAL Config" +msgstr "" + +#: tcl/tklinuxcnc.tcl:792 +msgid "Balloon help" +msgstr "バルーン助け" + +#: tcl/tklinuxcnc.tcl:815 +msgid "Estop on" +msgstr "終止符点いた" + +#: tcl/tklinuxcnc.tcl:816 +msgid "Estop off" +msgstr "終止符消した" + +#: tcl/tklinuxcnc.tcl:818 +msgid "Machine on" +msgstr "出来るように" + +#: tcl/tklinuxcnc.tcl:819 src/emc/usr_intf/gscreen/gscreen.glade:2452 +msgid "Machine off" +msgstr "出来ないように" + +#: tcl/tklinuxcnc.tcl:826 src/emc/usr_intf/touchy/touchy.glade:1561 +msgid "Manual" +msgstr "手動" + +#: tcl/tklinuxcnc.tcl:835 +msgid "Mist on" +msgstr "雰点いた" + +#: tcl/tklinuxcnc.tcl:836 +msgid "Mist off" +msgstr "雰消した" + +#: tcl/tklinuxcnc.tcl:843 +msgid "Flood on" +msgstr "水洗点いた" + +#: tcl/tklinuxcnc.tcl:844 +msgid "Flood off" +msgstr "水洗消した" + +#: tcl/tklinuxcnc.tcl:851 +msgid "Lube on" +msgstr "油点いた" + +#: tcl/tklinuxcnc.tcl:852 +msgid "Lube off" +msgstr "油消した" + +#: tcl/tklinuxcnc.tcl:869 +msgid "Spindle forward" +msgstr "スピンドル前進" + +#: tcl/tklinuxcnc.tcl:870 +msgid "Spindle reverse" +msgstr "スピンドル逆" + +#: tcl/tklinuxcnc.tcl:885 +msgid "Brake on" +msgstr "ブレーキ点いた" + +#: tcl/tklinuxcnc.tcl:886 +msgid "Brake off" +msgstr "ブレーキ消した" + +#: tcl/tklinuxcnc.tcl:907 +msgid "Offset:" +msgstr "平行移動:" + +#: tcl/tklinuxcnc.tcl:913 +msgid "Work Offsets:" +msgstr "工作物平行移動:" + +#: tcl/tklinuxcnc.tcl:1233 +msgid "relative" +msgstr "相対" + +#: tcl/tklinuxcnc.tcl:1234 +msgid "machine" +msgstr "マッシン" + +#: tcl/tklinuxcnc.tcl:1236 +msgid "actual" +msgstr "本当" + +#: tcl/tklinuxcnc.tcl:1237 +msgid "commanded" +msgstr "命令な" + +#: tcl/tklinuxcnc.tcl:1239 +msgid "joint" +msgstr "関節" + +#: tcl/tklinuxcnc.tcl:1240 +msgid "world" +msgstr "世界" + +#: tcl/tklinuxcnc.tcl:1333 +msgid "Axis Offset" +msgstr "軸の平行移動" + +#: tcl/tklinuxcnc.tcl:1335 +msgid "Set axis value:" +msgstr "軸の数値:" + +#: tcl/tklinuxcnc.tcl:1429 +msgid "Set Feed Override" +msgstr "フィード手直して" + +#: tcl/tklinuxcnc.tcl:1435 +msgid "Set feed override:" +msgstr "フィード手直して:" + +#: tcl/tklinuxcnc.tcl:1460 +#, fuzzy +msgid "Set Spindle Override" +msgstr "フィード手直して" + +#: tcl/tklinuxcnc.tcl:1466 +#, fuzzy +msgid "Set spindle speed override:" +msgstr "フィード手直して:" + +#: tcl/tklinuxcnc.tcl:1521 +#, fuzzy +msgid "Linear Jog Speed" +msgstr "ジョグ時速" + +#: tcl/tklinuxcnc.tcl:1552 +msgid "Angular Jog Speed (deg)/min:" +msgstr "" + +#: tcl/tklinuxcnc.tcl:1596 +#, fuzzy +msgid "Spindle speed Override:" +msgstr "フィード手直して" + +#: tcl/tklinuxcnc.tcl:1642 +msgid "Program: " +msgstr "プローグラム: " + +#: tcl/tklinuxcnc.tcl:1647 +#, fuzzy +msgid " - Status: " +msgstr " - 状態: " + +#: tcl/tklinuxcnc.tcl:1663 +msgid "Optional Stop" +msgstr "" + +#: tcl/tklinuxcnc.tcl:2010 +msgid "Error" +msgstr "越度" + +#: tcl/tklinuxcnc.tcl:2070 tcl/ngcgui_ttt.tcl:46 +msgid "Set Font" +msgstr "フォントを撰ぶ" + +#: tcl/tklinuxcnc.tcl:2079 tcl/ngcgui_ttt.tcl:283 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4827 +#, fuzzy +msgid "Font" +msgstr "フォント..." + +#: tcl/tklinuxcnc.tcl:2086 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3257 +msgid "Size" +msgstr "" + +#: tcl/tklinuxcnc.tcl:2093 +#, fuzzy +msgid "Style" +msgstr "徐徐に" + +#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:2031 +msgid "ESTOP" +msgstr "終止符" + +#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2979 share/axis/tcl/axis.tcl:2033 +msgid "ON" +msgstr "点いた" + +#: tcl/tklinuxcnc.tcl:2290 +msgid "LUBE ON" +msgstr "油点いた" -#: tcl/tklinuxcnc.tcl:156 -#, fuzzy, tcl-format -msgid "Set run mark at line %s?" -msgstr "線に動く点を決める" +#: tcl/tklinuxcnc.tcl:2292 +msgid "LUBE OFF" +msgstr "油消した" + +#: tcl/tklinuxcnc.tcl:2294 +#, fuzzy +msgid "LUBE ?" +msgstr "油点いた" + +#: tcl/scripts/Set_Coordinates.tcl:23 +msgid "LinuxCNC Set Coordinate" +msgstr "" + +#: tcl/scripts/Set_Coordinates.tcl:26 +msgid "Coordinate System Control Window" +msgstr "" + +#: tcl/scripts/Set_Coordinates.tcl:81 +msgid "Var # " +msgstr "" + +#: tcl/scripts/Set_Coordinates.tcl:82 +#, fuzzy +msgid "Offset Value " +msgstr "平行移動:" + +#: tcl/scripts/Set_Coordinates.tcl:83 +msgid "What to Teach" +msgstr "" + +#: tcl/scripts/Set_Coordinates.tcl:101 +msgid "Set Old" +msgstr "" + +#: tcl/scripts/Set_Coordinates.tcl:102 +#, fuzzy +msgid "Set Zero" +msgstr "フォントを撰ぶ" + +#: tcl/scripts/Set_Coordinates.tcl:104 +msgid "Write" +msgstr "" + +#: tcl/ngcgui.tcl:439 tcl/ngcgui.tcl:846 +msgid "Need non-null file name" +msgstr "" + +#: tcl/ngcgui.tcl:483 +msgid "Disallowed use of ngcgui generated file as Subfile" +msgstr "" + +#: tcl/ngcgui.tcl:489 +msgid "" +"marked (not_a_subfile)\n" +"Not intended for use as a subfile" +msgstr "" + +#: tcl/ngcgui.tcl:503 tcl/ngcgui.tcl:522 tcl/ngcgui.tcl:544 tcl/ngcgui.tcl:557 +#: tcl/ngcgui.tcl:577 tcl/ngcgui.tcl:682 +msgid "bogus" +msgstr "" + +#: tcl/ngcgui.tcl:505 +msgid "can not include subroutines within ngcgui subfile" +msgstr "" + +#: tcl/ngcgui.tcl:513 +msgid "Multiple subroutines in file not allowed" +msgstr "" + +#: tcl/ngcgui.tcl:524 +msgid "sub label" +msgstr "" + +#: tcl/ngcgui.tcl:524 tcl/ngcgui.tcl:579 +msgid "does not match subroutine file name" +msgstr "" + +#: tcl/ngcgui.tcl:539 tcl/ngcgui.tcl:540 +msgid "ignoring M2 after endsub" +msgstr "" + +#: tcl/ngcgui.tcl:545 +msgid "file contains lines after subend" +msgstr "" + +#: tcl/ngcgui.tcl:558 +msgid "file contains lines before sub" +msgstr "" + +#: tcl/ngcgui.tcl:579 +msgid "endsub label" +msgstr "" + +#: tcl/ngcgui.tcl:684 +msgid "out of sequence positional parameter" +msgstr "" + +#: tcl/ngcgui.tcl:684 +msgid "expected" +msgstr "" + +#: tcl/ngcgui.tcl:735 +msgid "no sub found in file" +msgstr "" + +#: tcl/ngcgui.tcl:738 +msgid "no endsub found in file" +msgstr "" + +#: tcl/ngcgui.tcl:801 +msgid "Cannot find gcmc executable" +msgstr "" + +#: tcl/ngcgui.tcl:802 +msgid "Please Install in path" +msgstr "" + +#: tcl/ngcgui.tcl:810 +msgid "not embedded, deriving outdir from:" +msgstr "" + +#: tcl/ngcgui.tcl:1038 +#, fuzzy +msgid "Choose Files" +msgstr "ファイル" + +#: tcl/ngcgui.tcl:1178 +#, fuzzy +msgid "Controls" +msgstr "連綿" + +#: tcl/ngcgui.tcl:1187 +msgid "Preamble" +msgstr "" + +#: tcl/ngcgui.tcl:1200 +msgid "Subfile" +msgstr "" + +#: tcl/ngcgui.tcl:1212 +msgid "Postamble" +msgstr "" + +#: tcl/ngcgui.tcl:1229 +msgid "Retain values on Subfile read" +msgstr "" + +#: tcl/ngcgui.tcl:1237 +msgid "Expand subroutine" +msgstr "" + +#: tcl/ngcgui.tcl:1247 tcl/ngcgui.tcl:2571 +#, fuzzy +msgid "Autosend" +msgstr "自動" + +#: tcl/ngcgui.tcl:1257 +msgid "Verbose ngcfile" +msgstr "" + +#: tcl/ngcgui.tcl:1267 tcl/ngcgui.tcl:2393 tcl/ngcgui.tcl:2416 +#: tcl/ngcgui.tcl:2446 +msgid "Create Feature" +msgstr "" + +#: tcl/ngcgui.tcl:1273 tcl/ngcgui.tcl:3058 +#, fuzzy +msgid "MakeFile" +msgstr "ファイル" + +#: tcl/ngcgui.tcl:1274 tcl/ngcgui.tcl:3055 +msgid "Finalize" +msgstr "" + +#: tcl/ngcgui.tcl:1291 +msgid "Reread" +msgstr "" + +#: tcl/ngcgui.tcl:1310 +msgid "SendFileToAxis" +msgstr "" + +#: tcl/ngcgui.tcl:1353 +msgid "Unrecoverable problem" +msgstr "" + +#: tcl/ngcgui.tcl:1431 +msgid "Postamble file" +msgstr "" + +#: tcl/ngcgui.tcl:1481 +msgid "Subroutine file" +msgstr "" + +#: tcl/ngcgui.tcl:1545 +#, fuzzy +msgid "Positional Parameters" +msgstr "パラムのファイルを読む" + +#: tcl/ngcgui.tcl:1694 +msgid "No Subfile specified" +msgstr "" + +#: tcl/ngcgui.tcl:1696 +#, fuzzy +msgid "No parameters yet" +msgstr "パラムのファイルを読む" + +#: tcl/ngcgui.tcl:1705 +msgid "Missing value for parm" +msgstr "" + +#: tcl/ngcgui.tcl:1726 +msgid "Output file" +msgstr "" + +#: tcl/ngcgui.tcl:1841 +msgid "Multiple Tabs with Features" +msgstr "" + +#: tcl/ngcgui.tcl:1842 +msgid "Finalize all Tabs?" +msgstr "" + +#: tcl/ngcgui.tcl:1842 +msgid "Order" +msgstr "" + +#: tcl/ngcgui.tcl:1844 +msgid "No, just this page" +msgstr "" + +#: tcl/ngcgui.tcl:1858 +msgid "Axis is not responding" +msgstr "" + +#: tcl/ngcgui.tcl:1859 +msgid "Error: " +msgstr "越度: " + +#: tcl/ngcgui.tcl:1861 +msgid "Autosend disabled, Ctrl-A toggles autosend" +msgstr "" + +#: tcl/ngcgui.tcl:1863 +msgid "File saving enabled -- Finalize to save" +msgstr "" + +#: tcl/ngcgui.tcl:1879 +msgid "Require .ngc suffix for filename" +msgstr "" + +#: tcl/ngcgui.tcl:1889 +msgid "Disallowed overwrite of" +msgstr "" + +#: tcl/ngcgui.tcl:1913 +msgid "FEATURE" +msgstr "" + +#: tcl/ngcgui.tcl:1920 +msgid "feature line added" +msgstr "" + +#: tcl/ngcgui.tcl:1932 +msgid "line added" +msgstr "" + +#: tcl/ngcgui.tcl:1932 +msgid "activated" +msgstr "" + +#: tcl/ngcgui.tcl:1934 +#, fuzzy +msgid "restores" +msgstr "終止符点いた" + +#: tcl/ngcgui.tcl:1973 +msgid "NOTREACHED mode" +msgstr "" + +#: tcl/ngcgui.tcl:1989 +msgid "Positional parameters for" +msgstr "" + +#: tcl/ngcgui.tcl:1997 +#, fuzzy +msgid "expanded file" +msgstr "テキストファイル" + +#: tcl/ngcgui.tcl:2011 +msgid "call subroutine file" +msgstr "" + +#: tcl/ngcgui.tcl:2394 +msgid "Enter parms for 1st feature" +msgstr "" + +#: tcl/ngcgui.tcl:2401 +#, fuzzy +msgid "New Outfile" +msgstr "NCファイル" + +#: tcl/ngcgui.tcl:2403 +msgid "Ready to make New Outfile" +msgstr "" + +#: tcl/ngcgui.tcl:2419 tcl/ngcgui.tcl:2452 +msgid "Enter parms for feature " +msgstr "" + +#: tcl/ngcgui.tcl:2439 +msgid "feature" +msgstr "" + +#: tcl/ngcgui.tcl:2444 +msgid "Create Next" +msgstr "" -#: tcl/tklinuxcnc.tcl:176 tcl/tklinuxcnc.tcl:204 -msgid "untitled" +#: tcl/ngcgui.tcl:2449 +msgid "Created feature " msgstr "" -#: tcl/tklinuxcnc.tcl:212 -msgid "Load Parameter File" +#: tcl/ngcgui.tcl:2473 +#, fuzzy +msgid "option" +msgstr "動き" + +#: tcl/ngcgui.tcl:2484 +#, fuzzy +msgid "Missing parameters" msgstr "パラムのファイルを読む" -#: tcl/tklinuxcnc.tcl:261 +#: tcl/ngcgui.tcl:2488 #, fuzzy -msgid "LinuxCNC Diagnostics" -msgstr "EMCの診断" +msgid "Parse Error" +msgstr "越度" -#: tcl/tklinuxcnc.tcl:263 -msgid "Task" -msgstr "Task" +#: tcl/ngcgui.tcl:2495 +msgid "Null Preamble" +msgstr "" -#: tcl/tklinuxcnc.tcl:265 tcl/tklinuxcnc.tcl:288 tcl/tklinuxcnc.tcl:311 -msgid "Heartbeat:" -msgstr "心臓の鼓動:" +#: tcl/ngcgui.tcl:2500 +msgid "Read Preamble" +msgstr "" -#: tcl/tklinuxcnc.tcl:268 tcl/tklinuxcnc.tcl:291 tcl/tklinuxcnc.tcl:314 -msgid "Command:" -msgstr "命令:" +#: tcl/ngcgui.tcl:2504 +msgid "Preamble Error" +msgstr "" -#: tcl/tklinuxcnc.tcl:271 tcl/tklinuxcnc.tcl:294 tcl/tklinuxcnc.tcl:317 -msgid "Command #:" -msgstr "命令番:" +#: tcl/ngcgui.tcl:2509 +msgid "Null Postamble" +msgstr "" -#: tcl/tklinuxcnc.tcl:274 tcl/tklinuxcnc.tcl:297 tcl/tklinuxcnc.tcl:320 -msgid "Status:" +#: tcl/ngcgui.tcl:2514 +msgid "Read Postamble" +msgstr "" + +#: tcl/ngcgui.tcl:2518 +msgid "Postamble Error" +msgstr "" + +#: tcl/ngcgui.tcl:2523 +msgid "Read Subfile" +msgstr "" + +#: tcl/ngcgui.tcl:2528 +#, fuzzy +msgid "Write Error" +msgstr "越度" + +#: tcl/ngcgui.tcl:2532 +msgid "Outfile set" +msgstr "" + +#: tcl/ngcgui.tcl:2537 +msgid "Finished" +msgstr "" + +#: tcl/ngcgui.tcl:2542 +#, fuzzy +msgid "Canceled" +msgstr "中止" + +#: tcl/ngcgui.tcl:2548 +msgid "Sent" +msgstr "" + +#: tcl/ngcgui.tcl:2552 +msgid "SendFileToAxis failed" +msgstr "" + +#: tcl/ngcgui.tcl:2556 +msgid "Ctrl-k for Key bindings" +msgstr "" + +#: tcl/ngcgui.tcl:2560 +msgid "Expand sub" +msgstr "" + +#: tcl/ngcgui.tcl:2564 +#, fuzzy +msgid "Retain values" +msgstr "軸の数値:" + +#: tcl/ngcgui.tcl:2568 +msgid "Verbose" +msgstr "" + +#: tcl/ngcgui.tcl:2574 +msgid "Finalize Canceled" +msgstr "" + +#: tcl/ngcgui.tcl:2711 tcl/ngcgui.tcl:2867 +msgid "Dismiss" +msgstr "" + +#: tcl/ngcgui.tcl:2716 +msgid "ngcgui Error" +msgstr "" + +#: tcl/ngcgui.tcl:2739 +msgid "Declining support for tk send bug in ngcgui" +msgstr "" + +#: tcl/ngcgui.tcl:2740 +msgid "You should upgrade linuxcnc to >= linuxcnc2.5" +msgstr "" + +#: tcl/ngcgui.tcl:2784 +msgid "pre2.4_send_file_to_axis:error" +msgstr "" + +#: tcl/ngcgui.tcl:2978 share/axis/tcl/axis.tcl:2032 +msgid "OFF" +msgstr "" + +#: tcl/ngcgui.tcl:2981 +msgid "Toggle autosend" +msgstr "" + +#: tcl/ngcgui.tcl:2982 tcl/ngcgui.tcl:3189 +msgid "Clear entries" +msgstr "" + +#: tcl/ngcgui.tcl:2983 +msgid "Set entries to default values" +msgstr "" + +#: tcl/ngcgui.tcl:2984 tcl/ngcgui.tcl:2998 tcl/ngcgui.tcl:3000 +msgid "Open editor specified by" +msgstr "" + +#: tcl/ngcgui.tcl:2985 +msgid "on last outfile" +msgstr "" + +#: tcl/ngcgui.tcl:2986 +msgid "toggle expand subroutines" +msgstr "" + +#: tcl/ngcgui.tcl:2987 +msgid "Create feature" +msgstr "" + +#: tcl/ngcgui.tcl:2988 +msgid "Finalize (AUTO send is" +msgstr "" + +#: tcl/ngcgui.tcl:2989 +msgid "Show key bindings" +msgstr "" + +#: tcl/ngcgui.tcl:2990 +msgid "Restart (cancel pending)" +msgstr "" + +#: tcl/ngcgui.tcl:2991 +msgid "(re)Read Preamble" +msgstr "" + +#: tcl/ngcgui.tcl:2992 +msgid "(re)Read Postamble" +msgstr "" + +#: tcl/ngcgui.tcl:2993 +msgid "(re)Read Subfile" +msgstr "" + +#: tcl/ngcgui.tcl:2994 +msgid "toggle retain values" +msgstr "" + +#: tcl/ngcgui.tcl:2995 +msgid "toggle output file verbosity" +msgstr "" + +#: tcl/ngcgui.tcl:2996 +#, fuzzy +msgid "Show status" msgstr "状態:" -#: tcl/tklinuxcnc.tcl:286 -msgid "Io" -msgstr "IO" +#: tcl/ngcgui.tcl:2997 +msgid "Show full status (debug info)" +msgstr "" -#: tcl/tklinuxcnc.tcl:309 -msgid "Motion" -msgstr "動き" +#: tcl/ngcgui.tcl:2999 +msgid "on current subfile" +msgstr "" -#: tcl/tklinuxcnc.tcl:350 +#: tcl/ngcgui.tcl:3001 +msgid "on current preamble" +msgstr "" + +#: tcl/ngcgui.tcl:3004 +msgid " Escape Return to Preview page" +msgstr "" + +#: tcl/ngcgui.tcl:3081 +msgid "Editing requires setting for environmental variable VISUAL" +msgstr "" + +#: tcl/ngcgui.tcl:3082 +msgid "Trying gedit" +msgstr "" + +#: tcl/ngcgui.tcl:3095 +msgid "No file available for editing yet" +msgstr "" + +#: tcl/ngcgui.tcl:3104 tcl/ngcgui.tcl:3113 +msgid "No file available for editing" +msgstr "" + +#: tcl/ngcgui.tcl:3130 #, fuzzy -msgid "About TkLinuxCNC" -msgstr "TkEmcについて" +msgid "Status items" +msgstr "状態:" -#: tcl/tklinuxcnc.tcl:351 +#: tcl/ngcgui.tcl:3143 +msgid "All-page opt items" +msgstr "" + +#: tcl/ngcgui.tcl:3149 +msgid "any-items" +msgstr "" + +#: tcl/ngcgui.tcl:3182 +msgid "Set defaults" +msgstr "" + +#: tcl/ngcgui.tcl:3257 +msgid "not writable" +msgstr "" + +#: tcl/ngcgui.tcl:3396 tcl/ngcgui.tcl:3577 +msgid "new" +msgstr "" + +#: tcl/ngcgui.tcl:3422 +msgid "Open a new Subfile" +msgstr "" + +#: tcl/ngcgui.tcl:3568 +msgid "remove" +msgstr "" + +#: tcl/ngcgui.tcl:3590 tcl/ngcgui.tcl:3596 +msgid "move" +msgstr "" + +#: tcl/ngcgui.tcl:3704 src/emc/usr_intf/pncconf/pncconf.py:7374 +#: src/emc/usr_intf/pncconf/pncconf.py:7485 +#: src/emc/usr_intf/pncconf/pncconf.py:7650 #, fuzzy -msgid "" -"TkLinuxcnc\n" -"\n" -"Tcl/Tk GUI for LinuxCNC\n" -"\n" -"GPL Version 2 (2012)" +msgid "Custom" +msgstr "自動" + +#: tcl/ngcgui.tcl:3730 +msgid "Problem creating page" msgstr "" -"Enhanced Machine Controller(EMC)の\n" -"\n" -"TkEmc\n" -"\n" -"\n" -"Tcl/Tkで書いたGUI\n" -"\n" -" パブリックドメイン(1999)" -#: tcl/tklinuxcnc.tcl:399 -msgid "Set Tool Offset" -msgstr "道具が平行移動" +#: tcl/ngcgui.tcl:3737 +msgid "entrykeybindings not available" +msgstr "" -#: tcl/tklinuxcnc.tcl:404 tcl/tklinuxcnc.tcl:905 -msgid "Tool:" -msgstr "道具:" +#: tcl/ngcgui.tcl:3781 +msgid "Found multiple matches for" +msgstr "" -#: tcl/tklinuxcnc.tcl:722 -msgid "Edit..." -msgstr "エディット..." +#: tcl/ngcgui.tcl:3782 +msgid "using path" +msgstr "" + +#: tcl/ngcgui.tcl:3790 src/emc/usr_intf/axis/scripts/axis.py:2440 +#: src/emc/usr_intf/axis/scripts/axis.py:2453 +msgid "Warning" +msgstr "" + +#: tcl/ngcgui.tcl:3791 +msgid "File absolute path specifier conflicts with searchpath result" +msgstr "" + +#: tcl/ngcgui.tcl:3792 +msgid "Absolute Specifier" +msgstr "" + +#: tcl/ngcgui.tcl:3793 +msgid "Using Search Result" +msgstr "" + +#: tcl/ngcgui.tcl:3798 +msgid "File not in Search Path" +msgstr "" + +#: tcl/ngcgui.tcl:3800 +msgid "Must be in search path" +msgstr "" -#: tcl/tklinuxcnc.tcl:727 -msgid "Tool Table Editor..." +#: tcl/ngcgui.tcl:3802 +msgid "(File found -- not in search path)" msgstr "" -#: tcl/tklinuxcnc.tcl:730 src/emc/usr_intf/touchy/touchy.glade:1383 -#, fuzzy -msgid "Reload Tool Table" -msgstr "ツール表を読む" +#: tcl/ngcgui.tcl:3804 +msgid "Current directory" +msgstr "" -#: tcl/tklinuxcnc.tcl:740 -msgid "Offsets and Variables..." -msgstr "平行移動と価..." +#: tcl/ngcgui.tcl:3805 +msgid "Search path" +msgstr "" -#: tcl/tklinuxcnc.tcl:741 -msgid "Diagnostics..." -msgstr "診断" +#: tcl/ngcgui.tcl:3815 +msgid "Check setting for" +msgstr "" -#: tcl/tklinuxcnc.tcl:742 -msgid "Backplot..." -msgstr "描" +#: tcl/ngcgui.tcl:3816 +msgid "in ini file" +msgstr "" -#: tcl/tklinuxcnc.tcl:748 -msgid "Testing..." -msgstr "テスト..." +#: tcl/ngcgui.tcl:3817 +msgid "(Restart required after fixing ini file)" +msgstr "" -#: tcl/tklinuxcnc.tcl:749 -msgid "Debug..." -msgstr "ディバッグ..." +#: tcl/ngcgui.tcl:3832 +#, fuzzy +msgid "Try to Continue" +msgstr "連綿" -#: tcl/tklinuxcnc.tcl:750 -msgid "Font..." -msgstr "フォント..." +#: tcl/ngcgui.tcl:3837 +msgid "Ngcgui Configuration File Not Found" +msgstr "" -#: tcl/tklinuxcnc.tcl:754 src/emc/usr_intf/axis/scripts/image-to-gcode.py:665 -msgid "Units" -msgstr "ユーニット(刻)" +#: tcl/ngcgui.tcl:3917 +msgid "Missing Tcl Package Img" +msgstr "" -#: tcl/tklinuxcnc.tcl:755 -msgid "auto" -msgstr "自動" +#: tcl/ngcgui.tcl:3918 +msgid "Please install Img" +msgstr "" -#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8512 -msgid "inches" -msgstr "インチ" +#: tcl/ngcgui.tcl:4122 +#, fuzzy +msgid "ini file" +msgstr "NCファイル" -#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1556 -#: src/emc/usr_intf/axis/scripts/axis.py:1726 -#: src/emc/usr_intf/touchy/touchy.glade:3301 -#: src/emc/usr_intf/stepconf/stepconf.py:1685 -#: src/emc/usr_intf/stepconf/stepconf.py:2221 -#: src/emc/usr_intf/stepconf/stepconf.glade:4357 -#: src/emc/usr_intf/pncconf/pncconf.py:8508 -#: src/emc/usr_intf/pncconf/pncconf.glade:2229 -#: src/emc/usr_intf/pncconf/pncconf.glade:2394 -#: src/emc/usr_intf/pncconf/pncconf.glade:57616 -#: src/emc/usr_intf/pncconf/pncconf.glade:57688 -#: src/emc/usr_intf/pncconf/pncconf.glade:60646 -#: src/emc/usr_intf/pncconf/pncconf.glade:61739 -#: src/emc/usr_intf/pncconf/pncconf.glade:62832 -#: src/emc/usr_intf/pncconf/pncconf.glade:63925 -#: src/emc/usr_intf/pncconf/pncconf.glade:65091 -msgid "mm" -msgstr "mm" +#: tcl/ngcgui.tcl:4131 +msgid "not found" +msgstr "" -#: tcl/tklinuxcnc.tcl:758 -msgid "cm" -msgstr "cm" +#: tcl/ngcgui_ttt.tcl:67 +msgid "found truetype-tracer v4 -OK" +msgstr "" -#: tcl/tklinuxcnc.tcl:762 -msgid "Utilities" +#: tcl/ngcgui_ttt.tcl:70 +msgid "Note truetype-tracer v4 is required" msgstr "" -#: tcl/tklinuxcnc.tcl:763 -msgid "Hal Scope" +#: tcl/ngcgui_ttt.tcl:71 +msgid "Note: truetype-tracer v4 is required" msgstr "" -#: tcl/tklinuxcnc.tcl:785 -msgid "HAL Show" +#: tcl/ngcgui_ttt.tcl:81 +msgid "ngcgui_app.tcl must be loaded before" msgstr "" -#: tcl/tklinuxcnc.tcl:786 -msgid "HAL Config" +#: tcl/ngcgui_ttt.tcl:89 +msgid "Create a subroutine file from truetype-tracer (V4 reqd)" msgstr "" -#: tcl/tklinuxcnc.tcl:792 -msgid "Balloon help" -msgstr "バルーン助け" +#: tcl/ngcgui_ttt.tcl:102 tcl/ngcgui_ttt.tcl:115 +msgid "problem with" +msgstr "" -#: tcl/tklinuxcnc.tcl:815 -msgid "Estop on" -msgstr "終止符点いた" +#: tcl/ngcgui_ttt.tcl:106 +msgid "No entry for" +msgstr "" -#: tcl/tklinuxcnc.tcl:816 -msgid "Estop off" -msgstr "終止符消した" +#: tcl/ngcgui_ttt.tcl:109 +msgid "wrong version of truetype-tracer" +msgstr "" -#: tcl/tklinuxcnc.tcl:818 -msgid "Machine on" -msgstr "出来るように" +#: tcl/ngcgui_ttt.tcl:125 +msgid "not writable, using" +msgstr "" -#: tcl/tklinuxcnc.tcl:819 -msgid "Machine off" -msgstr "出来ないように" +#: tcl/ngcgui_ttt.tcl:125 +msgid "and setting expandsub" +msgstr "" -#: tcl/tklinuxcnc.tcl:826 src/emc/usr_intf/touchy/touchy.glade:1561 -msgid "Manual" -msgstr "手動" +#: tcl/ngcgui_ttt.tcl:161 +msgid "Text" +msgstr "" -#: tcl/tklinuxcnc.tcl:835 -msgid "Mist on" -msgstr "雰点いた" +#: tcl/ngcgui_ttt.tcl:171 +msgid "Linescale" +msgstr "" -#: tcl/tklinuxcnc.tcl:836 -msgid "Mist off" -msgstr "雰消した" +#: tcl/ngcgui_ttt.tcl:177 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3583 +msgid "none" +msgstr "" -#: tcl/tklinuxcnc.tcl:843 -msgid "Flood on" -msgstr "水洗点いた" +#: tcl/ngcgui_ttt.tcl:192 +msgid "Subdiv" +msgstr "" -#: tcl/tklinuxcnc.tcl:844 -msgid "Flood off" -msgstr "水洗消した" +#: tcl/ngcgui_ttt.tcl:199 +msgid "default" +msgstr "" -#: tcl/tklinuxcnc.tcl:851 -msgid "Lube on" -msgstr "油点いた" +#: tcl/ngcgui_ttt.tcl:239 +msgid "Mode" +msgstr "" -#: tcl/tklinuxcnc.tcl:852 -msgid "Lube off" -msgstr "油消した" +#: tcl/ngcgui_ttt.tcl:247 +msgid "normal" +msgstr "" -#: tcl/tklinuxcnc.tcl:869 -msgid "Spindle forward" -msgstr "スピンドル前進" +#: tcl/ngcgui_ttt.tcl:248 +msgid "date" +msgstr "" -#: tcl/tklinuxcnc.tcl:870 -msgid "Spindle reverse" -msgstr "スピンドル逆" +#: tcl/ngcgui_ttt.tcl:249 +msgid "fontname" +msgstr "" -#: tcl/tklinuxcnc.tcl:885 -msgid "Brake on" -msgstr "ブレーキ点いた" +#: tcl/ngcgui_ttt.tcl:262 +#, fuzzy +msgid "Switches" +msgstr "インチ" -#: tcl/tklinuxcnc.tcl:886 -msgid "Brake off" -msgstr "ブレーキ消した" +#: tcl/ngcgui_ttt.tcl:270 +msgid "Unicode" +msgstr "" -#: tcl/tklinuxcnc.tcl:907 -msgid "Offset:" -msgstr "平行移動:" +#: tcl/ngcgui_ttt.tcl:275 +msgid "Allow Rotation" +msgstr "" -#: tcl/tklinuxcnc.tcl:913 -msgid "Work Offsets:" -msgstr "工作物平行移動:" +#: tcl/ngcgui_ttt.tcl:295 +msgid "Make ngcgui-compatible subfile and new tab page" +msgstr "" -#: tcl/tklinuxcnc.tcl:1233 -msgid "relative" -msgstr "相対" +#: tcl/ngcgui_ttt.tcl:353 +msgid "Null text" +msgstr "" -#: tcl/tklinuxcnc.tcl:1234 -msgid "machine" -msgstr "マッシン" +#: tcl/ngcgui_ttt.tcl:384 +msgid "Using truetype-tracer default font" +msgstr "" -#: tcl/tklinuxcnc.tcl:1236 -msgid "actual" -msgstr "本当" +#: tcl/ngcgui_ttt.tcl:388 +msgid "no such file" +msgstr "" -#: tcl/tklinuxcnc.tcl:1237 -msgid "commanded" -msgstr "命令な" +#: tcl/ngcgui_ttt.tcl:393 +msgid "file not readable" +msgstr "" -#: tcl/tklinuxcnc.tcl:1239 -msgid "joint" -msgstr "関節" +#: tcl/ngcgui_ttt.tcl:507 +msgid "Creating new tab page" +msgstr "" -#: tcl/tklinuxcnc.tcl:1240 -msgid "world" -msgstr "世界" +#: tcl/ngcgui_app.tcl:25 +msgid "" +"requires command inifindall\n" +"from axis.py (LinuxCNC 2.5) or" +msgstr "" -#: tcl/tklinuxcnc.tcl:1333 -msgid "Axis Offset" -msgstr "軸の平行移動" +#: tcl/ngcgui_app.tcl:55 +#, fuzzy +msgid "Substituting" +msgstr "撰" -#: tcl/tklinuxcnc.tcl:1335 -msgid "Set axis value:" -msgstr "軸の数値:" +#: tcl/ngcgui_app.tcl:55 +msgid "for" +msgstr "" -#: tcl/tklinuxcnc.tcl:1429 -msgid "Set Feed Override" -msgstr "フィード手直して" +#: tcl/ngcgui_app.tcl:59 +msgid "not readable" +msgstr "" -#: tcl/tklinuxcnc.tcl:1435 -msgid "Set feed override:" -msgstr "フィード手直して:" +#: tcl/ngcgui_app.tcl:65 tcl/ngcgui_app.tcl:68 +msgid "Unexpected: multiple startups for ngcgui" +msgstr "" -#: tcl/tklinuxcnc.tcl:1460 +#: tcl/ngcgui_app.tcl:66 #, fuzzy -msgid "Set Spindle Override" -msgstr "フィード手直して" +msgid "LinuxCNC" +msgstr "越度" -#: tcl/tklinuxcnc.tcl:1466 -#, fuzzy -msgid "Set spindle speed override:" -msgstr "フィード手直して:" +#: tcl/ngcgui_app.tcl:67 +msgid "for linuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" +msgstr "" -#: tcl/tklinuxcnc.tcl:1521 +#: tcl/ngcgui_app.tcl:86 #, fuzzy -msgid "Linear Jog Speed" -msgstr "ジョグ時速" +msgid "LinuxCNC version" +msgstr "越度" -#: tcl/tklinuxcnc.tcl:1552 -msgid "Angular Jog Speed (deg)/min:" +#: tcl/ngcgui_app.tcl:87 +msgid "for LinuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" msgstr "" -#: tcl/tklinuxcnc.tcl:1596 -#, fuzzy -msgid "Spindle speed Override:" -msgstr "フィード手直して" +#: tcl/tooledit.tcl:65 +msgid "Problem reading ~/.tooleditrc" +msgstr "" -#: tcl/tklinuxcnc.tcl:1642 -msgid "Program: " -msgstr "プローグラム: " +#: tcl/tooledit.tcl:82 +#, tcl-format +msgid "Note: Ignoring duplicate column name: %s" +msgstr "" -#: tcl/tklinuxcnc.tcl:1647 -#, fuzzy -msgid " - Status: " -msgstr " - 状態: " +#: tcl/tooledit.tcl:93 +#, tcl-format +msgid "Unknown column: %s" +msgstr "" -#: tcl/tklinuxcnc.tcl:1663 -msgid "Optional Stop" +#: tcl/tooledit.tcl:210 tcl/tooledit.tcl:213 tcl/tooledit.tcl:598 +#: tcl/tooledit.tcl:599 tcl/tooledit.tcl:1032 +msgid "NEW" msgstr "" -#: tcl/tklinuxcnc.tcl:2010 -msgid "Error" -msgstr "越度" +#: tcl/tooledit.tcl:232 +#, tcl-format +msgid "%s must be a number" +msgstr "" -#: tcl/tklinuxcnc.tcl:2070 tcl/ngcgui_ttt.tcl:46 -msgid "Set Font" -msgstr "フォントを撰ぶ" +#: tcl/tooledit.tcl:241 +#, tcl-format +msgid "filename: <%s> not readable" +msgstr "" -#: tcl/tklinuxcnc.tcl:2079 tcl/ngcgui_ttt.tcl:283 -#, fuzzy -msgid "Font" -msgstr "フォント..." +#: tcl/tooledit.tcl:245 +#, tcl-format +msgid "filename: <%s> not writable" +msgstr "" -#: tcl/tklinuxcnc.tcl:2086 -msgid "Size" +#: tcl/tooledit.tcl:250 +#, tcl-format +msgid "directory: <%s> not writable" msgstr "" -#: tcl/tklinuxcnc.tcl:2093 -#, fuzzy -msgid "Style" -msgstr "徐徐に" +#: tcl/tooledit.tcl:294 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, value <%s> is not a number" +msgstr "" -#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:1916 -msgid "ESTOP" -msgstr "終止符" +#: tcl/tooledit.tcl:300 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, expected integer not <%s>" +msgstr "" -#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2840 share/axis/tcl/axis.tcl:1918 -msgid "ON" -msgstr "点いた" +#: tcl/tooledit.tcl:316 +#, tcl-format +msgid "At linenumber %d, Unknown tag <%s>" +msgstr "" -#: tcl/tklinuxcnc.tcl:2290 -msgid "LUBE ON" -msgstr "油点いた" +#: tcl/tooledit.tcl:399 +#, tcl-format +msgid "%s: Column sorting not available with tcl_version==%s" +msgstr "" -#: tcl/tklinuxcnc.tcl:2292 -msgid "LUBE OFF" -msgstr "油消した" +#: tcl/tooledit.tcl:408 +msgid "tool" +msgstr "" -#: tcl/tklinuxcnc.tcl:2294 +#: tcl/tooledit.tcl:409 +msgid "poc" +msgstr "" + +#: tcl/tooledit.tcl:410 #, fuzzy -msgid "LUBE ?" -msgstr "油点いた" +msgid "diam" +msgstr "直径:" -#: tcl/scripts/Set_Coordinates.tcl:23 -msgid "LinuxCNC Set Coordinate" +#: tcl/tooledit.tcl:411 +msgid "front" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:26 -msgid "Coordinate System Control Window" +#: tcl/tooledit.tcl:412 +msgid "back" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:81 -msgid "Var # " +#: tcl/tooledit.tcl:413 +msgid "orien" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:82 +#: tcl/tooledit.tcl:414 #, fuzzy -msgid "Offset Value " -msgstr "平行移動:" +msgid "comment" +msgstr "命令な" -#: tcl/scripts/Set_Coordinates.tcl:83 -msgid "What to Teach" +#: tcl/tooledit.tcl:444 +msgid "Del" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:101 -msgid "Set Old" -msgstr "" +#: tcl/tooledit.tcl:473 +#, fuzzy +msgid "ReLoadTable" +msgstr "ツール表を読む" -#: tcl/scripts/Set_Coordinates.tcl:102 +#: tcl/tooledit.tcl:478 #, fuzzy -msgid "Set Zero" -msgstr "フォントを撰ぶ" +msgid "SaveFile" +msgstr "ファイル" -#: tcl/scripts/Set_Coordinates.tcl:104 -msgid "Write" +#: tcl/tooledit.tcl:483 +msgid "ReRead" msgstr "" -#: tcl/ngcgui.tcl:467 -msgid "Need non-null file name" -msgstr "" +#: tcl/tooledit.tcl:485 +#, fuzzy +msgid "AddTool" +msgstr "道具:" -#: tcl/ngcgui.tcl:543 -msgid "Disallowed use of ngcgui generated file as Subfile" +#: tcl/tooledit.tcl:535 +#, tcl-format +msgid "Opened %s" msgstr "" -#: tcl/ngcgui.tcl:549 -msgid "" -"marked (not_a_subfile)\n" -"Not intended for use as a subfile" +#: tcl/tooledit.tcl:536 +#, tcl-format +msgid "Created %s" msgstr "" -#: tcl/ngcgui.tcl:564 -msgid "Multiple subroutines in file not allowed" +#: tcl/tooledit.tcl:537 +msgid "File updated" msgstr "" -#: tcl/ngcgui.tcl:573 tcl/ngcgui.tcl:595 tcl/ngcgui.tcl:608 tcl/ngcgui.tcl:650 -#: tcl/ngcgui.tcl:755 -msgid "bogus" +#: tcl/tooledit.tcl:538 +msgid "File modified" msgstr "" -#: tcl/ngcgui.tcl:575 -msgid "sub label" +#: tcl/tooledit.tcl:539 +msgid "File check errors" msgstr "" -#: tcl/ngcgui.tcl:575 tcl/ngcgui.tcl:652 -msgid "does not match subroutine file name" +#: tcl/tooledit.tcl:540 +msgid "File checked" msgstr "" -#: tcl/ngcgui.tcl:590 tcl/ngcgui.tcl:591 -msgid "ignoring M2 after endsub" +#: tcl/tooledit.tcl:541 +msgid "File items deleted" msgstr "" -#: tcl/ngcgui.tcl:596 -msgid "file contains lines after subend" +#: tcl/tooledit.tcl:542 +msgid "Bogus lines in file ignored" msgstr "" -#: tcl/ngcgui.tcl:609 -msgid "file contains lines before sub" +#: tcl/tooledit.tcl:543 +msgid "File errors -- Check Entries" msgstr "" -#: tcl/ngcgui.tcl:652 -msgid "endsub label" +#: tcl/tooledit.tcl:544 +msgid "Warning: File changed by another process" msgstr "" -#: tcl/ngcgui.tcl:757 -msgid "out of sequence positional parameter" +#: tcl/tooledit.tcl:545 +msgid "Warning: File deleted by another process" msgstr "" -#: tcl/ngcgui.tcl:757 -msgid "expected" +#: tcl/tooledit.tcl:546 +msgid "Added Tool" msgstr "" -#: tcl/ngcgui.tcl:817 -msgid "toomany" +#: tcl/tooledit.tcl:550 +#, tcl-format +msgid "Sorted by %s, increasing" msgstr "" -#: tcl/ngcgui.tcl:868 -msgid "no sub found in file" +#: tcl/tooledit.tcl:551 +#, tcl-format +msgid "Sorted by %s, decreasing" msgstr "" -#: tcl/ngcgui.tcl:871 -msgid "no endsub found in file" +#: tcl/tooledit.tcl:593 +msgid "Added" msgstr "" -#: tcl/ngcgui.tcl:961 -#, fuzzy -msgid "Choose Files" -msgstr "ファイル" +#: tcl/tooledit.tcl:802 +#, tcl-format +msgid "Tool %s, Column %s, parameter %s is not a number" +msgstr "" -#: tcl/ngcgui.tcl:1100 -#, fuzzy -msgid "Controls" -msgstr "連綿" +#: tcl/tooledit.tcl:811 +#, tcl-format +msgid "Tool %s, parameter %s must be nonnegative integer" +msgstr "" -#: tcl/ngcgui.tcl:1109 -msgid "Preamble" +#: tcl/tooledit.tcl:819 +#, tcl-format +msgid "Tool %s: must be 0..9 integer" msgstr "" -#: tcl/ngcgui.tcl:1122 -msgid "Subfile" +#: tcl/tooledit.tcl:826 +#, tcl-format +msgid "Tool %s: <%s> must be between -360 and 360" msgstr "" -#: tcl/ngcgui.tcl:1134 -msgid "Postamble" +#: tcl/tooledit.tcl:842 +#, tcl-format +msgid "Pocket <%s> specified multiple times" msgstr "" -#: tcl/ngcgui.tcl:1151 -msgid "Retain values on Subfile read" +#: tcl/tooledit.tcl:857 +#, tcl-format +msgid "Tool <%s> specified multiple times" msgstr "" -#: tcl/ngcgui.tcl:1159 -msgid "Expand subroutine" +#: tcl/tooledit.tcl:902 +msgid "File Modified" msgstr "" -#: tcl/ngcgui.tcl:1168 tcl/ngcgui.tcl:2414 -#, fuzzy -msgid "Autosend" -msgstr "自動" +#: tcl/tooledit.tcl:903 +msgid "Save Modifications to File?" +msgstr "" -#: tcl/ngcgui.tcl:1178 -msgid "Verbose ngcfile" +#: tcl/tooledit.tcl:930 +#, tcl-format +msgid "" +"Only these columns are currently used:\n" +"\n" +" %s" msgstr "" -#: tcl/ngcgui.tcl:1188 tcl/ngcgui.tcl:2235 tcl/ngcgui.tcl:2259 -#: tcl/ngcgui.tcl:2289 -msgid "Create Feature" +#: tcl/tooledit.tcl:931 +msgid "Limit display to these columns by specifying" msgstr "" -#: tcl/ngcgui.tcl:1194 tcl/ngcgui.tcl:2919 +#: tcl/tooledit.tcl:933 #, fuzzy -msgid "MakeFile" -msgstr "ファイル" +msgid "Format for ini file is" +msgstr "開けません" -#: tcl/ngcgui.tcl:1195 tcl/ngcgui.tcl:2916 -msgid "Finalize" +#: tcl/tooledit.tcl:935 +msgid "For standalone use, invoke as" msgstr "" -#: tcl/ngcgui.tcl:1212 -msgid "Reread" +#: tcl/tooledit.tcl:936 +msgid "tool_table_filename" msgstr "" -#: tcl/ngcgui.tcl:1231 -msgid "SendFileToAxis" +#: tcl/tooledit.tcl:956 +#, tcl-format +msgid "Created by %s" msgstr "" -#: tcl/ngcgui.tcl:1274 -msgid "Unrecoverable problem" +#: tcl/tooledit.tcl:957 +msgid "Saved geometry (updated on program termination)" msgstr "" -#: tcl/ngcgui.tcl:1374 -msgid "Postamble file" +#: tcl/tooledit.tcl:980 +#, tcl-format +msgid "" +"%s: Axis inifile specifies multiple inifile items for: [EMCIO]TOOL_TABLE" msgstr "" -#: tcl/ngcgui.tcl:1424 -msgid "Subroutine file" +#: tcl/tooledit.tcl:981 +#, tcl-format +msgid "%s: Using: %s" msgstr "" -#: tcl/ngcgui.tcl:1482 -#, fuzzy -msgid "Positional Parameters" -msgstr "パラムのファイルを読む" - -#: tcl/ngcgui.tcl:1587 -msgid "_Globals" +#: tcl/tooledit.tcl:990 +#, tcl-format +msgid "" +"%s: Warning: Axis is running but the tool table file <%s> \n" +"differs from the standalone startup file <%s>" msgstr "" -#: tcl/ngcgui.tcl:1690 -msgid "No Subfile specified" +#: tcl/tooledit.tcl:1004 +msgid "Must be On and Idle to reload tool table" msgstr "" -#: tcl/ngcgui.tcl:1692 -#, fuzzy -msgid "No parameters yet" -msgstr "パラムのファイルを読む" - -#: tcl/ngcgui.tcl:1701 -msgid "Missing value for parm" +#: tcl/tooledit.tcl:1093 +msgid "Usage" msgstr "" -#: tcl/ngcgui.tcl:1735 -msgid "Output file" +#: tcl/tooledit.tcl:1094 tcl/tooledit.tcl:1095 +msgid "filename" msgstr "" -#: tcl/ngcgui.tcl:1827 -msgid "Positional parameters for" +#: tcl/tooledit.tcl:1096 +#, tcl-format +msgid "Allowed column_ names are: %s" msgstr "" -#: tcl/ngcgui.tcl:1835 +#: tcl/tooledit.tcl:1106 #, fuzzy -msgid "expanded file" -msgstr "テキストファイル" +msgid "Missing filename" +msgstr "パラムのファイルを読む" -#: tcl/ngcgui.tcl:1849 -msgid "call subroutine file" +#: src/emc/usr_intf/axis/scripts/axis.py:183 +msgid "Emergency stop" msgstr "" -#: tcl/ngcgui.tcl:1919 -msgid "Multiple Tabs with Features" +#: src/emc/usr_intf/axis/scripts/axis.py:184 +#, fuzzy +msgid "Turn machine on" +msgstr "出来るように" + +#: src/emc/usr_intf/axis/scripts/axis.py:186 +msgid "Activate first axis" msgstr "" -#: tcl/ngcgui.tcl:1920 -msgid "Finalize all Tabs?" +#: src/emc/usr_intf/axis/scripts/axis.py:187 +msgid "Activate second axis" msgstr "" -#: tcl/ngcgui.tcl:1920 -msgid "Order" +#: src/emc/usr_intf/axis/scripts/axis.py:188 +msgid "Activate third axis" msgstr "" -#: tcl/ngcgui.tcl:1922 -msgid "No, just this page" +#: src/emc/usr_intf/axis/scripts/axis.py:189 +msgid "Activate fourth axis" msgstr "" -#: tcl/ngcgui.tcl:1936 -msgid "Axis is not responding" +#: src/emc/usr_intf/axis/scripts/axis.py:190 +msgid "Activate fifth through ninth axis" msgstr "" -#: tcl/ngcgui.tcl:1937 -msgid "Error: " -msgstr "越度: " +#: src/emc/usr_intf/axis/scripts/axis.py:191 +#, fuzzy +msgid "Set Feed Override from 0% to 100%" +msgstr "フィード手直して" -#: tcl/ngcgui.tcl:1939 -msgid "Autosend disabled, Ctrl-A toggles autosend" +#: src/emc/usr_intf/axis/scripts/axis.py:192 +msgid ", and ." msgstr "" -#: tcl/ngcgui.tcl:1941 -msgid "File saving enabled -- Finalize to save" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:192 +#, fuzzy +msgid "Select jog speed" +msgstr "ジョグ時速:" -#: tcl/ngcgui.tcl:1957 -msgid "Require .ngc suffix for filename" +#: src/emc/usr_intf/axis/scripts/axis.py:193 +msgid "< and >" msgstr "" -#: tcl/ngcgui.tcl:1967 -msgid "Disallowed overwrite of" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:193 +#, fuzzy +msgid "Select angular jog speed" +msgstr "ジョグ時速:" -#: tcl/ngcgui.tcl:1986 -msgid "FEATURE" +#: src/emc/usr_intf/axis/scripts/axis.py:194 +msgid "I, Shift-I" msgstr "" -#: tcl/ngcgui.tcl:1993 -msgid "feature line added" +#: src/emc/usr_intf/axis/scripts/axis.py:194 share/axis/tcl/axis.tcl:2481 +msgid "Select jog increment" msgstr "" -#: tcl/ngcgui.tcl:2002 -msgid "line added" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:195 +#, fuzzy +msgid "Continuous jog" +msgstr "連綿" -#: tcl/ngcgui.tcl:2002 -msgid "activated" +#: src/emc/usr_intf/axis/scripts/axis.py:196 +#: src/emc/usr_intf/pncconf/pncconf.py:408 +#, fuzzy +msgid "Home" +msgstr "原点" + +#: src/emc/usr_intf/axis/scripts/axis.py:196 +msgid "Send active axis home" msgstr "" -#: tcl/ngcgui.tcl:2004 -#, fuzzy -msgid "restores" -msgstr "終止符点いた" +#: src/emc/usr_intf/axis/scripts/axis.py:197 +msgid "Ctrl-Home" +msgstr "" -#: tcl/ngcgui.tcl:2041 -msgid "NOTREACHED mode" +#: src/emc/usr_intf/axis/scripts/axis.py:197 +msgid "Home all axes" msgstr "" -#: tcl/ngcgui.tcl:2236 -msgid "Enter parms for 1st feature" +#: src/emc/usr_intf/axis/scripts/axis.py:198 +msgid "Shift-Home" msgstr "" -#: tcl/ngcgui.tcl:2243 -#, fuzzy -msgid "New Outfile" -msgstr "NCファイル" +#: src/emc/usr_intf/axis/scripts/axis.py:198 +msgid "Zero G54 offset for active axis" +msgstr "" -#: tcl/ngcgui.tcl:2245 -msgid "Ready to make New Outfile" +#: src/emc/usr_intf/axis/scripts/axis.py:199 +msgid "End" msgstr "" -#: tcl/ngcgui.tcl:2262 tcl/ngcgui.tcl:2295 -msgid "Enter parms for feature " +#: src/emc/usr_intf/axis/scripts/axis.py:199 +msgid "Set G54 offset for active axis" msgstr "" -#: tcl/ngcgui.tcl:2282 -msgid "feature" +#: src/emc/usr_intf/axis/scripts/axis.py:200 +msgid "Jog active axis" msgstr "" -#: tcl/ngcgui.tcl:2287 -msgid "Create Next" +#: src/emc/usr_intf/axis/scripts/axis.py:203 +msgid "Left, Right" msgstr "" -#: tcl/ngcgui.tcl:2292 -msgid "Created feature " +#: src/emc/usr_intf/axis/scripts/axis.py:203 +msgid "Jog first axis" msgstr "" -#: tcl/ngcgui.tcl:2316 -#, fuzzy -msgid "option" -msgstr "動き" +#: src/emc/usr_intf/axis/scripts/axis.py:204 +msgid "Up, Down" +msgstr "" -#: tcl/ngcgui.tcl:2327 -#, fuzzy -msgid "Missing parameters" -msgstr "パラムのファイルを読む" +#: src/emc/usr_intf/axis/scripts/axis.py:204 +msgid "Jog second axis" +msgstr "" -#: tcl/ngcgui.tcl:2331 -#, fuzzy -msgid "Parse Error" -msgstr "越度" +#: src/emc/usr_intf/axis/scripts/axis.py:205 +msgid "Pg Up, Pg Dn" +msgstr "" -#: tcl/ngcgui.tcl:2338 -msgid "Null Preamble" +#: src/emc/usr_intf/axis/scripts/axis.py:205 +msgid "Jog third axis" msgstr "" -#: tcl/ngcgui.tcl:2343 -msgid "Read Preamble" +#: src/emc/usr_intf/axis/scripts/axis.py:206 +msgid "Shift+above jogs" msgstr "" -#: tcl/ngcgui.tcl:2347 -msgid "Preamble Error" +#: src/emc/usr_intf/axis/scripts/axis.py:206 +msgid "Jog at traverse speed" msgstr "" -#: tcl/ngcgui.tcl:2352 -msgid "Null Postamble" +#: src/emc/usr_intf/axis/scripts/axis.py:207 +msgid "Jog fourth axis" msgstr "" -#: tcl/ngcgui.tcl:2357 -msgid "Read Postamble" +#: src/emc/usr_intf/axis/scripts/axis.py:210 +msgid "Toggle between Drag and Rotate mode" msgstr "" -#: tcl/ngcgui.tcl:2361 -msgid "Postamble Error" +#: src/emc/usr_intf/axis/scripts/axis.py:211 +msgid "Left Button" msgstr "" -#: tcl/ngcgui.tcl:2366 -msgid "Read Subfile" +#: src/emc/usr_intf/axis/scripts/axis.py:211 +msgid "Pan, rotate or select line" msgstr "" -#: tcl/ngcgui.tcl:2371 -#, fuzzy -msgid "Write Error" -msgstr "越度" +#: src/emc/usr_intf/axis/scripts/axis.py:212 +msgid "Shift+Left Button" +msgstr "" -#: tcl/ngcgui.tcl:2375 -msgid "Outfile set" +#: src/emc/usr_intf/axis/scripts/axis.py:212 +msgid "Rotate or pan" msgstr "" -#: tcl/ngcgui.tcl:2380 -msgid "Finished" +#: src/emc/usr_intf/axis/scripts/axis.py:213 +msgid "Right Button" msgstr "" -#: tcl/ngcgui.tcl:2385 -#, fuzzy -msgid "Canceled" -msgstr "中止" +#: src/emc/usr_intf/axis/scripts/axis.py:213 +#: src/emc/usr_intf/axis/scripts/axis.py:215 +#: src/emc/usr_intf/axis/scripts/axis.py:216 +msgid "Zoom view" +msgstr "" -#: tcl/ngcgui.tcl:2391 -msgid "Sent" +#: src/emc/usr_intf/axis/scripts/axis.py:214 +msgid "Wheel Button" msgstr "" -#: tcl/ngcgui.tcl:2395 -msgid "SendFileToAxis failed" +#: src/emc/usr_intf/axis/scripts/axis.py:214 +msgid "Rotate view" msgstr "" -#: tcl/ngcgui.tcl:2399 -msgid "Ctrl-k for Key bindings" +#: src/emc/usr_intf/axis/scripts/axis.py:215 +msgid "Rotate Wheel" msgstr "" -#: tcl/ngcgui.tcl:2403 -msgid "Expand sub" +#: src/emc/usr_intf/axis/scripts/axis.py:216 +msgid "Control+Left Button" msgstr "" -#: tcl/ngcgui.tcl:2407 +#: src/emc/usr_intf/axis/scripts/axis.py:219 #, fuzzy -msgid "Retain values" -msgstr "軸の数値:" +msgid "Manual control" +msgstr "手動" -#: tcl/ngcgui.tcl:2411 -msgid "Verbose" +#: src/emc/usr_intf/axis/scripts/axis.py:220 +msgid "Code entry (MDI)" msgstr "" -#: tcl/ngcgui.tcl:2417 -msgid "Finalize Canceled" +#: src/emc/usr_intf/axis/scripts/axis.py:221 +msgid "Control-M" msgstr "" -#: tcl/ngcgui.tcl:2572 tcl/ngcgui.tcl:2728 -msgid "Dismiss" +#: src/emc/usr_intf/axis/scripts/axis.py:221 +msgid "Clear MDI history" msgstr "" -#: tcl/ngcgui.tcl:2577 -msgid "ngcgui Error" +#: src/emc/usr_intf/axis/scripts/axis.py:222 +msgid "Control-H" msgstr "" -#: tcl/ngcgui.tcl:2600 -msgid "Declining support for tk send bug in ngcgui" +#: src/emc/usr_intf/axis/scripts/axis.py:222 +msgid "Copy selected MDI history elements" msgstr "" -#: tcl/ngcgui.tcl:2601 -msgid "You should upgrade linuxcnc to >= linuxcnc2.5" +#: src/emc/usr_intf/axis/scripts/axis.py:223 +msgid "to clipboard" msgstr "" -#: tcl/ngcgui.tcl:2645 -msgid "pre2.4_send_file_to_axis:error" +#: src/emc/usr_intf/axis/scripts/axis.py:224 +msgid "Control-Shift-H" msgstr "" -#: tcl/ngcgui.tcl:2839 share/axis/tcl/axis.tcl:1917 -msgid "OFF" +#: src/emc/usr_intf/axis/scripts/axis.py:224 +msgid "Paste clipboard to MDI history" msgstr "" -#: tcl/ngcgui.tcl:2842 -msgid "Toggle autosend" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:225 share/axis/tcl/axis.tcl:1183 +#: src/emc/usr_intf/touchy/touchy.glade:508 +#, fuzzy +msgid "Override Limits" +msgstr "方図を聞き捨てる" -#: tcl/ngcgui.tcl:2843 tcl/ngcgui.tcl:3057 -msgid "Clear entries" +#: src/emc/usr_intf/axis/scripts/axis.py:227 +msgid "Open program" msgstr "" -#: tcl/ngcgui.tcl:2844 -msgid "Set entries to default values" +#: src/emc/usr_intf/axis/scripts/axis.py:228 +msgid "Control-R" msgstr "" -#: tcl/ngcgui.tcl:2845 tcl/ngcgui.tcl:2859 tcl/ngcgui.tcl:2861 -msgid "Open editor specified by" +#: src/emc/usr_intf/axis/scripts/axis.py:228 +msgid "Reload program" msgstr "" -#: tcl/ngcgui.tcl:2846 -msgid "on last outfile" +#: src/emc/usr_intf/axis/scripts/axis.py:229 +msgid "Control-S" msgstr "" -#: tcl/ngcgui.tcl:2847 -msgid "toggle expand subroutines" +#: src/emc/usr_intf/axis/scripts/axis.py:229 +msgid "Save g-code as" msgstr "" -#: tcl/ngcgui.tcl:2848 -msgid "Create feature" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:230 +#, fuzzy +msgid "Run program" +msgstr "プローグラム: " -#: tcl/ngcgui.tcl:2849 -msgid "Finalize (AUTO send is" +#: src/emc/usr_intf/axis/scripts/axis.py:231 +msgid "Step program" msgstr "" -#: tcl/ngcgui.tcl:2850 -msgid "Show key bindings" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:232 +#, fuzzy +msgid "Pause program" +msgstr "プローグラム: " -#: tcl/ngcgui.tcl:2851 -msgid "Restart (cancel pending)" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:233 +#, fuzzy +msgid "Resume program" +msgstr "つづく" -#: tcl/ngcgui.tcl:2852 -msgid "(re)Read Preamble" +#: src/emc/usr_intf/axis/scripts/axis.py:234 +msgid "Stop running program, or" msgstr "" -#: tcl/ngcgui.tcl:2853 -msgid "(re)Read Postamble" +#: src/emc/usr_intf/axis/scripts/axis.py:235 +msgid "stop loading program preview" msgstr "" -#: tcl/ngcgui.tcl:2854 -msgid "(re)Read Subfile" +#: src/emc/usr_intf/axis/scripts/axis.py:237 +msgid "Toggle mist" msgstr "" -#: tcl/ngcgui.tcl:2855 -msgid "toggle retain values" +#: src/emc/usr_intf/axis/scripts/axis.py:238 +msgid "Toggle flood" msgstr "" -#: tcl/ngcgui.tcl:2856 -msgid "toggle output file verbosity" +#: src/emc/usr_intf/axis/scripts/axis.py:239 +#, fuzzy +msgid "Spindle brake off" +msgstr "スピンドル消した" + +#: src/emc/usr_intf/axis/scripts/axis.py:240 +msgid "Shift-B" msgstr "" -#: tcl/ngcgui.tcl:2857 +#: src/emc/usr_intf/axis/scripts/axis.py:240 #, fuzzy -msgid "Show status" -msgstr "状態:" +msgid "Spindle brake on" +msgstr "スピンドル消した" -#: tcl/ngcgui.tcl:2858 -msgid "Show full status (debug info)" +#: src/emc/usr_intf/axis/scripts/axis.py:241 +msgid "Turn spindle clockwise" msgstr "" -#: tcl/ngcgui.tcl:2860 -msgid "on current subfile" +#: src/emc/usr_intf/axis/scripts/axis.py:242 +msgid "Turn spindle counterclockwise" msgstr "" -#: tcl/ngcgui.tcl:2862 -msgid "on current preamble" +#: src/emc/usr_intf/axis/scripts/axis.py:243 +msgid "Turn spindle more slowly" msgstr "" -#: tcl/ngcgui.tcl:2865 -msgid " Escape Return to Preview page" +#: src/emc/usr_intf/axis/scripts/axis.py:244 +msgid "Turn spindle more quickly" msgstr "" -#: tcl/ngcgui.tcl:2942 -msgid "Editing requires setting for environmental variable VISUAL" +#: src/emc/usr_intf/axis/scripts/axis.py:246 +msgid "Control-K" msgstr "" -#: tcl/ngcgui.tcl:2943 -msgid "Trying gedit" +#: src/emc/usr_intf/axis/scripts/axis.py:246 +msgid "Clear live plot" msgstr "" -#: tcl/ngcgui.tcl:2955 -msgid "No file available for editing yet" +#: src/emc/usr_intf/axis/scripts/axis.py:247 +msgid "Cycle among preset views" msgstr "" -#: tcl/ngcgui.tcl:2964 tcl/ngcgui.tcl:2973 -msgid "No file available for editing" +#: src/emc/usr_intf/axis/scripts/axis.py:248 +msgid "Cycle among preview, DRO, and user tabs" msgstr "" -#: tcl/ngcgui.tcl:2990 -#, fuzzy -msgid "Status items" -msgstr "状態:" +#: src/emc/usr_intf/axis/scripts/axis.py:250 +msgid "Ctrl-Space" +msgstr "" -#: tcl/ngcgui.tcl:3003 -msgid "All-page opt items" +#: src/emc/usr_intf/axis/scripts/axis.py:250 +msgid "Clear notifications" msgstr "" -#: tcl/ngcgui.tcl:3009 -msgid "any-items" +#: src/emc/usr_intf/axis/scripts/axis.py:850 +#, python-format +msgid "Unknown tool %d" msgstr "" -#: tcl/ngcgui.tcl:3046 -msgid "Set defaults" +#: src/emc/usr_intf/axis/scripts/axis.py:852 +msgid "No tool" msgstr "" -#: tcl/ngcgui.tcl:3125 -msgid "not writable" +#: src/emc/usr_intf/axis/scripts/axis.py:854 +#, python-format +msgid "Tool %(tool)d, offset %(zo)g, diameter %(dia)g" msgstr "" -#: tcl/ngcgui.tcl:3263 tcl/ngcgui.tcl:3443 -msgid "new" +#: src/emc/usr_intf/axis/scripts/axis.py:856 +#, python-format +msgid "Tool %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" msgstr "" -#: tcl/ngcgui.tcl:3288 -msgid "Open a new Subfile" +#: src/emc/usr_intf/axis/scripts/axis.py:1031 +#, fuzzy +msgid "Filtering..." +msgstr "テスト..." + +#: src/emc/usr_intf/axis/scripts/axis.py:1102 +msgid "Filter failed" msgstr "" -#: tcl/ngcgui.tcl:3434 -msgid "remove" +#: src/emc/usr_intf/axis/scripts/axis.py:1103 +#, python-format +msgid "" +"The program %(program)r exited with code %(code)d. Any error messages it " +"produced are shown below:" msgstr "" -#: tcl/ngcgui.tcl:3456 tcl/ngcgui.tcl:3462 -msgid "move" +#: src/emc/usr_intf/axis/scripts/axis.py:1171 +#, python-format +msgid "G-Code error in %s" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1172 +#, python-format +msgid "" +"Near line %(seq)d of %(f)s:\n" +"%(error_str)s" msgstr "" -#: tcl/ngcgui.tcl:3561 src/emc/usr_intf/pncconf/pncconf.py:7022 -#: src/emc/usr_intf/pncconf/pncconf.py:7139 -#: src/emc/usr_intf/pncconf/pncconf.py:7306 +#: src/emc/usr_intf/axis/scripts/axis.py:1341 +#: src/emc/usr_intf/axis/scripts/axis.py:2942 share/axis/tcl/axis.tcl:1162 +#: share/axis/tcl/axis.tcl:1164 share/axis/tcl/axis.tcl:2269 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:895 #, fuzzy -msgid "Custom" -msgstr "自動" +msgid "Continuous" +msgstr "連綿" -#: tcl/ngcgui.tcl:3587 -msgid "Problem creating page" +#: src/emc/usr_intf/axis/scripts/axis.py:1452 +msgid "Ok" msgstr "" -#: tcl/ngcgui.tcl:3594 -msgid "entrykeybindings not available" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1599 +#, fuzzy +msgid "T Tool Table" +msgstr "ツール表を読む" -#: tcl/ngcgui.tcl:3633 -msgid "Found multiple matches for" +#: src/emc/usr_intf/axis/scripts/axis.py:1610 +#: src/emc/usr_intf/axis/scripts/axis.py:1859 +#: src/emc/usr_intf/axis/scripts/axis.py:2387 +#: src/emc/usr_intf/stepconf/stepconf.py:1328 +#: src/emc/usr_intf/stepconf/pages.py:631 +msgid "in" msgstr "" -#: tcl/ngcgui.tcl:3634 -msgid "using path" +#: src/emc/usr_intf/axis/scripts/axis.py:1613 +msgid " radius" msgstr "" -#: tcl/ngcgui.tcl:3642 src/emc/usr_intf/axis/scripts/axis.py:2255 -#: src/emc/usr_intf/axis/scripts/axis.py:2268 -msgid "Warning" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1615 +#, fuzzy +msgid " diameter" +msgstr "直径:" -#: tcl/ngcgui.tcl:3643 -msgid "File absolute path specifier conflicts with searchpath result" +#: src/emc/usr_intf/axis/scripts/axis.py:1616 +msgid "°" msgstr "" -#: tcl/ngcgui.tcl:3644 -msgid "Absolute Specifier" +#: src/emc/usr_intf/axis/scripts/axis.py:1625 +msgid "Coordinate System:" msgstr "" -#: tcl/ngcgui.tcl:3645 -msgid "Using Search Result" +#: src/emc/usr_intf/axis/scripts/axis.py:1641 +msgid "fixture" msgstr "" -#: tcl/ngcgui.tcl:3650 -msgid "File not in Search Path" +#: src/emc/usr_intf/axis/scripts/axis.py:1642 +msgid "workpiece" msgstr "" -#: tcl/ngcgui.tcl:3652 -msgid "Must be in search path" +#: src/emc/usr_intf/axis/scripts/axis.py:1658 +msgid "Name:" msgstr "" -#: tcl/ngcgui.tcl:3654 -msgid "(File found -- not in search path)" +#: src/emc/usr_intf/axis/scripts/axis.py:1658 +msgid "Size:" msgstr "" -#: tcl/ngcgui.tcl:3656 -msgid "Current directory" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1659 +#, fuzzy +msgid "Tool order:" +msgstr "道具:" -#: tcl/ngcgui.tcl:3657 -msgid "Search path" +#: src/emc/usr_intf/axis/scripts/axis.py:1659 +msgid "Rapid distance:" msgstr "" -#: tcl/ngcgui.tcl:3663 -msgid "Check setting for" +#: src/emc/usr_intf/axis/scripts/axis.py:1660 +msgid "Feed distance:" msgstr "" -#: tcl/ngcgui.tcl:3664 -msgid "in ini file" +#: src/emc/usr_intf/axis/scripts/axis.py:1660 +msgid "Total distance:" msgstr "" -#: tcl/ngcgui.tcl:3665 -msgid "(Restart required after fixing ini file)" +#: src/emc/usr_intf/axis/scripts/axis.py:1661 +msgid "Run time:" msgstr "" -#: tcl/ngcgui.tcl:3680 -#, fuzzy -msgid "Try to Continue" -msgstr "連綿" +#: src/emc/usr_intf/axis/scripts/axis.py:1661 +msgid "X bounds:" +msgstr "" -#: tcl/ngcgui.tcl:3685 -msgid "Ngcgui Configuration File Not Found" +#: src/emc/usr_intf/axis/scripts/axis.py:1662 +msgid "Y bounds:" msgstr "" -#: tcl/ngcgui.tcl:3765 -msgid "Missing Tcl Package Img" +#: src/emc/usr_intf/axis/scripts/axis.py:1662 +msgid "Z bounds:" msgstr "" -#: tcl/ngcgui.tcl:3766 -msgid "Please install Img" +#: src/emc/usr_intf/axis/scripts/axis.py:1663 +msgid "A bounds:" msgstr "" -#: tcl/ngcgui.tcl:3965 -#, fuzzy -msgid "ini file" -msgstr "NCファイル" +#: src/emc/usr_intf/axis/scripts/axis.py:1663 +msgid "B bounds:" +msgstr "" -#: tcl/ngcgui.tcl:3973 -msgid "not found" +#: src/emc/usr_intf/axis/scripts/axis.py:1664 +msgid "C bounds:" msgstr "" -#: tcl/ngcgui_ttt.tcl:67 -msgid "found truetype-tracer v4 -OK" +#: src/emc/usr_intf/axis/scripts/axis.py:1688 +#, python-format +msgid "Program exceeds machine minimum on axis %s" msgstr "" -#: tcl/ngcgui_ttt.tcl:70 -msgid "Note truetype-tracer v4 is required" +#: src/emc/usr_intf/axis/scripts/axis.py:1691 +#, python-format +msgid "Program exceeds machine maximum on axis %s" msgstr "" -#: tcl/ngcgui_ttt.tcl:71 -msgid "Note: truetype-tracer v4 is required" +#: src/emc/usr_intf/axis/scripts/axis.py:1696 +msgid "Program exceeds machine limits" msgstr "" -#: tcl/ngcgui_ttt.tcl:81 -msgid "ngcgui_app.tcl must be loaded before" +#: src/emc/usr_intf/axis/scripts/axis.py:1699 +msgid "Run Anyway" msgstr "" -#: tcl/ngcgui_ttt.tcl:89 -msgid "Create a subroutine file from truetype-tracer (V4 reqd)" +#: src/emc/usr_intf/axis/scripts/axis.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1581 +msgid "No file loaded" msgstr "" -#: tcl/ngcgui_ttt.tcl:102 tcl/ngcgui_ttt.tcl:115 -msgid "problem with" +#: src/emc/usr_intf/axis/scripts/axis.py:1845 +#, python-format +msgid "generated from %s" msgstr "" -#: tcl/ngcgui_ttt.tcl:106 -msgid "No entry for" +#: src/emc/usr_intf/axis/scripts/axis.py:1851 +#, python-format +msgid "" +"%(size)s bytes\n" +"%(lines)s gcode lines" msgstr "" -#: tcl/ngcgui_ttt.tcl:109 -msgid "wrong version of truetype-tracer" +#: src/emc/usr_intf/axis/scripts/axis.py:1877 +#, python-format +msgid "%.1f minutes" msgstr "" -#: tcl/ngcgui_ttt.tcl:125 -msgid "not writable, using" +#: src/emc/usr_intf/axis/scripts/axis.py:1879 +#, python-format +msgid "%d seconds" msgstr "" -#: tcl/ngcgui_ttt.tcl:125 -msgid "and setting expandsub" +#: src/emc/usr_intf/axis/scripts/axis.py:1887 +#, python-format +msgid "%(a)f to %(b)f = %(diff)f %(units)s" msgstr "" -#: tcl/ngcgui_ttt.tcl:161 -msgid "Text" +#: src/emc/usr_intf/axis/scripts/axis.py:1888 +msgid "G-Code Properties" msgstr "" -#: tcl/ngcgui_ttt.tcl:171 -msgid "Linescale" +#: src/emc/usr_intf/axis/scripts/axis.py:2021 +#, fuzzy +msgid "All machinable files" +msgstr "全部のファイル" + +#: src/emc/usr_intf/axis/scripts/axis.py:2022 +#: src/emc/usr_intf/axis/scripts/axis.py:2659 +msgid "rs274ngc files" msgstr "" -#: tcl/ngcgui_ttt.tcl:177 -msgid "none" +#: src/emc/usr_intf/axis/scripts/axis.py:2037 +msgid "axis cannot accept remote command while running" msgstr "" -#: tcl/ngcgui_ttt.tcl:192 -msgid "Subdiv" +#: src/emc/usr_intf/axis/scripts/axis.py:2098 +msgid "File not Writable:" msgstr "" -#: tcl/ngcgui_ttt.tcl:199 -msgid "default" +#: src/emc/usr_intf/axis/scripts/axis.py:2099 +msgid "" +"This file is not writable\n" +"You can Edit-readonly\n" +"\n" +"or\n" +"\n" +"Save it to your own directory\n" +"then open that saved, writable file" msgstr "" -#: tcl/ngcgui_ttt.tcl:239 -msgid "Mode" +#: src/emc/usr_intf/axis/scripts/axis.py:2106 +msgid "Edit-readonly" msgstr "" -#: tcl/ngcgui_ttt.tcl:247 -msgid "normal" +#: src/emc/usr_intf/axis/scripts/axis.py:2440 +msgid "Axis is already homed, are you sure you want to re-home?" msgstr "" -#: tcl/ngcgui_ttt.tcl:248 -msgid "date" +#: src/emc/usr_intf/axis/scripts/axis.py:2453 +msgid "This axis is already homed, are you sure you want to re-home?" msgstr "" -#: tcl/ngcgui_ttt.tcl:249 -msgid "fontname" +#: src/emc/usr_intf/axis/scripts/axis.py:2493 share/axis/tcl/axis.tcl:1178 +msgid "Touch Off" msgstr "" -#: tcl/ngcgui_ttt.tcl:262 -#, fuzzy -msgid "Switches" -msgstr "インチ" +#: src/emc/usr_intf/axis/scripts/axis.py:2494 +#, python-format +msgid "Enter %s coordinate relative to %%s:" +msgstr "" -#: tcl/ngcgui_ttt.tcl:270 -msgid "Unicode" +#: src/emc/usr_intf/axis/scripts/axis.py:2671 +msgid "Error saving file" msgstr "" -#: tcl/ngcgui_ttt.tcl:275 -msgid "Allow Rotation" +#: src/emc/usr_intf/axis/scripts/axis.py:3077 +#: src/emc/usr_intf/touchy/touchy.glade:577 +#: src/emc/usr_intf/gscreen/gscreen.glade:2933 +msgid "Home All" msgstr "" -#: tcl/ngcgui_ttt.tcl:295 -msgid "Make ngcgui-compatible subfile and new tab page" +#: src/emc/usr_intf/axis/scripts/axis.py:3079 +msgid "Home all axes [Ctrl-Home]" msgstr "" -#: tcl/ngcgui_ttt.tcl:353 -msgid "Null text" +#: src/emc/usr_intf/axis/scripts/axis.py:3082 +msgid "Home All Axes" msgstr "" -#: tcl/ngcgui_ttt.tcl:384 -msgid "Using truetype-tracer default font" +#: src/emc/usr_intf/axis/scripts/axis.py:3089 +msgid "Unhome All Axes" msgstr "" -#: tcl/ngcgui_ttt.tcl:388 -msgid "no such file" +#: src/emc/usr_intf/axis/scripts/axis.py:3113 +#, python-format +msgid "Home Axis _%s" msgstr "" -#: tcl/ngcgui_ttt.tcl:393 -msgid "file not readable" +#: src/emc/usr_intf/axis/scripts/axis.py:3115 +#, python-format +msgid "Unhome Axis _%s" msgstr "" -#: tcl/ngcgui_ttt.tcl:507 -msgid "Creating new tab page" +#: src/emc/usr_intf/axis/scripts/axis.py:3282 +msgid "Run from here" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:148 -msgid "Emergency stop" +#: src/emc/usr_intf/axis/scripts/axis.py:3598 +msgid "Error in ~/.axisrc" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:149 +#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:102 #, fuzzy -msgid "Turn machine on" +msgid "Machinekit Status" msgstr "出来るように" -#: src/emc/usr_intf/axis/scripts/axis.py:151 -msgid "Activate first axis" -msgstr "" - -#: src/emc/usr_intf/axis/scripts/axis.py:152 -msgid "Activate second axis" +#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:118 +msgid "Copy All" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:153 -msgid "Activate third axis" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 +#, python-format +msgid "Insert tool %d and click continue when ready" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:154 -msgid "Activate fourth axis" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:39 +msgid "Remove the tool and click continue when ready" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:155 -msgid "Activate fifth through ninth axis" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 +#: src/emc/usr_intf/touchy/mdi.py:49 src/emc/usr_intf/gscreen/mdi.py:49 +msgid "Tool change" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:156 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 #, fuzzy -msgid "Set Feed Override from 0% to 100%" -msgstr "フィード手直して" +msgid "Continue" +msgstr "連綿" -#: src/emc/usr_intf/axis/scripts/axis.py:157 -msgid ", and ." +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:64 +msgid "AXIS Manual Toolchanger" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:157 -#, fuzzy -msgid "Select jog speed" -msgstr "ジョグ時速:" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:68 +msgid "" +"This window is part of the AXIS manual toolchanger. It is safe to close or " +"iconify this window, or it will close automatically after a few seconds." +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:158 -msgid "< and >" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:507 +#, python-format +msgid "%s: Image to gcode" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:158 -#, fuzzy -msgid "Select angular jog speed" -msgstr "ジョグ時速:" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:508 +msgid "Image to gcode" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:159 -msgid "I, Shift-I" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:518 +#, python-format +msgid "" +"Image size: %(w)d x %(h)d pixels\n" +"Minimum pixel value: %(min)d\n" +"Maximum pixel value: %(max)d" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:159 share/axis/tcl/axis.tcl:2356 -msgid "Select jog increment" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 +msgid "G20 (in)" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:160 -#, fuzzy -msgid "Continuous jog" -msgstr "連綿" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 +msgid "G21 (mm)" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:479 -#, fuzzy -msgid "Home" -msgstr "原点" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 +#: src/emc/usr_intf/touchy/emc_interface.py:417 +msgid "None" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:161 -msgid "Send active axis home" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +msgid "White" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:162 -msgid "Ctrl-Home" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +msgid "Black" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:162 -msgid "Home all axes" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Rows" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:163 -msgid "Shift-Home" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Columns" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:163 -msgid "Zero G54 offset for active axis" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Rows then Columns" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:164 -msgid "End" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Columns then Rows" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:164 -msgid "Set G54 offset for active axis" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Positive" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:165 -msgid "Jog active axis" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +#, fuzzy +msgid "Negative" +msgstr "相対" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Alternating" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:168 -msgid "Left, Right" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Up Milling" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:168 -msgid "Jog first axis" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Down Milling" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:169 -msgid "Up, Down" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "Ball End" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:169 -msgid "Jog second axis" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "Flat End" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:170 -msgid "Pg Up, Pg Dn" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "30 Degree" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:170 -msgid "Jog third axis" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "45 Degree" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:171 -msgid "Shift+above jogs" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "60 Degree" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:171 -msgid "Jog at traverse speed" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 +msgid "Secondary" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:172 -msgid "Jog fourth axis" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 +msgid "Full" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:175 -msgid "Toggle between Drag and Rotate mode" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:654 +msgid "Invert Image" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:176 -msgid "Left Button" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:655 +msgid "Normalize Image" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:176 -msgid "Pan, rotate or select line" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:656 +msgid "Extend Image Border" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:657 +msgid "Pixel Size (Units)" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:177 -msgid "Shift+Left Button" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:658 +msgid "Depth (units)" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:177 -msgid "Rotate or pan" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:659 +msgid "Tolerance (units)" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:178 -msgid "Right Button" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:660 +msgid "Stepover (pixels)" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:178 -#: src/emc/usr_intf/axis/scripts/axis.py:180 -#: src/emc/usr_intf/axis/scripts/axis.py:181 -msgid "Zoom view" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:661 +msgid "Tool Diameter (units)" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:179 -msgid "Wheel Button" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:662 +msgid "Tool Type" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:179 -msgid "Rotate view" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:663 +msgid "Feed Rate (units per minute)" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:180 -msgid "Rotate Wheel" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:664 +msgid "Plunge Feed Rate (units per minute)" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:181 -msgid "Control+Left Button" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:666 +msgid "Safety Height (units)" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:184 -#, fuzzy -msgid "Manual control" -msgstr "手動" - -#: src/emc/usr_intf/axis/scripts/axis.py:185 -msgid "Code entry (MDI)" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:667 +msgid "Scan Pattern" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:186 -msgid "Control-M" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:668 +msgid "Scan Direction" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:186 -msgid "Clear MDI history" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:669 +msgid "Lace Bounding" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:187 -msgid "Control-H" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:670 +msgid "Contact Angle (degrees)" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:187 -msgid "Copy selected MDI history elements" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:671 +msgid "Spindle Speed (RPM)" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:188 -msgid "to clipboard" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:672 +msgid "Roughing offset (units, 0=no roughing)" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:189 -msgid "Control-Shift-H" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:673 +msgid "Roughing depth per pass (units)" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:189 -msgid "Paste clipboard to MDI history" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:740 +msgid "image-to-gcode: User pressed cancel" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:190 share/axis/tcl/axis.tcl:1113 -#: src/emc/usr_intf/touchy/touchy.glade:508 -#, fuzzy -msgid "Override Limits" -msgstr "方図を聞き捨てる" - -#: src/emc/usr_intf/axis/scripts/axis.py:192 -msgid "Open program" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:753 +msgid "Depth images" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:193 -msgid "Control-R" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:22 +msgid "Machinekit Debug Level" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:193 -msgid "Reload program" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:23 +msgid "debuglevel" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:194 -msgid "Control-S" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:36 +msgid "Configuration *" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:194 -msgid "Save g-code as" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:37 +msgid "Version Numbers *" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:195 -#, fuzzy -msgid "Run program" -msgstr "プローグラム: " +#: src/emc/usr_intf/axis/scripts/debuglevel.py:38 +msgid "NML *" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:196 -msgid "Step program" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:39 +msgid "RCS *" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:197 -#, fuzzy -msgid "Pause program" -msgstr "プローグラム: " +#: src/emc/usr_intf/axis/scripts/debuglevel.py:40 +msgid "Task Issue" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:198 +#: src/emc/usr_intf/axis/scripts/debuglevel.py:41 #, fuzzy -msgid "Resume program" -msgstr "つづく" - -#: src/emc/usr_intf/axis/scripts/axis.py:199 -msgid "Stop running program, or" -msgstr "" +msgid "Motion Time" +msgstr "動き" -#: src/emc/usr_intf/axis/scripts/axis.py:200 -msgid "stop loading program preview" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:43 +msgid "Interpreter List" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:202 -msgid "Toggle mist" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:47 +#, python-format +msgid "" +"Inifile setting for this debug level:\n" +"[EMC]DEBUG=0x%08x" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:203 -msgid "Toggle flood" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:81 +msgid " * This option can only be enabled in the inifile" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:204 +#: share/axis/tcl/axis.tcl:52 #, fuzzy -msgid "Spindle brake off" -msgstr "スピンドル消した" +msgid "_Open..." +msgstr "開く..." -#: src/emc/usr_intf/axis/scripts/axis.py:205 -msgid "Shift-B" -msgstr "" +#: share/axis/tcl/axis.tcl:56 +#, fuzzy +msgid "Recent _Files" +msgstr "テキストファイル" -#: src/emc/usr_intf/axis/scripts/axis.py:205 +#: share/axis/tcl/axis.tcl:60 #, fuzzy -msgid "Spindle brake on" -msgstr "スピンドル消した" +msgid "_Edit..." +msgstr "エディット..." -#: src/emc/usr_intf/axis/scripts/axis.py:206 -msgid "Turn spindle clockwise" +#: share/axis/tcl/axis.tcl:63 +msgid "Ctrl-R" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:207 -msgid "Turn spindle counterclockwise" +#: share/axis/tcl/axis.tcl:65 +msgid "_Reload" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:208 -msgid "Turn spindle more slowly" +#: share/axis/tcl/axis.tcl:68 +msgid "Ctrl-S" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:209 -msgid "Turn spindle more quickly" +#: share/axis/tcl/axis.tcl:70 +msgid "_Save gcode as..." msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:211 -msgid "Control-K" +#: share/axis/tcl/axis.tcl:74 +msgid "_Properties..." msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:211 -msgid "Clear live plot" +#: share/axis/tcl/axis.tcl:80 +msgid "Edit _tool table..." msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:212 -msgid "Cycle among preset views" -msgstr "" +#: share/axis/tcl/axis.tcl:84 +#, fuzzy +msgid "Reload tool ta_ble" +msgstr "ツール表を読む" -#: src/emc/usr_intf/axis/scripts/axis.py:213 -msgid "Cycle among preview, DRO, and user tabs" +#: share/axis/tcl/axis.tcl:90 +msgid "_Ladder Editor..." msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:215 -msgid "Ctrl-Space" +#: share/axis/tcl/axis.tcl:102 +msgid "Toggle _Emergency Stop" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:215 -msgid "Clear notifications" +#: share/axis/tcl/axis.tcl:107 +msgid "Toggle _Machine Power" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:836 -#, python-format -msgid "Unknown tool %d" -msgstr "" +#: share/axis/tcl/axis.tcl:114 +#, fuzzy +msgid "_Run program" +msgstr "プローグラム: " -#: src/emc/usr_intf/axis/scripts/axis.py:838 -msgid "No tool" +#: share/axis/tcl/axis.tcl:118 +msgid "Ru_n from selected line" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:840 -#, python-format -msgid "Tool %(tool)d, offset %(zo)g, diameter %(dia)g" -msgstr "" +#: share/axis/tcl/axis.tcl:123 +#, fuzzy +msgid "S_tep" +msgstr "徐徐に" -#: src/emc/usr_intf/axis/scripts/axis.py:842 -#, python-format -msgid "Tool %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" -msgstr "" +#: share/axis/tcl/axis.tcl:128 +#, fuzzy +msgid "_Pause" +msgstr "間断" -#: src/emc/usr_intf/axis/scripts/axis.py:1013 +#: share/axis/tcl/axis.tcl:133 #, fuzzy -msgid "Filtering..." -msgstr "テスト..." +msgid "Re_sume" +msgstr "つづく" -#: src/emc/usr_intf/axis/scripts/axis.py:1073 -msgid "Filter failed" +#: share/axis/tcl/axis.tcl:143 +msgid "Stop at M_1" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1074 -#, python-format -msgid "" -"The program %(program)r exited with code %(code)d. Any error messages it " -"produced are shown below:" +#: share/axis/tcl/axis.tcl:148 +msgid "Skip lines with '_/'" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1139 -#, python-format -msgid "G-Code error in %s" +#: share/axis/tcl/axis.tcl:153 +msgid "Ctrl-M" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1140 -#, python-format -msgid "" -"Near line %(seq)d of %(f)s:\n" -"%(error_str)s" +#: share/axis/tcl/axis.tcl:155 +msgid "Clear MDI h_istory" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1292 -#: src/emc/usr_intf/axis/scripts/axis.py:2725 share/axis/tcl/axis.tcl:1092 -#: share/axis/tcl/axis.tcl:1094 share/axis/tcl/axis.tcl:2144 -#, fuzzy -msgid "Continuous" -msgstr "連綿" - -#: src/emc/usr_intf/axis/scripts/axis.py:1403 -msgid "Ok" +#: share/axis/tcl/axis.tcl:157 +msgid "Ctrl-H" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1546 -#, fuzzy -msgid "T Tool Table" -msgstr "ツール表を読む" +#: share/axis/tcl/axis.tcl:159 +msgid "Copy from MDI hist_ory" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1557 -#: src/emc/usr_intf/axis/scripts/axis.py:1730 -#: src/emc/usr_intf/stepconf/stepconf.py:1691 -#: src/emc/usr_intf/stepconf/stepconf.py:2235 -msgid "in" +#: share/axis/tcl/axis.tcl:161 +msgid "Ctrl-Shift-H" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1560 -msgid " radius" +#: share/axis/tcl/axis.tcl:163 +msgid "Paste to MDI histor_y" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1562 +#: share/axis/tcl/axis.tcl:169 #, fuzzy -msgid " diameter" -msgstr "直径:" +msgid "_Calibration" +msgstr "較正..." -#: src/emc/usr_intf/axis/scripts/axis.py:1563 -msgid "°" -msgstr "" +#: share/axis/tcl/axis.tcl:173 +#, fuzzy +msgid "Show _Hal Configuration" +msgstr "スピンドル消した" -#: src/emc/usr_intf/axis/scripts/axis.py:1572 -msgid "Coordinate System:" +#: share/axis/tcl/axis.tcl:177 +msgid "H_al Meter" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1588 -msgid "fixture" +#: share/axis/tcl/axis.tcl:181 +msgid "Ha_l Scope" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1589 -msgid "workpiece" +#: share/axis/tcl/axis.tcl:185 +msgid "Sho_w Machinekit Status" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1605 -msgid "Name:" +#: share/axis/tcl/axis.tcl:189 +msgid "Set _Debug Level" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1605 -msgid "Size:" +#: share/axis/tcl/axis.tcl:195 +msgid "Homin_g" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1606 -#, fuzzy -msgid "Tool order:" -msgstr "道具:" - -#: src/emc/usr_intf/axis/scripts/axis.py:1606 -msgid "Rapid distance:" +#: share/axis/tcl/axis.tcl:199 +msgid "_Unhoming" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1607 -msgid "Feed distance:" +#: share/axis/tcl/axis.tcl:203 +msgid "_Zero coordinate system" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1607 -msgid "Total distance:" +#: share/axis/tcl/axis.tcl:207 +msgid "P1 G5_4" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1608 -msgid "Run time:" +#: share/axis/tcl/axis.tcl:211 +msgid "P2 G5_5" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1608 -msgid "X bounds:" +#: share/axis/tcl/axis.tcl:215 +msgid "P3 G5_6" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1609 -msgid "Y bounds:" +#: share/axis/tcl/axis.tcl:219 +msgid "P4 G5_7" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1609 -msgid "Z bounds:" +#: share/axis/tcl/axis.tcl:223 +msgid "P5 G5_8" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1610 -msgid "A bounds:" +#: share/axis/tcl/axis.tcl:227 +msgid "P6 G5_9" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1610 -msgid "B bounds:" +#: share/axis/tcl/axis.tcl:231 +msgid "P7 G59._1" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1611 -msgid "C bounds:" +#: share/axis/tcl/axis.tcl:235 +msgid "P8 G59._2" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1635 -#, python-format -msgid "Program exceeds machine minimum on axis %s" +#: share/axis/tcl/axis.tcl:239 +msgid "P9 G59._3" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1638 -#, python-format -msgid "Program exceeds machine maximum on axis %s" +#: share/axis/tcl/axis.tcl:243 +msgid "_G92" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1643 -msgid "Program exceeds machine limits" +#: share/axis/tcl/axis.tcl:251 +msgid "Tool touch off to wor_kpiece" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1646 -msgid "Run Anyway" +#: share/axis/tcl/axis.tcl:257 +msgid "Tool touch off to _fixture" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1708 -msgid "No file loaded" +#: share/axis/tcl/axis.tcl:265 +msgid "_Top view" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1716 -#, python-format -msgid "generated from %s" +#: share/axis/tcl/axis.tcl:272 +msgid "_Rotated Top view" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1722 -#, python-format -msgid "" -"%(size)s bytes\n" -"%(lines)s gcode lines" +#: share/axis/tcl/axis.tcl:279 +msgid "_Side view" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1748 -#, python-format -msgid "%.1f minutes" +#: share/axis/tcl/axis.tcl:286 +msgid "_Front view" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1750 -#, python-format -msgid "%d seconds" +#: share/axis/tcl/axis.tcl:293 +msgid "_Perspective view" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1758 -#, python-format -msgid "%(a)f to %(b)f = %(diff)f %(units)s" +#: share/axis/tcl/axis.tcl:302 +msgid "Display _Inches" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1759 -msgid "G-Code Properties" +#: share/axis/tcl/axis.tcl:309 +msgid "Display _MM" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1883 +#: share/axis/tcl/axis.tcl:316 #, fuzzy -msgid "All machinable files" -msgstr "全部のファイル" +msgid "S_how program" +msgstr "プローグラム: " -#: src/emc/usr_intf/axis/scripts/axis.py:1884 -#: src/emc/usr_intf/axis/scripts/axis.py:2464 -msgid "rs274ngc files" +#: share/axis/tcl/axis.tcl:321 +msgid "Show program r_apids" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1899 -msgid "axis cannot accept remote command while running" -msgstr "" +#: share/axis/tcl/axis.tcl:326 +#, fuzzy +msgid "Alpha-_blend program" +msgstr "プローグラム: " -#: src/emc/usr_intf/axis/scripts/axis.py:2255 -msgid "Axis is already homed, are you sure you want to re-home?" +#: share/axis/tcl/axis.tcl:331 +msgid "Sho_w live plot" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2268 -msgid "This axis is already homed, are you sure you want to re-home?" +#: share/axis/tcl/axis.tcl:336 +msgid "Show too_l" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2308 share/axis/tcl/axis.tcl:1108 -msgid "Touch Off" +#: share/axis/tcl/axis.tcl:341 +msgid "Show e_xtents" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2309 -#, python-format -msgid "Enter %s coordinate relative to %%s:" +#: share/axis/tcl/axis.tcl:345 +msgid "_Grid" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2476 -msgid "Error saving file" -msgstr "" +#: share/axis/tcl/axis.tcl:350 +#, fuzzy +msgid "Show o_ffsets" +msgstr "工作物平行移動:" -#: src/emc/usr_intf/axis/scripts/axis.py:2859 -#: src/emc/usr_intf/touchy/touchy.glade:577 -msgid "Home All" +#: share/axis/tcl/axis.tcl:355 +msgid "Sh_ow machine limits" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2861 -msgid "Home all axes [Ctrl-Home]" +#: share/axis/tcl/axis.tcl:360 +msgid "Show v_elocity" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2864 -msgid "Home All Axes" +#: share/axis/tcl/axis.tcl:365 +msgid "Show _distance to go" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2871 -msgid "Unhome All Axes" +#: share/axis/tcl/axis.tcl:370 +msgid "Large coordinate fo_nt" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2895 -#, python-format -msgid "Home Axis _%s" +#: share/axis/tcl/axis.tcl:373 +msgid "Ctrl-K" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2897 -#, python-format -msgid "Unhome Axis _%s" +#: share/axis/tcl/axis.tcl:375 +msgid "_Clear live plot" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:3040 -msgid "Run from here" +#: share/axis/tcl/axis.tcl:384 +msgid "Show commanded position" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:3335 -msgid "Error in ~/.axisrc" +#: share/axis/tcl/axis.tcl:391 +msgid "Show actual position" msgstr "" -#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:102 -msgid "LinuxCNC Status" -msgstr "" +#: share/axis/tcl/axis.tcl:400 +#, fuzzy +msgid "Show machine position" +msgstr "出来るように" -#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:118 -msgid "Copy All" +#: share/axis/tcl/axis.tcl:407 +msgid "Show relative position" msgstr "" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:29 -#, python-format -msgid "Insert tool %d and click continue when ready" +#: share/axis/tcl/axis.tcl:416 +msgid "Joint mode" msgstr "" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:31 -msgid "Remove the tool and click continue when ready" +#: share/axis/tcl/axis.tcl:423 +msgid "World mode" msgstr "" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 -#: src/emc/usr_intf/touchy/mdi.py:49 -msgid "Tool change" +#: share/axis/tcl/axis.tcl:431 +msgid "_Off" msgstr "" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 +#: share/axis/tcl/axis.tcl:437 #, fuzzy -msgid "Continue" -msgstr "連綿" +msgid "_Custom" +msgstr "自動" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:55 -msgid "AXIS Manual Toolchanger" +#: share/axis/tcl/axis.tcl:443 +msgid "User_0" msgstr "" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:59 -msgid "" -"This window is part of the AXIS manual toolchanger. It is safe to close or " -"iconify this window, or it will close automatically after a few seconds." +#: share/axis/tcl/axis.tcl:447 +msgid "User_1" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:507 -#, python-format -msgid "%s: Image to gcode" +#: share/axis/tcl/axis.tcl:451 +msgid "User_2" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:508 -msgid "Image to gcode" +#: share/axis/tcl/axis.tcl:455 +msgid "User_3" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:518 -#, python-format -msgid "" -"Image size: %(w)d x %(h)d pixels\n" -"Minimum pixel value: %(min)d\n" -"Maximum pixel value: %(max)d" +#: share/axis/tcl/axis.tcl:459 +msgid "User_4" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 -msgid "G20 (in)" +#: share/axis/tcl/axis.tcl:463 +msgid "User_5" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 -msgid "G21 (mm)" +#: share/axis/tcl/axis.tcl:467 +msgid "User_6" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 -#: src/emc/usr_intf/touchy/emc_interface.py:417 -msgid "None" +#: share/axis/tcl/axis.tcl:471 +msgid "User_7" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 -msgid "White" +#: share/axis/tcl/axis.tcl:475 +msgid "User_8" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 -msgid "Black" +#: share/axis/tcl/axis.tcl:479 +msgid "User_9" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Rows" +#: share/axis/tcl/axis.tcl:491 +#, fuzzy +msgid "_About AXIS" +msgstr "これについて..." + +#: share/axis/tcl/axis.tcl:495 +msgid "Quick _Reference" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Columns" +#: share/axis/tcl/axis.tcl:505 +#, fuzzy +msgid "_Machine" +msgstr "マッシン" + +#: share/axis/tcl/axis.tcl:509 +#, fuzzy +msgid "_View" +msgstr "見方" + +#: share/axis/tcl/axis.tcl:513 +msgid "_User" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Rows then Columns" +#: share/axis/tcl/axis.tcl:526 +msgid "Toggle Emergency Stop [F1]" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Columns then Rows" +#: share/axis/tcl/axis.tcl:535 +msgid "Toggle Machine power [F2]" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Positive" +#: share/axis/tcl/axis.tcl:546 +msgid "Open G-Code file [O]" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -#, fuzzy -msgid "Negative" -msgstr "相対" +#: share/axis/tcl/axis.tcl:554 +msgid "Reopen current file [Control-R]" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Alternating" +#: share/axis/tcl/axis.tcl:564 +msgid "Begin executing current file [R]" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Up Milling" +#: share/axis/tcl/axis.tcl:572 +msgid "Execute next line [T]" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Down Milling" +#: share/axis/tcl/axis.tcl:580 +msgid "Pause [P] / resume [S] execution" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "Ball End" +#: share/axis/tcl/axis.tcl:588 +msgid "Stop program execution [ESC]" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "Flat End" +#: share/axis/tcl/axis.tcl:598 +msgid "Toggle skip lines with '/' [Alt-M /]" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "30 Degree" +#: share/axis/tcl/axis.tcl:605 +msgid "Toggle optional pause [Alt-M 1]" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "45 Degree" +#: share/axis/tcl/axis.tcl:614 src/emc/usr_intf/gmoccapy/gmoccapy.glade:549 +msgid "Zoom in" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "60 Degree" +#: share/axis/tcl/axis.tcl:622 src/emc/usr_intf/gmoccapy/gmoccapy.glade:567 +msgid "Zoom out" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 -msgid "Secondary" +#: share/axis/tcl/axis.tcl:630 +msgid "Top view" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 -msgid "Full" +#: share/axis/tcl/axis.tcl:638 +msgid "Rotated top view" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:654 -msgid "Invert Image" +#: share/axis/tcl/axis.tcl:646 +msgid "Side view" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:655 -msgid "Normalize Image" +#: share/axis/tcl/axis.tcl:654 +msgid "Front view" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:656 -msgid "Extend Image Border" +#: share/axis/tcl/axis.tcl:662 +msgid "Perspective view" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:657 -msgid "Pixel Size (Units)" +#: share/axis/tcl/axis.tcl:670 +msgid "Toggle between Drag and Rotate Mode [D]" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:658 -msgid "Depth (units)" +#: share/axis/tcl/axis.tcl:685 +msgid "Clear live plot [Ctrl-K]" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:659 -msgid "Tolerance (units)" +#: share/axis/tcl/axis.tcl:836 +#, fuzzy +msgid "Manual Control [F3]" +msgstr "手動" + +#: share/axis/tcl/axis.tcl:837 +msgid "MDI [F5]" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:660 -msgid "Stepover (pixels)" +#: share/axis/tcl/axis.tcl:851 share/axis/tcl/axis.tcl:2158 +#: share/axis/tcl/axis.tcl:2328 +#, fuzzy +msgid "Axis:" +msgstr "軸の平行移動" + +#: share/axis/tcl/axis.tcl:1172 src/emc/usr_intf/gscreen/gscreen.glade:2944 +#, fuzzy +msgid "Home Axis" +msgstr "原点" + +#: share/axis/tcl/axis.tcl:1246 +#, fuzzy +msgid "Spindle:" +msgstr "スピンドル消した" + +#: share/axis/tcl/axis.tcl:1293 src/emc/usr_intf/touchy/touchy.glade:946 +#: src/emc/usr_intf/stepconf/main_page.glade:406 +#: src/emc/usr_intf/gscreen/gscreen.glade:4067 +msgid "-" +msgstr "" + +#: share/axis/tcl/axis.tcl:1307 src/emc/usr_intf/stepconf/main_page.glade:403 +#: src/emc/usr_intf/gscreen/gscreen.glade:4056 +msgid "+" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:661 -msgid "Tool Diameter (units)" -msgstr "" +#: share/axis/tcl/axis.tcl:1312 +#, fuzzy +msgid "Brake" +msgstr "ブレーキ点いた" + +#: share/axis/tcl/axis.tcl:1359 +#, fuzzy +msgid "Coolant:" +msgstr "命令:" + +#: share/axis/tcl/axis.tcl:1364 +#, fuzzy +msgid "Mist" +msgstr "雰点いた" + +#: share/axis/tcl/axis.tcl:1369 +#, fuzzy +msgid "Flood" +msgstr "水洗点いた" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:662 -msgid "Tool Type" +#: share/axis/tcl/axis.tcl:1441 +msgid "History:" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:663 -msgid "Feed Rate (units per minute)" -msgstr "" +#: share/axis/tcl/axis.tcl:1464 +#, fuzzy +msgid "MDI Command:" +msgstr "命令:" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:664 -msgid "Plunge Feed Rate (units per minute)" +#: share/axis/tcl/axis.tcl:1473 +msgid "Go" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:666 -msgid "Safety Height (units)" +#: share/axis/tcl/axis.tcl:1479 +msgid "Active G-Codes:" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:667 -msgid "Scan Pattern" -msgstr "" +#: share/axis/tcl/axis.tcl:1557 src/emc/usr_intf/gmoccapy/gmoccapy.glade:771 +#, fuzzy +msgid "Preview" +msgstr "見方" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:668 -msgid "Scan Direction" +#: share/axis/tcl/axis.tcl:1558 +msgid "DRO" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:669 -msgid "Lace Bounding" -msgstr "" +#: share/axis/tcl/axis.tcl:1645 share/axis/tcl/axis.tcl:1658 +#, fuzzy +msgid "Jog Speed:" +msgstr "ジョグ時速" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:670 -msgid "Contact Angle (degrees)" +#: share/axis/tcl/axis.tcl:1670 +msgid "Max Velocity:" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:671 -msgid "Spindle Speed (RPM)" -msgstr "" +#: share/axis/tcl/axis.tcl:1699 +#, fuzzy +msgid "Spindle Override:" +msgstr "フィード手直して" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:672 -msgid "Roughing offset (units, 0=no roughing)" +#: share/axis/tcl/axis.tcl:1701 share/axis/tcl/axis.tcl:1741 +#: share/axis/tcl/axis.tcl:1779 src/emc/usr_intf/pncconf/pncconf.glade:2834 +#: src/emc/usr_intf/pncconf/pncconf.glade:2845 +#: src/emc/usr_intf/pncconf/pncconf.glade:2949 +#: src/emc/usr_intf/pncconf/pncconf.glade:2962 +#: src/emc/usr_intf/pncconf/pncconf.glade:2975 +#: src/emc/usr_intf/pncconf/pncconf.glade:2988 +#: src/emc/usr_intf/pncconf/pncconf.glade:3001 +#: src/emc/usr_intf/pncconf/pncconf.glade:3014 +#: src/emc/usr_intf/pncconf/pncconf.glade:3127 +#: src/emc/usr_intf/pncconf/pncconf.glade:3140 +#: src/emc/usr_intf/pncconf/pncconf.glade:3153 +#: src/emc/usr_intf/pncconf/pncconf.glade:3166 +#: src/emc/usr_intf/pncconf/pncconf.glade:3179 +#: src/emc/usr_intf/pncconf/pncconf.glade:3192 +#: src/emc/usr_intf/pncconf/pncconf.glade:3205 +#: src/emc/usr_intf/pncconf/pncconf.glade:3218 +#: src/emc/usr_intf/pncconf/pncconf.glade:3715 +#: src/emc/usr_intf/pncconf/pncconf.glade:3726 +#: src/emc/usr_intf/pncconf/pncconf.glade:3830 +#: src/emc/usr_intf/pncconf/pncconf.glade:3843 +#: src/emc/usr_intf/pncconf/pncconf.glade:3856 +#: src/emc/usr_intf/pncconf/pncconf.glade:3869 +#: src/emc/usr_intf/pncconf/pncconf.glade:3882 +#: src/emc/usr_intf/pncconf/pncconf.glade:3895 +#: src/emc/usr_intf/pncconf/pncconf.glade:4008 +#: src/emc/usr_intf/pncconf/pncconf.glade:4021 +#: src/emc/usr_intf/pncconf/pncconf.glade:4034 +#: src/emc/usr_intf/pncconf/pncconf.glade:4047 +#: src/emc/usr_intf/pncconf/pncconf.glade:4060 +#: src/emc/usr_intf/pncconf/pncconf.glade:4073 +#: src/emc/usr_intf/pncconf/pncconf.glade:4086 +#: src/emc/usr_intf/pncconf/pncconf.glade:4099 +#: src/emc/usr_intf/pncconf/pncconf.glade:4596 +#: src/emc/usr_intf/pncconf/pncconf.glade:4607 +#: src/emc/usr_intf/pncconf/pncconf.glade:4711 +#: src/emc/usr_intf/pncconf/pncconf.glade:4724 +#: src/emc/usr_intf/pncconf/pncconf.glade:4737 +#: src/emc/usr_intf/pncconf/pncconf.glade:4750 +#: src/emc/usr_intf/pncconf/pncconf.glade:4763 +#: src/emc/usr_intf/pncconf/pncconf.glade:4776 +#: src/emc/usr_intf/pncconf/pncconf.glade:4889 +#: src/emc/usr_intf/pncconf/pncconf.glade:4902 +#: src/emc/usr_intf/pncconf/pncconf.glade:4915 +#: src/emc/usr_intf/pncconf/pncconf.glade:4928 +#: src/emc/usr_intf/pncconf/pncconf.glade:4941 +#: src/emc/usr_intf/pncconf/pncconf.glade:4954 +#: src/emc/usr_intf/pncconf/pncconf.glade:4967 +#: src/emc/usr_intf/pncconf/pncconf.glade:4980 +#: src/emc/usr_intf/pncconf/pncconf.glade:5631 +#: src/emc/usr_intf/pncconf/pncconf.glade:5643 +#: src/emc/usr_intf/pncconf/pncconf.glade:5690 +msgid "%" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:673 -msgid "Roughing depth per pass (units)" -msgstr "" +#: share/axis/tcl/axis.tcl:1777 +#, fuzzy +msgid "Rapid Override:" +msgstr "フィード手直して" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:740 -msgid "image-to-gcode: User pressed cancel" +#: share/axis/tcl/axis.tcl:1819 +msgid "" +"Machinekit/AXIS version $version\n" +"\n" +"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff " +"Epler and Chris Radek.\n" +"\n" +"This is free software, and you are welcome to redistribute it under certain " +"conditions. See the file COPYING, included with Machinekit.\n" +"\n" +"Visit the Machinekit web site: " msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:753 -msgid "Depth images" -msgstr "" +#: share/axis/tcl/axis.tcl:1847 +#, fuzzy +msgid "About AXIS" +msgstr "これについて..." -#: src/emc/usr_intf/axis/scripts/debuglevel.py:22 -msgid "LinuxCNC Debug Level" +#: share/axis/tcl/axis.tcl:1876 +msgid "AXIS Quick Reference" msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:23 -msgid "debuglevel" +#: share/axis/tcl/axis.tcl:2017 +msgid "AXIS with MachineKit $::version on $::machine" msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:36 -msgid "Configuration *" +#: share/axis/tcl/axis.tcl:2019 +msgid "(no file)" msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:37 -msgid "Version Numbers *" -msgstr "" +#: share/axis/tcl/axis.tcl:2091 share/axis/tcl/axis.tcl:2096 +#, fuzzy +msgid "Position:" +msgstr "動き" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:38 -msgid "NML *" -msgstr "" +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/gscreen/gscreen.py:3516 +#, fuzzy +msgid "Machine" +msgstr "マッシン" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:39 -msgid "RCS *" -msgstr "" +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/touchy/touchy.glade:155 +#, fuzzy +msgid "Relative" +msgstr "相対" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:40 -msgid "Task Issue" -msgstr "" +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3329 +#, fuzzy +msgid "Actual" +msgstr "本当" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:41 +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3318 #, fuzzy -msgid "Motion Time" -msgstr "動き" +msgid "Commanded" +msgstr "命令な" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:43 -msgid "Interpreter List" +#: share/axis/tcl/axis.tcl:2154 share/axis/tcl/axis.tcl:2328 +#, fuzzy +msgid "Joint:" +msgstr "関節" + +#: share/axis/tcl/axis.tcl:2463 +msgid "Turn spindle counterclockwise [F10]" msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:47 -#, python-format -msgid "" -"Inifile setting for this debug level:\n" -"[EMC]DEBUG=0x%08x" +#: share/axis/tcl/axis.tcl:2464 +msgid "Turn spindle clockwise [F9]" msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:81 -msgid " * This option can only be enabled in the inifile" +#: share/axis/tcl/axis.tcl:2465 +msgid "Stop spindle [F9/F10]" msgstr "" -#: share/axis/tcl/axis.tcl:49 +#: share/axis/tcl/axis.tcl:2466 #, fuzzy -msgid "_Open..." -msgstr "開く..." +msgid "Turn spindle Faster [F12]" +msgstr "スピンドル前進" -#: share/axis/tcl/axis.tcl:53 +#: share/axis/tcl/axis.tcl:2467 #, fuzzy -msgid "Recent _Files" -msgstr "テキストファイル" +msgid "Turn spindle Slower [F11]" +msgstr "スピンドル前進" -#: share/axis/tcl/axis.tcl:57 -#, fuzzy -msgid "_Edit..." -msgstr "エディット..." +#: share/axis/tcl/axis.tcl:2468 +msgid "Turn spindle brake on [Shift-B] or off [B]" +msgstr "" -#: share/axis/tcl/axis.tcl:60 -msgid "Ctrl-R" +#: share/axis/tcl/axis.tcl:2469 +msgid "Turn flood on or off [F8]" msgstr "" -#: share/axis/tcl/axis.tcl:62 -msgid "_Reload" +#: share/axis/tcl/axis.tcl:2470 +msgid "Turn mist on or off [F7]" msgstr "" -#: share/axis/tcl/axis.tcl:65 -msgid "Ctrl-S" +#: share/axis/tcl/axis.tcl:2471 +msgid "Send active axis home [Home]" msgstr "" -#: share/axis/tcl/axis.tcl:67 -msgid "_Save gcode as..." +#: share/axis/tcl/axis.tcl:2472 +msgid "Set G54 offset for active axis [End]" msgstr "" -#: share/axis/tcl/axis.tcl:71 -msgid "_Properties..." +#: share/axis/tcl/axis.tcl:2473 +msgid "Activate axis [X]" msgstr "" -#: share/axis/tcl/axis.tcl:77 -msgid "Edit _tool table..." +#: share/axis/tcl/axis.tcl:2474 +msgid "Activate axis [Y]" msgstr "" -#: share/axis/tcl/axis.tcl:81 -#, fuzzy -msgid "Reload tool ta_ble" -msgstr "ツール表を読む" +#: share/axis/tcl/axis.tcl:2475 +msgid "Activate axis [Z]" +msgstr "" -#: share/axis/tcl/axis.tcl:87 -msgid "_Ladder Editor..." +#: share/axis/tcl/axis.tcl:2476 +msgid "Activate axis [A]" msgstr "" -#: share/axis/tcl/axis.tcl:99 -msgid "Toggle _Emergency Stop" +#: share/axis/tcl/axis.tcl:2477 +msgid "Activate axis [4]" msgstr "" -#: share/axis/tcl/axis.tcl:104 -msgid "Toggle _Machine Power" +#: share/axis/tcl/axis.tcl:2478 +msgid "Activate axis [5]" msgstr "" -#: share/axis/tcl/axis.tcl:111 -#, fuzzy -msgid "_Run program" -msgstr "プローグラム: " +#: share/axis/tcl/axis.tcl:2479 share/axis/tcl/axis.tcl:2480 +msgid "Jog selected axis" +msgstr "" -#: share/axis/tcl/axis.tcl:115 -msgid "Ru_n from selected line" +#: share/axis/tcl/axis.tcl:2482 +msgid "Temporarily allow jogging outside machine limits [L]" msgstr "" -#: share/axis/tcl/axis.tcl:120 +#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:47 #, fuzzy -msgid "S_tep" -msgstr "徐徐に" +msgid "Spindle CW" +msgstr "スピンドル消した" -#: share/axis/tcl/axis.tcl:125 +#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:48 #, fuzzy -msgid "_Pause" -msgstr "間断" +msgid "Spindle CCW" +msgstr "スピンドル消した" -#: share/axis/tcl/axis.tcl:130 +#: src/emc/usr_intf/touchy/mdi.py:50 #, fuzzy -msgid "Re_sume" +msgid "Set tool number" msgstr "つづく" -#: share/axis/tcl/axis.tcl:140 -msgid "Stop at M_1" +#: src/emc/usr_intf/touchy/mdi.py:51 src/emc/usr_intf/gscreen/mdi.py:50 +#, fuzzy +msgid "Input control" +msgstr "手動" + +#: src/emc/usr_intf/touchy/mdi.py:54 src/emc/usr_intf/touchy/mdi.py:55 +#: src/emc/usr_intf/gscreen/mdi.py:53 src/emc/usr_intf/gscreen/mdi.py:54 +msgid "Straight rapid" msgstr "" -#: share/axis/tcl/axis.tcl:145 -msgid "Skip lines with '_/'" +#: src/emc/usr_intf/touchy/mdi.py:56 src/emc/usr_intf/touchy/mdi.py:57 +#: src/emc/usr_intf/gscreen/mdi.py:55 src/emc/usr_intf/gscreen/mdi.py:56 +msgid "Straight feed" msgstr "" -#: share/axis/tcl/axis.tcl:150 -msgid "Ctrl-M" +#: src/emc/usr_intf/touchy/mdi.py:58 src/emc/usr_intf/touchy/mdi.py:59 +#: src/emc/usr_intf/gscreen/mdi.py:57 src/emc/usr_intf/gscreen/mdi.py:58 +msgid "Arc CW" msgstr "" -#: share/axis/tcl/axis.tcl:152 -msgid "Clear MDI h_istory" +#: src/emc/usr_intf/touchy/mdi.py:60 src/emc/usr_intf/touchy/mdi.py:61 +#: src/emc/usr_intf/gscreen/mdi.py:59 src/emc/usr_intf/gscreen/mdi.py:60 +msgid "Arc CCW" msgstr "" -#: share/axis/tcl/axis.tcl:154 -msgid "Ctrl-H" +#: src/emc/usr_intf/touchy/mdi.py:62 src/emc/usr_intf/touchy/mdi.py:63 +#: src/emc/usr_intf/gscreen/mdi.py:61 src/emc/usr_intf/gscreen/mdi.py:62 +msgid "Dwell" msgstr "" -#: share/axis/tcl/axis.tcl:156 -msgid "Copy from MDI hist_ory" +#: src/emc/usr_intf/touchy/mdi.py:64 src/emc/usr_intf/gscreen/mdi.py:63 +msgid "Setup" msgstr "" -#: share/axis/tcl/axis.tcl:158 -msgid "Ctrl-Shift-H" +#: src/emc/usr_intf/touchy/mdi.py:65 src/emc/usr_intf/gscreen/mdi.py:64 +#, fuzzy +msgid "Spindle synchronized feed" +msgstr "スピンドル逆" + +#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:65 +msgid "Rigid tap" msgstr "" -#: share/axis/tcl/axis.tcl:160 -msgid "Paste to MDI histor_y" +#: src/emc/usr_intf/touchy/mdi.py:67 src/emc/usr_intf/touchy/mdi.py:68 +#: src/emc/usr_intf/touchy/mdi.py:69 src/emc/usr_intf/touchy/mdi.py:70 +#: src/emc/usr_intf/gscreen/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:67 +#: src/emc/usr_intf/gscreen/mdi.py:68 src/emc/usr_intf/gscreen/mdi.py:69 +msgid "Probe" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:71 src/emc/usr_intf/gscreen/mdi.py:70 +msgid "Radius compensation left" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:72 src/emc/usr_intf/gscreen/mdi.py:71 +msgid "Radius compensation right" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:73 src/emc/usr_intf/gscreen/mdi.py:72 +msgid "Radius compensation left, immediate" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:74 src/emc/usr_intf/gscreen/mdi.py:73 +msgid "Radius compensation right, immediate" msgstr "" -#: share/axis/tcl/axis.tcl:166 +#: src/emc/usr_intf/touchy/mdi.py:75 src/emc/usr_intf/gscreen/mdi.py:74 #, fuzzy -msgid "_Calibration" -msgstr "較正..." +msgid "Tool length offset" +msgstr "道具が平行移動" + +#: src/emc/usr_intf/touchy/mdi.py:76 src/emc/usr_intf/gscreen/mdi.py:75 +msgid "Tool length offset immediate" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:77 src/emc/usr_intf/gscreen/mdi.py:76 +msgid "Motion in unoffset coordinates" +msgstr "" -#: share/axis/tcl/axis.tcl:170 +#: src/emc/usr_intf/touchy/mdi.py:78 src/emc/usr_intf/gscreen/mdi.py:77 #, fuzzy -msgid "Show _Hal Configuration" -msgstr "スピンドル消した" +msgid "Continuous mode" +msgstr "連綿" -#: share/axis/tcl/axis.tcl:174 -msgid "H_al Meter" +#: src/emc/usr_intf/touchy/mdi.py:80 src/emc/usr_intf/gscreen/mdi.py:79 +msgid "Drill" msgstr "" -#: share/axis/tcl/axis.tcl:178 -msgid "Ha_l Scope" +#: src/emc/usr_intf/touchy/mdi.py:81 src/emc/usr_intf/gscreen/mdi.py:80 +msgid "Drill with dwell" msgstr "" -#: share/axis/tcl/axis.tcl:182 -msgid "Sho_w LinuxCNC Status" +#: src/emc/usr_intf/touchy/mdi.py:82 src/emc/usr_intf/gscreen/mdi.py:81 +msgid "Peck drill" msgstr "" -#: share/axis/tcl/axis.tcl:186 -msgid "Set _Debug Level" +#: src/emc/usr_intf/touchy/mdi.py:83 src/emc/usr_intf/gscreen/mdi.py:82 +msgid "Chip-break drill" msgstr "" -#: share/axis/tcl/axis.tcl:192 -msgid "Homin_g" +#: src/emc/usr_intf/touchy/mdi.py:84 src/emc/usr_intf/gscreen/mdi.py:83 +msgid "Bore" msgstr "" -#: share/axis/tcl/axis.tcl:196 -msgid "_Unhoming" +#: src/emc/usr_intf/touchy/mdi.py:85 src/emc/usr_intf/gscreen/mdi.py:84 +msgid "Bore with dwell" msgstr "" -#: share/axis/tcl/axis.tcl:200 -msgid "_Zero coordinate system" +#: src/emc/usr_intf/touchy/mdi.py:86 src/emc/usr_intf/gscreen/mdi.py:85 +msgid "Offset all coordinate systems" msgstr "" -#: share/axis/tcl/axis.tcl:204 -msgid "P1 G5_4" +#: src/emc/usr_intf/touchy/mdi.py:87 src/emc/usr_intf/gscreen/mdi.py:86 +msgid "CSS Mode" msgstr "" -#: share/axis/tcl/axis.tcl:208 -msgid "P2 G5_5" +#: src/emc/usr_intf/touchy/emc_interface.py:410 +msgid "CCW" msgstr "" -#: share/axis/tcl/axis.tcl:212 -msgid "P3 G5_6" +#: src/emc/usr_intf/touchy/emc_interface.py:410 +#, fuzzy +msgid "Stopped" +msgstr "徐徐に" + +#: src/emc/usr_intf/touchy/emc_interface.py:410 +msgid "CW" msgstr "" -#: share/axis/tcl/axis.tcl:216 -msgid "P4 G5_7" +#: src/emc/usr_intf/touchy/touchy.glade:7 +msgid "LinuxCNC/Touchy" msgstr "" -#: share/axis/tcl/axis.tcl:220 -msgid "P5 G5_8" +#. # Touchy is Copyright (c) 2009 Chris Radek # # Touchy 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 2 of the License, or # (at your option) any later version. # # Touchy 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. +#: src/emc/usr_intf/touchy/touchy.glade:11 +msgid "window1" msgstr "" -#: share/axis/tcl/axis.tcl:224 -msgid "P6 G5_9" +#: src/emc/usr_intf/touchy/touchy.glade:31 +msgid "xa" msgstr "" -#: share/axis/tcl/axis.tcl:228 -msgid "P7 G59._1" +#: src/emc/usr_intf/touchy/touchy.glade:44 +msgid "xd" msgstr "" -#: share/axis/tcl/axis.tcl:232 -msgid "P8 G59._2" +#: src/emc/usr_intf/touchy/touchy.glade:57 +msgid "yr" msgstr "" -#: share/axis/tcl/axis.tcl:236 -msgid "P9 G59._3" +#: src/emc/usr_intf/touchy/touchy.glade:68 +msgid "ya" msgstr "" -#: share/axis/tcl/axis.tcl:240 -msgid "_G92" +#: src/emc/usr_intf/touchy/touchy.glade:81 +msgid "yd" msgstr "" -#: share/axis/tcl/axis.tcl:248 -msgid "Tool touch off to wor_kpiece" +#: src/emc/usr_intf/touchy/touchy.glade:94 +msgid "zr" msgstr "" -#: share/axis/tcl/axis.tcl:254 -msgid "Tool touch off to _fixture" +#: src/emc/usr_intf/touchy/touchy.glade:105 +msgid "za" msgstr "" -#: share/axis/tcl/axis.tcl:262 -msgid "_Top view" +#: src/emc/usr_intf/touchy/touchy.glade:118 +msgid "zd" msgstr "" -#: share/axis/tcl/axis.tcl:269 -msgid "_Rotated Top view" +#: src/emc/usr_intf/touchy/touchy.glade:131 +#: src/emc/usr_intf/gscreen/gscreen.glade:85 +#: src/emc/usr_intf/gscreen/gscreen.glade:213 +#: src/emc/usr_intf/gscreen/gscreen.glade:343 +#: src/emc/usr_intf/gscreen/gscreen.glade:471 +#: src/emc/usr_intf/gscreen/gscreen.glade:599 +#: src/emc/usr_intf/gscreen/gscreen.glade:727 +#: src/emc/usr_intf/gscreen/gscreen.glade:855 +#: src/emc/usr_intf/gscreen/gscreen.glade:983 +#: src/emc/usr_intf/gscreen/gscreen.glade:1111 +msgid "DTG" msgstr "" -#: share/axis/tcl/axis.tcl:276 -msgid "_Side view" +#: src/emc/usr_intf/touchy/touchy.glade:143 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Absolute" msgstr "" -#: share/axis/tcl/axis.tcl:283 -msgid "_Front view" +#: src/emc/usr_intf/touchy/touchy.glade:165 +msgid "xr" msgstr "" -#: share/axis/tcl/axis.tcl:290 -msgid "_Perspective view" +#: src/emc/usr_intf/touchy/touchy.glade:176 +msgid "ar" msgstr "" -#: share/axis/tcl/axis.tcl:299 -msgid "Display _Inches" +#: src/emc/usr_intf/touchy/touchy.glade:188 +msgid "br" msgstr "" -#: share/axis/tcl/axis.tcl:306 -msgid "Display _MM" +#: src/emc/usr_intf/touchy/touchy.glade:200 +msgid "cr" msgstr "" -#: share/axis/tcl/axis.tcl:313 -#, fuzzy -msgid "S_how program" -msgstr "プローグラム: " - -#: share/axis/tcl/axis.tcl:318 -msgid "Show program r_apids" +#: src/emc/usr_intf/touchy/touchy.glade:212 +msgid "ur" msgstr "" -#: share/axis/tcl/axis.tcl:323 -#, fuzzy -msgid "Alpha-_blend program" -msgstr "プローグラム: " - -#: share/axis/tcl/axis.tcl:328 -msgid "Sho_w live plot" +#: src/emc/usr_intf/touchy/touchy.glade:224 +msgid "vr" msgstr "" -#: share/axis/tcl/axis.tcl:333 -msgid "Show too_l" +#: src/emc/usr_intf/touchy/touchy.glade:236 +msgid "wr" msgstr "" -#: share/axis/tcl/axis.tcl:338 -msgid "Show e_xtents" +#: src/emc/usr_intf/touchy/touchy.glade:248 +msgid "aa" msgstr "" -#: share/axis/tcl/axis.tcl:343 -#, fuzzy -msgid "Show o_ffsets" -msgstr "工作物平行移動:" - -#: share/axis/tcl/axis.tcl:348 -msgid "Sh_ow machine limits" +#: src/emc/usr_intf/touchy/touchy.glade:262 +msgid "ba" msgstr "" -#: share/axis/tcl/axis.tcl:353 -msgid "Show v_elocity" +#: src/emc/usr_intf/touchy/touchy.glade:276 +msgid "ca" msgstr "" -#: share/axis/tcl/axis.tcl:358 -msgid "Show _distance to go" +#: src/emc/usr_intf/touchy/touchy.glade:290 +msgid "ua" msgstr "" -#: share/axis/tcl/axis.tcl:363 -msgid "Large coordinate fo_nt" +#: src/emc/usr_intf/touchy/touchy.glade:304 +msgid "va" msgstr "" -#: share/axis/tcl/axis.tcl:366 -msgid "Ctrl-K" +#: src/emc/usr_intf/touchy/touchy.glade:318 +msgid "wa" msgstr "" -#: share/axis/tcl/axis.tcl:368 -msgid "_Clear live plot" +#: src/emc/usr_intf/touchy/touchy.glade:332 +msgid "ad" msgstr "" -#: share/axis/tcl/axis.tcl:377 -msgid "Show commanded position" +#: src/emc/usr_intf/touchy/touchy.glade:346 +msgid "bd" msgstr "" -#: share/axis/tcl/axis.tcl:384 -msgid "Show actual position" +#: src/emc/usr_intf/touchy/touchy.glade:360 +msgid "cd" msgstr "" -#: share/axis/tcl/axis.tcl:393 -#, fuzzy -msgid "Show machine position" -msgstr "出来るように" - -#: share/axis/tcl/axis.tcl:400 -msgid "Show relative position" +#: src/emc/usr_intf/touchy/touchy.glade:374 +msgid "ud" msgstr "" -#: share/axis/tcl/axis.tcl:409 -msgid "Joint mode" +#: src/emc/usr_intf/touchy/touchy.glade:388 +msgid "vd" msgstr "" -#: share/axis/tcl/axis.tcl:416 -msgid "World mode" +#: src/emc/usr_intf/touchy/touchy.glade:402 +msgid "wd" msgstr "" -#: share/axis/tcl/axis.tcl:425 +#: src/emc/usr_intf/touchy/touchy.glade:448 #, fuzzy -msgid "_About AXIS" -msgstr "これについて..." - -#: share/axis/tcl/axis.tcl:429 -msgid "Quick _Reference" -msgstr "" +msgid "Estop Reset" +msgstr "終止符点いた" -#: share/axis/tcl/axis.tcl:439 +#: src/emc/usr_intf/touchy/touchy.glade:459 +#: src/emc/usr_intf/stepconf/pport1.glade:21 +#: src/emc/usr_intf/stepconf/pport2.glade:1409 +#: src/emc/usr_intf/gscreen/gscreen.glade:2442 #, fuzzy -msgid "_Machine" -msgstr "マッシン" +msgid "Estop" +msgstr "終止符点いた" -#: share/axis/tcl/axis.tcl:443 +#: src/emc/usr_intf/touchy/touchy.glade:475 #, fuzzy -msgid "_View" -msgstr "見方" - -#: share/axis/tcl/axis.tcl:456 -msgid "Toggle Emergency Stop [F1]" -msgstr "" - -#: share/axis/tcl/axis.tcl:465 -msgid "Toggle Machine power [F2]" -msgstr "" - -#: share/axis/tcl/axis.tcl:476 -msgid "Open G-Code file [O]" -msgstr "" +msgid "Machine On" +msgstr "出来るように" -#: share/axis/tcl/axis.tcl:484 -msgid "Reopen current file [Control-R]" -msgstr "" +#: src/emc/usr_intf/touchy/touchy.glade:490 +#, fuzzy +msgid "Machine Off" +msgstr "出来ないように" -#: share/axis/tcl/axis.tcl:494 -msgid "Begin executing current file [R]" +#: src/emc/usr_intf/touchy/touchy.glade:531 +msgid "Power" msgstr "" -#: share/axis/tcl/axis.tcl:502 -msgid "Execute next line [T]" -msgstr "" +#: src/emc/usr_intf/touchy/touchy.glade:562 +#, fuzzy +msgid "Unhome All" +msgstr "原点" -#: share/axis/tcl/axis.tcl:510 -msgid "Pause [P] / resume [S] execution" +#: src/emc/usr_intf/touchy/touchy.glade:588 +msgid "Home Selected" msgstr "" -#: share/axis/tcl/axis.tcl:518 -msgid "Stop program execution [ESC]" +#: src/emc/usr_intf/touchy/touchy.glade:603 +msgid "Unhome Selected" msgstr "" -#: share/axis/tcl/axis.tcl:528 -msgid "Toggle skip lines with '/' [Alt-M /]" +#: src/emc/usr_intf/touchy/touchy.glade:625 +msgid "Homing" msgstr "" -#: share/axis/tcl/axis.tcl:535 -msgid "Toggle optional pause [Alt-M 1]" +#: src/emc/usr_intf/touchy/touchy.glade:644 +msgid "Startup" msgstr "" -#: share/axis/tcl/axis.tcl:544 -msgid "Zoom in" +#: src/emc/usr_intf/touchy/touchy.glade:727 +msgid "G" msgstr "" -#: share/axis/tcl/axis.tcl:552 -msgid "Zoom out" +#: src/emc/usr_intf/touchy/touchy.glade:929 +msgid "." msgstr "" -#: share/axis/tcl/axis.tcl:560 -msgid "Top view" +#: src/emc/usr_intf/touchy/touchy.glade:963 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "0" msgstr "" -#: share/axis/tcl/axis.tcl:568 -msgid "Rotated top view" +#: src/emc/usr_intf/touchy/touchy.glade:980 +msgid "3" msgstr "" -#: share/axis/tcl/axis.tcl:576 -msgid "Side view" +#: src/emc/usr_intf/touchy/touchy.glade:997 +msgid "2" msgstr "" -#: share/axis/tcl/axis.tcl:584 -msgid "Front view" +#: src/emc/usr_intf/touchy/touchy.glade:1014 +msgid "1" msgstr "" -#: share/axis/tcl/axis.tcl:592 -msgid "Perspective view" +#: src/emc/usr_intf/touchy/touchy.glade:1031 +msgid "6" msgstr "" -#: share/axis/tcl/axis.tcl:600 -msgid "Toggle between Drag and Rotate Mode [D]" +#: src/emc/usr_intf/touchy/touchy.glade:1048 +msgid "5" msgstr "" -#: share/axis/tcl/axis.tcl:615 -msgid "Clear live plot [Ctrl-K]" +#: src/emc/usr_intf/touchy/touchy.glade:1065 +msgid "4" msgstr "" -#: share/axis/tcl/axis.tcl:766 -#, fuzzy -msgid "Manual Control [F3]" -msgstr "手動" - -#: share/axis/tcl/axis.tcl:767 -msgid "MDI [F5]" +#: src/emc/usr_intf/touchy/touchy.glade:1082 +msgid "9" msgstr "" -#: share/axis/tcl/axis.tcl:781 share/axis/tcl/axis.tcl:2036 -#: share/axis/tcl/axis.tcl:2203 -#, fuzzy -msgid "Axis:" -msgstr "軸の平行移動" - -#: share/axis/tcl/axis.tcl:1102 -#, fuzzy -msgid "Home Axis" -msgstr "原点" - -#: share/axis/tcl/axis.tcl:1176 -#, fuzzy -msgid "Spindle:" -msgstr "スピンドル消した" - -#: share/axis/tcl/axis.tcl:1223 src/emc/usr_intf/touchy/touchy.glade:946 -msgid "-" +#: src/emc/usr_intf/touchy/touchy.glade:1097 +msgid "8" msgstr "" -#: share/axis/tcl/axis.tcl:1237 -msgid "+" +#: src/emc/usr_intf/touchy/touchy.glade:1112 +msgid "7" msgstr "" -#: share/axis/tcl/axis.tcl:1242 +#: src/emc/usr_intf/touchy/touchy.glade:1297 #, fuzzy -msgid "Brake" -msgstr "ブレーキ点いた" +msgid "Flood On" +msgstr "水洗点いた" -#: share/axis/tcl/axis.tcl:1289 +#: src/emc/usr_intf/touchy/touchy.glade:1308 #, fuzzy -msgid "Coolant:" -msgstr "命令:" +msgid "Flood Off" +msgstr "水洗消した" -#: share/axis/tcl/axis.tcl:1294 +#: src/emc/usr_intf/touchy/touchy.glade:1324 #, fuzzy -msgid "Mist" +msgid "Mist On" msgstr "雰点いた" -#: share/axis/tcl/axis.tcl:1299 +#: src/emc/usr_intf/touchy/touchy.glade:1339 #, fuzzy -msgid "Flood" -msgstr "水洗点いた" - -#: share/axis/tcl/axis.tcl:1371 -msgid "History:" -msgstr "" +msgid "Mist Off" +msgstr "雰消した" -#: share/axis/tcl/axis.tcl:1394 +#: src/emc/usr_intf/touchy/touchy.glade:1362 #, fuzzy -msgid "MDI Command:" +msgid "Coolant" msgstr "命令:" -#: share/axis/tcl/axis.tcl:1403 -msgid "Go" -msgstr "" - -#: share/axis/tcl/axis.tcl:1409 -msgid "Active G-Codes:" -msgstr "" +#: src/emc/usr_intf/touchy/touchy.glade:1448 +#, fuzzy +msgid "Spindle Off" +msgstr "スピンドル消した" -#: share/axis/tcl/axis.tcl:1487 +#: src/emc/usr_intf/touchy/touchy.glade:1501 +#: src/emc/usr_intf/touchy/touchy.glade:2578 #, fuzzy -msgid "Preview" -msgstr "見方" +msgid "Spindle speed:" +msgstr "フィード手直して" -#: share/axis/tcl/axis.tcl:1488 -msgid "DRO" +#: src/emc/usr_intf/touchy/touchy.glade:1513 +#: src/emc/usr_intf/touchy/touchy.glade:2707 +msgid "label26" msgstr "" -#: share/axis/tcl/axis.tcl:1575 share/axis/tcl/axis.tcl:1588 +#: src/emc/usr_intf/touchy/touchy.glade:1539 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4226 #, fuzzy -msgid "Jog Speed:" -msgstr "ジョグ時速" +msgid "Spindle" +msgstr "スピンドル消した" -#: share/axis/tcl/axis.tcl:1600 -msgid "Max Velocity:" +#: src/emc/usr_intf/touchy/touchy.glade:1597 +msgid "file.ngc" msgstr "" -#: share/axis/tcl/axis.tcl:1629 -#, fuzzy -msgid "Spindle Override:" -msgstr "フィード手直して" - -#: share/axis/tcl/axis.tcl:1631 share/axis/tcl/axis.tcl:1671 -#: src/emc/usr_intf/pncconf/pncconf.glade:3141 -#: src/emc/usr_intf/pncconf/pncconf.glade:3154 -#: src/emc/usr_intf/pncconf/pncconf.glade:3167 -#: src/emc/usr_intf/pncconf/pncconf.glade:3180 -#: src/emc/usr_intf/pncconf/pncconf.glade:3193 -#: src/emc/usr_intf/pncconf/pncconf.glade:3206 -#: src/emc/usr_intf/pncconf/pncconf.glade:3219 -#: src/emc/usr_intf/pncconf/pncconf.glade:3232 -#: src/emc/usr_intf/pncconf/pncconf.glade:3345 -#: src/emc/usr_intf/pncconf/pncconf.glade:3358 -#: src/emc/usr_intf/pncconf/pncconf.glade:3371 -#: src/emc/usr_intf/pncconf/pncconf.glade:3384 -#: src/emc/usr_intf/pncconf/pncconf.glade:3397 -#: src/emc/usr_intf/pncconf/pncconf.glade:3410 -#: src/emc/usr_intf/pncconf/pncconf.glade:3516 -#: src/emc/usr_intf/pncconf/pncconf.glade:3527 -#: src/emc/usr_intf/pncconf/pncconf.glade:4022 -#: src/emc/usr_intf/pncconf/pncconf.glade:4035 -#: src/emc/usr_intf/pncconf/pncconf.glade:4048 -#: src/emc/usr_intf/pncconf/pncconf.glade:4061 -#: src/emc/usr_intf/pncconf/pncconf.glade:4074 -#: src/emc/usr_intf/pncconf/pncconf.glade:4087 -#: src/emc/usr_intf/pncconf/pncconf.glade:4100 -#: src/emc/usr_intf/pncconf/pncconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:4226 -#: src/emc/usr_intf/pncconf/pncconf.glade:4239 -#: src/emc/usr_intf/pncconf/pncconf.glade:4252 -#: src/emc/usr_intf/pncconf/pncconf.glade:4265 -#: src/emc/usr_intf/pncconf/pncconf.glade:4278 -#: src/emc/usr_intf/pncconf/pncconf.glade:4291 -#: src/emc/usr_intf/pncconf/pncconf.glade:4397 -#: src/emc/usr_intf/pncconf/pncconf.glade:4408 -#: src/emc/usr_intf/pncconf/pncconf.glade:4903 -#: src/emc/usr_intf/pncconf/pncconf.glade:4916 -#: src/emc/usr_intf/pncconf/pncconf.glade:4929 -#: src/emc/usr_intf/pncconf/pncconf.glade:4942 -#: src/emc/usr_intf/pncconf/pncconf.glade:4955 -#: src/emc/usr_intf/pncconf/pncconf.glade:4968 -#: src/emc/usr_intf/pncconf/pncconf.glade:4981 -#: src/emc/usr_intf/pncconf/pncconf.glade:4994 -#: src/emc/usr_intf/pncconf/pncconf.glade:5107 -#: src/emc/usr_intf/pncconf/pncconf.glade:5120 -#: src/emc/usr_intf/pncconf/pncconf.glade:5133 -#: src/emc/usr_intf/pncconf/pncconf.glade:5146 -#: src/emc/usr_intf/pncconf/pncconf.glade:5159 -#: src/emc/usr_intf/pncconf/pncconf.glade:5172 -#: src/emc/usr_intf/pncconf/pncconf.glade:5278 -#: src/emc/usr_intf/pncconf/pncconf.glade:5289 -#: src/emc/usr_intf/pncconf/pncconf.glade:5582 -#: src/emc/usr_intf/pncconf/pncconf.glade:5631 -#: src/emc/usr_intf/pncconf/pncconf.glade:5641 -msgid "%" +#: src/emc/usr_intf/touchy/touchy.glade:1812 +#: src/emc/usr_intf/touchy/touchy.glade:2017 +#: src/emc/usr_intf/touchy/touchy.glade:2037 +#: src/emc/usr_intf/touchy/touchy.glade:2057 +#: src/emc/usr_intf/touchy/touchy.glade:2077 +#: src/emc/usr_intf/touchy/touchy.glade:2097 +#: src/emc/usr_intf/touchy/touchy.glade:2117 +#: src/emc/usr_intf/touchy/touchy.glade:2137 +#: src/emc/usr_intf/touchy/touchy.glade:2157 +#: src/emc/usr_intf/touchy/touchy.glade:2177 +msgid "M2" msgstr "" -#: share/axis/tcl/axis.tcl:1711 -msgid "" -"LinuxCNC/AXIS version $version\n" -"\n" -"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff Epler and Chris " -"Radek.\n" -"\n" -"This is free software, and you are welcome to redistribute it under certain " -"conditions. See the file COPYING, included with LinuxCNC.\n" -"\n" -"Visit the LinuxCNC web site: " +#: src/emc/usr_intf/touchy/touchy.glade:2244 +#: src/emc/usr_intf/touchy/touchy.glade:2374 +msgid "Page" msgstr "" -#: share/axis/tcl/axis.tcl:1739 -#, fuzzy -msgid "About AXIS" -msgstr "これについて..." +#: src/emc/usr_intf/touchy/touchy.glade:2308 +msgid "Start Point" +msgstr "" -#: share/axis/tcl/axis.tcl:1768 -msgid "AXIS Quick Reference" +#: src/emc/usr_intf/touchy/touchy.glade:2452 +msgid "Loaded File" msgstr "" -#: share/axis/tcl/axis.tcl:1903 -msgid "AXIS $::version on $::machine" +#: src/emc/usr_intf/touchy/touchy.glade:2488 +msgid "Loaded file:" msgstr "" -#: share/axis/tcl/axis.tcl:1905 -msgid "(no file)" +#: src/emc/usr_intf/touchy/touchy.glade:2499 +msgid "Interpreted line:" msgstr "" -#: share/axis/tcl/axis.tcl:1976 share/axis/tcl/axis.tcl:1981 -#, fuzzy -msgid "Position:" -msgstr "動き" +#: src/emc/usr_intf/touchy/touchy.glade:2513 +msgid "Distance:" +msgstr "" -#: share/axis/tcl/axis.tcl:1978 -#, fuzzy -msgid "Machine" -msgstr "マッシン" +#: src/emc/usr_intf/touchy/touchy.glade:2526 +#: src/emc/usr_intf/stepconf/main_page.glade:23 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Velocity:" +msgstr "" -#: share/axis/tcl/axis.tcl:1978 src/emc/usr_intf/touchy/touchy.glade:155 -#, fuzzy -msgid "Relative" -msgstr "相対" +#: src/emc/usr_intf/touchy/touchy.glade:2539 +msgid "Delay:" +msgstr "" -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3329 -#, fuzzy -msgid "Actual" -msgstr "本当" +#: src/emc/usr_intf/touchy/touchy.glade:2552 +msgid "On limit switch:" +msgstr "" -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3318 +#: src/emc/usr_intf/touchy/touchy.glade:2565 #, fuzzy -msgid "Commanded" -msgstr "命令な" +msgid "Spindle direction:" +msgstr "スピンドル消した" -#: share/axis/tcl/axis.tcl:2032 share/axis/tcl/axis.tcl:2203 -#, fuzzy -msgid "Joint:" -msgstr "関節" +#: src/emc/usr_intf/touchy/touchy.glade:2591 +msgid "Loaded tool:" +msgstr "" -#: share/axis/tcl/axis.tcl:2338 -msgid "Turn spindle counterclockwise [F10]" +#: src/emc/usr_intf/touchy/touchy.glade:2604 +#: src/emc/usr_intf/touchy/touchy.glade:2955 +msgid "label19" msgstr "" -#: share/axis/tcl/axis.tcl:2339 -msgid "Turn spindle clockwise [F9]" +#: src/emc/usr_intf/touchy/touchy.glade:2617 +msgid "label20" msgstr "" -#: share/axis/tcl/axis.tcl:2340 -msgid "Stop spindle [F9/F10]" +#: src/emc/usr_intf/touchy/touchy.glade:2632 +#: src/emc/usr_intf/touchy/touchy.glade:2779 +#: src/emc/usr_intf/touchy/touchy.glade:2808 +#: src/emc/usr_intf/touchy/touchy.glade:2912 +#: src/emc/usr_intf/touchy/touchy.glade:2927 +msgid "label21" msgstr "" -#: share/axis/tcl/axis.tcl:2341 -#, fuzzy -msgid "Turn spindle Faster [F12]" -msgstr "スピンドル前進" +#: src/emc/usr_intf/touchy/touchy.glade:2647 +msgid "label22" +msgstr "" -#: share/axis/tcl/axis.tcl:2342 -#, fuzzy -msgid "Turn spindle Slower [F11]" -msgstr "スピンドル前進" +#: src/emc/usr_intf/touchy/touchy.glade:2662 +msgid "label23" +msgstr "" -#: share/axis/tcl/axis.tcl:2343 -msgid "Turn spindle brake on [Shift-B] or off [B]" +#: src/emc/usr_intf/touchy/touchy.glade:2677 +msgid "label24" msgstr "" -#: share/axis/tcl/axis.tcl:2344 -msgid "Turn flood on or off [F8]" +#: src/emc/usr_intf/touchy/touchy.glade:2692 +msgid "label25" msgstr "" -#: share/axis/tcl/axis.tcl:2345 -msgid "Turn mist on or off [F7]" +#: src/emc/usr_intf/touchy/touchy.glade:2722 +msgid "label27" msgstr "" -#: share/axis/tcl/axis.tcl:2346 -msgid "Send active axis home [Home]" +#: src/emc/usr_intf/touchy/touchy.glade:2737 +msgid "Prepped tool:" msgstr "" -#: share/axis/tcl/axis.tcl:2347 -msgid "Set G54 offset for active axis [End]" +#: src/emc/usr_intf/touchy/touchy.glade:2750 +msgid "label28" msgstr "" -#: share/axis/tcl/axis.tcl:2348 -msgid "Activate axis [X]" +#: src/emc/usr_intf/touchy/touchy.glade:2765 +msgid "Running line:" msgstr "" -#: share/axis/tcl/axis.tcl:2349 -msgid "Activate axis [Y]" +#: src/emc/usr_intf/touchy/touchy.glade:2794 +msgid "XY Rotation:" msgstr "" -#: share/axis/tcl/axis.tcl:2350 -msgid "Activate axis [Z]" +#: src/emc/usr_intf/touchy/touchy.glade:2823 +#, fuzzy +msgid "Tool length:" +msgstr "ファイル" + +#: src/emc/usr_intf/touchy/touchy.glade:2836 +msgid "label52" msgstr "" -#: share/axis/tcl/axis.tcl:2351 -msgid "Activate axis [A]" +#: src/emc/usr_intf/touchy/touchy.glade:2851 +msgid "" +"G1 G2 G3\n" +"M1 M2 M3\n" +"F1 S1" msgstr "" -#: share/axis/tcl/axis.tcl:2352 -msgid "Activate axis [4]" +#: src/emc/usr_intf/touchy/touchy.glade:2870 +msgid "Active codes:" msgstr "" -#: share/axis/tcl/axis.tcl:2353 -msgid "Activate axis [5]" +#: src/emc/usr_intf/touchy/touchy.glade:2883 +#, fuzzy +msgid "G5x Offset:" +msgstr "平行移動:" + +#: src/emc/usr_intf/touchy/touchy.glade:2898 +#, fuzzy +msgid "G92 Offset:" +msgstr "平行移動:" + +#: src/emc/usr_intf/touchy/touchy.glade:2942 +msgid "Loaded file lines:" msgstr "" -#: share/axis/tcl/axis.tcl:2354 share/axis/tcl/axis.tcl:2355 -msgid "Jog selected axis" +#: src/emc/usr_intf/touchy/touchy.glade:2971 +msgid "Pockets:" msgstr "" -#: share/axis/tcl/axis.tcl:2357 -msgid "Temporarily allow jogging outside machine limits [L]" +#: src/emc/usr_intf/touchy/touchy.glade:2984 +msgid "" +"1\n" +"2\n" +"3" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 +#: src/emc/usr_intf/touchy/touchy.glade:3009 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6414 #, fuzzy -msgid "Spindle CW" -msgstr "スピンドル消した" +msgid "Status" +msgstr "状態:" + +#: src/emc/usr_intf/touchy/touchy.glade:3038 +msgid "Control Font:" +msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 +#: src/emc/usr_intf/touchy/touchy.glade:3050 #, fuzzy -msgid "Spindle CCW" -msgstr "スピンドル消した" +msgid "DRO Font:" +msgstr "フォント..." -#: src/emc/usr_intf/touchy/mdi.py:50 +#: src/emc/usr_intf/touchy/touchy.glade:3064 #, fuzzy -msgid "Input control" -msgstr "手動" +msgid "Error Font:" +msgstr "越度: " -#: src/emc/usr_intf/touchy/mdi.py:53 src/emc/usr_intf/touchy/mdi.py:54 -msgid "Straight rapid" +#: src/emc/usr_intf/touchy/touchy.glade:3081 +msgid "ControlFont" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:55 src/emc/usr_intf/touchy/mdi.py:56 -msgid "Straight feed" -msgstr "" +#: src/emc/usr_intf/touchy/touchy.glade:3100 +#, fuzzy +msgid "DRO Font" +msgstr "フォント..." -#: src/emc/usr_intf/touchy/mdi.py:57 src/emc/usr_intf/touchy/mdi.py:58 -msgid "Arc CW" -msgstr "" +#: src/emc/usr_intf/touchy/touchy.glade:3121 +#, fuzzy +msgid "Error Font" +msgstr "越度: " -#: src/emc/usr_intf/touchy/mdi.py:59 src/emc/usr_intf/touchy/mdi.py:60 -msgid "Arc CCW" +#: src/emc/usr_intf/touchy/touchy.glade:3139 +msgid "Listing Font:" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:61 src/emc/usr_intf/touchy/mdi.py:62 -msgid "Dwell" -msgstr "" +#: src/emc/usr_intf/touchy/touchy.glade:3156 +#, fuzzy +msgid "Listing Font" +msgstr "フォントを撰ぶ" -#: src/emc/usr_intf/touchy/mdi.py:63 -msgid "Setup" +#: src/emc/usr_intf/touchy/touchy.glade:3176 +msgid "Hide pointer" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:64 +#: src/emc/usr_intf/touchy/touchy.glade:3187 #, fuzzy -msgid "Spindle synchronized feed" -msgstr "スピンドル逆" +msgid "Show pointer" +msgstr "プローグラム: " -#: src/emc/usr_intf/touchy/mdi.py:65 -msgid "Rigid tap" +#: src/emc/usr_intf/touchy/touchy.glade:3214 +msgid "Theme:" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/touchy/mdi.py:67 -#: src/emc/usr_intf/touchy/mdi.py:68 src/emc/usr_intf/touchy/mdi.py:69 -msgid "Probe" +#: src/emc/usr_intf/touchy/touchy.glade:3228 +msgid "default\n" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:70 -msgid "Radius compensation left" +#: src/emc/usr_intf/touchy/touchy.glade:3252 +msgid "Display Options" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:71 -msgid "Radius compensation right" +#: src/emc/usr_intf/touchy/touchy.glade:3286 +#: src/emc/usr_intf/stepconf/base.glade:867 +#: src/emc/usr_intf/gscreen/gscreen.glade:3664 +msgid "Inch" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:72 -msgid "Radius compensation left, immediate" +#: src/emc/usr_intf/touchy/touchy.glade:3349 +msgid "Position Readout" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:73 -msgid "Radius compensation right, immediate" +#: src/emc/usr_intf/touchy/touchy.glade:3379 +msgid "Workpiece" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:74 -#, fuzzy -msgid "Tool length offset" -msgstr "道具が平行移動" +#: src/emc/usr_intf/touchy/touchy.glade:3390 +msgid "Fixture" +msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:75 -msgid "Tool length offset immediate" +#: src/emc/usr_intf/touchy/touchy.glade:3410 +msgid "Tool Setting" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:76 -msgid "Motion in unoffset coordinates" +#: src/emc/usr_intf/touchy/touchy.glade:3441 +msgid "Delete / lines" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:3456 +msgid "Keep / lines" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:77 +#: src/emc/usr_intf/touchy/touchy.glade:3473 #, fuzzy -msgid "Continuous mode" -msgstr "連綿" +msgid "Pause on M1" +msgstr "間断" -#: src/emc/usr_intf/touchy/mdi.py:79 -msgid "Drill" +#: src/emc/usr_intf/touchy/touchy.glade:3484 +msgid "Ignore M1" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:80 -msgid "Drill with dwell" +#: src/emc/usr_intf/touchy/touchy.glade:3504 +msgid "Program Options" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:81 -msgid "Peck drill" +#: src/emc/usr_intf/touchy/touchy.glade:3531 +#: src/emc/usr_intf/gscreen/gscreen.glade:2200 +msgid "Preferences" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:82 -msgid "Chip-break drill" +#: src/emc/usr_intf/touchy/touchy.glade:3567 +#: src/emc/usr_intf/gscreen/gscreen.glade:1425 +msgid "FO: 100%" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:83 -msgid "Bore" +#: src/emc/usr_intf/touchy/touchy.glade:3582 +#: src/emc/usr_intf/gscreen/gscreen.glade:1437 +msgid "SO: 100%" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:84 -msgid "Bore with dwell" +#: src/emc/usr_intf/touchy/touchy.glade:3596 +msgid "MV: 100" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:85 -msgid "Offset all coordinate systems" +#: src/emc/usr_intf/touchy/touchy.glade:3610 +msgid "Jogging" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:86 -msgid "CSS Mode" +#: src/emc/usr_intf/touchy/touchy.glade:3624 +msgid "Start Point" msgstr "" -#: src/emc/usr_intf/touchy/emc_interface.py:410 -msgid "CCW" +#: src/emc/usr_intf/touchy/touchy.glade:3651 +msgid ".01" msgstr "" -#: src/emc/usr_intf/touchy/emc_interface.py:410 -#, fuzzy -msgid "Stopped" -msgstr "徐徐に" - -#: src/emc/usr_intf/touchy/emc_interface.py:410 -msgid "CW" +#: src/emc/usr_intf/touchy/touchy.glade:3664 +msgid ".001" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:7 -msgid "LinuxCNC/Touchy" +#: src/emc/usr_intf/touchy/touchy.glade:3680 +msgid ".0001" msgstr "" -#. # Touchy is Copyright (c) 2009 Chris Radek # # Touchy 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 2 of the License, or # (at your option) any later version. # # Touchy 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. -#: src/emc/usr_intf/touchy/touchy.glade:11 -msgid "window1" +#: src/emc/usr_intf/touchy/touchy.glade:3708 +msgid " X " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:31 -msgid "xa" +#: src/emc/usr_intf/touchy/touchy.glade:3720 +msgid " Y " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:44 -msgid "xd" +#: src/emc/usr_intf/touchy/touchy.glade:3735 +msgid " Z " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:57 -msgid "yr" +#: src/emc/usr_intf/touchy/touchy.glade:3750 +msgid " A " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:68 -msgid "ya" +#: src/emc/usr_intf/touchy/touchy.glade:3766 +msgid " B " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:81 -msgid "yd" +#: src/emc/usr_intf/touchy/touchy.glade:3784 +msgid " C " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:94 -msgid "zr" +#: src/emc/usr_intf/touchy/touchy.glade:3802 +msgid " U " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:105 -msgid "za" +#: src/emc/usr_intf/touchy/touchy.glade:3818 +msgid " V " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:118 -msgid "zd" +#: src/emc/usr_intf/touchy/touchy.glade:3836 +msgid " W " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:131 -msgid "DTG" +#: src/emc/usr_intf/touchy/touchy.glade:3869 +msgid "Handwheel" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:143 -#: src/emc/usr_intf/pncconf/pncconf.glade:59755 -msgid "Absolute" +#: src/emc/usr_intf/stepconf/stepconf.py:57 +msgid "" +"Stepconf encountered an error. The following information may be useful in " +"troubleshooting:\n" +"\n" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:165 -msgid "xr" +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#, fuzzy +msgid "Stepconf" +msgstr "徐徐に" + +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#: src/emc/usr_intf/stepconf/stepconf.py:217 +#: src/emc/usr_intf/stepconf/main_page.glade:557 +#: src/emc/usr_intf/gscreen/gscreen.py:3414 +#: src/emc/usr_intf/gscreen/gscreen.py:3415 +#: src/emc/usr_intf/gscreen/gscreen.glade:4043 +#, fuzzy +msgid "Start" +msgstr "リーセット" + +#: src/emc/usr_intf/stepconf/stepconf.py:129 +msgid "Base Information" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:176 -msgid "ar" +#: src/emc/usr_intf/stepconf/stepconf.py:129 +msgid "Parallel Port 1" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:188 -msgid "br" +#: src/emc/usr_intf/stepconf/stepconf.py:129 +msgid "Parallel Port 2" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:200 -msgid "cr" +#: src/emc/usr_intf/stepconf/stepconf.py:130 +#, fuzzy +msgid "Options" +msgstr "動き" + +#: src/emc/usr_intf/stepconf/stepconf.py:130 +#, fuzzy +msgid "Axis X" +msgstr "軸の平行移動" + +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis Y" +msgstr "軸の平行移動" + +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis Z" +msgstr "軸の平行移動" + +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis A" +msgstr "軸の平行移動" + +#: src/emc/usr_intf/stepconf/stepconf.py:132 +#: src/emc/usr_intf/pncconf/pncconf.py:378 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#, fuzzy +msgid "Spindle" +msgstr "スピンドル消した" + +#: src/emc/usr_intf/stepconf/stepconf.py:132 +msgid "Almost Done" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:212 -msgid "ur" +#: src/emc/usr_intf/stepconf/stepconf.py:136 +#: src/emc/usr_intf/pncconf/pncconf.py:135 +msgid "Gecko 201" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:224 -msgid "vr" +#: src/emc/usr_intf/stepconf/stepconf.py:137 +#: src/emc/usr_intf/pncconf/pncconf.py:136 +msgid "Gecko 202" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:236 -msgid "wr" +#: src/emc/usr_intf/stepconf/stepconf.py:138 +#: src/emc/usr_intf/pncconf/pncconf.py:137 +msgid "Gecko 203v" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:248 -msgid "aa" +#: src/emc/usr_intf/stepconf/stepconf.py:139 +#: src/emc/usr_intf/pncconf/pncconf.py:138 +msgid "Gecko 210" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:262 -msgid "ba" +#: src/emc/usr_intf/stepconf/stepconf.py:140 +#: src/emc/usr_intf/pncconf/pncconf.py:139 +msgid "Gecko 212" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:276 -msgid "ca" +#: src/emc/usr_intf/stepconf/stepconf.py:141 +#: src/emc/usr_intf/pncconf/pncconf.py:140 +msgid "Gecko 320" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:290 -msgid "ua" +#: src/emc/usr_intf/stepconf/stepconf.py:142 +#: src/emc/usr_intf/pncconf/pncconf.py:141 +msgid "Gecko 540" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:304 -msgid "va" +#: src/emc/usr_intf/stepconf/stepconf.py:143 +#: src/emc/usr_intf/pncconf/pncconf.py:142 +msgid "L297" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:318 -msgid "wa" +#: src/emc/usr_intf/stepconf/stepconf.py:144 +#: src/emc/usr_intf/pncconf/pncconf.py:143 +msgid "PMDX-150" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:332 -msgid "ad" +#: src/emc/usr_intf/stepconf/stepconf.py:145 +#: src/emc/usr_intf/stepconf/pport1.glade:32 +#: src/emc/usr_intf/pncconf/pncconf.py:144 +msgid "Sherline" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:346 -msgid "bd" +#: src/emc/usr_intf/stepconf/stepconf.py:146 +#: src/emc/usr_intf/pncconf/pncconf.py:145 +msgid "Xylotex 8S-3" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:360 -msgid "cd" +#: src/emc/usr_intf/stepconf/stepconf.py:147 +#: src/emc/usr_intf/pncconf/pncconf.py:146 +msgid "Parker-Compumotor oem750" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:374 -msgid "ud" +#: src/emc/usr_intf/stepconf/stepconf.py:148 +#: src/emc/usr_intf/pncconf/pncconf.py:147 +msgid "JVL-SMD41 or 42" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:388 -msgid "vd" +#: src/emc/usr_intf/stepconf/stepconf.py:149 +#: src/emc/usr_intf/pncconf/pncconf.py:148 +msgid "Hobbycnc Pro Chopper" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:402 -msgid "wd" +#: src/emc/usr_intf/stepconf/stepconf.py:150 +msgid "Kelling 4030" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:448 -#, fuzzy -msgid "Estop Reset" -msgstr "終止符点いた" +#: src/emc/usr_intf/stepconf/stepconf.py:151 +msgid "Leadshine Series" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:459 +#: src/emc/usr_intf/stepconf/stepconf.py:190 #, fuzzy -msgid "Estop" -msgstr "終止符点いた" +msgid "X Step" +msgstr "徐徐に" -#: src/emc/usr_intf/touchy/touchy.glade:475 -#, fuzzy -msgid "Machine On" -msgstr "出来るように" +#: src/emc/usr_intf/stepconf/stepconf.py:190 +msgid "X Direction" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:490 +#: src/emc/usr_intf/stepconf/stepconf.py:190 #, fuzzy -msgid "Machine Off" -msgstr "出来ないように" +msgid "Y Step" +msgstr "徐徐に" -#: src/emc/usr_intf/touchy/touchy.glade:531 -msgid "Power" +#: src/emc/usr_intf/stepconf/stepconf.py:190 +msgid "Y Direction" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:562 +#: src/emc/usr_intf/stepconf/stepconf.py:191 #, fuzzy -msgid "Unhome All" -msgstr "原点" +msgid "Z Step" +msgstr "徐徐に" -#: src/emc/usr_intf/touchy/touchy.glade:588 -msgid "Home Selected" +#: src/emc/usr_intf/stepconf/stepconf.py:191 +msgid "Z Direction" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:603 -msgid "Unhome Selected" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:191 +#, fuzzy +msgid "A Step" +msgstr "徐徐に" -#: src/emc/usr_intf/touchy/touchy.glade:625 -msgid "Homing" +#: src/emc/usr_intf/stepconf/stepconf.py:191 +msgid "A Direction" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:644 -msgid "Startup" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 +#, fuzzy +msgid "Spindle ON" +msgstr "スピンドル消した" -#: src/emc/usr_intf/touchy/touchy.glade:727 -msgid "G" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#, fuzzy +msgid "Spindle PWM" +msgstr "スピンドル消した" -#: src/emc/usr_intf/touchy/touchy.glade:929 -msgid "." -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 +#, fuzzy +msgid "Spindle Brake" +msgstr "スピンドル前進" -#: src/emc/usr_intf/touchy/touchy.glade:963 -#: src/emc/usr_intf/pncconf/pncconf.glade:60883 -#: src/emc/usr_intf/pncconf/pncconf.glade:60895 -#: src/emc/usr_intf/pncconf/pncconf.glade:61017 -#: src/emc/usr_intf/pncconf/pncconf.glade:61029 -#: src/emc/usr_intf/pncconf/pncconf.glade:61041 -#: src/emc/usr_intf/pncconf/pncconf.glade:61053 -#: src/emc/usr_intf/pncconf/pncconf.glade:61065 -#: src/emc/usr_intf/pncconf/pncconf.glade:61077 -#: src/emc/usr_intf/pncconf/pncconf.glade:62040 -#: src/emc/usr_intf/pncconf/pncconf.glade:62052 -#: src/emc/usr_intf/pncconf/pncconf.glade:62064 -#: src/emc/usr_intf/pncconf/pncconf.glade:62076 -#: src/emc/usr_intf/pncconf/pncconf.glade:62088 -#: src/emc/usr_intf/pncconf/pncconf.glade:62100 -#: src/emc/usr_intf/pncconf/pncconf.glade:62222 -#: src/emc/usr_intf/pncconf/pncconf.glade:62234 -#: src/emc/usr_intf/pncconf/pncconf.glade:63069 -#: src/emc/usr_intf/pncconf/pncconf.glade:63081 -#: src/emc/usr_intf/pncconf/pncconf.glade:63203 -#: src/emc/usr_intf/pncconf/pncconf.glade:63215 -#: src/emc/usr_intf/pncconf/pncconf.glade:63227 -#: src/emc/usr_intf/pncconf/pncconf.glade:63239 -#: src/emc/usr_intf/pncconf/pncconf.glade:63251 -#: src/emc/usr_intf/pncconf/pncconf.glade:63263 -#: src/emc/usr_intf/pncconf/pncconf.glade:64226 -#: src/emc/usr_intf/pncconf/pncconf.glade:64238 -#: src/emc/usr_intf/pncconf/pncconf.glade:64250 -#: src/emc/usr_intf/pncconf/pncconf.glade:64262 -#: src/emc/usr_intf/pncconf/pncconf.glade:64274 -#: src/emc/usr_intf/pncconf/pncconf.glade:64286 -#: src/emc/usr_intf/pncconf/pncconf.glade:64408 -#: src/emc/usr_intf/pncconf/pncconf.glade:64420 -#: src/emc/usr_intf/pncconf/pncconf.glade:65231 -#: src/emc/usr_intf/pncconf/pncconf.glade:65243 -#: src/emc/usr_intf/pncconf/pncconf.glade:65359 -#: src/emc/usr_intf/pncconf/pncconf.glade:65371 -#: src/emc/usr_intf/pncconf/pncconf.glade:65383 -#: src/emc/usr_intf/pncconf/pncconf.glade:65395 -#: src/emc/usr_intf/pncconf/pncconf.glade:65407 -#: src/emc/usr_intf/pncconf/pncconf.glade:65419 -#: src/emc/usr_intf/pncconf/pncconf.glade:67091 -msgid "0" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 +msgid "Coolant Mist" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:980 -msgid "3" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 +msgid "Coolant Flood" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:997 -msgid "2" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:370 +#, fuzzy +msgid "ESTOP Out" +msgstr "終止符" -#: src/emc/usr_intf/touchy/touchy.glade:1014 -msgid "1" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +msgid "Amplifier Enable" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1031 -msgid "6" +#: src/emc/usr_intf/stepconf/stepconf.py:194 +#: src/emc/usr_intf/pncconf/pncconf.py:371 +msgid "Charge Pump" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1048 -msgid "5" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 0" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1065 -msgid "4" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 1" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1082 -msgid "9" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 2" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1097 -msgid "8" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 3" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1112 -msgid "7" +#: src/emc/usr_intf/stepconf/stepconf.py:196 +#: src/emc/usr_intf/stepconf/stepconf.py:215 +#: src/emc/usr_intf/stepconf/pport1.glade:18 +#: src/emc/usr_intf/stepconf/pport2.glade:1406 +#: src/emc/usr_intf/stepconf/pport2.glade:1420 +msgid "Unused" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1297 +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 #, fuzzy -msgid "Flood On" -msgstr "水洗点いた" +msgid "ESTOP In" +msgstr "終止符" -#: src/emc/usr_intf/touchy/touchy.glade:1308 -#, fuzzy -msgid "Flood Off" -msgstr "水洗消した" +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 +msgid "Probe In" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1324 +#: src/emc/usr_intf/stepconf/stepconf.py:199 #, fuzzy -msgid "Mist On" -msgstr "雰点いた" +msgid "Spindle Index" +msgstr "スピンドル消した" -#: src/emc/usr_intf/touchy/touchy.glade:1339 +#: src/emc/usr_intf/stepconf/stepconf.py:199 #, fuzzy -msgid "Mist Off" -msgstr "雰消した" +msgid "Spindle Phase A" +msgstr "スピンドル逆" -#: src/emc/usr_intf/touchy/touchy.glade:1362 +#: src/emc/usr_intf/stepconf/stepconf.py:199 #, fuzzy -msgid "Coolant" -msgstr "命令:" +msgid "Spindle Phase B" +msgstr "スピンドル逆" -#: src/emc/usr_intf/touchy/touchy.glade:1448 +#: src/emc/usr_intf/stepconf/stepconf.py:200 #, fuzzy -msgid "Spindle Off" -msgstr "スピンドル消した" +msgid "Home X" +msgstr "原点" -#: src/emc/usr_intf/touchy/touchy.glade:1501 -#: src/emc/usr_intf/touchy/touchy.glade:2578 +#: src/emc/usr_intf/stepconf/stepconf.py:200 #, fuzzy -msgid "Spindle speed:" -msgstr "フィード手直して" +msgid "Home Y" +msgstr "原点" -#: src/emc/usr_intf/touchy/touchy.glade:1513 -#: src/emc/usr_intf/touchy/touchy.glade:2707 -msgid "label26" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:200 +#, fuzzy +msgid "Home Z" +msgstr "原点" -#: src/emc/usr_intf/touchy/touchy.glade:1539 +#: src/emc/usr_intf/stepconf/stepconf.py:200 #, fuzzy -msgid "Spindle" -msgstr "スピンドル消した" +msgid "Home A" +msgstr "原点" -#: src/emc/usr_intf/touchy/touchy.glade:1597 -msgid "file.ngc" +#: src/emc/usr_intf/stepconf/stepconf.py:201 +msgid "Minimum Limit + Home X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1812 -#: src/emc/usr_intf/touchy/touchy.glade:2017 -#: src/emc/usr_intf/touchy/touchy.glade:2037 -#: src/emc/usr_intf/touchy/touchy.glade:2057 -#: src/emc/usr_intf/touchy/touchy.glade:2077 -#: src/emc/usr_intf/touchy/touchy.glade:2097 -#: src/emc/usr_intf/touchy/touchy.glade:2117 -#: src/emc/usr_intf/touchy/touchy.glade:2137 -#: src/emc/usr_intf/touchy/touchy.glade:2157 -#: src/emc/usr_intf/touchy/touchy.glade:2177 -msgid "M2" +#: src/emc/usr_intf/stepconf/stepconf.py:201 +msgid "Minimum Limit + Home Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2244 -#: src/emc/usr_intf/touchy/touchy.glade:2374 -msgid "Page" +#: src/emc/usr_intf/stepconf/stepconf.py:202 +msgid "Minimum Limit + Home Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2308 -msgid "Start Point" +#: src/emc/usr_intf/stepconf/stepconf.py:202 +msgid "Minimum Limit + Home A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2452 -msgid "Loaded File" +#: src/emc/usr_intf/stepconf/stepconf.py:203 +msgid "Maximum Limit + Home X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2488 -msgid "Loaded file:" +#: src/emc/usr_intf/stepconf/stepconf.py:203 +msgid "Maximum Limit + Home Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2499 -msgid "Interpreted line:" +#: src/emc/usr_intf/stepconf/stepconf.py:204 +msgid "Maximum Limit + Home Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2513 -msgid "Distance:" +#: src/emc/usr_intf/stepconf/stepconf.py:204 +msgid "Maximum Limit + Home A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2526 -#: src/emc/usr_intf/stepconf/stepconf.glade:4148 -#: src/emc/usr_intf/pncconf/pncconf.glade:60476 -#: src/emc/usr_intf/pncconf/pncconf.glade:61571 -#: src/emc/usr_intf/pncconf/pncconf.glade:62664 -#: src/emc/usr_intf/pncconf/pncconf.glade:63757 -#: src/emc/usr_intf/pncconf/pncconf.glade:64856 -msgid "Velocity:" +#: src/emc/usr_intf/stepconf/stepconf.py:205 +msgid "Both Limit + Home X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2539 -msgid "Delay:" +#: src/emc/usr_intf/stepconf/stepconf.py:205 +msgid "Both Limit + Home Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2552 -msgid "On limit switch:" +#: src/emc/usr_intf/stepconf/stepconf.py:206 +msgid "Both Limit + Home Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2565 -#, fuzzy -msgid "Spindle direction:" -msgstr "スピンドル消した" - -#: src/emc/usr_intf/touchy/touchy.glade:2591 -msgid "Loaded tool:" +#: src/emc/usr_intf/stepconf/stepconf.py:206 +msgid "Both Limit + Home A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2604 -#: src/emc/usr_intf/touchy/touchy.glade:2955 -msgid "label19" +#: src/emc/usr_intf/stepconf/stepconf.py:207 +msgid "Minimum Limit X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2617 -msgid "label20" +#: src/emc/usr_intf/stepconf/stepconf.py:207 +msgid "Minimum Limit Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2632 -#: src/emc/usr_intf/touchy/touchy.glade:2779 -#: src/emc/usr_intf/touchy/touchy.glade:2808 -#: src/emc/usr_intf/touchy/touchy.glade:2912 -#: src/emc/usr_intf/touchy/touchy.glade:2927 -msgid "label21" +#: src/emc/usr_intf/stepconf/stepconf.py:208 +msgid "Minimum Limit Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2647 -msgid "label22" +#: src/emc/usr_intf/stepconf/stepconf.py:208 +msgid "Minimum Limit A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2662 -msgid "label23" +#: src/emc/usr_intf/stepconf/stepconf.py:209 +msgid "Maximum Limit X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2677 -msgid "label24" +#: src/emc/usr_intf/stepconf/stepconf.py:209 +msgid "Maximum Limit Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2692 -msgid "label25" +#: src/emc/usr_intf/stepconf/stepconf.py:210 +msgid "Maximum Limit Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2722 -msgid "label27" +#: src/emc/usr_intf/stepconf/stepconf.py:210 +msgid "Maximum Limit A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2737 -msgid "Prepped tool:" +#: src/emc/usr_intf/stepconf/stepconf.py:211 +msgid "Both Limit X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2750 -msgid "label28" +#: src/emc/usr_intf/stepconf/stepconf.py:211 +msgid "Both Limit Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2765 -msgid "Running line:" +#: src/emc/usr_intf/stepconf/stepconf.py:212 +msgid "Both Limit Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2794 -msgid "XY Rotation:" +#: src/emc/usr_intf/stepconf/stepconf.py:212 +msgid "Both Limit A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2823 +#: src/emc/usr_intf/stepconf/stepconf.py:213 #, fuzzy -msgid "Tool length:" -msgstr "ファイル" +msgid "All limits" +msgstr "全部のファイル" -#: src/emc/usr_intf/touchy/touchy.glade:2836 -msgid "label52" +#: src/emc/usr_intf/stepconf/stepconf.py:213 +#, fuzzy +msgid "All home" +msgstr "原点" + +#: src/emc/usr_intf/stepconf/stepconf.py:213 +#, fuzzy +msgid "All limits + homes" +msgstr "全部のファイル" + +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 0" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2851 -msgid "" -"G1 G2 G3\n" -"M1 M2 M3\n" -"F1 S1" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 1" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2870 -msgid "Active codes:" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 2" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2883 -#, fuzzy -msgid "G5x Offset:" -msgstr "平行移動:" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 3" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2898 +#: src/emc/usr_intf/stepconf/stepconf.py:218 #, fuzzy -msgid "G92 Offset:" -msgstr "平行移動:" +msgid "Forward" +msgstr "スピンドル前進" -#: src/emc/usr_intf/touchy/touchy.glade:2942 -msgid "Loaded file lines:" +#: src/emc/usr_intf/stepconf/stepconf.py:219 +msgid "Done" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2971 -msgid "Pockets:" +#: src/emc/usr_intf/stepconf/stepconf.py:220 +msgid "" +"OK to replace existing custom ladder program?\n" +"Existing Custom.clp will be renamed custom_backup.clp.\n" +"Any existing file named -custom_backup.clp- will be lost. " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2984 +#: src/emc/usr_intf/stepconf/stepconf.py:221 +#: src/emc/usr_intf/pncconf/pncconf.py:8163 msgid "" -"1\n" -"2\n" -"3" +"You edited a ladder program and have selected a different program to copy to " +"your configuration file.\n" +"The edited program will be lost.\n" +"\n" +"Are you sure? " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3009 -#, fuzzy -msgid "Status" -msgstr "状態:" +#: src/emc/usr_intf/stepconf/stepconf.py:222 +msgid "" +"You need to designate an E-stop input pin in the Parallel Port Setup page " +"for this program." +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3038 -msgid "Control Font:" +#: src/emc/usr_intf/stepconf/stepconf.py:223 +msgid "" +"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" +"Existing custompanel.xml and custom_postgui.hal will be renamed " +"custompanel_backup.xml and postgui_backup.hal.\n" +"Any existing file named custompanel_backup.xml and custom_postgui.hal will " +"be lost. " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3050 -#, fuzzy -msgid "DRO Font:" -msgstr "フォント..." +#: src/emc/usr_intf/stepconf/stepconf.py:224 +msgid "Quit Stepconf and discard changes?" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3064 -#, fuzzy -msgid "Error Font:" -msgstr "越度: " +#: src/emc/usr_intf/stepconf/stepconf.py:225 +msgid "" +"The configuration has been built and saved.\n" +"Do you want to quit?" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3081 -msgid "ControlFont" +#: src/emc/usr_intf/stepconf/stepconf.py:226 +msgid "" +"You are using a simulated-realtime version of Machinekit, so testing / " +"tuning of hardware is unavailable." msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3100 -#, fuzzy -msgid "DRO Font" -msgstr "フォント..." +#: src/emc/usr_intf/stepconf/stepconf.py:227 +#, python-format +msgid "" +"You are using a realtime version of Machinekit but didn't load a realtime " +"kernel so testing / tuning of hardware is unavailable.\n" +"This is possibly because you updated the OS and it doesn't automatically " +"load the RTAI kernel anymore.\n" +"You are using the %(actual)s kernel.\n" +"You need to use kernel:" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3121 -#, fuzzy -msgid "Error Font" -msgstr "越度: " +#: src/emc/usr_intf/stepconf/stepconf.py:246 +msgid "my-mill" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3139 -msgid "Listing Font:" +#: src/emc/usr_intf/stepconf/stepconf.py:585 +#, python-format +msgid "File %r was modified since it was written by stepconf" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3156 +#: src/emc/usr_intf/stepconf/stepconf.py:588 +msgid "" +"Saving this configuration file will discard configuration changes made " +"outside stepconf." +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:603 +#: src/emc/usr_intf/pncconf/pncconf.py:1318 #, fuzzy -msgid "Listing Font" -msgstr "フォントを撰ぶ" +msgid "Continue? " +msgstr "連綿" -#: src/emc/usr_intf/touchy/touchy.glade:3176 -msgid "Hide pointer" +#: src/emc/usr_intf/stepconf/stepconf.py:604 +#: src/emc/usr_intf/pncconf/pncconf.py:1319 +msgid "yY" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3187 -#, fuzzy -msgid "Show pointer" -msgstr "プローグラム: " +#: src/emc/usr_intf/stepconf/stepconf.py:689 +#: src/emc/usr_intf/pncconf/pncconf.py:3591 +#, python-format +msgid "launch %s" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3214 -msgid "Theme:" +#: src/emc/usr_intf/stepconf/stepconf.py:693 +msgid "Desktop Launcher for Machinekit config made by Stepconf" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3228 -msgid "default\n" +#: src/emc/usr_intf/stepconf/stepconf.py:860 +#: src/emc/usr_intf/stepconf/pages.py:145 +msgid "Other" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3252 -msgid "Display Options" +#: src/emc/usr_intf/stepconf/stepconf.py:1295 +#: src/emc/usr_intf/pncconf/pncconf.py:9302 +#, fuzzy, python-format +msgid "%s Axis Test" +msgstr "軸の平行移動" + +#: src/emc/usr_intf/stepconf/stepconf.py:1298 +#: src/emc/usr_intf/stepconf/pages.py:617 +msgid "deg / s" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3286 -msgid "Inch" +#: src/emc/usr_intf/stepconf/stepconf.py:1299 +#: src/emc/usr_intf/stepconf/pages.py:618 +msgid "deg / s²" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3349 -msgid "Position Readout" +#: src/emc/usr_intf/stepconf/stepconf.py:1300 +#: src/emc/usr_intf/stepconf/pages.py:619 +msgid "deg" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3379 -msgid "Workpiece" +#: src/emc/usr_intf/stepconf/stepconf.py:1312 +#: src/emc/usr_intf/stepconf/pages.py:623 +#: src/emc/usr_intf/stepconf/axisx.glade:629 +#: src/emc/usr_intf/stepconf/axisy.glade:615 +#: src/emc/usr_intf/stepconf/axisz.glade:615 +#: src/emc/usr_intf/stepconf/axisa.glade:629 +#: src/emc/usr_intf/pncconf/pncconf.glade:64717 +msgid "mm / s" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3390 -msgid "Fixture" +#: src/emc/usr_intf/stepconf/stepconf.py:1313 +#: src/emc/usr_intf/stepconf/pages.py:624 +#: src/emc/usr_intf/stepconf/axisx.glade:645 +#: src/emc/usr_intf/stepconf/axisy.glade:631 +#: src/emc/usr_intf/stepconf/axisz.glade:631 +#: src/emc/usr_intf/stepconf/axisa.glade:645 +#: src/emc/usr_intf/pncconf/pncconf.glade:64732 +msgid "mm / s²" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3410 -msgid "Tool Setting" +#: src/emc/usr_intf/stepconf/stepconf.py:1326 +#: src/emc/usr_intf/stepconf/pages.py:629 +msgid "in / s" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3441 -msgid "Delete / lines" +#: src/emc/usr_intf/stepconf/stepconf.py:1327 +#: src/emc/usr_intf/stepconf/pages.py:630 +msgid "in / s²" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3456 -msgid "Keep / lines" +#: src/emc/usr_intf/stepconf/pages.py:189 +msgid "Machinekit 'stepconf' configuration files" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3473 -#, fuzzy -msgid "Pause on M1" -msgstr "間断" +#: src/emc/usr_intf/stepconf/pages.py:190 +#: src/emc/usr_intf/pncconf/pncconf.py:4257 +msgid "Modify Existing Configuration" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3484 -msgid "Ignore M1" +#: src/emc/usr_intf/stepconf/pages.py:616 +msgid "degree / rev" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3504 -msgid "Program Options" +#: src/emc/usr_intf/stepconf/pages.py:620 +msgid "Steps / deg" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3531 -msgid "Preferences" +#: src/emc/usr_intf/stepconf/pages.py:622 +#: src/emc/usr_intf/stepconf/axisx.glade:613 +#: src/emc/usr_intf/stepconf/axisy.glade:599 +#: src/emc/usr_intf/stepconf/axisz.glade:599 +#: src/emc/usr_intf/stepconf/axisa.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / rev" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3567 -msgid "FO: 100%" +#: src/emc/usr_intf/stepconf/pages.py:626 +#: src/emc/usr_intf/stepconf/axisx.glade:15 +#: src/emc/usr_intf/stepconf/axisy.glade:15 +#: src/emc/usr_intf/stepconf/axisz.glade:15 +#: src/emc/usr_intf/stepconf/axisa.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Steps / mm" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3582 -msgid "SO: 100%" +#: src/emc/usr_intf/stepconf/pages.py:628 +msgid "rev / in" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3596 -msgid "MV: 100" +#: src/emc/usr_intf/stepconf/pages.py:632 +msgid "Steps / in" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3610 -msgid "Jogging" +#: src/emc/usr_intf/stepconf/build_INI.py:45 +#: src/emc/usr_intf/stepconf/build_HAL.py:41 +#, python-format +msgid "# Generated by stepconf 1.1 at %s" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3637 -msgid ".01" +#: src/emc/usr_intf/stepconf/build_INI.py:46 +#: src/emc/usr_intf/stepconf/build_HAL.py:42 +#: src/emc/usr_intf/pncconf/pncconf.py:1328 +#: src/emc/usr_intf/pncconf/pncconf.py:2422 +msgid "# If you make changes to this file, they will be" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3650 -msgid ".001" +#: src/emc/usr_intf/stepconf/build_INI.py:47 +#: src/emc/usr_intf/stepconf/build_HAL.py:43 +msgid "# overwritten when you run stepconf again" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3666 -msgid ".0001" +#: src/emc/usr_intf/stepconf/build_INI.py:126 +msgid "# add halui MDI commands here (max 64) " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3694 -msgid " X " +#: src/emc/usr_intf/stepconf/build_HAL.py:275 +#: src/emc/usr_intf/pncconf/pncconf.py:3131 +msgid "# **** Setup for external estop ladder program -START ****" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3706 -msgid " Y " +#: src/emc/usr_intf/stepconf/build_HAL.py:282 +#: src/emc/usr_intf/pncconf/pncconf.py:3138 +msgid "# **** Setup for external estop ladder program -END ****" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3721 -msgid " Z " +#: src/emc/usr_intf/stepconf/build_HAL.py:302 +#: src/emc/usr_intf/pncconf/pncconf.py:3165 +msgid "" +"# Load Classicladder with modbus master included (GUI must run for Modbus)" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3736 -msgid " A " +#: src/emc/usr_intf/stepconf/build_HAL.py:305 +#: src/emc/usr_intf/pncconf/pncconf.py:3170 +msgid "# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3752 -msgid " B " +#: src/emc/usr_intf/stepconf/build_HAL.py:315 +#: src/emc/usr_intf/pncconf/pncconf.py:3252 +msgid "Include your PyVCP panel here.\n" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3770 -msgid " C " +#: src/emc/usr_intf/stepconf/build_HAL.py:324 +#: src/emc/usr_intf/stepconf/build_HAL.py:370 +msgid "# Include your customized HAL commands here" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3788 -msgid " U " +#: src/emc/usr_intf/stepconf/build_HAL.py:325 +msgid "" +"# The commands in this file are run after the AXIS GUI (including PyVCP " +"panel) starts" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3804 -msgid " V " +#: src/emc/usr_intf/stepconf/build_HAL.py:328 +#: src/emc/usr_intf/pncconf/pncconf.py:3280 +msgid "# **** Setup of spindle speed display using pyvcp -START ****" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3822 -msgid " W " +#: src/emc/usr_intf/stepconf/build_HAL.py:330 +msgid "# **** Use ACTUAL spindle velocity from spindle encoder" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3855 -msgid "Handwheel" +#: src/emc/usr_intf/stepconf/build_HAL.py:331 +msgid "" +"# **** spindle-velocity-feedback-rps bounces around so we filter it with " +"lowpass" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:53 +#: src/emc/usr_intf/stepconf/build_HAL.py:332 msgid "" -"Stepconf encountered an error. The following information may be useful in " -"troubleshooting:\n" -"\n" +"# **** spindle-velocity-feedback-rps is signed so we use absolute component " +"to remove sign" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:70 -#: src/emc/usr_intf/pncconf/pncconf.py:133 -msgid "Gecko 201" +#: src/emc/usr_intf/stepconf/build_HAL.py:333 +msgid "# **** ACTUAL velocity is in RPS not RPM so we scale it." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:71 -#: src/emc/usr_intf/pncconf/pncconf.py:134 -msgid "Gecko 202" +#: src/emc/usr_intf/stepconf/build_HAL.py:342 +msgid "# **** set up spindle at speed indicator ****" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:72 -#: src/emc/usr_intf/pncconf/pncconf.py:135 -msgid "Gecko 203v" +#: src/emc/usr_intf/stepconf/build_HAL.py:355 +msgid "" +"# **** Use COMMANDED spindle velocity from LinuxCNC because no spindle " +"encoder was specified" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:73 -#: src/emc/usr_intf/pncconf/pncconf.py:136 -msgid "Gecko 210" +#: src/emc/usr_intf/stepconf/build_HAL.py:371 +msgid "# This file will not be overwritten when you run stepconf again" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:74 -#: src/emc/usr_intf/pncconf/pncconf.py:137 -msgid "Gecko 212" +#: src/emc/usr_intf/stepconf/build_HAL.py:412 +msgid "# This file sets up simulated limits/home/spindle encoder hardware." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:75 -#: src/emc/usr_intf/pncconf/pncconf.py:138 -msgid "Gecko 320" +#: src/emc/usr_intf/stepconf/build_HAL.py:413 +msgid "# This is a generated file do not edit." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:76 -#: src/emc/usr_intf/pncconf/pncconf.py:139 -msgid "Gecko 540" +#: src/emc/usr_intf/stepconf/main_page.glade:35 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Acceleration:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:77 -#: src/emc/usr_intf/pncconf/pncconf.py:140 -msgid "L297" +#: src/emc/usr_intf/stepconf/main_page.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Jog:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:78 -#: src/emc/usr_intf/pncconf/pncconf.py:141 -msgid "PMDX-150" +#: src/emc/usr_intf/stepconf/main_page.glade:63 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Test Area:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:79 -#: src/emc/usr_intf/pncconf/pncconf.py:142 -msgid "Sherline" +#: src/emc/usr_intf/stepconf/main_page.glade:97 +msgid "mm/s^2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:80 -#: src/emc/usr_intf/pncconf/pncconf.py:143 -msgid "Xylotex 8S-3" +#: src/emc/usr_intf/stepconf/main_page.glade:138 +#, fuzzy +msgid "mm/s" +msgstr "mm" + +#: src/emc/usr_intf/stepconf/main_page.glade:400 +msgid "±" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:81 -#: src/emc/usr_intf/pncconf/pncconf.py:144 -msgid "Parker-Compumotor oem750" +#: src/emc/usr_intf/stepconf/main_page.glade:423 +#, fuzzy +msgid "Stepconf -Stepper Configuration Wizard" +msgstr "スピンドル消した" + +#: src/emc/usr_intf/stepconf/main_page.glade:503 +#: src/emc/usr_intf/pncconf/pncconf.glade:2054 +#: src/emc/usr_intf/pncconf/pncconf.glade:2067 +#: src/emc/usr_intf/pncconf/pncconf.glade:2080 +#: src/emc/usr_intf/pncconf/pncconf.glade:2093 +#: src/emc/usr_intf/pncconf/pncconf.glade:2106 +#: src/emc/usr_intf/pncconf/pncconf.glade:2119 +#: src/emc/usr_intf/pncconf/pncconf.glade:2132 +#: src/emc/usr_intf/pncconf/pncconf.glade:2145 +#: src/emc/usr_intf/pncconf/pncconf.glade:2156 +#: src/emc/usr_intf/pncconf/pncconf.glade:2169 +#: src/emc/usr_intf/pncconf/pncconf.glade:2182 +#: src/emc/usr_intf/pncconf/pncconf.glade:2528 +#: src/emc/usr_intf/pncconf/pncconf.glade:2541 +#: src/emc/usr_intf/pncconf/pncconf.glade:2554 +#: src/emc/usr_intf/pncconf/pncconf.glade:8104 +#: src/emc/usr_intf/pncconf/pncconf.glade:8139 +#: src/emc/usr_intf/pncconf/pncconf.glade:63377 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:1342 +#: src/emc/usr_intf/gscreen/gscreen.glade:1360 +#: src/emc/usr_intf/gscreen/gscreen.glade:1378 +msgid "label" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:82 -#: src/emc/usr_intf/pncconf/pncconf.py:145 -msgid "JVL-SMD41 or 42" +#: src/emc/usr_intf/stepconf/main_page.glade:605 +msgid "" +"This program creates configuration files (.ini and .hal) for \"step and " +"direction\" milling machines and lathes connected to the PC parallel port.\n" +"\n" +"Stepconf requires a minimum 800 X 600 display resolution." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:83 -#: src/emc/usr_intf/pncconf/pncconf.py:146 -msgid "Hobbycnc Pro Chopper" +#: src/emc/usr_intf/stepconf/main_page.glade:628 +#: src/emc/usr_intf/pncconf/pncconf.glade:28799 +#: src/emc/usr_intf/pncconf/pncconf.glade:35720 +#: src/emc/usr_intf/pncconf/pncconf.glade:42643 +#: src/emc/usr_intf/pncconf/pncconf.glade:49566 +#: src/emc/usr_intf/pncconf/pncconf.glade:56489 +msgid "page 1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:84 -#: src/emc/usr_intf/pncconf/pncconf.py:147 -msgid "Keling 4030" +#: src/emc/usr_intf/stepconf/base.glade:18 +msgid "XYZ" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -#, fuzzy -msgid "X Step" -msgstr "徐徐に" +#: src/emc/usr_intf/stepconf/base.glade:21 +msgid "XYZA" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -msgid "X Direction" +#: src/emc/usr_intf/stepconf/base.glade:24 +msgid "XZ (Lathe)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -#, fuzzy -msgid "Y Step" -msgstr "徐徐に" +#: src/emc/usr_intf/stepconf/base.glade:79 +msgid "Step _Time:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -msgid "Y Direction" +#: src/emc/usr_intf/stepconf/base.glade:113 +#: src/emc/usr_intf/stepconf/base.glade:165 +#: src/emc/usr_intf/stepconf/base.glade:219 +#: src/emc/usr_intf/stepconf/base.glade:271 +#: src/emc/usr_intf/stepconf/base.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:443 +#: src/emc/usr_intf/pncconf/pncconf.glade:8226 +msgid "ns" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -#, fuzzy -msgid "Z Step" -msgstr "徐徐に" +#: src/emc/usr_intf/stepconf/base.glade:127 +msgid "Step _Space:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -msgid "Z Direction" +#: src/emc/usr_intf/stepconf/base.glade:181 +msgid "Direction _Hold:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -#, fuzzy -msgid "A Step" -msgstr "徐徐に" +#: src/emc/usr_intf/stepconf/base.glade:235 +msgid "_Direction Setup:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -msgid "A Direction" +#: src/emc/usr_intf/stepconf/base.glade:338 +msgid "Driver Timing Settings" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -#, fuzzy -msgid "Spindle ON" -msgstr "スピンドル消した" +#: src/emc/usr_intf/stepconf/base.glade:351 +msgid "" +"_Test Base\n" +"Period Jitter " +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:557 +#: src/emc/usr_intf/stepconf/base.glade:372 #, fuzzy -msgid "Spindle PWM" -msgstr "スピンドル消した" +msgid "Machine _Name:" +msgstr "出来るように" + +#: src/emc/usr_intf/stepconf/base.glade:386 +msgid "_Axis configuration:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 +#: src/emc/usr_intf/stepconf/base.glade:401 #, fuzzy -msgid "Spindle Brake" -msgstr "スピンドル前進" +msgid "Reset Default machine _units:" +msgstr "出来るように" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 -msgid "Coolant Mist" +#: src/emc/usr_intf/stepconf/base.glade:416 +#: src/emc/usr_intf/pncconf/pncconf.glade:245 +msgid "Configuration directory:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 -msgid "Coolant Flood" +#: src/emc/usr_intf/stepconf/base.glade:430 +msgid "D_river type:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:442 -#, fuzzy -msgid "ESTOP Out" -msgstr "終止符" - -#: src/emc/usr_intf/stepconf/stepconf.py:156 -msgid "Amplifier Enable" +#: src/emc/usr_intf/stepconf/base.glade:545 +msgid "" +"Driver characteristics: (Multiply by 1000 for times specified in µs or " +"microseconds)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:157 -#: src/emc/usr_intf/pncconf/pncconf.py:443 -msgid "Charge Pump" +#: src/emc/usr_intf/stepconf/base.glade:573 +msgid "Base Period Maximum _Jitter:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 0" +#: src/emc/usr_intf/stepconf/base.glade:630 +msgid "One Parport" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 1" +#: src/emc/usr_intf/stepconf/base.glade:646 +msgid "Two Parports" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 2" +#: src/emc/usr_intf/stepconf/base.glade:663 +msgid "Three Parports" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 3" +#: src/emc/usr_intf/stepconf/base.glade:698 +msgid "Min Base Period:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:159 -#: src/emc/usr_intf/stepconf/stepconf.py:178 -msgid "Unused" +#: src/emc/usr_intf/stepconf/base.glade:735 +msgid "Max step rate:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 -#, fuzzy -msgid "ESTOP In" -msgstr "終止符" +#: src/emc/usr_intf/stepconf/base.glade:870 +msgid "MM" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 -msgid "Probe In" +#: src/emc/usr_intf/stepconf/start.glade:11 +msgid "Create a _new configuration" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:162 -#, fuzzy -msgid "Spindle Index" -msgstr "スピンドル消した" +#: src/emc/usr_intf/stepconf/start.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:130 +msgid "Modify a configuration already created with this program" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:162 -#, fuzzy -msgid "Spindle Phase A" -msgstr "スピンドル逆" +#: src/emc/usr_intf/stepconf/start.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:118 +msgid "Do you wish to:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:162 -#, fuzzy -msgid "Spindle Phase B" -msgstr "スピンドル逆" +#: src/emc/usr_intf/stepconf/start.glade:61 +#: src/emc/usr_intf/pncconf/pncconf.glade:100 +msgid "" +"If you have made modifications to this configuration outside this program, " +"they will be lost when you select \"Modify a configuration\"" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -#, fuzzy -msgid "Home X" -msgstr "原点" +#: src/emc/usr_intf/stepconf/start.glade:76 +msgid "Create a desktop _shortcut (symlink) to configuration files." +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -#, fuzzy -msgid "Home Y" -msgstr "原点" +#: src/emc/usr_intf/stepconf/start.glade:93 +msgid "Create a desktop _launcher to start LinuxCNC with this configuration." +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -#, fuzzy -msgid "Home Z" -msgstr "原点" +#: src/emc/usr_intf/stepconf/start.glade:124 +msgid "Create simulated hardware configuration." +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -#, fuzzy -msgid "Home A" -msgstr "原点" +#: src/emc/usr_intf/stepconf/pport1.glade:35 +msgid "Xylotex" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:164 -msgid "Minimum Limit + Home X" +#: src/emc/usr_intf/stepconf/pport1.glade:38 +msgid "TB6560 3 axes" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:164 -msgid "Minimum Limit + Home Y" +#: src/emc/usr_intf/stepconf/pport1.glade:41 +msgid "TB6560 4 axes" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:165 -msgid "Minimum Limit + Home Z" +#: src/emc/usr_intf/stepconf/pport1.glade:59 +#: src/emc/usr_intf/pncconf/pncconf.glade:62915 +msgid "Pin _1:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:165 -msgid "Minimum Limit + Home A" +#: src/emc/usr_intf/stepconf/pport1.glade:74 +#: src/emc/usr_intf/stepconf/pport2.glade:768 +#: src/emc/usr_intf/pncconf/pncconf.glade:61685 +#: src/emc/usr_intf/pncconf/pncconf.glade:62901 +msgid "Pin _2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:166 -msgid "Maximum Limit + Home X" +#: src/emc/usr_intf/stepconf/pport1.glade:89 +#: src/emc/usr_intf/stepconf/pport2.glade:814 +#: src/emc/usr_intf/pncconf/pncconf.glade:61668 +#: src/emc/usr_intf/pncconf/pncconf.glade:62887 +msgid "Pin _3:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:166 -msgid "Maximum Limit + Home Y" +#: src/emc/usr_intf/stepconf/pport1.glade:104 +#: src/emc/usr_intf/stepconf/pport2.glade:860 +#: src/emc/usr_intf/pncconf/pncconf.glade:61651 +#: src/emc/usr_intf/pncconf/pncconf.glade:62873 +msgid "Pin _4:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:167 -msgid "Maximum Limit + Home Z" +#: src/emc/usr_intf/stepconf/pport1.glade:119 +#: src/emc/usr_intf/stepconf/pport2.glade:906 +#: src/emc/usr_intf/pncconf/pncconf.glade:61634 +#: src/emc/usr_intf/pncconf/pncconf.glade:62859 +msgid "Pin _5:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:167 -msgid "Maximum Limit + Home A" +#: src/emc/usr_intf/stepconf/pport1.glade:134 +#: src/emc/usr_intf/stepconf/pport2.glade:952 +#: src/emc/usr_intf/pncconf/pncconf.glade:61617 +#: src/emc/usr_intf/pncconf/pncconf.glade:62845 +msgid "Pin _6:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:168 -msgid "Both Limit + Home X" +#: src/emc/usr_intf/stepconf/pport1.glade:149 +#: src/emc/usr_intf/stepconf/pport2.glade:998 +#: src/emc/usr_intf/pncconf/pncconf.glade:61600 +#: src/emc/usr_intf/pncconf/pncconf.glade:62831 +msgid "Pin _7:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:168 -msgid "Both Limit + Home Y" +#: src/emc/usr_intf/stepconf/pport1.glade:164 +#: src/emc/usr_intf/stepconf/pport2.glade:1044 +#: src/emc/usr_intf/pncconf/pncconf.glade:61583 +#: src/emc/usr_intf/pncconf/pncconf.glade:62817 +msgid "Pin _8:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:169 -msgid "Both Limit + Home Z" +#: src/emc/usr_intf/stepconf/pport1.glade:179 +#: src/emc/usr_intf/stepconf/pport2.glade:1090 +#: src/emc/usr_intf/pncconf/pncconf.glade:61566 +#: src/emc/usr_intf/pncconf/pncconf.glade:62803 +msgid "Pin _9:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:169 -msgid "Both Limit + Home A" +#: src/emc/usr_intf/stepconf/pport1.glade:194 +#: src/emc/usr_intf/stepconf/pport2.glade:1137 +#: src/emc/usr_intf/pncconf/pncconf.glade:62789 +msgid "_Pin 14:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:170 -msgid "Minimum Limit X" +#: src/emc/usr_intf/stepconf/pport1.glade:209 +#: src/emc/usr_intf/stepconf/pport2.glade:1185 +#: src/emc/usr_intf/pncconf/pncconf.glade:62775 +msgid "P_in 16:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:170 -msgid "Minimum Limit Y" +#: src/emc/usr_intf/stepconf/pport1.glade:224 +#: src/emc/usr_intf/stepconf/pport2.glade:1233 +#: src/emc/usr_intf/pncconf/pncconf.glade:62761 +msgid "Pi_n 17:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:171 -msgid "Minimum Limit Z" +#: src/emc/usr_intf/stepconf/pport1.glade:470 +#: src/emc/usr_intf/stepconf/pport2.glade:692 +msgid "Outputs (PC to Mill):" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:171 -msgid "Minimum Limit A" +#: src/emc/usr_intf/stepconf/pport1.glade:483 +#: src/emc/usr_intf/stepconf/pport2.glade:427 +#: src/emc/usr_intf/pncconf/pncconf.glade:61701 +msgid "Pin 1_0:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:172 -msgid "Maximum Limit X" +#: src/emc/usr_intf/stepconf/pport1.glade:500 +#: src/emc/usr_intf/stepconf/pport2.glade:475 +#: src/emc/usr_intf/pncconf/pncconf.glade:61717 +msgid "Pin 1_1:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:172 -msgid "Maximum Limit Y" +#: src/emc/usr_intf/stepconf/pport1.glade:517 +#: src/emc/usr_intf/stepconf/pport2.glade:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:61733 +msgid "Pin 1_2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:173 -msgid "Maximum Limit Z" +#: src/emc/usr_intf/stepconf/pport1.glade:534 +#: src/emc/usr_intf/stepconf/pport2.glade:571 +#: src/emc/usr_intf/pncconf/pncconf.glade:61749 +msgid "Pin 1_3:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:173 -msgid "Maximum Limit A" +#: src/emc/usr_intf/stepconf/pport1.glade:551 +#: src/emc/usr_intf/stepconf/pport2.glade:619 +#: src/emc/usr_intf/pncconf/pncconf.glade:61765 +msgid "Pin 1_5:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:174 -msgid "Both Limit X" +#: src/emc/usr_intf/stepconf/pport1.glade:590 +#: src/emc/usr_intf/stepconf/pport2.glade:16 +msgid "Inputs (Mill to PC):" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:174 -msgid "Both Limit Y" +#: src/emc/usr_intf/stepconf/pport1.glade:618 +#: src/emc/usr_intf/stepconf/pport1.glade:632 +#: src/emc/usr_intf/stepconf/pport2.glade:29 +#: src/emc/usr_intf/stepconf/pport2.glade:702 +#: src/emc/usr_intf/pncconf/pncconf.glade:62335 +#: src/emc/usr_intf/pncconf/pncconf.glade:62348 +msgid "Invert" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:175 -msgid "Both Limit Z" +#: src/emc/usr_intf/stepconf/pport1.glade:1018 +msgid "Output pinout presets:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:175 -msgid "Both Limit A" +#: src/emc/usr_intf/stepconf/pport1.glade:1096 +msgid "Parport _Base Address:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:176 +#: src/emc/usr_intf/stepconf/pport1.glade:1132 #, fuzzy -msgid "All limits" -msgstr "全部のファイル" +msgid "Preset" +msgstr "リーセット" -#: src/emc/usr_intf/stepconf/stepconf.py:176 -#, fuzzy -msgid "All home" -msgstr "原点" +#: src/emc/usr_intf/stepconf/pport2.glade:47 +msgid "Pin 2:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:176 -#, fuzzy -msgid "All limits + homes" -msgstr "全部のファイル" +#: src/emc/usr_intf/stepconf/pport2.glade:94 +msgid "Pin 3:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 0" +#: src/emc/usr_intf/stepconf/pport2.glade:141 +msgid "Pin 4:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 1" +#: src/emc/usr_intf/stepconf/pport2.glade:188 +msgid "Pin 5:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 2" +#: src/emc/usr_intf/stepconf/pport2.glade:235 +msgid "Pin 6:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 3" +#: src/emc/usr_intf/stepconf/pport2.glade:282 +msgid "Pin 7:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:203 -msgid "my-mill" +#: src/emc/usr_intf/stepconf/pport2.glade:329 +msgid "Pin 8:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:215 -#: src/emc/usr_intf/stepconf/stepconf.py:217 -#: src/emc/usr_intf/pncconf/pncconf.py:983 -#: src/emc/usr_intf/pncconf/pncconf.py:985 -msgid "Enter Address" +#: src/emc/usr_intf/stepconf/pport2.glade:376 +msgid "Pin 9:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:375 -#, python-format -msgid "File %r was modified since it was written by stepconf" +#: src/emc/usr_intf/stepconf/pport2.glade:721 +msgid "Pin _1: " msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:378 -msgid "" -"Saving this configuration file will discard configuration changes made " -"outside stepconf." +#: src/emc/usr_intf/stepconf/pport2.glade:1431 +msgid "Out" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:393 -#: src/emc/usr_intf/pncconf/pncconf.py:1356 +#: src/emc/usr_intf/stepconf/pport2.glade:1434 #, fuzzy -msgid "Continue? " -msgstr "連綿" +msgid "In" +msgstr "IO" -#: src/emc/usr_intf/stepconf/stepconf.py:394 -#: src/emc/usr_intf/pncconf/pncconf.py:1357 -msgid "yY" +#: src/emc/usr_intf/stepconf/spindle.glade:23 +#, fuzzy +msgid "Use spindle-at-speed:" +msgstr "フィード手直して:" + +#: src/emc/usr_intf/stepconf/spindle.glade:64 +msgid "Speed display filter gain:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:446 -#: src/emc/usr_intf/stepconf/stepconf.py:786 -#, python-format -msgid "# Generated by stepconf at %s" +#: src/emc/usr_intf/stepconf/spindle.glade:99 +#, fuzzy +msgid "Calibration:" +msgstr "較正..." + +#: src/emc/usr_intf/stepconf/spindle.glade:113 +#, fuzzy +msgid "_Speed 1:" +msgstr "軸の時速:" + +#: src/emc/usr_intf/stepconf/spindle.glade:129 +msgid "_PWM 1:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:447 -#: src/emc/usr_intf/stepconf/stepconf.py:787 -#: src/emc/usr_intf/pncconf/pncconf.py:1366 -#: src/emc/usr_intf/pncconf/pncconf.py:2369 -msgid "# If you make changes to this file, they will be" +#: src/emc/usr_intf/stepconf/spindle.glade:148 +#, fuzzy +msgid "S_peed 2:" +msgstr "軸の時速:" + +#: src/emc/usr_intf/stepconf/spindle.glade:164 +msgid "P_WM 2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:448 -#: src/emc/usr_intf/stepconf/stepconf.py:788 -msgid "# overwritten when you run stepconf again" +#: src/emc/usr_intf/stepconf/spindle.glade:183 +msgid "PWM _Rate:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:516 -msgid "# add halui MDI commands here (max 64) " +#: src/emc/usr_intf/stepconf/spindle.glade:285 +msgid "_Cycles per revolution:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:991 -#: src/emc/usr_intf/pncconf/pncconf.py:2991 -msgid "# **** Setup for external estop ladder program -START ****" +#: src/emc/usr_intf/stepconf/spindle.glade:347 +msgid "Enter 0 Hz for \"PDM\" mode" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:998 -#: src/emc/usr_intf/pncconf/pncconf.py:2998 -msgid "# **** Setup for external estop ladder program -END ****" +#: src/emc/usr_intf/stepconf/spindle.glade:360 +msgid "Scale %" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1018 -#: src/emc/usr_intf/pncconf/pncconf.py:3025 -msgid "" -"# Load Classicladder with modbus master included (GUI must run for Modbus)" +#: src/emc/usr_intf/stepconf/options.glade:50 +msgid "Include Halui user interface component" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1021 -#: src/emc/usr_intf/pncconf/pncconf.py:3030 -msgid "# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI" +#: src/emc/usr_intf/stepconf/options.glade:102 +#: src/emc/usr_intf/pncconf/pncconf.glade:6753 +msgid "Blank program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1031 -#: src/emc/usr_intf/pncconf/pncconf.py:3112 -msgid "Include your PyVCP panel here.\n" +#: src/emc/usr_intf/stepconf/options.glade:119 +#: src/emc/usr_intf/pncconf/pncconf.glade:6768 +#, fuzzy +msgid "Spindle speed display " +msgstr "フィード手直して" + +#: src/emc/usr_intf/stepconf/options.glade:136 +#: src/emc/usr_intf/stepconf/options.glade:671 +#: src/emc/usr_intf/pncconf/pncconf.glade:6799 +#: src/emc/usr_intf/pncconf/pncconf.glade:7120 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Existing custom program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1040 -#: src/emc/usr_intf/stepconf/stepconf.py:1087 -msgid "# Include your customized HAL commands here" +#: src/emc/usr_intf/stepconf/options.glade:153 +#: src/emc/usr_intf/stepconf/options.glade:688 +#: src/emc/usr_intf/pncconf/pncconf.glade:6814 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include connections to HAL" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1041 +#: src/emc/usr_intf/stepconf/options.glade:202 +#: src/emc/usr_intf/pncconf/pncconf.glade:6997 +#: src/emc/usr_intf/pncconf/pncconf.glade:7545 msgid "" -"# The commands in this file are run after the AXIS GUI (including PyVCP " -"panel) starts" +"_Display\n" +"sample\n" +"panel" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1045 -#: src/emc/usr_intf/pncconf/pncconf.py:3140 -msgid "# **** Setup of spindle speed display using pyvcp -START ****" +#: src/emc/usr_intf/stepconf/options.glade:243 +#: src/emc/usr_intf/pncconf/pncconf.glade:7056 +msgid "Include custom PyVCP GUI panel" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1047 -msgid "# **** Use ACTUAL spindle velocity from spindle encoder" +#: src/emc/usr_intf/stepconf/options.glade:414 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (float) out pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1048 -msgid "# **** spindle-velocity bounces around so we filter it with lowpass" +#: src/emc/usr_intf/stepconf/options.glade:429 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (float) in pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1049 -msgid "" -"# **** spindle-velocity is signed so we use absolute component to remove sign" +#: src/emc/usr_intf/stepconf/options.glade:444 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (s32) out pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1050 -msgid "# **** ACTUAL velocity is in RPS not RPM so we scale it." +#: src/emc/usr_intf/stepconf/options.glade:459 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (s32) in pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1059 -msgid "# **** set up spindle at speed indicator ****" +#: src/emc/usr_intf/stepconf/options.glade:475 +msgid "Number of digital out pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1072 -msgid "" -"# **** Use COMMANDED spindle velocity from LinuxCNC because no spindle " -"encoder was specified" +#: src/emc/usr_intf/stepconf/options.glade:506 +msgid "Number of digital in pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1073 -msgid "" -"# **** COMANDED velocity is signed so we use absolute component (abs.0) to " -"remove sign" +#: src/emc/usr_intf/stepconf/options.glade:518 +msgid "setup number of external pins" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1088 -msgid "# This file will not be overwritten when you run stepconf again" +#: src/emc/usr_intf/stepconf/options.glade:533 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include modbus master support" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1095 -#, python-format -msgid "Generated by stepconf at %s" +#: src/emc/usr_intf/stepconf/options.glade:625 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Blank ladder program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1166 -#: src/emc/usr_intf/pncconf/pncconf.py:3451 -#, python-format -msgid "launch %s" +#: src/emc/usr_intf/stepconf/options.glade:638 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Estop ladder program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1170 -msgid "Desktop Launcher for LinuxCNC config made by Stepconf" +#: src/emc/usr_intf/stepconf/options.glade:654 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Serial modbus program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1196 -#: src/emc/usr_intf/pncconf/pncconf.py:3700 -#, python-format -msgid "%s Axis Configuration" +#: src/emc/usr_intf/stepconf/options.glade:740 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"Edit ladder\n" +"program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1238 -#: src/emc/usr_intf/stepconf/stepconf.py:1337 -msgid "Other" +#: src/emc/usr_intf/stepconf/options.glade:781 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include _Classicladder PLC" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1249 -msgid "Quit Stepconf and discard changes?" +#: src/emc/usr_intf/stepconf/options.glade:802 +msgid "_Onscreen prompt for manual tool change" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1280 -msgid "" -"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " -"of hardware is unavailable." +#: src/emc/usr_intf/stepconf/axisx.glade:31 +#: src/emc/usr_intf/stepconf/axisy.glade:31 +#: src/emc/usr_intf/stepconf/axisz.glade:31 +#: src/emc/usr_intf/stepconf/axisa.glade:45 +msgid "_Motor steps per revolution:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1283 -msgid "" -"You are using a realtime version of LinuxCNC but didn't load a realtime " -"kernel so testing / tuning of hardware is unavailable.\n" -"This is possibly because you updated the OS and it doesn't automatically " -"load the RTAI kernel anymore.\n" +#: src/emc/usr_intf/stepconf/axisx.glade:45 +#: src/emc/usr_intf/stepconf/axisy.glade:44 +#: src/emc/usr_intf/stepconf/axisz.glade:44 +#: src/emc/usr_intf/stepconf/axisa.glade:58 +msgid "_Driver Microstepping:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1298 -msgid "LinuxCNC 'stepconf' configuration files" +#: src/emc/usr_intf/stepconf/axisx.glade:61 +#: src/emc/usr_intf/stepconf/axisy.glade:59 +#: src/emc/usr_intf/stepconf/axisz.glade:59 +#: src/emc/usr_intf/stepconf/axisa.glade:73 +msgid "_Pulley teeth (Motor:Leadscrew):" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1299 -#: src/emc/usr_intf/pncconf/pncconf.py:4094 -msgid "Modify Existing Configuration" +#: src/emc/usr_intf/stepconf/axisx.glade:77 +#: src/emc/usr_intf/stepconf/axisy.glade:74 +#: src/emc/usr_intf/stepconf/axisz.glade:74 +#: src/emc/usr_intf/stepconf/axisa.glade:88 +msgid "_Leadscrew Pitch:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1439 -msgid "" -"You need to designate an E-stop input pin in the Parallel Port Setup page " -"for this program." +#: src/emc/usr_intf/stepconf/axisx.glade:93 +#: src/emc/usr_intf/stepconf/axisy.glade:89 +#: src/emc/usr_intf/stepconf/axisz.glade:89 +#: src/emc/usr_intf/stepconf/axisa.glade:103 +#: src/emc/usr_intf/pncconf/pncconf.glade:64687 +msgid "Maximum _Velocity:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1452 -msgid "" -"OK to replace existing custom ladder program?\n" -"Existing Custom.clp will be renamed custom_backup.clp.\n" -"Any existing file named -custom_backup.clp- will be lost. " +#: src/emc/usr_intf/stepconf/axisx.glade:109 +#: src/emc/usr_intf/stepconf/axisy.glade:104 +#: src/emc/usr_intf/stepconf/axisz.glade:104 +#: src/emc/usr_intf/stepconf/axisa.glade:118 +#: src/emc/usr_intf/pncconf/pncconf.glade:64702 +msgid "Maximum _Acceleration:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1457 -#: src/emc/usr_intf/pncconf/pncconf.py:7815 -msgid "" -"You edited a ladder program and have selected a different program to copy to " -"your configuration file.\n" -"The edited program will be lost.\n" -"\n" -"Are you sure? " +#: src/emc/usr_intf/stepconf/axisx.glade:125 +#: src/emc/usr_intf/stepconf/axisy.glade:119 +#: src/emc/usr_intf/stepconf/axisz.glade:119 +#: src/emc/usr_intf/stepconf/axisa.glade:133 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Time to accelerate to max speed:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1471 -msgid "" -"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" -"Existing custompanel.xml and custom_postgui.hal will be renamed " -"custompanel_backup.xml and postgui_backup.hal.\n" -"Any existing file named custompanel_backup.xml and custom_postgui.hal will " -"be lost. " +#: src/emc/usr_intf/stepconf/axisx.glade:141 +#: src/emc/usr_intf/stepconf/axisy.glade:134 +#: src/emc/usr_intf/stepconf/axisz.glade:134 +#: src/emc/usr_intf/stepconf/axisa.glade:148 +msgid "Distance to accelerate to max speed:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1676 -msgid "degree / rev" +#: src/emc/usr_intf/stepconf/axisx.glade:271 +#: src/emc/usr_intf/stepconf/axisy.glade:263 +#: src/emc/usr_intf/stepconf/axisz.glade:263 +#: src/emc/usr_intf/stepconf/axisa.glade:277 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulse rate at max speed:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1677 -#: src/emc/usr_intf/stepconf/stepconf.py:2205 -msgid "deg / s" +#: src/emc/usr_intf/stepconf/axisx.glade:342 +#: src/emc/usr_intf/stepconf/axisy.glade:334 +#: src/emc/usr_intf/stepconf/axisz.glade:334 +#: src/emc/usr_intf/stepconf/axisa.glade:348 +msgid "_Home location:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1678 -#: src/emc/usr_intf/stepconf/stepconf.py:2206 -msgid "deg / s²" +#: src/emc/usr_intf/stepconf/axisx.glade:358 +#: src/emc/usr_intf/stepconf/axisy.glade:349 +#: src/emc/usr_intf/stepconf/axisz.glade:349 +#: src/emc/usr_intf/stepconf/axisa.glade:363 +msgid "Home _Switch location:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1679 -#: src/emc/usr_intf/stepconf/stepconf.py:2207 -msgid "deg" +#: src/emc/usr_intf/stepconf/axisx.glade:374 +#: src/emc/usr_intf/stepconf/axisy.glade:364 +#: src/emc/usr_intf/stepconf/axisz.glade:364 +#: src/emc/usr_intf/stepconf/axisa.glade:378 +msgid "Home Sear_ch velocity:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1680 -msgid "Steps / deg" +#: src/emc/usr_intf/stepconf/axisx.glade:390 +#: src/emc/usr_intf/stepconf/axisy.glade:379 +#: src/emc/usr_intf/stepconf/axisz.glade:379 +#: src/emc/usr_intf/stepconf/axisa.glade:393 +msgid "Home La_tch direction:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1682 -#: src/emc/usr_intf/stepconf/stepconf.glade:3589 -#: src/emc/usr_intf/pncconf/pncconf.glade:66138 -#: src/emc/usr_intf/pncconf/pncconf.glade:66424 -msgid "mm / rev" +#: src/emc/usr_intf/stepconf/axisx.glade:404 +#: src/emc/usr_intf/stepconf/axisy.glade:393 +#: src/emc/usr_intf/stepconf/axisz.glade:393 +#: src/emc/usr_intf/stepconf/axisa.glade:407 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "_:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1683 -#: src/emc/usr_intf/stepconf/stepconf.py:2219 -#: src/emc/usr_intf/stepconf/stepconf.glade:3604 -#: src/emc/usr_intf/pncconf/pncconf.glade:57828 -msgid "mm / s" +#: src/emc/usr_intf/stepconf/axisx.glade:498 +#: src/emc/usr_intf/stepconf/axisy.glade:486 +#: src/emc/usr_intf/stepconf/axisz.glade:486 +#: src/emc/usr_intf/stepconf/axisa.glade:500 +msgid "Tab_le travel:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1684 -#: src/emc/usr_intf/stepconf/stepconf.py:2220 -#: src/emc/usr_intf/stepconf/stepconf.glade:3619 -#: src/emc/usr_intf/pncconf/pncconf.glade:57813 -msgid "mm / s²" +#: src/emc/usr_intf/stepconf/axisx.glade:531 +#: src/emc/usr_intf/stepconf/axisy.glade:518 +#: src/emc/usr_intf/stepconf/axisz.glade:518 +#: src/emc/usr_intf/stepconf/axisa.glade:532 +msgid "t_o" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1686 -#: src/emc/usr_intf/stepconf/stepconf.glade:3075 -#: src/emc/usr_intf/pncconf/pncconf.glade:66888 -msgid "Steps / mm" +#: src/emc/usr_intf/stepconf/axisx.glade:677 +#: src/emc/usr_intf/stepconf/axisy.glade:663 +#: src/emc/usr_intf/stepconf/axisz.glade:663 +#: src/emc/usr_intf/stepconf/axisa.glade:677 +msgid "s" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1688 -msgid "rev / in" +#: src/emc/usr_intf/stepconf/axisx.glade:738 +#: src/emc/usr_intf/stepconf/axisy.glade:724 +#: src/emc/usr_intf/stepconf/axisz.glade:724 +#: src/emc/usr_intf/stepconf/axisa.glade:738 +msgid "T_est this axis" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1689 -#: src/emc/usr_intf/stepconf/stepconf.py:2233 -msgid "in / s" -msgstr "" +#: src/emc/usr_intf/stepconf/axisx.glade:765 +#: src/emc/usr_intf/stepconf/axisy.glade:751 +#: src/emc/usr_intf/stepconf/axisz.glade:751 +#: src/emc/usr_intf/stepconf/axisa.glade:765 +#, fuzzy +msgid "Axis SCALE:" +msgstr "軸の時速:" -#: src/emc/usr_intf/stepconf/stepconf.py:1690 -#: src/emc/usr_intf/stepconf/stepconf.py:2234 -msgid "in / s²" +#: src/emc/usr_intf/stepconf/axisx.glade:833 +#: src/emc/usr_intf/stepconf/axisy.glade:819 +#: src/emc/usr_intf/stepconf/axisz.glade:819 +#: src/emc/usr_intf/stepconf/axisa.glade:12 +msgid "Same" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1692 -msgid "Steps / in" +#: src/emc/usr_intf/stepconf/axisx.glade:836 +#: src/emc/usr_intf/stepconf/axisy.glade:822 +#: src/emc/usr_intf/stepconf/axisz.glade:822 +#: src/emc/usr_intf/stepconf/axisa.glade:15 +msgid "Opposite" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:2202 -#: src/emc/usr_intf/pncconf/pncconf.py:8893 -#, fuzzy, python-format -msgid "%s Axis Test" -msgstr "軸の平行移動" - -#: src/emc/usr_intf/stepconf/stepconf.glade:8 -#: src/emc/usr_intf/stepconf/stepconf.glade:21 -msgid "LinuxCNC Stepper Mill Configuration" +#: src/emc/usr_intf/stepconf/finished.glade:6 +msgid "" +"All the necessary information has now been gathered. \n" +"Click \"Done\" to write your configuration files to disk.\n" +"\n" +"If you experience lockups while running LinuxCNC:\n" +"-you will need to decrease the maximum velocity which will have the effect " +"of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC:\n" +"-first verify that you entered the proper timings for your stepper " +"drivers. \n" +"-then run a more thorough latency test as described on the linuxcnc.org " +"wiki.\n" +" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" +"\n" +"If you experience the \"Unexpected Realtime Delay\" message:\n" +"-run a more thorough latency test as described on the linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:22 +#: src/emc/usr_intf/pncconf/pncconf.py:81 msgid "" -"This program creates configuration files (.ini and .hal) for \"step and " -"direction\" milling machines and lathes connected to the PC parallel port.\n" +"PNCconf encountered an error. The following information may be useful in " +"troubleshooting:\n" "\n" -"Stepconf requires a minimum 800 X 600 display resolution.\n" -"You may need to collapse the 'Driver Timing Settings' and \n" -"Parallel Port Settings' expanders." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:51 -msgid "Create a _new configuration" +#: src/emc/usr_intf/pncconf/pncconf.py:149 +msgid "Keling 4030" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:151 +msgid "Not Used" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:176 +msgid "Dummy" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:69 -#: src/emc/usr_intf/pncconf/pncconf.glade:70 -msgid "Modify a configuration already created with this program" +#: src/emc/usr_intf/pncconf/pncconf.py:152 +msgid "8i20 Servo Drive" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:87 -#: src/emc/usr_intf/pncconf/pncconf.glade:88 -msgid "Do you wish to:" +#: src/emc/usr_intf/pncconf/pncconf.py:153 +msgid "POT Output" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:99 -#: src/emc/usr_intf/pncconf/pncconf.glade:100 -msgid "" -"If you have made modifications to this configuration outside this program, " -"they will be lost when you select \"Modify a configuration\"" +#: src/emc/usr_intf/pncconf/pncconf.py:153 +msgid "POT Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:116 -msgid "Create a desktop _shortcut (symlink) to configuration files." +#: src/emc/usr_intf/pncconf/pncconf.py:153 +msgid "POT Direction" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:133 -msgid "Create a desktop _launcher to start LinuxCNC with this configuration." +#: src/emc/usr_intf/pncconf/pncconf.py:154 +msgid "GPIO Input" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:169 -#: src/emc/usr_intf/pncconf/pncconf.glade:175 -msgid "Basic machine information" +#: src/emc/usr_intf/pncconf/pncconf.py:154 +msgid "GPIO Output" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:327 -msgid "Step _Time:" +#: src/emc/usr_intf/pncconf/pncconf.py:154 +msgid "GPIO O Drain" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:356 -#: src/emc/usr_intf/stepconf/stepconf.glade:402 -#: src/emc/usr_intf/stepconf/stepconf.glade:449 -#: src/emc/usr_intf/stepconf/stepconf.glade:494 -#: src/emc/usr_intf/stepconf/stepconf.glade:909 -#: src/emc/usr_intf/pncconf/pncconf.glade:458 -#: src/emc/usr_intf/pncconf/pncconf.glade:8256 -msgid "ns" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-A" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:369 -msgid "Step _Space:" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-B" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:417 -msgid "Direction _Hold:" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-I" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:464 -msgid "_Direction Setup:" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-M" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:512 -msgid "Driver Timing Settings" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "Muxed Encoder 0" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:538 -msgid "First Parport _Base Address:" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "Muxed Encoder 1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:564 -msgid " Out" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "muxed enc" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:575 -#: src/emc/usr_intf/stepconf/stepconf.glade:591 -msgid "" -"Out\n" -"In" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "mux enc mask" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:633 -msgid "S_econd Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "mux select" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:650 -msgid "T_hird Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.py:157 +msgid "Resolver 0 Encoder" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:667 -msgid " Parallel Port Settings" +#: src/emc/usr_intf/pncconf/pncconf.py:157 +msgid "Resolver 1 Encoder" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:684 -msgid "" -"_Test Base\n" -"Period Jitter " +#: src/emc/usr_intf/pncconf/pncconf.py:157 +msgid "Resolver 2 Encoder" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:703 -#, fuzzy -msgid "Machine _Name:" -msgstr "出来るように" - -#: src/emc/usr_intf/stepconf/stepconf.glade:716 -msgid "_Axis configuration:" +#: src/emc/usr_intf/pncconf/pncconf.py:158 +msgid "Resolver 3 Encoder" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:730 -#, fuzzy -msgid "Machine _units:" -msgstr "出来るように" - -#: src/emc/usr_intf/stepconf/stepconf.glade:744 -#: src/emc/usr_intf/pncconf/pncconf.glade:246 -msgid "Configuration directory:" +#: src/emc/usr_intf/pncconf/pncconf.py:158 +msgid "Resolver 4 Encoder" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:757 -msgid "D_river type:" +#: src/emc/usr_intf/pncconf/pncconf.py:158 +msgid "Resolver 5 Encoder" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:785 -#: src/emc/usr_intf/pncconf/pncconf.glade:326 -msgid "" -"Inch\n" -"Millimeter" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Step Gen-A" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:800 -#: src/emc/usr_intf/pncconf/pncconf.glade:291 -msgid "" -"XYZ\n" -"XYZA\n" -"XZ (Lathe)" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Dir Gen-B" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:847 -msgid "" -"Driver characteristics: (Multiply by 1000 for times specified in µs or " -"microseconds)\n" -" Additional signal conditioning or isolation such as optocouplers " -"and RC filters\n" -" can impose timing constraints of their own, in addition to those of " -"the driver." +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Step/Dir Gen-C" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:875 -msgid "Base Period Maximum _Jitter:" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Step/Dir Gen-D" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:924 -msgid "Max step rate:" +#: src/emc/usr_intf/pncconf/pncconf.py:160 +msgid "Step/Dir Gen-E" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:940 -msgid "Min Base Period:" +#: src/emc/usr_intf/pncconf/pncconf.py:160 +msgid "Step/dir Gen-F" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:956 -msgid "" -"_Onscreen prompt for\n" -"tool change" +#: src/emc/usr_intf/pncconf/pncconf.py:161 +msgid "Pulse Width Gen-P" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1015 -msgid "Advanced Configuration Options" +#: src/emc/usr_intf/pncconf/pncconf.py:161 +msgid "Pulse Width Gen-D" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1033 -msgid "Include Halui user interface component" +#: src/emc/usr_intf/pncconf/pncconf.py:161 +msgid "Pulse Width Gen-E" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1074 -#: src/emc/usr_intf/pncconf/pncconf.glade:6745 -msgid "Blank program" +#: src/emc/usr_intf/pncconf/pncconf.py:162 +msgid "Pulse Density Gen-P" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1089 -#: src/emc/usr_intf/pncconf/pncconf.glade:6760 -#, fuzzy -msgid "Spindle speed display " -msgstr "フィード手直して" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1105 -#: src/emc/usr_intf/stepconf/stepconf.glade:1543 -#: src/emc/usr_intf/pncconf/pncconf.glade:6791 -#: src/emc/usr_intf/pncconf/pncconf.glade:7112 -#: src/emc/usr_intf/pncconf/pncconf.glade:59393 -msgid "Existing custom program" +#: src/emc/usr_intf/pncconf/pncconf.py:162 +msgid "Pulse Density Gen-D" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1120 -#: src/emc/usr_intf/stepconf/stepconf.glade:1559 -#: src/emc/usr_intf/pncconf/pncconf.glade:6806 -#: src/emc/usr_intf/pncconf/pncconf.glade:59409 -msgid "Include connections to HAL" +#: src/emc/usr_intf/pncconf/pncconf.py:162 +msgid "Pulse Density Gen-E" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1154 -#: src/emc/usr_intf/pncconf/pncconf.glade:6989 -#: src/emc/usr_intf/pncconf/pncconf.glade:7537 -msgid "" -"_Display\n" -"sample\n" -"panel" +#: src/emc/usr_intf/pncconf/pncconf.py:163 +msgid "Up/Down Mode -Up" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1188 -#: src/emc/usr_intf/pncconf/pncconf.glade:7048 -msgid "Include custom PyVCP GUI panel" +#: src/emc/usr_intf/pncconf/pncconf.py:163 +msgid "Up/Down Mode-Down" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1321 -#: src/emc/usr_intf/pncconf/pncconf.glade:59199 -msgid " Number of analog (float) out pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:163 +msgid "Up/Down Mode-Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1335 -#: src/emc/usr_intf/pncconf/pncconf.glade:59184 -msgid " Number of analog (float) in pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:164 +msgid "Motor Phase A" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1349 -#: src/emc/usr_intf/pncconf/pncconf.glade:59169 -msgid " Number of analog (s32) out pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:164 +msgid "Motor Phase B" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1363 -#: src/emc/usr_intf/pncconf/pncconf.glade:59153 -msgid " Number of analog (s32) in pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:164 +msgid "Motor Phase C" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1378 -msgid "Number of digital out pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Phase A Not" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1403 -msgid "Number of digital in pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Phase B Not" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1414 -msgid "setup number of external pins" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Phase C Not" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1429 -#: src/emc/usr_intf/pncconf/pncconf.glade:59213 -msgid "Include modbus master support" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1500 -#: src/emc/usr_intf/pncconf/pncconf.glade:59333 -msgid "Blank ladder program" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Fault" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1513 -#: src/emc/usr_intf/pncconf/pncconf.glade:59346 -msgid "Estop ladder program" +#: src/emc/usr_intf/pncconf/pncconf.py:168 +msgid "SMARTSERIAL-P0-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1527 -#: src/emc/usr_intf/pncconf/pncconf.glade:59377 -msgid "Serial modbus program" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P0-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1592 -#: src/emc/usr_intf/pncconf/pncconf.glade:59443 -msgid "" -"Edit ladder\n" -"program" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P0-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1628 -#: src/emc/usr_intf/pncconf/pncconf.glade:59479 -msgid "Include _Classicladder PLC" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1653 -msgid "Parallel Port Setup" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1760 -#: src/emc/usr_intf/pncconf/pncconf.glade:54010 -msgid "Pin _1:" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1774 -#: src/emc/usr_intf/pncconf/pncconf.glade:54024 -#: src/emc/usr_intf/pncconf/pncconf.glade:55239 -msgid "Pin _2:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1788 -#: src/emc/usr_intf/pncconf/pncconf.glade:54038 -#: src/emc/usr_intf/pncconf/pncconf.glade:55256 -msgid "Pin _3:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1802 -#: src/emc/usr_intf/pncconf/pncconf.glade:54052 -#: src/emc/usr_intf/pncconf/pncconf.glade:55273 -msgid "Pin _4:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1816 -#: src/emc/usr_intf/pncconf/pncconf.glade:54066 -#: src/emc/usr_intf/pncconf/pncconf.glade:55290 -msgid "Pin _5:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1830 -#: src/emc/usr_intf/pncconf/pncconf.glade:54080 -#: src/emc/usr_intf/pncconf/pncconf.glade:55307 -msgid "Pin _6:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1844 -#: src/emc/usr_intf/pncconf/pncconf.glade:54094 -#: src/emc/usr_intf/pncconf/pncconf.glade:55324 -msgid "Pin _7:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1858 -#: src/emc/usr_intf/pncconf/pncconf.glade:54108 -#: src/emc/usr_intf/pncconf/pncconf.glade:55341 -msgid "Pin _8:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1872 -#: src/emc/usr_intf/pncconf/pncconf.glade:54122 -#: src/emc/usr_intf/pncconf/pncconf.glade:55358 -msgid "Pin _9:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1886 -#: src/emc/usr_intf/pncconf/pncconf.glade:54136 -msgid "_Pin 14:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1900 -#: src/emc/usr_intf/pncconf/pncconf.glade:54150 -msgid "P_in 16:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1914 -#: src/emc/usr_intf/pncconf/pncconf.glade:54164 -msgid "Pi_n 17:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2258 -msgid "Outputs (PC to Mill):" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2270 -#: src/emc/usr_intf/pncconf/pncconf.glade:55222 -msgid "Pin 1_0:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2286 -#: src/emc/usr_intf/pncconf/pncconf.glade:55206 -msgid "Pin 1_1:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2302 -#: src/emc/usr_intf/pncconf/pncconf.glade:55190 -msgid "Pin 1_2:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2318 -#: src/emc/usr_intf/pncconf/pncconf.glade:55174 -msgid "Pin 1_3:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2334 -#: src/emc/usr_intf/pncconf/pncconf.glade:55158 -msgid "Pin 1_5:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2399 -msgid "Inputs (Mill to PC):" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2425 -#: src/emc/usr_intf/stepconf/stepconf.glade:2438 -#: src/emc/usr_intf/pncconf/pncconf.glade:54578 -#: src/emc/usr_intf/pncconf/pncconf.glade:54591 -msgid "Invert" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS0)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2887 -msgid "_Sherline Outputs" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS2)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2905 -msgid "_Xylotex Outputs" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS3)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2923 -msgid "Output pinout presets:" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 I/O (SS0)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3022 -#: src/emc/usr_intf/pncconf/pncconf.glade:57970 -msgid "X Axis Configuration" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 Analog (SS1)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3090 -msgid "_Motor steps per revolution:" +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 I/O (SS3)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3103 -msgid "_Driver Microstepping:" +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 Analog (SS4)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3118 -msgid "_Pulley teeth (Motor:Leadscrew):" +#: src/emc/usr_intf/pncconf/pncconf.py:176 +#, fuzzy +msgid "Analog Input" +msgstr "手動" + +#: src/emc/usr_intf/pncconf/pncconf.py:277 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +msgid "Axis Selection" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3133 -msgid "_Leadscrew Pitch:" +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "" +"7i64-Input\n" +"P3 and P4" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3148 -#: src/emc/usr_intf/pncconf/pncconf.glade:57858 -msgid "Maximum _Velocity:" +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "" +"7i64-Output\n" +"P2 and P5" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3163 -#: src/emc/usr_intf/pncconf/pncconf.glade:57843 -msgid "Maximum _Acceleration:" +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "7i64-Analog In" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3178 -#: src/emc/usr_intf/pncconf/pncconf.glade:67063 -msgid "Time to accelerate to max speed:" +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3193 -msgid "Distance to accelerate to max speed:" +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3292 -#: src/emc/usr_intf/pncconf/pncconf.glade:67036 -msgid "Pulse rate at max speed:" +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3362 -msgid "_Home location:" +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3377 -msgid "Home _Switch location:" +#: src/emc/usr_intf/pncconf/pncconf.py:309 +msgid "" +"7i71-Output\n" +"TB3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3392 -msgid "Home Sear_ch velocity:" +#: src/emc/usr_intf/pncconf/pncconf.py:309 +msgid "" +"7i71-Output\n" +"TB2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3407 -msgid "Home La_tch direction:" +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-I/O\n" +"TB6" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3420 -#: src/emc/usr_intf/pncconf/pncconf.glade:66232 -#: src/emc/usr_intf/pncconf/pncconf.glade:66274 -#: src/emc/usr_intf/pncconf/pncconf.glade:66505 -#: src/emc/usr_intf/pncconf/pncconf.glade:66570 -msgid "_:" +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-I/O\n" +"TB5" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3437 -#: src/emc/usr_intf/pncconf/pncconf.glade:58536 +#: src/emc/usr_intf/pncconf/pncconf.py:317 msgid "" -"Same\n" -"Opposite" +"7i76-Analog Output\n" +"TB4" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3492 -msgid "Tab_le travel:" +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB8" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3519 -msgid "t_o" +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB7" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3649 -msgid "s" +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-Analog Output\n" +"TB5" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3703 -msgid "T_est this axis" +#: src/emc/usr_intf/pncconf/pncconf.py:333 +msgid "7i73-I/O\n" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3729 -#, fuzzy -msgid "Axis SCALE:" -msgstr "軸の時速:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3765 -#, fuzzy -msgid "Spindle Configuration" -msgstr "スピンドル消した" +#: src/emc/usr_intf/pncconf/pncconf.py:348 +msgid "Unused Unused" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3785 +#: src/emc/usr_intf/pncconf/pncconf.py:370 #, fuzzy -msgid "Use spindle-at-speed:" -msgstr "フィード手直して:" +msgid "Machine Is Enabled" +msgstr "出来るように" -#: src/emc/usr_intf/stepconf/stepconf.glade:3841 -msgid "Speed display filter gain:" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "X Amplifier Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3870 -#, fuzzy -msgid "Calibration:" -msgstr "較正..." - -#: src/emc/usr_intf/stepconf/stepconf.glade:3883 -#, fuzzy -msgid "_Speed 1:" -msgstr "軸の時速:" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "Y Amplifier Enable" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3898 -msgid "_PWM 1:" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "Z Amplifier Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3916 -#, fuzzy -msgid "S_peed 2:" -msgstr "軸の時速:" +#: src/emc/usr_intf/pncconf/pncconf.py:371 +msgid "A Amplifier Enable" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3931 -msgid "P_WM 2:" +#: src/emc/usr_intf/pncconf/pncconf.py:371 +msgid "Force Pin True" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3949 -msgid "PWM _Rate:" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X HALL 1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4025 -msgid "_Cycles per revolution:" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X HALL 2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4079 -msgid "Enter 0 Hz for \"PDM\" mode" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X HALL 3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4091 -msgid "Scale %" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:60002 -msgid "Machine configuration complete" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4114 -#: src/emc/usr_intf/pncconf/pncconf.glade:60003 -msgid "" -"All the necessary information has now been gathered. Click \"Apply\" to " -"write your configuration files to disk.\n" -"If you experience lockups while running LinuxCNC, you will need to decrease " -"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" -"\n" -"If you experience lost steps while running LinuxCNC, first verify that you " -"entered the proper timings for your stepper drivers. If that does not fix " -"the problem, then run a more thorough latency test as described on the " -"linuxcnc.org wiki:\n" -" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" -"\n" -"If you experience the \"Unexpected Realtime Delay\" message, run a more " -"thorough latency test as described on the linuxcnc.org wiki: \n" -" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C4" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4160 -#: src/emc/usr_intf/pncconf/pncconf.glade:60462 -#: src/emc/usr_intf/pncconf/pncconf.glade:61557 -#: src/emc/usr_intf/pncconf/pncconf.glade:62650 -#: src/emc/usr_intf/pncconf/pncconf.glade:63743 -#: src/emc/usr_intf/pncconf/pncconf.glade:64842 -msgid "Acceleration:" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C8" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4174 -#: src/emc/usr_intf/pncconf/pncconf.glade:60231 -#: src/emc/usr_intf/pncconf/pncconf.glade:60695 -#: src/emc/usr_intf/pncconf/pncconf.glade:61788 -#: src/emc/usr_intf/pncconf/pncconf.glade:62881 -#: src/emc/usr_intf/pncconf/pncconf.glade:63974 -#: src/emc/usr_intf/pncconf/pncconf.glade:64954 -msgid "Jog:" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y HALL 1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4188 -#: src/emc/usr_intf/pncconf/pncconf.glade:60681 -#: src/emc/usr_intf/pncconf/pncconf.glade:61774 -#: src/emc/usr_intf/pncconf/pncconf.glade:62867 -#: src/emc/usr_intf/pncconf/pncconf.glade:63960 -msgid "Test Area:" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y HALL 2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4217 -msgid "mm/s^2" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y HALL 3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4253 -#, fuzzy -msgid "mm/s" -msgstr "mm" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C1" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4329 -#: src/emc/usr_intf/pncconf/pncconf.glade:60620 -#: src/emc/usr_intf/pncconf/pncconf.glade:61713 -#: src/emc/usr_intf/pncconf/pncconf.glade:62806 -#: src/emc/usr_intf/pncconf/pncconf.glade:63899 -#: src/emc/usr_intf/pncconf/pncconf.glade:65066 -msgid "" -"±\n" -"+\n" -"-\n" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:79 -msgid "" -"PNCconf encountered an error. The following information may be useful in " -"troubleshooting:\n" -"\n" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:149 -msgid "Not Used" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:149 -#: src/emc/usr_intf/pncconf/pncconf.py:150 -msgid "Dummy" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:150 -msgid "8i20 Servo Drive" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:151 -msgid "POT Output" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:151 -msgid "POT Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:151 -msgid "POT Direction" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:152 -msgid "GPIO Input" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:152 -msgid "GPIO Output" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:152 -msgid "GPIO O Drain" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-A" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-B" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-I" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-M" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "Muxed Encoder 0" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "Muxed Encoder 1" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "muxed enc" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "mux enc mask" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "mux select" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:155 -msgid "Resolver 0 Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:155 -msgid "Resolver 1 Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:155 -msgid "Resolver 2 Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:156 -msgid "Resolver 3 Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:156 -msgid "Resolver 4 Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:378 +msgid "Unused Output" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:156 -msgid "Resolver 5 Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:378 +#, fuzzy +msgid "Coolant" +msgstr "命令:" + +#: src/emc/usr_intf/pncconf/pncconf.py:379 +msgid "Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -msgid "Step Gen-A" +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +msgid "Digital" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -msgid "Dir Gen-B" +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:410 +msgid "X BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -msgid "Step/Dir Gen-C" +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 +msgid "Y BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -msgid "Step/Dir Gen-D" +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 +msgid "Z BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:158 -msgid "Step/Dir Gen-E" +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 +msgid "A BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:158 -msgid "Step/dir Gen-F" +#: src/emc/usr_intf/pncconf/pncconf.py:381 +msgid " S BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 -msgid "Pulse Width Gen-P" +#: src/emc/usr_intf/pncconf/pncconf.py:381 +#: src/emc/usr_intf/pncconf/pncconf.py:412 +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#: src/emc/usr_intf/pncconf/pncconf.py:516 +#: src/emc/usr_intf/pncconf/pncconf.py:519 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.py:528 +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#: src/emc/usr_intf/pncconf/pncconf.py:568 +#: src/emc/usr_intf/pncconf/pncconf.py:580 +#, fuzzy +msgid "Custom Signals" +msgstr "自動" + +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 +msgid "X Minimum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 -msgid "Pulse Width Gen-D" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 +msgid "Y Minimum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 -msgid "Pulse Width Gen-E" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 +msgid "Z Minimum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 -msgid "Pulse Density Gen-P" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 +msgid "A Minimum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 -msgid "Pulse Density Gen-D" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 +msgid "X Maximum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 -msgid "Pulse Density Gen-E" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 +msgid "Y Maximum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 -msgid "Up/Down Mode -Up" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 +msgid "Z Maximum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 -msgid "Up/Down Mode-Down" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 +msgid "A Maximum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 -msgid "Up/Down Mode-Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 +msgid "X Both Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 -msgid "Motor Phase A" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 +msgid "Y Both Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 -msgid "Motor Phase B" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 +msgid "Z Both Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 -msgid "Motor Phase C" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 +msgid "A Both Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Phase A Not" +#: src/emc/usr_intf/pncconf/pncconf.py:386 +#: src/emc/usr_intf/pncconf/pncconf.py:477 +#, fuzzy +msgid "All Limits" +msgstr "全部のファイル" + +#: src/emc/usr_intf/pncconf/pncconf.py:387 +#, fuzzy +msgid "X Home" +msgstr "原点" + +#: src/emc/usr_intf/pncconf/pncconf.py:387 +#, fuzzy +msgid "Y Home" +msgstr "原点" + +#: src/emc/usr_intf/pncconf/pncconf.py:387 +#, fuzzy +msgid "Z Home" +msgstr "原点" + +#: src/emc/usr_intf/pncconf/pncconf.py:387 +#, fuzzy +msgid "A Home" +msgstr "原点" + +#: src/emc/usr_intf/pncconf/pncconf.py:387 +#, fuzzy +msgid "All Home" +msgstr "原点" + +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 +msgid "X Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Phase B Not" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 +msgid "Y Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Phase C Not" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 +msgid "Z Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 +msgid "A Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Fault" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 +msgid "X Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:165 -msgid "SMARTSERIAL-P0-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 +msgid "Y Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P0-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 +msgid "Z Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P0-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 +msgid "A Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 +msgid "X Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 +msgid "Y Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 +msgid "Z Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 +msgid "A Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:392 +msgid "Joint select A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:392 +msgid "Joint select B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:392 +msgid "Joint select C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:392 +msgid "Joint select D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-TX" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +#, fuzzy +msgid "Feed Override incr A" +msgstr "フィード手直し:" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-RX" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +#, fuzzy +msgid "Feed Override incr B" +msgstr "フィード手直し:" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-EN" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:394 +#, fuzzy +msgid "Feed Override incr C" +msgstr "フィード手直し:" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-TX" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:394 +#, fuzzy +msgid "Feed Override incr D" +msgstr "フィード手直し:" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-RX" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:394 +#, fuzzy +msgid "Spindle Override incr A" +msgstr "フィード手直して" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-EN" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:394 +#, fuzzy +msgid "Spindle Override incr B" +msgstr "フィード手直して" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-TX" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:395 +#, fuzzy +msgid "Spindle Override incr C" +msgstr "フィード手直して" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-RX" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:395 +#, fuzzy +msgid "Spindle Override incr D" +msgstr "フィード手直して" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:395 +msgid "Max Vel Override incr A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #1" +#: src/emc/usr_intf/pncconf/pncconf.py:395 +msgid "Max Vel Override incr B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #2" +#: src/emc/usr_intf/pncconf/pncconf.py:396 +msgid "Max Vel Override incr C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:420 -msgid "Unused Unused" +#: src/emc/usr_intf/pncconf/pncconf.py:396 +msgid "Max Vel Override incr D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/pncconf/pncconf.py:396 #, fuzzy -msgid "Machine Is Enabled" -msgstr "出来るように" +msgid "Feed Override enable" +msgstr "フィード手直し:" -#: src/emc/usr_intf/pncconf/pncconf.py:442 -msgid "X Amplifier Enable" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:396 +#, fuzzy +msgid "Spindle Override enable" +msgstr "フィード手直して" -#: src/emc/usr_intf/pncconf/pncconf.py:442 -msgid "Y Amplifier Enable" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:397 +#, fuzzy +msgid "Max Vel Override enable" +msgstr "フィード手直し:" -#: src/emc/usr_intf/pncconf/pncconf.py:442 -msgid "Z Amplifier Enable" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +#, fuzzy +msgid "Manual Spindle CW" +msgstr "スピンドル消した" -#: src/emc/usr_intf/pncconf/pncconf.py:443 -msgid "A Amplifier Enable" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +#, fuzzy +msgid "Manual Spindle CCW" +msgstr "スピンドル消した" -#: src/emc/usr_intf/pncconf/pncconf.py:443 -msgid "Force Pin True" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +#, fuzzy +msgid "Manual Spindle Stop" +msgstr "スピンドル前進" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X HALL 1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +#, fuzzy +msgid "Spindle Up-To-Speed" +msgstr "スピンドル前進" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:399 +msgid "Cycle Start" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:399 +msgid "Abort" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:399 +#, fuzzy +msgid "Single Step" +msgstr "インチ" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 +msgid "Jog X +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 +msgid "Jog X -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 +msgid "Jog Y +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 +msgid "Jog Y -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 +msgid "Jog Z +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 +msgid "Jog Z -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 +msgid "Jog A +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 +msgid "Jog A -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:407 +msgid "Jog button selected +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:407 +msgid "Jog button selected -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Unused Input" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z HALL 2" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:408 +#, fuzzy +msgid "Limits" +msgstr "全部のファイル" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Limts/Home Shared" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:409 +#, fuzzy +msgid "Overrides" +msgstr "方図を聞き捨てる" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:410 +msgid "Operation" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C4" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:410 +#, fuzzy +msgid "External Control" +msgstr "手動" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C8" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:410 +#, fuzzy +msgid "Axis rapid" +msgstr "軸の平行移動" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:412 +msgid "S BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:487 +msgid "Unused PWM Gen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A HALL 3" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:487 +#, fuzzy +msgid "X Axis PWM" +msgstr "軸の平行移動" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:487 +#, fuzzy +msgid "Y Axis PWM" +msgstr "軸の平行移動" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C2" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#, fuzzy +msgid "Z Axis PWM" +msgstr "軸の平行移動" + +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#, fuzzy +msgid "A Axis PWM" +msgstr "軸の平行移動" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +msgid "X Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +msgid "Y Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +msgid "Z Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +msgid "A Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S HALL 3" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +#, fuzzy +msgid "Spindle Encoder" +msgstr "スピンドル逆" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "X Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "Y Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "Z Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "A Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:450 -msgid "Unused Output" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "Multi Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:450 -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#: src/emc/usr_intf/pncconf/pncconf.py:593 +#: src/emc/usr_intf/pncconf/pncconf.py:514 #, fuzzy -msgid "Spindle" -msgstr "スピンドル消した" +msgid "Feed Override" +msgstr "フィード手直し:" -#: src/emc/usr_intf/pncconf/pncconf.py:450 +#: src/emc/usr_intf/pncconf/pncconf.py:514 #, fuzzy -msgid "Coolant" -msgstr "命令:" +msgid "spindle Override" +msgstr "フィード手直して" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -msgid "Control" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:514 +#, fuzzy +msgid "Max Vel Override" +msgstr "フィード手直し:" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:480 -msgid "Digital" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "Unused Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:481 -msgid "X BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "Axis Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 -msgid "Y BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "MPG Jog Controls" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 -msgid "Z BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "Override MPG control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 -msgid "A BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "Unused Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:453 -msgid " S BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "X Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:453 -#: src/emc/usr_intf/pncconf/pncconf.py:483 -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#: src/emc/usr_intf/pncconf/pncconf.py:585 -#: src/emc/usr_intf/pncconf/pncconf.py:588 -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.py:597 -#: src/emc/usr_intf/pncconf/pncconf.py:614 -#: src/emc/usr_intf/pncconf/pncconf.py:629 -#, fuzzy -msgid "Custom Signals" -msgstr "自動" - -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 -msgid "X Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "Y Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 -msgid "Y Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "Z Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 -msgid "Z Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:519 +msgid "A Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 -msgid "A Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:519 +msgid "S Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 -msgid "X Maximum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +msgid "Unused 8I20" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 -msgid "Y Maximum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "X Axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 -msgid "Z Maximum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Y Axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 -msgid "A Maximum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Z Axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 -msgid "X Both Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "A Axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 -msgid "Y Both Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:528 +msgid "Unused Analog Output" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 -msgid "Z Both Limit" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:528 +#, fuzzy +msgid "Spindle Output" +msgstr "スピンドル消した" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 -msgid "A Both Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:551 +msgid "Unused StepGen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:458 -#: src/emc/usr_intf/pncconf/pncconf.py:546 +#: src/emc/usr_intf/pncconf/pncconf.py:551 #, fuzzy -msgid "All Limits" -msgstr "全部のファイル" +msgid "X Axis StepGen" +msgstr "徐徐に" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:551 #, fuzzy -msgid "X Home" -msgstr "原点" +msgid "Y Axis StepGen" +msgstr "徐徐に" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:551 #, fuzzy -msgid "Y Home" -msgstr "原点" +msgid "Z Axis StepGen" +msgstr "徐徐に" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:552 #, fuzzy -msgid "Z Home" -msgstr "原点" +msgid "A Axis StepGen" +msgstr "徐徐に" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:552 #, fuzzy -msgid "A Home" -msgstr "原点" +msgid "Spindle StepGen" +msgstr "スピンドル前進" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:552 #, fuzzy -msgid "All Home" -msgstr "原点" - -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 -msgid "X Minimum Limit + Home" -msgstr "" +msgid "X2 Tandem StepGen" +msgstr "スピンドル前進" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 -msgid "Y Minimum Limit + Home" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:552 +#, fuzzy +msgid "Y2 Tandem StepGen" +msgstr "スピンドル前進" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 -msgid "Z Minimum Limit + Home" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#, fuzzy +msgid "Z2 Tandem StepGen" +msgstr "スピンドル前進" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 -msgid "A Minimum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:553 +msgid "Charge Pump StepGen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 -msgid "X Maximum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:567 +msgid "Unused TPPWM Gen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 -msgid "Y Maximum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:567 +msgid "X Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 -msgid "Z Maximum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:567 +msgid "Y Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 -msgid "A Maximum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:568 +msgid "Z Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 -msgid "X Both Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:568 +msgid "A Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 -msgid "Y Both Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:568 +msgid "S Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 -msgid "Z Both Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +#: src/emc/usr_intf/pncconf/pncconf.py:6882 +msgid "Unused Channel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 -msgid "A Both Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +msgid "8i20 Amplifier Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -msgid "Joint select A" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +msgid "7i64 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -msgid "Joint select B" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +msgid "7i69 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -msgid "Joint select C" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i70 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -msgid "Joint select D" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i71 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr A" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i76 Mode 0 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr B" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i77 Mode 0 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr C" +#: src/emc/usr_intf/pncconf/pncconf.py:578 +msgid "7i73 Mode 1 Pendant Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr D" +#: src/emc/usr_intf/pncconf/pncconf.py:580 +msgid "Unused Analog In" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -#, fuzzy -msgid "Feed Override incr A" -msgstr "フィード手直し:" - -#: src/emc/usr_intf/pncconf/pncconf.py:465 -#, fuzzy -msgid "Feed Override incr B" -msgstr "フィード手直し:" - -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#, fuzzy -msgid "Feed Override incr C" -msgstr "フィード手直し:" - -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#, fuzzy -msgid "Feed Override incr D" -msgstr "フィード手直し:" - -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#, fuzzy -msgid "Spindle Override incr A" -msgstr "フィード手直して" - -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#, fuzzy -msgid "Spindle Override incr B" -msgstr "フィード手直して" - -#: src/emc/usr_intf/pncconf/pncconf.py:467 -#, fuzzy -msgid "Spindle Override incr C" -msgstr "フィード手直して" - -#: src/emc/usr_intf/pncconf/pncconf.py:467 +#: src/emc/usr_intf/pncconf/pncconf.py:676 #, fuzzy -msgid "Spindle Override incr D" -msgstr "フィード手直して" +msgid "my_LinuxCNC_machine" +msgstr "マッシン" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -msgid "Max Vel Override incr A" +#: src/emc/usr_intf/pncconf/pncconf.py:939 +#: src/emc/usr_intf/pncconf/pncconf.py:941 +msgid "Enter Address" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -msgid "Max Vel Override incr B" +#: src/emc/usr_intf/pncconf/pncconf.py:1290 +msgid "" +"This configuration was saved with an earlier version of pncconf which may be " +"incompatible.\n" +"If it doesn't plainly cause an error, you still may want to save it with " +"another name and check it. Safer to start from scratch.\n" +"If you have a REALLY large config that you wish to convert to this newer " +"version of PNConf - ask on the LinuxCNC forum - it may be possible.." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:468 -msgid "Max Vel Override incr C" +#: src/emc/usr_intf/pncconf/pncconf.py:1296 +#, python-format +msgid "File %r was modified since it was written by PNCconf" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:468 -msgid "Max Vel Override incr D" +#: src/emc/usr_intf/pncconf/pncconf.py:1300 +msgid "" +"Saving this configuration file will discard configuration changes made " +"outside PNCconf." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#, fuzzy -msgid "Manual Spindle CW" -msgstr "スピンドル消した" +#: src/emc/usr_intf/pncconf/pncconf.py:1327 +#: src/emc/usr_intf/pncconf/pncconf.py:2421 +#, python-format +msgid "# Generated by PNCconf at %s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#, fuzzy -msgid "Manual Spindle CCW" -msgstr "スピンドル消した" +#: src/emc/usr_intf/pncconf/pncconf.py:1329 +#: src/emc/usr_intf/pncconf/pncconf.py:2423 +msgid "# overwritten when you run PNCconf again" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#, fuzzy -msgid "Manual Spindle Stop" -msgstr "スピンドル前進" +#: src/emc/usr_intf/pncconf/pncconf.py:2134 +msgid "# Use ACTUAL spindle velocity from spindle encoder" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#, fuzzy -msgid "Spindle Up-To-Speed" -msgstr "スピンドル前進" +#: src/emc/usr_intf/pncconf/pncconf.py:2135 +msgid "# spindle-velocity bounces around so we filter it with lowpass" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:470 -msgid "Cycle Start" +#: src/emc/usr_intf/pncconf/pncconf.py:2136 +msgid "" +"# spindle-velocity is signed so we use absolute component to remove sign" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:470 -msgid "Abort" +#: src/emc/usr_intf/pncconf/pncconf.py:2137 +msgid "# ACTUAL velocity is in RPS not RPM so we scale it." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:470 -#, fuzzy -msgid "Single Step" -msgstr "インチ" +#: src/emc/usr_intf/pncconf/pncconf.py:2821 +msgid "# connect miscellaneous signals" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 -msgid "Jog X +" +#: src/emc/usr_intf/pncconf/pncconf.py:2824 +msgid "# ---HALUI signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 -msgid "Jog X -" +#: src/emc/usr_intf/pncconf/pncconf.py:2843 +msgid "# ---charge pump signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 -msgid "Jog Y +" +#: src/emc/usr_intf/pncconf/pncconf.py:2847 +msgid "# ---coolant signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 -msgid "Jog Y -" +#: src/emc/usr_intf/pncconf/pncconf.py:2852 +msgid "# ---probe signal---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 -msgid "Jog Z +" +#: src/emc/usr_intf/pncconf/pncconf.py:2857 +msgid "# ---jog button signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 -msgid "Jog Z -" +#: src/emc/usr_intf/pncconf/pncconf.py:2862 +msgid "# ---USB device jog button signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 -msgid "Jog A +" +#: src/emc/usr_intf/pncconf/pncconf.py:2903 +#: src/emc/usr_intf/pncconf/pncconf.py:2929 +msgid "# ---mpg signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 -msgid "Jog A -" +#: src/emc/usr_intf/pncconf/pncconf.py:3111 +msgid "# ---motion control signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:478 -msgid "Jog button selected +" +#: src/emc/usr_intf/pncconf/pncconf.py:3116 +msgid "# ---digital in / out signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:478 -msgid "Jog button selected -" +#: src/emc/usr_intf/pncconf/pncconf.py:3126 +msgid "# ---estop signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:479 -msgid "Unused Input" +#: src/emc/usr_intf/pncconf/pncconf.py:3145 +msgid "# ---manual tool change signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:479 -#, fuzzy -msgid "Limits" -msgstr "全部のファイル" +#: src/emc/usr_intf/pncconf/pncconf.py:3154 +msgid "# ---toolchange signals for custom tool changer---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:479 -msgid "Limts/Home Shared" +#: src/emc/usr_intf/pncconf/pncconf.py:3176 +msgid "# --- Classicladder signals for Z axis Auto touch off program---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:480 -msgid "Axis Selection" +#: src/emc/usr_intf/pncconf/pncconf.py:3195 +msgid "# These files are loaded post gladeVCP, in the order they appear" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#, fuzzy -msgid "Overrides" -msgstr "方図を聞き捨てる" +#: src/emc/usr_intf/pncconf/pncconf.py:3209 +#: src/emc/usr_intf/pncconf/pncconf.py:3276 +msgid "# _DO NOT_ include your HAL commands here." +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:481 -msgid "Operation" +#: src/emc/usr_intf/pncconf/pncconf.py:3210 +msgid "# Put custom HAL commands in custom_gvcp.hal" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:481 -#, fuzzy -msgid "External Control" -msgstr "手動" +#: src/emc/usr_intf/pncconf/pncconf.py:3213 +msgid "# **** Setup of spindle speed display using gladevcp ****" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:481 -#, fuzzy -msgid "Axis rapid" -msgstr "軸の平行移動" +#: src/emc/usr_intf/pncconf/pncconf.py:3222 +msgid "# **** Setup GLADE MDI buttons ****" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:483 -msgid "S BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:3235 +msgid "" +"# **** Z axis touch-off button - requires the touch-off classicladder " +"program ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:556 -msgid "Unused PWM Gen" +#: src/emc/usr_intf/pncconf/pncconf.py:3265 +msgid "# These files are loaded post GUI, in the order they appear" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:556 -#, fuzzy -msgid "X Axis PWM" -msgstr "軸の平行移動" +#: src/emc/usr_intf/pncconf/pncconf.py:3277 +msgid "# Put custom HAL commands in custom_postgui.hal" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:556 -#, fuzzy -msgid "Y Axis PWM" -msgstr "軸の平行移動" +#: src/emc/usr_intf/pncconf/pncconf.py:3278 +msgid "# The commands in this file are run after the GUI loads" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#, fuzzy -msgid "Z Axis PWM" -msgstr "軸の平行移動" +#: src/emc/usr_intf/pncconf/pncconf.py:3288 +msgid "# **** Setup of spindle speed display using pyvcp -END ****" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#, fuzzy -msgid "A Axis PWM" -msgstr "軸の平行移動" +#: src/emc/usr_intf/pncconf/pncconf.py:3300 +msgid "# This file will not be overwritten when you run PNCconf again" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -msgid "X Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:3306 +msgid "# These commands are required for Touchy GUI" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -msgid "Y Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:3358 +#, python-format +msgid "Generated by PNCconf at %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -msgid "Z Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:3370 +msgid "configures LinuxCNC as:\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -msgid "A Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:3371 +msgid "type CNC\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -#, fuzzy -msgid "Spindle Encoder" -msgstr "スピンドル逆" +#: src/emc/usr_intf/pncconf/pncconf.py:3372 +msgid "will be used as the frontend display" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "X Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:3381 +msgid " connector" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "Y Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:3393 +msgid "invrt" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "Z Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:3402 +#, python-format +msgid "%(name)s Parport" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "A Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:3407 +#: src/emc/usr_intf/pncconf/pncconf.py:3415 +msgid "-> inverted" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "Multi Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:3409 +#, python-format +msgid "pin# %(pinnum)d is connected to input signal:'%(data)s' %(mesag)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:583 -#, fuzzy -msgid "Feed Override" -msgstr "フィード手直し:" +#: src/emc/usr_intf/pncconf/pncconf.py:3417 +#, python-format +msgid "pin# %(pinnum)d is connected to output signal:'%(data)s' %(mesag)s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:583 -#, fuzzy -msgid "spindle Override" -msgstr "フィード手直して" +#: src/emc/usr_intf/pncconf/pncconf.py:3595 +msgid "Desktop Launcher for LinuxCNC config made by PNCconf" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:3856 +#, python-format +msgid "%s Axis Configuration" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:583 +#: src/emc/usr_intf/pncconf/pncconf.py:3881 #, fuzzy -msgid "Max Vel Override" -msgstr "フィード手直し:" +msgid "Spindle Motor/Encoder Configuration" +msgstr "スピンドル消した" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "Unused Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:3883 +#, python-format +msgid "%s Axis Motor/Encoder Configuration" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "Axis Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:3912 +#, python-format +msgid "%s Parallel Port Setup" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "MPG Jog Controls" +#: src/emc/usr_intf/pncconf/pncconf.py:3936 +#, python-format +msgid "%s I/0 Setup" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "Override MPG control" +#: src/emc/usr_intf/pncconf/pncconf.py:4162 +msgid "Quit PNCconfig and discard changes?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "Unused Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:4203 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Help Pages" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "X Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:4208 +msgid "Help page is unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "Y Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:4218 +msgid "" +"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " +"of external hardware is unavailable." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "Z Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:4223 +#, python-format +msgid "" +"You are using a realtime version of LinuxCNC but didn't load a realtime " +"kernel so testing / tuning of external hardware is unavailable.\n" +" This is probably because you updated the OS and it doesn't load the RTAI " +"kernel anymore\n" +" You are using the %(actual)s kernel instead of %(needed)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:588 -msgid "A Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:4256 +msgid "LinuxCNC 'PNCconf' configuration files" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:588 -msgid "S Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:4286 +msgid "" +"It seems data in this file is from too old of a version of PNCConf to " +"continue.\n" +"." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -msgid "Unused 8I20" +#: src/emc/usr_intf/pncconf/pncconf.py:4293 +#: src/emc/usr_intf/pncconf/pncconf.py:4391 +#, python-format +msgid "Point and click configuration - %s.pncconf " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:61457 -msgid "X Axis" +#: src/emc/usr_intf/pncconf/pncconf.py:4413 +msgid "" +"You need to designate a parport and/or mesa I/O device before continuing." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:62549 -msgid "Y Axis" +#: src/emc/usr_intf/pncconf/pncconf.py:4481 +msgid "" +"You Have choosen to re-edit the current config, so you can not go to the new/" +"modify page.\n" +" Quit and reload PNCconf if you wish to build a new config." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:63642 -msgid "Z Axis" +#: src/emc/usr_intf/pncconf/pncconf.py:4485 +msgid "" +"If you can not go to the new/modify page your current data will be lost.\n" +"Ok to reset data and start a new configuration?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.glade:64735 -msgid "A Axis" +#: src/emc/usr_intf/pncconf/pncconf.py:4811 +msgid "USB device Info Search" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:597 -msgid "Unused Analog Output" +#: src/emc/usr_intf/pncconf/pncconf.py:4825 +msgid "USB device page is unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:597 -#, fuzzy -msgid "Spindle Output" -msgstr "スピンドル消した" - -#: src/emc/usr_intf/pncconf/pncconf.py:613 -msgid "Unused StepGen" +#: src/emc/usr_intf/pncconf/pncconf.py:4890 +msgid "Pin names are unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:613 -#, fuzzy -msgid "X Axis StepGen" -msgstr "徐徐に" - -#: src/emc/usr_intf/pncconf/pncconf.py:613 -#, fuzzy -msgid "Y Axis StepGen" -msgstr "徐徐に" +#: src/emc/usr_intf/pncconf/pncconf.py:4912 +msgid "Device names are unavailable\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:613 -#, fuzzy -msgid "Z Axis StepGen" -msgstr "徐徐に" +#: src/emc/usr_intf/pncconf/pncconf.py:4915 +msgid "No Pncconf made device rules were found\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:614 -#, fuzzy -msgid "A Axis StepGen" -msgstr "徐徐に" +#: src/emc/usr_intf/pncconf/pncconf.py:5041 +msgid "" +"OK to replace existing glade panel ?\n" +"It will be renamed and added to 'backups' folder.\n" +" Clicking 'existing custom program' will avoid this warning, but if you " +"change related options later -such as spindle feedback- the HAL connection " +"will not update" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:614 -#, fuzzy -msgid "Spindle StepGen" -msgstr "スピンドル前進" +#: src/emc/usr_intf/pncconf/pncconf.py:5047 +msgid "" +"OK to replace existing custom pyvcp panel?\n" +"Existing pyvcp-panel.xml will be renamed and added to 'backups' folder\n" +"Clicking 'existing custom program' will aviod this warning. " +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:628 -msgid "Unused TPPWM Gen" +#: src/emc/usr_intf/pncconf/pncconf.py:5493 +msgid "" +"You need to configure the mesa0 page.\n" +" Choose the board type, firmware, component amounts and press 'Accept " +"component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:628 -msgid "X Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:5497 +msgid "" +"The chosen Mesa0 board is different from the current displayed.\n" +"please press 'Accept component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:628 -msgid "Y Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:5540 +msgid "" +"You need to configure the mesa1 page.\n" +" Choose the board type, firmware, component amounts and press 'Accept " +"component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "Z Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:5544 +msgid "" +"The chosen Mesa1 board is different from the current displayed.\n" +"please press 'Accept component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "A Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:5558 +msgid "" +"Do to technical reasons this test panel can be loaded only once without " +"reloading pncconf.You also will not be able to do any other testing untill " +"you reload pncconf and quite possibly open a terminal and type 'halrun -U' I " +"hesitate to even allow it's use but at times it's very useful.\n" +"Do you wish to continue the test?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "S Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:7042 +msgid "First Parallel Port set for OUTPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -#: src/emc/usr_intf/pncconf/pncconf.py:6557 -msgid "Unused Channel" +#: src/emc/usr_intf/pncconf/pncconf.py:7044 +msgid "First Parallel Port set for INPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -msgid "8i20 Amplifier Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7068 +msgid "Second Parallel Port set for OUTPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -msgid "7i64 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7070 +msgid "Second Parallel Port set for INPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -msgid "7i69 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7082 +msgid "Third Parallel Port set for OUTPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 -msgid "7i70 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7084 +msgid "Third Parallel Port set for INPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 -msgid "7i71 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7210 +msgid "You can not have both steppers and pwm signals for spindle control\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 -msgid "7i76 Mode 0 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7214 +#, python-format +msgid "You forgot to designate a stepper or pwm signal for axis %s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:722 -#, fuzzy -msgid "my_LinuxCNC_machine" -msgstr "マッシン" - -#: src/emc/usr_intf/pncconf/pncconf.py:1328 -msgid "" -"This configuration was saved with an earlier version of pncconf which may be " -"incompatible.\n" -"If it doesn't plainly cause an error, you still may want to save it with " -"another name and check it. Safer to start from scratch.\n" -"If you have a REALLY large config that you wish to convert to this newer " -"version of PNConf - ask on the LinuxCNC forum - it may be possible.." +#: src/emc/usr_intf/pncconf/pncconf.py:7217 +#, python-format +msgid "You forgot to designate an encoder /resolver signal for axis %s servo\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1334 +#: src/emc/usr_intf/pncconf/pncconf.py:7220 #, python-format -msgid "File %r was modified since it was written by PNCconf" +msgid "You forgot to designate a pwm signal or stepper signal for axis %s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1338 -msgid "" -"Saving this configuration file will discard configuration changes made " -"outside PNCconf." +#: src/emc/usr_intf/pncconf/pncconf.py:7223 +#, python-format +msgid "You can not have both steppers and pwm signals for axis %s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1365 -#: src/emc/usr_intf/pncconf/pncconf.py:2368 +#: src/emc/usr_intf/pncconf/pncconf.py:7226 #, python-format -msgid "# Generated by PNCconf at %s" +msgid "" +"If using a tandem axis stepper, you must select a master stepgen for axis " +"%s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1367 -#: src/emc/usr_intf/pncconf/pncconf.py:2370 -msgid "# overwritten when you run PNCconf again" +#: src/emc/usr_intf/pncconf/pncconf.py:7235 +msgid "Touchy require an external cycle start signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2070 -msgid "# Use ACTUAL spindle velocity from spindle encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:7238 +msgid "Touchy require an external abort signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2071 -msgid "# spindle-velocity bounces around so we filter it with lowpass" +#: src/emc/usr_intf/pncconf/pncconf.py:7241 +msgid "Touchy require an external single-step signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2072 +#: src/emc/usr_intf/pncconf/pncconf.py:7244 msgid "" -"# spindle-velocity is signed so we use absolute component to remove sign" +"Touchy require an external multi handwheel MPG encoder signal on the mesa " +"page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2073 -msgid "# ACTUAL velocity is in RPS not RPM so we scale it." +#: src/emc/usr_intf/pncconf/pncconf.py:7247 +msgid "" +"Touchy require 'external mpg jogging' to be selected on the external control " +"page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2082 +#: src/emc/usr_intf/pncconf/pncconf.py:7250 msgid "" -"# Use COMMANDED spindle velocity from LinuxCNC because no spindle encoder " -"was specified" +"Touchy require the external mpg to be in 'shared mpg' mode on the external " +"controls page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2083 +#: src/emc/usr_intf/pncconf/pncconf.py:7253 msgid "" -"# COMMANDED velocity is signed so we use absolute component to remove sign" +"Touchy require selectable increments to be unchecked on the external " +"controls page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2727 -msgid "# connect miscellaneous signals" +#: src/emc/usr_intf/pncconf/pncconf.py:7257 +msgid "" +"The 7i29 daughter board requires PWM type generators and a PWM base " +"frequency of 20 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2730 -msgid "# ---HALUI signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7260 +msgid "" +"The 7i30 daughter board requires PWM type generators and a PWM base " +"frequency of 20 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2749 -msgid "# ---charge pump signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7263 +msgid "" +"The 7i33 daughter board requires PDM type generators and a PDM base " +"frequency of 6 Mhz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2753 -msgid "# ---coolant signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7266 +msgid "" +"The 7i40 daughter board requires PWM type generators and a PWM base " +"frequency of 50 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2758 -msgid "# ---probe signal---" +#: src/emc/usr_intf/pncconf/pncconf.py:7269 +msgid "" +"The 7i48 daughter board requires UDM type generators and a PWM base " +"frequency of 24 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2763 -msgid "# ---jog button signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7494 +msgid "Gearbox Reduction Ratio" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2768 -msgid "# ---USB device jog button signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7497 +msgid "Reduction Ratio" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2803 -#: src/emc/usr_intf/pncconf/pncconf.py:2825 -msgid "# ---mpg signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7500 +msgid "Leadscrew Pitch" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2971 -msgid "# ---motion control signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7503 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Leadscrew TPI" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2976 -msgid "# ---digital in / out signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7507 +#: src/emc/usr_intf/pncconf/pncconf.py:7508 +msgid "(" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2986 -msgid "# ---estop signals---" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:7509 +#: src/emc/usr_intf/pncconf/pncconf.py:7519 +#: src/emc/usr_intf/pncconf/pncconf.py:7520 +#: src/emc/usr_intf/pncconf/pncconf.py:7521 +#, fuzzy +msgid " / min" +msgstr "インチ" -#: src/emc/usr_intf/pncconf/pncconf.py:3005 -msgid "# ---manual tool change signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7510 +msgid " / sec²" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3014 -msgid "# ---toolchange signals for custom tool changer---" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:7513 +#, fuzzy +msgid " / Step" +msgstr "徐徐に" -#: src/emc/usr_intf/pncconf/pncconf.py:3036 -msgid "# --- Classicladder signals for Z axis Auto touch off program---" +#: src/emc/usr_intf/pncconf/pncconf.py:7514 +#, fuzzy +msgid "Steps / " +msgstr "徐徐に" + +#: src/emc/usr_intf/pncconf/pncconf.py:7516 +msgid " / encoder pulse" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3055 -msgid "# These files are loaded post gladeVCP, in the order they appear" +#: src/emc/usr_intf/pncconf/pncconf.py:7517 +msgid "Encoder pulses / " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3069 -#: src/emc/usr_intf/pncconf/pncconf.py:3136 -msgid "# _DO NOT_ include your HAL commands here." +#: src/emc/usr_intf/pncconf/pncconf.py:7525 +msgid "Resolver Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3070 -msgid "# Put custom HAL commands in custom_gvcp.hal" +#: src/emc/usr_intf/pncconf/pncconf.py:7826 +msgid "Axis Scale Calculation" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3073 -msgid "# **** Setup of spindle speed display using gladevcp ****" +#: src/emc/usr_intf/pncconf/pncconf.py:8133 +msgid "You need to designate an E-stop input pin for this ladder program." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3082 -msgid "# **** Setup GLADE MDI buttons ****" +#: src/emc/usr_intf/pncconf/pncconf.py:8145 +msgid "You need to designate a probe input pin for this ladder program." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3095 +#: src/emc/usr_intf/pncconf/pncconf.py:8156 msgid "" -"# **** Z axis touch-off button - requires the touch-off classicladder " -"program ****" +"OK to replace existing custom ladder program?\n" +"Existing Custom.clp will be renamed custom_backup.clp.\n" +"Any existing file named -custom_backup.clp- will be lost.Selecting 'existing " +"ladder program' will avoid this warning" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3125 -msgid "# These files are loaded post GUI, in the order they appear" +#: src/emc/usr_intf/pncconf/pncconf.py:8374 +msgid "Do you wish to continue to edit this configuration." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3137 -msgid "# Put custom HAL commands in custom_postgui.hal" +#: src/emc/usr_intf/pncconf/pncconf.py:8413 +msgid "PCI search page is unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3138 -msgid "# The commands in this file are run after the GUI loads" +#: src/emc/usr_intf/pncconf/pncconf.py:8532 +msgid "" +"You specified there is an existing gladefile, But there is not one in the " +"machine-named folder.." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3148 -msgid "# **** Setup of spindle speed display using pyvcp -END ****" +#: src/emc/usr_intf/pncconf/pncconf.py:8856 +msgid "Servo tuning is not avaiable in PNCconf yet\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3160 -msgid "# This file will not be overwritten when you run PNCconf again" +#: src/emc/usr_intf/pncconf/pncconf.py:8861 +msgid "degrees" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3166 -msgid "# These commands are required for Touchy GUI" +#: src/emc/usr_intf/pncconf/pncconf.py:8862 +msgid "degrees / minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3218 -#, python-format -msgid "Generated by PNCconf at %s" +#: src/emc/usr_intf/pncconf/pncconf.py:8863 +msgid "degrees / second²" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3230 -msgid "configures LinuxCNC as:\n" +#: src/emc/usr_intf/pncconf/pncconf.py:8865 +msgid "revolutions" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3231 -msgid "type CNC\n" +#: src/emc/usr_intf/pncconf/pncconf.py:8866 +msgid "rpm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3232 -msgid "will be used as the frontend display" +#: src/emc/usr_intf/pncconf/pncconf.py:8867 +msgid "revs / second²" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3241 -msgid " connector" +#: src/emc/usr_intf/pncconf/pncconf.py:8870 +#: src/emc/usr_intf/pncconf/pncconf.glade:65184 +#: src/emc/usr_intf/pncconf/pncconf.glade:65281 +#: src/emc/usr_intf/pncconf/pncconf.glade:65465 +msgid "mm / minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3253 -msgid "invrt" +#: src/emc/usr_intf/pncconf/pncconf.py:8871 +msgid "mm / second²" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3262 -#, python-format -msgid "%(name)s Parport" +#: src/emc/usr_intf/pncconf/pncconf.py:8874 +msgid "inches / minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3267 -#: src/emc/usr_intf/pncconf/pncconf.py:3275 -msgid "-> inverted" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:8875 +#, fuzzy +msgid "inches / second²" +msgstr "インチ" -#: src/emc/usr_intf/pncconf/pncconf.py:3269 +#: src/emc/usr_intf/pncconf/pncconf.py:9031 #, python-format -msgid "pin# %(pinnum)d is connected to input signal:'%(data)s' %(mesag)s" +msgid "%s Axis Tune" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3277 -#, python-format -msgid "pin# %(pinnum)d is connected to output signal:'%(data)s' %(mesag)s" +#: src/emc/usr_intf/pncconf/pncconf.py:9195 +msgid "" +" You must designate a ENCODER / RESOLVER signal and an ANALOG SPINDLE signal " +"for this axis test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3455 -msgid "Desktop Launcher for LinuxCNC config made by PNCconf" +#: src/emc/usr_intf/pncconf/pncconf.py:9199 +msgid "" +" You must designate a ENCODER / RESOLVER signal and a PWM signal for this " +"axis test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3725 +#: src/emc/usr_intf/pncconf/pncconf.glade:8 #, fuzzy -msgid "Spindle Motor/Encoder Configuration" +msgid "LinuxCNC Point And Click Configuration" msgstr "スピンドル消した" -#: src/emc/usr_intf/pncconf/pncconf.py:3727 -#, python-format -msgid "%s Axis Motor/Encoder Configuration" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.py:3756 -#, python-format -msgid "%s Parallel Port Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:23 +msgid "LinuxCNC Configuration Wizard Beta 1 Version" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3780 -#, python-format -msgid "%s I/0 Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:24 +msgid "" +"\tThis program creates configuration \n" +" files for \"Closed Loop Servo\" \n" +"\t \t and hardware stepper\n" +" \tmachines" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4001 -msgid "Quit PNCconfig and discard changes?" +#: src/emc/usr_intf/pncconf/pncconf.glade:34 +msgid "Create or Edit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4042 -#: src/emc/usr_intf/pncconf/pncconf.glade:65849 -msgid "Help Pages" +#: src/emc/usr_intf/pncconf/pncconf.glade:66 +msgid "Create a desktop launcher to start LinuxCNC with this configuration." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4047 -msgid "Help page is unavailable\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:83 +msgid "Create a desktop shortcut (symlink) to configuration files." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4054 -msgid "" -"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " -"of external hardware is unavailable." +#: src/emc/usr_intf/pncconf/pncconf.glade:148 +msgid "Create a new configuration" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4059 -#, python-format -msgid "" -"You are using a realtime version of LinuxCNC but didn't load a realtime " -"kernel so testing / tuning of external hardware is unavailable.\n" -" This is probably because you updated the OS and it doesn't load the RTAI " -"kernel anymore\n" -" You are using the %(actual)s kernel instead of %(needed)s" +#: src/emc/usr_intf/pncconf/pncconf.glade:175 +msgid "Basic machine information" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4079 -#, python-format -msgid "" -"You are have no hostmot2 firmware downloaded in folder:\n" -"%s\n" -"PNCconf will use sample firmware data\n" -"live testing will not be possible" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:214 +#, fuzzy +msgid "Machine Name:" +msgstr "出来るように" -#: src/emc/usr_intf/pncconf/pncconf.py:4093 -msgid "LinuxCNC 'PNCconf' configuration files" +#: src/emc/usr_intf/pncconf/pncconf.glade:280 +msgid "Axis configuration:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4123 +#: src/emc/usr_intf/pncconf/pncconf.glade:295 msgid "" -"It seems data in this file is from too old of a version of PNCConf to " -"continue.\n" -"." +"XYZ\n" +"XYZA\n" +"XZ (Lathe)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4130 -#: src/emc/usr_intf/pncconf/pncconf.py:4228 -#, python-format -msgid "Point and click configuration - %s.pncconf " -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:322 +#, fuzzy +msgid "Machine units:" +msgstr "出来るように" -#: src/emc/usr_intf/pncconf/pncconf.py:4250 +#: src/emc/usr_intf/pncconf/pncconf.glade:337 msgid "" -"You need to designate a parport and/or mesa I/O device before continuing." +"Inch\n" +"Millimeter" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4309 -msgid "" -"You Have choosen to re-edit the current config, so you can not go to the new/" -"modify page.\n" -" Quit and reload PNCconf if you wish to build a new config." +#: src/emc/usr_intf/pncconf/pncconf.glade:363 +msgid "Machine Basics" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4313 -msgid "" -"If you can not go to the new/modify page your current data will be lost.\n" -"Ok to reset data and start a new configuration?" +#: src/emc/usr_intf/pncconf/pncconf.glade:416 +msgid "Actual Servo Period: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4594 -msgid "USB device Info Search" +#: src/emc/usr_intf/pncconf/pncconf.glade:475 +msgid "Recommend servo period: 1000000" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4608 -msgid "USB device page is unavailable\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:494 +msgid "" +" Test Base\n" +"Period Jitter " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4673 -msgid "Pin names are unavailable\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:519 +msgid "Computer Response Time" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4695 -msgid "Device names are unavailable\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:561 +msgid "Mesa0 PCI / Parport Card:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4698 -msgid "No Pncconf made device rules were found\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:571 +msgid "Mesa1 PCI / Parport Card:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4822 -msgid "" -"OK to replace existing glade panel ?\n" -"It will be renamed and added to 'backups' folder.\n" -" Clicking 'existing custom program' will aviod this warning. " +#: src/emc/usr_intf/pncconf/pncconf.glade:584 +msgid "First Parport Address:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4827 -msgid "" -"OK to replace existing custom pyvcp panel?\n" -"Existing pyvcp-panel.xml will be renamed and added to 'backups' folder\n" -"Clicking 'existing custom program' will aviod this warning. " +#: src/emc/usr_intf/pncconf/pncconf.glade:597 +msgid "Second Parport Address:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5250 -msgid "" -"You need to configure the mesa0 page.\n" -" Choose the board type, firmware, component amounts and press 'Accept " -"component changes' button'" +#: src/emc/usr_intf/pncconf/pncconf.glade:612 +msgid "Third Parport Address:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5254 +#: src/emc/usr_intf/pncconf/pncconf.glade:635 +#: src/emc/usr_intf/pncconf/pncconf.glade:643 msgid "" -"The chosen Mesa0 board is different from the current displayed.\n" -"please press 'Accept component changes' button'" +"5i20\n" +"5i23\n" +"5i22" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5297 +#: src/emc/usr_intf/pncconf/pncconf.glade:716 +#: src/emc/usr_intf/pncconf/pncconf.glade:728 +#: src/emc/usr_intf/pncconf/pncconf.glade:741 msgid "" -"You need to configure the mesa1 page.\n" -" Choose the board type, firmware, component amounts and press 'Accept " -"component changes' button'" +"In\n" +"Out" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5301 +#: src/emc/usr_intf/pncconf/pncconf.glade:804 msgid "" -"The chosen Mesa1 board is different from the current displayed.\n" -"please press 'Accept component changes' button'" +"Add-on PCI\n" +" Parport\n" +" Address \n" +" Search" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5315 -msgid "" -"Do to technical reasons this test panel can be loaded only once without " -"reloading pncconf.You also will not be able to do any other testing untill " -"you reload pncconf and quite possibly open a terminal and type 'halrun -U' I " -"hesitate to even allow it's use but at times it's very useful.\n" -"Do you wish to continue the test?" +#: src/emc/usr_intf/pncconf/pncconf.glade:829 +msgid "I/O Control Ports/ Boards" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6699 -msgid "First Parallel Port set for OUTPUT" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:878 +#, fuzzy +msgid "Axis" +msgstr "軸の平行移動" -#: src/emc/usr_intf/pncconf/pncconf.py:6701 -msgid "First Parallel Port set for INPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:893 +msgid "TKLinuxCNC" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6725 -msgid "Second Parallel Port set for OUTPUT" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:907 +#, fuzzy +msgid "Mini" +msgstr "動き" -#: src/emc/usr_intf/pncconf/pncconf.py:6727 -msgid "Second Parallel Port set for INPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:921 +#: src/emc/usr_intf/pncconf/pncconf.glade:6656 +msgid "Touchy" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6739 -msgid "Third Parallel Port set for OUTPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:938 +msgid "GUI frontend list" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6741 -msgid "Third Parallel Port set for INPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:973 +#, fuzzy +msgid "External Controls" +msgstr "手動" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1014 +msgid "Add device rule" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6866 -msgid "You can not have both steppers and pwm signals for spindle control\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1027 +msgid "Test device" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6870 -#, python-format -msgid "You forgot to designate a stepper or pwm signal for axis %s\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1041 +msgid "Search for device rules" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6873 -#, python-format -msgid "You forgot to designate an encoder /resolver signal for axis %s servo\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1062 +#, fuzzy +msgid "Device Name:" +msgstr "出来るように" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1125 +msgid "A +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6876 -#, python-format -msgid "You forgot to designate a pwm signal or stepper signal for axis %s\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1135 +msgid "A -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6879 -#, python-format -msgid "You can not have both steppers and pwm signals for axis %s\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1169 +#: src/emc/usr_intf/pncconf/pncconf.glade:1181 +#: src/emc/usr_intf/pncconf/pncconf.glade:1191 +#: src/emc/usr_intf/pncconf/pncconf.glade:1246 +#: src/emc/usr_intf/pncconf/pncconf.glade:1759 +msgid "mm/min " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6887 -msgid "Touchy require an external cycle start signal\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1269 +msgid " ab)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6890 -msgid "Touchy require an external abort signal\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1282 +#: src/emc/usr_intf/pncconf/pncconf.glade:2493 +#: src/emc/usr_intf/pncconf/pncconf.glade:2927 +#: src/emc/usr_intf/pncconf/pncconf.glade:3808 +#: src/emc/usr_intf/pncconf/pncconf.glade:4689 +msgid " b)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6893 -msgid "Touchy require an external single-step signal\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1293 +#: src/emc/usr_intf/pncconf/pncconf.glade:2482 +#: src/emc/usr_intf/pncconf/pncconf.glade:2916 +#: src/emc/usr_intf/pncconf/pncconf.glade:3797 +#: src/emc/usr_intf/pncconf/pncconf.glade:4678 +msgid " a)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6896 -msgid "" -"Touchy require an external multi handwheel MPG encoder signal on the mesa " -"page\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1305 +#: src/emc/usr_intf/pncconf/pncconf.glade:2385 +#: src/emc/usr_intf/pncconf/pncconf.glade:2867 +#: src/emc/usr_intf/pncconf/pncconf.glade:3748 +#: src/emc/usr_intf/pncconf/pncconf.glade:4629 +#, fuzzy +msgid "default" +msgstr "スピンドル消した" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1336 +#: src/emc/usr_intf/pncconf/pncconf.glade:1476 +#, fuzzy +msgid "Jog Speed select A" +msgstr "ジョグ時速" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1348 +msgid "X +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6899 -msgid "" -"Touchy require 'external mpg jogging' to be selected on the external control " -"page\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1354 +msgid "Y +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6902 -msgid "" -"Touchy require the external mpg to be in 'shared mpg' mode on the external " -"controls page\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1364 +msgid "Z +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6905 -msgid "" -"Touchy require selectable increments to be unchecked on the external " -"controls page\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1374 +msgid "X -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6909 -msgid "" -"The 7i29 daughter board requires PWM type generators and a PWM base " -"frequency of 20 khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1384 +msgid "Y -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6912 -msgid "" -"The 7i30 daughter board requires PWM type generators and a PWM base " -"frequency of 20 khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1396 +msgid "Z -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6915 -msgid "" -"The 7i33 daughter board requires PDM type generators and a PDM base " -"frequency of 6 Mhz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1500 +#, fuzzy +msgid "Digital Control" +msgstr "手動" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1593 +#: src/emc/usr_intf/gscreen/gscreen.glade:502 +msgid "A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6918 -msgid "" -"The 7i40 daughter board requires PWM type generators and a PWM base " -"frequency of 50 khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1603 +#: src/emc/usr_intf/gscreen/gscreen.glade:374 +msgid "Z" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6921 -msgid "" -"The 7i48 daughter board requires UDM type generators and a PWM base " -"frequency of 24 khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1613 +#: src/emc/usr_intf/pncconf/pncconf.glade:6134 +#: src/emc/usr_intf/pncconf/pncconf.glade:6458 +#: src/emc/usr_intf/pncconf/pncconf.glade:6860 +#: src/emc/usr_intf/pncconf/pncconf.glade:7235 +#: src/emc/usr_intf/gscreen/gscreen.glade:244 +msgid "Y" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7148 -msgid "Gearbox Reduction Ratio" +#: src/emc/usr_intf/pncconf/pncconf.glade:1623 +msgid "X " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7151 -msgid "Reduction Ratio" +#: src/emc/usr_intf/pncconf/pncconf.glade:1631 +#, fuzzy +msgid "Analog Control" +msgstr "手動" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1657 +#: src/emc/usr_intf/pncconf/pncconf.glade:1788 +#: src/emc/usr_intf/pncconf/pncconf.glade:2698 +#: src/emc/usr_intf/pncconf/pncconf.glade:3579 +#: src/emc/usr_intf/pncconf/pncconf.glade:4460 +#: src/emc/usr_intf/pncconf/pncconf.glade:5341 +#: src/emc/usr_intf/pncconf/pncconf.glade:64300 +msgid "Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7154 -msgid "Leadscrew Pitch" +#: src/emc/usr_intf/pncconf/pncconf.glade:1675 +msgid "USB Joystick Jogging " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7157 -#: src/emc/usr_intf/pncconf/pncconf.glade:66327 -#: src/emc/usr_intf/pncconf/pncconf.glade:66622 -msgid "Leadscrew TPI" +#: src/emc/usr_intf/pncconf/pncconf.glade:1719 +msgid "shared buttons for all axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7161 -#: src/emc/usr_intf/pncconf/pncconf.py:7162 -msgid "(" +#: src/emc/usr_intf/pncconf/pncconf.glade:1732 +msgid "buttons for each axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7163 -#: src/emc/usr_intf/pncconf/pncconf.py:7173 -#: src/emc/usr_intf/pncconf/pncconf.py:7174 -#: src/emc/usr_intf/pncconf/pncconf.py:7175 -#, fuzzy -msgid " / min" -msgstr "インチ" +#: src/emc/usr_intf/pncconf/pncconf.glade:1806 +msgid "External Button Jogging" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7164 -msgid " / sec²" +#: src/emc/usr_intf/pncconf/pncconf.glade:1847 +msgid "Shared MPG / selectable axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7167 -#, fuzzy -msgid " / Step" -msgstr "徐徐に" +#: src/emc/usr_intf/pncconf/pncconf.glade:1860 +msgid "Mpg per axis" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7168 -#, fuzzy -msgid "Steps / " -msgstr "徐徐に" +#: src/emc/usr_intf/pncconf/pncconf.glade:1875 +msgid "selectable MPG increments" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7170 -msgid " / encoder pulse" +#: src/emc/usr_intf/pncconf/pncconf.glade:1940 +#: src/emc/usr_intf/pncconf/pncconf.glade:3379 +#: src/emc/usr_intf/pncconf/pncconf.glade:4260 +#: src/emc/usr_intf/pncconf/pncconf.glade:5141 +msgid " d)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7171 -msgid "Encoder pulses / " +#: src/emc/usr_intf/pncconf/pncconf.glade:1952 +#: src/emc/usr_intf/pncconf/pncconf.glade:3340 +#: src/emc/usr_intf/pncconf/pncconf.glade:4221 +#: src/emc/usr_intf/pncconf/pncconf.glade:5102 +msgid " abcd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7482 -msgid "Axis Scale Calculation" +#: src/emc/usr_intf/pncconf/pncconf.glade:1965 +#: src/emc/usr_intf/pncconf/pncconf.glade:3353 +#: src/emc/usr_intf/pncconf/pncconf.glade:4234 +#: src/emc/usr_intf/pncconf/pncconf.glade:5115 +msgid " bcd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7785 -msgid "You need to designate an E-stop input pin for this ladder program." +#: src/emc/usr_intf/pncconf/pncconf.glade:1978 +#: src/emc/usr_intf/pncconf/pncconf.glade:3366 +#: src/emc/usr_intf/pncconf/pncconf.glade:4247 +#: src/emc/usr_intf/pncconf/pncconf.glade:5128 +msgid " acd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7797 -msgid "You need to designate a probe input pin for this ladder program." +#: src/emc/usr_intf/pncconf/pncconf.glade:1991 +#: src/emc/usr_intf/pncconf/pncconf.glade:3430 +#: src/emc/usr_intf/pncconf/pncconf.glade:4311 +#: src/emc/usr_intf/pncconf/pncconf.glade:5192 +msgid " cd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7808 -msgid "" -"OK to replace existing custom ladder program?\n" -"Existing Custom.clp will be renamed custom_backup.clp.\n" -"Any existing file named -custom_backup.clp- will be lost.Selecting 'existing " -"ladder program' will avoid this warning" +#: src/emc/usr_intf/pncconf/pncconf.glade:2004 +#: src/emc/usr_intf/pncconf/pncconf.glade:3404 +#: src/emc/usr_intf/pncconf/pncconf.glade:4285 +#: src/emc/usr_intf/pncconf/pncconf.glade:5166 +msgid " bd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8019 -msgid "Do you wish to continue to edit this configuration." +#: src/emc/usr_intf/pncconf/pncconf.glade:2017 +#: src/emc/usr_intf/pncconf/pncconf.glade:3391 +#: src/emc/usr_intf/pncconf/pncconf.glade:4272 +#: src/emc/usr_intf/pncconf/pncconf.glade:5153 +msgid " ad)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8058 -msgid "PCI search page is unavailable\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2030 +#: src/emc/usr_intf/pncconf/pncconf.glade:2514 +#: src/emc/usr_intf/pncconf/pncconf.glade:3059 +#: src/emc/usr_intf/pncconf/pncconf.glade:3940 +#: src/emc/usr_intf/pncconf/pncconf.glade:4821 +msgid " abc)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8176 -msgid "" -"You specified there is an existing gladefile, But there is not one in the " -"machine-named folder.." +#: src/emc/usr_intf/pncconf/pncconf.glade:2041 +#: src/emc/usr_intf/pncconf/pncconf.glade:3026 +#: src/emc/usr_intf/pncconf/pncconf.glade:3907 +#: src/emc/usr_intf/pncconf/pncconf.glade:4788 +msgid " c)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8495 -msgid "Servo tuning is not avaiable in PNCconf yet\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2207 +#: src/emc/usr_intf/pncconf/pncconf.glade:3049 +#: src/emc/usr_intf/pncconf/pncconf.glade:3930 +#: src/emc/usr_intf/pncconf/pncconf.glade:4811 +msgid " bc)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8500 -msgid "degrees" +#: src/emc/usr_intf/pncconf/pncconf.glade:2217 +#: src/emc/usr_intf/pncconf/pncconf.glade:3038 +#: src/emc/usr_intf/pncconf/pncconf.glade:3919 +#: src/emc/usr_intf/pncconf/pncconf.glade:4800 +msgid " ac)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8501 -msgid "degrees / minute" +#: src/emc/usr_intf/pncconf/pncconf.glade:2504 +#: src/emc/usr_intf/pncconf/pncconf.glade:2938 +#: src/emc/usr_intf/pncconf/pncconf.glade:3819 +#: src/emc/usr_intf/pncconf/pncconf.glade:4700 +msgid " ab)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8502 -msgid "degrees / second²" +#: src/emc/usr_intf/pncconf/pncconf.glade:2577 +msgid "ignore all inputs false" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8504 -msgid "revolutions" +#: src/emc/usr_intf/pncconf/pncconf.glade:2592 +msgid "use gray code" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8505 -msgid "rpm" +#: src/emc/usr_intf/pncconf/pncconf.glade:2607 +#: src/emc/usr_intf/pncconf/pncconf.glade:3489 +#: src/emc/usr_intf/pncconf/pncconf.glade:4356 +#: src/emc/usr_intf/pncconf/pncconf.glade:5237 +msgid "use debounce" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8506 -msgid "revs / second²" +#: src/emc/usr_intf/pncconf/pncconf.glade:2658 +#: src/emc/usr_intf/pncconf/pncconf.glade:3453 +#: src/emc/usr_intf/pncconf/pncconf.glade:4334 +#: src/emc/usr_intf/pncconf/pncconf.glade:5215 +#, fuzzy +msgid "Mux options" +msgstr "動き" + +#: src/emc/usr_intf/pncconf/pncconf.glade:2672 +msgid "increments" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8509 -#: src/emc/usr_intf/pncconf/pncconf.glade:58295 -#: src/emc/usr_intf/pncconf/pncconf.glade:58479 -#: src/emc/usr_intf/pncconf/pncconf.glade:58576 -msgid "mm / minute" +#: src/emc/usr_intf/pncconf/pncconf.glade:2716 +msgid "External MPG Jogging" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8510 -msgid "mm / second²" +#: src/emc/usr_intf/pncconf/pncconf.glade:2747 +#: src/emc/usr_intf/pncconf/pncconf.glade:3628 +#: src/emc/usr_intf/pncconf/pncconf.glade:4509 +msgid "Use MPG " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8513 -msgid "inches / minute" +#: src/emc/usr_intf/pncconf/pncconf.glade:2760 +#: src/emc/usr_intf/pncconf/pncconf.glade:3641 +#: src/emc/usr_intf/pncconf/pncconf.glade:4522 +msgid "use switches" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8514 -#, fuzzy -msgid "inches / second²" -msgstr "インチ" +#: src/emc/usr_intf/pncconf/pncconf.glade:3417 +#: src/emc/usr_intf/pncconf/pncconf.glade:4298 +#: src/emc/usr_intf/pncconf/pncconf.glade:5179 +msgid " abd)" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8646 -#, python-format -msgid "%s Axis Tune" +#: src/emc/usr_intf/pncconf/pncconf.glade:3504 +#: src/emc/usr_intf/pncconf/pncconf.glade:4371 +#: src/emc/usr_intf/pncconf/pncconf.glade:5252 +msgid "use graycode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8810 -msgid "" -" You must designate a ENCODER / RESOLVER signal and an ANALOG SPINDLE signal " -"for this axis test" +#: src/emc/usr_intf/pncconf/pncconf.glade:3519 +#: src/emc/usr_intf/pncconf/pncconf.glade:4386 +#: src/emc/usr_intf/pncconf/pncconf.glade:5267 +msgid "ignore all-inputs false" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8814 -msgid "" -" You must designate a ENCODER / RESOLVER signal and a PWM signal for this " -"axis test" +#: src/emc/usr_intf/pncconf/pncconf.glade:3563 +#: src/emc/usr_intf/pncconf/pncconf.glade:4444 +#: src/emc/usr_intf/pncconf/pncconf.glade:5325 +msgid "Increments" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8 +#: src/emc/usr_intf/pncconf/pncconf.glade:3597 #, fuzzy -msgid "LinuxCNC Point And Click Configuration" -msgstr "スピンドル消した" +msgid "External Feed Override" +msgstr "フィード手直して" -#: src/emc/usr_intf/pncconf/pncconf.glade:23 -msgid "LinuxCNC Configuration Wizard Beta 1 Version" +#: src/emc/usr_intf/pncconf/pncconf.glade:4478 +msgid "Max Velocity Override" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:24 -msgid "" -"\tThis program creates configuration \n" -" files for \"Closed Loop Servo\" \n" -"\t \t and hardware stepper\n" -" \tmachines" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5359 +#, fuzzy +msgid "External Spindle Override" +msgstr "フィード手直して" -#: src/emc/usr_intf/pncconf/pncconf.glade:34 -msgid "Create or Edit" +#: src/emc/usr_intf/pncconf/pncconf.glade:5387 +msgid "GUI configuration" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:52 -msgid "Create a new configuration" +#: src/emc/usr_intf/pncconf/pncconf.glade:5406 +msgid "Frontend" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:118 -msgid "Create a desktop shortcut (symlink) to configuration files." -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5566 +#, fuzzy +msgid "Position_offset" +msgstr "動き" + +#: src/emc/usr_intf/pncconf/pncconf.glade:5573 +#, fuzzy +msgid "Position_feedback" +msgstr "動き" -#: src/emc/usr_intf/pncconf/pncconf.glade:135 -msgid "Create a desktop launcher to start LinuxCNC with this configuration." -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5584 +#, fuzzy +msgid "Max Spindle Override " +msgstr "フィード手直して" -#: src/emc/usr_intf/pncconf/pncconf.glade:214 +#: src/emc/usr_intf/pncconf/pncconf.glade:5606 #, fuzzy -msgid "Machine Name:" -msgstr "出来るように" +msgid "Min Spindle Override" +msgstr "フィード手直して" -#: src/emc/usr_intf/pncconf/pncconf.glade:281 -msgid "Axis configuration:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5665 +#, fuzzy +msgid "Max Feed Override" +msgstr "フィード手直し:" -#: src/emc/usr_intf/pncconf/pncconf.glade:316 +#: src/emc/usr_intf/pncconf/pncconf.glade:5702 #, fuzzy -msgid "Machine units:" -msgstr "出来るように" +msgid "" +"Machine\n" +"Relative\n" +msgstr "相対" -#: src/emc/usr_intf/pncconf/pncconf.glade:355 -msgid "Machine Basics" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5714 +#, fuzzy +msgid "" +"Commanded\n" +"Actual" +msgstr "命令な" -#: src/emc/usr_intf/pncconf/pncconf.glade:405 -msgid "Recommend servo period: 1000000" +#: src/emc/usr_intf/pncconf/pncconf.glade:5729 +msgid "General GUI Defaults" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:431 -msgid "Actual Servo Period: " +#: src/emc/usr_intf/pncconf/pncconf.glade:5811 +msgid "Default linear velocity " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:486 -msgid "" -" Test Base\n" -"Period Jitter " +#: src/emc/usr_intf/pncconf/pncconf.glade:5818 +msgid "Min linear velocity" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:511 -msgid "Computer Response Time" +#: src/emc/usr_intf/pncconf/pncconf.glade:5829 +msgid "Max linear velocity" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:553 -msgid "Mesa0 PCI / Parport Card:" +#: src/emc/usr_intf/pncconf/pncconf.glade:5879 +#: src/emc/usr_intf/pncconf/pncconf.glade:6085 +#: src/emc/usr_intf/pncconf/pncconf.glade:6097 +msgid "mm / min" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:563 -msgid "Mesa1 PCI / Parport Card:" +#: src/emc/usr_intf/pncconf/pncconf.glade:5892 +msgid "Default Angular velocity " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:576 -msgid "First Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.glade:5926 +msgid "gedit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:589 -msgid "Second Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.glade:5939 +msgid "Min Angular velocity" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:604 -msgid "Third Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.glade:5966 +msgid "Increments " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:627 -#: src/emc/usr_intf/pncconf/pncconf.glade:635 -msgid "" -"5i20\n" -"5i23\n" -"5i22" +#: src/emc/usr_intf/pncconf/pncconf.glade:5977 +msgid "5mm 1mm .5mm .1mm .05mm .01mm .005mm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:708 -#: src/emc/usr_intf/pncconf/pncconf.glade:720 -#: src/emc/usr_intf/pncconf/pncconf.glade:733 -msgid "" -"In\n" -"Out" +#: src/emc/usr_intf/pncconf/pncconf.glade:5990 +msgid "Max Angular velocity" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:796 -msgid "" -"Add-on PCI\n" -" Parport\n" -" Address \n" -" Search" +#: src/emc/usr_intf/pncconf/pncconf.glade:6017 +msgid "Axis Geometry" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:821 -msgid "I/O Control Ports/ Boards" +#: src/emc/usr_intf/pncconf/pncconf.glade:6028 +msgid "xyzabc" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:870 +#: src/emc/usr_intf/pncconf/pncconf.glade:6040 +#: src/emc/usr_intf/pncconf/pncconf.glade:6052 +#: src/emc/usr_intf/pncconf/pncconf.glade:6064 #, fuzzy -msgid "Axis" -msgstr "軸の平行移動" +msgid "Deg / min" +msgstr "インチ" -#: src/emc/usr_intf/pncconf/pncconf.glade:885 -msgid "TKLinuxCNC" +#: src/emc/usr_intf/pncconf/pncconf.glade:6113 +#: src/emc/usr_intf/pncconf/pncconf.glade:6484 +#: src/emc/usr_intf/pncconf/pncconf.glade:6839 +#: src/emc/usr_intf/pncconf/pncconf.glade:7262 +msgid "size" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:899 +#: src/emc/usr_intf/pncconf/pncconf.glade:6122 +#: src/emc/usr_intf/pncconf/pncconf.glade:6471 +#: src/emc/usr_intf/pncconf/pncconf.glade:6848 +#: src/emc/usr_intf/pncconf/pncconf.glade:7248 #, fuzzy -msgid "Mini" +msgid "Position" msgstr "動き" -#: src/emc/usr_intf/pncconf/pncconf.glade:913 -#: src/emc/usr_intf/pncconf/pncconf.glade:6648 -msgid "Touchy" +#: src/emc/usr_intf/pncconf/pncconf.glade:6159 +#: src/emc/usr_intf/pncconf/pncconf.glade:6433 +#: src/emc/usr_intf/pncconf/pncconf.glade:6885 +#: src/emc/usr_intf/pncconf/pncconf.glade:7210 +#: src/emc/usr_intf/gscreen/gscreen.glade:116 +msgid "X" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:930 -msgid "GUI frontend list" +#: src/emc/usr_intf/pncconf/pncconf.glade:6171 +#: src/emc/usr_intf/pncconf/pncconf.glade:6423 +#: src/emc/usr_intf/pncconf/pncconf.glade:6897 +#: src/emc/usr_intf/pncconf/pncconf.glade:7200 +#: src/emc/usr_intf/gscreen/gscreen.glade:1142 +msgid "W" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:965 -#, fuzzy -msgid "External Controls" -msgstr "手動" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1006 -msgid "Add device rule" +#: src/emc/usr_intf/pncconf/pncconf.glade:6205 +#: src/emc/usr_intf/pncconf/pncconf.glade:6389 +#: src/emc/usr_intf/pncconf/pncconf.glade:6931 +#: src/emc/usr_intf/pncconf/pncconf.glade:7166 +msgid "H" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1019 -msgid "Test device" +#: src/emc/usr_intf/pncconf/pncconf.glade:6227 +msgid "Force Axis to Maximize" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1033 -msgid "Search for device rules" +#: src/emc/usr_intf/pncconf/pncconf.glade:6249 +msgid "AXIS defaults" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1054 -#, fuzzy -msgid "Device Name:" -msgstr "出来るように" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1117 -#: src/emc/usr_intf/pncconf/pncconf.glade:1255 -#, fuzzy -msgid "Jog Speed select A" -msgstr "ジョグ時速" +#: src/emc/usr_intf/pncconf/pncconf.glade:6365 +msgid "Force Touchy to Maximize after positioning" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1195 -msgid "Z -" +#: src/emc/usr_intf/pncconf/pncconf.glade:6501 +#: src/emc/usr_intf/pncconf/pncconf.glade:7333 +msgid "Follow System Theme\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1207 -msgid "Y -" +#: src/emc/usr_intf/pncconf/pncconf.glade:6514 +#: src/emc/usr_intf/pncconf/pncconf.glade:7347 +msgid "GTK Theme" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1219 -msgid "X -" +#: src/emc/usr_intf/pncconf/pncconf.glade:6540 +#: src/emc/usr_intf/gscreen/gscreen.glade:1857 +msgid "Absolute Text Color" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1229 -msgid "Z +" +#: src/emc/usr_intf/pncconf/pncconf.glade:6603 +msgid "Absolute Textcolor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1239 -msgid "Y +" +#: src/emc/usr_intf/pncconf/pncconf.glade:6616 +#, fuzzy +msgid "Relative Textcolor" +msgstr "相対" + +#: src/emc/usr_intf/pncconf/pncconf.glade:6629 +msgid "DTG Textcolor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1249 -msgid "X +" +#: src/emc/usr_intf/pncconf/pncconf.glade:6642 +msgid "Error Textcolor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1289 -#: src/emc/usr_intf/pncconf/pncconf.glade:2208 -#: src/emc/usr_intf/pncconf/pncconf.glade:3496 -#: src/emc/usr_intf/pncconf/pncconf.glade:4377 -#: src/emc/usr_intf/pncconf/pncconf.glade:5258 -#, fuzzy -msgid "default" -msgstr "スピンドル消した" +#: src/emc/usr_intf/pncconf/pncconf.glade:6677 +msgid "GUI Options" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1299 -#: src/emc/usr_intf/pncconf/pncconf.glade:2107 -#: src/emc/usr_intf/pncconf/pncconf.glade:3443 -#: src/emc/usr_intf/pncconf/pncconf.glade:4324 -#: src/emc/usr_intf/pncconf/pncconf.glade:5205 -msgid " a)" +#: src/emc/usr_intf/pncconf/pncconf.glade:6708 +msgid "Virtual Control Panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1311 -#: src/emc/usr_intf/pncconf/pncconf.glade:2096 -#: src/emc/usr_intf/pncconf/pncconf.glade:3432 -#: src/emc/usr_intf/pncconf/pncconf.glade:4313 -#: src/emc/usr_intf/pncconf/pncconf.glade:5194 -msgid " b)" +#: src/emc/usr_intf/pncconf/pncconf.glade:6783 +msgid "XYZ buttons (uses Halui)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1322 -msgid " ab)" +#: src/emc/usr_intf/pncconf/pncconf.glade:6954 +msgid "Geometry Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1348 -#: src/emc/usr_intf/pncconf/pncconf.glade:1401 -#: src/emc/usr_intf/pncconf/pncconf.glade:1413 -#: src/emc/usr_intf/pncconf/pncconf.glade:1423 -#: src/emc/usr_intf/pncconf/pncconf.glade:1751 -msgid "mm/min " +#: src/emc/usr_intf/pncconf/pncconf.glade:7033 +msgid "Pyvcp Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1456 -msgid "A -" +#: src/emc/usr_intf/pncconf/pncconf.glade:7105 +msgid "Sample display " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1468 -msgid "A +" +#: src/emc/usr_intf/pncconf/pncconf.glade:7272 +msgid "Standalone Panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1492 -#, fuzzy -msgid "Digital Control" -msgstr "手動" +#: src/emc/usr_intf/pncconf/pncconf.glade:7289 +msgid "Rightside Embeded" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1539 -msgid "X " +#: src/emc/usr_intf/pncconf/pncconf.glade:7305 +msgid "Center Tab Embeded" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1545 -#: src/emc/usr_intf/pncconf/pncconf.glade:5901 -#: src/emc/usr_intf/pncconf/pncconf.glade:6531 -#: src/emc/usr_intf/pncconf/pncconf.glade:6910 -#: src/emc/usr_intf/pncconf/pncconf.glade:7257 -msgid "Y" +#: src/emc/usr_intf/pncconf/pncconf.glade:7320 +msgid "Force Maximize" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1555 -msgid "Z" +#: src/emc/usr_intf/pncconf/pncconf.glade:7359 +msgid "Display Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1565 -msgid "A" +#: src/emc/usr_intf/pncconf/pncconf.glade:7409 +msgid "Max RPM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1623 +#: src/emc/usr_intf/pncconf/pncconf.glade:7422 #, fuzzy -msgid "Analog Control" -msgstr "手動" +msgid "Spindle Speed Indicator" +msgstr "スピンドル消した" -#: src/emc/usr_intf/pncconf/pncconf.glade:1649 -#: src/emc/usr_intf/pncconf/pncconf.glade:1780 -#: src/emc/usr_intf/pncconf/pncconf.glade:2690 -#: src/emc/usr_intf/pncconf/pncconf.glade:3571 -#: src/emc/usr_intf/pncconf/pncconf.glade:4452 -#: src/emc/usr_intf/pncconf/pncconf.glade:5333 -#: src/emc/usr_intf/pncconf/pncconf.glade:57371 -msgid "Details" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:7434 +#, fuzzy +msgid "Spindle At Speed LED" +msgstr "フィード手直して" -#: src/emc/usr_intf/pncconf/pncconf.glade:1667 -msgid "USB Joystick Jogging " +#: src/emc/usr_intf/pncconf/pncconf.glade:7446 +msgid "Zero X Button" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1711 -msgid "shared buttons for all axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:7458 +msgid "Zero Y Button" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1724 -msgid "buttons for each axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:7470 +msgid "Zero Z Button" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1798 -msgid "External Button Jogging" +#: src/emc/usr_intf/pncconf/pncconf.glade:7482 +msgid "Zero A Button" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1839 -msgid "Shared MPG / selectable axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:7494 +msgid "Requires Classicladder touch-off program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1852 -msgid "Mpg per axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:7495 +msgid "Auto Z Touch Off Button" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1867 -msgid "selectable MPG increments" +#: src/emc/usr_intf/pncconf/pncconf.glade:7508 +msgid "Sample Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1932 -#: src/emc/usr_intf/pncconf/pncconf.glade:2907 -#: src/emc/usr_intf/pncconf/pncconf.glade:3788 -#: src/emc/usr_intf/pncconf/pncconf.glade:4669 -#, fuzzy -msgid "Mux options" -msgstr "動き" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1980 -#: src/emc/usr_intf/pncconf/pncconf.glade:2868 -#: src/emc/usr_intf/pncconf/pncconf.glade:3763 -#: src/emc/usr_intf/pncconf/pncconf.glade:4644 -msgid "use debounce" +#: src/emc/usr_intf/pncconf/pncconf.glade:7582 +msgid "Gladevcp Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1995 -msgid "use gray code" +#: src/emc/usr_intf/pncconf/pncconf.glade:7605 +msgid "Include custom GladeVCP GUI panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2010 -msgid "ignore all inputs false" +#: src/emc/usr_intf/pncconf/pncconf.glade:7676 +msgid "Force individual manual homing" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2035 -#: src/emc/usr_intf/pncconf/pncconf.glade:2048 -#: src/emc/usr_intf/pncconf/pncconf.glade:2061 -#: src/emc/usr_intf/pncconf/pncconf.glade:2407 -#: src/emc/usr_intf/pncconf/pncconf.glade:2420 -#: src/emc/usr_intf/pncconf/pncconf.glade:2433 -#: src/emc/usr_intf/pncconf/pncconf.glade:2446 -#: src/emc/usr_intf/pncconf/pncconf.glade:2457 -#: src/emc/usr_intf/pncconf/pncconf.glade:2470 -#: src/emc/usr_intf/pncconf/pncconf.glade:2483 -#: src/emc/usr_intf/pncconf/pncconf.glade:2496 -#: src/emc/usr_intf/pncconf/pncconf.glade:2509 -#: src/emc/usr_intf/pncconf/pncconf.glade:2522 -#: src/emc/usr_intf/pncconf/pncconf.glade:2535 -#: src/emc/usr_intf/pncconf/pncconf.glade:8343 -#: src/emc/usr_intf/pncconf/pncconf.glade:8379 -#: src/emc/usr_intf/pncconf/pncconf.glade:56542 -#: src/emc/usr_intf/pncconf/pncconf.glade:61266 -#: src/emc/usr_intf/pncconf/pncconf.glade:61278 -#: src/emc/usr_intf/pncconf/pncconf.glade:61290 -#: src/emc/usr_intf/pncconf/pncconf.glade:61302 -#: src/emc/usr_intf/pncconf/pncconf.glade:62475 -#: src/emc/usr_intf/pncconf/pncconf.glade:62487 -#: src/emc/usr_intf/pncconf/pncconf.glade:62499 -#: src/emc/usr_intf/pncconf/pncconf.glade:62511 -#: src/emc/usr_intf/pncconf/pncconf.glade:63452 -#: src/emc/usr_intf/pncconf/pncconf.glade:63464 -#: src/emc/usr_intf/pncconf/pncconf.glade:63476 -#: src/emc/usr_intf/pncconf/pncconf.glade:63488 -#: src/emc/usr_intf/pncconf/pncconf.glade:64661 -#: src/emc/usr_intf/pncconf/pncconf.glade:64673 -#: src/emc/usr_intf/pncconf/pncconf.glade:64685 -#: src/emc/usr_intf/pncconf/pncconf.glade:64697 -#: src/emc/usr_intf/pncconf/pncconf.glade:65608 -#: src/emc/usr_intf/pncconf/pncconf.glade:65620 -#: src/emc/usr_intf/pncconf/pncconf.glade:65632 -#: src/emc/usr_intf/pncconf/pncconf.glade:65644 -msgid "label" +#: src/emc/usr_intf/pncconf/pncconf.glade:7689 +msgid "Random position toolchanger " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2073 -#: src/emc/usr_intf/pncconf/pncconf.glade:2559 -#: src/emc/usr_intf/pncconf/pncconf.glade:3300 -#: src/emc/usr_intf/pncconf/pncconf.glade:4181 -#: src/emc/usr_intf/pncconf/pncconf.glade:5062 -msgid " abc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7704 +msgid "Require homing before MDI / Running" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2086 -#: src/emc/usr_intf/pncconf/pncconf.glade:3422 -#: src/emc/usr_intf/pncconf/pncconf.glade:4303 -#: src/emc/usr_intf/pncconf/pncconf.glade:5184 -msgid " ab)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7713 +msgid "Popup Toolchange Prompt" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2372 -#: src/emc/usr_intf/pncconf/pncconf.glade:3321 -#: src/emc/usr_intf/pncconf/pncconf.glade:4202 -#: src/emc/usr_intf/pncconf/pncconf.glade:5083 -msgid " ac)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7727 +msgid "Leave spindle on during tool change" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2383 -#: src/emc/usr_intf/pncconf/pncconf.glade:3311 -#: src/emc/usr_intf/pncconf/pncconf.glade:4192 -#: src/emc/usr_intf/pncconf/pncconf.glade:5073 -msgid " bc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7740 +msgid "Move spindle up before tool change" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2547 -#: src/emc/usr_intf/pncconf/pncconf.glade:3332 -#: src/emc/usr_intf/pncconf/pncconf.glade:4213 -#: src/emc/usr_intf/pncconf/pncconf.glade:5094 -msgid " c)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7753 +msgid "Restore joint position after shutdown" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2570 -#: src/emc/usr_intf/pncconf/pncconf.glade:2966 -#: src/emc/usr_intf/pncconf/pncconf.glade:3847 -#: src/emc/usr_intf/pncconf/pncconf.glade:4728 -msgid " ad)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7769 +msgid "Defaults and Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2583 -#: src/emc/usr_intf/pncconf/pncconf.glade:2953 -#: src/emc/usr_intf/pncconf/pncconf.glade:3834 -#: src/emc/usr_intf/pncconf/pncconf.glade:4715 -msgid " bd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7797 +msgid "Mesa0 I/O setup\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2596 -#: src/emc/usr_intf/pncconf/pncconf.glade:2927 -#: src/emc/usr_intf/pncconf/pncconf.glade:3808 -#: src/emc/usr_intf/pncconf/pncconf.glade:4689 -msgid " cd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7817 +msgid "" +"Click on each page tab to configure signal names for each connector port.\n" +"\n" +"Press the button to make the tabbed pages\n" +"accept the changes.\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2609 -#: src/emc/usr_intf/pncconf/pncconf.glade:2991 -#: src/emc/usr_intf/pncconf/pncconf.glade:3872 -#: src/emc/usr_intf/pncconf/pncconf.glade:4753 -msgid " acd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8001 +msgid "3PWM base frequency:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2622 -#: src/emc/usr_intf/pncconf/pncconf.glade:3004 -#: src/emc/usr_intf/pncconf/pncconf.glade:3885 -#: src/emc/usr_intf/pncconf/pncconf.glade:4766 -msgid " bcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8036 +msgid "Mesa parport address:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2635 -#: src/emc/usr_intf/pncconf/pncconf.glade:3017 -#: src/emc/usr_intf/pncconf/pncconf.glade:3898 -#: src/emc/usr_intf/pncconf/pncconf.glade:4779 -msgid " abcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8047 +msgid "Firmware:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2648 -#: src/emc/usr_intf/pncconf/pncconf.glade:2979 -#: src/emc/usr_intf/pncconf/pncconf.glade:3860 -#: src/emc/usr_intf/pncconf/pncconf.glade:4741 -msgid " d)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8069 +msgid "SVST8_4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2664 -msgid "increments" +#: src/emc/usr_intf/pncconf/pncconf.glade:8094 +msgid "Num of 3 pwm generators: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2708 -msgid "External MPG Jogging" +#: src/emc/usr_intf/pncconf/pncconf.glade:8128 +msgid "Total number of pins:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2739 -#: src/emc/usr_intf/pncconf/pncconf.glade:3620 -#: src/emc/usr_intf/pncconf/pncconf.glade:4501 -msgid "Use MPG " +#: src/emc/usr_intf/pncconf/pncconf.glade:8153 +msgid "" +"Accept components\n" +" Changes" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2752 -#: src/emc/usr_intf/pncconf/pncconf.glade:3633 -#: src/emc/usr_intf/pncconf/pncconf.glade:4514 -msgid "use switches" +#: src/emc/usr_intf/pncconf/pncconf.glade:8168 +msgid "PWM base frequency:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2838 -#: src/emc/usr_intf/pncconf/pncconf.glade:3733 -#: src/emc/usr_intf/pncconf/pncconf.glade:4614 -msgid "ignore all-inputs false" +#: src/emc/usr_intf/pncconf/pncconf.glade:8179 +msgid "PDM base frequency:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2853 -#: src/emc/usr_intf/pncconf/pncconf.glade:3748 -#: src/emc/usr_intf/pncconf/pncconf.glade:4629 -msgid "use graycode" +#: src/emc/usr_intf/pncconf/pncconf.glade:8190 +msgid "Watchdog timeout:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2940 -#: src/emc/usr_intf/pncconf/pncconf.glade:3821 -#: src/emc/usr_intf/pncconf/pncconf.glade:4702 -msgid " abd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8307 +msgid "Num of encoders:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:3555 -#: src/emc/usr_intf/pncconf/pncconf.glade:4436 -#: src/emc/usr_intf/pncconf/pncconf.glade:5317 -msgid "Increments" +#: src/emc/usr_intf/pncconf/pncconf.glade:8318 +msgid "Num of pwm generators:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:3589 -#, fuzzy -msgid "External Feed Override" -msgstr "フィード手直して" - -#: src/emc/usr_intf/pncconf/pncconf.glade:4470 -msgid "Max Velocity Override" +#: src/emc/usr_intf/pncconf/pncconf.glade:8329 +msgid "Num of step generators: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5351 -#, fuzzy -msgid "External Spindle Override" -msgstr "フィード手直して" +#: src/emc/usr_intf/pncconf/pncconf.glade:8340 +msgid "Board name" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5379 -msgid "GUI configuration" +#: src/emc/usr_intf/pncconf/pncconf.glade:8346 +msgid "Num of Smart Serial Ports:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5398 -msgid "Frontend" +#: src/emc/usr_intf/pncconf/pncconf.glade:8393 +msgid "7i29 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5557 -#, fuzzy -msgid "" -"Commanded\n" -"Actual" -msgstr "命令な" +#: src/emc/usr_intf/pncconf/pncconf.glade:8402 +msgid "7i30 daughter board" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5570 -#, fuzzy -msgid "" -"Machine\n" -"Relative\n" -msgstr "相対" +#: src/emc/usr_intf/pncconf/pncconf.glade:8414 +msgid "7i33 daughter board" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5608 -#, fuzzy -msgid "Max Feed Override" -msgstr "フィード手直し:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8426 +msgid "7i40 daughter board" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5667 -#, fuzzy -msgid "Min Spindle Override" -msgstr "フィード手直して" +#: src/emc/usr_intf/pncconf/pncconf.glade:8438 +msgid "7i48 daughter board" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5691 -#, fuzzy -msgid "Max Spindle Override " -msgstr "フィード手直して" +#: src/emc/usr_intf/pncconf/pncconf.glade:8453 +msgid "Sanity Checks" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5702 -#, fuzzy -msgid "Position_feedback" -msgstr "動き" +#: src/emc/usr_intf/pncconf/pncconf.glade:8482 +msgid "Num of channels: " +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5713 -#, fuzzy -msgid "Position_offset" -msgstr "動き" +#: src/emc/usr_intf/pncconf/pncconf.glade:8494 +msgid "Num of resolvers:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5721 -msgid "General GUI Defaults" +#: src/emc/usr_intf/pncconf/pncconf.glade:8528 +msgid "" +"Configuration\n" +" Page" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5808 -msgid "Force Axis to Maximize" +#: src/emc/usr_intf/pncconf/pncconf.glade:8721 +#: src/emc/usr_intf/pncconf/pncconf.glade:8773 +#: src/emc/usr_intf/pncconf/pncconf.glade:9093 +#: src/emc/usr_intf/pncconf/pncconf.glade:9145 +#: src/emc/usr_intf/pncconf/pncconf.glade:9197 +#: src/emc/usr_intf/pncconf/pncconf.glade:9249 +#: src/emc/usr_intf/pncconf/pncconf.glade:9301 +#: src/emc/usr_intf/pncconf/pncconf.glade:9353 +#: src/emc/usr_intf/pncconf/pncconf.glade:9405 +#: src/emc/usr_intf/pncconf/pncconf.glade:9457 +#: src/emc/usr_intf/pncconf/pncconf.glade:9509 +#: src/emc/usr_intf/pncconf/pncconf.glade:9561 +#: src/emc/usr_intf/pncconf/pncconf.glade:10400 +#: src/emc/usr_intf/pncconf/pncconf.glade:10453 +#: src/emc/usr_intf/pncconf/pncconf.glade:10505 +#: src/emc/usr_intf/pncconf/pncconf.glade:10557 +#: src/emc/usr_intf/pncconf/pncconf.glade:11335 +#: src/emc/usr_intf/pncconf/pncconf.glade:11387 +#: src/emc/usr_intf/pncconf/pncconf.glade:12047 +#: src/emc/usr_intf/pncconf/pncconf.glade:12099 +#: src/emc/usr_intf/pncconf/pncconf.glade:12151 +#: src/emc/usr_intf/pncconf/pncconf.glade:12203 +#: src/emc/usr_intf/pncconf/pncconf.glade:13042 +#: src/emc/usr_intf/pncconf/pncconf.glade:13094 +#: src/emc/usr_intf/pncconf/pncconf.glade:13146 +#: src/emc/usr_intf/pncconf/pncconf.glade:13198 +#: src/emc/usr_intf/pncconf/pncconf.glade:13250 +#: src/emc/usr_intf/pncconf/pncconf.glade:13302 +#: src/emc/usr_intf/pncconf/pncconf.glade:13354 +#: src/emc/usr_intf/pncconf/pncconf.glade:13406 +#: src/emc/usr_intf/pncconf/pncconf.glade:13458 +#: src/emc/usr_intf/pncconf/pncconf.glade:13510 +#: src/emc/usr_intf/pncconf/pncconf.glade:14556 +#: src/emc/usr_intf/pncconf/pncconf.glade:14608 +#: src/emc/usr_intf/pncconf/pncconf.glade:14660 +#: src/emc/usr_intf/pncconf/pncconf.glade:14712 +#: src/emc/usr_intf/pncconf/pncconf.glade:15539 +#: src/emc/usr_intf/pncconf/pncconf.glade:15591 +#: src/emc/usr_intf/pncconf/pncconf.glade:15643 +#: src/emc/usr_intf/pncconf/pncconf.glade:15695 +#: src/emc/usr_intf/pncconf/pncconf.glade:15747 +#: src/emc/usr_intf/pncconf/pncconf.glade:15799 +#: src/emc/usr_intf/pncconf/pncconf.glade:15851 +#: src/emc/usr_intf/pncconf/pncconf.glade:15903 +#: src/emc/usr_intf/pncconf/pncconf.glade:15955 +#: src/emc/usr_intf/pncconf/pncconf.glade:16007 +#: src/emc/usr_intf/pncconf/pncconf.glade:16059 +#: src/emc/usr_intf/pncconf/pncconf.glade:16111 +#: src/emc/usr_intf/pncconf/pncconf.glade:16540 +#: src/emc/usr_intf/pncconf/pncconf.glade:16592 +#: src/emc/usr_intf/pncconf/pncconf.glade:17253 +#: src/emc/usr_intf/pncconf/pncconf.glade:17305 +#: src/emc/usr_intf/pncconf/pncconf.glade:17357 +#: src/emc/usr_intf/pncconf/pncconf.glade:18196 +#: src/emc/usr_intf/pncconf/pncconf.glade:18248 +#: src/emc/usr_intf/pncconf/pncconf.glade:18300 +#: src/emc/usr_intf/pncconf/pncconf.glade:18352 +#: src/emc/usr_intf/pncconf/pncconf.glade:18404 +#: src/emc/usr_intf/pncconf/pncconf.glade:18456 +#: src/emc/usr_intf/pncconf/pncconf.glade:18508 +#: src/emc/usr_intf/pncconf/pncconf.glade:18560 +#: src/emc/usr_intf/pncconf/pncconf.glade:18612 +#: src/emc/usr_intf/pncconf/pncconf.glade:18664 +#: src/emc/usr_intf/pncconf/pncconf.glade:18716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26612 +#: src/emc/usr_intf/pncconf/pncconf.glade:26664 +#: src/emc/usr_intf/pncconf/pncconf.glade:26716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26768 +#: src/emc/usr_intf/pncconf/pncconf.glade:26820 +#: src/emc/usr_intf/pncconf/pncconf.glade:26872 +#: src/emc/usr_intf/pncconf/pncconf.glade:26924 +#: src/emc/usr_intf/pncconf/pncconf.glade:26976 +#: src/emc/usr_intf/pncconf/pncconf.glade:27028 +#: src/emc/usr_intf/pncconf/pncconf.glade:27080 +#: src/emc/usr_intf/pncconf/pncconf.glade:27132 +#: src/emc/usr_intf/pncconf/pncconf.glade:27184 +#: src/emc/usr_intf/pncconf/pncconf.glade:28011 +#: src/emc/usr_intf/pncconf/pncconf.glade:28063 +#: src/emc/usr_intf/pncconf/pncconf.glade:28115 +#: src/emc/usr_intf/pncconf/pncconf.glade:28167 +#: src/emc/usr_intf/pncconf/pncconf.glade:29507 +#: src/emc/usr_intf/pncconf/pncconf.glade:29559 +#: src/emc/usr_intf/pncconf/pncconf.glade:29611 +#: src/emc/usr_intf/pncconf/pncconf.glade:29663 +#: src/emc/usr_intf/pncconf/pncconf.glade:30490 +#: src/emc/usr_intf/pncconf/pncconf.glade:30542 +#: src/emc/usr_intf/pncconf/pncconf.glade:30594 +#: src/emc/usr_intf/pncconf/pncconf.glade:30646 +#: src/emc/usr_intf/pncconf/pncconf.glade:30698 +#: src/emc/usr_intf/pncconf/pncconf.glade:30750 +#: src/emc/usr_intf/pncconf/pncconf.glade:30802 +#: src/emc/usr_intf/pncconf/pncconf.glade:30854 +#: src/emc/usr_intf/pncconf/pncconf.glade:30906 +#: src/emc/usr_intf/pncconf/pncconf.glade:30958 +#: src/emc/usr_intf/pncconf/pncconf.glade:31010 +#: src/emc/usr_intf/pncconf/pncconf.glade:31062 +#: src/emc/usr_intf/pncconf/pncconf.glade:31878 +#: src/emc/usr_intf/pncconf/pncconf.glade:31930 +#: src/emc/usr_intf/pncconf/pncconf.glade:31982 +#: src/emc/usr_intf/pncconf/pncconf.glade:32034 +#: src/emc/usr_intf/pncconf/pncconf.glade:32086 +#: src/emc/usr_intf/pncconf/pncconf.glade:32138 +#: src/emc/usr_intf/pncconf/pncconf.glade:32190 +#: src/emc/usr_intf/pncconf/pncconf.glade:32242 +#: src/emc/usr_intf/pncconf/pncconf.glade:32294 +#: src/emc/usr_intf/pncconf/pncconf.glade:32346 +#: src/emc/usr_intf/pncconf/pncconf.glade:32398 +#: src/emc/usr_intf/pncconf/pncconf.glade:32450 +#: src/emc/usr_intf/pncconf/pncconf.glade:33852 +#: src/emc/usr_intf/pncconf/pncconf.glade:33904 +#: src/emc/usr_intf/pncconf/pncconf.glade:33956 +#: src/emc/usr_intf/pncconf/pncconf.glade:34008 +#: src/emc/usr_intf/pncconf/pncconf.glade:34835 +#: src/emc/usr_intf/pncconf/pncconf.glade:34887 +#: src/emc/usr_intf/pncconf/pncconf.glade:34939 +#: src/emc/usr_intf/pncconf/pncconf.glade:34991 +#: src/emc/usr_intf/pncconf/pncconf.glade:35043 +#: src/emc/usr_intf/pncconf/pncconf.glade:35095 +#: src/emc/usr_intf/pncconf/pncconf.glade:35147 +#: src/emc/usr_intf/pncconf/pncconf.glade:35199 +#: src/emc/usr_intf/pncconf/pncconf.glade:35251 +#: src/emc/usr_intf/pncconf/pncconf.glade:35303 +#: src/emc/usr_intf/pncconf/pncconf.glade:35355 +#: src/emc/usr_intf/pncconf/pncconf.glade:35407 +#: src/emc/usr_intf/pncconf/pncconf.glade:36096 +#: src/emc/usr_intf/pncconf/pncconf.glade:36148 +#: src/emc/usr_intf/pncconf/pncconf.glade:36200 +#: src/emc/usr_intf/pncconf/pncconf.glade:36252 +#: src/emc/usr_intf/pncconf/pncconf.glade:36304 +#: src/emc/usr_intf/pncconf/pncconf.glade:36356 +#: src/emc/usr_intf/pncconf/pncconf.glade:36408 +#: src/emc/usr_intf/pncconf/pncconf.glade:36460 +#: src/emc/usr_intf/pncconf/pncconf.glade:36512 +#: src/emc/usr_intf/pncconf/pncconf.glade:36564 +#: src/emc/usr_intf/pncconf/pncconf.glade:36616 +#: src/emc/usr_intf/pncconf/pncconf.glade:36668 +#: src/emc/usr_intf/pncconf/pncconf.glade:37495 +#: src/emc/usr_intf/pncconf/pncconf.glade:37547 +#: src/emc/usr_intf/pncconf/pncconf.glade:37599 +#: src/emc/usr_intf/pncconf/pncconf.glade:37651 +#: src/emc/usr_intf/pncconf/pncconf.glade:39168 +#: src/emc/usr_intf/pncconf/pncconf.glade:39220 +#: src/emc/usr_intf/pncconf/pncconf.glade:39272 +#: src/emc/usr_intf/pncconf/pncconf.glade:39324 +#: src/emc/usr_intf/pncconf/pncconf.glade:39376 +#: src/emc/usr_intf/pncconf/pncconf.glade:39428 +#: src/emc/usr_intf/pncconf/pncconf.glade:39480 +#: src/emc/usr_intf/pncconf/pncconf.glade:39532 +#: src/emc/usr_intf/pncconf/pncconf.glade:39584 +#: src/emc/usr_intf/pncconf/pncconf.glade:39636 +#: src/emc/usr_intf/pncconf/pncconf.glade:39688 +#: src/emc/usr_intf/pncconf/pncconf.glade:39740 +#: src/emc/usr_intf/pncconf/pncconf.glade:40456 +#: src/emc/usr_intf/pncconf/pncconf.glade:40508 +#: src/emc/usr_intf/pncconf/pncconf.glade:40560 +#: src/emc/usr_intf/pncconf/pncconf.glade:40612 +#: src/emc/usr_intf/pncconf/pncconf.glade:40664 +#: src/emc/usr_intf/pncconf/pncconf.glade:40716 +#: src/emc/usr_intf/pncconf/pncconf.glade:40768 +#: src/emc/usr_intf/pncconf/pncconf.glade:40820 +#: src/emc/usr_intf/pncconf/pncconf.glade:40872 +#: src/emc/usr_intf/pncconf/pncconf.glade:40924 +#: src/emc/usr_intf/pncconf/pncconf.glade:40976 +#: src/emc/usr_intf/pncconf/pncconf.glade:41028 +#: src/emc/usr_intf/pncconf/pncconf.glade:41855 +#: src/emc/usr_intf/pncconf/pncconf.glade:41907 +#: src/emc/usr_intf/pncconf/pncconf.glade:41959 +#: src/emc/usr_intf/pncconf/pncconf.glade:42011 +#: src/emc/usr_intf/pncconf/pncconf.glade:43351 +#: src/emc/usr_intf/pncconf/pncconf.glade:43403 +#: src/emc/usr_intf/pncconf/pncconf.glade:43455 +#: src/emc/usr_intf/pncconf/pncconf.glade:43507 +#: src/emc/usr_intf/pncconf/pncconf.glade:44334 +#: src/emc/usr_intf/pncconf/pncconf.glade:44386 +#: src/emc/usr_intf/pncconf/pncconf.glade:44438 +#: src/emc/usr_intf/pncconf/pncconf.glade:44490 +#: src/emc/usr_intf/pncconf/pncconf.glade:44542 +#: src/emc/usr_intf/pncconf/pncconf.glade:44594 +#: src/emc/usr_intf/pncconf/pncconf.glade:44646 +#: src/emc/usr_intf/pncconf/pncconf.glade:44698 +#: src/emc/usr_intf/pncconf/pncconf.glade:44750 +#: src/emc/usr_intf/pncconf/pncconf.glade:44802 +#: src/emc/usr_intf/pncconf/pncconf.glade:44854 +#: src/emc/usr_intf/pncconf/pncconf.glade:44906 +#: src/emc/usr_intf/pncconf/pncconf.glade:45711 +#: src/emc/usr_intf/pncconf/pncconf.glade:45763 +#: src/emc/usr_intf/pncconf/pncconf.glade:45815 +#: src/emc/usr_intf/pncconf/pncconf.glade:45867 +#: src/emc/usr_intf/pncconf/pncconf.glade:45919 +#: src/emc/usr_intf/pncconf/pncconf.glade:45971 +#: src/emc/usr_intf/pncconf/pncconf.glade:46023 +#: src/emc/usr_intf/pncconf/pncconf.glade:46075 +#: src/emc/usr_intf/pncconf/pncconf.glade:46127 +#: src/emc/usr_intf/pncconf/pncconf.glade:46179 +#: src/emc/usr_intf/pncconf/pncconf.glade:46231 +#: src/emc/usr_intf/pncconf/pncconf.glade:46283 +#: src/emc/usr_intf/pncconf/pncconf.glade:47379 +#: src/emc/usr_intf/pncconf/pncconf.glade:47431 +#: src/emc/usr_intf/pncconf/pncconf.glade:47483 +#: src/emc/usr_intf/pncconf/pncconf.glade:47535 +#: src/emc/usr_intf/pncconf/pncconf.glade:47587 +#: src/emc/usr_intf/pncconf/pncconf.glade:47639 +#: src/emc/usr_intf/pncconf/pncconf.glade:47691 +#: src/emc/usr_intf/pncconf/pncconf.glade:47743 +#: src/emc/usr_intf/pncconf/pncconf.glade:47795 +#: src/emc/usr_intf/pncconf/pncconf.glade:47847 +#: src/emc/usr_intf/pncconf/pncconf.glade:47899 +#: src/emc/usr_intf/pncconf/pncconf.glade:47951 +#: src/emc/usr_intf/pncconf/pncconf.glade:48778 +#: src/emc/usr_intf/pncconf/pncconf.glade:48830 +#: src/emc/usr_intf/pncconf/pncconf.glade:48882 +#: src/emc/usr_intf/pncconf/pncconf.glade:48934 +#: src/emc/usr_intf/pncconf/pncconf.glade:50274 +#: src/emc/usr_intf/pncconf/pncconf.glade:50326 +#: src/emc/usr_intf/pncconf/pncconf.glade:50378 +#: src/emc/usr_intf/pncconf/pncconf.glade:50430 +#: src/emc/usr_intf/pncconf/pncconf.glade:51257 +#: src/emc/usr_intf/pncconf/pncconf.glade:51309 +#: src/emc/usr_intf/pncconf/pncconf.glade:51361 +#: src/emc/usr_intf/pncconf/pncconf.glade:51413 +#: src/emc/usr_intf/pncconf/pncconf.glade:51465 +#: src/emc/usr_intf/pncconf/pncconf.glade:51517 +#: src/emc/usr_intf/pncconf/pncconf.glade:51569 +#: src/emc/usr_intf/pncconf/pncconf.glade:51621 +#: src/emc/usr_intf/pncconf/pncconf.glade:51673 +#: src/emc/usr_intf/pncconf/pncconf.glade:51725 +#: src/emc/usr_intf/pncconf/pncconf.glade:51777 +#: src/emc/usr_intf/pncconf/pncconf.glade:51829 +#: src/emc/usr_intf/pncconf/pncconf.glade:52634 +#: src/emc/usr_intf/pncconf/pncconf.glade:52686 +#: src/emc/usr_intf/pncconf/pncconf.glade:52738 +#: src/emc/usr_intf/pncconf/pncconf.glade:52790 +#: src/emc/usr_intf/pncconf/pncconf.glade:52842 +#: src/emc/usr_intf/pncconf/pncconf.glade:52894 +#: src/emc/usr_intf/pncconf/pncconf.glade:52946 +#: src/emc/usr_intf/pncconf/pncconf.glade:52998 +#: src/emc/usr_intf/pncconf/pncconf.glade:53050 +#: src/emc/usr_intf/pncconf/pncconf.glade:53102 +#: src/emc/usr_intf/pncconf/pncconf.glade:53154 +#: src/emc/usr_intf/pncconf/pncconf.glade:53206 +#: src/emc/usr_intf/pncconf/pncconf.glade:54302 +#: src/emc/usr_intf/pncconf/pncconf.glade:54354 +#: src/emc/usr_intf/pncconf/pncconf.glade:54406 +#: src/emc/usr_intf/pncconf/pncconf.glade:54458 +#: src/emc/usr_intf/pncconf/pncconf.glade:54510 +#: src/emc/usr_intf/pncconf/pncconf.glade:54562 +#: src/emc/usr_intf/pncconf/pncconf.glade:54614 +#: src/emc/usr_intf/pncconf/pncconf.glade:54666 +#: src/emc/usr_intf/pncconf/pncconf.glade:54718 +#: src/emc/usr_intf/pncconf/pncconf.glade:54770 +#: src/emc/usr_intf/pncconf/pncconf.glade:54822 +#: src/emc/usr_intf/pncconf/pncconf.glade:54874 +#: src/emc/usr_intf/pncconf/pncconf.glade:55701 +#: src/emc/usr_intf/pncconf/pncconf.glade:55753 +#: src/emc/usr_intf/pncconf/pncconf.glade:55805 +#: src/emc/usr_intf/pncconf/pncconf.glade:55857 +#: src/emc/usr_intf/pncconf/pncconf.glade:57197 +#: src/emc/usr_intf/pncconf/pncconf.glade:57249 +#: src/emc/usr_intf/pncconf/pncconf.glade:57301 +#: src/emc/usr_intf/pncconf/pncconf.glade:57353 +#: src/emc/usr_intf/pncconf/pncconf.glade:58180 +#: src/emc/usr_intf/pncconf/pncconf.glade:58232 +#: src/emc/usr_intf/pncconf/pncconf.glade:58284 +#: src/emc/usr_intf/pncconf/pncconf.glade:58336 +#: src/emc/usr_intf/pncconf/pncconf.glade:58388 +#: src/emc/usr_intf/pncconf/pncconf.glade:58440 +#: src/emc/usr_intf/pncconf/pncconf.glade:58492 +#: src/emc/usr_intf/pncconf/pncconf.glade:58544 +#: src/emc/usr_intf/pncconf/pncconf.glade:58596 +#: src/emc/usr_intf/pncconf/pncconf.glade:58648 +#: src/emc/usr_intf/pncconf/pncconf.glade:58700 +#: src/emc/usr_intf/pncconf/pncconf.glade:58752 +#: src/emc/usr_intf/pncconf/pncconf.glade:59557 +#: src/emc/usr_intf/pncconf/pncconf.glade:59609 +#: src/emc/usr_intf/pncconf/pncconf.glade:59661 +#: src/emc/usr_intf/pncconf/pncconf.glade:59713 +#: src/emc/usr_intf/pncconf/pncconf.glade:59765 +#: src/emc/usr_intf/pncconf/pncconf.glade:59817 +#: src/emc/usr_intf/pncconf/pncconf.glade:59869 +#: src/emc/usr_intf/pncconf/pncconf.glade:59921 +#: src/emc/usr_intf/pncconf/pncconf.glade:59973 +#: src/emc/usr_intf/pncconf/pncconf.glade:60025 +#: src/emc/usr_intf/pncconf/pncconf.glade:60077 +#: src/emc/usr_intf/pncconf/pncconf.glade:60129 +msgid "" +"ESTOP IN\n" +"Spindle PPR\n" +"Spindle A \n" +"Spindle B \n" +"Home X \n" +"Home Y \n" +"Home Z\n" +"Home A\n" +"Minimum Limit + Home X \n" +"Minimum Limit + Home Y \n" +"Minimum Limit + Home Z \n" +"Minimum Limit + Home A\n" +"Maximum Limit + Home X \n" +"Maximum Limit + Home Y \n" +"Maximum Limit + Home Z \n" +"Maximum Limit + Home A\n" +"Both Limit + Home X \n" +"Both Limit + Home Y \n" +"Both Limit + Home Z \n" +"Both Limit + Home A\n" +"Minimum Limit X \n" +"Minimum Limit Y \n" +"Minimum Limit Z \n" +"Minimum Limit A\n" +"Maximum Limit X \n" +"Maximum Limit Y \n" +"Maximum Limit Z \n" +"Maximum Limit A\n" +"Both Limit X \n" +"Both Limit Y \n" +"Both Limit Z \n" +"Both Limit A\n" +"All limits\n" +"All home\n" +"Unused" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5832 -#: src/emc/usr_intf/pncconf/pncconf.glade:6602 -#: src/emc/usr_intf/pncconf/pncconf.glade:6841 -#: src/emc/usr_intf/pncconf/pncconf.glade:7328 -msgid "H" +#: src/emc/usr_intf/pncconf/pncconf.glade:8825 +#: src/emc/usr_intf/pncconf/pncconf.glade:9081 +#: src/emc/usr_intf/pncconf/pncconf.glade:13563 +#: src/emc/usr_intf/pncconf/pncconf.glade:13818 +#: src/emc/usr_intf/pncconf/pncconf.glade:16164 +#: src/emc/usr_intf/pncconf/pncconf.glade:16410 +#: src/emc/usr_intf/pncconf/pncconf.glade:18769 +#: src/emc/usr_intf/pncconf/pncconf.glade:19024 +#: src/emc/usr_intf/pncconf/pncconf.glade:20571 +#: src/emc/usr_intf/pncconf/pncconf.glade:20820 +#: src/emc/usr_intf/pncconf/pncconf.glade:20949 +#: src/emc/usr_intf/pncconf/pncconf.glade:21199 +#: src/emc/usr_intf/pncconf/pncconf.glade:22745 +#: src/emc/usr_intf/pncconf/pncconf.glade:22995 +#: src/emc/usr_intf/pncconf/pncconf.glade:24541 +#: src/emc/usr_intf/pncconf/pncconf.glade:24791 +#: src/emc/usr_intf/pncconf/pncconf.glade:26353 +#: src/emc/usr_intf/pncconf/pncconf.glade:26600 +#: src/emc/usr_intf/pncconf/pncconf.glade:31115 +#: src/emc/usr_intf/pncconf/pncconf.glade:31361 +#: src/emc/usr_intf/pncconf/pncconf.glade:31621 +#: src/emc/usr_intf/pncconf/pncconf.glade:35460 +#: src/emc/usr_intf/pncconf/pncconf.glade:35706 +#: src/emc/usr_intf/pncconf/pncconf.glade:35837 +#: src/emc/usr_intf/pncconf/pncconf.glade:36084 +#: src/emc/usr_intf/pncconf/pncconf.glade:40037 +#: src/emc/usr_intf/pncconf/pncconf.glade:40197 +#: src/emc/usr_intf/pncconf/pncconf.glade:40444 +#: src/emc/usr_intf/pncconf/pncconf.glade:44959 +#: src/emc/usr_intf/pncconf/pncconf.glade:45205 +#: src/emc/usr_intf/pncconf/pncconf.glade:45454 +#: src/emc/usr_intf/pncconf/pncconf.glade:47120 +#: src/emc/usr_intf/pncconf/pncconf.glade:47367 +#: src/emc/usr_intf/pncconf/pncconf.glade:51882 +#: src/emc/usr_intf/pncconf/pncconf.glade:52128 +#: src/emc/usr_intf/pncconf/pncconf.glade:52377 +#: src/emc/usr_intf/pncconf/pncconf.glade:54043 +#: src/emc/usr_intf/pncconf/pncconf.glade:54290 +#: src/emc/usr_intf/pncconf/pncconf.glade:58805 +#: src/emc/usr_intf/pncconf/pncconf.glade:59051 +#: src/emc/usr_intf/pncconf/pncconf.glade:59300 +msgid "Pin Type" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5866 -#: src/emc/usr_intf/pncconf/pncconf.glade:6568 -#: src/emc/usr_intf/pncconf/pncconf.glade:6875 -#: src/emc/usr_intf/pncconf/pncconf.glade:7294 -msgid "W" +#: src/emc/usr_intf/pncconf/pncconf.glade:8838 +#: src/emc/usr_intf/pncconf/pncconf.glade:8900 +#: src/emc/usr_intf/pncconf/pncconf.glade:13743 +#: src/emc/usr_intf/pncconf/pncconf.glade:13806 +#: src/emc/usr_intf/pncconf/pncconf.glade:16335 +#: src/emc/usr_intf/pncconf/pncconf.glade:16398 +#: src/emc/usr_intf/pncconf/pncconf.glade:18949 +#: src/emc/usr_intf/pncconf/pncconf.glade:19012 +#: src/emc/usr_intf/pncconf/pncconf.glade:20751 +#: src/emc/usr_intf/pncconf/pncconf.glade:20808 +#: src/emc/usr_intf/pncconf/pncconf.glade:20962 +#: src/emc/usr_intf/pncconf/pncconf.glade:21018 +#: src/emc/usr_intf/pncconf/pncconf.glade:22758 +#: src/emc/usr_intf/pncconf/pncconf.glade:22814 +#: src/emc/usr_intf/pncconf/pncconf.glade:24554 +#: src/emc/usr_intf/pncconf/pncconf.glade:24610 +#: src/emc/usr_intf/pncconf/pncconf.glade:26366 +#: src/emc/usr_intf/pncconf/pncconf.glade:26428 +#: src/emc/usr_intf/pncconf/pncconf.glade:31286 +#: src/emc/usr_intf/pncconf/pncconf.glade:31349 +#: src/emc/usr_intf/pncconf/pncconf.glade:31634 +#: src/emc/usr_intf/pncconf/pncconf.glade:35631 +#: src/emc/usr_intf/pncconf/pncconf.glade:35694 +#: src/emc/usr_intf/pncconf/pncconf.glade:35850 +#: src/emc/usr_intf/pncconf/pncconf.glade:35912 +#: src/emc/usr_intf/pncconf/pncconf.glade:40025 +#: src/emc/usr_intf/pncconf/pncconf.glade:40210 +#: src/emc/usr_intf/pncconf/pncconf.glade:40272 +#: src/emc/usr_intf/pncconf/pncconf.glade:45130 +#: src/emc/usr_intf/pncconf/pncconf.glade:45193 +#: src/emc/usr_intf/pncconf/pncconf.glade:45467 +#: src/emc/usr_intf/pncconf/pncconf.glade:47133 +#: src/emc/usr_intf/pncconf/pncconf.glade:47195 +#: src/emc/usr_intf/pncconf/pncconf.glade:52053 +#: src/emc/usr_intf/pncconf/pncconf.glade:52116 +#: src/emc/usr_intf/pncconf/pncconf.glade:52390 +#: src/emc/usr_intf/pncconf/pncconf.glade:54056 +#: src/emc/usr_intf/pncconf/pncconf.glade:54118 +#: src/emc/usr_intf/pncconf/pncconf.glade:58976 +#: src/emc/usr_intf/pncconf/pncconf.glade:59039 +#: src/emc/usr_intf/pncconf/pncconf.glade:59313 +msgid "Inv" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5876 -#: src/emc/usr_intf/pncconf/pncconf.glade:6556 -#: src/emc/usr_intf/pncconf/pncconf.glade:6885 -#: src/emc/usr_intf/pncconf/pncconf.glade:7282 -msgid "X" +#: src/emc/usr_intf/pncconf/pncconf.glade:8867 +#: src/emc/usr_intf/pncconf/pncconf.glade:10731 +#: src/emc/usr_intf/pncconf/pncconf.glade:10751 +#: src/emc/usr_intf/pncconf/pncconf.glade:10771 +#: src/emc/usr_intf/pncconf/pncconf.glade:10791 +#: src/emc/usr_intf/pncconf/pncconf.glade:10811 +#: src/emc/usr_intf/pncconf/pncconf.glade:10831 +#: src/emc/usr_intf/pncconf/pncconf.glade:10851 +#: src/emc/usr_intf/pncconf/pncconf.glade:10871 +#: src/emc/usr_intf/pncconf/pncconf.glade:10891 +#: src/emc/usr_intf/pncconf/pncconf.glade:10911 +#: src/emc/usr_intf/pncconf/pncconf.glade:10931 +#: src/emc/usr_intf/pncconf/pncconf.glade:10951 +#: src/emc/usr_intf/pncconf/pncconf.glade:10971 +#: src/emc/usr_intf/pncconf/pncconf.glade:10991 +#: src/emc/usr_intf/pncconf/pncconf.glade:11011 +#: src/emc/usr_intf/pncconf/pncconf.glade:11031 +#: src/emc/usr_intf/pncconf/pncconf.glade:11051 +#: src/emc/usr_intf/pncconf/pncconf.glade:11071 +#: src/emc/usr_intf/pncconf/pncconf.glade:11091 +#: src/emc/usr_intf/pncconf/pncconf.glade:11111 +#: src/emc/usr_intf/pncconf/pncconf.glade:11131 +#: src/emc/usr_intf/pncconf/pncconf.glade:11151 +#: src/emc/usr_intf/pncconf/pncconf.glade:11171 +#: src/emc/usr_intf/pncconf/pncconf.glade:11465 +#: src/emc/usr_intf/pncconf/pncconf.glade:11485 +#: src/emc/usr_intf/pncconf/pncconf.glade:11505 +#: src/emc/usr_intf/pncconf/pncconf.glade:11525 +#: src/emc/usr_intf/pncconf/pncconf.glade:11545 +#: src/emc/usr_intf/pncconf/pncconf.glade:11565 +#: src/emc/usr_intf/pncconf/pncconf.glade:11585 +#: src/emc/usr_intf/pncconf/pncconf.glade:11605 +#: src/emc/usr_intf/pncconf/pncconf.glade:11625 +#: src/emc/usr_intf/pncconf/pncconf.glade:11645 +#: src/emc/usr_intf/pncconf/pncconf.glade:11665 +#: src/emc/usr_intf/pncconf/pncconf.glade:11685 +#: src/emc/usr_intf/pncconf/pncconf.glade:11705 +#: src/emc/usr_intf/pncconf/pncconf.glade:11725 +#: src/emc/usr_intf/pncconf/pncconf.glade:11745 +#: src/emc/usr_intf/pncconf/pncconf.glade:11765 +#: src/emc/usr_intf/pncconf/pncconf.glade:11785 +#: src/emc/usr_intf/pncconf/pncconf.glade:11805 +#: src/emc/usr_intf/pncconf/pncconf.glade:11825 +#: src/emc/usr_intf/pncconf/pncconf.glade:11845 +#: src/emc/usr_intf/pncconf/pncconf.glade:11865 +#: src/emc/usr_intf/pncconf/pncconf.glade:11885 +#: src/emc/usr_intf/pncconf/pncconf.glade:11905 +#: src/emc/usr_intf/pncconf/pncconf.glade:13768 +#: src/emc/usr_intf/pncconf/pncconf.glade:13974 +#: src/emc/usr_intf/pncconf/pncconf.glade:13994 +#: src/emc/usr_intf/pncconf/pncconf.glade:14014 +#: src/emc/usr_intf/pncconf/pncconf.glade:14034 +#: src/emc/usr_intf/pncconf/pncconf.glade:14054 +#: src/emc/usr_intf/pncconf/pncconf.glade:14074 +#: src/emc/usr_intf/pncconf/pncconf.glade:14094 +#: src/emc/usr_intf/pncconf/pncconf.glade:14114 +#: src/emc/usr_intf/pncconf/pncconf.glade:14134 +#: src/emc/usr_intf/pncconf/pncconf.glade:14154 +#: src/emc/usr_intf/pncconf/pncconf.glade:14174 +#: src/emc/usr_intf/pncconf/pncconf.glade:14194 +#: src/emc/usr_intf/pncconf/pncconf.glade:14214 +#: src/emc/usr_intf/pncconf/pncconf.glade:14234 +#: src/emc/usr_intf/pncconf/pncconf.glade:14254 +#: src/emc/usr_intf/pncconf/pncconf.glade:14274 +#: src/emc/usr_intf/pncconf/pncconf.glade:14294 +#: src/emc/usr_intf/pncconf/pncconf.glade:14314 +#: src/emc/usr_intf/pncconf/pncconf.glade:14334 +#: src/emc/usr_intf/pncconf/pncconf.glade:14354 +#: src/emc/usr_intf/pncconf/pncconf.glade:14374 +#: src/emc/usr_intf/pncconf/pncconf.glade:14394 +#: src/emc/usr_intf/pncconf/pncconf.glade:14414 +#: src/emc/usr_intf/pncconf/pncconf.glade:16360 +#: src/emc/usr_intf/pncconf/pncconf.glade:16670 +#: src/emc/usr_intf/pncconf/pncconf.glade:16690 +#: src/emc/usr_intf/pncconf/pncconf.glade:16710 +#: src/emc/usr_intf/pncconf/pncconf.glade:16730 +#: src/emc/usr_intf/pncconf/pncconf.glade:16750 +#: src/emc/usr_intf/pncconf/pncconf.glade:16770 +#: src/emc/usr_intf/pncconf/pncconf.glade:16790 +#: src/emc/usr_intf/pncconf/pncconf.glade:16810 +#: src/emc/usr_intf/pncconf/pncconf.glade:16830 +#: src/emc/usr_intf/pncconf/pncconf.glade:16850 +#: src/emc/usr_intf/pncconf/pncconf.glade:16870 +#: src/emc/usr_intf/pncconf/pncconf.glade:16890 +#: src/emc/usr_intf/pncconf/pncconf.glade:16910 +#: src/emc/usr_intf/pncconf/pncconf.glade:16930 +#: src/emc/usr_intf/pncconf/pncconf.glade:16950 +#: src/emc/usr_intf/pncconf/pncconf.glade:16970 +#: src/emc/usr_intf/pncconf/pncconf.glade:16990 +#: src/emc/usr_intf/pncconf/pncconf.glade:17010 +#: src/emc/usr_intf/pncconf/pncconf.glade:17030 +#: src/emc/usr_intf/pncconf/pncconf.glade:17050 +#: src/emc/usr_intf/pncconf/pncconf.glade:17070 +#: src/emc/usr_intf/pncconf/pncconf.glade:17090 +#: src/emc/usr_intf/pncconf/pncconf.glade:17110 +#: src/emc/usr_intf/pncconf/pncconf.glade:18974 +#: src/emc/usr_intf/pncconf/pncconf.glade:26395 +#: src/emc/usr_intf/pncconf/pncconf.glade:28311 +#: src/emc/usr_intf/pncconf/pncconf.glade:28331 +#: src/emc/usr_intf/pncconf/pncconf.glade:28351 +#: src/emc/usr_intf/pncconf/pncconf.glade:28371 +#: src/emc/usr_intf/pncconf/pncconf.glade:28391 +#: src/emc/usr_intf/pncconf/pncconf.glade:28411 +#: src/emc/usr_intf/pncconf/pncconf.glade:28431 +#: src/emc/usr_intf/pncconf/pncconf.glade:28451 +#: src/emc/usr_intf/pncconf/pncconf.glade:28471 +#: src/emc/usr_intf/pncconf/pncconf.glade:28491 +#: src/emc/usr_intf/pncconf/pncconf.glade:28511 +#: src/emc/usr_intf/pncconf/pncconf.glade:28531 +#: src/emc/usr_intf/pncconf/pncconf.glade:28551 +#: src/emc/usr_intf/pncconf/pncconf.glade:28571 +#: src/emc/usr_intf/pncconf/pncconf.glade:28591 +#: src/emc/usr_intf/pncconf/pncconf.glade:28611 +#: src/emc/usr_intf/pncconf/pncconf.glade:28631 +#: src/emc/usr_intf/pncconf/pncconf.glade:28651 +#: src/emc/usr_intf/pncconf/pncconf.glade:28671 +#: src/emc/usr_intf/pncconf/pncconf.glade:28691 +#: src/emc/usr_intf/pncconf/pncconf.glade:28711 +#: src/emc/usr_intf/pncconf/pncconf.glade:28731 +#: src/emc/usr_intf/pncconf/pncconf.glade:28751 +#: src/emc/usr_intf/pncconf/pncconf.glade:28942 +#: src/emc/usr_intf/pncconf/pncconf.glade:28962 +#: src/emc/usr_intf/pncconf/pncconf.glade:28982 +#: src/emc/usr_intf/pncconf/pncconf.glade:29002 +#: src/emc/usr_intf/pncconf/pncconf.glade:29022 +#: src/emc/usr_intf/pncconf/pncconf.glade:29042 +#: src/emc/usr_intf/pncconf/pncconf.glade:29062 +#: src/emc/usr_intf/pncconf/pncconf.glade:29082 +#: src/emc/usr_intf/pncconf/pncconf.glade:29102 +#: src/emc/usr_intf/pncconf/pncconf.glade:29122 +#: src/emc/usr_intf/pncconf/pncconf.glade:29142 +#: src/emc/usr_intf/pncconf/pncconf.glade:29162 +#: src/emc/usr_intf/pncconf/pncconf.glade:29182 +#: src/emc/usr_intf/pncconf/pncconf.glade:29202 +#: src/emc/usr_intf/pncconf/pncconf.glade:29222 +#: src/emc/usr_intf/pncconf/pncconf.glade:29242 +#: src/emc/usr_intf/pncconf/pncconf.glade:29262 +#: src/emc/usr_intf/pncconf/pncconf.glade:29282 +#: src/emc/usr_intf/pncconf/pncconf.glade:29302 +#: src/emc/usr_intf/pncconf/pncconf.glade:29322 +#: src/emc/usr_intf/pncconf/pncconf.glade:29342 +#: src/emc/usr_intf/pncconf/pncconf.glade:29362 +#: src/emc/usr_intf/pncconf/pncconf.glade:29382 +#: src/emc/usr_intf/pncconf/pncconf.glade:31311 +#: src/emc/usr_intf/pncconf/pncconf.glade:31663 +#: src/emc/usr_intf/pncconf/pncconf.glade:32881 +#: src/emc/usr_intf/pncconf/pncconf.glade:32901 +#: src/emc/usr_intf/pncconf/pncconf.glade:32921 +#: src/emc/usr_intf/pncconf/pncconf.glade:32941 +#: src/emc/usr_intf/pncconf/pncconf.glade:32961 +#: src/emc/usr_intf/pncconf/pncconf.glade:32981 +#: src/emc/usr_intf/pncconf/pncconf.glade:33001 +#: src/emc/usr_intf/pncconf/pncconf.glade:33021 +#: src/emc/usr_intf/pncconf/pncconf.glade:33041 +#: src/emc/usr_intf/pncconf/pncconf.glade:33061 +#: src/emc/usr_intf/pncconf/pncconf.glade:33081 +#: src/emc/usr_intf/pncconf/pncconf.glade:33300 +#: src/emc/usr_intf/pncconf/pncconf.glade:33320 +#: src/emc/usr_intf/pncconf/pncconf.glade:33340 +#: src/emc/usr_intf/pncconf/pncconf.glade:33360 +#: src/emc/usr_intf/pncconf/pncconf.glade:33380 +#: src/emc/usr_intf/pncconf/pncconf.glade:33400 +#: src/emc/usr_intf/pncconf/pncconf.glade:33420 +#: src/emc/usr_intf/pncconf/pncconf.glade:33440 +#: src/emc/usr_intf/pncconf/pncconf.glade:33460 +#: src/emc/usr_intf/pncconf/pncconf.glade:33480 +#: src/emc/usr_intf/pncconf/pncconf.glade:33500 +#: src/emc/usr_intf/pncconf/pncconf.glade:33520 +#: src/emc/usr_intf/pncconf/pncconf.glade:33540 +#: src/emc/usr_intf/pncconf/pncconf.glade:33560 +#: src/emc/usr_intf/pncconf/pncconf.glade:33580 +#: src/emc/usr_intf/pncconf/pncconf.glade:33600 +#: src/emc/usr_intf/pncconf/pncconf.glade:33620 +#: src/emc/usr_intf/pncconf/pncconf.glade:33640 +#: src/emc/usr_intf/pncconf/pncconf.glade:33660 +#: src/emc/usr_intf/pncconf/pncconf.glade:33680 +#: src/emc/usr_intf/pncconf/pncconf.glade:33700 +#: src/emc/usr_intf/pncconf/pncconf.glade:33720 +#: src/emc/usr_intf/pncconf/pncconf.glade:33740 +#: src/emc/usr_intf/pncconf/pncconf.glade:35656 +#: src/emc/usr_intf/pncconf/pncconf.glade:35879 +#: src/emc/usr_intf/pncconf/pncconf.glade:37808 +#: src/emc/usr_intf/pncconf/pncconf.glade:37828 +#: src/emc/usr_intf/pncconf/pncconf.glade:37848 +#: src/emc/usr_intf/pncconf/pncconf.glade:37868 +#: src/emc/usr_intf/pncconf/pncconf.glade:37888 +#: src/emc/usr_intf/pncconf/pncconf.glade:37908 +#: src/emc/usr_intf/pncconf/pncconf.glade:37928 +#: src/emc/usr_intf/pncconf/pncconf.glade:37948 +#: src/emc/usr_intf/pncconf/pncconf.glade:37968 +#: src/emc/usr_intf/pncconf/pncconf.glade:37988 +#: src/emc/usr_intf/pncconf/pncconf.glade:38008 +#: src/emc/usr_intf/pncconf/pncconf.glade:38028 +#: src/emc/usr_intf/pncconf/pncconf.glade:38048 +#: src/emc/usr_intf/pncconf/pncconf.glade:38068 +#: src/emc/usr_intf/pncconf/pncconf.glade:38088 +#: src/emc/usr_intf/pncconf/pncconf.glade:38108 +#: src/emc/usr_intf/pncconf/pncconf.glade:38128 +#: src/emc/usr_intf/pncconf/pncconf.glade:38148 +#: src/emc/usr_intf/pncconf/pncconf.glade:38168 +#: src/emc/usr_intf/pncconf/pncconf.glade:38188 +#: src/emc/usr_intf/pncconf/pncconf.glade:38208 +#: src/emc/usr_intf/pncconf/pncconf.glade:38228 +#: src/emc/usr_intf/pncconf/pncconf.glade:38248 +#: src/emc/usr_intf/pncconf/pncconf.glade:38557 +#: src/emc/usr_intf/pncconf/pncconf.glade:38577 +#: src/emc/usr_intf/pncconf/pncconf.glade:38597 +#: src/emc/usr_intf/pncconf/pncconf.glade:38617 +#: src/emc/usr_intf/pncconf/pncconf.glade:38637 +#: src/emc/usr_intf/pncconf/pncconf.glade:38657 +#: src/emc/usr_intf/pncconf/pncconf.glade:38677 +#: src/emc/usr_intf/pncconf/pncconf.glade:38697 +#: src/emc/usr_intf/pncconf/pncconf.glade:38717 +#: src/emc/usr_intf/pncconf/pncconf.glade:38737 +#: src/emc/usr_intf/pncconf/pncconf.glade:38757 +#: src/emc/usr_intf/pncconf/pncconf.glade:39987 +#: src/emc/usr_intf/pncconf/pncconf.glade:40239 +#: src/emc/usr_intf/pncconf/pncconf.glade:42155 +#: src/emc/usr_intf/pncconf/pncconf.glade:42175 +#: src/emc/usr_intf/pncconf/pncconf.glade:42195 +#: src/emc/usr_intf/pncconf/pncconf.glade:42215 +#: src/emc/usr_intf/pncconf/pncconf.glade:42235 +#: src/emc/usr_intf/pncconf/pncconf.glade:42255 +#: src/emc/usr_intf/pncconf/pncconf.glade:42275 +#: src/emc/usr_intf/pncconf/pncconf.glade:42295 +#: src/emc/usr_intf/pncconf/pncconf.glade:42315 +#: src/emc/usr_intf/pncconf/pncconf.glade:42335 +#: src/emc/usr_intf/pncconf/pncconf.glade:42355 +#: src/emc/usr_intf/pncconf/pncconf.glade:42375 +#: src/emc/usr_intf/pncconf/pncconf.glade:42395 +#: src/emc/usr_intf/pncconf/pncconf.glade:42415 +#: src/emc/usr_intf/pncconf/pncconf.glade:42435 +#: src/emc/usr_intf/pncconf/pncconf.glade:42455 +#: src/emc/usr_intf/pncconf/pncconf.glade:42475 +#: src/emc/usr_intf/pncconf/pncconf.glade:42495 +#: src/emc/usr_intf/pncconf/pncconf.glade:42515 +#: src/emc/usr_intf/pncconf/pncconf.glade:42535 +#: src/emc/usr_intf/pncconf/pncconf.glade:42555 +#: src/emc/usr_intf/pncconf/pncconf.glade:42575 +#: src/emc/usr_intf/pncconf/pncconf.glade:42595 +#: src/emc/usr_intf/pncconf/pncconf.glade:42786 +#: src/emc/usr_intf/pncconf/pncconf.glade:42806 +#: src/emc/usr_intf/pncconf/pncconf.glade:42826 +#: src/emc/usr_intf/pncconf/pncconf.glade:42846 +#: src/emc/usr_intf/pncconf/pncconf.glade:42866 +#: src/emc/usr_intf/pncconf/pncconf.glade:42886 +#: src/emc/usr_intf/pncconf/pncconf.glade:42906 +#: src/emc/usr_intf/pncconf/pncconf.glade:42926 +#: src/emc/usr_intf/pncconf/pncconf.glade:42946 +#: src/emc/usr_intf/pncconf/pncconf.glade:42966 +#: src/emc/usr_intf/pncconf/pncconf.glade:42986 +#: src/emc/usr_intf/pncconf/pncconf.glade:43006 +#: src/emc/usr_intf/pncconf/pncconf.glade:43026 +#: src/emc/usr_intf/pncconf/pncconf.glade:43046 +#: src/emc/usr_intf/pncconf/pncconf.glade:43066 +#: src/emc/usr_intf/pncconf/pncconf.glade:43086 +#: src/emc/usr_intf/pncconf/pncconf.glade:43106 +#: src/emc/usr_intf/pncconf/pncconf.glade:43126 +#: src/emc/usr_intf/pncconf/pncconf.glade:43146 +#: src/emc/usr_intf/pncconf/pncconf.glade:43166 +#: src/emc/usr_intf/pncconf/pncconf.glade:43186 +#: src/emc/usr_intf/pncconf/pncconf.glade:43206 +#: src/emc/usr_intf/pncconf/pncconf.glade:43226 +#: src/emc/usr_intf/pncconf/pncconf.glade:45155 +#: src/emc/usr_intf/pncconf/pncconf.glade:45496 +#: src/emc/usr_intf/pncconf/pncconf.glade:46726 +#: src/emc/usr_intf/pncconf/pncconf.glade:46746 +#: src/emc/usr_intf/pncconf/pncconf.glade:46766 +#: src/emc/usr_intf/pncconf/pncconf.glade:46786 +#: src/emc/usr_intf/pncconf/pncconf.glade:46806 +#: src/emc/usr_intf/pncconf/pncconf.glade:46826 +#: src/emc/usr_intf/pncconf/pncconf.glade:46846 +#: src/emc/usr_intf/pncconf/pncconf.glade:46866 +#: src/emc/usr_intf/pncconf/pncconf.glade:46886 +#: src/emc/usr_intf/pncconf/pncconf.glade:46906 +#: src/emc/usr_intf/pncconf/pncconf.glade:46926 +#: src/emc/usr_intf/pncconf/pncconf.glade:47162 +#: src/emc/usr_intf/pncconf/pncconf.glade:49078 +#: src/emc/usr_intf/pncconf/pncconf.glade:49098 +#: src/emc/usr_intf/pncconf/pncconf.glade:49118 +#: src/emc/usr_intf/pncconf/pncconf.glade:49138 +#: src/emc/usr_intf/pncconf/pncconf.glade:49158 +#: src/emc/usr_intf/pncconf/pncconf.glade:49178 +#: src/emc/usr_intf/pncconf/pncconf.glade:49198 +#: src/emc/usr_intf/pncconf/pncconf.glade:49218 +#: src/emc/usr_intf/pncconf/pncconf.glade:49238 +#: src/emc/usr_intf/pncconf/pncconf.glade:49258 +#: src/emc/usr_intf/pncconf/pncconf.glade:49278 +#: src/emc/usr_intf/pncconf/pncconf.glade:49298 +#: src/emc/usr_intf/pncconf/pncconf.glade:49318 +#: src/emc/usr_intf/pncconf/pncconf.glade:49338 +#: src/emc/usr_intf/pncconf/pncconf.glade:49358 +#: src/emc/usr_intf/pncconf/pncconf.glade:49378 +#: src/emc/usr_intf/pncconf/pncconf.glade:49398 +#: src/emc/usr_intf/pncconf/pncconf.glade:49418 +#: src/emc/usr_intf/pncconf/pncconf.glade:49438 +#: src/emc/usr_intf/pncconf/pncconf.glade:49458 +#: src/emc/usr_intf/pncconf/pncconf.glade:49478 +#: src/emc/usr_intf/pncconf/pncconf.glade:49498 +#: src/emc/usr_intf/pncconf/pncconf.glade:49518 +#: src/emc/usr_intf/pncconf/pncconf.glade:49709 +#: src/emc/usr_intf/pncconf/pncconf.glade:49729 +#: src/emc/usr_intf/pncconf/pncconf.glade:49749 +#: src/emc/usr_intf/pncconf/pncconf.glade:49769 +#: src/emc/usr_intf/pncconf/pncconf.glade:49789 +#: src/emc/usr_intf/pncconf/pncconf.glade:49809 +#: src/emc/usr_intf/pncconf/pncconf.glade:49829 +#: src/emc/usr_intf/pncconf/pncconf.glade:49849 +#: src/emc/usr_intf/pncconf/pncconf.glade:49869 +#: src/emc/usr_intf/pncconf/pncconf.glade:49889 +#: src/emc/usr_intf/pncconf/pncconf.glade:49909 +#: src/emc/usr_intf/pncconf/pncconf.glade:49929 +#: src/emc/usr_intf/pncconf/pncconf.glade:49949 +#: src/emc/usr_intf/pncconf/pncconf.glade:49969 +#: src/emc/usr_intf/pncconf/pncconf.glade:49989 +#: src/emc/usr_intf/pncconf/pncconf.glade:50009 +#: src/emc/usr_intf/pncconf/pncconf.glade:50029 +#: src/emc/usr_intf/pncconf/pncconf.glade:50049 +#: src/emc/usr_intf/pncconf/pncconf.glade:50069 +#: src/emc/usr_intf/pncconf/pncconf.glade:50089 +#: src/emc/usr_intf/pncconf/pncconf.glade:50109 +#: src/emc/usr_intf/pncconf/pncconf.glade:50129 +#: src/emc/usr_intf/pncconf/pncconf.glade:50149 +#: src/emc/usr_intf/pncconf/pncconf.glade:52078 +#: src/emc/usr_intf/pncconf/pncconf.glade:52419 +#: src/emc/usr_intf/pncconf/pncconf.glade:53649 +#: src/emc/usr_intf/pncconf/pncconf.glade:53669 +#: src/emc/usr_intf/pncconf/pncconf.glade:53689 +#: src/emc/usr_intf/pncconf/pncconf.glade:53709 +#: src/emc/usr_intf/pncconf/pncconf.glade:53729 +#: src/emc/usr_intf/pncconf/pncconf.glade:53749 +#: src/emc/usr_intf/pncconf/pncconf.glade:53769 +#: src/emc/usr_intf/pncconf/pncconf.glade:53789 +#: src/emc/usr_intf/pncconf/pncconf.glade:53809 +#: src/emc/usr_intf/pncconf/pncconf.glade:53829 +#: src/emc/usr_intf/pncconf/pncconf.glade:53849 +#: src/emc/usr_intf/pncconf/pncconf.glade:54085 +#: src/emc/usr_intf/pncconf/pncconf.glade:56001 +#: src/emc/usr_intf/pncconf/pncconf.glade:56021 +#: src/emc/usr_intf/pncconf/pncconf.glade:56041 +#: src/emc/usr_intf/pncconf/pncconf.glade:56061 +#: src/emc/usr_intf/pncconf/pncconf.glade:56081 +#: src/emc/usr_intf/pncconf/pncconf.glade:56101 +#: src/emc/usr_intf/pncconf/pncconf.glade:56121 +#: src/emc/usr_intf/pncconf/pncconf.glade:56141 +#: src/emc/usr_intf/pncconf/pncconf.glade:56161 +#: src/emc/usr_intf/pncconf/pncconf.glade:56181 +#: src/emc/usr_intf/pncconf/pncconf.glade:56201 +#: src/emc/usr_intf/pncconf/pncconf.glade:56221 +#: src/emc/usr_intf/pncconf/pncconf.glade:56241 +#: src/emc/usr_intf/pncconf/pncconf.glade:56261 +#: src/emc/usr_intf/pncconf/pncconf.glade:56281 +#: src/emc/usr_intf/pncconf/pncconf.glade:56301 +#: src/emc/usr_intf/pncconf/pncconf.glade:56321 +#: src/emc/usr_intf/pncconf/pncconf.glade:56341 +#: src/emc/usr_intf/pncconf/pncconf.glade:56361 +#: src/emc/usr_intf/pncconf/pncconf.glade:56381 +#: src/emc/usr_intf/pncconf/pncconf.glade:56401 +#: src/emc/usr_intf/pncconf/pncconf.glade:56421 +#: src/emc/usr_intf/pncconf/pncconf.glade:56441 +#: src/emc/usr_intf/pncconf/pncconf.glade:56632 +#: src/emc/usr_intf/pncconf/pncconf.glade:56652 +#: src/emc/usr_intf/pncconf/pncconf.glade:56672 +#: src/emc/usr_intf/pncconf/pncconf.glade:56692 +#: src/emc/usr_intf/pncconf/pncconf.glade:56712 +#: src/emc/usr_intf/pncconf/pncconf.glade:56732 +#: src/emc/usr_intf/pncconf/pncconf.glade:56752 +#: src/emc/usr_intf/pncconf/pncconf.glade:56772 +#: src/emc/usr_intf/pncconf/pncconf.glade:56792 +#: src/emc/usr_intf/pncconf/pncconf.glade:56812 +#: src/emc/usr_intf/pncconf/pncconf.glade:56832 +#: src/emc/usr_intf/pncconf/pncconf.glade:56852 +#: src/emc/usr_intf/pncconf/pncconf.glade:56872 +#: src/emc/usr_intf/pncconf/pncconf.glade:56892 +#: src/emc/usr_intf/pncconf/pncconf.glade:56912 +#: src/emc/usr_intf/pncconf/pncconf.glade:56932 +#: src/emc/usr_intf/pncconf/pncconf.glade:56952 +#: src/emc/usr_intf/pncconf/pncconf.glade:56972 +#: src/emc/usr_intf/pncconf/pncconf.glade:56992 +#: src/emc/usr_intf/pncconf/pncconf.glade:57012 +#: src/emc/usr_intf/pncconf/pncconf.glade:57032 +#: src/emc/usr_intf/pncconf/pncconf.glade:57052 +#: src/emc/usr_intf/pncconf/pncconf.glade:57072 +#: src/emc/usr_intf/pncconf/pncconf.glade:59001 +#: src/emc/usr_intf/pncconf/pncconf.glade:59342 +#: src/emc/usr_intf/pncconf/pncconf.glade:60572 +#: src/emc/usr_intf/pncconf/pncconf.glade:60592 +#: src/emc/usr_intf/pncconf/pncconf.glade:60612 +#: src/emc/usr_intf/pncconf/pncconf.glade:60632 +#: src/emc/usr_intf/pncconf/pncconf.glade:60652 +#: src/emc/usr_intf/pncconf/pncconf.glade:60672 +#: src/emc/usr_intf/pncconf/pncconf.glade:60692 +#: src/emc/usr_intf/pncconf/pncconf.glade:60712 +#: src/emc/usr_intf/pncconf/pncconf.glade:60732 +#: src/emc/usr_intf/pncconf/pncconf.glade:60752 +#: src/emc/usr_intf/pncconf/pncconf.glade:60772 +msgid "" +"GPIO Input\n" +"GPIO Output\n" +"GPIO O Drain\n" +"Encoder\n" +"PWM\n" +"StepGen\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5914 -#: src/emc/usr_intf/pncconf/pncconf.glade:6519 -#: src/emc/usr_intf/pncconf/pncconf.glade:6923 -#: src/emc/usr_intf/pncconf/pncconf.glade:7244 -#, fuzzy -msgid "Position" -msgstr "動き" +#: src/emc/usr_intf/pncconf/pncconf.glade:8913 +#: src/emc/usr_intf/pncconf/pncconf.glade:13730 +#: src/emc/usr_intf/pncconf/pncconf.glade:18936 +#: src/emc/usr_intf/pncconf/pncconf.glade:20738 +#: src/emc/usr_intf/pncconf/pncconf.glade:21031 +#: src/emc/usr_intf/pncconf/pncconf.glade:22827 +#: src/emc/usr_intf/pncconf/pncconf.glade:24623 +msgid " 1:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5927 -#: src/emc/usr_intf/pncconf/pncconf.glade:6510 -#: src/emc/usr_intf/pncconf/pncconf.glade:6936 -#: src/emc/usr_intf/pncconf/pncconf.glade:7234 -msgid "size" +#: src/emc/usr_intf/pncconf/pncconf.glade:8927 +#: src/emc/usr_intf/pncconf/pncconf.glade:13716 +#: src/emc/usr_intf/pncconf/pncconf.glade:18922 +#: src/emc/usr_intf/pncconf/pncconf.glade:20724 +#: src/emc/usr_intf/pncconf/pncconf.glade:21045 +#: src/emc/usr_intf/pncconf/pncconf.glade:22841 +#: src/emc/usr_intf/pncconf/pncconf.glade:24637 +msgid " 3:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5942 -#: src/emc/usr_intf/pncconf/pncconf.glade:5952 -#: src/emc/usr_intf/pncconf/pncconf.glade:6158 -msgid "mm / min" +#: src/emc/usr_intf/pncconf/pncconf.glade:8941 +#: src/emc/usr_intf/pncconf/pncconf.glade:13702 +#: src/emc/usr_intf/pncconf/pncconf.glade:18908 +#: src/emc/usr_intf/pncconf/pncconf.glade:20710 +#: src/emc/usr_intf/pncconf/pncconf.glade:21059 +#: src/emc/usr_intf/pncconf/pncconf.glade:22855 +#: src/emc/usr_intf/pncconf/pncconf.glade:24651 +msgid " 5:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5975 -#: src/emc/usr_intf/pncconf/pncconf.glade:5985 -#: src/emc/usr_intf/pncconf/pncconf.glade:5997 -#, fuzzy -msgid "Deg / min" -msgstr "インチ" +#: src/emc/usr_intf/pncconf/pncconf.glade:8955 +#: src/emc/usr_intf/pncconf/pncconf.glade:13688 +#: src/emc/usr_intf/pncconf/pncconf.glade:18894 +#: src/emc/usr_intf/pncconf/pncconf.glade:20696 +#: src/emc/usr_intf/pncconf/pncconf.glade:21073 +#: src/emc/usr_intf/pncconf/pncconf.glade:22869 +#: src/emc/usr_intf/pncconf/pncconf.glade:24665 +msgid " 7:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6010 -msgid "xyzabc" +#: src/emc/usr_intf/pncconf/pncconf.glade:8969 +#: src/emc/usr_intf/pncconf/pncconf.glade:13674 +#: src/emc/usr_intf/pncconf/pncconf.glade:18880 +#: src/emc/usr_intf/pncconf/pncconf.glade:20682 +#: src/emc/usr_intf/pncconf/pncconf.glade:21087 +#: src/emc/usr_intf/pncconf/pncconf.glade:22883 +#: src/emc/usr_intf/pncconf/pncconf.glade:24679 +msgid " 9:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6023 -msgid "Axis Geometry" +#: src/emc/usr_intf/pncconf/pncconf.glade:8983 +#: src/emc/usr_intf/pncconf/pncconf.glade:13660 +#: src/emc/usr_intf/pncconf/pncconf.glade:18866 +#: src/emc/usr_intf/pncconf/pncconf.glade:20668 +#: src/emc/usr_intf/pncconf/pncconf.glade:21101 +#: src/emc/usr_intf/pncconf/pncconf.glade:22897 +#: src/emc/usr_intf/pncconf/pncconf.glade:24693 +msgid "11:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6048 -msgid "Max Angular velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:8997 +#: src/emc/usr_intf/pncconf/pncconf.glade:13646 +#: src/emc/usr_intf/pncconf/pncconf.glade:18852 +#: src/emc/usr_intf/pncconf/pncconf.glade:20654 +#: src/emc/usr_intf/pncconf/pncconf.glade:21115 +#: src/emc/usr_intf/pncconf/pncconf.glade:22911 +#: src/emc/usr_intf/pncconf/pncconf.glade:24707 +msgid "13:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6061 -msgid "5mm 1mm .5mm .1mm .05mm .01mm .005mm" +#: src/emc/usr_intf/pncconf/pncconf.glade:9011 +#: src/emc/usr_intf/pncconf/pncconf.glade:13632 +#: src/emc/usr_intf/pncconf/pncconf.glade:18838 +#: src/emc/usr_intf/pncconf/pncconf.glade:20640 +#: src/emc/usr_intf/pncconf/pncconf.glade:21129 +#: src/emc/usr_intf/pncconf/pncconf.glade:22925 +#: src/emc/usr_intf/pncconf/pncconf.glade:24721 +msgid "15:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6074 -msgid "Increments " +#: src/emc/usr_intf/pncconf/pncconf.glade:9025 +#: src/emc/usr_intf/pncconf/pncconf.glade:13618 +#: src/emc/usr_intf/pncconf/pncconf.glade:18824 +#: src/emc/usr_intf/pncconf/pncconf.glade:20626 +#: src/emc/usr_intf/pncconf/pncconf.glade:21143 +#: src/emc/usr_intf/pncconf/pncconf.glade:22939 +#: src/emc/usr_intf/pncconf/pncconf.glade:24735 +msgid "17:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6099 -msgid "Min Angular velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:9039 +#: src/emc/usr_intf/pncconf/pncconf.glade:13604 +#: src/emc/usr_intf/pncconf/pncconf.glade:18810 +#: src/emc/usr_intf/pncconf/pncconf.glade:20612 +#: src/emc/usr_intf/pncconf/pncconf.glade:21157 +#: src/emc/usr_intf/pncconf/pncconf.glade:22953 +#: src/emc/usr_intf/pncconf/pncconf.glade:24749 +msgid "19:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6112 -msgid "gedit" +#: src/emc/usr_intf/pncconf/pncconf.glade:9053 +#: src/emc/usr_intf/pncconf/pncconf.glade:13590 +#: src/emc/usr_intf/pncconf/pncconf.glade:18796 +#: src/emc/usr_intf/pncconf/pncconf.glade:20598 +#: src/emc/usr_intf/pncconf/pncconf.glade:21171 +#: src/emc/usr_intf/pncconf/pncconf.glade:22967 +#: src/emc/usr_intf/pncconf/pncconf.glade:24763 +msgid "21:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6148 -msgid "Default Angular velocity " +#: src/emc/usr_intf/pncconf/pncconf.glade:9067 +#: src/emc/usr_intf/pncconf/pncconf.glade:13576 +#: src/emc/usr_intf/pncconf/pncconf.glade:18782 +#: src/emc/usr_intf/pncconf/pncconf.glade:20584 +#: src/emc/usr_intf/pncconf/pncconf.glade:21185 +#: src/emc/usr_intf/pncconf/pncconf.glade:22981 +#: src/emc/usr_intf/pncconf/pncconf.glade:24777 +msgid "23:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6211 -msgid "Max linear velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:9801 +#: src/emc/usr_intf/pncconf/pncconf.glade:12840 +#: src/emc/usr_intf/pncconf/pncconf.glade:17994 +#: src/emc/usr_intf/pncconf/pncconf.glade:20170 +#: src/emc/usr_intf/pncconf/pncconf.glade:21597 +#: src/emc/usr_intf/pncconf/pncconf.glade:23393 +#: src/emc/usr_intf/pncconf/pncconf.glade:25189 +msgid "47:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6222 -msgid "Min linear velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:9868 +#: src/emc/usr_intf/pncconf/pncconf.glade:12773 +#: src/emc/usr_intf/pncconf/pncconf.glade:17927 +#: src/emc/usr_intf/pncconf/pncconf.glade:20119 +#: src/emc/usr_intf/pncconf/pncconf.glade:21648 +#: src/emc/usr_intf/pncconf/pncconf.glade:23444 +#: src/emc/usr_intf/pncconf/pncconf.glade:25240 +msgid "45:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6233 -msgid "Default linear velocity " +#: src/emc/usr_intf/pncconf/pncconf.glade:9884 +#: src/emc/usr_intf/pncconf/pncconf.glade:12757 +#: src/emc/usr_intf/pncconf/pncconf.glade:17911 +#: src/emc/usr_intf/pncconf/pncconf.glade:20103 +#: src/emc/usr_intf/pncconf/pncconf.glade:21664 +#: src/emc/usr_intf/pncconf/pncconf.glade:23460 +#: src/emc/usr_intf/pncconf/pncconf.glade:25256 +msgid "43:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6241 -msgid "AXIS defaults" +#: src/emc/usr_intf/pncconf/pncconf.glade:9900 +#: src/emc/usr_intf/pncconf/pncconf.glade:12741 +#: src/emc/usr_intf/pncconf/pncconf.glade:17895 +#: src/emc/usr_intf/pncconf/pncconf.glade:20087 +#: src/emc/usr_intf/pncconf/pncconf.glade:21680 +#: src/emc/usr_intf/pncconf/pncconf.glade:23476 +#: src/emc/usr_intf/pncconf/pncconf.glade:25272 +msgid "41:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6352 -msgid "Error Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:9916 +#: src/emc/usr_intf/pncconf/pncconf.glade:12725 +#: src/emc/usr_intf/pncconf/pncconf.glade:17879 +#: src/emc/usr_intf/pncconf/pncconf.glade:20071 +#: src/emc/usr_intf/pncconf/pncconf.glade:21696 +#: src/emc/usr_intf/pncconf/pncconf.glade:23492 +#: src/emc/usr_intf/pncconf/pncconf.glade:25288 +msgid "39:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6365 -msgid "DTG Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:9932 +#: src/emc/usr_intf/pncconf/pncconf.glade:12709 +#: src/emc/usr_intf/pncconf/pncconf.glade:17863 +#: src/emc/usr_intf/pncconf/pncconf.glade:20055 +#: src/emc/usr_intf/pncconf/pncconf.glade:21712 +#: src/emc/usr_intf/pncconf/pncconf.glade:23508 +#: src/emc/usr_intf/pncconf/pncconf.glade:25304 +msgid "37:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6378 -#, fuzzy -msgid "Relative Textcolor" -msgstr "相対" +#: src/emc/usr_intf/pncconf/pncconf.glade:9948 +#: src/emc/usr_intf/pncconf/pncconf.glade:12693 +#: src/emc/usr_intf/pncconf/pncconf.glade:17847 +#: src/emc/usr_intf/pncconf/pncconf.glade:20039 +#: src/emc/usr_intf/pncconf/pncconf.glade:21728 +#: src/emc/usr_intf/pncconf/pncconf.glade:23524 +#: src/emc/usr_intf/pncconf/pncconf.glade:25320 +msgid "35:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6391 -msgid "Absolute Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:9964 +#: src/emc/usr_intf/pncconf/pncconf.glade:12677 +#: src/emc/usr_intf/pncconf/pncconf.glade:17831 +#: src/emc/usr_intf/pncconf/pncconf.glade:20023 +#: src/emc/usr_intf/pncconf/pncconf.glade:21744 +#: src/emc/usr_intf/pncconf/pncconf.glade:23540 +#: src/emc/usr_intf/pncconf/pncconf.glade:25336 +msgid "33:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6454 -msgid "Absolute Text Color" +#: src/emc/usr_intf/pncconf/pncconf.glade:10337 +#: src/emc/usr_intf/pncconf/pncconf.glade:12304 +#: src/emc/usr_intf/pncconf/pncconf.glade:17458 +#: src/emc/usr_intf/pncconf/pncconf.glade:19762 +#: src/emc/usr_intf/pncconf/pncconf.glade:22005 +#: src/emc/usr_intf/pncconf/pncconf.glade:23801 +#: src/emc/usr_intf/pncconf/pncconf.glade:25597 +msgid "25:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6479 -#: src/emc/usr_intf/pncconf/pncconf.glade:7148 -msgid "GTK Theme" +#: src/emc/usr_intf/pncconf/pncconf.glade:10353 +#: src/emc/usr_intf/pncconf/pncconf.glade:12288 +#: src/emc/usr_intf/pncconf/pncconf.glade:17442 +#: src/emc/usr_intf/pncconf/pncconf.glade:19746 +#: src/emc/usr_intf/pncconf/pncconf.glade:22021 +#: src/emc/usr_intf/pncconf/pncconf.glade:23817 +#: src/emc/usr_intf/pncconf/pncconf.glade:25613 +msgid "27:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6491 -#: src/emc/usr_intf/pncconf/pncconf.glade:7158 -msgid "Follow System Theme\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:10369 +#: src/emc/usr_intf/pncconf/pncconf.glade:12272 +#: src/emc/usr_intf/pncconf/pncconf.glade:17426 +#: src/emc/usr_intf/pncconf/pncconf.glade:19730 +#: src/emc/usr_intf/pncconf/pncconf.glade:22037 +#: src/emc/usr_intf/pncconf/pncconf.glade:23833 +#: src/emc/usr_intf/pncconf/pncconf.glade:25629 +msgid "29:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6624 -msgid "Force Touchy to Maximize after positioning" +#: src/emc/usr_intf/pncconf/pncconf.glade:10385 +#: src/emc/usr_intf/pncconf/pncconf.glade:12256 +#: src/emc/usr_intf/pncconf/pncconf.glade:17410 +#: src/emc/usr_intf/pncconf/pncconf.glade:19714 +#: src/emc/usr_intf/pncconf/pncconf.glade:22053 +#: src/emc/usr_intf/pncconf/pncconf.glade:23849 +#: src/emc/usr_intf/pncconf/pncconf.glade:25645 +msgid "31:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6669 -msgid "GUI Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:10677 +#: src/emc/usr_intf/pncconf/pncconf.glade:10689 +#: src/emc/usr_intf/pncconf/pncconf.glade:11955 +#: src/emc/usr_intf/pncconf/pncconf.glade:11967 +#: src/emc/usr_intf/pncconf/pncconf.glade:14464 +#: src/emc/usr_intf/pncconf/pncconf.glade:14476 +#: src/emc/usr_intf/pncconf/pncconf.glade:17161 +#: src/emc/usr_intf/pncconf/pncconf.glade:17173 +#: src/emc/usr_intf/pncconf/pncconf.glade:19567 +#: src/emc/usr_intf/pncconf/pncconf.glade:19579 +#: src/emc/usr_intf/pncconf/pncconf.glade:22190 +#: src/emc/usr_intf/pncconf/pncconf.glade:22202 +#: src/emc/usr_intf/pncconf/pncconf.glade:23986 +#: src/emc/usr_intf/pncconf/pncconf.glade:23998 +#: src/emc/usr_intf/pncconf/pncconf.glade:25782 +#: src/emc/usr_intf/pncconf/pncconf.glade:25794 +#: src/emc/usr_intf/pncconf/pncconf.glade:28287 +#: src/emc/usr_intf/pncconf/pncconf.glade:28299 +#: src/emc/usr_intf/pncconf/pncconf.glade:29415 +#: src/emc/usr_intf/pncconf/pncconf.glade:29427 +#: src/emc/usr_intf/pncconf/pncconf.glade:32869 +#: src/emc/usr_intf/pncconf/pncconf.glade:33760 +#: src/emc/usr_intf/pncconf/pncconf.glade:33772 +#: src/emc/usr_intf/pncconf/pncconf.glade:37771 +#: src/emc/usr_intf/pncconf/pncconf.glade:37783 +#: src/emc/usr_intf/pncconf/pncconf.glade:38777 +#: src/emc/usr_intf/pncconf/pncconf.glade:38789 +#: src/emc/usr_intf/pncconf/pncconf.glade:42131 +#: src/emc/usr_intf/pncconf/pncconf.glade:42143 +#: src/emc/usr_intf/pncconf/pncconf.glade:43259 +#: src/emc/usr_intf/pncconf/pncconf.glade:43271 +#: src/emc/usr_intf/pncconf/pncconf.glade:46702 +#: src/emc/usr_intf/pncconf/pncconf.glade:46714 +#: src/emc/usr_intf/pncconf/pncconf.glade:49054 +#: src/emc/usr_intf/pncconf/pncconf.glade:49066 +#: src/emc/usr_intf/pncconf/pncconf.glade:50182 +#: src/emc/usr_intf/pncconf/pncconf.glade:50194 +#: src/emc/usr_intf/pncconf/pncconf.glade:53625 +#: src/emc/usr_intf/pncconf/pncconf.glade:53637 +#: src/emc/usr_intf/pncconf/pncconf.glade:55977 +#: src/emc/usr_intf/pncconf/pncconf.glade:55989 +#: src/emc/usr_intf/pncconf/pncconf.glade:57105 +#: src/emc/usr_intf/pncconf/pncconf.glade:57117 +#: src/emc/usr_intf/pncconf/pncconf.glade:60548 +#: src/emc/usr_intf/pncconf/pncconf.glade:60560 +msgid "function" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6700 -msgid "Virtual Control Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:10703 +#: src/emc/usr_intf/pncconf/pncconf.glade:11940 +#: src/emc/usr_intf/pncconf/pncconf.glade:14449 +#: src/emc/usr_intf/pncconf/pncconf.glade:17146 +#: src/emc/usr_intf/pncconf/pncconf.glade:19553 +#: src/emc/usr_intf/pncconf/pncconf.glade:22217 +#: src/emc/usr_intf/pncconf/pncconf.glade:24013 +#: src/emc/usr_intf/pncconf/pncconf.glade:25809 +msgid "Launch test panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6775 -msgid "XYZ buttons (uses Halui)" +#: src/emc/usr_intf/pncconf/pncconf.glade:11192 +#: src/emc/usr_intf/pncconf/pncconf.glade:11204 +#: src/emc/usr_intf/pncconf/pncconf.glade:11440 +#: src/emc/usr_intf/pncconf/pncconf.glade:11454 +#: src/emc/usr_intf/pncconf/pncconf.glade:13949 +#: src/emc/usr_intf/pncconf/pncconf.glade:13963 +#: src/emc/usr_intf/pncconf/pncconf.glade:16645 +#: src/emc/usr_intf/pncconf/pncconf.glade:16659 +#: src/emc/usr_intf/pncconf/pncconf.glade:19190 +#: src/emc/usr_intf/pncconf/pncconf.glade:19204 +#: src/emc/usr_intf/pncconf/pncconf.glade:22567 +#: src/emc/usr_intf/pncconf/pncconf.glade:22579 +#: src/emc/usr_intf/pncconf/pncconf.glade:24363 +#: src/emc/usr_intf/pncconf/pncconf.glade:24375 +#: src/emc/usr_intf/pncconf/pncconf.glade:26159 +#: src/emc/usr_intf/pncconf/pncconf.glade:26171 +#: src/emc/usr_intf/pncconf/pncconf.glade:28772 +#: src/emc/usr_intf/pncconf/pncconf.glade:28784 +#: src/emc/usr_intf/pncconf/pncconf.glade:28917 +#: src/emc/usr_intf/pncconf/pncconf.glade:28931 +#: src/emc/usr_intf/pncconf/pncconf.glade:33102 +#: src/emc/usr_intf/pncconf/pncconf.glade:33275 +#: src/emc/usr_intf/pncconf/pncconf.glade:33289 +#: src/emc/usr_intf/pncconf/pncconf.glade:38269 +#: src/emc/usr_intf/pncconf/pncconf.glade:38281 +#: src/emc/usr_intf/pncconf/pncconf.glade:38532 +#: src/emc/usr_intf/pncconf/pncconf.glade:38546 +#: src/emc/usr_intf/pncconf/pncconf.glade:42616 +#: src/emc/usr_intf/pncconf/pncconf.glade:42628 +#: src/emc/usr_intf/pncconf/pncconf.glade:42761 +#: src/emc/usr_intf/pncconf/pncconf.glade:42775 +#: src/emc/usr_intf/pncconf/pncconf.glade:46947 +#: src/emc/usr_intf/pncconf/pncconf.glade:46959 +#: src/emc/usr_intf/pncconf/pncconf.glade:49539 +#: src/emc/usr_intf/pncconf/pncconf.glade:49551 +#: src/emc/usr_intf/pncconf/pncconf.glade:49684 +#: src/emc/usr_intf/pncconf/pncconf.glade:49698 +#: src/emc/usr_intf/pncconf/pncconf.glade:53870 +#: src/emc/usr_intf/pncconf/pncconf.glade:53882 +#: src/emc/usr_intf/pncconf/pncconf.glade:56462 +#: src/emc/usr_intf/pncconf/pncconf.glade:56474 +#: src/emc/usr_intf/pncconf/pncconf.glade:56607 +#: src/emc/usr_intf/pncconf/pncconf.glade:56621 +#: src/emc/usr_intf/pncconf/pncconf.glade:60793 +#: src/emc/usr_intf/pncconf/pncconf.glade:60805 +msgid "Num" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6946 -msgid "Geometry Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:11222 +msgid "" +" I/O\n" +"Connector 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7025 -msgid "Pyvcp Details" +#: src/emc/usr_intf/pncconf/pncconf.glade:13835 +msgid "" +" I/O\n" +" Connector 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7097 -msgid "Sample display " +#: src/emc/usr_intf/pncconf/pncconf.glade:16281 +#: src/emc/usr_intf/pncconf/pncconf.glade:16295 +#: src/emc/usr_intf/pncconf/pncconf.glade:16322 +#: src/emc/usr_intf/pncconf/pncconf.glade:26441 +#: src/emc/usr_intf/pncconf/pncconf.glade:26468 +#: src/emc/usr_intf/pncconf/pncconf.glade:26482 +#: src/emc/usr_intf/pncconf/pncconf.glade:31232 +#: src/emc/usr_intf/pncconf/pncconf.glade:31246 +#: src/emc/usr_intf/pncconf/pncconf.glade:31273 +#: src/emc/usr_intf/pncconf/pncconf.glade:31708 +#: src/emc/usr_intf/pncconf/pncconf.glade:31735 +#: src/emc/usr_intf/pncconf/pncconf.glade:31749 +#: src/emc/usr_intf/pncconf/pncconf.glade:35577 +#: src/emc/usr_intf/pncconf/pncconf.glade:35591 +#: src/emc/usr_intf/pncconf/pncconf.glade:35618 +#: src/emc/usr_intf/pncconf/pncconf.glade:35925 +#: src/emc/usr_intf/pncconf/pncconf.glade:35952 +#: src/emc/usr_intf/pncconf/pncconf.glade:35966 +#: src/emc/usr_intf/pncconf/pncconf.glade:39909 +#: src/emc/usr_intf/pncconf/pncconf.glade:39923 +#: src/emc/usr_intf/pncconf/pncconf.glade:39950 +#: src/emc/usr_intf/pncconf/pncconf.glade:40285 +#: src/emc/usr_intf/pncconf/pncconf.glade:40312 +#: src/emc/usr_intf/pncconf/pncconf.glade:40326 +#: src/emc/usr_intf/pncconf/pncconf.glade:45076 +#: src/emc/usr_intf/pncconf/pncconf.glade:45090 +#: src/emc/usr_intf/pncconf/pncconf.glade:45117 +#: src/emc/usr_intf/pncconf/pncconf.glade:45541 +#: src/emc/usr_intf/pncconf/pncconf.glade:45568 +#: src/emc/usr_intf/pncconf/pncconf.glade:45582 +#: src/emc/usr_intf/pncconf/pncconf.glade:47208 +#: src/emc/usr_intf/pncconf/pncconf.glade:47235 +#: src/emc/usr_intf/pncconf/pncconf.glade:47249 +#: src/emc/usr_intf/pncconf/pncconf.glade:51999 +#: src/emc/usr_intf/pncconf/pncconf.glade:52013 +#: src/emc/usr_intf/pncconf/pncconf.glade:52040 +#: src/emc/usr_intf/pncconf/pncconf.glade:52464 +#: src/emc/usr_intf/pncconf/pncconf.glade:52491 +#: src/emc/usr_intf/pncconf/pncconf.glade:52505 +#: src/emc/usr_intf/pncconf/pncconf.glade:54131 +#: src/emc/usr_intf/pncconf/pncconf.glade:54158 +#: src/emc/usr_intf/pncconf/pncconf.glade:54172 +#: src/emc/usr_intf/pncconf/pncconf.glade:58922 +#: src/emc/usr_intf/pncconf/pncconf.glade:58936 +#: src/emc/usr_intf/pncconf/pncconf.glade:58963 +#: src/emc/usr_intf/pncconf/pncconf.glade:59387 +#: src/emc/usr_intf/pncconf/pncconf.glade:59414 +#: src/emc/usr_intf/pncconf/pncconf.glade:59428 +msgid " " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7172 -msgid "Force Maximize" +#: src/emc/usr_intf/pncconf/pncconf.glade:16427 +msgid "" +" I/O\n" +" Connector 4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7186 -msgid "Center Tab Embeded" +#: src/emc/usr_intf/pncconf/pncconf.glade:19041 +msgid "" +" I/O\n" +" Connector 5" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7201 -msgid "Rightside Embeded" +#: src/emc/usr_intf/pncconf/pncconf.glade:20837 +msgid "" +" I/O\n" +"Connector 6" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7217 -msgid "Standalone Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:22633 +msgid "" +" I/O\n" +"Connector 7" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7351 -msgid "Display Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:24429 +msgid "" +" I/O\n" +"Connector 8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7401 -msgid "Max RPM" +#: src/emc/usr_intf/pncconf/pncconf.glade:26225 +msgid "" +" I/O\n" +" Connector 9" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7414 -#, fuzzy -msgid "Spindle Speed Indicator" -msgstr "スピンドル消した" +#: src/emc/usr_intf/pncconf/pncconf.glade:31378 +#: src/emc/usr_intf/pncconf/pncconf.glade:38299 +#: src/emc/usr_intf/pncconf/pncconf.glade:45222 +#: src/emc/usr_intf/pncconf/pncconf.glade:52145 +#: src/emc/usr_intf/pncconf/pncconf.glade:59068 +msgid "page 2" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7426 -#, fuzzy -msgid "Spindle At Speed LED" -msgstr "フィード手直して" +#: src/emc/usr_intf/pncconf/pncconf.glade:33131 +#: src/emc/usr_intf/pncconf/pncconf.glade:40054 +#: src/emc/usr_intf/pncconf/pncconf.glade:46977 +#: src/emc/usr_intf/pncconf/pncconf.glade:53900 +#: src/emc/usr_intf/pncconf/pncconf.glade:60823 +msgid "page 3" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7438 -msgid "Zero X Button" +#: src/emc/usr_intf/pncconf/pncconf.glade:33147 +msgid "Smart Serial 0" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7450 -msgid "Zero Y Button" +#: src/emc/usr_intf/pncconf/pncconf.glade:40070 +msgid "Smart Serial 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7462 -msgid "Zero Z Button" +#: src/emc/usr_intf/pncconf/pncconf.glade:46993 +msgid "Smart Serial 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7474 -msgid "Zero A Button" +#: src/emc/usr_intf/pncconf/pncconf.glade:53916 +msgid "Smart Serial 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7486 -msgid "Requires Classicladder touch-off program" +#: src/emc/usr_intf/pncconf/pncconf.glade:60839 +msgid "Smart Serial 4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7487 -msgid "Auto Z Touch Off Button" +#: src/emc/usr_intf/pncconf/pncconf.glade:60861 +msgid "First Parallel Port Setup" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7500 -msgid "Sample Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:60946 +msgid "Launch Test Panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7574 -msgid "Gladevcp Details" +#: src/emc/usr_intf/pncconf/pncconf.glade:62374 +msgid "Inputs (Machine to PC):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7597 -msgid "Include custom GladeVCP GUI panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:62929 +msgid "Outputs (PC to Machine):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7668 -msgid "Restore joint position after shutdown" +#: src/emc/usr_intf/pncconf/pncconf.glade:62950 +msgid "X Axis Motor/Encoder Configuration" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7683 -msgid "Move spindle up before tool change" +#: src/emc/usr_intf/pncconf/pncconf.glade:63005 +#, fuzzy +msgid "Max Output" +msgstr "スピンドル消した" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63070 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7696 -msgid "Leave spindle on during tool change" +#: src/emc/usr_intf/pncconf/pncconf.glade:63083 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7709 -msgid "Popup Toolchange Prompt" +#: src/emc/usr_intf/pncconf/pncconf.glade:63096 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF0" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7723 -msgid "Require homing before MDI / Running" +#: src/emc/usr_intf/pncconf/pncconf.glade:63143 +msgid "Deadband" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7732 -msgid "Random position toolchanger " +#: src/emc/usr_intf/pncconf/pncconf.glade:63156 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Bias" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7747 -msgid "Force individual manual homing" +#: src/emc/usr_intf/pncconf/pncconf.glade:63169 +msgid "P" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7761 -msgid "Defaults and Options" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63180 +#, fuzzy +msgid "I" +msgstr "IO" -#: src/emc/usr_intf/pncconf/pncconf.glade:7789 -msgid "Mesa0 I/O setup\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:63193 +msgid "D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7809 -msgid "" -"Click on each page tab to configure signal names for each connector port.\n" -"\n" -"Press the button to make the tabbed pages\n" -"accept the changes.\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:63258 +msgid "Servo Info" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7998 -msgid "Num of channels: " +#: src/emc/usr_intf/pncconf/pncconf.glade:63337 +msgid "3pwm Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8036 -msgid "7i29 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:63348 +msgid "3pwm Deadtime:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8045 -msgid "7i30 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:63361 +msgid "Quad Pulses / Rev:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8057 -msgid "7i33 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:63438 +msgid "" +"Open Loop\n" +" Test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8069 -msgid "7i40 daughter board" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63462 +#, fuzzy +msgid "Analog Min Limit:" +msgstr "スピンドル消した" -#: src/emc/usr_intf/pncconf/pncconf.glade:8081 -msgid "7i48 daughter board" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63476 +#, fuzzy +msgid "Analog Max limit:" +msgstr "スピンドル前進" -#: src/emc/usr_intf/pncconf/pncconf.glade:8096 -msgid "Sanity Checks" +#: src/emc/usr_intf/pncconf/pncconf.glade:63490 +msgid "Analog Max Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8137 -msgid "Num of Smart Serial Ports:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63554 +#, fuzzy +msgid "Output Info" +msgstr "平行移動:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8148 -msgid "Board name" +#: src/emc/usr_intf/pncconf/pncconf.glade:63603 +msgid "Step On-Time" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8155 -msgid "Num of step generators: " +#: src/emc/usr_intf/pncconf/pncconf.glade:63616 +msgid "Step Space" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8166 -msgid "Num of pwm generators:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63659 +msgid "Direction Hold" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8177 -msgid "Num of encoders:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63672 +msgid "Direction Setup" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8294 -msgid "Watchdog timeout:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63715 +msgid "Driver Type:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8305 -msgid "PDM base frequency:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63748 +msgid "Stepper Info" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8316 -msgid "PWM base frequency:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63800 +msgid "No feedback" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8328 -msgid "" -"Accept components\n" -" Changes" +#: src/emc/usr_intf/pncconf/pncconf.glade:63810 +msgid "Absolute Feedback" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8356 -msgid "Total number of pins:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63824 +msgid "Incremental Feedback" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8389 -msgid "Num of 3 pwm generators: " +#: src/emc/usr_intf/pncconf/pncconf.glade:63838 +msgid "Incremental Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8412 -msgid "SVST8_4" +#: src/emc/usr_intf/pncconf/pncconf.glade:63850 +msgid "Hall sensors" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8437 -msgid "Firmware:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63862 +msgid "Fanuc Red Cap " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8447 -msgid "Mesa parport address:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63874 +#, fuzzy +msgid "Use encoder Index" +msgstr "スピンドル消した" -#: src/emc/usr_intf/pncconf/pncconf.glade:8482 -msgid "3PWM base frequency:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63905 +msgid "Input Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8504 -msgid "" -"Configuration\n" -" Page" +#: src/emc/usr_intf/pncconf/pncconf.glade:63929 +msgid "Digital instead of PWM outputs" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8698 -#: src/emc/usr_intf/pncconf/pncconf.glade:8712 -#: src/emc/usr_intf/pncconf/pncconf.glade:13677 -#: src/emc/usr_intf/pncconf/pncconf.glade:13689 -#: src/emc/usr_intf/pncconf/pncconf.glade:16373 -#: src/emc/usr_intf/pncconf/pncconf.glade:16385 -#: src/emc/usr_intf/pncconf/pncconf.glade:18883 -#: src/emc/usr_intf/pncconf/pncconf.glade:18895 -#: src/emc/usr_intf/pncconf/pncconf.glade:20747 -#: src/emc/usr_intf/pncconf/pncconf.glade:20759 -#: src/emc/usr_intf/pncconf/pncconf.glade:20962 -#: src/emc/usr_intf/pncconf/pncconf.glade:20976 -#: src/emc/usr_intf/pncconf/pncconf.glade:22758 -#: src/emc/usr_intf/pncconf/pncconf.glade:22772 -#: src/emc/usr_intf/pncconf/pncconf.glade:24554 -#: src/emc/usr_intf/pncconf/pncconf.glade:24568 -#: src/emc/usr_intf/pncconf/pncconf.glade:26330 -#: src/emc/usr_intf/pncconf/pncconf.glade:26344 -#: src/emc/usr_intf/pncconf/pncconf.glade:31324 -#: src/emc/usr_intf/pncconf/pncconf.glade:31336 -#: src/emc/usr_intf/pncconf/pncconf.glade:31600 -#: src/emc/usr_intf/pncconf/pncconf.glade:35669 -#: src/emc/usr_intf/pncconf/pncconf.glade:35681 -#: src/emc/usr_intf/pncconf/pncconf.glade:35814 -#: src/emc/usr_intf/pncconf/pncconf.glade:35828 -#: src/emc/usr_intf/pncconf/pncconf.glade:40000 -#: src/emc/usr_intf/pncconf/pncconf.glade:40012 -#: src/emc/usr_intf/pncconf/pncconf.glade:40174 -#: src/emc/usr_intf/pncconf/pncconf.glade:40188 -#: src/emc/usr_intf/pncconf/pncconf.glade:45168 -#: src/emc/usr_intf/pncconf/pncconf.glade:45180 -#: src/emc/usr_intf/pncconf/pncconf.glade:45431 -#: src/emc/usr_intf/pncconf/pncconf.glade:45445 -#: src/emc/usr_intf/pncconf/pncconf.glade:47097 -#: src/emc/usr_intf/pncconf/pncconf.glade:47111 -#: src/emc/usr_intf/pncconf/pncconf.glade:52091 -#: src/emc/usr_intf/pncconf/pncconf.glade:52103 -#: src/emc/usr_intf/pncconf/pncconf.glade:52354 -#: src/emc/usr_intf/pncconf/pncconf.glade:52368 -msgid "Num" +#: src/emc/usr_intf/pncconf/pncconf.glade:63938 +msgid "6 outputs instead of 3 " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8723 -#: src/emc/usr_intf/pncconf/pncconf.glade:8743 -#: src/emc/usr_intf/pncconf/pncconf.glade:8763 -#: src/emc/usr_intf/pncconf/pncconf.glade:8783 -#: src/emc/usr_intf/pncconf/pncconf.glade:8803 -#: src/emc/usr_intf/pncconf/pncconf.glade:8823 -#: src/emc/usr_intf/pncconf/pncconf.glade:8843 -#: src/emc/usr_intf/pncconf/pncconf.glade:8863 -#: src/emc/usr_intf/pncconf/pncconf.glade:8883 -#: src/emc/usr_intf/pncconf/pncconf.glade:8903 -#: src/emc/usr_intf/pncconf/pncconf.glade:8923 -#: src/emc/usr_intf/pncconf/pncconf.glade:8943 -#: src/emc/usr_intf/pncconf/pncconf.glade:8963 -#: src/emc/usr_intf/pncconf/pncconf.glade:8983 -#: src/emc/usr_intf/pncconf/pncconf.glade:9003 -#: src/emc/usr_intf/pncconf/pncconf.glade:9023 -#: src/emc/usr_intf/pncconf/pncconf.glade:9043 -#: src/emc/usr_intf/pncconf/pncconf.glade:9063 -#: src/emc/usr_intf/pncconf/pncconf.glade:9083 -#: src/emc/usr_intf/pncconf/pncconf.glade:9103 -#: src/emc/usr_intf/pncconf/pncconf.glade:9123 -#: src/emc/usr_intf/pncconf/pncconf.glade:9143 -#: src/emc/usr_intf/pncconf/pncconf.glade:9163 -#: src/emc/usr_intf/pncconf/pncconf.glade:11027 -#: src/emc/usr_intf/pncconf/pncconf.glade:11353 -#: src/emc/usr_intf/pncconf/pncconf.glade:13216 -#: src/emc/usr_intf/pncconf/pncconf.glade:13236 -#: src/emc/usr_intf/pncconf/pncconf.glade:13256 -#: src/emc/usr_intf/pncconf/pncconf.glade:13276 -#: src/emc/usr_intf/pncconf/pncconf.glade:13296 -#: src/emc/usr_intf/pncconf/pncconf.glade:13316 -#: src/emc/usr_intf/pncconf/pncconf.glade:13336 -#: src/emc/usr_intf/pncconf/pncconf.glade:13356 -#: src/emc/usr_intf/pncconf/pncconf.glade:13376 -#: src/emc/usr_intf/pncconf/pncconf.glade:13396 -#: src/emc/usr_intf/pncconf/pncconf.glade:13416 -#: src/emc/usr_intf/pncconf/pncconf.glade:13436 -#: src/emc/usr_intf/pncconf/pncconf.glade:13456 -#: src/emc/usr_intf/pncconf/pncconf.glade:13476 -#: src/emc/usr_intf/pncconf/pncconf.glade:13496 -#: src/emc/usr_intf/pncconf/pncconf.glade:13516 -#: src/emc/usr_intf/pncconf/pncconf.glade:13536 -#: src/emc/usr_intf/pncconf/pncconf.glade:13556 -#: src/emc/usr_intf/pncconf/pncconf.glade:13576 -#: src/emc/usr_intf/pncconf/pncconf.glade:13596 -#: src/emc/usr_intf/pncconf/pncconf.glade:13616 -#: src/emc/usr_intf/pncconf/pncconf.glade:13636 -#: src/emc/usr_intf/pncconf/pncconf.glade:13656 -#: src/emc/usr_intf/pncconf/pncconf.glade:13966 -#: src/emc/usr_intf/pncconf/pncconf.glade:15912 -#: src/emc/usr_intf/pncconf/pncconf.glade:15932 -#: src/emc/usr_intf/pncconf/pncconf.glade:15952 -#: src/emc/usr_intf/pncconf/pncconf.glade:15972 -#: src/emc/usr_intf/pncconf/pncconf.glade:15992 -#: src/emc/usr_intf/pncconf/pncconf.glade:16012 -#: src/emc/usr_intf/pncconf/pncconf.glade:16032 -#: src/emc/usr_intf/pncconf/pncconf.glade:16052 -#: src/emc/usr_intf/pncconf/pncconf.glade:16072 -#: src/emc/usr_intf/pncconf/pncconf.glade:16092 -#: src/emc/usr_intf/pncconf/pncconf.glade:16112 -#: src/emc/usr_intf/pncconf/pncconf.glade:16132 -#: src/emc/usr_intf/pncconf/pncconf.glade:16152 -#: src/emc/usr_intf/pncconf/pncconf.glade:16172 -#: src/emc/usr_intf/pncconf/pncconf.glade:16192 -#: src/emc/usr_intf/pncconf/pncconf.glade:16212 -#: src/emc/usr_intf/pncconf/pncconf.glade:16232 -#: src/emc/usr_intf/pncconf/pncconf.glade:16252 -#: src/emc/usr_intf/pncconf/pncconf.glade:16272 -#: src/emc/usr_intf/pncconf/pncconf.glade:16292 -#: src/emc/usr_intf/pncconf/pncconf.glade:16312 -#: src/emc/usr_intf/pncconf/pncconf.glade:16332 -#: src/emc/usr_intf/pncconf/pncconf.glade:16352 -#: src/emc/usr_intf/pncconf/pncconf.glade:16558 -#: src/emc/usr_intf/pncconf/pncconf.glade:18422 -#: src/emc/usr_intf/pncconf/pncconf.glade:18442 -#: src/emc/usr_intf/pncconf/pncconf.glade:18462 -#: src/emc/usr_intf/pncconf/pncconf.glade:18482 -#: src/emc/usr_intf/pncconf/pncconf.glade:18502 -#: src/emc/usr_intf/pncconf/pncconf.glade:18522 -#: src/emc/usr_intf/pncconf/pncconf.glade:18542 -#: src/emc/usr_intf/pncconf/pncconf.glade:18562 -#: src/emc/usr_intf/pncconf/pncconf.glade:18582 -#: src/emc/usr_intf/pncconf/pncconf.glade:18602 -#: src/emc/usr_intf/pncconf/pncconf.glade:18622 -#: src/emc/usr_intf/pncconf/pncconf.glade:18642 -#: src/emc/usr_intf/pncconf/pncconf.glade:18662 -#: src/emc/usr_intf/pncconf/pncconf.glade:18682 -#: src/emc/usr_intf/pncconf/pncconf.glade:18702 -#: src/emc/usr_intf/pncconf/pncconf.glade:18722 -#: src/emc/usr_intf/pncconf/pncconf.glade:18742 -#: src/emc/usr_intf/pncconf/pncconf.glade:18762 -#: src/emc/usr_intf/pncconf/pncconf.glade:18782 -#: src/emc/usr_intf/pncconf/pncconf.glade:18802 -#: src/emc/usr_intf/pncconf/pncconf.glade:18822 -#: src/emc/usr_intf/pncconf/pncconf.glade:18842 -#: src/emc/usr_intf/pncconf/pncconf.glade:18862 -#: src/emc/usr_intf/pncconf/pncconf.glade:26355 -#: src/emc/usr_intf/pncconf/pncconf.glade:26375 -#: src/emc/usr_intf/pncconf/pncconf.glade:26395 -#: src/emc/usr_intf/pncconf/pncconf.glade:26415 -#: src/emc/usr_intf/pncconf/pncconf.glade:26435 -#: src/emc/usr_intf/pncconf/pncconf.glade:26455 -#: src/emc/usr_intf/pncconf/pncconf.glade:26475 -#: src/emc/usr_intf/pncconf/pncconf.glade:26495 -#: src/emc/usr_intf/pncconf/pncconf.glade:26515 -#: src/emc/usr_intf/pncconf/pncconf.glade:26535 -#: src/emc/usr_intf/pncconf/pncconf.glade:26555 -#: src/emc/usr_intf/pncconf/pncconf.glade:26575 -#: src/emc/usr_intf/pncconf/pncconf.glade:26595 -#: src/emc/usr_intf/pncconf/pncconf.glade:26615 -#: src/emc/usr_intf/pncconf/pncconf.glade:26635 -#: src/emc/usr_intf/pncconf/pncconf.glade:26655 -#: src/emc/usr_intf/pncconf/pncconf.glade:26675 -#: src/emc/usr_intf/pncconf/pncconf.glade:26695 -#: src/emc/usr_intf/pncconf/pncconf.glade:26715 -#: src/emc/usr_intf/pncconf/pncconf.glade:26735 -#: src/emc/usr_intf/pncconf/pncconf.glade:26755 -#: src/emc/usr_intf/pncconf/pncconf.glade:26775 -#: src/emc/usr_intf/pncconf/pncconf.glade:26795 -#: src/emc/usr_intf/pncconf/pncconf.glade:28711 -#: src/emc/usr_intf/pncconf/pncconf.glade:28934 -#: src/emc/usr_intf/pncconf/pncconf.glade:30863 -#: src/emc/usr_intf/pncconf/pncconf.glade:30883 -#: src/emc/usr_intf/pncconf/pncconf.glade:30903 -#: src/emc/usr_intf/pncconf/pncconf.glade:30923 -#: src/emc/usr_intf/pncconf/pncconf.glade:30943 -#: src/emc/usr_intf/pncconf/pncconf.glade:30963 -#: src/emc/usr_intf/pncconf/pncconf.glade:30983 -#: src/emc/usr_intf/pncconf/pncconf.glade:31003 -#: src/emc/usr_intf/pncconf/pncconf.glade:31023 -#: src/emc/usr_intf/pncconf/pncconf.glade:31043 -#: src/emc/usr_intf/pncconf/pncconf.glade:31063 -#: src/emc/usr_intf/pncconf/pncconf.glade:31083 -#: src/emc/usr_intf/pncconf/pncconf.glade:31103 -#: src/emc/usr_intf/pncconf/pncconf.glade:31123 -#: src/emc/usr_intf/pncconf/pncconf.glade:31143 -#: src/emc/usr_intf/pncconf/pncconf.glade:31163 -#: src/emc/usr_intf/pncconf/pncconf.glade:31183 -#: src/emc/usr_intf/pncconf/pncconf.glade:31203 -#: src/emc/usr_intf/pncconf/pncconf.glade:31223 -#: src/emc/usr_intf/pncconf/pncconf.glade:31243 -#: src/emc/usr_intf/pncconf/pncconf.glade:31263 -#: src/emc/usr_intf/pncconf/pncconf.glade:31283 -#: src/emc/usr_intf/pncconf/pncconf.glade:31303 -#: src/emc/usr_intf/pncconf/pncconf.glade:31611 -#: src/emc/usr_intf/pncconf/pncconf.glade:31631 -#: src/emc/usr_intf/pncconf/pncconf.glade:31651 -#: src/emc/usr_intf/pncconf/pncconf.glade:31671 -#: src/emc/usr_intf/pncconf/pncconf.glade:31691 -#: src/emc/usr_intf/pncconf/pncconf.glade:31711 -#: src/emc/usr_intf/pncconf/pncconf.glade:31731 -#: src/emc/usr_intf/pncconf/pncconf.glade:31751 -#: src/emc/usr_intf/pncconf/pncconf.glade:31771 -#: src/emc/usr_intf/pncconf/pncconf.glade:31791 -#: src/emc/usr_intf/pncconf/pncconf.glade:31811 -#: src/emc/usr_intf/pncconf/pncconf.glade:33029 -#: src/emc/usr_intf/pncconf/pncconf.glade:33292 -#: src/emc/usr_intf/pncconf/pncconf.glade:35208 -#: src/emc/usr_intf/pncconf/pncconf.glade:35228 -#: src/emc/usr_intf/pncconf/pncconf.glade:35248 -#: src/emc/usr_intf/pncconf/pncconf.glade:35268 -#: src/emc/usr_intf/pncconf/pncconf.glade:35288 -#: src/emc/usr_intf/pncconf/pncconf.glade:35308 -#: src/emc/usr_intf/pncconf/pncconf.glade:35328 -#: src/emc/usr_intf/pncconf/pncconf.glade:35348 -#: src/emc/usr_intf/pncconf/pncconf.glade:35368 -#: src/emc/usr_intf/pncconf/pncconf.glade:35388 -#: src/emc/usr_intf/pncconf/pncconf.glade:35408 -#: src/emc/usr_intf/pncconf/pncconf.glade:35428 -#: src/emc/usr_intf/pncconf/pncconf.glade:35448 -#: src/emc/usr_intf/pncconf/pncconf.glade:35468 -#: src/emc/usr_intf/pncconf/pncconf.glade:35488 -#: src/emc/usr_intf/pncconf/pncconf.glade:35508 -#: src/emc/usr_intf/pncconf/pncconf.glade:35528 -#: src/emc/usr_intf/pncconf/pncconf.glade:35548 -#: src/emc/usr_intf/pncconf/pncconf.glade:35568 -#: src/emc/usr_intf/pncconf/pncconf.glade:35588 -#: src/emc/usr_intf/pncconf/pncconf.glade:35608 -#: src/emc/usr_intf/pncconf/pncconf.glade:35628 -#: src/emc/usr_intf/pncconf/pncconf.glade:35648 -#: src/emc/usr_intf/pncconf/pncconf.glade:35839 -#: src/emc/usr_intf/pncconf/pncconf.glade:35859 -#: src/emc/usr_intf/pncconf/pncconf.glade:35879 -#: src/emc/usr_intf/pncconf/pncconf.glade:35899 -#: src/emc/usr_intf/pncconf/pncconf.glade:35919 -#: src/emc/usr_intf/pncconf/pncconf.glade:35939 -#: src/emc/usr_intf/pncconf/pncconf.glade:35959 -#: src/emc/usr_intf/pncconf/pncconf.glade:35979 -#: src/emc/usr_intf/pncconf/pncconf.glade:35999 -#: src/emc/usr_intf/pncconf/pncconf.glade:36019 -#: src/emc/usr_intf/pncconf/pncconf.glade:36039 -#: src/emc/usr_intf/pncconf/pncconf.glade:36059 -#: src/emc/usr_intf/pncconf/pncconf.glade:36079 -#: src/emc/usr_intf/pncconf/pncconf.glade:36099 -#: src/emc/usr_intf/pncconf/pncconf.glade:36119 -#: src/emc/usr_intf/pncconf/pncconf.glade:36139 -#: src/emc/usr_intf/pncconf/pncconf.glade:36159 -#: src/emc/usr_intf/pncconf/pncconf.glade:36179 -#: src/emc/usr_intf/pncconf/pncconf.glade:36199 -#: src/emc/usr_intf/pncconf/pncconf.glade:36219 -#: src/emc/usr_intf/pncconf/pncconf.glade:36239 -#: src/emc/usr_intf/pncconf/pncconf.glade:36259 -#: src/emc/usr_intf/pncconf/pncconf.glade:36279 -#: src/emc/usr_intf/pncconf/pncconf.glade:38208 -#: src/emc/usr_intf/pncconf/pncconf.glade:38549 -#: src/emc/usr_intf/pncconf/pncconf.glade:39779 -#: src/emc/usr_intf/pncconf/pncconf.glade:39799 -#: src/emc/usr_intf/pncconf/pncconf.glade:39819 -#: src/emc/usr_intf/pncconf/pncconf.glade:39839 -#: src/emc/usr_intf/pncconf/pncconf.glade:39859 -#: src/emc/usr_intf/pncconf/pncconf.glade:39879 -#: src/emc/usr_intf/pncconf/pncconf.glade:39899 -#: src/emc/usr_intf/pncconf/pncconf.glade:39919 -#: src/emc/usr_intf/pncconf/pncconf.glade:39939 -#: src/emc/usr_intf/pncconf/pncconf.glade:39959 -#: src/emc/usr_intf/pncconf/pncconf.glade:39979 -#: src/emc/usr_intf/pncconf/pncconf.glade:40199 -#: src/emc/usr_intf/pncconf/pncconf.glade:40219 -#: src/emc/usr_intf/pncconf/pncconf.glade:40239 -#: src/emc/usr_intf/pncconf/pncconf.glade:40259 -#: src/emc/usr_intf/pncconf/pncconf.glade:40279 -#: src/emc/usr_intf/pncconf/pncconf.glade:40299 -#: src/emc/usr_intf/pncconf/pncconf.glade:40319 -#: src/emc/usr_intf/pncconf/pncconf.glade:40339 -#: src/emc/usr_intf/pncconf/pncconf.glade:40359 -#: src/emc/usr_intf/pncconf/pncconf.glade:40379 -#: src/emc/usr_intf/pncconf/pncconf.glade:40399 -#: src/emc/usr_intf/pncconf/pncconf.glade:40419 -#: src/emc/usr_intf/pncconf/pncconf.glade:40439 -#: src/emc/usr_intf/pncconf/pncconf.glade:40459 -#: src/emc/usr_intf/pncconf/pncconf.glade:40479 -#: src/emc/usr_intf/pncconf/pncconf.glade:40499 -#: src/emc/usr_intf/pncconf/pncconf.glade:40519 -#: src/emc/usr_intf/pncconf/pncconf.glade:40539 -#: src/emc/usr_intf/pncconf/pncconf.glade:40559 -#: src/emc/usr_intf/pncconf/pncconf.glade:40579 -#: src/emc/usr_intf/pncconf/pncconf.glade:40599 -#: src/emc/usr_intf/pncconf/pncconf.glade:40619 -#: src/emc/usr_intf/pncconf/pncconf.glade:40639 -#: src/emc/usr_intf/pncconf/pncconf.glade:42555 -#: src/emc/usr_intf/pncconf/pncconf.glade:42778 -#: src/emc/usr_intf/pncconf/pncconf.glade:44707 -#: src/emc/usr_intf/pncconf/pncconf.glade:44727 -#: src/emc/usr_intf/pncconf/pncconf.glade:44747 -#: src/emc/usr_intf/pncconf/pncconf.glade:44767 -#: src/emc/usr_intf/pncconf/pncconf.glade:44787 -#: src/emc/usr_intf/pncconf/pncconf.glade:44807 -#: src/emc/usr_intf/pncconf/pncconf.glade:44827 -#: src/emc/usr_intf/pncconf/pncconf.glade:44847 -#: src/emc/usr_intf/pncconf/pncconf.glade:44867 -#: src/emc/usr_intf/pncconf/pncconf.glade:44887 -#: src/emc/usr_intf/pncconf/pncconf.glade:44907 -#: src/emc/usr_intf/pncconf/pncconf.glade:44927 -#: src/emc/usr_intf/pncconf/pncconf.glade:44947 -#: src/emc/usr_intf/pncconf/pncconf.glade:44967 -#: src/emc/usr_intf/pncconf/pncconf.glade:44987 -#: src/emc/usr_intf/pncconf/pncconf.glade:45007 -#: src/emc/usr_intf/pncconf/pncconf.glade:45027 -#: src/emc/usr_intf/pncconf/pncconf.glade:45047 -#: src/emc/usr_intf/pncconf/pncconf.glade:45067 -#: src/emc/usr_intf/pncconf/pncconf.glade:45087 -#: src/emc/usr_intf/pncconf/pncconf.glade:45107 -#: src/emc/usr_intf/pncconf/pncconf.glade:45127 -#: src/emc/usr_intf/pncconf/pncconf.glade:45147 -#: src/emc/usr_intf/pncconf/pncconf.glade:45456 -#: src/emc/usr_intf/pncconf/pncconf.glade:45476 -#: src/emc/usr_intf/pncconf/pncconf.glade:45496 -#: src/emc/usr_intf/pncconf/pncconf.glade:45516 -#: src/emc/usr_intf/pncconf/pncconf.glade:45536 -#: src/emc/usr_intf/pncconf/pncconf.glade:45556 -#: src/emc/usr_intf/pncconf/pncconf.glade:45576 -#: src/emc/usr_intf/pncconf/pncconf.glade:45596 -#: src/emc/usr_intf/pncconf/pncconf.glade:45616 -#: src/emc/usr_intf/pncconf/pncconf.glade:45636 -#: src/emc/usr_intf/pncconf/pncconf.glade:45656 -#: src/emc/usr_intf/pncconf/pncconf.glade:46886 -#: src/emc/usr_intf/pncconf/pncconf.glade:47122 -#: src/emc/usr_intf/pncconf/pncconf.glade:47142 -#: src/emc/usr_intf/pncconf/pncconf.glade:47162 -#: src/emc/usr_intf/pncconf/pncconf.glade:47182 -#: src/emc/usr_intf/pncconf/pncconf.glade:47202 -#: src/emc/usr_intf/pncconf/pncconf.glade:47222 -#: src/emc/usr_intf/pncconf/pncconf.glade:47242 -#: src/emc/usr_intf/pncconf/pncconf.glade:47262 -#: src/emc/usr_intf/pncconf/pncconf.glade:47282 -#: src/emc/usr_intf/pncconf/pncconf.glade:47302 -#: src/emc/usr_intf/pncconf/pncconf.glade:47322 -#: src/emc/usr_intf/pncconf/pncconf.glade:47342 -#: src/emc/usr_intf/pncconf/pncconf.glade:47362 -#: src/emc/usr_intf/pncconf/pncconf.glade:47382 -#: src/emc/usr_intf/pncconf/pncconf.glade:47402 -#: src/emc/usr_intf/pncconf/pncconf.glade:47422 -#: src/emc/usr_intf/pncconf/pncconf.glade:47442 -#: src/emc/usr_intf/pncconf/pncconf.glade:47462 -#: src/emc/usr_intf/pncconf/pncconf.glade:47482 -#: src/emc/usr_intf/pncconf/pncconf.glade:47502 -#: src/emc/usr_intf/pncconf/pncconf.glade:47522 -#: src/emc/usr_intf/pncconf/pncconf.glade:47542 -#: src/emc/usr_intf/pncconf/pncconf.glade:47562 -#: src/emc/usr_intf/pncconf/pncconf.glade:49478 -#: src/emc/usr_intf/pncconf/pncconf.glade:49701 -#: src/emc/usr_intf/pncconf/pncconf.glade:51630 -#: src/emc/usr_intf/pncconf/pncconf.glade:51650 -#: src/emc/usr_intf/pncconf/pncconf.glade:51670 -#: src/emc/usr_intf/pncconf/pncconf.glade:51690 -#: src/emc/usr_intf/pncconf/pncconf.glade:51710 -#: src/emc/usr_intf/pncconf/pncconf.glade:51730 -#: src/emc/usr_intf/pncconf/pncconf.glade:51750 -#: src/emc/usr_intf/pncconf/pncconf.glade:51770 -#: src/emc/usr_intf/pncconf/pncconf.glade:51790 -#: src/emc/usr_intf/pncconf/pncconf.glade:51810 -#: src/emc/usr_intf/pncconf/pncconf.glade:51830 -#: src/emc/usr_intf/pncconf/pncconf.glade:51850 -#: src/emc/usr_intf/pncconf/pncconf.glade:51870 -#: src/emc/usr_intf/pncconf/pncconf.glade:51890 -#: src/emc/usr_intf/pncconf/pncconf.glade:51910 -#: src/emc/usr_intf/pncconf/pncconf.glade:51930 -#: src/emc/usr_intf/pncconf/pncconf.glade:51950 -#: src/emc/usr_intf/pncconf/pncconf.glade:51970 -#: src/emc/usr_intf/pncconf/pncconf.glade:51990 -#: src/emc/usr_intf/pncconf/pncconf.glade:52010 -#: src/emc/usr_intf/pncconf/pncconf.glade:52030 -#: src/emc/usr_intf/pncconf/pncconf.glade:52050 -#: src/emc/usr_intf/pncconf/pncconf.glade:52070 -#: src/emc/usr_intf/pncconf/pncconf.glade:52379 -#: src/emc/usr_intf/pncconf/pncconf.glade:52399 -#: src/emc/usr_intf/pncconf/pncconf.glade:52419 -#: src/emc/usr_intf/pncconf/pncconf.glade:52439 -#: src/emc/usr_intf/pncconf/pncconf.glade:52459 -#: src/emc/usr_intf/pncconf/pncconf.glade:52479 -#: src/emc/usr_intf/pncconf/pncconf.glade:52499 -#: src/emc/usr_intf/pncconf/pncconf.glade:52519 -#: src/emc/usr_intf/pncconf/pncconf.glade:52539 -#: src/emc/usr_intf/pncconf/pncconf.glade:52559 -#: src/emc/usr_intf/pncconf/pncconf.glade:52579 -#: src/emc/usr_intf/pncconf/pncconf.glade:53809 -msgid "" -"GPIO Input\n" -"GPIO Output\n" -"GPIO O Drain\n" -"Encoder\n" -"PWM\n" -"StepGen\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:63950 +msgid "Force Trapezoid Mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9198 -#: src/emc/usr_intf/pncconf/pncconf.glade:13188 -#: src/emc/usr_intf/pncconf/pncconf.glade:15884 -#: src/emc/usr_intf/pncconf/pncconf.glade:18394 -#: src/emc/usr_intf/pncconf/pncconf.glade:20397 -#: src/emc/usr_intf/pncconf/pncconf.glade:21325 -#: src/emc/usr_intf/pncconf/pncconf.glade:23121 -#: src/emc/usr_intf/pncconf/pncconf.glade:24917 -msgid "Launch test panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:63962 +msgid "Emulate feedback " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9213 -#: src/emc/usr_intf/pncconf/pncconf.glade:9225 -#: src/emc/usr_intf/pncconf/pncconf.glade:13162 -#: src/emc/usr_intf/pncconf/pncconf.glade:13174 -#: src/emc/usr_intf/pncconf/pncconf.glade:15858 -#: src/emc/usr_intf/pncconf/pncconf.glade:15870 -#: src/emc/usr_intf/pncconf/pncconf.glade:18367 -#: src/emc/usr_intf/pncconf/pncconf.glade:18379 -#: src/emc/usr_intf/pncconf/pncconf.glade:20370 -#: src/emc/usr_intf/pncconf/pncconf.glade:20382 -#: src/emc/usr_intf/pncconf/pncconf.glade:21339 -#: src/emc/usr_intf/pncconf/pncconf.glade:21351 -#: src/emc/usr_intf/pncconf/pncconf.glade:23135 -#: src/emc/usr_intf/pncconf/pncconf.glade:23147 -#: src/emc/usr_intf/pncconf/pncconf.glade:24931 -#: src/emc/usr_intf/pncconf/pncconf.glade:24943 -#: src/emc/usr_intf/pncconf/pncconf.glade:26815 -#: src/emc/usr_intf/pncconf/pncconf.glade:26827 -#: src/emc/usr_intf/pncconf/pncconf.glade:30826 -#: src/emc/usr_intf/pncconf/pncconf.glade:30838 -#: src/emc/usr_intf/pncconf/pncconf.glade:31831 -#: src/emc/usr_intf/pncconf/pncconf.glade:35184 -#: src/emc/usr_intf/pncconf/pncconf.glade:35196 -#: src/emc/usr_intf/pncconf/pncconf.glade:36312 -#: src/emc/usr_intf/pncconf/pncconf.glade:36324 -#: src/emc/usr_intf/pncconf/pncconf.glade:39755 -#: src/emc/usr_intf/pncconf/pncconf.glade:39767 -#: src/emc/usr_intf/pncconf/pncconf.glade:40659 -#: src/emc/usr_intf/pncconf/pncconf.glade:40671 -#: src/emc/usr_intf/pncconf/pncconf.glade:44670 -#: src/emc/usr_intf/pncconf/pncconf.glade:44682 -#: src/emc/usr_intf/pncconf/pncconf.glade:45676 -#: src/emc/usr_intf/pncconf/pncconf.glade:45688 -#: src/emc/usr_intf/pncconf/pncconf.glade:47582 -#: src/emc/usr_intf/pncconf/pncconf.glade:47594 -#: src/emc/usr_intf/pncconf/pncconf.glade:51593 -#: src/emc/usr_intf/pncconf/pncconf.glade:51605 -#: src/emc/usr_intf/pncconf/pncconf.glade:52599 -#: src/emc/usr_intf/pncconf/pncconf.glade:52611 -msgid "function" +#: src/emc/usr_intf/pncconf/pncconf.glade:63974 +msgid "Emulated Hall sensors" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9305 -#: src/emc/usr_intf/pncconf/pncconf.glade:9357 -#: src/emc/usr_intf/pncconf/pncconf.glade:9409 -#: src/emc/usr_intf/pncconf/pncconf.glade:9461 -#: src/emc/usr_intf/pncconf/pncconf.glade:10301 -#: src/emc/usr_intf/pncconf/pncconf.glade:10353 -#: src/emc/usr_intf/pncconf/pncconf.glade:10405 -#: src/emc/usr_intf/pncconf/pncconf.glade:10457 -#: src/emc/usr_intf/pncconf/pncconf.glade:10509 -#: src/emc/usr_intf/pncconf/pncconf.glade:10561 -#: src/emc/usr_intf/pncconf/pncconf.glade:10613 -#: src/emc/usr_intf/pncconf/pncconf.glade:10665 -#: src/emc/usr_intf/pncconf/pncconf.glade:10717 -#: src/emc/usr_intf/pncconf/pncconf.glade:10769 -#: src/emc/usr_intf/pncconf/pncconf.glade:11089 -#: src/emc/usr_intf/pncconf/pncconf.glade:11141 -#: src/emc/usr_intf/pncconf/pncconf.glade:11579 -#: src/emc/usr_intf/pncconf/pncconf.glade:11631 -#: src/emc/usr_intf/pncconf/pncconf.glade:11683 -#: src/emc/usr_intf/pncconf/pncconf.glade:11735 -#: src/emc/usr_intf/pncconf/pncconf.glade:11787 -#: src/emc/usr_intf/pncconf/pncconf.glade:11839 -#: src/emc/usr_intf/pncconf/pncconf.glade:11891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11943 -#: src/emc/usr_intf/pncconf/pncconf.glade:11995 -#: src/emc/usr_intf/pncconf/pncconf.glade:12047 -#: src/emc/usr_intf/pncconf/pncconf.glade:12886 -#: src/emc/usr_intf/pncconf/pncconf.glade:12938 -#: src/emc/usr_intf/pncconf/pncconf.glade:12990 -#: src/emc/usr_intf/pncconf/pncconf.glade:13042 -#: src/emc/usr_intf/pncconf/pncconf.glade:13702 -#: src/emc/usr_intf/pncconf/pncconf.glade:13754 -#: src/emc/usr_intf/pncconf/pncconf.glade:14183 -#: src/emc/usr_intf/pncconf/pncconf.glade:14235 -#: src/emc/usr_intf/pncconf/pncconf.glade:14287 -#: src/emc/usr_intf/pncconf/pncconf.glade:14339 -#: src/emc/usr_intf/pncconf/pncconf.glade:14391 -#: src/emc/usr_intf/pncconf/pncconf.glade:14443 -#: src/emc/usr_intf/pncconf/pncconf.glade:14495 -#: src/emc/usr_intf/pncconf/pncconf.glade:14547 -#: src/emc/usr_intf/pncconf/pncconf.glade:14599 -#: src/emc/usr_intf/pncconf/pncconf.glade:14651 -#: src/emc/usr_intf/pncconf/pncconf.glade:14703 -#: src/emc/usr_intf/pncconf/pncconf.glade:14755 -#: src/emc/usr_intf/pncconf/pncconf.glade:15582 -#: src/emc/usr_intf/pncconf/pncconf.glade:15634 -#: src/emc/usr_intf/pncconf/pncconf.glade:15686 -#: src/emc/usr_intf/pncconf/pncconf.glade:15738 -#: src/emc/usr_intf/pncconf/pncconf.glade:16784 -#: src/emc/usr_intf/pncconf/pncconf.glade:16836 -#: src/emc/usr_intf/pncconf/pncconf.glade:16888 -#: src/emc/usr_intf/pncconf/pncconf.glade:16940 -#: src/emc/usr_intf/pncconf/pncconf.glade:16992 -#: src/emc/usr_intf/pncconf/pncconf.glade:17044 -#: src/emc/usr_intf/pncconf/pncconf.glade:17096 -#: src/emc/usr_intf/pncconf/pncconf.glade:17148 -#: src/emc/usr_intf/pncconf/pncconf.glade:17200 -#: src/emc/usr_intf/pncconf/pncconf.glade:17252 -#: src/emc/usr_intf/pncconf/pncconf.glade:17304 -#: src/emc/usr_intf/pncconf/pncconf.glade:18143 -#: src/emc/usr_intf/pncconf/pncconf.glade:18195 -#: src/emc/usr_intf/pncconf/pncconf.glade:18247 -#: src/emc/usr_intf/pncconf/pncconf.glade:18908 -#: src/emc/usr_intf/pncconf/pncconf.glade:18960 -#: src/emc/usr_intf/pncconf/pncconf.glade:26907 -#: src/emc/usr_intf/pncconf/pncconf.glade:26959 -#: src/emc/usr_intf/pncconf/pncconf.glade:27011 -#: src/emc/usr_intf/pncconf/pncconf.glade:27063 -#: src/emc/usr_intf/pncconf/pncconf.glade:27890 -#: src/emc/usr_intf/pncconf/pncconf.glade:27942 -#: src/emc/usr_intf/pncconf/pncconf.glade:27994 -#: src/emc/usr_intf/pncconf/pncconf.glade:28046 -#: src/emc/usr_intf/pncconf/pncconf.glade:28098 -#: src/emc/usr_intf/pncconf/pncconf.glade:28150 -#: src/emc/usr_intf/pncconf/pncconf.glade:28202 -#: src/emc/usr_intf/pncconf/pncconf.glade:28254 -#: src/emc/usr_intf/pncconf/pncconf.glade:28306 -#: src/emc/usr_intf/pncconf/pncconf.glade:28358 -#: src/emc/usr_intf/pncconf/pncconf.glade:28410 -#: src/emc/usr_intf/pncconf/pncconf.glade:28462 -#: src/emc/usr_intf/pncconf/pncconf.glade:29151 -#: src/emc/usr_intf/pncconf/pncconf.glade:29203 -#: src/emc/usr_intf/pncconf/pncconf.glade:29255 -#: src/emc/usr_intf/pncconf/pncconf.glade:29307 -#: src/emc/usr_intf/pncconf/pncconf.glade:29359 -#: src/emc/usr_intf/pncconf/pncconf.glade:29411 -#: src/emc/usr_intf/pncconf/pncconf.glade:29463 -#: src/emc/usr_intf/pncconf/pncconf.glade:29515 -#: src/emc/usr_intf/pncconf/pncconf.glade:29567 -#: src/emc/usr_intf/pncconf/pncconf.glade:29619 -#: src/emc/usr_intf/pncconf/pncconf.glade:29671 -#: src/emc/usr_intf/pncconf/pncconf.glade:29723 -#: src/emc/usr_intf/pncconf/pncconf.glade:30550 -#: src/emc/usr_intf/pncconf/pncconf.glade:30602 -#: src/emc/usr_intf/pncconf/pncconf.glade:30654 -#: src/emc/usr_intf/pncconf/pncconf.glade:30706 -#: src/emc/usr_intf/pncconf/pncconf.glade:32210 -#: src/emc/usr_intf/pncconf/pncconf.glade:32262 -#: src/emc/usr_intf/pncconf/pncconf.glade:32314 -#: src/emc/usr_intf/pncconf/pncconf.glade:32366 -#: src/emc/usr_intf/pncconf/pncconf.glade:32418 -#: src/emc/usr_intf/pncconf/pncconf.glade:32470 -#: src/emc/usr_intf/pncconf/pncconf.glade:32522 -#: src/emc/usr_intf/pncconf/pncconf.glade:32574 -#: src/emc/usr_intf/pncconf/pncconf.glade:32626 -#: src/emc/usr_intf/pncconf/pncconf.glade:32678 -#: src/emc/usr_intf/pncconf/pncconf.glade:32730 -#: src/emc/usr_intf/pncconf/pncconf.glade:32782 -#: src/emc/usr_intf/pncconf/pncconf.glade:33509 -#: src/emc/usr_intf/pncconf/pncconf.glade:33561 -#: src/emc/usr_intf/pncconf/pncconf.glade:33613 -#: src/emc/usr_intf/pncconf/pncconf.glade:33665 -#: src/emc/usr_intf/pncconf/pncconf.glade:33717 -#: src/emc/usr_intf/pncconf/pncconf.glade:33769 -#: src/emc/usr_intf/pncconf/pncconf.glade:33821 -#: src/emc/usr_intf/pncconf/pncconf.glade:33873 -#: src/emc/usr_intf/pncconf/pncconf.glade:33925 -#: src/emc/usr_intf/pncconf/pncconf.glade:33977 -#: src/emc/usr_intf/pncconf/pncconf.glade:34029 -#: src/emc/usr_intf/pncconf/pncconf.glade:34081 -#: src/emc/usr_intf/pncconf/pncconf.glade:34908 -#: src/emc/usr_intf/pncconf/pncconf.glade:34960 -#: src/emc/usr_intf/pncconf/pncconf.glade:35012 -#: src/emc/usr_intf/pncconf/pncconf.glade:35064 -#: src/emc/usr_intf/pncconf/pncconf.glade:36404 -#: src/emc/usr_intf/pncconf/pncconf.glade:36456 -#: src/emc/usr_intf/pncconf/pncconf.glade:36508 -#: src/emc/usr_intf/pncconf/pncconf.glade:36560 -#: src/emc/usr_intf/pncconf/pncconf.glade:37387 -#: src/emc/usr_intf/pncconf/pncconf.glade:37439 -#: src/emc/usr_intf/pncconf/pncconf.glade:37491 -#: src/emc/usr_intf/pncconf/pncconf.glade:37543 -#: src/emc/usr_intf/pncconf/pncconf.glade:37595 -#: src/emc/usr_intf/pncconf/pncconf.glade:37647 -#: src/emc/usr_intf/pncconf/pncconf.glade:37699 -#: src/emc/usr_intf/pncconf/pncconf.glade:37751 -#: src/emc/usr_intf/pncconf/pncconf.glade:37803 -#: src/emc/usr_intf/pncconf/pncconf.glade:37855 -#: src/emc/usr_intf/pncconf/pncconf.glade:37907 -#: src/emc/usr_intf/pncconf/pncconf.glade:37959 -#: src/emc/usr_intf/pncconf/pncconf.glade:38764 -#: src/emc/usr_intf/pncconf/pncconf.glade:38816 -#: src/emc/usr_intf/pncconf/pncconf.glade:38868 -#: src/emc/usr_intf/pncconf/pncconf.glade:38920 -#: src/emc/usr_intf/pncconf/pncconf.glade:38972 -#: src/emc/usr_intf/pncconf/pncconf.glade:39024 -#: src/emc/usr_intf/pncconf/pncconf.glade:39076 -#: src/emc/usr_intf/pncconf/pncconf.glade:39128 -#: src/emc/usr_intf/pncconf/pncconf.glade:39180 -#: src/emc/usr_intf/pncconf/pncconf.glade:39232 -#: src/emc/usr_intf/pncconf/pncconf.glade:39284 -#: src/emc/usr_intf/pncconf/pncconf.glade:39336 -#: src/emc/usr_intf/pncconf/pncconf.glade:40751 -#: src/emc/usr_intf/pncconf/pncconf.glade:40803 -#: src/emc/usr_intf/pncconf/pncconf.glade:40855 -#: src/emc/usr_intf/pncconf/pncconf.glade:40907 -#: src/emc/usr_intf/pncconf/pncconf.glade:41734 -#: src/emc/usr_intf/pncconf/pncconf.glade:41786 -#: src/emc/usr_intf/pncconf/pncconf.glade:41838 -#: src/emc/usr_intf/pncconf/pncconf.glade:41890 -#: src/emc/usr_intf/pncconf/pncconf.glade:41942 -#: src/emc/usr_intf/pncconf/pncconf.glade:41994 -#: src/emc/usr_intf/pncconf/pncconf.glade:42046 -#: src/emc/usr_intf/pncconf/pncconf.glade:42098 -#: src/emc/usr_intf/pncconf/pncconf.glade:42150 -#: src/emc/usr_intf/pncconf/pncconf.glade:42202 -#: src/emc/usr_intf/pncconf/pncconf.glade:42254 -#: src/emc/usr_intf/pncconf/pncconf.glade:42306 -#: src/emc/usr_intf/pncconf/pncconf.glade:42995 -#: src/emc/usr_intf/pncconf/pncconf.glade:43047 -#: src/emc/usr_intf/pncconf/pncconf.glade:43099 -#: src/emc/usr_intf/pncconf/pncconf.glade:43151 -#: src/emc/usr_intf/pncconf/pncconf.glade:43203 -#: src/emc/usr_intf/pncconf/pncconf.glade:43255 -#: src/emc/usr_intf/pncconf/pncconf.glade:43307 -#: src/emc/usr_intf/pncconf/pncconf.glade:43359 -#: src/emc/usr_intf/pncconf/pncconf.glade:43411 -#: src/emc/usr_intf/pncconf/pncconf.glade:43463 -#: src/emc/usr_intf/pncconf/pncconf.glade:43515 -#: src/emc/usr_intf/pncconf/pncconf.glade:43567 -#: src/emc/usr_intf/pncconf/pncconf.glade:44394 -#: src/emc/usr_intf/pncconf/pncconf.glade:44446 -#: src/emc/usr_intf/pncconf/pncconf.glade:44498 -#: src/emc/usr_intf/pncconf/pncconf.glade:44550 -#: src/emc/usr_intf/pncconf/pncconf.glade:46067 -#: src/emc/usr_intf/pncconf/pncconf.glade:46119 -#: src/emc/usr_intf/pncconf/pncconf.glade:46171 -#: src/emc/usr_intf/pncconf/pncconf.glade:46223 -#: src/emc/usr_intf/pncconf/pncconf.glade:46275 -#: src/emc/usr_intf/pncconf/pncconf.glade:46327 -#: src/emc/usr_intf/pncconf/pncconf.glade:46379 -#: src/emc/usr_intf/pncconf/pncconf.glade:46431 -#: src/emc/usr_intf/pncconf/pncconf.glade:46483 -#: src/emc/usr_intf/pncconf/pncconf.glade:46535 -#: src/emc/usr_intf/pncconf/pncconf.glade:46587 -#: src/emc/usr_intf/pncconf/pncconf.glade:46639 -#: src/emc/usr_intf/pncconf/pncconf.glade:47674 -#: src/emc/usr_intf/pncconf/pncconf.glade:47726 -#: src/emc/usr_intf/pncconf/pncconf.glade:47778 -#: src/emc/usr_intf/pncconf/pncconf.glade:47830 -#: src/emc/usr_intf/pncconf/pncconf.glade:48657 -#: src/emc/usr_intf/pncconf/pncconf.glade:48709 -#: src/emc/usr_intf/pncconf/pncconf.glade:48761 -#: src/emc/usr_intf/pncconf/pncconf.glade:48813 -#: src/emc/usr_intf/pncconf/pncconf.glade:48865 -#: src/emc/usr_intf/pncconf/pncconf.glade:48917 -#: src/emc/usr_intf/pncconf/pncconf.glade:48969 -#: src/emc/usr_intf/pncconf/pncconf.glade:49021 -#: src/emc/usr_intf/pncconf/pncconf.glade:49073 -#: src/emc/usr_intf/pncconf/pncconf.glade:49125 -#: src/emc/usr_intf/pncconf/pncconf.glade:49177 -#: src/emc/usr_intf/pncconf/pncconf.glade:49229 -#: src/emc/usr_intf/pncconf/pncconf.glade:49918 -#: src/emc/usr_intf/pncconf/pncconf.glade:49970 -#: src/emc/usr_intf/pncconf/pncconf.glade:50022 -#: src/emc/usr_intf/pncconf/pncconf.glade:50074 -#: src/emc/usr_intf/pncconf/pncconf.glade:50126 -#: src/emc/usr_intf/pncconf/pncconf.glade:50178 -#: src/emc/usr_intf/pncconf/pncconf.glade:50230 -#: src/emc/usr_intf/pncconf/pncconf.glade:50282 -#: src/emc/usr_intf/pncconf/pncconf.glade:50334 -#: src/emc/usr_intf/pncconf/pncconf.glade:50386 -#: src/emc/usr_intf/pncconf/pncconf.glade:50438 -#: src/emc/usr_intf/pncconf/pncconf.glade:50490 -#: src/emc/usr_intf/pncconf/pncconf.glade:51317 -#: src/emc/usr_intf/pncconf/pncconf.glade:51369 -#: src/emc/usr_intf/pncconf/pncconf.glade:51421 -#: src/emc/usr_intf/pncconf/pncconf.glade:51473 -#: src/emc/usr_intf/pncconf/pncconf.glade:52990 -#: src/emc/usr_intf/pncconf/pncconf.glade:53042 -#: src/emc/usr_intf/pncconf/pncconf.glade:53094 -#: src/emc/usr_intf/pncconf/pncconf.glade:53146 -#: src/emc/usr_intf/pncconf/pncconf.glade:53198 -#: src/emc/usr_intf/pncconf/pncconf.glade:53250 -#: src/emc/usr_intf/pncconf/pncconf.glade:53302 -#: src/emc/usr_intf/pncconf/pncconf.glade:53354 -#: src/emc/usr_intf/pncconf/pncconf.glade:53406 -#: src/emc/usr_intf/pncconf/pncconf.glade:53458 -#: src/emc/usr_intf/pncconf/pncconf.glade:53510 -#: src/emc/usr_intf/pncconf/pncconf.glade:53562 -msgid "" -"ESTOP IN\n" -"Spindle PPR\n" -"Spindle A \n" -"Spindle B \n" -"Home X \n" -"Home Y \n" -"Home Z\n" -"Home A\n" -"Minimum Limit + Home X \n" -"Minimum Limit + Home Y \n" -"Minimum Limit + Home Z \n" -"Minimum Limit + Home A\n" -"Maximum Limit + Home X \n" -"Maximum Limit + Home Y \n" -"Maximum Limit + Home Z \n" -"Maximum Limit + Home A\n" -"Both Limit + Home X \n" -"Both Limit + Home Y \n" -"Both Limit + Home Z \n" -"Both Limit + Home A\n" -"Minimum Limit X \n" -"Minimum Limit Y \n" -"Minimum Limit Z \n" -"Minimum Limit A\n" -"Maximum Limit X \n" -"Maximum Limit Y \n" -"Maximum Limit Z \n" -"Maximum Limit A\n" -"Both Limit X \n" -"Both Limit Y \n" -"Both Limit Z \n" -"Both Limit A\n" -"All limits\n" -"All home\n" -"Unused" +#: src/emc/usr_intf/pncconf/pncconf.glade:63987 +msgid "Emulated Fanuc Red Cap" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9515 -#: src/emc/usr_intf/pncconf/pncconf.glade:12871 -#: src/emc/usr_intf/pncconf/pncconf.glade:18128 -#: src/emc/usr_intf/pncconf/pncconf.glade:20233 -#: src/emc/usr_intf/pncconf/pncconf.glade:21486 -#: src/emc/usr_intf/pncconf/pncconf.glade:23282 -#: src/emc/usr_intf/pncconf/pncconf.glade:25078 -msgid "31:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64014 +msgid "8i20 Max Current" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9531 -#: src/emc/usr_intf/pncconf/pncconf.glade:12855 -#: src/emc/usr_intf/pncconf/pncconf.glade:18112 -#: src/emc/usr_intf/pncconf/pncconf.glade:20217 -#: src/emc/usr_intf/pncconf/pncconf.glade:21502 -#: src/emc/usr_intf/pncconf/pncconf.glade:23298 -#: src/emc/usr_intf/pncconf/pncconf.glade:25094 -msgid "29:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64048 +msgid "Output Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9547 -#: src/emc/usr_intf/pncconf/pncconf.glade:12839 -#: src/emc/usr_intf/pncconf/pncconf.glade:18096 -#: src/emc/usr_intf/pncconf/pncconf.glade:20201 -#: src/emc/usr_intf/pncconf/pncconf.glade:21518 -#: src/emc/usr_intf/pncconf/pncconf.glade:23314 -#: src/emc/usr_intf/pncconf/pncconf.glade:25110 -msgid "27:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64103 +msgid "alignment current" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9563 -#: src/emc/usr_intf/pncconf/pncconf.glade:12823 -#: src/emc/usr_intf/pncconf/pncconf.glade:18080 -#: src/emc/usr_intf/pncconf/pncconf.glade:20185 -#: src/emc/usr_intf/pncconf/pncconf.glade:21534 -#: src/emc/usr_intf/pncconf/pncconf.glade:23330 -#: src/emc/usr_intf/pncconf/pncconf.glade:25126 -msgid "25:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64113 +msgid "lead angle" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9936 -#: src/emc/usr_intf/pncconf/pncconf.glade:12450 -#: src/emc/usr_intf/pncconf/pncconf.glade:17707 -#: src/emc/usr_intf/pncconf/pncconf.glade:19924 -#: src/emc/usr_intf/pncconf/pncconf.glade:21795 -#: src/emc/usr_intf/pncconf/pncconf.glade:23591 -#: src/emc/usr_intf/pncconf/pncconf.glade:25387 -msgid "33:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64213 +#, fuzzy +msgid "Reverse" +msgstr "スピンドル逆" -#: src/emc/usr_intf/pncconf/pncconf.glade:9952 -#: src/emc/usr_intf/pncconf/pncconf.glade:12434 -#: src/emc/usr_intf/pncconf/pncconf.glade:17691 -#: src/emc/usr_intf/pncconf/pncconf.glade:19908 -#: src/emc/usr_intf/pncconf/pncconf.glade:21811 -#: src/emc/usr_intf/pncconf/pncconf.glade:23607 -#: src/emc/usr_intf/pncconf/pncconf.glade:25403 -msgid "35:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64223 +msgid "Input-pattern" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9968 -#: src/emc/usr_intf/pncconf/pncconf.glade:12418 -#: src/emc/usr_intf/pncconf/pncconf.glade:17675 -#: src/emc/usr_intf/pncconf/pncconf.glade:19892 -#: src/emc/usr_intf/pncconf/pncconf.glade:21827 -#: src/emc/usr_intf/pncconf/pncconf.glade:23623 -#: src/emc/usr_intf/pncconf/pncconf.glade:25419 -msgid "37:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64233 +msgid "output-pattern" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9984 -#: src/emc/usr_intf/pncconf/pncconf.glade:12402 -#: src/emc/usr_intf/pncconf/pncconf.glade:17659 -#: src/emc/usr_intf/pncconf/pncconf.glade:19876 -#: src/emc/usr_intf/pncconf/pncconf.glade:21843 -#: src/emc/usr_intf/pncconf/pncconf.glade:23639 -#: src/emc/usr_intf/pncconf/pncconf.glade:25435 -msgid "39:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64243 +msgid "Drive-offset" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10000 -#: src/emc/usr_intf/pncconf/pncconf.glade:12386 -#: src/emc/usr_intf/pncconf/pncconf.glade:17643 -#: src/emc/usr_intf/pncconf/pncconf.glade:19860 -#: src/emc/usr_intf/pncconf/pncconf.glade:21859 -#: src/emc/usr_intf/pncconf/pncconf.glade:23655 -#: src/emc/usr_intf/pncconf/pncconf.glade:25451 -msgid "41:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64253 +msgid "Encoder-offset" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10016 -#: src/emc/usr_intf/pncconf/pncconf.glade:12370 -#: src/emc/usr_intf/pncconf/pncconf.glade:17627 -#: src/emc/usr_intf/pncconf/pncconf.glade:19844 -#: src/emc/usr_intf/pncconf/pncconf.glade:21875 -#: src/emc/usr_intf/pncconf/pncconf.glade:23671 -#: src/emc/usr_intf/pncconf/pncconf.glade:25467 -msgid "43:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64263 +msgid "Poles" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10032 -#: src/emc/usr_intf/pncconf/pncconf.glade:12354 -#: src/emc/usr_intf/pncconf/pncconf.glade:17611 -#: src/emc/usr_intf/pncconf/pncconf.glade:19828 -#: src/emc/usr_intf/pncconf/pncconf.glade:21891 -#: src/emc/usr_intf/pncconf/pncconf.glade:23687 -#: src/emc/usr_intf/pncconf/pncconf.glade:25483 -msgid "45:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64283 +#, fuzzy +msgid "Configuration" +msgstr "スピンドル消した" -#: src/emc/usr_intf/pncconf/pncconf.glade:10099 -#: src/emc/usr_intf/pncconf/pncconf.glade:12287 -#: src/emc/usr_intf/pncconf/pncconf.glade:17544 -#: src/emc/usr_intf/pncconf/pncconf.glade:19777 -#: src/emc/usr_intf/pncconf/pncconf.glade:21942 -#: src/emc/usr_intf/pncconf/pncconf.glade:23738 -#: src/emc/usr_intf/pncconf/pncconf.glade:25534 -msgid "47:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64318 +msgid "Use BLDC Motor Commutation Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10822 -#: src/emc/usr_intf/pncconf/pncconf.glade:11077 -#: src/emc/usr_intf/pncconf/pncconf.glade:11311 -#: src/emc/usr_intf/pncconf/pncconf.glade:11567 -#: src/emc/usr_intf/pncconf/pncconf.glade:13924 -#: src/emc/usr_intf/pncconf/pncconf.glade:14171 -#: src/emc/usr_intf/pncconf/pncconf.glade:16516 -#: src/emc/usr_intf/pncconf/pncconf.glade:16772 -#: src/emc/usr_intf/pncconf/pncconf.glade:19129 -#: src/emc/usr_intf/pncconf/pncconf.glade:19379 -#: src/emc/usr_intf/pncconf/pncconf.glade:22343 -#: src/emc/usr_intf/pncconf/pncconf.glade:22592 -#: src/emc/usr_intf/pncconf/pncconf.glade:24139 -#: src/emc/usr_intf/pncconf/pncconf.glade:24388 -#: src/emc/usr_intf/pncconf/pncconf.glade:25935 -#: src/emc/usr_intf/pncconf/pncconf.glade:26184 -#: src/emc/usr_intf/pncconf/pncconf.glade:28515 -#: src/emc/usr_intf/pncconf/pncconf.glade:28761 -#: src/emc/usr_intf/pncconf/pncconf.glade:28892 -#: src/emc/usr_intf/pncconf/pncconf.glade:29139 -#: src/emc/usr_intf/pncconf/pncconf.glade:33079 -#: src/emc/usr_intf/pncconf/pncconf.glade:33250 -#: src/emc/usr_intf/pncconf/pncconf.glade:33497 -#: src/emc/usr_intf/pncconf/pncconf.glade:38012 -#: src/emc/usr_intf/pncconf/pncconf.glade:38258 -#: src/emc/usr_intf/pncconf/pncconf.glade:38507 -#: src/emc/usr_intf/pncconf/pncconf.glade:42359 -#: src/emc/usr_intf/pncconf/pncconf.glade:42605 -#: src/emc/usr_intf/pncconf/pncconf.glade:42736 -#: src/emc/usr_intf/pncconf/pncconf.glade:42983 -#: src/emc/usr_intf/pncconf/pncconf.glade:46936 -#: src/emc/usr_intf/pncconf/pncconf.glade:49282 -#: src/emc/usr_intf/pncconf/pncconf.glade:49528 -#: src/emc/usr_intf/pncconf/pncconf.glade:49659 -#: src/emc/usr_intf/pncconf/pncconf.glade:49906 -#: src/emc/usr_intf/pncconf/pncconf.glade:53859 -msgid "Pin Type" +#: src/emc/usr_intf/pncconf/pncconf.glade:64354 +msgid "Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10835 -#: src/emc/usr_intf/pncconf/pncconf.glade:11553 -#: src/emc/usr_intf/pncconf/pncconf.glade:16758 -#: src/emc/usr_intf/pncconf/pncconf.glade:19365 -#: src/emc/usr_intf/pncconf/pncconf.glade:22356 -#: src/emc/usr_intf/pncconf/pncconf.glade:24152 -#: src/emc/usr_intf/pncconf/pncconf.glade:25948 -msgid "23:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64375 +msgid "% " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10849 -#: src/emc/usr_intf/pncconf/pncconf.glade:11539 -#: src/emc/usr_intf/pncconf/pncconf.glade:16744 -#: src/emc/usr_intf/pncconf/pncconf.glade:19351 -#: src/emc/usr_intf/pncconf/pncconf.glade:22370 -#: src/emc/usr_intf/pncconf/pncconf.glade:24166 -#: src/emc/usr_intf/pncconf/pncconf.glade:25962 -msgid "21:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64394 +msgid "Range:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10863 -#: src/emc/usr_intf/pncconf/pncconf.glade:11525 -#: src/emc/usr_intf/pncconf/pncconf.glade:16730 -#: src/emc/usr_intf/pncconf/pncconf.glade:19337 -#: src/emc/usr_intf/pncconf/pncconf.glade:22384 -#: src/emc/usr_intf/pncconf/pncconf.glade:24180 -#: src/emc/usr_intf/pncconf/pncconf.glade:25976 -msgid "19:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64419 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "RPM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10877 -#: src/emc/usr_intf/pncconf/pncconf.glade:11511 -#: src/emc/usr_intf/pncconf/pncconf.glade:16716 -#: src/emc/usr_intf/pncconf/pncconf.glade:19323 -#: src/emc/usr_intf/pncconf/pncconf.glade:22398 -#: src/emc/usr_intf/pncconf/pncconf.glade:24194 -#: src/emc/usr_intf/pncconf/pncconf.glade:25990 -msgid "17:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64439 +#, fuzzy +msgid "Use Spindle-At-Speed" +msgstr "スピンドル消した" -#: src/emc/usr_intf/pncconf/pncconf.glade:10891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11497 -#: src/emc/usr_intf/pncconf/pncconf.glade:16702 -#: src/emc/usr_intf/pncconf/pncconf.glade:19309 -#: src/emc/usr_intf/pncconf/pncconf.glade:22412 -#: src/emc/usr_intf/pncconf/pncconf.glade:24208 -#: src/emc/usr_intf/pncconf/pncconf.glade:26004 -msgid "15:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64464 +#, fuzzy +msgid "Filter gain:" +msgstr "テスト..." -#: src/emc/usr_intf/pncconf/pncconf.glade:10905 -#: src/emc/usr_intf/pncconf/pncconf.glade:11483 -#: src/emc/usr_intf/pncconf/pncconf.glade:16688 -#: src/emc/usr_intf/pncconf/pncconf.glade:19295 -#: src/emc/usr_intf/pncconf/pncconf.glade:22426 -#: src/emc/usr_intf/pncconf/pncconf.glade:24222 -#: src/emc/usr_intf/pncconf/pncconf.glade:26018 -msgid "13:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64499 +msgid "Spindle Display Filter Settings" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10919 -#: src/emc/usr_intf/pncconf/pncconf.glade:11469 -#: src/emc/usr_intf/pncconf/pncconf.glade:16674 -#: src/emc/usr_intf/pncconf/pncconf.glade:19281 -#: src/emc/usr_intf/pncconf/pncconf.glade:22440 -#: src/emc/usr_intf/pncconf/pncconf.glade:24236 -#: src/emc/usr_intf/pncconf/pncconf.glade:26032 -msgid "11:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64565 +msgid "Rapid Speed Following Error:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10933 -#: src/emc/usr_intf/pncconf/pncconf.glade:11455 -#: src/emc/usr_intf/pncconf/pncconf.glade:16660 -#: src/emc/usr_intf/pncconf/pncconf.glade:19267 -#: src/emc/usr_intf/pncconf/pncconf.glade:22454 -#: src/emc/usr_intf/pncconf/pncconf.glade:24250 -#: src/emc/usr_intf/pncconf/pncconf.glade:26046 -msgid " 9:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64577 +msgid "Feed Speed Following Error:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10947 -#: src/emc/usr_intf/pncconf/pncconf.glade:11441 -#: src/emc/usr_intf/pncconf/pncconf.glade:16646 -#: src/emc/usr_intf/pncconf/pncconf.glade:19253 -#: src/emc/usr_intf/pncconf/pncconf.glade:22468 -#: src/emc/usr_intf/pncconf/pncconf.glade:24264 -#: src/emc/usr_intf/pncconf/pncconf.glade:26060 -msgid " 7:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64591 +msgid "Invert Motor Direction" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10961 -#: src/emc/usr_intf/pncconf/pncconf.glade:11427 -#: src/emc/usr_intf/pncconf/pncconf.glade:16632 -#: src/emc/usr_intf/pncconf/pncconf.glade:19239 -#: src/emc/usr_intf/pncconf/pncconf.glade:22482 -#: src/emc/usr_intf/pncconf/pncconf.glade:24278 -#: src/emc/usr_intf/pncconf/pncconf.glade:26074 -msgid " 5:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64606 +msgid "Invert Encoder Direction " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10975 -#: src/emc/usr_intf/pncconf/pncconf.glade:11413 -#: src/emc/usr_intf/pncconf/pncconf.glade:16618 -#: src/emc/usr_intf/pncconf/pncconf.glade:19225 -#: src/emc/usr_intf/pncconf/pncconf.glade:22496 -#: src/emc/usr_intf/pncconf/pncconf.glade:24292 -#: src/emc/usr_intf/pncconf/pncconf.glade:26088 -msgid " 3:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64661 +#, fuzzy +msgid "Single Input Encoder" +msgstr "スピンドル逆" -#: src/emc/usr_intf/pncconf/pncconf.glade:10989 -#: src/emc/usr_intf/pncconf/pncconf.glade:11399 -#: src/emc/usr_intf/pncconf/pncconf.glade:16604 -#: src/emc/usr_intf/pncconf/pncconf.glade:19211 -#: src/emc/usr_intf/pncconf/pncconf.glade:22510 -#: src/emc/usr_intf/pncconf/pncconf.glade:24306 -#: src/emc/usr_intf/pncconf/pncconf.glade:26102 -msgid " 1:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64776 +msgid "encoder Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:11002 -#: src/emc/usr_intf/pncconf/pncconf.glade:11065 -#: src/emc/usr_intf/pncconf/pncconf.glade:11324 -#: src/emc/usr_intf/pncconf/pncconf.glade:11386 -#: src/emc/usr_intf/pncconf/pncconf.glade:13937 -#: src/emc/usr_intf/pncconf/pncconf.glade:13999 -#: src/emc/usr_intf/pncconf/pncconf.glade:16529 -#: src/emc/usr_intf/pncconf/pncconf.glade:16591 -#: src/emc/usr_intf/pncconf/pncconf.glade:19142 -#: src/emc/usr_intf/pncconf/pncconf.glade:19198 -#: src/emc/usr_intf/pncconf/pncconf.glade:22523 -#: src/emc/usr_intf/pncconf/pncconf.glade:22580 -#: src/emc/usr_intf/pncconf/pncconf.glade:24319 -#: src/emc/usr_intf/pncconf/pncconf.glade:24376 -#: src/emc/usr_intf/pncconf/pncconf.glade:26115 -#: src/emc/usr_intf/pncconf/pncconf.glade:26172 -#: src/emc/usr_intf/pncconf/pncconf.glade:28686 -#: src/emc/usr_intf/pncconf/pncconf.glade:28749 -#: src/emc/usr_intf/pncconf/pncconf.glade:28905 -#: src/emc/usr_intf/pncconf/pncconf.glade:28967 -#: src/emc/usr_intf/pncconf/pncconf.glade:33067 -#: src/emc/usr_intf/pncconf/pncconf.glade:33263 -#: src/emc/usr_intf/pncconf/pncconf.glade:33325 -#: src/emc/usr_intf/pncconf/pncconf.glade:38183 -#: src/emc/usr_intf/pncconf/pncconf.glade:38246 -#: src/emc/usr_intf/pncconf/pncconf.glade:38520 -#: src/emc/usr_intf/pncconf/pncconf.glade:42530 -#: src/emc/usr_intf/pncconf/pncconf.glade:42593 -#: src/emc/usr_intf/pncconf/pncconf.glade:42749 -#: src/emc/usr_intf/pncconf/pncconf.glade:42811 -#: src/emc/usr_intf/pncconf/pncconf.glade:46924 -#: src/emc/usr_intf/pncconf/pncconf.glade:49453 -#: src/emc/usr_intf/pncconf/pncconf.glade:49516 -#: src/emc/usr_intf/pncconf/pncconf.glade:49672 -#: src/emc/usr_intf/pncconf/pncconf.glade:49734 -#: src/emc/usr_intf/pncconf/pncconf.glade:53847 -msgid "Inv" +#: src/emc/usr_intf/pncconf/pncconf.glade:64801 +msgid "Stepper Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:11198 +#: src/emc/usr_intf/pncconf/pncconf.glade:64831 msgid "" -" I/O\n" -"Connector 2" +"Calculate\n" +"Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:13811 -msgid "" -" I/O\n" -" Connector 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:64901 +msgid "Test / Tune Axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:14012 -#: src/emc/usr_intf/pncconf/pncconf.glade:14039 -#: src/emc/usr_intf/pncconf/pncconf.glade:14053 -#: src/emc/usr_intf/pncconf/pncconf.glade:28632 -#: src/emc/usr_intf/pncconf/pncconf.glade:28646 -#: src/emc/usr_intf/pncconf/pncconf.glade:28673 -#: src/emc/usr_intf/pncconf/pncconf.glade:28980 -#: src/emc/usr_intf/pncconf/pncconf.glade:29007 -#: src/emc/usr_intf/pncconf/pncconf.glade:29021 -#: src/emc/usr_intf/pncconf/pncconf.glade:32951 -#: src/emc/usr_intf/pncconf/pncconf.glade:32965 -#: src/emc/usr_intf/pncconf/pncconf.glade:32992 -#: src/emc/usr_intf/pncconf/pncconf.glade:33338 -#: src/emc/usr_intf/pncconf/pncconf.glade:33365 -#: src/emc/usr_intf/pncconf/pncconf.glade:33379 -#: src/emc/usr_intf/pncconf/pncconf.glade:38129 -#: src/emc/usr_intf/pncconf/pncconf.glade:38143 -#: src/emc/usr_intf/pncconf/pncconf.glade:38170 -#: src/emc/usr_intf/pncconf/pncconf.glade:38594 -#: src/emc/usr_intf/pncconf/pncconf.glade:38621 -#: src/emc/usr_intf/pncconf/pncconf.glade:38635 -#: src/emc/usr_intf/pncconf/pncconf.glade:42476 -#: src/emc/usr_intf/pncconf/pncconf.glade:42490 -#: src/emc/usr_intf/pncconf/pncconf.glade:42517 -#: src/emc/usr_intf/pncconf/pncconf.glade:42824 -#: src/emc/usr_intf/pncconf/pncconf.glade:42851 -#: src/emc/usr_intf/pncconf/pncconf.glade:42865 -#: src/emc/usr_intf/pncconf/pncconf.glade:46808 -#: src/emc/usr_intf/pncconf/pncconf.glade:46822 -#: src/emc/usr_intf/pncconf/pncconf.glade:46849 -#: src/emc/usr_intf/pncconf/pncconf.glade:49399 -#: src/emc/usr_intf/pncconf/pncconf.glade:49413 -#: src/emc/usr_intf/pncconf/pncconf.glade:49440 -#: src/emc/usr_intf/pncconf/pncconf.glade:49747 -#: src/emc/usr_intf/pncconf/pncconf.glade:49774 -#: src/emc/usr_intf/pncconf/pncconf.glade:49788 -#: src/emc/usr_intf/pncconf/pncconf.glade:53731 -#: src/emc/usr_intf/pncconf/pncconf.glade:53745 -#: src/emc/usr_intf/pncconf/pncconf.glade:53772 -msgid " " +#: src/emc/usr_intf/pncconf/pncconf.glade:64943 +msgid "X Axis Configuration" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:16403 +#: src/emc/usr_intf/pncconf/pncconf.glade:65155 msgid "" -" I/O\n" -" Connector 4" +"NO\n" +"YES" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:19017 -msgid "" -" I/O\n" -" Connector 5" +#: src/emc/usr_intf/pncconf/pncconf.glade:65171 +msgid "Use Encoder Index For Home:" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65212 +msgid "Home Final Velocity:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:20813 +#: src/emc/usr_intf/pncconf/pncconf.glade:65222 msgid "" -" I/O\n" -"Connector 6" +"Same\n" +"Opposite" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:22609 -msgid "" -" I/O\n" -"Connector 7" +#: src/emc/usr_intf/pncconf/pncconf.glade:65238 +msgid "Home Latch Direction:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:24405 +#: src/emc/usr_intf/pncconf/pncconf.glade:65251 msgid "" -" I/O\n" -"Connector 8" +"Towards Negative limit\n" +"Towards Positive limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:26201 -msgid "" -" I/O\n" -" Connector 9" +#: src/emc/usr_intf/pncconf/pncconf.glade:65267 +msgid "Home Search Direction:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:28775 -#: src/emc/usr_intf/pncconf/pncconf.glade:35696 -#: src/emc/usr_intf/pncconf/pncconf.glade:42619 -#: src/emc/usr_intf/pncconf/pncconf.glade:49542 -msgid "page 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65309 +msgid "Home latch Velocity:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:31354 -#: src/emc/usr_intf/pncconf/pncconf.glade:38275 -#: src/emc/usr_intf/pncconf/pncconf.glade:45198 -#: src/emc/usr_intf/pncconf/pncconf.glade:52121 -msgid "page 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65334 +msgid "filename:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:33107 -#: src/emc/usr_intf/pncconf/pncconf.glade:40030 -#: src/emc/usr_intf/pncconf/pncconf.glade:46953 -#: src/emc/usr_intf/pncconf/pncconf.glade:53876 -msgid "page 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65347 +msgid "" +"Type 1\n" +"Type 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:33123 -msgid "Smart Serial 0" +#: src/emc/usr_intf/pncconf/pncconf.glade:65392 +msgid "Use Compensation File:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:40046 -msgid "Smart Serial 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65406 +msgid "Use Backlash Compensation:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:46969 -msgid "Smart Serial 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65433 +msgid "Home Position location (offset from machine zero Origin):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53892 -msgid "Smart Serial 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65449 +msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53914 -msgid "First Parallel Port Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:65493 +msgid "Home Switch location (Offset from machine zero Origin):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53998 -msgid "Outputs (PC to Machine):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65509 +msgid "Home Search Velocity:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:54552 -msgid "Inputs (Machine to PC):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65524 +msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:55977 -msgid "Launch Test Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Advanced Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56003 -msgid "X Axis Motor/Encoder Configuration" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 15" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56091 -msgid "D" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 14" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56104 -#, fuzzy -msgid "I" -msgstr "IO" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 13" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56117 -msgid "P" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 12" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56128 -#: src/emc/usr_intf/pncconf/pncconf.glade:60917 -#: src/emc/usr_intf/pncconf/pncconf.glade:62202 -#: src/emc/usr_intf/pncconf/pncconf.glade:63103 -#: src/emc/usr_intf/pncconf/pncconf.glade:64388 -#: src/emc/usr_intf/pncconf/pncconf.glade:65265 -msgid "Bias" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 11" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56141 -msgid "Deadband" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 10" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56188 -#: src/emc/usr_intf/pncconf/pncconf.glade:61128 -#: src/emc/usr_intf/pncconf/pncconf.glade:61991 -#: src/emc/usr_intf/pncconf/pncconf.glade:63314 -#: src/emc/usr_intf/pncconf/pncconf.glade:64177 -#: src/emc/usr_intf/pncconf/pncconf.glade:65470 -msgid "FF0" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 9" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56201 -#: src/emc/usr_intf/pncconf/pncconf.glade:61118 -#: src/emc/usr_intf/pncconf/pncconf.glade:62001 -#: src/emc/usr_intf/pncconf/pncconf.glade:63304 -#: src/emc/usr_intf/pncconf/pncconf.glade:64187 -#: src/emc/usr_intf/pncconf/pncconf.glade:65460 -msgid "FF1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56214 -#: src/emc/usr_intf/pncconf/pncconf.glade:61108 -#: src/emc/usr_intf/pncconf/pncconf.glade:62011 -#: src/emc/usr_intf/pncconf/pncconf.glade:63294 -#: src/emc/usr_intf/pncconf/pncconf.glade:64197 -#: src/emc/usr_intf/pncconf/pncconf.glade:65450 -msgid "FF2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 7" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56282 -msgid "Servo Info" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 6" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56362 -#, fuzzy -msgid "Spindle Max Output:" -msgstr "スピンドル消した" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 5" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56412 -#, fuzzy -msgid "Spindle Max limit:" -msgstr "スピンドル前進" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 4" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56426 -#, fuzzy -msgid "Spindle Min Limit:" -msgstr "スピンドル消した" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 3" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56456 -msgid "" -"Open Loop\n" -" Test" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56557 -msgid "Quad Pulses / Rev:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56572 -msgid "Dac Max Output:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include Halui user interface component / commands" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56586 -msgid "Dac Output Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Number of digital (bit) in pins:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56599 -msgid "3pwm Deadtime:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Number of digital (bit) out pins:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56612 -msgid "3pwm Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of Internal bit memory:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56626 -#, fuzzy -msgid "Output Info" -msgstr "平行移動:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of Internal word memory:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56691 -msgid "Driver Type:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Setup number of external pins" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56735 -msgid "Direction Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Z Auto Touch off program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56748 -msgid "Direction Hold" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "HAL Component Page" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56791 -msgid "Step Space" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Add HAL components with this page." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56804 -msgid "Step On-Time" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Component" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56820 -msgid "Stepper Info" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "number of components" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56871 -msgid "No feedback" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "PID" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56881 -msgid "Absolute Feedback" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56895 -msgid "Incremental Feedback" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mux16" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56909 -msgid "Incremental Encoder" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "lowpass" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56921 -msgid "Hall sensors" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Base Thread" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56933 -msgid "Fanuc Red Cap " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Servo Thread" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56945 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Use encoder Index" -msgstr "スピンドル消した" +msgid "Load Command " +msgstr "命令番:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56976 -msgid "Input Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Thread Speed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57000 -msgid "Digital instead of PWM outputs" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Thread Command" +msgstr "命令:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57009 -msgid "6 outputs instead of 3 " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Custom Components Commands" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57021 -msgid "Force Trapezoid Mode" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Machine configuration complete" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57033 -msgid "Emulate feedback " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"All the necessary information has now been gathered. Click \"Apply\" to " +"write your configuration files to disk.\n" +"\n" +"If you are using the 5i25 card with daugther boards or are using SSerial " +"based daughter cards, the cards must be connected and/or field power " +"supplied to the 5i25 \n" +"for the HAL pins to be available. If the config is expecting the pins and " +"they are not there, linuxcnc will error.\n" +"If you experience lockups while running LinuxCNC, you will need to decrease " +"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC, first verify that you " +"entered the proper timings for your stepper drivers. If that does not fix " +"the problem, then run a more thorough latency test as described on the " +"linuxcnc.org wiki:\n" +" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" +"\n" +"If you experience the \"Unexpected Realtime Delay\" message, run a more " +"thorough latency test as described on the linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57045 -msgid "Emulated Hall sensors" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +" Motor Encoder Test\n" +"Warning limits switches \n" +" Will not be obeyed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57058 -msgid "Emulated Fanuc Red Cap" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Slow Dac Speed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57085 -msgid "8i20 Max Current" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Fast Dac Speed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57119 -msgid "Output Options" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Dac Offset:" +msgstr "平行移動:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57153 -msgid "Poles" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57163 -msgid "Encoder-offset" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Reset Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57173 -msgid "Drive-offset" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Enable Amp" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57183 -msgid "output-pattern" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Invert Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57193 -msgid "Input-pattern" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Invert Motor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57203 -#, fuzzy -msgid "Reverse" -msgstr "スピンドル逆" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"±\n" +"+\n" +"-\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57303 -msgid "lead angle" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Seconds" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57313 -msgid "alignment current" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57354 -#, fuzzy -msgid "Configuration" -msgstr "スピンドル消した" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm/minute^2" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57389 -msgid "Use Brushless Motor Control" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm/minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57425 -msgid "Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Current" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57446 -msgid "% " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "P:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57466 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Use Spindle-At-Speed" -msgstr "スピンドル消した" +msgid "I:" +msgstr "一線(MDI):" -#: src/emc/usr_intf/pncconf/pncconf.glade:57491 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Filter gain:" -msgstr "テスト..." +msgid "D:" +msgstr "一線(MDI):" -#: src/emc/usr_intf/pncconf/pncconf.glade:57526 -msgid "Spindle Display Filter Settings" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Original" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57577 -#, fuzzy -msgid "Single Input Encoder" -msgstr "スピンドル逆" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57631 -msgid "Invert Encoder Direction " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "DeadBand" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57646 -msgid "Invert Motor Direction" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "PID Tuning" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57661 -msgid "Feed Speed Following Error:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Time:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57675 -msgid "Rapid Speed Following Error:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Space:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57715 -msgid "" -"Calculate\n" -"Scale" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Direction Hold:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57744 -msgid "Stepper Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Direction Setup:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57771 -msgid "encoder Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Timing" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57928 -msgid "Test / Tune Axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58235 -msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "spindle" +msgstr "スピンドル消した" -#: src/emc/usr_intf/pncconf/pncconf.glade:58251 -msgid "Home Search Velocity:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Help Page" +msgstr "助け" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"X axis:\n" +"Total Travel = 10\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = 0\n" +"Pos Travel Distance = Total Travel - neg travel distance = 10\n" +"Home Position = Origin to Home Position distance = 6\n" +"\n" +"Y axis:\n" +"Total Travel = 8\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = -8\n" +"Pos Travel Distance = Total Travel - neg travel distance = 0\n" +"Home Position = Origin to Home Position distance = 0\n" +"\n" +"Z axis:\n" +"Total Travel = 12\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = -12\n" +"Pos Travel Distance = Total Travel - neg travel distance = 0\n" +"Home Position = Origin to Home Position distance = 0\n" +"\n" +"Note that the direction indicators on the top right show \n" +"movement of the TOOL and on the actual machine,\n" +"often it is the table that actually moves. In that case the \n" +"directions are opposite of shown.\n" +"\n" +"Note this is an example, Many other combinations are \n" +"possible" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58266 -msgid "Home Switch location (Offset from machine zero Origin):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Mill" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58310 -msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"Total Travel = 4 + 6 = 10\n" +"Z Home Offset = Origin to Home Switch distance = 10\n" +"Z Neg Travel Distance = Origin to neg limit distance = 0\n" +"Z Pos Travel Distance = Total Travel - neg travel distance = 10\n" +"Z Home Position = Origin to Home Position distance = 4\n" +"\n" +"X axis would be similar but not shown fully for clarity.\n" +"This is just a sample reference other switch combinations are\n" +"possible." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58326 -msgid "Home Position location (offset from machine zero Origin):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Lathe" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58355 -msgid "Use Backlash Compensation:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Diagram" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58369 -msgid "Use Compensation File:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Output" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58412 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" -"Type 1\n" -"Type 2" +"\t\t\t\tPNCconf - Point aNd Click CONFigurator\n" +"PNCconf is a configuration program for Linuxcnc.\n" +"It configures machines using Mesa I/O cards.\n" +"It configures servo,stepper or closed loop stepper machines.\n" +"It supports some of Mesa's sserial cards.\n" +"It will forever be a work in progress as Linuxcnc changes.\n" +"\n" +"Many thanks To:\n" +"Jeff Eppler - PNCconf is based on stepconf - Jeff's creation. Jeff also has " +"helped with techincal difficulties.\n" +"Big John T - John drew the original machine illustrations. Testing and " +"suggestions.\n" +"Peter Wallace - Technical questions on Mesa's I/O cards. Supplied sample " +"equipment to test with.\n" +"Andy Pugh - suggestions, questions answered and many pin name changes :) \n" +"Dave Armstrong - testing and suggestions expecially with resolvers.\n" +"Everyone who gave a bug report ! I cannot test everything thoughly enough so " +"reports help.\n" +"\n" +"Beta 1 version" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58427 -msgid "filename:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "TPI " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58455 -msgid "Home latch Velocity:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulley teeth (motor:Leadscrew):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58494 -msgid "Home Search Direction:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Worm turn ratio (Input:Outputl)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58507 -msgid "" -"Towards Negative limit\n" -"Towards Positive limit" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Microstep Multiplication Factor:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58523 -msgid "Home Latch Direction:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Leadscrew Metric Pitch" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58552 -msgid "Home Final Velocity:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motor steps per revolution:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58591 -msgid "Use Encoder Index For Home:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Motor Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58603 -msgid "" -"NO\n" -"YES" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "TPI" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58628 -msgid "Advanced Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "X 4 = Pulses/Rev" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58712 -msgid "Cmd 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder lines per revolution:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58718 -msgid "Cmd 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulley teeth (encoder:Leadscrew):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58728 -msgid "Cmd 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58738 -msgid "Cmd 4" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58748 -msgid "Cmd 5" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "encoder pulses per unit:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58874 -msgid "Cmd 6" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "motor steps per unit:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58884 -msgid "Cmd 7" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Calculated Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58896 -msgid "Cmd 8" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / encoder pulse" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58908 -msgid "Cmd 9" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Resolution:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58920 -msgid "Cmd 10" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Distance to acheave max speed:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58990 -msgid "Cmd 11" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "sec" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59000 -msgid "Cmd 12" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Khz" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59012 -msgid "Cmd 13" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Calculated Axis SCALE:" +msgstr "軸の時速:" -#: src/emc/usr_intf/pncconf/pncconf.glade:59024 -msgid "Cmd 14" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motor RPM at max speed:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59036 -msgid "Cmd 15" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "xmaxrpm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59053 -msgid "Include Halui user interface component / commands" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motion Data" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59127 -msgid "Number of digital (bit) in pins:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "gtk-cancel" +msgstr "中止" -#: src/emc/usr_intf/pncconf/pncconf.glade:59138 -msgid "Number of digital (bit) out pins:" +#: src/emc/usr_intf/gscreen/gscreen.py:349 +#, python-format +msgid "adding import dir %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59308 -msgid "Setup number of external pins" +#: src/emc/usr_intf/gscreen/gscreen.py:355 +#, python-format +msgid "module '%s' imported OK" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59360 -msgid "Z Auto Touch off program" +#: src/emc/usr_intf/gscreen/gscreen.py:452 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Using CUSTOM glade file from %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59505 -msgid "HAL Component Page" +#: src/emc/usr_intf/gscreen/gscreen.py:457 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Using SKIN glade file from %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59648 -msgid "lowpass" +#: src/emc/usr_intf/gscreen/gscreen.py:460 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: using STOCK glade file from: %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59675 -msgid "mux16" +#: src/emc/usr_intf/gscreen/gscreen.py:466 +#, python-format +msgid "**** Gscreen GLADE ERROR: With main screen xml file: %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59702 -msgid "scale" +#: src/emc/usr_intf/gscreen/gscreen.py:471 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Screen 2 -Using CUSTOM glade file from %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59728 -msgid "PID" +#: src/emc/usr_intf/gscreen/gscreen.py:477 +#, python-format +msgid "**** Gscreen GLADE ERROR: With screen 2's xml file: %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59739 -msgid "number of components" +#: src/emc/usr_intf/gscreen/gscreen.py:479 +msgid "" +"\n" +"**** GSCREEN INFO: No Screen 2 glade file present" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59767 -msgid "Component" +#: src/emc/usr_intf/gscreen/gscreen.py:519 +msgid "No UNITS entry found in [TRAJ] or [AXIS_0] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59794 -msgid "Add HAL components with this page." +#: src/emc/usr_intf/gscreen/gscreen.py:532 +msgid "" +"*** Gscreen ERROR: Asking for a HAL component using a name that already " +"exists." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59844 -#, fuzzy -msgid "Thread Command" -msgstr "命令:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:59854 -msgid "Thread Speed" +#: src/emc/usr_intf/gscreen/gscreen.py:585 +msgid "No default jog increments entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59906 -#, fuzzy -msgid "Load Command " -msgstr "命令番:" +#: src/emc/usr_intf/gscreen/gscreen.py:598 +msgid "No default angular jog increments entry found in [DISPLAY] of INI file" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59952 -msgid "Servo Thread" +#: src/emc/usr_intf/gscreen/gscreen.py:607 +#, python-format +msgid "" +"No DEFAULT_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59965 -msgid "Base Thread" +#: src/emc/usr_intf/gscreen/gscreen.py:618 +#, python-format +msgid "" +"No MAX_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59979 -msgid "Custom Components Commands" +#: src/emc/usr_intf/gscreen/gscreen.py:625 +msgid "No MAX_VELOCITY found in [TRAJ] of the INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60031 +#: src/emc/usr_intf/gscreen/gscreen.py:638 +#, python-format msgid "" -" Motor Encoder Test\n" -"Warning limits switches \n" -" Will not be obeyed" +"No DEFAULT_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60067 -#: src/emc/usr_intf/pncconf/pncconf.glade:60766 -#: src/emc/usr_intf/pncconf/pncconf.glade:61859 -#: src/emc/usr_intf/pncconf/pncconf.glade:62952 -#: src/emc/usr_intf/pncconf/pncconf.glade:64045 -#: src/emc/usr_intf/pncconf/pncconf.glade:65025 -msgid "Invert Motor" +#: src/emc/usr_intf/gscreen/gscreen.py:649 +#, python-format +msgid "" +"No MAX_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60083 -#: src/emc/usr_intf/pncconf/pncconf.glade:60782 -#: src/emc/usr_intf/pncconf/pncconf.glade:61875 -#: src/emc/usr_intf/pncconf/pncconf.glade:62968 -#: src/emc/usr_intf/pncconf/pncconf.glade:64061 -#: src/emc/usr_intf/pncconf/pncconf.glade:65040 -msgid "Invert Encoder" +#: src/emc/usr_intf/gscreen/gscreen.py:657 +msgid "No MAX_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60100 -msgid "Enable Amp" +#: src/emc/usr_intf/gscreen/gscreen.py:663 +msgid "No MIN_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60114 -msgid "Reset Encoder" +#: src/emc/usr_intf/gscreen/gscreen.py:669 +msgid "No MAX_FEED_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60142 -msgid "Encoder Scale:" +#: src/emc/usr_intf/gscreen/gscreen.py:674 +msgid "This screen will be orientated for Lathe options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60153 -#, fuzzy -msgid "Dac Offset:" -msgstr "平行移動:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:60243 -msgid "Fast Dac Speed" +#: src/emc/usr_intf/gscreen/gscreen.py:727 +msgid "CYCLE_TIME in [DISPLAY] of INI file is missing: defaulting to 100ms" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60258 -msgid "Slow Dac Speed" +#: src/emc/usr_intf/gscreen/gscreen.py:730 +msgid "CYCLE_TIME in [DISPLAY] of INI file is too small: defaulting to 100ms" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60407 -#: src/emc/usr_intf/pncconf/pncconf.glade:61503 -#: src/emc/usr_intf/pncconf/pncconf.glade:62596 -#: src/emc/usr_intf/pncconf/pncconf.glade:63689 -#: src/emc/usr_intf/pncconf/pncconf.glade:64788 -msgid "mm/minute" +#: src/emc/usr_intf/gscreen/gscreen.py:732 +#, python-format +msgid "timeout %d" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60441 -#: src/emc/usr_intf/pncconf/pncconf.glade:61536 -#: src/emc/usr_intf/pncconf/pncconf.glade:62629 -#: src/emc/usr_intf/pncconf/pncconf.glade:63722 -#: src/emc/usr_intf/pncconf/pncconf.glade:64821 -msgid "mm/minute^2" +#: src/emc/usr_intf/gscreen/gscreen.py:1001 +msgid "" +"**** WARNING GSCREEN: could not understand the window geometry info in " +"hidden preference file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60550 -#: src/emc/usr_intf/pncconf/pncconf.glade:61644 -#: src/emc/usr_intf/pncconf/pncconf.glade:62737 -#: src/emc/usr_intf/pncconf/pncconf.glade:64930 -msgid "Enable" +#: src/emc/usr_intf/gscreen/gscreen.py:1089 +msgid "Control powered up and initialized" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60600 -#: src/emc/usr_intf/pncconf/pncconf.glade:61693 -#: src/emc/usr_intf/pncconf/pncconf.glade:62786 -#: src/emc/usr_intf/pncconf/pncconf.glade:63879 -#: src/emc/usr_intf/pncconf/pncconf.glade:65139 -msgid "Seconds" +#: src/emc/usr_intf/gscreen/gscreen.py:1264 +msgid "Cycle start pressed in AUTO mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60907 -#: src/emc/usr_intf/pncconf/pncconf.glade:62212 -#: src/emc/usr_intf/pncconf/pncconf.glade:63093 -#: src/emc/usr_intf/pncconf/pncconf.glade:64398 -#: src/emc/usr_intf/pncconf/pncconf.glade:65255 -msgid "DeadBand" +#: src/emc/usr_intf/gscreen/gscreen.py:1267 +msgid "Cycle start pressed in MDI mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61089 -#: src/emc/usr_intf/pncconf/pncconf.glade:61380 -#: src/emc/usr_intf/pncconf/pncconf.glade:62030 -#: src/emc/usr_intf/pncconf/pncconf.glade:62401 -#: src/emc/usr_intf/pncconf/pncconf.glade:63275 -#: src/emc/usr_intf/pncconf/pncconf.glade:63562 -#: src/emc/usr_intf/pncconf/pncconf.glade:64216 -#: src/emc/usr_intf/pncconf/pncconf.glade:64587 -#: src/emc/usr_intf/pncconf/pncconf.glade:65431 -#: src/emc/usr_intf/pncconf/pncconf.glade:65718 -msgid "Original" +#: src/emc/usr_intf/gscreen/gscreen.py:1290 +#, python-format +msgid "Please change to tool # %s, then click OK." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61138 -#: src/emc/usr_intf/pncconf/pncconf.glade:61981 -#: src/emc/usr_intf/pncconf/pncconf.glade:63324 -#: src/emc/usr_intf/pncconf/pncconf.glade:64167 -#: src/emc/usr_intf/pncconf/pncconf.glade:65480 -#, fuzzy -msgid "D:" -msgstr "一線(MDI):" - -#: src/emc/usr_intf/pncconf/pncconf.glade:61148 -#: src/emc/usr_intf/pncconf/pncconf.glade:61971 -#: src/emc/usr_intf/pncconf/pncconf.glade:63334 -#: src/emc/usr_intf/pncconf/pncconf.glade:64157 -#: src/emc/usr_intf/pncconf/pncconf.glade:65490 -#, fuzzy -msgid "I:" -msgstr "一線(MDI):" - -#: src/emc/usr_intf/pncconf/pncconf.glade:61158 -#: src/emc/usr_intf/pncconf/pncconf.glade:61961 -#: src/emc/usr_intf/pncconf/pncconf.glade:63344 -#: src/emc/usr_intf/pncconf/pncconf.glade:64147 -#: src/emc/usr_intf/pncconf/pncconf.glade:65500 -msgid "P:" +#: src/emc/usr_intf/gscreen/gscreen.py:1291 +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +#: src/emc/usr_intf/gscreen/gscreen.py:1789 +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2849 +msgid "INFO:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61168 -#: src/emc/usr_intf/pncconf/pncconf.glade:61392 -#: src/emc/usr_intf/pncconf/pncconf.glade:61951 -#: src/emc/usr_intf/pncconf/pncconf.glade:62389 -#: src/emc/usr_intf/pncconf/pncconf.glade:63354 -#: src/emc/usr_intf/pncconf/pncconf.glade:63574 -#: src/emc/usr_intf/pncconf/pncconf.glade:64137 -#: src/emc/usr_intf/pncconf/pncconf.glade:64575 -#: src/emc/usr_intf/pncconf/pncconf.glade:65510 -#: src/emc/usr_intf/pncconf/pncconf.glade:65730 -msgid "Current" +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +msgid "Can't start spindle manually while MDI busy" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61185 -#: src/emc/usr_intf/pncconf/pncconf.glade:62278 -#: src/emc/usr_intf/pncconf/pncconf.glade:63371 -#: src/emc/usr_intf/pncconf/pncconf.glade:64464 -#: src/emc/usr_intf/pncconf/pncconf.glade:65527 -msgid "PID Tuning" +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +msgid "can't start spindle manually in Auto mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61370 -#: src/emc/usr_intf/pncconf/pncconf.glade:62413 -#: src/emc/usr_intf/pncconf/pncconf.glade:63552 -#: src/emc/usr_intf/pncconf/pncconf.glade:64599 -#: src/emc/usr_intf/pncconf/pncconf.glade:65708 -msgid "Direction Setup:" +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +msgid "No direction selected for spindle" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61404 -#: src/emc/usr_intf/pncconf/pncconf.glade:62379 -#: src/emc/usr_intf/pncconf/pncconf.glade:63586 -#: src/emc/usr_intf/pncconf/pncconf.glade:64565 -#: src/emc/usr_intf/pncconf/pncconf.glade:65742 -msgid "Direction Hold:" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:1331 +#: src/emc/usr_intf/gscreen/gscreen.py:1333 +#, fuzzy +msgid "Spindle Speed Preset Entry" +msgstr "スピンドル消した" -#: src/emc/usr_intf/pncconf/pncconf.glade:61414 -#: src/emc/usr_intf/pncconf/pncconf.glade:62369 -#: src/emc/usr_intf/pncconf/pncconf.glade:63596 -#: src/emc/usr_intf/pncconf/pncconf.glade:64555 -#: src/emc/usr_intf/pncconf/pncconf.glade:65752 -msgid "Step Space:" +#: src/emc/usr_intf/gscreen/gscreen.py:1362 +#: src/emc/usr_intf/gscreen/gscreen.py:1367 +msgid "Manual Tool Index Entry" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61424 -#: src/emc/usr_intf/pncconf/pncconf.glade:62359 -#: src/emc/usr_intf/pncconf/pncconf.glade:63606 -#: src/emc/usr_intf/pncconf/pncconf.glade:64545 -#: src/emc/usr_intf/pncconf/pncconf.glade:65762 -msgid "Step Time:" +#: src/emc/usr_intf/gscreen/gscreen.py:1489 +msgid "Entry dialog" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61439 -#: src/emc/usr_intf/pncconf/pncconf.glade:62528 -#: src/emc/usr_intf/pncconf/pncconf.glade:63621 -#: src/emc/usr_intf/pncconf/pncconf.glade:64714 -#: src/emc/usr_intf/pncconf/pncconf.glade:65777 -msgid "Step Timing" +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +msgid "Classicladder realtime component not detected" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:63830 -msgid "enable" +#: src/emc/usr_intf/gscreen/gscreen.py:1617 +msgid "ladder not available - is the realtime component loaded?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65798 +#: src/emc/usr_intf/gscreen/gscreen.py:1691 #, fuzzy -msgid "spindle" -msgstr "スピンドル消した" +msgid "Override Entry" +msgstr "方図を聞き捨てる" -#: src/emc/usr_intf/pncconf/pncconf.glade:65881 +#: src/emc/usr_intf/gscreen/gscreen.py:1719 #, fuzzy -msgid "Help Page" -msgstr "助け" +msgid "Machine powered on" +msgstr "出来るように" -#: src/emc/usr_intf/pncconf/pncconf.glade:65911 -msgid "" -"X axis:\n" -"Total Travel = 10\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = 0\n" -"Pos Travel Distance = Total Travel - neg travel distance = 10\n" -"Home Position = Origin to Home Position distance = 6\n" -"\n" -"Y axis:\n" -"Total Travel = 8\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = -8\n" -"Pos Travel Distance = Total Travel - neg travel distance = 0\n" -"Home Position = Origin to Home Position distance = 0\n" -"\n" -"Z axis:\n" -"Total Travel = 12\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = -12\n" -"Pos Travel Distance = Total Travel - neg travel distance = 0\n" -"Home Position = Origin to Home Position distance = 0\n" -"\n" -"Note that the direction indicators on the top right show \n" -"movement of the TOOL and on the actual machine,\n" -"often it is the table that actually moves. In that case the \n" -"directions are opposite of shown.\n" -"\n" -"Note this is an example, Many other combinations are \n" -"possible" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:1724 +#, fuzzy +msgid "Machine Estopped!" +msgstr "出来るように" -#: src/emc/usr_intf/pncconf/pncconf.glade:65951 -msgid "Mill" +#: src/emc/usr_intf/gscreen/gscreen.py:1727 +msgid "Calculator" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65970 -msgid "" -"Total Travel = 4 + 6 = 10\n" -"Z Home Offset = Origin to Home Switch distance = 10\n" -"Z Neg Travel Distance = Origin to neg limit distance = 0\n" -"Z Pos Travel Distance = Total Travel - neg travel distance = 10\n" -"Z Home Position = Origin to Home Position distance = 4\n" -"\n" -"X axis would be similar but not shown fully for clarity.\n" -"This is just a sample reference other switch combinations are\n" -"possible." +#: src/emc/usr_intf/gscreen/gscreen.py:1857 +#, python-format +msgid "Axes %s are homed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65994 -msgid "Lathe" +#: src/emc/usr_intf/gscreen/gscreen.py:1864 +msgid "All the axes have been homed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66010 -msgid "Diagram" +#: src/emc/usr_intf/gscreen/gscreen.py:1874 +#, python-format +msgid "There are unhomed axes: %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66043 -msgid "Output" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:1879 +#, fuzzy, python-format +msgid "Program loaded: %s" +msgstr "プローグラム: " -#: src/emc/usr_intf/pncconf/pncconf.glade:66123 -msgid "Motor steps per revolution:" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:1977 +#, fuzzy +msgid "Manual Spindle Control" +msgstr "スピンドル前進" -#: src/emc/usr_intf/pncconf/pncconf.glade:66173 -#: src/emc/usr_intf/pncconf/pncconf.glade:66459 -msgid "Leadscrew Metric Pitch" +#: src/emc/usr_intf/gscreen/gscreen.py:2034 +msgid "Keyboard" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66186 -msgid "Microstep Multiplication Factor:" +#: src/emc/usr_intf/gscreen/gscreen.py:2067 +msgid "Error with launching 'Onboard' on-screen keyboard program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66199 -#: src/emc/usr_intf/pncconf/pncconf.glade:66481 -msgid "Worm turn ratio (Input:Outputl)" +#: src/emc/usr_intf/gscreen/gscreen.py:2215 +#, python-format +msgid "**** GSCREEN INFO: Overriding internal signal call to %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66212 -msgid "Pulley teeth (motor:Leadscrew):" +#: src/emc/usr_intf/gscreen/gscreen.py:2643 +msgid " Zero Origin" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66356 -msgid "TPI " -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:2644 +#, fuzzy +msgid "Offset Origin" +msgstr "平行移動:" -#: src/emc/usr_intf/pncconf/pncconf.glade:66372 -msgid "Step Motor Scale" +#: src/emc/usr_intf/gscreen/gscreen.py:2659 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing text or type) " +"in INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66472 -msgid "Pulley teeth (encoder:Leadscrew):" +#: src/emc/usr_intf/gscreen/gscreen.py:2661 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing pinname) in " +"INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66537 -msgid "Encoder lines per revolution:" +#: src/emc/usr_intf/gscreen/gscreen.py:2663 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing boldtext) in " +"INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66547 -msgid "X 4 = Pulses/Rev" +#: src/emc/usr_intf/gscreen/gscreen.py:2667 +#, python-format +msgid "" +"**** Gscreen ERROR: invalid message type (%s)in INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66651 -msgid "TPI" +#: src/emc/usr_intf/gscreen/gscreen.py:2699 +msgid "Dialog error - Is the dialog handler missing from the handler file?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66667 -msgid "Encoder Scale" +#: src/emc/usr_intf/gscreen/gscreen.py:2701 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3540 +#, fuzzy +msgid "Manual Toolchange" +msgstr "手動" + +#: src/emc/usr_intf/gscreen/gscreen.py:2703 +#: src/emc/usr_intf/gmoccapy/dialogs.py:94 +#: src/emc/usr_intf/gmoccapy/dialogs.py:107 +#: src/emc/usr_intf/gmoccapy/dialogs.py:119 +msgid "Operator Message" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66711 -msgid "motor steps per unit:" +#: src/emc/usr_intf/gscreen/gscreen.py:2737 +#: src/emc/usr_intf/gscreen/gscreen.py:2741 +#: src/emc/usr_intf/gmoccapy/dialogs.py:155 +#: src/emc/usr_intf/gmoccapy/dialogs.py:159 +#, fuzzy +msgid "Restart Entry" +msgstr "リーセット" + +#: src/emc/usr_intf/gscreen/gscreen.py:2752 +#: src/emc/usr_intf/gmoccapy/dialogs.py:173 +msgid "Enter" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66721 -msgid "encoder pulses per unit:" +#: src/emc/usr_intf/gscreen/gscreen.py:2774 +#, python-format +msgid "Ready to Restart program from line %d" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66756 -msgid " " +#: src/emc/usr_intf/gscreen/gscreen.py:2807 +msgid "Invalid embeded tab configuration" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66770 -msgid "Calculated Scale" +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +msgid "Can't jog multiple axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66848 -msgid "xmaxrpm" +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +msgid "No axis selected to jog" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66864 -msgid "RPM" +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +msgid "No axis selected to move" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66877 -msgid "Motor RPM at max speed:" +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +msgid "Can't home multiple axis - select HOME ALL instead" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66921 -#, fuzzy -msgid "Calculated Axis SCALE:" -msgstr "軸の時速:" +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +msgid "No axis selected to home" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66934 -msgid "Khz" +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +msgid "Can't unhome multiple axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66949 -msgid "sec" +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +msgid "No axis selected to unhome" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67049 -msgid "Distance to acheave max speed:" +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +msgid "No axis selected for origin zeroing" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67077 -msgid "Resolution:" +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +msgid "No axis selected for origin touch-off" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67105 -msgid "mm / encoder pulse" +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +msgid "Can't tool touch-off multiple axes" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67123 -msgid "Motion Data" +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +msgid "No axis selected for tool touch-off" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67151 +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#: src/emc/usr_intf/gscreen/gscreen.py:3375 #, fuzzy -msgid "gtk-cancel" -msgstr "中止" +msgid "Error Message" +msgstr "越度: " -#: src/emc/task/emctaskmain.cc:467 src/emc/task/emctaskmain.cc:500 -#, c-format -msgid "%s exceeds +X limit" +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#, python-format +msgid "Tool editor error - is the %s editor available?" msgstr "" -#: src/emc/task/emctaskmain.cc:472 src/emc/task/emctaskmain.cc:505 -#, c-format -msgid "%s exceeds +Y limit" +#: src/emc/usr_intf/gscreen/gscreen.py:3377 +#: src/emc/usr_intf/gscreen/gscreen.py:3379 +msgid "Message" msgstr "" -#: src/emc/task/emctaskmain.cc:477 src/emc/task/emctaskmain.cc:510 -#, c-format -msgid "%s exceeds +Z limit" +#: src/emc/usr_intf/gscreen/gscreen.py:3409 +#, python-format +msgid "%d RPM" msgstr "" -#: src/emc/task/emctaskmain.cc:482 src/emc/task/emctaskmain.cc:515 -#, c-format -msgid "%s exceeds -X limit" +#: src/emc/usr_intf/gscreen/gscreen.glade:48 +#: src/emc/usr_intf/gscreen/gscreen.glade:59 +#: src/emc/usr_intf/gscreen/gscreen.glade:135 +#: src/emc/usr_intf/gscreen/gscreen.glade:176 +#: src/emc/usr_intf/gscreen/gscreen.glade:187 +#: src/emc/usr_intf/gscreen/gscreen.glade:264 +#: src/emc/usr_intf/gscreen/gscreen.glade:306 +#: src/emc/usr_intf/gscreen/gscreen.glade:317 +#: src/emc/usr_intf/gscreen/gscreen.glade:393 +#: src/emc/usr_intf/gscreen/gscreen.glade:434 +#: src/emc/usr_intf/gscreen/gscreen.glade:445 +#: src/emc/usr_intf/gscreen/gscreen.glade:521 +#: src/emc/usr_intf/gscreen/gscreen.glade:562 +#: src/emc/usr_intf/gscreen/gscreen.glade:573 +#: src/emc/usr_intf/gscreen/gscreen.glade:649 +#: src/emc/usr_intf/gscreen/gscreen.glade:690 +#: src/emc/usr_intf/gscreen/gscreen.glade:701 +#: src/emc/usr_intf/gscreen/gscreen.glade:777 +#: src/emc/usr_intf/gscreen/gscreen.glade:818 +#: src/emc/usr_intf/gscreen/gscreen.glade:829 +#: src/emc/usr_intf/gscreen/gscreen.glade:905 +#: src/emc/usr_intf/gscreen/gscreen.glade:946 +#: src/emc/usr_intf/gscreen/gscreen.glade:957 +#: src/emc/usr_intf/gscreen/gscreen.glade:1033 +#: src/emc/usr_intf/gscreen/gscreen.glade:1074 +#: src/emc/usr_intf/gscreen/gscreen.glade:1085 +#: src/emc/usr_intf/gscreen/gscreen.glade:1161 +msgid "0000.0000" msgstr "" -#: src/emc/task/emctaskmain.cc:487 src/emc/task/emctaskmain.cc:520 -#, c-format -msgid "%s exceeds -Y limit" +#: src/emc/usr_intf/gscreen/gscreen.glade:73 +#: src/emc/usr_intf/gscreen/gscreen.glade:201 +#: src/emc/usr_intf/gscreen/gscreen.glade:331 +#: src/emc/usr_intf/gscreen/gscreen.glade:459 +#: src/emc/usr_intf/gscreen/gscreen.glade:587 +#: src/emc/usr_intf/gscreen/gscreen.glade:715 +#: src/emc/usr_intf/gscreen/gscreen.glade:843 +#: src/emc/usr_intf/gscreen/gscreen.glade:971 +#: src/emc/usr_intf/gscreen/gscreen.glade:1099 +msgid "REL" msgstr "" -#: src/emc/task/emctaskmain.cc:492 src/emc/task/emctaskmain.cc:525 -#, c-format -msgid "%s exceeds -Z limit" +#: src/emc/usr_intf/gscreen/gscreen.glade:99 +#: src/emc/usr_intf/gscreen/gscreen.glade:227 +#: src/emc/usr_intf/gscreen/gscreen.glade:357 +#: src/emc/usr_intf/gscreen/gscreen.glade:485 +#: src/emc/usr_intf/gscreen/gscreen.glade:613 +#: src/emc/usr_intf/gscreen/gscreen.glade:741 +#: src/emc/usr_intf/gscreen/gscreen.glade:869 +#: src/emc/usr_intf/gscreen/gscreen.glade:997 +#: src/emc/usr_intf/gscreen/gscreen.glade:1125 +msgid "ABS" msgstr "" -#: src/emc/task/emctaskmain.cc:853 -#, c-format -msgid "" -"command (%s) cannot be executed until the machine is out of E-stop and " -"turned on" +#: src/emc/usr_intf/gscreen/gscreen.glade:630 +msgid "B" msgstr "" -#: src/emc/task/emctaskmain.cc:973 -#, c-format -msgid "can't do that (%s) in manual mode" +#: src/emc/usr_intf/gscreen/gscreen.glade:758 +msgid "C" msgstr "" -#: src/emc/task/emctaskmain.cc:1072 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter idle" +#: src/emc/usr_intf/gscreen/gscreen.glade:886 +msgid "U" msgstr "" -#: src/emc/task/emctaskmain.cc:1132 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter reading" +#: src/emc/usr_intf/gscreen/gscreen.glade:1014 +msgid "V" msgstr "" -#: src/emc/task/emctaskmain.cc:1216 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter paused" +#: src/emc/usr_intf/gscreen/gscreen.glade:1298 +msgid "G code" msgstr "" -#: src/emc/task/emctaskmain.cc:1278 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter waiting" +#: src/emc/usr_intf/gscreen/gscreen.glade:1392 +msgid "G Codes Active" msgstr "" -#: src/emc/task/emctaskmain.cc:1370 -#, c-format -msgid "can't do that (%s) in MDI mode" +#: src/emc/usr_intf/gscreen/gscreen.glade:1451 +msgid "MV:100%" msgstr "" -#: src/emc/task/emctaskmain.cc:2015 -msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1470 +#, fuzzy +msgid " Mist" +msgstr "雰点いた" -#: src/emc/task/emctaskmain.cc:2084 -msgid "Can't issue MDI command when not homed" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1481 +#, fuzzy +msgid " Flood " +msgstr "水洗点いた" -#: src/emc/task/emctaskmain.cc:2089 -msgid "Must be in MDI mode to issue MDI command" +#: src/emc/usr_intf/gscreen/gscreen.glade:1533 +#, fuzzy +msgid " At Speed " +msgstr "フィード手直して" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1546 +msgid " Jog mode" msgstr "" -#: src/emc/task/emctaskmain.cc:2151 -msgid "Can't run a program when not homed" +#: src/emc/usr_intf/gscreen/gscreen.glade:1600 +msgid "10 DPM" msgstr "" -#: src/emc/rs274ngc/interp_arc.cc:108 src/emc/rs274ngc/rs274ngc_return.hh:160 -msgid "Zero radius arc" +#: src/emc/usr_intf/gscreen/gscreen.glade:1616 +msgid "10 Ipm" msgstr "" -#: src/emc/rs274ngc/interp_arc.cc:112 src/emc/rs274ngc/interp_arc.cc:279 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:1690 +#, fuzzy +msgid "Status" +msgstr "命令:" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1715 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2510 msgid "" -"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " -"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " -"rel_err=%.4f%%" +"Search\n" +" Text:" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:90 -msgid "G4 not allowed with G2 or G3 because they both use P" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1766 +#, fuzzy +msgid "Mode" +msgstr "スピンドル消した" -#: src/emc/rs274ngc/interp_check.cc:93 -msgid "Line with G10 does not have L1, L10, L11, L2, or L20" +#: src/emc/usr_intf/gscreen/gscreen.glade:1782 +msgid "Main Level" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:94 -msgid "P value not an integer with G10" +#: src/emc/usr_intf/gscreen/gscreen.glade:1823 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3678 +msgid "Themes" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:95 -msgid "P value out of range (0-9) with G10 L2 or L20" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1847 +#, fuzzy +msgid "Relative Text Color" +msgstr "相対" -#: src/emc/rs274ngc/interp_check.cc:96 -msgid "P value out of range with G10 L1 or G10 L10" +#: src/emc/usr_intf/gscreen/gscreen.glade:1895 +msgid "DTG Text Color" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:100 -msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." +#: src/emc/usr_intf/gscreen/gscreen.glade:1916 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3710 +msgid "Warning Audio" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:258 -msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:1926 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3723 +msgid "Alert Audio" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:264 -msgid "E word with no G76, M66, M67 or M68 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:1947 +msgid "Grid Size" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:269 -msgid "H word with no G43 or G76 to use it" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1986 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4119 +#, fuzzy +msgid "Starting RPM" +msgstr "撰" -#: src/emc/rs274ngc/interp_check.cc:275 -msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2015 +msgid "Metric\n" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:281 -msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2030 +msgid "" +" Display\n" +"Aux Screen" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:287 -msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2045 +#, fuzzy +msgid "" +"Diameter\n" +" Mode" +msgstr "直径:" -#: src/emc/rs274ngc/interp_check.cc:297 +#: src/emc/usr_intf/gscreen/gscreen.glade:2062 +#: src/emc/usr_intf/gscreen/gscreen.glade:3096 +#, fuzzy msgid "" -"L word with no G10, cutter compensation, canned cycle, digital/analog input, " -"or NURBS code" +" Show\n" +"Offsets" +msgstr "工作物平行移動:" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2079 +msgid "" +"Show\n" +"DTG" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:309 +#: src/emc/usr_intf/gscreen/gscreen.glade:2096 msgid "" -"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " -"M53 M62 M63 M64 M65 M66 or user M code to use it" +" Gscreen\n" +"Fullscreen" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:314 -msgid "P value not an integer with M19 G2 or G3" +#: src/emc/usr_intf/gscreen/gscreen.glade:2118 +msgid "" +" On M7 Use\n" +"Aux Coolant" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:316 -msgid "P value must be 0,1,or 2 with M19" +#: src/emc/usr_intf/gscreen/gscreen.glade:2131 +msgid "" +" On M8 Use\n" +"Aux Coolant" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:318 -msgid "P value should be 1 or greater with G2 or G3" +#: src/emc/usr_intf/gscreen/gscreen.glade:2144 +msgid "Hide Pointer" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:326 +#: src/emc/usr_intf/gscreen/gscreen.glade:2156 msgid "" -"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " -"code that uses it" +" Desktop\n" +"Notification" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:336 -msgid "R value must be within 0..360 with M19" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2228 +#: src/emc/usr_intf/gscreen/gscreen.glade:2368 +#, fuzzy +msgid "Debug" +msgstr "ディバッグ..." -#: src/emc/rs274ngc/interp_convert.cc:138 -msgid "You must specify both X and Y coordinates for Control Points" +#: src/emc/usr_intf/gscreen/gscreen.glade:2263 +msgid "Alarm History" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:141 -msgid "Can specify P without X and Y only for the first control point" +#: src/emc/usr_intf/gscreen/gscreen.glade:2281 +msgid "" +" Launch\n" +"Halshow" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:144 -msgid "Must specify positive weight P for every Control Point" +#: src/emc/usr_intf/gscreen/gscreen.glade:2293 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6449 +#, fuzzy +msgid "Calibration" +msgstr "較正..." + +#: src/emc/usr_intf/gscreen/gscreen.glade:2304 +#, fuzzy +msgid "Halmeter" +msgstr "直径:" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2315 +msgid "" +"linuxcnc\n" +" Status" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:147 -msgid "Cannot make a NURBS with 0 feedrate" +#: src/emc/usr_intf/gscreen/gscreen.glade:2327 +msgid "Halscope" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:182 -msgid "Cannot use G5.3 without G5.2 first" +#: src/emc/usr_intf/gscreen/gscreen.glade:2338 +msgid "Ladder" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:183 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:2386 +#, fuzzy +msgid "Tooleditor" +msgstr "エディット..." + +#: src/emc/usr_intf/gscreen/gscreen.glade:2404 +#, fuzzy msgid "" -"You must specify a number of control points at least equal to the order L = " -"%d" -msgstr "" +"Offset\n" +" Page" +msgstr "平行移動:" -#: src/emc/rs274ngc/interp_convert.cc:212 -msgid "Cannot convert spline with cutter radius compensation" +#: src/emc/usr_intf/gscreen/gscreen.glade:2572 +#: src/emc/usr_intf/gscreen/gscreen.glade:2749 +#: src/emc/usr_intf/gscreen/gscreen.glade:3156 +msgid "\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:222 -msgid "Splines must be in the XY plane" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2584 +#, fuzzy +msgid "Tool Setting" +msgstr "撰" -#: src/emc/rs274ngc/interp_convert.cc:227 -msgid "Splines may not have motion in Z, A, B, or C" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2648 +#, fuzzy +msgid "" +"Single\n" +" Step" +msgstr "インチ" -#: src/emc/rs274ngc/interp_convert.cc:231 -msgid "Must specify both I and J with G5.1" +#: src/emc/usr_intf/gscreen/gscreen.glade:2661 +msgid "" +"Run At\n" +" Line" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:250 -msgid "Must specify both I and J, or neither" +#: src/emc/usr_intf/gscreen/gscreen.glade:2673 +msgid "" +"Change \n" +" View" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:261 -msgid "Must specify both P and Q with G5" +#: src/emc/usr_intf/gscreen/gscreen.glade:2760 +msgid "Homing\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:362 +#: src/emc/usr_intf/gscreen/gscreen.glade:2781 +#, fuzzy msgid "" -"The move just after exiting cutter compensation mode must be straight, not " -"an arc" +"Ignore\n" +"Limits" +msgstr "全部のファイル" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2810 +#, fuzzy +msgid "" +" Set\n" +"Override" +msgstr "フィード手直して" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2824 +msgid "Graphics\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:370 -msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" +#: src/emc/usr_intf/gscreen/gscreen.glade:2838 +msgid "" +"Menu\n" +"Level" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:382 -#: src/emc/rs274ngc/interp_convert.cc:4266 -msgid "Cannot feed with zero spindle speed in feed per rev mode" +#: src/emc/usr_intf/gscreen/gscreen.glade:2851 +msgid "" +" Launch\n" +"Keyboard" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:393 -#: src/emc/rs274ngc/interp_convert.cc:399 -#: src/emc/rs274ngc/interp_convert.cc:408 -#: src/emc/rs274ngc/interp_convert.cc:414 -#: src/emc/rs274ngc/interp_convert.cc:423 -#: src/emc/rs274ngc/interp_convert.cc:429 -#, c-format -msgid "%c word missing in absolute center arc" +#: src/emc/usr_intf/gscreen/gscreen.glade:2868 +msgid "Select Buttons" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:649 +#: src/emc/usr_intf/gscreen/gscreen.glade:2955 +#, fuzzy msgid "" -"Radius of cutter compensation entry arc is not greater than the tool radius" -msgstr "" +"Unhome \n" +" All" +msgstr "原点" -#: src/emc/rs274ngc/interp_convert.cc:868 -#: src/emc/rs274ngc/interp_convert.cc:878 src/emc/rs274ngc/interp_queue.cc:592 +#: src/emc/usr_intf/gscreen/gscreen.glade:2967 +#, fuzzy msgid "" -"Arc move in concave corner cannot be reached by the tool without gouging" -msgstr "" +"Unhome\n" +" Axis" +msgstr "原点" -#: src/emc/rs274ngc/interp_convert.cc:904 -msgid "Arc to arc motion is invalid because the arcs have the same center" +#: src/emc/usr_intf/gscreen/gscreen.glade:2979 +#: src/emc/usr_intf/gscreen/gscreen.glade:3084 +msgid "" +"Toggle\n" +"Readout" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:907 +#: src/emc/usr_intf/gscreen/gscreen.glade:3004 msgid "" -"Arc to arc motion makes a corner the compensated tool can't fit in without " -"gouging" +"Jogging\n" +" Mode" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1036 -#: src/emc/rs274ngc/interp_convert.cc:1037 -#: src/emc/rs274ngc/interp_convert.cc:1038 -#: src/emc/rs274ngc/interp_convert.cc:3733 -#: src/emc/rs274ngc/interp_convert.cc:3736 -#: src/emc/rs274ngc/interp_convert.cc:3739 src/emc/rs274ngc/interp_find.cc:97 -#, c-format -msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" +#: src/emc/usr_intf/gscreen/gscreen.glade:3016 +msgid "" +"coordinate\n" +" System" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1494 -msgid "Cannot change control mode with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3060 +msgid "" +"Index\n" +" Tool" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1607 -msgid "Cannot change coordinate systems with cutter radius compensation on" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3072 +#, fuzzy +msgid "" +"Spindle\n" +"Controls" +msgstr "連綿" -#: src/emc/rs274ngc/interp_convert.cc:1851 -#, c-format -msgid "G%d.1 with no D word" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3195 +#, fuzzy +msgid "Open" +msgstr "開く..." -#: src/emc/rs274ngc/interp_convert.cc:1854 -#, c-format -msgid "G%d.1 with L word, but plane is not G18" +#: src/emc/usr_intf/gscreen/gscreen.glade:3205 +msgid "" +" Block\n" +"Delete" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1865 -#, c-format -msgid "G%d requires D word to be a whole number" +#: src/emc/usr_intf/gscreen/gscreen.glade:3217 +msgid "" +"Optional\n" +" Stop" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1872 -#, c-format -msgid "G%d with lathe tool, but plane is not G18" +#: src/emc/usr_intf/gscreen/gscreen.glade:3229 +msgid "" +" Full\n" +"View" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2271 -msgid "Cannot set reference point with cutter compensation in effect" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3265 +#, fuzzy +msgid "" +"Next\n" +" Tab" +msgstr "テキストファイル" -#: src/emc/rs274ngc/interp_convert.cc:2786 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:3285 +#, fuzzy msgid "" -"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" -msgstr "" +" Feed\n" +"Override" +msgstr "フィード手直し:" -#: src/emc/rs274ngc/interp_convert.cc:2787 -#, c-format -msgid "BUG: restore from level %d !?" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3298 +#, fuzzy +msgid "" +"Spindle\n" +"Override" +msgstr "フィード手直して" -#: src/emc/rs274ngc/interp_convert.cc:2788 -#, c-format -msgid "BUG: restore to level %d !?" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3311 +#, fuzzy +msgid "" +" Rapid\n" +"Override" +msgstr "フィード手直して" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3332 +#, fuzzy +msgid "" +" Jog\n" +"Speed" +msgstr "ジョグ時速" -#: src/emc/rs274ngc/interp_convert.cc:2807 -#, c-format -msgid "M7x: restore_settings G20/G21 failed: '%s'" +#: src/emc/usr_intf/gscreen/gscreen.glade:3345 +msgid "" +" Jog\n" +"Increments" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2819 -#, c-format -msgid "M7x: restore_settings failed executing: '%s': %s" +#: src/emc/usr_intf/gscreen/gscreen.glade:3361 +msgid "" +"Adjust\n" +"Rotary" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2885 -msgid "Cannot set motion output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3383 +msgid "" +"Change\n" +" View" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2886 -msgid "No valid P word with M62" +#: src/emc/usr_intf/gscreen/gscreen.glade:3431 +msgid "" +" Pan\n" +"Vertical" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2890 -msgid "Cannot set motion digital output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3444 +msgid "" +" Pan\n" +"Horizontal" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2891 -msgid "No valid P word with M63" +#: src/emc/usr_intf/gscreen/gscreen.glade:3457 +msgid "" +" Rotate\n" +"Horiontal" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2895 -#: src/emc/rs274ngc/interp_convert.cc:2900 -msgid "Cannot set auxiliary digital output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3470 +msgid "" +" Rotate\n" +"Vertical" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2896 -msgid "No valid P word with M64" +#: src/emc/usr_intf/gscreen/gscreen.glade:3491 +msgid "" +"Search\n" +" Bwd" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2901 -msgid "No valid P word with M65" +#: src/emc/usr_intf/gscreen/gscreen.glade:3503 +msgid "" +"Search\n" +" Fwd" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2931 -msgid "invalid P-word with M66" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3561 +#, fuzzy +msgid "" +" Reload\n" +"Program" +msgstr "プローグラム: " -#: src/emc/rs274ngc/interp_convert.cc:2946 -msgid "Cannot wait for digital input with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3604 +msgid "" +" Clear\n" +"status" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2958 -msgid "Cannot wait for analog input with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3634 +msgid "G54" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2973 -msgid "Cannot set motion analog output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3650 +msgid "calc" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2974 -msgid "Invalid analog index with M67" +#: src/emc/usr_intf/gscreen/gscreen.glade:3725 +msgid "test" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2980 -msgid "Cannot set auxiliary analog output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3728 +msgid "test2" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2981 -msgid "Invalid analog index with M68" +#: src/emc/usr_intf/gscreen/gscreen.glade:3778 +msgid "Data Entry" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3012 -msgid "Need non-negative Q-word to specify tool number with M61" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3805 +#, fuzzy +msgid "Calculator Entry" +msgstr "命令:" -#: src/emc/rs274ngc/interp_convert.cc:3087 -msgid "Q word with M19 requires a value > 0" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3894 +#, fuzzy +msgid "Program Restart" +msgstr "プローグラム: " -#: src/emc/rs274ngc/interp_convert.cc:3115 -msgid "Cannot restore context from invalid stack frame - missing M70/M73?" +#: src/emc/usr_intf/gscreen/gscreen.glade:3909 +msgid "" +"Highlighting the run-at-line with the\n" +"up / down buttons or entering the line\n" +"directly." msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3156 -#: src/emc/rs274ngc/interp_convert.cc:3173 -#: src/emc/rs274ngc/interp_convert.cc:3188 -#: src/emc/rs274ngc/interp_convert.cc:3202 -#: src/emc/rs274ngc/interp_convert.cc:3216 -msgid "Cannot enable overrides with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3923 +msgid "" +"Line\n" +" Up" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3163 -#: src/emc/rs274ngc/interp_convert.cc:3178 -#: src/emc/rs274ngc/interp_convert.cc:3193 -#: src/emc/rs274ngc/interp_convert.cc:3207 -#: src/emc/rs274ngc/interp_convert.cc:3221 -msgid "Cannot disable overrides with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3946 +msgid "" +" Line\n" +"Down" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3325 -#: src/emc/rs274ngc/interp_convert.cc:3326 -#: src/emc/rs274ngc/interp_convert.cc:3327 -#, c-format -msgid "Indexing axis %c can only be moved with G0" +#: src/emc/usr_intf/gscreen/gscreen.glade:4028 +msgid "S 1000" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3334 -#: src/emc/rs274ngc/interp_convert.cc:3336 -#: src/emc/rs274ngc/interp_convert.cc:3338 -#, c-format -msgid "Indexing axis %c can only be moved alone" +#: src/emc/usr_intf/gscreen/gscreen.glade:4098 +msgid " FWD" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3433 -msgid "Cannot probe with feed per rev mode" +#: src/emc/usr_intf/gscreen/gscreen.glade:4133 +msgid " REV" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3481 -msgid "Cannot change retract mode with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen2.glade:35 +msgid "screen 2" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3515 -msgid "G10 L1 without offsets has no effect" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:403 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:884 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:923 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:934 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:949 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1099 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1102 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1156 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1163 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1166 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2148 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2157 +msgid "**** GMOCCAPY INFO ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3621 -msgid "Q number in G10 is not an integer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:404 +msgid "**** no valid probe config in INI File ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3622 -msgid "Invalid tool orientation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:405 +msgid "**** disabled tool measurement ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3721 -msgid "I J words not allowed with G10 L2" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:770 +msgid "**** GMOCCAPY ERROR : ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3742 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:772 +#, python-format msgid "" -"Cannot change the active coordinate system with cutter radius compensation on" +"**** gmoccapy can only handle 4 axis, ****\n" +"**** but you have given %d through your INI file ****\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3750 -msgid "R not allowed in G10 L20" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:774 +msgid "" +"**** gmoccapy will not start ****\n" +"\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4323 -msgid "Spindle not turning in G33" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:786 +#, fuzzy, python-format +msgid "Home axis %s" +msgstr "原点" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:885 +msgid "**** To many increments given in INI File for this screen ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4333 -msgid "Spindle not turning in G33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:886 +msgid "**** Only the first 10 will be reachable through this screen ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4376 -msgid "BUG: An axis incorrectly moved along with an indexer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:924 +msgid "**** gmoccapy screen 2 found ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4389 -msgid "BUG: trying to index incorrect axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:929 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1055 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1177 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1225 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1844 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2190 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2200 +msgid "**** GMOCCAPY ERROR ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4481 -msgid "Cannot use G76 threading cycle with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:930 +msgid "**** screen 2 GLADE ERROR: ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4484 -msgid "In G76, I must not be 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:935 +msgid "**** No gmoccapy2.glade file present ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4486 -msgid "In G76, J must be greater than 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:950 +msgid "**** Invalid embeded tab configuration ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4488 -msgid "In G76, K must be greater than J" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:951 +msgid "**** No tabs will be added! ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4631 -msgid "" -"Length of cutter compensation entry move is not greater than the tool radius" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:964 +msgid "ERROR, trying to initialize the user tabs or panaels, check for typos" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4850 -msgid "Zero degree inside corner is invalid for cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1056 +msgid "**** Did not find a toolfile file in [EMCIO] TOOL_TABLE ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4888 -#: src/emc/rs274ngc/interp_convert.cc:4896 -msgid "" -"Arc to straight motion makes a corner the compensated tool can't fit in " -"without gouging" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1100 +msgid "**** audio available! ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4980 -msgid "Cannot change tools with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1103 +msgid "**** no audio available! ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:5101 -msgid "Cannot change tool offset with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1104 +msgid "**** PYGST libray not installed? ****" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:590 -#, c-format -msgid "" -"BUG: cutter compensation has generated an invalid arc with mismatched radii " -"r1 %f r2 %f\n" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1157 +msgid "**** virtual keyboard program found : " msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:612 -msgid "BUG: Unsupported plane in cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1164 +msgid "**** virtual keyboard program found : " msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:622 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1167 msgid "" -"Straight traverse in concave corner cannot be reached by the tool without " -"gouging" +"**** No virtual keyboard installed, we checked for and ." msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:650 -#, c-format -msgid "BUG: Unsupported plane [%d] in cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1178 +msgid "**** Error with launching virtual keyboard," msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:661 -msgid "" -"Straight feed in concave corner cannot be reached by the tool without gouging" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1179 +msgid "**** is onboard or matchbox-keyboard installed? ****" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:628 -msgid "Cannot feed with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1193 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1875 +msgid "interrupt running macro" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:629 -msgid "Cannot use inverse time feed with canned cycles" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1226 +msgid "**** Did not find a parameter file in [RS274NGC] PARAMETER_FILE ****" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:630 -msgid "Cannot use canned cycles with cutter compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1294 +msgid "Select the file you want to be loaded at program start" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:818 -msgid "G17 canned cycle is not possible on a machine without Z axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1329 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1353 +#, python-format +msgid "**** GMOCCAPY ERROR **** /n Message type %s not suported" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1004 -msgid "G17.1 canned cycle is not possible on a machine without W axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1462 +msgid "Unknown error type and no error text given" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1220 -msgid "G19 canned cycle is not possible on a machine without X axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1478 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1840 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1847 +msgid "Important Warning" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1388 -msgid "G19.1 canned cycle is not possible on a machine without U axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1498 +msgid "ERROR : External ESTOP is set, could not change state!" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1613 -msgid "G18 canned cycle is not possible on a machine without Y axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1511 +msgid "ERROR : Could not switch the machine on, is limit switch aktivated?" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1780 -msgid "G18.1 canned cycle is not possible on a machine without V axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1730 +msgid "It is not possible to change to MDI Mode at the moment" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:170 -msgid "Cannot use polar coordinates with G53" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1754 +msgid "It is not possible to change to Auto Mode at the moment" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 -#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 -#: src/emc/rs274ngc/interp_find.cc:347 -msgid "Cannot specify X or Y words with polar coordinate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1838 +msgid "" +"\n" +"**** No subroutine folder or program prefix is given in the ini file **** \n" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:272 -msgid "Must specify angle in polar coordinate if at the origin" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1839 +msgid "**** so the corresponding file could not be found ****" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:338 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1845 +#, python-format msgid "" -"Incremental motion with polar coordinates is indeterminate when at the origin" +"\n" +"**** File %s of the macro could not be found ****\n" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:348 -msgid "G91 motion with polar coordinates is indeterminate when at the origin" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1846 +#, python-format +msgid "**** we searched in subdirectory %s ****" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:720 -#, c-format -msgid "Requested tool %d not found in the tool table" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1851 +msgid "Enter value:" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:154 -msgid "Cannot use polar coordinate on a machine lacking X or Y axes" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1852 +#, fuzzy, python-format +msgid "Set parameter %s to:" +msgstr "パラムのファイルを読む" -#: src/emc/rs274ngc/interp_internal.cc:155 -msgid "Cannot use polar coordinate except in G17 plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1854 +msgid "conversion error" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:156 -msgid "Cannot specify both polar coordinate and X word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1855 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3610 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3634 +msgid "Conversion error !" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:157 -msgid "Cannot specify both polar coordinate and Y word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1856 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3299 +msgid "" +"Please enter only numerical values\n" +"Values have not been applied" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:178 -#: src/emc/rs274ngc/interp_internal.cc:190 -#: src/emc/rs274ngc/interp_internal.cc:203 -msgid "Polar coordinates can only be used for motion" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2149 +#, python-brace-format +msgid "**** replaced {0} to {1} ****" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1143 src/emc/rs274ngc/interp_read.cc:1147 -#, c-format -msgid "Bad character '\\%03o' used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2158 +msgid "" +"\n" +"**** found more than 9 macros, only the first 9 will be used ****" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1147 -#, c-format -msgid "Bad character '%c' used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2191 +#, python-format +msgid "**** %s ****" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1671 -msgid "Left bracket missing after 'while'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2201 +#, python-format +msgid "**** No widget named: %s to sensitize ****" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1686 -msgid "Left bracket missing after 'repeat'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2366 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1561 +msgid "No tool description available" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1701 -msgid "Left bracket missing after 'if'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2591 +#, python-format +msgid "Halo, welcome to the test message %d" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1716 -msgid "Left bracket missing after 'elseif'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2732 +msgid "Hal Pin is low, Access denied" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1919 -msgid "Cannot read current position with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2734 +msgid "wrong code entered, Access denied" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1934 -#, fuzzy -msgid "Expected # reading parameter" -msgstr "パラムのファイルを読む" - -#: src/emc/rs274ngc/interp_read.cc:1936 -msgid "Expected ] reading bracketed parameter" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2735 +msgid "Just to warn you" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2608 -#, c-format -msgid "bad number format (conversion failed) parsing '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2810 +msgid "ERROR : No limit switch is active, ignore limits will not be set." msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2609 -#, c-format -msgid "bad number format (trailing characters) parsing '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2850 +msgid "Classicladder real-time component not detected" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2699 -msgid "Calculation resulted in 'not a number'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2937 +msgid "Something went wrong, we have an unknown spindle widget" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2701 -msgid "Calculation resulted in 'infinity'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3046 +msgid "Do you really want to delete the MDI history?\n" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2994 -#, c-format -msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3047 +msgid "this will not delete the MDI History file, but will\n" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3106 -msgid "Multiple U words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3048 +msgid "delete the listbox entries for this session" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3122 -msgid "Multiple V words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3049 +msgid "Attention!!" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3138 -msgid "Multiple W words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3076 +msgid "This button will show or hide the keyboard" msgstr "" -#: src/emc/rs274ngc/interp_o_word.cc:95 -#, c-format -msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3196 +#, python-format +msgid "Offset %s could not be set, because off unknown axis" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:161 -#, fuzzy, c-format -msgid "Named parameter #<%s> not defined" -msgstr "パラムのファイルを読む" - -#: src/emc/rs274ngc/interp_namedparams.cc:191 -#, fuzzy, c-format -msgid "cant open ini file '%s'" -msgstr "開けません" - -#: src/emc/rs274ngc/interp_namedparams.cc:208 -#, fuzzy, c-format -msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" -msgstr "パラムのファイルを読む" - -#: src/emc/rs274ngc/interp_namedparams.cc:232 -#, c-format -msgid "fetch_hal_param: hal_init(%s): %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3197 +msgid "Wrong offset setting!" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:233 -#, c-format -msgid "fetch_hal_param: hal_ready(): %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3202 +msgid "Enter value for diameter" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:370 -#, c-format -msgid "Internal error: Could not assign #<%s>" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3203 +#, fuzzy +msgid "Set diameter to:" +msgstr "直径:" -#: src/emc/rs274ngc/interp_namedparams.cc:378 -#, c-format -msgid "Cannot assign to read-only parameter #<%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3206 +msgid "Enter value for radius" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:682 -#, c-format -msgid "BUG: lookup_named_param(%s): unhandled index=%fn" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3207 +#, fuzzy +msgid "Set radius to:" +msgstr "軸の数値:" -#: src/emc/rs274ngc/rs274ngc_pre.cc:1269 src/emc/rs274ngc/rs274ngc_pre.cc:1344 -msgid "Queue is not empty after tool change" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3210 +#, python-format +msgid "Enter value for axis %s" msgstr "" -#: src/emc/rs274ngc/rs274ngc_pre.cc:1648 -#, c-format -msgid "Unable to open parameter file: '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3211 +#, fuzzy, python-format +msgid "Set axis %s to:" +msgstr "軸の数値:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3215 +msgid "Conversion error in btn_set_value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:4 -msgid "A file is already open" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3216 +msgid "Conversion error in btn_set_value!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:5 -msgid "All axes missing with g92" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3217 +msgid "Please enter only numerical values. Values have not been applied" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:6 -msgid "All axes missing with motion code" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3232 +msgid "" +"you did not selected a system to be changed to, so nothing will be changed" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:7 -msgid "Arc radius too small to reach end point" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3640 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3654 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3658 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3673 +msgid "Important Warning!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:8 -msgid "Argument to acos out of range" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3284 +msgid "Enter the block height" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:9 -msgid "Argument to asin out of range" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3285 +msgid "Block height measured from base table" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:10 -msgid "Attempt to divide by zero" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3297 +msgid "Conversion error in btn_block_height" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:11 -msgid "Attempt to raise negative to non integer power" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3298 +msgid "Conversion error in btn_block_height!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:12 -msgid "Bad format unsigned integer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3536 +msgid "Please remove the mounted tool and press OK when done" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:13 -msgid "Bad number format" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3539 +#, python-brace-format +msgid "" +"Please change to tool\n" +"\n" +"# {0:d} {1}\n" +"\n" +" then click OK." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:14 -msgid "Bug bad g code modal group 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3549 +msgid "Tool Change has been aborted!\n" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:15 -msgid "Bug code not g0 or g1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3550 +msgid "The old tool will remain set!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:16 -msgid "Bug code not g17 g18 or g19" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3570 +msgid "No or more than one tool selected in tool table" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:17 -msgid "Bug code not g20 or g21" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3571 +msgid "Please select only one tool in the table" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:18 -msgid "Bug code not g28 or g30" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3573 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3580 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3589 +msgid "Warning Tool Touch off not possible!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:19 -msgid "Bug code not g2 or g3" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3577 +msgid "you can not touch of a tool, witch is not mounted in the spindle" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:20 -msgid "Bug code not g4 g10 g28 g30 g53 or g92 series" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3578 +msgid "your selection has been reseted to the tool in spindle" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:21 -msgid "Bug code not g61 g61.1 or g64" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3586 +msgid "" +"Tool touch off is not possible with cutter radius compensation switched on!\n" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:22 -msgid "Bug code not g90 or g91" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3587 +msgid "Please emit an G40 before tool touch off" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:23 -msgid "Bug code not g98 or g99" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3597 +msgid "Real big error!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:24 -msgid "Bug code not in g92 series" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3598 +msgid "" +"You managed to come to a place that is not possible in on_btn_tool_touchoff" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:25 -msgid "Bug code not in range g54 to g593" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3602 +#, python-format +msgid "Enter value for axis %s to set:" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:26 -msgid "Bug code not m0 m1 m2 m30 m60" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3603 +#, python-brace-format +msgid "Set parameter of tool {0:d} and axis {1} to:" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:27 -msgid "Bug distance mode not g90 or g91" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3608 +#, python-format +msgid "Conversion error because of wrong entry for touch off axis %s" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:28 -msgid "Bug function should not have been called" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3628 +msgid "Enter the tool number as integer " msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:29 -msgid "Bug in tool radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3629 +msgid "Select the tool to change" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:30 -msgid "Bug plane not xy yz or xz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3631 +msgid "Conversion error because of wrong entry for tool number\n" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:31 -msgid "Bug side not right or left" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3632 +msgid "enter only integer nummbers" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:32 -msgid "Bug unknown motion code" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3657 +msgid "Selected tool is already in spindle, no change needed." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:33 -msgid "Bug unknown operation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3653 +msgid "" +"you selected no or more than one tool, the tool selection must be unique" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:34 -msgid "Cannot change axis offsets with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3672 +msgid "Could not understand the entered tool number. Will not change anything" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:35 -msgid "Cannot create backup file" +#: src/emc/usr_intf/gmoccapy/dialogs.py:33 +#: src/emc/usr_intf/gmoccapy/dialogs.py:38 +msgid "Enter System Unlock Code" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:36 -msgid "Cannot do g1 with zero feed rate" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:37 -msgid "Cannot do zero repeats of cycle" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter the value to set" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:38 -msgid "Cannot make arc with zero feed rate" +#: src/emc/usr_intf/gmoccapy/notification.py:205 +#, python-format +msgid "Error trying to delet the message with number %s" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:39 -msgid "Cannot open backup file" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:409 +msgid "left rotate, middle move, right zoom" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:40 -msgid "Cannot open variable file" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:413 +msgid "left zoom, middle move, right rotate" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:41 -msgid "Cannot probe with cutter radius comp on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:417 +msgid "left move, middle rotate, right zoom" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:42 -msgid "Cannot probe with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:421 +msgid "left zoom, middle rotate, right move" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:43 -msgid "Cannot put a b in canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:425 +msgid "left move, middle zoom, right rotate" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:44 -msgid "Cannot put a c in canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:429 +msgid "left rotate, middle zoom, right move" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:45 -msgid "Cannot put an a in canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:526 +msgid "clear plot" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:46 -msgid "Cannot turn cutter radius comp on when on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:585 +msgid "view perspective" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:47 -msgid "Cannot use axis values with g80" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:608 +msgid "view along the X axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:48 -msgid "Cannot use axis values without a g code that uses them" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:633 +msgid "view along the Y axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:49 -msgid "Cannot use g28 or g30 with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:658 +msgid "view along the Z axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:50 -msgid "Cannot use g53 incremental" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:685 +msgid "Show or hide tool path" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:51 -msgid "Cannot use g53 with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:708 +msgid "Show or hide dimensions" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:52 -msgid "Cannot use two g codes that both use axis values" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:731 +msgid "" +"view along the Y axis from positive to negative as viewn for a back tool " +"lathe" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:53 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:791 #, fuzzy -msgid "Command too long" -msgstr "命令番:" +msgid "Offset Page" +msgstr "平行移動:" -#: src/emc/rs274ngc/rs274ngc_return.hh:54 -msgid "Current point same as end point of arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:809 +#, fuzzy +msgid "Tooledit" +msgstr "道具:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:831 +#, fuzzy +msgid "File Selection" +msgstr "スピンドル消した" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:869 +msgid "Toggle between metric and imperial units" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:55 -msgid "Dwell time missing with g4" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:887 +msgid "Switch DRO to DTG mode" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:56 -msgid "Dwell time p word missing with g82" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:905 +msgid "Toggle between machine and relative coordinates" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:57 -msgid "Dwell time p word missing with g86" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:928 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:946 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:963 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:980 +msgid "Klick to toggle through the DRO modes" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:58 -msgid "Dwell time p word missing with g88" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1253 +#, fuzzy +msgid "Ignore limits" +msgstr "方図を聞き捨てる" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1321 +#, fuzzy +msgid "Jogging" +msgstr "スピンドル消した" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1430 +msgid "Information over the tool in spindle" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:59 -msgid "Dwell time p word missing with g89" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1448 +#, fuzzy +msgid "Tool no." +msgstr "道具:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1474 +#, fuzzy +msgid "Diameter" +msgstr "直径:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1503 +#, fuzzy +msgid "offset z" +msgstr "平行移動:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1532 +#, fuzzy +msgid "offset x" +msgstr "平行移動:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1580 +#, fuzzy +msgid "Tool information" +msgstr "スピンドル消した" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1592 +msgid "G and M code information as well as speed and feed" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:60 -msgid "Equal sign missing in parameter setting" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1611 +msgid "active_mcodes_label" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:61 -msgid "F word missing with inverse time arc move" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1663 +msgid "active_gcodes_label" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:62 -msgid "F word missing with inverse time g1 move" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1717 +#, fuzzy +msgid "G-Code" +msgstr "スピンドル消した" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1730 +msgid "The name and location of the loaded program" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:63 -msgid "File ended with no percent sign" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1742 +#, fuzzy +msgid "No Program loaded" +msgstr "プローグラム: " + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1750 +#, fuzzy +msgid "Program" +msgstr "プローグラム: " + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1800 +msgid "Vel." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:64 -msgid "File ended with no percent sign or program end" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1814 +msgid "Displays the current velocity" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:65 -msgid "File name too long" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1838 +msgid "adjust max vel of machine" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:66 -msgid "G code out of range" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1854 +msgid "Max. Velocity" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:67 -msgid "I word given for arc in yz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1885 +msgid "Displayes the programmed feed rate" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:68 -msgid "I word missing with g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1904 +#, fuzzy +msgid "reset feed override to 100 %" +msgstr "フィード手直して" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1922 +#, fuzzy +msgid "adjust feed override" +msgstr "フィード手直して:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1941 +#, fuzzy +msgid "Feed Override [%]" +msgstr "フィード手直して" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2034 +#, fuzzy +msgid "Cooling" +msgstr "命令:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2285 +#, fuzzy +msgid "Spindle [rpm]" +msgstr "スピンドル消した" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2377 +msgid "" +"Search\n" +" back" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:69 -msgid "J word given for arc in xz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2394 +msgid "" +"Search\n" +" fwd" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:70 -msgid "J word missing with g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2446 +#, fuzzy +msgid "" +"Replace\n" +" Text:" +msgstr "相対" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2456 +msgid "" +"Replace\n" +" All" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:71 -msgid "K word given for arc in xy plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2470 +msgid "" +"Ignore\n" +" Case" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:72 -msgid "K word missing with g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2616 +msgid "Start as fullscreen" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:73 -msgid "Left bracket missing after slash with atan" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2631 +msgid "Start maximized" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:74 -msgid "Left bracket missing after unary operation name" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2646 +msgid "Start as window" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:75 -msgid "M code greater than 199" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2670 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4426 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4943 +msgid "X Pos." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:76 -msgid "Mixed radius ijk format for arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2683 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4437 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4928 +msgid "Y Pos." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:77 -msgid "Multiple a words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2698 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4855 +msgid "Width" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:78 -msgid "Multiple b words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2713 +msgid "Height" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:79 -msgid "Multiple c words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2811 +msgid "hide cursor" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:80 -msgid "Multiple d words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2830 +#, fuzzy +msgid "Main Window" +msgstr "スピンドル消した" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2857 +#, fuzzy +msgid "Show keyboard on offset" +msgstr "工作物平行移動:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2871 +msgid "Show keyboard on tooledit" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:81 -msgid "Multiple f words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2885 +msgid "Show keyboard on MDI" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:82 -msgid "Multiple h words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2899 +msgid "Show keyboard on EDIT" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:83 -msgid "Multiple i words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2913 +msgid "Show keyboard on load file" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:84 -msgid "Multiple j words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2931 +#, fuzzy +msgid "Keyboard" +msgstr "命令:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2959 +#, fuzzy +msgid "show preview" +msgstr "見方" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2973 +#, fuzzy +msgid "show offsets" +msgstr "工作物平行移動:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2991 +msgid "On Touch off" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:85 -msgid "Multiple k words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3005 +msgid "" +" Display \n" +"Aux Screen" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:86 -msgid "Multiple l words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3052 +#, fuzzy +msgid "Relative Color" +msgstr "相対" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3079 +msgid "Absolute Color" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:87 -msgid "Multiple p words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3110 +msgid "DTG Color" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:88 -msgid "Multiple q words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3139 +msgid "Use Auto Units" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:89 -msgid "Multiple r words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3159 +msgid "Show the DRO Button" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:90 -msgid "Multiple s words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3190 +msgid "Homed color" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:91 -msgid "Multiple t words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3204 +#, fuzzy +msgid "Unhomed color" +msgstr "原点" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3299 +msgid "Digits" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:92 -msgid "Multiple x words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3344 +msgid "" +"toggle DRO mode \n" +"clicking on the DRO" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:93 -msgid "Multiple y words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3369 +msgid "DRO" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:94 -msgid "Multiple z words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3401 +msgid "Grid size" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:95 -msgid "Must use g0 or g1 with g53" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3430 +msgid "Show DRO" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:96 -msgid "Negative argument to sqrt" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3444 +#, fuzzy +msgid "Show offsets" +msgstr "工作物平行移動:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3458 +msgid "Show DTG" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:97 -msgid "Negative d word tool radius index used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3483 +msgid "Mouse Button mode" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:98 -msgid "Negative f word used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3512 +#, fuzzy +msgid "Preview" +msgstr "見方" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3565 +msgid "" +"current\n" +" file" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:99 -msgid "Negative g code used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3611 +msgid "File to load on start" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:100 -msgid "Negative h word used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3638 +#, fuzzy +msgid "Select user dir" +msgstr "ジョグ時速:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3647 +msgid "Select jump to dir" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:101 -msgid "Negative l word used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3767 +msgid "Themes and sound" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:102 -msgid "Negative m code used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3799 +msgid "Appearance" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:103 -msgid "Negative or zero q value used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3833 +msgid "Scale max velocity" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:104 -msgid "Negative p word used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3846 +msgid "Scale jog velocity" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:105 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3861 #, fuzzy -msgid "Negative spindle speed used" +msgid "Scale feed override" msgstr "フィード手直して:" -#: src/emc/rs274ngc/rs274ngc_return.hh:106 -msgid "Negative tool id used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3876 +#, fuzzy +msgid "Scale spindle override" +msgstr "フィード手直して" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3970 +msgid "Hardware MPG Scale" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:107 -msgid "Nested comment found" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3994 +msgid "Use keyboard shortcuts" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:108 -msgid "No characters found in reading real value" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4007 +msgid "Keyboard shortcuts" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:109 -msgid "Non integer value for integer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4034 +msgid "Use unlock code" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:110 -msgid "Null missing after newline" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4050 +msgid "Do not use unlock code" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:111 -#, fuzzy -msgid "Parameter file out of order" -msgstr "パラムのファイルを読む" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4066 +msgid "Use hal pin to unlock" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:112 -msgid "Parameter number out of range" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4087 +msgid "Unlock settings" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:113 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4197 +#, fuzzy +msgid "Spindle bar min" +msgstr "スピンドル消した" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4210 #, fuzzy -msgid "Parameter is readonly" -msgstr "パラムのファイルを読む" +msgid "Spindle bar max" +msgstr "スピンドル前進" -#: src/emc/rs274ngc/rs274ngc_return.hh:114 -msgid "Q word missing with g83" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4252 +msgid "Hide turtle Jog Button" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:115 -msgid "Queue is not empty after probing" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4282 +msgid "Turtle jog Factor" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:116 -msgid "R clearance plane unspecified in cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4318 +msgid "Turtle Jog" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:117 -msgid "R i j k words all missing for arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4360 +msgid "Hardware" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:118 -msgid "R less than x in cycle in yz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4392 +msgid "Use auto tool measurement" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:119 -msgid "R less than y in cycle in xz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4450 +msgid "Probe Height" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:120 -msgid "R less than z in cycle in xy plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4485 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4498 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4527 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4556 +msgid "0.000" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:121 -msgid "R word with no g code that uses it" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4514 +msgid "Z Pos." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:122 -msgid "Slash missing after first atan argument" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4543 +msgid "Max. Probe" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:123 -msgid "Spindle not turning clockwise in g84" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4575 +#, fuzzy +msgid "Probe Informations" +msgstr "スピンドル消した" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4607 +msgid "Search Vel." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:124 -msgid "Spindle not turning in g86" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4618 +msgid "Probe Vel." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:125 -msgid "Spindle not turning in g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4674 +msgid "Probe velocitys" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:126 -msgid "Spindle not turning in g88" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4688 +msgid "" +"No valid configuration\n" +"found in your INI file,\n" +"please take a look at \n" +"the WIKI to check how\n" +"to configure the settings." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:127 -msgid "Sscanf failed" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4708 +#, fuzzy +msgid "Tool Measurement" +msgstr "命令:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4737 +msgid "" +"If the 4'th axis is used\n" +"for a tool changer, you\n" +"hide the DRO and\n" +"jog buttons." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:128 -msgid "Start point too close to probe point" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4749 +msgid "Hide 4'th axis" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:129 -msgid "Too many m codes on line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4769 +#, fuzzy +msgid "Tool Changer" +msgstr "命令:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4808 +msgid "Use frames" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:130 -msgid "Pocket max too large" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4840 +msgid "max." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:131 -msgid "Tool radius not less than arc radius with comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4992 +msgid "Launch test message" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:132 -msgid "Two g codes used from same modal group" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5011 +msgid "" +" gmoccapy message\n" +" behavior and appearance " msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:133 -msgid "Two m codes used from same modal group" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5049 +msgid "Do not use run from line" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:134 -#, c-format -msgid "Unable to open file <%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5065 +msgid "Use run from line" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:135 -msgid "Unclosed comment found" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5086 +#, fuzzy +msgid "Run from line" +msgstr "スピンドル消した" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5119 +#, fuzzy +msgid "" +"Advanced\n" +" Settings" +msgstr "撰" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5157 +msgid "User tab 1" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:136 -msgid "Unclosed expression" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5171 +msgid "User tabs" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:137 -msgid "Unknown g code used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5207 +msgid "Estop the machine" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:138 -msgid "Unknown m code used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5229 +#, fuzzy +msgid "Turn the machine on/off" +msgstr "出来るように" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5251 +msgid "enter manual mode to jog axis by hand or touch off" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:139 -msgid "Unknown operation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5271 +msgid "enter MDI mode to launch g-code commands" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:140 -msgid "Unknown operation name starting with a" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5290 +msgid "enter auto mode to run programs" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:141 -msgid "Unknown operation name starting with m" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5308 +msgid "Enter the settings page, the default code is \"123\"" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:142 -msgid "Unknown operation name starting with o" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5330 +#, fuzzy +msgid "show user tabs" +msgstr "状態:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5381 +msgid "open homing button list" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:143 -msgid "Unknown operation name starting with x" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5398 +msgid "open touch off button list" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:144 -msgid "Unknown word starting with a" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5427 +msgid "Open the tooleditor page" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:145 -msgid "Unknown word starting with c" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5498 +msgid "make the preview as large as possible" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:146 -msgid "Unknown word starting with e" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5515 +msgid "Close moccapy / leave the program" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:147 -msgid "Unknown word starting with f" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5577 +msgid "This button will show or hide the Keyboard" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:148 -msgid "Unknown word starting with l" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5620 +#, fuzzy +msgid "Load a new program" +msgstr "プローグラム: " + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5637 +#, fuzzy +msgid "Run the loaded program" +msgstr "プローグラム: " + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5654 +msgid "Stop the running program" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:149 -msgid "Unknown word starting with r" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5672 +#, fuzzy +msgid "Pause the running program" +msgstr "プローグラム: " + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5680 +#, fuzzy +msgid "pause the running program" +msgstr "プローグラム: " + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5698 +msgid "Run the loaded program step by step" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:150 -msgid "Unknown word starting with s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5715 +msgid "" +"run the program from a certain line, attention, that is dangerous, because " +"the previous lines will not checed!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:151 -msgid "Unknown word starting with t" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5732 +msgid "" +"Machine or not the optional blocks of the program. If the button is pressed, " +"the optional blocks will not be machined. The button will indicate this by a " +"yellow background." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:152 -msgid "Unknown word where unary operation could be" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5757 +msgid "" +"Make optional stops or not. if an M1 is programed and the button is pressed " +"(is active) the programm will pause if it found a M1" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:153 -msgid "X and y words missing for arc in xy plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5789 +msgid "Edit the loaded program" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:154 -msgid "X and z words missing for arc in xz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5837 +#, fuzzy +msgid "home all axis" +msgstr "原点" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5873 +#, fuzzy +msgid "home x axis" +msgstr "原点" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5897 +#, fuzzy +msgid "home y axis" +msgstr "原点" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5929 +#, fuzzy +msgid "home z axis" +msgstr "原点" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5987 +#, fuzzy +msgid "Unhome all axis" +msgstr "原点" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6023 +msgid "go back to main button list" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:155 -msgid "X value unspecified in yz plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6053 +msgid "" +" edit\n" +"offsets" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:156 -msgid "Y and z words missing for arc in yz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6060 +#, fuzzy +msgid "Edit offsets" +msgstr "工作物平行移動:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6076 +msgid "touch off X / set X to 0" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:157 -msgid "Y value unspecified in xz plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6100 +msgid "touch off Y / set Y to 0" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:158 -msgid "Z value unspecified in xy plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6135 +msgid "touch off Z / set Z to 0" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:159 -msgid "Zero or negative argument to ln" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6155 +msgid "" +"zero\n" +"G92" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:161 -msgid "K word missing with g33/g33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6161 +msgid "Zero all G92 offsets" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:162 -msgid "F word used with a g33/g33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6172 +msgid "" +" Block\n" +"Height" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:163 -msgid "Unknown operation name starting with e" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6192 +msgid "touch off X / set X to an desired value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:164 -msgid "Unknown operation name starting with n" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6216 +msgid "touch off Y / set Y to an desired value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:165 -msgid "Unknown operation name starting with g" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6251 +msgid "touch off Z / set Z to an desired value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:166 -msgid "Unknown operation name starting with l" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6270 +msgid "" +" set\n" +"selected" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:167 -msgid "Too many subroutine parameters" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6277 +msgid "set the selected coordinate system to be the active one" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:168 -msgid "Too many subroutine levels" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6293 +msgid "Go back to main view" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:169 -msgid "Bug: call stack underrun" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6324 +msgid "delete MDI" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:170 -msgid "Unknown control command in o word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6330 +msgid "delete MDI history" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:171 -msgid "Too many oword labels" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6380 +msgid "Cl.-ladder" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:172 -msgid "Unknown oword number" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6386 +msgid "Open classicladder" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:173 -msgid "Nested subroutine definition" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6397 +msgid "Hal-Scope" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:174 -msgid "Not in subroutine definition" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6403 +msgid "launch hal scope" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:175 -msgid "File not open" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6420 +msgid "launch linuxcnc status" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:176 -msgid "Need tool prepared -Txx- for toolchange" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6437 +msgid "launch hal meter" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:177 -msgid "Cannot change planes with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6455 +#, fuzzy +msgid "launch calibration" +msgstr "較正..." + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6466 +msgid "Halshow" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:178 -msgid "Cutter radius compensation allowed only in XY, XZ planes" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6472 +msgid "opens the show hal tool" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:179 -msgid "P word missing with G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6537 +msgid "save the file using the original name" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:180 -msgid "I J or K words missing with G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6559 +msgid "save the file with a new name" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:181 -msgid "Cannot move rotary axes with G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6605 +msgid "clear the edit field and make a new file" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:182 -msgid "Multiple e words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6641 +msgid "Show or hide the virtual keyboard" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:183 -msgid "Named parameter not terminated" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6665 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6879 +msgid "Go back to main button list" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:184 -msgid "Out of memory" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6701 +msgid "delete selected tool or tools" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:185 -msgid "S word missing with G96" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6718 +#, fuzzy +msgid "add a new tool to tool table" +msgstr "ツール表を読む" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6729 +msgid "Reload" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:186 -msgid "Queue is not empty after external input" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6735 +#, fuzzy +msgid "reload tool table from file" +msgstr "ツール表を読む" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6746 +msgid "Apply" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:187 -msgid "Can't select analog input with wait type != immediate return" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6752 +msgid "" +"apply the changes you made, G43 will be excecuted only if it is active g-code" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:188 -msgid "Zero timeout with wait type != immediate return" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6768 +msgid "Select a tool by number" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:189 -msgid "Invalid to select both a digital and an analog input with M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6790 +msgid "change tool with the command M61 Q?, no machine move will be done" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:190 -msgid "Need to have either a valid P or a valid E word with M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6812 +msgid "change tool to the selected one" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:191 -msgid "Q word missing with g73" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6824 +msgid "" +"touchoff\n" +" tool x" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:192 -msgid "Digital input selected out of bounds" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6832 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6863 +msgid "touch off the tool and set the value to the tool table" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:193 -msgid "Analog input selected out of bounds" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6855 +msgid "" +"touchoff\n" +" tool z" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:194 -msgid "W value unspecified in UV plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6915 +msgid "Move to your home directory" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:195 -msgid "U value unspecified in VW plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6932 +msgid "Move to parrent directory" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:196 -msgid "V value unspecified in UW plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6961 +msgid "Select the previos file" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:197 -msgid "R less than W in cycle in UV plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6979 +msgid "Select the next file" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:198 -msgid "R less than U in cycle in VW plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6997 +msgid "Jump to user defined directory" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:199 -msgid "R less than V in cycle in UW plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7027 +msgid "select the highlighted file and return the path" msgstr "" -#~ msgid "About TkEmc" -#~ msgstr "TkEmcについて" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7057 +msgid "Close without returning a file path" +msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7075 #, fuzzy -#~ msgid "Diameter:" -#~ msgstr "直径:" +msgid "Load File" +msgstr "プローグラム: " + +#~ msgid "About TkEmc" +#~ msgstr "TkEmcについて" #~ msgid "Tools..." #~ msgstr "道具..." diff --git a/src/po/pl.po b/src/po/pl.po index 841ac00a4d..ba27de2b75 100644 --- a/src/po/pl.po +++ b/src/po/pl.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: LinuxCNC\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-10 13:40-0600\n" +"POT-Creation-Date: 2019-02-20 07:49+0000\n" "PO-Revision-Date: 2012-01-16 17:28+0100\n" "Last-Translator: Michał Geszkiewicz \n" "Language-Team: Polish Translation \n" @@ -17,51 +17,1685 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: src/hal/utils/meter.c:198 +#: src/emc/task/emctaskmain.cc:479 src/emc/task/emctaskmain.cc:512 +#, c-format +msgid "%s exceeds +X limit" +msgstr "%s przekracza zakres +X" + +#: src/emc/task/emctaskmain.cc:484 src/emc/task/emctaskmain.cc:517 +#, c-format +msgid "%s exceeds +Y limit" +msgstr "%s przekracza zakres +Y" + +#: src/emc/task/emctaskmain.cc:489 src/emc/task/emctaskmain.cc:522 +#, c-format +msgid "%s exceeds +Z limit" +msgstr "%s przekracza zakres +Z" + +#: src/emc/task/emctaskmain.cc:494 src/emc/task/emctaskmain.cc:527 +#, c-format +msgid "%s exceeds -X limit" +msgstr "%s przekracza zakres -X" + +#: src/emc/task/emctaskmain.cc:499 src/emc/task/emctaskmain.cc:532 +#, c-format +msgid "%s exceeds -Y limit" +msgstr "%s przekracza zakres -Y" + +#: src/emc/task/emctaskmain.cc:504 src/emc/task/emctaskmain.cc:537 +#, c-format +msgid "%s exceeds -Z limit" +msgstr "%s przekracza zakres -Z" + +#: src/emc/task/emctaskmain.cc:892 +#, c-format +msgid "" +"command (%s) cannot be executed until the machine is out of E-stop and " +"turned on" +msgstr "" +"polecenie (%s) nie może być wykonane gdy maszyna maszyna jest wyłączona" + +#: src/emc/task/emctaskmain.cc:1013 +#, fuzzy, c-format +msgid "can't do that (%s:%d) in manual mode" +msgstr "nie można wykonać (%s) w trybie manualnym" + +#: src/emc/task/emctaskmain.cc:1113 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter idle" +msgstr "nie można wykonać (%s) w trybie auto i wyłączonym interpreterem" + +#: src/emc/task/emctaskmain.cc:1180 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter reading" +msgstr "nie można wykonać (%s) w trybie auto i interpreterem wczytującym" + +#: src/emc/task/emctaskmain.cc:1265 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter paused" +msgstr "nie można wykonać (%s) w trybie auto i interpreterem zatrzymanym" + +#: src/emc/task/emctaskmain.cc:1334 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter waiting" +msgstr "nie można wykonać (%s) w trybie auto i interpreterem oczekującym" + +#: src/emc/task/emctaskmain.cc:1442 +#, fuzzy, c-format +msgid "can't do that (%s:%d) in MDI mode" +msgstr "nie można wykonać (%s) w trybie MDI" + +#: src/emc/task/emctaskmain.cc:2100 +msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" +msgstr "Nie można przełączyć trybu gdy tryb jest AUTO i interpreter pracuje" + +#: src/emc/task/emctaskmain.cc:2157 tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 +#: tcl/mini.tcl:1775 tcl/tklinuxcnc.tcl:451 +#, c-format, tcl-format +msgid "can't open %s" +msgstr "nie można otworzyć %s" + +#: src/emc/task/emctaskmain.cc:2169 +msgid "Can't issue MDI command when not homed" +msgstr "Nie można wykonać polecenia MDI gdy nie zbazowano" + +#: src/emc/task/emctaskmain.cc:2174 +msgid "Must be in MDI mode to issue MDI command" +msgstr "Musi być tryb MDI aby wykonać polecenie MDI" + +#: src/emc/task/emctaskmain.cc:2256 +msgid "Can't run a program when not homed" +msgstr "Nie można wykonać programu gdy nie zbazowano" + +#: src/emc/rs274ngc/interp_arc.cc:110 src/emc/rs274ngc/interp_arc.cc:284 +#, fuzzy, c-format +msgid "" +"Zero-radius arc: start=(%c%.4f,%c%.4f) center=(%c%.4f,%c%.4f) end=(%c%.4f,%c" +"%.4f) r1=%.4f r2=%.4f" +msgstr "" +"Promień końca różni się od promienia początku: początek=(%c%.4f,%c%.4f) " +"środek=(%c%.4f,%c%.4f) koniec=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " +"rel_err=%.4f%%" + +#: src/emc/rs274ngc/interp_arc.cc:120 src/emc/rs274ngc/interp_arc.cc:292 +#, c-format +msgid "" +"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " +"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " +"rel_err=%.4f%%" +msgstr "" +"Promień końca różni się od promienia początku: początek=(%c%.4f,%c%.4f) " +"środek=(%c%.4f,%c%.4f) koniec=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " +"rel_err=%.4f%%" + +#: src/emc/rs274ngc/interp_check.cc:90 +msgid "G4 not allowed with G2 or G3 because they both use P" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:93 +msgid "Line with G10 does not have L1, L10, L11, L2, or L20" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:94 +msgid "P value not an integer with G10" +msgstr "Wartość P nie jest całkowita w G10" + +#: src/emc/rs274ngc/interp_check.cc:95 +#, fuzzy, c-format +msgid "P value out of range (0-9) with G10 L%d" +msgstr "Wartość P poza zakresem (0-9) w G10 L2 lub L20" + +#: src/emc/rs274ngc/interp_check.cc:96 +#, fuzzy, c-format +msgid "P value out of range with G10 L%d" +msgstr "Wartość P poza zakresem w G10 L1 lub G10 L20" + +#: src/emc/rs274ngc/interp_check.cc:100 +msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." +msgstr "Pomiędzy kodami G5.2 i G5.3 tylko kolejne kody G5.2 są dozwolone." + +#: src/emc/rs274ngc/interp_check.cc:259 +msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" +msgstr "Słowo D użyte bez G41 G41.1 G42 G42.1 lub G96" + +#: src/emc/rs274ngc/interp_check.cc:265 +msgid "E word with no G76, M66, M67 or M68 to use it" +msgstr "Słowo E użyte bez G76, M66, M67 lub M68" + +#: src/emc/rs274ngc/interp_check.cc:270 +msgid "H word with no G43 or G76 to use it" +msgstr "Słowo H użyte bez G43 lub G76" + +#: src/emc/rs274ngc/interp_check.cc:276 +msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" +msgstr "Słowo I użyte bez G2, G3, G5, G5.1, G10, G76, lub G87" + +#: src/emc/rs274ngc/interp_check.cc:282 +msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" +msgstr "Słowo J użyte bez G2, G3, G5, G5.1, G10, G76, lub G87" + +#: src/emc/rs274ngc/interp_check.cc:288 +msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" +msgstr "Słowo K użyte bez G2, G3, G33, G33.1, G76, lub G87" + +#: src/emc/rs274ngc/interp_check.cc:298 +msgid "" +"L word with no G10, cutter compensation, canned cycle, digital/analog input, " +"or NURBS code" +msgstr "" +"słowo L użyte bez G10, kompensacji narzędzia, cykli wiertarskich, cyfrowego/" +"analowego wejścia lub kodu NURBS" + +#: src/emc/rs274ngc/interp_check.cc:310 +msgid "" +"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " +"M53 M62 M63 M64 M65 M66 or user M code to use it" +msgstr "" +"słowo P użyte bez G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 lub M50 M51 " +"M52 M53 M62 M63 M64 M65 M66 lub kodu M użytkownika" + +#: src/emc/rs274ngc/interp_check.cc:315 +msgid "P value not an integer with M19 G2 or G3" +msgstr "Wartość P nie jest całkowita w G10 L2" + +#: src/emc/rs274ngc/interp_check.cc:317 +msgid "P value must be 0,1,or 2 with M19" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:319 +msgid "P value should be 1 or greater with G2 or G3" +msgstr "Wartość P powinna wynosić 1 lub więcej w G2 lub G3" + +#: src/emc/rs274ngc/interp_check.cc:327 +msgid "" +"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " +"code that uses it" +msgstr "" +"słowo Q użyte bez G5, G10, G64, G73, G76, G83, M66, M67, M68 lub kodu M " +"użytkownika" + +#: src/emc/rs274ngc/interp_check.cc:337 +msgid "R value must be within 0..360 with M19" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:139 +msgid "You must specify both X and Y coordinates for Control Points" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:142 +msgid "Can specify P without X and Y only for the first control point" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:145 +msgid "Must specify positive weight P for every Control Point" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:148 +msgid "Cannot make a NURBS with 0 feedrate" +msgstr "Nie można wykonać NURBS z prędkością zerową" + +#: src/emc/rs274ngc/interp_convert.cc:183 +msgid "Cannot use G5.3 without G5.2 first" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:184 +#, c-format +msgid "" +"You must specify a number of control points at least equal to the order L = " +"%d" +msgstr "Musisz określić liczbę punktów kontrolnych co najmniej równą L = %d" + +#: src/emc/rs274ngc/interp_convert.cc:213 +msgid "Cannot convert spline with cutter radius compensation" +msgstr "" +"Nie można skonwertować spline z włączoną kompensacją grubości narzędzia" + +#: src/emc/rs274ngc/interp_convert.cc:223 +msgid "Splines must be in the XY plane" +msgstr "Splines muszą być w planie XY" + +#: src/emc/rs274ngc/interp_convert.cc:228 +msgid "Splines may not have motion in Z, A, B, or C" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:232 +msgid "Must specify both I and J with G5.1" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:251 +msgid "Must specify both I and J, or neither" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:262 +msgid "Must specify both P and Q with G5" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:363 +msgid "" +"The move just after exiting cutter compensation mode must be straight, not " +"an arc" +msgstr "" +"Ruch zaraz po wyjściu z trybu kompensacji grubości narzędzia musi być linią, " +"nie łukiem" + +#: src/emc/rs274ngc/interp_convert.cc:371 +msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:383 +#: src/emc/rs274ngc/interp_convert.cc:4488 +msgid "Cannot feed with zero spindle speed in feed per rev mode" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:394 +#: src/emc/rs274ngc/interp_convert.cc:400 +#: src/emc/rs274ngc/interp_convert.cc:409 +#: src/emc/rs274ngc/interp_convert.cc:415 +#: src/emc/rs274ngc/interp_convert.cc:424 +#: src/emc/rs274ngc/interp_convert.cc:430 +#, c-format +msgid "%c word missing in absolute center arc" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:662 +msgid "" +"Radius of cutter compensation entry arc is not greater than the tool radius" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:882 +#: src/emc/rs274ngc/interp_convert.cc:892 src/emc/rs274ngc/interp_queue.cc:696 +msgid "" +"Arc move in concave corner cannot be reached by the tool without gouging" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:918 +msgid "Arc to arc motion is invalid because the arcs have the same center" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:921 +msgid "" +"Arc to arc motion makes a corner the compensated tool can't fit in without " +"gouging" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:1053 +#: src/emc/rs274ngc/interp_convert.cc:1057 +#: src/emc/rs274ngc/interp_convert.cc:1061 +#: src/emc/rs274ngc/interp_convert.cc:3945 +#: src/emc/rs274ngc/interp_convert.cc:3948 +#: src/emc/rs274ngc/interp_convert.cc:3951 src/emc/rs274ngc/interp_find.cc:97 +#, c-format +msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:1563 +msgid "Cannot change control mode with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:1676 +msgid "Cannot change coordinate systems with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:1920 +#, c-format +msgid "G%d.1 with no D word" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:1923 +#, c-format +msgid "G%d.1 with L word, but plane is not G18" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:1934 +#, c-format +msgid "G%d requires D word to be a whole number" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:1941 +#, c-format +msgid "G%d with lathe tool, but plane is not G18" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:2340 +msgid "Cannot set reference point with cutter compensation in effect" +msgstr "" +"Nie można ustawić punktu referencyjnego z włączoną kompensacją grubości " +"narzędzia" + +#: src/emc/rs274ngc/interp_convert.cc:2859 +#, c-format +msgid "gen_restore G20/G21 failed: '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:2907 +#, c-format +msgid "" +"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:2908 +#, c-format +msgid "BUG: restore from level %d !?" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:2909 +#, c-format +msgid "BUG: restore to level %d !?" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:2928 +#, c-format +msgid "M7x: restore_settings G20/G21 failed: '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:2946 +#, c-format +msgid "M7x: restore_settings failed executing: '%s': %s" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3005 +#, c-format +msgid "Failed to restore interp state on abort '%s': %s" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3069 +msgid "No valid P word with M62" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3072 +msgid "No valid P word with M63" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3075 +msgid "No valid P word with M64" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3078 +msgid "No valid P word with M65" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3111 +msgid "invalid P-word with M66" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3126 +msgid "Cannot wait for digital input with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3138 +msgid "Cannot wait for analog input with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3152 +msgid "Invalid analog index with M67" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3157 +msgid "Invalid analog index with M68" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3188 +msgid "Need non-negative Q-word to specify tool number with M61" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3258 +msgid "Q word with M19 requires a value > 0" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3286 +msgid "Cannot restore context from invalid stack frame - missing M70/M73?" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3327 +#: src/emc/rs274ngc/interp_convert.cc:3344 +#: src/emc/rs274ngc/interp_convert.cc:3359 +#: src/emc/rs274ngc/interp_convert.cc:3373 +#: src/emc/rs274ngc/interp_convert.cc:3387 +msgid "Cannot enable overrides with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3334 +#: src/emc/rs274ngc/interp_convert.cc:3349 +#: src/emc/rs274ngc/interp_convert.cc:3364 +#: src/emc/rs274ngc/interp_convert.cc:3378 +#: src/emc/rs274ngc/interp_convert.cc:3392 +msgid "Cannot disable overrides with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3506 +#: src/emc/rs274ngc/interp_convert.cc:3507 +#: src/emc/rs274ngc/interp_convert.cc:3508 +#, c-format +msgid "Indexing axis %c can only be moved with G0" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3515 +#: src/emc/rs274ngc/interp_convert.cc:3517 +#: src/emc/rs274ngc/interp_convert.cc:3519 +#, c-format +msgid "Indexing axis %c can only be moved alone" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3621 +msgid "Cannot probe with feed per rev mode" +msgstr "Nie można wykonać sondowania w trybie posuwu na obrót" + +#: src/emc/rs274ngc/interp_convert.cc:3669 +msgid "Cannot change retract mode with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3703 +msgid "G10 L1 without offsets has no effect" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3809 +msgid "Q number in G10 is not an integer" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3810 +msgid "Invalid tool orientation" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3933 +msgid "I J words not allowed with G10 L2" +msgstr "Słowa I J nie dozwolone razem z G10 L2" + +#: src/emc/rs274ngc/interp_convert.cc:3954 +msgid "" +"Cannot change the active coordinate system with cutter radius compensation on" +msgstr "" +"Nie można zmienić aktulanego układu współrzędznych z włączoną kompensacją " +"grubości narzędzia" + +#: src/emc/rs274ngc/interp_convert.cc:3962 +msgid "R not allowed in G10 L20" +msgstr "Słowo R nie dozwolone razem z G10 L20" + +#: src/emc/rs274ngc/interp_convert.cc:4550 +msgid "Spindle not turning in G33" +msgstr "Wrzeciono nie obraca się w G33" + +#: src/emc/rs274ngc/interp_convert.cc:4560 +msgid "Spindle not turning in G33.1" +msgstr "Wrzeciono nie obraca się w G33.1" + +#: src/emc/rs274ngc/interp_convert.cc:4603 +msgid "BUG: An axis incorrectly moved along with an indexer" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4616 +msgid "BUG: trying to index incorrect axis" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4708 +msgid "Cannot use G76 threading cycle with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4711 +msgid "In G76, I must not be 0" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4713 +msgid "In G76, J must be greater than 0" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4715 +msgid "In G76, K must be greater than J" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4858 +msgid "" +"Length of cutter compensation entry move is not greater than the tool radius" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:5077 +msgid "Zero degree inside corner is invalid for cutter compensation" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:5115 +#: src/emc/rs274ngc/interp_convert.cc:5123 +msgid "" +"Arc to straight motion makes a corner the compensated tool can't fit in " +"without gouging" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:5207 +msgid "Cannot change tools with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:5328 +msgid "Cannot change tool offset with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_queue.cc:694 +#, c-format +msgid "" +"BUG: cutter compensation has generated an invalid arc with mismatched radii " +"r1 %f r2 %f\n" +msgstr "" + +#: src/emc/rs274ngc/interp_queue.cc:716 +msgid "BUG: Unsupported plane in cutter compensation" +msgstr "" + +#: src/emc/rs274ngc/interp_queue.cc:729 +msgid "" +"Straight traverse in concave corner cannot be reached by the tool without " +"gouging" +msgstr "" + +#: src/emc/rs274ngc/interp_queue.cc:757 +#, c-format +msgid "BUG: Unsupported plane [%d] in cutter compensation" +msgstr "" + +#: src/emc/rs274ngc/interp_queue.cc:771 +msgid "" +"Straight feed in concave corner cannot be reached by the tool without gouging" +msgstr "" + +#: src/emc/rs274ngc/interp_cycles.cc:630 +msgid "Cannot feed with zero feed rate" +msgstr "Nie można wykonać G1 z prędkością zerową" + +#: src/emc/rs274ngc/interp_cycles.cc:631 +msgid "Cannot use inverse time feed with canned cycles" +msgstr "" + +#: src/emc/rs274ngc/interp_cycles.cc:632 +msgid "Cannot use canned cycles with cutter compensation on" +msgstr "Nie można użyć cykli z włączoną kompensacją grubości narzędzia" + +#: src/emc/rs274ngc/interp_cycles.cc:829 +msgid "G17 canned cycle is not possible on a machine without Z axis" +msgstr "" + +#: src/emc/rs274ngc/interp_cycles.cc:1015 +msgid "G17.1 canned cycle is not possible on a machine without W axis" +msgstr "" + +#: src/emc/rs274ngc/interp_cycles.cc:1231 +msgid "G19 canned cycle is not possible on a machine without X axis" +msgstr "" + +#: src/emc/rs274ngc/interp_cycles.cc:1399 +msgid "G19.1 canned cycle is not possible on a machine without U axis" +msgstr "" + +#: src/emc/rs274ngc/interp_cycles.cc:1624 +msgid "G18 canned cycle is not possible on a machine without Y axis" +msgstr "" + +#: src/emc/rs274ngc/interp_cycles.cc:1791 +msgid "G18.1 canned cycle is not possible on a machine without V axis" +msgstr "" + +#: src/emc/rs274ngc/interp_find.cc:170 +msgid "Cannot use polar coordinates with G53" +msgstr "Nie można użyć współrzędnuch polarnych z G53" + +#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 +#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 +#: src/emc/rs274ngc/interp_find.cc:347 +msgid "Cannot specify X or Y words with polar coordinate" +msgstr "" + +#: src/emc/rs274ngc/interp_find.cc:272 +msgid "Must specify angle in polar coordinate if at the origin" +msgstr "" + +#: src/emc/rs274ngc/interp_find.cc:338 +msgid "" +"Incremental motion with polar coordinates is indeterminate when at the origin" +msgstr "" + +#: src/emc/rs274ngc/interp_find.cc:348 +msgid "G91 motion with polar coordinates is indeterminate when at the origin" +msgstr "" + +#: src/emc/rs274ngc/interp_find.cc:720 +#, c-format +msgid "Requested tool %d not found in the tool table" +msgstr "" + +#: src/emc/rs274ngc/interp_internal.cc:161 +msgid "Cannot use polar coordinate on a machine lacking X or Y axes" +msgstr "" + +#: src/emc/rs274ngc/interp_internal.cc:162 +msgid "Cannot use polar coordinate except in G17 plane" +msgstr "" + +#: src/emc/rs274ngc/interp_internal.cc:163 +msgid "Cannot specify both polar coordinate and X word" +msgstr "" + +#: src/emc/rs274ngc/interp_internal.cc:164 +msgid "Cannot specify both polar coordinate and Y word" +msgstr "" + +#: src/emc/rs274ngc/interp_internal.cc:185 +#: src/emc/rs274ngc/interp_internal.cc:199 +#: src/emc/rs274ngc/interp_internal.cc:214 +msgid "Polar coordinates can only be used for motion" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1150 src/emc/rs274ngc/interp_read.cc:1154 +#, c-format +msgid "Bad character '\\%03o' used" +msgstr "Użyty niewłaściwy znak '\\%03o'" + +#: src/emc/rs274ngc/interp_read.cc:1154 +#, c-format +msgid "Bad character '%c' used" +msgstr "Użyty niewłaściwy znak %c" + +#: src/emc/rs274ngc/interp_read.cc:1678 +msgid "Left bracket missing after 'while'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1693 +msgid "Left bracket missing after 'repeat'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1708 +msgid "Left bracket missing after 'if'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1723 +msgid "Left bracket missing after 'elseif'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1926 +msgid "Cannot read current position with cutter radius compensation on" +msgstr "" +"Nie można odczytać aktualnej pozycji z włączoną kompensacją grubości " +"narzędzia" + +#: src/emc/rs274ngc/interp_read.cc:1941 +msgid "Expected # reading parameter" +msgstr "Oczekiwano # odczytując parametr" + +#: src/emc/rs274ngc/interp_read.cc:1943 +msgid "Expected ] reading bracketed parameter" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:2615 +#, c-format +msgid "bad number format (conversion failed) parsing '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:2616 +#, c-format +msgid "bad number format (trailing characters) parsing '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:2706 +msgid "Calculation resulted in 'not a number'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:2708 +msgid "Calculation resulted in 'infinity'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:3001 +#, c-format +msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:3113 +msgid "Multiple U words on one line" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:3129 +msgid "Multiple V words on one line" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:3145 +msgid "Multiple W words on one line" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:97 +#, c-format +msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:722 +#, fuzzy, c-format +msgid "%d: not in a subroutine definition: '%s'" +msgstr "Nie jest w definicji procedury" + +#: src/emc/rs274ngc/interp_o_word.cc:759 src/emc/rs274ngc/interp_o_word.cc:809 +#, c-format +msgid "%d: duplicate O-word label: '%s' - defined in line %d" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:862 +#, c-format +msgid "%d: duplicate O-word label - already defined in line %d: '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:886 src/emc/rs274ngc/interp_o_word.cc:944 +#: src/emc/rs274ngc/interp_o_word.cc:978 src/emc/rs274ngc/interp_o_word.cc:996 +#: src/emc/rs274ngc/interp_o_word.cc:1013 +#: src/emc/rs274ngc/interp_o_word.cc:1038 +#, c-format +msgid "%d: undefined O-word label: '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:889 src/emc/rs274ngc/interp_o_word.cc:947 +#, c-format +msgid "%d: no matching 'if' label: '%s' (found '%s' in line %d)" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:981 +#, c-format +msgid "%d: no matching label: '%s' (found '%s' in line %d): '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:999 src/emc/rs274ngc/interp_o_word.cc:1016 +#, c-format +msgid "%d: no matching while/do label: '%s' (found '%s' in line %d)" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:1042 +#, c-format +msgid "%d: no matching label: '%s' (found '%s' in line %d)" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:166 +#, c-format +msgid "Named parameter #<%s> not defined" +msgstr "Nazwany parametr #<%s> nie zdefinowany" + +#: src/emc/rs274ngc/interp_namedparams.cc:196 +#, c-format +msgid "cant open ini file '%s'" +msgstr "nie można otworzyć %s" + +#: src/emc/rs274ngc/interp_namedparams.cc:213 +#, c-format +msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:237 +#, c-format +msgid "fetch_hal_param: hal_init(%s): %d" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:238 +#, c-format +msgid "fetch_hal_param: hal_ready(): %d" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:419 +#, c-format +msgid "Internal error: Could not assign #<%s>" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:427 +#, c-format +msgid "Cannot assign to read-only parameter #<%s>" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:731 +#, c-format +msgid "BUG: lookup_named_param(%s): unhandled index=%fn" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_pre.cc:1407 src/emc/rs274ngc/rs274ngc_pre.cc:1482 +msgid "Queue is not empty after tool change" +msgstr "Kolejka nie jest pusta po zmianie narzędzia" + +#: src/emc/rs274ngc/rs274ngc_pre.cc:1786 +#, c-format +msgid "Unable to open parameter file: '%s'" +msgstr "Nie można otworzyć pliku pliku z parametrami <%s>" + +#: src/emc/rs274ngc/rs274ngc_return.hh:19 +msgid "A file is already open" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:21 +msgid "All axes missing with g52 or g92" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:22 +msgid "All axes missing with motion code" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:23 +msgid "Arc radius too small to reach end point" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:24 +msgid "Argument to acos out of range" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:25 +msgid "Argument to asin out of range" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:26 +msgid "Attempt to divide by zero" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:27 +msgid "Attempt to raise negative to non integer power" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:28 +msgid "Bad format unsigned integer" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:29 +msgid "Bad number format" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:30 +msgid "Bug bad g code modal group 0" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:31 +msgid "Bug code not g0 or g1" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:32 +msgid "Bug code not g17 g18 or g19" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:33 +msgid "Bug code not g20 or g21" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:34 +msgid "Bug code not g28 or g30" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:35 +msgid "Bug code not g2 or g3" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:37 +msgid "Bug code not g4 g10 g28 g30 g52 g53 or g92 series" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:38 +msgid "Bug code not g61 g61.1 or g64" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:39 +msgid "Bug code not g90 or g91" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:40 +msgid "Bug code not g98 or g99" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:41 +msgid "Bug code not in g52 or g92 series" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:42 +msgid "Bug code not in range g54 to g593" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:43 +msgid "Bug code not m0 m1 m2 m30 m60" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:44 +msgid "Bug distance mode not g90 or g91" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:45 +msgid "Bug function should not have been called" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:46 +msgid "Bug in tool radius comp" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:47 +msgid "Bug plane not xy yz or xz" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:48 +msgid "Bug side not right or left" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:49 +msgid "Bug unknown motion code" +msgstr "Błąd użyty nieznany kod ruchu" + +#: src/emc/rs274ngc/rs274ngc_return.hh:50 +msgid "Bug unknown operation" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:51 +msgid "Cannot change axis offsets with cutter radius comp" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:52 +msgid "Cannot create backup file" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:53 +msgid "Cannot do g1 with zero feed rate" +msgstr "Nie można wykonać G1 z prędkością zerową" + +#: src/emc/rs274ngc/rs274ngc_return.hh:54 +msgid "Cannot do zero repeats of cycle" +msgstr "Nie można wykonać zero powtórzeń cyklu" + +#: src/emc/rs274ngc/rs274ngc_return.hh:55 +msgid "Cannot make arc with zero feed rate" +msgstr "Nie można wykonać łuku z prędkością zerową" + +#: src/emc/rs274ngc/rs274ngc_return.hh:56 +msgid "Cannot open backup file" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:57 +msgid "Cannot open variable file" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:58 +msgid "Cannot probe with cutter radius comp on" +msgstr "Nie można wykonać sondowania z włączoną kompensacją grubości narzędzia" + +#: src/emc/rs274ngc/rs274ngc_return.hh:59 +msgid "Cannot probe with zero feed rate" +msgstr "Nie można wykonać sondowania z prędkością zerową" + +#: src/emc/rs274ngc/rs274ngc_return.hh:60 +msgid "Cannot put a b in canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:61 +msgid "Cannot put a c in canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:62 +msgid "Cannot put an a in canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:63 +msgid "Cannot turn cutter radius comp on when on" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:64 +msgid "Cannot use axis values with g80" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:65 +msgid "Cannot use axis values without a g code that uses them" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:66 +msgid "Cannot use g28 or g30 with cutter radius comp" +msgstr "Nie można użyć G28 lub G30 z włączoną kompensacją grubości narzędzia" + +#: src/emc/rs274ngc/rs274ngc_return.hh:67 +msgid "Cannot use g53 incremental" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:68 +msgid "Cannot use g53 with cutter radius comp" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:69 +msgid "Cannot use two g codes that both use axis values" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:70 +msgid "Command too long" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:71 +msgid "Current point same as end point of arc" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:72 +msgid "Dwell time missing with g4" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:73 +msgid "Dwell time p word missing with g82" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:74 +msgid "Dwell time p word missing with g86" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:75 +msgid "Dwell time p word missing with g88" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:76 +msgid "Dwell time p word missing with g89" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:77 +msgid "Equal sign missing in parameter setting" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:78 +msgid "F word missing with inverse time arc move" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:79 +msgid "F word missing with inverse time g1 move" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:80 +msgid "File ended with no percent sign" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:81 +msgid "File ended with no percent sign or program end" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:82 +msgid "File name too long" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:83 +msgid "G code out of range" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:84 +msgid "I word given for arc in yz plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:85 +msgid "I word missing with g87" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:86 +msgid "J word given for arc in xz plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:87 +msgid "J word missing with g87" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:88 +msgid "K word given for arc in xy plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:89 +msgid "K word missing with g87" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:90 +msgid "Left bracket missing after slash with atan" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:91 +msgid "Left bracket missing after unary operation name" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:92 +#, c-format +msgid "M code greater than 199: M%d" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:93 +msgid "Mixed radius ijk format for arc" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:94 +msgid "Multiple a words on one line" +msgstr "Słowo A użyte wielokrotnie w jednej linii" + +#: src/emc/rs274ngc/rs274ngc_return.hh:95 +msgid "Multiple b words on one line" +msgstr "Słowo B użyte wielokrotnie w jednej linii" + +#: src/emc/rs274ngc/rs274ngc_return.hh:96 +msgid "Multiple c words on one line" +msgstr "Słowo C użyte wielokrotnie w jednej linii" + +#: src/emc/rs274ngc/rs274ngc_return.hh:97 +msgid "Multiple d words on one line" +msgstr "Słowo D użyte wielokrotnie w jednej linii" + +#: src/emc/rs274ngc/rs274ngc_return.hh:98 +msgid "Multiple f words on one line" +msgstr "Słowo F użyte wielokrotnie w jednej linii" + +#: src/emc/rs274ngc/rs274ngc_return.hh:99 +msgid "Multiple h words on one line" +msgstr "Słowo H użyte wielokrotnie w jednej linii" + +#: src/emc/rs274ngc/rs274ngc_return.hh:100 +msgid "Multiple i words on one line" +msgstr "Słowo I użyte wielokrotnie w jednej linii" + +#: src/emc/rs274ngc/rs274ngc_return.hh:101 +msgid "Multiple j words on one line" +msgstr "Słowo J użyte wielokrotnie w jednej linii" + +#: src/emc/rs274ngc/rs274ngc_return.hh:102 +msgid "Multiple k words on one line" +msgstr "Słowo K użyte wielokrotnie w jednej linii" + +#: src/emc/rs274ngc/rs274ngc_return.hh:103 +msgid "Multiple l words on one line" +msgstr "Słowo L użyte wielokrotnie w jednej linii" + +#: src/emc/rs274ngc/rs274ngc_return.hh:104 +msgid "Multiple p words on one line" +msgstr "Słowo P użyte wielokrotnie w jednej linii" + +#: src/emc/rs274ngc/rs274ngc_return.hh:105 +msgid "Multiple q words on one line" +msgstr "Słowo Q użyte wielokrotnie w jednej linii" + +#: src/emc/rs274ngc/rs274ngc_return.hh:106 +msgid "Multiple r words on one line" +msgstr "Słowo R użyte wielokrotnie w jednej linii" + +#: src/emc/rs274ngc/rs274ngc_return.hh:107 +msgid "Multiple s words on one line" +msgstr "Słowo S użyte wielokrotnie w jednej linii" + +#: src/emc/rs274ngc/rs274ngc_return.hh:108 +msgid "Multiple t words on one line" +msgstr "Słowo T użyte wielokrotnie w jednej linii" + +#: src/emc/rs274ngc/rs274ngc_return.hh:109 +msgid "Multiple x words on one line" +msgstr "Słowo X użyte wielokrotnie w jednej linii" + +#: src/emc/rs274ngc/rs274ngc_return.hh:110 +msgid "Multiple y words on one line" +msgstr "Słowo Y użyte wielokrotnie w jednej linii" + +#: src/emc/rs274ngc/rs274ngc_return.hh:111 +msgid "Multiple z words on one line" +msgstr "Słowo Z użyte wielokrotnie w jednej linii" + +#: src/emc/rs274ngc/rs274ngc_return.hh:112 +msgid "Must use g0 or g1 with g53" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:113 +msgid "Negative argument to sqrt" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:114 +msgid "Negative d word tool radius index used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:115 +msgid "Negative f word used" +msgstr "Użyty ujemny kod F" + +#: src/emc/rs274ngc/rs274ngc_return.hh:116 +msgid "Negative g code used" +msgstr "Użyty ujemny kod G" + +#: src/emc/rs274ngc/rs274ngc_return.hh:117 +msgid "Negative h word used" +msgstr "Użyty ujemny kod H" + +#: src/emc/rs274ngc/rs274ngc_return.hh:118 +msgid "Negative l word used" +msgstr "Użyty ujemny kod L" + +#: src/emc/rs274ngc/rs274ngc_return.hh:119 +msgid "Negative m code used" +msgstr "Użyty ujemny kod M" + +#: src/emc/rs274ngc/rs274ngc_return.hh:120 +msgid "Negative or zero q value used" +msgstr "Użyta ujemna lub zerowa wartość słowa Q" + +#: src/emc/rs274ngc/rs274ngc_return.hh:121 +msgid "Negative p word used" +msgstr "Użyte ujemne słowo P" + +#: src/emc/rs274ngc/rs274ngc_return.hh:122 +msgid "Negative spindle speed used" +msgstr "Użyta ujemna prędkość wrzeciona" + +#: src/emc/rs274ngc/rs274ngc_return.hh:123 +msgid "Negative tool id used" +msgstr "Użyty ujemny numer narzędzia" + +#: src/emc/rs274ngc/rs274ngc_return.hh:124 +msgid "Nested comment found" +msgstr "Znaleziono zagnieżdżony komentarz" + +#: src/emc/rs274ngc/rs274ngc_return.hh:125 +msgid "No characters found in reading real value" +msgstr "Nie znaleziono znaków podczas odczytywania wartości float" + +#: src/emc/rs274ngc/rs274ngc_return.hh:126 +msgid "Non integer value for integer" +msgstr "Nie całkowita wartość dla całkowitego parametru" + +#: src/emc/rs274ngc/rs274ngc_return.hh:127 +msgid "Null missing after newline" +msgstr "Brakuje NULL po znaku nowej linii" + +#: src/emc/rs274ngc/rs274ngc_return.hh:128 +msgid "Parameter file out of order" +msgstr "Brak kolejności pliku parametrów" + +#: src/emc/rs274ngc/rs274ngc_return.hh:129 +msgid "Parameter number out of range" +msgstr "Numer parametru poza zakresem" + +#: src/emc/rs274ngc/rs274ngc_return.hh:130 +msgid "Parameter is readonly" +msgstr "Parametr jest tylko do odczytu" + +#: src/emc/rs274ngc/rs274ngc_return.hh:131 +msgid "Q word missing with g83" +msgstr "Słowo Q użyte bez G83" + +#: src/emc/rs274ngc/rs274ngc_return.hh:132 +msgid "Queue is not empty after probing" +msgstr "Kolejka nie jest pusta po skanowaniu" + +#: src/emc/rs274ngc/rs274ngc_return.hh:133 +msgid "R clearance plane unspecified in cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:134 +msgid "R i j k words all missing for arc" +msgstr "Brak wszystkich słów R I J K dla łuku" + +#: src/emc/rs274ngc/rs274ngc_return.hh:135 +msgid "R less than x in cycle in yz plane" +msgstr "R mniejsze niż X w cyklu w planie YZ" + +#: src/emc/rs274ngc/rs274ngc_return.hh:136 +msgid "R less than y in cycle in xz plane" +msgstr "R mniejsze niż Y w cyklu w planie XZ" + +#: src/emc/rs274ngc/rs274ngc_return.hh:137 +msgid "R less than z in cycle in xy plane" +msgstr "R mniejsze niż Z w cyklu w planie XY" + +#: src/emc/rs274ngc/rs274ngc_return.hh:138 +msgid "R word with no g code that uses it" +msgstr "Słowo R bez kodu G które go używa" + +#: src/emc/rs274ngc/rs274ngc_return.hh:139 +msgid "Slash missing after first atan argument" +msgstr "Brak ukośnika po pierwszym argumencie atan" + +#: src/emc/rs274ngc/rs274ngc_return.hh:140 +msgid "Spindle not turning clockwise in g84" +msgstr "Wrzeciono nie obraca się w prawo w G84" + +#: src/emc/rs274ngc/rs274ngc_return.hh:141 +msgid "Spindle not turning in g86" +msgstr "Wrzeciono nie obraca się w G86" + +#: src/emc/rs274ngc/rs274ngc_return.hh:142 +msgid "Spindle not turning in g87" +msgstr "Wrzeciono nie obraca się w G87" + +#: src/emc/rs274ngc/rs274ngc_return.hh:143 +msgid "Spindle not turning in g88" +msgstr "Wrzeciono nie obraca się w G88" + +#: src/emc/rs274ngc/rs274ngc_return.hh:144 +msgid "Sscanf failed" +msgstr "Sscanf przerwane" + +#: src/emc/rs274ngc/rs274ngc_return.hh:145 +msgid "Start point too close to probe point" +msgstr "Punkt początkowy zbyt blisko punktu pomiaru" + +#: src/emc/rs274ngc/rs274ngc_return.hh:146 +msgid "Too many m codes on line" +msgstr "Za dużo kodów M w jednej linii" + +#: src/emc/rs274ngc/rs274ngc_return.hh:147 +msgid "Pocket max too large" +msgstr "Numer gniazda poza zakresem" + +#: src/emc/rs274ngc/rs274ngc_return.hh:148 +msgid "Tool radius not less than arc radius with comp" +msgstr "" +"Promień narzędzia nie jest mniejszy niż promień łuku z włączoną kompensacją " +"promienia narzędzia" + +#: src/emc/rs274ngc/rs274ngc_return.hh:149 +msgid "Two g codes used from same modal group" +msgstr "Dwa kody G z tej same grupy modalnej" + +#: src/emc/rs274ngc/rs274ngc_return.hh:150 +msgid "Two m codes used from same modal group" +msgstr "Dwa kody M z tej same grupy modalnej" + +#: src/emc/rs274ngc/rs274ngc_return.hh:151 +#, c-format +msgid "Unable to open file <%s>" +msgstr "Nie można otworzyć pliku <%s>" + +#: src/emc/rs274ngc/rs274ngc_return.hh:152 +msgid "Unclosed comment found" +msgstr "Znaleziony niezamknięty komentarz" + +#: src/emc/rs274ngc/rs274ngc_return.hh:153 +msgid "Unclosed expression" +msgstr "Niezamknięte wyrażenie" + +#: src/emc/rs274ngc/rs274ngc_return.hh:154 +msgid "Unknown g code used" +msgstr "Użyty nieznany kod G" + +#: src/emc/rs274ngc/rs274ngc_return.hh:155 +#, fuzzy, c-format +msgid "Unknown m code used: M%d" +msgstr "Użyty nieznany kod M" + +#: src/emc/rs274ngc/rs274ngc_return.hh:156 +msgid "Unknown operation" +msgstr "Nieznana operacja" + +#: src/emc/rs274ngc/rs274ngc_return.hh:157 +msgid "Unknown operation name starting with a" +msgstr "Nieznana nazwa operacji zaczynająca sie na A" + +#: src/emc/rs274ngc/rs274ngc_return.hh:158 +msgid "Unknown operation name starting with m" +msgstr "Nieznana nazwa operacji zaczynająca sie na M" + +#: src/emc/rs274ngc/rs274ngc_return.hh:159 +msgid "Unknown operation name starting with o" +msgstr "Nieznana nazwa operacji zaczynająca sie na O" + +#: src/emc/rs274ngc/rs274ngc_return.hh:160 +msgid "Unknown operation name starting with x" +msgstr "Nieznana nazwa operacji zaczynająca sie na X" + +#: src/emc/rs274ngc/rs274ngc_return.hh:161 +msgid "Unknown word starting with a" +msgstr "Nieznane słowo zaczynające sie na A" + +#: src/emc/rs274ngc/rs274ngc_return.hh:162 +msgid "Unknown word starting with c" +msgstr "Nieznane słowo zaczynające sie na C" + +#: src/emc/rs274ngc/rs274ngc_return.hh:163 +msgid "Unknown word starting with e" +msgstr "Nieznane słowo zaczynające sie na E" + +#: src/emc/rs274ngc/rs274ngc_return.hh:164 +msgid "Unknown word starting with f" +msgstr "Nieznane słowo zaczynające sie na F" + +#: src/emc/rs274ngc/rs274ngc_return.hh:165 +msgid "Unknown word starting with l" +msgstr "Nieznane słowo zaczynające sie na L" + +#: src/emc/rs274ngc/rs274ngc_return.hh:166 +msgid "Unknown word starting with r" +msgstr "Nieznane słowo zaczynające sie na R" + +#: src/emc/rs274ngc/rs274ngc_return.hh:167 +msgid "Unknown word starting with s" +msgstr "Nieznane słowo zaczynające sie na S" + +#: src/emc/rs274ngc/rs274ngc_return.hh:168 +msgid "Unknown word starting with t" +msgstr "Nieznane słowo zaczynające sie na T" + +#: src/emc/rs274ngc/rs274ngc_return.hh:169 +msgid "Unknown word where unary operation could be" +msgstr "Nieznane słowo w miejscu pojedyńczego operatora" + +#: src/emc/rs274ngc/rs274ngc_return.hh:170 +msgid "X and y words missing for arc in xy plane" +msgstr "Brak wartości X i Y dla łuku w planie XY" + +#: src/emc/rs274ngc/rs274ngc_return.hh:171 +msgid "X and z words missing for arc in xz plane" +msgstr "Brak wartości X i Z dla łuku w planie XZ" + +#: src/emc/rs274ngc/rs274ngc_return.hh:172 +msgid "X value unspecified in yz plane canned cycle" +msgstr "Wartość X niezdefiniowana w cyklu w planie YZ" + +#: src/emc/rs274ngc/rs274ngc_return.hh:173 +msgid "Y and z words missing for arc in yz plane" +msgstr "Brakuje wartości Y i Z dla łuku w planie YZ" + +#: src/emc/rs274ngc/rs274ngc_return.hh:174 +msgid "Y value unspecified in xz plane canned cycle" +msgstr "Wartość Y niezdefiniowana w cyklu w planie XZ" + +#: src/emc/rs274ngc/rs274ngc_return.hh:175 +msgid "Z value unspecified in xy plane canned cycle" +msgstr "Wartość Z niezdefiniowana w cyklu w planie XY" + +#: src/emc/rs274ngc/rs274ngc_return.hh:176 +msgid "Zero or negative argument to ln" +msgstr "Argument zerowy lub ujemny dla ln" + +#: src/emc/rs274ngc/rs274ngc_return.hh:177 +msgid "Zero radius arc" +msgstr "Łuk o promieniu zero" + +#: src/emc/rs274ngc/rs274ngc_return.hh:178 +msgid "K word missing with g33/g33.1" +msgstr "Brak słowa K razem z G33/G33.1" + +#: src/emc/rs274ngc/rs274ngc_return.hh:179 +msgid "F word used with a g33/g33.1" +msgstr "Słowo F użyte razem z G33/G33.1" + +#: src/emc/rs274ngc/rs274ngc_return.hh:180 +msgid "Unknown operation name starting with e" +msgstr "Nieznana nazwa działania zaczynającego sie na E" + +#: src/emc/rs274ngc/rs274ngc_return.hh:181 +msgid "Unknown operation name starting with n" +msgstr "Nieznana nazwa działania zaczynającego sie na N" + +#: src/emc/rs274ngc/rs274ngc_return.hh:182 +msgid "Unknown operation name starting with g" +msgstr "Nieznana nazwa działania zaczynającego sie na G" + +#: src/emc/rs274ngc/rs274ngc_return.hh:183 +msgid "Unknown operation name starting with l" +msgstr "Nieznana nazwa działania zaczynającego sie na L" + +#: src/emc/rs274ngc/rs274ngc_return.hh:184 +msgid "Too many subroutine parameters" +msgstr "Za dużo parametrów procedury" + +#: src/emc/rs274ngc/rs274ngc_return.hh:185 +msgid "Too many subroutine levels" +msgstr "Za dużo zagłębienie procedur" + +#: src/emc/rs274ngc/rs274ngc_return.hh:186 +msgid "Bug: call stack underrun" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:187 +msgid "Unknown control command in o word" +msgstr "Nieznane polecenie kontrolne w słowie O" + +#: src/emc/rs274ngc/rs274ngc_return.hh:188 +msgid "Too many oword labels" +msgstr "Za dużo nazw słów O" + +#: src/emc/rs274ngc/rs274ngc_return.hh:189 +msgid "Unknown oword number" +msgstr "Nieznany numer słowa O" + +#: src/emc/rs274ngc/rs274ngc_return.hh:190 +msgid "Nested subroutine definition" +msgstr "Zagnieżdżona definicja procedury" + +#: src/emc/rs274ngc/rs274ngc_return.hh:191 +msgid "Not in subroutine definition" +msgstr "Nie jest w definicji procedury" + +#: src/emc/rs274ngc/rs274ngc_return.hh:192 +msgid "File not open" +msgstr "Plik nie jest otwarty" + +#: src/emc/rs274ngc/rs274ngc_return.hh:193 +#, c-format +msgid "cannot reopen file %s - removed or renamed? (%s)" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:194 +msgid "Need tool prepared -Txx- for toolchange" +msgstr "Potrzeba przygotowanego narzędzia -Txx- do zmiany narzędzia" + +#: src/emc/rs274ngc/rs274ngc_return.hh:195 +msgid "Cannot change planes with cutter radius compensation on" +msgstr "Nie można zmienić planu z włączoną kompensacją promienia narzędzia" + +#: src/emc/rs274ngc/rs274ngc_return.hh:196 +msgid "Cutter radius compensation allowed only in XY, XZ planes" +msgstr "Kompensacja promienia narzędzia dozwolona tylko w planach XY XZ" + +#: src/emc/rs274ngc/rs274ngc_return.hh:197 +msgid "P word missing with G76" +msgstr "Brakuje słowa P razem z G76" + +#: src/emc/rs274ngc/rs274ngc_return.hh:198 +msgid "I J or K words missing with G76" +msgstr "Brakuje słowa I J lub K razem z G76" + +#: src/emc/rs274ngc/rs274ngc_return.hh:199 +msgid "Cannot move rotary axes with G76" +msgstr "Nie można poruszać osiami rotacyjnymi przy G76" + +#: src/emc/rs274ngc/rs274ngc_return.hh:200 +msgid "Multiple e words on one line" +msgstr "Wielokrotne słowo E w jednej linii" + +#: src/emc/rs274ngc/rs274ngc_return.hh:201 +msgid "Named parameter not terminated" +msgstr "Nazwany parametr nie zakończony" + +#: src/emc/rs274ngc/rs274ngc_return.hh:202 +msgid "Out of memory" +msgstr "Brak pamięci" + +#: src/emc/rs274ngc/rs274ngc_return.hh:203 +msgid "S word missing with G96" +msgstr "Brak słowa S razem z G96" + +#: src/emc/rs274ngc/rs274ngc_return.hh:204 +msgid "Queue is not empty after external input" +msgstr "Kolejka nie jest pusta po odczytaniu wejść" + +#: src/emc/rs274ngc/rs274ngc_return.hh:205 +msgid "Can't select analog input with wait type != immediate return" +msgstr "" +"Nie można wybrać analogowego wejścia przy typie oczekiwania różnym od " +"natychmiastowego powrotu" + +#: src/emc/rs274ngc/rs274ngc_return.hh:206 +msgid "Zero timeout with wait type != immediate return" +msgstr "" +"Zerowy czas oczekiwania przy type oczekiwania różnym od natychmiastowego " +"powrotu" + +#: src/emc/rs274ngc/rs274ngc_return.hh:207 +msgid "Invalid to select both a digital and an analog input with M66" +msgstr "Błędne wybranie jednocześnie wejść cyfrowych i analogowych razem z M66" + +#: src/emc/rs274ngc/rs274ngc_return.hh:208 +msgid "Need to have either a valid P or a valid E word with M66" +msgstr "Musi być prawidłowe słowo P lub E razem z M66" + +#: src/emc/rs274ngc/rs274ngc_return.hh:209 +msgid "Q word missing with g73" +msgstr "Brakuje słowa Q razem z G73" + +#: src/emc/rs274ngc/rs274ngc_return.hh:210 +msgid "Digital input selected out of bounds" +msgstr "Wybrane wejście cyfrowe poza zakresem" + +#: src/emc/rs274ngc/rs274ngc_return.hh:211 +msgid "Analog input selected out of bounds" +msgstr "Wybrane wejście analogowe poza zakresem" + +#: src/emc/rs274ngc/rs274ngc_return.hh:212 +msgid "W value unspecified in UV plane canned cycle" +msgstr "Wartość V niezdefiniowana w cyklu w planie UV" + +#: src/emc/rs274ngc/rs274ngc_return.hh:213 +msgid "U value unspecified in VW plane canned cycle" +msgstr "Wartość U niezdefiniowana w cyklu w planie VW" + +#: src/emc/rs274ngc/rs274ngc_return.hh:214 +msgid "V value unspecified in UW plane canned cycle" +msgstr "Wartość V niezdefiniowana w cyklu w planie UW" + +#: src/emc/rs274ngc/rs274ngc_return.hh:215 +msgid "R less than W in cycle in UV plane" +msgstr "R mniejsze niż W w cyklu w planie UV" + +#: src/emc/rs274ngc/rs274ngc_return.hh:216 +msgid "R less than U in cycle in VW plane" +msgstr "R mniejsze niż U w cyklu w planie VW" + +#: src/emc/rs274ngc/rs274ngc_return.hh:217 +msgid "R less than V in cycle in UW plane" +msgstr "R mniejsze niż V w cyklu w planie UW" + +#: src/hal/utils/meter.c:200 #, c-format msgid "ERROR: '%s' is not a valid probe type\n" msgstr "BŁĄD: '%s' nie jest prawidłowym typem\n" -#: src/hal/utils/meter.c:206 +#: src/hal/utils/meter.c:208 #, c-format msgid "ERROR: no pin/signal/parameter name\n" msgstr "BŁĄD: brak nazwy pinu/sygnału/parametru\n" -#: src/hal/utils/meter.c:212 +#: src/hal/utils/meter.c:214 #, c-format msgid "" "ERROR: -s option requires a probe type and a pin/signal/parameter name\n" msgstr "BŁĄD: opcja -s wymaga typu skanowania i nazwę pinu/signału/parametru\n" -#: src/hal/utils/meter.c:238 tcl/tklinuxcnc.tcl:764 +#: src/hal/utils/meter.c:240 tcl/tklinuxcnc.tcl:764 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6431 msgid "Hal Meter" msgstr "Pomiar Hal" -#: src/hal/utils/meter.c:287 +#: src/hal/utils/meter.c:290 msgid "_Select" msgstr "Wybierz" -#: src/hal/utils/meter.c:288 +#: src/hal/utils/meter.c:291 msgid "E_xit" msgstr "Wyjście" -#: src/hal/utils/meter.c:336 src/hal/utils/meter.c:364 +#: src/hal/utils/meter.c:339 src/hal/utils/meter.c:367 msgid "Select Item to Probe" msgstr "Zaznacz element do podglądu" -#: src/hal/utils/meter.c:640 +#: src/hal/utils/meter.c:669 msgid " _Pins " msgstr " _Piny " -#: src/hal/utils/meter.c:641 +#: src/hal/utils/meter.c:670 msgid " _Signals " msgstr " _Sygnały " -#: src/hal/utils/meter.c:642 +#: src/hal/utils/meter.c:671 msgid " Para_meters " msgstr " Para_metry " -#: src/hal/utils/meter.c:685 +#: src/hal/utils/meter.c:714 msgid "_Close" msgstr "Zamknij" @@ -73,84 +1707,86 @@ msgstr "" "Użycie:\n" " halscope [-h] [-i plik_wejscia] [-o plik_wyjscia] [ilość_sampli]\n" -#: src/hal/utils/scope.c:474 src/hal/utils/scope.c:501 +#: src/hal/utils/scope.c:479 src/hal/utils/scope.c:506 msgid "Open Configuration File:" msgstr "Otwórz plik konfiguracyjny:" -#: src/hal/utils/scope.c:535 +#: src/hal/utils/scope.c:540 msgid "_Open Configuration..." msgstr "_Otwórz konfiguracje..." -#: src/hal/utils/scope.c:541 +#: src/hal/utils/scope.c:546 msgid "_Save Configuration..." msgstr "Zapisz konfiguracje..." -#: src/hal/utils/scope.c:550 +#: src/hal/utils/scope.c:555 msgid "O_pen Data File..." msgstr "Otwórz _plik z danymi..." -#: src/hal/utils/scope.c:557 +#: src/hal/utils/scope.c:562 msgid "S_ave Data File..." msgstr "Z_apisz plik danych..." -#: src/hal/utils/scope.c:566 share/axis/tcl/axis.tcl:93 +#: src/hal/utils/scope.c:571 share/axis/tcl/axis.tcl:96 msgid "_Quit" msgstr "Wyjście" -#: src/hal/utils/scope.c:572 +#: src/hal/utils/scope.c:577 msgid "_About Halscope" msgstr "O Halscope" -#: src/hal/utils/scope.c:578 share/axis/tcl/axis.tcl:435 +#: src/hal/utils/scope.c:583 share/axis/tcl/axis.tcl:501 msgid "_File" msgstr "Plik" -#: src/hal/utils/scope.c:582 share/axis/tcl/axis.tcl:447 +#: src/hal/utils/scope.c:587 share/axis/tcl/axis.tcl:517 msgid "_Help" msgstr "Pomoc" -#: src/hal/utils/scope.c:641 +#: src/hal/utils/scope.c:646 msgid "HAL Oscilloscope" msgstr "Oscyloskop HAL" -#: src/hal/utils/scope.c:669 +#: src/hal/utils/scope.c:674 msgid "Horizontal" msgstr "Poziomo" -#: src/hal/utils/scope.c:677 +#: src/hal/utils/scope.c:682 msgid "Selected Channel" msgstr "Wybrany kanał" -#: src/hal/utils/scope.c:683 +#: src/hal/utils/scope.c:688 msgid "Run Mode" msgstr "Tryb" -#: src/hal/utils/scope.c:686 +#: src/hal/utils/scope.c:691 msgid "Trigger" msgstr "Wyzwalacz" -#: src/hal/utils/scope.c:692 +#: src/hal/utils/scope.c:697 msgid "Vertical" msgstr "Pionowo" -#: src/hal/utils/scope.c:700 share/axis/tcl/axis.tcl:135 -#: share/axis/tcl/axis.tcl:1199 +#: src/hal/utils/scope.c:705 share/axis/tcl/axis.tcl:138 +#: share/axis/tcl/axis.tcl:1269 src/emc/usr_intf/gscreen/gscreen.py:3416 +#: src/emc/usr_intf/gscreen/gscreen.py:3417 +#: src/emc/usr_intf/gscreen/gscreen.glade:2614 msgid "Stop" msgstr "Stop" -#: src/hal/utils/scope.c:703 +#: src/hal/utils/scope.c:708 msgid "Normal" msgstr "Normalny" -#: src/hal/utils/scope.c:706 +#: src/hal/utils/scope.c:711 msgid "Single" msgstr "Pojedyńczy" -#: src/hal/utils/scope.c:709 +#: src/hal/utils/scope.c:714 msgid "Roll" msgstr "Przewijaj" -#: src/hal/utils/scope_horiz.c:130 +#: src/hal/utils/scope_horiz.c:130 src/emc/usr_intf/gscreen/gscreen.glade:3419 msgid "Zoom" msgstr "Powiększ" @@ -166,11 +1802,11 @@ msgstr "" "----- Próbek\n" "na ---- KHz" -#: src/hal/utils/scope_horiz.c:459 +#: src/hal/utils/scope_horiz.c:464 msgid "Realtime component not loaded" msgstr "Komponent RT nie załadowany" -#: src/hal/utils/scope_horiz.c:460 +#: src/hal/utils/scope_horiz.c:465 msgid "" "HALSCOPE uses a realtime component called scope_rt'\n" "to sample signals for display. It is not currently loaded\n" @@ -194,11 +1830,11 @@ msgstr "" "lub\n" "Kliknij 'Wyjście' aby zamknąć HALSCOPE" -#: src/hal/utils/scope_horiz.c:495 +#: src/hal/utils/scope_horiz.c:536 msgid "Realtime function not linked" msgstr "Funkcja RT nie podłączona" -#: src/hal/utils/scope_horiz.c:496 +#: src/hal/utils/scope_horiz.c:537 msgid "" "The HALSCOPE realtime sampling function\n" "must be called from a HAL thread in to\n" @@ -220,11 +1856,11 @@ msgstr "" "lub\n" "Kliknij 'Wyjście' aby zamknąć HALSCOPE" -#: src/hal/utils/scope_horiz.c:503 +#: src/hal/utils/scope_horiz.c:544 msgid "Select Sample Rate" msgstr "Wybierz częstotliwość próbkowania" -#: src/hal/utils/scope_horiz.c:504 +#: src/hal/utils/scope_horiz.c:545 msgid "" "Select a thread name and multiplier then click 'OK'\n" "or\n" @@ -234,95 +1870,91 @@ msgstr "" "lub\n" "Kliknij 'Wyjście' aby zamknąć HALSCOPE" -#: src/hal/utils/scope_horiz.c:526 +#: src/hal/utils/scope_horiz.c:567 msgid "Thread:" msgstr "Wątek:" -#: src/hal/utils/scope_horiz.c:534 +#: src/hal/utils/scope_horiz.c:575 msgid "Sample Period:" msgstr "Okres próbki:" -#: src/hal/utils/scope_horiz.c:542 +#: src/hal/utils/scope_horiz.c:583 msgid "Sample Rate:" msgstr "Częstotliwość próbek:" -#: src/hal/utils/scope_horiz.c:558 src/emc/usr_intf/touchy/mdi.py:78 +#: src/hal/utils/scope_horiz.c:599 src/emc/usr_intf/touchy/mdi.py:79 +#: src/emc/usr_intf/gscreen/mdi.py:78 msgid "Thread" msgstr "Wątek" -#: src/hal/utils/scope_horiz.c:559 +#: src/hal/utils/scope_horiz.c:600 msgid "Period" msgstr "Okres" -#: src/hal/utils/scope_horiz.c:619 +#: src/hal/utils/scope_horiz.c:638 msgid "Multiplier:" msgstr "Mnożnik:" -#: src/hal/utils/scope_horiz.c:636 +#: src/hal/utils/scope_horiz.c:655 msgid "Record Length" msgstr "Długość pomiaru" -#: src/hal/utils/scope_horiz.c:639 +#: src/hal/utils/scope_horiz.c:658 #, c-format msgid "%5d samples (1 channel)" msgstr "%5d próbek (1 kanał)" -#: src/hal/utils/scope_horiz.c:641 +#: src/hal/utils/scope_horiz.c:660 #, c-format msgid "%5d samples (2 channels)" msgstr "%5d próbek (2 kanały)" -#: src/hal/utils/scope_horiz.c:645 +#: src/hal/utils/scope_horiz.c:664 #, c-format msgid "%5d samples (4 channels)" msgstr "%5d próbek (4 kanały)" -#: src/hal/utils/scope_horiz.c:649 +#: src/hal/utils/scope_horiz.c:668 #, c-format msgid "%5d samples (8 channels)" msgstr "%5d próbek (8 kanałów)" -#: src/hal/utils/scope_horiz.c:653 +#: src/hal/utils/scope_horiz.c:672 #, c-format msgid "%5d samples (16 channels)" msgstr "%5d próbek (16 kanałów)" -#: src/hal/utils/scope_horiz.c:708 src/hal/utils/scope_horiz.c:754 -#: src/hal/utils/scope_horiz.c:966 src/hal/utils/scope_vert.c:761 -#: src/hal/utils/scope_vert.c:853 tcl/bin/emccalib.tcl:227 +#: src/hal/utils/scope_horiz.c:727 src/hal/utils/scope_horiz.c:773 +#: src/hal/utils/scope_horiz.c:985 src/hal/utils/scope_vert.c:771 +#: src/hal/utils/scope_vert.c:863 tcl/bin/emccalib.tcl:232 #: tcl/bin/genedit.tcl:180 tcl/bin/genedit.tcl:450 tcl/bin/halconfig.tcl:682 -#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:257 -#: tcl/bin/pickconfig.tcl:479 tcl/bin/pickconfig.tcl:506 tcl/mini.tcl:1456 +#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:387 +#: tcl/bin/pickconfig.tcl:749 tcl/bin/pickconfig.tcl:799 tcl/mini.tcl:1456 #: tcl/mini.tcl:2937 tcl/tklinuxcnc.tcl:160 tcl/tklinuxcnc.tcl:245 #: tcl/tklinuxcnc.tcl:419 tcl/tklinuxcnc.tcl:1338 tcl/tklinuxcnc.tcl:1407 #: tcl/tklinuxcnc.tcl:1438 tcl/tklinuxcnc.tcl:1469 tcl/tklinuxcnc.tcl:2017 #: tcl/tklinuxcnc.tcl:2036 tcl/tklinuxcnc.tcl:2055 tcl/tklinuxcnc.tcl:2102 -#: src/emc/usr_intf/axis/scripts/axis.py:1077 -#: src/emc/usr_intf/axis/scripts/axis.py:1141 -#: src/emc/usr_intf/axis/scripts/axis.py:1458 -#: src/emc/usr_intf/axis/scripts/axis.py:2477 -#: src/emc/usr_intf/axis/scripts/axis.py:3336 +#: src/emc/usr_intf/axis/scripts/axis.py:1106 +#: src/emc/usr_intf/axis/scripts/axis.py:1173 +#: src/emc/usr_intf/axis/scripts/axis.py:1508 +#: src/emc/usr_intf/axis/scripts/axis.py:2672 +#: src/emc/usr_intf/axis/scripts/axis.py:3599 #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:718 -#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1720 -#: share/axis/tcl/axis.tcl:1757 tcl/bin/pickconfig.tcl:483 -#: tcl/bin/pickconfig.tcl:510 src/emc/usr_intf/axis/scripts/axis.py:1073 -#: src/emc/usr_intf/axis/scripts/axis.py:1133 -#: src/emc/usr_intf/axis/scripts/axis.py:1449 -#: src/emc/usr_intf/axis/scripts/axis.py:2468 -#: src/emc/usr_intf/axis/scripts/axis.py:3324 +#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1828 +#: share/axis/tcl/axis.tcl:1865 msgid "OK" msgstr "OK" -#: src/hal/utils/scope_horiz.c:713 src/hal/utils/scope_horiz.c:754 -#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 +#: src/hal/utils/scope_horiz.c:732 src/hal/utils/scope_horiz.c:773 +#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 tcl/tooledit.tcl:468 msgid "Quit" msgstr "Wyjście" -#: src/hal/utils/scope_horiz.c:745 +#: src/hal/utils/scope_horiz.c:764 msgid "Realtime thread(s) not running" msgstr "Wątek(ki) czasu rzeczywistego nie są uruchomione" -#: src/hal/utils/scope_horiz.c:746 +#: src/hal/utils/scope_horiz.c:765 msgid "" "HALSCOPE uses code in a realtime HAL thread to sample\n" "signals for display. The HAL thread(s) are not running.\n" @@ -345,15 +1977,15 @@ msgstr "" "lub\n" "Kliknij 'Wyjście' aby zamknąć HALSCOPE" -#: src/hal/utils/scope_horiz.c:779 +#: src/hal/utils/scope_horiz.c:798 msgid "Pick log file to write to:" msgstr "Wybierz plik do zapisu logowania:" -#: src/hal/utils/scope_horiz.c:962 +#: src/hal/utils/scope_horiz.c:981 msgid "Not enough channels" msgstr "Niewystarczająca ilość kanałów" -#: src/hal/utils/scope_horiz.c:963 +#: src/hal/utils/scope_horiz.c:982 msgid "" "This record length cannot handle the channels\n" "that are currently enabled. Pick a shorter\n" @@ -363,7 +1995,7 @@ msgstr "" "które są obecnie włączone. Wybierz krótszą długość\n" "zapisu która obsługuje więcej kanałów." -#: src/hal/utils/scope_horiz.c:1051 +#: src/hal/utils/scope_horiz.c:1070 #, c-format msgid "" "%s\n" @@ -372,7 +2004,7 @@ msgstr "" "%s\n" "na podziałkę" -#: src/hal/utils/scope_horiz.c:1066 +#: src/hal/utils/scope_horiz.c:1085 #, c-format msgid "" "%s samples\n" @@ -381,51 +2013,45 @@ msgstr "" "%s próbek\n" "na %s" -#: src/hal/utils/scope_horiz.c:1170 +#: src/hal/utils/scope_horiz.c:1189 msgid "nSec" msgstr "nSek" -#: src/hal/utils/scope_horiz.c:1173 +#: src/hal/utils/scope_horiz.c:1192 msgid "uSec" msgstr "uSek" -#: src/hal/utils/scope_horiz.c:1177 +#: src/hal/utils/scope_horiz.c:1196 msgid "mSec" msgstr "mSek" -#: src/hal/utils/scope_horiz.c:1181 -#: src/emc/usr_intf/pncconf/pncconf.glade:1953 -#: src/emc/usr_intf/pncconf/pncconf.glade:2825 -#: src/emc/usr_intf/pncconf/pncconf.glade:3706 -#: src/emc/usr_intf/pncconf/pncconf.glade:4587 -#: src/emc/usr_intf/pncconf/pncconf.glade:2627 -#: src/emc/usr_intf/pncconf/pncconf.glade:3525 -#: src/emc/usr_intf/pncconf/pncconf.glade:4406 -#: src/emc/usr_intf/pncconf/pncconf.glade:5287 +#: src/hal/utils/scope_horiz.c:1200 src/emc/usr_intf/pncconf/pncconf.glade:2635 +#: src/emc/usr_intf/pncconf/pncconf.glade:3533 +#: src/emc/usr_intf/pncconf/pncconf.glade:4414 +#: src/emc/usr_intf/pncconf/pncconf.glade:5295 msgid "Sec" msgstr "Sek" -#: src/hal/utils/scope_horiz.c:1198 -#: src/emc/usr_intf/stepconf/stepconf.glade:3664 -#: src/emc/usr_intf/stepconf/stepconf.glade:4040 -#: src/emc/usr_intf/pncconf/pncconf.glade:8268 -#: src/emc/usr_intf/pncconf/pncconf.glade:8281 -#: src/emc/usr_intf/pncconf/pncconf.glade:8458 -#: src/emc/usr_intf/pncconf/pncconf.glade:8016 -#: src/emc/usr_intf/pncconf/pncconf.glade:8193 -#: src/emc/usr_intf/pncconf/pncconf.glade:8205 +#: src/hal/utils/scope_horiz.c:1217 src/emc/usr_intf/stepconf/spindle.glade:301 +#: src/emc/usr_intf/stepconf/axisx.glade:693 +#: src/emc/usr_intf/stepconf/axisy.glade:679 +#: src/emc/usr_intf/stepconf/axisz.glade:679 +#: src/emc/usr_intf/stepconf/axisa.glade:693 +#: src/emc/usr_intf/pncconf/pncconf.glade:8024 +#: src/emc/usr_intf/pncconf/pncconf.glade:8201 +#: src/emc/usr_intf/pncconf/pncconf.glade:8213 msgid "Hz" msgstr "" -#: src/hal/utils/scope_horiz.c:1201 +#: src/hal/utils/scope_horiz.c:1220 msgid "KHz" msgstr "" -#: src/hal/utils/scope_horiz.c:1205 +#: src/hal/utils/scope_horiz.c:1224 msgid "Mhz" msgstr "" -#: src/hal/utils/scope_vert.c:403 src/hal/utils/scope_vert.c:1258 +#: src/hal/utils/scope_vert.c:413 src/hal/utils/scope_vert.c:1303 #, c-format msgid "" "Offset\n" @@ -434,29 +2060,28 @@ msgstr "" "Przesunięcie\n" "%s" -#: src/hal/utils/scope_vert.c:618 +#: src/hal/utils/scope_vert.c:628 msgid "Gain" msgstr "Wzmoc" -#: src/hal/utils/scope_vert.c:630 src/hal/utils/scope_trig.c:252 +#: src/hal/utils/scope_vert.c:640 src/hal/utils/scope_trig.c:272 msgid "Pos" msgstr "Poz" -#: src/hal/utils/scope_vert.c:644 tcl/ngcgui_ttt.tcl:214 -#: src/emc/usr_intf/pncconf/pncconf.glade:57147 -#: src/emc/usr_intf/pncconf/pncconf.glade:64264 +#: src/hal/utils/scope_vert.c:654 tcl/ngcgui_ttt.tcl:214 +#: src/emc/usr_intf/pncconf/pncconf.glade:64273 msgid "Scale" msgstr "Skala" -#: src/hal/utils/scope_vert.c:657 +#: src/hal/utils/scope_vert.c:667 msgid "Chan Off" msgstr "KAN Wył" -#: src/hal/utils/scope_vert.c:713 +#: src/hal/utils/scope_vert.c:723 msgid "Set Offset" msgstr "Ustaw Przesunięcie" -#: src/hal/utils/scope_vert.c:714 +#: src/hal/utils/scope_vert.c:724 #, c-format msgid "" "Set the vertical offset\n" @@ -465,33 +2090,33 @@ msgstr "" "Ustaw pionowe przesunięcie dla\n" "kanału %d." -#: src/hal/utils/scope_vert.c:734 +#: src/hal/utils/scope_vert.c:744 msgid "AC Coupled" msgstr "Centruj wykres" -#: src/hal/utils/scope_vert.c:769 src/hal/utils/scope_vert.c:1171 -#: src/hal/utils/scope_trig.c:367 tcl/bin/emccalib.tcl:229 +#: src/hal/utils/scope_vert.c:779 src/hal/utils/scope_vert.c:1215 +#: src/hal/utils/scope_trig.c:387 tcl/bin/emccalib.tcl:234 #: tcl/bin/genedit.tcl:294 tcl/bin/halconfig.tcl:103 tcl/bin/halconfig.tcl:684 -#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:260 -#: tcl/bin/pickconfig.tcl:369 tcl/mini.tcl:1457 tcl/mini.tcl:2938 +#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:390 +#: tcl/bin/pickconfig.tcl:567 tcl/mini.tcl:1457 tcl/mini.tcl:2938 #: tcl/mini.tcl:3110 tcl/tklinuxcnc.tcl:162 tcl/tklinuxcnc.tcl:213 #: tcl/tklinuxcnc.tcl:420 tcl/tklinuxcnc.tcl:1339 tcl/tklinuxcnc.tcl:1408 #: tcl/tklinuxcnc.tcl:1439 tcl/tklinuxcnc.tcl:1470 tcl/tklinuxcnc.tcl:2103 -#: src/emc/usr_intf/axis/scripts/axis.py:1404 -#: src/emc/usr_intf/axis/scripts/axis.py:1459 -#: src/emc/usr_intf/axis/scripts/axis.py:1646 +#: src/emc/usr_intf/axis/scripts/axis.py:1453 +#: src/emc/usr_intf/axis/scripts/axis.py:1509 +#: src/emc/usr_intf/axis/scripts/axis.py:1699 +#: src/emc/usr_intf/axis/scripts/axis.py:2108 #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:720 -#: src/emc/usr_intf/axis/scripts/axis.py:1395 -#: src/emc/usr_intf/axis/scripts/axis.py:1450 -#: src/emc/usr_intf/axis/scripts/axis.py:1637 +#: src/emc/usr_intf/stepconf/main_page.glade:467 +#: src/emc/usr_intf/gscreen/gscreen.glade:3986 msgid "Cancel" msgstr "Anuluj" -#: src/hal/utils/scope_vert.c:849 +#: src/hal/utils/scope_vert.c:859 msgid "Too many channels" msgstr "Zbyt wiele kanałów" -#: src/hal/utils/scope_vert.c:850 +#: src/hal/utils/scope_vert.c:860 msgid "" "You cannot add another channel.\n" "\n" @@ -503,11 +2128,11 @@ msgstr "" "Włącz większą ilość kanałów, lub krótszą\n" "długość zapisu aby zwiększyć ilość kanałów" -#: src/hal/utils/scope_vert.c:1026 +#: src/hal/utils/scope_vert.c:1074 msgid "Select Channel Source" msgstr "Wybierz źródło kanału" -#: src/hal/utils/scope_vert.c:1027 +#: src/hal/utils/scope_vert.c:1075 #, c-format msgid "" "Select a pin, signal, or parameter\n" @@ -516,15 +2141,15 @@ msgstr "" "Wybierz pin, sygnał, parametr\n" "jako źródło dla kanału %d." -#: src/hal/utils/scope_vert.c:1059 +#: src/hal/utils/scope_vert.c:1107 msgid "Pins" msgstr "Piny" -#: src/hal/utils/scope_vert.c:1060 +#: src/hal/utils/scope_vert.c:1108 msgid "Signals" msgstr "Sygnały" -#: src/hal/utils/scope_vert.c:1061 +#: src/hal/utils/scope_vert.c:1109 msgid "Parameters" msgstr "Parametry" @@ -533,12 +2158,12 @@ msgstr "Parametry" msgid "Falling" msgstr "Opadanie" -#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:275 +#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:295 #, c-format msgid "Rising" msgstr "Wzrastanie" -#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:283 +#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:303 msgid "" "Source\n" "None" @@ -555,40 +2180,40 @@ msgstr "" "Źródło\n" "KAN %2d" -#: src/hal/utils/scope_trig.c:199 tcl/tklinuxcnc.tcl:827 +#: src/hal/utils/scope_trig.c:219 tcl/tklinuxcnc.tcl:827 #: src/emc/usr_intf/touchy/touchy.glade:2469 msgid "Auto" msgstr "Auto" -#: src/hal/utils/scope_trig.c:201 +#: src/hal/utils/scope_trig.c:221 msgid "Force" msgstr "Wymuś" -#: src/hal/utils/scope_trig.c:235 src/hal/utils/scope_trig.c:269 +#: src/hal/utils/scope_trig.c:255 src/hal/utils/scope_trig.c:289 msgid "Level" msgstr "Poziom" -#: src/hal/utils/scope_trig.c:303 +#: src/hal/utils/scope_trig.c:323 msgid "Trigger Source" msgstr "Źródło wyzwalacza" -#: src/hal/utils/scope_trig.c:304 +#: src/hal/utils/scope_trig.c:324 msgid "Select a channel to use for triggering." msgstr "Wybierz kanał używany do wyzwalania." -#: src/hal/utils/scope_trig.c:327 +#: src/hal/utils/scope_trig.c:347 msgid "Chan" msgstr "KAN" -#: src/hal/utils/scope_trig.c:328 +#: src/hal/utils/scope_trig.c:348 msgid "Source" msgstr "Źródło" -#: src/emc/motion/control.c:261 +#: src/emc/motion/control.c:270 msgid "Unexpected realtime delay: check dmesg for details." msgstr "Niespodziewane zachwianie czasu rzeczywistego: szczegóły w dmesg." -#: src/emc/motion/control.c:263 +#: src/emc/motion/control.c:272 #, c-format msgid "" "\n" @@ -601,7 +2226,7 @@ msgstr "" "%ld, %ld, %ld, %ld, i %ld\n" "cykli zegara między wywołaniami kontrolera ruchu.\n" -#: src/emc/motion/control.c:268 +#: src/emc/motion/control.c:277 #, c-format msgid "" "This time, there were %ld which is so anomalously\n" @@ -616,300 +2241,314 @@ msgstr "" "Przez resztę tego uruchomienia EMC ten komunikat nie będzie wyświetlany.\n" "\n" -#: src/emc/motion/control.c:384 +#: src/emc/motion/control.c:394 msgid "G38.4 move finished without breaking contact." msgstr "Ruch G38.4 zakończony bez utraty kontaktu z czujnikiem." -#: src/emc/motion/control.c:387 +#: src/emc/motion/control.c:397 msgid "G38.2 move finished without making contact." msgstr "Ruch G38.2 zakończony bez kontaktu z czujnikiem." -#: src/emc/motion/control.c:401 +#: src/emc/motion/control.c:412 msgid "Probe tripped during non-probe MDI command." msgstr "" -#: src/emc/motion/control.c:429 +#: src/emc/motion/control.c:440 msgid "Probe tripped during homing motion." msgstr "" -#: src/emc/motion/control.c:433 +#: src/emc/motion/control.c:444 msgid "Probe tripped during a jog." msgstr "" -#: src/emc/motion/control.c:578 +#: src/emc/motion/control.c:622 +msgid "can't add coordinated return move" +msgstr "" + +#: src/emc/motion/control.c:663 +msgid "can't add linear coordinated jog move" +msgstr "" + +#: src/emc/motion/control.c:817 +#, c-format msgid "fault %d during orient in progress" msgstr "" -#: src/emc/motion/control.c:718 src/emc/motion/control.c:697 +#: src/emc/motion/control.c:957 msgid "motion stopped by enable input" msgstr "" -#: src/emc/motion/control.c:720 +#: src/emc/motion/control.c:980 #, c-format msgid "joint %d on limit switch error" msgstr "napęd %d na krańcówce awaryjnej" -#: src/emc/motion/control.c:732 +#: src/emc/motion/control.c:992 #, c-format msgid "joint %d amplifier fault" msgstr "błąd sterownika w napędzie %d" -#: src/emc/motion/control.c:741 +#: src/emc/motion/control.c:1001 #, c-format msgid "joint %d following error" msgstr "błąd pozycji w napędzie %d" -#: src/emc/motion/control.c:1444 src/emc/motion/control.c:1423 +#: src/emc/motion/control.c:1687 #, c-format msgid "Exceeded positive soft limit on joint %d" msgstr "" -#: src/emc/motion/control.c:1449 src/emc/motion/control.c:1428 +#: src/emc/motion/control.c:1692 #, c-format msgid "Exceeded negative soft limit on joint %d" msgstr "" -#: src/emc/motion/command.c:159 +#: src/emc/motion/command.c:163 #, c-format msgid "Can't jog invalid joint number %d." msgstr "" -#: src/emc/motion/command.c:163 +#: src/emc/motion/command.c:167 #, c-format msgid "Can't jog joint %d further past max hard limit." msgstr "" -#: src/emc/motion/command.c:168 +#: src/emc/motion/command.c:172 #, c-format msgid "Can't jog joint %d further past min hard limit." msgstr "" -#: src/emc/motion/command.c:174 +#: src/emc/motion/command.c:178 #, c-format msgid "Can't jog joint %d further past max soft limit." msgstr "" -#: src/emc/motion/command.c:179 +#: src/emc/motion/command.c:183 #, c-format msgid "Can't jog joint %d further past min soft limit." msgstr "" -#: src/emc/motion/command.c:237 +#: src/emc/motion/command.c:243 #, c-format msgid "%s move on line %d would exceed joint %d's positive limit" msgstr "" -#: src/emc/motion/command.c:240 -#, c-format -msgid "%s move in MDI would exceed joint %d's positive limit" -msgstr "" - -#: src/emc/motion/command.c:247 -#, c-format -msgid "%s move on line %d would exceed joint %d's negative limit" -msgstr "" - #: src/emc/motion/command.c:250 #, c-format -msgid "%s move in MDI would exceed joint %d's negative limit" +msgid "%s move on line %d would exceed joint %d's negative limit" msgstr "" -#: src/emc/motion/command.c:500 +#: src/emc/motion/command.c:535 msgid "all joints must be homed before going into coordinated mode" msgstr "" -#: src/emc/motion/command.c:521 +#: src/emc/motion/command.c:556 msgid "all joints must be homed before going into teleop mode" msgstr "" -#: src/emc/motion/command.c:675 src/emc/motion/command.c:741 -#: src/emc/motion/command.c:814 +#: src/emc/motion/command.c:710 src/emc/motion/command.c:776 +#: src/emc/motion/command.c:849 msgid "Can't jog joint in coordinated mode." msgstr "" -#: src/emc/motion/command.c:680 src/emc/motion/command.c:746 -#: src/emc/motion/command.c:819 +#: src/emc/motion/command.c:715 src/emc/motion/command.c:781 +#: src/emc/motion/command.c:854 msgid "Can't jog joint when not enabled." msgstr "" -#: src/emc/motion/command.c:685 src/emc/motion/command.c:824 +#: src/emc/motion/command.c:720 src/emc/motion/command.c:859 msgid "Can't jog any joints while homing." msgstr "Nie można poruszać żadnym napędem podczas bazowania" -#: src/emc/motion/command.c:751 +#: src/emc/motion/command.c:786 msgid "Can't jog any joint while homing." msgstr "" -#: src/emc/motion/command.c:881 +#: src/emc/motion/command.c:918 msgid "need to be enabled, in coord mode for linear move" msgstr "" -#: src/emc/motion/command.c:891 +#: src/emc/motion/command.c:928 msgid "can't do linear move with limits exceeded" msgstr "" -#: src/emc/motion/command.c:910 -msgid "can't add linear move" +#: src/emc/motion/command.c:954 +#, c-format +msgid "can't add linear move at line %d, error code %d" msgstr "" -#: src/emc/motion/command.c:930 +#: src/emc/motion/command.c:982 msgid "need to be enabled, in coord mode for circular move" msgstr "" -#: src/emc/motion/command.c:940 +#: src/emc/motion/command.c:993 msgid "can't do circular move with limits exceeded" msgstr "" -#: src/emc/motion/command.c:958 -msgid "can't add circular move" +#: src/emc/motion/command.c:1015 +#, c-format +msgid "can't add circular move at line %d, error code %d" +msgstr "" + +#: src/emc/motion/command.c:1114 +msgid "MOTION: can't STEP while jogging" +msgstr "" + +#: src/emc/motion/command.c:1117 +msgid "MOTION: can't STEP while in return move" msgstr "" -#: src/emc/motion/command.c:1048 -msgid "MOTION: can't STEP while already executing" +#: src/emc/motion/command.c:1127 +#, c-format +msgid "MOTION: STEP while in state %d" msgstr "" -#: src/emc/motion/command.c:1140 +#: src/emc/motion/command.c:1229 msgid "can't enable motion, enable input is false" msgstr "" -#: src/emc/motion/command.c:1213 +#: src/emc/motion/command.c:1302 msgid "must be in joint mode to home" msgstr "musi być tryb napędów aby zbazować" -#: src/emc/motion/command.c:1224 src/emc/motion/command.c:1235 +#: src/emc/motion/command.c:1313 src/emc/motion/command.c:1324 msgid "homing sequence already in progress" msgstr "sekwencja bazowania jest w toku" -#: src/emc/motion/command.c:1233 +#: src/emc/motion/command.c:1322 msgid "homing already in progress" msgstr "bazowanie jest w toku" -#: src/emc/motion/command.c:1263 +#: src/emc/motion/command.c:1352 msgid "must be in joint mode or disabled to unhome" msgstr "musi być tryb napędów lub wyłączony aby odbazować" -#: src/emc/motion/command.c:1275 src/emc/motion/command.c:1298 +#: src/emc/motion/command.c:1364 src/emc/motion/command.c:1387 #, c-format msgid "Cannot unhome while homing, joint %d" msgstr "Nie mogę odbazować w czasie bazowania napędu %d" -#: src/emc/motion/command.c:1279 src/emc/motion/command.c:1302 +#: src/emc/motion/command.c:1368 src/emc/motion/command.c:1391 #, c-format msgid "Cannot unhome while moving, joint %d" msgstr "Nie mogę odbazować w czasie poruszania napędu %d" -#: src/emc/motion/command.c:1307 +#: src/emc/motion/command.c:1396 #, c-format msgid "Cannot unhome inactive joint %d" msgstr "Nie mogę odbazować nieaktywnego napędu %d" -#: src/emc/motion/command.c:1311 +#: src/emc/motion/command.c:1400 #, c-format msgid "Cannot unhome invalid joint %d (max %d)" msgstr "Nie mogę odbazować nieprawidłowgo napędu %d (maks. %d)" -#: src/emc/motion/command.c:1338 +#: src/emc/motion/command.c:1427 msgid "need to be enabled, in coord mode for probe move" msgstr "" -#: src/emc/motion/command.c:1348 +#: src/emc/motion/command.c:1437 msgid "can't do probe move with limits exceeded" msgstr "" -#: src/emc/motion/command.c:1362 +#: src/emc/motion/command.c:1451 msgid "Probe is already clear when starting G38.4 or G38.5 move" msgstr "" -#: src/emc/motion/command.c:1364 +#: src/emc/motion/command.c:1453 msgid "Probe is already tripped when starting G38.2 or G38.3 move" msgstr "" -#: src/emc/motion/command.c:1376 +#: src/emc/motion/command.c:1473 msgid "can't add probe move" msgstr "" -#: src/emc/motion/command.c:1400 +#: src/emc/motion/command.c:1498 msgid "need to be enabled, in coord mode for rigid tap move" msgstr "" -#: src/emc/motion/command.c:1410 +#: src/emc/motion/command.c:1509 msgid "can't do rigid tap move with limits exceeded" msgstr "" -#: src/emc/motion/command.c:1421 +#: src/emc/motion/command.c:1526 msgid "can't add rigid tap move" msgstr "" -#: src/emc/motion/command.c:1435 +#: src/emc/motion/command.c:1541 msgid "need to be enabled, in teleop mode for teleop move" msgstr "" -#: src/emc/motion/command.c:1605 src/emc/motion/command.c:1556 +#: src/emc/motion/command.c:1710 #, c-format msgid "joint %d: too many compensation entries" msgstr "" -#: src/emc/motion/command.c:1611 src/emc/motion/command.c:1562 +#: src/emc/motion/command.c:1716 #, c-format msgid "joint %d: compensation values must increase" msgstr "" -#: src/emc/motion/command.c:1640 src/emc/motion/command.c:1591 +#: src/emc/motion/command.c:1745 #, c-format msgid "unrecognized command %d" msgstr "" -#: src/emc/motion/motion.c:185 +#: src/emc/motion/motion.c:212 msgid "MOTION: hal_init() failed\n" msgstr "" -#: src/emc/motion/motion.c:190 +#: src/emc/motion/motion.c:217 #, c-format msgid "MOTION: num_joints is %d, must be between 1 and %d\n" msgstr "" -#: src/emc/motion/motion.c:197 +#: src/emc/motion/motion.c:224 #, c-format msgid "MOTION: num_dio is %d, must be between 1 and %d\n" msgstr "" -#: src/emc/motion/motion.c:204 +#: src/emc/motion/motion.c:231 #, c-format msgid "MOTION: num_aio is %d, must be between 1 and %d\n" msgstr "" -#: src/emc/motion/motion.c:212 +#: src/emc/motion/motion.c:239 msgid "MOTION: init_hal_io() failed\n" msgstr "" -#: src/emc/motion/motion.c:221 +#: src/emc/motion/motion.c:248 msgid "MOTION: init_comm_buffers() failed\n" msgstr "" -#: src/emc/motion/motion.c:229 +#: src/emc/motion/motion.c:256 msgid "MOTION: init_threads() failed\n" msgstr "" -#: src/emc/motion/motion.c:254 +#: src/emc/motion/motion.c:281 #, c-format msgid "MOTION: hal_stop_threads() failed, returned %d\n" msgstr "" -#: src/emc/motion/motion.c:260 +#: src/emc/motion/motion.c:294 #, c-format msgid "MOTION: rtapi_shmem_delete() failed, returned %d\n" msgstr "" -#: src/emc/motion/motion.c:266 +#: src/emc/motion/motion.c:300 #, c-format msgid "MOTION: hal_exit() failed, returned %d\n" msgstr "" -#: src/emc/motion/motion.c:289 +#: src/emc/motion/motion.c:323 msgid "MOTION: emcmot_hal_data malloc failed\n" msgstr "" -#: src/emc/motion/motion.c:597 src/emc/motion/motion.c:585 +#: src/emc/motion/motion.c:331 +msgid "MOTION: joints malloc failed\n" +msgstr "" + +#: src/emc/motion/motion.c:695 #, c-format msgid "MOTION: joint %d pin/param export failed\n" msgstr "" @@ -961,7 +2600,8 @@ msgid "unknown state '%d' during homing" msgstr "" #: tcl/bin/emccalib.tcl:80 -msgid "LinuxCNC Servo Axis Calibration" +#, fuzzy +msgid "Machinekit Servo Axis Calibration" msgstr "LinuxCNC Kalibracja osi Servo" #: tcl/bin/emccalib.tcl:90 @@ -970,43 +2610,42 @@ msgstr "Zapisz do pliku" #: tcl/bin/emccalib.tcl:106 tcl/bin/genedit.tcl:77 tcl/bin/halconfig.tcl:151 #: tcl/bin/halshow.tcl:85 tcl/mini.tcl:2516 tcl/tklinuxcnc.tcl:719 -#: tcl/ngcgui.tcl:549 tcl/bin/halshow.tcl:86 +#: tcl/ngcgui.tcl:489 msgid "File" msgstr "Plik" -#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:231 tcl/bin/halconfig.tcl:153 +#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:236 tcl/bin/halconfig.tcl:153 #: tcl/mini.tcl:3558 src/emc/usr_intf/touchy/touchy.glade:2420 msgid "Refresh" msgstr "Odśwież" #: tcl/bin/emccalib.tcl:110 tcl/bin/genedit.tcl:82 tcl/bin/halconfig.tcl:155 -#: tcl/mini.tcl:2535 +#: tcl/mini.tcl:2535 src/emc/usr_intf/axis/scripts/axis.py:2107 msgid "Save" msgstr "Zapisz" -#: tcl/bin/emccalib.tcl:159 tcl/bin/halconfig.tcl:623 +#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:623 #, tcl-format msgid "Tune %d" msgstr "Strojenie %d" -#: tcl/bin/emccalib.tcl:160 tcl/bin/halconfig.tcl:628 +#: tcl/bin/emccalib.tcl:162 tcl/bin/halconfig.tcl:628 msgid "INI Name" msgstr "Nazwa INI" -#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:629 +#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:629 msgid "HAL's Value" msgstr "Wartość HAL" -#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:631 +#: tcl/bin/emccalib.tcl:165 tcl/bin/halconfig.tcl:631 msgid "Next Value" msgstr "Następna wartość" -#: tcl/bin/emccalib.tcl:225 tcl/bin/halconfig.tcl:680 -#: tcl/bin/halconfig.tcl:731 +#: tcl/bin/emccalib.tcl:230 tcl/bin/halconfig.tcl:680 tcl/bin/halconfig.tcl:731 msgid "Test" msgstr "Testuj" -#: tcl/bin/emccalib.tcl:358 tcl/bin/halconfig.tcl:883 +#: tcl/bin/emccalib.tcl:388 tcl/bin/halconfig.tcl:883 #, tcl-format msgid "" "The HAL parameter \n" @@ -1019,7 +2658,7 @@ msgstr "" " został zmodyfikowany. \n" " Na pewno wyjść?" -#: tcl/bin/emccalib.tcl:383 tcl/bin/halconfig.tcl:1170 +#: tcl/bin/emccalib.tcl:413 tcl/bin/halconfig.tcl:1170 msgid "" "Not permitted to save here.\n" "\n" @@ -1029,10 +2668,9 @@ msgstr "" "\n" " Musisz skopiować konfigurację do katalogu domowego i tam modyfikować." -#: tcl/bin/emccalib.tcl:457 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 -#: tcl/bin/pickconfig.tcl:544 tcl/bin/pickconfig.tcl:555 +#: tcl/bin/emccalib.tcl:487 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 +#: tcl/bin/pickconfig.tcl:843 tcl/bin/pickconfig.tcl:854 #: tcl/scripts/Set_Coordinates.tcl:205 tcl/scripts/Set_Coordinates.tcl:228 -#: tcl/bin/pickconfig.tcl:548 tcl/bin/pickconfig.tcl:559 #, tcl-format msgid "can't save %s" msgstr "nie można zapisać %s" @@ -1103,13 +2741,13 @@ msgid "Save As..." msgstr "Zapisz jako..." #: tcl/bin/genedit.tcl:87 tcl/bin/halconfig.tcl:165 tcl/bin/halshow.tcl:92 -#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1243 -#: tcl/ngcgui.tcl:3680 tcl/bin/halshow.tcl:93 tcl/ngcgui.tcl:1252 -#: tcl/ngcgui.tcl:3689 +#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1322 +#: tcl/ngcgui.tcl:3832 msgid "Exit" msgstr "Zakończ" #: tcl/bin/genedit.tcl:91 tcl/mini.tcl:2517 +#: src/emc/usr_intf/gscreen/gscreen.glade:2685 msgid "Edit" msgstr "Edytuj" @@ -1125,12 +2763,13 @@ msgstr "Kopiuj" msgid "Paste" msgstr "Wklej" -#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:68 +#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:73 msgid "Select All" msgstr "Zaznacz wszystko" #: tcl/bin/genedit.tcl:104 tcl/bin/halconfig.tcl:192 tcl/mini.tcl:919 #: tcl/mini.tcl:2519 tcl/tklinuxcnc.tcl:790 +#: src/emc/usr_intf/stepconf/main_page.glade:445 msgid "Help" msgstr "Pomoc" @@ -1152,7 +2791,7 @@ msgid "Renumber File..." msgstr "Przenumeruj plik..." #: tcl/bin/genedit.tcl:140 tcl/mini.tcl:917 tcl/mini.tcl:2518 -#: tcl/tklinuxcnc.tcl:746 +#: tcl/tklinuxcnc.tcl:746 src/emc/usr_intf/gmoccapy/gmoccapy.glade:5135 msgid "Settings" msgstr "Ustawienia" @@ -1186,13 +2825,6 @@ msgstr "" "\n" "GPL wersja 2" -#: tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 tcl/mini.tcl:1775 -#: tcl/tklinuxcnc.tcl:451 src/emc/task/emctaskmain.cc:2072 -#: src/emc/task/emctaskmain.cc:2000 -#, c-format, tcl-format -msgid "can't open %s" -msgstr "nie można otworzyć %s" - #: tcl/bin/genedit.tcl:267 tcl/mini.tcl:3090 msgid "Find" msgstr "Znajdź" @@ -1329,36 +2961,36 @@ msgstr "Zapisz i Zakończ" msgid "View" msgstr "Widok" -#: tcl/bin/halconfig.tcl:170 tcl/bin/halshow.tcl:104 tcl/bin/halshow.tcl:105 +#: tcl/bin/halconfig.tcl:170 tcl/bin/halshow.tcl:104 msgid "Expand Tree" msgstr "Rozwiń drzewo" -#: tcl/bin/halconfig.tcl:172 tcl/bin/halshow.tcl:106 tcl/bin/halshow.tcl:107 +#: tcl/bin/halconfig.tcl:172 tcl/bin/halshow.tcl:106 msgid "Collapse Tree" msgstr "Zwiń drzewo" -#: tcl/bin/halconfig.tcl:175 tcl/bin/halshow.tcl:109 tcl/bin/halshow.tcl:110 +#: tcl/bin/halconfig.tcl:175 tcl/bin/halshow.tcl:109 msgid "Expand Pins" msgstr "Rozwiń piny" -#: tcl/bin/halconfig.tcl:177 tcl/bin/halshow.tcl:111 tcl/bin/halshow.tcl:112 +#: tcl/bin/halconfig.tcl:177 tcl/bin/halshow.tcl:111 msgid "Expand Parameters" msgstr "Rozwiń paramtery" -#: tcl/bin/halconfig.tcl:179 tcl/bin/halshow.tcl:113 tcl/bin/halshow.tcl:114 +#: tcl/bin/halconfig.tcl:179 tcl/bin/halshow.tcl:113 msgid "Expand Signals" msgstr "Rozwiń sygnały" -#: tcl/bin/halconfig.tcl:182 tcl/bin/halshow.tcl:116 tcl/bin/halshow.tcl:117 +#: tcl/bin/halconfig.tcl:182 tcl/bin/halshow.tcl:116 msgid "Erase Watch" msgstr "Wykasuj podgląd" #: tcl/bin/halconfig.tcl:194 tcl/mini.tcl:840 tcl/mini.tcl:2785 -#: src/emc/usr_intf/pncconf/pncconf.glade:72999 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "About" msgstr "O programie" -#: tcl/bin/halconfig.tcl:196 +#: tcl/bin/halconfig.tcl:196 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2579 msgid "Main" msgstr "Główny" @@ -1367,15 +2999,14 @@ msgid "Enter HAL command :" msgstr "Wprowadź polecenie HAL :" #: tcl/bin/halconfig.tcl:479 tcl/bin/halconfig.tcl:528 tcl/bin/halshow.tcl:354 -#: tcl/bin/halshow.tcl:357 msgid "Execute" msgstr "Wykonaj" -#: tcl/bin/halconfig.tcl:943 tcl/bin/halshow.tcl:405 tcl/bin/halshow.tcl:413 +#: tcl/bin/halconfig.tcl:943 tcl/bin/halshow.tcl:405 msgid "Select a node to show." msgstr "Wybierz węzeł do podglądu." -#: tcl/bin/halconfig.tcl:968 tcl/bin/halshow.tcl:429 tcl/bin/halshow.tcl:438 +#: tcl/bin/halconfig.tcl:968 tcl/bin/halshow.tcl:429 msgid "<-- Select a Leaf. Click on its name." msgstr "<-- Wybierz gałąź. Kliknij na jego nazwie." @@ -1415,39 +3046,39 @@ msgstr "" "This script is not for the faint hearted and carries no warranty or " "liability for its use to the extent allowed by law." -#: tcl/bin/halshow.tcl:69 tcl/bin/halshow.tcl:70 +#: tcl/bin/halshow.tcl:69 msgid " SHOW " msgstr " POKAŻ " -#: tcl/bin/halshow.tcl:70 tcl/bin/halshow.tcl:71 +#: tcl/bin/halshow.tcl:70 msgid " WATCH " msgstr " PODGLĄD " -#: tcl/bin/halshow.tcl:90 tcl/bin/halshow.tcl:91 +#: tcl/bin/halshow.tcl:90 msgid "Load Watch List" msgstr "Załaduj listę podglądu" -#: tcl/bin/halshow.tcl:102 tcl/bin/halshow.tcl:103 +#: tcl/bin/halshow.tcl:102 msgid "Tree View" msgstr "Widok drzewa" -#: tcl/bin/halshow.tcl:349 tcl/bin/halshow.tcl:354 +#: tcl/bin/halshow.tcl:349 msgid "Test HAL command :" msgstr "Testuj polecenie HAL :" -#: tcl/bin/halshow.tcl:544 tcl/bin/halshow.tcl:556 +#: tcl/bin/halshow.tcl:544 msgid "Load a watch list" msgstr "Załaduj listę podglądu" -#: tcl/bin/halshow.tcl:567 tcl/bin/halshow.tcl:579 +#: tcl/bin/halshow.tcl:567 msgid "Save current watch list" msgstr "Zapisz bieżącą listę podglądu" -#: tcl/bin/halshow.tcl:581 tcl/bin/halshow.tcl:593 +#: tcl/bin/halshow.tcl:581 msgid "Commands may be tested here but they will NOT be saved" msgstr "Polecenia mogą być tu testowane ale NIE zostaną zapisane" -#: tcl/bin/pickconfig.tcl:50 +#: tcl/bin/pickconfig.tcl:96 msgid "" "Can't find the bwidget 1.7 package. There is a debian bwidget package; " "install \n" @@ -1457,17 +3088,19 @@ msgstr "" "zainstaluj \n" "za pomocą sudo apt-get install bwidget." -#: tcl/bin/pickconfig.tcl:178 +#: tcl/bin/pickconfig.tcl:154 +#, fuzzy +msgid "Machinekit Configuration Selector" +msgstr "Wybieranie konfiguracji LinuxCNC" + +#: tcl/bin/pickconfig.tcl:296 msgid "No details available." msgstr "Brak szczegółów." -#: tcl/bin/pickconfig.tcl:194 -msgid "LinuxCNC Configuration Selector" -msgstr "Wybieranie konfiguracji LinuxCNC" - -#: tcl/bin/pickconfig.tcl:215 +#: tcl/bin/pickconfig.tcl:343 +#, fuzzy msgid "" -"Welcome to LinuxCNC.\n" +"Welcome to MachineKit.\n" "\n" "Select a machine configuration from the list on the left.\n" "Details about the selected configuration will appear in the display on the " @@ -1480,24 +3113,24 @@ msgstr "" "Szczegóły o wybranej konfiguracji pojawią się w oknie po prawej.\n" "Kliknij 'OK' aby uruchomić wybraną konfigurację" -#: tcl/bin/pickconfig.tcl:271 +#: tcl/bin/pickconfig.tcl:401 msgid "My Configurations" msgstr "Moje konfiguracje" -#: tcl/bin/pickconfig.tcl:274 +#: tcl/bin/pickconfig.tcl:405 msgid "Sample Configurations" msgstr "Przykładowe konfiguracje" -#: tcl/bin/pickconfig.tcl:332 +#: tcl/bin/pickconfig.tcl:530 #, tcl-format msgid "ERROR: no configurations found in path '%s'" msgstr "BŁĄD: nie znaleziono konfiguracji w ścieżce '%s'" -#: tcl/bin/pickconfig.tcl:369 +#: tcl/bin/pickconfig.tcl:567 msgid "Copy Configuration?" msgstr "Skopiować konfigurację?" -#: tcl/bin/pickconfig.tcl:369 +#: tcl/bin/pickconfig.tcl:567 #, tcl-format msgid "" "Would you like to copy the %s configuration to your home directory so you " @@ -1506,29 +3139,29 @@ msgstr "" "Czy chciałbyś skopiować konfigurację %s do twojego katalogu domowego żebyś " "mógł ją zmodyfikować?" -#: tcl/bin/pickconfig.tcl:369 +#: tcl/bin/pickconfig.tcl:567 #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:563 msgid "Yes" msgstr "Tak" -#: tcl/bin/pickconfig.tcl:479 tcl/bin/pickconfig.tcl:483 +#: tcl/bin/pickconfig.tcl:749 msgid "Configuration Copied" msgstr "Konfiguracja skopiowana" -#: tcl/bin/pickconfig.tcl:479 tcl/bin/pickconfig.tcl:483 -#, tcl-format +#: tcl/bin/pickconfig.tcl:749 +#, fuzzy, tcl-format msgid "" "The configuration file has been copied to %s. Next time, choose this " -"location when starting LinuxCNC." +"location when starting MachineKit." msgstr "" "Pliki konfiguracji zostały skopiowane do %s. Następnym razem wybierz tą " "lokalizacje podczas uruchamiania LinuxCNC." -#: tcl/bin/pickconfig.tcl:506 tcl/bin/pickconfig.tcl:510 +#: tcl/bin/pickconfig.tcl:799 msgid "Shortcut Created" msgstr "Skrót utworzony" -#: tcl/bin/pickconfig.tcl:506 tcl/bin/pickconfig.tcl:510 +#: tcl/bin/pickconfig.tcl:799 msgid "" "A shortcut to this configuration file has been created on your desktop. You " "can use it to automatically launch this configuration." @@ -1536,7 +3169,7 @@ msgstr "" "Skrót do tej konfiguracji został utworzony na pulpicie. Możesz go użyć aby " "automatycznie uruchomić tę konfiguracje." -#: tcl/bin/pickconfig.tcl:511 tcl/bin/pickconfig.tcl:515 +#: tcl/bin/pickconfig.tcl:805 msgid "Create Desktop Shortcut" msgstr "Utwórz skrót na pulpicie" @@ -1624,8 +3257,7 @@ msgstr "" msgid "Backplot" msgstr "" -#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:6125 -#: src/emc/usr_intf/pncconf/pncconf.glade:5907 +#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:5915 msgid "Editor" msgstr "Edytor" @@ -1794,7 +3426,7 @@ msgstr "" msgid "start override popup here" msgstr "" -#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1669 +#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1739 msgid "Feed Override:" msgstr "Skala prędkości:" @@ -1856,7 +3488,8 @@ msgid "increment" msgstr "" #: tcl/mini.tcl:1518 tcl/tklinuxcnc.tcl:602 tcl/tklinuxcnc.tcl:1249 -#: tcl/tklinuxcnc.tcl:1253 +#: tcl/tklinuxcnc.tcl:1253 src/emc/usr_intf/gscreen/gscreen.glade:1574 +#: src/emc/usr_intf/gscreen/gscreen.glade:1586 msgid "continuous" msgstr "" @@ -1897,29 +3530,15 @@ msgid "MDI:" msgstr "" #: tcl/mini.tcl:1669 tcl/tklinuxcnc.tcl:1658 -#: src/emc/usr_intf/stepconf/stepconf.glade:4403 -#: src/emc/usr_intf/pncconf/pncconf.glade:60509 -#: src/emc/usr_intf/pncconf/pncconf.glade:61603 -#: src/emc/usr_intf/pncconf/pncconf.glade:62696 -#: src/emc/usr_intf/pncconf/pncconf.glade:63789 -#: src/emc/usr_intf/pncconf/pncconf.glade:64889 -#: src/emc/usr_intf/pncconf/pncconf.glade:67610 -#: src/emc/usr_intf/pncconf/pncconf.glade:68704 -#: src/emc/usr_intf/pncconf/pncconf.glade:69797 -#: src/emc/usr_intf/pncconf/pncconf.glade:70890 -#: src/emc/usr_intf/pncconf/pncconf.glade:71961 +#: src/emc/usr_intf/stepconf/main_page.glade:298 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2625 msgid "Run" msgstr "Uruchom" #: tcl/mini.tcl:1671 tcl/tklinuxcnc.tcl:1659 -#: src/emc/usr_intf/pncconf/pncconf.glade:60574 -#: src/emc/usr_intf/pncconf/pncconf.glade:61668 -#: src/emc/usr_intf/pncconf/pncconf.glade:62761 -#: src/emc/usr_intf/pncconf/pncconf.glade:63854 -#: src/emc/usr_intf/pncconf/pncconf.glade:67535 -#: src/emc/usr_intf/pncconf/pncconf.glade:68630 -#: src/emc/usr_intf/pncconf/pncconf.glade:69723 -#: src/emc/usr_intf/pncconf/pncconf.glade:70816 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2638 msgid "Pause" msgstr "Pauza" @@ -1939,7 +3558,7 @@ msgstr "" msgid "RESTART LINE" msgstr "" -#: tcl/mini.tcl:1699 +#: tcl/mini.tcl:1699 src/emc/usr_intf/stepconf/main_page.glade:531 msgid "Back" msgstr "" @@ -1947,24 +3566,22 @@ msgstr "" msgid "Ahead" msgstr "" -#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1221 tcl/ngcgui.tcl:1230 +#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1300 +#: src/emc/usr_intf/gscreen/gscreen.glade:3973 msgid "Restart" msgstr "" -#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 -#: tcl/tklinuxcnc.tcl:465 src/emc/usr_intf/axis/scripts/axis.py:1885 +#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 tcl/tklinuxcnc.tcl:465 +#: src/emc/usr_intf/axis/scripts/axis.py:2023 #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:754 -#: src/emc/usr_intf/axis/scripts/axis.py:1876 msgid "All files" msgstr "Wszystkie pliki" -#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 -#: tcl/tklinuxcnc.tcl:466 +#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 tcl/tklinuxcnc.tcl:466 msgid "Text files" msgstr "" -#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 -#: tcl/tklinuxcnc.tcl:467 +#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 tcl/tklinuxcnc.tcl:467 msgid "NC files" msgstr "" @@ -2126,7 +3743,7 @@ msgstr "" msgid "Subtract" msgstr "" -#: tcl/mini.tcl:2344 +#: tcl/mini.tcl:2344 src/emc/usr_intf/gmoccapy/gmoccapy.glade:6712 msgid "Add" msgstr "" @@ -2178,15 +3795,18 @@ msgstr "" msgid "Save and Load" msgstr "" -#: tcl/mini.tcl:2540 +#: tcl/mini.tcl:2540 src/emc/usr_intf/gscreen/gscreen.glade:3515 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2363 msgid "Undo" msgstr "" -#: tcl/mini.tcl:2541 +#: tcl/mini.tcl:2541 src/emc/usr_intf/gscreen/gscreen.glade:3526 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2411 msgid "Redo" msgstr "" -#: tcl/mini.tcl:2546 +#: tcl/mini.tcl:2546 tcl/tooledit.tcl:488 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6695 msgid "Delete" msgstr "" @@ -2257,15 +3877,17 @@ msgstr "" msgid "Find Next" msgstr "" -#: tcl/mini.tcl:3112 +#: tcl/mini.tcl:3112 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2494 msgid "Replace" msgstr "" -#: tcl/mini.tcl:3120 +#: tcl/mini.tcl:3120 src/emc/usr_intf/gscreen/gscreen.py:2750 +#: src/emc/usr_intf/gmoccapy/dialogs.py:171 msgid "Up" msgstr "" -#: tcl/mini.tcl:3121 +#: tcl/mini.tcl:3121 src/emc/usr_intf/gscreen/gscreen.py:2754 +#: src/emc/usr_intf/gmoccapy/dialogs.py:175 msgid "Down" msgstr "" @@ -2311,7 +3933,7 @@ msgid "" "all the information below in your message." msgstr "" -#: tcl/show_errors.tcl:69 tcl/scripts/Set_Coordinates.tcl:103 +#: tcl/show_errors.tcl:74 tcl/scripts/Set_Coordinates.tcl:103 msgid "Close" msgstr "" @@ -2429,27 +4051,23 @@ msgstr "Jednostek" msgid "auto" msgstr "" -#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8512 -#: src/emc/usr_intf/pncconf/pncconf.py:8600 +#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8873 msgid "inches" msgstr "cali" -#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1556 -#: src/emc/usr_intf/axis/scripts/axis.py:1726 +#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1609 +#: src/emc/usr_intf/axis/scripts/axis.py:1855 +#: src/emc/usr_intf/axis/scripts/axis.py:2386 #: src/emc/usr_intf/touchy/touchy.glade:3301 -#: src/emc/usr_intf/stepconf/stepconf.py:1685 -#: src/emc/usr_intf/stepconf/stepconf.py:2221 -#: src/emc/usr_intf/stepconf/stepconf.glade:4357 -#: src/emc/usr_intf/pncconf/pncconf.py:8508 -#: src/emc/usr_intf/pncconf/pncconf.glade:2229 -#: src/emc/usr_intf/pncconf/pncconf.glade:2394 -#: src/emc/usr_intf/pncconf/pncconf.glade:57616 -#: src/emc/usr_intf/pncconf/pncconf.glade:57688 -#: src/emc/usr_intf/pncconf/pncconf.glade:60646 -#: src/emc/usr_intf/pncconf/pncconf.glade:61739 -#: src/emc/usr_intf/pncconf/pncconf.glade:62832 -#: src/emc/usr_intf/pncconf/pncconf.glade:63925 -#: src/emc/usr_intf/pncconf/pncconf.glade:65091 +#: src/emc/usr_intf/stepconf/stepconf.py:1314 +#: src/emc/usr_intf/stepconf/pages.py:625 +#: src/emc/usr_intf/stepconf/main_page.glade:251 +#: src/emc/usr_intf/pncconf/pncconf.py:8869 +#: src/emc/usr_intf/pncconf/pncconf.glade:2195 +#: src/emc/usr_intf/pncconf/pncconf.glade:2362 +#: src/emc/usr_intf/pncconf/pncconf.glade:64552 +#: src/emc/usr_intf/pncconf/pncconf.glade:64621 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "mm" msgstr "mm" @@ -2489,7 +4107,7 @@ msgstr "" msgid "Machine on" msgstr "" -#: tcl/tklinuxcnc.tcl:819 +#: tcl/tklinuxcnc.tcl:819 src/emc/usr_intf/gscreen/gscreen.glade:2452 msgid "Machine off" msgstr "" @@ -2626,10 +4244,11 @@ msgid "Set Font" msgstr "" #: tcl/tklinuxcnc.tcl:2079 tcl/ngcgui_ttt.tcl:283 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4827 msgid "Font" msgstr "" -#: tcl/tklinuxcnc.tcl:2086 +#: tcl/tklinuxcnc.tcl:2086 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3257 msgid "Size" msgstr "" @@ -2637,12 +4256,11 @@ msgstr "" msgid "Style" msgstr "" -#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:1916 +#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:2031 msgid "ESTOP" msgstr "AWARYJNY" -#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2840 share/axis/tcl/axis.tcl:1918 -#: tcl/ngcgui.tcl:2849 +#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2979 share/axis/tcl/axis.tcl:2033 msgid "ON" msgstr "WŁĄCZONY" @@ -2690,1176 +4308,1410 @@ msgstr "" msgid "Write" msgstr "" -#: tcl/ngcgui.tcl:467 +#: tcl/ngcgui.tcl:439 tcl/ngcgui.tcl:846 msgid "Need non-null file name" msgstr "" -#: tcl/ngcgui.tcl:543 +#: tcl/ngcgui.tcl:483 msgid "Disallowed use of ngcgui generated file as Subfile" msgstr "" -#: tcl/ngcgui.tcl:549 +#: tcl/ngcgui.tcl:489 msgid "" "marked (not_a_subfile)\n" "Not intended for use as a subfile" msgstr "" -#: tcl/ngcgui.tcl:564 tcl/ngcgui.tcl:573 -msgid "Multiple subroutines in file not allowed" -msgstr "" - -#: tcl/ngcgui.tcl:573 tcl/ngcgui.tcl:595 tcl/ngcgui.tcl:608 tcl/ngcgui.tcl:650 -#: tcl/ngcgui.tcl:755 tcl/ngcgui.tcl:563 tcl/ngcgui.tcl:582 tcl/ngcgui.tcl:604 -#: tcl/ngcgui.tcl:617 tcl/ngcgui.tcl:659 tcl/ngcgui.tcl:764 +#: tcl/ngcgui.tcl:503 tcl/ngcgui.tcl:522 tcl/ngcgui.tcl:544 tcl/ngcgui.tcl:557 +#: tcl/ngcgui.tcl:577 tcl/ngcgui.tcl:682 msgid "bogus" msgstr "O programie" -#: tcl/ngcgui.tcl:575 tcl/ngcgui.tcl:584 +#: tcl/ngcgui.tcl:505 +msgid "can not include subroutines within ngcgui subfile" +msgstr "" + +#: tcl/ngcgui.tcl:513 +msgid "Multiple subroutines in file not allowed" +msgstr "" + +#: tcl/ngcgui.tcl:524 msgid "sub label" msgstr "" -#: tcl/ngcgui.tcl:575 tcl/ngcgui.tcl:652 tcl/ngcgui.tcl:584 tcl/ngcgui.tcl:661 +#: tcl/ngcgui.tcl:524 tcl/ngcgui.tcl:579 msgid "does not match subroutine file name" msgstr "Za dużo zagłębienie procedur" -#: tcl/ngcgui.tcl:590 tcl/ngcgui.tcl:591 tcl/ngcgui.tcl:599 tcl/ngcgui.tcl:600 +#: tcl/ngcgui.tcl:539 tcl/ngcgui.tcl:540 msgid "ignoring M2 after endsub" msgstr "" -#: tcl/ngcgui.tcl:596 tcl/ngcgui.tcl:605 +#: tcl/ngcgui.tcl:545 msgid "file contains lines after subend" msgstr "" -#: tcl/ngcgui.tcl:609 tcl/ngcgui.tcl:618 +#: tcl/ngcgui.tcl:558 msgid "file contains lines before sub" msgstr "" -#: tcl/ngcgui.tcl:652 tcl/ngcgui.tcl:661 +#: tcl/ngcgui.tcl:579 msgid "endsub label" msgstr "" -#: tcl/ngcgui.tcl:757 tcl/ngcgui.tcl:766 -msgid "out of sequence positional parameter" +#: tcl/ngcgui.tcl:684 +msgid "out of sequence positional parameter" +msgstr "" + +#: tcl/ngcgui.tcl:684 +msgid "expected" +msgstr "Wykonaj" + +#: tcl/ngcgui.tcl:735 +msgid "no sub found in file" +msgstr "" + +#: tcl/ngcgui.tcl:738 +msgid "no endsub found in file" msgstr "" -#: tcl/ngcgui.tcl:757 tcl/ngcgui.tcl:766 -msgid "expected" -msgstr "Wykonaj" - -#: tcl/ngcgui.tcl:817 tcl/ngcgui.tcl:826 -msgid "toomany" +#: tcl/ngcgui.tcl:801 +msgid "Cannot find gcmc executable" msgstr "" -#: tcl/ngcgui.tcl:868 tcl/ngcgui.tcl:877 -msgid "no sub found in file" +#: tcl/ngcgui.tcl:802 +msgid "Please Install in path" msgstr "" -#: tcl/ngcgui.tcl:871 tcl/ngcgui.tcl:880 -msgid "no endsub found in file" +#: tcl/ngcgui.tcl:810 +msgid "not embedded, deriving outdir from:" msgstr "" -#: tcl/ngcgui.tcl:961 tcl/ngcgui.tcl:970 +#: tcl/ngcgui.tcl:1038 msgid "Choose Files" msgstr "" -#: tcl/ngcgui.tcl:1100 tcl/ngcgui.tcl:1109 +#: tcl/ngcgui.tcl:1178 msgid "Controls" msgstr "Ciągły" -#: tcl/ngcgui.tcl:1109 tcl/ngcgui.tcl:1118 +#: tcl/ngcgui.tcl:1187 msgid "Preamble" msgstr "Sondowanie" -#: tcl/ngcgui.tcl:1122 tcl/ngcgui.tcl:1131 +#: tcl/ngcgui.tcl:1200 msgid "Subfile" msgstr "Pojedyńczy" -#: tcl/ngcgui.tcl:1134 tcl/ngcgui.tcl:1143 +#: tcl/ngcgui.tcl:1212 msgid "Postamble" msgstr "" -#: tcl/ngcgui.tcl:1151 tcl/ngcgui.tcl:1160 +#: tcl/ngcgui.tcl:1229 msgid "Retain values on Subfile read" msgstr "" -#: tcl/ngcgui.tcl:1159 tcl/ngcgui.tcl:1168 +#: tcl/ngcgui.tcl:1237 msgid "Expand subroutine" msgstr "" -#: tcl/ngcgui.tcl:1168 tcl/ngcgui.tcl:2414 tcl/ngcgui.tcl:1177 -#: tcl/ngcgui.tcl:2423 +#: tcl/ngcgui.tcl:1247 tcl/ngcgui.tcl:2571 msgid "Autosend" msgstr "" -#: tcl/ngcgui.tcl:1178 tcl/ngcgui.tcl:1187 +#: tcl/ngcgui.tcl:1257 msgid "Verbose ngcfile" msgstr "" -#: tcl/ngcgui.tcl:1188 tcl/ngcgui.tcl:2235 tcl/ngcgui.tcl:2259 -#: tcl/ngcgui.tcl:2289 tcl/ngcgui.tcl:1197 tcl/ngcgui.tcl:2244 -#: tcl/ngcgui.tcl:2268 tcl/ngcgui.tcl:2298 +#: tcl/ngcgui.tcl:1267 tcl/ngcgui.tcl:2393 tcl/ngcgui.tcl:2416 +#: tcl/ngcgui.tcl:2446 msgid "Create Feature" msgstr "" -#: tcl/ngcgui.tcl:1194 tcl/ngcgui.tcl:2919 tcl/ngcgui.tcl:1203 -#: tcl/ngcgui.tcl:2928 +#: tcl/ngcgui.tcl:1273 tcl/ngcgui.tcl:3058 msgid "MakeFile" msgstr "" -#: tcl/ngcgui.tcl:1195 tcl/ngcgui.tcl:2916 tcl/ngcgui.tcl:1204 -#: tcl/ngcgui.tcl:2925 +#: tcl/ngcgui.tcl:1274 tcl/ngcgui.tcl:3055 msgid "Finalize" msgstr "" -#: tcl/ngcgui.tcl:1212 tcl/ngcgui.tcl:1221 +#: tcl/ngcgui.tcl:1291 msgid "Reread" msgstr "" -#: tcl/ngcgui.tcl:1231 tcl/ngcgui.tcl:1240 +#: tcl/ngcgui.tcl:1310 msgid "SendFileToAxis" msgstr "" -#: tcl/ngcgui.tcl:1274 tcl/ngcgui.tcl:1283 +#: tcl/ngcgui.tcl:1353 msgid "Unrecoverable problem" msgstr "" -#: tcl/ngcgui.tcl:1374 tcl/ngcgui.tcl:1383 +#: tcl/ngcgui.tcl:1431 msgid "Postamble file" msgstr "" -#: tcl/ngcgui.tcl:1424 tcl/ngcgui.tcl:1433 +#: tcl/ngcgui.tcl:1481 msgid "Subroutine file" msgstr "Plik procedury" -#: tcl/ngcgui.tcl:1482 tcl/ngcgui.tcl:1491 +#: tcl/ngcgui.tcl:1545 msgid "Positional Parameters" msgstr "" -#: tcl/ngcgui.tcl:1587 tcl/ngcgui.tcl:1596 -msgid "_Globals" -msgstr "" - -#: tcl/ngcgui.tcl:1690 tcl/ngcgui.tcl:1699 +#: tcl/ngcgui.tcl:1694 msgid "No Subfile specified" msgstr "" -#: tcl/ngcgui.tcl:1692 tcl/ngcgui.tcl:1701 +#: tcl/ngcgui.tcl:1696 msgid "No parameters yet" msgstr "Brak parametrów" -#: tcl/ngcgui.tcl:1701 tcl/ngcgui.tcl:1710 +#: tcl/ngcgui.tcl:1705 msgid "Missing value for parm" msgstr "Brakująca wartość parametru" -#: tcl/ngcgui.tcl:1735 tcl/ngcgui.tcl:1744 +#: tcl/ngcgui.tcl:1726 msgid "Output file" msgstr "Plik wyjściowy" -#: tcl/ngcgui.tcl:1827 tcl/ngcgui.tcl:1836 -msgid "Positional parameters for" -msgstr "" - -#: tcl/ngcgui.tcl:1835 tcl/ngcgui.tcl:1844 -msgid "expanded file" -msgstr "" - -#: tcl/ngcgui.tcl:1849 tcl/ngcgui.tcl:1858 -msgid "call subroutine file" -msgstr "Wywołaj plik procedury" - -#: tcl/ngcgui.tcl:1919 tcl/ngcgui.tcl:1928 +#: tcl/ngcgui.tcl:1841 msgid "Multiple Tabs with Features" msgstr "" -#: tcl/ngcgui.tcl:1920 tcl/ngcgui.tcl:1929 +#: tcl/ngcgui.tcl:1842 msgid "Finalize all Tabs?" msgstr "" -#: tcl/ngcgui.tcl:1920 tcl/ngcgui.tcl:1929 +#: tcl/ngcgui.tcl:1842 msgid "Order" msgstr "Kolejność" -#: tcl/ngcgui.tcl:1922 tcl/ngcgui.tcl:1931 +#: tcl/ngcgui.tcl:1844 msgid "No, just this page" msgstr "" -#: tcl/ngcgui.tcl:1936 tcl/ngcgui.tcl:1945 +#: tcl/ngcgui.tcl:1858 msgid "Axis is not responding" msgstr "" -#: tcl/ngcgui.tcl:1937 tcl/ngcgui.tcl:1946 +#: tcl/ngcgui.tcl:1859 msgid "Error: " msgstr "" -#: tcl/ngcgui.tcl:1939 tcl/ngcgui.tcl:1948 +#: tcl/ngcgui.tcl:1861 msgid "Autosend disabled, Ctrl-A toggles autosend" msgstr "" -#: tcl/ngcgui.tcl:1941 tcl/ngcgui.tcl:1950 +#: tcl/ngcgui.tcl:1863 msgid "File saving enabled -- Finalize to save" msgstr "" -#: tcl/ngcgui.tcl:1957 tcl/ngcgui.tcl:1966 +#: tcl/ngcgui.tcl:1879 msgid "Require .ngc suffix for filename" msgstr "" -#: tcl/ngcgui.tcl:1967 tcl/ngcgui.tcl:1976 +#: tcl/ngcgui.tcl:1889 msgid "Disallowed overwrite of" msgstr "" -#: tcl/ngcgui.tcl:1986 tcl/ngcgui.tcl:1995 +#: tcl/ngcgui.tcl:1913 msgid "FEATURE" msgstr "" -#: tcl/ngcgui.tcl:1993 tcl/ngcgui.tcl:2002 +#: tcl/ngcgui.tcl:1920 msgid "feature line added" msgstr "" -#: tcl/ngcgui.tcl:2002 tcl/ngcgui.tcl:2011 +#: tcl/ngcgui.tcl:1932 msgid "line added" msgstr "" -#: tcl/ngcgui.tcl:2002 tcl/ngcgui.tcl:2011 +#: tcl/ngcgui.tcl:1932 msgid "activated" msgstr "" -#: tcl/ngcgui.tcl:2004 tcl/ngcgui.tcl:2013 +#: tcl/ngcgui.tcl:1934 msgid "restores" msgstr "" -#: tcl/ngcgui.tcl:2041 tcl/ngcgui.tcl:2050 +#: tcl/ngcgui.tcl:1973 msgid "NOTREACHED mode" msgstr "" -#: tcl/ngcgui.tcl:2236 tcl/ngcgui.tcl:2245 +#: tcl/ngcgui.tcl:1989 +msgid "Positional parameters for" +msgstr "" + +#: tcl/ngcgui.tcl:1997 +msgid "expanded file" +msgstr "" + +#: tcl/ngcgui.tcl:2011 +msgid "call subroutine file" +msgstr "Wywołaj plik procedury" + +#: tcl/ngcgui.tcl:2394 msgid "Enter parms for 1st feature" msgstr "" -#: tcl/ngcgui.tcl:2243 tcl/ngcgui.tcl:2252 +#: tcl/ngcgui.tcl:2401 msgid "New Outfile" msgstr "" -#: tcl/ngcgui.tcl:2245 tcl/ngcgui.tcl:2254 +#: tcl/ngcgui.tcl:2403 msgid "Ready to make New Outfile" msgstr "" -#: tcl/ngcgui.tcl:2262 tcl/ngcgui.tcl:2295 tcl/ngcgui.tcl:2271 -#: tcl/ngcgui.tcl:2304 +#: tcl/ngcgui.tcl:2419 tcl/ngcgui.tcl:2452 msgid "Enter parms for feature " msgstr "" -#: tcl/ngcgui.tcl:2282 tcl/ngcgui.tcl:2291 +#: tcl/ngcgui.tcl:2439 msgid "feature" msgstr "" -#: tcl/ngcgui.tcl:2287 tcl/ngcgui.tcl:2296 +#: tcl/ngcgui.tcl:2444 msgid "Create Next" msgstr "" -#: tcl/ngcgui.tcl:2292 tcl/ngcgui.tcl:2301 +#: tcl/ngcgui.tcl:2449 msgid "Created feature " msgstr "" -#: tcl/ngcgui.tcl:2316 tcl/ngcgui.tcl:2325 +#: tcl/ngcgui.tcl:2473 msgid "option" msgstr "opcja" -#: tcl/ngcgui.tcl:2327 tcl/ngcgui.tcl:2336 +#: tcl/ngcgui.tcl:2484 msgid "Missing parameters" msgstr "Brakujące parametry" -#: tcl/ngcgui.tcl:2331 tcl/ngcgui.tcl:2340 +#: tcl/ngcgui.tcl:2488 msgid "Parse Error" msgstr "Błąd przetwarzania" -#: tcl/ngcgui.tcl:2338 tcl/ngcgui.tcl:2347 +#: tcl/ngcgui.tcl:2495 msgid "Null Preamble" msgstr "" -#: tcl/ngcgui.tcl:2343 tcl/ngcgui.tcl:2352 +#: tcl/ngcgui.tcl:2500 msgid "Read Preamble" msgstr "" -#: tcl/ngcgui.tcl:2347 tcl/ngcgui.tcl:2356 +#: tcl/ngcgui.tcl:2504 msgid "Preamble Error" msgstr "" -#: tcl/ngcgui.tcl:2352 tcl/ngcgui.tcl:2361 +#: tcl/ngcgui.tcl:2509 msgid "Null Postamble" msgstr "" -#: tcl/ngcgui.tcl:2357 tcl/ngcgui.tcl:2366 +#: tcl/ngcgui.tcl:2514 msgid "Read Postamble" msgstr "" -#: tcl/ngcgui.tcl:2361 tcl/ngcgui.tcl:2370 +#: tcl/ngcgui.tcl:2518 msgid "Postamble Error" msgstr "" -#: tcl/ngcgui.tcl:2366 tcl/ngcgui.tcl:2375 +#: tcl/ngcgui.tcl:2523 msgid "Read Subfile" msgstr "" -#: tcl/ngcgui.tcl:2371 tcl/ngcgui.tcl:2380 +#: tcl/ngcgui.tcl:2528 msgid "Write Error" msgstr "" -#: tcl/ngcgui.tcl:2375 tcl/ngcgui.tcl:2384 +#: tcl/ngcgui.tcl:2532 msgid "Outfile set" msgstr "" -#: tcl/ngcgui.tcl:2380 tcl/ngcgui.tcl:2389 +#: tcl/ngcgui.tcl:2537 msgid "Finished" msgstr "" -#: tcl/ngcgui.tcl:2385 tcl/ngcgui.tcl:2394 +#: tcl/ngcgui.tcl:2542 msgid "Canceled" msgstr "" -#: tcl/ngcgui.tcl:2391 tcl/ngcgui.tcl:2400 +#: tcl/ngcgui.tcl:2548 msgid "Sent" msgstr "" -#: tcl/ngcgui.tcl:2395 tcl/ngcgui.tcl:2404 +#: tcl/ngcgui.tcl:2552 msgid "SendFileToAxis failed" msgstr "" -#: tcl/ngcgui.tcl:2399 tcl/ngcgui.tcl:2408 +#: tcl/ngcgui.tcl:2556 msgid "Ctrl-k for Key bindings" msgstr "" -#: tcl/ngcgui.tcl:2403 tcl/ngcgui.tcl:2412 +#: tcl/ngcgui.tcl:2560 msgid "Expand sub" msgstr "" -#: tcl/ngcgui.tcl:2407 tcl/ngcgui.tcl:2416 +#: tcl/ngcgui.tcl:2564 msgid "Retain values" msgstr "" -#: tcl/ngcgui.tcl:2411 tcl/ngcgui.tcl:2420 +#: tcl/ngcgui.tcl:2568 msgid "Verbose" msgstr "" -#: tcl/ngcgui.tcl:2417 tcl/ngcgui.tcl:2426 +#: tcl/ngcgui.tcl:2574 msgid "Finalize Canceled" msgstr "" -#: tcl/ngcgui.tcl:2572 tcl/ngcgui.tcl:2728 tcl/ngcgui.tcl:2581 -#: tcl/ngcgui.tcl:2737 +#: tcl/ngcgui.tcl:2711 tcl/ngcgui.tcl:2867 msgid "Dismiss" msgstr "" -#: tcl/ngcgui.tcl:2577 tcl/ngcgui.tcl:2586 +#: tcl/ngcgui.tcl:2716 msgid "ngcgui Error" msgstr "" -#: tcl/ngcgui.tcl:2600 tcl/ngcgui.tcl:2609 +#: tcl/ngcgui.tcl:2739 msgid "Declining support for tk send bug in ngcgui" msgstr "" -#: tcl/ngcgui.tcl:2601 tcl/ngcgui.tcl:2610 +#: tcl/ngcgui.tcl:2740 msgid "You should upgrade linuxcnc to >= linuxcnc2.5" msgstr "" -#: tcl/ngcgui.tcl:2645 tcl/ngcgui.tcl:2654 +#: tcl/ngcgui.tcl:2784 msgid "pre2.4_send_file_to_axis:error" msgstr "" -#: tcl/ngcgui.tcl:2839 share/axis/tcl/axis.tcl:1917 tcl/ngcgui.tcl:2848 +#: tcl/ngcgui.tcl:2978 share/axis/tcl/axis.tcl:2032 msgid "OFF" msgstr "WYŁĄCZONA" -#: tcl/ngcgui.tcl:2842 tcl/ngcgui.tcl:2851 +#: tcl/ngcgui.tcl:2981 msgid "Toggle autosend" msgstr "" -#: tcl/ngcgui.tcl:2843 tcl/ngcgui.tcl:3057 tcl/ngcgui.tcl:2852 -#: tcl/ngcgui.tcl:3066 +#: tcl/ngcgui.tcl:2982 tcl/ngcgui.tcl:3189 msgid "Clear entries" msgstr "" -#: tcl/ngcgui.tcl:2844 tcl/ngcgui.tcl:2853 +#: tcl/ngcgui.tcl:2983 msgid "Set entries to default values" msgstr "" -#: tcl/ngcgui.tcl:2845 tcl/ngcgui.tcl:2859 tcl/ngcgui.tcl:2861 -#: tcl/ngcgui.tcl:2854 tcl/ngcgui.tcl:2868 tcl/ngcgui.tcl:2870 +#: tcl/ngcgui.tcl:2984 tcl/ngcgui.tcl:2998 tcl/ngcgui.tcl:3000 msgid "Open editor specified by" msgstr "" -#: tcl/ngcgui.tcl:2846 tcl/ngcgui.tcl:2855 +#: tcl/ngcgui.tcl:2985 msgid "on last outfile" msgstr "" -#: tcl/ngcgui.tcl:2847 tcl/ngcgui.tcl:2856 +#: tcl/ngcgui.tcl:2986 msgid "toggle expand subroutines" msgstr "" -#: tcl/ngcgui.tcl:2848 tcl/ngcgui.tcl:2857 +#: tcl/ngcgui.tcl:2987 msgid "Create feature" msgstr "" -#: tcl/ngcgui.tcl:2849 tcl/ngcgui.tcl:2858 +#: tcl/ngcgui.tcl:2988 msgid "Finalize (AUTO send is" msgstr "" -#: tcl/ngcgui.tcl:2850 tcl/ngcgui.tcl:2859 +#: tcl/ngcgui.tcl:2989 msgid "Show key bindings" msgstr "" -#: tcl/ngcgui.tcl:2851 tcl/ngcgui.tcl:2860 +#: tcl/ngcgui.tcl:2990 msgid "Restart (cancel pending)" msgstr "" -#: tcl/ngcgui.tcl:2852 tcl/ngcgui.tcl:2861 +#: tcl/ngcgui.tcl:2991 msgid "(re)Read Preamble" msgstr "" -#: tcl/ngcgui.tcl:2853 tcl/ngcgui.tcl:2862 +#: tcl/ngcgui.tcl:2992 msgid "(re)Read Postamble" msgstr "" -#: tcl/ngcgui.tcl:2854 tcl/ngcgui.tcl:2863 +#: tcl/ngcgui.tcl:2993 msgid "(re)Read Subfile" msgstr "" -#: tcl/ngcgui.tcl:2855 tcl/ngcgui.tcl:2864 +#: tcl/ngcgui.tcl:2994 msgid "toggle retain values" msgstr "" -#: tcl/ngcgui.tcl:2856 tcl/ngcgui.tcl:2865 +#: tcl/ngcgui.tcl:2995 msgid "toggle output file verbosity" msgstr "" -#: tcl/ngcgui.tcl:2857 tcl/ngcgui.tcl:2866 +#: tcl/ngcgui.tcl:2996 msgid "Show status" msgstr "Pokaż status" -#: tcl/ngcgui.tcl:2858 tcl/ngcgui.tcl:2867 +#: tcl/ngcgui.tcl:2997 msgid "Show full status (debug info)" msgstr "" -#: tcl/ngcgui.tcl:2860 tcl/ngcgui.tcl:2869 +#: tcl/ngcgui.tcl:2999 msgid "on current subfile" msgstr "" -#: tcl/ngcgui.tcl:2862 tcl/ngcgui.tcl:2871 -msgid "on current preamble" +#: tcl/ngcgui.tcl:3001 +msgid "on current preamble" +msgstr "" + +#: tcl/ngcgui.tcl:3004 +msgid " Escape Return to Preview page" +msgstr "" + +#: tcl/ngcgui.tcl:3081 +msgid "Editing requires setting for environmental variable VISUAL" +msgstr "" + +#: tcl/ngcgui.tcl:3082 +msgid "Trying gedit" +msgstr "Wypróbuj gedit" + +#: tcl/ngcgui.tcl:3095 +msgid "No file available for editing yet" +msgstr "Brak pliku do edycji" + +#: tcl/ngcgui.tcl:3104 tcl/ngcgui.tcl:3113 +msgid "No file available for editing" +msgstr "Brak pliku do edycji" + +#: tcl/ngcgui.tcl:3130 +msgid "Status items" +msgstr "" + +#: tcl/ngcgui.tcl:3143 +msgid "All-page opt items" +msgstr "" + +#: tcl/ngcgui.tcl:3149 +msgid "any-items" +msgstr "" + +#: tcl/ngcgui.tcl:3182 +msgid "Set defaults" +msgstr "" + +#: tcl/ngcgui.tcl:3257 +msgid "not writable" +msgstr "" + +#: tcl/ngcgui.tcl:3396 tcl/ngcgui.tcl:3577 +msgid "new" +msgstr "nowy" + +#: tcl/ngcgui.tcl:3422 +msgid "Open a new Subfile" +msgstr "" + +#: tcl/ngcgui.tcl:3568 +msgid "remove" +msgstr "usuń" + +#: tcl/ngcgui.tcl:3590 tcl/ngcgui.tcl:3596 +msgid "move" +msgstr "" + +#: tcl/ngcgui.tcl:3704 src/emc/usr_intf/pncconf/pncconf.py:7374 +#: src/emc/usr_intf/pncconf/pncconf.py:7485 +#: src/emc/usr_intf/pncconf/pncconf.py:7650 +msgid "Custom" +msgstr "" + +#: tcl/ngcgui.tcl:3730 +msgid "Problem creating page" +msgstr "" + +#: tcl/ngcgui.tcl:3737 +msgid "entrykeybindings not available" +msgstr "" + +#: tcl/ngcgui.tcl:3781 +msgid "Found multiple matches for" +msgstr "" + +#: tcl/ngcgui.tcl:3782 +msgid "using path" +msgstr "" + +#: tcl/ngcgui.tcl:3790 src/emc/usr_intf/axis/scripts/axis.py:2440 +#: src/emc/usr_intf/axis/scripts/axis.py:2453 +msgid "Warning" +msgstr "Ostrzeżenie" + +#: tcl/ngcgui.tcl:3791 +msgid "File absolute path specifier conflicts with searchpath result" +msgstr "" + +#: tcl/ngcgui.tcl:3792 +msgid "Absolute Specifier" +msgstr "" + +#: tcl/ngcgui.tcl:3793 +msgid "Using Search Result" +msgstr "" + +#: tcl/ngcgui.tcl:3798 +msgid "File not in Search Path" +msgstr "" + +#: tcl/ngcgui.tcl:3800 +msgid "Must be in search path" +msgstr "" + +#: tcl/ngcgui.tcl:3802 +msgid "(File found -- not in search path)" +msgstr "" + +#: tcl/ngcgui.tcl:3804 +msgid "Current directory" +msgstr "" + +#: tcl/ngcgui.tcl:3805 +msgid "Search path" +msgstr "" + +#: tcl/ngcgui.tcl:3815 +msgid "Check setting for" +msgstr "" + +#: tcl/ngcgui.tcl:3816 +msgid "in ini file" +msgstr "" + +#: tcl/ngcgui.tcl:3817 +msgid "(Restart required after fixing ini file)" +msgstr "" + +#: tcl/ngcgui.tcl:3832 +msgid "Try to Continue" +msgstr "" + +#: tcl/ngcgui.tcl:3837 +msgid "Ngcgui Configuration File Not Found" +msgstr "" + +#: tcl/ngcgui.tcl:3917 +msgid "Missing Tcl Package Img" +msgstr "" + +#: tcl/ngcgui.tcl:3918 +msgid "Please install Img" +msgstr "" + +#: tcl/ngcgui.tcl:4122 +msgid "ini file" +msgstr "" + +#: tcl/ngcgui.tcl:4131 +msgid "not found" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:67 +msgid "found truetype-tracer v4 -OK" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:70 +msgid "Note truetype-tracer v4 is required" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:71 +msgid "Note: truetype-tracer v4 is required" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:81 +msgid "ngcgui_app.tcl must be loaded before" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:89 +msgid "Create a subroutine file from truetype-tracer (V4 reqd)" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:102 tcl/ngcgui_ttt.tcl:115 +msgid "problem with" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:106 +msgid "No entry for" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:109 +msgid "wrong version of truetype-tracer" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:125 +msgid "not writable, using" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:125 +msgid "and setting expandsub" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:161 +msgid "Text" +msgstr "Tekst" + +#: tcl/ngcgui_ttt.tcl:171 +msgid "Linescale" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:177 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3583 +msgid "none" +msgstr "brak" + +#: tcl/ngcgui_ttt.tcl:192 +msgid "Subdiv" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:199 +msgid "default" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:239 +msgid "Mode" +msgstr "tryb" + +#: tcl/ngcgui_ttt.tcl:247 +msgid "normal" +msgstr "normalny" + +#: tcl/ngcgui_ttt.tcl:248 +msgid "date" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:249 +msgid "fontname" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:262 +msgid "Switches" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:270 +msgid "Unicode" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:275 +msgid "Allow Rotation" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:295 +msgid "Make ngcgui-compatible subfile and new tab page" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:353 +msgid "Null text" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:384 +msgid "Using truetype-tracer default font" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:388 +msgid "no such file" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:393 +msgid "file not readable" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:507 +msgid "Creating new tab page" +msgstr "" + +#: tcl/ngcgui_app.tcl:25 +msgid "" +"requires command inifindall\n" +"from axis.py (LinuxCNC 2.5) or" +msgstr "" + +#: tcl/ngcgui_app.tcl:55 +#, fuzzy +msgid "Substituting" +msgstr "Ustawienia" + +#: tcl/ngcgui_app.tcl:55 +msgid "for" msgstr "" -#: tcl/ngcgui.tcl:2865 tcl/ngcgui.tcl:2874 -msgid " Escape Return to Preview page" +#: tcl/ngcgui_app.tcl:59 +msgid "not readable" msgstr "" -#: tcl/ngcgui.tcl:2942 tcl/ngcgui.tcl:2951 -msgid "Editing requires setting for environmental variable VISUAL" +#: tcl/ngcgui_app.tcl:65 tcl/ngcgui_app.tcl:68 +msgid "Unexpected: multiple startups for ngcgui" msgstr "" -#: tcl/ngcgui.tcl:2943 tcl/ngcgui.tcl:2952 -msgid "Trying gedit" -msgstr "Wypróbuj gedit" +#: tcl/ngcgui_app.tcl:66 +#, fuzzy +msgid "LinuxCNC" +msgstr "TKLinuxCNC" -#: tcl/ngcgui.tcl:2955 tcl/ngcgui.tcl:2964 -msgid "No file available for editing yet" -msgstr "Brak pliku do edycji" +#: tcl/ngcgui_app.tcl:67 +msgid "for linuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" +msgstr "" -#: tcl/ngcgui.tcl:2964 tcl/ngcgui.tcl:2973 tcl/ngcgui.tcl:2982 -msgid "No file available for editing" -msgstr "Brak pliku do edycji" +#: tcl/ngcgui_app.tcl:86 +#, fuzzy +msgid "LinuxCNC version" +msgstr "Status LinuxCNC" -#: tcl/ngcgui.tcl:2990 tcl/ngcgui.tcl:2999 -msgid "Status items" +#: tcl/ngcgui_app.tcl:87 +msgid "for LinuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" msgstr "" -#: tcl/ngcgui.tcl:3003 tcl/ngcgui.tcl:3012 -msgid "All-page opt items" +#: tcl/tooledit.tcl:65 +msgid "Problem reading ~/.tooleditrc" msgstr "" -#: tcl/ngcgui.tcl:3009 tcl/ngcgui.tcl:3018 -msgid "any-items" +#: tcl/tooledit.tcl:82 +#, tcl-format +msgid "Note: Ignoring duplicate column name: %s" msgstr "" -#: tcl/ngcgui.tcl:3046 tcl/ngcgui.tcl:3055 -msgid "Set defaults" -msgstr "" +# python-format +#: tcl/tooledit.tcl:93 +#, fuzzy, tcl-format +msgid "Unknown column: %s" +msgstr "Nieznane narzędzie %d" -#: tcl/ngcgui.tcl:3125 tcl/ngcgui.tcl:3134 -msgid "not writable" +#: tcl/tooledit.tcl:210 tcl/tooledit.tcl:213 tcl/tooledit.tcl:598 +#: tcl/tooledit.tcl:599 tcl/tooledit.tcl:1032 +msgid "NEW" msgstr "" -#: tcl/ngcgui.tcl:3263 tcl/ngcgui.tcl:3443 tcl/ngcgui.tcl:3272 -#: tcl/ngcgui.tcl:3452 -msgid "new" -msgstr "nowy" - -#: tcl/ngcgui.tcl:3288 tcl/ngcgui.tcl:3297 -msgid "Open a new Subfile" +#: tcl/tooledit.tcl:232 +#, tcl-format +msgid "%s must be a number" msgstr "" -#: tcl/ngcgui.tcl:3434 tcl/ngcgui.tcl:3443 -msgid "remove" -msgstr "usuń" +#: tcl/tooledit.tcl:241 +#, tcl-format +msgid "filename: <%s> not readable" +msgstr "" -#: tcl/ngcgui.tcl:3456 tcl/ngcgui.tcl:3462 tcl/ngcgui.tcl:3465 -#: tcl/ngcgui.tcl:3471 -msgid "move" +#: tcl/tooledit.tcl:245 +#, tcl-format +msgid "filename: <%s> not writable" msgstr "" -#: tcl/ngcgui.tcl:3561 src/emc/usr_intf/pncconf/pncconf.py:7022 -#: src/emc/usr_intf/pncconf/pncconf.py:7139 -#: src/emc/usr_intf/pncconf/pncconf.py:7306 tcl/ngcgui.tcl:3570 -#: src/emc/usr_intf/pncconf/pncconf.py:7116 -#: src/emc/usr_intf/pncconf/pncconf.py:7227 -#: src/emc/usr_intf/pncconf/pncconf.py:7391 -msgid "Custom" +#: tcl/tooledit.tcl:250 +#, tcl-format +msgid "directory: <%s> not writable" msgstr "" -#: tcl/ngcgui.tcl:3587 tcl/ngcgui.tcl:3596 -msgid "Problem creating page" +#: tcl/tooledit.tcl:294 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, value <%s> is not a number" msgstr "" -#: tcl/ngcgui.tcl:3594 tcl/ngcgui.tcl:3603 -msgid "entrykeybindings not available" +#: tcl/tooledit.tcl:300 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, expected integer not <%s>" msgstr "" -#: tcl/ngcgui.tcl:3633 tcl/ngcgui.tcl:3642 -msgid "Found multiple matches for" +#: tcl/tooledit.tcl:316 +#, tcl-format +msgid "At linenumber %d, Unknown tag <%s>" msgstr "" -#: tcl/ngcgui.tcl:3634 tcl/ngcgui.tcl:3643 -msgid "using path" +#: tcl/tooledit.tcl:399 +#, tcl-format +msgid "%s: Column sorting not available with tcl_version==%s" msgstr "" -#: tcl/ngcgui.tcl:3642 src/emc/usr_intf/axis/scripts/axis.py:2255 -#: src/emc/usr_intf/axis/scripts/axis.py:2268 tcl/ngcgui.tcl:3651 -#: src/emc/usr_intf/axis/scripts/axis.py:2246 -#: src/emc/usr_intf/axis/scripts/axis.py:2259 -msgid "Warning" -msgstr "Ostrzeżenie" +#: tcl/tooledit.tcl:408 +#, fuzzy +msgid "tool" +msgstr "Brak narzędzia" -#: tcl/ngcgui.tcl:3643 tcl/ngcgui.tcl:3652 -msgid "File absolute path specifier conflicts with searchpath result" +#: tcl/tooledit.tcl:409 +msgid "poc" msgstr "" -#: tcl/ngcgui.tcl:3644 tcl/ngcgui.tcl:3653 -msgid "Absolute Specifier" -msgstr "" +#: tcl/tooledit.tcl:410 +#, fuzzy +msgid "diam" +msgstr " średnica" -#: tcl/ngcgui.tcl:3645 tcl/ngcgui.tcl:3654 -msgid "Using Search Result" +#: tcl/tooledit.tcl:411 +msgid "front" msgstr "" -#: tcl/ngcgui.tcl:3650 tcl/ngcgui.tcl:3659 -msgid "File not in Search Path" +#: tcl/tooledit.tcl:412 +msgid "back" msgstr "" -#: tcl/ngcgui.tcl:3652 tcl/ngcgui.tcl:3661 -msgid "Must be in search path" +#: tcl/tooledit.tcl:413 +msgid "orien" msgstr "" -#: tcl/ngcgui.tcl:3654 tcl/ngcgui.tcl:3663 -msgid "(File found -- not in search path)" -msgstr "" +#: tcl/tooledit.tcl:414 +#, fuzzy +msgid "comment" +msgstr "Przyrost" -#: tcl/ngcgui.tcl:3656 tcl/ngcgui.tcl:3665 -msgid "Current directory" -msgstr "" +#: tcl/tooledit.tcl:444 +#, fuzzy +msgid "Del" +msgstr "Pauza" -#: tcl/ngcgui.tcl:3657 tcl/ngcgui.tcl:3666 -msgid "Search path" +#: tcl/tooledit.tcl:473 +#, fuzzy +msgid "ReLoadTable" +msgstr "Przeładuj ta_bele narzędzi" + +#: tcl/tooledit.tcl:478 +#, fuzzy +msgid "SaveFile" +msgstr "Zapisz do pliku" + +#: tcl/tooledit.tcl:483 +msgid "ReRead" msgstr "" -#: tcl/ngcgui.tcl:3663 tcl/ngcgui.tcl:3672 -msgid "Check setting for" +#: tcl/tooledit.tcl:485 +msgid "AddTool" msgstr "" -#: tcl/ngcgui.tcl:3664 tcl/ngcgui.tcl:3673 -msgid "in ini file" +#: tcl/tooledit.tcl:535 +#, tcl-format +msgid "Opened %s" msgstr "" -#: tcl/ngcgui.tcl:3665 tcl/ngcgui.tcl:3674 -msgid "(Restart required after fixing ini file)" +#: tcl/tooledit.tcl:536 +#, tcl-format +msgid "Created %s" msgstr "" -#: tcl/ngcgui.tcl:3680 tcl/ngcgui.tcl:3689 -msgid "Try to Continue" +#: tcl/tooledit.tcl:537 +msgid "File updated" msgstr "" -#: tcl/ngcgui.tcl:3685 tcl/ngcgui.tcl:3694 -msgid "Ngcgui Configuration File Not Found" +#: tcl/tooledit.tcl:538 +msgid "File modified" msgstr "" -#: tcl/ngcgui.tcl:3765 tcl/ngcgui.tcl:3774 -msgid "Missing Tcl Package Img" +#: tcl/tooledit.tcl:539 +msgid "File check errors" msgstr "" -#: tcl/ngcgui.tcl:3766 tcl/ngcgui.tcl:3775 -msgid "Please install Img" +#: tcl/tooledit.tcl:540 +msgid "File checked" msgstr "" -#: tcl/ngcgui.tcl:3965 tcl/ngcgui.tcl:3974 -msgid "ini file" +#: tcl/tooledit.tcl:541 +msgid "File items deleted" msgstr "" -#: tcl/ngcgui.tcl:3973 tcl/ngcgui.tcl:3982 -msgid "not found" +#: tcl/tooledit.tcl:542 +msgid "Bogus lines in file ignored" msgstr "" -#: tcl/ngcgui_ttt.tcl:67 -msgid "found truetype-tracer v4 -OK" +#: tcl/tooledit.tcl:543 +msgid "File errors -- Check Entries" msgstr "" -#: tcl/ngcgui_ttt.tcl:70 -msgid "Note truetype-tracer v4 is required" +#: tcl/tooledit.tcl:544 +msgid "Warning: File changed by another process" msgstr "" -#: tcl/ngcgui_ttt.tcl:71 -msgid "Note: truetype-tracer v4 is required" +#: tcl/tooledit.tcl:545 +msgid "Warning: File deleted by another process" msgstr "" -#: tcl/ngcgui_ttt.tcl:81 -msgid "ngcgui_app.tcl must be loaded before" +#: tcl/tooledit.tcl:546 +#, fuzzy +msgid "Added Tool" +msgstr "Załadowane narzędzie:" + +#: tcl/tooledit.tcl:550 +#, tcl-format +msgid "Sorted by %s, increasing" msgstr "" -#: tcl/ngcgui_ttt.tcl:89 -msgid "Create a subroutine file from truetype-tracer (V4 reqd)" +#: tcl/tooledit.tcl:551 +#, tcl-format +msgid "Sorted by %s, decreasing" msgstr "" -#: tcl/ngcgui_ttt.tcl:102 tcl/ngcgui_ttt.tcl:115 -msgid "problem with" +#: tcl/tooledit.tcl:593 +msgid "Added" msgstr "" -#: tcl/ngcgui_ttt.tcl:106 -msgid "No entry for" +#: tcl/tooledit.tcl:802 +#, tcl-format +msgid "Tool %s, Column %s, parameter %s is not a number" msgstr "" -#: tcl/ngcgui_ttt.tcl:109 -msgid "wrong version of truetype-tracer" +#: tcl/tooledit.tcl:811 +#, tcl-format +msgid "Tool %s, parameter %s must be nonnegative integer" msgstr "" -#: tcl/ngcgui_ttt.tcl:125 -msgid "not writable, using" +#: tcl/tooledit.tcl:819 +#, tcl-format +msgid "Tool %s: must be 0..9 integer" msgstr "" -#: tcl/ngcgui_ttt.tcl:125 -msgid "and setting expandsub" +#: tcl/tooledit.tcl:826 +#, tcl-format +msgid "Tool %s: <%s> must be between -360 and 360" msgstr "" -#: tcl/ngcgui_ttt.tcl:161 -msgid "Text" -msgstr "Tekst" +#: tcl/tooledit.tcl:842 +#, tcl-format +msgid "Pocket <%s> specified multiple times" +msgstr "" -#: tcl/ngcgui_ttt.tcl:171 -msgid "Linescale" +#: tcl/tooledit.tcl:857 +#, tcl-format +msgid "Tool <%s> specified multiple times" msgstr "" -#: tcl/ngcgui_ttt.tcl:177 -msgid "none" -msgstr "brak" +#: tcl/tooledit.tcl:902 +msgid "File Modified" +msgstr "" -#: tcl/ngcgui_ttt.tcl:192 -msgid "Subdiv" +#: tcl/tooledit.tcl:903 +msgid "Save Modifications to File?" msgstr "" -#: tcl/ngcgui_ttt.tcl:199 -msgid "default" +#: tcl/tooledit.tcl:930 +#, tcl-format +msgid "" +"Only these columns are currently used:\n" +"\n" +" %s" msgstr "" -#: tcl/ngcgui_ttt.tcl:239 -msgid "Mode" -msgstr "tryb" +#: tcl/tooledit.tcl:931 +msgid "Limit display to these columns by specifying" +msgstr "" -#: tcl/ngcgui_ttt.tcl:247 -msgid "normal" -msgstr "normalny" +#: tcl/tooledit.tcl:933 +#, fuzzy +msgid "Format for ini file is" +msgstr "nie można otworzyć %s" -#: tcl/ngcgui_ttt.tcl:248 -msgid "date" +#: tcl/tooledit.tcl:935 +msgid "For standalone use, invoke as" msgstr "" -#: tcl/ngcgui_ttt.tcl:249 -msgid "fontname" +#: tcl/tooledit.tcl:936 +msgid "tool_table_filename" msgstr "" -#: tcl/ngcgui_ttt.tcl:262 -msgid "Switches" -msgstr "" +#: tcl/tooledit.tcl:956 +#, fuzzy, tcl-format +msgid "Created by %s" +msgstr "wygenerowany z %s" -#: tcl/ngcgui_ttt.tcl:270 -msgid "Unicode" +#: tcl/tooledit.tcl:957 +msgid "Saved geometry (updated on program termination)" msgstr "" -#: tcl/ngcgui_ttt.tcl:275 -msgid "Allow Rotation" +#: tcl/tooledit.tcl:980 +#, tcl-format +msgid "" +"%s: Axis inifile specifies multiple inifile items for: [EMCIO]TOOL_TABLE" msgstr "" -#: tcl/ngcgui_ttt.tcl:295 -msgid "Make ngcgui-compatible subfile and new tab page" +#: tcl/tooledit.tcl:981 +#, tcl-format +msgid "%s: Using: %s" msgstr "" -#: tcl/ngcgui_ttt.tcl:353 -msgid "Null text" +#: tcl/tooledit.tcl:990 +#, tcl-format +msgid "" +"%s: Warning: Axis is running but the tool table file <%s> \n" +"differs from the standalone startup file <%s>" msgstr "" -#: tcl/ngcgui_ttt.tcl:384 -msgid "Using truetype-tracer default font" +#: tcl/tooledit.tcl:1004 +msgid "Must be On and Idle to reload tool table" msgstr "" -#: tcl/ngcgui_ttt.tcl:388 -msgid "no such file" +#: tcl/tooledit.tcl:1093 +msgid "Usage" msgstr "" -#: tcl/ngcgui_ttt.tcl:393 -msgid "file not readable" +#: tcl/tooledit.tcl:1094 tcl/tooledit.tcl:1095 +msgid "filename" msgstr "" -#: tcl/ngcgui_ttt.tcl:507 -msgid "Creating new tab page" +#: tcl/tooledit.tcl:1096 +#, tcl-format +msgid "Allowed column_ names are: %s" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:148 -#: src/emc/usr_intf/axis/scripts/axis.py:144 +#: tcl/tooledit.tcl:1106 +#, fuzzy +msgid "Missing filename" +msgstr "Brakujące parametry" + +#: src/emc/usr_intf/axis/scripts/axis.py:183 msgid "Emergency stop" msgstr "Wyłącznik awaryjny" -#: src/emc/usr_intf/axis/scripts/axis.py:149 -#: src/emc/usr_intf/axis/scripts/axis.py:145 +#: src/emc/usr_intf/axis/scripts/axis.py:184 msgid "Turn machine on" msgstr "Włącza maszyne" -#: src/emc/usr_intf/axis/scripts/axis.py:151 -#: src/emc/usr_intf/axis/scripts/axis.py:147 +#: src/emc/usr_intf/axis/scripts/axis.py:186 msgid "Activate first axis" msgstr "Aktywuje pierwszą oś" -#: src/emc/usr_intf/axis/scripts/axis.py:152 -#: src/emc/usr_intf/axis/scripts/axis.py:148 +#: src/emc/usr_intf/axis/scripts/axis.py:187 msgid "Activate second axis" msgstr "Aktywuje drugą oś" -#: src/emc/usr_intf/axis/scripts/axis.py:153 -#: src/emc/usr_intf/axis/scripts/axis.py:149 +#: src/emc/usr_intf/axis/scripts/axis.py:188 msgid "Activate third axis" msgstr "Aktywuje trzecią oś" -#: src/emc/usr_intf/axis/scripts/axis.py:154 -#: src/emc/usr_intf/axis/scripts/axis.py:150 +#: src/emc/usr_intf/axis/scripts/axis.py:189 msgid "Activate fourth axis" msgstr "Aktywuje czwartą oś" -#: src/emc/usr_intf/axis/scripts/axis.py:155 -#: src/emc/usr_intf/axis/scripts/axis.py:151 +#: src/emc/usr_intf/axis/scripts/axis.py:190 msgid "Activate fifth through ninth axis" msgstr "Aktywuje od piątej do dziewiątej osi" -#: src/emc/usr_intf/axis/scripts/axis.py:156 -#: src/emc/usr_intf/axis/scripts/axis.py:152 +#: src/emc/usr_intf/axis/scripts/axis.py:191 msgid "Set Feed Override from 0% to 100%" msgstr "Ustawia skalę prędkości od 0% do 100%" -#: src/emc/usr_intf/axis/scripts/axis.py:157 -#: src/emc/usr_intf/axis/scripts/axis.py:153 +#: src/emc/usr_intf/axis/scripts/axis.py:192 msgid ", and ." msgstr ", i ." -#: src/emc/usr_intf/axis/scripts/axis.py:157 -#: src/emc/usr_intf/axis/scripts/axis.py:153 +#: src/emc/usr_intf/axis/scripts/axis.py:192 msgid "Select jog speed" msgstr "Wybiera prędkość posuwu" -#: src/emc/usr_intf/axis/scripts/axis.py:158 -#: src/emc/usr_intf/axis/scripts/axis.py:154 +#: src/emc/usr_intf/axis/scripts/axis.py:193 msgid "< and >" msgstr "< i >" -#: src/emc/usr_intf/axis/scripts/axis.py:158 -#: src/emc/usr_intf/axis/scripts/axis.py:154 +#: src/emc/usr_intf/axis/scripts/axis.py:193 msgid "Select angular jog speed" msgstr "Wybiera rotacyjną prędkość posuwu" -#: src/emc/usr_intf/axis/scripts/axis.py:159 -#: src/emc/usr_intf/axis/scripts/axis.py:155 +#: src/emc/usr_intf/axis/scripts/axis.py:194 msgid "I, Shift-I" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:159 share/axis/tcl/axis.tcl:2356 -#: src/emc/usr_intf/axis/scripts/axis.py:155 +#: src/emc/usr_intf/axis/scripts/axis.py:194 share/axis/tcl/axis.tcl:2481 msgid "Select jog increment" msgstr "Wybiera krok posuwu" -#: src/emc/usr_intf/axis/scripts/axis.py:160 -#: src/emc/usr_intf/axis/scripts/axis.py:156 +#: src/emc/usr_intf/axis/scripts/axis.py:195 msgid "Continuous jog" msgstr "Posuw ciągły" -#: src/emc/usr_intf/axis/scripts/axis.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:479 -#: src/emc/usr_intf/axis/scripts/axis.py:157 -#: src/emc/usr_intf/pncconf/pncconf.py:488 +#: src/emc/usr_intf/axis/scripts/axis.py:196 +#: src/emc/usr_intf/pncconf/pncconf.py:408 msgid "Home" msgstr "Bazuj" -#: src/emc/usr_intf/axis/scripts/axis.py:161 -#: src/emc/usr_intf/axis/scripts/axis.py:157 +#: src/emc/usr_intf/axis/scripts/axis.py:196 msgid "Send active axis home" msgstr "Bazuje aktywną oś" -#: src/emc/usr_intf/axis/scripts/axis.py:162 -#: src/emc/usr_intf/axis/scripts/axis.py:158 +#: src/emc/usr_intf/axis/scripts/axis.py:197 msgid "Ctrl-Home" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:162 -#: src/emc/usr_intf/axis/scripts/axis.py:158 +#: src/emc/usr_intf/axis/scripts/axis.py:197 msgid "Home all axes" msgstr "Bazuje wszystkie osie" -#: src/emc/usr_intf/axis/scripts/axis.py:163 -#: src/emc/usr_intf/axis/scripts/axis.py:159 +#: src/emc/usr_intf/axis/scripts/axis.py:198 msgid "Shift-Home" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:163 -#: src/emc/usr_intf/axis/scripts/axis.py:159 +#: src/emc/usr_intf/axis/scripts/axis.py:198 msgid "Zero G54 offset for active axis" msgstr "Zeruje offset G54 dla aktywnej osi" -#: src/emc/usr_intf/axis/scripts/axis.py:164 -#: src/emc/usr_intf/axis/scripts/axis.py:160 +#: src/emc/usr_intf/axis/scripts/axis.py:199 msgid "End" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:164 -#: src/emc/usr_intf/axis/scripts/axis.py:160 +#: src/emc/usr_intf/axis/scripts/axis.py:199 msgid "Set G54 offset for active axis" msgstr "Ustawia offset G54 dla aktywnej osi" -#: src/emc/usr_intf/axis/scripts/axis.py:165 -#: src/emc/usr_intf/axis/scripts/axis.py:161 +#: src/emc/usr_intf/axis/scripts/axis.py:200 msgid "Jog active axis" msgstr "Przesuwaj aktywną oś" -#: src/emc/usr_intf/axis/scripts/axis.py:168 -#: src/emc/usr_intf/axis/scripts/axis.py:164 +#: src/emc/usr_intf/axis/scripts/axis.py:203 msgid "Left, Right" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:168 -#: src/emc/usr_intf/axis/scripts/axis.py:164 +#: src/emc/usr_intf/axis/scripts/axis.py:203 msgid "Jog first axis" msgstr "Przesuwa pierwszą oś" -#: src/emc/usr_intf/axis/scripts/axis.py:169 -#: src/emc/usr_intf/axis/scripts/axis.py:165 +#: src/emc/usr_intf/axis/scripts/axis.py:204 msgid "Up, Down" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:169 -#: src/emc/usr_intf/axis/scripts/axis.py:165 +#: src/emc/usr_intf/axis/scripts/axis.py:204 msgid "Jog second axis" msgstr "Przesuwa drugą oś" -#: src/emc/usr_intf/axis/scripts/axis.py:170 -#: src/emc/usr_intf/axis/scripts/axis.py:166 +#: src/emc/usr_intf/axis/scripts/axis.py:205 msgid "Pg Up, Pg Dn" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:170 -#: src/emc/usr_intf/axis/scripts/axis.py:166 +#: src/emc/usr_intf/axis/scripts/axis.py:205 msgid "Jog third axis" msgstr "Przesuwa trzecią oś" -#: src/emc/usr_intf/axis/scripts/axis.py:171 -#: src/emc/usr_intf/axis/scripts/axis.py:167 +#: src/emc/usr_intf/axis/scripts/axis.py:206 msgid "Shift+above jogs" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:171 -#: src/emc/usr_intf/axis/scripts/axis.py:167 +#: src/emc/usr_intf/axis/scripts/axis.py:206 msgid "Jog at traverse speed" msgstr "Posuw z prędkością przestawczą" -#: src/emc/usr_intf/axis/scripts/axis.py:172 -#: src/emc/usr_intf/axis/scripts/axis.py:168 +#: src/emc/usr_intf/axis/scripts/axis.py:207 msgid "Jog fourth axis" msgstr "Przesuwa czwartą oś" -#: src/emc/usr_intf/axis/scripts/axis.py:175 -#: src/emc/usr_intf/axis/scripts/axis.py:171 +#: src/emc/usr_intf/axis/scripts/axis.py:210 msgid "Toggle between Drag and Rotate mode" msgstr "Przełącza między przesuwaniem lub obrotem" -#: src/emc/usr_intf/axis/scripts/axis.py:176 -#: src/emc/usr_intf/axis/scripts/axis.py:172 +#: src/emc/usr_intf/axis/scripts/axis.py:211 msgid "Left Button" msgstr "Lewy przycisk" -#: src/emc/usr_intf/axis/scripts/axis.py:176 -#: src/emc/usr_intf/axis/scripts/axis.py:172 +#: src/emc/usr_intf/axis/scripts/axis.py:211 msgid "Pan, rotate or select line" msgstr "Przesuń, obróć lub zaznacz linie" -#: src/emc/usr_intf/axis/scripts/axis.py:177 -#: src/emc/usr_intf/axis/scripts/axis.py:173 +#: src/emc/usr_intf/axis/scripts/axis.py:212 msgid "Shift+Left Button" msgstr "Shift+Lewy Przycisk" -#: src/emc/usr_intf/axis/scripts/axis.py:177 -#: src/emc/usr_intf/axis/scripts/axis.py:173 +#: src/emc/usr_intf/axis/scripts/axis.py:212 msgid "Rotate or pan" msgstr "Obróc lub przesuń" -#: src/emc/usr_intf/axis/scripts/axis.py:178 -#: src/emc/usr_intf/axis/scripts/axis.py:174 +#: src/emc/usr_intf/axis/scripts/axis.py:213 msgid "Right Button" msgstr "Prawy przycisk" -#: src/emc/usr_intf/axis/scripts/axis.py:178 -#: src/emc/usr_intf/axis/scripts/axis.py:180 -#: src/emc/usr_intf/axis/scripts/axis.py:181 -#: src/emc/usr_intf/axis/scripts/axis.py:174 -#: src/emc/usr_intf/axis/scripts/axis.py:176 -#: src/emc/usr_intf/axis/scripts/axis.py:177 +#: src/emc/usr_intf/axis/scripts/axis.py:213 +#: src/emc/usr_intf/axis/scripts/axis.py:215 +#: src/emc/usr_intf/axis/scripts/axis.py:216 msgid "Zoom view" msgstr "Powiększ widok" -#: src/emc/usr_intf/axis/scripts/axis.py:179 -#: src/emc/usr_intf/axis/scripts/axis.py:175 +#: src/emc/usr_intf/axis/scripts/axis.py:214 msgid "Wheel Button" msgstr "Kółko myszki" -#: src/emc/usr_intf/axis/scripts/axis.py:179 -#: src/emc/usr_intf/axis/scripts/axis.py:175 +#: src/emc/usr_intf/axis/scripts/axis.py:214 msgid "Rotate view" msgstr "Obróć widok" -#: src/emc/usr_intf/axis/scripts/axis.py:180 -#: src/emc/usr_intf/axis/scripts/axis.py:176 +#: src/emc/usr_intf/axis/scripts/axis.py:215 msgid "Rotate Wheel" msgstr "Obrót kółka" -#: src/emc/usr_intf/axis/scripts/axis.py:181 -#: src/emc/usr_intf/axis/scripts/axis.py:177 +#: src/emc/usr_intf/axis/scripts/axis.py:216 msgid "Control+Left Button" msgstr "Control+Lewy Przycisk" -#: src/emc/usr_intf/axis/scripts/axis.py:184 -#: src/emc/usr_intf/axis/scripts/axis.py:180 +#: src/emc/usr_intf/axis/scripts/axis.py:219 msgid "Manual control" msgstr "Ręczna kontrola" -#: src/emc/usr_intf/axis/scripts/axis.py:185 -#: src/emc/usr_intf/axis/scripts/axis.py:181 +#: src/emc/usr_intf/axis/scripts/axis.py:220 msgid "Code entry (MDI)" msgstr "Wprowadzanie kodu (MDI)" -#: src/emc/usr_intf/axis/scripts/axis.py:186 -#: src/emc/usr_intf/axis/scripts/axis.py:182 +#: src/emc/usr_intf/axis/scripts/axis.py:221 msgid "Control-M" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:186 -#: src/emc/usr_intf/axis/scripts/axis.py:182 +#: src/emc/usr_intf/axis/scripts/axis.py:221 msgid "Clear MDI history" msgstr "Wyczyść historię MDI" -#: src/emc/usr_intf/axis/scripts/axis.py:187 -#: src/emc/usr_intf/axis/scripts/axis.py:183 +#: src/emc/usr_intf/axis/scripts/axis.py:222 msgid "Control-H" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:187 -#: src/emc/usr_intf/axis/scripts/axis.py:183 +#: src/emc/usr_intf/axis/scripts/axis.py:222 msgid "Copy selected MDI history elements" msgstr "Kopiuje zaznaczone linie historii MDI" -#: src/emc/usr_intf/axis/scripts/axis.py:188 -#: src/emc/usr_intf/axis/scripts/axis.py:184 +#: src/emc/usr_intf/axis/scripts/axis.py:223 msgid "to clipboard" msgstr "do schowka" -#: src/emc/usr_intf/axis/scripts/axis.py:189 -#: src/emc/usr_intf/axis/scripts/axis.py:185 +#: src/emc/usr_intf/axis/scripts/axis.py:224 msgid "Control-Shift-H" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:189 -#: src/emc/usr_intf/axis/scripts/axis.py:185 +#: src/emc/usr_intf/axis/scripts/axis.py:224 msgid "Paste clipboard to MDI history" msgstr "Wkleja ze schowka do historii MDI" -#: src/emc/usr_intf/axis/scripts/axis.py:190 share/axis/tcl/axis.tcl:1113 +#: src/emc/usr_intf/axis/scripts/axis.py:225 share/axis/tcl/axis.tcl:1183 #: src/emc/usr_intf/touchy/touchy.glade:508 -#: src/emc/usr_intf/axis/scripts/axis.py:186 msgid "Override Limits" msgstr "Ignoruj zakresy" -#: src/emc/usr_intf/axis/scripts/axis.py:192 -#: src/emc/usr_intf/axis/scripts/axis.py:188 +#: src/emc/usr_intf/axis/scripts/axis.py:227 msgid "Open program" msgstr "Otwórz program" -#: src/emc/usr_intf/axis/scripts/axis.py:193 -#: src/emc/usr_intf/axis/scripts/axis.py:189 +#: src/emc/usr_intf/axis/scripts/axis.py:228 msgid "Control-R" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:193 -#: src/emc/usr_intf/axis/scripts/axis.py:189 +#: src/emc/usr_intf/axis/scripts/axis.py:228 msgid "Reload program" msgstr "Przeładuj program" -#: src/emc/usr_intf/axis/scripts/axis.py:194 -#: src/emc/usr_intf/axis/scripts/axis.py:190 +#: src/emc/usr_intf/axis/scripts/axis.py:229 msgid "Control-S" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:194 -#: src/emc/usr_intf/axis/scripts/axis.py:190 +#: src/emc/usr_intf/axis/scripts/axis.py:229 msgid "Save g-code as" msgstr "Zapisz G-kod jako" -#: src/emc/usr_intf/axis/scripts/axis.py:195 -#: src/emc/usr_intf/axis/scripts/axis.py:191 +#: src/emc/usr_intf/axis/scripts/axis.py:230 msgid "Run program" msgstr "Uruchom program" -#: src/emc/usr_intf/axis/scripts/axis.py:196 -#: src/emc/usr_intf/axis/scripts/axis.py:192 +#: src/emc/usr_intf/axis/scripts/axis.py:231 msgid "Step program" msgstr "Krok programu" -#: src/emc/usr_intf/axis/scripts/axis.py:197 -#: src/emc/usr_intf/axis/scripts/axis.py:193 +#: src/emc/usr_intf/axis/scripts/axis.py:232 msgid "Pause program" msgstr "Pauza programu" -#: src/emc/usr_intf/axis/scripts/axis.py:198 -#: src/emc/usr_intf/axis/scripts/axis.py:194 +#: src/emc/usr_intf/axis/scripts/axis.py:233 msgid "Resume program" msgstr "Wznów program" -#: src/emc/usr_intf/axis/scripts/axis.py:199 -#: src/emc/usr_intf/axis/scripts/axis.py:195 +#: src/emc/usr_intf/axis/scripts/axis.py:234 msgid "Stop running program, or" msgstr "Zatrzymaj wykonywanie programu lub" -#: src/emc/usr_intf/axis/scripts/axis.py:200 -#: src/emc/usr_intf/axis/scripts/axis.py:196 +#: src/emc/usr_intf/axis/scripts/axis.py:235 msgid "stop loading program preview" msgstr "zatrzymaj ładowanie podglądu programu" -#: src/emc/usr_intf/axis/scripts/axis.py:202 -#: src/emc/usr_intf/axis/scripts/axis.py:198 +#: src/emc/usr_intf/axis/scripts/axis.py:237 msgid "Toggle mist" msgstr "Przełącza mgłę" -#: src/emc/usr_intf/axis/scripts/axis.py:203 -#: src/emc/usr_intf/axis/scripts/axis.py:199 +#: src/emc/usr_intf/axis/scripts/axis.py:238 msgid "Toggle flood" msgstr "Przełącza chłodziwo" -#: src/emc/usr_intf/axis/scripts/axis.py:204 -#: src/emc/usr_intf/axis/scripts/axis.py:200 +#: src/emc/usr_intf/axis/scripts/axis.py:239 msgid "Spindle brake off" msgstr "Wyłącza hamulec wrzeciona" -#: src/emc/usr_intf/axis/scripts/axis.py:205 -#: src/emc/usr_intf/axis/scripts/axis.py:201 +#: src/emc/usr_intf/axis/scripts/axis.py:240 msgid "Shift-B" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:205 -#: src/emc/usr_intf/axis/scripts/axis.py:201 +#: src/emc/usr_intf/axis/scripts/axis.py:240 msgid "Spindle brake on" msgstr "Włącza hamulec wrzeciona" -#: src/emc/usr_intf/axis/scripts/axis.py:206 -#: src/emc/usr_intf/axis/scripts/axis.py:202 +#: src/emc/usr_intf/axis/scripts/axis.py:241 msgid "Turn spindle clockwise" msgstr "Włącza wrzeciono w prawo" -#: src/emc/usr_intf/axis/scripts/axis.py:207 -#: src/emc/usr_intf/axis/scripts/axis.py:203 +#: src/emc/usr_intf/axis/scripts/axis.py:242 msgid "Turn spindle counterclockwise" msgstr "Włącza wrzeciono w lewo" -#: src/emc/usr_intf/axis/scripts/axis.py:208 -#: src/emc/usr_intf/axis/scripts/axis.py:204 +#: src/emc/usr_intf/axis/scripts/axis.py:243 msgid "Turn spindle more slowly" msgstr "Zmniejsza obroty wrzeciona" -#: src/emc/usr_intf/axis/scripts/axis.py:209 -#: src/emc/usr_intf/axis/scripts/axis.py:205 +#: src/emc/usr_intf/axis/scripts/axis.py:244 msgid "Turn spindle more quickly" msgstr "Zwiększa obroty wrzeciona" -#: src/emc/usr_intf/axis/scripts/axis.py:211 -#: src/emc/usr_intf/axis/scripts/axis.py:207 +#: src/emc/usr_intf/axis/scripts/axis.py:246 msgid "Control-K" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:211 -#: src/emc/usr_intf/axis/scripts/axis.py:207 +#: src/emc/usr_intf/axis/scripts/axis.py:246 msgid "Clear live plot" msgstr "Czyści podgląd ruchu" -#: src/emc/usr_intf/axis/scripts/axis.py:212 -#: src/emc/usr_intf/axis/scripts/axis.py:208 +#: src/emc/usr_intf/axis/scripts/axis.py:247 msgid "Cycle among preset views" msgstr "Cykliczna zmiana podglądu" -#: src/emc/usr_intf/axis/scripts/axis.py:213 -#: src/emc/usr_intf/axis/scripts/axis.py:209 +#: src/emc/usr_intf/axis/scripts/axis.py:248 msgid "Cycle among preview, DRO, and user tabs" msgstr "Cykliczna przełącza podgląd, DRO i zakładki użytkownika" -#: src/emc/usr_intf/axis/scripts/axis.py:215 -#: src/emc/usr_intf/axis/scripts/axis.py:211 +#: src/emc/usr_intf/axis/scripts/axis.py:250 msgid "Ctrl-Space" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:215 -#: src/emc/usr_intf/axis/scripts/axis.py:211 +#: src/emc/usr_intf/axis/scripts/axis.py:250 msgid "Clear notifications" msgstr "Wyczyść powiadomienia" # python-format -#: src/emc/usr_intf/axis/scripts/axis.py:836 -#: src/emc/usr_intf/axis/scripts/axis.py:828 +#: src/emc/usr_intf/axis/scripts/axis.py:850 #, python-format msgid "Unknown tool %d" msgstr "Nieznane narzędzie %d" -#: src/emc/usr_intf/axis/scripts/axis.py:838 -#: src/emc/usr_intf/axis/scripts/axis.py:830 +#: src/emc/usr_intf/axis/scripts/axis.py:852 msgid "No tool" msgstr "Brak narzędzia" -#: src/emc/usr_intf/axis/scripts/axis.py:840 -#: src/emc/usr_intf/axis/scripts/axis.py:832 +#: src/emc/usr_intf/axis/scripts/axis.py:854 #, python-format msgid "Tool %(tool)d, offset %(zo)g, diameter %(dia)g" msgstr "Narzędzie %(tool)d, offs %(zo)g, śred %(dia)g" -#: src/emc/usr_intf/axis/scripts/axis.py:842 -#: src/emc/usr_intf/axis/scripts/axis.py:834 +#: src/emc/usr_intf/axis/scripts/axis.py:856 #, python-format msgid "Tool %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" msgstr "Narzędzie %(tool)d, zo %(zo)g, xo %(xo)g, śre %(dia)g" -#: src/emc/usr_intf/axis/scripts/axis.py:1013 -#: src/emc/usr_intf/axis/scripts/axis.py:1009 +#: src/emc/usr_intf/axis/scripts/axis.py:1031 msgid "Filtering..." msgstr "Filtrowanie..." -#: src/emc/usr_intf/axis/scripts/axis.py:1073 -#: src/emc/usr_intf/axis/scripts/axis.py:1069 +#: src/emc/usr_intf/axis/scripts/axis.py:1102 msgid "Filter failed" msgstr "Filtrowanie nieukończone" -#: src/emc/usr_intf/axis/scripts/axis.py:1074 -#: src/emc/usr_intf/axis/scripts/axis.py:1070 +#: src/emc/usr_intf/axis/scripts/axis.py:1103 #, python-format msgid "" "The program %(program)r exited with code %(code)d. Any error messages it " @@ -3868,14 +5720,12 @@ msgstr "" "Program %(program)r zakończył sie z kodem %(code)d. Komunikaty błędów są " "wyświetlone poniżej:" -#: src/emc/usr_intf/axis/scripts/axis.py:1139 -#: src/emc/usr_intf/axis/scripts/axis.py:1131 +#: src/emc/usr_intf/axis/scripts/axis.py:1171 #, python-format msgid "G-Code error in %s" msgstr "Błąd G-kodu w %s" -#: src/emc/usr_intf/axis/scripts/axis.py:1140 -#: src/emc/usr_intf/axis/scripts/axis.py:1132 +#: src/emc/usr_intf/axis/scripts/axis.py:1172 #, python-format msgid "" "Near line %(seq)d of %(f)s:\n" @@ -3884,161 +5734,134 @@ msgstr "" "W pobliżu linii %(seq)d w %(f)s:\n" "%(error_str)s" -#: src/emc/usr_intf/axis/scripts/axis.py:1292 -#: src/emc/usr_intf/axis/scripts/axis.py:2725 share/axis/tcl/axis.tcl:1092 -#: share/axis/tcl/axis.tcl:1094 share/axis/tcl/axis.tcl:2144 -#: src/emc/usr_intf/axis/scripts/axis.py:1283 -#: src/emc/usr_intf/axis/scripts/axis.py:2716 +#: src/emc/usr_intf/axis/scripts/axis.py:1341 +#: src/emc/usr_intf/axis/scripts/axis.py:2942 share/axis/tcl/axis.tcl:1162 +#: share/axis/tcl/axis.tcl:1164 share/axis/tcl/axis.tcl:2269 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:895 msgid "Continuous" msgstr "Ciągły" -#: src/emc/usr_intf/axis/scripts/axis.py:1403 -#: src/emc/usr_intf/axis/scripts/axis.py:1394 +#: src/emc/usr_intf/axis/scripts/axis.py:1452 msgid "Ok" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1546 -#: src/emc/usr_intf/axis/scripts/axis.py:1537 +#: src/emc/usr_intf/axis/scripts/axis.py:1599 msgid "T Tool Table" msgstr "T Tabela Narzędzi" -#: src/emc/usr_intf/axis/scripts/axis.py:1557 -#: src/emc/usr_intf/axis/scripts/axis.py:1730 -#: src/emc/usr_intf/stepconf/stepconf.py:1691 -#: src/emc/usr_intf/stepconf/stepconf.py:2235 -#: src/emc/usr_intf/axis/scripts/axis.py:1548 -#: src/emc/usr_intf/axis/scripts/axis.py:1721 +#: src/emc/usr_intf/axis/scripts/axis.py:1610 +#: src/emc/usr_intf/axis/scripts/axis.py:1859 +#: src/emc/usr_intf/axis/scripts/axis.py:2387 +#: src/emc/usr_intf/stepconf/stepconf.py:1328 +#: src/emc/usr_intf/stepconf/pages.py:631 msgid "in" msgstr "cale" -#: src/emc/usr_intf/axis/scripts/axis.py:1560 -#: src/emc/usr_intf/axis/scripts/axis.py:1551 +#: src/emc/usr_intf/axis/scripts/axis.py:1613 msgid " radius" msgstr " promień" -#: src/emc/usr_intf/axis/scripts/axis.py:1562 -#: src/emc/usr_intf/axis/scripts/axis.py:1553 +#: src/emc/usr_intf/axis/scripts/axis.py:1615 msgid " diameter" msgstr " średnica" -#: src/emc/usr_intf/axis/scripts/axis.py:1563 -#: src/emc/usr_intf/axis/scripts/axis.py:1554 +#: src/emc/usr_intf/axis/scripts/axis.py:1616 msgid "°" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1572 -#: src/emc/usr_intf/axis/scripts/axis.py:1563 +#: src/emc/usr_intf/axis/scripts/axis.py:1625 msgid "Coordinate System:" msgstr "System współrzędnych:" -#: src/emc/usr_intf/axis/scripts/axis.py:1579 +#: src/emc/usr_intf/axis/scripts/axis.py:1641 msgid "fixture" msgstr "punkt" -#: src/emc/usr_intf/axis/scripts/axis.py:1580 +#: src/emc/usr_intf/axis/scripts/axis.py:1642 msgid "workpiece" msgstr "detal" -#: src/emc/usr_intf/axis/scripts/axis.py:1605 -#: src/emc/usr_intf/axis/scripts/axis.py:1596 +#: src/emc/usr_intf/axis/scripts/axis.py:1658 msgid "Name:" msgstr "Nazwa:" -#: src/emc/usr_intf/axis/scripts/axis.py:1605 -#: src/emc/usr_intf/axis/scripts/axis.py:1596 +#: src/emc/usr_intf/axis/scripts/axis.py:1658 msgid "Size:" msgstr "Rozmiar:" -#: src/emc/usr_intf/axis/scripts/axis.py:1606 -#: src/emc/usr_intf/axis/scripts/axis.py:1597 +#: src/emc/usr_intf/axis/scripts/axis.py:1659 msgid "Tool order:" msgstr "Kolejność narzędzi:" -#: src/emc/usr_intf/axis/scripts/axis.py:1606 -#: src/emc/usr_intf/axis/scripts/axis.py:1597 +#: src/emc/usr_intf/axis/scripts/axis.py:1659 msgid "Rapid distance:" msgstr "Długość przestawcza:" -#: src/emc/usr_intf/axis/scripts/axis.py:1607 -#: src/emc/usr_intf/axis/scripts/axis.py:1598 +#: src/emc/usr_intf/axis/scripts/axis.py:1660 msgid "Feed distance:" msgstr "Długość robocza:" -#: src/emc/usr_intf/axis/scripts/axis.py:1607 -#: src/emc/usr_intf/axis/scripts/axis.py:1598 +#: src/emc/usr_intf/axis/scripts/axis.py:1660 msgid "Total distance:" msgstr "Łączna długość:" -#: src/emc/usr_intf/axis/scripts/axis.py:1608 -#: src/emc/usr_intf/axis/scripts/axis.py:1599 +#: src/emc/usr_intf/axis/scripts/axis.py:1661 msgid "Run time:" msgstr "Czas wykonania:" -#: src/emc/usr_intf/axis/scripts/axis.py:1608 -#: src/emc/usr_intf/axis/scripts/axis.py:1599 +#: src/emc/usr_intf/axis/scripts/axis.py:1661 msgid "X bounds:" msgstr "Zakres X:" -#: src/emc/usr_intf/axis/scripts/axis.py:1609 -#: src/emc/usr_intf/axis/scripts/axis.py:1600 +#: src/emc/usr_intf/axis/scripts/axis.py:1662 msgid "Y bounds:" msgstr "Zakres Y:" -#: src/emc/usr_intf/axis/scripts/axis.py:1609 -#: src/emc/usr_intf/axis/scripts/axis.py:1600 +#: src/emc/usr_intf/axis/scripts/axis.py:1662 msgid "Z bounds:" msgstr "Zakres Z:" -#: src/emc/usr_intf/axis/scripts/axis.py:1610 -#: src/emc/usr_intf/axis/scripts/axis.py:1601 +#: src/emc/usr_intf/axis/scripts/axis.py:1663 msgid "A bounds:" msgstr "Zakres A:" -#: src/emc/usr_intf/axis/scripts/axis.py:1610 -#: src/emc/usr_intf/axis/scripts/axis.py:1601 +#: src/emc/usr_intf/axis/scripts/axis.py:1663 msgid "B bounds:" msgstr "Zakres B:" -#: src/emc/usr_intf/axis/scripts/axis.py:1611 -#: src/emc/usr_intf/axis/scripts/axis.py:1602 +#: src/emc/usr_intf/axis/scripts/axis.py:1664 msgid "C bounds:" msgstr "Zakres C:" -#: src/emc/usr_intf/axis/scripts/axis.py:1635 -#: src/emc/usr_intf/axis/scripts/axis.py:1626 +#: src/emc/usr_intf/axis/scripts/axis.py:1688 #, python-format msgid "Program exceeds machine minimum on axis %s" msgstr "Program przekracza minimalny zakres maszyny w osi %s" -#: src/emc/usr_intf/axis/scripts/axis.py:1638 -#: src/emc/usr_intf/axis/scripts/axis.py:1629 +#: src/emc/usr_intf/axis/scripts/axis.py:1691 #, python-format msgid "Program exceeds machine maximum on axis %s" msgstr "Program przekracza maksymalny zakres maszyny w osi %s" -#: src/emc/usr_intf/axis/scripts/axis.py:1643 -#: src/emc/usr_intf/axis/scripts/axis.py:1634 +#: src/emc/usr_intf/axis/scripts/axis.py:1696 msgid "Program exceeds machine limits" msgstr "Program przekracza zakresy maszyny" -#: src/emc/usr_intf/axis/scripts/axis.py:1646 -#: src/emc/usr_intf/axis/scripts/axis.py:1637 +#: src/emc/usr_intf/axis/scripts/axis.py:1699 msgid "Run Anyway" msgstr "Uruchom mimo to" -#: src/emc/usr_intf/axis/scripts/axis.py:1708 -#: src/emc/usr_intf/axis/scripts/axis.py:1699 +#: src/emc/usr_intf/axis/scripts/axis.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1581 msgid "No file loaded" msgstr "Brak załadowanego pliku" -#: src/emc/usr_intf/axis/scripts/axis.py:1716 -#: src/emc/usr_intf/axis/scripts/axis.py:1707 +#: src/emc/usr_intf/axis/scripts/axis.py:1845 #, python-format msgid "generated from %s" msgstr "wygenerowany z %s" -#: src/emc/usr_intf/axis/scripts/axis.py:1722 -#: src/emc/usr_intf/axis/scripts/axis.py:1713 +#: src/emc/usr_intf/axis/scripts/axis.py:1851 #, python-format msgid "" "%(size)s bytes\n" @@ -4047,146 +5870,147 @@ msgstr "" "%(size)s bajtów\n" "%(lines)s linii gkodu" -#: src/emc/usr_intf/axis/scripts/axis.py:1748 -#: src/emc/usr_intf/axis/scripts/axis.py:1739 +#: src/emc/usr_intf/axis/scripts/axis.py:1877 #, python-format msgid "%.1f minutes" msgstr "%.1f minut" -#: src/emc/usr_intf/axis/scripts/axis.py:1750 -#: src/emc/usr_intf/axis/scripts/axis.py:1741 +#: src/emc/usr_intf/axis/scripts/axis.py:1879 #, python-format msgid "%d seconds" msgstr "%d sekund" -#: src/emc/usr_intf/axis/scripts/axis.py:1758 -#: src/emc/usr_intf/axis/scripts/axis.py:1749 +#: src/emc/usr_intf/axis/scripts/axis.py:1887 #, python-format msgid "%(a)f to %(b)f = %(diff)f %(units)s" msgstr "%(a)f do %(b)f = %(diff)f %(units)s" -#: src/emc/usr_intf/axis/scripts/axis.py:1759 -#: src/emc/usr_intf/axis/scripts/axis.py:1750 +#: src/emc/usr_intf/axis/scripts/axis.py:1888 msgid "G-Code Properties" msgstr "Właściwości G-kodu" -#: src/emc/usr_intf/axis/scripts/axis.py:1883 -#: src/emc/usr_intf/axis/scripts/axis.py:1874 +#: src/emc/usr_intf/axis/scripts/axis.py:2021 msgid "All machinable files" msgstr "Wszystkie pliku maszynowe" -#: src/emc/usr_intf/axis/scripts/axis.py:1884 -#: src/emc/usr_intf/axis/scripts/axis.py:2464 -#: src/emc/usr_intf/axis/scripts/axis.py:1875 -#: src/emc/usr_intf/axis/scripts/axis.py:2455 +#: src/emc/usr_intf/axis/scripts/axis.py:2022 +#: src/emc/usr_intf/axis/scripts/axis.py:2659 msgid "rs274ngc files" msgstr "pliki rs274ngc" -#: src/emc/usr_intf/axis/scripts/axis.py:1899 -#: src/emc/usr_intf/axis/scripts/axis.py:1890 +#: src/emc/usr_intf/axis/scripts/axis.py:2037 msgid "axis cannot accept remote command while running" msgstr "Axis nie może przyjąć poleceń zdalnych w czasie wykonywania programu" -#: src/emc/usr_intf/axis/scripts/axis.py:2255 -#: src/emc/usr_intf/axis/scripts/axis.py:2246 +#: src/emc/usr_intf/axis/scripts/axis.py:2098 +#, fuzzy +msgid "File not Writable:" +msgstr "Plik nie jest otwarty" + +#: src/emc/usr_intf/axis/scripts/axis.py:2099 +msgid "" +"This file is not writable\n" +"You can Edit-readonly\n" +"\n" +"or\n" +"\n" +"Save it to your own directory\n" +"then open that saved, writable file" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2106 +msgid "Edit-readonly" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2440 msgid "Axis is already homed, are you sure you want to re-home?" msgstr "Axis jest już zbazowany, czy na pewno chcesz bazować ponownie?" -#: src/emc/usr_intf/axis/scripts/axis.py:2268 -#: src/emc/usr_intf/axis/scripts/axis.py:2259 +#: src/emc/usr_intf/axis/scripts/axis.py:2453 msgid "This axis is already homed, are you sure you want to re-home?" msgstr "Ta oś jest już zbazowana, czy na pewno chcesz bazować ponownie?" -#: src/emc/usr_intf/axis/scripts/axis.py:2308 share/axis/tcl/axis.tcl:1108 -#: src/emc/usr_intf/axis/scripts/axis.py:2299 +#: src/emc/usr_intf/axis/scripts/axis.py:2493 share/axis/tcl/axis.tcl:1178 msgid "Touch Off" msgstr "Ustaw Offset" -#: src/emc/usr_intf/axis/scripts/axis.py:2309 -#: src/emc/usr_intf/axis/scripts/axis.py:2300 +#: src/emc/usr_intf/axis/scripts/axis.py:2494 #, python-format msgid "Enter %s coordinate relative to %%s:" msgstr "Wprowadź współrzędną %s względną do %%s:" -#: src/emc/usr_intf/axis/scripts/axis.py:2476 -#: src/emc/usr_intf/axis/scripts/axis.py:2467 +#: src/emc/usr_intf/axis/scripts/axis.py:2671 msgid "Error saving file" msgstr "Błąd podczas zapisywania pliku" -#: src/emc/usr_intf/axis/scripts/axis.py:2859 +#: src/emc/usr_intf/axis/scripts/axis.py:3077 #: src/emc/usr_intf/touchy/touchy.glade:577 -#: src/emc/usr_intf/axis/scripts/axis.py:2849 +#: src/emc/usr_intf/gscreen/gscreen.glade:2933 msgid "Home All" msgstr "Bazuj wszystkie" -#: src/emc/usr_intf/axis/scripts/axis.py:2861 -#: src/emc/usr_intf/axis/scripts/axis.py:2851 +#: src/emc/usr_intf/axis/scripts/axis.py:3079 msgid "Home all axes [Ctrl-Home]" msgstr "Bazuj wszystkie osie [Ctrl-Home]" -#: src/emc/usr_intf/axis/scripts/axis.py:2864 -#: src/emc/usr_intf/axis/scripts/axis.py:2854 +#: src/emc/usr_intf/axis/scripts/axis.py:3082 msgid "Home All Axes" msgstr "Bazuj wszystkie osie" -#: src/emc/usr_intf/axis/scripts/axis.py:2871 -#: src/emc/usr_intf/axis/scripts/axis.py:2859 +#: src/emc/usr_intf/axis/scripts/axis.py:3089 msgid "Unhome All Axes" msgstr "Odbazuj wszystkie sie" -#: src/emc/usr_intf/axis/scripts/axis.py:2895 -#: src/emc/usr_intf/axis/scripts/axis.py:2883 +#: src/emc/usr_intf/axis/scripts/axis.py:3113 #, python-format msgid "Home Axis _%s" msgstr "Bazuj oś _%s" -#: src/emc/usr_intf/axis/scripts/axis.py:2897 -#: src/emc/usr_intf/axis/scripts/axis.py:2885 +#: src/emc/usr_intf/axis/scripts/axis.py:3115 #, python-format msgid "Unhome Axis _%s" msgstr "Odbazuj oś _%s" -#: src/emc/usr_intf/axis/scripts/axis.py:3040 -#: src/emc/usr_intf/axis/scripts/axis.py:3028 +#: src/emc/usr_intf/axis/scripts/axis.py:3282 msgid "Run from here" msgstr "Uruchom od tego miejsca" -#: src/emc/usr_intf/axis/scripts/axis.py:3335 -#: src/emc/usr_intf/axis/scripts/axis.py:3323 +#: src/emc/usr_intf/axis/scripts/axis.py:3598 msgid "Error in ~/.axisrc" msgstr "Błąd w ~/.axisrc" #: src/emc/usr_intf/axis/scripts/linuxcnctop.py:102 -msgid "LinuxCNC Status" -msgstr "Status LinuxCNC" +#, fuzzy +msgid "Machinekit Status" +msgstr "Jednostki maszyny:" #: src/emc/usr_intf/axis/scripts/linuxcnctop.py:118 msgid "Copy All" msgstr "Kopiuj wszystko" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:29 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 #, python-format msgid "Insert tool %d and click continue when ready" msgstr "Włóż narzędzie %d i wciśnij Kontynuuj gdy gotowe" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:31 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:39 msgid "Remove the tool and click continue when ready" msgstr "Wyjmnij narzędzie i wciśnij Kontynuuj gdy gotowe" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 -#: src/emc/usr_intf/touchy/mdi.py:49 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 +#: src/emc/usr_intf/touchy/mdi.py:49 src/emc/usr_intf/gscreen/mdi.py:49 msgid "Tool change" msgstr "Zmiana narzędzia" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 msgid "Continue" msgstr "Kontynuuj" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:55 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:64 msgid "AXIS Manual Toolchanger" msgstr "Ręczna zmieniarka narzędzi AXIS" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:59 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:68 msgid "" "This window is part of the AXIS manual toolchanger. It is safe to close or " "iconify this window, or it will close automatically after a few seconds." @@ -4386,8 +6210,9 @@ msgid "Depth images" msgstr "" #: src/emc/usr_intf/axis/scripts/debuglevel.py:22 -msgid "LinuxCNC Debug Level" -msgstr "Poziom debugowania LinuxCNC" +#, fuzzy +msgid "Machinekit Debug Level" +msgstr "Ustaw poziom _debugowania" #: src/emc/usr_intf/axis/scripts/debuglevel.py:23 msgid "debuglevel" @@ -4434,537 +6259,603 @@ msgstr "" msgid " * This option can only be enabled in the inifile" msgstr " * Ta opcja może być włączona wyłącznie w pliku ini" -#: share/axis/tcl/axis.tcl:49 +#: share/axis/tcl/axis.tcl:52 msgid "_Open..." msgstr "_Otwórz..." -#: share/axis/tcl/axis.tcl:53 +#: share/axis/tcl/axis.tcl:56 msgid "Recent _Files" msgstr "Ostatnie Pliki" -#: share/axis/tcl/axis.tcl:57 +#: share/axis/tcl/axis.tcl:60 msgid "_Edit..." msgstr "_Edytuj..." -#: share/axis/tcl/axis.tcl:60 +#: share/axis/tcl/axis.tcl:63 msgid "Ctrl-R" msgstr "" -#: share/axis/tcl/axis.tcl:62 +#: share/axis/tcl/axis.tcl:65 msgid "_Reload" msgstr "P_rzeładuj" -#: share/axis/tcl/axis.tcl:65 +#: share/axis/tcl/axis.tcl:68 msgid "Ctrl-S" msgstr "" -#: share/axis/tcl/axis.tcl:67 +#: share/axis/tcl/axis.tcl:70 msgid "_Save gcode as..." msgstr "Zapi_sz G-kod jako..." -#: share/axis/tcl/axis.tcl:71 +#: share/axis/tcl/axis.tcl:74 msgid "_Properties..." msgstr "Właściwości..." -#: share/axis/tcl/axis.tcl:77 +#: share/axis/tcl/axis.tcl:80 msgid "Edit _tool table..." msgstr "Edytuj _tabele narzędzi..." -#: share/axis/tcl/axis.tcl:81 +#: share/axis/tcl/axis.tcl:84 msgid "Reload tool ta_ble" msgstr "Przeładuj ta_bele narzędzi" -#: share/axis/tcl/axis.tcl:87 +#: share/axis/tcl/axis.tcl:90 msgid "_Ladder Editor..." msgstr "Edytor P_LC..." -#: share/axis/tcl/axis.tcl:99 +#: share/axis/tcl/axis.tcl:102 msgid "Toggle _Emergency Stop" msgstr "Włącznik awaryjny" -#: share/axis/tcl/axis.tcl:104 +#: share/axis/tcl/axis.tcl:107 msgid "Toggle _Machine Power" msgstr "Włącza zasilanie maszyny" -#: share/axis/tcl/axis.tcl:111 +#: share/axis/tcl/axis.tcl:114 msgid "_Run program" msgstr "U_ruchom program" -#: share/axis/tcl/axis.tcl:115 +#: share/axis/tcl/axis.tcl:118 msgid "Ru_n from selected line" msgstr "Uruchom od zaznaczo_nej linii" -#: share/axis/tcl/axis.tcl:120 +#: share/axis/tcl/axis.tcl:123 msgid "S_tep" msgstr "Krok" -#: share/axis/tcl/axis.tcl:125 +#: share/axis/tcl/axis.tcl:128 msgid "_Pause" msgstr "_Pauza" -#: share/axis/tcl/axis.tcl:130 +#: share/axis/tcl/axis.tcl:133 msgid "Re_sume" msgstr "Wznów" -#: share/axis/tcl/axis.tcl:140 +#: share/axis/tcl/axis.tcl:143 msgid "Stop at M_1" msgstr "Zatrzymaj na M_1" -#: share/axis/tcl/axis.tcl:145 +#: share/axis/tcl/axis.tcl:148 msgid "Skip lines with '_/'" msgstr "Pomiń linie z '_/'" -#: share/axis/tcl/axis.tcl:150 +#: share/axis/tcl/axis.tcl:153 msgid "Ctrl-M" msgstr "" -#: share/axis/tcl/axis.tcl:152 +#: share/axis/tcl/axis.tcl:155 msgid "Clear MDI h_istory" msgstr "Wyczyść h_istorię MDI" -#: share/axis/tcl/axis.tcl:154 +#: share/axis/tcl/axis.tcl:157 msgid "Ctrl-H" msgstr "" -#: share/axis/tcl/axis.tcl:156 +#: share/axis/tcl/axis.tcl:159 msgid "Copy from MDI hist_ory" msgstr "Kopiuj z hist_orii MDI" -#: share/axis/tcl/axis.tcl:158 +#: share/axis/tcl/axis.tcl:161 msgid "Ctrl-Shift-H" msgstr "" -#: share/axis/tcl/axis.tcl:160 +#: share/axis/tcl/axis.tcl:163 msgid "Paste to MDI histor_y" msgstr "Wklej do historii MDI" -#: share/axis/tcl/axis.tcl:166 +#: share/axis/tcl/axis.tcl:169 msgid "_Calibration" msgstr "Kalibra_cja" -#: share/axis/tcl/axis.tcl:170 +#: share/axis/tcl/axis.tcl:173 msgid "Show _Hal Configuration" msgstr "Pokaż konfiguracje _HAL" -#: share/axis/tcl/axis.tcl:174 +#: share/axis/tcl/axis.tcl:177 msgid "H_al Meter" msgstr "Pomi_ar HAL" -#: share/axis/tcl/axis.tcl:178 +#: share/axis/tcl/axis.tcl:181 msgid "Ha_l Scope" msgstr "Oscy_loskop HAL" -#: share/axis/tcl/axis.tcl:182 -msgid "Sho_w LinuxCNC Status" +#: share/axis/tcl/axis.tcl:185 +#, fuzzy +msgid "Sho_w Machinekit Status" msgstr "Pokaż status LinuxCNC" -#: share/axis/tcl/axis.tcl:186 +#: share/axis/tcl/axis.tcl:189 msgid "Set _Debug Level" msgstr "Ustaw poziom _debugowania" -#: share/axis/tcl/axis.tcl:192 +#: share/axis/tcl/axis.tcl:195 msgid "Homin_g" msgstr "Bazowanie" -#: share/axis/tcl/axis.tcl:196 +#: share/axis/tcl/axis.tcl:199 msgid "_Unhoming" msgstr "Odbazowanie" -#: share/axis/tcl/axis.tcl:200 +#: share/axis/tcl/axis.tcl:203 msgid "_Zero coordinate system" msgstr "Zeruj system współrzędnych" -#: share/axis/tcl/axis.tcl:204 +#: share/axis/tcl/axis.tcl:207 msgid "P1 G5_4" msgstr "" -#: share/axis/tcl/axis.tcl:208 +#: share/axis/tcl/axis.tcl:211 msgid "P2 G5_5" msgstr "" -#: share/axis/tcl/axis.tcl:212 +#: share/axis/tcl/axis.tcl:215 msgid "P3 G5_6" msgstr "" -#: share/axis/tcl/axis.tcl:216 +#: share/axis/tcl/axis.tcl:219 msgid "P4 G5_7" msgstr "" -#: share/axis/tcl/axis.tcl:220 +#: share/axis/tcl/axis.tcl:223 msgid "P5 G5_8" msgstr "" -#: share/axis/tcl/axis.tcl:224 +#: share/axis/tcl/axis.tcl:227 msgid "P6 G5_9" msgstr "" -#: share/axis/tcl/axis.tcl:228 +#: share/axis/tcl/axis.tcl:231 msgid "P7 G59._1" msgstr "" -#: share/axis/tcl/axis.tcl:232 +#: share/axis/tcl/axis.tcl:235 msgid "P8 G59._2" msgstr "" -#: share/axis/tcl/axis.tcl:236 +#: share/axis/tcl/axis.tcl:239 msgid "P9 G59._3" msgstr "" -#: share/axis/tcl/axis.tcl:240 +#: share/axis/tcl/axis.tcl:243 msgid "_G92" msgstr "" -#: share/axis/tcl/axis.tcl:248 +#: share/axis/tcl/axis.tcl:251 msgid "Tool touch off to wor_kpiece" msgstr "Ustaw offset narzędzia względem materiału" -#: share/axis/tcl/axis.tcl:254 +#: share/axis/tcl/axis.tcl:257 msgid "Tool touch off to _fixture" msgstr "Ustaw offset narzędzia względem punktu" -#: share/axis/tcl/axis.tcl:262 +#: share/axis/tcl/axis.tcl:265 msgid "_Top view" msgstr "Widok z gory" -#: share/axis/tcl/axis.tcl:269 +#: share/axis/tcl/axis.tcl:272 msgid "_Rotated Top view" msgstr "Obrócony widok z góry" -#: share/axis/tcl/axis.tcl:276 +#: share/axis/tcl/axis.tcl:279 msgid "_Side view" msgstr "Widok z boku" -#: share/axis/tcl/axis.tcl:283 +#: share/axis/tcl/axis.tcl:286 msgid "_Front view" msgstr "Widok z przodu" -#: share/axis/tcl/axis.tcl:290 +#: share/axis/tcl/axis.tcl:293 msgid "_Perspective view" msgstr "Widok _perspektywy" -#: share/axis/tcl/axis.tcl:299 +#: share/axis/tcl/axis.tcl:302 msgid "Display _Inches" msgstr "Wyświetlaj Cale" -#: share/axis/tcl/axis.tcl:306 +#: share/axis/tcl/axis.tcl:309 msgid "Display _MM" msgstr "Wyświetlaj MM" -#: share/axis/tcl/axis.tcl:313 +#: share/axis/tcl/axis.tcl:316 msgid "S_how program" msgstr "Pokaż program" -#: share/axis/tcl/axis.tcl:318 +#: share/axis/tcl/axis.tcl:321 msgid "Show program r_apids" msgstr "Pokaż ruchy przestawcze" -#: share/axis/tcl/axis.tcl:323 +#: share/axis/tcl/axis.tcl:326 msgid "Alpha-_blend program" msgstr "Włącz kanał alfa programu" -#: share/axis/tcl/axis.tcl:328 +#: share/axis/tcl/axis.tcl:331 msgid "Sho_w live plot" msgstr "Pokaż historię ruchu" -#: share/axis/tcl/axis.tcl:333 +#: share/axis/tcl/axis.tcl:336 msgid "Show too_l" msgstr "Pokaż narzędzie" -#: share/axis/tcl/axis.tcl:338 +#: share/axis/tcl/axis.tcl:341 msgid "Show e_xtents" msgstr "Pokaż wymiary" -#: share/axis/tcl/axis.tcl:343 +#: share/axis/tcl/axis.tcl:345 +msgid "_Grid" +msgstr "" + +#: share/axis/tcl/axis.tcl:350 msgid "Show o_ffsets" msgstr "Pokaż offsety" -#: share/axis/tcl/axis.tcl:348 +#: share/axis/tcl/axis.tcl:355 msgid "Sh_ow machine limits" msgstr "P_okaż zakres maszyny" -#: share/axis/tcl/axis.tcl:353 +#: share/axis/tcl/axis.tcl:360 msgid "Show v_elocity" msgstr "Pokaż prędkość" -#: share/axis/tcl/axis.tcl:358 +#: share/axis/tcl/axis.tcl:365 msgid "Show _distance to go" msgstr "Pokaż pozostały _dystans" -#: share/axis/tcl/axis.tcl:363 +#: share/axis/tcl/axis.tcl:370 msgid "Large coordinate fo_nt" msgstr "Duża czcionka współ_rzędnych" -#: share/axis/tcl/axis.tcl:366 +#: share/axis/tcl/axis.tcl:373 msgid "Ctrl-K" msgstr "" -#: share/axis/tcl/axis.tcl:368 +#: share/axis/tcl/axis.tcl:375 msgid "_Clear live plot" msgstr "_Czyść historię ruchu" -#: share/axis/tcl/axis.tcl:377 +#: share/axis/tcl/axis.tcl:384 msgid "Show commanded position" msgstr "Pokaż zadaną pozycje" -#: share/axis/tcl/axis.tcl:384 +#: share/axis/tcl/axis.tcl:391 msgid "Show actual position" msgstr "Pokaż aktualną pozycję" -#: share/axis/tcl/axis.tcl:393 +#: share/axis/tcl/axis.tcl:400 msgid "Show machine position" msgstr "Pokaż pozycję maszyny" -#: share/axis/tcl/axis.tcl:400 +#: share/axis/tcl/axis.tcl:407 msgid "Show relative position" msgstr "Pokaż pozycję względną" -#: share/axis/tcl/axis.tcl:409 +#: share/axis/tcl/axis.tcl:416 msgid "Joint mode" msgstr "Tryb napędów" -#: share/axis/tcl/axis.tcl:416 +#: share/axis/tcl/axis.tcl:423 msgid "World mode" msgstr "Tryb rzeczywisty" -#: share/axis/tcl/axis.tcl:425 +#: share/axis/tcl/axis.tcl:431 +msgid "_Off" +msgstr "" + +#: share/axis/tcl/axis.tcl:437 +msgid "_Custom" +msgstr "" + +#: share/axis/tcl/axis.tcl:443 +msgid "User_0" +msgstr "" + +#: share/axis/tcl/axis.tcl:447 +msgid "User_1" +msgstr "" + +#: share/axis/tcl/axis.tcl:451 +msgid "User_2" +msgstr "" + +#: share/axis/tcl/axis.tcl:455 +msgid "User_3" +msgstr "" + +#: share/axis/tcl/axis.tcl:459 +msgid "User_4" +msgstr "" + +#: share/axis/tcl/axis.tcl:463 +msgid "User_5" +msgstr "" + +#: share/axis/tcl/axis.tcl:467 +msgid "User_6" +msgstr "" + +#: share/axis/tcl/axis.tcl:471 +msgid "User_7" +msgstr "" + +#: share/axis/tcl/axis.tcl:475 +msgid "User_8" +msgstr "" + +#: share/axis/tcl/axis.tcl:479 +msgid "User_9" +msgstr "" + +#: share/axis/tcl/axis.tcl:491 msgid "_About AXIS" msgstr "O _AXIS" -#: share/axis/tcl/axis.tcl:429 +#: share/axis/tcl/axis.tcl:495 msgid "Quick _Reference" msgstr "Szybka pomoc" -#: share/axis/tcl/axis.tcl:439 +#: share/axis/tcl/axis.tcl:505 msgid "_Machine" msgstr "_Maszyna" -#: share/axis/tcl/axis.tcl:443 +#: share/axis/tcl/axis.tcl:509 msgid "_View" msgstr "Widok" -#: share/axis/tcl/axis.tcl:456 +#: share/axis/tcl/axis.tcl:513 +msgid "_User" +msgstr "" + +#: share/axis/tcl/axis.tcl:526 msgid "Toggle Emergency Stop [F1]" msgstr "Przełącz wyłącznik awaryjny [F1]" -#: share/axis/tcl/axis.tcl:465 +#: share/axis/tcl/axis.tcl:535 msgid "Toggle Machine power [F2]" msgstr "Włącz zasilanie maszyny [F2]" -#: share/axis/tcl/axis.tcl:476 +#: share/axis/tcl/axis.tcl:546 msgid "Open G-Code file [O]" msgstr "Otwórz plik G-kodu [O]" -#: share/axis/tcl/axis.tcl:484 +#: share/axis/tcl/axis.tcl:554 msgid "Reopen current file [Control-R]" msgstr "Przeładuj bieżący plik [Control-R]" -#: share/axis/tcl/axis.tcl:494 +#: share/axis/tcl/axis.tcl:564 msgid "Begin executing current file [R]" msgstr "Rozpocznik wykonywanie bieżacego pliku [R]" -#: share/axis/tcl/axis.tcl:502 +#: share/axis/tcl/axis.tcl:572 msgid "Execute next line [T]" msgstr "Wykonaj następną linię [T]" -#: share/axis/tcl/axis.tcl:510 +#: share/axis/tcl/axis.tcl:580 msgid "Pause [P] / resume [S] execution" msgstr "Pauzuj [P] / wznów [S] wykonywanie" -#: share/axis/tcl/axis.tcl:518 +#: share/axis/tcl/axis.tcl:588 msgid "Stop program execution [ESC]" msgstr "Zatrzymaj wykonywanie programu [ESC]" -#: share/axis/tcl/axis.tcl:528 +#: share/axis/tcl/axis.tcl:598 msgid "Toggle skip lines with '/' [Alt-M /]" msgstr "Przełącz pomijanie linii z '_/' [Alt-M /]" -#: share/axis/tcl/axis.tcl:535 +#: share/axis/tcl/axis.tcl:605 msgid "Toggle optional pause [Alt-M 1]" msgstr "Przełącz opcjonalną pauzę [Alt-M 1]" -#: share/axis/tcl/axis.tcl:544 +#: share/axis/tcl/axis.tcl:614 src/emc/usr_intf/gmoccapy/gmoccapy.glade:549 msgid "Zoom in" msgstr "Powększ" -#: share/axis/tcl/axis.tcl:552 +#: share/axis/tcl/axis.tcl:622 src/emc/usr_intf/gmoccapy/gmoccapy.glade:567 msgid "Zoom out" msgstr "Pomniejsz" -#: share/axis/tcl/axis.tcl:560 +#: share/axis/tcl/axis.tcl:630 msgid "Top view" msgstr "Widok z góry" -#: share/axis/tcl/axis.tcl:568 +#: share/axis/tcl/axis.tcl:638 msgid "Rotated top view" msgstr "Obrócony widok z góry" -#: share/axis/tcl/axis.tcl:576 +#: share/axis/tcl/axis.tcl:646 msgid "Side view" msgstr "Widok z boku" -#: share/axis/tcl/axis.tcl:584 +#: share/axis/tcl/axis.tcl:654 msgid "Front view" msgstr "Widok z przodu" -#: share/axis/tcl/axis.tcl:592 +#: share/axis/tcl/axis.tcl:662 msgid "Perspective view" msgstr "Widok perspektywy" -#: share/axis/tcl/axis.tcl:600 +#: share/axis/tcl/axis.tcl:670 msgid "Toggle between Drag and Rotate Mode [D]" msgstr "Przełącz między trybem obrotu i przesuwu [D]" -#: share/axis/tcl/axis.tcl:615 +#: share/axis/tcl/axis.tcl:685 msgid "Clear live plot [Ctrl-K]" msgstr "Czyść historię ruchu [Ctrl-K]" -#: share/axis/tcl/axis.tcl:766 +#: share/axis/tcl/axis.tcl:836 msgid "Manual Control [F3]" msgstr "Ręczna kontrola [F3]" -#: share/axis/tcl/axis.tcl:767 +#: share/axis/tcl/axis.tcl:837 msgid "MDI [F5]" msgstr "" -#: share/axis/tcl/axis.tcl:781 share/axis/tcl/axis.tcl:2036 -#: share/axis/tcl/axis.tcl:2203 +#: share/axis/tcl/axis.tcl:851 share/axis/tcl/axis.tcl:2158 +#: share/axis/tcl/axis.tcl:2328 msgid "Axis:" msgstr "Oś:" -#: share/axis/tcl/axis.tcl:1102 +#: share/axis/tcl/axis.tcl:1172 src/emc/usr_intf/gscreen/gscreen.glade:2944 msgid "Home Axis" msgstr "Bazuj oś" -#: share/axis/tcl/axis.tcl:1176 +#: share/axis/tcl/axis.tcl:1246 msgid "Spindle:" msgstr "Wrzeciono:" -#: share/axis/tcl/axis.tcl:1223 src/emc/usr_intf/touchy/touchy.glade:946 +#: share/axis/tcl/axis.tcl:1293 src/emc/usr_intf/touchy/touchy.glade:946 +#: src/emc/usr_intf/stepconf/main_page.glade:406 +#: src/emc/usr_intf/gscreen/gscreen.glade:4067 msgid "-" msgstr "" -#: share/axis/tcl/axis.tcl:1237 +#: share/axis/tcl/axis.tcl:1307 src/emc/usr_intf/stepconf/main_page.glade:403 +#: src/emc/usr_intf/gscreen/gscreen.glade:4056 msgid "+" msgstr "" -#: share/axis/tcl/axis.tcl:1242 +#: share/axis/tcl/axis.tcl:1312 msgid "Brake" msgstr "Hamulec" -#: share/axis/tcl/axis.tcl:1289 +#: share/axis/tcl/axis.tcl:1359 msgid "Coolant:" msgstr "Chłodziwo:" -#: share/axis/tcl/axis.tcl:1294 +#: share/axis/tcl/axis.tcl:1364 msgid "Mist" msgstr "Mgła" -#: share/axis/tcl/axis.tcl:1299 +#: share/axis/tcl/axis.tcl:1369 msgid "Flood" msgstr "Płyn" -#: share/axis/tcl/axis.tcl:1371 +#: share/axis/tcl/axis.tcl:1441 msgid "History:" msgstr "Historia:" -#: share/axis/tcl/axis.tcl:1394 +#: share/axis/tcl/axis.tcl:1464 msgid "MDI Command:" msgstr "Polecenie MDI:" -#: share/axis/tcl/axis.tcl:1403 +#: share/axis/tcl/axis.tcl:1473 msgid "Go" msgstr "Wyślij" -#: share/axis/tcl/axis.tcl:1409 +#: share/axis/tcl/axis.tcl:1479 msgid "Active G-Codes:" msgstr "Aktywne G-kody:" -#: share/axis/tcl/axis.tcl:1487 +#: share/axis/tcl/axis.tcl:1557 src/emc/usr_intf/gmoccapy/gmoccapy.glade:771 msgid "Preview" msgstr "Podgląd" -#: share/axis/tcl/axis.tcl:1488 +#: share/axis/tcl/axis.tcl:1558 msgid "DRO" msgstr "" -#: share/axis/tcl/axis.tcl:1575 share/axis/tcl/axis.tcl:1588 +#: share/axis/tcl/axis.tcl:1645 share/axis/tcl/axis.tcl:1658 msgid "Jog Speed:" msgstr "Prędkość posuwu:" -#: share/axis/tcl/axis.tcl:1600 +#: share/axis/tcl/axis.tcl:1670 msgid "Max Velocity:" msgstr "Maksymalna prędkość:" -#: share/axis/tcl/axis.tcl:1629 +#: share/axis/tcl/axis.tcl:1699 msgid "Spindle Override:" msgstr "Skala prędkości wrzeciona:" -#: share/axis/tcl/axis.tcl:1631 share/axis/tcl/axis.tcl:1671 -#: src/emc/usr_intf/pncconf/pncconf.glade:3141 -#: src/emc/usr_intf/pncconf/pncconf.glade:3154 -#: src/emc/usr_intf/pncconf/pncconf.glade:3167 -#: src/emc/usr_intf/pncconf/pncconf.glade:3180 -#: src/emc/usr_intf/pncconf/pncconf.glade:3193 -#: src/emc/usr_intf/pncconf/pncconf.glade:3206 -#: src/emc/usr_intf/pncconf/pncconf.glade:3219 -#: src/emc/usr_intf/pncconf/pncconf.glade:3232 -#: src/emc/usr_intf/pncconf/pncconf.glade:3345 -#: src/emc/usr_intf/pncconf/pncconf.glade:3358 -#: src/emc/usr_intf/pncconf/pncconf.glade:3371 -#: src/emc/usr_intf/pncconf/pncconf.glade:3384 -#: src/emc/usr_intf/pncconf/pncconf.glade:3397 -#: src/emc/usr_intf/pncconf/pncconf.glade:3410 -#: src/emc/usr_intf/pncconf/pncconf.glade:3516 -#: src/emc/usr_intf/pncconf/pncconf.glade:3527 -#: src/emc/usr_intf/pncconf/pncconf.glade:4022 -#: src/emc/usr_intf/pncconf/pncconf.glade:4035 -#: src/emc/usr_intf/pncconf/pncconf.glade:4048 -#: src/emc/usr_intf/pncconf/pncconf.glade:4061 -#: src/emc/usr_intf/pncconf/pncconf.glade:4074 -#: src/emc/usr_intf/pncconf/pncconf.glade:4087 -#: src/emc/usr_intf/pncconf/pncconf.glade:4100 -#: src/emc/usr_intf/pncconf/pncconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:4226 -#: src/emc/usr_intf/pncconf/pncconf.glade:4239 -#: src/emc/usr_intf/pncconf/pncconf.glade:4252 -#: src/emc/usr_intf/pncconf/pncconf.glade:4265 -#: src/emc/usr_intf/pncconf/pncconf.glade:4278 -#: src/emc/usr_intf/pncconf/pncconf.glade:4291 -#: src/emc/usr_intf/pncconf/pncconf.glade:4397 -#: src/emc/usr_intf/pncconf/pncconf.glade:4408 -#: src/emc/usr_intf/pncconf/pncconf.glade:4903 -#: src/emc/usr_intf/pncconf/pncconf.glade:4916 -#: src/emc/usr_intf/pncconf/pncconf.glade:4929 -#: src/emc/usr_intf/pncconf/pncconf.glade:4942 -#: src/emc/usr_intf/pncconf/pncconf.glade:4955 -#: src/emc/usr_intf/pncconf/pncconf.glade:4968 -#: src/emc/usr_intf/pncconf/pncconf.glade:4981 -#: src/emc/usr_intf/pncconf/pncconf.glade:4994 -#: src/emc/usr_intf/pncconf/pncconf.glade:5107 -#: src/emc/usr_intf/pncconf/pncconf.glade:5120 -#: src/emc/usr_intf/pncconf/pncconf.glade:5133 -#: src/emc/usr_intf/pncconf/pncconf.glade:5146 -#: src/emc/usr_intf/pncconf/pncconf.glade:5159 -#: src/emc/usr_intf/pncconf/pncconf.glade:5172 -#: src/emc/usr_intf/pncconf/pncconf.glade:5278 -#: src/emc/usr_intf/pncconf/pncconf.glade:5289 -#: src/emc/usr_intf/pncconf/pncconf.glade:5582 +#: share/axis/tcl/axis.tcl:1701 share/axis/tcl/axis.tcl:1741 +#: share/axis/tcl/axis.tcl:1779 src/emc/usr_intf/pncconf/pncconf.glade:2834 +#: src/emc/usr_intf/pncconf/pncconf.glade:2845 +#: src/emc/usr_intf/pncconf/pncconf.glade:2949 +#: src/emc/usr_intf/pncconf/pncconf.glade:2962 +#: src/emc/usr_intf/pncconf/pncconf.glade:2975 +#: src/emc/usr_intf/pncconf/pncconf.glade:2988 +#: src/emc/usr_intf/pncconf/pncconf.glade:3001 +#: src/emc/usr_intf/pncconf/pncconf.glade:3014 +#: src/emc/usr_intf/pncconf/pncconf.glade:3127 +#: src/emc/usr_intf/pncconf/pncconf.glade:3140 +#: src/emc/usr_intf/pncconf/pncconf.glade:3153 +#: src/emc/usr_intf/pncconf/pncconf.glade:3166 +#: src/emc/usr_intf/pncconf/pncconf.glade:3179 +#: src/emc/usr_intf/pncconf/pncconf.glade:3192 +#: src/emc/usr_intf/pncconf/pncconf.glade:3205 +#: src/emc/usr_intf/pncconf/pncconf.glade:3218 +#: src/emc/usr_intf/pncconf/pncconf.glade:3715 +#: src/emc/usr_intf/pncconf/pncconf.glade:3726 +#: src/emc/usr_intf/pncconf/pncconf.glade:3830 +#: src/emc/usr_intf/pncconf/pncconf.glade:3843 +#: src/emc/usr_intf/pncconf/pncconf.glade:3856 +#: src/emc/usr_intf/pncconf/pncconf.glade:3869 +#: src/emc/usr_intf/pncconf/pncconf.glade:3882 +#: src/emc/usr_intf/pncconf/pncconf.glade:3895 +#: src/emc/usr_intf/pncconf/pncconf.glade:4008 +#: src/emc/usr_intf/pncconf/pncconf.glade:4021 +#: src/emc/usr_intf/pncconf/pncconf.glade:4034 +#: src/emc/usr_intf/pncconf/pncconf.glade:4047 +#: src/emc/usr_intf/pncconf/pncconf.glade:4060 +#: src/emc/usr_intf/pncconf/pncconf.glade:4073 +#: src/emc/usr_intf/pncconf/pncconf.glade:4086 +#: src/emc/usr_intf/pncconf/pncconf.glade:4099 +#: src/emc/usr_intf/pncconf/pncconf.glade:4596 +#: src/emc/usr_intf/pncconf/pncconf.glade:4607 +#: src/emc/usr_intf/pncconf/pncconf.glade:4711 +#: src/emc/usr_intf/pncconf/pncconf.glade:4724 +#: src/emc/usr_intf/pncconf/pncconf.glade:4737 +#: src/emc/usr_intf/pncconf/pncconf.glade:4750 +#: src/emc/usr_intf/pncconf/pncconf.glade:4763 +#: src/emc/usr_intf/pncconf/pncconf.glade:4776 +#: src/emc/usr_intf/pncconf/pncconf.glade:4889 +#: src/emc/usr_intf/pncconf/pncconf.glade:4902 +#: src/emc/usr_intf/pncconf/pncconf.glade:4915 +#: src/emc/usr_intf/pncconf/pncconf.glade:4928 +#: src/emc/usr_intf/pncconf/pncconf.glade:4941 +#: src/emc/usr_intf/pncconf/pncconf.glade:4954 +#: src/emc/usr_intf/pncconf/pncconf.glade:4967 +#: src/emc/usr_intf/pncconf/pncconf.glade:4980 #: src/emc/usr_intf/pncconf/pncconf.glade:5631 -#: src/emc/usr_intf/pncconf/pncconf.glade:5641 +#: src/emc/usr_intf/pncconf/pncconf.glade:5643 +#: src/emc/usr_intf/pncconf/pncconf.glade:5690 msgid "%" msgstr "%" -#: share/axis/tcl/axis.tcl:1711 +#: share/axis/tcl/axis.tcl:1777 +#, fuzzy +msgid "Rapid Override:" +msgstr "Skala prędkości wrzeciona:" + +#: share/axis/tcl/axis.tcl:1819 +#, fuzzy msgid "" -"LinuxCNC/AXIS version $version\n" +"Machinekit/AXIS version $version\n" "\n" -"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff Epler and Chris " -"Radek.\n" +"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff " +"Epler and Chris Radek.\n" "\n" "This is free software, and you are welcome to redistribute it under certain " -"conditions. See the file COPYING, included with LinuxCNC.\n" +"conditions. See the file COPYING, included with Machinekit.\n" "\n" -"Visit the LinuxCNC web site: " +"Visit the Machinekit web site: " msgstr "" "LinuxCNC/AXIS wersja $version\n" "\n" @@ -4975,232 +6866,243 @@ msgstr "" "\n" "Odwiedź stronę internetową LinuxCNC: " -#: share/axis/tcl/axis.tcl:1739 +#: share/axis/tcl/axis.tcl:1847 msgid "About AXIS" msgstr "O AXIS" -#: share/axis/tcl/axis.tcl:1768 +#: share/axis/tcl/axis.tcl:1876 msgid "AXIS Quick Reference" msgstr "AXIS Szybka pomoc" -#: share/axis/tcl/axis.tcl:1903 -msgid "AXIS $::version on $::machine" +#: share/axis/tcl/axis.tcl:2017 +#, fuzzy +msgid "AXIS with MachineKit $::version on $::machine" msgstr "AXIS $::version na $::machine" -#: share/axis/tcl/axis.tcl:1905 +#: share/axis/tcl/axis.tcl:2019 msgid "(no file)" msgstr "(brak pliku)" -#: share/axis/tcl/axis.tcl:1976 share/axis/tcl/axis.tcl:1981 +#: share/axis/tcl/axis.tcl:2091 share/axis/tcl/axis.tcl:2096 msgid "Position:" msgstr "Pozycja:" -#: share/axis/tcl/axis.tcl:1978 +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/gscreen/gscreen.py:3516 msgid "Machine" msgstr "Maszyny" -#: share/axis/tcl/axis.tcl:1978 src/emc/usr_intf/touchy/touchy.glade:155 +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/touchy/touchy.glade:155 msgid "Relative" msgstr "Względna" -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3329 +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3329 msgid "Actual" msgstr "Aktualna" -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3318 +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3318 msgid "Commanded" msgstr "Zadana" -#: share/axis/tcl/axis.tcl:2032 share/axis/tcl/axis.tcl:2203 +#: share/axis/tcl/axis.tcl:2154 share/axis/tcl/axis.tcl:2328 msgid "Joint:" msgstr "Napęd:" -#: share/axis/tcl/axis.tcl:2338 +#: share/axis/tcl/axis.tcl:2463 msgid "Turn spindle counterclockwise [F10]" msgstr "Włącz wrzeciobno w lewo [F10]" -#: share/axis/tcl/axis.tcl:2339 +#: share/axis/tcl/axis.tcl:2464 msgid "Turn spindle clockwise [F9]" msgstr "Włącz wrzeciono w prawo [F9]" -#: share/axis/tcl/axis.tcl:2340 +#: share/axis/tcl/axis.tcl:2465 msgid "Stop spindle [F9/F10]" msgstr "Zatrzymaj wrzeciono [F9/F10]" -#: share/axis/tcl/axis.tcl:2341 +#: share/axis/tcl/axis.tcl:2466 msgid "Turn spindle Faster [F12]" msgstr "Zwiększ obroty wrzeciona [F12]" -#: share/axis/tcl/axis.tcl:2342 +#: share/axis/tcl/axis.tcl:2467 msgid "Turn spindle Slower [F11]" msgstr "Zmniejsz obroty wrzeciona [F11]" -#: share/axis/tcl/axis.tcl:2343 +#: share/axis/tcl/axis.tcl:2468 msgid "Turn spindle brake on [Shift-B] or off [B]" msgstr "Włącz hamulec wrzeciona [Shift-B] lub wyłącz [B]" -#: share/axis/tcl/axis.tcl:2344 +#: share/axis/tcl/axis.tcl:2469 msgid "Turn flood on or off [F8]" msgstr "Włącz lub wyłącz płyn [F8]" -#: share/axis/tcl/axis.tcl:2345 +#: share/axis/tcl/axis.tcl:2470 msgid "Turn mist on or off [F7]" msgstr "Włącz lub wyłącz mgłę [F7]" -#: share/axis/tcl/axis.tcl:2346 +#: share/axis/tcl/axis.tcl:2471 msgid "Send active axis home [Home]" msgstr "Bazuj aktywną oś [Home]" -#: share/axis/tcl/axis.tcl:2347 +#: share/axis/tcl/axis.tcl:2472 msgid "Set G54 offset for active axis [End]" msgstr "UStaw offset G54 dla aktywnej osi [End]" -#: share/axis/tcl/axis.tcl:2348 +#: share/axis/tcl/axis.tcl:2473 msgid "Activate axis [X]" msgstr "Aktywuj oś [X]" -#: share/axis/tcl/axis.tcl:2349 +#: share/axis/tcl/axis.tcl:2474 msgid "Activate axis [Y]" msgstr "Aktywuj oś [Y]" -#: share/axis/tcl/axis.tcl:2350 +#: share/axis/tcl/axis.tcl:2475 msgid "Activate axis [Z]" msgstr "Aktywuj oś [Z]" -#: share/axis/tcl/axis.tcl:2351 +#: share/axis/tcl/axis.tcl:2476 msgid "Activate axis [A]" msgstr "Aktywuj oś [A]" -#: share/axis/tcl/axis.tcl:2352 +#: share/axis/tcl/axis.tcl:2477 msgid "Activate axis [4]" msgstr "Aktywuj oś [4]" -#: share/axis/tcl/axis.tcl:2353 +#: share/axis/tcl/axis.tcl:2478 msgid "Activate axis [5]" msgstr "Aktywuj oś [5]" -#: share/axis/tcl/axis.tcl:2354 share/axis/tcl/axis.tcl:2355 +#: share/axis/tcl/axis.tcl:2479 share/axis/tcl/axis.tcl:2480 msgid "Jog selected axis" msgstr "Przesuwaj aktywną oś" -#: share/axis/tcl/axis.tcl:2357 +#: share/axis/tcl/axis.tcl:2482 msgid "Temporarily allow jogging outside machine limits [L]" msgstr "Czasowo pozwól na poruszanie maszyny poza zakresami [L]" -#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -#: src/emc/usr_intf/pncconf/pncconf.py:449 +#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:47 msgid "Spindle CW" msgstr "Wrzeciono CW" -#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -#: src/emc/usr_intf/pncconf/pncconf.py:449 +#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:48 msgid "Spindle CCW" msgstr "Wrzeciono CCW" #: src/emc/usr_intf/touchy/mdi.py:50 +#, fuzzy +msgid "Set tool number" +msgstr "Przenumeruj" + +#: src/emc/usr_intf/touchy/mdi.py:51 src/emc/usr_intf/gscreen/mdi.py:50 msgid "Input control" msgstr "Kontrola wejścia" -#: src/emc/usr_intf/touchy/mdi.py:53 src/emc/usr_intf/touchy/mdi.py:54 +#: src/emc/usr_intf/touchy/mdi.py:54 src/emc/usr_intf/touchy/mdi.py:55 +#: src/emc/usr_intf/gscreen/mdi.py:53 src/emc/usr_intf/gscreen/mdi.py:54 msgid "Straight rapid" msgstr "Linia przestawcza" -#: src/emc/usr_intf/touchy/mdi.py:55 src/emc/usr_intf/touchy/mdi.py:56 +#: src/emc/usr_intf/touchy/mdi.py:56 src/emc/usr_intf/touchy/mdi.py:57 +#: src/emc/usr_intf/gscreen/mdi.py:55 src/emc/usr_intf/gscreen/mdi.py:56 msgid "Straight feed" msgstr "Linia robocza" -#: src/emc/usr_intf/touchy/mdi.py:57 src/emc/usr_intf/touchy/mdi.py:58 +#: src/emc/usr_intf/touchy/mdi.py:58 src/emc/usr_intf/touchy/mdi.py:59 +#: src/emc/usr_intf/gscreen/mdi.py:57 src/emc/usr_intf/gscreen/mdi.py:58 msgid "Arc CW" msgstr "Łuk CW" -#: src/emc/usr_intf/touchy/mdi.py:59 src/emc/usr_intf/touchy/mdi.py:60 +#: src/emc/usr_intf/touchy/mdi.py:60 src/emc/usr_intf/touchy/mdi.py:61 +#: src/emc/usr_intf/gscreen/mdi.py:59 src/emc/usr_intf/gscreen/mdi.py:60 msgid "Arc CCW" msgstr "Łuk CCW" -#: src/emc/usr_intf/touchy/mdi.py:61 src/emc/usr_intf/touchy/mdi.py:62 +#: src/emc/usr_intf/touchy/mdi.py:62 src/emc/usr_intf/touchy/mdi.py:63 +#: src/emc/usr_intf/gscreen/mdi.py:61 src/emc/usr_intf/gscreen/mdi.py:62 msgid "Dwell" msgstr "Pauza" -#: src/emc/usr_intf/touchy/mdi.py:63 +#: src/emc/usr_intf/touchy/mdi.py:64 src/emc/usr_intf/gscreen/mdi.py:63 msgid "Setup" msgstr "Ustawienia" -#: src/emc/usr_intf/touchy/mdi.py:64 +#: src/emc/usr_intf/touchy/mdi.py:65 src/emc/usr_intf/gscreen/mdi.py:64 msgid "Spindle synchronized feed" msgstr "Prędkość zsynchronizowana z wrzecionem" -#: src/emc/usr_intf/touchy/mdi.py:65 +#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:65 msgid "Rigid tap" msgstr "Gwintowanie" -#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/touchy/mdi.py:67 -#: src/emc/usr_intf/touchy/mdi.py:68 src/emc/usr_intf/touchy/mdi.py:69 +#: src/emc/usr_intf/touchy/mdi.py:67 src/emc/usr_intf/touchy/mdi.py:68 +#: src/emc/usr_intf/touchy/mdi.py:69 src/emc/usr_intf/touchy/mdi.py:70 +#: src/emc/usr_intf/gscreen/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:67 +#: src/emc/usr_intf/gscreen/mdi.py:68 src/emc/usr_intf/gscreen/mdi.py:69 msgid "Probe" msgstr "Sondowanie" -#: src/emc/usr_intf/touchy/mdi.py:70 +#: src/emc/usr_intf/touchy/mdi.py:71 src/emc/usr_intf/gscreen/mdi.py:70 msgid "Radius compensation left" msgstr "Kompensacja promienia po lewej" -#: src/emc/usr_intf/touchy/mdi.py:71 +#: src/emc/usr_intf/touchy/mdi.py:72 src/emc/usr_intf/gscreen/mdi.py:71 msgid "Radius compensation right" msgstr "Kompensacja promienia po prawej" -#: src/emc/usr_intf/touchy/mdi.py:72 +#: src/emc/usr_intf/touchy/mdi.py:73 src/emc/usr_intf/gscreen/mdi.py:72 msgid "Radius compensation left, immediate" msgstr "Kompensacja promienia po lewej, bezzwłocznie" -#: src/emc/usr_intf/touchy/mdi.py:73 +#: src/emc/usr_intf/touchy/mdi.py:74 src/emc/usr_intf/gscreen/mdi.py:73 msgid "Radius compensation right, immediate" msgstr "Kompensacja promienia po prawej, bezzwłocznie" -#: src/emc/usr_intf/touchy/mdi.py:74 +#: src/emc/usr_intf/touchy/mdi.py:75 src/emc/usr_intf/gscreen/mdi.py:74 msgid "Tool length offset" msgstr "Offset długości narzędzia" -#: src/emc/usr_intf/touchy/mdi.py:75 +#: src/emc/usr_intf/touchy/mdi.py:76 src/emc/usr_intf/gscreen/mdi.py:75 msgid "Tool length offset immediate" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:76 +#: src/emc/usr_intf/touchy/mdi.py:77 src/emc/usr_intf/gscreen/mdi.py:76 msgid "Motion in unoffset coordinates" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:77 +#: src/emc/usr_intf/touchy/mdi.py:78 src/emc/usr_intf/gscreen/mdi.py:77 msgid "Continuous mode" msgstr "Posuw ciągły" -#: src/emc/usr_intf/touchy/mdi.py:79 +#: src/emc/usr_intf/touchy/mdi.py:80 src/emc/usr_intf/gscreen/mdi.py:79 msgid "Drill" msgstr "Wiercenie" -#: src/emc/usr_intf/touchy/mdi.py:80 +#: src/emc/usr_intf/touchy/mdi.py:81 src/emc/usr_intf/gscreen/mdi.py:80 msgid "Drill with dwell" msgstr "Wiercenie z pauzą" -#: src/emc/usr_intf/touchy/mdi.py:81 +#: src/emc/usr_intf/touchy/mdi.py:82 src/emc/usr_intf/gscreen/mdi.py:81 msgid "Peck drill" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:82 +#: src/emc/usr_intf/touchy/mdi.py:83 src/emc/usr_intf/gscreen/mdi.py:82 msgid "Chip-break drill" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:83 +#: src/emc/usr_intf/touchy/mdi.py:84 src/emc/usr_intf/gscreen/mdi.py:83 msgid "Bore" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:84 +#: src/emc/usr_intf/touchy/mdi.py:85 src/emc/usr_intf/gscreen/mdi.py:84 msgid "Bore with dwell" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:85 +#: src/emc/usr_intf/touchy/mdi.py:86 src/emc/usr_intf/gscreen/mdi.py:85 msgid "Offset all coordinate systems" msgstr "Przesuń wszystkie systemy współrzędnych" -#: src/emc/usr_intf/touchy/mdi.py:86 +#: src/emc/usr_intf/touchy/mdi.py:87 src/emc/usr_intf/gscreen/mdi.py:86 msgid "CSS Mode" msgstr "Tryb CSS" @@ -5220,6 +7122,7 @@ msgstr "" msgid "LinuxCNC/Touchy" msgstr "" +#. # Touchy is Copyright (c) 2009 Chris Radek # # Touchy 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 2 of the License, or # (at your option) any later version. # # Touchy 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. #: src/emc/usr_intf/touchy/touchy.glade:11 msgid "window1" msgstr "" @@ -5257,12 +7160,20 @@ msgid "zd" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:131 +#: src/emc/usr_intf/gscreen/gscreen.glade:85 +#: src/emc/usr_intf/gscreen/gscreen.glade:213 +#: src/emc/usr_intf/gscreen/gscreen.glade:343 +#: src/emc/usr_intf/gscreen/gscreen.glade:471 +#: src/emc/usr_intf/gscreen/gscreen.glade:599 +#: src/emc/usr_intf/gscreen/gscreen.glade:727 +#: src/emc/usr_intf/gscreen/gscreen.glade:855 +#: src/emc/usr_intf/gscreen/gscreen.glade:983 +#: src/emc/usr_intf/gscreen/gscreen.glade:1111 msgid "DTG" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:143 -#: src/emc/usr_intf/pncconf/pncconf.glade:59755 -#: src/emc/usr_intf/pncconf/pncconf.glade:66590 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Absolute" msgstr "Absolutne" @@ -5347,6 +7258,9 @@ msgid "Estop Reset" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:459 +#: src/emc/usr_intf/stepconf/pport1.glade:21 +#: src/emc/usr_intf/stepconf/pport2.glade:1409 +#: src/emc/usr_intf/gscreen/gscreen.glade:2442 msgid "Estop" msgstr "" @@ -5391,88 +7305,7 @@ msgid "." msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:963 -#: src/emc/usr_intf/pncconf/pncconf.glade:60883 -#: src/emc/usr_intf/pncconf/pncconf.glade:60895 -#: src/emc/usr_intf/pncconf/pncconf.glade:61017 -#: src/emc/usr_intf/pncconf/pncconf.glade:61029 -#: src/emc/usr_intf/pncconf/pncconf.glade:61041 -#: src/emc/usr_intf/pncconf/pncconf.glade:61053 -#: src/emc/usr_intf/pncconf/pncconf.glade:61065 -#: src/emc/usr_intf/pncconf/pncconf.glade:61077 -#: src/emc/usr_intf/pncconf/pncconf.glade:62040 -#: src/emc/usr_intf/pncconf/pncconf.glade:62052 -#: src/emc/usr_intf/pncconf/pncconf.glade:62064 -#: src/emc/usr_intf/pncconf/pncconf.glade:62076 -#: src/emc/usr_intf/pncconf/pncconf.glade:62088 -#: src/emc/usr_intf/pncconf/pncconf.glade:62100 -#: src/emc/usr_intf/pncconf/pncconf.glade:62222 -#: src/emc/usr_intf/pncconf/pncconf.glade:62234 -#: src/emc/usr_intf/pncconf/pncconf.glade:63069 -#: src/emc/usr_intf/pncconf/pncconf.glade:63081 -#: src/emc/usr_intf/pncconf/pncconf.glade:63203 -#: src/emc/usr_intf/pncconf/pncconf.glade:63215 -#: src/emc/usr_intf/pncconf/pncconf.glade:63227 -#: src/emc/usr_intf/pncconf/pncconf.glade:63239 -#: src/emc/usr_intf/pncconf/pncconf.glade:63251 -#: src/emc/usr_intf/pncconf/pncconf.glade:63263 -#: src/emc/usr_intf/pncconf/pncconf.glade:64226 -#: src/emc/usr_intf/pncconf/pncconf.glade:64238 -#: src/emc/usr_intf/pncconf/pncconf.glade:64250 -#: src/emc/usr_intf/pncconf/pncconf.glade:64262 -#: src/emc/usr_intf/pncconf/pncconf.glade:64274 -#: src/emc/usr_intf/pncconf/pncconf.glade:64286 -#: src/emc/usr_intf/pncconf/pncconf.glade:64408 -#: src/emc/usr_intf/pncconf/pncconf.glade:64420 -#: src/emc/usr_intf/pncconf/pncconf.glade:65231 -#: src/emc/usr_intf/pncconf/pncconf.glade:65243 -#: src/emc/usr_intf/pncconf/pncconf.glade:65359 -#: src/emc/usr_intf/pncconf/pncconf.glade:65371 -#: src/emc/usr_intf/pncconf/pncconf.glade:65383 -#: src/emc/usr_intf/pncconf/pncconf.glade:65395 -#: src/emc/usr_intf/pncconf/pncconf.glade:65407 -#: src/emc/usr_intf/pncconf/pncconf.glade:65419 -#: src/emc/usr_intf/pncconf/pncconf.glade:67091 -#: src/emc/usr_intf/pncconf/pncconf.glade:67868 -#: src/emc/usr_intf/pncconf/pncconf.glade:67880 -#: src/emc/usr_intf/pncconf/pncconf.glade:67892 -#: src/emc/usr_intf/pncconf/pncconf.glade:67904 -#: src/emc/usr_intf/pncconf/pncconf.glade:67916 -#: src/emc/usr_intf/pncconf/pncconf.glade:67928 -#: src/emc/usr_intf/pncconf/pncconf.glade:68050 -#: src/emc/usr_intf/pncconf/pncconf.glade:68062 -#: src/emc/usr_intf/pncconf/pncconf.glade:68896 -#: src/emc/usr_intf/pncconf/pncconf.glade:68908 -#: src/emc/usr_intf/pncconf/pncconf.glade:69030 -#: src/emc/usr_intf/pncconf/pncconf.glade:69042 -#: src/emc/usr_intf/pncconf/pncconf.glade:69054 -#: src/emc/usr_intf/pncconf/pncconf.glade:69066 -#: src/emc/usr_intf/pncconf/pncconf.glade:69078 -#: src/emc/usr_intf/pncconf/pncconf.glade:69090 -#: src/emc/usr_intf/pncconf/pncconf.glade:70053 -#: src/emc/usr_intf/pncconf/pncconf.glade:70065 -#: src/emc/usr_intf/pncconf/pncconf.glade:70077 -#: src/emc/usr_intf/pncconf/pncconf.glade:70089 -#: src/emc/usr_intf/pncconf/pncconf.glade:70101 -#: src/emc/usr_intf/pncconf/pncconf.glade:70113 -#: src/emc/usr_intf/pncconf/pncconf.glade:70235 -#: src/emc/usr_intf/pncconf/pncconf.glade:70247 -#: src/emc/usr_intf/pncconf/pncconf.glade:71082 -#: src/emc/usr_intf/pncconf/pncconf.glade:71094 -#: src/emc/usr_intf/pncconf/pncconf.glade:71216 -#: src/emc/usr_intf/pncconf/pncconf.glade:71228 -#: src/emc/usr_intf/pncconf/pncconf.glade:71240 -#: src/emc/usr_intf/pncconf/pncconf.glade:71252 -#: src/emc/usr_intf/pncconf/pncconf.glade:71264 -#: src/emc/usr_intf/pncconf/pncconf.glade:71276 -#: src/emc/usr_intf/pncconf/pncconf.glade:72217 -#: src/emc/usr_intf/pncconf/pncconf.glade:72229 -#: src/emc/usr_intf/pncconf/pncconf.glade:72241 -#: src/emc/usr_intf/pncconf/pncconf.glade:72253 -#: src/emc/usr_intf/pncconf/pncconf.glade:72265 -#: src/emc/usr_intf/pncconf/pncconf.glade:72277 -#: src/emc/usr_intf/pncconf/pncconf.glade:72393 -#: src/emc/usr_intf/pncconf/pncconf.glade:72405 -#: src/emc/usr_intf/pncconf/pncconf.glade:73811 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "0" msgstr "" @@ -5547,6 +7380,7 @@ msgid "label26" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:1539 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4226 msgid "Spindle" msgstr "Wrzeciono" @@ -5593,17 +7427,8 @@ msgid "Distance:" msgstr "Odległość:" #: src/emc/usr_intf/touchy/touchy.glade:2526 -#: src/emc/usr_intf/stepconf/stepconf.glade:4148 -#: src/emc/usr_intf/pncconf/pncconf.glade:60476 -#: src/emc/usr_intf/pncconf/pncconf.glade:61571 -#: src/emc/usr_intf/pncconf/pncconf.glade:62664 -#: src/emc/usr_intf/pncconf/pncconf.glade:63757 -#: src/emc/usr_intf/pncconf/pncconf.glade:64856 -#: src/emc/usr_intf/pncconf/pncconf.glade:67632 -#: src/emc/usr_intf/pncconf/pncconf.glade:68726 -#: src/emc/usr_intf/pncconf/pncconf.glade:69819 -#: src/emc/usr_intf/pncconf/pncconf.glade:70912 -#: src/emc/usr_intf/pncconf/pncconf.glade:71983 +#: src/emc/usr_intf/stepconf/main_page.glade:23 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Velocity:" msgstr "Prędkość:" @@ -5719,6 +7544,7 @@ msgid "" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:3009 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6414 msgid "Status" msgstr "" @@ -5775,6 +7601,8 @@ msgid "Display Options" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:3286 +#: src/emc/usr_intf/stepconf/base.glade:867 +#: src/emc/usr_intf/gscreen/gscreen.glade:3664 msgid "Inch" msgstr "cale" @@ -5815,14 +7643,17 @@ msgid "Program Options" msgstr "Opcje programu" #: src/emc/usr_intf/touchy/touchy.glade:3531 +#: src/emc/usr_intf/gscreen/gscreen.glade:2200 msgid "Preferences" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:3567 +#: src/emc/usr_intf/gscreen/gscreen.glade:1425 msgid "FO: 100%" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:3582 +#: src/emc/usr_intf/gscreen/gscreen.glade:1437 msgid "SO: 100%" msgstr "" @@ -5834,59 +7665,63 @@ msgstr "" msgid "Jogging" msgstr "Posuw" -#: src/emc/usr_intf/touchy/touchy.glade:3637 +#: src/emc/usr_intf/touchy/touchy.glade:3624 +msgid "Start Point" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:3651 msgid ".01" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3650 +#: src/emc/usr_intf/touchy/touchy.glade:3664 msgid ".001" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3666 +#: src/emc/usr_intf/touchy/touchy.glade:3680 msgid ".0001" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3694 +#: src/emc/usr_intf/touchy/touchy.glade:3708 msgid " X " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3706 +#: src/emc/usr_intf/touchy/touchy.glade:3720 msgid " Y " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3721 +#: src/emc/usr_intf/touchy/touchy.glade:3735 msgid " Z " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3736 +#: src/emc/usr_intf/touchy/touchy.glade:3750 msgid " A " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3752 +#: src/emc/usr_intf/touchy/touchy.glade:3766 msgid " B " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3770 +#: src/emc/usr_intf/touchy/touchy.glade:3784 msgid " C " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3788 +#: src/emc/usr_intf/touchy/touchy.glade:3802 msgid " U " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3804 +#: src/emc/usr_intf/touchy/touchy.glade:3818 msgid " V " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3822 +#: src/emc/usr_intf/touchy/touchy.glade:3836 msgid " W " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3855 +#: src/emc/usr_intf/touchy/touchy.glade:3869 msgid "Handwheel" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:53 +#: src/emc/usr_intf/stepconf/stepconf.py:57 msgid "" "Stepconf encountered an error. The following information may be useful in " "troubleshooting:\n" @@ -5896,465 +7731,694 @@ msgstr "" "rozwiązywaniu problemu:\n" "\n" -#: src/emc/usr_intf/stepconf/stepconf.py:70 -#: src/emc/usr_intf/pncconf/pncconf.py:133 +#: src/emc/usr_intf/stepconf/stepconf.py:128 +msgid "Stepconf" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#: src/emc/usr_intf/stepconf/stepconf.py:217 +#: src/emc/usr_intf/stepconf/main_page.glade:557 +#: src/emc/usr_intf/gscreen/gscreen.py:3414 +#: src/emc/usr_intf/gscreen/gscreen.py:3415 +#: src/emc/usr_intf/gscreen/gscreen.glade:4043 +#, fuzzy +msgid "Start" +msgstr "Uruchomienie" + +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Base Information" +msgstr "Podstawowe informacje maszyny" + +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Parallel Port 1" +msgstr "Ustawienia Portu Równoległego" + +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Parallel Port 2" +msgstr "Ustawienia Portu Równoległego" + +#: src/emc/usr_intf/stepconf/stepconf.py:130 +#, fuzzy +msgid "Options" +msgstr "opcja" + +#: src/emc/usr_intf/stepconf/stepconf.py:130 +#, fuzzy +msgid "Axis X" +msgstr "Axis" + +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis Y" +msgstr "Axis" + +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis Z" +msgstr "Axis" + +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis A" +msgstr "Axis" + +#: src/emc/usr_intf/stepconf/stepconf.py:132 +#: src/emc/usr_intf/pncconf/pncconf.py:378 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +msgid "Spindle" +msgstr "Wrzeciono" + +#: src/emc/usr_intf/stepconf/stepconf.py:132 +msgid "Almost Done" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:136 +#: src/emc/usr_intf/pncconf/pncconf.py:135 msgid "Gecko 201" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:71 -#: src/emc/usr_intf/pncconf/pncconf.py:134 +#: src/emc/usr_intf/stepconf/stepconf.py:137 +#: src/emc/usr_intf/pncconf/pncconf.py:136 msgid "Gecko 202" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:72 -#: src/emc/usr_intf/pncconf/pncconf.py:135 +#: src/emc/usr_intf/stepconf/stepconf.py:138 +#: src/emc/usr_intf/pncconf/pncconf.py:137 msgid "Gecko 203v" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:73 -#: src/emc/usr_intf/pncconf/pncconf.py:136 +#: src/emc/usr_intf/stepconf/stepconf.py:139 +#: src/emc/usr_intf/pncconf/pncconf.py:138 msgid "Gecko 210" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:74 -#: src/emc/usr_intf/pncconf/pncconf.py:137 +#: src/emc/usr_intf/stepconf/stepconf.py:140 +#: src/emc/usr_intf/pncconf/pncconf.py:139 msgid "Gecko 212" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:75 -#: src/emc/usr_intf/pncconf/pncconf.py:138 +#: src/emc/usr_intf/stepconf/stepconf.py:141 +#: src/emc/usr_intf/pncconf/pncconf.py:140 msgid "Gecko 320" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:76 -#: src/emc/usr_intf/pncconf/pncconf.py:139 +#: src/emc/usr_intf/stepconf/stepconf.py:142 +#: src/emc/usr_intf/pncconf/pncconf.py:141 msgid "Gecko 540" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:77 -#: src/emc/usr_intf/pncconf/pncconf.py:140 +#: src/emc/usr_intf/stepconf/stepconf.py:143 +#: src/emc/usr_intf/pncconf/pncconf.py:142 msgid "L297" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:78 -#: src/emc/usr_intf/pncconf/pncconf.py:141 +#: src/emc/usr_intf/stepconf/stepconf.py:144 +#: src/emc/usr_intf/pncconf/pncconf.py:143 msgid "PMDX-150" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:79 -#: src/emc/usr_intf/pncconf/pncconf.py:142 +#: src/emc/usr_intf/stepconf/stepconf.py:145 +#: src/emc/usr_intf/stepconf/pport1.glade:32 +#: src/emc/usr_intf/pncconf/pncconf.py:144 msgid "Sherline" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:80 -#: src/emc/usr_intf/pncconf/pncconf.py:143 +#: src/emc/usr_intf/stepconf/stepconf.py:146 +#: src/emc/usr_intf/pncconf/pncconf.py:145 msgid "Xylotex 8S-3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:81 -#: src/emc/usr_intf/pncconf/pncconf.py:144 +#: src/emc/usr_intf/stepconf/stepconf.py:147 +#: src/emc/usr_intf/pncconf/pncconf.py:146 msgid "Parker-Compumotor oem750" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:82 -#: src/emc/usr_intf/pncconf/pncconf.py:145 +#: src/emc/usr_intf/stepconf/stepconf.py:148 +#: src/emc/usr_intf/pncconf/pncconf.py:147 msgid "JVL-SMD41 or 42" msgstr "JVL-SMD41 lub 42" -#: src/emc/usr_intf/stepconf/stepconf.py:83 -#: src/emc/usr_intf/pncconf/pncconf.py:146 +#: src/emc/usr_intf/stepconf/stepconf.py:149 +#: src/emc/usr_intf/pncconf/pncconf.py:148 msgid "Hobbycnc Pro Chopper" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:84 -#: src/emc/usr_intf/pncconf/pncconf.py:147 -msgid "Keling 4030" +#: src/emc/usr_intf/stepconf/stepconf.py:150 +msgid "Kelling 4030" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:153 +#: src/emc/usr_intf/stepconf/stepconf.py:151 +msgid "Leadshine Series" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:190 msgid "X Step" msgstr "X Krok" -#: src/emc/usr_intf/stepconf/stepconf.py:153 +#: src/emc/usr_intf/stepconf/stepconf.py:190 msgid "X Direction" msgstr "X Kierunek" -#: src/emc/usr_intf/stepconf/stepconf.py:153 +#: src/emc/usr_intf/stepconf/stepconf.py:190 msgid "Y Step" msgstr "Y Krok" -#: src/emc/usr_intf/stepconf/stepconf.py:153 +#: src/emc/usr_intf/stepconf/stepconf.py:190 msgid "Y Direction" msgstr "Y Kierunek" -#: src/emc/usr_intf/stepconf/stepconf.py:154 +#: src/emc/usr_intf/stepconf/stepconf.py:191 msgid "Z Step" msgstr "Z Krok" -#: src/emc/usr_intf/stepconf/stepconf.py:154 +#: src/emc/usr_intf/stepconf/stepconf.py:191 msgid "Z Direction" msgstr "Z Kierunek" -#: src/emc/usr_intf/stepconf/stepconf.py:154 +#: src/emc/usr_intf/stepconf/stepconf.py:191 msgid "A Step" msgstr "A Krok" -#: src/emc/usr_intf/stepconf/stepconf.py:154 +#: src/emc/usr_intf/stepconf/stepconf.py:191 msgid "A Direction" msgstr "A Kieruek" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -#: src/emc/usr_intf/pncconf/pncconf.py:449 +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 msgid "Spindle ON" msgstr "Włączenie wrzeciona" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#: src/emc/usr_intf/pncconf/pncconf.py:566 +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:488 msgid "Spindle PWM" msgstr "PWM Wrzeciona" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -#: src/emc/usr_intf/pncconf/pncconf.py:449 +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 msgid "Spindle Brake" msgstr "Hamulec wrzeciona" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 -#: src/emc/usr_intf/pncconf/pncconf.py:450 +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 msgid "Coolant Mist" msgstr "Chłodziwo Mgła" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 -#: src/emc/usr_intf/pncconf/pncconf.py:450 +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 msgid "Coolant Flood" msgstr "Chłodziwo Polewanie" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:442 -#: src/emc/usr_intf/pncconf/pncconf.py:451 +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:370 msgid "ESTOP Out" msgstr "ESTOP Wyjście" -#: src/emc/usr_intf/stepconf/stepconf.py:156 +#: src/emc/usr_intf/stepconf/stepconf.py:193 msgid "Amplifier Enable" msgstr "Włączenie Wzmacnaczy" -#: src/emc/usr_intf/stepconf/stepconf.py:157 -#: src/emc/usr_intf/pncconf/pncconf.py:443 -#: src/emc/usr_intf/pncconf/pncconf.py:452 +#: src/emc/usr_intf/stepconf/stepconf.py:194 +#: src/emc/usr_intf/pncconf/pncconf.py:371 msgid "Charge Pump" msgstr "Włączenie napięcia" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -#: src/emc/usr_intf/pncconf/pncconf.py:453 +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 msgid "Digital out 0" msgstr "Cyfrowe wyjście 0" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -#: src/emc/usr_intf/pncconf/pncconf.py:453 +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 msgid "Digital out 1" msgstr "Cyfrowe wyjście 1" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -#: src/emc/usr_intf/pncconf/pncconf.py:453 +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 msgid "Digital out 2" msgstr "Cyfrowe wyjście 2" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -#: src/emc/usr_intf/pncconf/pncconf.py:453 +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 msgid "Digital out 3" msgstr "Cyfrowe wyjście 3" -#: src/emc/usr_intf/stepconf/stepconf.py:159 -#: src/emc/usr_intf/stepconf/stepconf.py:178 +#: src/emc/usr_intf/stepconf/stepconf.py:196 +#: src/emc/usr_intf/stepconf/stepconf.py:215 +#: src/emc/usr_intf/stepconf/pport1.glade:18 +#: src/emc/usr_intf/stepconf/pport2.glade:1406 +#: src/emc/usr_intf/stepconf/pport2.glade:1420 msgid "Unused" msgstr "Nieużywane" -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 -#: src/emc/usr_intf/pncconf/pncconf.py:480 +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 msgid "ESTOP In" msgstr "Wejście ESTOP" -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 -#: src/emc/usr_intf/pncconf/pncconf.py:480 +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 msgid "Probe In" msgstr "Wejście Sondowania" -#: src/emc/usr_intf/stepconf/stepconf.py:162 +#: src/emc/usr_intf/stepconf/stepconf.py:199 msgid "Spindle Index" msgstr "Indeks Wrzeciona" -#: src/emc/usr_intf/stepconf/stepconf.py:162 +#: src/emc/usr_intf/stepconf/stepconf.py:199 msgid "Spindle Phase A" msgstr "Faza A Wrzeciona" -#: src/emc/usr_intf/stepconf/stepconf.py:162 +#: src/emc/usr_intf/stepconf/stepconf.py:199 msgid "Spindle Phase B" msgstr "Faza B Wrzeciona" -#: src/emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/stepconf.py:200 msgid "Home X" msgstr "Bazowanie X" -#: src/emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/stepconf.py:200 msgid "Home Y" msgstr "Bazowanie Y" -#: src/emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/stepconf.py:200 msgid "Home Z" msgstr "Bazowanie Z" -#: src/emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/stepconf.py:200 msgid "Home A" msgstr "Bazowanie A" -#: src/emc/usr_intf/stepconf/stepconf.py:164 +#: src/emc/usr_intf/stepconf/stepconf.py:201 msgid "Minimum Limit + Home X" msgstr "Limit minimalny + Bazująca X" -#: src/emc/usr_intf/stepconf/stepconf.py:164 +#: src/emc/usr_intf/stepconf/stepconf.py:201 msgid "Minimum Limit + Home Y" msgstr "Limit minimalny + Bazująca Y" -#: src/emc/usr_intf/stepconf/stepconf.py:165 +#: src/emc/usr_intf/stepconf/stepconf.py:202 msgid "Minimum Limit + Home Z" msgstr "Limit minimalny + Bazująca Z" -#: src/emc/usr_intf/stepconf/stepconf.py:165 +#: src/emc/usr_intf/stepconf/stepconf.py:202 msgid "Minimum Limit + Home A" msgstr "Limit minimalny + Bazująca A" -#: src/emc/usr_intf/stepconf/stepconf.py:166 +#: src/emc/usr_intf/stepconf/stepconf.py:203 msgid "Maximum Limit + Home X" msgstr "Limit maksymalny + Bazująca X" -#: src/emc/usr_intf/stepconf/stepconf.py:166 +#: src/emc/usr_intf/stepconf/stepconf.py:203 msgid "Maximum Limit + Home Y" msgstr "Limit maksymalny + Bazująca Y" -#: src/emc/usr_intf/stepconf/stepconf.py:167 +#: src/emc/usr_intf/stepconf/stepconf.py:204 msgid "Maximum Limit + Home Z" msgstr "Limit maksymalny + Bazująca Z" -#: src/emc/usr_intf/stepconf/stepconf.py:167 +#: src/emc/usr_intf/stepconf/stepconf.py:204 msgid "Maximum Limit + Home A" msgstr "Limit maksymalny + Bazująca A" -#: src/emc/usr_intf/stepconf/stepconf.py:168 +#: src/emc/usr_intf/stepconf/stepconf.py:205 msgid "Both Limit + Home X" msgstr "Obydwa limity + Bazująca X" -#: src/emc/usr_intf/stepconf/stepconf.py:168 +#: src/emc/usr_intf/stepconf/stepconf.py:205 msgid "Both Limit + Home Y" msgstr "Obydwa limity + Bazująca Y" -#: src/emc/usr_intf/stepconf/stepconf.py:169 +#: src/emc/usr_intf/stepconf/stepconf.py:206 msgid "Both Limit + Home Z" msgstr "Obydwa limity + Bazująca Z" -#: src/emc/usr_intf/stepconf/stepconf.py:169 +#: src/emc/usr_intf/stepconf/stepconf.py:206 msgid "Both Limit + Home A" msgstr "Obydwa limity + Bazująca A" -#: src/emc/usr_intf/stepconf/stepconf.py:170 +#: src/emc/usr_intf/stepconf/stepconf.py:207 msgid "Minimum Limit X" msgstr "Limit minimalny X" -#: src/emc/usr_intf/stepconf/stepconf.py:170 +#: src/emc/usr_intf/stepconf/stepconf.py:207 msgid "Minimum Limit Y" msgstr "Limit minimalny Y" -#: src/emc/usr_intf/stepconf/stepconf.py:171 +#: src/emc/usr_intf/stepconf/stepconf.py:208 msgid "Minimum Limit Z" msgstr "Limit minimalny Z" -#: src/emc/usr_intf/stepconf/stepconf.py:171 +#: src/emc/usr_intf/stepconf/stepconf.py:208 msgid "Minimum Limit A" msgstr "Limit minimalny A" -#: src/emc/usr_intf/stepconf/stepconf.py:172 +#: src/emc/usr_intf/stepconf/stepconf.py:209 msgid "Maximum Limit X" msgstr "Limit maksymalny X" -#: src/emc/usr_intf/stepconf/stepconf.py:172 +#: src/emc/usr_intf/stepconf/stepconf.py:209 msgid "Maximum Limit Y" msgstr "Limit maksymalny Y" -#: src/emc/usr_intf/stepconf/stepconf.py:173 +#: src/emc/usr_intf/stepconf/stepconf.py:210 msgid "Maximum Limit Z" msgstr "Limit maksymalny Z" -#: src/emc/usr_intf/stepconf/stepconf.py:173 +#: src/emc/usr_intf/stepconf/stepconf.py:210 msgid "Maximum Limit A" msgstr "Limit maksymalny A" -#: src/emc/usr_intf/stepconf/stepconf.py:174 +#: src/emc/usr_intf/stepconf/stepconf.py:211 msgid "Both Limit X" msgstr "Obydwa limity X" -#: src/emc/usr_intf/stepconf/stepconf.py:174 +#: src/emc/usr_intf/stepconf/stepconf.py:211 msgid "Both Limit Y" msgstr "Obydwa limity Y" -#: src/emc/usr_intf/stepconf/stepconf.py:175 +#: src/emc/usr_intf/stepconf/stepconf.py:212 msgid "Both Limit Z" msgstr "Obydwa limity Z" -#: src/emc/usr_intf/stepconf/stepconf.py:175 +#: src/emc/usr_intf/stepconf/stepconf.py:212 msgid "Both Limit A" msgstr "Obydwa limity A" -#: src/emc/usr_intf/stepconf/stepconf.py:176 +#: src/emc/usr_intf/stepconf/stepconf.py:213 msgid "All limits" msgstr "Wszystkie limity" -#: src/emc/usr_intf/stepconf/stepconf.py:176 +#: src/emc/usr_intf/stepconf/stepconf.py:213 msgid "All home" msgstr "Wszystkie bazujące" -#: src/emc/usr_intf/stepconf/stepconf.py:176 +#: src/emc/usr_intf/stepconf/stepconf.py:213 msgid "All limits + homes" msgstr "Wszystkie limity i bazujące" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 msgid "Digital in 0" msgstr "Wejście cyfrowe 0" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 msgid "Digital in 1" msgstr "Wejście cyfrowe 1" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "Digital in 2" -msgstr "Wejście cyfrowe 2" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 2" +msgstr "Wejście cyfrowe 2" + +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 3" +msgstr "Wejście cyfrowe 3" + +#: src/emc/usr_intf/stepconf/stepconf.py:218 +#, fuzzy +msgid "Forward" +msgstr "Wrzeciono Przód" + +#: src/emc/usr_intf/stepconf/stepconf.py:219 +msgid "Done" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:220 +msgid "" +"OK to replace existing custom ladder program?\n" +"Existing Custom.clp will be renamed custom_backup.clp.\n" +"Any existing file named -custom_backup.clp- will be lost. " +msgstr "" +"OK aby zamienić istniejący program PLC?\n" +"Isteniejący Custom.clp zostanie nazwany custom_backup.clp.\n" +"Wszystkie pliki nazwane -custom_backup.clp- zostaną utracone." + +#: src/emc/usr_intf/stepconf/stepconf.py:221 +#: src/emc/usr_intf/pncconf/pncconf.py:8163 +msgid "" +"You edited a ladder program and have selected a different program to copy to " +"your configuration file.\n" +"The edited program will be lost.\n" +"\n" +"Are you sure? " +msgstr "" +"Edytowałeś program PLC i wybrałeś inny program do skopiowania do twojego " +"pliku konfiguracyjnego.\n" +"Edytowany program zostanie utracony.\n" +"Czy jesteś pewien? " + +#: src/emc/usr_intf/stepconf/stepconf.py:222 +msgid "" +"You need to designate an E-stop input pin in the Parallel Port Setup page " +"for this program." +msgstr "" +"Musisz wskazać pin wejściowy E-stop w zakładce Konfiguracji Portu " +"Równoległego dla tego programu." + +#: src/emc/usr_intf/stepconf/stepconf.py:223 +msgid "" +"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" +"Existing custompanel.xml and custom_postgui.hal will be renamed " +"custompanel_backup.xml and postgui_backup.hal.\n" +"Any existing file named custompanel_backup.xml and custom_postgui.hal will " +"be lost. " +msgstr "" +"OK aby zamienić istniejący panel pyvcp i postgui.hal?\n" +"Isteniejący custompanel.xml i custom_postgui.hal zostaną nazwane\n" +"custompanel_backup.xml and postgui_backup.halJakiekolwiek istniejące " +"custompanel_backup.xml and custom_postgui.hal zostaną utracone. " + +#: src/emc/usr_intf/stepconf/stepconf.py:224 +msgid "Quit Stepconf and discard changes?" +msgstr "Wyjść z programu i odrzucić zmiany?" + +#: src/emc/usr_intf/stepconf/stepconf.py:225 +msgid "" +"The configuration has been built and saved.\n" +"Do you want to quit?" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:226 +msgid "" +"You are using a simulated-realtime version of Machinekit, so testing / " +"tuning of hardware is unavailable." +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:227 +#, python-format +msgid "" +"You are using a realtime version of Machinekit but didn't load a realtime " +"kernel so testing / tuning of hardware is unavailable.\n" +"This is possibly because you updated the OS and it doesn't automatically " +"load the RTAI kernel anymore.\n" +"You are using the %(actual)s kernel.\n" +"You need to use kernel:" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:246 +msgid "my-mill" +msgstr "moja-frezarka" + +#: src/emc/usr_intf/stepconf/stepconf.py:585 +#, python-format +msgid "File %r was modified since it was written by stepconf" +msgstr "Plik %r był zmodyfikowany od czasu zapisu przez Stepconf" + +#: src/emc/usr_intf/stepconf/stepconf.py:588 +msgid "" +"Saving this configuration file will discard configuration changes made " +"outside stepconf." +msgstr "" +"Zapisanie tej konfiguracji spowoduje anulowanie zmian w konfiguracji " +"dokonanych poza Stepconf." + +#: src/emc/usr_intf/stepconf/stepconf.py:603 +#: src/emc/usr_intf/pncconf/pncconf.py:1318 +msgid "Continue? " +msgstr "Kontynuować?" + +#: src/emc/usr_intf/stepconf/stepconf.py:604 +#: src/emc/usr_intf/pncconf/pncconf.py:1319 +msgid "yY" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:689 +#: src/emc/usr_intf/pncconf/pncconf.py:3591 +#, python-format +msgid "launch %s" +msgstr "uruchom %s" + +#: src/emc/usr_intf/stepconf/stepconf.py:693 +#, fuzzy +msgid "Desktop Launcher for Machinekit config made by Stepconf" +msgstr "Skrót do konfiguracji LinuxCNC utworzony przez Stepconf" + +#: src/emc/usr_intf/stepconf/stepconf.py:860 +#: src/emc/usr_intf/stepconf/pages.py:145 +msgid "Other" +msgstr "Inne" + +#: src/emc/usr_intf/stepconf/stepconf.py:1295 +#: src/emc/usr_intf/pncconf/pncconf.py:9302 +#, python-format +msgid "%s Axis Test" +msgstr "Test osi %s" + +#: src/emc/usr_intf/stepconf/stepconf.py:1298 +#: src/emc/usr_intf/stepconf/pages.py:617 +msgid "deg / s" +msgstr "st / s" + +#: src/emc/usr_intf/stepconf/stepconf.py:1299 +#: src/emc/usr_intf/stepconf/pages.py:618 +msgid "deg / s²" +msgstr "st / s²" + +#: src/emc/usr_intf/stepconf/stepconf.py:1300 +#: src/emc/usr_intf/stepconf/pages.py:619 +msgid "deg" +msgstr "stopnie" + +#: src/emc/usr_intf/stepconf/stepconf.py:1312 +#: src/emc/usr_intf/stepconf/pages.py:623 +#: src/emc/usr_intf/stepconf/axisx.glade:629 +#: src/emc/usr_intf/stepconf/axisy.glade:615 +#: src/emc/usr_intf/stepconf/axisz.glade:615 +#: src/emc/usr_intf/stepconf/axisa.glade:629 +#: src/emc/usr_intf/pncconf/pncconf.glade:64717 +msgid "mm / s" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:1313 +#: src/emc/usr_intf/stepconf/pages.py:624 +#: src/emc/usr_intf/stepconf/axisx.glade:645 +#: src/emc/usr_intf/stepconf/axisy.glade:631 +#: src/emc/usr_intf/stepconf/axisz.glade:631 +#: src/emc/usr_intf/stepconf/axisa.glade:645 +#: src/emc/usr_intf/pncconf/pncconf.glade:64732 +msgid "mm / s²" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:1326 +#: src/emc/usr_intf/stepconf/pages.py:629 +msgid "in / s" +msgstr "cal / s" + +#: src/emc/usr_intf/stepconf/stepconf.py:1327 +#: src/emc/usr_intf/stepconf/pages.py:630 +msgid "in / s²" +msgstr "cal / s²" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "Digital in 3" -msgstr "Wejście cyfrowe 3" +#: src/emc/usr_intf/stepconf/pages.py:189 +#, fuzzy +msgid "Machinekit 'stepconf' configuration files" +msgstr "Pliki konfiguracyjne 'stepconf' LinuxCNC" -#: src/emc/usr_intf/stepconf/stepconf.py:203 -msgid "my-mill" -msgstr "moja-frezarka" +#: src/emc/usr_intf/stepconf/pages.py:190 +#: src/emc/usr_intf/pncconf/pncconf.py:4257 +msgid "Modify Existing Configuration" +msgstr "Zmodyfikuj instniejącą konfigurację" -#: src/emc/usr_intf/stepconf/stepconf.py:215 -#: src/emc/usr_intf/stepconf/stepconf.py:217 -#: src/emc/usr_intf/pncconf/pncconf.py:983 -#: src/emc/usr_intf/pncconf/pncconf.py:985 -#: src/emc/usr_intf/pncconf/pncconf.py:993 -#: src/emc/usr_intf/pncconf/pncconf.py:995 -msgid "Enter Address" -msgstr "Wprowadź adres" +#: src/emc/usr_intf/stepconf/pages.py:616 +msgid "degree / rev" +msgstr "stopnie / obrót" -#: src/emc/usr_intf/stepconf/stepconf.py:375 -#, python-format -msgid "File %r was modified since it was written by stepconf" -msgstr "Plik %r był zmodyfikowany od czasu zapisu przez Stepconf" +#: src/emc/usr_intf/stepconf/pages.py:620 +msgid "Steps / deg" +msgstr "kroki / stopień" -#: src/emc/usr_intf/stepconf/stepconf.py:378 -msgid "" -"Saving this configuration file will discard configuration changes made " -"outside stepconf." -msgstr "" -"Zapisanie tej konfiguracji spowoduje anulowanie zmian w konfiguracji " -"dokonanych poza Stepconf." +#: src/emc/usr_intf/stepconf/pages.py:622 +#: src/emc/usr_intf/stepconf/axisx.glade:613 +#: src/emc/usr_intf/stepconf/axisy.glade:599 +#: src/emc/usr_intf/stepconf/axisz.glade:599 +#: src/emc/usr_intf/stepconf/axisa.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / rev" +msgstr "mm / obrót" -#: src/emc/usr_intf/stepconf/stepconf.py:393 -#: src/emc/usr_intf/pncconf/pncconf.py:1356 -#: src/emc/usr_intf/pncconf/pncconf.py:1365 -msgid "Continue? " -msgstr "Kontynuować?" +#: src/emc/usr_intf/stepconf/pages.py:626 +#: src/emc/usr_intf/stepconf/axisx.glade:15 +#: src/emc/usr_intf/stepconf/axisy.glade:15 +#: src/emc/usr_intf/stepconf/axisz.glade:15 +#: src/emc/usr_intf/stepconf/axisa.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Steps / mm" +msgstr "kroków / mm" -#: src/emc/usr_intf/stepconf/stepconf.py:394 -#: src/emc/usr_intf/pncconf/pncconf.py:1357 -#: src/emc/usr_intf/pncconf/pncconf.py:1366 -msgid "yY" -msgstr "" +#: src/emc/usr_intf/stepconf/pages.py:628 +msgid "rev / in" +msgstr "obrotów / cal" -#: src/emc/usr_intf/stepconf/stepconf.py:446 -#: src/emc/usr_intf/stepconf/stepconf.py:786 -#, python-format -msgid "# Generated by stepconf at %s" +#: src/emc/usr_intf/stepconf/pages.py:632 +msgid "Steps / in" +msgstr "kroki / cal" + +#: src/emc/usr_intf/stepconf/build_INI.py:45 +#: src/emc/usr_intf/stepconf/build_HAL.py:41 +#, fuzzy, python-format +msgid "# Generated by stepconf 1.1 at %s" msgstr "# Wygenerowane przez Stepconf o %s" -#: src/emc/usr_intf/stepconf/stepconf.py:447 -#: src/emc/usr_intf/stepconf/stepconf.py:787 -#: src/emc/usr_intf/pncconf/pncconf.py:1366 -#: src/emc/usr_intf/pncconf/pncconf.py:2369 -#: src/emc/usr_intf/pncconf/pncconf.py:1375 -#: src/emc/usr_intf/pncconf/pncconf.py:2401 +#: src/emc/usr_intf/stepconf/build_INI.py:46 +#: src/emc/usr_intf/stepconf/build_HAL.py:42 +#: src/emc/usr_intf/pncconf/pncconf.py:1328 +#: src/emc/usr_intf/pncconf/pncconf.py:2422 msgid "# If you make changes to this file, they will be" msgstr "# Jeśli zmodyfikujesz ten plik zmainy zostaną" -#: src/emc/usr_intf/stepconf/stepconf.py:448 -#: src/emc/usr_intf/stepconf/stepconf.py:788 +#: src/emc/usr_intf/stepconf/build_INI.py:47 +#: src/emc/usr_intf/stepconf/build_HAL.py:43 msgid "# overwritten when you run stepconf again" msgstr "# nadpisane gdy uruchomisz ponownie Stepconf" -#: src/emc/usr_intf/stepconf/stepconf.py:516 +#: src/emc/usr_intf/stepconf/build_INI.py:126 msgid "# add halui MDI commands here (max 64) " msgstr "# dodaj polecenia halui MDI (maks 64) " -#: src/emc/usr_intf/stepconf/stepconf.py:991 -#: src/emc/usr_intf/pncconf/pncconf.py:2991 -#: src/emc/usr_intf/pncconf/pncconf.py:3023 +#: src/emc/usr_intf/stepconf/build_HAL.py:275 +#: src/emc/usr_intf/pncconf/pncconf.py:3131 msgid "# **** Setup for external estop ladder program -START ****" msgstr "" "# **** Kofiguracja dla zewnętrznego programu PLC dla stopu awaryjnego -START " "****" -#: src/emc/usr_intf/stepconf/stepconf.py:998 -#: src/emc/usr_intf/pncconf/pncconf.py:2998 -#: src/emc/usr_intf/pncconf/pncconf.py:3030 +#: src/emc/usr_intf/stepconf/build_HAL.py:282 +#: src/emc/usr_intf/pncconf/pncconf.py:3138 msgid "# **** Setup for external estop ladder program -END ****" msgstr "" "# **** Kofiguracja dla zewnętrznego programu PLC dla stopu awaryjnego -END " "****" -#: src/emc/usr_intf/stepconf/stepconf.py:1018 -#: src/emc/usr_intf/pncconf/pncconf.py:3025 -#: src/emc/usr_intf/pncconf/pncconf.py:3057 +#: src/emc/usr_intf/stepconf/build_HAL.py:302 +#: src/emc/usr_intf/pncconf/pncconf.py:3165 msgid "" "# Load Classicladder with modbus master included (GUI must run for Modbus)" msgstr "" "# Uruchom Classicladder z interfejsem modbus master (Modbus musi być " "uruchomione z GUI)" -#: src/emc/usr_intf/stepconf/stepconf.py:1021 -#: src/emc/usr_intf/pncconf/pncconf.py:3030 -#: src/emc/usr_intf/pncconf/pncconf.py:3062 +#: src/emc/usr_intf/stepconf/build_HAL.py:305 +#: src/emc/usr_intf/pncconf/pncconf.py:3170 msgid "# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI" msgstr "# Uruchom Classicladder bez GUI (można prezładować PLC GUI w AXIS GUI" -#: src/emc/usr_intf/stepconf/stepconf.py:1031 -#: src/emc/usr_intf/pncconf/pncconf.py:3112 -#: src/emc/usr_intf/pncconf/pncconf.py:3144 +#: src/emc/usr_intf/stepconf/build_HAL.py:315 +#: src/emc/usr_intf/pncconf/pncconf.py:3252 msgid "Include your PyVCP panel here.\n" msgstr "Dodaj twój panel PyVCP tutaj.\n" -#: src/emc/usr_intf/stepconf/stepconf.py:1040 -#: src/emc/usr_intf/stepconf/stepconf.py:1087 +#: src/emc/usr_intf/stepconf/build_HAL.py:324 +#: src/emc/usr_intf/stepconf/build_HAL.py:370 msgid "# Include your customized HAL commands here" msgstr "# Tutaj dodaj swoje polecenia HAL" -#: src/emc/usr_intf/stepconf/stepconf.py:1041 +#: src/emc/usr_intf/stepconf/build_HAL.py:325 msgid "" "# The commands in this file are run after the AXIS GUI (including PyVCP " "panel) starts" @@ -6362,36 +8426,41 @@ msgstr "" "# Polecenia w tym pliku są wykonywane po uruchomieniu AXIS GUI (włączając " "panel PyVCP)" -#: src/emc/usr_intf/stepconf/stepconf.py:1045 -#: src/emc/usr_intf/pncconf/pncconf.py:3140 -#: src/emc/usr_intf/pncconf/pncconf.py:3172 +#: src/emc/usr_intf/stepconf/build_HAL.py:328 +#: src/emc/usr_intf/pncconf/pncconf.py:3280 msgid "# **** Setup of spindle speed display using pyvcp -START ****" msgstr "" "# **** Konfiguracja wyświetlania prędkości wrzeciona w pyVCP - START ****" -#: src/emc/usr_intf/stepconf/stepconf.py:1047 +#: src/emc/usr_intf/stepconf/build_HAL.py:330 msgid "# **** Use ACTUAL spindle velocity from spindle encoder" msgstr "# **** Używam AKTUALNEJ prędkości wrzeciona z enkodera" -#: src/emc/usr_intf/stepconf/stepconf.py:1048 -msgid "# **** spindle-velocity bounces around so we filter it with lowpass" +#: src/emc/usr_intf/stepconf/build_HAL.py:331 +msgid "" +"# **** spindle-velocity-feedback-rps bounces around so we filter it with " +"lowpass" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1049 +#: src/emc/usr_intf/stepconf/build_HAL.py:332 +#, fuzzy msgid "" -"# **** spindle-velocity is signed so we use absolute component to remove sign" +"# **** spindle-velocity-feedback-rps is signed so we use absolute component " +"to remove sign" msgstr "" +"# prędkość wrzeciona jest ze znakiem wiec używamy komponent abs aby usunąć " +"znak" -#: src/emc/usr_intf/stepconf/stepconf.py:1050 +#: src/emc/usr_intf/stepconf/build_HAL.py:333 msgid "# **** ACTUAL velocity is in RPS not RPM so we scale it." msgstr "" "# **** prędkość AKTUALNA jest w RPS a nie w RPM więc musimy ją zeskalować." -#: src/emc/usr_intf/stepconf/stepconf.py:1059 +#: src/emc/usr_intf/stepconf/build_HAL.py:342 msgid "# **** set up spindle at speed indicator ****" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1072 +#: src/emc/usr_intf/stepconf/build_HAL.py:355 msgid "" "# **** Use COMMANDED spindle velocity from LinuxCNC because no spindle " "encoder was specified" @@ -6399,440 +8468,521 @@ msgstr "" "# **** Używaj ZADANEJ prędkości wrzeciona z LinuxCNC ponieważ nie jest " "zdefiniowany enkoder wrzeciona" -#: src/emc/usr_intf/stepconf/stepconf.py:1073 -msgid "" -"# **** COMANDED velocity is signed so we use absolute component (abs.0) to " -"remove sign" -msgstr "" -"# **** prędkość ZADANA jest ze znakiem więc używamy komponentu (abs.0) aby " -"usunąć znak" - -#: src/emc/usr_intf/stepconf/stepconf.py:1088 +#: src/emc/usr_intf/stepconf/build_HAL.py:371 msgid "# This file will not be overwritten when you run stepconf again" msgstr "# Ten plik nie zostanie nadpisany gdy uruchomisz ponownie Stepconf" -#: src/emc/usr_intf/stepconf/stepconf.py:1095 -#, python-format -msgid "Generated by stepconf at %s" -msgstr "Wygenerowane przez Stepconf o %s" +#: src/emc/usr_intf/stepconf/build_HAL.py:412 +msgid "# This file sets up simulated limits/home/spindle encoder hardware." +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1166 -#: src/emc/usr_intf/pncconf/pncconf.py:3451 -#: src/emc/usr_intf/pncconf/pncconf.py:3483 -#, python-format -msgid "launch %s" -msgstr "uruchom %s" +#: src/emc/usr_intf/stepconf/build_HAL.py:413 +msgid "# This is a generated file do not edit." +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1170 -msgid "Desktop Launcher for LinuxCNC config made by Stepconf" -msgstr "Skrót do konfiguracji LinuxCNC utworzony przez Stepconf" +#: src/emc/usr_intf/stepconf/main_page.glade:35 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Acceleration:" +msgstr "Przyspieszenie:" -#: src/emc/usr_intf/stepconf/stepconf.py:1196 -#: src/emc/usr_intf/pncconf/pncconf.py:3700 -#: src/emc/usr_intf/pncconf/pncconf.py:3744 -#, python-format -msgid "%s Axis Configuration" -msgstr "Konfiguracja osi %s" +#: src/emc/usr_intf/stepconf/main_page.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Jog:" +msgstr "Posuw:" -#: src/emc/usr_intf/stepconf/stepconf.py:1238 -#: src/emc/usr_intf/stepconf/stepconf.py:1337 -msgid "Other" -msgstr "Inne" +#: src/emc/usr_intf/stepconf/main_page.glade:63 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Test Area:" +msgstr "Zakres testowy:" -#: src/emc/usr_intf/stepconf/stepconf.py:1249 -msgid "Quit Stepconf and discard changes?" -msgstr "Wyjść z programu i odrzucić zmiany?" +#: src/emc/usr_intf/stepconf/main_page.glade:97 +msgid "mm/s^2" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1280 -msgid "" -"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " -"of hardware is unavailable." +#: src/emc/usr_intf/stepconf/main_page.glade:138 +msgid "mm/s" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1283 -msgid "" -"You are using a realtime version of LinuxCNC but didn't load a realtime " -"kernel so testing / tuning of hardware is unavailable.\n" -"This is possibly because you updated the OS and it doesn't automatically " -"load the RTAI kernel anymore.\n" +#: src/emc/usr_intf/stepconf/main_page.glade:400 +msgid "±" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1298 -msgid "LinuxCNC 'stepconf' configuration files" -msgstr "Pliki konfiguracyjne 'stepconf' LinuxCNC" +#: src/emc/usr_intf/stepconf/main_page.glade:423 +#, fuzzy +msgid "Stepconf -Stepper Configuration Wizard" +msgstr "Kalibracja Frezarki krokowej LinuxCNC" -#: src/emc/usr_intf/stepconf/stepconf.py:1299 -#: src/emc/usr_intf/pncconf/pncconf.py:4094 -#: src/emc/usr_intf/pncconf/pncconf.py:4138 -msgid "Modify Existing Configuration" -msgstr "Zmodyfikuj instniejącą konfigurację" +#: src/emc/usr_intf/stepconf/main_page.glade:503 +#: src/emc/usr_intf/pncconf/pncconf.glade:2054 +#: src/emc/usr_intf/pncconf/pncconf.glade:2067 +#: src/emc/usr_intf/pncconf/pncconf.glade:2080 +#: src/emc/usr_intf/pncconf/pncconf.glade:2093 +#: src/emc/usr_intf/pncconf/pncconf.glade:2106 +#: src/emc/usr_intf/pncconf/pncconf.glade:2119 +#: src/emc/usr_intf/pncconf/pncconf.glade:2132 +#: src/emc/usr_intf/pncconf/pncconf.glade:2145 +#: src/emc/usr_intf/pncconf/pncconf.glade:2156 +#: src/emc/usr_intf/pncconf/pncconf.glade:2169 +#: src/emc/usr_intf/pncconf/pncconf.glade:2182 +#: src/emc/usr_intf/pncconf/pncconf.glade:2528 +#: src/emc/usr_intf/pncconf/pncconf.glade:2541 +#: src/emc/usr_intf/pncconf/pncconf.glade:2554 +#: src/emc/usr_intf/pncconf/pncconf.glade:8104 +#: src/emc/usr_intf/pncconf/pncconf.glade:8139 +#: src/emc/usr_intf/pncconf/pncconf.glade:63377 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:1342 +#: src/emc/usr_intf/gscreen/gscreen.glade:1360 +#: src/emc/usr_intf/gscreen/gscreen.glade:1378 +msgid "label" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1439 +#: src/emc/usr_intf/stepconf/main_page.glade:605 +#, fuzzy msgid "" -"You need to designate an E-stop input pin in the Parallel Port Setup page " -"for this program." +"This program creates configuration files (.ini and .hal) for \"step and " +"direction\" milling machines and lathes connected to the PC parallel port.\n" +"\n" +"Stepconf requires a minimum 800 X 600 display resolution." msgstr "" -"Musisz wskazać pin wejściowy E-stop w zakładce Konfiguracji Portu " -"Równoległego dla tego programu." +"Ten program tworzy pliki konfiguracyjne (.ini i .hal) dla frezarek i tokarek " +"typu \"krok i kierunek\" podłączonych do portu szeregowego PC.\n" +"Stepconf wymaga rozdzielczości minimum 800x600.\n" +"Możesz zwinąć zakładki 'Ustawienia Czasów Sterownika' i \n" +"'Ustawienia portu szeregowego'" -#: src/emc/usr_intf/stepconf/stepconf.py:1452 -msgid "" -"OK to replace existing custom ladder program?\n" -"Existing Custom.clp will be renamed custom_backup.clp.\n" -"Any existing file named -custom_backup.clp- will be lost. " +#: src/emc/usr_intf/stepconf/main_page.glade:628 +#: src/emc/usr_intf/pncconf/pncconf.glade:28799 +#: src/emc/usr_intf/pncconf/pncconf.glade:35720 +#: src/emc/usr_intf/pncconf/pncconf.glade:42643 +#: src/emc/usr_intf/pncconf/pncconf.glade:49566 +#: src/emc/usr_intf/pncconf/pncconf.glade:56489 +msgid "page 1" msgstr "" -"OK aby zamienić istniejący program PLC?\n" -"Isteniejący Custom.clp zostanie nazwany custom_backup.clp.\n" -"Wszystkie pliki nazwane -custom_backup.clp- zostaną utracone." -#: src/emc/usr_intf/stepconf/stepconf.py:1457 -#: src/emc/usr_intf/pncconf/pncconf.py:7815 -#: src/emc/usr_intf/pncconf/pncconf.py:7899 +#: src/emc/usr_intf/stepconf/base.glade:18 +msgid "XYZ" +msgstr "" + +#: src/emc/usr_intf/stepconf/base.glade:21 +msgid "XYZA" +msgstr "" + +#: src/emc/usr_intf/stepconf/base.glade:24 +#, fuzzy +msgid "XZ (Lathe)" +msgstr "" +"XYZ\n" +"XYZA\n" +"XZ (Tokarka)" + +#: src/emc/usr_intf/stepconf/base.glade:79 +msgid "Step _Time:" +msgstr "Czas trwania kroku:" + +#: src/emc/usr_intf/stepconf/base.glade:113 +#: src/emc/usr_intf/stepconf/base.glade:165 +#: src/emc/usr_intf/stepconf/base.glade:219 +#: src/emc/usr_intf/stepconf/base.glade:271 +#: src/emc/usr_intf/stepconf/base.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:443 +#: src/emc/usr_intf/pncconf/pncconf.glade:8226 +msgid "ns" +msgstr "" + +#: src/emc/usr_intf/stepconf/base.glade:127 +msgid "Step _Space:" +msgstr "Odstęp kroku:" + +#: src/emc/usr_intf/stepconf/base.glade:181 +msgid "Direction _Hold:" +msgstr "Czas podtrzymania kierunku:" + +#: src/emc/usr_intf/stepconf/base.glade:235 +msgid "_Direction Setup:" +msgstr "Czas ustawienia kierunku:" + +#: src/emc/usr_intf/stepconf/base.glade:338 +msgid "Driver Timing Settings" +msgstr "Paramtery czasowe sterownika" + +#: src/emc/usr_intf/stepconf/base.glade:351 msgid "" -"You edited a ladder program and have selected a different program to copy to " -"your configuration file.\n" -"The edited program will be lost.\n" -"\n" -"Are you sure? " +"_Test Base\n" +"Period Jitter " msgstr "" -"Edytowałeś program PLC i wybrałeś inny program do skopiowania do twojego " -"pliku konfiguracyjnego.\n" -"Edytowany program zostanie utracony.\n" -"Czy jesteś pewien? " +"Testuj odchylenie\n" +"okresu bazowego" + +#: src/emc/usr_intf/stepconf/base.glade:372 +msgid "Machine _Name:" +msgstr "_Nazwa maszyny:" + +#: src/emc/usr_intf/stepconf/base.glade:386 +msgid "_Axis configuration:" +msgstr "Konfiguracja osi:" + +#: src/emc/usr_intf/stepconf/base.glade:401 +#, fuzzy +msgid "Reset Default machine _units:" +msgstr "Jednostki maszyny:" + +#: src/emc/usr_intf/stepconf/base.glade:416 +#: src/emc/usr_intf/pncconf/pncconf.glade:245 +msgid "Configuration directory:" +msgstr "Katalog konfiguracji:" + +#: src/emc/usr_intf/stepconf/base.glade:430 +msgid "D_river type:" +msgstr "Typ ste_rownika:" -#: src/emc/usr_intf/stepconf/stepconf.py:1471 +#: src/emc/usr_intf/stepconf/base.glade:545 msgid "" -"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" -"Existing custompanel.xml and custom_postgui.hal will be renamed " -"custompanel_backup.xml and postgui_backup.hal.\n" -"Any existing file named custompanel_backup.xml and custom_postgui.hal will " -"be lost. " +"Driver characteristics: (Multiply by 1000 for times specified in µs or " +"microseconds)" msgstr "" -"OK aby zamienić istniejący panel pyvcp i postgui.hal?\n" -"Isteniejący custompanel.xml i custom_postgui.hal zostaną nazwane\n" -"custompanel_backup.xml and postgui_backup.halJakiekolwiek istniejące " -"custompanel_backup.xml and custom_postgui.hal zostaną utracone. " -#: src/emc/usr_intf/stepconf/stepconf.py:1676 -msgid "degree / rev" -msgstr "stopnie / obrót" +#: src/emc/usr_intf/stepconf/base.glade:573 +msgid "Base Period Maximum _Jitter:" +msgstr "Maksymalne odchylenie okresu bazowego:" -#: src/emc/usr_intf/stepconf/stepconf.py:1677 -#: src/emc/usr_intf/stepconf/stepconf.py:2205 -msgid "deg / s" -msgstr "st / s" +#: src/emc/usr_intf/stepconf/base.glade:630 +msgid "One Parport" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1678 -#: src/emc/usr_intf/stepconf/stepconf.py:2206 -msgid "deg / s²" -msgstr "st / s²" +#: src/emc/usr_intf/stepconf/base.glade:646 +msgid "Two Parports" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1679 -#: src/emc/usr_intf/stepconf/stepconf.py:2207 -msgid "deg" -msgstr "stopnie" +#: src/emc/usr_intf/stepconf/base.glade:663 +#, fuzzy +msgid "Three Parports" +msgstr "Adres trzeciego portu równoległego:" -#: src/emc/usr_intf/stepconf/stepconf.py:1680 -msgid "Steps / deg" -msgstr "kroki / stopień" +#: src/emc/usr_intf/stepconf/base.glade:698 +msgid "Min Base Period:" +msgstr "Minimalny okres bazowy:" -#: src/emc/usr_intf/stepconf/stepconf.py:1682 -#: src/emc/usr_intf/stepconf/stepconf.glade:3589 -#: src/emc/usr_intf/pncconf/pncconf.glade:66138 -#: src/emc/usr_intf/pncconf/pncconf.glade:66424 -#: src/emc/usr_intf/pncconf/pncconf.glade:73276 -#: src/emc/usr_intf/pncconf/pncconf.glade:73598 -msgid "mm / rev" -msgstr "mm / obrót" +#: src/emc/usr_intf/stepconf/base.glade:735 +msgid "Max step rate:" +msgstr "Maksymalna częstotliwość:" -#: src/emc/usr_intf/stepconf/stepconf.py:1683 -#: src/emc/usr_intf/stepconf/stepconf.py:2219 -#: src/emc/usr_intf/stepconf/stepconf.glade:3604 -#: src/emc/usr_intf/pncconf/pncconf.glade:57828 -#: src/emc/usr_intf/pncconf/pncconf.glade:64664 -msgid "mm / s" +#: src/emc/usr_intf/stepconf/base.glade:870 +msgid "MM" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1684 -#: src/emc/usr_intf/stepconf/stepconf.py:2220 -#: src/emc/usr_intf/stepconf/stepconf.glade:3619 -#: src/emc/usr_intf/pncconf/pncconf.glade:57813 -#: src/emc/usr_intf/pncconf/pncconf.glade:64679 -msgid "mm / s²" +#: src/emc/usr_intf/stepconf/start.glade:11 +msgid "Create a _new configuration" +msgstr "Utwórz _nową konfiguracje" + +#: src/emc/usr_intf/stepconf/start.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:130 +msgid "Modify a configuration already created with this program" +msgstr "Zmodyfikować konfiguracje utworzoną przez ten program" + +#: src/emc/usr_intf/stepconf/start.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:118 +msgid "Do you wish to:" +msgstr "Czy chcesz:" + +#: src/emc/usr_intf/stepconf/start.glade:61 +#: src/emc/usr_intf/pncconf/pncconf.glade:100 +msgid "" +"If you have made modifications to this configuration outside this program, " +"they will be lost when you select \"Modify a configuration\"" msgstr "" +"Jeśli dokonałeś modyfikacji tej konfiguracji poza programem, zmiany zostaną " +"utracone jeśli wybierzesz \"Zmodyfikuj konfiguracje\"" -#: src/emc/usr_intf/stepconf/stepconf.py:1686 -#: src/emc/usr_intf/stepconf/stepconf.glade:3075 -#: src/emc/usr_intf/pncconf/pncconf.glade:66888 -#: src/emc/usr_intf/pncconf/pncconf.glade:74012 -msgid "Steps / mm" -msgstr "kroków / mm" +#: src/emc/usr_intf/stepconf/start.glade:76 +msgid "Create a desktop _shortcut (symlink) to configuration files." +msgstr "Utwórz na pulpicie dowiązanie (symlink) do plików konfiguracyjnych." -#: src/emc/usr_intf/stepconf/stepconf.py:1688 -msgid "rev / in" -msgstr "obrotów / cal" +#: src/emc/usr_intf/stepconf/start.glade:93 +msgid "Create a desktop _launcher to start LinuxCNC with this configuration." +msgstr "Utwórz na pulpicie skrót do uruchomienia LinuxCNC z tą konfiguracją." -#: src/emc/usr_intf/stepconf/stepconf.py:1689 -#: src/emc/usr_intf/stepconf/stepconf.py:2233 -msgid "in / s" -msgstr "cal / s" +#: src/emc/usr_intf/stepconf/start.glade:124 +#, fuzzy +msgid "Create simulated hardware configuration." +msgstr "Utwórz _nową konfiguracje" -#: src/emc/usr_intf/stepconf/stepconf.py:1690 -#: src/emc/usr_intf/stepconf/stepconf.py:2234 -msgid "in / s²" -msgstr "cal / s²" +#: src/emc/usr_intf/stepconf/pport1.glade:35 +#, fuzzy +msgid "Xylotex" +msgstr "Wyjścia _Xylotex" -#: src/emc/usr_intf/stepconf/stepconf.py:1692 -msgid "Steps / in" -msgstr "kroki / cal" +#: src/emc/usr_intf/stepconf/pport1.glade:38 +msgid "TB6560 3 axes" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:2202 -#: src/emc/usr_intf/pncconf/pncconf.py:8893 -#: src/emc/usr_intf/pncconf/pncconf.py:9008 -#, python-format -msgid "%s Axis Test" -msgstr "Test osi %s" +#: src/emc/usr_intf/stepconf/pport1.glade:41 +msgid "TB6560 4 axes" +msgstr "" + +#: src/emc/usr_intf/stepconf/pport1.glade:59 +#: src/emc/usr_intf/pncconf/pncconf.glade:62915 +msgid "Pin _1:" +msgstr "" + +#: src/emc/usr_intf/stepconf/pport1.glade:74 +#: src/emc/usr_intf/stepconf/pport2.glade:768 +#: src/emc/usr_intf/pncconf/pncconf.glade:61685 +#: src/emc/usr_intf/pncconf/pncconf.glade:62901 +msgid "Pin _2:" +msgstr "" + +#: src/emc/usr_intf/stepconf/pport1.glade:89 +#: src/emc/usr_intf/stepconf/pport2.glade:814 +#: src/emc/usr_intf/pncconf/pncconf.glade:61668 +#: src/emc/usr_intf/pncconf/pncconf.glade:62887 +msgid "Pin _3:" +msgstr "" + +#: src/emc/usr_intf/stepconf/pport1.glade:104 +#: src/emc/usr_intf/stepconf/pport2.glade:860 +#: src/emc/usr_intf/pncconf/pncconf.glade:61651 +#: src/emc/usr_intf/pncconf/pncconf.glade:62873 +msgid "Pin _4:" +msgstr "" + +#: src/emc/usr_intf/stepconf/pport1.glade:119 +#: src/emc/usr_intf/stepconf/pport2.glade:906 +#: src/emc/usr_intf/pncconf/pncconf.glade:61634 +#: src/emc/usr_intf/pncconf/pncconf.glade:62859 +msgid "Pin _5:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:8 -#: src/emc/usr_intf/stepconf/stepconf.glade:21 -msgid "LinuxCNC Stepper Mill Configuration" -msgstr "Kalibracja Frezarki krokowej LinuxCNC" +#: src/emc/usr_intf/stepconf/pport1.glade:134 +#: src/emc/usr_intf/stepconf/pport2.glade:952 +#: src/emc/usr_intf/pncconf/pncconf.glade:61617 +#: src/emc/usr_intf/pncconf/pncconf.glade:62845 +msgid "Pin _6:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:22 -msgid "" -"This program creates configuration files (.ini and .hal) for \"step and " -"direction\" milling machines and lathes connected to the PC parallel port.\n" -"\n" -"Stepconf requires a minimum 800 X 600 display resolution.\n" -"You may need to collapse the 'Driver Timing Settings' and \n" -"Parallel Port Settings' expanders." +#: src/emc/usr_intf/stepconf/pport1.glade:149 +#: src/emc/usr_intf/stepconf/pport2.glade:998 +#: src/emc/usr_intf/pncconf/pncconf.glade:61600 +#: src/emc/usr_intf/pncconf/pncconf.glade:62831 +msgid "Pin _7:" msgstr "" -"Ten program tworzy pliki konfiguracyjne (.ini i .hal) dla frezarek i tokarek " -"typu \"krok i kierunek\" podłączonych do portu szeregowego PC.\n" -"Stepconf wymaga rozdzielczości minimum 800x600.\n" -"Możesz zwinąć zakładki 'Ustawienia Czasów Sterownika' i \n" -"'Ustawienia portu szeregowego'" -#: src/emc/usr_intf/stepconf/stepconf.glade:51 -msgid "Create a _new configuration" -msgstr "Utwórz _nową konfiguracje" +#: src/emc/usr_intf/stepconf/pport1.glade:164 +#: src/emc/usr_intf/stepconf/pport2.glade:1044 +#: src/emc/usr_intf/pncconf/pncconf.glade:61583 +#: src/emc/usr_intf/pncconf/pncconf.glade:62817 +msgid "Pin _8:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:69 -#: src/emc/usr_intf/pncconf/pncconf.glade:70 -#: src/emc/usr_intf/pncconf/pncconf.glade:130 -msgid "Modify a configuration already created with this program" -msgstr "Zmodyfikować konfiguracje utworzoną przez ten program" +#: src/emc/usr_intf/stepconf/pport1.glade:179 +#: src/emc/usr_intf/stepconf/pport2.glade:1090 +#: src/emc/usr_intf/pncconf/pncconf.glade:61566 +#: src/emc/usr_intf/pncconf/pncconf.glade:62803 +msgid "Pin _9:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:87 -#: src/emc/usr_intf/pncconf/pncconf.glade:88 -#: src/emc/usr_intf/pncconf/pncconf.glade:118 -msgid "Do you wish to:" -msgstr "Czy chcesz:" +#: src/emc/usr_intf/stepconf/pport1.glade:194 +#: src/emc/usr_intf/stepconf/pport2.glade:1137 +#: src/emc/usr_intf/pncconf/pncconf.glade:62789 +msgid "_Pin 14:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:99 -#: src/emc/usr_intf/pncconf/pncconf.glade:100 -msgid "" -"If you have made modifications to this configuration outside this program, " -"they will be lost when you select \"Modify a configuration\"" +#: src/emc/usr_intf/stepconf/pport1.glade:209 +#: src/emc/usr_intf/stepconf/pport2.glade:1185 +#: src/emc/usr_intf/pncconf/pncconf.glade:62775 +msgid "P_in 16:" msgstr "" -"Jeśli dokonałeś modyfikacji tej konfiguracji poza programem, zmiany zostaną " -"utracone jeśli wybierzesz \"Zmodyfikuj konfiguracje\"" -#: src/emc/usr_intf/stepconf/stepconf.glade:116 -msgid "Create a desktop _shortcut (symlink) to configuration files." -msgstr "Utwórz na pulpicie dowiązanie (symlink) do plików konfiguracyjnych." +#: src/emc/usr_intf/stepconf/pport1.glade:224 +#: src/emc/usr_intf/stepconf/pport2.glade:1233 +#: src/emc/usr_intf/pncconf/pncconf.glade:62761 +msgid "Pi_n 17:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:133 -msgid "Create a desktop _launcher to start LinuxCNC with this configuration." -msgstr "Utwórz na pulpicie skrót do uruchomienia LinuxCNC z tą konfiguracją." +#: src/emc/usr_intf/stepconf/pport1.glade:470 +#: src/emc/usr_intf/stepconf/pport2.glade:692 +msgid "Outputs (PC to Mill):" +msgstr "Wyjścia (PC do Frezarki):" -#: src/emc/usr_intf/stepconf/stepconf.glade:169 -#: src/emc/usr_intf/pncconf/pncconf.glade:175 -msgid "Basic machine information" -msgstr "Podstawowe informacje maszyny" +#: src/emc/usr_intf/stepconf/pport1.glade:483 +#: src/emc/usr_intf/stepconf/pport2.glade:427 +#: src/emc/usr_intf/pncconf/pncconf.glade:61701 +msgid "Pin 1_0:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:327 -msgid "Step _Time:" -msgstr "Czas trwania kroku:" +#: src/emc/usr_intf/stepconf/pport1.glade:500 +#: src/emc/usr_intf/stepconf/pport2.glade:475 +#: src/emc/usr_intf/pncconf/pncconf.glade:61717 +msgid "Pin 1_1:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:356 -#: src/emc/usr_intf/stepconf/stepconf.glade:402 -#: src/emc/usr_intf/stepconf/stepconf.glade:449 -#: src/emc/usr_intf/stepconf/stepconf.glade:494 -#: src/emc/usr_intf/stepconf/stepconf.glade:909 -#: src/emc/usr_intf/pncconf/pncconf.glade:458 -#: src/emc/usr_intf/pncconf/pncconf.glade:8256 -#: src/emc/usr_intf/pncconf/pncconf.glade:435 -#: src/emc/usr_intf/pncconf/pncconf.glade:8218 -msgid "ns" +#: src/emc/usr_intf/stepconf/pport1.glade:517 +#: src/emc/usr_intf/stepconf/pport2.glade:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:61733 +msgid "Pin 1_2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:369 -msgid "Step _Space:" -msgstr "Odstęp kroku:" +#: src/emc/usr_intf/stepconf/pport1.glade:534 +#: src/emc/usr_intf/stepconf/pport2.glade:571 +#: src/emc/usr_intf/pncconf/pncconf.glade:61749 +msgid "Pin 1_3:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:417 -msgid "Direction _Hold:" -msgstr "Czas podtrzymania kierunku:" +#: src/emc/usr_intf/stepconf/pport1.glade:551 +#: src/emc/usr_intf/stepconf/pport2.glade:619 +#: src/emc/usr_intf/pncconf/pncconf.glade:61765 +msgid "Pin 1_5:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:464 -msgid "_Direction Setup:" -msgstr "Czas ustawienia kierunku:" +#: src/emc/usr_intf/stepconf/pport1.glade:590 +#: src/emc/usr_intf/stepconf/pport2.glade:16 +msgid "Inputs (Mill to PC):" +msgstr "Wejścia (Frezarka do PC):" -#: src/emc/usr_intf/stepconf/stepconf.glade:512 -msgid "Driver Timing Settings" -msgstr "Paramtery czasowe sterownika" +#: src/emc/usr_intf/stepconf/pport1.glade:618 +#: src/emc/usr_intf/stepconf/pport1.glade:632 +#: src/emc/usr_intf/stepconf/pport2.glade:29 +#: src/emc/usr_intf/stepconf/pport2.glade:702 +#: src/emc/usr_intf/pncconf/pncconf.glade:62335 +#: src/emc/usr_intf/pncconf/pncconf.glade:62348 +msgid "Invert" +msgstr "Odwróć" + +#: src/emc/usr_intf/stepconf/pport1.glade:1018 +msgid "Output pinout presets:" +msgstr "Schematy pinów wyjściowych:" -#: src/emc/usr_intf/stepconf/stepconf.glade:538 -msgid "First Parport _Base Address:" +#: src/emc/usr_intf/stepconf/pport1.glade:1096 +#, fuzzy +msgid "Parport _Base Address:" msgstr "Adres pierwszego portu równoległego:" -#: src/emc/usr_intf/stepconf/stepconf.glade:564 -msgid " Out" +#: src/emc/usr_intf/stepconf/pport1.glade:1132 +msgid "Preset" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:575 -#: src/emc/usr_intf/stepconf/stepconf.glade:591 -msgid "" -"Out\n" -"In" +#: src/emc/usr_intf/stepconf/pport2.glade:47 +msgid "Pin 2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:633 -msgid "S_econd Parport Address:" -msgstr "Adres drugiego portu równoległego:" +#: src/emc/usr_intf/stepconf/pport2.glade:94 +msgid "Pin 3:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:650 -msgid "T_hird Parport Address:" -msgstr "Adres trzeciego portu równoległego:" +#: src/emc/usr_intf/stepconf/pport2.glade:141 +msgid "Pin 4:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:667 -msgid " Parallel Port Settings" -msgstr "Ustawienia Portu Równoległego" +#: src/emc/usr_intf/stepconf/pport2.glade:188 +msgid "Pin 5:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:684 -msgid "" -"_Test Base\n" -"Period Jitter " +#: src/emc/usr_intf/stepconf/pport2.glade:235 +msgid "Pin 6:" msgstr "" -"Testuj odchylenie\n" -"okresu bazowego" -#: src/emc/usr_intf/stepconf/stepconf.glade:703 -msgid "Machine _Name:" -msgstr "_Nazwa maszyny:" +#: src/emc/usr_intf/stepconf/pport2.glade:282 +msgid "Pin 7:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:716 -msgid "_Axis configuration:" -msgstr "Konfiguracja osi:" +#: src/emc/usr_intf/stepconf/pport2.glade:329 +msgid "Pin 8:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:730 -msgid "Machine _units:" -msgstr "Jednostki maszyny:" +#: src/emc/usr_intf/stepconf/pport2.glade:376 +msgid "Pin 9:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:744 -#: src/emc/usr_intf/pncconf/pncconf.glade:246 -msgid "Configuration directory:" -msgstr "Katalog konfiguracji:" +#: src/emc/usr_intf/stepconf/pport2.glade:721 +msgid "Pin _1: " +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:757 -msgid "D_river type:" -msgstr "Typ ste_rownika:" +#: src/emc/usr_intf/stepconf/pport2.glade:1431 +#, fuzzy +msgid "Out" +msgstr "Wytnij" -#: src/emc/usr_intf/stepconf/stepconf.glade:785 -#: src/emc/usr_intf/pncconf/pncconf.glade:326 -msgid "" -"Inch\n" -"Millimeter" +#: src/emc/usr_intf/stepconf/pport2.glade:1434 +#, fuzzy +msgid "In" +msgstr "Odwróć" + +#: src/emc/usr_intf/stepconf/spindle.glade:23 +msgid "Use spindle-at-speed:" msgstr "" -"Cale\n" -"Milimetry" -#: src/emc/usr_intf/stepconf/stepconf.glade:800 -#: src/emc/usr_intf/pncconf/pncconf.glade:291 -msgid "" -"XYZ\n" -"XYZA\n" -"XZ (Lathe)" +#: src/emc/usr_intf/stepconf/spindle.glade:64 +msgid "Speed display filter gain:" msgstr "" -"XYZ\n" -"XYZA\n" -"XZ (Tokarka)" -#: src/emc/usr_intf/stepconf/stepconf.glade:847 -msgid "" -"Driver characteristics: (Multiply by 1000 for times specified in µs or " -"microseconds)\n" -" Additional signal conditioning or isolation such as optocouplers " -"and RC filters\n" -" can impose timing constraints of their own, in addition to those of " -"the driver." -msgstr "" -"Charakterystyka sterownika: (Pomnóż przez 1000 dla określenia czasów w µs " -"lub mikrosekundach)\n" -"\n" -" Dodatkowe filtrowanie sygnału lub izolowanie za pomocą " -"optoizolatorów i filtrów rez/kond\n" -" może nakładać parametry czasowe, oprócz tych w sterowniku." +#: src/emc/usr_intf/stepconf/spindle.glade:99 +msgid "Calibration:" +msgstr "Kalibracja:" -#: src/emc/usr_intf/stepconf/stepconf.glade:875 -msgid "Base Period Maximum _Jitter:" -msgstr "Maksymalne odchylenie okresu bazowego:" +#: src/emc/usr_intf/stepconf/spindle.glade:113 +msgid "_Speed 1:" +msgstr "Prędkość 1:" -#: src/emc/usr_intf/stepconf/stepconf.glade:924 -msgid "Max step rate:" -msgstr "Maksymalna częstotliwość:" +#: src/emc/usr_intf/stepconf/spindle.glade:129 +msgid "_PWM 1:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:940 -msgid "Min Base Period:" -msgstr "Minimalny okres bazowy:" +#: src/emc/usr_intf/stepconf/spindle.glade:148 +msgid "S_peed 2:" +msgstr "_Prędkość 2:" -#: src/emc/usr_intf/stepconf/stepconf.glade:956 -msgid "" -"_Onscreen prompt for\n" -"tool change" +#: src/emc/usr_intf/stepconf/spindle.glade:164 +msgid "P_WM 2:" msgstr "" -"Komunikat o \n" -" zmianie narzędzia" -#: src/emc/usr_intf/stepconf/stepconf.glade:1015 -msgid "Advanced Configuration Options" -msgstr "Zaawansowane Opcje Konfiguracyjne" +#: src/emc/usr_intf/stepconf/spindle.glade:183 +msgid "PWM _Rate:" +msgstr "Częstotliwość PWM:" + +#: src/emc/usr_intf/stepconf/spindle.glade:285 +msgid "_Cycles per revolution:" +msgstr "Cykli na obrót:" + +#: src/emc/usr_intf/stepconf/spindle.glade:347 +msgid "Enter 0 Hz for \"PDM\" mode" +msgstr "Wprowadź 0 Hz dla trybu PDM" + +#: src/emc/usr_intf/stepconf/spindle.glade:360 +msgid "Scale %" +msgstr "Skala %" -#: src/emc/usr_intf/stepconf/stepconf.glade:1033 +#: src/emc/usr_intf/stepconf/options.glade:50 msgid "Include Halui user interface component" msgstr "Dołącz Halui komponent interfejsu użytkownika" -#: src/emc/usr_intf/stepconf/stepconf.glade:1074 -#: src/emc/usr_intf/pncconf/pncconf.glade:6745 +#: src/emc/usr_intf/stepconf/options.glade:102 +#: src/emc/usr_intf/pncconf/pncconf.glade:6753 msgid "Blank program" msgstr "Pusty program" -#: src/emc/usr_intf/stepconf/stepconf.glade:1089 -#: src/emc/usr_intf/pncconf/pncconf.glade:6760 +#: src/emc/usr_intf/stepconf/options.glade:119 +#: src/emc/usr_intf/pncconf/pncconf.glade:6768 msgid "Spindle speed display " msgstr "wyświetlanie prędkości wrzeciona" -#: src/emc/usr_intf/stepconf/stepconf.glade:1105 -#: src/emc/usr_intf/stepconf/stepconf.glade:1543 -#: src/emc/usr_intf/pncconf/pncconf.glade:6791 -#: src/emc/usr_intf/pncconf/pncconf.glade:7112 -#: src/emc/usr_intf/pncconf/pncconf.glade:59393 -#: src/emc/usr_intf/pncconf/pncconf.glade:66313 +#: src/emc/usr_intf/stepconf/options.glade:136 +#: src/emc/usr_intf/stepconf/options.glade:671 +#: src/emc/usr_intf/pncconf/pncconf.glade:6799 +#: src/emc/usr_intf/pncconf/pncconf.glade:7120 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Existing custom program" msgstr "Istniejący program" -#: src/emc/usr_intf/stepconf/stepconf.glade:1120 -#: src/emc/usr_intf/stepconf/stepconf.glade:1559 -#: src/emc/usr_intf/pncconf/pncconf.glade:6806 -#: src/emc/usr_intf/pncconf/pncconf.glade:59409 -#: src/emc/usr_intf/pncconf/pncconf.glade:66329 +#: src/emc/usr_intf/stepconf/options.glade:153 +#: src/emc/usr_intf/stepconf/options.glade:688 +#: src/emc/usr_intf/pncconf/pncconf.glade:6814 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Include connections to HAL" msgstr "Dołącz połączenia HAL" -#: src/emc/usr_intf/stepconf/stepconf.glade:1154 -#: src/emc/usr_intf/pncconf/pncconf.glade:6989 -#: src/emc/usr_intf/pncconf/pncconf.glade:7537 +#: src/emc/usr_intf/stepconf/options.glade:202 +#: src/emc/usr_intf/pncconf/pncconf.glade:6997 +#: src/emc/usr_intf/pncconf/pncconf.glade:7545 msgid "" "_Display\n" "sample\n" @@ -6842,74 +8992,65 @@ msgstr "" "przykładowy\n" "panel" -#: src/emc/usr_intf/stepconf/stepconf.glade:1188 -#: src/emc/usr_intf/pncconf/pncconf.glade:7048 +#: src/emc/usr_intf/stepconf/options.glade:243 +#: src/emc/usr_intf/pncconf/pncconf.glade:7056 msgid "Include custom PyVCP GUI panel" msgstr "Dołącz panel PyVCP GUI" -#: src/emc/usr_intf/stepconf/stepconf.glade:1321 -#: src/emc/usr_intf/pncconf/pncconf.glade:59199 -#: src/emc/usr_intf/pncconf/pncconf.glade:66119 +#: src/emc/usr_intf/stepconf/options.glade:414 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid " Number of analog (float) out pins:" msgstr "Liczba analogowych (float) pinów wyjścowych:" -#: src/emc/usr_intf/stepconf/stepconf.glade:1335 -#: src/emc/usr_intf/pncconf/pncconf.glade:59184 -#: src/emc/usr_intf/pncconf/pncconf.glade:66104 +#: src/emc/usr_intf/stepconf/options.glade:429 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid " Number of analog (float) in pins:" msgstr "Liczba analogowych (float) pinów wejścowych:" -#: src/emc/usr_intf/stepconf/stepconf.glade:1349 -#: src/emc/usr_intf/pncconf/pncconf.glade:59169 -#: src/emc/usr_intf/pncconf/pncconf.glade:66089 +#: src/emc/usr_intf/stepconf/options.glade:444 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid " Number of analog (s32) out pins:" msgstr "Liczba analogowych (s32) pinów wyjścowych:" -#: src/emc/usr_intf/stepconf/stepconf.glade:1363 -#: src/emc/usr_intf/pncconf/pncconf.glade:59153 -#: src/emc/usr_intf/pncconf/pncconf.glade:66073 +#: src/emc/usr_intf/stepconf/options.glade:459 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid " Number of analog (s32) in pins:" msgstr "Liczba analogowych (s32) pinów wejścowych:" -#: src/emc/usr_intf/stepconf/stepconf.glade:1378 +#: src/emc/usr_intf/stepconf/options.glade:475 msgid "Number of digital out pins:" msgstr "Liczba cyfrowych pinów wyjścowych:" -#: src/emc/usr_intf/stepconf/stepconf.glade:1403 +#: src/emc/usr_intf/stepconf/options.glade:506 msgid "Number of digital in pins:" msgstr "Liczba cyfrowych pinów wejścowych:" -#: src/emc/usr_intf/stepconf/stepconf.glade:1414 +#: src/emc/usr_intf/stepconf/options.glade:518 msgid "setup number of external pins" msgstr "ustaw liczbę zewnętrznych pinów" -#: src/emc/usr_intf/stepconf/stepconf.glade:1429 -#: src/emc/usr_intf/pncconf/pncconf.glade:59213 -#: src/emc/usr_intf/pncconf/pncconf.glade:66133 +#: src/emc/usr_intf/stepconf/options.glade:533 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Include modbus master support" msgstr "Dołącz obsługę modbus master" -#: src/emc/usr_intf/stepconf/stepconf.glade:1500 -#: src/emc/usr_intf/pncconf/pncconf.glade:59333 -#: src/emc/usr_intf/pncconf/pncconf.glade:66253 +#: src/emc/usr_intf/stepconf/options.glade:625 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Blank ladder program" msgstr "Pusty program PLC" -#: src/emc/usr_intf/stepconf/stepconf.glade:1513 -#: src/emc/usr_intf/pncconf/pncconf.glade:59346 -#: src/emc/usr_intf/pncconf/pncconf.glade:66266 +#: src/emc/usr_intf/stepconf/options.glade:638 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Estop ladder program" msgstr "Program PLC stopu awaryjnego" -#: src/emc/usr_intf/stepconf/stepconf.glade:1527 -#: src/emc/usr_intf/pncconf/pncconf.glade:59377 -#: src/emc/usr_intf/pncconf/pncconf.glade:66297 +#: src/emc/usr_intf/stepconf/options.glade:654 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Serial modbus program" msgstr "Szeregowy modbus program" -#: src/emc/usr_intf/stepconf/stepconf.glade:1592 -#: src/emc/usr_intf/pncconf/pncconf.glade:59443 -#: src/emc/usr_intf/pncconf/pncconf.glade:66363 +#: src/emc/usr_intf/stepconf/options.glade:740 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" "Edit ladder\n" "program" @@ -6917,341 +9058,192 @@ msgstr "" "Edytuj program\n" "PLC" -#: src/emc/usr_intf/stepconf/stepconf.glade:1628 -#: src/emc/usr_intf/pncconf/pncconf.glade:59479 -#: src/emc/usr_intf/pncconf/pncconf.glade:66399 +#: src/emc/usr_intf/stepconf/options.glade:781 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Include _Classicladder PLC" msgstr "Dołącz Classicladder PLC" -#: src/emc/usr_intf/stepconf/stepconf.glade:1653 -msgid "Parallel Port Setup" -msgstr "Ustawienia Portu Równoległego" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1760 -#: src/emc/usr_intf/pncconf/pncconf.glade:54010 -#: src/emc/usr_intf/pncconf/pncconf.glade:62907 -msgid "Pin _1:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1774 -#: src/emc/usr_intf/pncconf/pncconf.glade:54024 -#: src/emc/usr_intf/pncconf/pncconf.glade:55239 -#: src/emc/usr_intf/pncconf/pncconf.glade:61677 -#: src/emc/usr_intf/pncconf/pncconf.glade:62893 -msgid "Pin _2:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1788 -#: src/emc/usr_intf/pncconf/pncconf.glade:54038 -#: src/emc/usr_intf/pncconf/pncconf.glade:55256 -#: src/emc/usr_intf/pncconf/pncconf.glade:61660 -#: src/emc/usr_intf/pncconf/pncconf.glade:62879 -msgid "Pin _3:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1802 -#: src/emc/usr_intf/pncconf/pncconf.glade:54052 -#: src/emc/usr_intf/pncconf/pncconf.glade:55273 -#: src/emc/usr_intf/pncconf/pncconf.glade:61643 -#: src/emc/usr_intf/pncconf/pncconf.glade:62865 -msgid "Pin _4:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1816 -#: src/emc/usr_intf/pncconf/pncconf.glade:54066 -#: src/emc/usr_intf/pncconf/pncconf.glade:55290 -#: src/emc/usr_intf/pncconf/pncconf.glade:61626 -#: src/emc/usr_intf/pncconf/pncconf.glade:62851 -msgid "Pin _5:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1830 -#: src/emc/usr_intf/pncconf/pncconf.glade:54080 -#: src/emc/usr_intf/pncconf/pncconf.glade:55307 -#: src/emc/usr_intf/pncconf/pncconf.glade:61609 -#: src/emc/usr_intf/pncconf/pncconf.glade:62837 -msgid "Pin _6:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1844 -#: src/emc/usr_intf/pncconf/pncconf.glade:54094 -#: src/emc/usr_intf/pncconf/pncconf.glade:55324 -#: src/emc/usr_intf/pncconf/pncconf.glade:61592 -#: src/emc/usr_intf/pncconf/pncconf.glade:62823 -msgid "Pin _7:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1858 -#: src/emc/usr_intf/pncconf/pncconf.glade:54108 -#: src/emc/usr_intf/pncconf/pncconf.glade:55341 -#: src/emc/usr_intf/pncconf/pncconf.glade:61575 -#: src/emc/usr_intf/pncconf/pncconf.glade:62809 -msgid "Pin _8:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1872 -#: src/emc/usr_intf/pncconf/pncconf.glade:54122 -#: src/emc/usr_intf/pncconf/pncconf.glade:55358 -#: src/emc/usr_intf/pncconf/pncconf.glade:61558 -#: src/emc/usr_intf/pncconf/pncconf.glade:62795 -msgid "Pin _9:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1886 -#: src/emc/usr_intf/pncconf/pncconf.glade:54136 -#: src/emc/usr_intf/pncconf/pncconf.glade:62781 -msgid "_Pin 14:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1900 -#: src/emc/usr_intf/pncconf/pncconf.glade:54150 -#: src/emc/usr_intf/pncconf/pncconf.glade:62767 -msgid "P_in 16:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1914 -#: src/emc/usr_intf/pncconf/pncconf.glade:54164 -#: src/emc/usr_intf/pncconf/pncconf.glade:62753 -msgid "Pi_n 17:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2258 -msgid "Outputs (PC to Mill):" -msgstr "Wyjścia (PC do Frezarki):" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2270 -#: src/emc/usr_intf/pncconf/pncconf.glade:55222 -#: src/emc/usr_intf/pncconf/pncconf.glade:61693 -msgid "Pin 1_0:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2286 -#: src/emc/usr_intf/pncconf/pncconf.glade:55206 -#: src/emc/usr_intf/pncconf/pncconf.glade:61709 -msgid "Pin 1_1:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2302 -#: src/emc/usr_intf/pncconf/pncconf.glade:55190 -#: src/emc/usr_intf/pncconf/pncconf.glade:61725 -msgid "Pin 1_2:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2318 -#: src/emc/usr_intf/pncconf/pncconf.glade:55174 -#: src/emc/usr_intf/pncconf/pncconf.glade:61741 -msgid "Pin 1_3:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2334 -#: src/emc/usr_intf/pncconf/pncconf.glade:55158 -#: src/emc/usr_intf/pncconf/pncconf.glade:61757 -msgid "Pin 1_5:" +#: src/emc/usr_intf/stepconf/options.glade:802 +#, fuzzy +msgid "_Onscreen prompt for manual tool change" msgstr "" +"Komunikat o \n" +" zmianie narzędzia" -#: src/emc/usr_intf/stepconf/stepconf.glade:2399 -msgid "Inputs (Mill to PC):" -msgstr "Wejścia (Frezarka do PC):" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2425 -#: src/emc/usr_intf/stepconf/stepconf.glade:2438 -#: src/emc/usr_intf/pncconf/pncconf.glade:54578 -#: src/emc/usr_intf/pncconf/pncconf.glade:54591 -#: src/emc/usr_intf/pncconf/pncconf.glade:62327 -#: src/emc/usr_intf/pncconf/pncconf.glade:62340 -msgid "Invert" -msgstr "Odwróć" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2887 -msgid "_Sherline Outputs" -msgstr "Wyjścia _Sherline" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2905 -msgid "_Xylotex Outputs" -msgstr "Wyjścia _Xylotex" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2923 -msgid "Output pinout presets:" -msgstr "Schematy pinów wyjściowych:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3022 -#: src/emc/usr_intf/pncconf/pncconf.glade:57970 -#: src/emc/usr_intf/pncconf/pncconf.glade:64890 -msgid "X Axis Configuration" -msgstr "Konfiguracja osi X" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3090 +#: src/emc/usr_intf/stepconf/axisx.glade:31 +#: src/emc/usr_intf/stepconf/axisy.glade:31 +#: src/emc/usr_intf/stepconf/axisz.glade:31 +#: src/emc/usr_intf/stepconf/axisa.glade:45 msgid "_Motor steps per revolution:" msgstr "Kroki silnika na obrót:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3103 +#: src/emc/usr_intf/stepconf/axisx.glade:45 +#: src/emc/usr_intf/stepconf/axisy.glade:44 +#: src/emc/usr_intf/stepconf/axisz.glade:44 +#: src/emc/usr_intf/stepconf/axisa.glade:58 msgid "_Driver Microstepping:" msgstr "Mikrokrok sterownika:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3118 +#: src/emc/usr_intf/stepconf/axisx.glade:61 +#: src/emc/usr_intf/stepconf/axisy.glade:59 +#: src/emc/usr_intf/stepconf/axisz.glade:59 +#: src/emc/usr_intf/stepconf/axisa.glade:73 msgid "_Pulley teeth (Motor:Leadscrew):" msgstr "Ilość zębów przekładni (Silnik:Śruba):" -#: src/emc/usr_intf/stepconf/stepconf.glade:3133 +#: src/emc/usr_intf/stepconf/axisx.glade:77 +#: src/emc/usr_intf/stepconf/axisy.glade:74 +#: src/emc/usr_intf/stepconf/axisz.glade:74 +#: src/emc/usr_intf/stepconf/axisa.glade:88 msgid "_Leadscrew Pitch:" msgstr "Skok śruby:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3148 -#: src/emc/usr_intf/pncconf/pncconf.glade:57858 -#: src/emc/usr_intf/pncconf/pncconf.glade:64634 +#: src/emc/usr_intf/stepconf/axisx.glade:93 +#: src/emc/usr_intf/stepconf/axisy.glade:89 +#: src/emc/usr_intf/stepconf/axisz.glade:89 +#: src/emc/usr_intf/stepconf/axisa.glade:103 +#: src/emc/usr_intf/pncconf/pncconf.glade:64687 msgid "Maximum _Velocity:" msgstr "Maksymalna prędkość:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3163 -#: src/emc/usr_intf/pncconf/pncconf.glade:57843 -#: src/emc/usr_intf/pncconf/pncconf.glade:64649 +#: src/emc/usr_intf/stepconf/axisx.glade:109 +#: src/emc/usr_intf/stepconf/axisy.glade:104 +#: src/emc/usr_intf/stepconf/axisz.glade:104 +#: src/emc/usr_intf/stepconf/axisa.glade:118 +#: src/emc/usr_intf/pncconf/pncconf.glade:64702 msgid "Maximum _Acceleration:" msgstr "Maksymalne przyspieszenie:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3178 -#: src/emc/usr_intf/pncconf/pncconf.glade:67063 -#: src/emc/usr_intf/pncconf/pncconf.glade:73838 +#: src/emc/usr_intf/stepconf/axisx.glade:125 +#: src/emc/usr_intf/stepconf/axisy.glade:119 +#: src/emc/usr_intf/stepconf/axisz.glade:119 +#: src/emc/usr_intf/stepconf/axisa.glade:133 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Time to accelerate to max speed:" msgstr "Czas do przyspieszenia do maks prędkości:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3193 +#: src/emc/usr_intf/stepconf/axisx.glade:141 +#: src/emc/usr_intf/stepconf/axisy.glade:134 +#: src/emc/usr_intf/stepconf/axisz.glade:134 +#: src/emc/usr_intf/stepconf/axisa.glade:148 msgid "Distance to accelerate to max speed:" msgstr "Dystans do przyspieszenia do maks prędkości:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3292 -#: src/emc/usr_intf/pncconf/pncconf.glade:67036 -#: src/emc/usr_intf/pncconf/pncconf.glade:73866 +#: src/emc/usr_intf/stepconf/axisx.glade:271 +#: src/emc/usr_intf/stepconf/axisy.glade:263 +#: src/emc/usr_intf/stepconf/axisz.glade:263 +#: src/emc/usr_intf/stepconf/axisa.glade:277 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Pulse rate at max speed:" msgstr "Częstotliwość impulsów przy maks prędkości:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3362 +#: src/emc/usr_intf/stepconf/axisx.glade:342 +#: src/emc/usr_intf/stepconf/axisy.glade:334 +#: src/emc/usr_intf/stepconf/axisz.glade:334 +#: src/emc/usr_intf/stepconf/axisa.glade:348 msgid "_Home location:" msgstr "Pozycja bazowa:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3377 +#: src/emc/usr_intf/stepconf/axisx.glade:358 +#: src/emc/usr_intf/stepconf/axisy.glade:349 +#: src/emc/usr_intf/stepconf/axisz.glade:349 +#: src/emc/usr_intf/stepconf/axisa.glade:363 msgid "Home _Switch location:" msgstr "Pozycja krańcówki bazującej:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3392 +#: src/emc/usr_intf/stepconf/axisx.glade:374 +#: src/emc/usr_intf/stepconf/axisy.glade:364 +#: src/emc/usr_intf/stepconf/axisz.glade:364 +#: src/emc/usr_intf/stepconf/axisa.glade:378 msgid "Home Sear_ch velocity:" msgstr "Prędkość najazdu na krań_cówkę:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3407 +#: src/emc/usr_intf/stepconf/axisx.glade:390 +#: src/emc/usr_intf/stepconf/axisy.glade:379 +#: src/emc/usr_intf/stepconf/axisz.glade:379 +#: src/emc/usr_intf/stepconf/axisa.glade:393 msgid "Home La_tch direction:" msgstr "Kierunek zjazdu z krańcówki:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3420 -#: src/emc/usr_intf/pncconf/pncconf.glade:66232 -#: src/emc/usr_intf/pncconf/pncconf.glade:66274 -#: src/emc/usr_intf/pncconf/pncconf.glade:66505 -#: src/emc/usr_intf/pncconf/pncconf.glade:66570 -#: src/emc/usr_intf/pncconf/pncconf.glade:73130 -#: src/emc/usr_intf/pncconf/pncconf.glade:73175 -#: src/emc/usr_intf/pncconf/pncconf.glade:73442 -#: src/emc/usr_intf/pncconf/pncconf.glade:73510 +#: src/emc/usr_intf/stepconf/axisx.glade:404 +#: src/emc/usr_intf/stepconf/axisy.glade:393 +#: src/emc/usr_intf/stepconf/axisz.glade:393 +#: src/emc/usr_intf/stepconf/axisa.glade:407 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "_:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3437 -#: src/emc/usr_intf/pncconf/pncconf.glade:58536 -#: src/emc/usr_intf/pncconf/pncconf.glade:65169 -msgid "" -"Same\n" -"Opposite" -msgstr "" -"Ten sam\n" -"Odwrotny" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3492 +#: src/emc/usr_intf/stepconf/axisx.glade:498 +#: src/emc/usr_intf/stepconf/axisy.glade:486 +#: src/emc/usr_intf/stepconf/axisz.glade:486 +#: src/emc/usr_intf/stepconf/axisa.glade:500 msgid "Tab_le travel:" msgstr "Zakres stołu:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3519 +#: src/emc/usr_intf/stepconf/axisx.glade:531 +#: src/emc/usr_intf/stepconf/axisy.glade:518 +#: src/emc/usr_intf/stepconf/axisz.glade:518 +#: src/emc/usr_intf/stepconf/axisa.glade:532 msgid "t_o" msgstr "do" -#: src/emc/usr_intf/stepconf/stepconf.glade:3649 +#: src/emc/usr_intf/stepconf/axisx.glade:677 +#: src/emc/usr_intf/stepconf/axisy.glade:663 +#: src/emc/usr_intf/stepconf/axisz.glade:663 +#: src/emc/usr_intf/stepconf/axisa.glade:677 msgid "s" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3703 +#: src/emc/usr_intf/stepconf/axisx.glade:738 +#: src/emc/usr_intf/stepconf/axisy.glade:724 +#: src/emc/usr_intf/stepconf/axisz.glade:724 +#: src/emc/usr_intf/stepconf/axisa.glade:738 msgid "T_est this axis" msgstr "T_estuj tę oś" -#: src/emc/usr_intf/stepconf/stepconf.glade:3729 +#: src/emc/usr_intf/stepconf/axisx.glade:765 +#: src/emc/usr_intf/stepconf/axisy.glade:751 +#: src/emc/usr_intf/stepconf/axisz.glade:751 +#: src/emc/usr_intf/stepconf/axisa.glade:765 msgid "Axis SCALE:" msgstr "Skala osi:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3765 -msgid "Spindle Configuration" -msgstr "Konfiguracja wrzeciona" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3785 -msgid "Use spindle-at-speed:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3841 -msgid "Speed display filter gain:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3870 -msgid "Calibration:" -msgstr "Kalibracja:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3883 -msgid "_Speed 1:" -msgstr "Prędkość 1:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3898 -msgid "_PWM 1:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3916 -msgid "S_peed 2:" -msgstr "_Prędkość 2:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3931 -msgid "P_WM 2:" +#: src/emc/usr_intf/stepconf/axisx.glade:833 +#: src/emc/usr_intf/stepconf/axisy.glade:819 +#: src/emc/usr_intf/stepconf/axisz.glade:819 +#: src/emc/usr_intf/stepconf/axisa.glade:12 +msgid "Same" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3949 -msgid "PWM _Rate:" -msgstr "Częstotliwość PWM:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4025 -msgid "_Cycles per revolution:" -msgstr "Cykli na obrót:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4079 -msgid "Enter 0 Hz for \"PDM\" mode" -msgstr "Wprowadź 0 Hz dla trybu PDM" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4091 -msgid "Scale %" -msgstr "Skala %" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:60002 -#: src/emc/usr_intf/pncconf/pncconf.glade:66922 -msgid "Machine configuration complete" -msgstr "Konfiguracja maszyny zakończona" +#: src/emc/usr_intf/stepconf/axisx.glade:836 +#: src/emc/usr_intf/stepconf/axisy.glade:822 +#: src/emc/usr_intf/stepconf/axisz.glade:822 +#: src/emc/usr_intf/stepconf/axisa.glade:15 +#, fuzzy +msgid "Opposite" +msgstr "" +"Ten sam\n" +"Odwrotny" -#: src/emc/usr_intf/stepconf/stepconf.glade:4114 -#: src/emc/usr_intf/pncconf/pncconf.glade:66923 +#: src/emc/usr_intf/stepconf/finished.glade:6 +#, fuzzy msgid "" -"All the necessary information has now been gathered. Click \"Apply\" to " -"write your configuration files to disk.\n" -"If you experience lockups while running LinuxCNC, you will need to decrease " -"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" +"All the necessary information has now been gathered. \n" +"Click \"Done\" to write your configuration files to disk.\n" "\n" -"If you experience lost steps while running LinuxCNC, first verify that you " -"entered the proper timings for your stepper drivers. If that does not fix " -"the problem, then run a more thorough latency test as described on the " -"linuxcnc.org wiki:\n" +"If you experience lockups while running LinuxCNC:\n" +"-you will need to decrease the maximum velocity which will have the effect " +"of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC:\n" +"-first verify that you entered the proper timings for your stepper " +"drivers. \n" +"-then run a more thorough latency test as described on the linuxcnc.org " +"wiki.\n" " http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" "\n" -"If you experience the \"Unexpected Realtime Delay\" message, run a more " -"thorough latency test as described on the linuxcnc.org wiki: \n" +"If you experience the \"Unexpected Realtime Delay\" message:\n" +"-run a more thorough latency test as described on the linuxcnc.org wiki: \n" " http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" msgstr "" "Wszystkie niezbędne informacje zostały zebrane. Kliknij \"Zastosuj\" aby " @@ -7270,74 +9262,7 @@ msgstr "" "linuxcnc.org wiki: \n" " http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" -#: src/emc/usr_intf/stepconf/stepconf.glade:4160 -#: src/emc/usr_intf/pncconf/pncconf.glade:60462 -#: src/emc/usr_intf/pncconf/pncconf.glade:61557 -#: src/emc/usr_intf/pncconf/pncconf.glade:62650 -#: src/emc/usr_intf/pncconf/pncconf.glade:63743 -#: src/emc/usr_intf/pncconf/pncconf.glade:64842 -#: src/emc/usr_intf/pncconf/pncconf.glade:67644 -#: src/emc/usr_intf/pncconf/pncconf.glade:68738 -#: src/emc/usr_intf/pncconf/pncconf.glade:69831 -#: src/emc/usr_intf/pncconf/pncconf.glade:70924 -#: src/emc/usr_intf/pncconf/pncconf.glade:71995 -msgid "Acceleration:" -msgstr "Przyspieszenie:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4174 -#: src/emc/usr_intf/pncconf/pncconf.glade:60231 -#: src/emc/usr_intf/pncconf/pncconf.glade:60695 -#: src/emc/usr_intf/pncconf/pncconf.glade:61788 -#: src/emc/usr_intf/pncconf/pncconf.glade:62881 -#: src/emc/usr_intf/pncconf/pncconf.glade:63974 -#: src/emc/usr_intf/pncconf/pncconf.glade:64954 -#: src/emc/usr_intf/pncconf/pncconf.glade:67058 -#: src/emc/usr_intf/pncconf/pncconf.glade:67411 -#: src/emc/usr_intf/pncconf/pncconf.glade:68507 -#: src/emc/usr_intf/pncconf/pncconf.glade:69600 -#: src/emc/usr_intf/pncconf/pncconf.glade:70693 -#: src/emc/usr_intf/pncconf/pncconf.glade:71883 -msgid "Jog:" -msgstr "Posuw:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4188 -#: src/emc/usr_intf/pncconf/pncconf.glade:60681 -#: src/emc/usr_intf/pncconf/pncconf.glade:61774 -#: src/emc/usr_intf/pncconf/pncconf.glade:62867 -#: src/emc/usr_intf/pncconf/pncconf.glade:63960 -#: src/emc/usr_intf/pncconf/pncconf.glade:67425 -#: src/emc/usr_intf/pncconf/pncconf.glade:68521 -#: src/emc/usr_intf/pncconf/pncconf.glade:69614 -#: src/emc/usr_intf/pncconf/pncconf.glade:70707 -msgid "Test Area:" -msgstr "Zakres testowy:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4217 -msgid "mm/s^2" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4253 -msgid "mm/s" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4329 -#: src/emc/usr_intf/pncconf/pncconf.glade:60620 -#: src/emc/usr_intf/pncconf/pncconf.glade:61713 -#: src/emc/usr_intf/pncconf/pncconf.glade:62806 -#: src/emc/usr_intf/pncconf/pncconf.glade:63899 -#: src/emc/usr_intf/pncconf/pncconf.glade:65066 -#: src/emc/usr_intf/pncconf/pncconf.glade:67441 -#: src/emc/usr_intf/pncconf/pncconf.glade:68537 -#: src/emc/usr_intf/pncconf/pncconf.glade:69630 -#: src/emc/usr_intf/pncconf/pncconf.glade:70723 -#: src/emc/usr_intf/pncconf/pncconf.glade:71726 -msgid "" -"±\n" -"+\n" -"-\n" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.py:79 +#: src/emc/usr_intf/pncconf/pncconf.py:81 msgid "" "PNCconf encountered an error. The following information may be useful in " "troubleshooting:\n" @@ -7348,1421 +9273,1293 @@ msgstr "" "\n" #: src/emc/usr_intf/pncconf/pncconf.py:149 +msgid "Keling 4030" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:151 msgid "Not Used" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:149 -#: src/emc/usr_intf/pncconf/pncconf.py:150 +#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:176 msgid "Dummy" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:150 +#: src/emc/usr_intf/pncconf/pncconf.py:152 msgid "8i20 Servo Drive" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:153 msgid "POT Output" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:153 msgid "POT Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:153 msgid "POT Direction" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:154 msgid "GPIO Input" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:154 msgid "GPIO Output" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:154 msgid "GPIO O Drain" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 +#: src/emc/usr_intf/pncconf/pncconf.py:155 msgid "Quad Encoder-A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 +#: src/emc/usr_intf/pncconf/pncconf.py:155 msgid "Quad Encoder-B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 +#: src/emc/usr_intf/pncconf/pncconf.py:155 msgid "Quad Encoder-I" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 +#: src/emc/usr_intf/pncconf/pncconf.py:155 msgid "Quad Encoder-M" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 msgid "Muxed Encoder 0" msgstr "Przełączany Enkoder 0" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 msgid "Muxed Encoder 1" msgstr "Przełączany Enkoder 1" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 msgid "muxed enc" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 msgid "mux enc mask" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 msgid "mux select" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:155 +#: src/emc/usr_intf/pncconf/pncconf.py:157 msgid "Resolver 0 Encoder" msgstr "Resolver 0 Enkoder" -#: src/emc/usr_intf/pncconf/pncconf.py:155 +#: src/emc/usr_intf/pncconf/pncconf.py:157 msgid "Resolver 1 Encoder" msgstr "Resolver 1 Enkoder" -#: src/emc/usr_intf/pncconf/pncconf.py:155 +#: src/emc/usr_intf/pncconf/pncconf.py:157 msgid "Resolver 2 Encoder" msgstr "Resolver 2 Enkoder" -#: src/emc/usr_intf/pncconf/pncconf.py:156 +#: src/emc/usr_intf/pncconf/pncconf.py:158 msgid "Resolver 3 Encoder" msgstr "Resolver 3 Enkoder" -#: src/emc/usr_intf/pncconf/pncconf.py:156 +#: src/emc/usr_intf/pncconf/pncconf.py:158 msgid "Resolver 4 Encoder" msgstr "Resolver 4 Enkoder" -#: src/emc/usr_intf/pncconf/pncconf.py:156 +#: src/emc/usr_intf/pncconf/pncconf.py:158 msgid "Resolver 5 Encoder" msgstr "Resolver 5 Enkoder" -#: src/emc/usr_intf/pncconf/pncconf.py:157 +#: src/emc/usr_intf/pncconf/pncconf.py:159 msgid "Step Gen-A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 +#: src/emc/usr_intf/pncconf/pncconf.py:159 msgid "Dir Gen-B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 +#: src/emc/usr_intf/pncconf/pncconf.py:159 msgid "Step/Dir Gen-C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 +#: src/emc/usr_intf/pncconf/pncconf.py:159 msgid "Step/Dir Gen-D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:158 +#: src/emc/usr_intf/pncconf/pncconf.py:160 msgid "Step/Dir Gen-E" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:158 +#: src/emc/usr_intf/pncconf/pncconf.py:160 msgid "Step/dir Gen-F" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 +#: src/emc/usr_intf/pncconf/pncconf.py:161 msgid "Pulse Width Gen-P" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 +#: src/emc/usr_intf/pncconf/pncconf.py:161 msgid "Pulse Width Gen-D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 +#: src/emc/usr_intf/pncconf/pncconf.py:161 msgid "Pulse Width Gen-E" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 +#: src/emc/usr_intf/pncconf/pncconf.py:162 msgid "Pulse Density Gen-P" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 +#: src/emc/usr_intf/pncconf/pncconf.py:162 msgid "Pulse Density Gen-D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 +#: src/emc/usr_intf/pncconf/pncconf.py:162 msgid "Pulse Density Gen-E" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 +#: src/emc/usr_intf/pncconf/pncconf.py:163 msgid "Up/Down Mode -Up" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 +#: src/emc/usr_intf/pncconf/pncconf.py:163 msgid "Up/Down Mode-Down" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 +#: src/emc/usr_intf/pncconf/pncconf.py:163 msgid "Up/Down Mode-Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 +#: src/emc/usr_intf/pncconf/pncconf.py:164 msgid "Motor Phase A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 +#: src/emc/usr_intf/pncconf/pncconf.py:164 msgid "Motor Phase B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 +#: src/emc/usr_intf/pncconf/pncconf.py:164 msgid "Motor Phase C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Phase A Not" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Phase B Not" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Phase C Not" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Fault" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:165 -#: src/emc/usr_intf/pncconf/pncconf.py:166 +#: src/emc/usr_intf/pncconf/pncconf.py:168 msgid "SMARTSERIAL-P0-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P0-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P0-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P1-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P1-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P1-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P2-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P2-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P2-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P3-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P3-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P3-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P4-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P4-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P4-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P5-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P5-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P5-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -#: src/emc/usr_intf/pncconf/pncconf.py:170 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P6-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -#: src/emc/usr_intf/pncconf/pncconf.py:170 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P6-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -#: src/emc/usr_intf/pncconf/pncconf.py:170 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P6-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -#: src/emc/usr_intf/pncconf/pncconf.py:170 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P7-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -#: src/emc/usr_intf/pncconf/pncconf.py:170 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P7-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -#: src/emc/usr_intf/pncconf/pncconf.py:170 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P7-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:170 -#: src/emc/usr_intf/pncconf/pncconf.py:171 -msgid "7i76 sserial #1" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS0)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:170 -#: src/emc/usr_intf/pncconf/pncconf.py:171 -msgid "7i76 sserial #2" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS2)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS3)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 I/O (SS0)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 Analog (SS1)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 I/O (SS3)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:420 -#: src/emc/usr_intf/pncconf/pncconf.py:429 +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 Analog (SS4)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:176 +#, fuzzy +msgid "Analog Input" +msgstr "Nieużywane wyjście analogowe" + +#: src/emc/usr_intf/pncconf/pncconf.py:277 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +msgid "Axis Selection" +msgstr "Wybór osi" + +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "" +"7i64-Input\n" +"P3 and P4" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "" +"7i64-Output\n" +"P2 and P5" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "7i64-Analog In" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P2" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P3" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB3" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB2" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:309 +msgid "" +"7i71-Output\n" +"TB3" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:309 +msgid "" +"7i71-Output\n" +"TB2" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-I/O\n" +"TB6" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-I/O\n" +"TB5" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:317 +#, fuzzy +msgid "" +"7i76-Analog Output\n" +"TB4" +msgstr "Nieużywane wyjście analogowe" + +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB8" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB7" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:325 +#, fuzzy +msgid "" +"7i77-Analog Output\n" +"TB5" +msgstr "Nieużywane wyjście analogowe" + +#: src/emc/usr_intf/pncconf/pncconf.py:333 +msgid "7i73-I/O\n" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:348 msgid "Unused Unused" msgstr "Nieużywane Nieużywane" -#: src/emc/usr_intf/pncconf/pncconf.py:442 -#: src/emc/usr_intf/pncconf/pncconf.py:451 +#: src/emc/usr_intf/pncconf/pncconf.py:370 msgid "Machine Is Enabled" msgstr "Maszyna jest włączona" -#: src/emc/usr_intf/pncconf/pncconf.py:442 -#: src/emc/usr_intf/pncconf/pncconf.py:451 +#: src/emc/usr_intf/pncconf/pncconf.py:370 msgid "X Amplifier Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:442 -#: src/emc/usr_intf/pncconf/pncconf.py:451 +#: src/emc/usr_intf/pncconf/pncconf.py:370 msgid "Y Amplifier Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:442 -#: src/emc/usr_intf/pncconf/pncconf.py:451 +#: src/emc/usr_intf/pncconf/pncconf.py:370 msgid "Z Amplifier Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:443 -#: src/emc/usr_intf/pncconf/pncconf.py:452 +#: src/emc/usr_intf/pncconf/pncconf.py:371 msgid "A Amplifier Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:443 -#: src/emc/usr_intf/pncconf/pncconf.py:452 +#: src/emc/usr_intf/pncconf/pncconf.py:371 msgid "Force Pin True" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -#: src/emc/usr_intf/pncconf/pncconf.py:454 -#: src/emc/usr_intf/pncconf/pncconf.py:481 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -#: src/emc/usr_intf/pncconf/pncconf.py:454 -#: src/emc/usr_intf/pncconf/pncconf.py:481 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -#: src/emc/usr_intf/pncconf/pncconf.py:454 -#: src/emc/usr_intf/pncconf/pncconf.py:481 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -#: src/emc/usr_intf/pncconf/pncconf.py:454 -#: src/emc/usr_intf/pncconf/pncconf.py:481 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -#: src/emc/usr_intf/pncconf/pncconf.py:454 -#: src/emc/usr_intf/pncconf/pncconf.py:481 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -#: src/emc/usr_intf/pncconf/pncconf.py:454 -#: src/emc/usr_intf/pncconf/pncconf.py:481 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -#: src/emc/usr_intf/pncconf/pncconf.py:454 -#: src/emc/usr_intf/pncconf/pncconf.py:481 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:482 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:482 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:482 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:482 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:482 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:482 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:482 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:483 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:483 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:483 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:483 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:483 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:483 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:483 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:484 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:484 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:484 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:484 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:484 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:484 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:484 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -#: src/emc/usr_intf/pncconf/pncconf.py:458 -#: src/emc/usr_intf/pncconf/pncconf.py:485 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -#: src/emc/usr_intf/pncconf/pncconf.py:458 -#: src/emc/usr_intf/pncconf/pncconf.py:485 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -#: src/emc/usr_intf/pncconf/pncconf.py:458 -#: src/emc/usr_intf/pncconf/pncconf.py:485 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -#: src/emc/usr_intf/pncconf/pncconf.py:458 -#: src/emc/usr_intf/pncconf/pncconf.py:485 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -#: src/emc/usr_intf/pncconf/pncconf.py:458 -#: src/emc/usr_intf/pncconf/pncconf.py:485 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -#: src/emc/usr_intf/pncconf/pncconf.py:458 -#: src/emc/usr_intf/pncconf/pncconf.py:485 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -#: src/emc/usr_intf/pncconf/pncconf.py:458 -#: src/emc/usr_intf/pncconf/pncconf.py:485 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:450 -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:378 msgid "Unused Output" msgstr "Nieużywane wyjście" -#: src/emc/usr_intf/pncconf/pncconf.py:450 -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.py:459 -#: src/emc/usr_intf/pncconf/pncconf.py:489 -#: src/emc/usr_intf/pncconf/pncconf.py:602 -msgid "Spindle" -msgstr "Wrzeciono" - -#: src/emc/usr_intf/pncconf/pncconf.py:450 -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:378 msgid "Coolant" msgstr "Chłodziwo" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:460 +#: src/emc/usr_intf/pncconf/pncconf.py:379 msgid "Control" msgstr "Kontrola" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:489 +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:409 msgid "Digital" msgstr "Cyfrowe" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:481 -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:490 +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:410 msgid "X BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:491 +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 msgid "Y BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:491 +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 msgid "Z BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:491 +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 msgid "A BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:453 -#: src/emc/usr_intf/pncconf/pncconf.py:462 +#: src/emc/usr_intf/pncconf/pncconf.py:381 msgid " S BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:453 -#: src/emc/usr_intf/pncconf/pncconf.py:483 -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#: src/emc/usr_intf/pncconf/pncconf.py:585 -#: src/emc/usr_intf/pncconf/pncconf.py:588 -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.py:597 -#: src/emc/usr_intf/pncconf/pncconf.py:614 -#: src/emc/usr_intf/pncconf/pncconf.py:629 -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:492 -#: src/emc/usr_intf/pncconf/pncconf.py:566 -#: src/emc/usr_intf/pncconf/pncconf.py:594 -#: src/emc/usr_intf/pncconf/pncconf.py:602 -#: src/emc/usr_intf/pncconf/pncconf.py:606 -#: src/emc/usr_intf/pncconf/pncconf.py:623 -#: src/emc/usr_intf/pncconf/pncconf.py:638 +#: src/emc/usr_intf/pncconf/pncconf.py:381 +#: src/emc/usr_intf/pncconf/pncconf.py:412 +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#: src/emc/usr_intf/pncconf/pncconf.py:516 +#: src/emc/usr_intf/pncconf/pncconf.py:519 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.py:528 +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#: src/emc/usr_intf/pncconf/pncconf.py:568 +#: src/emc/usr_intf/pncconf/pncconf.py:580 msgid "Custom Signals" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 -#: src/emc/usr_intf/pncconf/pncconf.py:464 -#: src/emc/usr_intf/pncconf/pncconf.py:550 +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 msgid "X Minimum Limit" msgstr "Limit minimalny X" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 -#: src/emc/usr_intf/pncconf/pncconf.py:464 -#: src/emc/usr_intf/pncconf/pncconf.py:550 +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 msgid "Y Minimum Limit" msgstr "Limit minimalny Y" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 -#: src/emc/usr_intf/pncconf/pncconf.py:464 -#: src/emc/usr_intf/pncconf/pncconf.py:551 +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 msgid "Z Minimum Limit" msgstr "Limit minimalny Z" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 -#: src/emc/usr_intf/pncconf/pncconf.py:464 -#: src/emc/usr_intf/pncconf/pncconf.py:551 +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 msgid "A Minimum Limit" msgstr "Limit minimalny A" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 -#: src/emc/usr_intf/pncconf/pncconf.py:465 -#: src/emc/usr_intf/pncconf/pncconf.py:552 +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 msgid "X Maximum Limit" msgstr "Limit maksymalny X" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 -#: src/emc/usr_intf/pncconf/pncconf.py:465 -#: src/emc/usr_intf/pncconf/pncconf.py:552 +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 msgid "Y Maximum Limit" msgstr "Limit maksymalny Y" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 -#: src/emc/usr_intf/pncconf/pncconf.py:465 -#: src/emc/usr_intf/pncconf/pncconf.py:553 +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 msgid "Z Maximum Limit" msgstr "Limit maksymalny Z" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 -#: src/emc/usr_intf/pncconf/pncconf.py:465 -#: src/emc/usr_intf/pncconf/pncconf.py:553 +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 msgid "A Maximum Limit" msgstr "Limit maksymalny A" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#: src/emc/usr_intf/pncconf/pncconf.py:554 +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 msgid "X Both Limit" msgstr "Obydwa limity X" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#: src/emc/usr_intf/pncconf/pncconf.py:554 +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 msgid "Y Both Limit" msgstr "Obydwa limity Y" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#: src/emc/usr_intf/pncconf/pncconf.py:555 +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 msgid "Z Both Limit" msgstr "Obydwa limity Z" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#: src/emc/usr_intf/pncconf/pncconf.py:555 +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 msgid "A Both Limit" msgstr "Obydwa limity A" -#: src/emc/usr_intf/pncconf/pncconf.py:458 -#: src/emc/usr_intf/pncconf/pncconf.py:546 -#: src/emc/usr_intf/pncconf/pncconf.py:467 -#: src/emc/usr_intf/pncconf/pncconf.py:555 +#: src/emc/usr_intf/pncconf/pncconf.py:386 +#: src/emc/usr_intf/pncconf/pncconf.py:477 msgid "All Limits" msgstr "Wszystkie limity" -#: src/emc/usr_intf/pncconf/pncconf.py:459 -#: src/emc/usr_intf/pncconf/pncconf.py:468 +#: src/emc/usr_intf/pncconf/pncconf.py:387 msgid "X Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:459 -#: src/emc/usr_intf/pncconf/pncconf.py:468 +#: src/emc/usr_intf/pncconf/pncconf.py:387 msgid "Y Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:459 -#: src/emc/usr_intf/pncconf/pncconf.py:468 +#: src/emc/usr_intf/pncconf/pncconf.py:387 msgid "Z Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:459 -#: src/emc/usr_intf/pncconf/pncconf.py:468 +#: src/emc/usr_intf/pncconf/pncconf.py:387 msgid "A Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:459 -#: src/emc/usr_intf/pncconf/pncconf.py:468 +#: src/emc/usr_intf/pncconf/pncconf.py:387 msgid "All Home" msgstr "Wszystkie bazujące" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#: src/emc/usr_intf/pncconf/pncconf.py:543 +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 msgid "X Minimum Limit + Home" msgstr "Limit minimalny + Bazująca X" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#: src/emc/usr_intf/pncconf/pncconf.py:543 +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 msgid "Y Minimum Limit + Home" msgstr "Limit minimalny + Bazująca Y" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#: src/emc/usr_intf/pncconf/pncconf.py:544 +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 msgid "Z Minimum Limit + Home" msgstr "Limit minimalny + Bazująca Z" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#: src/emc/usr_intf/pncconf/pncconf.py:544 +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 msgid "A Minimum Limit + Home" msgstr "Limit minimalny + Bazująca A" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 -#: src/emc/usr_intf/pncconf/pncconf.py:470 -#: src/emc/usr_intf/pncconf/pncconf.py:545 +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 msgid "X Maximum Limit + Home" msgstr "Limit maksymalny + Bazująca X" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 -#: src/emc/usr_intf/pncconf/pncconf.py:470 -#: src/emc/usr_intf/pncconf/pncconf.py:545 +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 msgid "Y Maximum Limit + Home" msgstr "Limit maksymalny + Bazująca Y" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 -#: src/emc/usr_intf/pncconf/pncconf.py:470 -#: src/emc/usr_intf/pncconf/pncconf.py:546 +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 msgid "Z Maximum Limit + Home" msgstr "Limit maksymalny + Bazująca Z" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 -#: src/emc/usr_intf/pncconf/pncconf.py:470 -#: src/emc/usr_intf/pncconf/pncconf.py:546 +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 msgid "A Maximum Limit + Home" msgstr "Limit maksymalny + Bazująca A" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 -#: src/emc/usr_intf/pncconf/pncconf.py:471 -#: src/emc/usr_intf/pncconf/pncconf.py:547 +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 msgid "X Both Limit + Home" msgstr "Obydwa limity + Bazująca X" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 -#: src/emc/usr_intf/pncconf/pncconf.py:471 -#: src/emc/usr_intf/pncconf/pncconf.py:547 +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 msgid "Y Both Limit + Home" msgstr "Obydwa limity + Bazująca Y" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 -#: src/emc/usr_intf/pncconf/pncconf.py:471 -#: src/emc/usr_intf/pncconf/pncconf.py:548 +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 msgid "Z Both Limit + Home" msgstr "Obydwa limity + Bazująca Z" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 -#: src/emc/usr_intf/pncconf/pncconf.py:471 -#: src/emc/usr_intf/pncconf/pncconf.py:548 +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 msgid "A Both Limit + Home" msgstr "Obydwa limity + Bazująca A" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:392 msgid "Joint select A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:392 msgid "Joint select B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:392 msgid "Joint select C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:392 msgid "Joint select D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Jog incr A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Jog incr B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Jog incr C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Jog incr D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Feed Override incr A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Feed Override incr B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:394 msgid "Feed Override incr C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:394 msgid "Feed Override incr D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:394 msgid "Spindle Override incr A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:394 msgid "Spindle Override incr B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:395 msgid "Spindle Override incr C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:395 msgid "Spindle Override incr D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:395 msgid "Max Vel Override incr A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:395 msgid "Max Vel Override incr B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:468 -#: src/emc/usr_intf/pncconf/pncconf.py:477 +#: src/emc/usr_intf/pncconf/pncconf.py:396 msgid "Max Vel Override incr C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:468 -#: src/emc/usr_intf/pncconf/pncconf.py:477 +#: src/emc/usr_intf/pncconf/pncconf.py:396 msgid "Max Vel Override incr D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#: src/emc/usr_intf/pncconf/pncconf.py:478 +#: src/emc/usr_intf/pncconf/pncconf.py:396 +#, fuzzy +msgid "Feed Override enable" +msgstr "Skala prędkości:" + +#: src/emc/usr_intf/pncconf/pncconf.py:396 +#, fuzzy +msgid "Spindle Override enable" +msgstr "Skala prędkości wrzeciona:" + +#: src/emc/usr_intf/pncconf/pncconf.py:397 +#, fuzzy +msgid "Max Vel Override enable" +msgstr "Max Skala prędkości" + +#: src/emc/usr_intf/pncconf/pncconf.py:398 msgid "Manual Spindle CW" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#: src/emc/usr_intf/pncconf/pncconf.py:478 +#: src/emc/usr_intf/pncconf/pncconf.py:398 msgid "Manual Spindle CCW" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#: src/emc/usr_intf/pncconf/pncconf.py:478 +#: src/emc/usr_intf/pncconf/pncconf.py:398 msgid "Manual Spindle Stop" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#: src/emc/usr_intf/pncconf/pncconf.py:478 +#: src/emc/usr_intf/pncconf/pncconf.py:398 msgid "Spindle Up-To-Speed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:470 -#: src/emc/usr_intf/pncconf/pncconf.py:479 +#: src/emc/usr_intf/pncconf/pncconf.py:399 msgid "Cycle Start" msgstr "Start cyklu" -#: src/emc/usr_intf/pncconf/pncconf.py:470 -#: src/emc/usr_intf/pncconf/pncconf.py:479 +#: src/emc/usr_intf/pncconf/pncconf.py:399 msgid "Abort" msgstr "Przerwij" -#: src/emc/usr_intf/pncconf/pncconf.py:470 -#: src/emc/usr_intf/pncconf/pncconf.py:479 +#: src/emc/usr_intf/pncconf/pncconf.py:399 msgid "Single Step" msgstr "Pojedyńcza krok" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 -#: src/emc/usr_intf/pncconf/pncconf.py:486 -#: src/emc/usr_intf/pncconf/pncconf.py:538 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 msgid "Jog X +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 -#: src/emc/usr_intf/pncconf/pncconf.py:486 -#: src/emc/usr_intf/pncconf/pncconf.py:538 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 msgid "Jog X -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 -#: src/emc/usr_intf/pncconf/pncconf.py:486 -#: src/emc/usr_intf/pncconf/pncconf.py:539 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 msgid "Jog Y +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 -#: src/emc/usr_intf/pncconf/pncconf.py:486 -#: src/emc/usr_intf/pncconf/pncconf.py:539 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 msgid "Jog Y -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 -#: src/emc/usr_intf/pncconf/pncconf.py:486 -#: src/emc/usr_intf/pncconf/pncconf.py:540 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 msgid "Jog Z +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 -#: src/emc/usr_intf/pncconf/pncconf.py:486 -#: src/emc/usr_intf/pncconf/pncconf.py:540 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 msgid "Jog Z -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 -#: src/emc/usr_intf/pncconf/pncconf.py:486 -#: src/emc/usr_intf/pncconf/pncconf.py:541 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 msgid "Jog A +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 -#: src/emc/usr_intf/pncconf/pncconf.py:486 -#: src/emc/usr_intf/pncconf/pncconf.py:541 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 msgid "Jog A -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:478 -#: src/emc/usr_intf/pncconf/pncconf.py:487 +#: src/emc/usr_intf/pncconf/pncconf.py:407 msgid "Jog button selected +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:478 -#: src/emc/usr_intf/pncconf/pncconf.py:487 +#: src/emc/usr_intf/pncconf/pncconf.py:407 msgid "Jog button selected -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:479 -#: src/emc/usr_intf/pncconf/pncconf.py:488 +#: src/emc/usr_intf/pncconf/pncconf.py:408 msgid "Unused Input" msgstr "Nieużywane wejście" -#: src/emc/usr_intf/pncconf/pncconf.py:479 -#: src/emc/usr_intf/pncconf/pncconf.py:488 +#: src/emc/usr_intf/pncconf/pncconf.py:408 msgid "Limits" msgstr "Limity" -#: src/emc/usr_intf/pncconf/pncconf.py:479 -#: src/emc/usr_intf/pncconf/pncconf.py:488 +#: src/emc/usr_intf/pncconf/pncconf.py:408 msgid "Limts/Home Shared" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#: src/emc/usr_intf/pncconf/pncconf.py:489 -msgid "Axis Selection" -msgstr "Wybór osi" - -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#: src/emc/usr_intf/pncconf/pncconf.py:489 +#: src/emc/usr_intf/pncconf/pncconf.py:409 msgid "Overrides" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:481 -#: src/emc/usr_intf/pncconf/pncconf.py:490 +#: src/emc/usr_intf/pncconf/pncconf.py:410 msgid "Operation" msgstr "Operacja" -#: src/emc/usr_intf/pncconf/pncconf.py:481 -#: src/emc/usr_intf/pncconf/pncconf.py:490 +#: src/emc/usr_intf/pncconf/pncconf.py:410 msgid "External Control" msgstr "Zewnętrzna kontrola" -#: src/emc/usr_intf/pncconf/pncconf.py:481 -#: src/emc/usr_intf/pncconf/pncconf.py:490 +#: src/emc/usr_intf/pncconf/pncconf.py:410 msgid "Axis rapid" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:483 -#: src/emc/usr_intf/pncconf/pncconf.py:492 +#: src/emc/usr_intf/pncconf/pncconf.py:412 msgid "S BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:556 -#: src/emc/usr_intf/pncconf/pncconf.py:565 +#: src/emc/usr_intf/pncconf/pncconf.py:487 msgid "Unused PWM Gen" msgstr "Nieużywany PWM" -#: src/emc/usr_intf/pncconf/pncconf.py:556 -#: src/emc/usr_intf/pncconf/pncconf.py:565 +#: src/emc/usr_intf/pncconf/pncconf.py:487 msgid "X Axis PWM" msgstr "PWM osi X" -#: src/emc/usr_intf/pncconf/pncconf.py:556 -#: src/emc/usr_intf/pncconf/pncconf.py:565 +#: src/emc/usr_intf/pncconf/pncconf.py:487 msgid "Y Axis PWM" msgstr "PWM osi Y" -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#: src/emc/usr_intf/pncconf/pncconf.py:566 +#: src/emc/usr_intf/pncconf/pncconf.py:488 msgid "Z Axis PWM" msgstr "PWM osi Z" -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#: src/emc/usr_intf/pncconf/pncconf.py:566 +#: src/emc/usr_intf/pncconf/pncconf.py:488 msgid "A Axis PWM" msgstr "PWM osi A" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -#: src/emc/usr_intf/pncconf/pncconf.py:590 +#: src/emc/usr_intf/pncconf/pncconf.py:512 msgid "X Encoder" msgstr "Enkoder X" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -#: src/emc/usr_intf/pncconf/pncconf.py:590 +#: src/emc/usr_intf/pncconf/pncconf.py:512 msgid "Y Encoder" msgstr "Enkoder Y" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -#: src/emc/usr_intf/pncconf/pncconf.py:590 +#: src/emc/usr_intf/pncconf/pncconf.py:512 msgid "Z Encoder" msgstr "Enkoder Z" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -#: src/emc/usr_intf/pncconf/pncconf.py:590 +#: src/emc/usr_intf/pncconf/pncconf.py:512 msgid "A Encoder" msgstr "Enkoder A" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -#: src/emc/usr_intf/pncconf/pncconf.py:590 +#: src/emc/usr_intf/pncconf/pncconf.py:512 msgid "Spindle Encoder" msgstr "Enkoder wrzeciona" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -#: src/emc/usr_intf/pncconf/pncconf.py:591 +#: src/emc/usr_intf/pncconf/pncconf.py:513 msgid "X Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -#: src/emc/usr_intf/pncconf/pncconf.py:591 +#: src/emc/usr_intf/pncconf/pncconf.py:513 msgid "Y Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -#: src/emc/usr_intf/pncconf/pncconf.py:591 +#: src/emc/usr_intf/pncconf/pncconf.py:513 msgid "Z Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -#: src/emc/usr_intf/pncconf/pncconf.py:591 +#: src/emc/usr_intf/pncconf/pncconf.py:513 msgid "A Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -#: src/emc/usr_intf/pncconf/pncconf.py:591 +#: src/emc/usr_intf/pncconf/pncconf.py:513 msgid "Multi Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:583 -#: src/emc/usr_intf/pncconf/pncconf.py:592 +#: src/emc/usr_intf/pncconf/pncconf.py:514 msgid "Feed Override" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:583 -#: src/emc/usr_intf/pncconf/pncconf.py:592 +#: src/emc/usr_intf/pncconf/pncconf.py:514 msgid "spindle Override" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:583 -#: src/emc/usr_intf/pncconf/pncconf.py:592 +#: src/emc/usr_intf/pncconf/pncconf.py:514 msgid "Max Vel Override" msgstr "Max Skala prędkości" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -#: src/emc/usr_intf/pncconf/pncconf.py:593 +#: src/emc/usr_intf/pncconf/pncconf.py:515 msgid "Unused Encoder" msgstr "Nieużywany enkoder" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -#: src/emc/usr_intf/pncconf/pncconf.py:593 +#: src/emc/usr_intf/pncconf/pncconf.py:515 msgid "Axis Encoder" msgstr "Enkoder Osi" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -#: src/emc/usr_intf/pncconf/pncconf.py:593 +#: src/emc/usr_intf/pncconf/pncconf.py:515 msgid "MPG Jog Controls" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -#: src/emc/usr_intf/pncconf/pncconf.py:593 +#: src/emc/usr_intf/pncconf/pncconf.py:515 msgid "Override MPG control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -#: src/emc/usr_intf/pncconf/pncconf.py:596 +#: src/emc/usr_intf/pncconf/pncconf.py:518 msgid "Unused Resolver" msgstr "Nieużywany resolver" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -#: src/emc/usr_intf/pncconf/pncconf.py:596 +#: src/emc/usr_intf/pncconf/pncconf.py:518 msgid "X Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -#: src/emc/usr_intf/pncconf/pncconf.py:596 +#: src/emc/usr_intf/pncconf/pncconf.py:518 msgid "Y Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -#: src/emc/usr_intf/pncconf/pncconf.py:596 +#: src/emc/usr_intf/pncconf/pncconf.py:518 msgid "Z Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:588 -#: src/emc/usr_intf/pncconf/pncconf.py:597 +#: src/emc/usr_intf/pncconf/pncconf.py:519 msgid "A Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:588 -#: src/emc/usr_intf/pncconf/pncconf.py:597 +#: src/emc/usr_intf/pncconf/pncconf.py:519 msgid "S Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.py:601 +#: src/emc/usr_intf/pncconf/pncconf.py:523 msgid "Unused 8I20" msgstr "Nieużywany 8I20" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:61457 -#: src/emc/usr_intf/pncconf/pncconf.py:601 -#: src/emc/usr_intf/pncconf/pncconf.glade:68377 +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "X Axis" msgstr "Oś X" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:62549 -#: src/emc/usr_intf/pncconf/pncconf.py:601 -#: src/emc/usr_intf/pncconf/pncconf.glade:69469 +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Y Axis" msgstr "Oś Y" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:63642 -#: src/emc/usr_intf/pncconf/pncconf.py:601 -#: src/emc/usr_intf/pncconf/pncconf.glade:70562 +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Z Axis" msgstr "Oś Z" -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.glade:64735 -#: src/emc/usr_intf/pncconf/pncconf.py:602 -#: src/emc/usr_intf/pncconf/pncconf.glade:71655 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "A Axis" msgstr "Oś A" -#: src/emc/usr_intf/pncconf/pncconf.py:597 -#: src/emc/usr_intf/pncconf/pncconf.py:606 +#: src/emc/usr_intf/pncconf/pncconf.py:528 msgid "Unused Analog Output" msgstr "Nieużywane wyjście analogowe" -#: src/emc/usr_intf/pncconf/pncconf.py:597 -#: src/emc/usr_intf/pncconf/pncconf.py:606 +#: src/emc/usr_intf/pncconf/pncconf.py:528 msgid "Spindle Output" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:613 -#: src/emc/usr_intf/pncconf/pncconf.py:622 +#: src/emc/usr_intf/pncconf/pncconf.py:551 msgid "Unused StepGen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:613 -#: src/emc/usr_intf/pncconf/pncconf.py:622 +#: src/emc/usr_intf/pncconf/pncconf.py:551 msgid "X Axis StepGen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:613 -#: src/emc/usr_intf/pncconf/pncconf.py:622 +#: src/emc/usr_intf/pncconf/pncconf.py:551 msgid "Y Axis StepGen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:613 -#: src/emc/usr_intf/pncconf/pncconf.py:622 +#: src/emc/usr_intf/pncconf/pncconf.py:551 msgid "Z Axis StepGen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:614 -#: src/emc/usr_intf/pncconf/pncconf.py:623 +#: src/emc/usr_intf/pncconf/pncconf.py:552 msgid "A Axis StepGen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:614 -#: src/emc/usr_intf/pncconf/pncconf.py:623 +#: src/emc/usr_intf/pncconf/pncconf.py:552 msgid "Spindle StepGen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:628 -#: src/emc/usr_intf/pncconf/pncconf.py:637 +#: src/emc/usr_intf/pncconf/pncconf.py:552 +msgid "X2 Tandem StepGen" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:552 +msgid "Y2 Tandem StepGen" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:553 +msgid "Z2 Tandem StepGen" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#, fuzzy +msgid "Charge Pump StepGen" +msgstr "Włączenie napięcia" + +#: src/emc/usr_intf/pncconf/pncconf.py:567 msgid "Unused TPPWM Gen" msgstr "Nieużywany TPPWM" -#: src/emc/usr_intf/pncconf/pncconf.py:628 -#: src/emc/usr_intf/pncconf/pncconf.py:637 +#: src/emc/usr_intf/pncconf/pncconf.py:567 msgid "X Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:628 -#: src/emc/usr_intf/pncconf/pncconf.py:637 +#: src/emc/usr_intf/pncconf/pncconf.py:567 msgid "Y Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 -#: src/emc/usr_intf/pncconf/pncconf.py:638 +#: src/emc/usr_intf/pncconf/pncconf.py:568 msgid "Z Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 -#: src/emc/usr_intf/pncconf/pncconf.py:638 +#: src/emc/usr_intf/pncconf/pncconf.py:568 msgid "A Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 -#: src/emc/usr_intf/pncconf/pncconf.py:638 +#: src/emc/usr_intf/pncconf/pncconf.py:568 msgid "S Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -#: src/emc/usr_intf/pncconf/pncconf.py:6557 -#: src/emc/usr_intf/pncconf/pncconf.py:646 -#: src/emc/usr_intf/pncconf/pncconf.py:6637 +#: src/emc/usr_intf/pncconf/pncconf.py:576 +#: src/emc/usr_intf/pncconf/pncconf.py:6882 msgid "Unused Channel" msgstr "Kanał nieużywany" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -#: src/emc/usr_intf/pncconf/pncconf.py:646 +#: src/emc/usr_intf/pncconf/pncconf.py:576 msgid "8i20 Amplifier Card" msgstr "Karta wzmacniacza 8i20" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -#: src/emc/usr_intf/pncconf/pncconf.py:646 +#: src/emc/usr_intf/pncconf/pncconf.py:576 msgid "7i64 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -#: src/emc/usr_intf/pncconf/pncconf.py:646 +#: src/emc/usr_intf/pncconf/pncconf.py:576 msgid "7i69 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 -#: src/emc/usr_intf/pncconf/pncconf.py:647 +#: src/emc/usr_intf/pncconf/pncconf.py:577 msgid "7i70 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 -#: src/emc/usr_intf/pncconf/pncconf.py:647 +#: src/emc/usr_intf/pncconf/pncconf.py:577 msgid "7i71 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 -#: src/emc/usr_intf/pncconf/pncconf.py:647 +#: src/emc/usr_intf/pncconf/pncconf.py:577 msgid "7i76 Mode 0 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:722 -#: src/emc/usr_intf/pncconf/pncconf.py:732 +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i77 Mode 0 I/O Card" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:578 +msgid "7i73 Mode 1 Pendant Card" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:580 +#, fuzzy +msgid "Unused Analog In" +msgstr "Nieużywane wyjście analogowe" + +#: src/emc/usr_intf/pncconf/pncconf.py:676 msgid "my_LinuxCNC_machine" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1328 -#: src/emc/usr_intf/pncconf/pncconf.py:1337 +#: src/emc/usr_intf/pncconf/pncconf.py:939 +#: src/emc/usr_intf/pncconf/pncconf.py:941 +msgid "Enter Address" +msgstr "Wprowadź adres" + +#: src/emc/usr_intf/pncconf/pncconf.py:1290 msgid "" "This configuration was saved with an earlier version of pncconf which may be " "incompatible.\n" @@ -8772,14 +10569,12 @@ msgid "" "version of PNConf - ask on the LinuxCNC forum - it may be possible.." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1334 -#: src/emc/usr_intf/pncconf/pncconf.py:1343 +#: src/emc/usr_intf/pncconf/pncconf.py:1296 #, python-format msgid "File %r was modified since it was written by PNCconf" msgstr "Plik %r był zmodyfikowany od czasu zapisu przez PNCconf" -#: src/emc/usr_intf/pncconf/pncconf.py:1338 -#: src/emc/usr_intf/pncconf/pncconf.py:1347 +#: src/emc/usr_intf/pncconf/pncconf.py:1300 msgid "" "Saving this configuration file will discard configuration changes made " "outside PNCconf." @@ -8787,306 +10582,238 @@ msgstr "" "Zapisanie tej konfiguracji spowoduje anulowanie zmian w konfiguracji " "dokonanych poza PNCconf." -#: src/emc/usr_intf/pncconf/pncconf.py:1365 -#: src/emc/usr_intf/pncconf/pncconf.py:2368 -#: src/emc/usr_intf/pncconf/pncconf.py:1374 -#: src/emc/usr_intf/pncconf/pncconf.py:2400 +#: src/emc/usr_intf/pncconf/pncconf.py:1327 +#: src/emc/usr_intf/pncconf/pncconf.py:2421 #, python-format msgid "# Generated by PNCconf at %s" msgstr "# Wygenerowane przez PNCconf o %s" -#: src/emc/usr_intf/pncconf/pncconf.py:1367 -#: src/emc/usr_intf/pncconf/pncconf.py:2370 -#: src/emc/usr_intf/pncconf/pncconf.py:1376 -#: src/emc/usr_intf/pncconf/pncconf.py:2402 +#: src/emc/usr_intf/pncconf/pncconf.py:1329 +#: src/emc/usr_intf/pncconf/pncconf.py:2423 msgid "# overwritten when you run PNCconf again" msgstr "# nadpisane gdy uruchomisz ponownie PNCconf" -#: src/emc/usr_intf/pncconf/pncconf.py:2070 -#: src/emc/usr_intf/pncconf/pncconf.py:2102 +#: src/emc/usr_intf/pncconf/pncconf.py:2134 msgid "# Use ACTUAL spindle velocity from spindle encoder" msgstr "# Używam AKTUALNEJ prędkości wrzeciona z enkodera" -#: src/emc/usr_intf/pncconf/pncconf.py:2071 -#: src/emc/usr_intf/pncconf/pncconf.py:2103 +#: src/emc/usr_intf/pncconf/pncconf.py:2135 msgid "# spindle-velocity bounces around so we filter it with lowpass" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2072 -#: src/emc/usr_intf/pncconf/pncconf.py:2104 +#: src/emc/usr_intf/pncconf/pncconf.py:2136 msgid "" "# spindle-velocity is signed so we use absolute component to remove sign" msgstr "" "# prędkość wrzeciona jest ze znakiem wiec używamy komponent abs aby usunąć " "znak" -#: src/emc/usr_intf/pncconf/pncconf.py:2073 -#: src/emc/usr_intf/pncconf/pncconf.py:2105 +#: src/emc/usr_intf/pncconf/pncconf.py:2137 msgid "# ACTUAL velocity is in RPS not RPM so we scale it." msgstr "# prędkość AKTUALNA jest w RPS a nie w RPM więc musimy ją zeskalować." -#: src/emc/usr_intf/pncconf/pncconf.py:2114 -msgid "" -"# Use COMMANDED spindle velocity from LinuxCNC because no spindle encoder " -"was specified" -msgstr "" -"# Używam ZADANEJ prędkości wrzeciona z LinuxCNC ponieważ nie był " -"zdefiniowany enkoder wrzeciona" - -#: src/emc/usr_intf/pncconf/pncconf.py:2083 -#: src/emc/usr_intf/pncconf/pncconf.py:2115 -msgid "" -"# COMMANDED velocity is signed so we use absolute component to remove sign" -msgstr "" -"# prędkość ZADANA jest ze znakiem więc używamy komponentu abs aby usunąć " -"znak" - -#: src/emc/usr_intf/pncconf/pncconf.py:2727 -#: src/emc/usr_intf/pncconf/pncconf.py:2759 +#: src/emc/usr_intf/pncconf/pncconf.py:2821 msgid "# connect miscellaneous signals" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2730 -#: src/emc/usr_intf/pncconf/pncconf.py:2762 +#: src/emc/usr_intf/pncconf/pncconf.py:2824 msgid "# ---HALUI signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2749 -#: src/emc/usr_intf/pncconf/pncconf.py:2781 +#: src/emc/usr_intf/pncconf/pncconf.py:2843 msgid "# ---charge pump signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2753 -#: src/emc/usr_intf/pncconf/pncconf.py:2785 +#: src/emc/usr_intf/pncconf/pncconf.py:2847 msgid "# ---coolant signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2758 -#: src/emc/usr_intf/pncconf/pncconf.py:2790 +#: src/emc/usr_intf/pncconf/pncconf.py:2852 msgid "# ---probe signal---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2763 -#: src/emc/usr_intf/pncconf/pncconf.py:2795 +#: src/emc/usr_intf/pncconf/pncconf.py:2857 msgid "# ---jog button signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2768 -#: src/emc/usr_intf/pncconf/pncconf.py:2800 +#: src/emc/usr_intf/pncconf/pncconf.py:2862 msgid "# ---USB device jog button signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2803 -#: src/emc/usr_intf/pncconf/pncconf.py:2825 -#: src/emc/usr_intf/pncconf/pncconf.py:2835 -#: src/emc/usr_intf/pncconf/pncconf.py:2857 +#: src/emc/usr_intf/pncconf/pncconf.py:2903 +#: src/emc/usr_intf/pncconf/pncconf.py:2929 msgid "# ---mpg signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2971 -#: src/emc/usr_intf/pncconf/pncconf.py:3003 +#: src/emc/usr_intf/pncconf/pncconf.py:3111 msgid "# ---motion control signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2976 -#: src/emc/usr_intf/pncconf/pncconf.py:3008 +#: src/emc/usr_intf/pncconf/pncconf.py:3116 msgid "# ---digital in / out signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2986 -#: src/emc/usr_intf/pncconf/pncconf.py:3018 +#: src/emc/usr_intf/pncconf/pncconf.py:3126 msgid "# ---estop signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3005 -#: src/emc/usr_intf/pncconf/pncconf.py:3037 +#: src/emc/usr_intf/pncconf/pncconf.py:3145 msgid "# ---manual tool change signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3014 -#: src/emc/usr_intf/pncconf/pncconf.py:3046 +#: src/emc/usr_intf/pncconf/pncconf.py:3154 msgid "# ---toolchange signals for custom tool changer---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3036 -#: src/emc/usr_intf/pncconf/pncconf.py:3068 +#: src/emc/usr_intf/pncconf/pncconf.py:3176 msgid "# --- Classicladder signals for Z axis Auto touch off program---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3055 -#: src/emc/usr_intf/pncconf/pncconf.py:3087 +#: src/emc/usr_intf/pncconf/pncconf.py:3195 msgid "# These files are loaded post gladeVCP, in the order they appear" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3069 -#: src/emc/usr_intf/pncconf/pncconf.py:3136 -#: src/emc/usr_intf/pncconf/pncconf.py:3101 -#: src/emc/usr_intf/pncconf/pncconf.py:3168 +#: src/emc/usr_intf/pncconf/pncconf.py:3209 +#: src/emc/usr_intf/pncconf/pncconf.py:3276 msgid "# _DO NOT_ include your HAL commands here." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3070 -#: src/emc/usr_intf/pncconf/pncconf.py:3102 +#: src/emc/usr_intf/pncconf/pncconf.py:3210 msgid "# Put custom HAL commands in custom_gvcp.hal" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3073 -#: src/emc/usr_intf/pncconf/pncconf.py:3105 +#: src/emc/usr_intf/pncconf/pncconf.py:3213 msgid "# **** Setup of spindle speed display using gladevcp ****" msgstr "# **** Konfiguracja wyświetlania prędkości wrzeciona w gladevcp ****" -#: src/emc/usr_intf/pncconf/pncconf.py:3082 -#: src/emc/usr_intf/pncconf/pncconf.py:3114 +#: src/emc/usr_intf/pncconf/pncconf.py:3222 msgid "# **** Setup GLADE MDI buttons ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3095 -#: src/emc/usr_intf/pncconf/pncconf.py:3127 +#: src/emc/usr_intf/pncconf/pncconf.py:3235 msgid "" "# **** Z axis touch-off button - requires the touch-off classicladder " "program ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3125 -#: src/emc/usr_intf/pncconf/pncconf.py:3157 +#: src/emc/usr_intf/pncconf/pncconf.py:3265 msgid "# These files are loaded post GUI, in the order they appear" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3137 -#: src/emc/usr_intf/pncconf/pncconf.py:3169 +#: src/emc/usr_intf/pncconf/pncconf.py:3277 msgid "# Put custom HAL commands in custom_postgui.hal" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3138 -#: src/emc/usr_intf/pncconf/pncconf.py:3170 +#: src/emc/usr_intf/pncconf/pncconf.py:3278 msgid "# The commands in this file are run after the GUI loads" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3148 -#: src/emc/usr_intf/pncconf/pncconf.py:3180 +#: src/emc/usr_intf/pncconf/pncconf.py:3288 msgid "# **** Setup of spindle speed display using pyvcp -END ****" msgstr "" "# **** Konfiguracja wyświetlania prędkości wrzeciona w pyVCP - KONIEC ****" -#: src/emc/usr_intf/pncconf/pncconf.py:3160 -#: src/emc/usr_intf/pncconf/pncconf.py:3192 +#: src/emc/usr_intf/pncconf/pncconf.py:3300 msgid "# This file will not be overwritten when you run PNCconf again" msgstr "# Ten plik nie zostanie nadpisany gdy uruchomisz ponownie PNCconf" -#: src/emc/usr_intf/pncconf/pncconf.py:3166 -#: src/emc/usr_intf/pncconf/pncconf.py:3198 +#: src/emc/usr_intf/pncconf/pncconf.py:3306 msgid "# These commands are required for Touchy GUI" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3218 -#: src/emc/usr_intf/pncconf/pncconf.py:3250 +#: src/emc/usr_intf/pncconf/pncconf.py:3358 #, python-format msgid "Generated by PNCconf at %s" msgstr "Wygenerowane przez PNCconf o %s" -#: src/emc/usr_intf/pncconf/pncconf.py:3230 -#: src/emc/usr_intf/pncconf/pncconf.py:3262 +#: src/emc/usr_intf/pncconf/pncconf.py:3370 msgid "configures LinuxCNC as:\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3231 -#: src/emc/usr_intf/pncconf/pncconf.py:3263 +#: src/emc/usr_intf/pncconf/pncconf.py:3371 msgid "type CNC\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3232 -#: src/emc/usr_intf/pncconf/pncconf.py:3264 +#: src/emc/usr_intf/pncconf/pncconf.py:3372 msgid "will be used as the frontend display" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3241 -#: src/emc/usr_intf/pncconf/pncconf.py:3273 +#: src/emc/usr_intf/pncconf/pncconf.py:3381 msgid " connector" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3253 -#: src/emc/usr_intf/pncconf/pncconf.py:3285 +#: src/emc/usr_intf/pncconf/pncconf.py:3393 msgid "invrt" msgstr "Odwróć" -#: src/emc/usr_intf/pncconf/pncconf.py:3262 -#: src/emc/usr_intf/pncconf/pncconf.py:3294 +#: src/emc/usr_intf/pncconf/pncconf.py:3402 #, python-format msgid "%(name)s Parport" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3267 -#: src/emc/usr_intf/pncconf/pncconf.py:3275 -#: src/emc/usr_intf/pncconf/pncconf.py:3299 -#: src/emc/usr_intf/pncconf/pncconf.py:3307 +#: src/emc/usr_intf/pncconf/pncconf.py:3407 +#: src/emc/usr_intf/pncconf/pncconf.py:3415 msgid "-> inverted" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3269 -#: src/emc/usr_intf/pncconf/pncconf.py:3301 +#: src/emc/usr_intf/pncconf/pncconf.py:3409 #, python-format msgid "pin# %(pinnum)d is connected to input signal:'%(data)s' %(mesag)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3277 -#: src/emc/usr_intf/pncconf/pncconf.py:3309 +#: src/emc/usr_intf/pncconf/pncconf.py:3417 #, python-format msgid "pin# %(pinnum)d is connected to output signal:'%(data)s' %(mesag)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3487 +#: src/emc/usr_intf/pncconf/pncconf.py:3595 msgid "Desktop Launcher for LinuxCNC config made by PNCconf" msgstr "Skrót do konfiguracji LinuxCNC utworzony przez PNCconf" -#: src/emc/usr_intf/pncconf/pncconf.py:3725 -#: src/emc/usr_intf/pncconf/pncconf.py:3769 +#: src/emc/usr_intf/pncconf/pncconf.py:3856 +#, python-format +msgid "%s Axis Configuration" +msgstr "Konfiguracja osi %s" + +#: src/emc/usr_intf/pncconf/pncconf.py:3881 msgid "Spindle Motor/Encoder Configuration" msgstr "Konfiguracja Napędu wrzeciona/Enkodera" -#: src/emc/usr_intf/pncconf/pncconf.py:3727 -#: src/emc/usr_intf/pncconf/pncconf.py:3771 +#: src/emc/usr_intf/pncconf/pncconf.py:3883 #, python-format msgid "%s Axis Motor/Encoder Configuration" msgstr "Konfiguracja silnika/enkodera osi %s" -#: src/emc/usr_intf/pncconf/pncconf.py:3756 -#: src/emc/usr_intf/pncconf/pncconf.py:3800 +#: src/emc/usr_intf/pncconf/pncconf.py:3912 #, python-format msgid "%s Parallel Port Setup" msgstr "Ustawienia %s Portu Równoległego" -#: src/emc/usr_intf/pncconf/pncconf.py:3780 -#: src/emc/usr_intf/pncconf/pncconf.py:3824 +#: src/emc/usr_intf/pncconf/pncconf.py:3936 #, python-format msgid "%s I/0 Setup" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4001 -#: src/emc/usr_intf/pncconf/pncconf.py:4045 +#: src/emc/usr_intf/pncconf/pncconf.py:4162 msgid "Quit PNCconfig and discard changes?" msgstr "Wyjść z programu i odrzucić zmiany?" -#: src/emc/usr_intf/pncconf/pncconf.py:4042 -#: src/emc/usr_intf/pncconf/pncconf.glade:65849 -#: src/emc/usr_intf/pncconf/pncconf.py:4086 -#: src/emc/usr_intf/pncconf/pncconf.glade:72769 +#: src/emc/usr_intf/pncconf/pncconf.py:4203 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Help Pages" msgstr "Strony pomocy" -#: src/emc/usr_intf/pncconf/pncconf.py:4047 -#: src/emc/usr_intf/pncconf/pncconf.py:4091 +#: src/emc/usr_intf/pncconf/pncconf.py:4208 msgid "Help page is unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4054 -#: src/emc/usr_intf/pncconf/pncconf.py:4098 +#: src/emc/usr_intf/pncconf/pncconf.py:4218 msgid "" "You are using a simulated-realtime version of LinuxCNC, so testing / tuning " "of external hardware is unavailable." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4059 -#: src/emc/usr_intf/pncconf/pncconf.py:4103 +#: src/emc/usr_intf/pncconf/pncconf.py:4223 #, python-format msgid "" "You are using a realtime version of LinuxCNC but didn't load a realtime " @@ -9096,130 +10823,104 @@ msgid "" " You are using the %(actual)s kernel instead of %(needed)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4079 -#: src/emc/usr_intf/pncconf/pncconf.py:4123 -#, python-format -msgid "" -"You are have no hostmot2 firmware downloaded in folder:\n" -"%s\n" -"PNCconf will use sample firmware data\n" -"live testing will not be possible" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.py:4137 +#: src/emc/usr_intf/pncconf/pncconf.py:4256 msgid "LinuxCNC 'PNCconf' configuration files" msgstr "Pliki konfiguracyjne 'stepconf' LinuxCNC" -#: src/emc/usr_intf/pncconf/pncconf.py:4123 -#: src/emc/usr_intf/pncconf/pncconf.py:4167 +#: src/emc/usr_intf/pncconf/pncconf.py:4286 msgid "" "It seems data in this file is from too old of a version of PNCConf to " "continue.\n" "." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4130 -#: src/emc/usr_intf/pncconf/pncconf.py:4228 -#: src/emc/usr_intf/pncconf/pncconf.py:4174 -#: src/emc/usr_intf/pncconf/pncconf.py:4272 +#: src/emc/usr_intf/pncconf/pncconf.py:4293 +#: src/emc/usr_intf/pncconf/pncconf.py:4391 #, python-format msgid "Point and click configuration - %s.pncconf " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4250 -#: src/emc/usr_intf/pncconf/pncconf.py:4294 +#: src/emc/usr_intf/pncconf/pncconf.py:4413 msgid "" "You need to designate a parport and/or mesa I/O device before continuing." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4309 -#: src/emc/usr_intf/pncconf/pncconf.py:4353 +#: src/emc/usr_intf/pncconf/pncconf.py:4481 msgid "" "You Have choosen to re-edit the current config, so you can not go to the new/" "modify page.\n" " Quit and reload PNCconf if you wish to build a new config." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4313 -#: src/emc/usr_intf/pncconf/pncconf.py:4357 +#: src/emc/usr_intf/pncconf/pncconf.py:4485 msgid "" "If you can not go to the new/modify page your current data will be lost.\n" "Ok to reset data and start a new configuration?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4594 -#: src/emc/usr_intf/pncconf/pncconf.py:4646 +#: src/emc/usr_intf/pncconf/pncconf.py:4811 msgid "USB device Info Search" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4608 -#: src/emc/usr_intf/pncconf/pncconf.py:4660 +#: src/emc/usr_intf/pncconf/pncconf.py:4825 msgid "USB device page is unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4673 -#: src/emc/usr_intf/pncconf/pncconf.py:4725 +#: src/emc/usr_intf/pncconf/pncconf.py:4890 msgid "Pin names are unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4695 -#: src/emc/usr_intf/pncconf/pncconf.py:4747 +#: src/emc/usr_intf/pncconf/pncconf.py:4912 msgid "Device names are unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4698 -#: src/emc/usr_intf/pncconf/pncconf.py:4750 +#: src/emc/usr_intf/pncconf/pncconf.py:4915 msgid "No Pncconf made device rules were found\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4822 -#: src/emc/usr_intf/pncconf/pncconf.py:4874 +#: src/emc/usr_intf/pncconf/pncconf.py:5041 msgid "" "OK to replace existing glade panel ?\n" "It will be renamed and added to 'backups' folder.\n" -" Clicking 'existing custom program' will aviod this warning. " +" Clicking 'existing custom program' will avoid this warning, but if you " +"change related options later -such as spindle feedback- the HAL connection " +"will not update" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4827 -#: src/emc/usr_intf/pncconf/pncconf.py:4879 +#: src/emc/usr_intf/pncconf/pncconf.py:5047 msgid "" "OK to replace existing custom pyvcp panel?\n" "Existing pyvcp-panel.xml will be renamed and added to 'backups' folder\n" "Clicking 'existing custom program' will aviod this warning. " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5250 -#: src/emc/usr_intf/pncconf/pncconf.py:5317 +#: src/emc/usr_intf/pncconf/pncconf.py:5493 msgid "" "You need to configure the mesa0 page.\n" " Choose the board type, firmware, component amounts and press 'Accept " "component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5254 -#: src/emc/usr_intf/pncconf/pncconf.py:5321 +#: src/emc/usr_intf/pncconf/pncconf.py:5497 msgid "" "The chosen Mesa0 board is different from the current displayed.\n" "please press 'Accept component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5297 -#: src/emc/usr_intf/pncconf/pncconf.py:5364 +#: src/emc/usr_intf/pncconf/pncconf.py:5540 msgid "" "You need to configure the mesa1 page.\n" " Choose the board type, firmware, component amounts and press 'Accept " "component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5301 -#: src/emc/usr_intf/pncconf/pncconf.py:5368 +#: src/emc/usr_intf/pncconf/pncconf.py:5544 msgid "" "The chosen Mesa1 board is different from the current displayed.\n" "please press 'Accept component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5315 -#: src/emc/usr_intf/pncconf/pncconf.py:5382 +#: src/emc/usr_intf/pncconf/pncconf.py:5558 msgid "" "Do to technical reasons this test panel can be loaded only once without " "reloading pncconf.You also will not be able to do any other testing untill " @@ -9228,227 +10929,193 @@ msgid "" "Do you wish to continue the test?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6699 -#: src/emc/usr_intf/pncconf/pncconf.py:6789 +#: src/emc/usr_intf/pncconf/pncconf.py:7042 msgid "First Parallel Port set for OUTPUT" msgstr "Pierwszy Port Szeregowy ustawiony na WYJŚCIE" -#: src/emc/usr_intf/pncconf/pncconf.py:6701 -#: src/emc/usr_intf/pncconf/pncconf.py:6791 +#: src/emc/usr_intf/pncconf/pncconf.py:7044 msgid "First Parallel Port set for INPUT" msgstr "Pierwszy Port Szeregowy ustawiony na WEJŚCIE" -#: src/emc/usr_intf/pncconf/pncconf.py:6725 -#: src/emc/usr_intf/pncconf/pncconf.py:6815 +#: src/emc/usr_intf/pncconf/pncconf.py:7068 msgid "Second Parallel Port set for OUTPUT" msgstr "Drugi Port Szeregowy ustawiony na WYJŚCIE" -#: src/emc/usr_intf/pncconf/pncconf.py:6727 -#: src/emc/usr_intf/pncconf/pncconf.py:6817 +#: src/emc/usr_intf/pncconf/pncconf.py:7070 msgid "Second Parallel Port set for INPUT" msgstr "Drugi Port Szeregowy ustawiony na WEJŚCIE" -#: src/emc/usr_intf/pncconf/pncconf.py:6739 -#: src/emc/usr_intf/pncconf/pncconf.py:6829 +#: src/emc/usr_intf/pncconf/pncconf.py:7082 msgid "Third Parallel Port set for OUTPUT" msgstr "Trzeci Port Szeregowy ustawiony na WYJŚCIE" -#: src/emc/usr_intf/pncconf/pncconf.py:6741 -#: src/emc/usr_intf/pncconf/pncconf.py:6831 +#: src/emc/usr_intf/pncconf/pncconf.py:7084 msgid "Third Parallel Port set for INPUT" msgstr "Trzeci Port Szeregowy ustawiony na WEJŚCIE" -#: src/emc/usr_intf/pncconf/pncconf.py:6866 -#: src/emc/usr_intf/pncconf/pncconf.py:6956 +#: src/emc/usr_intf/pncconf/pncconf.py:7210 msgid "You can not have both steppers and pwm signals for spindle control\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6870 -#: src/emc/usr_intf/pncconf/pncconf.py:6960 +#: src/emc/usr_intf/pncconf/pncconf.py:7214 #, python-format msgid "You forgot to designate a stepper or pwm signal for axis %s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6873 -#: src/emc/usr_intf/pncconf/pncconf.py:6963 +#: src/emc/usr_intf/pncconf/pncconf.py:7217 #, python-format msgid "You forgot to designate an encoder /resolver signal for axis %s servo\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6876 -#: src/emc/usr_intf/pncconf/pncconf.py:6966 +#: src/emc/usr_intf/pncconf/pncconf.py:7220 #, python-format msgid "You forgot to designate a pwm signal or stepper signal for axis %s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6879 -#: src/emc/usr_intf/pncconf/pncconf.py:6969 +#: src/emc/usr_intf/pncconf/pncconf.py:7223 #, python-format msgid "You can not have both steppers and pwm signals for axis %s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6887 -#: src/emc/usr_intf/pncconf/pncconf.py:6977 +#: src/emc/usr_intf/pncconf/pncconf.py:7226 +#, python-format +msgid "" +"If using a tandem axis stepper, you must select a master stepgen for axis " +"%s\n" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:7235 msgid "Touchy require an external cycle start signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6890 -#: src/emc/usr_intf/pncconf/pncconf.py:6980 +#: src/emc/usr_intf/pncconf/pncconf.py:7238 msgid "Touchy require an external abort signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6893 -#: src/emc/usr_intf/pncconf/pncconf.py:6983 +#: src/emc/usr_intf/pncconf/pncconf.py:7241 msgid "Touchy require an external single-step signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6896 -#: src/emc/usr_intf/pncconf/pncconf.py:6986 +#: src/emc/usr_intf/pncconf/pncconf.py:7244 msgid "" "Touchy require an external multi handwheel MPG encoder signal on the mesa " "page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6899 -#: src/emc/usr_intf/pncconf/pncconf.py:6989 +#: src/emc/usr_intf/pncconf/pncconf.py:7247 msgid "" "Touchy require 'external mpg jogging' to be selected on the external control " "page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6902 -#: src/emc/usr_intf/pncconf/pncconf.py:6992 +#: src/emc/usr_intf/pncconf/pncconf.py:7250 msgid "" "Touchy require the external mpg to be in 'shared mpg' mode on the external " "controls page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6905 -#: src/emc/usr_intf/pncconf/pncconf.py:6995 +#: src/emc/usr_intf/pncconf/pncconf.py:7253 msgid "" "Touchy require selectable increments to be unchecked on the external " "controls page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6909 -#: src/emc/usr_intf/pncconf/pncconf.py:6999 +#: src/emc/usr_intf/pncconf/pncconf.py:7257 msgid "" "The 7i29 daughter board requires PWM type generators and a PWM base " "frequency of 20 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6912 -#: src/emc/usr_intf/pncconf/pncconf.py:7002 +#: src/emc/usr_intf/pncconf/pncconf.py:7260 msgid "" "The 7i30 daughter board requires PWM type generators and a PWM base " "frequency of 20 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6915 -#: src/emc/usr_intf/pncconf/pncconf.py:7005 +#: src/emc/usr_intf/pncconf/pncconf.py:7263 msgid "" "The 7i33 daughter board requires PDM type generators and a PDM base " "frequency of 6 Mhz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6918 -#: src/emc/usr_intf/pncconf/pncconf.py:7008 +#: src/emc/usr_intf/pncconf/pncconf.py:7266 msgid "" "The 7i40 daughter board requires PWM type generators and a PWM base " "frequency of 50 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6921 -#: src/emc/usr_intf/pncconf/pncconf.py:7011 +#: src/emc/usr_intf/pncconf/pncconf.py:7269 msgid "" "The 7i48 daughter board requires UDM type generators and a PWM base " "frequency of 24 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7148 -#: src/emc/usr_intf/pncconf/pncconf.py:7236 +#: src/emc/usr_intf/pncconf/pncconf.py:7494 msgid "Gearbox Reduction Ratio" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7151 -#: src/emc/usr_intf/pncconf/pncconf.py:7239 +#: src/emc/usr_intf/pncconf/pncconf.py:7497 msgid "Reduction Ratio" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7154 -#: src/emc/usr_intf/pncconf/pncconf.py:7242 +#: src/emc/usr_intf/pncconf/pncconf.py:7500 msgid "Leadscrew Pitch" msgstr "Skok śruby" -#: src/emc/usr_intf/pncconf/pncconf.py:7157 -#: src/emc/usr_intf/pncconf/pncconf.glade:66327 -#: src/emc/usr_intf/pncconf/pncconf.glade:66622 -#: src/emc/usr_intf/pncconf/pncconf.py:7245 -#: src/emc/usr_intf/pncconf/pncconf.glade:73093 -#: src/emc/usr_intf/pncconf/pncconf.glade:73406 +#: src/emc/usr_intf/pncconf/pncconf.py:7503 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Leadscrew TPI" msgstr "Skok śruby (TPI)" -#: src/emc/usr_intf/pncconf/pncconf.py:7161 -#: src/emc/usr_intf/pncconf/pncconf.py:7162 -#: src/emc/usr_intf/pncconf/pncconf.py:7249 -#: src/emc/usr_intf/pncconf/pncconf.py:7250 +#: src/emc/usr_intf/pncconf/pncconf.py:7507 +#: src/emc/usr_intf/pncconf/pncconf.py:7508 msgid "(" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7163 -#: src/emc/usr_intf/pncconf/pncconf.py:7173 -#: src/emc/usr_intf/pncconf/pncconf.py:7174 -#: src/emc/usr_intf/pncconf/pncconf.py:7175 -#: src/emc/usr_intf/pncconf/pncconf.py:7251 -#: src/emc/usr_intf/pncconf/pncconf.py:7261 -#: src/emc/usr_intf/pncconf/pncconf.py:7262 -#: src/emc/usr_intf/pncconf/pncconf.py:7263 +#: src/emc/usr_intf/pncconf/pncconf.py:7509 +#: src/emc/usr_intf/pncconf/pncconf.py:7519 +#: src/emc/usr_intf/pncconf/pncconf.py:7520 +#: src/emc/usr_intf/pncconf/pncconf.py:7521 msgid " / min" msgstr " / min" -#: src/emc/usr_intf/pncconf/pncconf.py:7164 -#: src/emc/usr_intf/pncconf/pncconf.py:7252 +#: src/emc/usr_intf/pncconf/pncconf.py:7510 msgid " / sec²" msgstr " / sek²" -#: src/emc/usr_intf/pncconf/pncconf.py:7167 -#: src/emc/usr_intf/pncconf/pncconf.py:7255 +#: src/emc/usr_intf/pncconf/pncconf.py:7513 msgid " / Step" msgstr " / krok" -#: src/emc/usr_intf/pncconf/pncconf.py:7168 -#: src/emc/usr_intf/pncconf/pncconf.py:7256 +#: src/emc/usr_intf/pncconf/pncconf.py:7514 msgid "Steps / " msgstr "kroków / " -#: src/emc/usr_intf/pncconf/pncconf.py:7170 -#: src/emc/usr_intf/pncconf/pncconf.py:7258 +#: src/emc/usr_intf/pncconf/pncconf.py:7516 msgid " / encoder pulse" msgstr " / impulsy enkodera" -#: src/emc/usr_intf/pncconf/pncconf.py:7171 -#: src/emc/usr_intf/pncconf/pncconf.py:7259 +#: src/emc/usr_intf/pncconf/pncconf.py:7517 msgid "Encoder pulses / " msgstr "Impulsy enkodera / " -#: src/emc/usr_intf/pncconf/pncconf.py:7482 -#: src/emc/usr_intf/pncconf/pncconf.py:7566 +#: src/emc/usr_intf/pncconf/pncconf.py:7525 +msgid "Resolver Scale:" +msgstr "Skala resolvera" + +#: src/emc/usr_intf/pncconf/pncconf.py:7826 msgid "Axis Scale Calculation" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7785 -#: src/emc/usr_intf/pncconf/pncconf.py:7869 +#: src/emc/usr_intf/pncconf/pncconf.py:8133 msgid "You need to designate an E-stop input pin for this ladder program." msgstr "Musisz wskazać pin wejściowy E-stop dla tego programu PLC" -#: src/emc/usr_intf/pncconf/pncconf.py:7797 -#: src/emc/usr_intf/pncconf/pncconf.py:7881 +#: src/emc/usr_intf/pncconf/pncconf.py:8145 msgid "You need to designate a probe input pin for this ladder program." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7808 -#: src/emc/usr_intf/pncconf/pncconf.py:7892 +#: src/emc/usr_intf/pncconf/pncconf.py:8156 msgid "" "OK to replace existing custom ladder program?\n" "Existing Custom.clp will be renamed custom_backup.clp.\n" @@ -9460,99 +11127,79 @@ msgstr "" "Wszystkie pliki nazwane -custom_backup.clp- zostaną utracone. Wybór " "'Istniejący program PLC' spowoduje niewyświetlanie tego ostrzeżenia" -#: src/emc/usr_intf/pncconf/pncconf.py:8019 -#: src/emc/usr_intf/pncconf/pncconf.py:8106 +#: src/emc/usr_intf/pncconf/pncconf.py:8374 msgid "Do you wish to continue to edit this configuration." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8058 -#: src/emc/usr_intf/pncconf/pncconf.py:8145 +#: src/emc/usr_intf/pncconf/pncconf.py:8413 msgid "PCI search page is unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8176 -#: src/emc/usr_intf/pncconf/pncconf.py:8263 +#: src/emc/usr_intf/pncconf/pncconf.py:8532 msgid "" "You specified there is an existing gladefile, But there is not one in the " "machine-named folder.." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8495 -#: src/emc/usr_intf/pncconf/pncconf.py:8583 +#: src/emc/usr_intf/pncconf/pncconf.py:8856 msgid "Servo tuning is not avaiable in PNCconf yet\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8500 -#: src/emc/usr_intf/pncconf/pncconf.py:8588 +#: src/emc/usr_intf/pncconf/pncconf.py:8861 msgid "degrees" msgstr "stopni" -#: src/emc/usr_intf/pncconf/pncconf.py:8501 -#: src/emc/usr_intf/pncconf/pncconf.py:8589 +#: src/emc/usr_intf/pncconf/pncconf.py:8862 msgid "degrees / minute" msgstr "stopni / minute" -#: src/emc/usr_intf/pncconf/pncconf.py:8502 -#: src/emc/usr_intf/pncconf/pncconf.py:8590 +#: src/emc/usr_intf/pncconf/pncconf.py:8863 msgid "degrees / second²" msgstr "stopni / sek²" -#: src/emc/usr_intf/pncconf/pncconf.py:8504 -#: src/emc/usr_intf/pncconf/pncconf.py:8592 +#: src/emc/usr_intf/pncconf/pncconf.py:8865 msgid "revolutions" msgstr "obrotów" -#: src/emc/usr_intf/pncconf/pncconf.py:8505 -#: src/emc/usr_intf/pncconf/pncconf.py:8593 +#: src/emc/usr_intf/pncconf/pncconf.py:8866 msgid "rpm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8506 -#: src/emc/usr_intf/pncconf/pncconf.py:8594 +#: src/emc/usr_intf/pncconf/pncconf.py:8867 msgid "revs / second²" msgstr "obr / sek²" -#: src/emc/usr_intf/pncconf/pncconf.py:8509 -#: src/emc/usr_intf/pncconf/pncconf.glade:58295 -#: src/emc/usr_intf/pncconf/pncconf.glade:58479 -#: src/emc/usr_intf/pncconf/pncconf.glade:58576 -#: src/emc/usr_intf/pncconf/pncconf.py:8597 -#: src/emc/usr_intf/pncconf/pncconf.glade:65131 -#: src/emc/usr_intf/pncconf/pncconf.glade:65228 -#: src/emc/usr_intf/pncconf/pncconf.glade:65412 +#: src/emc/usr_intf/pncconf/pncconf.py:8870 +#: src/emc/usr_intf/pncconf/pncconf.glade:65184 +#: src/emc/usr_intf/pncconf/pncconf.glade:65281 +#: src/emc/usr_intf/pncconf/pncconf.glade:65465 msgid "mm / minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8510 -#: src/emc/usr_intf/pncconf/pncconf.py:8598 +#: src/emc/usr_intf/pncconf/pncconf.py:8871 msgid "mm / second²" msgstr "cal / sek²" -#: src/emc/usr_intf/pncconf/pncconf.py:8513 -#: src/emc/usr_intf/pncconf/pncconf.py:8601 +#: src/emc/usr_intf/pncconf/pncconf.py:8874 msgid "inches / minute" msgstr "cali / minute" -#: src/emc/usr_intf/pncconf/pncconf.py:8514 -#: src/emc/usr_intf/pncconf/pncconf.py:8602 +#: src/emc/usr_intf/pncconf/pncconf.py:8875 msgid "inches / second²" msgstr "cali / sek²" -#: src/emc/usr_intf/pncconf/pncconf.py:8646 -#: src/emc/usr_intf/pncconf/pncconf.py:8751 +#: src/emc/usr_intf/pncconf/pncconf.py:9031 #, python-format msgid "%s Axis Tune" msgstr "Strojenie Osi %s" -#: src/emc/usr_intf/pncconf/pncconf.py:8810 -#: src/emc/usr_intf/pncconf/pncconf.py:8915 +#: src/emc/usr_intf/pncconf/pncconf.py:9195 msgid "" " You must designate a ENCODER / RESOLVER signal and an ANALOG SPINDLE signal " "for this axis test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8814 -#: src/emc/usr_intf/pncconf/pncconf.py:8919 +#: src/emc/usr_intf/pncconf/pncconf.py:9199 msgid "" " You must designate a ENCODER / RESOLVER signal and a PWM signal for this " "axis test" @@ -9578,48 +11225,65 @@ msgstr "" msgid "Create or Edit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:52 -#: src/emc/usr_intf/pncconf/pncconf.glade:148 -msgid "Create a new configuration" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:66 +msgid "Create a desktop launcher to start LinuxCNC with this configuration." +msgstr "Utwórz na pulpicie skrót do uruchomienia LinuxCNC z tą konfiguracją." -#: src/emc/usr_intf/pncconf/pncconf.glade:118 #: src/emc/usr_intf/pncconf/pncconf.glade:83 msgid "Create a desktop shortcut (symlink) to configuration files." msgstr "Utwórz na pulpicie dowiązanie (symlink) do plików konfiguracyjnych." -#: src/emc/usr_intf/pncconf/pncconf.glade:135 -#: src/emc/usr_intf/pncconf/pncconf.glade:66 -msgid "Create a desktop launcher to start LinuxCNC with this configuration." -msgstr "Utwórz na pulpicie skrót do uruchomienia LinuxCNC z tą konfiguracją." +#: src/emc/usr_intf/pncconf/pncconf.glade:148 +msgid "Create a new configuration" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:175 +msgid "Basic machine information" +msgstr "Podstawowe informacje maszyny" #: src/emc/usr_intf/pncconf/pncconf.glade:214 msgid "Machine Name:" msgstr "Nazwa maszyny:" -#: src/emc/usr_intf/pncconf/pncconf.glade:281 +#: src/emc/usr_intf/pncconf/pncconf.glade:280 msgid "Axis configuration:" msgstr "Konfiguracja Axis:" -#: src/emc/usr_intf/pncconf/pncconf.glade:316 +#: src/emc/usr_intf/pncconf/pncconf.glade:295 +msgid "" +"XYZ\n" +"XYZA\n" +"XZ (Lathe)" +msgstr "" +"XYZ\n" +"XYZA\n" +"XZ (Tokarka)" + +#: src/emc/usr_intf/pncconf/pncconf.glade:322 msgid "Machine units:" msgstr "Jednostki maszyny:" -#: src/emc/usr_intf/pncconf/pncconf.glade:355 -msgid "Machine Basics" +#: src/emc/usr_intf/pncconf/pncconf.glade:337 +msgid "" +"Inch\n" +"Millimeter" msgstr "" +"Cale\n" +"Milimetry" -#: src/emc/usr_intf/pncconf/pncconf.glade:405 -#: src/emc/usr_intf/pncconf/pncconf.glade:467 -msgid "Recommend servo period: 1000000" +#: src/emc/usr_intf/pncconf/pncconf.glade:363 +msgid "Machine Basics" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:431 -#: src/emc/usr_intf/pncconf/pncconf.glade:408 +#: src/emc/usr_intf/pncconf/pncconf.glade:416 msgid "Actual Servo Period: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:486 +#: src/emc/usr_intf/pncconf/pncconf.glade:475 +msgid "Recommend servo period: 1000000" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:494 msgid "" " Test Base\n" "Period Jitter " @@ -9627,41 +11291,41 @@ msgstr "" "Testuj odchylenie\n" "okresu bazowego" -#: src/emc/usr_intf/pncconf/pncconf.glade:511 +#: src/emc/usr_intf/pncconf/pncconf.glade:519 msgid "Computer Response Time" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:553 +#: src/emc/usr_intf/pncconf/pncconf.glade:561 msgid "Mesa0 PCI / Parport Card:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:563 +#: src/emc/usr_intf/pncconf/pncconf.glade:571 msgid "Mesa1 PCI / Parport Card:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:576 +#: src/emc/usr_intf/pncconf/pncconf.glade:584 msgid "First Parport Address:" msgstr "Adres pierwszego portu równoległego:" -#: src/emc/usr_intf/pncconf/pncconf.glade:589 +#: src/emc/usr_intf/pncconf/pncconf.glade:597 msgid "Second Parport Address:" msgstr "Adres drugiego portu równloegłego:" -#: src/emc/usr_intf/pncconf/pncconf.glade:604 +#: src/emc/usr_intf/pncconf/pncconf.glade:612 msgid "Third Parport Address:" msgstr "Adres trzeciego portu równoległego:" -#: src/emc/usr_intf/pncconf/pncconf.glade:627 #: src/emc/usr_intf/pncconf/pncconf.glade:635 +#: src/emc/usr_intf/pncconf/pncconf.glade:643 msgid "" "5i20\n" "5i23\n" "5i22" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:708 -#: src/emc/usr_intf/pncconf/pncconf.glade:720 -#: src/emc/usr_intf/pncconf/pncconf.glade:733 +#: src/emc/usr_intf/pncconf/pncconf.glade:716 +#: src/emc/usr_intf/pncconf/pncconf.glade:728 +#: src/emc/usr_intf/pncconf/pncconf.glade:741 msgid "" "In\n" "Out" @@ -9669,7 +11333,7 @@ msgstr "" "Wejście\n" "Wyjście" -#: src/emc/usr_intf/pncconf/pncconf.glade:796 +#: src/emc/usr_intf/pncconf/pncconf.glade:804 msgid "" "Add-on PCI\n" " Parport\n" @@ -9677,913 +11341,669 @@ msgid "" " Search" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:821 +#: src/emc/usr_intf/pncconf/pncconf.glade:829 msgid "I/O Control Ports/ Boards" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:870 +#: src/emc/usr_intf/pncconf/pncconf.glade:878 msgid "Axis" msgstr "Axis" -#: src/emc/usr_intf/pncconf/pncconf.glade:885 +#: src/emc/usr_intf/pncconf/pncconf.glade:893 msgid "TKLinuxCNC" msgstr "TKLinuxCNC" -#: src/emc/usr_intf/pncconf/pncconf.glade:899 +#: src/emc/usr_intf/pncconf/pncconf.glade:907 msgid "Mini" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:913 -#: src/emc/usr_intf/pncconf/pncconf.glade:6648 +#: src/emc/usr_intf/pncconf/pncconf.glade:921 +#: src/emc/usr_intf/pncconf/pncconf.glade:6656 msgid "Touchy" msgstr "Touchy" -#: src/emc/usr_intf/pncconf/pncconf.glade:930 +#: src/emc/usr_intf/pncconf/pncconf.glade:938 msgid "GUI frontend list" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:965 +#: src/emc/usr_intf/pncconf/pncconf.glade:973 msgid "External Controls" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1006 +#: src/emc/usr_intf/pncconf/pncconf.glade:1014 msgid "Add device rule" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1019 +#: src/emc/usr_intf/pncconf/pncconf.glade:1027 msgid "Test device" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1033 +#: src/emc/usr_intf/pncconf/pncconf.glade:1041 msgid "Search for device rules" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1054 +#: src/emc/usr_intf/pncconf/pncconf.glade:1062 msgid "Device Name:" msgstr "Nazwa urządzenia:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1117 -#: src/emc/usr_intf/pncconf/pncconf.glade:1255 -#: src/emc/usr_intf/pncconf/pncconf.glade:1328 -#: src/emc/usr_intf/pncconf/pncconf.glade:1468 -msgid "Jog Speed select A" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1195 -#: src/emc/usr_intf/pncconf/pncconf.glade:1388 -msgid "Z -" +#: src/emc/usr_intf/pncconf/pncconf.glade:1125 +msgid "A +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1207 -#: src/emc/usr_intf/pncconf/pncconf.glade:1376 -msgid "Y -" +#: src/emc/usr_intf/pncconf/pncconf.glade:1135 +msgid "A -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1219 -#: src/emc/usr_intf/pncconf/pncconf.glade:1366 -msgid "X -" +#: src/emc/usr_intf/pncconf/pncconf.glade:1169 +#: src/emc/usr_intf/pncconf/pncconf.glade:1181 +#: src/emc/usr_intf/pncconf/pncconf.glade:1191 +#: src/emc/usr_intf/pncconf/pncconf.glade:1246 +#: src/emc/usr_intf/pncconf/pncconf.glade:1759 +msgid "mm/min " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1229 -#: src/emc/usr_intf/pncconf/pncconf.glade:1356 -msgid "Z +" +#: src/emc/usr_intf/pncconf/pncconf.glade:1269 +msgid " ab)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1239 -#: src/emc/usr_intf/pncconf/pncconf.glade:1346 -msgid "Y +" +#: src/emc/usr_intf/pncconf/pncconf.glade:1282 +#: src/emc/usr_intf/pncconf/pncconf.glade:2493 +#: src/emc/usr_intf/pncconf/pncconf.glade:2927 +#: src/emc/usr_intf/pncconf/pncconf.glade:3808 +#: src/emc/usr_intf/pncconf/pncconf.glade:4689 +msgid " b)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1249 -#: src/emc/usr_intf/pncconf/pncconf.glade:1340 -msgid "X +" +#: src/emc/usr_intf/pncconf/pncconf.glade:1293 +#: src/emc/usr_intf/pncconf/pncconf.glade:2482 +#: src/emc/usr_intf/pncconf/pncconf.glade:2916 +#: src/emc/usr_intf/pncconf/pncconf.glade:3797 +#: src/emc/usr_intf/pncconf/pncconf.glade:4678 +msgid " a)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1289 -#: src/emc/usr_intf/pncconf/pncconf.glade:2208 -#: src/emc/usr_intf/pncconf/pncconf.glade:3496 -#: src/emc/usr_intf/pncconf/pncconf.glade:4377 -#: src/emc/usr_intf/pncconf/pncconf.glade:5258 -#: src/emc/usr_intf/pncconf/pncconf.glade:1297 -#: src/emc/usr_intf/pncconf/pncconf.glade:2377 -#: src/emc/usr_intf/pncconf/pncconf.glade:2859 -#: src/emc/usr_intf/pncconf/pncconf.glade:3740 -#: src/emc/usr_intf/pncconf/pncconf.glade:4621 +#: src/emc/usr_intf/pncconf/pncconf.glade:1305 +#: src/emc/usr_intf/pncconf/pncconf.glade:2385 +#: src/emc/usr_intf/pncconf/pncconf.glade:2867 +#: src/emc/usr_intf/pncconf/pncconf.glade:3748 +#: src/emc/usr_intf/pncconf/pncconf.glade:4629 msgid "default" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1299 -#: src/emc/usr_intf/pncconf/pncconf.glade:2107 -#: src/emc/usr_intf/pncconf/pncconf.glade:3443 -#: src/emc/usr_intf/pncconf/pncconf.glade:4324 -#: src/emc/usr_intf/pncconf/pncconf.glade:5205 -#: src/emc/usr_intf/pncconf/pncconf.glade:1285 -#: src/emc/usr_intf/pncconf/pncconf.glade:2474 -#: src/emc/usr_intf/pncconf/pncconf.glade:2908 -#: src/emc/usr_intf/pncconf/pncconf.glade:3789 -#: src/emc/usr_intf/pncconf/pncconf.glade:4670 -msgid " a)" +#: src/emc/usr_intf/pncconf/pncconf.glade:1336 +#: src/emc/usr_intf/pncconf/pncconf.glade:1476 +msgid "Jog Speed select A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1311 -#: src/emc/usr_intf/pncconf/pncconf.glade:2096 -#: src/emc/usr_intf/pncconf/pncconf.glade:3432 -#: src/emc/usr_intf/pncconf/pncconf.glade:4313 -#: src/emc/usr_intf/pncconf/pncconf.glade:5194 -#: src/emc/usr_intf/pncconf/pncconf.glade:1274 -#: src/emc/usr_intf/pncconf/pncconf.glade:2485 -#: src/emc/usr_intf/pncconf/pncconf.glade:2919 -#: src/emc/usr_intf/pncconf/pncconf.glade:3800 -#: src/emc/usr_intf/pncconf/pncconf.glade:4681 -msgid " b)" +#: src/emc/usr_intf/pncconf/pncconf.glade:1348 +msgid "X +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1322 -#: src/emc/usr_intf/pncconf/pncconf.glade:1261 -msgid " ab)" +#: src/emc/usr_intf/pncconf/pncconf.glade:1354 +msgid "Y +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1348 -#: src/emc/usr_intf/pncconf/pncconf.glade:1401 -#: src/emc/usr_intf/pncconf/pncconf.glade:1413 -#: src/emc/usr_intf/pncconf/pncconf.glade:1423 -#: src/emc/usr_intf/pncconf/pncconf.glade:1751 -#: src/emc/usr_intf/pncconf/pncconf.glade:1161 -#: src/emc/usr_intf/pncconf/pncconf.glade:1173 -#: src/emc/usr_intf/pncconf/pncconf.glade:1183 -#: src/emc/usr_intf/pncconf/pncconf.glade:1238 -msgid "mm/min " +#: src/emc/usr_intf/pncconf/pncconf.glade:1364 +msgid "Z +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1456 -#: src/emc/usr_intf/pncconf/pncconf.glade:1127 -msgid "A -" +#: src/emc/usr_intf/pncconf/pncconf.glade:1374 +msgid "X -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1468 -#: src/emc/usr_intf/pncconf/pncconf.glade:1117 -msgid "A +" +#: src/emc/usr_intf/pncconf/pncconf.glade:1384 +msgid "Y -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1492 -msgid "Digital Control" +#: src/emc/usr_intf/pncconf/pncconf.glade:1396 +msgid "Z -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1539 -#: src/emc/usr_intf/pncconf/pncconf.glade:1615 -msgid "X " +#: src/emc/usr_intf/pncconf/pncconf.glade:1500 +msgid "Digital Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1545 -#: src/emc/usr_intf/pncconf/pncconf.glade:5901 -#: src/emc/usr_intf/pncconf/pncconf.glade:6531 -#: src/emc/usr_intf/pncconf/pncconf.glade:6910 -#: src/emc/usr_intf/pncconf/pncconf.glade:7257 -#: src/emc/usr_intf/pncconf/pncconf.glade:1605 -#: src/emc/usr_intf/pncconf/pncconf.glade:6126 -#: src/emc/usr_intf/pncconf/pncconf.glade:6450 -#: src/emc/usr_intf/pncconf/pncconf.glade:6852 -#: src/emc/usr_intf/pncconf/pncconf.glade:7227 -msgid "Y" +#: src/emc/usr_intf/pncconf/pncconf.glade:1593 +#: src/emc/usr_intf/gscreen/gscreen.glade:502 +msgid "A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1555 -#: src/emc/usr_intf/pncconf/pncconf.glade:1595 +#: src/emc/usr_intf/pncconf/pncconf.glade:1603 +#: src/emc/usr_intf/gscreen/gscreen.glade:374 msgid "Z" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1565 -#: src/emc/usr_intf/pncconf/pncconf.glade:1585 -msgid "A" +#: src/emc/usr_intf/pncconf/pncconf.glade:1613 +#: src/emc/usr_intf/pncconf/pncconf.glade:6134 +#: src/emc/usr_intf/pncconf/pncconf.glade:6458 +#: src/emc/usr_intf/pncconf/pncconf.glade:6860 +#: src/emc/usr_intf/pncconf/pncconf.glade:7235 +#: src/emc/usr_intf/gscreen/gscreen.glade:244 +msgid "Y" msgstr "" #: src/emc/usr_intf/pncconf/pncconf.glade:1623 +msgid "X " +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1631 msgid "Analog Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1649 -#: src/emc/usr_intf/pncconf/pncconf.glade:1780 -#: src/emc/usr_intf/pncconf/pncconf.glade:2690 -#: src/emc/usr_intf/pncconf/pncconf.glade:3571 -#: src/emc/usr_intf/pncconf/pncconf.glade:4452 -#: src/emc/usr_intf/pncconf/pncconf.glade:5333 -#: src/emc/usr_intf/pncconf/pncconf.glade:57371 -#: src/emc/usr_intf/pncconf/pncconf.glade:64291 +#: src/emc/usr_intf/pncconf/pncconf.glade:1657 +#: src/emc/usr_intf/pncconf/pncconf.glade:1788 +#: src/emc/usr_intf/pncconf/pncconf.glade:2698 +#: src/emc/usr_intf/pncconf/pncconf.glade:3579 +#: src/emc/usr_intf/pncconf/pncconf.glade:4460 +#: src/emc/usr_intf/pncconf/pncconf.glade:5341 +#: src/emc/usr_intf/pncconf/pncconf.glade:64300 msgid "Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1667 +#: src/emc/usr_intf/pncconf/pncconf.glade:1675 msgid "USB Joystick Jogging " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1711 +#: src/emc/usr_intf/pncconf/pncconf.glade:1719 msgid "shared buttons for all axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1724 +#: src/emc/usr_intf/pncconf/pncconf.glade:1732 msgid "buttons for each axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1798 +#: src/emc/usr_intf/pncconf/pncconf.glade:1806 msgid "External Button Jogging" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1839 +#: src/emc/usr_intf/pncconf/pncconf.glade:1847 msgid "Shared MPG / selectable axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1852 +#: src/emc/usr_intf/pncconf/pncconf.glade:1860 msgid "Mpg per axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1867 +#: src/emc/usr_intf/pncconf/pncconf.glade:1875 msgid "selectable MPG increments" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1932 -#: src/emc/usr_intf/pncconf/pncconf.glade:2907 -#: src/emc/usr_intf/pncconf/pncconf.glade:3788 -#: src/emc/usr_intf/pncconf/pncconf.glade:4669 -#: src/emc/usr_intf/pncconf/pncconf.glade:2650 -#: src/emc/usr_intf/pncconf/pncconf.glade:3445 -#: src/emc/usr_intf/pncconf/pncconf.glade:4326 -#: src/emc/usr_intf/pncconf/pncconf.glade:5207 -msgid "Mux options" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1980 -#: src/emc/usr_intf/pncconf/pncconf.glade:2868 -#: src/emc/usr_intf/pncconf/pncconf.glade:3763 -#: src/emc/usr_intf/pncconf/pncconf.glade:4644 -#: src/emc/usr_intf/pncconf/pncconf.glade:2599 -#: src/emc/usr_intf/pncconf/pncconf.glade:3481 -#: src/emc/usr_intf/pncconf/pncconf.glade:4348 -#: src/emc/usr_intf/pncconf/pncconf.glade:5229 -msgid "use debounce" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1940 +#: src/emc/usr_intf/pncconf/pncconf.glade:3379 +#: src/emc/usr_intf/pncconf/pncconf.glade:4260 +#: src/emc/usr_intf/pncconf/pncconf.glade:5141 +msgid " d)" +msgstr "d)" -#: src/emc/usr_intf/pncconf/pncconf.glade:1995 -#: src/emc/usr_intf/pncconf/pncconf.glade:2584 -msgid "use gray code" +#: src/emc/usr_intf/pncconf/pncconf.glade:1952 +#: src/emc/usr_intf/pncconf/pncconf.glade:3340 +#: src/emc/usr_intf/pncconf/pncconf.glade:4221 +#: src/emc/usr_intf/pncconf/pncconf.glade:5102 +msgid " abcd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2010 -#: src/emc/usr_intf/pncconf/pncconf.glade:2569 -msgid "ignore all inputs false" +#: src/emc/usr_intf/pncconf/pncconf.glade:1965 +#: src/emc/usr_intf/pncconf/pncconf.glade:3353 +#: src/emc/usr_intf/pncconf/pncconf.glade:4234 +#: src/emc/usr_intf/pncconf/pncconf.glade:5115 +msgid " bcd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2035 -#: src/emc/usr_intf/pncconf/pncconf.glade:2048 -#: src/emc/usr_intf/pncconf/pncconf.glade:2061 -#: src/emc/usr_intf/pncconf/pncconf.glade:2407 -#: src/emc/usr_intf/pncconf/pncconf.glade:2420 -#: src/emc/usr_intf/pncconf/pncconf.glade:2433 -#: src/emc/usr_intf/pncconf/pncconf.glade:2446 -#: src/emc/usr_intf/pncconf/pncconf.glade:2457 -#: src/emc/usr_intf/pncconf/pncconf.glade:2470 -#: src/emc/usr_intf/pncconf/pncconf.glade:2483 -#: src/emc/usr_intf/pncconf/pncconf.glade:2496 -#: src/emc/usr_intf/pncconf/pncconf.glade:2509 -#: src/emc/usr_intf/pncconf/pncconf.glade:2522 -#: src/emc/usr_intf/pncconf/pncconf.glade:2535 -#: src/emc/usr_intf/pncconf/pncconf.glade:8343 -#: src/emc/usr_intf/pncconf/pncconf.glade:8379 -#: src/emc/usr_intf/pncconf/pncconf.glade:56542 -#: src/emc/usr_intf/pncconf/pncconf.glade:61266 -#: src/emc/usr_intf/pncconf/pncconf.glade:61278 -#: src/emc/usr_intf/pncconf/pncconf.glade:61290 -#: src/emc/usr_intf/pncconf/pncconf.glade:61302 -#: src/emc/usr_intf/pncconf/pncconf.glade:62475 -#: src/emc/usr_intf/pncconf/pncconf.glade:62487 -#: src/emc/usr_intf/pncconf/pncconf.glade:62499 -#: src/emc/usr_intf/pncconf/pncconf.glade:62511 -#: src/emc/usr_intf/pncconf/pncconf.glade:63452 -#: src/emc/usr_intf/pncconf/pncconf.glade:63464 -#: src/emc/usr_intf/pncconf/pncconf.glade:63476 -#: src/emc/usr_intf/pncconf/pncconf.glade:63488 -#: src/emc/usr_intf/pncconf/pncconf.glade:64661 -#: src/emc/usr_intf/pncconf/pncconf.glade:64673 -#: src/emc/usr_intf/pncconf/pncconf.glade:64685 -#: src/emc/usr_intf/pncconf/pncconf.glade:64697 -#: src/emc/usr_intf/pncconf/pncconf.glade:65608 -#: src/emc/usr_intf/pncconf/pncconf.glade:65620 -#: src/emc/usr_intf/pncconf/pncconf.glade:65632 -#: src/emc/usr_intf/pncconf/pncconf.glade:65644 -#: src/emc/usr_intf/pncconf/pncconf.glade:2046 -#: src/emc/usr_intf/pncconf/pncconf.glade:2059 -#: src/emc/usr_intf/pncconf/pncconf.glade:2072 -#: src/emc/usr_intf/pncconf/pncconf.glade:2085 -#: src/emc/usr_intf/pncconf/pncconf.glade:2098 -#: src/emc/usr_intf/pncconf/pncconf.glade:2111 -#: src/emc/usr_intf/pncconf/pncconf.glade:2124 -#: src/emc/usr_intf/pncconf/pncconf.glade:2137 -#: src/emc/usr_intf/pncconf/pncconf.glade:2148 -#: src/emc/usr_intf/pncconf/pncconf.glade:2161 -#: src/emc/usr_intf/pncconf/pncconf.glade:2174 -#: src/emc/usr_intf/pncconf/pncconf.glade:2520 -#: src/emc/usr_intf/pncconf/pncconf.glade:2533 -#: src/emc/usr_intf/pncconf/pncconf.glade:2546 -#: src/emc/usr_intf/pncconf/pncconf.glade:8096 -#: src/emc/usr_intf/pncconf/pncconf.glade:8131 -#: src/emc/usr_intf/pncconf/pncconf.glade:63369 -#: src/emc/usr_intf/pncconf/pncconf.glade:68306 -#: src/emc/usr_intf/pncconf/pncconf.glade:68318 -#: src/emc/usr_intf/pncconf/pncconf.glade:68330 -#: src/emc/usr_intf/pncconf/pncconf.glade:68342 -#: src/emc/usr_intf/pncconf/pncconf.glade:69279 -#: src/emc/usr_intf/pncconf/pncconf.glade:69291 -#: src/emc/usr_intf/pncconf/pncconf.glade:69303 -#: src/emc/usr_intf/pncconf/pncconf.glade:69315 -#: src/emc/usr_intf/pncconf/pncconf.glade:70488 -#: src/emc/usr_intf/pncconf/pncconf.glade:70500 -#: src/emc/usr_intf/pncconf/pncconf.glade:70512 -#: src/emc/usr_intf/pncconf/pncconf.glade:70524 -#: src/emc/usr_intf/pncconf/pncconf.glade:71465 -#: src/emc/usr_intf/pncconf/pncconf.glade:71477 -#: src/emc/usr_intf/pncconf/pncconf.glade:71489 -#: src/emc/usr_intf/pncconf/pncconf.glade:71501 -#: src/emc/usr_intf/pncconf/pncconf.glade:72644 -#: src/emc/usr_intf/pncconf/pncconf.glade:72656 -#: src/emc/usr_intf/pncconf/pncconf.glade:72668 -#: src/emc/usr_intf/pncconf/pncconf.glade:72680 -msgid "label" +#: src/emc/usr_intf/pncconf/pncconf.glade:1978 +#: src/emc/usr_intf/pncconf/pncconf.glade:3366 +#: src/emc/usr_intf/pncconf/pncconf.glade:4247 +#: src/emc/usr_intf/pncconf/pncconf.glade:5128 +msgid " acd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2073 -#: src/emc/usr_intf/pncconf/pncconf.glade:2559 -#: src/emc/usr_intf/pncconf/pncconf.glade:3300 -#: src/emc/usr_intf/pncconf/pncconf.glade:4181 -#: src/emc/usr_intf/pncconf/pncconf.glade:5062 -#: src/emc/usr_intf/pncconf/pncconf.glade:2022 -#: src/emc/usr_intf/pncconf/pncconf.glade:2506 -#: src/emc/usr_intf/pncconf/pncconf.glade:3051 -#: src/emc/usr_intf/pncconf/pncconf.glade:3932 -#: src/emc/usr_intf/pncconf/pncconf.glade:4813 -msgid " abc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:1991 +#: src/emc/usr_intf/pncconf/pncconf.glade:3430 +#: src/emc/usr_intf/pncconf/pncconf.glade:4311 +#: src/emc/usr_intf/pncconf/pncconf.glade:5192 +msgid " cd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2086 -#: src/emc/usr_intf/pncconf/pncconf.glade:3422 -#: src/emc/usr_intf/pncconf/pncconf.glade:4303 -#: src/emc/usr_intf/pncconf/pncconf.glade:5184 -#: src/emc/usr_intf/pncconf/pncconf.glade:2496 -#: src/emc/usr_intf/pncconf/pncconf.glade:2930 -#: src/emc/usr_intf/pncconf/pncconf.glade:3811 -#: src/emc/usr_intf/pncconf/pncconf.glade:4692 -msgid " ab)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2004 +#: src/emc/usr_intf/pncconf/pncconf.glade:3404 +#: src/emc/usr_intf/pncconf/pncconf.glade:4285 +#: src/emc/usr_intf/pncconf/pncconf.glade:5166 +msgid " bd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2372 -#: src/emc/usr_intf/pncconf/pncconf.glade:3321 -#: src/emc/usr_intf/pncconf/pncconf.glade:4202 -#: src/emc/usr_intf/pncconf/pncconf.glade:5083 -#: src/emc/usr_intf/pncconf/pncconf.glade:2209 -#: src/emc/usr_intf/pncconf/pncconf.glade:3030 -#: src/emc/usr_intf/pncconf/pncconf.glade:3911 -#: src/emc/usr_intf/pncconf/pncconf.glade:4792 -msgid " ac)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2017 +#: src/emc/usr_intf/pncconf/pncconf.glade:3391 +#: src/emc/usr_intf/pncconf/pncconf.glade:4272 +#: src/emc/usr_intf/pncconf/pncconf.glade:5153 +msgid " ad)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2383 -#: src/emc/usr_intf/pncconf/pncconf.glade:3311 -#: src/emc/usr_intf/pncconf/pncconf.glade:4192 -#: src/emc/usr_intf/pncconf/pncconf.glade:5073 -#: src/emc/usr_intf/pncconf/pncconf.glade:2199 -#: src/emc/usr_intf/pncconf/pncconf.glade:3041 -#: src/emc/usr_intf/pncconf/pncconf.glade:3922 -#: src/emc/usr_intf/pncconf/pncconf.glade:4803 -msgid " bc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2030 +#: src/emc/usr_intf/pncconf/pncconf.glade:2514 +#: src/emc/usr_intf/pncconf/pncconf.glade:3059 +#: src/emc/usr_intf/pncconf/pncconf.glade:3940 +#: src/emc/usr_intf/pncconf/pncconf.glade:4821 +msgid " abc)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2547 -#: src/emc/usr_intf/pncconf/pncconf.glade:3332 -#: src/emc/usr_intf/pncconf/pncconf.glade:4213 -#: src/emc/usr_intf/pncconf/pncconf.glade:5094 -#: src/emc/usr_intf/pncconf/pncconf.glade:2033 -#: src/emc/usr_intf/pncconf/pncconf.glade:3018 -#: src/emc/usr_intf/pncconf/pncconf.glade:3899 -#: src/emc/usr_intf/pncconf/pncconf.glade:4780 +#: src/emc/usr_intf/pncconf/pncconf.glade:2041 +#: src/emc/usr_intf/pncconf/pncconf.glade:3026 +#: src/emc/usr_intf/pncconf/pncconf.glade:3907 +#: src/emc/usr_intf/pncconf/pncconf.glade:4788 msgid " c)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2570 -#: src/emc/usr_intf/pncconf/pncconf.glade:2966 -#: src/emc/usr_intf/pncconf/pncconf.glade:3847 -#: src/emc/usr_intf/pncconf/pncconf.glade:4728 -#: src/emc/usr_intf/pncconf/pncconf.glade:2009 -#: src/emc/usr_intf/pncconf/pncconf.glade:3383 -#: src/emc/usr_intf/pncconf/pncconf.glade:4264 -#: src/emc/usr_intf/pncconf/pncconf.glade:5145 -msgid " ad)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2207 +#: src/emc/usr_intf/pncconf/pncconf.glade:3049 +#: src/emc/usr_intf/pncconf/pncconf.glade:3930 +#: src/emc/usr_intf/pncconf/pncconf.glade:4811 +msgid " bc)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2583 -#: src/emc/usr_intf/pncconf/pncconf.glade:2953 -#: src/emc/usr_intf/pncconf/pncconf.glade:3834 -#: src/emc/usr_intf/pncconf/pncconf.glade:4715 -#: src/emc/usr_intf/pncconf/pncconf.glade:1996 -#: src/emc/usr_intf/pncconf/pncconf.glade:3396 -#: src/emc/usr_intf/pncconf/pncconf.glade:4277 -#: src/emc/usr_intf/pncconf/pncconf.glade:5158 -msgid " bd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2217 +#: src/emc/usr_intf/pncconf/pncconf.glade:3038 +#: src/emc/usr_intf/pncconf/pncconf.glade:3919 +#: src/emc/usr_intf/pncconf/pncconf.glade:4800 +msgid " ac)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2596 -#: src/emc/usr_intf/pncconf/pncconf.glade:2927 -#: src/emc/usr_intf/pncconf/pncconf.glade:3808 -#: src/emc/usr_intf/pncconf/pncconf.glade:4689 -#: src/emc/usr_intf/pncconf/pncconf.glade:1983 -#: src/emc/usr_intf/pncconf/pncconf.glade:3422 -#: src/emc/usr_intf/pncconf/pncconf.glade:4303 -#: src/emc/usr_intf/pncconf/pncconf.glade:5184 -msgid " cd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2504 +#: src/emc/usr_intf/pncconf/pncconf.glade:2938 +#: src/emc/usr_intf/pncconf/pncconf.glade:3819 +#: src/emc/usr_intf/pncconf/pncconf.glade:4700 +msgid " ab)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2609 -#: src/emc/usr_intf/pncconf/pncconf.glade:2991 -#: src/emc/usr_intf/pncconf/pncconf.glade:3872 -#: src/emc/usr_intf/pncconf/pncconf.glade:4753 -#: src/emc/usr_intf/pncconf/pncconf.glade:1970 -#: src/emc/usr_intf/pncconf/pncconf.glade:3358 -#: src/emc/usr_intf/pncconf/pncconf.glade:4239 -#: src/emc/usr_intf/pncconf/pncconf.glade:5120 -msgid " acd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2577 +msgid "ignore all inputs false" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2622 -#: src/emc/usr_intf/pncconf/pncconf.glade:3004 -#: src/emc/usr_intf/pncconf/pncconf.glade:3885 -#: src/emc/usr_intf/pncconf/pncconf.glade:4766 -#: src/emc/usr_intf/pncconf/pncconf.glade:1957 -#: src/emc/usr_intf/pncconf/pncconf.glade:3345 -#: src/emc/usr_intf/pncconf/pncconf.glade:4226 -#: src/emc/usr_intf/pncconf/pncconf.glade:5107 -msgid " bcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2592 +msgid "use gray code" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2635 -#: src/emc/usr_intf/pncconf/pncconf.glade:3017 -#: src/emc/usr_intf/pncconf/pncconf.glade:3898 -#: src/emc/usr_intf/pncconf/pncconf.glade:4779 -#: src/emc/usr_intf/pncconf/pncconf.glade:1944 -#: src/emc/usr_intf/pncconf/pncconf.glade:3332 -#: src/emc/usr_intf/pncconf/pncconf.glade:4213 -#: src/emc/usr_intf/pncconf/pncconf.glade:5094 -msgid " abcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2607 +#: src/emc/usr_intf/pncconf/pncconf.glade:3489 +#: src/emc/usr_intf/pncconf/pncconf.glade:4356 +#: src/emc/usr_intf/pncconf/pncconf.glade:5237 +msgid "use debounce" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2648 -#: src/emc/usr_intf/pncconf/pncconf.glade:2979 -#: src/emc/usr_intf/pncconf/pncconf.glade:3860 -#: src/emc/usr_intf/pncconf/pncconf.glade:4741 -#: src/emc/usr_intf/pncconf/pncconf.glade:1932 -#: src/emc/usr_intf/pncconf/pncconf.glade:3371 -#: src/emc/usr_intf/pncconf/pncconf.glade:4252 -#: src/emc/usr_intf/pncconf/pncconf.glade:5133 -msgid " d)" -msgstr "d)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2658 +#: src/emc/usr_intf/pncconf/pncconf.glade:3453 +#: src/emc/usr_intf/pncconf/pncconf.glade:4334 +#: src/emc/usr_intf/pncconf/pncconf.glade:5215 +msgid "Mux options" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2664 +#: src/emc/usr_intf/pncconf/pncconf.glade:2672 msgid "increments" msgstr "przyrosty" -#: src/emc/usr_intf/pncconf/pncconf.glade:2708 +#: src/emc/usr_intf/pncconf/pncconf.glade:2716 msgid "External MPG Jogging" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2739 -#: src/emc/usr_intf/pncconf/pncconf.glade:3620 -#: src/emc/usr_intf/pncconf/pncconf.glade:4501 +#: src/emc/usr_intf/pncconf/pncconf.glade:2747 +#: src/emc/usr_intf/pncconf/pncconf.glade:3628 +#: src/emc/usr_intf/pncconf/pncconf.glade:4509 msgid "Use MPG " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2752 -#: src/emc/usr_intf/pncconf/pncconf.glade:3633 -#: src/emc/usr_intf/pncconf/pncconf.glade:4514 +#: src/emc/usr_intf/pncconf/pncconf.glade:2760 +#: src/emc/usr_intf/pncconf/pncconf.glade:3641 +#: src/emc/usr_intf/pncconf/pncconf.glade:4522 msgid "use switches" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2838 -#: src/emc/usr_intf/pncconf/pncconf.glade:3733 -#: src/emc/usr_intf/pncconf/pncconf.glade:4614 -#: src/emc/usr_intf/pncconf/pncconf.glade:3511 -#: src/emc/usr_intf/pncconf/pncconf.glade:4378 -#: src/emc/usr_intf/pncconf/pncconf.glade:5259 -msgid "ignore all-inputs false" +#: src/emc/usr_intf/pncconf/pncconf.glade:3417 +#: src/emc/usr_intf/pncconf/pncconf.glade:4298 +#: src/emc/usr_intf/pncconf/pncconf.glade:5179 +msgid " abd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2853 -#: src/emc/usr_intf/pncconf/pncconf.glade:3748 -#: src/emc/usr_intf/pncconf/pncconf.glade:4629 -#: src/emc/usr_intf/pncconf/pncconf.glade:3496 -#: src/emc/usr_intf/pncconf/pncconf.glade:4363 -#: src/emc/usr_intf/pncconf/pncconf.glade:5244 +#: src/emc/usr_intf/pncconf/pncconf.glade:3504 +#: src/emc/usr_intf/pncconf/pncconf.glade:4371 +#: src/emc/usr_intf/pncconf/pncconf.glade:5252 msgid "use graycode" msgstr "użyj kodu graya" -#: src/emc/usr_intf/pncconf/pncconf.glade:2940 -#: src/emc/usr_intf/pncconf/pncconf.glade:3821 -#: src/emc/usr_intf/pncconf/pncconf.glade:4702 -#: src/emc/usr_intf/pncconf/pncconf.glade:3409 -#: src/emc/usr_intf/pncconf/pncconf.glade:4290 -#: src/emc/usr_intf/pncconf/pncconf.glade:5171 -msgid " abd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:3519 +#: src/emc/usr_intf/pncconf/pncconf.glade:4386 +#: src/emc/usr_intf/pncconf/pncconf.glade:5267 +msgid "ignore all-inputs false" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:3555 -#: src/emc/usr_intf/pncconf/pncconf.glade:4436 -#: src/emc/usr_intf/pncconf/pncconf.glade:5317 +#: src/emc/usr_intf/pncconf/pncconf.glade:3563 +#: src/emc/usr_intf/pncconf/pncconf.glade:4444 +#: src/emc/usr_intf/pncconf/pncconf.glade:5325 msgid "Increments" msgstr "Przyrosty" -#: src/emc/usr_intf/pncconf/pncconf.glade:3589 +#: src/emc/usr_intf/pncconf/pncconf.glade:3597 msgid "External Feed Override" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:4470 +#: src/emc/usr_intf/pncconf/pncconf.glade:4478 msgid "Max Velocity Override" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5351 +#: src/emc/usr_intf/pncconf/pncconf.glade:5359 msgid "External Spindle Override" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5379 +#: src/emc/usr_intf/pncconf/pncconf.glade:5387 msgid "GUI configuration" msgstr "Konfiguracja GUI" -#: src/emc/usr_intf/pncconf/pncconf.glade:5398 +#: src/emc/usr_intf/pncconf/pncconf.glade:5406 msgid "Frontend" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5557 -#: src/emc/usr_intf/pncconf/pncconf.glade:5706 -msgid "" -"Commanded\n" -"Actual" +#: src/emc/usr_intf/pncconf/pncconf.glade:5566 +msgid "Position_offset" msgstr "" -"Zadana\n" -"Aktualna" -#: src/emc/usr_intf/pncconf/pncconf.glade:5570 -#: src/emc/usr_intf/pncconf/pncconf.glade:5694 -msgid "" -"Machine\n" -"Relative\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:5573 +msgid "Position_feedback" msgstr "" -"Maszynowa\n" -"Względna\n" -#: src/emc/usr_intf/pncconf/pncconf.glade:5608 -#: src/emc/usr_intf/pncconf/pncconf.glade:5657 -msgid "Max Feed Override" +#: src/emc/usr_intf/pncconf/pncconf.glade:5584 +msgid "Max Spindle Override " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5667 -#: src/emc/usr_intf/pncconf/pncconf.glade:5598 +#: src/emc/usr_intf/pncconf/pncconf.glade:5606 msgid "Min Spindle Override" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5691 -#: src/emc/usr_intf/pncconf/pncconf.glade:5576 -msgid "Max Spindle Override " +#: src/emc/usr_intf/pncconf/pncconf.glade:5665 +msgid "Max Feed Override" msgstr "" #: src/emc/usr_intf/pncconf/pncconf.glade:5702 -#: src/emc/usr_intf/pncconf/pncconf.glade:5565 -msgid "Position_feedback" +msgid "" +"Machine\n" +"Relative\n" msgstr "" +"Maszynowa\n" +"Względna\n" -#: src/emc/usr_intf/pncconf/pncconf.glade:5713 -#: src/emc/usr_intf/pncconf/pncconf.glade:5558 -msgid "Position_offset" +#: src/emc/usr_intf/pncconf/pncconf.glade:5714 +msgid "" +"Commanded\n" +"Actual" msgstr "" +"Zadana\n" +"Aktualna" -#: src/emc/usr_intf/pncconf/pncconf.glade:5721 +#: src/emc/usr_intf/pncconf/pncconf.glade:5729 msgid "General GUI Defaults" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5808 -#: src/emc/usr_intf/pncconf/pncconf.glade:6219 -msgid "Force Axis to Maximize" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5832 -#: src/emc/usr_intf/pncconf/pncconf.glade:6602 -#: src/emc/usr_intf/pncconf/pncconf.glade:6841 -#: src/emc/usr_intf/pncconf/pncconf.glade:7328 -#: src/emc/usr_intf/pncconf/pncconf.glade:6197 -#: src/emc/usr_intf/pncconf/pncconf.glade:6381 -#: src/emc/usr_intf/pncconf/pncconf.glade:6923 -#: src/emc/usr_intf/pncconf/pncconf.glade:7158 -msgid "H" +#: src/emc/usr_intf/pncconf/pncconf.glade:5811 +msgid "Default linear velocity " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5866 -#: src/emc/usr_intf/pncconf/pncconf.glade:6568 -#: src/emc/usr_intf/pncconf/pncconf.glade:6875 -#: src/emc/usr_intf/pncconf/pncconf.glade:7294 -#: src/emc/usr_intf/pncconf/pncconf.glade:6163 -#: src/emc/usr_intf/pncconf/pncconf.glade:6415 -#: src/emc/usr_intf/pncconf/pncconf.glade:6889 -#: src/emc/usr_intf/pncconf/pncconf.glade:7192 -msgid "W" +#: src/emc/usr_intf/pncconf/pncconf.glade:5818 +msgid "Min linear velocity" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5876 -#: src/emc/usr_intf/pncconf/pncconf.glade:6556 -#: src/emc/usr_intf/pncconf/pncconf.glade:6885 -#: src/emc/usr_intf/pncconf/pncconf.glade:7282 -#: src/emc/usr_intf/pncconf/pncconf.glade:6151 -#: src/emc/usr_intf/pncconf/pncconf.glade:6425 -#: src/emc/usr_intf/pncconf/pncconf.glade:6877 -#: src/emc/usr_intf/pncconf/pncconf.glade:7202 -msgid "X" +#: src/emc/usr_intf/pncconf/pncconf.glade:5829 +msgid "Max linear velocity" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5914 -#: src/emc/usr_intf/pncconf/pncconf.glade:6519 -#: src/emc/usr_intf/pncconf/pncconf.glade:6923 -#: src/emc/usr_intf/pncconf/pncconf.glade:7244 -#: src/emc/usr_intf/pncconf/pncconf.glade:6114 -#: src/emc/usr_intf/pncconf/pncconf.glade:6463 -#: src/emc/usr_intf/pncconf/pncconf.glade:6840 -#: src/emc/usr_intf/pncconf/pncconf.glade:7240 -msgid "Position" -msgstr "Pozycja" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5927 -#: src/emc/usr_intf/pncconf/pncconf.glade:6510 -#: src/emc/usr_intf/pncconf/pncconf.glade:6936 -#: src/emc/usr_intf/pncconf/pncconf.glade:7234 -#: src/emc/usr_intf/pncconf/pncconf.glade:6105 -#: src/emc/usr_intf/pncconf/pncconf.glade:6476 -#: src/emc/usr_intf/pncconf/pncconf.glade:6831 -#: src/emc/usr_intf/pncconf/pncconf.glade:7254 -msgid "size" -msgstr "Rozmiar" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5942 -#: src/emc/usr_intf/pncconf/pncconf.glade:5952 -#: src/emc/usr_intf/pncconf/pncconf.glade:6158 -#: src/emc/usr_intf/pncconf/pncconf.glade:5871 -#: src/emc/usr_intf/pncconf/pncconf.glade:6077 -#: src/emc/usr_intf/pncconf/pncconf.glade:6089 +#: src/emc/usr_intf/pncconf/pncconf.glade:5879 +#: src/emc/usr_intf/pncconf/pncconf.glade:6085 +#: src/emc/usr_intf/pncconf/pncconf.glade:6097 msgid "mm / min" msgstr "mm / min" -#: src/emc/usr_intf/pncconf/pncconf.glade:5975 -#: src/emc/usr_intf/pncconf/pncconf.glade:5985 -#: src/emc/usr_intf/pncconf/pncconf.glade:5997 -#: src/emc/usr_intf/pncconf/pncconf.glade:6032 -#: src/emc/usr_intf/pncconf/pncconf.glade:6044 -#: src/emc/usr_intf/pncconf/pncconf.glade:6056 -msgid "Deg / min" -msgstr "stopnie / min" +#: src/emc/usr_intf/pncconf/pncconf.glade:5892 +msgid "Default Angular velocity " +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6010 -#: src/emc/usr_intf/pncconf/pncconf.glade:6020 -msgid "xyzabc" +#: src/emc/usr_intf/pncconf/pncconf.glade:5926 +msgid "gedit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6023 -#: src/emc/usr_intf/pncconf/pncconf.glade:6009 -msgid "Axis Geometry" +#: src/emc/usr_intf/pncconf/pncconf.glade:5939 +msgid "Min Angular velocity" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6048 -#: src/emc/usr_intf/pncconf/pncconf.glade:5982 -msgid "Max Angular velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:5966 +msgid "Increments " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6061 -#: src/emc/usr_intf/pncconf/pncconf.glade:5969 +#: src/emc/usr_intf/pncconf/pncconf.glade:5977 msgid "5mm 1mm .5mm .1mm .05mm .01mm .005mm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6074 -#: src/emc/usr_intf/pncconf/pncconf.glade:5958 -msgid "Increments " +#: src/emc/usr_intf/pncconf/pncconf.glade:5990 +msgid "Max Angular velocity" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6099 -#: src/emc/usr_intf/pncconf/pncconf.glade:5931 -msgid "Min Angular velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:6017 +msgid "Axis Geometry" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6112 -#: src/emc/usr_intf/pncconf/pncconf.glade:5918 -msgid "gedit" +#: src/emc/usr_intf/pncconf/pncconf.glade:6028 +msgid "xyzabc" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6148 -#: src/emc/usr_intf/pncconf/pncconf.glade:5884 -msgid "Default Angular velocity " -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:6040 +#: src/emc/usr_intf/pncconf/pncconf.glade:6052 +#: src/emc/usr_intf/pncconf/pncconf.glade:6064 +msgid "Deg / min" +msgstr "stopnie / min" -#: src/emc/usr_intf/pncconf/pncconf.glade:6211 -#: src/emc/usr_intf/pncconf/pncconf.glade:5821 -msgid "Max linear velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:6113 +#: src/emc/usr_intf/pncconf/pncconf.glade:6484 +#: src/emc/usr_intf/pncconf/pncconf.glade:6839 +#: src/emc/usr_intf/pncconf/pncconf.glade:7262 +msgid "size" +msgstr "Rozmiar" + +#: src/emc/usr_intf/pncconf/pncconf.glade:6122 +#: src/emc/usr_intf/pncconf/pncconf.glade:6471 +#: src/emc/usr_intf/pncconf/pncconf.glade:6848 +#: src/emc/usr_intf/pncconf/pncconf.glade:7248 +msgid "Position" +msgstr "Pozycja" + +#: src/emc/usr_intf/pncconf/pncconf.glade:6159 +#: src/emc/usr_intf/pncconf/pncconf.glade:6433 +#: src/emc/usr_intf/pncconf/pncconf.glade:6885 +#: src/emc/usr_intf/pncconf/pncconf.glade:7210 +#: src/emc/usr_intf/gscreen/gscreen.glade:116 +msgid "X" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6222 -#: src/emc/usr_intf/pncconf/pncconf.glade:5810 -msgid "Min linear velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:6171 +#: src/emc/usr_intf/pncconf/pncconf.glade:6423 +#: src/emc/usr_intf/pncconf/pncconf.glade:6897 +#: src/emc/usr_intf/pncconf/pncconf.glade:7200 +#: src/emc/usr_intf/gscreen/gscreen.glade:1142 +msgid "W" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6233 -#: src/emc/usr_intf/pncconf/pncconf.glade:5803 -msgid "Default linear velocity " +#: src/emc/usr_intf/pncconf/pncconf.glade:6205 +#: src/emc/usr_intf/pncconf/pncconf.glade:6389 +#: src/emc/usr_intf/pncconf/pncconf.glade:6931 +#: src/emc/usr_intf/pncconf/pncconf.glade:7166 +msgid "H" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6241 -msgid "AXIS defaults" +#: src/emc/usr_intf/pncconf/pncconf.glade:6227 +msgid "Force Axis to Maximize" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6352 -#: src/emc/usr_intf/pncconf/pncconf.glade:6634 -msgid "Error Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:6249 +msgid "AXIS defaults" msgstr "" #: src/emc/usr_intf/pncconf/pncconf.glade:6365 -#: src/emc/usr_intf/pncconf/pncconf.glade:6621 -msgid "DTG Textcolor" +msgid "Force Touchy to Maximize after positioning" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6378 -#: src/emc/usr_intf/pncconf/pncconf.glade:6608 -msgid "Relative Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:6501 +#: src/emc/usr_intf/pncconf/pncconf.glade:7333 +msgid "Follow System Theme\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6391 -#: src/emc/usr_intf/pncconf/pncconf.glade:6595 -msgid "Absolute Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:6514 +#: src/emc/usr_intf/pncconf/pncconf.glade:7347 +msgid "GTK Theme" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6454 -#: src/emc/usr_intf/pncconf/pncconf.glade:6532 +#: src/emc/usr_intf/pncconf/pncconf.glade:6540 +#: src/emc/usr_intf/gscreen/gscreen.glade:1857 msgid "Absolute Text Color" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6479 -#: src/emc/usr_intf/pncconf/pncconf.glade:7148 -#: src/emc/usr_intf/pncconf/pncconf.glade:6506 -#: src/emc/usr_intf/pncconf/pncconf.glade:7339 -msgid "GTK Theme" +#: src/emc/usr_intf/pncconf/pncconf.glade:6603 +msgid "Absolute Textcolor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6491 -#: src/emc/usr_intf/pncconf/pncconf.glade:7158 -#: src/emc/usr_intf/pncconf/pncconf.glade:6493 -#: src/emc/usr_intf/pncconf/pncconf.glade:7325 -msgid "Follow System Theme\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:6616 +msgid "Relative Textcolor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6624 -#: src/emc/usr_intf/pncconf/pncconf.glade:6357 -msgid "Force Touchy to Maximize after positioning" +#: src/emc/usr_intf/pncconf/pncconf.glade:6629 +msgid "DTG Textcolor" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:6642 +msgid "Error Textcolor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6669 +#: src/emc/usr_intf/pncconf/pncconf.glade:6677 msgid "GUI Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6700 +#: src/emc/usr_intf/pncconf/pncconf.glade:6708 msgid "Virtual Control Panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6775 +#: src/emc/usr_intf/pncconf/pncconf.glade:6783 msgid "XYZ buttons (uses Halui)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6946 +#: src/emc/usr_intf/pncconf/pncconf.glade:6954 msgid "Geometry Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7025 +#: src/emc/usr_intf/pncconf/pncconf.glade:7033 msgid "Pyvcp Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7097 +#: src/emc/usr_intf/pncconf/pncconf.glade:7105 msgid "Sample display " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7172 -#: src/emc/usr_intf/pncconf/pncconf.glade:7312 -msgid "Force Maximize" +#: src/emc/usr_intf/pncconf/pncconf.glade:7272 +msgid "Standalone Panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7186 -#: src/emc/usr_intf/pncconf/pncconf.glade:7297 -msgid "Center Tab Embeded" +#: src/emc/usr_intf/pncconf/pncconf.glade:7289 +msgid "Rightside Embeded" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7201 -#: src/emc/usr_intf/pncconf/pncconf.glade:7281 -msgid "Rightside Embeded" +#: src/emc/usr_intf/pncconf/pncconf.glade:7305 +msgid "Center Tab Embeded" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7217 -#: src/emc/usr_intf/pncconf/pncconf.glade:7264 -msgid "Standalone Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:7320 +msgid "Force Maximize" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7351 +#: src/emc/usr_intf/pncconf/pncconf.glade:7359 msgid "Display Options" msgstr "Wyświetlaj Opcje" -#: src/emc/usr_intf/pncconf/pncconf.glade:7401 +#: src/emc/usr_intf/pncconf/pncconf.glade:7409 msgid "Max RPM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7414 +#: src/emc/usr_intf/pncconf/pncconf.glade:7422 msgid "Spindle Speed Indicator" msgstr "Wskaźnik prędkoci wrzeciona" -#: src/emc/usr_intf/pncconf/pncconf.glade:7426 +#: src/emc/usr_intf/pncconf/pncconf.glade:7434 msgid "Spindle At Speed LED" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7438 +#: src/emc/usr_intf/pncconf/pncconf.glade:7446 msgid "Zero X Button" msgstr "Przycisk zerowania X" -#: src/emc/usr_intf/pncconf/pncconf.glade:7450 +#: src/emc/usr_intf/pncconf/pncconf.glade:7458 msgid "Zero Y Button" msgstr "Przycisk zerowania Y" -#: src/emc/usr_intf/pncconf/pncconf.glade:7462 +#: src/emc/usr_intf/pncconf/pncconf.glade:7470 msgid "Zero Z Button" msgstr "Przycisk zerowania Z" -#: src/emc/usr_intf/pncconf/pncconf.glade:7474 +#: src/emc/usr_intf/pncconf/pncconf.glade:7482 msgid "Zero A Button" msgstr "Przycisk zerowania A" -#: src/emc/usr_intf/pncconf/pncconf.glade:7486 +#: src/emc/usr_intf/pncconf/pncconf.glade:7494 msgid "Requires Classicladder touch-off program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7487 +#: src/emc/usr_intf/pncconf/pncconf.glade:7495 msgid "Auto Z Touch Off Button" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7500 +#: src/emc/usr_intf/pncconf/pncconf.glade:7508 msgid "Sample Options" msgstr "Przykładowe opcje" -#: src/emc/usr_intf/pncconf/pncconf.glade:7574 +#: src/emc/usr_intf/pncconf/pncconf.glade:7582 msgid "Gladevcp Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7597 +#: src/emc/usr_intf/pncconf/pncconf.glade:7605 msgid "Include custom GladeVCP GUI panel" msgstr "Dołącz panel GladeVCP GUI" -#: src/emc/usr_intf/pncconf/pncconf.glade:7668 -#: src/emc/usr_intf/pncconf/pncconf.glade:7745 -msgid "Restore joint position after shutdown" +#: src/emc/usr_intf/pncconf/pncconf.glade:7676 +msgid "Force individual manual homing" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7683 -#: src/emc/usr_intf/pncconf/pncconf.glade:7732 -msgid "Move spindle up before tool change" +#: src/emc/usr_intf/pncconf/pncconf.glade:7689 +msgid "Random position toolchanger " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7696 -#: src/emc/usr_intf/pncconf/pncconf.glade:7719 -msgid "Leave spindle on during tool change" +#: src/emc/usr_intf/pncconf/pncconf.glade:7704 +msgid "Require homing before MDI / Running" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7709 -#: src/emc/usr_intf/pncconf/pncconf.glade:7705 +#: src/emc/usr_intf/pncconf/pncconf.glade:7713 msgid "Popup Toolchange Prompt" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7723 -#: src/emc/usr_intf/pncconf/pncconf.glade:7696 -msgid "Require homing before MDI / Running" +#: src/emc/usr_intf/pncconf/pncconf.glade:7727 +msgid "Leave spindle on during tool change" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7732 -#: src/emc/usr_intf/pncconf/pncconf.glade:7681 -msgid "Random position toolchanger " +#: src/emc/usr_intf/pncconf/pncconf.glade:7740 +msgid "Move spindle up before tool change" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7747 -#: src/emc/usr_intf/pncconf/pncconf.glade:7668 -msgid "Force individual manual homing" +#: src/emc/usr_intf/pncconf/pncconf.glade:7753 +msgid "Restore joint position after shutdown" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7761 +#: src/emc/usr_intf/pncconf/pncconf.glade:7769 msgid "Defaults and Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7789 +#: src/emc/usr_intf/pncconf/pncconf.glade:7797 msgid "Mesa0 I/O setup\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7809 +#: src/emc/usr_intf/pncconf/pncconf.glade:7817 msgid "" "Click on each page tab to configure signal names for each connector port.\n" "\n" @@ -10591,1561 +12011,390 @@ msgid "" "accept the changes.\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7998 -#: src/emc/usr_intf/pncconf/pncconf.glade:8474 -msgid "Num of channels: " -msgstr "Ilość kanałow: " - -#: src/emc/usr_intf/pncconf/pncconf.glade:8036 -#: src/emc/usr_intf/pncconf/pncconf.glade:8385 -msgid "7i29 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:8001 +msgid "3PWM base frequency:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8045 -#: src/emc/usr_intf/pncconf/pncconf.glade:8394 -msgid "7i30 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:8036 +msgid "Mesa parport address:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8057 -#: src/emc/usr_intf/pncconf/pncconf.glade:8406 -msgid "7i33 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:8047 +msgid "Firmware:" msgstr "" #: src/emc/usr_intf/pncconf/pncconf.glade:8069 -#: src/emc/usr_intf/pncconf/pncconf.glade:8418 -msgid "7i40 daughter board" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:8081 -#: src/emc/usr_intf/pncconf/pncconf.glade:8430 -msgid "7i48 daughter board" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:8096 -#: src/emc/usr_intf/pncconf/pncconf.glade:8445 -msgid "Sanity Checks" +msgid "SVST8_4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8137 -#: src/emc/usr_intf/pncconf/pncconf.glade:8338 -msgid "Num of Smart Serial Ports:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8094 +msgid "Num of 3 pwm generators: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8148 -#: src/emc/usr_intf/pncconf/pncconf.glade:8332 -msgid "Board name" +#: src/emc/usr_intf/pncconf/pncconf.glade:8128 +msgid "Total number of pins:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8155 -#: src/emc/usr_intf/pncconf/pncconf.glade:8321 -msgid "Num of step generators: " +#: src/emc/usr_intf/pncconf/pncconf.glade:8153 +msgid "" +"Accept components\n" +" Changes" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8166 -#: src/emc/usr_intf/pncconf/pncconf.glade:8310 -msgid "Num of pwm generators:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8168 +msgid "PWM base frequency:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8177 -#: src/emc/usr_intf/pncconf/pncconf.glade:8299 -msgid "Num of encoders:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8179 +msgid "PDM base frequency:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8294 -#: src/emc/usr_intf/pncconf/pncconf.glade:8182 +#: src/emc/usr_intf/pncconf/pncconf.glade:8190 msgid "Watchdog timeout:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8305 -#: src/emc/usr_intf/pncconf/pncconf.glade:8171 -msgid "PDM base frequency:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8307 +msgid "Num of encoders:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8316 -#: src/emc/usr_intf/pncconf/pncconf.glade:8160 -msgid "PWM base frequency:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8318 +msgid "Num of pwm generators:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8328 -#: src/emc/usr_intf/pncconf/pncconf.glade:8145 -msgid "" -"Accept components\n" -" Changes" +#: src/emc/usr_intf/pncconf/pncconf.glade:8329 +msgid "Num of step generators: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8356 -#: src/emc/usr_intf/pncconf/pncconf.glade:8120 -msgid "Total number of pins:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8340 +msgid "Board name" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8389 -#: src/emc/usr_intf/pncconf/pncconf.glade:8086 -msgid "Num of 3 pwm generators: " +#: src/emc/usr_intf/pncconf/pncconf.glade:8346 +msgid "Num of Smart Serial Ports:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8412 -#: src/emc/usr_intf/pncconf/pncconf.glade:8061 -msgid "SVST8_4" +#: src/emc/usr_intf/pncconf/pncconf.glade:8393 +msgid "7i29 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8437 -#: src/emc/usr_intf/pncconf/pncconf.glade:8039 -msgid "Firmware:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8402 +msgid "7i30 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8447 -#: src/emc/usr_intf/pncconf/pncconf.glade:8028 -msgid "Mesa parport address:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8414 +msgid "7i33 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8482 -#: src/emc/usr_intf/pncconf/pncconf.glade:7993 -msgid "3PWM base frequency:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8426 +msgid "7i40 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8504 -#: src/emc/usr_intf/pncconf/pncconf.glade:8520 -msgid "" -"Configuration\n" -" Page" +#: src/emc/usr_intf/pncconf/pncconf.glade:8438 +msgid "7i48 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8698 -#: src/emc/usr_intf/pncconf/pncconf.glade:8712 -#: src/emc/usr_intf/pncconf/pncconf.glade:13677 -#: src/emc/usr_intf/pncconf/pncconf.glade:13689 -#: src/emc/usr_intf/pncconf/pncconf.glade:16373 -#: src/emc/usr_intf/pncconf/pncconf.glade:16385 -#: src/emc/usr_intf/pncconf/pncconf.glade:18883 -#: src/emc/usr_intf/pncconf/pncconf.glade:18895 -#: src/emc/usr_intf/pncconf/pncconf.glade:20747 -#: src/emc/usr_intf/pncconf/pncconf.glade:20759 -#: src/emc/usr_intf/pncconf/pncconf.glade:20962 -#: src/emc/usr_intf/pncconf/pncconf.glade:20976 -#: src/emc/usr_intf/pncconf/pncconf.glade:22758 -#: src/emc/usr_intf/pncconf/pncconf.glade:22772 -#: src/emc/usr_intf/pncconf/pncconf.glade:24554 -#: src/emc/usr_intf/pncconf/pncconf.glade:24568 -#: src/emc/usr_intf/pncconf/pncconf.glade:26330 -#: src/emc/usr_intf/pncconf/pncconf.glade:26344 -#: src/emc/usr_intf/pncconf/pncconf.glade:31324 -#: src/emc/usr_intf/pncconf/pncconf.glade:31336 -#: src/emc/usr_intf/pncconf/pncconf.glade:31600 -#: src/emc/usr_intf/pncconf/pncconf.glade:35669 -#: src/emc/usr_intf/pncconf/pncconf.glade:35681 -#: src/emc/usr_intf/pncconf/pncconf.glade:35814 -#: src/emc/usr_intf/pncconf/pncconf.glade:35828 -#: src/emc/usr_intf/pncconf/pncconf.glade:40000 -#: src/emc/usr_intf/pncconf/pncconf.glade:40012 -#: src/emc/usr_intf/pncconf/pncconf.glade:40174 -#: src/emc/usr_intf/pncconf/pncconf.glade:40188 -#: src/emc/usr_intf/pncconf/pncconf.glade:45168 -#: src/emc/usr_intf/pncconf/pncconf.glade:45180 -#: src/emc/usr_intf/pncconf/pncconf.glade:45431 -#: src/emc/usr_intf/pncconf/pncconf.glade:45445 -#: src/emc/usr_intf/pncconf/pncconf.glade:47097 -#: src/emc/usr_intf/pncconf/pncconf.glade:47111 -#: src/emc/usr_intf/pncconf/pncconf.glade:52091 -#: src/emc/usr_intf/pncconf/pncconf.glade:52103 -#: src/emc/usr_intf/pncconf/pncconf.glade:52354 -#: src/emc/usr_intf/pncconf/pncconf.glade:52368 -#: src/emc/usr_intf/pncconf/pncconf.glade:11184 -#: src/emc/usr_intf/pncconf/pncconf.glade:11196 -#: src/emc/usr_intf/pncconf/pncconf.glade:11432 -#: src/emc/usr_intf/pncconf/pncconf.glade:11446 -#: src/emc/usr_intf/pncconf/pncconf.glade:13941 -#: src/emc/usr_intf/pncconf/pncconf.glade:13955 -#: src/emc/usr_intf/pncconf/pncconf.glade:16637 -#: src/emc/usr_intf/pncconf/pncconf.glade:16651 -#: src/emc/usr_intf/pncconf/pncconf.glade:19182 -#: src/emc/usr_intf/pncconf/pncconf.glade:19196 -#: src/emc/usr_intf/pncconf/pncconf.glade:22559 -#: src/emc/usr_intf/pncconf/pncconf.glade:22571 -#: src/emc/usr_intf/pncconf/pncconf.glade:24355 -#: src/emc/usr_intf/pncconf/pncconf.glade:24367 -#: src/emc/usr_intf/pncconf/pncconf.glade:26151 -#: src/emc/usr_intf/pncconf/pncconf.glade:26163 -#: src/emc/usr_intf/pncconf/pncconf.glade:28764 -#: src/emc/usr_intf/pncconf/pncconf.glade:28776 -#: src/emc/usr_intf/pncconf/pncconf.glade:28909 -#: src/emc/usr_intf/pncconf/pncconf.glade:28923 -#: src/emc/usr_intf/pncconf/pncconf.glade:33094 -#: src/emc/usr_intf/pncconf/pncconf.glade:33267 -#: src/emc/usr_intf/pncconf/pncconf.glade:33281 -#: src/emc/usr_intf/pncconf/pncconf.glade:38261 -#: src/emc/usr_intf/pncconf/pncconf.glade:38273 -#: src/emc/usr_intf/pncconf/pncconf.glade:38524 -#: src/emc/usr_intf/pncconf/pncconf.glade:38538 -#: src/emc/usr_intf/pncconf/pncconf.glade:42608 -#: src/emc/usr_intf/pncconf/pncconf.glade:42620 -#: src/emc/usr_intf/pncconf/pncconf.glade:42753 -#: src/emc/usr_intf/pncconf/pncconf.glade:42767 -#: src/emc/usr_intf/pncconf/pncconf.glade:46939 -#: src/emc/usr_intf/pncconf/pncconf.glade:46951 -#: src/emc/usr_intf/pncconf/pncconf.glade:49531 -#: src/emc/usr_intf/pncconf/pncconf.glade:49543 -#: src/emc/usr_intf/pncconf/pncconf.glade:49676 -#: src/emc/usr_intf/pncconf/pncconf.glade:49690 -#: src/emc/usr_intf/pncconf/pncconf.glade:53862 -#: src/emc/usr_intf/pncconf/pncconf.glade:53874 -#: src/emc/usr_intf/pncconf/pncconf.glade:56454 -#: src/emc/usr_intf/pncconf/pncconf.glade:56466 -#: src/emc/usr_intf/pncconf/pncconf.glade:56599 -#: src/emc/usr_intf/pncconf/pncconf.glade:56613 -#: src/emc/usr_intf/pncconf/pncconf.glade:60785 -#: src/emc/usr_intf/pncconf/pncconf.glade:60797 -msgid "Num" +#: src/emc/usr_intf/pncconf/pncconf.glade:8453 +msgid "Sanity Checks" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8723 -#: src/emc/usr_intf/pncconf/pncconf.glade:8743 -#: src/emc/usr_intf/pncconf/pncconf.glade:8763 -#: src/emc/usr_intf/pncconf/pncconf.glade:8783 -#: src/emc/usr_intf/pncconf/pncconf.glade:8803 -#: src/emc/usr_intf/pncconf/pncconf.glade:8823 -#: src/emc/usr_intf/pncconf/pncconf.glade:8843 -#: src/emc/usr_intf/pncconf/pncconf.glade:8863 -#: src/emc/usr_intf/pncconf/pncconf.glade:8883 -#: src/emc/usr_intf/pncconf/pncconf.glade:8903 -#: src/emc/usr_intf/pncconf/pncconf.glade:8923 -#: src/emc/usr_intf/pncconf/pncconf.glade:8943 -#: src/emc/usr_intf/pncconf/pncconf.glade:8963 -#: src/emc/usr_intf/pncconf/pncconf.glade:8983 -#: src/emc/usr_intf/pncconf/pncconf.glade:9003 -#: src/emc/usr_intf/pncconf/pncconf.glade:9023 -#: src/emc/usr_intf/pncconf/pncconf.glade:9043 -#: src/emc/usr_intf/pncconf/pncconf.glade:9063 -#: src/emc/usr_intf/pncconf/pncconf.glade:9083 -#: src/emc/usr_intf/pncconf/pncconf.glade:9103 -#: src/emc/usr_intf/pncconf/pncconf.glade:9123 -#: src/emc/usr_intf/pncconf/pncconf.glade:9143 -#: src/emc/usr_intf/pncconf/pncconf.glade:9163 -#: src/emc/usr_intf/pncconf/pncconf.glade:11027 -#: src/emc/usr_intf/pncconf/pncconf.glade:11353 -#: src/emc/usr_intf/pncconf/pncconf.glade:13216 -#: src/emc/usr_intf/pncconf/pncconf.glade:13236 -#: src/emc/usr_intf/pncconf/pncconf.glade:13256 -#: src/emc/usr_intf/pncconf/pncconf.glade:13276 -#: src/emc/usr_intf/pncconf/pncconf.glade:13296 -#: src/emc/usr_intf/pncconf/pncconf.glade:13316 -#: src/emc/usr_intf/pncconf/pncconf.glade:13336 -#: src/emc/usr_intf/pncconf/pncconf.glade:13356 -#: src/emc/usr_intf/pncconf/pncconf.glade:13376 -#: src/emc/usr_intf/pncconf/pncconf.glade:13396 -#: src/emc/usr_intf/pncconf/pncconf.glade:13416 -#: src/emc/usr_intf/pncconf/pncconf.glade:13436 -#: src/emc/usr_intf/pncconf/pncconf.glade:13456 -#: src/emc/usr_intf/pncconf/pncconf.glade:13476 -#: src/emc/usr_intf/pncconf/pncconf.glade:13496 -#: src/emc/usr_intf/pncconf/pncconf.glade:13516 -#: src/emc/usr_intf/pncconf/pncconf.glade:13536 -#: src/emc/usr_intf/pncconf/pncconf.glade:13556 -#: src/emc/usr_intf/pncconf/pncconf.glade:13576 -#: src/emc/usr_intf/pncconf/pncconf.glade:13596 -#: src/emc/usr_intf/pncconf/pncconf.glade:13616 -#: src/emc/usr_intf/pncconf/pncconf.glade:13636 -#: src/emc/usr_intf/pncconf/pncconf.glade:13656 -#: src/emc/usr_intf/pncconf/pncconf.glade:13966 -#: src/emc/usr_intf/pncconf/pncconf.glade:15912 -#: src/emc/usr_intf/pncconf/pncconf.glade:15932 -#: src/emc/usr_intf/pncconf/pncconf.glade:15952 -#: src/emc/usr_intf/pncconf/pncconf.glade:15972 -#: src/emc/usr_intf/pncconf/pncconf.glade:15992 -#: src/emc/usr_intf/pncconf/pncconf.glade:16012 -#: src/emc/usr_intf/pncconf/pncconf.glade:16032 -#: src/emc/usr_intf/pncconf/pncconf.glade:16052 -#: src/emc/usr_intf/pncconf/pncconf.glade:16072 -#: src/emc/usr_intf/pncconf/pncconf.glade:16092 -#: src/emc/usr_intf/pncconf/pncconf.glade:16112 -#: src/emc/usr_intf/pncconf/pncconf.glade:16132 -#: src/emc/usr_intf/pncconf/pncconf.glade:16152 -#: src/emc/usr_intf/pncconf/pncconf.glade:16172 -#: src/emc/usr_intf/pncconf/pncconf.glade:16192 -#: src/emc/usr_intf/pncconf/pncconf.glade:16212 -#: src/emc/usr_intf/pncconf/pncconf.glade:16232 -#: src/emc/usr_intf/pncconf/pncconf.glade:16252 -#: src/emc/usr_intf/pncconf/pncconf.glade:16272 -#: src/emc/usr_intf/pncconf/pncconf.glade:16292 -#: src/emc/usr_intf/pncconf/pncconf.glade:16312 -#: src/emc/usr_intf/pncconf/pncconf.glade:16332 -#: src/emc/usr_intf/pncconf/pncconf.glade:16352 -#: src/emc/usr_intf/pncconf/pncconf.glade:16558 -#: src/emc/usr_intf/pncconf/pncconf.glade:18422 -#: src/emc/usr_intf/pncconf/pncconf.glade:18442 -#: src/emc/usr_intf/pncconf/pncconf.glade:18462 -#: src/emc/usr_intf/pncconf/pncconf.glade:18482 -#: src/emc/usr_intf/pncconf/pncconf.glade:18502 -#: src/emc/usr_intf/pncconf/pncconf.glade:18522 -#: src/emc/usr_intf/pncconf/pncconf.glade:18542 -#: src/emc/usr_intf/pncconf/pncconf.glade:18562 -#: src/emc/usr_intf/pncconf/pncconf.glade:18582 -#: src/emc/usr_intf/pncconf/pncconf.glade:18602 -#: src/emc/usr_intf/pncconf/pncconf.glade:18622 -#: src/emc/usr_intf/pncconf/pncconf.glade:18642 -#: src/emc/usr_intf/pncconf/pncconf.glade:18662 -#: src/emc/usr_intf/pncconf/pncconf.glade:18682 -#: src/emc/usr_intf/pncconf/pncconf.glade:18702 -#: src/emc/usr_intf/pncconf/pncconf.glade:18722 -#: src/emc/usr_intf/pncconf/pncconf.glade:18742 -#: src/emc/usr_intf/pncconf/pncconf.glade:18762 -#: src/emc/usr_intf/pncconf/pncconf.glade:18782 -#: src/emc/usr_intf/pncconf/pncconf.glade:18802 -#: src/emc/usr_intf/pncconf/pncconf.glade:18822 -#: src/emc/usr_intf/pncconf/pncconf.glade:18842 -#: src/emc/usr_intf/pncconf/pncconf.glade:18862 -#: src/emc/usr_intf/pncconf/pncconf.glade:26355 -#: src/emc/usr_intf/pncconf/pncconf.glade:26375 -#: src/emc/usr_intf/pncconf/pncconf.glade:26395 -#: src/emc/usr_intf/pncconf/pncconf.glade:26415 -#: src/emc/usr_intf/pncconf/pncconf.glade:26435 -#: src/emc/usr_intf/pncconf/pncconf.glade:26455 -#: src/emc/usr_intf/pncconf/pncconf.glade:26475 -#: src/emc/usr_intf/pncconf/pncconf.glade:26495 -#: src/emc/usr_intf/pncconf/pncconf.glade:26515 -#: src/emc/usr_intf/pncconf/pncconf.glade:26535 -#: src/emc/usr_intf/pncconf/pncconf.glade:26555 -#: src/emc/usr_intf/pncconf/pncconf.glade:26575 -#: src/emc/usr_intf/pncconf/pncconf.glade:26595 -#: src/emc/usr_intf/pncconf/pncconf.glade:26615 -#: src/emc/usr_intf/pncconf/pncconf.glade:26635 -#: src/emc/usr_intf/pncconf/pncconf.glade:26655 -#: src/emc/usr_intf/pncconf/pncconf.glade:26675 -#: src/emc/usr_intf/pncconf/pncconf.glade:26695 -#: src/emc/usr_intf/pncconf/pncconf.glade:26715 -#: src/emc/usr_intf/pncconf/pncconf.glade:26735 -#: src/emc/usr_intf/pncconf/pncconf.glade:26755 -#: src/emc/usr_intf/pncconf/pncconf.glade:26775 -#: src/emc/usr_intf/pncconf/pncconf.glade:26795 -#: src/emc/usr_intf/pncconf/pncconf.glade:28711 -#: src/emc/usr_intf/pncconf/pncconf.glade:28934 -#: src/emc/usr_intf/pncconf/pncconf.glade:30863 -#: src/emc/usr_intf/pncconf/pncconf.glade:30883 -#: src/emc/usr_intf/pncconf/pncconf.glade:30903 -#: src/emc/usr_intf/pncconf/pncconf.glade:30923 -#: src/emc/usr_intf/pncconf/pncconf.glade:30943 -#: src/emc/usr_intf/pncconf/pncconf.glade:30963 -#: src/emc/usr_intf/pncconf/pncconf.glade:30983 -#: src/emc/usr_intf/pncconf/pncconf.glade:31003 -#: src/emc/usr_intf/pncconf/pncconf.glade:31023 -#: src/emc/usr_intf/pncconf/pncconf.glade:31043 -#: src/emc/usr_intf/pncconf/pncconf.glade:31063 -#: src/emc/usr_intf/pncconf/pncconf.glade:31083 -#: src/emc/usr_intf/pncconf/pncconf.glade:31103 -#: src/emc/usr_intf/pncconf/pncconf.glade:31123 -#: src/emc/usr_intf/pncconf/pncconf.glade:31143 -#: src/emc/usr_intf/pncconf/pncconf.glade:31163 -#: src/emc/usr_intf/pncconf/pncconf.glade:31183 -#: src/emc/usr_intf/pncconf/pncconf.glade:31203 -#: src/emc/usr_intf/pncconf/pncconf.glade:31223 -#: src/emc/usr_intf/pncconf/pncconf.glade:31243 -#: src/emc/usr_intf/pncconf/pncconf.glade:31263 -#: src/emc/usr_intf/pncconf/pncconf.glade:31283 -#: src/emc/usr_intf/pncconf/pncconf.glade:31303 -#: src/emc/usr_intf/pncconf/pncconf.glade:31611 -#: src/emc/usr_intf/pncconf/pncconf.glade:31631 -#: src/emc/usr_intf/pncconf/pncconf.glade:31651 -#: src/emc/usr_intf/pncconf/pncconf.glade:31671 -#: src/emc/usr_intf/pncconf/pncconf.glade:31691 -#: src/emc/usr_intf/pncconf/pncconf.glade:31711 -#: src/emc/usr_intf/pncconf/pncconf.glade:31731 -#: src/emc/usr_intf/pncconf/pncconf.glade:31751 -#: src/emc/usr_intf/pncconf/pncconf.glade:31771 -#: src/emc/usr_intf/pncconf/pncconf.glade:31791 -#: src/emc/usr_intf/pncconf/pncconf.glade:31811 -#: src/emc/usr_intf/pncconf/pncconf.glade:33029 -#: src/emc/usr_intf/pncconf/pncconf.glade:33292 -#: src/emc/usr_intf/pncconf/pncconf.glade:35208 -#: src/emc/usr_intf/pncconf/pncconf.glade:35228 -#: src/emc/usr_intf/pncconf/pncconf.glade:35248 -#: src/emc/usr_intf/pncconf/pncconf.glade:35268 -#: src/emc/usr_intf/pncconf/pncconf.glade:35288 -#: src/emc/usr_intf/pncconf/pncconf.glade:35308 -#: src/emc/usr_intf/pncconf/pncconf.glade:35328 -#: src/emc/usr_intf/pncconf/pncconf.glade:35348 -#: src/emc/usr_intf/pncconf/pncconf.glade:35368 -#: src/emc/usr_intf/pncconf/pncconf.glade:35388 -#: src/emc/usr_intf/pncconf/pncconf.glade:35408 -#: src/emc/usr_intf/pncconf/pncconf.glade:35428 -#: src/emc/usr_intf/pncconf/pncconf.glade:35448 -#: src/emc/usr_intf/pncconf/pncconf.glade:35468 -#: src/emc/usr_intf/pncconf/pncconf.glade:35488 -#: src/emc/usr_intf/pncconf/pncconf.glade:35508 -#: src/emc/usr_intf/pncconf/pncconf.glade:35528 -#: src/emc/usr_intf/pncconf/pncconf.glade:35548 -#: src/emc/usr_intf/pncconf/pncconf.glade:35568 -#: src/emc/usr_intf/pncconf/pncconf.glade:35588 -#: src/emc/usr_intf/pncconf/pncconf.glade:35608 -#: src/emc/usr_intf/pncconf/pncconf.glade:35628 -#: src/emc/usr_intf/pncconf/pncconf.glade:35648 -#: src/emc/usr_intf/pncconf/pncconf.glade:35839 -#: src/emc/usr_intf/pncconf/pncconf.glade:35859 -#: src/emc/usr_intf/pncconf/pncconf.glade:35879 -#: src/emc/usr_intf/pncconf/pncconf.glade:35899 -#: src/emc/usr_intf/pncconf/pncconf.glade:35919 -#: src/emc/usr_intf/pncconf/pncconf.glade:35939 -#: src/emc/usr_intf/pncconf/pncconf.glade:35959 -#: src/emc/usr_intf/pncconf/pncconf.glade:35979 -#: src/emc/usr_intf/pncconf/pncconf.glade:35999 -#: src/emc/usr_intf/pncconf/pncconf.glade:36019 -#: src/emc/usr_intf/pncconf/pncconf.glade:36039 -#: src/emc/usr_intf/pncconf/pncconf.glade:36059 -#: src/emc/usr_intf/pncconf/pncconf.glade:36079 -#: src/emc/usr_intf/pncconf/pncconf.glade:36099 -#: src/emc/usr_intf/pncconf/pncconf.glade:36119 -#: src/emc/usr_intf/pncconf/pncconf.glade:36139 -#: src/emc/usr_intf/pncconf/pncconf.glade:36159 -#: src/emc/usr_intf/pncconf/pncconf.glade:36179 -#: src/emc/usr_intf/pncconf/pncconf.glade:36199 -#: src/emc/usr_intf/pncconf/pncconf.glade:36219 -#: src/emc/usr_intf/pncconf/pncconf.glade:36239 -#: src/emc/usr_intf/pncconf/pncconf.glade:36259 -#: src/emc/usr_intf/pncconf/pncconf.glade:36279 -#: src/emc/usr_intf/pncconf/pncconf.glade:38208 -#: src/emc/usr_intf/pncconf/pncconf.glade:38549 -#: src/emc/usr_intf/pncconf/pncconf.glade:39779 -#: src/emc/usr_intf/pncconf/pncconf.glade:39799 -#: src/emc/usr_intf/pncconf/pncconf.glade:39819 -#: src/emc/usr_intf/pncconf/pncconf.glade:39839 -#: src/emc/usr_intf/pncconf/pncconf.glade:39859 -#: src/emc/usr_intf/pncconf/pncconf.glade:39879 -#: src/emc/usr_intf/pncconf/pncconf.glade:39899 -#: src/emc/usr_intf/pncconf/pncconf.glade:39919 -#: src/emc/usr_intf/pncconf/pncconf.glade:39939 -#: src/emc/usr_intf/pncconf/pncconf.glade:39959 -#: src/emc/usr_intf/pncconf/pncconf.glade:39979 -#: src/emc/usr_intf/pncconf/pncconf.glade:40199 -#: src/emc/usr_intf/pncconf/pncconf.glade:40219 -#: src/emc/usr_intf/pncconf/pncconf.glade:40239 -#: src/emc/usr_intf/pncconf/pncconf.glade:40259 -#: src/emc/usr_intf/pncconf/pncconf.glade:40279 -#: src/emc/usr_intf/pncconf/pncconf.glade:40299 -#: src/emc/usr_intf/pncconf/pncconf.glade:40319 -#: src/emc/usr_intf/pncconf/pncconf.glade:40339 -#: src/emc/usr_intf/pncconf/pncconf.glade:40359 -#: src/emc/usr_intf/pncconf/pncconf.glade:40379 -#: src/emc/usr_intf/pncconf/pncconf.glade:40399 -#: src/emc/usr_intf/pncconf/pncconf.glade:40419 -#: src/emc/usr_intf/pncconf/pncconf.glade:40439 -#: src/emc/usr_intf/pncconf/pncconf.glade:40459 -#: src/emc/usr_intf/pncconf/pncconf.glade:40479 -#: src/emc/usr_intf/pncconf/pncconf.glade:40499 -#: src/emc/usr_intf/pncconf/pncconf.glade:40519 -#: src/emc/usr_intf/pncconf/pncconf.glade:40539 -#: src/emc/usr_intf/pncconf/pncconf.glade:40559 -#: src/emc/usr_intf/pncconf/pncconf.glade:40579 -#: src/emc/usr_intf/pncconf/pncconf.glade:40599 -#: src/emc/usr_intf/pncconf/pncconf.glade:40619 -#: src/emc/usr_intf/pncconf/pncconf.glade:40639 -#: src/emc/usr_intf/pncconf/pncconf.glade:42555 -#: src/emc/usr_intf/pncconf/pncconf.glade:42778 -#: src/emc/usr_intf/pncconf/pncconf.glade:44707 -#: src/emc/usr_intf/pncconf/pncconf.glade:44727 -#: src/emc/usr_intf/pncconf/pncconf.glade:44747 -#: src/emc/usr_intf/pncconf/pncconf.glade:44767 -#: src/emc/usr_intf/pncconf/pncconf.glade:44787 -#: src/emc/usr_intf/pncconf/pncconf.glade:44807 -#: src/emc/usr_intf/pncconf/pncconf.glade:44827 -#: src/emc/usr_intf/pncconf/pncconf.glade:44847 -#: src/emc/usr_intf/pncconf/pncconf.glade:44867 -#: src/emc/usr_intf/pncconf/pncconf.glade:44887 -#: src/emc/usr_intf/pncconf/pncconf.glade:44907 -#: src/emc/usr_intf/pncconf/pncconf.glade:44927 -#: src/emc/usr_intf/pncconf/pncconf.glade:44947 -#: src/emc/usr_intf/pncconf/pncconf.glade:44967 -#: src/emc/usr_intf/pncconf/pncconf.glade:44987 -#: src/emc/usr_intf/pncconf/pncconf.glade:45007 -#: src/emc/usr_intf/pncconf/pncconf.glade:45027 -#: src/emc/usr_intf/pncconf/pncconf.glade:45047 -#: src/emc/usr_intf/pncconf/pncconf.glade:45067 -#: src/emc/usr_intf/pncconf/pncconf.glade:45087 -#: src/emc/usr_intf/pncconf/pncconf.glade:45107 -#: src/emc/usr_intf/pncconf/pncconf.glade:45127 -#: src/emc/usr_intf/pncconf/pncconf.glade:45147 -#: src/emc/usr_intf/pncconf/pncconf.glade:45456 -#: src/emc/usr_intf/pncconf/pncconf.glade:45476 -#: src/emc/usr_intf/pncconf/pncconf.glade:45496 -#: src/emc/usr_intf/pncconf/pncconf.glade:45516 -#: src/emc/usr_intf/pncconf/pncconf.glade:45536 -#: src/emc/usr_intf/pncconf/pncconf.glade:45556 -#: src/emc/usr_intf/pncconf/pncconf.glade:45576 -#: src/emc/usr_intf/pncconf/pncconf.glade:45596 -#: src/emc/usr_intf/pncconf/pncconf.glade:45616 -#: src/emc/usr_intf/pncconf/pncconf.glade:45636 -#: src/emc/usr_intf/pncconf/pncconf.glade:45656 -#: src/emc/usr_intf/pncconf/pncconf.glade:46886 -#: src/emc/usr_intf/pncconf/pncconf.glade:47122 -#: src/emc/usr_intf/pncconf/pncconf.glade:47142 -#: src/emc/usr_intf/pncconf/pncconf.glade:47162 -#: src/emc/usr_intf/pncconf/pncconf.glade:47182 -#: src/emc/usr_intf/pncconf/pncconf.glade:47202 -#: src/emc/usr_intf/pncconf/pncconf.glade:47222 -#: src/emc/usr_intf/pncconf/pncconf.glade:47242 -#: src/emc/usr_intf/pncconf/pncconf.glade:47262 -#: src/emc/usr_intf/pncconf/pncconf.glade:47282 -#: src/emc/usr_intf/pncconf/pncconf.glade:47302 -#: src/emc/usr_intf/pncconf/pncconf.glade:47322 -#: src/emc/usr_intf/pncconf/pncconf.glade:47342 -#: src/emc/usr_intf/pncconf/pncconf.glade:47362 -#: src/emc/usr_intf/pncconf/pncconf.glade:47382 -#: src/emc/usr_intf/pncconf/pncconf.glade:47402 -#: src/emc/usr_intf/pncconf/pncconf.glade:47422 -#: src/emc/usr_intf/pncconf/pncconf.glade:47442 -#: src/emc/usr_intf/pncconf/pncconf.glade:47462 -#: src/emc/usr_intf/pncconf/pncconf.glade:47482 -#: src/emc/usr_intf/pncconf/pncconf.glade:47502 -#: src/emc/usr_intf/pncconf/pncconf.glade:47522 -#: src/emc/usr_intf/pncconf/pncconf.glade:47542 -#: src/emc/usr_intf/pncconf/pncconf.glade:47562 -#: src/emc/usr_intf/pncconf/pncconf.glade:49478 -#: src/emc/usr_intf/pncconf/pncconf.glade:49701 -#: src/emc/usr_intf/pncconf/pncconf.glade:51630 -#: src/emc/usr_intf/pncconf/pncconf.glade:51650 -#: src/emc/usr_intf/pncconf/pncconf.glade:51670 -#: src/emc/usr_intf/pncconf/pncconf.glade:51690 -#: src/emc/usr_intf/pncconf/pncconf.glade:51710 -#: src/emc/usr_intf/pncconf/pncconf.glade:51730 -#: src/emc/usr_intf/pncconf/pncconf.glade:51750 -#: src/emc/usr_intf/pncconf/pncconf.glade:51770 -#: src/emc/usr_intf/pncconf/pncconf.glade:51790 -#: src/emc/usr_intf/pncconf/pncconf.glade:51810 -#: src/emc/usr_intf/pncconf/pncconf.glade:51830 -#: src/emc/usr_intf/pncconf/pncconf.glade:51850 -#: src/emc/usr_intf/pncconf/pncconf.glade:51870 -#: src/emc/usr_intf/pncconf/pncconf.glade:51890 -#: src/emc/usr_intf/pncconf/pncconf.glade:51910 -#: src/emc/usr_intf/pncconf/pncconf.glade:51930 -#: src/emc/usr_intf/pncconf/pncconf.glade:51950 -#: src/emc/usr_intf/pncconf/pncconf.glade:51970 -#: src/emc/usr_intf/pncconf/pncconf.glade:51990 -#: src/emc/usr_intf/pncconf/pncconf.glade:52010 -#: src/emc/usr_intf/pncconf/pncconf.glade:52030 -#: src/emc/usr_intf/pncconf/pncconf.glade:52050 -#: src/emc/usr_intf/pncconf/pncconf.glade:52070 -#: src/emc/usr_intf/pncconf/pncconf.glade:52379 -#: src/emc/usr_intf/pncconf/pncconf.glade:52399 -#: src/emc/usr_intf/pncconf/pncconf.glade:52419 -#: src/emc/usr_intf/pncconf/pncconf.glade:52439 -#: src/emc/usr_intf/pncconf/pncconf.glade:52459 -#: src/emc/usr_intf/pncconf/pncconf.glade:52479 -#: src/emc/usr_intf/pncconf/pncconf.glade:52499 -#: src/emc/usr_intf/pncconf/pncconf.glade:52519 -#: src/emc/usr_intf/pncconf/pncconf.glade:52539 -#: src/emc/usr_intf/pncconf/pncconf.glade:52559 -#: src/emc/usr_intf/pncconf/pncconf.glade:52579 -#: src/emc/usr_intf/pncconf/pncconf.glade:53809 -#: src/emc/usr_intf/pncconf/pncconf.glade:8859 -#: src/emc/usr_intf/pncconf/pncconf.glade:10723 -#: src/emc/usr_intf/pncconf/pncconf.glade:10743 -#: src/emc/usr_intf/pncconf/pncconf.glade:10763 -#: src/emc/usr_intf/pncconf/pncconf.glade:10783 -#: src/emc/usr_intf/pncconf/pncconf.glade:10803 -#: src/emc/usr_intf/pncconf/pncconf.glade:10823 -#: src/emc/usr_intf/pncconf/pncconf.glade:10843 -#: src/emc/usr_intf/pncconf/pncconf.glade:10863 -#: src/emc/usr_intf/pncconf/pncconf.glade:10883 -#: src/emc/usr_intf/pncconf/pncconf.glade:10903 -#: src/emc/usr_intf/pncconf/pncconf.glade:10923 -#: src/emc/usr_intf/pncconf/pncconf.glade:10943 -#: src/emc/usr_intf/pncconf/pncconf.glade:10963 -#: src/emc/usr_intf/pncconf/pncconf.glade:10983 -#: src/emc/usr_intf/pncconf/pncconf.glade:11003 -#: src/emc/usr_intf/pncconf/pncconf.glade:11023 -#: src/emc/usr_intf/pncconf/pncconf.glade:11043 -#: src/emc/usr_intf/pncconf/pncconf.glade:11063 -#: src/emc/usr_intf/pncconf/pncconf.glade:11083 -#: src/emc/usr_intf/pncconf/pncconf.glade:11103 -#: src/emc/usr_intf/pncconf/pncconf.glade:11123 -#: src/emc/usr_intf/pncconf/pncconf.glade:11143 -#: src/emc/usr_intf/pncconf/pncconf.glade:11163 -#: src/emc/usr_intf/pncconf/pncconf.glade:11457 -#: src/emc/usr_intf/pncconf/pncconf.glade:11477 -#: src/emc/usr_intf/pncconf/pncconf.glade:11497 -#: src/emc/usr_intf/pncconf/pncconf.glade:11517 -#: src/emc/usr_intf/pncconf/pncconf.glade:11537 -#: src/emc/usr_intf/pncconf/pncconf.glade:11557 -#: src/emc/usr_intf/pncconf/pncconf.glade:11577 -#: src/emc/usr_intf/pncconf/pncconf.glade:11597 -#: src/emc/usr_intf/pncconf/pncconf.glade:11617 -#: src/emc/usr_intf/pncconf/pncconf.glade:11637 -#: src/emc/usr_intf/pncconf/pncconf.glade:11657 -#: src/emc/usr_intf/pncconf/pncconf.glade:11677 -#: src/emc/usr_intf/pncconf/pncconf.glade:11697 -#: src/emc/usr_intf/pncconf/pncconf.glade:11717 -#: src/emc/usr_intf/pncconf/pncconf.glade:11737 -#: src/emc/usr_intf/pncconf/pncconf.glade:11757 -#: src/emc/usr_intf/pncconf/pncconf.glade:11777 -#: src/emc/usr_intf/pncconf/pncconf.glade:11797 -#: src/emc/usr_intf/pncconf/pncconf.glade:11817 -#: src/emc/usr_intf/pncconf/pncconf.glade:11837 -#: src/emc/usr_intf/pncconf/pncconf.glade:11857 -#: src/emc/usr_intf/pncconf/pncconf.glade:11877 -#: src/emc/usr_intf/pncconf/pncconf.glade:11897 -#: src/emc/usr_intf/pncconf/pncconf.glade:13760 -#: src/emc/usr_intf/pncconf/pncconf.glade:13986 -#: src/emc/usr_intf/pncconf/pncconf.glade:14006 -#: src/emc/usr_intf/pncconf/pncconf.glade:14026 -#: src/emc/usr_intf/pncconf/pncconf.glade:14046 -#: src/emc/usr_intf/pncconf/pncconf.glade:14066 -#: src/emc/usr_intf/pncconf/pncconf.glade:14086 -#: src/emc/usr_intf/pncconf/pncconf.glade:14106 -#: src/emc/usr_intf/pncconf/pncconf.glade:14126 -#: src/emc/usr_intf/pncconf/pncconf.glade:14146 -#: src/emc/usr_intf/pncconf/pncconf.glade:14166 -#: src/emc/usr_intf/pncconf/pncconf.glade:14186 -#: src/emc/usr_intf/pncconf/pncconf.glade:14206 -#: src/emc/usr_intf/pncconf/pncconf.glade:14226 -#: src/emc/usr_intf/pncconf/pncconf.glade:14246 -#: src/emc/usr_intf/pncconf/pncconf.glade:14266 -#: src/emc/usr_intf/pncconf/pncconf.glade:14286 -#: src/emc/usr_intf/pncconf/pncconf.glade:14306 -#: src/emc/usr_intf/pncconf/pncconf.glade:14326 -#: src/emc/usr_intf/pncconf/pncconf.glade:14346 -#: src/emc/usr_intf/pncconf/pncconf.glade:14366 -#: src/emc/usr_intf/pncconf/pncconf.glade:14386 -#: src/emc/usr_intf/pncconf/pncconf.glade:14406 -#: src/emc/usr_intf/pncconf/pncconf.glade:16662 -#: src/emc/usr_intf/pncconf/pncconf.glade:16682 -#: src/emc/usr_intf/pncconf/pncconf.glade:16702 -#: src/emc/usr_intf/pncconf/pncconf.glade:16722 -#: src/emc/usr_intf/pncconf/pncconf.glade:16742 -#: src/emc/usr_intf/pncconf/pncconf.glade:16762 -#: src/emc/usr_intf/pncconf/pncconf.glade:16782 -#: src/emc/usr_intf/pncconf/pncconf.glade:16802 -#: src/emc/usr_intf/pncconf/pncconf.glade:16822 -#: src/emc/usr_intf/pncconf/pncconf.glade:16842 -#: src/emc/usr_intf/pncconf/pncconf.glade:16862 -#: src/emc/usr_intf/pncconf/pncconf.glade:16882 -#: src/emc/usr_intf/pncconf/pncconf.glade:16902 -#: src/emc/usr_intf/pncconf/pncconf.glade:16922 -#: src/emc/usr_intf/pncconf/pncconf.glade:16942 -#: src/emc/usr_intf/pncconf/pncconf.glade:16962 -#: src/emc/usr_intf/pncconf/pncconf.glade:16982 -#: src/emc/usr_intf/pncconf/pncconf.glade:17002 -#: src/emc/usr_intf/pncconf/pncconf.glade:17022 -#: src/emc/usr_intf/pncconf/pncconf.glade:17042 -#: src/emc/usr_intf/pncconf/pncconf.glade:17062 -#: src/emc/usr_intf/pncconf/pncconf.glade:17082 -#: src/emc/usr_intf/pncconf/pncconf.glade:17102 -#: src/emc/usr_intf/pncconf/pncconf.glade:18966 -#: src/emc/usr_intf/pncconf/pncconf.glade:26387 -#: src/emc/usr_intf/pncconf/pncconf.glade:28303 -#: src/emc/usr_intf/pncconf/pncconf.glade:28323 -#: src/emc/usr_intf/pncconf/pncconf.glade:28343 -#: src/emc/usr_intf/pncconf/pncconf.glade:28363 -#: src/emc/usr_intf/pncconf/pncconf.glade:28383 -#: src/emc/usr_intf/pncconf/pncconf.glade:28403 -#: src/emc/usr_intf/pncconf/pncconf.glade:28423 -#: src/emc/usr_intf/pncconf/pncconf.glade:28443 -#: src/emc/usr_intf/pncconf/pncconf.glade:28463 -#: src/emc/usr_intf/pncconf/pncconf.glade:28483 -#: src/emc/usr_intf/pncconf/pncconf.glade:28503 -#: src/emc/usr_intf/pncconf/pncconf.glade:28523 -#: src/emc/usr_intf/pncconf/pncconf.glade:28543 -#: src/emc/usr_intf/pncconf/pncconf.glade:28563 -#: src/emc/usr_intf/pncconf/pncconf.glade:28583 -#: src/emc/usr_intf/pncconf/pncconf.glade:28603 -#: src/emc/usr_intf/pncconf/pncconf.glade:28623 -#: src/emc/usr_intf/pncconf/pncconf.glade:28643 -#: src/emc/usr_intf/pncconf/pncconf.glade:28663 -#: src/emc/usr_intf/pncconf/pncconf.glade:28683 -#: src/emc/usr_intf/pncconf/pncconf.glade:28703 -#: src/emc/usr_intf/pncconf/pncconf.glade:28723 -#: src/emc/usr_intf/pncconf/pncconf.glade:28743 -#: src/emc/usr_intf/pncconf/pncconf.glade:28954 -#: src/emc/usr_intf/pncconf/pncconf.glade:28974 -#: src/emc/usr_intf/pncconf/pncconf.glade:28994 -#: src/emc/usr_intf/pncconf/pncconf.glade:29014 -#: src/emc/usr_intf/pncconf/pncconf.glade:29034 -#: src/emc/usr_intf/pncconf/pncconf.glade:29054 -#: src/emc/usr_intf/pncconf/pncconf.glade:29074 -#: src/emc/usr_intf/pncconf/pncconf.glade:29094 -#: src/emc/usr_intf/pncconf/pncconf.glade:29114 -#: src/emc/usr_intf/pncconf/pncconf.glade:29134 -#: src/emc/usr_intf/pncconf/pncconf.glade:29154 -#: src/emc/usr_intf/pncconf/pncconf.glade:29174 -#: src/emc/usr_intf/pncconf/pncconf.glade:29194 -#: src/emc/usr_intf/pncconf/pncconf.glade:29214 -#: src/emc/usr_intf/pncconf/pncconf.glade:29234 -#: src/emc/usr_intf/pncconf/pncconf.glade:29254 -#: src/emc/usr_intf/pncconf/pncconf.glade:29274 -#: src/emc/usr_intf/pncconf/pncconf.glade:29294 -#: src/emc/usr_intf/pncconf/pncconf.glade:29314 -#: src/emc/usr_intf/pncconf/pncconf.glade:29334 -#: src/emc/usr_intf/pncconf/pncconf.glade:29354 -#: src/emc/usr_intf/pncconf/pncconf.glade:29374 -#: src/emc/usr_intf/pncconf/pncconf.glade:31655 -#: src/emc/usr_intf/pncconf/pncconf.glade:32873 -#: src/emc/usr_intf/pncconf/pncconf.glade:32893 -#: src/emc/usr_intf/pncconf/pncconf.glade:32913 -#: src/emc/usr_intf/pncconf/pncconf.glade:32933 -#: src/emc/usr_intf/pncconf/pncconf.glade:32953 -#: src/emc/usr_intf/pncconf/pncconf.glade:32973 -#: src/emc/usr_intf/pncconf/pncconf.glade:32993 -#: src/emc/usr_intf/pncconf/pncconf.glade:33013 -#: src/emc/usr_intf/pncconf/pncconf.glade:33033 -#: src/emc/usr_intf/pncconf/pncconf.glade:33053 -#: src/emc/usr_intf/pncconf/pncconf.glade:33073 -#: src/emc/usr_intf/pncconf/pncconf.glade:33312 -#: src/emc/usr_intf/pncconf/pncconf.glade:33332 -#: src/emc/usr_intf/pncconf/pncconf.glade:33352 -#: src/emc/usr_intf/pncconf/pncconf.glade:33372 -#: src/emc/usr_intf/pncconf/pncconf.glade:33392 -#: src/emc/usr_intf/pncconf/pncconf.glade:33412 -#: src/emc/usr_intf/pncconf/pncconf.glade:33432 -#: src/emc/usr_intf/pncconf/pncconf.glade:33452 -#: src/emc/usr_intf/pncconf/pncconf.glade:33472 -#: src/emc/usr_intf/pncconf/pncconf.glade:33492 -#: src/emc/usr_intf/pncconf/pncconf.glade:33512 -#: src/emc/usr_intf/pncconf/pncconf.glade:33532 -#: src/emc/usr_intf/pncconf/pncconf.glade:33552 -#: src/emc/usr_intf/pncconf/pncconf.glade:33572 -#: src/emc/usr_intf/pncconf/pncconf.glade:33592 -#: src/emc/usr_intf/pncconf/pncconf.glade:33612 -#: src/emc/usr_intf/pncconf/pncconf.glade:33632 -#: src/emc/usr_intf/pncconf/pncconf.glade:33652 -#: src/emc/usr_intf/pncconf/pncconf.glade:33672 -#: src/emc/usr_intf/pncconf/pncconf.glade:33692 -#: src/emc/usr_intf/pncconf/pncconf.glade:33712 -#: src/emc/usr_intf/pncconf/pncconf.glade:33732 -#: src/emc/usr_intf/pncconf/pncconf.glade:35871 -#: src/emc/usr_intf/pncconf/pncconf.glade:37800 -#: src/emc/usr_intf/pncconf/pncconf.glade:37820 -#: src/emc/usr_intf/pncconf/pncconf.glade:37840 -#: src/emc/usr_intf/pncconf/pncconf.glade:37860 -#: src/emc/usr_intf/pncconf/pncconf.glade:37880 -#: src/emc/usr_intf/pncconf/pncconf.glade:37900 -#: src/emc/usr_intf/pncconf/pncconf.glade:37920 -#: src/emc/usr_intf/pncconf/pncconf.glade:37940 -#: src/emc/usr_intf/pncconf/pncconf.glade:37960 -#: src/emc/usr_intf/pncconf/pncconf.glade:37980 -#: src/emc/usr_intf/pncconf/pncconf.glade:38000 -#: src/emc/usr_intf/pncconf/pncconf.glade:38020 -#: src/emc/usr_intf/pncconf/pncconf.glade:38040 -#: src/emc/usr_intf/pncconf/pncconf.glade:38060 -#: src/emc/usr_intf/pncconf/pncconf.glade:38080 -#: src/emc/usr_intf/pncconf/pncconf.glade:38100 -#: src/emc/usr_intf/pncconf/pncconf.glade:38120 -#: src/emc/usr_intf/pncconf/pncconf.glade:38140 -#: src/emc/usr_intf/pncconf/pncconf.glade:38160 -#: src/emc/usr_intf/pncconf/pncconf.glade:38180 -#: src/emc/usr_intf/pncconf/pncconf.glade:38200 -#: src/emc/usr_intf/pncconf/pncconf.glade:38220 -#: src/emc/usr_intf/pncconf/pncconf.glade:38240 -#: src/emc/usr_intf/pncconf/pncconf.glade:38569 -#: src/emc/usr_intf/pncconf/pncconf.glade:38589 -#: src/emc/usr_intf/pncconf/pncconf.glade:38609 -#: src/emc/usr_intf/pncconf/pncconf.glade:38629 -#: src/emc/usr_intf/pncconf/pncconf.glade:38649 -#: src/emc/usr_intf/pncconf/pncconf.glade:38669 -#: src/emc/usr_intf/pncconf/pncconf.glade:38689 -#: src/emc/usr_intf/pncconf/pncconf.glade:38709 -#: src/emc/usr_intf/pncconf/pncconf.glade:38729 -#: src/emc/usr_intf/pncconf/pncconf.glade:38749 -#: src/emc/usr_intf/pncconf/pncconf.glade:40231 -#: src/emc/usr_intf/pncconf/pncconf.glade:42147 -#: src/emc/usr_intf/pncconf/pncconf.glade:42167 -#: src/emc/usr_intf/pncconf/pncconf.glade:42187 -#: src/emc/usr_intf/pncconf/pncconf.glade:42207 -#: src/emc/usr_intf/pncconf/pncconf.glade:42227 -#: src/emc/usr_intf/pncconf/pncconf.glade:42247 -#: src/emc/usr_intf/pncconf/pncconf.glade:42267 -#: src/emc/usr_intf/pncconf/pncconf.glade:42287 -#: src/emc/usr_intf/pncconf/pncconf.glade:42307 -#: src/emc/usr_intf/pncconf/pncconf.glade:42327 -#: src/emc/usr_intf/pncconf/pncconf.glade:42347 -#: src/emc/usr_intf/pncconf/pncconf.glade:42367 -#: src/emc/usr_intf/pncconf/pncconf.glade:42387 -#: src/emc/usr_intf/pncconf/pncconf.glade:42407 -#: src/emc/usr_intf/pncconf/pncconf.glade:42427 -#: src/emc/usr_intf/pncconf/pncconf.glade:42447 -#: src/emc/usr_intf/pncconf/pncconf.glade:42467 -#: src/emc/usr_intf/pncconf/pncconf.glade:42487 -#: src/emc/usr_intf/pncconf/pncconf.glade:42507 -#: src/emc/usr_intf/pncconf/pncconf.glade:42527 -#: src/emc/usr_intf/pncconf/pncconf.glade:42547 -#: src/emc/usr_intf/pncconf/pncconf.glade:42567 -#: src/emc/usr_intf/pncconf/pncconf.glade:42587 -#: src/emc/usr_intf/pncconf/pncconf.glade:42798 -#: src/emc/usr_intf/pncconf/pncconf.glade:42818 -#: src/emc/usr_intf/pncconf/pncconf.glade:42838 -#: src/emc/usr_intf/pncconf/pncconf.glade:42858 -#: src/emc/usr_intf/pncconf/pncconf.glade:42878 -#: src/emc/usr_intf/pncconf/pncconf.glade:42898 -#: src/emc/usr_intf/pncconf/pncconf.glade:42918 -#: src/emc/usr_intf/pncconf/pncconf.glade:42938 -#: src/emc/usr_intf/pncconf/pncconf.glade:42958 -#: src/emc/usr_intf/pncconf/pncconf.glade:42978 -#: src/emc/usr_intf/pncconf/pncconf.glade:42998 -#: src/emc/usr_intf/pncconf/pncconf.glade:43018 -#: src/emc/usr_intf/pncconf/pncconf.glade:43038 -#: src/emc/usr_intf/pncconf/pncconf.glade:43058 -#: src/emc/usr_intf/pncconf/pncconf.glade:43078 -#: src/emc/usr_intf/pncconf/pncconf.glade:43098 -#: src/emc/usr_intf/pncconf/pncconf.glade:43118 -#: src/emc/usr_intf/pncconf/pncconf.glade:43138 -#: src/emc/usr_intf/pncconf/pncconf.glade:43158 -#: src/emc/usr_intf/pncconf/pncconf.glade:43178 -#: src/emc/usr_intf/pncconf/pncconf.glade:43198 -#: src/emc/usr_intf/pncconf/pncconf.glade:43218 -#: src/emc/usr_intf/pncconf/pncconf.glade:45488 -#: src/emc/usr_intf/pncconf/pncconf.glade:46718 -#: src/emc/usr_intf/pncconf/pncconf.glade:46738 -#: src/emc/usr_intf/pncconf/pncconf.glade:46758 -#: src/emc/usr_intf/pncconf/pncconf.glade:46778 -#: src/emc/usr_intf/pncconf/pncconf.glade:46798 -#: src/emc/usr_intf/pncconf/pncconf.glade:46818 -#: src/emc/usr_intf/pncconf/pncconf.glade:46838 -#: src/emc/usr_intf/pncconf/pncconf.glade:46858 -#: src/emc/usr_intf/pncconf/pncconf.glade:46878 -#: src/emc/usr_intf/pncconf/pncconf.glade:46898 -#: src/emc/usr_intf/pncconf/pncconf.glade:46918 -#: src/emc/usr_intf/pncconf/pncconf.glade:47154 -#: src/emc/usr_intf/pncconf/pncconf.glade:49070 -#: src/emc/usr_intf/pncconf/pncconf.glade:49090 -#: src/emc/usr_intf/pncconf/pncconf.glade:49110 -#: src/emc/usr_intf/pncconf/pncconf.glade:49130 -#: src/emc/usr_intf/pncconf/pncconf.glade:49150 -#: src/emc/usr_intf/pncconf/pncconf.glade:49170 -#: src/emc/usr_intf/pncconf/pncconf.glade:49190 -#: src/emc/usr_intf/pncconf/pncconf.glade:49210 -#: src/emc/usr_intf/pncconf/pncconf.glade:49230 -#: src/emc/usr_intf/pncconf/pncconf.glade:49250 -#: src/emc/usr_intf/pncconf/pncconf.glade:49270 -#: src/emc/usr_intf/pncconf/pncconf.glade:49290 -#: src/emc/usr_intf/pncconf/pncconf.glade:49310 -#: src/emc/usr_intf/pncconf/pncconf.glade:49330 -#: src/emc/usr_intf/pncconf/pncconf.glade:49350 -#: src/emc/usr_intf/pncconf/pncconf.glade:49370 -#: src/emc/usr_intf/pncconf/pncconf.glade:49390 -#: src/emc/usr_intf/pncconf/pncconf.glade:49410 -#: src/emc/usr_intf/pncconf/pncconf.glade:49430 -#: src/emc/usr_intf/pncconf/pncconf.glade:49450 -#: src/emc/usr_intf/pncconf/pncconf.glade:49470 -#: src/emc/usr_intf/pncconf/pncconf.glade:49490 -#: src/emc/usr_intf/pncconf/pncconf.glade:49510 -#: src/emc/usr_intf/pncconf/pncconf.glade:49721 -#: src/emc/usr_intf/pncconf/pncconf.glade:49741 -#: src/emc/usr_intf/pncconf/pncconf.glade:49761 -#: src/emc/usr_intf/pncconf/pncconf.glade:49781 -#: src/emc/usr_intf/pncconf/pncconf.glade:49801 -#: src/emc/usr_intf/pncconf/pncconf.glade:49821 -#: src/emc/usr_intf/pncconf/pncconf.glade:49841 -#: src/emc/usr_intf/pncconf/pncconf.glade:49861 -#: src/emc/usr_intf/pncconf/pncconf.glade:49881 -#: src/emc/usr_intf/pncconf/pncconf.glade:49901 -#: src/emc/usr_intf/pncconf/pncconf.glade:49921 -#: src/emc/usr_intf/pncconf/pncconf.glade:49941 -#: src/emc/usr_intf/pncconf/pncconf.glade:49961 -#: src/emc/usr_intf/pncconf/pncconf.glade:49981 -#: src/emc/usr_intf/pncconf/pncconf.glade:50001 -#: src/emc/usr_intf/pncconf/pncconf.glade:50021 -#: src/emc/usr_intf/pncconf/pncconf.glade:50041 -#: src/emc/usr_intf/pncconf/pncconf.glade:50061 -#: src/emc/usr_intf/pncconf/pncconf.glade:50081 -#: src/emc/usr_intf/pncconf/pncconf.glade:50101 -#: src/emc/usr_intf/pncconf/pncconf.glade:50121 -#: src/emc/usr_intf/pncconf/pncconf.glade:50141 -#: src/emc/usr_intf/pncconf/pncconf.glade:52411 -#: src/emc/usr_intf/pncconf/pncconf.glade:53641 -#: src/emc/usr_intf/pncconf/pncconf.glade:53661 -#: src/emc/usr_intf/pncconf/pncconf.glade:53681 -#: src/emc/usr_intf/pncconf/pncconf.glade:53701 -#: src/emc/usr_intf/pncconf/pncconf.glade:53721 -#: src/emc/usr_intf/pncconf/pncconf.glade:53741 -#: src/emc/usr_intf/pncconf/pncconf.glade:53761 -#: src/emc/usr_intf/pncconf/pncconf.glade:53781 -#: src/emc/usr_intf/pncconf/pncconf.glade:53801 -#: src/emc/usr_intf/pncconf/pncconf.glade:53821 -#: src/emc/usr_intf/pncconf/pncconf.glade:53841 -#: src/emc/usr_intf/pncconf/pncconf.glade:54077 -#: src/emc/usr_intf/pncconf/pncconf.glade:55993 -#: src/emc/usr_intf/pncconf/pncconf.glade:56013 -#: src/emc/usr_intf/pncconf/pncconf.glade:56033 -#: src/emc/usr_intf/pncconf/pncconf.glade:56053 -#: src/emc/usr_intf/pncconf/pncconf.glade:56073 -#: src/emc/usr_intf/pncconf/pncconf.glade:56093 -#: src/emc/usr_intf/pncconf/pncconf.glade:56113 -#: src/emc/usr_intf/pncconf/pncconf.glade:56133 -#: src/emc/usr_intf/pncconf/pncconf.glade:56153 -#: src/emc/usr_intf/pncconf/pncconf.glade:56173 -#: src/emc/usr_intf/pncconf/pncconf.glade:56193 -#: src/emc/usr_intf/pncconf/pncconf.glade:56213 -#: src/emc/usr_intf/pncconf/pncconf.glade:56233 -#: src/emc/usr_intf/pncconf/pncconf.glade:56253 -#: src/emc/usr_intf/pncconf/pncconf.glade:56273 -#: src/emc/usr_intf/pncconf/pncconf.glade:56293 -#: src/emc/usr_intf/pncconf/pncconf.glade:56313 -#: src/emc/usr_intf/pncconf/pncconf.glade:56333 -#: src/emc/usr_intf/pncconf/pncconf.glade:56353 -#: src/emc/usr_intf/pncconf/pncconf.glade:56373 -#: src/emc/usr_intf/pncconf/pncconf.glade:56393 -#: src/emc/usr_intf/pncconf/pncconf.glade:56413 -#: src/emc/usr_intf/pncconf/pncconf.glade:56433 -#: src/emc/usr_intf/pncconf/pncconf.glade:56624 -#: src/emc/usr_intf/pncconf/pncconf.glade:56644 -#: src/emc/usr_intf/pncconf/pncconf.glade:56664 -#: src/emc/usr_intf/pncconf/pncconf.glade:56684 -#: src/emc/usr_intf/pncconf/pncconf.glade:56704 -#: src/emc/usr_intf/pncconf/pncconf.glade:56724 -#: src/emc/usr_intf/pncconf/pncconf.glade:56744 -#: src/emc/usr_intf/pncconf/pncconf.glade:56764 -#: src/emc/usr_intf/pncconf/pncconf.glade:56784 -#: src/emc/usr_intf/pncconf/pncconf.glade:56804 -#: src/emc/usr_intf/pncconf/pncconf.glade:56824 -#: src/emc/usr_intf/pncconf/pncconf.glade:56844 -#: src/emc/usr_intf/pncconf/pncconf.glade:56864 -#: src/emc/usr_intf/pncconf/pncconf.glade:56884 -#: src/emc/usr_intf/pncconf/pncconf.glade:56904 -#: src/emc/usr_intf/pncconf/pncconf.glade:56924 -#: src/emc/usr_intf/pncconf/pncconf.glade:56944 -#: src/emc/usr_intf/pncconf/pncconf.glade:56964 -#: src/emc/usr_intf/pncconf/pncconf.glade:56984 -#: src/emc/usr_intf/pncconf/pncconf.glade:57004 -#: src/emc/usr_intf/pncconf/pncconf.glade:57024 -#: src/emc/usr_intf/pncconf/pncconf.glade:57044 -#: src/emc/usr_intf/pncconf/pncconf.glade:57064 -#: src/emc/usr_intf/pncconf/pncconf.glade:58993 -#: src/emc/usr_intf/pncconf/pncconf.glade:59334 -#: src/emc/usr_intf/pncconf/pncconf.glade:60564 -#: src/emc/usr_intf/pncconf/pncconf.glade:60584 -#: src/emc/usr_intf/pncconf/pncconf.glade:60604 -#: src/emc/usr_intf/pncconf/pncconf.glade:60624 -#: src/emc/usr_intf/pncconf/pncconf.glade:60644 -#: src/emc/usr_intf/pncconf/pncconf.glade:60664 -#: src/emc/usr_intf/pncconf/pncconf.glade:60684 -#: src/emc/usr_intf/pncconf/pncconf.glade:60704 -#: src/emc/usr_intf/pncconf/pncconf.glade:60724 -#: src/emc/usr_intf/pncconf/pncconf.glade:60744 -#: src/emc/usr_intf/pncconf/pncconf.glade:60764 -msgid "" -"GPIO Input\n" -"GPIO Output\n" -"GPIO O Drain\n" -"Encoder\n" -"PWM\n" -"StepGen\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:8482 +msgid "Num of channels: " +msgstr "Ilość kanałow: " -#: src/emc/usr_intf/pncconf/pncconf.glade:9198 -#: src/emc/usr_intf/pncconf/pncconf.glade:13188 -#: src/emc/usr_intf/pncconf/pncconf.glade:15884 -#: src/emc/usr_intf/pncconf/pncconf.glade:18394 -#: src/emc/usr_intf/pncconf/pncconf.glade:20397 -#: src/emc/usr_intf/pncconf/pncconf.glade:21325 -#: src/emc/usr_intf/pncconf/pncconf.glade:23121 -#: src/emc/usr_intf/pncconf/pncconf.glade:24917 -#: src/emc/usr_intf/pncconf/pncconf.glade:10695 -#: src/emc/usr_intf/pncconf/pncconf.glade:11932 -#: src/emc/usr_intf/pncconf/pncconf.glade:14441 -#: src/emc/usr_intf/pncconf/pncconf.glade:17138 -#: src/emc/usr_intf/pncconf/pncconf.glade:19545 -#: src/emc/usr_intf/pncconf/pncconf.glade:22209 -#: src/emc/usr_intf/pncconf/pncconf.glade:24005 -#: src/emc/usr_intf/pncconf/pncconf.glade:25801 -msgid "Launch test panel" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:8494 +msgid "Num of resolvers:" +msgstr "Ilość resolverów:" -#: src/emc/usr_intf/pncconf/pncconf.glade:9213 -#: src/emc/usr_intf/pncconf/pncconf.glade:9225 -#: src/emc/usr_intf/pncconf/pncconf.glade:13162 -#: src/emc/usr_intf/pncconf/pncconf.glade:13174 -#: src/emc/usr_intf/pncconf/pncconf.glade:15858 -#: src/emc/usr_intf/pncconf/pncconf.glade:15870 -#: src/emc/usr_intf/pncconf/pncconf.glade:18367 -#: src/emc/usr_intf/pncconf/pncconf.glade:18379 -#: src/emc/usr_intf/pncconf/pncconf.glade:20370 -#: src/emc/usr_intf/pncconf/pncconf.glade:20382 -#: src/emc/usr_intf/pncconf/pncconf.glade:21339 -#: src/emc/usr_intf/pncconf/pncconf.glade:21351 -#: src/emc/usr_intf/pncconf/pncconf.glade:23135 -#: src/emc/usr_intf/pncconf/pncconf.glade:23147 -#: src/emc/usr_intf/pncconf/pncconf.glade:24931 -#: src/emc/usr_intf/pncconf/pncconf.glade:24943 -#: src/emc/usr_intf/pncconf/pncconf.glade:26815 -#: src/emc/usr_intf/pncconf/pncconf.glade:26827 -#: src/emc/usr_intf/pncconf/pncconf.glade:30826 -#: src/emc/usr_intf/pncconf/pncconf.glade:30838 -#: src/emc/usr_intf/pncconf/pncconf.glade:31831 -#: src/emc/usr_intf/pncconf/pncconf.glade:35184 -#: src/emc/usr_intf/pncconf/pncconf.glade:35196 -#: src/emc/usr_intf/pncconf/pncconf.glade:36312 -#: src/emc/usr_intf/pncconf/pncconf.glade:36324 -#: src/emc/usr_intf/pncconf/pncconf.glade:39755 -#: src/emc/usr_intf/pncconf/pncconf.glade:39767 -#: src/emc/usr_intf/pncconf/pncconf.glade:40659 -#: src/emc/usr_intf/pncconf/pncconf.glade:40671 -#: src/emc/usr_intf/pncconf/pncconf.glade:44670 -#: src/emc/usr_intf/pncconf/pncconf.glade:44682 -#: src/emc/usr_intf/pncconf/pncconf.glade:45676 -#: src/emc/usr_intf/pncconf/pncconf.glade:45688 -#: src/emc/usr_intf/pncconf/pncconf.glade:47582 -#: src/emc/usr_intf/pncconf/pncconf.glade:47594 -#: src/emc/usr_intf/pncconf/pncconf.glade:51593 -#: src/emc/usr_intf/pncconf/pncconf.glade:51605 -#: src/emc/usr_intf/pncconf/pncconf.glade:52599 -#: src/emc/usr_intf/pncconf/pncconf.glade:52611 -#: src/emc/usr_intf/pncconf/pncconf.glade:10669 -#: src/emc/usr_intf/pncconf/pncconf.glade:10681 -#: src/emc/usr_intf/pncconf/pncconf.glade:11947 -#: src/emc/usr_intf/pncconf/pncconf.glade:11959 -#: src/emc/usr_intf/pncconf/pncconf.glade:14456 -#: src/emc/usr_intf/pncconf/pncconf.glade:14468 -#: src/emc/usr_intf/pncconf/pncconf.glade:17153 -#: src/emc/usr_intf/pncconf/pncconf.glade:17165 -#: src/emc/usr_intf/pncconf/pncconf.glade:19559 -#: src/emc/usr_intf/pncconf/pncconf.glade:19571 -#: src/emc/usr_intf/pncconf/pncconf.glade:22182 -#: src/emc/usr_intf/pncconf/pncconf.glade:22194 -#: src/emc/usr_intf/pncconf/pncconf.glade:23978 -#: src/emc/usr_intf/pncconf/pncconf.glade:23990 -#: src/emc/usr_intf/pncconf/pncconf.glade:25774 -#: src/emc/usr_intf/pncconf/pncconf.glade:25786 -#: src/emc/usr_intf/pncconf/pncconf.glade:28279 -#: src/emc/usr_intf/pncconf/pncconf.glade:28291 -#: src/emc/usr_intf/pncconf/pncconf.glade:29407 -#: src/emc/usr_intf/pncconf/pncconf.glade:29419 -#: src/emc/usr_intf/pncconf/pncconf.glade:32861 -#: src/emc/usr_intf/pncconf/pncconf.glade:33752 -#: src/emc/usr_intf/pncconf/pncconf.glade:33764 -#: src/emc/usr_intf/pncconf/pncconf.glade:37763 -#: src/emc/usr_intf/pncconf/pncconf.glade:37775 -#: src/emc/usr_intf/pncconf/pncconf.glade:38769 -#: src/emc/usr_intf/pncconf/pncconf.glade:38781 -#: src/emc/usr_intf/pncconf/pncconf.glade:42123 -#: src/emc/usr_intf/pncconf/pncconf.glade:42135 -#: src/emc/usr_intf/pncconf/pncconf.glade:43251 -#: src/emc/usr_intf/pncconf/pncconf.glade:43263 -#: src/emc/usr_intf/pncconf/pncconf.glade:46694 -#: src/emc/usr_intf/pncconf/pncconf.glade:46706 -#: src/emc/usr_intf/pncconf/pncconf.glade:49046 -#: src/emc/usr_intf/pncconf/pncconf.glade:49058 -#: src/emc/usr_intf/pncconf/pncconf.glade:50174 -#: src/emc/usr_intf/pncconf/pncconf.glade:50186 -#: src/emc/usr_intf/pncconf/pncconf.glade:53617 -#: src/emc/usr_intf/pncconf/pncconf.glade:53629 -#: src/emc/usr_intf/pncconf/pncconf.glade:55969 -#: src/emc/usr_intf/pncconf/pncconf.glade:55981 -#: src/emc/usr_intf/pncconf/pncconf.glade:57097 -#: src/emc/usr_intf/pncconf/pncconf.glade:57109 -#: src/emc/usr_intf/pncconf/pncconf.glade:60540 -#: src/emc/usr_intf/pncconf/pncconf.glade:60552 -msgid "function" +#: src/emc/usr_intf/pncconf/pncconf.glade:8528 +msgid "" +"Configuration\n" +" Page" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9305 -#: src/emc/usr_intf/pncconf/pncconf.glade:9357 -#: src/emc/usr_intf/pncconf/pncconf.glade:9409 -#: src/emc/usr_intf/pncconf/pncconf.glade:9461 -#: src/emc/usr_intf/pncconf/pncconf.glade:10301 -#: src/emc/usr_intf/pncconf/pncconf.glade:10353 -#: src/emc/usr_intf/pncconf/pncconf.glade:10405 -#: src/emc/usr_intf/pncconf/pncconf.glade:10457 -#: src/emc/usr_intf/pncconf/pncconf.glade:10509 -#: src/emc/usr_intf/pncconf/pncconf.glade:10561 -#: src/emc/usr_intf/pncconf/pncconf.glade:10613 -#: src/emc/usr_intf/pncconf/pncconf.glade:10665 -#: src/emc/usr_intf/pncconf/pncconf.glade:10717 -#: src/emc/usr_intf/pncconf/pncconf.glade:10769 -#: src/emc/usr_intf/pncconf/pncconf.glade:11089 -#: src/emc/usr_intf/pncconf/pncconf.glade:11141 -#: src/emc/usr_intf/pncconf/pncconf.glade:11579 -#: src/emc/usr_intf/pncconf/pncconf.glade:11631 -#: src/emc/usr_intf/pncconf/pncconf.glade:11683 -#: src/emc/usr_intf/pncconf/pncconf.glade:11735 -#: src/emc/usr_intf/pncconf/pncconf.glade:11787 -#: src/emc/usr_intf/pncconf/pncconf.glade:11839 -#: src/emc/usr_intf/pncconf/pncconf.glade:11891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11943 -#: src/emc/usr_intf/pncconf/pncconf.glade:11995 +#: src/emc/usr_intf/pncconf/pncconf.glade:8721 +#: src/emc/usr_intf/pncconf/pncconf.glade:8773 +#: src/emc/usr_intf/pncconf/pncconf.glade:9093 +#: src/emc/usr_intf/pncconf/pncconf.glade:9145 +#: src/emc/usr_intf/pncconf/pncconf.glade:9197 +#: src/emc/usr_intf/pncconf/pncconf.glade:9249 +#: src/emc/usr_intf/pncconf/pncconf.glade:9301 +#: src/emc/usr_intf/pncconf/pncconf.glade:9353 +#: src/emc/usr_intf/pncconf/pncconf.glade:9405 +#: src/emc/usr_intf/pncconf/pncconf.glade:9457 +#: src/emc/usr_intf/pncconf/pncconf.glade:9509 +#: src/emc/usr_intf/pncconf/pncconf.glade:9561 +#: src/emc/usr_intf/pncconf/pncconf.glade:10400 +#: src/emc/usr_intf/pncconf/pncconf.glade:10453 +#: src/emc/usr_intf/pncconf/pncconf.glade:10505 +#: src/emc/usr_intf/pncconf/pncconf.glade:10557 +#: src/emc/usr_intf/pncconf/pncconf.glade:11335 +#: src/emc/usr_intf/pncconf/pncconf.glade:11387 #: src/emc/usr_intf/pncconf/pncconf.glade:12047 -#: src/emc/usr_intf/pncconf/pncconf.glade:12886 -#: src/emc/usr_intf/pncconf/pncconf.glade:12938 -#: src/emc/usr_intf/pncconf/pncconf.glade:12990 +#: src/emc/usr_intf/pncconf/pncconf.glade:12099 +#: src/emc/usr_intf/pncconf/pncconf.glade:12151 +#: src/emc/usr_intf/pncconf/pncconf.glade:12203 #: src/emc/usr_intf/pncconf/pncconf.glade:13042 -#: src/emc/usr_intf/pncconf/pncconf.glade:13702 -#: src/emc/usr_intf/pncconf/pncconf.glade:13754 -#: src/emc/usr_intf/pncconf/pncconf.glade:14183 -#: src/emc/usr_intf/pncconf/pncconf.glade:14235 -#: src/emc/usr_intf/pncconf/pncconf.glade:14287 -#: src/emc/usr_intf/pncconf/pncconf.glade:14339 -#: src/emc/usr_intf/pncconf/pncconf.glade:14391 -#: src/emc/usr_intf/pncconf/pncconf.glade:14443 -#: src/emc/usr_intf/pncconf/pncconf.glade:14495 -#: src/emc/usr_intf/pncconf/pncconf.glade:14547 -#: src/emc/usr_intf/pncconf/pncconf.glade:14599 -#: src/emc/usr_intf/pncconf/pncconf.glade:14651 -#: src/emc/usr_intf/pncconf/pncconf.glade:14703 -#: src/emc/usr_intf/pncconf/pncconf.glade:14755 -#: src/emc/usr_intf/pncconf/pncconf.glade:15582 -#: src/emc/usr_intf/pncconf/pncconf.glade:15634 -#: src/emc/usr_intf/pncconf/pncconf.glade:15686 -#: src/emc/usr_intf/pncconf/pncconf.glade:15738 -#: src/emc/usr_intf/pncconf/pncconf.glade:16784 -#: src/emc/usr_intf/pncconf/pncconf.glade:16836 -#: src/emc/usr_intf/pncconf/pncconf.glade:16888 -#: src/emc/usr_intf/pncconf/pncconf.glade:16940 -#: src/emc/usr_intf/pncconf/pncconf.glade:16992 -#: src/emc/usr_intf/pncconf/pncconf.glade:17044 -#: src/emc/usr_intf/pncconf/pncconf.glade:17096 -#: src/emc/usr_intf/pncconf/pncconf.glade:17148 -#: src/emc/usr_intf/pncconf/pncconf.glade:17200 -#: src/emc/usr_intf/pncconf/pncconf.glade:17252 -#: src/emc/usr_intf/pncconf/pncconf.glade:17304 -#: src/emc/usr_intf/pncconf/pncconf.glade:18143 -#: src/emc/usr_intf/pncconf/pncconf.glade:18195 -#: src/emc/usr_intf/pncconf/pncconf.glade:18247 -#: src/emc/usr_intf/pncconf/pncconf.glade:18908 -#: src/emc/usr_intf/pncconf/pncconf.glade:18960 -#: src/emc/usr_intf/pncconf/pncconf.glade:26907 -#: src/emc/usr_intf/pncconf/pncconf.glade:26959 -#: src/emc/usr_intf/pncconf/pncconf.glade:27011 -#: src/emc/usr_intf/pncconf/pncconf.glade:27063 -#: src/emc/usr_intf/pncconf/pncconf.glade:27890 -#: src/emc/usr_intf/pncconf/pncconf.glade:27942 -#: src/emc/usr_intf/pncconf/pncconf.glade:27994 -#: src/emc/usr_intf/pncconf/pncconf.glade:28046 -#: src/emc/usr_intf/pncconf/pncconf.glade:28098 -#: src/emc/usr_intf/pncconf/pncconf.glade:28150 -#: src/emc/usr_intf/pncconf/pncconf.glade:28202 -#: src/emc/usr_intf/pncconf/pncconf.glade:28254 -#: src/emc/usr_intf/pncconf/pncconf.glade:28306 -#: src/emc/usr_intf/pncconf/pncconf.glade:28358 -#: src/emc/usr_intf/pncconf/pncconf.glade:28410 -#: src/emc/usr_intf/pncconf/pncconf.glade:28462 -#: src/emc/usr_intf/pncconf/pncconf.glade:29151 -#: src/emc/usr_intf/pncconf/pncconf.glade:29203 -#: src/emc/usr_intf/pncconf/pncconf.glade:29255 -#: src/emc/usr_intf/pncconf/pncconf.glade:29307 -#: src/emc/usr_intf/pncconf/pncconf.glade:29359 -#: src/emc/usr_intf/pncconf/pncconf.glade:29411 -#: src/emc/usr_intf/pncconf/pncconf.glade:29463 -#: src/emc/usr_intf/pncconf/pncconf.glade:29515 -#: src/emc/usr_intf/pncconf/pncconf.glade:29567 -#: src/emc/usr_intf/pncconf/pncconf.glade:29619 -#: src/emc/usr_intf/pncconf/pncconf.glade:29671 -#: src/emc/usr_intf/pncconf/pncconf.glade:29723 -#: src/emc/usr_intf/pncconf/pncconf.glade:30550 -#: src/emc/usr_intf/pncconf/pncconf.glade:30602 -#: src/emc/usr_intf/pncconf/pncconf.glade:30654 -#: src/emc/usr_intf/pncconf/pncconf.glade:30706 -#: src/emc/usr_intf/pncconf/pncconf.glade:32210 -#: src/emc/usr_intf/pncconf/pncconf.glade:32262 -#: src/emc/usr_intf/pncconf/pncconf.glade:32314 -#: src/emc/usr_intf/pncconf/pncconf.glade:32366 -#: src/emc/usr_intf/pncconf/pncconf.glade:32418 -#: src/emc/usr_intf/pncconf/pncconf.glade:32470 -#: src/emc/usr_intf/pncconf/pncconf.glade:32522 -#: src/emc/usr_intf/pncconf/pncconf.glade:32574 -#: src/emc/usr_intf/pncconf/pncconf.glade:32626 -#: src/emc/usr_intf/pncconf/pncconf.glade:32678 -#: src/emc/usr_intf/pncconf/pncconf.glade:32730 -#: src/emc/usr_intf/pncconf/pncconf.glade:32782 -#: src/emc/usr_intf/pncconf/pncconf.glade:33509 -#: src/emc/usr_intf/pncconf/pncconf.glade:33561 -#: src/emc/usr_intf/pncconf/pncconf.glade:33613 -#: src/emc/usr_intf/pncconf/pncconf.glade:33665 -#: src/emc/usr_intf/pncconf/pncconf.glade:33717 -#: src/emc/usr_intf/pncconf/pncconf.glade:33769 -#: src/emc/usr_intf/pncconf/pncconf.glade:33821 -#: src/emc/usr_intf/pncconf/pncconf.glade:33873 -#: src/emc/usr_intf/pncconf/pncconf.glade:33925 -#: src/emc/usr_intf/pncconf/pncconf.glade:33977 -#: src/emc/usr_intf/pncconf/pncconf.glade:34029 -#: src/emc/usr_intf/pncconf/pncconf.glade:34081 -#: src/emc/usr_intf/pncconf/pncconf.glade:34908 -#: src/emc/usr_intf/pncconf/pncconf.glade:34960 -#: src/emc/usr_intf/pncconf/pncconf.glade:35012 -#: src/emc/usr_intf/pncconf/pncconf.glade:35064 -#: src/emc/usr_intf/pncconf/pncconf.glade:36404 -#: src/emc/usr_intf/pncconf/pncconf.glade:36456 -#: src/emc/usr_intf/pncconf/pncconf.glade:36508 -#: src/emc/usr_intf/pncconf/pncconf.glade:36560 -#: src/emc/usr_intf/pncconf/pncconf.glade:37387 -#: src/emc/usr_intf/pncconf/pncconf.glade:37439 -#: src/emc/usr_intf/pncconf/pncconf.glade:37491 -#: src/emc/usr_intf/pncconf/pncconf.glade:37543 -#: src/emc/usr_intf/pncconf/pncconf.glade:37595 -#: src/emc/usr_intf/pncconf/pncconf.glade:37647 -#: src/emc/usr_intf/pncconf/pncconf.glade:37699 -#: src/emc/usr_intf/pncconf/pncconf.glade:37751 -#: src/emc/usr_intf/pncconf/pncconf.glade:37803 -#: src/emc/usr_intf/pncconf/pncconf.glade:37855 -#: src/emc/usr_intf/pncconf/pncconf.glade:37907 -#: src/emc/usr_intf/pncconf/pncconf.glade:37959 -#: src/emc/usr_intf/pncconf/pncconf.glade:38764 -#: src/emc/usr_intf/pncconf/pncconf.glade:38816 -#: src/emc/usr_intf/pncconf/pncconf.glade:38868 -#: src/emc/usr_intf/pncconf/pncconf.glade:38920 -#: src/emc/usr_intf/pncconf/pncconf.glade:38972 -#: src/emc/usr_intf/pncconf/pncconf.glade:39024 -#: src/emc/usr_intf/pncconf/pncconf.glade:39076 -#: src/emc/usr_intf/pncconf/pncconf.glade:39128 -#: src/emc/usr_intf/pncconf/pncconf.glade:39180 -#: src/emc/usr_intf/pncconf/pncconf.glade:39232 -#: src/emc/usr_intf/pncconf/pncconf.glade:39284 -#: src/emc/usr_intf/pncconf/pncconf.glade:39336 -#: src/emc/usr_intf/pncconf/pncconf.glade:40751 -#: src/emc/usr_intf/pncconf/pncconf.glade:40803 -#: src/emc/usr_intf/pncconf/pncconf.glade:40855 -#: src/emc/usr_intf/pncconf/pncconf.glade:40907 -#: src/emc/usr_intf/pncconf/pncconf.glade:41734 -#: src/emc/usr_intf/pncconf/pncconf.glade:41786 -#: src/emc/usr_intf/pncconf/pncconf.glade:41838 -#: src/emc/usr_intf/pncconf/pncconf.glade:41890 -#: src/emc/usr_intf/pncconf/pncconf.glade:41942 -#: src/emc/usr_intf/pncconf/pncconf.glade:41994 -#: src/emc/usr_intf/pncconf/pncconf.glade:42046 -#: src/emc/usr_intf/pncconf/pncconf.glade:42098 -#: src/emc/usr_intf/pncconf/pncconf.glade:42150 -#: src/emc/usr_intf/pncconf/pncconf.glade:42202 -#: src/emc/usr_intf/pncconf/pncconf.glade:42254 -#: src/emc/usr_intf/pncconf/pncconf.glade:42306 -#: src/emc/usr_intf/pncconf/pncconf.glade:42995 -#: src/emc/usr_intf/pncconf/pncconf.glade:43047 -#: src/emc/usr_intf/pncconf/pncconf.glade:43099 -#: src/emc/usr_intf/pncconf/pncconf.glade:43151 -#: src/emc/usr_intf/pncconf/pncconf.glade:43203 -#: src/emc/usr_intf/pncconf/pncconf.glade:43255 -#: src/emc/usr_intf/pncconf/pncconf.glade:43307 -#: src/emc/usr_intf/pncconf/pncconf.glade:43359 -#: src/emc/usr_intf/pncconf/pncconf.glade:43411 -#: src/emc/usr_intf/pncconf/pncconf.glade:43463 -#: src/emc/usr_intf/pncconf/pncconf.glade:43515 -#: src/emc/usr_intf/pncconf/pncconf.glade:43567 -#: src/emc/usr_intf/pncconf/pncconf.glade:44394 -#: src/emc/usr_intf/pncconf/pncconf.glade:44446 -#: src/emc/usr_intf/pncconf/pncconf.glade:44498 -#: src/emc/usr_intf/pncconf/pncconf.glade:44550 -#: src/emc/usr_intf/pncconf/pncconf.glade:46067 -#: src/emc/usr_intf/pncconf/pncconf.glade:46119 -#: src/emc/usr_intf/pncconf/pncconf.glade:46171 -#: src/emc/usr_intf/pncconf/pncconf.glade:46223 -#: src/emc/usr_intf/pncconf/pncconf.glade:46275 -#: src/emc/usr_intf/pncconf/pncconf.glade:46327 -#: src/emc/usr_intf/pncconf/pncconf.glade:46379 -#: src/emc/usr_intf/pncconf/pncconf.glade:46431 -#: src/emc/usr_intf/pncconf/pncconf.glade:46483 -#: src/emc/usr_intf/pncconf/pncconf.glade:46535 -#: src/emc/usr_intf/pncconf/pncconf.glade:46587 -#: src/emc/usr_intf/pncconf/pncconf.glade:46639 -#: src/emc/usr_intf/pncconf/pncconf.glade:47674 -#: src/emc/usr_intf/pncconf/pncconf.glade:47726 -#: src/emc/usr_intf/pncconf/pncconf.glade:47778 -#: src/emc/usr_intf/pncconf/pncconf.glade:47830 -#: src/emc/usr_intf/pncconf/pncconf.glade:48657 -#: src/emc/usr_intf/pncconf/pncconf.glade:48709 -#: src/emc/usr_intf/pncconf/pncconf.glade:48761 -#: src/emc/usr_intf/pncconf/pncconf.glade:48813 -#: src/emc/usr_intf/pncconf/pncconf.glade:48865 -#: src/emc/usr_intf/pncconf/pncconf.glade:48917 -#: src/emc/usr_intf/pncconf/pncconf.glade:48969 -#: src/emc/usr_intf/pncconf/pncconf.glade:49021 -#: src/emc/usr_intf/pncconf/pncconf.glade:49073 -#: src/emc/usr_intf/pncconf/pncconf.glade:49125 -#: src/emc/usr_intf/pncconf/pncconf.glade:49177 -#: src/emc/usr_intf/pncconf/pncconf.glade:49229 -#: src/emc/usr_intf/pncconf/pncconf.glade:49918 -#: src/emc/usr_intf/pncconf/pncconf.glade:49970 -#: src/emc/usr_intf/pncconf/pncconf.glade:50022 -#: src/emc/usr_intf/pncconf/pncconf.glade:50074 -#: src/emc/usr_intf/pncconf/pncconf.glade:50126 -#: src/emc/usr_intf/pncconf/pncconf.glade:50178 -#: src/emc/usr_intf/pncconf/pncconf.glade:50230 -#: src/emc/usr_intf/pncconf/pncconf.glade:50282 -#: src/emc/usr_intf/pncconf/pncconf.glade:50334 -#: src/emc/usr_intf/pncconf/pncconf.glade:50386 -#: src/emc/usr_intf/pncconf/pncconf.glade:50438 -#: src/emc/usr_intf/pncconf/pncconf.glade:50490 -#: src/emc/usr_intf/pncconf/pncconf.glade:51317 -#: src/emc/usr_intf/pncconf/pncconf.glade:51369 -#: src/emc/usr_intf/pncconf/pncconf.glade:51421 -#: src/emc/usr_intf/pncconf/pncconf.glade:51473 -#: src/emc/usr_intf/pncconf/pncconf.glade:52990 -#: src/emc/usr_intf/pncconf/pncconf.glade:53042 -#: src/emc/usr_intf/pncconf/pncconf.glade:53094 -#: src/emc/usr_intf/pncconf/pncconf.glade:53146 -#: src/emc/usr_intf/pncconf/pncconf.glade:53198 -#: src/emc/usr_intf/pncconf/pncconf.glade:53250 -#: src/emc/usr_intf/pncconf/pncconf.glade:53302 -#: src/emc/usr_intf/pncconf/pncconf.glade:53354 -#: src/emc/usr_intf/pncconf/pncconf.glade:53406 -#: src/emc/usr_intf/pncconf/pncconf.glade:53458 -#: src/emc/usr_intf/pncconf/pncconf.glade:53510 -#: src/emc/usr_intf/pncconf/pncconf.glade:53562 -#: src/emc/usr_intf/pncconf/pncconf.glade:8713 -#: src/emc/usr_intf/pncconf/pncconf.glade:8765 -#: src/emc/usr_intf/pncconf/pncconf.glade:9085 -#: src/emc/usr_intf/pncconf/pncconf.glade:9137 -#: src/emc/usr_intf/pncconf/pncconf.glade:9189 -#: src/emc/usr_intf/pncconf/pncconf.glade:9241 -#: src/emc/usr_intf/pncconf/pncconf.glade:9293 -#: src/emc/usr_intf/pncconf/pncconf.glade:9345 -#: src/emc/usr_intf/pncconf/pncconf.glade:9397 -#: src/emc/usr_intf/pncconf/pncconf.glade:9449 -#: src/emc/usr_intf/pncconf/pncconf.glade:9501 -#: src/emc/usr_intf/pncconf/pncconf.glade:9553 -#: src/emc/usr_intf/pncconf/pncconf.glade:10392 -#: src/emc/usr_intf/pncconf/pncconf.glade:10445 -#: src/emc/usr_intf/pncconf/pncconf.glade:10497 -#: src/emc/usr_intf/pncconf/pncconf.glade:10549 -#: src/emc/usr_intf/pncconf/pncconf.glade:11327 -#: src/emc/usr_intf/pncconf/pncconf.glade:11379 -#: src/emc/usr_intf/pncconf/pncconf.glade:12039 -#: src/emc/usr_intf/pncconf/pncconf.glade:12091 -#: src/emc/usr_intf/pncconf/pncconf.glade:12143 -#: src/emc/usr_intf/pncconf/pncconf.glade:12195 -#: src/emc/usr_intf/pncconf/pncconf.glade:13034 -#: src/emc/usr_intf/pncconf/pncconf.glade:13086 -#: src/emc/usr_intf/pncconf/pncconf.glade:13138 -#: src/emc/usr_intf/pncconf/pncconf.glade:13190 -#: src/emc/usr_intf/pncconf/pncconf.glade:13242 -#: src/emc/usr_intf/pncconf/pncconf.glade:13294 -#: src/emc/usr_intf/pncconf/pncconf.glade:13346 -#: src/emc/usr_intf/pncconf/pncconf.glade:13398 -#: src/emc/usr_intf/pncconf/pncconf.glade:13450 -#: src/emc/usr_intf/pncconf/pncconf.glade:13502 -#: src/emc/usr_intf/pncconf/pncconf.glade:14548 -#: src/emc/usr_intf/pncconf/pncconf.glade:14600 -#: src/emc/usr_intf/pncconf/pncconf.glade:14652 -#: src/emc/usr_intf/pncconf/pncconf.glade:14704 -#: src/emc/usr_intf/pncconf/pncconf.glade:15531 -#: src/emc/usr_intf/pncconf/pncconf.glade:15583 -#: src/emc/usr_intf/pncconf/pncconf.glade:15635 -#: src/emc/usr_intf/pncconf/pncconf.glade:15687 -#: src/emc/usr_intf/pncconf/pncconf.glade:15739 -#: src/emc/usr_intf/pncconf/pncconf.glade:15791 -#: src/emc/usr_intf/pncconf/pncconf.glade:15843 -#: src/emc/usr_intf/pncconf/pncconf.glade:15895 -#: src/emc/usr_intf/pncconf/pncconf.glade:15947 -#: src/emc/usr_intf/pncconf/pncconf.glade:15999 -#: src/emc/usr_intf/pncconf/pncconf.glade:16051 -#: src/emc/usr_intf/pncconf/pncconf.glade:16103 -#: src/emc/usr_intf/pncconf/pncconf.glade:16532 -#: src/emc/usr_intf/pncconf/pncconf.glade:16584 -#: src/emc/usr_intf/pncconf/pncconf.glade:17245 -#: src/emc/usr_intf/pncconf/pncconf.glade:17297 -#: src/emc/usr_intf/pncconf/pncconf.glade:17349 -#: src/emc/usr_intf/pncconf/pncconf.glade:18188 -#: src/emc/usr_intf/pncconf/pncconf.glade:18240 -#: src/emc/usr_intf/pncconf/pncconf.glade:18292 -#: src/emc/usr_intf/pncconf/pncconf.glade:18344 -#: src/emc/usr_intf/pncconf/pncconf.glade:18396 -#: src/emc/usr_intf/pncconf/pncconf.glade:18448 -#: src/emc/usr_intf/pncconf/pncconf.glade:18500 -#: src/emc/usr_intf/pncconf/pncconf.glade:18552 -#: src/emc/usr_intf/pncconf/pncconf.glade:18604 -#: src/emc/usr_intf/pncconf/pncconf.glade:18656 -#: src/emc/usr_intf/pncconf/pncconf.glade:18708 -#: src/emc/usr_intf/pncconf/pncconf.glade:26604 -#: src/emc/usr_intf/pncconf/pncconf.glade:26656 -#: src/emc/usr_intf/pncconf/pncconf.glade:26708 -#: src/emc/usr_intf/pncconf/pncconf.glade:26760 -#: src/emc/usr_intf/pncconf/pncconf.glade:26812 -#: src/emc/usr_intf/pncconf/pncconf.glade:26864 -#: src/emc/usr_intf/pncconf/pncconf.glade:26916 -#: src/emc/usr_intf/pncconf/pncconf.glade:26968 -#: src/emc/usr_intf/pncconf/pncconf.glade:27020 -#: src/emc/usr_intf/pncconf/pncconf.glade:27072 -#: src/emc/usr_intf/pncconf/pncconf.glade:27124 -#: src/emc/usr_intf/pncconf/pncconf.glade:27176 -#: src/emc/usr_intf/pncconf/pncconf.glade:28003 -#: src/emc/usr_intf/pncconf/pncconf.glade:28055 -#: src/emc/usr_intf/pncconf/pncconf.glade:28107 -#: src/emc/usr_intf/pncconf/pncconf.glade:28159 -#: src/emc/usr_intf/pncconf/pncconf.glade:29499 -#: src/emc/usr_intf/pncconf/pncconf.glade:29551 -#: src/emc/usr_intf/pncconf/pncconf.glade:29603 -#: src/emc/usr_intf/pncconf/pncconf.glade:29655 -#: src/emc/usr_intf/pncconf/pncconf.glade:30482 -#: src/emc/usr_intf/pncconf/pncconf.glade:30534 -#: src/emc/usr_intf/pncconf/pncconf.glade:30586 -#: src/emc/usr_intf/pncconf/pncconf.glade:30638 -#: src/emc/usr_intf/pncconf/pncconf.glade:30690 -#: src/emc/usr_intf/pncconf/pncconf.glade:30742 -#: src/emc/usr_intf/pncconf/pncconf.glade:30794 -#: src/emc/usr_intf/pncconf/pncconf.glade:30846 -#: src/emc/usr_intf/pncconf/pncconf.glade:30898 -#: src/emc/usr_intf/pncconf/pncconf.glade:30950 -#: src/emc/usr_intf/pncconf/pncconf.glade:31002 -#: src/emc/usr_intf/pncconf/pncconf.glade:31054 -#: src/emc/usr_intf/pncconf/pncconf.glade:31870 -#: src/emc/usr_intf/pncconf/pncconf.glade:31922 -#: src/emc/usr_intf/pncconf/pncconf.glade:31974 -#: src/emc/usr_intf/pncconf/pncconf.glade:32026 -#: src/emc/usr_intf/pncconf/pncconf.glade:32078 -#: src/emc/usr_intf/pncconf/pncconf.glade:32130 -#: src/emc/usr_intf/pncconf/pncconf.glade:32182 -#: src/emc/usr_intf/pncconf/pncconf.glade:32234 -#: src/emc/usr_intf/pncconf/pncconf.glade:32286 -#: src/emc/usr_intf/pncconf/pncconf.glade:32338 -#: src/emc/usr_intf/pncconf/pncconf.glade:32390 -#: src/emc/usr_intf/pncconf/pncconf.glade:32442 -#: src/emc/usr_intf/pncconf/pncconf.glade:33844 -#: src/emc/usr_intf/pncconf/pncconf.glade:33896 -#: src/emc/usr_intf/pncconf/pncconf.glade:33948 -#: src/emc/usr_intf/pncconf/pncconf.glade:34000 -#: src/emc/usr_intf/pncconf/pncconf.glade:34827 -#: src/emc/usr_intf/pncconf/pncconf.glade:34879 -#: src/emc/usr_intf/pncconf/pncconf.glade:34931 -#: src/emc/usr_intf/pncconf/pncconf.glade:34983 -#: src/emc/usr_intf/pncconf/pncconf.glade:35035 -#: src/emc/usr_intf/pncconf/pncconf.glade:35087 -#: src/emc/usr_intf/pncconf/pncconf.glade:35139 -#: src/emc/usr_intf/pncconf/pncconf.glade:35191 -#: src/emc/usr_intf/pncconf/pncconf.glade:35243 -#: src/emc/usr_intf/pncconf/pncconf.glade:35295 -#: src/emc/usr_intf/pncconf/pncconf.glade:35347 -#: src/emc/usr_intf/pncconf/pncconf.glade:35399 -#: src/emc/usr_intf/pncconf/pncconf.glade:36088 -#: src/emc/usr_intf/pncconf/pncconf.glade:36140 -#: src/emc/usr_intf/pncconf/pncconf.glade:36192 -#: src/emc/usr_intf/pncconf/pncconf.glade:36244 -#: src/emc/usr_intf/pncconf/pncconf.glade:36296 -#: src/emc/usr_intf/pncconf/pncconf.glade:36348 -#: src/emc/usr_intf/pncconf/pncconf.glade:36400 -#: src/emc/usr_intf/pncconf/pncconf.glade:36452 -#: src/emc/usr_intf/pncconf/pncconf.glade:36504 -#: src/emc/usr_intf/pncconf/pncconf.glade:36556 -#: src/emc/usr_intf/pncconf/pncconf.glade:36608 -#: src/emc/usr_intf/pncconf/pncconf.glade:36660 -#: src/emc/usr_intf/pncconf/pncconf.glade:37487 -#: src/emc/usr_intf/pncconf/pncconf.glade:37539 -#: src/emc/usr_intf/pncconf/pncconf.glade:37591 -#: src/emc/usr_intf/pncconf/pncconf.glade:37643 -#: src/emc/usr_intf/pncconf/pncconf.glade:39160 -#: src/emc/usr_intf/pncconf/pncconf.glade:39212 -#: src/emc/usr_intf/pncconf/pncconf.glade:39264 -#: src/emc/usr_intf/pncconf/pncconf.glade:39316 -#: src/emc/usr_intf/pncconf/pncconf.glade:39368 -#: src/emc/usr_intf/pncconf/pncconf.glade:39420 -#: src/emc/usr_intf/pncconf/pncconf.glade:39472 -#: src/emc/usr_intf/pncconf/pncconf.glade:39524 -#: src/emc/usr_intf/pncconf/pncconf.glade:39576 -#: src/emc/usr_intf/pncconf/pncconf.glade:39628 -#: src/emc/usr_intf/pncconf/pncconf.glade:39680 -#: src/emc/usr_intf/pncconf/pncconf.glade:39732 -#: src/emc/usr_intf/pncconf/pncconf.glade:40448 -#: src/emc/usr_intf/pncconf/pncconf.glade:40500 -#: src/emc/usr_intf/pncconf/pncconf.glade:40552 -#: src/emc/usr_intf/pncconf/pncconf.glade:40604 -#: src/emc/usr_intf/pncconf/pncconf.glade:40656 -#: src/emc/usr_intf/pncconf/pncconf.glade:40708 -#: src/emc/usr_intf/pncconf/pncconf.glade:40760 -#: src/emc/usr_intf/pncconf/pncconf.glade:40812 -#: src/emc/usr_intf/pncconf/pncconf.glade:40864 -#: src/emc/usr_intf/pncconf/pncconf.glade:40916 -#: src/emc/usr_intf/pncconf/pncconf.glade:40968 -#: src/emc/usr_intf/pncconf/pncconf.glade:41020 -#: src/emc/usr_intf/pncconf/pncconf.glade:41847 -#: src/emc/usr_intf/pncconf/pncconf.glade:41899 -#: src/emc/usr_intf/pncconf/pncconf.glade:41951 -#: src/emc/usr_intf/pncconf/pncconf.glade:42003 -#: src/emc/usr_intf/pncconf/pncconf.glade:43343 -#: src/emc/usr_intf/pncconf/pncconf.glade:43395 -#: src/emc/usr_intf/pncconf/pncconf.glade:43447 -#: src/emc/usr_intf/pncconf/pncconf.glade:43499 -#: src/emc/usr_intf/pncconf/pncconf.glade:44326 -#: src/emc/usr_intf/pncconf/pncconf.glade:44378 -#: src/emc/usr_intf/pncconf/pncconf.glade:44430 -#: src/emc/usr_intf/pncconf/pncconf.glade:44482 -#: src/emc/usr_intf/pncconf/pncconf.glade:44534 -#: src/emc/usr_intf/pncconf/pncconf.glade:44586 -#: src/emc/usr_intf/pncconf/pncconf.glade:44638 -#: src/emc/usr_intf/pncconf/pncconf.glade:44690 -#: src/emc/usr_intf/pncconf/pncconf.glade:44742 -#: src/emc/usr_intf/pncconf/pncconf.glade:44794 -#: src/emc/usr_intf/pncconf/pncconf.glade:44846 -#: src/emc/usr_intf/pncconf/pncconf.glade:44898 -#: src/emc/usr_intf/pncconf/pncconf.glade:45703 -#: src/emc/usr_intf/pncconf/pncconf.glade:45755 -#: src/emc/usr_intf/pncconf/pncconf.glade:45807 -#: src/emc/usr_intf/pncconf/pncconf.glade:45859 -#: src/emc/usr_intf/pncconf/pncconf.glade:45911 -#: src/emc/usr_intf/pncconf/pncconf.glade:45963 -#: src/emc/usr_intf/pncconf/pncconf.glade:46015 -#: src/emc/usr_intf/pncconf/pncconf.glade:47371 -#: src/emc/usr_intf/pncconf/pncconf.glade:47423 -#: src/emc/usr_intf/pncconf/pncconf.glade:47475 -#: src/emc/usr_intf/pncconf/pncconf.glade:47527 -#: src/emc/usr_intf/pncconf/pncconf.glade:47579 -#: src/emc/usr_intf/pncconf/pncconf.glade:47631 -#: src/emc/usr_intf/pncconf/pncconf.glade:47683 -#: src/emc/usr_intf/pncconf/pncconf.glade:47735 -#: src/emc/usr_intf/pncconf/pncconf.glade:47787 -#: src/emc/usr_intf/pncconf/pncconf.glade:47839 -#: src/emc/usr_intf/pncconf/pncconf.glade:47891 -#: src/emc/usr_intf/pncconf/pncconf.glade:47943 -#: src/emc/usr_intf/pncconf/pncconf.glade:48770 -#: src/emc/usr_intf/pncconf/pncconf.glade:48822 -#: src/emc/usr_intf/pncconf/pncconf.glade:48874 -#: src/emc/usr_intf/pncconf/pncconf.glade:48926 -#: src/emc/usr_intf/pncconf/pncconf.glade:50266 -#: src/emc/usr_intf/pncconf/pncconf.glade:50318 -#: src/emc/usr_intf/pncconf/pncconf.glade:50370 -#: src/emc/usr_intf/pncconf/pncconf.glade:50422 -#: src/emc/usr_intf/pncconf/pncconf.glade:51249 -#: src/emc/usr_intf/pncconf/pncconf.glade:51301 -#: src/emc/usr_intf/pncconf/pncconf.glade:51353 -#: src/emc/usr_intf/pncconf/pncconf.glade:51405 -#: src/emc/usr_intf/pncconf/pncconf.glade:51457 -#: src/emc/usr_intf/pncconf/pncconf.glade:51509 -#: src/emc/usr_intf/pncconf/pncconf.glade:51561 -#: src/emc/usr_intf/pncconf/pncconf.glade:51613 -#: src/emc/usr_intf/pncconf/pncconf.glade:51665 -#: src/emc/usr_intf/pncconf/pncconf.glade:51717 -#: src/emc/usr_intf/pncconf/pncconf.glade:51769 -#: src/emc/usr_intf/pncconf/pncconf.glade:51821 -#: src/emc/usr_intf/pncconf/pncconf.glade:52626 -#: src/emc/usr_intf/pncconf/pncconf.glade:52678 -#: src/emc/usr_intf/pncconf/pncconf.glade:52730 -#: src/emc/usr_intf/pncconf/pncconf.glade:52782 -#: src/emc/usr_intf/pncconf/pncconf.glade:52834 -#: src/emc/usr_intf/pncconf/pncconf.glade:52886 -#: src/emc/usr_intf/pncconf/pncconf.glade:52938 -#: src/emc/usr_intf/pncconf/pncconf.glade:54294 -#: src/emc/usr_intf/pncconf/pncconf.glade:54346 -#: src/emc/usr_intf/pncconf/pncconf.glade:54398 -#: src/emc/usr_intf/pncconf/pncconf.glade:54450 -#: src/emc/usr_intf/pncconf/pncconf.glade:54502 -#: src/emc/usr_intf/pncconf/pncconf.glade:54554 -#: src/emc/usr_intf/pncconf/pncconf.glade:54606 -#: src/emc/usr_intf/pncconf/pncconf.glade:54658 -#: src/emc/usr_intf/pncconf/pncconf.glade:54710 -#: src/emc/usr_intf/pncconf/pncconf.glade:54762 -#: src/emc/usr_intf/pncconf/pncconf.glade:54814 -#: src/emc/usr_intf/pncconf/pncconf.glade:54866 -#: src/emc/usr_intf/pncconf/pncconf.glade:55693 -#: src/emc/usr_intf/pncconf/pncconf.glade:55745 -#: src/emc/usr_intf/pncconf/pncconf.glade:55797 -#: src/emc/usr_intf/pncconf/pncconf.glade:55849 -#: src/emc/usr_intf/pncconf/pncconf.glade:57189 -#: src/emc/usr_intf/pncconf/pncconf.glade:57241 -#: src/emc/usr_intf/pncconf/pncconf.glade:57293 -#: src/emc/usr_intf/pncconf/pncconf.glade:57345 -#: src/emc/usr_intf/pncconf/pncconf.glade:58172 -#: src/emc/usr_intf/pncconf/pncconf.glade:58224 -#: src/emc/usr_intf/pncconf/pncconf.glade:58276 -#: src/emc/usr_intf/pncconf/pncconf.glade:58328 -#: src/emc/usr_intf/pncconf/pncconf.glade:58380 -#: src/emc/usr_intf/pncconf/pncconf.glade:58432 -#: src/emc/usr_intf/pncconf/pncconf.glade:58484 -#: src/emc/usr_intf/pncconf/pncconf.glade:58536 -#: src/emc/usr_intf/pncconf/pncconf.glade:58588 -#: src/emc/usr_intf/pncconf/pncconf.glade:58640 -#: src/emc/usr_intf/pncconf/pncconf.glade:58692 -#: src/emc/usr_intf/pncconf/pncconf.glade:58744 -#: src/emc/usr_intf/pncconf/pncconf.glade:59549 -#: src/emc/usr_intf/pncconf/pncconf.glade:59601 -#: src/emc/usr_intf/pncconf/pncconf.glade:59653 -#: src/emc/usr_intf/pncconf/pncconf.glade:59705 -#: src/emc/usr_intf/pncconf/pncconf.glade:59757 -#: src/emc/usr_intf/pncconf/pncconf.glade:59809 -#: src/emc/usr_intf/pncconf/pncconf.glade:59861 -#: src/emc/usr_intf/pncconf/pncconf.glade:59913 -#: src/emc/usr_intf/pncconf/pncconf.glade:59965 -#: src/emc/usr_intf/pncconf/pncconf.glade:60017 -#: src/emc/usr_intf/pncconf/pncconf.glade:60069 -#: src/emc/usr_intf/pncconf/pncconf.glade:60121 +#: src/emc/usr_intf/pncconf/pncconf.glade:13094 +#: src/emc/usr_intf/pncconf/pncconf.glade:13146 +#: src/emc/usr_intf/pncconf/pncconf.glade:13198 +#: src/emc/usr_intf/pncconf/pncconf.glade:13250 +#: src/emc/usr_intf/pncconf/pncconf.glade:13302 +#: src/emc/usr_intf/pncconf/pncconf.glade:13354 +#: src/emc/usr_intf/pncconf/pncconf.glade:13406 +#: src/emc/usr_intf/pncconf/pncconf.glade:13458 +#: src/emc/usr_intf/pncconf/pncconf.glade:13510 +#: src/emc/usr_intf/pncconf/pncconf.glade:14556 +#: src/emc/usr_intf/pncconf/pncconf.glade:14608 +#: src/emc/usr_intf/pncconf/pncconf.glade:14660 +#: src/emc/usr_intf/pncconf/pncconf.glade:14712 +#: src/emc/usr_intf/pncconf/pncconf.glade:15539 +#: src/emc/usr_intf/pncconf/pncconf.glade:15591 +#: src/emc/usr_intf/pncconf/pncconf.glade:15643 +#: src/emc/usr_intf/pncconf/pncconf.glade:15695 +#: src/emc/usr_intf/pncconf/pncconf.glade:15747 +#: src/emc/usr_intf/pncconf/pncconf.glade:15799 +#: src/emc/usr_intf/pncconf/pncconf.glade:15851 +#: src/emc/usr_intf/pncconf/pncconf.glade:15903 +#: src/emc/usr_intf/pncconf/pncconf.glade:15955 +#: src/emc/usr_intf/pncconf/pncconf.glade:16007 +#: src/emc/usr_intf/pncconf/pncconf.glade:16059 +#: src/emc/usr_intf/pncconf/pncconf.glade:16111 +#: src/emc/usr_intf/pncconf/pncconf.glade:16540 +#: src/emc/usr_intf/pncconf/pncconf.glade:16592 +#: src/emc/usr_intf/pncconf/pncconf.glade:17253 +#: src/emc/usr_intf/pncconf/pncconf.glade:17305 +#: src/emc/usr_intf/pncconf/pncconf.glade:17357 +#: src/emc/usr_intf/pncconf/pncconf.glade:18196 +#: src/emc/usr_intf/pncconf/pncconf.glade:18248 +#: src/emc/usr_intf/pncconf/pncconf.glade:18300 +#: src/emc/usr_intf/pncconf/pncconf.glade:18352 +#: src/emc/usr_intf/pncconf/pncconf.glade:18404 +#: src/emc/usr_intf/pncconf/pncconf.glade:18456 +#: src/emc/usr_intf/pncconf/pncconf.glade:18508 +#: src/emc/usr_intf/pncconf/pncconf.glade:18560 +#: src/emc/usr_intf/pncconf/pncconf.glade:18612 +#: src/emc/usr_intf/pncconf/pncconf.glade:18664 +#: src/emc/usr_intf/pncconf/pncconf.glade:18716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26612 +#: src/emc/usr_intf/pncconf/pncconf.glade:26664 +#: src/emc/usr_intf/pncconf/pncconf.glade:26716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26768 +#: src/emc/usr_intf/pncconf/pncconf.glade:26820 +#: src/emc/usr_intf/pncconf/pncconf.glade:26872 +#: src/emc/usr_intf/pncconf/pncconf.glade:26924 +#: src/emc/usr_intf/pncconf/pncconf.glade:26976 +#: src/emc/usr_intf/pncconf/pncconf.glade:27028 +#: src/emc/usr_intf/pncconf/pncconf.glade:27080 +#: src/emc/usr_intf/pncconf/pncconf.glade:27132 +#: src/emc/usr_intf/pncconf/pncconf.glade:27184 +#: src/emc/usr_intf/pncconf/pncconf.glade:28011 +#: src/emc/usr_intf/pncconf/pncconf.glade:28063 +#: src/emc/usr_intf/pncconf/pncconf.glade:28115 +#: src/emc/usr_intf/pncconf/pncconf.glade:28167 +#: src/emc/usr_intf/pncconf/pncconf.glade:29507 +#: src/emc/usr_intf/pncconf/pncconf.glade:29559 +#: src/emc/usr_intf/pncconf/pncconf.glade:29611 +#: src/emc/usr_intf/pncconf/pncconf.glade:29663 +#: src/emc/usr_intf/pncconf/pncconf.glade:30490 +#: src/emc/usr_intf/pncconf/pncconf.glade:30542 +#: src/emc/usr_intf/pncconf/pncconf.glade:30594 +#: src/emc/usr_intf/pncconf/pncconf.glade:30646 +#: src/emc/usr_intf/pncconf/pncconf.glade:30698 +#: src/emc/usr_intf/pncconf/pncconf.glade:30750 +#: src/emc/usr_intf/pncconf/pncconf.glade:30802 +#: src/emc/usr_intf/pncconf/pncconf.glade:30854 +#: src/emc/usr_intf/pncconf/pncconf.glade:30906 +#: src/emc/usr_intf/pncconf/pncconf.glade:30958 +#: src/emc/usr_intf/pncconf/pncconf.glade:31010 +#: src/emc/usr_intf/pncconf/pncconf.glade:31062 +#: src/emc/usr_intf/pncconf/pncconf.glade:31878 +#: src/emc/usr_intf/pncconf/pncconf.glade:31930 +#: src/emc/usr_intf/pncconf/pncconf.glade:31982 +#: src/emc/usr_intf/pncconf/pncconf.glade:32034 +#: src/emc/usr_intf/pncconf/pncconf.glade:32086 +#: src/emc/usr_intf/pncconf/pncconf.glade:32138 +#: src/emc/usr_intf/pncconf/pncconf.glade:32190 +#: src/emc/usr_intf/pncconf/pncconf.glade:32242 +#: src/emc/usr_intf/pncconf/pncconf.glade:32294 +#: src/emc/usr_intf/pncconf/pncconf.glade:32346 +#: src/emc/usr_intf/pncconf/pncconf.glade:32398 +#: src/emc/usr_intf/pncconf/pncconf.glade:32450 +#: src/emc/usr_intf/pncconf/pncconf.glade:33852 +#: src/emc/usr_intf/pncconf/pncconf.glade:33904 +#: src/emc/usr_intf/pncconf/pncconf.glade:33956 +#: src/emc/usr_intf/pncconf/pncconf.glade:34008 +#: src/emc/usr_intf/pncconf/pncconf.glade:34835 +#: src/emc/usr_intf/pncconf/pncconf.glade:34887 +#: src/emc/usr_intf/pncconf/pncconf.glade:34939 +#: src/emc/usr_intf/pncconf/pncconf.glade:34991 +#: src/emc/usr_intf/pncconf/pncconf.glade:35043 +#: src/emc/usr_intf/pncconf/pncconf.glade:35095 +#: src/emc/usr_intf/pncconf/pncconf.glade:35147 +#: src/emc/usr_intf/pncconf/pncconf.glade:35199 +#: src/emc/usr_intf/pncconf/pncconf.glade:35251 +#: src/emc/usr_intf/pncconf/pncconf.glade:35303 +#: src/emc/usr_intf/pncconf/pncconf.glade:35355 +#: src/emc/usr_intf/pncconf/pncconf.glade:35407 +#: src/emc/usr_intf/pncconf/pncconf.glade:36096 +#: src/emc/usr_intf/pncconf/pncconf.glade:36148 +#: src/emc/usr_intf/pncconf/pncconf.glade:36200 +#: src/emc/usr_intf/pncconf/pncconf.glade:36252 +#: src/emc/usr_intf/pncconf/pncconf.glade:36304 +#: src/emc/usr_intf/pncconf/pncconf.glade:36356 +#: src/emc/usr_intf/pncconf/pncconf.glade:36408 +#: src/emc/usr_intf/pncconf/pncconf.glade:36460 +#: src/emc/usr_intf/pncconf/pncconf.glade:36512 +#: src/emc/usr_intf/pncconf/pncconf.glade:36564 +#: src/emc/usr_intf/pncconf/pncconf.glade:36616 +#: src/emc/usr_intf/pncconf/pncconf.glade:36668 +#: src/emc/usr_intf/pncconf/pncconf.glade:37495 +#: src/emc/usr_intf/pncconf/pncconf.glade:37547 +#: src/emc/usr_intf/pncconf/pncconf.glade:37599 +#: src/emc/usr_intf/pncconf/pncconf.glade:37651 +#: src/emc/usr_intf/pncconf/pncconf.glade:39168 +#: src/emc/usr_intf/pncconf/pncconf.glade:39220 +#: src/emc/usr_intf/pncconf/pncconf.glade:39272 +#: src/emc/usr_intf/pncconf/pncconf.glade:39324 +#: src/emc/usr_intf/pncconf/pncconf.glade:39376 +#: src/emc/usr_intf/pncconf/pncconf.glade:39428 +#: src/emc/usr_intf/pncconf/pncconf.glade:39480 +#: src/emc/usr_intf/pncconf/pncconf.glade:39532 +#: src/emc/usr_intf/pncconf/pncconf.glade:39584 +#: src/emc/usr_intf/pncconf/pncconf.glade:39636 +#: src/emc/usr_intf/pncconf/pncconf.glade:39688 +#: src/emc/usr_intf/pncconf/pncconf.glade:39740 +#: src/emc/usr_intf/pncconf/pncconf.glade:40456 +#: src/emc/usr_intf/pncconf/pncconf.glade:40508 +#: src/emc/usr_intf/pncconf/pncconf.glade:40560 +#: src/emc/usr_intf/pncconf/pncconf.glade:40612 +#: src/emc/usr_intf/pncconf/pncconf.glade:40664 +#: src/emc/usr_intf/pncconf/pncconf.glade:40716 +#: src/emc/usr_intf/pncconf/pncconf.glade:40768 +#: src/emc/usr_intf/pncconf/pncconf.glade:40820 +#: src/emc/usr_intf/pncconf/pncconf.glade:40872 +#: src/emc/usr_intf/pncconf/pncconf.glade:40924 +#: src/emc/usr_intf/pncconf/pncconf.glade:40976 +#: src/emc/usr_intf/pncconf/pncconf.glade:41028 +#: src/emc/usr_intf/pncconf/pncconf.glade:41855 +#: src/emc/usr_intf/pncconf/pncconf.glade:41907 +#: src/emc/usr_intf/pncconf/pncconf.glade:41959 +#: src/emc/usr_intf/pncconf/pncconf.glade:42011 +#: src/emc/usr_intf/pncconf/pncconf.glade:43351 +#: src/emc/usr_intf/pncconf/pncconf.glade:43403 +#: src/emc/usr_intf/pncconf/pncconf.glade:43455 +#: src/emc/usr_intf/pncconf/pncconf.glade:43507 +#: src/emc/usr_intf/pncconf/pncconf.glade:44334 +#: src/emc/usr_intf/pncconf/pncconf.glade:44386 +#: src/emc/usr_intf/pncconf/pncconf.glade:44438 +#: src/emc/usr_intf/pncconf/pncconf.glade:44490 +#: src/emc/usr_intf/pncconf/pncconf.glade:44542 +#: src/emc/usr_intf/pncconf/pncconf.glade:44594 +#: src/emc/usr_intf/pncconf/pncconf.glade:44646 +#: src/emc/usr_intf/pncconf/pncconf.glade:44698 +#: src/emc/usr_intf/pncconf/pncconf.glade:44750 +#: src/emc/usr_intf/pncconf/pncconf.glade:44802 +#: src/emc/usr_intf/pncconf/pncconf.glade:44854 +#: src/emc/usr_intf/pncconf/pncconf.glade:44906 +#: src/emc/usr_intf/pncconf/pncconf.glade:45711 +#: src/emc/usr_intf/pncconf/pncconf.glade:45763 +#: src/emc/usr_intf/pncconf/pncconf.glade:45815 +#: src/emc/usr_intf/pncconf/pncconf.glade:45867 +#: src/emc/usr_intf/pncconf/pncconf.glade:45919 +#: src/emc/usr_intf/pncconf/pncconf.glade:45971 +#: src/emc/usr_intf/pncconf/pncconf.glade:46023 +#: src/emc/usr_intf/pncconf/pncconf.glade:46075 +#: src/emc/usr_intf/pncconf/pncconf.glade:46127 +#: src/emc/usr_intf/pncconf/pncconf.glade:46179 +#: src/emc/usr_intf/pncconf/pncconf.glade:46231 +#: src/emc/usr_intf/pncconf/pncconf.glade:46283 +#: src/emc/usr_intf/pncconf/pncconf.glade:47379 +#: src/emc/usr_intf/pncconf/pncconf.glade:47431 +#: src/emc/usr_intf/pncconf/pncconf.glade:47483 +#: src/emc/usr_intf/pncconf/pncconf.glade:47535 +#: src/emc/usr_intf/pncconf/pncconf.glade:47587 +#: src/emc/usr_intf/pncconf/pncconf.glade:47639 +#: src/emc/usr_intf/pncconf/pncconf.glade:47691 +#: src/emc/usr_intf/pncconf/pncconf.glade:47743 +#: src/emc/usr_intf/pncconf/pncconf.glade:47795 +#: src/emc/usr_intf/pncconf/pncconf.glade:47847 +#: src/emc/usr_intf/pncconf/pncconf.glade:47899 +#: src/emc/usr_intf/pncconf/pncconf.glade:47951 +#: src/emc/usr_intf/pncconf/pncconf.glade:48778 +#: src/emc/usr_intf/pncconf/pncconf.glade:48830 +#: src/emc/usr_intf/pncconf/pncconf.glade:48882 +#: src/emc/usr_intf/pncconf/pncconf.glade:48934 +#: src/emc/usr_intf/pncconf/pncconf.glade:50274 +#: src/emc/usr_intf/pncconf/pncconf.glade:50326 +#: src/emc/usr_intf/pncconf/pncconf.glade:50378 +#: src/emc/usr_intf/pncconf/pncconf.glade:50430 +#: src/emc/usr_intf/pncconf/pncconf.glade:51257 +#: src/emc/usr_intf/pncconf/pncconf.glade:51309 +#: src/emc/usr_intf/pncconf/pncconf.glade:51361 +#: src/emc/usr_intf/pncconf/pncconf.glade:51413 +#: src/emc/usr_intf/pncconf/pncconf.glade:51465 +#: src/emc/usr_intf/pncconf/pncconf.glade:51517 +#: src/emc/usr_intf/pncconf/pncconf.glade:51569 +#: src/emc/usr_intf/pncconf/pncconf.glade:51621 +#: src/emc/usr_intf/pncconf/pncconf.glade:51673 +#: src/emc/usr_intf/pncconf/pncconf.glade:51725 +#: src/emc/usr_intf/pncconf/pncconf.glade:51777 +#: src/emc/usr_intf/pncconf/pncconf.glade:51829 +#: src/emc/usr_intf/pncconf/pncconf.glade:52634 +#: src/emc/usr_intf/pncconf/pncconf.glade:52686 +#: src/emc/usr_intf/pncconf/pncconf.glade:52738 +#: src/emc/usr_intf/pncconf/pncconf.glade:52790 +#: src/emc/usr_intf/pncconf/pncconf.glade:52842 +#: src/emc/usr_intf/pncconf/pncconf.glade:52894 +#: src/emc/usr_intf/pncconf/pncconf.glade:52946 +#: src/emc/usr_intf/pncconf/pncconf.glade:52998 +#: src/emc/usr_intf/pncconf/pncconf.glade:53050 +#: src/emc/usr_intf/pncconf/pncconf.glade:53102 +#: src/emc/usr_intf/pncconf/pncconf.glade:53154 +#: src/emc/usr_intf/pncconf/pncconf.glade:53206 +#: src/emc/usr_intf/pncconf/pncconf.glade:54302 +#: src/emc/usr_intf/pncconf/pncconf.glade:54354 +#: src/emc/usr_intf/pncconf/pncconf.glade:54406 +#: src/emc/usr_intf/pncconf/pncconf.glade:54458 +#: src/emc/usr_intf/pncconf/pncconf.glade:54510 +#: src/emc/usr_intf/pncconf/pncconf.glade:54562 +#: src/emc/usr_intf/pncconf/pncconf.glade:54614 +#: src/emc/usr_intf/pncconf/pncconf.glade:54666 +#: src/emc/usr_intf/pncconf/pncconf.glade:54718 +#: src/emc/usr_intf/pncconf/pncconf.glade:54770 +#: src/emc/usr_intf/pncconf/pncconf.glade:54822 +#: src/emc/usr_intf/pncconf/pncconf.glade:54874 +#: src/emc/usr_intf/pncconf/pncconf.glade:55701 +#: src/emc/usr_intf/pncconf/pncconf.glade:55753 +#: src/emc/usr_intf/pncconf/pncconf.glade:55805 +#: src/emc/usr_intf/pncconf/pncconf.glade:55857 +#: src/emc/usr_intf/pncconf/pncconf.glade:57197 +#: src/emc/usr_intf/pncconf/pncconf.glade:57249 +#: src/emc/usr_intf/pncconf/pncconf.glade:57301 +#: src/emc/usr_intf/pncconf/pncconf.glade:57353 +#: src/emc/usr_intf/pncconf/pncconf.glade:58180 +#: src/emc/usr_intf/pncconf/pncconf.glade:58232 +#: src/emc/usr_intf/pncconf/pncconf.glade:58284 +#: src/emc/usr_intf/pncconf/pncconf.glade:58336 +#: src/emc/usr_intf/pncconf/pncconf.glade:58388 +#: src/emc/usr_intf/pncconf/pncconf.glade:58440 +#: src/emc/usr_intf/pncconf/pncconf.glade:58492 +#: src/emc/usr_intf/pncconf/pncconf.glade:58544 +#: src/emc/usr_intf/pncconf/pncconf.glade:58596 +#: src/emc/usr_intf/pncconf/pncconf.glade:58648 +#: src/emc/usr_intf/pncconf/pncconf.glade:58700 +#: src/emc/usr_intf/pncconf/pncconf.glade:58752 +#: src/emc/usr_intf/pncconf/pncconf.glade:59557 +#: src/emc/usr_intf/pncconf/pncconf.glade:59609 +#: src/emc/usr_intf/pncconf/pncconf.glade:59661 +#: src/emc/usr_intf/pncconf/pncconf.glade:59713 +#: src/emc/usr_intf/pncconf/pncconf.glade:59765 +#: src/emc/usr_intf/pncconf/pncconf.glade:59817 +#: src/emc/usr_intf/pncconf/pncconf.glade:59869 +#: src/emc/usr_intf/pncconf/pncconf.glade:59921 +#: src/emc/usr_intf/pncconf/pncconf.glade:59973 +#: src/emc/usr_intf/pncconf/pncconf.glade:60025 +#: src/emc/usr_intf/pncconf/pncconf.glade:60077 +#: src/emc/usr_intf/pncconf/pncconf.glade:60129 msgid "" "ESTOP IN\n" "Spindle PPR\n" @@ -12184,1737 +12433,1672 @@ msgid "" "Unused" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9515 -#: src/emc/usr_intf/pncconf/pncconf.glade:12871 -#: src/emc/usr_intf/pncconf/pncconf.glade:18128 -#: src/emc/usr_intf/pncconf/pncconf.glade:20233 -#: src/emc/usr_intf/pncconf/pncconf.glade:21486 -#: src/emc/usr_intf/pncconf/pncconf.glade:23282 -#: src/emc/usr_intf/pncconf/pncconf.glade:25078 -#: src/emc/usr_intf/pncconf/pncconf.glade:10377 -#: src/emc/usr_intf/pncconf/pncconf.glade:12248 -#: src/emc/usr_intf/pncconf/pncconf.glade:17402 -#: src/emc/usr_intf/pncconf/pncconf.glade:19706 -#: src/emc/usr_intf/pncconf/pncconf.glade:22045 -#: src/emc/usr_intf/pncconf/pncconf.glade:23841 -#: src/emc/usr_intf/pncconf/pncconf.glade:25637 -msgid "31:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8825 +#: src/emc/usr_intf/pncconf/pncconf.glade:9081 +#: src/emc/usr_intf/pncconf/pncconf.glade:13563 +#: src/emc/usr_intf/pncconf/pncconf.glade:13818 +#: src/emc/usr_intf/pncconf/pncconf.glade:16164 +#: src/emc/usr_intf/pncconf/pncconf.glade:16410 +#: src/emc/usr_intf/pncconf/pncconf.glade:18769 +#: src/emc/usr_intf/pncconf/pncconf.glade:19024 +#: src/emc/usr_intf/pncconf/pncconf.glade:20571 +#: src/emc/usr_intf/pncconf/pncconf.glade:20820 +#: src/emc/usr_intf/pncconf/pncconf.glade:20949 +#: src/emc/usr_intf/pncconf/pncconf.glade:21199 +#: src/emc/usr_intf/pncconf/pncconf.glade:22745 +#: src/emc/usr_intf/pncconf/pncconf.glade:22995 +#: src/emc/usr_intf/pncconf/pncconf.glade:24541 +#: src/emc/usr_intf/pncconf/pncconf.glade:24791 +#: src/emc/usr_intf/pncconf/pncconf.glade:26353 +#: src/emc/usr_intf/pncconf/pncconf.glade:26600 +#: src/emc/usr_intf/pncconf/pncconf.glade:31115 +#: src/emc/usr_intf/pncconf/pncconf.glade:31361 +#: src/emc/usr_intf/pncconf/pncconf.glade:31621 +#: src/emc/usr_intf/pncconf/pncconf.glade:35460 +#: src/emc/usr_intf/pncconf/pncconf.glade:35706 +#: src/emc/usr_intf/pncconf/pncconf.glade:35837 +#: src/emc/usr_intf/pncconf/pncconf.glade:36084 +#: src/emc/usr_intf/pncconf/pncconf.glade:40037 +#: src/emc/usr_intf/pncconf/pncconf.glade:40197 +#: src/emc/usr_intf/pncconf/pncconf.glade:40444 +#: src/emc/usr_intf/pncconf/pncconf.glade:44959 +#: src/emc/usr_intf/pncconf/pncconf.glade:45205 +#: src/emc/usr_intf/pncconf/pncconf.glade:45454 +#: src/emc/usr_intf/pncconf/pncconf.glade:47120 +#: src/emc/usr_intf/pncconf/pncconf.glade:47367 +#: src/emc/usr_intf/pncconf/pncconf.glade:51882 +#: src/emc/usr_intf/pncconf/pncconf.glade:52128 +#: src/emc/usr_intf/pncconf/pncconf.glade:52377 +#: src/emc/usr_intf/pncconf/pncconf.glade:54043 +#: src/emc/usr_intf/pncconf/pncconf.glade:54290 +#: src/emc/usr_intf/pncconf/pncconf.glade:58805 +#: src/emc/usr_intf/pncconf/pncconf.glade:59051 +#: src/emc/usr_intf/pncconf/pncconf.glade:59300 +msgid "Pin Type" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9531 -#: src/emc/usr_intf/pncconf/pncconf.glade:12855 -#: src/emc/usr_intf/pncconf/pncconf.glade:18112 -#: src/emc/usr_intf/pncconf/pncconf.glade:20217 -#: src/emc/usr_intf/pncconf/pncconf.glade:21502 -#: src/emc/usr_intf/pncconf/pncconf.glade:23298 -#: src/emc/usr_intf/pncconf/pncconf.glade:25094 -#: src/emc/usr_intf/pncconf/pncconf.glade:10361 -#: src/emc/usr_intf/pncconf/pncconf.glade:12264 -#: src/emc/usr_intf/pncconf/pncconf.glade:17418 -#: src/emc/usr_intf/pncconf/pncconf.glade:19722 -#: src/emc/usr_intf/pncconf/pncconf.glade:22029 -#: src/emc/usr_intf/pncconf/pncconf.glade:23825 -#: src/emc/usr_intf/pncconf/pncconf.glade:25621 -msgid "29:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8838 +#: src/emc/usr_intf/pncconf/pncconf.glade:8900 +#: src/emc/usr_intf/pncconf/pncconf.glade:13743 +#: src/emc/usr_intf/pncconf/pncconf.glade:13806 +#: src/emc/usr_intf/pncconf/pncconf.glade:16335 +#: src/emc/usr_intf/pncconf/pncconf.glade:16398 +#: src/emc/usr_intf/pncconf/pncconf.glade:18949 +#: src/emc/usr_intf/pncconf/pncconf.glade:19012 +#: src/emc/usr_intf/pncconf/pncconf.glade:20751 +#: src/emc/usr_intf/pncconf/pncconf.glade:20808 +#: src/emc/usr_intf/pncconf/pncconf.glade:20962 +#: src/emc/usr_intf/pncconf/pncconf.glade:21018 +#: src/emc/usr_intf/pncconf/pncconf.glade:22758 +#: src/emc/usr_intf/pncconf/pncconf.glade:22814 +#: src/emc/usr_intf/pncconf/pncconf.glade:24554 +#: src/emc/usr_intf/pncconf/pncconf.glade:24610 +#: src/emc/usr_intf/pncconf/pncconf.glade:26366 +#: src/emc/usr_intf/pncconf/pncconf.glade:26428 +#: src/emc/usr_intf/pncconf/pncconf.glade:31286 +#: src/emc/usr_intf/pncconf/pncconf.glade:31349 +#: src/emc/usr_intf/pncconf/pncconf.glade:31634 +#: src/emc/usr_intf/pncconf/pncconf.glade:35631 +#: src/emc/usr_intf/pncconf/pncconf.glade:35694 +#: src/emc/usr_intf/pncconf/pncconf.glade:35850 +#: src/emc/usr_intf/pncconf/pncconf.glade:35912 +#: src/emc/usr_intf/pncconf/pncconf.glade:40025 +#: src/emc/usr_intf/pncconf/pncconf.glade:40210 +#: src/emc/usr_intf/pncconf/pncconf.glade:40272 +#: src/emc/usr_intf/pncconf/pncconf.glade:45130 +#: src/emc/usr_intf/pncconf/pncconf.glade:45193 +#: src/emc/usr_intf/pncconf/pncconf.glade:45467 +#: src/emc/usr_intf/pncconf/pncconf.glade:47133 +#: src/emc/usr_intf/pncconf/pncconf.glade:47195 +#: src/emc/usr_intf/pncconf/pncconf.glade:52053 +#: src/emc/usr_intf/pncconf/pncconf.glade:52116 +#: src/emc/usr_intf/pncconf/pncconf.glade:52390 +#: src/emc/usr_intf/pncconf/pncconf.glade:54056 +#: src/emc/usr_intf/pncconf/pncconf.glade:54118 +#: src/emc/usr_intf/pncconf/pncconf.glade:58976 +#: src/emc/usr_intf/pncconf/pncconf.glade:59039 +#: src/emc/usr_intf/pncconf/pncconf.glade:59313 +msgid "Inv" +msgstr "Odwróć" + +#: src/emc/usr_intf/pncconf/pncconf.glade:8867 +#: src/emc/usr_intf/pncconf/pncconf.glade:10731 +#: src/emc/usr_intf/pncconf/pncconf.glade:10751 +#: src/emc/usr_intf/pncconf/pncconf.glade:10771 +#: src/emc/usr_intf/pncconf/pncconf.glade:10791 +#: src/emc/usr_intf/pncconf/pncconf.glade:10811 +#: src/emc/usr_intf/pncconf/pncconf.glade:10831 +#: src/emc/usr_intf/pncconf/pncconf.glade:10851 +#: src/emc/usr_intf/pncconf/pncconf.glade:10871 +#: src/emc/usr_intf/pncconf/pncconf.glade:10891 +#: src/emc/usr_intf/pncconf/pncconf.glade:10911 +#: src/emc/usr_intf/pncconf/pncconf.glade:10931 +#: src/emc/usr_intf/pncconf/pncconf.glade:10951 +#: src/emc/usr_intf/pncconf/pncconf.glade:10971 +#: src/emc/usr_intf/pncconf/pncconf.glade:10991 +#: src/emc/usr_intf/pncconf/pncconf.glade:11011 +#: src/emc/usr_intf/pncconf/pncconf.glade:11031 +#: src/emc/usr_intf/pncconf/pncconf.glade:11051 +#: src/emc/usr_intf/pncconf/pncconf.glade:11071 +#: src/emc/usr_intf/pncconf/pncconf.glade:11091 +#: src/emc/usr_intf/pncconf/pncconf.glade:11111 +#: src/emc/usr_intf/pncconf/pncconf.glade:11131 +#: src/emc/usr_intf/pncconf/pncconf.glade:11151 +#: src/emc/usr_intf/pncconf/pncconf.glade:11171 +#: src/emc/usr_intf/pncconf/pncconf.glade:11465 +#: src/emc/usr_intf/pncconf/pncconf.glade:11485 +#: src/emc/usr_intf/pncconf/pncconf.glade:11505 +#: src/emc/usr_intf/pncconf/pncconf.glade:11525 +#: src/emc/usr_intf/pncconf/pncconf.glade:11545 +#: src/emc/usr_intf/pncconf/pncconf.glade:11565 +#: src/emc/usr_intf/pncconf/pncconf.glade:11585 +#: src/emc/usr_intf/pncconf/pncconf.glade:11605 +#: src/emc/usr_intf/pncconf/pncconf.glade:11625 +#: src/emc/usr_intf/pncconf/pncconf.glade:11645 +#: src/emc/usr_intf/pncconf/pncconf.glade:11665 +#: src/emc/usr_intf/pncconf/pncconf.glade:11685 +#: src/emc/usr_intf/pncconf/pncconf.glade:11705 +#: src/emc/usr_intf/pncconf/pncconf.glade:11725 +#: src/emc/usr_intf/pncconf/pncconf.glade:11745 +#: src/emc/usr_intf/pncconf/pncconf.glade:11765 +#: src/emc/usr_intf/pncconf/pncconf.glade:11785 +#: src/emc/usr_intf/pncconf/pncconf.glade:11805 +#: src/emc/usr_intf/pncconf/pncconf.glade:11825 +#: src/emc/usr_intf/pncconf/pncconf.glade:11845 +#: src/emc/usr_intf/pncconf/pncconf.glade:11865 +#: src/emc/usr_intf/pncconf/pncconf.glade:11885 +#: src/emc/usr_intf/pncconf/pncconf.glade:11905 +#: src/emc/usr_intf/pncconf/pncconf.glade:13768 +#: src/emc/usr_intf/pncconf/pncconf.glade:13974 +#: src/emc/usr_intf/pncconf/pncconf.glade:13994 +#: src/emc/usr_intf/pncconf/pncconf.glade:14014 +#: src/emc/usr_intf/pncconf/pncconf.glade:14034 +#: src/emc/usr_intf/pncconf/pncconf.glade:14054 +#: src/emc/usr_intf/pncconf/pncconf.glade:14074 +#: src/emc/usr_intf/pncconf/pncconf.glade:14094 +#: src/emc/usr_intf/pncconf/pncconf.glade:14114 +#: src/emc/usr_intf/pncconf/pncconf.glade:14134 +#: src/emc/usr_intf/pncconf/pncconf.glade:14154 +#: src/emc/usr_intf/pncconf/pncconf.glade:14174 +#: src/emc/usr_intf/pncconf/pncconf.glade:14194 +#: src/emc/usr_intf/pncconf/pncconf.glade:14214 +#: src/emc/usr_intf/pncconf/pncconf.glade:14234 +#: src/emc/usr_intf/pncconf/pncconf.glade:14254 +#: src/emc/usr_intf/pncconf/pncconf.glade:14274 +#: src/emc/usr_intf/pncconf/pncconf.glade:14294 +#: src/emc/usr_intf/pncconf/pncconf.glade:14314 +#: src/emc/usr_intf/pncconf/pncconf.glade:14334 +#: src/emc/usr_intf/pncconf/pncconf.glade:14354 +#: src/emc/usr_intf/pncconf/pncconf.glade:14374 +#: src/emc/usr_intf/pncconf/pncconf.glade:14394 +#: src/emc/usr_intf/pncconf/pncconf.glade:14414 +#: src/emc/usr_intf/pncconf/pncconf.glade:16360 +#: src/emc/usr_intf/pncconf/pncconf.glade:16670 +#: src/emc/usr_intf/pncconf/pncconf.glade:16690 +#: src/emc/usr_intf/pncconf/pncconf.glade:16710 +#: src/emc/usr_intf/pncconf/pncconf.glade:16730 +#: src/emc/usr_intf/pncconf/pncconf.glade:16750 +#: src/emc/usr_intf/pncconf/pncconf.glade:16770 +#: src/emc/usr_intf/pncconf/pncconf.glade:16790 +#: src/emc/usr_intf/pncconf/pncconf.glade:16810 +#: src/emc/usr_intf/pncconf/pncconf.glade:16830 +#: src/emc/usr_intf/pncconf/pncconf.glade:16850 +#: src/emc/usr_intf/pncconf/pncconf.glade:16870 +#: src/emc/usr_intf/pncconf/pncconf.glade:16890 +#: src/emc/usr_intf/pncconf/pncconf.glade:16910 +#: src/emc/usr_intf/pncconf/pncconf.glade:16930 +#: src/emc/usr_intf/pncconf/pncconf.glade:16950 +#: src/emc/usr_intf/pncconf/pncconf.glade:16970 +#: src/emc/usr_intf/pncconf/pncconf.glade:16990 +#: src/emc/usr_intf/pncconf/pncconf.glade:17010 +#: src/emc/usr_intf/pncconf/pncconf.glade:17030 +#: src/emc/usr_intf/pncconf/pncconf.glade:17050 +#: src/emc/usr_intf/pncconf/pncconf.glade:17070 +#: src/emc/usr_intf/pncconf/pncconf.glade:17090 +#: src/emc/usr_intf/pncconf/pncconf.glade:17110 +#: src/emc/usr_intf/pncconf/pncconf.glade:18974 +#: src/emc/usr_intf/pncconf/pncconf.glade:26395 +#: src/emc/usr_intf/pncconf/pncconf.glade:28311 +#: src/emc/usr_intf/pncconf/pncconf.glade:28331 +#: src/emc/usr_intf/pncconf/pncconf.glade:28351 +#: src/emc/usr_intf/pncconf/pncconf.glade:28371 +#: src/emc/usr_intf/pncconf/pncconf.glade:28391 +#: src/emc/usr_intf/pncconf/pncconf.glade:28411 +#: src/emc/usr_intf/pncconf/pncconf.glade:28431 +#: src/emc/usr_intf/pncconf/pncconf.glade:28451 +#: src/emc/usr_intf/pncconf/pncconf.glade:28471 +#: src/emc/usr_intf/pncconf/pncconf.glade:28491 +#: src/emc/usr_intf/pncconf/pncconf.glade:28511 +#: src/emc/usr_intf/pncconf/pncconf.glade:28531 +#: src/emc/usr_intf/pncconf/pncconf.glade:28551 +#: src/emc/usr_intf/pncconf/pncconf.glade:28571 +#: src/emc/usr_intf/pncconf/pncconf.glade:28591 +#: src/emc/usr_intf/pncconf/pncconf.glade:28611 +#: src/emc/usr_intf/pncconf/pncconf.glade:28631 +#: src/emc/usr_intf/pncconf/pncconf.glade:28651 +#: src/emc/usr_intf/pncconf/pncconf.glade:28671 +#: src/emc/usr_intf/pncconf/pncconf.glade:28691 +#: src/emc/usr_intf/pncconf/pncconf.glade:28711 +#: src/emc/usr_intf/pncconf/pncconf.glade:28731 +#: src/emc/usr_intf/pncconf/pncconf.glade:28751 +#: src/emc/usr_intf/pncconf/pncconf.glade:28942 +#: src/emc/usr_intf/pncconf/pncconf.glade:28962 +#: src/emc/usr_intf/pncconf/pncconf.glade:28982 +#: src/emc/usr_intf/pncconf/pncconf.glade:29002 +#: src/emc/usr_intf/pncconf/pncconf.glade:29022 +#: src/emc/usr_intf/pncconf/pncconf.glade:29042 +#: src/emc/usr_intf/pncconf/pncconf.glade:29062 +#: src/emc/usr_intf/pncconf/pncconf.glade:29082 +#: src/emc/usr_intf/pncconf/pncconf.glade:29102 +#: src/emc/usr_intf/pncconf/pncconf.glade:29122 +#: src/emc/usr_intf/pncconf/pncconf.glade:29142 +#: src/emc/usr_intf/pncconf/pncconf.glade:29162 +#: src/emc/usr_intf/pncconf/pncconf.glade:29182 +#: src/emc/usr_intf/pncconf/pncconf.glade:29202 +#: src/emc/usr_intf/pncconf/pncconf.glade:29222 +#: src/emc/usr_intf/pncconf/pncconf.glade:29242 +#: src/emc/usr_intf/pncconf/pncconf.glade:29262 +#: src/emc/usr_intf/pncconf/pncconf.glade:29282 +#: src/emc/usr_intf/pncconf/pncconf.glade:29302 +#: src/emc/usr_intf/pncconf/pncconf.glade:29322 +#: src/emc/usr_intf/pncconf/pncconf.glade:29342 +#: src/emc/usr_intf/pncconf/pncconf.glade:29362 +#: src/emc/usr_intf/pncconf/pncconf.glade:29382 +#: src/emc/usr_intf/pncconf/pncconf.glade:31311 +#: src/emc/usr_intf/pncconf/pncconf.glade:31663 +#: src/emc/usr_intf/pncconf/pncconf.glade:32881 +#: src/emc/usr_intf/pncconf/pncconf.glade:32901 +#: src/emc/usr_intf/pncconf/pncconf.glade:32921 +#: src/emc/usr_intf/pncconf/pncconf.glade:32941 +#: src/emc/usr_intf/pncconf/pncconf.glade:32961 +#: src/emc/usr_intf/pncconf/pncconf.glade:32981 +#: src/emc/usr_intf/pncconf/pncconf.glade:33001 +#: src/emc/usr_intf/pncconf/pncconf.glade:33021 +#: src/emc/usr_intf/pncconf/pncconf.glade:33041 +#: src/emc/usr_intf/pncconf/pncconf.glade:33061 +#: src/emc/usr_intf/pncconf/pncconf.glade:33081 +#: src/emc/usr_intf/pncconf/pncconf.glade:33300 +#: src/emc/usr_intf/pncconf/pncconf.glade:33320 +#: src/emc/usr_intf/pncconf/pncconf.glade:33340 +#: src/emc/usr_intf/pncconf/pncconf.glade:33360 +#: src/emc/usr_intf/pncconf/pncconf.glade:33380 +#: src/emc/usr_intf/pncconf/pncconf.glade:33400 +#: src/emc/usr_intf/pncconf/pncconf.glade:33420 +#: src/emc/usr_intf/pncconf/pncconf.glade:33440 +#: src/emc/usr_intf/pncconf/pncconf.glade:33460 +#: src/emc/usr_intf/pncconf/pncconf.glade:33480 +#: src/emc/usr_intf/pncconf/pncconf.glade:33500 +#: src/emc/usr_intf/pncconf/pncconf.glade:33520 +#: src/emc/usr_intf/pncconf/pncconf.glade:33540 +#: src/emc/usr_intf/pncconf/pncconf.glade:33560 +#: src/emc/usr_intf/pncconf/pncconf.glade:33580 +#: src/emc/usr_intf/pncconf/pncconf.glade:33600 +#: src/emc/usr_intf/pncconf/pncconf.glade:33620 +#: src/emc/usr_intf/pncconf/pncconf.glade:33640 +#: src/emc/usr_intf/pncconf/pncconf.glade:33660 +#: src/emc/usr_intf/pncconf/pncconf.glade:33680 +#: src/emc/usr_intf/pncconf/pncconf.glade:33700 +#: src/emc/usr_intf/pncconf/pncconf.glade:33720 +#: src/emc/usr_intf/pncconf/pncconf.glade:33740 +#: src/emc/usr_intf/pncconf/pncconf.glade:35656 +#: src/emc/usr_intf/pncconf/pncconf.glade:35879 +#: src/emc/usr_intf/pncconf/pncconf.glade:37808 +#: src/emc/usr_intf/pncconf/pncconf.glade:37828 +#: src/emc/usr_intf/pncconf/pncconf.glade:37848 +#: src/emc/usr_intf/pncconf/pncconf.glade:37868 +#: src/emc/usr_intf/pncconf/pncconf.glade:37888 +#: src/emc/usr_intf/pncconf/pncconf.glade:37908 +#: src/emc/usr_intf/pncconf/pncconf.glade:37928 +#: src/emc/usr_intf/pncconf/pncconf.glade:37948 +#: src/emc/usr_intf/pncconf/pncconf.glade:37968 +#: src/emc/usr_intf/pncconf/pncconf.glade:37988 +#: src/emc/usr_intf/pncconf/pncconf.glade:38008 +#: src/emc/usr_intf/pncconf/pncconf.glade:38028 +#: src/emc/usr_intf/pncconf/pncconf.glade:38048 +#: src/emc/usr_intf/pncconf/pncconf.glade:38068 +#: src/emc/usr_intf/pncconf/pncconf.glade:38088 +#: src/emc/usr_intf/pncconf/pncconf.glade:38108 +#: src/emc/usr_intf/pncconf/pncconf.glade:38128 +#: src/emc/usr_intf/pncconf/pncconf.glade:38148 +#: src/emc/usr_intf/pncconf/pncconf.glade:38168 +#: src/emc/usr_intf/pncconf/pncconf.glade:38188 +#: src/emc/usr_intf/pncconf/pncconf.glade:38208 +#: src/emc/usr_intf/pncconf/pncconf.glade:38228 +#: src/emc/usr_intf/pncconf/pncconf.glade:38248 +#: src/emc/usr_intf/pncconf/pncconf.glade:38557 +#: src/emc/usr_intf/pncconf/pncconf.glade:38577 +#: src/emc/usr_intf/pncconf/pncconf.glade:38597 +#: src/emc/usr_intf/pncconf/pncconf.glade:38617 +#: src/emc/usr_intf/pncconf/pncconf.glade:38637 +#: src/emc/usr_intf/pncconf/pncconf.glade:38657 +#: src/emc/usr_intf/pncconf/pncconf.glade:38677 +#: src/emc/usr_intf/pncconf/pncconf.glade:38697 +#: src/emc/usr_intf/pncconf/pncconf.glade:38717 +#: src/emc/usr_intf/pncconf/pncconf.glade:38737 +#: src/emc/usr_intf/pncconf/pncconf.glade:38757 +#: src/emc/usr_intf/pncconf/pncconf.glade:39987 +#: src/emc/usr_intf/pncconf/pncconf.glade:40239 +#: src/emc/usr_intf/pncconf/pncconf.glade:42155 +#: src/emc/usr_intf/pncconf/pncconf.glade:42175 +#: src/emc/usr_intf/pncconf/pncconf.glade:42195 +#: src/emc/usr_intf/pncconf/pncconf.glade:42215 +#: src/emc/usr_intf/pncconf/pncconf.glade:42235 +#: src/emc/usr_intf/pncconf/pncconf.glade:42255 +#: src/emc/usr_intf/pncconf/pncconf.glade:42275 +#: src/emc/usr_intf/pncconf/pncconf.glade:42295 +#: src/emc/usr_intf/pncconf/pncconf.glade:42315 +#: src/emc/usr_intf/pncconf/pncconf.glade:42335 +#: src/emc/usr_intf/pncconf/pncconf.glade:42355 +#: src/emc/usr_intf/pncconf/pncconf.glade:42375 +#: src/emc/usr_intf/pncconf/pncconf.glade:42395 +#: src/emc/usr_intf/pncconf/pncconf.glade:42415 +#: src/emc/usr_intf/pncconf/pncconf.glade:42435 +#: src/emc/usr_intf/pncconf/pncconf.glade:42455 +#: src/emc/usr_intf/pncconf/pncconf.glade:42475 +#: src/emc/usr_intf/pncconf/pncconf.glade:42495 +#: src/emc/usr_intf/pncconf/pncconf.glade:42515 +#: src/emc/usr_intf/pncconf/pncconf.glade:42535 +#: src/emc/usr_intf/pncconf/pncconf.glade:42555 +#: src/emc/usr_intf/pncconf/pncconf.glade:42575 +#: src/emc/usr_intf/pncconf/pncconf.glade:42595 +#: src/emc/usr_intf/pncconf/pncconf.glade:42786 +#: src/emc/usr_intf/pncconf/pncconf.glade:42806 +#: src/emc/usr_intf/pncconf/pncconf.glade:42826 +#: src/emc/usr_intf/pncconf/pncconf.glade:42846 +#: src/emc/usr_intf/pncconf/pncconf.glade:42866 +#: src/emc/usr_intf/pncconf/pncconf.glade:42886 +#: src/emc/usr_intf/pncconf/pncconf.glade:42906 +#: src/emc/usr_intf/pncconf/pncconf.glade:42926 +#: src/emc/usr_intf/pncconf/pncconf.glade:42946 +#: src/emc/usr_intf/pncconf/pncconf.glade:42966 +#: src/emc/usr_intf/pncconf/pncconf.glade:42986 +#: src/emc/usr_intf/pncconf/pncconf.glade:43006 +#: src/emc/usr_intf/pncconf/pncconf.glade:43026 +#: src/emc/usr_intf/pncconf/pncconf.glade:43046 +#: src/emc/usr_intf/pncconf/pncconf.glade:43066 +#: src/emc/usr_intf/pncconf/pncconf.glade:43086 +#: src/emc/usr_intf/pncconf/pncconf.glade:43106 +#: src/emc/usr_intf/pncconf/pncconf.glade:43126 +#: src/emc/usr_intf/pncconf/pncconf.glade:43146 +#: src/emc/usr_intf/pncconf/pncconf.glade:43166 +#: src/emc/usr_intf/pncconf/pncconf.glade:43186 +#: src/emc/usr_intf/pncconf/pncconf.glade:43206 +#: src/emc/usr_intf/pncconf/pncconf.glade:43226 +#: src/emc/usr_intf/pncconf/pncconf.glade:45155 +#: src/emc/usr_intf/pncconf/pncconf.glade:45496 +#: src/emc/usr_intf/pncconf/pncconf.glade:46726 +#: src/emc/usr_intf/pncconf/pncconf.glade:46746 +#: src/emc/usr_intf/pncconf/pncconf.glade:46766 +#: src/emc/usr_intf/pncconf/pncconf.glade:46786 +#: src/emc/usr_intf/pncconf/pncconf.glade:46806 +#: src/emc/usr_intf/pncconf/pncconf.glade:46826 +#: src/emc/usr_intf/pncconf/pncconf.glade:46846 +#: src/emc/usr_intf/pncconf/pncconf.glade:46866 +#: src/emc/usr_intf/pncconf/pncconf.glade:46886 +#: src/emc/usr_intf/pncconf/pncconf.glade:46906 +#: src/emc/usr_intf/pncconf/pncconf.glade:46926 +#: src/emc/usr_intf/pncconf/pncconf.glade:47162 +#: src/emc/usr_intf/pncconf/pncconf.glade:49078 +#: src/emc/usr_intf/pncconf/pncconf.glade:49098 +#: src/emc/usr_intf/pncconf/pncconf.glade:49118 +#: src/emc/usr_intf/pncconf/pncconf.glade:49138 +#: src/emc/usr_intf/pncconf/pncconf.glade:49158 +#: src/emc/usr_intf/pncconf/pncconf.glade:49178 +#: src/emc/usr_intf/pncconf/pncconf.glade:49198 +#: src/emc/usr_intf/pncconf/pncconf.glade:49218 +#: src/emc/usr_intf/pncconf/pncconf.glade:49238 +#: src/emc/usr_intf/pncconf/pncconf.glade:49258 +#: src/emc/usr_intf/pncconf/pncconf.glade:49278 +#: src/emc/usr_intf/pncconf/pncconf.glade:49298 +#: src/emc/usr_intf/pncconf/pncconf.glade:49318 +#: src/emc/usr_intf/pncconf/pncconf.glade:49338 +#: src/emc/usr_intf/pncconf/pncconf.glade:49358 +#: src/emc/usr_intf/pncconf/pncconf.glade:49378 +#: src/emc/usr_intf/pncconf/pncconf.glade:49398 +#: src/emc/usr_intf/pncconf/pncconf.glade:49418 +#: src/emc/usr_intf/pncconf/pncconf.glade:49438 +#: src/emc/usr_intf/pncconf/pncconf.glade:49458 +#: src/emc/usr_intf/pncconf/pncconf.glade:49478 +#: src/emc/usr_intf/pncconf/pncconf.glade:49498 +#: src/emc/usr_intf/pncconf/pncconf.glade:49518 +#: src/emc/usr_intf/pncconf/pncconf.glade:49709 +#: src/emc/usr_intf/pncconf/pncconf.glade:49729 +#: src/emc/usr_intf/pncconf/pncconf.glade:49749 +#: src/emc/usr_intf/pncconf/pncconf.glade:49769 +#: src/emc/usr_intf/pncconf/pncconf.glade:49789 +#: src/emc/usr_intf/pncconf/pncconf.glade:49809 +#: src/emc/usr_intf/pncconf/pncconf.glade:49829 +#: src/emc/usr_intf/pncconf/pncconf.glade:49849 +#: src/emc/usr_intf/pncconf/pncconf.glade:49869 +#: src/emc/usr_intf/pncconf/pncconf.glade:49889 +#: src/emc/usr_intf/pncconf/pncconf.glade:49909 +#: src/emc/usr_intf/pncconf/pncconf.glade:49929 +#: src/emc/usr_intf/pncconf/pncconf.glade:49949 +#: src/emc/usr_intf/pncconf/pncconf.glade:49969 +#: src/emc/usr_intf/pncconf/pncconf.glade:49989 +#: src/emc/usr_intf/pncconf/pncconf.glade:50009 +#: src/emc/usr_intf/pncconf/pncconf.glade:50029 +#: src/emc/usr_intf/pncconf/pncconf.glade:50049 +#: src/emc/usr_intf/pncconf/pncconf.glade:50069 +#: src/emc/usr_intf/pncconf/pncconf.glade:50089 +#: src/emc/usr_intf/pncconf/pncconf.glade:50109 +#: src/emc/usr_intf/pncconf/pncconf.glade:50129 +#: src/emc/usr_intf/pncconf/pncconf.glade:50149 +#: src/emc/usr_intf/pncconf/pncconf.glade:52078 +#: src/emc/usr_intf/pncconf/pncconf.glade:52419 +#: src/emc/usr_intf/pncconf/pncconf.glade:53649 +#: src/emc/usr_intf/pncconf/pncconf.glade:53669 +#: src/emc/usr_intf/pncconf/pncconf.glade:53689 +#: src/emc/usr_intf/pncconf/pncconf.glade:53709 +#: src/emc/usr_intf/pncconf/pncconf.glade:53729 +#: src/emc/usr_intf/pncconf/pncconf.glade:53749 +#: src/emc/usr_intf/pncconf/pncconf.glade:53769 +#: src/emc/usr_intf/pncconf/pncconf.glade:53789 +#: src/emc/usr_intf/pncconf/pncconf.glade:53809 +#: src/emc/usr_intf/pncconf/pncconf.glade:53829 +#: src/emc/usr_intf/pncconf/pncconf.glade:53849 +#: src/emc/usr_intf/pncconf/pncconf.glade:54085 +#: src/emc/usr_intf/pncconf/pncconf.glade:56001 +#: src/emc/usr_intf/pncconf/pncconf.glade:56021 +#: src/emc/usr_intf/pncconf/pncconf.glade:56041 +#: src/emc/usr_intf/pncconf/pncconf.glade:56061 +#: src/emc/usr_intf/pncconf/pncconf.glade:56081 +#: src/emc/usr_intf/pncconf/pncconf.glade:56101 +#: src/emc/usr_intf/pncconf/pncconf.glade:56121 +#: src/emc/usr_intf/pncconf/pncconf.glade:56141 +#: src/emc/usr_intf/pncconf/pncconf.glade:56161 +#: src/emc/usr_intf/pncconf/pncconf.glade:56181 +#: src/emc/usr_intf/pncconf/pncconf.glade:56201 +#: src/emc/usr_intf/pncconf/pncconf.glade:56221 +#: src/emc/usr_intf/pncconf/pncconf.glade:56241 +#: src/emc/usr_intf/pncconf/pncconf.glade:56261 +#: src/emc/usr_intf/pncconf/pncconf.glade:56281 +#: src/emc/usr_intf/pncconf/pncconf.glade:56301 +#: src/emc/usr_intf/pncconf/pncconf.glade:56321 +#: src/emc/usr_intf/pncconf/pncconf.glade:56341 +#: src/emc/usr_intf/pncconf/pncconf.glade:56361 +#: src/emc/usr_intf/pncconf/pncconf.glade:56381 +#: src/emc/usr_intf/pncconf/pncconf.glade:56401 +#: src/emc/usr_intf/pncconf/pncconf.glade:56421 +#: src/emc/usr_intf/pncconf/pncconf.glade:56441 +#: src/emc/usr_intf/pncconf/pncconf.glade:56632 +#: src/emc/usr_intf/pncconf/pncconf.glade:56652 +#: src/emc/usr_intf/pncconf/pncconf.glade:56672 +#: src/emc/usr_intf/pncconf/pncconf.glade:56692 +#: src/emc/usr_intf/pncconf/pncconf.glade:56712 +#: src/emc/usr_intf/pncconf/pncconf.glade:56732 +#: src/emc/usr_intf/pncconf/pncconf.glade:56752 +#: src/emc/usr_intf/pncconf/pncconf.glade:56772 +#: src/emc/usr_intf/pncconf/pncconf.glade:56792 +#: src/emc/usr_intf/pncconf/pncconf.glade:56812 +#: src/emc/usr_intf/pncconf/pncconf.glade:56832 +#: src/emc/usr_intf/pncconf/pncconf.glade:56852 +#: src/emc/usr_intf/pncconf/pncconf.glade:56872 +#: src/emc/usr_intf/pncconf/pncconf.glade:56892 +#: src/emc/usr_intf/pncconf/pncconf.glade:56912 +#: src/emc/usr_intf/pncconf/pncconf.glade:56932 +#: src/emc/usr_intf/pncconf/pncconf.glade:56952 +#: src/emc/usr_intf/pncconf/pncconf.glade:56972 +#: src/emc/usr_intf/pncconf/pncconf.glade:56992 +#: src/emc/usr_intf/pncconf/pncconf.glade:57012 +#: src/emc/usr_intf/pncconf/pncconf.glade:57032 +#: src/emc/usr_intf/pncconf/pncconf.glade:57052 +#: src/emc/usr_intf/pncconf/pncconf.glade:57072 +#: src/emc/usr_intf/pncconf/pncconf.glade:59001 +#: src/emc/usr_intf/pncconf/pncconf.glade:59342 +#: src/emc/usr_intf/pncconf/pncconf.glade:60572 +#: src/emc/usr_intf/pncconf/pncconf.glade:60592 +#: src/emc/usr_intf/pncconf/pncconf.glade:60612 +#: src/emc/usr_intf/pncconf/pncconf.glade:60632 +#: src/emc/usr_intf/pncconf/pncconf.glade:60652 +#: src/emc/usr_intf/pncconf/pncconf.glade:60672 +#: src/emc/usr_intf/pncconf/pncconf.glade:60692 +#: src/emc/usr_intf/pncconf/pncconf.glade:60712 +#: src/emc/usr_intf/pncconf/pncconf.glade:60732 +#: src/emc/usr_intf/pncconf/pncconf.glade:60752 +#: src/emc/usr_intf/pncconf/pncconf.glade:60772 +msgid "" +"GPIO Input\n" +"GPIO Output\n" +"GPIO O Drain\n" +"Encoder\n" +"PWM\n" +"StepGen\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9547 -#: src/emc/usr_intf/pncconf/pncconf.glade:12839 -#: src/emc/usr_intf/pncconf/pncconf.glade:18096 -#: src/emc/usr_intf/pncconf/pncconf.glade:20201 -#: src/emc/usr_intf/pncconf/pncconf.glade:21518 -#: src/emc/usr_intf/pncconf/pncconf.glade:23314 -#: src/emc/usr_intf/pncconf/pncconf.glade:25110 -#: src/emc/usr_intf/pncconf/pncconf.glade:10345 -#: src/emc/usr_intf/pncconf/pncconf.glade:12280 -#: src/emc/usr_intf/pncconf/pncconf.glade:17434 -#: src/emc/usr_intf/pncconf/pncconf.glade:19738 -#: src/emc/usr_intf/pncconf/pncconf.glade:22013 -#: src/emc/usr_intf/pncconf/pncconf.glade:23809 -#: src/emc/usr_intf/pncconf/pncconf.glade:25605 -msgid "27:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8913 +#: src/emc/usr_intf/pncconf/pncconf.glade:13730 +#: src/emc/usr_intf/pncconf/pncconf.glade:18936 +#: src/emc/usr_intf/pncconf/pncconf.glade:20738 +#: src/emc/usr_intf/pncconf/pncconf.glade:21031 +#: src/emc/usr_intf/pncconf/pncconf.glade:22827 +#: src/emc/usr_intf/pncconf/pncconf.glade:24623 +msgid " 1:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9563 -#: src/emc/usr_intf/pncconf/pncconf.glade:12823 -#: src/emc/usr_intf/pncconf/pncconf.glade:18080 -#: src/emc/usr_intf/pncconf/pncconf.glade:20185 -#: src/emc/usr_intf/pncconf/pncconf.glade:21534 -#: src/emc/usr_intf/pncconf/pncconf.glade:23330 -#: src/emc/usr_intf/pncconf/pncconf.glade:25126 -#: src/emc/usr_intf/pncconf/pncconf.glade:10329 -#: src/emc/usr_intf/pncconf/pncconf.glade:12296 -#: src/emc/usr_intf/pncconf/pncconf.glade:17450 -#: src/emc/usr_intf/pncconf/pncconf.glade:19754 -#: src/emc/usr_intf/pncconf/pncconf.glade:21997 -#: src/emc/usr_intf/pncconf/pncconf.glade:23793 -#: src/emc/usr_intf/pncconf/pncconf.glade:25589 -msgid "25:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8927 +#: src/emc/usr_intf/pncconf/pncconf.glade:13716 +#: src/emc/usr_intf/pncconf/pncconf.glade:18922 +#: src/emc/usr_intf/pncconf/pncconf.glade:20724 +#: src/emc/usr_intf/pncconf/pncconf.glade:21045 +#: src/emc/usr_intf/pncconf/pncconf.glade:22841 +#: src/emc/usr_intf/pncconf/pncconf.glade:24637 +msgid " 3:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9936 -#: src/emc/usr_intf/pncconf/pncconf.glade:12450 -#: src/emc/usr_intf/pncconf/pncconf.glade:17707 -#: src/emc/usr_intf/pncconf/pncconf.glade:19924 -#: src/emc/usr_intf/pncconf/pncconf.glade:21795 -#: src/emc/usr_intf/pncconf/pncconf.glade:23591 -#: src/emc/usr_intf/pncconf/pncconf.glade:25387 -#: src/emc/usr_intf/pncconf/pncconf.glade:9956 -#: src/emc/usr_intf/pncconf/pncconf.glade:12669 -#: src/emc/usr_intf/pncconf/pncconf.glade:17823 -#: src/emc/usr_intf/pncconf/pncconf.glade:20015 -#: src/emc/usr_intf/pncconf/pncconf.glade:21736 -#: src/emc/usr_intf/pncconf/pncconf.glade:23532 -#: src/emc/usr_intf/pncconf/pncconf.glade:25328 -msgid "33:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8941 +#: src/emc/usr_intf/pncconf/pncconf.glade:13702 +#: src/emc/usr_intf/pncconf/pncconf.glade:18908 +#: src/emc/usr_intf/pncconf/pncconf.glade:20710 +#: src/emc/usr_intf/pncconf/pncconf.glade:21059 +#: src/emc/usr_intf/pncconf/pncconf.glade:22855 +#: src/emc/usr_intf/pncconf/pncconf.glade:24651 +msgid " 5:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9952 -#: src/emc/usr_intf/pncconf/pncconf.glade:12434 -#: src/emc/usr_intf/pncconf/pncconf.glade:17691 -#: src/emc/usr_intf/pncconf/pncconf.glade:19908 -#: src/emc/usr_intf/pncconf/pncconf.glade:21811 -#: src/emc/usr_intf/pncconf/pncconf.glade:23607 -#: src/emc/usr_intf/pncconf/pncconf.glade:25403 -#: src/emc/usr_intf/pncconf/pncconf.glade:9940 -#: src/emc/usr_intf/pncconf/pncconf.glade:12685 -#: src/emc/usr_intf/pncconf/pncconf.glade:17839 -#: src/emc/usr_intf/pncconf/pncconf.glade:20031 -#: src/emc/usr_intf/pncconf/pncconf.glade:21720 -#: src/emc/usr_intf/pncconf/pncconf.glade:23516 -#: src/emc/usr_intf/pncconf/pncconf.glade:25312 -msgid "35:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8955 +#: src/emc/usr_intf/pncconf/pncconf.glade:13688 +#: src/emc/usr_intf/pncconf/pncconf.glade:18894 +#: src/emc/usr_intf/pncconf/pncconf.glade:20696 +#: src/emc/usr_intf/pncconf/pncconf.glade:21073 +#: src/emc/usr_intf/pncconf/pncconf.glade:22869 +#: src/emc/usr_intf/pncconf/pncconf.glade:24665 +msgid " 7:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9968 -#: src/emc/usr_intf/pncconf/pncconf.glade:12418 -#: src/emc/usr_intf/pncconf/pncconf.glade:17675 -#: src/emc/usr_intf/pncconf/pncconf.glade:19892 -#: src/emc/usr_intf/pncconf/pncconf.glade:21827 -#: src/emc/usr_intf/pncconf/pncconf.glade:23623 -#: src/emc/usr_intf/pncconf/pncconf.glade:25419 -#: src/emc/usr_intf/pncconf/pncconf.glade:9924 -#: src/emc/usr_intf/pncconf/pncconf.glade:12701 -#: src/emc/usr_intf/pncconf/pncconf.glade:17855 -#: src/emc/usr_intf/pncconf/pncconf.glade:20047 -#: src/emc/usr_intf/pncconf/pncconf.glade:21704 -#: src/emc/usr_intf/pncconf/pncconf.glade:23500 -#: src/emc/usr_intf/pncconf/pncconf.glade:25296 -msgid "37:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8969 +#: src/emc/usr_intf/pncconf/pncconf.glade:13674 +#: src/emc/usr_intf/pncconf/pncconf.glade:18880 +#: src/emc/usr_intf/pncconf/pncconf.glade:20682 +#: src/emc/usr_intf/pncconf/pncconf.glade:21087 +#: src/emc/usr_intf/pncconf/pncconf.glade:22883 +#: src/emc/usr_intf/pncconf/pncconf.glade:24679 +msgid " 9:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9984 -#: src/emc/usr_intf/pncconf/pncconf.glade:12402 -#: src/emc/usr_intf/pncconf/pncconf.glade:17659 -#: src/emc/usr_intf/pncconf/pncconf.glade:19876 -#: src/emc/usr_intf/pncconf/pncconf.glade:21843 -#: src/emc/usr_intf/pncconf/pncconf.glade:23639 -#: src/emc/usr_intf/pncconf/pncconf.glade:25435 -#: src/emc/usr_intf/pncconf/pncconf.glade:9908 -#: src/emc/usr_intf/pncconf/pncconf.glade:12717 -#: src/emc/usr_intf/pncconf/pncconf.glade:17871 -#: src/emc/usr_intf/pncconf/pncconf.glade:20063 -#: src/emc/usr_intf/pncconf/pncconf.glade:21688 -#: src/emc/usr_intf/pncconf/pncconf.glade:23484 -#: src/emc/usr_intf/pncconf/pncconf.glade:25280 -msgid "39:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8983 +#: src/emc/usr_intf/pncconf/pncconf.glade:13660 +#: src/emc/usr_intf/pncconf/pncconf.glade:18866 +#: src/emc/usr_intf/pncconf/pncconf.glade:20668 +#: src/emc/usr_intf/pncconf/pncconf.glade:21101 +#: src/emc/usr_intf/pncconf/pncconf.glade:22897 +#: src/emc/usr_intf/pncconf/pncconf.glade:24693 +msgid "11:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10000 -#: src/emc/usr_intf/pncconf/pncconf.glade:12386 -#: src/emc/usr_intf/pncconf/pncconf.glade:17643 -#: src/emc/usr_intf/pncconf/pncconf.glade:19860 -#: src/emc/usr_intf/pncconf/pncconf.glade:21859 -#: src/emc/usr_intf/pncconf/pncconf.glade:23655 -#: src/emc/usr_intf/pncconf/pncconf.glade:25451 -#: src/emc/usr_intf/pncconf/pncconf.glade:9892 -#: src/emc/usr_intf/pncconf/pncconf.glade:12733 -#: src/emc/usr_intf/pncconf/pncconf.glade:17887 -#: src/emc/usr_intf/pncconf/pncconf.glade:20079 -#: src/emc/usr_intf/pncconf/pncconf.glade:21672 -#: src/emc/usr_intf/pncconf/pncconf.glade:23468 -#: src/emc/usr_intf/pncconf/pncconf.glade:25264 -msgid "41:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8997 +#: src/emc/usr_intf/pncconf/pncconf.glade:13646 +#: src/emc/usr_intf/pncconf/pncconf.glade:18852 +#: src/emc/usr_intf/pncconf/pncconf.glade:20654 +#: src/emc/usr_intf/pncconf/pncconf.glade:21115 +#: src/emc/usr_intf/pncconf/pncconf.glade:22911 +#: src/emc/usr_intf/pncconf/pncconf.glade:24707 +msgid "13:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10016 -#: src/emc/usr_intf/pncconf/pncconf.glade:12370 -#: src/emc/usr_intf/pncconf/pncconf.glade:17627 -#: src/emc/usr_intf/pncconf/pncconf.glade:19844 -#: src/emc/usr_intf/pncconf/pncconf.glade:21875 -#: src/emc/usr_intf/pncconf/pncconf.glade:23671 -#: src/emc/usr_intf/pncconf/pncconf.glade:25467 -#: src/emc/usr_intf/pncconf/pncconf.glade:9876 -#: src/emc/usr_intf/pncconf/pncconf.glade:12749 -#: src/emc/usr_intf/pncconf/pncconf.glade:17903 -#: src/emc/usr_intf/pncconf/pncconf.glade:20095 -#: src/emc/usr_intf/pncconf/pncconf.glade:21656 -#: src/emc/usr_intf/pncconf/pncconf.glade:23452 -#: src/emc/usr_intf/pncconf/pncconf.glade:25248 -msgid "43:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9011 +#: src/emc/usr_intf/pncconf/pncconf.glade:13632 +#: src/emc/usr_intf/pncconf/pncconf.glade:18838 +#: src/emc/usr_intf/pncconf/pncconf.glade:20640 +#: src/emc/usr_intf/pncconf/pncconf.glade:21129 +#: src/emc/usr_intf/pncconf/pncconf.glade:22925 +#: src/emc/usr_intf/pncconf/pncconf.glade:24721 +msgid "15:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10032 -#: src/emc/usr_intf/pncconf/pncconf.glade:12354 -#: src/emc/usr_intf/pncconf/pncconf.glade:17611 -#: src/emc/usr_intf/pncconf/pncconf.glade:19828 -#: src/emc/usr_intf/pncconf/pncconf.glade:21891 -#: src/emc/usr_intf/pncconf/pncconf.glade:23687 -#: src/emc/usr_intf/pncconf/pncconf.glade:25483 -#: src/emc/usr_intf/pncconf/pncconf.glade:9860 -#: src/emc/usr_intf/pncconf/pncconf.glade:12765 -#: src/emc/usr_intf/pncconf/pncconf.glade:17919 -#: src/emc/usr_intf/pncconf/pncconf.glade:20111 -#: src/emc/usr_intf/pncconf/pncconf.glade:21640 -#: src/emc/usr_intf/pncconf/pncconf.glade:23436 -#: src/emc/usr_intf/pncconf/pncconf.glade:25232 -msgid "45:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9025 +#: src/emc/usr_intf/pncconf/pncconf.glade:13618 +#: src/emc/usr_intf/pncconf/pncconf.glade:18824 +#: src/emc/usr_intf/pncconf/pncconf.glade:20626 +#: src/emc/usr_intf/pncconf/pncconf.glade:21143 +#: src/emc/usr_intf/pncconf/pncconf.glade:22939 +#: src/emc/usr_intf/pncconf/pncconf.glade:24735 +msgid "17:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10099 -#: src/emc/usr_intf/pncconf/pncconf.glade:12287 -#: src/emc/usr_intf/pncconf/pncconf.glade:17544 -#: src/emc/usr_intf/pncconf/pncconf.glade:19777 -#: src/emc/usr_intf/pncconf/pncconf.glade:21942 -#: src/emc/usr_intf/pncconf/pncconf.glade:23738 -#: src/emc/usr_intf/pncconf/pncconf.glade:25534 -#: src/emc/usr_intf/pncconf/pncconf.glade:9793 -#: src/emc/usr_intf/pncconf/pncconf.glade:12832 -#: src/emc/usr_intf/pncconf/pncconf.glade:17986 -#: src/emc/usr_intf/pncconf/pncconf.glade:20162 -#: src/emc/usr_intf/pncconf/pncconf.glade:21589 -#: src/emc/usr_intf/pncconf/pncconf.glade:23385 -#: src/emc/usr_intf/pncconf/pncconf.glade:25181 -msgid "47:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9039 +#: src/emc/usr_intf/pncconf/pncconf.glade:13604 +#: src/emc/usr_intf/pncconf/pncconf.glade:18810 +#: src/emc/usr_intf/pncconf/pncconf.glade:20612 +#: src/emc/usr_intf/pncconf/pncconf.glade:21157 +#: src/emc/usr_intf/pncconf/pncconf.glade:22953 +#: src/emc/usr_intf/pncconf/pncconf.glade:24749 +msgid "19:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10822 -#: src/emc/usr_intf/pncconf/pncconf.glade:11077 -#: src/emc/usr_intf/pncconf/pncconf.glade:11311 -#: src/emc/usr_intf/pncconf/pncconf.glade:11567 -#: src/emc/usr_intf/pncconf/pncconf.glade:13924 -#: src/emc/usr_intf/pncconf/pncconf.glade:14171 -#: src/emc/usr_intf/pncconf/pncconf.glade:16516 -#: src/emc/usr_intf/pncconf/pncconf.glade:16772 -#: src/emc/usr_intf/pncconf/pncconf.glade:19129 -#: src/emc/usr_intf/pncconf/pncconf.glade:19379 -#: src/emc/usr_intf/pncconf/pncconf.glade:22343 -#: src/emc/usr_intf/pncconf/pncconf.glade:22592 -#: src/emc/usr_intf/pncconf/pncconf.glade:24139 -#: src/emc/usr_intf/pncconf/pncconf.glade:24388 -#: src/emc/usr_intf/pncconf/pncconf.glade:25935 -#: src/emc/usr_intf/pncconf/pncconf.glade:26184 -#: src/emc/usr_intf/pncconf/pncconf.glade:28515 -#: src/emc/usr_intf/pncconf/pncconf.glade:28761 -#: src/emc/usr_intf/pncconf/pncconf.glade:28892 -#: src/emc/usr_intf/pncconf/pncconf.glade:29139 -#: src/emc/usr_intf/pncconf/pncconf.glade:33079 -#: src/emc/usr_intf/pncconf/pncconf.glade:33250 -#: src/emc/usr_intf/pncconf/pncconf.glade:33497 -#: src/emc/usr_intf/pncconf/pncconf.glade:38012 -#: src/emc/usr_intf/pncconf/pncconf.glade:38258 -#: src/emc/usr_intf/pncconf/pncconf.glade:38507 -#: src/emc/usr_intf/pncconf/pncconf.glade:42359 -#: src/emc/usr_intf/pncconf/pncconf.glade:42605 -#: src/emc/usr_intf/pncconf/pncconf.glade:42736 -#: src/emc/usr_intf/pncconf/pncconf.glade:42983 -#: src/emc/usr_intf/pncconf/pncconf.glade:46936 -#: src/emc/usr_intf/pncconf/pncconf.glade:49282 -#: src/emc/usr_intf/pncconf/pncconf.glade:49528 -#: src/emc/usr_intf/pncconf/pncconf.glade:49659 -#: src/emc/usr_intf/pncconf/pncconf.glade:49906 -#: src/emc/usr_intf/pncconf/pncconf.glade:53859 -#: src/emc/usr_intf/pncconf/pncconf.glade:8817 -#: src/emc/usr_intf/pncconf/pncconf.glade:9073 -#: src/emc/usr_intf/pncconf/pncconf.glade:13555 -#: src/emc/usr_intf/pncconf/pncconf.glade:13810 -#: src/emc/usr_intf/pncconf/pncconf.glade:16156 -#: src/emc/usr_intf/pncconf/pncconf.glade:16402 -#: src/emc/usr_intf/pncconf/pncconf.glade:18761 -#: src/emc/usr_intf/pncconf/pncconf.glade:19016 -#: src/emc/usr_intf/pncconf/pncconf.glade:20563 -#: src/emc/usr_intf/pncconf/pncconf.glade:20812 -#: src/emc/usr_intf/pncconf/pncconf.glade:20941 -#: src/emc/usr_intf/pncconf/pncconf.glade:21191 -#: src/emc/usr_intf/pncconf/pncconf.glade:22737 -#: src/emc/usr_intf/pncconf/pncconf.glade:22987 -#: src/emc/usr_intf/pncconf/pncconf.glade:24533 -#: src/emc/usr_intf/pncconf/pncconf.glade:24783 -#: src/emc/usr_intf/pncconf/pncconf.glade:26345 -#: src/emc/usr_intf/pncconf/pncconf.glade:26592 -#: src/emc/usr_intf/pncconf/pncconf.glade:31107 -#: src/emc/usr_intf/pncconf/pncconf.glade:31353 -#: src/emc/usr_intf/pncconf/pncconf.glade:31613 -#: src/emc/usr_intf/pncconf/pncconf.glade:35452 -#: src/emc/usr_intf/pncconf/pncconf.glade:35698 -#: src/emc/usr_intf/pncconf/pncconf.glade:35829 -#: src/emc/usr_intf/pncconf/pncconf.glade:36076 -#: src/emc/usr_intf/pncconf/pncconf.glade:40029 -#: src/emc/usr_intf/pncconf/pncconf.glade:40189 -#: src/emc/usr_intf/pncconf/pncconf.glade:40436 -#: src/emc/usr_intf/pncconf/pncconf.glade:44951 -#: src/emc/usr_intf/pncconf/pncconf.glade:45197 -#: src/emc/usr_intf/pncconf/pncconf.glade:45446 -#: src/emc/usr_intf/pncconf/pncconf.glade:47112 -#: src/emc/usr_intf/pncconf/pncconf.glade:47359 -#: src/emc/usr_intf/pncconf/pncconf.glade:51874 -#: src/emc/usr_intf/pncconf/pncconf.glade:52120 -#: src/emc/usr_intf/pncconf/pncconf.glade:52369 -#: src/emc/usr_intf/pncconf/pncconf.glade:54035 -#: src/emc/usr_intf/pncconf/pncconf.glade:54282 -#: src/emc/usr_intf/pncconf/pncconf.glade:58797 -#: src/emc/usr_intf/pncconf/pncconf.glade:59043 -#: src/emc/usr_intf/pncconf/pncconf.glade:59292 -msgid "Pin Type" +#: src/emc/usr_intf/pncconf/pncconf.glade:9053 +#: src/emc/usr_intf/pncconf/pncconf.glade:13590 +#: src/emc/usr_intf/pncconf/pncconf.glade:18796 +#: src/emc/usr_intf/pncconf/pncconf.glade:20598 +#: src/emc/usr_intf/pncconf/pncconf.glade:21171 +#: src/emc/usr_intf/pncconf/pncconf.glade:22967 +#: src/emc/usr_intf/pncconf/pncconf.glade:24763 +msgid "21:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10835 -#: src/emc/usr_intf/pncconf/pncconf.glade:11553 -#: src/emc/usr_intf/pncconf/pncconf.glade:16758 -#: src/emc/usr_intf/pncconf/pncconf.glade:19365 -#: src/emc/usr_intf/pncconf/pncconf.glade:22356 -#: src/emc/usr_intf/pncconf/pncconf.glade:24152 -#: src/emc/usr_intf/pncconf/pncconf.glade:25948 -#: src/emc/usr_intf/pncconf/pncconf.glade:9059 -#: src/emc/usr_intf/pncconf/pncconf.glade:13568 -#: src/emc/usr_intf/pncconf/pncconf.glade:18774 -#: src/emc/usr_intf/pncconf/pncconf.glade:20576 -#: src/emc/usr_intf/pncconf/pncconf.glade:21177 -#: src/emc/usr_intf/pncconf/pncconf.glade:22973 -#: src/emc/usr_intf/pncconf/pncconf.glade:24769 +#: src/emc/usr_intf/pncconf/pncconf.glade:9067 +#: src/emc/usr_intf/pncconf/pncconf.glade:13576 +#: src/emc/usr_intf/pncconf/pncconf.glade:18782 +#: src/emc/usr_intf/pncconf/pncconf.glade:20584 +#: src/emc/usr_intf/pncconf/pncconf.glade:21185 +#: src/emc/usr_intf/pncconf/pncconf.glade:22981 +#: src/emc/usr_intf/pncconf/pncconf.glade:24777 msgid "23:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10849 -#: src/emc/usr_intf/pncconf/pncconf.glade:11539 -#: src/emc/usr_intf/pncconf/pncconf.glade:16744 -#: src/emc/usr_intf/pncconf/pncconf.glade:19351 -#: src/emc/usr_intf/pncconf/pncconf.glade:22370 -#: src/emc/usr_intf/pncconf/pncconf.glade:24166 -#: src/emc/usr_intf/pncconf/pncconf.glade:25962 -#: src/emc/usr_intf/pncconf/pncconf.glade:9045 -#: src/emc/usr_intf/pncconf/pncconf.glade:13582 -#: src/emc/usr_intf/pncconf/pncconf.glade:18788 -#: src/emc/usr_intf/pncconf/pncconf.glade:20590 -#: src/emc/usr_intf/pncconf/pncconf.glade:21163 -#: src/emc/usr_intf/pncconf/pncconf.glade:22959 -#: src/emc/usr_intf/pncconf/pncconf.glade:24755 -msgid "21:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9801 +#: src/emc/usr_intf/pncconf/pncconf.glade:12840 +#: src/emc/usr_intf/pncconf/pncconf.glade:17994 +#: src/emc/usr_intf/pncconf/pncconf.glade:20170 +#: src/emc/usr_intf/pncconf/pncconf.glade:21597 +#: src/emc/usr_intf/pncconf/pncconf.glade:23393 +#: src/emc/usr_intf/pncconf/pncconf.glade:25189 +msgid "47:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10863 -#: src/emc/usr_intf/pncconf/pncconf.glade:11525 -#: src/emc/usr_intf/pncconf/pncconf.glade:16730 -#: src/emc/usr_intf/pncconf/pncconf.glade:19337 -#: src/emc/usr_intf/pncconf/pncconf.glade:22384 -#: src/emc/usr_intf/pncconf/pncconf.glade:24180 -#: src/emc/usr_intf/pncconf/pncconf.glade:25976 -#: src/emc/usr_intf/pncconf/pncconf.glade:9031 -#: src/emc/usr_intf/pncconf/pncconf.glade:13596 -#: src/emc/usr_intf/pncconf/pncconf.glade:18802 -#: src/emc/usr_intf/pncconf/pncconf.glade:20604 -#: src/emc/usr_intf/pncconf/pncconf.glade:21149 -#: src/emc/usr_intf/pncconf/pncconf.glade:22945 -#: src/emc/usr_intf/pncconf/pncconf.glade:24741 -msgid "19:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9868 +#: src/emc/usr_intf/pncconf/pncconf.glade:12773 +#: src/emc/usr_intf/pncconf/pncconf.glade:17927 +#: src/emc/usr_intf/pncconf/pncconf.glade:20119 +#: src/emc/usr_intf/pncconf/pncconf.glade:21648 +#: src/emc/usr_intf/pncconf/pncconf.glade:23444 +#: src/emc/usr_intf/pncconf/pncconf.glade:25240 +msgid "45:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10877 -#: src/emc/usr_intf/pncconf/pncconf.glade:11511 -#: src/emc/usr_intf/pncconf/pncconf.glade:16716 -#: src/emc/usr_intf/pncconf/pncconf.glade:19323 -#: src/emc/usr_intf/pncconf/pncconf.glade:22398 -#: src/emc/usr_intf/pncconf/pncconf.glade:24194 -#: src/emc/usr_intf/pncconf/pncconf.glade:25990 -#: src/emc/usr_intf/pncconf/pncconf.glade:9017 -#: src/emc/usr_intf/pncconf/pncconf.glade:13610 -#: src/emc/usr_intf/pncconf/pncconf.glade:18816 -#: src/emc/usr_intf/pncconf/pncconf.glade:20618 -#: src/emc/usr_intf/pncconf/pncconf.glade:21135 -#: src/emc/usr_intf/pncconf/pncconf.glade:22931 -#: src/emc/usr_intf/pncconf/pncconf.glade:24727 -msgid "17:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9884 +#: src/emc/usr_intf/pncconf/pncconf.glade:12757 +#: src/emc/usr_intf/pncconf/pncconf.glade:17911 +#: src/emc/usr_intf/pncconf/pncconf.glade:20103 +#: src/emc/usr_intf/pncconf/pncconf.glade:21664 +#: src/emc/usr_intf/pncconf/pncconf.glade:23460 +#: src/emc/usr_intf/pncconf/pncconf.glade:25256 +msgid "43:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11497 -#: src/emc/usr_intf/pncconf/pncconf.glade:16702 -#: src/emc/usr_intf/pncconf/pncconf.glade:19309 -#: src/emc/usr_intf/pncconf/pncconf.glade:22412 -#: src/emc/usr_intf/pncconf/pncconf.glade:24208 -#: src/emc/usr_intf/pncconf/pncconf.glade:26004 -#: src/emc/usr_intf/pncconf/pncconf.glade:9003 -#: src/emc/usr_intf/pncconf/pncconf.glade:13624 -#: src/emc/usr_intf/pncconf/pncconf.glade:18830 -#: src/emc/usr_intf/pncconf/pncconf.glade:20632 -#: src/emc/usr_intf/pncconf/pncconf.glade:21121 -#: src/emc/usr_intf/pncconf/pncconf.glade:22917 -#: src/emc/usr_intf/pncconf/pncconf.glade:24713 -msgid "15:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9900 +#: src/emc/usr_intf/pncconf/pncconf.glade:12741 +#: src/emc/usr_intf/pncconf/pncconf.glade:17895 +#: src/emc/usr_intf/pncconf/pncconf.glade:20087 +#: src/emc/usr_intf/pncconf/pncconf.glade:21680 +#: src/emc/usr_intf/pncconf/pncconf.glade:23476 +#: src/emc/usr_intf/pncconf/pncconf.glade:25272 +msgid "41:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10905 -#: src/emc/usr_intf/pncconf/pncconf.glade:11483 -#: src/emc/usr_intf/pncconf/pncconf.glade:16688 -#: src/emc/usr_intf/pncconf/pncconf.glade:19295 -#: src/emc/usr_intf/pncconf/pncconf.glade:22426 -#: src/emc/usr_intf/pncconf/pncconf.glade:24222 -#: src/emc/usr_intf/pncconf/pncconf.glade:26018 -#: src/emc/usr_intf/pncconf/pncconf.glade:8989 -#: src/emc/usr_intf/pncconf/pncconf.glade:13638 -#: src/emc/usr_intf/pncconf/pncconf.glade:18844 -#: src/emc/usr_intf/pncconf/pncconf.glade:20646 -#: src/emc/usr_intf/pncconf/pncconf.glade:21107 -#: src/emc/usr_intf/pncconf/pncconf.glade:22903 -#: src/emc/usr_intf/pncconf/pncconf.glade:24699 -msgid "13:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9916 +#: src/emc/usr_intf/pncconf/pncconf.glade:12725 +#: src/emc/usr_intf/pncconf/pncconf.glade:17879 +#: src/emc/usr_intf/pncconf/pncconf.glade:20071 +#: src/emc/usr_intf/pncconf/pncconf.glade:21696 +#: src/emc/usr_intf/pncconf/pncconf.glade:23492 +#: src/emc/usr_intf/pncconf/pncconf.glade:25288 +msgid "39:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10919 -#: src/emc/usr_intf/pncconf/pncconf.glade:11469 -#: src/emc/usr_intf/pncconf/pncconf.glade:16674 -#: src/emc/usr_intf/pncconf/pncconf.glade:19281 -#: src/emc/usr_intf/pncconf/pncconf.glade:22440 -#: src/emc/usr_intf/pncconf/pncconf.glade:24236 -#: src/emc/usr_intf/pncconf/pncconf.glade:26032 -#: src/emc/usr_intf/pncconf/pncconf.glade:8975 -#: src/emc/usr_intf/pncconf/pncconf.glade:13652 -#: src/emc/usr_intf/pncconf/pncconf.glade:18858 -#: src/emc/usr_intf/pncconf/pncconf.glade:20660 -#: src/emc/usr_intf/pncconf/pncconf.glade:21093 -#: src/emc/usr_intf/pncconf/pncconf.glade:22889 -#: src/emc/usr_intf/pncconf/pncconf.glade:24685 -msgid "11:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9932 +#: src/emc/usr_intf/pncconf/pncconf.glade:12709 +#: src/emc/usr_intf/pncconf/pncconf.glade:17863 +#: src/emc/usr_intf/pncconf/pncconf.glade:20055 +#: src/emc/usr_intf/pncconf/pncconf.glade:21712 +#: src/emc/usr_intf/pncconf/pncconf.glade:23508 +#: src/emc/usr_intf/pncconf/pncconf.glade:25304 +msgid "37:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10933 -#: src/emc/usr_intf/pncconf/pncconf.glade:11455 -#: src/emc/usr_intf/pncconf/pncconf.glade:16660 -#: src/emc/usr_intf/pncconf/pncconf.glade:19267 -#: src/emc/usr_intf/pncconf/pncconf.glade:22454 -#: src/emc/usr_intf/pncconf/pncconf.glade:24250 -#: src/emc/usr_intf/pncconf/pncconf.glade:26046 -#: src/emc/usr_intf/pncconf/pncconf.glade:8961 -#: src/emc/usr_intf/pncconf/pncconf.glade:13666 -#: src/emc/usr_intf/pncconf/pncconf.glade:18872 -#: src/emc/usr_intf/pncconf/pncconf.glade:20674 -#: src/emc/usr_intf/pncconf/pncconf.glade:21079 -#: src/emc/usr_intf/pncconf/pncconf.glade:22875 -#: src/emc/usr_intf/pncconf/pncconf.glade:24671 -msgid " 9:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9948 +#: src/emc/usr_intf/pncconf/pncconf.glade:12693 +#: src/emc/usr_intf/pncconf/pncconf.glade:17847 +#: src/emc/usr_intf/pncconf/pncconf.glade:20039 +#: src/emc/usr_intf/pncconf/pncconf.glade:21728 +#: src/emc/usr_intf/pncconf/pncconf.glade:23524 +#: src/emc/usr_intf/pncconf/pncconf.glade:25320 +msgid "35:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10947 -#: src/emc/usr_intf/pncconf/pncconf.glade:11441 -#: src/emc/usr_intf/pncconf/pncconf.glade:16646 -#: src/emc/usr_intf/pncconf/pncconf.glade:19253 -#: src/emc/usr_intf/pncconf/pncconf.glade:22468 -#: src/emc/usr_intf/pncconf/pncconf.glade:24264 -#: src/emc/usr_intf/pncconf/pncconf.glade:26060 -#: src/emc/usr_intf/pncconf/pncconf.glade:8947 -#: src/emc/usr_intf/pncconf/pncconf.glade:13680 -#: src/emc/usr_intf/pncconf/pncconf.glade:18886 -#: src/emc/usr_intf/pncconf/pncconf.glade:20688 -#: src/emc/usr_intf/pncconf/pncconf.glade:21065 -#: src/emc/usr_intf/pncconf/pncconf.glade:22861 -#: src/emc/usr_intf/pncconf/pncconf.glade:24657 -msgid " 7:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9964 +#: src/emc/usr_intf/pncconf/pncconf.glade:12677 +#: src/emc/usr_intf/pncconf/pncconf.glade:17831 +#: src/emc/usr_intf/pncconf/pncconf.glade:20023 +#: src/emc/usr_intf/pncconf/pncconf.glade:21744 +#: src/emc/usr_intf/pncconf/pncconf.glade:23540 +#: src/emc/usr_intf/pncconf/pncconf.glade:25336 +msgid "33:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10961 -#: src/emc/usr_intf/pncconf/pncconf.glade:11427 -#: src/emc/usr_intf/pncconf/pncconf.glade:16632 -#: src/emc/usr_intf/pncconf/pncconf.glade:19239 -#: src/emc/usr_intf/pncconf/pncconf.glade:22482 -#: src/emc/usr_intf/pncconf/pncconf.glade:24278 -#: src/emc/usr_intf/pncconf/pncconf.glade:26074 -#: src/emc/usr_intf/pncconf/pncconf.glade:8933 -#: src/emc/usr_intf/pncconf/pncconf.glade:13694 -#: src/emc/usr_intf/pncconf/pncconf.glade:18900 -#: src/emc/usr_intf/pncconf/pncconf.glade:20702 -#: src/emc/usr_intf/pncconf/pncconf.glade:21051 -#: src/emc/usr_intf/pncconf/pncconf.glade:22847 -#: src/emc/usr_intf/pncconf/pncconf.glade:24643 -msgid " 5:" +#: src/emc/usr_intf/pncconf/pncconf.glade:10337 +#: src/emc/usr_intf/pncconf/pncconf.glade:12304 +#: src/emc/usr_intf/pncconf/pncconf.glade:17458 +#: src/emc/usr_intf/pncconf/pncconf.glade:19762 +#: src/emc/usr_intf/pncconf/pncconf.glade:22005 +#: src/emc/usr_intf/pncconf/pncconf.glade:23801 +#: src/emc/usr_intf/pncconf/pncconf.glade:25597 +msgid "25:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10975 -#: src/emc/usr_intf/pncconf/pncconf.glade:11413 -#: src/emc/usr_intf/pncconf/pncconf.glade:16618 -#: src/emc/usr_intf/pncconf/pncconf.glade:19225 -#: src/emc/usr_intf/pncconf/pncconf.glade:22496 -#: src/emc/usr_intf/pncconf/pncconf.glade:24292 -#: src/emc/usr_intf/pncconf/pncconf.glade:26088 -#: src/emc/usr_intf/pncconf/pncconf.glade:8919 -#: src/emc/usr_intf/pncconf/pncconf.glade:13708 -#: src/emc/usr_intf/pncconf/pncconf.glade:18914 -#: src/emc/usr_intf/pncconf/pncconf.glade:20716 -#: src/emc/usr_intf/pncconf/pncconf.glade:21037 -#: src/emc/usr_intf/pncconf/pncconf.glade:22833 -#: src/emc/usr_intf/pncconf/pncconf.glade:24629 -msgid " 3:" +#: src/emc/usr_intf/pncconf/pncconf.glade:10353 +#: src/emc/usr_intf/pncconf/pncconf.glade:12288 +#: src/emc/usr_intf/pncconf/pncconf.glade:17442 +#: src/emc/usr_intf/pncconf/pncconf.glade:19746 +#: src/emc/usr_intf/pncconf/pncconf.glade:22021 +#: src/emc/usr_intf/pncconf/pncconf.glade:23817 +#: src/emc/usr_intf/pncconf/pncconf.glade:25613 +msgid "27:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10989 -#: src/emc/usr_intf/pncconf/pncconf.glade:11399 -#: src/emc/usr_intf/pncconf/pncconf.glade:16604 -#: src/emc/usr_intf/pncconf/pncconf.glade:19211 -#: src/emc/usr_intf/pncconf/pncconf.glade:22510 -#: src/emc/usr_intf/pncconf/pncconf.glade:24306 -#: src/emc/usr_intf/pncconf/pncconf.glade:26102 -#: src/emc/usr_intf/pncconf/pncconf.glade:8905 -#: src/emc/usr_intf/pncconf/pncconf.glade:13722 -#: src/emc/usr_intf/pncconf/pncconf.glade:18928 -#: src/emc/usr_intf/pncconf/pncconf.glade:20730 -#: src/emc/usr_intf/pncconf/pncconf.glade:21023 -#: src/emc/usr_intf/pncconf/pncconf.glade:22819 -#: src/emc/usr_intf/pncconf/pncconf.glade:24615 -msgid " 1:" +#: src/emc/usr_intf/pncconf/pncconf.glade:10369 +#: src/emc/usr_intf/pncconf/pncconf.glade:12272 +#: src/emc/usr_intf/pncconf/pncconf.glade:17426 +#: src/emc/usr_intf/pncconf/pncconf.glade:19730 +#: src/emc/usr_intf/pncconf/pncconf.glade:22037 +#: src/emc/usr_intf/pncconf/pncconf.glade:23833 +#: src/emc/usr_intf/pncconf/pncconf.glade:25629 +msgid "29:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:11002 -#: src/emc/usr_intf/pncconf/pncconf.glade:11065 -#: src/emc/usr_intf/pncconf/pncconf.glade:11324 -#: src/emc/usr_intf/pncconf/pncconf.glade:11386 -#: src/emc/usr_intf/pncconf/pncconf.glade:13937 -#: src/emc/usr_intf/pncconf/pncconf.glade:13999 -#: src/emc/usr_intf/pncconf/pncconf.glade:16529 -#: src/emc/usr_intf/pncconf/pncconf.glade:16591 -#: src/emc/usr_intf/pncconf/pncconf.glade:19142 -#: src/emc/usr_intf/pncconf/pncconf.glade:19198 -#: src/emc/usr_intf/pncconf/pncconf.glade:22523 -#: src/emc/usr_intf/pncconf/pncconf.glade:22580 -#: src/emc/usr_intf/pncconf/pncconf.glade:24319 -#: src/emc/usr_intf/pncconf/pncconf.glade:24376 -#: src/emc/usr_intf/pncconf/pncconf.glade:26115 -#: src/emc/usr_intf/pncconf/pncconf.glade:26172 -#: src/emc/usr_intf/pncconf/pncconf.glade:28686 -#: src/emc/usr_intf/pncconf/pncconf.glade:28749 -#: src/emc/usr_intf/pncconf/pncconf.glade:28905 -#: src/emc/usr_intf/pncconf/pncconf.glade:28967 -#: src/emc/usr_intf/pncconf/pncconf.glade:33067 -#: src/emc/usr_intf/pncconf/pncconf.glade:33263 -#: src/emc/usr_intf/pncconf/pncconf.glade:33325 -#: src/emc/usr_intf/pncconf/pncconf.glade:38183 -#: src/emc/usr_intf/pncconf/pncconf.glade:38246 -#: src/emc/usr_intf/pncconf/pncconf.glade:38520 -#: src/emc/usr_intf/pncconf/pncconf.glade:42530 -#: src/emc/usr_intf/pncconf/pncconf.glade:42593 -#: src/emc/usr_intf/pncconf/pncconf.glade:42749 -#: src/emc/usr_intf/pncconf/pncconf.glade:42811 -#: src/emc/usr_intf/pncconf/pncconf.glade:46924 -#: src/emc/usr_intf/pncconf/pncconf.glade:49453 -#: src/emc/usr_intf/pncconf/pncconf.glade:49516 -#: src/emc/usr_intf/pncconf/pncconf.glade:49672 -#: src/emc/usr_intf/pncconf/pncconf.glade:49734 -#: src/emc/usr_intf/pncconf/pncconf.glade:53847 -#: src/emc/usr_intf/pncconf/pncconf.glade:8830 -#: src/emc/usr_intf/pncconf/pncconf.glade:8892 -#: src/emc/usr_intf/pncconf/pncconf.glade:13735 -#: src/emc/usr_intf/pncconf/pncconf.glade:13798 -#: src/emc/usr_intf/pncconf/pncconf.glade:16327 -#: src/emc/usr_intf/pncconf/pncconf.glade:16390 -#: src/emc/usr_intf/pncconf/pncconf.glade:18941 -#: src/emc/usr_intf/pncconf/pncconf.glade:19004 -#: src/emc/usr_intf/pncconf/pncconf.glade:20743 -#: src/emc/usr_intf/pncconf/pncconf.glade:20800 -#: src/emc/usr_intf/pncconf/pncconf.glade:20954 -#: src/emc/usr_intf/pncconf/pncconf.glade:21010 -#: src/emc/usr_intf/pncconf/pncconf.glade:22750 -#: src/emc/usr_intf/pncconf/pncconf.glade:22806 -#: src/emc/usr_intf/pncconf/pncconf.glade:24546 -#: src/emc/usr_intf/pncconf/pncconf.glade:24602 -#: src/emc/usr_intf/pncconf/pncconf.glade:26358 -#: src/emc/usr_intf/pncconf/pncconf.glade:26420 -#: src/emc/usr_intf/pncconf/pncconf.glade:31278 -#: src/emc/usr_intf/pncconf/pncconf.glade:31341 -#: src/emc/usr_intf/pncconf/pncconf.glade:31626 -#: src/emc/usr_intf/pncconf/pncconf.glade:35623 -#: src/emc/usr_intf/pncconf/pncconf.glade:35686 -#: src/emc/usr_intf/pncconf/pncconf.glade:35842 -#: src/emc/usr_intf/pncconf/pncconf.glade:35904 -#: src/emc/usr_intf/pncconf/pncconf.glade:40017 -#: src/emc/usr_intf/pncconf/pncconf.glade:40202 -#: src/emc/usr_intf/pncconf/pncconf.glade:40264 -#: src/emc/usr_intf/pncconf/pncconf.glade:45122 -#: src/emc/usr_intf/pncconf/pncconf.glade:45185 -#: src/emc/usr_intf/pncconf/pncconf.glade:45459 -#: src/emc/usr_intf/pncconf/pncconf.glade:47125 -#: src/emc/usr_intf/pncconf/pncconf.glade:47187 -#: src/emc/usr_intf/pncconf/pncconf.glade:52045 -#: src/emc/usr_intf/pncconf/pncconf.glade:52108 -#: src/emc/usr_intf/pncconf/pncconf.glade:52382 -#: src/emc/usr_intf/pncconf/pncconf.glade:54048 -#: src/emc/usr_intf/pncconf/pncconf.glade:54110 -#: src/emc/usr_intf/pncconf/pncconf.glade:58968 -#: src/emc/usr_intf/pncconf/pncconf.glade:59031 -#: src/emc/usr_intf/pncconf/pncconf.glade:59305 -msgid "Inv" -msgstr "Odwróć" +#: src/emc/usr_intf/pncconf/pncconf.glade:10385 +#: src/emc/usr_intf/pncconf/pncconf.glade:12256 +#: src/emc/usr_intf/pncconf/pncconf.glade:17410 +#: src/emc/usr_intf/pncconf/pncconf.glade:19714 +#: src/emc/usr_intf/pncconf/pncconf.glade:22053 +#: src/emc/usr_intf/pncconf/pncconf.glade:23849 +#: src/emc/usr_intf/pncconf/pncconf.glade:25645 +msgid "31:" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:10677 +#: src/emc/usr_intf/pncconf/pncconf.glade:10689 +#: src/emc/usr_intf/pncconf/pncconf.glade:11955 +#: src/emc/usr_intf/pncconf/pncconf.glade:11967 +#: src/emc/usr_intf/pncconf/pncconf.glade:14464 +#: src/emc/usr_intf/pncconf/pncconf.glade:14476 +#: src/emc/usr_intf/pncconf/pncconf.glade:17161 +#: src/emc/usr_intf/pncconf/pncconf.glade:17173 +#: src/emc/usr_intf/pncconf/pncconf.glade:19567 +#: src/emc/usr_intf/pncconf/pncconf.glade:19579 +#: src/emc/usr_intf/pncconf/pncconf.glade:22190 +#: src/emc/usr_intf/pncconf/pncconf.glade:22202 +#: src/emc/usr_intf/pncconf/pncconf.glade:23986 +#: src/emc/usr_intf/pncconf/pncconf.glade:23998 +#: src/emc/usr_intf/pncconf/pncconf.glade:25782 +#: src/emc/usr_intf/pncconf/pncconf.glade:25794 +#: src/emc/usr_intf/pncconf/pncconf.glade:28287 +#: src/emc/usr_intf/pncconf/pncconf.glade:28299 +#: src/emc/usr_intf/pncconf/pncconf.glade:29415 +#: src/emc/usr_intf/pncconf/pncconf.glade:29427 +#: src/emc/usr_intf/pncconf/pncconf.glade:32869 +#: src/emc/usr_intf/pncconf/pncconf.glade:33760 +#: src/emc/usr_intf/pncconf/pncconf.glade:33772 +#: src/emc/usr_intf/pncconf/pncconf.glade:37771 +#: src/emc/usr_intf/pncconf/pncconf.glade:37783 +#: src/emc/usr_intf/pncconf/pncconf.glade:38777 +#: src/emc/usr_intf/pncconf/pncconf.glade:38789 +#: src/emc/usr_intf/pncconf/pncconf.glade:42131 +#: src/emc/usr_intf/pncconf/pncconf.glade:42143 +#: src/emc/usr_intf/pncconf/pncconf.glade:43259 +#: src/emc/usr_intf/pncconf/pncconf.glade:43271 +#: src/emc/usr_intf/pncconf/pncconf.glade:46702 +#: src/emc/usr_intf/pncconf/pncconf.glade:46714 +#: src/emc/usr_intf/pncconf/pncconf.glade:49054 +#: src/emc/usr_intf/pncconf/pncconf.glade:49066 +#: src/emc/usr_intf/pncconf/pncconf.glade:50182 +#: src/emc/usr_intf/pncconf/pncconf.glade:50194 +#: src/emc/usr_intf/pncconf/pncconf.glade:53625 +#: src/emc/usr_intf/pncconf/pncconf.glade:53637 +#: src/emc/usr_intf/pncconf/pncconf.glade:55977 +#: src/emc/usr_intf/pncconf/pncconf.glade:55989 +#: src/emc/usr_intf/pncconf/pncconf.glade:57105 +#: src/emc/usr_intf/pncconf/pncconf.glade:57117 +#: src/emc/usr_intf/pncconf/pncconf.glade:60548 +#: src/emc/usr_intf/pncconf/pncconf.glade:60560 +msgid "function" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:10703 +#: src/emc/usr_intf/pncconf/pncconf.glade:11940 +#: src/emc/usr_intf/pncconf/pncconf.glade:14449 +#: src/emc/usr_intf/pncconf/pncconf.glade:17146 +#: src/emc/usr_intf/pncconf/pncconf.glade:19553 +#: src/emc/usr_intf/pncconf/pncconf.glade:22217 +#: src/emc/usr_intf/pncconf/pncconf.glade:24013 +#: src/emc/usr_intf/pncconf/pncconf.glade:25809 +msgid "Launch test panel" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:11198 -#: src/emc/usr_intf/pncconf/pncconf.glade:11214 +#: src/emc/usr_intf/pncconf/pncconf.glade:11192 +#: src/emc/usr_intf/pncconf/pncconf.glade:11204 +#: src/emc/usr_intf/pncconf/pncconf.glade:11440 +#: src/emc/usr_intf/pncconf/pncconf.glade:11454 +#: src/emc/usr_intf/pncconf/pncconf.glade:13949 +#: src/emc/usr_intf/pncconf/pncconf.glade:13963 +#: src/emc/usr_intf/pncconf/pncconf.glade:16645 +#: src/emc/usr_intf/pncconf/pncconf.glade:16659 +#: src/emc/usr_intf/pncconf/pncconf.glade:19190 +#: src/emc/usr_intf/pncconf/pncconf.glade:19204 +#: src/emc/usr_intf/pncconf/pncconf.glade:22567 +#: src/emc/usr_intf/pncconf/pncconf.glade:22579 +#: src/emc/usr_intf/pncconf/pncconf.glade:24363 +#: src/emc/usr_intf/pncconf/pncconf.glade:24375 +#: src/emc/usr_intf/pncconf/pncconf.glade:26159 +#: src/emc/usr_intf/pncconf/pncconf.glade:26171 +#: src/emc/usr_intf/pncconf/pncconf.glade:28772 +#: src/emc/usr_intf/pncconf/pncconf.glade:28784 +#: src/emc/usr_intf/pncconf/pncconf.glade:28917 +#: src/emc/usr_intf/pncconf/pncconf.glade:28931 +#: src/emc/usr_intf/pncconf/pncconf.glade:33102 +#: src/emc/usr_intf/pncconf/pncconf.glade:33275 +#: src/emc/usr_intf/pncconf/pncconf.glade:33289 +#: src/emc/usr_intf/pncconf/pncconf.glade:38269 +#: src/emc/usr_intf/pncconf/pncconf.glade:38281 +#: src/emc/usr_intf/pncconf/pncconf.glade:38532 +#: src/emc/usr_intf/pncconf/pncconf.glade:38546 +#: src/emc/usr_intf/pncconf/pncconf.glade:42616 +#: src/emc/usr_intf/pncconf/pncconf.glade:42628 +#: src/emc/usr_intf/pncconf/pncconf.glade:42761 +#: src/emc/usr_intf/pncconf/pncconf.glade:42775 +#: src/emc/usr_intf/pncconf/pncconf.glade:46947 +#: src/emc/usr_intf/pncconf/pncconf.glade:46959 +#: src/emc/usr_intf/pncconf/pncconf.glade:49539 +#: src/emc/usr_intf/pncconf/pncconf.glade:49551 +#: src/emc/usr_intf/pncconf/pncconf.glade:49684 +#: src/emc/usr_intf/pncconf/pncconf.glade:49698 +#: src/emc/usr_intf/pncconf/pncconf.glade:53870 +#: src/emc/usr_intf/pncconf/pncconf.glade:53882 +#: src/emc/usr_intf/pncconf/pncconf.glade:56462 +#: src/emc/usr_intf/pncconf/pncconf.glade:56474 +#: src/emc/usr_intf/pncconf/pncconf.glade:56607 +#: src/emc/usr_intf/pncconf/pncconf.glade:56621 +#: src/emc/usr_intf/pncconf/pncconf.glade:60793 +#: src/emc/usr_intf/pncconf/pncconf.glade:60805 +msgid "Num" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:11222 msgid "" " I/O\n" "Connector 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:13811 -#: src/emc/usr_intf/pncconf/pncconf.glade:13827 +#: src/emc/usr_intf/pncconf/pncconf.glade:13835 msgid "" " I/O\n" " Connector 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:14012 -#: src/emc/usr_intf/pncconf/pncconf.glade:14039 -#: src/emc/usr_intf/pncconf/pncconf.glade:14053 -#: src/emc/usr_intf/pncconf/pncconf.glade:28632 -#: src/emc/usr_intf/pncconf/pncconf.glade:28646 -#: src/emc/usr_intf/pncconf/pncconf.glade:28673 -#: src/emc/usr_intf/pncconf/pncconf.glade:28980 -#: src/emc/usr_intf/pncconf/pncconf.glade:29007 -#: src/emc/usr_intf/pncconf/pncconf.glade:29021 -#: src/emc/usr_intf/pncconf/pncconf.glade:32951 -#: src/emc/usr_intf/pncconf/pncconf.glade:32965 -#: src/emc/usr_intf/pncconf/pncconf.glade:32992 -#: src/emc/usr_intf/pncconf/pncconf.glade:33338 -#: src/emc/usr_intf/pncconf/pncconf.glade:33365 -#: src/emc/usr_intf/pncconf/pncconf.glade:33379 -#: src/emc/usr_intf/pncconf/pncconf.glade:38129 -#: src/emc/usr_intf/pncconf/pncconf.glade:38143 -#: src/emc/usr_intf/pncconf/pncconf.glade:38170 -#: src/emc/usr_intf/pncconf/pncconf.glade:38594 -#: src/emc/usr_intf/pncconf/pncconf.glade:38621 -#: src/emc/usr_intf/pncconf/pncconf.glade:38635 -#: src/emc/usr_intf/pncconf/pncconf.glade:42476 -#: src/emc/usr_intf/pncconf/pncconf.glade:42490 -#: src/emc/usr_intf/pncconf/pncconf.glade:42517 -#: src/emc/usr_intf/pncconf/pncconf.glade:42824 -#: src/emc/usr_intf/pncconf/pncconf.glade:42851 -#: src/emc/usr_intf/pncconf/pncconf.glade:42865 -#: src/emc/usr_intf/pncconf/pncconf.glade:46808 -#: src/emc/usr_intf/pncconf/pncconf.glade:46822 -#: src/emc/usr_intf/pncconf/pncconf.glade:46849 -#: src/emc/usr_intf/pncconf/pncconf.glade:49399 -#: src/emc/usr_intf/pncconf/pncconf.glade:49413 -#: src/emc/usr_intf/pncconf/pncconf.glade:49440 -#: src/emc/usr_intf/pncconf/pncconf.glade:49747 -#: src/emc/usr_intf/pncconf/pncconf.glade:49774 -#: src/emc/usr_intf/pncconf/pncconf.glade:49788 -#: src/emc/usr_intf/pncconf/pncconf.glade:53731 -#: src/emc/usr_intf/pncconf/pncconf.glade:53745 -#: src/emc/usr_intf/pncconf/pncconf.glade:53772 -#: src/emc/usr_intf/pncconf/pncconf.glade:16273 -#: src/emc/usr_intf/pncconf/pncconf.glade:16287 -#: src/emc/usr_intf/pncconf/pncconf.glade:16314 -#: src/emc/usr_intf/pncconf/pncconf.glade:26433 -#: src/emc/usr_intf/pncconf/pncconf.glade:26460 -#: src/emc/usr_intf/pncconf/pncconf.glade:26474 -#: src/emc/usr_intf/pncconf/pncconf.glade:31224 -#: src/emc/usr_intf/pncconf/pncconf.glade:31238 -#: src/emc/usr_intf/pncconf/pncconf.glade:31265 -#: src/emc/usr_intf/pncconf/pncconf.glade:31700 -#: src/emc/usr_intf/pncconf/pncconf.glade:31727 -#: src/emc/usr_intf/pncconf/pncconf.glade:31741 -#: src/emc/usr_intf/pncconf/pncconf.glade:35569 -#: src/emc/usr_intf/pncconf/pncconf.glade:35583 -#: src/emc/usr_intf/pncconf/pncconf.glade:35610 -#: src/emc/usr_intf/pncconf/pncconf.glade:35917 -#: src/emc/usr_intf/pncconf/pncconf.glade:35944 -#: src/emc/usr_intf/pncconf/pncconf.glade:35958 -#: src/emc/usr_intf/pncconf/pncconf.glade:39901 -#: src/emc/usr_intf/pncconf/pncconf.glade:39915 -#: src/emc/usr_intf/pncconf/pncconf.glade:39942 -#: src/emc/usr_intf/pncconf/pncconf.glade:40277 -#: src/emc/usr_intf/pncconf/pncconf.glade:40304 -#: src/emc/usr_intf/pncconf/pncconf.glade:40318 -#: src/emc/usr_intf/pncconf/pncconf.glade:45068 -#: src/emc/usr_intf/pncconf/pncconf.glade:45082 -#: src/emc/usr_intf/pncconf/pncconf.glade:45109 -#: src/emc/usr_intf/pncconf/pncconf.glade:45533 -#: src/emc/usr_intf/pncconf/pncconf.glade:45560 -#: src/emc/usr_intf/pncconf/pncconf.glade:45574 -#: src/emc/usr_intf/pncconf/pncconf.glade:47200 -#: src/emc/usr_intf/pncconf/pncconf.glade:47227 -#: src/emc/usr_intf/pncconf/pncconf.glade:47241 -#: src/emc/usr_intf/pncconf/pncconf.glade:51991 -#: src/emc/usr_intf/pncconf/pncconf.glade:52005 -#: src/emc/usr_intf/pncconf/pncconf.glade:52032 -#: src/emc/usr_intf/pncconf/pncconf.glade:52456 -#: src/emc/usr_intf/pncconf/pncconf.glade:52483 -#: src/emc/usr_intf/pncconf/pncconf.glade:52497 -#: src/emc/usr_intf/pncconf/pncconf.glade:54123 -#: src/emc/usr_intf/pncconf/pncconf.glade:54150 -#: src/emc/usr_intf/pncconf/pncconf.glade:54164 -#: src/emc/usr_intf/pncconf/pncconf.glade:58914 -#: src/emc/usr_intf/pncconf/pncconf.glade:58928 -#: src/emc/usr_intf/pncconf/pncconf.glade:58955 -#: src/emc/usr_intf/pncconf/pncconf.glade:59379 -#: src/emc/usr_intf/pncconf/pncconf.glade:59406 -#: src/emc/usr_intf/pncconf/pncconf.glade:59420 +#: src/emc/usr_intf/pncconf/pncconf.glade:16281 +#: src/emc/usr_intf/pncconf/pncconf.glade:16295 +#: src/emc/usr_intf/pncconf/pncconf.glade:16322 +#: src/emc/usr_intf/pncconf/pncconf.glade:26441 +#: src/emc/usr_intf/pncconf/pncconf.glade:26468 +#: src/emc/usr_intf/pncconf/pncconf.glade:26482 +#: src/emc/usr_intf/pncconf/pncconf.glade:31232 +#: src/emc/usr_intf/pncconf/pncconf.glade:31246 +#: src/emc/usr_intf/pncconf/pncconf.glade:31273 +#: src/emc/usr_intf/pncconf/pncconf.glade:31708 +#: src/emc/usr_intf/pncconf/pncconf.glade:31735 +#: src/emc/usr_intf/pncconf/pncconf.glade:31749 +#: src/emc/usr_intf/pncconf/pncconf.glade:35577 +#: src/emc/usr_intf/pncconf/pncconf.glade:35591 +#: src/emc/usr_intf/pncconf/pncconf.glade:35618 +#: src/emc/usr_intf/pncconf/pncconf.glade:35925 +#: src/emc/usr_intf/pncconf/pncconf.glade:35952 +#: src/emc/usr_intf/pncconf/pncconf.glade:35966 +#: src/emc/usr_intf/pncconf/pncconf.glade:39909 +#: src/emc/usr_intf/pncconf/pncconf.glade:39923 +#: src/emc/usr_intf/pncconf/pncconf.glade:39950 +#: src/emc/usr_intf/pncconf/pncconf.glade:40285 +#: src/emc/usr_intf/pncconf/pncconf.glade:40312 +#: src/emc/usr_intf/pncconf/pncconf.glade:40326 +#: src/emc/usr_intf/pncconf/pncconf.glade:45076 +#: src/emc/usr_intf/pncconf/pncconf.glade:45090 +#: src/emc/usr_intf/pncconf/pncconf.glade:45117 +#: src/emc/usr_intf/pncconf/pncconf.glade:45541 +#: src/emc/usr_intf/pncconf/pncconf.glade:45568 +#: src/emc/usr_intf/pncconf/pncconf.glade:45582 +#: src/emc/usr_intf/pncconf/pncconf.glade:47208 +#: src/emc/usr_intf/pncconf/pncconf.glade:47235 +#: src/emc/usr_intf/pncconf/pncconf.glade:47249 +#: src/emc/usr_intf/pncconf/pncconf.glade:51999 +#: src/emc/usr_intf/pncconf/pncconf.glade:52013 +#: src/emc/usr_intf/pncconf/pncconf.glade:52040 +#: src/emc/usr_intf/pncconf/pncconf.glade:52464 +#: src/emc/usr_intf/pncconf/pncconf.glade:52491 +#: src/emc/usr_intf/pncconf/pncconf.glade:52505 +#: src/emc/usr_intf/pncconf/pncconf.glade:54131 +#: src/emc/usr_intf/pncconf/pncconf.glade:54158 +#: src/emc/usr_intf/pncconf/pncconf.glade:54172 +#: src/emc/usr_intf/pncconf/pncconf.glade:58922 +#: src/emc/usr_intf/pncconf/pncconf.glade:58936 +#: src/emc/usr_intf/pncconf/pncconf.glade:58963 +#: src/emc/usr_intf/pncconf/pncconf.glade:59387 +#: src/emc/usr_intf/pncconf/pncconf.glade:59414 +#: src/emc/usr_intf/pncconf/pncconf.glade:59428 msgid " " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:16403 -#: src/emc/usr_intf/pncconf/pncconf.glade:16419 +#: src/emc/usr_intf/pncconf/pncconf.glade:16427 msgid "" " I/O\n" " Connector 4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:19017 -#: src/emc/usr_intf/pncconf/pncconf.glade:19033 +#: src/emc/usr_intf/pncconf/pncconf.glade:19041 msgid "" " I/O\n" " Connector 5" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:20813 -#: src/emc/usr_intf/pncconf/pncconf.glade:20829 +#: src/emc/usr_intf/pncconf/pncconf.glade:20837 msgid "" " I/O\n" "Connector 6" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:22609 -#: src/emc/usr_intf/pncconf/pncconf.glade:22625 +#: src/emc/usr_intf/pncconf/pncconf.glade:22633 msgid "" " I/O\n" "Connector 7" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:24405 -#: src/emc/usr_intf/pncconf/pncconf.glade:24421 +#: src/emc/usr_intf/pncconf/pncconf.glade:24429 msgid "" " I/O\n" "Connector 8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:26201 -#: src/emc/usr_intf/pncconf/pncconf.glade:26217 +#: src/emc/usr_intf/pncconf/pncconf.glade:26225 msgid "" " I/O\n" " Connector 9" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:28775 -#: src/emc/usr_intf/pncconf/pncconf.glade:35696 -#: src/emc/usr_intf/pncconf/pncconf.glade:42619 -#: src/emc/usr_intf/pncconf/pncconf.glade:49542 -#: src/emc/usr_intf/pncconf/pncconf.glade:28791 -#: src/emc/usr_intf/pncconf/pncconf.glade:35712 -#: src/emc/usr_intf/pncconf/pncconf.glade:42635 -#: src/emc/usr_intf/pncconf/pncconf.glade:49558 -#: src/emc/usr_intf/pncconf/pncconf.glade:56481 -msgid "page 1" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:31354 -#: src/emc/usr_intf/pncconf/pncconf.glade:38275 -#: src/emc/usr_intf/pncconf/pncconf.glade:45198 -#: src/emc/usr_intf/pncconf/pncconf.glade:52121 -#: src/emc/usr_intf/pncconf/pncconf.glade:31370 -#: src/emc/usr_intf/pncconf/pncconf.glade:38291 -#: src/emc/usr_intf/pncconf/pncconf.glade:45214 -#: src/emc/usr_intf/pncconf/pncconf.glade:52137 -#: src/emc/usr_intf/pncconf/pncconf.glade:59060 +#: src/emc/usr_intf/pncconf/pncconf.glade:31378 +#: src/emc/usr_intf/pncconf/pncconf.glade:38299 +#: src/emc/usr_intf/pncconf/pncconf.glade:45222 +#: src/emc/usr_intf/pncconf/pncconf.glade:52145 +#: src/emc/usr_intf/pncconf/pncconf.glade:59068 msgid "page 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:33107 -#: src/emc/usr_intf/pncconf/pncconf.glade:40030 -#: src/emc/usr_intf/pncconf/pncconf.glade:46953 -#: src/emc/usr_intf/pncconf/pncconf.glade:53876 -#: src/emc/usr_intf/pncconf/pncconf.glade:33123 -#: src/emc/usr_intf/pncconf/pncconf.glade:40046 -#: src/emc/usr_intf/pncconf/pncconf.glade:46969 -#: src/emc/usr_intf/pncconf/pncconf.glade:53892 -#: src/emc/usr_intf/pncconf/pncconf.glade:60815 +#: src/emc/usr_intf/pncconf/pncconf.glade:33131 +#: src/emc/usr_intf/pncconf/pncconf.glade:40054 +#: src/emc/usr_intf/pncconf/pncconf.glade:46977 +#: src/emc/usr_intf/pncconf/pncconf.glade:53900 +#: src/emc/usr_intf/pncconf/pncconf.glade:60823 msgid "page 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:33123 -#: src/emc/usr_intf/pncconf/pncconf.glade:33139 +#: src/emc/usr_intf/pncconf/pncconf.glade:33147 msgid "Smart Serial 0" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:40046 -#: src/emc/usr_intf/pncconf/pncconf.glade:40062 +#: src/emc/usr_intf/pncconf/pncconf.glade:40070 msgid "Smart Serial 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:46969 -#: src/emc/usr_intf/pncconf/pncconf.glade:46985 +#: src/emc/usr_intf/pncconf/pncconf.glade:46993 msgid "Smart Serial 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53892 -#: src/emc/usr_intf/pncconf/pncconf.glade:53908 +#: src/emc/usr_intf/pncconf/pncconf.glade:53916 msgid "Smart Serial 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53914 -#: src/emc/usr_intf/pncconf/pncconf.glade:60853 +#: src/emc/usr_intf/pncconf/pncconf.glade:60839 +msgid "Smart Serial 4" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:60861 msgid "First Parallel Port Setup" msgstr "Ustawienia Pierwszego Portu Szeregowego" -#: src/emc/usr_intf/pncconf/pncconf.glade:53998 -#: src/emc/usr_intf/pncconf/pncconf.glade:62921 -msgid "Outputs (PC to Machine):" -msgstr "Wyjścia (PC do MAszyny):" +#: src/emc/usr_intf/pncconf/pncconf.glade:60946 +msgid "Launch Test Panel" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:54552 -#: src/emc/usr_intf/pncconf/pncconf.glade:62366 +#: src/emc/usr_intf/pncconf/pncconf.glade:62374 msgid "Inputs (Machine to PC):" msgstr "Wejścia (Maszyna do PC):" -#: src/emc/usr_intf/pncconf/pncconf.glade:55977 -#: src/emc/usr_intf/pncconf/pncconf.glade:60938 -msgid "Launch Test Panel" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:62929 +msgid "Outputs (PC to Machine):" +msgstr "Wyjścia (PC do MAszyny):" -#: src/emc/usr_intf/pncconf/pncconf.glade:56003 -#: src/emc/usr_intf/pncconf/pncconf.glade:62942 +#: src/emc/usr_intf/pncconf/pncconf.glade:62950 msgid "X Axis Motor/Encoder Configuration" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56091 -#: src/emc/usr_intf/pncconf/pncconf.glade:63185 -msgid "D" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63005 +msgid "Max Output" +msgstr "Maks. Wyjście" -#: src/emc/usr_intf/pncconf/pncconf.glade:56104 -#: src/emc/usr_intf/pncconf/pncconf.glade:63172 -msgid "I" +#: src/emc/usr_intf/pncconf/pncconf.glade:63070 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56117 -#: src/emc/usr_intf/pncconf/pncconf.glade:63161 -msgid "P" +#: src/emc/usr_intf/pncconf/pncconf.glade:63083 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56128 -#: src/emc/usr_intf/pncconf/pncconf.glade:60917 -#: src/emc/usr_intf/pncconf/pncconf.glade:62202 -#: src/emc/usr_intf/pncconf/pncconf.glade:63103 -#: src/emc/usr_intf/pncconf/pncconf.glade:64388 -#: src/emc/usr_intf/pncconf/pncconf.glade:65265 -#: src/emc/usr_intf/pncconf/pncconf.glade:63148 -#: src/emc/usr_intf/pncconf/pncconf.glade:68030 -#: src/emc/usr_intf/pncconf/pncconf.glade:68930 -#: src/emc/usr_intf/pncconf/pncconf.glade:70215 -#: src/emc/usr_intf/pncconf/pncconf.glade:71116 -#: src/emc/usr_intf/pncconf/pncconf.glade:72373 -msgid "Bias" +#: src/emc/usr_intf/pncconf/pncconf.glade:63096 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF0" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56141 -#: src/emc/usr_intf/pncconf/pncconf.glade:63135 +#: src/emc/usr_intf/pncconf/pncconf.glade:63143 msgid "Deadband" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56188 -#: src/emc/usr_intf/pncconf/pncconf.glade:61128 -#: src/emc/usr_intf/pncconf/pncconf.glade:61991 -#: src/emc/usr_intf/pncconf/pncconf.glade:63314 -#: src/emc/usr_intf/pncconf/pncconf.glade:64177 -#: src/emc/usr_intf/pncconf/pncconf.glade:65470 -#: src/emc/usr_intf/pncconf/pncconf.glade:63088 -#: src/emc/usr_intf/pncconf/pncconf.glade:67819 -#: src/emc/usr_intf/pncconf/pncconf.glade:69141 -#: src/emc/usr_intf/pncconf/pncconf.glade:70004 -#: src/emc/usr_intf/pncconf/pncconf.glade:71327 -#: src/emc/usr_intf/pncconf/pncconf.glade:72168 -msgid "FF0" +#: src/emc/usr_intf/pncconf/pncconf.glade:63156 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Bias" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56201 -#: src/emc/usr_intf/pncconf/pncconf.glade:61118 -#: src/emc/usr_intf/pncconf/pncconf.glade:62001 -#: src/emc/usr_intf/pncconf/pncconf.glade:63304 -#: src/emc/usr_intf/pncconf/pncconf.glade:64187 -#: src/emc/usr_intf/pncconf/pncconf.glade:65460 -#: src/emc/usr_intf/pncconf/pncconf.glade:63075 -#: src/emc/usr_intf/pncconf/pncconf.glade:67829 -#: src/emc/usr_intf/pncconf/pncconf.glade:69131 -#: src/emc/usr_intf/pncconf/pncconf.glade:70014 -#: src/emc/usr_intf/pncconf/pncconf.glade:71317 -#: src/emc/usr_intf/pncconf/pncconf.glade:72178 -msgid "FF1" +#: src/emc/usr_intf/pncconf/pncconf.glade:63169 +msgid "P" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56214 -#: src/emc/usr_intf/pncconf/pncconf.glade:61108 -#: src/emc/usr_intf/pncconf/pncconf.glade:62011 -#: src/emc/usr_intf/pncconf/pncconf.glade:63294 -#: src/emc/usr_intf/pncconf/pncconf.glade:64197 -#: src/emc/usr_intf/pncconf/pncconf.glade:65450 -#: src/emc/usr_intf/pncconf/pncconf.glade:63062 -#: src/emc/usr_intf/pncconf/pncconf.glade:67839 -#: src/emc/usr_intf/pncconf/pncconf.glade:69121 -#: src/emc/usr_intf/pncconf/pncconf.glade:70024 -#: src/emc/usr_intf/pncconf/pncconf.glade:71307 -#: src/emc/usr_intf/pncconf/pncconf.glade:72188 -msgid "FF2" +#: src/emc/usr_intf/pncconf/pncconf.glade:63180 +msgid "I" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56282 -#: src/emc/usr_intf/pncconf/pncconf.glade:63250 -msgid "Servo Info" +#: src/emc/usr_intf/pncconf/pncconf.glade:63193 +msgid "D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56362 -msgid "Spindle Max Output:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63258 +msgid "Servo Info" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56412 -msgid "Spindle Max limit:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63337 +msgid "3pwm Scale:" +msgstr "Skala 3pwm:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63348 +msgid "3pwm Deadtime:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56426 -msgid "Spindle Min Limit:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63361 +msgid "Quad Pulses / Rev:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56456 -#: src/emc/usr_intf/pncconf/pncconf.glade:63430 +#: src/emc/usr_intf/pncconf/pncconf.glade:63438 msgid "" "Open Loop\n" " Test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56557 -#: src/emc/usr_intf/pncconf/pncconf.glade:63353 -msgid "Quad Pulses / Rev:" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:56572 -msgid "Dac Max Output:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63462 +msgid "Analog Min Limit:" +msgstr "Analogowy limit min.:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56586 -msgid "Dac Output Scale:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63476 +msgid "Analog Max limit:" +msgstr "Analogowy limit maks.:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56599 -#: src/emc/usr_intf/pncconf/pncconf.glade:63340 -msgid "3pwm Deadtime:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63490 +msgid "Analog Max Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56612 -#: src/emc/usr_intf/pncconf/pncconf.glade:63329 -msgid "3pwm Scale:" -msgstr "Skala 3pwm:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:56626 -#: src/emc/usr_intf/pncconf/pncconf.glade:63546 +#: src/emc/usr_intf/pncconf/pncconf.glade:63554 msgid "Output Info" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56691 -#: src/emc/usr_intf/pncconf/pncconf.glade:63707 -msgid "Driver Type:" -msgstr "Typ sterownika:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63603 +msgid "Step On-Time" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56735 -#: src/emc/usr_intf/pncconf/pncconf.glade:63664 -msgid "Direction Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:63616 +msgid "Step Space" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56748 -#: src/emc/usr_intf/pncconf/pncconf.glade:63651 +#: src/emc/usr_intf/pncconf/pncconf.glade:63659 msgid "Direction Hold" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56791 -#: src/emc/usr_intf/pncconf/pncconf.glade:63608 -msgid "Step Space" +#: src/emc/usr_intf/pncconf/pncconf.glade:63672 +msgid "Direction Setup" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56804 -#: src/emc/usr_intf/pncconf/pncconf.glade:63595 -msgid "Step On-Time" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63715 +msgid "Driver Type:" +msgstr "Typ sterownika:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56820 -#: src/emc/usr_intf/pncconf/pncconf.glade:63740 +#: src/emc/usr_intf/pncconf/pncconf.glade:63748 msgid "Stepper Info" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56871 -#: src/emc/usr_intf/pncconf/pncconf.glade:63791 +#: src/emc/usr_intf/pncconf/pncconf.glade:63800 msgid "No feedback" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56881 -#: src/emc/usr_intf/pncconf/pncconf.glade:63801 +#: src/emc/usr_intf/pncconf/pncconf.glade:63810 msgid "Absolute Feedback" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56895 -#: src/emc/usr_intf/pncconf/pncconf.glade:63815 +#: src/emc/usr_intf/pncconf/pncconf.glade:63824 msgid "Incremental Feedback" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56909 -#: src/emc/usr_intf/pncconf/pncconf.glade:63829 +#: src/emc/usr_intf/pncconf/pncconf.glade:63838 msgid "Incremental Encoder" msgstr "Enkoder Przyrostowy" -#: src/emc/usr_intf/pncconf/pncconf.glade:56921 -#: src/emc/usr_intf/pncconf/pncconf.glade:63841 +#: src/emc/usr_intf/pncconf/pncconf.glade:63850 msgid "Hall sensors" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56933 -#: src/emc/usr_intf/pncconf/pncconf.glade:63853 +#: src/emc/usr_intf/pncconf/pncconf.glade:63862 msgid "Fanuc Red Cap " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56945 -#: src/emc/usr_intf/pncconf/pncconf.glade:63865 +#: src/emc/usr_intf/pncconf/pncconf.glade:63874 msgid "Use encoder Index" msgstr "Użyj indeksu enkodera" -#: src/emc/usr_intf/pncconf/pncconf.glade:56976 -#: src/emc/usr_intf/pncconf/pncconf.glade:63896 +#: src/emc/usr_intf/pncconf/pncconf.glade:63905 msgid "Input Options" msgstr "Opcje Wejścia" -#: src/emc/usr_intf/pncconf/pncconf.glade:57000 -#: src/emc/usr_intf/pncconf/pncconf.glade:63920 +#: src/emc/usr_intf/pncconf/pncconf.glade:63929 msgid "Digital instead of PWM outputs" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57009 -#: src/emc/usr_intf/pncconf/pncconf.glade:63929 +#: src/emc/usr_intf/pncconf/pncconf.glade:63938 msgid "6 outputs instead of 3 " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57021 -#: src/emc/usr_intf/pncconf/pncconf.glade:63941 +#: src/emc/usr_intf/pncconf/pncconf.glade:63950 msgid "Force Trapezoid Mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57033 -#: src/emc/usr_intf/pncconf/pncconf.glade:63953 +#: src/emc/usr_intf/pncconf/pncconf.glade:63962 msgid "Emulate feedback " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57045 -#: src/emc/usr_intf/pncconf/pncconf.glade:63965 +#: src/emc/usr_intf/pncconf/pncconf.glade:63974 msgid "Emulated Hall sensors" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57058 -#: src/emc/usr_intf/pncconf/pncconf.glade:63978 +#: src/emc/usr_intf/pncconf/pncconf.glade:63987 msgid "Emulated Fanuc Red Cap" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57085 -#: src/emc/usr_intf/pncconf/pncconf.glade:64005 +#: src/emc/usr_intf/pncconf/pncconf.glade:64014 msgid "8i20 Max Current" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57119 -#: src/emc/usr_intf/pncconf/pncconf.glade:64039 +#: src/emc/usr_intf/pncconf/pncconf.glade:64048 msgid "Output Options" msgstr "Opcje Wyjścia" -#: src/emc/usr_intf/pncconf/pncconf.glade:57153 -#: src/emc/usr_intf/pncconf/pncconf.glade:64254 -msgid "Poles" -msgstr "Pola" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57163 -#: src/emc/usr_intf/pncconf/pncconf.glade:64244 -msgid "Encoder-offset" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57173 -#: src/emc/usr_intf/pncconf/pncconf.glade:64234 -msgid "Drive-offset" +#: src/emc/usr_intf/pncconf/pncconf.glade:64103 +msgid "alignment current" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57183 -#: src/emc/usr_intf/pncconf/pncconf.glade:64224 -msgid "output-pattern" +#: src/emc/usr_intf/pncconf/pncconf.glade:64113 +msgid "lead angle" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57193 -#: src/emc/usr_intf/pncconf/pncconf.glade:64214 +#: src/emc/usr_intf/pncconf/pncconf.glade:64213 +msgid "Reverse" +msgstr "Odwróc" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64223 msgid "Input-pattern" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57203 -#: src/emc/usr_intf/pncconf/pncconf.glade:64204 -msgid "Reverse" -msgstr "Odwróc" +#: src/emc/usr_intf/pncconf/pncconf.glade:64233 +msgid "output-pattern" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57303 -#: src/emc/usr_intf/pncconf/pncconf.glade:64104 -msgid "lead angle" +#: src/emc/usr_intf/pncconf/pncconf.glade:64243 +msgid "Drive-offset" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57313 -#: src/emc/usr_intf/pncconf/pncconf.glade:64094 -msgid "alignment current" +#: src/emc/usr_intf/pncconf/pncconf.glade:64253 +msgid "Encoder-offset" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57354 -#: src/emc/usr_intf/pncconf/pncconf.glade:64274 +#: src/emc/usr_intf/pncconf/pncconf.glade:64263 +msgid "Poles" +msgstr "Pola" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64283 msgid "Configuration" msgstr "Konfiguracja" -#: src/emc/usr_intf/pncconf/pncconf.glade:57389 -#: src/emc/usr_intf/pncconf/pncconf.glade:64309 -msgid "Use Brushless Motor Control" +#: src/emc/usr_intf/pncconf/pncconf.glade:64318 +msgid "Use BLDC Motor Commutation Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57425 -#: src/emc/usr_intf/pncconf/pncconf.glade:64345 +#: src/emc/usr_intf/pncconf/pncconf.glade:64354 msgid "Scale:" msgstr "Skala:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57446 -#: src/emc/usr_intf/pncconf/pncconf.glade:64366 +#: src/emc/usr_intf/pncconf/pncconf.glade:64375 msgid "% " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57466 -#: src/emc/usr_intf/pncconf/pncconf.glade:64386 +#: src/emc/usr_intf/pncconf/pncconf.glade:64394 +msgid "Range:" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64419 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "RPM" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64439 msgid "Use Spindle-At-Speed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57491 -#: src/emc/usr_intf/pncconf/pncconf.glade:64411 +#: src/emc/usr_intf/pncconf/pncconf.glade:64464 msgid "Filter gain:" msgstr "Wzmocnienie filtra:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57526 -#: src/emc/usr_intf/pncconf/pncconf.glade:64446 +#: src/emc/usr_intf/pncconf/pncconf.glade:64499 msgid "Spindle Display Filter Settings" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57577 -#: src/emc/usr_intf/pncconf/pncconf.glade:64608 -msgid "Single Input Encoder" -msgstr "Pojedyńcze wejście eknodera" +#: src/emc/usr_intf/pncconf/pncconf.glade:64565 +msgid "Rapid Speed Following Error:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57631 -#: src/emc/usr_intf/pncconf/pncconf.glade:64553 -msgid "Invert Encoder Direction " +#: src/emc/usr_intf/pncconf/pncconf.glade:64577 +msgid "Feed Speed Following Error:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57646 -#: src/emc/usr_intf/pncconf/pncconf.glade:64538 +#: src/emc/usr_intf/pncconf/pncconf.glade:64591 msgid "Invert Motor Direction" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57661 -#: src/emc/usr_intf/pncconf/pncconf.glade:64524 -msgid "Feed Speed Following Error:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64606 +msgid "Invert Encoder Direction " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57675 -#: src/emc/usr_intf/pncconf/pncconf.glade:64512 -msgid "Rapid Speed Following Error:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64661 +msgid "Single Input Encoder" +msgstr "Pojedyńcze wejście eknodera" -#: src/emc/usr_intf/pncconf/pncconf.glade:57715 -#: src/emc/usr_intf/pncconf/pncconf.glade:64778 -msgid "" -"Calculate\n" -"Scale" +#: src/emc/usr_intf/pncconf/pncconf.glade:64776 +msgid "encoder Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57744 -#: src/emc/usr_intf/pncconf/pncconf.glade:64748 +#: src/emc/usr_intf/pncconf/pncconf.glade:64801 msgid "Stepper Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57771 -#: src/emc/usr_intf/pncconf/pncconf.glade:64723 -msgid "encoder Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64831 +msgid "" +"Calculate\n" +"Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57928 -#: src/emc/usr_intf/pncconf/pncconf.glade:64848 +#: src/emc/usr_intf/pncconf/pncconf.glade:64901 msgid "Test / Tune Axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58235 -#: src/emc/usr_intf/pncconf/pncconf.glade:65471 -msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:58251 -#: src/emc/usr_intf/pncconf/pncconf.glade:65456 -msgid "Home Search Velocity:" -msgstr "Prędkość najazdu na krańcówkę:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64943 +msgid "X Axis Configuration" +msgstr "Konfiguracja osi X" -#: src/emc/usr_intf/pncconf/pncconf.glade:58266 -#: src/emc/usr_intf/pncconf/pncconf.glade:65440 -msgid "Home Switch location (Offset from machine zero Origin):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65155 +msgid "" +"NO\n" +"YES" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58310 -#: src/emc/usr_intf/pncconf/pncconf.glade:65396 -msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " +#: src/emc/usr_intf/pncconf/pncconf.glade:65171 +msgid "Use Encoder Index For Home:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58326 -#: src/emc/usr_intf/pncconf/pncconf.glade:65380 -msgid "Home Position location (offset from machine zero Origin):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65212 +msgid "Home Final Velocity:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58355 -#: src/emc/usr_intf/pncconf/pncconf.glade:65353 -msgid "Use Backlash Compensation:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65222 +msgid "" +"Same\n" +"Opposite" msgstr "" +"Ten sam\n" +"Odwrotny" -#: src/emc/usr_intf/pncconf/pncconf.glade:58369 -#: src/emc/usr_intf/pncconf/pncconf.glade:65339 -msgid "Use Compensation File:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65238 +msgid "Home Latch Direction:" +msgstr "Kierunek zjazdu z krańcówki:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58412 -#: src/emc/usr_intf/pncconf/pncconf.glade:65294 +#: src/emc/usr_intf/pncconf/pncconf.glade:65251 msgid "" -"Type 1\n" -"Type 2" +"Towards Negative limit\n" +"Towards Positive limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58427 -#: src/emc/usr_intf/pncconf/pncconf.glade:65281 -msgid "filename:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65267 +msgid "Home Search Direction:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58455 -#: src/emc/usr_intf/pncconf/pncconf.glade:65256 +#: src/emc/usr_intf/pncconf/pncconf.glade:65309 msgid "Home latch Velocity:" msgstr "Prędkość zjazdu z krańcówki:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58494 -#: src/emc/usr_intf/pncconf/pncconf.glade:65214 -msgid "Home Search Direction:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65334 +msgid "filename:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58507 -#: src/emc/usr_intf/pncconf/pncconf.glade:65198 +#: src/emc/usr_intf/pncconf/pncconf.glade:65347 msgid "" -"Towards Negative limit\n" -"Towards Positive limit" +"Type 1\n" +"Type 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58523 -#: src/emc/usr_intf/pncconf/pncconf.glade:65185 -msgid "Home Latch Direction:" -msgstr "Kierunek zjazdu z krańcówki:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65392 +msgid "Use Compensation File:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58552 -#: src/emc/usr_intf/pncconf/pncconf.glade:65159 -msgid "Home Final Velocity:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65406 +msgid "Use Backlash Compensation:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58591 -#: src/emc/usr_intf/pncconf/pncconf.glade:65118 -msgid "Use Encoder Index For Home:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65433 +msgid "Home Position location (offset from machine zero Origin):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58603 -#: src/emc/usr_intf/pncconf/pncconf.glade:65102 -msgid "" -"NO\n" -"YES" +#: src/emc/usr_intf/pncconf/pncconf.glade:65449 +msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58628 -#: src/emc/usr_intf/pncconf/pncconf.glade:65548 +#: src/emc/usr_intf/pncconf/pncconf.glade:65493 +msgid "Home Switch location (Offset from machine zero Origin):" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65509 +msgid "Home Search Velocity:" +msgstr "Prędkość najazdu na krańcówkę:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65524 +msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Advanced Options" msgstr "Zaawansowane Opcje" -#: src/emc/usr_intf/pncconf/pncconf.glade:58712 -#: src/emc/usr_intf/pncconf/pncconf.glade:65962 -msgid "Cmd 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 15" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58718 -#: src/emc/usr_intf/pncconf/pncconf.glade:65952 -msgid "Cmd 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 14" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58728 -#: src/emc/usr_intf/pncconf/pncconf.glade:65942 -msgid "Cmd 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 13" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58738 -#: src/emc/usr_intf/pncconf/pncconf.glade:65932 -msgid "Cmd 4" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 12" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58748 -#: src/emc/usr_intf/pncconf/pncconf.glade:65922 -msgid "Cmd 5" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 11" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58874 -#: src/emc/usr_intf/pncconf/pncconf.glade:65796 -msgid "Cmd 6" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 10" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58884 -#: src/emc/usr_intf/pncconf/pncconf.glade:65784 -msgid "Cmd 7" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 9" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58896 -#: src/emc/usr_intf/pncconf/pncconf.glade:65772 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Cmd 8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58908 -#: src/emc/usr_intf/pncconf/pncconf.glade:65760 -msgid "Cmd 9" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 7" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58920 -#: src/emc/usr_intf/pncconf/pncconf.glade:65748 -msgid "Cmd 10" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 6" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58990 -#: src/emc/usr_intf/pncconf/pncconf.glade:65680 -msgid "Cmd 11" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 5" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59000 -#: src/emc/usr_intf/pncconf/pncconf.glade:65668 -msgid "Cmd 12" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59012 -#: src/emc/usr_intf/pncconf/pncconf.glade:65656 -msgid "Cmd 13" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59024 -#: src/emc/usr_intf/pncconf/pncconf.glade:65644 -msgid "Cmd 14" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59036 -#: src/emc/usr_intf/pncconf/pncconf.glade:65632 -msgid "Cmd 15" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59053 -#: src/emc/usr_intf/pncconf/pncconf.glade:65973 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Include Halui user interface component / commands" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59127 -#: src/emc/usr_intf/pncconf/pncconf.glade:66047 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Number of digital (bit) in pins:" msgstr "Liczba cyfrowych (bitowych) pinów wejścowych:" -#: src/emc/usr_intf/pncconf/pncconf.glade:59138 -#: src/emc/usr_intf/pncconf/pncconf.glade:66058 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Number of digital (bit) out pins:" msgstr "Liczba cyfrowych (bitowych) pinów wyjścowych:" -#: src/emc/usr_intf/pncconf/pncconf.glade:59308 -#: src/emc/usr_intf/pncconf/pncconf.glade:66228 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid " Number of Internal bit memory:" +msgstr "Liczba cyfrowych (bitowych) pinów wyjścowych:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of Internal word memory:" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Setup number of external pins" msgstr "Ustaw liczbę zewnętrznych pinów" -#: src/emc/usr_intf/pncconf/pncconf.glade:59360 -#: src/emc/usr_intf/pncconf/pncconf.glade:66280 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Z Auto Touch off program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59505 -#: src/emc/usr_intf/pncconf/pncconf.glade:66425 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "HAL Component Page" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59648 -#: src/emc/usr_intf/pncconf/pncconf.glade:66697 -msgid "lowpass" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Add HAL components with this page." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59675 -#: src/emc/usr_intf/pncconf/pncconf.glade:66670 -msgid "mux16" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Component" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59702 -#: src/emc/usr_intf/pncconf/pncconf.glade:66644 -msgid "scale" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "number of components" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59728 -#: src/emc/usr_intf/pncconf/pncconf.glade:66617 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "PID" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59739 -#: src/emc/usr_intf/pncconf/pncconf.glade:66601 -msgid "number of components" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59767 -#: src/emc/usr_intf/pncconf/pncconf.glade:66577 -msgid "Component" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mux16" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59794 -#: src/emc/usr_intf/pncconf/pncconf.glade:66552 -msgid "Add HAL components with this page." +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "lowpass" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59844 -#: src/emc/usr_intf/pncconf/pncconf.glade:66887 -msgid "Thread Command" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Base Thread" +msgstr "Wątek Bazowy" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Servo Thread" +msgstr "Wątek Servo" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Load Command " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59854 -#: src/emc/usr_intf/pncconf/pncconf.glade:66877 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Thread Speed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59906 -#: src/emc/usr_intf/pncconf/pncconf.glade:66829 -msgid "Load Command " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Thread Command" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59952 -#: src/emc/usr_intf/pncconf/pncconf.glade:66777 -msgid "Servo Thread" -msgstr "Wątek Servo" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Custom Components Commands" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59965 -#: src/emc/usr_intf/pncconf/pncconf.glade:66765 -msgid "Base Thread" -msgstr "Wątek Bazowy" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Machine configuration complete" +msgstr "Konfiguracja maszyny zakończona" -#: src/emc/usr_intf/pncconf/pncconf.glade:59979 -#: src/emc/usr_intf/pncconf/pncconf.glade:66899 -msgid "Custom Components Commands" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "" +"All the necessary information has now been gathered. Click \"Apply\" to " +"write your configuration files to disk.\n" +"\n" +"If you are using the 5i25 card with daugther boards or are using SSerial " +"based daughter cards, the cards must be connected and/or field power " +"supplied to the 5i25 \n" +"for the HAL pins to be available. If the config is expecting the pins and " +"they are not there, linuxcnc will error.\n" +"If you experience lockups while running LinuxCNC, you will need to decrease " +"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC, first verify that you " +"entered the proper timings for your stepper drivers. If that does not fix " +"the problem, then run a more thorough latency test as described on the " +"linuxcnc.org wiki:\n" +" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" +"\n" +"If you experience the \"Unexpected Realtime Delay\" message, run a more " +"thorough latency test as described on the linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" msgstr "" +"Wszystkie niezbędne informacje zostały zebrane. Kliknij \"Zastosuj\" aby " +"zapisać pliki konfiguracyjne na dysk.\n" +"Jeśli doświadczysz zawieszenia gdy uruchamiasz LinuxCNC, musisz zmniejszyć " +"prędkość maksymalną co spowoduje zwiększenie wartości BASE_PERIOD.\n" +"\n" +"Jeśli doświadczysz gubienia kroków gdy używasz LinuxCNC, sprawdź czy " +"wprowadziłeś prawidłowe czasy dla twoich sterowników krokowych. Jeśli to " +"nie rozwiąże problemu, wykonaj bardziej szczegółowy test opóźnień opisany na " +"linuxcnc.org wiki:\n" +" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" +"\n" +"Jeśli doświadczysz komunikatu \"Niespodziewane zachwianie czasu " +"rzeczywiestego\", wykonaj bardziej szczegółowy test opóźnień opisany na " +"linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" -#: src/emc/usr_intf/pncconf/pncconf.glade:60031 -#: src/emc/usr_intf/pncconf/pncconf.glade:66951 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" " Motor Encoder Test\n" "Warning limits switches \n" " Will not be obeyed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60067 -#: src/emc/usr_intf/pncconf/pncconf.glade:60766 -#: src/emc/usr_intf/pncconf/pncconf.glade:61859 -#: src/emc/usr_intf/pncconf/pncconf.glade:62952 -#: src/emc/usr_intf/pncconf/pncconf.glade:64045 -#: src/emc/usr_intf/pncconf/pncconf.glade:65025 -#: src/emc/usr_intf/pncconf/pncconf.glade:67218 -#: src/emc/usr_intf/pncconf/pncconf.glade:67338 -#: src/emc/usr_intf/pncconf/pncconf.glade:68434 -#: src/emc/usr_intf/pncconf/pncconf.glade:69527 -#: src/emc/usr_intf/pncconf/pncconf.glade:70620 -#: src/emc/usr_intf/pncconf/pncconf.glade:71811 -msgid "Invert Motor" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:60083 -#: src/emc/usr_intf/pncconf/pncconf.glade:60782 -#: src/emc/usr_intf/pncconf/pncconf.glade:61875 -#: src/emc/usr_intf/pncconf/pncconf.glade:62968 -#: src/emc/usr_intf/pncconf/pncconf.glade:64061 -#: src/emc/usr_intf/pncconf/pncconf.glade:65040 -#: src/emc/usr_intf/pncconf/pncconf.glade:67202 -#: src/emc/usr_intf/pncconf/pncconf.glade:67322 -#: src/emc/usr_intf/pncconf/pncconf.glade:68419 -#: src/emc/usr_intf/pncconf/pncconf.glade:69512 -#: src/emc/usr_intf/pncconf/pncconf.glade:70605 -#: src/emc/usr_intf/pncconf/pncconf.glade:71796 -msgid "Invert Encoder" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Slow Dac Speed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60100 -#: src/emc/usr_intf/pncconf/pncconf.glade:67189 -msgid "Enable Amp" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Fast Dac Speed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60114 -#: src/emc/usr_intf/pncconf/pncconf.glade:67174 -msgid "Reset Encoder" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Dac Offset:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60142 -#: src/emc/usr_intf/pncconf/pncconf.glade:67147 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Encoder Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60153 -#: src/emc/usr_intf/pncconf/pncconf.glade:67137 -msgid "Dac Offset:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Reset Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60243 -#: src/emc/usr_intf/pncconf/pncconf.glade:67043 -msgid "Fast Dac Speed" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Enable Amp" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60258 -#: src/emc/usr_intf/pncconf/pncconf.glade:67027 -msgid "Slow Dac Speed" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Invert Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60407 -#: src/emc/usr_intf/pncconf/pncconf.glade:61503 -#: src/emc/usr_intf/pncconf/pncconf.glade:62596 -#: src/emc/usr_intf/pncconf/pncconf.glade:63689 -#: src/emc/usr_intf/pncconf/pncconf.glade:64788 -#: src/emc/usr_intf/pncconf/pncconf.glade:67709 -#: src/emc/usr_intf/pncconf/pncconf.glade:68801 -#: src/emc/usr_intf/pncconf/pncconf.glade:69894 -#: src/emc/usr_intf/pncconf/pncconf.glade:70987 -#: src/emc/usr_intf/pncconf/pncconf.glade:72058 -msgid "mm/minute" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Invert Motor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60441 -#: src/emc/usr_intf/pncconf/pncconf.glade:61536 -#: src/emc/usr_intf/pncconf/pncconf.glade:62629 -#: src/emc/usr_intf/pncconf/pncconf.glade:63722 -#: src/emc/usr_intf/pncconf/pncconf.glade:64821 -#: src/emc/usr_intf/pncconf/pncconf.glade:67673 -#: src/emc/usr_intf/pncconf/pncconf.glade:68766 -#: src/emc/usr_intf/pncconf/pncconf.glade:69859 -#: src/emc/usr_intf/pncconf/pncconf.glade:70952 -#: src/emc/usr_intf/pncconf/pncconf.glade:72023 -msgid "mm/minute^2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"±\n" +"+\n" +"-\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60550 -#: src/emc/usr_intf/pncconf/pncconf.glade:61644 -#: src/emc/usr_intf/pncconf/pncconf.glade:62737 -#: src/emc/usr_intf/pncconf/pncconf.glade:64930 -#: src/emc/usr_intf/pncconf/pncconf.glade:67565 -#: src/emc/usr_intf/pncconf/pncconf.glade:68660 -#: src/emc/usr_intf/pncconf/pncconf.glade:69753 -#: src/emc/usr_intf/pncconf/pncconf.glade:71916 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Seconds" +msgstr "Sekund" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60600 -#: src/emc/usr_intf/pncconf/pncconf.glade:61693 -#: src/emc/usr_intf/pncconf/pncconf.glade:62786 -#: src/emc/usr_intf/pncconf/pncconf.glade:63879 -#: src/emc/usr_intf/pncconf/pncconf.glade:65139 -#: src/emc/usr_intf/pncconf/pncconf.glade:67517 -#: src/emc/usr_intf/pncconf/pncconf.glade:68612 -#: src/emc/usr_intf/pncconf/pncconf.glade:69705 -#: src/emc/usr_intf/pncconf/pncconf.glade:70798 -#: src/emc/usr_intf/pncconf/pncconf.glade:71707 -msgid "Seconds" -msgstr "Sekund" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm/minute^2" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60907 -#: src/emc/usr_intf/pncconf/pncconf.glade:62212 -#: src/emc/usr_intf/pncconf/pncconf.glade:63093 -#: src/emc/usr_intf/pncconf/pncconf.glade:64398 -#: src/emc/usr_intf/pncconf/pncconf.glade:65255 -#: src/emc/usr_intf/pncconf/pncconf.glade:68040 -#: src/emc/usr_intf/pncconf/pncconf.glade:68920 -#: src/emc/usr_intf/pncconf/pncconf.glade:70225 -#: src/emc/usr_intf/pncconf/pncconf.glade:71106 -#: src/emc/usr_intf/pncconf/pncconf.glade:72383 -msgid "DeadBand" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm/minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61089 -#: src/emc/usr_intf/pncconf/pncconf.glade:61380 -#: src/emc/usr_intf/pncconf/pncconf.glade:62030 -#: src/emc/usr_intf/pncconf/pncconf.glade:62401 -#: src/emc/usr_intf/pncconf/pncconf.glade:63275 -#: src/emc/usr_intf/pncconf/pncconf.glade:63562 -#: src/emc/usr_intf/pncconf/pncconf.glade:64216 -#: src/emc/usr_intf/pncconf/pncconf.glade:64587 -#: src/emc/usr_intf/pncconf/pncconf.glade:65431 -#: src/emc/usr_intf/pncconf/pncconf.glade:65718 -#: src/emc/usr_intf/pncconf/pncconf.glade:67858 -#: src/emc/usr_intf/pncconf/pncconf.glade:68228 -#: src/emc/usr_intf/pncconf/pncconf.glade:69102 -#: src/emc/usr_intf/pncconf/pncconf.glade:69389 -#: src/emc/usr_intf/pncconf/pncconf.glade:70043 -#: src/emc/usr_intf/pncconf/pncconf.glade:70414 -#: src/emc/usr_intf/pncconf/pncconf.glade:71288 -#: src/emc/usr_intf/pncconf/pncconf.glade:71575 -#: src/emc/usr_intf/pncconf/pncconf.glade:72207 -#: src/emc/usr_intf/pncconf/pncconf.glade:72570 -msgid "Original" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Current" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61138 -#: src/emc/usr_intf/pncconf/pncconf.glade:61981 -#: src/emc/usr_intf/pncconf/pncconf.glade:63324 -#: src/emc/usr_intf/pncconf/pncconf.glade:64167 -#: src/emc/usr_intf/pncconf/pncconf.glade:65480 -#: src/emc/usr_intf/pncconf/pncconf.glade:67809 -#: src/emc/usr_intf/pncconf/pncconf.glade:69151 -#: src/emc/usr_intf/pncconf/pncconf.glade:69994 -#: src/emc/usr_intf/pncconf/pncconf.glade:71337 -#: src/emc/usr_intf/pncconf/pncconf.glade:72158 -msgid "D:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "P:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61148 -#: src/emc/usr_intf/pncconf/pncconf.glade:61971 -#: src/emc/usr_intf/pncconf/pncconf.glade:63334 -#: src/emc/usr_intf/pncconf/pncconf.glade:64157 -#: src/emc/usr_intf/pncconf/pncconf.glade:65490 -#: src/emc/usr_intf/pncconf/pncconf.glade:67799 -#: src/emc/usr_intf/pncconf/pncconf.glade:69161 -#: src/emc/usr_intf/pncconf/pncconf.glade:69984 -#: src/emc/usr_intf/pncconf/pncconf.glade:71347 -#: src/emc/usr_intf/pncconf/pncconf.glade:72148 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "I:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61158 -#: src/emc/usr_intf/pncconf/pncconf.glade:61961 -#: src/emc/usr_intf/pncconf/pncconf.glade:63344 -#: src/emc/usr_intf/pncconf/pncconf.glade:64147 -#: src/emc/usr_intf/pncconf/pncconf.glade:65500 -#: src/emc/usr_intf/pncconf/pncconf.glade:67789 -#: src/emc/usr_intf/pncconf/pncconf.glade:69171 -#: src/emc/usr_intf/pncconf/pncconf.glade:69974 -#: src/emc/usr_intf/pncconf/pncconf.glade:71357 -#: src/emc/usr_intf/pncconf/pncconf.glade:72138 -msgid "P:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "D:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61168 -#: src/emc/usr_intf/pncconf/pncconf.glade:61392 -#: src/emc/usr_intf/pncconf/pncconf.glade:61951 -#: src/emc/usr_intf/pncconf/pncconf.glade:62389 -#: src/emc/usr_intf/pncconf/pncconf.glade:63354 -#: src/emc/usr_intf/pncconf/pncconf.glade:63574 -#: src/emc/usr_intf/pncconf/pncconf.glade:64137 -#: src/emc/usr_intf/pncconf/pncconf.glade:64575 -#: src/emc/usr_intf/pncconf/pncconf.glade:65510 -#: src/emc/usr_intf/pncconf/pncconf.glade:65730 -#: src/emc/usr_intf/pncconf/pncconf.glade:67779 -#: src/emc/usr_intf/pncconf/pncconf.glade:68216 -#: src/emc/usr_intf/pncconf/pncconf.glade:69181 -#: src/emc/usr_intf/pncconf/pncconf.glade:69401 -#: src/emc/usr_intf/pncconf/pncconf.glade:69964 -#: src/emc/usr_intf/pncconf/pncconf.glade:70402 -#: src/emc/usr_intf/pncconf/pncconf.glade:71367 -#: src/emc/usr_intf/pncconf/pncconf.glade:71587 -#: src/emc/usr_intf/pncconf/pncconf.glade:72128 -#: src/emc/usr_intf/pncconf/pncconf.glade:72558 -msgid "Current" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Original" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61185 -#: src/emc/usr_intf/pncconf/pncconf.glade:62278 -#: src/emc/usr_intf/pncconf/pncconf.glade:63371 -#: src/emc/usr_intf/pncconf/pncconf.glade:64464 -#: src/emc/usr_intf/pncconf/pncconf.glade:65527 -#: src/emc/usr_intf/pncconf/pncconf.glade:68105 -#: src/emc/usr_intf/pncconf/pncconf.glade:69198 -#: src/emc/usr_intf/pncconf/pncconf.glade:70291 -#: src/emc/usr_intf/pncconf/pncconf.glade:71384 -#: src/emc/usr_intf/pncconf/pncconf.glade:72447 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "DeadBand" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "PID Tuning" msgstr "Strojenie PID" -#: src/emc/usr_intf/pncconf/pncconf.glade:61370 -#: src/emc/usr_intf/pncconf/pncconf.glade:62413 -#: src/emc/usr_intf/pncconf/pncconf.glade:63552 -#: src/emc/usr_intf/pncconf/pncconf.glade:64599 -#: src/emc/usr_intf/pncconf/pncconf.glade:65708 -#: src/emc/usr_intf/pncconf/pncconf.glade:68240 -#: src/emc/usr_intf/pncconf/pncconf.glade:69379 -#: src/emc/usr_intf/pncconf/pncconf.glade:70426 -#: src/emc/usr_intf/pncconf/pncconf.glade:71565 -#: src/emc/usr_intf/pncconf/pncconf.glade:72582 -msgid "Direction Setup:" -msgstr "Czas ustawienia kierunku:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:61404 -#: src/emc/usr_intf/pncconf/pncconf.glade:62379 -#: src/emc/usr_intf/pncconf/pncconf.glade:63586 -#: src/emc/usr_intf/pncconf/pncconf.glade:64565 -#: src/emc/usr_intf/pncconf/pncconf.glade:65742 -#: src/emc/usr_intf/pncconf/pncconf.glade:68206 -#: src/emc/usr_intf/pncconf/pncconf.glade:69413 -#: src/emc/usr_intf/pncconf/pncconf.glade:70392 -#: src/emc/usr_intf/pncconf/pncconf.glade:71599 -#: src/emc/usr_intf/pncconf/pncconf.glade:72548 -msgid "Direction Hold:" -msgstr "Czas podtrzymania kierunku:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Time:" +msgstr "Czas trwania kroku:" -#: src/emc/usr_intf/pncconf/pncconf.glade:61414 -#: src/emc/usr_intf/pncconf/pncconf.glade:62369 -#: src/emc/usr_intf/pncconf/pncconf.glade:63596 -#: src/emc/usr_intf/pncconf/pncconf.glade:64555 -#: src/emc/usr_intf/pncconf/pncconf.glade:65752 -#: src/emc/usr_intf/pncconf/pncconf.glade:68196 -#: src/emc/usr_intf/pncconf/pncconf.glade:69423 -#: src/emc/usr_intf/pncconf/pncconf.glade:70382 -#: src/emc/usr_intf/pncconf/pncconf.glade:71609 -#: src/emc/usr_intf/pncconf/pncconf.glade:72538 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Step Space:" msgstr "Odstęp kroku:" -#: src/emc/usr_intf/pncconf/pncconf.glade:61424 -#: src/emc/usr_intf/pncconf/pncconf.glade:62359 -#: src/emc/usr_intf/pncconf/pncconf.glade:63606 -#: src/emc/usr_intf/pncconf/pncconf.glade:64545 -#: src/emc/usr_intf/pncconf/pncconf.glade:65762 -#: src/emc/usr_intf/pncconf/pncconf.glade:68186 -#: src/emc/usr_intf/pncconf/pncconf.glade:69433 -#: src/emc/usr_intf/pncconf/pncconf.glade:70372 -#: src/emc/usr_intf/pncconf/pncconf.glade:71619 -#: src/emc/usr_intf/pncconf/pncconf.glade:72528 -msgid "Step Time:" -msgstr "Czas trwania kroku:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Direction Hold:" +msgstr "Czas podtrzymania kierunku:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Direction Setup:" +msgstr "Czas ustawienia kierunku:" -#: src/emc/usr_intf/pncconf/pncconf.glade:61439 -#: src/emc/usr_intf/pncconf/pncconf.glade:62528 -#: src/emc/usr_intf/pncconf/pncconf.glade:63621 -#: src/emc/usr_intf/pncconf/pncconf.glade:64714 -#: src/emc/usr_intf/pncconf/pncconf.glade:65777 -#: src/emc/usr_intf/pncconf/pncconf.glade:68359 -#: src/emc/usr_intf/pncconf/pncconf.glade:69448 -#: src/emc/usr_intf/pncconf/pncconf.glade:70541 -#: src/emc/usr_intf/pncconf/pncconf.glade:71634 -#: src/emc/usr_intf/pncconf/pncconf.glade:72697 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Step Timing" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:63830 -#: src/emc/usr_intf/pncconf/pncconf.glade:70846 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65798 -#: src/emc/usr_intf/pncconf/pncconf.glade:72718 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "spindle" msgstr "wrzeciono" -#: src/emc/usr_intf/pncconf/pncconf.glade:65881 -#: src/emc/usr_intf/pncconf/pncconf.glade:72801 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Help Page" msgstr "Strona pomocy" -#: src/emc/usr_intf/pncconf/pncconf.glade:65911 -#: src/emc/usr_intf/pncconf/pncconf.glade:72831 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" "X axis:\n" "Total Travel = 10\n" @@ -13946,13 +14130,11 @@ msgid "" "possible" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65951 -#: src/emc/usr_intf/pncconf/pncconf.glade:72871 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Mill" msgstr "Frezarka" -#: src/emc/usr_intf/pncconf/pncconf.glade:65970 -#: src/emc/usr_intf/pncconf/pncconf.glade:72890 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" "Total Travel = 4 + 6 = 10\n" "Z Home Offset = Origin to Home Switch distance = 10\n" @@ -13965,1949 +14147,2749 @@ msgid "" "possible." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65994 -#: src/emc/usr_intf/pncconf/pncconf.glade:72914 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Lathe" msgstr "Tokarka" -#: src/emc/usr_intf/pncconf/pncconf.glade:66010 -#: src/emc/usr_intf/pncconf/pncconf.glade:72930 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Diagram" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66043 -#: src/emc/usr_intf/pncconf/pncconf.glade:72963 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Output" msgstr "Wyjście" -#: src/emc/usr_intf/pncconf/pncconf.glade:66123 -#: src/emc/usr_intf/pncconf/pncconf.glade:73291 -msgid "Motor steps per revolution:" -msgstr "Kroki silnika na obrót:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:66173 -#: src/emc/usr_intf/pncconf/pncconf.glade:66459 -#: src/emc/usr_intf/pncconf/pncconf.glade:73247 -#: src/emc/usr_intf/pncconf/pncconf.glade:73569 -msgid "Leadscrew Metric Pitch" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"\t\t\t\tPNCconf - Point aNd Click CONFigurator\n" +"PNCconf is a configuration program for Linuxcnc.\n" +"It configures machines using Mesa I/O cards.\n" +"It configures servo,stepper or closed loop stepper machines.\n" +"It supports some of Mesa's sserial cards.\n" +"It will forever be a work in progress as Linuxcnc changes.\n" +"\n" +"Many thanks To:\n" +"Jeff Eppler - PNCconf is based on stepconf - Jeff's creation. Jeff also has " +"helped with techincal difficulties.\n" +"Big John T - John drew the original machine illustrations. Testing and " +"suggestions.\n" +"Peter Wallace - Technical questions on Mesa's I/O cards. Supplied sample " +"equipment to test with.\n" +"Andy Pugh - suggestions, questions answered and many pin name changes :) \n" +"Dave Armstrong - testing and suggestions expecially with resolvers.\n" +"Everyone who gave a bug report ! I cannot test everything thoughly enough so " +"reports help.\n" +"\n" +"Beta 1 version" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66186 -#: src/emc/usr_intf/pncconf/pncconf.glade:73229 -msgid "Microstep Multiplication Factor:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "TPI " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66199 -#: src/emc/usr_intf/pncconf/pncconf.glade:66481 -#: src/emc/usr_intf/pncconf/pncconf.glade:73216 -#: src/emc/usr_intf/pncconf/pncconf.glade:73542 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulley teeth (motor:Leadscrew):" +msgstr "Ilość zębów przekładni (Silnik:Śruba):" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Worm turn ratio (Input:Outputl)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66212 -#: src/emc/usr_intf/pncconf/pncconf.glade:73207 -msgid "Pulley teeth (motor:Leadscrew):" -msgstr "Ilość zębów przekładni (Silnik:Śruba):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Microstep Multiplication Factor:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66356 -#: src/emc/usr_intf/pncconf/pncconf.glade:73058 -msgid "TPI " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Leadscrew Metric Pitch" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66372 -#: src/emc/usr_intf/pncconf/pncconf.glade:73319 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motor steps per revolution:" +msgstr "Kroki silnika na obrót:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Step Motor Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66472 -#: src/emc/usr_intf/pncconf/pncconf.glade:73555 -msgid "Pulley teeth (encoder:Leadscrew):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "TPI" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66537 -#: src/emc/usr_intf/pncconf/pncconf.glade:73488 -msgid "Encoder lines per revolution:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "X 4 = Pulses/Rev" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66547 -#: src/emc/usr_intf/pncconf/pncconf.glade:73475 -msgid "X 4 = Pulses/Rev" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder lines per revolution:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66651 -#: src/emc/usr_intf/pncconf/pncconf.glade:73371 -msgid "TPI" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulley teeth (encoder:Leadscrew):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66667 -#: src/emc/usr_intf/pncconf/pncconf.glade:73614 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Encoder Scale" msgstr "Skala enkodera" -#: src/emc/usr_intf/pncconf/pncconf.glade:66711 -#: src/emc/usr_intf/pncconf/pncconf.glade:73704 -msgid "motor steps per unit:" -msgstr "Kroki silnika na jednostkę:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " " +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66721 -#: src/emc/usr_intf/pncconf/pncconf.glade:73692 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "encoder pulses per unit:" msgstr "impulsów enkodera na jednostkę:" -#: src/emc/usr_intf/pncconf/pncconf.glade:66756 -#: src/emc/usr_intf/pncconf/pncconf.glade:73657 -msgid " " -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "motor steps per unit:" +msgstr "Kroki silnika na jednostkę:" -#: src/emc/usr_intf/pncconf/pncconf.glade:66770 -#: src/emc/usr_intf/pncconf/pncconf.glade:73717 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Calculated Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66848 -#: src/emc/usr_intf/pncconf/pncconf.glade:74051 -msgid "xmaxrpm" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / encoder pulse" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66864 -#: src/emc/usr_intf/pncconf/pncconf.glade:74038 -msgid "RPM" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Resolution:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66877 -#: src/emc/usr_intf/pncconf/pncconf.glade:74027 -msgid "Motor RPM at max speed:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Distance to acheave max speed:" +msgstr "Dystans do przyspieszenia do maks prędkości:" -#: src/emc/usr_intf/pncconf/pncconf.glade:66921 -#: src/emc/usr_intf/pncconf/pncconf.glade:73981 -msgid "Calculated Axis SCALE:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "sec" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66934 -#: src/emc/usr_intf/pncconf/pncconf.glade:73966 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Khz" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66949 -#: src/emc/usr_intf/pncconf/pncconf.glade:73951 -msgid "sec" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Calculated Axis SCALE:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67049 -#: src/emc/usr_intf/pncconf/pncconf.glade:73852 -msgid "Distance to acheave max speed:" -msgstr "Dystans do przyspieszenia do maks prędkości:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:67077 -#: src/emc/usr_intf/pncconf/pncconf.glade:73825 -msgid "Resolution:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motor RPM at max speed:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67105 -#: src/emc/usr_intf/pncconf/pncconf.glade:73795 -msgid "mm / encoder pulse" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "xmaxrpm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67123 -#: src/emc/usr_intf/pncconf/pncconf.glade:74070 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Motion Data" msgstr "Dane ruchu" -#: src/emc/usr_intf/pncconf/pncconf.glade:67151 -#: src/emc/usr_intf/pncconf/pncconf.glade:74098 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "gtk-cancel" msgstr "" -#: src/emc/task/emctaskmain.cc:467 src/emc/task/emctaskmain.cc:500 -#: src/emc/task/emctaskmain.cc:427 src/emc/task/emctaskmain.cc:460 -#, c-format -msgid "%s exceeds +X limit" -msgstr "%s przekracza zakres +X" +#: src/emc/usr_intf/gscreen/gscreen.py:349 +#, python-format +msgid "adding import dir %s" +msgstr "" -#: src/emc/task/emctaskmain.cc:472 src/emc/task/emctaskmain.cc:505 -#: src/emc/task/emctaskmain.cc:432 src/emc/task/emctaskmain.cc:465 -#, c-format -msgid "%s exceeds +Y limit" -msgstr "%s przekracza zakres +Y" +#: src/emc/usr_intf/gscreen/gscreen.py:355 +#, python-format +msgid "module '%s' imported OK" +msgstr "" -#: src/emc/task/emctaskmain.cc:477 src/emc/task/emctaskmain.cc:510 -#: src/emc/task/emctaskmain.cc:437 src/emc/task/emctaskmain.cc:470 -#, c-format -msgid "%s exceeds +Z limit" -msgstr "%s przekracza zakres +Z" +#: src/emc/usr_intf/gscreen/gscreen.py:452 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Using CUSTOM glade file from %s ****" +msgstr "" -#: src/emc/task/emctaskmain.cc:482 src/emc/task/emctaskmain.cc:515 -#: src/emc/task/emctaskmain.cc:442 src/emc/task/emctaskmain.cc:475 -#, c-format -msgid "%s exceeds -X limit" -msgstr "%s przekracza zakres -X" +#: src/emc/usr_intf/gscreen/gscreen.py:457 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Using SKIN glade file from %s ****" +msgstr "" -#: src/emc/task/emctaskmain.cc:487 src/emc/task/emctaskmain.cc:520 -#: src/emc/task/emctaskmain.cc:447 src/emc/task/emctaskmain.cc:480 -#, c-format -msgid "%s exceeds -Y limit" -msgstr "%s przekracza zakres -Y" +#: src/emc/usr_intf/gscreen/gscreen.py:460 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: using STOCK glade file from: %s ****" +msgstr "" -#: src/emc/task/emctaskmain.cc:492 src/emc/task/emctaskmain.cc:525 -#: src/emc/task/emctaskmain.cc:452 src/emc/task/emctaskmain.cc:485 -#, c-format -msgid "%s exceeds -Z limit" -msgstr "%s przekracza zakres -Z" +#: src/emc/usr_intf/gscreen/gscreen.py:466 +#, python-format +msgid "**** Gscreen GLADE ERROR: With main screen xml file: %s" +msgstr "" -#: src/emc/task/emctaskmain.cc:853 src/emc/task/emctaskmain.cc:810 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.py:471 +#, python-format msgid "" -"command (%s) cannot be executed until the machine is out of E-stop and " -"turned on" +"\n" +"**** GSCREEN INFO: Screen 2 -Using CUSTOM glade file from %s ****" msgstr "" -"polecenie (%s) nie może być wykonane gdy maszyna maszyna jest wyłączona" -#: src/emc/task/emctaskmain.cc:973 src/emc/task/emctaskmain.cc:930 -#, c-format -msgid "can't do that (%s) in manual mode" +#: src/emc/usr_intf/gscreen/gscreen.py:477 +#, python-format +msgid "**** Gscreen GLADE ERROR: With screen 2's xml file: %s" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:479 +msgid "" +"\n" +"**** GSCREEN INFO: No Screen 2 glade file present" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:519 +msgid "No UNITS entry found in [TRAJ] or [AXIS_0] of INI file" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:532 +msgid "" +"*** Gscreen ERROR: Asking for a HAL component using a name that already " +"exists." +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:585 +msgid "No default jog increments entry found in [DISPLAY] of INI file" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:598 +msgid "No default angular jog increments entry found in [DISPLAY] of INI file" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:607 +#, python-format +msgid "" +"No DEFAULT_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:618 +#, python-format +msgid "" +"No MAX_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:625 +msgid "No MAX_VELOCITY found in [TRAJ] of the INI file" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:638 +#, python-format +msgid "" +"No DEFAULT_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:649 +#, python-format +msgid "" +"No MAX_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:657 +msgid "No MAX_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:663 +msgid "No MIN_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:669 +msgid "No MAX_FEED_OVERRIDE entry found in [DISPLAY] of INI file" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:674 +msgid "This screen will be orientated for Lathe options" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:727 +msgid "CYCLE_TIME in [DISPLAY] of INI file is missing: defaulting to 100ms" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:730 +msgid "CYCLE_TIME in [DISPLAY] of INI file is too small: defaulting to 100ms" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:732 +#, python-format +msgid "timeout %d" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1001 +msgid "" +"**** WARNING GSCREEN: could not understand the window geometry info in " +"hidden preference file" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1089 +msgid "Control powered up and initialized" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1264 +msgid "Cycle start pressed in AUTO mode" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1267 +#, fuzzy +msgid "Cycle start pressed in MDI mode" +msgstr "nie można wykonać (%s) w trybie MDI" + +#: src/emc/usr_intf/gscreen/gscreen.py:1290 +#, python-format +msgid "Please change to tool # %s, then click OK." +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1291 +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +#: src/emc/usr_intf/gscreen/gscreen.py:1789 +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2849 +msgid "INFO:" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +msgid "Can't start spindle manually while MDI busy" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +#, fuzzy +msgid "can't start spindle manually in Auto mode" msgstr "nie można wykonać (%s) w trybie manualnym" -#: src/emc/task/emctaskmain.cc:1072 src/emc/task/emctaskmain.cc:1027 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter idle" -msgstr "nie można wykonać (%s) w trybie auto i wyłączonym interpreterem" +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +msgid "No direction selected for spindle" +msgstr "" -#: src/emc/task/emctaskmain.cc:1132 src/emc/task/emctaskmain.cc:1087 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter reading" -msgstr "nie można wykonać (%s) w trybie auto i interpreterem wczytującym" +#: src/emc/usr_intf/gscreen/gscreen.py:1331 +#: src/emc/usr_intf/gscreen/gscreen.py:1333 +#, fuzzy +msgid "Spindle Speed Preset Entry" +msgstr "Wskaźnik prędkoci wrzeciona" -#: src/emc/task/emctaskmain.cc:1216 src/emc/task/emctaskmain.cc:1169 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter paused" -msgstr "nie można wykonać (%s) w trybie auto i interpreterem zatrzymanym" +#: src/emc/usr_intf/gscreen/gscreen.py:1362 +#: src/emc/usr_intf/gscreen/gscreen.py:1367 +#, fuzzy +msgid "Manual Tool Index Entry" +msgstr "Ręczna zmieniarka narzędzi AXIS" + +#: src/emc/usr_intf/gscreen/gscreen.py:1489 +msgid "Entry dialog" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +#, fuzzy +msgid "Classicladder realtime component not detected" +msgstr "Komponent RT nie załadowany" + +#: src/emc/usr_intf/gscreen/gscreen.py:1617 +msgid "ladder not available - is the realtime component loaded?" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1691 +#, fuzzy +msgid "Override Entry" +msgstr "Ignoruj zakresy" + +#: src/emc/usr_intf/gscreen/gscreen.py:1719 +#, fuzzy +msgid "Machine powered on" +msgstr "Włącz zasilanie maszyny [F2]" + +#: src/emc/usr_intf/gscreen/gscreen.py:1724 +#, fuzzy +msgid "Machine Estopped!" +msgstr "Maszyna jest włączona" + +#: src/emc/usr_intf/gscreen/gscreen.py:1727 +msgid "Calculator" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1857 +#, python-format +msgid "Axes %s are homed" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1864 +msgid "All the axes have been homed" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1874 +#, python-format +msgid "There are unhomed axes: %s" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1879 +#, python-format +msgid "Program loaded: %s" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1977 +#, fuzzy +msgid "Manual Spindle Control" +msgstr "Ręczna kontrola" + +#: src/emc/usr_intf/gscreen/gscreen.py:2034 +msgid "Keyboard" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:2067 +msgid "Error with launching 'Onboard' on-screen keyboard program" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:2215 +#, python-format +msgid "**** GSCREEN INFO: Overriding internal signal call to %s" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:2643 +msgid " Zero Origin" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:2644 +msgid "Offset Origin" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:2659 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing text or type) " +"in INI File [DISPLAY] section" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:2661 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing pinname) in " +"INI File [DISPLAY] section" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:2663 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing boldtext) in " +"INI File [DISPLAY] section" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:2667 +#, python-format +msgid "" +"**** Gscreen ERROR: invalid message type (%s)in INI File [DISPLAY] section" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:2699 +msgid "Dialog error - Is the dialog handler missing from the handler file?" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:2701 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3540 +#, fuzzy +msgid "Manual Toolchange" +msgstr "Ręczna zmieniarka narzędzi AXIS" + +#: src/emc/usr_intf/gscreen/gscreen.py:2703 +#: src/emc/usr_intf/gmoccapy/dialogs.py:94 +#: src/emc/usr_intf/gmoccapy/dialogs.py:107 +#: src/emc/usr_intf/gmoccapy/dialogs.py:119 +msgid "Operator Message" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:2737 +#: src/emc/usr_intf/gscreen/gscreen.py:2741 +#: src/emc/usr_intf/gmoccapy/dialogs.py:155 +#: src/emc/usr_intf/gmoccapy/dialogs.py:159 +msgid "Restart Entry" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:2752 +#: src/emc/usr_intf/gmoccapy/dialogs.py:173 +msgid "Enter" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:2774 +#, python-format +msgid "Ready to Restart program from line %d" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:2807 +#, fuzzy +msgid "Invalid embeded tab configuration" +msgstr "Utwórz _nową konfiguracje" + +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +msgid "Can't jog multiple axis" +msgstr "" -#: src/emc/task/emctaskmain.cc:1278 src/emc/task/emctaskmain.cc:1231 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter waiting" -msgstr "nie można wykonać (%s) w trybie auto i interpreterem oczekującym" +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +msgid "No axis selected to jog" +msgstr "" -#: src/emc/task/emctaskmain.cc:1370 src/emc/task/emctaskmain.cc:1321 -#, c-format -msgid "can't do that (%s) in MDI mode" -msgstr "nie można wykonać (%s) w trybie MDI" +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +msgid "No axis selected to move" +msgstr "" -#: src/emc/task/emctaskmain.cc:2015 src/emc/task/emctaskmain.cc:1943 -msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" -msgstr "Nie można przełączyć trybu gdy tryb jest AUTO i interpreter pracuje" +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +msgid "Can't home multiple axis - select HOME ALL instead" +msgstr "" -#: src/emc/task/emctaskmain.cc:2084 src/emc/task/emctaskmain.cc:2012 -msgid "Can't issue MDI command when not homed" -msgstr "Nie można wykonać polecenia MDI gdy nie zbazowano" +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +msgid "No axis selected to home" +msgstr "" -#: src/emc/task/emctaskmain.cc:2089 src/emc/task/emctaskmain.cc:2017 -msgid "Must be in MDI mode to issue MDI command" -msgstr "Musi być tryb MDI aby wykonać polecenie MDI" +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +msgid "Can't unhome multiple axis" +msgstr "" -#: src/emc/task/emctaskmain.cc:2151 src/emc/task/emctaskmain.cc:2078 -msgid "Can't run a program when not homed" -msgstr "Nie można wykonać programu gdy nie zbazowano" +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +msgid "No axis selected to unhome" +msgstr "" -#: src/emc/rs274ngc/interp_arc.cc:108 src/emc/rs274ngc/rs274ngc_return.hh:160 -msgid "Zero radius arc" -msgstr "Łuk o promieniu zero" +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +msgid "No axis selected for origin zeroing" +msgstr "" -#: src/emc/rs274ngc/interp_arc.cc:112 src/emc/rs274ngc/interp_arc.cc:279 -#, c-format -msgid "" -"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " -"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " -"rel_err=%.4f%%" +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +msgid "No axis selected for origin touch-off" msgstr "" -"Promień końca różni się od promienia początku: początek=(%c%.4f,%c%.4f) " -"środek=(%c%.4f,%c%.4f) koniec=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " -"rel_err=%.4f%%" -#: src/emc/rs274ngc/interp_check.cc:90 src/emc/rs274ngc/interp_check.cc:89 -msgid "G4 not allowed with G2 or G3 because they both use P" +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +msgid "Can't tool touch-off multiple axes" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:93 src/emc/rs274ngc/interp_check.cc:92 -msgid "Line with G10 does not have L1, L10, L11, L2, or L20" +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +msgid "No axis selected for tool touch-off" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:94 src/emc/rs274ngc/interp_check.cc:93 -msgid "P value not an integer with G10" -msgstr "Wartość P nie jest całkowita w G10" +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#: src/emc/usr_intf/gscreen/gscreen.py:3375 +#, fuzzy +msgid "Error Message" +msgstr "Błąd podczas zapisywania pliku" -#: src/emc/rs274ngc/interp_check.cc:95 src/emc/rs274ngc/interp_check.cc:94 -msgid "P value out of range (0-9) with G10 L2 or L20" -msgstr "Wartość P poza zakresem (0-9) w G10 L2 lub L20" +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#, python-format +msgid "Tool editor error - is the %s editor available?" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:96 src/emc/rs274ngc/interp_check.cc:95 -msgid "P value out of range with G10 L1 or G10 L10" -msgstr "Wartość P poza zakresem w G10 L1 lub G10 L20" +#: src/emc/usr_intf/gscreen/gscreen.py:3377 +#: src/emc/usr_intf/gscreen/gscreen.py:3379 +msgid "Message" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:100 src/emc/rs274ngc/interp_check.cc:99 -msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." -msgstr "Pomiędzy kodami G5.2 i G5.3 tylko kolejne kody G5.2 są dozwolone." +#: src/emc/usr_intf/gscreen/gscreen.py:3409 +#, python-format +msgid "%d RPM" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:48 +#: src/emc/usr_intf/gscreen/gscreen.glade:59 +#: src/emc/usr_intf/gscreen/gscreen.glade:135 +#: src/emc/usr_intf/gscreen/gscreen.glade:176 +#: src/emc/usr_intf/gscreen/gscreen.glade:187 +#: src/emc/usr_intf/gscreen/gscreen.glade:264 +#: src/emc/usr_intf/gscreen/gscreen.glade:306 +#: src/emc/usr_intf/gscreen/gscreen.glade:317 +#: src/emc/usr_intf/gscreen/gscreen.glade:393 +#: src/emc/usr_intf/gscreen/gscreen.glade:434 +#: src/emc/usr_intf/gscreen/gscreen.glade:445 +#: src/emc/usr_intf/gscreen/gscreen.glade:521 +#: src/emc/usr_intf/gscreen/gscreen.glade:562 +#: src/emc/usr_intf/gscreen/gscreen.glade:573 +#: src/emc/usr_intf/gscreen/gscreen.glade:649 +#: src/emc/usr_intf/gscreen/gscreen.glade:690 +#: src/emc/usr_intf/gscreen/gscreen.glade:701 +#: src/emc/usr_intf/gscreen/gscreen.glade:777 +#: src/emc/usr_intf/gscreen/gscreen.glade:818 +#: src/emc/usr_intf/gscreen/gscreen.glade:829 +#: src/emc/usr_intf/gscreen/gscreen.glade:905 +#: src/emc/usr_intf/gscreen/gscreen.glade:946 +#: src/emc/usr_intf/gscreen/gscreen.glade:957 +#: src/emc/usr_intf/gscreen/gscreen.glade:1033 +#: src/emc/usr_intf/gscreen/gscreen.glade:1074 +#: src/emc/usr_intf/gscreen/gscreen.glade:1085 +#: src/emc/usr_intf/gscreen/gscreen.glade:1161 +msgid "0000.0000" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:73 +#: src/emc/usr_intf/gscreen/gscreen.glade:201 +#: src/emc/usr_intf/gscreen/gscreen.glade:331 +#: src/emc/usr_intf/gscreen/gscreen.glade:459 +#: src/emc/usr_intf/gscreen/gscreen.glade:587 +#: src/emc/usr_intf/gscreen/gscreen.glade:715 +#: src/emc/usr_intf/gscreen/gscreen.glade:843 +#: src/emc/usr_intf/gscreen/gscreen.glade:971 +#: src/emc/usr_intf/gscreen/gscreen.glade:1099 +msgid "REL" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:99 +#: src/emc/usr_intf/gscreen/gscreen.glade:227 +#: src/emc/usr_intf/gscreen/gscreen.glade:357 +#: src/emc/usr_intf/gscreen/gscreen.glade:485 +#: src/emc/usr_intf/gscreen/gscreen.glade:613 +#: src/emc/usr_intf/gscreen/gscreen.glade:741 +#: src/emc/usr_intf/gscreen/gscreen.glade:869 +#: src/emc/usr_intf/gscreen/gscreen.glade:997 +#: src/emc/usr_intf/gscreen/gscreen.glade:1125 +msgid "ABS" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:630 +msgid "B" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:758 +msgid "C" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:886 +msgid "U" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1014 +msgid "V" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1298 +#, fuzzy +msgid "G code" +msgstr "Enkoder X" -#: src/emc/rs274ngc/interp_check.cc:258 src/emc/rs274ngc/interp_check.cc:248 -msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" -msgstr "Słowo D użyte bez G41 G41.1 G42 G42.1 lub G96" +#: src/emc/usr_intf/gscreen/gscreen.glade:1392 +#, fuzzy +msgid "G Codes Active" +msgstr "Skala enkodera" -#: src/emc/rs274ngc/interp_check.cc:264 src/emc/rs274ngc/interp_check.cc:254 -msgid "E word with no G76, M66, M67 or M68 to use it" -msgstr "Słowo E użyte bez G76, M66, M67 lub M68" +#: src/emc/usr_intf/gscreen/gscreen.glade:1451 +msgid "MV:100%" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:269 src/emc/rs274ngc/interp_check.cc:259 -msgid "H word with no G43 or G76 to use it" -msgstr "Słowo H użyte bez G43 lub G76" +#: src/emc/usr_intf/gscreen/gscreen.glade:1470 +#, fuzzy +msgid " Mist" +msgstr "Mgła" -#: src/emc/rs274ngc/interp_check.cc:275 src/emc/rs274ngc/interp_check.cc:265 -msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" -msgstr "Słowo I użyte bez G2, G3, G5, G5.1, G10, G76, lub G87" +#: src/emc/usr_intf/gscreen/gscreen.glade:1481 +#, fuzzy +msgid " Flood " +msgstr "Płyn" -#: src/emc/rs274ngc/interp_check.cc:281 src/emc/rs274ngc/interp_check.cc:271 -msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" -msgstr "Słowo J użyte bez G2, G3, G5, G5.1, G10, G76, lub G87" +#: src/emc/usr_intf/gscreen/gscreen.glade:1533 +#, fuzzy +msgid " At Speed " +msgstr "Prędkość 1:" -#: src/emc/rs274ngc/interp_check.cc:287 src/emc/rs274ngc/interp_check.cc:277 -msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" -msgstr "Słowo K użyte bez G2, G3, G33, G33.1, G76, lub G87" +#: src/emc/usr_intf/gscreen/gscreen.glade:1546 +#, fuzzy +msgid " Jog mode" +msgstr "Tryb napędów" -#: src/emc/rs274ngc/interp_check.cc:297 src/emc/rs274ngc/interp_check.cc:287 -msgid "" -"L word with no G10, cutter compensation, canned cycle, digital/analog input, " -"or NURBS code" +#: src/emc/usr_intf/gscreen/gscreen.glade:1600 +msgid "10 DPM" msgstr "" -"słowo L użyte bez G10, kompensacji narzędzia, cykli wiertarskich, cyfrowego/" -"analowego wejścia lub kodu NURBS" -#: src/emc/rs274ngc/interp_check.cc:309 src/emc/rs274ngc/interp_check.cc:299 -msgid "" -"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " -"M53 M62 M63 M64 M65 M66 or user M code to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:1616 +msgid "10 Ipm" msgstr "" -"słowo P użyte bez G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 lub M50 M51 " -"M52 M53 M62 M63 M64 M65 M66 lub kodu M użytkownika" -#: src/emc/rs274ngc/interp_check.cc:314 -msgid "P value not an integer with M19 G2 or G3" -msgstr "Wartość P nie jest całkowita w G10 L2" +#: src/emc/usr_intf/gscreen/gscreen.glade:1690 +#, fuzzy +msgid "Status" +msgstr "Chłodziwo" -#: src/emc/rs274ngc/interp_check.cc:316 -msgid "P value must be 0,1,or 2 with M19" +#: src/emc/usr_intf/gscreen/gscreen.glade:1715 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2510 +msgid "" +"Search\n" +" Text:" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:318 src/emc/rs274ngc/interp_check.cc:304 -msgid "P value should be 1 or greater with G2 or G3" -msgstr "Wartość P powinna wynosić 1 lub więcej w G2 lub G3" +#: src/emc/usr_intf/gscreen/gscreen.glade:1766 +#, fuzzy +msgid "Mode" +msgstr "Moc" -#: src/emc/rs274ngc/interp_check.cc:326 -msgid "" -"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " -"code that uses it" +#: src/emc/usr_intf/gscreen/gscreen.glade:1782 +#, fuzzy +msgid "Main Level" +msgstr "Poziom" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1823 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3678 +msgid "Themes" msgstr "" -"słowo Q użyte bez G5, G10, G64, G73, G76, G83, M66, M67, M68 lub kodu M " -"użytkownika" -#: src/emc/rs274ngc/interp_check.cc:336 -msgid "R value must be within 0..360 with M19" +#: src/emc/usr_intf/gscreen/gscreen.glade:1847 +msgid "Relative Text Color" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:138 -msgid "You must specify both X and Y coordinates for Control Points" +#: src/emc/usr_intf/gscreen/gscreen.glade:1895 +msgid "DTG Text Color" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:141 -msgid "Can specify P without X and Y only for the first control point" +#: src/emc/usr_intf/gscreen/gscreen.glade:1916 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3710 +#, fuzzy +msgid "Warning Audio" +msgstr "Ostrzeżenie" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1926 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3723 +msgid "Alert Audio" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:144 -msgid "Must specify positive weight P for every Control Point" +#: src/emc/usr_intf/gscreen/gscreen.glade:1947 +msgid "Grid Size" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:147 -msgid "Cannot make a NURBS with 0 feedrate" -msgstr "Nie można wykonać NURBS z prędkością zerową" +#: src/emc/usr_intf/gscreen/gscreen.glade:1986 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4119 +#, fuzzy +msgid "Starting RPM" +msgstr "Ustawienia" -#: src/emc/rs274ngc/interp_convert.cc:182 -msgid "Cannot use G5.3 without G5.2 first" +#: src/emc/usr_intf/gscreen/gscreen.glade:2015 +msgid "Metric\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:183 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:2030 msgid "" -"You must specify a number of control points at least equal to the order L = %" -"d" -msgstr "Musisz określić liczbę punktów kontrolnych co najmniej równą L = %d" +" Display\n" +"Aux Screen" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:212 -msgid "Cannot convert spline with cutter radius compensation" +#: src/emc/usr_intf/gscreen/gscreen.glade:2045 +msgid "" +"Diameter\n" +" Mode" msgstr "" -"Nie można skonwertować spline z włączoną kompensacją grubości narzędzia" -#: src/emc/rs274ngc/interp_convert.cc:222 -msgid "Splines must be in the XY plane" -msgstr "Splines muszą być w planie XY" +#: src/emc/usr_intf/gscreen/gscreen.glade:2062 +#: src/emc/usr_intf/gscreen/gscreen.glade:3096 +#, fuzzy +msgid "" +" Show\n" +"Offsets" +msgstr "Pokaż offsety" -#: src/emc/rs274ngc/interp_convert.cc:227 -msgid "Splines may not have motion in Z, A, B, or C" +#: src/emc/usr_intf/gscreen/gscreen.glade:2079 +#, fuzzy +msgid "" +"Show\n" +"DTG" +msgstr "Pokaż" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2096 +msgid "" +" Gscreen\n" +"Fullscreen" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:231 -msgid "Must specify both I and J with G5.1" +#: src/emc/usr_intf/gscreen/gscreen.glade:2118 +msgid "" +" On M7 Use\n" +"Aux Coolant" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:250 -msgid "Must specify both I and J, or neither" +#: src/emc/usr_intf/gscreen/gscreen.glade:2131 +msgid "" +" On M8 Use\n" +"Aux Coolant" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:261 -msgid "Must specify both P and Q with G5" +#: src/emc/usr_intf/gscreen/gscreen.glade:2144 +msgid "Hide Pointer" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:362 +#: src/emc/usr_intf/gscreen/gscreen.glade:2156 msgid "" -"The move just after exiting cutter compensation mode must be straight, not " -"an arc" +" Desktop\n" +"Notification" msgstr "" -"Ruch zaraz po wyjściu z trybu kompensacji grubości narzędzia musi być linią, " -"nie łukiem" -#: src/emc/rs274ngc/interp_convert.cc:370 -msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" +#: src/emc/usr_intf/gscreen/gscreen.glade:2228 +#: src/emc/usr_intf/gscreen/gscreen.glade:2368 +msgid "Debug" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:382 -#: src/emc/rs274ngc/interp_convert.cc:4266 -#: src/emc/rs274ngc/interp_convert.cc:3909 -msgid "Cannot feed with zero spindle speed in feed per rev mode" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2263 +#, fuzzy +msgid "Alarm History" +msgstr "Historia:" -#: src/emc/rs274ngc/interp_convert.cc:393 -#: src/emc/rs274ngc/interp_convert.cc:399 -#: src/emc/rs274ngc/interp_convert.cc:408 -#: src/emc/rs274ngc/interp_convert.cc:414 -#: src/emc/rs274ngc/interp_convert.cc:423 -#: src/emc/rs274ngc/interp_convert.cc:429 -#, c-format -msgid "%c word missing in absolute center arc" +#: src/emc/usr_intf/gscreen/gscreen.glade:2281 +msgid "" +" Launch\n" +"Halshow" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:649 +#: src/emc/usr_intf/gscreen/gscreen.glade:2293 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6449 +#, fuzzy +msgid "Calibration" +msgstr "Kalibra_cja" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2304 +#, fuzzy +msgid "Halmeter" +msgstr "Pomiar Hal" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2315 +#, fuzzy msgid "" -"Radius of cutter compensation entry arc is not greater than the tool radius" +"linuxcnc\n" +" Status" +msgstr "Status LinuxCNC" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2327 +#, fuzzy +msgid "Halscope" +msgstr "Oscy_loskop HAL" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2338 +msgid "Ladder" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:868 -#: src/emc/rs274ngc/interp_convert.cc:878 src/emc/rs274ngc/interp_queue.cc:592 -#: src/emc/rs274ngc/interp_queue.cc:541 +#: src/emc/usr_intf/gscreen/gscreen.glade:2386 +#, fuzzy +msgid "Tooleditor" +msgstr "Edytor Tabeli Narzędzi..." + +#: src/emc/usr_intf/gscreen/gscreen.glade:2404 +#, fuzzy msgid "" -"Arc move in concave corner cannot be reached by the tool without gouging" +"Offset\n" +" Page" msgstr "" +"Przesunięcie\n" +"%s" -#: src/emc/rs274ngc/interp_convert.cc:904 -msgid "Arc to arc motion is invalid because the arcs have the same center" +#: src/emc/usr_intf/gscreen/gscreen.glade:2572 +#: src/emc/usr_intf/gscreen/gscreen.glade:2749 +#: src/emc/usr_intf/gscreen/gscreen.glade:3156 +msgid "\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:907 +#: src/emc/usr_intf/gscreen/gscreen.glade:2584 +#, fuzzy +msgid "Tool Setting" +msgstr "Ustawienia" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2648 +#, fuzzy msgid "" -"Arc to arc motion makes a corner the compensated tool can't fit in without " -"gouging" -msgstr "" +"Single\n" +" Step" +msgstr "Pojedyńcza krok" -#: src/emc/rs274ngc/interp_convert.cc:1036 -#: src/emc/rs274ngc/interp_convert.cc:1037 -#: src/emc/rs274ngc/interp_convert.cc:1038 -#: src/emc/rs274ngc/interp_convert.cc:3733 -#: src/emc/rs274ngc/interp_convert.cc:3736 -#: src/emc/rs274ngc/interp_convert.cc:3739 src/emc/rs274ngc/interp_find.cc:97 -#: src/emc/rs274ngc/interp_convert.cc:3376 -#: src/emc/rs274ngc/interp_convert.cc:3379 -#: src/emc/rs274ngc/interp_convert.cc:3382 -#, c-format -msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2661 +#, fuzzy +msgid "" +"Run At\n" +" Line" +msgstr "Czas wykonania:" -#: src/emc/rs274ngc/interp_convert.cc:1494 -#: src/emc/rs274ngc/interp_convert.cc:1466 -msgid "Cannot change control mode with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:2673 +msgid "" +"Change \n" +" View" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1607 -#: src/emc/rs274ngc/interp_convert.cc:1579 -msgid "Cannot change coordinate systems with cutter radius compensation on" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2760 +#, fuzzy +msgid "Homing\n" +msgstr "Bazowanie" -#: src/emc/rs274ngc/interp_convert.cc:1851 -#: src/emc/rs274ngc/interp_convert.cc:1823 -#, c-format -msgid "G%d.1 with no D word" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2781 +#, fuzzy +msgid "" +"Ignore\n" +"Limits" +msgstr "Limity" -#: src/emc/rs274ngc/interp_convert.cc:1854 -#: src/emc/rs274ngc/interp_convert.cc:1826 -#, c-format -msgid "G%d.1 with L word, but plane is not G18" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2810 +#, fuzzy +msgid "" +" Set\n" +"Override" +msgstr "Max Skala prędkości" -#: src/emc/rs274ngc/interp_convert.cc:1865 -#: src/emc/rs274ngc/interp_convert.cc:1837 -#, c-format -msgid "G%d requires D word to be a whole number" +#: src/emc/usr_intf/gscreen/gscreen.glade:2824 +msgid "Graphics\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1872 -#: src/emc/rs274ngc/interp_convert.cc:1844 -#, c-format -msgid "G%d with lathe tool, but plane is not G18" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2838 +#, fuzzy +msgid "" +"Menu\n" +"Level" +msgstr "Poziom" -#: src/emc/rs274ngc/interp_convert.cc:2271 -#: src/emc/rs274ngc/interp_convert.cc:2228 -msgid "Cannot set reference point with cutter compensation in effect" +#: src/emc/usr_intf/gscreen/gscreen.glade:2851 +msgid "" +" Launch\n" +"Keyboard" msgstr "" -"Nie można ustawić punktu referencyjnego z włączoną kompensacją grubości " -"narzędzia" -#: src/emc/rs274ngc/interp_convert.cc:2786 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:2868 +#, fuzzy +msgid "Select Buttons" +msgstr "Opcje Wyjścia" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2955 +#, fuzzy msgid "" -"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" -msgstr "" +"Unhome \n" +" All" +msgstr "Odbazuj wszystkie" -#: src/emc/rs274ngc/interp_convert.cc:2787 -#, c-format -msgid "BUG: restore from level %d !?" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2967 +#, fuzzy +msgid "" +"Unhome\n" +" Axis" +msgstr "Odbazuj oś _%s" -#: src/emc/rs274ngc/interp_convert.cc:2788 -#, c-format -msgid "BUG: restore to level %d !?" +#: src/emc/usr_intf/gscreen/gscreen.glade:2979 +#: src/emc/usr_intf/gscreen/gscreen.glade:3084 +msgid "" +"Toggle\n" +"Readout" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2807 -#, c-format -msgid "M7x: restore_settings G20/G21 failed: '%s'" +#: src/emc/usr_intf/gscreen/gscreen.glade:3004 +#, fuzzy +msgid "" +"Jogging\n" +" Mode" +msgstr "Posuw" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3016 +#, fuzzy +msgid "" +"coordinate\n" +" System" +msgstr "System współrzędnych:" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3060 +msgid "" +"Index\n" +" Tool" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2819 -#, c-format -msgid "M7x: restore_settings failed executing: '%s': %s" +#: src/emc/usr_intf/gscreen/gscreen.glade:3072 +#, fuzzy +msgid "" +"Spindle\n" +"Controls" +msgstr "Ciągły" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3195 +#, fuzzy +msgid "Open" +msgstr "Otwórz..." + +#: src/emc/usr_intf/gscreen/gscreen.glade:3205 +msgid "" +" Block\n" +"Delete" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2885 -#: src/emc/rs274ngc/interp_convert.cc:2628 -msgid "Cannot set motion output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3217 +msgid "" +"Optional\n" +" Stop" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2886 -#: src/emc/rs274ngc/interp_convert.cc:2629 -msgid "No valid P word with M62" +#: src/emc/usr_intf/gscreen/gscreen.glade:3229 +msgid "" +" Full\n" +"View" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2890 -#: src/emc/rs274ngc/interp_convert.cc:2633 -msgid "Cannot set motion digital output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3265 +#, fuzzy +msgid "" +"Next\n" +" Tab" +msgstr "Następna wartość" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3285 +#, fuzzy +msgid "" +" Feed\n" +"Override" +msgstr "Skala prędkości:" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3298 +#, fuzzy +msgid "" +"Spindle\n" +"Override" +msgstr "Skala prędkości wrzeciona:" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3311 +#, fuzzy +msgid "" +" Rapid\n" +"Override" +msgstr "Skala prędkości wrzeciona:" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3332 +#, fuzzy +msgid "" +" Jog\n" +"Speed" +msgstr "Prędkość posuwu:" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3345 +#, fuzzy +msgid "" +" Jog\n" +"Increments" +msgstr "Przyrosty" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3361 +msgid "" +"Adjust\n" +"Rotary" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2891 -#: src/emc/rs274ngc/interp_convert.cc:2634 -msgid "No valid P word with M63" +#: src/emc/usr_intf/gscreen/gscreen.glade:3383 +msgid "" +"Change\n" +" View" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2895 -#: src/emc/rs274ngc/interp_convert.cc:2900 -#: src/emc/rs274ngc/interp_convert.cc:2638 -#: src/emc/rs274ngc/interp_convert.cc:2643 -msgid "Cannot set auxiliary digital output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3431 +#, fuzzy +msgid "" +" Pan\n" +"Vertical" +msgstr "Pionowo" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3444 +#, fuzzy +msgid "" +" Pan\n" +"Horizontal" +msgstr "Poziomo" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3457 +#, fuzzy +msgid "" +" Rotate\n" +"Horiontal" +msgstr "Poziomo" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3470 +#, fuzzy +msgid "" +" Rotate\n" +"Vertical" +msgstr "Pionowo" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3491 +msgid "" +"Search\n" +" Bwd" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2896 -#: src/emc/rs274ngc/interp_convert.cc:2639 -msgid "No valid P word with M64" +#: src/emc/usr_intf/gscreen/gscreen.glade:3503 +msgid "" +"Search\n" +" Fwd" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2901 -#: src/emc/rs274ngc/interp_convert.cc:2644 -msgid "No valid P word with M65" +#: src/emc/usr_intf/gscreen/gscreen.glade:3561 +#, fuzzy +msgid "" +" Reload\n" +"Program" +msgstr "Przeładuj program" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3604 +msgid "" +" Clear\n" +"status" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2931 -#: src/emc/rs274ngc/interp_convert.cc:2673 -msgid "invalid P-word with M66" +#: src/emc/usr_intf/gscreen/gscreen.glade:3634 +msgid "G54" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2946 -#: src/emc/rs274ngc/interp_convert.cc:2688 -msgid "Cannot wait for digital input with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3650 +msgid "calc" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2958 -#: src/emc/rs274ngc/interp_convert.cc:2700 -msgid "Cannot wait for analog input with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3725 +msgid "test" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2973 -#: src/emc/rs274ngc/interp_convert.cc:2714 -msgid "Cannot set motion analog output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3728 +msgid "test2" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2974 -#: src/emc/rs274ngc/interp_convert.cc:2715 -msgid "Invalid analog index with M67" +#: src/emc/usr_intf/gscreen/gscreen.glade:3778 +msgid "Data Entry" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2980 -#: src/emc/rs274ngc/interp_convert.cc:2721 -msgid "Cannot set auxiliary analog output with cutter radius compensation on" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3805 +#, fuzzy +msgid "Calculator Entry" +msgstr "Chłodziwo" -#: src/emc/rs274ngc/interp_convert.cc:2981 -#: src/emc/rs274ngc/interp_convert.cc:2722 -msgid "Invalid analog index with M68" +#: src/emc/usr_intf/gscreen/gscreen.glade:3894 +msgid "Program Restart" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3012 -msgid "Need non-negative Q-word to specify tool number with M61" +#: src/emc/usr_intf/gscreen/gscreen.glade:3909 +msgid "" +"Highlighting the run-at-line with the\n" +"up / down buttons or entering the line\n" +"directly." msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3087 -msgid "Q word with M19 requires a value > 0" +#: src/emc/usr_intf/gscreen/gscreen.glade:3923 +msgid "" +"Line\n" +" Up" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3115 -msgid "Cannot restore context from invalid stack frame - missing M70/M73?" +#: src/emc/usr_intf/gscreen/gscreen.glade:3946 +msgid "" +" Line\n" +"Down" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3156 -#: src/emc/rs274ngc/interp_convert.cc:3173 -#: src/emc/rs274ngc/interp_convert.cc:3188 -#: src/emc/rs274ngc/interp_convert.cc:3202 -#: src/emc/rs274ngc/interp_convert.cc:3216 -#: src/emc/rs274ngc/interp_convert.cc:2806 -#: src/emc/rs274ngc/interp_convert.cc:2823 -#: src/emc/rs274ngc/interp_convert.cc:2837 -#: src/emc/rs274ngc/interp_convert.cc:2851 -#: src/emc/rs274ngc/interp_convert.cc:2865 -msgid "Cannot enable overrides with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:4028 +msgid "S 1000" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3163 -#: src/emc/rs274ngc/interp_convert.cc:3178 -#: src/emc/rs274ngc/interp_convert.cc:3193 -#: src/emc/rs274ngc/interp_convert.cc:3207 -#: src/emc/rs274ngc/interp_convert.cc:3221 -#: src/emc/rs274ngc/interp_convert.cc:2813 -#: src/emc/rs274ngc/interp_convert.cc:2828 -#: src/emc/rs274ngc/interp_convert.cc:2842 -#: src/emc/rs274ngc/interp_convert.cc:2856 -#: src/emc/rs274ngc/interp_convert.cc:2870 -msgid "Cannot disable overrides with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:4098 +msgid " FWD" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3325 -#: src/emc/rs274ngc/interp_convert.cc:3326 -#: src/emc/rs274ngc/interp_convert.cc:3327 -#: src/emc/rs274ngc/interp_convert.cc:2970 -#: src/emc/rs274ngc/interp_convert.cc:2971 -#: src/emc/rs274ngc/interp_convert.cc:2972 -#, c-format -msgid "Indexing axis %c can only be moved with G0" +#: src/emc/usr_intf/gscreen/gscreen.glade:4133 +msgid " REV" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3334 -#: src/emc/rs274ngc/interp_convert.cc:3336 -#: src/emc/rs274ngc/interp_convert.cc:3338 -#: src/emc/rs274ngc/interp_convert.cc:2979 -#: src/emc/rs274ngc/interp_convert.cc:2981 -#: src/emc/rs274ngc/interp_convert.cc:2983 -#, c-format -msgid "Indexing axis %c can only be moved alone" +#: src/emc/usr_intf/gscreen/gscreen2.glade:35 +msgid "screen 2" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3433 -#: src/emc/rs274ngc/interp_convert.cc:3076 -msgid "Cannot probe with feed per rev mode" -msgstr "Nie można wykonać sondowania w trybie posuwu na obrót" - -#: src/emc/rs274ngc/interp_convert.cc:3481 -#: src/emc/rs274ngc/interp_convert.cc:3124 -msgid "Cannot change retract mode with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:403 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:884 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:923 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:934 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:949 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1099 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1102 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1156 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1163 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1166 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2148 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2157 +msgid "**** GMOCCAPY INFO ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3515 -#: src/emc/rs274ngc/interp_convert.cc:3158 -msgid "G10 L1 without offsets has no effect" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:404 +msgid "**** no valid probe config in INI File ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3621 -#: src/emc/rs274ngc/interp_convert.cc:3264 -msgid "Q number in G10 is not an integer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:405 +msgid "**** disabled tool measurement ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3622 -#: src/emc/rs274ngc/interp_convert.cc:3265 -msgid "Invalid tool orientation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:770 +msgid "**** GMOCCAPY ERROR : ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3721 -#: src/emc/rs274ngc/interp_convert.cc:3364 -msgid "I J words not allowed with G10 L2" -msgstr "Słowa I J nie dozwolone razem z G10 L2" - -#: src/emc/rs274ngc/interp_convert.cc:3742 -#: src/emc/rs274ngc/interp_convert.cc:3385 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:772 +#, python-format msgid "" -"Cannot change the active coordinate system with cutter radius compensation on" +"**** gmoccapy can only handle 4 axis, ****\n" +"**** but you have given %d through your INI file ****\n" msgstr "" -"Nie można zmienić aktulanego układu współrzędznych z włączoną kompensacją " -"grubości narzędzia" - -#: src/emc/rs274ngc/interp_convert.cc:3750 -#: src/emc/rs274ngc/interp_convert.cc:3393 -msgid "R not allowed in G10 L20" -msgstr "Słowo R nie dozwolone razem z G10 L20" -#: src/emc/rs274ngc/interp_convert.cc:4323 -#: src/emc/rs274ngc/interp_convert.cc:3966 -msgid "Spindle not turning in G33" -msgstr "Wrzeciono nie obraca się w G33" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:774 +msgid "" +"**** gmoccapy will not start ****\n" +"\n" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4333 -#: src/emc/rs274ngc/interp_convert.cc:3976 -msgid "Spindle not turning in G33.1" -msgstr "Wrzeciono nie obraca się w G33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:786 +#, fuzzy, python-format +msgid "Home axis %s" +msgstr "Bazuj oś _%s" -#: src/emc/rs274ngc/interp_convert.cc:4376 -#: src/emc/rs274ngc/interp_convert.cc:4019 -msgid "BUG: An axis incorrectly moved along with an indexer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:885 +msgid "**** To many increments given in INI File for this screen ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4389 -#: src/emc/rs274ngc/interp_convert.cc:4032 -msgid "BUG: trying to index incorrect axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:886 +msgid "**** Only the first 10 will be reachable through this screen ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4481 -#: src/emc/rs274ngc/interp_convert.cc:4124 -msgid "Cannot use G76 threading cycle with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:924 +msgid "**** gmoccapy screen 2 found ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4484 -#: src/emc/rs274ngc/interp_convert.cc:4127 -msgid "In G76, I must not be 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:929 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1055 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1177 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1225 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1844 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2190 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2200 +msgid "**** GMOCCAPY ERROR ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4486 -#: src/emc/rs274ngc/interp_convert.cc:4129 -msgid "In G76, J must be greater than 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:930 +msgid "**** screen 2 GLADE ERROR: ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4488 -#: src/emc/rs274ngc/interp_convert.cc:4131 -msgid "In G76, K must be greater than J" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:935 +msgid "**** No gmoccapy2.glade file present ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4631 -#: src/emc/rs274ngc/interp_convert.cc:4274 -msgid "" -"Length of cutter compensation entry move is not greater than the tool radius" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:950 +msgid "**** Invalid embeded tab configuration ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4850 -#: src/emc/rs274ngc/interp_convert.cc:4493 -msgid "Zero degree inside corner is invalid for cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:951 +msgid "**** No tabs will be added! ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4888 -#: src/emc/rs274ngc/interp_convert.cc:4896 -#: src/emc/rs274ngc/interp_convert.cc:4531 -#: src/emc/rs274ngc/interp_convert.cc:4539 -msgid "" -"Arc to straight motion makes a corner the compensated tool can't fit in " -"without gouging" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:964 +msgid "ERROR, trying to initialize the user tabs or panaels, check for typos" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4980 -#: src/emc/rs274ngc/interp_convert.cc:4623 -msgid "Cannot change tools with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1056 +msgid "**** Did not find a toolfile file in [EMCIO] TOOL_TABLE ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:5101 -#: src/emc/rs274ngc/interp_convert.cc:4743 -msgid "Cannot change tool offset with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1100 +msgid "**** audio available! ****" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:590 src/emc/rs274ngc/interp_queue.cc:539 -#, c-format -msgid "" -"BUG: cutter compensation has generated an invalid arc with mismatched radii " -"r1 %f r2 %f\n" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1103 +msgid "**** no audio available! ****" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:612 src/emc/rs274ngc/interp_queue.cc:561 -msgid "BUG: Unsupported plane in cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1104 +msgid "**** PYGST libray not installed? ****" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:622 src/emc/rs274ngc/interp_queue.cc:571 -msgid "" -"Straight traverse in concave corner cannot be reached by the tool without " -"gouging" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1157 +msgid "**** virtual keyboard program found : " msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:650 src/emc/rs274ngc/interp_queue.cc:599 -#, c-format -msgid "BUG: Unsupported plane [%d] in cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1164 +msgid "**** virtual keyboard program found : " msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:661 src/emc/rs274ngc/interp_queue.cc:610 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1167 msgid "" -"Straight feed in concave corner cannot be reached by the tool without gouging" +"**** No virtual keyboard installed, we checked for and ." msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:628 -msgid "Cannot feed with zero feed rate" -msgstr "Nie można wykonać G1 z prędkością zerową" - -#: src/emc/rs274ngc/interp_cycles.cc:629 -msgid "Cannot use inverse time feed with canned cycles" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1178 +msgid "**** Error with launching virtual keyboard," msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:630 -msgid "Cannot use canned cycles with cutter compensation on" -msgstr "Nie można użyć cykli z włączoną kompensacją grubości narzędzia" - -#: src/emc/rs274ngc/interp_cycles.cc:818 -msgid "G17 canned cycle is not possible on a machine without Z axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1179 +msgid "**** is onboard or matchbox-keyboard installed? ****" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1004 -#: src/emc/rs274ngc/interp_cycles.cc:1001 -msgid "G17.1 canned cycle is not possible on a machine without W axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1193 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1875 +msgid "interrupt running macro" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1220 -#: src/emc/rs274ngc/interp_cycles.cc:1217 -msgid "G19 canned cycle is not possible on a machine without X axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1226 +msgid "**** Did not find a parameter file in [RS274NGC] PARAMETER_FILE ****" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1388 -#: src/emc/rs274ngc/interp_cycles.cc:1385 -msgid "G19.1 canned cycle is not possible on a machine without U axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1294 +msgid "Select the file you want to be loaded at program start" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1613 -#: src/emc/rs274ngc/interp_cycles.cc:1610 -msgid "G18 canned cycle is not possible on a machine without Y axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1329 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1353 +#, python-format +msgid "**** GMOCCAPY ERROR **** /n Message type %s not suported" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1780 -#: src/emc/rs274ngc/interp_cycles.cc:1777 -msgid "G18.1 canned cycle is not possible on a machine without V axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1462 +msgid "Unknown error type and no error text given" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:170 -msgid "Cannot use polar coordinates with G53" -msgstr "Nie można użyć współrzędnuch polarnych z G53" - -#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 -#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 -#: src/emc/rs274ngc/interp_find.cc:347 -msgid "Cannot specify X or Y words with polar coordinate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1478 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1840 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1847 +msgid "Important Warning" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:272 -msgid "Must specify angle in polar coordinate if at the origin" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1498 +msgid "ERROR : External ESTOP is set, could not change state!" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:338 -msgid "" -"Incremental motion with polar coordinates is indeterminate when at the origin" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1511 +msgid "ERROR : Could not switch the machine on, is limit switch aktivated?" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:348 -msgid "G91 motion with polar coordinates is indeterminate when at the origin" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1730 +msgid "It is not possible to change to MDI Mode at the moment" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:720 -#, c-format -msgid "Requested tool %d not found in the tool table" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1754 +msgid "It is not possible to change to Auto Mode at the moment" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:154 -#: src/emc/rs274ngc/interp_internal.cc:151 -msgid "Cannot use polar coordinate on a machine lacking X or Y axes" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1838 +msgid "" +"\n" +"**** No subroutine folder or program prefix is given in the ini file **** \n" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:155 -#: src/emc/rs274ngc/interp_internal.cc:152 -msgid "Cannot use polar coordinate except in G17 plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1839 +msgid "**** so the corresponding file could not be found ****" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:156 -#: src/emc/rs274ngc/interp_internal.cc:153 -msgid "Cannot specify both polar coordinate and X word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1845 +#, python-format +msgid "" +"\n" +"**** File %s of the macro could not be found ****\n" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:157 -#: src/emc/rs274ngc/interp_internal.cc:154 -msgid "Cannot specify both polar coordinate and Y word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1846 +#, python-format +msgid "**** we searched in subdirectory %s ****" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:178 -#: src/emc/rs274ngc/interp_internal.cc:190 -#: src/emc/rs274ngc/interp_internal.cc:203 -#: src/emc/rs274ngc/interp_internal.cc:175 -#: src/emc/rs274ngc/interp_internal.cc:187 -#: src/emc/rs274ngc/interp_internal.cc:200 -msgid "Polar coordinates can only be used for motion" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1851 +msgid "Enter value:" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1143 src/emc/rs274ngc/interp_read.cc:1147 -#: src/emc/rs274ngc/interp_read.cc:1112 src/emc/rs274ngc/interp_read.cc:1116 -#, c-format -msgid "Bad character '\\%03o' used" -msgstr "Użyty niewłaściwy znak '\\%03o'" - -#: src/emc/rs274ngc/interp_read.cc:1147 src/emc/rs274ngc/interp_read.cc:1116 -#, c-format -msgid "Bad character '%c' used" -msgstr "Użyty niewłaściwy znak %c" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1852 +#, fuzzy, python-format +msgid "Set parameter %s to:" +msgstr "Brak parametrów" -#: src/emc/rs274ngc/interp_read.cc:1671 src/emc/rs274ngc/interp_read.cc:1623 -msgid "Left bracket missing after 'while'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1854 +msgid "conversion error" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1686 src/emc/rs274ngc/interp_read.cc:1638 -msgid "Left bracket missing after 'repeat'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1855 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3610 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3634 +msgid "Conversion error !" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1701 src/emc/rs274ngc/interp_read.cc:1653 -msgid "Left bracket missing after 'if'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1856 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3299 +msgid "" +"Please enter only numerical values\n" +"Values have not been applied" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1716 src/emc/rs274ngc/interp_read.cc:1668 -msgid "Left bracket missing after 'elseif'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2149 +#, python-brace-format +msgid "**** replaced {0} to {1} ****" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1919 src/emc/rs274ngc/interp_read.cc:2174 -msgid "Cannot read current position with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2158 +msgid "" +"\n" +"**** found more than 9 macros, only the first 9 will be used ****" msgstr "" -"Nie można odczytać aktualnej pozycji z włączoną kompensacją grubości " -"narzędzia" - -#: src/emc/rs274ngc/interp_read.cc:1934 src/emc/rs274ngc/interp_read.cc:2189 -msgid "Expected # reading parameter" -msgstr "Oczekiwano # odczytując parametr" -#: src/emc/rs274ngc/interp_read.cc:1936 src/emc/rs274ngc/interp_read.cc:2191 -msgid "Expected ] reading bracketed parameter" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2191 +#, python-format +msgid "**** %s ****" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2608 src/emc/rs274ngc/interp_read.cc:2881 -#, c-format -msgid "bad number format (conversion failed) parsing '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2201 +#, python-format +msgid "**** No widget named: %s to sensitize ****" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2609 src/emc/rs274ngc/interp_read.cc:2882 -#, c-format -msgid "bad number format (trailing characters) parsing '%s'" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2366 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1561 +#, fuzzy +msgid "No tool description available" +msgstr "Brak szczegółów." -#: src/emc/rs274ngc/interp_read.cc:2699 src/emc/rs274ngc/interp_read.cc:2972 -msgid "Calculation resulted in 'not a number'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2591 +#, python-format +msgid "Halo, welcome to the test message %d" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2701 src/emc/rs274ngc/interp_read.cc:2974 -msgid "Calculation resulted in 'infinity'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2732 +msgid "Hal Pin is low, Access denied" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2994 src/emc/rs274ngc/interp_read.cc:3268 -#, c-format -msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2734 +msgid "wrong code entered, Access denied" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3106 src/emc/rs274ngc/interp_read.cc:3391 -msgid "Multiple U words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2735 +msgid "Just to warn you" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3122 src/emc/rs274ngc/interp_read.cc:3407 -msgid "Multiple V words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2810 +msgid "ERROR : No limit switch is active, ignore limits will not be set." msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3138 src/emc/rs274ngc/interp_read.cc:3423 -msgid "Multiple W words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2850 +#, fuzzy +msgid "Classicladder real-time component not detected" +msgstr "Komponent RT nie załadowany" -#: src/emc/rs274ngc/interp_o_word.cc:95 src/emc/rs274ngc/interp_o_word.cc:104 -#, c-format -msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2937 +msgid "Something went wrong, we have an unknown spindle widget" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:161 -#: src/emc/rs274ngc/interp_read.cc:2093 -#, c-format -msgid "Named parameter #<%s> not defined" -msgstr "Nazwany parametr #<%s> nie zdefinowany" - -#: src/emc/rs274ngc/interp_namedparams.cc:191 -msgid "cant open ini file '%s'" -msgstr "nie można otworzyć %s" - -#: src/emc/rs274ngc/interp_namedparams.cc:208 -msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3046 +msgid "Do you really want to delete the MDI history?\n" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:232 -#, c-format -msgid "fetch_hal_param: hal_init(%s): %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3047 +msgid "this will not delete the MDI History file, but will\n" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:233 -#, c-format -msgid "fetch_hal_param: hal_ready(): %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3048 +msgid "delete the listbox entries for this session" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:370 -#: src/emc/rs274ngc/interp_read.cc:1889 src/emc/rs274ngc/interp_read.cc:1932 -#, c-format -msgid "Internal error: Could not assign #<%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3049 +msgid "Attention!!" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:378 -#, c-format -msgid "Cannot assign to read-only parameter #<%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3076 +msgid "This button will show or hide the keyboard" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:682 -#, c-format -msgid "BUG: lookup_named_param(%s): unhandled index=%fn" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3196 +#, python-format +msgid "Offset %s could not be set, because off unknown axis" msgstr "" -#: src/emc/rs274ngc/rs274ngc_pre.cc:1269 src/emc/rs274ngc/rs274ngc_pre.cc:1344 -#: src/emc/rs274ngc/rs274ngc_pre.cc:897 -msgid "Queue is not empty after tool change" -msgstr "Kolejka nie jest pusta po zmianie narzędzia" - -#: src/emc/rs274ngc/rs274ngc_pre.cc:1648 src/emc/rs274ngc/rs274ngc_pre.cc:1145 -#, c-format -msgid "Unable to open parameter file: '%s'" -msgstr "Nie można otworzyć pliku pliku z parametrami <%s>" - -#: src/emc/rs274ngc/rs274ngc_return.hh:4 -msgid "A file is already open" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3197 +msgid "Wrong offset setting!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:5 -msgid "All axes missing with g92" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3202 +#, fuzzy +msgid "Enter value for diameter" +msgstr "Nie całkowita wartość dla całkowitego parametru" -#: src/emc/rs274ngc/rs274ngc_return.hh:6 -msgid "All axes missing with motion code" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3203 +#, fuzzy +msgid "Set diameter to:" +msgstr " średnica" -#: src/emc/rs274ngc/rs274ngc_return.hh:7 -msgid "Arc radius too small to reach end point" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3206 +#, fuzzy +msgid "Enter value for radius" +msgstr "Nie całkowita wartość dla całkowitego parametru" -#: src/emc/rs274ngc/rs274ngc_return.hh:8 -msgid "Argument to acos out of range" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3207 +#, fuzzy +msgid "Set radius to:" +msgstr " promień" -#: src/emc/rs274ngc/rs274ngc_return.hh:9 -msgid "Argument to asin out of range" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3210 +#, fuzzy, python-format +msgid "Enter value for axis %s" +msgstr "Nie całkowita wartość dla całkowitego parametru" -#: src/emc/rs274ngc/rs274ngc_return.hh:10 -msgid "Attempt to divide by zero" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3211 +#, python-format +msgid "Set axis %s to:" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:11 -msgid "Attempt to raise negative to non integer power" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3215 +msgid "Conversion error in btn_set_value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:12 -msgid "Bad format unsigned integer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3216 +msgid "Conversion error in btn_set_value!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:13 -msgid "Bad number format" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3217 +msgid "Please enter only numerical values. Values have not been applied" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:14 -msgid "Bug bad g code modal group 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3232 +msgid "" +"you did not selected a system to be changed to, so nothing will be changed" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:15 -msgid "Bug code not g0 or g1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3640 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3654 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3658 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3673 +msgid "Important Warning!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:16 -msgid "Bug code not g17 g18 or g19" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3284 +msgid "Enter the block height" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:17 -msgid "Bug code not g20 or g21" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3285 +msgid "Block height measured from base table" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:18 -msgid "Bug code not g28 or g30" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3297 +msgid "Conversion error in btn_block_height" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:19 -msgid "Bug code not g2 or g3" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3298 +msgid "Conversion error in btn_block_height!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:20 -msgid "Bug code not g4 g10 g28 g30 g53 or g92 series" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3536 +msgid "Please remove the mounted tool and press OK when done" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:21 -msgid "Bug code not g61 g61.1 or g64" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3539 +#, python-brace-format +msgid "" +"Please change to tool\n" +"\n" +"# {0:d} {1}\n" +"\n" +" then click OK." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:22 -msgid "Bug code not g90 or g91" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3549 +msgid "Tool Change has been aborted!\n" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:23 -msgid "Bug code not g98 or g99" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3550 +msgid "The old tool will remain set!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:24 -msgid "Bug code not in g92 series" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3570 +msgid "No or more than one tool selected in tool table" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:25 -msgid "Bug code not in range g54 to g593" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3571 +msgid "Please select only one tool in the table" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:26 -msgid "Bug code not m0 m1 m2 m30 m60" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3573 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3580 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3589 +msgid "Warning Tool Touch off not possible!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:27 -msgid "Bug distance mode not g90 or g91" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3577 +msgid "you can not touch of a tool, witch is not mounted in the spindle" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:28 -msgid "Bug function should not have been called" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3578 +msgid "your selection has been reseted to the tool in spindle" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:29 -msgid "Bug in tool radius comp" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3586 +#, fuzzy +msgid "" +"Tool touch off is not possible with cutter radius compensation switched on!\n" +msgstr "Nie można zmienić planu z włączoną kompensacją promienia narzędzia" -#: src/emc/rs274ngc/rs274ngc_return.hh:30 -msgid "Bug plane not xy yz or xz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3587 +msgid "Please emit an G40 before tool touch off" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:31 -msgid "Bug side not right or left" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3597 +msgid "Real big error!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:32 -msgid "Bug unknown motion code" -msgstr "Błąd użyty nieznany kod ruchu" - -#: src/emc/rs274ngc/rs274ngc_return.hh:33 -msgid "Bug unknown operation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3598 +msgid "" +"You managed to come to a place that is not possible in on_btn_tool_touchoff" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:34 -msgid "Cannot change axis offsets with cutter radius comp" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3602 +#, fuzzy, python-format +msgid "Enter value for axis %s to set:" +msgstr "Nie całkowita wartość dla całkowitego parametru" -#: src/emc/rs274ngc/rs274ngc_return.hh:35 -msgid "Cannot create backup file" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3603 +#, python-brace-format +msgid "Set parameter of tool {0:d} and axis {1} to:" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:36 -msgid "Cannot do g1 with zero feed rate" -msgstr "Nie można wykonać G1 z prędkością zerową" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3608 +#, python-format +msgid "Conversion error because of wrong entry for touch off axis %s" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:37 -msgid "Cannot do zero repeats of cycle" -msgstr "Nie można wykonać zero powtórzeń cyklu" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3628 +msgid "Enter the tool number as integer " +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:38 -msgid "Cannot make arc with zero feed rate" -msgstr "Nie można wykonać łuku z prędkością zerową" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3629 +#, fuzzy +msgid "Select the tool to change" +msgstr "Zaznacz element do podglądu" -#: src/emc/rs274ngc/rs274ngc_return.hh:39 -msgid "Cannot open backup file" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3631 +msgid "Conversion error because of wrong entry for tool number\n" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:40 -msgid "Cannot open variable file" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3632 +msgid "enter only integer nummbers" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:41 -msgid "Cannot probe with cutter radius comp on" -msgstr "Nie można wykonać sondowania z włączoną kompensacją grubości narzędzia" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3657 +msgid "Selected tool is already in spindle, no change needed." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:42 -msgid "Cannot probe with zero feed rate" -msgstr "Nie można wykonać sondowania z prędkością zerową" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3653 +msgid "" +"you selected no or more than one tool, the tool selection must be unique" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:43 -msgid "Cannot put a b in canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3672 +msgid "Could not understand the entered tool number. Will not change anything" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:44 -msgid "Cannot put a c in canned cycle" +#: src/emc/usr_intf/gmoccapy/dialogs.py:33 +#: src/emc/usr_intf/gmoccapy/dialogs.py:38 +msgid "Enter System Unlock Code" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:45 -msgid "Cannot put an a in canned cycle" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:46 -msgid "Cannot turn cutter radius comp on when on" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter the value to set" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:47 -msgid "Cannot use axis values with g80" +#: src/emc/usr_intf/gmoccapy/notification.py:205 +#, python-format +msgid "Error trying to delet the message with number %s" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:48 -msgid "Cannot use axis values without a g code that uses them" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:409 +msgid "left rotate, middle move, right zoom" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:49 -msgid "Cannot use g28 or g30 with cutter radius comp" -msgstr "Nie można użyć G28 lub G30 z włączoną kompensacją grubości narzędzia" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:413 +msgid "left zoom, middle move, right rotate" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:50 -msgid "Cannot use g53 incremental" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:417 +msgid "left move, middle rotate, right zoom" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:51 -msgid "Cannot use g53 with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:421 +msgid "left zoom, middle rotate, right move" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:52 -msgid "Cannot use two g codes that both use axis values" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:425 +msgid "left move, middle zoom, right rotate" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:53 -msgid "Command too long" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:429 +msgid "left rotate, middle zoom, right move" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:54 -msgid "Current point same as end point of arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:526 +#, fuzzy +msgid "clear plot" +msgstr "Czyści podgląd ruchu" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:585 +#, fuzzy +msgid "view perspective" +msgstr "Widok perspektywy" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:608 +msgid "view along the X axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:55 -msgid "Dwell time missing with g4" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:633 +msgid "view along the Y axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:56 -msgid "Dwell time p word missing with g82" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:658 +msgid "view along the Z axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:57 -msgid "Dwell time p word missing with g86" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:685 +msgid "Show or hide tool path" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:58 -msgid "Dwell time p word missing with g88" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:708 +msgid "Show or hide dimensions" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:59 -msgid "Dwell time p word missing with g89" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:731 +msgid "" +"view along the Y axis from positive to negative as viewn for a back tool " +"lathe" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:60 -msgid "Equal sign missing in parameter setting" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:791 +#, fuzzy +msgid "Offset Page" msgstr "" +"Przesunięcie\n" +"%s" -#: src/emc/rs274ngc/rs274ngc_return.hh:61 -msgid "F word missing with inverse time arc move" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:809 +#, fuzzy +msgid "Tooledit" +msgstr "Długość narzędzia:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:831 +#, fuzzy +msgid "File Selection" +msgstr "Wybór osi" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:869 +#, fuzzy +msgid "Toggle between metric and imperial units" +msgstr "Przełącza między przesuwaniem lub obrotem" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:887 +msgid "Switch DRO to DTG mode" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:62 -msgid "F word missing with inverse time g1 move" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:905 +#, fuzzy +msgid "Toggle between machine and relative coordinates" +msgstr "Przełącza między przesuwaniem lub obrotem" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:928 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:946 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:963 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:980 +msgid "Klick to toggle through the DRO modes" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:63 -msgid "File ended with no percent sign" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1253 +#, fuzzy +msgid "Ignore limits" +msgstr "Ignoruj M1" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1321 +#, fuzzy +msgid "Jogging" +msgstr "Bazowanie" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1430 +msgid "Information over the tool in spindle" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:64 -msgid "File ended with no percent sign or program end" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1448 +#, fuzzy +msgid "Tool no." +msgstr "Kolejność narzędzi:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1474 +#, fuzzy +msgid "Diameter" +msgstr " średnica" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1503 +msgid "offset z" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:65 -msgid "File name too long" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1532 +msgid "offset x" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:66 -msgid "G code out of range" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1580 +#, fuzzy +msgid "Tool information" +msgstr "Konfiguracja" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1592 +msgid "G and M code information as well as speed and feed" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:67 -msgid "I word given for arc in yz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1611 +#, fuzzy +msgid "active_mcodes_label" +msgstr "Aktywne kody:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1663 +#, fuzzy +msgid "active_gcodes_label" +msgstr "Aktywne kody:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1717 +#, fuzzy +msgid "G-Code" +msgstr "Moc" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1730 +msgid "The name and location of the loaded program" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:68 -msgid "I word missing with g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1742 +#, fuzzy +msgid "No Program loaded" +msgstr "Brak załadowanego pliku" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1750 +#, fuzzy +msgid "Program" +msgstr "Opcje programu" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1800 +msgid "Vel." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:69 -msgid "J word given for arc in xz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1814 +msgid "Displays the current velocity" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:70 -msgid "J word missing with g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1838 +msgid "adjust max vel of machine" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:71 -msgid "K word given for arc in xy plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1854 +#, fuzzy +msgid "Max. Velocity" +msgstr "Maksymalna prędkość:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1885 +msgid "Displayes the programmed feed rate" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:72 -msgid "K word missing with g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1904 +#, fuzzy +msgid "reset feed override to 100 %" +msgstr "Ustawia skalę prędkości od 0% do 100%" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1922 +#, fuzzy +msgid "adjust feed override" +msgstr "Skala prędkości:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1941 +#, fuzzy +msgid "Feed Override [%]" +msgstr "Skala prędkości:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2034 +#, fuzzy +msgid "Cooling" +msgstr "Chłodziwo" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2285 +#, fuzzy +msgid "Spindle [rpm]" +msgstr "Wrzeciono" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2377 +msgid "" +"Search\n" +" back" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:73 -msgid "Left bracket missing after slash with atan" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2394 +msgid "" +"Search\n" +" fwd" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:74 -msgid "Left bracket missing after unary operation name" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2446 +#, fuzzy +msgid "" +"Replace\n" +" Text:" +msgstr "Zamień:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2456 +#, fuzzy +msgid "" +"Replace\n" +" All" +msgstr "Zamień wszystko" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2470 +#, fuzzy +msgid "" +"Ignore\n" +" Case" +msgstr "Ignoruj M1" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2616 +msgid "Start as fullscreen" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:75 -msgid "M code greater than 199" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2631 +msgid "Start maximized" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:76 -msgid "Mixed radius ijk format for arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2646 +msgid "Start as window" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:77 -msgid "Multiple a words on one line" -msgstr "Słowo A użyte wielokrotnie w jednej linii" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2670 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4426 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4943 +#, fuzzy +msgid "X Pos." +msgstr " Poz " -#: src/emc/rs274ngc/rs274ngc_return.hh:78 -msgid "Multiple b words on one line" -msgstr "Słowo B użyte wielokrotnie w jednej linii" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2683 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4437 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4928 +#, fuzzy +msgid "Y Pos." +msgstr " Poz " -#: src/emc/rs274ngc/rs274ngc_return.hh:79 -msgid "Multiple c words on one line" -msgstr "Słowo C użyte wielokrotnie w jednej linii" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2698 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4855 +msgid "Width" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:80 -msgid "Multiple d words on one line" -msgstr "Słowo D użyte wielokrotnie w jednej linii" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2713 +msgid "Height" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:81 -msgid "Multiple f words on one line" -msgstr "Słowo F użyte wielokrotnie w jednej linii" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2811 +msgid "hide cursor" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:82 -msgid "Multiple h words on one line" -msgstr "Słowo H użyte wielokrotnie w jednej linii" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2830 +#, fuzzy +msgid "Main Window" +msgstr "Wrzeciono" -#: src/emc/rs274ngc/rs274ngc_return.hh:83 -msgid "Multiple i words on one line" -msgstr "Słowo I użyte wielokrotnie w jednej linii" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2857 +#, fuzzy +msgid "Show keyboard on offset" +msgstr "Pokaż offsety" -#: src/emc/rs274ngc/rs274ngc_return.hh:84 -msgid "Multiple j words on one line" -msgstr "Słowo J użyte wielokrotnie w jednej linii" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2871 +msgid "Show keyboard on tooledit" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:85 -msgid "Multiple k words on one line" -msgstr "Słowo K użyte wielokrotnie w jednej linii" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2885 +msgid "Show keyboard on MDI" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:86 -msgid "Multiple l words on one line" -msgstr "Słowo L użyte wielokrotnie w jednej linii" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2899 +msgid "Show keyboard on EDIT" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:87 -msgid "Multiple p words on one line" -msgstr "Słowo P użyte wielokrotnie w jednej linii" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2913 +msgid "Show keyboard on load file" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:88 -msgid "Multiple q words on one line" -msgstr "Słowo Q użyte wielokrotnie w jednej linii" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2931 +#, fuzzy +msgid "Keyboard" +msgstr "Moc" -#: src/emc/rs274ngc/rs274ngc_return.hh:89 -msgid "Multiple r words on one line" -msgstr "Słowo R użyte wielokrotnie w jednej linii" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2959 +#, fuzzy +msgid "show preview" +msgstr "Podgląd" -#: src/emc/rs274ngc/rs274ngc_return.hh:90 -msgid "Multiple s words on one line" -msgstr "Słowo S użyte wielokrotnie w jednej linii" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2973 +#, fuzzy +msgid "show offsets" +msgstr "Pokaż offsety" -#: src/emc/rs274ngc/rs274ngc_return.hh:91 -msgid "Multiple t words on one line" -msgstr "Słowo T użyte wielokrotnie w jednej linii" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2991 +msgid "On Touch off" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:92 -msgid "Multiple x words on one line" -msgstr "Słowo X użyte wielokrotnie w jednej linii" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3005 +msgid "" +" Display \n" +"Aux Screen" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:93 -msgid "Multiple y words on one line" -msgstr "Słowo Y użyte wielokrotnie w jednej linii" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3052 +#, fuzzy +msgid "Relative Color" +msgstr "Względna" -#: src/emc/rs274ngc/rs274ngc_return.hh:94 -msgid "Multiple z words on one line" -msgstr "Słowo Z użyte wielokrotnie w jednej linii" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3079 +#, fuzzy +msgid "Absolute Color" +msgstr "Absolutne" -#: src/emc/rs274ngc/rs274ngc_return.hh:95 -msgid "Must use g0 or g1 with g53" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3110 +msgid "DTG Color" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:96 -msgid "Negative argument to sqrt" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3139 +msgid "Use Auto Units" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:97 -msgid "Negative d word tool radius index used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3159 +#, fuzzy +msgid "Show the DRO Button" +msgstr "Shift+Lewy Przycisk" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3190 +#, fuzzy +msgid "Homed color" +msgstr "Bazuj wszystkie" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3204 +#, fuzzy +msgid "Unhomed color" +msgstr "Odbazuj wszystkie" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3299 +#, fuzzy +msgid "Digits" +msgstr "Cyfrowe" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3344 +msgid "" +"toggle DRO mode \n" +"clicking on the DRO" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:98 -msgid "Negative f word used" -msgstr "Użyty ujemny kod F" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3369 +#, fuzzy +msgid "DRO" +msgstr "d)" -#: src/emc/rs274ngc/rs274ngc_return.hh:99 -msgid "Negative g code used" -msgstr "Użyty ujemny kod G" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3401 +#, fuzzy +msgid "Grid size" +msgstr "Rozmiar" -#: src/emc/rs274ngc/rs274ngc_return.hh:100 -msgid "Negative h word used" -msgstr "Użyty ujemny kod H" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3430 +#, fuzzy +msgid "Show DRO" +msgstr "Pokaż" -#: src/emc/rs274ngc/rs274ngc_return.hh:101 -msgid "Negative l word used" -msgstr "Użyty ujemny kod L" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3444 +#, fuzzy +msgid "Show offsets" +msgstr "Pokaż offsety" -#: src/emc/rs274ngc/rs274ngc_return.hh:102 -msgid "Negative m code used" -msgstr "Użyty ujemny kod M" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3458 +#, fuzzy +msgid "Show DTG" +msgstr "Pokaż" -#: src/emc/rs274ngc/rs274ngc_return.hh:103 -msgid "Negative or zero q value used" -msgstr "Użyta ujemna lub zerowa wartość słowa Q" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3483 +#, fuzzy +msgid "Mouse Button mode" +msgstr "Dane ruchu" -#: src/emc/rs274ngc/rs274ngc_return.hh:104 -msgid "Negative p word used" -msgstr "Użyte ujemne słowo P" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3512 +#, fuzzy +msgid "Preview" +msgstr "Moc" -#: src/emc/rs274ngc/rs274ngc_return.hh:105 -msgid "Negative spindle speed used" -msgstr "Użyta ujemna prędkość wrzeciona" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3565 +msgid "" +"current\n" +" file" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:106 -msgid "Negative tool id used" -msgstr "Użyty ujemny numer narzędzia" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3611 +msgid "File to load on start" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:107 -msgid "Nested comment found" -msgstr "Znaleziono zagnieżdżony komentarz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3638 +#, fuzzy +msgid "Select user dir" +msgstr "Wybiera prędkość posuwu" -#: src/emc/rs274ngc/rs274ngc_return.hh:108 -msgid "No characters found in reading real value" -msgstr "Nie znaleziono znaków podczas odczytywania wartości float" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3647 +#, fuzzy +msgid "Select jump to dir" +msgstr "Zaznacz element do podglądu" -#: src/emc/rs274ngc/rs274ngc_return.hh:109 -msgid "Non integer value for integer" -msgstr "Nie całkowita wartość dla całkowitego parametru" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3767 +msgid "Themes and sound" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:110 -msgid "Null missing after newline" -msgstr "Brakuje NULL po znaku nowej linii" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3799 +msgid "Appearance" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:111 -msgid "Parameter file out of order" -msgstr "Brak kolejności pliku parametrów" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3833 +#, fuzzy +msgid "Scale max velocity" +msgstr "Maksymalna prędkość:" -#: src/emc/rs274ngc/rs274ngc_return.hh:112 -msgid "Parameter number out of range" -msgstr "Numer parametru poza zakresem" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3846 +#, fuzzy +msgid "Scale jog velocity" +msgstr "Pokaż prędkość" -#: src/emc/rs274ngc/rs274ngc_return.hh:113 -msgid "Parameter is readonly" -msgstr "Parametr jest tylko do odczytu" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3861 +#, fuzzy +msgid "Scale feed override" +msgstr "Skala prędkości:" -#: src/emc/rs274ngc/rs274ngc_return.hh:114 -msgid "Q word missing with g83" -msgstr "Słowo Q użyte bez G83" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3876 +#, fuzzy +msgid "Scale spindle override" +msgstr "Skala prędkości wrzeciona:" -#: src/emc/rs274ngc/rs274ngc_return.hh:115 -msgid "Queue is not empty after probing" -msgstr "Kolejka nie jest pusta po skanowaniu" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3970 +#, fuzzy +msgid "Hardware MPG Scale" +msgstr "Skala enkodera" -#: src/emc/rs274ngc/rs274ngc_return.hh:116 -msgid "R clearance plane unspecified in cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3994 +msgid "Use keyboard shortcuts" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:117 -msgid "R i j k words all missing for arc" -msgstr "Brak wszystkich słów R I J K dla łuku" - -#: src/emc/rs274ngc/rs274ngc_return.hh:118 -msgid "R less than x in cycle in yz plane" -msgstr "R mniejsze niż X w cyklu w planie YZ" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4007 +msgid "Keyboard shortcuts" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:119 -msgid "R less than y in cycle in xz plane" -msgstr "R mniejsze niż Y w cyklu w planie XZ" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4034 +#, fuzzy +msgid "Use unlock code" +msgstr "Nieużywany enkoder" -#: src/emc/rs274ngc/rs274ngc_return.hh:120 -msgid "R less than z in cycle in xy plane" -msgstr "R mniejsze niż Z w cyklu w planie XY" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4050 +msgid "Do not use unlock code" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:121 -msgid "R word with no g code that uses it" -msgstr "Słowo R bez kodu G które go używa" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4066 +msgid "Use hal pin to unlock" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:122 -msgid "Slash missing after first atan argument" -msgstr "Brak ukośnika po pierwszym argumencie atan" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4087 +#, fuzzy +msgid "Unlock settings" +msgstr "Bazowanie" -#: src/emc/rs274ngc/rs274ngc_return.hh:123 -msgid "Spindle not turning clockwise in g84" -msgstr "Wrzeciono nie obraca się w prawo w G84" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4197 +#, fuzzy +msgid "Spindle bar min" +msgstr "Włącza hamulec wrzeciona" -#: src/emc/rs274ngc/rs274ngc_return.hh:124 -msgid "Spindle not turning in g86" -msgstr "Wrzeciono nie obraca się w G86" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4210 +#, fuzzy +msgid "Spindle bar max" +msgstr "Hamulec wrzeciona" -#: src/emc/rs274ngc/rs274ngc_return.hh:125 -msgid "Spindle not turning in g87" -msgstr "Wrzeciono nie obraca się w G87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4252 +msgid "Hide turtle Jog Button" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:126 -msgid "Spindle not turning in g88" -msgstr "Wrzeciono nie obraca się w G88" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4282 +msgid "Turtle jog Factor" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:127 -msgid "Sscanf failed" -msgstr "Sscanf przerwane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4318 +#, fuzzy +msgid "Turtle Jog" +msgstr "Bazowanie" -#: src/emc/rs274ngc/rs274ngc_return.hh:128 -msgid "Start point too close to probe point" -msgstr "Punkt początkowy zbyt blisko punktu pomiaru" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4360 +msgid "Hardware" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:129 -msgid "Too many m codes on line" -msgstr "Za dużo kodów M w jednej linii" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4392 +msgid "Use auto tool measurement" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:130 -msgid "Pocket max too large" -msgstr "Numer gniazda poza zakresem" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4450 +#, fuzzy +msgid "Probe Height" +msgstr "Wejście Sondowania" -#: src/emc/rs274ngc/rs274ngc_return.hh:131 -msgid "Tool radius not less than arc radius with comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4485 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4498 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4527 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4556 +msgid "0.000" msgstr "" -"Promień narzędzia nie jest mniejszy niż promień łuku z włączoną kompensacją " -"promienia narzędzia" -#: src/emc/rs274ngc/rs274ngc_return.hh:132 -msgid "Two g codes used from same modal group" -msgstr "Dwa kody G z tej same grupy modalnej" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4514 +#, fuzzy +msgid "Z Pos." +msgstr " Poz " -#: src/emc/rs274ngc/rs274ngc_return.hh:133 -msgid "Two m codes used from same modal group" -msgstr "Dwa kody M z tej same grupy modalnej" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4543 +#, fuzzy +msgid "Max. Probe" +msgstr "Sondowanie" -#: src/emc/rs274ngc/rs274ngc_return.hh:134 -#, c-format -msgid "Unable to open file <%s>" -msgstr "Nie można otworzyć pliku <%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4575 +#, fuzzy +msgid "Probe Informations" +msgstr "Opcje programu" -#: src/emc/rs274ngc/rs274ngc_return.hh:135 -msgid "Unclosed comment found" -msgstr "Znaleziony niezamknięty komentarz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4607 +#, fuzzy +msgid "Search Vel." +msgstr "Prędkość najazdu na krańcówkę:" -#: src/emc/rs274ngc/rs274ngc_return.hh:136 -msgid "Unclosed expression" -msgstr "Niezamknięte wyrażenie" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4618 +#, fuzzy +msgid "Probe Vel." +msgstr "Wejście Sondowania" -#: src/emc/rs274ngc/rs274ngc_return.hh:137 -msgid "Unknown g code used" -msgstr "Użyty nieznany kod G" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4674 +msgid "Probe velocitys" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:138 -msgid "Unknown m code used" -msgstr "Użyty nieznany kod M" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4688 +msgid "" +"No valid configuration\n" +"found in your INI file,\n" +"please take a look at \n" +"the WIKI to check how\n" +"to configure the settings." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:139 -msgid "Unknown operation" -msgstr "Nieznana operacja" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4708 +#, fuzzy +msgid "Tool Measurement" +msgstr "Chłodziwo" -#: src/emc/rs274ngc/rs274ngc_return.hh:140 -msgid "Unknown operation name starting with a" -msgstr "Nieznana nazwa operacji zaczynająca sie na A" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4737 +msgid "" +"If the 4'th axis is used\n" +"for a tool changer, you\n" +"hide the DRO and\n" +"jog buttons." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:141 -msgid "Unknown operation name starting with m" -msgstr "Nieznana nazwa operacji zaczynająca sie na M" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4749 +#, fuzzy +msgid "Hide 4'th axis" +msgstr "T_estuj tę oś" -#: src/emc/rs274ngc/rs274ngc_return.hh:142 -msgid "Unknown operation name starting with o" -msgstr "Nieznana nazwa operacji zaczynająca sie na O" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4769 +#, fuzzy +msgid "Tool Changer" +msgstr "Chłodziwo" -#: src/emc/rs274ngc/rs274ngc_return.hh:143 -msgid "Unknown operation name starting with x" -msgstr "Nieznana nazwa operacji zaczynająca sie na X" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4808 +msgid "Use frames" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:144 -msgid "Unknown word starting with a" -msgstr "Nieznane słowo zaczynające sie na A" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4840 +msgid "max." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:145 -msgid "Unknown word starting with c" -msgstr "Nieznane słowo zaczynające sie na C" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4992 +msgid "Launch test message" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:146 -msgid "Unknown word starting with e" -msgstr "Nieznane słowo zaczynające sie na E" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5011 +msgid "" +" gmoccapy message\n" +" behavior and appearance " +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:147 -msgid "Unknown word starting with f" -msgstr "Nieznane słowo zaczynające sie na F" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5049 +msgid "Do not use run from line" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:148 -msgid "Unknown word starting with l" -msgstr "Nieznane słowo zaczynające sie na L" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5065 +#, fuzzy +msgid "Use run from line" +msgstr "Uruchom od zaznaczo_nej linii" -#: src/emc/rs274ngc/rs274ngc_return.hh:149 -msgid "Unknown word starting with r" -msgstr "Nieznane słowo zaczynające sie na R" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5086 +#, fuzzy +msgid "Run from line" +msgstr "Bazowanie" -#: src/emc/rs274ngc/rs274ngc_return.hh:150 -msgid "Unknown word starting with s" -msgstr "Nieznane słowo zaczynające sie na S" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5119 +#, fuzzy +msgid "" +"Advanced\n" +" Settings" +msgstr "Zaawansowane Opcje" -#: src/emc/rs274ngc/rs274ngc_return.hh:151 -msgid "Unknown word starting with t" -msgstr "Nieznane słowo zaczynające sie na T" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5157 +msgid "User tab 1" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:152 -msgid "Unknown word where unary operation could be" -msgstr "Nieznane słowo w miejscu pojedyńczego operatora" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5171 +msgid "User tabs" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:153 -msgid "X and y words missing for arc in xy plane" -msgstr "Brak wartości X i Y dla łuku w planie XY" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5207 +msgid "Estop the machine" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:154 -msgid "X and z words missing for arc in xz plane" -msgstr "Brak wartości X i Z dla łuku w planie XZ" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5229 +#, fuzzy +msgid "Turn the machine on/off" +msgstr "Włącza maszyne" -#: src/emc/rs274ngc/rs274ngc_return.hh:155 -msgid "X value unspecified in yz plane canned cycle" -msgstr "Wartość X niezdefiniowana w cyklu w planie YZ" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5251 +msgid "enter manual mode to jog axis by hand or touch off" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:156 -msgid "Y and z words missing for arc in yz plane" -msgstr "Brakuje wartości Y i Z dla łuku w planie YZ" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5271 +#, fuzzy +msgid "enter MDI mode to launch g-code commands" +msgstr "Musi być tryb MDI aby wykonać polecenie MDI" -#: src/emc/rs274ngc/rs274ngc_return.hh:157 -msgid "Y value unspecified in xz plane canned cycle" -msgstr "Wartość Y niezdefiniowana w cyklu w planie XZ" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5290 +#, fuzzy +msgid "enter auto mode to run programs" +msgstr "Szeregowy modbus program" -#: src/emc/rs274ngc/rs274ngc_return.hh:158 -msgid "Z value unspecified in xy plane canned cycle" -msgstr "Wartość Z niezdefiniowana w cyklu w planie XY" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5308 +msgid "Enter the settings page, the default code is \"123\"" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:159 -msgid "Zero or negative argument to ln" -msgstr "Argument zerowy lub ujemny dla ln" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5330 +#, fuzzy +msgid "show user tabs" +msgstr "Pokaż status" -#: src/emc/rs274ngc/rs274ngc_return.hh:161 -msgid "K word missing with g33/g33.1" -msgstr "Brak słowa K razem z G33/G33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5381 +msgid "open homing button list" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:162 -msgid "F word used with a g33/g33.1" -msgstr "Słowo F użyte razem z G33/G33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5398 +#, fuzzy +msgid "open touch off button list" +msgstr "Ustaw offset narzędzia względem punktu" -#: src/emc/rs274ngc/rs274ngc_return.hh:163 -msgid "Unknown operation name starting with e" -msgstr "Nieznana nazwa działania zaczynającego sie na E" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5427 +msgid "Open the tooleditor page" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5498 +msgid "make the preview as large as possible" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5515 +msgid "Close moccapy / leave the program" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5577 +msgid "This button will show or hide the Keyboard" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:164 -msgid "Unknown operation name starting with n" -msgstr "Nieznana nazwa działania zaczynającego sie na N" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5620 +#, fuzzy +msgid "Load a new program" +msgstr "Przeładuj program" -#: src/emc/rs274ngc/rs274ngc_return.hh:165 -msgid "Unknown operation name starting with g" -msgstr "Nieznana nazwa działania zaczynającego sie na G" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5637 +#, fuzzy +msgid "Run the loaded program" +msgstr "Przeładuj program" -#: src/emc/rs274ngc/rs274ngc_return.hh:166 -msgid "Unknown operation name starting with l" -msgstr "Nieznana nazwa działania zaczynającego sie na L" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5654 +#, fuzzy +msgid "Stop the running program" +msgstr "Zatrzymaj wykonywanie programu lub" -#: src/emc/rs274ngc/rs274ngc_return.hh:167 -msgid "Too many subroutine parameters" -msgstr "Za dużo parametrów procedury" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5672 +#, fuzzy +msgid "Pause the running program" +msgstr "Zatrzymaj wykonywanie programu lub" -#: src/emc/rs274ngc/rs274ngc_return.hh:168 -msgid "Too many subroutine levels" -msgstr "Za dużo zagłębienie procedur" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5680 +#, fuzzy +msgid "pause the running program" +msgstr "Zatrzymaj wykonywanie programu lub" -#: src/emc/rs274ngc/rs274ngc_return.hh:169 -msgid "Bug: call stack underrun" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5698 +msgid "Run the loaded program step by step" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:170 -#: src/emc/rs274ngc/rs274ngc_return.hh:169 -msgid "Unknown control command in o word" -msgstr "Nieznane polecenie kontrolne w słowie O" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5715 +msgid "" +"run the program from a certain line, attention, that is dangerous, because " +"the previous lines will not checed!" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:171 -#: src/emc/rs274ngc/rs274ngc_return.hh:170 -msgid "Too many oword labels" -msgstr "Za dużo nazw słów O" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5732 +msgid "" +"Machine or not the optional blocks of the program. If the button is pressed, " +"the optional blocks will not be machined. The button will indicate this by a " +"yellow background." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:172 -#: src/emc/rs274ngc/rs274ngc_return.hh:171 -msgid "Unknown oword number" -msgstr "Nieznany numer słowa O" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5757 +msgid "" +"Make optional stops or not. if an M1 is programed and the button is pressed " +"(is active) the programm will pause if it found a M1" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:173 -#: src/emc/rs274ngc/rs274ngc_return.hh:172 -msgid "Nested subroutine definition" -msgstr "Zagnieżdżona definicja procedury" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5789 +#, fuzzy +msgid "Edit the loaded program" +msgstr "" +"Edytuj program\n" +"PLC" -#: src/emc/rs274ngc/rs274ngc_return.hh:174 -#: src/emc/rs274ngc/rs274ngc_return.hh:173 -msgid "Not in subroutine definition" -msgstr "Nie jest w definicji procedury" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5837 +#, fuzzy +msgid "home all axis" +msgstr "Bazuje wszystkie osie" -#: src/emc/rs274ngc/rs274ngc_return.hh:175 -#: src/emc/rs274ngc/rs274ngc_return.hh:174 -msgid "File not open" -msgstr "Plik nie jest otwarty" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5873 +#, fuzzy +msgid "home x axis" +msgstr "Bazuj oś" -#: src/emc/rs274ngc/rs274ngc_return.hh:176 -#: src/emc/rs274ngc/rs274ngc_return.hh:175 -msgid "Need tool prepared -Txx- for toolchange" -msgstr "Potrzeba przygotowanego narzędzia -Txx- do zmiany narzędzia" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5897 +#, fuzzy +msgid "home y axis" +msgstr "Bazuj oś" -#: src/emc/rs274ngc/rs274ngc_return.hh:177 -#: src/emc/rs274ngc/rs274ngc_return.hh:176 -msgid "Cannot change planes with cutter radius compensation on" -msgstr "Nie można zmienić planu z włączoną kompensacją promienia narzędzia" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5929 +#, fuzzy +msgid "home z axis" +msgstr "Bazuj oś" -#: src/emc/rs274ngc/rs274ngc_return.hh:178 -#: src/emc/rs274ngc/rs274ngc_return.hh:177 -msgid "Cutter radius compensation allowed only in XY, XZ planes" -msgstr "Kompensacja promienia narzędzia dozwolona tylko w planach XY XZ" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5987 +#, fuzzy +msgid "Unhome all axis" +msgstr "Odbazuj wszystkie sie" -#: src/emc/rs274ngc/rs274ngc_return.hh:179 -#: src/emc/rs274ngc/rs274ngc_return.hh:178 -msgid "P word missing with G76" -msgstr "Brakuje słowa P razem z G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6023 +msgid "go back to main button list" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:180 -#: src/emc/rs274ngc/rs274ngc_return.hh:179 -msgid "I J or K words missing with G76" -msgstr "Brakuje słowa I J lub K razem z G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6053 +msgid "" +" edit\n" +"offsets" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:181 -#: src/emc/rs274ngc/rs274ngc_return.hh:180 -msgid "Cannot move rotary axes with G76" -msgstr "Nie można poruszać osiami rotacyjnymi przy G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6060 +#, fuzzy +msgid "Edit offsets" +msgstr "Pokaż offsety" -#: src/emc/rs274ngc/rs274ngc_return.hh:182 -#: src/emc/rs274ngc/rs274ngc_return.hh:181 -msgid "Multiple e words on one line" -msgstr "Wielokrotne słowo E w jednej linii" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6076 +msgid "touch off X / set X to 0" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:183 -#: src/emc/rs274ngc/rs274ngc_return.hh:182 -msgid "Named parameter not terminated" -msgstr "Nazwany parametr nie zakończony" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6100 +msgid "touch off Y / set Y to 0" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:184 -#: src/emc/rs274ngc/rs274ngc_return.hh:183 -msgid "Out of memory" -msgstr "Brak pamięci" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6135 +msgid "touch off Z / set Z to 0" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:185 -#: src/emc/rs274ngc/rs274ngc_return.hh:184 -msgid "S word missing with G96" -msgstr "Brak słowa S razem z G96" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6155 +msgid "" +"zero\n" +"G92" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:186 -#: src/emc/rs274ngc/rs274ngc_return.hh:185 -msgid "Queue is not empty after external input" -msgstr "Kolejka nie jest pusta po odczytaniu wejść" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6161 +msgid "Zero all G92 offsets" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:187 -#: src/emc/rs274ngc/rs274ngc_return.hh:186 -msgid "Can't select analog input with wait type != immediate return" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6172 +msgid "" +" Block\n" +"Height" msgstr "" -"Nie można wybrać analogowego wejścia przy typie oczekiwania różnym od " -"natychmiastowego powrotu" -#: src/emc/rs274ngc/rs274ngc_return.hh:188 -#: src/emc/rs274ngc/rs274ngc_return.hh:187 -msgid "Zero timeout with wait type != immediate return" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6192 +msgid "touch off X / set X to an desired value" msgstr "" -"Zerowy czas oczekiwania przy type oczekiwania różnym od natychmiastowego " -"powrotu" -#: src/emc/rs274ngc/rs274ngc_return.hh:189 -#: src/emc/rs274ngc/rs274ngc_return.hh:188 -msgid "Invalid to select both a digital and an analog input with M66" -msgstr "Błędne wybranie jednocześnie wejść cyfrowych i analogowych razem z M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6216 +msgid "touch off Y / set Y to an desired value" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:190 -#: src/emc/rs274ngc/rs274ngc_return.hh:189 -msgid "Need to have either a valid P or a valid E word with M66" -msgstr "Musi być prawidłowe słowo P lub E razem z M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6251 +msgid "touch off Z / set Z to an desired value" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:191 -#: src/emc/rs274ngc/rs274ngc_return.hh:190 -msgid "Q word missing with g73" -msgstr "Brakuje słowa Q razem z G73" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6270 +msgid "" +" set\n" +"selected" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:192 -#: src/emc/rs274ngc/rs274ngc_return.hh:191 -msgid "Digital input selected out of bounds" -msgstr "Wybrane wejście cyfrowe poza zakresem" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6277 +#, fuzzy +msgid "set the selected coordinate system to be the active one" +msgstr "" +"Nie można zmienić aktulanego układu współrzędznych z włączoną kompensacją " +"grubości narzędzia" -#: src/emc/rs274ngc/rs274ngc_return.hh:193 -#: src/emc/rs274ngc/rs274ngc_return.hh:192 -msgid "Analog input selected out of bounds" -msgstr "Wybrane wejście analogowe poza zakresem" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6293 +msgid "Go back to main view" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:194 -#: src/emc/rs274ngc/rs274ngc_return.hh:193 -msgid "W value unspecified in UV plane canned cycle" -msgstr "Wartość V niezdefiniowana w cyklu w planie UV" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6324 +msgid "delete MDI" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:195 -#: src/emc/rs274ngc/rs274ngc_return.hh:194 -msgid "U value unspecified in VW plane canned cycle" -msgstr "Wartość U niezdefiniowana w cyklu w planie VW" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6330 +#, fuzzy +msgid "delete MDI history" +msgstr "Wyczyść historię MDI" -#: src/emc/rs274ngc/rs274ngc_return.hh:196 -#: src/emc/rs274ngc/rs274ngc_return.hh:195 -msgid "V value unspecified in UW plane canned cycle" -msgstr "Wartość V niezdefiniowana w cyklu w planie UW" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6380 +msgid "Cl.-ladder" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:197 -#: src/emc/rs274ngc/rs274ngc_return.hh:196 -msgid "R less than W in cycle in UV plane" -msgstr "R mniejsze niż W w cyklu w planie UV" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6386 +#, fuzzy +msgid "Open classicladder" +msgstr "Dołącz Classicladder PLC" -#: src/emc/rs274ngc/rs274ngc_return.hh:198 -#: src/emc/rs274ngc/rs274ngc_return.hh:197 -msgid "R less than U in cycle in VW plane" -msgstr "R mniejsze niż U w cyklu w planie VW" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6397 +#, fuzzy +msgid "Hal-Scope" +msgstr "Oscy_loskop HAL" -#: src/emc/rs274ngc/rs274ngc_return.hh:199 -#: src/emc/rs274ngc/rs274ngc_return.hh:198 -msgid "R less than V in cycle in UW plane" -msgstr "R mniejsze niż V w cyklu w planie UW" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6403 +#, fuzzy +msgid "launch hal scope" +msgstr "uruchom %s" -#: tcl/ngcgui.tcl:565 -msgid "can not include subroutines within ngcgui subfile" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6420 +msgid "launch linuxcnc status" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:171 -msgid "7i77 sserial #1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6437 +msgid "launch hal meter" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:171 -msgid "7i77 sserial #2" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6455 +#, fuzzy +msgid "launch calibration" +msgstr "Kalibra_cja" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6466 +msgid "Halshow" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:171 -msgid "7i77 sserial #4" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6472 +msgid "opens the show hal tool" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:171 -msgid "7i77 sserial #5" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6537 +msgid "save the file using the original name" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:647 -msgid "7i77 Mode 0 I/O Card" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6559 +msgid "save the file with a new name" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7267 -msgid "Resolver Scale:" -msgstr "Skala resolvera" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6605 +msgid "clear the edit field and make a new file" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8486 -msgid "Num of resolvers:" -msgstr "Ilość resolverów:" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6641 +msgid "Show or hide the virtual keyboard" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60831 -msgid "Smart Serial 4" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6665 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6879 +msgid "Go back to main button list" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:62991 -msgid "Max Output" -msgstr "Maks. Wyjście" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6701 +msgid "delete selected tool or tools" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:63454 -msgid "Analog Min Limit:" -msgstr "Analogowy limit min.:" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6718 +#, fuzzy +msgid "add a new tool to tool table" +msgstr "Przeładuj ta_bele narzędzi" -#: src/emc/usr_intf/pncconf/pncconf.glade:63468 -msgid "Analog Max limit:" -msgstr "Analogowy limit maks.:" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6729 +#, fuzzy +msgid "Reload" +msgstr "P_rzeładuj" -#: src/emc/usr_intf/pncconf/pncconf.glade:63482 -msgid "Analog Max Scale:" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6735 +#, fuzzy +msgid "reload tool table from file" +msgstr "Przeładuj ta_bele narzędzi" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6746 +msgid "Apply" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:72975 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6752 msgid "" -"\t\t\t\tPNCconf - Point aNd Click CONFigurator\n" -"PNCconf is a configuration program for Linuxcnc.\n" -"It configures machines using Mesa I/O cards.\n" -"It configures servo,stepper or closed loop stepper machines.\n" -"It supports some of Mesa's sserial cards.\n" -"It will forever be a work in progress as Linuxcnc changes.\n" -"\n" -"Many thanks To:\n" -"Jeff Eppler - PNCconf is based on stepconf - Jeff's creation. Jeff also has " -"helped with techincal difficulties.\n" -"Big John T - John drew the original machine illustrations. Testing and " -"suggestions.\n" -"Peter Wallace - Technical questions on Mesa's I/O cards. Supplied sample " -"equipment to test with.\n" -"Andy Pugh - suggestions, questions answered and many pin name changes :) \n" -"Dave Armstrong - testing and suggestions expecially with resolvers.\n" -"Everyone who gave a bug report ! I cannot test everything thoughly enough so " -"reports help.\n" -"\n" -"Beta 1 version" +"apply the changes you made, G43 will be excecuted only if it is active g-code" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6768 +#, fuzzy +msgid "Select a tool by number" +msgstr "Zaznacz element do podglądu" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6790 +msgid "change tool with the command M61 Q?, no machine move will be done" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:302 -msgid "P value not an integer with G2 or G3" -msgstr "Wartość P nie jest całkowita w G2 lub G3" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6812 +msgid "change tool to the selected one" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:311 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6824 +#, fuzzy msgid "" -"Q word with no G5, G10, G64, G73, G76, G83, M66, M67, M68 or user M code " -"that uses it" +"touchoff\n" +" tool x" +msgstr "Ustaw offset narzędzia względem punktu" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6832 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6863 +msgid "touch off the tool and set the value to the tool table" msgstr "" -"słowo Q użyte bez G5, G10, G64, G73, G76, G83, M66, M67, M68 lub kodu M " -"użytkownika" -#: src/emc/rs274ngc/interp_convert.cc:2733 -msgid "Need positive Q-word to specify tool number with M61" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6855 +msgid "" +"touchoff\n" +" tool z" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1858 -#, c-format -msgid "Cannot change #<%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6915 +msgid "Move to your home directory" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1906 -#, c-format -msgid "init_named_parameter must be global #<%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6932 +msgid "Move to parrent directory" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6961 +#, fuzzy +msgid "Select the previos file" +msgstr "Zaznacz element do podglądu" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6979 +#, fuzzy +msgid "Select the next file" +msgstr "Zaznacz element do podglądu" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6997 +msgid "Jump to user defined directory" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7027 +msgid "select the highlighted file and return the path" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7057 +msgid "Close without returning a file path" msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7075 +#, fuzzy +msgid "Load File" +msgstr "Plik" + +#~ msgid "LinuxCNC Debug Level" +#~ msgstr "Poziom debugowania LinuxCNC" + +#~ msgid "" +#~ "# **** COMANDED velocity is signed so we use absolute component (abs.0) " +#~ "to remove sign" +#~ msgstr "" +#~ "# **** prędkość ZADANA jest ze znakiem więc używamy komponentu (abs.0) " +#~ "aby usunąć znak" + +#~ msgid "Generated by stepconf at %s" +#~ msgstr "Wygenerowane przez Stepconf o %s" + +#~ msgid "S_econd Parport Address:" +#~ msgstr "Adres drugiego portu równoległego:" + +#~ msgid "T_hird Parport Address:" +#~ msgstr "Adres trzeciego portu równoległego:" + +#~ msgid " Parallel Port Settings" +#~ msgstr "Ustawienia Portu Równoległego" + +#~ msgid "" +#~ "Driver characteristics: (Multiply by 1000 for times specified in µs or " +#~ "microseconds)\n" +#~ " Additional signal conditioning or isolation such as optocouplers " +#~ "and RC filters\n" +#~ " can impose timing constraints of their own, in addition to those " +#~ "of the driver." +#~ msgstr "" +#~ "Charakterystyka sterownika: (Pomnóż przez 1000 dla określenia czasów w µs " +#~ "lub mikrosekundach)\n" +#~ "\n" +#~ " Dodatkowe filtrowanie sygnału lub izolowanie za pomocą " +#~ "optoizolatorów i filtrów rez/kond\n" +#~ " może nakładać parametry czasowe, oprócz tych w sterowniku." + +#~ msgid "Advanced Configuration Options" +#~ msgstr "Zaawansowane Opcje Konfiguracyjne" + +#~ msgid "_Sherline Outputs" +#~ msgstr "Wyjścia _Sherline" + +#~ msgid "Spindle Configuration" +#~ msgstr "Konfiguracja wrzeciona" + +#~ msgid "" +#~ "# Use COMMANDED spindle velocity from LinuxCNC because no spindle " +#~ "encoder was specified" +#~ msgstr "" +#~ "# Używam ZADANEJ prędkości wrzeciona z LinuxCNC ponieważ nie był " +#~ "zdefiniowany enkoder wrzeciona" + +#~ msgid "" +#~ "# COMMANDED velocity is signed so we use absolute component to remove " +#~ "sign" +#~ msgstr "" +#~ "# prędkość ZADANA jest ze znakiem więc używamy komponentu abs aby usunąć " +#~ "znak" + +#~ msgid "P value not an integer with G2 or G3" +#~ msgstr "Wartość P nie jest całkowita w G2 lub G3" + +#~ msgid "" +#~ "Q word with no G5, G10, G64, G73, G76, G83, M66, M67, M68 or user M code " +#~ "that uses it" +#~ msgstr "" +#~ "słowo Q użyte bez G5, G10, G64, G73, G76, G83, M66, M67, M68 lub kodu M " +#~ "użytkownika" diff --git a/src/po/pt_BR.po b/src/po/pt_BR.po index 1df49b8778..c8f2914c53 100644 --- a/src/po/pt_BR.po +++ b/src/po/pt_BR.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Emc2-axis cvs-head to 2.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-10 13:40-0600\n" +"POT-Creation-Date: 2019-02-20 07:49+0000\n" "PO-Revision-Date: 2010-05-15 16:56-0300\n" "Last-Translator: Matheus Degiovani \n" "Language-Team: Portuguese/Brazil \n" @@ -19,13730 +19,17221 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: src/hal/utils/meter.c:198 +#: src/emc/task/emctaskmain.cc:479 src/emc/task/emctaskmain.cc:512 +#, fuzzy, c-format +msgid "%s exceeds +X limit" +msgstr "%s excede o limite +X da máquina" + +#: src/emc/task/emctaskmain.cc:484 src/emc/task/emctaskmain.cc:517 +#, fuzzy, c-format +msgid "%s exceeds +Y limit" +msgstr "%s excede o limite +Y da máquina" + +#: src/emc/task/emctaskmain.cc:489 src/emc/task/emctaskmain.cc:522 +#, fuzzy, c-format +msgid "%s exceeds +Z limit" +msgstr "%s excede o limite +Z da máquina" + +#: src/emc/task/emctaskmain.cc:494 src/emc/task/emctaskmain.cc:527 +#, fuzzy, c-format +msgid "%s exceeds -X limit" +msgstr "%s excede o limite -X da máquina" + +#: src/emc/task/emctaskmain.cc:499 src/emc/task/emctaskmain.cc:532 +#, fuzzy, c-format +msgid "%s exceeds -Y limit" +msgstr "%s excede o limite -Y da máquina" + +#: src/emc/task/emctaskmain.cc:504 src/emc/task/emctaskmain.cc:537 +#, fuzzy, c-format +msgid "%s exceeds -Z limit" +msgstr "%s excede o limite -Z da máquina" + +#: src/emc/task/emctaskmain.cc:892 #, c-format -msgid "ERROR: '%s' is not a valid probe type\n" -msgstr "ERRO: '%s' não é um tipo válido de probe\n" +msgid "" +"command (%s) cannot be executed until the machine is out of E-stop and " +"turned on" +msgstr "" +"o comando (%s) não pode ser executado até que a máquina esteja fora de E-" +"STOP e ligada" -#: src/hal/utils/meter.c:206 +#: src/emc/task/emctaskmain.cc:1013 +#, fuzzy, c-format +msgid "can't do that (%s:%d) in manual mode" +msgstr "impossível realizar (%s) no modo manual" + +#: src/emc/task/emctaskmain.cc:1113 #, c-format -msgid "ERROR: no pin/signal/parameter name\n" -msgstr "ERRO: nenhum nome de pino/parâmetro/sinal\n" +msgid "can't do that (%s) in auto mode with the interpreter idle" +msgstr "impossível realizar (%s) no modo automático com o interpretador ocioso" -#: src/hal/utils/meter.c:212 +#: src/emc/task/emctaskmain.cc:1180 #, c-format -msgid "" -"ERROR: -s option requires a probe type and a pin/signal/parameter name\n" +msgid "can't do that (%s) in auto mode with the interpreter reading" +msgstr "impossível realizar (%s) no modo automático com o interpretador lendo" + +#: src/emc/task/emctaskmain.cc:1265 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter paused" msgstr "" -"ERRO: opção -s precisa de um tipo de probe e um nome de parâmetro/pino/" -"sinal\n" +"impossível realizar (%s) no modo automático com o interpretador pausado" -#: src/hal/utils/meter.c:238 tcl/tklinuxcnc.tcl:764 -#, fuzzy -msgid "Hal Meter" -msgstr "H_alMeter" +#: src/emc/task/emctaskmain.cc:1334 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter waiting" +msgstr "" +"impossível realizar (%s) no modo automático com o interpretador esperando" -#: src/hal/utils/meter.c:287 -msgid "_Select" -msgstr "S_elecionar" +#: src/emc/task/emctaskmain.cc:1442 +#, fuzzy, c-format +msgid "can't do that (%s:%d) in MDI mode" +msgstr "impossível realizar (%s) no modo MDI" -#: src/hal/utils/meter.c:288 -#, fuzzy -msgid "E_xit" -msgstr "_Sair" +#: src/emc/task/emctaskmain.cc:2100 +msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" +msgstr "" +"impossível mudar o modo de operação enquanto o modo é AUTO e o interpretador " +"não está em IDLE" -#: src/hal/utils/meter.c:336 src/hal/utils/meter.c:364 -msgid "Select Item to Probe" -msgstr "Selecione item para examinar" +#: src/emc/task/emctaskmain.cc:2157 tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 +#: tcl/mini.tcl:1775 tcl/tklinuxcnc.tcl:451 +#, c-format, tcl-format +msgid "can't open %s" +msgstr "impossível abrir %s" -#: src/hal/utils/meter.c:640 -msgid " _Pins " -msgstr "_Pinos" +#: src/emc/task/emctaskmain.cc:2169 +msgid "Can't issue MDI command when not homed" +msgstr "" +"Impossível executar comando MDI enquanto a máquina não foi referenciada" -#: src/hal/utils/meter.c:641 -msgid " _Signals " -msgstr "S_inais" +#: src/emc/task/emctaskmain.cc:2174 +msgid "Must be in MDI mode to issue MDI command" +msgstr "Precisa estar no modo MDI para enviar um comando MDI" -#: src/hal/utils/meter.c:642 -msgid " Para_meters " -msgstr " Parâ_metros" +#: src/emc/task/emctaskmain.cc:2256 +msgid "Can't run a program when not homed" +msgstr "Impossível executar programa enquanto a máquina não for referenciada" -#: src/hal/utils/meter.c:685 -msgid "_Close" -msgstr "_Fechar" +#: src/emc/rs274ngc/interp_arc.cc:110 src/emc/rs274ngc/interp_arc.cc:284 +#, fuzzy, c-format +msgid "" +"Zero-radius arc: start=(%c%.4f,%c%.4f) center=(%c%.4f,%c%.4f) end=(%c%.4f,%c" +"%.4f) r1=%.4f r2=%.4f" +msgstr "" +"Raio entre o ponto final e centro difere do raio entre início e o centro: " +"início=(%c%.4f,%c%.4f) centro=(%c%.4f,%c%.4f) final=(%c%.4f,%c%.4f) r1=%.4f " +"r2=%.4f erro_absoluto=%.4g erro_relativo=%.4f%%" -#: src/hal/utils/scope.c:126 +#: src/emc/rs274ngc/interp_arc.cc:120 src/emc/rs274ngc/interp_arc.cc:292 +#, c-format msgid "" -"Usage:\n" -" halscope [-h] [-i infile] [-o outfile] [num_samples]\n" +"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " +"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " +"rel_err=%.4f%%" msgstr "" -"Utilização:\n" -" halscope [-h] [-i infile] [-o outfile] [num_samples]\n" +"Raio entre o ponto final e centro difere do raio entre início e o centro: " +"início=(%c%.4f,%c%.4f) centro=(%c%.4f,%c%.4f) final=(%c%.4f,%c%.4f) r1=%.4f " +"r2=%.4f erro_absoluto=%.4g erro_relativo=%.4f%%" -#: src/hal/utils/scope.c:474 src/hal/utils/scope.c:501 -#, fuzzy -msgid "Open Configuration File:" -msgstr "Mostrar _Configuração Hal" +#: src/emc/rs274ngc/interp_check.cc:90 +msgid "G4 not allowed with G2 or G3 because they both use P" +msgstr "" -#: src/hal/utils/scope.c:535 +#: src/emc/rs274ngc/interp_check.cc:93 #, fuzzy -msgid "_Open Configuration..." -msgstr "Mostrar _Configuração Hal" +msgid "Line with G10 does not have L1, L10, L11, L2, or L20" +msgstr "Linha com G10 não tem L2" -#: src/hal/utils/scope.c:541 +#: src/emc/rs274ngc/interp_check.cc:94 #, fuzzy -msgid "_Save Configuration..." -msgstr "Mostrar _Configuração Hal" - -#: src/hal/utils/scope.c:550 -msgid "O_pen Data File..." -msgstr "_Abrir arquivo de dados" +msgid "P value not an integer with G10" +msgstr "Parâmetro P não é um inteiro com G10 L2" -#: src/hal/utils/scope.c:557 -msgid "S_ave Data File..." -msgstr "_Salvar arquivo de dados" +#: src/emc/rs274ngc/interp_check.cc:95 +#, fuzzy, c-format +msgid "P value out of range (0-9) with G10 L%d" +msgstr "Parâmetro P fora dos limites com G10 L2" -#: src/hal/utils/scope.c:566 share/axis/tcl/axis.tcl:93 -#, fuzzy -msgid "_Quit" -msgstr "_Sair" +#: src/emc/rs274ngc/interp_check.cc:96 +#, fuzzy, c-format +msgid "P value out of range with G10 L%d" +msgstr "Parâmetro P fora dos limites com G10 L2" -#: src/hal/utils/scope.c:572 -msgid "_About Halscope" -msgstr "S_obre Halscope" +#: src/emc/rs274ngc/interp_check.cc:100 +msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." +msgstr "" +"Entre códigos G5.2 e G5.3, apenas códigos adicionais G5.2 são permitidos" -#: src/hal/utils/scope.c:578 share/axis/tcl/axis.tcl:435 +#: src/emc/rs274ngc/interp_check.cc:259 #, fuzzy -msgid "_File" -msgstr "_Arquivo" +msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" +msgstr "Parâmetro D sem G41, G41.1, G42, G42.2 ou G96 para usá-lo" -#: src/hal/utils/scope.c:582 share/axis/tcl/axis.tcl:447 -#, fuzzy -msgid "_Help" -msgstr "_Ajuda" +#: src/emc/rs274ngc/interp_check.cc:265 +msgid "E word with no G76, M66, M67 or M68 to use it" +msgstr "Parâmetro E sem G76, M66, M67 ou M68 para usá-lo" -#: src/hal/utils/scope.c:641 -msgid "HAL Oscilloscope" -msgstr "Osciloscópio HAL" +#: src/emc/rs274ngc/interp_check.cc:270 +msgid "H word with no G43 or G76 to use it" +msgstr "Parâmetro H sem G43 ou G76 para usá-lo" -#: src/hal/utils/scope.c:669 -msgid "Horizontal" -msgstr "Horizontal" +#: src/emc/rs274ngc/interp_check.cc:276 +#, fuzzy +msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" +msgstr "Parâmetro J sem G2, G3, G5, G5.1, G10, G76 ou G87 para usá-lo" -#: src/hal/utils/scope.c:677 -msgid "Selected Channel" -msgstr "Canal Selecionado" +#: src/emc/rs274ngc/interp_check.cc:282 +msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" +msgstr "Parâmetro J sem G2, G3, G5, G5.1, G10, G76 ou G87 para usá-lo" -#: src/hal/utils/scope.c:683 -msgid "Run Mode" -msgstr "Modo execução" +#: src/emc/rs274ngc/interp_check.cc:288 +#, fuzzy +msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" +msgstr "" +"Parâmetro K sem comando G2, G3, G33, G33.1, G76, G87 ou G43.1 para usá-la" -#: src/hal/utils/scope.c:686 -msgid "Trigger" -msgstr "Gatilho" +#: src/emc/rs274ngc/interp_check.cc:298 +msgid "" +"L word with no G10, cutter compensation, canned cycle, digital/analog input, " +"or NURBS code" +msgstr "" +"Parâmetro L sem comando G10, compensação de corte, ciclo pré-formado, " +"entrada digital/analógica ou código NURBS" -#: src/hal/utils/scope.c:692 -msgid "Vertical" -msgstr "Vertical" +#: src/emc/rs274ngc/interp_check.cc:310 +#, fuzzy +msgid "" +"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " +"M53 M62 M63 M64 M65 M66 or user M code to use it" +msgstr "" +"Parâmetro P sem comando G4, G10, G64, G5, G5.2, G76, G82, G86, G88, G89 ou " +"M50, M51, M52, M53, M62, M63, M64, M65, M66 ou código M de usuário para usá-" +"lo." -#: src/hal/utils/scope.c:700 share/axis/tcl/axis.tcl:135 -#: share/axis/tcl/axis.tcl:1199 +#: src/emc/rs274ngc/interp_check.cc:315 #, fuzzy -msgid "Stop" -msgstr "Parar" +msgid "P value not an integer with M19 G2 or G3" +msgstr "Parâmetro P não é um inteiro com G10 L2" -#: src/hal/utils/scope.c:703 -msgid "Normal" -msgstr "Normal" +#: src/emc/rs274ngc/interp_check.cc:317 +#, fuzzy +msgid "P value must be 0,1,or 2 with M19" +msgstr "Parâmetro P fora dos limites com G10 L2" -#: src/hal/utils/scope.c:706 +#: src/emc/rs274ngc/interp_check.cc:319 #, fuzzy -msgid "Single" -msgstr "Spindle:" +msgid "P value should be 1 or greater with G2 or G3" +msgstr "Parâmetro P fora dos limites com G10 L2" -#: src/hal/utils/scope.c:709 -msgid "Roll" -msgstr "Rolar" +#: src/emc/rs274ngc/interp_check.cc:327 +#, fuzzy +msgid "" +"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " +"code that uses it" +msgstr "" +"Parâmetro Q sem comando G5, G10, G64, G73, G76, G83, M66, M67, M68 ou código " +"M de usuário para usá-lo" -#: src/hal/utils/scope_horiz.c:130 +#: src/emc/rs274ngc/interp_check.cc:337 #, fuzzy -msgid "Zoom" -msgstr "Aproxima zoom [+]" +msgid "R value must be within 0..360 with M19" +msgstr "Parâmetro P fora dos limites com G10 L2" -#: src/hal/utils/scope_horiz.c:131 -msgid " Pos " +#: src/emc/rs274ngc/interp_convert.cc:139 +msgid "You must specify both X and Y coordinates for Control Points" msgstr "" -#: src/hal/utils/scope_horiz.c:164 -msgid "" -"----- Samples\n" -"at ---- KHz" +#: src/emc/rs274ngc/interp_convert.cc:142 +msgid "Can specify P without X and Y only for the first control point" msgstr "" -"----- Amostras\n" -"a ---- KHz" -#: src/hal/utils/scope_horiz.c:459 -msgid "Realtime component not loaded" -msgstr "Componente de tempo real não carregado" +#: src/emc/rs274ngc/interp_convert.cc:145 +msgid "Must specify positive weight P for every Control Point" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:148 +#, fuzzy +msgid "Cannot make a NURBS with 0 feedrate" +msgstr "Impossível realizar arco com velocidade de movimentação zero" + +#: src/emc/rs274ngc/interp_convert.cc:183 +#, fuzzy +msgid "Cannot use G5.3 without G5.2 first" +msgstr "" +"Impossível usar G28 ou G30 com compensação de raio de ferramenta ativado" -#: src/hal/utils/scope_horiz.c:460 +#: src/emc/rs274ngc/interp_convert.cc:184 +#, c-format msgid "" -"HALSCOPE uses a realtime component called scope_rt'\n" -"to sample signals for display. It is not currently loaded\n" -"and attempting to load it automatically failed. More information\n" -"may be available in the terminal where halscope was started.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Load the component (using 'halcmd loadrt scope_rt'), then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +"You must specify a number of control points at least equal to the order L = " +"%d" msgstr "" +"Você precisa especificar um número de pontos de controle pelo menos igual à " +"ordem L=%d" -#: src/hal/utils/scope_horiz.c:495 -msgid "Realtime function not linked" -msgstr "Função de tempo real não linkada" +#: src/emc/rs274ngc/interp_convert.cc:213 +msgid "Cannot convert spline with cutter radius compensation" +msgstr "Impossível converter spline com compensação de raio ligada" -#: src/hal/utils/scope_horiz.c:496 -msgid "" -"The HALSCOPE realtime sampling function\n" -"must be called from a HAL thread in to\n" -"determine the sampling rate.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Select a thread name and multiplier then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +#: src/emc/rs274ngc/interp_convert.cc:223 +msgid "Splines must be in the XY plane" +msgstr "Splines devem estar no plano XY" + +#: src/emc/rs274ngc/interp_convert.cc:228 +msgid "Splines may not have motion in Z, A, B, or C" msgstr "" -#: src/hal/utils/scope_horiz.c:503 -msgid "Select Sample Rate" -msgstr "Selecione a taxa de amostragem" +#: src/emc/rs274ngc/interp_convert.cc:232 +msgid "Must specify both I and J with G5.1" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:251 +msgid "Must specify both I and J, or neither" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:262 +msgid "Must specify both P and Q with G5" +msgstr "" -#: src/hal/utils/scope_horiz.c:504 +#: src/emc/rs274ngc/interp_convert.cc:363 msgid "" -"Select a thread name and multiplier then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +"The move just after exiting cutter compensation mode must be straight, not " +"an arc" msgstr "" -"Selecione um nome de thread e multiplicado e clique 'OK'\n" -"or\n" -"Clique 'Sair' para fechar o HALSCOPE" +"O movimento após sair da compensação de raio precisa ser reto, não um arco" -#: src/hal/utils/scope_horiz.c:526 -msgid "Thread:" +#: src/emc/rs274ngc/interp_convert.cc:371 +msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" msgstr "" -#: src/hal/utils/scope_horiz.c:534 -#, fuzzy -msgid "Sample Period:" -msgstr "Período de amostragem:" +#: src/emc/rs274ngc/interp_convert.cc:383 +#: src/emc/rs274ngc/interp_convert.cc:4488 +msgid "Cannot feed with zero spindle speed in feed per rev mode" +msgstr "" -#: src/hal/utils/scope_horiz.c:542 -#, fuzzy -msgid "Sample Rate:" -msgstr "Taxa de amostragem:" +#: src/emc/rs274ngc/interp_convert.cc:394 +#: src/emc/rs274ngc/interp_convert.cc:400 +#: src/emc/rs274ngc/interp_convert.cc:409 +#: src/emc/rs274ngc/interp_convert.cc:415 +#: src/emc/rs274ngc/interp_convert.cc:424 +#: src/emc/rs274ngc/interp_convert.cc:430 +#, fuzzy, c-format +msgid "%c word missing in absolute center arc" +msgstr "Parâmetro F faltando com movimento em arco no modo de tempo inverso" -#: src/hal/utils/scope_horiz.c:558 src/emc/usr_intf/touchy/mdi.py:78 -msgid "Thread" +#: src/emc/rs274ngc/interp_convert.cc:662 +msgid "" +"Radius of cutter compensation entry arc is not greater than the tool radius" msgstr "" -#: src/hal/utils/scope_horiz.c:559 -msgid "Period" -msgstr "Período" +#: src/emc/rs274ngc/interp_convert.cc:882 +#: src/emc/rs274ngc/interp_convert.cc:892 src/emc/rs274ngc/interp_queue.cc:696 +msgid "" +"Arc move in concave corner cannot be reached by the tool without gouging" +msgstr "" +"Movimento em arco em uma quina côncava não pode ser alcançado pela " +"ferramenta sem danificar o material" -#: src/hal/utils/scope_horiz.c:619 -msgid "Multiplier:" -msgstr "Multiplicador:" +#: src/emc/rs274ngc/interp_convert.cc:918 +msgid "Arc to arc motion is invalid because the arcs have the same center" +msgstr "" +"Arco para movimento em arco é inválido porque os arcos precisam ter o mesmo " +"centro" -#: src/hal/utils/scope_horiz.c:636 -msgid "Record Length" -msgstr "Comprimento do registro" +#: src/emc/rs274ngc/interp_convert.cc:921 +msgid "" +"Arc to arc motion makes a corner the compensated tool can't fit in without " +"gouging" +msgstr "" +"Arco para movimento em arco gera uma quina onde a ferramenta compensada não " +"pode alcançar sem danificar o material" -#: src/hal/utils/scope_horiz.c:639 +#: src/emc/rs274ngc/interp_convert.cc:1053 +#: src/emc/rs274ngc/interp_convert.cc:1057 +#: src/emc/rs274ngc/interp_convert.cc:1061 +#: src/emc/rs274ngc/interp_convert.cc:3945 +#: src/emc/rs274ngc/interp_convert.cc:3948 +#: src/emc/rs274ngc/interp_convert.cc:3951 src/emc/rs274ngc/interp_find.cc:97 #, c-format -msgid "%5d samples (1 channel)" -msgstr "%5d amostras (1 canal)" +msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" +msgstr "Posição absoluta inválida (%5.2f) para eixo rotacional %c" -#: src/hal/utils/scope_horiz.c:641 -#, c-format -msgid "%5d samples (2 channels)" -msgstr "%5d amostras (2 canais)" +#: src/emc/rs274ngc/interp_convert.cc:1563 +msgid "Cannot change control mode with cutter radius compensation on" +msgstr "" +"Impossível mudar o modo de controle quando compensação de raio de corte está " +"ativado" + +#: src/emc/rs274ngc/interp_convert.cc:1676 +msgid "Cannot change coordinate systems with cutter radius compensation on" +msgstr "" +"Impossível mudar sistema de coordenadas quando compensação de raio de corte " +"está ativada" -#: src/hal/utils/scope_horiz.c:645 +#: src/emc/rs274ngc/interp_convert.cc:1920 #, c-format -msgid "%5d samples (4 channels)" -msgstr "%5d amostras (4 canais)" +msgid "G%d.1 with no D word" +msgstr "G%d.1 sem parâmetro D" -#: src/hal/utils/scope_horiz.c:649 +#: src/emc/rs274ngc/interp_convert.cc:1923 #, c-format -msgid "%5d samples (8 channels)" -msgstr "%5d amostras (8 canais)" +msgid "G%d.1 with L word, but plane is not G18" +msgstr "G%d.1 com parâmetro L, mas plano ativo não é G18" -#: src/hal/utils/scope_horiz.c:653 +#: src/emc/rs274ngc/interp_convert.cc:1934 #, c-format -msgid "%5d samples (16 channels)" -msgstr "%5d amostras (16 canais)" +msgid "G%d requires D word to be a whole number" +msgstr "G%d requer que o parâmetro D seja um número inteiro" -#: src/hal/utils/scope_horiz.c:708 src/hal/utils/scope_horiz.c:754 -#: src/hal/utils/scope_horiz.c:966 src/hal/utils/scope_vert.c:761 -#: src/hal/utils/scope_vert.c:853 tcl/bin/emccalib.tcl:227 -#: tcl/bin/genedit.tcl:180 tcl/bin/genedit.tcl:450 tcl/bin/halconfig.tcl:682 -#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:257 -#: tcl/bin/pickconfig.tcl:479 tcl/bin/pickconfig.tcl:506 tcl/mini.tcl:1456 -#: tcl/mini.tcl:2937 tcl/tklinuxcnc.tcl:160 tcl/tklinuxcnc.tcl:245 -#: tcl/tklinuxcnc.tcl:419 tcl/tklinuxcnc.tcl:1338 tcl/tklinuxcnc.tcl:1407 -#: tcl/tklinuxcnc.tcl:1438 tcl/tklinuxcnc.tcl:1469 tcl/tklinuxcnc.tcl:2017 -#: tcl/tklinuxcnc.tcl:2036 tcl/tklinuxcnc.tcl:2055 tcl/tklinuxcnc.tcl:2102 -#: src/emc/usr_intf/axis/scripts/axis.py:1077 -#: src/emc/usr_intf/axis/scripts/axis.py:1141 -#: src/emc/usr_intf/axis/scripts/axis.py:1458 -#: src/emc/usr_intf/axis/scripts/axis.py:2477 -#: src/emc/usr_intf/axis/scripts/axis.py:3336 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:718 -#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1720 -#: share/axis/tcl/axis.tcl:1757 -msgid "OK" -msgstr "OK" +#: src/emc/rs274ngc/interp_convert.cc:1941 +#, c-format +msgid "G%d with lathe tool, but plane is not G18" +msgstr "G%d com ferramenta de torno, mas plano não é G18" -#: src/hal/utils/scope_horiz.c:713 src/hal/utils/scope_horiz.c:754 -#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 +#: src/emc/rs274ngc/interp_convert.cc:2340 #, fuzzy -msgid "Quit" -msgstr "Sair" +msgid "Cannot set reference point with cutter compensation in effect" +msgstr "" +"Impossível setar saída do movimento quando compensação de raio de corte está " +"ativado" -#: src/hal/utils/scope_horiz.c:745 -msgid "Realtime thread(s) not running" -msgstr "Thread(s) de tempo real não estão em execução" +#: src/emc/rs274ngc/interp_convert.cc:2859 +#, c-format +msgid "gen_restore G20/G21 failed: '%s'" +msgstr "" -#: src/hal/utils/scope_horiz.c:746 +#: src/emc/rs274ngc/interp_convert.cc:2907 +#, c-format msgid "" -"HALSCOPE uses code in a realtime HAL thread to sample\n" -"signals for display. The HAL thread(s) are not running.\n" -"Threads are usually started by the application you are\n" -"attempting to run, or you can use the 'halcmd start' command.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Start the threads, then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" msgstr "" -#: src/hal/utils/scope_horiz.c:779 -msgid "Pick log file to write to:" -msgstr "Escolha o arquivo de log de destino:" +#: src/emc/rs274ngc/interp_convert.cc:2908 +#, c-format +msgid "BUG: restore from level %d !?" +msgstr "" -#: src/hal/utils/scope_horiz.c:962 -msgid "Not enough channels" -msgstr "Número de canais insuficiente" +#: src/emc/rs274ngc/interp_convert.cc:2909 +#, c-format +msgid "BUG: restore to level %d !?" +msgstr "" -#: src/hal/utils/scope_horiz.c:963 -msgid "" -"This record length cannot handle the channels\n" -"that are currently enabled. Pick a shorter\n" -"record length that supports more channels." +#: src/emc/rs274ngc/interp_convert.cc:2928 +#, c-format +msgid "M7x: restore_settings G20/G21 failed: '%s'" msgstr "" -#: src/hal/utils/scope_horiz.c:1051 +#: src/emc/rs274ngc/interp_convert.cc:2946 #, c-format -msgid "" -"%s\n" -"per div" +msgid "M7x: restore_settings failed executing: '%s': %s" msgstr "" -"%s\n" -"por div" -#: src/hal/utils/scope_horiz.c:1066 +#: src/emc/rs274ngc/interp_convert.cc:3005 #, c-format -msgid "" -"%s samples\n" -"at %s" +msgid "Failed to restore interp state on abort '%s': %s" msgstr "" -"%s amostras\n" -"a %s" -#: src/hal/utils/scope_horiz.c:1170 -msgid "nSec" +#: src/emc/rs274ngc/interp_convert.cc:3069 +msgid "No valid P word with M62" +msgstr "Nenhum parâmetro P válido com M62" + +#: src/emc/rs274ngc/interp_convert.cc:3072 +msgid "No valid P word with M63" +msgstr "Nenhum parâmetro P válido com M63" + +#: src/emc/rs274ngc/interp_convert.cc:3075 +msgid "No valid P word with M64" +msgstr "Nenhum parâmetro P válido com M64" + +#: src/emc/rs274ngc/interp_convert.cc:3078 +msgid "No valid P word with M65" +msgstr "Nenhum parâmetro P válido com M65" + +#: src/emc/rs274ngc/interp_convert.cc:3111 +#, fuzzy +msgid "invalid P-word with M66" +msgstr "Nenhum parâmetro P válido com M62" + +#: src/emc/rs274ngc/interp_convert.cc:3126 +msgid "Cannot wait for digital input with cutter radius compensation on" msgstr "" +"Impossível esperar por entrada digital quando compensação de raio de corte " +"está ativada" -#: src/hal/utils/scope_horiz.c:1173 -msgid "uSec" +#: src/emc/rs274ngc/interp_convert.cc:3138 +msgid "Cannot wait for analog input with cutter radius compensation on" msgstr "" +"Impossível esperar por entrada analógica quando compensação de raio de corte " +"está ativada" -#: src/hal/utils/scope_horiz.c:1177 -msgid "mSec" +#: src/emc/rs274ngc/interp_convert.cc:3152 +msgid "Invalid analog index with M67" +msgstr "Índice analógico inválido com M67" + +#: src/emc/rs274ngc/interp_convert.cc:3157 +msgid "Invalid analog index with M68" +msgstr "Índice analógico inválido com M68" + +#: src/emc/rs274ngc/interp_convert.cc:3188 +#, fuzzy +msgid "Need non-negative Q-word to specify tool number with M61" msgstr "" +"Precisa de parâmetro Q positivo para especificar um número de ferramenta com " +"M61" -#: src/hal/utils/scope_horiz.c:1181 -#: src/emc/usr_intf/pncconf/pncconf.glade:1953 -#: src/emc/usr_intf/pncconf/pncconf.glade:2825 -#: src/emc/usr_intf/pncconf/pncconf.glade:3706 -#: src/emc/usr_intf/pncconf/pncconf.glade:4587 -msgid "Sec" +#: src/emc/rs274ngc/interp_convert.cc:3258 +msgid "Q word with M19 requires a value > 0" msgstr "" -#: src/hal/utils/scope_horiz.c:1198 -#: src/emc/usr_intf/stepconf/stepconf.glade:3664 -#: src/emc/usr_intf/stepconf/stepconf.glade:4040 -#: src/emc/usr_intf/pncconf/pncconf.glade:8268 -#: src/emc/usr_intf/pncconf/pncconf.glade:8281 -#: src/emc/usr_intf/pncconf/pncconf.glade:8458 -msgid "Hz" +#: src/emc/rs274ngc/interp_convert.cc:3286 +msgid "Cannot restore context from invalid stack frame - missing M70/M73?" msgstr "" -#: src/hal/utils/scope_horiz.c:1201 -msgid "KHz" +#: src/emc/rs274ngc/interp_convert.cc:3327 +#: src/emc/rs274ngc/interp_convert.cc:3344 +#: src/emc/rs274ngc/interp_convert.cc:3359 +#: src/emc/rs274ngc/interp_convert.cc:3373 +#: src/emc/rs274ngc/interp_convert.cc:3387 +msgid "Cannot enable overrides with cutter radius compensation on" msgstr "" +"Impossível habilitar anulações quando compensação de raio de corte está " +"ativado" -#: src/hal/utils/scope_horiz.c:1205 -msgid "Mhz" +#: src/emc/rs274ngc/interp_convert.cc:3334 +#: src/emc/rs274ngc/interp_convert.cc:3349 +#: src/emc/rs274ngc/interp_convert.cc:3364 +#: src/emc/rs274ngc/interp_convert.cc:3378 +#: src/emc/rs274ngc/interp_convert.cc:3392 +msgid "Cannot disable overrides with cutter radius compensation on" msgstr "" +"Impossível desativar anulações quando compensação de raio de corte está " +"ativado" -#: src/hal/utils/scope_vert.c:403 src/hal/utils/scope_vert.c:1258 +#: src/emc/rs274ngc/interp_convert.cc:3506 +#: src/emc/rs274ngc/interp_convert.cc:3507 +#: src/emc/rs274ngc/interp_convert.cc:3508 #, c-format -msgid "" -"Offset\n" -"%s" +msgid "Indexing axis %c can only be moved with G0" msgstr "" -#: src/hal/utils/scope_vert.c:618 -#, fuzzy -msgid "Gain" -msgstr "Ganho" - -#: src/hal/utils/scope_vert.c:630 src/hal/utils/scope_trig.c:252 -msgid "Pos" +#: src/emc/rs274ngc/interp_convert.cc:3515 +#: src/emc/rs274ngc/interp_convert.cc:3517 +#: src/emc/rs274ngc/interp_convert.cc:3519 +#, c-format +msgid "Indexing axis %c can only be moved alone" msgstr "" -#: src/hal/utils/scope_vert.c:644 tcl/ngcgui_ttt.tcl:214 -#: src/emc/usr_intf/pncconf/pncconf.glade:57147 +#: src/emc/rs274ngc/interp_convert.cc:3621 #, fuzzy -msgid "Scale" -msgstr "Escala" +msgid "Cannot probe with feed per rev mode" +msgstr "Impossível realizar probing com velocidade de movimentação zero" -#: src/hal/utils/scope_vert.c:657 -msgid "Chan Off" -msgstr "Canal Desl" +#: src/emc/rs274ngc/interp_convert.cc:3669 +msgid "Cannot change retract mode with cutter radius compensation on" +msgstr "" +"Impossível modificar modo de retração quando compensação de raio de corte " +"está ativado" -#: src/hal/utils/scope_vert.c:713 -msgid "Set Offset" -msgstr "Alterar Offset" +#: src/emc/rs274ngc/interp_convert.cc:3703 +msgid "G10 L1 without offsets has no effect" +msgstr "" -#: src/hal/utils/scope_vert.c:714 -#, c-format -msgid "" -"Set the vertical offset\n" -"for channel %d." +#: src/emc/rs274ngc/interp_convert.cc:3809 +msgid "Q number in G10 is not an integer" msgstr "" -"Alterar o offset vertical\n" -"para o canal %d." -#: src/hal/utils/scope_vert.c:734 -msgid "AC Coupled" +#: src/emc/rs274ngc/interp_convert.cc:3810 +msgid "Invalid tool orientation" msgstr "" -#: src/hal/utils/scope_vert.c:769 src/hal/utils/scope_vert.c:1171 -#: src/hal/utils/scope_trig.c:367 tcl/bin/emccalib.tcl:229 -#: tcl/bin/genedit.tcl:294 tcl/bin/halconfig.tcl:103 tcl/bin/halconfig.tcl:684 -#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:260 -#: tcl/bin/pickconfig.tcl:369 tcl/mini.tcl:1457 tcl/mini.tcl:2938 -#: tcl/mini.tcl:3110 tcl/tklinuxcnc.tcl:162 tcl/tklinuxcnc.tcl:213 -#: tcl/tklinuxcnc.tcl:420 tcl/tklinuxcnc.tcl:1339 tcl/tklinuxcnc.tcl:1408 -#: tcl/tklinuxcnc.tcl:1439 tcl/tklinuxcnc.tcl:1470 tcl/tklinuxcnc.tcl:2103 -#: src/emc/usr_intf/axis/scripts/axis.py:1404 -#: src/emc/usr_intf/axis/scripts/axis.py:1459 -#: src/emc/usr_intf/axis/scripts/axis.py:1646 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:720 -msgid "Cancel" -msgstr "Cancelar" +#: src/emc/rs274ngc/interp_convert.cc:3933 +msgid "I J words not allowed with G10 L2" +msgstr "Parâmetros I J não permitidos com G10 L2" -#: src/hal/utils/scope_vert.c:849 +#: src/emc/rs274ngc/interp_convert.cc:3954 #, fuzzy -msgid "Too many channels" -msgstr "Muitos canais" - -#: src/hal/utils/scope_vert.c:850 msgid "" -"You cannot add another channel.\n" -"\n" -"Either turn off one or more channels, or shorten\n" -"the record length to allow for more channels" +"Cannot change the active coordinate system with cutter radius compensation on" msgstr "" -"Você não pode adicionar outro canal.\n" -"\n" -"Desligue um ou mais canais ou diminua\n" -"o comprimento do registro para permitir mais canais" +"Impossível mudar sistema de coordenadas quando compensação de raio de corte " +"está ativada" -#: src/hal/utils/scope_vert.c:1026 -msgid "Select Channel Source" -msgstr "Selecione a fonte do canal" +#: src/emc/rs274ngc/interp_convert.cc:3962 +#, fuzzy +msgid "R not allowed in G10 L20" +msgstr "Parâmetros I J não permitidos com G10 L2" -#: src/hal/utils/scope_vert.c:1027 -#, c-format -msgid "" -"Select a pin, signal, or parameter\n" -"as the source for channel %d." +#: src/emc/rs274ngc/interp_convert.cc:4550 +#, fuzzy +msgid "Spindle not turning in G33" +msgstr "Spindle não está girando em G86" + +#: src/emc/rs274ngc/interp_convert.cc:4560 +#, fuzzy +msgid "Spindle not turning in G33.1" +msgstr "Spindle não está girando em G86" + +#: src/emc/rs274ngc/interp_convert.cc:4603 +msgid "BUG: An axis incorrectly moved along with an indexer" msgstr "" -"Selecione um pino, sinal ou\n" -"parâmetro como fonte para canal %d" -#: src/hal/utils/scope_vert.c:1059 -msgid "Pins" -msgstr "Pinos" +#: src/emc/rs274ngc/interp_convert.cc:4616 +msgid "BUG: trying to index incorrect axis" +msgstr "" -#: src/hal/utils/scope_vert.c:1060 -msgid "Signals" -msgstr "Sinais" +#: src/emc/rs274ngc/interp_convert.cc:4708 +msgid "Cannot use G76 threading cycle with cutter radius compensation on" +msgstr "" +"Não pode usar G76 ciclo de rosca quando compensação de raio de corte está " +"ativado" -#: src/hal/utils/scope_vert.c:1061 -msgid "Parameters" -msgstr "Parâmetros" +#: src/emc/rs274ngc/interp_convert.cc:4711 +msgid "In G76, I must not be 0" +msgstr "Em G76, I não pode ser 0" -#: src/hal/utils/scope_trig.c:110 -#, c-format -msgid "Falling" -msgstr "Descendo" +#: src/emc/rs274ngc/interp_convert.cc:4713 +msgid "In G76, J must be greater than 0" +msgstr "Em G76, J precisa ser maior que 0" -#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:275 -#, c-format -msgid "Rising" -msgstr "" +#: src/emc/rs274ngc/interp_convert.cc:4715 +msgid "In G76, K must be greater than J" +msgstr "Em G76, K precisa ser maior que J" -#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:283 +#: src/emc/rs274ngc/interp_convert.cc:4858 msgid "" -"Source\n" -"None" +"Length of cutter compensation entry move is not greater than the tool radius" msgstr "" -"Fonte\n" -"Nenhuma" -#: src/hal/utils/scope_trig.c:124 -#, c-format +#: src/emc/rs274ngc/interp_convert.cc:5077 +msgid "Zero degree inside corner is invalid for cutter compensation" +msgstr "Zero graus dentro de quina é inválido para compensação de corte" + +#: src/emc/rs274ngc/interp_convert.cc:5115 +#: src/emc/rs274ngc/interp_convert.cc:5123 msgid "" -"Source\n" -"Chan %2d" +"Arc to straight motion makes a corner the compensated tool can't fit in " +"without gouging" msgstr "" -"Fonte\n" -"Canal %2d" +"Movimento de arco para linha faz uma quina em que a compensação de " +"ferramenta não pode ser encaixada" -#: src/hal/utils/scope_trig.c:199 tcl/tklinuxcnc.tcl:827 -#: src/emc/usr_intf/touchy/touchy.glade:2469 -msgid "Auto" +#: src/emc/rs274ngc/interp_convert.cc:5207 +msgid "Cannot change tools with cutter radius compensation on" msgstr "" +"Impossível mudar de ferramenta enquanto a compensação de raio de corte está " +"ativada" -#: src/hal/utils/scope_trig.c:201 -msgid "Force" -msgstr "Forçar" - -#: src/hal/utils/scope_trig.c:235 src/hal/utils/scope_trig.c:269 -msgid "Level" -msgstr "Nível" - -#: src/hal/utils/scope_trig.c:303 -msgid "Trigger Source" -msgstr "Fonte do gatilho" - -#: src/hal/utils/scope_trig.c:304 -msgid "Select a channel to use for triggering." -msgstr "Selecione um canal para usar como gatilho" - -#: src/hal/utils/scope_trig.c:327 -#, fuzzy -msgid "Chan" -msgstr "Canal" +#: src/emc/rs274ngc/interp_convert.cc:5328 +msgid "Cannot change tool offset with cutter radius compensation on" +msgstr "" +"Impossível mudar offset de comprimento de ferramenta quando compensação de " +"raio da ferramenta está ativado" -#: src/hal/utils/scope_trig.c:328 -msgid "Source" -msgstr "Fonte" +#: src/emc/rs274ngc/interp_queue.cc:694 +#, c-format +msgid "" +"BUG: cutter compensation has generated an invalid arc with mismatched radii " +"r1 %f r2 %f\n" +msgstr "" -#: src/emc/motion/control.c:261 -msgid "Unexpected realtime delay: check dmesg for details." +#: src/emc/rs274ngc/interp_queue.cc:716 +msgid "BUG: Unsupported plane in cutter compensation" msgstr "" -"Delay inesperado no sistema de tempo real: verifique dmesg para detalhes" -#: src/emc/motion/control.c:263 -#, c-format +#: src/emc/rs274ngc/interp_queue.cc:729 msgid "" -"\n" -"In recent history there were\n" -"%ld, %ld, %ld, %ld, and %ld\n" -"elapsed clocks between calls to the motion controller.\n" +"Straight traverse in concave corner cannot be reached by the tool without " +"gouging" msgstr "" -"\n" -"Na história recente, houveram\n" -"%ld, %ld, %ld, %ld, e %ld\n" -"pulsos de clock entre chamadas ao controlador de movimentação.\n" +"Deslocamento linear em quina côncava não pode ser alcançado pela ferramenta " +"sem danificar o material" -#: src/emc/motion/control.c:268 +#: src/emc/rs274ngc/interp_queue.cc:757 #, c-format +msgid "BUG: Unsupported plane [%d] in cutter compensation" +msgstr "" + +#: src/emc/rs274ngc/interp_queue.cc:771 msgid "" -"This time, there were %ld which is so anomalously\n" -"large that it probably signifies a problem with your\n" -"realtime configuration. For the rest of this run of\n" -"EMC, this message will be suppressed.\n" -"\n" +"Straight feed in concave corner cannot be reached by the tool without gouging" msgstr "" -"Desta vez, houveram %ld o que é tão anormal\n" -"que provavelmente significa um problema com sua configuração\n" -"do sistema de tempo real. Durante o restante dessa execução\n" -"do EMC essa mensagem será suprimida.\n" +"Movimento linear em quina côncava não pode ser alcançado pela ferramenta sem " +"danificar o material" -#: src/emc/motion/control.c:384 +#: src/emc/rs274ngc/interp_cycles.cc:630 #, fuzzy -msgid "G38.4 move finished without breaking contact." -msgstr "G38.2 movimento de probe terminado sem ativar o sensor" +msgid "Cannot feed with zero feed rate" +msgstr "Impossível realizar G1 com velocidade de movimentação zero" -#: src/emc/motion/control.c:387 +#: src/emc/rs274ngc/interp_cycles.cc:631 #, fuzzy -msgid "G38.2 move finished without making contact." -msgstr "G38.2 movimento de probe terminado sem ativar o sensor" +msgid "Cannot use inverse time feed with canned cycles" +msgstr "Impossível realizar probing com modo de velocidade inverso" -#: src/emc/motion/control.c:401 -msgid "Probe tripped during non-probe MDI command." -msgstr "Probe ativado durante comando MDI que não utiliza probing" +#: src/emc/rs274ngc/interp_cycles.cc:632 +#, fuzzy +msgid "Cannot use canned cycles with cutter compensation on" +msgstr "" +"Impossível mudar o plano ativo com compensação de raio de corte ativada" -#: src/emc/motion/control.c:429 -msgid "Probe tripped during homing motion." -msgstr "Probe ativado durante movimento de home" +#: src/emc/rs274ngc/interp_cycles.cc:829 +msgid "G17 canned cycle is not possible on a machine without Z axis" +msgstr "Ciclo pré-formado G17 não é possível em máquina sem eixo Z" -#: src/emc/motion/control.c:433 -msgid "Probe tripped during a jog." -msgstr "Probe ativado durante jog" +#: src/emc/rs274ngc/interp_cycles.cc:1015 +msgid "G17.1 canned cycle is not possible on a machine without W axis" +msgstr "Ciclo G17.1 não é possível em máquina sem eixo W" -#: src/emc/motion/control.c:578 -#, fuzzy, c-format -msgid "fault %d during orient in progress" -msgstr "sequência de homing em execução" +#: src/emc/rs274ngc/interp_cycles.cc:1231 +msgid "G19 canned cycle is not possible on a machine without X axis" +msgstr "Ciclo G19 não é possível em máquina sem eixo X" -#: src/emc/motion/control.c:718 -msgid "motion stopped by enable input" -msgstr "movimentação suspensa pela entrada 'enable'" +#: src/emc/rs274ngc/interp_cycles.cc:1399 +msgid "G19.1 canned cycle is not possible on a machine without U axis" +msgstr "Ciclo G19.1 não é possível em máquina sem eixo U" -#: src/emc/motion/control.c:741 -#, c-format -msgid "joint %d on limit switch error" -msgstr "erro no interruptor de limite do eixo %d" +#: src/emc/rs274ngc/interp_cycles.cc:1624 +msgid "G18 canned cycle is not possible on a machine without Y axis" +msgstr "Ciclo G18 não é possível em máquina sem eixo Y" -#: src/emc/motion/control.c:753 -#, c-format -msgid "joint %d amplifier fault" -msgstr "erro no amplificado do eixo %d" +#: src/emc/rs274ngc/interp_cycles.cc:1791 +msgid "G18.1 canned cycle is not possible on a machine without V axis" +msgstr "Ciclo G18.1 não é possível em máquina sem eixo V" -#: src/emc/motion/control.c:762 -#, c-format -msgid "joint %d following error" -msgstr "erro de cálculo de movimentação no eixo %d" +#: src/emc/rs274ngc/interp_find.cc:170 +msgid "Cannot use polar coordinates with G53" +msgstr "Impossível usar coordenadas polares com G53" -#: src/emc/motion/control.c:1444 -#, c-format -msgid "Exceeded positive soft limit on joint %d" -msgstr "Excedido limite positivo de software no eixo %d" +#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 +#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 +#: src/emc/rs274ngc/interp_find.cc:347 +msgid "Cannot specify X or Y words with polar coordinate" +msgstr "Impossível especificar parâmetros X ou Y com coordenadas polares" -#: src/emc/motion/control.c:1449 -#, c-format -msgid "Exceeded negative soft limit on joint %d" -msgstr "Excedido limite negativo de software no eixo %d" +#: src/emc/rs274ngc/interp_find.cc:272 +msgid "Must specify angle in polar coordinate if at the origin" +msgstr "" +"Precisa especificar o ângulo em coordenadas polares caso esteja na origem" -#: src/emc/motion/command.c:159 -#, c-format -msgid "Can't jog invalid joint number %d." -msgstr "Impossível efetuar jog do eixo (inválido) %d" +#: src/emc/rs274ngc/interp_find.cc:338 +msgid "" +"Incremental motion with polar coordinates is indeterminate when at the origin" +msgstr "" +"Movimento incremental com coordenadas polares é indeterminado quando na " +"origem" -#: src/emc/motion/command.c:163 -#, c-format -msgid "Can't jog joint %d further past max hard limit." -msgstr "Impossível efetuar jog além do limite físico no eixo %d" +#: src/emc/rs274ngc/interp_find.cc:348 +msgid "G91 motion with polar coordinates is indeterminate when at the origin" +msgstr "Comando G91 com coordenadas polares é indeterminado quando na origem" -#: src/emc/motion/command.c:168 +#: src/emc/rs274ngc/interp_find.cc:720 #, c-format -msgid "Can't jog joint %d further past min hard limit." -msgstr "Impossível efetuar jog além do limite físico mínimo no eixo %d" +msgid "Requested tool %d not found in the tool table" +msgstr "Ferramenta requisitada %d não encontrada na tabela de ferramentas" -#: src/emc/motion/command.c:174 -#, c-format -msgid "Can't jog joint %d further past max soft limit." -msgstr "Impossível efetuar jog além do limite de software máximo no eixo %d" +#: src/emc/rs274ngc/interp_internal.cc:161 +msgid "Cannot use polar coordinate on a machine lacking X or Y axes" +msgstr "" +"Impossível usar coordenadas polares em máquina que não tem os eixos X ou Y" -#: src/emc/motion/command.c:179 -#, c-format -msgid "Can't jog joint %d further past min soft limit." -msgstr "Impossível efetuar jog além do limite de software mínimo no eixo %d" +#: src/emc/rs274ngc/interp_internal.cc:162 +msgid "Cannot use polar coordinate except in G17 plane" +msgstr "Não pode usar coordenadas polares exceto no plano G17" -#: src/emc/motion/command.c:237 -#, c-format -msgid "%s move on line %d would exceed joint %d's positive limit" -msgstr "movimento (%s) na linha %d iria exceder o limite positivo no eixo %d" +#: src/emc/rs274ngc/interp_internal.cc:163 +msgid "Cannot specify both polar coordinate and X word" +msgstr "" +"Impossível especificar uma coordenada polar e um parâmetro X ao mesmo tempo" -#: src/emc/motion/command.c:240 -#, c-format -msgid "%s move in MDI would exceed joint %d's positive limit" -msgstr "movimento (%s) em MDI iria exceder o limite positivo do eixo %d" +#: src/emc/rs274ngc/interp_internal.cc:164 +msgid "Cannot specify both polar coordinate and Y word" +msgstr "" +"Impossível especificar uma coordenada polar e um parâmetro Y ao mesmo tempo" + +#: src/emc/rs274ngc/interp_internal.cc:185 +#: src/emc/rs274ngc/interp_internal.cc:199 +#: src/emc/rs274ngc/interp_internal.cc:214 +msgid "Polar coordinates can only be used for motion" +msgstr "Coordenadas polares só podem ser usadas para movimentação" -#: src/emc/motion/command.c:247 +#: src/emc/rs274ngc/interp_read.cc:1150 src/emc/rs274ngc/interp_read.cc:1154 #, c-format -msgid "%s move on line %d would exceed joint %d's negative limit" -msgstr "movimento (%s) na linha %d iria exceder o limite negativo do eixo %d" +msgid "Bad character '\\%03o' used" +msgstr "Caractere inválido usado no programa: '\\%03o'" -#: src/emc/motion/command.c:250 +#: src/emc/rs274ngc/interp_read.cc:1154 #, c-format -msgid "%s move in MDI would exceed joint %d's negative limit" -msgstr "movimento (%s) em MDI iria exceder o limite negativo do eixo %d" +msgid "Bad character '%c' used" +msgstr "Caractere inválido usado no programa: '%c'" -#: src/emc/motion/command.c:500 -msgid "all joints must be homed before going into coordinated mode" -msgstr "" -"todos os eixos devem ser referenciados antes de entrar no modo coordenado" +#: src/emc/rs274ngc/interp_read.cc:1678 +#, fuzzy +msgid "Left bracket missing after 'while'" +msgstr "Fecha colchetes faltando após barra com 'atan'" -#: src/emc/motion/command.c:521 -msgid "all joints must be homed before going into teleop mode" -msgstr "" -"todos os eixos precisam ser referenciados antes de entrar no modo teleop" +#: src/emc/rs274ngc/interp_read.cc:1693 +#, fuzzy +msgid "Left bracket missing after 'repeat'" +msgstr "Fecha colchetes faltando após nome de operação com 1 parâmetro" -#: src/emc/motion/command.c:675 src/emc/motion/command.c:741 -#: src/emc/motion/command.c:814 -msgid "Can't jog joint in coordinated mode." -msgstr "Impossível efetuar jog no modo coordenado" +#: src/emc/rs274ngc/interp_read.cc:1708 +#, fuzzy +msgid "Left bracket missing after 'if'" +msgstr "Fecha colchetes faltando após barra com 'atan'" -#: src/emc/motion/command.c:680 src/emc/motion/command.c:746 -#: src/emc/motion/command.c:819 -msgid "Can't jog joint when not enabled." -msgstr "Impossível efetuar jog no eixo quando não habilitado" +#: src/emc/rs274ngc/interp_read.cc:1723 +#, fuzzy +msgid "Left bracket missing after 'elseif'" +msgstr "Fecha colchetes faltando após barra com 'atan'" -#: src/emc/motion/command.c:685 src/emc/motion/command.c:824 -msgid "Can't jog any joints while homing." +#: src/emc/rs274ngc/interp_read.cc:1926 +#, fuzzy +msgid "Cannot read current position with cutter radius compensation on" msgstr "" -"Impossível efetuar jog de eixos enquanto está efetuando o processo de homing" +"Impossível setar saída do movimento quando compensação de raio de corte está " +"ativado" -#: src/emc/motion/command.c:751 -msgid "Can't jog any joint while homing." +#: src/emc/rs274ngc/interp_read.cc:1941 +msgid "Expected # reading parameter" msgstr "" -"Impossível efetuar jog de qualquer eixo enquanto está efetuando o processo " -"de homing" - -#: src/emc/motion/command.c:881 -msgid "need to be enabled, in coord mode for linear move" -msgstr "precisa estar habilitado, no modo coordenado, para movimento linear" -#: src/emc/motion/command.c:891 -msgid "can't do linear move with limits exceeded" -msgstr "impossível efetuar movimento linear com os limites excedidos" +#: src/emc/rs274ngc/interp_read.cc:1943 +msgid "Expected ] reading bracketed parameter" +msgstr "" -#: src/emc/motion/command.c:910 -msgid "can't add linear move" -msgstr "impossível adicionar movimento linear" +#: src/emc/rs274ngc/interp_read.cc:2615 +#, c-format +msgid "bad number format (conversion failed) parsing '%s'" +msgstr "" -#: src/emc/motion/command.c:930 -msgid "need to be enabled, in coord mode for circular move" +#: src/emc/rs274ngc/interp_read.cc:2616 +#, c-format +msgid "bad number format (trailing characters) parsing '%s'" msgstr "" -"precisa estar habilitado, em modo coordenado, para efetuar movimento circular" -#: src/emc/motion/command.c:940 -msgid "can't do circular move with limits exceeded" -msgstr "impossível efetuar movimento circular com os limites excedidos" +#: src/emc/rs274ngc/interp_read.cc:2706 +msgid "Calculation resulted in 'not a number'" +msgstr "" -#: src/emc/motion/command.c:958 -msgid "can't add circular move" -msgstr "impossível adicionar movimento circular" +#: src/emc/rs274ngc/interp_read.cc:2708 +msgid "Calculation resulted in 'infinity'" +msgstr "" -#: src/emc/motion/command.c:1048 -msgid "MOTION: can't STEP while already executing" -msgstr "MOVIMENTAÇÃO: impossível efetuar PASSO enquanto já está executando" +#: src/emc/rs274ngc/interp_read.cc:3001 +#, c-format +msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" +msgstr "" -#: src/emc/motion/command.c:1140 -msgid "can't enable motion, enable input is false" -msgstr "impossível habilitar movimentação: entrada 'enable' tem valor falso" +#: src/emc/rs274ngc/interp_read.cc:3113 +msgid "Multiple U words on one line" +msgstr "Múltiplos parâmetros U em uma linha" -#: src/emc/motion/command.c:1213 -msgid "must be in joint mode to home" -msgstr "precisa estar em modo JOINT para efetuar processo de homing" +#: src/emc/rs274ngc/interp_read.cc:3129 +msgid "Multiple V words on one line" +msgstr "Múltiplaos parâmetros V em uma linha" -#: src/emc/motion/command.c:1224 src/emc/motion/command.c:1235 -msgid "homing sequence already in progress" -msgstr "sequência de homing já está em execução" +#: src/emc/rs274ngc/interp_read.cc:3145 +msgid "Multiple W words on one line" +msgstr "Múltiplos parâmetros W em uma linha" -#: src/emc/motion/command.c:1233 -msgid "homing already in progress" -msgstr "sequência de homing em execução" +#: src/emc/rs274ngc/interp_o_word.cc:97 +#, c-format +msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" +msgstr "" -#: src/emc/motion/command.c:1263 -msgid "must be in joint mode or disabled to unhome" -msgstr "precisa estar em modo JOINT ou desabilitado para remover home" +#: src/emc/rs274ngc/interp_o_word.cc:722 +#, fuzzy, c-format +msgid "%d: not in a subroutine definition: '%s'" +msgstr "Não existe na definição da subrotina" -#: src/emc/motion/command.c:1275 src/emc/motion/command.c:1298 +#: src/emc/rs274ngc/interp_o_word.cc:759 src/emc/rs274ngc/interp_o_word.cc:809 #, c-format -msgid "Cannot unhome while homing, joint %d" -msgstr "Impossível remover home enquanto está fazendo homing do eixo %d" +msgid "%d: duplicate O-word label: '%s' - defined in line %d" +msgstr "" -#: src/emc/motion/command.c:1279 src/emc/motion/command.c:1302 +#: src/emc/rs274ngc/interp_o_word.cc:862 #, c-format -msgid "Cannot unhome while moving, joint %d" -msgstr "Impossível remover home enquanto movendo eixo %d" +msgid "%d: duplicate O-word label - already defined in line %d: '%s'" +msgstr "" -#: src/emc/motion/command.c:1307 +#: src/emc/rs274ngc/interp_o_word.cc:886 src/emc/rs274ngc/interp_o_word.cc:944 +#: src/emc/rs274ngc/interp_o_word.cc:978 src/emc/rs274ngc/interp_o_word.cc:996 +#: src/emc/rs274ngc/interp_o_word.cc:1013 +#: src/emc/rs274ngc/interp_o_word.cc:1038 #, c-format -msgid "Cannot unhome inactive joint %d" -msgstr "Impossível remover home do eixo inativo %d" +msgid "%d: undefined O-word label: '%s'" +msgstr "" -#: src/emc/motion/command.c:1311 +#: src/emc/rs274ngc/interp_o_word.cc:889 src/emc/rs274ngc/interp_o_word.cc:947 #, c-format -msgid "Cannot unhome invalid joint %d (max %d)" -msgstr "Impossível remover home do eixo inválido %d (máximo %d)" - -#: src/emc/motion/command.c:1338 -msgid "need to be enabled, in coord mode for probe move" +msgid "%d: no matching 'if' label: '%s' (found '%s' in line %d)" msgstr "" -"precisa estar habilitado, em modo coordenado para movimento de de probe" - -#: src/emc/motion/command.c:1348 -msgid "can't do probe move with limits exceeded" -msgstr "impossível efetuar movimento de probe com os limites excedidos" - -#: src/emc/motion/command.c:1362 -msgid "Probe is already clear when starting G38.4 or G38.5 move" -msgstr "Probe já está limpo quanto iniciando comando G38.4 ou G38.5" -#: src/emc/motion/command.c:1364 -msgid "Probe is already tripped when starting G38.2 or G38.3 move" -msgstr "Probe já está ativado quando iniciando comando G38.2 ou G38.3" +#: src/emc/rs274ngc/interp_o_word.cc:981 +#, c-format +msgid "%d: no matching label: '%s' (found '%s' in line %d): '%s'" +msgstr "" -#: src/emc/motion/command.c:1376 -msgid "can't add probe move" -msgstr "impossível adicionar comando de probe" +#: src/emc/rs274ngc/interp_o_word.cc:999 src/emc/rs274ngc/interp_o_word.cc:1016 +#, c-format +msgid "%d: no matching while/do label: '%s' (found '%s' in line %d)" +msgstr "" -#: src/emc/motion/command.c:1400 -msgid "need to be enabled, in coord mode for rigid tap move" -msgstr "precisa estar habilitado, para movimento em tap" +#: src/emc/rs274ngc/interp_o_word.cc:1042 +#, c-format +msgid "%d: no matching label: '%s' (found '%s' in line %d)" +msgstr "" -#: src/emc/motion/command.c:1410 -msgid "can't do rigid tap move with limits exceeded" -msgstr "impossível realizar movimento de tap com os limites excedidos" +#: src/emc/rs274ngc/interp_namedparams.cc:166 +#, c-format +msgid "Named parameter #<%s> not defined" +msgstr "Parâmetro nomeado #<%s> não definido" -#: src/emc/motion/command.c:1421 -msgid "can't add rigid tap move" -msgstr "impossível adicionar movimento de tap" +#: src/emc/rs274ngc/interp_namedparams.cc:196 +#, fuzzy, c-format +msgid "cant open ini file '%s'" +msgstr "impossível abrir %s" -#: src/emc/motion/command.c:1435 -msgid "need to be enabled, in teleop mode for teleop move" -msgstr "precisa estar habilitado, no modo teleop, para movimento" +#: src/emc/rs274ngc/interp_namedparams.cc:213 +#, fuzzy, c-format +msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" +msgstr "Parâmetro nomeado #<%s> não definido" -#: src/emc/motion/command.c:1605 +#: src/emc/rs274ngc/interp_namedparams.cc:237 #, c-format -msgid "joint %d: too many compensation entries" -msgstr "eixo %d: muitas compensações de entrada" +msgid "fetch_hal_param: hal_init(%s): %d" +msgstr "" -#: src/emc/motion/command.c:1611 +#: src/emc/rs274ngc/interp_namedparams.cc:238 #, c-format -msgid "joint %d: compensation values must increase" -msgstr "eixo %d: valores de compensação precisam aumentar" +msgid "fetch_hal_param: hal_ready(): %d" +msgstr "" -#: src/emc/motion/command.c:1640 +#: src/emc/rs274ngc/interp_namedparams.cc:419 #, c-format -msgid "unrecognized command %d" -msgstr "comando não reconhecido: %d" - -#: src/emc/motion/motion.c:185 -msgid "MOTION: hal_init() failed\n" -msgstr "MOTION: hal_init() falhou\n" +msgid "Internal error: Could not assign #<%s>" +msgstr "Erro interno: impossível atribuir #<%s>" -#: src/emc/motion/motion.c:190 +#: src/emc/rs274ngc/interp_namedparams.cc:427 #, c-format -msgid "MOTION: num_joints is %d, must be between 1 and %d\n" -msgstr "MOTION: num_joints é %d, precisa ser entre 1 e %d\n" +msgid "Cannot assign to read-only parameter #<%s>" +msgstr "" -#: src/emc/motion/motion.c:197 +#: src/emc/rs274ngc/interp_namedparams.cc:731 #, c-format -msgid "MOTION: num_dio is %d, must be between 1 and %d\n" -msgstr "MOTION: num_dio é %d, precisa ser entre 1 e %d\n" +msgid "BUG: lookup_named_param(%s): unhandled index=%fn" +msgstr "" -#: src/emc/motion/motion.c:204 -#, c-format -msgid "MOTION: num_aio is %d, must be between 1 and %d\n" -msgstr "MOTION: num_aio é %d, precisa ser entre 1 e %d\n" +#: src/emc/rs274ngc/rs274ngc_pre.cc:1407 src/emc/rs274ngc/rs274ngc_pre.cc:1482 +msgid "Queue is not empty after tool change" +msgstr "Fila não está vazia após troca de ferramenta" -#: src/emc/motion/motion.c:212 -msgid "MOTION: init_hal_io() failed\n" -msgstr "MOTION: init_hal_io() falhou\n" +#: src/emc/rs274ngc/rs274ngc_pre.cc:1786 +#, fuzzy, c-format +msgid "Unable to open parameter file: '%s'" +msgstr "Impossível abrir arquivo" -#: src/emc/motion/motion.c:221 -msgid "MOTION: init_comm_buffers() failed\n" -msgstr "MOTION: init_comm_buffers() falhou\n" +#: src/emc/rs274ngc/rs274ngc_return.hh:19 +msgid "A file is already open" +msgstr "Um arquivo já está aberto" -#: src/emc/motion/motion.c:229 -msgid "MOTION: init_threads() failed\n" -msgstr "MOTION: init_threads() falhou\n" +#: src/emc/rs274ngc/rs274ngc_return.hh:21 +#, fuzzy +msgid "All axes missing with g52 or g92" +msgstr "Nenhum eixo especificado com G92" -#: src/emc/motion/motion.c:254 -#, c-format -msgid "MOTION: hal_stop_threads() failed, returned %d\n" -msgstr "MOTION: hal_stop_threads() falhou, retornou %d\n" +#: src/emc/rs274ngc/rs274ngc_return.hh:22 +msgid "All axes missing with motion code" +msgstr "Nenhum eixo especificado no código de movimentação" -#: src/emc/motion/motion.c:260 -#, c-format -msgid "MOTION: rtapi_shmem_delete() failed, returned %d\n" -msgstr "MOTION: rtapi_shmem_delete() falhou, retornou %d\n" +#: src/emc/rs274ngc/rs274ngc_return.hh:23 +msgid "Arc radius too small to reach end point" +msgstr "Raio do arco é muito pequeno para alcançar o ponto final" -#: src/emc/motion/motion.c:266 -#, c-format -msgid "MOTION: hal_exit() failed, returned %d\n" -msgstr "MOTION: hal_exit() falhou, retornou %d\n" +#: src/emc/rs274ngc/rs274ngc_return.hh:24 +msgid "Argument to acos out of range" +msgstr "Argumento para 'acos' fora dos limites" -#: src/emc/motion/motion.c:289 -msgid "MOTION: emcmot_hal_data malloc failed\n" -msgstr "MOTION: emcmot_hal_data malloc falhou\n" +#: src/emc/rs274ngc/rs274ngc_return.hh:25 +msgid "Argument to asin out of range" +msgstr "Argumento para 'asin' fora dos limites" -#: src/emc/motion/motion.c:597 -#, c-format -msgid "MOTION: joint %d pin/param export failed\n" -msgstr "MOTION: exportação dos parâmetros/pins do eixo %d falhou\n" +#: src/emc/rs274ngc/rs274ngc_return.hh:26 +msgid "Attempt to divide by zero" +msgstr "Tentativa de dividir por zero" -#: src/emc/motion/homing.c:80 src/emc/motion/homing.c:748 -#, c-format -msgid "hit limit in home state %d" -msgstr "limite encontrado durante estado de home %d" +#: src/emc/rs274ngc/rs274ngc_return.hh:27 +msgid "Attempt to raise negative to non integer power" +msgstr "Tentativa de calcular potência não inteira de um número negativo" -#: src/emc/motion/homing.c:90 -#, c-format -msgid "end of move in home state %d" -msgstr "fim do movimento durante estado de home %d" +#: src/emc/rs274ngc/rs274ngc_return.hh:28 +msgid "Bad format unsigned integer" +msgstr "Inteiro mal formado" -#: src/emc/motion/homing.c:185 -#, c-format -msgid "unknown state '%d' during homing sequence" -msgstr "estado desconhecido durante sequência de homing: %d" +#: src/emc/rs274ngc/rs274ngc_return.hh:29 +msgid "Bad number format" +msgstr "Formato de número inválido" -#: src/emc/motion/homing.c:246 -msgid "Cannot home while shared home switch is closed" +#: src/emc/rs274ngc/rs274ngc_return.hh:30 +msgid "Bug bad g code modal group 0" msgstr "" -"Impossível efetuar sequencia de homing enquanto um interruptor de home " -"compartilhado está fechado" -#: src/emc/motion/homing.c:290 -msgid "" -"invalid homing config: non-zero LATCH_VEL needs either SEARCH_VEL or " -"USE_INDEX" +#: src/emc/rs274ngc/rs274ngc_return.hh:31 +msgid "Bug code not g0 or g1" msgstr "" -"Config de home inválida: velocidade LATCH_VEL não-zero precisa ter uma " -"SEARCH_VEL ou USE_INDEX especificada." -#: src/emc/motion/homing.c:299 -msgid "invalid homing config: non-zero SEARCH_VEL needs LATCH_VEL" +#: src/emc/rs274ngc/rs274ngc_return.hh:32 +msgid "Bug code not g17 g18 or g19" msgstr "" -"Configuração de home inválida: velocidade SEARCH_VEL não-zero precisa de " -"LATCH_VEL" -#: src/emc/motion/homing.c:447 -msgid "Home switch inactive before start of backoff move" -msgstr "Interruptor de home inativo antes do início do movimento de retorno" +#: src/emc/rs274ngc/rs274ngc_return.hh:33 +msgid "Bug code not g20 or g21" +msgstr "" -#: src/emc/motion/homing.c:495 -msgid "Home switch active before start of latch move" -msgstr "Interruptor de home ativo antes do início do movimento de latch" +#: src/emc/rs274ngc/rs274ngc_return.hh:34 +msgid "Bug code not g28 or g30" +msgstr "" -#: src/emc/motion/homing.c:551 -msgid "Home switch inactive before start of latch move" -msgstr "Interruptor de home inativo antes do início do movimento de latch" +#: src/emc/rs274ngc/rs274ngc_return.hh:35 +msgid "Bug code not g2 or g3" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:37 +msgid "Bug code not g4 g10 g28 g30 g52 g53 or g92 series" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:38 +msgid "Bug code not g61 g61.1 or g64" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:39 +msgid "Bug code not g90 or g91" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:40 +msgid "Bug code not g98 or g99" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:41 +msgid "Bug code not in g52 or g92 series" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:42 +msgid "Bug code not in range g54 to g593" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:43 +msgid "Bug code not m0 m1 m2 m30 m60" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:44 +msgid "Bug distance mode not g90 or g91" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:45 +msgid "Bug function should not have been called" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:46 +msgid "Bug in tool radius comp" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:47 +msgid "Bug plane not xy yz or xz" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:48 +msgid "Bug side not right or left" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:49 +msgid "Bug unknown motion code" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:50 +msgid "Bug unknown operation" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:51 +msgid "Cannot change axis offsets with cutter radius comp" +msgstr "" +"Impossível mudar offsets de eixos com compensação de raio de ferramenta " +"ativado" + +#: src/emc/rs274ngc/rs274ngc_return.hh:52 +msgid "Cannot create backup file" +msgstr "Impossível criar arquivo de backup" + +#: src/emc/rs274ngc/rs274ngc_return.hh:53 +msgid "Cannot do g1 with zero feed rate" +msgstr "Impossível realizar G1 com velocidade de movimentação zero" + +#: src/emc/rs274ngc/rs274ngc_return.hh:54 +msgid "Cannot do zero repeats of cycle" +msgstr "Impossível realizar zero repetições de um ciclo" + +#: src/emc/rs274ngc/rs274ngc_return.hh:55 +msgid "Cannot make arc with zero feed rate" +msgstr "Impossível realizar arco com velocidade de movimentação zero" + +#: src/emc/rs274ngc/rs274ngc_return.hh:56 +msgid "Cannot open backup file" +msgstr "Impossível abrir arquivo de backup" + +#: src/emc/rs274ngc/rs274ngc_return.hh:57 +msgid "Cannot open variable file" +msgstr "Impossível abrir arquivo de variáveis" + +#: src/emc/rs274ngc/rs274ngc_return.hh:58 +msgid "Cannot probe with cutter radius comp on" +msgstr "" +"Impossível realizar probing com compensação de raio de ferramenta ativado" + +#: src/emc/rs274ngc/rs274ngc_return.hh:59 +msgid "Cannot probe with zero feed rate" +msgstr "Impossível realizar probing com velocidade de movimentação zero" + +#: src/emc/rs274ngc/rs274ngc_return.hh:60 +msgid "Cannot put a b in canned cycle" +msgstr "Impossível colocar um 'b' no ciclo" + +#: src/emc/rs274ngc/rs274ngc_return.hh:61 +msgid "Cannot put a c in canned cycle" +msgstr "Impossível colocar um 'c' no ciclo" + +#: src/emc/rs274ngc/rs274ngc_return.hh:62 +msgid "Cannot put an a in canned cycle" +msgstr "Impossível colocar um 'a' no ciclo" + +#: src/emc/rs274ngc/rs274ngc_return.hh:63 +msgid "Cannot turn cutter radius comp on when on" +msgstr "" +"Impossível ligar comepnsação de raio de ferramenta quando já está ligado" + +#: src/emc/rs274ngc/rs274ngc_return.hh:64 +msgid "Cannot use axis values with g80" +msgstr "Impossível usar valores de eixos com G80" + +#: src/emc/rs274ngc/rs274ngc_return.hh:65 +msgid "Cannot use axis values without a g code that uses them" +msgstr "Impossível usar valores de eixo sem um código G que os utilize" + +#: src/emc/rs274ngc/rs274ngc_return.hh:66 +msgid "Cannot use g28 or g30 with cutter radius comp" +msgstr "" +"Impossível usar G28 ou G30 com compensação de raio de ferramenta ativado" + +#: src/emc/rs274ngc/rs274ngc_return.hh:67 +msgid "Cannot use g53 incremental" +msgstr "Impossível usar G53 incremental" + +#: src/emc/rs274ngc/rs274ngc_return.hh:68 +msgid "Cannot use g53 with cutter radius comp" +msgstr "" +"Impossível usar G28 ou G30 com compensação de raio de ferramenta ativado" + +#: src/emc/rs274ngc/rs274ngc_return.hh:69 +msgid "Cannot use two g codes that both use axis values" +msgstr "" +"Impossível usar dois comandos em código G quando ambos usam valores de eixos" + +#: src/emc/rs274ngc/rs274ngc_return.hh:70 +#, fuzzy +msgid "Command too long" +msgstr "Comando muito longo" + +#: src/emc/rs274ngc/rs274ngc_return.hh:71 +msgid "Current point same as end point of arc" +msgstr "Ponto atual é o mesmo que o ponto final do arco" + +#: src/emc/rs274ngc/rs274ngc_return.hh:72 +msgid "Dwell time missing with g4" +msgstr "Tempo de espera faltando com G4" + +#: src/emc/rs274ngc/rs274ngc_return.hh:73 +msgid "Dwell time p word missing with g82" +msgstr "Tempo de espera com parâmetro P faltando com G82" + +#: src/emc/rs274ngc/rs274ngc_return.hh:74 +msgid "Dwell time p word missing with g86" +msgstr "Tempo de espera com parâmetro P faltando com G86" + +#: src/emc/rs274ngc/rs274ngc_return.hh:75 +msgid "Dwell time p word missing with g88" +msgstr "Tempo de espera com parâmetro P faltando com G88" + +#: src/emc/rs274ngc/rs274ngc_return.hh:76 +msgid "Dwell time p word missing with g89" +msgstr "Tempo de espera com parâmetro P faltando com G89" + +#: src/emc/rs274ngc/rs274ngc_return.hh:77 +msgid "Equal sign missing in parameter setting" +msgstr "Sinal de igual faltando no parâmetro" + +#: src/emc/rs274ngc/rs274ngc_return.hh:78 +msgid "F word missing with inverse time arc move" +msgstr "Parâmetro F faltando com movimento em arco no modo de tempo inverso" + +#: src/emc/rs274ngc/rs274ngc_return.hh:79 +msgid "F word missing with inverse time g1 move" +msgstr "Parâmetro F faltando com movimento G1 no modo de tempo inverso" + +#: src/emc/rs274ngc/rs274ngc_return.hh:80 +msgid "File ended with no percent sign" +msgstr "Arquivo terminou sem sinal de porcentagem" + +#: src/emc/rs274ngc/rs274ngc_return.hh:81 +msgid "File ended with no percent sign or program end" +msgstr "Arquivo terminou sem sinal de porcentagem ou fim de programa (M30)" + +#: src/emc/rs274ngc/rs274ngc_return.hh:82 +msgid "File name too long" +msgstr "Nome do arquivo muito comprido" + +#: src/emc/rs274ngc/rs274ngc_return.hh:83 +msgid "G code out of range" +msgstr "Código G fora dos limites" + +#: src/emc/rs274ngc/rs274ngc_return.hh:84 +msgid "I word given for arc in yz plane" +msgstr "Parâmetro I dado para arco no plano YZ" + +#: src/emc/rs274ngc/rs274ngc_return.hh:85 +msgid "I word missing with g87" +msgstr "Parâmetro I faltando com G87" + +#: src/emc/rs274ngc/rs274ngc_return.hh:86 +msgid "J word given for arc in xz plane" +msgstr "Parâmetro J dado para arco no plano XZ" + +#: src/emc/rs274ngc/rs274ngc_return.hh:87 +msgid "J word missing with g87" +msgstr "Parâmetro J faltando com comando G87" + +#: src/emc/rs274ngc/rs274ngc_return.hh:88 +msgid "K word given for arc in xy plane" +msgstr "Parâmetro K dado para um arco no plano XY" + +#: src/emc/rs274ngc/rs274ngc_return.hh:89 +msgid "K word missing with g87" +msgstr "Parâmetro K faltando com G87" + +#: src/emc/rs274ngc/rs274ngc_return.hh:90 +msgid "Left bracket missing after slash with atan" +msgstr "Fecha colchetes faltando após barra com 'atan'" + +#: src/emc/rs274ngc/rs274ngc_return.hh:91 +msgid "Left bracket missing after unary operation name" +msgstr "Fecha colchetes faltando após nome de operação com 1 parâmetro" + +#: src/emc/rs274ngc/rs274ngc_return.hh:92 +#, fuzzy, c-format +msgid "M code greater than 199: M%d" +msgstr "Código M maior que 199" + +#: src/emc/rs274ngc/rs274ngc_return.hh:93 +msgid "Mixed radius ijk format for arc" +msgstr "Formato de raio ijk combinado para arco" + +#: src/emc/rs274ngc/rs274ngc_return.hh:94 +msgid "Multiple a words on one line" +msgstr "Múltiplos parâmetros 'A' em uma linha" + +#: src/emc/rs274ngc/rs274ngc_return.hh:95 +msgid "Multiple b words on one line" +msgstr "Múltiplos parâmetros 'B' em uma linha" + +#: src/emc/rs274ngc/rs274ngc_return.hh:96 +msgid "Multiple c words on one line" +msgstr "Múltiplos parâmetros 'C' em uma linha" + +#: src/emc/rs274ngc/rs274ngc_return.hh:97 +msgid "Multiple d words on one line" +msgstr "Múltiplos parâmetros 'D' em uma linha" + +#: src/emc/rs274ngc/rs274ngc_return.hh:98 +msgid "Multiple f words on one line" +msgstr "Múltiplos parâmetros 'F' em uma linha" + +#: src/emc/rs274ngc/rs274ngc_return.hh:99 +msgid "Multiple h words on one line" +msgstr "Múltiplos parâmetros 'H' em uma linha" + +#: src/emc/rs274ngc/rs274ngc_return.hh:100 +msgid "Multiple i words on one line" +msgstr "Múltiplos parâmetros 'I' em uma linha" + +#: src/emc/rs274ngc/rs274ngc_return.hh:101 +msgid "Multiple j words on one line" +msgstr "Múltiplos parâmetros 'j' em uma linha" + +#: src/emc/rs274ngc/rs274ngc_return.hh:102 +msgid "Multiple k words on one line" +msgstr "Múltiplos parâmetros 'K' em uma linha" + +#: src/emc/rs274ngc/rs274ngc_return.hh:103 +msgid "Multiple l words on one line" +msgstr "Múltiplos parâmetros 'L' em uma linha" + +#: src/emc/rs274ngc/rs274ngc_return.hh:104 +msgid "Multiple p words on one line" +msgstr "Múltiplos parâmetros 'P' em uma linha" + +#: src/emc/rs274ngc/rs274ngc_return.hh:105 +msgid "Multiple q words on one line" +msgstr "Múltiplos parâmetros 'Q' em uma linha" + +#: src/emc/rs274ngc/rs274ngc_return.hh:106 +msgid "Multiple r words on one line" +msgstr "Múltiplos parâmetros 'R' em uma linha" + +#: src/emc/rs274ngc/rs274ngc_return.hh:107 +msgid "Multiple s words on one line" +msgstr "Múltiplos parâmetros 'S' em uma linha" + +#: src/emc/rs274ngc/rs274ngc_return.hh:108 +msgid "Multiple t words on one line" +msgstr "Múltiplos parâmetros 'T' em uma linha" + +#: src/emc/rs274ngc/rs274ngc_return.hh:109 +msgid "Multiple x words on one line" +msgstr "Múltiplos parâmetros 'X' em uma linha" + +#: src/emc/rs274ngc/rs274ngc_return.hh:110 +msgid "Multiple y words on one line" +msgstr "Múltiplos parâmetros 'Y' em uma linha" + +#: src/emc/rs274ngc/rs274ngc_return.hh:111 +msgid "Multiple z words on one line" +msgstr "Múltiplos parâmetros 'Z' em uma linha" + +#: src/emc/rs274ngc/rs274ngc_return.hh:112 +msgid "Must use g0 or g1 with g53" +msgstr "Precisa usar G0 ou G1 com G53" + +#: src/emc/rs274ngc/rs274ngc_return.hh:113 +msgid "Negative argument to sqrt" +msgstr "Argumento negativo para 'sqrt'" + +#: src/emc/rs274ngc/rs274ngc_return.hh:114 +msgid "Negative d word tool radius index used" +msgstr "Índice de raio de ferramenta negativo usado com parâmetro 'D'" + +#: src/emc/rs274ngc/rs274ngc_return.hh:115 +msgid "Negative f word used" +msgstr "Parâmetro F negativo utilizado" + +#: src/emc/rs274ngc/rs274ngc_return.hh:116 +msgid "Negative g code used" +msgstr "Código G negativo usado" + +#: src/emc/rs274ngc/rs274ngc_return.hh:117 +msgid "Negative h word used" +msgstr "Parâmetro H negativo usado" + +#: src/emc/rs274ngc/rs274ngc_return.hh:118 +msgid "Negative l word used" +msgstr "Parâmetro L negativo usado" + +#: src/emc/rs274ngc/rs274ngc_return.hh:119 +msgid "Negative m code used" +msgstr "Comando M negativo usado" + +#: src/emc/rs274ngc/rs274ngc_return.hh:120 +msgid "Negative or zero q value used" +msgstr "Valor zero ou negativo usado" + +#: src/emc/rs274ngc/rs274ngc_return.hh:121 +msgid "Negative p word used" +msgstr "Parâmetro P negativo usado" + +#: src/emc/rs274ngc/rs274ngc_return.hh:122 +msgid "Negative spindle speed used" +msgstr "Velocidade negativa do spindle usada" + +#: src/emc/rs274ngc/rs274ngc_return.hh:123 +msgid "Negative tool id used" +msgstr "ID de ferramenta negativo usado" + +#: src/emc/rs274ngc/rs274ngc_return.hh:124 +msgid "Nested comment found" +msgstr "Comentários aninhados encontrados" + +#: src/emc/rs274ngc/rs274ngc_return.hh:125 +msgid "No characters found in reading real value" +msgstr "Nenhum caractere encontrado durante leitura de valor real" + +#: src/emc/rs274ngc/rs274ngc_return.hh:126 +msgid "Non integer value for integer" +msgstr "Valor não-inteiro onde deveria haver um inteiro" + +#: src/emc/rs274ngc/rs274ngc_return.hh:127 +msgid "Null missing after newline" +msgstr "Caractere 'nulo' faltando após quebra de linha" + +#: src/emc/rs274ngc/rs274ngc_return.hh:128 +msgid "Parameter file out of order" +msgstr "Arquivo de parâmetros fora de ordem" + +#: src/emc/rs274ngc/rs274ngc_return.hh:129 +msgid "Parameter number out of range" +msgstr "Número do parâmetro fora dos limites" + +#: src/emc/rs274ngc/rs274ngc_return.hh:130 +msgid "Parameter is readonly" +msgstr "Parâmetro é apenas leitura" + +#: src/emc/rs274ngc/rs274ngc_return.hh:131 +msgid "Q word missing with g83" +msgstr "Parâmetro Q faltando com G83" + +#: src/emc/rs274ngc/rs274ngc_return.hh:132 +msgid "Queue is not empty after probing" +msgstr "Fila não está vazia após probing" + +#: src/emc/rs274ngc/rs274ngc_return.hh:133 +msgid "R clearance plane unspecified in cycle" +msgstr "Plano de liberação R não especificado no ciclo" + +#: src/emc/rs274ngc/rs274ngc_return.hh:134 +msgid "R i j k words all missing for arc" +msgstr "Comando de arco faltando parâmetros R I J K" + +#: src/emc/rs274ngc/rs274ngc_return.hh:135 +msgid "R less than x in cycle in yz plane" +msgstr "R menos que X em ciclo no plano YZ" + +#: src/emc/rs274ngc/rs274ngc_return.hh:136 +msgid "R less than y in cycle in xz plane" +msgstr "R menos que Y em ciclo no plano XZ" + +#: src/emc/rs274ngc/rs274ngc_return.hh:137 +msgid "R less than z in cycle in xy plane" +msgstr "R menos que Z em ciclo no plano XY" + +#: src/emc/rs274ngc/rs274ngc_return.hh:138 +msgid "R word with no g code that uses it" +msgstr "Parâmetro R sem código G que o utilize" + +#: src/emc/rs274ngc/rs274ngc_return.hh:139 +msgid "Slash missing after first atan argument" +msgstr "Barra faltando após primeiro argumento para 'atan'" + +#: src/emc/rs274ngc/rs274ngc_return.hh:140 +msgid "Spindle not turning clockwise in g84" +msgstr "Spindle não está girando em sentido horário em G84" + +#: src/emc/rs274ngc/rs274ngc_return.hh:141 +msgid "Spindle not turning in g86" +msgstr "Spindle não está girando em G86" + +#: src/emc/rs274ngc/rs274ngc_return.hh:142 +msgid "Spindle not turning in g87" +msgstr "Spindle não está girando em G87" + +#: src/emc/rs274ngc/rs274ngc_return.hh:143 +msgid "Spindle not turning in g88" +msgstr "Spindle não está girando em G88" + +#: src/emc/rs274ngc/rs274ngc_return.hh:144 +msgid "Sscanf failed" +msgstr "Sscanf falhou" + +#: src/emc/rs274ngc/rs274ngc_return.hh:145 +msgid "Start point too close to probe point" +msgstr "Ponto inicial muito próximo do ponto de probing" + +#: src/emc/rs274ngc/rs274ngc_return.hh:146 +msgid "Too many m codes on line" +msgstr "Muitos códigos M em uma linha" + +#: src/emc/rs274ngc/rs274ngc_return.hh:147 +msgid "Pocket max too large" +msgstr "Máximo do pocket muito alto" + +#: src/emc/rs274ngc/rs274ngc_return.hh:148 +msgid "Tool radius not less than arc radius with comp" +msgstr "Raio da ferramenta não é menor que raio do arco com compensação" + +#: src/emc/rs274ngc/rs274ngc_return.hh:149 +msgid "Two g codes used from same modal group" +msgstr "Dois códigos G do mesmo grupo modal usados ao mesmo tempo" + +#: src/emc/rs274ngc/rs274ngc_return.hh:150 +msgid "Two m codes used from same modal group" +msgstr "Dois códigos M do mesmo grupo modal usados ao mesmo tempo" + +#: src/emc/rs274ngc/rs274ngc_return.hh:151 +#, fuzzy, c-format +msgid "Unable to open file <%s>" +msgstr "Impossível abrir arquivo" + +#: src/emc/rs274ngc/rs274ngc_return.hh:152 +msgid "Unclosed comment found" +msgstr "Comentário não fechado encontrado" + +#: src/emc/rs274ngc/rs274ngc_return.hh:153 +msgid "Unclosed expression" +msgstr "Expressão não fechada" + +#: src/emc/rs274ngc/rs274ngc_return.hh:154 +#, fuzzy +msgid "Unknown g code used" +msgstr "Código G desconhecido usado" + +#: src/emc/rs274ngc/rs274ngc_return.hh:155 +#, fuzzy, c-format +msgid "Unknown m code used: M%d" +msgstr "Código M desconhecido usado" + +#: src/emc/rs274ngc/rs274ngc_return.hh:156 +#, fuzzy +msgid "Unknown operation" +msgstr "Operação desconhecida" + +#: src/emc/rs274ngc/rs274ngc_return.hh:157 +msgid "Unknown operation name starting with a" +msgstr "Nome de operação começando com 'a' desconhecida" + +#: src/emc/rs274ngc/rs274ngc_return.hh:158 +msgid "Unknown operation name starting with m" +msgstr "Nome de operação desconhecida começando com 'm'" + +#: src/emc/rs274ngc/rs274ngc_return.hh:159 +msgid "Unknown operation name starting with o" +msgstr "Nome de operação desconhecida começando com 'o'" + +#: src/emc/rs274ngc/rs274ngc_return.hh:160 +msgid "Unknown operation name starting with x" +msgstr "Nome de operação desconhecida começando com 'x'" + +#: src/emc/rs274ngc/rs274ngc_return.hh:161 +msgid "Unknown word starting with a" +msgstr "Parâmetro desconhecido começando com 'a'" + +#: src/emc/rs274ngc/rs274ngc_return.hh:162 +msgid "Unknown word starting with c" +msgstr "Parâmetro desconhecido começando com 'c'" + +#: src/emc/rs274ngc/rs274ngc_return.hh:163 +msgid "Unknown word starting with e" +msgstr "Parâmetro desconhecido começando com 'e'" + +#: src/emc/rs274ngc/rs274ngc_return.hh:164 +msgid "Unknown word starting with f" +msgstr "Parâmetro desconhecido começando com 'f'" + +#: src/emc/rs274ngc/rs274ngc_return.hh:165 +msgid "Unknown word starting with l" +msgstr "Parâmetro desconhecido começando com 'l'" + +#: src/emc/rs274ngc/rs274ngc_return.hh:166 +msgid "Unknown word starting with r" +msgstr "Parâmetro desconhecido começando com 'r'" + +#: src/emc/rs274ngc/rs274ngc_return.hh:167 +msgid "Unknown word starting with s" +msgstr "Parâmetro desconhecido começando com 's'" + +#: src/emc/rs274ngc/rs274ngc_return.hh:168 +msgid "Unknown word starting with t" +msgstr "Parâmetro desconhecido começando com 't'" + +#: src/emc/rs274ngc/rs274ngc_return.hh:169 +msgid "Unknown word where unary operation could be" +msgstr "Parâmetro desconhecido onde operação unária deveria estar" + +#: src/emc/rs274ngc/rs274ngc_return.hh:170 +msgid "X and y words missing for arc in xy plane" +msgstr "Parâmetros X e Y faltando para arco no plano XY" + +#: src/emc/rs274ngc/rs274ngc_return.hh:171 +msgid "X and z words missing for arc in xz plane" +msgstr "Parâmetros X e Z faltando para arco no plano XZ" + +#: src/emc/rs274ngc/rs274ngc_return.hh:172 +msgid "X value unspecified in yz plane canned cycle" +msgstr "Valor X não especificado no plano YZ em movimento programado" + +#: src/emc/rs274ngc/rs274ngc_return.hh:173 +msgid "Y and z words missing for arc in yz plane" +msgstr "Parâmetros Y e Z faltando para arco no plano YZ" + +#: src/emc/rs274ngc/rs274ngc_return.hh:174 +msgid "Y value unspecified in xz plane canned cycle" +msgstr "Valor Y não especificado no plano XZ do movimento programado" + +#: src/emc/rs274ngc/rs274ngc_return.hh:175 +msgid "Z value unspecified in xy plane canned cycle" +msgstr "Valor do Z não especificado no plano XY do movimento programado" + +#: src/emc/rs274ngc/rs274ngc_return.hh:176 +msgid "Zero or negative argument to ln" +msgstr "Argumento zero ou negativo para função ln" + +#: src/emc/rs274ngc/rs274ngc_return.hh:177 +msgid "Zero radius arc" +msgstr "Arco de raio zero" + +#: src/emc/rs274ngc/rs274ngc_return.hh:178 +msgid "K word missing with g33/g33.1" +msgstr "Parâmetro K faltando com g33/g33.1" + +#: src/emc/rs274ngc/rs274ngc_return.hh:179 +msgid "F word used with a g33/g33.1" +msgstr "Parâmetro F usado com G33/G33.1" + +#: src/emc/rs274ngc/rs274ngc_return.hh:180 +msgid "Unknown operation name starting with e" +msgstr "Operação desconhecida começando com a letra 'e'" + +#: src/emc/rs274ngc/rs274ngc_return.hh:181 +msgid "Unknown operation name starting with n" +msgstr "Operação desconhecida começando com a letra 'n'" + +#: src/emc/rs274ngc/rs274ngc_return.hh:182 +msgid "Unknown operation name starting with g" +msgstr "Operação desconhecida começando com a letra 'g'" + +#: src/emc/rs274ngc/rs274ngc_return.hh:183 +msgid "Unknown operation name starting with l" +msgstr "Operação desconhecida começando com a letra 'l'" + +#: src/emc/rs274ngc/rs274ngc_return.hh:184 +msgid "Too many subroutine parameters" +msgstr "Número de parâmetros de subrotina muito grande" + +#: src/emc/rs274ngc/rs274ngc_return.hh:185 +msgid "Too many subroutine levels" +msgstr "Número de níveis de subrotina muito grande" + +#: src/emc/rs274ngc/rs274ngc_return.hh:186 +msgid "Bug: call stack underrun" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:187 +msgid "Unknown control command in o word" +msgstr "Comando de controle desconhecido em um comando 'o'" + +#: src/emc/rs274ngc/rs274ngc_return.hh:188 +msgid "Too many oword labels" +msgstr "Número de labels de comandos 'o' muito grande" + +#: src/emc/rs274ngc/rs274ngc_return.hh:189 +#, fuzzy +msgid "Unknown oword number" +msgstr "Número desconhecido para comando 'o'" + +#: src/emc/rs274ngc/rs274ngc_return.hh:190 +msgid "Nested subroutine definition" +msgstr "Definição de subrotina aninhada" + +#: src/emc/rs274ngc/rs274ngc_return.hh:191 +msgid "Not in subroutine definition" +msgstr "Não existe na definição da subrotina" + +#: src/emc/rs274ngc/rs274ngc_return.hh:192 +msgid "File not open" +msgstr "Arquivo não aberto" + +#: src/emc/rs274ngc/rs274ngc_return.hh:193 +#, c-format +msgid "cannot reopen file %s - removed or renamed? (%s)" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:194 +msgid "Need tool prepared -Txx- for toolchange" +msgstr "Precisa de ferramenta -Txx- preparada para mudança de ferramenta" + +#: src/emc/rs274ngc/rs274ngc_return.hh:195 +msgid "Cannot change planes with cutter radius compensation on" +msgstr "" +"Impossível mudar o plano ativo com compensação de raio de corte ativada" + +#: src/emc/rs274ngc/rs274ngc_return.hh:196 +msgid "Cutter radius compensation allowed only in XY, XZ planes" +msgstr "Compensação de raio de corte permitida apenas nos planos XY e XZ" + +#: src/emc/rs274ngc/rs274ngc_return.hh:197 +msgid "P word missing with G76" +msgstr "Parâmetro P faltando com G76" + +#: src/emc/rs274ngc/rs274ngc_return.hh:198 +msgid "I J or K words missing with G76" +msgstr "Parâmetros I, J ou K faltando com G76" + +#: src/emc/rs274ngc/rs274ngc_return.hh:199 +msgid "Cannot move rotary axes with G76" +msgstr "Impossível mover eixo rotacional com G76" + +#: src/emc/rs274ngc/rs274ngc_return.hh:200 +msgid "Multiple e words on one line" +msgstr "Múltiplos comandos 'e' em uma única linha" + +#: src/emc/rs274ngc/rs274ngc_return.hh:201 +msgid "Named parameter not terminated" +msgstr "Parâmetro nomeado não foi terminado" + +#: src/emc/rs274ngc/rs274ngc_return.hh:202 +msgid "Out of memory" +msgstr "Sem memória suficiente" + +#: src/emc/rs274ngc/rs274ngc_return.hh:203 +msgid "S word missing with G96" +msgstr "Parâmetro S faltando com G96" + +#: src/emc/rs274ngc/rs274ngc_return.hh:204 +msgid "Queue is not empty after external input" +msgstr "Fila não está vazia após sinal de entrada externo" + +#: src/emc/rs274ngc/rs274ngc_return.hh:205 +msgid "Can't select analog input with wait type != immediate return" +msgstr "" +"Impossível selecionar entrada analógica quando tipo de espera é diferente de " +"retorno imediato" + +#: src/emc/rs274ngc/rs274ngc_return.hh:206 +msgid "Zero timeout with wait type != immediate return" +msgstr "Timeout zero com tipo de espera diferente de retorno imediato" + +#: src/emc/rs274ngc/rs274ngc_return.hh:207 +msgid "Invalid to select both a digital and an analog input with M66" +msgstr "" +"É inválido selecionar uma entrada digital e uma analógica ao mesmo tempo com " +"M66" + +#: src/emc/rs274ngc/rs274ngc_return.hh:208 +msgid "Need to have either a valid P or a valid E word with M66" +msgstr "Necessário ter um parâmetro E ou um parâmetro P válidos com M66" + +#: src/emc/rs274ngc/rs274ngc_return.hh:209 +msgid "Q word missing with g73" +msgstr "Parâmetro Q faltando com G73" + +#: src/emc/rs274ngc/rs274ngc_return.hh:210 +msgid "Digital input selected out of bounds" +msgstr "Sinal de entrada digital selecionado fora dos limites" + +#: src/emc/rs274ngc/rs274ngc_return.hh:211 +msgid "Analog input selected out of bounds" +msgstr "Sinal analógico de entrada fora dos limites" + +#: src/emc/rs274ngc/rs274ngc_return.hh:212 +msgid "W value unspecified in UV plane canned cycle" +msgstr "Parâmetro W não especificado no plano UV de ciclo programado" + +#: src/emc/rs274ngc/rs274ngc_return.hh:213 +msgid "U value unspecified in VW plane canned cycle" +msgstr "Parâmetro U não especificado no plano VW de ciclo programado" + +#: src/emc/rs274ngc/rs274ngc_return.hh:214 +msgid "V value unspecified in UW plane canned cycle" +msgstr "Parâmetro V não especificado no plano UW de ciclo programado" + +#: src/emc/rs274ngc/rs274ngc_return.hh:215 +msgid "R less than W in cycle in UV plane" +msgstr "R menos que W em ciclo no plano UV" + +#: src/emc/rs274ngc/rs274ngc_return.hh:216 +msgid "R less than U in cycle in VW plane" +msgstr "R menos que U em ciclo no plano VW" + +#: src/emc/rs274ngc/rs274ngc_return.hh:217 +msgid "R less than V in cycle in UW plane" +msgstr "R menos que V em ciclo no plano UW" + +#: src/hal/utils/meter.c:200 +#, c-format +msgid "ERROR: '%s' is not a valid probe type\n" +msgstr "ERRO: '%s' não é um tipo válido de probe\n" + +#: src/hal/utils/meter.c:208 +#, c-format +msgid "ERROR: no pin/signal/parameter name\n" +msgstr "ERRO: nenhum nome de pino/parâmetro/sinal\n" + +#: src/hal/utils/meter.c:214 +#, c-format +msgid "" +"ERROR: -s option requires a probe type and a pin/signal/parameter name\n" +msgstr "" +"ERRO: opção -s precisa de um tipo de probe e um nome de parâmetro/pino/" +"sinal\n" + +#: src/hal/utils/meter.c:240 tcl/tklinuxcnc.tcl:764 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6431 +#, fuzzy +msgid "Hal Meter" +msgstr "H_alMeter" + +#: src/hal/utils/meter.c:290 +msgid "_Select" +msgstr "S_elecionar" + +#: src/hal/utils/meter.c:291 +#, fuzzy +msgid "E_xit" +msgstr "_Sair" + +#: src/hal/utils/meter.c:339 src/hal/utils/meter.c:367 +msgid "Select Item to Probe" +msgstr "Selecione item para examinar" + +#: src/hal/utils/meter.c:669 +msgid " _Pins " +msgstr "_Pinos" + +#: src/hal/utils/meter.c:670 +msgid " _Signals " +msgstr "S_inais" + +#: src/hal/utils/meter.c:671 +msgid " Para_meters " +msgstr " Parâ_metros" + +#: src/hal/utils/meter.c:714 +msgid "_Close" +msgstr "_Fechar" + +#: src/hal/utils/scope.c:126 +msgid "" +"Usage:\n" +" halscope [-h] [-i infile] [-o outfile] [num_samples]\n" +msgstr "" +"Utilização:\n" +" halscope [-h] [-i infile] [-o outfile] [num_samples]\n" + +#: src/hal/utils/scope.c:479 src/hal/utils/scope.c:506 +#, fuzzy +msgid "Open Configuration File:" +msgstr "Mostrar _Configuração Hal" + +#: src/hal/utils/scope.c:540 +#, fuzzy +msgid "_Open Configuration..." +msgstr "Mostrar _Configuração Hal" + +#: src/hal/utils/scope.c:546 +#, fuzzy +msgid "_Save Configuration..." +msgstr "Mostrar _Configuração Hal" + +#: src/hal/utils/scope.c:555 +msgid "O_pen Data File..." +msgstr "_Abrir arquivo de dados" + +#: src/hal/utils/scope.c:562 +msgid "S_ave Data File..." +msgstr "_Salvar arquivo de dados" + +#: src/hal/utils/scope.c:571 share/axis/tcl/axis.tcl:96 +#, fuzzy +msgid "_Quit" +msgstr "_Sair" + +#: src/hal/utils/scope.c:577 +msgid "_About Halscope" +msgstr "S_obre Halscope" + +#: src/hal/utils/scope.c:583 share/axis/tcl/axis.tcl:501 +#, fuzzy +msgid "_File" +msgstr "_Arquivo" + +#: src/hal/utils/scope.c:587 share/axis/tcl/axis.tcl:517 +#, fuzzy +msgid "_Help" +msgstr "_Ajuda" + +#: src/hal/utils/scope.c:646 +msgid "HAL Oscilloscope" +msgstr "Osciloscópio HAL" + +#: src/hal/utils/scope.c:674 +msgid "Horizontal" +msgstr "Horizontal" + +#: src/hal/utils/scope.c:682 +msgid "Selected Channel" +msgstr "Canal Selecionado" + +#: src/hal/utils/scope.c:688 +msgid "Run Mode" +msgstr "Modo execução" + +#: src/hal/utils/scope.c:691 +msgid "Trigger" +msgstr "Gatilho" + +#: src/hal/utils/scope.c:697 +msgid "Vertical" +msgstr "Vertical" + +#: src/hal/utils/scope.c:705 share/axis/tcl/axis.tcl:138 +#: share/axis/tcl/axis.tcl:1269 src/emc/usr_intf/gscreen/gscreen.py:3416 +#: src/emc/usr_intf/gscreen/gscreen.py:3417 +#: src/emc/usr_intf/gscreen/gscreen.glade:2614 +#, fuzzy +msgid "Stop" +msgstr "Parar" + +#: src/hal/utils/scope.c:708 +msgid "Normal" +msgstr "Normal" + +#: src/hal/utils/scope.c:711 +#, fuzzy +msgid "Single" +msgstr "Spindle:" + +#: src/hal/utils/scope.c:714 +msgid "Roll" +msgstr "Rolar" + +#: src/hal/utils/scope_horiz.c:130 src/emc/usr_intf/gscreen/gscreen.glade:3419 +#, fuzzy +msgid "Zoom" +msgstr "Aproxima zoom [+]" + +#: src/hal/utils/scope_horiz.c:131 +msgid " Pos " +msgstr "" + +#: src/hal/utils/scope_horiz.c:164 +msgid "" +"----- Samples\n" +"at ---- KHz" +msgstr "" +"----- Amostras\n" +"a ---- KHz" + +#: src/hal/utils/scope_horiz.c:464 +msgid "Realtime component not loaded" +msgstr "Componente de tempo real não carregado" + +#: src/hal/utils/scope_horiz.c:465 +msgid "" +"HALSCOPE uses a realtime component called scope_rt'\n" +"to sample signals for display. It is not currently loaded\n" +"and attempting to load it automatically failed. More information\n" +"may be available in the terminal where halscope was started.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Load the component (using 'halcmd loadrt scope_rt'), then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" +msgstr "" + +#: src/hal/utils/scope_horiz.c:536 +msgid "Realtime function not linked" +msgstr "Função de tempo real não linkada" + +#: src/hal/utils/scope_horiz.c:537 +msgid "" +"The HALSCOPE realtime sampling function\n" +"must be called from a HAL thread in to\n" +"determine the sampling rate.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Select a thread name and multiplier then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" +msgstr "" + +#: src/hal/utils/scope_horiz.c:544 +msgid "Select Sample Rate" +msgstr "Selecione a taxa de amostragem" + +#: src/hal/utils/scope_horiz.c:545 +msgid "" +"Select a thread name and multiplier then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" +msgstr "" +"Selecione um nome de thread e multiplicado e clique 'OK'\n" +"or\n" +"Clique 'Sair' para fechar o HALSCOPE" + +#: src/hal/utils/scope_horiz.c:567 +msgid "Thread:" +msgstr "" + +#: src/hal/utils/scope_horiz.c:575 +#, fuzzy +msgid "Sample Period:" +msgstr "Período de amostragem:" + +#: src/hal/utils/scope_horiz.c:583 +#, fuzzy +msgid "Sample Rate:" +msgstr "Taxa de amostragem:" + +#: src/hal/utils/scope_horiz.c:599 src/emc/usr_intf/touchy/mdi.py:79 +#: src/emc/usr_intf/gscreen/mdi.py:78 +msgid "Thread" +msgstr "" + +#: src/hal/utils/scope_horiz.c:600 +msgid "Period" +msgstr "Período" + +#: src/hal/utils/scope_horiz.c:638 +msgid "Multiplier:" +msgstr "Multiplicador:" + +#: src/hal/utils/scope_horiz.c:655 +msgid "Record Length" +msgstr "Comprimento do registro" + +#: src/hal/utils/scope_horiz.c:658 +#, c-format +msgid "%5d samples (1 channel)" +msgstr "%5d amostras (1 canal)" + +#: src/hal/utils/scope_horiz.c:660 +#, c-format +msgid "%5d samples (2 channels)" +msgstr "%5d amostras (2 canais)" + +#: src/hal/utils/scope_horiz.c:664 +#, c-format +msgid "%5d samples (4 channels)" +msgstr "%5d amostras (4 canais)" + +#: src/hal/utils/scope_horiz.c:668 +#, c-format +msgid "%5d samples (8 channels)" +msgstr "%5d amostras (8 canais)" + +#: src/hal/utils/scope_horiz.c:672 +#, c-format +msgid "%5d samples (16 channels)" +msgstr "%5d amostras (16 canais)" + +#: src/hal/utils/scope_horiz.c:727 src/hal/utils/scope_horiz.c:773 +#: src/hal/utils/scope_horiz.c:985 src/hal/utils/scope_vert.c:771 +#: src/hal/utils/scope_vert.c:863 tcl/bin/emccalib.tcl:232 +#: tcl/bin/genedit.tcl:180 tcl/bin/genedit.tcl:450 tcl/bin/halconfig.tcl:682 +#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:387 +#: tcl/bin/pickconfig.tcl:749 tcl/bin/pickconfig.tcl:799 tcl/mini.tcl:1456 +#: tcl/mini.tcl:2937 tcl/tklinuxcnc.tcl:160 tcl/tklinuxcnc.tcl:245 +#: tcl/tklinuxcnc.tcl:419 tcl/tklinuxcnc.tcl:1338 tcl/tklinuxcnc.tcl:1407 +#: tcl/tklinuxcnc.tcl:1438 tcl/tklinuxcnc.tcl:1469 tcl/tklinuxcnc.tcl:2017 +#: tcl/tklinuxcnc.tcl:2036 tcl/tklinuxcnc.tcl:2055 tcl/tklinuxcnc.tcl:2102 +#: src/emc/usr_intf/axis/scripts/axis.py:1106 +#: src/emc/usr_intf/axis/scripts/axis.py:1173 +#: src/emc/usr_intf/axis/scripts/axis.py:1508 +#: src/emc/usr_intf/axis/scripts/axis.py:2672 +#: src/emc/usr_intf/axis/scripts/axis.py:3599 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:718 +#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1828 +#: share/axis/tcl/axis.tcl:1865 +msgid "OK" +msgstr "OK" + +#: src/hal/utils/scope_horiz.c:732 src/hal/utils/scope_horiz.c:773 +#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 tcl/tooledit.tcl:468 +#, fuzzy +msgid "Quit" +msgstr "Sair" + +#: src/hal/utils/scope_horiz.c:764 +msgid "Realtime thread(s) not running" +msgstr "Thread(s) de tempo real não estão em execução" + +#: src/hal/utils/scope_horiz.c:765 +msgid "" +"HALSCOPE uses code in a realtime HAL thread to sample\n" +"signals for display. The HAL thread(s) are not running.\n" +"Threads are usually started by the application you are\n" +"attempting to run, or you can use the 'halcmd start' command.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Start the threads, then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" +msgstr "" + +#: src/hal/utils/scope_horiz.c:798 +msgid "Pick log file to write to:" +msgstr "Escolha o arquivo de log de destino:" + +#: src/hal/utils/scope_horiz.c:981 +msgid "Not enough channels" +msgstr "Número de canais insuficiente" + +#: src/hal/utils/scope_horiz.c:982 +msgid "" +"This record length cannot handle the channels\n" +"that are currently enabled. Pick a shorter\n" +"record length that supports more channels." +msgstr "" + +#: src/hal/utils/scope_horiz.c:1070 +#, c-format +msgid "" +"%s\n" +"per div" +msgstr "" +"%s\n" +"por div" + +#: src/hal/utils/scope_horiz.c:1085 +#, c-format +msgid "" +"%s samples\n" +"at %s" +msgstr "" +"%s amostras\n" +"a %s" + +#: src/hal/utils/scope_horiz.c:1189 +msgid "nSec" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1192 +msgid "uSec" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1196 +msgid "mSec" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1200 src/emc/usr_intf/pncconf/pncconf.glade:2635 +#: src/emc/usr_intf/pncconf/pncconf.glade:3533 +#: src/emc/usr_intf/pncconf/pncconf.glade:4414 +#: src/emc/usr_intf/pncconf/pncconf.glade:5295 +msgid "Sec" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1217 src/emc/usr_intf/stepconf/spindle.glade:301 +#: src/emc/usr_intf/stepconf/axisx.glade:693 +#: src/emc/usr_intf/stepconf/axisy.glade:679 +#: src/emc/usr_intf/stepconf/axisz.glade:679 +#: src/emc/usr_intf/stepconf/axisa.glade:693 +#: src/emc/usr_intf/pncconf/pncconf.glade:8024 +#: src/emc/usr_intf/pncconf/pncconf.glade:8201 +#: src/emc/usr_intf/pncconf/pncconf.glade:8213 +msgid "Hz" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1220 +msgid "KHz" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1224 +msgid "Mhz" +msgstr "" + +#: src/hal/utils/scope_vert.c:413 src/hal/utils/scope_vert.c:1303 +#, c-format +msgid "" +"Offset\n" +"%s" +msgstr "" + +#: src/hal/utils/scope_vert.c:628 +#, fuzzy +msgid "Gain" +msgstr "Ganho" + +#: src/hal/utils/scope_vert.c:640 src/hal/utils/scope_trig.c:272 +msgid "Pos" +msgstr "" + +#: src/hal/utils/scope_vert.c:654 tcl/ngcgui_ttt.tcl:214 +#: src/emc/usr_intf/pncconf/pncconf.glade:64273 +#, fuzzy +msgid "Scale" +msgstr "Escala" + +#: src/hal/utils/scope_vert.c:667 +msgid "Chan Off" +msgstr "Canal Desl" + +#: src/hal/utils/scope_vert.c:723 +msgid "Set Offset" +msgstr "Alterar Offset" + +#: src/hal/utils/scope_vert.c:724 +#, c-format +msgid "" +"Set the vertical offset\n" +"for channel %d." +msgstr "" +"Alterar o offset vertical\n" +"para o canal %d." + +#: src/hal/utils/scope_vert.c:744 +msgid "AC Coupled" +msgstr "" + +#: src/hal/utils/scope_vert.c:779 src/hal/utils/scope_vert.c:1215 +#: src/hal/utils/scope_trig.c:387 tcl/bin/emccalib.tcl:234 +#: tcl/bin/genedit.tcl:294 tcl/bin/halconfig.tcl:103 tcl/bin/halconfig.tcl:684 +#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:390 +#: tcl/bin/pickconfig.tcl:567 tcl/mini.tcl:1457 tcl/mini.tcl:2938 +#: tcl/mini.tcl:3110 tcl/tklinuxcnc.tcl:162 tcl/tklinuxcnc.tcl:213 +#: tcl/tklinuxcnc.tcl:420 tcl/tklinuxcnc.tcl:1339 tcl/tklinuxcnc.tcl:1408 +#: tcl/tklinuxcnc.tcl:1439 tcl/tklinuxcnc.tcl:1470 tcl/tklinuxcnc.tcl:2103 +#: src/emc/usr_intf/axis/scripts/axis.py:1453 +#: src/emc/usr_intf/axis/scripts/axis.py:1509 +#: src/emc/usr_intf/axis/scripts/axis.py:1699 +#: src/emc/usr_intf/axis/scripts/axis.py:2108 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:720 +#: src/emc/usr_intf/stepconf/main_page.glade:467 +#: src/emc/usr_intf/gscreen/gscreen.glade:3986 +msgid "Cancel" +msgstr "Cancelar" + +#: src/hal/utils/scope_vert.c:859 +#, fuzzy +msgid "Too many channels" +msgstr "Muitos canais" + +#: src/hal/utils/scope_vert.c:860 +msgid "" +"You cannot add another channel.\n" +"\n" +"Either turn off one or more channels, or shorten\n" +"the record length to allow for more channels" +msgstr "" +"Você não pode adicionar outro canal.\n" +"\n" +"Desligue um ou mais canais ou diminua\n" +"o comprimento do registro para permitir mais canais" + +#: src/hal/utils/scope_vert.c:1074 +msgid "Select Channel Source" +msgstr "Selecione a fonte do canal" + +#: src/hal/utils/scope_vert.c:1075 +#, c-format +msgid "" +"Select a pin, signal, or parameter\n" +"as the source for channel %d." +msgstr "" +"Selecione um pino, sinal ou\n" +"parâmetro como fonte para canal %d" + +#: src/hal/utils/scope_vert.c:1107 +msgid "Pins" +msgstr "Pinos" + +#: src/hal/utils/scope_vert.c:1108 +msgid "Signals" +msgstr "Sinais" + +#: src/hal/utils/scope_vert.c:1109 +msgid "Parameters" +msgstr "Parâmetros" + +#: src/hal/utils/scope_trig.c:110 +#, c-format +msgid "Falling" +msgstr "Descendo" + +#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:295 +#, c-format +msgid "Rising" +msgstr "" + +#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:303 +msgid "" +"Source\n" +"None" +msgstr "" +"Fonte\n" +"Nenhuma" + +#: src/hal/utils/scope_trig.c:124 +#, c-format +msgid "" +"Source\n" +"Chan %2d" +msgstr "" +"Fonte\n" +"Canal %2d" + +#: src/hal/utils/scope_trig.c:219 tcl/tklinuxcnc.tcl:827 +#: src/emc/usr_intf/touchy/touchy.glade:2469 +msgid "Auto" +msgstr "" + +#: src/hal/utils/scope_trig.c:221 +msgid "Force" +msgstr "Forçar" + +#: src/hal/utils/scope_trig.c:255 src/hal/utils/scope_trig.c:289 +msgid "Level" +msgstr "Nível" + +#: src/hal/utils/scope_trig.c:323 +msgid "Trigger Source" +msgstr "Fonte do gatilho" + +#: src/hal/utils/scope_trig.c:324 +msgid "Select a channel to use for triggering." +msgstr "Selecione um canal para usar como gatilho" + +#: src/hal/utils/scope_trig.c:347 +#, fuzzy +msgid "Chan" +msgstr "Canal" + +#: src/hal/utils/scope_trig.c:348 +msgid "Source" +msgstr "Fonte" + +#: src/emc/motion/control.c:270 +msgid "Unexpected realtime delay: check dmesg for details." +msgstr "" +"Delay inesperado no sistema de tempo real: verifique dmesg para detalhes" + +#: src/emc/motion/control.c:272 +#, c-format +msgid "" +"\n" +"In recent history there were\n" +"%ld, %ld, %ld, %ld, and %ld\n" +"elapsed clocks between calls to the motion controller.\n" +msgstr "" +"\n" +"Na história recente, houveram\n" +"%ld, %ld, %ld, %ld, e %ld\n" +"pulsos de clock entre chamadas ao controlador de movimentação.\n" + +#: src/emc/motion/control.c:277 +#, c-format +msgid "" +"This time, there were %ld which is so anomalously\n" +"large that it probably signifies a problem with your\n" +"realtime configuration. For the rest of this run of\n" +"EMC, this message will be suppressed.\n" +"\n" +msgstr "" +"Desta vez, houveram %ld o que é tão anormal\n" +"que provavelmente significa um problema com sua configuração\n" +"do sistema de tempo real. Durante o restante dessa execução\n" +"do EMC essa mensagem será suprimida.\n" + +#: src/emc/motion/control.c:394 +#, fuzzy +msgid "G38.4 move finished without breaking contact." +msgstr "G38.2 movimento de probe terminado sem ativar o sensor" + +#: src/emc/motion/control.c:397 +#, fuzzy +msgid "G38.2 move finished without making contact." +msgstr "G38.2 movimento de probe terminado sem ativar o sensor" + +#: src/emc/motion/control.c:412 +msgid "Probe tripped during non-probe MDI command." +msgstr "Probe ativado durante comando MDI que não utiliza probing" + +#: src/emc/motion/control.c:440 +msgid "Probe tripped during homing motion." +msgstr "Probe ativado durante movimento de home" + +#: src/emc/motion/control.c:444 +msgid "Probe tripped during a jog." +msgstr "Probe ativado durante jog" + +#: src/emc/motion/control.c:622 +#, fuzzy +msgid "can't add coordinated return move" +msgstr "impossível adicionar movimento circular" + +#: src/emc/motion/control.c:663 +#, fuzzy +msgid "can't add linear coordinated jog move" +msgstr "impossível adicionar movimento linear" + +#: src/emc/motion/control.c:817 +#, fuzzy, c-format +msgid "fault %d during orient in progress" +msgstr "sequência de homing em execução" + +#: src/emc/motion/control.c:957 +msgid "motion stopped by enable input" +msgstr "movimentação suspensa pela entrada 'enable'" + +#: src/emc/motion/control.c:980 +#, c-format +msgid "joint %d on limit switch error" +msgstr "erro no interruptor de limite do eixo %d" + +#: src/emc/motion/control.c:992 +#, c-format +msgid "joint %d amplifier fault" +msgstr "erro no amplificado do eixo %d" + +#: src/emc/motion/control.c:1001 +#, c-format +msgid "joint %d following error" +msgstr "erro de cálculo de movimentação no eixo %d" + +#: src/emc/motion/control.c:1687 +#, c-format +msgid "Exceeded positive soft limit on joint %d" +msgstr "Excedido limite positivo de software no eixo %d" + +#: src/emc/motion/control.c:1692 +#, c-format +msgid "Exceeded negative soft limit on joint %d" +msgstr "Excedido limite negativo de software no eixo %d" + +#: src/emc/motion/command.c:163 +#, c-format +msgid "Can't jog invalid joint number %d." +msgstr "Impossível efetuar jog do eixo (inválido) %d" + +#: src/emc/motion/command.c:167 +#, c-format +msgid "Can't jog joint %d further past max hard limit." +msgstr "Impossível efetuar jog além do limite físico no eixo %d" + +#: src/emc/motion/command.c:172 +#, c-format +msgid "Can't jog joint %d further past min hard limit." +msgstr "Impossível efetuar jog além do limite físico mínimo no eixo %d" + +#: src/emc/motion/command.c:178 +#, c-format +msgid "Can't jog joint %d further past max soft limit." +msgstr "Impossível efetuar jog além do limite de software máximo no eixo %d" + +#: src/emc/motion/command.c:183 +#, c-format +msgid "Can't jog joint %d further past min soft limit." +msgstr "Impossível efetuar jog além do limite de software mínimo no eixo %d" + +#: src/emc/motion/command.c:243 +#, c-format +msgid "%s move on line %d would exceed joint %d's positive limit" +msgstr "movimento (%s) na linha %d iria exceder o limite positivo no eixo %d" + +#: src/emc/motion/command.c:250 +#, c-format +msgid "%s move on line %d would exceed joint %d's negative limit" +msgstr "movimento (%s) na linha %d iria exceder o limite negativo do eixo %d" + +#: src/emc/motion/command.c:535 +msgid "all joints must be homed before going into coordinated mode" +msgstr "" +"todos os eixos devem ser referenciados antes de entrar no modo coordenado" + +#: src/emc/motion/command.c:556 +msgid "all joints must be homed before going into teleop mode" +msgstr "" +"todos os eixos precisam ser referenciados antes de entrar no modo teleop" + +#: src/emc/motion/command.c:710 src/emc/motion/command.c:776 +#: src/emc/motion/command.c:849 +msgid "Can't jog joint in coordinated mode." +msgstr "Impossível efetuar jog no modo coordenado" + +#: src/emc/motion/command.c:715 src/emc/motion/command.c:781 +#: src/emc/motion/command.c:854 +msgid "Can't jog joint when not enabled." +msgstr "Impossível efetuar jog no eixo quando não habilitado" + +#: src/emc/motion/command.c:720 src/emc/motion/command.c:859 +msgid "Can't jog any joints while homing." +msgstr "" +"Impossível efetuar jog de eixos enquanto está efetuando o processo de homing" + +#: src/emc/motion/command.c:786 +msgid "Can't jog any joint while homing." +msgstr "" +"Impossível efetuar jog de qualquer eixo enquanto está efetuando o processo " +"de homing" + +#: src/emc/motion/command.c:918 +msgid "need to be enabled, in coord mode for linear move" +msgstr "precisa estar habilitado, no modo coordenado, para movimento linear" + +#: src/emc/motion/command.c:928 +msgid "can't do linear move with limits exceeded" +msgstr "impossível efetuar movimento linear com os limites excedidos" + +#: src/emc/motion/command.c:954 +#, fuzzy, c-format +msgid "can't add linear move at line %d, error code %d" +msgstr "impossível efetuar movimento linear com os limites excedidos" + +#: src/emc/motion/command.c:982 +msgid "need to be enabled, in coord mode for circular move" +msgstr "" +"precisa estar habilitado, em modo coordenado, para efetuar movimento circular" + +#: src/emc/motion/command.c:993 +msgid "can't do circular move with limits exceeded" +msgstr "impossível efetuar movimento circular com os limites excedidos" + +#: src/emc/motion/command.c:1015 +#, fuzzy, c-format +msgid "can't add circular move at line %d, error code %d" +msgstr "impossível efetuar movimento circular com os limites excedidos" + +#: src/emc/motion/command.c:1114 +#, fuzzy +msgid "MOTION: can't STEP while jogging" +msgstr "MOVIMENTAÇÃO: impossível efetuar PASSO enquanto já está executando" + +#: src/emc/motion/command.c:1117 +#, fuzzy +msgid "MOTION: can't STEP while in return move" +msgstr "MOVIMENTAÇÃO: impossível efetuar PASSO enquanto já está executando" + +#: src/emc/motion/command.c:1127 +#, fuzzy, c-format +msgid "MOTION: STEP while in state %d" +msgstr "MOVIMENTAÇÃO: impossível efetuar PASSO enquanto já está executando" + +#: src/emc/motion/command.c:1229 +msgid "can't enable motion, enable input is false" +msgstr "impossível habilitar movimentação: entrada 'enable' tem valor falso" + +#: src/emc/motion/command.c:1302 +msgid "must be in joint mode to home" +msgstr "precisa estar em modo JOINT para efetuar processo de homing" + +#: src/emc/motion/command.c:1313 src/emc/motion/command.c:1324 +msgid "homing sequence already in progress" +msgstr "sequência de homing já está em execução" + +#: src/emc/motion/command.c:1322 +msgid "homing already in progress" +msgstr "sequência de homing em execução" + +#: src/emc/motion/command.c:1352 +msgid "must be in joint mode or disabled to unhome" +msgstr "precisa estar em modo JOINT ou desabilitado para remover home" + +#: src/emc/motion/command.c:1364 src/emc/motion/command.c:1387 +#, c-format +msgid "Cannot unhome while homing, joint %d" +msgstr "Impossível remover home enquanto está fazendo homing do eixo %d" + +#: src/emc/motion/command.c:1368 src/emc/motion/command.c:1391 +#, c-format +msgid "Cannot unhome while moving, joint %d" +msgstr "Impossível remover home enquanto movendo eixo %d" + +#: src/emc/motion/command.c:1396 +#, c-format +msgid "Cannot unhome inactive joint %d" +msgstr "Impossível remover home do eixo inativo %d" + +#: src/emc/motion/command.c:1400 +#, c-format +msgid "Cannot unhome invalid joint %d (max %d)" +msgstr "Impossível remover home do eixo inválido %d (máximo %d)" + +#: src/emc/motion/command.c:1427 +msgid "need to be enabled, in coord mode for probe move" +msgstr "" +"precisa estar habilitado, em modo coordenado para movimento de de probe" + +#: src/emc/motion/command.c:1437 +msgid "can't do probe move with limits exceeded" +msgstr "impossível efetuar movimento de probe com os limites excedidos" + +#: src/emc/motion/command.c:1451 +msgid "Probe is already clear when starting G38.4 or G38.5 move" +msgstr "Probe já está limpo quanto iniciando comando G38.4 ou G38.5" + +#: src/emc/motion/command.c:1453 +msgid "Probe is already tripped when starting G38.2 or G38.3 move" +msgstr "Probe já está ativado quando iniciando comando G38.2 ou G38.3" + +#: src/emc/motion/command.c:1473 +msgid "can't add probe move" +msgstr "impossível adicionar comando de probe" + +#: src/emc/motion/command.c:1498 +msgid "need to be enabled, in coord mode for rigid tap move" +msgstr "precisa estar habilitado, para movimento em tap" + +#: src/emc/motion/command.c:1509 +msgid "can't do rigid tap move with limits exceeded" +msgstr "impossível realizar movimento de tap com os limites excedidos" + +#: src/emc/motion/command.c:1526 +msgid "can't add rigid tap move" +msgstr "impossível adicionar movimento de tap" + +#: src/emc/motion/command.c:1541 +msgid "need to be enabled, in teleop mode for teleop move" +msgstr "precisa estar habilitado, no modo teleop, para movimento" + +#: src/emc/motion/command.c:1710 +#, c-format +msgid "joint %d: too many compensation entries" +msgstr "eixo %d: muitas compensações de entrada" + +#: src/emc/motion/command.c:1716 +#, c-format +msgid "joint %d: compensation values must increase" +msgstr "eixo %d: valores de compensação precisam aumentar" + +#: src/emc/motion/command.c:1745 +#, c-format +msgid "unrecognized command %d" +msgstr "comando não reconhecido: %d" + +#: src/emc/motion/motion.c:212 +msgid "MOTION: hal_init() failed\n" +msgstr "MOTION: hal_init() falhou\n" + +#: src/emc/motion/motion.c:217 +#, c-format +msgid "MOTION: num_joints is %d, must be between 1 and %d\n" +msgstr "MOTION: num_joints é %d, precisa ser entre 1 e %d\n" + +#: src/emc/motion/motion.c:224 +#, c-format +msgid "MOTION: num_dio is %d, must be between 1 and %d\n" +msgstr "MOTION: num_dio é %d, precisa ser entre 1 e %d\n" + +#: src/emc/motion/motion.c:231 +#, c-format +msgid "MOTION: num_aio is %d, must be between 1 and %d\n" +msgstr "MOTION: num_aio é %d, precisa ser entre 1 e %d\n" + +#: src/emc/motion/motion.c:239 +msgid "MOTION: init_hal_io() failed\n" +msgstr "MOTION: init_hal_io() falhou\n" + +#: src/emc/motion/motion.c:248 +msgid "MOTION: init_comm_buffers() failed\n" +msgstr "MOTION: init_comm_buffers() falhou\n" + +#: src/emc/motion/motion.c:256 +msgid "MOTION: init_threads() failed\n" +msgstr "MOTION: init_threads() falhou\n" + +#: src/emc/motion/motion.c:281 +#, c-format +msgid "MOTION: hal_stop_threads() failed, returned %d\n" +msgstr "MOTION: hal_stop_threads() falhou, retornou %d\n" + +#: src/emc/motion/motion.c:294 +#, c-format +msgid "MOTION: rtapi_shmem_delete() failed, returned %d\n" +msgstr "MOTION: rtapi_shmem_delete() falhou, retornou %d\n" + +#: src/emc/motion/motion.c:300 +#, c-format +msgid "MOTION: hal_exit() failed, returned %d\n" +msgstr "MOTION: hal_exit() falhou, retornou %d\n" + +#: src/emc/motion/motion.c:323 +msgid "MOTION: emcmot_hal_data malloc failed\n" +msgstr "MOTION: emcmot_hal_data malloc falhou\n" + +#: src/emc/motion/motion.c:331 +#, fuzzy +msgid "MOTION: joints malloc failed\n" +msgstr "MOTION: init_hal_io() falhou\n" + +#: src/emc/motion/motion.c:695 +#, c-format +msgid "MOTION: joint %d pin/param export failed\n" +msgstr "MOTION: exportação dos parâmetros/pins do eixo %d falhou\n" + +#: src/emc/motion/homing.c:80 src/emc/motion/homing.c:748 +#, c-format +msgid "hit limit in home state %d" +msgstr "limite encontrado durante estado de home %d" + +#: src/emc/motion/homing.c:90 +#, c-format +msgid "end of move in home state %d" +msgstr "fim do movimento durante estado de home %d" + +#: src/emc/motion/homing.c:185 +#, c-format +msgid "unknown state '%d' during homing sequence" +msgstr "estado desconhecido durante sequência de homing: %d" + +#: src/emc/motion/homing.c:246 +msgid "Cannot home while shared home switch is closed" +msgstr "" +"Impossível efetuar sequencia de homing enquanto um interruptor de home " +"compartilhado está fechado" + +#: src/emc/motion/homing.c:290 +msgid "" +"invalid homing config: non-zero LATCH_VEL needs either SEARCH_VEL or " +"USE_INDEX" +msgstr "" +"Config de home inválida: velocidade LATCH_VEL não-zero precisa ter uma " +"SEARCH_VEL ou USE_INDEX especificada." + +#: src/emc/motion/homing.c:299 +msgid "invalid homing config: non-zero SEARCH_VEL needs LATCH_VEL" +msgstr "" +"Configuração de home inválida: velocidade SEARCH_VEL não-zero precisa de " +"LATCH_VEL" + +#: src/emc/motion/homing.c:447 +msgid "Home switch inactive before start of backoff move" +msgstr "Interruptor de home inativo antes do início do movimento de retorno" + +#: src/emc/motion/homing.c:495 +msgid "Home switch active before start of latch move" +msgstr "Interruptor de home ativo antes do início do movimento de latch" + +#: src/emc/motion/homing.c:551 +msgid "Home switch inactive before start of latch move" +msgstr "Interruptor de home inativo antes do início do movimento de latch" #: src/emc/motion/homing.c:797 #, c-format msgid "unknown state '%d' during homing" msgstr "Estado desconhecido durante sequência de homing: %d" -#: tcl/bin/emccalib.tcl:80 +#: tcl/bin/emccalib.tcl:80 +#, fuzzy +msgid "Machinekit Servo Axis Calibration" +msgstr "Mostrar _Configuração Hal" + +#: tcl/bin/emccalib.tcl:90 +msgid "Save To File" +msgstr "" + +#: tcl/bin/emccalib.tcl:106 tcl/bin/genedit.tcl:77 tcl/bin/halconfig.tcl:151 +#: tcl/bin/halshow.tcl:85 tcl/mini.tcl:2516 tcl/tklinuxcnc.tcl:719 +#: tcl/ngcgui.tcl:489 +#, fuzzy +msgid "File" +msgstr "_Arquivo" + +#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:236 tcl/bin/halconfig.tcl:153 +#: tcl/mini.tcl:3558 src/emc/usr_intf/touchy/touchy.glade:2420 +msgid "Refresh" +msgstr "" + +#: tcl/bin/emccalib.tcl:110 tcl/bin/genedit.tcl:82 tcl/bin/halconfig.tcl:155 +#: tcl/mini.tcl:2535 src/emc/usr_intf/axis/scripts/axis.py:2107 +msgid "Save" +msgstr "" + +#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:623 +#, tcl-format +msgid "Tune %d" +msgstr "" + +#: tcl/bin/emccalib.tcl:162 tcl/bin/halconfig.tcl:628 +#, fuzzy +msgid "INI Name" +msgstr "Nome:" + +#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:629 +msgid "HAL's Value" +msgstr "" + +#: tcl/bin/emccalib.tcl:165 tcl/bin/halconfig.tcl:631 +msgid "Next Value" +msgstr "" + +#: tcl/bin/emccalib.tcl:230 tcl/bin/halconfig.tcl:680 tcl/bin/halconfig.tcl:731 +msgid "Test" +msgstr "" + +#: tcl/bin/emccalib.tcl:388 tcl/bin/halconfig.tcl:883 +#, tcl-format +msgid "" +"The HAL parameter \n" +" %s \n" +" has changed. \n" +" Really quit?" +msgstr "" + +#: tcl/bin/emccalib.tcl:413 tcl/bin/halconfig.tcl:1170 +msgid "" +"Not permitted to save here.\n" +"\n" +" You need to copy a configuration to your home directory and work there." +msgstr "" + +#: tcl/bin/emccalib.tcl:487 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 +#: tcl/bin/pickconfig.tcl:843 tcl/bin/pickconfig.tcl:854 +#: tcl/scripts/Set_Coordinates.tcl:205 tcl/scripts/Set_Coordinates.tcl:228 +#, tcl-format +msgid "can't save %s" +msgstr "" + +#: tcl/bin/emcdebug.tcl:166 tcl/bin/emcdebug.tcl:177 +msgid "LinuxCNC Debug" +msgstr "" + +#: tcl/bin/emcdebug.tcl:185 +msgid "Invalid INI file entries" +msgstr "" + +#: tcl/bin/emcdebug.tcl:186 +msgid "Configuration information" +msgstr "" + +#: tcl/bin/emcdebug.tcl:187 +msgid "Use of defaults" +msgstr "" + +#: tcl/bin/emcdebug.tcl:188 +msgid "Version information" +msgstr "" + +#: tcl/bin/emcdebug.tcl:189 +msgid "Command issuing" +msgstr "" + +#: tcl/bin/emcdebug.tcl:190 +msgid "IO points" +msgstr "" + +#: tcl/bin/emcdebug.tcl:191 +msgid "NML" +msgstr "" + +#: tcl/bin/emcdebug.tcl:192 +#, fuzzy +msgid "Motion time" +msgstr "Tempo de execução:" + +#: tcl/bin/emcdebug.tcl:193 src/emc/usr_intf/axis/scripts/debuglevel.py:42 +msgid "Interpreter" +msgstr "" + +#: tcl/bin/emcdebug.tcl:194 +msgid "RCS" +msgstr "" + +#: tcl/bin/emcdebug.tcl:195 +msgid "Trajectory level" +msgstr "" + +#: tcl/bin/emcdebug.tcl:196 +msgid "Interpreter list" +msgstr "" + +#: tcl/bin/genedit.tcl:78 tcl/mini.tcl:2533 +msgid "New" +msgstr "" + +#: tcl/bin/genedit.tcl:80 tcl/mini.tcl:1667 tcl/mini.tcl:2534 +#: tcl/tklinuxcnc.tcl:720 tcl/tklinuxcnc.tcl:1657 +#, fuzzy +msgid "Open..." +msgstr "_Abrir" + +#: tcl/bin/genedit.tcl:84 tcl/mini.tcl:2536 +msgid "Save As..." +msgstr "" + +#: tcl/bin/genedit.tcl:87 tcl/bin/halconfig.tcl:165 tcl/bin/halshow.tcl:92 +#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1322 +#: tcl/ngcgui.tcl:3832 +msgid "Exit" +msgstr "" + +#: tcl/bin/genedit.tcl:91 tcl/mini.tcl:2517 +#: src/emc/usr_intf/gscreen/gscreen.glade:2685 +msgid "Edit" +msgstr "" + +#: tcl/bin/genedit.tcl:92 tcl/mini.tcl:2543 +msgid "Cut" +msgstr "" + +#: tcl/bin/genedit.tcl:94 tcl/mini.tcl:2544 +msgid "Copy" +msgstr "" + +#: tcl/bin/genedit.tcl:96 tcl/mini.tcl:2545 +#, fuzzy +msgid "Paste" +msgstr "_Pausar" + +#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:73 +msgid "Select All" +msgstr "" + +#: tcl/bin/genedit.tcl:104 tcl/bin/halconfig.tcl:192 tcl/mini.tcl:919 +#: tcl/mini.tcl:2519 tcl/tklinuxcnc.tcl:790 +#: src/emc/usr_intf/stepconf/main_page.glade:445 +#, fuzzy +msgid "Help" +msgstr "_Ajuda" + +#: tcl/bin/genedit.tcl:105 tcl/mini.tcl:1011 tcl/mini.tcl:2559 +#: tcl/tklinuxcnc.tcl:796 +msgid "About..." +msgstr "" + +#: tcl/bin/genedit.tcl:130 +msgid "Save and Reload" +msgstr "" + +#: tcl/bin/genedit.tcl:133 tcl/mini.tcl:2550 +msgid "Find..." +msgstr "" + +#: tcl/bin/genedit.tcl:135 tcl/mini.tcl:2552 +msgid "Renumber File..." +msgstr "" + +#: tcl/bin/genedit.tcl:140 tcl/mini.tcl:917 tcl/mini.tcl:2518 +#: tcl/tklinuxcnc.tcl:746 src/emc/usr_intf/gmoccapy/gmoccapy.glade:5135 +msgid "Settings" +msgstr "" + +#: tcl/bin/genedit.tcl:141 tcl/mini.tcl:2554 +msgid "No Numbering" +msgstr "" + +#: tcl/bin/genedit.tcl:144 tcl/mini.tcl:2556 +msgid "Line Numbering..." +msgstr "" + +#: tcl/bin/genedit.tcl:150 tcl/tklinuxcnc.tcl:768 +msgid "Scripts" +msgstr "" + +#: tcl/bin/genedit.tcl:177 +msgid "About TkEditor" +msgstr "" + +#: tcl/bin/genedit.tcl:179 +msgid "" +"TkEditor\n" +"\n" +"Simple Tcl/Tk Text Editor\n" +"\n" +"GPL Version 2" +msgstr "" + +#: tcl/bin/genedit.tcl:267 tcl/mini.tcl:3090 +msgid "Find" +msgstr "" + +#: tcl/bin/genedit.tcl:270 +#, fuzzy +msgid "Find:" +msgstr "Spindle:" + +#: tcl/bin/genedit.tcl:276 +#, fuzzy +msgid "Replace:" +msgstr "Relativa" + +#: tcl/bin/genedit.tcl:282 +msgid "Find All" +msgstr "" + +#: tcl/bin/genedit.tcl:285 tcl/mini.tcl:3113 +msgid "Replace All" +msgstr "" + +#: tcl/bin/genedit.tcl:288 +msgid "Skip This" +msgstr "" + +#: tcl/bin/genedit.tcl:291 +msgid "Replace This" +msgstr "" + +#: tcl/bin/genedit.tcl:297 +msgid "Clear" +msgstr "" + +#: tcl/bin/genedit.tcl:422 tcl/mini.tcl:2640 +msgid "Set Line Numbering" +msgstr "" + +#: tcl/bin/genedit.tcl:424 tcl/mini.tcl:2644 +msgid "Increment" +msgstr "" + +#: tcl/bin/genedit.tcl:426 tcl/mini.tcl:2646 +msgid "One" +msgstr "" + +#: tcl/bin/genedit.tcl:429 tcl/mini.tcl:2648 +msgid "Two" +msgstr "" + +#: tcl/bin/genedit.tcl:432 tcl/mini.tcl:2650 +#, fuzzy +msgid "Five" +msgstr "_Arquivo" + +#: tcl/bin/genedit.tcl:435 tcl/mini.tcl:2652 +msgid "Ten" +msgstr "" + +#: tcl/bin/genedit.tcl:439 tcl/mini.tcl:2654 +msgid "Space" +msgstr "" + +#: tcl/bin/genedit.tcl:441 tcl/mini.tcl:2656 +msgid "Single Space" +msgstr "" + +#: tcl/bin/genedit.tcl:444 tcl/mini.tcl:2658 +msgid "Double Space" +msgstr "" + +#: tcl/bin/genedit.tcl:447 tcl/mini.tcl:2660 +msgid "Tab Space" +msgstr "" + +#: tcl/bin/genedit.tcl:453 +msgid "Next Number:" +msgstr "" + +#: tcl/bin/genedit.tcl:474 tcl/mini.tcl:2668 +#, fuzzy +msgid "Renumber" +msgstr "_Retomar" + +#: tcl/bin/halconfig.tcl:88 tcl/bin/halshow.tcl:33 +#, fuzzy +msgid "HAL Configuration" +msgstr "Mostrar _Configuração Hal" + +#: tcl/bin/halconfig.tcl:103 +msgid "Would you like to save your configuration before you exit?" +msgstr "" + +#: tcl/bin/halconfig.tcl:103 +msgid "Save All" +msgstr "" + +#: tcl/bin/halconfig.tcl:103 +msgid "Save Tune" +msgstr "" + +#: tcl/bin/halconfig.tcl:103 +msgid "Save as Netlist" +msgstr "" + +#: tcl/bin/halconfig.tcl:103 +#, fuzzy +msgid "Don't Save" +msgstr "Vista frontal" + +#: tcl/bin/halconfig.tcl:132 +msgid "Show" +msgstr "" + +#: tcl/bin/halconfig.tcl:133 +msgid "Watch" +msgstr "" + +#: tcl/bin/halconfig.tcl:134 +msgid "Modify" +msgstr "" + +#: tcl/bin/halconfig.tcl:157 +msgid "Save INI Tuning" +msgstr "" + +#: tcl/bin/halconfig.tcl:159 +msgid "Save HAL Ini" +msgstr "" + +#: tcl/bin/halconfig.tcl:161 +msgid "Save HAL Net" +msgstr "" + +#: tcl/bin/halconfig.tcl:163 +msgid "Save and Exit" +msgstr "" + +#: tcl/bin/halconfig.tcl:168 tcl/mini.tcl:916 tcl/tklinuxcnc.tcl:739 +#, fuzzy +msgid "View" +msgstr "_Vista" + +#: tcl/bin/halconfig.tcl:170 tcl/bin/halshow.tcl:104 +msgid "Expand Tree" +msgstr "" + +#: tcl/bin/halconfig.tcl:172 tcl/bin/halshow.tcl:106 +msgid "Collapse Tree" +msgstr "" + +#: tcl/bin/halconfig.tcl:175 tcl/bin/halshow.tcl:109 +msgid "Expand Pins" +msgstr "" + +#: tcl/bin/halconfig.tcl:177 tcl/bin/halshow.tcl:111 +msgid "Expand Parameters" +msgstr "" + +#: tcl/bin/halconfig.tcl:179 tcl/bin/halshow.tcl:113 +msgid "Expand Signals" +msgstr "" + +#: tcl/bin/halconfig.tcl:182 tcl/bin/halshow.tcl:116 +msgid "Erase Watch" +msgstr "" + +#: tcl/bin/halconfig.tcl:194 tcl/mini.tcl:840 tcl/mini.tcl:2785 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "About" +msgstr "Sobre o AXIS" + +#: tcl/bin/halconfig.tcl:196 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2579 +#, fuzzy +msgid "Main" +msgstr "Máquina" + +#: tcl/bin/halconfig.tcl:476 +msgid "Enter HAL command :" +msgstr "" + +#: tcl/bin/halconfig.tcl:479 tcl/bin/halconfig.tcl:528 tcl/bin/halshow.tcl:354 +msgid "Execute" +msgstr "" + +#: tcl/bin/halconfig.tcl:943 tcl/bin/halshow.tcl:405 +msgid "Select a node to show." +msgstr "" + +#: tcl/bin/halconfig.tcl:968 tcl/bin/halshow.tcl:429 +msgid "<-- Select a Leaf. Click on its name." +msgstr "" + +#: tcl/bin/halconfig.tcl:1085 tcl/bin/halconfig.tcl:1095 +#: tcl/bin/halconfig.tcl:1102 tcl/bin/halconfig.tcl:1109 +#: tcl/bin/halconfig.tcl:1116 +#, tcl-format +msgid "Click a highlighted entry where %s should go." +msgstr "" + +#: tcl/bin/halconfig.tcl:1092 +msgid "Nothing to be done for parameters here. Try the tuning page" +msgstr "" + +#: tcl/bin/halconfig.tcl:1124 +#, tcl-format +msgid "%s is not a leaf, try again" +msgstr "" + +#: tcl/bin/halconfig.tcl:1281 +msgid "" +"Copyright Raymond E Henry. 2006\n" +"License: GPL Version 2\n" +"\n" +"Halconfig is an LinuxCNC configuration tool. It requires that you have " +"started an instance of linuxcnc.\n" +"\n" +"This script carries no warranty or liability for its use to the extent " +"allowed by law." +msgstr "" + +#: tcl/bin/halshow.tcl:69 +msgid " SHOW " +msgstr "" + +#: tcl/bin/halshow.tcl:70 +msgid " WATCH " +msgstr "" + +#: tcl/bin/halshow.tcl:90 +msgid "Load Watch List" +msgstr "" + +#: tcl/bin/halshow.tcl:102 +msgid "Tree View" +msgstr "" + +#: tcl/bin/halshow.tcl:349 +msgid "Test HAL command :" +msgstr "" + +#: tcl/bin/halshow.tcl:544 +msgid "Load a watch list" +msgstr "" + +#: tcl/bin/halshow.tcl:567 +msgid "Save current watch list" +msgstr "" + +#: tcl/bin/halshow.tcl:581 +msgid "Commands may be tested here but they will NOT be saved" +msgstr "" + +#: tcl/bin/pickconfig.tcl:96 +msgid "" +"Can't find the bwidget 1.7 package. There is a debian bwidget package; " +"install \n" +"it with sudo apt-get install bwidget." +msgstr "" + +#: tcl/bin/pickconfig.tcl:154 +#, fuzzy +msgid "Machinekit Configuration Selector" +msgstr "Mostrar _Configuração Hal" + +#: tcl/bin/pickconfig.tcl:296 +msgid "No details available." +msgstr "" + +#: tcl/bin/pickconfig.tcl:343 +msgid "" +"Welcome to MachineKit.\n" +"\n" +"Select a machine configuration from the list on the left.\n" +"Details about the selected configuration will appear in the display on the " +"right.\n" +"Click 'OK' to run the selected configuration" +msgstr "" + +#: tcl/bin/pickconfig.tcl:401 +#, fuzzy +msgid "My Configurations" +msgstr "Mostrar _Configuração Hal" + +#: tcl/bin/pickconfig.tcl:405 +#, fuzzy +msgid "Sample Configurations" +msgstr "Mostrar _Configuração Hal" + +#: tcl/bin/pickconfig.tcl:530 +#, tcl-format +msgid "ERROR: no configurations found in path '%s'" +msgstr "" + +#: tcl/bin/pickconfig.tcl:567 +#, fuzzy +msgid "Copy Configuration?" +msgstr "Mostrar _Configuração Hal" + +#: tcl/bin/pickconfig.tcl:567 +#, tcl-format +msgid "" +"Would you like to copy the %s configuration to your home directory so you " +"can customize it?" +msgstr "" + +#: tcl/bin/pickconfig.tcl:567 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:563 +msgid "Yes" +msgstr "" + +#: tcl/bin/pickconfig.tcl:749 +#, fuzzy +msgid "Configuration Copied" +msgstr "Mostrar _Configuração Hal" + +#: tcl/bin/pickconfig.tcl:749 +#, tcl-format +msgid "" +"The configuration file has been copied to %s. Next time, choose this " +"location when starting MachineKit." +msgstr "" + +#: tcl/bin/pickconfig.tcl:799 +msgid "Shortcut Created" +msgstr "" + +#: tcl/bin/pickconfig.tcl:799 +msgid "" +"A shortcut to this configuration file has been created on your desktop. You " +"can use it to automatically launch this configuration." +msgstr "" + +#: tcl/bin/pickconfig.tcl:805 +msgid "Create Desktop Shortcut" +msgstr "" + +#: tcl/bin/tkbackplot.tcl:110 +msgid "TkLinuxCNC BackPlot" +msgstr "" + +#: tcl/bin/tkbackplot.tcl:125 +#, fuzzy +msgid "SETUP" +msgstr "PARADA DE EMERGÊNCIA" + +#: tcl/bin/tkbackplot.tcl:127 +#, fuzzy +msgid "RESET" +msgstr "PARADA DE EMERGÊNCIA" + +#: tcl/bin/tkbackplot.tcl:129 +msgid "CANCEL" +msgstr "" + +#: tcl/bin/tkbackplot.tcl:250 +msgid "AXIS" +msgstr "" + +#: tcl/bin/tkbackplot.tcl:251 +#, fuzzy +msgid "OFFSET" +msgstr "OFF" + +#: tcl/bin/tkbackplot.tcl:252 +msgid "ANGLE" +msgstr "" + +#: tcl/bin/tkbackplot.tcl:253 +msgid "DIRECTION" +msgstr "" + +#: tcl/bin/tkbackplot.tcl:270 +msgid "SIZE :" +msgstr "" + +#: tcl/mini.tcl:490 +#, tcl-format +msgid "JOG %s +" +msgstr "" + +#: tcl/mini.tcl:491 +#, tcl-format +msgid "JOG %s -" +msgstr "" + +#: tcl/mini.tcl:492 +#, tcl-format +msgid "" +"%s\n" +"\n" +"Z\n" +"E\n" +"R\n" +"O" +msgstr "" + +#: tcl/mini.tcl:840 +msgid "" +"TkMini \n" +"\n" +"Tcl/Tk GUI for Enhanced Machine Controller\n" +"\n" +"GPL Copyright 2003 \n" +"Ray Henry \n" +"\n" +" 3D backplotter by Paul Corner \n" +" \n" +"This software comes with ABSOLUTELY NO GUARANTEE! \n" +"For details see the copyright.html file in this directory." +msgstr "" + +#: tcl/mini.tcl:915 +#, fuzzy +msgid "Program" +msgstr "Pausa o programa" + +#: tcl/mini.tcl:918 +msgid "Info" +msgstr "" + +#: tcl/mini.tcl:923 +msgid "Backplot" +msgstr "" + +#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:5915 +msgid "Editor" +msgstr "" + +#: tcl/mini.tcl:927 +msgid "Offsets" +msgstr "" + +#: tcl/mini.tcl:929 +msgid "Tools" +msgstr "" + +#: tcl/mini.tcl:951 tcl/mini.tcl:3565 tcl/tklinuxcnc.tcl:732 +#, fuzzy +msgid "Reset" +msgstr "_Retomar" + +#: tcl/mini.tcl:960 +#, fuzzy +msgid "Position Type" +msgstr "Posição:" + +#: tcl/mini.tcl:962 +#, fuzzy +msgid "Tool Info" +msgstr "Troca de ferramenta" + +#: tcl/mini.tcl:964 +msgid "Offset Info" +msgstr "" + +#: tcl/mini.tcl:967 +#, fuzzy +msgid "Show Restart" +msgstr "Mostra _limites" + +#: tcl/mini.tcl:968 +msgid "Hide Restart" +msgstr "" + +#: tcl/mini.tcl:970 +msgid "Show Split Right" +msgstr "" + +#: tcl/mini.tcl:972 +msgid "Show Mode Full" +msgstr "" + +#: tcl/mini.tcl:974 +msgid "Show Popin Full" +msgstr "" + +#: tcl/mini.tcl:978 +#, fuzzy +msgid "Actual Position" +msgstr "Mostra posição atual" + +#: tcl/mini.tcl:980 +#, fuzzy +msgid "Commanded Position" +msgstr "Mostra posição comandada" + +#: tcl/mini.tcl:983 +#, fuzzy +msgid "Machine Position" +msgstr "Mostra posição da máquina" + +#: tcl/mini.tcl:985 +#, fuzzy +msgid "Relative Position" +msgstr "Mostra posição relativa" + +#: tcl/mini.tcl:988 tcl/tklinuxcnc.tcl:747 +#, fuzzy +msgid "Calibration..." +msgstr "_Calibrar" + +#: tcl/mini.tcl:990 +msgid "HAL Show..." +msgstr "" + +#: tcl/mini.tcl:992 +msgid "HAL Config..." +msgstr "" + +#: tcl/mini.tcl:997 +#, fuzzy +msgid "Program File" +msgstr "Filtro de programa %r falhado" + +#: tcl/mini.tcl:998 +#, fuzzy, tcl-format +msgid "Program file is %s" +msgstr "Filtro de programa %r falhado" + +#: tcl/mini.tcl:999 +msgid "Editor File" +msgstr "" + +#: tcl/mini.tcl:1000 +#, tcl-format +msgid "Editor file is %s" +msgstr "" + +#: tcl/mini.tcl:1001 +msgid "Parameter File" +msgstr "" + +#: tcl/mini.tcl:1002 +#, tcl-format +msgid "Parameter file is %s" +msgstr "" + +#: tcl/mini.tcl:1003 +#, fuzzy +msgid "Tool File" +msgstr "Tipo da ferramenta" + +#: tcl/mini.tcl:1004 +#, tcl-format +msgid "Tool file is %s" +msgstr "" + +#: tcl/mini.tcl:1006 +#, fuzzy +msgid "Active G Codes" +msgstr "Códigos G ativos:" + +#: tcl/mini.tcl:1007 +#, tcl-format +msgid "" +"Active codes include; \n" +"%s" +msgstr "" + +#: tcl/mini.tcl:1010 tcl/mini.tcl:2558 tcl/tklinuxcnc.tcl:791 #, fuzzy -msgid "LinuxCNC Servo Axis Calibration" -msgstr "Mostrar _Configuração Hal" +msgid "Help..." +msgstr "_Ajuda" + +#: tcl/mini.tcl:1027 tcl/tklinuxcnc.tcl:890 +msgid "ABORT" +msgstr "" + +#: tcl/mini.tcl:1038 tcl/mini.tcl:2048 +msgid "CONTINUE" +msgstr "" + +#: tcl/mini.tcl:1044 tcl/tklinuxcnc.tcl:828 tcl/tklinuxcnc.tcl:2248 +#: src/emc/usr_intf/touchy/touchy.glade:1264 +msgid "MDI" +msgstr "" + +#: tcl/mini.tcl:1048 tcl/tklinuxcnc.tcl:2239 +msgid "AUTO" +msgstr "" + +#: tcl/mini.tcl:1052 tcl/mini.tcl:1812 tcl/tklinuxcnc.tcl:2141 +#: tcl/tklinuxcnc.tcl:2261 +msgid "MANUAL" +msgstr "" + +#: tcl/mini.tcl:1106 +#, fuzzy +msgid "Tool #:" +msgstr "Ordem das ferramentas:" + +#: tcl/mini.tcl:1108 +msgid "Length :" +msgstr "" + +#: tcl/mini.tcl:1119 +msgid "Work Offsets: " +msgstr "" + +#: tcl/mini.tcl:1121 +msgid "start offsets popup here" +msgstr "" + +#: tcl/mini.tcl:1165 +msgid "start override popup here" +msgstr "" + +#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1739 +msgid "Feed Override:" +msgstr "Velocidade da máquina" + +#: tcl/mini.tcl:1180 +msgid "-- MESSAGES --" +msgstr "" + +#: tcl/mini.tcl:1230 +msgid "toggleView's not doin nothin yet" +msgstr "" + +#: tcl/mini.tcl:1282 +msgid "Can't set zero with a tool offset active so I issued G49 to cancel it." +msgstr "" + +#: tcl/mini.tcl:1346 +#, tcl-format +msgid "Can't update the var file while machine is in auto and %s." +msgstr "" + +#: tcl/mini.tcl:1400 tcl/tklinuxcnc.tcl:1227 +#, fuzzy +msgid "override limits" +msgstr "Ultrapassar limites" + +#: tcl/mini.tcl:1405 tcl/tklinuxcnc.tcl:1263 +#, fuzzy +msgid "home" +msgstr "Home" + +#: tcl/mini.tcl:1426 +msgid "DEFAULT" +msgstr "" + +#: tcl/mini.tcl:1427 +#, fuzzy +msgid "Speed:" +msgstr "Velocidade de Jog" + +#: tcl/mini.tcl:1430 +msgid "RAPID" +msgstr "" + +#: tcl/mini.tcl:1447 tcl/tklinuxcnc.tcl:1391 +#, fuzzy +msgid "Set Jog Speed" +msgstr "Velocidade de Jog" + +#: tcl/mini.tcl:1453 tcl/tklinuxcnc.tcl:1404 +#, fuzzy +msgid "Set jog speed:" +msgstr "Aumenta velocidade de Jog" + +#: tcl/mini.tcl:1511 +msgid "JOG X +" +msgstr "" + +#: tcl/mini.tcl:1512 +msgid "JOG X -" +msgstr "" + +#: tcl/mini.tcl:1516 +#, fuzzy +msgid "increment" +msgstr "Seleciona incremento de Jog" + +#: tcl/mini.tcl:1518 tcl/tklinuxcnc.tcl:602 tcl/tklinuxcnc.tcl:1249 +#: tcl/tklinuxcnc.tcl:1253 src/emc/usr_intf/gscreen/gscreen.glade:1574 +#: src/emc/usr_intf/gscreen/gscreen.glade:1586 +#, fuzzy +msgid "continuous" +msgstr "Contínuo" + +#: tcl/mini.tcl:1520 +msgid "" +"A\n" +"L\n" +"L\n" +"\n" +"Z\n" +"E\n" +"R\n" +"O" +msgstr "" + +#: tcl/mini.tcl:1588 src/emc/usr_intf/touchy/touchy.glade:1422 +#, fuzzy +msgid "Spindle Forward" +msgstr "Freio do spindle ativado" + +#: tcl/mini.tcl:1589 src/emc/usr_intf/touchy/touchy.glade:1433 +#, fuzzy +msgid "Spindle Reverse" +msgstr "Freio do spindle ativado" + +#: tcl/mini.tcl:1590 tcl/tklinuxcnc.tcl:871 +#, fuzzy +msgid "Spindle off" +msgstr "Freio do spindle desativado" + +#: tcl/mini.tcl:1592 src/emc/usr_intf/touchy/touchy.glade:1479 +#, fuzzy +msgid "Spindle Slower" +msgstr "Reduz a rotação do spindle [F11]" + +#: tcl/mini.tcl:1596 src/emc/usr_intf/touchy/touchy.glade:1464 +#, fuzzy +msgid "Spindle Faster" +msgstr "Aumenta a rotação do spindle [F12]" + +#: tcl/mini.tcl:1632 tcl/tklinuxcnc.tcl:1620 +msgid "MDI:" +msgstr "" + +#: tcl/mini.tcl:1669 tcl/tklinuxcnc.tcl:1658 +#: src/emc/usr_intf/stepconf/main_page.glade:298 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2625 +msgid "Run" +msgstr "" + +#: tcl/mini.tcl:1671 tcl/tklinuxcnc.tcl:1659 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2638 +#, fuzzy +msgid "Pause" +msgstr "_Pausar" + +#: tcl/mini.tcl:1673 tcl/tklinuxcnc.tcl:1660 +#, fuzzy +msgid "Resume" +msgstr "_Retomar" + +#: tcl/mini.tcl:1675 tcl/tklinuxcnc.tcl:1661 +#, fuzzy +msgid "Step" +msgstr "_Passo" + +#: tcl/mini.tcl:1677 tcl/tklinuxcnc.tcl:1662 +msgid "Verify" +msgstr "" + +#: tcl/mini.tcl:1698 +msgid "RESTART LINE" +msgstr "" + +#: tcl/mini.tcl:1699 src/emc/usr_intf/stepconf/main_page.glade:531 +#, fuzzy +msgid "Back" +msgstr "Freio" + +#: tcl/mini.tcl:1700 +msgid "Ahead" +msgstr "" + +#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1300 +#: src/emc/usr_intf/gscreen/gscreen.glade:3973 +msgid "Restart" +msgstr "" + +#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 tcl/tklinuxcnc.tcl:465 +#: src/emc/usr_intf/axis/scripts/axis.py:2023 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:754 +msgid "All files" +msgstr "Todos os arquivos" + +#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 tcl/tklinuxcnc.tcl:466 +#, fuzzy +msgid "Text files" +msgstr "Todos os arquivos" + +#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 tcl/tklinuxcnc.tcl:467 +#, fuzzy +msgid "NC files" +msgstr "Todos os arquivos" + +#: tcl/mini.tcl:1753 +msgid "" +"The interpreter is running. \n" +" Pressing OK will abort and load the new program" +msgstr "" + +#: tcl/mini.tcl:1886 +#, fuzzy +msgid "ESTOPPED" +msgstr "PARADA DE EMERGÊNCIA" + +#: tcl/mini.tcl:1889 +#, fuzzy +msgid "ESTOP PUSH" +msgstr "PARADA DE EMERGÊNCIA" + +#: tcl/mini.tcl:1892 tcl/tklinuxcnc.tcl:2233 +#, fuzzy +msgid "ESTOP RESET" +msgstr "PARADA DE EMERGÊNCIA" + +#: tcl/mini.tcl:1897 tcl/tklinuxcnc.tcl:2298 +msgid "SPINDLE FORWARD" +msgstr "" + +#: tcl/mini.tcl:1899 tcl/tklinuxcnc.tcl:2300 +msgid "SPINDLE REVERSE" +msgstr "" + +#: tcl/mini.tcl:1901 tcl/tklinuxcnc.tcl:2302 +msgid "SPINDLE OFF" +msgstr "" + +#: tcl/mini.tcl:1903 tcl/tklinuxcnc.tcl:2304 +msgid "SPINDLE INCREASE" +msgstr "" + +#: tcl/mini.tcl:1905 tcl/tklinuxcnc.tcl:2306 +msgid "SPINDLE DECREASE" +msgstr "" + +#: tcl/mini.tcl:1907 tcl/tklinuxcnc.tcl:2308 +msgid "SPINDLE ?" +msgstr "" -#: tcl/bin/emccalib.tcl:90 -msgid "Save To File" +#: tcl/mini.tcl:1911 tcl/tklinuxcnc.tcl:2312 +msgid "BRAKE ON" msgstr "" -#: tcl/bin/emccalib.tcl:106 tcl/bin/genedit.tcl:77 tcl/bin/halconfig.tcl:151 -#: tcl/bin/halshow.tcl:85 tcl/mini.tcl:2516 tcl/tklinuxcnc.tcl:719 -#: tcl/ngcgui.tcl:549 -#, fuzzy -msgid "File" -msgstr "_Arquivo" +#: tcl/mini.tcl:1913 tcl/tklinuxcnc.tcl:2314 +msgid "BRAKE OFF" +msgstr "" -#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:231 tcl/bin/halconfig.tcl:153 -#: tcl/mini.tcl:3558 src/emc/usr_intf/touchy/touchy.glade:2420 -msgid "Refresh" +#: tcl/mini.tcl:1915 tcl/tklinuxcnc.tcl:2316 +msgid "BRAKE ?" msgstr "" -#: tcl/bin/emccalib.tcl:110 tcl/bin/genedit.tcl:82 tcl/bin/halconfig.tcl:155 -#: tcl/mini.tcl:2535 -msgid "Save" +#: tcl/mini.tcl:1919 tcl/tklinuxcnc.tcl:2274 +msgid "MIST ON" msgstr "" -#: tcl/bin/emccalib.tcl:159 tcl/bin/halconfig.tcl:623 -#, tcl-format -msgid "Tune %d" +#: tcl/mini.tcl:1921 tcl/tklinuxcnc.tcl:2276 +msgid "MIST OFF" msgstr "" -#: tcl/bin/emccalib.tcl:160 tcl/bin/halconfig.tcl:628 -#, fuzzy -msgid "INI Name" -msgstr "Nome:" +#: tcl/mini.tcl:1923 tcl/tklinuxcnc.tcl:2278 +msgid "MIST ?" +msgstr "" -#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:629 -msgid "HAL's Value" +#: tcl/mini.tcl:1927 tcl/tklinuxcnc.tcl:2282 +msgid "FLOOD ON" msgstr "" -#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:631 -msgid "Next Value" +#: tcl/mini.tcl:1929 tcl/tklinuxcnc.tcl:2284 +msgid "FLOOD OFF" msgstr "" -#: tcl/bin/emccalib.tcl:225 tcl/bin/halconfig.tcl:680 -#: tcl/bin/halconfig.tcl:731 -msgid "Test" +#: tcl/mini.tcl:1931 tcl/tklinuxcnc.tcl:2286 +msgid "FLOOD ?" msgstr "" -#: tcl/bin/emccalib.tcl:358 tcl/bin/halconfig.tcl:883 -#, tcl-format -msgid "" -"The HAL parameter \n" -" %s \n" -" has changed. \n" -" Really quit?" +#: tcl/mini.tcl:2052 +msgid "FEEDHOLD" msgstr "" -#: tcl/bin/emccalib.tcl:383 tcl/bin/halconfig.tcl:1170 +#: tcl/mini.tcl:2124 msgid "" -"Not permitted to save here.\n" -"\n" -" You need to copy a configuration to your home directory and work there." +"TOOL SETUP \n" +" Click or tab to edit. Press enter to return to keyboard machine control." msgstr "" -#: tcl/bin/emccalib.tcl:457 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 -#: tcl/bin/pickconfig.tcl:544 tcl/bin/pickconfig.tcl:555 -#: tcl/scripts/Set_Coordinates.tcl:205 tcl/scripts/Set_Coordinates.tcl:228 -#, tcl-format -msgid "can't save %s" +#: tcl/mini.tcl:2130 +msgid " TOOL NUMBER " msgstr "" -#: tcl/bin/emcdebug.tcl:166 tcl/bin/emcdebug.tcl:177 -msgid "LinuxCNC Debug" +#: tcl/mini.tcl:2131 +msgid " LENGTH " msgstr "" -#: tcl/bin/emcdebug.tcl:185 -msgid "Invalid INI file entries" +#: tcl/mini.tcl:2132 +msgid " DIAMETER " msgstr "" -#: tcl/bin/emcdebug.tcl:186 -msgid "Configuration information" +#: tcl/mini.tcl:2133 +msgid " COMMENT " msgstr "" -#: tcl/bin/emcdebug.tcl:187 -msgid "Use of defaults" +#: tcl/mini.tcl:2188 +msgid "Add Extra Tool" msgstr "" -#: tcl/bin/emcdebug.tcl:188 -msgid "Version information" +#: tcl/mini.tcl:2189 +msgid "Remove Last Tool" msgstr "" -#: tcl/bin/emcdebug.tcl:189 -msgid "Command issuing" +#: tcl/mini.tcl:2217 tcl/mini.tcl:2253 +#, tcl-format +msgid "Can't update the tool file while machine is in auto and %s." msgstr "" -#: tcl/bin/emcdebug.tcl:190 -msgid "IO points" +#: tcl/mini.tcl:2229 +msgid "This is not a good number." msgstr "" -#: tcl/bin/emcdebug.tcl:191 -msgid "NML" +#: tcl/mini.tcl:2293 +msgid "" +"COORDINATE SYSTEM SETUP \n" +"\n" +" Click value to edit with keyboard. Press enter to return to keyboard " +"control of machine. \n" +" " msgstr "" -#: tcl/bin/emcdebug.tcl:192 +#: tcl/mini.tcl:2320 tcl/scripts/Set_Coordinates.tcl:80 #, fuzzy -msgid "Motion time" -msgstr "Tempo de execução:" +msgid "Axis " +msgstr "Eixo:" -#: tcl/bin/emcdebug.tcl:193 src/emc/usr_intf/axis/scripts/debuglevel.py:42 -msgid "Interpreter" +#: tcl/mini.tcl:2321 +msgid "Value " msgstr "" -#: tcl/bin/emcdebug.tcl:194 -msgid "RCS" +#: tcl/mini.tcl:2326 tcl/scripts/Set_Coordinates.tcl:91 +msgid "Teach" msgstr "" -#: tcl/bin/emcdebug.tcl:195 -msgid "Trajectory level" +#: tcl/mini.tcl:2334 +msgid "Write And Load File " msgstr "" -#: tcl/bin/emcdebug.tcl:196 -msgid "Interpreter list" +#: tcl/mini.tcl:2336 +msgid "Offset By Radius" msgstr "" -#: tcl/bin/genedit.tcl:78 tcl/mini.tcl:2533 -msgid "New" +#: tcl/mini.tcl:2337 +msgid "Offset By Length" msgstr "" -#: tcl/bin/genedit.tcl:80 tcl/mini.tcl:1667 tcl/mini.tcl:2534 -#: tcl/tklinuxcnc.tcl:720 tcl/tklinuxcnc.tcl:1657 -#, fuzzy -msgid "Open..." -msgstr "_Abrir" - -#: tcl/bin/genedit.tcl:84 tcl/mini.tcl:2536 -msgid "Save As..." +#: tcl/mini.tcl:2342 +msgid "Subtract" msgstr "" -#: tcl/bin/genedit.tcl:87 tcl/bin/halconfig.tcl:165 tcl/bin/halshow.tcl:92 -#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1243 -#: tcl/ngcgui.tcl:3680 -msgid "Exit" +#: tcl/mini.tcl:2344 src/emc/usr_intf/gmoccapy/gmoccapy.glade:6712 +msgid "Add" msgstr "" -#: tcl/bin/genedit.tcl:91 tcl/mini.tcl:2517 -msgid "Edit" +#: tcl/mini.tcl:2366 +msgid "Zero All G54" msgstr "" -#: tcl/bin/genedit.tcl:92 tcl/mini.tcl:2543 -msgid "Cut" +#: tcl/mini.tcl:2367 +msgid "Zero All G55" msgstr "" -#: tcl/bin/genedit.tcl:94 tcl/mini.tcl:2544 -msgid "Copy" +#: tcl/mini.tcl:2368 +msgid "Zero All G56" msgstr "" -#: tcl/bin/genedit.tcl:96 tcl/mini.tcl:2545 -#, fuzzy -msgid "Paste" -msgstr "_Pausar" - -#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:68 -msgid "Select All" +#: tcl/mini.tcl:2369 +msgid "Zero All G57" msgstr "" -#: tcl/bin/genedit.tcl:104 tcl/bin/halconfig.tcl:192 tcl/mini.tcl:919 -#: tcl/mini.tcl:2519 tcl/tklinuxcnc.tcl:790 -#, fuzzy -msgid "Help" -msgstr "_Ajuda" - -#: tcl/bin/genedit.tcl:105 tcl/mini.tcl:1011 tcl/mini.tcl:2559 -#: tcl/tklinuxcnc.tcl:796 -msgid "About..." +#: tcl/mini.tcl:2370 +msgid "Zero All G58" msgstr "" -#: tcl/bin/genedit.tcl:130 -msgid "Save and Reload" +#: tcl/mini.tcl:2371 +msgid "Zero All G59" msgstr "" -#: tcl/bin/genedit.tcl:133 tcl/mini.tcl:2550 -msgid "Find..." +#: tcl/mini.tcl:2372 +msgid "Zero All G59.1" msgstr "" -#: tcl/bin/genedit.tcl:135 tcl/mini.tcl:2552 -msgid "Renumber File..." +#: tcl/mini.tcl:2373 +msgid "Zero All G59.2" msgstr "" -#: tcl/bin/genedit.tcl:140 tcl/mini.tcl:917 tcl/mini.tcl:2518 -#: tcl/tklinuxcnc.tcl:746 -msgid "Settings" +#: tcl/mini.tcl:2374 +msgid "Zero All G59.3" msgstr "" -#: tcl/bin/genedit.tcl:141 tcl/mini.tcl:2554 -msgid "No Numbering" +#: tcl/mini.tcl:2375 +msgid "Zero All ????" msgstr "" -#: tcl/bin/genedit.tcl:144 tcl/mini.tcl:2556 -msgid "Line Numbering..." +#: tcl/mini.tcl:2493 +msgid "Modified..." msgstr "" -#: tcl/bin/genedit.tcl:150 tcl/tklinuxcnc.tcl:768 -msgid "Scripts" +#: tcl/mini.tcl:2538 +msgid "Save and Load" msgstr "" -#: tcl/bin/genedit.tcl:177 -msgid "About TkEditor" +#: tcl/mini.tcl:2540 src/emc/usr_intf/gscreen/gscreen.glade:3515 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2363 +msgid "Undo" msgstr "" -#: tcl/bin/genedit.tcl:179 -msgid "" -"TkEditor\n" -"\n" -"Simple Tcl/Tk Text Editor\n" -"\n" -"GPL Version 2" +#: tcl/mini.tcl:2541 src/emc/usr_intf/gscreen/gscreen.glade:3526 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2411 +msgid "Redo" msgstr "" -#: tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 tcl/mini.tcl:1775 -#: tcl/tklinuxcnc.tcl:451 src/emc/task/emctaskmain.cc:2072 -#, c-format, tcl-format -msgid "can't open %s" -msgstr "impossível abrir %s" +#: tcl/mini.tcl:2546 tcl/tooledit.tcl:488 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6695 +msgid "Delete" +msgstr "" -#: tcl/bin/genedit.tcl:267 tcl/mini.tcl:3090 -msgid "Find" +#: tcl/mini.tcl:2551 +msgid "Replace..." msgstr "" -#: tcl/bin/genedit.tcl:270 -#, fuzzy -msgid "Find:" -msgstr "Spindle:" +#: tcl/mini.tcl:2664 +msgid "Next Number: " +msgstr "" -#: tcl/bin/genedit.tcl:276 -#, fuzzy -msgid "Replace:" -msgstr "Relativa" +#: tcl/mini.tcl:2765 +msgid "Basic Help" +msgstr "" -#: tcl/bin/genedit.tcl:282 -msgid "Find All" +#: tcl/mini.tcl:2765 +msgid "" +"This is a simple ASCII editor like many others.\n" +"\n" +"Ctrl+O Open\n" +"Ctrl+S Save\n" +"Ctrl+Z Undo\n" +"Ctrl+Y Redo\n" +"Ctrl+X Cut\n" +"Ctrl+C Copy\n" +"Ctrl+V Paste\n" +"Del Delete\n" +"Ctrl+A Select All\n" +"\n" +"Ctrl+F Find\n" +"Ctrl+R Replace " msgstr "" -#: tcl/bin/genedit.tcl:285 tcl/mini.tcl:3113 -msgid "Replace All" +#: tcl/mini.tcl:2785 +msgid "" +"tknotepad by Joseph Acosta. \n" +"\n" +" Modified for EMC by: Paul Corner " msgstr "" -#: tcl/bin/genedit.tcl:288 -msgid "Skip This" +#: tcl/mini.tcl:2793 +msgid "" +"The contents of this file may have changed, do you wish to to save your " +"changes?" msgstr "" -#: tcl/bin/genedit.tcl:291 -msgid "Replace This" +#: tcl/mini.tcl:2794 +msgid "New Confirm?" msgstr "" -#: tcl/bin/genedit.tcl:297 -msgid "Clear" +#: tcl/mini.tcl:2928 +msgid "Print Setup" msgstr "" -#: tcl/bin/genedit.tcl:422 tcl/mini.tcl:2640 -msgid "Set Line Numbering" -msgstr "" +#: tcl/mini.tcl:2932 +#, fuzzy +msgid "Print Command: " +msgstr "Comando MDI" -#: tcl/bin/genedit.tcl:424 tcl/mini.tcl:2644 -msgid "Increment" +#: tcl/mini.tcl:3095 +msgid "Find what:" msgstr "" -#: tcl/bin/genedit.tcl:426 tcl/mini.tcl:2646 -msgid "One" +#: tcl/mini.tcl:3101 +msgid "Replace with:" msgstr "" -#: tcl/bin/genedit.tcl:429 tcl/mini.tcl:2648 -msgid "Two" +#: tcl/mini.tcl:3109 +msgid "Find Next" msgstr "" -#: tcl/bin/genedit.tcl:432 tcl/mini.tcl:2650 +#: tcl/mini.tcl:3112 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2494 #, fuzzy -msgid "Five" -msgstr "_Arquivo" +msgid "Replace" +msgstr "Relativa" -#: tcl/bin/genedit.tcl:435 tcl/mini.tcl:2652 -msgid "Ten" +#: tcl/mini.tcl:3120 src/emc/usr_intf/gscreen/gscreen.py:2750 +#: src/emc/usr_intf/gmoccapy/dialogs.py:171 +msgid "Up" msgstr "" -#: tcl/bin/genedit.tcl:439 tcl/mini.tcl:2654 -msgid "Space" +#: tcl/mini.tcl:3121 src/emc/usr_intf/gscreen/gscreen.py:2754 +#: src/emc/usr_intf/gmoccapy/dialogs.py:175 +msgid "Down" msgstr "" -#: tcl/bin/genedit.tcl:441 tcl/mini.tcl:2656 -msgid "Single Space" +#: tcl/mini.tcl:3124 +msgid "Match case" msgstr "" -#: tcl/bin/genedit.tcl:444 tcl/mini.tcl:2658 -msgid "Double Space" +#: tcl/mini.tcl:3569 +msgid "rot-x" msgstr "" -#: tcl/bin/genedit.tcl:447 tcl/mini.tcl:2660 -msgid "Tab Space" +#: tcl/mini.tcl:3579 +msgid "rot-y" msgstr "" -#: tcl/bin/genedit.tcl:453 -msgid "Next Number:" +#: tcl/mini.tcl:3589 +msgid "rot-z" msgstr "" -#: tcl/bin/genedit.tcl:474 tcl/mini.tcl:2668 +#: tcl/mini.tcl:3599 +msgid "zoom" +msgstr "" + +#: tcl/mini.tcl:3655 #, fuzzy -msgid "Renumber" -msgstr "_Retomar" +msgid "TEST" +msgstr "PARADA DE EMERGÊNCIA" -#: tcl/bin/halconfig.tcl:88 tcl/bin/halshow.tcl:33 +#: tcl/mini.tcl:3699 +msgid "Hide Setup" +msgstr "" + +#: tcl/mini.tcl:3703 #, fuzzy -msgid "HAL Configuration" -msgstr "Mostrar _Configuração Hal" +msgid "Show Setup" +msgstr "Mostra o estado do EMC" -#: tcl/bin/halconfig.tcl:103 -msgid "Would you like to save your configuration before you exit?" +#: tcl/show_errors.tcl:41 +msgid "LinuxCNC Errors" msgstr "" -#: tcl/bin/halconfig.tcl:103 -msgid "Save All" +#: tcl/show_errors.tcl:44 +msgid "" +"LinuxCNC terminated with an error. When reporting problems, please include " +"all the information below in your message." msgstr "" -#: tcl/bin/halconfig.tcl:103 -msgid "Save Tune" +#: tcl/show_errors.tcl:74 tcl/scripts/Set_Coordinates.tcl:103 +msgid "Close" msgstr "" -#: tcl/bin/halconfig.tcl:103 -msgid "Save as Netlist" +#: tcl/tklinuxcnc.tcl:154 tcl/tklinuxcnc.tcl:181 +msgid "Set Run Mark" msgstr "" -#: tcl/bin/halconfig.tcl:103 -#, fuzzy -msgid "Don't Save" -msgstr "Vista frontal" +#: tcl/tklinuxcnc.tcl:156 +#, tcl-format +msgid "Set run mark at line %s?" +msgstr "" -#: tcl/bin/halconfig.tcl:132 -msgid "Show" +#: tcl/tklinuxcnc.tcl:176 tcl/tklinuxcnc.tcl:204 +msgid "untitled" msgstr "" -#: tcl/bin/halconfig.tcl:133 -msgid "Watch" +#: tcl/tklinuxcnc.tcl:212 +msgid "Load Parameter File" msgstr "" -#: tcl/bin/halconfig.tcl:134 -msgid "Modify" +#: tcl/tklinuxcnc.tcl:261 +msgid "LinuxCNC Diagnostics" msgstr "" -#: tcl/bin/halconfig.tcl:157 -msgid "Save INI Tuning" +#: tcl/tklinuxcnc.tcl:263 +msgid "Task" msgstr "" -#: tcl/bin/halconfig.tcl:159 -msgid "Save HAL Ini" +#: tcl/tklinuxcnc.tcl:265 tcl/tklinuxcnc.tcl:288 tcl/tklinuxcnc.tcl:311 +msgid "Heartbeat:" msgstr "" -#: tcl/bin/halconfig.tcl:161 -msgid "Save HAL Net" +#: tcl/tklinuxcnc.tcl:268 tcl/tklinuxcnc.tcl:291 tcl/tklinuxcnc.tcl:314 +#, fuzzy +msgid "Command:" +msgstr "Comandada" + +#: tcl/tklinuxcnc.tcl:271 tcl/tklinuxcnc.tcl:294 tcl/tklinuxcnc.tcl:317 +#, fuzzy +msgid "Command #:" +msgstr "Comandada" + +#: tcl/tklinuxcnc.tcl:274 tcl/tklinuxcnc.tcl:297 tcl/tklinuxcnc.tcl:320 +msgid "Status:" msgstr "" -#: tcl/bin/halconfig.tcl:163 -msgid "Save and Exit" +#: tcl/tklinuxcnc.tcl:286 +msgid "Io" msgstr "" -#: tcl/bin/halconfig.tcl:168 tcl/mini.tcl:916 tcl/tklinuxcnc.tcl:739 +#: tcl/tklinuxcnc.tcl:309 #, fuzzy -msgid "View" -msgstr "_Vista" +msgid "Motion" +msgstr "Posição:" -#: tcl/bin/halconfig.tcl:170 tcl/bin/halshow.tcl:104 -msgid "Expand Tree" +#: tcl/tklinuxcnc.tcl:350 +msgid "About TkLinuxCNC" msgstr "" -#: tcl/bin/halconfig.tcl:172 tcl/bin/halshow.tcl:106 -msgid "Collapse Tree" +#: tcl/tklinuxcnc.tcl:351 +msgid "" +"TkLinuxcnc\n" +"\n" +"Tcl/Tk GUI for LinuxCNC\n" +"\n" +"GPL Version 2 (2012)" msgstr "" -#: tcl/bin/halconfig.tcl:175 tcl/bin/halshow.tcl:109 -msgid "Expand Pins" +#: tcl/tklinuxcnc.tcl:399 +msgid "Set Tool Offset" msgstr "" -#: tcl/bin/halconfig.tcl:177 tcl/bin/halshow.tcl:111 -msgid "Expand Parameters" -msgstr "" +#: tcl/tklinuxcnc.tcl:404 tcl/tklinuxcnc.tcl:905 +#, fuzzy +msgid "Tool:" +msgstr "Ordem das ferramentas:" -#: tcl/bin/halconfig.tcl:179 tcl/bin/halshow.tcl:113 -msgid "Expand Signals" +#: tcl/tklinuxcnc.tcl:722 +msgid "Edit..." msgstr "" -#: tcl/bin/halconfig.tcl:182 tcl/bin/halshow.tcl:116 -msgid "Erase Watch" +#: tcl/tklinuxcnc.tcl:727 +msgid "Tool Table Editor..." msgstr "" -#: tcl/bin/halconfig.tcl:194 tcl/mini.tcl:840 tcl/mini.tcl:2785 +#: tcl/tklinuxcnc.tcl:730 src/emc/usr_intf/touchy/touchy.glade:1383 #, fuzzy -msgid "About" -msgstr "Sobre o AXIS" +msgid "Reload Tool Table" +msgstr "Recarrega.lista de ferramentas" -#: tcl/bin/halconfig.tcl:196 -#, fuzzy -msgid "Main" -msgstr "Máquina" +#: tcl/tklinuxcnc.tcl:740 +msgid "Offsets and Variables..." +msgstr "" -#: tcl/bin/halconfig.tcl:476 -msgid "Enter HAL command :" +#: tcl/tklinuxcnc.tcl:741 +msgid "Diagnostics..." msgstr "" -#: tcl/bin/halconfig.tcl:479 tcl/bin/halconfig.tcl:528 tcl/bin/halshow.tcl:354 -msgid "Execute" +#: tcl/tklinuxcnc.tcl:742 +msgid "Backplot..." msgstr "" -#: tcl/bin/halconfig.tcl:943 tcl/bin/halshow.tcl:405 -msgid "Select a node to show." +#: tcl/tklinuxcnc.tcl:748 +msgid "Testing..." msgstr "" -#: tcl/bin/halconfig.tcl:968 tcl/bin/halshow.tcl:429 -msgid "<-- Select a Leaf. Click on its name." +#: tcl/tklinuxcnc.tcl:749 +msgid "Debug..." msgstr "" -#: tcl/bin/halconfig.tcl:1085 tcl/bin/halconfig.tcl:1095 -#: tcl/bin/halconfig.tcl:1102 tcl/bin/halconfig.tcl:1109 -#: tcl/bin/halconfig.tcl:1116 -#, tcl-format -msgid "Click a highlighted entry where %s should go." +#: tcl/tklinuxcnc.tcl:750 +msgid "Font..." msgstr "" -#: tcl/bin/halconfig.tcl:1092 -msgid "Nothing to be done for parameters here. Try the tuning page" +#: tcl/tklinuxcnc.tcl:754 src/emc/usr_intf/axis/scripts/image-to-gcode.py:665 +msgid "Units" +msgstr "Unidades" + +#: tcl/tklinuxcnc.tcl:755 +msgid "auto" msgstr "" -#: tcl/bin/halconfig.tcl:1124 -#, tcl-format -msgid "%s is not a leaf, try again" +#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8873 +msgid "inches" msgstr "" -#: tcl/bin/halconfig.tcl:1281 -msgid "" -"Copyright Raymond E Henry. 2006\n" -"License: GPL Version 2\n" -"\n" -"Halconfig is an LinuxCNC configuration tool. It requires that you have " -"started an instance of linuxcnc.\n" -"\n" -"This script carries no warranty or liability for its use to the extent " -"allowed by law." +#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1609 +#: src/emc/usr_intf/axis/scripts/axis.py:1855 +#: src/emc/usr_intf/axis/scripts/axis.py:2386 +#: src/emc/usr_intf/touchy/touchy.glade:3301 +#: src/emc/usr_intf/stepconf/stepconf.py:1314 +#: src/emc/usr_intf/stepconf/pages.py:625 +#: src/emc/usr_intf/stepconf/main_page.glade:251 +#: src/emc/usr_intf/pncconf/pncconf.py:8869 +#: src/emc/usr_intf/pncconf/pncconf.glade:2195 +#: src/emc/usr_intf/pncconf/pncconf.glade:2362 +#: src/emc/usr_intf/pncconf/pncconf.glade:64552 +#: src/emc/usr_intf/pncconf/pncconf.glade:64621 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm" msgstr "" -#: tcl/bin/halshow.tcl:69 -msgid " SHOW " +#: tcl/tklinuxcnc.tcl:758 +msgid "cm" msgstr "" -#: tcl/bin/halshow.tcl:70 -msgid " WATCH " +#: tcl/tklinuxcnc.tcl:762 +msgid "Utilities" +msgstr "" + +#: tcl/tklinuxcnc.tcl:763 +#, fuzzy +msgid "Hal Scope" +msgstr "Ha_lScope" + +#: tcl/tklinuxcnc.tcl:785 +msgid "HAL Show" msgstr "" -#: tcl/bin/halshow.tcl:90 -msgid "Load Watch List" +#: tcl/tklinuxcnc.tcl:786 +msgid "HAL Config" msgstr "" -#: tcl/bin/halshow.tcl:102 -msgid "Tree View" +#: tcl/tklinuxcnc.tcl:792 +msgid "Balloon help" msgstr "" -#: tcl/bin/halshow.tcl:349 -msgid "Test HAL command :" +#: tcl/tklinuxcnc.tcl:815 +msgid "Estop on" msgstr "" -#: tcl/bin/halshow.tcl:544 -msgid "Load a watch list" +#: tcl/tklinuxcnc.tcl:816 +msgid "Estop off" msgstr "" -#: tcl/bin/halshow.tcl:567 -msgid "Save current watch list" -msgstr "" +#: tcl/tklinuxcnc.tcl:818 +#, fuzzy +msgid "Machine on" +msgstr "Máquina" -#: tcl/bin/halshow.tcl:581 -msgid "Commands may be tested here but they will NOT be saved" -msgstr "" +#: tcl/tklinuxcnc.tcl:819 src/emc/usr_intf/gscreen/gscreen.glade:2452 +#, fuzzy +msgid "Machine off" +msgstr "Máquina" -#: tcl/bin/pickconfig.tcl:50 -msgid "" -"Can't find the bwidget 1.7 package. There is a debian bwidget package; " -"install \n" -"it with sudo apt-get install bwidget." -msgstr "" +#: tcl/tklinuxcnc.tcl:826 src/emc/usr_intf/touchy/touchy.glade:1561 +#, fuzzy +msgid "Manual" +msgstr "Controle manual" -#: tcl/bin/pickconfig.tcl:178 -msgid "No details available." -msgstr "" +#: tcl/tklinuxcnc.tcl:835 +#, fuzzy +msgid "Mist on" +msgstr "Ar/Névoa" -#: tcl/bin/pickconfig.tcl:194 +#: tcl/tklinuxcnc.tcl:836 #, fuzzy -msgid "LinuxCNC Configuration Selector" -msgstr "Mostrar _Configuração Hal" +msgid "Mist off" +msgstr "Ar/Névoa" -#: tcl/bin/pickconfig.tcl:215 -msgid "" -"Welcome to LinuxCNC.\n" -"\n" -"Select a machine configuration from the list on the left.\n" -"Details about the selected configuration will appear in the display on the " -"right.\n" -"Click 'OK' to run the selected configuration" +#: tcl/tklinuxcnc.tcl:843 +#, fuzzy +msgid "Flood on" +msgstr "Líquido" + +#: tcl/tklinuxcnc.tcl:844 +#, fuzzy +msgid "Flood off" +msgstr "Líquido" + +#: tcl/tklinuxcnc.tcl:851 +msgid "Lube on" +msgstr "" + +#: tcl/tklinuxcnc.tcl:852 +msgid "Lube off" msgstr "" -#: tcl/bin/pickconfig.tcl:271 +#: tcl/tklinuxcnc.tcl:869 #, fuzzy -msgid "My Configurations" -msgstr "Mostrar _Configuração Hal" +msgid "Spindle forward" +msgstr "Freio do spindle ativado" -#: tcl/bin/pickconfig.tcl:274 +#: tcl/tklinuxcnc.tcl:870 #, fuzzy -msgid "Sample Configurations" -msgstr "Mostrar _Configuração Hal" +msgid "Spindle reverse" +msgstr "Freio do spindle ativado" -#: tcl/bin/pickconfig.tcl:332 -#, tcl-format -msgid "ERROR: no configurations found in path '%s'" -msgstr "" +#: tcl/tklinuxcnc.tcl:885 +#, fuzzy +msgid "Brake on" +msgstr "Freio" -#: tcl/bin/pickconfig.tcl:369 +#: tcl/tklinuxcnc.tcl:886 #, fuzzy -msgid "Copy Configuration?" -msgstr "Mostrar _Configuração Hal" +msgid "Brake off" +msgstr "Freio" -#: tcl/bin/pickconfig.tcl:369 -#, tcl-format -msgid "" -"Would you like to copy the %s configuration to your home directory so you " -"can customize it?" +#: tcl/tklinuxcnc.tcl:907 +msgid "Offset:" msgstr "" -#: tcl/bin/pickconfig.tcl:369 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:563 -msgid "Yes" +#: tcl/tklinuxcnc.tcl:913 +msgid "Work Offsets:" msgstr "" -#: tcl/bin/pickconfig.tcl:479 +#: tcl/tklinuxcnc.tcl:1233 #, fuzzy -msgid "Configuration Copied" -msgstr "Mostrar _Configuração Hal" +msgid "relative" +msgstr "Relativa" -#: tcl/bin/pickconfig.tcl:479 -#, tcl-format -msgid "" -"The configuration file has been copied to %s. Next time, choose this " -"location when starting LinuxCNC." -msgstr "" +#: tcl/tklinuxcnc.tcl:1234 +#, fuzzy +msgid "machine" +msgstr "Máquina" -#: tcl/bin/pickconfig.tcl:506 -msgid "Shortcut Created" +#: tcl/tklinuxcnc.tcl:1236 +#, fuzzy +msgid "actual" +msgstr "Atual" + +#: tcl/tklinuxcnc.tcl:1237 +#, fuzzy +msgid "commanded" +msgstr "Comandada" + +#: tcl/tklinuxcnc.tcl:1239 +msgid "joint" msgstr "" -#: tcl/bin/pickconfig.tcl:506 -msgid "" -"A shortcut to this configuration file has been created on your desktop. You " -"can use it to automatically launch this configuration." +#: tcl/tklinuxcnc.tcl:1240 +msgid "world" msgstr "" -#: tcl/bin/pickconfig.tcl:511 -msgid "Create Desktop Shortcut" +#: tcl/tklinuxcnc.tcl:1333 +msgid "Axis Offset" msgstr "" -#: tcl/bin/tkbackplot.tcl:110 -msgid "TkLinuxCNC BackPlot" +#: tcl/tklinuxcnc.tcl:1335 +msgid "Set axis value:" msgstr "" -#: tcl/bin/tkbackplot.tcl:125 +#: tcl/tklinuxcnc.tcl:1429 #, fuzzy -msgid "SETUP" -msgstr "PARADA DE EMERGÊNCIA" +msgid "Set Feed Override" +msgstr "Velocidade da máquina" -#: tcl/bin/tkbackplot.tcl:127 +#: tcl/tklinuxcnc.tcl:1435 #, fuzzy -msgid "RESET" -msgstr "PARADA DE EMERGÊNCIA" +msgid "Set feed override:" +msgstr "Velocidade da máquina" -#: tcl/bin/tkbackplot.tcl:129 -msgid "CANCEL" +#: tcl/tklinuxcnc.tcl:1460 +#, fuzzy +msgid "Set Spindle Override" +msgstr "Velocidade da máquina" + +#: tcl/tklinuxcnc.tcl:1466 +msgid "Set spindle speed override:" msgstr "" -#: tcl/bin/tkbackplot.tcl:250 -msgid "AXIS" +#: tcl/tklinuxcnc.tcl:1521 +#, fuzzy +msgid "Linear Jog Speed" +msgstr "Velocidade de Jog" + +#: tcl/tklinuxcnc.tcl:1552 +msgid "Angular Jog Speed (deg)/min:" msgstr "" -#: tcl/bin/tkbackplot.tcl:251 +#: tcl/tklinuxcnc.tcl:1596 #, fuzzy -msgid "OFFSET" -msgstr "OFF" +msgid "Spindle speed Override:" +msgstr "Velocidade da máquina" -#: tcl/bin/tkbackplot.tcl:252 -msgid "ANGLE" +#: tcl/tklinuxcnc.tcl:1642 +#, fuzzy +msgid "Program: " +msgstr "Pausa o programa" + +#: tcl/tklinuxcnc.tcl:1647 +msgid " - Status: " msgstr "" -#: tcl/bin/tkbackplot.tcl:253 -msgid "DIRECTION" +#: tcl/tklinuxcnc.tcl:1663 +msgid "Optional Stop" msgstr "" -#: tcl/bin/tkbackplot.tcl:270 -msgid "SIZE :" +#: tcl/tklinuxcnc.tcl:2010 +msgid "Error" msgstr "" -#: tcl/mini.tcl:490 -#, tcl-format -msgid "JOG %s +" +#: tcl/tklinuxcnc.tcl:2070 tcl/ngcgui_ttt.tcl:46 +msgid "Set Font" msgstr "" -#: tcl/mini.tcl:491 -#, tcl-format -msgid "JOG %s -" +#: tcl/tklinuxcnc.tcl:2079 tcl/ngcgui_ttt.tcl:283 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4827 +msgid "Font" msgstr "" -#: tcl/mini.tcl:492 -#, tcl-format -msgid "" -"%s\n" -"\n" -"Z\n" -"E\n" -"R\n" -"O" +#: tcl/tklinuxcnc.tcl:2086 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3257 +#, fuzzy +msgid "Size" +msgstr "Tamanho:" + +#: tcl/tklinuxcnc.tcl:2093 +#, fuzzy +msgid "Style" +msgstr "_Passo" + +#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:2031 +msgid "ESTOP" +msgstr "PARADA DE EMERGÊNCIA" + +#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2979 share/axis/tcl/axis.tcl:2033 +msgid "ON" +msgstr "ON" + +#: tcl/tklinuxcnc.tcl:2290 +msgid "LUBE ON" msgstr "" -#: tcl/mini.tcl:840 -msgid "" -"TkMini \n" -"\n" -"Tcl/Tk GUI for Enhanced Machine Controller\n" -"\n" -"GPL Copyright 2003 \n" -"Ray Henry \n" -"\n" -" 3D backplotter by Paul Corner \n" -" \n" -"This software comes with ABSOLUTELY NO GUARANTEE! \n" -"For details see the copyright.html file in this directory." +#: tcl/tklinuxcnc.tcl:2292 +msgid "LUBE OFF" msgstr "" -#: tcl/mini.tcl:915 -#, fuzzy -msgid "Program" -msgstr "Pausa o programa" +#: tcl/tklinuxcnc.tcl:2294 +msgid "LUBE ?" +msgstr "" -#: tcl/mini.tcl:918 -msgid "Info" +#: tcl/scripts/Set_Coordinates.tcl:23 +msgid "LinuxCNC Set Coordinate" msgstr "" -#: tcl/mini.tcl:923 -msgid "Backplot" +#: tcl/scripts/Set_Coordinates.tcl:26 +msgid "Coordinate System Control Window" msgstr "" -#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:6125 -msgid "Editor" +#: tcl/scripts/Set_Coordinates.tcl:81 +msgid "Var # " msgstr "" -#: tcl/mini.tcl:927 -msgid "Offsets" +#: tcl/scripts/Set_Coordinates.tcl:82 +msgid "Offset Value " msgstr "" -#: tcl/mini.tcl:929 -msgid "Tools" +#: tcl/scripts/Set_Coordinates.tcl:83 +msgid "What to Teach" msgstr "" -#: tcl/mini.tcl:951 tcl/mini.tcl:3565 tcl/tklinuxcnc.tcl:732 -#, fuzzy -msgid "Reset" -msgstr "_Retomar" +#: tcl/scripts/Set_Coordinates.tcl:101 +msgid "Set Old" +msgstr "" -#: tcl/mini.tcl:960 -#, fuzzy -msgid "Position Type" -msgstr "Posição:" +#: tcl/scripts/Set_Coordinates.tcl:102 +msgid "Set Zero" +msgstr "" -#: tcl/mini.tcl:962 -#, fuzzy -msgid "Tool Info" -msgstr "Troca de ferramenta" +#: tcl/scripts/Set_Coordinates.tcl:104 +msgid "Write" +msgstr "" -#: tcl/mini.tcl:964 -msgid "Offset Info" +#: tcl/ngcgui.tcl:439 tcl/ngcgui.tcl:846 +msgid "Need non-null file name" msgstr "" -#: tcl/mini.tcl:967 -#, fuzzy -msgid "Show Restart" -msgstr "Mostra _limites" +#: tcl/ngcgui.tcl:483 +msgid "Disallowed use of ngcgui generated file as Subfile" +msgstr "" -#: tcl/mini.tcl:968 -msgid "Hide Restart" +#: tcl/ngcgui.tcl:489 +msgid "" +"marked (not_a_subfile)\n" +"Not intended for use as a subfile" msgstr "" -#: tcl/mini.tcl:970 -msgid "Show Split Right" +#: tcl/ngcgui.tcl:503 tcl/ngcgui.tcl:522 tcl/ngcgui.tcl:544 tcl/ngcgui.tcl:557 +#: tcl/ngcgui.tcl:577 tcl/ngcgui.tcl:682 +msgid "bogus" msgstr "" -#: tcl/mini.tcl:972 -msgid "Show Mode Full" +#: tcl/ngcgui.tcl:505 +msgid "can not include subroutines within ngcgui subfile" msgstr "" -#: tcl/mini.tcl:974 -msgid "Show Popin Full" +#: tcl/ngcgui.tcl:513 +msgid "Multiple subroutines in file not allowed" msgstr "" -#: tcl/mini.tcl:978 -#, fuzzy -msgid "Actual Position" -msgstr "Mostra posição atual" +#: tcl/ngcgui.tcl:524 +msgid "sub label" +msgstr "" -#: tcl/mini.tcl:980 +#: tcl/ngcgui.tcl:524 tcl/ngcgui.tcl:579 #, fuzzy -msgid "Commanded Position" -msgstr "Mostra posição comandada" +msgid "does not match subroutine file name" +msgstr "Número de níveis de subrotina muito grande" -#: tcl/mini.tcl:983 -#, fuzzy -msgid "Machine Position" -msgstr "Mostra posição da máquina" +#: tcl/ngcgui.tcl:539 tcl/ngcgui.tcl:540 +msgid "ignoring M2 after endsub" +msgstr "" -#: tcl/mini.tcl:985 -#, fuzzy -msgid "Relative Position" -msgstr "Mostra posição relativa" +#: tcl/ngcgui.tcl:545 +msgid "file contains lines after subend" +msgstr "" -#: tcl/mini.tcl:988 tcl/tklinuxcnc.tcl:747 -#, fuzzy -msgid "Calibration..." -msgstr "_Calibrar" +#: tcl/ngcgui.tcl:558 +msgid "file contains lines before sub" +msgstr "" -#: tcl/mini.tcl:990 -msgid "HAL Show..." +#: tcl/ngcgui.tcl:579 +msgid "endsub label" msgstr "" -#: tcl/mini.tcl:992 -msgid "HAL Config..." +#: tcl/ngcgui.tcl:684 +msgid "out of sequence positional parameter" msgstr "" -#: tcl/mini.tcl:997 -#, fuzzy -msgid "Program File" -msgstr "Filtro de programa %r falhado" +#: tcl/ngcgui.tcl:684 +msgid "expected" +msgstr "" -#: tcl/mini.tcl:998 -#, fuzzy, tcl-format -msgid "Program file is %s" -msgstr "Filtro de programa %r falhado" +#: tcl/ngcgui.tcl:735 +msgid "no sub found in file" +msgstr "" -#: tcl/mini.tcl:999 -msgid "Editor File" +#: tcl/ngcgui.tcl:738 +msgid "no endsub found in file" msgstr "" -#: tcl/mini.tcl:1000 -#, tcl-format -msgid "Editor file is %s" +#: tcl/ngcgui.tcl:801 +msgid "Cannot find gcmc executable" msgstr "" -#: tcl/mini.tcl:1001 -msgid "Parameter File" +#: tcl/ngcgui.tcl:802 +msgid "Please Install in path" msgstr "" -#: tcl/mini.tcl:1002 -#, tcl-format -msgid "Parameter file is %s" +#: tcl/ngcgui.tcl:810 +msgid "not embedded, deriving outdir from:" msgstr "" -#: tcl/mini.tcl:1003 +#: tcl/ngcgui.tcl:1038 #, fuzzy -msgid "Tool File" +msgid "Choose Files" msgstr "Tipo da ferramenta" -#: tcl/mini.tcl:1004 -#, tcl-format -msgid "Tool file is %s" -msgstr "" - -#: tcl/mini.tcl:1006 +#: tcl/ngcgui.tcl:1178 #, fuzzy -msgid "Active G Codes" -msgstr "Códigos G ativos:" +msgid "Controls" +msgstr "Ctrl-K" -#: tcl/mini.tcl:1007 -#, tcl-format -msgid "" -"Active codes include; \n" -"%s" +#: tcl/ngcgui.tcl:1187 +msgid "Preamble" msgstr "" -#: tcl/mini.tcl:1010 tcl/mini.tcl:2558 tcl/tklinuxcnc.tcl:791 -#, fuzzy -msgid "Help..." -msgstr "_Ajuda" - -#: tcl/mini.tcl:1027 tcl/tklinuxcnc.tcl:890 -msgid "ABORT" +#: tcl/ngcgui.tcl:1200 +msgid "Subfile" msgstr "" -#: tcl/mini.tcl:1038 tcl/mini.tcl:2048 -msgid "CONTINUE" +#: tcl/ngcgui.tcl:1212 +msgid "Postamble" msgstr "" -#: tcl/mini.tcl:1044 tcl/tklinuxcnc.tcl:828 tcl/tklinuxcnc.tcl:2248 -#: src/emc/usr_intf/touchy/touchy.glade:1264 -msgid "MDI" +#: tcl/ngcgui.tcl:1229 +msgid "Retain values on Subfile read" msgstr "" -#: tcl/mini.tcl:1048 tcl/tklinuxcnc.tcl:2239 -msgid "AUTO" -msgstr "" +#: tcl/ngcgui.tcl:1237 +#, fuzzy +msgid "Expand subroutine" +msgstr "Número de níveis de subrotina muito grande" -#: tcl/mini.tcl:1052 tcl/mini.tcl:1812 tcl/tklinuxcnc.tcl:2141 -#: tcl/tklinuxcnc.tcl:2261 -msgid "MANUAL" +#: tcl/ngcgui.tcl:1247 tcl/ngcgui.tcl:2571 +msgid "Autosend" msgstr "" -#: tcl/mini.tcl:1106 +#: tcl/ngcgui.tcl:1257 #, fuzzy -msgid "Tool #:" -msgstr "Ordem das ferramentas:" +msgid "Verbose ngcfile" +msgstr "Arquivos rs274ngc" -#: tcl/mini.tcl:1108 -msgid "Length :" +#: tcl/ngcgui.tcl:1267 tcl/ngcgui.tcl:2393 tcl/ngcgui.tcl:2416 +#: tcl/ngcgui.tcl:2446 +msgid "Create Feature" msgstr "" -#: tcl/mini.tcl:1119 -msgid "Work Offsets: " -msgstr "" +#: tcl/ngcgui.tcl:1273 tcl/ngcgui.tcl:3058 +#, fuzzy +msgid "MakeFile" +msgstr "_Arquivo" -#: tcl/mini.tcl:1121 -msgid "start offsets popup here" +#: tcl/ngcgui.tcl:1274 tcl/ngcgui.tcl:3055 +msgid "Finalize" msgstr "" -#: tcl/mini.tcl:1165 -msgid "start override popup here" +#: tcl/ngcgui.tcl:1291 +msgid "Reread" msgstr "" -#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1669 -msgid "Feed Override:" -msgstr "Velocidade da máquina" - -#: tcl/mini.tcl:1180 -msgid "-- MESSAGES --" +#: tcl/ngcgui.tcl:1310 +msgid "SendFileToAxis" msgstr "" -#: tcl/mini.tcl:1230 -msgid "toggleView's not doin nothin yet" +#: tcl/ngcgui.tcl:1353 +msgid "Unrecoverable problem" msgstr "" -#: tcl/mini.tcl:1282 -msgid "Can't set zero with a tool offset active so I issued G49 to cancel it." +#: tcl/ngcgui.tcl:1431 +msgid "Postamble file" msgstr "" -#: tcl/mini.tcl:1346 -#, tcl-format -msgid "Can't update the var file while machine is in auto and %s." +#: tcl/ngcgui.tcl:1481 +msgid "Subroutine file" msgstr "" -#: tcl/mini.tcl:1400 tcl/tklinuxcnc.tcl:1227 -#, fuzzy -msgid "override limits" -msgstr "Ultrapassar limites" - -#: tcl/mini.tcl:1405 tcl/tklinuxcnc.tcl:1263 +#: tcl/ngcgui.tcl:1545 #, fuzzy -msgid "home" -msgstr "Home" +msgid "Positional Parameters" +msgstr " Parâ_metros" -#: tcl/mini.tcl:1426 -msgid "DEFAULT" +#: tcl/ngcgui.tcl:1694 +msgid "No Subfile specified" msgstr "" -#: tcl/mini.tcl:1427 +#: tcl/ngcgui.tcl:1696 #, fuzzy -msgid "Speed:" -msgstr "Velocidade de Jog" +msgid "No parameters yet" +msgstr " Parâ_metros" -#: tcl/mini.tcl:1430 -msgid "RAPID" +#: tcl/ngcgui.tcl:1705 +msgid "Missing value for parm" msgstr "" -#: tcl/mini.tcl:1447 tcl/tklinuxcnc.tcl:1391 -#, fuzzy -msgid "Set Jog Speed" -msgstr "Velocidade de Jog" - -#: tcl/mini.tcl:1453 tcl/tklinuxcnc.tcl:1404 -#, fuzzy -msgid "Set jog speed:" -msgstr "Aumenta velocidade de Jog" - -#: tcl/mini.tcl:1511 -msgid "JOG X +" +#: tcl/ngcgui.tcl:1726 +msgid "Output file" msgstr "" -#: tcl/mini.tcl:1512 -msgid "JOG X -" +#: tcl/ngcgui.tcl:1841 +msgid "Multiple Tabs with Features" msgstr "" -#: tcl/mini.tcl:1516 -#, fuzzy -msgid "increment" -msgstr "Seleciona incremento de Jog" - -#: tcl/mini.tcl:1518 tcl/tklinuxcnc.tcl:602 tcl/tklinuxcnc.tcl:1249 -#: tcl/tklinuxcnc.tcl:1253 -#, fuzzy -msgid "continuous" -msgstr "Contínuo" - -#: tcl/mini.tcl:1520 -msgid "" -"A\n" -"L\n" -"L\n" -"\n" -"Z\n" -"E\n" -"R\n" -"O" +#: tcl/ngcgui.tcl:1842 +msgid "Finalize all Tabs?" msgstr "" -#: tcl/mini.tcl:1588 src/emc/usr_intf/touchy/touchy.glade:1422 -#, fuzzy -msgid "Spindle Forward" -msgstr "Freio do spindle ativado" - -#: tcl/mini.tcl:1589 src/emc/usr_intf/touchy/touchy.glade:1433 -#, fuzzy -msgid "Spindle Reverse" -msgstr "Freio do spindle ativado" +#: tcl/ngcgui.tcl:1842 +msgid "Order" +msgstr "" -#: tcl/mini.tcl:1590 tcl/tklinuxcnc.tcl:871 -#, fuzzy -msgid "Spindle off" -msgstr "Freio do spindle desativado" +#: tcl/ngcgui.tcl:1844 +msgid "No, just this page" +msgstr "" -#: tcl/mini.tcl:1592 src/emc/usr_intf/touchy/touchy.glade:1479 -#, fuzzy -msgid "Spindle Slower" -msgstr "Reduz a rotação do spindle [F11]" +#: tcl/ngcgui.tcl:1858 +msgid "Axis is not responding" +msgstr "" -#: tcl/mini.tcl:1596 src/emc/usr_intf/touchy/touchy.glade:1464 -#, fuzzy -msgid "Spindle Faster" -msgstr "Aumenta a rotação do spindle [F12]" +#: tcl/ngcgui.tcl:1859 +msgid "Error: " +msgstr "" -#: tcl/mini.tcl:1632 tcl/tklinuxcnc.tcl:1620 -msgid "MDI:" +#: tcl/ngcgui.tcl:1861 +msgid "Autosend disabled, Ctrl-A toggles autosend" msgstr "" -#: tcl/mini.tcl:1669 tcl/tklinuxcnc.tcl:1658 -#: src/emc/usr_intf/stepconf/stepconf.glade:4403 -#: src/emc/usr_intf/pncconf/pncconf.glade:60509 -#: src/emc/usr_intf/pncconf/pncconf.glade:61603 -#: src/emc/usr_intf/pncconf/pncconf.glade:62696 -#: src/emc/usr_intf/pncconf/pncconf.glade:63789 -#: src/emc/usr_intf/pncconf/pncconf.glade:64889 -msgid "Run" +#: tcl/ngcgui.tcl:1863 +msgid "File saving enabled -- Finalize to save" msgstr "" -#: tcl/mini.tcl:1671 tcl/tklinuxcnc.tcl:1659 -#: src/emc/usr_intf/pncconf/pncconf.glade:60574 -#: src/emc/usr_intf/pncconf/pncconf.glade:61668 -#: src/emc/usr_intf/pncconf/pncconf.glade:62761 -#: src/emc/usr_intf/pncconf/pncconf.glade:63854 -#, fuzzy -msgid "Pause" -msgstr "_Pausar" +#: tcl/ngcgui.tcl:1879 +msgid "Require .ngc suffix for filename" +msgstr "" -#: tcl/mini.tcl:1673 tcl/tklinuxcnc.tcl:1660 -#, fuzzy -msgid "Resume" -msgstr "_Retomar" +#: tcl/ngcgui.tcl:1889 +msgid "Disallowed overwrite of" +msgstr "" -#: tcl/mini.tcl:1675 tcl/tklinuxcnc.tcl:1661 -#, fuzzy -msgid "Step" -msgstr "_Passo" +#: tcl/ngcgui.tcl:1913 +msgid "FEATURE" +msgstr "" -#: tcl/mini.tcl:1677 tcl/tklinuxcnc.tcl:1662 -msgid "Verify" +#: tcl/ngcgui.tcl:1920 +msgid "feature line added" msgstr "" -#: tcl/mini.tcl:1698 -msgid "RESTART LINE" +#: tcl/ngcgui.tcl:1932 +msgid "line added" msgstr "" -#: tcl/mini.tcl:1699 -#, fuzzy -msgid "Back" -msgstr "Freio" +#: tcl/ngcgui.tcl:1932 +msgid "activated" +msgstr "" -#: tcl/mini.tcl:1700 -msgid "Ahead" +#: tcl/ngcgui.tcl:1934 +msgid "restores" msgstr "" -#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1221 -msgid "Restart" +#: tcl/ngcgui.tcl:1973 +msgid "NOTREACHED mode" msgstr "" -#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 -#: tcl/tklinuxcnc.tcl:465 src/emc/usr_intf/axis/scripts/axis.py:1885 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:754 -msgid "All files" -msgstr "Todos os arquivos" +#: tcl/ngcgui.tcl:1989 +msgid "Positional parameters for" +msgstr "" -#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 -#: tcl/tklinuxcnc.tcl:466 +#: tcl/ngcgui.tcl:1997 #, fuzzy -msgid "Text files" +msgid "expanded file" msgstr "Todos os arquivos" -#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 -#: tcl/tklinuxcnc.tcl:467 +#: tcl/ngcgui.tcl:2011 #, fuzzy -msgid "NC files" -msgstr "Todos os arquivos" +msgid "call subroutine file" +msgstr "Número de níveis de subrotina muito grande" -#: tcl/mini.tcl:1753 -msgid "" -"The interpreter is running. \n" -" Pressing OK will abort and load the new program" +#: tcl/ngcgui.tcl:2394 +msgid "Enter parms for 1st feature" msgstr "" -#: tcl/mini.tcl:1886 -#, fuzzy -msgid "ESTOPPED" -msgstr "PARADA DE EMERGÊNCIA" - -#: tcl/mini.tcl:1889 +#: tcl/ngcgui.tcl:2401 #, fuzzy -msgid "ESTOP PUSH" -msgstr "PARADA DE EMERGÊNCIA" +msgid "New Outfile" +msgstr "Todos os arquivos" -#: tcl/mini.tcl:1892 tcl/tklinuxcnc.tcl:2233 -#, fuzzy -msgid "ESTOP RESET" -msgstr "PARADA DE EMERGÊNCIA" +#: tcl/ngcgui.tcl:2403 +msgid "Ready to make New Outfile" +msgstr "" -#: tcl/mini.tcl:1897 tcl/tklinuxcnc.tcl:2298 -msgid "SPINDLE FORWARD" +#: tcl/ngcgui.tcl:2419 tcl/ngcgui.tcl:2452 +msgid "Enter parms for feature " msgstr "" -#: tcl/mini.tcl:1899 tcl/tklinuxcnc.tcl:2300 -msgid "SPINDLE REVERSE" +#: tcl/ngcgui.tcl:2439 +msgid "feature" msgstr "" -#: tcl/mini.tcl:1901 tcl/tklinuxcnc.tcl:2302 -msgid "SPINDLE OFF" +#: tcl/ngcgui.tcl:2444 +msgid "Create Next" msgstr "" -#: tcl/mini.tcl:1903 tcl/tklinuxcnc.tcl:2304 -msgid "SPINDLE INCREASE" +#: tcl/ngcgui.tcl:2449 +msgid "Created feature " msgstr "" -#: tcl/mini.tcl:1905 tcl/tklinuxcnc.tcl:2306 -msgid "SPINDLE DECREASE" +#: tcl/ngcgui.tcl:2473 +#, fuzzy +msgid "option" +msgstr "Posição:" + +#: tcl/ngcgui.tcl:2484 +#, fuzzy +msgid "Missing parameters" +msgstr " Parâ_metros" + +#: tcl/ngcgui.tcl:2488 +msgid "Parse Error" msgstr "" -#: tcl/mini.tcl:1907 tcl/tklinuxcnc.tcl:2308 -msgid "SPINDLE ?" +#: tcl/ngcgui.tcl:2495 +msgid "Null Preamble" msgstr "" -#: tcl/mini.tcl:1911 tcl/tklinuxcnc.tcl:2312 -msgid "BRAKE ON" +#: tcl/ngcgui.tcl:2500 +msgid "Read Preamble" msgstr "" -#: tcl/mini.tcl:1913 tcl/tklinuxcnc.tcl:2314 -msgid "BRAKE OFF" +#: tcl/ngcgui.tcl:2504 +msgid "Preamble Error" msgstr "" -#: tcl/mini.tcl:1915 tcl/tklinuxcnc.tcl:2316 -msgid "BRAKE ?" +#: tcl/ngcgui.tcl:2509 +msgid "Null Postamble" msgstr "" -#: tcl/mini.tcl:1919 tcl/tklinuxcnc.tcl:2274 -msgid "MIST ON" +#: tcl/ngcgui.tcl:2514 +msgid "Read Postamble" msgstr "" -#: tcl/mini.tcl:1921 tcl/tklinuxcnc.tcl:2276 -msgid "MIST OFF" +#: tcl/ngcgui.tcl:2518 +msgid "Postamble Error" msgstr "" -#: tcl/mini.tcl:1923 tcl/tklinuxcnc.tcl:2278 -msgid "MIST ?" +#: tcl/ngcgui.tcl:2523 +msgid "Read Subfile" msgstr "" -#: tcl/mini.tcl:1927 tcl/tklinuxcnc.tcl:2282 -msgid "FLOOD ON" +#: tcl/ngcgui.tcl:2528 +msgid "Write Error" msgstr "" -#: tcl/mini.tcl:1929 tcl/tklinuxcnc.tcl:2284 -msgid "FLOOD OFF" +#: tcl/ngcgui.tcl:2532 +msgid "Outfile set" msgstr "" -#: tcl/mini.tcl:1931 tcl/tklinuxcnc.tcl:2286 -msgid "FLOOD ?" +#: tcl/ngcgui.tcl:2537 +msgid "Finished" msgstr "" -#: tcl/mini.tcl:2052 -msgid "FEEDHOLD" +#: tcl/ngcgui.tcl:2542 +#, fuzzy +msgid "Canceled" +msgstr "Cancelar" + +#: tcl/ngcgui.tcl:2548 +msgid "Sent" msgstr "" -#: tcl/mini.tcl:2124 -msgid "" -"TOOL SETUP \n" -" Click or tab to edit. Press enter to return to keyboard machine control." +#: tcl/ngcgui.tcl:2552 +#, fuzzy +msgid "SendFileToAxis failed" +msgstr "Filtro de programa %r falhado" + +#: tcl/ngcgui.tcl:2556 +msgid "Ctrl-k for Key bindings" msgstr "" -#: tcl/mini.tcl:2130 -msgid " TOOL NUMBER " +#: tcl/ngcgui.tcl:2560 +msgid "Expand sub" msgstr "" -#: tcl/mini.tcl:2131 -msgid " LENGTH " +#: tcl/ngcgui.tcl:2564 +msgid "Retain values" msgstr "" -#: tcl/mini.tcl:2132 -msgid " DIAMETER " +#: tcl/ngcgui.tcl:2568 +msgid "Verbose" msgstr "" -#: tcl/mini.tcl:2133 -msgid " COMMENT " +#: tcl/ngcgui.tcl:2574 +msgid "Finalize Canceled" msgstr "" -#: tcl/mini.tcl:2188 -msgid "Add Extra Tool" +#: tcl/ngcgui.tcl:2711 tcl/ngcgui.tcl:2867 +msgid "Dismiss" msgstr "" -#: tcl/mini.tcl:2189 -msgid "Remove Last Tool" +#: tcl/ngcgui.tcl:2716 +msgid "ngcgui Error" msgstr "" -#: tcl/mini.tcl:2217 tcl/mini.tcl:2253 -#, tcl-format -msgid "Can't update the tool file while machine is in auto and %s." +#: tcl/ngcgui.tcl:2739 +msgid "Declining support for tk send bug in ngcgui" msgstr "" -#: tcl/mini.tcl:2229 -msgid "This is not a good number." +#: tcl/ngcgui.tcl:2740 +msgid "You should upgrade linuxcnc to >= linuxcnc2.5" msgstr "" -#: tcl/mini.tcl:2293 -msgid "" -"COORDINATE SYSTEM SETUP \n" -"\n" -" Click value to edit with keyboard. Press enter to return to keyboard " -"control of machine. \n" -" " +#: tcl/ngcgui.tcl:2784 +msgid "pre2.4_send_file_to_axis:error" msgstr "" -#: tcl/mini.tcl:2320 tcl/scripts/Set_Coordinates.tcl:80 +#: tcl/ngcgui.tcl:2978 share/axis/tcl/axis.tcl:2032 #, fuzzy -msgid "Axis " -msgstr "Eixo:" +msgid "OFF" +msgstr "OFF" -#: tcl/mini.tcl:2321 -msgid "Value " +#: tcl/ngcgui.tcl:2981 +#, fuzzy +msgid "Toggle autosend" +msgstr "Refrigeração líquida" + +#: tcl/ngcgui.tcl:2982 tcl/ngcgui.tcl:3189 +msgid "Clear entries" msgstr "" -#: tcl/mini.tcl:2326 tcl/scripts/Set_Coordinates.tcl:91 -msgid "Teach" +#: tcl/ngcgui.tcl:2983 +msgid "Set entries to default values" msgstr "" -#: tcl/mini.tcl:2334 -msgid "Write And Load File " +#: tcl/ngcgui.tcl:2984 tcl/ngcgui.tcl:2998 tcl/ngcgui.tcl:3000 +msgid "Open editor specified by" msgstr "" -#: tcl/mini.tcl:2336 -msgid "Offset By Radius" +#: tcl/ngcgui.tcl:2985 +msgid "on last outfile" msgstr "" -#: tcl/mini.tcl:2337 -msgid "Offset By Length" +#: tcl/ngcgui.tcl:2986 +#, fuzzy +msgid "toggle expand subroutines" +msgstr "Número de níveis de subrotina muito grande" + +#: tcl/ngcgui.tcl:2987 +msgid "Create feature" msgstr "" -#: tcl/mini.tcl:2342 -msgid "Subtract" +#: tcl/ngcgui.tcl:2988 +msgid "Finalize (AUTO send is" msgstr "" -#: tcl/mini.tcl:2344 -msgid "Add" +#: tcl/ngcgui.tcl:2989 +msgid "Show key bindings" msgstr "" -#: tcl/mini.tcl:2366 -msgid "Zero All G54" +#: tcl/ngcgui.tcl:2990 +msgid "Restart (cancel pending)" msgstr "" -#: tcl/mini.tcl:2367 -msgid "Zero All G55" +#: tcl/ngcgui.tcl:2991 +msgid "(re)Read Preamble" msgstr "" -#: tcl/mini.tcl:2368 -msgid "Zero All G56" +#: tcl/ngcgui.tcl:2992 +msgid "(re)Read Postamble" msgstr "" -#: tcl/mini.tcl:2369 -msgid "Zero All G57" +#: tcl/ngcgui.tcl:2993 +msgid "(re)Read Subfile" +msgstr "" + +#: tcl/ngcgui.tcl:2994 +msgid "toggle retain values" msgstr "" -#: tcl/mini.tcl:2370 -msgid "Zero All G58" +#: tcl/ngcgui.tcl:2995 +msgid "toggle output file verbosity" msgstr "" -#: tcl/mini.tcl:2371 -msgid "Zero All G59" -msgstr "" +#: tcl/ngcgui.tcl:2996 +#, fuzzy +msgid "Show status" +msgstr "Mostra _limites" -#: tcl/mini.tcl:2372 -msgid "Zero All G59.1" +#: tcl/ngcgui.tcl:2997 +msgid "Show full status (debug info)" msgstr "" -#: tcl/mini.tcl:2373 -msgid "Zero All G59.2" +#: tcl/ngcgui.tcl:2999 +#, fuzzy +msgid "on current subfile" +msgstr "Recarrega Código G [Control-R]" + +#: tcl/ngcgui.tcl:3001 +msgid "on current preamble" msgstr "" -#: tcl/mini.tcl:2374 -msgid "Zero All G59.3" +#: tcl/ngcgui.tcl:3004 +msgid " Escape Return to Preview page" msgstr "" -#: tcl/mini.tcl:2375 -msgid "Zero All ????" +#: tcl/ngcgui.tcl:3081 +msgid "Editing requires setting for environmental variable VISUAL" msgstr "" -#: tcl/mini.tcl:2493 -msgid "Modified..." +#: tcl/ngcgui.tcl:3082 +msgid "Trying gedit" msgstr "" -#: tcl/mini.tcl:2538 -msgid "Save and Load" +#: tcl/ngcgui.tcl:3095 +#, fuzzy +msgid "No file available for editing yet" +msgstr "Valor não-inteiro onde deveria haver um inteiro" + +#: tcl/ngcgui.tcl:3104 tcl/ngcgui.tcl:3113 +#, fuzzy +msgid "No file available for editing" +msgstr "Valor não-inteiro onde deveria haver um inteiro" + +#: tcl/ngcgui.tcl:3130 +msgid "Status items" msgstr "" -#: tcl/mini.tcl:2540 -msgid "Undo" +#: tcl/ngcgui.tcl:3143 +msgid "All-page opt items" msgstr "" -#: tcl/mini.tcl:2541 -msgid "Redo" +#: tcl/ngcgui.tcl:3149 +msgid "any-items" msgstr "" -#: tcl/mini.tcl:2546 -msgid "Delete" +#: tcl/ngcgui.tcl:3182 +msgid "Set defaults" msgstr "" -#: tcl/mini.tcl:2551 -msgid "Replace..." +#: tcl/ngcgui.tcl:3257 +msgid "not writable" msgstr "" -#: tcl/mini.tcl:2664 -msgid "Next Number: " +#: tcl/ngcgui.tcl:3396 tcl/ngcgui.tcl:3577 +msgid "new" msgstr "" -#: tcl/mini.tcl:2765 -msgid "Basic Help" +#: tcl/ngcgui.tcl:3422 +msgid "Open a new Subfile" msgstr "" -#: tcl/mini.tcl:2765 -msgid "" -"This is a simple ASCII editor like many others.\n" -"\n" -"Ctrl+O Open\n" -"Ctrl+S Save\n" -"Ctrl+Z Undo\n" -"Ctrl+Y Redo\n" -"Ctrl+X Cut\n" -"Ctrl+C Copy\n" -"Ctrl+V Paste\n" -"Del Delete\n" -"Ctrl+A Select All\n" -"\n" -"Ctrl+F Find\n" -"Ctrl+R Replace " +#: tcl/ngcgui.tcl:3568 +msgid "remove" msgstr "" -#: tcl/mini.tcl:2785 -msgid "" -"tknotepad by Joseph Acosta. \n" -"\n" -" Modified for EMC by: Paul Corner " +#: tcl/ngcgui.tcl:3590 tcl/ngcgui.tcl:3596 +msgid "move" msgstr "" -#: tcl/mini.tcl:2793 -msgid "" -"The contents of this file may have changed, do you wish to to save your " -"changes?" +#: tcl/ngcgui.tcl:3704 src/emc/usr_intf/pncconf/pncconf.py:7374 +#: src/emc/usr_intf/pncconf/pncconf.py:7485 +#: src/emc/usr_intf/pncconf/pncconf.py:7650 +msgid "Custom" msgstr "" -#: tcl/mini.tcl:2794 -msgid "New Confirm?" +#: tcl/ngcgui.tcl:3730 +msgid "Problem creating page" msgstr "" -#: tcl/mini.tcl:2928 -msgid "Print Setup" +#: tcl/ngcgui.tcl:3737 +msgid "entrykeybindings not available" msgstr "" -#: tcl/mini.tcl:2932 -#, fuzzy -msgid "Print Command: " -msgstr "Comando MDI" +#: tcl/ngcgui.tcl:3781 +msgid "Found multiple matches for" +msgstr "" -#: tcl/mini.tcl:3095 -msgid "Find what:" +#: tcl/ngcgui.tcl:3782 +msgid "using path" msgstr "" -#: tcl/mini.tcl:3101 -msgid "Replace with:" +#: tcl/ngcgui.tcl:3790 src/emc/usr_intf/axis/scripts/axis.py:2440 +#: src/emc/usr_intf/axis/scripts/axis.py:2453 +msgid "Warning" msgstr "" -#: tcl/mini.tcl:3109 -msgid "Find Next" +#: tcl/ngcgui.tcl:3791 +msgid "File absolute path specifier conflicts with searchpath result" msgstr "" -#: tcl/mini.tcl:3112 +#: tcl/ngcgui.tcl:3792 #, fuzzy -msgid "Replace" -msgstr "Relativa" +msgid "Absolute Specifier" +msgstr "Sobre o AXIS" -#: tcl/mini.tcl:3120 -msgid "Up" +#: tcl/ngcgui.tcl:3793 +msgid "Using Search Result" msgstr "" -#: tcl/mini.tcl:3121 -msgid "Down" +#: tcl/ngcgui.tcl:3798 +msgid "File not in Search Path" msgstr "" -#: tcl/mini.tcl:3124 -msgid "Match case" +#: tcl/ngcgui.tcl:3800 +msgid "Must be in search path" msgstr "" -#: tcl/mini.tcl:3569 -msgid "rot-x" +#: tcl/ngcgui.tcl:3802 +msgid "(File found -- not in search path)" msgstr "" -#: tcl/mini.tcl:3579 -msgid "rot-y" +#: tcl/ngcgui.tcl:3804 +msgid "Current directory" msgstr "" -#: tcl/mini.tcl:3589 -msgid "rot-z" +#: tcl/ngcgui.tcl:3805 +msgid "Search path" msgstr "" -#: tcl/mini.tcl:3599 -msgid "zoom" +#: tcl/ngcgui.tcl:3815 +msgid "Check setting for" msgstr "" -#: tcl/mini.tcl:3655 +#: tcl/ngcgui.tcl:3816 #, fuzzy -msgid "TEST" -msgstr "PARADA DE EMERGÊNCIA" +msgid "in ini file" +msgstr "AXIS (Sem arquivo)" -#: tcl/mini.tcl:3699 -msgid "Hide Setup" +#: tcl/ngcgui.tcl:3817 +msgid "(Restart required after fixing ini file)" msgstr "" -#: tcl/mini.tcl:3703 +#: tcl/ngcgui.tcl:3832 #, fuzzy -msgid "Show Setup" -msgstr "Mostra o estado do EMC" +msgid "Try to Continue" +msgstr "Continuar" -#: tcl/show_errors.tcl:41 -msgid "LinuxCNC Errors" -msgstr "" +#: tcl/ngcgui.tcl:3837 +#, fuzzy +msgid "Ngcgui Configuration File Not Found" +msgstr "Mostrar _Configuração Hal" -#: tcl/show_errors.tcl:44 -msgid "" -"LinuxCNC terminated with an error. When reporting problems, please include " -"all the information below in your message." +#: tcl/ngcgui.tcl:3917 +msgid "Missing Tcl Package Img" msgstr "" -#: tcl/show_errors.tcl:69 tcl/scripts/Set_Coordinates.tcl:103 -msgid "Close" +#: tcl/ngcgui.tcl:3918 +msgid "Please install Img" msgstr "" -#: tcl/tklinuxcnc.tcl:154 tcl/tklinuxcnc.tcl:181 -msgid "Set Run Mark" -msgstr "" +#: tcl/ngcgui.tcl:4122 +#, fuzzy +msgid "ini file" +msgstr "AXIS (Sem arquivo)" -#: tcl/tklinuxcnc.tcl:156 -#, tcl-format -msgid "Set run mark at line %s?" +#: tcl/ngcgui.tcl:4131 +msgid "not found" msgstr "" -#: tcl/tklinuxcnc.tcl:176 tcl/tklinuxcnc.tcl:204 -msgid "untitled" +#: tcl/ngcgui_ttt.tcl:67 +msgid "found truetype-tracer v4 -OK" msgstr "" -#: tcl/tklinuxcnc.tcl:212 -msgid "Load Parameter File" +#: tcl/ngcgui_ttt.tcl:70 +msgid "Note truetype-tracer v4 is required" msgstr "" -#: tcl/tklinuxcnc.tcl:261 -msgid "LinuxCNC Diagnostics" +#: tcl/ngcgui_ttt.tcl:71 +msgid "Note: truetype-tracer v4 is required" msgstr "" -#: tcl/tklinuxcnc.tcl:263 -msgid "Task" +#: tcl/ngcgui_ttt.tcl:81 +msgid "ngcgui_app.tcl must be loaded before" msgstr "" -#: tcl/tklinuxcnc.tcl:265 tcl/tklinuxcnc.tcl:288 tcl/tklinuxcnc.tcl:311 -msgid "Heartbeat:" +#: tcl/ngcgui_ttt.tcl:89 +msgid "Create a subroutine file from truetype-tracer (V4 reqd)" msgstr "" -#: tcl/tklinuxcnc.tcl:268 tcl/tklinuxcnc.tcl:291 tcl/tklinuxcnc.tcl:314 -#, fuzzy -msgid "Command:" -msgstr "Comandada" - -#: tcl/tklinuxcnc.tcl:271 tcl/tklinuxcnc.tcl:294 tcl/tklinuxcnc.tcl:317 -#, fuzzy -msgid "Command #:" -msgstr "Comandada" - -#: tcl/tklinuxcnc.tcl:274 tcl/tklinuxcnc.tcl:297 tcl/tklinuxcnc.tcl:320 -msgid "Status:" +#: tcl/ngcgui_ttt.tcl:102 tcl/ngcgui_ttt.tcl:115 +msgid "problem with" msgstr "" -#: tcl/tklinuxcnc.tcl:286 -msgid "Io" +#: tcl/ngcgui_ttt.tcl:106 +msgid "No entry for" msgstr "" -#: tcl/tklinuxcnc.tcl:309 -#, fuzzy -msgid "Motion" -msgstr "Posição:" +#: tcl/ngcgui_ttt.tcl:109 +msgid "wrong version of truetype-tracer" +msgstr "" -#: tcl/tklinuxcnc.tcl:350 -msgid "About TkLinuxCNC" +#: tcl/ngcgui_ttt.tcl:125 +msgid "not writable, using" msgstr "" -#: tcl/tklinuxcnc.tcl:351 -msgid "" -"TkLinuxcnc\n" -"\n" -"Tcl/Tk GUI for LinuxCNC\n" -"\n" -"GPL Version 2 (2012)" +#: tcl/ngcgui_ttt.tcl:125 +msgid "and setting expandsub" msgstr "" -#: tcl/tklinuxcnc.tcl:399 -msgid "Set Tool Offset" +#: tcl/ngcgui_ttt.tcl:161 +msgid "Text" msgstr "" -#: tcl/tklinuxcnc.tcl:404 tcl/tklinuxcnc.tcl:905 +#: tcl/ngcgui_ttt.tcl:171 #, fuzzy -msgid "Tool:" -msgstr "Ordem das ferramentas:" +msgid "Linescale" +msgstr "Eixo:" -#: tcl/tklinuxcnc.tcl:722 -msgid "Edit..." +#: tcl/ngcgui_ttt.tcl:177 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3583 +msgid "none" msgstr "" -#: tcl/tklinuxcnc.tcl:727 -msgid "Tool Table Editor..." +#: tcl/ngcgui_ttt.tcl:192 +msgid "Subdiv" msgstr "" -#: tcl/tklinuxcnc.tcl:730 src/emc/usr_intf/touchy/touchy.glade:1383 -#, fuzzy -msgid "Reload Tool Table" -msgstr "Recarrega.lista de ferramentas" - -#: tcl/tklinuxcnc.tcl:740 -msgid "Offsets and Variables..." +#: tcl/ngcgui_ttt.tcl:199 +msgid "default" msgstr "" -#: tcl/tklinuxcnc.tcl:741 -msgid "Diagnostics..." -msgstr "" +#: tcl/ngcgui_ttt.tcl:239 +#, fuzzy +msgid "Mode" +msgstr "Modo execução" -#: tcl/tklinuxcnc.tcl:742 -msgid "Backplot..." -msgstr "" +#: tcl/ngcgui_ttt.tcl:247 +#, fuzzy +msgid "normal" +msgstr "Normal" -#: tcl/tklinuxcnc.tcl:748 -msgid "Testing..." +#: tcl/ngcgui_ttt.tcl:248 +msgid "date" msgstr "" -#: tcl/tklinuxcnc.tcl:749 -msgid "Debug..." +#: tcl/ngcgui_ttt.tcl:249 +msgid "fontname" msgstr "" -#: tcl/tklinuxcnc.tcl:750 -msgid "Font..." +#: tcl/ngcgui_ttt.tcl:262 +msgid "Switches" msgstr "" -#: tcl/tklinuxcnc.tcl:754 src/emc/usr_intf/axis/scripts/image-to-gcode.py:665 -msgid "Units" -msgstr "Unidades" - -#: tcl/tklinuxcnc.tcl:755 -msgid "auto" +#: tcl/ngcgui_ttt.tcl:270 +msgid "Unicode" msgstr "" -#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8512 -msgid "inches" -msgstr "" +#: tcl/ngcgui_ttt.tcl:275 +#, fuzzy +msgid "Allow Rotation" +msgstr "Posição:" -#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1556 -#: src/emc/usr_intf/axis/scripts/axis.py:1726 -#: src/emc/usr_intf/touchy/touchy.glade:3301 -#: src/emc/usr_intf/stepconf/stepconf.py:1685 -#: src/emc/usr_intf/stepconf/stepconf.py:2221 -#: src/emc/usr_intf/stepconf/stepconf.glade:4357 -#: src/emc/usr_intf/pncconf/pncconf.py:8508 -#: src/emc/usr_intf/pncconf/pncconf.glade:2229 -#: src/emc/usr_intf/pncconf/pncconf.glade:2394 -#: src/emc/usr_intf/pncconf/pncconf.glade:57616 -#: src/emc/usr_intf/pncconf/pncconf.glade:57688 -#: src/emc/usr_intf/pncconf/pncconf.glade:60646 -#: src/emc/usr_intf/pncconf/pncconf.glade:61739 -#: src/emc/usr_intf/pncconf/pncconf.glade:62832 -#: src/emc/usr_intf/pncconf/pncconf.glade:63925 -#: src/emc/usr_intf/pncconf/pncconf.glade:65091 -msgid "mm" +#: tcl/ngcgui_ttt.tcl:295 +msgid "Make ngcgui-compatible subfile and new tab page" msgstr "" -#: tcl/tklinuxcnc.tcl:758 -msgid "cm" +#: tcl/ngcgui_ttt.tcl:353 +msgid "Null text" msgstr "" -#: tcl/tklinuxcnc.tcl:762 -msgid "Utilities" +#: tcl/ngcgui_ttt.tcl:384 +msgid "Using truetype-tracer default font" msgstr "" -#: tcl/tklinuxcnc.tcl:763 +#: tcl/ngcgui_ttt.tcl:388 #, fuzzy -msgid "Hal Scope" -msgstr "Ha_lScope" +msgid "no such file" +msgstr "AXIS (Sem arquivo)" -#: tcl/tklinuxcnc.tcl:785 -msgid "HAL Show" -msgstr "" +#: tcl/ngcgui_ttt.tcl:393 +#, fuzzy +msgid "file not readable" +msgstr "Arquivo não aberto" -#: tcl/tklinuxcnc.tcl:786 -msgid "HAL Config" +#: tcl/ngcgui_ttt.tcl:507 +msgid "Creating new tab page" msgstr "" -#: tcl/tklinuxcnc.tcl:792 -msgid "Balloon help" +#: tcl/ngcgui_app.tcl:25 +msgid "" +"requires command inifindall\n" +"from axis.py (LinuxCNC 2.5) or" msgstr "" -#: tcl/tklinuxcnc.tcl:815 -msgid "Estop on" +#: tcl/ngcgui_app.tcl:55 +msgid "Substituting" msgstr "" -#: tcl/tklinuxcnc.tcl:816 -msgid "Estop off" +#: tcl/ngcgui_app.tcl:55 +msgid "for" msgstr "" -#: tcl/tklinuxcnc.tcl:818 +#: tcl/ngcgui_app.tcl:59 #, fuzzy -msgid "Machine on" -msgstr "Máquina" +msgid "not readable" +msgstr "Arquivo não aberto" -#: tcl/tklinuxcnc.tcl:819 -#, fuzzy -msgid "Machine off" -msgstr "Máquina" +#: tcl/ngcgui_app.tcl:65 tcl/ngcgui_app.tcl:68 +msgid "Unexpected: multiple startups for ngcgui" +msgstr "" -#: tcl/tklinuxcnc.tcl:826 src/emc/usr_intf/touchy/touchy.glade:1561 -#, fuzzy -msgid "Manual" -msgstr "Controle manual" +#: tcl/ngcgui_app.tcl:66 +msgid "LinuxCNC" +msgstr "" -#: tcl/tklinuxcnc.tcl:835 -#, fuzzy -msgid "Mist on" -msgstr "Ar/Névoa" +#: tcl/ngcgui_app.tcl:67 +msgid "for linuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" +msgstr "" -#: tcl/tklinuxcnc.tcl:836 +#: tcl/ngcgui_app.tcl:86 #, fuzzy -msgid "Mist off" -msgstr "Ar/Névoa" +msgid "LinuxCNC version" +msgstr "Mostrar _Configuração Hal" -#: tcl/tklinuxcnc.tcl:843 -#, fuzzy -msgid "Flood on" -msgstr "Líquido" +#: tcl/ngcgui_app.tcl:87 +msgid "for LinuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" +msgstr "" -#: tcl/tklinuxcnc.tcl:844 -#, fuzzy -msgid "Flood off" -msgstr "Líquido" +#: tcl/tooledit.tcl:65 +msgid "Problem reading ~/.tooleditrc" +msgstr "" -#: tcl/tklinuxcnc.tcl:851 -msgid "Lube on" +#: tcl/tooledit.tcl:82 +#, tcl-format +msgid "Note: Ignoring duplicate column name: %s" msgstr "" -#: tcl/tklinuxcnc.tcl:852 -msgid "Lube off" +#: tcl/tooledit.tcl:93 +#, fuzzy, tcl-format +msgid "Unknown column: %s" +msgstr "Ferramenta desconhecida %d" + +#: tcl/tooledit.tcl:210 tcl/tooledit.tcl:213 tcl/tooledit.tcl:598 +#: tcl/tooledit.tcl:599 tcl/tooledit.tcl:1032 +msgid "NEW" msgstr "" -#: tcl/tklinuxcnc.tcl:869 -#, fuzzy -msgid "Spindle forward" -msgstr "Freio do spindle ativado" +#: tcl/tooledit.tcl:232 +#, tcl-format +msgid "%s must be a number" +msgstr "" -#: tcl/tklinuxcnc.tcl:870 -#, fuzzy -msgid "Spindle reverse" -msgstr "Freio do spindle ativado" +#: tcl/tooledit.tcl:241 +#, fuzzy, tcl-format +msgid "filename: <%s> not readable" +msgstr "Arquivo não aberto" -#: tcl/tklinuxcnc.tcl:885 -#, fuzzy -msgid "Brake on" -msgstr "Freio" +#: tcl/tooledit.tcl:245 +#, fuzzy, tcl-format +msgid "filename: <%s> not writable" +msgstr "Arquivo não aberto" -#: tcl/tklinuxcnc.tcl:886 -#, fuzzy -msgid "Brake off" -msgstr "Freio" +#: tcl/tooledit.tcl:250 +#, tcl-format +msgid "directory: <%s> not writable" +msgstr "" -#: tcl/tklinuxcnc.tcl:907 -msgid "Offset:" +#: tcl/tooledit.tcl:294 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, value <%s> is not a number" msgstr "" -#: tcl/tklinuxcnc.tcl:913 -msgid "Work Offsets:" +#: tcl/tooledit.tcl:300 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, expected integer not <%s>" msgstr "" -#: tcl/tklinuxcnc.tcl:1233 -#, fuzzy -msgid "relative" -msgstr "Relativa" +#: tcl/tooledit.tcl:316 +#, tcl-format +msgid "At linenumber %d, Unknown tag <%s>" +msgstr "" -#: tcl/tklinuxcnc.tcl:1234 -#, fuzzy -msgid "machine" -msgstr "Máquina" +#: tcl/tooledit.tcl:399 +#, tcl-format +msgid "%s: Column sorting not available with tcl_version==%s" +msgstr "" -#: tcl/tklinuxcnc.tcl:1236 +#: tcl/tooledit.tcl:408 #, fuzzy -msgid "actual" -msgstr "Atual" +msgid "tool" +msgstr "Hehe Sem ferramenta" -#: tcl/tklinuxcnc.tcl:1237 -#, fuzzy -msgid "commanded" -msgstr "Comandada" +#: tcl/tooledit.tcl:409 +msgid "poc" +msgstr "" -#: tcl/tklinuxcnc.tcl:1239 -msgid "joint" +#: tcl/tooledit.tcl:410 +msgid "diam" msgstr "" -#: tcl/tklinuxcnc.tcl:1240 -msgid "world" +#: tcl/tooledit.tcl:411 +msgid "front" msgstr "" -#: tcl/tklinuxcnc.tcl:1333 -msgid "Axis Offset" +#: tcl/tooledit.tcl:412 +msgid "back" msgstr "" -#: tcl/tklinuxcnc.tcl:1335 -msgid "Set axis value:" +#: tcl/tooledit.tcl:413 +msgid "orien" msgstr "" -#: tcl/tklinuxcnc.tcl:1429 +#: tcl/tooledit.tcl:414 #, fuzzy -msgid "Set Feed Override" -msgstr "Velocidade da máquina" +msgid "comment" +msgstr "Seleciona incremento de Jog" -#: tcl/tklinuxcnc.tcl:1435 -#, fuzzy -msgid "Set feed override:" -msgstr "Velocidade da máquina" +#: tcl/tooledit.tcl:444 +msgid "Del" +msgstr "" -#: tcl/tklinuxcnc.tcl:1460 +#: tcl/tooledit.tcl:473 #, fuzzy -msgid "Set Spindle Override" -msgstr "Velocidade da máquina" - -#: tcl/tklinuxcnc.tcl:1466 -msgid "Set spindle speed override:" -msgstr "" +msgid "ReLoadTable" +msgstr "Recarrega.lista de ferramentas" -#: tcl/tklinuxcnc.tcl:1521 +#: tcl/tooledit.tcl:478 #, fuzzy -msgid "Linear Jog Speed" -msgstr "Velocidade de Jog" +msgid "SaveFile" +msgstr "_Arquivo" -#: tcl/tklinuxcnc.tcl:1552 -msgid "Angular Jog Speed (deg)/min:" +#: tcl/tooledit.tcl:483 +msgid "ReRead" msgstr "" -#: tcl/tklinuxcnc.tcl:1596 -#, fuzzy -msgid "Spindle speed Override:" -msgstr "Velocidade da máquina" - -#: tcl/tklinuxcnc.tcl:1642 +#: tcl/tooledit.tcl:485 #, fuzzy -msgid "Program: " -msgstr "Pausa o programa" +msgid "AddTool" +msgstr "Ordem das ferramentas:" -#: tcl/tklinuxcnc.tcl:1647 -msgid " - Status: " +#: tcl/tooledit.tcl:535 +#, tcl-format +msgid "Opened %s" msgstr "" -#: tcl/tklinuxcnc.tcl:1663 -msgid "Optional Stop" +#: tcl/tooledit.tcl:536 +#, tcl-format +msgid "Created %s" msgstr "" -#: tcl/tklinuxcnc.tcl:2010 -msgid "Error" +#: tcl/tooledit.tcl:537 +msgid "File updated" msgstr "" -#: tcl/tklinuxcnc.tcl:2070 tcl/ngcgui_ttt.tcl:46 -msgid "Set Font" +#: tcl/tooledit.tcl:538 +msgid "File modified" msgstr "" -#: tcl/tklinuxcnc.tcl:2079 tcl/ngcgui_ttt.tcl:283 -msgid "Font" +#: tcl/tooledit.tcl:539 +msgid "File check errors" msgstr "" -#: tcl/tklinuxcnc.tcl:2086 -#, fuzzy -msgid "Size" -msgstr "Tamanho:" - -#: tcl/tklinuxcnc.tcl:2093 -#, fuzzy -msgid "Style" -msgstr "_Passo" +#: tcl/tooledit.tcl:540 +msgid "File checked" +msgstr "" -#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:1916 -msgid "ESTOP" -msgstr "PARADA DE EMERGÊNCIA" +#: tcl/tooledit.tcl:541 +msgid "File items deleted" +msgstr "" -#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2840 share/axis/tcl/axis.tcl:1918 -msgid "ON" -msgstr "ON" +#: tcl/tooledit.tcl:542 +msgid "Bogus lines in file ignored" +msgstr "" -#: tcl/tklinuxcnc.tcl:2290 -msgid "LUBE ON" +#: tcl/tooledit.tcl:543 +msgid "File errors -- Check Entries" msgstr "" -#: tcl/tklinuxcnc.tcl:2292 -msgid "LUBE OFF" +#: tcl/tooledit.tcl:544 +msgid "Warning: File changed by another process" msgstr "" -#: tcl/tklinuxcnc.tcl:2294 -msgid "LUBE ?" +#: tcl/tooledit.tcl:545 +msgid "Warning: File deleted by another process" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:23 -msgid "LinuxCNC Set Coordinate" +#: tcl/tooledit.tcl:546 +#, fuzzy +msgid "Added Tool" +msgstr "Sem ferramenta" + +#: tcl/tooledit.tcl:550 +#, tcl-format +msgid "Sorted by %s, increasing" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:26 -msgid "Coordinate System Control Window" +#: tcl/tooledit.tcl:551 +#, tcl-format +msgid "Sorted by %s, decreasing" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:81 -msgid "Var # " +#: tcl/tooledit.tcl:593 +msgid "Added" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:82 -msgid "Offset Value " +#: tcl/tooledit.tcl:802 +#, tcl-format +msgid "Tool %s, Column %s, parameter %s is not a number" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:83 -msgid "What to Teach" +#: tcl/tooledit.tcl:811 +#, tcl-format +msgid "Tool %s, parameter %s must be nonnegative integer" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:101 -msgid "Set Old" +#: tcl/tooledit.tcl:819 +#, tcl-format +msgid "Tool %s: must be 0..9 integer" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:102 -msgid "Set Zero" +#: tcl/tooledit.tcl:826 +#, fuzzy, tcl-format +msgid "Tool %s: <%s> must be between -360 and 360" +msgstr "MOTION: num_dio é %d, precisa ser entre 1 e %d\n" + +#: tcl/tooledit.tcl:842 +#, tcl-format +msgid "Pocket <%s> specified multiple times" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:104 -msgid "Write" +#: tcl/tooledit.tcl:857 +#, tcl-format +msgid "Tool <%s> specified multiple times" msgstr "" -#: tcl/ngcgui.tcl:467 -msgid "Need non-null file name" +#: tcl/tooledit.tcl:902 +msgid "File Modified" msgstr "" -#: tcl/ngcgui.tcl:543 -msgid "Disallowed use of ngcgui generated file as Subfile" +#: tcl/tooledit.tcl:903 +msgid "Save Modifications to File?" msgstr "" -#: tcl/ngcgui.tcl:549 +#: tcl/tooledit.tcl:930 +#, tcl-format msgid "" -"marked (not_a_subfile)\n" -"Not intended for use as a subfile" +"Only these columns are currently used:\n" +"\n" +" %s" msgstr "" -#: tcl/ngcgui.tcl:564 -msgid "Multiple subroutines in file not allowed" +#: tcl/tooledit.tcl:931 +msgid "Limit display to these columns by specifying" msgstr "" -#: tcl/ngcgui.tcl:573 tcl/ngcgui.tcl:595 tcl/ngcgui.tcl:608 tcl/ngcgui.tcl:650 -#: tcl/ngcgui.tcl:755 -msgid "bogus" -msgstr "" +#: tcl/tooledit.tcl:933 +#, fuzzy +msgid "Format for ini file is" +msgstr "impossível abrir %s" -#: tcl/ngcgui.tcl:575 -msgid "sub label" +#: tcl/tooledit.tcl:935 +msgid "For standalone use, invoke as" msgstr "" -#: tcl/ngcgui.tcl:575 tcl/ngcgui.tcl:652 -#, fuzzy -msgid "does not match subroutine file name" -msgstr "Número de níveis de subrotina muito grande" +#: tcl/tooledit.tcl:936 +msgid "tool_table_filename" +msgstr "" -#: tcl/ngcgui.tcl:590 tcl/ngcgui.tcl:591 -msgid "ignoring M2 after endsub" +#: tcl/tooledit.tcl:956 +#, tcl-format +msgid "Created by %s" msgstr "" -#: tcl/ngcgui.tcl:596 -msgid "file contains lines after subend" +#: tcl/tooledit.tcl:957 +msgid "Saved geometry (updated on program termination)" msgstr "" -#: tcl/ngcgui.tcl:609 -msgid "file contains lines before sub" +#: tcl/tooledit.tcl:980 +#, tcl-format +msgid "" +"%s: Axis inifile specifies multiple inifile items for: [EMCIO]TOOL_TABLE" msgstr "" -#: tcl/ngcgui.tcl:652 -msgid "endsub label" +#: tcl/tooledit.tcl:981 +#, tcl-format +msgid "%s: Using: %s" msgstr "" -#: tcl/ngcgui.tcl:757 -msgid "out of sequence positional parameter" +#: tcl/tooledit.tcl:990 +#, tcl-format +msgid "" +"%s: Warning: Axis is running but the tool table file <%s> \n" +"differs from the standalone startup file <%s>" msgstr "" -#: tcl/ngcgui.tcl:757 -msgid "expected" +#: tcl/tooledit.tcl:1004 +msgid "Must be On and Idle to reload tool table" msgstr "" -#: tcl/ngcgui.tcl:817 -msgid "toomany" +#: tcl/tooledit.tcl:1093 +msgid "Usage" msgstr "" -#: tcl/ngcgui.tcl:868 -msgid "no sub found in file" +#: tcl/tooledit.tcl:1094 tcl/tooledit.tcl:1095 +msgid "filename" msgstr "" -#: tcl/ngcgui.tcl:871 -msgid "no endsub found in file" +#: tcl/tooledit.tcl:1096 +#, tcl-format +msgid "Allowed column_ names are: %s" msgstr "" -#: tcl/ngcgui.tcl:961 +#: tcl/tooledit.tcl:1106 #, fuzzy -msgid "Choose Files" -msgstr "Tipo da ferramenta" +msgid "Missing filename" +msgstr " Parâ_metros" + +#: src/emc/usr_intf/axis/scripts/axis.py:183 +msgid "Emergency stop" +msgstr "PARADA DE EMERGÊNCIA" + +#: src/emc/usr_intf/axis/scripts/axis.py:184 +msgid "Turn machine on" +msgstr "Liga a máquina" + +#: src/emc/usr_intf/axis/scripts/axis.py:186 +msgid "Activate first axis" +msgstr "Ativa o primeiro eixo" -#: tcl/ngcgui.tcl:1100 +#: src/emc/usr_intf/axis/scripts/axis.py:187 +msgid "Activate second axis" +msgstr "Ativa o segundo eixo" + +#: src/emc/usr_intf/axis/scripts/axis.py:188 +msgid "Activate third axis" +msgstr "Ativa o terceiro eixo" + +#: src/emc/usr_intf/axis/scripts/axis.py:189 +msgid "Activate fourth axis" +msgstr "Ativa o quarto eixo" + +#: src/emc/usr_intf/axis/scripts/axis.py:190 #, fuzzy -msgid "Controls" -msgstr "Ctrl-K" +msgid "Activate fifth through ninth axis" +msgstr "Ativa o quinto eixo" -#: tcl/ngcgui.tcl:1109 -msgid "Preamble" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:191 +msgid "Set Feed Override from 0% to 100%" +msgstr "Seleciona velocidade da máquina de 0% a 100%" -#: tcl/ngcgui.tcl:1122 -msgid "Subfile" +#: src/emc/usr_intf/axis/scripts/axis.py:192 +msgid ", and ." msgstr "" -#: tcl/ngcgui.tcl:1134 -msgid "Postamble" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:192 +#, fuzzy +msgid "Select jog speed" +msgstr "Seleciona incremento de Jog" -#: tcl/ngcgui.tcl:1151 -msgid "Retain values on Subfile read" +#: src/emc/usr_intf/axis/scripts/axis.py:193 +msgid "< and >" msgstr "" -#: tcl/ngcgui.tcl:1159 +#: src/emc/usr_intf/axis/scripts/axis.py:193 #, fuzzy -msgid "Expand subroutine" -msgstr "Número de níveis de subrotina muito grande" +msgid "Select angular jog speed" +msgstr "Reduz velocidade de Jog" -#: tcl/ngcgui.tcl:1168 tcl/ngcgui.tcl:2414 -msgid "Autosend" +#: src/emc/usr_intf/axis/scripts/axis.py:194 +msgid "I, Shift-I" msgstr "" -#: tcl/ngcgui.tcl:1178 +#: src/emc/usr_intf/axis/scripts/axis.py:194 share/axis/tcl/axis.tcl:2481 +msgid "Select jog increment" +msgstr "Seleciona incremento de Jog" + +#: src/emc/usr_intf/axis/scripts/axis.py:195 +msgid "Continuous jog" +msgstr "Jog continuo" + +#: src/emc/usr_intf/axis/scripts/axis.py:196 +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Home" +msgstr "Home" + +#: src/emc/usr_intf/axis/scripts/axis.py:196 +msgid "Send active axis home" +msgstr "Envia eixo ativo para posição Home" + +#: src/emc/usr_intf/axis/scripts/axis.py:197 #, fuzzy -msgid "Verbose ngcfile" -msgstr "Arquivos rs274ngc" +msgid "Ctrl-Home" +msgstr "Ctrl-K" -#: tcl/ngcgui.tcl:1188 tcl/ngcgui.tcl:2235 tcl/ngcgui.tcl:2259 -#: tcl/ngcgui.tcl:2289 -msgid "Create Feature" +#: src/emc/usr_intf/axis/scripts/axis.py:197 +msgid "Home all axes" msgstr "" -#: tcl/ngcgui.tcl:1194 tcl/ngcgui.tcl:2919 +#: src/emc/usr_intf/axis/scripts/axis.py:198 +msgid "Shift-Home" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:198 +msgid "Zero G54 offset for active axis" +msgstr "Zera offset G54 para o eixo ativo" + +#: src/emc/usr_intf/axis/scripts/axis.py:199 +msgid "End" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:199 +msgid "Set G54 offset for active axis" +msgstr "Ajusta offset G54 para o eixo ativo" + +#: src/emc/usr_intf/axis/scripts/axis.py:200 #, fuzzy -msgid "MakeFile" -msgstr "_Arquivo" +msgid "Jog active axis" +msgstr "Jog no terceiro eixo" -#: tcl/ngcgui.tcl:1195 tcl/ngcgui.tcl:2916 -msgid "Finalize" +#: src/emc/usr_intf/axis/scripts/axis.py:203 +msgid "Left, Right" msgstr "" -#: tcl/ngcgui.tcl:1212 -msgid "Reread" +#: src/emc/usr_intf/axis/scripts/axis.py:203 +msgid "Jog first axis" +msgstr "Jog no primeiro eixo" + +#: src/emc/usr_intf/axis/scripts/axis.py:204 +msgid "Up, Down" msgstr "" -#: tcl/ngcgui.tcl:1231 -msgid "SendFileToAxis" +#: src/emc/usr_intf/axis/scripts/axis.py:204 +msgid "Jog second axis" +msgstr "Jog no segundo eixo" + +#: src/emc/usr_intf/axis/scripts/axis.py:205 +msgid "Pg Up, Pg Dn" msgstr "" -#: tcl/ngcgui.tcl:1274 -msgid "Unrecoverable problem" +#: src/emc/usr_intf/axis/scripts/axis.py:205 +msgid "Jog third axis" +msgstr "Jog no terceiro eixo" + +#: src/emc/usr_intf/axis/scripts/axis.py:206 +msgid "Shift+above jogs" msgstr "" -#: tcl/ngcgui.tcl:1374 -msgid "Postamble file" +#: src/emc/usr_intf/axis/scripts/axis.py:206 +msgid "Jog at traverse speed" msgstr "" -#: tcl/ngcgui.tcl:1424 -msgid "Subroutine file" +#: src/emc/usr_intf/axis/scripts/axis.py:207 +msgid "Jog fourth axis" +msgstr "Jog no quarto eixo " + +#: src/emc/usr_intf/axis/scripts/axis.py:210 +msgid "Toggle between Drag and Rotate mode" msgstr "" -#: tcl/ngcgui.tcl:1482 +#: src/emc/usr_intf/axis/scripts/axis.py:211 +msgid "Left Button" +msgstr "Botão esquerdo" + +#: src/emc/usr_intf/axis/scripts/axis.py:211 #, fuzzy -msgid "Positional Parameters" -msgstr " Parâ_metros" +msgid "Pan, rotate or select line" +msgstr "Vista da bandeja ou seleciona linha" -#: tcl/ngcgui.tcl:1587 -msgid "_Globals" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:212 +msgid "Shift+Left Button" +msgstr "Tecla Shift+Left" -#: tcl/ngcgui.tcl:1690 -msgid "No Subfile specified" +#: src/emc/usr_intf/axis/scripts/axis.py:212 +#, fuzzy +msgid "Rotate or pan" +msgstr "Roda vista superior" + +#: src/emc/usr_intf/axis/scripts/axis.py:213 +msgid "Right Button" +msgstr "Botão direito" + +#: src/emc/usr_intf/axis/scripts/axis.py:213 +#: src/emc/usr_intf/axis/scripts/axis.py:215 +#: src/emc/usr_intf/axis/scripts/axis.py:216 +msgid "Zoom view" +msgstr "Vista em zoom" + +#: src/emc/usr_intf/axis/scripts/axis.py:214 +msgid "Wheel Button" +msgstr "Botão scroll do mouse" + +#: src/emc/usr_intf/axis/scripts/axis.py:214 +msgid "Rotate view" +msgstr "Gira o campo de visão" + +#: src/emc/usr_intf/axis/scripts/axis.py:215 +msgid "Rotate Wheel" +msgstr "Giro do scroll do mouse" + +#: src/emc/usr_intf/axis/scripts/axis.py:216 +msgid "Control+Left Button" +msgstr "Control +botão esquerdo" + +#: src/emc/usr_intf/axis/scripts/axis.py:219 +msgid "Manual control" +msgstr "Controle manual" + +#: src/emc/usr_intf/axis/scripts/axis.py:220 +msgid "Code entry (MDI)" +msgstr "Inserir Código G (MDI)" + +#: src/emc/usr_intf/axis/scripts/axis.py:221 +#, fuzzy +msgid "Control-M" +msgstr "Ctrl-K" + +#: src/emc/usr_intf/axis/scripts/axis.py:221 +msgid "Clear MDI history" msgstr "" -#: tcl/ngcgui.tcl:1692 +#: src/emc/usr_intf/axis/scripts/axis.py:222 #, fuzzy -msgid "No parameters yet" -msgstr " Parâ_metros" +msgid "Control-H" +msgstr "Ctrl-K" -#: tcl/ngcgui.tcl:1701 -msgid "Missing value for parm" +#: src/emc/usr_intf/axis/scripts/axis.py:222 +msgid "Copy selected MDI history elements" msgstr "" -#: tcl/ngcgui.tcl:1735 -msgid "Output file" +#: src/emc/usr_intf/axis/scripts/axis.py:223 +msgid "to clipboard" msgstr "" -#: tcl/ngcgui.tcl:1827 -msgid "Positional parameters for" +#: src/emc/usr_intf/axis/scripts/axis.py:224 +msgid "Control-Shift-H" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:224 +msgid "Paste clipboard to MDI history" msgstr "" -#: tcl/ngcgui.tcl:1835 +#: src/emc/usr_intf/axis/scripts/axis.py:225 share/axis/tcl/axis.tcl:1183 +#: src/emc/usr_intf/touchy/touchy.glade:508 +msgid "Override Limits" +msgstr "Ultrapassar limites" + +#: src/emc/usr_intf/axis/scripts/axis.py:227 +msgid "Open program" +msgstr "Abre o programa" + +#: src/emc/usr_intf/axis/scripts/axis.py:228 #, fuzzy -msgid "expanded file" -msgstr "Todos os arquivos" +msgid "Control-R" +msgstr "Ctrl-R" + +#: src/emc/usr_intf/axis/scripts/axis.py:228 +msgid "Reload program" +msgstr "Recarrega o programa" -#: tcl/ngcgui.tcl:1849 +#: src/emc/usr_intf/axis/scripts/axis.py:229 #, fuzzy -msgid "call subroutine file" -msgstr "Número de níveis de subrotina muito grande" +msgid "Control-S" +msgstr "Ctrl-K" + +#: src/emc/usr_intf/axis/scripts/axis.py:229 +msgid "Save g-code as" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:230 +msgid "Run program" +msgstr "Roda o programa" -#: tcl/ngcgui.tcl:1919 -msgid "Multiple Tabs with Features" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:231 +msgid "Step program" +msgstr "Roda uma linha do programa" -#: tcl/ngcgui.tcl:1920 -msgid "Finalize all Tabs?" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:232 +msgid "Pause program" +msgstr "Pausa o programa" -#: tcl/ngcgui.tcl:1920 -msgid "Order" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:233 +msgid "Resume program" +msgstr "Retoma o programa" -#: tcl/ngcgui.tcl:1922 -msgid "No, just this page" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:234 +msgid "Stop running program, or" +msgstr "Pára o programa, ou" -#: tcl/ngcgui.tcl:1936 -msgid "Axis is not responding" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:235 +msgid "stop loading program preview" +msgstr "Pára o carregamento da vista preliminar" -#: tcl/ngcgui.tcl:1937 -msgid "Error: " -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:237 +msgid "Toggle mist" +msgstr "Refrigeração ar/névoa" -#: tcl/ngcgui.tcl:1939 -msgid "Autosend disabled, Ctrl-A toggles autosend" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:238 +msgid "Toggle flood" +msgstr "Refrigeração líquida" -#: tcl/ngcgui.tcl:1941 -msgid "File saving enabled -- Finalize to save" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:239 +msgid "Spindle brake off" +msgstr "Freio do spindle desativado" -#: tcl/ngcgui.tcl:1957 -msgid "Require .ngc suffix for filename" +#: src/emc/usr_intf/axis/scripts/axis.py:240 +msgid "Shift-B" msgstr "" -#: tcl/ngcgui.tcl:1967 -msgid "Disallowed overwrite of" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:240 +msgid "Spindle brake on" +msgstr "Freio do spindle ativado" -#: tcl/ngcgui.tcl:1986 -msgid "FEATURE" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:241 +msgid "Turn spindle clockwise" +msgstr "Gira o spindle no sentido horário" -#: tcl/ngcgui.tcl:1993 -msgid "feature line added" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:242 +msgid "Turn spindle counterclockwise" +msgstr "Gira o spindle no sentido anti-horário" -#: tcl/ngcgui.tcl:2002 -msgid "line added" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:243 +msgid "Turn spindle more slowly" +msgstr "Reduz rotação do spindle" -#: tcl/ngcgui.tcl:2002 -msgid "activated" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:244 +msgid "Turn spindle more quickly" +msgstr "Aumenta rotação do spindle" -#: tcl/ngcgui.tcl:2004 -msgid "restores" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:246 +#, fuzzy +msgid "Control-K" +msgstr "Ctrl-K" -#: tcl/ngcgui.tcl:2041 -msgid "NOTREACHED mode" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:246 +msgid "Clear live plot" +msgstr "Apaga traçado da ferramenta" -#: tcl/ngcgui.tcl:2236 -msgid "Enter parms for 1st feature" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:247 +msgid "Cycle among preset views" +msgstr "Salta entre vistas pré-ajustadas" -#: tcl/ngcgui.tcl:2243 +#: src/emc/usr_intf/axis/scripts/axis.py:248 #, fuzzy -msgid "New Outfile" -msgstr "Todos os arquivos" +msgid "Cycle among preview, DRO, and user tabs" +msgstr "Salta entre vistas pré-ajustadas" -#: tcl/ngcgui.tcl:2245 -msgid "Ready to make New Outfile" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:250 +#, fuzzy +msgid "Ctrl-Space" +msgstr "Ctrl-R" -#: tcl/ngcgui.tcl:2262 tcl/ngcgui.tcl:2295 -msgid "Enter parms for feature " +#: src/emc/usr_intf/axis/scripts/axis.py:250 +msgid "Clear notifications" msgstr "" -#: tcl/ngcgui.tcl:2282 -msgid "feature" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:850 +#, python-format +msgid "Unknown tool %d" +msgstr "Ferramenta desconhecida %d" -#: tcl/ngcgui.tcl:2287 -msgid "Create Next" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:852 +msgid "No tool" +msgstr "Hehe Sem ferramenta" -#: tcl/ngcgui.tcl:2292 -msgid "Created feature " -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:854 +#, fuzzy, python-format +msgid "Tool %(tool)d, offset %(zo)g, diameter %(dia)g" +msgstr "Ferramenta %d, offset %g, diâmetro %g" + +#: src/emc/usr_intf/axis/scripts/axis.py:856 +#, fuzzy, python-format +msgid "Tool %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" +msgstr "Ferramenta %d, zo %g, xo%, dia %g" -#: tcl/ngcgui.tcl:2316 +#: src/emc/usr_intf/axis/scripts/axis.py:1031 #, fuzzy -msgid "option" -msgstr "Posição:" +msgid "Filtering..." +msgstr "Alternada" -#: tcl/ngcgui.tcl:2327 +#: src/emc/usr_intf/axis/scripts/axis.py:1102 #, fuzzy -msgid "Missing parameters" -msgstr " Parâ_metros" +msgid "Filter failed" +msgstr "Filtro de programa %r falhado" -#: tcl/ngcgui.tcl:2331 -msgid "Parse Error" +#: src/emc/usr_intf/axis/scripts/axis.py:1103 +#, python-format +msgid "" +"The program %(program)r exited with code %(code)d. Any error messages it " +"produced are shown below:" msgstr "" -#: tcl/ngcgui.tcl:2338 -msgid "Null Preamble" +#: src/emc/usr_intf/axis/scripts/axis.py:1171 +#, python-format +msgid "G-Code error in %s" +msgstr "Erro no Código-G em %s" + +#: src/emc/usr_intf/axis/scripts/axis.py:1172 +#, fuzzy, python-format +msgid "" +"Near line %(seq)d of %(f)s:\n" +"%(error_str)s" msgstr "" +"Próximo da linha %d de %s:\n" +"%s" -#: tcl/ngcgui.tcl:2343 -msgid "Read Preamble" +#: src/emc/usr_intf/axis/scripts/axis.py:1341 +#: src/emc/usr_intf/axis/scripts/axis.py:2942 share/axis/tcl/axis.tcl:1162 +#: share/axis/tcl/axis.tcl:1164 share/axis/tcl/axis.tcl:2269 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:895 +msgid "Continuous" +msgstr "Contínuo" + +#: src/emc/usr_intf/axis/scripts/axis.py:1452 +msgid "Ok" msgstr "" -#: tcl/ngcgui.tcl:2347 -msgid "Preamble Error" +#: src/emc/usr_intf/axis/scripts/axis.py:1599 +msgid "T Tool Table" msgstr "" -#: tcl/ngcgui.tcl:2352 -msgid "Null Postamble" +#: src/emc/usr_intf/axis/scripts/axis.py:1610 +#: src/emc/usr_intf/axis/scripts/axis.py:1859 +#: src/emc/usr_intf/axis/scripts/axis.py:2387 +#: src/emc/usr_intf/stepconf/stepconf.py:1328 +#: src/emc/usr_intf/stepconf/pages.py:631 +msgid "in" msgstr "" -#: tcl/ngcgui.tcl:2357 -msgid "Read Postamble" +#: src/emc/usr_intf/axis/scripts/axis.py:1613 +msgid " radius" msgstr "" -#: tcl/ngcgui.tcl:2361 -msgid "Postamble Error" +#: src/emc/usr_intf/axis/scripts/axis.py:1615 +msgid " diameter" msgstr "" -#: tcl/ngcgui.tcl:2366 -msgid "Read Subfile" +#: src/emc/usr_intf/axis/scripts/axis.py:1616 +msgid "°" msgstr "" -#: tcl/ngcgui.tcl:2371 -msgid "Write Error" +#: src/emc/usr_intf/axis/scripts/axis.py:1625 +msgid "Coordinate System:" msgstr "" -#: tcl/ngcgui.tcl:2375 -msgid "Outfile set" +#: src/emc/usr_intf/axis/scripts/axis.py:1641 +msgid "fixture" msgstr "" -#: tcl/ngcgui.tcl:2380 -msgid "Finished" +#: src/emc/usr_intf/axis/scripts/axis.py:1642 +msgid "workpiece" msgstr "" -#: tcl/ngcgui.tcl:2385 -#, fuzzy -msgid "Canceled" -msgstr "Cancelar" +#: src/emc/usr_intf/axis/scripts/axis.py:1658 +msgid "Name:" +msgstr "Nome:" -#: tcl/ngcgui.tcl:2391 -msgid "Sent" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1658 +msgid "Size:" +msgstr "Tamanho:" -#: tcl/ngcgui.tcl:2395 -#, fuzzy -msgid "SendFileToAxis failed" -msgstr "Filtro de programa %r falhado" +#: src/emc/usr_intf/axis/scripts/axis.py:1659 +msgid "Tool order:" +msgstr "Ordem das ferramentas:" -#: tcl/ngcgui.tcl:2399 -msgid "Ctrl-k for Key bindings" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1659 +msgid "Rapid distance:" +msgstr "Distância em posicionamento:" -#: tcl/ngcgui.tcl:2403 -msgid "Expand sub" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1660 +msgid "Feed distance:" +msgstr "Distância em trabalho:" -#: tcl/ngcgui.tcl:2407 -msgid "Retain values" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1660 +msgid "Total distance:" +msgstr "Distância total" -#: tcl/ngcgui.tcl:2411 -msgid "Verbose" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1661 +msgid "Run time:" +msgstr "Tempo de execução:" -#: tcl/ngcgui.tcl:2417 -msgid "Finalize Canceled" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1661 +msgid "X bounds:" +msgstr "Limites em X:" -#: tcl/ngcgui.tcl:2572 tcl/ngcgui.tcl:2728 -msgid "Dismiss" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1662 +msgid "Y bounds:" +msgstr "Limites em Y:" -#: tcl/ngcgui.tcl:2577 -msgid "ngcgui Error" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1662 +msgid "Z bounds:" +msgstr "Limites em Z:" -#: tcl/ngcgui.tcl:2600 -msgid "Declining support for tk send bug in ngcgui" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1663 +msgid "A bounds:" +msgstr "Limites em A:" -#: tcl/ngcgui.tcl:2601 -msgid "You should upgrade linuxcnc to >= linuxcnc2.5" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1663 +msgid "B bounds:" +msgstr "Limites em B" -#: tcl/ngcgui.tcl:2645 -msgid "pre2.4_send_file_to_axis:error" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1664 +msgid "C bounds:" +msgstr "Limites em C" -#: tcl/ngcgui.tcl:2839 share/axis/tcl/axis.tcl:1917 -#, fuzzy -msgid "OFF" -msgstr "OFF" +#: src/emc/usr_intf/axis/scripts/axis.py:1688 +#, python-format +msgid "Program exceeds machine minimum on axis %s" +msgstr "O programa excede o limite inferior no eixo %s" -#: tcl/ngcgui.tcl:2842 -#, fuzzy -msgid "Toggle autosend" -msgstr "Refrigeração líquida" +#: src/emc/usr_intf/axis/scripts/axis.py:1691 +#, python-format +msgid "Program exceeds machine maximum on axis %s" +msgstr "O programa excede o limite superior no eixo %s" -#: tcl/ngcgui.tcl:2843 tcl/ngcgui.tcl:3057 -msgid "Clear entries" +#: src/emc/usr_intf/axis/scripts/axis.py:1696 +msgid "Program exceeds machine limits" +msgstr "O programa excede os limites da máquina" + +#: src/emc/usr_intf/axis/scripts/axis.py:1699 +msgid "Run Anyway" +msgstr "Ignorar e rodar programa" + +#: src/emc/usr_intf/axis/scripts/axis.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1581 +msgid "No file loaded" msgstr "" -#: tcl/ngcgui.tcl:2844 -msgid "Set entries to default values" +#: src/emc/usr_intf/axis/scripts/axis.py:1845 +#, python-format +msgid "generated from %s" msgstr "" -#: tcl/ngcgui.tcl:2845 tcl/ngcgui.tcl:2859 tcl/ngcgui.tcl:2861 -msgid "Open editor specified by" +#: src/emc/usr_intf/axis/scripts/axis.py:1851 +#, python-format +msgid "" +"%(size)s bytes\n" +"%(lines)s gcode lines" msgstr "" -#: tcl/ngcgui.tcl:2846 -msgid "on last outfile" +#: src/emc/usr_intf/axis/scripts/axis.py:1877 +#, python-format +msgid "%.1f minutes" msgstr "" -#: tcl/ngcgui.tcl:2847 +#: src/emc/usr_intf/axis/scripts/axis.py:1879 +#, fuzzy, python-format +msgid "%d seconds" +msgstr "Jog no segundo eixo" + +#: src/emc/usr_intf/axis/scripts/axis.py:1887 +#, fuzzy, python-format +msgid "%(a)f to %(b)f = %(diff)f %(units)s" +msgstr "%f até %f = %f %s" + +#: src/emc/usr_intf/axis/scripts/axis.py:1888 #, fuzzy -msgid "toggle expand subroutines" -msgstr "Número de níveis de subrotina muito grande" +msgid "G-Code Properties" +msgstr "Erro no Código-G em %s" -#: tcl/ngcgui.tcl:2848 -msgid "Create feature" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:2021 +msgid "All machinable files" +msgstr "Todos arquivos usináveis" -#: tcl/ngcgui.tcl:2849 -msgid "Finalize (AUTO send is" +#: src/emc/usr_intf/axis/scripts/axis.py:2022 +#: src/emc/usr_intf/axis/scripts/axis.py:2659 +msgid "rs274ngc files" +msgstr "Arquivos rs274ngc" + +#: src/emc/usr_intf/axis/scripts/axis.py:2037 +msgid "axis cannot accept remote command while running" msgstr "" -#: tcl/ngcgui.tcl:2850 -msgid "Show key bindings" +#: src/emc/usr_intf/axis/scripts/axis.py:2098 +#, fuzzy +msgid "File not Writable:" +msgstr "Arquivo não aberto" + +#: src/emc/usr_intf/axis/scripts/axis.py:2099 +msgid "" +"This file is not writable\n" +"You can Edit-readonly\n" +"\n" +"or\n" +"\n" +"Save it to your own directory\n" +"then open that saved, writable file" msgstr "" -#: tcl/ngcgui.tcl:2851 -msgid "Restart (cancel pending)" +#: src/emc/usr_intf/axis/scripts/axis.py:2106 +msgid "Edit-readonly" msgstr "" -#: tcl/ngcgui.tcl:2852 -msgid "(re)Read Preamble" +#: src/emc/usr_intf/axis/scripts/axis.py:2440 +msgid "Axis is already homed, are you sure you want to re-home?" msgstr "" -#: tcl/ngcgui.tcl:2853 -msgid "(re)Read Postamble" +#: src/emc/usr_intf/axis/scripts/axis.py:2453 +msgid "This axis is already homed, are you sure you want to re-home?" msgstr "" -#: tcl/ngcgui.tcl:2854 -msgid "(re)Read Subfile" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:2493 share/axis/tcl/axis.tcl:1178 +msgid "Touch Off" +msgstr "Apalpador" -#: tcl/ngcgui.tcl:2855 -msgid "toggle retain values" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:2494 +#, fuzzy, python-format +msgid "Enter %s coordinate relative to %%s:" +msgstr "Digite %s coordenada em relação a peça de trabalho" -#: tcl/ngcgui.tcl:2856 -msgid "toggle output file verbosity" +#: src/emc/usr_intf/axis/scripts/axis.py:2671 +msgid "Error saving file" msgstr "" -#: tcl/ngcgui.tcl:2857 +#: src/emc/usr_intf/axis/scripts/axis.py:3077 +#: src/emc/usr_intf/touchy/touchy.glade:577 +#: src/emc/usr_intf/gscreen/gscreen.glade:2933 #, fuzzy -msgid "Show status" -msgstr "Mostra _limites" +msgid "Home All" +msgstr "Home" -#: tcl/ngcgui.tcl:2858 -msgid "Show full status (debug info)" +#: src/emc/usr_intf/axis/scripts/axis.py:3079 +msgid "Home all axes [Ctrl-Home]" msgstr "" -#: tcl/ngcgui.tcl:2860 -#, fuzzy -msgid "on current subfile" -msgstr "Recarrega Código G [Control-R]" +#: src/emc/usr_intf/axis/scripts/axis.py:3082 +msgid "Home All Axes" +msgstr "" -#: tcl/ngcgui.tcl:2862 -msgid "on current preamble" +#: src/emc/usr_intf/axis/scripts/axis.py:3089 +msgid "Unhome All Axes" msgstr "" -#: tcl/ngcgui.tcl:2865 -msgid " Escape Return to Preview page" +#: src/emc/usr_intf/axis/scripts/axis.py:3113 +#, python-format +msgid "Home Axis _%s" msgstr "" -#: tcl/ngcgui.tcl:2942 -msgid "Editing requires setting for environmental variable VISUAL" +#: src/emc/usr_intf/axis/scripts/axis.py:3115 +#, python-format +msgid "Unhome Axis _%s" msgstr "" -#: tcl/ngcgui.tcl:2943 -msgid "Trying gedit" +#: src/emc/usr_intf/axis/scripts/axis.py:3282 +msgid "Run from here" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:3598 +msgid "Error in ~/.axisrc" msgstr "" -#: tcl/ngcgui.tcl:2955 +#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:102 #, fuzzy -msgid "No file available for editing yet" -msgstr "Valor não-inteiro onde deveria haver um inteiro" +msgid "Machinekit Status" +msgstr "Máquina" -#: tcl/ngcgui.tcl:2964 tcl/ngcgui.tcl:2973 +#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:118 #, fuzzy -msgid "No file available for editing" -msgstr "Valor não-inteiro onde deveria haver um inteiro" +msgid "Copy All" +msgstr "Home" -#: tcl/ngcgui.tcl:2990 -msgid "Status items" -msgstr "" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 +#, python-format +msgid "Insert tool %d and click continue when ready" +msgstr "Coloque a ferramenta %d e tecle Continuar quando pronto" -#: tcl/ngcgui.tcl:3003 -msgid "All-page opt items" -msgstr "" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:39 +msgid "Remove the tool and click continue when ready" +msgstr "Remova a ferramenta e tecle Continuar quando pronto" -#: tcl/ngcgui.tcl:3009 -msgid "any-items" -msgstr "" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 +#: src/emc/usr_intf/touchy/mdi.py:49 src/emc/usr_intf/gscreen/mdi.py:49 +msgid "Tool change" +msgstr "Troca de ferramenta" -#: tcl/ngcgui.tcl:3046 -msgid "Set defaults" -msgstr "" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 +msgid "Continue" +msgstr "Continuar" -#: tcl/ngcgui.tcl:3125 -msgid "not writable" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:64 +msgid "AXIS Manual Toolchanger" msgstr "" -#: tcl/ngcgui.tcl:3263 tcl/ngcgui.tcl:3443 -msgid "new" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:68 +msgid "" +"This window is part of the AXIS manual toolchanger. It is safe to close or " +"iconify this window, or it will close automatically after a few seconds." msgstr "" +"Esta janela é parte do controle de troca de ferramenta do Axis. É indicado " +"fechar ou reduzir ersta janela ou ela será automaticamente fechada em alguns " +"segundos." -#: tcl/ngcgui.tcl:3288 -msgid "Open a new Subfile" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:507 +#, python-format +msgid "%s: Image to gcode" +msgstr "%s: Image to gcode" -#: tcl/ngcgui.tcl:3434 -msgid "remove" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:508 +msgid "Image to gcode" +msgstr "Image to gcode" -#: tcl/ngcgui.tcl:3456 tcl/ngcgui.tcl:3462 -msgid "move" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:518 +#, fuzzy, python-format +msgid "" +"Image size: %(w)d x %(h)d pixels\n" +"Minimum pixel value: %(min)d\n" +"Maximum pixel value: %(max)d" msgstr "" +"Tamanho da imagem: %d x %d pixels\n" +"Mínimo valor em pixel: %d\n" +"Máximo valor em pixel: %d" -#: tcl/ngcgui.tcl:3561 src/emc/usr_intf/pncconf/pncconf.py:7022 -#: src/emc/usr_intf/pncconf/pncconf.py:7139 -#: src/emc/usr_intf/pncconf/pncconf.py:7306 -msgid "Custom" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 +msgid "G20 (in)" +msgstr "G20 (polegadas)" -#: tcl/ngcgui.tcl:3587 -msgid "Problem creating page" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 +msgid "G21 (mm)" +msgstr "G21 (mm)" -#: tcl/ngcgui.tcl:3594 -msgid "entrykeybindings not available" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 +#: src/emc/usr_intf/touchy/emc_interface.py:417 +msgid "None" +msgstr "Nenhuma" -#: tcl/ngcgui.tcl:3633 -msgid "Found multiple matches for" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +msgid "White" msgstr "" -#: tcl/ngcgui.tcl:3634 -msgid "using path" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +#, fuzzy +msgid "Black" +msgstr "Freio" -#: tcl/ngcgui.tcl:3642 src/emc/usr_intf/axis/scripts/axis.py:2255 -#: src/emc/usr_intf/axis/scripts/axis.py:2268 -msgid "Warning" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Rows" +msgstr "Linhas" -#: tcl/ngcgui.tcl:3643 -msgid "File absolute path specifier conflicts with searchpath result" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Columns" +msgstr "Colunas" -#: tcl/ngcgui.tcl:3644 -#, fuzzy -msgid "Absolute Specifier" -msgstr "Sobre o AXIS" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Rows then Columns" +msgstr "Linhas para colunas" -#: tcl/ngcgui.tcl:3645 -msgid "Using Search Result" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Columns then Rows" +msgstr "Colunas para linhas" -#: tcl/ngcgui.tcl:3650 -msgid "File not in Search Path" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Positive" +msgstr "Positivo" -#: tcl/ngcgui.tcl:3652 -msgid "Must be in search path" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Negative" +msgstr "Negativo" -#: tcl/ngcgui.tcl:3654 -msgid "(File found -- not in search path)" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Alternating" +msgstr "Alternada" -#: tcl/ngcgui.tcl:3656 -msgid "Current directory" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Up Milling" +msgstr "Usinagem para cima" -#: tcl/ngcgui.tcl:3657 -msgid "Search path" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Down Milling" +msgstr "Usinagem para baixo" -#: tcl/ngcgui.tcl:3663 -msgid "Check setting for" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "Ball End" +msgstr "Ponta bola" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "Flat End" +msgstr "Ponta plana" -#: tcl/ngcgui.tcl:3664 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 #, fuzzy -msgid "in ini file" -msgstr "AXIS (Sem arquivo)" +msgid "30 Degree" +msgstr "60 graus" -#: tcl/ngcgui.tcl:3665 -msgid "(Restart required after fixing ini file)" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "45 Degree" +msgstr "45 graus" -#: tcl/ngcgui.tcl:3680 -#, fuzzy -msgid "Try to Continue" -msgstr "Continuar" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "60 Degree" +msgstr "60 graus" -#: tcl/ngcgui.tcl:3685 -#, fuzzy -msgid "Ngcgui Configuration File Not Found" -msgstr "Mostrar _Configuração Hal" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 +msgid "Secondary" +msgstr "Secundária" -#: tcl/ngcgui.tcl:3765 -msgid "Missing Tcl Package Img" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 +msgid "Full" +msgstr "Completa" -#: tcl/ngcgui.tcl:3766 -msgid "Please install Img" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:654 +msgid "Invert Image" +msgstr "Inverter imagem" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:655 +msgid "Normalize Image" +msgstr "Normalizar imagem" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:656 +msgid "Extend Image Border" msgstr "" -#: tcl/ngcgui.tcl:3965 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:657 #, fuzzy -msgid "ini file" -msgstr "AXIS (Sem arquivo)" +msgid "Pixel Size (Units)" +msgstr "Tamanho em pixel" -#: tcl/ngcgui.tcl:3973 -msgid "not found" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:658 +msgid "Depth (units)" +msgstr "Profundidade (unidades)" -#: tcl/ngcgui_ttt.tcl:67 -msgid "found truetype-tracer v4 -OK" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:659 +msgid "Tolerance (units)" +msgstr "Tolerância (unidades)" -#: tcl/ngcgui_ttt.tcl:70 -msgid "Note truetype-tracer v4 is required" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:660 +#, fuzzy +msgid "Stepover (pixels)" +msgstr "Avanço em Y (pixels)" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:661 +msgid "Tool Diameter (units)" +msgstr "Diâmetro da ferramenta (unidades)" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:662 +msgid "Tool Type" +msgstr "Tipo da ferramenta" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:663 +msgid "Feed Rate (units per minute)" +msgstr "Velocidade de trabalho (unidades por minuto)" -#: tcl/ngcgui_ttt.tcl:71 -msgid "Note: truetype-tracer v4 is required" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:664 +#, fuzzy +msgid "Plunge Feed Rate (units per minute)" +msgstr "Velocidade de trabalho (unidades por minuto)" -#: tcl/ngcgui_ttt.tcl:81 -msgid "ngcgui_app.tcl must be loaded before" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:666 +msgid "Safety Height (units)" +msgstr "Altura de segurança (unidades)" -#: tcl/ngcgui_ttt.tcl:89 -msgid "Create a subroutine file from truetype-tracer (V4 reqd)" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:667 +#, fuzzy +msgid "Scan Pattern" +msgstr "Padrão de Scan" -#: tcl/ngcgui_ttt.tcl:102 tcl/ngcgui_ttt.tcl:115 -msgid "problem with" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:668 +msgid "Scan Direction" msgstr "" -#: tcl/ngcgui_ttt.tcl:106 -msgid "No entry for" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:669 +msgid "Lace Bounding" msgstr "" -#: tcl/ngcgui_ttt.tcl:109 -msgid "wrong version of truetype-tracer" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:670 +msgid "Contact Angle (degrees)" msgstr "" -#: tcl/ngcgui_ttt.tcl:125 -msgid "not writable, using" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:671 +msgid "Spindle Speed (RPM)" msgstr "" -#: tcl/ngcgui_ttt.tcl:125 -msgid "and setting expandsub" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:672 +msgid "Roughing offset (units, 0=no roughing)" msgstr "" -#: tcl/ngcgui_ttt.tcl:161 -msgid "Text" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:673 +msgid "Roughing depth per pass (units)" msgstr "" -#: tcl/ngcgui_ttt.tcl:171 -#, fuzzy -msgid "Linescale" -msgstr "Eixo:" - -#: tcl/ngcgui_ttt.tcl:177 -msgid "none" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:740 +msgid "image-to-gcode: User pressed cancel" msgstr "" -#: tcl/ngcgui_ttt.tcl:192 -msgid "Subdiv" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:753 +msgid "Depth images" +msgstr "Profundidade das imagens" -#: tcl/ngcgui_ttt.tcl:199 -msgid "default" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:22 +msgid "Machinekit Debug Level" msgstr "" -#: tcl/ngcgui_ttt.tcl:239 -#, fuzzy -msgid "Mode" -msgstr "Modo execução" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:23 +msgid "debuglevel" +msgstr "" -#: tcl/ngcgui_ttt.tcl:247 +#: src/emc/usr_intf/axis/scripts/debuglevel.py:36 #, fuzzy -msgid "normal" -msgstr "Normal" +msgid "Configuration *" +msgstr "Mostrar _Configuração Hal" -#: tcl/ngcgui_ttt.tcl:248 -msgid "date" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:37 +msgid "Version Numbers *" msgstr "" -#: tcl/ngcgui_ttt.tcl:249 -msgid "fontname" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:38 +msgid "NML *" msgstr "" -#: tcl/ngcgui_ttt.tcl:262 -msgid "Switches" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:39 +msgid "RCS *" msgstr "" -#: tcl/ngcgui_ttt.tcl:270 -msgid "Unicode" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:40 +msgid "Task Issue" msgstr "" -#: tcl/ngcgui_ttt.tcl:275 -#, fuzzy -msgid "Allow Rotation" -msgstr "Posição:" - -#: tcl/ngcgui_ttt.tcl:295 -msgid "Make ngcgui-compatible subfile and new tab page" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:41 +msgid "Motion Time" msgstr "" -#: tcl/ngcgui_ttt.tcl:353 -msgid "Null text" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:43 +msgid "Interpreter List" msgstr "" -#: tcl/ngcgui_ttt.tcl:384 -msgid "Using truetype-tracer default font" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:47 +#, python-format +msgid "" +"Inifile setting for this debug level:\n" +"[EMC]DEBUG=0x%08x" msgstr "" -#: tcl/ngcgui_ttt.tcl:388 -#, fuzzy -msgid "no such file" -msgstr "AXIS (Sem arquivo)" - -#: tcl/ngcgui_ttt.tcl:393 -#, fuzzy -msgid "file not readable" -msgstr "Arquivo não aberto" - -#: tcl/ngcgui_ttt.tcl:507 -msgid "Creating new tab page" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:81 +msgid " * This option can only be enabled in the inifile" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:148 -msgid "Emergency stop" -msgstr "PARADA DE EMERGÊNCIA" - -#: src/emc/usr_intf/axis/scripts/axis.py:149 -msgid "Turn machine on" -msgstr "Liga a máquina" - -#: src/emc/usr_intf/axis/scripts/axis.py:151 -msgid "Activate first axis" -msgstr "Ativa o primeiro eixo" - -#: src/emc/usr_intf/axis/scripts/axis.py:152 -msgid "Activate second axis" -msgstr "Ativa o segundo eixo" - -#: src/emc/usr_intf/axis/scripts/axis.py:153 -msgid "Activate third axis" -msgstr "Ativa o terceiro eixo" - -#: src/emc/usr_intf/axis/scripts/axis.py:154 -msgid "Activate fourth axis" -msgstr "Ativa o quarto eixo" - -#: src/emc/usr_intf/axis/scripts/axis.py:155 +#: share/axis/tcl/axis.tcl:52 #, fuzzy -msgid "Activate fifth through ninth axis" -msgstr "Ativa o quinto eixo" - -#: src/emc/usr_intf/axis/scripts/axis.py:156 -msgid "Set Feed Override from 0% to 100%" -msgstr "Seleciona velocidade da máquina de 0% a 100%" - -#: src/emc/usr_intf/axis/scripts/axis.py:157 -msgid ", and ." -msgstr "" +msgid "_Open..." +msgstr "_Abrir" -#: src/emc/usr_intf/axis/scripts/axis.py:157 +#: share/axis/tcl/axis.tcl:56 #, fuzzy -msgid "Select jog speed" -msgstr "Seleciona incremento de Jog" +msgid "Recent _Files" +msgstr "Todos os arquivos" -#: src/emc/usr_intf/axis/scripts/axis.py:158 -msgid "< and >" +#: share/axis/tcl/axis.tcl:60 +msgid "_Edit..." msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:158 +#: share/axis/tcl/axis.tcl:63 #, fuzzy -msgid "Select angular jog speed" -msgstr "Reduz velocidade de Jog" - -#: src/emc/usr_intf/axis/scripts/axis.py:159 -msgid "I, Shift-I" -msgstr "" - -#: src/emc/usr_intf/axis/scripts/axis.py:159 share/axis/tcl/axis.tcl:2356 -msgid "Select jog increment" -msgstr "Seleciona incremento de Jog" - -#: src/emc/usr_intf/axis/scripts/axis.py:160 -msgid "Continuous jog" -msgstr "Jog continuo" - -#: src/emc/usr_intf/axis/scripts/axis.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:479 -msgid "Home" -msgstr "Home" +msgid "Ctrl-R" +msgstr "Ctrl-R" -#: src/emc/usr_intf/axis/scripts/axis.py:161 -msgid "Send active axis home" -msgstr "Envia eixo ativo para posição Home" +#: share/axis/tcl/axis.tcl:65 +msgid "_Reload" +msgstr "_Reload" -#: src/emc/usr_intf/axis/scripts/axis.py:162 +#: share/axis/tcl/axis.tcl:68 #, fuzzy -msgid "Ctrl-Home" +msgid "Ctrl-S" msgstr "Ctrl-K" -#: src/emc/usr_intf/axis/scripts/axis.py:162 -msgid "Home all axes" -msgstr "" - -#: src/emc/usr_intf/axis/scripts/axis.py:163 -msgid "Shift-Home" +#: share/axis/tcl/axis.tcl:70 +msgid "_Save gcode as..." msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:163 -msgid "Zero G54 offset for active axis" -msgstr "Zera offset G54 para o eixo ativo" +#: share/axis/tcl/axis.tcl:74 +msgid "_Properties..." +msgstr "_Propriedades." -#: src/emc/usr_intf/axis/scripts/axis.py:164 -msgid "End" +#: share/axis/tcl/axis.tcl:80 +msgid "Edit _tool table..." msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:164 -msgid "Set G54 offset for active axis" -msgstr "Ajusta offset G54 para o eixo ativo" - -#: src/emc/usr_intf/axis/scripts/axis.py:165 +#: share/axis/tcl/axis.tcl:84 #, fuzzy -msgid "Jog active axis" -msgstr "Jog no terceiro eixo" +msgid "Reload tool ta_ble" +msgstr "Recarrega.lista de ferramentas" -#: src/emc/usr_intf/axis/scripts/axis.py:168 -msgid "Left, Right" +#: share/axis/tcl/axis.tcl:90 +msgid "_Ladder Editor..." msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:168 -msgid "Jog first axis" -msgstr "Jog no primeiro eixo" - -#: src/emc/usr_intf/axis/scripts/axis.py:169 -msgid "Up, Down" -msgstr "" +#: share/axis/tcl/axis.tcl:102 +msgid "Toggle _Emergency Stop" +msgstr "Botão Parada de Emergência" -#: src/emc/usr_intf/axis/scripts/axis.py:169 -msgid "Jog second axis" -msgstr "Jog no segundo eixo" +#: share/axis/tcl/axis.tcl:107 +msgid "Toggle _Machine Power" +msgstr "Botão Partida" -#: src/emc/usr_intf/axis/scripts/axis.py:170 -msgid "Pg Up, Pg Dn" -msgstr "" +#: share/axis/tcl/axis.tcl:114 +msgid "_Run program" +msgstr "_Rodar o programa" -#: src/emc/usr_intf/axis/scripts/axis.py:170 -msgid "Jog third axis" -msgstr "Jog no terceiro eixo" +#: share/axis/tcl/axis.tcl:118 +#, fuzzy +msgid "Ru_n from selected line" +msgstr "Vista da bandeja ou seleciona linha" -#: src/emc/usr_intf/axis/scripts/axis.py:171 -msgid "Shift+above jogs" -msgstr "" +#: share/axis/tcl/axis.tcl:123 +#, fuzzy +msgid "S_tep" +msgstr "_Passo" -#: src/emc/usr_intf/axis/scripts/axis.py:171 -msgid "Jog at traverse speed" -msgstr "" +#: share/axis/tcl/axis.tcl:128 +#, fuzzy +msgid "_Pause" +msgstr "_Pausar" -#: src/emc/usr_intf/axis/scripts/axis.py:172 -msgid "Jog fourth axis" -msgstr "Jog no quarto eixo " +#: share/axis/tcl/axis.tcl:133 +#, fuzzy +msgid "Re_sume" +msgstr "_Retomar" -#: src/emc/usr_intf/axis/scripts/axis.py:175 -msgid "Toggle between Drag and Rotate mode" +#: share/axis/tcl/axis.tcl:143 +msgid "Stop at M_1" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:176 -msgid "Left Button" -msgstr "Botão esquerdo" - -#: src/emc/usr_intf/axis/scripts/axis.py:176 -#, fuzzy -msgid "Pan, rotate or select line" -msgstr "Vista da bandeja ou seleciona linha" - -#: src/emc/usr_intf/axis/scripts/axis.py:177 -msgid "Shift+Left Button" -msgstr "Tecla Shift+Left" +#: share/axis/tcl/axis.tcl:148 +msgid "Skip lines with '_/'" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:177 +#: share/axis/tcl/axis.tcl:153 #, fuzzy -msgid "Rotate or pan" -msgstr "Roda vista superior" - -#: src/emc/usr_intf/axis/scripts/axis.py:178 -msgid "Right Button" -msgstr "Botão direito" +msgid "Ctrl-M" +msgstr "Ctrl-K" -#: src/emc/usr_intf/axis/scripts/axis.py:178 -#: src/emc/usr_intf/axis/scripts/axis.py:180 -#: src/emc/usr_intf/axis/scripts/axis.py:181 -msgid "Zoom view" -msgstr "Vista em zoom" +#: share/axis/tcl/axis.tcl:155 +msgid "Clear MDI h_istory" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:179 -msgid "Wheel Button" -msgstr "Botão scroll do mouse" +#: share/axis/tcl/axis.tcl:157 +#, fuzzy +msgid "Ctrl-H" +msgstr "Ctrl-K" -#: src/emc/usr_intf/axis/scripts/axis.py:179 -msgid "Rotate view" -msgstr "Gira o campo de visão" +#: share/axis/tcl/axis.tcl:159 +msgid "Copy from MDI hist_ory" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:180 -msgid "Rotate Wheel" -msgstr "Giro do scroll do mouse" +#: share/axis/tcl/axis.tcl:161 +msgid "Ctrl-Shift-H" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:181 -msgid "Control+Left Button" -msgstr "Control +botão esquerdo" +#: share/axis/tcl/axis.tcl:163 +msgid "Paste to MDI histor_y" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:184 -msgid "Manual control" -msgstr "Controle manual" +#: share/axis/tcl/axis.tcl:169 +#, fuzzy +msgid "_Calibration" +msgstr "_Calibrar" -#: src/emc/usr_intf/axis/scripts/axis.py:185 -msgid "Code entry (MDI)" -msgstr "Inserir Código G (MDI)" +#: share/axis/tcl/axis.tcl:173 +#, fuzzy +msgid "Show _Hal Configuration" +msgstr "Mostrar _Configuração Hal" -#: src/emc/usr_intf/axis/scripts/axis.py:186 +#: share/axis/tcl/axis.tcl:177 #, fuzzy -msgid "Control-M" -msgstr "Ctrl-K" +msgid "H_al Meter" +msgstr "H_alMeter" -#: src/emc/usr_intf/axis/scripts/axis.py:186 -msgid "Clear MDI history" -msgstr "" +#: share/axis/tcl/axis.tcl:181 +#, fuzzy +msgid "Ha_l Scope" +msgstr "Ha_lScope" -#: src/emc/usr_intf/axis/scripts/axis.py:187 +#: share/axis/tcl/axis.tcl:185 #, fuzzy -msgid "Control-H" -msgstr "Ctrl-K" +msgid "Sho_w Machinekit Status" +msgstr "Mos_trar Estado do EMC" -#: src/emc/usr_intf/axis/scripts/axis.py:187 -msgid "Copy selected MDI history elements" +#: share/axis/tcl/axis.tcl:189 +msgid "Set _Debug Level" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:188 -msgid "to clipboard" +#: share/axis/tcl/axis.tcl:195 +msgid "Homin_g" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:189 -msgid "Control-Shift-H" +#: share/axis/tcl/axis.tcl:199 +msgid "_Unhoming" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:189 -msgid "Paste clipboard to MDI history" +#: share/axis/tcl/axis.tcl:203 +msgid "_Zero coordinate system" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:190 share/axis/tcl/axis.tcl:1113 -#: src/emc/usr_intf/touchy/touchy.glade:508 -msgid "Override Limits" -msgstr "Ultrapassar limites" +#: share/axis/tcl/axis.tcl:207 +msgid "P1 G5_4" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:192 -msgid "Open program" -msgstr "Abre o programa" +#: share/axis/tcl/axis.tcl:211 +msgid "P2 G5_5" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:193 -#, fuzzy -msgid "Control-R" -msgstr "Ctrl-R" +#: share/axis/tcl/axis.tcl:215 +msgid "P3 G5_6" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:193 -msgid "Reload program" -msgstr "Recarrega o programa" +#: share/axis/tcl/axis.tcl:219 +msgid "P4 G5_7" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:194 -#, fuzzy -msgid "Control-S" -msgstr "Ctrl-K" +#: share/axis/tcl/axis.tcl:223 +msgid "P5 G5_8" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:194 -msgid "Save g-code as" +#: share/axis/tcl/axis.tcl:227 +msgid "P6 G5_9" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:195 -msgid "Run program" -msgstr "Roda o programa" +#: share/axis/tcl/axis.tcl:231 +msgid "P7 G59._1" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:196 -msgid "Step program" -msgstr "Roda uma linha do programa" +#: share/axis/tcl/axis.tcl:235 +msgid "P8 G59._2" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:197 -msgid "Pause program" -msgstr "Pausa o programa" +#: share/axis/tcl/axis.tcl:239 +msgid "P9 G59._3" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:198 -msgid "Resume program" -msgstr "Retoma o programa" +#: share/axis/tcl/axis.tcl:243 +msgid "_G92" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:199 -msgid "Stop running program, or" -msgstr "Pára o programa, ou" +#: share/axis/tcl/axis.tcl:251 +msgid "Tool touch off to wor_kpiece" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:200 -msgid "stop loading program preview" -msgstr "Pára o carregamento da vista preliminar" +#: share/axis/tcl/axis.tcl:257 +msgid "Tool touch off to _fixture" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:202 -msgid "Toggle mist" -msgstr "Refrigeração ar/névoa" +#: share/axis/tcl/axis.tcl:265 +msgid "_Top view" +msgstr "_Vista Superior" -#: src/emc/usr_intf/axis/scripts/axis.py:203 -msgid "Toggle flood" -msgstr "Refrigeração líquida" +#: share/axis/tcl/axis.tcl:272 +msgid "_Rotated Top view" +msgstr "_Roda a vista superior" -#: src/emc/usr_intf/axis/scripts/axis.py:204 -msgid "Spindle brake off" -msgstr "Freio do spindle desativado" +#: share/axis/tcl/axis.tcl:279 +msgid "_Side view" +msgstr "_Vista lateral" -#: src/emc/usr_intf/axis/scripts/axis.py:205 -msgid "Shift-B" -msgstr "" +#: share/axis/tcl/axis.tcl:286 +msgid "_Front view" +msgstr "_Vista frontal" -#: src/emc/usr_intf/axis/scripts/axis.py:205 -msgid "Spindle brake on" -msgstr "Freio do spindle ativado" +#: share/axis/tcl/axis.tcl:293 +msgid "_Perspective view" +msgstr "_Vista em perspectiva" -#: src/emc/usr_intf/axis/scripts/axis.py:206 -msgid "Turn spindle clockwise" -msgstr "Gira o spindle no sentido horário" +#: share/axis/tcl/axis.tcl:302 +msgid "Display _Inches" +msgstr "Mostra medidas em_Polegadas" -#: src/emc/usr_intf/axis/scripts/axis.py:207 -msgid "Turn spindle counterclockwise" -msgstr "Gira o spindle no sentido anti-horário" +#: share/axis/tcl/axis.tcl:309 +msgid "Display _MM" +msgstr "Mostra medidas em_mm" -#: src/emc/usr_intf/axis/scripts/axis.py:208 -msgid "Turn spindle more slowly" -msgstr "Reduz rotação do spindle" +#: share/axis/tcl/axis.tcl:316 +msgid "S_how program" +msgstr "M_ostra o programa" -#: src/emc/usr_intf/axis/scripts/axis.py:209 -msgid "Turn spindle more quickly" -msgstr "Aumenta rotação do spindle" +#: share/axis/tcl/axis.tcl:321 +#, fuzzy +msgid "Show program r_apids" +msgstr "M_ostra o programa" -#: src/emc/usr_intf/axis/scripts/axis.py:211 +#: share/axis/tcl/axis.tcl:326 #, fuzzy -msgid "Control-K" -msgstr "Ctrl-K" +msgid "Alpha-_blend program" +msgstr "Abre o programa" -#: src/emc/usr_intf/axis/scripts/axis.py:211 -msgid "Clear live plot" -msgstr "Apaga traçado da ferramenta" +#: share/axis/tcl/axis.tcl:331 +msgid "Sho_w live plot" +msgstr "_Mostra o traçado em tempo real" -#: src/emc/usr_intf/axis/scripts/axis.py:212 -msgid "Cycle among preset views" -msgstr "Salta entre vistas pré-ajustadas" +#: share/axis/tcl/axis.tcl:336 +msgid "Show too_l" +msgstr "Mostra a _ferramenta" -#: src/emc/usr_intf/axis/scripts/axis.py:213 +#: share/axis/tcl/axis.tcl:341 #, fuzzy -msgid "Cycle among preview, DRO, and user tabs" -msgstr "Salta entre vistas pré-ajustadas" +msgid "Show e_xtents" +msgstr "Mostra _limites" -#: src/emc/usr_intf/axis/scripts/axis.py:215 +#: share/axis/tcl/axis.tcl:345 +msgid "_Grid" +msgstr "" + +#: share/axis/tcl/axis.tcl:350 #, fuzzy -msgid "Ctrl-Space" -msgstr "Ctrl-R" +msgid "Show o_ffsets" +msgstr "Mostra _limites" -#: src/emc/usr_intf/axis/scripts/axis.py:215 -msgid "Clear notifications" -msgstr "" +#: share/axis/tcl/axis.tcl:355 +#, fuzzy +msgid "Sh_ow machine limits" +msgstr "O programa excede os limites da máquina" -#: src/emc/usr_intf/axis/scripts/axis.py:836 -#, python-format -msgid "Unknown tool %d" -msgstr "Ferramenta desconhecida %d" +#: share/axis/tcl/axis.tcl:360 +#, fuzzy +msgid "Show v_elocity" +msgstr "_Mostra o traçado em tempo real" -#: src/emc/usr_intf/axis/scripts/axis.py:838 -msgid "No tool" -msgstr "Hehe Sem ferramenta" +#: share/axis/tcl/axis.tcl:365 +msgid "Show _distance to go" +msgstr "Mostra _distância a percorrer" -#: src/emc/usr_intf/axis/scripts/axis.py:840 -#, fuzzy, python-format -msgid "Tool %(tool)d, offset %(zo)g, diameter %(dia)g" -msgstr "Ferramenta %d, offset %g, diâmetro %g" +#: share/axis/tcl/axis.tcl:370 +msgid "Large coordinate fo_nt" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:842 -#, fuzzy, python-format -msgid "Tool %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" -msgstr "Ferramenta %d, zo %g, xo%, dia %g" +#: share/axis/tcl/axis.tcl:373 +#, fuzzy +msgid "Ctrl-K" +msgstr "Ctrl-K" + +#: share/axis/tcl/axis.tcl:375 +msgid "_Clear live plot" +msgstr "_Apaga traçador em tempo real" -#: src/emc/usr_intf/axis/scripts/axis.py:1013 +#: share/axis/tcl/axis.tcl:384 #, fuzzy -msgid "Filtering..." -msgstr "Alternada" +msgid "Show commanded position" +msgstr "Mostra posição comandada" -#: src/emc/usr_intf/axis/scripts/axis.py:1073 +#: share/axis/tcl/axis.tcl:391 #, fuzzy -msgid "Filter failed" -msgstr "Filtro de programa %r falhado" +msgid "Show actual position" +msgstr "Mostra posição atual" -#: src/emc/usr_intf/axis/scripts/axis.py:1074 -#, python-format -msgid "" -"The program %(program)r exited with code %(code)d. Any error messages it " -"produced are shown below:" -msgstr "" +#: share/axis/tcl/axis.tcl:400 +#, fuzzy +msgid "Show machine position" +msgstr "Mostra posição da máquina" -#: src/emc/usr_intf/axis/scripts/axis.py:1139 -#, python-format -msgid "G-Code error in %s" -msgstr "Erro no Código-G em %s" +#: share/axis/tcl/axis.tcl:407 +#, fuzzy +msgid "Show relative position" +msgstr "Mostra posição relativa" -#: src/emc/usr_intf/axis/scripts/axis.py:1140 -#, fuzzy, python-format -msgid "" -"Near line %(seq)d of %(f)s:\n" -"%(error_str)s" -msgstr "" -"Próximo da linha %d de %s:\n" -"%s" +#: share/axis/tcl/axis.tcl:416 +msgid "Joint mode" +msgstr "Modo Joint" -#: src/emc/usr_intf/axis/scripts/axis.py:1292 -#: src/emc/usr_intf/axis/scripts/axis.py:2725 share/axis/tcl/axis.tcl:1092 -#: share/axis/tcl/axis.tcl:1094 share/axis/tcl/axis.tcl:2144 -msgid "Continuous" -msgstr "Contínuo" +#: share/axis/tcl/axis.tcl:423 +#, fuzzy +msgid "World mode" +msgstr "Modo Joint" -#: src/emc/usr_intf/axis/scripts/axis.py:1403 -msgid "Ok" +#: share/axis/tcl/axis.tcl:431 +msgid "_Off" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1546 -msgid "T Tool Table" +#: share/axis/tcl/axis.tcl:437 +msgid "_Custom" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1557 -#: src/emc/usr_intf/axis/scripts/axis.py:1730 -#: src/emc/usr_intf/stepconf/stepconf.py:1691 -#: src/emc/usr_intf/stepconf/stepconf.py:2235 -msgid "in" +#: share/axis/tcl/axis.tcl:443 +msgid "User_0" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1560 -msgid " radius" +#: share/axis/tcl/axis.tcl:447 +msgid "User_1" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1562 -msgid " diameter" +#: share/axis/tcl/axis.tcl:451 +msgid "User_2" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1563 -msgid "°" +#: share/axis/tcl/axis.tcl:455 +msgid "User_3" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1572 -msgid "Coordinate System:" +#: share/axis/tcl/axis.tcl:459 +msgid "User_4" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1588 -msgid "fixture" +#: share/axis/tcl/axis.tcl:463 +msgid "User_5" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1589 -msgid "workpiece" +#: share/axis/tcl/axis.tcl:467 +msgid "User_6" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1605 -msgid "Name:" -msgstr "Nome:" - -#: src/emc/usr_intf/axis/scripts/axis.py:1605 -msgid "Size:" -msgstr "Tamanho:" - -#: src/emc/usr_intf/axis/scripts/axis.py:1606 -msgid "Tool order:" -msgstr "Ordem das ferramentas:" +#: share/axis/tcl/axis.tcl:471 +msgid "User_7" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1606 -msgid "Rapid distance:" -msgstr "Distância em posicionamento:" +#: share/axis/tcl/axis.tcl:475 +msgid "User_8" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1607 -msgid "Feed distance:" -msgstr "Distância em trabalho:" +#: share/axis/tcl/axis.tcl:479 +msgid "User_9" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1607 -msgid "Total distance:" -msgstr "Distância total" +#: share/axis/tcl/axis.tcl:491 +msgid "_About AXIS" +msgstr "_About Axis" -#: src/emc/usr_intf/axis/scripts/axis.py:1608 -msgid "Run time:" -msgstr "Tempo de execução:" +#: share/axis/tcl/axis.tcl:495 +msgid "Quick _Reference" +msgstr "Referência Rápida" -#: src/emc/usr_intf/axis/scripts/axis.py:1608 -msgid "X bounds:" -msgstr "Limites em X:" +#: share/axis/tcl/axis.tcl:505 +#, fuzzy +msgid "_Machine" +msgstr "Máquina" -#: src/emc/usr_intf/axis/scripts/axis.py:1609 -msgid "Y bounds:" -msgstr "Limites em Y:" +#: share/axis/tcl/axis.tcl:509 +#, fuzzy +msgid "_View" +msgstr "_Vista" -#: src/emc/usr_intf/axis/scripts/axis.py:1609 -msgid "Z bounds:" -msgstr "Limites em Z:" +#: share/axis/tcl/axis.tcl:513 +msgid "_User" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1610 -msgid "A bounds:" -msgstr "Limites em A:" +#: share/axis/tcl/axis.tcl:526 +msgid "Toggle Emergency Stop [F1]" +msgstr "Botão Parada de Emergência [F1]" -#: src/emc/usr_intf/axis/scripts/axis.py:1610 -msgid "B bounds:" -msgstr "Limites em B" +#: share/axis/tcl/axis.tcl:535 +msgid "Toggle Machine power [F2]" +msgstr "Botão Acionamento da Máquina [F2]" -#: src/emc/usr_intf/axis/scripts/axis.py:1611 -msgid "C bounds:" -msgstr "Limites em C" +#: share/axis/tcl/axis.tcl:546 +msgid "Open G-Code file [O]" +msgstr "Abrir arquivo CódigoG [O]" -#: src/emc/usr_intf/axis/scripts/axis.py:1635 -#, python-format -msgid "Program exceeds machine minimum on axis %s" -msgstr "O programa excede o limite inferior no eixo %s" +#: share/axis/tcl/axis.tcl:554 +msgid "Reopen current file [Control-R]" +msgstr "Recarrega Código G [Control-R]" -#: src/emc/usr_intf/axis/scripts/axis.py:1638 -#, python-format -msgid "Program exceeds machine maximum on axis %s" -msgstr "O programa excede o limite superior no eixo %s" +#: share/axis/tcl/axis.tcl:564 +msgid "Begin executing current file [R]" +msgstr "Inicia execução do Código G [R]" -#: src/emc/usr_intf/axis/scripts/axis.py:1643 -msgid "Program exceeds machine limits" -msgstr "O programa excede os limites da máquina" +#: share/axis/tcl/axis.tcl:572 +msgid "Execute next line [T]" +msgstr "Executa a próxima linha [T]" -#: src/emc/usr_intf/axis/scripts/axis.py:1646 -msgid "Run Anyway" -msgstr "Ignorar e rodar programa" +#: share/axis/tcl/axis.tcl:580 +msgid "Pause [P] / resume [S] execution" +msgstr "Pausa [P] / Retoma [S] execução" -#: src/emc/usr_intf/axis/scripts/axis.py:1708 -msgid "No file loaded" -msgstr "" +#: share/axis/tcl/axis.tcl:588 +msgid "Stop program execution [ESC]" +msgstr "Pára execução do programa [ESC]" -#: src/emc/usr_intf/axis/scripts/axis.py:1716 -#, python-format -msgid "generated from %s" +#: share/axis/tcl/axis.tcl:598 +msgid "Toggle skip lines with '/' [Alt-M /]" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1722 -#, python-format -msgid "" -"%(size)s bytes\n" -"%(lines)s gcode lines" +#: share/axis/tcl/axis.tcl:605 +msgid "Toggle optional pause [Alt-M 1]" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1748 -#, python-format -msgid "%.1f minutes" -msgstr "" +#: share/axis/tcl/axis.tcl:614 src/emc/usr_intf/gmoccapy/gmoccapy.glade:549 +#, fuzzy +msgid "Zoom in" +msgstr "Aproxima zoom [+]" -#: src/emc/usr_intf/axis/scripts/axis.py:1750 -#, fuzzy, python-format -msgid "%d seconds" -msgstr "Jog no segundo eixo" +#: share/axis/tcl/axis.tcl:622 src/emc/usr_intf/gmoccapy/gmoccapy.glade:567 +#, fuzzy +msgid "Zoom out" +msgstr "Afasta zoom [-]" -#: src/emc/usr_intf/axis/scripts/axis.py:1758 -#, fuzzy, python-format -msgid "%(a)f to %(b)f = %(diff)f %(units)s" -msgstr "%f até %f = %f %s" +#: share/axis/tcl/axis.tcl:630 +msgid "Top view" +msgstr "Vista superior" -#: src/emc/usr_intf/axis/scripts/axis.py:1759 +#: share/axis/tcl/axis.tcl:638 #, fuzzy -msgid "G-Code Properties" -msgstr "Erro no Código-G em %s" +msgid "Rotated top view" +msgstr "_Roda a vista superior" -#: src/emc/usr_intf/axis/scripts/axis.py:1883 -msgid "All machinable files" -msgstr "Todos arquivos usináveis" +#: share/axis/tcl/axis.tcl:646 +msgid "Side view" +msgstr "Vista lateral" -#: src/emc/usr_intf/axis/scripts/axis.py:1884 -#: src/emc/usr_intf/axis/scripts/axis.py:2464 -msgid "rs274ngc files" -msgstr "Arquivos rs274ngc" +#: share/axis/tcl/axis.tcl:654 +#, fuzzy +msgid "Front view" +msgstr "_Vista frontal" -#: src/emc/usr_intf/axis/scripts/axis.py:1899 -msgid "axis cannot accept remote command while running" -msgstr "" +#: share/axis/tcl/axis.tcl:662 +msgid "Perspective view" +msgstr "Vista em perspectiva" -#: src/emc/usr_intf/axis/scripts/axis.py:2255 -msgid "Axis is already homed, are you sure you want to re-home?" +#: share/axis/tcl/axis.tcl:670 +msgid "Toggle between Drag and Rotate Mode [D]" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2268 -msgid "This axis is already homed, are you sure you want to re-home?" -msgstr "" +#: share/axis/tcl/axis.tcl:685 +msgid "Clear live plot [Ctrl-K]" +msgstr "Apaga traçador em tempo real [Ctrl-K]" -#: src/emc/usr_intf/axis/scripts/axis.py:2308 share/axis/tcl/axis.tcl:1108 -msgid "Touch Off" -msgstr "Apalpador" +#: share/axis/tcl/axis.tcl:836 +msgid "Manual Control [F3]" +msgstr "Controle Manual [F3]" -#: src/emc/usr_intf/axis/scripts/axis.py:2309 -#, fuzzy, python-format -msgid "Enter %s coordinate relative to %%s:" -msgstr "Digite %s coordenada em relação a peça de trabalho" +#: share/axis/tcl/axis.tcl:837 +msgid "MDI [F5]" +msgstr "MDI [F5]" -#: src/emc/usr_intf/axis/scripts/axis.py:2476 -msgid "Error saving file" -msgstr "" +#: share/axis/tcl/axis.tcl:851 share/axis/tcl/axis.tcl:2158 +#: share/axis/tcl/axis.tcl:2328 +#, fuzzy +msgid "Axis:" +msgstr "Eixo:" -#: src/emc/usr_intf/axis/scripts/axis.py:2859 -#: src/emc/usr_intf/touchy/touchy.glade:577 +#: share/axis/tcl/axis.tcl:1172 src/emc/usr_intf/gscreen/gscreen.glade:2944 #, fuzzy -msgid "Home All" +msgid "Home Axis" msgstr "Home" -#: src/emc/usr_intf/axis/scripts/axis.py:2861 -msgid "Home all axes [Ctrl-Home]" -msgstr "" - -#: src/emc/usr_intf/axis/scripts/axis.py:2864 -msgid "Home All Axes" -msgstr "" - -#: src/emc/usr_intf/axis/scripts/axis.py:2871 -msgid "Unhome All Axes" -msgstr "" +#: share/axis/tcl/axis.tcl:1246 +#, fuzzy +msgid "Spindle:" +msgstr "Spindle:" -#: src/emc/usr_intf/axis/scripts/axis.py:2895 -#, python-format -msgid "Home Axis _%s" -msgstr "" +#: share/axis/tcl/axis.tcl:1293 src/emc/usr_intf/touchy/touchy.glade:946 +#: src/emc/usr_intf/stepconf/main_page.glade:406 +#: src/emc/usr_intf/gscreen/gscreen.glade:4067 +msgid "-" +msgstr "-" -#: src/emc/usr_intf/axis/scripts/axis.py:2897 -#, python-format -msgid "Unhome Axis _%s" -msgstr "" +#: share/axis/tcl/axis.tcl:1307 src/emc/usr_intf/stepconf/main_page.glade:403 +#: src/emc/usr_intf/gscreen/gscreen.glade:4056 +msgid "+" +msgstr "+" -#: src/emc/usr_intf/axis/scripts/axis.py:3040 -msgid "Run from here" -msgstr "" +#: share/axis/tcl/axis.tcl:1312 +#, fuzzy +msgid "Brake" +msgstr "Freio" -#: src/emc/usr_intf/axis/scripts/axis.py:3335 -msgid "Error in ~/.axisrc" -msgstr "" +#: share/axis/tcl/axis.tcl:1359 +#, fuzzy +msgid "Coolant:" +msgstr "Refrigeração:" -#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:102 -msgid "LinuxCNC Status" -msgstr "" +#: share/axis/tcl/axis.tcl:1364 +#, fuzzy +msgid "Mist" +msgstr "Ar/Névoa" -#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:118 +#: share/axis/tcl/axis.tcl:1369 #, fuzzy -msgid "Copy All" -msgstr "Home" +msgid "Flood" +msgstr "Líquido" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:29 -#, python-format -msgid "Insert tool %d and click continue when ready" -msgstr "Coloque a ferramenta %d e tecle Continuar quando pronto" +#: share/axis/tcl/axis.tcl:1441 +msgid "History:" +msgstr "Histórico:" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:31 -msgid "Remove the tool and click continue when ready" -msgstr "Remova a ferramenta e tecle Continuar quando pronto" +#: share/axis/tcl/axis.tcl:1464 +#, fuzzy +msgid "MDI Command:" +msgstr "Comandada" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 -#: src/emc/usr_intf/touchy/mdi.py:49 -msgid "Tool change" -msgstr "Troca de ferramenta" +#: share/axis/tcl/axis.tcl:1473 +msgid "Go" +msgstr "Partida" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 -msgid "Continue" -msgstr "Continuar" +#: share/axis/tcl/axis.tcl:1479 +#, fuzzy +msgid "Active G-Codes:" +msgstr "Códigos G ativos:" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:55 -msgid "AXIS Manual Toolchanger" -msgstr "" +#: share/axis/tcl/axis.tcl:1557 src/emc/usr_intf/gmoccapy/gmoccapy.glade:771 +#, fuzzy +msgid "Preview" +msgstr "Vista lateral" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:59 -msgid "" -"This window is part of the AXIS manual toolchanger. It is safe to close or " -"iconify this window, or it will close automatically after a few seconds." +#: share/axis/tcl/axis.tcl:1558 +msgid "DRO" msgstr "" -"Esta janela é parte do controle de troca de ferramenta do Axis. É indicado " -"fechar ou reduzir ersta janela ou ela será automaticamente fechada em alguns " -"segundos." - -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:507 -#, python-format -msgid "%s: Image to gcode" -msgstr "%s: Image to gcode" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:508 -msgid "Image to gcode" -msgstr "Image to gcode" +#: share/axis/tcl/axis.tcl:1645 share/axis/tcl/axis.tcl:1658 +#, fuzzy +msgid "Jog Speed:" +msgstr "Velocidade de Jog" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:518 -#, fuzzy, python-format -msgid "" -"Image size: %(w)d x %(h)d pixels\n" -"Minimum pixel value: %(min)d\n" -"Maximum pixel value: %(max)d" +#: share/axis/tcl/axis.tcl:1670 +msgid "Max Velocity:" msgstr "" -"Tamanho da imagem: %d x %d pixels\n" -"Mínimo valor em pixel: %d\n" -"Máximo valor em pixel: %d" - -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 -msgid "G20 (in)" -msgstr "G20 (polegadas)" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 -msgid "G21 (mm)" -msgstr "G21 (mm)" +#: share/axis/tcl/axis.tcl:1699 +#, fuzzy +msgid "Spindle Override:" +msgstr "Velocidade da máquina" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 -#: src/emc/usr_intf/touchy/emc_interface.py:417 -msgid "None" -msgstr "Nenhuma" +#: share/axis/tcl/axis.tcl:1701 share/axis/tcl/axis.tcl:1741 +#: share/axis/tcl/axis.tcl:1779 src/emc/usr_intf/pncconf/pncconf.glade:2834 +#: src/emc/usr_intf/pncconf/pncconf.glade:2845 +#: src/emc/usr_intf/pncconf/pncconf.glade:2949 +#: src/emc/usr_intf/pncconf/pncconf.glade:2962 +#: src/emc/usr_intf/pncconf/pncconf.glade:2975 +#: src/emc/usr_intf/pncconf/pncconf.glade:2988 +#: src/emc/usr_intf/pncconf/pncconf.glade:3001 +#: src/emc/usr_intf/pncconf/pncconf.glade:3014 +#: src/emc/usr_intf/pncconf/pncconf.glade:3127 +#: src/emc/usr_intf/pncconf/pncconf.glade:3140 +#: src/emc/usr_intf/pncconf/pncconf.glade:3153 +#: src/emc/usr_intf/pncconf/pncconf.glade:3166 +#: src/emc/usr_intf/pncconf/pncconf.glade:3179 +#: src/emc/usr_intf/pncconf/pncconf.glade:3192 +#: src/emc/usr_intf/pncconf/pncconf.glade:3205 +#: src/emc/usr_intf/pncconf/pncconf.glade:3218 +#: src/emc/usr_intf/pncconf/pncconf.glade:3715 +#: src/emc/usr_intf/pncconf/pncconf.glade:3726 +#: src/emc/usr_intf/pncconf/pncconf.glade:3830 +#: src/emc/usr_intf/pncconf/pncconf.glade:3843 +#: src/emc/usr_intf/pncconf/pncconf.glade:3856 +#: src/emc/usr_intf/pncconf/pncconf.glade:3869 +#: src/emc/usr_intf/pncconf/pncconf.glade:3882 +#: src/emc/usr_intf/pncconf/pncconf.glade:3895 +#: src/emc/usr_intf/pncconf/pncconf.glade:4008 +#: src/emc/usr_intf/pncconf/pncconf.glade:4021 +#: src/emc/usr_intf/pncconf/pncconf.glade:4034 +#: src/emc/usr_intf/pncconf/pncconf.glade:4047 +#: src/emc/usr_intf/pncconf/pncconf.glade:4060 +#: src/emc/usr_intf/pncconf/pncconf.glade:4073 +#: src/emc/usr_intf/pncconf/pncconf.glade:4086 +#: src/emc/usr_intf/pncconf/pncconf.glade:4099 +#: src/emc/usr_intf/pncconf/pncconf.glade:4596 +#: src/emc/usr_intf/pncconf/pncconf.glade:4607 +#: src/emc/usr_intf/pncconf/pncconf.glade:4711 +#: src/emc/usr_intf/pncconf/pncconf.glade:4724 +#: src/emc/usr_intf/pncconf/pncconf.glade:4737 +#: src/emc/usr_intf/pncconf/pncconf.glade:4750 +#: src/emc/usr_intf/pncconf/pncconf.glade:4763 +#: src/emc/usr_intf/pncconf/pncconf.glade:4776 +#: src/emc/usr_intf/pncconf/pncconf.glade:4889 +#: src/emc/usr_intf/pncconf/pncconf.glade:4902 +#: src/emc/usr_intf/pncconf/pncconf.glade:4915 +#: src/emc/usr_intf/pncconf/pncconf.glade:4928 +#: src/emc/usr_intf/pncconf/pncconf.glade:4941 +#: src/emc/usr_intf/pncconf/pncconf.glade:4954 +#: src/emc/usr_intf/pncconf/pncconf.glade:4967 +#: src/emc/usr_intf/pncconf/pncconf.glade:4980 +#: src/emc/usr_intf/pncconf/pncconf.glade:5631 +#: src/emc/usr_intf/pncconf/pncconf.glade:5643 +#: src/emc/usr_intf/pncconf/pncconf.glade:5690 +msgid "%" +msgstr "%" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 -msgid "White" +#: share/axis/tcl/axis.tcl:1777 +#, fuzzy +msgid "Rapid Override:" +msgstr "Velocidade da máquina" + +#: share/axis/tcl/axis.tcl:1819 +#, fuzzy +msgid "" +"Machinekit/AXIS version $version\n" +"\n" +"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff " +"Epler and Chris Radek.\n" +"\n" +"This is free software, and you are welcome to redistribute it under certain " +"conditions. See the file COPYING, included with Machinekit.\n" +"\n" +"Visit the Machinekit web site: " msgstr "" +"LinuxCNC/AXIS version $version\n" +"\n" +"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff " +"Epler and Chris Radek.\n" +"\n" +"This is free software, and you are welcome to redistribute it under certain " +"conditions. See the file COPYING, included with AXIS.\n" +"\n" +"Visit the LinuxCNC web site: " -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +#: share/axis/tcl/axis.tcl:1847 #, fuzzy -msgid "Black" -msgstr "Freio" +msgid "About AXIS" +msgstr "_About Axis" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Rows" -msgstr "Linhas" +#: share/axis/tcl/axis.tcl:1876 +msgid "AXIS Quick Reference" +msgstr "Referência rápida do AXIS" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Columns" -msgstr "Colunas" +#: share/axis/tcl/axis.tcl:2017 +msgid "AXIS with MachineKit $::version on $::machine" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Rows then Columns" -msgstr "Linhas para colunas" +#: share/axis/tcl/axis.tcl:2019 +#, fuzzy +msgid "(no file)" +msgstr "AXIS (Sem arquivo)" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Columns then Rows" -msgstr "Colunas para linhas" +#: share/axis/tcl/axis.tcl:2091 share/axis/tcl/axis.tcl:2096 +#, fuzzy +msgid "Position:" +msgstr "Posição:" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Positive" -msgstr "Positivo" +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/gscreen/gscreen.py:3516 +#, fuzzy +msgid "Machine" +msgstr "Máquina" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Negative" -msgstr "Negativo" +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/touchy/touchy.glade:155 +#, fuzzy +msgid "Relative" +msgstr "Relativa" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Alternating" -msgstr "Alternada" +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3329 +#, fuzzy +msgid "Actual" +msgstr "Atual" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Up Milling" -msgstr "Usinagem para cima" +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3318 +#, fuzzy +msgid "Commanded" +msgstr "Comandada" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Down Milling" -msgstr "Usinagem para baixo" +#: share/axis/tcl/axis.tcl:2154 share/axis/tcl/axis.tcl:2328 +#, fuzzy +msgid "Joint:" +msgstr "Modo Joint" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "Ball End" -msgstr "Ponta bola" +#: share/axis/tcl/axis.tcl:2463 +msgid "Turn spindle counterclockwise [F10]" +msgstr "Girar o spindle no sentido anti-horário [F10]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "Flat End" -msgstr "Ponta plana" +#: share/axis/tcl/axis.tcl:2464 +msgid "Turn spindle clockwise [F9]" +msgstr "Girar o spindle no sentio horário [F9]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +#: share/axis/tcl/axis.tcl:2465 +msgid "Stop spindle [F9/F10]" +msgstr "Pára o spindle [F9/F10]" + +#: share/axis/tcl/axis.tcl:2466 #, fuzzy -msgid "30 Degree" -msgstr "60 graus" +msgid "Turn spindle Faster [F12]" +msgstr "Girar o spindle no sentio horário [F9]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "45 Degree" -msgstr "45 graus" +#: share/axis/tcl/axis.tcl:2467 +#, fuzzy +msgid "Turn spindle Slower [F11]" +msgstr "Girar o spindle no sentio horário [F9]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "60 Degree" -msgstr "60 graus" +#: share/axis/tcl/axis.tcl:2468 +msgid "Turn spindle brake on [Shift-B] or off [B]" +msgstr "Aciona freio do spindle ON [Shift-B] ou OFF [B]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 -msgid "Secondary" -msgstr "Secundária" +#: share/axis/tcl/axis.tcl:2469 +msgid "Turn flood on or off [F8]" +msgstr "Refrigeração líquida ON ou OFF [F8]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 -msgid "Full" -msgstr "Completa" +#: share/axis/tcl/axis.tcl:2470 +msgid "Turn mist on or off [F7]" +msgstr "Refrigeração por ar/névoa ON ou OFF [F7]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:654 -msgid "Invert Image" -msgstr "Inverter imagem" +#: share/axis/tcl/axis.tcl:2471 +msgid "Send active axis home [Home]" +msgstr "Envia eixo ativo para Home [Home]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:655 -msgid "Normalize Image" -msgstr "Normalizar imagem" +#: share/axis/tcl/axis.tcl:2472 +msgid "Set G54 offset for active axis [End]" +msgstr "Seleciona offset G54 para o eixo ativo [End]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:656 -msgid "Extend Image Border" -msgstr "" +#: share/axis/tcl/axis.tcl:2473 +msgid "Activate axis [X]" +msgstr "Ativa o eixo [X]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:657 -#, fuzzy -msgid "Pixel Size (Units)" -msgstr "Tamanho em pixel" +#: share/axis/tcl/axis.tcl:2474 +msgid "Activate axis [Y]" +msgstr "Ativa o eixo [Y]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:658 -msgid "Depth (units)" -msgstr "Profundidade (unidades)" +#: share/axis/tcl/axis.tcl:2475 +msgid "Activate axis [Z]" +msgstr "Ativa o eixo [Z]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:659 -msgid "Tolerance (units)" -msgstr "Tolerância (unidades)" +#: share/axis/tcl/axis.tcl:2476 +msgid "Activate axis [A]" +msgstr "Ativa o eixo [A]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:660 -#, fuzzy -msgid "Stepover (pixels)" -msgstr "Avanço em Y (pixels)" +#: share/axis/tcl/axis.tcl:2477 +msgid "Activate axis [4]" +msgstr "Ativa o eixo [4]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:661 -msgid "Tool Diameter (units)" -msgstr "Diâmetro da ferramenta (unidades)" +#: share/axis/tcl/axis.tcl:2478 +msgid "Activate axis [5]" +msgstr "Ativa o eixo [5]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:662 -msgid "Tool Type" -msgstr "Tipo da ferramenta" +#: share/axis/tcl/axis.tcl:2479 share/axis/tcl/axis.tcl:2480 +msgid "Jog selected axis" +msgstr "Jog no eixo selecionado" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:663 -msgid "Feed Rate (units per minute)" -msgstr "Velocidade de trabalho (unidades por minuto)" +#: share/axis/tcl/axis.tcl:2482 +msgid "Temporarily allow jogging outside machine limits [L]" +msgstr "Permite temporariamente Jog além do limite da máquina [L]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:664 +#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:47 #, fuzzy -msgid "Plunge Feed Rate (units per minute)" -msgstr "Velocidade de trabalho (unidades por minuto)" - -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:666 -msgid "Safety Height (units)" -msgstr "Altura de segurança (unidades)" +msgid "Spindle CW" +msgstr "Spindle:" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:667 +#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:48 #, fuzzy -msgid "Scan Pattern" -msgstr "Padrão de Scan" - -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:668 -msgid "Scan Direction" -msgstr "" +msgid "Spindle CCW" +msgstr "Spindle:" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:669 -msgid "Lace Bounding" -msgstr "" +#: src/emc/usr_intf/touchy/mdi.py:50 +#, fuzzy +msgid "Set tool number" +msgstr "_Retomar" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:670 -msgid "Contact Angle (degrees)" -msgstr "" +#: src/emc/usr_intf/touchy/mdi.py:51 src/emc/usr_intf/gscreen/mdi.py:50 +#, fuzzy +msgid "Input control" +msgstr "Controle manual" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:671 -msgid "Spindle Speed (RPM)" +#: src/emc/usr_intf/touchy/mdi.py:54 src/emc/usr_intf/touchy/mdi.py:55 +#: src/emc/usr_intf/gscreen/mdi.py:53 src/emc/usr_intf/gscreen/mdi.py:54 +msgid "Straight rapid" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:672 -msgid "Roughing offset (units, 0=no roughing)" +#: src/emc/usr_intf/touchy/mdi.py:56 src/emc/usr_intf/touchy/mdi.py:57 +#: src/emc/usr_intf/gscreen/mdi.py:55 src/emc/usr_intf/gscreen/mdi.py:56 +msgid "Straight feed" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:673 -msgid "Roughing depth per pass (units)" +#: src/emc/usr_intf/touchy/mdi.py:58 src/emc/usr_intf/touchy/mdi.py:59 +#: src/emc/usr_intf/gscreen/mdi.py:57 src/emc/usr_intf/gscreen/mdi.py:58 +msgid "Arc CW" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:740 -msgid "image-to-gcode: User pressed cancel" +#: src/emc/usr_intf/touchy/mdi.py:60 src/emc/usr_intf/touchy/mdi.py:61 +#: src/emc/usr_intf/gscreen/mdi.py:59 src/emc/usr_intf/gscreen/mdi.py:60 +msgid "Arc CCW" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:753 -msgid "Depth images" -msgstr "Profundidade das imagens" - -#: src/emc/usr_intf/axis/scripts/debuglevel.py:22 -msgid "LinuxCNC Debug Level" +#: src/emc/usr_intf/touchy/mdi.py:62 src/emc/usr_intf/touchy/mdi.py:63 +#: src/emc/usr_intf/gscreen/mdi.py:61 src/emc/usr_intf/gscreen/mdi.py:62 +msgid "Dwell" msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:23 -msgid "debuglevel" -msgstr "" +#: src/emc/usr_intf/touchy/mdi.py:64 src/emc/usr_intf/gscreen/mdi.py:63 +#, fuzzy +msgid "Setup" +msgstr "_Passo" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:36 +#: src/emc/usr_intf/touchy/mdi.py:65 src/emc/usr_intf/gscreen/mdi.py:64 #, fuzzy -msgid "Configuration *" -msgstr "Mostrar _Configuração Hal" +msgid "Spindle synchronized feed" +msgstr "Freio do spindle ativado" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:37 -msgid "Version Numbers *" +#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:65 +msgid "Rigid tap" msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:38 -msgid "NML *" +#: src/emc/usr_intf/touchy/mdi.py:67 src/emc/usr_intf/touchy/mdi.py:68 +#: src/emc/usr_intf/touchy/mdi.py:69 src/emc/usr_intf/touchy/mdi.py:70 +#: src/emc/usr_intf/gscreen/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:67 +#: src/emc/usr_intf/gscreen/mdi.py:68 src/emc/usr_intf/gscreen/mdi.py:69 +msgid "Probe" msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:39 -msgid "RCS *" +#: src/emc/usr_intf/touchy/mdi.py:71 src/emc/usr_intf/gscreen/mdi.py:70 +msgid "Radius compensation left" msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:40 -msgid "Task Issue" +#: src/emc/usr_intf/touchy/mdi.py:72 src/emc/usr_intf/gscreen/mdi.py:71 +msgid "Radius compensation right" msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:41 -msgid "Motion Time" +#: src/emc/usr_intf/touchy/mdi.py:73 src/emc/usr_intf/gscreen/mdi.py:72 +msgid "Radius compensation left, immediate" msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:43 -msgid "Interpreter List" +#: src/emc/usr_intf/touchy/mdi.py:74 src/emc/usr_intf/gscreen/mdi.py:73 +msgid "Radius compensation right, immediate" msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:47 -#, python-format -msgid "" -"Inifile setting for this debug level:\n" -"[EMC]DEBUG=0x%08x" +#: src/emc/usr_intf/touchy/mdi.py:75 src/emc/usr_intf/gscreen/mdi.py:74 +msgid "Tool length offset" msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:81 -msgid " * This option can only be enabled in the inifile" +#: src/emc/usr_intf/touchy/mdi.py:76 src/emc/usr_intf/gscreen/mdi.py:75 +msgid "Tool length offset immediate" msgstr "" -#: share/axis/tcl/axis.tcl:49 -#, fuzzy -msgid "_Open..." -msgstr "_Abrir" +#: src/emc/usr_intf/touchy/mdi.py:77 src/emc/usr_intf/gscreen/mdi.py:76 +msgid "Motion in unoffset coordinates" +msgstr "" -#: share/axis/tcl/axis.tcl:53 +#: src/emc/usr_intf/touchy/mdi.py:78 src/emc/usr_intf/gscreen/mdi.py:77 #, fuzzy -msgid "Recent _Files" -msgstr "Todos os arquivos" +msgid "Continuous mode" +msgstr "Jog continuo" -#: share/axis/tcl/axis.tcl:57 -msgid "_Edit..." +#: src/emc/usr_intf/touchy/mdi.py:80 src/emc/usr_intf/gscreen/mdi.py:79 +msgid "Drill" msgstr "" -#: share/axis/tcl/axis.tcl:60 -#, fuzzy -msgid "Ctrl-R" -msgstr "Ctrl-R" +#: src/emc/usr_intf/touchy/mdi.py:81 src/emc/usr_intf/gscreen/mdi.py:80 +msgid "Drill with dwell" +msgstr "" -#: share/axis/tcl/axis.tcl:62 -msgid "_Reload" -msgstr "_Reload" +#: src/emc/usr_intf/touchy/mdi.py:82 src/emc/usr_intf/gscreen/mdi.py:81 +msgid "Peck drill" +msgstr "" -#: share/axis/tcl/axis.tcl:65 +#: src/emc/usr_intf/touchy/mdi.py:83 src/emc/usr_intf/gscreen/mdi.py:82 +msgid "Chip-break drill" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:84 src/emc/usr_intf/gscreen/mdi.py:83 #, fuzzy -msgid "Ctrl-S" -msgstr "Ctrl-K" +msgid "Bore" +msgstr "Freio" -#: share/axis/tcl/axis.tcl:67 -msgid "_Save gcode as..." +#: src/emc/usr_intf/touchy/mdi.py:85 src/emc/usr_intf/gscreen/mdi.py:84 +msgid "Bore with dwell" msgstr "" -#: share/axis/tcl/axis.tcl:71 -msgid "_Properties..." -msgstr "_Propriedades." +#: src/emc/usr_intf/touchy/mdi.py:86 src/emc/usr_intf/gscreen/mdi.py:85 +msgid "Offset all coordinate systems" +msgstr "" -#: share/axis/tcl/axis.tcl:77 -msgid "Edit _tool table..." +#: src/emc/usr_intf/touchy/mdi.py:87 src/emc/usr_intf/gscreen/mdi.py:86 +msgid "CSS Mode" msgstr "" -#: share/axis/tcl/axis.tcl:81 +#: src/emc/usr_intf/touchy/emc_interface.py:410 +msgid "CCW" +msgstr "" + +#: src/emc/usr_intf/touchy/emc_interface.py:410 #, fuzzy -msgid "Reload tool ta_ble" -msgstr "Recarrega.lista de ferramentas" +msgid "Stopped" +msgstr "_Parar" -#: share/axis/tcl/axis.tcl:87 -msgid "_Ladder Editor..." +#: src/emc/usr_intf/touchy/emc_interface.py:410 +msgid "CW" msgstr "" -#: share/axis/tcl/axis.tcl:99 -msgid "Toggle _Emergency Stop" -msgstr "Botão Parada de Emergência" +#: src/emc/usr_intf/touchy/touchy.glade:7 +msgid "LinuxCNC/Touchy" +msgstr "" -#: share/axis/tcl/axis.tcl:104 -msgid "Toggle _Machine Power" -msgstr "Botão Partida" +#. # Touchy is Copyright (c) 2009 Chris Radek # # Touchy 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 2 of the License, or # (at your option) any later version. # # Touchy 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. +#: src/emc/usr_intf/touchy/touchy.glade:11 +msgid "window1" +msgstr "" -#: share/axis/tcl/axis.tcl:111 -msgid "_Run program" -msgstr "_Rodar o programa" +#: src/emc/usr_intf/touchy/touchy.glade:31 +msgid "xa" +msgstr "" -#: share/axis/tcl/axis.tcl:115 -#, fuzzy -msgid "Ru_n from selected line" -msgstr "Vista da bandeja ou seleciona linha" +#: src/emc/usr_intf/touchy/touchy.glade:44 +msgid "xd" +msgstr "" -#: share/axis/tcl/axis.tcl:120 -#, fuzzy -msgid "S_tep" -msgstr "_Passo" +#: src/emc/usr_intf/touchy/touchy.glade:57 +msgid "yr" +msgstr "" -#: share/axis/tcl/axis.tcl:125 -#, fuzzy -msgid "_Pause" -msgstr "_Pausar" +#: src/emc/usr_intf/touchy/touchy.glade:68 +msgid "ya" +msgstr "" -#: share/axis/tcl/axis.tcl:130 -#, fuzzy -msgid "Re_sume" -msgstr "_Retomar" +#: src/emc/usr_intf/touchy/touchy.glade:81 +msgid "yd" +msgstr "" -#: share/axis/tcl/axis.tcl:140 -msgid "Stop at M_1" +#: src/emc/usr_intf/touchy/touchy.glade:94 +msgid "zr" msgstr "" -#: share/axis/tcl/axis.tcl:145 -msgid "Skip lines with '_/'" +#: src/emc/usr_intf/touchy/touchy.glade:105 +msgid "za" msgstr "" -#: share/axis/tcl/axis.tcl:150 -#, fuzzy -msgid "Ctrl-M" -msgstr "Ctrl-K" +#: src/emc/usr_intf/touchy/touchy.glade:118 +msgid "zd" +msgstr "" -#: share/axis/tcl/axis.tcl:152 -msgid "Clear MDI h_istory" +#: src/emc/usr_intf/touchy/touchy.glade:131 +#: src/emc/usr_intf/gscreen/gscreen.glade:85 +#: src/emc/usr_intf/gscreen/gscreen.glade:213 +#: src/emc/usr_intf/gscreen/gscreen.glade:343 +#: src/emc/usr_intf/gscreen/gscreen.glade:471 +#: src/emc/usr_intf/gscreen/gscreen.glade:599 +#: src/emc/usr_intf/gscreen/gscreen.glade:727 +#: src/emc/usr_intf/gscreen/gscreen.glade:855 +#: src/emc/usr_intf/gscreen/gscreen.glade:983 +#: src/emc/usr_intf/gscreen/gscreen.glade:1111 +msgid "DTG" msgstr "" -#: share/axis/tcl/axis.tcl:154 +#: src/emc/usr_intf/touchy/touchy.glade:143 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Ctrl-H" -msgstr "Ctrl-K" +msgid "Absolute" +msgstr "Sobre o AXIS" -#: share/axis/tcl/axis.tcl:156 -msgid "Copy from MDI hist_ory" +#: src/emc/usr_intf/touchy/touchy.glade:165 +msgid "xr" msgstr "" -#: share/axis/tcl/axis.tcl:158 -msgid "Ctrl-Shift-H" +#: src/emc/usr_intf/touchy/touchy.glade:176 +msgid "ar" msgstr "" -#: share/axis/tcl/axis.tcl:160 -msgid "Paste to MDI histor_y" +#: src/emc/usr_intf/touchy/touchy.glade:188 +msgid "br" msgstr "" -#: share/axis/tcl/axis.tcl:166 -#, fuzzy -msgid "_Calibration" -msgstr "_Calibrar" +#: src/emc/usr_intf/touchy/touchy.glade:200 +msgid "cr" +msgstr "" -#: share/axis/tcl/axis.tcl:170 -#, fuzzy -msgid "Show _Hal Configuration" -msgstr "Mostrar _Configuração Hal" +#: src/emc/usr_intf/touchy/touchy.glade:212 +msgid "ur" +msgstr "" -#: share/axis/tcl/axis.tcl:174 -#, fuzzy -msgid "H_al Meter" -msgstr "H_alMeter" +#: src/emc/usr_intf/touchy/touchy.glade:224 +msgid "vr" +msgstr "" -#: share/axis/tcl/axis.tcl:178 -#, fuzzy -msgid "Ha_l Scope" -msgstr "Ha_lScope" +#: src/emc/usr_intf/touchy/touchy.glade:236 +msgid "wr" +msgstr "" -#: share/axis/tcl/axis.tcl:182 -#, fuzzy -msgid "Sho_w LinuxCNC Status" -msgstr "Mos_trar Estado do EMC" +#: src/emc/usr_intf/touchy/touchy.glade:248 +msgid "aa" +msgstr "" -#: share/axis/tcl/axis.tcl:186 -msgid "Set _Debug Level" +#: src/emc/usr_intf/touchy/touchy.glade:262 +msgid "ba" msgstr "" -#: share/axis/tcl/axis.tcl:192 -msgid "Homin_g" +#: src/emc/usr_intf/touchy/touchy.glade:276 +msgid "ca" msgstr "" -#: share/axis/tcl/axis.tcl:196 -msgid "_Unhoming" +#: src/emc/usr_intf/touchy/touchy.glade:290 +msgid "ua" msgstr "" -#: share/axis/tcl/axis.tcl:200 -msgid "_Zero coordinate system" +#: src/emc/usr_intf/touchy/touchy.glade:304 +msgid "va" msgstr "" -#: share/axis/tcl/axis.tcl:204 -msgid "P1 G5_4" +#: src/emc/usr_intf/touchy/touchy.glade:318 +msgid "wa" msgstr "" -#: share/axis/tcl/axis.tcl:208 -msgid "P2 G5_5" +#: src/emc/usr_intf/touchy/touchy.glade:332 +msgid "ad" msgstr "" -#: share/axis/tcl/axis.tcl:212 -msgid "P3 G5_6" +#: src/emc/usr_intf/touchy/touchy.glade:346 +msgid "bd" msgstr "" -#: share/axis/tcl/axis.tcl:216 -msgid "P4 G5_7" +#: src/emc/usr_intf/touchy/touchy.glade:360 +msgid "cd" msgstr "" -#: share/axis/tcl/axis.tcl:220 -msgid "P5 G5_8" +#: src/emc/usr_intf/touchy/touchy.glade:374 +msgid "ud" msgstr "" -#: share/axis/tcl/axis.tcl:224 -msgid "P6 G5_9" +#: src/emc/usr_intf/touchy/touchy.glade:388 +msgid "vd" msgstr "" -#: share/axis/tcl/axis.tcl:228 -msgid "P7 G59._1" +#: src/emc/usr_intf/touchy/touchy.glade:402 +msgid "wd" msgstr "" -#: share/axis/tcl/axis.tcl:232 -msgid "P8 G59._2" +#: src/emc/usr_intf/touchy/touchy.glade:448 +#, fuzzy +msgid "Estop Reset" +msgstr "_Retomar" + +#: src/emc/usr_intf/touchy/touchy.glade:459 +#: src/emc/usr_intf/stepconf/pport1.glade:21 +#: src/emc/usr_intf/stepconf/pport2.glade:1409 +#: src/emc/usr_intf/gscreen/gscreen.glade:2442 +#, fuzzy +msgid "Estop" +msgstr "Stop" + +#: src/emc/usr_intf/touchy/touchy.glade:475 +#, fuzzy +msgid "Machine On" +msgstr "Máquina" + +#: src/emc/usr_intf/touchy/touchy.glade:490 +#, fuzzy +msgid "Machine Off" +msgstr "Máquina" + +#: src/emc/usr_intf/touchy/touchy.glade:531 +msgid "Power" msgstr "" -#: share/axis/tcl/axis.tcl:236 -msgid "P9 G59._3" +#: src/emc/usr_intf/touchy/touchy.glade:562 +#, fuzzy +msgid "Unhome All" +msgstr "Home" + +#: src/emc/usr_intf/touchy/touchy.glade:588 +#, fuzzy +msgid "Home Selected" +msgstr "Jog no eixo selecionado" + +#: src/emc/usr_intf/touchy/touchy.glade:603 +msgid "Unhome Selected" msgstr "" -#: share/axis/tcl/axis.tcl:240 -msgid "_G92" +#: src/emc/usr_intf/touchy/touchy.glade:625 +msgid "Homing" msgstr "" -#: share/axis/tcl/axis.tcl:248 -msgid "Tool touch off to wor_kpiece" +#: src/emc/usr_intf/touchy/touchy.glade:644 +msgid "Startup" msgstr "" -#: share/axis/tcl/axis.tcl:254 -msgid "Tool touch off to _fixture" +#: src/emc/usr_intf/touchy/touchy.glade:727 +#, fuzzy +msgid "G" +msgstr "Partida" + +#: src/emc/usr_intf/touchy/touchy.glade:929 +msgid "." msgstr "" -#: share/axis/tcl/axis.tcl:262 -msgid "_Top view" -msgstr "_Vista Superior" +#: src/emc/usr_intf/touchy/touchy.glade:963 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "0" +msgstr "0" -#: share/axis/tcl/axis.tcl:269 -msgid "_Rotated Top view" -msgstr "_Roda a vista superior" +#: src/emc/usr_intf/touchy/touchy.glade:980 +msgid "3" +msgstr "" -#: share/axis/tcl/axis.tcl:276 -msgid "_Side view" -msgstr "_Vista lateral" +#: src/emc/usr_intf/touchy/touchy.glade:997 +msgid "2" +msgstr "" -#: share/axis/tcl/axis.tcl:283 -msgid "_Front view" -msgstr "_Vista frontal" +#: src/emc/usr_intf/touchy/touchy.glade:1014 +msgid "1" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:1031 +msgid "6" +msgstr "" -#: share/axis/tcl/axis.tcl:290 -msgid "_Perspective view" -msgstr "_Vista em perspectiva" +#: src/emc/usr_intf/touchy/touchy.glade:1048 +msgid "5" +msgstr "" -#: share/axis/tcl/axis.tcl:299 -msgid "Display _Inches" -msgstr "Mostra medidas em_Polegadas" +#: src/emc/usr_intf/touchy/touchy.glade:1065 +msgid "4" +msgstr "" -#: share/axis/tcl/axis.tcl:306 -msgid "Display _MM" -msgstr "Mostra medidas em_mm" +#: src/emc/usr_intf/touchy/touchy.glade:1082 +msgid "9" +msgstr "" -#: share/axis/tcl/axis.tcl:313 -msgid "S_how program" -msgstr "M_ostra o programa" +#: src/emc/usr_intf/touchy/touchy.glade:1097 +msgid "8" +msgstr "" -#: share/axis/tcl/axis.tcl:318 -#, fuzzy -msgid "Show program r_apids" -msgstr "M_ostra o programa" +#: src/emc/usr_intf/touchy/touchy.glade:1112 +msgid "7" +msgstr "" -#: share/axis/tcl/axis.tcl:323 +#: src/emc/usr_intf/touchy/touchy.glade:1297 #, fuzzy -msgid "Alpha-_blend program" -msgstr "Abre o programa" - -#: share/axis/tcl/axis.tcl:328 -msgid "Sho_w live plot" -msgstr "_Mostra o traçado em tempo real" +msgid "Flood On" +msgstr "Líquido" -#: share/axis/tcl/axis.tcl:333 -msgid "Show too_l" -msgstr "Mostra a _ferramenta" +#: src/emc/usr_intf/touchy/touchy.glade:1308 +#, fuzzy +msgid "Flood Off" +msgstr "Líquido" -#: share/axis/tcl/axis.tcl:338 +#: src/emc/usr_intf/touchy/touchy.glade:1324 #, fuzzy -msgid "Show e_xtents" -msgstr "Mostra _limites" +msgid "Mist On" +msgstr "Ar/Névoa" -#: share/axis/tcl/axis.tcl:343 +#: src/emc/usr_intf/touchy/touchy.glade:1339 #, fuzzy -msgid "Show o_ffsets" -msgstr "Mostra _limites" +msgid "Mist Off" +msgstr "Ar/Névoa" -#: share/axis/tcl/axis.tcl:348 +#: src/emc/usr_intf/touchy/touchy.glade:1362 #, fuzzy -msgid "Sh_ow machine limits" -msgstr "O programa excede os limites da máquina" +msgid "Coolant" +msgstr "Refrigeração:" -#: share/axis/tcl/axis.tcl:353 +#: src/emc/usr_intf/touchy/touchy.glade:1448 #, fuzzy -msgid "Show v_elocity" -msgstr "_Mostra o traçado em tempo real" +msgid "Spindle Off" +msgstr "Freio do spindle desativado" -#: share/axis/tcl/axis.tcl:358 -msgid "Show _distance to go" -msgstr "Mostra _distância a percorrer" +#: src/emc/usr_intf/touchy/touchy.glade:1501 +#: src/emc/usr_intf/touchy/touchy.glade:2578 +#, fuzzy +msgid "Spindle speed:" +msgstr "Velocidade da máquina" -#: share/axis/tcl/axis.tcl:363 -msgid "Large coordinate fo_nt" +#: src/emc/usr_intf/touchy/touchy.glade:1513 +#: src/emc/usr_intf/touchy/touchy.glade:2707 +msgid "label26" msgstr "" -#: share/axis/tcl/axis.tcl:366 +#: src/emc/usr_intf/touchy/touchy.glade:1539 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4226 #, fuzzy -msgid "Ctrl-K" -msgstr "Ctrl-K" +msgid "Spindle" +msgstr "Spindle:" -#: share/axis/tcl/axis.tcl:368 -msgid "_Clear live plot" -msgstr "_Apaga traçador em tempo real" +#: src/emc/usr_intf/touchy/touchy.glade:1597 +msgid "file.ngc" +msgstr "" -#: share/axis/tcl/axis.tcl:377 -#, fuzzy -msgid "Show commanded position" -msgstr "Mostra posição comandada" +#: src/emc/usr_intf/touchy/touchy.glade:1812 +#: src/emc/usr_intf/touchy/touchy.glade:2017 +#: src/emc/usr_intf/touchy/touchy.glade:2037 +#: src/emc/usr_intf/touchy/touchy.glade:2057 +#: src/emc/usr_intf/touchy/touchy.glade:2077 +#: src/emc/usr_intf/touchy/touchy.glade:2097 +#: src/emc/usr_intf/touchy/touchy.glade:2117 +#: src/emc/usr_intf/touchy/touchy.glade:2137 +#: src/emc/usr_intf/touchy/touchy.glade:2157 +#: src/emc/usr_intf/touchy/touchy.glade:2177 +msgid "M2" +msgstr "" -#: share/axis/tcl/axis.tcl:384 -#, fuzzy -msgid "Show actual position" -msgstr "Mostra posição atual" +#: src/emc/usr_intf/touchy/touchy.glade:2244 +#: src/emc/usr_intf/touchy/touchy.glade:2374 +msgid "Page" +msgstr "" -#: share/axis/tcl/axis.tcl:393 -#, fuzzy -msgid "Show machine position" -msgstr "Mostra posição da máquina" +#: src/emc/usr_intf/touchy/touchy.glade:2308 +msgid "Start Point" +msgstr "" -#: share/axis/tcl/axis.tcl:400 -#, fuzzy -msgid "Show relative position" -msgstr "Mostra posição relativa" +#: src/emc/usr_intf/touchy/touchy.glade:2452 +msgid "Loaded File" +msgstr "" -#: share/axis/tcl/axis.tcl:409 -msgid "Joint mode" -msgstr "Modo Joint" +#: src/emc/usr_intf/touchy/touchy.glade:2488 +msgid "Loaded file:" +msgstr "" -#: share/axis/tcl/axis.tcl:416 +#: src/emc/usr_intf/touchy/touchy.glade:2499 +msgid "Interpreted line:" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2513 #, fuzzy -msgid "World mode" -msgstr "Modo Joint" +msgid "Distance:" +msgstr "Distância em trabalho:" -#: share/axis/tcl/axis.tcl:425 -msgid "_About AXIS" -msgstr "_About Axis" +#: src/emc/usr_intf/touchy/touchy.glade:2526 +#: src/emc/usr_intf/stepconf/main_page.glade:23 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Velocity:" +msgstr "" -#: share/axis/tcl/axis.tcl:429 -msgid "Quick _Reference" -msgstr "Referência Rápida" +#: src/emc/usr_intf/touchy/touchy.glade:2539 +msgid "Delay:" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2552 +msgid "On limit switch:" +msgstr "" -#: share/axis/tcl/axis.tcl:439 +#: src/emc/usr_intf/touchy/touchy.glade:2565 #, fuzzy -msgid "_Machine" -msgstr "Máquina" +msgid "Spindle direction:" +msgstr "Freio do spindle ativado" -#: share/axis/tcl/axis.tcl:443 +#: src/emc/usr_intf/touchy/touchy.glade:2591 #, fuzzy -msgid "_View" -msgstr "_Vista" +msgid "Loaded tool:" +msgstr "Sem ferramenta" -#: share/axis/tcl/axis.tcl:456 -msgid "Toggle Emergency Stop [F1]" -msgstr "Botão Parada de Emergência [F1]" +#: src/emc/usr_intf/touchy/touchy.glade:2604 +#: src/emc/usr_intf/touchy/touchy.glade:2955 +msgid "label19" +msgstr "" -#: share/axis/tcl/axis.tcl:465 -msgid "Toggle Machine power [F2]" -msgstr "Botão Acionamento da Máquina [F2]" +#: src/emc/usr_intf/touchy/touchy.glade:2617 +msgid "label20" +msgstr "" -#: share/axis/tcl/axis.tcl:476 -msgid "Open G-Code file [O]" -msgstr "Abrir arquivo CódigoG [O]" +#: src/emc/usr_intf/touchy/touchy.glade:2632 +#: src/emc/usr_intf/touchy/touchy.glade:2779 +#: src/emc/usr_intf/touchy/touchy.glade:2808 +#: src/emc/usr_intf/touchy/touchy.glade:2912 +#: src/emc/usr_intf/touchy/touchy.glade:2927 +msgid "label21" +msgstr "" -#: share/axis/tcl/axis.tcl:484 -msgid "Reopen current file [Control-R]" -msgstr "Recarrega Código G [Control-R]" +#: src/emc/usr_intf/touchy/touchy.glade:2647 +msgid "label22" +msgstr "" -#: share/axis/tcl/axis.tcl:494 -msgid "Begin executing current file [R]" -msgstr "Inicia execução do Código G [R]" +#: src/emc/usr_intf/touchy/touchy.glade:2662 +msgid "label23" +msgstr "" -#: share/axis/tcl/axis.tcl:502 -msgid "Execute next line [T]" -msgstr "Executa a próxima linha [T]" +#: src/emc/usr_intf/touchy/touchy.glade:2677 +msgid "label24" +msgstr "" -#: share/axis/tcl/axis.tcl:510 -msgid "Pause [P] / resume [S] execution" -msgstr "Pausa [P] / Retoma [S] execução" +#: src/emc/usr_intf/touchy/touchy.glade:2692 +msgid "label25" +msgstr "" -#: share/axis/tcl/axis.tcl:518 -msgid "Stop program execution [ESC]" -msgstr "Pára execução do programa [ESC]" +#: src/emc/usr_intf/touchy/touchy.glade:2722 +msgid "label27" +msgstr "" -#: share/axis/tcl/axis.tcl:528 -msgid "Toggle skip lines with '/' [Alt-M /]" +#: src/emc/usr_intf/touchy/touchy.glade:2737 +msgid "Prepped tool:" msgstr "" -#: share/axis/tcl/axis.tcl:535 -msgid "Toggle optional pause [Alt-M 1]" +#: src/emc/usr_intf/touchy/touchy.glade:2750 +msgid "label28" msgstr "" -#: share/axis/tcl/axis.tcl:544 +#: src/emc/usr_intf/touchy/touchy.glade:2765 #, fuzzy -msgid "Zoom in" -msgstr "Aproxima zoom [+]" +msgid "Running line:" +msgstr "Tempo de execução:" -#: share/axis/tcl/axis.tcl:552 +#: src/emc/usr_intf/touchy/touchy.glade:2794 #, fuzzy -msgid "Zoom out" -msgstr "Afasta zoom [-]" +msgid "XY Rotation:" +msgstr "Posição:" -#: share/axis/tcl/axis.tcl:560 -msgid "Top view" -msgstr "Vista superior" +#: src/emc/usr_intf/touchy/touchy.glade:2823 +#, fuzzy +msgid "Tool length:" +msgstr "Tipo da ferramenta" + +#: src/emc/usr_intf/touchy/touchy.glade:2836 +msgid "label52" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2851 +msgid "" +"G1 G2 G3\n" +"M1 M2 M3\n" +"F1 S1" +msgstr "" -#: share/axis/tcl/axis.tcl:568 +#: src/emc/usr_intf/touchy/touchy.glade:2870 #, fuzzy -msgid "Rotated top view" -msgstr "_Roda a vista superior" +msgid "Active codes:" +msgstr "Códigos G ativos:" -#: share/axis/tcl/axis.tcl:576 -msgid "Side view" -msgstr "Vista lateral" +#: src/emc/usr_intf/touchy/touchy.glade:2883 +#, fuzzy +msgid "G5x Offset:" +msgstr "Alterar Offset" -#: share/axis/tcl/axis.tcl:584 +#: src/emc/usr_intf/touchy/touchy.glade:2898 #, fuzzy -msgid "Front view" -msgstr "_Vista frontal" +msgid "G92 Offset:" +msgstr "Alterar Offset" -#: share/axis/tcl/axis.tcl:592 -msgid "Perspective view" -msgstr "Vista em perspectiva" +#: src/emc/usr_intf/touchy/touchy.glade:2942 +#, fuzzy +msgid "Loaded file lines:" +msgstr "Sem ferramenta" -#: share/axis/tcl/axis.tcl:600 -msgid "Toggle between Drag and Rotate Mode [D]" +#: src/emc/usr_intf/touchy/touchy.glade:2971 +msgid "Pockets:" msgstr "" -#: share/axis/tcl/axis.tcl:615 -msgid "Clear live plot [Ctrl-K]" -msgstr "Apaga traçador em tempo real [Ctrl-K]" - -#: share/axis/tcl/axis.tcl:766 -msgid "Manual Control [F3]" -msgstr "Controle Manual [F3]" +#: src/emc/usr_intf/touchy/touchy.glade:2984 +msgid "" +"1\n" +"2\n" +"3" +msgstr "" -#: share/axis/tcl/axis.tcl:767 -msgid "MDI [F5]" -msgstr "MDI [F5]" +#: src/emc/usr_intf/touchy/touchy.glade:3009 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6414 +msgid "Status" +msgstr "" -#: share/axis/tcl/axis.tcl:781 share/axis/tcl/axis.tcl:2036 -#: share/axis/tcl/axis.tcl:2203 +#: src/emc/usr_intf/touchy/touchy.glade:3038 #, fuzzy -msgid "Axis:" -msgstr "Eixo:" +msgid "Control Font:" +msgstr "Refrigeração:" -#: share/axis/tcl/axis.tcl:1102 -#, fuzzy -msgid "Home Axis" -msgstr "Home" +#: src/emc/usr_intf/touchy/touchy.glade:3050 +msgid "DRO Font:" +msgstr "" -#: share/axis/tcl/axis.tcl:1176 -#, fuzzy -msgid "Spindle:" -msgstr "Spindle:" +#: src/emc/usr_intf/touchy/touchy.glade:3064 +msgid "Error Font:" +msgstr "" -#: share/axis/tcl/axis.tcl:1223 src/emc/usr_intf/touchy/touchy.glade:946 -msgid "-" -msgstr "-" +#: src/emc/usr_intf/touchy/touchy.glade:3081 +#, fuzzy +msgid "ControlFont" +msgstr "Ctrl-K" -#: share/axis/tcl/axis.tcl:1237 -msgid "+" -msgstr "+" +#: src/emc/usr_intf/touchy/touchy.glade:3100 +msgid "DRO Font" +msgstr "" -#: share/axis/tcl/axis.tcl:1242 -#, fuzzy -msgid "Brake" -msgstr "Freio" +#: src/emc/usr_intf/touchy/touchy.glade:3121 +msgid "Error Font" +msgstr "" -#: share/axis/tcl/axis.tcl:1289 +#: src/emc/usr_intf/touchy/touchy.glade:3139 #, fuzzy -msgid "Coolant:" -msgstr "Refrigeração:" +msgid "Listing Font:" +msgstr "Ar/Névoa" -#: share/axis/tcl/axis.tcl:1294 +#: src/emc/usr_intf/touchy/touchy.glade:3156 #, fuzzy -msgid "Mist" +msgid "Listing Font" msgstr "Ar/Névoa" -#: share/axis/tcl/axis.tcl:1299 +#: src/emc/usr_intf/touchy/touchy.glade:3176 +msgid "Hide pointer" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:3187 #, fuzzy -msgid "Flood" -msgstr "Líquido" +msgid "Show pointer" +msgstr "M_ostra o programa" -#: share/axis/tcl/axis.tcl:1371 -msgid "History:" -msgstr "Histórico:" +#: src/emc/usr_intf/touchy/touchy.glade:3214 +msgid "Theme:" +msgstr "" -#: share/axis/tcl/axis.tcl:1394 -#, fuzzy -msgid "MDI Command:" -msgstr "Comandada" +#: src/emc/usr_intf/touchy/touchy.glade:3228 +msgid "default\n" +msgstr "" -#: share/axis/tcl/axis.tcl:1403 -msgid "Go" -msgstr "Partida" +#: src/emc/usr_intf/touchy/touchy.glade:3252 +msgid "Display Options" +msgstr "" -#: share/axis/tcl/axis.tcl:1409 -#, fuzzy -msgid "Active G-Codes:" -msgstr "Códigos G ativos:" +#: src/emc/usr_intf/touchy/touchy.glade:3286 +#: src/emc/usr_intf/stepconf/base.glade:867 +#: src/emc/usr_intf/gscreen/gscreen.glade:3664 +msgid "Inch" +msgstr "" -#: share/axis/tcl/axis.tcl:1487 -#, fuzzy -msgid "Preview" -msgstr "Vista lateral" +#: src/emc/usr_intf/touchy/touchy.glade:3349 +msgid "Position Readout" +msgstr "" -#: share/axis/tcl/axis.tcl:1488 -msgid "DRO" +#: src/emc/usr_intf/touchy/touchy.glade:3379 +msgid "Workpiece" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:3390 +msgid "Fixture" msgstr "" -#: share/axis/tcl/axis.tcl:1575 share/axis/tcl/axis.tcl:1588 +#: src/emc/usr_intf/touchy/touchy.glade:3410 #, fuzzy -msgid "Jog Speed:" -msgstr "Velocidade de Jog" +msgid "Tool Setting" +msgstr "Refrigeração:" -#: share/axis/tcl/axis.tcl:1600 -msgid "Max Velocity:" +#: src/emc/usr_intf/touchy/touchy.glade:3441 +msgid "Delete / lines" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:3456 +msgid "Keep / lines" msgstr "" -#: share/axis/tcl/axis.tcl:1629 +#: src/emc/usr_intf/touchy/touchy.glade:3473 #, fuzzy -msgid "Spindle Override:" -msgstr "Velocidade da máquina" +msgid "Pause on M1" +msgstr "_Pausar" -#: share/axis/tcl/axis.tcl:1631 share/axis/tcl/axis.tcl:1671 -#: src/emc/usr_intf/pncconf/pncconf.glade:3141 -#: src/emc/usr_intf/pncconf/pncconf.glade:3154 -#: src/emc/usr_intf/pncconf/pncconf.glade:3167 -#: src/emc/usr_intf/pncconf/pncconf.glade:3180 -#: src/emc/usr_intf/pncconf/pncconf.glade:3193 -#: src/emc/usr_intf/pncconf/pncconf.glade:3206 -#: src/emc/usr_intf/pncconf/pncconf.glade:3219 -#: src/emc/usr_intf/pncconf/pncconf.glade:3232 -#: src/emc/usr_intf/pncconf/pncconf.glade:3345 -#: src/emc/usr_intf/pncconf/pncconf.glade:3358 -#: src/emc/usr_intf/pncconf/pncconf.glade:3371 -#: src/emc/usr_intf/pncconf/pncconf.glade:3384 -#: src/emc/usr_intf/pncconf/pncconf.glade:3397 -#: src/emc/usr_intf/pncconf/pncconf.glade:3410 -#: src/emc/usr_intf/pncconf/pncconf.glade:3516 -#: src/emc/usr_intf/pncconf/pncconf.glade:3527 -#: src/emc/usr_intf/pncconf/pncconf.glade:4022 -#: src/emc/usr_intf/pncconf/pncconf.glade:4035 -#: src/emc/usr_intf/pncconf/pncconf.glade:4048 -#: src/emc/usr_intf/pncconf/pncconf.glade:4061 -#: src/emc/usr_intf/pncconf/pncconf.glade:4074 -#: src/emc/usr_intf/pncconf/pncconf.glade:4087 -#: src/emc/usr_intf/pncconf/pncconf.glade:4100 -#: src/emc/usr_intf/pncconf/pncconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:4226 -#: src/emc/usr_intf/pncconf/pncconf.glade:4239 -#: src/emc/usr_intf/pncconf/pncconf.glade:4252 -#: src/emc/usr_intf/pncconf/pncconf.glade:4265 -#: src/emc/usr_intf/pncconf/pncconf.glade:4278 -#: src/emc/usr_intf/pncconf/pncconf.glade:4291 -#: src/emc/usr_intf/pncconf/pncconf.glade:4397 -#: src/emc/usr_intf/pncconf/pncconf.glade:4408 -#: src/emc/usr_intf/pncconf/pncconf.glade:4903 -#: src/emc/usr_intf/pncconf/pncconf.glade:4916 -#: src/emc/usr_intf/pncconf/pncconf.glade:4929 -#: src/emc/usr_intf/pncconf/pncconf.glade:4942 -#: src/emc/usr_intf/pncconf/pncconf.glade:4955 -#: src/emc/usr_intf/pncconf/pncconf.glade:4968 -#: src/emc/usr_intf/pncconf/pncconf.glade:4981 -#: src/emc/usr_intf/pncconf/pncconf.glade:4994 -#: src/emc/usr_intf/pncconf/pncconf.glade:5107 -#: src/emc/usr_intf/pncconf/pncconf.glade:5120 -#: src/emc/usr_intf/pncconf/pncconf.glade:5133 -#: src/emc/usr_intf/pncconf/pncconf.glade:5146 -#: src/emc/usr_intf/pncconf/pncconf.glade:5159 -#: src/emc/usr_intf/pncconf/pncconf.glade:5172 -#: src/emc/usr_intf/pncconf/pncconf.glade:5278 -#: src/emc/usr_intf/pncconf/pncconf.glade:5289 -#: src/emc/usr_intf/pncconf/pncconf.glade:5582 -#: src/emc/usr_intf/pncconf/pncconf.glade:5631 -#: src/emc/usr_intf/pncconf/pncconf.glade:5641 -msgid "%" -msgstr "%" +#: src/emc/usr_intf/touchy/touchy.glade:3484 +msgid "Ignore M1" +msgstr "" -#: share/axis/tcl/axis.tcl:1711 -#, fuzzy -msgid "" -"LinuxCNC/AXIS version $version\n" -"\n" -"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff Epler and Chris " -"Radek.\n" -"\n" -"This is free software, and you are welcome to redistribute it under certain " -"conditions. See the file COPYING, included with LinuxCNC.\n" -"\n" -"Visit the LinuxCNC web site: " +#: src/emc/usr_intf/touchy/touchy.glade:3504 +msgid "Program Options" msgstr "" -"LinuxCNC/AXIS version $version\n" -"\n" -"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff Epler and Chris Radek.\n" -"\n" -"This is free software, and you are welcome to redistribute it under certain " -"conditions. See the file COPYING, included with AXIS.\n" -"\n" -"Visit the LinuxCNC web site: " -#: share/axis/tcl/axis.tcl:1739 -#, fuzzy -msgid "About AXIS" -msgstr "_About Axis" +#: src/emc/usr_intf/touchy/touchy.glade:3531 +#: src/emc/usr_intf/gscreen/gscreen.glade:2200 +msgid "Preferences" +msgstr "" -#: share/axis/tcl/axis.tcl:1768 -msgid "AXIS Quick Reference" -msgstr "Referência rápida do AXIS" +#: src/emc/usr_intf/touchy/touchy.glade:3567 +#: src/emc/usr_intf/gscreen/gscreen.glade:1425 +msgid "FO: 100%" +msgstr "" -#: share/axis/tcl/axis.tcl:1903 -msgid "AXIS $::version on $::machine" +#: src/emc/usr_intf/touchy/touchy.glade:3582 +#: src/emc/usr_intf/gscreen/gscreen.glade:1437 +msgid "SO: 100%" msgstr "" -#: share/axis/tcl/axis.tcl:1905 -#, fuzzy -msgid "(no file)" -msgstr "AXIS (Sem arquivo)" +#: src/emc/usr_intf/touchy/touchy.glade:3596 +msgid "MV: 100" +msgstr "" -#: share/axis/tcl/axis.tcl:1976 share/axis/tcl/axis.tcl:1981 +#: src/emc/usr_intf/touchy/touchy.glade:3610 #, fuzzy -msgid "Position:" -msgstr "Posição:" +msgid "Jogging" +msgstr "Modo Joint" -#: share/axis/tcl/axis.tcl:1978 -#, fuzzy -msgid "Machine" -msgstr "Máquina" +#: src/emc/usr_intf/touchy/touchy.glade:3624 +msgid "Start Point" +msgstr "" -#: share/axis/tcl/axis.tcl:1978 src/emc/usr_intf/touchy/touchy.glade:155 -#, fuzzy -msgid "Relative" -msgstr "Relativa" +#: src/emc/usr_intf/touchy/touchy.glade:3651 +msgid ".01" +msgstr "" -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3329 -#, fuzzy -msgid "Actual" -msgstr "Atual" +#: src/emc/usr_intf/touchy/touchy.glade:3664 +msgid ".001" +msgstr "" -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3318 -#, fuzzy -msgid "Commanded" -msgstr "Comandada" +#: src/emc/usr_intf/touchy/touchy.glade:3680 +msgid ".0001" +msgstr "" -#: share/axis/tcl/axis.tcl:2032 share/axis/tcl/axis.tcl:2203 -#, fuzzy -msgid "Joint:" -msgstr "Modo Joint" +#: src/emc/usr_intf/touchy/touchy.glade:3708 +msgid " X " +msgstr "" -#: share/axis/tcl/axis.tcl:2338 -msgid "Turn spindle counterclockwise [F10]" -msgstr "Girar o spindle no sentido anti-horário [F10]" +#: src/emc/usr_intf/touchy/touchy.glade:3720 +msgid " Y " +msgstr "" -#: share/axis/tcl/axis.tcl:2339 -msgid "Turn spindle clockwise [F9]" -msgstr "Girar o spindle no sentio horário [F9]" +#: src/emc/usr_intf/touchy/touchy.glade:3735 +msgid " Z " +msgstr "" -#: share/axis/tcl/axis.tcl:2340 -msgid "Stop spindle [F9/F10]" -msgstr "Pára o spindle [F9/F10]" +#: src/emc/usr_intf/touchy/touchy.glade:3750 +msgid " A " +msgstr "" -#: share/axis/tcl/axis.tcl:2341 -#, fuzzy -msgid "Turn spindle Faster [F12]" -msgstr "Girar o spindle no sentio horário [F9]" +#: src/emc/usr_intf/touchy/touchy.glade:3766 +msgid " B " +msgstr "" -#: share/axis/tcl/axis.tcl:2342 -#, fuzzy -msgid "Turn spindle Slower [F11]" -msgstr "Girar o spindle no sentio horário [F9]" +#: src/emc/usr_intf/touchy/touchy.glade:3784 +msgid " C " +msgstr "" -#: share/axis/tcl/axis.tcl:2343 -msgid "Turn spindle brake on [Shift-B] or off [B]" -msgstr "Aciona freio do spindle ON [Shift-B] ou OFF [B]" +#: src/emc/usr_intf/touchy/touchy.glade:3802 +msgid " U " +msgstr "" -#: share/axis/tcl/axis.tcl:2344 -msgid "Turn flood on or off [F8]" -msgstr "Refrigeração líquida ON ou OFF [F8]" +#: src/emc/usr_intf/touchy/touchy.glade:3818 +msgid " V " +msgstr "" -#: share/axis/tcl/axis.tcl:2345 -msgid "Turn mist on or off [F7]" -msgstr "Refrigeração por ar/névoa ON ou OFF [F7]" +#: src/emc/usr_intf/touchy/touchy.glade:3836 +msgid " W " +msgstr "" -#: share/axis/tcl/axis.tcl:2346 -msgid "Send active axis home [Home]" -msgstr "Envia eixo ativo para Home [Home]" +#: src/emc/usr_intf/touchy/touchy.glade:3869 +msgid "Handwheel" +msgstr "" -#: share/axis/tcl/axis.tcl:2347 -msgid "Set G54 offset for active axis [End]" -msgstr "Seleciona offset G54 para o eixo ativo [End]" +#: src/emc/usr_intf/stepconf/stepconf.py:57 +msgid "" +"Stepconf encountered an error. The following information may be useful in " +"troubleshooting:\n" +"\n" +msgstr "" -#: share/axis/tcl/axis.tcl:2348 -msgid "Activate axis [X]" -msgstr "Ativa o eixo [X]" +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#, fuzzy +msgid "Stepconf" +msgstr "_Passo" -#: share/axis/tcl/axis.tcl:2349 -msgid "Activate axis [Y]" -msgstr "Ativa o eixo [Y]" +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#: src/emc/usr_intf/stepconf/stepconf.py:217 +#: src/emc/usr_intf/stepconf/main_page.glade:557 +#: src/emc/usr_intf/gscreen/gscreen.py:3414 +#: src/emc/usr_intf/gscreen/gscreen.py:3415 +#: src/emc/usr_intf/gscreen/gscreen.glade:4043 +msgid "Start" +msgstr "" -#: share/axis/tcl/axis.tcl:2350 -msgid "Activate axis [Z]" -msgstr "Ativa o eixo [Z]" +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Base Information" +msgstr "Mostra posição da máquina" -#: share/axis/tcl/axis.tcl:2351 -msgid "Activate axis [A]" -msgstr "Ativa o eixo [A]" +#: src/emc/usr_intf/stepconf/stepconf.py:129 +msgid "Parallel Port 1" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:129 +msgid "Parallel Port 2" +msgstr "" -#: share/axis/tcl/axis.tcl:2352 -msgid "Activate axis [4]" -msgstr "Ativa o eixo [4]" +#: src/emc/usr_intf/stepconf/stepconf.py:130 +#, fuzzy +msgid "Options" +msgstr "Posição:" -#: share/axis/tcl/axis.tcl:2353 -msgid "Activate axis [5]" -msgstr "Ativa o eixo [5]" +#: src/emc/usr_intf/stepconf/stepconf.py:130 +#, fuzzy +msgid "Axis X" +msgstr "Eixo:" -#: share/axis/tcl/axis.tcl:2354 share/axis/tcl/axis.tcl:2355 -msgid "Jog selected axis" -msgstr "Jog no eixo selecionado" +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis Y" +msgstr "Eixo:" -#: share/axis/tcl/axis.tcl:2357 -msgid "Temporarily allow jogging outside machine limits [L]" -msgstr "Permite temporariamente Jog além do limite da máquina [L]" +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis Z" +msgstr "Eixo:" -#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 +#: src/emc/usr_intf/stepconf/stepconf.py:131 #, fuzzy -msgid "Spindle CW" -msgstr "Spindle:" +msgid "Axis A" +msgstr "Eixo:" -#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 +#: src/emc/usr_intf/stepconf/stepconf.py:132 +#: src/emc/usr_intf/pncconf/pncconf.py:378 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +#: src/emc/usr_intf/pncconf/pncconf.py:524 #, fuzzy -msgid "Spindle CCW" +msgid "Spindle" msgstr "Spindle:" -#: src/emc/usr_intf/touchy/mdi.py:50 -#, fuzzy -msgid "Input control" -msgstr "Controle manual" +#: src/emc/usr_intf/stepconf/stepconf.py:132 +msgid "Almost Done" +msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:53 src/emc/usr_intf/touchy/mdi.py:54 -msgid "Straight rapid" +#: src/emc/usr_intf/stepconf/stepconf.py:136 +#: src/emc/usr_intf/pncconf/pncconf.py:135 +msgid "Gecko 201" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:55 src/emc/usr_intf/touchy/mdi.py:56 -msgid "Straight feed" +#: src/emc/usr_intf/stepconf/stepconf.py:137 +#: src/emc/usr_intf/pncconf/pncconf.py:136 +msgid "Gecko 202" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:57 src/emc/usr_intf/touchy/mdi.py:58 -msgid "Arc CW" +#: src/emc/usr_intf/stepconf/stepconf.py:138 +#: src/emc/usr_intf/pncconf/pncconf.py:137 +msgid "Gecko 203v" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:59 src/emc/usr_intf/touchy/mdi.py:60 -msgid "Arc CCW" +#: src/emc/usr_intf/stepconf/stepconf.py:139 +#: src/emc/usr_intf/pncconf/pncconf.py:138 +msgid "Gecko 210" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:61 src/emc/usr_intf/touchy/mdi.py:62 -msgid "Dwell" +#: src/emc/usr_intf/stepconf/stepconf.py:140 +#: src/emc/usr_intf/pncconf/pncconf.py:139 +msgid "Gecko 212" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:63 -#, fuzzy -msgid "Setup" -msgstr "_Passo" +#: src/emc/usr_intf/stepconf/stepconf.py:141 +#: src/emc/usr_intf/pncconf/pncconf.py:140 +msgid "Gecko 320" +msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:64 -#, fuzzy -msgid "Spindle synchronized feed" -msgstr "Freio do spindle ativado" +#: src/emc/usr_intf/stepconf/stepconf.py:142 +#: src/emc/usr_intf/pncconf/pncconf.py:141 +msgid "Gecko 540" +msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:65 -msgid "Rigid tap" +#: src/emc/usr_intf/stepconf/stepconf.py:143 +#: src/emc/usr_intf/pncconf/pncconf.py:142 +msgid "L297" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/touchy/mdi.py:67 -#: src/emc/usr_intf/touchy/mdi.py:68 src/emc/usr_intf/touchy/mdi.py:69 -msgid "Probe" +#: src/emc/usr_intf/stepconf/stepconf.py:144 +#: src/emc/usr_intf/pncconf/pncconf.py:143 +msgid "PMDX-150" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:70 -msgid "Radius compensation left" +#: src/emc/usr_intf/stepconf/stepconf.py:145 +#: src/emc/usr_intf/stepconf/pport1.glade:32 +#: src/emc/usr_intf/pncconf/pncconf.py:144 +msgid "Sherline" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:71 -msgid "Radius compensation right" +#: src/emc/usr_intf/stepconf/stepconf.py:146 +#: src/emc/usr_intf/pncconf/pncconf.py:145 +msgid "Xylotex 8S-3" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:72 -msgid "Radius compensation left, immediate" +#: src/emc/usr_intf/stepconf/stepconf.py:147 +#: src/emc/usr_intf/pncconf/pncconf.py:146 +msgid "Parker-Compumotor oem750" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:73 -msgid "Radius compensation right, immediate" +#: src/emc/usr_intf/stepconf/stepconf.py:148 +#: src/emc/usr_intf/pncconf/pncconf.py:147 +msgid "JVL-SMD41 or 42" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:74 -msgid "Tool length offset" +#: src/emc/usr_intf/stepconf/stepconf.py:149 +#: src/emc/usr_intf/pncconf/pncconf.py:148 +msgid "Hobbycnc Pro Chopper" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:75 -msgid "Tool length offset immediate" +#: src/emc/usr_intf/stepconf/stepconf.py:150 +msgid "Kelling 4030" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:76 -msgid "Motion in unoffset coordinates" +#: src/emc/usr_intf/stepconf/stepconf.py:151 +msgid "Leadshine Series" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:77 +#: src/emc/usr_intf/stepconf/stepconf.py:190 #, fuzzy -msgid "Continuous mode" -msgstr "Jog continuo" +msgid "X Step" +msgstr "_Passo" -#: src/emc/usr_intf/touchy/mdi.py:79 -msgid "Drill" +#: src/emc/usr_intf/stepconf/stepconf.py:190 +msgid "X Direction" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:80 -msgid "Drill with dwell" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:190 +#, fuzzy +msgid "Y Step" +msgstr "_Passo" -#: src/emc/usr_intf/touchy/mdi.py:81 -msgid "Peck drill" +#: src/emc/usr_intf/stepconf/stepconf.py:190 +msgid "Y Direction" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:82 -msgid "Chip-break drill" +#: src/emc/usr_intf/stepconf/stepconf.py:191 +#, fuzzy +msgid "Z Step" +msgstr "_Passo" + +#: src/emc/usr_intf/stepconf/stepconf.py:191 +msgid "Z Direction" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:83 +#: src/emc/usr_intf/stepconf/stepconf.py:191 #, fuzzy -msgid "Bore" -msgstr "Freio" +msgid "A Step" +msgstr "_Passo" -#: src/emc/usr_intf/touchy/mdi.py:84 -msgid "Bore with dwell" +#: src/emc/usr_intf/stepconf/stepconf.py:191 +msgid "A Direction" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:85 -msgid "Offset all coordinate systems" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 +#, fuzzy +msgid "Spindle ON" +msgstr "Spindle:" -#: src/emc/usr_intf/touchy/mdi.py:86 -msgid "CSS Mode" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#, fuzzy +msgid "Spindle PWM" +msgstr "Spindle:" -#: src/emc/usr_intf/touchy/emc_interface.py:410 -msgid "CCW" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 +#, fuzzy +msgid "Spindle Brake" +msgstr "Freio do spindle ativado" -#: src/emc/usr_intf/touchy/emc_interface.py:410 +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 #, fuzzy -msgid "Stopped" -msgstr "_Parar" +msgid "Coolant Mist" +msgstr "Refrigeração:" -#: src/emc/usr_intf/touchy/emc_interface.py:410 -msgid "CW" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 +#, fuzzy +msgid "Coolant Flood" +msgstr "Refrigeração:" -#: src/emc/usr_intf/touchy/touchy.glade:7 -msgid "LinuxCNC/Touchy" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:370 +#, fuzzy +msgid "ESTOP Out" +msgstr "PARADA DE EMERGÊNCIA" -#. # Touchy is Copyright (c) 2009 Chris Radek # # Touchy 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 2 of the License, or # (at your option) any later version. # # Touchy 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. -#: src/emc/usr_intf/touchy/touchy.glade:11 -msgid "window1" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +msgid "Amplifier Enable" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:31 -msgid "xa" +#: src/emc/usr_intf/stepconf/stepconf.py:194 +#: src/emc/usr_intf/pncconf/pncconf.py:371 +msgid "Charge Pump" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:44 -msgid "xd" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 0" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:57 -msgid "yr" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 1" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:68 -msgid "ya" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 2" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:81 -msgid "yd" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 3" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:94 -msgid "zr" +#: src/emc/usr_intf/stepconf/stepconf.py:196 +#: src/emc/usr_intf/stepconf/stepconf.py:215 +#: src/emc/usr_intf/stepconf/pport1.glade:18 +#: src/emc/usr_intf/stepconf/pport2.glade:1406 +#: src/emc/usr_intf/stepconf/pport2.glade:1420 +msgid "Unused" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:105 -msgid "za" +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 +#, fuzzy +msgid "ESTOP In" +msgstr "PARADA DE EMERGÊNCIA" + +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 +msgid "Probe In" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:118 -msgid "zd" +#: src/emc/usr_intf/stepconf/stepconf.py:199 +#, fuzzy +msgid "Spindle Index" +msgstr "Spindle:" + +#: src/emc/usr_intf/stepconf/stepconf.py:199 +#, fuzzy +msgid "Spindle Phase A" +msgstr "Freio do spindle ativado" + +#: src/emc/usr_intf/stepconf/stepconf.py:199 +#, fuzzy +msgid "Spindle Phase B" +msgstr "Freio do spindle ativado" + +#: src/emc/usr_intf/stepconf/stepconf.py:200 +#, fuzzy +msgid "Home X" +msgstr "Home" + +#: src/emc/usr_intf/stepconf/stepconf.py:200 +#, fuzzy +msgid "Home Y" +msgstr "Home" + +#: src/emc/usr_intf/stepconf/stepconf.py:200 +#, fuzzy +msgid "Home Z" +msgstr "Home" + +#: src/emc/usr_intf/stepconf/stepconf.py:200 +#, fuzzy +msgid "Home A" +msgstr "Home" + +#: src/emc/usr_intf/stepconf/stepconf.py:201 +msgid "Minimum Limit + Home X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:131 -msgid "DTG" +#: src/emc/usr_intf/stepconf/stepconf.py:201 +msgid "Minimum Limit + Home Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:143 -#: src/emc/usr_intf/pncconf/pncconf.glade:59755 -#, fuzzy -msgid "Absolute" -msgstr "Sobre o AXIS" +#: src/emc/usr_intf/stepconf/stepconf.py:202 +msgid "Minimum Limit + Home Z" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:165 -msgid "xr" +#: src/emc/usr_intf/stepconf/stepconf.py:202 +msgid "Minimum Limit + Home A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:176 -msgid "ar" +#: src/emc/usr_intf/stepconf/stepconf.py:203 +msgid "Maximum Limit + Home X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:188 -msgid "br" +#: src/emc/usr_intf/stepconf/stepconf.py:203 +msgid "Maximum Limit + Home Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:200 -msgid "cr" +#: src/emc/usr_intf/stepconf/stepconf.py:204 +msgid "Maximum Limit + Home Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:212 -msgid "ur" +#: src/emc/usr_intf/stepconf/stepconf.py:204 +msgid "Maximum Limit + Home A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:224 -msgid "vr" +#: src/emc/usr_intf/stepconf/stepconf.py:205 +msgid "Both Limit + Home X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:236 -msgid "wr" +#: src/emc/usr_intf/stepconf/stepconf.py:205 +msgid "Both Limit + Home Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:248 -msgid "aa" +#: src/emc/usr_intf/stepconf/stepconf.py:206 +msgid "Both Limit + Home Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:262 -msgid "ba" +#: src/emc/usr_intf/stepconf/stepconf.py:206 +msgid "Both Limit + Home A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:276 -msgid "ca" +#: src/emc/usr_intf/stepconf/stepconf.py:207 +msgid "Minimum Limit X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:290 -msgid "ua" +#: src/emc/usr_intf/stepconf/stepconf.py:207 +msgid "Minimum Limit Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:304 -msgid "va" +#: src/emc/usr_intf/stepconf/stepconf.py:208 +msgid "Minimum Limit Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:318 -msgid "wa" +#: src/emc/usr_intf/stepconf/stepconf.py:208 +msgid "Minimum Limit A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:332 -msgid "ad" +#: src/emc/usr_intf/stepconf/stepconf.py:209 +msgid "Maximum Limit X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:346 -msgid "bd" +#: src/emc/usr_intf/stepconf/stepconf.py:209 +msgid "Maximum Limit Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:360 -msgid "cd" +#: src/emc/usr_intf/stepconf/stepconf.py:210 +msgid "Maximum Limit Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:374 -msgid "ud" +#: src/emc/usr_intf/stepconf/stepconf.py:210 +msgid "Maximum Limit A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:388 -msgid "vd" +#: src/emc/usr_intf/stepconf/stepconf.py:211 +msgid "Both Limit X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:402 -msgid "wd" +#: src/emc/usr_intf/stepconf/stepconf.py:211 +msgid "Both Limit Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:448 -#, fuzzy -msgid "Estop Reset" -msgstr "_Retomar" - -#: src/emc/usr_intf/touchy/touchy.glade:459 -#, fuzzy -msgid "Estop" -msgstr "Stop" +#: src/emc/usr_intf/stepconf/stepconf.py:212 +msgid "Both Limit Z" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:475 -#, fuzzy -msgid "Machine On" -msgstr "Máquina" +#: src/emc/usr_intf/stepconf/stepconf.py:212 +msgid "Both Limit A" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:490 +#: src/emc/usr_intf/stepconf/stepconf.py:213 #, fuzzy -msgid "Machine Off" -msgstr "Máquina" +msgid "All limits" +msgstr "Todos os arquivos" -#: src/emc/usr_intf/touchy/touchy.glade:531 -msgid "Power" +#: src/emc/usr_intf/stepconf/stepconf.py:213 +msgid "All home" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:562 +#: src/emc/usr_intf/stepconf/stepconf.py:213 #, fuzzy -msgid "Unhome All" -msgstr "Home" +msgid "All limits + homes" +msgstr "Todos os arquivos" -#: src/emc/usr_intf/touchy/touchy.glade:588 -#, fuzzy -msgid "Home Selected" -msgstr "Jog no eixo selecionado" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 0" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:603 -msgid "Unhome Selected" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 1" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:625 -msgid "Homing" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 2" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:644 -msgid "Startup" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 3" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:727 +#: src/emc/usr_intf/stepconf/stepconf.py:218 #, fuzzy -msgid "G" -msgstr "Partida" +msgid "Forward" +msgstr "Freio do spindle ativado" -#: src/emc/usr_intf/touchy/touchy.glade:929 -msgid "." +#: src/emc/usr_intf/stepconf/stepconf.py:219 +msgid "Done" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:963 -#: src/emc/usr_intf/pncconf/pncconf.glade:60883 -#: src/emc/usr_intf/pncconf/pncconf.glade:60895 -#: src/emc/usr_intf/pncconf/pncconf.glade:61017 -#: src/emc/usr_intf/pncconf/pncconf.glade:61029 -#: src/emc/usr_intf/pncconf/pncconf.glade:61041 -#: src/emc/usr_intf/pncconf/pncconf.glade:61053 -#: src/emc/usr_intf/pncconf/pncconf.glade:61065 -#: src/emc/usr_intf/pncconf/pncconf.glade:61077 -#: src/emc/usr_intf/pncconf/pncconf.glade:62040 -#: src/emc/usr_intf/pncconf/pncconf.glade:62052 -#: src/emc/usr_intf/pncconf/pncconf.glade:62064 -#: src/emc/usr_intf/pncconf/pncconf.glade:62076 -#: src/emc/usr_intf/pncconf/pncconf.glade:62088 -#: src/emc/usr_intf/pncconf/pncconf.glade:62100 -#: src/emc/usr_intf/pncconf/pncconf.glade:62222 -#: src/emc/usr_intf/pncconf/pncconf.glade:62234 -#: src/emc/usr_intf/pncconf/pncconf.glade:63069 -#: src/emc/usr_intf/pncconf/pncconf.glade:63081 -#: src/emc/usr_intf/pncconf/pncconf.glade:63203 -#: src/emc/usr_intf/pncconf/pncconf.glade:63215 -#: src/emc/usr_intf/pncconf/pncconf.glade:63227 -#: src/emc/usr_intf/pncconf/pncconf.glade:63239 -#: src/emc/usr_intf/pncconf/pncconf.glade:63251 -#: src/emc/usr_intf/pncconf/pncconf.glade:63263 -#: src/emc/usr_intf/pncconf/pncconf.glade:64226 -#: src/emc/usr_intf/pncconf/pncconf.glade:64238 -#: src/emc/usr_intf/pncconf/pncconf.glade:64250 -#: src/emc/usr_intf/pncconf/pncconf.glade:64262 -#: src/emc/usr_intf/pncconf/pncconf.glade:64274 -#: src/emc/usr_intf/pncconf/pncconf.glade:64286 -#: src/emc/usr_intf/pncconf/pncconf.glade:64408 -#: src/emc/usr_intf/pncconf/pncconf.glade:64420 -#: src/emc/usr_intf/pncconf/pncconf.glade:65231 -#: src/emc/usr_intf/pncconf/pncconf.glade:65243 -#: src/emc/usr_intf/pncconf/pncconf.glade:65359 -#: src/emc/usr_intf/pncconf/pncconf.glade:65371 -#: src/emc/usr_intf/pncconf/pncconf.glade:65383 -#: src/emc/usr_intf/pncconf/pncconf.glade:65395 -#: src/emc/usr_intf/pncconf/pncconf.glade:65407 -#: src/emc/usr_intf/pncconf/pncconf.glade:65419 -#: src/emc/usr_intf/pncconf/pncconf.glade:67091 -msgid "0" -msgstr "0" - -#: src/emc/usr_intf/touchy/touchy.glade:980 -msgid "3" +#: src/emc/usr_intf/stepconf/stepconf.py:220 +msgid "" +"OK to replace existing custom ladder program?\n" +"Existing Custom.clp will be renamed custom_backup.clp.\n" +"Any existing file named -custom_backup.clp- will be lost. " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:997 -msgid "2" +#: src/emc/usr_intf/stepconf/stepconf.py:221 +#: src/emc/usr_intf/pncconf/pncconf.py:8163 +msgid "" +"You edited a ladder program and have selected a different program to copy to " +"your configuration file.\n" +"The edited program will be lost.\n" +"\n" +"Are you sure? " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1014 -msgid "1" +#: src/emc/usr_intf/stepconf/stepconf.py:222 +msgid "" +"You need to designate an E-stop input pin in the Parallel Port Setup page " +"for this program." msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1031 -msgid "6" +#: src/emc/usr_intf/stepconf/stepconf.py:223 +msgid "" +"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" +"Existing custompanel.xml and custom_postgui.hal will be renamed " +"custompanel_backup.xml and postgui_backup.hal.\n" +"Any existing file named custompanel_backup.xml and custom_postgui.hal will " +"be lost. " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1048 -msgid "5" +#: src/emc/usr_intf/stepconf/stepconf.py:224 +msgid "Quit Stepconf and discard changes?" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1065 -msgid "4" +#: src/emc/usr_intf/stepconf/stepconf.py:225 +msgid "" +"The configuration has been built and saved.\n" +"Do you want to quit?" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1082 -msgid "9" +#: src/emc/usr_intf/stepconf/stepconf.py:226 +msgid "" +"You are using a simulated-realtime version of Machinekit, so testing / " +"tuning of hardware is unavailable." msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1097 -msgid "8" +#: src/emc/usr_intf/stepconf/stepconf.py:227 +#, python-format +msgid "" +"You are using a realtime version of Machinekit but didn't load a realtime " +"kernel so testing / tuning of hardware is unavailable.\n" +"This is possibly because you updated the OS and it doesn't automatically " +"load the RTAI kernel anymore.\n" +"You are using the %(actual)s kernel.\n" +"You need to use kernel:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1112 -msgid "7" +#: src/emc/usr_intf/stepconf/stepconf.py:246 +msgid "my-mill" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1297 -#, fuzzy -msgid "Flood On" -msgstr "Líquido" - -#: src/emc/usr_intf/touchy/touchy.glade:1308 -#, fuzzy -msgid "Flood Off" -msgstr "Líquido" +#: src/emc/usr_intf/stepconf/stepconf.py:585 +#, python-format +msgid "File %r was modified since it was written by stepconf" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1324 -#, fuzzy -msgid "Mist On" -msgstr "Ar/Névoa" +#: src/emc/usr_intf/stepconf/stepconf.py:588 +msgid "" +"Saving this configuration file will discard configuration changes made " +"outside stepconf." +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1339 +#: src/emc/usr_intf/stepconf/stepconf.py:603 +#: src/emc/usr_intf/pncconf/pncconf.py:1318 #, fuzzy -msgid "Mist Off" -msgstr "Ar/Névoa" +msgid "Continue? " +msgstr "Continuar" -#: src/emc/usr_intf/touchy/touchy.glade:1362 -#, fuzzy -msgid "Coolant" -msgstr "Refrigeração:" +#: src/emc/usr_intf/stepconf/stepconf.py:604 +#: src/emc/usr_intf/pncconf/pncconf.py:1319 +msgid "yY" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1448 -#, fuzzy -msgid "Spindle Off" -msgstr "Freio do spindle desativado" +#: src/emc/usr_intf/stepconf/stepconf.py:689 +#: src/emc/usr_intf/pncconf/pncconf.py:3591 +#, python-format +msgid "launch %s" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1501 -#: src/emc/usr_intf/touchy/touchy.glade:2578 -#, fuzzy -msgid "Spindle speed:" -msgstr "Velocidade da máquina" +#: src/emc/usr_intf/stepconf/stepconf.py:693 +msgid "Desktop Launcher for Machinekit config made by Stepconf" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1513 -#: src/emc/usr_intf/touchy/touchy.glade:2707 -msgid "label26" +#: src/emc/usr_intf/stepconf/stepconf.py:860 +#: src/emc/usr_intf/stepconf/pages.py:145 +msgid "Other" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1539 -#, fuzzy -msgid "Spindle" -msgstr "Spindle:" +#: src/emc/usr_intf/stepconf/stepconf.py:1295 +#: src/emc/usr_intf/pncconf/pncconf.py:9302 +#, python-format +msgid "%s Axis Test" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1597 -msgid "file.ngc" +#: src/emc/usr_intf/stepconf/stepconf.py:1298 +#: src/emc/usr_intf/stepconf/pages.py:617 +msgid "deg / s" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1812 -#: src/emc/usr_intf/touchy/touchy.glade:2017 -#: src/emc/usr_intf/touchy/touchy.glade:2037 -#: src/emc/usr_intf/touchy/touchy.glade:2057 -#: src/emc/usr_intf/touchy/touchy.glade:2077 -#: src/emc/usr_intf/touchy/touchy.glade:2097 -#: src/emc/usr_intf/touchy/touchy.glade:2117 -#: src/emc/usr_intf/touchy/touchy.glade:2137 -#: src/emc/usr_intf/touchy/touchy.glade:2157 -#: src/emc/usr_intf/touchy/touchy.glade:2177 -msgid "M2" +#: src/emc/usr_intf/stepconf/stepconf.py:1299 +#: src/emc/usr_intf/stepconf/pages.py:618 +msgid "deg / s²" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2244 -#: src/emc/usr_intf/touchy/touchy.glade:2374 -msgid "Page" +#: src/emc/usr_intf/stepconf/stepconf.py:1300 +#: src/emc/usr_intf/stepconf/pages.py:619 +msgid "deg" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2308 -msgid "Start Point" +#: src/emc/usr_intf/stepconf/stepconf.py:1312 +#: src/emc/usr_intf/stepconf/pages.py:623 +#: src/emc/usr_intf/stepconf/axisx.glade:629 +#: src/emc/usr_intf/stepconf/axisy.glade:615 +#: src/emc/usr_intf/stepconf/axisz.glade:615 +#: src/emc/usr_intf/stepconf/axisa.glade:629 +#: src/emc/usr_intf/pncconf/pncconf.glade:64717 +msgid "mm / s" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2452 -msgid "Loaded File" +#: src/emc/usr_intf/stepconf/stepconf.py:1313 +#: src/emc/usr_intf/stepconf/pages.py:624 +#: src/emc/usr_intf/stepconf/axisx.glade:645 +#: src/emc/usr_intf/stepconf/axisy.glade:631 +#: src/emc/usr_intf/stepconf/axisz.glade:631 +#: src/emc/usr_intf/stepconf/axisa.glade:645 +#: src/emc/usr_intf/pncconf/pncconf.glade:64732 +msgid "mm / s²" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2488 -msgid "Loaded file:" +#: src/emc/usr_intf/stepconf/stepconf.py:1326 +#: src/emc/usr_intf/stepconf/pages.py:629 +msgid "in / s" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2499 -msgid "Interpreted line:" +#: src/emc/usr_intf/stepconf/stepconf.py:1327 +#: src/emc/usr_intf/stepconf/pages.py:630 +msgid "in / s²" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2513 +#: src/emc/usr_intf/stepconf/pages.py:189 #, fuzzy -msgid "Distance:" -msgstr "Distância em trabalho:" +msgid "Machinekit 'stepconf' configuration files" +msgstr "Mostrar _Configuração Hal" -#: src/emc/usr_intf/touchy/touchy.glade:2526 -#: src/emc/usr_intf/stepconf/stepconf.glade:4148 -#: src/emc/usr_intf/pncconf/pncconf.glade:60476 -#: src/emc/usr_intf/pncconf/pncconf.glade:61571 -#: src/emc/usr_intf/pncconf/pncconf.glade:62664 -#: src/emc/usr_intf/pncconf/pncconf.glade:63757 -#: src/emc/usr_intf/pncconf/pncconf.glade:64856 -msgid "Velocity:" +#: src/emc/usr_intf/stepconf/pages.py:190 +#: src/emc/usr_intf/pncconf/pncconf.py:4257 +#, fuzzy +msgid "Modify Existing Configuration" +msgstr "Mostrar _Configuração Hal" + +#: src/emc/usr_intf/stepconf/pages.py:616 +msgid "degree / rev" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2539 -msgid "Delay:" +#: src/emc/usr_intf/stepconf/pages.py:620 +msgid "Steps / deg" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2552 -msgid "On limit switch:" +#: src/emc/usr_intf/stepconf/pages.py:622 +#: src/emc/usr_intf/stepconf/axisx.glade:613 +#: src/emc/usr_intf/stepconf/axisy.glade:599 +#: src/emc/usr_intf/stepconf/axisz.glade:599 +#: src/emc/usr_intf/stepconf/axisa.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / rev" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2565 -#, fuzzy -msgid "Spindle direction:" -msgstr "Freio do spindle ativado" +#: src/emc/usr_intf/stepconf/pages.py:626 +#: src/emc/usr_intf/stepconf/axisx.glade:15 +#: src/emc/usr_intf/stepconf/axisy.glade:15 +#: src/emc/usr_intf/stepconf/axisz.glade:15 +#: src/emc/usr_intf/stepconf/axisa.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Steps / mm" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2591 -#, fuzzy -msgid "Loaded tool:" -msgstr "Sem ferramenta" +#: src/emc/usr_intf/stepconf/pages.py:628 +msgid "rev / in" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2604 -#: src/emc/usr_intf/touchy/touchy.glade:2955 -msgid "label19" +#: src/emc/usr_intf/stepconf/pages.py:632 +msgid "Steps / in" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2617 -msgid "label20" +#: src/emc/usr_intf/stepconf/build_INI.py:45 +#: src/emc/usr_intf/stepconf/build_HAL.py:41 +#, python-format +msgid "# Generated by stepconf 1.1 at %s" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2632 -#: src/emc/usr_intf/touchy/touchy.glade:2779 -#: src/emc/usr_intf/touchy/touchy.glade:2808 -#: src/emc/usr_intf/touchy/touchy.glade:2912 -#: src/emc/usr_intf/touchy/touchy.glade:2927 -msgid "label21" +#: src/emc/usr_intf/stepconf/build_INI.py:46 +#: src/emc/usr_intf/stepconf/build_HAL.py:42 +#: src/emc/usr_intf/pncconf/pncconf.py:1328 +#: src/emc/usr_intf/pncconf/pncconf.py:2422 +msgid "# If you make changes to this file, they will be" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2647 -msgid "label22" +#: src/emc/usr_intf/stepconf/build_INI.py:47 +#: src/emc/usr_intf/stepconf/build_HAL.py:43 +msgid "# overwritten when you run stepconf again" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2662 -msgid "label23" +#: src/emc/usr_intf/stepconf/build_INI.py:126 +msgid "# add halui MDI commands here (max 64) " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2677 -msgid "label24" +#: src/emc/usr_intf/stepconf/build_HAL.py:275 +#: src/emc/usr_intf/pncconf/pncconf.py:3131 +msgid "# **** Setup for external estop ladder program -START ****" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2692 -msgid "label25" +#: src/emc/usr_intf/stepconf/build_HAL.py:282 +#: src/emc/usr_intf/pncconf/pncconf.py:3138 +msgid "# **** Setup for external estop ladder program -END ****" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2722 -msgid "label27" +#: src/emc/usr_intf/stepconf/build_HAL.py:302 +#: src/emc/usr_intf/pncconf/pncconf.py:3165 +msgid "" +"# Load Classicladder with modbus master included (GUI must run for Modbus)" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2737 -msgid "Prepped tool:" +#: src/emc/usr_intf/stepconf/build_HAL.py:305 +#: src/emc/usr_intf/pncconf/pncconf.py:3170 +msgid "# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2750 -msgid "label28" +#: src/emc/usr_intf/stepconf/build_HAL.py:315 +#: src/emc/usr_intf/pncconf/pncconf.py:3252 +msgid "Include your PyVCP panel here.\n" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2765 -#, fuzzy -msgid "Running line:" -msgstr "Tempo de execução:" +#: src/emc/usr_intf/stepconf/build_HAL.py:324 +#: src/emc/usr_intf/stepconf/build_HAL.py:370 +msgid "# Include your customized HAL commands here" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2794 -#, fuzzy -msgid "XY Rotation:" -msgstr "Posição:" +#: src/emc/usr_intf/stepconf/build_HAL.py:325 +msgid "" +"# The commands in this file are run after the AXIS GUI (including PyVCP " +"panel) starts" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2823 -#, fuzzy -msgid "Tool length:" -msgstr "Tipo da ferramenta" +#: src/emc/usr_intf/stepconf/build_HAL.py:328 +#: src/emc/usr_intf/pncconf/pncconf.py:3280 +msgid "# **** Setup of spindle speed display using pyvcp -START ****" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2836 -msgid "label52" +#: src/emc/usr_intf/stepconf/build_HAL.py:330 +msgid "# **** Use ACTUAL spindle velocity from spindle encoder" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2851 +#: src/emc/usr_intf/stepconf/build_HAL.py:331 msgid "" -"G1 G2 G3\n" -"M1 M2 M3\n" -"F1 S1" +"# **** spindle-velocity-feedback-rps bounces around so we filter it with " +"lowpass" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2870 -#, fuzzy -msgid "Active codes:" -msgstr "Códigos G ativos:" - -#: src/emc/usr_intf/touchy/touchy.glade:2883 -#, fuzzy -msgid "G5x Offset:" -msgstr "Alterar Offset" - -#: src/emc/usr_intf/touchy/touchy.glade:2898 -#, fuzzy -msgid "G92 Offset:" -msgstr "Alterar Offset" +#: src/emc/usr_intf/stepconf/build_HAL.py:332 +msgid "" +"# **** spindle-velocity-feedback-rps is signed so we use absolute component " +"to remove sign" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2942 -#, fuzzy -msgid "Loaded file lines:" -msgstr "Sem ferramenta" +#: src/emc/usr_intf/stepconf/build_HAL.py:333 +msgid "# **** ACTUAL velocity is in RPS not RPM so we scale it." +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2971 -msgid "Pockets:" +#: src/emc/usr_intf/stepconf/build_HAL.py:342 +msgid "# **** set up spindle at speed indicator ****" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2984 +#: src/emc/usr_intf/stepconf/build_HAL.py:355 msgid "" -"1\n" -"2\n" -"3" +"# **** Use COMMANDED spindle velocity from LinuxCNC because no spindle " +"encoder was specified" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3009 -msgid "Status" +#: src/emc/usr_intf/stepconf/build_HAL.py:371 +msgid "# This file will not be overwritten when you run stepconf again" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3038 -#, fuzzy -msgid "Control Font:" -msgstr "Refrigeração:" - -#: src/emc/usr_intf/touchy/touchy.glade:3050 -msgid "DRO Font:" +#: src/emc/usr_intf/stepconf/build_HAL.py:412 +msgid "# This file sets up simulated limits/home/spindle encoder hardware." msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3064 -msgid "Error Font:" +#: src/emc/usr_intf/stepconf/build_HAL.py:413 +msgid "# This is a generated file do not edit." msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3081 +#: src/emc/usr_intf/stepconf/main_page.glade:35 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "ControlFont" -msgstr "Ctrl-K" +msgid "Acceleration:" +msgstr "Alternada" -#: src/emc/usr_intf/touchy/touchy.glade:3100 -msgid "DRO Font" +#: src/emc/usr_intf/stepconf/main_page.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Jog:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3121 -msgid "Error Font" +#: src/emc/usr_intf/stepconf/main_page.glade:63 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Test Area:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3139 -#, fuzzy -msgid "Listing Font:" -msgstr "Ar/Névoa" +#: src/emc/usr_intf/stepconf/main_page.glade:97 +msgid "mm/s^2" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3156 -#, fuzzy -msgid "Listing Font" -msgstr "Ar/Névoa" +#: src/emc/usr_intf/stepconf/main_page.glade:138 +msgid "mm/s" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3176 -msgid "Hide pointer" +#: src/emc/usr_intf/stepconf/main_page.glade:400 +msgid "±" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3187 +#: src/emc/usr_intf/stepconf/main_page.glade:423 #, fuzzy -msgid "Show pointer" -msgstr "M_ostra o programa" +msgid "Stepconf -Stepper Configuration Wizard" +msgstr "Mostrar _Configuração Hal" -#: src/emc/usr_intf/touchy/touchy.glade:3214 -msgid "Theme:" +#: src/emc/usr_intf/stepconf/main_page.glade:503 +#: src/emc/usr_intf/pncconf/pncconf.glade:2054 +#: src/emc/usr_intf/pncconf/pncconf.glade:2067 +#: src/emc/usr_intf/pncconf/pncconf.glade:2080 +#: src/emc/usr_intf/pncconf/pncconf.glade:2093 +#: src/emc/usr_intf/pncconf/pncconf.glade:2106 +#: src/emc/usr_intf/pncconf/pncconf.glade:2119 +#: src/emc/usr_intf/pncconf/pncconf.glade:2132 +#: src/emc/usr_intf/pncconf/pncconf.glade:2145 +#: src/emc/usr_intf/pncconf/pncconf.glade:2156 +#: src/emc/usr_intf/pncconf/pncconf.glade:2169 +#: src/emc/usr_intf/pncconf/pncconf.glade:2182 +#: src/emc/usr_intf/pncconf/pncconf.glade:2528 +#: src/emc/usr_intf/pncconf/pncconf.glade:2541 +#: src/emc/usr_intf/pncconf/pncconf.glade:2554 +#: src/emc/usr_intf/pncconf/pncconf.glade:8104 +#: src/emc/usr_intf/pncconf/pncconf.glade:8139 +#: src/emc/usr_intf/pncconf/pncconf.glade:63377 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:1342 +#: src/emc/usr_intf/gscreen/gscreen.glade:1360 +#: src/emc/usr_intf/gscreen/gscreen.glade:1378 +msgid "label" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3228 -msgid "default\n" +#: src/emc/usr_intf/stepconf/main_page.glade:605 +msgid "" +"This program creates configuration files (.ini and .hal) for \"step and " +"direction\" milling machines and lathes connected to the PC parallel port.\n" +"\n" +"Stepconf requires a minimum 800 X 600 display resolution." msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3252 -msgid "Display Options" +#: src/emc/usr_intf/stepconf/main_page.glade:628 +#: src/emc/usr_intf/pncconf/pncconf.glade:28799 +#: src/emc/usr_intf/pncconf/pncconf.glade:35720 +#: src/emc/usr_intf/pncconf/pncconf.glade:42643 +#: src/emc/usr_intf/pncconf/pncconf.glade:49566 +#: src/emc/usr_intf/pncconf/pncconf.glade:56489 +msgid "page 1" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3286 -msgid "Inch" +#: src/emc/usr_intf/stepconf/base.glade:18 +msgid "XYZ" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3349 -msgid "Position Readout" +#: src/emc/usr_intf/stepconf/base.glade:21 +msgid "XYZA" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3379 -msgid "Workpiece" +#: src/emc/usr_intf/stepconf/base.glade:24 +msgid "XZ (Lathe)" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3390 -msgid "Fixture" +#: src/emc/usr_intf/stepconf/base.glade:79 +msgid "Step _Time:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3410 -#, fuzzy -msgid "Tool Setting" -msgstr "Refrigeração:" - -#: src/emc/usr_intf/touchy/touchy.glade:3441 -msgid "Delete / lines" +#: src/emc/usr_intf/stepconf/base.glade:113 +#: src/emc/usr_intf/stepconf/base.glade:165 +#: src/emc/usr_intf/stepconf/base.glade:219 +#: src/emc/usr_intf/stepconf/base.glade:271 +#: src/emc/usr_intf/stepconf/base.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:443 +#: src/emc/usr_intf/pncconf/pncconf.glade:8226 +msgid "ns" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3456 -msgid "Keep / lines" +#: src/emc/usr_intf/stepconf/base.glade:127 +msgid "Step _Space:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3473 -#, fuzzy -msgid "Pause on M1" -msgstr "_Pausar" - -#: src/emc/usr_intf/touchy/touchy.glade:3484 -msgid "Ignore M1" +#: src/emc/usr_intf/stepconf/base.glade:181 +msgid "Direction _Hold:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3504 -msgid "Program Options" +#: src/emc/usr_intf/stepconf/base.glade:235 +msgid "_Direction Setup:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3531 -msgid "Preferences" +#: src/emc/usr_intf/stepconf/base.glade:338 +msgid "Driver Timing Settings" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3567 -msgid "FO: 100%" +#: src/emc/usr_intf/stepconf/base.glade:351 +msgid "" +"_Test Base\n" +"Period Jitter " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3582 -msgid "SO: 100%" -msgstr "" +#: src/emc/usr_intf/stepconf/base.glade:372 +#, fuzzy +msgid "Machine _Name:" +msgstr "Máquina" -#: src/emc/usr_intf/touchy/touchy.glade:3596 -msgid "MV: 100" -msgstr "" +#: src/emc/usr_intf/stepconf/base.glade:386 +#, fuzzy +msgid "_Axis configuration:" +msgstr "Mostrar _Configuração Hal" -#: src/emc/usr_intf/touchy/touchy.glade:3610 +#: src/emc/usr_intf/stepconf/base.glade:401 #, fuzzy -msgid "Jogging" -msgstr "Modo Joint" +msgid "Reset Default machine _units:" +msgstr "Máquina" -#: src/emc/usr_intf/touchy/touchy.glade:3637 -msgid ".01" +#: src/emc/usr_intf/stepconf/base.glade:416 +#: src/emc/usr_intf/pncconf/pncconf.glade:245 +msgid "Configuration directory:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3650 -msgid ".001" +#: src/emc/usr_intf/stepconf/base.glade:430 +msgid "D_river type:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3666 -msgid ".0001" +#: src/emc/usr_intf/stepconf/base.glade:545 +msgid "" +"Driver characteristics: (Multiply by 1000 for times specified in µs or " +"microseconds)" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3694 -msgid " X " +#: src/emc/usr_intf/stepconf/base.glade:573 +msgid "Base Period Maximum _Jitter:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3706 -msgid " Y " +#: src/emc/usr_intf/stepconf/base.glade:630 +msgid "One Parport" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3721 -msgid " Z " +#: src/emc/usr_intf/stepconf/base.glade:646 +msgid "Two Parports" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3736 -msgid " A " +#: src/emc/usr_intf/stepconf/base.glade:663 +msgid "Three Parports" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3752 -msgid " B " +#: src/emc/usr_intf/stepconf/base.glade:698 +msgid "Min Base Period:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3770 -msgid " C " +#: src/emc/usr_intf/stepconf/base.glade:735 +msgid "Max step rate:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3788 -msgid " U " +#: src/emc/usr_intf/stepconf/base.glade:870 +msgid "MM" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3804 -msgid " V " -msgstr "" +#: src/emc/usr_intf/stepconf/start.glade:11 +#, fuzzy +msgid "Create a _new configuration" +msgstr "Mostrar _Configuração Hal" -#: src/emc/usr_intf/touchy/touchy.glade:3822 -msgid " W " +#: src/emc/usr_intf/stepconf/start.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:130 +msgid "Modify a configuration already created with this program" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3855 -msgid "Handwheel" +#: src/emc/usr_intf/stepconf/start.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:118 +msgid "Do you wish to:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:53 +#: src/emc/usr_intf/stepconf/start.glade:61 +#: src/emc/usr_intf/pncconf/pncconf.glade:100 msgid "" -"Stepconf encountered an error. The following information may be useful in " -"troubleshooting:\n" -"\n" +"If you have made modifications to this configuration outside this program, " +"they will be lost when you select \"Modify a configuration\"" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:70 -#: src/emc/usr_intf/pncconf/pncconf.py:133 -msgid "Gecko 201" +#: src/emc/usr_intf/stepconf/start.glade:76 +msgid "Create a desktop _shortcut (symlink) to configuration files." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:71 -#: src/emc/usr_intf/pncconf/pncconf.py:134 -msgid "Gecko 202" +#: src/emc/usr_intf/stepconf/start.glade:93 +msgid "Create a desktop _launcher to start LinuxCNC with this configuration." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:72 -#: src/emc/usr_intf/pncconf/pncconf.py:135 -msgid "Gecko 203v" +#: src/emc/usr_intf/stepconf/start.glade:124 +#, fuzzy +msgid "Create simulated hardware configuration." +msgstr "Mostrar _Configuração Hal" + +#: src/emc/usr_intf/stepconf/pport1.glade:35 +msgid "Xylotex" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:73 -#: src/emc/usr_intf/pncconf/pncconf.py:136 -msgid "Gecko 210" +#: src/emc/usr_intf/stepconf/pport1.glade:38 +msgid "TB6560 3 axes" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:74 -#: src/emc/usr_intf/pncconf/pncconf.py:137 -msgid "Gecko 212" +#: src/emc/usr_intf/stepconf/pport1.glade:41 +msgid "TB6560 4 axes" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:75 -#: src/emc/usr_intf/pncconf/pncconf.py:138 -msgid "Gecko 320" +#: src/emc/usr_intf/stepconf/pport1.glade:59 +#: src/emc/usr_intf/pncconf/pncconf.glade:62915 +msgid "Pin _1:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:76 -#: src/emc/usr_intf/pncconf/pncconf.py:139 -msgid "Gecko 540" +#: src/emc/usr_intf/stepconf/pport1.glade:74 +#: src/emc/usr_intf/stepconf/pport2.glade:768 +#: src/emc/usr_intf/pncconf/pncconf.glade:61685 +#: src/emc/usr_intf/pncconf/pncconf.glade:62901 +msgid "Pin _2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:77 -#: src/emc/usr_intf/pncconf/pncconf.py:140 -msgid "L297" +#: src/emc/usr_intf/stepconf/pport1.glade:89 +#: src/emc/usr_intf/stepconf/pport2.glade:814 +#: src/emc/usr_intf/pncconf/pncconf.glade:61668 +#: src/emc/usr_intf/pncconf/pncconf.glade:62887 +msgid "Pin _3:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:78 -#: src/emc/usr_intf/pncconf/pncconf.py:141 -msgid "PMDX-150" +#: src/emc/usr_intf/stepconf/pport1.glade:104 +#: src/emc/usr_intf/stepconf/pport2.glade:860 +#: src/emc/usr_intf/pncconf/pncconf.glade:61651 +#: src/emc/usr_intf/pncconf/pncconf.glade:62873 +msgid "Pin _4:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:79 -#: src/emc/usr_intf/pncconf/pncconf.py:142 -msgid "Sherline" +#: src/emc/usr_intf/stepconf/pport1.glade:119 +#: src/emc/usr_intf/stepconf/pport2.glade:906 +#: src/emc/usr_intf/pncconf/pncconf.glade:61634 +#: src/emc/usr_intf/pncconf/pncconf.glade:62859 +msgid "Pin _5:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:80 -#: src/emc/usr_intf/pncconf/pncconf.py:143 -msgid "Xylotex 8S-3" +#: src/emc/usr_intf/stepconf/pport1.glade:134 +#: src/emc/usr_intf/stepconf/pport2.glade:952 +#: src/emc/usr_intf/pncconf/pncconf.glade:61617 +#: src/emc/usr_intf/pncconf/pncconf.glade:62845 +msgid "Pin _6:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:81 -#: src/emc/usr_intf/pncconf/pncconf.py:144 -msgid "Parker-Compumotor oem750" +#: src/emc/usr_intf/stepconf/pport1.glade:149 +#: src/emc/usr_intf/stepconf/pport2.glade:998 +#: src/emc/usr_intf/pncconf/pncconf.glade:61600 +#: src/emc/usr_intf/pncconf/pncconf.glade:62831 +msgid "Pin _7:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:82 -#: src/emc/usr_intf/pncconf/pncconf.py:145 -msgid "JVL-SMD41 or 42" +#: src/emc/usr_intf/stepconf/pport1.glade:164 +#: src/emc/usr_intf/stepconf/pport2.glade:1044 +#: src/emc/usr_intf/pncconf/pncconf.glade:61583 +#: src/emc/usr_intf/pncconf/pncconf.glade:62817 +msgid "Pin _8:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:83 -#: src/emc/usr_intf/pncconf/pncconf.py:146 -msgid "Hobbycnc Pro Chopper" +#: src/emc/usr_intf/stepconf/pport1.glade:179 +#: src/emc/usr_intf/stepconf/pport2.glade:1090 +#: src/emc/usr_intf/pncconf/pncconf.glade:61566 +#: src/emc/usr_intf/pncconf/pncconf.glade:62803 +msgid "Pin _9:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:84 -#: src/emc/usr_intf/pncconf/pncconf.py:147 -msgid "Keling 4030" +#: src/emc/usr_intf/stepconf/pport1.glade:194 +#: src/emc/usr_intf/stepconf/pport2.glade:1137 +#: src/emc/usr_intf/pncconf/pncconf.glade:62789 +msgid "_Pin 14:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -#, fuzzy -msgid "X Step" -msgstr "_Passo" +#: src/emc/usr_intf/stepconf/pport1.glade:209 +#: src/emc/usr_intf/stepconf/pport2.glade:1185 +#: src/emc/usr_intf/pncconf/pncconf.glade:62775 +msgid "P_in 16:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -msgid "X Direction" +#: src/emc/usr_intf/stepconf/pport1.glade:224 +#: src/emc/usr_intf/stepconf/pport2.glade:1233 +#: src/emc/usr_intf/pncconf/pncconf.glade:62761 +msgid "Pi_n 17:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -#, fuzzy -msgid "Y Step" -msgstr "_Passo" - -#: src/emc/usr_intf/stepconf/stepconf.py:153 -msgid "Y Direction" +#: src/emc/usr_intf/stepconf/pport1.glade:470 +#: src/emc/usr_intf/stepconf/pport2.glade:692 +msgid "Outputs (PC to Mill):" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -#, fuzzy -msgid "Z Step" -msgstr "_Passo" +#: src/emc/usr_intf/stepconf/pport1.glade:483 +#: src/emc/usr_intf/stepconf/pport2.glade:427 +#: src/emc/usr_intf/pncconf/pncconf.glade:61701 +msgid "Pin 1_0:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -msgid "Z Direction" +#: src/emc/usr_intf/stepconf/pport1.glade:500 +#: src/emc/usr_intf/stepconf/pport2.glade:475 +#: src/emc/usr_intf/pncconf/pncconf.glade:61717 +msgid "Pin 1_1:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -#, fuzzy -msgid "A Step" -msgstr "_Passo" +#: src/emc/usr_intf/stepconf/pport1.glade:517 +#: src/emc/usr_intf/stepconf/pport2.glade:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:61733 +msgid "Pin 1_2:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -msgid "A Direction" +#: src/emc/usr_intf/stepconf/pport1.glade:534 +#: src/emc/usr_intf/stepconf/pport2.glade:571 +#: src/emc/usr_intf/pncconf/pncconf.glade:61749 +msgid "Pin 1_3:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -#, fuzzy -msgid "Spindle ON" -msgstr "Spindle:" +#: src/emc/usr_intf/stepconf/pport1.glade:551 +#: src/emc/usr_intf/stepconf/pport2.glade:619 +#: src/emc/usr_intf/pncconf/pncconf.glade:61765 +msgid "Pin 1_5:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#, fuzzy -msgid "Spindle PWM" -msgstr "Spindle:" +#: src/emc/usr_intf/stepconf/pport1.glade:590 +#: src/emc/usr_intf/stepconf/pport2.glade:16 +msgid "Inputs (Mill to PC):" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 +#: src/emc/usr_intf/stepconf/pport1.glade:618 +#: src/emc/usr_intf/stepconf/pport1.glade:632 +#: src/emc/usr_intf/stepconf/pport2.glade:29 +#: src/emc/usr_intf/stepconf/pport2.glade:702 +#: src/emc/usr_intf/pncconf/pncconf.glade:62335 +#: src/emc/usr_intf/pncconf/pncconf.glade:62348 #, fuzzy -msgid "Spindle Brake" -msgstr "Freio do spindle ativado" +msgid "Invert" +msgstr "Inverter imagem" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 -#, fuzzy -msgid "Coolant Mist" -msgstr "Refrigeração:" +#: src/emc/usr_intf/stepconf/pport1.glade:1018 +msgid "Output pinout presets:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 -#, fuzzy -msgid "Coolant Flood" -msgstr "Refrigeração:" +#: src/emc/usr_intf/stepconf/pport1.glade:1096 +msgid "Parport _Base Address:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/stepconf/pport1.glade:1132 #, fuzzy -msgid "ESTOP Out" -msgstr "PARADA DE EMERGÊNCIA" +msgid "Preset" +msgstr "_Retomar" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -msgid "Amplifier Enable" +#: src/emc/usr_intf/stepconf/pport2.glade:47 +msgid "Pin 2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:157 -#: src/emc/usr_intf/pncconf/pncconf.py:443 -msgid "Charge Pump" +#: src/emc/usr_intf/stepconf/pport2.glade:94 +msgid "Pin 3:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 0" +#: src/emc/usr_intf/stepconf/pport2.glade:141 +msgid "Pin 4:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 1" +#: src/emc/usr_intf/stepconf/pport2.glade:188 +msgid "Pin 5:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 2" +#: src/emc/usr_intf/stepconf/pport2.glade:235 +msgid "Pin 6:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 3" +#: src/emc/usr_intf/stepconf/pport2.glade:282 +msgid "Pin 7:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:159 -#: src/emc/usr_intf/stepconf/stepconf.py:178 -msgid "Unused" +#: src/emc/usr_intf/stepconf/pport2.glade:329 +msgid "Pin 8:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 -#, fuzzy -msgid "ESTOP In" -msgstr "PARADA DE EMERGÊNCIA" - -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 -msgid "Probe In" +#: src/emc/usr_intf/stepconf/pport2.glade:376 +msgid "Pin 9:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:162 -#, fuzzy -msgid "Spindle Index" -msgstr "Spindle:" +#: src/emc/usr_intf/stepconf/pport2.glade:721 +msgid "Pin _1: " +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:162 -#, fuzzy -msgid "Spindle Phase A" -msgstr "Freio do spindle ativado" +#: src/emc/usr_intf/stepconf/pport2.glade:1431 +msgid "Out" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:162 -#, fuzzy -msgid "Spindle Phase B" -msgstr "Freio do spindle ativado" +#: src/emc/usr_intf/stepconf/pport2.glade:1434 +msgid "In" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/spindle.glade:23 #, fuzzy -msgid "Home X" -msgstr "Home" +msgid "Use spindle-at-speed:" +msgstr "Velocidade da máquina" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -#, fuzzy -msgid "Home Y" -msgstr "Home" +#: src/emc/usr_intf/stepconf/spindle.glade:64 +msgid "Speed display filter gain:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/spindle.glade:99 #, fuzzy -msgid "Home Z" -msgstr "Home" +msgid "Calibration:" +msgstr "_Calibrar" -#: src/emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/spindle.glade:113 #, fuzzy -msgid "Home A" -msgstr "Home" - -#: src/emc/usr_intf/stepconf/stepconf.py:164 -msgid "Minimum Limit + Home X" -msgstr "" +msgid "_Speed 1:" +msgstr "Velocidade de Jog" -#: src/emc/usr_intf/stepconf/stepconf.py:164 -msgid "Minimum Limit + Home Y" +#: src/emc/usr_intf/stepconf/spindle.glade:129 +msgid "_PWM 1:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:165 -msgid "Minimum Limit + Home Z" -msgstr "" +#: src/emc/usr_intf/stepconf/spindle.glade:148 +#, fuzzy +msgid "S_peed 2:" +msgstr "Velocidade de Jog" -#: src/emc/usr_intf/stepconf/stepconf.py:165 -msgid "Minimum Limit + Home A" +#: src/emc/usr_intf/stepconf/spindle.glade:164 +msgid "P_WM 2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:166 -msgid "Maximum Limit + Home X" +#: src/emc/usr_intf/stepconf/spindle.glade:183 +msgid "PWM _Rate:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:166 -msgid "Maximum Limit + Home Y" +#: src/emc/usr_intf/stepconf/spindle.glade:285 +msgid "_Cycles per revolution:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:167 -msgid "Maximum Limit + Home Z" +#: src/emc/usr_intf/stepconf/spindle.glade:347 +msgid "Enter 0 Hz for \"PDM\" mode" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:167 -msgid "Maximum Limit + Home A" -msgstr "" +#: src/emc/usr_intf/stepconf/spindle.glade:360 +#, fuzzy +msgid "Scale %" +msgstr "Escala" -#: src/emc/usr_intf/stepconf/stepconf.py:168 -msgid "Both Limit + Home X" +#: src/emc/usr_intf/stepconf/options.glade:50 +msgid "Include Halui user interface component" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:168 -msgid "Both Limit + Home Y" -msgstr "" +#: src/emc/usr_intf/stepconf/options.glade:102 +#: src/emc/usr_intf/pncconf/pncconf.glade:6753 +#, fuzzy +msgid "Blank program" +msgstr "Roda o programa" -#: src/emc/usr_intf/stepconf/stepconf.py:169 -msgid "Both Limit + Home Z" -msgstr "" +#: src/emc/usr_intf/stepconf/options.glade:119 +#: src/emc/usr_intf/pncconf/pncconf.glade:6768 +#, fuzzy +msgid "Spindle speed display " +msgstr "Velocidade da máquina" -#: src/emc/usr_intf/stepconf/stepconf.py:169 -msgid "Both Limit + Home A" +#: src/emc/usr_intf/stepconf/options.glade:136 +#: src/emc/usr_intf/stepconf/options.glade:671 +#: src/emc/usr_intf/pncconf/pncconf.glade:6799 +#: src/emc/usr_intf/pncconf/pncconf.glade:7120 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Existing custom program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:170 -msgid "Minimum Limit X" +#: src/emc/usr_intf/stepconf/options.glade:153 +#: src/emc/usr_intf/stepconf/options.glade:688 +#: src/emc/usr_intf/pncconf/pncconf.glade:6814 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include connections to HAL" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:170 -msgid "Minimum Limit Y" +#: src/emc/usr_intf/stepconf/options.glade:202 +#: src/emc/usr_intf/pncconf/pncconf.glade:6997 +#: src/emc/usr_intf/pncconf/pncconf.glade:7545 +msgid "" +"_Display\n" +"sample\n" +"panel" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:171 -msgid "Minimum Limit Z" +#: src/emc/usr_intf/stepconf/options.glade:243 +#: src/emc/usr_intf/pncconf/pncconf.glade:7056 +msgid "Include custom PyVCP GUI panel" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:171 -msgid "Minimum Limit A" +#: src/emc/usr_intf/stepconf/options.glade:414 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (float) out pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:172 -msgid "Maximum Limit X" +#: src/emc/usr_intf/stepconf/options.glade:429 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (float) in pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:172 -msgid "Maximum Limit Y" +#: src/emc/usr_intf/stepconf/options.glade:444 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (s32) out pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:173 -msgid "Maximum Limit Z" +#: src/emc/usr_intf/stepconf/options.glade:459 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (s32) in pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:173 -msgid "Maximum Limit A" +#: src/emc/usr_intf/stepconf/options.glade:475 +msgid "Number of digital out pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:174 -msgid "Both Limit X" +#: src/emc/usr_intf/stepconf/options.glade:506 +msgid "Number of digital in pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:174 -msgid "Both Limit Y" +#: src/emc/usr_intf/stepconf/options.glade:518 +msgid "setup number of external pins" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:175 -msgid "Both Limit Z" +#: src/emc/usr_intf/stepconf/options.glade:533 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include modbus master support" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:175 -msgid "Both Limit A" -msgstr "" +#: src/emc/usr_intf/stepconf/options.glade:625 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Blank ladder program" +msgstr "Recarrega o programa" -#: src/emc/usr_intf/stepconf/stepconf.py:176 +#: src/emc/usr_intf/stepconf/options.glade:638 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "All limits" -msgstr "Todos os arquivos" +msgid "Estop ladder program" +msgstr "Pára o carregamento da vista preliminar" -#: src/emc/usr_intf/stepconf/stepconf.py:176 -msgid "All home" -msgstr "" +#: src/emc/usr_intf/stepconf/options.glade:654 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Serial modbus program" +msgstr "Recarrega o programa" -#: src/emc/usr_intf/stepconf/stepconf.py:176 +#: src/emc/usr_intf/stepconf/options.glade:740 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "All limits + homes" -msgstr "Todos os arquivos" +msgid "" +"Edit ladder\n" +"program" +msgstr "Recarrega o programa" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 0" +#: src/emc/usr_intf/stepconf/options.glade:781 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include _Classicladder PLC" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 1" +#: src/emc/usr_intf/stepconf/options.glade:802 +msgid "_Onscreen prompt for manual tool change" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 2" +#: src/emc/usr_intf/stepconf/axisx.glade:31 +#: src/emc/usr_intf/stepconf/axisy.glade:31 +#: src/emc/usr_intf/stepconf/axisz.glade:31 +#: src/emc/usr_intf/stepconf/axisa.glade:45 +msgid "_Motor steps per revolution:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 3" +#: src/emc/usr_intf/stepconf/axisx.glade:45 +#: src/emc/usr_intf/stepconf/axisy.glade:44 +#: src/emc/usr_intf/stepconf/axisz.glade:44 +#: src/emc/usr_intf/stepconf/axisa.glade:58 +msgid "_Driver Microstepping:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:203 -msgid "my-mill" +#: src/emc/usr_intf/stepconf/axisx.glade:61 +#: src/emc/usr_intf/stepconf/axisy.glade:59 +#: src/emc/usr_intf/stepconf/axisz.glade:59 +#: src/emc/usr_intf/stepconf/axisa.glade:73 +msgid "_Pulley teeth (Motor:Leadscrew):" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:215 -#: src/emc/usr_intf/stepconf/stepconf.py:217 -#: src/emc/usr_intf/pncconf/pncconf.py:983 -#: src/emc/usr_intf/pncconf/pncconf.py:985 -msgid "Enter Address" +#: src/emc/usr_intf/stepconf/axisx.glade:77 +#: src/emc/usr_intf/stepconf/axisy.glade:74 +#: src/emc/usr_intf/stepconf/axisz.glade:74 +#: src/emc/usr_intf/stepconf/axisa.glade:88 +msgid "_Leadscrew Pitch:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:375 -#, python-format -msgid "File %r was modified since it was written by stepconf" +#: src/emc/usr_intf/stepconf/axisx.glade:93 +#: src/emc/usr_intf/stepconf/axisy.glade:89 +#: src/emc/usr_intf/stepconf/axisz.glade:89 +#: src/emc/usr_intf/stepconf/axisa.glade:103 +#: src/emc/usr_intf/pncconf/pncconf.glade:64687 +msgid "Maximum _Velocity:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:378 -msgid "" -"Saving this configuration file will discard configuration changes made " -"outside stepconf." +#: src/emc/usr_intf/stepconf/axisx.glade:109 +#: src/emc/usr_intf/stepconf/axisy.glade:104 +#: src/emc/usr_intf/stepconf/axisz.glade:104 +#: src/emc/usr_intf/stepconf/axisa.glade:118 +#: src/emc/usr_intf/pncconf/pncconf.glade:64702 +msgid "Maximum _Acceleration:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:393 -#: src/emc/usr_intf/pncconf/pncconf.py:1356 -#, fuzzy -msgid "Continue? " -msgstr "Continuar" - -#: src/emc/usr_intf/stepconf/stepconf.py:394 -#: src/emc/usr_intf/pncconf/pncconf.py:1357 -msgid "yY" +#: src/emc/usr_intf/stepconf/axisx.glade:125 +#: src/emc/usr_intf/stepconf/axisy.glade:119 +#: src/emc/usr_intf/stepconf/axisz.glade:119 +#: src/emc/usr_intf/stepconf/axisa.glade:133 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Time to accelerate to max speed:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:446 -#: src/emc/usr_intf/stepconf/stepconf.py:786 -#, python-format -msgid "# Generated by stepconf at %s" +#: src/emc/usr_intf/stepconf/axisx.glade:141 +#: src/emc/usr_intf/stepconf/axisy.glade:134 +#: src/emc/usr_intf/stepconf/axisz.glade:134 +#: src/emc/usr_intf/stepconf/axisa.glade:148 +msgid "Distance to accelerate to max speed:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:447 -#: src/emc/usr_intf/stepconf/stepconf.py:787 -#: src/emc/usr_intf/pncconf/pncconf.py:1366 -#: src/emc/usr_intf/pncconf/pncconf.py:2369 -msgid "# If you make changes to this file, they will be" +#: src/emc/usr_intf/stepconf/axisx.glade:271 +#: src/emc/usr_intf/stepconf/axisy.glade:263 +#: src/emc/usr_intf/stepconf/axisz.glade:263 +#: src/emc/usr_intf/stepconf/axisa.glade:277 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulse rate at max speed:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:448 -#: src/emc/usr_intf/stepconf/stepconf.py:788 -msgid "# overwritten when you run stepconf again" +#: src/emc/usr_intf/stepconf/axisx.glade:342 +#: src/emc/usr_intf/stepconf/axisy.glade:334 +#: src/emc/usr_intf/stepconf/axisz.glade:334 +#: src/emc/usr_intf/stepconf/axisa.glade:348 +msgid "_Home location:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:516 -msgid "# add halui MDI commands here (max 64) " +#: src/emc/usr_intf/stepconf/axisx.glade:358 +#: src/emc/usr_intf/stepconf/axisy.glade:349 +#: src/emc/usr_intf/stepconf/axisz.glade:349 +#: src/emc/usr_intf/stepconf/axisa.glade:363 +msgid "Home _Switch location:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:991 -#: src/emc/usr_intf/pncconf/pncconf.py:2991 -msgid "# **** Setup for external estop ladder program -START ****" +#: src/emc/usr_intf/stepconf/axisx.glade:374 +#: src/emc/usr_intf/stepconf/axisy.glade:364 +#: src/emc/usr_intf/stepconf/axisz.glade:364 +#: src/emc/usr_intf/stepconf/axisa.glade:378 +msgid "Home Sear_ch velocity:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:998 -#: src/emc/usr_intf/pncconf/pncconf.py:2998 -msgid "# **** Setup for external estop ladder program -END ****" +#: src/emc/usr_intf/stepconf/axisx.glade:390 +#: src/emc/usr_intf/stepconf/axisy.glade:379 +#: src/emc/usr_intf/stepconf/axisz.glade:379 +#: src/emc/usr_intf/stepconf/axisa.glade:393 +msgid "Home La_tch direction:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1018 -#: src/emc/usr_intf/pncconf/pncconf.py:3025 -msgid "" -"# Load Classicladder with modbus master included (GUI must run for Modbus)" +#: src/emc/usr_intf/stepconf/axisx.glade:404 +#: src/emc/usr_intf/stepconf/axisy.glade:393 +#: src/emc/usr_intf/stepconf/axisz.glade:393 +#: src/emc/usr_intf/stepconf/axisa.glade:407 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "_:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1021 -#: src/emc/usr_intf/pncconf/pncconf.py:3030 -msgid "# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI" +#: src/emc/usr_intf/stepconf/axisx.glade:498 +#: src/emc/usr_intf/stepconf/axisy.glade:486 +#: src/emc/usr_intf/stepconf/axisz.glade:486 +#: src/emc/usr_intf/stepconf/axisa.glade:500 +msgid "Tab_le travel:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1031 -#: src/emc/usr_intf/pncconf/pncconf.py:3112 -msgid "Include your PyVCP panel here.\n" +#: src/emc/usr_intf/stepconf/axisx.glade:531 +#: src/emc/usr_intf/stepconf/axisy.glade:518 +#: src/emc/usr_intf/stepconf/axisz.glade:518 +#: src/emc/usr_intf/stepconf/axisa.glade:532 +msgid "t_o" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1040 -#: src/emc/usr_intf/stepconf/stepconf.py:1087 -msgid "# Include your customized HAL commands here" +#: src/emc/usr_intf/stepconf/axisx.glade:677 +#: src/emc/usr_intf/stepconf/axisy.glade:663 +#: src/emc/usr_intf/stepconf/axisz.glade:663 +#: src/emc/usr_intf/stepconf/axisa.glade:677 +msgid "s" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1041 -msgid "" -"# The commands in this file are run after the AXIS GUI (including PyVCP " -"panel) starts" -msgstr "" +#: src/emc/usr_intf/stepconf/axisx.glade:738 +#: src/emc/usr_intf/stepconf/axisy.glade:724 +#: src/emc/usr_intf/stepconf/axisz.glade:724 +#: src/emc/usr_intf/stepconf/axisa.glade:738 +#, fuzzy +msgid "T_est this axis" +msgstr "Jog no terceiro eixo" -#: src/emc/usr_intf/stepconf/stepconf.py:1045 -#: src/emc/usr_intf/pncconf/pncconf.py:3140 -msgid "# **** Setup of spindle speed display using pyvcp -START ****" -msgstr "" +#: src/emc/usr_intf/stepconf/axisx.glade:765 +#: src/emc/usr_intf/stepconf/axisy.glade:751 +#: src/emc/usr_intf/stepconf/axisz.glade:751 +#: src/emc/usr_intf/stepconf/axisa.glade:765 +#, fuzzy +msgid "Axis SCALE:" +msgstr "Eixo:" -#: src/emc/usr_intf/stepconf/stepconf.py:1047 -msgid "# **** Use ACTUAL spindle velocity from spindle encoder" +#: src/emc/usr_intf/stepconf/axisx.glade:833 +#: src/emc/usr_intf/stepconf/axisy.glade:819 +#: src/emc/usr_intf/stepconf/axisz.glade:819 +#: src/emc/usr_intf/stepconf/axisa.glade:12 +msgid "Same" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1048 -msgid "# **** spindle-velocity bounces around so we filter it with lowpass" -msgstr "" +#: src/emc/usr_intf/stepconf/axisx.glade:836 +#: src/emc/usr_intf/stepconf/axisy.glade:822 +#: src/emc/usr_intf/stepconf/axisz.glade:822 +#: src/emc/usr_intf/stepconf/axisa.glade:15 +#, fuzzy +msgid "Opposite" +msgstr "Positivo" -#: src/emc/usr_intf/stepconf/stepconf.py:1049 +#: src/emc/usr_intf/stepconf/finished.glade:6 msgid "" -"# **** spindle-velocity is signed so we use absolute component to remove sign" +"All the necessary information has now been gathered. \n" +"Click \"Done\" to write your configuration files to disk.\n" +"\n" +"If you experience lockups while running LinuxCNC:\n" +"-you will need to decrease the maximum velocity which will have the effect " +"of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC:\n" +"-first verify that you entered the proper timings for your stepper " +"drivers. \n" +"-then run a more thorough latency test as described on the linuxcnc.org " +"wiki.\n" +" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" +"\n" +"If you experience the \"Unexpected Realtime Delay\" message:\n" +"-run a more thorough latency test as described on the linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1050 -msgid "# **** ACTUAL velocity is in RPS not RPM so we scale it." +#: src/emc/usr_intf/pncconf/pncconf.py:81 +msgid "" +"PNCconf encountered an error. The following information may be useful in " +"troubleshooting:\n" +"\n" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1059 -msgid "# **** set up spindle at speed indicator ****" +#: src/emc/usr_intf/pncconf/pncconf.py:149 +msgid "Keling 4030" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1072 -msgid "" -"# **** Use COMMANDED spindle velocity from LinuxCNC because no spindle " -"encoder was specified" +#: src/emc/usr_intf/pncconf/pncconf.py:151 +msgid "Not Used" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1073 -msgid "" -"# **** COMANDED velocity is signed so we use absolute component (abs.0) to " -"remove sign" +#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:176 +msgid "Dummy" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1088 -msgid "# This file will not be overwritten when you run stepconf again" +#: src/emc/usr_intf/pncconf/pncconf.py:152 +msgid "8i20 Servo Drive" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1095 -#, python-format -msgid "Generated by stepconf at %s" +#: src/emc/usr_intf/pncconf/pncconf.py:153 +msgid "POT Output" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1166 -#: src/emc/usr_intf/pncconf/pncconf.py:3451 -#, python-format -msgid "launch %s" +#: src/emc/usr_intf/pncconf/pncconf.py:153 +#, fuzzy +msgid "POT Enable" +msgstr "Nome:" + +#: src/emc/usr_intf/pncconf/pncconf.py:153 +#, fuzzy +msgid "POT Direction" +msgstr "Freio do spindle ativado" + +#: src/emc/usr_intf/pncconf/pncconf.py:154 +msgid "GPIO Input" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1170 -msgid "Desktop Launcher for LinuxCNC config made by Stepconf" +#: src/emc/usr_intf/pncconf/pncconf.py:154 +msgid "GPIO Output" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1196 -#: src/emc/usr_intf/pncconf/pncconf.py:3700 -#, fuzzy, python-format -msgid "%s Axis Configuration" -msgstr "Mostrar _Configuração Hal" +#: src/emc/usr_intf/pncconf/pncconf.py:154 +msgid "GPIO O Drain" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1238 -#: src/emc/usr_intf/stepconf/stepconf.py:1337 -msgid "Other" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-A" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1249 -msgid "Quit Stepconf and discard changes?" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-B" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1280 -msgid "" -"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " -"of hardware is unavailable." +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-I" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1283 -msgid "" -"You are using a realtime version of LinuxCNC but didn't load a realtime " -"kernel so testing / tuning of hardware is unavailable.\n" -"This is possibly because you updated the OS and it doesn't automatically " -"load the RTAI kernel anymore.\n" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-M" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1298 +#: src/emc/usr_intf/pncconf/pncconf.py:156 #, fuzzy -msgid "LinuxCNC 'stepconf' configuration files" -msgstr "Mostrar _Configuração Hal" +msgid "Muxed Encoder 0" +msgstr "Inverter imagem" -#: src/emc/usr_intf/stepconf/stepconf.py:1299 -#: src/emc/usr_intf/pncconf/pncconf.py:4094 +#: src/emc/usr_intf/pncconf/pncconf.py:156 #, fuzzy -msgid "Modify Existing Configuration" -msgstr "Mostrar _Configuração Hal" +msgid "Muxed Encoder 1" +msgstr "Inverter imagem" -#: src/emc/usr_intf/stepconf/stepconf.py:1439 -msgid "" -"You need to designate an E-stop input pin in the Parallel Port Setup page " -"for this program." +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "muxed enc" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1452 -msgid "" -"OK to replace existing custom ladder program?\n" -"Existing Custom.clp will be renamed custom_backup.clp.\n" -"Any existing file named -custom_backup.clp- will be lost. " +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "mux enc mask" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1457 -#: src/emc/usr_intf/pncconf/pncconf.py:7815 -msgid "" -"You edited a ladder program and have selected a different program to copy to " -"your configuration file.\n" -"The edited program will be lost.\n" -"\n" -"Are you sure? " -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +#, fuzzy +msgid "mux select" +msgstr "Jog no eixo selecionado" -#: src/emc/usr_intf/stepconf/stepconf.py:1471 -msgid "" -"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" -"Existing custompanel.xml and custom_postgui.hal will be renamed " -"custompanel_backup.xml and postgui_backup.hal.\n" -"Any existing file named custompanel_backup.xml and custom_postgui.hal will " -"be lost. " -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:157 +#, fuzzy +msgid "Resolver 0 Encoder" +msgstr "Inverter imagem" -#: src/emc/usr_intf/stepconf/stepconf.py:1676 -msgid "degree / rev" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:157 +#, fuzzy +msgid "Resolver 1 Encoder" +msgstr "Inverter imagem" -#: src/emc/usr_intf/stepconf/stepconf.py:1677 -#: src/emc/usr_intf/stepconf/stepconf.py:2205 -msgid "deg / s" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:157 +#, fuzzy +msgid "Resolver 2 Encoder" +msgstr "Inverter imagem" -#: src/emc/usr_intf/stepconf/stepconf.py:1678 -#: src/emc/usr_intf/stepconf/stepconf.py:2206 -msgid "deg / s²" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:158 +#, fuzzy +msgid "Resolver 3 Encoder" +msgstr "Inverter imagem" -#: src/emc/usr_intf/stepconf/stepconf.py:1679 -#: src/emc/usr_intf/stepconf/stepconf.py:2207 -msgid "deg" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:158 +#, fuzzy +msgid "Resolver 4 Encoder" +msgstr "Inverter imagem" -#: src/emc/usr_intf/stepconf/stepconf.py:1680 -msgid "Steps / deg" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:158 +#, fuzzy +msgid "Resolver 5 Encoder" +msgstr "Inverter imagem" -#: src/emc/usr_intf/stepconf/stepconf.py:1682 -#: src/emc/usr_intf/stepconf/stepconf.glade:3589 -#: src/emc/usr_intf/pncconf/pncconf.glade:66138 -#: src/emc/usr_intf/pncconf/pncconf.glade:66424 -msgid "mm / rev" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +#, fuzzy +msgid "Step Gen-A" +msgstr "Roda uma linha do programa" -#: src/emc/usr_intf/stepconf/stepconf.py:1683 -#: src/emc/usr_intf/stepconf/stepconf.py:2219 -#: src/emc/usr_intf/stepconf/stepconf.glade:3604 -#: src/emc/usr_intf/pncconf/pncconf.glade:57828 -msgid "mm / s" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Dir Gen-B" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1684 -#: src/emc/usr_intf/stepconf/stepconf.py:2220 -#: src/emc/usr_intf/stepconf/stepconf.glade:3619 -#: src/emc/usr_intf/pncconf/pncconf.glade:57813 -msgid "mm / s²" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Step/Dir Gen-C" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1686 -#: src/emc/usr_intf/stepconf/stepconf.glade:3075 -#: src/emc/usr_intf/pncconf/pncconf.glade:66888 -msgid "Steps / mm" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Step/Dir Gen-D" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1688 -msgid "rev / in" +#: src/emc/usr_intf/pncconf/pncconf.py:160 +msgid "Step/Dir Gen-E" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1689 -#: src/emc/usr_intf/stepconf/stepconf.py:2233 -msgid "in / s" +#: src/emc/usr_intf/pncconf/pncconf.py:160 +msgid "Step/dir Gen-F" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1690 -#: src/emc/usr_intf/stepconf/stepconf.py:2234 -msgid "in / s²" +#: src/emc/usr_intf/pncconf/pncconf.py:161 +msgid "Pulse Width Gen-P" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1692 -msgid "Steps / in" +#: src/emc/usr_intf/pncconf/pncconf.py:161 +msgid "Pulse Width Gen-D" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:2202 -#: src/emc/usr_intf/pncconf/pncconf.py:8893 -#, python-format -msgid "%s Axis Test" +#: src/emc/usr_intf/pncconf/pncconf.py:161 +msgid "Pulse Width Gen-E" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:8 -#: src/emc/usr_intf/stepconf/stepconf.glade:21 -#, fuzzy -msgid "LinuxCNC Stepper Mill Configuration" -msgstr "Mostrar _Configuração Hal" - -#: src/emc/usr_intf/stepconf/stepconf.glade:22 -msgid "" -"This program creates configuration files (.ini and .hal) for \"step and " -"direction\" milling machines and lathes connected to the PC parallel port.\n" -"\n" -"Stepconf requires a minimum 800 X 600 display resolution.\n" -"You may need to collapse the 'Driver Timing Settings' and \n" -"Parallel Port Settings' expanders." +#: src/emc/usr_intf/pncconf/pncconf.py:162 +msgid "Pulse Density Gen-P" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:51 -#, fuzzy -msgid "Create a _new configuration" -msgstr "Mostrar _Configuração Hal" - -#: src/emc/usr_intf/stepconf/stepconf.glade:69 -#: src/emc/usr_intf/pncconf/pncconf.glade:70 -msgid "Modify a configuration already created with this program" +#: src/emc/usr_intf/pncconf/pncconf.py:162 +msgid "Pulse Density Gen-D" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:87 -#: src/emc/usr_intf/pncconf/pncconf.glade:88 -msgid "Do you wish to:" +#: src/emc/usr_intf/pncconf/pncconf.py:162 +msgid "Pulse Density Gen-E" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:99 -#: src/emc/usr_intf/pncconf/pncconf.glade:100 -msgid "" -"If you have made modifications to this configuration outside this program, " -"they will be lost when you select \"Modify a configuration\"" +#: src/emc/usr_intf/pncconf/pncconf.py:163 +msgid "Up/Down Mode -Up" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:116 -msgid "Create a desktop _shortcut (symlink) to configuration files." +#: src/emc/usr_intf/pncconf/pncconf.py:163 +msgid "Up/Down Mode-Down" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:133 -msgid "Create a desktop _launcher to start LinuxCNC with this configuration." +#: src/emc/usr_intf/pncconf/pncconf.py:163 +msgid "Up/Down Mode-Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:169 -#: src/emc/usr_intf/pncconf/pncconf.glade:175 -#, fuzzy -msgid "Basic machine information" -msgstr "Mostra posição da máquina" - -#: src/emc/usr_intf/stepconf/stepconf.glade:327 -msgid "Step _Time:" +#: src/emc/usr_intf/pncconf/pncconf.py:164 +msgid "Motor Phase A" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:356 -#: src/emc/usr_intf/stepconf/stepconf.glade:402 -#: src/emc/usr_intf/stepconf/stepconf.glade:449 -#: src/emc/usr_intf/stepconf/stepconf.glade:494 -#: src/emc/usr_intf/stepconf/stepconf.glade:909 -#: src/emc/usr_intf/pncconf/pncconf.glade:458 -#: src/emc/usr_intf/pncconf/pncconf.glade:8256 -msgid "ns" +#: src/emc/usr_intf/pncconf/pncconf.py:164 +msgid "Motor Phase B" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:369 -msgid "Step _Space:" +#: src/emc/usr_intf/pncconf/pncconf.py:164 +msgid "Motor Phase C" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:417 -msgid "Direction _Hold:" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Phase A Not" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:464 -msgid "_Direction Setup:" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Phase B Not" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:512 -msgid "Driver Timing Settings" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Phase C Not" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:538 -msgid "First Parport _Base Address:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +#, fuzzy +msgid "Motor Enable" +msgstr "Nome:" -#: src/emc/usr_intf/stepconf/stepconf.glade:564 -msgid " Out" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Fault" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:575 -#: src/emc/usr_intf/stepconf/stepconf.glade:591 -msgid "" -"Out\n" -"In" +#: src/emc/usr_intf/pncconf/pncconf.py:168 +msgid "SMARTSERIAL-P0-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:633 -msgid "S_econd Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P0-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:650 -msgid "T_hird Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P0-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:667 -msgid " Parallel Port Settings" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:684 -msgid "" -"_Test Base\n" -"Period Jitter " +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:703 -#, fuzzy -msgid "Machine _Name:" -msgstr "Máquina" - -#: src/emc/usr_intf/stepconf/stepconf.glade:716 -#, fuzzy -msgid "_Axis configuration:" -msgstr "Mostrar _Configuração Hal" - -#: src/emc/usr_intf/stepconf/stepconf.glade:730 -#, fuzzy -msgid "Machine _units:" -msgstr "Máquina" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-EN" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:744 -#: src/emc/usr_intf/pncconf/pncconf.glade:246 -msgid "Configuration directory:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:757 -msgid "D_river type:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:785 -#: src/emc/usr_intf/pncconf/pncconf.glade:326 -msgid "" -"Inch\n" -"Millimeter" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:800 -#: src/emc/usr_intf/pncconf/pncconf.glade:291 -msgid "" -"XYZ\n" -"XYZA\n" -"XZ (Lathe)" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:847 -msgid "" -"Driver characteristics: (Multiply by 1000 for times specified in µs or " -"microseconds)\n" -" Additional signal conditioning or isolation such as optocouplers " -"and RC filters\n" -" can impose timing constraints of their own, in addition to those of " -"the driver." +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:875 -msgid "Base Period Maximum _Jitter:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:924 -msgid "Max step rate:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:940 -msgid "Min Base Period:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:956 -msgid "" -"_Onscreen prompt for\n" -"tool change" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1015 -msgid "Advanced Configuration Options" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1033 -msgid "Include Halui user interface component" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1074 -#: src/emc/usr_intf/pncconf/pncconf.glade:6745 -#, fuzzy -msgid "Blank program" -msgstr "Roda o programa" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1089 -#: src/emc/usr_intf/pncconf/pncconf.glade:6760 -#, fuzzy -msgid "Spindle speed display " -msgstr "Velocidade da máquina" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-EN" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1105 -#: src/emc/usr_intf/stepconf/stepconf.glade:1543 -#: src/emc/usr_intf/pncconf/pncconf.glade:6791 -#: src/emc/usr_intf/pncconf/pncconf.glade:7112 -#: src/emc/usr_intf/pncconf/pncconf.glade:59393 -msgid "Existing custom program" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1120 -#: src/emc/usr_intf/stepconf/stepconf.glade:1559 -#: src/emc/usr_intf/pncconf/pncconf.glade:6806 -#: src/emc/usr_intf/pncconf/pncconf.glade:59409 -msgid "Include connections to HAL" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1154 -#: src/emc/usr_intf/pncconf/pncconf.glade:6989 -#: src/emc/usr_intf/pncconf/pncconf.glade:7537 -msgid "" -"_Display\n" -"sample\n" -"panel" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1188 -#: src/emc/usr_intf/pncconf/pncconf.glade:7048 -msgid "Include custom PyVCP GUI panel" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1321 -#: src/emc/usr_intf/pncconf/pncconf.glade:59199 -msgid " Number of analog (float) out pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1335 -#: src/emc/usr_intf/pncconf/pncconf.glade:59184 -msgid " Number of analog (float) in pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1349 -#: src/emc/usr_intf/pncconf/pncconf.glade:59169 -msgid " Number of analog (s32) out pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS0)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1363 -#: src/emc/usr_intf/pncconf/pncconf.glade:59153 -msgid " Number of analog (s32) in pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS2)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1378 -msgid "Number of digital out pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS3)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1403 -msgid "Number of digital in pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 I/O (SS0)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1414 -msgid "setup number of external pins" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 Analog (SS1)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1429 -#: src/emc/usr_intf/pncconf/pncconf.glade:59213 -msgid "Include modbus master support" +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 I/O (SS3)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1500 -#: src/emc/usr_intf/pncconf/pncconf.glade:59333 -#, fuzzy -msgid "Blank ladder program" -msgstr "Recarrega o programa" +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 Analog (SS4)" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1513 -#: src/emc/usr_intf/pncconf/pncconf.glade:59346 +#: src/emc/usr_intf/pncconf/pncconf.py:176 #, fuzzy -msgid "Estop ladder program" -msgstr "Pára o carregamento da vista preliminar" +msgid "Analog Input" +msgstr "Controle manual" -#: src/emc/usr_intf/stepconf/stepconf.glade:1527 -#: src/emc/usr_intf/pncconf/pncconf.glade:59377 +#: src/emc/usr_intf/pncconf/pncconf.py:277 +#: src/emc/usr_intf/pncconf/pncconf.py:409 #, fuzzy -msgid "Serial modbus program" -msgstr "Recarrega o programa" +msgid "Axis Selection" +msgstr "Eixo:" -#: src/emc/usr_intf/stepconf/stepconf.glade:1592 -#: src/emc/usr_intf/pncconf/pncconf.glade:59443 -#, fuzzy +#: src/emc/usr_intf/pncconf/pncconf.py:285 msgid "" -"Edit ladder\n" -"program" -msgstr "Recarrega o programa" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1628 -#: src/emc/usr_intf/pncconf/pncconf.glade:59479 -msgid "Include _Classicladder PLC" +"7i64-Input\n" +"P3 and P4" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1653 -msgid "Parallel Port Setup" +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "" +"7i64-Output\n" +"P2 and P5" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1760 -#: src/emc/usr_intf/pncconf/pncconf.glade:54010 -msgid "Pin _1:" +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "7i64-Analog In" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1774 -#: src/emc/usr_intf/pncconf/pncconf.glade:54024 -#: src/emc/usr_intf/pncconf/pncconf.glade:55239 -msgid "Pin _2:" +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1788 -#: src/emc/usr_intf/pncconf/pncconf.glade:54038 -#: src/emc/usr_intf/pncconf/pncconf.glade:55256 -msgid "Pin _3:" +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1802 -#: src/emc/usr_intf/pncconf/pncconf.glade:54052 -#: src/emc/usr_intf/pncconf/pncconf.glade:55273 -msgid "Pin _4:" +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1816 -#: src/emc/usr_intf/pncconf/pncconf.glade:54066 -#: src/emc/usr_intf/pncconf/pncconf.glade:55290 -msgid "Pin _5:" +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1830 -#: src/emc/usr_intf/pncconf/pncconf.glade:54080 -#: src/emc/usr_intf/pncconf/pncconf.glade:55307 -msgid "Pin _6:" +#: src/emc/usr_intf/pncconf/pncconf.py:309 +msgid "" +"7i71-Output\n" +"TB3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1844 -#: src/emc/usr_intf/pncconf/pncconf.glade:54094 -#: src/emc/usr_intf/pncconf/pncconf.glade:55324 -msgid "Pin _7:" +#: src/emc/usr_intf/pncconf/pncconf.py:309 +msgid "" +"7i71-Output\n" +"TB2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1858 -#: src/emc/usr_intf/pncconf/pncconf.glade:54108 -#: src/emc/usr_intf/pncconf/pncconf.glade:55341 -msgid "Pin _8:" +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-I/O\n" +"TB6" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1872 -#: src/emc/usr_intf/pncconf/pncconf.glade:54122 -#: src/emc/usr_intf/pncconf/pncconf.glade:55358 -msgid "Pin _9:" +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-I/O\n" +"TB5" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1886 -#: src/emc/usr_intf/pncconf/pncconf.glade:54136 -msgid "_Pin 14:" +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-Analog Output\n" +"TB4" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1900 -#: src/emc/usr_intf/pncconf/pncconf.glade:54150 -msgid "P_in 16:" +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB8" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1914 -#: src/emc/usr_intf/pncconf/pncconf.glade:54164 -msgid "Pi_n 17:" +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB7" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2258 -msgid "Outputs (PC to Mill):" +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-Analog Output\n" +"TB5" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2270 -#: src/emc/usr_intf/pncconf/pncconf.glade:55222 -msgid "Pin 1_0:" +#: src/emc/usr_intf/pncconf/pncconf.py:333 +msgid "7i73-I/O\n" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2286 -#: src/emc/usr_intf/pncconf/pncconf.glade:55206 -msgid "Pin 1_1:" +#: src/emc/usr_intf/pncconf/pncconf.py:348 +msgid "Unused Unused" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2302 -#: src/emc/usr_intf/pncconf/pncconf.glade:55190 -msgid "Pin 1_2:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +#, fuzzy +msgid "Machine Is Enabled" +msgstr "Máquina" -#: src/emc/usr_intf/stepconf/stepconf.glade:2318 -#: src/emc/usr_intf/pncconf/pncconf.glade:55174 -msgid "Pin 1_3:" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "X Amplifier Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2334 -#: src/emc/usr_intf/pncconf/pncconf.glade:55158 -msgid "Pin 1_5:" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "Y Amplifier Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2399 -msgid "Inputs (Mill to PC):" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "Z Amplifier Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2425 -#: src/emc/usr_intf/stepconf/stepconf.glade:2438 -#: src/emc/usr_intf/pncconf/pncconf.glade:54578 -#: src/emc/usr_intf/pncconf/pncconf.glade:54591 -#, fuzzy -msgid "Invert" -msgstr "Inverter imagem" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2887 -msgid "_Sherline Outputs" +#: src/emc/usr_intf/pncconf/pncconf.py:371 +msgid "A Amplifier Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2905 -msgid "_Xylotex Outputs" +#: src/emc/usr_intf/pncconf/pncconf.py:371 +msgid "Force Pin True" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2923 -msgid "Output pinout presets:" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X HALL 1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3022 -#: src/emc/usr_intf/pncconf/pncconf.glade:57970 -#, fuzzy -msgid "X Axis Configuration" -msgstr "Mostrar _Configuração Hal" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3090 -msgid "_Motor steps per revolution:" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X HALL 2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3103 -msgid "_Driver Microstepping:" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X HALL 3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3118 -msgid "_Pulley teeth (Motor:Leadscrew):" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3133 -msgid "_Leadscrew Pitch:" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3148 -#: src/emc/usr_intf/pncconf/pncconf.glade:57858 -msgid "Maximum _Velocity:" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C4" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3163 -#: src/emc/usr_intf/pncconf/pncconf.glade:57843 -msgid "Maximum _Acceleration:" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C8" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3178 -#: src/emc/usr_intf/pncconf/pncconf.glade:67063 -msgid "Time to accelerate to max speed:" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y HALL 1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3193 -msgid "Distance to accelerate to max speed:" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y HALL 2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3292 -#: src/emc/usr_intf/pncconf/pncconf.glade:67036 -msgid "Pulse rate at max speed:" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y HALL 3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3362 -msgid "_Home location:" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3377 -msgid "Home _Switch location:" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3392 -msgid "Home Sear_ch velocity:" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C4" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3407 -msgid "Home La_tch direction:" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C8" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3420 -#: src/emc/usr_intf/pncconf/pncconf.glade:66232 -#: src/emc/usr_intf/pncconf/pncconf.glade:66274 -#: src/emc/usr_intf/pncconf/pncconf.glade:66505 -#: src/emc/usr_intf/pncconf/pncconf.glade:66570 -msgid "_:" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z HALL 1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3437 -#: src/emc/usr_intf/pncconf/pncconf.glade:58536 -msgid "" -"Same\n" -"Opposite" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z HALL 2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3492 -msgid "Tab_le travel:" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z HALL 3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3519 -msgid "t_o" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3649 -msgid "s" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3703 -#, fuzzy -msgid "T_est this axis" -msgstr "Jog no terceiro eixo" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3729 -#, fuzzy -msgid "Axis SCALE:" -msgstr "Eixo:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3765 -#, fuzzy -msgid "Spindle Configuration" -msgstr "Mostrar _Configuração Hal" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3785 -#, fuzzy -msgid "Use spindle-at-speed:" -msgstr "Velocidade da máquina" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3841 -msgid "Speed display filter gain:" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C4" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3870 -#, fuzzy -msgid "Calibration:" -msgstr "_Calibrar" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3883 -#, fuzzy -msgid "_Speed 1:" -msgstr "Velocidade de Jog" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3898 -msgid "_PWM 1:" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C8" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3916 -#, fuzzy -msgid "S_peed 2:" -msgstr "Velocidade de Jog" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3931 -msgid "P_WM 2:" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A HALL 1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3949 -msgid "PWM _Rate:" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A HALL 2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4025 -msgid "_Cycles per revolution:" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A HALL 3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4079 -msgid "Enter 0 Hz for \"PDM\" mode" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4091 -#, fuzzy -msgid "Scale %" -msgstr "Escala" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:60002 -msgid "Machine configuration complete" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4114 -#: src/emc/usr_intf/pncconf/pncconf.glade:60003 -msgid "" -"All the necessary information has now been gathered. Click \"Apply\" to " -"write your configuration files to disk.\n" -"If you experience lockups while running LinuxCNC, you will need to decrease " -"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" -"\n" -"If you experience lost steps while running LinuxCNC, first verify that you " -"entered the proper timings for your stepper drivers. If that does not fix " -"the problem, then run a more thorough latency test as described on the " -"linuxcnc.org wiki:\n" -" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" -"\n" -"If you experience the \"Unexpected Realtime Delay\" message, run a more " -"thorough latency test as described on the linuxcnc.org wiki: \n" -" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C4" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4160 -#: src/emc/usr_intf/pncconf/pncconf.glade:60462 -#: src/emc/usr_intf/pncconf/pncconf.glade:61557 -#: src/emc/usr_intf/pncconf/pncconf.glade:62650 -#: src/emc/usr_intf/pncconf/pncconf.glade:63743 -#: src/emc/usr_intf/pncconf/pncconf.glade:64842 -#, fuzzy -msgid "Acceleration:" -msgstr "Alternada" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4174 -#: src/emc/usr_intf/pncconf/pncconf.glade:60231 -#: src/emc/usr_intf/pncconf/pncconf.glade:60695 -#: src/emc/usr_intf/pncconf/pncconf.glade:61788 -#: src/emc/usr_intf/pncconf/pncconf.glade:62881 -#: src/emc/usr_intf/pncconf/pncconf.glade:63974 -#: src/emc/usr_intf/pncconf/pncconf.glade:64954 -msgid "Jog:" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C8" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4188 -#: src/emc/usr_intf/pncconf/pncconf.glade:60681 -#: src/emc/usr_intf/pncconf/pncconf.glade:61774 -#: src/emc/usr_intf/pncconf/pncconf.glade:62867 -#: src/emc/usr_intf/pncconf/pncconf.glade:63960 -msgid "Test Area:" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S HALL 1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4217 -msgid "mm/s^2" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S HALL 2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4253 -msgid "mm/s" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S HALL 3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4329 -#: src/emc/usr_intf/pncconf/pncconf.glade:60620 -#: src/emc/usr_intf/pncconf/pncconf.glade:61713 -#: src/emc/usr_intf/pncconf/pncconf.glade:62806 -#: src/emc/usr_intf/pncconf/pncconf.glade:63899 -#: src/emc/usr_intf/pncconf/pncconf.glade:65066 -msgid "" -"±\n" -"+\n" -"-\n" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:79 -msgid "" -"PNCconf encountered an error. The following information may be useful in " -"troubleshooting:\n" -"\n" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:149 -msgid "Not Used" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:149 -#: src/emc/usr_intf/pncconf/pncconf.py:150 -msgid "Dummy" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:150 -msgid "8i20 Servo Drive" +#: src/emc/usr_intf/pncconf/pncconf.py:378 +msgid "Unused Output" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:151 -msgid "POT Output" +#: src/emc/usr_intf/pncconf/pncconf.py:378 +#, fuzzy +msgid "Coolant" +msgstr "Refrigeração:" + +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#, fuzzy +msgid "Control" +msgstr "Ctrl-K" + +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +msgid "Digital" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:410 #, fuzzy -msgid "POT Enable" -msgstr "Nome:" +msgid "X BLDC Control" +msgstr "Ctrl-K" -#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 #, fuzzy -msgid "POT Direction" -msgstr "Freio do spindle ativado" +msgid "Y BLDC Control" +msgstr "Ctrl-K" -#: src/emc/usr_intf/pncconf/pncconf.py:152 -msgid "GPIO Input" +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 +#, fuzzy +msgid "Z BLDC Control" +msgstr "Ctrl-K" + +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 +#, fuzzy +msgid "A BLDC Control" +msgstr "Ctrl-K" + +#: src/emc/usr_intf/pncconf/pncconf.py:381 +msgid " S BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:152 -msgid "GPIO Output" +#: src/emc/usr_intf/pncconf/pncconf.py:381 +#: src/emc/usr_intf/pncconf/pncconf.py:412 +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#: src/emc/usr_intf/pncconf/pncconf.py:516 +#: src/emc/usr_intf/pncconf/pncconf.py:519 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.py:528 +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#: src/emc/usr_intf/pncconf/pncconf.py:568 +#: src/emc/usr_intf/pncconf/pncconf.py:580 +#, fuzzy +msgid "Custom Signals" +msgstr "S_inais" + +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 +msgid "X Minimum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:152 -msgid "GPIO O Drain" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 +msgid "Y Minimum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-A" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 +msgid "Z Minimum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-B" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 +msgid "A Minimum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-I" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 +msgid "X Maximum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-M" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 +msgid "Y Maximum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -#, fuzzy -msgid "Muxed Encoder 0" -msgstr "Inverter imagem" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 +msgid "Z Maximum Limit" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -#, fuzzy -msgid "Muxed Encoder 1" -msgstr "Inverter imagem" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 +msgid "A Maximum Limit" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "muxed enc" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 +msgid "X Both Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "mux enc mask" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 +msgid "Y Both Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -#, fuzzy -msgid "mux select" -msgstr "Jog no eixo selecionado" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 +msgid "Z Both Limit" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:155 -#, fuzzy -msgid "Resolver 0 Encoder" -msgstr "Inverter imagem" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 +msgid "A Both Limit" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:155 +#: src/emc/usr_intf/pncconf/pncconf.py:386 +#: src/emc/usr_intf/pncconf/pncconf.py:477 #, fuzzy -msgid "Resolver 1 Encoder" -msgstr "Inverter imagem" +msgid "All Limits" +msgstr "Todos os arquivos" -#: src/emc/usr_intf/pncconf/pncconf.py:155 +#: src/emc/usr_intf/pncconf/pncconf.py:387 #, fuzzy -msgid "Resolver 2 Encoder" -msgstr "Inverter imagem" +msgid "X Home" +msgstr "Home" -#: src/emc/usr_intf/pncconf/pncconf.py:156 +#: src/emc/usr_intf/pncconf/pncconf.py:387 #, fuzzy -msgid "Resolver 3 Encoder" -msgstr "Inverter imagem" +msgid "Y Home" +msgstr "Home" -#: src/emc/usr_intf/pncconf/pncconf.py:156 +#: src/emc/usr_intf/pncconf/pncconf.py:387 #, fuzzy -msgid "Resolver 4 Encoder" -msgstr "Inverter imagem" +msgid "Z Home" +msgstr "Home" -#: src/emc/usr_intf/pncconf/pncconf.py:156 +#: src/emc/usr_intf/pncconf/pncconf.py:387 #, fuzzy -msgid "Resolver 5 Encoder" -msgstr "Inverter imagem" +msgid "A Home" +msgstr "Home" -#: src/emc/usr_intf/pncconf/pncconf.py:157 +#: src/emc/usr_intf/pncconf/pncconf.py:387 #, fuzzy -msgid "Step Gen-A" -msgstr "Roda uma linha do programa" +msgid "All Home" +msgstr "Home" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -msgid "Dir Gen-B" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 +msgid "X Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -msgid "Step/Dir Gen-C" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 +msgid "Y Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -msgid "Step/Dir Gen-D" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 +msgid "Z Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:158 -msgid "Step/Dir Gen-E" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 +msgid "A Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:158 -msgid "Step/dir Gen-F" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 +msgid "X Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 -msgid "Pulse Width Gen-P" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 +msgid "Y Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 -msgid "Pulse Width Gen-D" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 +msgid "Z Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 -msgid "Pulse Width Gen-E" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 +msgid "A Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 -msgid "Pulse Density Gen-P" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 +msgid "X Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 -msgid "Pulse Density Gen-D" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 +msgid "Y Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 -msgid "Pulse Density Gen-E" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 +msgid "Z Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 -msgid "Up/Down Mode -Up" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 +msgid "A Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 -msgid "Up/Down Mode-Down" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:392 +#, fuzzy +msgid "Joint select A" +msgstr "Jog no eixo selecionado" -#: src/emc/usr_intf/pncconf/pncconf.py:161 -msgid "Up/Down Mode-Enable" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:392 +#, fuzzy +msgid "Joint select B" +msgstr "Jog no eixo selecionado" -#: src/emc/usr_intf/pncconf/pncconf.py:162 -msgid "Motor Phase A" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:392 +#, fuzzy +msgid "Joint select C" +msgstr "Jog no eixo selecionado" -#: src/emc/usr_intf/pncconf/pncconf.py:162 -msgid "Motor Phase B" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:392 +#, fuzzy +msgid "Joint select D" +msgstr "Jog no eixo selecionado" -#: src/emc/usr_intf/pncconf/pncconf.py:162 -msgid "Motor Phase C" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Phase A Not" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Phase B Not" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Phase C Not" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:393 #, fuzzy -msgid "Motor Enable" -msgstr "Nome:" +msgid "Feed Override incr A" +msgstr "Velocidade da máquina" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Fault" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +#, fuzzy +msgid "Feed Override incr B" +msgstr "Velocidade da máquina" -#: src/emc/usr_intf/pncconf/pncconf.py:165 -msgid "SMARTSERIAL-P0-TX" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:394 +#, fuzzy +msgid "Feed Override incr C" +msgstr "Velocidade da máquina" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P0-RX" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:394 +#, fuzzy +msgid "Feed Override incr D" +msgstr "Velocidade da máquina" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P0-EN" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:394 +#, fuzzy +msgid "Spindle Override incr A" +msgstr "Velocidade da máquina" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-TX" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:394 +#, fuzzy +msgid "Spindle Override incr B" +msgstr "Velocidade da máquina" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-RX" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:395 +#, fuzzy +msgid "Spindle Override incr C" +msgstr "Velocidade da máquina" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-EN" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:395 +#, fuzzy +msgid "Spindle Override incr D" +msgstr "Velocidade da máquina" + +#: src/emc/usr_intf/pncconf/pncconf.py:395 +#, fuzzy +msgid "Max Vel Override incr A" +msgstr "Velocidade da máquina" + +#: src/emc/usr_intf/pncconf/pncconf.py:395 +#, fuzzy +msgid "Max Vel Override incr B" +msgstr "Velocidade da máquina" + +#: src/emc/usr_intf/pncconf/pncconf.py:396 +#, fuzzy +msgid "Max Vel Override incr C" +msgstr "Velocidade da máquina" + +#: src/emc/usr_intf/pncconf/pncconf.py:396 +#, fuzzy +msgid "Max Vel Override incr D" +msgstr "Velocidade da máquina" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-TX" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:396 +#, fuzzy +msgid "Feed Override enable" +msgstr "Velocidade da máquina" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-RX" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:396 +#, fuzzy +msgid "Spindle Override enable" +msgstr "Velocidade da máquina" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-EN" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:397 +#, fuzzy +msgid "Max Vel Override enable" +msgstr "Velocidade da máquina" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-TX" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +#, fuzzy +msgid "Manual Spindle CW" +msgstr "Spindle:" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-RX" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +#, fuzzy +msgid "Manual Spindle CCW" +msgstr "Spindle:" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-EN" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +#, fuzzy +msgid "Manual Spindle Stop" +msgstr "Reduz a rotação do spindle [F11]" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-TX" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +#, fuzzy +msgid "Spindle Up-To-Speed" +msgstr "Reduz a rotação do spindle [F11]" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:399 +msgid "Cycle Start" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:399 +msgid "Abort" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-TX" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:399 +#, fuzzy +msgid "Single Step" +msgstr "Spindle:" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 +msgid "Jog X +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 +msgid "Jog X -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 +msgid "Jog Y +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 +msgid "Jog Y -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 +msgid "Jog Z +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 +msgid "Jog Z -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 +msgid "Jog A +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 +msgid "Jog A -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:407 +#, fuzzy +msgid "Jog button selected +" +msgstr "Jog no eixo selecionado" -#: src/emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #2" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:407 +#, fuzzy +msgid "Jog button selected -" +msgstr "Jog no eixo selecionado" -#: src/emc/usr_intf/pncconf/pncconf.py:420 -msgid "Unused Unused" +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Unused Input" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/pncconf/pncconf.py:408 #, fuzzy -msgid "Machine Is Enabled" -msgstr "Máquina" +msgid "Limits" +msgstr "Todos os arquivos" -#: src/emc/usr_intf/pncconf/pncconf.py:442 -msgid "X Amplifier Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Limts/Home Shared" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:442 -msgid "Y Amplifier Enable" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:409 +#, fuzzy +msgid "Overrides" +msgstr "Ultrapassar limites" -#: src/emc/usr_intf/pncconf/pncconf.py:442 -msgid "Z Amplifier Enable" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:410 +#, fuzzy +msgid "Operation" +msgstr "Alternada" -#: src/emc/usr_intf/pncconf/pncconf.py:443 -msgid "A Amplifier Enable" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:410 +#, fuzzy +msgid "External Control" +msgstr "Controle manual" -#: src/emc/usr_intf/pncconf/pncconf.py:443 -msgid "Force Pin True" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:410 +#, fuzzy +msgid "Axis rapid" +msgstr "Eixo:" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X HALL 1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:412 +#, fuzzy +msgid "S BLDC Control" +msgstr "Ctrl-K" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:487 +msgid "Unused PWM Gen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X HALL 3" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:487 +#, fuzzy +msgid "X Axis PWM" +msgstr "Eixo:" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:487 +#, fuzzy +msgid "Y Axis PWM" +msgstr "Eixo:" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C2" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#, fuzzy +msgid "Z Axis PWM" +msgstr "Eixo:" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C4" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#, fuzzy +msgid "A Axis PWM" +msgstr "Eixo:" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C8" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +#, fuzzy +msgid "X Encoder" +msgstr "Inverter imagem" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y HALL 1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +#, fuzzy +msgid "Y Encoder" +msgstr "Inverter imagem" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y HALL 2" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +#, fuzzy +msgid "Z Encoder" +msgstr "Inverter imagem" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y HALL 3" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +#, fuzzy +msgid "A Encoder" +msgstr "Inverter imagem" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +#, fuzzy +msgid "Spindle Encoder" +msgstr "Freio do spindle ativado" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "X Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "Y Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "Z Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "A Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "Multi Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z HALL 3" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:514 +#, fuzzy +msgid "Feed Override" +msgstr "Velocidade da máquina" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:514 +#, fuzzy +msgid "spindle Override" +msgstr "Velocidade da máquina" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C2" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:514 +#, fuzzy +msgid "Max Vel Override" +msgstr "Velocidade da máquina" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "Unused Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C8" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +#, fuzzy +msgid "Axis Encoder" +msgstr "Inverter imagem" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "MPG Jog Controls" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "Override MPG control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "Unused Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "X Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "Y Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "Z Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:519 +msgid "A Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:519 +msgid "S Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +msgid "Unused 8I20" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S HALL 3" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "X Axis" +msgstr "Eixo:" + +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Y Axis" +msgstr "Eixo:" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Z Axis" +msgstr "Eixo:" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C2" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "A Axis" +msgstr "Eixo:" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:528 +msgid "Unused Analog Output" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C8" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:528 +#, fuzzy +msgid "Spindle Output" +msgstr "Spindle:" -#: src/emc/usr_intf/pncconf/pncconf.py:450 -msgid "Unused Output" +#: src/emc/usr_intf/pncconf/pncconf.py:551 +msgid "Unused StepGen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:450 -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#: src/emc/usr_intf/pncconf/pncconf.py:593 +#: src/emc/usr_intf/pncconf/pncconf.py:551 #, fuzzy -msgid "Spindle" -msgstr "Spindle:" +msgid "X Axis StepGen" +msgstr "Eixo:" -#: src/emc/usr_intf/pncconf/pncconf.py:450 +#: src/emc/usr_intf/pncconf/pncconf.py:551 #, fuzzy -msgid "Coolant" -msgstr "Refrigeração:" +msgid "Y Axis StepGen" +msgstr "Eixo:" -#: src/emc/usr_intf/pncconf/pncconf.py:451 +#: src/emc/usr_intf/pncconf/pncconf.py:551 #, fuzzy -msgid "Control" -msgstr "Ctrl-K" +msgid "Z Axis StepGen" +msgstr "Eixo:" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:480 -msgid "Digital" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:552 +#, fuzzy +msgid "A Axis StepGen" +msgstr "Eixo:" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:481 +#: src/emc/usr_intf/pncconf/pncconf.py:552 #, fuzzy -msgid "X BLDC Control" -msgstr "Ctrl-K" +msgid "Spindle StepGen" +msgstr "Freio do spindle ativado" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 +#: src/emc/usr_intf/pncconf/pncconf.py:552 #, fuzzy -msgid "Y BLDC Control" -msgstr "Ctrl-K" +msgid "X2 Tandem StepGen" +msgstr "Freio do spindle ativado" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 +#: src/emc/usr_intf/pncconf/pncconf.py:552 #, fuzzy -msgid "Z BLDC Control" -msgstr "Ctrl-K" +msgid "Y2 Tandem StepGen" +msgstr "Freio do spindle ativado" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 +#: src/emc/usr_intf/pncconf/pncconf.py:553 #, fuzzy -msgid "A BLDC Control" -msgstr "Ctrl-K" +msgid "Z2 Tandem StepGen" +msgstr "Freio do spindle ativado" -#: src/emc/usr_intf/pncconf/pncconf.py:453 -msgid " S BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:553 +msgid "Charge Pump StepGen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:453 -#: src/emc/usr_intf/pncconf/pncconf.py:483 -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#: src/emc/usr_intf/pncconf/pncconf.py:585 -#: src/emc/usr_intf/pncconf/pncconf.py:588 -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.py:597 -#: src/emc/usr_intf/pncconf/pncconf.py:614 -#: src/emc/usr_intf/pncconf/pncconf.py:629 -#, fuzzy -msgid "Custom Signals" -msgstr "S_inais" +#: src/emc/usr_intf/pncconf/pncconf.py:567 +msgid "Unused TPPWM Gen" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 -msgid "X Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:567 +msgid "X Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 -msgid "Y Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:567 +msgid "Y Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 -msgid "Z Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:568 +msgid "Z Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 -msgid "A Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:568 +msgid "A Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 -msgid "X Maximum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:568 +msgid "S Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 -msgid "Y Maximum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +#: src/emc/usr_intf/pncconf/pncconf.py:6882 +#, fuzzy +msgid "Unused Channel" +msgstr "Canal Selecionado" + +#: src/emc/usr_intf/pncconf/pncconf.py:576 +msgid "8i20 Amplifier Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 -msgid "Z Maximum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +msgid "7i64 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 -msgid "A Maximum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +msgid "7i69 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 -msgid "X Both Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i70 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 -msgid "Y Both Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i71 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 -msgid "Z Both Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i76 Mode 0 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 -msgid "A Both Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i77 Mode 0 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:458 -#: src/emc/usr_intf/pncconf/pncconf.py:546 -#, fuzzy -msgid "All Limits" -msgstr "Todos os arquivos" +#: src/emc/usr_intf/pncconf/pncconf.py:578 +msgid "7i73 Mode 1 Pendant Card" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:580 #, fuzzy -msgid "X Home" -msgstr "Home" +msgid "Unused Analog In" +msgstr "Canal Selecionado" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:676 #, fuzzy -msgid "Y Home" -msgstr "Home" +msgid "my_LinuxCNC_machine" +msgstr "_Máquina" -#: src/emc/usr_intf/pncconf/pncconf.py:459 -#, fuzzy -msgid "Z Home" -msgstr "Home" +#: src/emc/usr_intf/pncconf/pncconf.py:939 +#: src/emc/usr_intf/pncconf/pncconf.py:941 +msgid "Enter Address" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:459 -#, fuzzy -msgid "A Home" -msgstr "Home" +#: src/emc/usr_intf/pncconf/pncconf.py:1290 +msgid "" +"This configuration was saved with an earlier version of pncconf which may be " +"incompatible.\n" +"If it doesn't plainly cause an error, you still may want to save it with " +"another name and check it. Safer to start from scratch.\n" +"If you have a REALLY large config that you wish to convert to this newer " +"version of PNConf - ask on the LinuxCNC forum - it may be possible.." +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:459 -#, fuzzy -msgid "All Home" -msgstr "Home" +#: src/emc/usr_intf/pncconf/pncconf.py:1296 +#, python-format +msgid "File %r was modified since it was written by PNCconf" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 -msgid "X Minimum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:1300 +msgid "" +"Saving this configuration file will discard configuration changes made " +"outside PNCconf." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 -msgid "Y Minimum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:1327 +#: src/emc/usr_intf/pncconf/pncconf.py:2421 +#, python-format +msgid "# Generated by PNCconf at %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 -msgid "Z Minimum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:1329 +#: src/emc/usr_intf/pncconf/pncconf.py:2423 +msgid "# overwritten when you run PNCconf again" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 -msgid "A Minimum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:2134 +msgid "# Use ACTUAL spindle velocity from spindle encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 -msgid "X Maximum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:2135 +msgid "# spindle-velocity bounces around so we filter it with lowpass" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 -msgid "Y Maximum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:2136 +msgid "" +"# spindle-velocity is signed so we use absolute component to remove sign" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 -msgid "Z Maximum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:2137 +msgid "# ACTUAL velocity is in RPS not RPM so we scale it." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 -msgid "A Maximum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:2821 +msgid "# connect miscellaneous signals" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 -msgid "X Both Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:2824 +msgid "# ---HALUI signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 -msgid "Y Both Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:2843 +msgid "# ---charge pump signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 -msgid "Z Both Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:2847 +msgid "# ---coolant signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 -msgid "A Both Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:2852 +msgid "# ---probe signal---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -#, fuzzy -msgid "Joint select A" -msgstr "Jog no eixo selecionado" +#: src/emc/usr_intf/pncconf/pncconf.py:2857 +msgid "# ---jog button signals---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -#, fuzzy -msgid "Joint select B" -msgstr "Jog no eixo selecionado" +#: src/emc/usr_intf/pncconf/pncconf.py:2862 +msgid "# ---USB device jog button signals---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -#, fuzzy -msgid "Joint select C" -msgstr "Jog no eixo selecionado" +#: src/emc/usr_intf/pncconf/pncconf.py:2903 +#: src/emc/usr_intf/pncconf/pncconf.py:2929 +msgid "# ---mpg signals---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -#, fuzzy -msgid "Joint select D" -msgstr "Jog no eixo selecionado" +#: src/emc/usr_intf/pncconf/pncconf.py:3111 +msgid "# ---motion control signals---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr A" +#: src/emc/usr_intf/pncconf/pncconf.py:3116 +msgid "# ---digital in / out signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr B" +#: src/emc/usr_intf/pncconf/pncconf.py:3126 +msgid "# ---estop signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr C" +#: src/emc/usr_intf/pncconf/pncconf.py:3145 +msgid "# ---manual tool change signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr D" +#: src/emc/usr_intf/pncconf/pncconf.py:3154 +msgid "# ---toolchange signals for custom tool changer---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -#, fuzzy -msgid "Feed Override incr A" -msgstr "Velocidade da máquina" +#: src/emc/usr_intf/pncconf/pncconf.py:3176 +msgid "# --- Classicladder signals for Z axis Auto touch off program---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -#, fuzzy -msgid "Feed Override incr B" -msgstr "Velocidade da máquina" +#: src/emc/usr_intf/pncconf/pncconf.py:3195 +msgid "# These files are loaded post gladeVCP, in the order they appear" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#, fuzzy -msgid "Feed Override incr C" -msgstr "Velocidade da máquina" +#: src/emc/usr_intf/pncconf/pncconf.py:3209 +#: src/emc/usr_intf/pncconf/pncconf.py:3276 +msgid "# _DO NOT_ include your HAL commands here." +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#, fuzzy -msgid "Feed Override incr D" -msgstr "Velocidade da máquina" +#: src/emc/usr_intf/pncconf/pncconf.py:3210 +msgid "# Put custom HAL commands in custom_gvcp.hal" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#, fuzzy -msgid "Spindle Override incr A" -msgstr "Velocidade da máquina" +#: src/emc/usr_intf/pncconf/pncconf.py:3213 +msgid "# **** Setup of spindle speed display using gladevcp ****" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#, fuzzy -msgid "Spindle Override incr B" -msgstr "Velocidade da máquina" +#: src/emc/usr_intf/pncconf/pncconf.py:3222 +msgid "# **** Setup GLADE MDI buttons ****" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -#, fuzzy -msgid "Spindle Override incr C" -msgstr "Velocidade da máquina" +#: src/emc/usr_intf/pncconf/pncconf.py:3235 +msgid "" +"# **** Z axis touch-off button - requires the touch-off classicladder " +"program ****" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -#, fuzzy -msgid "Spindle Override incr D" -msgstr "Velocidade da máquina" +#: src/emc/usr_intf/pncconf/pncconf.py:3265 +msgid "# These files are loaded post GUI, in the order they appear" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -#, fuzzy -msgid "Max Vel Override incr A" -msgstr "Velocidade da máquina" +#: src/emc/usr_intf/pncconf/pncconf.py:3277 +msgid "# Put custom HAL commands in custom_postgui.hal" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -#, fuzzy -msgid "Max Vel Override incr B" -msgstr "Velocidade da máquina" +#: src/emc/usr_intf/pncconf/pncconf.py:3278 +msgid "# The commands in this file are run after the GUI loads" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:468 -#, fuzzy -msgid "Max Vel Override incr C" -msgstr "Velocidade da máquina" +#: src/emc/usr_intf/pncconf/pncconf.py:3288 +msgid "# **** Setup of spindle speed display using pyvcp -END ****" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:468 -#, fuzzy -msgid "Max Vel Override incr D" -msgstr "Velocidade da máquina" +#: src/emc/usr_intf/pncconf/pncconf.py:3300 +msgid "# This file will not be overwritten when you run PNCconf again" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#, fuzzy -msgid "Manual Spindle CW" -msgstr "Spindle:" +#: src/emc/usr_intf/pncconf/pncconf.py:3306 +msgid "# These commands are required for Touchy GUI" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#, fuzzy -msgid "Manual Spindle CCW" -msgstr "Spindle:" +#: src/emc/usr_intf/pncconf/pncconf.py:3358 +#, python-format +msgid "Generated by PNCconf at %s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#, fuzzy -msgid "Manual Spindle Stop" -msgstr "Reduz a rotação do spindle [F11]" +#: src/emc/usr_intf/pncconf/pncconf.py:3370 +msgid "configures LinuxCNC as:\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#, fuzzy -msgid "Spindle Up-To-Speed" -msgstr "Reduz a rotação do spindle [F11]" +#: src/emc/usr_intf/pncconf/pncconf.py:3371 +msgid "type CNC\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:470 -msgid "Cycle Start" +#: src/emc/usr_intf/pncconf/pncconf.py:3372 +msgid "will be used as the frontend display" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:470 -msgid "Abort" +#: src/emc/usr_intf/pncconf/pncconf.py:3381 +msgid " connector" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:470 -#, fuzzy -msgid "Single Step" -msgstr "Spindle:" +#: src/emc/usr_intf/pncconf/pncconf.py:3393 +msgid "invrt" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 -msgid "Jog X +" +#: src/emc/usr_intf/pncconf/pncconf.py:3402 +#, python-format +msgid "%(name)s Parport" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 -msgid "Jog X -" +#: src/emc/usr_intf/pncconf/pncconf.py:3407 +#: src/emc/usr_intf/pncconf/pncconf.py:3415 +msgid "-> inverted" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 -msgid "Jog Y +" +#: src/emc/usr_intf/pncconf/pncconf.py:3409 +#, python-format +msgid "pin# %(pinnum)d is connected to input signal:'%(data)s' %(mesag)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 -msgid "Jog Y -" +#: src/emc/usr_intf/pncconf/pncconf.py:3417 +#, python-format +msgid "pin# %(pinnum)d is connected to output signal:'%(data)s' %(mesag)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 -msgid "Jog Z +" +#: src/emc/usr_intf/pncconf/pncconf.py:3595 +msgid "Desktop Launcher for LinuxCNC config made by PNCconf" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 -msgid "Jog Z -" +#: src/emc/usr_intf/pncconf/pncconf.py:3856 +#, fuzzy, python-format +msgid "%s Axis Configuration" +msgstr "Mostrar _Configuração Hal" + +#: src/emc/usr_intf/pncconf/pncconf.py:3881 +#, fuzzy +msgid "Spindle Motor/Encoder Configuration" +msgstr "Mostrar _Configuração Hal" + +#: src/emc/usr_intf/pncconf/pncconf.py:3883 +#, python-format +msgid "%s Axis Motor/Encoder Configuration" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 -msgid "Jog A +" +#: src/emc/usr_intf/pncconf/pncconf.py:3912 +#, python-format +msgid "%s Parallel Port Setup" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 -msgid "Jog A -" +#: src/emc/usr_intf/pncconf/pncconf.py:3936 +#, python-format +msgid "%s I/0 Setup" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:478 -#, fuzzy -msgid "Jog button selected +" -msgstr "Jog no eixo selecionado" +#: src/emc/usr_intf/pncconf/pncconf.py:4162 +msgid "Quit PNCconfig and discard changes?" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:478 +#: src/emc/usr_intf/pncconf/pncconf.py:4203 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Jog button selected -" -msgstr "Jog no eixo selecionado" +msgid "Help Pages" +msgstr "Profundidade das imagens" -#: src/emc/usr_intf/pncconf/pncconf.py:479 -msgid "Unused Input" +#: src/emc/usr_intf/pncconf/pncconf.py:4208 +msgid "Help page is unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:479 -#, fuzzy -msgid "Limits" -msgstr "Todos os arquivos" +#: src/emc/usr_intf/pncconf/pncconf.py:4218 +msgid "" +"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " +"of external hardware is unavailable." +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:479 -msgid "Limts/Home Shared" +#: src/emc/usr_intf/pncconf/pncconf.py:4223 +#, python-format +msgid "" +"You are using a realtime version of LinuxCNC but didn't load a realtime " +"kernel so testing / tuning of external hardware is unavailable.\n" +" This is probably because you updated the OS and it doesn't load the RTAI " +"kernel anymore\n" +" You are using the %(actual)s kernel instead of %(needed)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:480 +#: src/emc/usr_intf/pncconf/pncconf.py:4256 #, fuzzy -msgid "Axis Selection" -msgstr "Eixo:" +msgid "LinuxCNC 'PNCconf' configuration files" +msgstr "Mostrar _Configuração Hal" -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#, fuzzy -msgid "Overrides" -msgstr "Ultrapassar limites" +#: src/emc/usr_intf/pncconf/pncconf.py:4286 +msgid "" +"It seems data in this file is from too old of a version of PNCConf to " +"continue.\n" +"." +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:481 -#, fuzzy -msgid "Operation" -msgstr "Alternada" +#: src/emc/usr_intf/pncconf/pncconf.py:4293 +#: src/emc/usr_intf/pncconf/pncconf.py:4391 +#, python-format +msgid "Point and click configuration - %s.pncconf " +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:481 -#, fuzzy -msgid "External Control" -msgstr "Controle manual" +#: src/emc/usr_intf/pncconf/pncconf.py:4413 +msgid "" +"You need to designate a parport and/or mesa I/O device before continuing." +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:481 -#, fuzzy -msgid "Axis rapid" -msgstr "Eixo:" +#: src/emc/usr_intf/pncconf/pncconf.py:4481 +msgid "" +"You Have choosen to re-edit the current config, so you can not go to the new/" +"modify page.\n" +" Quit and reload PNCconf if you wish to build a new config." +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:483 -#, fuzzy -msgid "S BLDC Control" -msgstr "Ctrl-K" +#: src/emc/usr_intf/pncconf/pncconf.py:4485 +msgid "" +"If you can not go to the new/modify page your current data will be lost.\n" +"Ok to reset data and start a new configuration?" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:556 -msgid "Unused PWM Gen" +#: src/emc/usr_intf/pncconf/pncconf.py:4811 +msgid "USB device Info Search" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:556 -#, fuzzy -msgid "X Axis PWM" -msgstr "Eixo:" +#: src/emc/usr_intf/pncconf/pncconf.py:4825 +msgid "USB device page is unavailable\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:556 -#, fuzzy -msgid "Y Axis PWM" -msgstr "Eixo:" +#: src/emc/usr_intf/pncconf/pncconf.py:4890 +msgid "Pin names are unavailable\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#, fuzzy -msgid "Z Axis PWM" -msgstr "Eixo:" +#: src/emc/usr_intf/pncconf/pncconf.py:4912 +msgid "Device names are unavailable\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#, fuzzy -msgid "A Axis PWM" -msgstr "Eixo:" +#: src/emc/usr_intf/pncconf/pncconf.py:4915 +msgid "No Pncconf made device rules were found\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -#, fuzzy -msgid "X Encoder" -msgstr "Inverter imagem" +#: src/emc/usr_intf/pncconf/pncconf.py:5041 +msgid "" +"OK to replace existing glade panel ?\n" +"It will be renamed and added to 'backups' folder.\n" +" Clicking 'existing custom program' will avoid this warning, but if you " +"change related options later -such as spindle feedback- the HAL connection " +"will not update" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -#, fuzzy -msgid "Y Encoder" -msgstr "Inverter imagem" +#: src/emc/usr_intf/pncconf/pncconf.py:5047 +msgid "" +"OK to replace existing custom pyvcp panel?\n" +"Existing pyvcp-panel.xml will be renamed and added to 'backups' folder\n" +"Clicking 'existing custom program' will aviod this warning. " +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -#, fuzzy -msgid "Z Encoder" -msgstr "Inverter imagem" +#: src/emc/usr_intf/pncconf/pncconf.py:5493 +msgid "" +"You need to configure the mesa0 page.\n" +" Choose the board type, firmware, component amounts and press 'Accept " +"component changes' button'" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -#, fuzzy -msgid "A Encoder" -msgstr "Inverter imagem" +#: src/emc/usr_intf/pncconf/pncconf.py:5497 +msgid "" +"The chosen Mesa0 board is different from the current displayed.\n" +"please press 'Accept component changes' button'" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -#, fuzzy -msgid "Spindle Encoder" -msgstr "Freio do spindle ativado" +#: src/emc/usr_intf/pncconf/pncconf.py:5540 +msgid "" +"You need to configure the mesa1 page.\n" +" Choose the board type, firmware, component amounts and press 'Accept " +"component changes' button'" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "X Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:5544 +msgid "" +"The chosen Mesa1 board is different from the current displayed.\n" +"please press 'Accept component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "Y Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:5558 +msgid "" +"Do to technical reasons this test panel can be loaded only once without " +"reloading pncconf.You also will not be able to do any other testing untill " +"you reload pncconf and quite possibly open a terminal and type 'halrun -U' I " +"hesitate to even allow it's use but at times it's very useful.\n" +"Do you wish to continue the test?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "Z Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:7042 +msgid "First Parallel Port set for OUTPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "A Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:7044 +msgid "First Parallel Port set for INPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "Multi Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:7068 +msgid "Second Parallel Port set for OUTPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:583 -#, fuzzy -msgid "Feed Override" -msgstr "Velocidade da máquina" +#: src/emc/usr_intf/pncconf/pncconf.py:7070 +msgid "Second Parallel Port set for INPUT" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:583 -#, fuzzy -msgid "spindle Override" -msgstr "Velocidade da máquina" +#: src/emc/usr_intf/pncconf/pncconf.py:7082 +msgid "Third Parallel Port set for OUTPUT" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:583 -#, fuzzy -msgid "Max Vel Override" -msgstr "Velocidade da máquina" +#: src/emc/usr_intf/pncconf/pncconf.py:7084 +msgid "Third Parallel Port set for INPUT" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "Unused Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:7210 +msgid "You can not have both steppers and pwm signals for spindle control\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -#, fuzzy -msgid "Axis Encoder" -msgstr "Inverter imagem" +#: src/emc/usr_intf/pncconf/pncconf.py:7214 +#, python-format +msgid "You forgot to designate a stepper or pwm signal for axis %s\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "MPG Jog Controls" +#: src/emc/usr_intf/pncconf/pncconf.py:7217 +#, python-format +msgid "You forgot to designate an encoder /resolver signal for axis %s servo\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "Override MPG control" +#: src/emc/usr_intf/pncconf/pncconf.py:7220 +#, python-format +msgid "You forgot to designate a pwm signal or stepper signal for axis %s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "Unused Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:7223 +#, python-format +msgid "You can not have both steppers and pwm signals for axis %s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "X Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:7226 +#, python-format +msgid "" +"If using a tandem axis stepper, you must select a master stepgen for axis " +"%s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "Y Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:7235 +msgid "Touchy require an external cycle start signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "Z Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:7238 +msgid "Touchy require an external abort signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:588 -msgid "A Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:7241 +msgid "Touchy require an external single-step signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:588 -msgid "S Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:7244 +msgid "" +"Touchy require an external multi handwheel MPG encoder signal on the mesa " +"page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -msgid "Unused 8I20" +#: src/emc/usr_intf/pncconf/pncconf.py:7247 +msgid "" +"Touchy require 'external mpg jogging' to be selected on the external control " +"page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:61457 -#, fuzzy -msgid "X Axis" -msgstr "Eixo:" - -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:62549 -#, fuzzy -msgid "Y Axis" -msgstr "Eixo:" - -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:63642 -#, fuzzy -msgid "Z Axis" -msgstr "Eixo:" - -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.glade:64735 -#, fuzzy -msgid "A Axis" -msgstr "Eixo:" - -#: src/emc/usr_intf/pncconf/pncconf.py:597 -msgid "Unused Analog Output" +#: src/emc/usr_intf/pncconf/pncconf.py:7250 +msgid "" +"Touchy require the external mpg to be in 'shared mpg' mode on the external " +"controls page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:597 -#, fuzzy -msgid "Spindle Output" -msgstr "Spindle:" - -#: src/emc/usr_intf/pncconf/pncconf.py:613 -msgid "Unused StepGen" +#: src/emc/usr_intf/pncconf/pncconf.py:7253 +msgid "" +"Touchy require selectable increments to be unchecked on the external " +"controls page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:613 -#, fuzzy -msgid "X Axis StepGen" -msgstr "Eixo:" - -#: src/emc/usr_intf/pncconf/pncconf.py:613 -#, fuzzy -msgid "Y Axis StepGen" -msgstr "Eixo:" - -#: src/emc/usr_intf/pncconf/pncconf.py:613 -#, fuzzy -msgid "Z Axis StepGen" -msgstr "Eixo:" - -#: src/emc/usr_intf/pncconf/pncconf.py:614 -#, fuzzy -msgid "A Axis StepGen" -msgstr "Eixo:" - -#: src/emc/usr_intf/pncconf/pncconf.py:614 -#, fuzzy -msgid "Spindle StepGen" -msgstr "Freio do spindle ativado" - -#: src/emc/usr_intf/pncconf/pncconf.py:628 -msgid "Unused TPPWM Gen" +#: src/emc/usr_intf/pncconf/pncconf.py:7257 +msgid "" +"The 7i29 daughter board requires PWM type generators and a PWM base " +"frequency of 20 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:628 -msgid "X Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:7260 +msgid "" +"The 7i30 daughter board requires PWM type generators and a PWM base " +"frequency of 20 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:628 -msgid "Y Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:7263 +msgid "" +"The 7i33 daughter board requires PDM type generators and a PDM base " +"frequency of 6 Mhz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "Z Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:7266 +msgid "" +"The 7i40 daughter board requires PWM type generators and a PWM base " +"frequency of 50 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "A Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:7269 +msgid "" +"The 7i48 daughter board requires UDM type generators and a PWM base " +"frequency of 24 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "S Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:7494 +msgid "Gearbox Reduction Ratio" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -#: src/emc/usr_intf/pncconf/pncconf.py:6557 -#, fuzzy -msgid "Unused Channel" -msgstr "Canal Selecionado" - -#: src/emc/usr_intf/pncconf/pncconf.py:636 -msgid "8i20 Amplifier Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7497 +msgid "Reduction Ratio" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -msgid "7i64 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7500 +msgid "Leadscrew Pitch" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -msgid "7i69 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7503 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Leadscrew TPI" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 -msgid "7i70 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7507 +#: src/emc/usr_intf/pncconf/pncconf.py:7508 +msgid "(" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 -msgid "7i71 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7509 +#: src/emc/usr_intf/pncconf/pncconf.py:7519 +#: src/emc/usr_intf/pncconf/pncconf.py:7520 +#: src/emc/usr_intf/pncconf/pncconf.py:7521 +msgid " / min" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 -msgid "7i76 Mode 0 I/O Card" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:7510 +#, fuzzy +msgid " / sec²" +msgstr "Jog no segundo eixo" -#: src/emc/usr_intf/pncconf/pncconf.py:722 +#: src/emc/usr_intf/pncconf/pncconf.py:7513 #, fuzzy -msgid "my_LinuxCNC_machine" -msgstr "_Máquina" +msgid " / Step" +msgstr "_Passo" -#: src/emc/usr_intf/pncconf/pncconf.py:1328 -msgid "" -"This configuration was saved with an earlier version of pncconf which may be " -"incompatible.\n" -"If it doesn't plainly cause an error, you still may want to save it with " -"another name and check it. Safer to start from scratch.\n" -"If you have a REALLY large config that you wish to convert to this newer " -"version of PNConf - ask on the LinuxCNC forum - it may be possible.." -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:7514 +#, fuzzy +msgid "Steps / " +msgstr "_Passo" -#: src/emc/usr_intf/pncconf/pncconf.py:1334 -#, python-format -msgid "File %r was modified since it was written by PNCconf" +#: src/emc/usr_intf/pncconf/pncconf.py:7516 +msgid " / encoder pulse" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1338 -msgid "" -"Saving this configuration file will discard configuration changes made " -"outside PNCconf." +#: src/emc/usr_intf/pncconf/pncconf.py:7517 +msgid "Encoder pulses / " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1365 -#: src/emc/usr_intf/pncconf/pncconf.py:2368 -#, python-format -msgid "# Generated by PNCconf at %s" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:7525 +#, fuzzy +msgid "Resolver Scale:" +msgstr "Roda uma linha do programa" -#: src/emc/usr_intf/pncconf/pncconf.py:1367 -#: src/emc/usr_intf/pncconf/pncconf.py:2370 -msgid "# overwritten when you run PNCconf again" +#: src/emc/usr_intf/pncconf/pncconf.py:7826 +msgid "Axis Scale Calculation" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2070 -msgid "# Use ACTUAL spindle velocity from spindle encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:8133 +msgid "You need to designate an E-stop input pin for this ladder program." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2071 -msgid "# spindle-velocity bounces around so we filter it with lowpass" +#: src/emc/usr_intf/pncconf/pncconf.py:8145 +msgid "You need to designate a probe input pin for this ladder program." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2072 +#: src/emc/usr_intf/pncconf/pncconf.py:8156 msgid "" -"# spindle-velocity is signed so we use absolute component to remove sign" +"OK to replace existing custom ladder program?\n" +"Existing Custom.clp will be renamed custom_backup.clp.\n" +"Any existing file named -custom_backup.clp- will be lost.Selecting 'existing " +"ladder program' will avoid this warning" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2073 -msgid "# ACTUAL velocity is in RPS not RPM so we scale it." +#: src/emc/usr_intf/pncconf/pncconf.py:8374 +msgid "Do you wish to continue to edit this configuration." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2082 -msgid "" -"# Use COMMANDED spindle velocity from LinuxCNC because no spindle encoder " -"was specified" +#: src/emc/usr_intf/pncconf/pncconf.py:8413 +msgid "PCI search page is unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2083 +#: src/emc/usr_intf/pncconf/pncconf.py:8532 msgid "" -"# COMMANDED velocity is signed so we use absolute component to remove sign" +"You specified there is an existing gladefile, But there is not one in the " +"machine-named folder.." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2727 -msgid "# connect miscellaneous signals" +#: src/emc/usr_intf/pncconf/pncconf.py:8856 +msgid "Servo tuning is not avaiable in PNCconf yet\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2730 -msgid "# ---HALUI signals---" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:8861 +#, fuzzy +msgid "degrees" +msgstr "45 graus" -#: src/emc/usr_intf/pncconf/pncconf.py:2749 -msgid "# ---charge pump signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:8862 +msgid "degrees / minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2753 -msgid "# ---coolant signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:8863 +msgid "degrees / second²" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2758 -msgid "# ---probe signal---" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:8865 +#, fuzzy +msgid "revolutions" +msgstr "Posição:" -#: src/emc/usr_intf/pncconf/pncconf.py:2763 -msgid "# ---jog button signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:8866 +msgid "rpm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2768 -msgid "# ---USB device jog button signals---" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:8867 +#, fuzzy +msgid "revs / second²" +msgstr "Jog no segundo eixo" -#: src/emc/usr_intf/pncconf/pncconf.py:2803 -#: src/emc/usr_intf/pncconf/pncconf.py:2825 -msgid "# ---mpg signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:8870 +#: src/emc/usr_intf/pncconf/pncconf.glade:65184 +#: src/emc/usr_intf/pncconf/pncconf.glade:65281 +#: src/emc/usr_intf/pncconf/pncconf.glade:65465 +msgid "mm / minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2971 -msgid "# ---motion control signals---" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:8871 +#, fuzzy +msgid "mm / second²" +msgstr "Jog no segundo eixo" -#: src/emc/usr_intf/pncconf/pncconf.py:2976 -msgid "# ---digital in / out signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:8874 +msgid "inches / minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2986 -msgid "# ---estop signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:8875 +msgid "inches / second²" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3005 -msgid "# ---manual tool change signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:9031 +#, python-format +msgid "%s Axis Tune" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3014 -msgid "# ---toolchange signals for custom tool changer---" +#: src/emc/usr_intf/pncconf/pncconf.py:9195 +msgid "" +" You must designate a ENCODER / RESOLVER signal and an ANALOG SPINDLE signal " +"for this axis test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3036 -msgid "# --- Classicladder signals for Z axis Auto touch off program---" +#: src/emc/usr_intf/pncconf/pncconf.py:9199 +msgid "" +" You must designate a ENCODER / RESOLVER signal and a PWM signal for this " +"axis test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3055 -msgid "# These files are loaded post gladeVCP, in the order they appear" +#: src/emc/usr_intf/pncconf/pncconf.glade:8 +#, fuzzy +msgid "LinuxCNC Point And Click Configuration" +msgstr "Mostrar _Configuração Hal" + +#: src/emc/usr_intf/pncconf/pncconf.glade:23 +msgid "LinuxCNC Configuration Wizard Beta 1 Version" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3069 -#: src/emc/usr_intf/pncconf/pncconf.py:3136 -msgid "# _DO NOT_ include your HAL commands here." +#: src/emc/usr_intf/pncconf/pncconf.glade:24 +msgid "" +"\tThis program creates configuration \n" +" files for \"Closed Loop Servo\" \n" +"\t \t and hardware stepper\n" +" \tmachines" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3070 -msgid "# Put custom HAL commands in custom_gvcp.hal" +#: src/emc/usr_intf/pncconf/pncconf.glade:34 +msgid "Create or Edit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3073 -msgid "# **** Setup of spindle speed display using gladevcp ****" +#: src/emc/usr_intf/pncconf/pncconf.glade:66 +msgid "Create a desktop launcher to start LinuxCNC with this configuration." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3082 -msgid "# **** Setup GLADE MDI buttons ****" +#: src/emc/usr_intf/pncconf/pncconf.glade:83 +msgid "Create a desktop shortcut (symlink) to configuration files." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3095 +#: src/emc/usr_intf/pncconf/pncconf.glade:148 +#, fuzzy +msgid "Create a new configuration" +msgstr "Mostrar _Configuração Hal" + +#: src/emc/usr_intf/pncconf/pncconf.glade:175 +#, fuzzy +msgid "Basic machine information" +msgstr "Mostra posição da máquina" + +#: src/emc/usr_intf/pncconf/pncconf.glade:214 +#, fuzzy +msgid "Machine Name:" +msgstr "Máquina" + +#: src/emc/usr_intf/pncconf/pncconf.glade:280 +#, fuzzy +msgid "Axis configuration:" +msgstr "Mostrar _Configuração Hal" + +#: src/emc/usr_intf/pncconf/pncconf.glade:295 msgid "" -"# **** Z axis touch-off button - requires the touch-off classicladder " -"program ****" +"XYZ\n" +"XYZA\n" +"XZ (Lathe)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3125 -msgid "# These files are loaded post GUI, in the order they appear" +#: src/emc/usr_intf/pncconf/pncconf.glade:322 +#, fuzzy +msgid "Machine units:" +msgstr "Máquina" + +#: src/emc/usr_intf/pncconf/pncconf.glade:337 +msgid "" +"Inch\n" +"Millimeter" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3137 -msgid "# Put custom HAL commands in custom_postgui.hal" +#: src/emc/usr_intf/pncconf/pncconf.glade:363 +msgid "Machine Basics" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3138 -msgid "# The commands in this file are run after the GUI loads" +#: src/emc/usr_intf/pncconf/pncconf.glade:416 +msgid "Actual Servo Period: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3148 -msgid "# **** Setup of spindle speed display using pyvcp -END ****" +#: src/emc/usr_intf/pncconf/pncconf.glade:475 +msgid "Recommend servo period: 1000000" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3160 -msgid "# This file will not be overwritten when you run PNCconf again" +#: src/emc/usr_intf/pncconf/pncconf.glade:494 +msgid "" +" Test Base\n" +"Period Jitter " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3166 -msgid "# These commands are required for Touchy GUI" +#: src/emc/usr_intf/pncconf/pncconf.glade:519 +msgid "Computer Response Time" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3218 -#, python-format -msgid "Generated by PNCconf at %s" +#: src/emc/usr_intf/pncconf/pncconf.glade:561 +msgid "Mesa0 PCI / Parport Card:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3230 -msgid "configures LinuxCNC as:\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:571 +msgid "Mesa1 PCI / Parport Card:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3231 -msgid "type CNC\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:584 +msgid "First Parport Address:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3232 -msgid "will be used as the frontend display" +#: src/emc/usr_intf/pncconf/pncconf.glade:597 +msgid "Second Parport Address:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3241 -msgid " connector" +#: src/emc/usr_intf/pncconf/pncconf.glade:612 +msgid "Third Parport Address:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3253 -msgid "invrt" +#: src/emc/usr_intf/pncconf/pncconf.glade:635 +#: src/emc/usr_intf/pncconf/pncconf.glade:643 +msgid "" +"5i20\n" +"5i23\n" +"5i22" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3262 -#, python-format -msgid "%(name)s Parport" +#: src/emc/usr_intf/pncconf/pncconf.glade:716 +#: src/emc/usr_intf/pncconf/pncconf.glade:728 +#: src/emc/usr_intf/pncconf/pncconf.glade:741 +msgid "" +"In\n" +"Out" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3267 -#: src/emc/usr_intf/pncconf/pncconf.py:3275 -msgid "-> inverted" +#: src/emc/usr_intf/pncconf/pncconf.glade:804 +msgid "" +"Add-on PCI\n" +" Parport\n" +" Address \n" +" Search" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3269 -#, python-format -msgid "pin# %(pinnum)d is connected to input signal:'%(data)s' %(mesag)s" +#: src/emc/usr_intf/pncconf/pncconf.glade:829 +msgid "I/O Control Ports/ Boards" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3277 -#, python-format -msgid "pin# %(pinnum)d is connected to output signal:'%(data)s' %(mesag)s" +#: src/emc/usr_intf/pncconf/pncconf.glade:878 +#, fuzzy +msgid "Axis" +msgstr "Eixo:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:893 +msgid "TKLinuxCNC" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3455 -msgid "Desktop Launcher for LinuxCNC config made by PNCconf" +#: src/emc/usr_intf/pncconf/pncconf.glade:907 +msgid "Mini" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3725 +#: src/emc/usr_intf/pncconf/pncconf.glade:921 +#: src/emc/usr_intf/pncconf/pncconf.glade:6656 #, fuzzy -msgid "Spindle Motor/Encoder Configuration" -msgstr "Mostrar _Configuração Hal" +msgid "Touchy" +msgstr "Apalpador" -#: src/emc/usr_intf/pncconf/pncconf.py:3727 -#, python-format -msgid "%s Axis Motor/Encoder Configuration" +#: src/emc/usr_intf/pncconf/pncconf.glade:938 +msgid "GUI frontend list" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3756 -#, python-format -msgid "%s Parallel Port Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:973 +#, fuzzy +msgid "External Controls" +msgstr "Controle manual" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1014 +msgid "Add device rule" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3780 -#, python-format -msgid "%s I/0 Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:1027 +msgid "Test device" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4001 -msgid "Quit PNCconfig and discard changes?" +#: src/emc/usr_intf/pncconf/pncconf.glade:1041 +msgid "Search for device rules" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4042 -#: src/emc/usr_intf/pncconf/pncconf.glade:65849 +#: src/emc/usr_intf/pncconf/pncconf.glade:1062 #, fuzzy -msgid "Help Pages" -msgstr "Profundidade das imagens" - -#: src/emc/usr_intf/pncconf/pncconf.py:4047 -msgid "Help page is unavailable\n" -msgstr "" +msgid "Device Name:" +msgstr "Máquina" -#: src/emc/usr_intf/pncconf/pncconf.py:4054 -msgid "" -"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " -"of external hardware is unavailable." +#: src/emc/usr_intf/pncconf/pncconf.glade:1125 +msgid "A +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4059 -#, python-format -msgid "" -"You are using a realtime version of LinuxCNC but didn't load a realtime " -"kernel so testing / tuning of external hardware is unavailable.\n" -" This is probably because you updated the OS and it doesn't load the RTAI " -"kernel anymore\n" -" You are using the %(actual)s kernel instead of %(needed)s" +#: src/emc/usr_intf/pncconf/pncconf.glade:1135 +msgid "A -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4079 -#, python-format -msgid "" -"You are have no hostmot2 firmware downloaded in folder:\n" -"%s\n" -"PNCconf will use sample firmware data\n" -"live testing will not be possible" +#: src/emc/usr_intf/pncconf/pncconf.glade:1169 +#: src/emc/usr_intf/pncconf/pncconf.glade:1181 +#: src/emc/usr_intf/pncconf/pncconf.glade:1191 +#: src/emc/usr_intf/pncconf/pncconf.glade:1246 +#: src/emc/usr_intf/pncconf/pncconf.glade:1759 +msgid "mm/min " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4093 +#: src/emc/usr_intf/pncconf/pncconf.glade:1269 #, fuzzy -msgid "LinuxCNC 'PNCconf' configuration files" -msgstr "Mostrar _Configuração Hal" +msgid " ab)" +msgstr "Refrigeração:" -#: src/emc/usr_intf/pncconf/pncconf.py:4123 -msgid "" -"It seems data in this file is from too old of a version of PNCConf to " -"continue.\n" -"." +#: src/emc/usr_intf/pncconf/pncconf.glade:1282 +#: src/emc/usr_intf/pncconf/pncconf.glade:2493 +#: src/emc/usr_intf/pncconf/pncconf.glade:2927 +#: src/emc/usr_intf/pncconf/pncconf.glade:3808 +#: src/emc/usr_intf/pncconf/pncconf.glade:4689 +msgid " b)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4130 -#: src/emc/usr_intf/pncconf/pncconf.py:4228 -#, python-format -msgid "Point and click configuration - %s.pncconf " +#: src/emc/usr_intf/pncconf/pncconf.glade:1293 +#: src/emc/usr_intf/pncconf/pncconf.glade:2482 +#: src/emc/usr_intf/pncconf/pncconf.glade:2916 +#: src/emc/usr_intf/pncconf/pncconf.glade:3797 +#: src/emc/usr_intf/pncconf/pncconf.glade:4678 +msgid " a)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4250 -msgid "" -"You need to designate a parport and/or mesa I/O device before continuing." +#: src/emc/usr_intf/pncconf/pncconf.glade:1305 +#: src/emc/usr_intf/pncconf/pncconf.glade:2385 +#: src/emc/usr_intf/pncconf/pncconf.glade:2867 +#: src/emc/usr_intf/pncconf/pncconf.glade:3748 +#: src/emc/usr_intf/pncconf/pncconf.glade:4629 +msgid "default" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4309 -msgid "" -"You Have choosen to re-edit the current config, so you can not go to the new/" -"modify page.\n" -" Quit and reload PNCconf if you wish to build a new config." -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1336 +#: src/emc/usr_intf/pncconf/pncconf.glade:1476 +#, fuzzy +msgid "Jog Speed select A" +msgstr "Jog no eixo selecionado" -#: src/emc/usr_intf/pncconf/pncconf.py:4313 -msgid "" -"If you can not go to the new/modify page your current data will be lost.\n" -"Ok to reset data and start a new configuration?" +#: src/emc/usr_intf/pncconf/pncconf.glade:1348 +msgid "X +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4594 -msgid "USB device Info Search" +#: src/emc/usr_intf/pncconf/pncconf.glade:1354 +msgid "Y +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4608 -msgid "USB device page is unavailable\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1364 +msgid "Z +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4673 -msgid "Pin names are unavailable\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1374 +msgid "X -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4695 -msgid "Device names are unavailable\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1384 +msgid "Y -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4698 -msgid "No Pncconf made device rules were found\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1396 +msgid "Z -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4822 -msgid "" -"OK to replace existing glade panel ?\n" -"It will be renamed and added to 'backups' folder.\n" -" Clicking 'existing custom program' will aviod this warning. " -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1500 +#, fuzzy +msgid "Digital Control" +msgstr "Controle manual" -#: src/emc/usr_intf/pncconf/pncconf.py:4827 -msgid "" -"OK to replace existing custom pyvcp panel?\n" -"Existing pyvcp-panel.xml will be renamed and added to 'backups' folder\n" -"Clicking 'existing custom program' will aviod this warning. " +#: src/emc/usr_intf/pncconf/pncconf.glade:1593 +#: src/emc/usr_intf/gscreen/gscreen.glade:502 +msgid "A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5250 -msgid "" -"You need to configure the mesa0 page.\n" -" Choose the board type, firmware, component amounts and press 'Accept " -"component changes' button'" +#: src/emc/usr_intf/pncconf/pncconf.glade:1603 +#: src/emc/usr_intf/gscreen/gscreen.glade:374 +msgid "Z" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5254 -msgid "" -"The chosen Mesa0 board is different from the current displayed.\n" -"please press 'Accept component changes' button'" +#: src/emc/usr_intf/pncconf/pncconf.glade:1613 +#: src/emc/usr_intf/pncconf/pncconf.glade:6134 +#: src/emc/usr_intf/pncconf/pncconf.glade:6458 +#: src/emc/usr_intf/pncconf/pncconf.glade:6860 +#: src/emc/usr_intf/pncconf/pncconf.glade:7235 +#: src/emc/usr_intf/gscreen/gscreen.glade:244 +msgid "Y" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5297 -msgid "" -"You need to configure the mesa1 page.\n" -" Choose the board type, firmware, component amounts and press 'Accept " -"component changes' button'" +#: src/emc/usr_intf/pncconf/pncconf.glade:1623 +msgid "X " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5301 -msgid "" -"The chosen Mesa1 board is different from the current displayed.\n" -"please press 'Accept component changes' button'" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1631 +#, fuzzy +msgid "Analog Control" +msgstr "Controle manual" -#: src/emc/usr_intf/pncconf/pncconf.py:5315 -msgid "" -"Do to technical reasons this test panel can be loaded only once without " -"reloading pncconf.You also will not be able to do any other testing untill " -"you reload pncconf and quite possibly open a terminal and type 'halrun -U' I " -"hesitate to even allow it's use but at times it's very useful.\n" -"Do you wish to continue the test?" +#: src/emc/usr_intf/pncconf/pncconf.glade:1657 +#: src/emc/usr_intf/pncconf/pncconf.glade:1788 +#: src/emc/usr_intf/pncconf/pncconf.glade:2698 +#: src/emc/usr_intf/pncconf/pncconf.glade:3579 +#: src/emc/usr_intf/pncconf/pncconf.glade:4460 +#: src/emc/usr_intf/pncconf/pncconf.glade:5341 +#: src/emc/usr_intf/pncconf/pncconf.glade:64300 +msgid "Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6699 -msgid "First Parallel Port set for OUTPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:1675 +msgid "USB Joystick Jogging " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6701 -msgid "First Parallel Port set for INPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:1719 +msgid "shared buttons for all axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6725 -msgid "Second Parallel Port set for OUTPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:1732 +#, fuzzy +msgid "buttons for each axis" +msgstr "Jog no quarto eixo " + +#: src/emc/usr_intf/pncconf/pncconf.glade:1806 +msgid "External Button Jogging" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6727 -msgid "Second Parallel Port set for INPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:1847 +msgid "Shared MPG / selectable axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6739 -msgid "Third Parallel Port set for OUTPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:1860 +#, fuzzy +msgid "Mpg per axis" +msgstr "Jog no primeiro eixo" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1875 +#, fuzzy +msgid "selectable MPG increments" +msgstr "Seleciona incremento de Jog" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1940 +#: src/emc/usr_intf/pncconf/pncconf.glade:3379 +#: src/emc/usr_intf/pncconf/pncconf.glade:4260 +#: src/emc/usr_intf/pncconf/pncconf.glade:5141 +#, fuzzy +msgid " d)" +msgstr "Spindle:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1952 +#: src/emc/usr_intf/pncconf/pncconf.glade:3340 +#: src/emc/usr_intf/pncconf/pncconf.glade:4221 +#: src/emc/usr_intf/pncconf/pncconf.glade:5102 +msgid " abcd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6741 -msgid "Third Parallel Port set for INPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:1965 +#: src/emc/usr_intf/pncconf/pncconf.glade:3353 +#: src/emc/usr_intf/pncconf/pncconf.glade:4234 +#: src/emc/usr_intf/pncconf/pncconf.glade:5115 +msgid " bcd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6866 -msgid "You can not have both steppers and pwm signals for spindle control\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1978 +#: src/emc/usr_intf/pncconf/pncconf.glade:3366 +#: src/emc/usr_intf/pncconf/pncconf.glade:4247 +#: src/emc/usr_intf/pncconf/pncconf.glade:5128 +msgid " acd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6870 -#, python-format -msgid "You forgot to designate a stepper or pwm signal for axis %s\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1991 +#: src/emc/usr_intf/pncconf/pncconf.glade:3430 +#: src/emc/usr_intf/pncconf/pncconf.glade:4311 +#: src/emc/usr_intf/pncconf/pncconf.glade:5192 +msgid " cd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6873 -#, python-format -msgid "You forgot to designate an encoder /resolver signal for axis %s servo\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2004 +#: src/emc/usr_intf/pncconf/pncconf.glade:3404 +#: src/emc/usr_intf/pncconf/pncconf.glade:4285 +#: src/emc/usr_intf/pncconf/pncconf.glade:5166 +msgid " bd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6876 -#, python-format -msgid "You forgot to designate a pwm signal or stepper signal for axis %s\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2017 +#: src/emc/usr_intf/pncconf/pncconf.glade:3391 +#: src/emc/usr_intf/pncconf/pncconf.glade:4272 +#: src/emc/usr_intf/pncconf/pncconf.glade:5153 +msgid " ad)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6879 -#, python-format -msgid "You can not have both steppers and pwm signals for axis %s\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2030 +#: src/emc/usr_intf/pncconf/pncconf.glade:2514 +#: src/emc/usr_intf/pncconf/pncconf.glade:3059 +#: src/emc/usr_intf/pncconf/pncconf.glade:3940 +#: src/emc/usr_intf/pncconf/pncconf.glade:4821 +msgid " abc)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6887 -msgid "Touchy require an external cycle start signal\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2041 +#: src/emc/usr_intf/pncconf/pncconf.glade:3026 +#: src/emc/usr_intf/pncconf/pncconf.glade:3907 +#: src/emc/usr_intf/pncconf/pncconf.glade:4788 +msgid " c)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6890 -msgid "Touchy require an external abort signal\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2207 +#: src/emc/usr_intf/pncconf/pncconf.glade:3049 +#: src/emc/usr_intf/pncconf/pncconf.glade:3930 +#: src/emc/usr_intf/pncconf/pncconf.glade:4811 +msgid " bc)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6893 -msgid "Touchy require an external single-step signal\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2217 +#: src/emc/usr_intf/pncconf/pncconf.glade:3038 +#: src/emc/usr_intf/pncconf/pncconf.glade:3919 +#: src/emc/usr_intf/pncconf/pncconf.glade:4800 +msgid " ac)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6896 -msgid "" -"Touchy require an external multi handwheel MPG encoder signal on the mesa " -"page\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2504 +#: src/emc/usr_intf/pncconf/pncconf.glade:2938 +#: src/emc/usr_intf/pncconf/pncconf.glade:3819 +#: src/emc/usr_intf/pncconf/pncconf.glade:4700 +msgid " ab)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6899 -msgid "" -"Touchy require 'external mpg jogging' to be selected on the external control " -"page\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2577 +msgid "ignore all inputs false" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6902 -msgid "" -"Touchy require the external mpg to be in 'shared mpg' mode on the external " -"controls page\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2592 +msgid "use gray code" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6905 -msgid "" -"Touchy require selectable increments to be unchecked on the external " -"controls page\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2607 +#: src/emc/usr_intf/pncconf/pncconf.glade:3489 +#: src/emc/usr_intf/pncconf/pncconf.glade:4356 +#: src/emc/usr_intf/pncconf/pncconf.glade:5237 +msgid "use debounce" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6909 -msgid "" -"The 7i29 daughter board requires PWM type generators and a PWM base " -"frequency of 20 khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2658 +#: src/emc/usr_intf/pncconf/pncconf.glade:3453 +#: src/emc/usr_intf/pncconf/pncconf.glade:4334 +#: src/emc/usr_intf/pncconf/pncconf.glade:5215 +#, fuzzy +msgid "Mux options" +msgstr "Posição:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:2672 +#, fuzzy +msgid "increments" +msgstr "Seleciona incremento de Jog" + +#: src/emc/usr_intf/pncconf/pncconf.glade:2716 +msgid "External MPG Jogging" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6912 -msgid "" -"The 7i30 daughter board requires PWM type generators and a PWM base " -"frequency of 20 khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2747 +#: src/emc/usr_intf/pncconf/pncconf.glade:3628 +#: src/emc/usr_intf/pncconf/pncconf.glade:4509 +msgid "Use MPG " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6915 -msgid "" -"The 7i33 daughter board requires PDM type generators and a PDM base " -"frequency of 6 Mhz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2760 +#: src/emc/usr_intf/pncconf/pncconf.glade:3641 +#: src/emc/usr_intf/pncconf/pncconf.glade:4522 +msgid "use switches" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6918 -msgid "" -"The 7i40 daughter board requires PWM type generators and a PWM base " -"frequency of 50 khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:3417 +#: src/emc/usr_intf/pncconf/pncconf.glade:4298 +#: src/emc/usr_intf/pncconf/pncconf.glade:5179 +msgid " abd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6921 -msgid "" -"The 7i48 daughter board requires UDM type generators and a PWM base " -"frequency of 24 khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:3504 +#: src/emc/usr_intf/pncconf/pncconf.glade:4371 +#: src/emc/usr_intf/pncconf/pncconf.glade:5252 +msgid "use graycode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7148 -msgid "Gearbox Reduction Ratio" +#: src/emc/usr_intf/pncconf/pncconf.glade:3519 +#: src/emc/usr_intf/pncconf/pncconf.glade:4386 +#: src/emc/usr_intf/pncconf/pncconf.glade:5267 +msgid "ignore all-inputs false" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7151 -msgid "Reduction Ratio" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:3563 +#: src/emc/usr_intf/pncconf/pncconf.glade:4444 +#: src/emc/usr_intf/pncconf/pncconf.glade:5325 +#, fuzzy +msgid "Increments" +msgstr "Seleciona incremento de Jog" -#: src/emc/usr_intf/pncconf/pncconf.py:7154 -msgid "Leadscrew Pitch" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:3597 +#, fuzzy +msgid "External Feed Override" +msgstr "Velocidade da máquina" -#: src/emc/usr_intf/pncconf/pncconf.py:7157 -#: src/emc/usr_intf/pncconf/pncconf.glade:66327 -#: src/emc/usr_intf/pncconf/pncconf.glade:66622 -msgid "Leadscrew TPI" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:4478 +#, fuzzy +msgid "Max Velocity Override" +msgstr "Velocidade da máquina" -#: src/emc/usr_intf/pncconf/pncconf.py:7161 -#: src/emc/usr_intf/pncconf/pncconf.py:7162 -msgid "(" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5359 +#, fuzzy +msgid "External Spindle Override" +msgstr "Velocidade da máquina" -#: src/emc/usr_intf/pncconf/pncconf.py:7163 -#: src/emc/usr_intf/pncconf/pncconf.py:7173 -#: src/emc/usr_intf/pncconf/pncconf.py:7174 -#: src/emc/usr_intf/pncconf/pncconf.py:7175 -msgid " / min" +#: src/emc/usr_intf/pncconf/pncconf.glade:5387 +#, fuzzy +msgid "GUI configuration" +msgstr "Mostrar _Configuração Hal" + +#: src/emc/usr_intf/pncconf/pncconf.glade:5406 +msgid "Frontend" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7164 +#: src/emc/usr_intf/pncconf/pncconf.glade:5566 #, fuzzy -msgid " / sec²" -msgstr "Jog no segundo eixo" +msgid "Position_offset" +msgstr "Posição:" -#: src/emc/usr_intf/pncconf/pncconf.py:7167 +#: src/emc/usr_intf/pncconf/pncconf.glade:5573 #, fuzzy -msgid " / Step" -msgstr "_Passo" +msgid "Position_feedback" +msgstr "Posição:" -#: src/emc/usr_intf/pncconf/pncconf.py:7168 +#: src/emc/usr_intf/pncconf/pncconf.glade:5584 #, fuzzy -msgid "Steps / " -msgstr "_Passo" +msgid "Max Spindle Override " +msgstr "Velocidade da máquina" -#: src/emc/usr_intf/pncconf/pncconf.py:7170 -msgid " / encoder pulse" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5606 +#, fuzzy +msgid "Min Spindle Override" +msgstr "Velocidade da máquina" -#: src/emc/usr_intf/pncconf/pncconf.py:7171 -msgid "Encoder pulses / " -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5665 +#, fuzzy +msgid "Max Feed Override" +msgstr "Velocidade da máquina" -#: src/emc/usr_intf/pncconf/pncconf.py:7482 -msgid "Axis Scale Calculation" +#: src/emc/usr_intf/pncconf/pncconf.glade:5702 +#, fuzzy +msgid "" +"Machine\n" +"Relative\n" +msgstr "Relativa" + +#: src/emc/usr_intf/pncconf/pncconf.glade:5714 +#, fuzzy +msgid "" +"Commanded\n" +"Actual" +msgstr "Comandada" + +#: src/emc/usr_intf/pncconf/pncconf.glade:5729 +msgid "General GUI Defaults" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7785 -msgid "You need to designate an E-stop input pin for this ladder program." +#: src/emc/usr_intf/pncconf/pncconf.glade:5811 +msgid "Default linear velocity " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7797 -msgid "You need to designate a probe input pin for this ladder program." +#: src/emc/usr_intf/pncconf/pncconf.glade:5818 +msgid "Min linear velocity" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7808 -msgid "" -"OK to replace existing custom ladder program?\n" -"Existing Custom.clp will be renamed custom_backup.clp.\n" -"Any existing file named -custom_backup.clp- will be lost.Selecting 'existing " -"ladder program' will avoid this warning" +#: src/emc/usr_intf/pncconf/pncconf.glade:5829 +msgid "Max linear velocity" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8019 -msgid "Do you wish to continue to edit this configuration." +#: src/emc/usr_intf/pncconf/pncconf.glade:5879 +#: src/emc/usr_intf/pncconf/pncconf.glade:6085 +#: src/emc/usr_intf/pncconf/pncconf.glade:6097 +msgid "mm / min" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8058 -msgid "PCI search page is unavailable\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:5892 +msgid "Default Angular velocity " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8176 -msgid "" -"You specified there is an existing gladefile, But there is not one in the " -"machine-named folder.." +#: src/emc/usr_intf/pncconf/pncconf.glade:5926 +msgid "gedit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8495 -msgid "Servo tuning is not avaiable in PNCconf yet\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:5939 +msgid "Min Angular velocity" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8500 +#: src/emc/usr_intf/pncconf/pncconf.glade:5966 #, fuzzy -msgid "degrees" -msgstr "45 graus" +msgid "Increments " +msgstr "Seleciona incremento de Jog" -#: src/emc/usr_intf/pncconf/pncconf.py:8501 -msgid "degrees / minute" +#: src/emc/usr_intf/pncconf/pncconf.glade:5977 +msgid "5mm 1mm .5mm .1mm .05mm .01mm .005mm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8502 -msgid "degrees / second²" +#: src/emc/usr_intf/pncconf/pncconf.glade:5990 +msgid "Max Angular velocity" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8504 -#, fuzzy -msgid "revolutions" -msgstr "Posição:" - -#: src/emc/usr_intf/pncconf/pncconf.py:8505 -msgid "rpm" +#: src/emc/usr_intf/pncconf/pncconf.glade:6017 +msgid "Axis Geometry" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8506 -#, fuzzy -msgid "revs / second²" -msgstr "Jog no segundo eixo" +#: src/emc/usr_intf/pncconf/pncconf.glade:6028 +msgid "xyzabc" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8509 -#: src/emc/usr_intf/pncconf/pncconf.glade:58295 -#: src/emc/usr_intf/pncconf/pncconf.glade:58479 -#: src/emc/usr_intf/pncconf/pncconf.glade:58576 -msgid "mm / minute" +#: src/emc/usr_intf/pncconf/pncconf.glade:6040 +#: src/emc/usr_intf/pncconf/pncconf.glade:6052 +#: src/emc/usr_intf/pncconf/pncconf.glade:6064 +msgid "Deg / min" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8510 +#: src/emc/usr_intf/pncconf/pncconf.glade:6113 +#: src/emc/usr_intf/pncconf/pncconf.glade:6484 +#: src/emc/usr_intf/pncconf/pncconf.glade:6839 +#: src/emc/usr_intf/pncconf/pncconf.glade:7262 #, fuzzy -msgid "mm / second²" -msgstr "Jog no segundo eixo" +msgid "size" +msgstr "Tamanho:" -#: src/emc/usr_intf/pncconf/pncconf.py:8513 -msgid "inches / minute" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:6122 +#: src/emc/usr_intf/pncconf/pncconf.glade:6471 +#: src/emc/usr_intf/pncconf/pncconf.glade:6848 +#: src/emc/usr_intf/pncconf/pncconf.glade:7248 +#, fuzzy +msgid "Position" +msgstr "Posição:" -#: src/emc/usr_intf/pncconf/pncconf.py:8514 -msgid "inches / second²" +#: src/emc/usr_intf/pncconf/pncconf.glade:6159 +#: src/emc/usr_intf/pncconf/pncconf.glade:6433 +#: src/emc/usr_intf/pncconf/pncconf.glade:6885 +#: src/emc/usr_intf/pncconf/pncconf.glade:7210 +#: src/emc/usr_intf/gscreen/gscreen.glade:116 +msgid "X" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8646 -#, python-format -msgid "%s Axis Tune" +#: src/emc/usr_intf/pncconf/pncconf.glade:6171 +#: src/emc/usr_intf/pncconf/pncconf.glade:6423 +#: src/emc/usr_intf/pncconf/pncconf.glade:6897 +#: src/emc/usr_intf/pncconf/pncconf.glade:7200 +#: src/emc/usr_intf/gscreen/gscreen.glade:1142 +msgid "W" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8810 -msgid "" -" You must designate a ENCODER / RESOLVER signal and an ANALOG SPINDLE signal " -"for this axis test" +#: src/emc/usr_intf/pncconf/pncconf.glade:6205 +#: src/emc/usr_intf/pncconf/pncconf.glade:6389 +#: src/emc/usr_intf/pncconf/pncconf.glade:6931 +#: src/emc/usr_intf/pncconf/pncconf.glade:7166 +msgid "H" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8814 -msgid "" -" You must designate a ENCODER / RESOLVER signal and a PWM signal for this " -"axis test" +#: src/emc/usr_intf/pncconf/pncconf.glade:6227 +msgid "Force Axis to Maximize" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8 -#, fuzzy -msgid "LinuxCNC Point And Click Configuration" -msgstr "Mostrar _Configuração Hal" - -#: src/emc/usr_intf/pncconf/pncconf.glade:23 -msgid "LinuxCNC Configuration Wizard Beta 1 Version" +#: src/emc/usr_intf/pncconf/pncconf.glade:6249 +msgid "AXIS defaults" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:24 -msgid "" -"\tThis program creates configuration \n" -" files for \"Closed Loop Servo\" \n" -"\t \t and hardware stepper\n" -" \tmachines" +#: src/emc/usr_intf/pncconf/pncconf.glade:6365 +msgid "Force Touchy to Maximize after positioning" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:34 -msgid "Create or Edit" +#: src/emc/usr_intf/pncconf/pncconf.glade:6501 +#: src/emc/usr_intf/pncconf/pncconf.glade:7333 +msgid "Follow System Theme\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:52 -#, fuzzy -msgid "Create a new configuration" -msgstr "Mostrar _Configuração Hal" - -#: src/emc/usr_intf/pncconf/pncconf.glade:118 -msgid "Create a desktop shortcut (symlink) to configuration files." +#: src/emc/usr_intf/pncconf/pncconf.glade:6514 +#: src/emc/usr_intf/pncconf/pncconf.glade:7347 +msgid "GTK Theme" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:135 -msgid "Create a desktop launcher to start LinuxCNC with this configuration." +#: src/emc/usr_intf/pncconf/pncconf.glade:6540 +#: src/emc/usr_intf/gscreen/gscreen.glade:1857 +msgid "Absolute Text Color" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:214 -#, fuzzy -msgid "Machine Name:" -msgstr "Máquina" - -#: src/emc/usr_intf/pncconf/pncconf.glade:281 +#: src/emc/usr_intf/pncconf/pncconf.glade:6603 #, fuzzy -msgid "Axis configuration:" -msgstr "Mostrar _Configuração Hal" +msgid "Absolute Textcolor" +msgstr "Sobre o AXIS" -#: src/emc/usr_intf/pncconf/pncconf.glade:316 +#: src/emc/usr_intf/pncconf/pncconf.glade:6616 #, fuzzy -msgid "Machine units:" -msgstr "Máquina" +msgid "Relative Textcolor" +msgstr "Mostra posição relativa" -#: src/emc/usr_intf/pncconf/pncconf.glade:355 -msgid "Machine Basics" +#: src/emc/usr_intf/pncconf/pncconf.glade:6629 +msgid "DTG Textcolor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:405 -msgid "Recommend servo period: 1000000" +#: src/emc/usr_intf/pncconf/pncconf.glade:6642 +msgid "Error Textcolor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:431 -msgid "Actual Servo Period: " +#: src/emc/usr_intf/pncconf/pncconf.glade:6677 +msgid "GUI Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:486 -msgid "" -" Test Base\n" -"Period Jitter " +#: src/emc/usr_intf/pncconf/pncconf.glade:6708 +msgid "Virtual Control Panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:511 -msgid "Computer Response Time" +#: src/emc/usr_intf/pncconf/pncconf.glade:6783 +msgid "XYZ buttons (uses Halui)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:553 -msgid "Mesa0 PCI / Parport Card:" +#: src/emc/usr_intf/pncconf/pncconf.glade:6954 +msgid "Geometry Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:563 -msgid "Mesa1 PCI / Parport Card:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7033 +msgid "Pyvcp Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:576 -msgid "First Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7105 +msgid "Sample display " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:589 -msgid "Second Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7272 +msgid "Standalone Panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:604 -msgid "Third Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7289 +msgid "Rightside Embeded" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:627 -#: src/emc/usr_intf/pncconf/pncconf.glade:635 -msgid "" -"5i20\n" -"5i23\n" -"5i22" +#: src/emc/usr_intf/pncconf/pncconf.glade:7305 +msgid "Center Tab Embeded" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:708 -#: src/emc/usr_intf/pncconf/pncconf.glade:720 -#: src/emc/usr_intf/pncconf/pncconf.glade:733 -msgid "" -"In\n" -"Out" +#: src/emc/usr_intf/pncconf/pncconf.glade:7320 +msgid "Force Maximize" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:796 -msgid "" -"Add-on PCI\n" -" Parport\n" -" Address \n" -" Search" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:7359 +#, fuzzy +msgid "Display Options" +msgstr "Mostra medidas em_Polegadas" -#: src/emc/usr_intf/pncconf/pncconf.glade:821 -msgid "I/O Control Ports/ Boards" +#: src/emc/usr_intf/pncconf/pncconf.glade:7409 +msgid "Max RPM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:870 +#: src/emc/usr_intf/pncconf/pncconf.glade:7422 #, fuzzy -msgid "Axis" -msgstr "Eixo:" +msgid "Spindle Speed Indicator" +msgstr "Freio do spindle ativado" -#: src/emc/usr_intf/pncconf/pncconf.glade:885 -msgid "TKLinuxCNC" +#: src/emc/usr_intf/pncconf/pncconf.glade:7434 +#, fuzzy +msgid "Spindle At Speed LED" +msgstr "Velocidade da máquina" + +#: src/emc/usr_intf/pncconf/pncconf.glade:7446 +#, fuzzy +msgid "Zero X Button" +msgstr "Botão esquerdo" + +#: src/emc/usr_intf/pncconf/pncconf.glade:7458 +#, fuzzy +msgid "Zero Y Button" +msgstr "Botão esquerdo" + +#: src/emc/usr_intf/pncconf/pncconf.glade:7470 +#, fuzzy +msgid "Zero Z Button" +msgstr "Botão esquerdo" + +#: src/emc/usr_intf/pncconf/pncconf.glade:7482 +#, fuzzy +msgid "Zero A Button" +msgstr "Botão esquerdo" + +#: src/emc/usr_intf/pncconf/pncconf.glade:7494 +msgid "Requires Classicladder touch-off program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:899 -msgid "Mini" +#: src/emc/usr_intf/pncconf/pncconf.glade:7495 +msgid "Auto Z Touch Off Button" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:913 -#: src/emc/usr_intf/pncconf/pncconf.glade:6648 +#: src/emc/usr_intf/pncconf/pncconf.glade:7508 #, fuzzy -msgid "Touchy" -msgstr "Apalpador" +msgid "Sample Options" +msgstr "Mostrar _Configuração Hal" -#: src/emc/usr_intf/pncconf/pncconf.glade:930 -msgid "GUI frontend list" +#: src/emc/usr_intf/pncconf/pncconf.glade:7582 +msgid "Gladevcp Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:965 -#, fuzzy -msgid "External Controls" -msgstr "Controle manual" +#: src/emc/usr_intf/pncconf/pncconf.glade:7605 +msgid "Include custom GladeVCP GUI panel" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1006 -msgid "Add device rule" +#: src/emc/usr_intf/pncconf/pncconf.glade:7676 +msgid "Force individual manual homing" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1019 -msgid "Test device" +#: src/emc/usr_intf/pncconf/pncconf.glade:7689 +msgid "Random position toolchanger " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1033 -msgid "Search for device rules" +#: src/emc/usr_intf/pncconf/pncconf.glade:7704 +msgid "Require homing before MDI / Running" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1054 -#, fuzzy -msgid "Device Name:" -msgstr "Máquina" +#: src/emc/usr_intf/pncconf/pncconf.glade:7713 +msgid "Popup Toolchange Prompt" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1117 -#: src/emc/usr_intf/pncconf/pncconf.glade:1255 -#, fuzzy -msgid "Jog Speed select A" -msgstr "Jog no eixo selecionado" +#: src/emc/usr_intf/pncconf/pncconf.glade:7727 +msgid "Leave spindle on during tool change" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1195 -msgid "Z -" +#: src/emc/usr_intf/pncconf/pncconf.glade:7740 +msgid "Move spindle up before tool change" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1207 -msgid "Y -" +#: src/emc/usr_intf/pncconf/pncconf.glade:7753 +msgid "Restore joint position after shutdown" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1219 -msgid "X -" +#: src/emc/usr_intf/pncconf/pncconf.glade:7769 +msgid "Defaults and Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1229 -msgid "Z +" +#: src/emc/usr_intf/pncconf/pncconf.glade:7797 +msgid "Mesa0 I/O setup\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1239 -msgid "Y +" +#: src/emc/usr_intf/pncconf/pncconf.glade:7817 +msgid "" +"Click on each page tab to configure signal names for each connector port.\n" +"\n" +"Press the button to make the tabbed pages\n" +"accept the changes.\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1249 -msgid "X +" +#: src/emc/usr_intf/pncconf/pncconf.glade:8001 +msgid "3PWM base frequency:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1289 -#: src/emc/usr_intf/pncconf/pncconf.glade:2208 -#: src/emc/usr_intf/pncconf/pncconf.glade:3496 -#: src/emc/usr_intf/pncconf/pncconf.glade:4377 -#: src/emc/usr_intf/pncconf/pncconf.glade:5258 -msgid "default" +#: src/emc/usr_intf/pncconf/pncconf.glade:8036 +msgid "Mesa parport address:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1299 -#: src/emc/usr_intf/pncconf/pncconf.glade:2107 -#: src/emc/usr_intf/pncconf/pncconf.glade:3443 -#: src/emc/usr_intf/pncconf/pncconf.glade:4324 -#: src/emc/usr_intf/pncconf/pncconf.glade:5205 -msgid " a)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8047 +msgid "Firmware:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1311 -#: src/emc/usr_intf/pncconf/pncconf.glade:2096 -#: src/emc/usr_intf/pncconf/pncconf.glade:3432 -#: src/emc/usr_intf/pncconf/pncconf.glade:4313 -#: src/emc/usr_intf/pncconf/pncconf.glade:5194 -msgid " b)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8069 +msgid "SVST8_4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1322 -#, fuzzy -msgid " ab)" -msgstr "Refrigeração:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8094 +msgid "Num of 3 pwm generators: " +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1348 -#: src/emc/usr_intf/pncconf/pncconf.glade:1401 -#: src/emc/usr_intf/pncconf/pncconf.glade:1413 -#: src/emc/usr_intf/pncconf/pncconf.glade:1423 -#: src/emc/usr_intf/pncconf/pncconf.glade:1751 -msgid "mm/min " +#: src/emc/usr_intf/pncconf/pncconf.glade:8128 +msgid "Total number of pins:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1456 -msgid "A -" +#: src/emc/usr_intf/pncconf/pncconf.glade:8153 +msgid "" +"Accept components\n" +" Changes" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1468 -msgid "A +" +#: src/emc/usr_intf/pncconf/pncconf.glade:8168 +msgid "PWM base frequency:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1492 -#, fuzzy -msgid "Digital Control" -msgstr "Controle manual" +#: src/emc/usr_intf/pncconf/pncconf.glade:8179 +msgid "PDM base frequency:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1539 -msgid "X " +#: src/emc/usr_intf/pncconf/pncconf.glade:8190 +msgid "Watchdog timeout:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1545 -#: src/emc/usr_intf/pncconf/pncconf.glade:5901 -#: src/emc/usr_intf/pncconf/pncconf.glade:6531 -#: src/emc/usr_intf/pncconf/pncconf.glade:6910 -#: src/emc/usr_intf/pncconf/pncconf.glade:7257 -msgid "Y" +#: src/emc/usr_intf/pncconf/pncconf.glade:8307 +msgid "Num of encoders:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1555 -msgid "Z" +#: src/emc/usr_intf/pncconf/pncconf.glade:8318 +msgid "Num of pwm generators:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1565 -msgid "A" +#: src/emc/usr_intf/pncconf/pncconf.glade:8329 +msgid "Num of step generators: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1623 +#: src/emc/usr_intf/pncconf/pncconf.glade:8340 #, fuzzy -msgid "Analog Control" -msgstr "Controle manual" +msgid "Board name" +msgstr "Modo World" -#: src/emc/usr_intf/pncconf/pncconf.glade:1649 -#: src/emc/usr_intf/pncconf/pncconf.glade:1780 -#: src/emc/usr_intf/pncconf/pncconf.glade:2690 -#: src/emc/usr_intf/pncconf/pncconf.glade:3571 -#: src/emc/usr_intf/pncconf/pncconf.glade:4452 -#: src/emc/usr_intf/pncconf/pncconf.glade:5333 -#: src/emc/usr_intf/pncconf/pncconf.glade:57371 -msgid "Details" +#: src/emc/usr_intf/pncconf/pncconf.glade:8346 +msgid "Num of Smart Serial Ports:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1667 -msgid "USB Joystick Jogging " +#: src/emc/usr_intf/pncconf/pncconf.glade:8393 +msgid "7i29 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1711 -msgid "shared buttons for all axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:8402 +msgid "7i30 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1724 -#, fuzzy -msgid "buttons for each axis" -msgstr "Jog no quarto eixo " +#: src/emc/usr_intf/pncconf/pncconf.glade:8414 +msgid "7i33 daughter board" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1798 -msgid "External Button Jogging" +#: src/emc/usr_intf/pncconf/pncconf.glade:8426 +msgid "7i40 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1839 -msgid "Shared MPG / selectable axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:8438 +msgid "7i48 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1852 -#, fuzzy -msgid "Mpg per axis" -msgstr "Jog no primeiro eixo" +#: src/emc/usr_intf/pncconf/pncconf.glade:8453 +msgid "Sanity Checks" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1867 +#: src/emc/usr_intf/pncconf/pncconf.glade:8482 #, fuzzy -msgid "selectable MPG increments" -msgstr "Seleciona incremento de Jog" +msgid "Num of channels: " +msgstr "Número de canais insuficiente" -#: src/emc/usr_intf/pncconf/pncconf.glade:1932 -#: src/emc/usr_intf/pncconf/pncconf.glade:2907 -#: src/emc/usr_intf/pncconf/pncconf.glade:3788 -#: src/emc/usr_intf/pncconf/pncconf.glade:4669 +#: src/emc/usr_intf/pncconf/pncconf.glade:8494 #, fuzzy -msgid "Mux options" -msgstr "Posição:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1980 -#: src/emc/usr_intf/pncconf/pncconf.glade:2868 -#: src/emc/usr_intf/pncconf/pncconf.glade:3763 -#: src/emc/usr_intf/pncconf/pncconf.glade:4644 -msgid "use debounce" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1995 -msgid "use gray code" -msgstr "" +msgid "Num of resolvers:" +msgstr "Número de canais insuficiente" -#: src/emc/usr_intf/pncconf/pncconf.glade:2010 -msgid "ignore all inputs false" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:8528 +#, fuzzy +msgid "" +"Configuration\n" +" Page" +msgstr "Mostrar _Configuração Hal" -#: src/emc/usr_intf/pncconf/pncconf.glade:2035 -#: src/emc/usr_intf/pncconf/pncconf.glade:2048 -#: src/emc/usr_intf/pncconf/pncconf.glade:2061 -#: src/emc/usr_intf/pncconf/pncconf.glade:2407 -#: src/emc/usr_intf/pncconf/pncconf.glade:2420 -#: src/emc/usr_intf/pncconf/pncconf.glade:2433 -#: src/emc/usr_intf/pncconf/pncconf.glade:2446 -#: src/emc/usr_intf/pncconf/pncconf.glade:2457 -#: src/emc/usr_intf/pncconf/pncconf.glade:2470 -#: src/emc/usr_intf/pncconf/pncconf.glade:2483 -#: src/emc/usr_intf/pncconf/pncconf.glade:2496 -#: src/emc/usr_intf/pncconf/pncconf.glade:2509 -#: src/emc/usr_intf/pncconf/pncconf.glade:2522 -#: src/emc/usr_intf/pncconf/pncconf.glade:2535 -#: src/emc/usr_intf/pncconf/pncconf.glade:8343 -#: src/emc/usr_intf/pncconf/pncconf.glade:8379 -#: src/emc/usr_intf/pncconf/pncconf.glade:56542 -#: src/emc/usr_intf/pncconf/pncconf.glade:61266 -#: src/emc/usr_intf/pncconf/pncconf.glade:61278 -#: src/emc/usr_intf/pncconf/pncconf.glade:61290 -#: src/emc/usr_intf/pncconf/pncconf.glade:61302 -#: src/emc/usr_intf/pncconf/pncconf.glade:62475 -#: src/emc/usr_intf/pncconf/pncconf.glade:62487 -#: src/emc/usr_intf/pncconf/pncconf.glade:62499 -#: src/emc/usr_intf/pncconf/pncconf.glade:62511 -#: src/emc/usr_intf/pncconf/pncconf.glade:63452 -#: src/emc/usr_intf/pncconf/pncconf.glade:63464 -#: src/emc/usr_intf/pncconf/pncconf.glade:63476 -#: src/emc/usr_intf/pncconf/pncconf.glade:63488 -#: src/emc/usr_intf/pncconf/pncconf.glade:64661 -#: src/emc/usr_intf/pncconf/pncconf.glade:64673 -#: src/emc/usr_intf/pncconf/pncconf.glade:64685 -#: src/emc/usr_intf/pncconf/pncconf.glade:64697 -#: src/emc/usr_intf/pncconf/pncconf.glade:65608 -#: src/emc/usr_intf/pncconf/pncconf.glade:65620 -#: src/emc/usr_intf/pncconf/pncconf.glade:65632 -#: src/emc/usr_intf/pncconf/pncconf.glade:65644 -msgid "label" +#: src/emc/usr_intf/pncconf/pncconf.glade:8721 +#: src/emc/usr_intf/pncconf/pncconf.glade:8773 +#: src/emc/usr_intf/pncconf/pncconf.glade:9093 +#: src/emc/usr_intf/pncconf/pncconf.glade:9145 +#: src/emc/usr_intf/pncconf/pncconf.glade:9197 +#: src/emc/usr_intf/pncconf/pncconf.glade:9249 +#: src/emc/usr_intf/pncconf/pncconf.glade:9301 +#: src/emc/usr_intf/pncconf/pncconf.glade:9353 +#: src/emc/usr_intf/pncconf/pncconf.glade:9405 +#: src/emc/usr_intf/pncconf/pncconf.glade:9457 +#: src/emc/usr_intf/pncconf/pncconf.glade:9509 +#: src/emc/usr_intf/pncconf/pncconf.glade:9561 +#: src/emc/usr_intf/pncconf/pncconf.glade:10400 +#: src/emc/usr_intf/pncconf/pncconf.glade:10453 +#: src/emc/usr_intf/pncconf/pncconf.glade:10505 +#: src/emc/usr_intf/pncconf/pncconf.glade:10557 +#: src/emc/usr_intf/pncconf/pncconf.glade:11335 +#: src/emc/usr_intf/pncconf/pncconf.glade:11387 +#: src/emc/usr_intf/pncconf/pncconf.glade:12047 +#: src/emc/usr_intf/pncconf/pncconf.glade:12099 +#: src/emc/usr_intf/pncconf/pncconf.glade:12151 +#: src/emc/usr_intf/pncconf/pncconf.glade:12203 +#: src/emc/usr_intf/pncconf/pncconf.glade:13042 +#: src/emc/usr_intf/pncconf/pncconf.glade:13094 +#: src/emc/usr_intf/pncconf/pncconf.glade:13146 +#: src/emc/usr_intf/pncconf/pncconf.glade:13198 +#: src/emc/usr_intf/pncconf/pncconf.glade:13250 +#: src/emc/usr_intf/pncconf/pncconf.glade:13302 +#: src/emc/usr_intf/pncconf/pncconf.glade:13354 +#: src/emc/usr_intf/pncconf/pncconf.glade:13406 +#: src/emc/usr_intf/pncconf/pncconf.glade:13458 +#: src/emc/usr_intf/pncconf/pncconf.glade:13510 +#: src/emc/usr_intf/pncconf/pncconf.glade:14556 +#: src/emc/usr_intf/pncconf/pncconf.glade:14608 +#: src/emc/usr_intf/pncconf/pncconf.glade:14660 +#: src/emc/usr_intf/pncconf/pncconf.glade:14712 +#: src/emc/usr_intf/pncconf/pncconf.glade:15539 +#: src/emc/usr_intf/pncconf/pncconf.glade:15591 +#: src/emc/usr_intf/pncconf/pncconf.glade:15643 +#: src/emc/usr_intf/pncconf/pncconf.glade:15695 +#: src/emc/usr_intf/pncconf/pncconf.glade:15747 +#: src/emc/usr_intf/pncconf/pncconf.glade:15799 +#: src/emc/usr_intf/pncconf/pncconf.glade:15851 +#: src/emc/usr_intf/pncconf/pncconf.glade:15903 +#: src/emc/usr_intf/pncconf/pncconf.glade:15955 +#: src/emc/usr_intf/pncconf/pncconf.glade:16007 +#: src/emc/usr_intf/pncconf/pncconf.glade:16059 +#: src/emc/usr_intf/pncconf/pncconf.glade:16111 +#: src/emc/usr_intf/pncconf/pncconf.glade:16540 +#: src/emc/usr_intf/pncconf/pncconf.glade:16592 +#: src/emc/usr_intf/pncconf/pncconf.glade:17253 +#: src/emc/usr_intf/pncconf/pncconf.glade:17305 +#: src/emc/usr_intf/pncconf/pncconf.glade:17357 +#: src/emc/usr_intf/pncconf/pncconf.glade:18196 +#: src/emc/usr_intf/pncconf/pncconf.glade:18248 +#: src/emc/usr_intf/pncconf/pncconf.glade:18300 +#: src/emc/usr_intf/pncconf/pncconf.glade:18352 +#: src/emc/usr_intf/pncconf/pncconf.glade:18404 +#: src/emc/usr_intf/pncconf/pncconf.glade:18456 +#: src/emc/usr_intf/pncconf/pncconf.glade:18508 +#: src/emc/usr_intf/pncconf/pncconf.glade:18560 +#: src/emc/usr_intf/pncconf/pncconf.glade:18612 +#: src/emc/usr_intf/pncconf/pncconf.glade:18664 +#: src/emc/usr_intf/pncconf/pncconf.glade:18716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26612 +#: src/emc/usr_intf/pncconf/pncconf.glade:26664 +#: src/emc/usr_intf/pncconf/pncconf.glade:26716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26768 +#: src/emc/usr_intf/pncconf/pncconf.glade:26820 +#: src/emc/usr_intf/pncconf/pncconf.glade:26872 +#: src/emc/usr_intf/pncconf/pncconf.glade:26924 +#: src/emc/usr_intf/pncconf/pncconf.glade:26976 +#: src/emc/usr_intf/pncconf/pncconf.glade:27028 +#: src/emc/usr_intf/pncconf/pncconf.glade:27080 +#: src/emc/usr_intf/pncconf/pncconf.glade:27132 +#: src/emc/usr_intf/pncconf/pncconf.glade:27184 +#: src/emc/usr_intf/pncconf/pncconf.glade:28011 +#: src/emc/usr_intf/pncconf/pncconf.glade:28063 +#: src/emc/usr_intf/pncconf/pncconf.glade:28115 +#: src/emc/usr_intf/pncconf/pncconf.glade:28167 +#: src/emc/usr_intf/pncconf/pncconf.glade:29507 +#: src/emc/usr_intf/pncconf/pncconf.glade:29559 +#: src/emc/usr_intf/pncconf/pncconf.glade:29611 +#: src/emc/usr_intf/pncconf/pncconf.glade:29663 +#: src/emc/usr_intf/pncconf/pncconf.glade:30490 +#: src/emc/usr_intf/pncconf/pncconf.glade:30542 +#: src/emc/usr_intf/pncconf/pncconf.glade:30594 +#: src/emc/usr_intf/pncconf/pncconf.glade:30646 +#: src/emc/usr_intf/pncconf/pncconf.glade:30698 +#: src/emc/usr_intf/pncconf/pncconf.glade:30750 +#: src/emc/usr_intf/pncconf/pncconf.glade:30802 +#: src/emc/usr_intf/pncconf/pncconf.glade:30854 +#: src/emc/usr_intf/pncconf/pncconf.glade:30906 +#: src/emc/usr_intf/pncconf/pncconf.glade:30958 +#: src/emc/usr_intf/pncconf/pncconf.glade:31010 +#: src/emc/usr_intf/pncconf/pncconf.glade:31062 +#: src/emc/usr_intf/pncconf/pncconf.glade:31878 +#: src/emc/usr_intf/pncconf/pncconf.glade:31930 +#: src/emc/usr_intf/pncconf/pncconf.glade:31982 +#: src/emc/usr_intf/pncconf/pncconf.glade:32034 +#: src/emc/usr_intf/pncconf/pncconf.glade:32086 +#: src/emc/usr_intf/pncconf/pncconf.glade:32138 +#: src/emc/usr_intf/pncconf/pncconf.glade:32190 +#: src/emc/usr_intf/pncconf/pncconf.glade:32242 +#: src/emc/usr_intf/pncconf/pncconf.glade:32294 +#: src/emc/usr_intf/pncconf/pncconf.glade:32346 +#: src/emc/usr_intf/pncconf/pncconf.glade:32398 +#: src/emc/usr_intf/pncconf/pncconf.glade:32450 +#: src/emc/usr_intf/pncconf/pncconf.glade:33852 +#: src/emc/usr_intf/pncconf/pncconf.glade:33904 +#: src/emc/usr_intf/pncconf/pncconf.glade:33956 +#: src/emc/usr_intf/pncconf/pncconf.glade:34008 +#: src/emc/usr_intf/pncconf/pncconf.glade:34835 +#: src/emc/usr_intf/pncconf/pncconf.glade:34887 +#: src/emc/usr_intf/pncconf/pncconf.glade:34939 +#: src/emc/usr_intf/pncconf/pncconf.glade:34991 +#: src/emc/usr_intf/pncconf/pncconf.glade:35043 +#: src/emc/usr_intf/pncconf/pncconf.glade:35095 +#: src/emc/usr_intf/pncconf/pncconf.glade:35147 +#: src/emc/usr_intf/pncconf/pncconf.glade:35199 +#: src/emc/usr_intf/pncconf/pncconf.glade:35251 +#: src/emc/usr_intf/pncconf/pncconf.glade:35303 +#: src/emc/usr_intf/pncconf/pncconf.glade:35355 +#: src/emc/usr_intf/pncconf/pncconf.glade:35407 +#: src/emc/usr_intf/pncconf/pncconf.glade:36096 +#: src/emc/usr_intf/pncconf/pncconf.glade:36148 +#: src/emc/usr_intf/pncconf/pncconf.glade:36200 +#: src/emc/usr_intf/pncconf/pncconf.glade:36252 +#: src/emc/usr_intf/pncconf/pncconf.glade:36304 +#: src/emc/usr_intf/pncconf/pncconf.glade:36356 +#: src/emc/usr_intf/pncconf/pncconf.glade:36408 +#: src/emc/usr_intf/pncconf/pncconf.glade:36460 +#: src/emc/usr_intf/pncconf/pncconf.glade:36512 +#: src/emc/usr_intf/pncconf/pncconf.glade:36564 +#: src/emc/usr_intf/pncconf/pncconf.glade:36616 +#: src/emc/usr_intf/pncconf/pncconf.glade:36668 +#: src/emc/usr_intf/pncconf/pncconf.glade:37495 +#: src/emc/usr_intf/pncconf/pncconf.glade:37547 +#: src/emc/usr_intf/pncconf/pncconf.glade:37599 +#: src/emc/usr_intf/pncconf/pncconf.glade:37651 +#: src/emc/usr_intf/pncconf/pncconf.glade:39168 +#: src/emc/usr_intf/pncconf/pncconf.glade:39220 +#: src/emc/usr_intf/pncconf/pncconf.glade:39272 +#: src/emc/usr_intf/pncconf/pncconf.glade:39324 +#: src/emc/usr_intf/pncconf/pncconf.glade:39376 +#: src/emc/usr_intf/pncconf/pncconf.glade:39428 +#: src/emc/usr_intf/pncconf/pncconf.glade:39480 +#: src/emc/usr_intf/pncconf/pncconf.glade:39532 +#: src/emc/usr_intf/pncconf/pncconf.glade:39584 +#: src/emc/usr_intf/pncconf/pncconf.glade:39636 +#: src/emc/usr_intf/pncconf/pncconf.glade:39688 +#: src/emc/usr_intf/pncconf/pncconf.glade:39740 +#: src/emc/usr_intf/pncconf/pncconf.glade:40456 +#: src/emc/usr_intf/pncconf/pncconf.glade:40508 +#: src/emc/usr_intf/pncconf/pncconf.glade:40560 +#: src/emc/usr_intf/pncconf/pncconf.glade:40612 +#: src/emc/usr_intf/pncconf/pncconf.glade:40664 +#: src/emc/usr_intf/pncconf/pncconf.glade:40716 +#: src/emc/usr_intf/pncconf/pncconf.glade:40768 +#: src/emc/usr_intf/pncconf/pncconf.glade:40820 +#: src/emc/usr_intf/pncconf/pncconf.glade:40872 +#: src/emc/usr_intf/pncconf/pncconf.glade:40924 +#: src/emc/usr_intf/pncconf/pncconf.glade:40976 +#: src/emc/usr_intf/pncconf/pncconf.glade:41028 +#: src/emc/usr_intf/pncconf/pncconf.glade:41855 +#: src/emc/usr_intf/pncconf/pncconf.glade:41907 +#: src/emc/usr_intf/pncconf/pncconf.glade:41959 +#: src/emc/usr_intf/pncconf/pncconf.glade:42011 +#: src/emc/usr_intf/pncconf/pncconf.glade:43351 +#: src/emc/usr_intf/pncconf/pncconf.glade:43403 +#: src/emc/usr_intf/pncconf/pncconf.glade:43455 +#: src/emc/usr_intf/pncconf/pncconf.glade:43507 +#: src/emc/usr_intf/pncconf/pncconf.glade:44334 +#: src/emc/usr_intf/pncconf/pncconf.glade:44386 +#: src/emc/usr_intf/pncconf/pncconf.glade:44438 +#: src/emc/usr_intf/pncconf/pncconf.glade:44490 +#: src/emc/usr_intf/pncconf/pncconf.glade:44542 +#: src/emc/usr_intf/pncconf/pncconf.glade:44594 +#: src/emc/usr_intf/pncconf/pncconf.glade:44646 +#: src/emc/usr_intf/pncconf/pncconf.glade:44698 +#: src/emc/usr_intf/pncconf/pncconf.glade:44750 +#: src/emc/usr_intf/pncconf/pncconf.glade:44802 +#: src/emc/usr_intf/pncconf/pncconf.glade:44854 +#: src/emc/usr_intf/pncconf/pncconf.glade:44906 +#: src/emc/usr_intf/pncconf/pncconf.glade:45711 +#: src/emc/usr_intf/pncconf/pncconf.glade:45763 +#: src/emc/usr_intf/pncconf/pncconf.glade:45815 +#: src/emc/usr_intf/pncconf/pncconf.glade:45867 +#: src/emc/usr_intf/pncconf/pncconf.glade:45919 +#: src/emc/usr_intf/pncconf/pncconf.glade:45971 +#: src/emc/usr_intf/pncconf/pncconf.glade:46023 +#: src/emc/usr_intf/pncconf/pncconf.glade:46075 +#: src/emc/usr_intf/pncconf/pncconf.glade:46127 +#: src/emc/usr_intf/pncconf/pncconf.glade:46179 +#: src/emc/usr_intf/pncconf/pncconf.glade:46231 +#: src/emc/usr_intf/pncconf/pncconf.glade:46283 +#: src/emc/usr_intf/pncconf/pncconf.glade:47379 +#: src/emc/usr_intf/pncconf/pncconf.glade:47431 +#: src/emc/usr_intf/pncconf/pncconf.glade:47483 +#: src/emc/usr_intf/pncconf/pncconf.glade:47535 +#: src/emc/usr_intf/pncconf/pncconf.glade:47587 +#: src/emc/usr_intf/pncconf/pncconf.glade:47639 +#: src/emc/usr_intf/pncconf/pncconf.glade:47691 +#: src/emc/usr_intf/pncconf/pncconf.glade:47743 +#: src/emc/usr_intf/pncconf/pncconf.glade:47795 +#: src/emc/usr_intf/pncconf/pncconf.glade:47847 +#: src/emc/usr_intf/pncconf/pncconf.glade:47899 +#: src/emc/usr_intf/pncconf/pncconf.glade:47951 +#: src/emc/usr_intf/pncconf/pncconf.glade:48778 +#: src/emc/usr_intf/pncconf/pncconf.glade:48830 +#: src/emc/usr_intf/pncconf/pncconf.glade:48882 +#: src/emc/usr_intf/pncconf/pncconf.glade:48934 +#: src/emc/usr_intf/pncconf/pncconf.glade:50274 +#: src/emc/usr_intf/pncconf/pncconf.glade:50326 +#: src/emc/usr_intf/pncconf/pncconf.glade:50378 +#: src/emc/usr_intf/pncconf/pncconf.glade:50430 +#: src/emc/usr_intf/pncconf/pncconf.glade:51257 +#: src/emc/usr_intf/pncconf/pncconf.glade:51309 +#: src/emc/usr_intf/pncconf/pncconf.glade:51361 +#: src/emc/usr_intf/pncconf/pncconf.glade:51413 +#: src/emc/usr_intf/pncconf/pncconf.glade:51465 +#: src/emc/usr_intf/pncconf/pncconf.glade:51517 +#: src/emc/usr_intf/pncconf/pncconf.glade:51569 +#: src/emc/usr_intf/pncconf/pncconf.glade:51621 +#: src/emc/usr_intf/pncconf/pncconf.glade:51673 +#: src/emc/usr_intf/pncconf/pncconf.glade:51725 +#: src/emc/usr_intf/pncconf/pncconf.glade:51777 +#: src/emc/usr_intf/pncconf/pncconf.glade:51829 +#: src/emc/usr_intf/pncconf/pncconf.glade:52634 +#: src/emc/usr_intf/pncconf/pncconf.glade:52686 +#: src/emc/usr_intf/pncconf/pncconf.glade:52738 +#: src/emc/usr_intf/pncconf/pncconf.glade:52790 +#: src/emc/usr_intf/pncconf/pncconf.glade:52842 +#: src/emc/usr_intf/pncconf/pncconf.glade:52894 +#: src/emc/usr_intf/pncconf/pncconf.glade:52946 +#: src/emc/usr_intf/pncconf/pncconf.glade:52998 +#: src/emc/usr_intf/pncconf/pncconf.glade:53050 +#: src/emc/usr_intf/pncconf/pncconf.glade:53102 +#: src/emc/usr_intf/pncconf/pncconf.glade:53154 +#: src/emc/usr_intf/pncconf/pncconf.glade:53206 +#: src/emc/usr_intf/pncconf/pncconf.glade:54302 +#: src/emc/usr_intf/pncconf/pncconf.glade:54354 +#: src/emc/usr_intf/pncconf/pncconf.glade:54406 +#: src/emc/usr_intf/pncconf/pncconf.glade:54458 +#: src/emc/usr_intf/pncconf/pncconf.glade:54510 +#: src/emc/usr_intf/pncconf/pncconf.glade:54562 +#: src/emc/usr_intf/pncconf/pncconf.glade:54614 +#: src/emc/usr_intf/pncconf/pncconf.glade:54666 +#: src/emc/usr_intf/pncconf/pncconf.glade:54718 +#: src/emc/usr_intf/pncconf/pncconf.glade:54770 +#: src/emc/usr_intf/pncconf/pncconf.glade:54822 +#: src/emc/usr_intf/pncconf/pncconf.glade:54874 +#: src/emc/usr_intf/pncconf/pncconf.glade:55701 +#: src/emc/usr_intf/pncconf/pncconf.glade:55753 +#: src/emc/usr_intf/pncconf/pncconf.glade:55805 +#: src/emc/usr_intf/pncconf/pncconf.glade:55857 +#: src/emc/usr_intf/pncconf/pncconf.glade:57197 +#: src/emc/usr_intf/pncconf/pncconf.glade:57249 +#: src/emc/usr_intf/pncconf/pncconf.glade:57301 +#: src/emc/usr_intf/pncconf/pncconf.glade:57353 +#: src/emc/usr_intf/pncconf/pncconf.glade:58180 +#: src/emc/usr_intf/pncconf/pncconf.glade:58232 +#: src/emc/usr_intf/pncconf/pncconf.glade:58284 +#: src/emc/usr_intf/pncconf/pncconf.glade:58336 +#: src/emc/usr_intf/pncconf/pncconf.glade:58388 +#: src/emc/usr_intf/pncconf/pncconf.glade:58440 +#: src/emc/usr_intf/pncconf/pncconf.glade:58492 +#: src/emc/usr_intf/pncconf/pncconf.glade:58544 +#: src/emc/usr_intf/pncconf/pncconf.glade:58596 +#: src/emc/usr_intf/pncconf/pncconf.glade:58648 +#: src/emc/usr_intf/pncconf/pncconf.glade:58700 +#: src/emc/usr_intf/pncconf/pncconf.glade:58752 +#: src/emc/usr_intf/pncconf/pncconf.glade:59557 +#: src/emc/usr_intf/pncconf/pncconf.glade:59609 +#: src/emc/usr_intf/pncconf/pncconf.glade:59661 +#: src/emc/usr_intf/pncconf/pncconf.glade:59713 +#: src/emc/usr_intf/pncconf/pncconf.glade:59765 +#: src/emc/usr_intf/pncconf/pncconf.glade:59817 +#: src/emc/usr_intf/pncconf/pncconf.glade:59869 +#: src/emc/usr_intf/pncconf/pncconf.glade:59921 +#: src/emc/usr_intf/pncconf/pncconf.glade:59973 +#: src/emc/usr_intf/pncconf/pncconf.glade:60025 +#: src/emc/usr_intf/pncconf/pncconf.glade:60077 +#: src/emc/usr_intf/pncconf/pncconf.glade:60129 +msgid "" +"ESTOP IN\n" +"Spindle PPR\n" +"Spindle A \n" +"Spindle B \n" +"Home X \n" +"Home Y \n" +"Home Z\n" +"Home A\n" +"Minimum Limit + Home X \n" +"Minimum Limit + Home Y \n" +"Minimum Limit + Home Z \n" +"Minimum Limit + Home A\n" +"Maximum Limit + Home X \n" +"Maximum Limit + Home Y \n" +"Maximum Limit + Home Z \n" +"Maximum Limit + Home A\n" +"Both Limit + Home X \n" +"Both Limit + Home Y \n" +"Both Limit + Home Z \n" +"Both Limit + Home A\n" +"Minimum Limit X \n" +"Minimum Limit Y \n" +"Minimum Limit Z \n" +"Minimum Limit A\n" +"Maximum Limit X \n" +"Maximum Limit Y \n" +"Maximum Limit Z \n" +"Maximum Limit A\n" +"Both Limit X \n" +"Both Limit Y \n" +"Both Limit Z \n" +"Both Limit A\n" +"All limits\n" +"All home\n" +"Unused" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2073 -#: src/emc/usr_intf/pncconf/pncconf.glade:2559 -#: src/emc/usr_intf/pncconf/pncconf.glade:3300 -#: src/emc/usr_intf/pncconf/pncconf.glade:4181 -#: src/emc/usr_intf/pncconf/pncconf.glade:5062 -msgid " abc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8825 +#: src/emc/usr_intf/pncconf/pncconf.glade:9081 +#: src/emc/usr_intf/pncconf/pncconf.glade:13563 +#: src/emc/usr_intf/pncconf/pncconf.glade:13818 +#: src/emc/usr_intf/pncconf/pncconf.glade:16164 +#: src/emc/usr_intf/pncconf/pncconf.glade:16410 +#: src/emc/usr_intf/pncconf/pncconf.glade:18769 +#: src/emc/usr_intf/pncconf/pncconf.glade:19024 +#: src/emc/usr_intf/pncconf/pncconf.glade:20571 +#: src/emc/usr_intf/pncconf/pncconf.glade:20820 +#: src/emc/usr_intf/pncconf/pncconf.glade:20949 +#: src/emc/usr_intf/pncconf/pncconf.glade:21199 +#: src/emc/usr_intf/pncconf/pncconf.glade:22745 +#: src/emc/usr_intf/pncconf/pncconf.glade:22995 +#: src/emc/usr_intf/pncconf/pncconf.glade:24541 +#: src/emc/usr_intf/pncconf/pncconf.glade:24791 +#: src/emc/usr_intf/pncconf/pncconf.glade:26353 +#: src/emc/usr_intf/pncconf/pncconf.glade:26600 +#: src/emc/usr_intf/pncconf/pncconf.glade:31115 +#: src/emc/usr_intf/pncconf/pncconf.glade:31361 +#: src/emc/usr_intf/pncconf/pncconf.glade:31621 +#: src/emc/usr_intf/pncconf/pncconf.glade:35460 +#: src/emc/usr_intf/pncconf/pncconf.glade:35706 +#: src/emc/usr_intf/pncconf/pncconf.glade:35837 +#: src/emc/usr_intf/pncconf/pncconf.glade:36084 +#: src/emc/usr_intf/pncconf/pncconf.glade:40037 +#: src/emc/usr_intf/pncconf/pncconf.glade:40197 +#: src/emc/usr_intf/pncconf/pncconf.glade:40444 +#: src/emc/usr_intf/pncconf/pncconf.glade:44959 +#: src/emc/usr_intf/pncconf/pncconf.glade:45205 +#: src/emc/usr_intf/pncconf/pncconf.glade:45454 +#: src/emc/usr_intf/pncconf/pncconf.glade:47120 +#: src/emc/usr_intf/pncconf/pncconf.glade:47367 +#: src/emc/usr_intf/pncconf/pncconf.glade:51882 +#: src/emc/usr_intf/pncconf/pncconf.glade:52128 +#: src/emc/usr_intf/pncconf/pncconf.glade:52377 +#: src/emc/usr_intf/pncconf/pncconf.glade:54043 +#: src/emc/usr_intf/pncconf/pncconf.glade:54290 +#: src/emc/usr_intf/pncconf/pncconf.glade:58805 +#: src/emc/usr_intf/pncconf/pncconf.glade:59051 +#: src/emc/usr_intf/pncconf/pncconf.glade:59300 +msgid "Pin Type" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2086 -#: src/emc/usr_intf/pncconf/pncconf.glade:3422 -#: src/emc/usr_intf/pncconf/pncconf.glade:4303 -#: src/emc/usr_intf/pncconf/pncconf.glade:5184 -msgid " ab)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8838 +#: src/emc/usr_intf/pncconf/pncconf.glade:8900 +#: src/emc/usr_intf/pncconf/pncconf.glade:13743 +#: src/emc/usr_intf/pncconf/pncconf.glade:13806 +#: src/emc/usr_intf/pncconf/pncconf.glade:16335 +#: src/emc/usr_intf/pncconf/pncconf.glade:16398 +#: src/emc/usr_intf/pncconf/pncconf.glade:18949 +#: src/emc/usr_intf/pncconf/pncconf.glade:19012 +#: src/emc/usr_intf/pncconf/pncconf.glade:20751 +#: src/emc/usr_intf/pncconf/pncconf.glade:20808 +#: src/emc/usr_intf/pncconf/pncconf.glade:20962 +#: src/emc/usr_intf/pncconf/pncconf.glade:21018 +#: src/emc/usr_intf/pncconf/pncconf.glade:22758 +#: src/emc/usr_intf/pncconf/pncconf.glade:22814 +#: src/emc/usr_intf/pncconf/pncconf.glade:24554 +#: src/emc/usr_intf/pncconf/pncconf.glade:24610 +#: src/emc/usr_intf/pncconf/pncconf.glade:26366 +#: src/emc/usr_intf/pncconf/pncconf.glade:26428 +#: src/emc/usr_intf/pncconf/pncconf.glade:31286 +#: src/emc/usr_intf/pncconf/pncconf.glade:31349 +#: src/emc/usr_intf/pncconf/pncconf.glade:31634 +#: src/emc/usr_intf/pncconf/pncconf.glade:35631 +#: src/emc/usr_intf/pncconf/pncconf.glade:35694 +#: src/emc/usr_intf/pncconf/pncconf.glade:35850 +#: src/emc/usr_intf/pncconf/pncconf.glade:35912 +#: src/emc/usr_intf/pncconf/pncconf.glade:40025 +#: src/emc/usr_intf/pncconf/pncconf.glade:40210 +#: src/emc/usr_intf/pncconf/pncconf.glade:40272 +#: src/emc/usr_intf/pncconf/pncconf.glade:45130 +#: src/emc/usr_intf/pncconf/pncconf.glade:45193 +#: src/emc/usr_intf/pncconf/pncconf.glade:45467 +#: src/emc/usr_intf/pncconf/pncconf.glade:47133 +#: src/emc/usr_intf/pncconf/pncconf.glade:47195 +#: src/emc/usr_intf/pncconf/pncconf.glade:52053 +#: src/emc/usr_intf/pncconf/pncconf.glade:52116 +#: src/emc/usr_intf/pncconf/pncconf.glade:52390 +#: src/emc/usr_intf/pncconf/pncconf.glade:54056 +#: src/emc/usr_intf/pncconf/pncconf.glade:54118 +#: src/emc/usr_intf/pncconf/pncconf.glade:58976 +#: src/emc/usr_intf/pncconf/pncconf.glade:59039 +#: src/emc/usr_intf/pncconf/pncconf.glade:59313 +msgid "Inv" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2372 -#: src/emc/usr_intf/pncconf/pncconf.glade:3321 -#: src/emc/usr_intf/pncconf/pncconf.glade:4202 -#: src/emc/usr_intf/pncconf/pncconf.glade:5083 -msgid " ac)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8867 +#: src/emc/usr_intf/pncconf/pncconf.glade:10731 +#: src/emc/usr_intf/pncconf/pncconf.glade:10751 +#: src/emc/usr_intf/pncconf/pncconf.glade:10771 +#: src/emc/usr_intf/pncconf/pncconf.glade:10791 +#: src/emc/usr_intf/pncconf/pncconf.glade:10811 +#: src/emc/usr_intf/pncconf/pncconf.glade:10831 +#: src/emc/usr_intf/pncconf/pncconf.glade:10851 +#: src/emc/usr_intf/pncconf/pncconf.glade:10871 +#: src/emc/usr_intf/pncconf/pncconf.glade:10891 +#: src/emc/usr_intf/pncconf/pncconf.glade:10911 +#: src/emc/usr_intf/pncconf/pncconf.glade:10931 +#: src/emc/usr_intf/pncconf/pncconf.glade:10951 +#: src/emc/usr_intf/pncconf/pncconf.glade:10971 +#: src/emc/usr_intf/pncconf/pncconf.glade:10991 +#: src/emc/usr_intf/pncconf/pncconf.glade:11011 +#: src/emc/usr_intf/pncconf/pncconf.glade:11031 +#: src/emc/usr_intf/pncconf/pncconf.glade:11051 +#: src/emc/usr_intf/pncconf/pncconf.glade:11071 +#: src/emc/usr_intf/pncconf/pncconf.glade:11091 +#: src/emc/usr_intf/pncconf/pncconf.glade:11111 +#: src/emc/usr_intf/pncconf/pncconf.glade:11131 +#: src/emc/usr_intf/pncconf/pncconf.glade:11151 +#: src/emc/usr_intf/pncconf/pncconf.glade:11171 +#: src/emc/usr_intf/pncconf/pncconf.glade:11465 +#: src/emc/usr_intf/pncconf/pncconf.glade:11485 +#: src/emc/usr_intf/pncconf/pncconf.glade:11505 +#: src/emc/usr_intf/pncconf/pncconf.glade:11525 +#: src/emc/usr_intf/pncconf/pncconf.glade:11545 +#: src/emc/usr_intf/pncconf/pncconf.glade:11565 +#: src/emc/usr_intf/pncconf/pncconf.glade:11585 +#: src/emc/usr_intf/pncconf/pncconf.glade:11605 +#: src/emc/usr_intf/pncconf/pncconf.glade:11625 +#: src/emc/usr_intf/pncconf/pncconf.glade:11645 +#: src/emc/usr_intf/pncconf/pncconf.glade:11665 +#: src/emc/usr_intf/pncconf/pncconf.glade:11685 +#: src/emc/usr_intf/pncconf/pncconf.glade:11705 +#: src/emc/usr_intf/pncconf/pncconf.glade:11725 +#: src/emc/usr_intf/pncconf/pncconf.glade:11745 +#: src/emc/usr_intf/pncconf/pncconf.glade:11765 +#: src/emc/usr_intf/pncconf/pncconf.glade:11785 +#: src/emc/usr_intf/pncconf/pncconf.glade:11805 +#: src/emc/usr_intf/pncconf/pncconf.glade:11825 +#: src/emc/usr_intf/pncconf/pncconf.glade:11845 +#: src/emc/usr_intf/pncconf/pncconf.glade:11865 +#: src/emc/usr_intf/pncconf/pncconf.glade:11885 +#: src/emc/usr_intf/pncconf/pncconf.glade:11905 +#: src/emc/usr_intf/pncconf/pncconf.glade:13768 +#: src/emc/usr_intf/pncconf/pncconf.glade:13974 +#: src/emc/usr_intf/pncconf/pncconf.glade:13994 +#: src/emc/usr_intf/pncconf/pncconf.glade:14014 +#: src/emc/usr_intf/pncconf/pncconf.glade:14034 +#: src/emc/usr_intf/pncconf/pncconf.glade:14054 +#: src/emc/usr_intf/pncconf/pncconf.glade:14074 +#: src/emc/usr_intf/pncconf/pncconf.glade:14094 +#: src/emc/usr_intf/pncconf/pncconf.glade:14114 +#: src/emc/usr_intf/pncconf/pncconf.glade:14134 +#: src/emc/usr_intf/pncconf/pncconf.glade:14154 +#: src/emc/usr_intf/pncconf/pncconf.glade:14174 +#: src/emc/usr_intf/pncconf/pncconf.glade:14194 +#: src/emc/usr_intf/pncconf/pncconf.glade:14214 +#: src/emc/usr_intf/pncconf/pncconf.glade:14234 +#: src/emc/usr_intf/pncconf/pncconf.glade:14254 +#: src/emc/usr_intf/pncconf/pncconf.glade:14274 +#: src/emc/usr_intf/pncconf/pncconf.glade:14294 +#: src/emc/usr_intf/pncconf/pncconf.glade:14314 +#: src/emc/usr_intf/pncconf/pncconf.glade:14334 +#: src/emc/usr_intf/pncconf/pncconf.glade:14354 +#: src/emc/usr_intf/pncconf/pncconf.glade:14374 +#: src/emc/usr_intf/pncconf/pncconf.glade:14394 +#: src/emc/usr_intf/pncconf/pncconf.glade:14414 +#: src/emc/usr_intf/pncconf/pncconf.glade:16360 +#: src/emc/usr_intf/pncconf/pncconf.glade:16670 +#: src/emc/usr_intf/pncconf/pncconf.glade:16690 +#: src/emc/usr_intf/pncconf/pncconf.glade:16710 +#: src/emc/usr_intf/pncconf/pncconf.glade:16730 +#: src/emc/usr_intf/pncconf/pncconf.glade:16750 +#: src/emc/usr_intf/pncconf/pncconf.glade:16770 +#: src/emc/usr_intf/pncconf/pncconf.glade:16790 +#: src/emc/usr_intf/pncconf/pncconf.glade:16810 +#: src/emc/usr_intf/pncconf/pncconf.glade:16830 +#: src/emc/usr_intf/pncconf/pncconf.glade:16850 +#: src/emc/usr_intf/pncconf/pncconf.glade:16870 +#: src/emc/usr_intf/pncconf/pncconf.glade:16890 +#: src/emc/usr_intf/pncconf/pncconf.glade:16910 +#: src/emc/usr_intf/pncconf/pncconf.glade:16930 +#: src/emc/usr_intf/pncconf/pncconf.glade:16950 +#: src/emc/usr_intf/pncconf/pncconf.glade:16970 +#: src/emc/usr_intf/pncconf/pncconf.glade:16990 +#: src/emc/usr_intf/pncconf/pncconf.glade:17010 +#: src/emc/usr_intf/pncconf/pncconf.glade:17030 +#: src/emc/usr_intf/pncconf/pncconf.glade:17050 +#: src/emc/usr_intf/pncconf/pncconf.glade:17070 +#: src/emc/usr_intf/pncconf/pncconf.glade:17090 +#: src/emc/usr_intf/pncconf/pncconf.glade:17110 +#: src/emc/usr_intf/pncconf/pncconf.glade:18974 +#: src/emc/usr_intf/pncconf/pncconf.glade:26395 +#: src/emc/usr_intf/pncconf/pncconf.glade:28311 +#: src/emc/usr_intf/pncconf/pncconf.glade:28331 +#: src/emc/usr_intf/pncconf/pncconf.glade:28351 +#: src/emc/usr_intf/pncconf/pncconf.glade:28371 +#: src/emc/usr_intf/pncconf/pncconf.glade:28391 +#: src/emc/usr_intf/pncconf/pncconf.glade:28411 +#: src/emc/usr_intf/pncconf/pncconf.glade:28431 +#: src/emc/usr_intf/pncconf/pncconf.glade:28451 +#: src/emc/usr_intf/pncconf/pncconf.glade:28471 +#: src/emc/usr_intf/pncconf/pncconf.glade:28491 +#: src/emc/usr_intf/pncconf/pncconf.glade:28511 +#: src/emc/usr_intf/pncconf/pncconf.glade:28531 +#: src/emc/usr_intf/pncconf/pncconf.glade:28551 +#: src/emc/usr_intf/pncconf/pncconf.glade:28571 +#: src/emc/usr_intf/pncconf/pncconf.glade:28591 +#: src/emc/usr_intf/pncconf/pncconf.glade:28611 +#: src/emc/usr_intf/pncconf/pncconf.glade:28631 +#: src/emc/usr_intf/pncconf/pncconf.glade:28651 +#: src/emc/usr_intf/pncconf/pncconf.glade:28671 +#: src/emc/usr_intf/pncconf/pncconf.glade:28691 +#: src/emc/usr_intf/pncconf/pncconf.glade:28711 +#: src/emc/usr_intf/pncconf/pncconf.glade:28731 +#: src/emc/usr_intf/pncconf/pncconf.glade:28751 +#: src/emc/usr_intf/pncconf/pncconf.glade:28942 +#: src/emc/usr_intf/pncconf/pncconf.glade:28962 +#: src/emc/usr_intf/pncconf/pncconf.glade:28982 +#: src/emc/usr_intf/pncconf/pncconf.glade:29002 +#: src/emc/usr_intf/pncconf/pncconf.glade:29022 +#: src/emc/usr_intf/pncconf/pncconf.glade:29042 +#: src/emc/usr_intf/pncconf/pncconf.glade:29062 +#: src/emc/usr_intf/pncconf/pncconf.glade:29082 +#: src/emc/usr_intf/pncconf/pncconf.glade:29102 +#: src/emc/usr_intf/pncconf/pncconf.glade:29122 +#: src/emc/usr_intf/pncconf/pncconf.glade:29142 +#: src/emc/usr_intf/pncconf/pncconf.glade:29162 +#: src/emc/usr_intf/pncconf/pncconf.glade:29182 +#: src/emc/usr_intf/pncconf/pncconf.glade:29202 +#: src/emc/usr_intf/pncconf/pncconf.glade:29222 +#: src/emc/usr_intf/pncconf/pncconf.glade:29242 +#: src/emc/usr_intf/pncconf/pncconf.glade:29262 +#: src/emc/usr_intf/pncconf/pncconf.glade:29282 +#: src/emc/usr_intf/pncconf/pncconf.glade:29302 +#: src/emc/usr_intf/pncconf/pncconf.glade:29322 +#: src/emc/usr_intf/pncconf/pncconf.glade:29342 +#: src/emc/usr_intf/pncconf/pncconf.glade:29362 +#: src/emc/usr_intf/pncconf/pncconf.glade:29382 +#: src/emc/usr_intf/pncconf/pncconf.glade:31311 +#: src/emc/usr_intf/pncconf/pncconf.glade:31663 +#: src/emc/usr_intf/pncconf/pncconf.glade:32881 +#: src/emc/usr_intf/pncconf/pncconf.glade:32901 +#: src/emc/usr_intf/pncconf/pncconf.glade:32921 +#: src/emc/usr_intf/pncconf/pncconf.glade:32941 +#: src/emc/usr_intf/pncconf/pncconf.glade:32961 +#: src/emc/usr_intf/pncconf/pncconf.glade:32981 +#: src/emc/usr_intf/pncconf/pncconf.glade:33001 +#: src/emc/usr_intf/pncconf/pncconf.glade:33021 +#: src/emc/usr_intf/pncconf/pncconf.glade:33041 +#: src/emc/usr_intf/pncconf/pncconf.glade:33061 +#: src/emc/usr_intf/pncconf/pncconf.glade:33081 +#: src/emc/usr_intf/pncconf/pncconf.glade:33300 +#: src/emc/usr_intf/pncconf/pncconf.glade:33320 +#: src/emc/usr_intf/pncconf/pncconf.glade:33340 +#: src/emc/usr_intf/pncconf/pncconf.glade:33360 +#: src/emc/usr_intf/pncconf/pncconf.glade:33380 +#: src/emc/usr_intf/pncconf/pncconf.glade:33400 +#: src/emc/usr_intf/pncconf/pncconf.glade:33420 +#: src/emc/usr_intf/pncconf/pncconf.glade:33440 +#: src/emc/usr_intf/pncconf/pncconf.glade:33460 +#: src/emc/usr_intf/pncconf/pncconf.glade:33480 +#: src/emc/usr_intf/pncconf/pncconf.glade:33500 +#: src/emc/usr_intf/pncconf/pncconf.glade:33520 +#: src/emc/usr_intf/pncconf/pncconf.glade:33540 +#: src/emc/usr_intf/pncconf/pncconf.glade:33560 +#: src/emc/usr_intf/pncconf/pncconf.glade:33580 +#: src/emc/usr_intf/pncconf/pncconf.glade:33600 +#: src/emc/usr_intf/pncconf/pncconf.glade:33620 +#: src/emc/usr_intf/pncconf/pncconf.glade:33640 +#: src/emc/usr_intf/pncconf/pncconf.glade:33660 +#: src/emc/usr_intf/pncconf/pncconf.glade:33680 +#: src/emc/usr_intf/pncconf/pncconf.glade:33700 +#: src/emc/usr_intf/pncconf/pncconf.glade:33720 +#: src/emc/usr_intf/pncconf/pncconf.glade:33740 +#: src/emc/usr_intf/pncconf/pncconf.glade:35656 +#: src/emc/usr_intf/pncconf/pncconf.glade:35879 +#: src/emc/usr_intf/pncconf/pncconf.glade:37808 +#: src/emc/usr_intf/pncconf/pncconf.glade:37828 +#: src/emc/usr_intf/pncconf/pncconf.glade:37848 +#: src/emc/usr_intf/pncconf/pncconf.glade:37868 +#: src/emc/usr_intf/pncconf/pncconf.glade:37888 +#: src/emc/usr_intf/pncconf/pncconf.glade:37908 +#: src/emc/usr_intf/pncconf/pncconf.glade:37928 +#: src/emc/usr_intf/pncconf/pncconf.glade:37948 +#: src/emc/usr_intf/pncconf/pncconf.glade:37968 +#: src/emc/usr_intf/pncconf/pncconf.glade:37988 +#: src/emc/usr_intf/pncconf/pncconf.glade:38008 +#: src/emc/usr_intf/pncconf/pncconf.glade:38028 +#: src/emc/usr_intf/pncconf/pncconf.glade:38048 +#: src/emc/usr_intf/pncconf/pncconf.glade:38068 +#: src/emc/usr_intf/pncconf/pncconf.glade:38088 +#: src/emc/usr_intf/pncconf/pncconf.glade:38108 +#: src/emc/usr_intf/pncconf/pncconf.glade:38128 +#: src/emc/usr_intf/pncconf/pncconf.glade:38148 +#: src/emc/usr_intf/pncconf/pncconf.glade:38168 +#: src/emc/usr_intf/pncconf/pncconf.glade:38188 +#: src/emc/usr_intf/pncconf/pncconf.glade:38208 +#: src/emc/usr_intf/pncconf/pncconf.glade:38228 +#: src/emc/usr_intf/pncconf/pncconf.glade:38248 +#: src/emc/usr_intf/pncconf/pncconf.glade:38557 +#: src/emc/usr_intf/pncconf/pncconf.glade:38577 +#: src/emc/usr_intf/pncconf/pncconf.glade:38597 +#: src/emc/usr_intf/pncconf/pncconf.glade:38617 +#: src/emc/usr_intf/pncconf/pncconf.glade:38637 +#: src/emc/usr_intf/pncconf/pncconf.glade:38657 +#: src/emc/usr_intf/pncconf/pncconf.glade:38677 +#: src/emc/usr_intf/pncconf/pncconf.glade:38697 +#: src/emc/usr_intf/pncconf/pncconf.glade:38717 +#: src/emc/usr_intf/pncconf/pncconf.glade:38737 +#: src/emc/usr_intf/pncconf/pncconf.glade:38757 +#: src/emc/usr_intf/pncconf/pncconf.glade:39987 +#: src/emc/usr_intf/pncconf/pncconf.glade:40239 +#: src/emc/usr_intf/pncconf/pncconf.glade:42155 +#: src/emc/usr_intf/pncconf/pncconf.glade:42175 +#: src/emc/usr_intf/pncconf/pncconf.glade:42195 +#: src/emc/usr_intf/pncconf/pncconf.glade:42215 +#: src/emc/usr_intf/pncconf/pncconf.glade:42235 +#: src/emc/usr_intf/pncconf/pncconf.glade:42255 +#: src/emc/usr_intf/pncconf/pncconf.glade:42275 +#: src/emc/usr_intf/pncconf/pncconf.glade:42295 +#: src/emc/usr_intf/pncconf/pncconf.glade:42315 +#: src/emc/usr_intf/pncconf/pncconf.glade:42335 +#: src/emc/usr_intf/pncconf/pncconf.glade:42355 +#: src/emc/usr_intf/pncconf/pncconf.glade:42375 +#: src/emc/usr_intf/pncconf/pncconf.glade:42395 +#: src/emc/usr_intf/pncconf/pncconf.glade:42415 +#: src/emc/usr_intf/pncconf/pncconf.glade:42435 +#: src/emc/usr_intf/pncconf/pncconf.glade:42455 +#: src/emc/usr_intf/pncconf/pncconf.glade:42475 +#: src/emc/usr_intf/pncconf/pncconf.glade:42495 +#: src/emc/usr_intf/pncconf/pncconf.glade:42515 +#: src/emc/usr_intf/pncconf/pncconf.glade:42535 +#: src/emc/usr_intf/pncconf/pncconf.glade:42555 +#: src/emc/usr_intf/pncconf/pncconf.glade:42575 +#: src/emc/usr_intf/pncconf/pncconf.glade:42595 +#: src/emc/usr_intf/pncconf/pncconf.glade:42786 +#: src/emc/usr_intf/pncconf/pncconf.glade:42806 +#: src/emc/usr_intf/pncconf/pncconf.glade:42826 +#: src/emc/usr_intf/pncconf/pncconf.glade:42846 +#: src/emc/usr_intf/pncconf/pncconf.glade:42866 +#: src/emc/usr_intf/pncconf/pncconf.glade:42886 +#: src/emc/usr_intf/pncconf/pncconf.glade:42906 +#: src/emc/usr_intf/pncconf/pncconf.glade:42926 +#: src/emc/usr_intf/pncconf/pncconf.glade:42946 +#: src/emc/usr_intf/pncconf/pncconf.glade:42966 +#: src/emc/usr_intf/pncconf/pncconf.glade:42986 +#: src/emc/usr_intf/pncconf/pncconf.glade:43006 +#: src/emc/usr_intf/pncconf/pncconf.glade:43026 +#: src/emc/usr_intf/pncconf/pncconf.glade:43046 +#: src/emc/usr_intf/pncconf/pncconf.glade:43066 +#: src/emc/usr_intf/pncconf/pncconf.glade:43086 +#: src/emc/usr_intf/pncconf/pncconf.glade:43106 +#: src/emc/usr_intf/pncconf/pncconf.glade:43126 +#: src/emc/usr_intf/pncconf/pncconf.glade:43146 +#: src/emc/usr_intf/pncconf/pncconf.glade:43166 +#: src/emc/usr_intf/pncconf/pncconf.glade:43186 +#: src/emc/usr_intf/pncconf/pncconf.glade:43206 +#: src/emc/usr_intf/pncconf/pncconf.glade:43226 +#: src/emc/usr_intf/pncconf/pncconf.glade:45155 +#: src/emc/usr_intf/pncconf/pncconf.glade:45496 +#: src/emc/usr_intf/pncconf/pncconf.glade:46726 +#: src/emc/usr_intf/pncconf/pncconf.glade:46746 +#: src/emc/usr_intf/pncconf/pncconf.glade:46766 +#: src/emc/usr_intf/pncconf/pncconf.glade:46786 +#: src/emc/usr_intf/pncconf/pncconf.glade:46806 +#: src/emc/usr_intf/pncconf/pncconf.glade:46826 +#: src/emc/usr_intf/pncconf/pncconf.glade:46846 +#: src/emc/usr_intf/pncconf/pncconf.glade:46866 +#: src/emc/usr_intf/pncconf/pncconf.glade:46886 +#: src/emc/usr_intf/pncconf/pncconf.glade:46906 +#: src/emc/usr_intf/pncconf/pncconf.glade:46926 +#: src/emc/usr_intf/pncconf/pncconf.glade:47162 +#: src/emc/usr_intf/pncconf/pncconf.glade:49078 +#: src/emc/usr_intf/pncconf/pncconf.glade:49098 +#: src/emc/usr_intf/pncconf/pncconf.glade:49118 +#: src/emc/usr_intf/pncconf/pncconf.glade:49138 +#: src/emc/usr_intf/pncconf/pncconf.glade:49158 +#: src/emc/usr_intf/pncconf/pncconf.glade:49178 +#: src/emc/usr_intf/pncconf/pncconf.glade:49198 +#: src/emc/usr_intf/pncconf/pncconf.glade:49218 +#: src/emc/usr_intf/pncconf/pncconf.glade:49238 +#: src/emc/usr_intf/pncconf/pncconf.glade:49258 +#: src/emc/usr_intf/pncconf/pncconf.glade:49278 +#: src/emc/usr_intf/pncconf/pncconf.glade:49298 +#: src/emc/usr_intf/pncconf/pncconf.glade:49318 +#: src/emc/usr_intf/pncconf/pncconf.glade:49338 +#: src/emc/usr_intf/pncconf/pncconf.glade:49358 +#: src/emc/usr_intf/pncconf/pncconf.glade:49378 +#: src/emc/usr_intf/pncconf/pncconf.glade:49398 +#: src/emc/usr_intf/pncconf/pncconf.glade:49418 +#: src/emc/usr_intf/pncconf/pncconf.glade:49438 +#: src/emc/usr_intf/pncconf/pncconf.glade:49458 +#: src/emc/usr_intf/pncconf/pncconf.glade:49478 +#: src/emc/usr_intf/pncconf/pncconf.glade:49498 +#: src/emc/usr_intf/pncconf/pncconf.glade:49518 +#: src/emc/usr_intf/pncconf/pncconf.glade:49709 +#: src/emc/usr_intf/pncconf/pncconf.glade:49729 +#: src/emc/usr_intf/pncconf/pncconf.glade:49749 +#: src/emc/usr_intf/pncconf/pncconf.glade:49769 +#: src/emc/usr_intf/pncconf/pncconf.glade:49789 +#: src/emc/usr_intf/pncconf/pncconf.glade:49809 +#: src/emc/usr_intf/pncconf/pncconf.glade:49829 +#: src/emc/usr_intf/pncconf/pncconf.glade:49849 +#: src/emc/usr_intf/pncconf/pncconf.glade:49869 +#: src/emc/usr_intf/pncconf/pncconf.glade:49889 +#: src/emc/usr_intf/pncconf/pncconf.glade:49909 +#: src/emc/usr_intf/pncconf/pncconf.glade:49929 +#: src/emc/usr_intf/pncconf/pncconf.glade:49949 +#: src/emc/usr_intf/pncconf/pncconf.glade:49969 +#: src/emc/usr_intf/pncconf/pncconf.glade:49989 +#: src/emc/usr_intf/pncconf/pncconf.glade:50009 +#: src/emc/usr_intf/pncconf/pncconf.glade:50029 +#: src/emc/usr_intf/pncconf/pncconf.glade:50049 +#: src/emc/usr_intf/pncconf/pncconf.glade:50069 +#: src/emc/usr_intf/pncconf/pncconf.glade:50089 +#: src/emc/usr_intf/pncconf/pncconf.glade:50109 +#: src/emc/usr_intf/pncconf/pncconf.glade:50129 +#: src/emc/usr_intf/pncconf/pncconf.glade:50149 +#: src/emc/usr_intf/pncconf/pncconf.glade:52078 +#: src/emc/usr_intf/pncconf/pncconf.glade:52419 +#: src/emc/usr_intf/pncconf/pncconf.glade:53649 +#: src/emc/usr_intf/pncconf/pncconf.glade:53669 +#: src/emc/usr_intf/pncconf/pncconf.glade:53689 +#: src/emc/usr_intf/pncconf/pncconf.glade:53709 +#: src/emc/usr_intf/pncconf/pncconf.glade:53729 +#: src/emc/usr_intf/pncconf/pncconf.glade:53749 +#: src/emc/usr_intf/pncconf/pncconf.glade:53769 +#: src/emc/usr_intf/pncconf/pncconf.glade:53789 +#: src/emc/usr_intf/pncconf/pncconf.glade:53809 +#: src/emc/usr_intf/pncconf/pncconf.glade:53829 +#: src/emc/usr_intf/pncconf/pncconf.glade:53849 +#: src/emc/usr_intf/pncconf/pncconf.glade:54085 +#: src/emc/usr_intf/pncconf/pncconf.glade:56001 +#: src/emc/usr_intf/pncconf/pncconf.glade:56021 +#: src/emc/usr_intf/pncconf/pncconf.glade:56041 +#: src/emc/usr_intf/pncconf/pncconf.glade:56061 +#: src/emc/usr_intf/pncconf/pncconf.glade:56081 +#: src/emc/usr_intf/pncconf/pncconf.glade:56101 +#: src/emc/usr_intf/pncconf/pncconf.glade:56121 +#: src/emc/usr_intf/pncconf/pncconf.glade:56141 +#: src/emc/usr_intf/pncconf/pncconf.glade:56161 +#: src/emc/usr_intf/pncconf/pncconf.glade:56181 +#: src/emc/usr_intf/pncconf/pncconf.glade:56201 +#: src/emc/usr_intf/pncconf/pncconf.glade:56221 +#: src/emc/usr_intf/pncconf/pncconf.glade:56241 +#: src/emc/usr_intf/pncconf/pncconf.glade:56261 +#: src/emc/usr_intf/pncconf/pncconf.glade:56281 +#: src/emc/usr_intf/pncconf/pncconf.glade:56301 +#: src/emc/usr_intf/pncconf/pncconf.glade:56321 +#: src/emc/usr_intf/pncconf/pncconf.glade:56341 +#: src/emc/usr_intf/pncconf/pncconf.glade:56361 +#: src/emc/usr_intf/pncconf/pncconf.glade:56381 +#: src/emc/usr_intf/pncconf/pncconf.glade:56401 +#: src/emc/usr_intf/pncconf/pncconf.glade:56421 +#: src/emc/usr_intf/pncconf/pncconf.glade:56441 +#: src/emc/usr_intf/pncconf/pncconf.glade:56632 +#: src/emc/usr_intf/pncconf/pncconf.glade:56652 +#: src/emc/usr_intf/pncconf/pncconf.glade:56672 +#: src/emc/usr_intf/pncconf/pncconf.glade:56692 +#: src/emc/usr_intf/pncconf/pncconf.glade:56712 +#: src/emc/usr_intf/pncconf/pncconf.glade:56732 +#: src/emc/usr_intf/pncconf/pncconf.glade:56752 +#: src/emc/usr_intf/pncconf/pncconf.glade:56772 +#: src/emc/usr_intf/pncconf/pncconf.glade:56792 +#: src/emc/usr_intf/pncconf/pncconf.glade:56812 +#: src/emc/usr_intf/pncconf/pncconf.glade:56832 +#: src/emc/usr_intf/pncconf/pncconf.glade:56852 +#: src/emc/usr_intf/pncconf/pncconf.glade:56872 +#: src/emc/usr_intf/pncconf/pncconf.glade:56892 +#: src/emc/usr_intf/pncconf/pncconf.glade:56912 +#: src/emc/usr_intf/pncconf/pncconf.glade:56932 +#: src/emc/usr_intf/pncconf/pncconf.glade:56952 +#: src/emc/usr_intf/pncconf/pncconf.glade:56972 +#: src/emc/usr_intf/pncconf/pncconf.glade:56992 +#: src/emc/usr_intf/pncconf/pncconf.glade:57012 +#: src/emc/usr_intf/pncconf/pncconf.glade:57032 +#: src/emc/usr_intf/pncconf/pncconf.glade:57052 +#: src/emc/usr_intf/pncconf/pncconf.glade:57072 +#: src/emc/usr_intf/pncconf/pncconf.glade:59001 +#: src/emc/usr_intf/pncconf/pncconf.glade:59342 +#: src/emc/usr_intf/pncconf/pncconf.glade:60572 +#: src/emc/usr_intf/pncconf/pncconf.glade:60592 +#: src/emc/usr_intf/pncconf/pncconf.glade:60612 +#: src/emc/usr_intf/pncconf/pncconf.glade:60632 +#: src/emc/usr_intf/pncconf/pncconf.glade:60652 +#: src/emc/usr_intf/pncconf/pncconf.glade:60672 +#: src/emc/usr_intf/pncconf/pncconf.glade:60692 +#: src/emc/usr_intf/pncconf/pncconf.glade:60712 +#: src/emc/usr_intf/pncconf/pncconf.glade:60732 +#: src/emc/usr_intf/pncconf/pncconf.glade:60752 +#: src/emc/usr_intf/pncconf/pncconf.glade:60772 +msgid "" +"GPIO Input\n" +"GPIO Output\n" +"GPIO O Drain\n" +"Encoder\n" +"PWM\n" +"StepGen\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2383 -#: src/emc/usr_intf/pncconf/pncconf.glade:3311 -#: src/emc/usr_intf/pncconf/pncconf.glade:4192 -#: src/emc/usr_intf/pncconf/pncconf.glade:5073 -msgid " bc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8913 +#: src/emc/usr_intf/pncconf/pncconf.glade:13730 +#: src/emc/usr_intf/pncconf/pncconf.glade:18936 +#: src/emc/usr_intf/pncconf/pncconf.glade:20738 +#: src/emc/usr_intf/pncconf/pncconf.glade:21031 +#: src/emc/usr_intf/pncconf/pncconf.glade:22827 +#: src/emc/usr_intf/pncconf/pncconf.glade:24623 +msgid " 1:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2547 -#: src/emc/usr_intf/pncconf/pncconf.glade:3332 -#: src/emc/usr_intf/pncconf/pncconf.glade:4213 -#: src/emc/usr_intf/pncconf/pncconf.glade:5094 -msgid " c)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8927 +#: src/emc/usr_intf/pncconf/pncconf.glade:13716 +#: src/emc/usr_intf/pncconf/pncconf.glade:18922 +#: src/emc/usr_intf/pncconf/pncconf.glade:20724 +#: src/emc/usr_intf/pncconf/pncconf.glade:21045 +#: src/emc/usr_intf/pncconf/pncconf.glade:22841 +#: src/emc/usr_intf/pncconf/pncconf.glade:24637 +msgid " 3:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2570 -#: src/emc/usr_intf/pncconf/pncconf.glade:2966 -#: src/emc/usr_intf/pncconf/pncconf.glade:3847 -#: src/emc/usr_intf/pncconf/pncconf.glade:4728 -msgid " ad)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8941 +#: src/emc/usr_intf/pncconf/pncconf.glade:13702 +#: src/emc/usr_intf/pncconf/pncconf.glade:18908 +#: src/emc/usr_intf/pncconf/pncconf.glade:20710 +#: src/emc/usr_intf/pncconf/pncconf.glade:21059 +#: src/emc/usr_intf/pncconf/pncconf.glade:22855 +#: src/emc/usr_intf/pncconf/pncconf.glade:24651 +msgid " 5:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2583 -#: src/emc/usr_intf/pncconf/pncconf.glade:2953 -#: src/emc/usr_intf/pncconf/pncconf.glade:3834 -#: src/emc/usr_intf/pncconf/pncconf.glade:4715 -msgid " bd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8955 +#: src/emc/usr_intf/pncconf/pncconf.glade:13688 +#: src/emc/usr_intf/pncconf/pncconf.glade:18894 +#: src/emc/usr_intf/pncconf/pncconf.glade:20696 +#: src/emc/usr_intf/pncconf/pncconf.glade:21073 +#: src/emc/usr_intf/pncconf/pncconf.glade:22869 +#: src/emc/usr_intf/pncconf/pncconf.glade:24665 +msgid " 7:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2596 -#: src/emc/usr_intf/pncconf/pncconf.glade:2927 -#: src/emc/usr_intf/pncconf/pncconf.glade:3808 -#: src/emc/usr_intf/pncconf/pncconf.glade:4689 -msgid " cd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8969 +#: src/emc/usr_intf/pncconf/pncconf.glade:13674 +#: src/emc/usr_intf/pncconf/pncconf.glade:18880 +#: src/emc/usr_intf/pncconf/pncconf.glade:20682 +#: src/emc/usr_intf/pncconf/pncconf.glade:21087 +#: src/emc/usr_intf/pncconf/pncconf.glade:22883 +#: src/emc/usr_intf/pncconf/pncconf.glade:24679 +msgid " 9:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2609 -#: src/emc/usr_intf/pncconf/pncconf.glade:2991 -#: src/emc/usr_intf/pncconf/pncconf.glade:3872 -#: src/emc/usr_intf/pncconf/pncconf.glade:4753 -msgid " acd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8983 +#: src/emc/usr_intf/pncconf/pncconf.glade:13660 +#: src/emc/usr_intf/pncconf/pncconf.glade:18866 +#: src/emc/usr_intf/pncconf/pncconf.glade:20668 +#: src/emc/usr_intf/pncconf/pncconf.glade:21101 +#: src/emc/usr_intf/pncconf/pncconf.glade:22897 +#: src/emc/usr_intf/pncconf/pncconf.glade:24693 +msgid "11:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2622 -#: src/emc/usr_intf/pncconf/pncconf.glade:3004 -#: src/emc/usr_intf/pncconf/pncconf.glade:3885 -#: src/emc/usr_intf/pncconf/pncconf.glade:4766 -msgid " bcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8997 +#: src/emc/usr_intf/pncconf/pncconf.glade:13646 +#: src/emc/usr_intf/pncconf/pncconf.glade:18852 +#: src/emc/usr_intf/pncconf/pncconf.glade:20654 +#: src/emc/usr_intf/pncconf/pncconf.glade:21115 +#: src/emc/usr_intf/pncconf/pncconf.glade:22911 +#: src/emc/usr_intf/pncconf/pncconf.glade:24707 +msgid "13:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2635 -#: src/emc/usr_intf/pncconf/pncconf.glade:3017 -#: src/emc/usr_intf/pncconf/pncconf.glade:3898 -#: src/emc/usr_intf/pncconf/pncconf.glade:4779 -msgid " abcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9011 +#: src/emc/usr_intf/pncconf/pncconf.glade:13632 +#: src/emc/usr_intf/pncconf/pncconf.glade:18838 +#: src/emc/usr_intf/pncconf/pncconf.glade:20640 +#: src/emc/usr_intf/pncconf/pncconf.glade:21129 +#: src/emc/usr_intf/pncconf/pncconf.glade:22925 +#: src/emc/usr_intf/pncconf/pncconf.glade:24721 +msgid "15:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2648 -#: src/emc/usr_intf/pncconf/pncconf.glade:2979 -#: src/emc/usr_intf/pncconf/pncconf.glade:3860 -#: src/emc/usr_intf/pncconf/pncconf.glade:4741 -#, fuzzy -msgid " d)" -msgstr "Spindle:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:2664 -#, fuzzy -msgid "increments" -msgstr "Seleciona incremento de Jog" - -#: src/emc/usr_intf/pncconf/pncconf.glade:2708 -msgid "External MPG Jogging" +#: src/emc/usr_intf/pncconf/pncconf.glade:9025 +#: src/emc/usr_intf/pncconf/pncconf.glade:13618 +#: src/emc/usr_intf/pncconf/pncconf.glade:18824 +#: src/emc/usr_intf/pncconf/pncconf.glade:20626 +#: src/emc/usr_intf/pncconf/pncconf.glade:21143 +#: src/emc/usr_intf/pncconf/pncconf.glade:22939 +#: src/emc/usr_intf/pncconf/pncconf.glade:24735 +msgid "17:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2739 -#: src/emc/usr_intf/pncconf/pncconf.glade:3620 -#: src/emc/usr_intf/pncconf/pncconf.glade:4501 -msgid "Use MPG " +#: src/emc/usr_intf/pncconf/pncconf.glade:9039 +#: src/emc/usr_intf/pncconf/pncconf.glade:13604 +#: src/emc/usr_intf/pncconf/pncconf.glade:18810 +#: src/emc/usr_intf/pncconf/pncconf.glade:20612 +#: src/emc/usr_intf/pncconf/pncconf.glade:21157 +#: src/emc/usr_intf/pncconf/pncconf.glade:22953 +#: src/emc/usr_intf/pncconf/pncconf.glade:24749 +msgid "19:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2752 -#: src/emc/usr_intf/pncconf/pncconf.glade:3633 -#: src/emc/usr_intf/pncconf/pncconf.glade:4514 -msgid "use switches" +#: src/emc/usr_intf/pncconf/pncconf.glade:9053 +#: src/emc/usr_intf/pncconf/pncconf.glade:13590 +#: src/emc/usr_intf/pncconf/pncconf.glade:18796 +#: src/emc/usr_intf/pncconf/pncconf.glade:20598 +#: src/emc/usr_intf/pncconf/pncconf.glade:21171 +#: src/emc/usr_intf/pncconf/pncconf.glade:22967 +#: src/emc/usr_intf/pncconf/pncconf.glade:24763 +msgid "21:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2838 -#: src/emc/usr_intf/pncconf/pncconf.glade:3733 -#: src/emc/usr_intf/pncconf/pncconf.glade:4614 -msgid "ignore all-inputs false" +#: src/emc/usr_intf/pncconf/pncconf.glade:9067 +#: src/emc/usr_intf/pncconf/pncconf.glade:13576 +#: src/emc/usr_intf/pncconf/pncconf.glade:18782 +#: src/emc/usr_intf/pncconf/pncconf.glade:20584 +#: src/emc/usr_intf/pncconf/pncconf.glade:21185 +#: src/emc/usr_intf/pncconf/pncconf.glade:22981 +#: src/emc/usr_intf/pncconf/pncconf.glade:24777 +msgid "23:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2853 -#: src/emc/usr_intf/pncconf/pncconf.glade:3748 -#: src/emc/usr_intf/pncconf/pncconf.glade:4629 -msgid "use graycode" +#: src/emc/usr_intf/pncconf/pncconf.glade:9801 +#: src/emc/usr_intf/pncconf/pncconf.glade:12840 +#: src/emc/usr_intf/pncconf/pncconf.glade:17994 +#: src/emc/usr_intf/pncconf/pncconf.glade:20170 +#: src/emc/usr_intf/pncconf/pncconf.glade:21597 +#: src/emc/usr_intf/pncconf/pncconf.glade:23393 +#: src/emc/usr_intf/pncconf/pncconf.glade:25189 +msgid "47:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2940 -#: src/emc/usr_intf/pncconf/pncconf.glade:3821 -#: src/emc/usr_intf/pncconf/pncconf.glade:4702 -msgid " abd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9868 +#: src/emc/usr_intf/pncconf/pncconf.glade:12773 +#: src/emc/usr_intf/pncconf/pncconf.glade:17927 +#: src/emc/usr_intf/pncconf/pncconf.glade:20119 +#: src/emc/usr_intf/pncconf/pncconf.glade:21648 +#: src/emc/usr_intf/pncconf/pncconf.glade:23444 +#: src/emc/usr_intf/pncconf/pncconf.glade:25240 +msgid "45:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:3555 -#: src/emc/usr_intf/pncconf/pncconf.glade:4436 -#: src/emc/usr_intf/pncconf/pncconf.glade:5317 -#, fuzzy -msgid "Increments" -msgstr "Seleciona incremento de Jog" - -#: src/emc/usr_intf/pncconf/pncconf.glade:3589 -#, fuzzy -msgid "External Feed Override" -msgstr "Velocidade da máquina" - -#: src/emc/usr_intf/pncconf/pncconf.glade:4470 -#, fuzzy -msgid "Max Velocity Override" -msgstr "Velocidade da máquina" +#: src/emc/usr_intf/pncconf/pncconf.glade:9884 +#: src/emc/usr_intf/pncconf/pncconf.glade:12757 +#: src/emc/usr_intf/pncconf/pncconf.glade:17911 +#: src/emc/usr_intf/pncconf/pncconf.glade:20103 +#: src/emc/usr_intf/pncconf/pncconf.glade:21664 +#: src/emc/usr_intf/pncconf/pncconf.glade:23460 +#: src/emc/usr_intf/pncconf/pncconf.glade:25256 +msgid "43:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5351 -#, fuzzy -msgid "External Spindle Override" -msgstr "Velocidade da máquina" +#: src/emc/usr_intf/pncconf/pncconf.glade:9900 +#: src/emc/usr_intf/pncconf/pncconf.glade:12741 +#: src/emc/usr_intf/pncconf/pncconf.glade:17895 +#: src/emc/usr_intf/pncconf/pncconf.glade:20087 +#: src/emc/usr_intf/pncconf/pncconf.glade:21680 +#: src/emc/usr_intf/pncconf/pncconf.glade:23476 +#: src/emc/usr_intf/pncconf/pncconf.glade:25272 +msgid "41:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5379 -#, fuzzy -msgid "GUI configuration" -msgstr "Mostrar _Configuração Hal" +#: src/emc/usr_intf/pncconf/pncconf.glade:9916 +#: src/emc/usr_intf/pncconf/pncconf.glade:12725 +#: src/emc/usr_intf/pncconf/pncconf.glade:17879 +#: src/emc/usr_intf/pncconf/pncconf.glade:20071 +#: src/emc/usr_intf/pncconf/pncconf.glade:21696 +#: src/emc/usr_intf/pncconf/pncconf.glade:23492 +#: src/emc/usr_intf/pncconf/pncconf.glade:25288 +msgid "39:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5398 -msgid "Frontend" +#: src/emc/usr_intf/pncconf/pncconf.glade:9932 +#: src/emc/usr_intf/pncconf/pncconf.glade:12709 +#: src/emc/usr_intf/pncconf/pncconf.glade:17863 +#: src/emc/usr_intf/pncconf/pncconf.glade:20055 +#: src/emc/usr_intf/pncconf/pncconf.glade:21712 +#: src/emc/usr_intf/pncconf/pncconf.glade:23508 +#: src/emc/usr_intf/pncconf/pncconf.glade:25304 +msgid "37:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5557 -#, fuzzy -msgid "" -"Commanded\n" -"Actual" -msgstr "Comandada" +#: src/emc/usr_intf/pncconf/pncconf.glade:9948 +#: src/emc/usr_intf/pncconf/pncconf.glade:12693 +#: src/emc/usr_intf/pncconf/pncconf.glade:17847 +#: src/emc/usr_intf/pncconf/pncconf.glade:20039 +#: src/emc/usr_intf/pncconf/pncconf.glade:21728 +#: src/emc/usr_intf/pncconf/pncconf.glade:23524 +#: src/emc/usr_intf/pncconf/pncconf.glade:25320 +msgid "35:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5570 -#, fuzzy -msgid "" -"Machine\n" -"Relative\n" -msgstr "Relativa" +#: src/emc/usr_intf/pncconf/pncconf.glade:9964 +#: src/emc/usr_intf/pncconf/pncconf.glade:12677 +#: src/emc/usr_intf/pncconf/pncconf.glade:17831 +#: src/emc/usr_intf/pncconf/pncconf.glade:20023 +#: src/emc/usr_intf/pncconf/pncconf.glade:21744 +#: src/emc/usr_intf/pncconf/pncconf.glade:23540 +#: src/emc/usr_intf/pncconf/pncconf.glade:25336 +msgid "33:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5608 -#, fuzzy -msgid "Max Feed Override" -msgstr "Velocidade da máquina" +#: src/emc/usr_intf/pncconf/pncconf.glade:10337 +#: src/emc/usr_intf/pncconf/pncconf.glade:12304 +#: src/emc/usr_intf/pncconf/pncconf.glade:17458 +#: src/emc/usr_intf/pncconf/pncconf.glade:19762 +#: src/emc/usr_intf/pncconf/pncconf.glade:22005 +#: src/emc/usr_intf/pncconf/pncconf.glade:23801 +#: src/emc/usr_intf/pncconf/pncconf.glade:25597 +msgid "25:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5667 -#, fuzzy -msgid "Min Spindle Override" -msgstr "Velocidade da máquina" +#: src/emc/usr_intf/pncconf/pncconf.glade:10353 +#: src/emc/usr_intf/pncconf/pncconf.glade:12288 +#: src/emc/usr_intf/pncconf/pncconf.glade:17442 +#: src/emc/usr_intf/pncconf/pncconf.glade:19746 +#: src/emc/usr_intf/pncconf/pncconf.glade:22021 +#: src/emc/usr_intf/pncconf/pncconf.glade:23817 +#: src/emc/usr_intf/pncconf/pncconf.glade:25613 +msgid "27:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5691 -#, fuzzy -msgid "Max Spindle Override " -msgstr "Velocidade da máquina" +#: src/emc/usr_intf/pncconf/pncconf.glade:10369 +#: src/emc/usr_intf/pncconf/pncconf.glade:12272 +#: src/emc/usr_intf/pncconf/pncconf.glade:17426 +#: src/emc/usr_intf/pncconf/pncconf.glade:19730 +#: src/emc/usr_intf/pncconf/pncconf.glade:22037 +#: src/emc/usr_intf/pncconf/pncconf.glade:23833 +#: src/emc/usr_intf/pncconf/pncconf.glade:25629 +msgid "29:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5702 -#, fuzzy -msgid "Position_feedback" -msgstr "Posição:" +#: src/emc/usr_intf/pncconf/pncconf.glade:10385 +#: src/emc/usr_intf/pncconf/pncconf.glade:12256 +#: src/emc/usr_intf/pncconf/pncconf.glade:17410 +#: src/emc/usr_intf/pncconf/pncconf.glade:19714 +#: src/emc/usr_intf/pncconf/pncconf.glade:22053 +#: src/emc/usr_intf/pncconf/pncconf.glade:23849 +#: src/emc/usr_intf/pncconf/pncconf.glade:25645 +msgid "31:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5713 -#, fuzzy -msgid "Position_offset" -msgstr "Posição:" +#: src/emc/usr_intf/pncconf/pncconf.glade:10677 +#: src/emc/usr_intf/pncconf/pncconf.glade:10689 +#: src/emc/usr_intf/pncconf/pncconf.glade:11955 +#: src/emc/usr_intf/pncconf/pncconf.glade:11967 +#: src/emc/usr_intf/pncconf/pncconf.glade:14464 +#: src/emc/usr_intf/pncconf/pncconf.glade:14476 +#: src/emc/usr_intf/pncconf/pncconf.glade:17161 +#: src/emc/usr_intf/pncconf/pncconf.glade:17173 +#: src/emc/usr_intf/pncconf/pncconf.glade:19567 +#: src/emc/usr_intf/pncconf/pncconf.glade:19579 +#: src/emc/usr_intf/pncconf/pncconf.glade:22190 +#: src/emc/usr_intf/pncconf/pncconf.glade:22202 +#: src/emc/usr_intf/pncconf/pncconf.glade:23986 +#: src/emc/usr_intf/pncconf/pncconf.glade:23998 +#: src/emc/usr_intf/pncconf/pncconf.glade:25782 +#: src/emc/usr_intf/pncconf/pncconf.glade:25794 +#: src/emc/usr_intf/pncconf/pncconf.glade:28287 +#: src/emc/usr_intf/pncconf/pncconf.glade:28299 +#: src/emc/usr_intf/pncconf/pncconf.glade:29415 +#: src/emc/usr_intf/pncconf/pncconf.glade:29427 +#: src/emc/usr_intf/pncconf/pncconf.glade:32869 +#: src/emc/usr_intf/pncconf/pncconf.glade:33760 +#: src/emc/usr_intf/pncconf/pncconf.glade:33772 +#: src/emc/usr_intf/pncconf/pncconf.glade:37771 +#: src/emc/usr_intf/pncconf/pncconf.glade:37783 +#: src/emc/usr_intf/pncconf/pncconf.glade:38777 +#: src/emc/usr_intf/pncconf/pncconf.glade:38789 +#: src/emc/usr_intf/pncconf/pncconf.glade:42131 +#: src/emc/usr_intf/pncconf/pncconf.glade:42143 +#: src/emc/usr_intf/pncconf/pncconf.glade:43259 +#: src/emc/usr_intf/pncconf/pncconf.glade:43271 +#: src/emc/usr_intf/pncconf/pncconf.glade:46702 +#: src/emc/usr_intf/pncconf/pncconf.glade:46714 +#: src/emc/usr_intf/pncconf/pncconf.glade:49054 +#: src/emc/usr_intf/pncconf/pncconf.glade:49066 +#: src/emc/usr_intf/pncconf/pncconf.glade:50182 +#: src/emc/usr_intf/pncconf/pncconf.glade:50194 +#: src/emc/usr_intf/pncconf/pncconf.glade:53625 +#: src/emc/usr_intf/pncconf/pncconf.glade:53637 +#: src/emc/usr_intf/pncconf/pncconf.glade:55977 +#: src/emc/usr_intf/pncconf/pncconf.glade:55989 +#: src/emc/usr_intf/pncconf/pncconf.glade:57105 +#: src/emc/usr_intf/pncconf/pncconf.glade:57117 +#: src/emc/usr_intf/pncconf/pncconf.glade:60548 +#: src/emc/usr_intf/pncconf/pncconf.glade:60560 +msgid "function" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5721 -msgid "General GUI Defaults" +#: src/emc/usr_intf/pncconf/pncconf.glade:10703 +#: src/emc/usr_intf/pncconf/pncconf.glade:11940 +#: src/emc/usr_intf/pncconf/pncconf.glade:14449 +#: src/emc/usr_intf/pncconf/pncconf.glade:17146 +#: src/emc/usr_intf/pncconf/pncconf.glade:19553 +#: src/emc/usr_intf/pncconf/pncconf.glade:22217 +#: src/emc/usr_intf/pncconf/pncconf.glade:24013 +#: src/emc/usr_intf/pncconf/pncconf.glade:25809 +msgid "Launch test panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5808 -msgid "Force Axis to Maximize" +#: src/emc/usr_intf/pncconf/pncconf.glade:11192 +#: src/emc/usr_intf/pncconf/pncconf.glade:11204 +#: src/emc/usr_intf/pncconf/pncconf.glade:11440 +#: src/emc/usr_intf/pncconf/pncconf.glade:11454 +#: src/emc/usr_intf/pncconf/pncconf.glade:13949 +#: src/emc/usr_intf/pncconf/pncconf.glade:13963 +#: src/emc/usr_intf/pncconf/pncconf.glade:16645 +#: src/emc/usr_intf/pncconf/pncconf.glade:16659 +#: src/emc/usr_intf/pncconf/pncconf.glade:19190 +#: src/emc/usr_intf/pncconf/pncconf.glade:19204 +#: src/emc/usr_intf/pncconf/pncconf.glade:22567 +#: src/emc/usr_intf/pncconf/pncconf.glade:22579 +#: src/emc/usr_intf/pncconf/pncconf.glade:24363 +#: src/emc/usr_intf/pncconf/pncconf.glade:24375 +#: src/emc/usr_intf/pncconf/pncconf.glade:26159 +#: src/emc/usr_intf/pncconf/pncconf.glade:26171 +#: src/emc/usr_intf/pncconf/pncconf.glade:28772 +#: src/emc/usr_intf/pncconf/pncconf.glade:28784 +#: src/emc/usr_intf/pncconf/pncconf.glade:28917 +#: src/emc/usr_intf/pncconf/pncconf.glade:28931 +#: src/emc/usr_intf/pncconf/pncconf.glade:33102 +#: src/emc/usr_intf/pncconf/pncconf.glade:33275 +#: src/emc/usr_intf/pncconf/pncconf.glade:33289 +#: src/emc/usr_intf/pncconf/pncconf.glade:38269 +#: src/emc/usr_intf/pncconf/pncconf.glade:38281 +#: src/emc/usr_intf/pncconf/pncconf.glade:38532 +#: src/emc/usr_intf/pncconf/pncconf.glade:38546 +#: src/emc/usr_intf/pncconf/pncconf.glade:42616 +#: src/emc/usr_intf/pncconf/pncconf.glade:42628 +#: src/emc/usr_intf/pncconf/pncconf.glade:42761 +#: src/emc/usr_intf/pncconf/pncconf.glade:42775 +#: src/emc/usr_intf/pncconf/pncconf.glade:46947 +#: src/emc/usr_intf/pncconf/pncconf.glade:46959 +#: src/emc/usr_intf/pncconf/pncconf.glade:49539 +#: src/emc/usr_intf/pncconf/pncconf.glade:49551 +#: src/emc/usr_intf/pncconf/pncconf.glade:49684 +#: src/emc/usr_intf/pncconf/pncconf.glade:49698 +#: src/emc/usr_intf/pncconf/pncconf.glade:53870 +#: src/emc/usr_intf/pncconf/pncconf.glade:53882 +#: src/emc/usr_intf/pncconf/pncconf.glade:56462 +#: src/emc/usr_intf/pncconf/pncconf.glade:56474 +#: src/emc/usr_intf/pncconf/pncconf.glade:56607 +#: src/emc/usr_intf/pncconf/pncconf.glade:56621 +#: src/emc/usr_intf/pncconf/pncconf.glade:60793 +#: src/emc/usr_intf/pncconf/pncconf.glade:60805 +msgid "Num" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5832 -#: src/emc/usr_intf/pncconf/pncconf.glade:6602 -#: src/emc/usr_intf/pncconf/pncconf.glade:6841 -#: src/emc/usr_intf/pncconf/pncconf.glade:7328 -msgid "H" +#: src/emc/usr_intf/pncconf/pncconf.glade:11222 +msgid "" +" I/O\n" +"Connector 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5866 -#: src/emc/usr_intf/pncconf/pncconf.glade:6568 -#: src/emc/usr_intf/pncconf/pncconf.glade:6875 -#: src/emc/usr_intf/pncconf/pncconf.glade:7294 -msgid "W" +#: src/emc/usr_intf/pncconf/pncconf.glade:13835 +msgid "" +" I/O\n" +" Connector 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5876 -#: src/emc/usr_intf/pncconf/pncconf.glade:6556 -#: src/emc/usr_intf/pncconf/pncconf.glade:6885 -#: src/emc/usr_intf/pncconf/pncconf.glade:7282 -msgid "X" +#: src/emc/usr_intf/pncconf/pncconf.glade:16281 +#: src/emc/usr_intf/pncconf/pncconf.glade:16295 +#: src/emc/usr_intf/pncconf/pncconf.glade:16322 +#: src/emc/usr_intf/pncconf/pncconf.glade:26441 +#: src/emc/usr_intf/pncconf/pncconf.glade:26468 +#: src/emc/usr_intf/pncconf/pncconf.glade:26482 +#: src/emc/usr_intf/pncconf/pncconf.glade:31232 +#: src/emc/usr_intf/pncconf/pncconf.glade:31246 +#: src/emc/usr_intf/pncconf/pncconf.glade:31273 +#: src/emc/usr_intf/pncconf/pncconf.glade:31708 +#: src/emc/usr_intf/pncconf/pncconf.glade:31735 +#: src/emc/usr_intf/pncconf/pncconf.glade:31749 +#: src/emc/usr_intf/pncconf/pncconf.glade:35577 +#: src/emc/usr_intf/pncconf/pncconf.glade:35591 +#: src/emc/usr_intf/pncconf/pncconf.glade:35618 +#: src/emc/usr_intf/pncconf/pncconf.glade:35925 +#: src/emc/usr_intf/pncconf/pncconf.glade:35952 +#: src/emc/usr_intf/pncconf/pncconf.glade:35966 +#: src/emc/usr_intf/pncconf/pncconf.glade:39909 +#: src/emc/usr_intf/pncconf/pncconf.glade:39923 +#: src/emc/usr_intf/pncconf/pncconf.glade:39950 +#: src/emc/usr_intf/pncconf/pncconf.glade:40285 +#: src/emc/usr_intf/pncconf/pncconf.glade:40312 +#: src/emc/usr_intf/pncconf/pncconf.glade:40326 +#: src/emc/usr_intf/pncconf/pncconf.glade:45076 +#: src/emc/usr_intf/pncconf/pncconf.glade:45090 +#: src/emc/usr_intf/pncconf/pncconf.glade:45117 +#: src/emc/usr_intf/pncconf/pncconf.glade:45541 +#: src/emc/usr_intf/pncconf/pncconf.glade:45568 +#: src/emc/usr_intf/pncconf/pncconf.glade:45582 +#: src/emc/usr_intf/pncconf/pncconf.glade:47208 +#: src/emc/usr_intf/pncconf/pncconf.glade:47235 +#: src/emc/usr_intf/pncconf/pncconf.glade:47249 +#: src/emc/usr_intf/pncconf/pncconf.glade:51999 +#: src/emc/usr_intf/pncconf/pncconf.glade:52013 +#: src/emc/usr_intf/pncconf/pncconf.glade:52040 +#: src/emc/usr_intf/pncconf/pncconf.glade:52464 +#: src/emc/usr_intf/pncconf/pncconf.glade:52491 +#: src/emc/usr_intf/pncconf/pncconf.glade:52505 +#: src/emc/usr_intf/pncconf/pncconf.glade:54131 +#: src/emc/usr_intf/pncconf/pncconf.glade:54158 +#: src/emc/usr_intf/pncconf/pncconf.glade:54172 +#: src/emc/usr_intf/pncconf/pncconf.glade:58922 +#: src/emc/usr_intf/pncconf/pncconf.glade:58936 +#: src/emc/usr_intf/pncconf/pncconf.glade:58963 +#: src/emc/usr_intf/pncconf/pncconf.glade:59387 +#: src/emc/usr_intf/pncconf/pncconf.glade:59414 +#: src/emc/usr_intf/pncconf/pncconf.glade:59428 +msgid " " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5914 -#: src/emc/usr_intf/pncconf/pncconf.glade:6519 -#: src/emc/usr_intf/pncconf/pncconf.glade:6923 -#: src/emc/usr_intf/pncconf/pncconf.glade:7244 -#, fuzzy -msgid "Position" -msgstr "Posição:" +#: src/emc/usr_intf/pncconf/pncconf.glade:16427 +msgid "" +" I/O\n" +" Connector 4" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5927 -#: src/emc/usr_intf/pncconf/pncconf.glade:6510 -#: src/emc/usr_intf/pncconf/pncconf.glade:6936 -#: src/emc/usr_intf/pncconf/pncconf.glade:7234 -#, fuzzy -msgid "size" -msgstr "Tamanho:" +#: src/emc/usr_intf/pncconf/pncconf.glade:19041 +msgid "" +" I/O\n" +" Connector 5" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5942 -#: src/emc/usr_intf/pncconf/pncconf.glade:5952 -#: src/emc/usr_intf/pncconf/pncconf.glade:6158 -msgid "mm / min" +#: src/emc/usr_intf/pncconf/pncconf.glade:20837 +msgid "" +" I/O\n" +"Connector 6" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5975 -#: src/emc/usr_intf/pncconf/pncconf.glade:5985 -#: src/emc/usr_intf/pncconf/pncconf.glade:5997 -msgid "Deg / min" +#: src/emc/usr_intf/pncconf/pncconf.glade:22633 +msgid "" +" I/O\n" +"Connector 7" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6010 -msgid "xyzabc" +#: src/emc/usr_intf/pncconf/pncconf.glade:24429 +msgid "" +" I/O\n" +"Connector 8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6023 -msgid "Axis Geometry" +#: src/emc/usr_intf/pncconf/pncconf.glade:26225 +msgid "" +" I/O\n" +" Connector 9" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6048 -msgid "Max Angular velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:31378 +#: src/emc/usr_intf/pncconf/pncconf.glade:38299 +#: src/emc/usr_intf/pncconf/pncconf.glade:45222 +#: src/emc/usr_intf/pncconf/pncconf.glade:52145 +#: src/emc/usr_intf/pncconf/pncconf.glade:59068 +msgid "page 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6061 -msgid "5mm 1mm .5mm .1mm .05mm .01mm .005mm" +#: src/emc/usr_intf/pncconf/pncconf.glade:33131 +#: src/emc/usr_intf/pncconf/pncconf.glade:40054 +#: src/emc/usr_intf/pncconf/pncconf.glade:46977 +#: src/emc/usr_intf/pncconf/pncconf.glade:53900 +#: src/emc/usr_intf/pncconf/pncconf.glade:60823 +msgid "page 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6074 -#, fuzzy -msgid "Increments " -msgstr "Seleciona incremento de Jog" +#: src/emc/usr_intf/pncconf/pncconf.glade:33147 +msgid "Smart Serial 0" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6099 -msgid "Min Angular velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:40070 +msgid "Smart Serial 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6112 -msgid "gedit" +#: src/emc/usr_intf/pncconf/pncconf.glade:46993 +msgid "Smart Serial 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6148 -msgid "Default Angular velocity " +#: src/emc/usr_intf/pncconf/pncconf.glade:53916 +msgid "Smart Serial 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6211 -msgid "Max linear velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:60839 +msgid "Smart Serial 4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6222 -msgid "Min linear velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:60861 +msgid "First Parallel Port Setup" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6233 -msgid "Default linear velocity " +#: src/emc/usr_intf/pncconf/pncconf.glade:60946 +msgid "Launch Test Panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6241 -msgid "AXIS defaults" +#: src/emc/usr_intf/pncconf/pncconf.glade:62374 +msgid "Inputs (Machine to PC):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6352 -msgid "Error Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:62929 +msgid "Outputs (PC to Machine):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6365 -msgid "DTG Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:62950 +msgid "X Axis Motor/Encoder Configuration" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6378 +#: src/emc/usr_intf/pncconf/pncconf.glade:63005 #, fuzzy -msgid "Relative Textcolor" -msgstr "Mostra posição relativa" +msgid "Max Output" +msgstr "Spindle:" -#: src/emc/usr_intf/pncconf/pncconf.glade:6391 +#: src/emc/usr_intf/pncconf/pncconf.glade:63070 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Absolute Textcolor" -msgstr "Sobre o AXIS" +msgid "FF2" +msgstr "OFF" -#: src/emc/usr_intf/pncconf/pncconf.glade:6454 -msgid "Absolute Text Color" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63083 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "FF1" +msgstr "OFF" -#: src/emc/usr_intf/pncconf/pncconf.glade:6479 -#: src/emc/usr_intf/pncconf/pncconf.glade:7148 -msgid "GTK Theme" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63096 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "FF0" +msgstr "OFF" -#: src/emc/usr_intf/pncconf/pncconf.glade:6491 -#: src/emc/usr_intf/pncconf/pncconf.glade:7158 -msgid "Follow System Theme\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:63143 +msgid "Deadband" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6624 -msgid "Force Touchy to Maximize after positioning" +#: src/emc/usr_intf/pncconf/pncconf.glade:63156 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Bias" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6669 -msgid "GUI Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:63169 +msgid "P" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6700 -msgid "Virtual Control Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:63180 +msgid "I" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6775 -msgid "XYZ buttons (uses Halui)" +#: src/emc/usr_intf/pncconf/pncconf.glade:63193 +msgid "D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6946 -msgid "Geometry Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:63258 +msgid "Servo Info" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7025 -msgid "Pyvcp Details" +#: src/emc/usr_intf/pncconf/pncconf.glade:63337 +#, fuzzy +msgid "3pwm Scale:" +msgstr "Eixo:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63348 +msgid "3pwm Deadtime:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7097 -msgid "Sample display " +#: src/emc/usr_intf/pncconf/pncconf.glade:63361 +msgid "Quad Pulses / Rev:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7172 -msgid "Force Maximize" +#: src/emc/usr_intf/pncconf/pncconf.glade:63438 +msgid "" +"Open Loop\n" +" Test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7186 -msgid "Center Tab Embeded" +#: src/emc/usr_intf/pncconf/pncconf.glade:63462 +#, fuzzy +msgid "Analog Min Limit:" +msgstr "Spindle:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63476 +#, fuzzy +msgid "Analog Max limit:" +msgstr "Aumenta a rotação do spindle [F12]" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63490 +msgid "Analog Max Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7201 -msgid "Rightside Embeded" +#: src/emc/usr_intf/pncconf/pncconf.glade:63554 +msgid "Output Info" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7217 -msgid "Standalone Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:63603 +msgid "Step On-Time" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7351 +#: src/emc/usr_intf/pncconf/pncconf.glade:63616 #, fuzzy -msgid "Display Options" -msgstr "Mostra medidas em_Polegadas" +msgid "Step Space" +msgstr "Roda uma linha do programa" -#: src/emc/usr_intf/pncconf/pncconf.glade:7401 -msgid "Max RPM" +#: src/emc/usr_intf/pncconf/pncconf.glade:63659 +msgid "Direction Hold" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7414 -#, fuzzy -msgid "Spindle Speed Indicator" -msgstr "Freio do spindle ativado" +#: src/emc/usr_intf/pncconf/pncconf.glade:63672 +msgid "Direction Setup" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7426 -#, fuzzy -msgid "Spindle At Speed LED" -msgstr "Velocidade da máquina" +#: src/emc/usr_intf/pncconf/pncconf.glade:63715 +msgid "Driver Type:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7438 +#: src/emc/usr_intf/pncconf/pncconf.glade:63748 +msgid "Stepper Info" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63800 #, fuzzy -msgid "Zero X Button" -msgstr "Botão esquerdo" +msgid "No feedback" +msgstr "Posição:" -#: src/emc/usr_intf/pncconf/pncconf.glade:7450 +#: src/emc/usr_intf/pncconf/pncconf.glade:63810 #, fuzzy -msgid "Zero Y Button" -msgstr "Botão esquerdo" +msgid "Absolute Feedback" +msgstr "Sobre o AXIS" -#: src/emc/usr_intf/pncconf/pncconf.glade:7462 +#: src/emc/usr_intf/pncconf/pncconf.glade:63824 #, fuzzy -msgid "Zero Z Button" -msgstr "Botão esquerdo" +msgid "Incremental Feedback" +msgstr "Seleciona incremento de Jog" -#: src/emc/usr_intf/pncconf/pncconf.glade:7474 +#: src/emc/usr_intf/pncconf/pncconf.glade:63838 #, fuzzy -msgid "Zero A Button" -msgstr "Botão esquerdo" +msgid "Incremental Encoder" +msgstr "Inverter imagem" -#: src/emc/usr_intf/pncconf/pncconf.glade:7486 -msgid "Requires Classicladder touch-off program" +#: src/emc/usr_intf/pncconf/pncconf.glade:63850 +msgid "Hall sensors" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7487 -msgid "Auto Z Touch Off Button" +#: src/emc/usr_intf/pncconf/pncconf.glade:63862 +msgid "Fanuc Red Cap " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7500 +#: src/emc/usr_intf/pncconf/pncconf.glade:63874 #, fuzzy -msgid "Sample Options" -msgstr "Mostrar _Configuração Hal" - -#: src/emc/usr_intf/pncconf/pncconf.glade:7574 -msgid "Gladevcp Details" -msgstr "" +msgid "Use encoder Index" +msgstr "Spindle:" -#: src/emc/usr_intf/pncconf/pncconf.glade:7597 -msgid "Include custom GladeVCP GUI panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:63905 +msgid "Input Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7668 -msgid "Restore joint position after shutdown" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63929 +#, fuzzy +msgid "Digital instead of PWM outputs" +msgstr "Sinal de entrada digital selecionado fora dos limites" -#: src/emc/usr_intf/pncconf/pncconf.glade:7683 -msgid "Move spindle up before tool change" +#: src/emc/usr_intf/pncconf/pncconf.glade:63938 +msgid "6 outputs instead of 3 " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7696 -msgid "Leave spindle on during tool change" +#: src/emc/usr_intf/pncconf/pncconf.glade:63950 +msgid "Force Trapezoid Mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7709 -msgid "Popup Toolchange Prompt" +#: src/emc/usr_intf/pncconf/pncconf.glade:63962 +msgid "Emulate feedback " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7723 -msgid "Require homing before MDI / Running" +#: src/emc/usr_intf/pncconf/pncconf.glade:63974 +msgid "Emulated Hall sensors" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7732 -msgid "Random position toolchanger " +#: src/emc/usr_intf/pncconf/pncconf.glade:63987 +msgid "Emulated Fanuc Red Cap" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7747 -msgid "Force individual manual homing" +#: src/emc/usr_intf/pncconf/pncconf.glade:64014 +msgid "8i20 Max Current" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7761 -msgid "Defaults and Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:64048 +msgid "Output Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7789 -msgid "Mesa0 I/O setup\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:64103 +msgid "alignment current" msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:7809 -msgid "" -"Click on each page tab to configure signal names for each connector port.\n" -"\n" -"Press the button to make the tabbed pages\n" -"accept the changes.\n" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64113 +msgid "lead angle" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7998 +#: src/emc/usr_intf/pncconf/pncconf.glade:64213 #, fuzzy -msgid "Num of channels: " -msgstr "Número de canais insuficiente" +msgid "Reverse" +msgstr "Freio do spindle ativado" -#: src/emc/usr_intf/pncconf/pncconf.glade:8036 -msgid "7i29 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:64223 +msgid "Input-pattern" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8045 -msgid "7i30 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:64233 +msgid "output-pattern" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8057 -msgid "7i33 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:64243 +msgid "Drive-offset" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8069 -msgid "7i40 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:64253 +msgid "Encoder-offset" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8081 -msgid "7i48 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:64263 +msgid "Poles" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8096 -msgid "Sanity Checks" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64283 +#, fuzzy +msgid "Configuration" +msgstr "Mostrar _Configuração Hal" -#: src/emc/usr_intf/pncconf/pncconf.glade:8137 -msgid "Num of Smart Serial Ports:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64318 +msgid "Use BLDC Motor Commutation Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8148 +#: src/emc/usr_intf/pncconf/pncconf.glade:64354 #, fuzzy -msgid "Board name" -msgstr "Modo World" +msgid "Scale:" +msgstr "Escala" -#: src/emc/usr_intf/pncconf/pncconf.glade:8155 -msgid "Num of step generators: " -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64375 +#, fuzzy +msgid "% " +msgstr "%" -#: src/emc/usr_intf/pncconf/pncconf.glade:8166 -msgid "Num of pwm generators:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64394 +msgid "Range:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8177 -msgid "Num of encoders:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64419 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "RPM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8294 -msgid "Watchdog timeout:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64439 +#, fuzzy +msgid "Use Spindle-At-Speed" +msgstr "Spindle:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8305 -msgid "PDM base frequency:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64464 +#, fuzzy +msgid "Filter gain:" +msgstr "Filtro de programa %r falhado" -#: src/emc/usr_intf/pncconf/pncconf.glade:8316 -msgid "PWM base frequency:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64499 +msgid "Spindle Display Filter Settings" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8328 -msgid "" -"Accept components\n" -" Changes" +#: src/emc/usr_intf/pncconf/pncconf.glade:64565 +msgid "Rapid Speed Following Error:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8356 -msgid "Total number of pins:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64577 +msgid "Feed Speed Following Error:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8389 -msgid "Num of 3 pwm generators: " +#: src/emc/usr_intf/pncconf/pncconf.glade:64591 +msgid "Invert Motor Direction" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8412 -msgid "SVST8_4" +#: src/emc/usr_intf/pncconf/pncconf.glade:64606 +msgid "Invert Encoder Direction " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8437 -msgid "Firmware:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64661 +#, fuzzy +msgid "Single Input Encoder" +msgstr "Inverter imagem" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64776 +msgid "encoder Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8447 -msgid "Mesa parport address:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64801 +#, fuzzy +msgid "Stepper Scale:" +msgstr "Roda uma linha do programa" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64831 +msgid "" +"Calculate\n" +"Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8482 -msgid "3PWM base frequency:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64901 +msgid "Test / Tune Axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8504 +#: src/emc/usr_intf/pncconf/pncconf.glade:64943 #, fuzzy -msgid "" -"Configuration\n" -" Page" +msgid "X Axis Configuration" msgstr "Mostrar _Configuração Hal" -#: src/emc/usr_intf/pncconf/pncconf.glade:8698 -#: src/emc/usr_intf/pncconf/pncconf.glade:8712 -#: src/emc/usr_intf/pncconf/pncconf.glade:13677 -#: src/emc/usr_intf/pncconf/pncconf.glade:13689 -#: src/emc/usr_intf/pncconf/pncconf.glade:16373 -#: src/emc/usr_intf/pncconf/pncconf.glade:16385 -#: src/emc/usr_intf/pncconf/pncconf.glade:18883 -#: src/emc/usr_intf/pncconf/pncconf.glade:18895 -#: src/emc/usr_intf/pncconf/pncconf.glade:20747 -#: src/emc/usr_intf/pncconf/pncconf.glade:20759 -#: src/emc/usr_intf/pncconf/pncconf.glade:20962 -#: src/emc/usr_intf/pncconf/pncconf.glade:20976 -#: src/emc/usr_intf/pncconf/pncconf.glade:22758 -#: src/emc/usr_intf/pncconf/pncconf.glade:22772 -#: src/emc/usr_intf/pncconf/pncconf.glade:24554 -#: src/emc/usr_intf/pncconf/pncconf.glade:24568 -#: src/emc/usr_intf/pncconf/pncconf.glade:26330 -#: src/emc/usr_intf/pncconf/pncconf.glade:26344 -#: src/emc/usr_intf/pncconf/pncconf.glade:31324 -#: src/emc/usr_intf/pncconf/pncconf.glade:31336 -#: src/emc/usr_intf/pncconf/pncconf.glade:31600 -#: src/emc/usr_intf/pncconf/pncconf.glade:35669 -#: src/emc/usr_intf/pncconf/pncconf.glade:35681 -#: src/emc/usr_intf/pncconf/pncconf.glade:35814 -#: src/emc/usr_intf/pncconf/pncconf.glade:35828 -#: src/emc/usr_intf/pncconf/pncconf.glade:40000 -#: src/emc/usr_intf/pncconf/pncconf.glade:40012 -#: src/emc/usr_intf/pncconf/pncconf.glade:40174 -#: src/emc/usr_intf/pncconf/pncconf.glade:40188 -#: src/emc/usr_intf/pncconf/pncconf.glade:45168 -#: src/emc/usr_intf/pncconf/pncconf.glade:45180 -#: src/emc/usr_intf/pncconf/pncconf.glade:45431 -#: src/emc/usr_intf/pncconf/pncconf.glade:45445 -#: src/emc/usr_intf/pncconf/pncconf.glade:47097 -#: src/emc/usr_intf/pncconf/pncconf.glade:47111 -#: src/emc/usr_intf/pncconf/pncconf.glade:52091 -#: src/emc/usr_intf/pncconf/pncconf.glade:52103 -#: src/emc/usr_intf/pncconf/pncconf.glade:52354 -#: src/emc/usr_intf/pncconf/pncconf.glade:52368 -msgid "Num" +#: src/emc/usr_intf/pncconf/pncconf.glade:65155 +msgid "" +"NO\n" +"YES" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8723 -#: src/emc/usr_intf/pncconf/pncconf.glade:8743 -#: src/emc/usr_intf/pncconf/pncconf.glade:8763 -#: src/emc/usr_intf/pncconf/pncconf.glade:8783 -#: src/emc/usr_intf/pncconf/pncconf.glade:8803 -#: src/emc/usr_intf/pncconf/pncconf.glade:8823 -#: src/emc/usr_intf/pncconf/pncconf.glade:8843 -#: src/emc/usr_intf/pncconf/pncconf.glade:8863 -#: src/emc/usr_intf/pncconf/pncconf.glade:8883 -#: src/emc/usr_intf/pncconf/pncconf.glade:8903 -#: src/emc/usr_intf/pncconf/pncconf.glade:8923 -#: src/emc/usr_intf/pncconf/pncconf.glade:8943 -#: src/emc/usr_intf/pncconf/pncconf.glade:8963 -#: src/emc/usr_intf/pncconf/pncconf.glade:8983 -#: src/emc/usr_intf/pncconf/pncconf.glade:9003 -#: src/emc/usr_intf/pncconf/pncconf.glade:9023 -#: src/emc/usr_intf/pncconf/pncconf.glade:9043 -#: src/emc/usr_intf/pncconf/pncconf.glade:9063 -#: src/emc/usr_intf/pncconf/pncconf.glade:9083 -#: src/emc/usr_intf/pncconf/pncconf.glade:9103 -#: src/emc/usr_intf/pncconf/pncconf.glade:9123 -#: src/emc/usr_intf/pncconf/pncconf.glade:9143 -#: src/emc/usr_intf/pncconf/pncconf.glade:9163 -#: src/emc/usr_intf/pncconf/pncconf.glade:11027 -#: src/emc/usr_intf/pncconf/pncconf.glade:11353 -#: src/emc/usr_intf/pncconf/pncconf.glade:13216 -#: src/emc/usr_intf/pncconf/pncconf.glade:13236 -#: src/emc/usr_intf/pncconf/pncconf.glade:13256 -#: src/emc/usr_intf/pncconf/pncconf.glade:13276 -#: src/emc/usr_intf/pncconf/pncconf.glade:13296 -#: src/emc/usr_intf/pncconf/pncconf.glade:13316 -#: src/emc/usr_intf/pncconf/pncconf.glade:13336 -#: src/emc/usr_intf/pncconf/pncconf.glade:13356 -#: src/emc/usr_intf/pncconf/pncconf.glade:13376 -#: src/emc/usr_intf/pncconf/pncconf.glade:13396 -#: src/emc/usr_intf/pncconf/pncconf.glade:13416 -#: src/emc/usr_intf/pncconf/pncconf.glade:13436 -#: src/emc/usr_intf/pncconf/pncconf.glade:13456 -#: src/emc/usr_intf/pncconf/pncconf.glade:13476 -#: src/emc/usr_intf/pncconf/pncconf.glade:13496 -#: src/emc/usr_intf/pncconf/pncconf.glade:13516 -#: src/emc/usr_intf/pncconf/pncconf.glade:13536 -#: src/emc/usr_intf/pncconf/pncconf.glade:13556 -#: src/emc/usr_intf/pncconf/pncconf.glade:13576 -#: src/emc/usr_intf/pncconf/pncconf.glade:13596 -#: src/emc/usr_intf/pncconf/pncconf.glade:13616 -#: src/emc/usr_intf/pncconf/pncconf.glade:13636 -#: src/emc/usr_intf/pncconf/pncconf.glade:13656 -#: src/emc/usr_intf/pncconf/pncconf.glade:13966 -#: src/emc/usr_intf/pncconf/pncconf.glade:15912 -#: src/emc/usr_intf/pncconf/pncconf.glade:15932 -#: src/emc/usr_intf/pncconf/pncconf.glade:15952 -#: src/emc/usr_intf/pncconf/pncconf.glade:15972 -#: src/emc/usr_intf/pncconf/pncconf.glade:15992 -#: src/emc/usr_intf/pncconf/pncconf.glade:16012 -#: src/emc/usr_intf/pncconf/pncconf.glade:16032 -#: src/emc/usr_intf/pncconf/pncconf.glade:16052 -#: src/emc/usr_intf/pncconf/pncconf.glade:16072 -#: src/emc/usr_intf/pncconf/pncconf.glade:16092 -#: src/emc/usr_intf/pncconf/pncconf.glade:16112 -#: src/emc/usr_intf/pncconf/pncconf.glade:16132 -#: src/emc/usr_intf/pncconf/pncconf.glade:16152 -#: src/emc/usr_intf/pncconf/pncconf.glade:16172 -#: src/emc/usr_intf/pncconf/pncconf.glade:16192 -#: src/emc/usr_intf/pncconf/pncconf.glade:16212 -#: src/emc/usr_intf/pncconf/pncconf.glade:16232 -#: src/emc/usr_intf/pncconf/pncconf.glade:16252 -#: src/emc/usr_intf/pncconf/pncconf.glade:16272 -#: src/emc/usr_intf/pncconf/pncconf.glade:16292 -#: src/emc/usr_intf/pncconf/pncconf.glade:16312 -#: src/emc/usr_intf/pncconf/pncconf.glade:16332 -#: src/emc/usr_intf/pncconf/pncconf.glade:16352 -#: src/emc/usr_intf/pncconf/pncconf.glade:16558 -#: src/emc/usr_intf/pncconf/pncconf.glade:18422 -#: src/emc/usr_intf/pncconf/pncconf.glade:18442 -#: src/emc/usr_intf/pncconf/pncconf.glade:18462 -#: src/emc/usr_intf/pncconf/pncconf.glade:18482 -#: src/emc/usr_intf/pncconf/pncconf.glade:18502 -#: src/emc/usr_intf/pncconf/pncconf.glade:18522 -#: src/emc/usr_intf/pncconf/pncconf.glade:18542 -#: src/emc/usr_intf/pncconf/pncconf.glade:18562 -#: src/emc/usr_intf/pncconf/pncconf.glade:18582 -#: src/emc/usr_intf/pncconf/pncconf.glade:18602 -#: src/emc/usr_intf/pncconf/pncconf.glade:18622 -#: src/emc/usr_intf/pncconf/pncconf.glade:18642 -#: src/emc/usr_intf/pncconf/pncconf.glade:18662 -#: src/emc/usr_intf/pncconf/pncconf.glade:18682 -#: src/emc/usr_intf/pncconf/pncconf.glade:18702 -#: src/emc/usr_intf/pncconf/pncconf.glade:18722 -#: src/emc/usr_intf/pncconf/pncconf.glade:18742 -#: src/emc/usr_intf/pncconf/pncconf.glade:18762 -#: src/emc/usr_intf/pncconf/pncconf.glade:18782 -#: src/emc/usr_intf/pncconf/pncconf.glade:18802 -#: src/emc/usr_intf/pncconf/pncconf.glade:18822 -#: src/emc/usr_intf/pncconf/pncconf.glade:18842 -#: src/emc/usr_intf/pncconf/pncconf.glade:18862 -#: src/emc/usr_intf/pncconf/pncconf.glade:26355 -#: src/emc/usr_intf/pncconf/pncconf.glade:26375 -#: src/emc/usr_intf/pncconf/pncconf.glade:26395 -#: src/emc/usr_intf/pncconf/pncconf.glade:26415 -#: src/emc/usr_intf/pncconf/pncconf.glade:26435 -#: src/emc/usr_intf/pncconf/pncconf.glade:26455 -#: src/emc/usr_intf/pncconf/pncconf.glade:26475 -#: src/emc/usr_intf/pncconf/pncconf.glade:26495 -#: src/emc/usr_intf/pncconf/pncconf.glade:26515 -#: src/emc/usr_intf/pncconf/pncconf.glade:26535 -#: src/emc/usr_intf/pncconf/pncconf.glade:26555 -#: src/emc/usr_intf/pncconf/pncconf.glade:26575 -#: src/emc/usr_intf/pncconf/pncconf.glade:26595 -#: src/emc/usr_intf/pncconf/pncconf.glade:26615 -#: src/emc/usr_intf/pncconf/pncconf.glade:26635 -#: src/emc/usr_intf/pncconf/pncconf.glade:26655 -#: src/emc/usr_intf/pncconf/pncconf.glade:26675 -#: src/emc/usr_intf/pncconf/pncconf.glade:26695 -#: src/emc/usr_intf/pncconf/pncconf.glade:26715 -#: src/emc/usr_intf/pncconf/pncconf.glade:26735 -#: src/emc/usr_intf/pncconf/pncconf.glade:26755 -#: src/emc/usr_intf/pncconf/pncconf.glade:26775 -#: src/emc/usr_intf/pncconf/pncconf.glade:26795 -#: src/emc/usr_intf/pncconf/pncconf.glade:28711 -#: src/emc/usr_intf/pncconf/pncconf.glade:28934 -#: src/emc/usr_intf/pncconf/pncconf.glade:30863 -#: src/emc/usr_intf/pncconf/pncconf.glade:30883 -#: src/emc/usr_intf/pncconf/pncconf.glade:30903 -#: src/emc/usr_intf/pncconf/pncconf.glade:30923 -#: src/emc/usr_intf/pncconf/pncconf.glade:30943 -#: src/emc/usr_intf/pncconf/pncconf.glade:30963 -#: src/emc/usr_intf/pncconf/pncconf.glade:30983 -#: src/emc/usr_intf/pncconf/pncconf.glade:31003 -#: src/emc/usr_intf/pncconf/pncconf.glade:31023 -#: src/emc/usr_intf/pncconf/pncconf.glade:31043 -#: src/emc/usr_intf/pncconf/pncconf.glade:31063 -#: src/emc/usr_intf/pncconf/pncconf.glade:31083 -#: src/emc/usr_intf/pncconf/pncconf.glade:31103 -#: src/emc/usr_intf/pncconf/pncconf.glade:31123 -#: src/emc/usr_intf/pncconf/pncconf.glade:31143 -#: src/emc/usr_intf/pncconf/pncconf.glade:31163 -#: src/emc/usr_intf/pncconf/pncconf.glade:31183 -#: src/emc/usr_intf/pncconf/pncconf.glade:31203 -#: src/emc/usr_intf/pncconf/pncconf.glade:31223 -#: src/emc/usr_intf/pncconf/pncconf.glade:31243 -#: src/emc/usr_intf/pncconf/pncconf.glade:31263 -#: src/emc/usr_intf/pncconf/pncconf.glade:31283 -#: src/emc/usr_intf/pncconf/pncconf.glade:31303 -#: src/emc/usr_intf/pncconf/pncconf.glade:31611 -#: src/emc/usr_intf/pncconf/pncconf.glade:31631 -#: src/emc/usr_intf/pncconf/pncconf.glade:31651 -#: src/emc/usr_intf/pncconf/pncconf.glade:31671 -#: src/emc/usr_intf/pncconf/pncconf.glade:31691 -#: src/emc/usr_intf/pncconf/pncconf.glade:31711 -#: src/emc/usr_intf/pncconf/pncconf.glade:31731 -#: src/emc/usr_intf/pncconf/pncconf.glade:31751 -#: src/emc/usr_intf/pncconf/pncconf.glade:31771 -#: src/emc/usr_intf/pncconf/pncconf.glade:31791 -#: src/emc/usr_intf/pncconf/pncconf.glade:31811 -#: src/emc/usr_intf/pncconf/pncconf.glade:33029 -#: src/emc/usr_intf/pncconf/pncconf.glade:33292 -#: src/emc/usr_intf/pncconf/pncconf.glade:35208 -#: src/emc/usr_intf/pncconf/pncconf.glade:35228 -#: src/emc/usr_intf/pncconf/pncconf.glade:35248 -#: src/emc/usr_intf/pncconf/pncconf.glade:35268 -#: src/emc/usr_intf/pncconf/pncconf.glade:35288 -#: src/emc/usr_intf/pncconf/pncconf.glade:35308 -#: src/emc/usr_intf/pncconf/pncconf.glade:35328 -#: src/emc/usr_intf/pncconf/pncconf.glade:35348 -#: src/emc/usr_intf/pncconf/pncconf.glade:35368 -#: src/emc/usr_intf/pncconf/pncconf.glade:35388 -#: src/emc/usr_intf/pncconf/pncconf.glade:35408 -#: src/emc/usr_intf/pncconf/pncconf.glade:35428 -#: src/emc/usr_intf/pncconf/pncconf.glade:35448 -#: src/emc/usr_intf/pncconf/pncconf.glade:35468 -#: src/emc/usr_intf/pncconf/pncconf.glade:35488 -#: src/emc/usr_intf/pncconf/pncconf.glade:35508 -#: src/emc/usr_intf/pncconf/pncconf.glade:35528 -#: src/emc/usr_intf/pncconf/pncconf.glade:35548 -#: src/emc/usr_intf/pncconf/pncconf.glade:35568 -#: src/emc/usr_intf/pncconf/pncconf.glade:35588 -#: src/emc/usr_intf/pncconf/pncconf.glade:35608 -#: src/emc/usr_intf/pncconf/pncconf.glade:35628 -#: src/emc/usr_intf/pncconf/pncconf.glade:35648 -#: src/emc/usr_intf/pncconf/pncconf.glade:35839 -#: src/emc/usr_intf/pncconf/pncconf.glade:35859 -#: src/emc/usr_intf/pncconf/pncconf.glade:35879 -#: src/emc/usr_intf/pncconf/pncconf.glade:35899 -#: src/emc/usr_intf/pncconf/pncconf.glade:35919 -#: src/emc/usr_intf/pncconf/pncconf.glade:35939 -#: src/emc/usr_intf/pncconf/pncconf.glade:35959 -#: src/emc/usr_intf/pncconf/pncconf.glade:35979 -#: src/emc/usr_intf/pncconf/pncconf.glade:35999 -#: src/emc/usr_intf/pncconf/pncconf.glade:36019 -#: src/emc/usr_intf/pncconf/pncconf.glade:36039 -#: src/emc/usr_intf/pncconf/pncconf.glade:36059 -#: src/emc/usr_intf/pncconf/pncconf.glade:36079 -#: src/emc/usr_intf/pncconf/pncconf.glade:36099 -#: src/emc/usr_intf/pncconf/pncconf.glade:36119 -#: src/emc/usr_intf/pncconf/pncconf.glade:36139 -#: src/emc/usr_intf/pncconf/pncconf.glade:36159 -#: src/emc/usr_intf/pncconf/pncconf.glade:36179 -#: src/emc/usr_intf/pncconf/pncconf.glade:36199 -#: src/emc/usr_intf/pncconf/pncconf.glade:36219 -#: src/emc/usr_intf/pncconf/pncconf.glade:36239 -#: src/emc/usr_intf/pncconf/pncconf.glade:36259 -#: src/emc/usr_intf/pncconf/pncconf.glade:36279 -#: src/emc/usr_intf/pncconf/pncconf.glade:38208 -#: src/emc/usr_intf/pncconf/pncconf.glade:38549 -#: src/emc/usr_intf/pncconf/pncconf.glade:39779 -#: src/emc/usr_intf/pncconf/pncconf.glade:39799 -#: src/emc/usr_intf/pncconf/pncconf.glade:39819 -#: src/emc/usr_intf/pncconf/pncconf.glade:39839 -#: src/emc/usr_intf/pncconf/pncconf.glade:39859 -#: src/emc/usr_intf/pncconf/pncconf.glade:39879 -#: src/emc/usr_intf/pncconf/pncconf.glade:39899 -#: src/emc/usr_intf/pncconf/pncconf.glade:39919 -#: src/emc/usr_intf/pncconf/pncconf.glade:39939 -#: src/emc/usr_intf/pncconf/pncconf.glade:39959 -#: src/emc/usr_intf/pncconf/pncconf.glade:39979 -#: src/emc/usr_intf/pncconf/pncconf.glade:40199 -#: src/emc/usr_intf/pncconf/pncconf.glade:40219 -#: src/emc/usr_intf/pncconf/pncconf.glade:40239 -#: src/emc/usr_intf/pncconf/pncconf.glade:40259 -#: src/emc/usr_intf/pncconf/pncconf.glade:40279 -#: src/emc/usr_intf/pncconf/pncconf.glade:40299 -#: src/emc/usr_intf/pncconf/pncconf.glade:40319 -#: src/emc/usr_intf/pncconf/pncconf.glade:40339 -#: src/emc/usr_intf/pncconf/pncconf.glade:40359 -#: src/emc/usr_intf/pncconf/pncconf.glade:40379 -#: src/emc/usr_intf/pncconf/pncconf.glade:40399 -#: src/emc/usr_intf/pncconf/pncconf.glade:40419 -#: src/emc/usr_intf/pncconf/pncconf.glade:40439 -#: src/emc/usr_intf/pncconf/pncconf.glade:40459 -#: src/emc/usr_intf/pncconf/pncconf.glade:40479 -#: src/emc/usr_intf/pncconf/pncconf.glade:40499 -#: src/emc/usr_intf/pncconf/pncconf.glade:40519 -#: src/emc/usr_intf/pncconf/pncconf.glade:40539 -#: src/emc/usr_intf/pncconf/pncconf.glade:40559 -#: src/emc/usr_intf/pncconf/pncconf.glade:40579 -#: src/emc/usr_intf/pncconf/pncconf.glade:40599 -#: src/emc/usr_intf/pncconf/pncconf.glade:40619 -#: src/emc/usr_intf/pncconf/pncconf.glade:40639 -#: src/emc/usr_intf/pncconf/pncconf.glade:42555 -#: src/emc/usr_intf/pncconf/pncconf.glade:42778 -#: src/emc/usr_intf/pncconf/pncconf.glade:44707 -#: src/emc/usr_intf/pncconf/pncconf.glade:44727 -#: src/emc/usr_intf/pncconf/pncconf.glade:44747 -#: src/emc/usr_intf/pncconf/pncconf.glade:44767 -#: src/emc/usr_intf/pncconf/pncconf.glade:44787 -#: src/emc/usr_intf/pncconf/pncconf.glade:44807 -#: src/emc/usr_intf/pncconf/pncconf.glade:44827 -#: src/emc/usr_intf/pncconf/pncconf.glade:44847 -#: src/emc/usr_intf/pncconf/pncconf.glade:44867 -#: src/emc/usr_intf/pncconf/pncconf.glade:44887 -#: src/emc/usr_intf/pncconf/pncconf.glade:44907 -#: src/emc/usr_intf/pncconf/pncconf.glade:44927 -#: src/emc/usr_intf/pncconf/pncconf.glade:44947 -#: src/emc/usr_intf/pncconf/pncconf.glade:44967 -#: src/emc/usr_intf/pncconf/pncconf.glade:44987 -#: src/emc/usr_intf/pncconf/pncconf.glade:45007 -#: src/emc/usr_intf/pncconf/pncconf.glade:45027 -#: src/emc/usr_intf/pncconf/pncconf.glade:45047 -#: src/emc/usr_intf/pncconf/pncconf.glade:45067 -#: src/emc/usr_intf/pncconf/pncconf.glade:45087 -#: src/emc/usr_intf/pncconf/pncconf.glade:45107 -#: src/emc/usr_intf/pncconf/pncconf.glade:45127 -#: src/emc/usr_intf/pncconf/pncconf.glade:45147 -#: src/emc/usr_intf/pncconf/pncconf.glade:45456 -#: src/emc/usr_intf/pncconf/pncconf.glade:45476 -#: src/emc/usr_intf/pncconf/pncconf.glade:45496 -#: src/emc/usr_intf/pncconf/pncconf.glade:45516 -#: src/emc/usr_intf/pncconf/pncconf.glade:45536 -#: src/emc/usr_intf/pncconf/pncconf.glade:45556 -#: src/emc/usr_intf/pncconf/pncconf.glade:45576 -#: src/emc/usr_intf/pncconf/pncconf.glade:45596 -#: src/emc/usr_intf/pncconf/pncconf.glade:45616 -#: src/emc/usr_intf/pncconf/pncconf.glade:45636 -#: src/emc/usr_intf/pncconf/pncconf.glade:45656 -#: src/emc/usr_intf/pncconf/pncconf.glade:46886 -#: src/emc/usr_intf/pncconf/pncconf.glade:47122 -#: src/emc/usr_intf/pncconf/pncconf.glade:47142 -#: src/emc/usr_intf/pncconf/pncconf.glade:47162 -#: src/emc/usr_intf/pncconf/pncconf.glade:47182 -#: src/emc/usr_intf/pncconf/pncconf.glade:47202 -#: src/emc/usr_intf/pncconf/pncconf.glade:47222 -#: src/emc/usr_intf/pncconf/pncconf.glade:47242 -#: src/emc/usr_intf/pncconf/pncconf.glade:47262 -#: src/emc/usr_intf/pncconf/pncconf.glade:47282 -#: src/emc/usr_intf/pncconf/pncconf.glade:47302 -#: src/emc/usr_intf/pncconf/pncconf.glade:47322 -#: src/emc/usr_intf/pncconf/pncconf.glade:47342 -#: src/emc/usr_intf/pncconf/pncconf.glade:47362 -#: src/emc/usr_intf/pncconf/pncconf.glade:47382 -#: src/emc/usr_intf/pncconf/pncconf.glade:47402 -#: src/emc/usr_intf/pncconf/pncconf.glade:47422 -#: src/emc/usr_intf/pncconf/pncconf.glade:47442 -#: src/emc/usr_intf/pncconf/pncconf.glade:47462 -#: src/emc/usr_intf/pncconf/pncconf.glade:47482 -#: src/emc/usr_intf/pncconf/pncconf.glade:47502 -#: src/emc/usr_intf/pncconf/pncconf.glade:47522 -#: src/emc/usr_intf/pncconf/pncconf.glade:47542 -#: src/emc/usr_intf/pncconf/pncconf.glade:47562 -#: src/emc/usr_intf/pncconf/pncconf.glade:49478 -#: src/emc/usr_intf/pncconf/pncconf.glade:49701 -#: src/emc/usr_intf/pncconf/pncconf.glade:51630 -#: src/emc/usr_intf/pncconf/pncconf.glade:51650 -#: src/emc/usr_intf/pncconf/pncconf.glade:51670 -#: src/emc/usr_intf/pncconf/pncconf.glade:51690 -#: src/emc/usr_intf/pncconf/pncconf.glade:51710 -#: src/emc/usr_intf/pncconf/pncconf.glade:51730 -#: src/emc/usr_intf/pncconf/pncconf.glade:51750 -#: src/emc/usr_intf/pncconf/pncconf.glade:51770 -#: src/emc/usr_intf/pncconf/pncconf.glade:51790 -#: src/emc/usr_intf/pncconf/pncconf.glade:51810 -#: src/emc/usr_intf/pncconf/pncconf.glade:51830 -#: src/emc/usr_intf/pncconf/pncconf.glade:51850 -#: src/emc/usr_intf/pncconf/pncconf.glade:51870 -#: src/emc/usr_intf/pncconf/pncconf.glade:51890 -#: src/emc/usr_intf/pncconf/pncconf.glade:51910 -#: src/emc/usr_intf/pncconf/pncconf.glade:51930 -#: src/emc/usr_intf/pncconf/pncconf.glade:51950 -#: src/emc/usr_intf/pncconf/pncconf.glade:51970 -#: src/emc/usr_intf/pncconf/pncconf.glade:51990 -#: src/emc/usr_intf/pncconf/pncconf.glade:52010 -#: src/emc/usr_intf/pncconf/pncconf.glade:52030 -#: src/emc/usr_intf/pncconf/pncconf.glade:52050 -#: src/emc/usr_intf/pncconf/pncconf.glade:52070 -#: src/emc/usr_intf/pncconf/pncconf.glade:52379 -#: src/emc/usr_intf/pncconf/pncconf.glade:52399 -#: src/emc/usr_intf/pncconf/pncconf.glade:52419 -#: src/emc/usr_intf/pncconf/pncconf.glade:52439 -#: src/emc/usr_intf/pncconf/pncconf.glade:52459 -#: src/emc/usr_intf/pncconf/pncconf.glade:52479 -#: src/emc/usr_intf/pncconf/pncconf.glade:52499 -#: src/emc/usr_intf/pncconf/pncconf.glade:52519 -#: src/emc/usr_intf/pncconf/pncconf.glade:52539 -#: src/emc/usr_intf/pncconf/pncconf.glade:52559 -#: src/emc/usr_intf/pncconf/pncconf.glade:52579 -#: src/emc/usr_intf/pncconf/pncconf.glade:53809 -msgid "" -"GPIO Input\n" -"GPIO Output\n" -"GPIO O Drain\n" -"Encoder\n" -"PWM\n" -"StepGen\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:65171 +msgid "Use Encoder Index For Home:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9198 -#: src/emc/usr_intf/pncconf/pncconf.glade:13188 -#: src/emc/usr_intf/pncconf/pncconf.glade:15884 -#: src/emc/usr_intf/pncconf/pncconf.glade:18394 -#: src/emc/usr_intf/pncconf/pncconf.glade:20397 -#: src/emc/usr_intf/pncconf/pncconf.glade:21325 -#: src/emc/usr_intf/pncconf/pncconf.glade:23121 -#: src/emc/usr_intf/pncconf/pncconf.glade:24917 -msgid "Launch test panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:65212 +msgid "Home Final Velocity:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9213 -#: src/emc/usr_intf/pncconf/pncconf.glade:9225 -#: src/emc/usr_intf/pncconf/pncconf.glade:13162 -#: src/emc/usr_intf/pncconf/pncconf.glade:13174 -#: src/emc/usr_intf/pncconf/pncconf.glade:15858 -#: src/emc/usr_intf/pncconf/pncconf.glade:15870 -#: src/emc/usr_intf/pncconf/pncconf.glade:18367 -#: src/emc/usr_intf/pncconf/pncconf.glade:18379 -#: src/emc/usr_intf/pncconf/pncconf.glade:20370 -#: src/emc/usr_intf/pncconf/pncconf.glade:20382 -#: src/emc/usr_intf/pncconf/pncconf.glade:21339 -#: src/emc/usr_intf/pncconf/pncconf.glade:21351 -#: src/emc/usr_intf/pncconf/pncconf.glade:23135 -#: src/emc/usr_intf/pncconf/pncconf.glade:23147 -#: src/emc/usr_intf/pncconf/pncconf.glade:24931 -#: src/emc/usr_intf/pncconf/pncconf.glade:24943 -#: src/emc/usr_intf/pncconf/pncconf.glade:26815 -#: src/emc/usr_intf/pncconf/pncconf.glade:26827 -#: src/emc/usr_intf/pncconf/pncconf.glade:30826 -#: src/emc/usr_intf/pncconf/pncconf.glade:30838 -#: src/emc/usr_intf/pncconf/pncconf.glade:31831 -#: src/emc/usr_intf/pncconf/pncconf.glade:35184 -#: src/emc/usr_intf/pncconf/pncconf.glade:35196 -#: src/emc/usr_intf/pncconf/pncconf.glade:36312 -#: src/emc/usr_intf/pncconf/pncconf.glade:36324 -#: src/emc/usr_intf/pncconf/pncconf.glade:39755 -#: src/emc/usr_intf/pncconf/pncconf.glade:39767 -#: src/emc/usr_intf/pncconf/pncconf.glade:40659 -#: src/emc/usr_intf/pncconf/pncconf.glade:40671 -#: src/emc/usr_intf/pncconf/pncconf.glade:44670 -#: src/emc/usr_intf/pncconf/pncconf.glade:44682 -#: src/emc/usr_intf/pncconf/pncconf.glade:45676 -#: src/emc/usr_intf/pncconf/pncconf.glade:45688 -#: src/emc/usr_intf/pncconf/pncconf.glade:47582 -#: src/emc/usr_intf/pncconf/pncconf.glade:47594 -#: src/emc/usr_intf/pncconf/pncconf.glade:51593 -#: src/emc/usr_intf/pncconf/pncconf.glade:51605 -#: src/emc/usr_intf/pncconf/pncconf.glade:52599 -#: src/emc/usr_intf/pncconf/pncconf.glade:52611 -msgid "function" +#: src/emc/usr_intf/pncconf/pncconf.glade:65222 +msgid "" +"Same\n" +"Opposite" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9305 -#: src/emc/usr_intf/pncconf/pncconf.glade:9357 -#: src/emc/usr_intf/pncconf/pncconf.glade:9409 -#: src/emc/usr_intf/pncconf/pncconf.glade:9461 -#: src/emc/usr_intf/pncconf/pncconf.glade:10301 -#: src/emc/usr_intf/pncconf/pncconf.glade:10353 -#: src/emc/usr_intf/pncconf/pncconf.glade:10405 -#: src/emc/usr_intf/pncconf/pncconf.glade:10457 -#: src/emc/usr_intf/pncconf/pncconf.glade:10509 -#: src/emc/usr_intf/pncconf/pncconf.glade:10561 -#: src/emc/usr_intf/pncconf/pncconf.glade:10613 -#: src/emc/usr_intf/pncconf/pncconf.glade:10665 -#: src/emc/usr_intf/pncconf/pncconf.glade:10717 -#: src/emc/usr_intf/pncconf/pncconf.glade:10769 -#: src/emc/usr_intf/pncconf/pncconf.glade:11089 -#: src/emc/usr_intf/pncconf/pncconf.glade:11141 -#: src/emc/usr_intf/pncconf/pncconf.glade:11579 -#: src/emc/usr_intf/pncconf/pncconf.glade:11631 -#: src/emc/usr_intf/pncconf/pncconf.glade:11683 -#: src/emc/usr_intf/pncconf/pncconf.glade:11735 -#: src/emc/usr_intf/pncconf/pncconf.glade:11787 -#: src/emc/usr_intf/pncconf/pncconf.glade:11839 -#: src/emc/usr_intf/pncconf/pncconf.glade:11891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11943 -#: src/emc/usr_intf/pncconf/pncconf.glade:11995 -#: src/emc/usr_intf/pncconf/pncconf.glade:12047 -#: src/emc/usr_intf/pncconf/pncconf.glade:12886 -#: src/emc/usr_intf/pncconf/pncconf.glade:12938 -#: src/emc/usr_intf/pncconf/pncconf.glade:12990 -#: src/emc/usr_intf/pncconf/pncconf.glade:13042 -#: src/emc/usr_intf/pncconf/pncconf.glade:13702 -#: src/emc/usr_intf/pncconf/pncconf.glade:13754 -#: src/emc/usr_intf/pncconf/pncconf.glade:14183 -#: src/emc/usr_intf/pncconf/pncconf.glade:14235 -#: src/emc/usr_intf/pncconf/pncconf.glade:14287 -#: src/emc/usr_intf/pncconf/pncconf.glade:14339 -#: src/emc/usr_intf/pncconf/pncconf.glade:14391 -#: src/emc/usr_intf/pncconf/pncconf.glade:14443 -#: src/emc/usr_intf/pncconf/pncconf.glade:14495 -#: src/emc/usr_intf/pncconf/pncconf.glade:14547 -#: src/emc/usr_intf/pncconf/pncconf.glade:14599 -#: src/emc/usr_intf/pncconf/pncconf.glade:14651 -#: src/emc/usr_intf/pncconf/pncconf.glade:14703 -#: src/emc/usr_intf/pncconf/pncconf.glade:14755 -#: src/emc/usr_intf/pncconf/pncconf.glade:15582 -#: src/emc/usr_intf/pncconf/pncconf.glade:15634 -#: src/emc/usr_intf/pncconf/pncconf.glade:15686 -#: src/emc/usr_intf/pncconf/pncconf.glade:15738 -#: src/emc/usr_intf/pncconf/pncconf.glade:16784 -#: src/emc/usr_intf/pncconf/pncconf.glade:16836 -#: src/emc/usr_intf/pncconf/pncconf.glade:16888 -#: src/emc/usr_intf/pncconf/pncconf.glade:16940 -#: src/emc/usr_intf/pncconf/pncconf.glade:16992 -#: src/emc/usr_intf/pncconf/pncconf.glade:17044 -#: src/emc/usr_intf/pncconf/pncconf.glade:17096 -#: src/emc/usr_intf/pncconf/pncconf.glade:17148 -#: src/emc/usr_intf/pncconf/pncconf.glade:17200 -#: src/emc/usr_intf/pncconf/pncconf.glade:17252 -#: src/emc/usr_intf/pncconf/pncconf.glade:17304 -#: src/emc/usr_intf/pncconf/pncconf.glade:18143 -#: src/emc/usr_intf/pncconf/pncconf.glade:18195 -#: src/emc/usr_intf/pncconf/pncconf.glade:18247 -#: src/emc/usr_intf/pncconf/pncconf.glade:18908 -#: src/emc/usr_intf/pncconf/pncconf.glade:18960 -#: src/emc/usr_intf/pncconf/pncconf.glade:26907 -#: src/emc/usr_intf/pncconf/pncconf.glade:26959 -#: src/emc/usr_intf/pncconf/pncconf.glade:27011 -#: src/emc/usr_intf/pncconf/pncconf.glade:27063 -#: src/emc/usr_intf/pncconf/pncconf.glade:27890 -#: src/emc/usr_intf/pncconf/pncconf.glade:27942 -#: src/emc/usr_intf/pncconf/pncconf.glade:27994 -#: src/emc/usr_intf/pncconf/pncconf.glade:28046 -#: src/emc/usr_intf/pncconf/pncconf.glade:28098 -#: src/emc/usr_intf/pncconf/pncconf.glade:28150 -#: src/emc/usr_intf/pncconf/pncconf.glade:28202 -#: src/emc/usr_intf/pncconf/pncconf.glade:28254 -#: src/emc/usr_intf/pncconf/pncconf.glade:28306 -#: src/emc/usr_intf/pncconf/pncconf.glade:28358 -#: src/emc/usr_intf/pncconf/pncconf.glade:28410 -#: src/emc/usr_intf/pncconf/pncconf.glade:28462 -#: src/emc/usr_intf/pncconf/pncconf.glade:29151 -#: src/emc/usr_intf/pncconf/pncconf.glade:29203 -#: src/emc/usr_intf/pncconf/pncconf.glade:29255 -#: src/emc/usr_intf/pncconf/pncconf.glade:29307 -#: src/emc/usr_intf/pncconf/pncconf.glade:29359 -#: src/emc/usr_intf/pncconf/pncconf.glade:29411 -#: src/emc/usr_intf/pncconf/pncconf.glade:29463 -#: src/emc/usr_intf/pncconf/pncconf.glade:29515 -#: src/emc/usr_intf/pncconf/pncconf.glade:29567 -#: src/emc/usr_intf/pncconf/pncconf.glade:29619 -#: src/emc/usr_intf/pncconf/pncconf.glade:29671 -#: src/emc/usr_intf/pncconf/pncconf.glade:29723 -#: src/emc/usr_intf/pncconf/pncconf.glade:30550 -#: src/emc/usr_intf/pncconf/pncconf.glade:30602 -#: src/emc/usr_intf/pncconf/pncconf.glade:30654 -#: src/emc/usr_intf/pncconf/pncconf.glade:30706 -#: src/emc/usr_intf/pncconf/pncconf.glade:32210 -#: src/emc/usr_intf/pncconf/pncconf.glade:32262 -#: src/emc/usr_intf/pncconf/pncconf.glade:32314 -#: src/emc/usr_intf/pncconf/pncconf.glade:32366 -#: src/emc/usr_intf/pncconf/pncconf.glade:32418 -#: src/emc/usr_intf/pncconf/pncconf.glade:32470 -#: src/emc/usr_intf/pncconf/pncconf.glade:32522 -#: src/emc/usr_intf/pncconf/pncconf.glade:32574 -#: src/emc/usr_intf/pncconf/pncconf.glade:32626 -#: src/emc/usr_intf/pncconf/pncconf.glade:32678 -#: src/emc/usr_intf/pncconf/pncconf.glade:32730 -#: src/emc/usr_intf/pncconf/pncconf.glade:32782 -#: src/emc/usr_intf/pncconf/pncconf.glade:33509 -#: src/emc/usr_intf/pncconf/pncconf.glade:33561 -#: src/emc/usr_intf/pncconf/pncconf.glade:33613 -#: src/emc/usr_intf/pncconf/pncconf.glade:33665 -#: src/emc/usr_intf/pncconf/pncconf.glade:33717 -#: src/emc/usr_intf/pncconf/pncconf.glade:33769 -#: src/emc/usr_intf/pncconf/pncconf.glade:33821 -#: src/emc/usr_intf/pncconf/pncconf.glade:33873 -#: src/emc/usr_intf/pncconf/pncconf.glade:33925 -#: src/emc/usr_intf/pncconf/pncconf.glade:33977 -#: src/emc/usr_intf/pncconf/pncconf.glade:34029 -#: src/emc/usr_intf/pncconf/pncconf.glade:34081 -#: src/emc/usr_intf/pncconf/pncconf.glade:34908 -#: src/emc/usr_intf/pncconf/pncconf.glade:34960 -#: src/emc/usr_intf/pncconf/pncconf.glade:35012 -#: src/emc/usr_intf/pncconf/pncconf.glade:35064 -#: src/emc/usr_intf/pncconf/pncconf.glade:36404 -#: src/emc/usr_intf/pncconf/pncconf.glade:36456 -#: src/emc/usr_intf/pncconf/pncconf.glade:36508 -#: src/emc/usr_intf/pncconf/pncconf.glade:36560 -#: src/emc/usr_intf/pncconf/pncconf.glade:37387 -#: src/emc/usr_intf/pncconf/pncconf.glade:37439 -#: src/emc/usr_intf/pncconf/pncconf.glade:37491 -#: src/emc/usr_intf/pncconf/pncconf.glade:37543 -#: src/emc/usr_intf/pncconf/pncconf.glade:37595 -#: src/emc/usr_intf/pncconf/pncconf.glade:37647 -#: src/emc/usr_intf/pncconf/pncconf.glade:37699 -#: src/emc/usr_intf/pncconf/pncconf.glade:37751 -#: src/emc/usr_intf/pncconf/pncconf.glade:37803 -#: src/emc/usr_intf/pncconf/pncconf.glade:37855 -#: src/emc/usr_intf/pncconf/pncconf.glade:37907 -#: src/emc/usr_intf/pncconf/pncconf.glade:37959 -#: src/emc/usr_intf/pncconf/pncconf.glade:38764 -#: src/emc/usr_intf/pncconf/pncconf.glade:38816 -#: src/emc/usr_intf/pncconf/pncconf.glade:38868 -#: src/emc/usr_intf/pncconf/pncconf.glade:38920 -#: src/emc/usr_intf/pncconf/pncconf.glade:38972 -#: src/emc/usr_intf/pncconf/pncconf.glade:39024 -#: src/emc/usr_intf/pncconf/pncconf.glade:39076 -#: src/emc/usr_intf/pncconf/pncconf.glade:39128 -#: src/emc/usr_intf/pncconf/pncconf.glade:39180 -#: src/emc/usr_intf/pncconf/pncconf.glade:39232 -#: src/emc/usr_intf/pncconf/pncconf.glade:39284 -#: src/emc/usr_intf/pncconf/pncconf.glade:39336 -#: src/emc/usr_intf/pncconf/pncconf.glade:40751 -#: src/emc/usr_intf/pncconf/pncconf.glade:40803 -#: src/emc/usr_intf/pncconf/pncconf.glade:40855 -#: src/emc/usr_intf/pncconf/pncconf.glade:40907 -#: src/emc/usr_intf/pncconf/pncconf.glade:41734 -#: src/emc/usr_intf/pncconf/pncconf.glade:41786 -#: src/emc/usr_intf/pncconf/pncconf.glade:41838 -#: src/emc/usr_intf/pncconf/pncconf.glade:41890 -#: src/emc/usr_intf/pncconf/pncconf.glade:41942 -#: src/emc/usr_intf/pncconf/pncconf.glade:41994 -#: src/emc/usr_intf/pncconf/pncconf.glade:42046 -#: src/emc/usr_intf/pncconf/pncconf.glade:42098 -#: src/emc/usr_intf/pncconf/pncconf.glade:42150 -#: src/emc/usr_intf/pncconf/pncconf.glade:42202 -#: src/emc/usr_intf/pncconf/pncconf.glade:42254 -#: src/emc/usr_intf/pncconf/pncconf.glade:42306 -#: src/emc/usr_intf/pncconf/pncconf.glade:42995 -#: src/emc/usr_intf/pncconf/pncconf.glade:43047 -#: src/emc/usr_intf/pncconf/pncconf.glade:43099 -#: src/emc/usr_intf/pncconf/pncconf.glade:43151 -#: src/emc/usr_intf/pncconf/pncconf.glade:43203 -#: src/emc/usr_intf/pncconf/pncconf.glade:43255 -#: src/emc/usr_intf/pncconf/pncconf.glade:43307 -#: src/emc/usr_intf/pncconf/pncconf.glade:43359 -#: src/emc/usr_intf/pncconf/pncconf.glade:43411 -#: src/emc/usr_intf/pncconf/pncconf.glade:43463 -#: src/emc/usr_intf/pncconf/pncconf.glade:43515 -#: src/emc/usr_intf/pncconf/pncconf.glade:43567 -#: src/emc/usr_intf/pncconf/pncconf.glade:44394 -#: src/emc/usr_intf/pncconf/pncconf.glade:44446 -#: src/emc/usr_intf/pncconf/pncconf.glade:44498 -#: src/emc/usr_intf/pncconf/pncconf.glade:44550 -#: src/emc/usr_intf/pncconf/pncconf.glade:46067 -#: src/emc/usr_intf/pncconf/pncconf.glade:46119 -#: src/emc/usr_intf/pncconf/pncconf.glade:46171 -#: src/emc/usr_intf/pncconf/pncconf.glade:46223 -#: src/emc/usr_intf/pncconf/pncconf.glade:46275 -#: src/emc/usr_intf/pncconf/pncconf.glade:46327 -#: src/emc/usr_intf/pncconf/pncconf.glade:46379 -#: src/emc/usr_intf/pncconf/pncconf.glade:46431 -#: src/emc/usr_intf/pncconf/pncconf.glade:46483 -#: src/emc/usr_intf/pncconf/pncconf.glade:46535 -#: src/emc/usr_intf/pncconf/pncconf.glade:46587 -#: src/emc/usr_intf/pncconf/pncconf.glade:46639 -#: src/emc/usr_intf/pncconf/pncconf.glade:47674 -#: src/emc/usr_intf/pncconf/pncconf.glade:47726 -#: src/emc/usr_intf/pncconf/pncconf.glade:47778 -#: src/emc/usr_intf/pncconf/pncconf.glade:47830 -#: src/emc/usr_intf/pncconf/pncconf.glade:48657 -#: src/emc/usr_intf/pncconf/pncconf.glade:48709 -#: src/emc/usr_intf/pncconf/pncconf.glade:48761 -#: src/emc/usr_intf/pncconf/pncconf.glade:48813 -#: src/emc/usr_intf/pncconf/pncconf.glade:48865 -#: src/emc/usr_intf/pncconf/pncconf.glade:48917 -#: src/emc/usr_intf/pncconf/pncconf.glade:48969 -#: src/emc/usr_intf/pncconf/pncconf.glade:49021 -#: src/emc/usr_intf/pncconf/pncconf.glade:49073 -#: src/emc/usr_intf/pncconf/pncconf.glade:49125 -#: src/emc/usr_intf/pncconf/pncconf.glade:49177 -#: src/emc/usr_intf/pncconf/pncconf.glade:49229 -#: src/emc/usr_intf/pncconf/pncconf.glade:49918 -#: src/emc/usr_intf/pncconf/pncconf.glade:49970 -#: src/emc/usr_intf/pncconf/pncconf.glade:50022 -#: src/emc/usr_intf/pncconf/pncconf.glade:50074 -#: src/emc/usr_intf/pncconf/pncconf.glade:50126 -#: src/emc/usr_intf/pncconf/pncconf.glade:50178 -#: src/emc/usr_intf/pncconf/pncconf.glade:50230 -#: src/emc/usr_intf/pncconf/pncconf.glade:50282 -#: src/emc/usr_intf/pncconf/pncconf.glade:50334 -#: src/emc/usr_intf/pncconf/pncconf.glade:50386 -#: src/emc/usr_intf/pncconf/pncconf.glade:50438 -#: src/emc/usr_intf/pncconf/pncconf.glade:50490 -#: src/emc/usr_intf/pncconf/pncconf.glade:51317 -#: src/emc/usr_intf/pncconf/pncconf.glade:51369 -#: src/emc/usr_intf/pncconf/pncconf.glade:51421 -#: src/emc/usr_intf/pncconf/pncconf.glade:51473 -#: src/emc/usr_intf/pncconf/pncconf.glade:52990 -#: src/emc/usr_intf/pncconf/pncconf.glade:53042 -#: src/emc/usr_intf/pncconf/pncconf.glade:53094 -#: src/emc/usr_intf/pncconf/pncconf.glade:53146 -#: src/emc/usr_intf/pncconf/pncconf.glade:53198 -#: src/emc/usr_intf/pncconf/pncconf.glade:53250 -#: src/emc/usr_intf/pncconf/pncconf.glade:53302 -#: src/emc/usr_intf/pncconf/pncconf.glade:53354 -#: src/emc/usr_intf/pncconf/pncconf.glade:53406 -#: src/emc/usr_intf/pncconf/pncconf.glade:53458 -#: src/emc/usr_intf/pncconf/pncconf.glade:53510 -#: src/emc/usr_intf/pncconf/pncconf.glade:53562 +#: src/emc/usr_intf/pncconf/pncconf.glade:65238 +msgid "Home Latch Direction:" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65251 msgid "" -"ESTOP IN\n" -"Spindle PPR\n" -"Spindle A \n" -"Spindle B \n" -"Home X \n" -"Home Y \n" -"Home Z\n" -"Home A\n" -"Minimum Limit + Home X \n" -"Minimum Limit + Home Y \n" -"Minimum Limit + Home Z \n" -"Minimum Limit + Home A\n" -"Maximum Limit + Home X \n" -"Maximum Limit + Home Y \n" -"Maximum Limit + Home Z \n" -"Maximum Limit + Home A\n" -"Both Limit + Home X \n" -"Both Limit + Home Y \n" -"Both Limit + Home Z \n" -"Both Limit + Home A\n" -"Minimum Limit X \n" -"Minimum Limit Y \n" -"Minimum Limit Z \n" -"Minimum Limit A\n" -"Maximum Limit X \n" -"Maximum Limit Y \n" -"Maximum Limit Z \n" -"Maximum Limit A\n" -"Both Limit X \n" -"Both Limit Y \n" -"Both Limit Z \n" -"Both Limit A\n" -"All limits\n" -"All home\n" -"Unused" +"Towards Negative limit\n" +"Towards Positive limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9515 -#: src/emc/usr_intf/pncconf/pncconf.glade:12871 -#: src/emc/usr_intf/pncconf/pncconf.glade:18128 -#: src/emc/usr_intf/pncconf/pncconf.glade:20233 -#: src/emc/usr_intf/pncconf/pncconf.glade:21486 -#: src/emc/usr_intf/pncconf/pncconf.glade:23282 -#: src/emc/usr_intf/pncconf/pncconf.glade:25078 -msgid "31:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65267 +msgid "Home Search Direction:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9531 -#: src/emc/usr_intf/pncconf/pncconf.glade:12855 -#: src/emc/usr_intf/pncconf/pncconf.glade:18112 -#: src/emc/usr_intf/pncconf/pncconf.glade:20217 -#: src/emc/usr_intf/pncconf/pncconf.glade:21502 -#: src/emc/usr_intf/pncconf/pncconf.glade:23298 -#: src/emc/usr_intf/pncconf/pncconf.glade:25094 -msgid "29:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65309 +msgid "Home latch Velocity:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9547 -#: src/emc/usr_intf/pncconf/pncconf.glade:12839 -#: src/emc/usr_intf/pncconf/pncconf.glade:18096 -#: src/emc/usr_intf/pncconf/pncconf.glade:20201 -#: src/emc/usr_intf/pncconf/pncconf.glade:21518 -#: src/emc/usr_intf/pncconf/pncconf.glade:23314 -#: src/emc/usr_intf/pncconf/pncconf.glade:25110 -msgid "27:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65334 +msgid "filename:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9563 -#: src/emc/usr_intf/pncconf/pncconf.glade:12823 -#: src/emc/usr_intf/pncconf/pncconf.glade:18080 -#: src/emc/usr_intf/pncconf/pncconf.glade:20185 -#: src/emc/usr_intf/pncconf/pncconf.glade:21534 -#: src/emc/usr_intf/pncconf/pncconf.glade:23330 -#: src/emc/usr_intf/pncconf/pncconf.glade:25126 -msgid "25:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65347 +msgid "" +"Type 1\n" +"Type 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9936 -#: src/emc/usr_intf/pncconf/pncconf.glade:12450 -#: src/emc/usr_intf/pncconf/pncconf.glade:17707 -#: src/emc/usr_intf/pncconf/pncconf.glade:19924 -#: src/emc/usr_intf/pncconf/pncconf.glade:21795 -#: src/emc/usr_intf/pncconf/pncconf.glade:23591 -#: src/emc/usr_intf/pncconf/pncconf.glade:25387 -msgid "33:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65392 +msgid "Use Compensation File:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9952 -#: src/emc/usr_intf/pncconf/pncconf.glade:12434 -#: src/emc/usr_intf/pncconf/pncconf.glade:17691 -#: src/emc/usr_intf/pncconf/pncconf.glade:19908 -#: src/emc/usr_intf/pncconf/pncconf.glade:21811 -#: src/emc/usr_intf/pncconf/pncconf.glade:23607 -#: src/emc/usr_intf/pncconf/pncconf.glade:25403 -msgid "35:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65406 +msgid "Use Backlash Compensation:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9968 -#: src/emc/usr_intf/pncconf/pncconf.glade:12418 -#: src/emc/usr_intf/pncconf/pncconf.glade:17675 -#: src/emc/usr_intf/pncconf/pncconf.glade:19892 -#: src/emc/usr_intf/pncconf/pncconf.glade:21827 -#: src/emc/usr_intf/pncconf/pncconf.glade:23623 -#: src/emc/usr_intf/pncconf/pncconf.glade:25419 -msgid "37:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65433 +msgid "Home Position location (offset from machine zero Origin):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9984 -#: src/emc/usr_intf/pncconf/pncconf.glade:12402 -#: src/emc/usr_intf/pncconf/pncconf.glade:17659 -#: src/emc/usr_intf/pncconf/pncconf.glade:19876 -#: src/emc/usr_intf/pncconf/pncconf.glade:21843 -#: src/emc/usr_intf/pncconf/pncconf.glade:23639 -#: src/emc/usr_intf/pncconf/pncconf.glade:25435 -msgid "39:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65449 +msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10000 -#: src/emc/usr_intf/pncconf/pncconf.glade:12386 -#: src/emc/usr_intf/pncconf/pncconf.glade:17643 -#: src/emc/usr_intf/pncconf/pncconf.glade:19860 -#: src/emc/usr_intf/pncconf/pncconf.glade:21859 -#: src/emc/usr_intf/pncconf/pncconf.glade:23655 -#: src/emc/usr_intf/pncconf/pncconf.glade:25451 -msgid "41:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65493 +msgid "Home Switch location (Offset from machine zero Origin):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10016 -#: src/emc/usr_intf/pncconf/pncconf.glade:12370 -#: src/emc/usr_intf/pncconf/pncconf.glade:17627 -#: src/emc/usr_intf/pncconf/pncconf.glade:19844 -#: src/emc/usr_intf/pncconf/pncconf.glade:21875 -#: src/emc/usr_intf/pncconf/pncconf.glade:23671 -#: src/emc/usr_intf/pncconf/pncconf.glade:25467 -msgid "43:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65509 +msgid "Home Search Velocity:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10032 -#: src/emc/usr_intf/pncconf/pncconf.glade:12354 -#: src/emc/usr_intf/pncconf/pncconf.glade:17611 -#: src/emc/usr_intf/pncconf/pncconf.glade:19828 -#: src/emc/usr_intf/pncconf/pncconf.glade:21891 -#: src/emc/usr_intf/pncconf/pncconf.glade:23687 -#: src/emc/usr_intf/pncconf/pncconf.glade:25483 -msgid "45:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65524 +msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10099 -#: src/emc/usr_intf/pncconf/pncconf.glade:12287 -#: src/emc/usr_intf/pncconf/pncconf.glade:17544 -#: src/emc/usr_intf/pncconf/pncconf.glade:19777 -#: src/emc/usr_intf/pncconf/pncconf.glade:21942 -#: src/emc/usr_intf/pncconf/pncconf.glade:23738 -#: src/emc/usr_intf/pncconf/pncconf.glade:25534 -msgid "47:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Advanced Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10822 -#: src/emc/usr_intf/pncconf/pncconf.glade:11077 -#: src/emc/usr_intf/pncconf/pncconf.glade:11311 -#: src/emc/usr_intf/pncconf/pncconf.glade:11567 -#: src/emc/usr_intf/pncconf/pncconf.glade:13924 -#: src/emc/usr_intf/pncconf/pncconf.glade:14171 -#: src/emc/usr_intf/pncconf/pncconf.glade:16516 -#: src/emc/usr_intf/pncconf/pncconf.glade:16772 -#: src/emc/usr_intf/pncconf/pncconf.glade:19129 -#: src/emc/usr_intf/pncconf/pncconf.glade:19379 -#: src/emc/usr_intf/pncconf/pncconf.glade:22343 -#: src/emc/usr_intf/pncconf/pncconf.glade:22592 -#: src/emc/usr_intf/pncconf/pncconf.glade:24139 -#: src/emc/usr_intf/pncconf/pncconf.glade:24388 -#: src/emc/usr_intf/pncconf/pncconf.glade:25935 -#: src/emc/usr_intf/pncconf/pncconf.glade:26184 -#: src/emc/usr_intf/pncconf/pncconf.glade:28515 -#: src/emc/usr_intf/pncconf/pncconf.glade:28761 -#: src/emc/usr_intf/pncconf/pncconf.glade:28892 -#: src/emc/usr_intf/pncconf/pncconf.glade:29139 -#: src/emc/usr_intf/pncconf/pncconf.glade:33079 -#: src/emc/usr_intf/pncconf/pncconf.glade:33250 -#: src/emc/usr_intf/pncconf/pncconf.glade:33497 -#: src/emc/usr_intf/pncconf/pncconf.glade:38012 -#: src/emc/usr_intf/pncconf/pncconf.glade:38258 -#: src/emc/usr_intf/pncconf/pncconf.glade:38507 -#: src/emc/usr_intf/pncconf/pncconf.glade:42359 -#: src/emc/usr_intf/pncconf/pncconf.glade:42605 -#: src/emc/usr_intf/pncconf/pncconf.glade:42736 -#: src/emc/usr_intf/pncconf/pncconf.glade:42983 -#: src/emc/usr_intf/pncconf/pncconf.glade:46936 -#: src/emc/usr_intf/pncconf/pncconf.glade:49282 -#: src/emc/usr_intf/pncconf/pncconf.glade:49528 -#: src/emc/usr_intf/pncconf/pncconf.glade:49659 -#: src/emc/usr_intf/pncconf/pncconf.glade:49906 -#: src/emc/usr_intf/pncconf/pncconf.glade:53859 -msgid "Pin Type" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 15" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10835 -#: src/emc/usr_intf/pncconf/pncconf.glade:11553 -#: src/emc/usr_intf/pncconf/pncconf.glade:16758 -#: src/emc/usr_intf/pncconf/pncconf.glade:19365 -#: src/emc/usr_intf/pncconf/pncconf.glade:22356 -#: src/emc/usr_intf/pncconf/pncconf.glade:24152 -#: src/emc/usr_intf/pncconf/pncconf.glade:25948 -msgid "23:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 14" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10849 -#: src/emc/usr_intf/pncconf/pncconf.glade:11539 -#: src/emc/usr_intf/pncconf/pncconf.glade:16744 -#: src/emc/usr_intf/pncconf/pncconf.glade:19351 -#: src/emc/usr_intf/pncconf/pncconf.glade:22370 -#: src/emc/usr_intf/pncconf/pncconf.glade:24166 -#: src/emc/usr_intf/pncconf/pncconf.glade:25962 -msgid "21:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 13" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10863 -#: src/emc/usr_intf/pncconf/pncconf.glade:11525 -#: src/emc/usr_intf/pncconf/pncconf.glade:16730 -#: src/emc/usr_intf/pncconf/pncconf.glade:19337 -#: src/emc/usr_intf/pncconf/pncconf.glade:22384 -#: src/emc/usr_intf/pncconf/pncconf.glade:24180 -#: src/emc/usr_intf/pncconf/pncconf.glade:25976 -msgid "19:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 12" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10877 -#: src/emc/usr_intf/pncconf/pncconf.glade:11511 -#: src/emc/usr_intf/pncconf/pncconf.glade:16716 -#: src/emc/usr_intf/pncconf/pncconf.glade:19323 -#: src/emc/usr_intf/pncconf/pncconf.glade:22398 -#: src/emc/usr_intf/pncconf/pncconf.glade:24194 -#: src/emc/usr_intf/pncconf/pncconf.glade:25990 -msgid "17:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 11" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11497 -#: src/emc/usr_intf/pncconf/pncconf.glade:16702 -#: src/emc/usr_intf/pncconf/pncconf.glade:19309 -#: src/emc/usr_intf/pncconf/pncconf.glade:22412 -#: src/emc/usr_intf/pncconf/pncconf.glade:24208 -#: src/emc/usr_intf/pncconf/pncconf.glade:26004 -msgid "15:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 10" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10905 -#: src/emc/usr_intf/pncconf/pncconf.glade:11483 -#: src/emc/usr_intf/pncconf/pncconf.glade:16688 -#: src/emc/usr_intf/pncconf/pncconf.glade:19295 -#: src/emc/usr_intf/pncconf/pncconf.glade:22426 -#: src/emc/usr_intf/pncconf/pncconf.glade:24222 -#: src/emc/usr_intf/pncconf/pncconf.glade:26018 -msgid "13:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 9" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10919 -#: src/emc/usr_intf/pncconf/pncconf.glade:11469 -#: src/emc/usr_intf/pncconf/pncconf.glade:16674 -#: src/emc/usr_intf/pncconf/pncconf.glade:19281 -#: src/emc/usr_intf/pncconf/pncconf.glade:22440 -#: src/emc/usr_intf/pncconf/pncconf.glade:24236 -#: src/emc/usr_intf/pncconf/pncconf.glade:26032 -msgid "11:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10933 -#: src/emc/usr_intf/pncconf/pncconf.glade:11455 -#: src/emc/usr_intf/pncconf/pncconf.glade:16660 -#: src/emc/usr_intf/pncconf/pncconf.glade:19267 -#: src/emc/usr_intf/pncconf/pncconf.glade:22454 -#: src/emc/usr_intf/pncconf/pncconf.glade:24250 -#: src/emc/usr_intf/pncconf/pncconf.glade:26046 -msgid " 9:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 7" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10947 -#: src/emc/usr_intf/pncconf/pncconf.glade:11441 -#: src/emc/usr_intf/pncconf/pncconf.glade:16646 -#: src/emc/usr_intf/pncconf/pncconf.glade:19253 -#: src/emc/usr_intf/pncconf/pncconf.glade:22468 -#: src/emc/usr_intf/pncconf/pncconf.glade:24264 -#: src/emc/usr_intf/pncconf/pncconf.glade:26060 -msgid " 7:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 6" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10961 -#: src/emc/usr_intf/pncconf/pncconf.glade:11427 -#: src/emc/usr_intf/pncconf/pncconf.glade:16632 -#: src/emc/usr_intf/pncconf/pncconf.glade:19239 -#: src/emc/usr_intf/pncconf/pncconf.glade:22482 -#: src/emc/usr_intf/pncconf/pncconf.glade:24278 -#: src/emc/usr_intf/pncconf/pncconf.glade:26074 -msgid " 5:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 5" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10975 -#: src/emc/usr_intf/pncconf/pncconf.glade:11413 -#: src/emc/usr_intf/pncconf/pncconf.glade:16618 -#: src/emc/usr_intf/pncconf/pncconf.glade:19225 -#: src/emc/usr_intf/pncconf/pncconf.glade:22496 -#: src/emc/usr_intf/pncconf/pncconf.glade:24292 -#: src/emc/usr_intf/pncconf/pncconf.glade:26088 -msgid " 3:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10989 -#: src/emc/usr_intf/pncconf/pncconf.glade:11399 -#: src/emc/usr_intf/pncconf/pncconf.glade:16604 -#: src/emc/usr_intf/pncconf/pncconf.glade:19211 -#: src/emc/usr_intf/pncconf/pncconf.glade:22510 -#: src/emc/usr_intf/pncconf/pncconf.glade:24306 -#: src/emc/usr_intf/pncconf/pncconf.glade:26102 -msgid " 1:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:11002 -#: src/emc/usr_intf/pncconf/pncconf.glade:11065 -#: src/emc/usr_intf/pncconf/pncconf.glade:11324 -#: src/emc/usr_intf/pncconf/pncconf.glade:11386 -#: src/emc/usr_intf/pncconf/pncconf.glade:13937 -#: src/emc/usr_intf/pncconf/pncconf.glade:13999 -#: src/emc/usr_intf/pncconf/pncconf.glade:16529 -#: src/emc/usr_intf/pncconf/pncconf.glade:16591 -#: src/emc/usr_intf/pncconf/pncconf.glade:19142 -#: src/emc/usr_intf/pncconf/pncconf.glade:19198 -#: src/emc/usr_intf/pncconf/pncconf.glade:22523 -#: src/emc/usr_intf/pncconf/pncconf.glade:22580 -#: src/emc/usr_intf/pncconf/pncconf.glade:24319 -#: src/emc/usr_intf/pncconf/pncconf.glade:24376 -#: src/emc/usr_intf/pncconf/pncconf.glade:26115 -#: src/emc/usr_intf/pncconf/pncconf.glade:26172 -#: src/emc/usr_intf/pncconf/pncconf.glade:28686 -#: src/emc/usr_intf/pncconf/pncconf.glade:28749 -#: src/emc/usr_intf/pncconf/pncconf.glade:28905 -#: src/emc/usr_intf/pncconf/pncconf.glade:28967 -#: src/emc/usr_intf/pncconf/pncconf.glade:33067 -#: src/emc/usr_intf/pncconf/pncconf.glade:33263 -#: src/emc/usr_intf/pncconf/pncconf.glade:33325 -#: src/emc/usr_intf/pncconf/pncconf.glade:38183 -#: src/emc/usr_intf/pncconf/pncconf.glade:38246 -#: src/emc/usr_intf/pncconf/pncconf.glade:38520 -#: src/emc/usr_intf/pncconf/pncconf.glade:42530 -#: src/emc/usr_intf/pncconf/pncconf.glade:42593 -#: src/emc/usr_intf/pncconf/pncconf.glade:42749 -#: src/emc/usr_intf/pncconf/pncconf.glade:42811 -#: src/emc/usr_intf/pncconf/pncconf.glade:46924 -#: src/emc/usr_intf/pncconf/pncconf.glade:49453 -#: src/emc/usr_intf/pncconf/pncconf.glade:49516 -#: src/emc/usr_intf/pncconf/pncconf.glade:49672 -#: src/emc/usr_intf/pncconf/pncconf.glade:49734 -#: src/emc/usr_intf/pncconf/pncconf.glade:53847 -msgid "Inv" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:11198 -msgid "" -" I/O\n" -"Connector 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:13811 -msgid "" -" I/O\n" -" Connector 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include Halui user interface component / commands" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:14012 -#: src/emc/usr_intf/pncconf/pncconf.glade:14039 -#: src/emc/usr_intf/pncconf/pncconf.glade:14053 -#: src/emc/usr_intf/pncconf/pncconf.glade:28632 -#: src/emc/usr_intf/pncconf/pncconf.glade:28646 -#: src/emc/usr_intf/pncconf/pncconf.glade:28673 -#: src/emc/usr_intf/pncconf/pncconf.glade:28980 -#: src/emc/usr_intf/pncconf/pncconf.glade:29007 -#: src/emc/usr_intf/pncconf/pncconf.glade:29021 -#: src/emc/usr_intf/pncconf/pncconf.glade:32951 -#: src/emc/usr_intf/pncconf/pncconf.glade:32965 -#: src/emc/usr_intf/pncconf/pncconf.glade:32992 -#: src/emc/usr_intf/pncconf/pncconf.glade:33338 -#: src/emc/usr_intf/pncconf/pncconf.glade:33365 -#: src/emc/usr_intf/pncconf/pncconf.glade:33379 -#: src/emc/usr_intf/pncconf/pncconf.glade:38129 -#: src/emc/usr_intf/pncconf/pncconf.glade:38143 -#: src/emc/usr_intf/pncconf/pncconf.glade:38170 -#: src/emc/usr_intf/pncconf/pncconf.glade:38594 -#: src/emc/usr_intf/pncconf/pncconf.glade:38621 -#: src/emc/usr_intf/pncconf/pncconf.glade:38635 -#: src/emc/usr_intf/pncconf/pncconf.glade:42476 -#: src/emc/usr_intf/pncconf/pncconf.glade:42490 -#: src/emc/usr_intf/pncconf/pncconf.glade:42517 -#: src/emc/usr_intf/pncconf/pncconf.glade:42824 -#: src/emc/usr_intf/pncconf/pncconf.glade:42851 -#: src/emc/usr_intf/pncconf/pncconf.glade:42865 -#: src/emc/usr_intf/pncconf/pncconf.glade:46808 -#: src/emc/usr_intf/pncconf/pncconf.glade:46822 -#: src/emc/usr_intf/pncconf/pncconf.glade:46849 -#: src/emc/usr_intf/pncconf/pncconf.glade:49399 -#: src/emc/usr_intf/pncconf/pncconf.glade:49413 -#: src/emc/usr_intf/pncconf/pncconf.glade:49440 -#: src/emc/usr_intf/pncconf/pncconf.glade:49747 -#: src/emc/usr_intf/pncconf/pncconf.glade:49774 -#: src/emc/usr_intf/pncconf/pncconf.glade:49788 -#: src/emc/usr_intf/pncconf/pncconf.glade:53731 -#: src/emc/usr_intf/pncconf/pncconf.glade:53745 -#: src/emc/usr_intf/pncconf/pncconf.glade:53772 -msgid " " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Number of digital (bit) in pins:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:16403 -msgid "" -" I/O\n" -" Connector 4" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Number of digital (bit) out pins:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:19017 -msgid "" -" I/O\n" -" Connector 5" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of Internal bit memory:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:20813 -msgid "" -" I/O\n" -"Connector 6" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of Internal word memory:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:22609 -msgid "" -" I/O\n" -"Connector 7" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Setup number of external pins" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:24405 -msgid "" -" I/O\n" -"Connector 8" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Z Auto Touch off program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:26201 -msgid "" -" I/O\n" -" Connector 9" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "HAL Component Page" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:28775 -#: src/emc/usr_intf/pncconf/pncconf.glade:35696 -#: src/emc/usr_intf/pncconf/pncconf.glade:42619 -#: src/emc/usr_intf/pncconf/pncconf.glade:49542 -msgid "page 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Add HAL components with this page." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:31354 -#: src/emc/usr_intf/pncconf/pncconf.glade:38275 -#: src/emc/usr_intf/pncconf/pncconf.glade:45198 -#: src/emc/usr_intf/pncconf/pncconf.glade:52121 -msgid "page 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Component" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:33107 -#: src/emc/usr_intf/pncconf/pncconf.glade:40030 -#: src/emc/usr_intf/pncconf/pncconf.glade:46953 -#: src/emc/usr_intf/pncconf/pncconf.glade:53876 -msgid "page 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "number of components" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:33123 -msgid "Smart Serial 0" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "PID" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:40046 -msgid "Smart Serial 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:46969 -msgid "Smart Serial 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mux16" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53892 -msgid "Smart Serial 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "lowpass" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53914 -msgid "First Parallel Port Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Base Thread" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53998 -msgid "Outputs (PC to Machine):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Servo Thread" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:54552 -msgid "Inputs (Machine to PC):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Load Command " +msgstr "Comandada" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Thread Speed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:55977 -msgid "Launch Test Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Thread Command" +msgstr "Comandada" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Custom Components Commands" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56003 -msgid "X Axis Motor/Encoder Configuration" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Machine configuration complete" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56091 -msgid "D" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"All the necessary information has now been gathered. Click \"Apply\" to " +"write your configuration files to disk.\n" +"\n" +"If you are using the 5i25 card with daugther boards or are using SSerial " +"based daughter cards, the cards must be connected and/or field power " +"supplied to the 5i25 \n" +"for the HAL pins to be available. If the config is expecting the pins and " +"they are not there, linuxcnc will error.\n" +"If you experience lockups while running LinuxCNC, you will need to decrease " +"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC, first verify that you " +"entered the proper timings for your stepper drivers. If that does not fix " +"the problem, then run a more thorough latency test as described on the " +"linuxcnc.org wiki:\n" +" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" +"\n" +"If you experience the \"Unexpected Realtime Delay\" message, run a more " +"thorough latency test as described on the linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56104 -msgid "I" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +" Motor Encoder Test\n" +"Warning limits switches \n" +" Will not be obeyed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56117 -msgid "P" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Slow Dac Speed" +msgstr "Mostra Velocidade da máq_uina" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Fast Dac Speed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56128 -#: src/emc/usr_intf/pncconf/pncconf.glade:60917 -#: src/emc/usr_intf/pncconf/pncconf.glade:62202 -#: src/emc/usr_intf/pncconf/pncconf.glade:63103 -#: src/emc/usr_intf/pncconf/pncconf.glade:64388 -#: src/emc/usr_intf/pncconf/pncconf.glade:65265 -msgid "Bias" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Dac Offset:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56141 -msgid "Deadband" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56188 -#: src/emc/usr_intf/pncconf/pncconf.glade:61128 -#: src/emc/usr_intf/pncconf/pncconf.glade:61991 -#: src/emc/usr_intf/pncconf/pncconf.glade:63314 -#: src/emc/usr_intf/pncconf/pncconf.glade:64177 -#: src/emc/usr_intf/pncconf/pncconf.glade:65470 -#, fuzzy -msgid "FF0" -msgstr "OFF" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Reset Encoder" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56201 -#: src/emc/usr_intf/pncconf/pncconf.glade:61118 -#: src/emc/usr_intf/pncconf/pncconf.glade:62001 -#: src/emc/usr_intf/pncconf/pncconf.glade:63304 -#: src/emc/usr_intf/pncconf/pncconf.glade:64187 -#: src/emc/usr_intf/pncconf/pncconf.glade:65460 -#, fuzzy -msgid "FF1" -msgstr "OFF" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Enable Amp" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56214 -#: src/emc/usr_intf/pncconf/pncconf.glade:61108 -#: src/emc/usr_intf/pncconf/pncconf.glade:62011 -#: src/emc/usr_intf/pncconf/pncconf.glade:63294 -#: src/emc/usr_intf/pncconf/pncconf.glade:64197 -#: src/emc/usr_intf/pncconf/pncconf.glade:65450 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "FF2" -msgstr "OFF" +msgid "Invert Encoder" +msgstr "Inverter imagem" -#: src/emc/usr_intf/pncconf/pncconf.glade:56282 -msgid "Servo Info" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Invert Motor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56362 -#, fuzzy -msgid "Spindle Max Output:" -msgstr "Spindle:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"±\n" +"+\n" +"-\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56412 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Spindle Max limit:" -msgstr "Aumenta a rotação do spindle [F12]" +msgid "Seconds" +msgstr "Secundária" -#: src/emc/usr_intf/pncconf/pncconf.glade:56426 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Spindle Min Limit:" -msgstr "Spindle:" +msgid "Enable" +msgstr "Nome:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56456 -msgid "" -"Open Loop\n" -" Test" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm/minute^2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56557 -msgid "Quad Pulses / Rev:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm/minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56572 -msgid "Dac Max Output:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Current" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56586 -msgid "Dac Output Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "P:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56599 -msgid "3pwm Deadtime:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "I:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56612 -#, fuzzy -msgid "3pwm Scale:" -msgstr "Eixo:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:56626 -msgid "Output Info" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "D:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56691 -msgid "Driver Type:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Original" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56735 -msgid "Direction Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "DeadBand" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56748 -msgid "Direction Hold" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "PID Tuning" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56791 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Step Space" +msgid "Step Time:" msgstr "Roda uma linha do programa" -#: src/emc/usr_intf/pncconf/pncconf.glade:56804 -msgid "Step On-Time" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Step Space:" +msgstr "Roda uma linha do programa" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Direction Hold:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56820 -msgid "Stepper Info" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Direction Setup:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56871 -#, fuzzy -msgid "No feedback" -msgstr "Posição:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Timing" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56881 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Absolute Feedback" -msgstr "Sobre o AXIS" +msgid "enable" +msgstr "Nome:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56895 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Incremental Feedback" -msgstr "Seleciona incremento de Jog" +msgid "spindle" +msgstr "Spindle:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56909 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Incremental Encoder" -msgstr "Inverter imagem" +msgid "Help Page" +msgstr "Profundidade das imagens" -#: src/emc/usr_intf/pncconf/pncconf.glade:56921 -msgid "Hall sensors" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"X axis:\n" +"Total Travel = 10\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = 0\n" +"Pos Travel Distance = Total Travel - neg travel distance = 10\n" +"Home Position = Origin to Home Position distance = 6\n" +"\n" +"Y axis:\n" +"Total Travel = 8\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = -8\n" +"Pos Travel Distance = Total Travel - neg travel distance = 0\n" +"Home Position = Origin to Home Position distance = 0\n" +"\n" +"Z axis:\n" +"Total Travel = 12\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = -12\n" +"Pos Travel Distance = Total Travel - neg travel distance = 0\n" +"Home Position = Origin to Home Position distance = 0\n" +"\n" +"Note that the direction indicators on the top right show \n" +"movement of the TOOL and on the actual machine,\n" +"often it is the table that actually moves. In that case the \n" +"directions are opposite of shown.\n" +"\n" +"Note this is an example, Many other combinations are \n" +"possible" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56933 -msgid "Fanuc Red Cap " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Mill" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56945 -#, fuzzy -msgid "Use encoder Index" -msgstr "Spindle:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:56976 -msgid "Input Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"Total Travel = 4 + 6 = 10\n" +"Z Home Offset = Origin to Home Switch distance = 10\n" +"Z Neg Travel Distance = Origin to neg limit distance = 0\n" +"Z Pos Travel Distance = Total Travel - neg travel distance = 10\n" +"Z Home Position = Origin to Home Position distance = 4\n" +"\n" +"X axis would be similar but not shown fully for clarity.\n" +"This is just a sample reference other switch combinations are\n" +"possible." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57000 -#, fuzzy -msgid "Digital instead of PWM outputs" -msgstr "Sinal de entrada digital selecionado fora dos limites" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57009 -msgid "6 outputs instead of 3 " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Lathe" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57021 -msgid "Force Trapezoid Mode" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Diagram" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57033 -msgid "Emulate feedback " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Output" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57045 -msgid "Emulated Hall sensors" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"\t\t\t\tPNCconf - Point aNd Click CONFigurator\n" +"PNCconf is a configuration program for Linuxcnc.\n" +"It configures machines using Mesa I/O cards.\n" +"It configures servo,stepper or closed loop stepper machines.\n" +"It supports some of Mesa's sserial cards.\n" +"It will forever be a work in progress as Linuxcnc changes.\n" +"\n" +"Many thanks To:\n" +"Jeff Eppler - PNCconf is based on stepconf - Jeff's creation. Jeff also has " +"helped with techincal difficulties.\n" +"Big John T - John drew the original machine illustrations. Testing and " +"suggestions.\n" +"Peter Wallace - Technical questions on Mesa's I/O cards. Supplied sample " +"equipment to test with.\n" +"Andy Pugh - suggestions, questions answered and many pin name changes :) \n" +"Dave Armstrong - testing and suggestions expecially with resolvers.\n" +"Everyone who gave a bug report ! I cannot test everything thoughly enough so " +"reports help.\n" +"\n" +"Beta 1 version" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57058 -msgid "Emulated Fanuc Red Cap" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "TPI " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57085 -msgid "8i20 Max Current" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulley teeth (motor:Leadscrew):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57119 -msgid "Output Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Worm turn ratio (Input:Outputl)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57153 -msgid "Poles" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Microstep Multiplication Factor:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57163 -msgid "Encoder-offset" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Leadscrew Metric Pitch" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57173 -msgid "Drive-offset" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motor steps per revolution:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57183 -msgid "output-pattern" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Motor Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57193 -msgid "Input-pattern" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "TPI" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57203 -#, fuzzy -msgid "Reverse" -msgstr "Freio do spindle ativado" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57303 -msgid "lead angle" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "X 4 = Pulses/Rev" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57313 -msgid "alignment current" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder lines per revolution:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57354 -#, fuzzy -msgid "Configuration" -msgstr "Mostrar _Configuração Hal" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57389 -msgid "Use Brushless Motor Control" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulley teeth (encoder:Leadscrew):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57425 -#, fuzzy -msgid "Scale:" -msgstr "Escala" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57446 -#, fuzzy -msgid "% " -msgstr "%" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57466 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Use Spindle-At-Speed" +msgid "Encoder Scale" msgstr "Spindle:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57491 -#, fuzzy -msgid "Filter gain:" -msgstr "Filtro de programa %r falhado" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57526 -msgid "Spindle Display Filter Settings" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57577 -#, fuzzy -msgid "Single Input Encoder" -msgstr "Inverter imagem" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57631 -msgid "Invert Encoder Direction " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57646 -msgid "Invert Motor Direction" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "encoder pulses per unit:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57661 -msgid "Feed Speed Following Error:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "motor steps per unit:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57675 -msgid "Rapid Speed Following Error:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Calculated Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57715 -msgid "" -"Calculate\n" -"Scale" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / encoder pulse" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57744 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Stepper Scale:" -msgstr "Roda uma linha do programa" +msgid "Resolution:" +msgstr "Posição:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57771 -msgid "encoder Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Distance to acheave max speed:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57928 -msgid "Test / Tune Axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "sec" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58235 -msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Khz" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58251 -msgid "Home Search Velocity:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Calculated Axis SCALE:" +msgstr "Eixo:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58266 -msgid "Home Switch location (Offset from machine zero Origin):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motor RPM at max speed:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58310 -msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "xmaxrpm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58326 -msgid "Home Position location (offset from machine zero Origin):" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Motion Data" +msgstr "Refrigeração:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58355 -msgid "Use Backlash Compensation:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "gtk-cancel" +msgstr "Cancelar" + +#: src/emc/usr_intf/gscreen/gscreen.py:349 +#, python-format +msgid "adding import dir %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58369 -msgid "Use Compensation File:" +#: src/emc/usr_intf/gscreen/gscreen.py:355 +#, python-format +msgid "module '%s' imported OK" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58412 +#: src/emc/usr_intf/gscreen/gscreen.py:452 +#, python-format msgid "" -"Type 1\n" -"Type 2" +"\n" +"**** GSCREEN INFO: Using CUSTOM glade file from %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58427 -msgid "filename:" +#: src/emc/usr_intf/gscreen/gscreen.py:457 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Using SKIN glade file from %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58455 -msgid "Home latch Velocity:" +#: src/emc/usr_intf/gscreen/gscreen.py:460 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: using STOCK glade file from: %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58494 -msgid "Home Search Direction:" +#: src/emc/usr_intf/gscreen/gscreen.py:466 +#, python-format +msgid "**** Gscreen GLADE ERROR: With main screen xml file: %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58507 +#: src/emc/usr_intf/gscreen/gscreen.py:471 +#, python-format msgid "" -"Towards Negative limit\n" -"Towards Positive limit" +"\n" +"**** GSCREEN INFO: Screen 2 -Using CUSTOM glade file from %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58523 -msgid "Home Latch Direction:" +#: src/emc/usr_intf/gscreen/gscreen.py:477 +#, python-format +msgid "**** Gscreen GLADE ERROR: With screen 2's xml file: %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58552 -msgid "Home Final Velocity:" +#: src/emc/usr_intf/gscreen/gscreen.py:479 +msgid "" +"\n" +"**** GSCREEN INFO: No Screen 2 glade file present" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58591 -msgid "Use Encoder Index For Home:" +#: src/emc/usr_intf/gscreen/gscreen.py:519 +msgid "No UNITS entry found in [TRAJ] or [AXIS_0] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58603 +#: src/emc/usr_intf/gscreen/gscreen.py:532 msgid "" -"NO\n" -"YES" +"*** Gscreen ERROR: Asking for a HAL component using a name that already " +"exists." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58628 -msgid "Advanced Options" +#: src/emc/usr_intf/gscreen/gscreen.py:585 +msgid "No default jog increments entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58712 -msgid "Cmd 1" +#: src/emc/usr_intf/gscreen/gscreen.py:598 +msgid "No default angular jog increments entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58718 -msgid "Cmd 2" +#: src/emc/usr_intf/gscreen/gscreen.py:607 +#, python-format +msgid "" +"No DEFAULT_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58728 -msgid "Cmd 3" +#: src/emc/usr_intf/gscreen/gscreen.py:618 +#, python-format +msgid "" +"No MAX_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58738 -msgid "Cmd 4" +#: src/emc/usr_intf/gscreen/gscreen.py:625 +msgid "No MAX_VELOCITY found in [TRAJ] of the INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58748 -msgid "Cmd 5" +#: src/emc/usr_intf/gscreen/gscreen.py:638 +#, python-format +msgid "" +"No DEFAULT_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58874 -msgid "Cmd 6" +#: src/emc/usr_intf/gscreen/gscreen.py:649 +#, python-format +msgid "" +"No MAX_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58884 -msgid "Cmd 7" +#: src/emc/usr_intf/gscreen/gscreen.py:657 +msgid "No MAX_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58896 -msgid "Cmd 8" +#: src/emc/usr_intf/gscreen/gscreen.py:663 +msgid "No MIN_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58908 -msgid "Cmd 9" +#: src/emc/usr_intf/gscreen/gscreen.py:669 +msgid "No MAX_FEED_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58920 -msgid "Cmd 10" +#: src/emc/usr_intf/gscreen/gscreen.py:674 +msgid "This screen will be orientated for Lathe options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58990 -msgid "Cmd 11" +#: src/emc/usr_intf/gscreen/gscreen.py:727 +msgid "CYCLE_TIME in [DISPLAY] of INI file is missing: defaulting to 100ms" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59000 -msgid "Cmd 12" +#: src/emc/usr_intf/gscreen/gscreen.py:730 +msgid "CYCLE_TIME in [DISPLAY] of INI file is too small: defaulting to 100ms" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59012 -msgid "Cmd 13" +#: src/emc/usr_intf/gscreen/gscreen.py:732 +#, python-format +msgid "timeout %d" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59024 -msgid "Cmd 14" +#: src/emc/usr_intf/gscreen/gscreen.py:1001 +msgid "" +"**** WARNING GSCREEN: could not understand the window geometry info in " +"hidden preference file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59036 -msgid "Cmd 15" +#: src/emc/usr_intf/gscreen/gscreen.py:1089 +msgid "Control powered up and initialized" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59053 -msgid "Include Halui user interface component / commands" +#: src/emc/usr_intf/gscreen/gscreen.py:1264 +msgid "Cycle start pressed in AUTO mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59127 -msgid "Number of digital (bit) in pins:" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:1267 +#, fuzzy +msgid "Cycle start pressed in MDI mode" +msgstr "impossível realizar (%s) no modo MDI" -#: src/emc/usr_intf/pncconf/pncconf.glade:59138 -msgid "Number of digital (bit) out pins:" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:1290 +#, python-format +msgid "Please change to tool # %s, then click OK." +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1291 +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +#: src/emc/usr_intf/gscreen/gscreen.py:1789 +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2849 +msgid "INFO:" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +msgid "Can't start spindle manually while MDI busy" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +#, fuzzy +msgid "can't start spindle manually in Auto mode" +msgstr "impossível realizar (%s) no modo manual" -#: src/emc/usr_intf/pncconf/pncconf.glade:59308 -msgid "Setup number of external pins" +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +msgid "No direction selected for spindle" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59360 -msgid "Z Auto Touch off program" +#: src/emc/usr_intf/gscreen/gscreen.py:1331 +#: src/emc/usr_intf/gscreen/gscreen.py:1333 +#, fuzzy +msgid "Spindle Speed Preset Entry" +msgstr "Freio do spindle ativado" + +#: src/emc/usr_intf/gscreen/gscreen.py:1362 +#: src/emc/usr_intf/gscreen/gscreen.py:1367 +msgid "Manual Tool Index Entry" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59505 -msgid "HAL Component Page" +#: src/emc/usr_intf/gscreen/gscreen.py:1489 +msgid "Entry dialog" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59648 -msgid "lowpass" +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +#, fuzzy +msgid "Classicladder realtime component not detected" +msgstr "Componente de tempo real não carregado" + +#: src/emc/usr_intf/gscreen/gscreen.py:1617 +msgid "ladder not available - is the realtime component loaded?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59675 -msgid "mux16" +#: src/emc/usr_intf/gscreen/gscreen.py:1691 +#, fuzzy +msgid "Override Entry" +msgstr "Ultrapassar limites" + +#: src/emc/usr_intf/gscreen/gscreen.py:1719 +#, fuzzy +msgid "Machine powered on" +msgstr "Máquina" + +#: src/emc/usr_intf/gscreen/gscreen.py:1724 +#, fuzzy +msgid "Machine Estopped!" +msgstr "Mostra posição da máquina" + +#: src/emc/usr_intf/gscreen/gscreen.py:1727 +msgid "Calculator" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59702 -msgid "scale" +#: src/emc/usr_intf/gscreen/gscreen.py:1857 +#, python-format +msgid "Axes %s are homed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59728 -msgid "PID" +#: src/emc/usr_intf/gscreen/gscreen.py:1864 +msgid "All the axes have been homed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59739 -msgid "number of components" +#: src/emc/usr_intf/gscreen/gscreen.py:1874 +#, python-format +msgid "There are unhomed axes: %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59767 -msgid "Component" +#: src/emc/usr_intf/gscreen/gscreen.py:1879 +#, fuzzy, python-format +msgid "Program loaded: %s" +msgstr "Filtro de programa %r falhado" + +#: src/emc/usr_intf/gscreen/gscreen.py:1977 +#, fuzzy +msgid "Manual Spindle Control" +msgstr "Reduz a rotação do spindle [F11]" + +#: src/emc/usr_intf/gscreen/gscreen.py:2034 +msgid "Keyboard" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59794 -msgid "Add HAL components with this page." +#: src/emc/usr_intf/gscreen/gscreen.py:2067 +msgid "Error with launching 'Onboard' on-screen keyboard program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59844 -#, fuzzy -msgid "Thread Command" -msgstr "Comandada" +#: src/emc/usr_intf/gscreen/gscreen.py:2215 +#, python-format +msgid "**** GSCREEN INFO: Overriding internal signal call to %s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59854 -msgid "Thread Speed" +#: src/emc/usr_intf/gscreen/gscreen.py:2643 +msgid " Zero Origin" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59906 +#: src/emc/usr_intf/gscreen/gscreen.py:2644 #, fuzzy -msgid "Load Command " -msgstr "Comandada" +msgid "Offset Origin" +msgstr "Índice de offset faltando" -#: src/emc/usr_intf/pncconf/pncconf.glade:59952 -msgid "Servo Thread" +#: src/emc/usr_intf/gscreen/gscreen.py:2659 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing text or type) " +"in INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59965 -msgid "Base Thread" +#: src/emc/usr_intf/gscreen/gscreen.py:2661 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing pinname) in " +"INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59979 -msgid "Custom Components Commands" +#: src/emc/usr_intf/gscreen/gscreen.py:2663 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing boldtext) in " +"INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60031 +#: src/emc/usr_intf/gscreen/gscreen.py:2667 +#, python-format msgid "" -" Motor Encoder Test\n" -"Warning limits switches \n" -" Will not be obeyed" +"**** Gscreen ERROR: invalid message type (%s)in INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60067 -#: src/emc/usr_intf/pncconf/pncconf.glade:60766 -#: src/emc/usr_intf/pncconf/pncconf.glade:61859 -#: src/emc/usr_intf/pncconf/pncconf.glade:62952 -#: src/emc/usr_intf/pncconf/pncconf.glade:64045 -#: src/emc/usr_intf/pncconf/pncconf.glade:65025 -msgid "Invert Motor" +#: src/emc/usr_intf/gscreen/gscreen.py:2699 +msgid "Dialog error - Is the dialog handler missing from the handler file?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60083 -#: src/emc/usr_intf/pncconf/pncconf.glade:60782 -#: src/emc/usr_intf/pncconf/pncconf.glade:61875 -#: src/emc/usr_intf/pncconf/pncconf.glade:62968 -#: src/emc/usr_intf/pncconf/pncconf.glade:64061 -#: src/emc/usr_intf/pncconf/pncconf.glade:65040 +#: src/emc/usr_intf/gscreen/gscreen.py:2701 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3540 #, fuzzy -msgid "Invert Encoder" -msgstr "Inverter imagem" - -#: src/emc/usr_intf/pncconf/pncconf.glade:60100 -msgid "Enable Amp" -msgstr "" +msgid "Manual Toolchange" +msgstr "Troca de ferramenta" -#: src/emc/usr_intf/pncconf/pncconf.glade:60114 -msgid "Reset Encoder" +#: src/emc/usr_intf/gscreen/gscreen.py:2703 +#: src/emc/usr_intf/gmoccapy/dialogs.py:94 +#: src/emc/usr_intf/gmoccapy/dialogs.py:107 +#: src/emc/usr_intf/gmoccapy/dialogs.py:119 +msgid "Operator Message" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60142 -msgid "Encoder Scale:" +#: src/emc/usr_intf/gscreen/gscreen.py:2737 +#: src/emc/usr_intf/gscreen/gscreen.py:2741 +#: src/emc/usr_intf/gmoccapy/dialogs.py:155 +#: src/emc/usr_intf/gmoccapy/dialogs.py:159 +msgid "Restart Entry" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60153 -msgid "Dac Offset:" +#: src/emc/usr_intf/gscreen/gscreen.py:2752 +#: src/emc/usr_intf/gmoccapy/dialogs.py:173 +msgid "Enter" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60243 -msgid "Fast Dac Speed" +#: src/emc/usr_intf/gscreen/gscreen.py:2774 +#, python-format +msgid "Ready to Restart program from line %d" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60258 +#: src/emc/usr_intf/gscreen/gscreen.py:2807 #, fuzzy -msgid "Slow Dac Speed" -msgstr "Mostra Velocidade da máq_uina" +msgid "Invalid embeded tab configuration" +msgstr "Mostrar _Configuração Hal" -#: src/emc/usr_intf/pncconf/pncconf.glade:60407 -#: src/emc/usr_intf/pncconf/pncconf.glade:61503 -#: src/emc/usr_intf/pncconf/pncconf.glade:62596 -#: src/emc/usr_intf/pncconf/pncconf.glade:63689 -#: src/emc/usr_intf/pncconf/pncconf.glade:64788 -msgid "mm/minute" +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +msgid "Can't jog multiple axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60441 -#: src/emc/usr_intf/pncconf/pncconf.glade:61536 -#: src/emc/usr_intf/pncconf/pncconf.glade:62629 -#: src/emc/usr_intf/pncconf/pncconf.glade:63722 -#: src/emc/usr_intf/pncconf/pncconf.glade:64821 -msgid "mm/minute^2" +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +msgid "No axis selected to jog" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60550 -#: src/emc/usr_intf/pncconf/pncconf.glade:61644 -#: src/emc/usr_intf/pncconf/pncconf.glade:62737 -#: src/emc/usr_intf/pncconf/pncconf.glade:64930 -#, fuzzy -msgid "Enable" -msgstr "Nome:" +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +msgid "No axis selected to move" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60600 -#: src/emc/usr_intf/pncconf/pncconf.glade:61693 -#: src/emc/usr_intf/pncconf/pncconf.glade:62786 -#: src/emc/usr_intf/pncconf/pncconf.glade:63879 -#: src/emc/usr_intf/pncconf/pncconf.glade:65139 -#, fuzzy -msgid "Seconds" -msgstr "Secundária" +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +msgid "Can't home multiple axis - select HOME ALL instead" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60907 -#: src/emc/usr_intf/pncconf/pncconf.glade:62212 -#: src/emc/usr_intf/pncconf/pncconf.glade:63093 -#: src/emc/usr_intf/pncconf/pncconf.glade:64398 -#: src/emc/usr_intf/pncconf/pncconf.glade:65255 -msgid "DeadBand" +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +msgid "No axis selected to home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61089 -#: src/emc/usr_intf/pncconf/pncconf.glade:61380 -#: src/emc/usr_intf/pncconf/pncconf.glade:62030 -#: src/emc/usr_intf/pncconf/pncconf.glade:62401 -#: src/emc/usr_intf/pncconf/pncconf.glade:63275 -#: src/emc/usr_intf/pncconf/pncconf.glade:63562 -#: src/emc/usr_intf/pncconf/pncconf.glade:64216 -#: src/emc/usr_intf/pncconf/pncconf.glade:64587 -#: src/emc/usr_intf/pncconf/pncconf.glade:65431 -#: src/emc/usr_intf/pncconf/pncconf.glade:65718 -msgid "Original" +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +msgid "Can't unhome multiple axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61138 -#: src/emc/usr_intf/pncconf/pncconf.glade:61981 -#: src/emc/usr_intf/pncconf/pncconf.glade:63324 -#: src/emc/usr_intf/pncconf/pncconf.glade:64167 -#: src/emc/usr_intf/pncconf/pncconf.glade:65480 -msgid "D:" +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +msgid "No axis selected to unhome" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61148 -#: src/emc/usr_intf/pncconf/pncconf.glade:61971 -#: src/emc/usr_intf/pncconf/pncconf.glade:63334 -#: src/emc/usr_intf/pncconf/pncconf.glade:64157 -#: src/emc/usr_intf/pncconf/pncconf.glade:65490 -msgid "I:" +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +msgid "No axis selected for origin zeroing" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61158 -#: src/emc/usr_intf/pncconf/pncconf.glade:61961 -#: src/emc/usr_intf/pncconf/pncconf.glade:63344 -#: src/emc/usr_intf/pncconf/pncconf.glade:64147 -#: src/emc/usr_intf/pncconf/pncconf.glade:65500 -msgid "P:" +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +msgid "No axis selected for origin touch-off" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61168 -#: src/emc/usr_intf/pncconf/pncconf.glade:61392 -#: src/emc/usr_intf/pncconf/pncconf.glade:61951 -#: src/emc/usr_intf/pncconf/pncconf.glade:62389 -#: src/emc/usr_intf/pncconf/pncconf.glade:63354 -#: src/emc/usr_intf/pncconf/pncconf.glade:63574 -#: src/emc/usr_intf/pncconf/pncconf.glade:64137 -#: src/emc/usr_intf/pncconf/pncconf.glade:64575 -#: src/emc/usr_intf/pncconf/pncconf.glade:65510 -#: src/emc/usr_intf/pncconf/pncconf.glade:65730 -msgid "Current" +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +msgid "Can't tool touch-off multiple axes" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61185 -#: src/emc/usr_intf/pncconf/pncconf.glade:62278 -#: src/emc/usr_intf/pncconf/pncconf.glade:63371 -#: src/emc/usr_intf/pncconf/pncconf.glade:64464 -#: src/emc/usr_intf/pncconf/pncconf.glade:65527 -msgid "PID Tuning" +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +msgid "No axis selected for tool touch-off" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61370 -#: src/emc/usr_intf/pncconf/pncconf.glade:62413 -#: src/emc/usr_intf/pncconf/pncconf.glade:63552 -#: src/emc/usr_intf/pncconf/pncconf.glade:64599 -#: src/emc/usr_intf/pncconf/pncconf.glade:65708 -msgid "Direction Setup:" +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#: src/emc/usr_intf/gscreen/gscreen.py:3375 +msgid "Error Message" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61404 -#: src/emc/usr_intf/pncconf/pncconf.glade:62379 -#: src/emc/usr_intf/pncconf/pncconf.glade:63586 -#: src/emc/usr_intf/pncconf/pncconf.glade:64565 -#: src/emc/usr_intf/pncconf/pncconf.glade:65742 -msgid "Direction Hold:" +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#, python-format +msgid "Tool editor error - is the %s editor available?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61414 -#: src/emc/usr_intf/pncconf/pncconf.glade:62369 -#: src/emc/usr_intf/pncconf/pncconf.glade:63596 -#: src/emc/usr_intf/pncconf/pncconf.glade:64555 -#: src/emc/usr_intf/pncconf/pncconf.glade:65752 -#, fuzzy -msgid "Step Space:" -msgstr "Roda uma linha do programa" +#: src/emc/usr_intf/gscreen/gscreen.py:3377 +#: src/emc/usr_intf/gscreen/gscreen.py:3379 +msgid "Message" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:3409 +#, python-format +msgid "%d RPM" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:48 +#: src/emc/usr_intf/gscreen/gscreen.glade:59 +#: src/emc/usr_intf/gscreen/gscreen.glade:135 +#: src/emc/usr_intf/gscreen/gscreen.glade:176 +#: src/emc/usr_intf/gscreen/gscreen.glade:187 +#: src/emc/usr_intf/gscreen/gscreen.glade:264 +#: src/emc/usr_intf/gscreen/gscreen.glade:306 +#: src/emc/usr_intf/gscreen/gscreen.glade:317 +#: src/emc/usr_intf/gscreen/gscreen.glade:393 +#: src/emc/usr_intf/gscreen/gscreen.glade:434 +#: src/emc/usr_intf/gscreen/gscreen.glade:445 +#: src/emc/usr_intf/gscreen/gscreen.glade:521 +#: src/emc/usr_intf/gscreen/gscreen.glade:562 +#: src/emc/usr_intf/gscreen/gscreen.glade:573 +#: src/emc/usr_intf/gscreen/gscreen.glade:649 +#: src/emc/usr_intf/gscreen/gscreen.glade:690 +#: src/emc/usr_intf/gscreen/gscreen.glade:701 +#: src/emc/usr_intf/gscreen/gscreen.glade:777 +#: src/emc/usr_intf/gscreen/gscreen.glade:818 +#: src/emc/usr_intf/gscreen/gscreen.glade:829 +#: src/emc/usr_intf/gscreen/gscreen.glade:905 +#: src/emc/usr_intf/gscreen/gscreen.glade:946 +#: src/emc/usr_intf/gscreen/gscreen.glade:957 +#: src/emc/usr_intf/gscreen/gscreen.glade:1033 +#: src/emc/usr_intf/gscreen/gscreen.glade:1074 +#: src/emc/usr_intf/gscreen/gscreen.glade:1085 +#: src/emc/usr_intf/gscreen/gscreen.glade:1161 +msgid "0000.0000" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:73 +#: src/emc/usr_intf/gscreen/gscreen.glade:201 +#: src/emc/usr_intf/gscreen/gscreen.glade:331 +#: src/emc/usr_intf/gscreen/gscreen.glade:459 +#: src/emc/usr_intf/gscreen/gscreen.glade:587 +#: src/emc/usr_intf/gscreen/gscreen.glade:715 +#: src/emc/usr_intf/gscreen/gscreen.glade:843 +#: src/emc/usr_intf/gscreen/gscreen.glade:971 +#: src/emc/usr_intf/gscreen/gscreen.glade:1099 +msgid "REL" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:99 +#: src/emc/usr_intf/gscreen/gscreen.glade:227 +#: src/emc/usr_intf/gscreen/gscreen.glade:357 +#: src/emc/usr_intf/gscreen/gscreen.glade:485 +#: src/emc/usr_intf/gscreen/gscreen.glade:613 +#: src/emc/usr_intf/gscreen/gscreen.glade:741 +#: src/emc/usr_intf/gscreen/gscreen.glade:869 +#: src/emc/usr_intf/gscreen/gscreen.glade:997 +#: src/emc/usr_intf/gscreen/gscreen.glade:1125 +msgid "ABS" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:630 +msgid "B" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:758 +msgid "C" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:886 +msgid "U" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1014 +msgid "V" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1298 +#, fuzzy +msgid "G code" +msgstr "Inverter imagem" -#: src/emc/usr_intf/pncconf/pncconf.glade:61424 -#: src/emc/usr_intf/pncconf/pncconf.glade:62359 -#: src/emc/usr_intf/pncconf/pncconf.glade:63606 -#: src/emc/usr_intf/pncconf/pncconf.glade:64545 -#: src/emc/usr_intf/pncconf/pncconf.glade:65762 +#: src/emc/usr_intf/gscreen/gscreen.glade:1392 #, fuzzy -msgid "Step Time:" -msgstr "Roda uma linha do programa" +msgid "G Codes Active" +msgstr "Spindle:" -#: src/emc/usr_intf/pncconf/pncconf.glade:61439 -#: src/emc/usr_intf/pncconf/pncconf.glade:62528 -#: src/emc/usr_intf/pncconf/pncconf.glade:63621 -#: src/emc/usr_intf/pncconf/pncconf.glade:64714 -#: src/emc/usr_intf/pncconf/pncconf.glade:65777 -msgid "Step Timing" +#: src/emc/usr_intf/gscreen/gscreen.glade:1451 +msgid "MV:100%" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:63830 +#: src/emc/usr_intf/gscreen/gscreen.glade:1470 #, fuzzy -msgid "enable" -msgstr "Nome:" +msgid " Mist" +msgstr "Ar/Névoa" -#: src/emc/usr_intf/pncconf/pncconf.glade:65798 +#: src/emc/usr_intf/gscreen/gscreen.glade:1481 #, fuzzy -msgid "spindle" -msgstr "Spindle:" +msgid " Flood " +msgstr "Líquido" -#: src/emc/usr_intf/pncconf/pncconf.glade:65881 +#: src/emc/usr_intf/gscreen/gscreen.glade:1533 #, fuzzy -msgid "Help Page" -msgstr "Profundidade das imagens" +msgid " At Speed " +msgstr "Velocidade da máquina" -#: src/emc/usr_intf/pncconf/pncconf.glade:65911 -msgid "" -"X axis:\n" -"Total Travel = 10\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = 0\n" -"Pos Travel Distance = Total Travel - neg travel distance = 10\n" -"Home Position = Origin to Home Position distance = 6\n" -"\n" -"Y axis:\n" -"Total Travel = 8\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = -8\n" -"Pos Travel Distance = Total Travel - neg travel distance = 0\n" -"Home Position = Origin to Home Position distance = 0\n" -"\n" -"Z axis:\n" -"Total Travel = 12\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = -12\n" -"Pos Travel Distance = Total Travel - neg travel distance = 0\n" -"Home Position = Origin to Home Position distance = 0\n" -"\n" -"Note that the direction indicators on the top right show \n" -"movement of the TOOL and on the actual machine,\n" -"often it is the table that actually moves. In that case the \n" -"directions are opposite of shown.\n" -"\n" -"Note this is an example, Many other combinations are \n" -"possible" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1546 +#, fuzzy +msgid " Jog mode" +msgstr "Modo Joint" -#: src/emc/usr_intf/pncconf/pncconf.glade:65951 -msgid "Mill" +#: src/emc/usr_intf/gscreen/gscreen.glade:1600 +msgid "10 DPM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65970 -msgid "" -"Total Travel = 4 + 6 = 10\n" -"Z Home Offset = Origin to Home Switch distance = 10\n" -"Z Neg Travel Distance = Origin to neg limit distance = 0\n" -"Z Pos Travel Distance = Total Travel - neg travel distance = 10\n" -"Z Home Position = Origin to Home Position distance = 4\n" -"\n" -"X axis would be similar but not shown fully for clarity.\n" -"This is just a sample reference other switch combinations are\n" -"possible." +#: src/emc/usr_intf/gscreen/gscreen.glade:1616 +msgid "10 Ipm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65994 -msgid "Lathe" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1690 +#, fuzzy +msgid "Status" +msgstr "Refrigeração:" -#: src/emc/usr_intf/pncconf/pncconf.glade:66010 -msgid "Diagram" +#: src/emc/usr_intf/gscreen/gscreen.glade:1715 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2510 +msgid "" +"Search\n" +" Text:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66043 -msgid "Output" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1766 +#, fuzzy +msgid "Mode" +msgstr "Spindle:" -#: src/emc/usr_intf/pncconf/pncconf.glade:66123 -msgid "Motor steps per revolution:" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1782 +#, fuzzy +msgid "Main Level" +msgstr "Nível" -#: src/emc/usr_intf/pncconf/pncconf.glade:66173 -#: src/emc/usr_intf/pncconf/pncconf.glade:66459 -msgid "Leadscrew Metric Pitch" +#: src/emc/usr_intf/gscreen/gscreen.glade:1823 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3678 +msgid "Themes" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66186 -msgid "Microstep Multiplication Factor:" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1847 +#, fuzzy +msgid "Relative Text Color" +msgstr "Mostra posição relativa" -#: src/emc/usr_intf/pncconf/pncconf.glade:66199 -#: src/emc/usr_intf/pncconf/pncconf.glade:66481 -msgid "Worm turn ratio (Input:Outputl)" +#: src/emc/usr_intf/gscreen/gscreen.glade:1895 +msgid "DTG Text Color" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66212 -msgid "Pulley teeth (motor:Leadscrew):" +#: src/emc/usr_intf/gscreen/gscreen.glade:1916 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3710 +msgid "Warning Audio" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66356 -msgid "TPI " +#: src/emc/usr_intf/gscreen/gscreen.glade:1926 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3723 +msgid "Alert Audio" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66372 -msgid "Step Motor Scale" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1947 +#, fuzzy +msgid "Grid Size" +msgstr "Tamanho:" -#: src/emc/usr_intf/pncconf/pncconf.glade:66472 -msgid "Pulley teeth (encoder:Leadscrew):" +#: src/emc/usr_intf/gscreen/gscreen.glade:1986 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4119 +msgid "Starting RPM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66537 -msgid "Encoder lines per revolution:" +#: src/emc/usr_intf/gscreen/gscreen.glade:2015 +msgid "Metric\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66547 -msgid "X 4 = Pulses/Rev" +#: src/emc/usr_intf/gscreen/gscreen.glade:2030 +msgid "" +" Display\n" +"Aux Screen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66651 -msgid "TPI" +#: src/emc/usr_intf/gscreen/gscreen.glade:2045 +msgid "" +"Diameter\n" +" Mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66667 +#: src/emc/usr_intf/gscreen/gscreen.glade:2062 +#: src/emc/usr_intf/gscreen/gscreen.glade:3096 #, fuzzy -msgid "Encoder Scale" -msgstr "Spindle:" +msgid "" +" Show\n" +"Offsets" +msgstr "Mostra _limites" -#: src/emc/usr_intf/pncconf/pncconf.glade:66711 -msgid "motor steps per unit:" +#: src/emc/usr_intf/gscreen/gscreen.glade:2079 +msgid "" +"Show\n" +"DTG" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66721 -msgid "encoder pulses per unit:" +#: src/emc/usr_intf/gscreen/gscreen.glade:2096 +msgid "" +" Gscreen\n" +"Fullscreen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66756 -msgid " " +#: src/emc/usr_intf/gscreen/gscreen.glade:2118 +msgid "" +" On M7 Use\n" +"Aux Coolant" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66770 -msgid "Calculated Scale" +#: src/emc/usr_intf/gscreen/gscreen.glade:2131 +msgid "" +" On M8 Use\n" +"Aux Coolant" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66848 -msgid "xmaxrpm" +#: src/emc/usr_intf/gscreen/gscreen.glade:2144 +msgid "Hide Pointer" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66864 -msgid "RPM" +#: src/emc/usr_intf/gscreen/gscreen.glade:2156 +msgid "" +" Desktop\n" +"Notification" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66877 -msgid "Motor RPM at max speed:" +#: src/emc/usr_intf/gscreen/gscreen.glade:2228 +#: src/emc/usr_intf/gscreen/gscreen.glade:2368 +msgid "Debug" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66921 +#: src/emc/usr_intf/gscreen/gscreen.glade:2263 #, fuzzy -msgid "Calculated Axis SCALE:" -msgstr "Eixo:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:66934 -msgid "Khz" -msgstr "" +msgid "Alarm History" +msgstr "Histórico:" -#: src/emc/usr_intf/pncconf/pncconf.glade:66949 -msgid "sec" +#: src/emc/usr_intf/gscreen/gscreen.glade:2281 +msgid "" +" Launch\n" +"Halshow" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67049 -msgid "Distance to acheave max speed:" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2293 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6449 +#, fuzzy +msgid "Calibration" +msgstr "_Calibrar" -#: src/emc/usr_intf/pncconf/pncconf.glade:67077 +#: src/emc/usr_intf/gscreen/gscreen.glade:2304 #, fuzzy -msgid "Resolution:" -msgstr "Posição:" +msgid "Halmeter" +msgstr "H_alMeter" -#: src/emc/usr_intf/pncconf/pncconf.glade:67105 -msgid "mm / encoder pulse" +#: src/emc/usr_intf/gscreen/gscreen.glade:2315 +msgid "" +"linuxcnc\n" +" Status" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67123 +#: src/emc/usr_intf/gscreen/gscreen.glade:2327 #, fuzzy -msgid "Motion Data" -msgstr "Refrigeração:" +msgid "Halscope" +msgstr "Ha_lScope" -#: src/emc/usr_intf/pncconf/pncconf.glade:67151 -#, fuzzy -msgid "gtk-cancel" -msgstr "Cancelar" +#: src/emc/usr_intf/gscreen/gscreen.glade:2338 +msgid "Ladder" +msgstr "" -#: src/emc/task/emctaskmain.cc:467 src/emc/task/emctaskmain.cc:500 -#, fuzzy, c-format -msgid "%s exceeds +X limit" -msgstr "%s excede o limite +X da máquina" +#: src/emc/usr_intf/gscreen/gscreen.glade:2386 +msgid "Tooleditor" +msgstr "" -#: src/emc/task/emctaskmain.cc:472 src/emc/task/emctaskmain.cc:505 -#, fuzzy, c-format -msgid "%s exceeds +Y limit" -msgstr "%s excede o limite +Y da máquina" +#: src/emc/usr_intf/gscreen/gscreen.glade:2404 +msgid "" +"Offset\n" +" Page" +msgstr "" -#: src/emc/task/emctaskmain.cc:477 src/emc/task/emctaskmain.cc:510 -#, fuzzy, c-format -msgid "%s exceeds +Z limit" -msgstr "%s excede o limite +Z da máquina" +#: src/emc/usr_intf/gscreen/gscreen.glade:2572 +#: src/emc/usr_intf/gscreen/gscreen.glade:2749 +#: src/emc/usr_intf/gscreen/gscreen.glade:3156 +msgid "\n" +msgstr "" -#: src/emc/task/emctaskmain.cc:482 src/emc/task/emctaskmain.cc:515 -#, fuzzy, c-format -msgid "%s exceeds -X limit" -msgstr "%s excede o limite -X da máquina" +#: src/emc/usr_intf/gscreen/gscreen.glade:2584 +#, fuzzy +msgid "Tool Setting" +msgstr "Refrigeração:" -#: src/emc/task/emctaskmain.cc:487 src/emc/task/emctaskmain.cc:520 -#, fuzzy, c-format -msgid "%s exceeds -Y limit" -msgstr "%s excede o limite -Y da máquina" +#: src/emc/usr_intf/gscreen/gscreen.glade:2648 +#, fuzzy +msgid "" +"Single\n" +" Step" +msgstr "Spindle:" -#: src/emc/task/emctaskmain.cc:492 src/emc/task/emctaskmain.cc:525 -#, fuzzy, c-format -msgid "%s exceeds -Z limit" -msgstr "%s excede o limite -Z da máquina" +#: src/emc/usr_intf/gscreen/gscreen.glade:2661 +#, fuzzy +msgid "" +"Run At\n" +" Line" +msgstr "Tempo de execução:" -#: src/emc/task/emctaskmain.cc:853 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:2673 msgid "" -"command (%s) cannot be executed until the machine is out of E-stop and " -"turned on" +"Change \n" +" View" msgstr "" -"o comando (%s) não pode ser executado até que a máquina esteja fora de E-" -"STOP e ligada" -#: src/emc/task/emctaskmain.cc:973 -#, c-format -msgid "can't do that (%s) in manual mode" -msgstr "impossível realizar (%s) no modo manual" - -#: src/emc/task/emctaskmain.cc:1072 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter idle" -msgstr "impossível realizar (%s) no modo automático com o interpretador ocioso" +#: src/emc/usr_intf/gscreen/gscreen.glade:2760 +msgid "Homing\n" +msgstr "" -#: src/emc/task/emctaskmain.cc:1132 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter reading" -msgstr "impossível realizar (%s) no modo automático com o interpretador lendo" +#: src/emc/usr_intf/gscreen/gscreen.glade:2781 +#, fuzzy +msgid "" +"Ignore\n" +"Limits" +msgstr "Todos os arquivos" -#: src/emc/task/emctaskmain.cc:1216 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter paused" -msgstr "" -"impossível realizar (%s) no modo automático com o interpretador pausado" +#: src/emc/usr_intf/gscreen/gscreen.glade:2810 +#, fuzzy +msgid "" +" Set\n" +"Override" +msgstr "Velocidade da máquina" -#: src/emc/task/emctaskmain.cc:1278 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter waiting" +#: src/emc/usr_intf/gscreen/gscreen.glade:2824 +msgid "Graphics\n" msgstr "" -"impossível realizar (%s) no modo automático com o interpretador esperando" -#: src/emc/task/emctaskmain.cc:1370 -#, c-format -msgid "can't do that (%s) in MDI mode" -msgstr "impossível realizar (%s) no modo MDI" +#: src/emc/usr_intf/gscreen/gscreen.glade:2838 +#, fuzzy +msgid "" +"Menu\n" +"Level" +msgstr "Nível" -#: src/emc/task/emctaskmain.cc:2015 -msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" +#: src/emc/usr_intf/gscreen/gscreen.glade:2851 +msgid "" +" Launch\n" +"Keyboard" msgstr "" -"impossível mudar o modo de operação enquanto o modo é AUTO e o interpretador " -"não está em IDLE" -#: src/emc/task/emctaskmain.cc:2084 -msgid "Can't issue MDI command when not homed" -msgstr "" -"Impossível executar comando MDI enquanto a máquina não foi referenciada" +#: src/emc/usr_intf/gscreen/gscreen.glade:2868 +#, fuzzy +msgid "Select Buttons" +msgstr "Refrigeração:" -#: src/emc/task/emctaskmain.cc:2089 -msgid "Must be in MDI mode to issue MDI command" -msgstr "Precisa estar no modo MDI para enviar um comando MDI" +#: src/emc/usr_intf/gscreen/gscreen.glade:2955 +#, fuzzy +msgid "" +"Unhome \n" +" All" +msgstr "Home" -#: src/emc/task/emctaskmain.cc:2151 -msgid "Can't run a program when not homed" -msgstr "Impossível executar programa enquanto a máquina não for referenciada" +#: src/emc/usr_intf/gscreen/gscreen.glade:2967 +#, fuzzy +msgid "" +"Unhome\n" +" Axis" +msgstr "Home" -#: src/emc/rs274ngc/interp_arc.cc:108 src/emc/rs274ngc/rs274ngc_return.hh:160 -msgid "Zero radius arc" -msgstr "Arco de raio zero" +#: src/emc/usr_intf/gscreen/gscreen.glade:2979 +#: src/emc/usr_intf/gscreen/gscreen.glade:3084 +#, fuzzy +msgid "" +"Toggle\n" +"Readout" +msgstr "Refrigeração líquida" -#: src/emc/rs274ngc/interp_arc.cc:112 src/emc/rs274ngc/interp_arc.cc:279 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:3004 +#, fuzzy msgid "" -"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " -"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " -"rel_err=%.4f%%" +"Jogging\n" +" Mode" +msgstr "Modo Joint" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3016 +msgid "" +"coordinate\n" +" System" msgstr "" -"Raio entre o ponto final e centro difere do raio entre início e o centro: " -"início=(%c%.4f,%c%.4f) centro=(%c%.4f,%c%.4f) final=(%c%.4f,%c%.4f) r1=%.4f " -"r2=%.4f erro_absoluto=%.4g erro_relativo=%.4f%%" -#: src/emc/rs274ngc/interp_check.cc:90 -msgid "G4 not allowed with G2 or G3 because they both use P" +#: src/emc/usr_intf/gscreen/gscreen.glade:3060 +msgid "" +"Index\n" +" Tool" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:93 +#: src/emc/usr_intf/gscreen/gscreen.glade:3072 #, fuzzy -msgid "Line with G10 does not have L1, L10, L11, L2, or L20" -msgstr "Linha com G10 não tem L2" +msgid "" +"Spindle\n" +"Controls" +msgstr "Ctrl-K" -#: src/emc/rs274ngc/interp_check.cc:94 +#: src/emc/usr_intf/gscreen/gscreen.glade:3195 #, fuzzy -msgid "P value not an integer with G10" -msgstr "Parâmetro P não é um inteiro com G10 L2" +msgid "Open" +msgstr "_Abrir" -#: src/emc/rs274ngc/interp_check.cc:95 -#, fuzzy -msgid "P value out of range (0-9) with G10 L2 or L20" -msgstr "Parâmetro P fora dos limites com G10 L2" +#: src/emc/usr_intf/gscreen/gscreen.glade:3205 +msgid "" +" Block\n" +"Delete" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:96 -#, fuzzy -msgid "P value out of range with G10 L1 or G10 L10" -msgstr "Parâmetro P fora dos limites com G10 L2" +#: src/emc/usr_intf/gscreen/gscreen.glade:3217 +msgid "" +"Optional\n" +" Stop" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:100 -msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." +#: src/emc/usr_intf/gscreen/gscreen.glade:3229 +msgid "" +" Full\n" +"View" msgstr "" -"Entre códigos G5.2 e G5.3, apenas códigos adicionais G5.2 são permitidos" -#: src/emc/rs274ngc/interp_check.cc:258 -#, fuzzy -msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" -msgstr "Parâmetro D sem G41, G41.1, G42, G42.2 ou G96 para usá-lo" +#: src/emc/usr_intf/gscreen/gscreen.glade:3265 +msgid "" +"Next\n" +" Tab" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:264 -msgid "E word with no G76, M66, M67 or M68 to use it" -msgstr "Parâmetro E sem G76, M66, M67 ou M68 para usá-lo" +#: src/emc/usr_intf/gscreen/gscreen.glade:3285 +#, fuzzy +msgid "" +" Feed\n" +"Override" +msgstr "Velocidade da máquina" -#: src/emc/rs274ngc/interp_check.cc:269 -msgid "H word with no G43 or G76 to use it" -msgstr "Parâmetro H sem G43 ou G76 para usá-lo" +#: src/emc/usr_intf/gscreen/gscreen.glade:3298 +#, fuzzy +msgid "" +"Spindle\n" +"Override" +msgstr "Velocidade da máquina" -#: src/emc/rs274ngc/interp_check.cc:275 +#: src/emc/usr_intf/gscreen/gscreen.glade:3311 #, fuzzy -msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" -msgstr "Parâmetro J sem G2, G3, G5, G5.1, G10, G76 ou G87 para usá-lo" +msgid "" +" Rapid\n" +"Override" +msgstr "Velocidade da máquina" -#: src/emc/rs274ngc/interp_check.cc:281 -msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" -msgstr "Parâmetro J sem G2, G3, G5, G5.1, G10, G76 ou G87 para usá-lo" +#: src/emc/usr_intf/gscreen/gscreen.glade:3332 +#, fuzzy +msgid "" +" Jog\n" +"Speed" +msgstr "Velocidade de Jog" -#: src/emc/rs274ngc/interp_check.cc:287 +#: src/emc/usr_intf/gscreen/gscreen.glade:3345 #, fuzzy -msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" +msgid "" +" Jog\n" +"Increments" +msgstr "Seleciona incremento de Jog" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3361 +msgid "" +"Adjust\n" +"Rotary" msgstr "" -"Parâmetro K sem comando G2, G3, G33, G33.1, G76, G87 ou G43.1 para usá-la" -#: src/emc/rs274ngc/interp_check.cc:297 +#: src/emc/usr_intf/gscreen/gscreen.glade:3383 msgid "" -"L word with no G10, cutter compensation, canned cycle, digital/analog input, " -"or NURBS code" +"Change\n" +" View" msgstr "" -"Parâmetro L sem comando G10, compensação de corte, ciclo pré-formado, " -"entrada digital/analógica ou código NURBS" -#: src/emc/rs274ngc/interp_check.cc:309 +#: src/emc/usr_intf/gscreen/gscreen.glade:3431 #, fuzzy msgid "" -"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " -"M53 M62 M63 M64 M65 M66 or user M code to use it" -msgstr "" -"Parâmetro P sem comando G4, G10, G64, G5, G5.2, G76, G82, G86, G88, G89 ou " -"M50, M51, M52, M53, M62, M63, M64, M65, M66 ou código M de usuário para usá-" -"lo." +" Pan\n" +"Vertical" +msgstr "Vertical" -#: src/emc/rs274ngc/interp_check.cc:314 +#: src/emc/usr_intf/gscreen/gscreen.glade:3444 #, fuzzy -msgid "P value not an integer with M19 G2 or G3" -msgstr "Parâmetro P não é um inteiro com G10 L2" +msgid "" +" Pan\n" +"Horizontal" +msgstr "Horizontal" -#: src/emc/rs274ngc/interp_check.cc:316 +#: src/emc/usr_intf/gscreen/gscreen.glade:3457 #, fuzzy -msgid "P value must be 0,1,or 2 with M19" -msgstr "Parâmetro P fora dos limites com G10 L2" +msgid "" +" Rotate\n" +"Horiontal" +msgstr "Horizontal" -#: src/emc/rs274ngc/interp_check.cc:318 +#: src/emc/usr_intf/gscreen/gscreen.glade:3470 #, fuzzy -msgid "P value should be 1 or greater with G2 or G3" -msgstr "Parâmetro P fora dos limites com G10 L2" +msgid "" +" Rotate\n" +"Vertical" +msgstr "Vertical" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3491 +msgid "" +"Search\n" +" Bwd" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3503 +msgid "" +"Search\n" +" Fwd" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:326 +#: src/emc/usr_intf/gscreen/gscreen.glade:3561 #, fuzzy msgid "" -"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " -"code that uses it" +" Reload\n" +"Program" +msgstr "Recarrega o programa" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3604 +msgid "" +" Clear\n" +"status" msgstr "" -"Parâmetro Q sem comando G5, G10, G64, G73, G76, G83, M66, M67, M68 ou código " -"M de usuário para usá-lo" -#: src/emc/rs274ngc/interp_check.cc:336 -#, fuzzy -msgid "R value must be within 0..360 with M19" -msgstr "Parâmetro P fora dos limites com G10 L2" +#: src/emc/usr_intf/gscreen/gscreen.glade:3634 +msgid "G54" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:138 -msgid "You must specify both X and Y coordinates for Control Points" +#: src/emc/usr_intf/gscreen/gscreen.glade:3650 +msgid "calc" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:141 -msgid "Can specify P without X and Y only for the first control point" +#: src/emc/usr_intf/gscreen/gscreen.glade:3725 +msgid "test" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:144 -msgid "Must specify positive weight P for every Control Point" +#: src/emc/usr_intf/gscreen/gscreen.glade:3728 +msgid "test2" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3778 +msgid "Data Entry" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:147 +#: src/emc/usr_intf/gscreen/gscreen.glade:3805 #, fuzzy -msgid "Cannot make a NURBS with 0 feedrate" -msgstr "Impossível realizar arco com velocidade de movimentação zero" +msgid "Calculator Entry" +msgstr "Refrigeração:" -#: src/emc/rs274ngc/interp_convert.cc:182 +#: src/emc/usr_intf/gscreen/gscreen.glade:3894 #, fuzzy -msgid "Cannot use G5.3 without G5.2 first" -msgstr "" -"Impossível usar G28 ou G30 com compensação de raio de ferramenta ativado" +msgid "Program Restart" +msgstr "Mostra _limites" -#: src/emc/rs274ngc/interp_convert.cc:183 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:3909 msgid "" -"You must specify a number of control points at least equal to the order L = " -"%d" +"Highlighting the run-at-line with the\n" +"up / down buttons or entering the line\n" +"directly." msgstr "" -"Você precisa especificar um número de pontos de controle pelo menos igual à " -"ordem L=%d" -#: src/emc/rs274ngc/interp_convert.cc:212 -msgid "Cannot convert spline with cutter radius compensation" -msgstr "Impossível converter spline com compensação de raio ligada" +#: src/emc/usr_intf/gscreen/gscreen.glade:3923 +msgid "" +"Line\n" +" Up" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:222 -msgid "Splines must be in the XY plane" -msgstr "Splines devem estar no plano XY" +#: src/emc/usr_intf/gscreen/gscreen.glade:3946 +msgid "" +" Line\n" +"Down" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:227 -msgid "Splines may not have motion in Z, A, B, or C" +#: src/emc/usr_intf/gscreen/gscreen.glade:4028 +msgid "S 1000" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:231 -msgid "Must specify both I and J with G5.1" +#: src/emc/usr_intf/gscreen/gscreen.glade:4098 +msgid " FWD" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:250 -msgid "Must specify both I and J, or neither" +#: src/emc/usr_intf/gscreen/gscreen.glade:4133 +msgid " REV" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:261 -msgid "Must specify both P and Q with G5" +#: src/emc/usr_intf/gscreen/gscreen2.glade:35 +msgid "screen 2" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:362 -msgid "" -"The move just after exiting cutter compensation mode must be straight, not " -"an arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:403 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:884 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:923 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:934 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:949 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1099 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1102 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1156 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1163 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1166 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2148 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2157 +msgid "**** GMOCCAPY INFO ****" msgstr "" -"O movimento após sair da compensação de raio precisa ser reto, não um arco" -#: src/emc/rs274ngc/interp_convert.cc:370 -msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:404 +msgid "**** no valid probe config in INI File ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:382 -#: src/emc/rs274ngc/interp_convert.cc:4266 -msgid "Cannot feed with zero spindle speed in feed per rev mode" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:405 +msgid "**** disabled tool measurement ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:393 -#: src/emc/rs274ngc/interp_convert.cc:399 -#: src/emc/rs274ngc/interp_convert.cc:408 -#: src/emc/rs274ngc/interp_convert.cc:414 -#: src/emc/rs274ngc/interp_convert.cc:423 -#: src/emc/rs274ngc/interp_convert.cc:429 -#, fuzzy, c-format -msgid "%c word missing in absolute center arc" -msgstr "Parâmetro F faltando com movimento em arco no modo de tempo inverso" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:770 +msgid "**** GMOCCAPY ERROR : ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:649 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:772 +#, python-format msgid "" -"Radius of cutter compensation entry arc is not greater than the tool radius" +"**** gmoccapy can only handle 4 axis, ****\n" +"**** but you have given %d through your INI file ****\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:868 -#: src/emc/rs274ngc/interp_convert.cc:878 src/emc/rs274ngc/interp_queue.cc:592 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:774 msgid "" -"Arc move in concave corner cannot be reached by the tool without gouging" +"**** gmoccapy will not start ****\n" +"\n" msgstr "" -"Movimento em arco em uma quina côncava não pode ser alcançado pela " -"ferramenta sem danificar o material" -#: src/emc/rs274ngc/interp_convert.cc:904 -msgid "Arc to arc motion is invalid because the arcs have the same center" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:786 +#, fuzzy, python-format +msgid "Home axis %s" +msgstr "Home" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:885 +msgid "**** To many increments given in INI File for this screen ****" msgstr "" -"Arco para movimento em arco é inválido porque os arcos precisam ter o mesmo " -"centro" -#: src/emc/rs274ngc/interp_convert.cc:907 -msgid "" -"Arc to arc motion makes a corner the compensated tool can't fit in without " -"gouging" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:886 +msgid "**** Only the first 10 will be reachable through this screen ****" msgstr "" -"Arco para movimento em arco gera uma quina onde a ferramenta compensada não " -"pode alcançar sem danificar o material" -#: src/emc/rs274ngc/interp_convert.cc:1036 -#: src/emc/rs274ngc/interp_convert.cc:1037 -#: src/emc/rs274ngc/interp_convert.cc:1038 -#: src/emc/rs274ngc/interp_convert.cc:3733 -#: src/emc/rs274ngc/interp_convert.cc:3736 -#: src/emc/rs274ngc/interp_convert.cc:3739 src/emc/rs274ngc/interp_find.cc:97 -#, c-format -msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" -msgstr "Posição absoluta inválida (%5.2f) para eixo rotacional %c" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:924 +msgid "**** gmoccapy screen 2 found ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1494 -msgid "Cannot change control mode with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:929 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1055 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1177 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1225 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1844 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2190 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2200 +msgid "**** GMOCCAPY ERROR ****" msgstr "" -"Impossível mudar o modo de controle quando compensação de raio de corte está " -"ativado" -#: src/emc/rs274ngc/interp_convert.cc:1607 -msgid "Cannot change coordinate systems with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:930 +msgid "**** screen 2 GLADE ERROR: ****" msgstr "" -"Impossível mudar sistema de coordenadas quando compensação de raio de corte " -"está ativada" -#: src/emc/rs274ngc/interp_convert.cc:1851 -#, c-format -msgid "G%d.1 with no D word" -msgstr "G%d.1 sem parâmetro D" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:935 +msgid "**** No gmoccapy2.glade file present ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1854 -#, c-format -msgid "G%d.1 with L word, but plane is not G18" -msgstr "G%d.1 com parâmetro L, mas plano ativo não é G18" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:950 +msgid "**** Invalid embeded tab configuration ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1865 -#, c-format -msgid "G%d requires D word to be a whole number" -msgstr "G%d requer que o parâmetro D seja um número inteiro" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:951 +msgid "**** No tabs will be added! ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1872 -#, c-format -msgid "G%d with lathe tool, but plane is not G18" -msgstr "G%d com ferramenta de torno, mas plano não é G18" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:964 +msgid "ERROR, trying to initialize the user tabs or panaels, check for typos" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2271 -#, fuzzy -msgid "Cannot set reference point with cutter compensation in effect" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1056 +msgid "**** Did not find a toolfile file in [EMCIO] TOOL_TABLE ****" msgstr "" -"Impossível setar saída do movimento quando compensação de raio de corte está " -"ativado" -#: src/emc/rs274ngc/interp_convert.cc:2786 -#, c-format -msgid "" -"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1100 +msgid "**** audio available! ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2787 -#, c-format -msgid "BUG: restore from level %d !?" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1103 +msgid "**** no audio available! ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2788 -#, c-format -msgid "BUG: restore to level %d !?" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1104 +msgid "**** PYGST libray not installed? ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2807 -#, c-format -msgid "M7x: restore_settings G20/G21 failed: '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1157 +msgid "**** virtual keyboard program found : " msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2819 -#, c-format -msgid "M7x: restore_settings failed executing: '%s': %s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1164 +msgid "**** virtual keyboard program found : " msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2885 -msgid "Cannot set motion output with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1167 +msgid "" +"**** No virtual keyboard installed, we checked for and ." msgstr "" -"Impossível setar saída do movimento quando compensação de raio de corte está " -"ativado" -#: src/emc/rs274ngc/interp_convert.cc:2886 -msgid "No valid P word with M62" -msgstr "Nenhum parâmetro P válido com M62" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1178 +msgid "**** Error with launching virtual keyboard," +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2890 -msgid "Cannot set motion digital output with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1179 +msgid "**** is onboard or matchbox-keyboard installed? ****" msgstr "" -"Impossível ativar saída digital de movimento quando compensação de raio de " -"corte está ativado" -#: src/emc/rs274ngc/interp_convert.cc:2891 -msgid "No valid P word with M63" -msgstr "Nenhum parâmetro P válido com M63" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1193 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1875 +msgid "interrupt running macro" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2895 -#: src/emc/rs274ngc/interp_convert.cc:2900 -msgid "Cannot set auxiliary digital output with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1226 +msgid "**** Did not find a parameter file in [RS274NGC] PARAMETER_FILE ****" msgstr "" -"Impossível alterar saída digital auxiliar com compensação de raio de corte " -"ativado" -#: src/emc/rs274ngc/interp_convert.cc:2896 -msgid "No valid P word with M64" -msgstr "Nenhum parâmetro P válido com M64" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1294 +msgid "Select the file you want to be loaded at program start" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2901 -msgid "No valid P word with M65" -msgstr "Nenhum parâmetro P válido com M65" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1329 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1353 +#, python-format +msgid "**** GMOCCAPY ERROR **** /n Message type %s not suported" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2931 -#, fuzzy -msgid "invalid P-word with M66" -msgstr "Nenhum parâmetro P válido com M62" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1462 +msgid "Unknown error type and no error text given" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2946 -msgid "Cannot wait for digital input with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1478 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1840 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1847 +msgid "Important Warning" msgstr "" -"Impossível esperar por entrada digital quando compensação de raio de corte " -"está ativada" -#: src/emc/rs274ngc/interp_convert.cc:2958 -msgid "Cannot wait for analog input with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1498 +msgid "ERROR : External ESTOP is set, could not change state!" msgstr "" -"Impossível esperar por entrada analógica quando compensação de raio de corte " -"está ativada" -#: src/emc/rs274ngc/interp_convert.cc:2973 -msgid "Cannot set motion analog output with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1511 +msgid "ERROR : Could not switch the machine on, is limit switch aktivated?" msgstr "" -"Impossível alterar saída analógica com compensação de raio de corte ativado" -#: src/emc/rs274ngc/interp_convert.cc:2974 -msgid "Invalid analog index with M67" -msgstr "Índice analógico inválido com M67" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1730 +msgid "It is not possible to change to MDI Mode at the moment" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2980 -msgid "Cannot set auxiliary analog output with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1754 +msgid "It is not possible to change to Auto Mode at the moment" msgstr "" -"Impossível alterar saída analógica auxiliar quando compensação de raio de " -"corte ativado" -#: src/emc/rs274ngc/interp_convert.cc:2981 -msgid "Invalid analog index with M68" -msgstr "Índice analógico inválido com M68" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1838 +msgid "" +"\n" +"**** No subroutine folder or program prefix is given in the ini file **** \n" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3012 -#, fuzzy -msgid "Need non-negative Q-word to specify tool number with M61" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1839 +msgid "**** so the corresponding file could not be found ****" msgstr "" -"Precisa de parâmetro Q positivo para especificar um número de ferramenta com " -"M61" -#: src/emc/rs274ngc/interp_convert.cc:3087 -msgid "Q word with M19 requires a value > 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1845 +#, python-format +msgid "" +"\n" +"**** File %s of the macro could not be found ****\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3115 -msgid "Cannot restore context from invalid stack frame - missing M70/M73?" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1846 +#, python-format +msgid "**** we searched in subdirectory %s ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3156 -#: src/emc/rs274ngc/interp_convert.cc:3173 -#: src/emc/rs274ngc/interp_convert.cc:3188 -#: src/emc/rs274ngc/interp_convert.cc:3202 -#: src/emc/rs274ngc/interp_convert.cc:3216 -msgid "Cannot enable overrides with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1851 +msgid "Enter value:" msgstr "" -"Impossível habilitar anulações quando compensação de raio de corte está " -"ativado" -#: src/emc/rs274ngc/interp_convert.cc:3163 -#: src/emc/rs274ngc/interp_convert.cc:3178 -#: src/emc/rs274ngc/interp_convert.cc:3193 -#: src/emc/rs274ngc/interp_convert.cc:3207 -#: src/emc/rs274ngc/interp_convert.cc:3221 -msgid "Cannot disable overrides with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1852 +#, fuzzy, python-format +msgid "Set parameter %s to:" +msgstr " Parâ_metros" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1854 +msgid "conversion error" msgstr "" -"Impossível desativar anulações quando compensação de raio de corte está " -"ativado" -#: src/emc/rs274ngc/interp_convert.cc:3325 -#: src/emc/rs274ngc/interp_convert.cc:3326 -#: src/emc/rs274ngc/interp_convert.cc:3327 -#, c-format -msgid "Indexing axis %c can only be moved with G0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1855 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3610 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3634 +msgid "Conversion error !" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3334 -#: src/emc/rs274ngc/interp_convert.cc:3336 -#: src/emc/rs274ngc/interp_convert.cc:3338 -#, c-format -msgid "Indexing axis %c can only be moved alone" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1856 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3299 +msgid "" +"Please enter only numerical values\n" +"Values have not been applied" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3433 -#, fuzzy -msgid "Cannot probe with feed per rev mode" -msgstr "Impossível realizar probing com velocidade de movimentação zero" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2149 +#, python-brace-format +msgid "**** replaced {0} to {1} ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3481 -msgid "Cannot change retract mode with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2158 +msgid "" +"\n" +"**** found more than 9 macros, only the first 9 will be used ****" msgstr "" -"Impossível modificar modo de retração quando compensação de raio de corte " -"está ativado" -#: src/emc/rs274ngc/interp_convert.cc:3515 -msgid "G10 L1 without offsets has no effect" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2191 +#, python-format +msgid "**** %s ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3621 -msgid "Q number in G10 is not an integer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2201 +#, python-format +msgid "**** No widget named: %s to sensitize ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3622 -msgid "Invalid tool orientation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2366 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1561 +msgid "No tool description available" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3721 -msgid "I J words not allowed with G10 L2" -msgstr "Parâmetros I J não permitidos com G10 L2" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2591 +#, python-format +msgid "Halo, welcome to the test message %d" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3742 -#, fuzzy -msgid "" -"Cannot change the active coordinate system with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2732 +msgid "Hal Pin is low, Access denied" msgstr "" -"Impossível mudar sistema de coordenadas quando compensação de raio de corte " -"está ativada" -#: src/emc/rs274ngc/interp_convert.cc:3750 -#, fuzzy -msgid "R not allowed in G10 L20" -msgstr "Parâmetros I J não permitidos com G10 L2" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2734 +msgid "wrong code entered, Access denied" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4323 -#, fuzzy -msgid "Spindle not turning in G33" -msgstr "Spindle não está girando em G86" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2735 +msgid "Just to warn you" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2810 +msgid "ERROR : No limit switch is active, ignore limits will not be set." +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4333 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2850 #, fuzzy -msgid "Spindle not turning in G33.1" -msgstr "Spindle não está girando em G86" +msgid "Classicladder real-time component not detected" +msgstr "Componente de tempo real não carregado" -#: src/emc/rs274ngc/interp_convert.cc:4376 -msgid "BUG: An axis incorrectly moved along with an indexer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2937 +msgid "Something went wrong, we have an unknown spindle widget" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4389 -msgid "BUG: trying to index incorrect axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3046 +msgid "Do you really want to delete the MDI history?\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4481 -msgid "Cannot use G76 threading cycle with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3047 +msgid "this will not delete the MDI History file, but will\n" msgstr "" -"Não pode usar G76 ciclo de rosca quando compensação de raio de corte está " -"ativado" - -#: src/emc/rs274ngc/interp_convert.cc:4484 -msgid "In G76, I must not be 0" -msgstr "Em G76, I não pode ser 0" - -#: src/emc/rs274ngc/interp_convert.cc:4486 -msgid "In G76, J must be greater than 0" -msgstr "Em G76, J precisa ser maior que 0" -#: src/emc/rs274ngc/interp_convert.cc:4488 -msgid "In G76, K must be greater than J" -msgstr "Em G76, K precisa ser maior que J" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3048 +msgid "delete the listbox entries for this session" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4631 -msgid "" -"Length of cutter compensation entry move is not greater than the tool radius" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3049 +msgid "Attention!!" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4850 -msgid "Zero degree inside corner is invalid for cutter compensation" -msgstr "Zero graus dentro de quina é inválido para compensação de corte" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3076 +msgid "This button will show or hide the keyboard" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4888 -#: src/emc/rs274ngc/interp_convert.cc:4896 -msgid "" -"Arc to straight motion makes a corner the compensated tool can't fit in " -"without gouging" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3196 +#, python-format +msgid "Offset %s could not be set, because off unknown axis" msgstr "" -"Movimento de arco para linha faz uma quina em que a compensação de " -"ferramenta não pode ser encaixada" -#: src/emc/rs274ngc/interp_convert.cc:4980 -msgid "Cannot change tools with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3197 +msgid "Wrong offset setting!" msgstr "" -"Impossível mudar de ferramenta enquanto a compensação de raio de corte está " -"ativada" -#: src/emc/rs274ngc/interp_convert.cc:5101 -msgid "Cannot change tool offset with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3202 +#, fuzzy +msgid "Enter value for diameter" +msgstr "Valor não-inteiro onde deveria haver um inteiro" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3203 +msgid "Set diameter to:" msgstr "" -"Impossível mudar offset de comprimento de ferramenta quando compensação de " -"raio da ferramenta está ativado" -#: src/emc/rs274ngc/interp_queue.cc:590 -#, c-format -msgid "" -"BUG: cutter compensation has generated an invalid arc with mismatched radii " -"r1 %f r2 %f\n" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3206 +#, fuzzy +msgid "Enter value for radius" +msgstr "Valor não-inteiro onde deveria haver um inteiro" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3207 +#, fuzzy +msgid "Set radius to:" +msgstr "Arco de raio zero" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3210 +#, fuzzy, python-format +msgid "Enter value for axis %s" +msgstr "Valor não-inteiro onde deveria haver um inteiro" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3211 +#, python-format +msgid "Set axis %s to:" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3215 +msgid "Conversion error in btn_set_value" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:612 -msgid "BUG: Unsupported plane in cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3216 +msgid "Conversion error in btn_set_value!" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3217 +msgid "Please enter only numerical values. Values have not been applied" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:622 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3232 msgid "" -"Straight traverse in concave corner cannot be reached by the tool without " -"gouging" +"you did not selected a system to be changed to, so nothing will be changed" msgstr "" -"Deslocamento linear em quina côncava não pode ser alcançado pela ferramenta " -"sem danificar o material" -#: src/emc/rs274ngc/interp_queue.cc:650 -#, c-format -msgid "BUG: Unsupported plane [%d] in cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3640 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3654 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3658 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3673 +msgid "Important Warning!" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:661 -msgid "" -"Straight feed in concave corner cannot be reached by the tool without gouging" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3284 +msgid "Enter the block height" msgstr "" -"Movimento linear em quina côncava não pode ser alcançado pela ferramenta sem " -"danificar o material" -#: src/emc/rs274ngc/interp_cycles.cc:628 -#, fuzzy -msgid "Cannot feed with zero feed rate" -msgstr "Impossível realizar G1 com velocidade de movimentação zero" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3285 +msgid "Block height measured from base table" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:629 -#, fuzzy -msgid "Cannot use inverse time feed with canned cycles" -msgstr "Impossível realizar probing com modo de velocidade inverso" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3297 +msgid "Conversion error in btn_block_height" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:630 -#, fuzzy -msgid "Cannot use canned cycles with cutter compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3298 +msgid "Conversion error in btn_block_height!" msgstr "" -"Impossível mudar o plano ativo com compensação de raio de corte ativada" -#: src/emc/rs274ngc/interp_cycles.cc:818 -msgid "G17 canned cycle is not possible on a machine without Z axis" -msgstr "Ciclo pré-formado G17 não é possível em máquina sem eixo Z" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3536 +msgid "Please remove the mounted tool and press OK when done" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1004 -msgid "G17.1 canned cycle is not possible on a machine without W axis" -msgstr "Ciclo G17.1 não é possível em máquina sem eixo W" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3539 +#, python-brace-format +msgid "" +"Please change to tool\n" +"\n" +"# {0:d} {1}\n" +"\n" +" then click OK." +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1220 -msgid "G19 canned cycle is not possible on a machine without X axis" -msgstr "Ciclo G19 não é possível em máquina sem eixo X" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3549 +msgid "Tool Change has been aborted!\n" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1388 -msgid "G19.1 canned cycle is not possible on a machine without U axis" -msgstr "Ciclo G19.1 não é possível em máquina sem eixo U" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3550 +msgid "The old tool will remain set!" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1613 -msgid "G18 canned cycle is not possible on a machine without Y axis" -msgstr "Ciclo G18 não é possível em máquina sem eixo Y" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3570 +msgid "No or more than one tool selected in tool table" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1780 -msgid "G18.1 canned cycle is not possible on a machine without V axis" -msgstr "Ciclo G18.1 não é possível em máquina sem eixo V" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3571 +msgid "Please select only one tool in the table" +msgstr "" -#: src/emc/rs274ngc/interp_find.cc:170 -msgid "Cannot use polar coordinates with G53" -msgstr "Impossível usar coordenadas polares com G53" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3573 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3580 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3589 +msgid "Warning Tool Touch off not possible!" +msgstr "" -#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 -#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 -#: src/emc/rs274ngc/interp_find.cc:347 -msgid "Cannot specify X or Y words with polar coordinate" -msgstr "Impossível especificar parâmetros X ou Y com coordenadas polares" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3577 +msgid "you can not touch of a tool, witch is not mounted in the spindle" +msgstr "" -#: src/emc/rs274ngc/interp_find.cc:272 -msgid "Must specify angle in polar coordinate if at the origin" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3578 +msgid "your selection has been reseted to the tool in spindle" msgstr "" -"Precisa especificar o ângulo em coordenadas polares caso esteja na origem" -#: src/emc/rs274ngc/interp_find.cc:338 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3586 +#, fuzzy msgid "" -"Incremental motion with polar coordinates is indeterminate when at the origin" +"Tool touch off is not possible with cutter radius compensation switched on!\n" msgstr "" -"Movimento incremental com coordenadas polares é indeterminado quando na " -"origem" +"Impossível mudar offset de comprimento de ferramenta quando compensação de " +"raio da ferramenta está ativado" -#: src/emc/rs274ngc/interp_find.cc:348 -msgid "G91 motion with polar coordinates is indeterminate when at the origin" -msgstr "Comando G91 com coordenadas polares é indeterminado quando na origem" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3587 +msgid "Please emit an G40 before tool touch off" +msgstr "" -#: src/emc/rs274ngc/interp_find.cc:720 -#, c-format -msgid "Requested tool %d not found in the tool table" -msgstr "Ferramenta requisitada %d não encontrada na tabela de ferramentas" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3597 +msgid "Real big error!" +msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:154 -msgid "Cannot use polar coordinate on a machine lacking X or Y axes" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3598 +msgid "" +"You managed to come to a place that is not possible in on_btn_tool_touchoff" msgstr "" -"Impossível usar coordenadas polares em máquina que não tem os eixos X ou Y" -#: src/emc/rs274ngc/interp_internal.cc:155 -msgid "Cannot use polar coordinate except in G17 plane" -msgstr "Não pode usar coordenadas polares exceto no plano G17" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3602 +#, fuzzy, python-format +msgid "Enter value for axis %s to set:" +msgstr "Valor não-inteiro onde deveria haver um inteiro" -#: src/emc/rs274ngc/interp_internal.cc:156 -msgid "Cannot specify both polar coordinate and X word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3603 +#, python-brace-format +msgid "Set parameter of tool {0:d} and axis {1} to:" msgstr "" -"Impossível especificar uma coordenada polar e um parâmetro X ao mesmo tempo" -#: src/emc/rs274ngc/interp_internal.cc:157 -msgid "Cannot specify both polar coordinate and Y word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3608 +#, python-format +msgid "Conversion error because of wrong entry for touch off axis %s" msgstr "" -"Impossível especificar uma coordenada polar e um parâmetro Y ao mesmo tempo" -#: src/emc/rs274ngc/interp_internal.cc:178 -#: src/emc/rs274ngc/interp_internal.cc:190 -#: src/emc/rs274ngc/interp_internal.cc:203 -msgid "Polar coordinates can only be used for motion" -msgstr "Coordenadas polares só podem ser usadas para movimentação" - -#: src/emc/rs274ngc/interp_read.cc:1143 src/emc/rs274ngc/interp_read.cc:1147 -#, c-format -msgid "Bad character '\\%03o' used" -msgstr "Caractere inválido usado no programa: '\\%03o'" - -#: src/emc/rs274ngc/interp_read.cc:1147 -#, c-format -msgid "Bad character '%c' used" -msgstr "Caractere inválido usado no programa: '%c'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3628 +msgid "Enter the tool number as integer " +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1671 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3629 #, fuzzy -msgid "Left bracket missing after 'while'" -msgstr "Fecha colchetes faltando após barra com 'atan'" +msgid "Select the tool to change" +msgstr "Selecione item para examinar" -#: src/emc/rs274ngc/interp_read.cc:1686 -#, fuzzy -msgid "Left bracket missing after 'repeat'" -msgstr "Fecha colchetes faltando após nome de operação com 1 parâmetro" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3631 +msgid "Conversion error because of wrong entry for tool number\n" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1701 -#, fuzzy -msgid "Left bracket missing after 'if'" -msgstr "Fecha colchetes faltando após barra com 'atan'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3632 +msgid "enter only integer nummbers" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1716 -#, fuzzy -msgid "Left bracket missing after 'elseif'" -msgstr "Fecha colchetes faltando após barra com 'atan'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3657 +msgid "Selected tool is already in spindle, no change needed." +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1919 -#, fuzzy -msgid "Cannot read current position with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3653 +msgid "" +"you selected no or more than one tool, the tool selection must be unique" msgstr "" -"Impossível setar saída do movimento quando compensação de raio de corte está " -"ativado" -#: src/emc/rs274ngc/interp_read.cc:1934 -msgid "Expected # reading parameter" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3672 +msgid "Could not understand the entered tool number. Will not change anything" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1936 -msgid "Expected ] reading bracketed parameter" +#: src/emc/usr_intf/gmoccapy/dialogs.py:33 +#: src/emc/usr_intf/gmoccapy/dialogs.py:38 +msgid "Enter System Unlock Code" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2608 -#, c-format -msgid "bad number format (conversion failed) parsing '%s'" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter value" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2609 -#, c-format -msgid "bad number format (trailing characters) parsing '%s'" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter the value to set" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2699 -msgid "Calculation resulted in 'not a number'" +#: src/emc/usr_intf/gmoccapy/notification.py:205 +#, python-format +msgid "Error trying to delet the message with number %s" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2701 -msgid "Calculation resulted in 'infinity'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:409 +msgid "left rotate, middle move, right zoom" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2994 -#, c-format -msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:413 +msgid "left zoom, middle move, right rotate" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3106 -msgid "Multiple U words on one line" -msgstr "Múltiplos parâmetros U em uma linha" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:417 +msgid "left move, middle rotate, right zoom" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3122 -msgid "Multiple V words on one line" -msgstr "Múltiplaos parâmetros V em uma linha" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:421 +msgid "left zoom, middle rotate, right move" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3138 -msgid "Multiple W words on one line" -msgstr "Múltiplos parâmetros W em uma linha" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:425 +msgid "left move, middle zoom, right rotate" +msgstr "" -#: src/emc/rs274ngc/interp_o_word.cc:95 -#, c-format -msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:429 +msgid "left rotate, middle zoom, right move" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:161 -#, c-format -msgid "Named parameter #<%s> not defined" -msgstr "Parâmetro nomeado #<%s> não definido" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:526 +#, fuzzy +msgid "clear plot" +msgstr "Apaga traçado da ferramenta" -#: src/emc/rs274ngc/interp_namedparams.cc:191 -#, fuzzy, c-format -msgid "cant open ini file '%s'" -msgstr "impossível abrir %s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:585 +#, fuzzy +msgid "view perspective" +msgstr "Vista em perspectiva" -#: src/emc/rs274ngc/interp_namedparams.cc:208 -#, fuzzy, c-format -msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" -msgstr "Parâmetro nomeado #<%s> não definido" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:608 +msgid "view along the X axis from positive to negative" +msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:232 -#, c-format -msgid "fetch_hal_param: hal_init(%s): %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:633 +msgid "view along the Y axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:233 -#, c-format -msgid "fetch_hal_param: hal_ready(): %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:658 +msgid "view along the Z axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:370 -#, c-format -msgid "Internal error: Could not assign #<%s>" -msgstr "Erro interno: impossível atribuir #<%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:685 +msgid "Show or hide tool path" +msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:378 -#, c-format -msgid "Cannot assign to read-only parameter #<%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:708 +msgid "Show or hide dimensions" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:682 -#, c-format -msgid "BUG: lookup_named_param(%s): unhandled index=%fn" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:731 +msgid "" +"view along the Y axis from positive to negative as viewn for a back tool " +"lathe" msgstr "" -#: src/emc/rs274ngc/rs274ngc_pre.cc:1269 src/emc/rs274ngc/rs274ngc_pre.cc:1344 -msgid "Queue is not empty after tool change" -msgstr "Fila não está vazia após troca de ferramenta" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:791 +#, fuzzy +msgid "Offset Page" +msgstr "Profundidade das imagens" -#: src/emc/rs274ngc/rs274ngc_pre.cc:1648 -#, fuzzy, c-format -msgid "Unable to open parameter file: '%s'" -msgstr "Impossível abrir arquivo" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:809 +#, fuzzy +msgid "Tooledit" +msgstr "Ordem das ferramentas:" -#: src/emc/rs274ngc/rs274ngc_return.hh:4 -msgid "A file is already open" -msgstr "Um arquivo já está aberto" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:831 +#, fuzzy +msgid "File Selection" +msgstr "Eixo:" -#: src/emc/rs274ngc/rs274ngc_return.hh:5 -msgid "All axes missing with g92" -msgstr "Nenhum eixo especificado com G92" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:869 +msgid "Toggle between metric and imperial units" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:6 -msgid "All axes missing with motion code" -msgstr "Nenhum eixo especificado no código de movimentação" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:887 +msgid "Switch DRO to DTG mode" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:7 -msgid "Arc radius too small to reach end point" -msgstr "Raio do arco é muito pequeno para alcançar o ponto final" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:905 +msgid "Toggle between machine and relative coordinates" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:8 -msgid "Argument to acos out of range" -msgstr "Argumento para 'acos' fora dos limites" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:928 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:946 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:963 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:980 +msgid "Klick to toggle through the DRO modes" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:9 -msgid "Argument to asin out of range" -msgstr "Argumento para 'asin' fora dos limites" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1253 +#, fuzzy +msgid "Ignore limits" +msgstr "Ultrapassar limites" -#: src/emc/rs274ngc/rs274ngc_return.hh:10 -msgid "Attempt to divide by zero" -msgstr "Tentativa de dividir por zero" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1321 +#, fuzzy +msgid "Jogging" +msgstr "Refrigeração:" -#: src/emc/rs274ngc/rs274ngc_return.hh:11 -msgid "Attempt to raise negative to non integer power" -msgstr "Tentativa de calcular potência não inteira de um número negativo" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1430 +msgid "Information over the tool in spindle" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:12 -msgid "Bad format unsigned integer" -msgstr "Inteiro mal formado" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1448 +#, fuzzy +msgid "Tool no." +msgstr "Troca de ferramenta" -#: src/emc/rs274ngc/rs274ngc_return.hh:13 -msgid "Bad number format" -msgstr "Formato de número inválido" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1474 +#, fuzzy +msgid "Diameter" +msgstr "Parâmetros" -#: src/emc/rs274ngc/rs274ngc_return.hh:14 -msgid "Bug bad g code modal group 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1503 +msgid "offset z" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:15 -msgid "Bug code not g0 or g1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1532 +msgid "offset x" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:16 -msgid "Bug code not g17 g18 or g19" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1580 +#, fuzzy +msgid "Tool information" +msgstr "Mostrar _Configuração Hal" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1592 +msgid "G and M code information as well as speed and feed" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:17 -msgid "Bug code not g20 or g21" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1611 +#, fuzzy +msgid "active_mcodes_label" +msgstr "Códigos G ativos:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1663 +#, fuzzy +msgid "active_gcodes_label" +msgstr "Códigos G ativos:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1717 +#, fuzzy +msgid "G-Code" +msgstr "Spindle:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1730 +msgid "The name and location of the loaded program" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:18 -msgid "Bug code not g28 or g30" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1742 +#, fuzzy +msgid "No Program loaded" +msgstr "Filtro de programa %r falhado" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1750 +#, fuzzy +msgid "Program" +msgstr "Pausa o programa" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1800 +msgid "Vel." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:19 -msgid "Bug code not g2 or g3" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1814 +msgid "Displays the current velocity" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:20 -msgid "Bug code not g4 g10 g28 g30 g53 or g92 series" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1838 +msgid "adjust max vel of machine" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:21 -msgid "Bug code not g61 g61.1 or g64" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1854 +#, fuzzy +msgid "Max. Velocity" +msgstr "Velocidade da máquina" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1885 +msgid "Displayes the programmed feed rate" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:22 -msgid "Bug code not g90 or g91" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1904 +#, fuzzy +msgid "reset feed override to 100 %" +msgstr "Seleciona velocidade da máquina de 0% a 100%" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1922 +#, fuzzy +msgid "adjust feed override" +msgstr "Velocidade da máquina" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1941 +#, fuzzy +msgid "Feed Override [%]" +msgstr "Velocidade da máquina" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2034 +#, fuzzy +msgid "Cooling" +msgstr "Refrigeração:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2285 +#, fuzzy +msgid "Spindle [rpm]" +msgstr "Spindle:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2377 +msgid "" +"Search\n" +" back" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:23 -msgid "Bug code not g98 or g99" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2394 +msgid "" +"Search\n" +" fwd" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:24 -msgid "Bug code not in g92 series" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2446 +#, fuzzy +msgid "" +"Replace\n" +" Text:" +msgstr "Relativa" -#: src/emc/rs274ngc/rs274ngc_return.hh:25 -msgid "Bug code not in range g54 to g593" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2456 +#, fuzzy +msgid "" +"Replace\n" +" All" +msgstr "Relativa" -#: src/emc/rs274ngc/rs274ngc_return.hh:26 -msgid "Bug code not m0 m1 m2 m30 m60" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2470 +msgid "" +"Ignore\n" +" Case" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:27 -msgid "Bug distance mode not g90 or g91" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2616 +msgid "Start as fullscreen" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:28 -msgid "Bug function should not have been called" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2631 +msgid "Start maximized" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:29 -msgid "Bug in tool radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2646 +msgid "Start as window" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:30 -msgid "Bug plane not xy yz or xz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2670 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4426 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4943 +msgid "X Pos." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:31 -msgid "Bug side not right or left" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2683 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4437 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4928 +msgid "Y Pos." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:32 -msgid "Bug unknown motion code" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2698 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4855 +msgid "Width" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:33 -msgid "Bug unknown operation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2713 +msgid "Height" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:34 -msgid "Cannot change axis offsets with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2811 +msgid "hide cursor" msgstr "" -"Impossível mudar offsets de eixos com compensação de raio de ferramenta " -"ativado" - -#: src/emc/rs274ngc/rs274ngc_return.hh:35 -msgid "Cannot create backup file" -msgstr "Impossível criar arquivo de backup" - -#: src/emc/rs274ngc/rs274ngc_return.hh:36 -msgid "Cannot do g1 with zero feed rate" -msgstr "Impossível realizar G1 com velocidade de movimentação zero" -#: src/emc/rs274ngc/rs274ngc_return.hh:37 -msgid "Cannot do zero repeats of cycle" -msgstr "Impossível realizar zero repetições de um ciclo" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2830 +#, fuzzy +msgid "Main Window" +msgstr "Spindle:" -#: src/emc/rs274ngc/rs274ngc_return.hh:38 -msgid "Cannot make arc with zero feed rate" -msgstr "Impossível realizar arco com velocidade de movimentação zero" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2857 +#, fuzzy +msgid "Show keyboard on offset" +msgstr "Mostra _limites" -#: src/emc/rs274ngc/rs274ngc_return.hh:39 -msgid "Cannot open backup file" -msgstr "Impossível abrir arquivo de backup" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2871 +msgid "Show keyboard on tooledit" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:40 -msgid "Cannot open variable file" -msgstr "Impossível abrir arquivo de variáveis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2885 +msgid "Show keyboard on MDI" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:41 -msgid "Cannot probe with cutter radius comp on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2899 +msgid "Show keyboard on EDIT" msgstr "" -"Impossível realizar probing com compensação de raio de ferramenta ativado" -#: src/emc/rs274ngc/rs274ngc_return.hh:42 -msgid "Cannot probe with zero feed rate" -msgstr "Impossível realizar probing com velocidade de movimentação zero" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2913 +msgid "Show keyboard on load file" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:43 -msgid "Cannot put a b in canned cycle" -msgstr "Impossível colocar um 'b' no ciclo" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2931 +#, fuzzy +msgid "Keyboard" +msgstr "Spindle:" -#: src/emc/rs274ngc/rs274ngc_return.hh:44 -msgid "Cannot put a c in canned cycle" -msgstr "Impossível colocar um 'c' no ciclo" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2959 +#, fuzzy +msgid "show preview" +msgstr "Vista lateral" -#: src/emc/rs274ngc/rs274ngc_return.hh:45 -msgid "Cannot put an a in canned cycle" -msgstr "Impossível colocar um 'a' no ciclo" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2973 +#, fuzzy +msgid "show offsets" +msgstr "Mostra _limites" -#: src/emc/rs274ngc/rs274ngc_return.hh:46 -msgid "Cannot turn cutter radius comp on when on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2991 +msgid "On Touch off" msgstr "" -"Impossível ligar comepnsação de raio de ferramenta quando já está ligado" - -#: src/emc/rs274ngc/rs274ngc_return.hh:47 -msgid "Cannot use axis values with g80" -msgstr "Impossível usar valores de eixos com G80" - -#: src/emc/rs274ngc/rs274ngc_return.hh:48 -msgid "Cannot use axis values without a g code that uses them" -msgstr "Impossível usar valores de eixo sem um código G que os utilize" -#: src/emc/rs274ngc/rs274ngc_return.hh:49 -msgid "Cannot use g28 or g30 with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3005 +msgid "" +" Display \n" +"Aux Screen" msgstr "" -"Impossível usar G28 ou G30 com compensação de raio de ferramenta ativado" -#: src/emc/rs274ngc/rs274ngc_return.hh:50 -msgid "Cannot use g53 incremental" -msgstr "Impossível usar G53 incremental" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3052 +#, fuzzy +msgid "Relative Color" +msgstr "Mostra posição relativa" -#: src/emc/rs274ngc/rs274ngc_return.hh:51 -msgid "Cannot use g53 with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3079 +#, fuzzy +msgid "Absolute Color" +msgstr "Sobre o AXIS" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3110 +msgid "DTG Color" msgstr "" -"Impossível usar G28 ou G30 com compensação de raio de ferramenta ativado" -#: src/emc/rs274ngc/rs274ngc_return.hh:52 -msgid "Cannot use two g codes that both use axis values" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3139 +msgid "Use Auto Units" msgstr "" -"Impossível usar dois comandos em código G quando ambos usam valores de eixos" -#: src/emc/rs274ngc/rs274ngc_return.hh:53 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3159 #, fuzzy -msgid "Command too long" -msgstr "Comando muito longo" - -#: src/emc/rs274ngc/rs274ngc_return.hh:54 -msgid "Current point same as end point of arc" -msgstr "Ponto atual é o mesmo que o ponto final do arco" +msgid "Show the DRO Button" +msgstr "Tecla Shift+Left" -#: src/emc/rs274ngc/rs274ngc_return.hh:55 -msgid "Dwell time missing with g4" -msgstr "Tempo de espera faltando com G4" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3190 +#, fuzzy +msgid "Homed color" +msgstr "Home" -#: src/emc/rs274ngc/rs274ngc_return.hh:56 -msgid "Dwell time p word missing with g82" -msgstr "Tempo de espera com parâmetro P faltando com G82" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3204 +#, fuzzy +msgid "Unhomed color" +msgstr "Home" -#: src/emc/rs274ngc/rs274ngc_return.hh:57 -msgid "Dwell time p word missing with g86" -msgstr "Tempo de espera com parâmetro P faltando com G86" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3299 +msgid "Digits" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:58 -msgid "Dwell time p word missing with g88" -msgstr "Tempo de espera com parâmetro P faltando com G88" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3344 +msgid "" +"toggle DRO mode \n" +"clicking on the DRO" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:59 -msgid "Dwell time p word missing with g89" -msgstr "Tempo de espera com parâmetro P faltando com G89" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3369 +#, fuzzy +msgid "DRO" +msgstr "Spindle:" -#: src/emc/rs274ngc/rs274ngc_return.hh:60 -msgid "Equal sign missing in parameter setting" -msgstr "Sinal de igual faltando no parâmetro" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3401 +#, fuzzy +msgid "Grid size" +msgstr "Tamanho:" -#: src/emc/rs274ngc/rs274ngc_return.hh:61 -msgid "F word missing with inverse time arc move" -msgstr "Parâmetro F faltando com movimento em arco no modo de tempo inverso" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3430 +#, fuzzy +msgid "Show DRO" +msgstr "Mostra _limites" -#: src/emc/rs274ngc/rs274ngc_return.hh:62 -msgid "F word missing with inverse time g1 move" -msgstr "Parâmetro F faltando com movimento G1 no modo de tempo inverso" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3444 +#, fuzzy +msgid "Show offsets" +msgstr "Mostra _limites" -#: src/emc/rs274ngc/rs274ngc_return.hh:63 -msgid "File ended with no percent sign" -msgstr "Arquivo terminou sem sinal de porcentagem" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3458 +msgid "Show DTG" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:64 -msgid "File ended with no percent sign or program end" -msgstr "Arquivo terminou sem sinal de porcentagem ou fim de programa (M30)" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3483 +#, fuzzy +msgid "Mouse Button mode" +msgstr "Refrigeração:" -#: src/emc/rs274ngc/rs274ngc_return.hh:65 -msgid "File name too long" -msgstr "Nome do arquivo muito comprido" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3512 +#, fuzzy +msgid "Preview" +msgstr "Vista lateral" -#: src/emc/rs274ngc/rs274ngc_return.hh:66 -msgid "G code out of range" -msgstr "Código G fora dos limites" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3565 +#, fuzzy +msgid "" +"current\n" +" file" +msgstr "Recarrega Código G [Control-R]" -#: src/emc/rs274ngc/rs274ngc_return.hh:67 -msgid "I word given for arc in yz plane" -msgstr "Parâmetro I dado para arco no plano YZ" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3611 +msgid "File to load on start" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:68 -msgid "I word missing with g87" -msgstr "Parâmetro I faltando com G87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3638 +#, fuzzy +msgid "Select user dir" +msgstr "Seleciona incremento de Jog" -#: src/emc/rs274ngc/rs274ngc_return.hh:69 -msgid "J word given for arc in xz plane" -msgstr "Parâmetro J dado para arco no plano XZ" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3647 +#, fuzzy +msgid "Select jump to dir" +msgstr "Selecione item para examinar" -#: src/emc/rs274ngc/rs274ngc_return.hh:70 -msgid "J word missing with g87" -msgstr "Parâmetro J faltando com comando G87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3767 +msgid "Themes and sound" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:71 -msgid "K word given for arc in xy plane" -msgstr "Parâmetro K dado para um arco no plano XY" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3799 +msgid "Appearance" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:72 -msgid "K word missing with g87" -msgstr "Parâmetro K faltando com G87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3833 +#, fuzzy +msgid "Scale max velocity" +msgstr "_Mostra o traçado em tempo real" -#: src/emc/rs274ngc/rs274ngc_return.hh:73 -msgid "Left bracket missing after slash with atan" -msgstr "Fecha colchetes faltando após barra com 'atan'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3846 +#, fuzzy +msgid "Scale jog velocity" +msgstr "_Mostra o traçado em tempo real" -#: src/emc/rs274ngc/rs274ngc_return.hh:74 -msgid "Left bracket missing after unary operation name" -msgstr "Fecha colchetes faltando após nome de operação com 1 parâmetro" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3861 +#, fuzzy +msgid "Scale feed override" +msgstr "Velocidade da máquina" -#: src/emc/rs274ngc/rs274ngc_return.hh:75 -msgid "M code greater than 199" -msgstr "Código M maior que 199" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3876 +#, fuzzy +msgid "Scale spindle override" +msgstr "Velocidade da máquina" -#: src/emc/rs274ngc/rs274ngc_return.hh:76 -msgid "Mixed radius ijk format for arc" -msgstr "Formato de raio ijk combinado para arco" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3970 +#, fuzzy +msgid "Hardware MPG Scale" +msgstr "Spindle:" -#: src/emc/rs274ngc/rs274ngc_return.hh:77 -msgid "Multiple a words on one line" -msgstr "Múltiplos parâmetros 'A' em uma linha" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3994 +msgid "Use keyboard shortcuts" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:78 -msgid "Multiple b words on one line" -msgstr "Múltiplos parâmetros 'B' em uma linha" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4007 +msgid "Keyboard shortcuts" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:79 -msgid "Multiple c words on one line" -msgstr "Múltiplos parâmetros 'C' em uma linha" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4034 +msgid "Use unlock code" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:80 -msgid "Multiple d words on one line" -msgstr "Múltiplos parâmetros 'D' em uma linha" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4050 +#, fuzzy +msgid "Do not use unlock code" +msgstr "Impossível usar palavra c" -#: src/emc/rs274ngc/rs274ngc_return.hh:81 -msgid "Multiple f words on one line" -msgstr "Múltiplos parâmetros 'F' em uma linha" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4066 +msgid "Use hal pin to unlock" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:82 -msgid "Multiple h words on one line" -msgstr "Múltiplos parâmetros 'H' em uma linha" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4087 +#, fuzzy +msgid "Unlock settings" +msgstr "Refrigeração:" -#: src/emc/rs274ngc/rs274ngc_return.hh:83 -msgid "Multiple i words on one line" -msgstr "Múltiplos parâmetros 'I' em uma linha" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4197 +#, fuzzy +msgid "Spindle bar min" +msgstr "Freio do spindle ativado" -#: src/emc/rs274ngc/rs274ngc_return.hh:84 -msgid "Multiple j words on one line" -msgstr "Múltiplos parâmetros 'j' em uma linha" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4210 +#, fuzzy +msgid "Spindle bar max" +msgstr "Freio do spindle ativado" -#: src/emc/rs274ngc/rs274ngc_return.hh:85 -msgid "Multiple k words on one line" -msgstr "Múltiplos parâmetros 'K' em uma linha" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4252 +msgid "Hide turtle Jog Button" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:86 -msgid "Multiple l words on one line" -msgstr "Múltiplos parâmetros 'L' em uma linha" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4282 +msgid "Turtle jog Factor" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:87 -msgid "Multiple p words on one line" -msgstr "Múltiplos parâmetros 'P' em uma linha" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4318 +#, fuzzy +msgid "Turtle Jog" +msgstr "Refrigeração:" -#: src/emc/rs274ngc/rs274ngc_return.hh:88 -msgid "Multiple q words on one line" -msgstr "Múltiplos parâmetros 'Q' em uma linha" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4360 +msgid "Hardware" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:89 -msgid "Multiple r words on one line" -msgstr "Múltiplos parâmetros 'R' em uma linha" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4392 +msgid "Use auto tool measurement" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:90 -msgid "Multiple s words on one line" -msgstr "Múltiplos parâmetros 'S' em uma linha" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4450 +msgid "Probe Height" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:91 -msgid "Multiple t words on one line" -msgstr "Múltiplos parâmetros 'T' em uma linha" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4485 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4498 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4527 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4556 +msgid "0.000" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:92 -msgid "Multiple x words on one line" -msgstr "Múltiplos parâmetros 'X' em uma linha" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4514 +msgid "Z Pos." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:93 -msgid "Multiple y words on one line" -msgstr "Múltiplos parâmetros 'Y' em uma linha" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4543 +msgid "Max. Probe" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:94 -msgid "Multiple z words on one line" -msgstr "Múltiplos parâmetros 'Z' em uma linha" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4575 +#, fuzzy +msgid "Probe Informations" +msgstr "Mostrar _Configuração Hal" -#: src/emc/rs274ngc/rs274ngc_return.hh:95 -msgid "Must use g0 or g1 with g53" -msgstr "Precisa usar G0 ou G1 com G53" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4607 +msgid "Search Vel." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:96 -msgid "Negative argument to sqrt" -msgstr "Argumento negativo para 'sqrt'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4618 +msgid "Probe Vel." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:97 -msgid "Negative d word tool radius index used" -msgstr "Índice de raio de ferramenta negativo usado com parâmetro 'D'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4674 +#, fuzzy +msgid "Probe velocitys" +msgstr "Velocidade da máquina" -#: src/emc/rs274ngc/rs274ngc_return.hh:98 -msgid "Negative f word used" -msgstr "Parâmetro F negativo utilizado" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4688 +msgid "" +"No valid configuration\n" +"found in your INI file,\n" +"please take a look at \n" +"the WIKI to check how\n" +"to configure the settings." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:99 -msgid "Negative g code used" -msgstr "Código G negativo usado" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4708 +#, fuzzy +msgid "Tool Measurement" +msgstr "Refrigeração:" -#: src/emc/rs274ngc/rs274ngc_return.hh:100 -msgid "Negative h word used" -msgstr "Parâmetro H negativo usado" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4737 +msgid "" +"If the 4'th axis is used\n" +"for a tool changer, you\n" +"hide the DRO and\n" +"jog buttons." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:101 -msgid "Negative l word used" -msgstr "Parâmetro L negativo usado" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4749 +#, fuzzy +msgid "Hide 4'th axis" +msgstr "Jog no terceiro eixo" -#: src/emc/rs274ngc/rs274ngc_return.hh:102 -msgid "Negative m code used" -msgstr "Comando M negativo usado" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4769 +#, fuzzy +msgid "Tool Changer" +msgstr "Refrigeração:" -#: src/emc/rs274ngc/rs274ngc_return.hh:103 -msgid "Negative or zero q value used" -msgstr "Valor zero ou negativo usado" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4808 +msgid "Use frames" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:104 -msgid "Negative p word used" -msgstr "Parâmetro P negativo usado" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4840 +msgid "max." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:105 -msgid "Negative spindle speed used" -msgstr "Velocidade negativa do spindle usada" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4992 +msgid "Launch test message" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:106 -msgid "Negative tool id used" -msgstr "ID de ferramenta negativo usado" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5011 +msgid "" +" gmoccapy message\n" +" behavior and appearance " +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:107 -msgid "Nested comment found" -msgstr "Comentários aninhados encontrados" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5049 +msgid "Do not use run from line" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:108 -msgid "No characters found in reading real value" -msgstr "Nenhum caractere encontrado durante leitura de valor real" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5065 +#, fuzzy +msgid "Use run from line" +msgstr "Vista da bandeja ou seleciona linha" -#: src/emc/rs274ngc/rs274ngc_return.hh:109 -msgid "Non integer value for integer" -msgstr "Valor não-inteiro onde deveria haver um inteiro" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5086 +#, fuzzy +msgid "Run from line" +msgstr "Vista da bandeja ou seleciona linha" -#: src/emc/rs274ngc/rs274ngc_return.hh:110 -msgid "Null missing after newline" -msgstr "Caractere 'nulo' faltando após quebra de linha" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5119 +msgid "" +"Advanced\n" +" Settings" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:111 -msgid "Parameter file out of order" -msgstr "Arquivo de parâmetros fora de ordem" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5157 +msgid "User tab 1" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:112 -msgid "Parameter number out of range" -msgstr "Número do parâmetro fora dos limites" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5171 +msgid "User tabs" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:113 -msgid "Parameter is readonly" -msgstr "Parâmetro é apenas leitura" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5207 +msgid "Estop the machine" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:114 -msgid "Q word missing with g83" -msgstr "Parâmetro Q faltando com G83" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5229 +#, fuzzy +msgid "Turn the machine on/off" +msgstr "Liga a máquina" -#: src/emc/rs274ngc/rs274ngc_return.hh:115 -msgid "Queue is not empty after probing" -msgstr "Fila não está vazia após probing" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5251 +msgid "enter manual mode to jog axis by hand or touch off" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:116 -msgid "R clearance plane unspecified in cycle" -msgstr "Plano de liberação R não especificado no ciclo" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5271 +#, fuzzy +msgid "enter MDI mode to launch g-code commands" +msgstr "Precisa estar no modo MDI para enviar um comando MDI" -#: src/emc/rs274ngc/rs274ngc_return.hh:117 -msgid "R i j k words all missing for arc" -msgstr "Comando de arco faltando parâmetros R I J K" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5290 +#, fuzzy +msgid "enter auto mode to run programs" +msgstr "Recarrega o programa" -#: src/emc/rs274ngc/rs274ngc_return.hh:118 -msgid "R less than x in cycle in yz plane" -msgstr "R menos que X em ciclo no plano YZ" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5308 +msgid "Enter the settings page, the default code is \"123\"" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:119 -msgid "R less than y in cycle in xz plane" -msgstr "R menos que Y em ciclo no plano XZ" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5330 +#, fuzzy +msgid "show user tabs" +msgstr "Mostra _limites" -#: src/emc/rs274ngc/rs274ngc_return.hh:120 -msgid "R less than z in cycle in xy plane" -msgstr "R menos que Z em ciclo no plano XY" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5381 +msgid "open homing button list" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:121 -msgid "R word with no g code that uses it" -msgstr "Parâmetro R sem código G que o utilize" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5398 +msgid "open touch off button list" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:122 -msgid "Slash missing after first atan argument" -msgstr "Barra faltando após primeiro argumento para 'atan'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5427 +msgid "Open the tooleditor page" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:123 -msgid "Spindle not turning clockwise in g84" -msgstr "Spindle não está girando em sentido horário em G84" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5498 +msgid "make the preview as large as possible" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:124 -msgid "Spindle not turning in g86" -msgstr "Spindle não está girando em G86" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5515 +msgid "Close moccapy / leave the program" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:125 -msgid "Spindle not turning in g87" -msgstr "Spindle não está girando em G87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5577 +msgid "This button will show or hide the Keyboard" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:126 -msgid "Spindle not turning in g88" -msgstr "Spindle não está girando em G88" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5620 +#, fuzzy +msgid "Load a new program" +msgstr "Recarrega o programa" -#: src/emc/rs274ngc/rs274ngc_return.hh:127 -msgid "Sscanf failed" -msgstr "Sscanf falhou" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5637 +#, fuzzy +msgid "Run the loaded program" +msgstr "Recarrega o programa" -#: src/emc/rs274ngc/rs274ngc_return.hh:128 -msgid "Start point too close to probe point" -msgstr "Ponto inicial muito próximo do ponto de probing" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5654 +#, fuzzy +msgid "Stop the running program" +msgstr "Pára o programa, ou" -#: src/emc/rs274ngc/rs274ngc_return.hh:129 -msgid "Too many m codes on line" -msgstr "Muitos códigos M em uma linha" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5672 +#, fuzzy +msgid "Pause the running program" +msgstr "Pára o programa, ou" -#: src/emc/rs274ngc/rs274ngc_return.hh:130 -msgid "Pocket max too large" -msgstr "Máximo do pocket muito alto" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5680 +#, fuzzy +msgid "pause the running program" +msgstr "Pára o programa, ou" -#: src/emc/rs274ngc/rs274ngc_return.hh:131 -msgid "Tool radius not less than arc radius with comp" -msgstr "Raio da ferramenta não é menor que raio do arco com compensação" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5698 +msgid "Run the loaded program step by step" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:132 -msgid "Two g codes used from same modal group" -msgstr "Dois códigos G do mesmo grupo modal usados ao mesmo tempo" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5715 +msgid "" +"run the program from a certain line, attention, that is dangerous, because " +"the previous lines will not checed!" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:133 -msgid "Two m codes used from same modal group" -msgstr "Dois códigos M do mesmo grupo modal usados ao mesmo tempo" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5732 +msgid "" +"Machine or not the optional blocks of the program. If the button is pressed, " +"the optional blocks will not be machined. The button will indicate this by a " +"yellow background." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:134 -#, fuzzy, c-format -msgid "Unable to open file <%s>" -msgstr "Impossível abrir arquivo" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5757 +msgid "" +"Make optional stops or not. if an M1 is programed and the button is pressed " +"(is active) the programm will pause if it found a M1" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:135 -msgid "Unclosed comment found" -msgstr "Comentário não fechado encontrado" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5789 +#, fuzzy +msgid "Edit the loaded program" +msgstr "Recarrega o programa" -#: src/emc/rs274ngc/rs274ngc_return.hh:136 -msgid "Unclosed expression" -msgstr "Expressão não fechada" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5837 +#, fuzzy +msgid "home all axis" +msgstr "Home" -#: src/emc/rs274ngc/rs274ngc_return.hh:137 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5873 #, fuzzy -msgid "Unknown g code used" -msgstr "Código G desconhecido usado" +msgid "home x axis" +msgstr "Home" -#: src/emc/rs274ngc/rs274ngc_return.hh:138 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5897 #, fuzzy -msgid "Unknown m code used" -msgstr "Código M desconhecido usado" +msgid "home y axis" +msgstr "Home" -#: src/emc/rs274ngc/rs274ngc_return.hh:139 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5929 #, fuzzy -msgid "Unknown operation" -msgstr "Operação desconhecida" +msgid "home z axis" +msgstr "Home" -#: src/emc/rs274ngc/rs274ngc_return.hh:140 -msgid "Unknown operation name starting with a" -msgstr "Nome de operação começando com 'a' desconhecida" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5987 +#, fuzzy +msgid "Unhome all axis" +msgstr "Home" -#: src/emc/rs274ngc/rs274ngc_return.hh:141 -msgid "Unknown operation name starting with m" -msgstr "Nome de operação desconhecida começando com 'm'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6023 +msgid "go back to main button list" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:142 -msgid "Unknown operation name starting with o" -msgstr "Nome de operação desconhecida começando com 'o'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6053 +msgid "" +" edit\n" +"offsets" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:143 -msgid "Unknown operation name starting with x" -msgstr "Nome de operação desconhecida começando com 'x'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6060 +#, fuzzy +msgid "Edit offsets" +msgstr "Mostra _limites" -#: src/emc/rs274ngc/rs274ngc_return.hh:144 -msgid "Unknown word starting with a" -msgstr "Parâmetro desconhecido começando com 'a'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6076 +msgid "touch off X / set X to 0" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:145 -msgid "Unknown word starting with c" -msgstr "Parâmetro desconhecido começando com 'c'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6100 +msgid "touch off Y / set Y to 0" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:146 -msgid "Unknown word starting with e" -msgstr "Parâmetro desconhecido começando com 'e'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6135 +msgid "touch off Z / set Z to 0" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:147 -msgid "Unknown word starting with f" -msgstr "Parâmetro desconhecido começando com 'f'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6155 +msgid "" +"zero\n" +"G92" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:148 -msgid "Unknown word starting with l" -msgstr "Parâmetro desconhecido começando com 'l'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6161 +msgid "Zero all G92 offsets" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:149 -msgid "Unknown word starting with r" -msgstr "Parâmetro desconhecido começando com 'r'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6172 +msgid "" +" Block\n" +"Height" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:150 -msgid "Unknown word starting with s" -msgstr "Parâmetro desconhecido começando com 's'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6192 +msgid "touch off X / set X to an desired value" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:151 -msgid "Unknown word starting with t" -msgstr "Parâmetro desconhecido começando com 't'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6216 +msgid "touch off Y / set Y to an desired value" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:152 -msgid "Unknown word where unary operation could be" -msgstr "Parâmetro desconhecido onde operação unária deveria estar" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6251 +msgid "touch off Z / set Z to an desired value" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:153 -msgid "X and y words missing for arc in xy plane" -msgstr "Parâmetros X e Y faltando para arco no plano XY" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6270 +msgid "" +" set\n" +"selected" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:154 -msgid "X and z words missing for arc in xz plane" -msgstr "Parâmetros X e Z faltando para arco no plano XZ" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6277 +#, fuzzy +msgid "set the selected coordinate system to be the active one" +msgstr "" +"Impossível mudar sistema de coordenadas quando compensação de raio de corte " +"está ativada" -#: src/emc/rs274ngc/rs274ngc_return.hh:155 -msgid "X value unspecified in yz plane canned cycle" -msgstr "Valor X não especificado no plano YZ em movimento programado" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6293 +msgid "Go back to main view" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:156 -msgid "Y and z words missing for arc in yz plane" -msgstr "Parâmetros Y e Z faltando para arco no plano YZ" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6324 +msgid "delete MDI" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:157 -msgid "Y value unspecified in xz plane canned cycle" -msgstr "Valor Y não especificado no plano XZ do movimento programado" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6330 +msgid "delete MDI history" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:158 -msgid "Z value unspecified in xy plane canned cycle" -msgstr "Valor do Z não especificado no plano XY do movimento programado" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6380 +msgid "Cl.-ladder" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:159 -msgid "Zero or negative argument to ln" -msgstr "Argumento zero ou negativo para função ln" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6386 +msgid "Open classicladder" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:161 -msgid "K word missing with g33/g33.1" -msgstr "Parâmetro K faltando com g33/g33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6397 +#, fuzzy +msgid "Hal-Scope" +msgstr "Ha_lScope" -#: src/emc/rs274ngc/rs274ngc_return.hh:162 -msgid "F word used with a g33/g33.1" -msgstr "Parâmetro F usado com G33/G33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6403 +msgid "launch hal scope" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:163 -msgid "Unknown operation name starting with e" -msgstr "Operação desconhecida começando com a letra 'e'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6420 +msgid "launch linuxcnc status" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:164 -msgid "Unknown operation name starting with n" -msgstr "Operação desconhecida começando com a letra 'n'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6437 +msgid "launch hal meter" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:165 -msgid "Unknown operation name starting with g" -msgstr "Operação desconhecida começando com a letra 'g'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6455 +#, fuzzy +msgid "launch calibration" +msgstr "_Calibrar" -#: src/emc/rs274ngc/rs274ngc_return.hh:166 -msgid "Unknown operation name starting with l" -msgstr "Operação desconhecida começando com a letra 'l'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6466 +msgid "Halshow" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:167 -msgid "Too many subroutine parameters" -msgstr "Número de parâmetros de subrotina muito grande" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6472 +msgid "opens the show hal tool" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:168 -msgid "Too many subroutine levels" -msgstr "Número de níveis de subrotina muito grande" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6537 +msgid "save the file using the original name" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:169 -msgid "Bug: call stack underrun" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6559 +msgid "save the file with a new name" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:170 -msgid "Unknown control command in o word" -msgstr "Comando de controle desconhecido em um comando 'o'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6605 +msgid "clear the edit field and make a new file" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:171 -msgid "Too many oword labels" -msgstr "Número de labels de comandos 'o' muito grande" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6641 +msgid "Show or hide the virtual keyboard" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:172 -#, fuzzy -msgid "Unknown oword number" -msgstr "Número desconhecido para comando 'o'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6665 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6879 +msgid "Go back to main button list" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:173 -msgid "Nested subroutine definition" -msgstr "Definição de subrotina aninhada" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6701 +#, fuzzy +msgid "delete selected tool or tools" +msgstr "Número do slot de ferramenta selecionado é muito alto" -#: src/emc/rs274ngc/rs274ngc_return.hh:174 -msgid "Not in subroutine definition" -msgstr "Não existe na definição da subrotina" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6718 +#, fuzzy +msgid "add a new tool to tool table" +msgstr "Recarrega.lista de ferramentas" -#: src/emc/rs274ngc/rs274ngc_return.hh:175 -msgid "File not open" -msgstr "Arquivo não aberto" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6729 +#, fuzzy +msgid "Reload" +msgstr "_Reload" -#: src/emc/rs274ngc/rs274ngc_return.hh:176 -msgid "Need tool prepared -Txx- for toolchange" -msgstr "Precisa de ferramenta -Txx- preparada para mudança de ferramenta" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6735 +#, fuzzy +msgid "reload tool table from file" +msgstr "Recarrega.lista de ferramentas" -#: src/emc/rs274ngc/rs274ngc_return.hh:177 -msgid "Cannot change planes with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6746 +msgid "Apply" msgstr "" -"Impossível mudar o plano ativo com compensação de raio de corte ativada" - -#: src/emc/rs274ngc/rs274ngc_return.hh:178 -msgid "Cutter radius compensation allowed only in XY, XZ planes" -msgstr "Compensação de raio de corte permitida apenas nos planos XY e XZ" -#: src/emc/rs274ngc/rs274ngc_return.hh:179 -msgid "P word missing with G76" -msgstr "Parâmetro P faltando com G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6752 +msgid "" +"apply the changes you made, G43 will be excecuted only if it is active g-code" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:180 -msgid "I J or K words missing with G76" -msgstr "Parâmetros I, J ou K faltando com G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6768 +#, fuzzy +msgid "Select a tool by number" +msgstr "Número do slot de ferramenta selecionado é muito alto" -#: src/emc/rs274ngc/rs274ngc_return.hh:181 -msgid "Cannot move rotary axes with G76" -msgstr "Impossível mover eixo rotacional com G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6790 +msgid "change tool with the command M61 Q?, no machine move will be done" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:182 -msgid "Multiple e words on one line" -msgstr "Múltiplos comandos 'e' em uma única linha" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6812 +msgid "change tool to the selected one" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:183 -msgid "Named parameter not terminated" -msgstr "Parâmetro nomeado não foi terminado" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6824 +msgid "" +"touchoff\n" +" tool x" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:184 -msgid "Out of memory" -msgstr "Sem memória suficiente" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6832 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6863 +#, fuzzy +msgid "touch off the tool and set the value to the tool table" +msgstr "Ferramenta requisitada %d não encontrada na tabela de ferramentas" -#: src/emc/rs274ngc/rs274ngc_return.hh:185 -msgid "S word missing with G96" -msgstr "Parâmetro S faltando com G96" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6855 +msgid "" +"touchoff\n" +" tool z" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:186 -msgid "Queue is not empty after external input" -msgstr "Fila não está vazia após sinal de entrada externo" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6915 +msgid "Move to your home directory" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:187 -msgid "Can't select analog input with wait type != immediate return" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6932 +msgid "Move to parrent directory" msgstr "" -"Impossível selecionar entrada analógica quando tipo de espera é diferente de " -"retorno imediato" -#: src/emc/rs274ngc/rs274ngc_return.hh:188 -msgid "Zero timeout with wait type != immediate return" -msgstr "Timeout zero com tipo de espera diferente de retorno imediato" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6961 +#, fuzzy +msgid "Select the previos file" +msgstr "Selecione o item para exibir" -#: src/emc/rs274ngc/rs274ngc_return.hh:189 -msgid "Invalid to select both a digital and an analog input with M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6979 +#, fuzzy +msgid "Select the next file" +msgstr "Selecione o item para exibir" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6997 +msgid "Jump to user defined directory" msgstr "" -"É inválido selecionar uma entrada digital e uma analógica ao mesmo tempo com " -"M66" -#: src/emc/rs274ngc/rs274ngc_return.hh:190 -msgid "Need to have either a valid P or a valid E word with M66" -msgstr "Necessário ter um parâmetro E ou um parâmetro P válidos com M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7027 +msgid "select the highlighted file and return the path" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:191 -msgid "Q word missing with g73" -msgstr "Parâmetro Q faltando com G73" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7057 +msgid "Close without returning a file path" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:192 -msgid "Digital input selected out of bounds" -msgstr "Sinal de entrada digital selecionado fora dos limites" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7075 +#, fuzzy +msgid "Load File" +msgstr "Filtro de programa %r falhado" -#: src/emc/rs274ngc/rs274ngc_return.hh:193 -msgid "Analog input selected out of bounds" -msgstr "Sinal analógico de entrada fora dos limites" +#~ msgid "%s move in MDI would exceed joint %d's positive limit" +#~ msgstr "movimento (%s) em MDI iria exceder o limite positivo do eixo %d" -#: src/emc/rs274ngc/rs274ngc_return.hh:194 -msgid "W value unspecified in UV plane canned cycle" -msgstr "Parâmetro W não especificado no plano UV de ciclo programado" +#~ msgid "%s move in MDI would exceed joint %d's negative limit" +#~ msgstr "movimento (%s) em MDI iria exceder o limite negativo do eixo %d" -#: src/emc/rs274ngc/rs274ngc_return.hh:195 -msgid "U value unspecified in VW plane canned cycle" -msgstr "Parâmetro U não especificado no plano VW de ciclo programado" +#, fuzzy +#~ msgid "Spindle Configuration" +#~ msgstr "Mostrar _Configuração Hal" -#: src/emc/rs274ngc/rs274ngc_return.hh:196 -msgid "V value unspecified in UW plane canned cycle" -msgstr "Parâmetro V não especificado no plano UW de ciclo programado" +#~ msgid "Cannot set motion output with cutter radius compensation on" +#~ msgstr "" +#~ "Impossível setar saída do movimento quando compensação de raio de corte " +#~ "está ativado" -#: src/emc/rs274ngc/rs274ngc_return.hh:197 -msgid "R less than W in cycle in UV plane" -msgstr "R menos que W em ciclo no plano UV" +#~ msgid "Cannot set motion digital output with cutter radius compensation on" +#~ msgstr "" +#~ "Impossível ativar saída digital de movimento quando compensação de raio " +#~ "de corte está ativado" -#: src/emc/rs274ngc/rs274ngc_return.hh:198 -msgid "R less than U in cycle in VW plane" -msgstr "R menos que U em ciclo no plano VW" +#~ msgid "" +#~ "Cannot set auxiliary digital output with cutter radius compensation on" +#~ msgstr "" +#~ "Impossível alterar saída digital auxiliar com compensação de raio de " +#~ "corte ativado" -#: src/emc/rs274ngc/rs274ngc_return.hh:199 -msgid "R less than V in cycle in UW plane" -msgstr "R menos que V em ciclo no plano UW" +#~ msgid "Cannot set motion analog output with cutter radius compensation on" +#~ msgstr "" +#~ "Impossível alterar saída analógica com compensação de raio de corte " +#~ "ativado" -#~ msgid "Select item to display" -#~ msgstr "Selecione o item para exibir" +#~ msgid "" +#~ "Cannot set auxiliary analog output with cutter radius compensation on" +#~ msgstr "" +#~ "Impossível alterar saída analógica auxiliar quando compensação de raio de " +#~ "corte ativado" #, fuzzy #~ msgid "No" @@ -13811,9 +17302,6 @@ msgstr "R menos que V em ciclo no plano UW" #~ msgid "Cannot use b word" #~ msgstr "Impossível usar palavra b" -#~ msgid "Cannot use c word" -#~ msgstr "Impossível usar palavra c" - #~ msgid "Cannot use xz plane with cutter radius comp" #~ msgstr "" #~ "Impossível usar plano XZ quando compensação de raio de ferramenta está " @@ -13860,9 +17348,6 @@ msgstr "R menos que V em ciclo no plano UW" #~ msgid "No digits found where real number should be" #~ msgstr "Nenhum dígito encontrado onde deveria haver um número real" -#~ msgid "Offset index missing" -#~ msgstr "Índice de offset faltando" - #~ msgid "Q word with no g83 or m66" #~ msgstr "Parâmetro Q usado sem comando G83 ou M66" @@ -13875,9 +17360,6 @@ msgstr "R menos que V em ciclo no plano UW" #~ msgid "Required parameter missing" #~ msgstr "Parâmetro necessário faltando" -#~ msgid "Selected tool slot number too large" -#~ msgstr "Número do slot de ferramenta selecionado é muito alto" - #~ msgid "Tool length offset index too big" #~ msgstr "Índice do offset de comprimento de ferramenta muito grande" diff --git a/src/po/ro.po b/src/po/ro.po index 68d7e34a3f..b8c9bb655a 100644 --- a/src/po/ro.po +++ b/src/po/ro.po @@ -1,60 +1,1683 @@ msgid "" msgstr "" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-10 13:40-0600\n" +"POT-Creation-Date: 2019-02-20 07:49+0000\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: src/hal/utils/meter.c:198 +#: src/emc/task/emctaskmain.cc:479 src/emc/task/emctaskmain.cc:512 +#, fuzzy, c-format +msgid "%s exceeds +X limit" +msgstr "Program depaseste limite masina" + +#: src/emc/task/emctaskmain.cc:484 src/emc/task/emctaskmain.cc:517 +#, fuzzy, c-format +msgid "%s exceeds +Y limit" +msgstr "Program depaseste limite masina" + +#: src/emc/task/emctaskmain.cc:489 src/emc/task/emctaskmain.cc:522 +#, fuzzy, c-format +msgid "%s exceeds +Z limit" +msgstr "Program depaseste limite masina" + +#: src/emc/task/emctaskmain.cc:494 src/emc/task/emctaskmain.cc:527 +#, fuzzy, c-format +msgid "%s exceeds -X limit" +msgstr "Program depaseste limite masina" + +#: src/emc/task/emctaskmain.cc:499 src/emc/task/emctaskmain.cc:532 +#, fuzzy, c-format +msgid "%s exceeds -Y limit" +msgstr "Program depaseste limite masina" + +#: src/emc/task/emctaskmain.cc:504 src/emc/task/emctaskmain.cc:537 +#, fuzzy, c-format +msgid "%s exceeds -Z limit" +msgstr "Program depaseste limite masina" + +#: src/emc/task/emctaskmain.cc:892 +#, c-format +msgid "" +"command (%s) cannot be executed until the machine is out of E-stop and " +"turned on" +msgstr "" + +#: src/emc/task/emctaskmain.cc:1013 +#, c-format +msgid "can't do that (%s:%d) in manual mode" +msgstr "" + +#: src/emc/task/emctaskmain.cc:1113 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter idle" +msgstr "" + +#: src/emc/task/emctaskmain.cc:1180 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter reading" +msgstr "" + +#: src/emc/task/emctaskmain.cc:1265 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter paused" +msgstr "" + +#: src/emc/task/emctaskmain.cc:1334 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter waiting" +msgstr "" + +#: src/emc/task/emctaskmain.cc:1442 +#, c-format +msgid "can't do that (%s:%d) in MDI mode" +msgstr "" + +#: src/emc/task/emctaskmain.cc:2100 +msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" +msgstr "" + +#: src/emc/task/emctaskmain.cc:2157 tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 +#: tcl/mini.tcl:1775 tcl/tklinuxcnc.tcl:451 +#, c-format, tcl-format +msgid "can't open %s" +msgstr "nu pot deschide %s" + +#: src/emc/task/emctaskmain.cc:2169 +msgid "Can't issue MDI command when not homed" +msgstr "" + +#: src/emc/task/emctaskmain.cc:2174 +msgid "Must be in MDI mode to issue MDI command" +msgstr "" + +#: src/emc/task/emctaskmain.cc:2256 +msgid "Can't run a program when not homed" +msgstr "" + +#: src/emc/rs274ngc/interp_arc.cc:110 src/emc/rs274ngc/interp_arc.cc:284 +#, c-format +msgid "" +"Zero-radius arc: start=(%c%.4f,%c%.4f) center=(%c%.4f,%c%.4f) end=(%c%.4f,%c" +"%.4f) r1=%.4f r2=%.4f" +msgstr "" + +#: src/emc/rs274ngc/interp_arc.cc:120 src/emc/rs274ngc/interp_arc.cc:292 +#, c-format +msgid "" +"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " +"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " +"rel_err=%.4f%%" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:90 +msgid "G4 not allowed with G2 or G3 because they both use P" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:93 +msgid "Line with G10 does not have L1, L10, L11, L2, or L20" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:94 +msgid "P value not an integer with G10" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:95 +#, c-format +msgid "P value out of range (0-9) with G10 L%d" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:96 +#, c-format +msgid "P value out of range with G10 L%d" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:100 +msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:259 +msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:265 +msgid "E word with no G76, M66, M67 or M68 to use it" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:270 +msgid "H word with no G43 or G76 to use it" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:276 +msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:282 +msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:288 +msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:298 +msgid "" +"L word with no G10, cutter compensation, canned cycle, digital/analog input, " +"or NURBS code" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:310 +msgid "" +"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " +"M53 M62 M63 M64 M65 M66 or user M code to use it" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:315 +msgid "P value not an integer with M19 G2 or G3" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:317 +msgid "P value must be 0,1,or 2 with M19" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:319 +msgid "P value should be 1 or greater with G2 or G3" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:327 +msgid "" +"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " +"code that uses it" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:337 +msgid "R value must be within 0..360 with M19" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:139 +msgid "You must specify both X and Y coordinates for Control Points" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:142 +msgid "Can specify P without X and Y only for the first control point" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:145 +msgid "Must specify positive weight P for every Control Point" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:148 +msgid "Cannot make a NURBS with 0 feedrate" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:183 +msgid "Cannot use G5.3 without G5.2 first" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:184 +#, c-format +msgid "" +"You must specify a number of control points at least equal to the order L = " +"%d" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:213 +msgid "Cannot convert spline with cutter radius compensation" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:223 +msgid "Splines must be in the XY plane" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:228 +msgid "Splines may not have motion in Z, A, B, or C" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:232 +msgid "Must specify both I and J with G5.1" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:251 +msgid "Must specify both I and J, or neither" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:262 +msgid "Must specify both P and Q with G5" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:363 +msgid "" +"The move just after exiting cutter compensation mode must be straight, not " +"an arc" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:371 +msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:383 +#: src/emc/rs274ngc/interp_convert.cc:4488 +msgid "Cannot feed with zero spindle speed in feed per rev mode" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:394 +#: src/emc/rs274ngc/interp_convert.cc:400 +#: src/emc/rs274ngc/interp_convert.cc:409 +#: src/emc/rs274ngc/interp_convert.cc:415 +#: src/emc/rs274ngc/interp_convert.cc:424 +#: src/emc/rs274ngc/interp_convert.cc:430 +#, c-format +msgid "%c word missing in absolute center arc" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:662 +msgid "" +"Radius of cutter compensation entry arc is not greater than the tool radius" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:882 +#: src/emc/rs274ngc/interp_convert.cc:892 src/emc/rs274ngc/interp_queue.cc:696 +msgid "" +"Arc move in concave corner cannot be reached by the tool without gouging" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:918 +msgid "Arc to arc motion is invalid because the arcs have the same center" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:921 +msgid "" +"Arc to arc motion makes a corner the compensated tool can't fit in without " +"gouging" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:1053 +#: src/emc/rs274ngc/interp_convert.cc:1057 +#: src/emc/rs274ngc/interp_convert.cc:1061 +#: src/emc/rs274ngc/interp_convert.cc:3945 +#: src/emc/rs274ngc/interp_convert.cc:3948 +#: src/emc/rs274ngc/interp_convert.cc:3951 src/emc/rs274ngc/interp_find.cc:97 +#, c-format +msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:1563 +msgid "Cannot change control mode with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:1676 +msgid "Cannot change coordinate systems with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:1920 +#, c-format +msgid "G%d.1 with no D word" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:1923 +#, c-format +msgid "G%d.1 with L word, but plane is not G18" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:1934 +#, c-format +msgid "G%d requires D word to be a whole number" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:1941 +#, c-format +msgid "G%d with lathe tool, but plane is not G18" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:2340 +msgid "Cannot set reference point with cutter compensation in effect" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:2859 +#, c-format +msgid "gen_restore G20/G21 failed: '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:2907 +#, c-format +msgid "" +"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:2908 +#, c-format +msgid "BUG: restore from level %d !?" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:2909 +#, c-format +msgid "BUG: restore to level %d !?" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:2928 +#, c-format +msgid "M7x: restore_settings G20/G21 failed: '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:2946 +#, c-format +msgid "M7x: restore_settings failed executing: '%s': %s" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3005 +#, c-format +msgid "Failed to restore interp state on abort '%s': %s" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3069 +msgid "No valid P word with M62" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3072 +msgid "No valid P word with M63" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3075 +msgid "No valid P word with M64" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3078 +msgid "No valid P word with M65" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3111 +msgid "invalid P-word with M66" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3126 +msgid "Cannot wait for digital input with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3138 +msgid "Cannot wait for analog input with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3152 +msgid "Invalid analog index with M67" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3157 +msgid "Invalid analog index with M68" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3188 +msgid "Need non-negative Q-word to specify tool number with M61" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3258 +msgid "Q word with M19 requires a value > 0" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3286 +msgid "Cannot restore context from invalid stack frame - missing M70/M73?" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3327 +#: src/emc/rs274ngc/interp_convert.cc:3344 +#: src/emc/rs274ngc/interp_convert.cc:3359 +#: src/emc/rs274ngc/interp_convert.cc:3373 +#: src/emc/rs274ngc/interp_convert.cc:3387 +msgid "Cannot enable overrides with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3334 +#: src/emc/rs274ngc/interp_convert.cc:3349 +#: src/emc/rs274ngc/interp_convert.cc:3364 +#: src/emc/rs274ngc/interp_convert.cc:3378 +#: src/emc/rs274ngc/interp_convert.cc:3392 +msgid "Cannot disable overrides with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3506 +#: src/emc/rs274ngc/interp_convert.cc:3507 +#: src/emc/rs274ngc/interp_convert.cc:3508 +#, c-format +msgid "Indexing axis %c can only be moved with G0" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3515 +#: src/emc/rs274ngc/interp_convert.cc:3517 +#: src/emc/rs274ngc/interp_convert.cc:3519 +#, c-format +msgid "Indexing axis %c can only be moved alone" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3621 +msgid "Cannot probe with feed per rev mode" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3669 +msgid "Cannot change retract mode with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3703 +msgid "G10 L1 without offsets has no effect" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3809 +msgid "Q number in G10 is not an integer" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3810 +msgid "Invalid tool orientation" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3933 +msgid "I J words not allowed with G10 L2" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3954 +msgid "" +"Cannot change the active coordinate system with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3962 +msgid "R not allowed in G10 L20" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4550 +msgid "Spindle not turning in G33" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4560 +msgid "Spindle not turning in G33.1" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4603 +msgid "BUG: An axis incorrectly moved along with an indexer" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4616 +msgid "BUG: trying to index incorrect axis" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4708 +msgid "Cannot use G76 threading cycle with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4711 +msgid "In G76, I must not be 0" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4713 +msgid "In G76, J must be greater than 0" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4715 +msgid "In G76, K must be greater than J" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4858 +msgid "" +"Length of cutter compensation entry move is not greater than the tool radius" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:5077 +msgid "Zero degree inside corner is invalid for cutter compensation" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:5115 +#: src/emc/rs274ngc/interp_convert.cc:5123 +msgid "" +"Arc to straight motion makes a corner the compensated tool can't fit in " +"without gouging" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:5207 +msgid "Cannot change tools with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:5328 +msgid "Cannot change tool offset with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_queue.cc:694 +#, c-format +msgid "" +"BUG: cutter compensation has generated an invalid arc with mismatched radii " +"r1 %f r2 %f\n" +msgstr "" + +#: src/emc/rs274ngc/interp_queue.cc:716 +msgid "BUG: Unsupported plane in cutter compensation" +msgstr "" + +#: src/emc/rs274ngc/interp_queue.cc:729 +msgid "" +"Straight traverse in concave corner cannot be reached by the tool without " +"gouging" +msgstr "" + +#: src/emc/rs274ngc/interp_queue.cc:757 +#, c-format +msgid "BUG: Unsupported plane [%d] in cutter compensation" +msgstr "" + +#: src/emc/rs274ngc/interp_queue.cc:771 +msgid "" +"Straight feed in concave corner cannot be reached by the tool without gouging" +msgstr "" + +#: src/emc/rs274ngc/interp_cycles.cc:630 +msgid "Cannot feed with zero feed rate" +msgstr "" + +#: src/emc/rs274ngc/interp_cycles.cc:631 +msgid "Cannot use inverse time feed with canned cycles" +msgstr "" + +#: src/emc/rs274ngc/interp_cycles.cc:632 +msgid "Cannot use canned cycles with cutter compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_cycles.cc:829 +msgid "G17 canned cycle is not possible on a machine without Z axis" +msgstr "" + +#: src/emc/rs274ngc/interp_cycles.cc:1015 +msgid "G17.1 canned cycle is not possible on a machine without W axis" +msgstr "" + +#: src/emc/rs274ngc/interp_cycles.cc:1231 +msgid "G19 canned cycle is not possible on a machine without X axis" +msgstr "" + +#: src/emc/rs274ngc/interp_cycles.cc:1399 +msgid "G19.1 canned cycle is not possible on a machine without U axis" +msgstr "" + +#: src/emc/rs274ngc/interp_cycles.cc:1624 +msgid "G18 canned cycle is not possible on a machine without Y axis" +msgstr "" + +#: src/emc/rs274ngc/interp_cycles.cc:1791 +msgid "G18.1 canned cycle is not possible on a machine without V axis" +msgstr "" + +#: src/emc/rs274ngc/interp_find.cc:170 +msgid "Cannot use polar coordinates with G53" +msgstr "" + +#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 +#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 +#: src/emc/rs274ngc/interp_find.cc:347 +msgid "Cannot specify X or Y words with polar coordinate" +msgstr "" + +#: src/emc/rs274ngc/interp_find.cc:272 +msgid "Must specify angle in polar coordinate if at the origin" +msgstr "" + +#: src/emc/rs274ngc/interp_find.cc:338 +msgid "" +"Incremental motion with polar coordinates is indeterminate when at the origin" +msgstr "" + +#: src/emc/rs274ngc/interp_find.cc:348 +msgid "G91 motion with polar coordinates is indeterminate when at the origin" +msgstr "" + +#: src/emc/rs274ngc/interp_find.cc:720 +#, c-format +msgid "Requested tool %d not found in the tool table" +msgstr "" + +#: src/emc/rs274ngc/interp_internal.cc:161 +msgid "Cannot use polar coordinate on a machine lacking X or Y axes" +msgstr "" + +#: src/emc/rs274ngc/interp_internal.cc:162 +msgid "Cannot use polar coordinate except in G17 plane" +msgstr "" + +#: src/emc/rs274ngc/interp_internal.cc:163 +msgid "Cannot specify both polar coordinate and X word" +msgstr "" + +#: src/emc/rs274ngc/interp_internal.cc:164 +msgid "Cannot specify both polar coordinate and Y word" +msgstr "" + +#: src/emc/rs274ngc/interp_internal.cc:185 +#: src/emc/rs274ngc/interp_internal.cc:199 +#: src/emc/rs274ngc/interp_internal.cc:214 +msgid "Polar coordinates can only be used for motion" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1150 src/emc/rs274ngc/interp_read.cc:1154 +#, c-format +msgid "Bad character '\\%03o' used" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1154 +#, c-format +msgid "Bad character '%c' used" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1678 +msgid "Left bracket missing after 'while'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1693 +msgid "Left bracket missing after 'repeat'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1708 +msgid "Left bracket missing after 'if'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1723 +msgid "Left bracket missing after 'elseif'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1926 +msgid "Cannot read current position with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1941 +#, fuzzy +msgid "Expected # reading parameter" +msgstr "Extinde parametri" + +#: src/emc/rs274ngc/interp_read.cc:1943 +msgid "Expected ] reading bracketed parameter" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:2615 +#, c-format +msgid "bad number format (conversion failed) parsing '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:2616 +#, c-format +msgid "bad number format (trailing characters) parsing '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:2706 +msgid "Calculation resulted in 'not a number'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:2708 +msgid "Calculation resulted in 'infinity'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:3001 +#, c-format +msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:3113 +msgid "Multiple U words on one line" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:3129 +msgid "Multiple V words on one line" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:3145 +msgid "Multiple W words on one line" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:97 +#, c-format +msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:722 +#, c-format +msgid "%d: not in a subroutine definition: '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:759 src/emc/rs274ngc/interp_o_word.cc:809 +#, c-format +msgid "%d: duplicate O-word label: '%s' - defined in line %d" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:862 +#, c-format +msgid "%d: duplicate O-word label - already defined in line %d: '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:886 src/emc/rs274ngc/interp_o_word.cc:944 +#: src/emc/rs274ngc/interp_o_word.cc:978 src/emc/rs274ngc/interp_o_word.cc:996 +#: src/emc/rs274ngc/interp_o_word.cc:1013 +#: src/emc/rs274ngc/interp_o_word.cc:1038 +#, c-format +msgid "%d: undefined O-word label: '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:889 src/emc/rs274ngc/interp_o_word.cc:947 +#, c-format +msgid "%d: no matching 'if' label: '%s' (found '%s' in line %d)" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:981 +#, c-format +msgid "%d: no matching label: '%s' (found '%s' in line %d): '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:999 src/emc/rs274ngc/interp_o_word.cc:1016 +#, c-format +msgid "%d: no matching while/do label: '%s' (found '%s' in line %d)" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:1042 +#, c-format +msgid "%d: no matching label: '%s' (found '%s' in line %d)" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:166 +#, fuzzy, c-format +msgid "Named parameter #<%s> not defined" +msgstr "Incarca fisier parametri" + +#: src/emc/rs274ngc/interp_namedparams.cc:196 +#, fuzzy, c-format +msgid "cant open ini file '%s'" +msgstr "nu pot deschide %s" + +#: src/emc/rs274ngc/interp_namedparams.cc:213 +#, fuzzy, c-format +msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" +msgstr "Incarca fisier parametri" + +#: src/emc/rs274ngc/interp_namedparams.cc:237 +#, c-format +msgid "fetch_hal_param: hal_init(%s): %d" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:238 +#, c-format +msgid "fetch_hal_param: hal_ready(): %d" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:419 +#, c-format +msgid "Internal error: Could not assign #<%s>" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:427 +#, c-format +msgid "Cannot assign to read-only parameter #<%s>" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:731 +#, c-format +msgid "BUG: lookup_named_param(%s): unhandled index=%fn" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_pre.cc:1407 src/emc/rs274ngc/rs274ngc_pre.cc:1482 +#, fuzzy +msgid "Queue is not empty after tool change" +msgstr "" +"Confirmare pe ecran pentru\n" +"schimbare scula" + +#: src/emc/rs274ngc/rs274ngc_pre.cc:1786 +#, c-format +msgid "Unable to open parameter file: '%s'" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:19 +msgid "A file is already open" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:21 +msgid "All axes missing with g52 or g92" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:22 +msgid "All axes missing with motion code" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:23 +msgid "Arc radius too small to reach end point" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:24 +msgid "Argument to acos out of range" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:25 +msgid "Argument to asin out of range" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:26 +msgid "Attempt to divide by zero" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:27 +msgid "Attempt to raise negative to non integer power" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:28 +msgid "Bad format unsigned integer" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:29 +msgid "Bad number format" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:30 +msgid "Bug bad g code modal group 0" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:31 +msgid "Bug code not g0 or g1" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:32 +msgid "Bug code not g17 g18 or g19" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:33 +msgid "Bug code not g20 or g21" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:34 +msgid "Bug code not g28 or g30" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:35 +msgid "Bug code not g2 or g3" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:37 +msgid "Bug code not g4 g10 g28 g30 g52 g53 or g92 series" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:38 +msgid "Bug code not g61 g61.1 or g64" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:39 +msgid "Bug code not g90 or g91" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:40 +msgid "Bug code not g98 or g99" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:41 +msgid "Bug code not in g52 or g92 series" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:42 +msgid "Bug code not in range g54 to g593" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:43 +msgid "Bug code not m0 m1 m2 m30 m60" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:44 +msgid "Bug distance mode not g90 or g91" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:45 +msgid "Bug function should not have been called" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:46 +msgid "Bug in tool radius comp" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:47 +msgid "Bug plane not xy yz or xz" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:48 +msgid "Bug side not right or left" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:49 +msgid "Bug unknown motion code" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:50 +msgid "Bug unknown operation" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:51 +msgid "Cannot change axis offsets with cutter radius comp" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:52 +msgid "Cannot create backup file" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:53 +msgid "Cannot do g1 with zero feed rate" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:54 +msgid "Cannot do zero repeats of cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:55 +msgid "Cannot make arc with zero feed rate" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:56 +msgid "Cannot open backup file" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:57 +msgid "Cannot open variable file" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:58 +msgid "Cannot probe with cutter radius comp on" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:59 +msgid "Cannot probe with zero feed rate" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:60 +msgid "Cannot put a b in canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:61 +msgid "Cannot put a c in canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:62 +msgid "Cannot put an a in canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:63 +msgid "Cannot turn cutter radius comp on when on" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:64 +msgid "Cannot use axis values with g80" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:65 +msgid "Cannot use axis values without a g code that uses them" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:66 +msgid "Cannot use g28 or g30 with cutter radius comp" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:67 +msgid "Cannot use g53 incremental" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:68 +msgid "Cannot use g53 with cutter radius comp" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:69 +msgid "Cannot use two g codes that both use axis values" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:70 +#, fuzzy +msgid "Command too long" +msgstr "Pozitie comandata" + +#: src/emc/rs274ngc/rs274ngc_return.hh:71 +msgid "Current point same as end point of arc" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:72 +msgid "Dwell time missing with g4" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:73 +msgid "Dwell time p word missing with g82" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:74 +msgid "Dwell time p word missing with g86" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:75 +msgid "Dwell time p word missing with g88" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:76 +msgid "Dwell time p word missing with g89" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:77 +msgid "Equal sign missing in parameter setting" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:78 +msgid "F word missing with inverse time arc move" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:79 +msgid "F word missing with inverse time g1 move" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:80 +msgid "File ended with no percent sign" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:81 +msgid "File ended with no percent sign or program end" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:82 +msgid "File name too long" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:83 +msgid "G code out of range" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:84 +msgid "I word given for arc in yz plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:85 +msgid "I word missing with g87" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:86 +msgid "J word given for arc in xz plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:87 +msgid "J word missing with g87" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:88 +msgid "K word given for arc in xy plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:89 +msgid "K word missing with g87" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:90 +msgid "Left bracket missing after slash with atan" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:91 +msgid "Left bracket missing after unary operation name" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:92 +#, c-format +msgid "M code greater than 199: M%d" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:93 +msgid "Mixed radius ijk format for arc" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:94 +msgid "Multiple a words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:95 +msgid "Multiple b words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:96 +msgid "Multiple c words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:97 +msgid "Multiple d words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:98 +msgid "Multiple f words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:99 +msgid "Multiple h words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:100 +msgid "Multiple i words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:101 +msgid "Multiple j words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:102 +msgid "Multiple k words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:103 +msgid "Multiple l words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:104 +msgid "Multiple p words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:105 +msgid "Multiple q words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:106 +msgid "Multiple r words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:107 +msgid "Multiple s words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:108 +msgid "Multiple t words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:109 +msgid "Multiple x words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:110 +msgid "Multiple y words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:111 +msgid "Multiple z words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:112 +msgid "Must use g0 or g1 with g53" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:113 +msgid "Negative argument to sqrt" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:114 +msgid "Negative d word tool radius index used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:115 +msgid "Negative f word used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:116 +#, fuzzy +msgid "Negative g code used" +msgstr "Salveaza g-cod ca si" + +#: src/emc/rs274ngc/rs274ngc_return.hh:117 +msgid "Negative h word used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:118 +msgid "Negative l word used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:119 +#, fuzzy +msgid "Negative m code used" +msgstr "grade / tura" + +#: src/emc/rs274ngc/rs274ngc_return.hh:120 +msgid "Negative or zero q value used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:121 +msgid "Negative p word used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:122 +#, fuzzy +msgid "Negative spindle speed used" +msgstr "Seteaza depasire viteza freza:" + +#: src/emc/rs274ngc/rs274ngc_return.hh:123 +msgid "Negative tool id used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:124 +msgid "Nested comment found" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:125 +msgid "No characters found in reading real value" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:126 +msgid "Non integer value for integer" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:127 +msgid "Null missing after newline" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:128 +#, fuzzy +msgid "Parameter file out of order" +msgstr "Fisier parametri este %s" + +#: src/emc/rs274ngc/rs274ngc_return.hh:129 +msgid "Parameter number out of range" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:130 +#, fuzzy +msgid "Parameter is readonly" +msgstr "Fisier parametri" + +#: src/emc/rs274ngc/rs274ngc_return.hh:131 +msgid "Q word missing with g83" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:132 +msgid "Queue is not empty after probing" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:133 +msgid "R clearance plane unspecified in cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:134 +msgid "R i j k words all missing for arc" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:135 +msgid "R less than x in cycle in yz plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:136 +msgid "R less than y in cycle in xz plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:137 +msgid "R less than z in cycle in xy plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:138 +msgid "R word with no g code that uses it" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:139 +msgid "Slash missing after first atan argument" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:140 +msgid "Spindle not turning clockwise in g84" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:141 +msgid "Spindle not turning in g86" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:142 +msgid "Spindle not turning in g87" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:143 +msgid "Spindle not turning in g88" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:144 +msgid "Sscanf failed" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:145 +msgid "Start point too close to probe point" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:146 +msgid "Too many m codes on line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:147 +msgid "Pocket max too large" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:148 +msgid "Tool radius not less than arc radius with comp" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:149 +msgid "Two g codes used from same modal group" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:150 +msgid "Two m codes used from same modal group" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:151 +#, c-format +msgid "Unable to open file <%s>" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:152 +msgid "Unclosed comment found" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:153 +#, fuzzy +msgid "Unclosed expression" +msgstr "Nefolosit" + +#: src/emc/rs274ngc/rs274ngc_return.hh:154 +#, fuzzy +msgid "Unknown g code used" +msgstr "Scula %d necunoscuta" + +#: src/emc/rs274ngc/rs274ngc_return.hh:155 +#, fuzzy, c-format +msgid "Unknown m code used: M%d" +msgstr "Scula %d necunoscuta" + +#: src/emc/rs274ngc/rs274ngc_return.hh:156 +#, fuzzy +msgid "Unknown operation" +msgstr "Eroare necunoscuta %s" + +#: src/emc/rs274ngc/rs274ngc_return.hh:157 +msgid "Unknown operation name starting with a" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:158 +msgid "Unknown operation name starting with m" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:159 +msgid "Unknown operation name starting with o" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:160 +msgid "Unknown operation name starting with x" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:161 +msgid "Unknown word starting with a" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:162 +msgid "Unknown word starting with c" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:163 +msgid "Unknown word starting with e" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:164 +msgid "Unknown word starting with f" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:165 +msgid "Unknown word starting with l" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:166 +msgid "Unknown word starting with r" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:167 +msgid "Unknown word starting with s" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:168 +msgid "Unknown word starting with t" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:169 +msgid "Unknown word where unary operation could be" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:170 +msgid "X and y words missing for arc in xy plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:171 +msgid "X and z words missing for arc in xz plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:172 +msgid "X value unspecified in yz plane canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:173 +msgid "Y and z words missing for arc in yz plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:174 +msgid "Y value unspecified in xz plane canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:175 +msgid "Z value unspecified in xy plane canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:176 +msgid "Zero or negative argument to ln" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:177 +msgid "Zero radius arc" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:178 +msgid "K word missing with g33/g33.1" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:179 +msgid "F word used with a g33/g33.1" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:180 +msgid "Unknown operation name starting with e" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:181 +msgid "Unknown operation name starting with n" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:182 +msgid "Unknown operation name starting with g" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:183 +msgid "Unknown operation name starting with l" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:184 +msgid "Too many subroutine parameters" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:185 +msgid "Too many subroutine levels" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:186 +msgid "Bug: call stack underrun" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:187 +msgid "Unknown control command in o word" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:188 +msgid "Too many oword labels" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:189 +#, fuzzy +msgid "Unknown oword number" +msgstr "Scula %d necunoscuta" + +#: src/emc/rs274ngc/rs274ngc_return.hh:190 +msgid "Nested subroutine definition" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:191 +msgid "Not in subroutine definition" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:192 +msgid "File not open" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:193 +#, c-format +msgid "cannot reopen file %s - removed or renamed? (%s)" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:194 +#, fuzzy +msgid "Need tool prepared -Txx- for toolchange" +msgstr "" +"Confirmare pe ecran pentru\n" +"schimbare scula" + +#: src/emc/rs274ngc/rs274ngc_return.hh:195 +msgid "Cannot change planes with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:196 +msgid "Cutter radius compensation allowed only in XY, XZ planes" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:197 +msgid "P word missing with G76" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:198 +msgid "I J or K words missing with G76" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:199 +msgid "Cannot move rotary axes with G76" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:200 +msgid "Multiple e words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:201 +msgid "Named parameter not terminated" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:202 +msgid "Out of memory" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:203 +msgid "S word missing with G96" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:204 +msgid "Queue is not empty after external input" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:205 +msgid "Can't select analog input with wait type != immediate return" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:206 +msgid "Zero timeout with wait type != immediate return" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:207 +msgid "Invalid to select both a digital and an analog input with M66" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:208 +msgid "Need to have either a valid P or a valid E word with M66" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:209 +msgid "Q word missing with g73" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:210 +msgid "Digital input selected out of bounds" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:211 +msgid "Analog input selected out of bounds" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:212 +msgid "W value unspecified in UV plane canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:213 +msgid "U value unspecified in VW plane canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:214 +msgid "V value unspecified in UW plane canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:215 +msgid "R less than W in cycle in UV plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:216 +msgid "R less than U in cycle in VW plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:217 +msgid "R less than V in cycle in UW plane" +msgstr "" + +#: src/hal/utils/meter.c:200 #, c-format msgid "ERROR: '%s' is not a valid probe type\n" msgstr "" -#: src/hal/utils/meter.c:206 +#: src/hal/utils/meter.c:208 #, c-format msgid "ERROR: no pin/signal/parameter name\n" msgstr "" -#: src/hal/utils/meter.c:212 +#: src/hal/utils/meter.c:214 #, c-format msgid "" "ERROR: -s option requires a probe type and a pin/signal/parameter name\n" msgstr "" -#: src/hal/utils/meter.c:238 tcl/tklinuxcnc.tcl:764 +#: src/hal/utils/meter.c:240 tcl/tklinuxcnc.tcl:764 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6431 msgid "Hal Meter" msgstr "Hal Meter" -#: src/hal/utils/meter.c:287 +#: src/hal/utils/meter.c:290 #, fuzzy msgid "_Select" msgstr "Selectare totala" -#: src/hal/utils/meter.c:288 +#: src/hal/utils/meter.c:291 msgid "E_xit" msgstr "" -#: src/hal/utils/meter.c:336 src/hal/utils/meter.c:364 +#: src/hal/utils/meter.c:339 src/hal/utils/meter.c:367 #, fuzzy msgid "Select Item to Probe" msgstr "Selecteaza un nod pentru afisare" -#: src/hal/utils/meter.c:640 +#: src/hal/utils/meter.c:669 #, fuzzy msgid " _Pins " msgstr "_Pin 14:" -#: src/hal/utils/meter.c:641 +#: src/hal/utils/meter.c:670 #, fuzzy msgid " _Signals " msgstr "Extinde semnale" -#: src/hal/utils/meter.c:642 +#: src/hal/utils/meter.c:671 #, fuzzy msgid " Para_meters " msgstr "Fisier parametri" -#: src/hal/utils/meter.c:685 +#: src/hal/utils/meter.c:714 #, fuzzy msgid "_Close" msgstr "Inchide" @@ -65,94 +1688,96 @@ msgid "" " halscope [-h] [-i infile] [-o outfile] [num_samples]\n" msgstr "" -#: src/hal/utils/scope.c:474 src/hal/utils/scope.c:501 +#: src/hal/utils/scope.c:479 src/hal/utils/scope.c:506 #, fuzzy msgid "Open Configuration File:" msgstr "Configuratie copiata" -#: src/hal/utils/scope.c:535 +#: src/hal/utils/scope.c:540 #, fuzzy msgid "_Open Configuration..." msgstr "Configuratii model" -#: src/hal/utils/scope.c:541 +#: src/hal/utils/scope.c:546 #, fuzzy msgid "_Save Configuration..." msgstr "Configuratii model" -#: src/hal/utils/scope.c:550 +#: src/hal/utils/scope.c:555 msgid "O_pen Data File..." msgstr "" -#: src/hal/utils/scope.c:557 +#: src/hal/utils/scope.c:562 #, fuzzy msgid "S_ave Data File..." msgstr "Salveaza in fisier" -#: src/hal/utils/scope.c:566 share/axis/tcl/axis.tcl:93 +#: src/hal/utils/scope.c:571 share/axis/tcl/axis.tcl:96 #, fuzzy msgid "_Quit" msgstr "Terminare" -#: src/hal/utils/scope.c:572 +#: src/hal/utils/scope.c:577 msgid "_About Halscope" msgstr "" -#: src/hal/utils/scope.c:578 share/axis/tcl/axis.tcl:435 +#: src/hal/utils/scope.c:583 share/axis/tcl/axis.tcl:501 #, fuzzy msgid "_File" msgstr "Fisier" -#: src/hal/utils/scope.c:582 share/axis/tcl/axis.tcl:447 +#: src/hal/utils/scope.c:587 share/axis/tcl/axis.tcl:517 #, fuzzy msgid "_Help" msgstr "Ajutor" -#: src/hal/utils/scope.c:641 +#: src/hal/utils/scope.c:646 msgid "HAL Oscilloscope" msgstr "" -#: src/hal/utils/scope.c:669 +#: src/hal/utils/scope.c:674 msgid "Horizontal" msgstr "" -#: src/hal/utils/scope.c:677 +#: src/hal/utils/scope.c:682 #, fuzzy msgid "Selected Channel" msgstr "Selectare totala" -#: src/hal/utils/scope.c:683 +#: src/hal/utils/scope.c:688 msgid "Run Mode" msgstr "" -#: src/hal/utils/scope.c:686 +#: src/hal/utils/scope.c:691 msgid "Trigger" msgstr "" -#: src/hal/utils/scope.c:692 +#: src/hal/utils/scope.c:697 msgid "Vertical" msgstr "" -#: src/hal/utils/scope.c:700 share/axis/tcl/axis.tcl:135 -#: share/axis/tcl/axis.tcl:1199 +#: src/hal/utils/scope.c:705 share/axis/tcl/axis.tcl:138 +#: share/axis/tcl/axis.tcl:1269 src/emc/usr_intf/gscreen/gscreen.py:3416 +#: src/emc/usr_intf/gscreen/gscreen.py:3417 +#: src/emc/usr_intf/gscreen/gscreen.glade:2614 #, fuzzy msgid "Stop" msgstr "Pas" -#: src/hal/utils/scope.c:703 +#: src/hal/utils/scope.c:708 msgid "Normal" msgstr "" -#: src/hal/utils/scope.c:706 +#: src/hal/utils/scope.c:711 #, fuzzy msgid "Single" msgstr "Spatiu simplu" -#: src/hal/utils/scope.c:709 +#: src/hal/utils/scope.c:714 msgid "Roll" msgstr "" -#: src/hal/utils/scope_horiz.c:130 +#: src/hal/utils/scope_horiz.c:130 src/emc/usr_intf/gscreen/gscreen.glade:3419 #, fuzzy msgid "Zoom" msgstr "Mareste vedere" @@ -167,11 +1792,11 @@ msgid "" "at ---- KHz" msgstr "" -#: src/hal/utils/scope_horiz.c:459 +#: src/hal/utils/scope_horiz.c:464 msgid "Realtime component not loaded" msgstr "" -#: src/hal/utils/scope_horiz.c:460 +#: src/hal/utils/scope_horiz.c:465 msgid "" "HALSCOPE uses a realtime component called scope_rt'\n" "to sample signals for display. It is not currently loaded\n" @@ -185,11 +1810,11 @@ msgid "" "Click 'Quit' to exit HALSCOPE" msgstr "" -#: src/hal/utils/scope_horiz.c:495 +#: src/hal/utils/scope_horiz.c:536 msgid "Realtime function not linked" msgstr "" -#: src/hal/utils/scope_horiz.c:496 +#: src/hal/utils/scope_horiz.c:537 msgid "" "The HALSCOPE realtime sampling function\n" "must be called from a HAL thread in to\n" @@ -202,103 +1827,104 @@ msgid "" "Click 'Quit' to exit HALSCOPE" msgstr "" -#: src/hal/utils/scope_horiz.c:503 +#: src/hal/utils/scope_horiz.c:544 msgid "Select Sample Rate" msgstr "" -#: src/hal/utils/scope_horiz.c:504 +#: src/hal/utils/scope_horiz.c:545 msgid "" "Select a thread name and multiplier then click 'OK'\n" "or\n" "Click 'Quit' to exit HALSCOPE" msgstr "" -#: src/hal/utils/scope_horiz.c:526 +#: src/hal/utils/scope_horiz.c:567 msgid "Thread:" msgstr "" -#: src/hal/utils/scope_horiz.c:534 +#: src/hal/utils/scope_horiz.c:575 #, fuzzy msgid "Sample Period:" msgstr "Perioada Base minima:" -#: src/hal/utils/scope_horiz.c:542 +#: src/hal/utils/scope_horiz.c:583 msgid "Sample Rate:" msgstr "" -#: src/hal/utils/scope_horiz.c:558 src/emc/usr_intf/touchy/mdi.py:78 +#: src/hal/utils/scope_horiz.c:599 src/emc/usr_intf/touchy/mdi.py:79 +#: src/emc/usr_intf/gscreen/mdi.py:78 msgid "Thread" msgstr "" -#: src/hal/utils/scope_horiz.c:559 +#: src/hal/utils/scope_horiz.c:600 msgid "Period" msgstr "" -#: src/hal/utils/scope_horiz.c:619 +#: src/hal/utils/scope_horiz.c:638 msgid "Multiplier:" msgstr "" -#: src/hal/utils/scope_horiz.c:636 +#: src/hal/utils/scope_horiz.c:655 #, fuzzy msgid "Record Length" msgstr "Lungime:" -#: src/hal/utils/scope_horiz.c:639 +#: src/hal/utils/scope_horiz.c:658 #, c-format msgid "%5d samples (1 channel)" msgstr "" -#: src/hal/utils/scope_horiz.c:641 +#: src/hal/utils/scope_horiz.c:660 #, c-format msgid "%5d samples (2 channels)" msgstr "" -#: src/hal/utils/scope_horiz.c:645 +#: src/hal/utils/scope_horiz.c:664 #, c-format msgid "%5d samples (4 channels)" msgstr "" -#: src/hal/utils/scope_horiz.c:649 +#: src/hal/utils/scope_horiz.c:668 #, c-format msgid "%5d samples (8 channels)" msgstr "" -#: src/hal/utils/scope_horiz.c:653 +#: src/hal/utils/scope_horiz.c:672 #, c-format msgid "%5d samples (16 channels)" msgstr "" -#: src/hal/utils/scope_horiz.c:708 src/hal/utils/scope_horiz.c:754 -#: src/hal/utils/scope_horiz.c:966 src/hal/utils/scope_vert.c:761 -#: src/hal/utils/scope_vert.c:853 tcl/bin/emccalib.tcl:227 +#: src/hal/utils/scope_horiz.c:727 src/hal/utils/scope_horiz.c:773 +#: src/hal/utils/scope_horiz.c:985 src/hal/utils/scope_vert.c:771 +#: src/hal/utils/scope_vert.c:863 tcl/bin/emccalib.tcl:232 #: tcl/bin/genedit.tcl:180 tcl/bin/genedit.tcl:450 tcl/bin/halconfig.tcl:682 -#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:257 -#: tcl/bin/pickconfig.tcl:479 tcl/bin/pickconfig.tcl:506 tcl/mini.tcl:1456 +#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:387 +#: tcl/bin/pickconfig.tcl:749 tcl/bin/pickconfig.tcl:799 tcl/mini.tcl:1456 #: tcl/mini.tcl:2937 tcl/tklinuxcnc.tcl:160 tcl/tklinuxcnc.tcl:245 #: tcl/tklinuxcnc.tcl:419 tcl/tklinuxcnc.tcl:1338 tcl/tklinuxcnc.tcl:1407 #: tcl/tklinuxcnc.tcl:1438 tcl/tklinuxcnc.tcl:1469 tcl/tklinuxcnc.tcl:2017 #: tcl/tklinuxcnc.tcl:2036 tcl/tklinuxcnc.tcl:2055 tcl/tklinuxcnc.tcl:2102 -#: src/emc/usr_intf/axis/scripts/axis.py:1077 -#: src/emc/usr_intf/axis/scripts/axis.py:1141 -#: src/emc/usr_intf/axis/scripts/axis.py:1458 -#: src/emc/usr_intf/axis/scripts/axis.py:2477 -#: src/emc/usr_intf/axis/scripts/axis.py:3336 +#: src/emc/usr_intf/axis/scripts/axis.py:1106 +#: src/emc/usr_intf/axis/scripts/axis.py:1173 +#: src/emc/usr_intf/axis/scripts/axis.py:1508 +#: src/emc/usr_intf/axis/scripts/axis.py:2672 +#: src/emc/usr_intf/axis/scripts/axis.py:3599 #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:718 -#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1720 -#: share/axis/tcl/axis.tcl:1757 +#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1828 +#: share/axis/tcl/axis.tcl:1865 msgid "OK" msgstr "OK" -#: src/hal/utils/scope_horiz.c:713 src/hal/utils/scope_horiz.c:754 -#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 +#: src/hal/utils/scope_horiz.c:732 src/hal/utils/scope_horiz.c:773 +#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 tcl/tooledit.tcl:468 msgid "Quit" msgstr "Terminare" -#: src/hal/utils/scope_horiz.c:745 +#: src/hal/utils/scope_horiz.c:764 msgid "Realtime thread(s) not running" msgstr "" -#: src/hal/utils/scope_horiz.c:746 +#: src/hal/utils/scope_horiz.c:765 msgid "" "HALSCOPE uses code in a realtime HAL thread to sample\n" "signals for display. The HAL thread(s) are not running.\n" @@ -312,135 +1938,139 @@ msgid "" "Click 'Quit' to exit HALSCOPE" msgstr "" -#: src/hal/utils/scope_horiz.c:779 +#: src/hal/utils/scope_horiz.c:798 msgid "Pick log file to write to:" msgstr "" -#: src/hal/utils/scope_horiz.c:962 +#: src/hal/utils/scope_horiz.c:981 msgid "Not enough channels" msgstr "" -#: src/hal/utils/scope_horiz.c:963 +#: src/hal/utils/scope_horiz.c:982 msgid "" "This record length cannot handle the channels\n" "that are currently enabled. Pick a shorter\n" "record length that supports more channels." msgstr "" -#: src/hal/utils/scope_horiz.c:1051 +#: src/hal/utils/scope_horiz.c:1070 #, c-format msgid "" "%s\n" "per div" msgstr "" -#: src/hal/utils/scope_horiz.c:1066 +#: src/hal/utils/scope_horiz.c:1085 #, c-format msgid "" "%s samples\n" "at %s" msgstr "" -#: src/hal/utils/scope_horiz.c:1170 +#: src/hal/utils/scope_horiz.c:1189 msgid "nSec" msgstr "" -#: src/hal/utils/scope_horiz.c:1173 +#: src/hal/utils/scope_horiz.c:1192 msgid "uSec" msgstr "" -#: src/hal/utils/scope_horiz.c:1177 +#: src/hal/utils/scope_horiz.c:1196 msgid "mSec" msgstr "" -#: src/hal/utils/scope_horiz.c:1181 -#: src/emc/usr_intf/pncconf/pncconf.glade:1953 -#: src/emc/usr_intf/pncconf/pncconf.glade:2825 -#: src/emc/usr_intf/pncconf/pncconf.glade:3706 -#: src/emc/usr_intf/pncconf/pncconf.glade:4587 +#: src/hal/utils/scope_horiz.c:1200 src/emc/usr_intf/pncconf/pncconf.glade:2635 +#: src/emc/usr_intf/pncconf/pncconf.glade:3533 +#: src/emc/usr_intf/pncconf/pncconf.glade:4414 +#: src/emc/usr_intf/pncconf/pncconf.glade:5295 #, fuzzy msgid "Sec" msgstr "Secundar" -#: src/hal/utils/scope_horiz.c:1198 -#: src/emc/usr_intf/stepconf/stepconf.glade:3664 -#: src/emc/usr_intf/stepconf/stepconf.glade:4040 -#: src/emc/usr_intf/pncconf/pncconf.glade:8268 -#: src/emc/usr_intf/pncconf/pncconf.glade:8281 -#: src/emc/usr_intf/pncconf/pncconf.glade:8458 +#: src/hal/utils/scope_horiz.c:1217 src/emc/usr_intf/stepconf/spindle.glade:301 +#: src/emc/usr_intf/stepconf/axisx.glade:693 +#: src/emc/usr_intf/stepconf/axisy.glade:679 +#: src/emc/usr_intf/stepconf/axisz.glade:679 +#: src/emc/usr_intf/stepconf/axisa.glade:693 +#: src/emc/usr_intf/pncconf/pncconf.glade:8024 +#: src/emc/usr_intf/pncconf/pncconf.glade:8201 +#: src/emc/usr_intf/pncconf/pncconf.glade:8213 msgid "Hz" msgstr "Hz" -#: src/hal/utils/scope_horiz.c:1201 +#: src/hal/utils/scope_horiz.c:1220 #, fuzzy msgid "KHz" msgstr "Hz" -#: src/hal/utils/scope_horiz.c:1205 +#: src/hal/utils/scope_horiz.c:1224 msgid "Mhz" msgstr "" -#: src/hal/utils/scope_vert.c:403 src/hal/utils/scope_vert.c:1258 +#: src/hal/utils/scope_vert.c:413 src/hal/utils/scope_vert.c:1303 #, fuzzy, c-format msgid "" "Offset\n" "%s" msgstr "Ofseturi" -#: src/hal/utils/scope_vert.c:618 +#: src/hal/utils/scope_vert.c:628 msgid "Gain" msgstr "" -#: src/hal/utils/scope_vert.c:630 src/hal/utils/scope_trig.c:252 +#: src/hal/utils/scope_vert.c:640 src/hal/utils/scope_trig.c:272 msgid "Pos" msgstr "" -#: src/hal/utils/scope_vert.c:644 tcl/ngcgui_ttt.tcl:214 -#: src/emc/usr_intf/pncconf/pncconf.glade:57147 +#: src/hal/utils/scope_vert.c:654 tcl/ngcgui_ttt.tcl:214 +#: src/emc/usr_intf/pncconf/pncconf.glade:64273 msgid "Scale" msgstr "" -#: src/hal/utils/scope_vert.c:657 +#: src/hal/utils/scope_vert.c:667 msgid "Chan Off" msgstr "" -#: src/hal/utils/scope_vert.c:713 +#: src/hal/utils/scope_vert.c:723 #, fuzzy msgid "Set Offset" msgstr "Seteaza offset scula" -#: src/hal/utils/scope_vert.c:714 +#: src/hal/utils/scope_vert.c:724 #, c-format msgid "" "Set the vertical offset\n" "for channel %d." msgstr "" -#: src/hal/utils/scope_vert.c:734 +#: src/hal/utils/scope_vert.c:744 msgid "AC Coupled" msgstr "" -#: src/hal/utils/scope_vert.c:769 src/hal/utils/scope_vert.c:1171 -#: src/hal/utils/scope_trig.c:367 tcl/bin/emccalib.tcl:229 +#: src/hal/utils/scope_vert.c:779 src/hal/utils/scope_vert.c:1215 +#: src/hal/utils/scope_trig.c:387 tcl/bin/emccalib.tcl:234 #: tcl/bin/genedit.tcl:294 tcl/bin/halconfig.tcl:103 tcl/bin/halconfig.tcl:684 -#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:260 -#: tcl/bin/pickconfig.tcl:369 tcl/mini.tcl:1457 tcl/mini.tcl:2938 +#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:390 +#: tcl/bin/pickconfig.tcl:567 tcl/mini.tcl:1457 tcl/mini.tcl:2938 #: tcl/mini.tcl:3110 tcl/tklinuxcnc.tcl:162 tcl/tklinuxcnc.tcl:213 #: tcl/tklinuxcnc.tcl:420 tcl/tklinuxcnc.tcl:1339 tcl/tklinuxcnc.tcl:1408 #: tcl/tklinuxcnc.tcl:1439 tcl/tklinuxcnc.tcl:1470 tcl/tklinuxcnc.tcl:2103 -#: src/emc/usr_intf/axis/scripts/axis.py:1404 -#: src/emc/usr_intf/axis/scripts/axis.py:1459 -#: src/emc/usr_intf/axis/scripts/axis.py:1646 +#: src/emc/usr_intf/axis/scripts/axis.py:1453 +#: src/emc/usr_intf/axis/scripts/axis.py:1509 +#: src/emc/usr_intf/axis/scripts/axis.py:1699 +#: src/emc/usr_intf/axis/scripts/axis.py:2108 #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:720 +#: src/emc/usr_intf/stepconf/main_page.glade:467 +#: src/emc/usr_intf/gscreen/gscreen.glade:3986 msgid "Cancel" msgstr "Anulare" -#: src/hal/utils/scope_vert.c:849 +#: src/hal/utils/scope_vert.c:859 #, fuzzy msgid "Too many channels" msgstr "Fisier scule" -#: src/hal/utils/scope_vert.c:850 +#: src/hal/utils/scope_vert.c:860 msgid "" "You cannot add another channel.\n" "\n" @@ -448,27 +2078,27 @@ msgid "" "the record length to allow for more channels" msgstr "" -#: src/hal/utils/scope_vert.c:1026 +#: src/hal/utils/scope_vert.c:1074 msgid "Select Channel Source" msgstr "" -#: src/hal/utils/scope_vert.c:1027 +#: src/hal/utils/scope_vert.c:1075 #, c-format msgid "" "Select a pin, signal, or parameter\n" "as the source for channel %d." msgstr "" -#: src/hal/utils/scope_vert.c:1059 +#: src/hal/utils/scope_vert.c:1107 msgid "Pins" msgstr "" -#: src/hal/utils/scope_vert.c:1060 +#: src/hal/utils/scope_vert.c:1108 #, fuzzy msgid "Signals" msgstr "Extinde semnale" -#: src/hal/utils/scope_vert.c:1061 +#: src/hal/utils/scope_vert.c:1109 #, fuzzy msgid "Parameters" msgstr "Fisier parametri" @@ -478,12 +2108,12 @@ msgstr "Fisier parametri" msgid "Falling" msgstr "" -#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:275 +#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:295 #, c-format msgid "Rising" msgstr "" -#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:283 +#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:303 msgid "" "Source\n" "None" @@ -496,40 +2126,40 @@ msgid "" "Chan %2d" msgstr "" -#: src/hal/utils/scope_trig.c:199 tcl/tklinuxcnc.tcl:827 +#: src/hal/utils/scope_trig.c:219 tcl/tklinuxcnc.tcl:827 #: src/emc/usr_intf/touchy/touchy.glade:2469 msgid "Auto" msgstr "Auto" -#: src/hal/utils/scope_trig.c:201 +#: src/hal/utils/scope_trig.c:221 msgid "Force" msgstr "" -#: src/hal/utils/scope_trig.c:235 src/hal/utils/scope_trig.c:269 +#: src/hal/utils/scope_trig.c:255 src/hal/utils/scope_trig.c:289 msgid "Level" msgstr "" -#: src/hal/utils/scope_trig.c:303 +#: src/hal/utils/scope_trig.c:323 msgid "Trigger Source" msgstr "" -#: src/hal/utils/scope_trig.c:304 +#: src/hal/utils/scope_trig.c:324 msgid "Select a channel to use for triggering." msgstr "" -#: src/hal/utils/scope_trig.c:327 +#: src/hal/utils/scope_trig.c:347 msgid "Chan" msgstr "" -#: src/hal/utils/scope_trig.c:328 +#: src/hal/utils/scope_trig.c:348 msgid "Source" msgstr "" -#: src/emc/motion/control.c:261 +#: src/emc/motion/control.c:270 msgid "Unexpected realtime delay: check dmesg for details." msgstr "" -#: src/emc/motion/control.c:263 +#: src/emc/motion/control.c:272 #, c-format msgid "" "\n" @@ -538,7 +2168,7 @@ msgid "" "elapsed clocks between calls to the motion controller.\n" msgstr "" -#: src/emc/motion/control.c:268 +#: src/emc/motion/control.c:277 #, c-format msgid "" "This time, there were %ld which is so anomalously\n" @@ -548,301 +2178,314 @@ msgid "" "\n" msgstr "" -#: src/emc/motion/control.c:384 +#: src/emc/motion/control.c:394 msgid "G38.4 move finished without breaking contact." msgstr "" -#: src/emc/motion/control.c:387 +#: src/emc/motion/control.c:397 msgid "G38.2 move finished without making contact." msgstr "" -#: src/emc/motion/control.c:401 +#: src/emc/motion/control.c:412 msgid "Probe tripped during non-probe MDI command." msgstr "" -#: src/emc/motion/control.c:429 +#: src/emc/motion/control.c:440 msgid "Probe tripped during homing motion." msgstr "" -#: src/emc/motion/control.c:433 +#: src/emc/motion/control.c:444 msgid "Probe tripped during a jog." msgstr "" -#: src/emc/motion/control.c:578 +#: src/emc/motion/control.c:622 +msgid "can't add coordinated return move" +msgstr "" + +#: src/emc/motion/control.c:663 +msgid "can't add linear coordinated jog move" +msgstr "" + +#: src/emc/motion/control.c:817 #, c-format msgid "fault %d during orient in progress" msgstr "" -#: src/emc/motion/control.c:718 +#: src/emc/motion/control.c:957 msgid "motion stopped by enable input" msgstr "" -#: src/emc/motion/control.c:741 +#: src/emc/motion/control.c:980 #, c-format msgid "joint %d on limit switch error" msgstr "" -#: src/emc/motion/control.c:753 +#: src/emc/motion/control.c:992 #, c-format msgid "joint %d amplifier fault" msgstr "" -#: src/emc/motion/control.c:762 +#: src/emc/motion/control.c:1001 #, c-format msgid "joint %d following error" msgstr "" -#: src/emc/motion/control.c:1444 +#: src/emc/motion/control.c:1687 #, c-format msgid "Exceeded positive soft limit on joint %d" msgstr "" -#: src/emc/motion/control.c:1449 +#: src/emc/motion/control.c:1692 #, c-format msgid "Exceeded negative soft limit on joint %d" msgstr "" -#: src/emc/motion/command.c:159 +#: src/emc/motion/command.c:163 #, c-format msgid "Can't jog invalid joint number %d." msgstr "" -#: src/emc/motion/command.c:163 +#: src/emc/motion/command.c:167 #, c-format msgid "Can't jog joint %d further past max hard limit." msgstr "" -#: src/emc/motion/command.c:168 +#: src/emc/motion/command.c:172 #, c-format msgid "Can't jog joint %d further past min hard limit." msgstr "" -#: src/emc/motion/command.c:174 +#: src/emc/motion/command.c:178 #, c-format msgid "Can't jog joint %d further past max soft limit." msgstr "" -#: src/emc/motion/command.c:179 +#: src/emc/motion/command.c:183 #, c-format msgid "Can't jog joint %d further past min soft limit." msgstr "" -#: src/emc/motion/command.c:237 +#: src/emc/motion/command.c:243 #, c-format msgid "%s move on line %d would exceed joint %d's positive limit" msgstr "" -#: src/emc/motion/command.c:240 -#, c-format -msgid "%s move in MDI would exceed joint %d's positive limit" -msgstr "" - -#: src/emc/motion/command.c:247 -#, c-format -msgid "%s move on line %d would exceed joint %d's negative limit" -msgstr "" - #: src/emc/motion/command.c:250 #, c-format -msgid "%s move in MDI would exceed joint %d's negative limit" +msgid "%s move on line %d would exceed joint %d's negative limit" msgstr "" -#: src/emc/motion/command.c:500 +#: src/emc/motion/command.c:535 msgid "all joints must be homed before going into coordinated mode" msgstr "" -#: src/emc/motion/command.c:521 +#: src/emc/motion/command.c:556 msgid "all joints must be homed before going into teleop mode" msgstr "" -#: src/emc/motion/command.c:675 src/emc/motion/command.c:741 -#: src/emc/motion/command.c:814 +#: src/emc/motion/command.c:710 src/emc/motion/command.c:776 +#: src/emc/motion/command.c:849 msgid "Can't jog joint in coordinated mode." msgstr "" -#: src/emc/motion/command.c:680 src/emc/motion/command.c:746 -#: src/emc/motion/command.c:819 +#: src/emc/motion/command.c:715 src/emc/motion/command.c:781 +#: src/emc/motion/command.c:854 msgid "Can't jog joint when not enabled." msgstr "" -#: src/emc/motion/command.c:685 src/emc/motion/command.c:824 +#: src/emc/motion/command.c:720 src/emc/motion/command.c:859 msgid "Can't jog any joints while homing." msgstr "" -#: src/emc/motion/command.c:751 +#: src/emc/motion/command.c:786 msgid "Can't jog any joint while homing." msgstr "" -#: src/emc/motion/command.c:881 +#: src/emc/motion/command.c:918 msgid "need to be enabled, in coord mode for linear move" msgstr "" -#: src/emc/motion/command.c:891 +#: src/emc/motion/command.c:928 msgid "can't do linear move with limits exceeded" msgstr "" -#: src/emc/motion/command.c:910 -msgid "can't add linear move" +#: src/emc/motion/command.c:954 +#, c-format +msgid "can't add linear move at line %d, error code %d" msgstr "" -#: src/emc/motion/command.c:930 +#: src/emc/motion/command.c:982 msgid "need to be enabled, in coord mode for circular move" msgstr "" -#: src/emc/motion/command.c:940 +#: src/emc/motion/command.c:993 msgid "can't do circular move with limits exceeded" msgstr "" -#: src/emc/motion/command.c:958 -msgid "can't add circular move" +#: src/emc/motion/command.c:1015 +#, c-format +msgid "can't add circular move at line %d, error code %d" +msgstr "" + +#: src/emc/motion/command.c:1114 +msgid "MOTION: can't STEP while jogging" +msgstr "" + +#: src/emc/motion/command.c:1117 +msgid "MOTION: can't STEP while in return move" msgstr "" -#: src/emc/motion/command.c:1048 -msgid "MOTION: can't STEP while already executing" +#: src/emc/motion/command.c:1127 +#, c-format +msgid "MOTION: STEP while in state %d" msgstr "" -#: src/emc/motion/command.c:1140 +#: src/emc/motion/command.c:1229 msgid "can't enable motion, enable input is false" msgstr "" -#: src/emc/motion/command.c:1213 +#: src/emc/motion/command.c:1302 msgid "must be in joint mode to home" msgstr "" -#: src/emc/motion/command.c:1224 src/emc/motion/command.c:1235 +#: src/emc/motion/command.c:1313 src/emc/motion/command.c:1324 msgid "homing sequence already in progress" msgstr "" -#: src/emc/motion/command.c:1233 +#: src/emc/motion/command.c:1322 msgid "homing already in progress" msgstr "" -#: src/emc/motion/command.c:1263 +#: src/emc/motion/command.c:1352 msgid "must be in joint mode or disabled to unhome" msgstr "" -#: src/emc/motion/command.c:1275 src/emc/motion/command.c:1298 +#: src/emc/motion/command.c:1364 src/emc/motion/command.c:1387 #, c-format msgid "Cannot unhome while homing, joint %d" msgstr "" -#: src/emc/motion/command.c:1279 src/emc/motion/command.c:1302 +#: src/emc/motion/command.c:1368 src/emc/motion/command.c:1391 #, c-format msgid "Cannot unhome while moving, joint %d" msgstr "" -#: src/emc/motion/command.c:1307 +#: src/emc/motion/command.c:1396 #, c-format msgid "Cannot unhome inactive joint %d" msgstr "" -#: src/emc/motion/command.c:1311 +#: src/emc/motion/command.c:1400 #, c-format msgid "Cannot unhome invalid joint %d (max %d)" msgstr "" -#: src/emc/motion/command.c:1338 +#: src/emc/motion/command.c:1427 msgid "need to be enabled, in coord mode for probe move" msgstr "" -#: src/emc/motion/command.c:1348 +#: src/emc/motion/command.c:1437 msgid "can't do probe move with limits exceeded" msgstr "" -#: src/emc/motion/command.c:1362 +#: src/emc/motion/command.c:1451 msgid "Probe is already clear when starting G38.4 or G38.5 move" msgstr "" -#: src/emc/motion/command.c:1364 +#: src/emc/motion/command.c:1453 msgid "Probe is already tripped when starting G38.2 or G38.3 move" msgstr "" -#: src/emc/motion/command.c:1376 +#: src/emc/motion/command.c:1473 msgid "can't add probe move" msgstr "" -#: src/emc/motion/command.c:1400 +#: src/emc/motion/command.c:1498 msgid "need to be enabled, in coord mode for rigid tap move" msgstr "" -#: src/emc/motion/command.c:1410 +#: src/emc/motion/command.c:1509 msgid "can't do rigid tap move with limits exceeded" msgstr "" -#: src/emc/motion/command.c:1421 +#: src/emc/motion/command.c:1526 msgid "can't add rigid tap move" msgstr "" -#: src/emc/motion/command.c:1435 +#: src/emc/motion/command.c:1541 msgid "need to be enabled, in teleop mode for teleop move" msgstr "" -#: src/emc/motion/command.c:1605 +#: src/emc/motion/command.c:1710 #, c-format msgid "joint %d: too many compensation entries" msgstr "" -#: src/emc/motion/command.c:1611 +#: src/emc/motion/command.c:1716 #, c-format msgid "joint %d: compensation values must increase" msgstr "" -#: src/emc/motion/command.c:1640 +#: src/emc/motion/command.c:1745 #, c-format msgid "unrecognized command %d" msgstr "" -#: src/emc/motion/motion.c:185 +#: src/emc/motion/motion.c:212 msgid "MOTION: hal_init() failed\n" msgstr "" -#: src/emc/motion/motion.c:190 +#: src/emc/motion/motion.c:217 #, c-format msgid "MOTION: num_joints is %d, must be between 1 and %d\n" msgstr "" -#: src/emc/motion/motion.c:197 +#: src/emc/motion/motion.c:224 #, c-format msgid "MOTION: num_dio is %d, must be between 1 and %d\n" msgstr "" -#: src/emc/motion/motion.c:204 +#: src/emc/motion/motion.c:231 #, c-format msgid "MOTION: num_aio is %d, must be between 1 and %d\n" msgstr "" -#: src/emc/motion/motion.c:212 +#: src/emc/motion/motion.c:239 msgid "MOTION: init_hal_io() failed\n" msgstr "" -#: src/emc/motion/motion.c:221 +#: src/emc/motion/motion.c:248 msgid "MOTION: init_comm_buffers() failed\n" msgstr "" -#: src/emc/motion/motion.c:229 +#: src/emc/motion/motion.c:256 msgid "MOTION: init_threads() failed\n" msgstr "" -#: src/emc/motion/motion.c:254 +#: src/emc/motion/motion.c:281 #, c-format msgid "MOTION: hal_stop_threads() failed, returned %d\n" msgstr "" -#: src/emc/motion/motion.c:260 +#: src/emc/motion/motion.c:294 #, c-format msgid "MOTION: rtapi_shmem_delete() failed, returned %d\n" msgstr "" -#: src/emc/motion/motion.c:266 +#: src/emc/motion/motion.c:300 #, c-format msgid "MOTION: hal_exit() failed, returned %d\n" msgstr "" -#: src/emc/motion/motion.c:289 +#: src/emc/motion/motion.c:323 msgid "MOTION: emcmot_hal_data malloc failed\n" msgstr "" -#: src/emc/motion/motion.c:597 +#: src/emc/motion/motion.c:331 +msgid "MOTION: joints malloc failed\n" +msgstr "" + +#: src/emc/motion/motion.c:695 #, c-format msgid "MOTION: joint %d pin/param export failed\n" msgstr "" @@ -895,7 +2538,7 @@ msgstr "" #: tcl/bin/emccalib.tcl:80 #, fuzzy -msgid "LinuxCNC Servo Axis Calibration" +msgid "Machinekit Servo Axis Calibration" msgstr "EMC2 Calibrare axe" #: tcl/bin/emccalib.tcl:90 @@ -904,43 +2547,42 @@ msgstr "Salveaza in fisier" #: tcl/bin/emccalib.tcl:106 tcl/bin/genedit.tcl:77 tcl/bin/halconfig.tcl:151 #: tcl/bin/halshow.tcl:85 tcl/mini.tcl:2516 tcl/tklinuxcnc.tcl:719 -#: tcl/ngcgui.tcl:549 +#: tcl/ngcgui.tcl:489 msgid "File" msgstr "Fisier" -#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:231 tcl/bin/halconfig.tcl:153 +#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:236 tcl/bin/halconfig.tcl:153 #: tcl/mini.tcl:3558 src/emc/usr_intf/touchy/touchy.glade:2420 msgid "Refresh" msgstr "Reactualizeaza" #: tcl/bin/emccalib.tcl:110 tcl/bin/genedit.tcl:82 tcl/bin/halconfig.tcl:155 -#: tcl/mini.tcl:2535 +#: tcl/mini.tcl:2535 src/emc/usr_intf/axis/scripts/axis.py:2107 msgid "Save" msgstr "Salveaza" -#: tcl/bin/emccalib.tcl:159 tcl/bin/halconfig.tcl:623 +#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:623 #, tcl-format msgid "Tune %d" msgstr "Seteaza %d" -#: tcl/bin/emccalib.tcl:160 tcl/bin/halconfig.tcl:628 +#: tcl/bin/emccalib.tcl:162 tcl/bin/halconfig.tcl:628 msgid "INI Name" msgstr "Nume INI" -#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:629 +#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:629 msgid "HAL's Value" msgstr "Valoare HAL" -#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:631 +#: tcl/bin/emccalib.tcl:165 tcl/bin/halconfig.tcl:631 msgid "Next Value" msgstr "Urmatoarea valoare" -#: tcl/bin/emccalib.tcl:225 tcl/bin/halconfig.tcl:680 -#: tcl/bin/halconfig.tcl:731 +#: tcl/bin/emccalib.tcl:230 tcl/bin/halconfig.tcl:680 tcl/bin/halconfig.tcl:731 msgid "Test" msgstr "Testeaza" -#: tcl/bin/emccalib.tcl:358 tcl/bin/halconfig.tcl:883 +#: tcl/bin/emccalib.tcl:388 tcl/bin/halconfig.tcl:883 #, tcl-format msgid "" "The HAL parameter \n" @@ -953,7 +2595,7 @@ msgstr "" " a fost modificat. \n" " Sigur iesiti?" -#: tcl/bin/emccalib.tcl:383 tcl/bin/halconfig.tcl:1170 +#: tcl/bin/emccalib.tcl:413 tcl/bin/halconfig.tcl:1170 msgid "" "Not permitted to save here.\n" "\n" @@ -963,8 +2605,8 @@ msgstr "" "\n" " Trebuie sa copiati o configuratie in directorul Dvs. si sa lucrati acolo." -#: tcl/bin/emccalib.tcl:457 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 -#: tcl/bin/pickconfig.tcl:544 tcl/bin/pickconfig.tcl:555 +#: tcl/bin/emccalib.tcl:487 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 +#: tcl/bin/pickconfig.tcl:843 tcl/bin/pickconfig.tcl:854 #: tcl/scripts/Set_Coordinates.tcl:205 tcl/scripts/Set_Coordinates.tcl:228 #, tcl-format msgid "can't save %s" @@ -1037,12 +2679,13 @@ msgid "Save As..." msgstr "Salveaza ca..." #: tcl/bin/genedit.tcl:87 tcl/bin/halconfig.tcl:165 tcl/bin/halshow.tcl:92 -#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1243 -#: tcl/ngcgui.tcl:3680 +#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1322 +#: tcl/ngcgui.tcl:3832 msgid "Exit" msgstr "Iesire" #: tcl/bin/genedit.tcl:91 tcl/mini.tcl:2517 +#: src/emc/usr_intf/gscreen/gscreen.glade:2685 msgid "Edit" msgstr "Editare" @@ -1058,12 +2701,13 @@ msgstr "Copiere" msgid "Paste" msgstr "Lipire" -#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:68 +#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:73 msgid "Select All" msgstr "Selectare totala" #: tcl/bin/genedit.tcl:104 tcl/bin/halconfig.tcl:192 tcl/mini.tcl:919 #: tcl/mini.tcl:2519 tcl/tklinuxcnc.tcl:790 +#: src/emc/usr_intf/stepconf/main_page.glade:445 msgid "Help" msgstr "Ajutor" @@ -1085,7 +2729,7 @@ msgid "Renumber File..." msgstr "Renumeroteaza fisier..." #: tcl/bin/genedit.tcl:140 tcl/mini.tcl:917 tcl/mini.tcl:2518 -#: tcl/tklinuxcnc.tcl:746 +#: tcl/tklinuxcnc.tcl:746 src/emc/usr_intf/gmoccapy/gmoccapy.glade:5135 msgid "Settings" msgstr "Setari" @@ -1119,12 +2763,6 @@ msgstr "" "\n" "GPL Versiunea 2" -#: tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 tcl/mini.tcl:1775 -#: tcl/tklinuxcnc.tcl:451 src/emc/task/emctaskmain.cc:2072 -#, c-format, tcl-format -msgid "can't open %s" -msgstr "nu pot deschide %s" - #: tcl/bin/genedit.tcl:267 tcl/mini.tcl:3090 msgid "Find" msgstr "Cauta" @@ -1286,10 +2924,11 @@ msgid "Erase Watch" msgstr "Sterge urmarire" #: tcl/bin/halconfig.tcl:194 tcl/mini.tcl:840 tcl/mini.tcl:2785 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "About" msgstr "Despre" -#: tcl/bin/halconfig.tcl:196 +#: tcl/bin/halconfig.tcl:196 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2579 msgid "Main" msgstr "Principal" @@ -1377,7 +3016,7 @@ msgstr "" msgid "Commands may be tested here but they will NOT be saved" msgstr "Comenzi pot fi testate aici, dar nu vor fi salvate" -#: tcl/bin/pickconfig.tcl:50 +#: tcl/bin/pickconfig.tcl:96 msgid "" "Can't find the bwidget 1.7 package. There is a debian bwidget package; " "install \n" @@ -1387,19 +3026,19 @@ msgstr "" "instala cu \n" "sudo apt-get install bwidget." -#: tcl/bin/pickconfig.tcl:178 -msgid "No details available." -msgstr "Nu exista detalii." - -#: tcl/bin/pickconfig.tcl:194 +#: tcl/bin/pickconfig.tcl:154 #, fuzzy -msgid "LinuxCNC Configuration Selector" +msgid "Machinekit Configuration Selector" msgstr "Selector configuratii EMC2" -#: tcl/bin/pickconfig.tcl:215 +#: tcl/bin/pickconfig.tcl:296 +msgid "No details available." +msgstr "Nu exista detalii." + +#: tcl/bin/pickconfig.tcl:343 #, fuzzy msgid "" -"Welcome to LinuxCNC.\n" +"Welcome to MachineKit.\n" "\n" "Select a machine configuration from the list on the left.\n" "Details about the selected configuration will appear in the display on the " @@ -1412,24 +3051,24 @@ msgstr "" "Detalii despre aceasta vor fi afisata in partea din dreapta \n" "Apasati 'OK' pentru a executa configuratia selectata" -#: tcl/bin/pickconfig.tcl:271 +#: tcl/bin/pickconfig.tcl:401 msgid "My Configurations" msgstr "Configuratiile mele" -#: tcl/bin/pickconfig.tcl:274 +#: tcl/bin/pickconfig.tcl:405 msgid "Sample Configurations" msgstr "Configuratii model" -#: tcl/bin/pickconfig.tcl:332 +#: tcl/bin/pickconfig.tcl:530 #, tcl-format msgid "ERROR: no configurations found in path '%s'" msgstr "EROARE: nu au fost gasite configuratii in '%s'" -#: tcl/bin/pickconfig.tcl:369 +#: tcl/bin/pickconfig.tcl:567 msgid "Copy Configuration?" msgstr "Copiaza configuratie?" -#: tcl/bin/pickconfig.tcl:369 +#: tcl/bin/pickconfig.tcl:567 #, tcl-format msgid "" "Would you like to copy the %s configuration to your home directory so you " @@ -1438,29 +3077,29 @@ msgstr "" "Doriti sa copiati configuratia %s in directorul Dvs. pentru a putea sa o " "modificati?" -#: tcl/bin/pickconfig.tcl:369 +#: tcl/bin/pickconfig.tcl:567 #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:563 msgid "Yes" msgstr "Da" -#: tcl/bin/pickconfig.tcl:479 +#: tcl/bin/pickconfig.tcl:749 msgid "Configuration Copied" msgstr "Configuratie copiata" -#: tcl/bin/pickconfig.tcl:479 +#: tcl/bin/pickconfig.tcl:749 #, fuzzy, tcl-format msgid "" "The configuration file has been copied to %s. Next time, choose this " -"location when starting LinuxCNC." +"location when starting MachineKit." msgstr "" "Configuratia a fost copiata in %s. Data viitoare cand porniti emc2 folositi " "aceasta locatie." -#: tcl/bin/pickconfig.tcl:506 +#: tcl/bin/pickconfig.tcl:799 msgid "Shortcut Created" msgstr "Shortcut creat" -#: tcl/bin/pickconfig.tcl:506 +#: tcl/bin/pickconfig.tcl:799 msgid "" "A shortcut to this configuration file has been created on your desktop. You " "can use it to automatically launch this configuration." @@ -1469,7 +3108,7 @@ msgstr "" "inainte puteti sa folositi acest shortcut pentru a porni emc2 cu " "configuratia Dvs." -#: tcl/bin/pickconfig.tcl:511 +#: tcl/bin/pickconfig.tcl:805 msgid "Create Desktop Shortcut" msgstr "Creaza shortcut pe Desktop" @@ -1575,7 +3214,7 @@ msgstr "Info" msgid "Backplot" msgstr "Desenare" -#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:6125 +#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:5915 msgid "Editor" msgstr "Editor" @@ -1746,7 +3385,7 @@ msgstr "ofseturi initiale sunt afisate aici" msgid "start override popup here" msgstr "depasiri initiale sunt afisate aici" -#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1669 +#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1739 msgid "Feed Override:" msgstr "Depasire viteza:" @@ -1810,7 +3449,8 @@ msgid "increment" msgstr "increment" #: tcl/mini.tcl:1518 tcl/tklinuxcnc.tcl:602 tcl/tklinuxcnc.tcl:1249 -#: tcl/tklinuxcnc.tcl:1253 +#: tcl/tklinuxcnc.tcl:1253 src/emc/usr_intf/gscreen/gscreen.glade:1574 +#: src/emc/usr_intf/gscreen/gscreen.glade:1586 msgid "continuous" msgstr "continuu" @@ -1861,20 +3501,15 @@ msgid "MDI:" msgstr "MDI:" #: tcl/mini.tcl:1669 tcl/tklinuxcnc.tcl:1658 -#: src/emc/usr_intf/stepconf/stepconf.glade:4403 -#: src/emc/usr_intf/pncconf/pncconf.glade:60509 -#: src/emc/usr_intf/pncconf/pncconf.glade:61603 -#: src/emc/usr_intf/pncconf/pncconf.glade:62696 -#: src/emc/usr_intf/pncconf/pncconf.glade:63789 -#: src/emc/usr_intf/pncconf/pncconf.glade:64889 +#: src/emc/usr_intf/stepconf/main_page.glade:298 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2625 msgid "Run" msgstr "Ruleaza" #: tcl/mini.tcl:1671 tcl/tklinuxcnc.tcl:1659 -#: src/emc/usr_intf/pncconf/pncconf.glade:60574 -#: src/emc/usr_intf/pncconf/pncconf.glade:61668 -#: src/emc/usr_intf/pncconf/pncconf.glade:62761 -#: src/emc/usr_intf/pncconf/pncconf.glade:63854 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2638 msgid "Pause" msgstr "Pauza" @@ -1894,7 +3529,7 @@ msgstr "Verifica" msgid "RESTART LINE" msgstr "Restart linie" -#: tcl/mini.tcl:1699 +#: tcl/mini.tcl:1699 src/emc/usr_intf/stepconf/main_page.glade:531 msgid "Back" msgstr "Inapoi" @@ -1902,23 +3537,22 @@ msgstr "Inapoi" msgid "Ahead" msgstr "Inainte" -#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1221 +#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1300 +#: src/emc/usr_intf/gscreen/gscreen.glade:3973 msgid "Restart" msgstr "Restart" -#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 -#: tcl/tklinuxcnc.tcl:465 src/emc/usr_intf/axis/scripts/axis.py:1885 +#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 tcl/tklinuxcnc.tcl:465 +#: src/emc/usr_intf/axis/scripts/axis.py:2023 #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:754 msgid "All files" msgstr "Toate fisierele" -#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 -#: tcl/tklinuxcnc.tcl:466 +#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 tcl/tklinuxcnc.tcl:466 msgid "Text files" msgstr "Fisiere text" -#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 -#: tcl/tklinuxcnc.tcl:467 +#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 tcl/tklinuxcnc.tcl:467 msgid "NC files" msgstr "Fisiere NC" @@ -2091,7 +3725,7 @@ msgstr "Ofset - lungime" msgid "Subtract" msgstr "Scade" -#: tcl/mini.tcl:2344 +#: tcl/mini.tcl:2344 src/emc/usr_intf/gmoccapy/gmoccapy.glade:6712 msgid "Add" msgstr "Aduna" @@ -2143,15 +3777,18 @@ msgstr "Modificat..." msgid "Save and Load" msgstr "Salveaza si incarca" -#: tcl/mini.tcl:2540 +#: tcl/mini.tcl:2540 src/emc/usr_intf/gscreen/gscreen.glade:3515 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2363 msgid "Undo" msgstr "Anulare" -#: tcl/mini.tcl:2541 +#: tcl/mini.tcl:2541 src/emc/usr_intf/gscreen/gscreen.glade:3526 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2411 msgid "Redo" msgstr "Repetare" -#: tcl/mini.tcl:2546 +#: tcl/mini.tcl:2546 tcl/tooledit.tcl:488 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6695 msgid "Delete" msgstr "Sterge" @@ -2240,15 +3877,17 @@ msgstr "Inlocuieste cu:" msgid "Find Next" msgstr "Cauta urmatorul" -#: tcl/mini.tcl:3112 +#: tcl/mini.tcl:3112 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2494 msgid "Replace" msgstr "Inlocuieste" -#: tcl/mini.tcl:3120 +#: tcl/mini.tcl:3120 src/emc/usr_intf/gscreen/gscreen.py:2750 +#: src/emc/usr_intf/gmoccapy/dialogs.py:171 msgid "Up" msgstr "Sus" -#: tcl/mini.tcl:3121 +#: tcl/mini.tcl:3121 src/emc/usr_intf/gscreen/gscreen.py:2754 +#: src/emc/usr_intf/gmoccapy/dialogs.py:175 msgid "Down" msgstr "Jos" @@ -2298,7 +3937,7 @@ msgstr "" "EMC2 s-a terminat cu eroare. Cand raportati va rugam includeti toata " "informatiade mai jos in mesajul Dvs." -#: tcl/show_errors.tcl:69 tcl/scripts/Set_Coordinates.tcl:103 +#: tcl/show_errors.tcl:74 tcl/scripts/Set_Coordinates.tcl:103 msgid "Close" msgstr "Inchide" @@ -2426,26 +4065,23 @@ msgstr "Unitati" msgid "auto" msgstr "auto" -#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8512 +#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8873 msgid "inches" msgstr "inch" -#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1556 -#: src/emc/usr_intf/axis/scripts/axis.py:1726 +#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1609 +#: src/emc/usr_intf/axis/scripts/axis.py:1855 +#: src/emc/usr_intf/axis/scripts/axis.py:2386 #: src/emc/usr_intf/touchy/touchy.glade:3301 -#: src/emc/usr_intf/stepconf/stepconf.py:1685 -#: src/emc/usr_intf/stepconf/stepconf.py:2221 -#: src/emc/usr_intf/stepconf/stepconf.glade:4357 -#: src/emc/usr_intf/pncconf/pncconf.py:8508 -#: src/emc/usr_intf/pncconf/pncconf.glade:2229 -#: src/emc/usr_intf/pncconf/pncconf.glade:2394 -#: src/emc/usr_intf/pncconf/pncconf.glade:57616 -#: src/emc/usr_intf/pncconf/pncconf.glade:57688 -#: src/emc/usr_intf/pncconf/pncconf.glade:60646 -#: src/emc/usr_intf/pncconf/pncconf.glade:61739 -#: src/emc/usr_intf/pncconf/pncconf.glade:62832 -#: src/emc/usr_intf/pncconf/pncconf.glade:63925 -#: src/emc/usr_intf/pncconf/pncconf.glade:65091 +#: src/emc/usr_intf/stepconf/stepconf.py:1314 +#: src/emc/usr_intf/stepconf/pages.py:625 +#: src/emc/usr_intf/stepconf/main_page.glade:251 +#: src/emc/usr_intf/pncconf/pncconf.py:8869 +#: src/emc/usr_intf/pncconf/pncconf.glade:2195 +#: src/emc/usr_intf/pncconf/pncconf.glade:2362 +#: src/emc/usr_intf/pncconf/pncconf.glade:64552 +#: src/emc/usr_intf/pncconf/pncconf.glade:64621 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "mm" msgstr "mm" @@ -2485,7 +4121,7 @@ msgstr "Estop oprit" msgid "Machine on" msgstr "Masina pornita" -#: tcl/tklinuxcnc.tcl:819 +#: tcl/tklinuxcnc.tcl:819 src/emc/usr_intf/gscreen/gscreen.glade:2452 msgid "Machine off" msgstr "Masina oprita" @@ -2623,10 +4259,11 @@ msgid "Set Font" msgstr "Seteaza font" #: tcl/tklinuxcnc.tcl:2079 tcl/ngcgui_ttt.tcl:283 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4827 msgid "Font" msgstr "Font" -#: tcl/tklinuxcnc.tcl:2086 +#: tcl/tklinuxcnc.tcl:2086 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3257 msgid "Size" msgstr "Dimensiune" @@ -2634,11 +4271,11 @@ msgstr "Dimensiune" msgid "Style" msgstr "Tip" -#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:1916 +#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:2031 msgid "ESTOP" msgstr "ESTOP" -#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2840 share/axis/tcl/axis.tcl:1918 +#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2979 share/axis/tcl/axis.tcl:2033 msgid "ON" msgstr "PORNIT" @@ -2687,1132 +4324,1474 @@ msgstr "Seteaza zero" msgid "Write" msgstr "Scrie" -#: tcl/ngcgui.tcl:467 +#: tcl/ngcgui.tcl:439 tcl/ngcgui.tcl:846 msgid "Need non-null file name" msgstr "" -#: tcl/ngcgui.tcl:543 +#: tcl/ngcgui.tcl:483 msgid "Disallowed use of ngcgui generated file as Subfile" msgstr "" -#: tcl/ngcgui.tcl:549 +#: tcl/ngcgui.tcl:489 msgid "" "marked (not_a_subfile)\n" "Not intended for use as a subfile" msgstr "" -#: tcl/ngcgui.tcl:564 -msgid "Multiple subroutines in file not allowed" +#: tcl/ngcgui.tcl:503 tcl/ngcgui.tcl:522 tcl/ngcgui.tcl:544 tcl/ngcgui.tcl:557 +#: tcl/ngcgui.tcl:577 tcl/ngcgui.tcl:682 +msgid "bogus" msgstr "" -#: tcl/ngcgui.tcl:573 tcl/ngcgui.tcl:595 tcl/ngcgui.tcl:608 tcl/ngcgui.tcl:650 -#: tcl/ngcgui.tcl:755 -msgid "bogus" +#: tcl/ngcgui.tcl:505 +msgid "can not include subroutines within ngcgui subfile" +msgstr "" + +#: tcl/ngcgui.tcl:513 +msgid "Multiple subroutines in file not allowed" msgstr "" -#: tcl/ngcgui.tcl:575 +#: tcl/ngcgui.tcl:524 #, fuzzy msgid "sub label" msgstr "label42" -#: tcl/ngcgui.tcl:575 tcl/ngcgui.tcl:652 +#: tcl/ngcgui.tcl:524 tcl/ngcgui.tcl:579 msgid "does not match subroutine file name" msgstr "" -#: tcl/ngcgui.tcl:590 tcl/ngcgui.tcl:591 +#: tcl/ngcgui.tcl:539 tcl/ngcgui.tcl:540 msgid "ignoring M2 after endsub" msgstr "" -#: tcl/ngcgui.tcl:596 +#: tcl/ngcgui.tcl:545 msgid "file contains lines after subend" msgstr "" -#: tcl/ngcgui.tcl:609 +#: tcl/ngcgui.tcl:558 msgid "file contains lines before sub" msgstr "" -#: tcl/ngcgui.tcl:652 +#: tcl/ngcgui.tcl:579 msgid "endsub label" msgstr "" -#: tcl/ngcgui.tcl:757 -msgid "out of sequence positional parameter" +#: tcl/ngcgui.tcl:684 +msgid "out of sequence positional parameter" +msgstr "" + +#: tcl/ngcgui.tcl:684 +msgid "expected" +msgstr "" + +#: tcl/ngcgui.tcl:735 +msgid "no sub found in file" msgstr "" -#: tcl/ngcgui.tcl:757 -msgid "expected" +#: tcl/ngcgui.tcl:738 +msgid "no endsub found in file" msgstr "" -#: tcl/ngcgui.tcl:817 -msgid "toomany" +#: tcl/ngcgui.tcl:801 +msgid "Cannot find gcmc executable" msgstr "" -#: tcl/ngcgui.tcl:868 -msgid "no sub found in file" +#: tcl/ngcgui.tcl:802 +msgid "Please Install in path" msgstr "" -#: tcl/ngcgui.tcl:871 -msgid "no endsub found in file" +#: tcl/ngcgui.tcl:810 +msgid "not embedded, deriving outdir from:" msgstr "" -#: tcl/ngcgui.tcl:961 +#: tcl/ngcgui.tcl:1038 #, fuzzy msgid "Choose Files" msgstr "Fisier scule" -#: tcl/ngcgui.tcl:1100 +#: tcl/ngcgui.tcl:1178 #, fuzzy msgid "Controls" msgstr "Ctrl-M" -#: tcl/ngcgui.tcl:1109 +#: tcl/ngcgui.tcl:1187 msgid "Preamble" msgstr "" -#: tcl/ngcgui.tcl:1122 +#: tcl/ngcgui.tcl:1200 msgid "Subfile" msgstr "" -#: tcl/ngcgui.tcl:1134 +#: tcl/ngcgui.tcl:1212 msgid "Postamble" msgstr "" -#: tcl/ngcgui.tcl:1151 +#: tcl/ngcgui.tcl:1229 msgid "Retain values on Subfile read" msgstr "" -#: tcl/ngcgui.tcl:1159 +#: tcl/ngcgui.tcl:1237 #, fuzzy msgid "Expand subroutine" msgstr "Extinde arbore" -#: tcl/ngcgui.tcl:1168 tcl/ngcgui.tcl:2414 +#: tcl/ngcgui.tcl:1247 tcl/ngcgui.tcl:2571 #, fuzzy msgid "Autosend" msgstr "Auto" -#: tcl/ngcgui.tcl:1178 +#: tcl/ngcgui.tcl:1257 #, fuzzy msgid "Verbose ngcfile" msgstr "fisiere rs274ngc" -#: tcl/ngcgui.tcl:1188 tcl/ngcgui.tcl:2235 tcl/ngcgui.tcl:2259 -#: tcl/ngcgui.tcl:2289 +#: tcl/ngcgui.tcl:1267 tcl/ngcgui.tcl:2393 tcl/ngcgui.tcl:2416 +#: tcl/ngcgui.tcl:2446 msgid "Create Feature" msgstr "" -#: tcl/ngcgui.tcl:1194 tcl/ngcgui.tcl:2919 +#: tcl/ngcgui.tcl:1273 tcl/ngcgui.tcl:3058 #, fuzzy msgid "MakeFile" msgstr "Fisier" -#: tcl/ngcgui.tcl:1195 tcl/ngcgui.tcl:2916 +#: tcl/ngcgui.tcl:1274 tcl/ngcgui.tcl:3055 msgid "Finalize" msgstr "" -#: tcl/ngcgui.tcl:1212 +#: tcl/ngcgui.tcl:1291 msgid "Reread" msgstr "" -#: tcl/ngcgui.tcl:1231 +#: tcl/ngcgui.tcl:1310 msgid "SendFileToAxis" msgstr "" -#: tcl/ngcgui.tcl:1274 +#: tcl/ngcgui.tcl:1353 msgid "Unrecoverable problem" msgstr "" -#: tcl/ngcgui.tcl:1374 +#: tcl/ngcgui.tcl:1431 msgid "Postamble file" msgstr "" -#: tcl/ngcgui.tcl:1424 +#: tcl/ngcgui.tcl:1481 msgid "Subroutine file" msgstr "" -#: tcl/ngcgui.tcl:1482 +#: tcl/ngcgui.tcl:1545 #, fuzzy msgid "Positional Parameters" msgstr "Extinde parametri" -#: tcl/ngcgui.tcl:1587 -msgid "_Globals" -msgstr "" - -#: tcl/ngcgui.tcl:1690 +#: tcl/ngcgui.tcl:1694 msgid "No Subfile specified" msgstr "" -#: tcl/ngcgui.tcl:1692 +#: tcl/ngcgui.tcl:1696 #, fuzzy msgid "No parameters yet" msgstr "Incarca fisier parametri" -#: tcl/ngcgui.tcl:1701 +#: tcl/ngcgui.tcl:1705 msgid "Missing value for parm" msgstr "" -#: tcl/ngcgui.tcl:1735 +#: tcl/ngcgui.tcl:1726 msgid "Output file" msgstr "" -#: tcl/ngcgui.tcl:1827 -msgid "Positional parameters for" -msgstr "" - -#: tcl/ngcgui.tcl:1835 -#, fuzzy -msgid "expanded file" -msgstr "Fisiere text" - -#: tcl/ngcgui.tcl:1849 -msgid "call subroutine file" -msgstr "" - -#: tcl/ngcgui.tcl:1919 +#: tcl/ngcgui.tcl:1841 msgid "Multiple Tabs with Features" msgstr "" -#: tcl/ngcgui.tcl:1920 +#: tcl/ngcgui.tcl:1842 msgid "Finalize all Tabs?" msgstr "" -#: tcl/ngcgui.tcl:1920 +#: tcl/ngcgui.tcl:1842 msgid "Order" msgstr "" -#: tcl/ngcgui.tcl:1922 +#: tcl/ngcgui.tcl:1844 msgid "No, just this page" msgstr "" -#: tcl/ngcgui.tcl:1936 +#: tcl/ngcgui.tcl:1858 msgid "Axis is not responding" msgstr "" -#: tcl/ngcgui.tcl:1937 +#: tcl/ngcgui.tcl:1859 msgid "Error: " msgstr "Eroare: " -#: tcl/ngcgui.tcl:1939 +#: tcl/ngcgui.tcl:1861 msgid "Autosend disabled, Ctrl-A toggles autosend" msgstr "" -#: tcl/ngcgui.tcl:1941 +#: tcl/ngcgui.tcl:1863 msgid "File saving enabled -- Finalize to save" msgstr "" -#: tcl/ngcgui.tcl:1957 +#: tcl/ngcgui.tcl:1879 msgid "Require .ngc suffix for filename" msgstr "" -#: tcl/ngcgui.tcl:1967 +#: tcl/ngcgui.tcl:1889 msgid "Disallowed overwrite of" msgstr "" -#: tcl/ngcgui.tcl:1986 +#: tcl/ngcgui.tcl:1913 msgid "FEATURE" msgstr "" -#: tcl/ngcgui.tcl:1993 +#: tcl/ngcgui.tcl:1920 msgid "feature line added" msgstr "" -#: tcl/ngcgui.tcl:2002 +#: tcl/ngcgui.tcl:1932 msgid "line added" msgstr "" -#: tcl/ngcgui.tcl:2002 +#: tcl/ngcgui.tcl:1932 msgid "activated" msgstr "" -#: tcl/ngcgui.tcl:2004 +#: tcl/ngcgui.tcl:1934 #, fuzzy msgid "restores" msgstr "Testeaza" -#: tcl/ngcgui.tcl:2041 +#: tcl/ngcgui.tcl:1973 msgid "NOTREACHED mode" msgstr "" -#: tcl/ngcgui.tcl:2236 +#: tcl/ngcgui.tcl:1989 +msgid "Positional parameters for" +msgstr "" + +#: tcl/ngcgui.tcl:1997 +#, fuzzy +msgid "expanded file" +msgstr "Fisiere text" + +#: tcl/ngcgui.tcl:2011 +msgid "call subroutine file" +msgstr "" + +#: tcl/ngcgui.tcl:2394 msgid "Enter parms for 1st feature" msgstr "" -#: tcl/ngcgui.tcl:2243 +#: tcl/ngcgui.tcl:2401 #, fuzzy msgid "New Outfile" msgstr "Fisiere NC" -#: tcl/ngcgui.tcl:2245 +#: tcl/ngcgui.tcl:2403 msgid "Ready to make New Outfile" msgstr "" -#: tcl/ngcgui.tcl:2262 tcl/ngcgui.tcl:2295 +#: tcl/ngcgui.tcl:2419 tcl/ngcgui.tcl:2452 msgid "Enter parms for feature " msgstr "" -#: tcl/ngcgui.tcl:2282 +#: tcl/ngcgui.tcl:2439 msgid "feature" msgstr "" -#: tcl/ngcgui.tcl:2287 +#: tcl/ngcgui.tcl:2444 msgid "Create Next" msgstr "" -#: tcl/ngcgui.tcl:2292 +#: tcl/ngcgui.tcl:2449 msgid "Created feature " msgstr "" -#: tcl/ngcgui.tcl:2316 +#: tcl/ngcgui.tcl:2473 #, fuzzy msgid "option" msgstr "Miscare" -#: tcl/ngcgui.tcl:2327 +#: tcl/ngcgui.tcl:2484 #, fuzzy msgid "Missing parameters" msgstr "Extinde parametri" -#: tcl/ngcgui.tcl:2331 +#: tcl/ngcgui.tcl:2488 #, fuzzy msgid "Parse Error" msgstr "Eroare" -#: tcl/ngcgui.tcl:2338 +#: tcl/ngcgui.tcl:2495 msgid "Null Preamble" msgstr "" -#: tcl/ngcgui.tcl:2343 +#: tcl/ngcgui.tcl:2500 msgid "Read Preamble" msgstr "" -#: tcl/ngcgui.tcl:2347 +#: tcl/ngcgui.tcl:2504 msgid "Preamble Error" msgstr "" -#: tcl/ngcgui.tcl:2352 +#: tcl/ngcgui.tcl:2509 msgid "Null Postamble" msgstr "" -#: tcl/ngcgui.tcl:2357 +#: tcl/ngcgui.tcl:2514 msgid "Read Postamble" msgstr "" -#: tcl/ngcgui.tcl:2361 +#: tcl/ngcgui.tcl:2518 msgid "Postamble Error" msgstr "" -#: tcl/ngcgui.tcl:2366 +#: tcl/ngcgui.tcl:2523 msgid "Read Subfile" msgstr "" -#: tcl/ngcgui.tcl:2371 +#: tcl/ngcgui.tcl:2528 #, fuzzy msgid "Write Error" msgstr "Eroare" -#: tcl/ngcgui.tcl:2375 +#: tcl/ngcgui.tcl:2532 msgid "Outfile set" msgstr "" -#: tcl/ngcgui.tcl:2380 +#: tcl/ngcgui.tcl:2537 msgid "Finished" msgstr "" -#: tcl/ngcgui.tcl:2385 +#: tcl/ngcgui.tcl:2542 #, fuzzy msgid "Canceled" msgstr "Anulare" -#: tcl/ngcgui.tcl:2391 +#: tcl/ngcgui.tcl:2548 msgid "Sent" msgstr "" -#: tcl/ngcgui.tcl:2395 +#: tcl/ngcgui.tcl:2552 #, fuzzy msgid "SendFileToAxis failed" msgstr "Filtru esuat" -#: tcl/ngcgui.tcl:2399 +#: tcl/ngcgui.tcl:2556 msgid "Ctrl-k for Key bindings" msgstr "" -#: tcl/ngcgui.tcl:2403 +#: tcl/ngcgui.tcl:2560 #, fuzzy msgid "Expand sub" msgstr "Extinde pini" -#: tcl/ngcgui.tcl:2407 +#: tcl/ngcgui.tcl:2564 #, fuzzy msgid "Retain values" msgstr "Seteaza valoara axa:" -#: tcl/ngcgui.tcl:2411 +#: tcl/ngcgui.tcl:2568 msgid "Verbose" msgstr "" -#: tcl/ngcgui.tcl:2417 +#: tcl/ngcgui.tcl:2574 msgid "Finalize Canceled" msgstr "" -#: tcl/ngcgui.tcl:2572 tcl/ngcgui.tcl:2728 +#: tcl/ngcgui.tcl:2711 tcl/ngcgui.tcl:2867 msgid "Dismiss" msgstr "" -#: tcl/ngcgui.tcl:2577 +#: tcl/ngcgui.tcl:2716 msgid "ngcgui Error" msgstr "" -#: tcl/ngcgui.tcl:2600 +#: tcl/ngcgui.tcl:2739 msgid "Declining support for tk send bug in ngcgui" msgstr "" -#: tcl/ngcgui.tcl:2601 +#: tcl/ngcgui.tcl:2740 msgid "You should upgrade linuxcnc to >= linuxcnc2.5" msgstr "" -#: tcl/ngcgui.tcl:2645 +#: tcl/ngcgui.tcl:2784 msgid "pre2.4_send_file_to_axis:error" msgstr "" -#: tcl/ngcgui.tcl:2839 share/axis/tcl/axis.tcl:1917 +#: tcl/ngcgui.tcl:2978 share/axis/tcl/axis.tcl:2032 #, fuzzy msgid "OFF" msgstr "OFF" -#: tcl/ngcgui.tcl:2842 +#: tcl/ngcgui.tcl:2981 #, fuzzy msgid "Toggle autosend" msgstr "Lichid On/Off" -#: tcl/ngcgui.tcl:2843 tcl/ngcgui.tcl:3057 +#: tcl/ngcgui.tcl:2982 tcl/ngcgui.tcl:3189 #, fuzzy msgid "Clear entries" msgstr "Configuratii model" -#: tcl/ngcgui.tcl:2844 +#: tcl/ngcgui.tcl:2983 msgid "Set entries to default values" msgstr "" -#: tcl/ngcgui.tcl:2845 tcl/ngcgui.tcl:2859 tcl/ngcgui.tcl:2861 +#: tcl/ngcgui.tcl:2984 tcl/ngcgui.tcl:2998 tcl/ngcgui.tcl:3000 msgid "Open editor specified by" msgstr "" -#: tcl/ngcgui.tcl:2846 +#: tcl/ngcgui.tcl:2985 msgid "on last outfile" msgstr "" -#: tcl/ngcgui.tcl:2847 +#: tcl/ngcgui.tcl:2986 msgid "toggle expand subroutines" msgstr "" -#: tcl/ngcgui.tcl:2848 +#: tcl/ngcgui.tcl:2987 msgid "Create feature" msgstr "" -#: tcl/ngcgui.tcl:2849 +#: tcl/ngcgui.tcl:2988 msgid "Finalize (AUTO send is" msgstr "" -#: tcl/ngcgui.tcl:2850 +#: tcl/ngcgui.tcl:2989 msgid "Show key bindings" msgstr "" -#: tcl/ngcgui.tcl:2851 +#: tcl/ngcgui.tcl:2990 msgid "Restart (cancel pending)" msgstr "" -#: tcl/ngcgui.tcl:2852 +#: tcl/ngcgui.tcl:2991 msgid "(re)Read Preamble" msgstr "" -#: tcl/ngcgui.tcl:2853 +#: tcl/ngcgui.tcl:2992 msgid "(re)Read Postamble" msgstr "" -#: tcl/ngcgui.tcl:2854 +#: tcl/ngcgui.tcl:2993 msgid "(re)Read Subfile" msgstr "" -#: tcl/ngcgui.tcl:2855 +#: tcl/ngcgui.tcl:2994 msgid "toggle retain values" msgstr "" -#: tcl/ngcgui.tcl:2856 +#: tcl/ngcgui.tcl:2995 msgid "toggle output file verbosity" msgstr "" -#: tcl/ngcgui.tcl:2857 +#: tcl/ngcgui.tcl:2996 #, fuzzy msgid "Show status" msgstr "Arata restart" -#: tcl/ngcgui.tcl:2858 +#: tcl/ngcgui.tcl:2997 msgid "Show full status (debug info)" msgstr "" -#: tcl/ngcgui.tcl:2860 +#: tcl/ngcgui.tcl:2999 #, fuzzy msgid "on current subfile" msgstr "Redeschide fisier curent [Control-R]" -#: tcl/ngcgui.tcl:2862 +#: tcl/ngcgui.tcl:3001 msgid "on current preamble" msgstr "" -#: tcl/ngcgui.tcl:2865 +#: tcl/ngcgui.tcl:3004 msgid " Escape Return to Preview page" msgstr "" -#: tcl/ngcgui.tcl:2942 +#: tcl/ngcgui.tcl:3081 msgid "Editing requires setting for environmental variable VISUAL" msgstr "" -#: tcl/ngcgui.tcl:2943 +#: tcl/ngcgui.tcl:3082 msgid "Trying gedit" msgstr "" -#: tcl/ngcgui.tcl:2955 +#: tcl/ngcgui.tcl:3095 msgid "No file available for editing yet" msgstr "" -#: tcl/ngcgui.tcl:2964 tcl/ngcgui.tcl:2973 +#: tcl/ngcgui.tcl:3104 tcl/ngcgui.tcl:3113 #, fuzzy msgid "No file available for editing" msgstr "Nu exista detalii." -#: tcl/ngcgui.tcl:2990 +#: tcl/ngcgui.tcl:3130 #, fuzzy msgid "Status items" msgstr "Stare:" -#: tcl/ngcgui.tcl:3003 +#: tcl/ngcgui.tcl:3143 msgid "All-page opt items" msgstr "" -#: tcl/ngcgui.tcl:3009 +#: tcl/ngcgui.tcl:3149 msgid "any-items" msgstr "" -#: tcl/ngcgui.tcl:3046 +#: tcl/ngcgui.tcl:3182 #, fuzzy msgid "Set defaults" msgstr "Foloseste implicit" -#: tcl/ngcgui.tcl:3125 +#: tcl/ngcgui.tcl:3257 msgid "not writable" msgstr "" -#: tcl/ngcgui.tcl:3263 tcl/ngcgui.tcl:3443 +#: tcl/ngcgui.tcl:3396 tcl/ngcgui.tcl:3577 #, fuzzy msgid "new" msgstr "Nou" -#: tcl/ngcgui.tcl:3288 +#: tcl/ngcgui.tcl:3422 msgid "Open a new Subfile" msgstr "" -#: tcl/ngcgui.tcl:3434 +#: tcl/ngcgui.tcl:3568 msgid "remove" msgstr "" -#: tcl/ngcgui.tcl:3456 tcl/ngcgui.tcl:3462 +#: tcl/ngcgui.tcl:3590 tcl/ngcgui.tcl:3596 msgid "move" msgstr "" -#: tcl/ngcgui.tcl:3561 src/emc/usr_intf/pncconf/pncconf.py:7022 -#: src/emc/usr_intf/pncconf/pncconf.py:7139 -#: src/emc/usr_intf/pncconf/pncconf.py:7306 +#: tcl/ngcgui.tcl:3704 src/emc/usr_intf/pncconf/pncconf.py:7374 +#: src/emc/usr_intf/pncconf/pncconf.py:7485 +#: src/emc/usr_intf/pncconf/pncconf.py:7650 #, fuzzy msgid "Custom" msgstr "Decupare" -#: tcl/ngcgui.tcl:3587 -msgid "Problem creating page" +#: tcl/ngcgui.tcl:3730 +msgid "Problem creating page" +msgstr "" + +#: tcl/ngcgui.tcl:3737 +msgid "entrykeybindings not available" +msgstr "" + +#: tcl/ngcgui.tcl:3781 +msgid "Found multiple matches for" +msgstr "" + +#: tcl/ngcgui.tcl:3782 +msgid "using path" +msgstr "" + +#: tcl/ngcgui.tcl:3790 src/emc/usr_intf/axis/scripts/axis.py:2440 +#: src/emc/usr_intf/axis/scripts/axis.py:2453 +msgid "Warning" +msgstr "" + +#: tcl/ngcgui.tcl:3791 +msgid "File absolute path specifier conflicts with searchpath result" +msgstr "" + +#: tcl/ngcgui.tcl:3792 +msgid "Absolute Specifier" +msgstr "" + +#: tcl/ngcgui.tcl:3793 +msgid "Using Search Result" +msgstr "" + +#: tcl/ngcgui.tcl:3798 +msgid "File not in Search Path" +msgstr "" + +#: tcl/ngcgui.tcl:3800 +msgid "Must be in search path" +msgstr "" + +#: tcl/ngcgui.tcl:3802 +msgid "(File found -- not in search path)" +msgstr "" + +#: tcl/ngcgui.tcl:3804 +#, fuzzy +msgid "Current directory" +msgstr "Selector configuratii EMC2" + +#: tcl/ngcgui.tcl:3805 +msgid "Search path" +msgstr "" + +#: tcl/ngcgui.tcl:3815 +msgid "Check setting for" +msgstr "" + +#: tcl/ngcgui.tcl:3816 +#, fuzzy +msgid "in ini file" +msgstr "(fara fisier)" + +#: tcl/ngcgui.tcl:3817 +msgid "(Restart required after fixing ini file)" +msgstr "" + +#: tcl/ngcgui.tcl:3832 +#, fuzzy +msgid "Try to Continue" +msgstr "continuu" + +#: tcl/ngcgui.tcl:3837 +#, fuzzy +msgid "Ngcgui Configuration File Not Found" +msgstr "Informatii de configurare" + +#: tcl/ngcgui.tcl:3917 +msgid "Missing Tcl Package Img" +msgstr "" + +#: tcl/ngcgui.tcl:3918 +msgid "Please install Img" +msgstr "" + +#: tcl/ngcgui.tcl:4122 +#, fuzzy +msgid "ini file" +msgstr "(fara fisier)" + +#: tcl/ngcgui.tcl:4131 +msgid "not found" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:67 +msgid "found truetype-tracer v4 -OK" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:70 +msgid "Note truetype-tracer v4 is required" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:71 +msgid "Note: truetype-tracer v4 is required" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:81 +msgid "ngcgui_app.tcl must be loaded before" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:89 +msgid "Create a subroutine file from truetype-tracer (V4 reqd)" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:102 tcl/ngcgui_ttt.tcl:115 +#, fuzzy +msgid "problem with" +msgstr "Inlocuieste cu:" + +#: tcl/ngcgui_ttt.tcl:106 +msgid "No entry for" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:109 +msgid "wrong version of truetype-tracer" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:125 +msgid "not writable, using" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:125 +msgid "and setting expandsub" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:161 +msgid "Text" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:171 +msgid "Linescale" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:177 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3583 +msgid "none" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:192 +msgid "Subdiv" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:199 +#, fuzzy +msgid "default" +msgstr "Foloseste implicit" + +#: tcl/ngcgui_ttt.tcl:239 +msgid "Mode" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:247 +msgid "normal" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:248 +msgid "date" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:249 +#, fuzzy +msgid "fontname" +msgstr "Nume:" + +#: tcl/ngcgui_ttt.tcl:262 +#, fuzzy +msgid "Switches" +msgstr "inch" + +#: tcl/ngcgui_ttt.tcl:270 +#, fuzzy +msgid "Unicode" +msgstr "End" + +#: tcl/ngcgui_ttt.tcl:275 +msgid "Allow Rotation" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:295 +msgid "Make ngcgui-compatible subfile and new tab page" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:353 +msgid "Null text" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:384 +msgid "Using truetype-tracer default font" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:388 +#, fuzzy +msgid "no such file" +msgstr "(fara fisier)" + +#: tcl/ngcgui_ttt.tcl:393 +msgid "file not readable" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:507 +msgid "Creating new tab page" +msgstr "" + +#: tcl/ngcgui_app.tcl:25 +msgid "" +"requires command inifindall\n" +"from axis.py (LinuxCNC 2.5) or" +msgstr "" + +#: tcl/ngcgui_app.tcl:55 +#, fuzzy +msgid "Substituting" +msgstr "Setari" + +#: tcl/ngcgui_app.tcl:55 +msgid "for" +msgstr "" + +#: tcl/ngcgui_app.tcl:59 +msgid "not readable" +msgstr "" + +#: tcl/ngcgui_app.tcl:65 tcl/ngcgui_app.tcl:68 +msgid "Unexpected: multiple startups for ngcgui" +msgstr "" + +#: tcl/ngcgui_app.tcl:66 +#, fuzzy +msgid "LinuxCNC" +msgstr "EMC Diagnostic" + +#: tcl/ngcgui_app.tcl:67 +msgid "for linuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" +msgstr "" + +#: tcl/ngcgui_app.tcl:86 +#, fuzzy +msgid "LinuxCNC version" +msgstr "Erori EMC2" + +#: tcl/ngcgui_app.tcl:87 +msgid "for LinuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" +msgstr "" + +#: tcl/tooledit.tcl:65 +msgid "Problem reading ~/.tooleditrc" +msgstr "" + +#: tcl/tooledit.tcl:82 +#, tcl-format +msgid "Note: Ignoring duplicate column name: %s" +msgstr "" + +#: tcl/tooledit.tcl:93 +#, fuzzy, tcl-format +msgid "Unknown column: %s" +msgstr "Scula %d necunoscuta" + +#: tcl/tooledit.tcl:210 tcl/tooledit.tcl:213 tcl/tooledit.tcl:598 +#: tcl/tooledit.tcl:599 tcl/tooledit.tcl:1032 +msgid "NEW" msgstr "" -#: tcl/ngcgui.tcl:3594 -msgid "entrykeybindings not available" +#: tcl/tooledit.tcl:232 +#, tcl-format +msgid "%s must be a number" msgstr "" -#: tcl/ngcgui.tcl:3633 -msgid "Found multiple matches for" +#: tcl/tooledit.tcl:241 +#, tcl-format +msgid "filename: <%s> not readable" msgstr "" -#: tcl/ngcgui.tcl:3634 -msgid "using path" +#: tcl/tooledit.tcl:245 +#, tcl-format +msgid "filename: <%s> not writable" msgstr "" -#: tcl/ngcgui.tcl:3642 src/emc/usr_intf/axis/scripts/axis.py:2255 -#: src/emc/usr_intf/axis/scripts/axis.py:2268 -msgid "Warning" +#: tcl/tooledit.tcl:250 +#, tcl-format +msgid "directory: <%s> not writable" msgstr "" -#: tcl/ngcgui.tcl:3643 -msgid "File absolute path specifier conflicts with searchpath result" +#: tcl/tooledit.tcl:294 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, value <%s> is not a number" msgstr "" -#: tcl/ngcgui.tcl:3644 -msgid "Absolute Specifier" +#: tcl/tooledit.tcl:300 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, expected integer not <%s>" msgstr "" -#: tcl/ngcgui.tcl:3645 -msgid "Using Search Result" +#: tcl/tooledit.tcl:316 +#, tcl-format +msgid "At linenumber %d, Unknown tag <%s>" msgstr "" -#: tcl/ngcgui.tcl:3650 -msgid "File not in Search Path" +#: tcl/tooledit.tcl:399 +#, tcl-format +msgid "%s: Column sorting not available with tcl_version==%s" msgstr "" -#: tcl/ngcgui.tcl:3652 -msgid "Must be in search path" -msgstr "" +#: tcl/tooledit.tcl:408 +#, fuzzy +msgid "tool" +msgstr "Fara scula" -#: tcl/ngcgui.tcl:3654 -msgid "(File found -- not in search path)" +#: tcl/tooledit.tcl:409 +msgid "poc" msgstr "" -#: tcl/ngcgui.tcl:3656 +#: tcl/tooledit.tcl:410 #, fuzzy -msgid "Current directory" -msgstr "Selector configuratii EMC2" +msgid "diam" +msgstr "Diametru:" -#: tcl/ngcgui.tcl:3657 -msgid "Search path" +#: tcl/tooledit.tcl:411 +msgid "front" msgstr "" -#: tcl/ngcgui.tcl:3663 -msgid "Check setting for" +#: tcl/tooledit.tcl:412 +msgid "back" msgstr "" -#: tcl/ngcgui.tcl:3664 +#: tcl/tooledit.tcl:413 +msgid "orien" +msgstr "" + +#: tcl/tooledit.tcl:414 #, fuzzy -msgid "in ini file" -msgstr "(fara fisier)" +msgid "comment" +msgstr "Increment" -#: tcl/ngcgui.tcl:3665 -msgid "(Restart required after fixing ini file)" -msgstr "" +#: tcl/tooledit.tcl:444 +#, fuzzy +msgid "Del" +msgstr "Sterge" -#: tcl/ngcgui.tcl:3680 +#: tcl/tooledit.tcl:473 #, fuzzy -msgid "Try to Continue" -msgstr "continuu" +msgid "ReLoadTable" +msgstr "Incarca tabela scule" -#: tcl/ngcgui.tcl:3685 +#: tcl/tooledit.tcl:478 #, fuzzy -msgid "Ngcgui Configuration File Not Found" -msgstr "Informatii de configurare" +msgid "SaveFile" +msgstr "Salveaza in fisier" -#: tcl/ngcgui.tcl:3765 -msgid "Missing Tcl Package Img" +#: tcl/tooledit.tcl:483 +msgid "ReRead" msgstr "" -#: tcl/ngcgui.tcl:3766 -msgid "Please install Img" +#: tcl/tooledit.tcl:485 +#, fuzzy +msgid "AddTool" +msgstr "Scule" + +#: tcl/tooledit.tcl:535 +#, tcl-format +msgid "Opened %s" msgstr "" -#: tcl/ngcgui.tcl:3965 -#, fuzzy -msgid "ini file" -msgstr "(fara fisier)" +#: tcl/tooledit.tcl:536 +#, tcl-format +msgid "Created %s" +msgstr "" -#: tcl/ngcgui.tcl:3973 -msgid "not found" +#: tcl/tooledit.tcl:537 +msgid "File updated" msgstr "" -#: tcl/ngcgui_ttt.tcl:67 -msgid "found truetype-tracer v4 -OK" +#: tcl/tooledit.tcl:538 +msgid "File modified" msgstr "" -#: tcl/ngcgui_ttt.tcl:70 -msgid "Note truetype-tracer v4 is required" +#: tcl/tooledit.tcl:539 +msgid "File check errors" msgstr "" -#: tcl/ngcgui_ttt.tcl:71 -msgid "Note: truetype-tracer v4 is required" +#: tcl/tooledit.tcl:540 +msgid "File checked" msgstr "" -#: tcl/ngcgui_ttt.tcl:81 -msgid "ngcgui_app.tcl must be loaded before" +#: tcl/tooledit.tcl:541 +msgid "File items deleted" msgstr "" -#: tcl/ngcgui_ttt.tcl:89 -msgid "Create a subroutine file from truetype-tracer (V4 reqd)" +#: tcl/tooledit.tcl:542 +msgid "Bogus lines in file ignored" msgstr "" -#: tcl/ngcgui_ttt.tcl:102 tcl/ngcgui_ttt.tcl:115 +#: tcl/tooledit.tcl:543 +msgid "File errors -- Check Entries" +msgstr "" + +#: tcl/tooledit.tcl:544 +msgid "Warning: File changed by another process" +msgstr "" + +#: tcl/tooledit.tcl:545 +msgid "Warning: File deleted by another process" +msgstr "" + +#: tcl/tooledit.tcl:546 #, fuzzy -msgid "problem with" -msgstr "Inlocuieste cu:" +msgid "Added Tool" +msgstr "Adauga scula suplimentara" -#: tcl/ngcgui_ttt.tcl:106 -msgid "No entry for" +#: tcl/tooledit.tcl:550 +#, tcl-format +msgid "Sorted by %s, increasing" msgstr "" -#: tcl/ngcgui_ttt.tcl:109 -msgid "wrong version of truetype-tracer" +#: tcl/tooledit.tcl:551 +#, tcl-format +msgid "Sorted by %s, decreasing" msgstr "" -#: tcl/ngcgui_ttt.tcl:125 -msgid "not writable, using" +#: tcl/tooledit.tcl:593 +msgid "Added" msgstr "" -#: tcl/ngcgui_ttt.tcl:125 -msgid "and setting expandsub" +#: tcl/tooledit.tcl:802 +#, tcl-format +msgid "Tool %s, Column %s, parameter %s is not a number" msgstr "" -#: tcl/ngcgui_ttt.tcl:161 -msgid "Text" +#: tcl/tooledit.tcl:811 +#, tcl-format +msgid "Tool %s, parameter %s must be nonnegative integer" msgstr "" -#: tcl/ngcgui_ttt.tcl:171 -msgid "Linescale" +#: tcl/tooledit.tcl:819 +#, tcl-format +msgid "Tool %s: must be 0..9 integer" msgstr "" -#: tcl/ngcgui_ttt.tcl:177 -msgid "none" +#: tcl/tooledit.tcl:826 +#, tcl-format +msgid "Tool %s: <%s> must be between -360 and 360" msgstr "" -#: tcl/ngcgui_ttt.tcl:192 -msgid "Subdiv" +#: tcl/tooledit.tcl:842 +#, tcl-format +msgid "Pocket <%s> specified multiple times" msgstr "" -#: tcl/ngcgui_ttt.tcl:199 +#: tcl/tooledit.tcl:857 +#, tcl-format +msgid "Tool <%s> specified multiple times" +msgstr "" + +#: tcl/tooledit.tcl:902 #, fuzzy -msgid "default" -msgstr "Foloseste implicit" +msgid "File Modified" +msgstr "Modificat..." -#: tcl/ngcgui_ttt.tcl:239 -msgid "Mode" +#: tcl/tooledit.tcl:903 +msgid "Save Modifications to File?" msgstr "" -#: tcl/ngcgui_ttt.tcl:247 -msgid "normal" +#: tcl/tooledit.tcl:930 +#, tcl-format +msgid "" +"Only these columns are currently used:\n" +"\n" +" %s" msgstr "" -#: tcl/ngcgui_ttt.tcl:248 -msgid "date" +#: tcl/tooledit.tcl:931 +msgid "Limit display to these columns by specifying" msgstr "" -#: tcl/ngcgui_ttt.tcl:249 +#: tcl/tooledit.tcl:933 #, fuzzy -msgid "fontname" -msgstr "Nume:" +msgid "Format for ini file is" +msgstr "nu pot deschide %s" -#: tcl/ngcgui_ttt.tcl:262 -#, fuzzy -msgid "Switches" -msgstr "inch" +#: tcl/tooledit.tcl:935 +msgid "For standalone use, invoke as" +msgstr "" -#: tcl/ngcgui_ttt.tcl:270 -#, fuzzy -msgid "Unicode" -msgstr "End" +#: tcl/tooledit.tcl:936 +msgid "tool_table_filename" +msgstr "" -#: tcl/ngcgui_ttt.tcl:275 -msgid "Allow Rotation" +#: tcl/tooledit.tcl:956 +#, fuzzy, tcl-format +msgid "Created by %s" +msgstr "generat din %s" + +#: tcl/tooledit.tcl:957 +msgid "Saved geometry (updated on program termination)" msgstr "" -#: tcl/ngcgui_ttt.tcl:295 -msgid "Make ngcgui-compatible subfile and new tab page" +#: tcl/tooledit.tcl:980 +#, tcl-format +msgid "" +"%s: Axis inifile specifies multiple inifile items for: [EMCIO]TOOL_TABLE" msgstr "" -#: tcl/ngcgui_ttt.tcl:353 -msgid "Null text" +#: tcl/tooledit.tcl:981 +#, tcl-format +msgid "%s: Using: %s" msgstr "" -#: tcl/ngcgui_ttt.tcl:384 -msgid "Using truetype-tracer default font" +#: tcl/tooledit.tcl:990 +#, tcl-format +msgid "" +"%s: Warning: Axis is running but the tool table file <%s> \n" +"differs from the standalone startup file <%s>" msgstr "" -#: tcl/ngcgui_ttt.tcl:388 -#, fuzzy -msgid "no such file" -msgstr "(fara fisier)" +#: tcl/tooledit.tcl:1004 +msgid "Must be On and Idle to reload tool table" +msgstr "" -#: tcl/ngcgui_ttt.tcl:393 -msgid "file not readable" +#: tcl/tooledit.tcl:1093 +msgid "Usage" msgstr "" -#: tcl/ngcgui_ttt.tcl:507 -msgid "Creating new tab page" +#: tcl/tooledit.tcl:1094 tcl/tooledit.tcl:1095 +#, fuzzy +msgid "filename" +msgstr "Nume:" + +#: tcl/tooledit.tcl:1096 +#, tcl-format +msgid "Allowed column_ names are: %s" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:148 +#: tcl/tooledit.tcl:1106 +#, fuzzy +msgid "Missing filename" +msgstr "Extinde parametri" + +#: src/emc/usr_intf/axis/scripts/axis.py:183 msgid "Emergency stop" msgstr "Stop de avarie" -#: src/emc/usr_intf/axis/scripts/axis.py:149 +#: src/emc/usr_intf/axis/scripts/axis.py:184 #, fuzzy msgid "Turn machine on" msgstr "Masina pornita" -#: src/emc/usr_intf/axis/scripts/axis.py:151 +#: src/emc/usr_intf/axis/scripts/axis.py:186 msgid "Activate first axis" msgstr "Activeaza prima axa" -#: src/emc/usr_intf/axis/scripts/axis.py:152 +#: src/emc/usr_intf/axis/scripts/axis.py:187 msgid "Activate second axis" msgstr "Activeaza a doua axa" -#: src/emc/usr_intf/axis/scripts/axis.py:153 +#: src/emc/usr_intf/axis/scripts/axis.py:188 msgid "Activate third axis" msgstr "Activeaza a treia axa" -#: src/emc/usr_intf/axis/scripts/axis.py:154 +#: src/emc/usr_intf/axis/scripts/axis.py:189 msgid "Activate fourth axis" msgstr "Activeaza a patra axa" -#: src/emc/usr_intf/axis/scripts/axis.py:155 +#: src/emc/usr_intf/axis/scripts/axis.py:190 msgid "Activate fifth through ninth axis" msgstr "Activeaza a axele 5-9" -#: src/emc/usr_intf/axis/scripts/axis.py:156 +#: src/emc/usr_intf/axis/scripts/axis.py:191 #, fuzzy msgid "Set Feed Override from 0% to 100%" msgstr "Seteaza depasire viteza" -#: src/emc/usr_intf/axis/scripts/axis.py:157 +#: src/emc/usr_intf/axis/scripts/axis.py:192 msgid ", and ." msgstr ", si ." -#: src/emc/usr_intf/axis/scripts/axis.py:157 +#: src/emc/usr_intf/axis/scripts/axis.py:192 #, fuzzy msgid "Select jog speed" msgstr "Viteza jog:" -#: src/emc/usr_intf/axis/scripts/axis.py:158 +#: src/emc/usr_intf/axis/scripts/axis.py:193 msgid "< and >" msgstr "< si >" -#: src/emc/usr_intf/axis/scripts/axis.py:158 +#: src/emc/usr_intf/axis/scripts/axis.py:193 #, fuzzy msgid "Select angular jog speed" msgstr "Viteza jog:" -#: src/emc/usr_intf/axis/scripts/axis.py:159 +#: src/emc/usr_intf/axis/scripts/axis.py:194 msgid "I, Shift-I" msgstr "I, Shift-I" -#: src/emc/usr_intf/axis/scripts/axis.py:159 share/axis/tcl/axis.tcl:2356 +#: src/emc/usr_intf/axis/scripts/axis.py:194 share/axis/tcl/axis.tcl:2481 #, fuzzy msgid "Select jog increment" msgstr "increment" -#: src/emc/usr_intf/axis/scripts/axis.py:160 +#: src/emc/usr_intf/axis/scripts/axis.py:195 #, fuzzy msgid "Continuous jog" msgstr "continuu" -#: src/emc/usr_intf/axis/scripts/axis.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:479 +#: src/emc/usr_intf/axis/scripts/axis.py:196 +#: src/emc/usr_intf/pncconf/pncconf.py:408 #, fuzzy msgid "Home" msgstr "poz.0" -#: src/emc/usr_intf/axis/scripts/axis.py:161 +#: src/emc/usr_intf/axis/scripts/axis.py:196 msgid "Send active axis home" msgstr "Trimita axa curenta la pozitia 0" -#: src/emc/usr_intf/axis/scripts/axis.py:162 +#: src/emc/usr_intf/axis/scripts/axis.py:197 msgid "Ctrl-Home" msgstr "Ctrl-Home" -#: src/emc/usr_intf/axis/scripts/axis.py:162 +#: src/emc/usr_intf/axis/scripts/axis.py:197 msgid "Home all axes" msgstr "Pozitie 0 toate axele" -#: src/emc/usr_intf/axis/scripts/axis.py:163 +#: src/emc/usr_intf/axis/scripts/axis.py:198 msgid "Shift-Home" msgstr "Shift-Home" -#: src/emc/usr_intf/axis/scripts/axis.py:163 +#: src/emc/usr_intf/axis/scripts/axis.py:198 msgid "Zero G54 offset for active axis" msgstr "Alege ofset G54 pentru axa activa" -#: src/emc/usr_intf/axis/scripts/axis.py:164 +#: src/emc/usr_intf/axis/scripts/axis.py:199 msgid "End" msgstr "End" -#: src/emc/usr_intf/axis/scripts/axis.py:164 +#: src/emc/usr_intf/axis/scripts/axis.py:199 msgid "Set G54 offset for active axis" msgstr "Alege ofset G54 pentru axa activa" -#: src/emc/usr_intf/axis/scripts/axis.py:165 +#: src/emc/usr_intf/axis/scripts/axis.py:200 msgid "Jog active axis" msgstr "Misca a treia axa" -#: src/emc/usr_intf/axis/scripts/axis.py:168 +#: src/emc/usr_intf/axis/scripts/axis.py:203 msgid "Left, Right" msgstr "Stanga, Dreapta" -#: src/emc/usr_intf/axis/scripts/axis.py:168 +#: src/emc/usr_intf/axis/scripts/axis.py:203 msgid "Jog first axis" msgstr "Misca prima axa" -#: src/emc/usr_intf/axis/scripts/axis.py:169 +#: src/emc/usr_intf/axis/scripts/axis.py:204 #, fuzzy msgid "Up, Down" msgstr "Jos" -#: src/emc/usr_intf/axis/scripts/axis.py:169 +#: src/emc/usr_intf/axis/scripts/axis.py:204 msgid "Jog second axis" msgstr "Misca a doua axa" -#: src/emc/usr_intf/axis/scripts/axis.py:170 +#: src/emc/usr_intf/axis/scripts/axis.py:205 msgid "Pg Up, Pg Dn" msgstr "Pg Sus, Pg Jos" -#: src/emc/usr_intf/axis/scripts/axis.py:170 +#: src/emc/usr_intf/axis/scripts/axis.py:205 msgid "Jog third axis" msgstr "Misca a treia axa" -#: src/emc/usr_intf/axis/scripts/axis.py:171 +#: src/emc/usr_intf/axis/scripts/axis.py:206 msgid "Shift+above jogs" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:171 +#: src/emc/usr_intf/axis/scripts/axis.py:206 msgid "Jog at traverse speed" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:172 +#: src/emc/usr_intf/axis/scripts/axis.py:207 msgid "Jog fourth axis" msgstr "Misca a patra axa" -#: src/emc/usr_intf/axis/scripts/axis.py:175 +#: src/emc/usr_intf/axis/scripts/axis.py:210 msgid "Toggle between Drag and Rotate mode" msgstr "Comuta intre tras si rotit" -#: src/emc/usr_intf/axis/scripts/axis.py:176 +#: src/emc/usr_intf/axis/scripts/axis.py:211 msgid "Left Button" msgstr "Buton stanga" -#: src/emc/usr_intf/axis/scripts/axis.py:176 +#: src/emc/usr_intf/axis/scripts/axis.py:211 msgid "Pan, rotate or select line" msgstr "Muta vedere, roteste sau selecteaza linie" -#: src/emc/usr_intf/axis/scripts/axis.py:177 +#: src/emc/usr_intf/axis/scripts/axis.py:212 msgid "Shift+Left Button" msgstr "Shift+Buton stanga" -#: src/emc/usr_intf/axis/scripts/axis.py:177 +#: src/emc/usr_intf/axis/scripts/axis.py:212 msgid "Rotate or pan" msgstr "Rotire sau mutare vedere" -#: src/emc/usr_intf/axis/scripts/axis.py:178 +#: src/emc/usr_intf/axis/scripts/axis.py:213 msgid "Right Button" msgstr "Buton dreapta" -#: src/emc/usr_intf/axis/scripts/axis.py:178 -#: src/emc/usr_intf/axis/scripts/axis.py:180 -#: src/emc/usr_intf/axis/scripts/axis.py:181 +#: src/emc/usr_intf/axis/scripts/axis.py:213 +#: src/emc/usr_intf/axis/scripts/axis.py:215 +#: src/emc/usr_intf/axis/scripts/axis.py:216 msgid "Zoom view" msgstr "Mareste vedere" -#: src/emc/usr_intf/axis/scripts/axis.py:179 +#: src/emc/usr_intf/axis/scripts/axis.py:214 msgid "Wheel Button" msgstr "Rotita mouse" -#: src/emc/usr_intf/axis/scripts/axis.py:179 +#: src/emc/usr_intf/axis/scripts/axis.py:214 msgid "Rotate view" msgstr "Roteste vedere" -#: src/emc/usr_intf/axis/scripts/axis.py:180 +#: src/emc/usr_intf/axis/scripts/axis.py:215 msgid "Rotate Wheel" msgstr "Roteste rotita mouse" -#: src/emc/usr_intf/axis/scripts/axis.py:181 +#: src/emc/usr_intf/axis/scripts/axis.py:216 msgid "Control+Left Button" msgstr "Buton stanga" -#: src/emc/usr_intf/axis/scripts/axis.py:184 +#: src/emc/usr_intf/axis/scripts/axis.py:219 #, fuzzy msgid "Manual control" msgstr "Manual" -#: src/emc/usr_intf/axis/scripts/axis.py:185 +#: src/emc/usr_intf/axis/scripts/axis.py:220 msgid "Code entry (MDI)" msgstr "Comenzi manuale (MDI)" -#: src/emc/usr_intf/axis/scripts/axis.py:186 +#: src/emc/usr_intf/axis/scripts/axis.py:221 msgid "Control-M" msgstr "Ctrl-M" -#: src/emc/usr_intf/axis/scripts/axis.py:186 +#: src/emc/usr_intf/axis/scripts/axis.py:221 msgid "Clear MDI history" msgstr "Sterge istoric MDI" -#: src/emc/usr_intf/axis/scripts/axis.py:187 +#: src/emc/usr_intf/axis/scripts/axis.py:222 msgid "Control-H" msgstr "Ctrl-H" -#: src/emc/usr_intf/axis/scripts/axis.py:187 +#: src/emc/usr_intf/axis/scripts/axis.py:222 msgid "Copy selected MDI history elements" msgstr "Copiaza elemente MDI selectate" -#: src/emc/usr_intf/axis/scripts/axis.py:188 +#: src/emc/usr_intf/axis/scripts/axis.py:223 msgid "to clipboard" msgstr "in clipboard" -#: src/emc/usr_intf/axis/scripts/axis.py:189 +#: src/emc/usr_intf/axis/scripts/axis.py:224 msgid "Control-Shift-H" msgstr "Control-Shift-H" -#: src/emc/usr_intf/axis/scripts/axis.py:189 +#: src/emc/usr_intf/axis/scripts/axis.py:224 msgid "Paste clipboard to MDI history" msgstr "Lipeste continut clipboard in istoric MDI" -#: src/emc/usr_intf/axis/scripts/axis.py:190 share/axis/tcl/axis.tcl:1113 +#: src/emc/usr_intf/axis/scripts/axis.py:225 share/axis/tcl/axis.tcl:1183 #: src/emc/usr_intf/touchy/touchy.glade:508 #, fuzzy msgid "Override Limits" msgstr "depaseste limite" -#: src/emc/usr_intf/axis/scripts/axis.py:192 +#: src/emc/usr_intf/axis/scripts/axis.py:227 #, fuzzy msgid "Open program" msgstr "Program" -#: src/emc/usr_intf/axis/scripts/axis.py:193 +#: src/emc/usr_intf/axis/scripts/axis.py:228 msgid "Control-R" msgstr "Ctrl-R" -#: src/emc/usr_intf/axis/scripts/axis.py:193 +#: src/emc/usr_intf/axis/scripts/axis.py:228 msgid "Reload program" msgstr "Executa program" -#: src/emc/usr_intf/axis/scripts/axis.py:194 +#: src/emc/usr_intf/axis/scripts/axis.py:229 msgid "Control-S" msgstr "Ctrl-S" -#: src/emc/usr_intf/axis/scripts/axis.py:194 +#: src/emc/usr_intf/axis/scripts/axis.py:229 msgid "Save g-code as" msgstr "Salveaza g-cod ca si" -#: src/emc/usr_intf/axis/scripts/axis.py:195 +#: src/emc/usr_intf/axis/scripts/axis.py:230 #, fuzzy msgid "Run program" msgstr "Program" -#: src/emc/usr_intf/axis/scripts/axis.py:196 +#: src/emc/usr_intf/axis/scripts/axis.py:231 #, fuzzy msgid "Step program" msgstr "Program" -#: src/emc/usr_intf/axis/scripts/axis.py:197 +#: src/emc/usr_intf/axis/scripts/axis.py:232 #, fuzzy msgid "Pause program" msgstr "Program" -#: src/emc/usr_intf/axis/scripts/axis.py:198 +#: src/emc/usr_intf/axis/scripts/axis.py:233 #, fuzzy msgid "Resume program" msgstr "Rezuma" -#: src/emc/usr_intf/axis/scripts/axis.py:199 +#: src/emc/usr_intf/axis/scripts/axis.py:234 msgid "Stop running program, or" msgstr "Opreste executie" -#: src/emc/usr_intf/axis/scripts/axis.py:200 +#: src/emc/usr_intf/axis/scripts/axis.py:235 msgid "stop loading program preview" msgstr "opreste incarcarea previzualizarii" -#: src/emc/usr_intf/axis/scripts/axis.py:202 +#: src/emc/usr_intf/axis/scripts/axis.py:237 msgid "Toggle mist" msgstr "Vapori On/Off" -#: src/emc/usr_intf/axis/scripts/axis.py:203 +#: src/emc/usr_intf/axis/scripts/axis.py:238 msgid "Toggle flood" msgstr "Lichid On/Off" -#: src/emc/usr_intf/axis/scripts/axis.py:204 +#: src/emc/usr_intf/axis/scripts/axis.py:239 #, fuzzy msgid "Spindle brake off" msgstr "Freza oprita" -#: src/emc/usr_intf/axis/scripts/axis.py:205 +#: src/emc/usr_intf/axis/scripts/axis.py:240 msgid "Shift-B" msgstr "Shift-B" -#: src/emc/usr_intf/axis/scripts/axis.py:205 +#: src/emc/usr_intf/axis/scripts/axis.py:240 #, fuzzy msgid "Spindle brake on" msgstr "Freza mai repede" -#: src/emc/usr_intf/axis/scripts/axis.py:206 +#: src/emc/usr_intf/axis/scripts/axis.py:241 #, fuzzy msgid "Turn spindle clockwise" msgstr "Freza mai incet" -#: src/emc/usr_intf/axis/scripts/axis.py:207 +#: src/emc/usr_intf/axis/scripts/axis.py:242 msgid "Turn spindle counterclockwise" msgstr "Freza sens antiorar" -#: src/emc/usr_intf/axis/scripts/axis.py:208 +#: src/emc/usr_intf/axis/scripts/axis.py:243 msgid "Turn spindle more slowly" msgstr "Incetineste freza" -#: src/emc/usr_intf/axis/scripts/axis.py:209 +#: src/emc/usr_intf/axis/scripts/axis.py:244 msgid "Turn spindle more quickly" msgstr "Accelereaza freza" -#: src/emc/usr_intf/axis/scripts/axis.py:211 +#: src/emc/usr_intf/axis/scripts/axis.py:246 msgid "Control-K" msgstr "Ctrl-K" -#: src/emc/usr_intf/axis/scripts/axis.py:211 +#: src/emc/usr_intf/axis/scripts/axis.py:246 msgid "Clear live plot" msgstr "Sterge vedere curenta" -#: src/emc/usr_intf/axis/scripts/axis.py:212 +#: src/emc/usr_intf/axis/scripts/axis.py:247 msgid "Cycle among preset views" msgstr "Comuta intre vederi presetate" -#: src/emc/usr_intf/axis/scripts/axis.py:213 +#: src/emc/usr_intf/axis/scripts/axis.py:248 #, fuzzy msgid "Cycle among preview, DRO, and user tabs" msgstr "Comuta intre vederi presetate" -#: src/emc/usr_intf/axis/scripts/axis.py:215 +#: src/emc/usr_intf/axis/scripts/axis.py:250 #, fuzzy msgid "Ctrl-Space" msgstr "Spatiu" -#: src/emc/usr_intf/axis/scripts/axis.py:215 +#: src/emc/usr_intf/axis/scripts/axis.py:250 #, fuzzy msgid "Clear notifications" msgstr "Configuratii model" -#: src/emc/usr_intf/axis/scripts/axis.py:836 +#: src/emc/usr_intf/axis/scripts/axis.py:850 #, python-format msgid "Unknown tool %d" msgstr "Scula %d necunoscuta" -#: src/emc/usr_intf/axis/scripts/axis.py:838 +#: src/emc/usr_intf/axis/scripts/axis.py:852 msgid "No tool" msgstr "Fara scula" -#: src/emc/usr_intf/axis/scripts/axis.py:840 +#: src/emc/usr_intf/axis/scripts/axis.py:854 #, python-format msgid "Tool %(tool)d, offset %(zo)g, diameter %(dia)g" msgstr "Scula %(tool)d, ofset %(zo)g, diametru %(dia)g" -#: src/emc/usr_intf/axis/scripts/axis.py:842 +#: src/emc/usr_intf/axis/scripts/axis.py:856 #, python-format msgid "Tool %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" msgstr "Scula %(tool)d, ofset-z %(zo)g, ofset-x %(xo)g, diametru %(dia)g" -#: src/emc/usr_intf/axis/scripts/axis.py:1013 +#: src/emc/usr_intf/axis/scripts/axis.py:1031 #, fuzzy msgid "Filtering..." msgstr "Testare..." -#: src/emc/usr_intf/axis/scripts/axis.py:1073 +#: src/emc/usr_intf/axis/scripts/axis.py:1102 msgid "Filter failed" msgstr "Filtru esuat" -#: src/emc/usr_intf/axis/scripts/axis.py:1074 +#: src/emc/usr_intf/axis/scripts/axis.py:1103 #, python-format msgid "" "The program %(program)r exited with code %(code)d. Any error messages it " @@ -3821,12 +5800,12 @@ msgstr "" "Programul %(program)r s-a terminat cu codul de eroare %(code)d. Mesajele de " "eroare produse sunt vizibile in cele ce urmeaza:" -#: src/emc/usr_intf/axis/scripts/axis.py:1139 +#: src/emc/usr_intf/axis/scripts/axis.py:1171 #, python-format msgid "G-Code error in %s" msgstr "Eroare G-cod in %s" -#: src/emc/usr_intf/axis/scripts/axis.py:1140 +#: src/emc/usr_intf/axis/scripts/axis.py:1172 #, fuzzy, python-format msgid "" "Near line %(seq)d of %(f)s:\n" @@ -3835,140 +5814,143 @@ msgstr "" "In apropierea liniei %(seq)d din %(f)s:\n" "$(error_str)s" -#: src/emc/usr_intf/axis/scripts/axis.py:1292 -#: src/emc/usr_intf/axis/scripts/axis.py:2725 share/axis/tcl/axis.tcl:1092 -#: share/axis/tcl/axis.tcl:1094 share/axis/tcl/axis.tcl:2144 +#: src/emc/usr_intf/axis/scripts/axis.py:1341 +#: src/emc/usr_intf/axis/scripts/axis.py:2942 share/axis/tcl/axis.tcl:1162 +#: share/axis/tcl/axis.tcl:1164 share/axis/tcl/axis.tcl:2269 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:895 #, fuzzy msgid "Continuous" msgstr "continuu" -#: src/emc/usr_intf/axis/scripts/axis.py:1403 +#: src/emc/usr_intf/axis/scripts/axis.py:1452 msgid "Ok" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1546 +#: src/emc/usr_intf/axis/scripts/axis.py:1599 #, fuzzy msgid "T Tool Table" msgstr "Incarca tabela scule" -#: src/emc/usr_intf/axis/scripts/axis.py:1557 -#: src/emc/usr_intf/axis/scripts/axis.py:1730 -#: src/emc/usr_intf/stepconf/stepconf.py:1691 -#: src/emc/usr_intf/stepconf/stepconf.py:2235 +#: src/emc/usr_intf/axis/scripts/axis.py:1610 +#: src/emc/usr_intf/axis/scripts/axis.py:1859 +#: src/emc/usr_intf/axis/scripts/axis.py:2387 +#: src/emc/usr_intf/stepconf/stepconf.py:1328 +#: src/emc/usr_intf/stepconf/pages.py:631 #, fuzzy msgid "in" msgstr "Principal" -#: src/emc/usr_intf/axis/scripts/axis.py:1560 +#: src/emc/usr_intf/axis/scripts/axis.py:1613 msgid " radius" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1562 +#: src/emc/usr_intf/axis/scripts/axis.py:1615 #, fuzzy msgid " diameter" msgstr "Diametru:" -#: src/emc/usr_intf/axis/scripts/axis.py:1563 +#: src/emc/usr_intf/axis/scripts/axis.py:1616 msgid "°" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1572 +#: src/emc/usr_intf/axis/scripts/axis.py:1625 #, fuzzy msgid "Coordinate System:" msgstr "Fereastra sistem control coordinate" -#: src/emc/usr_intf/axis/scripts/axis.py:1588 +#: src/emc/usr_intf/axis/scripts/axis.py:1641 msgid "fixture" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1589 +#: src/emc/usr_intf/axis/scripts/axis.py:1642 msgid "workpiece" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1605 +#: src/emc/usr_intf/axis/scripts/axis.py:1658 #, fuzzy msgid "Name:" msgstr "Nume INI" -#: src/emc/usr_intf/axis/scripts/axis.py:1605 +#: src/emc/usr_intf/axis/scripts/axis.py:1658 #, fuzzy msgid "Size:" msgstr "Dimensiune" -#: src/emc/usr_intf/axis/scripts/axis.py:1606 +#: src/emc/usr_intf/axis/scripts/axis.py:1659 #, fuzzy msgid "Tool order:" msgstr "Scula #:" -#: src/emc/usr_intf/axis/scripts/axis.py:1606 +#: src/emc/usr_intf/axis/scripts/axis.py:1659 msgid "Rapid distance:" msgstr "Distanta viteza mare:" -#: src/emc/usr_intf/axis/scripts/axis.py:1607 +#: src/emc/usr_intf/axis/scripts/axis.py:1660 msgid "Feed distance:" msgstr "Distanta viteza prelucrare:" -#: src/emc/usr_intf/axis/scripts/axis.py:1607 +#: src/emc/usr_intf/axis/scripts/axis.py:1660 msgid "Total distance:" msgstr "Distanta totala:" -#: src/emc/usr_intf/axis/scripts/axis.py:1608 +#: src/emc/usr_intf/axis/scripts/axis.py:1661 #, fuzzy msgid "Run time:" msgstr "Timp miscare" -#: src/emc/usr_intf/axis/scripts/axis.py:1608 +#: src/emc/usr_intf/axis/scripts/axis.py:1661 msgid "X bounds:" msgstr "Limite X:" -#: src/emc/usr_intf/axis/scripts/axis.py:1609 +#: src/emc/usr_intf/axis/scripts/axis.py:1662 msgid "Y bounds:" msgstr "Limite Y:" -#: src/emc/usr_intf/axis/scripts/axis.py:1609 +#: src/emc/usr_intf/axis/scripts/axis.py:1662 msgid "Z bounds:" msgstr "Limite Z:" -#: src/emc/usr_intf/axis/scripts/axis.py:1610 +#: src/emc/usr_intf/axis/scripts/axis.py:1663 msgid "A bounds:" msgstr "Limite A:" -#: src/emc/usr_intf/axis/scripts/axis.py:1610 +#: src/emc/usr_intf/axis/scripts/axis.py:1663 msgid "B bounds:" msgstr "Limite B:" -#: src/emc/usr_intf/axis/scripts/axis.py:1611 +#: src/emc/usr_intf/axis/scripts/axis.py:1664 msgid "C bounds:" msgstr "Limite C:" -#: src/emc/usr_intf/axis/scripts/axis.py:1635 +#: src/emc/usr_intf/axis/scripts/axis.py:1688 #, python-format msgid "Program exceeds machine minimum on axis %s" msgstr "Program depaseste limita inferioara pe axa %s" -#: src/emc/usr_intf/axis/scripts/axis.py:1638 +#: src/emc/usr_intf/axis/scripts/axis.py:1691 #, python-format msgid "Program exceeds machine maximum on axis %s" msgstr "Program depaseste limita superioara pe axa %s" -#: src/emc/usr_intf/axis/scripts/axis.py:1643 +#: src/emc/usr_intf/axis/scripts/axis.py:1696 msgid "Program exceeds machine limits" msgstr "Program depaseste limite masina" -#: src/emc/usr_intf/axis/scripts/axis.py:1646 +#: src/emc/usr_intf/axis/scripts/axis.py:1699 msgid "Run Anyway" msgstr "Totusi executa" -#: src/emc/usr_intf/axis/scripts/axis.py:1708 +#: src/emc/usr_intf/axis/scripts/axis.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1581 msgid "No file loaded" msgstr "Niciun fisier incarcat" -#: src/emc/usr_intf/axis/scripts/axis.py:1716 +#: src/emc/usr_intf/axis/scripts/axis.py:1845 #, python-format msgid "generated from %s" msgstr "generat din %s" -#: src/emc/usr_intf/axis/scripts/axis.py:1722 +#: src/emc/usr_intf/axis/scripts/axis.py:1851 #, python-format msgid "" "%(size)s bytes\n" @@ -3977,130 +5959,151 @@ msgstr "" "%(size)s bytes\n" "%(lines)s linii g-cod" -#: src/emc/usr_intf/axis/scripts/axis.py:1748 +#: src/emc/usr_intf/axis/scripts/axis.py:1877 #, python-format msgid "%.1f minutes" msgstr "%.1f minute" -#: src/emc/usr_intf/axis/scripts/axis.py:1750 +#: src/emc/usr_intf/axis/scripts/axis.py:1879 #, python-format msgid "%d seconds" msgstr "%d secunde" -#: src/emc/usr_intf/axis/scripts/axis.py:1758 +#: src/emc/usr_intf/axis/scripts/axis.py:1887 #, python-format msgid "%(a)f to %(b)f = %(diff)f %(units)s" msgstr "%(a)f la %(b)f = %(diff)f %(units)s" -#: src/emc/usr_intf/axis/scripts/axis.py:1759 +#: src/emc/usr_intf/axis/scripts/axis.py:1888 msgid "G-Code Properties" msgstr "Proprietati G-cod" -#: src/emc/usr_intf/axis/scripts/axis.py:1883 +#: src/emc/usr_intf/axis/scripts/axis.py:2021 #, fuzzy msgid "All machinable files" msgstr "Toate fisierele" -#: src/emc/usr_intf/axis/scripts/axis.py:1884 -#: src/emc/usr_intf/axis/scripts/axis.py:2464 +#: src/emc/usr_intf/axis/scripts/axis.py:2022 +#: src/emc/usr_intf/axis/scripts/axis.py:2659 msgid "rs274ngc files" msgstr "fisiere rs274ngc" -#: src/emc/usr_intf/axis/scripts/axis.py:1899 +#: src/emc/usr_intf/axis/scripts/axis.py:2037 msgid "axis cannot accept remote command while running" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2255 +#: src/emc/usr_intf/axis/scripts/axis.py:2098 +msgid "File not Writable:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2099 +msgid "" +"This file is not writable\n" +"You can Edit-readonly\n" +"\n" +"or\n" +"\n" +"Save it to your own directory\n" +"then open that saved, writable file" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2106 +msgid "Edit-readonly" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2440 msgid "Axis is already homed, are you sure you want to re-home?" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2268 +#: src/emc/usr_intf/axis/scripts/axis.py:2453 msgid "This axis is already homed, are you sure you want to re-home?" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2308 share/axis/tcl/axis.tcl:1108 +#: src/emc/usr_intf/axis/scripts/axis.py:2493 share/axis/tcl/axis.tcl:1178 msgid "Touch Off" msgstr "Atingere" -#: src/emc/usr_intf/axis/scripts/axis.py:2309 +#: src/emc/usr_intf/axis/scripts/axis.py:2494 #, fuzzy, python-format msgid "Enter %s coordinate relative to %%s:" msgstr "Introdu coordinata %s relativa la piesa:" -#: src/emc/usr_intf/axis/scripts/axis.py:2476 +#: src/emc/usr_intf/axis/scripts/axis.py:2671 msgid "Error saving file" msgstr "Eroare salvare fisier" -#: src/emc/usr_intf/axis/scripts/axis.py:2859 +#: src/emc/usr_intf/axis/scripts/axis.py:3077 #: src/emc/usr_intf/touchy/touchy.glade:577 +#: src/emc/usr_intf/gscreen/gscreen.glade:2933 #, fuzzy msgid "Home All" msgstr "Salveaza tot" -#: src/emc/usr_intf/axis/scripts/axis.py:2861 +#: src/emc/usr_intf/axis/scripts/axis.py:3079 msgid "Home all axes [Ctrl-Home]" msgstr "Pozitie 0 toate axele [Ctrl-Home]" -#: src/emc/usr_intf/axis/scripts/axis.py:2864 +#: src/emc/usr_intf/axis/scripts/axis.py:3082 msgid "Home All Axes" msgstr "Pozitie 0 toate axele" -#: src/emc/usr_intf/axis/scripts/axis.py:2871 +#: src/emc/usr_intf/axis/scripts/axis.py:3089 msgid "Unhome All Axes" msgstr "Anuleaza pozitie 0 toate axele" -#: src/emc/usr_intf/axis/scripts/axis.py:2895 +#: src/emc/usr_intf/axis/scripts/axis.py:3113 #, python-format msgid "Home Axis _%s" msgstr "Pozitie 0 axa _%s" -#: src/emc/usr_intf/axis/scripts/axis.py:2897 +#: src/emc/usr_intf/axis/scripts/axis.py:3115 #, python-format msgid "Unhome Axis _%s" msgstr "Anuleaza pozitie 0 axa _%s" -#: src/emc/usr_intf/axis/scripts/axis.py:3040 +#: src/emc/usr_intf/axis/scripts/axis.py:3282 msgid "Run from here" msgstr "Ruleaza de aici" -#: src/emc/usr_intf/axis/scripts/axis.py:3335 +#: src/emc/usr_intf/axis/scripts/axis.py:3598 msgid "Error in ~/.axisrc" msgstr "Eroare in ~/.axisrc" #: src/emc/usr_intf/axis/scripts/linuxcnctop.py:102 -msgid "LinuxCNC Status" -msgstr "" +#, fuzzy +msgid "Machinekit Status" +msgstr "Masina pornita" #: src/emc/usr_intf/axis/scripts/linuxcnctop.py:118 #, fuzzy msgid "Copy All" msgstr "Copiere" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:29 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 #, python-format msgid "Insert tool %d and click continue when ready" msgstr "Insereaza scula %d si apasati continua cand ati terminat" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:31 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:39 msgid "Remove the tool and click continue when ready" msgstr "Scoateti scula si apasati continua cand ati terminat" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 -#: src/emc/usr_intf/touchy/mdi.py:49 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 +#: src/emc/usr_intf/touchy/mdi.py:49 src/emc/usr_intf/gscreen/mdi.py:49 #, fuzzy msgid "Tool change" msgstr "Fisier scule" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 #, fuzzy msgid "Continue" msgstr "continuu" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:55 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:64 msgid "AXIS Manual Toolchanger" msgstr "AXIS schimbare manuala a sculei" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:59 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:68 msgid "" "This window is part of the AXIS manual toolchanger. It is safe to close or " "iconify this window, or it will close automatically after a few seconds." @@ -4308,8 +6311,8 @@ msgstr "Imagine de adancime" #: src/emc/usr_intf/axis/scripts/debuglevel.py:22 #, fuzzy -msgid "LinuxCNC Debug Level" -msgstr "EMC Diagnostic" +msgid "Machinekit Debug Level" +msgstr "Seteaza nivel _Debug" #: src/emc/usr_intf/axis/scripts/debuglevel.py:23 msgid "debuglevel" @@ -4362,832 +6365,911 @@ msgstr "" msgid " * This option can only be enabled in the inifile" msgstr " * aceasta optiune poate fi midificata doar din fiesierul ini" -#: share/axis/tcl/axis.tcl:49 +#: share/axis/tcl/axis.tcl:52 #, fuzzy msgid "_Open..." msgstr "Deschide..." -#: share/axis/tcl/axis.tcl:53 +#: share/axis/tcl/axis.tcl:56 #, fuzzy msgid "Recent _Files" msgstr "Fisiere text" -#: share/axis/tcl/axis.tcl:57 +#: share/axis/tcl/axis.tcl:60 #, fuzzy msgid "_Edit..." msgstr "Editeaza" -#: share/axis/tcl/axis.tcl:60 +#: share/axis/tcl/axis.tcl:63 msgid "Ctrl-R" msgstr "Ctrl-R" -#: share/axis/tcl/axis.tcl:62 +#: share/axis/tcl/axis.tcl:65 msgid "_Reload" msgstr "_Reincarca" -#: share/axis/tcl/axis.tcl:65 +#: share/axis/tcl/axis.tcl:68 msgid "Ctrl-S" msgstr "Ctrl-S" -#: share/axis/tcl/axis.tcl:67 +#: share/axis/tcl/axis.tcl:70 #, fuzzy msgid "_Save gcode as..." msgstr "Salveaza g-cod ca si" -#: share/axis/tcl/axis.tcl:71 +#: share/axis/tcl/axis.tcl:74 msgid "_Properties..." msgstr "_Proprietati..." -#: share/axis/tcl/axis.tcl:77 +#: share/axis/tcl/axis.tcl:80 msgid "Edit _tool table..." msgstr "Editeaza _tabela scule" -#: share/axis/tcl/axis.tcl:81 +#: share/axis/tcl/axis.tcl:84 #, fuzzy msgid "Reload tool ta_ble" msgstr "Incarca tabela scule" -#: share/axis/tcl/axis.tcl:87 +#: share/axis/tcl/axis.tcl:90 #, fuzzy msgid "_Ladder Editor..." msgstr "Editor _ladder" -#: share/axis/tcl/axis.tcl:99 +#: share/axis/tcl/axis.tcl:102 msgid "Toggle _Emergency Stop" msgstr "_Stop avarie On/Off" -#: share/axis/tcl/axis.tcl:104 +#: share/axis/tcl/axis.tcl:107 msgid "Toggle _Machine Power" msgstr "_Masina On/Off" -#: share/axis/tcl/axis.tcl:111 +#: share/axis/tcl/axis.tcl:114 #, fuzzy msgid "_Run program" msgstr "Program" -#: share/axis/tcl/axis.tcl:115 +#: share/axis/tcl/axis.tcl:118 msgid "Ru_n from selected line" msgstr "Por_neste de la linia selectata" -#: share/axis/tcl/axis.tcl:120 +#: share/axis/tcl/axis.tcl:123 #, fuzzy msgid "S_tep" msgstr "Pas" -#: share/axis/tcl/axis.tcl:125 +#: share/axis/tcl/axis.tcl:128 #, fuzzy msgid "_Pause" msgstr "Pauza" -#: share/axis/tcl/axis.tcl:130 +#: share/axis/tcl/axis.tcl:133 #, fuzzy msgid "Re_sume" msgstr "Rezuma" -#: share/axis/tcl/axis.tcl:140 +#: share/axis/tcl/axis.tcl:143 msgid "Stop at M_1" msgstr "Opreste la M_1" -#: share/axis/tcl/axis.tcl:145 +#: share/axis/tcl/axis.tcl:148 msgid "Skip lines with '_/'" msgstr "Sari peste linii cu '_/'" -#: share/axis/tcl/axis.tcl:150 +#: share/axis/tcl/axis.tcl:153 msgid "Ctrl-M" msgstr "Ctrl-M" -#: share/axis/tcl/axis.tcl:152 +#: share/axis/tcl/axis.tcl:155 msgid "Clear MDI h_istory" msgstr "Sterge _istoric MDI" -#: share/axis/tcl/axis.tcl:154 +#: share/axis/tcl/axis.tcl:157 msgid "Ctrl-H" msgstr "Ctrl-H" -#: share/axis/tcl/axis.tcl:156 +#: share/axis/tcl/axis.tcl:159 msgid "Copy from MDI hist_ory" msgstr "Copiaza ist_oric MDI" -#: share/axis/tcl/axis.tcl:158 +#: share/axis/tcl/axis.tcl:161 msgid "Ctrl-Shift-H" msgstr "Ctrl-Shift-H" -#: share/axis/tcl/axis.tcl:160 +#: share/axis/tcl/axis.tcl:163 msgid "Paste to MDI histor_y" msgstr "Lipeste in istoric MDI" -#: share/axis/tcl/axis.tcl:166 +#: share/axis/tcl/axis.tcl:169 #, fuzzy msgid "_Calibration" msgstr "Calibrare..." -#: share/axis/tcl/axis.tcl:170 +#: share/axis/tcl/axis.tcl:173 #, fuzzy msgid "Show _Hal Configuration" msgstr "Configuratii model" -#: share/axis/tcl/axis.tcl:174 +#: share/axis/tcl/axis.tcl:177 #, fuzzy msgid "H_al Meter" msgstr "Hal Meter" -#: share/axis/tcl/axis.tcl:178 +#: share/axis/tcl/axis.tcl:181 #, fuzzy msgid "Ha_l Scope" msgstr "Hal Scope" -#: share/axis/tcl/axis.tcl:182 +#: share/axis/tcl/axis.tcl:185 #, fuzzy -msgid "Sho_w LinuxCNC Status" +msgid "Sho_w Machinekit Status" msgstr "Arata setari" -#: share/axis/tcl/axis.tcl:186 +#: share/axis/tcl/axis.tcl:189 msgid "Set _Debug Level" msgstr "Seteaza nivel _Debug" -#: share/axis/tcl/axis.tcl:192 +#: share/axis/tcl/axis.tcl:195 #, fuzzy msgid "Homin_g" msgstr "Anulare poz.0" -#: share/axis/tcl/axis.tcl:196 +#: share/axis/tcl/axis.tcl:199 msgid "_Unhoming" msgstr "Anulare poz.0" -#: share/axis/tcl/axis.tcl:200 +#: share/axis/tcl/axis.tcl:203 msgid "_Zero coordinate system" msgstr "Sterge ofset sistem coordinate" -#: share/axis/tcl/axis.tcl:204 +#: share/axis/tcl/axis.tcl:207 msgid "P1 G5_4" msgstr "P1 G5_4" -#: share/axis/tcl/axis.tcl:208 +#: share/axis/tcl/axis.tcl:211 msgid "P2 G5_5" msgstr "P2 G5_5" -#: share/axis/tcl/axis.tcl:212 +#: share/axis/tcl/axis.tcl:215 msgid "P3 G5_6" msgstr "P3 G5_6" -#: share/axis/tcl/axis.tcl:216 +#: share/axis/tcl/axis.tcl:219 msgid "P4 G5_7" msgstr "P4 G5_7" -#: share/axis/tcl/axis.tcl:220 +#: share/axis/tcl/axis.tcl:223 msgid "P5 G5_8" msgstr "P5 G5_8" -#: share/axis/tcl/axis.tcl:224 +#: share/axis/tcl/axis.tcl:227 msgid "P6 G5_9" msgstr "P6 G5_9" -#: share/axis/tcl/axis.tcl:228 +#: share/axis/tcl/axis.tcl:231 msgid "P7 G59._1" msgstr "P7 G59._1" -#: share/axis/tcl/axis.tcl:232 +#: share/axis/tcl/axis.tcl:235 msgid "P8 G59._2" msgstr "P8 G59._2" -#: share/axis/tcl/axis.tcl:236 +#: share/axis/tcl/axis.tcl:239 msgid "P9 G59._3" msgstr "P9 G59._3" -#: share/axis/tcl/axis.tcl:240 +#: share/axis/tcl/axis.tcl:243 msgid "_G92" msgstr "_G92" -#: share/axis/tcl/axis.tcl:248 +#: share/axis/tcl/axis.tcl:251 msgid "Tool touch off to wor_kpiece" msgstr "" -#: share/axis/tcl/axis.tcl:254 +#: share/axis/tcl/axis.tcl:257 msgid "Tool touch off to _fixture" msgstr "" -#: share/axis/tcl/axis.tcl:262 +#: share/axis/tcl/axis.tcl:265 msgid "_Top view" msgstr "Vedere de _sus" -#: share/axis/tcl/axis.tcl:269 +#: share/axis/tcl/axis.tcl:272 msgid "_Rotated Top view" msgstr "Vedere _rotita" -#: share/axis/tcl/axis.tcl:276 +#: share/axis/tcl/axis.tcl:279 msgid "_Side view" msgstr "Vedere de _lateral" -#: share/axis/tcl/axis.tcl:283 +#: share/axis/tcl/axis.tcl:286 msgid "_Front view" msgstr "Vedere din _fata" -#: share/axis/tcl/axis.tcl:290 +#: share/axis/tcl/axis.tcl:293 msgid "_Perspective view" msgstr "Vedere din _perspectiva" -#: share/axis/tcl/axis.tcl:299 +#: share/axis/tcl/axis.tcl:302 msgid "Display _Inches" msgstr "Afisaj in _inchi" -#: share/axis/tcl/axis.tcl:306 +#: share/axis/tcl/axis.tcl:309 msgid "Display _MM" msgstr "Afisaj in _mm" -#: share/axis/tcl/axis.tcl:313 +#: share/axis/tcl/axis.tcl:316 #, fuzzy msgid "S_how program" msgstr "Program" -#: share/axis/tcl/axis.tcl:318 +#: share/axis/tcl/axis.tcl:321 msgid "Show program r_apids" msgstr "_Arata deplasari rapide" -#: share/axis/tcl/axis.tcl:323 +#: share/axis/tcl/axis.tcl:326 #, fuzzy msgid "Alpha-_blend program" msgstr "Program" -#: share/axis/tcl/axis.tcl:328 +#: share/axis/tcl/axis.tcl:331 msgid "Sho_w live plot" msgstr "Ara_ta plot in timp real" -#: share/axis/tcl/axis.tcl:333 +#: share/axis/tcl/axis.tcl:336 #, fuzzy msgid "Show too_l" msgstr "Arata setari" -#: share/axis/tcl/axis.tcl:338 +#: share/axis/tcl/axis.tcl:341 #, fuzzy msgid "Show e_xtents" msgstr "Arata restart" -#: share/axis/tcl/axis.tcl:343 +#: share/axis/tcl/axis.tcl:345 +msgid "_Grid" +msgstr "" + +#: share/axis/tcl/axis.tcl:350 #, fuzzy msgid "Show o_ffsets" msgstr "Arata restart" -#: share/axis/tcl/axis.tcl:348 +#: share/axis/tcl/axis.tcl:355 msgid "Sh_ow machine limits" msgstr "Arata limite masina" -#: share/axis/tcl/axis.tcl:353 +#: share/axis/tcl/axis.tcl:360 msgid "Show v_elocity" msgstr "Ara_ta vit_eza" -#: share/axis/tcl/axis.tcl:358 +#: share/axis/tcl/axis.tcl:365 msgid "Show _distance to go" msgstr "Arata _distanta ramasa" -#: share/axis/tcl/axis.tcl:363 +#: share/axis/tcl/axis.tcl:370 #, fuzzy msgid "Large coordinate fo_nt" msgstr "Font mare sistem coordinate" -#: share/axis/tcl/axis.tcl:366 +#: share/axis/tcl/axis.tcl:373 msgid "Ctrl-K" msgstr "Ctrl-K" -#: share/axis/tcl/axis.tcl:368 +#: share/axis/tcl/axis.tcl:375 msgid "_Clear live plot" msgstr "Sterge vedere curenta" -#: share/axis/tcl/axis.tcl:377 +#: share/axis/tcl/axis.tcl:384 #, fuzzy msgid "Show commanded position" msgstr "Pozitie comandata" -#: share/axis/tcl/axis.tcl:384 +#: share/axis/tcl/axis.tcl:391 #, fuzzy msgid "Show actual position" msgstr "Pozitia actuala" -#: share/axis/tcl/axis.tcl:393 +#: share/axis/tcl/axis.tcl:400 #, fuzzy msgid "Show machine position" msgstr "Pozitie Masina" -#: share/axis/tcl/axis.tcl:400 +#: share/axis/tcl/axis.tcl:407 #, fuzzy msgid "Show relative position" msgstr "Pozitie relativa" -#: share/axis/tcl/axis.tcl:409 +#: share/axis/tcl/axis.tcl:416 msgid "Joint mode" msgstr "Mod articulatii" -#: share/axis/tcl/axis.tcl:416 +#: share/axis/tcl/axis.tcl:423 #, fuzzy msgid "World mode" msgstr "Mod articulatii" -#: share/axis/tcl/axis.tcl:425 +#: share/axis/tcl/axis.tcl:431 +msgid "_Off" +msgstr "" + +#: share/axis/tcl/axis.tcl:437 +#, fuzzy +msgid "_Custom" +msgstr "Decupare" + +#: share/axis/tcl/axis.tcl:443 +msgid "User_0" +msgstr "" + +#: share/axis/tcl/axis.tcl:447 +msgid "User_1" +msgstr "" + +#: share/axis/tcl/axis.tcl:451 +msgid "User_2" +msgstr "" + +#: share/axis/tcl/axis.tcl:455 +msgid "User_3" +msgstr "" + +#: share/axis/tcl/axis.tcl:459 +msgid "User_4" +msgstr "" + +#: share/axis/tcl/axis.tcl:463 +msgid "User_5" +msgstr "" + +#: share/axis/tcl/axis.tcl:467 +msgid "User_6" +msgstr "" + +#: share/axis/tcl/axis.tcl:471 +msgid "User_7" +msgstr "" + +#: share/axis/tcl/axis.tcl:475 +msgid "User_8" +msgstr "" + +#: share/axis/tcl/axis.tcl:479 +msgid "User_9" +msgstr "" + +#: share/axis/tcl/axis.tcl:491 #, fuzzy msgid "_About AXIS" msgstr "Despre" -#: share/axis/tcl/axis.tcl:429 +#: share/axis/tcl/axis.tcl:495 msgid "Quick _Reference" msgstr "Ajutor _rapid" -#: share/axis/tcl/axis.tcl:439 +#: share/axis/tcl/axis.tcl:505 #, fuzzy msgid "_Machine" msgstr "masina" -#: share/axis/tcl/axis.tcl:443 +#: share/axis/tcl/axis.tcl:509 #, fuzzy msgid "_View" msgstr "Vizualizare" -#: share/axis/tcl/axis.tcl:456 +#: share/axis/tcl/axis.tcl:513 +msgid "_User" +msgstr "" + +#: share/axis/tcl/axis.tcl:526 msgid "Toggle Emergency Stop [F1]" msgstr "Stop urgenta On/Off [F1]" -#: share/axis/tcl/axis.tcl:465 +#: share/axis/tcl/axis.tcl:535 msgid "Toggle Machine power [F2]" msgstr "Masina On/Off [F2]" -#: share/axis/tcl/axis.tcl:476 +#: share/axis/tcl/axis.tcl:546 msgid "Open G-Code file [O]" msgstr "Deschide fisier G-cod [O]" -#: share/axis/tcl/axis.tcl:484 +#: share/axis/tcl/axis.tcl:554 msgid "Reopen current file [Control-R]" msgstr "Redeschide fisier curent [Control-R]" -#: share/axis/tcl/axis.tcl:494 +#: share/axis/tcl/axis.tcl:564 msgid "Begin executing current file [R]" msgstr "Executa fisier curent [R]" -#: share/axis/tcl/axis.tcl:502 +#: share/axis/tcl/axis.tcl:572 msgid "Execute next line [T]" msgstr "Executa linia urmatoare [T]" -#: share/axis/tcl/axis.tcl:510 +#: share/axis/tcl/axis.tcl:580 msgid "Pause [P] / resume [S] execution" msgstr "Pauza [P] / rezuma [s] executie" -#: share/axis/tcl/axis.tcl:518 +#: share/axis/tcl/axis.tcl:588 msgid "Stop program execution [ESC]" msgstr "Opreste executie program [ESC]" -#: share/axis/tcl/axis.tcl:528 +#: share/axis/tcl/axis.tcl:598 msgid "Toggle skip lines with '/' [Alt-M /]" msgstr "Sari peste linii cu '/' [Alt-M /]" -#: share/axis/tcl/axis.tcl:535 +#: share/axis/tcl/axis.tcl:605 msgid "Toggle optional pause [Alt-M 1]" msgstr "Basculeaza pauza optionala [Alt-M 1]" -#: share/axis/tcl/axis.tcl:544 +#: share/axis/tcl/axis.tcl:614 src/emc/usr_intf/gmoccapy/gmoccapy.glade:549 msgid "Zoom in" msgstr "Mareste vedere" -#: share/axis/tcl/axis.tcl:552 +#: share/axis/tcl/axis.tcl:622 src/emc/usr_intf/gmoccapy/gmoccapy.glade:567 msgid "Zoom out" msgstr "Micsoreaza vedere" -#: share/axis/tcl/axis.tcl:560 +#: share/axis/tcl/axis.tcl:630 msgid "Top view" msgstr "Vedere de sus" -#: share/axis/tcl/axis.tcl:568 +#: share/axis/tcl/axis.tcl:638 msgid "Rotated top view" msgstr "Vedere de sus, rotita" -#: share/axis/tcl/axis.tcl:576 +#: share/axis/tcl/axis.tcl:646 msgid "Side view" msgstr "Vedere de lateral" -#: share/axis/tcl/axis.tcl:584 +#: share/axis/tcl/axis.tcl:654 #, fuzzy msgid "Front view" msgstr "Vedere din _fata" -#: share/axis/tcl/axis.tcl:592 +#: share/axis/tcl/axis.tcl:662 msgid "Perspective view" msgstr "Vedere din perspectiva" -#: share/axis/tcl/axis.tcl:600 +#: share/axis/tcl/axis.tcl:670 msgid "Toggle between Drag and Rotate Mode [D]" msgstr "Comuta intre deplasare si rotire vedere [D]" -#: share/axis/tcl/axis.tcl:615 +#: share/axis/tcl/axis.tcl:685 msgid "Clear live plot [Ctrl-K]" msgstr "Sterge afisaj [Ctrl-K]" -#: share/axis/tcl/axis.tcl:766 +#: share/axis/tcl/axis.tcl:836 msgid "Manual Control [F3]" msgstr "Control manual [F3]" -#: share/axis/tcl/axis.tcl:767 +#: share/axis/tcl/axis.tcl:837 msgid "MDI [F5]" msgstr "MDI [F5]" -#: share/axis/tcl/axis.tcl:781 share/axis/tcl/axis.tcl:2036 -#: share/axis/tcl/axis.tcl:2203 +#: share/axis/tcl/axis.tcl:851 share/axis/tcl/axis.tcl:2158 +#: share/axis/tcl/axis.tcl:2328 #, fuzzy msgid "Axis:" msgstr "Axa" -#: share/axis/tcl/axis.tcl:1102 +#: share/axis/tcl/axis.tcl:1172 src/emc/usr_intf/gscreen/gscreen.glade:2944 msgid "Home Axis" msgstr "Pozitie 0 Axa" -#: share/axis/tcl/axis.tcl:1176 +#: share/axis/tcl/axis.tcl:1246 #, fuzzy msgid "Spindle:" msgstr "Freza oprita" -#: share/axis/tcl/axis.tcl:1223 src/emc/usr_intf/touchy/touchy.glade:946 +#: share/axis/tcl/axis.tcl:1293 src/emc/usr_intf/touchy/touchy.glade:946 +#: src/emc/usr_intf/stepconf/main_page.glade:406 +#: src/emc/usr_intf/gscreen/gscreen.glade:4067 msgid "-" msgstr "-" -#: share/axis/tcl/axis.tcl:1237 +#: share/axis/tcl/axis.tcl:1307 src/emc/usr_intf/stepconf/main_page.glade:403 +#: src/emc/usr_intf/gscreen/gscreen.glade:4056 msgid "+" msgstr "+" -#: share/axis/tcl/axis.tcl:1242 +#: share/axis/tcl/axis.tcl:1312 #, fuzzy msgid "Brake" msgstr "Frana pornita" -#: share/axis/tcl/axis.tcl:1289 +#: share/axis/tcl/axis.tcl:1359 #, fuzzy msgid "Coolant:" msgstr "Comanda:" -#: share/axis/tcl/axis.tcl:1294 +#: share/axis/tcl/axis.tcl:1364 #, fuzzy msgid "Mist" msgstr "Vapori porniti" -#: share/axis/tcl/axis.tcl:1299 +#: share/axis/tcl/axis.tcl:1369 #, fuzzy msgid "Flood" msgstr "Lichid pornit" -#: share/axis/tcl/axis.tcl:1371 +#: share/axis/tcl/axis.tcl:1441 msgid "History:" msgstr "Istoric" -#: share/axis/tcl/axis.tcl:1394 +#: share/axis/tcl/axis.tcl:1464 #, fuzzy msgid "MDI Command:" msgstr "Comanda:" -#: share/axis/tcl/axis.tcl:1403 +#: share/axis/tcl/axis.tcl:1473 msgid "Go" msgstr "Executa" -#: share/axis/tcl/axis.tcl:1409 +#: share/axis/tcl/axis.tcl:1479 #, fuzzy msgid "Active G-Codes:" msgstr "Coduri G active" -#: share/axis/tcl/axis.tcl:1487 +#: share/axis/tcl/axis.tcl:1557 src/emc/usr_intf/gmoccapy/gmoccapy.glade:771 #, fuzzy msgid "Preview" msgstr "Vedere arbore" -#: share/axis/tcl/axis.tcl:1488 +#: share/axis/tcl/axis.tcl:1558 msgid "DRO" msgstr "Pozitie axe" -#: share/axis/tcl/axis.tcl:1575 share/axis/tcl/axis.tcl:1588 +#: share/axis/tcl/axis.tcl:1645 share/axis/tcl/axis.tcl:1658 #, fuzzy msgid "Jog Speed:" msgstr "Seteaza viteza jog" -#: share/axis/tcl/axis.tcl:1600 +#: share/axis/tcl/axis.tcl:1670 msgid "Max Velocity:" msgstr "Viteza maxima:" -#: share/axis/tcl/axis.tcl:1629 +#: share/axis/tcl/axis.tcl:1699 #, fuzzy msgid "Spindle Override:" msgstr "Seteaza depasire freza" -#: share/axis/tcl/axis.tcl:1631 share/axis/tcl/axis.tcl:1671 -#: src/emc/usr_intf/pncconf/pncconf.glade:3141 -#: src/emc/usr_intf/pncconf/pncconf.glade:3154 -#: src/emc/usr_intf/pncconf/pncconf.glade:3167 -#: src/emc/usr_intf/pncconf/pncconf.glade:3180 -#: src/emc/usr_intf/pncconf/pncconf.glade:3193 -#: src/emc/usr_intf/pncconf/pncconf.glade:3206 -#: src/emc/usr_intf/pncconf/pncconf.glade:3219 -#: src/emc/usr_intf/pncconf/pncconf.glade:3232 -#: src/emc/usr_intf/pncconf/pncconf.glade:3345 -#: src/emc/usr_intf/pncconf/pncconf.glade:3358 -#: src/emc/usr_intf/pncconf/pncconf.glade:3371 -#: src/emc/usr_intf/pncconf/pncconf.glade:3384 -#: src/emc/usr_intf/pncconf/pncconf.glade:3397 -#: src/emc/usr_intf/pncconf/pncconf.glade:3410 -#: src/emc/usr_intf/pncconf/pncconf.glade:3516 -#: src/emc/usr_intf/pncconf/pncconf.glade:3527 -#: src/emc/usr_intf/pncconf/pncconf.glade:4022 -#: src/emc/usr_intf/pncconf/pncconf.glade:4035 -#: src/emc/usr_intf/pncconf/pncconf.glade:4048 -#: src/emc/usr_intf/pncconf/pncconf.glade:4061 -#: src/emc/usr_intf/pncconf/pncconf.glade:4074 -#: src/emc/usr_intf/pncconf/pncconf.glade:4087 -#: src/emc/usr_intf/pncconf/pncconf.glade:4100 -#: src/emc/usr_intf/pncconf/pncconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:4226 -#: src/emc/usr_intf/pncconf/pncconf.glade:4239 -#: src/emc/usr_intf/pncconf/pncconf.glade:4252 -#: src/emc/usr_intf/pncconf/pncconf.glade:4265 -#: src/emc/usr_intf/pncconf/pncconf.glade:4278 -#: src/emc/usr_intf/pncconf/pncconf.glade:4291 -#: src/emc/usr_intf/pncconf/pncconf.glade:4397 -#: src/emc/usr_intf/pncconf/pncconf.glade:4408 -#: src/emc/usr_intf/pncconf/pncconf.glade:4903 -#: src/emc/usr_intf/pncconf/pncconf.glade:4916 -#: src/emc/usr_intf/pncconf/pncconf.glade:4929 -#: src/emc/usr_intf/pncconf/pncconf.glade:4942 -#: src/emc/usr_intf/pncconf/pncconf.glade:4955 -#: src/emc/usr_intf/pncconf/pncconf.glade:4968 -#: src/emc/usr_intf/pncconf/pncconf.glade:4981 -#: src/emc/usr_intf/pncconf/pncconf.glade:4994 -#: src/emc/usr_intf/pncconf/pncconf.glade:5107 -#: src/emc/usr_intf/pncconf/pncconf.glade:5120 -#: src/emc/usr_intf/pncconf/pncconf.glade:5133 -#: src/emc/usr_intf/pncconf/pncconf.glade:5146 -#: src/emc/usr_intf/pncconf/pncconf.glade:5159 -#: src/emc/usr_intf/pncconf/pncconf.glade:5172 -#: src/emc/usr_intf/pncconf/pncconf.glade:5278 -#: src/emc/usr_intf/pncconf/pncconf.glade:5289 -#: src/emc/usr_intf/pncconf/pncconf.glade:5582 +#: share/axis/tcl/axis.tcl:1701 share/axis/tcl/axis.tcl:1741 +#: share/axis/tcl/axis.tcl:1779 src/emc/usr_intf/pncconf/pncconf.glade:2834 +#: src/emc/usr_intf/pncconf/pncconf.glade:2845 +#: src/emc/usr_intf/pncconf/pncconf.glade:2949 +#: src/emc/usr_intf/pncconf/pncconf.glade:2962 +#: src/emc/usr_intf/pncconf/pncconf.glade:2975 +#: src/emc/usr_intf/pncconf/pncconf.glade:2988 +#: src/emc/usr_intf/pncconf/pncconf.glade:3001 +#: src/emc/usr_intf/pncconf/pncconf.glade:3014 +#: src/emc/usr_intf/pncconf/pncconf.glade:3127 +#: src/emc/usr_intf/pncconf/pncconf.glade:3140 +#: src/emc/usr_intf/pncconf/pncconf.glade:3153 +#: src/emc/usr_intf/pncconf/pncconf.glade:3166 +#: src/emc/usr_intf/pncconf/pncconf.glade:3179 +#: src/emc/usr_intf/pncconf/pncconf.glade:3192 +#: src/emc/usr_intf/pncconf/pncconf.glade:3205 +#: src/emc/usr_intf/pncconf/pncconf.glade:3218 +#: src/emc/usr_intf/pncconf/pncconf.glade:3715 +#: src/emc/usr_intf/pncconf/pncconf.glade:3726 +#: src/emc/usr_intf/pncconf/pncconf.glade:3830 +#: src/emc/usr_intf/pncconf/pncconf.glade:3843 +#: src/emc/usr_intf/pncconf/pncconf.glade:3856 +#: src/emc/usr_intf/pncconf/pncconf.glade:3869 +#: src/emc/usr_intf/pncconf/pncconf.glade:3882 +#: src/emc/usr_intf/pncconf/pncconf.glade:3895 +#: src/emc/usr_intf/pncconf/pncconf.glade:4008 +#: src/emc/usr_intf/pncconf/pncconf.glade:4021 +#: src/emc/usr_intf/pncconf/pncconf.glade:4034 +#: src/emc/usr_intf/pncconf/pncconf.glade:4047 +#: src/emc/usr_intf/pncconf/pncconf.glade:4060 +#: src/emc/usr_intf/pncconf/pncconf.glade:4073 +#: src/emc/usr_intf/pncconf/pncconf.glade:4086 +#: src/emc/usr_intf/pncconf/pncconf.glade:4099 +#: src/emc/usr_intf/pncconf/pncconf.glade:4596 +#: src/emc/usr_intf/pncconf/pncconf.glade:4607 +#: src/emc/usr_intf/pncconf/pncconf.glade:4711 +#: src/emc/usr_intf/pncconf/pncconf.glade:4724 +#: src/emc/usr_intf/pncconf/pncconf.glade:4737 +#: src/emc/usr_intf/pncconf/pncconf.glade:4750 +#: src/emc/usr_intf/pncconf/pncconf.glade:4763 +#: src/emc/usr_intf/pncconf/pncconf.glade:4776 +#: src/emc/usr_intf/pncconf/pncconf.glade:4889 +#: src/emc/usr_intf/pncconf/pncconf.glade:4902 +#: src/emc/usr_intf/pncconf/pncconf.glade:4915 +#: src/emc/usr_intf/pncconf/pncconf.glade:4928 +#: src/emc/usr_intf/pncconf/pncconf.glade:4941 +#: src/emc/usr_intf/pncconf/pncconf.glade:4954 +#: src/emc/usr_intf/pncconf/pncconf.glade:4967 +#: src/emc/usr_intf/pncconf/pncconf.glade:4980 #: src/emc/usr_intf/pncconf/pncconf.glade:5631 -#: src/emc/usr_intf/pncconf/pncconf.glade:5641 +#: src/emc/usr_intf/pncconf/pncconf.glade:5643 +#: src/emc/usr_intf/pncconf/pncconf.glade:5690 msgid "%" msgstr "%" -#: share/axis/tcl/axis.tcl:1711 +#: share/axis/tcl/axis.tcl:1777 +#, fuzzy +msgid "Rapid Override:" +msgstr "Seteaza depasire freza" + +#: share/axis/tcl/axis.tcl:1819 #, fuzzy msgid "" -"LinuxCNC/AXIS version $version\n" +"Machinekit/AXIS version $version\n" "\n" -"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff Epler and Chris " -"Radek.\n" +"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff " +"Epler and Chris Radek.\n" "\n" "This is free software, and you are welcome to redistribute it under certain " -"conditions. See the file COPYING, included with LinuxCNC.\n" +"conditions. See the file COPYING, included with Machinekit.\n" "\n" -"Visit the LinuxCNC web site: " +"Visit the Machinekit web site: " msgstr "" "LinuxCNC/AXIS versiune $version\n" "\n" -"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff Epler si Chris Radek.\n" +"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff " +"Epler si Chris Radek.\n" "\n" "This is free software, and you are welcome to redistribute it under certain " "conditions. See the file COPYING, included with LinuxCNC.\n" "\n" "Viziteaza pagina web LinuxCNC: " -#: share/axis/tcl/axis.tcl:1739 +#: share/axis/tcl/axis.tcl:1847 #, fuzzy msgid "About AXIS" msgstr "Despre" -#: share/axis/tcl/axis.tcl:1768 +#: share/axis/tcl/axis.tcl:1876 msgid "AXIS Quick Reference" msgstr "Referinta rapida AXIS" -#: share/axis/tcl/axis.tcl:1903 -msgid "AXIS $::version on $::machine" +#: share/axis/tcl/axis.tcl:2017 +#, fuzzy +msgid "AXIS with MachineKit $::version on $::machine" msgstr "AXIS $::version - $::machine" -#: share/axis/tcl/axis.tcl:1905 +#: share/axis/tcl/axis.tcl:2019 msgid "(no file)" msgstr "(fara fisier)" -#: share/axis/tcl/axis.tcl:1976 share/axis/tcl/axis.tcl:1981 +#: share/axis/tcl/axis.tcl:2091 share/axis/tcl/axis.tcl:2096 #, fuzzy msgid "Position:" msgstr "Tip pozitie" -#: share/axis/tcl/axis.tcl:1978 +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/gscreen/gscreen.py:3516 #, fuzzy msgid "Machine" msgstr "masina" -#: share/axis/tcl/axis.tcl:1978 src/emc/usr_intf/touchy/touchy.glade:155 +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/touchy/touchy.glade:155 #, fuzzy msgid "Relative" msgstr "relativ" -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3329 +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3329 #, fuzzy msgid "Actual" msgstr "actual" -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3318 +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3318 #, fuzzy msgid "Commanded" msgstr "comandat" -#: share/axis/tcl/axis.tcl:2032 share/axis/tcl/axis.tcl:2203 +#: share/axis/tcl/axis.tcl:2154 share/axis/tcl/axis.tcl:2328 #, fuzzy msgid "Joint:" msgstr "articulatie" -#: share/axis/tcl/axis.tcl:2338 +#: share/axis/tcl/axis.tcl:2463 msgid "Turn spindle counterclockwise [F10]" msgstr "Fraza actionata in sens antiorar [F10]" -#: share/axis/tcl/axis.tcl:2339 +#: share/axis/tcl/axis.tcl:2464 msgid "Turn spindle clockwise [F9]" msgstr "Fraza actionata in sens orar [F9]" -#: share/axis/tcl/axis.tcl:2340 +#: share/axis/tcl/axis.tcl:2465 msgid "Stop spindle [F9/F10]" msgstr "Opreste freza [F9/F10]" -#: share/axis/tcl/axis.tcl:2341 +#: share/axis/tcl/axis.tcl:2466 #, fuzzy msgid "Turn spindle Faster [F12]" msgstr "Freza mai repede" -#: share/axis/tcl/axis.tcl:2342 +#: share/axis/tcl/axis.tcl:2467 #, fuzzy msgid "Turn spindle Slower [F11]" msgstr "Freza mai incet" -#: share/axis/tcl/axis.tcl:2343 +#: share/axis/tcl/axis.tcl:2468 msgid "Turn spindle brake on [Shift-B] or off [B]" msgstr "Porneste [Shift-B] sau opreste [B] frana freza" -#: share/axis/tcl/axis.tcl:2344 +#: share/axis/tcl/axis.tcl:2469 msgid "Turn flood on or off [F8]" msgstr "Lichid racire On/Off [F8]" -#: share/axis/tcl/axis.tcl:2345 +#: share/axis/tcl/axis.tcl:2470 msgid "Turn mist on or off [F7]" msgstr "Vapori racire On/Off [F7]" -#: share/axis/tcl/axis.tcl:2346 +#: share/axis/tcl/axis.tcl:2471 msgid "Send active axis home [Home]" msgstr "Trimite axa curenta acasa [Home]" -#: share/axis/tcl/axis.tcl:2347 +#: share/axis/tcl/axis.tcl:2472 msgid "Set G54 offset for active axis [End]" msgstr "Alege ofset G54 pentru axa activa [End]" -#: share/axis/tcl/axis.tcl:2348 +#: share/axis/tcl/axis.tcl:2473 msgid "Activate axis [X]" msgstr "Activeaza axa [X]" -#: share/axis/tcl/axis.tcl:2349 +#: share/axis/tcl/axis.tcl:2474 msgid "Activate axis [Y]" msgstr "Activeaza axa [Y]" -#: share/axis/tcl/axis.tcl:2350 +#: share/axis/tcl/axis.tcl:2475 msgid "Activate axis [Z]" msgstr "Activeaza axa [Z]" -#: share/axis/tcl/axis.tcl:2351 +#: share/axis/tcl/axis.tcl:2476 msgid "Activate axis [A]" msgstr "Activeaza axa [A]" -#: share/axis/tcl/axis.tcl:2352 +#: share/axis/tcl/axis.tcl:2477 msgid "Activate axis [4]" msgstr "Activeaza axa [4]" -#: share/axis/tcl/axis.tcl:2353 +#: share/axis/tcl/axis.tcl:2478 msgid "Activate axis [5]" msgstr "Activeaza axa [5]" -#: share/axis/tcl/axis.tcl:2354 share/axis/tcl/axis.tcl:2355 +#: share/axis/tcl/axis.tcl:2479 share/axis/tcl/axis.tcl:2480 msgid "Jog selected axis" msgstr "Misca axa selectata" -#: share/axis/tcl/axis.tcl:2357 +#: share/axis/tcl/axis.tcl:2482 msgid "Temporarily allow jogging outside machine limits [L]" msgstr "Permite temporar miscarea in afara limitelor [L]" -#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 +#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:47 #, fuzzy msgid "Spindle CW" msgstr "Freza oprita" -#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 +#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:48 #, fuzzy msgid "Spindle CCW" msgstr "Freza oprita" #: src/emc/usr_intf/touchy/mdi.py:50 #, fuzzy +msgid "Set tool number" +msgstr "Renumeroteaza" + +#: src/emc/usr_intf/touchy/mdi.py:51 src/emc/usr_intf/gscreen/mdi.py:50 +#, fuzzy msgid "Input control" msgstr "Manual" -#: src/emc/usr_intf/touchy/mdi.py:53 src/emc/usr_intf/touchy/mdi.py:54 +#: src/emc/usr_intf/touchy/mdi.py:54 src/emc/usr_intf/touchy/mdi.py:55 +#: src/emc/usr_intf/gscreen/mdi.py:53 src/emc/usr_intf/gscreen/mdi.py:54 msgid "Straight rapid" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:55 src/emc/usr_intf/touchy/mdi.py:56 +#: src/emc/usr_intf/touchy/mdi.py:56 src/emc/usr_intf/touchy/mdi.py:57 +#: src/emc/usr_intf/gscreen/mdi.py:55 src/emc/usr_intf/gscreen/mdi.py:56 msgid "Straight feed" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:57 src/emc/usr_intf/touchy/mdi.py:58 +#: src/emc/usr_intf/touchy/mdi.py:58 src/emc/usr_intf/touchy/mdi.py:59 +#: src/emc/usr_intf/gscreen/mdi.py:57 src/emc/usr_intf/gscreen/mdi.py:58 msgid "Arc CW" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:59 src/emc/usr_intf/touchy/mdi.py:60 +#: src/emc/usr_intf/touchy/mdi.py:60 src/emc/usr_intf/touchy/mdi.py:61 +#: src/emc/usr_intf/gscreen/mdi.py:59 src/emc/usr_intf/gscreen/mdi.py:60 msgid "Arc CCW" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:61 src/emc/usr_intf/touchy/mdi.py:62 +#: src/emc/usr_intf/touchy/mdi.py:62 src/emc/usr_intf/touchy/mdi.py:63 +#: src/emc/usr_intf/gscreen/mdi.py:61 src/emc/usr_intf/gscreen/mdi.py:62 msgid "Dwell" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:63 +#: src/emc/usr_intf/touchy/mdi.py:64 src/emc/usr_intf/gscreen/mdi.py:63 #, fuzzy msgid "Setup" msgstr "Ascunde setari" -#: src/emc/usr_intf/touchy/mdi.py:64 +#: src/emc/usr_intf/touchy/mdi.py:65 src/emc/usr_intf/gscreen/mdi.py:64 #, fuzzy msgid "Spindle synchronized feed" msgstr "Freza sens invers" -#: src/emc/usr_intf/touchy/mdi.py:65 +#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:65 msgid "Rigid tap" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/touchy/mdi.py:67 -#: src/emc/usr_intf/touchy/mdi.py:68 src/emc/usr_intf/touchy/mdi.py:69 +#: src/emc/usr_intf/touchy/mdi.py:67 src/emc/usr_intf/touchy/mdi.py:68 +#: src/emc/usr_intf/touchy/mdi.py:69 src/emc/usr_intf/touchy/mdi.py:70 +#: src/emc/usr_intf/gscreen/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:67 +#: src/emc/usr_intf/gscreen/mdi.py:68 src/emc/usr_intf/gscreen/mdi.py:69 #, fuzzy msgid "Probe" msgstr "Digitizor intrare" -#: src/emc/usr_intf/touchy/mdi.py:70 +#: src/emc/usr_intf/touchy/mdi.py:71 src/emc/usr_intf/gscreen/mdi.py:70 msgid "Radius compensation left" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:71 +#: src/emc/usr_intf/touchy/mdi.py:72 src/emc/usr_intf/gscreen/mdi.py:71 msgid "Radius compensation right" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:72 +#: src/emc/usr_intf/touchy/mdi.py:73 src/emc/usr_intf/gscreen/mdi.py:72 msgid "Radius compensation left, immediate" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:73 +#: src/emc/usr_intf/touchy/mdi.py:74 src/emc/usr_intf/gscreen/mdi.py:73 msgid "Radius compensation right, immediate" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:74 +#: src/emc/usr_intf/touchy/mdi.py:75 src/emc/usr_intf/gscreen/mdi.py:74 #, fuzzy msgid "Tool length offset" msgstr "Seteaza offset scula" -#: src/emc/usr_intf/touchy/mdi.py:75 +#: src/emc/usr_intf/touchy/mdi.py:76 src/emc/usr_intf/gscreen/mdi.py:75 msgid "Tool length offset immediate" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:76 +#: src/emc/usr_intf/touchy/mdi.py:77 src/emc/usr_intf/gscreen/mdi.py:76 msgid "Motion in unoffset coordinates" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:77 +#: src/emc/usr_intf/touchy/mdi.py:78 src/emc/usr_intf/gscreen/mdi.py:77 #, fuzzy msgid "Continuous mode" msgstr "continuu" -#: src/emc/usr_intf/touchy/mdi.py:79 +#: src/emc/usr_intf/touchy/mdi.py:80 src/emc/usr_intf/gscreen/mdi.py:79 msgid "Drill" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:80 +#: src/emc/usr_intf/touchy/mdi.py:81 src/emc/usr_intf/gscreen/mdi.py:80 msgid "Drill with dwell" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:81 +#: src/emc/usr_intf/touchy/mdi.py:82 src/emc/usr_intf/gscreen/mdi.py:81 msgid "Peck drill" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:82 +#: src/emc/usr_intf/touchy/mdi.py:83 src/emc/usr_intf/gscreen/mdi.py:82 msgid "Chip-break drill" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:83 +#: src/emc/usr_intf/touchy/mdi.py:84 src/emc/usr_intf/gscreen/mdi.py:83 msgid "Bore" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:84 +#: src/emc/usr_intf/touchy/mdi.py:85 src/emc/usr_intf/gscreen/mdi.py:84 msgid "Bore with dwell" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:85 +#: src/emc/usr_intf/touchy/mdi.py:86 src/emc/usr_intf/gscreen/mdi.py:85 #, fuzzy msgid "Offset all coordinate systems" msgstr "Sterge ofset sistem coordinate" -#: src/emc/usr_intf/touchy/mdi.py:86 +#: src/emc/usr_intf/touchy/mdi.py:87 src/emc/usr_intf/gscreen/mdi.py:86 msgid "CSS Mode" msgstr "" @@ -5208,7 +7290,7 @@ msgstr "" msgid "LinuxCNC/Touchy" msgstr "" -#. # Touchy is Copyright (c) 2009 Chris Radek # # Touchy 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 2 of the License, or # (at your option) any later version. # # Touchy 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. +#. # Touchy is Copyright (c) 2009 Chris Radek # # Touchy 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 2 of the License, or # (at your option) any later version. # # Touchy 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. #: src/emc/usr_intf/touchy/touchy.glade:11 msgid "window1" msgstr "" @@ -5246,11 +7328,20 @@ msgid "zd" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:131 +#: src/emc/usr_intf/gscreen/gscreen.glade:85 +#: src/emc/usr_intf/gscreen/gscreen.glade:213 +#: src/emc/usr_intf/gscreen/gscreen.glade:343 +#: src/emc/usr_intf/gscreen/gscreen.glade:471 +#: src/emc/usr_intf/gscreen/gscreen.glade:599 +#: src/emc/usr_intf/gscreen/gscreen.glade:727 +#: src/emc/usr_intf/gscreen/gscreen.glade:855 +#: src/emc/usr_intf/gscreen/gscreen.glade:983 +#: src/emc/usr_intf/gscreen/gscreen.glade:1111 msgid "DTG" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:143 -#: src/emc/usr_intf/pncconf/pncconf.glade:59755 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Absolute" msgstr "" @@ -5337,6 +7428,9 @@ msgid "Estop Reset" msgstr "Estop pornit" #: src/emc/usr_intf/touchy/touchy.glade:459 +#: src/emc/usr_intf/stepconf/pport1.glade:21 +#: src/emc/usr_intf/stepconf/pport2.glade:1409 +#: src/emc/usr_intf/gscreen/gscreen.glade:2442 #, fuzzy msgid "Estop" msgstr "Testeaza" @@ -5390,47 +7484,7 @@ msgid "." msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:963 -#: src/emc/usr_intf/pncconf/pncconf.glade:60883 -#: src/emc/usr_intf/pncconf/pncconf.glade:60895 -#: src/emc/usr_intf/pncconf/pncconf.glade:61017 -#: src/emc/usr_intf/pncconf/pncconf.glade:61029 -#: src/emc/usr_intf/pncconf/pncconf.glade:61041 -#: src/emc/usr_intf/pncconf/pncconf.glade:61053 -#: src/emc/usr_intf/pncconf/pncconf.glade:61065 -#: src/emc/usr_intf/pncconf/pncconf.glade:61077 -#: src/emc/usr_intf/pncconf/pncconf.glade:62040 -#: src/emc/usr_intf/pncconf/pncconf.glade:62052 -#: src/emc/usr_intf/pncconf/pncconf.glade:62064 -#: src/emc/usr_intf/pncconf/pncconf.glade:62076 -#: src/emc/usr_intf/pncconf/pncconf.glade:62088 -#: src/emc/usr_intf/pncconf/pncconf.glade:62100 -#: src/emc/usr_intf/pncconf/pncconf.glade:62222 -#: src/emc/usr_intf/pncconf/pncconf.glade:62234 -#: src/emc/usr_intf/pncconf/pncconf.glade:63069 -#: src/emc/usr_intf/pncconf/pncconf.glade:63081 -#: src/emc/usr_intf/pncconf/pncconf.glade:63203 -#: src/emc/usr_intf/pncconf/pncconf.glade:63215 -#: src/emc/usr_intf/pncconf/pncconf.glade:63227 -#: src/emc/usr_intf/pncconf/pncconf.glade:63239 -#: src/emc/usr_intf/pncconf/pncconf.glade:63251 -#: src/emc/usr_intf/pncconf/pncconf.glade:63263 -#: src/emc/usr_intf/pncconf/pncconf.glade:64226 -#: src/emc/usr_intf/pncconf/pncconf.glade:64238 -#: src/emc/usr_intf/pncconf/pncconf.glade:64250 -#: src/emc/usr_intf/pncconf/pncconf.glade:64262 -#: src/emc/usr_intf/pncconf/pncconf.glade:64274 -#: src/emc/usr_intf/pncconf/pncconf.glade:64286 -#: src/emc/usr_intf/pncconf/pncconf.glade:64408 -#: src/emc/usr_intf/pncconf/pncconf.glade:64420 -#: src/emc/usr_intf/pncconf/pncconf.glade:65231 -#: src/emc/usr_intf/pncconf/pncconf.glade:65243 -#: src/emc/usr_intf/pncconf/pncconf.glade:65359 -#: src/emc/usr_intf/pncconf/pncconf.glade:65371 -#: src/emc/usr_intf/pncconf/pncconf.glade:65383 -#: src/emc/usr_intf/pncconf/pncconf.glade:65395 -#: src/emc/usr_intf/pncconf/pncconf.glade:65407 -#: src/emc/usr_intf/pncconf/pncconf.glade:65419 -#: src/emc/usr_intf/pncconf/pncconf.glade:67091 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "0" msgstr "" @@ -5513,6 +7567,7 @@ msgid "label26" msgstr "label42" #: src/emc/usr_intf/touchy/touchy.glade:1539 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4226 #, fuzzy msgid "Spindle" msgstr "Freza oprita" @@ -5563,12 +7618,8 @@ msgid "Distance:" msgstr "Distanta viteza prelucrare:" #: src/emc/usr_intf/touchy/touchy.glade:2526 -#: src/emc/usr_intf/stepconf/stepconf.glade:4148 -#: src/emc/usr_intf/pncconf/pncconf.glade:60476 -#: src/emc/usr_intf/pncconf/pncconf.glade:61571 -#: src/emc/usr_intf/pncconf/pncconf.glade:62664 -#: src/emc/usr_intf/pncconf/pncconf.glade:63757 -#: src/emc/usr_intf/pncconf/pncconf.glade:64856 +#: src/emc/usr_intf/stepconf/main_page.glade:23 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Velocity:" msgstr "Viteza" @@ -5701,6 +7752,7 @@ msgid "" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:3009 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6414 #, fuzzy msgid "Status" msgstr "Stare:" @@ -5767,6 +7819,8 @@ msgid "Display Options" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:3286 +#: src/emc/usr_intf/stepconf/base.glade:867 +#: src/emc/usr_intf/gscreen/gscreen.glade:3664 msgid "Inch" msgstr "" @@ -5811,14 +7865,17 @@ msgid "Program Options" msgstr "Pozitie 0" #: src/emc/usr_intf/touchy/touchy.glade:3531 +#: src/emc/usr_intf/gscreen/gscreen.glade:2200 msgid "Preferences" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:3567 +#: src/emc/usr_intf/gscreen/gscreen.glade:1425 msgid "FO: 100%" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:3582 +#: src/emc/usr_intf/gscreen/gscreen.glade:1437 msgid "SO: 100%" msgstr "" @@ -5830,60 +7887,64 @@ msgstr "" msgid "Jogging" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3637 +#: src/emc/usr_intf/touchy/touchy.glade:3624 +msgid "Start Point" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:3651 msgid ".01" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3650 +#: src/emc/usr_intf/touchy/touchy.glade:3664 msgid ".001" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3666 +#: src/emc/usr_intf/touchy/touchy.glade:3680 msgid ".0001" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3694 +#: src/emc/usr_intf/touchy/touchy.glade:3708 msgid " X " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3706 +#: src/emc/usr_intf/touchy/touchy.glade:3720 msgid " Y " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3721 +#: src/emc/usr_intf/touchy/touchy.glade:3735 msgid " Z " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3736 +#: src/emc/usr_intf/touchy/touchy.glade:3750 msgid " A " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3752 +#: src/emc/usr_intf/touchy/touchy.glade:3766 msgid " B " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3770 +#: src/emc/usr_intf/touchy/touchy.glade:3784 msgid " C " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3788 +#: src/emc/usr_intf/touchy/touchy.glade:3802 msgid " U " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3804 +#: src/emc/usr_intf/touchy/touchy.glade:3818 msgid " V " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3822 +#: src/emc/usr_intf/touchy/touchy.glade:3836 msgid " W " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3855 +#: src/emc/usr_intf/touchy/touchy.glade:3869 #, fuzzy msgid "Handwheel" msgstr "Pozitie 0" -#: src/emc/usr_intf/stepconf/stepconf.py:53 +#: src/emc/usr_intf/stepconf/stepconf.py:57 msgid "" "Stepconf encountered an error. The following information may be useful in " "troubleshooting:\n" @@ -5893,453 +7954,718 @@ msgstr "" "depanare:\n" "\n" -#: src/emc/usr_intf/stepconf/stepconf.py:70 -#: src/emc/usr_intf/pncconf/pncconf.py:133 +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#, fuzzy +msgid "Stepconf" +msgstr "Pas" + +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#: src/emc/usr_intf/stepconf/stepconf.py:217 +#: src/emc/usr_intf/stepconf/main_page.glade:557 +#: src/emc/usr_intf/gscreen/gscreen.py:3414 +#: src/emc/usr_intf/gscreen/gscreen.py:3415 +#: src/emc/usr_intf/gscreen/gscreen.glade:4043 +#, fuzzy +msgid "Start" +msgstr "Restart" + +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Base Information" +msgstr "Informatii versiune" + +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Parallel Port 1" +msgstr "Initializare imprimare" + +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Parallel Port 2" +msgstr "Initializare imprimare" + +#: src/emc/usr_intf/stepconf/stepconf.py:130 +#, fuzzy +msgid "Options" +msgstr "Optiuni PLC" + +#: src/emc/usr_intf/stepconf/stepconf.py:130 +#, fuzzy +msgid "Axis X" +msgstr "Axa" + +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis Y" +msgstr "Axa" + +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis Z" +msgstr "Axa" + +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis A" +msgstr "Axa" + +#: src/emc/usr_intf/stepconf/stepconf.py:132 +#: src/emc/usr_intf/pncconf/pncconf.py:378 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#, fuzzy +msgid "Spindle" +msgstr "Freza oprita" + +#: src/emc/usr_intf/stepconf/stepconf.py:132 +msgid "Almost Done" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:136 +#: src/emc/usr_intf/pncconf/pncconf.py:135 msgid "Gecko 201" msgstr "Gecko 201" -#: src/emc/usr_intf/stepconf/stepconf.py:71 -#: src/emc/usr_intf/pncconf/pncconf.py:134 +#: src/emc/usr_intf/stepconf/stepconf.py:137 +#: src/emc/usr_intf/pncconf/pncconf.py:136 msgid "Gecko 202" msgstr "Gecko 202" -#: src/emc/usr_intf/stepconf/stepconf.py:72 -#: src/emc/usr_intf/pncconf/pncconf.py:135 +#: src/emc/usr_intf/stepconf/stepconf.py:138 +#: src/emc/usr_intf/pncconf/pncconf.py:137 msgid "Gecko 203v" msgstr "Gecko 203v" -#: src/emc/usr_intf/stepconf/stepconf.py:73 -#: src/emc/usr_intf/pncconf/pncconf.py:136 +#: src/emc/usr_intf/stepconf/stepconf.py:139 +#: src/emc/usr_intf/pncconf/pncconf.py:138 msgid "Gecko 210" msgstr "Gecko 210" -#: src/emc/usr_intf/stepconf/stepconf.py:74 -#: src/emc/usr_intf/pncconf/pncconf.py:137 +#: src/emc/usr_intf/stepconf/stepconf.py:140 +#: src/emc/usr_intf/pncconf/pncconf.py:139 msgid "Gecko 212" msgstr "Gecko 212" -#: src/emc/usr_intf/stepconf/stepconf.py:75 -#: src/emc/usr_intf/pncconf/pncconf.py:138 +#: src/emc/usr_intf/stepconf/stepconf.py:141 +#: src/emc/usr_intf/pncconf/pncconf.py:140 msgid "Gecko 320" msgstr "Gecko 320" -#: src/emc/usr_intf/stepconf/stepconf.py:76 -#: src/emc/usr_intf/pncconf/pncconf.py:139 +#: src/emc/usr_intf/stepconf/stepconf.py:142 +#: src/emc/usr_intf/pncconf/pncconf.py:141 msgid "Gecko 540" msgstr "Gecko 540" -#: src/emc/usr_intf/stepconf/stepconf.py:77 -#: src/emc/usr_intf/pncconf/pncconf.py:140 +#: src/emc/usr_intf/stepconf/stepconf.py:143 +#: src/emc/usr_intf/pncconf/pncconf.py:142 msgid "L297" msgstr "L297" -#: src/emc/usr_intf/stepconf/stepconf.py:78 -#: src/emc/usr_intf/pncconf/pncconf.py:141 +#: src/emc/usr_intf/stepconf/stepconf.py:144 +#: src/emc/usr_intf/pncconf/pncconf.py:143 msgid "PMDX-150" msgstr "PMDX-150" -#: src/emc/usr_intf/stepconf/stepconf.py:79 -#: src/emc/usr_intf/pncconf/pncconf.py:142 +#: src/emc/usr_intf/stepconf/stepconf.py:145 +#: src/emc/usr_intf/stepconf/pport1.glade:32 +#: src/emc/usr_intf/pncconf/pncconf.py:144 msgid "Sherline" msgstr "Sherline" -#: src/emc/usr_intf/stepconf/stepconf.py:80 -#: src/emc/usr_intf/pncconf/pncconf.py:143 +#: src/emc/usr_intf/stepconf/stepconf.py:146 +#: src/emc/usr_intf/pncconf/pncconf.py:145 msgid "Xylotex 8S-3" msgstr "Xylotex 8S-3" -#: src/emc/usr_intf/stepconf/stepconf.py:81 -#: src/emc/usr_intf/pncconf/pncconf.py:144 +#: src/emc/usr_intf/stepconf/stepconf.py:147 +#: src/emc/usr_intf/pncconf/pncconf.py:146 msgid "Parker-Compumotor oem750" msgstr "Parker-Compumotor oem750" -#: src/emc/usr_intf/stepconf/stepconf.py:82 -#: src/emc/usr_intf/pncconf/pncconf.py:145 +#: src/emc/usr_intf/stepconf/stepconf.py:148 +#: src/emc/usr_intf/pncconf/pncconf.py:147 msgid "JVL-SMD41 or 42" msgstr "JVL-SMD41 sau 42" -#: src/emc/usr_intf/stepconf/stepconf.py:83 -#: src/emc/usr_intf/pncconf/pncconf.py:146 +#: src/emc/usr_intf/stepconf/stepconf.py:149 +#: src/emc/usr_intf/pncconf/pncconf.py:148 msgid "Hobbycnc Pro Chopper" msgstr "Hobbycnc Pro Chopper" -#: src/emc/usr_intf/stepconf/stepconf.py:84 -#: src/emc/usr_intf/pncconf/pncconf.py:147 -msgid "Keling 4030" +#: src/emc/usr_intf/stepconf/stepconf.py:150 +#, fuzzy +msgid "Kelling 4030" msgstr "Keling 4030" -#: src/emc/usr_intf/stepconf/stepconf.py:153 +#: src/emc/usr_intf/stepconf/stepconf.py:151 +msgid "Leadshine Series" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:190 #, fuzzy msgid "X Step" msgstr "Pas" -#: src/emc/usr_intf/stepconf/stepconf.py:153 +#: src/emc/usr_intf/stepconf/stepconf.py:190 msgid "X Direction" msgstr "X Directie" -#: src/emc/usr_intf/stepconf/stepconf.py:153 +#: src/emc/usr_intf/stepconf/stepconf.py:190 #, fuzzy msgid "Y Step" msgstr "Pas" -#: src/emc/usr_intf/stepconf/stepconf.py:153 +#: src/emc/usr_intf/stepconf/stepconf.py:190 msgid "Y Direction" msgstr "Y Directie" -#: src/emc/usr_intf/stepconf/stepconf.py:154 +#: src/emc/usr_intf/stepconf/stepconf.py:191 #, fuzzy msgid "Z Step" msgstr "Pas" -#: src/emc/usr_intf/stepconf/stepconf.py:154 +#: src/emc/usr_intf/stepconf/stepconf.py:191 msgid "Z Direction" msgstr "Z Directie" -#: src/emc/usr_intf/stepconf/stepconf.py:154 +#: src/emc/usr_intf/stepconf/stepconf.py:191 #, fuzzy msgid "A Step" msgstr "Pas" -#: src/emc/usr_intf/stepconf/stepconf.py:154 +#: src/emc/usr_intf/stepconf/stepconf.py:191 msgid "A Direction" msgstr "A Directie" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 #, fuzzy msgid "Spindle ON" msgstr "Freza oprita" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:557 +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:488 #, fuzzy msgid "Spindle PWM" msgstr "Freza oprita" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 #, fuzzy msgid "Spindle Brake" msgstr "Freza mai repede" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 msgid "Coolant Mist" msgstr "Racire vapori" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 msgid "Coolant Flood" msgstr "Racire lichid" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:370 #, fuzzy msgid "ESTOP Out" msgstr "ESTOP" -#: src/emc/usr_intf/stepconf/stepconf.py:156 +#: src/emc/usr_intf/stepconf/stepconf.py:193 msgid "Amplifier Enable" msgstr "Activare driver" -#: src/emc/usr_intf/stepconf/stepconf.py:157 -#: src/emc/usr_intf/pncconf/pncconf.py:443 +#: src/emc/usr_intf/stepconf/stepconf.py:194 +#: src/emc/usr_intf/pncconf/pncconf.py:371 msgid "Charge Pump" msgstr "Charge pump" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 msgid "Digital out 0" msgstr "Iesire digitala 0" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 msgid "Digital out 1" msgstr "Iesire digitala 1" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 msgid "Digital out 2" msgstr "Iesire digitala 2" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 msgid "Digital out 3" msgstr "Iesire digitala 3" -#: src/emc/usr_intf/stepconf/stepconf.py:159 -#: src/emc/usr_intf/stepconf/stepconf.py:178 +#: src/emc/usr_intf/stepconf/stepconf.py:196 +#: src/emc/usr_intf/stepconf/stepconf.py:215 +#: src/emc/usr_intf/stepconf/pport1.glade:18 +#: src/emc/usr_intf/stepconf/pport2.glade:1406 +#: src/emc/usr_intf/stepconf/pport2.glade:1420 #, fuzzy msgid "Unused" msgstr "Anulare" -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 #, fuzzy msgid "ESTOP In" msgstr "ESTOP" -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 msgid "Probe In" msgstr "Digitizor intrare" -#: src/emc/usr_intf/stepconf/stepconf.py:162 +#: src/emc/usr_intf/stepconf/stepconf.py:199 #, fuzzy msgid "Spindle Index" msgstr "Freza mai repede" -#: src/emc/usr_intf/stepconf/stepconf.py:162 +#: src/emc/usr_intf/stepconf/stepconf.py:199 #, fuzzy msgid "Spindle Phase A" msgstr "Freza mai repede" -#: src/emc/usr_intf/stepconf/stepconf.py:162 +#: src/emc/usr_intf/stepconf/stepconf.py:199 #, fuzzy msgid "Spindle Phase B" msgstr "Freza mai repede" -#: src/emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/stepconf.py:200 #, fuzzy msgid "Home X" msgstr "poz.0" -#: src/emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/stepconf.py:200 #, fuzzy msgid "Home Y" msgstr "poz.0" -#: src/emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/stepconf.py:200 #, fuzzy msgid "Home Z" msgstr "poz.0" -#: src/emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/stepconf.py:200 #, fuzzy msgid "Home A" msgstr "poz.0" -#: src/emc/usr_intf/stepconf/stepconf.py:164 +#: src/emc/usr_intf/stepconf/stepconf.py:201 msgid "Minimum Limit + Home X" msgstr "Limita minima + poz 0 X" -#: src/emc/usr_intf/stepconf/stepconf.py:164 +#: src/emc/usr_intf/stepconf/stepconf.py:201 msgid "Minimum Limit + Home Y" msgstr "Limita minima + poz 0 Y" -#: src/emc/usr_intf/stepconf/stepconf.py:165 +#: src/emc/usr_intf/stepconf/stepconf.py:202 msgid "Minimum Limit + Home Z" msgstr "Limita minima + poz 0 Z" -#: src/emc/usr_intf/stepconf/stepconf.py:165 +#: src/emc/usr_intf/stepconf/stepconf.py:202 msgid "Minimum Limit + Home A" msgstr "Limita minima + poz 0 A" -#: src/emc/usr_intf/stepconf/stepconf.py:166 +#: src/emc/usr_intf/stepconf/stepconf.py:203 msgid "Maximum Limit + Home X" msgstr "Limita maxima + poz 0 X" -#: src/emc/usr_intf/stepconf/stepconf.py:166 +#: src/emc/usr_intf/stepconf/stepconf.py:203 msgid "Maximum Limit + Home Y" msgstr "Limita maxima + poz 0 Y" -#: src/emc/usr_intf/stepconf/stepconf.py:167 +#: src/emc/usr_intf/stepconf/stepconf.py:204 msgid "Maximum Limit + Home Z" msgstr "Limita maxima + poz 0 Z" -#: src/emc/usr_intf/stepconf/stepconf.py:167 +#: src/emc/usr_intf/stepconf/stepconf.py:204 msgid "Maximum Limit + Home A" msgstr "Limita maxima + poz 0 A" -#: src/emc/usr_intf/stepconf/stepconf.py:168 +#: src/emc/usr_intf/stepconf/stepconf.py:205 msgid "Both Limit + Home X" msgstr "Ambele limite + poz 0 X" -#: src/emc/usr_intf/stepconf/stepconf.py:168 +#: src/emc/usr_intf/stepconf/stepconf.py:205 msgid "Both Limit + Home Y" msgstr "Ambele limite + poz 0 Y" -#: src/emc/usr_intf/stepconf/stepconf.py:169 +#: src/emc/usr_intf/stepconf/stepconf.py:206 msgid "Both Limit + Home Z" msgstr "Ambele limite + poz 0 Z" -#: src/emc/usr_intf/stepconf/stepconf.py:169 +#: src/emc/usr_intf/stepconf/stepconf.py:206 msgid "Both Limit + Home A" msgstr "Ambele limite + poz 0 A" -#: src/emc/usr_intf/stepconf/stepconf.py:170 +#: src/emc/usr_intf/stepconf/stepconf.py:207 msgid "Minimum Limit X" msgstr "Limita min X" -#: src/emc/usr_intf/stepconf/stepconf.py:170 +#: src/emc/usr_intf/stepconf/stepconf.py:207 msgid "Minimum Limit Y" msgstr "Limita min Y" -#: src/emc/usr_intf/stepconf/stepconf.py:171 +#: src/emc/usr_intf/stepconf/stepconf.py:208 msgid "Minimum Limit Z" msgstr "Limita min Z" -#: src/emc/usr_intf/stepconf/stepconf.py:171 +#: src/emc/usr_intf/stepconf/stepconf.py:208 msgid "Minimum Limit A" msgstr "Limita min A" -#: src/emc/usr_intf/stepconf/stepconf.py:172 +#: src/emc/usr_intf/stepconf/stepconf.py:209 msgid "Maximum Limit X" msgstr "Limita max X" -#: src/emc/usr_intf/stepconf/stepconf.py:172 +#: src/emc/usr_intf/stepconf/stepconf.py:209 msgid "Maximum Limit Y" msgstr "Limita max Y" -#: src/emc/usr_intf/stepconf/stepconf.py:173 +#: src/emc/usr_intf/stepconf/stepconf.py:210 msgid "Maximum Limit Z" msgstr "Limita max Z" -#: src/emc/usr_intf/stepconf/stepconf.py:173 +#: src/emc/usr_intf/stepconf/stepconf.py:210 msgid "Maximum Limit A" msgstr "Limita max A" -#: src/emc/usr_intf/stepconf/stepconf.py:174 +#: src/emc/usr_intf/stepconf/stepconf.py:211 msgid "Both Limit X" msgstr "Ambele limite X" -#: src/emc/usr_intf/stepconf/stepconf.py:174 +#: src/emc/usr_intf/stepconf/stepconf.py:211 msgid "Both Limit Y" msgstr "Ambele limite Y" -#: src/emc/usr_intf/stepconf/stepconf.py:175 +#: src/emc/usr_intf/stepconf/stepconf.py:212 msgid "Both Limit Z" msgstr "Ambele limite Z" -#: src/emc/usr_intf/stepconf/stepconf.py:175 +#: src/emc/usr_intf/stepconf/stepconf.py:212 msgid "Both Limit A" msgstr "Ambele limite A" -#: src/emc/usr_intf/stepconf/stepconf.py:176 +#: src/emc/usr_intf/stepconf/stepconf.py:213 #, fuzzy msgid "All limits" msgstr "Toate fisierele" -#: src/emc/usr_intf/stepconf/stepconf.py:176 +#: src/emc/usr_intf/stepconf/stepconf.py:213 #, fuzzy msgid "All home" msgstr "poz.0" -#: src/emc/usr_intf/stepconf/stepconf.py:176 +#: src/emc/usr_intf/stepconf/stepconf.py:213 #, fuzzy msgid "All limits + homes" msgstr "Toate fisierele" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 msgid "Digital in 0" msgstr "Intrare digitala 0" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 msgid "Digital in 1" msgstr "Intrare digitala 1" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 msgid "Digital in 2" msgstr "Intrare digitala 2" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 msgid "Digital in 3" msgstr "Intrare digitala 3" -#: src/emc/usr_intf/stepconf/stepconf.py:203 +#: src/emc/usr_intf/stepconf/stepconf.py:218 +#, fuzzy +msgid "Forward" +msgstr "Freza inainte" + +#: src/emc/usr_intf/stepconf/stepconf.py:219 +msgid "Done" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:220 +msgid "" +"OK to replace existing custom ladder program?\n" +"Existing Custom.clp will be renamed custom_backup.clp.\n" +"Any existing file named -custom_backup.clp- will be lost. " +msgstr "" +"OK sa inlocuiesc program ladder existent?\n" +"Fisierul existent Custom.clp va fi redenumit custom_backup.clp.\n" +"Daca exista deja un fisier -custom_backup.clp- acesta va fi pierdut. " + +#: src/emc/usr_intf/stepconf/stepconf.py:221 +#: src/emc/usr_intf/pncconf/pncconf.py:8163 +msgid "" +"You edited a ladder program and have selected a different program to copy to " +"your configuration file.\n" +"The edited program will be lost.\n" +"\n" +"Are you sure? " +msgstr "" +"Ati editat un program ladder, si ati ales un alt program pentru copiere " +"catre fisierul Dvs. de configurare.\n" +"Programul editat se va pierde.\n" +"\n" +"Sunteti sigur? " + +#: src/emc/usr_intf/stepconf/stepconf.py:222 +msgid "" +"You need to designate an E-stop input pin in the Parallel Port Setup page " +"for this program." +msgstr "" +"Trebuie sa asignezi un pin de intrare pentru E-stop la pagina de setare a " +"portului paralel, pentru acest program." + +#: src/emc/usr_intf/stepconf/stepconf.py:223 +msgid "" +"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" +"Existing custompanel.xml and custom_postgui.hal will be renamed " +"custompanel_backup.xml and postgui_backup.hal.\n" +"Any existing file named custompanel_backup.xml and custom_postgui.hal will " +"be lost. " +msgstr "" +"Se pot inlocui fisierele pyvcp si custom_postgui.hal existente ?\n" +"Fisierele existente custompanel.xml si custom_postgui.hal vor fi redenumite " +"custompanel_backup.xml si postgui_backup.hal.\n" +"Fisiere existente numite custompanel_backup.xml si custom_postgui.hal vor fi " +"suprascrise. " + +#: src/emc/usr_intf/stepconf/stepconf.py:224 +msgid "Quit Stepconf and discard changes?" +msgstr "Paraseste Stepconf si sterge modificari?" + +#: src/emc/usr_intf/stepconf/stepconf.py:225 +msgid "" +"The configuration has been built and saved.\n" +"Do you want to quit?" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:226 +msgid "" +"You are using a simulated-realtime version of Machinekit, so testing / " +"tuning of hardware is unavailable." +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:227 +#, python-format +msgid "" +"You are using a realtime version of Machinekit but didn't load a realtime " +"kernel so testing / tuning of hardware is unavailable.\n" +"This is possibly because you updated the OS and it doesn't automatically " +"load the RTAI kernel anymore.\n" +"You are using the %(actual)s kernel.\n" +"You need to use kernel:" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:246 msgid "my-mill" msgstr "freza-mea" -#: src/emc/usr_intf/stepconf/stepconf.py:215 -#: src/emc/usr_intf/stepconf/stepconf.py:217 -#: src/emc/usr_intf/pncconf/pncconf.py:983 -#: src/emc/usr_intf/pncconf/pncconf.py:985 -msgid "Enter Address" -msgstr "Introdu adresa" - -#: src/emc/usr_intf/stepconf/stepconf.py:375 +#: src/emc/usr_intf/stepconf/stepconf.py:585 #, python-format msgid "File %r was modified since it was written by stepconf" msgstr "Fisierul %r a fost modificat decand a fost generat de stepconf" -#: src/emc/usr_intf/stepconf/stepconf.py:378 -msgid "" -"Saving this configuration file will discard configuration changes made " -"outside stepconf." -msgstr "" -"Salvarea aceste configuratii va supascrie orice modificari facute in afara " -"de stepconf." +#: src/emc/usr_intf/stepconf/stepconf.py:588 +msgid "" +"Saving this configuration file will discard configuration changes made " +"outside stepconf." +msgstr "" +"Salvarea aceste configuratii va supascrie orice modificari facute in afara " +"de stepconf." + +#: src/emc/usr_intf/stepconf/stepconf.py:603 +#: src/emc/usr_intf/pncconf/pncconf.py:1318 +#, fuzzy +msgid "Continue? " +msgstr "continuu" + +#: src/emc/usr_intf/stepconf/stepconf.py:604 +#: src/emc/usr_intf/pncconf/pncconf.py:1319 +msgid "yY" +msgstr "yY" + +#: src/emc/usr_intf/stepconf/stepconf.py:689 +#: src/emc/usr_intf/pncconf/pncconf.py:3591 +#, python-format +msgid "launch %s" +msgstr "lanseaza %s" + +#: src/emc/usr_intf/stepconf/stepconf.py:693 +#, fuzzy +msgid "Desktop Launcher for Machinekit config made by Stepconf" +msgstr "Dekstop Launcher pentru EMC creat de Stepconf" + +#: src/emc/usr_intf/stepconf/stepconf.py:860 +#: src/emc/usr_intf/stepconf/pages.py:145 +msgid "Other" +msgstr "Altele" + +#: src/emc/usr_intf/stepconf/stepconf.py:1295 +#: src/emc/usr_intf/pncconf/pncconf.py:9302 +#, fuzzy, python-format +msgid "%s Axis Test" +msgstr "Ofset axa" + +#: src/emc/usr_intf/stepconf/stepconf.py:1298 +#: src/emc/usr_intf/stepconf/pages.py:617 +msgid "deg / s" +msgstr "grade / s" + +#: src/emc/usr_intf/stepconf/stepconf.py:1299 +#: src/emc/usr_intf/stepconf/pages.py:618 +#, fuzzy +msgid "deg / s²" +msgstr "grade / s²" + +#: src/emc/usr_intf/stepconf/stepconf.py:1300 +#: src/emc/usr_intf/stepconf/pages.py:619 +msgid "deg" +msgstr "grade" + +#: src/emc/usr_intf/stepconf/stepconf.py:1312 +#: src/emc/usr_intf/stepconf/pages.py:623 +#: src/emc/usr_intf/stepconf/axisx.glade:629 +#: src/emc/usr_intf/stepconf/axisy.glade:615 +#: src/emc/usr_intf/stepconf/axisz.glade:615 +#: src/emc/usr_intf/stepconf/axisa.glade:629 +#: src/emc/usr_intf/pncconf/pncconf.glade:64717 +msgid "mm / s" +msgstr "mm / s" + +#: src/emc/usr_intf/stepconf/stepconf.py:1313 +#: src/emc/usr_intf/stepconf/pages.py:624 +#: src/emc/usr_intf/stepconf/axisx.glade:645 +#: src/emc/usr_intf/stepconf/axisy.glade:631 +#: src/emc/usr_intf/stepconf/axisz.glade:631 +#: src/emc/usr_intf/stepconf/axisa.glade:645 +#: src/emc/usr_intf/pncconf/pncconf.glade:64732 +msgid "mm / s²" +msgstr "mm / s²" + +#: src/emc/usr_intf/stepconf/stepconf.py:1326 +#: src/emc/usr_intf/stepconf/pages.py:629 +msgid "in / s" +msgstr "inch / s" + +#: src/emc/usr_intf/stepconf/stepconf.py:1327 +#: src/emc/usr_intf/stepconf/pages.py:630 +#, fuzzy +msgid "in / s²" +msgstr "inch / s²" + +#: src/emc/usr_intf/stepconf/pages.py:189 +#, fuzzy +msgid "Machinekit 'stepconf' configuration files" +msgstr "Selector configuratii EMC2" + +#: src/emc/usr_intf/stepconf/pages.py:190 +#: src/emc/usr_intf/pncconf/pncconf.py:4257 +#, fuzzy +msgid "Modify Existing Configuration" +msgstr "Configuratiile mele" + +#: src/emc/usr_intf/stepconf/pages.py:616 +msgid "degree / rev" +msgstr "grade / tura" + +#: src/emc/usr_intf/stepconf/pages.py:620 +msgid "Steps / deg" +msgstr "Pasi / grad" + +#: src/emc/usr_intf/stepconf/pages.py:622 +#: src/emc/usr_intf/stepconf/axisx.glade:613 +#: src/emc/usr_intf/stepconf/axisy.glade:599 +#: src/emc/usr_intf/stepconf/axisz.glade:599 +#: src/emc/usr_intf/stepconf/axisa.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / rev" +msgstr "mm / tura" + +#: src/emc/usr_intf/stepconf/pages.py:626 +#: src/emc/usr_intf/stepconf/axisx.glade:15 +#: src/emc/usr_intf/stepconf/axisy.glade:15 +#: src/emc/usr_intf/stepconf/axisz.glade:15 +#: src/emc/usr_intf/stepconf/axisa.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Steps / mm" +msgstr "Pasi / mm" -#: src/emc/usr_intf/stepconf/stepconf.py:393 -#: src/emc/usr_intf/pncconf/pncconf.py:1356 -#, fuzzy -msgid "Continue? " -msgstr "continuu" +#: src/emc/usr_intf/stepconf/pages.py:628 +msgid "rev / in" +msgstr "ture / inch" -#: src/emc/usr_intf/stepconf/stepconf.py:394 -#: src/emc/usr_intf/pncconf/pncconf.py:1357 -msgid "yY" -msgstr "yY" +#: src/emc/usr_intf/stepconf/pages.py:632 +msgid "Steps / in" +msgstr "Pasi / inch" -#: src/emc/usr_intf/stepconf/stepconf.py:446 -#: src/emc/usr_intf/stepconf/stepconf.py:786 -#, python-format -msgid "# Generated by stepconf at %s" +#: src/emc/usr_intf/stepconf/build_INI.py:45 +#: src/emc/usr_intf/stepconf/build_HAL.py:41 +#, fuzzy, python-format +msgid "# Generated by stepconf 1.1 at %s" msgstr "# Generat de stepconf la %s" -#: src/emc/usr_intf/stepconf/stepconf.py:447 -#: src/emc/usr_intf/stepconf/stepconf.py:787 -#: src/emc/usr_intf/pncconf/pncconf.py:1366 -#: src/emc/usr_intf/pncconf/pncconf.py:2369 +#: src/emc/usr_intf/stepconf/build_INI.py:46 +#: src/emc/usr_intf/stepconf/build_HAL.py:42 +#: src/emc/usr_intf/pncconf/pncconf.py:1328 +#: src/emc/usr_intf/pncconf/pncconf.py:2422 msgid "# If you make changes to this file, they will be" msgstr "# Daca faceti modificari pe acest fisier, ele vor fi" -#: src/emc/usr_intf/stepconf/stepconf.py:448 -#: src/emc/usr_intf/stepconf/stepconf.py:788 +#: src/emc/usr_intf/stepconf/build_INI.py:47 +#: src/emc/usr_intf/stepconf/build_HAL.py:43 msgid "# overwritten when you run stepconf again" msgstr "# suprascrise cand rulati stepconf din nou" -#: src/emc/usr_intf/stepconf/stepconf.py:516 +#: src/emc/usr_intf/stepconf/build_INI.py:126 #, fuzzy msgid "# add halui MDI commands here (max 64) " msgstr "# adauga comenzi MDI aici (max 10)" -#: src/emc/usr_intf/stepconf/stepconf.py:991 -#: src/emc/usr_intf/pncconf/pncconf.py:2991 +#: src/emc/usr_intf/stepconf/build_HAL.py:275 +#: src/emc/usr_intf/pncconf/pncconf.py:3131 msgid "# **** Setup for external estop ladder program -START ****" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:998 -#: src/emc/usr_intf/pncconf/pncconf.py:2998 +#: src/emc/usr_intf/stepconf/build_HAL.py:282 +#: src/emc/usr_intf/pncconf/pncconf.py:3138 msgid "# **** Setup for external estop ladder program -END ****" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1018 -#: src/emc/usr_intf/pncconf/pncconf.py:3025 +#: src/emc/usr_intf/stepconf/build_HAL.py:302 +#: src/emc/usr_intf/pncconf/pncconf.py:3165 msgid "" "# Load Classicladder with modbus master included (GUI must run for Modbus)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1021 -#: src/emc/usr_intf/pncconf/pncconf.py:3030 +#: src/emc/usr_intf/stepconf/build_HAL.py:305 +#: src/emc/usr_intf/pncconf/pncconf.py:3170 msgid "# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1031 -#: src/emc/usr_intf/pncconf/pncconf.py:3112 +#: src/emc/usr_intf/stepconf/build_HAL.py:315 +#: src/emc/usr_intf/pncconf/pncconf.py:3252 msgid "Include your PyVCP panel here.\n" msgstr "Include panou PyVCP aici.\n" -#: src/emc/usr_intf/stepconf/stepconf.py:1040 -#: src/emc/usr_intf/stepconf/stepconf.py:1087 +#: src/emc/usr_intf/stepconf/build_HAL.py:324 +#: src/emc/usr_intf/stepconf/build_HAL.py:370 msgid "# Include your customized HAL commands here" msgstr "# Indlude comenzi HAL customizate aici" -#: src/emc/usr_intf/stepconf/stepconf.py:1041 +#: src/emc/usr_intf/stepconf/build_HAL.py:325 msgid "" "# The commands in this file are run after the AXIS GUI (including PyVCP " "panel) starts" @@ -6347,262 +8673,264 @@ msgstr "" "# Comenzile din acest fisier sunt executate dupa ce AXIS (inclusiv PyVCP)\n" "# a pornit" -#: src/emc/usr_intf/stepconf/stepconf.py:1045 -#: src/emc/usr_intf/pncconf/pncconf.py:3140 +#: src/emc/usr_intf/stepconf/build_HAL.py:328 +#: src/emc/usr_intf/pncconf/pncconf.py:3280 msgid "# **** Setup of spindle speed display using pyvcp -START ****" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1047 +#: src/emc/usr_intf/stepconf/build_HAL.py:330 msgid "# **** Use ACTUAL spindle velocity from spindle encoder" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1048 -msgid "# **** spindle-velocity bounces around so we filter it with lowpass" +#: src/emc/usr_intf/stepconf/build_HAL.py:331 +msgid "" +"# **** spindle-velocity-feedback-rps bounces around so we filter it with " +"lowpass" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1049 +#: src/emc/usr_intf/stepconf/build_HAL.py:332 msgid "" -"# **** spindle-velocity is signed so we use absolute component to remove sign" +"# **** spindle-velocity-feedback-rps is signed so we use absolute component " +"to remove sign" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1050 +#: src/emc/usr_intf/stepconf/build_HAL.py:333 msgid "# **** ACTUAL velocity is in RPS not RPM so we scale it." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1059 +#: src/emc/usr_intf/stepconf/build_HAL.py:342 msgid "# **** set up spindle at speed indicator ****" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1072 +#: src/emc/usr_intf/stepconf/build_HAL.py:355 msgid "" "# **** Use COMMANDED spindle velocity from LinuxCNC because no spindle " "encoder was specified" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1073 -msgid "" -"# **** COMANDED velocity is signed so we use absolute component (abs.0) to " -"remove sign" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.py:1088 +#: src/emc/usr_intf/stepconf/build_HAL.py:371 msgid "# This file will not be overwritten when you run stepconf again" msgstr "# Acest fisier nu va fi suprascris cand rulati stepconf din nou" -#: src/emc/usr_intf/stepconf/stepconf.py:1095 -#, python-format -msgid "Generated by stepconf at %s" -msgstr "Generat de stepconf la %s" +#: src/emc/usr_intf/stepconf/build_HAL.py:412 +msgid "# This file sets up simulated limits/home/spindle encoder hardware." +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1166 -#: src/emc/usr_intf/pncconf/pncconf.py:3451 -#, python-format -msgid "launch %s" -msgstr "lanseaza %s" +#: src/emc/usr_intf/stepconf/build_HAL.py:413 +msgid "# This is a generated file do not edit." +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1170 -#, fuzzy -msgid "Desktop Launcher for LinuxCNC config made by Stepconf" -msgstr "Dekstop Launcher pentru EMC creat de Stepconf" +#: src/emc/usr_intf/stepconf/main_page.glade:35 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Acceleration:" +msgstr "Accelerare" -#: src/emc/usr_intf/stepconf/stepconf.py:1196 -#: src/emc/usr_intf/pncconf/pncconf.py:3700 -#, fuzzy, python-format -msgid "%s Axis Configuration" -msgstr "Configurare HAL" +#: src/emc/usr_intf/stepconf/main_page.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Jog:" +msgstr "Miscare:" -#: src/emc/usr_intf/stepconf/stepconf.py:1238 -#: src/emc/usr_intf/stepconf/stepconf.py:1337 -msgid "Other" -msgstr "Altele" +#: src/emc/usr_intf/stepconf/main_page.glade:63 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Test Area:" +msgstr "Zona test:" -#: src/emc/usr_intf/stepconf/stepconf.py:1249 -msgid "Quit Stepconf and discard changes?" -msgstr "Paraseste Stepconf si sterge modificari?" +#: src/emc/usr_intf/stepconf/main_page.glade:97 +msgid "mm/s^2" +msgstr "mm/s^2" -#: src/emc/usr_intf/stepconf/stepconf.py:1280 -msgid "" -"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " -"of hardware is unavailable." -msgstr "" +#: src/emc/usr_intf/stepconf/main_page.glade:138 +#, fuzzy +msgid "mm/s" +msgstr "mm" -#: src/emc/usr_intf/stepconf/stepconf.py:1283 -msgid "" -"You are using a realtime version of LinuxCNC but didn't load a realtime " -"kernel so testing / tuning of hardware is unavailable.\n" -"This is possibly because you updated the OS and it doesn't automatically " -"load the RTAI kernel anymore.\n" +#: src/emc/usr_intf/stepconf/main_page.glade:400 +msgid "±" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1298 +#: src/emc/usr_intf/stepconf/main_page.glade:423 #, fuzzy -msgid "LinuxCNC 'stepconf' configuration files" -msgstr "Selector configuratii EMC2" +msgid "Stepconf -Stepper Configuration Wizard" +msgstr "Configuratii model" -#: src/emc/usr_intf/stepconf/stepconf.py:1299 -#: src/emc/usr_intf/pncconf/pncconf.py:4094 +#: src/emc/usr_intf/stepconf/main_page.glade:503 +#: src/emc/usr_intf/pncconf/pncconf.glade:2054 +#: src/emc/usr_intf/pncconf/pncconf.glade:2067 +#: src/emc/usr_intf/pncconf/pncconf.glade:2080 +#: src/emc/usr_intf/pncconf/pncconf.glade:2093 +#: src/emc/usr_intf/pncconf/pncconf.glade:2106 +#: src/emc/usr_intf/pncconf/pncconf.glade:2119 +#: src/emc/usr_intf/pncconf/pncconf.glade:2132 +#: src/emc/usr_intf/pncconf/pncconf.glade:2145 +#: src/emc/usr_intf/pncconf/pncconf.glade:2156 +#: src/emc/usr_intf/pncconf/pncconf.glade:2169 +#: src/emc/usr_intf/pncconf/pncconf.glade:2182 +#: src/emc/usr_intf/pncconf/pncconf.glade:2528 +#: src/emc/usr_intf/pncconf/pncconf.glade:2541 +#: src/emc/usr_intf/pncconf/pncconf.glade:2554 +#: src/emc/usr_intf/pncconf/pncconf.glade:8104 +#: src/emc/usr_intf/pncconf/pncconf.glade:8139 +#: src/emc/usr_intf/pncconf/pncconf.glade:63377 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:1342 +#: src/emc/usr_intf/gscreen/gscreen.glade:1360 +#: src/emc/usr_intf/gscreen/gscreen.glade:1378 #, fuzzy -msgid "Modify Existing Configuration" -msgstr "Configuratiile mele" +msgid "label" +msgstr "label42" -#: src/emc/usr_intf/stepconf/stepconf.py:1439 +#: src/emc/usr_intf/stepconf/main_page.glade:605 +#, fuzzy msgid "" -"You need to designate an E-stop input pin in the Parallel Port Setup page " -"for this program." +"This program creates configuration files (.ini and .hal) for \"step and " +"direction\" milling machines and lathes connected to the PC parallel port.\n" +"\n" +"Stepconf requires a minimum 800 X 600 display resolution." msgstr "" -"Trebuie sa asignezi un pin de intrare pentru E-stop la pagina de setare a " -"portului paralel, pentru acest program." +"Acest program creza fisiere de configurare (.ini si .hal) pentru freze \"pas " +"and directie\" conectate la portul paralel al PCului." -#: src/emc/usr_intf/stepconf/stepconf.py:1452 -msgid "" -"OK to replace existing custom ladder program?\n" -"Existing Custom.clp will be renamed custom_backup.clp.\n" -"Any existing file named -custom_backup.clp- will be lost. " +#: src/emc/usr_intf/stepconf/main_page.glade:628 +#: src/emc/usr_intf/pncconf/pncconf.glade:28799 +#: src/emc/usr_intf/pncconf/pncconf.glade:35720 +#: src/emc/usr_intf/pncconf/pncconf.glade:42643 +#: src/emc/usr_intf/pncconf/pncconf.glade:49566 +#: src/emc/usr_intf/pncconf/pncconf.glade:56489 +msgid "page 1" msgstr "" -"OK sa inlocuiesc program ladder existent?\n" -"Fisierul existent Custom.clp va fi redenumit custom_backup.clp.\n" -"Daca exista deja un fisier -custom_backup.clp- acesta va fi pierdut. " -#: src/emc/usr_intf/stepconf/stepconf.py:1457 -#: src/emc/usr_intf/pncconf/pncconf.py:7815 -msgid "" -"You edited a ladder program and have selected a different program to copy to " -"your configuration file.\n" -"The edited program will be lost.\n" -"\n" -"Are you sure? " +#: src/emc/usr_intf/stepconf/base.glade:18 +msgid "XYZ" msgstr "" -"Ati editat un program ladder, si ati ales un alt program pentru copiere " -"catre fisierul Dvs. de configurare.\n" -"Programul editat se va pierde.\n" -"\n" -"Sunteti sigur? " -#: src/emc/usr_intf/stepconf/stepconf.py:1471 -msgid "" -"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" -"Existing custompanel.xml and custom_postgui.hal will be renamed " -"custompanel_backup.xml and postgui_backup.hal.\n" -"Any existing file named custompanel_backup.xml and custom_postgui.hal will " -"be lost. " +#: src/emc/usr_intf/stepconf/base.glade:21 +msgid "XYZA" msgstr "" -"Se pot inlocui fisierele pyvcp si custom_postgui.hal existente ?\n" -"Fisierele existente custompanel.xml si custom_postgui.hal vor fi redenumite " -"custompanel_backup.xml si postgui_backup.hal.\n" -"Fisiere existente numite custompanel_backup.xml si custom_postgui.hal vor fi " -"suprascrise. " -#: src/emc/usr_intf/stepconf/stepconf.py:1676 -msgid "degree / rev" -msgstr "grade / tura" +#: src/emc/usr_intf/stepconf/base.glade:24 +#, fuzzy +msgid "XZ (Lathe)" +msgstr "" +"XYZ\n" +"XYZA\n" +"XZ (Strung)" -#: src/emc/usr_intf/stepconf/stepconf.py:1677 -#: src/emc/usr_intf/stepconf/stepconf.py:2205 -msgid "deg / s" -msgstr "grade / s" +#: src/emc/usr_intf/stepconf/base.glade:79 +msgid "Step _Time:" +msgstr "_Timp pas:" -#: src/emc/usr_intf/stepconf/stepconf.py:1678 -#: src/emc/usr_intf/stepconf/stepconf.py:2206 -#, fuzzy -msgid "deg / s²" -msgstr "grade / s²" +#: src/emc/usr_intf/stepconf/base.glade:113 +#: src/emc/usr_intf/stepconf/base.glade:165 +#: src/emc/usr_intf/stepconf/base.glade:219 +#: src/emc/usr_intf/stepconf/base.glade:271 +#: src/emc/usr_intf/stepconf/base.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:443 +#: src/emc/usr_intf/pncconf/pncconf.glade:8226 +msgid "ns" +msgstr "ns" -#: src/emc/usr_intf/stepconf/stepconf.py:1679 -#: src/emc/usr_intf/stepconf/stepconf.py:2207 -msgid "deg" -msgstr "grade" +#: src/emc/usr_intf/stepconf/base.glade:127 +#, fuzzy +msgid "Step _Space:" +msgstr "Spatiu simplu" -#: src/emc/usr_intf/stepconf/stepconf.py:1680 -msgid "Steps / deg" -msgstr "Pasi / grad" +#: src/emc/usr_intf/stepconf/base.glade:181 +msgid "Direction _Hold:" +msgstr "_Hold directie:" -#: src/emc/usr_intf/stepconf/stepconf.py:1682 -#: src/emc/usr_intf/stepconf/stepconf.glade:3589 -#: src/emc/usr_intf/pncconf/pncconf.glade:66138 -#: src/emc/usr_intf/pncconf/pncconf.glade:66424 -msgid "mm / rev" -msgstr "mm / tura" +#: src/emc/usr_intf/stepconf/base.glade:235 +#, fuzzy +msgid "_Direction Setup:" +msgstr "Initializare imprimare" -#: src/emc/usr_intf/stepconf/stepconf.py:1683 -#: src/emc/usr_intf/stepconf/stepconf.py:2219 -#: src/emc/usr_intf/stepconf/stepconf.glade:3604 -#: src/emc/usr_intf/pncconf/pncconf.glade:57828 -msgid "mm / s" -msgstr "mm / s" +#: src/emc/usr_intf/stepconf/base.glade:338 +msgid "Driver Timing Settings" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1684 -#: src/emc/usr_intf/stepconf/stepconf.py:2220 -#: src/emc/usr_intf/stepconf/stepconf.glade:3619 -#: src/emc/usr_intf/pncconf/pncconf.glade:57813 -msgid "mm / s²" -msgstr "mm / s²" +#: src/emc/usr_intf/stepconf/base.glade:351 +msgid "" +"_Test Base\n" +"Period Jitter " +msgstr "" +"Baza _Testare\n" +"Period Jitter " -#: src/emc/usr_intf/stepconf/stepconf.py:1686 -#: src/emc/usr_intf/stepconf/stepconf.glade:3075 -#: src/emc/usr_intf/pncconf/pncconf.glade:66888 -msgid "Steps / mm" -msgstr "Pasi / mm" +#: src/emc/usr_intf/stepconf/base.glade:372 +#, fuzzy +msgid "Machine _Name:" +msgstr "Masina pornita" -#: src/emc/usr_intf/stepconf/stepconf.py:1688 -msgid "rev / in" -msgstr "ture / inch" +#: src/emc/usr_intf/stepconf/base.glade:386 +#, fuzzy +msgid "_Axis configuration:" +msgstr "Configurare HAL" -#: src/emc/usr_intf/stepconf/stepconf.py:1689 -#: src/emc/usr_intf/stepconf/stepconf.py:2233 -msgid "in / s" -msgstr "inch / s" +#: src/emc/usr_intf/stepconf/base.glade:401 +#, fuzzy +msgid "Reset Default machine _units:" +msgstr "Masina pornita" -#: src/emc/usr_intf/stepconf/stepconf.py:1690 -#: src/emc/usr_intf/stepconf/stepconf.py:2234 +#: src/emc/usr_intf/stepconf/base.glade:416 +#: src/emc/usr_intf/pncconf/pncconf.glade:245 #, fuzzy -msgid "in / s²" -msgstr "inch / s²" +msgid "Configuration directory:" +msgstr "Selector configuratii EMC2" -#: src/emc/usr_intf/stepconf/stepconf.py:1692 -msgid "Steps / in" -msgstr "Pasi / inch" +#: src/emc/usr_intf/stepconf/base.glade:430 +msgid "D_river type:" +msgstr "Tip D_river:" -#: src/emc/usr_intf/stepconf/stepconf.py:2202 -#: src/emc/usr_intf/pncconf/pncconf.py:8893 -#, fuzzy, python-format -msgid "%s Axis Test" -msgstr "Ofset axa" +#: src/emc/usr_intf/stepconf/base.glade:545 +msgid "" +"Driver characteristics: (Multiply by 1000 for times specified in µs or " +"microseconds)" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:8 -#: src/emc/usr_intf/stepconf/stepconf.glade:21 -#, fuzzy -msgid "LinuxCNC Stepper Mill Configuration" -msgstr "Configuratii model" +#: src/emc/usr_intf/stepconf/base.glade:573 +msgid "Base Period Maximum _Jitter:" +msgstr "_Jitter maxim perioada baza" + +#: src/emc/usr_intf/stepconf/base.glade:630 +msgid "One Parport" +msgstr "" + +#: src/emc/usr_intf/stepconf/base.glade:646 +msgid "Two Parports" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:22 +#: src/emc/usr_intf/stepconf/base.glade:663 #, fuzzy -msgid "" -"This program creates configuration files (.ini and .hal) for \"step and " -"direction\" milling machines and lathes connected to the PC parallel port.\n" -"\n" -"Stepconf requires a minimum 800 X 600 display resolution.\n" -"You may need to collapse the 'Driver Timing Settings' and \n" -"Parallel Port Settings' expanders." +msgid "Three Parports" +msgstr "Adresa port paralel 3:" + +#: src/emc/usr_intf/stepconf/base.glade:698 +msgid "Min Base Period:" +msgstr "Perioada Base minima:" + +#: src/emc/usr_intf/stepconf/base.glade:735 +msgid "Max step rate:" +msgstr "Rata maxima pulsuri:" + +#: src/emc/usr_intf/stepconf/base.glade:870 +msgid "MM" msgstr "" -"Acest program creza fisiere de configurare (.ini si .hal) pentru freze \"pas " -"and directie\" conectate la portul paralel al PCului." -#: src/emc/usr_intf/stepconf/stepconf.glade:51 +#: src/emc/usr_intf/stepconf/start.glade:11 #, fuzzy msgid "Create a _new configuration" msgstr "Configuratii model" -#: src/emc/usr_intf/stepconf/stepconf.glade:69 -#: src/emc/usr_intf/pncconf/pncconf.glade:70 +#: src/emc/usr_intf/stepconf/start.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:130 msgid "Modify a configuration already created with this program" msgstr "Modifica o configuratie deja creata cu acest program" -#: src/emc/usr_intf/stepconf/stepconf.glade:87 -#: src/emc/usr_intf/pncconf/pncconf.glade:88 +#: src/emc/usr_intf/stepconf/start.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:118 msgid "Do you wish to:" msgstr "Doriti sa:" -#: src/emc/usr_intf/stepconf/stepconf.glade:99 +#: src/emc/usr_intf/stepconf/start.glade:61 #: src/emc/usr_intf/pncconf/pncconf.glade:100 msgid "" "If you have made modifications to this configuration outside this program, " @@ -6611,210 +8939,311 @@ msgstr "" "Daca ati facut modificari la aceasta configuratie, aceastea vor fi pierdute " "cand selectati \"Modifica o configuratie\"" -#: src/emc/usr_intf/stepconf/stepconf.glade:116 -msgid "Create a desktop _shortcut (symlink) to configuration files." -msgstr "Creaza desktop shortcut (link simbolic) catre aceasta configuratie." +#: src/emc/usr_intf/stepconf/start.glade:76 +msgid "Create a desktop _shortcut (symlink) to configuration files." +msgstr "Creaza desktop shortcut (link simbolic) catre aceasta configuratie." + +#: src/emc/usr_intf/stepconf/start.glade:93 +msgid "Create a desktop _launcher to start LinuxCNC with this configuration." +msgstr "" +"Creaza desktop shortcut pentru a rula LinuxCNC cu aceasta configuratie." + +#: src/emc/usr_intf/stepconf/start.glade:124 +#, fuzzy +msgid "Create simulated hardware configuration." +msgstr "Configuratii model" + +#: src/emc/usr_intf/stepconf/pport1.glade:35 +msgid "Xylotex" +msgstr "Xylotex" + +#: src/emc/usr_intf/stepconf/pport1.glade:38 +msgid "TB6560 3 axes" +msgstr "" + +#: src/emc/usr_intf/stepconf/pport1.glade:41 +msgid "TB6560 4 axes" +msgstr "" + +#: src/emc/usr_intf/stepconf/pport1.glade:59 +#: src/emc/usr_intf/pncconf/pncconf.glade:62915 +msgid "Pin _1:" +msgstr "Pin _1:" + +#: src/emc/usr_intf/stepconf/pport1.glade:74 +#: src/emc/usr_intf/stepconf/pport2.glade:768 +#: src/emc/usr_intf/pncconf/pncconf.glade:61685 +#: src/emc/usr_intf/pncconf/pncconf.glade:62901 +msgid "Pin _2:" +msgstr "Pin _2:" + +#: src/emc/usr_intf/stepconf/pport1.glade:89 +#: src/emc/usr_intf/stepconf/pport2.glade:814 +#: src/emc/usr_intf/pncconf/pncconf.glade:61668 +#: src/emc/usr_intf/pncconf/pncconf.glade:62887 +msgid "Pin _3:" +msgstr "Pin _3:" + +#: src/emc/usr_intf/stepconf/pport1.glade:104 +#: src/emc/usr_intf/stepconf/pport2.glade:860 +#: src/emc/usr_intf/pncconf/pncconf.glade:61651 +#: src/emc/usr_intf/pncconf/pncconf.glade:62873 +msgid "Pin _4:" +msgstr "Pin _4:" + +#: src/emc/usr_intf/stepconf/pport1.glade:119 +#: src/emc/usr_intf/stepconf/pport2.glade:906 +#: src/emc/usr_intf/pncconf/pncconf.glade:61634 +#: src/emc/usr_intf/pncconf/pncconf.glade:62859 +msgid "Pin _5:" +msgstr "Pin _5:" + +#: src/emc/usr_intf/stepconf/pport1.glade:134 +#: src/emc/usr_intf/stepconf/pport2.glade:952 +#: src/emc/usr_intf/pncconf/pncconf.glade:61617 +#: src/emc/usr_intf/pncconf/pncconf.glade:62845 +msgid "Pin _6:" +msgstr "Pin _6:" + +#: src/emc/usr_intf/stepconf/pport1.glade:149 +#: src/emc/usr_intf/stepconf/pport2.glade:998 +#: src/emc/usr_intf/pncconf/pncconf.glade:61600 +#: src/emc/usr_intf/pncconf/pncconf.glade:62831 +msgid "Pin _7:" +msgstr "Pin _7:" + +#: src/emc/usr_intf/stepconf/pport1.glade:164 +#: src/emc/usr_intf/stepconf/pport2.glade:1044 +#: src/emc/usr_intf/pncconf/pncconf.glade:61583 +#: src/emc/usr_intf/pncconf/pncconf.glade:62817 +msgid "Pin _8:" +msgstr "Pin _8:" + +#: src/emc/usr_intf/stepconf/pport1.glade:179 +#: src/emc/usr_intf/stepconf/pport2.glade:1090 +#: src/emc/usr_intf/pncconf/pncconf.glade:61566 +#: src/emc/usr_intf/pncconf/pncconf.glade:62803 +msgid "Pin _9:" +msgstr "Pin _9:" + +#: src/emc/usr_intf/stepconf/pport1.glade:194 +#: src/emc/usr_intf/stepconf/pport2.glade:1137 +#: src/emc/usr_intf/pncconf/pncconf.glade:62789 +msgid "_Pin 14:" +msgstr "_Pin 14:" + +#: src/emc/usr_intf/stepconf/pport1.glade:209 +#: src/emc/usr_intf/stepconf/pport2.glade:1185 +#: src/emc/usr_intf/pncconf/pncconf.glade:62775 +msgid "P_in 16:" +msgstr "P_in 16:" + +#: src/emc/usr_intf/stepconf/pport1.glade:224 +#: src/emc/usr_intf/stepconf/pport2.glade:1233 +#: src/emc/usr_intf/pncconf/pncconf.glade:62761 +msgid "Pi_n 17:" +msgstr "Pi_n 17:" + +#: src/emc/usr_intf/stepconf/pport1.glade:470 +#: src/emc/usr_intf/stepconf/pport2.glade:692 +msgid "Outputs (PC to Mill):" +msgstr "Iesiri (PC catre freza)" + +#: src/emc/usr_intf/stepconf/pport1.glade:483 +#: src/emc/usr_intf/stepconf/pport2.glade:427 +#: src/emc/usr_intf/pncconf/pncconf.glade:61701 +msgid "Pin 1_0:" +msgstr "Pin 1_0:" -#: src/emc/usr_intf/stepconf/stepconf.glade:133 -msgid "Create a desktop _launcher to start LinuxCNC with this configuration." -msgstr "" -"Creaza desktop shortcut pentru a rula LinuxCNC cu aceasta configuratie." +#: src/emc/usr_intf/stepconf/pport1.glade:500 +#: src/emc/usr_intf/stepconf/pport2.glade:475 +#: src/emc/usr_intf/pncconf/pncconf.glade:61717 +msgid "Pin 1_1:" +msgstr "Pin 1_1:" -#: src/emc/usr_intf/stepconf/stepconf.glade:169 -#: src/emc/usr_intf/pncconf/pncconf.glade:175 -#, fuzzy -msgid "Basic machine information" -msgstr "Informatii versiune" +#: src/emc/usr_intf/stepconf/pport1.glade:517 +#: src/emc/usr_intf/stepconf/pport2.glade:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:61733 +msgid "Pin 1_2:" +msgstr "Pin 1_2:" -#: src/emc/usr_intf/stepconf/stepconf.glade:327 -msgid "Step _Time:" -msgstr "_Timp pas:" +#: src/emc/usr_intf/stepconf/pport1.glade:534 +#: src/emc/usr_intf/stepconf/pport2.glade:571 +#: src/emc/usr_intf/pncconf/pncconf.glade:61749 +msgid "Pin 1_3:" +msgstr "Pin 1_3:" -#: src/emc/usr_intf/stepconf/stepconf.glade:356 -#: src/emc/usr_intf/stepconf/stepconf.glade:402 -#: src/emc/usr_intf/stepconf/stepconf.glade:449 -#: src/emc/usr_intf/stepconf/stepconf.glade:494 -#: src/emc/usr_intf/stepconf/stepconf.glade:909 -#: src/emc/usr_intf/pncconf/pncconf.glade:458 -#: src/emc/usr_intf/pncconf/pncconf.glade:8256 -msgid "ns" -msgstr "ns" +#: src/emc/usr_intf/stepconf/pport1.glade:551 +#: src/emc/usr_intf/stepconf/pport2.glade:619 +#: src/emc/usr_intf/pncconf/pncconf.glade:61765 +msgid "Pin 1_5:" +msgstr "Pin 1_5:" -#: src/emc/usr_intf/stepconf/stepconf.glade:369 -#, fuzzy -msgid "Step _Space:" -msgstr "Spatiu simplu" +#: src/emc/usr_intf/stepconf/pport1.glade:590 +#: src/emc/usr_intf/stepconf/pport2.glade:16 +msgid "Inputs (Mill to PC):" +msgstr "Intrari (Freza catre PC):" -#: src/emc/usr_intf/stepconf/stepconf.glade:417 -msgid "Direction _Hold:" -msgstr "_Hold directie:" +#: src/emc/usr_intf/stepconf/pport1.glade:618 +#: src/emc/usr_intf/stepconf/pport1.glade:632 +#: src/emc/usr_intf/stepconf/pport2.glade:29 +#: src/emc/usr_intf/stepconf/pport2.glade:702 +#: src/emc/usr_intf/pncconf/pncconf.glade:62335 +#: src/emc/usr_intf/pncconf/pncconf.glade:62348 +msgid "Invert" +msgstr "Inverseaza" + +#: src/emc/usr_intf/stepconf/pport1.glade:1018 +msgid "Output pinout presets:" +msgstr "Presetari pinout iesire:" -#: src/emc/usr_intf/stepconf/stepconf.glade:464 +#: src/emc/usr_intf/stepconf/pport1.glade:1096 #, fuzzy -msgid "_Direction Setup:" -msgstr "Initializare imprimare" +msgid "Parport _Base Address:" +msgstr "Adresa port paralel 1:" -#: src/emc/usr_intf/stepconf/stepconf.glade:512 -msgid "Driver Timing Settings" -msgstr "" +#: src/emc/usr_intf/stepconf/pport1.glade:1132 +#, fuzzy +msgid "Preset" +msgstr "Reseteaza" -#: src/emc/usr_intf/stepconf/stepconf.glade:538 -msgid "First Parport _Base Address:" -msgstr "Adresa port paralel 1:" +#: src/emc/usr_intf/stepconf/pport2.glade:47 +#, fuzzy +msgid "Pin 2:" +msgstr "Pin _2:" -#: src/emc/usr_intf/stepconf/stepconf.glade:564 +#: src/emc/usr_intf/stepconf/pport2.glade:94 #, fuzzy -msgid " Out" -msgstr " " +msgid "Pin 3:" +msgstr "Pin _3:" -#: src/emc/usr_intf/stepconf/stepconf.glade:575 -#: src/emc/usr_intf/stepconf/stepconf.glade:591 -msgid "" -"Out\n" -"In" -msgstr "" +#: src/emc/usr_intf/stepconf/pport2.glade:141 +#, fuzzy +msgid "Pin 4:" +msgstr "Pin _4:" -#: src/emc/usr_intf/stepconf/stepconf.glade:633 -msgid "S_econd Parport Address:" -msgstr "Adresa port paralel 2:" +#: src/emc/usr_intf/stepconf/pport2.glade:188 +#, fuzzy +msgid "Pin 5:" +msgstr "Pin _5:" -#: src/emc/usr_intf/stepconf/stepconf.glade:650 -msgid "T_hird Parport Address:" -msgstr "Adresa port paralel 3:" +#: src/emc/usr_intf/stepconf/pport2.glade:235 +#, fuzzy +msgid "Pin 6:" +msgstr "Pin _6:" -#: src/emc/usr_intf/stepconf/stepconf.glade:667 +#: src/emc/usr_intf/stepconf/pport2.glade:282 #, fuzzy -msgid " Parallel Port Settings" -msgstr "Initializare imprimare" +msgid "Pin 7:" +msgstr "Pin _7:" -#: src/emc/usr_intf/stepconf/stepconf.glade:684 -msgid "" -"_Test Base\n" -"Period Jitter " -msgstr "" -"Baza _Testare\n" -"Period Jitter " +#: src/emc/usr_intf/stepconf/pport2.glade:329 +#, fuzzy +msgid "Pin 8:" +msgstr "Pin _8:" -#: src/emc/usr_intf/stepconf/stepconf.glade:703 +#: src/emc/usr_intf/stepconf/pport2.glade:376 #, fuzzy -msgid "Machine _Name:" -msgstr "Masina pornita" +msgid "Pin 9:" +msgstr "Pin _9:" -#: src/emc/usr_intf/stepconf/stepconf.glade:716 +#: src/emc/usr_intf/stepconf/pport2.glade:721 #, fuzzy -msgid "_Axis configuration:" -msgstr "Configurare HAL" +msgid "Pin _1: " +msgstr "Pin _1:" -#: src/emc/usr_intf/stepconf/stepconf.glade:730 +#: src/emc/usr_intf/stepconf/pport2.glade:1431 #, fuzzy -msgid "Machine _units:" -msgstr "Masina pornita" +msgid "Out" +msgstr "Decupare" -#: src/emc/usr_intf/stepconf/stepconf.glade:744 -#: src/emc/usr_intf/pncconf/pncconf.glade:246 +#: src/emc/usr_intf/stepconf/pport2.glade:1434 #, fuzzy -msgid "Configuration directory:" -msgstr "Selector configuratii EMC2" +msgid "In" +msgstr "Inverseaza" -#: src/emc/usr_intf/stepconf/stepconf.glade:757 -msgid "D_river type:" -msgstr "Tip D_river:" +#: src/emc/usr_intf/stepconf/spindle.glade:23 +#, fuzzy +msgid "Use spindle-at-speed:" +msgstr "Seteaza depasire viteza freza:" -#: src/emc/usr_intf/stepconf/stepconf.glade:785 -#: src/emc/usr_intf/pncconf/pncconf.glade:326 -msgid "" -"Inch\n" -"Millimeter" +#: src/emc/usr_intf/stepconf/spindle.glade:64 +msgid "Speed display filter gain:" msgstr "" -"Inch\n" -"Milimetri" -#: src/emc/usr_intf/stepconf/stepconf.glade:800 -#: src/emc/usr_intf/pncconf/pncconf.glade:291 -msgid "" -"XYZ\n" -"XYZA\n" -"XZ (Lathe)" -msgstr "" -"XYZ\n" -"XYZA\n" -"XZ (Strung)" +#: src/emc/usr_intf/stepconf/spindle.glade:99 +#, fuzzy +msgid "Calibration:" +msgstr "Calibrare..." -#: src/emc/usr_intf/stepconf/stepconf.glade:847 +#: src/emc/usr_intf/stepconf/spindle.glade:113 #, fuzzy -msgid "" -"Driver characteristics: (Multiply by 1000 for times specified in µs or " -"microseconds)\n" -" Additional signal conditioning or isolation such as optocouplers " -"and RC filters\n" -" can impose timing constraints of their own, in addition to those of " -"the driver." -msgstr "" -"Caracteristici driver: (Inmulteste cu 1000 pentru timpi specificati in µs " -"sau microsecunde)\n" -"\n" -"Alte conditii de semnale sau izolare cum ar fi optocuploare sau filtre RC " -"pot impune alte cerinte de timp, pe langa cele determinate de catre driver." +msgid "_Speed 1:" +msgstr "Viteza:" -#: src/emc/usr_intf/stepconf/stepconf.glade:875 -msgid "Base Period Maximum _Jitter:" -msgstr "_Jitter maxim perioada baza" +#: src/emc/usr_intf/stepconf/spindle.glade:129 +msgid "_PWM 1:" +msgstr "_PWM 1:" -#: src/emc/usr_intf/stepconf/stepconf.glade:924 -msgid "Max step rate:" -msgstr "Rata maxima pulsuri:" +#: src/emc/usr_intf/stepconf/spindle.glade:148 +#, fuzzy +msgid "S_peed 2:" +msgstr "Viteza:" -#: src/emc/usr_intf/stepconf/stepconf.glade:940 -msgid "Min Base Period:" -msgstr "Perioada Base minima:" +#: src/emc/usr_intf/stepconf/spindle.glade:164 +msgid "P_WM 2:" +msgstr "P_WM 2:" -#: src/emc/usr_intf/stepconf/stepconf.glade:956 -msgid "" -"_Onscreen prompt for\n" -"tool change" -msgstr "" -"Confirmare pe ecran pentru\n" -"schimbare scula" +#: src/emc/usr_intf/stepconf/spindle.glade:183 +msgid "PWM _Rate:" +msgstr "_Rata PWM:" -#: src/emc/usr_intf/stepconf/stepconf.glade:1015 -#, fuzzy -msgid "Advanced Configuration Options" -msgstr "Configuratii model" +#: src/emc/usr_intf/stepconf/spindle.glade:285 +msgid "_Cycles per revolution:" +msgstr "_Cicluri per tura:" + +#: src/emc/usr_intf/stepconf/spindle.glade:347 +msgid "Enter 0 Hz for \"PDM\" mode" +msgstr "Introduceti 0Hz pentru mod \"PDM\"" -#: src/emc/usr_intf/stepconf/stepconf.glade:1033 +#: src/emc/usr_intf/stepconf/spindle.glade:360 +msgid "Scale %" +msgstr "" + +#: src/emc/usr_intf/stepconf/options.glade:50 msgid "Include Halui user interface component" msgstr "Include interfata Halui" -#: src/emc/usr_intf/stepconf/stepconf.glade:1074 -#: src/emc/usr_intf/pncconf/pncconf.glade:6745 +#: src/emc/usr_intf/stepconf/options.glade:102 +#: src/emc/usr_intf/pncconf/pncconf.glade:6753 #, fuzzy msgid "Blank program" msgstr "Program" -#: src/emc/usr_intf/stepconf/stepconf.glade:1089 -#: src/emc/usr_intf/pncconf/pncconf.glade:6760 +#: src/emc/usr_intf/stepconf/options.glade:119 +#: src/emc/usr_intf/pncconf/pncconf.glade:6768 #, fuzzy msgid "Spindle speed display " msgstr "Afisaj viteza/pozitie scula" -#: src/emc/usr_intf/stepconf/stepconf.glade:1105 -#: src/emc/usr_intf/stepconf/stepconf.glade:1543 -#: src/emc/usr_intf/pncconf/pncconf.glade:6791 -#: src/emc/usr_intf/pncconf/pncconf.glade:7112 -#: src/emc/usr_intf/pncconf/pncconf.glade:59393 +#: src/emc/usr_intf/stepconf/options.glade:136 +#: src/emc/usr_intf/stepconf/options.glade:671 +#: src/emc/usr_intf/pncconf/pncconf.glade:6799 +#: src/emc/usr_intf/pncconf/pncconf.glade:7120 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Existing custom program" msgstr "Program existent" -#: src/emc/usr_intf/stepconf/stepconf.glade:1120 -#: src/emc/usr_intf/stepconf/stepconf.glade:1559 -#: src/emc/usr_intf/pncconf/pncconf.glade:6806 -#: src/emc/usr_intf/pncconf/pncconf.glade:59409 +#: src/emc/usr_intf/stepconf/options.glade:153 +#: src/emc/usr_intf/stepconf/options.glade:688 +#: src/emc/usr_intf/pncconf/pncconf.glade:6814 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Include connections to HAL" msgstr "Include conexiuni HAL" -#: src/emc/usr_intf/stepconf/stepconf.glade:1154 -#: src/emc/usr_intf/pncconf/pncconf.glade:6989 -#: src/emc/usr_intf/pncconf/pncconf.glade:7537 +#: src/emc/usr_intf/stepconf/options.glade:202 +#: src/emc/usr_intf/pncconf/pncconf.glade:6997 +#: src/emc/usr_intf/pncconf/pncconf.glade:7545 msgid "" "_Display\n" "sample\n" @@ -6824,66 +9253,66 @@ msgstr "" "panou\n" "implicit" -#: src/emc/usr_intf/stepconf/stepconf.glade:1188 -#: src/emc/usr_intf/pncconf/pncconf.glade:7048 +#: src/emc/usr_intf/stepconf/options.glade:243 +#: src/emc/usr_intf/pncconf/pncconf.glade:7056 msgid "Include custom PyVCP GUI panel" msgstr "Include panou PyVCP customizat" -#: src/emc/usr_intf/stepconf/stepconf.glade:1321 -#: src/emc/usr_intf/pncconf/pncconf.glade:59199 +#: src/emc/usr_intf/stepconf/options.glade:414 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid " Number of analog (float) out pins:" msgstr "Numar de iesiri analogice (float):" -#: src/emc/usr_intf/stepconf/stepconf.glade:1335 -#: src/emc/usr_intf/pncconf/pncconf.glade:59184 +#: src/emc/usr_intf/stepconf/options.glade:429 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid " Number of analog (float) in pins:" msgstr "Numar de intrari analogice (float):" -#: src/emc/usr_intf/stepconf/stepconf.glade:1349 -#: src/emc/usr_intf/pncconf/pncconf.glade:59169 +#: src/emc/usr_intf/stepconf/options.glade:444 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid " Number of analog (s32) out pins:" msgstr "Numar de iesiri analogice (s32):" -#: src/emc/usr_intf/stepconf/stepconf.glade:1363 -#: src/emc/usr_intf/pncconf/pncconf.glade:59153 +#: src/emc/usr_intf/stepconf/options.glade:459 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid " Number of analog (s32) in pins:" msgstr "Numare de intrari analogice (s32):" -#: src/emc/usr_intf/stepconf/stepconf.glade:1378 +#: src/emc/usr_intf/stepconf/options.glade:475 msgid "Number of digital out pins:" msgstr "Numar de iesiri digitale:" -#: src/emc/usr_intf/stepconf/stepconf.glade:1403 +#: src/emc/usr_intf/stepconf/options.glade:506 msgid "Number of digital in pins:" msgstr "Numar de intrari digitale:" -#: src/emc/usr_intf/stepconf/stepconf.glade:1414 +#: src/emc/usr_intf/stepconf/options.glade:518 #, fuzzy msgid "setup number of external pins" msgstr "Numar de intrari digitale:" -#: src/emc/usr_intf/stepconf/stepconf.glade:1429 -#: src/emc/usr_intf/pncconf/pncconf.glade:59213 +#: src/emc/usr_intf/stepconf/options.glade:533 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Include modbus master support" msgstr "Include suport pt. modbus master" -#: src/emc/usr_intf/stepconf/stepconf.glade:1500 -#: src/emc/usr_intf/pncconf/pncconf.glade:59333 +#: src/emc/usr_intf/stepconf/options.glade:625 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Blank ladder program" msgstr "Program ladder gol" -#: src/emc/usr_intf/stepconf/stepconf.glade:1513 -#: src/emc/usr_intf/pncconf/pncconf.glade:59346 +#: src/emc/usr_intf/stepconf/options.glade:638 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Estop ladder program" msgstr "Program ladder Estop" -#: src/emc/usr_intf/stepconf/stepconf.glade:1527 -#: src/emc/usr_intf/pncconf/pncconf.glade:59377 +#: src/emc/usr_intf/stepconf/options.glade:654 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Serial modbus program" msgstr "Program serial modbus" -#: src/emc/usr_intf/stepconf/stepconf.glade:1592 -#: src/emc/usr_intf/pncconf/pncconf.glade:59443 +#: src/emc/usr_intf/stepconf/options.glade:740 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" "Edit ladder\n" "program" @@ -6891,313 +9320,194 @@ msgstr "" "Editeaza program\n" "ladder" -#: src/emc/usr_intf/stepconf/stepconf.glade:1628 -#: src/emc/usr_intf/pncconf/pncconf.glade:59479 +#: src/emc/usr_intf/stepconf/options.glade:781 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Include _Classicladder PLC" msgstr "Include PLC _Classicladder" -#: src/emc/usr_intf/stepconf/stepconf.glade:1653 -#, fuzzy -msgid "Parallel Port Setup" -msgstr "Initializare imprimare" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1760 -#: src/emc/usr_intf/pncconf/pncconf.glade:54010 -msgid "Pin _1:" -msgstr "Pin _1:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1774 -#: src/emc/usr_intf/pncconf/pncconf.glade:54024 -#: src/emc/usr_intf/pncconf/pncconf.glade:55239 -msgid "Pin _2:" -msgstr "Pin _2:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1788 -#: src/emc/usr_intf/pncconf/pncconf.glade:54038 -#: src/emc/usr_intf/pncconf/pncconf.glade:55256 -msgid "Pin _3:" -msgstr "Pin _3:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1802 -#: src/emc/usr_intf/pncconf/pncconf.glade:54052 -#: src/emc/usr_intf/pncconf/pncconf.glade:55273 -msgid "Pin _4:" -msgstr "Pin _4:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1816 -#: src/emc/usr_intf/pncconf/pncconf.glade:54066 -#: src/emc/usr_intf/pncconf/pncconf.glade:55290 -msgid "Pin _5:" -msgstr "Pin _5:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1830 -#: src/emc/usr_intf/pncconf/pncconf.glade:54080 -#: src/emc/usr_intf/pncconf/pncconf.glade:55307 -msgid "Pin _6:" -msgstr "Pin _6:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1844 -#: src/emc/usr_intf/pncconf/pncconf.glade:54094 -#: src/emc/usr_intf/pncconf/pncconf.glade:55324 -msgid "Pin _7:" -msgstr "Pin _7:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1858 -#: src/emc/usr_intf/pncconf/pncconf.glade:54108 -#: src/emc/usr_intf/pncconf/pncconf.glade:55341 -msgid "Pin _8:" -msgstr "Pin _8:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1872 -#: src/emc/usr_intf/pncconf/pncconf.glade:54122 -#: src/emc/usr_intf/pncconf/pncconf.glade:55358 -msgid "Pin _9:" -msgstr "Pin _9:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1886 -#: src/emc/usr_intf/pncconf/pncconf.glade:54136 -msgid "_Pin 14:" -msgstr "_Pin 14:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1900 -#: src/emc/usr_intf/pncconf/pncconf.glade:54150 -msgid "P_in 16:" -msgstr "P_in 16:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1914 -#: src/emc/usr_intf/pncconf/pncconf.glade:54164 -msgid "Pi_n 17:" -msgstr "Pi_n 17:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2258 -msgid "Outputs (PC to Mill):" -msgstr "Iesiri (PC catre freza)" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2270 -#: src/emc/usr_intf/pncconf/pncconf.glade:55222 -msgid "Pin 1_0:" -msgstr "Pin 1_0:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2286 -#: src/emc/usr_intf/pncconf/pncconf.glade:55206 -msgid "Pin 1_1:" -msgstr "Pin 1_1:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2302 -#: src/emc/usr_intf/pncconf/pncconf.glade:55190 -msgid "Pin 1_2:" -msgstr "Pin 1_2:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2318 -#: src/emc/usr_intf/pncconf/pncconf.glade:55174 -msgid "Pin 1_3:" -msgstr "Pin 1_3:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2334 -#: src/emc/usr_intf/pncconf/pncconf.glade:55158 -msgid "Pin 1_5:" -msgstr "Pin 1_5:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2399 -msgid "Inputs (Mill to PC):" -msgstr "Intrari (Freza catre PC):" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2425 -#: src/emc/usr_intf/stepconf/stepconf.glade:2438 -#: src/emc/usr_intf/pncconf/pncconf.glade:54578 -#: src/emc/usr_intf/pncconf/pncconf.glade:54591 -msgid "Invert" -msgstr "Inverseaza" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2887 -msgid "_Sherline Outputs" -msgstr "Pinout _Sherline" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2905 -msgid "_Xylotex Outputs" -msgstr "Pinout _Xylotex" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2923 -msgid "Output pinout presets:" -msgstr "Presetari pinout iesire:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3022 -#: src/emc/usr_intf/pncconf/pncconf.glade:57970 +#: src/emc/usr_intf/stepconf/options.glade:802 #, fuzzy -msgid "X Axis Configuration" -msgstr "Configurare HAL" +msgid "_Onscreen prompt for manual tool change" +msgstr "" +"Confirmare pe ecran pentru\n" +"schimbare scula" -#: src/emc/usr_intf/stepconf/stepconf.glade:3090 +#: src/emc/usr_intf/stepconf/axisx.glade:31 +#: src/emc/usr_intf/stepconf/axisy.glade:31 +#: src/emc/usr_intf/stepconf/axisz.glade:31 +#: src/emc/usr_intf/stepconf/axisa.glade:45 msgid "_Motor steps per revolution:" msgstr "Nr. pasi _motor per tura:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3103 +#: src/emc/usr_intf/stepconf/axisx.glade:45 +#: src/emc/usr_intf/stepconf/axisy.glade:44 +#: src/emc/usr_intf/stepconf/axisz.glade:44 +#: src/emc/usr_intf/stepconf/axisa.glade:58 msgid "_Driver Microstepping:" msgstr "Micropasi _drive:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3118 +#: src/emc/usr_intf/stepconf/axisx.glade:61 +#: src/emc/usr_intf/stepconf/axisy.glade:59 +#: src/emc/usr_intf/stepconf/axisz.glade:59 +#: src/emc/usr_intf/stepconf/axisa.glade:73 msgid "_Pulley teeth (Motor:Leadscrew):" msgstr "Rata reductie (Motor:surub):" -#: src/emc/usr_intf/stepconf/stepconf.glade:3133 +#: src/emc/usr_intf/stepconf/axisx.glade:77 +#: src/emc/usr_intf/stepconf/axisy.glade:74 +#: src/emc/usr_intf/stepconf/axisz.glade:74 +#: src/emc/usr_intf/stepconf/axisa.glade:88 #, fuzzy msgid "_Leadscrew Pitch:" msgstr "Inlocuieste cu:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3148 -#: src/emc/usr_intf/pncconf/pncconf.glade:57858 +#: src/emc/usr_intf/stepconf/axisx.glade:93 +#: src/emc/usr_intf/stepconf/axisy.glade:89 +#: src/emc/usr_intf/stepconf/axisz.glade:89 +#: src/emc/usr_intf/stepconf/axisa.glade:103 +#: src/emc/usr_intf/pncconf/pncconf.glade:64687 msgid "Maximum _Velocity:" msgstr "_Viteza maxima:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3163 -#: src/emc/usr_intf/pncconf/pncconf.glade:57843 +#: src/emc/usr_intf/stepconf/axisx.glade:109 +#: src/emc/usr_intf/stepconf/axisy.glade:104 +#: src/emc/usr_intf/stepconf/axisz.glade:104 +#: src/emc/usr_intf/stepconf/axisa.glade:118 +#: src/emc/usr_intf/pncconf/pncconf.glade:64702 msgid "Maximum _Acceleration:" msgstr "_Accelerare maxima:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3178 -#: src/emc/usr_intf/pncconf/pncconf.glade:67063 +#: src/emc/usr_intf/stepconf/axisx.glade:125 +#: src/emc/usr_intf/stepconf/axisy.glade:119 +#: src/emc/usr_intf/stepconf/axisz.glade:119 +#: src/emc/usr_intf/stepconf/axisa.glade:133 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Time to accelerate to max speed:" msgstr "Timp de accelerare la viteza maxima:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3193 +#: src/emc/usr_intf/stepconf/axisx.glade:141 +#: src/emc/usr_intf/stepconf/axisy.glade:134 +#: src/emc/usr_intf/stepconf/axisz.glade:134 +#: src/emc/usr_intf/stepconf/axisa.glade:148 msgid "Distance to accelerate to max speed:" msgstr "Distanta pentru accelerare la viteza maxima:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3292 -#: src/emc/usr_intf/pncconf/pncconf.glade:67036 +#: src/emc/usr_intf/stepconf/axisx.glade:271 +#: src/emc/usr_intf/stepconf/axisy.glade:263 +#: src/emc/usr_intf/stepconf/axisz.glade:263 +#: src/emc/usr_intf/stepconf/axisa.glade:277 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Pulse rate at max speed:" msgstr "Rata pulsuri la viteza maxima:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3362 +#: src/emc/usr_intf/stepconf/axisx.glade:342 +#: src/emc/usr_intf/stepconf/axisy.glade:334 +#: src/emc/usr_intf/stepconf/axisz.glade:334 +#: src/emc/usr_intf/stepconf/axisa.glade:348 msgid "_Home location:" msgstr "Pozitie 0:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3377 +#: src/emc/usr_intf/stepconf/axisx.glade:358 +#: src/emc/usr_intf/stepconf/axisy.glade:349 +#: src/emc/usr_intf/stepconf/axisz.glade:349 +#: src/emc/usr_intf/stepconf/axisa.glade:363 msgid "Home _Switch location:" msgstr "Pozitie limitator poz 0" -#: src/emc/usr_intf/stepconf/stepconf.glade:3392 +#: src/emc/usr_intf/stepconf/axisx.glade:374 +#: src/emc/usr_intf/stepconf/axisy.glade:364 +#: src/emc/usr_intf/stepconf/axisz.glade:364 +#: src/emc/usr_intf/stepconf/axisa.glade:378 msgid "Home Sear_ch velocity:" -msgstr "Viteza cautare poz 0" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3407 -msgid "Home La_tch direction:" -msgstr "Directie latch" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3420 -#: src/emc/usr_intf/pncconf/pncconf.glade:66232 -#: src/emc/usr_intf/pncconf/pncconf.glade:66274 -#: src/emc/usr_intf/pncconf/pncconf.glade:66505 -#: src/emc/usr_intf/pncconf/pncconf.glade:66570 -msgid "_:" -msgstr "_" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3437 -#: src/emc/usr_intf/pncconf/pncconf.glade:58536 -msgid "" -"Same\n" -"Opposite" -msgstr "" -"La fel\n" -"Opus" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3492 -msgid "Tab_le travel:" -msgstr "Cursa masa:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3519 -msgid "t_o" -msgstr "la" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3649 -msgid "s" -msgstr "s" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3703 -msgid "T_est this axis" -msgstr "T_esteaza axa" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3729 -#, fuzzy -msgid "Axis SCALE:" -msgstr "Viteza axa:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3765 -#, fuzzy -msgid "Spindle Configuration" -msgstr "Configuratii model" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3785 -#, fuzzy -msgid "Use spindle-at-speed:" -msgstr "Seteaza depasire viteza freza:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3841 -msgid "Speed display filter gain:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3870 -#, fuzzy -msgid "Calibration:" -msgstr "Calibrare..." - -#: src/emc/usr_intf/stepconf/stepconf.glade:3883 -#, fuzzy -msgid "_Speed 1:" -msgstr "Viteza:" +msgstr "Viteza cautare poz 0" -#: src/emc/usr_intf/stepconf/stepconf.glade:3898 -msgid "_PWM 1:" -msgstr "_PWM 1:" +#: src/emc/usr_intf/stepconf/axisx.glade:390 +#: src/emc/usr_intf/stepconf/axisy.glade:379 +#: src/emc/usr_intf/stepconf/axisz.glade:379 +#: src/emc/usr_intf/stepconf/axisa.glade:393 +msgid "Home La_tch direction:" +msgstr "Directie latch" -#: src/emc/usr_intf/stepconf/stepconf.glade:3916 -#, fuzzy -msgid "S_peed 2:" -msgstr "Viteza:" +#: src/emc/usr_intf/stepconf/axisx.glade:404 +#: src/emc/usr_intf/stepconf/axisy.glade:393 +#: src/emc/usr_intf/stepconf/axisz.glade:393 +#: src/emc/usr_intf/stepconf/axisa.glade:407 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "_:" +msgstr "_" -#: src/emc/usr_intf/stepconf/stepconf.glade:3931 -msgid "P_WM 2:" -msgstr "P_WM 2:" +#: src/emc/usr_intf/stepconf/axisx.glade:498 +#: src/emc/usr_intf/stepconf/axisy.glade:486 +#: src/emc/usr_intf/stepconf/axisz.glade:486 +#: src/emc/usr_intf/stepconf/axisa.glade:500 +msgid "Tab_le travel:" +msgstr "Cursa masa:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3949 -msgid "PWM _Rate:" -msgstr "_Rata PWM:" +#: src/emc/usr_intf/stepconf/axisx.glade:531 +#: src/emc/usr_intf/stepconf/axisy.glade:518 +#: src/emc/usr_intf/stepconf/axisz.glade:518 +#: src/emc/usr_intf/stepconf/axisa.glade:532 +msgid "t_o" +msgstr "la" -#: src/emc/usr_intf/stepconf/stepconf.glade:4025 -msgid "_Cycles per revolution:" -msgstr "_Cicluri per tura:" +#: src/emc/usr_intf/stepconf/axisx.glade:677 +#: src/emc/usr_intf/stepconf/axisy.glade:663 +#: src/emc/usr_intf/stepconf/axisz.glade:663 +#: src/emc/usr_intf/stepconf/axisa.glade:677 +msgid "s" +msgstr "s" -#: src/emc/usr_intf/stepconf/stepconf.glade:4079 -msgid "Enter 0 Hz for \"PDM\" mode" -msgstr "Introduceti 0Hz pentru mod \"PDM\"" +#: src/emc/usr_intf/stepconf/axisx.glade:738 +#: src/emc/usr_intf/stepconf/axisy.glade:724 +#: src/emc/usr_intf/stepconf/axisz.glade:724 +#: src/emc/usr_intf/stepconf/axisa.glade:738 +msgid "T_est this axis" +msgstr "T_esteaza axa" -#: src/emc/usr_intf/stepconf/stepconf.glade:4091 -msgid "Scale %" +#: src/emc/usr_intf/stepconf/axisx.glade:765 +#: src/emc/usr_intf/stepconf/axisy.glade:751 +#: src/emc/usr_intf/stepconf/axisz.glade:751 +#: src/emc/usr_intf/stepconf/axisa.glade:765 +#, fuzzy +msgid "Axis SCALE:" +msgstr "Viteza axa:" + +#: src/emc/usr_intf/stepconf/axisx.glade:833 +#: src/emc/usr_intf/stepconf/axisy.glade:819 +#: src/emc/usr_intf/stepconf/axisz.glade:819 +#: src/emc/usr_intf/stepconf/axisa.glade:12 +msgid "Same" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:60002 +#: src/emc/usr_intf/stepconf/axisx.glade:836 +#: src/emc/usr_intf/stepconf/axisy.glade:822 +#: src/emc/usr_intf/stepconf/axisz.glade:822 +#: src/emc/usr_intf/stepconf/axisa.glade:15 #, fuzzy -msgid "Machine configuration complete" -msgstr "Configuratie copiata" +msgid "Opposite" +msgstr "" +"La fel\n" +"Opus" -#: src/emc/usr_intf/stepconf/stepconf.glade:4114 -#: src/emc/usr_intf/pncconf/pncconf.glade:60003 +#: src/emc/usr_intf/stepconf/finished.glade:6 #, fuzzy msgid "" -"All the necessary information has now been gathered. Click \"Apply\" to " -"write your configuration files to disk.\n" -"If you experience lockups while running LinuxCNC, you will need to decrease " -"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" +"All the necessary information has now been gathered. \n" +"Click \"Done\" to write your configuration files to disk.\n" "\n" -"If you experience lost steps while running LinuxCNC, first verify that you " -"entered the proper timings for your stepper drivers. If that does not fix " -"the problem, then run a more thorough latency test as described on the " -"linuxcnc.org wiki:\n" +"If you experience lockups while running LinuxCNC:\n" +"-you will need to decrease the maximum velocity which will have the effect " +"of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC:\n" +"-first verify that you entered the proper timings for your stepper " +"drivers. \n" +"-then run a more thorough latency test as described on the linuxcnc.org " +"wiki.\n" " http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" "\n" -"If you experience the \"Unexpected Realtime Delay\" message, run a more " -"thorough latency test as described on the linuxcnc.org wiki: \n" +"If you experience the \"Unexpected Realtime Delay\" message:\n" +"-run a more thorough latency test as described on the linuxcnc.org wiki: \n" " http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" msgstr "" "Toate informatiile necesare au fost adunate. Apasati \"Valideaza\" pentru a " @@ -7214,58 +9524,7 @@ msgstr "" "latency test descris la linuxcnc.org wiki: \n" " http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting" -#: src/emc/usr_intf/stepconf/stepconf.glade:4160 -#: src/emc/usr_intf/pncconf/pncconf.glade:60462 -#: src/emc/usr_intf/pncconf/pncconf.glade:61557 -#: src/emc/usr_intf/pncconf/pncconf.glade:62650 -#: src/emc/usr_intf/pncconf/pncconf.glade:63743 -#: src/emc/usr_intf/pncconf/pncconf.glade:64842 -msgid "Acceleration:" -msgstr "Accelerare" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4174 -#: src/emc/usr_intf/pncconf/pncconf.glade:60231 -#: src/emc/usr_intf/pncconf/pncconf.glade:60695 -#: src/emc/usr_intf/pncconf/pncconf.glade:61788 -#: src/emc/usr_intf/pncconf/pncconf.glade:62881 -#: src/emc/usr_intf/pncconf/pncconf.glade:63974 -#: src/emc/usr_intf/pncconf/pncconf.glade:64954 -msgid "Jog:" -msgstr "Miscare:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4188 -#: src/emc/usr_intf/pncconf/pncconf.glade:60681 -#: src/emc/usr_intf/pncconf/pncconf.glade:61774 -#: src/emc/usr_intf/pncconf/pncconf.glade:62867 -#: src/emc/usr_intf/pncconf/pncconf.glade:63960 -msgid "Test Area:" -msgstr "Zona test:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4217 -msgid "mm/s^2" -msgstr "mm/s^2" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4253 -#, fuzzy -msgid "mm/s" -msgstr "mm" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4329 -#: src/emc/usr_intf/pncconf/pncconf.glade:60620 -#: src/emc/usr_intf/pncconf/pncconf.glade:61713 -#: src/emc/usr_intf/pncconf/pncconf.glade:62806 -#: src/emc/usr_intf/pncconf/pncconf.glade:63899 -#: src/emc/usr_intf/pncconf/pncconf.glade:65066 -msgid "" -"±\n" -"+\n" -"-\n" -msgstr "" -"±\n" -"+\n" -"-\n" - -#: src/emc/usr_intf/pncconf/pncconf.py:79 +#: src/emc/usr_intf/pncconf/pncconf.py:81 #, fuzzy msgid "" "PNCconf encountered an error. The following information may be useful in " @@ -7277,1249 +9536,1422 @@ msgstr "" "\n" #: src/emc/usr_intf/pncconf/pncconf.py:149 +msgid "Keling 4030" +msgstr "Keling 4030" + +#: src/emc/usr_intf/pncconf/pncconf.py:151 msgid "Not Used" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:149 -#: src/emc/usr_intf/pncconf/pncconf.py:150 +#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:176 msgid "Dummy" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:150 +#: src/emc/usr_intf/pncconf/pncconf.py:152 msgid "8i20 Servo Drive" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:153 #, fuzzy msgid "POT Output" msgstr "Nefolosit" -#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:153 msgid "POT Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:153 #, fuzzy msgid "POT Direction" msgstr "X Directie" -#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:154 msgid "GPIO Input" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:154 msgid "GPIO Output" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:154 msgid "GPIO O Drain" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 +#: src/emc/usr_intf/pncconf/pncconf.py:155 #, fuzzy msgid "Quad Encoder-A" msgstr "Nefolosit" -#: src/emc/usr_intf/pncconf/pncconf.py:153 +#: src/emc/usr_intf/pncconf/pncconf.py:155 #, fuzzy msgid "Quad Encoder-B" msgstr "Nefolosit" -#: src/emc/usr_intf/pncconf/pncconf.py:153 +#: src/emc/usr_intf/pncconf/pncconf.py:155 #, fuzzy msgid "Quad Encoder-I" msgstr "Nefolosit" -#: src/emc/usr_intf/pncconf/pncconf.py:153 +#: src/emc/usr_intf/pncconf/pncconf.py:155 #, fuzzy msgid "Quad Encoder-M" msgstr "Nefolosit" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 #, fuzzy msgid "Muxed Encoder 0" msgstr "Nefolosit" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 #, fuzzy msgid "Muxed Encoder 1" msgstr "Nefolosit" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 msgid "muxed enc" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 msgid "mux enc mask" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 msgid "mux select" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:155 +#: src/emc/usr_intf/pncconf/pncconf.py:157 #, fuzzy msgid "Resolver 0 Encoder" msgstr "Inverseaza imagine" -#: src/emc/usr_intf/pncconf/pncconf.py:155 +#: src/emc/usr_intf/pncconf/pncconf.py:157 #, fuzzy msgid "Resolver 1 Encoder" msgstr "Inverseaza imagine" -#: src/emc/usr_intf/pncconf/pncconf.py:155 +#: src/emc/usr_intf/pncconf/pncconf.py:157 #, fuzzy msgid "Resolver 2 Encoder" msgstr "Inverseaza imagine" -#: src/emc/usr_intf/pncconf/pncconf.py:156 +#: src/emc/usr_intf/pncconf/pncconf.py:158 #, fuzzy msgid "Resolver 3 Encoder" msgstr "Inverseaza imagine" -#: src/emc/usr_intf/pncconf/pncconf.py:156 +#: src/emc/usr_intf/pncconf/pncconf.py:158 #, fuzzy msgid "Resolver 4 Encoder" msgstr "Inverseaza imagine" -#: src/emc/usr_intf/pncconf/pncconf.py:156 +#: src/emc/usr_intf/pncconf/pncconf.py:158 #, fuzzy msgid "Resolver 5 Encoder" msgstr "Inverseaza imagine" -#: src/emc/usr_intf/pncconf/pncconf.py:157 +#: src/emc/usr_intf/pncconf/pncconf.py:159 #, fuzzy msgid "Step Gen-A" msgstr "X Pas" -#: src/emc/usr_intf/pncconf/pncconf.py:157 +#: src/emc/usr_intf/pncconf/pncconf.py:159 msgid "Dir Gen-B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 +#: src/emc/usr_intf/pncconf/pncconf.py:159 msgid "Step/Dir Gen-C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 +#: src/emc/usr_intf/pncconf/pncconf.py:159 msgid "Step/Dir Gen-D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:158 +#: src/emc/usr_intf/pncconf/pncconf.py:160 msgid "Step/Dir Gen-E" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:158 +#: src/emc/usr_intf/pncconf/pncconf.py:160 msgid "Step/dir Gen-F" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 +#: src/emc/usr_intf/pncconf/pncconf.py:161 msgid "Pulse Width Gen-P" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 +#: src/emc/usr_intf/pncconf/pncconf.py:161 msgid "Pulse Width Gen-D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 +#: src/emc/usr_intf/pncconf/pncconf.py:161 msgid "Pulse Width Gen-E" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 +#: src/emc/usr_intf/pncconf/pncconf.py:162 msgid "Pulse Density Gen-P" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 +#: src/emc/usr_intf/pncconf/pncconf.py:162 msgid "Pulse Density Gen-D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 +#: src/emc/usr_intf/pncconf/pncconf.py:162 msgid "Pulse Density Gen-E" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 +#: src/emc/usr_intf/pncconf/pncconf.py:163 msgid "Up/Down Mode -Up" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 +#: src/emc/usr_intf/pncconf/pncconf.py:163 msgid "Up/Down Mode-Down" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 +#: src/emc/usr_intf/pncconf/pncconf.py:163 msgid "Up/Down Mode-Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 +#: src/emc/usr_intf/pncconf/pncconf.py:164 msgid "Motor Phase A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 +#: src/emc/usr_intf/pncconf/pncconf.py:164 msgid "Motor Phase B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 +#: src/emc/usr_intf/pncconf/pncconf.py:164 msgid "Motor Phase C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Phase A Not" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Phase B Not" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Phase C Not" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Fault" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:165 +#: src/emc/usr_intf/pncconf/pncconf.py:168 msgid "SMARTSERIAL-P0-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P0-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P0-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P1-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P1-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P1-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P2-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P2-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P2-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P3-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P3-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P3-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P4-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P4-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P4-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P5-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P5-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P5-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P6-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P6-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P6-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P7-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P7-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P7-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #1" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS0)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #2" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS2)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS3)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 I/O (SS0)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 Analog (SS1)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 I/O (SS3)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 Analog (SS4)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:176 +#, fuzzy +msgid "Analog Input" +msgstr "Manual" + +#: src/emc/usr_intf/pncconf/pncconf.py:277 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +#, fuzzy +msgid "Axis Selection" +msgstr "A Directie" + +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "" +"7i64-Input\n" +"P3 and P4" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "" +"7i64-Output\n" +"P2 and P5" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:285 +#, fuzzy +msgid "7i64-Analog In" +msgstr "dialog1" + +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P2" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P3" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB3" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB2" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:309 +msgid "" +"7i71-Output\n" +"TB3" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:309 +msgid "" +"7i71-Output\n" +"TB2" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-I/O\n" +"TB6" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-I/O\n" +"TB5" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:317 +#, fuzzy +msgid "" +"7i76-Analog Output\n" +"TB4" +msgstr "Nefolosit" + +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB8" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB7" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:325 +#, fuzzy +msgid "" +"7i77-Analog Output\n" +"TB5" +msgstr "Nefolosit" + +#: src/emc/usr_intf/pncconf/pncconf.py:333 +msgid "7i73-I/O\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:420 +#: src/emc/usr_intf/pncconf/pncconf.py:348 #, fuzzy msgid "Unused Unused" msgstr "Nefolosit" -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/pncconf/pncconf.py:370 #, fuzzy msgid "Machine Is Enabled" msgstr "Masina pornita" -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/pncconf/pncconf.py:370 #, fuzzy msgid "X Amplifier Enable" msgstr "Activare driver" -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/pncconf/pncconf.py:370 #, fuzzy msgid "Y Amplifier Enable" msgstr "Activare driver" -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/pncconf/pncconf.py:370 #, fuzzy msgid "Z Amplifier Enable" msgstr "Activare driver" -#: src/emc/usr_intf/pncconf/pncconf.py:443 +#: src/emc/usr_intf/pncconf/pncconf.py:371 #, fuzzy msgid "A Amplifier Enable" msgstr "Activare driver" -#: src/emc/usr_intf/pncconf/pncconf.py:443 +#: src/emc/usr_intf/pncconf/pncconf.py:371 msgid "Force Pin True" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 #, fuzzy msgid "S HALL 1" msgstr "Salveaza HAL ini" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 #, fuzzy msgid "S HALL 2" msgstr "Salveaza HAL ini" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 #, fuzzy msgid "S HALL 3" msgstr "Salveaza HAL ini" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:450 +#: src/emc/usr_intf/pncconf/pncconf.py:378 #, fuzzy msgid "Unused Output" msgstr "Nefolosit" -#: src/emc/usr_intf/pncconf/pncconf.py:450 -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#, fuzzy -msgid "Spindle" -msgstr "Freza oprita" - -#: src/emc/usr_intf/pncconf/pncconf.py:450 +#: src/emc/usr_intf/pncconf/pncconf.py:378 #, fuzzy msgid "Coolant" msgstr "Comanda:" -#: src/emc/usr_intf/pncconf/pncconf.py:451 +#: src/emc/usr_intf/pncconf/pncconf.py:379 #, fuzzy msgid "Control" msgstr "Ctrl-M" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:480 +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:409 #, fuzzy msgid "Digital" msgstr "Intrare digitala 3" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:481 +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:410 #, fuzzy msgid "X BLDC Control" msgstr "Ctrl-M" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 #, fuzzy msgid "Y BLDC Control" msgstr "Ctrl-M" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 #, fuzzy msgid "Z BLDC Control" msgstr "Ctrl-M" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 #, fuzzy msgid "A BLDC Control" msgstr "Ctrl-M" -#: src/emc/usr_intf/pncconf/pncconf.py:453 +#: src/emc/usr_intf/pncconf/pncconf.py:381 msgid " S BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:453 -#: src/emc/usr_intf/pncconf/pncconf.py:483 -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#: src/emc/usr_intf/pncconf/pncconf.py:585 -#: src/emc/usr_intf/pncconf/pncconf.py:588 -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.py:597 -#: src/emc/usr_intf/pncconf/pncconf.py:614 -#: src/emc/usr_intf/pncconf/pncconf.py:629 +#: src/emc/usr_intf/pncconf/pncconf.py:381 +#: src/emc/usr_intf/pncconf/pncconf.py:412 +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#: src/emc/usr_intf/pncconf/pncconf.py:516 +#: src/emc/usr_intf/pncconf/pncconf.py:519 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.py:528 +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#: src/emc/usr_intf/pncconf/pncconf.py:568 +#: src/emc/usr_intf/pncconf/pncconf.py:580 #, fuzzy msgid "Custom Signals" msgstr "Decupare" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 #, fuzzy msgid "X Minimum Limit" msgstr "Limita min X" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 #, fuzzy msgid "Y Minimum Limit" msgstr "Limita min X" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 #, fuzzy msgid "Z Minimum Limit" msgstr "Limita min X" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 #, fuzzy msgid "A Minimum Limit" msgstr "Limita min X" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 #, fuzzy msgid "X Maximum Limit" msgstr "Limita max X" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 #, fuzzy msgid "Y Maximum Limit" msgstr "Limita max X" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 #, fuzzy msgid "Z Maximum Limit" msgstr "Limita max X" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 #, fuzzy msgid "A Maximum Limit" msgstr "Limita max X" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 #, fuzzy msgid "X Both Limit" msgstr "Ambele limite X" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 #, fuzzy msgid "Y Both Limit" msgstr "Ambele limite X" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 #, fuzzy msgid "Z Both Limit" msgstr "Ambele limite X" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 #, fuzzy msgid "A Both Limit" msgstr "Ambele limite X" -#: src/emc/usr_intf/pncconf/pncconf.py:458 -#: src/emc/usr_intf/pncconf/pncconf.py:546 +#: src/emc/usr_intf/pncconf/pncconf.py:386 +#: src/emc/usr_intf/pncconf/pncconf.py:477 #, fuzzy msgid "All Limits" msgstr "Toate fisierele" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:387 #, fuzzy msgid "X Home" msgstr "poz.0" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:387 #, fuzzy msgid "Y Home" msgstr "poz.0" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:387 #, fuzzy msgid "Z Home" msgstr "poz.0" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:387 #, fuzzy msgid "A Home" msgstr "poz.0" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:387 #, fuzzy msgid "All Home" msgstr "poz.0" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 #, fuzzy msgid "X Minimum Limit + Home" msgstr "Limita minima + poz 0 X" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 #, fuzzy msgid "Y Minimum Limit + Home" msgstr "Limita minima + poz 0 X" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 #, fuzzy msgid "Z Minimum Limit + Home" msgstr "Limita minima + poz 0 X" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 #, fuzzy msgid "A Minimum Limit + Home" msgstr "Limita minima + poz 0 X" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 #, fuzzy msgid "X Maximum Limit + Home" msgstr "Limita maxima + poz 0 X" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 #, fuzzy msgid "Y Maximum Limit + Home" msgstr "Limita maxima + poz 0 X" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 #, fuzzy msgid "Z Maximum Limit + Home" msgstr "Limita maxima + poz 0 X" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 #, fuzzy msgid "A Maximum Limit + Home" msgstr "Limita maxima + poz 0 X" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 #, fuzzy msgid "X Both Limit + Home" msgstr "Ambele limite + poz 0 X" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 #, fuzzy msgid "Y Both Limit + Home" msgstr "Ambele limite + poz 0 X" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 #, fuzzy msgid "Z Both Limit + Home" msgstr "Ambele limite + poz 0 X" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 #, fuzzy msgid "A Both Limit + Home" msgstr "Ambele limite + poz 0 X" -#: src/emc/usr_intf/pncconf/pncconf.py:464 +#: src/emc/usr_intf/pncconf/pncconf.py:392 #, fuzzy msgid "Joint select A" msgstr "Misca axa selectata" -#: src/emc/usr_intf/pncconf/pncconf.py:464 +#: src/emc/usr_intf/pncconf/pncconf.py:392 #, fuzzy msgid "Joint select B" msgstr "Misca axa selectata" -#: src/emc/usr_intf/pncconf/pncconf.py:464 +#: src/emc/usr_intf/pncconf/pncconf.py:392 #, fuzzy msgid "Joint select C" msgstr "Misca axa selectata" -#: src/emc/usr_intf/pncconf/pncconf.py:464 +#: src/emc/usr_intf/pncconf/pncconf.py:392 #, fuzzy msgid "Joint select D" msgstr "Misca axa selectata" -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Jog incr A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Jog incr B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Jog incr C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Jog incr D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/pncconf/pncconf.py:393 #, fuzzy msgid "Feed Override incr A" msgstr "Depasire viteza:" -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/pncconf/pncconf.py:393 #, fuzzy msgid "Feed Override incr B" msgstr "Depasire viteza:" -#: src/emc/usr_intf/pncconf/pncconf.py:466 +#: src/emc/usr_intf/pncconf/pncconf.py:394 #, fuzzy msgid "Feed Override incr C" msgstr "Depasire viteza:" -#: src/emc/usr_intf/pncconf/pncconf.py:466 +#: src/emc/usr_intf/pncconf/pncconf.py:394 #, fuzzy msgid "Feed Override incr D" msgstr "Depasire viteza:" -#: src/emc/usr_intf/pncconf/pncconf.py:466 +#: src/emc/usr_intf/pncconf/pncconf.py:394 #, fuzzy msgid "Spindle Override incr A" msgstr "Seteaza depasire freza" -#: src/emc/usr_intf/pncconf/pncconf.py:466 +#: src/emc/usr_intf/pncconf/pncconf.py:394 #, fuzzy msgid "Spindle Override incr B" msgstr "Seteaza depasire freza" -#: src/emc/usr_intf/pncconf/pncconf.py:467 +#: src/emc/usr_intf/pncconf/pncconf.py:395 #, fuzzy msgid "Spindle Override incr C" msgstr "Seteaza depasire freza" -#: src/emc/usr_intf/pncconf/pncconf.py:467 +#: src/emc/usr_intf/pncconf/pncconf.py:395 #, fuzzy msgid "Spindle Override incr D" msgstr "Seteaza depasire freza" -#: src/emc/usr_intf/pncconf/pncconf.py:467 +#: src/emc/usr_intf/pncconf/pncconf.py:395 msgid "Max Vel Override incr A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:467 +#: src/emc/usr_intf/pncconf/pncconf.py:395 msgid "Max Vel Override incr B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:468 +#: src/emc/usr_intf/pncconf/pncconf.py:396 msgid "Max Vel Override incr C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:468 +#: src/emc/usr_intf/pncconf/pncconf.py:396 msgid "Max Vel Override incr D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:469 +#: src/emc/usr_intf/pncconf/pncconf.py:396 +#, fuzzy +msgid "Feed Override enable" +msgstr "Depasire viteza:" + +#: src/emc/usr_intf/pncconf/pncconf.py:396 +#, fuzzy +msgid "Spindle Override enable" +msgstr "Seteaza depasire freza" + +#: src/emc/usr_intf/pncconf/pncconf.py:397 +#, fuzzy +msgid "Max Vel Override enable" +msgstr "Depasire viteza:" + +#: src/emc/usr_intf/pncconf/pncconf.py:398 #, fuzzy msgid "Manual Spindle CW" msgstr "Freza oprita" -#: src/emc/usr_intf/pncconf/pncconf.py:469 +#: src/emc/usr_intf/pncconf/pncconf.py:398 #, fuzzy msgid "Manual Spindle CCW" msgstr "Freza oprita" -#: src/emc/usr_intf/pncconf/pncconf.py:469 +#: src/emc/usr_intf/pncconf/pncconf.py:398 #, fuzzy msgid "Manual Spindle Stop" msgstr "Freza mai incet" -#: src/emc/usr_intf/pncconf/pncconf.py:469 +#: src/emc/usr_intf/pncconf/pncconf.py:398 #, fuzzy msgid "Spindle Up-To-Speed" msgstr "Seteaza depasire viteza" -#: src/emc/usr_intf/pncconf/pncconf.py:470 +#: src/emc/usr_intf/pncconf/pncconf.py:399 msgid "Cycle Start" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:470 +#: src/emc/usr_intf/pncconf/pncconf.py:399 msgid "Abort" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:470 +#: src/emc/usr_intf/pncconf/pncconf.py:399 #, fuzzy msgid "Single Step" msgstr "Spatiu simplu" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 #, fuzzy msgid "Jog X +" msgstr "JOG X +" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 #, fuzzy msgid "Jog X -" msgstr "JOG X -" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 msgid "Jog Y +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 msgid "Jog Y -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 msgid "Jog Z +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 msgid "Jog Z -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 msgid "Jog A +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 msgid "Jog A -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:478 +#: src/emc/usr_intf/pncconf/pncconf.py:407 #, fuzzy msgid "Jog button selected +" msgstr "Misca axa selectata" -#: src/emc/usr_intf/pncconf/pncconf.py:478 +#: src/emc/usr_intf/pncconf/pncconf.py:407 #, fuzzy msgid "Jog button selected -" msgstr "Misca axa selectata" -#: src/emc/usr_intf/pncconf/pncconf.py:479 +#: src/emc/usr_intf/pncconf/pncconf.py:408 #, fuzzy msgid "Unused Input" msgstr "Nefolosit" -#: src/emc/usr_intf/pncconf/pncconf.py:479 +#: src/emc/usr_intf/pncconf/pncconf.py:408 #, fuzzy msgid "Limits" msgstr "Toate fisierele" -#: src/emc/usr_intf/pncconf/pncconf.py:479 +#: src/emc/usr_intf/pncconf/pncconf.py:408 msgid "Limts/Home Shared" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#, fuzzy -msgid "Axis Selection" -msgstr "A Directie" - -#: src/emc/usr_intf/pncconf/pncconf.py:480 +#: src/emc/usr_intf/pncconf/pncconf.py:409 #, fuzzy msgid "Overrides" msgstr "depaseste limite" -#: src/emc/usr_intf/pncconf/pncconf.py:481 +#: src/emc/usr_intf/pncconf/pncconf.py:410 #, fuzzy msgid "Operation" msgstr "Accelerare" -#: src/emc/usr_intf/pncconf/pncconf.py:481 +#: src/emc/usr_intf/pncconf/pncconf.py:410 #, fuzzy msgid "External Control" msgstr "Manual" -#: src/emc/usr_intf/pncconf/pncconf.py:481 +#: src/emc/usr_intf/pncconf/pncconf.py:410 #, fuzzy msgid "Axis rapid" msgstr "Axa" -#: src/emc/usr_intf/pncconf/pncconf.py:483 +#: src/emc/usr_intf/pncconf/pncconf.py:412 #, fuzzy msgid "S BLDC Control" msgstr "Ctrl-M" -#: src/emc/usr_intf/pncconf/pncconf.py:556 +#: src/emc/usr_intf/pncconf/pncconf.py:487 #, fuzzy msgid "Unused PWM Gen" msgstr "Nefolosit" -#: src/emc/usr_intf/pncconf/pncconf.py:556 +#: src/emc/usr_intf/pncconf/pncconf.py:487 #, fuzzy msgid "X Axis PWM" msgstr "Axa" -#: src/emc/usr_intf/pncconf/pncconf.py:556 +#: src/emc/usr_intf/pncconf/pncconf.py:487 #, fuzzy msgid "Y Axis PWM" msgstr "Axa" -#: src/emc/usr_intf/pncconf/pncconf.py:557 +#: src/emc/usr_intf/pncconf/pncconf.py:488 #, fuzzy msgid "Z Axis PWM" msgstr "Axa" -#: src/emc/usr_intf/pncconf/pncconf.py:557 +#: src/emc/usr_intf/pncconf/pncconf.py:488 #, fuzzy msgid "A Axis PWM" msgstr "Axa" -#: src/emc/usr_intf/pncconf/pncconf.py:581 +#: src/emc/usr_intf/pncconf/pncconf.py:512 #, fuzzy msgid "X Encoder" msgstr "End" -#: src/emc/usr_intf/pncconf/pncconf.py:581 +#: src/emc/usr_intf/pncconf/pncconf.py:512 #, fuzzy msgid "Y Encoder" msgstr "End" -#: src/emc/usr_intf/pncconf/pncconf.py:581 +#: src/emc/usr_intf/pncconf/pncconf.py:512 #, fuzzy msgid "Z Encoder" msgstr "End" -#: src/emc/usr_intf/pncconf/pncconf.py:581 +#: src/emc/usr_intf/pncconf/pncconf.py:512 #, fuzzy msgid "A Encoder" msgstr "End" -#: src/emc/usr_intf/pncconf/pncconf.py:581 +#: src/emc/usr_intf/pncconf/pncconf.py:512 #, fuzzy msgid "Spindle Encoder" msgstr "Freza sens invers" -#: src/emc/usr_intf/pncconf/pncconf.py:582 +#: src/emc/usr_intf/pncconf/pncconf.py:513 msgid "X Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 +#: src/emc/usr_intf/pncconf/pncconf.py:513 msgid "Y Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 +#: src/emc/usr_intf/pncconf/pncconf.py:513 msgid "Z Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 +#: src/emc/usr_intf/pncconf/pncconf.py:513 msgid "A Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 +#: src/emc/usr_intf/pncconf/pncconf.py:513 msgid "Multi Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:583 +#: src/emc/usr_intf/pncconf/pncconf.py:514 #, fuzzy msgid "Feed Override" msgstr "Depasire viteza:" -#: src/emc/usr_intf/pncconf/pncconf.py:583 +#: src/emc/usr_intf/pncconf/pncconf.py:514 #, fuzzy msgid "spindle Override" msgstr "Seteaza depasire freza" -#: src/emc/usr_intf/pncconf/pncconf.py:583 +#: src/emc/usr_intf/pncconf/pncconf.py:514 #, fuzzy msgid "Max Vel Override" msgstr "Depasire viteza:" -#: src/emc/usr_intf/pncconf/pncconf.py:584 +#: src/emc/usr_intf/pncconf/pncconf.py:515 #, fuzzy msgid "Unused Encoder" msgstr "Nefolosit" -#: src/emc/usr_intf/pncconf/pncconf.py:584 +#: src/emc/usr_intf/pncconf/pncconf.py:515 #, fuzzy msgid "Axis Encoder" msgstr "End" -#: src/emc/usr_intf/pncconf/pncconf.py:584 +#: src/emc/usr_intf/pncconf/pncconf.py:515 msgid "MPG Jog Controls" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:584 +#: src/emc/usr_intf/pncconf/pncconf.py:515 msgid "Override MPG control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 +#: src/emc/usr_intf/pncconf/pncconf.py:518 #, fuzzy msgid "Unused Resolver" msgstr "Nefolosit" -#: src/emc/usr_intf/pncconf/pncconf.py:587 +#: src/emc/usr_intf/pncconf/pncconf.py:518 msgid "X Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 +#: src/emc/usr_intf/pncconf/pncconf.py:518 msgid "Y Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 +#: src/emc/usr_intf/pncconf/pncconf.py:518 msgid "Z Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:588 +#: src/emc/usr_intf/pncconf/pncconf.py:519 msgid "A Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:588 +#: src/emc/usr_intf/pncconf/pncconf.py:519 msgid "S Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:592 +#: src/emc/usr_intf/pncconf/pncconf.py:523 #, fuzzy msgid "Unused 8I20" msgstr "Anulare" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:61457 +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "X Axis" msgstr "Axa" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:62549 +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Y Axis" msgstr "Axa" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:63642 +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Z Axis" msgstr "Axa" -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.glade:64735 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "A Axis" msgstr "Axa" -#: src/emc/usr_intf/pncconf/pncconf.py:597 +#: src/emc/usr_intf/pncconf/pncconf.py:528 #, fuzzy msgid "Unused Analog Output" msgstr "Nefolosit" -#: src/emc/usr_intf/pncconf/pncconf.py:597 +#: src/emc/usr_intf/pncconf/pncconf.py:528 #, fuzzy msgid "Spindle Output" msgstr "Freza oprita" -#: src/emc/usr_intf/pncconf/pncconf.py:613 +#: src/emc/usr_intf/pncconf/pncconf.py:551 #, fuzzy msgid "Unused StepGen" msgstr "Nefolosit" -#: src/emc/usr_intf/pncconf/pncconf.py:613 +#: src/emc/usr_intf/pncconf/pncconf.py:551 #, fuzzy msgid "X Axis StepGen" msgstr "Nefolosit" -#: src/emc/usr_intf/pncconf/pncconf.py:613 +#: src/emc/usr_intf/pncconf/pncconf.py:551 #, fuzzy msgid "Y Axis StepGen" msgstr "Nefolosit" -#: src/emc/usr_intf/pncconf/pncconf.py:613 +#: src/emc/usr_intf/pncconf/pncconf.py:551 #, fuzzy msgid "Z Axis StepGen" msgstr "Nefolosit" -#: src/emc/usr_intf/pncconf/pncconf.py:614 +#: src/emc/usr_intf/pncconf/pncconf.py:552 #, fuzzy msgid "A Axis StepGen" msgstr "Nefolosit" -#: src/emc/usr_intf/pncconf/pncconf.py:614 +#: src/emc/usr_intf/pncconf/pncconf.py:552 #, fuzzy msgid "Spindle StepGen" msgstr "Freza mai incet" -#: src/emc/usr_intf/pncconf/pncconf.py:628 +#: src/emc/usr_intf/pncconf/pncconf.py:552 +#, fuzzy +msgid "X2 Tandem StepGen" +msgstr "Freza mai incet" + +#: src/emc/usr_intf/pncconf/pncconf.py:552 +#, fuzzy +msgid "Y2 Tandem StepGen" +msgstr "Freza mai incet" + +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#, fuzzy +msgid "Z2 Tandem StepGen" +msgstr "Freza mai incet" + +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#, fuzzy +msgid "Charge Pump StepGen" +msgstr "Charge pump" + +#: src/emc/usr_intf/pncconf/pncconf.py:567 #, fuzzy msgid "Unused TPPWM Gen" msgstr "Nefolosit" -#: src/emc/usr_intf/pncconf/pncconf.py:628 +#: src/emc/usr_intf/pncconf/pncconf.py:567 msgid "X Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:628 +#: src/emc/usr_intf/pncconf/pncconf.py:567 msgid "Y Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 +#: src/emc/usr_intf/pncconf/pncconf.py:568 msgid "Z Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 +#: src/emc/usr_intf/pncconf/pncconf.py:568 msgid "A Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 +#: src/emc/usr_intf/pncconf/pncconf.py:568 msgid "S Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -#: src/emc/usr_intf/pncconf/pncconf.py:6557 +#: src/emc/usr_intf/pncconf/pncconf.py:576 +#: src/emc/usr_intf/pncconf/pncconf.py:6882 #, fuzzy msgid "Unused Channel" msgstr "Nefolosit" -#: src/emc/usr_intf/pncconf/pncconf.py:636 +#: src/emc/usr_intf/pncconf/pncconf.py:576 #, fuzzy msgid "8i20 Amplifier Card" msgstr "Activare driver" -#: src/emc/usr_intf/pncconf/pncconf.py:636 +#: src/emc/usr_intf/pncconf/pncconf.py:576 msgid "7i64 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 +#: src/emc/usr_intf/pncconf/pncconf.py:576 msgid "7i69 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 +#: src/emc/usr_intf/pncconf/pncconf.py:577 msgid "7i70 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 +#: src/emc/usr_intf/pncconf/pncconf.py:577 msgid "7i71 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 +#: src/emc/usr_intf/pncconf/pncconf.py:577 msgid "7i76 Mode 0 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:722 +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i77 Mode 0 I/O Card" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:578 +msgid "7i73 Mode 1 Pendant Card" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:580 +#, fuzzy +msgid "Unused Analog In" +msgstr "Nefolosit" + +#: src/emc/usr_intf/pncconf/pncconf.py:676 #, fuzzy msgid "my_LinuxCNC_machine" msgstr "masina" -#: src/emc/usr_intf/pncconf/pncconf.py:1328 +#: src/emc/usr_intf/pncconf/pncconf.py:939 +#: src/emc/usr_intf/pncconf/pncconf.py:941 +msgid "Enter Address" +msgstr "Introdu adresa" + +#: src/emc/usr_intf/pncconf/pncconf.py:1290 msgid "" "This configuration was saved with an earlier version of pncconf which may be " "incompatible.\n" @@ -8529,12 +10961,12 @@ msgid "" "version of PNConf - ask on the LinuxCNC forum - it may be possible.." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1334 +#: src/emc/usr_intf/pncconf/pncconf.py:1296 #, fuzzy, python-format msgid "File %r was modified since it was written by PNCconf" msgstr "Fisierul %r a fost modificat decand a fost generat de stepconf" -#: src/emc/usr_intf/pncconf/pncconf.py:1338 +#: src/emc/usr_intf/pncconf/pncconf.py:1300 #, fuzzy msgid "" "Saving this configuration file will discard configuration changes made " @@ -8543,252 +10975,246 @@ msgstr "" "Salvarea aceste configuratii va supascrie orice modificari facute in afara " "de stepconf." -#: src/emc/usr_intf/pncconf/pncconf.py:1365 -#: src/emc/usr_intf/pncconf/pncconf.py:2368 +#: src/emc/usr_intf/pncconf/pncconf.py:1327 +#: src/emc/usr_intf/pncconf/pncconf.py:2421 #, fuzzy, python-format msgid "# Generated by PNCconf at %s" msgstr "# Generat de stepconf la %s" -#: src/emc/usr_intf/pncconf/pncconf.py:1367 -#: src/emc/usr_intf/pncconf/pncconf.py:2370 +#: src/emc/usr_intf/pncconf/pncconf.py:1329 +#: src/emc/usr_intf/pncconf/pncconf.py:2423 #, fuzzy msgid "# overwritten when you run PNCconf again" msgstr "# suprascrise cand rulati stepconf din nou" -#: src/emc/usr_intf/pncconf/pncconf.py:2070 +#: src/emc/usr_intf/pncconf/pncconf.py:2134 msgid "# Use ACTUAL spindle velocity from spindle encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2071 +#: src/emc/usr_intf/pncconf/pncconf.py:2135 msgid "# spindle-velocity bounces around so we filter it with lowpass" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2072 +#: src/emc/usr_intf/pncconf/pncconf.py:2136 msgid "" "# spindle-velocity is signed so we use absolute component to remove sign" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2073 +#: src/emc/usr_intf/pncconf/pncconf.py:2137 msgid "# ACTUAL velocity is in RPS not RPM so we scale it." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2082 -msgid "" -"# Use COMMANDED spindle velocity from LinuxCNC because no spindle encoder " -"was specified" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.py:2083 -msgid "" -"# COMMANDED velocity is signed so we use absolute component to remove sign" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.py:2727 +#: src/emc/usr_intf/pncconf/pncconf.py:2821 msgid "# connect miscellaneous signals" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2730 +#: src/emc/usr_intf/pncconf/pncconf.py:2824 msgid "# ---HALUI signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2749 +#: src/emc/usr_intf/pncconf/pncconf.py:2843 msgid "# ---charge pump signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2753 +#: src/emc/usr_intf/pncconf/pncconf.py:2847 msgid "# ---coolant signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2758 +#: src/emc/usr_intf/pncconf/pncconf.py:2852 msgid "# ---probe signal---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2763 +#: src/emc/usr_intf/pncconf/pncconf.py:2857 msgid "# ---jog button signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2768 +#: src/emc/usr_intf/pncconf/pncconf.py:2862 msgid "# ---USB device jog button signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2803 -#: src/emc/usr_intf/pncconf/pncconf.py:2825 +#: src/emc/usr_intf/pncconf/pncconf.py:2903 +#: src/emc/usr_intf/pncconf/pncconf.py:2929 msgid "# ---mpg signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2971 +#: src/emc/usr_intf/pncconf/pncconf.py:3111 msgid "# ---motion control signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2976 +#: src/emc/usr_intf/pncconf/pncconf.py:3116 msgid "# ---digital in / out signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2986 +#: src/emc/usr_intf/pncconf/pncconf.py:3126 msgid "# ---estop signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3005 +#: src/emc/usr_intf/pncconf/pncconf.py:3145 msgid "# ---manual tool change signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3014 +#: src/emc/usr_intf/pncconf/pncconf.py:3154 msgid "# ---toolchange signals for custom tool changer---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3036 +#: src/emc/usr_intf/pncconf/pncconf.py:3176 msgid "# --- Classicladder signals for Z axis Auto touch off program---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3055 +#: src/emc/usr_intf/pncconf/pncconf.py:3195 msgid "# These files are loaded post gladeVCP, in the order they appear" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3069 -#: src/emc/usr_intf/pncconf/pncconf.py:3136 +#: src/emc/usr_intf/pncconf/pncconf.py:3209 +#: src/emc/usr_intf/pncconf/pncconf.py:3276 #, fuzzy msgid "# _DO NOT_ include your HAL commands here." msgstr "# Indlude comenzi HAL customizate aici" -#: src/emc/usr_intf/pncconf/pncconf.py:3070 +#: src/emc/usr_intf/pncconf/pncconf.py:3210 msgid "# Put custom HAL commands in custom_gvcp.hal" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3073 +#: src/emc/usr_intf/pncconf/pncconf.py:3213 msgid "# **** Setup of spindle speed display using gladevcp ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3082 +#: src/emc/usr_intf/pncconf/pncconf.py:3222 msgid "# **** Setup GLADE MDI buttons ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3095 +#: src/emc/usr_intf/pncconf/pncconf.py:3235 msgid "" "# **** Z axis touch-off button - requires the touch-off classicladder " "program ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3125 +#: src/emc/usr_intf/pncconf/pncconf.py:3265 msgid "# These files are loaded post GUI, in the order they appear" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3137 +#: src/emc/usr_intf/pncconf/pncconf.py:3277 msgid "# Put custom HAL commands in custom_postgui.hal" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3138 +#: src/emc/usr_intf/pncconf/pncconf.py:3278 #, fuzzy msgid "# The commands in this file are run after the GUI loads" msgstr "" "# Comenzile din acest fisier sunt executate dupa ce AXIS (inclusiv PyVCP)\n" "# a pornit" -#: src/emc/usr_intf/pncconf/pncconf.py:3148 +#: src/emc/usr_intf/pncconf/pncconf.py:3288 msgid "# **** Setup of spindle speed display using pyvcp -END ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3160 +#: src/emc/usr_intf/pncconf/pncconf.py:3300 #, fuzzy msgid "# This file will not be overwritten when you run PNCconf again" msgstr "# Acest fisier nu va fi suprascris cand rulati stepconf din nou" -#: src/emc/usr_intf/pncconf/pncconf.py:3166 +#: src/emc/usr_intf/pncconf/pncconf.py:3306 msgid "# These commands are required for Touchy GUI" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3218 +#: src/emc/usr_intf/pncconf/pncconf.py:3358 #, fuzzy, python-format msgid "Generated by PNCconf at %s" msgstr "Generat de stepconf la %s" -#: src/emc/usr_intf/pncconf/pncconf.py:3230 +#: src/emc/usr_intf/pncconf/pncconf.py:3370 msgid "configures LinuxCNC as:\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3231 +#: src/emc/usr_intf/pncconf/pncconf.py:3371 msgid "type CNC\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3232 +#: src/emc/usr_intf/pncconf/pncconf.py:3372 msgid "will be used as the frontend display" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3241 +#: src/emc/usr_intf/pncconf/pncconf.py:3381 msgid " connector" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3253 +#: src/emc/usr_intf/pncconf/pncconf.py:3393 msgid "invrt" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3262 +#: src/emc/usr_intf/pncconf/pncconf.py:3402 #, python-format msgid "%(name)s Parport" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3267 -#: src/emc/usr_intf/pncconf/pncconf.py:3275 +#: src/emc/usr_intf/pncconf/pncconf.py:3407 +#: src/emc/usr_intf/pncconf/pncconf.py:3415 msgid "-> inverted" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3269 +#: src/emc/usr_intf/pncconf/pncconf.py:3409 #, python-format msgid "pin# %(pinnum)d is connected to input signal:'%(data)s' %(mesag)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3277 +#: src/emc/usr_intf/pncconf/pncconf.py:3417 #, python-format msgid "pin# %(pinnum)d is connected to output signal:'%(data)s' %(mesag)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3455 +#: src/emc/usr_intf/pncconf/pncconf.py:3595 #, fuzzy msgid "Desktop Launcher for LinuxCNC config made by PNCconf" msgstr "Dekstop Launcher pentru EMC creat de Stepconf" -#: src/emc/usr_intf/pncconf/pncconf.py:3725 +#: src/emc/usr_intf/pncconf/pncconf.py:3856 +#, fuzzy, python-format +msgid "%s Axis Configuration" +msgstr "Configurare HAL" + +#: src/emc/usr_intf/pncconf/pncconf.py:3881 #, fuzzy msgid "Spindle Motor/Encoder Configuration" msgstr "Configuratie Axa X" -#: src/emc/usr_intf/pncconf/pncconf.py:3727 +#: src/emc/usr_intf/pncconf/pncconf.py:3883 #, fuzzy, python-format msgid "%s Axis Motor/Encoder Configuration" msgstr "Configuratie HAL %s" -#: src/emc/usr_intf/pncconf/pncconf.py:3756 +#: src/emc/usr_intf/pncconf/pncconf.py:3912 #, fuzzy, python-format msgid "%s Parallel Port Setup" msgstr "Setare port paralel" -#: src/emc/usr_intf/pncconf/pncconf.py:3780 +#: src/emc/usr_intf/pncconf/pncconf.py:3936 #, python-format msgid "%s I/0 Setup" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4001 +#: src/emc/usr_intf/pncconf/pncconf.py:4162 #, fuzzy msgid "Quit PNCconfig and discard changes?" msgstr "Paraseste Stepconf si sterge modificari?" -#: src/emc/usr_intf/pncconf/pncconf.py:4042 -#: src/emc/usr_intf/pncconf/pncconf.glade:65849 +#: src/emc/usr_intf/pncconf/pncconf.py:4203 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Help Pages" msgstr "Imagine de adancime" -#: src/emc/usr_intf/pncconf/pncconf.py:4047 +#: src/emc/usr_intf/pncconf/pncconf.py:4208 #, fuzzy msgid "Help page is unavailable\n" msgstr "Nu exista detalii." -#: src/emc/usr_intf/pncconf/pncconf.py:4054 +#: src/emc/usr_intf/pncconf/pncconf.py:4218 msgid "" "You are using a simulated-realtime version of LinuxCNC, so testing / tuning " "of external hardware is unavailable." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4059 +#: src/emc/usr_intf/pncconf/pncconf.py:4223 #, python-format msgid "" "You are using a realtime version of LinuxCNC but didn't load a realtime " @@ -8798,80 +11224,77 @@ msgid "" " You are using the %(actual)s kernel instead of %(needed)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4079 -#, python-format -msgid "" -"You are have no hostmot2 firmware downloaded in folder:\n" -"%s\n" -"PNCconf will use sample firmware data\n" -"live testing will not be possible" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.py:4093 +#: src/emc/usr_intf/pncconf/pncconf.py:4256 #, fuzzy msgid "LinuxCNC 'PNCconf' configuration files" msgstr "Selector configuratii EMC2" -#: src/emc/usr_intf/pncconf/pncconf.py:4123 +#: src/emc/usr_intf/pncconf/pncconf.py:4286 msgid "" "It seems data in this file is from too old of a version of PNCConf to " "continue.\n" "." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4130 -#: src/emc/usr_intf/pncconf/pncconf.py:4228 +#: src/emc/usr_intf/pncconf/pncconf.py:4293 +#: src/emc/usr_intf/pncconf/pncconf.py:4391 #, fuzzy, python-format msgid "Point and click configuration - %s.pncconf " msgstr "Pentru a executa EMC2 cu o configuratie existenta," -#: src/emc/usr_intf/pncconf/pncconf.py:4250 +#: src/emc/usr_intf/pncconf/pncconf.py:4413 msgid "" "You need to designate a parport and/or mesa I/O device before continuing." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4309 +#: src/emc/usr_intf/pncconf/pncconf.py:4481 msgid "" "You Have choosen to re-edit the current config, so you can not go to the new/" "modify page.\n" " Quit and reload PNCconf if you wish to build a new config." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4313 +#: src/emc/usr_intf/pncconf/pncconf.py:4485 msgid "" "If you can not go to the new/modify page your current data will be lost.\n" "Ok to reset data and start a new configuration?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4594 +#: src/emc/usr_intf/pncconf/pncconf.py:4811 msgid "USB device Info Search" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4608 +#: src/emc/usr_intf/pncconf/pncconf.py:4825 #, fuzzy msgid "USB device page is unavailable\n" msgstr "Nu exista detalii." -#: src/emc/usr_intf/pncconf/pncconf.py:4673 +#: src/emc/usr_intf/pncconf/pncconf.py:4890 msgid "Pin names are unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4695 +#: src/emc/usr_intf/pncconf/pncconf.py:4912 msgid "Device names are unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4698 +#: src/emc/usr_intf/pncconf/pncconf.py:4915 msgid "No Pncconf made device rules were found\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4822 +#: src/emc/usr_intf/pncconf/pncconf.py:5041 +#, fuzzy msgid "" "OK to replace existing glade panel ?\n" "It will be renamed and added to 'backups' folder.\n" -" Clicking 'existing custom program' will aviod this warning. " +" Clicking 'existing custom program' will avoid this warning, but if you " +"change related options later -such as spindle feedback- the HAL connection " +"will not update" msgstr "" +"OK sa inlocuiesc program ladder existent?\n" +"Fisierul existent Custom.clp va fi redenumit custom_backup.clp.\n" +"Daca exista deja un fisier -custom_backup.clp- acesta va fi pierdut. " -#: src/emc/usr_intf/pncconf/pncconf.py:4827 +#: src/emc/usr_intf/pncconf/pncconf.py:5047 #, fuzzy msgid "" "OK to replace existing custom pyvcp panel?\n" @@ -8882,33 +11305,33 @@ msgstr "" "Fisierul existent Custom.clp va fi redenumit custom_backup.clp.\n" "Daca exista deja un fisier -custom_backup.clp- acesta va fi pierdut. " -#: src/emc/usr_intf/pncconf/pncconf.py:5250 +#: src/emc/usr_intf/pncconf/pncconf.py:5493 msgid "" "You need to configure the mesa0 page.\n" " Choose the board type, firmware, component amounts and press 'Accept " "component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5254 +#: src/emc/usr_intf/pncconf/pncconf.py:5497 msgid "" "The chosen Mesa0 board is different from the current displayed.\n" "please press 'Accept component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5297 +#: src/emc/usr_intf/pncconf/pncconf.py:5540 msgid "" "You need to configure the mesa1 page.\n" " Choose the board type, firmware, component amounts and press 'Accept " "component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5301 +#: src/emc/usr_intf/pncconf/pncconf.py:5544 msgid "" "The chosen Mesa1 board is different from the current displayed.\n" "please press 'Accept component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5315 +#: src/emc/usr_intf/pncconf/pncconf.py:5558 msgid "" "Do to technical reasons this test panel can be loaded only once without " "reloading pncconf.You also will not be able to do any other testing untill " @@ -8917,202 +11340,213 @@ msgid "" "Do you wish to continue the test?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6699 +#: src/emc/usr_intf/pncconf/pncconf.py:7042 #, fuzzy msgid "First Parallel Port set for OUTPUT" msgstr "Setare port paralel" -#: src/emc/usr_intf/pncconf/pncconf.py:6701 +#: src/emc/usr_intf/pncconf/pncconf.py:7044 #, fuzzy msgid "First Parallel Port set for INPUT" msgstr "Setare port paralel" -#: src/emc/usr_intf/pncconf/pncconf.py:6725 +#: src/emc/usr_intf/pncconf/pncconf.py:7068 msgid "Second Parallel Port set for OUTPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6727 +#: src/emc/usr_intf/pncconf/pncconf.py:7070 #, fuzzy msgid "Second Parallel Port set for INPUT" msgstr "Setare port paralel" -#: src/emc/usr_intf/pncconf/pncconf.py:6739 +#: src/emc/usr_intf/pncconf/pncconf.py:7082 #, fuzzy msgid "Third Parallel Port set for OUTPUT" msgstr "Setare port paralel" -#: src/emc/usr_intf/pncconf/pncconf.py:6741 +#: src/emc/usr_intf/pncconf/pncconf.py:7084 #, fuzzy msgid "Third Parallel Port set for INPUT" msgstr "Setare port paralel" -#: src/emc/usr_intf/pncconf/pncconf.py:6866 +#: src/emc/usr_intf/pncconf/pncconf.py:7210 msgid "You can not have both steppers and pwm signals for spindle control\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6870 +#: src/emc/usr_intf/pncconf/pncconf.py:7214 #, python-format msgid "You forgot to designate a stepper or pwm signal for axis %s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6873 +#: src/emc/usr_intf/pncconf/pncconf.py:7217 #, python-format msgid "You forgot to designate an encoder /resolver signal for axis %s servo\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6876 +#: src/emc/usr_intf/pncconf/pncconf.py:7220 #, python-format msgid "You forgot to designate a pwm signal or stepper signal for axis %s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6879 +#: src/emc/usr_intf/pncconf/pncconf.py:7223 #, python-format msgid "You can not have both steppers and pwm signals for axis %s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6887 +#: src/emc/usr_intf/pncconf/pncconf.py:7226 +#, python-format +msgid "" +"If using a tandem axis stepper, you must select a master stepgen for axis " +"%s\n" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:7235 msgid "Touchy require an external cycle start signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6890 +#: src/emc/usr_intf/pncconf/pncconf.py:7238 msgid "Touchy require an external abort signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6893 +#: src/emc/usr_intf/pncconf/pncconf.py:7241 msgid "Touchy require an external single-step signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6896 +#: src/emc/usr_intf/pncconf/pncconf.py:7244 msgid "" "Touchy require an external multi handwheel MPG encoder signal on the mesa " "page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6899 +#: src/emc/usr_intf/pncconf/pncconf.py:7247 msgid "" "Touchy require 'external mpg jogging' to be selected on the external control " "page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6902 +#: src/emc/usr_intf/pncconf/pncconf.py:7250 msgid "" "Touchy require the external mpg to be in 'shared mpg' mode on the external " "controls page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6905 +#: src/emc/usr_intf/pncconf/pncconf.py:7253 msgid "" "Touchy require selectable increments to be unchecked on the external " "controls page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6909 +#: src/emc/usr_intf/pncconf/pncconf.py:7257 msgid "" "The 7i29 daughter board requires PWM type generators and a PWM base " "frequency of 20 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6912 +#: src/emc/usr_intf/pncconf/pncconf.py:7260 msgid "" "The 7i30 daughter board requires PWM type generators and a PWM base " "frequency of 20 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6915 +#: src/emc/usr_intf/pncconf/pncconf.py:7263 msgid "" "The 7i33 daughter board requires PDM type generators and a PDM base " "frequency of 6 Mhz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6918 +#: src/emc/usr_intf/pncconf/pncconf.py:7266 msgid "" "The 7i40 daughter board requires PWM type generators and a PWM base " "frequency of 50 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6921 +#: src/emc/usr_intf/pncconf/pncconf.py:7269 msgid "" "The 7i48 daughter board requires UDM type generators and a PWM base " "frequency of 24 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7148 +#: src/emc/usr_intf/pncconf/pncconf.py:7494 msgid "Gearbox Reduction Ratio" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7151 +#: src/emc/usr_intf/pncconf/pncconf.py:7497 msgid "Reduction Ratio" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7154 +#: src/emc/usr_intf/pncconf/pncconf.py:7500 #, fuzzy msgid "Leadscrew Pitch" msgstr "Pas surub:" -#: src/emc/usr_intf/pncconf/pncconf.py:7157 -#: src/emc/usr_intf/pncconf/pncconf.glade:66327 -#: src/emc/usr_intf/pncconf/pncconf.glade:66622 +#: src/emc/usr_intf/pncconf/pncconf.py:7503 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Leadscrew TPI" msgstr "Pas surub:" -#: src/emc/usr_intf/pncconf/pncconf.py:7161 -#: src/emc/usr_intf/pncconf/pncconf.py:7162 +#: src/emc/usr_intf/pncconf/pncconf.py:7507 +#: src/emc/usr_intf/pncconf/pncconf.py:7508 msgid "(" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7163 -#: src/emc/usr_intf/pncconf/pncconf.py:7173 -#: src/emc/usr_intf/pncconf/pncconf.py:7174 -#: src/emc/usr_intf/pncconf/pncconf.py:7175 +#: src/emc/usr_intf/pncconf/pncconf.py:7509 +#: src/emc/usr_intf/pncconf/pncconf.py:7519 +#: src/emc/usr_intf/pncconf/pncconf.py:7520 +#: src/emc/usr_intf/pncconf/pncconf.py:7521 #, fuzzy msgid " / min" msgstr "mm / s" -#: src/emc/usr_intf/pncconf/pncconf.py:7164 +#: src/emc/usr_intf/pncconf/pncconf.py:7510 #, fuzzy msgid " / sec²" msgstr "mm / s²" -#: src/emc/usr_intf/pncconf/pncconf.py:7167 +#: src/emc/usr_intf/pncconf/pncconf.py:7513 #, fuzzy msgid " / Step" msgstr "Pas" -#: src/emc/usr_intf/pncconf/pncconf.py:7168 +#: src/emc/usr_intf/pncconf/pncconf.py:7514 #, fuzzy msgid "Steps / " msgstr "Pasi / mm" -#: src/emc/usr_intf/pncconf/pncconf.py:7170 +#: src/emc/usr_intf/pncconf/pncconf.py:7516 #, fuzzy msgid " / encoder pulse" msgstr "grade / tura" -#: src/emc/usr_intf/pncconf/pncconf.py:7171 +#: src/emc/usr_intf/pncconf/pncconf.py:7517 #, fuzzy msgid "Encoder pulses / " msgstr "mm / tura" -#: src/emc/usr_intf/pncconf/pncconf.py:7482 +#: src/emc/usr_intf/pncconf/pncconf.py:7525 +#, fuzzy +msgid "Resolver Scale:" +msgstr "Spatiu simplu" + +#: src/emc/usr_intf/pncconf/pncconf.py:7826 msgid "Axis Scale Calculation" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7785 +#: src/emc/usr_intf/pncconf/pncconf.py:8133 #, fuzzy msgid "You need to designate an E-stop input pin for this ladder program." msgstr "" "Trebuie sa asignezi un pin de intrare pentru E-stop la pagina de setare a " "portului paralel, pentru acest program." -#: src/emc/usr_intf/pncconf/pncconf.py:7797 +#: src/emc/usr_intf/pncconf/pncconf.py:8145 #, fuzzy msgid "You need to designate a probe input pin for this ladder program." msgstr "" "Trebuie sa asignezi un pin de intrare pentru E-stop la pagina de setare a " "portului paralel, pentru acest program." -#: src/emc/usr_intf/pncconf/pncconf.py:7808 +#: src/emc/usr_intf/pncconf/pncconf.py:8156 #, fuzzy msgid "" "OK to replace existing custom ladder program?\n" @@ -9124,90 +11558,90 @@ msgstr "" "Fisierul existent Custom.clp va fi redenumit custom_backup.clp.\n" "Daca exista deja un fisier -custom_backup.clp- acesta va fi pierdut. " -#: src/emc/usr_intf/pncconf/pncconf.py:8019 +#: src/emc/usr_intf/pncconf/pncconf.py:8374 #, fuzzy msgid "Do you wish to continue to edit this configuration." msgstr "" "\n" "Detalii despre configuratia selectata:" -#: src/emc/usr_intf/pncconf/pncconf.py:8058 +#: src/emc/usr_intf/pncconf/pncconf.py:8413 msgid "PCI search page is unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8176 +#: src/emc/usr_intf/pncconf/pncconf.py:8532 msgid "" "You specified there is an existing gladefile, But there is not one in the " "machine-named folder.." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8495 +#: src/emc/usr_intf/pncconf/pncconf.py:8856 msgid "Servo tuning is not avaiable in PNCconf yet\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8500 +#: src/emc/usr_intf/pncconf/pncconf.py:8861 #, fuzzy msgid "degrees" msgstr "grade / tura" -#: src/emc/usr_intf/pncconf/pncconf.py:8501 +#: src/emc/usr_intf/pncconf/pncconf.py:8862 #, fuzzy msgid "degrees / minute" msgstr "grade / tura" -#: src/emc/usr_intf/pncconf/pncconf.py:8502 +#: src/emc/usr_intf/pncconf/pncconf.py:8863 #, fuzzy msgid "degrees / second²" msgstr "grade / s²" -#: src/emc/usr_intf/pncconf/pncconf.py:8504 +#: src/emc/usr_intf/pncconf/pncconf.py:8865 #, fuzzy msgid "revolutions" msgstr "Pozitie:" -#: src/emc/usr_intf/pncconf/pncconf.py:8505 +#: src/emc/usr_intf/pncconf/pncconf.py:8866 msgid "rpm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8506 +#: src/emc/usr_intf/pncconf/pncconf.py:8867 #, fuzzy msgid "revs / second²" msgstr "grade / s²" -#: src/emc/usr_intf/pncconf/pncconf.py:8509 -#: src/emc/usr_intf/pncconf/pncconf.glade:58295 -#: src/emc/usr_intf/pncconf/pncconf.glade:58479 -#: src/emc/usr_intf/pncconf/pncconf.glade:58576 +#: src/emc/usr_intf/pncconf/pncconf.py:8870 +#: src/emc/usr_intf/pncconf/pncconf.glade:65184 +#: src/emc/usr_intf/pncconf/pncconf.glade:65281 +#: src/emc/usr_intf/pncconf/pncconf.glade:65465 #, fuzzy msgid "mm / minute" msgstr "mm / tura" -#: src/emc/usr_intf/pncconf/pncconf.py:8510 +#: src/emc/usr_intf/pncconf/pncconf.py:8871 #, fuzzy msgid "mm / second²" msgstr "mm / s²" -#: src/emc/usr_intf/pncconf/pncconf.py:8513 +#: src/emc/usr_intf/pncconf/pncconf.py:8874 msgid "inches / minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8514 +#: src/emc/usr_intf/pncconf/pncconf.py:8875 #, fuzzy msgid "inches / second²" msgstr "inch / s²" -#: src/emc/usr_intf/pncconf/pncconf.py:8646 +#: src/emc/usr_intf/pncconf/pncconf.py:9031 #, fuzzy, python-format msgid "%s Axis Tune" msgstr "Testeaza axa %s" -#: src/emc/usr_intf/pncconf/pncconf.py:8810 +#: src/emc/usr_intf/pncconf/pncconf.py:9195 msgid "" " You must designate a ENCODER / RESOLVER signal and an ANALOG SPINDLE signal " "for this axis test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8814 +#: src/emc/usr_intf/pncconf/pncconf.py:9199 msgid "" " You must designate a ENCODER / RESOLVER signal and a PWM signal for this " "axis test" @@ -9234,50 +11668,73 @@ msgstr "" msgid "Create or Edit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:52 +#: src/emc/usr_intf/pncconf/pncconf.glade:66 #, fuzzy -msgid "Create a new configuration" -msgstr "Configuratii model" +msgid "Create a desktop launcher to start LinuxCNC with this configuration." +msgstr "" +"Creaza desktop shortcut pentru a rula LinuxCNC cu aceasta configuratie." -#: src/emc/usr_intf/pncconf/pncconf.glade:118 +#: src/emc/usr_intf/pncconf/pncconf.glade:83 #, fuzzy msgid "Create a desktop shortcut (symlink) to configuration files." msgstr "Creaza desktop shortcut (link simbolic) catre aceasta configuratie." -#: src/emc/usr_intf/pncconf/pncconf.glade:135 +#: src/emc/usr_intf/pncconf/pncconf.glade:148 #, fuzzy -msgid "Create a desktop launcher to start LinuxCNC with this configuration." -msgstr "" -"Creaza desktop shortcut pentru a rula LinuxCNC cu aceasta configuratie." +msgid "Create a new configuration" +msgstr "Configuratii model" + +#: src/emc/usr_intf/pncconf/pncconf.glade:175 +#, fuzzy +msgid "Basic machine information" +msgstr "Informatii versiune" #: src/emc/usr_intf/pncconf/pncconf.glade:214 #, fuzzy msgid "Machine Name:" msgstr "Masina pornita" -#: src/emc/usr_intf/pncconf/pncconf.glade:281 +#: src/emc/usr_intf/pncconf/pncconf.glade:280 #, fuzzy msgid "Axis configuration:" msgstr "Configurare HAL" -#: src/emc/usr_intf/pncconf/pncconf.glade:316 +#: src/emc/usr_intf/pncconf/pncconf.glade:295 +msgid "" +"XYZ\n" +"XYZA\n" +"XZ (Lathe)" +msgstr "" +"XYZ\n" +"XYZA\n" +"XZ (Strung)" + +#: src/emc/usr_intf/pncconf/pncconf.glade:322 #, fuzzy msgid "Machine units:" msgstr "Masina pornita" -#: src/emc/usr_intf/pncconf/pncconf.glade:355 -msgid "Machine Basics" +#: src/emc/usr_intf/pncconf/pncconf.glade:337 +msgid "" +"Inch\n" +"Millimeter" msgstr "" +"Inch\n" +"Milimetri" -#: src/emc/usr_intf/pncconf/pncconf.glade:405 -msgid "Recommend servo period: 1000000" +#: src/emc/usr_intf/pncconf/pncconf.glade:363 +msgid "Machine Basics" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:431 +#: src/emc/usr_intf/pncconf/pncconf.glade:416 msgid "Actual Servo Period: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:486 +#: src/emc/usr_intf/pncconf/pncconf.glade:475 +msgid "Recommend servo period: 1000000" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:494 #, fuzzy msgid "" " Test Base\n" @@ -9286,44 +11743,44 @@ msgstr "" "Baza _Testare\n" "Period Jitter " -#: src/emc/usr_intf/pncconf/pncconf.glade:511 +#: src/emc/usr_intf/pncconf/pncconf.glade:519 msgid "Computer Response Time" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:553 +#: src/emc/usr_intf/pncconf/pncconf.glade:561 msgid "Mesa0 PCI / Parport Card:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:563 +#: src/emc/usr_intf/pncconf/pncconf.glade:571 msgid "Mesa1 PCI / Parport Card:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:576 +#: src/emc/usr_intf/pncconf/pncconf.glade:584 #, fuzzy msgid "First Parport Address:" msgstr "Adresa port paralel 1:" -#: src/emc/usr_intf/pncconf/pncconf.glade:589 +#: src/emc/usr_intf/pncconf/pncconf.glade:597 #, fuzzy msgid "Second Parport Address:" msgstr "Adresa port paralel 2:" -#: src/emc/usr_intf/pncconf/pncconf.glade:604 +#: src/emc/usr_intf/pncconf/pncconf.glade:612 #, fuzzy msgid "Third Parport Address:" msgstr "Adresa port paralel 3:" -#: src/emc/usr_intf/pncconf/pncconf.glade:627 #: src/emc/usr_intf/pncconf/pncconf.glade:635 +#: src/emc/usr_intf/pncconf/pncconf.glade:643 msgid "" "5i20\n" "5i23\n" "5i22" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:708 -#: src/emc/usr_intf/pncconf/pncconf.glade:720 -#: src/emc/usr_intf/pncconf/pncconf.glade:733 +#: src/emc/usr_intf/pncconf/pncconf.glade:716 +#: src/emc/usr_intf/pncconf/pncconf.glade:728 +#: src/emc/usr_intf/pncconf/pncconf.glade:741 msgid "" "In\n" "Out" @@ -9331,7 +11788,7 @@ msgstr "" "Intrare\n" "Iesire" -#: src/emc/usr_intf/pncconf/pncconf.glade:796 +#: src/emc/usr_intf/pncconf/pncconf.glade:804 msgid "" "Add-on PCI\n" " Parport\n" @@ -9339,762 +11796,727 @@ msgid "" " Search" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:821 +#: src/emc/usr_intf/pncconf/pncconf.glade:829 msgid "I/O Control Ports/ Boards" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:870 +#: src/emc/usr_intf/pncconf/pncconf.glade:878 #, fuzzy msgid "Axis" msgstr "Axa" -#: src/emc/usr_intf/pncconf/pncconf.glade:885 +#: src/emc/usr_intf/pncconf/pncconf.glade:893 msgid "TKLinuxCNC" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:899 +#: src/emc/usr_intf/pncconf/pncconf.glade:907 #, fuzzy msgid "Mini" msgstr "Principal" -#: src/emc/usr_intf/pncconf/pncconf.glade:913 -#: src/emc/usr_intf/pncconf/pncconf.glade:6648 +#: src/emc/usr_intf/pncconf/pncconf.glade:921 +#: src/emc/usr_intf/pncconf/pncconf.glade:6656 #, fuzzy msgid "Touchy" msgstr "Atingere" -#: src/emc/usr_intf/pncconf/pncconf.glade:930 +#: src/emc/usr_intf/pncconf/pncconf.glade:938 msgid "GUI frontend list" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:965 +#: src/emc/usr_intf/pncconf/pncconf.glade:973 #, fuzzy msgid "External Controls" msgstr "Manual" -#: src/emc/usr_intf/pncconf/pncconf.glade:1006 +#: src/emc/usr_intf/pncconf/pncconf.glade:1014 msgid "Add device rule" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1019 +#: src/emc/usr_intf/pncconf/pncconf.glade:1027 #, fuzzy msgid "Test device" msgstr "Testeaza" -#: src/emc/usr_intf/pncconf/pncconf.glade:1033 +#: src/emc/usr_intf/pncconf/pncconf.glade:1041 msgid "Search for device rules" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1054 +#: src/emc/usr_intf/pncconf/pncconf.glade:1062 #, fuzzy msgid "Device Name:" msgstr "Masina pornita" -#: src/emc/usr_intf/pncconf/pncconf.glade:1117 -#: src/emc/usr_intf/pncconf/pncconf.glade:1255 -#, fuzzy -msgid "Jog Speed select A" -msgstr "Seteaza viteza jog" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1195 -msgid "Z -" +#: src/emc/usr_intf/pncconf/pncconf.glade:1125 +msgid "A +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1207 -msgid "Y -" +#: src/emc/usr_intf/pncconf/pncconf.glade:1135 +msgid "A -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1219 -#, fuzzy -msgid "X -" -msgstr "JOG X -" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1229 -msgid "Z +" +#: src/emc/usr_intf/pncconf/pncconf.glade:1169 +#: src/emc/usr_intf/pncconf/pncconf.glade:1181 +#: src/emc/usr_intf/pncconf/pncconf.glade:1191 +#: src/emc/usr_intf/pncconf/pncconf.glade:1246 +#: src/emc/usr_intf/pncconf/pncconf.glade:1759 +msgid "mm/min " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1239 -msgid "Y +" +#: src/emc/usr_intf/pncconf/pncconf.glade:1269 +msgid " ab)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1249 +#: src/emc/usr_intf/pncconf/pncconf.glade:1282 +#: src/emc/usr_intf/pncconf/pncconf.glade:2493 +#: src/emc/usr_intf/pncconf/pncconf.glade:2927 +#: src/emc/usr_intf/pncconf/pncconf.glade:3808 +#: src/emc/usr_intf/pncconf/pncconf.glade:4689 #, fuzzy -msgid "X +" -msgstr "JOG X +" +msgid " b)" +msgstr "Pozitie 0" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1293 +#: src/emc/usr_intf/pncconf/pncconf.glade:2482 +#: src/emc/usr_intf/pncconf/pncconf.glade:2916 +#: src/emc/usr_intf/pncconf/pncconf.glade:3797 +#: src/emc/usr_intf/pncconf/pncconf.glade:4678 +#, fuzzy +msgid " a)" +msgstr "Pozitie 0" -#: src/emc/usr_intf/pncconf/pncconf.glade:1289 -#: src/emc/usr_intf/pncconf/pncconf.glade:2208 -#: src/emc/usr_intf/pncconf/pncconf.glade:3496 -#: src/emc/usr_intf/pncconf/pncconf.glade:4377 -#: src/emc/usr_intf/pncconf/pncconf.glade:5258 +#: src/emc/usr_intf/pncconf/pncconf.glade:1305 +#: src/emc/usr_intf/pncconf/pncconf.glade:2385 +#: src/emc/usr_intf/pncconf/pncconf.glade:2867 +#: src/emc/usr_intf/pncconf/pncconf.glade:3748 +#: src/emc/usr_intf/pncconf/pncconf.glade:4629 #, fuzzy msgid "default" msgstr "Freza oprita" -#: src/emc/usr_intf/pncconf/pncconf.glade:1299 -#: src/emc/usr_intf/pncconf/pncconf.glade:2107 -#: src/emc/usr_intf/pncconf/pncconf.glade:3443 -#: src/emc/usr_intf/pncconf/pncconf.glade:4324 -#: src/emc/usr_intf/pncconf/pncconf.glade:5205 +#: src/emc/usr_intf/pncconf/pncconf.glade:1336 +#: src/emc/usr_intf/pncconf/pncconf.glade:1476 #, fuzzy -msgid " a)" -msgstr "Pozitie 0" +msgid "Jog Speed select A" +msgstr "Seteaza viteza jog" -#: src/emc/usr_intf/pncconf/pncconf.glade:1311 -#: src/emc/usr_intf/pncconf/pncconf.glade:2096 -#: src/emc/usr_intf/pncconf/pncconf.glade:3432 -#: src/emc/usr_intf/pncconf/pncconf.glade:4313 -#: src/emc/usr_intf/pncconf/pncconf.glade:5194 -#, fuzzy -msgid " b)" -msgstr "Pozitie 0" +#: src/emc/usr_intf/pncconf/pncconf.glade:1348 +#, fuzzy +msgid "X +" +msgstr "JOG X +" -#: src/emc/usr_intf/pncconf/pncconf.glade:1322 -msgid " ab)" +#: src/emc/usr_intf/pncconf/pncconf.glade:1354 +msgid "Y +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1348 -#: src/emc/usr_intf/pncconf/pncconf.glade:1401 -#: src/emc/usr_intf/pncconf/pncconf.glade:1413 -#: src/emc/usr_intf/pncconf/pncconf.glade:1423 -#: src/emc/usr_intf/pncconf/pncconf.glade:1751 -msgid "mm/min " +#: src/emc/usr_intf/pncconf/pncconf.glade:1364 +msgid "Z +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1456 -msgid "A -" +#: src/emc/usr_intf/pncconf/pncconf.glade:1374 +#, fuzzy +msgid "X -" +msgstr "JOG X -" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1384 +msgid "Y -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1468 -msgid "A +" +#: src/emc/usr_intf/pncconf/pncconf.glade:1396 +msgid "Z -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1492 +#: src/emc/usr_intf/pncconf/pncconf.glade:1500 #, fuzzy msgid "Digital Control" msgstr "Iesire digitala 0" -#: src/emc/usr_intf/pncconf/pncconf.glade:1539 -msgid "X " -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1545 -#: src/emc/usr_intf/pncconf/pncconf.glade:5901 -#: src/emc/usr_intf/pncconf/pncconf.glade:6531 -#: src/emc/usr_intf/pncconf/pncconf.glade:6910 -#: src/emc/usr_intf/pncconf/pncconf.glade:7257 +#: src/emc/usr_intf/pncconf/pncconf.glade:1593 +#: src/emc/usr_intf/gscreen/gscreen.glade:502 #, fuzzy -msgid "Y" -msgstr "yY" +msgid "A" +msgstr "_A" -#: src/emc/usr_intf/pncconf/pncconf.glade:1555 +#: src/emc/usr_intf/pncconf/pncconf.glade:1603 +#: src/emc/usr_intf/gscreen/gscreen.glade:374 #, fuzzy msgid "Z" msgstr "_Z" -#: src/emc/usr_intf/pncconf/pncconf.glade:1565 +#: src/emc/usr_intf/pncconf/pncconf.glade:1613 +#: src/emc/usr_intf/pncconf/pncconf.glade:6134 +#: src/emc/usr_intf/pncconf/pncconf.glade:6458 +#: src/emc/usr_intf/pncconf/pncconf.glade:6860 +#: src/emc/usr_intf/pncconf/pncconf.glade:7235 +#: src/emc/usr_intf/gscreen/gscreen.glade:244 #, fuzzy -msgid "A" -msgstr "_A" +msgid "Y" +msgstr "yY" #: src/emc/usr_intf/pncconf/pncconf.glade:1623 +msgid "X " +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1631 #, fuzzy msgid "Analog Control" msgstr "Manual" -#: src/emc/usr_intf/pncconf/pncconf.glade:1649 -#: src/emc/usr_intf/pncconf/pncconf.glade:1780 -#: src/emc/usr_intf/pncconf/pncconf.glade:2690 -#: src/emc/usr_intf/pncconf/pncconf.glade:3571 -#: src/emc/usr_intf/pncconf/pncconf.glade:4452 -#: src/emc/usr_intf/pncconf/pncconf.glade:5333 -#: src/emc/usr_intf/pncconf/pncconf.glade:57371 +#: src/emc/usr_intf/pncconf/pncconf.glade:1657 +#: src/emc/usr_intf/pncconf/pncconf.glade:1788 +#: src/emc/usr_intf/pncconf/pncconf.glade:2698 +#: src/emc/usr_intf/pncconf/pncconf.glade:3579 +#: src/emc/usr_intf/pncconf/pncconf.glade:4460 +#: src/emc/usr_intf/pncconf/pncconf.glade:5341 +#: src/emc/usr_intf/pncconf/pncconf.glade:64300 msgid "Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1667 +#: src/emc/usr_intf/pncconf/pncconf.glade:1675 msgid "USB Joystick Jogging " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1711 +#: src/emc/usr_intf/pncconf/pncconf.glade:1719 msgid "shared buttons for all axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1724 +#: src/emc/usr_intf/pncconf/pncconf.glade:1732 #, fuzzy msgid "buttons for each axis" msgstr "Misca a patra axa" -#: src/emc/usr_intf/pncconf/pncconf.glade:1798 +#: src/emc/usr_intf/pncconf/pncconf.glade:1806 msgid "External Button Jogging" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1839 +#: src/emc/usr_intf/pncconf/pncconf.glade:1847 msgid "Shared MPG / selectable axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1852 +#: src/emc/usr_intf/pncconf/pncconf.glade:1860 #, fuzzy msgid "Mpg per axis" msgstr "Misca prima axa" -#: src/emc/usr_intf/pncconf/pncconf.glade:1867 +#: src/emc/usr_intf/pncconf/pncconf.glade:1875 #, fuzzy msgid "selectable MPG increments" msgstr "increment" -#: src/emc/usr_intf/pncconf/pncconf.glade:1932 -#: src/emc/usr_intf/pncconf/pncconf.glade:2907 -#: src/emc/usr_intf/pncconf/pncconf.glade:3788 -#: src/emc/usr_intf/pncconf/pncconf.glade:4669 +#: src/emc/usr_intf/pncconf/pncconf.glade:1940 +#: src/emc/usr_intf/pncconf/pncconf.glade:3379 +#: src/emc/usr_intf/pncconf/pncconf.glade:4260 +#: src/emc/usr_intf/pncconf/pncconf.glade:5141 #, fuzzy -msgid "Mux options" -msgstr "Miscare" +msgid " d)" +msgstr "Pozitie 0" -#: src/emc/usr_intf/pncconf/pncconf.glade:1980 -#: src/emc/usr_intf/pncconf/pncconf.glade:2868 -#: src/emc/usr_intf/pncconf/pncconf.glade:3763 -#: src/emc/usr_intf/pncconf/pncconf.glade:4644 -msgid "use debounce" +#: src/emc/usr_intf/pncconf/pncconf.glade:1952 +#: src/emc/usr_intf/pncconf/pncconf.glade:3340 +#: src/emc/usr_intf/pncconf/pncconf.glade:4221 +#: src/emc/usr_intf/pncconf/pncconf.glade:5102 +msgid " abcd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1995 -msgid "use gray code" +#: src/emc/usr_intf/pncconf/pncconf.glade:1965 +#: src/emc/usr_intf/pncconf/pncconf.glade:3353 +#: src/emc/usr_intf/pncconf/pncconf.glade:4234 +#: src/emc/usr_intf/pncconf/pncconf.glade:5115 +msgid " bcd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2010 -msgid "ignore all inputs false" +#: src/emc/usr_intf/pncconf/pncconf.glade:1978 +#: src/emc/usr_intf/pncconf/pncconf.glade:3366 +#: src/emc/usr_intf/pncconf/pncconf.glade:4247 +#: src/emc/usr_intf/pncconf/pncconf.glade:5128 +msgid " acd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2035 -#: src/emc/usr_intf/pncconf/pncconf.glade:2048 -#: src/emc/usr_intf/pncconf/pncconf.glade:2061 -#: src/emc/usr_intf/pncconf/pncconf.glade:2407 -#: src/emc/usr_intf/pncconf/pncconf.glade:2420 -#: src/emc/usr_intf/pncconf/pncconf.glade:2433 -#: src/emc/usr_intf/pncconf/pncconf.glade:2446 -#: src/emc/usr_intf/pncconf/pncconf.glade:2457 -#: src/emc/usr_intf/pncconf/pncconf.glade:2470 -#: src/emc/usr_intf/pncconf/pncconf.glade:2483 -#: src/emc/usr_intf/pncconf/pncconf.glade:2496 -#: src/emc/usr_intf/pncconf/pncconf.glade:2509 -#: src/emc/usr_intf/pncconf/pncconf.glade:2522 -#: src/emc/usr_intf/pncconf/pncconf.glade:2535 -#: src/emc/usr_intf/pncconf/pncconf.glade:8343 -#: src/emc/usr_intf/pncconf/pncconf.glade:8379 -#: src/emc/usr_intf/pncconf/pncconf.glade:56542 -#: src/emc/usr_intf/pncconf/pncconf.glade:61266 -#: src/emc/usr_intf/pncconf/pncconf.glade:61278 -#: src/emc/usr_intf/pncconf/pncconf.glade:61290 -#: src/emc/usr_intf/pncconf/pncconf.glade:61302 -#: src/emc/usr_intf/pncconf/pncconf.glade:62475 -#: src/emc/usr_intf/pncconf/pncconf.glade:62487 -#: src/emc/usr_intf/pncconf/pncconf.glade:62499 -#: src/emc/usr_intf/pncconf/pncconf.glade:62511 -#: src/emc/usr_intf/pncconf/pncconf.glade:63452 -#: src/emc/usr_intf/pncconf/pncconf.glade:63464 -#: src/emc/usr_intf/pncconf/pncconf.glade:63476 -#: src/emc/usr_intf/pncconf/pncconf.glade:63488 -#: src/emc/usr_intf/pncconf/pncconf.glade:64661 -#: src/emc/usr_intf/pncconf/pncconf.glade:64673 -#: src/emc/usr_intf/pncconf/pncconf.glade:64685 -#: src/emc/usr_intf/pncconf/pncconf.glade:64697 -#: src/emc/usr_intf/pncconf/pncconf.glade:65608 -#: src/emc/usr_intf/pncconf/pncconf.glade:65620 -#: src/emc/usr_intf/pncconf/pncconf.glade:65632 -#: src/emc/usr_intf/pncconf/pncconf.glade:65644 -#, fuzzy -msgid "label" -msgstr "label42" - -#: src/emc/usr_intf/pncconf/pncconf.glade:2073 -#: src/emc/usr_intf/pncconf/pncconf.glade:2559 -#: src/emc/usr_intf/pncconf/pncconf.glade:3300 -#: src/emc/usr_intf/pncconf/pncconf.glade:4181 -#: src/emc/usr_intf/pncconf/pncconf.glade:5062 -msgid " abc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:1991 +#: src/emc/usr_intf/pncconf/pncconf.glade:3430 +#: src/emc/usr_intf/pncconf/pncconf.glade:4311 +#: src/emc/usr_intf/pncconf/pncconf.glade:5192 +msgid " cd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2086 -#: src/emc/usr_intf/pncconf/pncconf.glade:3422 -#: src/emc/usr_intf/pncconf/pncconf.glade:4303 -#: src/emc/usr_intf/pncconf/pncconf.glade:5184 -msgid " ab)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2004 +#: src/emc/usr_intf/pncconf/pncconf.glade:3404 +#: src/emc/usr_intf/pncconf/pncconf.glade:4285 +#: src/emc/usr_intf/pncconf/pncconf.glade:5166 +msgid " bd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2372 -#: src/emc/usr_intf/pncconf/pncconf.glade:3321 -#: src/emc/usr_intf/pncconf/pncconf.glade:4202 -#: src/emc/usr_intf/pncconf/pncconf.glade:5083 -msgid " ac)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2017 +#: src/emc/usr_intf/pncconf/pncconf.glade:3391 +#: src/emc/usr_intf/pncconf/pncconf.glade:4272 +#: src/emc/usr_intf/pncconf/pncconf.glade:5153 +msgid " ad)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2383 -#: src/emc/usr_intf/pncconf/pncconf.glade:3311 -#: src/emc/usr_intf/pncconf/pncconf.glade:4192 -#: src/emc/usr_intf/pncconf/pncconf.glade:5073 -msgid " bc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2030 +#: src/emc/usr_intf/pncconf/pncconf.glade:2514 +#: src/emc/usr_intf/pncconf/pncconf.glade:3059 +#: src/emc/usr_intf/pncconf/pncconf.glade:3940 +#: src/emc/usr_intf/pncconf/pncconf.glade:4821 +msgid " abc)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2547 -#: src/emc/usr_intf/pncconf/pncconf.glade:3332 -#: src/emc/usr_intf/pncconf/pncconf.glade:4213 -#: src/emc/usr_intf/pncconf/pncconf.glade:5094 +#: src/emc/usr_intf/pncconf/pncconf.glade:2041 +#: src/emc/usr_intf/pncconf/pncconf.glade:3026 +#: src/emc/usr_intf/pncconf/pncconf.glade:3907 +#: src/emc/usr_intf/pncconf/pncconf.glade:4788 #, fuzzy msgid " c)" msgstr "Pozitie 0" -#: src/emc/usr_intf/pncconf/pncconf.glade:2570 -#: src/emc/usr_intf/pncconf/pncconf.glade:2966 -#: src/emc/usr_intf/pncconf/pncconf.glade:3847 -#: src/emc/usr_intf/pncconf/pncconf.glade:4728 -msgid " ad)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2207 +#: src/emc/usr_intf/pncconf/pncconf.glade:3049 +#: src/emc/usr_intf/pncconf/pncconf.glade:3930 +#: src/emc/usr_intf/pncconf/pncconf.glade:4811 +msgid " bc)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2583 -#: src/emc/usr_intf/pncconf/pncconf.glade:2953 -#: src/emc/usr_intf/pncconf/pncconf.glade:3834 -#: src/emc/usr_intf/pncconf/pncconf.glade:4715 -msgid " bd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2217 +#: src/emc/usr_intf/pncconf/pncconf.glade:3038 +#: src/emc/usr_intf/pncconf/pncconf.glade:3919 +#: src/emc/usr_intf/pncconf/pncconf.glade:4800 +msgid " ac)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2596 -#: src/emc/usr_intf/pncconf/pncconf.glade:2927 -#: src/emc/usr_intf/pncconf/pncconf.glade:3808 -#: src/emc/usr_intf/pncconf/pncconf.glade:4689 -msgid " cd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2504 +#: src/emc/usr_intf/pncconf/pncconf.glade:2938 +#: src/emc/usr_intf/pncconf/pncconf.glade:3819 +#: src/emc/usr_intf/pncconf/pncconf.glade:4700 +msgid " ab)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2609 -#: src/emc/usr_intf/pncconf/pncconf.glade:2991 -#: src/emc/usr_intf/pncconf/pncconf.glade:3872 -#: src/emc/usr_intf/pncconf/pncconf.glade:4753 -msgid " acd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2577 +msgid "ignore all inputs false" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2622 -#: src/emc/usr_intf/pncconf/pncconf.glade:3004 -#: src/emc/usr_intf/pncconf/pncconf.glade:3885 -#: src/emc/usr_intf/pncconf/pncconf.glade:4766 -msgid " bcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2592 +msgid "use gray code" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2635 -#: src/emc/usr_intf/pncconf/pncconf.glade:3017 -#: src/emc/usr_intf/pncconf/pncconf.glade:3898 -#: src/emc/usr_intf/pncconf/pncconf.glade:4779 -msgid " abcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2607 +#: src/emc/usr_intf/pncconf/pncconf.glade:3489 +#: src/emc/usr_intf/pncconf/pncconf.glade:4356 +#: src/emc/usr_intf/pncconf/pncconf.glade:5237 +msgid "use debounce" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2648 -#: src/emc/usr_intf/pncconf/pncconf.glade:2979 -#: src/emc/usr_intf/pncconf/pncconf.glade:3860 -#: src/emc/usr_intf/pncconf/pncconf.glade:4741 +#: src/emc/usr_intf/pncconf/pncconf.glade:2658 +#: src/emc/usr_intf/pncconf/pncconf.glade:3453 +#: src/emc/usr_intf/pncconf/pncconf.glade:4334 +#: src/emc/usr_intf/pncconf/pncconf.glade:5215 #, fuzzy -msgid " d)" -msgstr "Pozitie 0" +msgid "Mux options" +msgstr "Miscare" -#: src/emc/usr_intf/pncconf/pncconf.glade:2664 +#: src/emc/usr_intf/pncconf/pncconf.glade:2672 #, fuzzy msgid "increments" msgstr "increment" -#: src/emc/usr_intf/pncconf/pncconf.glade:2708 +#: src/emc/usr_intf/pncconf/pncconf.glade:2716 msgid "External MPG Jogging" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2739 -#: src/emc/usr_intf/pncconf/pncconf.glade:3620 -#: src/emc/usr_intf/pncconf/pncconf.glade:4501 +#: src/emc/usr_intf/pncconf/pncconf.glade:2747 +#: src/emc/usr_intf/pncconf/pncconf.glade:3628 +#: src/emc/usr_intf/pncconf/pncconf.glade:4509 msgid "Use MPG " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2752 -#: src/emc/usr_intf/pncconf/pncconf.glade:3633 -#: src/emc/usr_intf/pncconf/pncconf.glade:4514 +#: src/emc/usr_intf/pncconf/pncconf.glade:2760 +#: src/emc/usr_intf/pncconf/pncconf.glade:3641 +#: src/emc/usr_intf/pncconf/pncconf.glade:4522 msgid "use switches" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2838 -#: src/emc/usr_intf/pncconf/pncconf.glade:3733 -#: src/emc/usr_intf/pncconf/pncconf.glade:4614 -msgid "ignore all-inputs false" +#: src/emc/usr_intf/pncconf/pncconf.glade:3417 +#: src/emc/usr_intf/pncconf/pncconf.glade:4298 +#: src/emc/usr_intf/pncconf/pncconf.glade:5179 +msgid " abd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2853 -#: src/emc/usr_intf/pncconf/pncconf.glade:3748 -#: src/emc/usr_intf/pncconf/pncconf.glade:4629 +#: src/emc/usr_intf/pncconf/pncconf.glade:3504 +#: src/emc/usr_intf/pncconf/pncconf.glade:4371 +#: src/emc/usr_intf/pncconf/pncconf.glade:5252 #, fuzzy msgid "use graycode" msgstr "Nefolosit" -#: src/emc/usr_intf/pncconf/pncconf.glade:2940 -#: src/emc/usr_intf/pncconf/pncconf.glade:3821 -#: src/emc/usr_intf/pncconf/pncconf.glade:4702 -msgid " abd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:3519 +#: src/emc/usr_intf/pncconf/pncconf.glade:4386 +#: src/emc/usr_intf/pncconf/pncconf.glade:5267 +msgid "ignore all-inputs false" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:3555 -#: src/emc/usr_intf/pncconf/pncconf.glade:4436 -#: src/emc/usr_intf/pncconf/pncconf.glade:5317 +#: src/emc/usr_intf/pncconf/pncconf.glade:3563 +#: src/emc/usr_intf/pncconf/pncconf.glade:4444 +#: src/emc/usr_intf/pncconf/pncconf.glade:5325 #, fuzzy msgid "Increments" msgstr "Increment" -#: src/emc/usr_intf/pncconf/pncconf.glade:3589 +#: src/emc/usr_intf/pncconf/pncconf.glade:3597 #, fuzzy msgid "External Feed Override" msgstr "Seteaza depasire viteza" -#: src/emc/usr_intf/pncconf/pncconf.glade:4470 +#: src/emc/usr_intf/pncconf/pncconf.glade:4478 msgid "Max Velocity Override" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5351 +#: src/emc/usr_intf/pncconf/pncconf.glade:5359 #, fuzzy msgid "External Spindle Override" msgstr "Seteaza depasire freza" -#: src/emc/usr_intf/pncconf/pncconf.glade:5379 +#: src/emc/usr_intf/pncconf/pncconf.glade:5387 #, fuzzy msgid "GUI configuration" msgstr "Configuratiile mele" -#: src/emc/usr_intf/pncconf/pncconf.glade:5398 +#: src/emc/usr_intf/pncconf/pncconf.glade:5406 msgid "Frontend" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5557 +#: src/emc/usr_intf/pncconf/pncconf.glade:5566 #, fuzzy -msgid "" -"Commanded\n" -"Actual" -msgstr "comandat" +msgid "Position_offset" +msgstr "Tip pozitie" -#: src/emc/usr_intf/pncconf/pncconf.glade:5570 +#: src/emc/usr_intf/pncconf/pncconf.glade:5573 #, fuzzy -msgid "" -"Machine\n" -"Relative\n" -msgstr "relativ" +msgid "Position_feedback" +msgstr "Tip pozitie" -#: src/emc/usr_intf/pncconf/pncconf.glade:5608 +#: src/emc/usr_intf/pncconf/pncconf.glade:5584 #, fuzzy -msgid "Max Feed Override" -msgstr "Depasire viteza:" +msgid "Max Spindle Override " +msgstr "Seteaza depasire freza" -#: src/emc/usr_intf/pncconf/pncconf.glade:5667 +#: src/emc/usr_intf/pncconf/pncconf.glade:5606 #, fuzzy msgid "Min Spindle Override" msgstr "Seteaza depasire freza" -#: src/emc/usr_intf/pncconf/pncconf.glade:5691 +#: src/emc/usr_intf/pncconf/pncconf.glade:5665 #, fuzzy -msgid "Max Spindle Override " -msgstr "Seteaza depasire freza" +msgid "Max Feed Override" +msgstr "Depasire viteza:" #: src/emc/usr_intf/pncconf/pncconf.glade:5702 #, fuzzy -msgid "Position_feedback" -msgstr "Tip pozitie" +msgid "" +"Machine\n" +"Relative\n" +msgstr "relativ" -#: src/emc/usr_intf/pncconf/pncconf.glade:5713 +#: src/emc/usr_intf/pncconf/pncconf.glade:5714 #, fuzzy -msgid "Position_offset" -msgstr "Tip pozitie" +msgid "" +"Commanded\n" +"Actual" +msgstr "comandat" -#: src/emc/usr_intf/pncconf/pncconf.glade:5721 +#: src/emc/usr_intf/pncconf/pncconf.glade:5729 msgid "General GUI Defaults" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5808 -msgid "Force Axis to Maximize" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5832 -#: src/emc/usr_intf/pncconf/pncconf.glade:6602 -#: src/emc/usr_intf/pncconf/pncconf.glade:6841 -#: src/emc/usr_intf/pncconf/pncconf.glade:7328 +#: src/emc/usr_intf/pncconf/pncconf.glade:5811 #, fuzzy -msgid "H" -msgstr "Hz" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5866 -#: src/emc/usr_intf/pncconf/pncconf.glade:6568 -#: src/emc/usr_intf/pncconf/pncconf.glade:6875 -#: src/emc/usr_intf/pncconf/pncconf.glade:7294 -msgid "W" -msgstr "" +msgid "Default linear velocity " +msgstr "Viteza cautare poz 0" -#: src/emc/usr_intf/pncconf/pncconf.glade:5876 -#: src/emc/usr_intf/pncconf/pncconf.glade:6556 -#: src/emc/usr_intf/pncconf/pncconf.glade:6885 -#: src/emc/usr_intf/pncconf/pncconf.glade:7282 +#: src/emc/usr_intf/pncconf/pncconf.glade:5818 #, fuzzy -msgid "X" -msgstr "_X" +msgid "Min linear velocity" +msgstr "Viteza cautare poz 0" -#: src/emc/usr_intf/pncconf/pncconf.glade:5914 -#: src/emc/usr_intf/pncconf/pncconf.glade:6519 -#: src/emc/usr_intf/pncconf/pncconf.glade:6923 -#: src/emc/usr_intf/pncconf/pncconf.glade:7244 +#: src/emc/usr_intf/pncconf/pncconf.glade:5829 #, fuzzy -msgid "Position" -msgstr "Tip pozitie" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5927 -#: src/emc/usr_intf/pncconf/pncconf.glade:6510 -#: src/emc/usr_intf/pncconf/pncconf.glade:6936 -#: src/emc/usr_intf/pncconf/pncconf.glade:7234 -msgid "size" -msgstr "" +msgid "Max linear velocity" +msgstr "Viteza maxima:" -#: src/emc/usr_intf/pncconf/pncconf.glade:5942 -#: src/emc/usr_intf/pncconf/pncconf.glade:5952 -#: src/emc/usr_intf/pncconf/pncconf.glade:6158 +#: src/emc/usr_intf/pncconf/pncconf.glade:5879 +#: src/emc/usr_intf/pncconf/pncconf.glade:6085 +#: src/emc/usr_intf/pncconf/pncconf.glade:6097 #, fuzzy msgid "mm / min" msgstr "mm / s" -#: src/emc/usr_intf/pncconf/pncconf.glade:5975 -#: src/emc/usr_intf/pncconf/pncconf.glade:5985 -#: src/emc/usr_intf/pncconf/pncconf.glade:5997 -#, fuzzy -msgid "Deg / min" -msgstr "grade / tura" - -#: src/emc/usr_intf/pncconf/pncconf.glade:6010 -msgid "xyzabc" +#: src/emc/usr_intf/pncconf/pncconf.glade:5892 +msgid "Default Angular velocity " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6023 -msgid "Axis Geometry" +#: src/emc/usr_intf/pncconf/pncconf.glade:5926 +msgid "gedit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6048 +#: src/emc/usr_intf/pncconf/pncconf.glade:5939 #, fuzzy -msgid "Max Angular velocity" +msgid "Min Angular velocity" msgstr "Viteza maxima:" -#: src/emc/usr_intf/pncconf/pncconf.glade:6061 -msgid "5mm 1mm .5mm .1mm .05mm .01mm .005mm" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:6074 +#: src/emc/usr_intf/pncconf/pncconf.glade:5966 #, fuzzy msgid "Increments " msgstr "Increment" -#: src/emc/usr_intf/pncconf/pncconf.glade:6099 +#: src/emc/usr_intf/pncconf/pncconf.glade:5977 +msgid "5mm 1mm .5mm .1mm .05mm .01mm .005mm" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:5990 #, fuzzy -msgid "Min Angular velocity" +msgid "Max Angular velocity" msgstr "Viteza maxima:" -#: src/emc/usr_intf/pncconf/pncconf.glade:6112 -msgid "gedit" +#: src/emc/usr_intf/pncconf/pncconf.glade:6017 +msgid "Axis Geometry" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6148 -msgid "Default Angular velocity " +#: src/emc/usr_intf/pncconf/pncconf.glade:6028 +msgid "xyzabc" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6211 +#: src/emc/usr_intf/pncconf/pncconf.glade:6040 +#: src/emc/usr_intf/pncconf/pncconf.glade:6052 +#: src/emc/usr_intf/pncconf/pncconf.glade:6064 #, fuzzy -msgid "Max linear velocity" -msgstr "Viteza maxima:" +msgid "Deg / min" +msgstr "grade / tura" + +#: src/emc/usr_intf/pncconf/pncconf.glade:6113 +#: src/emc/usr_intf/pncconf/pncconf.glade:6484 +#: src/emc/usr_intf/pncconf/pncconf.glade:6839 +#: src/emc/usr_intf/pncconf/pncconf.glade:7262 +msgid "size" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6222 +#: src/emc/usr_intf/pncconf/pncconf.glade:6122 +#: src/emc/usr_intf/pncconf/pncconf.glade:6471 +#: src/emc/usr_intf/pncconf/pncconf.glade:6848 +#: src/emc/usr_intf/pncconf/pncconf.glade:7248 #, fuzzy -msgid "Min linear velocity" -msgstr "Viteza cautare poz 0" +msgid "Position" +msgstr "Tip pozitie" -#: src/emc/usr_intf/pncconf/pncconf.glade:6233 +#: src/emc/usr_intf/pncconf/pncconf.glade:6159 +#: src/emc/usr_intf/pncconf/pncconf.glade:6433 +#: src/emc/usr_intf/pncconf/pncconf.glade:6885 +#: src/emc/usr_intf/pncconf/pncconf.glade:7210 +#: src/emc/usr_intf/gscreen/gscreen.glade:116 #, fuzzy -msgid "Default linear velocity " -msgstr "Viteza cautare poz 0" +msgid "X" +msgstr "_X" + +#: src/emc/usr_intf/pncconf/pncconf.glade:6171 +#: src/emc/usr_intf/pncconf/pncconf.glade:6423 +#: src/emc/usr_intf/pncconf/pncconf.glade:6897 +#: src/emc/usr_intf/pncconf/pncconf.glade:7200 +#: src/emc/usr_intf/gscreen/gscreen.glade:1142 +msgid "W" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6241 +#: src/emc/usr_intf/pncconf/pncconf.glade:6205 +#: src/emc/usr_intf/pncconf/pncconf.glade:6389 +#: src/emc/usr_intf/pncconf/pncconf.glade:6931 +#: src/emc/usr_intf/pncconf/pncconf.glade:7166 #, fuzzy -msgid "AXIS defaults" -msgstr "Foloseste implicit" +msgid "H" +msgstr "Hz" -#: src/emc/usr_intf/pncconf/pncconf.glade:6352 -msgid "Error Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:6227 +msgid "Force Axis to Maximize" msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:6249 +#, fuzzy +msgid "AXIS defaults" +msgstr "Foloseste implicit" + #: src/emc/usr_intf/pncconf/pncconf.glade:6365 -msgid "DTG Textcolor" +msgid "Force Touchy to Maximize after positioning" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6378 -#, fuzzy -msgid "Relative Textcolor" -msgstr "Pozitie relativa" +#: src/emc/usr_intf/pncconf/pncconf.glade:6501 +#: src/emc/usr_intf/pncconf/pncconf.glade:7333 +msgid "Follow System Theme\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6391 -msgid "Absolute Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:6514 +#: src/emc/usr_intf/pncconf/pncconf.glade:7347 +msgid "GTK Theme" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6454 +#: src/emc/usr_intf/pncconf/pncconf.glade:6540 +#: src/emc/usr_intf/gscreen/gscreen.glade:1857 msgid "Absolute Text Color" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6479 -#: src/emc/usr_intf/pncconf/pncconf.glade:7148 -msgid "GTK Theme" +#: src/emc/usr_intf/pncconf/pncconf.glade:6603 +msgid "Absolute Textcolor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6491 -#: src/emc/usr_intf/pncconf/pncconf.glade:7158 -msgid "Follow System Theme\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:6616 +#, fuzzy +msgid "Relative Textcolor" +msgstr "Pozitie relativa" + +#: src/emc/usr_intf/pncconf/pncconf.glade:6629 +msgid "DTG Textcolor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6624 -msgid "Force Touchy to Maximize after positioning" +#: src/emc/usr_intf/pncconf/pncconf.glade:6642 +msgid "Error Textcolor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6669 +#: src/emc/usr_intf/pncconf/pncconf.glade:6677 #, fuzzy msgid "GUI Options" msgstr "Optiuni PLC" -#: src/emc/usr_intf/pncconf/pncconf.glade:6700 +#: src/emc/usr_intf/pncconf/pncconf.glade:6708 msgid "Virtual Control Panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6775 +#: src/emc/usr_intf/pncconf/pncconf.glade:6783 msgid "XYZ buttons (uses Halui)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6946 +#: src/emc/usr_intf/pncconf/pncconf.glade:6954 msgid "Geometry Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7025 +#: src/emc/usr_intf/pncconf/pncconf.glade:7033 msgid "Pyvcp Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7097 +#: src/emc/usr_intf/pncconf/pncconf.glade:7105 msgid "Sample display " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7172 -msgid "Force Maximize" +#: src/emc/usr_intf/pncconf/pncconf.glade:7272 +msgid "Standalone Panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7186 -msgid "Center Tab Embeded" +#: src/emc/usr_intf/pncconf/pncconf.glade:7289 +msgid "Rightside Embeded" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7201 -msgid "Rightside Embeded" +#: src/emc/usr_intf/pncconf/pncconf.glade:7305 +msgid "Center Tab Embeded" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7217 -msgid "Standalone Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:7320 +msgid "Force Maximize" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7351 +#: src/emc/usr_intf/pncconf/pncconf.glade:7359 #, fuzzy msgid "Display Options" msgstr "Afisaj in _inchi" -#: src/emc/usr_intf/pncconf/pncconf.glade:7401 +#: src/emc/usr_intf/pncconf/pncconf.glade:7409 msgid "Max RPM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7414 +#: src/emc/usr_intf/pncconf/pncconf.glade:7422 #, fuzzy msgid "Spindle Speed Indicator" msgstr "Seteaza depasire viteza" -#: src/emc/usr_intf/pncconf/pncconf.glade:7426 +#: src/emc/usr_intf/pncconf/pncconf.glade:7434 #, fuzzy msgid "Spindle At Speed LED" msgstr "Seteaza depasire viteza" -#: src/emc/usr_intf/pncconf/pncconf.glade:7438 +#: src/emc/usr_intf/pncconf/pncconf.glade:7446 #, fuzzy msgid "Zero X Button" msgstr "Buton stanga" -#: src/emc/usr_intf/pncconf/pncconf.glade:7450 +#: src/emc/usr_intf/pncconf/pncconf.glade:7458 #, fuzzy msgid "Zero Y Button" msgstr "Buton stanga" -#: src/emc/usr_intf/pncconf/pncconf.glade:7462 +#: src/emc/usr_intf/pncconf/pncconf.glade:7470 #, fuzzy msgid "Zero Z Button" msgstr "Buton stanga" -#: src/emc/usr_intf/pncconf/pncconf.glade:7474 +#: src/emc/usr_intf/pncconf/pncconf.glade:7482 #, fuzzy msgid "Zero A Button" msgstr "Buton stanga" -#: src/emc/usr_intf/pncconf/pncconf.glade:7486 +#: src/emc/usr_intf/pncconf/pncconf.glade:7494 msgid "Requires Classicladder touch-off program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7487 +#: src/emc/usr_intf/pncconf/pncconf.glade:7495 msgid "Auto Z Touch Off Button" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7500 +#: src/emc/usr_intf/pncconf/pncconf.glade:7508 #, fuzzy msgid "Sample Options" msgstr "Optiuni exemple PyVCP" -#: src/emc/usr_intf/pncconf/pncconf.glade:7574 +#: src/emc/usr_intf/pncconf/pncconf.glade:7582 msgid "Gladevcp Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7597 +#: src/emc/usr_intf/pncconf/pncconf.glade:7605 #, fuzzy msgid "Include custom GladeVCP GUI panel" msgstr "Include panou PyVCP customizat" -#: src/emc/usr_intf/pncconf/pncconf.glade:7668 -msgid "Restore joint position after shutdown" +#: src/emc/usr_intf/pncconf/pncconf.glade:7676 +msgid "Force individual manual homing" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7683 -#, fuzzy -msgid "Move spindle up before tool change" +#: src/emc/usr_intf/pncconf/pncconf.glade:7689 +msgid "Random position toolchanger " msgstr "" -"Confirmare pe ecran pentru\n" -"schimbare scula" -#: src/emc/usr_intf/pncconf/pncconf.glade:7696 -msgid "Leave spindle on during tool change" +#: src/emc/usr_intf/pncconf/pncconf.glade:7704 +msgid "Require homing before MDI / Running" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7709 +#: src/emc/usr_intf/pncconf/pncconf.glade:7713 msgid "Popup Toolchange Prompt" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7723 -msgid "Require homing before MDI / Running" +#: src/emc/usr_intf/pncconf/pncconf.glade:7727 +msgid "Leave spindle on during tool change" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7732 -msgid "Random position toolchanger " +#: src/emc/usr_intf/pncconf/pncconf.glade:7740 +#, fuzzy +msgid "Move spindle up before tool change" msgstr "" +"Confirmare pe ecran pentru\n" +"schimbare scula" -#: src/emc/usr_intf/pncconf/pncconf.glade:7747 -msgid "Force individual manual homing" +#: src/emc/usr_intf/pncconf/pncconf.glade:7753 +msgid "Restore joint position after shutdown" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7761 +#: src/emc/usr_intf/pncconf/pncconf.glade:7769 msgid "Defaults and Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7789 +#: src/emc/usr_intf/pncconf/pncconf.glade:7797 msgid "Mesa0 I/O setup\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7809 +#: src/emc/usr_intf/pncconf/pncconf.glade:7817 msgid "" "Click on each page tab to configure signal names for each connector port.\n" "\n" @@ -10102,786 +12524,393 @@ msgid "" "accept the changes.\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7998 -msgid "Num of channels: " +#: src/emc/usr_intf/pncconf/pncconf.glade:8001 +msgid "3PWM base frequency:" msgstr "" #: src/emc/usr_intf/pncconf/pncconf.glade:8036 -msgid "7i29 daughter board" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:8045 -msgid "7i30 daughter board" -msgstr "" +#, fuzzy +msgid "Mesa parport address:" +msgstr "Adresa port paralel 1:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8057 -msgid "7i33 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:8047 +msgid "Firmware:" msgstr "" #: src/emc/usr_intf/pncconf/pncconf.glade:8069 -msgid "7i40 daughter board" +msgid "SVST8_4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8081 -msgid "7i48 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:8094 +msgid "Num of 3 pwm generators: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8096 -msgid "Sanity Checks" +#: src/emc/usr_intf/pncconf/pncconf.glade:8128 +msgid "Total number of pins:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8137 -msgid "Num of Smart Serial Ports:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8153 +msgid "" +"Accept components\n" +" Changes" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8148 -#, fuzzy -msgid "Board name" -msgstr "Mod cartesian" +#: src/emc/usr_intf/pncconf/pncconf.glade:8168 +msgid "PWM base frequency:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8155 -msgid "Num of step generators: " +#: src/emc/usr_intf/pncconf/pncconf.glade:8179 +msgid "PDM base frequency:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8166 -msgid "Num of pwm generators:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8190 +msgid "Watchdog timeout:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8177 +#: src/emc/usr_intf/pncconf/pncconf.glade:8307 msgid "Num of encoders:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8294 -msgid "Watchdog timeout:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8318 +msgid "Num of pwm generators:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8305 -msgid "PDM base frequency:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8329 +msgid "Num of step generators: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8316 -msgid "PWM base frequency:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8340 +#, fuzzy +msgid "Board name" +msgstr "Mod cartesian" + +#: src/emc/usr_intf/pncconf/pncconf.glade:8346 +msgid "Num of Smart Serial Ports:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8328 -msgid "" -"Accept components\n" -" Changes" +#: src/emc/usr_intf/pncconf/pncconf.glade:8393 +msgid "7i29 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8356 -msgid "Total number of pins:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8402 +msgid "7i30 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8389 -msgid "Num of 3 pwm generators: " +#: src/emc/usr_intf/pncconf/pncconf.glade:8414 +msgid "7i33 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8412 -msgid "SVST8_4" +#: src/emc/usr_intf/pncconf/pncconf.glade:8426 +msgid "7i40 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8437 -msgid "Firmware:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8438 +msgid "7i48 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8447 -#, fuzzy -msgid "Mesa parport address:" -msgstr "Adresa port paralel 1:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8453 +msgid "Sanity Checks" +msgstr "" #: src/emc/usr_intf/pncconf/pncconf.glade:8482 -msgid "3PWM base frequency:" +msgid "Num of channels: " +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:8494 +msgid "Num of resolvers:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8504 +#: src/emc/usr_intf/pncconf/pncconf.glade:8528 #, fuzzy msgid "" "Configuration\n" " Page" msgstr "Configurare HAL" -#: src/emc/usr_intf/pncconf/pncconf.glade:8698 -#: src/emc/usr_intf/pncconf/pncconf.glade:8712 -#: src/emc/usr_intf/pncconf/pncconf.glade:13677 -#: src/emc/usr_intf/pncconf/pncconf.glade:13689 -#: src/emc/usr_intf/pncconf/pncconf.glade:16373 -#: src/emc/usr_intf/pncconf/pncconf.glade:16385 -#: src/emc/usr_intf/pncconf/pncconf.glade:18883 -#: src/emc/usr_intf/pncconf/pncconf.glade:18895 -#: src/emc/usr_intf/pncconf/pncconf.glade:20747 -#: src/emc/usr_intf/pncconf/pncconf.glade:20759 -#: src/emc/usr_intf/pncconf/pncconf.glade:20962 -#: src/emc/usr_intf/pncconf/pncconf.glade:20976 -#: src/emc/usr_intf/pncconf/pncconf.glade:22758 -#: src/emc/usr_intf/pncconf/pncconf.glade:22772 -#: src/emc/usr_intf/pncconf/pncconf.glade:24554 -#: src/emc/usr_intf/pncconf/pncconf.glade:24568 -#: src/emc/usr_intf/pncconf/pncconf.glade:26330 -#: src/emc/usr_intf/pncconf/pncconf.glade:26344 -#: src/emc/usr_intf/pncconf/pncconf.glade:31324 -#: src/emc/usr_intf/pncconf/pncconf.glade:31336 -#: src/emc/usr_intf/pncconf/pncconf.glade:31600 -#: src/emc/usr_intf/pncconf/pncconf.glade:35669 -#: src/emc/usr_intf/pncconf/pncconf.glade:35681 -#: src/emc/usr_intf/pncconf/pncconf.glade:35814 -#: src/emc/usr_intf/pncconf/pncconf.glade:35828 -#: src/emc/usr_intf/pncconf/pncconf.glade:40000 -#: src/emc/usr_intf/pncconf/pncconf.glade:40012 -#: src/emc/usr_intf/pncconf/pncconf.glade:40174 -#: src/emc/usr_intf/pncconf/pncconf.glade:40188 -#: src/emc/usr_intf/pncconf/pncconf.glade:45168 -#: src/emc/usr_intf/pncconf/pncconf.glade:45180 -#: src/emc/usr_intf/pncconf/pncconf.glade:45431 -#: src/emc/usr_intf/pncconf/pncconf.glade:45445 -#: src/emc/usr_intf/pncconf/pncconf.glade:47097 -#: src/emc/usr_intf/pncconf/pncconf.glade:47111 -#: src/emc/usr_intf/pncconf/pncconf.glade:52091 -#: src/emc/usr_intf/pncconf/pncconf.glade:52103 -#: src/emc/usr_intf/pncconf/pncconf.glade:52354 -#: src/emc/usr_intf/pncconf/pncconf.glade:52368 -msgid "Num" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:8723 -#: src/emc/usr_intf/pncconf/pncconf.glade:8743 -#: src/emc/usr_intf/pncconf/pncconf.glade:8763 -#: src/emc/usr_intf/pncconf/pncconf.glade:8783 -#: src/emc/usr_intf/pncconf/pncconf.glade:8803 -#: src/emc/usr_intf/pncconf/pncconf.glade:8823 -#: src/emc/usr_intf/pncconf/pncconf.glade:8843 -#: src/emc/usr_intf/pncconf/pncconf.glade:8863 -#: src/emc/usr_intf/pncconf/pncconf.glade:8883 -#: src/emc/usr_intf/pncconf/pncconf.glade:8903 -#: src/emc/usr_intf/pncconf/pncconf.glade:8923 -#: src/emc/usr_intf/pncconf/pncconf.glade:8943 -#: src/emc/usr_intf/pncconf/pncconf.glade:8963 -#: src/emc/usr_intf/pncconf/pncconf.glade:8983 -#: src/emc/usr_intf/pncconf/pncconf.glade:9003 -#: src/emc/usr_intf/pncconf/pncconf.glade:9023 -#: src/emc/usr_intf/pncconf/pncconf.glade:9043 -#: src/emc/usr_intf/pncconf/pncconf.glade:9063 -#: src/emc/usr_intf/pncconf/pncconf.glade:9083 -#: src/emc/usr_intf/pncconf/pncconf.glade:9103 -#: src/emc/usr_intf/pncconf/pncconf.glade:9123 -#: src/emc/usr_intf/pncconf/pncconf.glade:9143 -#: src/emc/usr_intf/pncconf/pncconf.glade:9163 -#: src/emc/usr_intf/pncconf/pncconf.glade:11027 -#: src/emc/usr_intf/pncconf/pncconf.glade:11353 -#: src/emc/usr_intf/pncconf/pncconf.glade:13216 -#: src/emc/usr_intf/pncconf/pncconf.glade:13236 -#: src/emc/usr_intf/pncconf/pncconf.glade:13256 -#: src/emc/usr_intf/pncconf/pncconf.glade:13276 -#: src/emc/usr_intf/pncconf/pncconf.glade:13296 -#: src/emc/usr_intf/pncconf/pncconf.glade:13316 -#: src/emc/usr_intf/pncconf/pncconf.glade:13336 -#: src/emc/usr_intf/pncconf/pncconf.glade:13356 -#: src/emc/usr_intf/pncconf/pncconf.glade:13376 -#: src/emc/usr_intf/pncconf/pncconf.glade:13396 -#: src/emc/usr_intf/pncconf/pncconf.glade:13416 -#: src/emc/usr_intf/pncconf/pncconf.glade:13436 -#: src/emc/usr_intf/pncconf/pncconf.glade:13456 -#: src/emc/usr_intf/pncconf/pncconf.glade:13476 -#: src/emc/usr_intf/pncconf/pncconf.glade:13496 -#: src/emc/usr_intf/pncconf/pncconf.glade:13516 -#: src/emc/usr_intf/pncconf/pncconf.glade:13536 -#: src/emc/usr_intf/pncconf/pncconf.glade:13556 -#: src/emc/usr_intf/pncconf/pncconf.glade:13576 -#: src/emc/usr_intf/pncconf/pncconf.glade:13596 -#: src/emc/usr_intf/pncconf/pncconf.glade:13616 -#: src/emc/usr_intf/pncconf/pncconf.glade:13636 -#: src/emc/usr_intf/pncconf/pncconf.glade:13656 -#: src/emc/usr_intf/pncconf/pncconf.glade:13966 -#: src/emc/usr_intf/pncconf/pncconf.glade:15912 -#: src/emc/usr_intf/pncconf/pncconf.glade:15932 -#: src/emc/usr_intf/pncconf/pncconf.glade:15952 -#: src/emc/usr_intf/pncconf/pncconf.glade:15972 -#: src/emc/usr_intf/pncconf/pncconf.glade:15992 -#: src/emc/usr_intf/pncconf/pncconf.glade:16012 -#: src/emc/usr_intf/pncconf/pncconf.glade:16032 -#: src/emc/usr_intf/pncconf/pncconf.glade:16052 -#: src/emc/usr_intf/pncconf/pncconf.glade:16072 -#: src/emc/usr_intf/pncconf/pncconf.glade:16092 -#: src/emc/usr_intf/pncconf/pncconf.glade:16112 -#: src/emc/usr_intf/pncconf/pncconf.glade:16132 -#: src/emc/usr_intf/pncconf/pncconf.glade:16152 -#: src/emc/usr_intf/pncconf/pncconf.glade:16172 -#: src/emc/usr_intf/pncconf/pncconf.glade:16192 -#: src/emc/usr_intf/pncconf/pncconf.glade:16212 -#: src/emc/usr_intf/pncconf/pncconf.glade:16232 -#: src/emc/usr_intf/pncconf/pncconf.glade:16252 -#: src/emc/usr_intf/pncconf/pncconf.glade:16272 -#: src/emc/usr_intf/pncconf/pncconf.glade:16292 -#: src/emc/usr_intf/pncconf/pncconf.glade:16312 -#: src/emc/usr_intf/pncconf/pncconf.glade:16332 -#: src/emc/usr_intf/pncconf/pncconf.glade:16352 -#: src/emc/usr_intf/pncconf/pncconf.glade:16558 -#: src/emc/usr_intf/pncconf/pncconf.glade:18422 -#: src/emc/usr_intf/pncconf/pncconf.glade:18442 -#: src/emc/usr_intf/pncconf/pncconf.glade:18462 -#: src/emc/usr_intf/pncconf/pncconf.glade:18482 -#: src/emc/usr_intf/pncconf/pncconf.glade:18502 -#: src/emc/usr_intf/pncconf/pncconf.glade:18522 -#: src/emc/usr_intf/pncconf/pncconf.glade:18542 -#: src/emc/usr_intf/pncconf/pncconf.glade:18562 -#: src/emc/usr_intf/pncconf/pncconf.glade:18582 -#: src/emc/usr_intf/pncconf/pncconf.glade:18602 -#: src/emc/usr_intf/pncconf/pncconf.glade:18622 -#: src/emc/usr_intf/pncconf/pncconf.glade:18642 -#: src/emc/usr_intf/pncconf/pncconf.glade:18662 -#: src/emc/usr_intf/pncconf/pncconf.glade:18682 -#: src/emc/usr_intf/pncconf/pncconf.glade:18702 -#: src/emc/usr_intf/pncconf/pncconf.glade:18722 -#: src/emc/usr_intf/pncconf/pncconf.glade:18742 -#: src/emc/usr_intf/pncconf/pncconf.glade:18762 -#: src/emc/usr_intf/pncconf/pncconf.glade:18782 -#: src/emc/usr_intf/pncconf/pncconf.glade:18802 -#: src/emc/usr_intf/pncconf/pncconf.glade:18822 -#: src/emc/usr_intf/pncconf/pncconf.glade:18842 -#: src/emc/usr_intf/pncconf/pncconf.glade:18862 -#: src/emc/usr_intf/pncconf/pncconf.glade:26355 -#: src/emc/usr_intf/pncconf/pncconf.glade:26375 -#: src/emc/usr_intf/pncconf/pncconf.glade:26395 -#: src/emc/usr_intf/pncconf/pncconf.glade:26415 -#: src/emc/usr_intf/pncconf/pncconf.glade:26435 -#: src/emc/usr_intf/pncconf/pncconf.glade:26455 -#: src/emc/usr_intf/pncconf/pncconf.glade:26475 -#: src/emc/usr_intf/pncconf/pncconf.glade:26495 -#: src/emc/usr_intf/pncconf/pncconf.glade:26515 -#: src/emc/usr_intf/pncconf/pncconf.glade:26535 -#: src/emc/usr_intf/pncconf/pncconf.glade:26555 -#: src/emc/usr_intf/pncconf/pncconf.glade:26575 -#: src/emc/usr_intf/pncconf/pncconf.glade:26595 -#: src/emc/usr_intf/pncconf/pncconf.glade:26615 -#: src/emc/usr_intf/pncconf/pncconf.glade:26635 -#: src/emc/usr_intf/pncconf/pncconf.glade:26655 -#: src/emc/usr_intf/pncconf/pncconf.glade:26675 -#: src/emc/usr_intf/pncconf/pncconf.glade:26695 -#: src/emc/usr_intf/pncconf/pncconf.glade:26715 -#: src/emc/usr_intf/pncconf/pncconf.glade:26735 -#: src/emc/usr_intf/pncconf/pncconf.glade:26755 -#: src/emc/usr_intf/pncconf/pncconf.glade:26775 -#: src/emc/usr_intf/pncconf/pncconf.glade:26795 -#: src/emc/usr_intf/pncconf/pncconf.glade:28711 -#: src/emc/usr_intf/pncconf/pncconf.glade:28934 -#: src/emc/usr_intf/pncconf/pncconf.glade:30863 -#: src/emc/usr_intf/pncconf/pncconf.glade:30883 -#: src/emc/usr_intf/pncconf/pncconf.glade:30903 -#: src/emc/usr_intf/pncconf/pncconf.glade:30923 -#: src/emc/usr_intf/pncconf/pncconf.glade:30943 -#: src/emc/usr_intf/pncconf/pncconf.glade:30963 -#: src/emc/usr_intf/pncconf/pncconf.glade:30983 -#: src/emc/usr_intf/pncconf/pncconf.glade:31003 -#: src/emc/usr_intf/pncconf/pncconf.glade:31023 -#: src/emc/usr_intf/pncconf/pncconf.glade:31043 -#: src/emc/usr_intf/pncconf/pncconf.glade:31063 -#: src/emc/usr_intf/pncconf/pncconf.glade:31083 -#: src/emc/usr_intf/pncconf/pncconf.glade:31103 -#: src/emc/usr_intf/pncconf/pncconf.glade:31123 -#: src/emc/usr_intf/pncconf/pncconf.glade:31143 -#: src/emc/usr_intf/pncconf/pncconf.glade:31163 -#: src/emc/usr_intf/pncconf/pncconf.glade:31183 -#: src/emc/usr_intf/pncconf/pncconf.glade:31203 -#: src/emc/usr_intf/pncconf/pncconf.glade:31223 -#: src/emc/usr_intf/pncconf/pncconf.glade:31243 -#: src/emc/usr_intf/pncconf/pncconf.glade:31263 -#: src/emc/usr_intf/pncconf/pncconf.glade:31283 -#: src/emc/usr_intf/pncconf/pncconf.glade:31303 -#: src/emc/usr_intf/pncconf/pncconf.glade:31611 -#: src/emc/usr_intf/pncconf/pncconf.glade:31631 -#: src/emc/usr_intf/pncconf/pncconf.glade:31651 -#: src/emc/usr_intf/pncconf/pncconf.glade:31671 -#: src/emc/usr_intf/pncconf/pncconf.glade:31691 -#: src/emc/usr_intf/pncconf/pncconf.glade:31711 -#: src/emc/usr_intf/pncconf/pncconf.glade:31731 -#: src/emc/usr_intf/pncconf/pncconf.glade:31751 -#: src/emc/usr_intf/pncconf/pncconf.glade:31771 -#: src/emc/usr_intf/pncconf/pncconf.glade:31791 -#: src/emc/usr_intf/pncconf/pncconf.glade:31811 -#: src/emc/usr_intf/pncconf/pncconf.glade:33029 -#: src/emc/usr_intf/pncconf/pncconf.glade:33292 -#: src/emc/usr_intf/pncconf/pncconf.glade:35208 -#: src/emc/usr_intf/pncconf/pncconf.glade:35228 -#: src/emc/usr_intf/pncconf/pncconf.glade:35248 -#: src/emc/usr_intf/pncconf/pncconf.glade:35268 -#: src/emc/usr_intf/pncconf/pncconf.glade:35288 -#: src/emc/usr_intf/pncconf/pncconf.glade:35308 -#: src/emc/usr_intf/pncconf/pncconf.glade:35328 -#: src/emc/usr_intf/pncconf/pncconf.glade:35348 -#: src/emc/usr_intf/pncconf/pncconf.glade:35368 -#: src/emc/usr_intf/pncconf/pncconf.glade:35388 -#: src/emc/usr_intf/pncconf/pncconf.glade:35408 -#: src/emc/usr_intf/pncconf/pncconf.glade:35428 -#: src/emc/usr_intf/pncconf/pncconf.glade:35448 -#: src/emc/usr_intf/pncconf/pncconf.glade:35468 -#: src/emc/usr_intf/pncconf/pncconf.glade:35488 -#: src/emc/usr_intf/pncconf/pncconf.glade:35508 -#: src/emc/usr_intf/pncconf/pncconf.glade:35528 -#: src/emc/usr_intf/pncconf/pncconf.glade:35548 -#: src/emc/usr_intf/pncconf/pncconf.glade:35568 -#: src/emc/usr_intf/pncconf/pncconf.glade:35588 -#: src/emc/usr_intf/pncconf/pncconf.glade:35608 -#: src/emc/usr_intf/pncconf/pncconf.glade:35628 -#: src/emc/usr_intf/pncconf/pncconf.glade:35648 -#: src/emc/usr_intf/pncconf/pncconf.glade:35839 -#: src/emc/usr_intf/pncconf/pncconf.glade:35859 -#: src/emc/usr_intf/pncconf/pncconf.glade:35879 -#: src/emc/usr_intf/pncconf/pncconf.glade:35899 -#: src/emc/usr_intf/pncconf/pncconf.glade:35919 -#: src/emc/usr_intf/pncconf/pncconf.glade:35939 -#: src/emc/usr_intf/pncconf/pncconf.glade:35959 -#: src/emc/usr_intf/pncconf/pncconf.glade:35979 -#: src/emc/usr_intf/pncconf/pncconf.glade:35999 -#: src/emc/usr_intf/pncconf/pncconf.glade:36019 -#: src/emc/usr_intf/pncconf/pncconf.glade:36039 -#: src/emc/usr_intf/pncconf/pncconf.glade:36059 -#: src/emc/usr_intf/pncconf/pncconf.glade:36079 -#: src/emc/usr_intf/pncconf/pncconf.glade:36099 -#: src/emc/usr_intf/pncconf/pncconf.glade:36119 -#: src/emc/usr_intf/pncconf/pncconf.glade:36139 -#: src/emc/usr_intf/pncconf/pncconf.glade:36159 -#: src/emc/usr_intf/pncconf/pncconf.glade:36179 -#: src/emc/usr_intf/pncconf/pncconf.glade:36199 -#: src/emc/usr_intf/pncconf/pncconf.glade:36219 -#: src/emc/usr_intf/pncconf/pncconf.glade:36239 -#: src/emc/usr_intf/pncconf/pncconf.glade:36259 -#: src/emc/usr_intf/pncconf/pncconf.glade:36279 -#: src/emc/usr_intf/pncconf/pncconf.glade:38208 -#: src/emc/usr_intf/pncconf/pncconf.glade:38549 -#: src/emc/usr_intf/pncconf/pncconf.glade:39779 -#: src/emc/usr_intf/pncconf/pncconf.glade:39799 -#: src/emc/usr_intf/pncconf/pncconf.glade:39819 -#: src/emc/usr_intf/pncconf/pncconf.glade:39839 -#: src/emc/usr_intf/pncconf/pncconf.glade:39859 -#: src/emc/usr_intf/pncconf/pncconf.glade:39879 -#: src/emc/usr_intf/pncconf/pncconf.glade:39899 -#: src/emc/usr_intf/pncconf/pncconf.glade:39919 -#: src/emc/usr_intf/pncconf/pncconf.glade:39939 -#: src/emc/usr_intf/pncconf/pncconf.glade:39959 -#: src/emc/usr_intf/pncconf/pncconf.glade:39979 -#: src/emc/usr_intf/pncconf/pncconf.glade:40199 -#: src/emc/usr_intf/pncconf/pncconf.glade:40219 -#: src/emc/usr_intf/pncconf/pncconf.glade:40239 -#: src/emc/usr_intf/pncconf/pncconf.glade:40259 -#: src/emc/usr_intf/pncconf/pncconf.glade:40279 -#: src/emc/usr_intf/pncconf/pncconf.glade:40299 -#: src/emc/usr_intf/pncconf/pncconf.glade:40319 -#: src/emc/usr_intf/pncconf/pncconf.glade:40339 -#: src/emc/usr_intf/pncconf/pncconf.glade:40359 -#: src/emc/usr_intf/pncconf/pncconf.glade:40379 -#: src/emc/usr_intf/pncconf/pncconf.glade:40399 -#: src/emc/usr_intf/pncconf/pncconf.glade:40419 -#: src/emc/usr_intf/pncconf/pncconf.glade:40439 -#: src/emc/usr_intf/pncconf/pncconf.glade:40459 -#: src/emc/usr_intf/pncconf/pncconf.glade:40479 -#: src/emc/usr_intf/pncconf/pncconf.glade:40499 -#: src/emc/usr_intf/pncconf/pncconf.glade:40519 -#: src/emc/usr_intf/pncconf/pncconf.glade:40539 -#: src/emc/usr_intf/pncconf/pncconf.glade:40559 -#: src/emc/usr_intf/pncconf/pncconf.glade:40579 -#: src/emc/usr_intf/pncconf/pncconf.glade:40599 -#: src/emc/usr_intf/pncconf/pncconf.glade:40619 -#: src/emc/usr_intf/pncconf/pncconf.glade:40639 -#: src/emc/usr_intf/pncconf/pncconf.glade:42555 -#: src/emc/usr_intf/pncconf/pncconf.glade:42778 -#: src/emc/usr_intf/pncconf/pncconf.glade:44707 -#: src/emc/usr_intf/pncconf/pncconf.glade:44727 -#: src/emc/usr_intf/pncconf/pncconf.glade:44747 -#: src/emc/usr_intf/pncconf/pncconf.glade:44767 -#: src/emc/usr_intf/pncconf/pncconf.glade:44787 -#: src/emc/usr_intf/pncconf/pncconf.glade:44807 -#: src/emc/usr_intf/pncconf/pncconf.glade:44827 -#: src/emc/usr_intf/pncconf/pncconf.glade:44847 -#: src/emc/usr_intf/pncconf/pncconf.glade:44867 -#: src/emc/usr_intf/pncconf/pncconf.glade:44887 -#: src/emc/usr_intf/pncconf/pncconf.glade:44907 -#: src/emc/usr_intf/pncconf/pncconf.glade:44927 -#: src/emc/usr_intf/pncconf/pncconf.glade:44947 -#: src/emc/usr_intf/pncconf/pncconf.glade:44967 -#: src/emc/usr_intf/pncconf/pncconf.glade:44987 -#: src/emc/usr_intf/pncconf/pncconf.glade:45007 -#: src/emc/usr_intf/pncconf/pncconf.glade:45027 -#: src/emc/usr_intf/pncconf/pncconf.glade:45047 -#: src/emc/usr_intf/pncconf/pncconf.glade:45067 -#: src/emc/usr_intf/pncconf/pncconf.glade:45087 -#: src/emc/usr_intf/pncconf/pncconf.glade:45107 -#: src/emc/usr_intf/pncconf/pncconf.glade:45127 -#: src/emc/usr_intf/pncconf/pncconf.glade:45147 -#: src/emc/usr_intf/pncconf/pncconf.glade:45456 -#: src/emc/usr_intf/pncconf/pncconf.glade:45476 -#: src/emc/usr_intf/pncconf/pncconf.glade:45496 -#: src/emc/usr_intf/pncconf/pncconf.glade:45516 -#: src/emc/usr_intf/pncconf/pncconf.glade:45536 -#: src/emc/usr_intf/pncconf/pncconf.glade:45556 -#: src/emc/usr_intf/pncconf/pncconf.glade:45576 -#: src/emc/usr_intf/pncconf/pncconf.glade:45596 -#: src/emc/usr_intf/pncconf/pncconf.glade:45616 -#: src/emc/usr_intf/pncconf/pncconf.glade:45636 -#: src/emc/usr_intf/pncconf/pncconf.glade:45656 -#: src/emc/usr_intf/pncconf/pncconf.glade:46886 -#: src/emc/usr_intf/pncconf/pncconf.glade:47122 -#: src/emc/usr_intf/pncconf/pncconf.glade:47142 -#: src/emc/usr_intf/pncconf/pncconf.glade:47162 -#: src/emc/usr_intf/pncconf/pncconf.glade:47182 -#: src/emc/usr_intf/pncconf/pncconf.glade:47202 -#: src/emc/usr_intf/pncconf/pncconf.glade:47222 -#: src/emc/usr_intf/pncconf/pncconf.glade:47242 -#: src/emc/usr_intf/pncconf/pncconf.glade:47262 -#: src/emc/usr_intf/pncconf/pncconf.glade:47282 -#: src/emc/usr_intf/pncconf/pncconf.glade:47302 -#: src/emc/usr_intf/pncconf/pncconf.glade:47322 -#: src/emc/usr_intf/pncconf/pncconf.glade:47342 -#: src/emc/usr_intf/pncconf/pncconf.glade:47362 -#: src/emc/usr_intf/pncconf/pncconf.glade:47382 -#: src/emc/usr_intf/pncconf/pncconf.glade:47402 -#: src/emc/usr_intf/pncconf/pncconf.glade:47422 -#: src/emc/usr_intf/pncconf/pncconf.glade:47442 -#: src/emc/usr_intf/pncconf/pncconf.glade:47462 -#: src/emc/usr_intf/pncconf/pncconf.glade:47482 -#: src/emc/usr_intf/pncconf/pncconf.glade:47502 -#: src/emc/usr_intf/pncconf/pncconf.glade:47522 -#: src/emc/usr_intf/pncconf/pncconf.glade:47542 -#: src/emc/usr_intf/pncconf/pncconf.glade:47562 -#: src/emc/usr_intf/pncconf/pncconf.glade:49478 -#: src/emc/usr_intf/pncconf/pncconf.glade:49701 -#: src/emc/usr_intf/pncconf/pncconf.glade:51630 -#: src/emc/usr_intf/pncconf/pncconf.glade:51650 -#: src/emc/usr_intf/pncconf/pncconf.glade:51670 -#: src/emc/usr_intf/pncconf/pncconf.glade:51690 -#: src/emc/usr_intf/pncconf/pncconf.glade:51710 -#: src/emc/usr_intf/pncconf/pncconf.glade:51730 -#: src/emc/usr_intf/pncconf/pncconf.glade:51750 -#: src/emc/usr_intf/pncconf/pncconf.glade:51770 -#: src/emc/usr_intf/pncconf/pncconf.glade:51790 -#: src/emc/usr_intf/pncconf/pncconf.glade:51810 -#: src/emc/usr_intf/pncconf/pncconf.glade:51830 -#: src/emc/usr_intf/pncconf/pncconf.glade:51850 -#: src/emc/usr_intf/pncconf/pncconf.glade:51870 -#: src/emc/usr_intf/pncconf/pncconf.glade:51890 -#: src/emc/usr_intf/pncconf/pncconf.glade:51910 -#: src/emc/usr_intf/pncconf/pncconf.glade:51930 -#: src/emc/usr_intf/pncconf/pncconf.glade:51950 -#: src/emc/usr_intf/pncconf/pncconf.glade:51970 -#: src/emc/usr_intf/pncconf/pncconf.glade:51990 -#: src/emc/usr_intf/pncconf/pncconf.glade:52010 -#: src/emc/usr_intf/pncconf/pncconf.glade:52030 -#: src/emc/usr_intf/pncconf/pncconf.glade:52050 -#: src/emc/usr_intf/pncconf/pncconf.glade:52070 -#: src/emc/usr_intf/pncconf/pncconf.glade:52379 -#: src/emc/usr_intf/pncconf/pncconf.glade:52399 -#: src/emc/usr_intf/pncconf/pncconf.glade:52419 -#: src/emc/usr_intf/pncconf/pncconf.glade:52439 -#: src/emc/usr_intf/pncconf/pncconf.glade:52459 -#: src/emc/usr_intf/pncconf/pncconf.glade:52479 -#: src/emc/usr_intf/pncconf/pncconf.glade:52499 -#: src/emc/usr_intf/pncconf/pncconf.glade:52519 -#: src/emc/usr_intf/pncconf/pncconf.glade:52539 -#: src/emc/usr_intf/pncconf/pncconf.glade:52559 -#: src/emc/usr_intf/pncconf/pncconf.glade:52579 -#: src/emc/usr_intf/pncconf/pncconf.glade:53809 -msgid "" -"GPIO Input\n" -"GPIO Output\n" -"GPIO O Drain\n" -"Encoder\n" -"PWM\n" -"StepGen\n" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:9198 -#: src/emc/usr_intf/pncconf/pncconf.glade:13188 -#: src/emc/usr_intf/pncconf/pncconf.glade:15884 -#: src/emc/usr_intf/pncconf/pncconf.glade:18394 -#: src/emc/usr_intf/pncconf/pncconf.glade:20397 -#: src/emc/usr_intf/pncconf/pncconf.glade:21325 -#: src/emc/usr_intf/pncconf/pncconf.glade:23121 -#: src/emc/usr_intf/pncconf/pncconf.glade:24917 -#, fuzzy -msgid "Launch test panel" -msgstr "Rezultat test _latenta:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:9213 -#: src/emc/usr_intf/pncconf/pncconf.glade:9225 -#: src/emc/usr_intf/pncconf/pncconf.glade:13162 -#: src/emc/usr_intf/pncconf/pncconf.glade:13174 -#: src/emc/usr_intf/pncconf/pncconf.glade:15858 -#: src/emc/usr_intf/pncconf/pncconf.glade:15870 -#: src/emc/usr_intf/pncconf/pncconf.glade:18367 -#: src/emc/usr_intf/pncconf/pncconf.glade:18379 -#: src/emc/usr_intf/pncconf/pncconf.glade:20370 -#: src/emc/usr_intf/pncconf/pncconf.glade:20382 -#: src/emc/usr_intf/pncconf/pncconf.glade:21339 -#: src/emc/usr_intf/pncconf/pncconf.glade:21351 -#: src/emc/usr_intf/pncconf/pncconf.glade:23135 -#: src/emc/usr_intf/pncconf/pncconf.glade:23147 -#: src/emc/usr_intf/pncconf/pncconf.glade:24931 -#: src/emc/usr_intf/pncconf/pncconf.glade:24943 -#: src/emc/usr_intf/pncconf/pncconf.glade:26815 -#: src/emc/usr_intf/pncconf/pncconf.glade:26827 -#: src/emc/usr_intf/pncconf/pncconf.glade:30826 -#: src/emc/usr_intf/pncconf/pncconf.glade:30838 -#: src/emc/usr_intf/pncconf/pncconf.glade:31831 -#: src/emc/usr_intf/pncconf/pncconf.glade:35184 -#: src/emc/usr_intf/pncconf/pncconf.glade:35196 -#: src/emc/usr_intf/pncconf/pncconf.glade:36312 -#: src/emc/usr_intf/pncconf/pncconf.glade:36324 -#: src/emc/usr_intf/pncconf/pncconf.glade:39755 -#: src/emc/usr_intf/pncconf/pncconf.glade:39767 -#: src/emc/usr_intf/pncconf/pncconf.glade:40659 -#: src/emc/usr_intf/pncconf/pncconf.glade:40671 -#: src/emc/usr_intf/pncconf/pncconf.glade:44670 -#: src/emc/usr_intf/pncconf/pncconf.glade:44682 -#: src/emc/usr_intf/pncconf/pncconf.glade:45676 -#: src/emc/usr_intf/pncconf/pncconf.glade:45688 -#: src/emc/usr_intf/pncconf/pncconf.glade:47582 -#: src/emc/usr_intf/pncconf/pncconf.glade:47594 -#: src/emc/usr_intf/pncconf/pncconf.glade:51593 -#: src/emc/usr_intf/pncconf/pncconf.glade:51605 -#: src/emc/usr_intf/pncconf/pncconf.glade:52599 -#: src/emc/usr_intf/pncconf/pncconf.glade:52611 -msgid "function" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:9305 -#: src/emc/usr_intf/pncconf/pncconf.glade:9357 -#: src/emc/usr_intf/pncconf/pncconf.glade:9409 -#: src/emc/usr_intf/pncconf/pncconf.glade:9461 -#: src/emc/usr_intf/pncconf/pncconf.glade:10301 -#: src/emc/usr_intf/pncconf/pncconf.glade:10353 -#: src/emc/usr_intf/pncconf/pncconf.glade:10405 -#: src/emc/usr_intf/pncconf/pncconf.glade:10457 -#: src/emc/usr_intf/pncconf/pncconf.glade:10509 -#: src/emc/usr_intf/pncconf/pncconf.glade:10561 -#: src/emc/usr_intf/pncconf/pncconf.glade:10613 -#: src/emc/usr_intf/pncconf/pncconf.glade:10665 -#: src/emc/usr_intf/pncconf/pncconf.glade:10717 -#: src/emc/usr_intf/pncconf/pncconf.glade:10769 -#: src/emc/usr_intf/pncconf/pncconf.glade:11089 -#: src/emc/usr_intf/pncconf/pncconf.glade:11141 -#: src/emc/usr_intf/pncconf/pncconf.glade:11579 -#: src/emc/usr_intf/pncconf/pncconf.glade:11631 -#: src/emc/usr_intf/pncconf/pncconf.glade:11683 -#: src/emc/usr_intf/pncconf/pncconf.glade:11735 -#: src/emc/usr_intf/pncconf/pncconf.glade:11787 -#: src/emc/usr_intf/pncconf/pncconf.glade:11839 -#: src/emc/usr_intf/pncconf/pncconf.glade:11891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11943 -#: src/emc/usr_intf/pncconf/pncconf.glade:11995 +#: src/emc/usr_intf/pncconf/pncconf.glade:8721 +#: src/emc/usr_intf/pncconf/pncconf.glade:8773 +#: src/emc/usr_intf/pncconf/pncconf.glade:9093 +#: src/emc/usr_intf/pncconf/pncconf.glade:9145 +#: src/emc/usr_intf/pncconf/pncconf.glade:9197 +#: src/emc/usr_intf/pncconf/pncconf.glade:9249 +#: src/emc/usr_intf/pncconf/pncconf.glade:9301 +#: src/emc/usr_intf/pncconf/pncconf.glade:9353 +#: src/emc/usr_intf/pncconf/pncconf.glade:9405 +#: src/emc/usr_intf/pncconf/pncconf.glade:9457 +#: src/emc/usr_intf/pncconf/pncconf.glade:9509 +#: src/emc/usr_intf/pncconf/pncconf.glade:9561 +#: src/emc/usr_intf/pncconf/pncconf.glade:10400 +#: src/emc/usr_intf/pncconf/pncconf.glade:10453 +#: src/emc/usr_intf/pncconf/pncconf.glade:10505 +#: src/emc/usr_intf/pncconf/pncconf.glade:10557 +#: src/emc/usr_intf/pncconf/pncconf.glade:11335 +#: src/emc/usr_intf/pncconf/pncconf.glade:11387 #: src/emc/usr_intf/pncconf/pncconf.glade:12047 -#: src/emc/usr_intf/pncconf/pncconf.glade:12886 -#: src/emc/usr_intf/pncconf/pncconf.glade:12938 -#: src/emc/usr_intf/pncconf/pncconf.glade:12990 +#: src/emc/usr_intf/pncconf/pncconf.glade:12099 +#: src/emc/usr_intf/pncconf/pncconf.glade:12151 +#: src/emc/usr_intf/pncconf/pncconf.glade:12203 #: src/emc/usr_intf/pncconf/pncconf.glade:13042 -#: src/emc/usr_intf/pncconf/pncconf.glade:13702 -#: src/emc/usr_intf/pncconf/pncconf.glade:13754 -#: src/emc/usr_intf/pncconf/pncconf.glade:14183 -#: src/emc/usr_intf/pncconf/pncconf.glade:14235 -#: src/emc/usr_intf/pncconf/pncconf.glade:14287 -#: src/emc/usr_intf/pncconf/pncconf.glade:14339 -#: src/emc/usr_intf/pncconf/pncconf.glade:14391 -#: src/emc/usr_intf/pncconf/pncconf.glade:14443 -#: src/emc/usr_intf/pncconf/pncconf.glade:14495 -#: src/emc/usr_intf/pncconf/pncconf.glade:14547 -#: src/emc/usr_intf/pncconf/pncconf.glade:14599 -#: src/emc/usr_intf/pncconf/pncconf.glade:14651 -#: src/emc/usr_intf/pncconf/pncconf.glade:14703 -#: src/emc/usr_intf/pncconf/pncconf.glade:14755 -#: src/emc/usr_intf/pncconf/pncconf.glade:15582 -#: src/emc/usr_intf/pncconf/pncconf.glade:15634 -#: src/emc/usr_intf/pncconf/pncconf.glade:15686 -#: src/emc/usr_intf/pncconf/pncconf.glade:15738 -#: src/emc/usr_intf/pncconf/pncconf.glade:16784 -#: src/emc/usr_intf/pncconf/pncconf.glade:16836 -#: src/emc/usr_intf/pncconf/pncconf.glade:16888 -#: src/emc/usr_intf/pncconf/pncconf.glade:16940 -#: src/emc/usr_intf/pncconf/pncconf.glade:16992 -#: src/emc/usr_intf/pncconf/pncconf.glade:17044 -#: src/emc/usr_intf/pncconf/pncconf.glade:17096 -#: src/emc/usr_intf/pncconf/pncconf.glade:17148 -#: src/emc/usr_intf/pncconf/pncconf.glade:17200 -#: src/emc/usr_intf/pncconf/pncconf.glade:17252 -#: src/emc/usr_intf/pncconf/pncconf.glade:17304 -#: src/emc/usr_intf/pncconf/pncconf.glade:18143 -#: src/emc/usr_intf/pncconf/pncconf.glade:18195 -#: src/emc/usr_intf/pncconf/pncconf.glade:18247 -#: src/emc/usr_intf/pncconf/pncconf.glade:18908 -#: src/emc/usr_intf/pncconf/pncconf.glade:18960 -#: src/emc/usr_intf/pncconf/pncconf.glade:26907 -#: src/emc/usr_intf/pncconf/pncconf.glade:26959 -#: src/emc/usr_intf/pncconf/pncconf.glade:27011 -#: src/emc/usr_intf/pncconf/pncconf.glade:27063 -#: src/emc/usr_intf/pncconf/pncconf.glade:27890 -#: src/emc/usr_intf/pncconf/pncconf.glade:27942 -#: src/emc/usr_intf/pncconf/pncconf.glade:27994 -#: src/emc/usr_intf/pncconf/pncconf.glade:28046 -#: src/emc/usr_intf/pncconf/pncconf.glade:28098 -#: src/emc/usr_intf/pncconf/pncconf.glade:28150 -#: src/emc/usr_intf/pncconf/pncconf.glade:28202 -#: src/emc/usr_intf/pncconf/pncconf.glade:28254 -#: src/emc/usr_intf/pncconf/pncconf.glade:28306 -#: src/emc/usr_intf/pncconf/pncconf.glade:28358 -#: src/emc/usr_intf/pncconf/pncconf.glade:28410 -#: src/emc/usr_intf/pncconf/pncconf.glade:28462 -#: src/emc/usr_intf/pncconf/pncconf.glade:29151 -#: src/emc/usr_intf/pncconf/pncconf.glade:29203 -#: src/emc/usr_intf/pncconf/pncconf.glade:29255 -#: src/emc/usr_intf/pncconf/pncconf.glade:29307 -#: src/emc/usr_intf/pncconf/pncconf.glade:29359 -#: src/emc/usr_intf/pncconf/pncconf.glade:29411 -#: src/emc/usr_intf/pncconf/pncconf.glade:29463 -#: src/emc/usr_intf/pncconf/pncconf.glade:29515 -#: src/emc/usr_intf/pncconf/pncconf.glade:29567 -#: src/emc/usr_intf/pncconf/pncconf.glade:29619 -#: src/emc/usr_intf/pncconf/pncconf.glade:29671 -#: src/emc/usr_intf/pncconf/pncconf.glade:29723 -#: src/emc/usr_intf/pncconf/pncconf.glade:30550 -#: src/emc/usr_intf/pncconf/pncconf.glade:30602 -#: src/emc/usr_intf/pncconf/pncconf.glade:30654 -#: src/emc/usr_intf/pncconf/pncconf.glade:30706 -#: src/emc/usr_intf/pncconf/pncconf.glade:32210 -#: src/emc/usr_intf/pncconf/pncconf.glade:32262 -#: src/emc/usr_intf/pncconf/pncconf.glade:32314 -#: src/emc/usr_intf/pncconf/pncconf.glade:32366 -#: src/emc/usr_intf/pncconf/pncconf.glade:32418 -#: src/emc/usr_intf/pncconf/pncconf.glade:32470 -#: src/emc/usr_intf/pncconf/pncconf.glade:32522 -#: src/emc/usr_intf/pncconf/pncconf.glade:32574 -#: src/emc/usr_intf/pncconf/pncconf.glade:32626 -#: src/emc/usr_intf/pncconf/pncconf.glade:32678 -#: src/emc/usr_intf/pncconf/pncconf.glade:32730 -#: src/emc/usr_intf/pncconf/pncconf.glade:32782 -#: src/emc/usr_intf/pncconf/pncconf.glade:33509 -#: src/emc/usr_intf/pncconf/pncconf.glade:33561 -#: src/emc/usr_intf/pncconf/pncconf.glade:33613 -#: src/emc/usr_intf/pncconf/pncconf.glade:33665 -#: src/emc/usr_intf/pncconf/pncconf.glade:33717 -#: src/emc/usr_intf/pncconf/pncconf.glade:33769 -#: src/emc/usr_intf/pncconf/pncconf.glade:33821 -#: src/emc/usr_intf/pncconf/pncconf.glade:33873 -#: src/emc/usr_intf/pncconf/pncconf.glade:33925 -#: src/emc/usr_intf/pncconf/pncconf.glade:33977 -#: src/emc/usr_intf/pncconf/pncconf.glade:34029 -#: src/emc/usr_intf/pncconf/pncconf.glade:34081 -#: src/emc/usr_intf/pncconf/pncconf.glade:34908 -#: src/emc/usr_intf/pncconf/pncconf.glade:34960 -#: src/emc/usr_intf/pncconf/pncconf.glade:35012 -#: src/emc/usr_intf/pncconf/pncconf.glade:35064 -#: src/emc/usr_intf/pncconf/pncconf.glade:36404 -#: src/emc/usr_intf/pncconf/pncconf.glade:36456 -#: src/emc/usr_intf/pncconf/pncconf.glade:36508 -#: src/emc/usr_intf/pncconf/pncconf.glade:36560 -#: src/emc/usr_intf/pncconf/pncconf.glade:37387 -#: src/emc/usr_intf/pncconf/pncconf.glade:37439 -#: src/emc/usr_intf/pncconf/pncconf.glade:37491 -#: src/emc/usr_intf/pncconf/pncconf.glade:37543 -#: src/emc/usr_intf/pncconf/pncconf.glade:37595 -#: src/emc/usr_intf/pncconf/pncconf.glade:37647 -#: src/emc/usr_intf/pncconf/pncconf.glade:37699 -#: src/emc/usr_intf/pncconf/pncconf.glade:37751 -#: src/emc/usr_intf/pncconf/pncconf.glade:37803 -#: src/emc/usr_intf/pncconf/pncconf.glade:37855 -#: src/emc/usr_intf/pncconf/pncconf.glade:37907 -#: src/emc/usr_intf/pncconf/pncconf.glade:37959 -#: src/emc/usr_intf/pncconf/pncconf.glade:38764 -#: src/emc/usr_intf/pncconf/pncconf.glade:38816 -#: src/emc/usr_intf/pncconf/pncconf.glade:38868 -#: src/emc/usr_intf/pncconf/pncconf.glade:38920 -#: src/emc/usr_intf/pncconf/pncconf.glade:38972 -#: src/emc/usr_intf/pncconf/pncconf.glade:39024 -#: src/emc/usr_intf/pncconf/pncconf.glade:39076 -#: src/emc/usr_intf/pncconf/pncconf.glade:39128 -#: src/emc/usr_intf/pncconf/pncconf.glade:39180 -#: src/emc/usr_intf/pncconf/pncconf.glade:39232 -#: src/emc/usr_intf/pncconf/pncconf.glade:39284 -#: src/emc/usr_intf/pncconf/pncconf.glade:39336 -#: src/emc/usr_intf/pncconf/pncconf.glade:40751 -#: src/emc/usr_intf/pncconf/pncconf.glade:40803 -#: src/emc/usr_intf/pncconf/pncconf.glade:40855 -#: src/emc/usr_intf/pncconf/pncconf.glade:40907 -#: src/emc/usr_intf/pncconf/pncconf.glade:41734 -#: src/emc/usr_intf/pncconf/pncconf.glade:41786 -#: src/emc/usr_intf/pncconf/pncconf.glade:41838 -#: src/emc/usr_intf/pncconf/pncconf.glade:41890 -#: src/emc/usr_intf/pncconf/pncconf.glade:41942 -#: src/emc/usr_intf/pncconf/pncconf.glade:41994 -#: src/emc/usr_intf/pncconf/pncconf.glade:42046 -#: src/emc/usr_intf/pncconf/pncconf.glade:42098 -#: src/emc/usr_intf/pncconf/pncconf.glade:42150 -#: src/emc/usr_intf/pncconf/pncconf.glade:42202 -#: src/emc/usr_intf/pncconf/pncconf.glade:42254 -#: src/emc/usr_intf/pncconf/pncconf.glade:42306 -#: src/emc/usr_intf/pncconf/pncconf.glade:42995 -#: src/emc/usr_intf/pncconf/pncconf.glade:43047 -#: src/emc/usr_intf/pncconf/pncconf.glade:43099 -#: src/emc/usr_intf/pncconf/pncconf.glade:43151 -#: src/emc/usr_intf/pncconf/pncconf.glade:43203 -#: src/emc/usr_intf/pncconf/pncconf.glade:43255 -#: src/emc/usr_intf/pncconf/pncconf.glade:43307 -#: src/emc/usr_intf/pncconf/pncconf.glade:43359 -#: src/emc/usr_intf/pncconf/pncconf.glade:43411 -#: src/emc/usr_intf/pncconf/pncconf.glade:43463 -#: src/emc/usr_intf/pncconf/pncconf.glade:43515 -#: src/emc/usr_intf/pncconf/pncconf.glade:43567 -#: src/emc/usr_intf/pncconf/pncconf.glade:44394 -#: src/emc/usr_intf/pncconf/pncconf.glade:44446 -#: src/emc/usr_intf/pncconf/pncconf.glade:44498 -#: src/emc/usr_intf/pncconf/pncconf.glade:44550 -#: src/emc/usr_intf/pncconf/pncconf.glade:46067 -#: src/emc/usr_intf/pncconf/pncconf.glade:46119 -#: src/emc/usr_intf/pncconf/pncconf.glade:46171 -#: src/emc/usr_intf/pncconf/pncconf.glade:46223 -#: src/emc/usr_intf/pncconf/pncconf.glade:46275 -#: src/emc/usr_intf/pncconf/pncconf.glade:46327 -#: src/emc/usr_intf/pncconf/pncconf.glade:46379 -#: src/emc/usr_intf/pncconf/pncconf.glade:46431 -#: src/emc/usr_intf/pncconf/pncconf.glade:46483 -#: src/emc/usr_intf/pncconf/pncconf.glade:46535 -#: src/emc/usr_intf/pncconf/pncconf.glade:46587 -#: src/emc/usr_intf/pncconf/pncconf.glade:46639 -#: src/emc/usr_intf/pncconf/pncconf.glade:47674 -#: src/emc/usr_intf/pncconf/pncconf.glade:47726 -#: src/emc/usr_intf/pncconf/pncconf.glade:47778 -#: src/emc/usr_intf/pncconf/pncconf.glade:47830 -#: src/emc/usr_intf/pncconf/pncconf.glade:48657 -#: src/emc/usr_intf/pncconf/pncconf.glade:48709 -#: src/emc/usr_intf/pncconf/pncconf.glade:48761 -#: src/emc/usr_intf/pncconf/pncconf.glade:48813 -#: src/emc/usr_intf/pncconf/pncconf.glade:48865 -#: src/emc/usr_intf/pncconf/pncconf.glade:48917 -#: src/emc/usr_intf/pncconf/pncconf.glade:48969 -#: src/emc/usr_intf/pncconf/pncconf.glade:49021 -#: src/emc/usr_intf/pncconf/pncconf.glade:49073 -#: src/emc/usr_intf/pncconf/pncconf.glade:49125 -#: src/emc/usr_intf/pncconf/pncconf.glade:49177 -#: src/emc/usr_intf/pncconf/pncconf.glade:49229 -#: src/emc/usr_intf/pncconf/pncconf.glade:49918 -#: src/emc/usr_intf/pncconf/pncconf.glade:49970 -#: src/emc/usr_intf/pncconf/pncconf.glade:50022 -#: src/emc/usr_intf/pncconf/pncconf.glade:50074 -#: src/emc/usr_intf/pncconf/pncconf.glade:50126 -#: src/emc/usr_intf/pncconf/pncconf.glade:50178 -#: src/emc/usr_intf/pncconf/pncconf.glade:50230 -#: src/emc/usr_intf/pncconf/pncconf.glade:50282 -#: src/emc/usr_intf/pncconf/pncconf.glade:50334 -#: src/emc/usr_intf/pncconf/pncconf.glade:50386 -#: src/emc/usr_intf/pncconf/pncconf.glade:50438 -#: src/emc/usr_intf/pncconf/pncconf.glade:50490 -#: src/emc/usr_intf/pncconf/pncconf.glade:51317 -#: src/emc/usr_intf/pncconf/pncconf.glade:51369 -#: src/emc/usr_intf/pncconf/pncconf.glade:51421 -#: src/emc/usr_intf/pncconf/pncconf.glade:51473 -#: src/emc/usr_intf/pncconf/pncconf.glade:52990 -#: src/emc/usr_intf/pncconf/pncconf.glade:53042 -#: src/emc/usr_intf/pncconf/pncconf.glade:53094 -#: src/emc/usr_intf/pncconf/pncconf.glade:53146 -#: src/emc/usr_intf/pncconf/pncconf.glade:53198 -#: src/emc/usr_intf/pncconf/pncconf.glade:53250 -#: src/emc/usr_intf/pncconf/pncconf.glade:53302 -#: src/emc/usr_intf/pncconf/pncconf.glade:53354 -#: src/emc/usr_intf/pncconf/pncconf.glade:53406 -#: src/emc/usr_intf/pncconf/pncconf.glade:53458 -#: src/emc/usr_intf/pncconf/pncconf.glade:53510 -#: src/emc/usr_intf/pncconf/pncconf.glade:53562 +#: src/emc/usr_intf/pncconf/pncconf.glade:13094 +#: src/emc/usr_intf/pncconf/pncconf.glade:13146 +#: src/emc/usr_intf/pncconf/pncconf.glade:13198 +#: src/emc/usr_intf/pncconf/pncconf.glade:13250 +#: src/emc/usr_intf/pncconf/pncconf.glade:13302 +#: src/emc/usr_intf/pncconf/pncconf.glade:13354 +#: src/emc/usr_intf/pncconf/pncconf.glade:13406 +#: src/emc/usr_intf/pncconf/pncconf.glade:13458 +#: src/emc/usr_intf/pncconf/pncconf.glade:13510 +#: src/emc/usr_intf/pncconf/pncconf.glade:14556 +#: src/emc/usr_intf/pncconf/pncconf.glade:14608 +#: src/emc/usr_intf/pncconf/pncconf.glade:14660 +#: src/emc/usr_intf/pncconf/pncconf.glade:14712 +#: src/emc/usr_intf/pncconf/pncconf.glade:15539 +#: src/emc/usr_intf/pncconf/pncconf.glade:15591 +#: src/emc/usr_intf/pncconf/pncconf.glade:15643 +#: src/emc/usr_intf/pncconf/pncconf.glade:15695 +#: src/emc/usr_intf/pncconf/pncconf.glade:15747 +#: src/emc/usr_intf/pncconf/pncconf.glade:15799 +#: src/emc/usr_intf/pncconf/pncconf.glade:15851 +#: src/emc/usr_intf/pncconf/pncconf.glade:15903 +#: src/emc/usr_intf/pncconf/pncconf.glade:15955 +#: src/emc/usr_intf/pncconf/pncconf.glade:16007 +#: src/emc/usr_intf/pncconf/pncconf.glade:16059 +#: src/emc/usr_intf/pncconf/pncconf.glade:16111 +#: src/emc/usr_intf/pncconf/pncconf.glade:16540 +#: src/emc/usr_intf/pncconf/pncconf.glade:16592 +#: src/emc/usr_intf/pncconf/pncconf.glade:17253 +#: src/emc/usr_intf/pncconf/pncconf.glade:17305 +#: src/emc/usr_intf/pncconf/pncconf.glade:17357 +#: src/emc/usr_intf/pncconf/pncconf.glade:18196 +#: src/emc/usr_intf/pncconf/pncconf.glade:18248 +#: src/emc/usr_intf/pncconf/pncconf.glade:18300 +#: src/emc/usr_intf/pncconf/pncconf.glade:18352 +#: src/emc/usr_intf/pncconf/pncconf.glade:18404 +#: src/emc/usr_intf/pncconf/pncconf.glade:18456 +#: src/emc/usr_intf/pncconf/pncconf.glade:18508 +#: src/emc/usr_intf/pncconf/pncconf.glade:18560 +#: src/emc/usr_intf/pncconf/pncconf.glade:18612 +#: src/emc/usr_intf/pncconf/pncconf.glade:18664 +#: src/emc/usr_intf/pncconf/pncconf.glade:18716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26612 +#: src/emc/usr_intf/pncconf/pncconf.glade:26664 +#: src/emc/usr_intf/pncconf/pncconf.glade:26716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26768 +#: src/emc/usr_intf/pncconf/pncconf.glade:26820 +#: src/emc/usr_intf/pncconf/pncconf.glade:26872 +#: src/emc/usr_intf/pncconf/pncconf.glade:26924 +#: src/emc/usr_intf/pncconf/pncconf.glade:26976 +#: src/emc/usr_intf/pncconf/pncconf.glade:27028 +#: src/emc/usr_intf/pncconf/pncconf.glade:27080 +#: src/emc/usr_intf/pncconf/pncconf.glade:27132 +#: src/emc/usr_intf/pncconf/pncconf.glade:27184 +#: src/emc/usr_intf/pncconf/pncconf.glade:28011 +#: src/emc/usr_intf/pncconf/pncconf.glade:28063 +#: src/emc/usr_intf/pncconf/pncconf.glade:28115 +#: src/emc/usr_intf/pncconf/pncconf.glade:28167 +#: src/emc/usr_intf/pncconf/pncconf.glade:29507 +#: src/emc/usr_intf/pncconf/pncconf.glade:29559 +#: src/emc/usr_intf/pncconf/pncconf.glade:29611 +#: src/emc/usr_intf/pncconf/pncconf.glade:29663 +#: src/emc/usr_intf/pncconf/pncconf.glade:30490 +#: src/emc/usr_intf/pncconf/pncconf.glade:30542 +#: src/emc/usr_intf/pncconf/pncconf.glade:30594 +#: src/emc/usr_intf/pncconf/pncconf.glade:30646 +#: src/emc/usr_intf/pncconf/pncconf.glade:30698 +#: src/emc/usr_intf/pncconf/pncconf.glade:30750 +#: src/emc/usr_intf/pncconf/pncconf.glade:30802 +#: src/emc/usr_intf/pncconf/pncconf.glade:30854 +#: src/emc/usr_intf/pncconf/pncconf.glade:30906 +#: src/emc/usr_intf/pncconf/pncconf.glade:30958 +#: src/emc/usr_intf/pncconf/pncconf.glade:31010 +#: src/emc/usr_intf/pncconf/pncconf.glade:31062 +#: src/emc/usr_intf/pncconf/pncconf.glade:31878 +#: src/emc/usr_intf/pncconf/pncconf.glade:31930 +#: src/emc/usr_intf/pncconf/pncconf.glade:31982 +#: src/emc/usr_intf/pncconf/pncconf.glade:32034 +#: src/emc/usr_intf/pncconf/pncconf.glade:32086 +#: src/emc/usr_intf/pncconf/pncconf.glade:32138 +#: src/emc/usr_intf/pncconf/pncconf.glade:32190 +#: src/emc/usr_intf/pncconf/pncconf.glade:32242 +#: src/emc/usr_intf/pncconf/pncconf.glade:32294 +#: src/emc/usr_intf/pncconf/pncconf.glade:32346 +#: src/emc/usr_intf/pncconf/pncconf.glade:32398 +#: src/emc/usr_intf/pncconf/pncconf.glade:32450 +#: src/emc/usr_intf/pncconf/pncconf.glade:33852 +#: src/emc/usr_intf/pncconf/pncconf.glade:33904 +#: src/emc/usr_intf/pncconf/pncconf.glade:33956 +#: src/emc/usr_intf/pncconf/pncconf.glade:34008 +#: src/emc/usr_intf/pncconf/pncconf.glade:34835 +#: src/emc/usr_intf/pncconf/pncconf.glade:34887 +#: src/emc/usr_intf/pncconf/pncconf.glade:34939 +#: src/emc/usr_intf/pncconf/pncconf.glade:34991 +#: src/emc/usr_intf/pncconf/pncconf.glade:35043 +#: src/emc/usr_intf/pncconf/pncconf.glade:35095 +#: src/emc/usr_intf/pncconf/pncconf.glade:35147 +#: src/emc/usr_intf/pncconf/pncconf.glade:35199 +#: src/emc/usr_intf/pncconf/pncconf.glade:35251 +#: src/emc/usr_intf/pncconf/pncconf.glade:35303 +#: src/emc/usr_intf/pncconf/pncconf.glade:35355 +#: src/emc/usr_intf/pncconf/pncconf.glade:35407 +#: src/emc/usr_intf/pncconf/pncconf.glade:36096 +#: src/emc/usr_intf/pncconf/pncconf.glade:36148 +#: src/emc/usr_intf/pncconf/pncconf.glade:36200 +#: src/emc/usr_intf/pncconf/pncconf.glade:36252 +#: src/emc/usr_intf/pncconf/pncconf.glade:36304 +#: src/emc/usr_intf/pncconf/pncconf.glade:36356 +#: src/emc/usr_intf/pncconf/pncconf.glade:36408 +#: src/emc/usr_intf/pncconf/pncconf.glade:36460 +#: src/emc/usr_intf/pncconf/pncconf.glade:36512 +#: src/emc/usr_intf/pncconf/pncconf.glade:36564 +#: src/emc/usr_intf/pncconf/pncconf.glade:36616 +#: src/emc/usr_intf/pncconf/pncconf.glade:36668 +#: src/emc/usr_intf/pncconf/pncconf.glade:37495 +#: src/emc/usr_intf/pncconf/pncconf.glade:37547 +#: src/emc/usr_intf/pncconf/pncconf.glade:37599 +#: src/emc/usr_intf/pncconf/pncconf.glade:37651 +#: src/emc/usr_intf/pncconf/pncconf.glade:39168 +#: src/emc/usr_intf/pncconf/pncconf.glade:39220 +#: src/emc/usr_intf/pncconf/pncconf.glade:39272 +#: src/emc/usr_intf/pncconf/pncconf.glade:39324 +#: src/emc/usr_intf/pncconf/pncconf.glade:39376 +#: src/emc/usr_intf/pncconf/pncconf.glade:39428 +#: src/emc/usr_intf/pncconf/pncconf.glade:39480 +#: src/emc/usr_intf/pncconf/pncconf.glade:39532 +#: src/emc/usr_intf/pncconf/pncconf.glade:39584 +#: src/emc/usr_intf/pncconf/pncconf.glade:39636 +#: src/emc/usr_intf/pncconf/pncconf.glade:39688 +#: src/emc/usr_intf/pncconf/pncconf.glade:39740 +#: src/emc/usr_intf/pncconf/pncconf.glade:40456 +#: src/emc/usr_intf/pncconf/pncconf.glade:40508 +#: src/emc/usr_intf/pncconf/pncconf.glade:40560 +#: src/emc/usr_intf/pncconf/pncconf.glade:40612 +#: src/emc/usr_intf/pncconf/pncconf.glade:40664 +#: src/emc/usr_intf/pncconf/pncconf.glade:40716 +#: src/emc/usr_intf/pncconf/pncconf.glade:40768 +#: src/emc/usr_intf/pncconf/pncconf.glade:40820 +#: src/emc/usr_intf/pncconf/pncconf.glade:40872 +#: src/emc/usr_intf/pncconf/pncconf.glade:40924 +#: src/emc/usr_intf/pncconf/pncconf.glade:40976 +#: src/emc/usr_intf/pncconf/pncconf.glade:41028 +#: src/emc/usr_intf/pncconf/pncconf.glade:41855 +#: src/emc/usr_intf/pncconf/pncconf.glade:41907 +#: src/emc/usr_intf/pncconf/pncconf.glade:41959 +#: src/emc/usr_intf/pncconf/pncconf.glade:42011 +#: src/emc/usr_intf/pncconf/pncconf.glade:43351 +#: src/emc/usr_intf/pncconf/pncconf.glade:43403 +#: src/emc/usr_intf/pncconf/pncconf.glade:43455 +#: src/emc/usr_intf/pncconf/pncconf.glade:43507 +#: src/emc/usr_intf/pncconf/pncconf.glade:44334 +#: src/emc/usr_intf/pncconf/pncconf.glade:44386 +#: src/emc/usr_intf/pncconf/pncconf.glade:44438 +#: src/emc/usr_intf/pncconf/pncconf.glade:44490 +#: src/emc/usr_intf/pncconf/pncconf.glade:44542 +#: src/emc/usr_intf/pncconf/pncconf.glade:44594 +#: src/emc/usr_intf/pncconf/pncconf.glade:44646 +#: src/emc/usr_intf/pncconf/pncconf.glade:44698 +#: src/emc/usr_intf/pncconf/pncconf.glade:44750 +#: src/emc/usr_intf/pncconf/pncconf.glade:44802 +#: src/emc/usr_intf/pncconf/pncconf.glade:44854 +#: src/emc/usr_intf/pncconf/pncconf.glade:44906 +#: src/emc/usr_intf/pncconf/pncconf.glade:45711 +#: src/emc/usr_intf/pncconf/pncconf.glade:45763 +#: src/emc/usr_intf/pncconf/pncconf.glade:45815 +#: src/emc/usr_intf/pncconf/pncconf.glade:45867 +#: src/emc/usr_intf/pncconf/pncconf.glade:45919 +#: src/emc/usr_intf/pncconf/pncconf.glade:45971 +#: src/emc/usr_intf/pncconf/pncconf.glade:46023 +#: src/emc/usr_intf/pncconf/pncconf.glade:46075 +#: src/emc/usr_intf/pncconf/pncconf.glade:46127 +#: src/emc/usr_intf/pncconf/pncconf.glade:46179 +#: src/emc/usr_intf/pncconf/pncconf.glade:46231 +#: src/emc/usr_intf/pncconf/pncconf.glade:46283 +#: src/emc/usr_intf/pncconf/pncconf.glade:47379 +#: src/emc/usr_intf/pncconf/pncconf.glade:47431 +#: src/emc/usr_intf/pncconf/pncconf.glade:47483 +#: src/emc/usr_intf/pncconf/pncconf.glade:47535 +#: src/emc/usr_intf/pncconf/pncconf.glade:47587 +#: src/emc/usr_intf/pncconf/pncconf.glade:47639 +#: src/emc/usr_intf/pncconf/pncconf.glade:47691 +#: src/emc/usr_intf/pncconf/pncconf.glade:47743 +#: src/emc/usr_intf/pncconf/pncconf.glade:47795 +#: src/emc/usr_intf/pncconf/pncconf.glade:47847 +#: src/emc/usr_intf/pncconf/pncconf.glade:47899 +#: src/emc/usr_intf/pncconf/pncconf.glade:47951 +#: src/emc/usr_intf/pncconf/pncconf.glade:48778 +#: src/emc/usr_intf/pncconf/pncconf.glade:48830 +#: src/emc/usr_intf/pncconf/pncconf.glade:48882 +#: src/emc/usr_intf/pncconf/pncconf.glade:48934 +#: src/emc/usr_intf/pncconf/pncconf.glade:50274 +#: src/emc/usr_intf/pncconf/pncconf.glade:50326 +#: src/emc/usr_intf/pncconf/pncconf.glade:50378 +#: src/emc/usr_intf/pncconf/pncconf.glade:50430 +#: src/emc/usr_intf/pncconf/pncconf.glade:51257 +#: src/emc/usr_intf/pncconf/pncconf.glade:51309 +#: src/emc/usr_intf/pncconf/pncconf.glade:51361 +#: src/emc/usr_intf/pncconf/pncconf.glade:51413 +#: src/emc/usr_intf/pncconf/pncconf.glade:51465 +#: src/emc/usr_intf/pncconf/pncconf.glade:51517 +#: src/emc/usr_intf/pncconf/pncconf.glade:51569 +#: src/emc/usr_intf/pncconf/pncconf.glade:51621 +#: src/emc/usr_intf/pncconf/pncconf.glade:51673 +#: src/emc/usr_intf/pncconf/pncconf.glade:51725 +#: src/emc/usr_intf/pncconf/pncconf.glade:51777 +#: src/emc/usr_intf/pncconf/pncconf.glade:51829 +#: src/emc/usr_intf/pncconf/pncconf.glade:52634 +#: src/emc/usr_intf/pncconf/pncconf.glade:52686 +#: src/emc/usr_intf/pncconf/pncconf.glade:52738 +#: src/emc/usr_intf/pncconf/pncconf.glade:52790 +#: src/emc/usr_intf/pncconf/pncconf.glade:52842 +#: src/emc/usr_intf/pncconf/pncconf.glade:52894 +#: src/emc/usr_intf/pncconf/pncconf.glade:52946 +#: src/emc/usr_intf/pncconf/pncconf.glade:52998 +#: src/emc/usr_intf/pncconf/pncconf.glade:53050 +#: src/emc/usr_intf/pncconf/pncconf.glade:53102 +#: src/emc/usr_intf/pncconf/pncconf.glade:53154 +#: src/emc/usr_intf/pncconf/pncconf.glade:53206 +#: src/emc/usr_intf/pncconf/pncconf.glade:54302 +#: src/emc/usr_intf/pncconf/pncconf.glade:54354 +#: src/emc/usr_intf/pncconf/pncconf.glade:54406 +#: src/emc/usr_intf/pncconf/pncconf.glade:54458 +#: src/emc/usr_intf/pncconf/pncconf.glade:54510 +#: src/emc/usr_intf/pncconf/pncconf.glade:54562 +#: src/emc/usr_intf/pncconf/pncconf.glade:54614 +#: src/emc/usr_intf/pncconf/pncconf.glade:54666 +#: src/emc/usr_intf/pncconf/pncconf.glade:54718 +#: src/emc/usr_intf/pncconf/pncconf.glade:54770 +#: src/emc/usr_intf/pncconf/pncconf.glade:54822 +#: src/emc/usr_intf/pncconf/pncconf.glade:54874 +#: src/emc/usr_intf/pncconf/pncconf.glade:55701 +#: src/emc/usr_intf/pncconf/pncconf.glade:55753 +#: src/emc/usr_intf/pncconf/pncconf.glade:55805 +#: src/emc/usr_intf/pncconf/pncconf.glade:55857 +#: src/emc/usr_intf/pncconf/pncconf.glade:57197 +#: src/emc/usr_intf/pncconf/pncconf.glade:57249 +#: src/emc/usr_intf/pncconf/pncconf.glade:57301 +#: src/emc/usr_intf/pncconf/pncconf.glade:57353 +#: src/emc/usr_intf/pncconf/pncconf.glade:58180 +#: src/emc/usr_intf/pncconf/pncconf.glade:58232 +#: src/emc/usr_intf/pncconf/pncconf.glade:58284 +#: src/emc/usr_intf/pncconf/pncconf.glade:58336 +#: src/emc/usr_intf/pncconf/pncconf.glade:58388 +#: src/emc/usr_intf/pncconf/pncconf.glade:58440 +#: src/emc/usr_intf/pncconf/pncconf.glade:58492 +#: src/emc/usr_intf/pncconf/pncconf.glade:58544 +#: src/emc/usr_intf/pncconf/pncconf.glade:58596 +#: src/emc/usr_intf/pncconf/pncconf.glade:58648 +#: src/emc/usr_intf/pncconf/pncconf.glade:58700 +#: src/emc/usr_intf/pncconf/pncconf.glade:58752 +#: src/emc/usr_intf/pncconf/pncconf.glade:59557 +#: src/emc/usr_intf/pncconf/pncconf.glade:59609 +#: src/emc/usr_intf/pncconf/pncconf.glade:59661 +#: src/emc/usr_intf/pncconf/pncconf.glade:59713 +#: src/emc/usr_intf/pncconf/pncconf.glade:59765 +#: src/emc/usr_intf/pncconf/pncconf.glade:59817 +#: src/emc/usr_intf/pncconf/pncconf.glade:59869 +#: src/emc/usr_intf/pncconf/pncconf.glade:59921 +#: src/emc/usr_intf/pncconf/pncconf.glade:59973 +#: src/emc/usr_intf/pncconf/pncconf.glade:60025 +#: src/emc/usr_intf/pncconf/pncconf.glade:60077 +#: src/emc/usr_intf/pncconf/pncconf.glade:60129 msgid "" "ESTOP IN\n" "Spindle PPR\n" @@ -10955,1228 +12984,1740 @@ msgstr "" "Toate poz0\n" "Nefolosit" -#: src/emc/usr_intf/pncconf/pncconf.glade:9515 -#: src/emc/usr_intf/pncconf/pncconf.glade:12871 -#: src/emc/usr_intf/pncconf/pncconf.glade:18128 -#: src/emc/usr_intf/pncconf/pncconf.glade:20233 -#: src/emc/usr_intf/pncconf/pncconf.glade:21486 -#: src/emc/usr_intf/pncconf/pncconf.glade:23282 -#: src/emc/usr_intf/pncconf/pncconf.glade:25078 -msgid "31:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:8825 +#: src/emc/usr_intf/pncconf/pncconf.glade:9081 +#: src/emc/usr_intf/pncconf/pncconf.glade:13563 +#: src/emc/usr_intf/pncconf/pncconf.glade:13818 +#: src/emc/usr_intf/pncconf/pncconf.glade:16164 +#: src/emc/usr_intf/pncconf/pncconf.glade:16410 +#: src/emc/usr_intf/pncconf/pncconf.glade:18769 +#: src/emc/usr_intf/pncconf/pncconf.glade:19024 +#: src/emc/usr_intf/pncconf/pncconf.glade:20571 +#: src/emc/usr_intf/pncconf/pncconf.glade:20820 +#: src/emc/usr_intf/pncconf/pncconf.glade:20949 +#: src/emc/usr_intf/pncconf/pncconf.glade:21199 +#: src/emc/usr_intf/pncconf/pncconf.glade:22745 +#: src/emc/usr_intf/pncconf/pncconf.glade:22995 +#: src/emc/usr_intf/pncconf/pncconf.glade:24541 +#: src/emc/usr_intf/pncconf/pncconf.glade:24791 +#: src/emc/usr_intf/pncconf/pncconf.glade:26353 +#: src/emc/usr_intf/pncconf/pncconf.glade:26600 +#: src/emc/usr_intf/pncconf/pncconf.glade:31115 +#: src/emc/usr_intf/pncconf/pncconf.glade:31361 +#: src/emc/usr_intf/pncconf/pncconf.glade:31621 +#: src/emc/usr_intf/pncconf/pncconf.glade:35460 +#: src/emc/usr_intf/pncconf/pncconf.glade:35706 +#: src/emc/usr_intf/pncconf/pncconf.glade:35837 +#: src/emc/usr_intf/pncconf/pncconf.glade:36084 +#: src/emc/usr_intf/pncconf/pncconf.glade:40037 +#: src/emc/usr_intf/pncconf/pncconf.glade:40197 +#: src/emc/usr_intf/pncconf/pncconf.glade:40444 +#: src/emc/usr_intf/pncconf/pncconf.glade:44959 +#: src/emc/usr_intf/pncconf/pncconf.glade:45205 +#: src/emc/usr_intf/pncconf/pncconf.glade:45454 +#: src/emc/usr_intf/pncconf/pncconf.glade:47120 +#: src/emc/usr_intf/pncconf/pncconf.glade:47367 +#: src/emc/usr_intf/pncconf/pncconf.glade:51882 +#: src/emc/usr_intf/pncconf/pncconf.glade:52128 +#: src/emc/usr_intf/pncconf/pncconf.glade:52377 +#: src/emc/usr_intf/pncconf/pncconf.glade:54043 +#: src/emc/usr_intf/pncconf/pncconf.glade:54290 +#: src/emc/usr_intf/pncconf/pncconf.glade:58805 +#: src/emc/usr_intf/pncconf/pncconf.glade:59051 +#: src/emc/usr_intf/pncconf/pncconf.glade:59300 +#, fuzzy +msgid "Pin Type" +msgstr "Tip pozitie" -#: src/emc/usr_intf/pncconf/pncconf.glade:9531 -#: src/emc/usr_intf/pncconf/pncconf.glade:12855 -#: src/emc/usr_intf/pncconf/pncconf.glade:18112 -#: src/emc/usr_intf/pncconf/pncconf.glade:20217 -#: src/emc/usr_intf/pncconf/pncconf.glade:21502 -#: src/emc/usr_intf/pncconf/pncconf.glade:23298 -#: src/emc/usr_intf/pncconf/pncconf.glade:25094 -msgid "29:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8838 +#: src/emc/usr_intf/pncconf/pncconf.glade:8900 +#: src/emc/usr_intf/pncconf/pncconf.glade:13743 +#: src/emc/usr_intf/pncconf/pncconf.glade:13806 +#: src/emc/usr_intf/pncconf/pncconf.glade:16335 +#: src/emc/usr_intf/pncconf/pncconf.glade:16398 +#: src/emc/usr_intf/pncconf/pncconf.glade:18949 +#: src/emc/usr_intf/pncconf/pncconf.glade:19012 +#: src/emc/usr_intf/pncconf/pncconf.glade:20751 +#: src/emc/usr_intf/pncconf/pncconf.glade:20808 +#: src/emc/usr_intf/pncconf/pncconf.glade:20962 +#: src/emc/usr_intf/pncconf/pncconf.glade:21018 +#: src/emc/usr_intf/pncconf/pncconf.glade:22758 +#: src/emc/usr_intf/pncconf/pncconf.glade:22814 +#: src/emc/usr_intf/pncconf/pncconf.glade:24554 +#: src/emc/usr_intf/pncconf/pncconf.glade:24610 +#: src/emc/usr_intf/pncconf/pncconf.glade:26366 +#: src/emc/usr_intf/pncconf/pncconf.glade:26428 +#: src/emc/usr_intf/pncconf/pncconf.glade:31286 +#: src/emc/usr_intf/pncconf/pncconf.glade:31349 +#: src/emc/usr_intf/pncconf/pncconf.glade:31634 +#: src/emc/usr_intf/pncconf/pncconf.glade:35631 +#: src/emc/usr_intf/pncconf/pncconf.glade:35694 +#: src/emc/usr_intf/pncconf/pncconf.glade:35850 +#: src/emc/usr_intf/pncconf/pncconf.glade:35912 +#: src/emc/usr_intf/pncconf/pncconf.glade:40025 +#: src/emc/usr_intf/pncconf/pncconf.glade:40210 +#: src/emc/usr_intf/pncconf/pncconf.glade:40272 +#: src/emc/usr_intf/pncconf/pncconf.glade:45130 +#: src/emc/usr_intf/pncconf/pncconf.glade:45193 +#: src/emc/usr_intf/pncconf/pncconf.glade:45467 +#: src/emc/usr_intf/pncconf/pncconf.glade:47133 +#: src/emc/usr_intf/pncconf/pncconf.glade:47195 +#: src/emc/usr_intf/pncconf/pncconf.glade:52053 +#: src/emc/usr_intf/pncconf/pncconf.glade:52116 +#: src/emc/usr_intf/pncconf/pncconf.glade:52390 +#: src/emc/usr_intf/pncconf/pncconf.glade:54056 +#: src/emc/usr_intf/pncconf/pncconf.glade:54118 +#: src/emc/usr_intf/pncconf/pncconf.glade:58976 +#: src/emc/usr_intf/pncconf/pncconf.glade:59039 +#: src/emc/usr_intf/pncconf/pncconf.glade:59313 +#, fuzzy +msgid "Inv" +msgstr "Inverseaza" + +#: src/emc/usr_intf/pncconf/pncconf.glade:8867 +#: src/emc/usr_intf/pncconf/pncconf.glade:10731 +#: src/emc/usr_intf/pncconf/pncconf.glade:10751 +#: src/emc/usr_intf/pncconf/pncconf.glade:10771 +#: src/emc/usr_intf/pncconf/pncconf.glade:10791 +#: src/emc/usr_intf/pncconf/pncconf.glade:10811 +#: src/emc/usr_intf/pncconf/pncconf.glade:10831 +#: src/emc/usr_intf/pncconf/pncconf.glade:10851 +#: src/emc/usr_intf/pncconf/pncconf.glade:10871 +#: src/emc/usr_intf/pncconf/pncconf.glade:10891 +#: src/emc/usr_intf/pncconf/pncconf.glade:10911 +#: src/emc/usr_intf/pncconf/pncconf.glade:10931 +#: src/emc/usr_intf/pncconf/pncconf.glade:10951 +#: src/emc/usr_intf/pncconf/pncconf.glade:10971 +#: src/emc/usr_intf/pncconf/pncconf.glade:10991 +#: src/emc/usr_intf/pncconf/pncconf.glade:11011 +#: src/emc/usr_intf/pncconf/pncconf.glade:11031 +#: src/emc/usr_intf/pncconf/pncconf.glade:11051 +#: src/emc/usr_intf/pncconf/pncconf.glade:11071 +#: src/emc/usr_intf/pncconf/pncconf.glade:11091 +#: src/emc/usr_intf/pncconf/pncconf.glade:11111 +#: src/emc/usr_intf/pncconf/pncconf.glade:11131 +#: src/emc/usr_intf/pncconf/pncconf.glade:11151 +#: src/emc/usr_intf/pncconf/pncconf.glade:11171 +#: src/emc/usr_intf/pncconf/pncconf.glade:11465 +#: src/emc/usr_intf/pncconf/pncconf.glade:11485 +#: src/emc/usr_intf/pncconf/pncconf.glade:11505 +#: src/emc/usr_intf/pncconf/pncconf.glade:11525 +#: src/emc/usr_intf/pncconf/pncconf.glade:11545 +#: src/emc/usr_intf/pncconf/pncconf.glade:11565 +#: src/emc/usr_intf/pncconf/pncconf.glade:11585 +#: src/emc/usr_intf/pncconf/pncconf.glade:11605 +#: src/emc/usr_intf/pncconf/pncconf.glade:11625 +#: src/emc/usr_intf/pncconf/pncconf.glade:11645 +#: src/emc/usr_intf/pncconf/pncconf.glade:11665 +#: src/emc/usr_intf/pncconf/pncconf.glade:11685 +#: src/emc/usr_intf/pncconf/pncconf.glade:11705 +#: src/emc/usr_intf/pncconf/pncconf.glade:11725 +#: src/emc/usr_intf/pncconf/pncconf.glade:11745 +#: src/emc/usr_intf/pncconf/pncconf.glade:11765 +#: src/emc/usr_intf/pncconf/pncconf.glade:11785 +#: src/emc/usr_intf/pncconf/pncconf.glade:11805 +#: src/emc/usr_intf/pncconf/pncconf.glade:11825 +#: src/emc/usr_intf/pncconf/pncconf.glade:11845 +#: src/emc/usr_intf/pncconf/pncconf.glade:11865 +#: src/emc/usr_intf/pncconf/pncconf.glade:11885 +#: src/emc/usr_intf/pncconf/pncconf.glade:11905 +#: src/emc/usr_intf/pncconf/pncconf.glade:13768 +#: src/emc/usr_intf/pncconf/pncconf.glade:13974 +#: src/emc/usr_intf/pncconf/pncconf.glade:13994 +#: src/emc/usr_intf/pncconf/pncconf.glade:14014 +#: src/emc/usr_intf/pncconf/pncconf.glade:14034 +#: src/emc/usr_intf/pncconf/pncconf.glade:14054 +#: src/emc/usr_intf/pncconf/pncconf.glade:14074 +#: src/emc/usr_intf/pncconf/pncconf.glade:14094 +#: src/emc/usr_intf/pncconf/pncconf.glade:14114 +#: src/emc/usr_intf/pncconf/pncconf.glade:14134 +#: src/emc/usr_intf/pncconf/pncconf.glade:14154 +#: src/emc/usr_intf/pncconf/pncconf.glade:14174 +#: src/emc/usr_intf/pncconf/pncconf.glade:14194 +#: src/emc/usr_intf/pncconf/pncconf.glade:14214 +#: src/emc/usr_intf/pncconf/pncconf.glade:14234 +#: src/emc/usr_intf/pncconf/pncconf.glade:14254 +#: src/emc/usr_intf/pncconf/pncconf.glade:14274 +#: src/emc/usr_intf/pncconf/pncconf.glade:14294 +#: src/emc/usr_intf/pncconf/pncconf.glade:14314 +#: src/emc/usr_intf/pncconf/pncconf.glade:14334 +#: src/emc/usr_intf/pncconf/pncconf.glade:14354 +#: src/emc/usr_intf/pncconf/pncconf.glade:14374 +#: src/emc/usr_intf/pncconf/pncconf.glade:14394 +#: src/emc/usr_intf/pncconf/pncconf.glade:14414 +#: src/emc/usr_intf/pncconf/pncconf.glade:16360 +#: src/emc/usr_intf/pncconf/pncconf.glade:16670 +#: src/emc/usr_intf/pncconf/pncconf.glade:16690 +#: src/emc/usr_intf/pncconf/pncconf.glade:16710 +#: src/emc/usr_intf/pncconf/pncconf.glade:16730 +#: src/emc/usr_intf/pncconf/pncconf.glade:16750 +#: src/emc/usr_intf/pncconf/pncconf.glade:16770 +#: src/emc/usr_intf/pncconf/pncconf.glade:16790 +#: src/emc/usr_intf/pncconf/pncconf.glade:16810 +#: src/emc/usr_intf/pncconf/pncconf.glade:16830 +#: src/emc/usr_intf/pncconf/pncconf.glade:16850 +#: src/emc/usr_intf/pncconf/pncconf.glade:16870 +#: src/emc/usr_intf/pncconf/pncconf.glade:16890 +#: src/emc/usr_intf/pncconf/pncconf.glade:16910 +#: src/emc/usr_intf/pncconf/pncconf.glade:16930 +#: src/emc/usr_intf/pncconf/pncconf.glade:16950 +#: src/emc/usr_intf/pncconf/pncconf.glade:16970 +#: src/emc/usr_intf/pncconf/pncconf.glade:16990 +#: src/emc/usr_intf/pncconf/pncconf.glade:17010 +#: src/emc/usr_intf/pncconf/pncconf.glade:17030 +#: src/emc/usr_intf/pncconf/pncconf.glade:17050 +#: src/emc/usr_intf/pncconf/pncconf.glade:17070 +#: src/emc/usr_intf/pncconf/pncconf.glade:17090 +#: src/emc/usr_intf/pncconf/pncconf.glade:17110 +#: src/emc/usr_intf/pncconf/pncconf.glade:18974 +#: src/emc/usr_intf/pncconf/pncconf.glade:26395 +#: src/emc/usr_intf/pncconf/pncconf.glade:28311 +#: src/emc/usr_intf/pncconf/pncconf.glade:28331 +#: src/emc/usr_intf/pncconf/pncconf.glade:28351 +#: src/emc/usr_intf/pncconf/pncconf.glade:28371 +#: src/emc/usr_intf/pncconf/pncconf.glade:28391 +#: src/emc/usr_intf/pncconf/pncconf.glade:28411 +#: src/emc/usr_intf/pncconf/pncconf.glade:28431 +#: src/emc/usr_intf/pncconf/pncconf.glade:28451 +#: src/emc/usr_intf/pncconf/pncconf.glade:28471 +#: src/emc/usr_intf/pncconf/pncconf.glade:28491 +#: src/emc/usr_intf/pncconf/pncconf.glade:28511 +#: src/emc/usr_intf/pncconf/pncconf.glade:28531 +#: src/emc/usr_intf/pncconf/pncconf.glade:28551 +#: src/emc/usr_intf/pncconf/pncconf.glade:28571 +#: src/emc/usr_intf/pncconf/pncconf.glade:28591 +#: src/emc/usr_intf/pncconf/pncconf.glade:28611 +#: src/emc/usr_intf/pncconf/pncconf.glade:28631 +#: src/emc/usr_intf/pncconf/pncconf.glade:28651 +#: src/emc/usr_intf/pncconf/pncconf.glade:28671 +#: src/emc/usr_intf/pncconf/pncconf.glade:28691 +#: src/emc/usr_intf/pncconf/pncconf.glade:28711 +#: src/emc/usr_intf/pncconf/pncconf.glade:28731 +#: src/emc/usr_intf/pncconf/pncconf.glade:28751 +#: src/emc/usr_intf/pncconf/pncconf.glade:28942 +#: src/emc/usr_intf/pncconf/pncconf.glade:28962 +#: src/emc/usr_intf/pncconf/pncconf.glade:28982 +#: src/emc/usr_intf/pncconf/pncconf.glade:29002 +#: src/emc/usr_intf/pncconf/pncconf.glade:29022 +#: src/emc/usr_intf/pncconf/pncconf.glade:29042 +#: src/emc/usr_intf/pncconf/pncconf.glade:29062 +#: src/emc/usr_intf/pncconf/pncconf.glade:29082 +#: src/emc/usr_intf/pncconf/pncconf.glade:29102 +#: src/emc/usr_intf/pncconf/pncconf.glade:29122 +#: src/emc/usr_intf/pncconf/pncconf.glade:29142 +#: src/emc/usr_intf/pncconf/pncconf.glade:29162 +#: src/emc/usr_intf/pncconf/pncconf.glade:29182 +#: src/emc/usr_intf/pncconf/pncconf.glade:29202 +#: src/emc/usr_intf/pncconf/pncconf.glade:29222 +#: src/emc/usr_intf/pncconf/pncconf.glade:29242 +#: src/emc/usr_intf/pncconf/pncconf.glade:29262 +#: src/emc/usr_intf/pncconf/pncconf.glade:29282 +#: src/emc/usr_intf/pncconf/pncconf.glade:29302 +#: src/emc/usr_intf/pncconf/pncconf.glade:29322 +#: src/emc/usr_intf/pncconf/pncconf.glade:29342 +#: src/emc/usr_intf/pncconf/pncconf.glade:29362 +#: src/emc/usr_intf/pncconf/pncconf.glade:29382 +#: src/emc/usr_intf/pncconf/pncconf.glade:31311 +#: src/emc/usr_intf/pncconf/pncconf.glade:31663 +#: src/emc/usr_intf/pncconf/pncconf.glade:32881 +#: src/emc/usr_intf/pncconf/pncconf.glade:32901 +#: src/emc/usr_intf/pncconf/pncconf.glade:32921 +#: src/emc/usr_intf/pncconf/pncconf.glade:32941 +#: src/emc/usr_intf/pncconf/pncconf.glade:32961 +#: src/emc/usr_intf/pncconf/pncconf.glade:32981 +#: src/emc/usr_intf/pncconf/pncconf.glade:33001 +#: src/emc/usr_intf/pncconf/pncconf.glade:33021 +#: src/emc/usr_intf/pncconf/pncconf.glade:33041 +#: src/emc/usr_intf/pncconf/pncconf.glade:33061 +#: src/emc/usr_intf/pncconf/pncconf.glade:33081 +#: src/emc/usr_intf/pncconf/pncconf.glade:33300 +#: src/emc/usr_intf/pncconf/pncconf.glade:33320 +#: src/emc/usr_intf/pncconf/pncconf.glade:33340 +#: src/emc/usr_intf/pncconf/pncconf.glade:33360 +#: src/emc/usr_intf/pncconf/pncconf.glade:33380 +#: src/emc/usr_intf/pncconf/pncconf.glade:33400 +#: src/emc/usr_intf/pncconf/pncconf.glade:33420 +#: src/emc/usr_intf/pncconf/pncconf.glade:33440 +#: src/emc/usr_intf/pncconf/pncconf.glade:33460 +#: src/emc/usr_intf/pncconf/pncconf.glade:33480 +#: src/emc/usr_intf/pncconf/pncconf.glade:33500 +#: src/emc/usr_intf/pncconf/pncconf.glade:33520 +#: src/emc/usr_intf/pncconf/pncconf.glade:33540 +#: src/emc/usr_intf/pncconf/pncconf.glade:33560 +#: src/emc/usr_intf/pncconf/pncconf.glade:33580 +#: src/emc/usr_intf/pncconf/pncconf.glade:33600 +#: src/emc/usr_intf/pncconf/pncconf.glade:33620 +#: src/emc/usr_intf/pncconf/pncconf.glade:33640 +#: src/emc/usr_intf/pncconf/pncconf.glade:33660 +#: src/emc/usr_intf/pncconf/pncconf.glade:33680 +#: src/emc/usr_intf/pncconf/pncconf.glade:33700 +#: src/emc/usr_intf/pncconf/pncconf.glade:33720 +#: src/emc/usr_intf/pncconf/pncconf.glade:33740 +#: src/emc/usr_intf/pncconf/pncconf.glade:35656 +#: src/emc/usr_intf/pncconf/pncconf.glade:35879 +#: src/emc/usr_intf/pncconf/pncconf.glade:37808 +#: src/emc/usr_intf/pncconf/pncconf.glade:37828 +#: src/emc/usr_intf/pncconf/pncconf.glade:37848 +#: src/emc/usr_intf/pncconf/pncconf.glade:37868 +#: src/emc/usr_intf/pncconf/pncconf.glade:37888 +#: src/emc/usr_intf/pncconf/pncconf.glade:37908 +#: src/emc/usr_intf/pncconf/pncconf.glade:37928 +#: src/emc/usr_intf/pncconf/pncconf.glade:37948 +#: src/emc/usr_intf/pncconf/pncconf.glade:37968 +#: src/emc/usr_intf/pncconf/pncconf.glade:37988 +#: src/emc/usr_intf/pncconf/pncconf.glade:38008 +#: src/emc/usr_intf/pncconf/pncconf.glade:38028 +#: src/emc/usr_intf/pncconf/pncconf.glade:38048 +#: src/emc/usr_intf/pncconf/pncconf.glade:38068 +#: src/emc/usr_intf/pncconf/pncconf.glade:38088 +#: src/emc/usr_intf/pncconf/pncconf.glade:38108 +#: src/emc/usr_intf/pncconf/pncconf.glade:38128 +#: src/emc/usr_intf/pncconf/pncconf.glade:38148 +#: src/emc/usr_intf/pncconf/pncconf.glade:38168 +#: src/emc/usr_intf/pncconf/pncconf.glade:38188 +#: src/emc/usr_intf/pncconf/pncconf.glade:38208 +#: src/emc/usr_intf/pncconf/pncconf.glade:38228 +#: src/emc/usr_intf/pncconf/pncconf.glade:38248 +#: src/emc/usr_intf/pncconf/pncconf.glade:38557 +#: src/emc/usr_intf/pncconf/pncconf.glade:38577 +#: src/emc/usr_intf/pncconf/pncconf.glade:38597 +#: src/emc/usr_intf/pncconf/pncconf.glade:38617 +#: src/emc/usr_intf/pncconf/pncconf.glade:38637 +#: src/emc/usr_intf/pncconf/pncconf.glade:38657 +#: src/emc/usr_intf/pncconf/pncconf.glade:38677 +#: src/emc/usr_intf/pncconf/pncconf.glade:38697 +#: src/emc/usr_intf/pncconf/pncconf.glade:38717 +#: src/emc/usr_intf/pncconf/pncconf.glade:38737 +#: src/emc/usr_intf/pncconf/pncconf.glade:38757 +#: src/emc/usr_intf/pncconf/pncconf.glade:39987 +#: src/emc/usr_intf/pncconf/pncconf.glade:40239 +#: src/emc/usr_intf/pncconf/pncconf.glade:42155 +#: src/emc/usr_intf/pncconf/pncconf.glade:42175 +#: src/emc/usr_intf/pncconf/pncconf.glade:42195 +#: src/emc/usr_intf/pncconf/pncconf.glade:42215 +#: src/emc/usr_intf/pncconf/pncconf.glade:42235 +#: src/emc/usr_intf/pncconf/pncconf.glade:42255 +#: src/emc/usr_intf/pncconf/pncconf.glade:42275 +#: src/emc/usr_intf/pncconf/pncconf.glade:42295 +#: src/emc/usr_intf/pncconf/pncconf.glade:42315 +#: src/emc/usr_intf/pncconf/pncconf.glade:42335 +#: src/emc/usr_intf/pncconf/pncconf.glade:42355 +#: src/emc/usr_intf/pncconf/pncconf.glade:42375 +#: src/emc/usr_intf/pncconf/pncconf.glade:42395 +#: src/emc/usr_intf/pncconf/pncconf.glade:42415 +#: src/emc/usr_intf/pncconf/pncconf.glade:42435 +#: src/emc/usr_intf/pncconf/pncconf.glade:42455 +#: src/emc/usr_intf/pncconf/pncconf.glade:42475 +#: src/emc/usr_intf/pncconf/pncconf.glade:42495 +#: src/emc/usr_intf/pncconf/pncconf.glade:42515 +#: src/emc/usr_intf/pncconf/pncconf.glade:42535 +#: src/emc/usr_intf/pncconf/pncconf.glade:42555 +#: src/emc/usr_intf/pncconf/pncconf.glade:42575 +#: src/emc/usr_intf/pncconf/pncconf.glade:42595 +#: src/emc/usr_intf/pncconf/pncconf.glade:42786 +#: src/emc/usr_intf/pncconf/pncconf.glade:42806 +#: src/emc/usr_intf/pncconf/pncconf.glade:42826 +#: src/emc/usr_intf/pncconf/pncconf.glade:42846 +#: src/emc/usr_intf/pncconf/pncconf.glade:42866 +#: src/emc/usr_intf/pncconf/pncconf.glade:42886 +#: src/emc/usr_intf/pncconf/pncconf.glade:42906 +#: src/emc/usr_intf/pncconf/pncconf.glade:42926 +#: src/emc/usr_intf/pncconf/pncconf.glade:42946 +#: src/emc/usr_intf/pncconf/pncconf.glade:42966 +#: src/emc/usr_intf/pncconf/pncconf.glade:42986 +#: src/emc/usr_intf/pncconf/pncconf.glade:43006 +#: src/emc/usr_intf/pncconf/pncconf.glade:43026 +#: src/emc/usr_intf/pncconf/pncconf.glade:43046 +#: src/emc/usr_intf/pncconf/pncconf.glade:43066 +#: src/emc/usr_intf/pncconf/pncconf.glade:43086 +#: src/emc/usr_intf/pncconf/pncconf.glade:43106 +#: src/emc/usr_intf/pncconf/pncconf.glade:43126 +#: src/emc/usr_intf/pncconf/pncconf.glade:43146 +#: src/emc/usr_intf/pncconf/pncconf.glade:43166 +#: src/emc/usr_intf/pncconf/pncconf.glade:43186 +#: src/emc/usr_intf/pncconf/pncconf.glade:43206 +#: src/emc/usr_intf/pncconf/pncconf.glade:43226 +#: src/emc/usr_intf/pncconf/pncconf.glade:45155 +#: src/emc/usr_intf/pncconf/pncconf.glade:45496 +#: src/emc/usr_intf/pncconf/pncconf.glade:46726 +#: src/emc/usr_intf/pncconf/pncconf.glade:46746 +#: src/emc/usr_intf/pncconf/pncconf.glade:46766 +#: src/emc/usr_intf/pncconf/pncconf.glade:46786 +#: src/emc/usr_intf/pncconf/pncconf.glade:46806 +#: src/emc/usr_intf/pncconf/pncconf.glade:46826 +#: src/emc/usr_intf/pncconf/pncconf.glade:46846 +#: src/emc/usr_intf/pncconf/pncconf.glade:46866 +#: src/emc/usr_intf/pncconf/pncconf.glade:46886 +#: src/emc/usr_intf/pncconf/pncconf.glade:46906 +#: src/emc/usr_intf/pncconf/pncconf.glade:46926 +#: src/emc/usr_intf/pncconf/pncconf.glade:47162 +#: src/emc/usr_intf/pncconf/pncconf.glade:49078 +#: src/emc/usr_intf/pncconf/pncconf.glade:49098 +#: src/emc/usr_intf/pncconf/pncconf.glade:49118 +#: src/emc/usr_intf/pncconf/pncconf.glade:49138 +#: src/emc/usr_intf/pncconf/pncconf.glade:49158 +#: src/emc/usr_intf/pncconf/pncconf.glade:49178 +#: src/emc/usr_intf/pncconf/pncconf.glade:49198 +#: src/emc/usr_intf/pncconf/pncconf.glade:49218 +#: src/emc/usr_intf/pncconf/pncconf.glade:49238 +#: src/emc/usr_intf/pncconf/pncconf.glade:49258 +#: src/emc/usr_intf/pncconf/pncconf.glade:49278 +#: src/emc/usr_intf/pncconf/pncconf.glade:49298 +#: src/emc/usr_intf/pncconf/pncconf.glade:49318 +#: src/emc/usr_intf/pncconf/pncconf.glade:49338 +#: src/emc/usr_intf/pncconf/pncconf.glade:49358 +#: src/emc/usr_intf/pncconf/pncconf.glade:49378 +#: src/emc/usr_intf/pncconf/pncconf.glade:49398 +#: src/emc/usr_intf/pncconf/pncconf.glade:49418 +#: src/emc/usr_intf/pncconf/pncconf.glade:49438 +#: src/emc/usr_intf/pncconf/pncconf.glade:49458 +#: src/emc/usr_intf/pncconf/pncconf.glade:49478 +#: src/emc/usr_intf/pncconf/pncconf.glade:49498 +#: src/emc/usr_intf/pncconf/pncconf.glade:49518 +#: src/emc/usr_intf/pncconf/pncconf.glade:49709 +#: src/emc/usr_intf/pncconf/pncconf.glade:49729 +#: src/emc/usr_intf/pncconf/pncconf.glade:49749 +#: src/emc/usr_intf/pncconf/pncconf.glade:49769 +#: src/emc/usr_intf/pncconf/pncconf.glade:49789 +#: src/emc/usr_intf/pncconf/pncconf.glade:49809 +#: src/emc/usr_intf/pncconf/pncconf.glade:49829 +#: src/emc/usr_intf/pncconf/pncconf.glade:49849 +#: src/emc/usr_intf/pncconf/pncconf.glade:49869 +#: src/emc/usr_intf/pncconf/pncconf.glade:49889 +#: src/emc/usr_intf/pncconf/pncconf.glade:49909 +#: src/emc/usr_intf/pncconf/pncconf.glade:49929 +#: src/emc/usr_intf/pncconf/pncconf.glade:49949 +#: src/emc/usr_intf/pncconf/pncconf.glade:49969 +#: src/emc/usr_intf/pncconf/pncconf.glade:49989 +#: src/emc/usr_intf/pncconf/pncconf.glade:50009 +#: src/emc/usr_intf/pncconf/pncconf.glade:50029 +#: src/emc/usr_intf/pncconf/pncconf.glade:50049 +#: src/emc/usr_intf/pncconf/pncconf.glade:50069 +#: src/emc/usr_intf/pncconf/pncconf.glade:50089 +#: src/emc/usr_intf/pncconf/pncconf.glade:50109 +#: src/emc/usr_intf/pncconf/pncconf.glade:50129 +#: src/emc/usr_intf/pncconf/pncconf.glade:50149 +#: src/emc/usr_intf/pncconf/pncconf.glade:52078 +#: src/emc/usr_intf/pncconf/pncconf.glade:52419 +#: src/emc/usr_intf/pncconf/pncconf.glade:53649 +#: src/emc/usr_intf/pncconf/pncconf.glade:53669 +#: src/emc/usr_intf/pncconf/pncconf.glade:53689 +#: src/emc/usr_intf/pncconf/pncconf.glade:53709 +#: src/emc/usr_intf/pncconf/pncconf.glade:53729 +#: src/emc/usr_intf/pncconf/pncconf.glade:53749 +#: src/emc/usr_intf/pncconf/pncconf.glade:53769 +#: src/emc/usr_intf/pncconf/pncconf.glade:53789 +#: src/emc/usr_intf/pncconf/pncconf.glade:53809 +#: src/emc/usr_intf/pncconf/pncconf.glade:53829 +#: src/emc/usr_intf/pncconf/pncconf.glade:53849 +#: src/emc/usr_intf/pncconf/pncconf.glade:54085 +#: src/emc/usr_intf/pncconf/pncconf.glade:56001 +#: src/emc/usr_intf/pncconf/pncconf.glade:56021 +#: src/emc/usr_intf/pncconf/pncconf.glade:56041 +#: src/emc/usr_intf/pncconf/pncconf.glade:56061 +#: src/emc/usr_intf/pncconf/pncconf.glade:56081 +#: src/emc/usr_intf/pncconf/pncconf.glade:56101 +#: src/emc/usr_intf/pncconf/pncconf.glade:56121 +#: src/emc/usr_intf/pncconf/pncconf.glade:56141 +#: src/emc/usr_intf/pncconf/pncconf.glade:56161 +#: src/emc/usr_intf/pncconf/pncconf.glade:56181 +#: src/emc/usr_intf/pncconf/pncconf.glade:56201 +#: src/emc/usr_intf/pncconf/pncconf.glade:56221 +#: src/emc/usr_intf/pncconf/pncconf.glade:56241 +#: src/emc/usr_intf/pncconf/pncconf.glade:56261 +#: src/emc/usr_intf/pncconf/pncconf.glade:56281 +#: src/emc/usr_intf/pncconf/pncconf.glade:56301 +#: src/emc/usr_intf/pncconf/pncconf.glade:56321 +#: src/emc/usr_intf/pncconf/pncconf.glade:56341 +#: src/emc/usr_intf/pncconf/pncconf.glade:56361 +#: src/emc/usr_intf/pncconf/pncconf.glade:56381 +#: src/emc/usr_intf/pncconf/pncconf.glade:56401 +#: src/emc/usr_intf/pncconf/pncconf.glade:56421 +#: src/emc/usr_intf/pncconf/pncconf.glade:56441 +#: src/emc/usr_intf/pncconf/pncconf.glade:56632 +#: src/emc/usr_intf/pncconf/pncconf.glade:56652 +#: src/emc/usr_intf/pncconf/pncconf.glade:56672 +#: src/emc/usr_intf/pncconf/pncconf.glade:56692 +#: src/emc/usr_intf/pncconf/pncconf.glade:56712 +#: src/emc/usr_intf/pncconf/pncconf.glade:56732 +#: src/emc/usr_intf/pncconf/pncconf.glade:56752 +#: src/emc/usr_intf/pncconf/pncconf.glade:56772 +#: src/emc/usr_intf/pncconf/pncconf.glade:56792 +#: src/emc/usr_intf/pncconf/pncconf.glade:56812 +#: src/emc/usr_intf/pncconf/pncconf.glade:56832 +#: src/emc/usr_intf/pncconf/pncconf.glade:56852 +#: src/emc/usr_intf/pncconf/pncconf.glade:56872 +#: src/emc/usr_intf/pncconf/pncconf.glade:56892 +#: src/emc/usr_intf/pncconf/pncconf.glade:56912 +#: src/emc/usr_intf/pncconf/pncconf.glade:56932 +#: src/emc/usr_intf/pncconf/pncconf.glade:56952 +#: src/emc/usr_intf/pncconf/pncconf.glade:56972 +#: src/emc/usr_intf/pncconf/pncconf.glade:56992 +#: src/emc/usr_intf/pncconf/pncconf.glade:57012 +#: src/emc/usr_intf/pncconf/pncconf.glade:57032 +#: src/emc/usr_intf/pncconf/pncconf.glade:57052 +#: src/emc/usr_intf/pncconf/pncconf.glade:57072 +#: src/emc/usr_intf/pncconf/pncconf.glade:59001 +#: src/emc/usr_intf/pncconf/pncconf.glade:59342 +#: src/emc/usr_intf/pncconf/pncconf.glade:60572 +#: src/emc/usr_intf/pncconf/pncconf.glade:60592 +#: src/emc/usr_intf/pncconf/pncconf.glade:60612 +#: src/emc/usr_intf/pncconf/pncconf.glade:60632 +#: src/emc/usr_intf/pncconf/pncconf.glade:60652 +#: src/emc/usr_intf/pncconf/pncconf.glade:60672 +#: src/emc/usr_intf/pncconf/pncconf.glade:60692 +#: src/emc/usr_intf/pncconf/pncconf.glade:60712 +#: src/emc/usr_intf/pncconf/pncconf.glade:60732 +#: src/emc/usr_intf/pncconf/pncconf.glade:60752 +#: src/emc/usr_intf/pncconf/pncconf.glade:60772 +msgid "" +"GPIO Input\n" +"GPIO Output\n" +"GPIO O Drain\n" +"Encoder\n" +"PWM\n" +"StepGen\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9547 -#: src/emc/usr_intf/pncconf/pncconf.glade:12839 -#: src/emc/usr_intf/pncconf/pncconf.glade:18096 -#: src/emc/usr_intf/pncconf/pncconf.glade:20201 -#: src/emc/usr_intf/pncconf/pncconf.glade:21518 -#: src/emc/usr_intf/pncconf/pncconf.glade:23314 -#: src/emc/usr_intf/pncconf/pncconf.glade:25110 -msgid "27:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8913 +#: src/emc/usr_intf/pncconf/pncconf.glade:13730 +#: src/emc/usr_intf/pncconf/pncconf.glade:18936 +#: src/emc/usr_intf/pncconf/pncconf.glade:20738 +#: src/emc/usr_intf/pncconf/pncconf.glade:21031 +#: src/emc/usr_intf/pncconf/pncconf.glade:22827 +#: src/emc/usr_intf/pncconf/pncconf.glade:24623 +msgid " 1:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9563 -#: src/emc/usr_intf/pncconf/pncconf.glade:12823 -#: src/emc/usr_intf/pncconf/pncconf.glade:18080 -#: src/emc/usr_intf/pncconf/pncconf.glade:20185 -#: src/emc/usr_intf/pncconf/pncconf.glade:21534 -#: src/emc/usr_intf/pncconf/pncconf.glade:23330 -#: src/emc/usr_intf/pncconf/pncconf.glade:25126 -msgid "25:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8927 +#: src/emc/usr_intf/pncconf/pncconf.glade:13716 +#: src/emc/usr_intf/pncconf/pncconf.glade:18922 +#: src/emc/usr_intf/pncconf/pncconf.glade:20724 +#: src/emc/usr_intf/pncconf/pncconf.glade:21045 +#: src/emc/usr_intf/pncconf/pncconf.glade:22841 +#: src/emc/usr_intf/pncconf/pncconf.glade:24637 +msgid " 3:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9936 -#: src/emc/usr_intf/pncconf/pncconf.glade:12450 -#: src/emc/usr_intf/pncconf/pncconf.glade:17707 -#: src/emc/usr_intf/pncconf/pncconf.glade:19924 -#: src/emc/usr_intf/pncconf/pncconf.glade:21795 -#: src/emc/usr_intf/pncconf/pncconf.glade:23591 -#: src/emc/usr_intf/pncconf/pncconf.glade:25387 -msgid "33:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8941 +#: src/emc/usr_intf/pncconf/pncconf.glade:13702 +#: src/emc/usr_intf/pncconf/pncconf.glade:18908 +#: src/emc/usr_intf/pncconf/pncconf.glade:20710 +#: src/emc/usr_intf/pncconf/pncconf.glade:21059 +#: src/emc/usr_intf/pncconf/pncconf.glade:22855 +#: src/emc/usr_intf/pncconf/pncconf.glade:24651 +msgid " 5:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9952 -#: src/emc/usr_intf/pncconf/pncconf.glade:12434 -#: src/emc/usr_intf/pncconf/pncconf.glade:17691 -#: src/emc/usr_intf/pncconf/pncconf.glade:19908 -#: src/emc/usr_intf/pncconf/pncconf.glade:21811 -#: src/emc/usr_intf/pncconf/pncconf.glade:23607 -#: src/emc/usr_intf/pncconf/pncconf.glade:25403 -msgid "35:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8955 +#: src/emc/usr_intf/pncconf/pncconf.glade:13688 +#: src/emc/usr_intf/pncconf/pncconf.glade:18894 +#: src/emc/usr_intf/pncconf/pncconf.glade:20696 +#: src/emc/usr_intf/pncconf/pncconf.glade:21073 +#: src/emc/usr_intf/pncconf/pncconf.glade:22869 +#: src/emc/usr_intf/pncconf/pncconf.glade:24665 +msgid " 7:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9968 -#: src/emc/usr_intf/pncconf/pncconf.glade:12418 -#: src/emc/usr_intf/pncconf/pncconf.glade:17675 -#: src/emc/usr_intf/pncconf/pncconf.glade:19892 -#: src/emc/usr_intf/pncconf/pncconf.glade:21827 -#: src/emc/usr_intf/pncconf/pncconf.glade:23623 -#: src/emc/usr_intf/pncconf/pncconf.glade:25419 -msgid "37:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8969 +#: src/emc/usr_intf/pncconf/pncconf.glade:13674 +#: src/emc/usr_intf/pncconf/pncconf.glade:18880 +#: src/emc/usr_intf/pncconf/pncconf.glade:20682 +#: src/emc/usr_intf/pncconf/pncconf.glade:21087 +#: src/emc/usr_intf/pncconf/pncconf.glade:22883 +#: src/emc/usr_intf/pncconf/pncconf.glade:24679 +msgid " 9:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9984 -#: src/emc/usr_intf/pncconf/pncconf.glade:12402 -#: src/emc/usr_intf/pncconf/pncconf.glade:17659 -#: src/emc/usr_intf/pncconf/pncconf.glade:19876 -#: src/emc/usr_intf/pncconf/pncconf.glade:21843 -#: src/emc/usr_intf/pncconf/pncconf.glade:23639 -#: src/emc/usr_intf/pncconf/pncconf.glade:25435 -msgid "39:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8983 +#: src/emc/usr_intf/pncconf/pncconf.glade:13660 +#: src/emc/usr_intf/pncconf/pncconf.glade:18866 +#: src/emc/usr_intf/pncconf/pncconf.glade:20668 +#: src/emc/usr_intf/pncconf/pncconf.glade:21101 +#: src/emc/usr_intf/pncconf/pncconf.glade:22897 +#: src/emc/usr_intf/pncconf/pncconf.glade:24693 +msgid "11:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10000 -#: src/emc/usr_intf/pncconf/pncconf.glade:12386 -#: src/emc/usr_intf/pncconf/pncconf.glade:17643 -#: src/emc/usr_intf/pncconf/pncconf.glade:19860 -#: src/emc/usr_intf/pncconf/pncconf.glade:21859 -#: src/emc/usr_intf/pncconf/pncconf.glade:23655 -#: src/emc/usr_intf/pncconf/pncconf.glade:25451 -msgid "41:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8997 +#: src/emc/usr_intf/pncconf/pncconf.glade:13646 +#: src/emc/usr_intf/pncconf/pncconf.glade:18852 +#: src/emc/usr_intf/pncconf/pncconf.glade:20654 +#: src/emc/usr_intf/pncconf/pncconf.glade:21115 +#: src/emc/usr_intf/pncconf/pncconf.glade:22911 +#: src/emc/usr_intf/pncconf/pncconf.glade:24707 +msgid "13:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10016 -#: src/emc/usr_intf/pncconf/pncconf.glade:12370 -#: src/emc/usr_intf/pncconf/pncconf.glade:17627 -#: src/emc/usr_intf/pncconf/pncconf.glade:19844 -#: src/emc/usr_intf/pncconf/pncconf.glade:21875 -#: src/emc/usr_intf/pncconf/pncconf.glade:23671 -#: src/emc/usr_intf/pncconf/pncconf.glade:25467 -msgid "43:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9011 +#: src/emc/usr_intf/pncconf/pncconf.glade:13632 +#: src/emc/usr_intf/pncconf/pncconf.glade:18838 +#: src/emc/usr_intf/pncconf/pncconf.glade:20640 +#: src/emc/usr_intf/pncconf/pncconf.glade:21129 +#: src/emc/usr_intf/pncconf/pncconf.glade:22925 +#: src/emc/usr_intf/pncconf/pncconf.glade:24721 +msgid "15:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10032 -#: src/emc/usr_intf/pncconf/pncconf.glade:12354 -#: src/emc/usr_intf/pncconf/pncconf.glade:17611 -#: src/emc/usr_intf/pncconf/pncconf.glade:19828 -#: src/emc/usr_intf/pncconf/pncconf.glade:21891 -#: src/emc/usr_intf/pncconf/pncconf.glade:23687 -#: src/emc/usr_intf/pncconf/pncconf.glade:25483 -msgid "45:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9025 +#: src/emc/usr_intf/pncconf/pncconf.glade:13618 +#: src/emc/usr_intf/pncconf/pncconf.glade:18824 +#: src/emc/usr_intf/pncconf/pncconf.glade:20626 +#: src/emc/usr_intf/pncconf/pncconf.glade:21143 +#: src/emc/usr_intf/pncconf/pncconf.glade:22939 +#: src/emc/usr_intf/pncconf/pncconf.glade:24735 +msgid "17:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10099 -#: src/emc/usr_intf/pncconf/pncconf.glade:12287 -#: src/emc/usr_intf/pncconf/pncconf.glade:17544 -#: src/emc/usr_intf/pncconf/pncconf.glade:19777 -#: src/emc/usr_intf/pncconf/pncconf.glade:21942 -#: src/emc/usr_intf/pncconf/pncconf.glade:23738 -#: src/emc/usr_intf/pncconf/pncconf.glade:25534 -msgid "47:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9039 +#: src/emc/usr_intf/pncconf/pncconf.glade:13604 +#: src/emc/usr_intf/pncconf/pncconf.glade:18810 +#: src/emc/usr_intf/pncconf/pncconf.glade:20612 +#: src/emc/usr_intf/pncconf/pncconf.glade:21157 +#: src/emc/usr_intf/pncconf/pncconf.glade:22953 +#: src/emc/usr_intf/pncconf/pncconf.glade:24749 +msgid "19:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10822 -#: src/emc/usr_intf/pncconf/pncconf.glade:11077 -#: src/emc/usr_intf/pncconf/pncconf.glade:11311 -#: src/emc/usr_intf/pncconf/pncconf.glade:11567 -#: src/emc/usr_intf/pncconf/pncconf.glade:13924 -#: src/emc/usr_intf/pncconf/pncconf.glade:14171 -#: src/emc/usr_intf/pncconf/pncconf.glade:16516 -#: src/emc/usr_intf/pncconf/pncconf.glade:16772 -#: src/emc/usr_intf/pncconf/pncconf.glade:19129 -#: src/emc/usr_intf/pncconf/pncconf.glade:19379 -#: src/emc/usr_intf/pncconf/pncconf.glade:22343 -#: src/emc/usr_intf/pncconf/pncconf.glade:22592 -#: src/emc/usr_intf/pncconf/pncconf.glade:24139 -#: src/emc/usr_intf/pncconf/pncconf.glade:24388 -#: src/emc/usr_intf/pncconf/pncconf.glade:25935 -#: src/emc/usr_intf/pncconf/pncconf.glade:26184 -#: src/emc/usr_intf/pncconf/pncconf.glade:28515 -#: src/emc/usr_intf/pncconf/pncconf.glade:28761 -#: src/emc/usr_intf/pncconf/pncconf.glade:28892 -#: src/emc/usr_intf/pncconf/pncconf.glade:29139 -#: src/emc/usr_intf/pncconf/pncconf.glade:33079 -#: src/emc/usr_intf/pncconf/pncconf.glade:33250 -#: src/emc/usr_intf/pncconf/pncconf.glade:33497 -#: src/emc/usr_intf/pncconf/pncconf.glade:38012 -#: src/emc/usr_intf/pncconf/pncconf.glade:38258 -#: src/emc/usr_intf/pncconf/pncconf.glade:38507 -#: src/emc/usr_intf/pncconf/pncconf.glade:42359 -#: src/emc/usr_intf/pncconf/pncconf.glade:42605 -#: src/emc/usr_intf/pncconf/pncconf.glade:42736 -#: src/emc/usr_intf/pncconf/pncconf.glade:42983 -#: src/emc/usr_intf/pncconf/pncconf.glade:46936 -#: src/emc/usr_intf/pncconf/pncconf.glade:49282 -#: src/emc/usr_intf/pncconf/pncconf.glade:49528 -#: src/emc/usr_intf/pncconf/pncconf.glade:49659 -#: src/emc/usr_intf/pncconf/pncconf.glade:49906 -#: src/emc/usr_intf/pncconf/pncconf.glade:53859 -#, fuzzy -msgid "Pin Type" -msgstr "Tip pozitie" +#: src/emc/usr_intf/pncconf/pncconf.glade:9053 +#: src/emc/usr_intf/pncconf/pncconf.glade:13590 +#: src/emc/usr_intf/pncconf/pncconf.glade:18796 +#: src/emc/usr_intf/pncconf/pncconf.glade:20598 +#: src/emc/usr_intf/pncconf/pncconf.glade:21171 +#: src/emc/usr_intf/pncconf/pncconf.glade:22967 +#: src/emc/usr_intf/pncconf/pncconf.glade:24763 +msgid "21:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10835 -#: src/emc/usr_intf/pncconf/pncconf.glade:11553 -#: src/emc/usr_intf/pncconf/pncconf.glade:16758 -#: src/emc/usr_intf/pncconf/pncconf.glade:19365 -#: src/emc/usr_intf/pncconf/pncconf.glade:22356 -#: src/emc/usr_intf/pncconf/pncconf.glade:24152 -#: src/emc/usr_intf/pncconf/pncconf.glade:25948 +#: src/emc/usr_intf/pncconf/pncconf.glade:9067 +#: src/emc/usr_intf/pncconf/pncconf.glade:13576 +#: src/emc/usr_intf/pncconf/pncconf.glade:18782 +#: src/emc/usr_intf/pncconf/pncconf.glade:20584 +#: src/emc/usr_intf/pncconf/pncconf.glade:21185 +#: src/emc/usr_intf/pncconf/pncconf.glade:22981 +#: src/emc/usr_intf/pncconf/pncconf.glade:24777 msgid "23:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10849 -#: src/emc/usr_intf/pncconf/pncconf.glade:11539 -#: src/emc/usr_intf/pncconf/pncconf.glade:16744 -#: src/emc/usr_intf/pncconf/pncconf.glade:19351 -#: src/emc/usr_intf/pncconf/pncconf.glade:22370 -#: src/emc/usr_intf/pncconf/pncconf.glade:24166 -#: src/emc/usr_intf/pncconf/pncconf.glade:25962 -msgid "21:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9801 +#: src/emc/usr_intf/pncconf/pncconf.glade:12840 +#: src/emc/usr_intf/pncconf/pncconf.glade:17994 +#: src/emc/usr_intf/pncconf/pncconf.glade:20170 +#: src/emc/usr_intf/pncconf/pncconf.glade:21597 +#: src/emc/usr_intf/pncconf/pncconf.glade:23393 +#: src/emc/usr_intf/pncconf/pncconf.glade:25189 +msgid "47:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10863 -#: src/emc/usr_intf/pncconf/pncconf.glade:11525 -#: src/emc/usr_intf/pncconf/pncconf.glade:16730 -#: src/emc/usr_intf/pncconf/pncconf.glade:19337 -#: src/emc/usr_intf/pncconf/pncconf.glade:22384 -#: src/emc/usr_intf/pncconf/pncconf.glade:24180 -#: src/emc/usr_intf/pncconf/pncconf.glade:25976 -msgid "19:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9868 +#: src/emc/usr_intf/pncconf/pncconf.glade:12773 +#: src/emc/usr_intf/pncconf/pncconf.glade:17927 +#: src/emc/usr_intf/pncconf/pncconf.glade:20119 +#: src/emc/usr_intf/pncconf/pncconf.glade:21648 +#: src/emc/usr_intf/pncconf/pncconf.glade:23444 +#: src/emc/usr_intf/pncconf/pncconf.glade:25240 +msgid "45:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10877 -#: src/emc/usr_intf/pncconf/pncconf.glade:11511 -#: src/emc/usr_intf/pncconf/pncconf.glade:16716 -#: src/emc/usr_intf/pncconf/pncconf.glade:19323 -#: src/emc/usr_intf/pncconf/pncconf.glade:22398 -#: src/emc/usr_intf/pncconf/pncconf.glade:24194 -#: src/emc/usr_intf/pncconf/pncconf.glade:25990 -msgid "17:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9884 +#: src/emc/usr_intf/pncconf/pncconf.glade:12757 +#: src/emc/usr_intf/pncconf/pncconf.glade:17911 +#: src/emc/usr_intf/pncconf/pncconf.glade:20103 +#: src/emc/usr_intf/pncconf/pncconf.glade:21664 +#: src/emc/usr_intf/pncconf/pncconf.glade:23460 +#: src/emc/usr_intf/pncconf/pncconf.glade:25256 +msgid "43:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11497 -#: src/emc/usr_intf/pncconf/pncconf.glade:16702 -#: src/emc/usr_intf/pncconf/pncconf.glade:19309 -#: src/emc/usr_intf/pncconf/pncconf.glade:22412 -#: src/emc/usr_intf/pncconf/pncconf.glade:24208 -#: src/emc/usr_intf/pncconf/pncconf.glade:26004 -msgid "15:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9900 +#: src/emc/usr_intf/pncconf/pncconf.glade:12741 +#: src/emc/usr_intf/pncconf/pncconf.glade:17895 +#: src/emc/usr_intf/pncconf/pncconf.glade:20087 +#: src/emc/usr_intf/pncconf/pncconf.glade:21680 +#: src/emc/usr_intf/pncconf/pncconf.glade:23476 +#: src/emc/usr_intf/pncconf/pncconf.glade:25272 +msgid "41:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10905 -#: src/emc/usr_intf/pncconf/pncconf.glade:11483 -#: src/emc/usr_intf/pncconf/pncconf.glade:16688 -#: src/emc/usr_intf/pncconf/pncconf.glade:19295 -#: src/emc/usr_intf/pncconf/pncconf.glade:22426 -#: src/emc/usr_intf/pncconf/pncconf.glade:24222 -#: src/emc/usr_intf/pncconf/pncconf.glade:26018 -msgid "13:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9916 +#: src/emc/usr_intf/pncconf/pncconf.glade:12725 +#: src/emc/usr_intf/pncconf/pncconf.glade:17879 +#: src/emc/usr_intf/pncconf/pncconf.glade:20071 +#: src/emc/usr_intf/pncconf/pncconf.glade:21696 +#: src/emc/usr_intf/pncconf/pncconf.glade:23492 +#: src/emc/usr_intf/pncconf/pncconf.glade:25288 +msgid "39:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10919 -#: src/emc/usr_intf/pncconf/pncconf.glade:11469 -#: src/emc/usr_intf/pncconf/pncconf.glade:16674 -#: src/emc/usr_intf/pncconf/pncconf.glade:19281 -#: src/emc/usr_intf/pncconf/pncconf.glade:22440 -#: src/emc/usr_intf/pncconf/pncconf.glade:24236 -#: src/emc/usr_intf/pncconf/pncconf.glade:26032 -msgid "11:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9932 +#: src/emc/usr_intf/pncconf/pncconf.glade:12709 +#: src/emc/usr_intf/pncconf/pncconf.glade:17863 +#: src/emc/usr_intf/pncconf/pncconf.glade:20055 +#: src/emc/usr_intf/pncconf/pncconf.glade:21712 +#: src/emc/usr_intf/pncconf/pncconf.glade:23508 +#: src/emc/usr_intf/pncconf/pncconf.glade:25304 +msgid "37:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10933 -#: src/emc/usr_intf/pncconf/pncconf.glade:11455 -#: src/emc/usr_intf/pncconf/pncconf.glade:16660 -#: src/emc/usr_intf/pncconf/pncconf.glade:19267 -#: src/emc/usr_intf/pncconf/pncconf.glade:22454 -#: src/emc/usr_intf/pncconf/pncconf.glade:24250 -#: src/emc/usr_intf/pncconf/pncconf.glade:26046 -msgid " 9:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9948 +#: src/emc/usr_intf/pncconf/pncconf.glade:12693 +#: src/emc/usr_intf/pncconf/pncconf.glade:17847 +#: src/emc/usr_intf/pncconf/pncconf.glade:20039 +#: src/emc/usr_intf/pncconf/pncconf.glade:21728 +#: src/emc/usr_intf/pncconf/pncconf.glade:23524 +#: src/emc/usr_intf/pncconf/pncconf.glade:25320 +msgid "35:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10947 -#: src/emc/usr_intf/pncconf/pncconf.glade:11441 -#: src/emc/usr_intf/pncconf/pncconf.glade:16646 -#: src/emc/usr_intf/pncconf/pncconf.glade:19253 -#: src/emc/usr_intf/pncconf/pncconf.glade:22468 -#: src/emc/usr_intf/pncconf/pncconf.glade:24264 -#: src/emc/usr_intf/pncconf/pncconf.glade:26060 -msgid " 7:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9964 +#: src/emc/usr_intf/pncconf/pncconf.glade:12677 +#: src/emc/usr_intf/pncconf/pncconf.glade:17831 +#: src/emc/usr_intf/pncconf/pncconf.glade:20023 +#: src/emc/usr_intf/pncconf/pncconf.glade:21744 +#: src/emc/usr_intf/pncconf/pncconf.glade:23540 +#: src/emc/usr_intf/pncconf/pncconf.glade:25336 +msgid "33:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10961 -#: src/emc/usr_intf/pncconf/pncconf.glade:11427 -#: src/emc/usr_intf/pncconf/pncconf.glade:16632 -#: src/emc/usr_intf/pncconf/pncconf.glade:19239 -#: src/emc/usr_intf/pncconf/pncconf.glade:22482 -#: src/emc/usr_intf/pncconf/pncconf.glade:24278 -#: src/emc/usr_intf/pncconf/pncconf.glade:26074 -msgid " 5:" +#: src/emc/usr_intf/pncconf/pncconf.glade:10337 +#: src/emc/usr_intf/pncconf/pncconf.glade:12304 +#: src/emc/usr_intf/pncconf/pncconf.glade:17458 +#: src/emc/usr_intf/pncconf/pncconf.glade:19762 +#: src/emc/usr_intf/pncconf/pncconf.glade:22005 +#: src/emc/usr_intf/pncconf/pncconf.glade:23801 +#: src/emc/usr_intf/pncconf/pncconf.glade:25597 +msgid "25:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10975 -#: src/emc/usr_intf/pncconf/pncconf.glade:11413 -#: src/emc/usr_intf/pncconf/pncconf.glade:16618 -#: src/emc/usr_intf/pncconf/pncconf.glade:19225 -#: src/emc/usr_intf/pncconf/pncconf.glade:22496 -#: src/emc/usr_intf/pncconf/pncconf.glade:24292 -#: src/emc/usr_intf/pncconf/pncconf.glade:26088 -msgid " 3:" +#: src/emc/usr_intf/pncconf/pncconf.glade:10353 +#: src/emc/usr_intf/pncconf/pncconf.glade:12288 +#: src/emc/usr_intf/pncconf/pncconf.glade:17442 +#: src/emc/usr_intf/pncconf/pncconf.glade:19746 +#: src/emc/usr_intf/pncconf/pncconf.glade:22021 +#: src/emc/usr_intf/pncconf/pncconf.glade:23817 +#: src/emc/usr_intf/pncconf/pncconf.glade:25613 +msgid "27:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10989 -#: src/emc/usr_intf/pncconf/pncconf.glade:11399 -#: src/emc/usr_intf/pncconf/pncconf.glade:16604 -#: src/emc/usr_intf/pncconf/pncconf.glade:19211 -#: src/emc/usr_intf/pncconf/pncconf.glade:22510 -#: src/emc/usr_intf/pncconf/pncconf.glade:24306 -#: src/emc/usr_intf/pncconf/pncconf.glade:26102 -msgid " 1:" +#: src/emc/usr_intf/pncconf/pncconf.glade:10369 +#: src/emc/usr_intf/pncconf/pncconf.glade:12272 +#: src/emc/usr_intf/pncconf/pncconf.glade:17426 +#: src/emc/usr_intf/pncconf/pncconf.glade:19730 +#: src/emc/usr_intf/pncconf/pncconf.glade:22037 +#: src/emc/usr_intf/pncconf/pncconf.glade:23833 +#: src/emc/usr_intf/pncconf/pncconf.glade:25629 +msgid "29:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:11002 -#: src/emc/usr_intf/pncconf/pncconf.glade:11065 -#: src/emc/usr_intf/pncconf/pncconf.glade:11324 -#: src/emc/usr_intf/pncconf/pncconf.glade:11386 -#: src/emc/usr_intf/pncconf/pncconf.glade:13937 -#: src/emc/usr_intf/pncconf/pncconf.glade:13999 -#: src/emc/usr_intf/pncconf/pncconf.glade:16529 -#: src/emc/usr_intf/pncconf/pncconf.glade:16591 -#: src/emc/usr_intf/pncconf/pncconf.glade:19142 -#: src/emc/usr_intf/pncconf/pncconf.glade:19198 -#: src/emc/usr_intf/pncconf/pncconf.glade:22523 -#: src/emc/usr_intf/pncconf/pncconf.glade:22580 -#: src/emc/usr_intf/pncconf/pncconf.glade:24319 -#: src/emc/usr_intf/pncconf/pncconf.glade:24376 -#: src/emc/usr_intf/pncconf/pncconf.glade:26115 -#: src/emc/usr_intf/pncconf/pncconf.glade:26172 -#: src/emc/usr_intf/pncconf/pncconf.glade:28686 -#: src/emc/usr_intf/pncconf/pncconf.glade:28749 -#: src/emc/usr_intf/pncconf/pncconf.glade:28905 -#: src/emc/usr_intf/pncconf/pncconf.glade:28967 -#: src/emc/usr_intf/pncconf/pncconf.glade:33067 -#: src/emc/usr_intf/pncconf/pncconf.glade:33263 -#: src/emc/usr_intf/pncconf/pncconf.glade:33325 -#: src/emc/usr_intf/pncconf/pncconf.glade:38183 -#: src/emc/usr_intf/pncconf/pncconf.glade:38246 -#: src/emc/usr_intf/pncconf/pncconf.glade:38520 -#: src/emc/usr_intf/pncconf/pncconf.glade:42530 -#: src/emc/usr_intf/pncconf/pncconf.glade:42593 -#: src/emc/usr_intf/pncconf/pncconf.glade:42749 -#: src/emc/usr_intf/pncconf/pncconf.glade:42811 -#: src/emc/usr_intf/pncconf/pncconf.glade:46924 -#: src/emc/usr_intf/pncconf/pncconf.glade:49453 -#: src/emc/usr_intf/pncconf/pncconf.glade:49516 -#: src/emc/usr_intf/pncconf/pncconf.glade:49672 -#: src/emc/usr_intf/pncconf/pncconf.glade:49734 -#: src/emc/usr_intf/pncconf/pncconf.glade:53847 +#: src/emc/usr_intf/pncconf/pncconf.glade:10385 +#: src/emc/usr_intf/pncconf/pncconf.glade:12256 +#: src/emc/usr_intf/pncconf/pncconf.glade:17410 +#: src/emc/usr_intf/pncconf/pncconf.glade:19714 +#: src/emc/usr_intf/pncconf/pncconf.glade:22053 +#: src/emc/usr_intf/pncconf/pncconf.glade:23849 +#: src/emc/usr_intf/pncconf/pncconf.glade:25645 +msgid "31:" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:10677 +#: src/emc/usr_intf/pncconf/pncconf.glade:10689 +#: src/emc/usr_intf/pncconf/pncconf.glade:11955 +#: src/emc/usr_intf/pncconf/pncconf.glade:11967 +#: src/emc/usr_intf/pncconf/pncconf.glade:14464 +#: src/emc/usr_intf/pncconf/pncconf.glade:14476 +#: src/emc/usr_intf/pncconf/pncconf.glade:17161 +#: src/emc/usr_intf/pncconf/pncconf.glade:17173 +#: src/emc/usr_intf/pncconf/pncconf.glade:19567 +#: src/emc/usr_intf/pncconf/pncconf.glade:19579 +#: src/emc/usr_intf/pncconf/pncconf.glade:22190 +#: src/emc/usr_intf/pncconf/pncconf.glade:22202 +#: src/emc/usr_intf/pncconf/pncconf.glade:23986 +#: src/emc/usr_intf/pncconf/pncconf.glade:23998 +#: src/emc/usr_intf/pncconf/pncconf.glade:25782 +#: src/emc/usr_intf/pncconf/pncconf.glade:25794 +#: src/emc/usr_intf/pncconf/pncconf.glade:28287 +#: src/emc/usr_intf/pncconf/pncconf.glade:28299 +#: src/emc/usr_intf/pncconf/pncconf.glade:29415 +#: src/emc/usr_intf/pncconf/pncconf.glade:29427 +#: src/emc/usr_intf/pncconf/pncconf.glade:32869 +#: src/emc/usr_intf/pncconf/pncconf.glade:33760 +#: src/emc/usr_intf/pncconf/pncconf.glade:33772 +#: src/emc/usr_intf/pncconf/pncconf.glade:37771 +#: src/emc/usr_intf/pncconf/pncconf.glade:37783 +#: src/emc/usr_intf/pncconf/pncconf.glade:38777 +#: src/emc/usr_intf/pncconf/pncconf.glade:38789 +#: src/emc/usr_intf/pncconf/pncconf.glade:42131 +#: src/emc/usr_intf/pncconf/pncconf.glade:42143 +#: src/emc/usr_intf/pncconf/pncconf.glade:43259 +#: src/emc/usr_intf/pncconf/pncconf.glade:43271 +#: src/emc/usr_intf/pncconf/pncconf.glade:46702 +#: src/emc/usr_intf/pncconf/pncconf.glade:46714 +#: src/emc/usr_intf/pncconf/pncconf.glade:49054 +#: src/emc/usr_intf/pncconf/pncconf.glade:49066 +#: src/emc/usr_intf/pncconf/pncconf.glade:50182 +#: src/emc/usr_intf/pncconf/pncconf.glade:50194 +#: src/emc/usr_intf/pncconf/pncconf.glade:53625 +#: src/emc/usr_intf/pncconf/pncconf.glade:53637 +#: src/emc/usr_intf/pncconf/pncconf.glade:55977 +#: src/emc/usr_intf/pncconf/pncconf.glade:55989 +#: src/emc/usr_intf/pncconf/pncconf.glade:57105 +#: src/emc/usr_intf/pncconf/pncconf.glade:57117 +#: src/emc/usr_intf/pncconf/pncconf.glade:60548 +#: src/emc/usr_intf/pncconf/pncconf.glade:60560 +msgid "function" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:10703 +#: src/emc/usr_intf/pncconf/pncconf.glade:11940 +#: src/emc/usr_intf/pncconf/pncconf.glade:14449 +#: src/emc/usr_intf/pncconf/pncconf.glade:17146 +#: src/emc/usr_intf/pncconf/pncconf.glade:19553 +#: src/emc/usr_intf/pncconf/pncconf.glade:22217 +#: src/emc/usr_intf/pncconf/pncconf.glade:24013 +#: src/emc/usr_intf/pncconf/pncconf.glade:25809 #, fuzzy -msgid "Inv" -msgstr "Inverseaza" +msgid "Launch test panel" +msgstr "Rezultat test _latenta:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:11192 +#: src/emc/usr_intf/pncconf/pncconf.glade:11204 +#: src/emc/usr_intf/pncconf/pncconf.glade:11440 +#: src/emc/usr_intf/pncconf/pncconf.glade:11454 +#: src/emc/usr_intf/pncconf/pncconf.glade:13949 +#: src/emc/usr_intf/pncconf/pncconf.glade:13963 +#: src/emc/usr_intf/pncconf/pncconf.glade:16645 +#: src/emc/usr_intf/pncconf/pncconf.glade:16659 +#: src/emc/usr_intf/pncconf/pncconf.glade:19190 +#: src/emc/usr_intf/pncconf/pncconf.glade:19204 +#: src/emc/usr_intf/pncconf/pncconf.glade:22567 +#: src/emc/usr_intf/pncconf/pncconf.glade:22579 +#: src/emc/usr_intf/pncconf/pncconf.glade:24363 +#: src/emc/usr_intf/pncconf/pncconf.glade:24375 +#: src/emc/usr_intf/pncconf/pncconf.glade:26159 +#: src/emc/usr_intf/pncconf/pncconf.glade:26171 +#: src/emc/usr_intf/pncconf/pncconf.glade:28772 +#: src/emc/usr_intf/pncconf/pncconf.glade:28784 +#: src/emc/usr_intf/pncconf/pncconf.glade:28917 +#: src/emc/usr_intf/pncconf/pncconf.glade:28931 +#: src/emc/usr_intf/pncconf/pncconf.glade:33102 +#: src/emc/usr_intf/pncconf/pncconf.glade:33275 +#: src/emc/usr_intf/pncconf/pncconf.glade:33289 +#: src/emc/usr_intf/pncconf/pncconf.glade:38269 +#: src/emc/usr_intf/pncconf/pncconf.glade:38281 +#: src/emc/usr_intf/pncconf/pncconf.glade:38532 +#: src/emc/usr_intf/pncconf/pncconf.glade:38546 +#: src/emc/usr_intf/pncconf/pncconf.glade:42616 +#: src/emc/usr_intf/pncconf/pncconf.glade:42628 +#: src/emc/usr_intf/pncconf/pncconf.glade:42761 +#: src/emc/usr_intf/pncconf/pncconf.glade:42775 +#: src/emc/usr_intf/pncconf/pncconf.glade:46947 +#: src/emc/usr_intf/pncconf/pncconf.glade:46959 +#: src/emc/usr_intf/pncconf/pncconf.glade:49539 +#: src/emc/usr_intf/pncconf/pncconf.glade:49551 +#: src/emc/usr_intf/pncconf/pncconf.glade:49684 +#: src/emc/usr_intf/pncconf/pncconf.glade:49698 +#: src/emc/usr_intf/pncconf/pncconf.glade:53870 +#: src/emc/usr_intf/pncconf/pncconf.glade:53882 +#: src/emc/usr_intf/pncconf/pncconf.glade:56462 +#: src/emc/usr_intf/pncconf/pncconf.glade:56474 +#: src/emc/usr_intf/pncconf/pncconf.glade:56607 +#: src/emc/usr_intf/pncconf/pncconf.glade:56621 +#: src/emc/usr_intf/pncconf/pncconf.glade:60793 +#: src/emc/usr_intf/pncconf/pncconf.glade:60805 +msgid "Num" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:11198 +#: src/emc/usr_intf/pncconf/pncconf.glade:11222 msgid "" " I/O\n" "Connector 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:13811 +#: src/emc/usr_intf/pncconf/pncconf.glade:13835 msgid "" " I/O\n" " Connector 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:14012 -#: src/emc/usr_intf/pncconf/pncconf.glade:14039 -#: src/emc/usr_intf/pncconf/pncconf.glade:14053 -#: src/emc/usr_intf/pncconf/pncconf.glade:28632 -#: src/emc/usr_intf/pncconf/pncconf.glade:28646 -#: src/emc/usr_intf/pncconf/pncconf.glade:28673 -#: src/emc/usr_intf/pncconf/pncconf.glade:28980 -#: src/emc/usr_intf/pncconf/pncconf.glade:29007 -#: src/emc/usr_intf/pncconf/pncconf.glade:29021 -#: src/emc/usr_intf/pncconf/pncconf.glade:32951 -#: src/emc/usr_intf/pncconf/pncconf.glade:32965 -#: src/emc/usr_intf/pncconf/pncconf.glade:32992 -#: src/emc/usr_intf/pncconf/pncconf.glade:33338 -#: src/emc/usr_intf/pncconf/pncconf.glade:33365 -#: src/emc/usr_intf/pncconf/pncconf.glade:33379 -#: src/emc/usr_intf/pncconf/pncconf.glade:38129 -#: src/emc/usr_intf/pncconf/pncconf.glade:38143 -#: src/emc/usr_intf/pncconf/pncconf.glade:38170 -#: src/emc/usr_intf/pncconf/pncconf.glade:38594 -#: src/emc/usr_intf/pncconf/pncconf.glade:38621 -#: src/emc/usr_intf/pncconf/pncconf.glade:38635 -#: src/emc/usr_intf/pncconf/pncconf.glade:42476 -#: src/emc/usr_intf/pncconf/pncconf.glade:42490 -#: src/emc/usr_intf/pncconf/pncconf.glade:42517 -#: src/emc/usr_intf/pncconf/pncconf.glade:42824 -#: src/emc/usr_intf/pncconf/pncconf.glade:42851 -#: src/emc/usr_intf/pncconf/pncconf.glade:42865 -#: src/emc/usr_intf/pncconf/pncconf.glade:46808 -#: src/emc/usr_intf/pncconf/pncconf.glade:46822 -#: src/emc/usr_intf/pncconf/pncconf.glade:46849 -#: src/emc/usr_intf/pncconf/pncconf.glade:49399 -#: src/emc/usr_intf/pncconf/pncconf.glade:49413 -#: src/emc/usr_intf/pncconf/pncconf.glade:49440 -#: src/emc/usr_intf/pncconf/pncconf.glade:49747 -#: src/emc/usr_intf/pncconf/pncconf.glade:49774 -#: src/emc/usr_intf/pncconf/pncconf.glade:49788 -#: src/emc/usr_intf/pncconf/pncconf.glade:53731 -#: src/emc/usr_intf/pncconf/pncconf.glade:53745 -#: src/emc/usr_intf/pncconf/pncconf.glade:53772 +#: src/emc/usr_intf/pncconf/pncconf.glade:16281 +#: src/emc/usr_intf/pncconf/pncconf.glade:16295 +#: src/emc/usr_intf/pncconf/pncconf.glade:16322 +#: src/emc/usr_intf/pncconf/pncconf.glade:26441 +#: src/emc/usr_intf/pncconf/pncconf.glade:26468 +#: src/emc/usr_intf/pncconf/pncconf.glade:26482 +#: src/emc/usr_intf/pncconf/pncconf.glade:31232 +#: src/emc/usr_intf/pncconf/pncconf.glade:31246 +#: src/emc/usr_intf/pncconf/pncconf.glade:31273 +#: src/emc/usr_intf/pncconf/pncconf.glade:31708 +#: src/emc/usr_intf/pncconf/pncconf.glade:31735 +#: src/emc/usr_intf/pncconf/pncconf.glade:31749 +#: src/emc/usr_intf/pncconf/pncconf.glade:35577 +#: src/emc/usr_intf/pncconf/pncconf.glade:35591 +#: src/emc/usr_intf/pncconf/pncconf.glade:35618 +#: src/emc/usr_intf/pncconf/pncconf.glade:35925 +#: src/emc/usr_intf/pncconf/pncconf.glade:35952 +#: src/emc/usr_intf/pncconf/pncconf.glade:35966 +#: src/emc/usr_intf/pncconf/pncconf.glade:39909 +#: src/emc/usr_intf/pncconf/pncconf.glade:39923 +#: src/emc/usr_intf/pncconf/pncconf.glade:39950 +#: src/emc/usr_intf/pncconf/pncconf.glade:40285 +#: src/emc/usr_intf/pncconf/pncconf.glade:40312 +#: src/emc/usr_intf/pncconf/pncconf.glade:40326 +#: src/emc/usr_intf/pncconf/pncconf.glade:45076 +#: src/emc/usr_intf/pncconf/pncconf.glade:45090 +#: src/emc/usr_intf/pncconf/pncconf.glade:45117 +#: src/emc/usr_intf/pncconf/pncconf.glade:45541 +#: src/emc/usr_intf/pncconf/pncconf.glade:45568 +#: src/emc/usr_intf/pncconf/pncconf.glade:45582 +#: src/emc/usr_intf/pncconf/pncconf.glade:47208 +#: src/emc/usr_intf/pncconf/pncconf.glade:47235 +#: src/emc/usr_intf/pncconf/pncconf.glade:47249 +#: src/emc/usr_intf/pncconf/pncconf.glade:51999 +#: src/emc/usr_intf/pncconf/pncconf.glade:52013 +#: src/emc/usr_intf/pncconf/pncconf.glade:52040 +#: src/emc/usr_intf/pncconf/pncconf.glade:52464 +#: src/emc/usr_intf/pncconf/pncconf.glade:52491 +#: src/emc/usr_intf/pncconf/pncconf.glade:52505 +#: src/emc/usr_intf/pncconf/pncconf.glade:54131 +#: src/emc/usr_intf/pncconf/pncconf.glade:54158 +#: src/emc/usr_intf/pncconf/pncconf.glade:54172 +#: src/emc/usr_intf/pncconf/pncconf.glade:58922 +#: src/emc/usr_intf/pncconf/pncconf.glade:58936 +#: src/emc/usr_intf/pncconf/pncconf.glade:58963 +#: src/emc/usr_intf/pncconf/pncconf.glade:59387 +#: src/emc/usr_intf/pncconf/pncconf.glade:59414 +#: src/emc/usr_intf/pncconf/pncconf.glade:59428 msgid " " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:16403 +#: src/emc/usr_intf/pncconf/pncconf.glade:16427 msgid "" " I/O\n" " Connector 4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:19017 +#: src/emc/usr_intf/pncconf/pncconf.glade:19041 msgid "" " I/O\n" " Connector 5" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:20813 +#: src/emc/usr_intf/pncconf/pncconf.glade:20837 msgid "" " I/O\n" "Connector 6" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:22609 +#: src/emc/usr_intf/pncconf/pncconf.glade:22633 msgid "" " I/O\n" "Connector 7" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:24405 +#: src/emc/usr_intf/pncconf/pncconf.glade:24429 msgid "" " I/O\n" "Connector 8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:26201 +#: src/emc/usr_intf/pncconf/pncconf.glade:26225 msgid "" " I/O\n" " Connector 9" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:28775 -#: src/emc/usr_intf/pncconf/pncconf.glade:35696 -#: src/emc/usr_intf/pncconf/pncconf.glade:42619 -#: src/emc/usr_intf/pncconf/pncconf.glade:49542 -msgid "page 1" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:31354 -#: src/emc/usr_intf/pncconf/pncconf.glade:38275 -#: src/emc/usr_intf/pncconf/pncconf.glade:45198 -#: src/emc/usr_intf/pncconf/pncconf.glade:52121 +#: src/emc/usr_intf/pncconf/pncconf.glade:31378 +#: src/emc/usr_intf/pncconf/pncconf.glade:38299 +#: src/emc/usr_intf/pncconf/pncconf.glade:45222 +#: src/emc/usr_intf/pncconf/pncconf.glade:52145 +#: src/emc/usr_intf/pncconf/pncconf.glade:59068 msgid "page 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:33107 -#: src/emc/usr_intf/pncconf/pncconf.glade:40030 -#: src/emc/usr_intf/pncconf/pncconf.glade:46953 -#: src/emc/usr_intf/pncconf/pncconf.glade:53876 +#: src/emc/usr_intf/pncconf/pncconf.glade:33131 +#: src/emc/usr_intf/pncconf/pncconf.glade:40054 +#: src/emc/usr_intf/pncconf/pncconf.glade:46977 +#: src/emc/usr_intf/pncconf/pncconf.glade:53900 +#: src/emc/usr_intf/pncconf/pncconf.glade:60823 msgid "page 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:33123 +#: src/emc/usr_intf/pncconf/pncconf.glade:33147 msgid "Smart Serial 0" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:40046 +#: src/emc/usr_intf/pncconf/pncconf.glade:40070 msgid "Smart Serial 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:46969 +#: src/emc/usr_intf/pncconf/pncconf.glade:46993 msgid "Smart Serial 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53892 +#: src/emc/usr_intf/pncconf/pncconf.glade:53916 msgid "Smart Serial 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53914 +#: src/emc/usr_intf/pncconf/pncconf.glade:60839 +msgid "Smart Serial 4" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:60861 #, fuzzy msgid "First Parallel Port Setup" msgstr "Setare port paralel" -#: src/emc/usr_intf/pncconf/pncconf.glade:53998 -#, fuzzy -msgid "Outputs (PC to Machine):" -msgstr "Iesiri (PC catre freza)" +#: src/emc/usr_intf/pncconf/pncconf.glade:60946 +msgid "Launch Test Panel" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:54552 +#: src/emc/usr_intf/pncconf/pncconf.glade:62374 #, fuzzy msgid "Inputs (Machine to PC):" msgstr "Intrari (Freza catre PC):" -#: src/emc/usr_intf/pncconf/pncconf.glade:55977 -msgid "Launch Test Panel" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:62929 +#, fuzzy +msgid "Outputs (PC to Machine):" +msgstr "Iesiri (PC catre freza)" -#: src/emc/usr_intf/pncconf/pncconf.glade:56003 +#: src/emc/usr_intf/pncconf/pncconf.glade:62950 #, fuzzy msgid "X Axis Motor/Encoder Configuration" msgstr "Configuratie Axa X" -#: src/emc/usr_intf/pncconf/pncconf.glade:56091 -msgid "D" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63005 +#, fuzzy +msgid "Max Output" +msgstr "Nefolosit" -#: src/emc/usr_intf/pncconf/pncconf.glade:56104 +#: src/emc/usr_intf/pncconf/pncconf.glade:63070 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "I" -msgstr "Io" +msgid "FF2" +msgstr "OFF" -#: src/emc/usr_intf/pncconf/pncconf.glade:56117 -msgid "P" +#: src/emc/usr_intf/pncconf/pncconf.glade:63083 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "FF1" +msgstr "OFF" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63096 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "FF0" +msgstr "OFF" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63143 +msgid "Deadband" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56128 -#: src/emc/usr_intf/pncconf/pncconf.glade:60917 -#: src/emc/usr_intf/pncconf/pncconf.glade:62202 -#: src/emc/usr_intf/pncconf/pncconf.glade:63103 -#: src/emc/usr_intf/pncconf/pncconf.glade:64388 -#: src/emc/usr_intf/pncconf/pncconf.glade:65265 +#: src/emc/usr_intf/pncconf/pncconf.glade:63156 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Bias" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56141 -msgid "Deadband" +#: src/emc/usr_intf/pncconf/pncconf.glade:63169 +msgid "P" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56188 -#: src/emc/usr_intf/pncconf/pncconf.glade:61128 -#: src/emc/usr_intf/pncconf/pncconf.glade:61991 -#: src/emc/usr_intf/pncconf/pncconf.glade:63314 -#: src/emc/usr_intf/pncconf/pncconf.glade:64177 -#: src/emc/usr_intf/pncconf/pncconf.glade:65470 -#, fuzzy -msgid "FF0" -msgstr "OFF" - -#: src/emc/usr_intf/pncconf/pncconf.glade:56201 -#: src/emc/usr_intf/pncconf/pncconf.glade:61118 -#: src/emc/usr_intf/pncconf/pncconf.glade:62001 -#: src/emc/usr_intf/pncconf/pncconf.glade:63304 -#: src/emc/usr_intf/pncconf/pncconf.glade:64187 -#: src/emc/usr_intf/pncconf/pncconf.glade:65460 +#: src/emc/usr_intf/pncconf/pncconf.glade:63180 #, fuzzy -msgid "FF1" -msgstr "OFF" +msgid "I" +msgstr "Io" -#: src/emc/usr_intf/pncconf/pncconf.glade:56214 -#: src/emc/usr_intf/pncconf/pncconf.glade:61108 -#: src/emc/usr_intf/pncconf/pncconf.glade:62011 -#: src/emc/usr_intf/pncconf/pncconf.glade:63294 -#: src/emc/usr_intf/pncconf/pncconf.glade:64197 -#: src/emc/usr_intf/pncconf/pncconf.glade:65450 -#, fuzzy -msgid "FF2" -msgstr "OFF" +#: src/emc/usr_intf/pncconf/pncconf.glade:63193 +msgid "D" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56282 +#: src/emc/usr_intf/pncconf/pncconf.glade:63258 #, fuzzy msgid "Servo Info" msgstr "Informatii scula" -#: src/emc/usr_intf/pncconf/pncconf.glade:56362 -#, fuzzy -msgid "Spindle Max Output:" -msgstr "Freza oprita" +#: src/emc/usr_intf/pncconf/pncconf.glade:63337 +msgid "3pwm Scale:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56412 -#, fuzzy -msgid "Spindle Max limit:" -msgstr "Freza mai repede" +#: src/emc/usr_intf/pncconf/pncconf.glade:63348 +msgid "3pwm Deadtime:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56426 +#: src/emc/usr_intf/pncconf/pncconf.glade:63361 #, fuzzy -msgid "Spindle Min Limit:" -msgstr "Freza oprita" +msgid "Quad Pulses / Rev:" +msgstr "mm / tura" -#: src/emc/usr_intf/pncconf/pncconf.glade:56456 +#: src/emc/usr_intf/pncconf/pncconf.glade:63438 msgid "" "Open Loop\n" " Test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56557 +#: src/emc/usr_intf/pncconf/pncconf.glade:63462 #, fuzzy -msgid "Quad Pulses / Rev:" -msgstr "mm / tura" - -#: src/emc/usr_intf/pncconf/pncconf.glade:56572 -msgid "Dac Max Output:" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:56586 -msgid "Dac Output Scale:" -msgstr "" +msgid "Analog Min Limit:" +msgstr "Freza oprita" -#: src/emc/usr_intf/pncconf/pncconf.glade:56599 -msgid "3pwm Deadtime:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63476 +#, fuzzy +msgid "Analog Max limit:" +msgstr "Freza mai repede" -#: src/emc/usr_intf/pncconf/pncconf.glade:56612 -msgid "3pwm Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63490 +msgid "Analog Max Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56626 +#: src/emc/usr_intf/pncconf/pncconf.glade:63554 #, fuzzy msgid "Output Info" msgstr "Informatii Ofset" -#: src/emc/usr_intf/pncconf/pncconf.glade:56691 +#: src/emc/usr_intf/pncconf/pncconf.glade:63603 #, fuzzy -msgid "Driver Type:" -msgstr "Tip D_river:" +msgid "Step On-Time" +msgstr "_Timp pas:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56735 +#: src/emc/usr_intf/pncconf/pncconf.glade:63616 #, fuzzy -msgid "Direction Setup" -msgstr "Initializare imprimare" +msgid "Step Space" +msgstr "Spatiu simplu" -#: src/emc/usr_intf/pncconf/pncconf.glade:56748 +#: src/emc/usr_intf/pncconf/pncconf.glade:63659 #, fuzzy msgid "Direction Hold" msgstr "_Hold directie:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56791 +#: src/emc/usr_intf/pncconf/pncconf.glade:63672 #, fuzzy -msgid "Step Space" -msgstr "Spatiu simplu" +msgid "Direction Setup" +msgstr "Initializare imprimare" -#: src/emc/usr_intf/pncconf/pncconf.glade:56804 +#: src/emc/usr_intf/pncconf/pncconf.glade:63715 #, fuzzy -msgid "Step On-Time" -msgstr "_Timp pas:" +msgid "Driver Type:" +msgstr "Tip D_river:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56820 +#: src/emc/usr_intf/pncconf/pncconf.glade:63748 msgid "Stepper Info" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56871 +#: src/emc/usr_intf/pncconf/pncconf.glade:63800 msgid "No feedback" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56881 +#: src/emc/usr_intf/pncconf/pncconf.glade:63810 msgid "Absolute Feedback" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56895 +#: src/emc/usr_intf/pncconf/pncconf.glade:63824 #, fuzzy msgid "Incremental Feedback" msgstr "Increment" -#: src/emc/usr_intf/pncconf/pncconf.glade:56909 +#: src/emc/usr_intf/pncconf/pncconf.glade:63838 #, fuzzy msgid "Incremental Encoder" msgstr "Inverseaza imagine" -#: src/emc/usr_intf/pncconf/pncconf.glade:56921 +#: src/emc/usr_intf/pncconf/pncconf.glade:63850 msgid "Hall sensors" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56933 +#: src/emc/usr_intf/pncconf/pncconf.glade:63862 msgid "Fanuc Red Cap " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56945 +#: src/emc/usr_intf/pncconf/pncconf.glade:63874 #, fuzzy msgid "Use encoder Index" msgstr "Nefolosit" -#: src/emc/usr_intf/pncconf/pncconf.glade:56976 +#: src/emc/usr_intf/pncconf/pncconf.glade:63905 msgid "Input Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57000 +#: src/emc/usr_intf/pncconf/pncconf.glade:63929 msgid "Digital instead of PWM outputs" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57009 +#: src/emc/usr_intf/pncconf/pncconf.glade:63938 msgid "6 outputs instead of 3 " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57021 +#: src/emc/usr_intf/pncconf/pncconf.glade:63950 msgid "Force Trapezoid Mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57033 +#: src/emc/usr_intf/pncconf/pncconf.glade:63962 msgid "Emulate feedback " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57045 +#: src/emc/usr_intf/pncconf/pncconf.glade:63974 msgid "Emulated Hall sensors" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57058 +#: src/emc/usr_intf/pncconf/pncconf.glade:63987 msgid "Emulated Fanuc Red Cap" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57085 +#: src/emc/usr_intf/pncconf/pncconf.glade:64014 #, fuzzy msgid "8i20 Max Current" msgstr "Decupare" -#: src/emc/usr_intf/pncconf/pncconf.glade:57119 +#: src/emc/usr_intf/pncconf/pncconf.glade:64048 msgid "Output Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57153 -msgid "Poles" +#: src/emc/usr_intf/pncconf/pncconf.glade:64103 +msgid "alignment current" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57163 +#: src/emc/usr_intf/pncconf/pncconf.glade:64113 +msgid "lead angle" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64213 #, fuzzy -msgid "Encoder-offset" -msgstr "End" +msgid "Reverse" +msgstr "Freza sens invers" -#: src/emc/usr_intf/pncconf/pncconf.glade:57173 -msgid "Drive-offset" +#: src/emc/usr_intf/pncconf/pncconf.glade:64223 +msgid "Input-pattern" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57183 +#: src/emc/usr_intf/pncconf/pncconf.glade:64233 msgid "output-pattern" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57193 -msgid "Input-pattern" +#: src/emc/usr_intf/pncconf/pncconf.glade:64243 +msgid "Drive-offset" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57203 +#: src/emc/usr_intf/pncconf/pncconf.glade:64253 #, fuzzy -msgid "Reverse" -msgstr "Freza sens invers" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57303 -msgid "lead angle" -msgstr "" +msgid "Encoder-offset" +msgstr "End" -#: src/emc/usr_intf/pncconf/pncconf.glade:57313 -msgid "alignment current" +#: src/emc/usr_intf/pncconf/pncconf.glade:64263 +msgid "Poles" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57354 +#: src/emc/usr_intf/pncconf/pncconf.glade:64283 #, fuzzy msgid "Configuration" msgstr "Configurare HAL" -#: src/emc/usr_intf/pncconf/pncconf.glade:57389 -msgid "Use Brushless Motor Control" +#: src/emc/usr_intf/pncconf/pncconf.glade:64318 +msgid "Use BLDC Motor Commutation Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57425 +#: src/emc/usr_intf/pncconf/pncconf.glade:64354 msgid "Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57446 +#: src/emc/usr_intf/pncconf/pncconf.glade:64375 #, fuzzy msgid "% " msgstr "%" -#: src/emc/usr_intf/pncconf/pncconf.glade:57466 +#: src/emc/usr_intf/pncconf/pncconf.glade:64394 +msgid "Range:" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64419 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "RPM" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64439 #, fuzzy msgid "Use Spindle-At-Speed" msgstr "Freza oprita" -#: src/emc/usr_intf/pncconf/pncconf.glade:57491 +#: src/emc/usr_intf/pncconf/pncconf.glade:64464 #, fuzzy msgid "Filter gain:" msgstr "Filtru esuat" -#: src/emc/usr_intf/pncconf/pncconf.glade:57526 +#: src/emc/usr_intf/pncconf/pncconf.glade:64499 msgid "Spindle Display Filter Settings" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57577 -#, fuzzy -msgid "Single Input Encoder" -msgstr "Inverseaza imagine" +#: src/emc/usr_intf/pncconf/pncconf.glade:64565 +msgid "Rapid Speed Following Error:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57631 -msgid "Invert Encoder Direction " +#: src/emc/usr_intf/pncconf/pncconf.glade:64577 +msgid "Feed Speed Following Error:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57646 +#: src/emc/usr_intf/pncconf/pncconf.glade:64591 #, fuzzy msgid "Invert Motor Direction" msgstr "Directie scanare" -#: src/emc/usr_intf/pncconf/pncconf.glade:57661 -msgid "Feed Speed Following Error:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64606 +msgid "Invert Encoder Direction " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57675 -msgid "Rapid Speed Following Error:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64661 +#, fuzzy +msgid "Single Input Encoder" +msgstr "Inverseaza imagine" -#: src/emc/usr_intf/pncconf/pncconf.glade:57715 -msgid "" -"Calculate\n" -"Scale" +#: src/emc/usr_intf/pncconf/pncconf.glade:64776 +msgid "encoder Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57744 +#: src/emc/usr_intf/pncconf/pncconf.glade:64801 #, fuzzy msgid "Stepper Scale:" msgstr "Spatiu simplu" -#: src/emc/usr_intf/pncconf/pncconf.glade:57771 -msgid "encoder Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64831 +msgid "" +"Calculate\n" +"Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57928 +#: src/emc/usr_intf/pncconf/pncconf.glade:64901 msgid "Test / Tune Axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58235 -msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " +#: src/emc/usr_intf/pncconf/pncconf.glade:64943 +#, fuzzy +msgid "X Axis Configuration" +msgstr "Configurare HAL" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65155 +msgid "" +"NO\n" +"YES" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65171 +msgid "Use Encoder Index For Home:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58251 +#: src/emc/usr_intf/pncconf/pncconf.glade:65212 #, fuzzy -msgid "Home Search Velocity:" +msgid "Home Final Velocity:" msgstr "Viteza cautare poz 0" -#: src/emc/usr_intf/pncconf/pncconf.glade:58266 -msgid "Home Switch location (Offset from machine zero Origin):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65222 +msgid "" +"Same\n" +"Opposite" msgstr "" +"La fel\n" +"Opus" -#: src/emc/usr_intf/pncconf/pncconf.glade:58310 -msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65238 +#, fuzzy +msgid "Home Latch Direction:" +msgstr "Directie latch" -#: src/emc/usr_intf/pncconf/pncconf.glade:58326 -msgid "Home Position location (offset from machine zero Origin):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65251 +msgid "" +"Towards Negative limit\n" +"Towards Positive limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58355 -msgid "Use Backlash Compensation:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65267 +#, fuzzy +msgid "Home Search Direction:" +msgstr "Directie latch" -#: src/emc/usr_intf/pncconf/pncconf.glade:58369 -msgid "Use Compensation File:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65309 +#, fuzzy +msgid "Home latch Velocity:" +msgstr "Viteza cautare poz 0" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65334 +msgid "filename:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58412 +#: src/emc/usr_intf/pncconf/pncconf.glade:65347 msgid "" "Type 1\n" "Type 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58427 -msgid "filename:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65392 +msgid "Use Compensation File:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58455 -#, fuzzy -msgid "Home latch Velocity:" -msgstr "Viteza cautare poz 0" +#: src/emc/usr_intf/pncconf/pncconf.glade:65406 +msgid "Use Backlash Compensation:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58494 -#, fuzzy -msgid "Home Search Direction:" -msgstr "Directie latch" +#: src/emc/usr_intf/pncconf/pncconf.glade:65433 +msgid "Home Position location (offset from machine zero Origin):" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58507 -msgid "" -"Towards Negative limit\n" -"Towards Positive limit" +#: src/emc/usr_intf/pncconf/pncconf.glade:65449 +msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58523 -#, fuzzy -msgid "Home Latch Direction:" -msgstr "Directie latch" +#: src/emc/usr_intf/pncconf/pncconf.glade:65493 +msgid "Home Switch location (Offset from machine zero Origin):" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58552 +#: src/emc/usr_intf/pncconf/pncconf.glade:65509 #, fuzzy -msgid "Home Final Velocity:" +msgid "Home Search Velocity:" msgstr "Viteza cautare poz 0" -#: src/emc/usr_intf/pncconf/pncconf.glade:58591 -msgid "Use Encoder Index For Home:" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:58603 -msgid "" -"NO\n" -"YES" +#: src/emc/usr_intf/pncconf/pncconf.glade:65524 +msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58628 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Advanced Options" msgstr "Configuratii model" -#: src/emc/usr_intf/pncconf/pncconf.glade:58712 -msgid "Cmd 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 15" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58718 -msgid "Cmd 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 14" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58728 -msgid "Cmd 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 13" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58738 -msgid "Cmd 4" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 12" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58748 -msgid "Cmd 5" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 11" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58874 -msgid "Cmd 6" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 10" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58884 -msgid "Cmd 7" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 9" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58896 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Cmd 8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58908 -msgid "Cmd 9" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 7" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58920 -msgid "Cmd 10" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 6" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58990 -msgid "Cmd 11" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 5" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59000 -msgid "Cmd 12" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59012 -msgid "Cmd 13" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59024 -msgid "Cmd 14" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59036 -msgid "Cmd 15" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59053 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Include Halui user interface component / commands" msgstr "Include interfata Halui" -#: src/emc/usr_intf/pncconf/pncconf.glade:59127 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Number of digital (bit) in pins:" msgstr "Numar de intrari digitale:" -#: src/emc/usr_intf/pncconf/pncconf.glade:59138 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Number of digital (bit) out pins:" msgstr "Numar de iesiri digitale:" -#: src/emc/usr_intf/pncconf/pncconf.glade:59308 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid " Number of Internal bit memory:" +msgstr "Numar de iesiri digitale:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of Internal word memory:" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Setup number of external pins" msgstr "Numar de intrari digitale:" -#: src/emc/usr_intf/pncconf/pncconf.glade:59360 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Z Auto Touch off program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59505 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "HAL Component Page" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59648 -msgid "lowpass" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Add HAL components with this page." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59675 -msgid "mux16" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Component" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59702 -msgid "scale" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "number of components" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59728 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "PID" msgstr "RAPID" -#: src/emc/usr_intf/pncconf/pncconf.glade:59739 -msgid "number of components" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59767 -msgid "Component" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mux16" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59794 -msgid "Add HAL components with this page." +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "lowpass" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59844 -#, fuzzy -msgid "Thread Command" -msgstr "Comanda:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Base Thread" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59854 -msgid "Thread Speed" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Servo Thread" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59906 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Load Command " msgstr "Nr. Comanda:" -#: src/emc/usr_intf/pncconf/pncconf.glade:59952 -msgid "Servo Thread" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Thread Speed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59965 -msgid "Base Thread" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Thread Command" +msgstr "Comanda:" -#: src/emc/usr_intf/pncconf/pncconf.glade:59979 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Custom Components Commands" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60031 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Machine configuration complete" +msgstr "Configuratie copiata" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "" +"All the necessary information has now been gathered. Click \"Apply\" to " +"write your configuration files to disk.\n" +"\n" +"If you are using the 5i25 card with daugther boards or are using SSerial " +"based daughter cards, the cards must be connected and/or field power " +"supplied to the 5i25 \n" +"for the HAL pins to be available. If the config is expecting the pins and " +"they are not there, linuxcnc will error.\n" +"If you experience lockups while running LinuxCNC, you will need to decrease " +"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC, first verify that you " +"entered the proper timings for your stepper drivers. If that does not fix " +"the problem, then run a more thorough latency test as described on the " +"linuxcnc.org wiki:\n" +" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" +"\n" +"If you experience the \"Unexpected Realtime Delay\" message, run a more " +"thorough latency test as described on the linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" +msgstr "" +"Toate informatiile necesare au fost adunate. Apasati \"Valideaza\" pentru a " +"salva fisierele de configuratie.\n" +"Daca PCul merge incet sau se blocheaza cu aceasta configuratie, va trebui sa " +"reduceti viteza maxima, ceea ce va rezulta intr-o valoare mai mare a " +"BASE_PERIOD.\n" +"\n" +"Daca observati pasi pierduti, prima data verificati daca timpii setati sunt " +"cei corecti.Pentru alte cauze posibile vizitati linuxcnc.org wiki:\n" +" http;//wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting\n" +"\n" +"Daca vedeti mesajul de eroare \"Unexpected Realtime Delay\" incercati un " +"latency test descris la linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" " Motor Encoder Test\n" "Warning limits switches \n" " Will not be obeyed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60067 -#: src/emc/usr_intf/pncconf/pncconf.glade:60766 -#: src/emc/usr_intf/pncconf/pncconf.glade:61859 -#: src/emc/usr_intf/pncconf/pncconf.glade:62952 -#: src/emc/usr_intf/pncconf/pncconf.glade:64045 -#: src/emc/usr_intf/pncconf/pncconf.glade:65025 -#, fuzzy -msgid "Invert Motor" -msgstr "Inverseaza" - -#: src/emc/usr_intf/pncconf/pncconf.glade:60083 -#: src/emc/usr_intf/pncconf/pncconf.glade:60782 -#: src/emc/usr_intf/pncconf/pncconf.glade:61875 -#: src/emc/usr_intf/pncconf/pncconf.glade:62968 -#: src/emc/usr_intf/pncconf/pncconf.glade:64061 -#: src/emc/usr_intf/pncconf/pncconf.glade:65040 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Invert Encoder" -msgstr "Inverseaza imagine" +msgid "Slow Dac Speed" +msgstr "Arata viteza masina" -#: src/emc/usr_intf/pncconf/pncconf.glade:60100 -msgid "Enable Amp" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Fast Dac Speed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60114 -msgid "Reset Encoder" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Dac Offset:" +msgstr "Ofset:" -#: src/emc/usr_intf/pncconf/pncconf.glade:60142 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Encoder Scale:" msgstr "End" -#: src/emc/usr_intf/pncconf/pncconf.glade:60153 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Reset Encoder" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Enable Amp" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Invert Encoder" +msgstr "Inverseaza imagine" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Dac Offset:" -msgstr "Ofset:" +msgid "Invert Motor" +msgstr "Inverseaza" -#: src/emc/usr_intf/pncconf/pncconf.glade:60243 -msgid "Fast Dac Speed" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"±\n" +"+\n" +"-\n" msgstr "" +"±\n" +"+\n" +"-\n" -#: src/emc/usr_intf/pncconf/pncconf.glade:60258 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Slow Dac Speed" -msgstr "Arata viteza masina" +msgid "Seconds" +msgstr "Secundar" -#: src/emc/usr_intf/pncconf/pncconf.glade:60407 -#: src/emc/usr_intf/pncconf/pncconf.glade:61503 -#: src/emc/usr_intf/pncconf/pncconf.glade:62596 -#: src/emc/usr_intf/pncconf/pncconf.glade:63689 -#: src/emc/usr_intf/pncconf/pncconf.glade:64788 -msgid "mm/minute" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60441 -#: src/emc/usr_intf/pncconf/pncconf.glade:61536 -#: src/emc/usr_intf/pncconf/pncconf.glade:62629 -#: src/emc/usr_intf/pncconf/pncconf.glade:63722 -#: src/emc/usr_intf/pncconf/pncconf.glade:64821 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "mm/minute^2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60550 -#: src/emc/usr_intf/pncconf/pncconf.glade:61644 -#: src/emc/usr_intf/pncconf/pncconf.glade:62737 -#: src/emc/usr_intf/pncconf/pncconf.glade:64930 -msgid "Enable" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm/minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60600 -#: src/emc/usr_intf/pncconf/pncconf.glade:61693 -#: src/emc/usr_intf/pncconf/pncconf.glade:62786 -#: src/emc/usr_intf/pncconf/pncconf.glade:63879 -#: src/emc/usr_intf/pncconf/pncconf.glade:65139 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Seconds" -msgstr "Secundar" - -#: src/emc/usr_intf/pncconf/pncconf.glade:60907 -#: src/emc/usr_intf/pncconf/pncconf.glade:62212 -#: src/emc/usr_intf/pncconf/pncconf.glade:63093 -#: src/emc/usr_intf/pncconf/pncconf.glade:64398 -#: src/emc/usr_intf/pncconf/pncconf.glade:65255 -msgid "DeadBand" -msgstr "" +msgid "Current" +msgstr "Decupare" -#: src/emc/usr_intf/pncconf/pncconf.glade:61089 -#: src/emc/usr_intf/pncconf/pncconf.glade:61380 -#: src/emc/usr_intf/pncconf/pncconf.glade:62030 -#: src/emc/usr_intf/pncconf/pncconf.glade:62401 -#: src/emc/usr_intf/pncconf/pncconf.glade:63275 -#: src/emc/usr_intf/pncconf/pncconf.glade:63562 -#: src/emc/usr_intf/pncconf/pncconf.glade:64216 -#: src/emc/usr_intf/pncconf/pncconf.glade:64587 -#: src/emc/usr_intf/pncconf/pncconf.glade:65431 -#: src/emc/usr_intf/pncconf/pncconf.glade:65718 -msgid "Original" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "P:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61138 -#: src/emc/usr_intf/pncconf/pncconf.glade:61981 -#: src/emc/usr_intf/pncconf/pncconf.glade:63324 -#: src/emc/usr_intf/pncconf/pncconf.glade:64167 -#: src/emc/usr_intf/pncconf/pncconf.glade:65480 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "D:" +msgid "I:" msgstr "MDI:" -#: src/emc/usr_intf/pncconf/pncconf.glade:61148 -#: src/emc/usr_intf/pncconf/pncconf.glade:61971 -#: src/emc/usr_intf/pncconf/pncconf.glade:63334 -#: src/emc/usr_intf/pncconf/pncconf.glade:64157 -#: src/emc/usr_intf/pncconf/pncconf.glade:65490 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "I:" +msgid "D:" msgstr "MDI:" -#: src/emc/usr_intf/pncconf/pncconf.glade:61158 -#: src/emc/usr_intf/pncconf/pncconf.glade:61961 -#: src/emc/usr_intf/pncconf/pncconf.glade:63344 -#: src/emc/usr_intf/pncconf/pncconf.glade:64147 -#: src/emc/usr_intf/pncconf/pncconf.glade:65500 -msgid "P:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Original" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61168 -#: src/emc/usr_intf/pncconf/pncconf.glade:61392 -#: src/emc/usr_intf/pncconf/pncconf.glade:61951 -#: src/emc/usr_intf/pncconf/pncconf.glade:62389 -#: src/emc/usr_intf/pncconf/pncconf.glade:63354 -#: src/emc/usr_intf/pncconf/pncconf.glade:63574 -#: src/emc/usr_intf/pncconf/pncconf.glade:64137 -#: src/emc/usr_intf/pncconf/pncconf.glade:64575 -#: src/emc/usr_intf/pncconf/pncconf.glade:65510 -#: src/emc/usr_intf/pncconf/pncconf.glade:65730 -#, fuzzy -msgid "Current" -msgstr "Decupare" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "DeadBand" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61185 -#: src/emc/usr_intf/pncconf/pncconf.glade:62278 -#: src/emc/usr_intf/pncconf/pncconf.glade:63371 -#: src/emc/usr_intf/pncconf/pncconf.glade:64464 -#: src/emc/usr_intf/pncconf/pncconf.glade:65527 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "PID Tuning" msgstr "Salveaza modificari INI" -#: src/emc/usr_intf/pncconf/pncconf.glade:61370 -#: src/emc/usr_intf/pncconf/pncconf.glade:62413 -#: src/emc/usr_intf/pncconf/pncconf.glade:63552 -#: src/emc/usr_intf/pncconf/pncconf.glade:64599 -#: src/emc/usr_intf/pncconf/pncconf.glade:65708 -#, fuzzy -msgid "Direction Setup:" -msgstr "Initializare imprimare" - -#: src/emc/usr_intf/pncconf/pncconf.glade:61404 -#: src/emc/usr_intf/pncconf/pncconf.glade:62379 -#: src/emc/usr_intf/pncconf/pncconf.glade:63586 -#: src/emc/usr_intf/pncconf/pncconf.glade:64565 -#: src/emc/usr_intf/pncconf/pncconf.glade:65742 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Direction Hold:" -msgstr "_Hold directie:" +msgid "Step Time:" +msgstr "_Timp pas:" -#: src/emc/usr_intf/pncconf/pncconf.glade:61414 -#: src/emc/usr_intf/pncconf/pncconf.glade:62369 -#: src/emc/usr_intf/pncconf/pncconf.glade:63596 -#: src/emc/usr_intf/pncconf/pncconf.glade:64555 -#: src/emc/usr_intf/pncconf/pncconf.glade:65752 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Step Space:" msgstr "Spatiu simplu" -#: src/emc/usr_intf/pncconf/pncconf.glade:61424 -#: src/emc/usr_intf/pncconf/pncconf.glade:62359 -#: src/emc/usr_intf/pncconf/pncconf.glade:63606 -#: src/emc/usr_intf/pncconf/pncconf.glade:64545 -#: src/emc/usr_intf/pncconf/pncconf.glade:65762 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Step Time:" -msgstr "_Timp pas:" +msgid "Direction Hold:" +msgstr "_Hold directie:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Direction Setup:" +msgstr "Initializare imprimare" -#: src/emc/usr_intf/pncconf/pncconf.glade:61439 -#: src/emc/usr_intf/pncconf/pncconf.glade:62528 -#: src/emc/usr_intf/pncconf/pncconf.glade:63621 -#: src/emc/usr_intf/pncconf/pncconf.glade:64714 -#: src/emc/usr_intf/pncconf/pncconf.glade:65777 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Step Timing" msgstr "_Timp pas:" -#: src/emc/usr_intf/pncconf/pncconf.glade:63830 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65798 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "spindle" msgstr "Freza oprita" -#: src/emc/usr_intf/pncconf/pncconf.glade:65881 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Help Page" msgstr "Testeaza" -#: src/emc/usr_intf/pncconf/pncconf.glade:65911 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" "X axis:\n" "Total Travel = 10\n" @@ -12208,11 +14749,11 @@ msgid "" "possible" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65951 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Mill" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65970 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" "Total Travel = 4 + 6 = 10\n" "Z Home Offset = Origin to Home Switch distance = 10\n" @@ -12225,1710 +14766,2742 @@ msgid "" "possible." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65994 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Lathe" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66010 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Diagram" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66043 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Output" msgstr "Nefolosit" -#: src/emc/usr_intf/pncconf/pncconf.glade:66123 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"\t\t\t\tPNCconf - Point aNd Click CONFigurator\n" +"PNCconf is a configuration program for Linuxcnc.\n" +"It configures machines using Mesa I/O cards.\n" +"It configures servo,stepper or closed loop stepper machines.\n" +"It supports some of Mesa's sserial cards.\n" +"It will forever be a work in progress as Linuxcnc changes.\n" +"\n" +"Many thanks To:\n" +"Jeff Eppler - PNCconf is based on stepconf - Jeff's creation. Jeff also has " +"helped with techincal difficulties.\n" +"Big John T - John drew the original machine illustrations. Testing and " +"suggestions.\n" +"Peter Wallace - Technical questions on Mesa's I/O cards. Supplied sample " +"equipment to test with.\n" +"Andy Pugh - suggestions, questions answered and many pin name changes :) \n" +"Dave Armstrong - testing and suggestions expecially with resolvers.\n" +"Everyone who gave a bug report ! I cannot test everything thoughly enough so " +"reports help.\n" +"\n" +"Beta 1 version" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "TPI " +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Motor steps per revolution:" -msgstr "Nr. pasi _motor per tura:" +msgid "Pulley teeth (motor:Leadscrew):" +msgstr "Rata reductie (Motor:surub):" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Worm turn ratio (Input:Outputl)" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66173 -#: src/emc/usr_intf/pncconf/pncconf.glade:66459 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Microstep Multiplication Factor:" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Leadscrew Metric Pitch" msgstr "Pas surub:" -#: src/emc/usr_intf/pncconf/pncconf.glade:66186 -msgid "Microstep Multiplication Factor:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Motor steps per revolution:" +msgstr "Nr. pasi _motor per tura:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Motor Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66199 -#: src/emc/usr_intf/pncconf/pncconf.glade:66481 -msgid "Worm turn ratio (Input:Outputl)" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "TPI" +msgstr "RAPID" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "X 4 = Pulses/Rev" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66212 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Pulley teeth (motor:Leadscrew):" +msgid "Encoder lines per revolution:" +msgstr "_Cicluri per tura:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Pulley teeth (encoder:Leadscrew):" msgstr "Rata reductie (Motor:surub):" -#: src/emc/usr_intf/pncconf/pncconf.glade:66356 -msgid "TPI " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66372 -msgid "Step Motor Scale" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " " +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "encoder pulses per unit:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66472 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Pulley teeth (encoder:Leadscrew):" -msgstr "Rata reductie (Motor:surub):" +msgid "motor steps per unit:" +msgstr "Nr. pasi _motor per tura:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Calculated Scale" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / encoder pulse" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66537 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Encoder lines per revolution:" -msgstr "_Cicluri per tura:" +msgid "Resolution:" +msgstr "Pozitie:" -#: src/emc/usr_intf/pncconf/pncconf.glade:66547 -msgid "X 4 = Pulses/Rev" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Distance to acheave max speed:" +msgstr "Distanta pentru accelerare la viteza maxima:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "sec" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Khz" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Calculated Axis SCALE:" +msgstr "Viteza axa:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Motor RPM at max speed:" +msgstr "Rata pulsuri la viteza maxima:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "xmaxrpm" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Motion Data" +msgstr "Pozitie 0" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "gtk-cancel" +msgstr "Anulare" + +#: src/emc/usr_intf/gscreen/gscreen.py:349 +#, python-format +msgid "adding import dir %s" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:355 +#, python-format +msgid "module '%s' imported OK" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:452 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Using CUSTOM glade file from %s ****" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:457 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Using SKIN glade file from %s ****" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:460 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: using STOCK glade file from: %s ****" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:466 +#, python-format +msgid "**** Gscreen GLADE ERROR: With main screen xml file: %s" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:471 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Screen 2 -Using CUSTOM glade file from %s ****" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:477 +#, python-format +msgid "**** Gscreen GLADE ERROR: With screen 2's xml file: %s" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:479 +msgid "" +"\n" +"**** GSCREEN INFO: No Screen 2 glade file present" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:519 +msgid "No UNITS entry found in [TRAJ] or [AXIS_0] of INI file" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:532 +msgid "" +"*** Gscreen ERROR: Asking for a HAL component using a name that already " +"exists." +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:585 +msgid "No default jog increments entry found in [DISPLAY] of INI file" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:598 +msgid "No default angular jog increments entry found in [DISPLAY] of INI file" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:607 +#, python-format +msgid "" +"No DEFAULT_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:618 +#, python-format +msgid "" +"No MAX_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:625 +msgid "No MAX_VELOCITY found in [TRAJ] of the INI file" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:638 +#, python-format +msgid "" +"No DEFAULT_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:649 +#, python-format +msgid "" +"No MAX_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:657 +msgid "No MAX_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:663 +msgid "No MIN_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:669 +msgid "No MAX_FEED_OVERRIDE entry found in [DISPLAY] of INI file" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:674 +msgid "This screen will be orientated for Lathe options" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:727 +msgid "CYCLE_TIME in [DISPLAY] of INI file is missing: defaulting to 100ms" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:730 +msgid "CYCLE_TIME in [DISPLAY] of INI file is too small: defaulting to 100ms" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:732 +#, python-format +msgid "timeout %d" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1001 +msgid "" +"**** WARNING GSCREEN: could not understand the window geometry info in " +"hidden preference file" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1089 +msgid "Control powered up and initialized" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1264 +msgid "Cycle start pressed in AUTO mode" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1267 +msgid "Cycle start pressed in MDI mode" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1290 +#, python-format +msgid "Please change to tool # %s, then click OK." +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1291 +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +#: src/emc/usr_intf/gscreen/gscreen.py:1789 +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2849 +msgid "INFO:" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +msgid "Can't start spindle manually while MDI busy" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +msgid "can't start spindle manually in Auto mode" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +msgid "No direction selected for spindle" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1331 +#: src/emc/usr_intf/gscreen/gscreen.py:1333 +#, fuzzy +msgid "Spindle Speed Preset Entry" +msgstr "Seteaza depasire viteza" + +#: src/emc/usr_intf/gscreen/gscreen.py:1362 +#: src/emc/usr_intf/gscreen/gscreen.py:1367 +#, fuzzy +msgid "Manual Tool Index Entry" +msgstr "AXIS schimbare manuala a sculei" + +#: src/emc/usr_intf/gscreen/gscreen.py:1489 +msgid "Entry dialog" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +#, fuzzy +msgid "Classicladder realtime component not detected" +msgstr "Optiuni Configurare Avansata" + +#: src/emc/usr_intf/gscreen/gscreen.py:1617 +msgid "ladder not available - is the realtime component loaded?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66651 +#: src/emc/usr_intf/gscreen/gscreen.py:1691 #, fuzzy -msgid "TPI" -msgstr "RAPID" +msgid "Override Entry" +msgstr "depaseste limite" -#: src/emc/usr_intf/pncconf/pncconf.glade:66667 -msgid "Encoder Scale" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:1719 +#, fuzzy +msgid "Machine powered on" +msgstr "Masina pornita" -#: src/emc/usr_intf/pncconf/pncconf.glade:66711 +#: src/emc/usr_intf/gscreen/gscreen.py:1724 #, fuzzy -msgid "motor steps per unit:" -msgstr "Nr. pasi _motor per tura:" +msgid "Machine Estopped!" +msgstr "Pozitie Masina" -#: src/emc/usr_intf/pncconf/pncconf.glade:66721 -msgid "encoder pulses per unit:" +#: src/emc/usr_intf/gscreen/gscreen.py:1727 +msgid "Calculator" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66756 -msgid " " +#: src/emc/usr_intf/gscreen/gscreen.py:1857 +#, python-format +msgid "Axes %s are homed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66770 -msgid "Calculated Scale" +#: src/emc/usr_intf/gscreen/gscreen.py:1864 +msgid "All the axes have been homed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66848 -msgid "xmaxrpm" +#: src/emc/usr_intf/gscreen/gscreen.py:1874 +#, python-format +msgid "There are unhomed axes: %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66864 -msgid "RPM" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:1879 +#, fuzzy, python-format +msgid "Program loaded: %s" +msgstr "Fisier program este %s" -#: src/emc/usr_intf/pncconf/pncconf.glade:66877 +#: src/emc/usr_intf/gscreen/gscreen.py:1977 #, fuzzy -msgid "Motor RPM at max speed:" -msgstr "Rata pulsuri la viteza maxima:" +msgid "Manual Spindle Control" +msgstr "Freza mai incet" -#: src/emc/usr_intf/pncconf/pncconf.glade:66921 -#, fuzzy -msgid "Calculated Axis SCALE:" -msgstr "Viteza axa:" +#: src/emc/usr_intf/gscreen/gscreen.py:2034 +msgid "Keyboard" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66934 -msgid "Khz" +#: src/emc/usr_intf/gscreen/gscreen.py:2067 +msgid "Error with launching 'Onboard' on-screen keyboard program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66949 -msgid "sec" +#: src/emc/usr_intf/gscreen/gscreen.py:2215 +#, python-format +msgid "**** GSCREEN INFO: Overriding internal signal call to %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67049 -#, fuzzy -msgid "Distance to acheave max speed:" -msgstr "Distanta pentru accelerare la viteza maxima:" +#: src/emc/usr_intf/gscreen/gscreen.py:2643 +msgid " Zero Origin" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67077 +#: src/emc/usr_intf/gscreen/gscreen.py:2644 #, fuzzy -msgid "Resolution:" -msgstr "Pozitie:" +msgid "Offset Origin" +msgstr "Informatii Ofset" -#: src/emc/usr_intf/pncconf/pncconf.glade:67105 -msgid "mm / encoder pulse" +#: src/emc/usr_intf/gscreen/gscreen.py:2659 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing text or type) " +"in INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67123 -#, fuzzy -msgid "Motion Data" -msgstr "Pozitie 0" +#: src/emc/usr_intf/gscreen/gscreen.py:2661 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing pinname) in " +"INI File [DISPLAY] section" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67151 -#, fuzzy -msgid "gtk-cancel" -msgstr "Anulare" +#: src/emc/usr_intf/gscreen/gscreen.py:2663 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing boldtext) in " +"INI File [DISPLAY] section" +msgstr "" -#: src/emc/task/emctaskmain.cc:467 src/emc/task/emctaskmain.cc:500 -#, fuzzy, c-format -msgid "%s exceeds +X limit" -msgstr "Program depaseste limite masina" +#: src/emc/usr_intf/gscreen/gscreen.py:2667 +#, python-format +msgid "" +"**** Gscreen ERROR: invalid message type (%s)in INI File [DISPLAY] section" +msgstr "" -#: src/emc/task/emctaskmain.cc:472 src/emc/task/emctaskmain.cc:505 -#, fuzzy, c-format -msgid "%s exceeds +Y limit" -msgstr "Program depaseste limite masina" +#: src/emc/usr_intf/gscreen/gscreen.py:2699 +msgid "Dialog error - Is the dialog handler missing from the handler file?" +msgstr "" -#: src/emc/task/emctaskmain.cc:477 src/emc/task/emctaskmain.cc:510 -#, fuzzy, c-format -msgid "%s exceeds +Z limit" -msgstr "Program depaseste limite masina" +#: src/emc/usr_intf/gscreen/gscreen.py:2701 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3540 +#, fuzzy +msgid "Manual Toolchange" +msgstr "AXIS schimbare manuala a sculei" -#: src/emc/task/emctaskmain.cc:482 src/emc/task/emctaskmain.cc:515 -#, fuzzy, c-format -msgid "%s exceeds -X limit" -msgstr "Program depaseste limite masina" +#: src/emc/usr_intf/gscreen/gscreen.py:2703 +#: src/emc/usr_intf/gmoccapy/dialogs.py:94 +#: src/emc/usr_intf/gmoccapy/dialogs.py:107 +#: src/emc/usr_intf/gmoccapy/dialogs.py:119 +msgid "Operator Message" +msgstr "" -#: src/emc/task/emctaskmain.cc:487 src/emc/task/emctaskmain.cc:520 -#, fuzzy, c-format -msgid "%s exceeds -Y limit" -msgstr "Program depaseste limite masina" +#: src/emc/usr_intf/gscreen/gscreen.py:2737 +#: src/emc/usr_intf/gscreen/gscreen.py:2741 +#: src/emc/usr_intf/gmoccapy/dialogs.py:155 +#: src/emc/usr_intf/gmoccapy/dialogs.py:159 +#, fuzzy +msgid "Restart Entry" +msgstr "Restart" -#: src/emc/task/emctaskmain.cc:492 src/emc/task/emctaskmain.cc:525 -#, fuzzy, c-format -msgid "%s exceeds -Z limit" -msgstr "Program depaseste limite masina" +#: src/emc/usr_intf/gscreen/gscreen.py:2752 +#: src/emc/usr_intf/gmoccapy/dialogs.py:173 +msgid "Enter" +msgstr "" -#: src/emc/task/emctaskmain.cc:853 -#, c-format -msgid "" -"command (%s) cannot be executed until the machine is out of E-stop and " -"turned on" +#: src/emc/usr_intf/gscreen/gscreen.py:2774 +#, python-format +msgid "Ready to Restart program from line %d" msgstr "" -#: src/emc/task/emctaskmain.cc:973 -#, c-format -msgid "can't do that (%s) in manual mode" +#: src/emc/usr_intf/gscreen/gscreen.py:2807 +#, fuzzy +msgid "Invalid embeded tab configuration" +msgstr "Configurare HAL" + +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +msgid "Can't jog multiple axis" msgstr "" -#: src/emc/task/emctaskmain.cc:1072 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter idle" +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +msgid "No axis selected to jog" msgstr "" -#: src/emc/task/emctaskmain.cc:1132 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter reading" +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +msgid "No axis selected to move" msgstr "" -#: src/emc/task/emctaskmain.cc:1216 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter paused" +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +msgid "Can't home multiple axis - select HOME ALL instead" msgstr "" -#: src/emc/task/emctaskmain.cc:1278 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter waiting" +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +msgid "No axis selected to home" msgstr "" -#: src/emc/task/emctaskmain.cc:1370 -#, c-format -msgid "can't do that (%s) in MDI mode" +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +msgid "Can't unhome multiple axis" msgstr "" -#: src/emc/task/emctaskmain.cc:2015 -msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +msgid "No axis selected to unhome" msgstr "" -#: src/emc/task/emctaskmain.cc:2084 -msgid "Can't issue MDI command when not homed" +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +msgid "No axis selected for origin zeroing" msgstr "" -#: src/emc/task/emctaskmain.cc:2089 -msgid "Must be in MDI mode to issue MDI command" +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +msgid "No axis selected for origin touch-off" msgstr "" -#: src/emc/task/emctaskmain.cc:2151 -msgid "Can't run a program when not homed" +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +msgid "Can't tool touch-off multiple axes" msgstr "" -#: src/emc/rs274ngc/interp_arc.cc:108 src/emc/rs274ngc/rs274ngc_return.hh:160 -msgid "Zero radius arc" +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +msgid "No axis selected for tool touch-off" msgstr "" -#: src/emc/rs274ngc/interp_arc.cc:112 src/emc/rs274ngc/interp_arc.cc:279 -#, c-format -msgid "" -"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " -"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " -"rel_err=%.4f%%" +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#: src/emc/usr_intf/gscreen/gscreen.py:3375 +#, fuzzy +msgid "Error Message" +msgstr "Eroare salvare fisier" + +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#, python-format +msgid "Tool editor error - is the %s editor available?" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:90 -msgid "G4 not allowed with G2 or G3 because they both use P" +#: src/emc/usr_intf/gscreen/gscreen.py:3377 +#: src/emc/usr_intf/gscreen/gscreen.py:3379 +#, fuzzy +msgid "Message" +msgstr "Mesaj AXIS" + +#: src/emc/usr_intf/gscreen/gscreen.py:3409 +#, python-format +msgid "%d RPM" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:48 +#: src/emc/usr_intf/gscreen/gscreen.glade:59 +#: src/emc/usr_intf/gscreen/gscreen.glade:135 +#: src/emc/usr_intf/gscreen/gscreen.glade:176 +#: src/emc/usr_intf/gscreen/gscreen.glade:187 +#: src/emc/usr_intf/gscreen/gscreen.glade:264 +#: src/emc/usr_intf/gscreen/gscreen.glade:306 +#: src/emc/usr_intf/gscreen/gscreen.glade:317 +#: src/emc/usr_intf/gscreen/gscreen.glade:393 +#: src/emc/usr_intf/gscreen/gscreen.glade:434 +#: src/emc/usr_intf/gscreen/gscreen.glade:445 +#: src/emc/usr_intf/gscreen/gscreen.glade:521 +#: src/emc/usr_intf/gscreen/gscreen.glade:562 +#: src/emc/usr_intf/gscreen/gscreen.glade:573 +#: src/emc/usr_intf/gscreen/gscreen.glade:649 +#: src/emc/usr_intf/gscreen/gscreen.glade:690 +#: src/emc/usr_intf/gscreen/gscreen.glade:701 +#: src/emc/usr_intf/gscreen/gscreen.glade:777 +#: src/emc/usr_intf/gscreen/gscreen.glade:818 +#: src/emc/usr_intf/gscreen/gscreen.glade:829 +#: src/emc/usr_intf/gscreen/gscreen.glade:905 +#: src/emc/usr_intf/gscreen/gscreen.glade:946 +#: src/emc/usr_intf/gscreen/gscreen.glade:957 +#: src/emc/usr_intf/gscreen/gscreen.glade:1033 +#: src/emc/usr_intf/gscreen/gscreen.glade:1074 +#: src/emc/usr_intf/gscreen/gscreen.glade:1085 +#: src/emc/usr_intf/gscreen/gscreen.glade:1161 +msgid "0000.0000" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:73 +#: src/emc/usr_intf/gscreen/gscreen.glade:201 +#: src/emc/usr_intf/gscreen/gscreen.glade:331 +#: src/emc/usr_intf/gscreen/gscreen.glade:459 +#: src/emc/usr_intf/gscreen/gscreen.glade:587 +#: src/emc/usr_intf/gscreen/gscreen.glade:715 +#: src/emc/usr_intf/gscreen/gscreen.glade:843 +#: src/emc/usr_intf/gscreen/gscreen.glade:971 +#: src/emc/usr_intf/gscreen/gscreen.glade:1099 +msgid "REL" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:99 +#: src/emc/usr_intf/gscreen/gscreen.glade:227 +#: src/emc/usr_intf/gscreen/gscreen.glade:357 +#: src/emc/usr_intf/gscreen/gscreen.glade:485 +#: src/emc/usr_intf/gscreen/gscreen.glade:613 +#: src/emc/usr_intf/gscreen/gscreen.glade:741 +#: src/emc/usr_intf/gscreen/gscreen.glade:869 +#: src/emc/usr_intf/gscreen/gscreen.glade:997 +#: src/emc/usr_intf/gscreen/gscreen.glade:1125 +msgid "ABS" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:630 +#, fuzzy +msgid "B" +msgstr "_B" + +#: src/emc/usr_intf/gscreen/gscreen.glade:758 +#, fuzzy +msgid "C" +msgstr "_C" + +#: src/emc/usr_intf/gscreen/gscreen.glade:886 +#, fuzzy +msgid "U" +msgstr "Sus" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1014 +msgid "V" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:93 -msgid "Line with G10 does not have L1, L10, L11, L2, or L20" +#: src/emc/usr_intf/gscreen/gscreen.glade:1298 +#, fuzzy +msgid "G code" +msgstr "End" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1392 +msgid "G Codes Active" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:94 -msgid "P value not an integer with G10" +#: src/emc/usr_intf/gscreen/gscreen.glade:1451 +msgid "MV:100%" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:95 -msgid "P value out of range (0-9) with G10 L2 or L20" +#: src/emc/usr_intf/gscreen/gscreen.glade:1470 +#, fuzzy +msgid " Mist" +msgstr "Vapori porniti" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1481 +#, fuzzy +msgid " Flood " +msgstr "Lichid pornit" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1533 +#, fuzzy +msgid " At Speed " +msgstr "Seteaza depasire viteza" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1546 +#, fuzzy +msgid " Jog mode" +msgstr "Mod articulatii" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1600 +msgid "10 DPM" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:96 -msgid "P value out of range with G10 L1 or G10 L10" +#: src/emc/usr_intf/gscreen/gscreen.glade:1616 +msgid "10 Ipm" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:100 -msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." +#: src/emc/usr_intf/gscreen/gscreen.glade:1690 +#, fuzzy +msgid "Status" +msgstr "Pozitie 0" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1715 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2510 +msgid "" +"Search\n" +" Text:" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:258 -msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:1766 +#, fuzzy +msgid "Mode" +msgstr "Pozitie 0" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1782 +msgid "Main Level" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:264 -msgid "E word with no G76, M66, M67 or M68 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:1823 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3678 +msgid "Themes" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:269 -msgid "H word with no G43 or G76 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:1847 +#, fuzzy +msgid "Relative Text Color" +msgstr "Pozitie relativa" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1895 +msgid "DTG Text Color" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:275 -msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:1916 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3710 +msgid "Warning Audio" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:281 -msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:1926 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3723 +msgid "Alert Audio" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:287 -msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:1947 +#, fuzzy +msgid "Grid Size" +msgstr "Dimensiune" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1986 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4119 +#, fuzzy +msgid "Starting RPM" +msgstr "Setari" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2015 +msgid "Metric\n" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:297 +#: src/emc/usr_intf/gscreen/gscreen.glade:2030 msgid "" -"L word with no G10, cutter compensation, canned cycle, digital/analog input, " -"or NURBS code" +" Display\n" +"Aux Screen" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:309 +#: src/emc/usr_intf/gscreen/gscreen.glade:2045 +#, fuzzy msgid "" -"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " -"M53 M62 M63 M64 M65 M66 or user M code to use it" -msgstr "" +"Diameter\n" +" Mode" +msgstr "Diametru:" -#: src/emc/rs274ngc/interp_check.cc:314 -msgid "P value not an integer with M19 G2 or G3" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2062 +#: src/emc/usr_intf/gscreen/gscreen.glade:3096 +#, fuzzy +msgid "" +" Show\n" +"Offsets" +msgstr "Arata restart" -#: src/emc/rs274ngc/interp_check.cc:316 -msgid "P value must be 0,1,or 2 with M19" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2079 +#, fuzzy +msgid "" +"Show\n" +"DTG" +msgstr "Arata" -#: src/emc/rs274ngc/interp_check.cc:318 -msgid "P value should be 1 or greater with G2 or G3" +#: src/emc/usr_intf/gscreen/gscreen.glade:2096 +msgid "" +" Gscreen\n" +"Fullscreen" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:326 +#: src/emc/usr_intf/gscreen/gscreen.glade:2118 msgid "" -"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " -"code that uses it" +" On M7 Use\n" +"Aux Coolant" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:336 -msgid "R value must be within 0..360 with M19" +#: src/emc/usr_intf/gscreen/gscreen.glade:2131 +msgid "" +" On M8 Use\n" +"Aux Coolant" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:138 -msgid "You must specify both X and Y coordinates for Control Points" +#: src/emc/usr_intf/gscreen/gscreen.glade:2144 +msgid "Hide Pointer" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:141 -msgid "Can specify P without X and Y only for the first control point" +#: src/emc/usr_intf/gscreen/gscreen.glade:2156 +msgid "" +" Desktop\n" +"Notification" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:144 -msgid "Must specify positive weight P for every Control Point" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2228 +#: src/emc/usr_intf/gscreen/gscreen.glade:2368 +#, fuzzy +msgid "Debug" +msgstr "Depanare..." -#: src/emc/rs274ngc/interp_convert.cc:147 -msgid "Cannot make a NURBS with 0 feedrate" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2263 +#, fuzzy +msgid "Alarm History" +msgstr "Istoric" -#: src/emc/rs274ngc/interp_convert.cc:182 -msgid "Cannot use G5.3 without G5.2 first" +#: src/emc/usr_intf/gscreen/gscreen.glade:2281 +msgid "" +" Launch\n" +"Halshow" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:183 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:2293 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6449 +#, fuzzy +msgid "Calibration" +msgstr "Calibrare..." + +#: src/emc/usr_intf/gscreen/gscreen.glade:2304 +#, fuzzy +msgid "Halmeter" +msgstr "Hal Meter" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2315 msgid "" -"You must specify a number of control points at least equal to the order L = " -"%d" +"linuxcnc\n" +" Status" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:212 -msgid "Cannot convert spline with cutter radius compensation" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2327 +#, fuzzy +msgid "Halscope" +msgstr "Hal Scope" -#: src/emc/rs274ngc/interp_convert.cc:222 -msgid "Splines must be in the XY plane" +#: src/emc/usr_intf/gscreen/gscreen.glade:2338 +msgid "Ladder" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:227 -msgid "Splines may not have motion in Z, A, B, or C" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2386 +#, fuzzy +msgid "Tooleditor" +msgstr "Editor _ladder" -#: src/emc/rs274ngc/interp_convert.cc:231 -msgid "Must specify both I and J with G5.1" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2404 +#, fuzzy +msgid "" +"Offset\n" +" Page" +msgstr "Valoare Ofset" -#: src/emc/rs274ngc/interp_convert.cc:250 -msgid "Must specify both I and J, or neither" +#: src/emc/usr_intf/gscreen/gscreen.glade:2572 +#: src/emc/usr_intf/gscreen/gscreen.glade:2749 +#: src/emc/usr_intf/gscreen/gscreen.glade:3156 +msgid "\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:261 -msgid "Must specify both P and Q with G5" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2584 +#, fuzzy +msgid "Tool Setting" +msgstr "Pozitie 0" -#: src/emc/rs274ngc/interp_convert.cc:362 +#: src/emc/usr_intf/gscreen/gscreen.glade:2648 +#, fuzzy msgid "" -"The move just after exiting cutter compensation mode must be straight, not " -"an arc" -msgstr "" +"Single\n" +" Step" +msgstr "Spatiu simplu" -#: src/emc/rs274ngc/interp_convert.cc:370 -msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2661 +#, fuzzy +msgid "" +"Run At\n" +" Line" +msgstr "Timp miscare" -#: src/emc/rs274ngc/interp_convert.cc:382 -#: src/emc/rs274ngc/interp_convert.cc:4266 -msgid "Cannot feed with zero spindle speed in feed per rev mode" +#: src/emc/usr_intf/gscreen/gscreen.glade:2673 +msgid "" +"Change \n" +" View" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:393 -#: src/emc/rs274ngc/interp_convert.cc:399 -#: src/emc/rs274ngc/interp_convert.cc:408 -#: src/emc/rs274ngc/interp_convert.cc:414 -#: src/emc/rs274ngc/interp_convert.cc:423 -#: src/emc/rs274ngc/interp_convert.cc:429 -#, c-format -msgid "%c word missing in absolute center arc" +#: src/emc/usr_intf/gscreen/gscreen.glade:2760 +#, fuzzy +msgid "Homing\n" +msgstr "Anulare poz.0" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2781 +#, fuzzy +msgid "" +"Ignore\n" +"Limits" +msgstr "Toate fisierele" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2810 +#, fuzzy +msgid "" +" Set\n" +"Override" +msgstr "Seteaza depasire viteza" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2824 +msgid "Graphics\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:649 +#: src/emc/usr_intf/gscreen/gscreen.glade:2838 +#, fuzzy +msgid "" +"Menu\n" +"Level" +msgstr "nivel debug" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2851 msgid "" -"Radius of cutter compensation entry arc is not greater than the tool radius" +" Launch\n" +"Keyboard" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:868 -#: src/emc/rs274ngc/interp_convert.cc:878 src/emc/rs274ngc/interp_queue.cc:592 +#: src/emc/usr_intf/gscreen/gscreen.glade:2868 +#, fuzzy +msgid "Select Buttons" +msgstr "Pozitie 0" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2955 +#, fuzzy msgid "" -"Arc move in concave corner cannot be reached by the tool without gouging" -msgstr "" +"Unhome \n" +" All" +msgstr "Anuleaza pozitie 0 toate axele" -#: src/emc/rs274ngc/interp_convert.cc:904 -msgid "Arc to arc motion is invalid because the arcs have the same center" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2967 +#, fuzzy +msgid "" +"Unhome\n" +" Axis" +msgstr "Anuleaza pozitie 0 axa _%s" -#: src/emc/rs274ngc/interp_convert.cc:907 +#: src/emc/usr_intf/gscreen/gscreen.glade:2979 +#: src/emc/usr_intf/gscreen/gscreen.glade:3084 +#, fuzzy msgid "" -"Arc to arc motion makes a corner the compensated tool can't fit in without " -"gouging" -msgstr "" +"Toggle\n" +"Readout" +msgstr "Lichid On/Off" -#: src/emc/rs274ngc/interp_convert.cc:1036 -#: src/emc/rs274ngc/interp_convert.cc:1037 -#: src/emc/rs274ngc/interp_convert.cc:1038 -#: src/emc/rs274ngc/interp_convert.cc:3733 -#: src/emc/rs274ngc/interp_convert.cc:3736 -#: src/emc/rs274ngc/interp_convert.cc:3739 src/emc/rs274ngc/interp_find.cc:97 -#, c-format -msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" +#: src/emc/usr_intf/gscreen/gscreen.glade:3004 +msgid "" +"Jogging\n" +" Mode" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1494 -msgid "Cannot change control mode with cutter radius compensation on" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3016 +#, fuzzy +msgid "" +"coordinate\n" +" System" +msgstr "Fereastra sistem control coordinate" -#: src/emc/rs274ngc/interp_convert.cc:1607 -msgid "Cannot change coordinate systems with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3060 +msgid "" +"Index\n" +" Tool" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1851 -#, c-format -msgid "G%d.1 with no D word" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3072 +#, fuzzy +msgid "" +"Spindle\n" +"Controls" +msgstr "Ctrl-M" -#: src/emc/rs274ngc/interp_convert.cc:1854 -#, c-format -msgid "G%d.1 with L word, but plane is not G18" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3195 +#, fuzzy +msgid "Open" +msgstr "Deschide..." -#: src/emc/rs274ngc/interp_convert.cc:1865 -#, c-format -msgid "G%d requires D word to be a whole number" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3205 +#, fuzzy +msgid "" +" Block\n" +"Delete" +msgstr "Sterge" -#: src/emc/rs274ngc/interp_convert.cc:1872 -#, c-format -msgid "G%d with lathe tool, but plane is not G18" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3217 +#, fuzzy +msgid "" +"Optional\n" +" Stop" +msgstr "Stop optional" -#: src/emc/rs274ngc/interp_convert.cc:2271 -msgid "Cannot set reference point with cutter compensation in effect" +#: src/emc/usr_intf/gscreen/gscreen.glade:3229 +msgid "" +" Full\n" +"View" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2786 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:3265 +#, fuzzy msgid "" -"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" -msgstr "" +"Next\n" +" Tab" +msgstr "Urmatoarea valoare" -#: src/emc/rs274ngc/interp_convert.cc:2787 -#, c-format -msgid "BUG: restore from level %d !?" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3285 +#, fuzzy +msgid "" +" Feed\n" +"Override" +msgstr "Depasire viteza:" -#: src/emc/rs274ngc/interp_convert.cc:2788 -#, c-format -msgid "BUG: restore to level %d !?" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3298 +#, fuzzy +msgid "" +"Spindle\n" +"Override" +msgstr "Seteaza depasire freza" -#: src/emc/rs274ngc/interp_convert.cc:2807 -#, c-format -msgid "M7x: restore_settings G20/G21 failed: '%s'" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3311 +#, fuzzy +msgid "" +" Rapid\n" +"Override" +msgstr "Seteaza depasire freza" -#: src/emc/rs274ngc/interp_convert.cc:2819 -#, c-format -msgid "M7x: restore_settings failed executing: '%s': %s" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3332 +#, fuzzy +msgid "" +" Jog\n" +"Speed" +msgstr "Seteaza viteza jog" -#: src/emc/rs274ngc/interp_convert.cc:2885 -msgid "Cannot set motion output with cutter radius compensation on" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3345 +#, fuzzy +msgid "" +" Jog\n" +"Increments" +msgstr "Increment" -#: src/emc/rs274ngc/interp_convert.cc:2886 -msgid "No valid P word with M62" +#: src/emc/usr_intf/gscreen/gscreen.glade:3361 +msgid "" +"Adjust\n" +"Rotary" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2890 -msgid "Cannot set motion digital output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3383 +msgid "" +"Change\n" +" View" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2891 -msgid "No valid P word with M63" +#: src/emc/usr_intf/gscreen/gscreen.glade:3431 +msgid "" +" Pan\n" +"Vertical" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2895 -#: src/emc/rs274ngc/interp_convert.cc:2900 -msgid "Cannot set auxiliary digital output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3444 +msgid "" +" Pan\n" +"Horizontal" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2896 -msgid "No valid P word with M64" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3457 +#, fuzzy +msgid "" +" Rotate\n" +"Horiontal" +msgstr "Pozitie 0:" -#: src/emc/rs274ngc/interp_convert.cc:2901 -msgid "No valid P word with M65" +#: src/emc/usr_intf/gscreen/gscreen.glade:3470 +msgid "" +" Rotate\n" +"Vertical" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2931 -msgid "invalid P-word with M66" +#: src/emc/usr_intf/gscreen/gscreen.glade:3491 +msgid "" +"Search\n" +" Bwd" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2946 -msgid "Cannot wait for digital input with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3503 +msgid "" +"Search\n" +" Fwd" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2958 -msgid "Cannot wait for analog input with cutter radius compensation on" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3561 +#, fuzzy +msgid "" +" Reload\n" +"Program" +msgstr "Executa program" -#: src/emc/rs274ngc/interp_convert.cc:2973 -msgid "Cannot set motion analog output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3604 +msgid "" +" Clear\n" +"status" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2974 -msgid "Invalid analog index with M67" +#: src/emc/usr_intf/gscreen/gscreen.glade:3634 +msgid "G54" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2980 -msgid "Cannot set auxiliary analog output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3650 +msgid "calc" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2981 -msgid "Invalid analog index with M68" +#: src/emc/usr_intf/gscreen/gscreen.glade:3725 +msgid "test" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3012 -msgid "Need non-negative Q-word to specify tool number with M61" +#: src/emc/usr_intf/gscreen/gscreen.glade:3728 +msgid "test2" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3087 -msgid "Q word with M19 requires a value > 0" +#: src/emc/usr_intf/gscreen/gscreen.glade:3778 +msgid "Data Entry" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3115 -msgid "Cannot restore context from invalid stack frame - missing M70/M73?" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3805 +#, fuzzy +msgid "Calculator Entry" +msgstr "Pozitie 0" -#: src/emc/rs274ngc/interp_convert.cc:3156 -#: src/emc/rs274ngc/interp_convert.cc:3173 -#: src/emc/rs274ngc/interp_convert.cc:3188 -#: src/emc/rs274ngc/interp_convert.cc:3202 -#: src/emc/rs274ngc/interp_convert.cc:3216 -msgid "Cannot enable overrides with cutter radius compensation on" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3894 +#, fuzzy +msgid "Program Restart" +msgstr "Arata restart" -#: src/emc/rs274ngc/interp_convert.cc:3163 -#: src/emc/rs274ngc/interp_convert.cc:3178 -#: src/emc/rs274ngc/interp_convert.cc:3193 -#: src/emc/rs274ngc/interp_convert.cc:3207 -#: src/emc/rs274ngc/interp_convert.cc:3221 -msgid "Cannot disable overrides with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3909 +msgid "" +"Highlighting the run-at-line with the\n" +"up / down buttons or entering the line\n" +"directly." msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3325 -#: src/emc/rs274ngc/interp_convert.cc:3326 -#: src/emc/rs274ngc/interp_convert.cc:3327 -#, c-format -msgid "Indexing axis %c can only be moved with G0" +#: src/emc/usr_intf/gscreen/gscreen.glade:3923 +msgid "" +"Line\n" +" Up" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3334 -#: src/emc/rs274ngc/interp_convert.cc:3336 -#: src/emc/rs274ngc/interp_convert.cc:3338 -#, c-format -msgid "Indexing axis %c can only be moved alone" +#: src/emc/usr_intf/gscreen/gscreen.glade:3946 +msgid "" +" Line\n" +"Down" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3433 -msgid "Cannot probe with feed per rev mode" +#: src/emc/usr_intf/gscreen/gscreen.glade:4028 +msgid "S 1000" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3481 -msgid "Cannot change retract mode with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:4098 +msgid " FWD" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3515 -msgid "G10 L1 without offsets has no effect" +#: src/emc/usr_intf/gscreen/gscreen.glade:4133 +msgid " REV" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3621 -msgid "Q number in G10 is not an integer" +#: src/emc/usr_intf/gscreen/gscreen2.glade:35 +msgid "screen 2" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3622 -msgid "Invalid tool orientation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:403 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:884 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:923 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:934 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:949 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1099 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1102 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1156 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1163 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1166 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2148 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2157 +msgid "**** GMOCCAPY INFO ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3721 -msgid "I J words not allowed with G10 L2" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:404 +msgid "**** no valid probe config in INI File ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3742 -msgid "" -"Cannot change the active coordinate system with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:405 +msgid "**** disabled tool measurement ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3750 -msgid "R not allowed in G10 L20" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:770 +msgid "**** GMOCCAPY ERROR : ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4323 -msgid "Spindle not turning in G33" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:772 +#, python-format +msgid "" +"**** gmoccapy can only handle 4 axis, ****\n" +"**** but you have given %d through your INI file ****\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4333 -msgid "Spindle not turning in G33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:774 +msgid "" +"**** gmoccapy will not start ****\n" +"\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4376 -msgid "BUG: An axis incorrectly moved along with an indexer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:786 +#, fuzzy, python-format +msgid "Home axis %s" +msgstr "Pozitie 0 axa _%s" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:885 +msgid "**** To many increments given in INI File for this screen ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4389 -msgid "BUG: trying to index incorrect axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:886 +msgid "**** Only the first 10 will be reachable through this screen ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4481 -msgid "Cannot use G76 threading cycle with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:924 +msgid "**** gmoccapy screen 2 found ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4484 -msgid "In G76, I must not be 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:929 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1055 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1177 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1225 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1844 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2190 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2200 +msgid "**** GMOCCAPY ERROR ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4486 -msgid "In G76, J must be greater than 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:930 +msgid "**** screen 2 GLADE ERROR: ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4488 -msgid "In G76, K must be greater than J" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:935 +msgid "**** No gmoccapy2.glade file present ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4631 -msgid "" -"Length of cutter compensation entry move is not greater than the tool radius" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:950 +msgid "**** Invalid embeded tab configuration ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4850 -msgid "Zero degree inside corner is invalid for cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:951 +msgid "**** No tabs will be added! ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4888 -#: src/emc/rs274ngc/interp_convert.cc:4896 -msgid "" -"Arc to straight motion makes a corner the compensated tool can't fit in " -"without gouging" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:964 +msgid "ERROR, trying to initialize the user tabs or panaels, check for typos" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4980 -msgid "Cannot change tools with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1056 +msgid "**** Did not find a toolfile file in [EMCIO] TOOL_TABLE ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:5101 -msgid "Cannot change tool offset with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1100 +msgid "**** audio available! ****" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:590 -#, c-format -msgid "" -"BUG: cutter compensation has generated an invalid arc with mismatched radii " -"r1 %f r2 %f\n" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1103 +msgid "**** no audio available! ****" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:612 -msgid "BUG: Unsupported plane in cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1104 +msgid "**** PYGST libray not installed? ****" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:622 -msgid "" -"Straight traverse in concave corner cannot be reached by the tool without " -"gouging" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1157 +msgid "**** virtual keyboard program found : " msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:650 -#, c-format -msgid "BUG: Unsupported plane [%d] in cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1164 +msgid "**** virtual keyboard program found : " msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:661 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1167 msgid "" -"Straight feed in concave corner cannot be reached by the tool without gouging" +"**** No virtual keyboard installed, we checked for and ." msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:628 -msgid "Cannot feed with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1178 +msgid "**** Error with launching virtual keyboard," msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:629 -msgid "Cannot use inverse time feed with canned cycles" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1179 +msgid "**** is onboard or matchbox-keyboard installed? ****" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:630 -msgid "Cannot use canned cycles with cutter compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1193 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1875 +msgid "interrupt running macro" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:818 -msgid "G17 canned cycle is not possible on a machine without Z axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1226 +msgid "**** Did not find a parameter file in [RS274NGC] PARAMETER_FILE ****" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1004 -msgid "G17.1 canned cycle is not possible on a machine without W axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1294 +msgid "Select the file you want to be loaded at program start" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1220 -msgid "G19 canned cycle is not possible on a machine without X axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1329 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1353 +#, python-format +msgid "**** GMOCCAPY ERROR **** /n Message type %s not suported" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1388 -msgid "G19.1 canned cycle is not possible on a machine without U axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1462 +msgid "Unknown error type and no error text given" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1613 -msgid "G18 canned cycle is not possible on a machine without Y axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1478 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1840 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1847 +msgid "Important Warning" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1780 -msgid "G18.1 canned cycle is not possible on a machine without V axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1498 +msgid "ERROR : External ESTOP is set, could not change state!" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:170 -msgid "Cannot use polar coordinates with G53" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1511 +msgid "ERROR : Could not switch the machine on, is limit switch aktivated?" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 -#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 -#: src/emc/rs274ngc/interp_find.cc:347 -msgid "Cannot specify X or Y words with polar coordinate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1730 +msgid "It is not possible to change to MDI Mode at the moment" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:272 -msgid "Must specify angle in polar coordinate if at the origin" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1754 +msgid "It is not possible to change to Auto Mode at the moment" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:338 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1838 msgid "" -"Incremental motion with polar coordinates is indeterminate when at the origin" -msgstr "" - -#: src/emc/rs274ngc/interp_find.cc:348 -msgid "G91 motion with polar coordinates is indeterminate when at the origin" -msgstr "" - -#: src/emc/rs274ngc/interp_find.cc:720 -#, c-format -msgid "Requested tool %d not found in the tool table" +"\n" +"**** No subroutine folder or program prefix is given in the ini file **** \n" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:154 -msgid "Cannot use polar coordinate on a machine lacking X or Y axes" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1839 +msgid "**** so the corresponding file could not be found ****" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:155 -msgid "Cannot use polar coordinate except in G17 plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1845 +#, python-format +msgid "" +"\n" +"**** File %s of the macro could not be found ****\n" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:156 -msgid "Cannot specify both polar coordinate and X word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1846 +#, python-format +msgid "**** we searched in subdirectory %s ****" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:157 -msgid "Cannot specify both polar coordinate and Y word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1851 +msgid "Enter value:" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:178 -#: src/emc/rs274ngc/interp_internal.cc:190 -#: src/emc/rs274ngc/interp_internal.cc:203 -msgid "Polar coordinates can only be used for motion" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1852 +#, fuzzy, python-format +msgid "Set parameter %s to:" +msgstr "Incarca fisier parametri" -#: src/emc/rs274ngc/interp_read.cc:1143 src/emc/rs274ngc/interp_read.cc:1147 -#, c-format -msgid "Bad character '\\%03o' used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1854 +msgid "conversion error" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1147 -#, c-format -msgid "Bad character '%c' used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1855 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3610 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3634 +msgid "Conversion error !" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1671 -msgid "Left bracket missing after 'while'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1856 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3299 +msgid "" +"Please enter only numerical values\n" +"Values have not been applied" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1686 -msgid "Left bracket missing after 'repeat'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2149 +#, python-brace-format +msgid "**** replaced {0} to {1} ****" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1701 -msgid "Left bracket missing after 'if'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2158 +msgid "" +"\n" +"**** found more than 9 macros, only the first 9 will be used ****" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1716 -msgid "Left bracket missing after 'elseif'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2191 +#, python-format +msgid "**** %s ****" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1919 -msgid "Cannot read current position with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2201 +#, python-format +msgid "**** No widget named: %s to sensitize ****" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1934 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2366 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1561 #, fuzzy -msgid "Expected # reading parameter" -msgstr "Extinde parametri" - -#: src/emc/rs274ngc/interp_read.cc:1936 -msgid "Expected ] reading bracketed parameter" -msgstr "" - -#: src/emc/rs274ngc/interp_read.cc:2608 -#, c-format -msgid "bad number format (conversion failed) parsing '%s'" -msgstr "" - -#: src/emc/rs274ngc/interp_read.cc:2609 -#, c-format -msgid "bad number format (trailing characters) parsing '%s'" -msgstr "" +msgid "No tool description available" +msgstr "Nu exista detalii." -#: src/emc/rs274ngc/interp_read.cc:2699 -msgid "Calculation resulted in 'not a number'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2591 +#, python-format +msgid "Halo, welcome to the test message %d" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2701 -msgid "Calculation resulted in 'infinity'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2732 +msgid "Hal Pin is low, Access denied" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2994 -#, c-format -msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2734 +msgid "wrong code entered, Access denied" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3106 -msgid "Multiple U words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2735 +msgid "Just to warn you" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3122 -msgid "Multiple V words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2810 +msgid "ERROR : No limit switch is active, ignore limits will not be set." msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3138 -msgid "Multiple W words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2850 +msgid "Classicladder real-time component not detected" msgstr "" -#: src/emc/rs274ngc/interp_o_word.cc:95 -#, c-format -msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2937 +msgid "Something went wrong, we have an unknown spindle widget" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:161 -#, fuzzy, c-format -msgid "Named parameter #<%s> not defined" -msgstr "Incarca fisier parametri" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3046 +msgid "Do you really want to delete the MDI history?\n" +msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:191 -#, fuzzy, c-format -msgid "cant open ini file '%s'" -msgstr "nu pot deschide %s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3047 +msgid "this will not delete the MDI History file, but will\n" +msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:208 -#, fuzzy, c-format -msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" -msgstr "Incarca fisier parametri" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3048 +msgid "delete the listbox entries for this session" +msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:232 -#, c-format -msgid "fetch_hal_param: hal_init(%s): %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3049 +msgid "Attention!!" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:233 -#, c-format -msgid "fetch_hal_param: hal_ready(): %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3076 +msgid "This button will show or hide the keyboard" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:370 -#, c-format -msgid "Internal error: Could not assign #<%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3196 +#, python-format +msgid "Offset %s could not be set, because off unknown axis" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:378 -#, c-format -msgid "Cannot assign to read-only parameter #<%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3197 +msgid "Wrong offset setting!" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:682 -#, c-format -msgid "BUG: lookup_named_param(%s): unhandled index=%fn" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3202 +msgid "Enter value for diameter" msgstr "" -#: src/emc/rs274ngc/rs274ngc_pre.cc:1269 src/emc/rs274ngc/rs274ngc_pre.cc:1344 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3203 #, fuzzy -msgid "Queue is not empty after tool change" -msgstr "" -"Confirmare pe ecran pentru\n" -"schimbare scula" +msgid "Set diameter to:" +msgstr "Diametru:" -#: src/emc/rs274ngc/rs274ngc_pre.cc:1648 -#, c-format -msgid "Unable to open parameter file: '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3206 +msgid "Enter value for radius" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:4 -msgid "A file is already open" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3207 +#, fuzzy +msgid "Set radius to:" +msgstr "Seteaza valoara axa:" -#: src/emc/rs274ngc/rs274ngc_return.hh:5 -msgid "All axes missing with g92" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3210 +#, fuzzy, python-format +msgid "Enter value for axis %s" +msgstr "Activeaza a patra axa" -#: src/emc/rs274ngc/rs274ngc_return.hh:6 -msgid "All axes missing with motion code" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3211 +#, fuzzy, python-format +msgid "Set axis %s to:" +msgstr "Seteaza valoara axa:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3215 +msgid "Conversion error in btn_set_value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:7 -msgid "Arc radius too small to reach end point" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3216 +msgid "Conversion error in btn_set_value!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:8 -msgid "Argument to acos out of range" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3217 +msgid "Please enter only numerical values. Values have not been applied" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:9 -msgid "Argument to asin out of range" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3232 +msgid "" +"you did not selected a system to be changed to, so nothing will be changed" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:10 -msgid "Attempt to divide by zero" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3640 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3654 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3658 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3673 +msgid "Important Warning!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:11 -msgid "Attempt to raise negative to non integer power" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3284 +msgid "Enter the block height" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:12 -msgid "Bad format unsigned integer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3285 +msgid "Block height measured from base table" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:13 -msgid "Bad number format" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3297 +msgid "Conversion error in btn_block_height" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:14 -msgid "Bug bad g code modal group 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3298 +msgid "Conversion error in btn_block_height!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:15 -msgid "Bug code not g0 or g1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3536 +msgid "Please remove the mounted tool and press OK when done" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:16 -msgid "Bug code not g17 g18 or g19" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3539 +#, python-brace-format +msgid "" +"Please change to tool\n" +"\n" +"# {0:d} {1}\n" +"\n" +" then click OK." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:17 -msgid "Bug code not g20 or g21" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3549 +msgid "Tool Change has been aborted!\n" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:18 -msgid "Bug code not g28 or g30" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3550 +msgid "The old tool will remain set!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:19 -msgid "Bug code not g2 or g3" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3570 +msgid "No or more than one tool selected in tool table" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:20 -msgid "Bug code not g4 g10 g28 g30 g53 or g92 series" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3571 +msgid "Please select only one tool in the table" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:21 -msgid "Bug code not g61 g61.1 or g64" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3573 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3580 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3589 +msgid "Warning Tool Touch off not possible!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:22 -msgid "Bug code not g90 or g91" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3577 +msgid "you can not touch of a tool, witch is not mounted in the spindle" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:23 -msgid "Bug code not g98 or g99" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3578 +msgid "your selection has been reseted to the tool in spindle" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:24 -msgid "Bug code not in g92 series" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3586 +msgid "" +"Tool touch off is not possible with cutter radius compensation switched on!\n" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:25 -msgid "Bug code not in range g54 to g593" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3587 +msgid "Please emit an G40 before tool touch off" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:26 -msgid "Bug code not m0 m1 m2 m30 m60" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3597 +msgid "Real big error!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:27 -msgid "Bug distance mode not g90 or g91" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3598 +msgid "" +"You managed to come to a place that is not possible in on_btn_tool_touchoff" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:28 -msgid "Bug function should not have been called" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3602 +#, python-format +msgid "Enter value for axis %s to set:" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:29 -msgid "Bug in tool radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3603 +#, python-brace-format +msgid "Set parameter of tool {0:d} and axis {1} to:" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:30 -msgid "Bug plane not xy yz or xz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3608 +#, python-format +msgid "Conversion error because of wrong entry for touch off axis %s" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:31 -msgid "Bug side not right or left" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3628 +msgid "Enter the tool number as integer " msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:32 -msgid "Bug unknown motion code" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3629 +#, fuzzy +msgid "Select the tool to change" +msgstr "Selecteaza un nod pentru afisare" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3631 +msgid "Conversion error because of wrong entry for tool number\n" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:33 -msgid "Bug unknown operation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3632 +msgid "enter only integer nummbers" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:34 -msgid "Cannot change axis offsets with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3657 +msgid "Selected tool is already in spindle, no change needed." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:35 -msgid "Cannot create backup file" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3653 +msgid "" +"you selected no or more than one tool, the tool selection must be unique" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:36 -msgid "Cannot do g1 with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3672 +msgid "Could not understand the entered tool number. Will not change anything" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:37 -msgid "Cannot do zero repeats of cycle" +#: src/emc/usr_intf/gmoccapy/dialogs.py:33 +#: src/emc/usr_intf/gmoccapy/dialogs.py:38 +msgid "Enter System Unlock Code" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:38 -msgid "Cannot make arc with zero feed rate" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:39 -msgid "Cannot open backup file" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter the value to set" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:40 -msgid "Cannot open variable file" +#: src/emc/usr_intf/gmoccapy/notification.py:205 +#, python-format +msgid "Error trying to delet the message with number %s" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:41 -msgid "Cannot probe with cutter radius comp on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:409 +msgid "left rotate, middle move, right zoom" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:42 -msgid "Cannot probe with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:413 +msgid "left zoom, middle move, right rotate" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:43 -msgid "Cannot put a b in canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:417 +msgid "left move, middle rotate, right zoom" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:44 -msgid "Cannot put a c in canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:421 +msgid "left zoom, middle rotate, right move" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:45 -msgid "Cannot put an a in canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:425 +msgid "left move, middle zoom, right rotate" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:46 -msgid "Cannot turn cutter radius comp on when on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:429 +msgid "left rotate, middle zoom, right move" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:47 -msgid "Cannot use axis values with g80" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:526 +#, fuzzy +msgid "clear plot" +msgstr "Sterge vedere curenta" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:585 +#, fuzzy +msgid "view perspective" +msgstr "Vedere din perspectiva" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:608 +msgid "view along the X axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:48 -msgid "Cannot use axis values without a g code that uses them" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:633 +msgid "view along the Y axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:49 -msgid "Cannot use g28 or g30 with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:658 +msgid "view along the Z axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:50 -msgid "Cannot use g53 incremental" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:685 +msgid "Show or hide tool path" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:51 -msgid "Cannot use g53 with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:708 +msgid "Show or hide dimensions" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:52 -msgid "Cannot use two g codes that both use axis values" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:731 +msgid "" +"view along the Y axis from positive to negative as viewn for a back tool " +"lathe" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:53 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:791 #, fuzzy -msgid "Command too long" -msgstr "Pozitie comandata" +msgid "Offset Page" +msgstr "Valoare Ofset" -#: src/emc/rs274ngc/rs274ngc_return.hh:54 -msgid "Current point same as end point of arc" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:809 +#, fuzzy +msgid "Tooledit" +msgstr "Scule" -#: src/emc/rs274ngc/rs274ngc_return.hh:55 -msgid "Dwell time missing with g4" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:831 +#, fuzzy +msgid "File Selection" +msgstr "A Directie" -#: src/emc/rs274ngc/rs274ngc_return.hh:56 -msgid "Dwell time p word missing with g82" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:869 +#, fuzzy +msgid "Toggle between metric and imperial units" +msgstr "Comuta intre tras si rotit" -#: src/emc/rs274ngc/rs274ngc_return.hh:57 -msgid "Dwell time p word missing with g86" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:887 +msgid "Switch DRO to DTG mode" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:58 -msgid "Dwell time p word missing with g88" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:905 +#, fuzzy +msgid "Toggle between machine and relative coordinates" +msgstr "Comuta intre tras si rotit" -#: src/emc/rs274ngc/rs274ngc_return.hh:59 -msgid "Dwell time p word missing with g89" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:928 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:946 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:963 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:980 +msgid "Klick to toggle through the DRO modes" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:60 -msgid "Equal sign missing in parameter setting" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1253 +#, fuzzy +msgid "Ignore limits" +msgstr "depaseste limite" -#: src/emc/rs274ngc/rs274ngc_return.hh:61 -msgid "F word missing with inverse time arc move" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1321 +#, fuzzy +msgid "Jogging" +msgstr "Pozitie 0" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1430 +msgid "Information over the tool in spindle" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:62 -msgid "F word missing with inverse time g1 move" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1448 +#, fuzzy +msgid "Tool no." +msgstr "Informatii scula" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1474 +#, fuzzy +msgid "Diameter" +msgstr "Diametru:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1503 +#, fuzzy +msgid "offset z" +msgstr "Ofseturi" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1532 +#, fuzzy +msgid "offset x" +msgstr "Ofseturi" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1580 +#, fuzzy +msgid "Tool information" +msgstr "Configurare HAL" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1592 +msgid "G and M code information as well as speed and feed" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:63 -msgid "File ended with no percent sign" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1611 +#, fuzzy +msgid "active_mcodes_label" +msgstr "Coduri G active" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1663 +#, fuzzy +msgid "active_gcodes_label" +msgstr "Coduri G active" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1717 +#, fuzzy +msgid "G-Code" +msgstr "Pozitie 0" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1730 +msgid "The name and location of the loaded program" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:64 -msgid "File ended with no percent sign or program end" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1742 +#, fuzzy +msgid "No Program loaded" +msgstr "Fisier Program" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1750 +#, fuzzy +msgid "Program" +msgstr "Pozitie 0" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1800 +msgid "Vel." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:65 -msgid "File name too long" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1814 +msgid "Displays the current velocity" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:66 -msgid "G code out of range" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1838 +msgid "adjust max vel of machine" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:67 -msgid "I word given for arc in yz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1854 +#, fuzzy +msgid "Max. Velocity" +msgstr "Viteza maxima:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1885 +msgid "Displayes the programmed feed rate" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:68 -msgid "I word missing with g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1904 +#, fuzzy +msgid "reset feed override to 100 %" +msgstr "Seteaza depasire viteza" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1922 +#, fuzzy +msgid "adjust feed override" +msgstr "Seteaza depasire viteza:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1941 +#, fuzzy +msgid "Feed Override [%]" +msgstr "Seteaza depasire viteza" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2034 +#, fuzzy +msgid "Cooling" +msgstr "Pozitie 0" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2285 +#, fuzzy +msgid "Spindle [rpm]" +msgstr "Freza oprita" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2377 +msgid "" +"Search\n" +" back" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:69 -msgid "J word given for arc in xz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2394 +msgid "" +"Search\n" +" fwd" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:70 -msgid "J word missing with g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2446 +#, fuzzy +msgid "" +"Replace\n" +" Text:" +msgstr "Inlocuieste cu:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2456 +#, fuzzy +msgid "" +"Replace\n" +" All" +msgstr "Inlocuieste toate" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2470 +msgid "" +"Ignore\n" +" Case" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:71 -msgid "K word given for arc in xy plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2616 +msgid "Start as fullscreen" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:72 -msgid "K word missing with g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2631 +msgid "Start maximized" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:73 -msgid "Left bracket missing after slash with atan" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2646 +msgid "Start as window" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:74 -msgid "Left bracket missing after unary operation name" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2670 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4426 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4943 +msgid "X Pos." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:75 -msgid "M code greater than 199" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2683 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4437 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4928 +msgid "Y Pos." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:76 -msgid "Mixed radius ijk format for arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2698 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4855 +msgid "Width" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:77 -msgid "Multiple a words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2713 +msgid "Height" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:78 -msgid "Multiple b words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2811 +msgid "hide cursor" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:79 -msgid "Multiple c words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2830 +#, fuzzy +msgid "Main Window" +msgstr "Pozitie 0" -#: src/emc/rs274ngc/rs274ngc_return.hh:80 -msgid "Multiple d words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2857 +#, fuzzy +msgid "Show keyboard on offset" +msgstr "Arata restart" -#: src/emc/rs274ngc/rs274ngc_return.hh:81 -msgid "Multiple f words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2871 +msgid "Show keyboard on tooledit" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:82 -msgid "Multiple h words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2885 +msgid "Show keyboard on MDI" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:83 -msgid "Multiple i words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2899 +msgid "Show keyboard on EDIT" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:84 -msgid "Multiple j words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2913 +msgid "Show keyboard on load file" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:85 -msgid "Multiple k words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2931 +#, fuzzy +msgid "Keyboard" +msgstr "Pozitie 0" -#: src/emc/rs274ngc/rs274ngc_return.hh:86 -msgid "Multiple l words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2959 +#, fuzzy +msgid "show preview" +msgstr "Vedere arbore" -#: src/emc/rs274ngc/rs274ngc_return.hh:87 -msgid "Multiple p words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2973 +#, fuzzy +msgid "show offsets" +msgstr "Arata restart" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2991 +msgid "On Touch off" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:88 -msgid "Multiple q words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3005 +msgid "" +" Display \n" +"Aux Screen" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:89 -msgid "Multiple r words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3052 +#, fuzzy +msgid "Relative Color" +msgstr "Pozitie relativa" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3079 +msgid "Absolute Color" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:90 -msgid "Multiple s words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3110 +msgid "DTG Color" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:91 -msgid "Multiple t words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3139 +msgid "Use Auto Units" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:92 -msgid "Multiple x words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3159 +#, fuzzy +msgid "Show the DRO Button" +msgstr "Shift+Buton stanga" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3190 +#, fuzzy +msgid "Homed color" +msgstr "Salveaza tot" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3204 +#, fuzzy +msgid "Unhomed color" +msgstr "Anuleaza pozitie 0 toate axele" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3299 +#, fuzzy +msgid "Digits" +msgstr "Intrare digitala 3" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3344 +msgid "" +"toggle DRO mode \n" +"clicking on the DRO" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:93 -msgid "Multiple y words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3369 +#, fuzzy +msgid "DRO" +msgstr "Pozitie 0" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3401 +msgid "Grid size" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:94 -msgid "Multiple z words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3430 +#, fuzzy +msgid "Show DRO" +msgstr "Arata" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3444 +#, fuzzy +msgid "Show offsets" +msgstr "Arata restart" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3458 +#, fuzzy +msgid "Show DTG" +msgstr "Arata" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3483 +#, fuzzy +msgid "Mouse Button mode" +msgstr "Pozitie 0" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3512 +#, fuzzy +msgid "Preview" +msgstr "Pozitie 0" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3565 +#, fuzzy +msgid "" +"current\n" +" file" +msgstr "Redeschide fisier curent [Control-R]" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3611 +msgid "File to load on start" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:95 -msgid "Must use g0 or g1 with g53" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3638 +#, fuzzy +msgid "Select user dir" +msgstr "Viteza jog:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3647 +#, fuzzy +msgid "Select jump to dir" +msgstr "Selecteaza un nod pentru afisare" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3767 +msgid "Themes and sound" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:96 -msgid "Negative argument to sqrt" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3799 +msgid "Appearance" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:97 -msgid "Negative d word tool radius index used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3833 +#, fuzzy +msgid "Scale max velocity" +msgstr "Viteza maxima:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3846 +#, fuzzy +msgid "Scale jog velocity" +msgstr "Ara_ta vit_eza" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3861 +#, fuzzy +msgid "Scale feed override" +msgstr "Seteaza depasire viteza:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3876 +#, fuzzy +msgid "Scale spindle override" +msgstr "Seteaza depasire freza" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3970 +#, fuzzy +msgid "Hardware MPG Scale" +msgstr "Pozitie 0" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3994 +msgid "Use keyboard shortcuts" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:98 -msgid "Negative f word used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4007 +msgid "Keyboard shortcuts" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:99 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4034 #, fuzzy -msgid "Negative g code used" -msgstr "Salveaza g-cod ca si" +msgid "Use unlock code" +msgstr "Nefolosit" -#: src/emc/rs274ngc/rs274ngc_return.hh:100 -msgid "Negative h word used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4050 +msgid "Do not use unlock code" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:101 -msgid "Negative l word used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4066 +msgid "Use hal pin to unlock" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:102 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4087 #, fuzzy -msgid "Negative m code used" -msgstr "grade / tura" +msgid "Unlock settings" +msgstr "Pozitie 0" -#: src/emc/rs274ngc/rs274ngc_return.hh:103 -msgid "Negative or zero q value used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4197 +#, fuzzy +msgid "Spindle bar min" +msgstr "Freza mai repede" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4210 +#, fuzzy +msgid "Spindle bar max" +msgstr "Freza mai repede" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4252 +msgid "Hide turtle Jog Button" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:104 -msgid "Negative p word used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4282 +msgid "Turtle jog Factor" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:105 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4318 #, fuzzy -msgid "Negative spindle speed used" -msgstr "Seteaza depasire viteza freza:" +msgid "Turtle Jog" +msgstr "Pozitie 0" -#: src/emc/rs274ngc/rs274ngc_return.hh:106 -msgid "Negative tool id used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4360 +msgid "Hardware" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:107 -msgid "Nested comment found" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4392 +msgid "Use auto tool measurement" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:108 -msgid "No characters found in reading real value" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4450 +#, fuzzy +msgid "Probe Height" +msgstr "Digitizor intrare" -#: src/emc/rs274ngc/rs274ngc_return.hh:109 -msgid "Non integer value for integer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4485 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4498 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4527 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4556 +msgid "0.000" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:110 -msgid "Null missing after newline" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4514 +msgid "Z Pos." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:111 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4543 #, fuzzy -msgid "Parameter file out of order" -msgstr "Fisier parametri este %s" +msgid "Max. Probe" +msgstr "Digitizor intrare" -#: src/emc/rs274ngc/rs274ngc_return.hh:112 -msgid "Parameter number out of range" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4575 +#, fuzzy +msgid "Probe Informations" +msgstr "Pozitie 0" -#: src/emc/rs274ngc/rs274ngc_return.hh:113 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4607 #, fuzzy -msgid "Parameter is readonly" -msgstr "Fisier parametri" +msgid "Search Vel." +msgstr "Viteza cautare poz 0" -#: src/emc/rs274ngc/rs274ngc_return.hh:114 -msgid "Q word missing with g83" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4618 +#, fuzzy +msgid "Probe Vel." +msgstr "Digitizor intrare" -#: src/emc/rs274ngc/rs274ngc_return.hh:115 -msgid "Queue is not empty after probing" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4674 +msgid "Probe velocitys" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:116 -msgid "R clearance plane unspecified in cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4688 +msgid "" +"No valid configuration\n" +"found in your INI file,\n" +"please take a look at \n" +"the WIKI to check how\n" +"to configure the settings." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:117 -msgid "R i j k words all missing for arc" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4708 +#, fuzzy +msgid "Tool Measurement" +msgstr "Pozitie 0" -#: src/emc/rs274ngc/rs274ngc_return.hh:118 -msgid "R less than x in cycle in yz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4737 +msgid "" +"If the 4'th axis is used\n" +"for a tool changer, you\n" +"hide the DRO and\n" +"jog buttons." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:119 -msgid "R less than y in cycle in xz plane" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4749 +#, fuzzy +msgid "Hide 4'th axis" +msgstr "T_esteaza axa" -#: src/emc/rs274ngc/rs274ngc_return.hh:120 -msgid "R less than z in cycle in xy plane" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4769 +#, fuzzy +msgid "Tool Changer" +msgstr "Pozitie 0" -#: src/emc/rs274ngc/rs274ngc_return.hh:121 -msgid "R word with no g code that uses it" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4808 +msgid "Use frames" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:122 -msgid "Slash missing after first atan argument" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4840 +msgid "max." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:123 -msgid "Spindle not turning clockwise in g84" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4992 +#, fuzzy +msgid "Launch test message" +msgstr "Rezultat test _latenta:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5011 +msgid "" +" gmoccapy message\n" +" behavior and appearance " msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:124 -msgid "Spindle not turning in g86" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5049 +msgid "Do not use run from line" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:125 -msgid "Spindle not turning in g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5065 +#, fuzzy +msgid "Use run from line" +msgstr "Por_neste de la linia selectata" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5086 +#, fuzzy +msgid "Run from line" +msgstr "Pozitie 0" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5119 +#, fuzzy +msgid "" +"Advanced\n" +" Settings" +msgstr "Configuratii model" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5157 +msgid "User tab 1" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:126 -msgid "Spindle not turning in g88" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5171 +msgid "User tabs" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:127 -msgid "Sscanf failed" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5207 +msgid "Estop the machine" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:128 -msgid "Start point too close to probe point" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5229 +#, fuzzy +msgid "Turn the machine on/off" +msgstr "Masina pornita" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5251 +msgid "enter manual mode to jog axis by hand or touch off" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:129 -msgid "Too many m codes on line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5271 +msgid "enter MDI mode to launch g-code commands" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:130 -msgid "Pocket max too large" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5290 +#, fuzzy +msgid "enter auto mode to run programs" +msgstr "Program serial modbus" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5308 +msgid "Enter the settings page, the default code is \"123\"" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:131 -msgid "Tool radius not less than arc radius with comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5330 +#, fuzzy +msgid "show user tabs" +msgstr "Arata restart" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5381 +msgid "open homing button list" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5398 +msgid "open touch off button list" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:132 -msgid "Two g codes used from same modal group" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5427 +msgid "Open the tooleditor page" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:133 -msgid "Two m codes used from same modal group" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5498 +msgid "make the preview as large as possible" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:134 -#, c-format -msgid "Unable to open file <%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5515 +msgid "Close moccapy / leave the program" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:135 -msgid "Unclosed comment found" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5577 +msgid "This button will show or hide the Keyboard" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:136 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5620 #, fuzzy -msgid "Unclosed expression" -msgstr "Nefolosit" +msgid "Load a new program" +msgstr "Executa program" -#: src/emc/rs274ngc/rs274ngc_return.hh:137 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5637 #, fuzzy -msgid "Unknown g code used" -msgstr "Scula %d necunoscuta" +msgid "Run the loaded program" +msgstr "Executa program" -#: src/emc/rs274ngc/rs274ngc_return.hh:138 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5654 #, fuzzy -msgid "Unknown m code used" -msgstr "Scula %d necunoscuta" +msgid "Stop the running program" +msgstr "Opreste executie" -#: src/emc/rs274ngc/rs274ngc_return.hh:139 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5672 #, fuzzy -msgid "Unknown operation" -msgstr "Eroare necunoscuta %s" +msgid "Pause the running program" +msgstr "Opreste executie" -#: src/emc/rs274ngc/rs274ngc_return.hh:140 -msgid "Unknown operation name starting with a" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5680 +#, fuzzy +msgid "pause the running program" +msgstr "Opreste executie" -#: src/emc/rs274ngc/rs274ngc_return.hh:141 -msgid "Unknown operation name starting with m" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5698 +msgid "Run the loaded program step by step" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:142 -msgid "Unknown operation name starting with o" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5715 +msgid "" +"run the program from a certain line, attention, that is dangerous, because " +"the previous lines will not checed!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:143 -msgid "Unknown operation name starting with x" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5732 +msgid "" +"Machine or not the optional blocks of the program. If the button is pressed, " +"the optional blocks will not be machined. The button will indicate this by a " +"yellow background." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:144 -msgid "Unknown word starting with a" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5757 +msgid "" +"Make optional stops or not. if an M1 is programed and the button is pressed " +"(is active) the programm will pause if it found a M1" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:145 -msgid "Unknown word starting with c" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5789 +#, fuzzy +msgid "Edit the loaded program" msgstr "" +"Editeaza program\n" +"ladder" -#: src/emc/rs274ngc/rs274ngc_return.hh:146 -msgid "Unknown word starting with e" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5837 +#, fuzzy +msgid "home all axis" +msgstr "Pozitie 0 toate axele" -#: src/emc/rs274ngc/rs274ngc_return.hh:147 -msgid "Unknown word starting with f" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5873 +#, fuzzy +msgid "home x axis" +msgstr "Pozitie 0 Axa" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5897 +#, fuzzy +msgid "home y axis" +msgstr "Pozitie 0 Axa" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5929 +#, fuzzy +msgid "home z axis" +msgstr "Pozitie 0 Axa" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5987 +#, fuzzy +msgid "Unhome all axis" +msgstr "Anuleaza pozitie 0 toate axele" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6023 +msgid "go back to main button list" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:148 -msgid "Unknown word starting with l" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6053 +msgid "" +" edit\n" +"offsets" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:149 -msgid "Unknown word starting with r" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6060 +#, fuzzy +msgid "Edit offsets" +msgstr "Arata restart" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6076 +msgid "touch off X / set X to 0" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:150 -msgid "Unknown word starting with s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6100 +msgid "touch off Y / set Y to 0" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:151 -msgid "Unknown word starting with t" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6135 +msgid "touch off Z / set Z to 0" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:152 -msgid "Unknown word where unary operation could be" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6155 +msgid "" +"zero\n" +"G92" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:153 -msgid "X and y words missing for arc in xy plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6161 +#, fuzzy +msgid "Zero all G92 offsets" +msgstr "Zero toate G59.2" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6172 +msgid "" +" Block\n" +"Height" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:154 -msgid "X and z words missing for arc in xz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6192 +msgid "touch off X / set X to an desired value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:155 -msgid "X value unspecified in yz plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6216 +msgid "touch off Y / set Y to an desired value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:156 -msgid "Y and z words missing for arc in yz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6251 +msgid "touch off Z / set Z to an desired value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:157 -msgid "Y value unspecified in xz plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6270 +msgid "" +" set\n" +"selected" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:158 -msgid "Z value unspecified in xy plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6277 +msgid "set the selected coordinate system to be the active one" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:159 -msgid "Zero or negative argument to ln" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6293 +msgid "Go back to main view" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:161 -msgid "K word missing with g33/g33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6324 +#, fuzzy +msgid "delete MDI" +msgstr "Sterge" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6330 +#, fuzzy +msgid "delete MDI history" +msgstr "Sterge istoric MDI" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6380 +msgid "Cl.-ladder" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:162 -msgid "F word used with a g33/g33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6386 +#, fuzzy +msgid "Open classicladder" +msgstr "Include PLC _Classicladder" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6397 +#, fuzzy +msgid "Hal-Scope" +msgstr "Hal Scope" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6403 +#, fuzzy +msgid "launch hal scope" +msgstr "lanseaza %s" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6420 +msgid "launch linuxcnc status" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:163 -msgid "Unknown operation name starting with e" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6437 +msgid "launch hal meter" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:164 -msgid "Unknown operation name starting with n" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6455 +#, fuzzy +msgid "launch calibration" +msgstr "Calibrare..." + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6466 +msgid "Halshow" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:165 -msgid "Unknown operation name starting with g" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6472 +msgid "opens the show hal tool" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:166 -msgid "Unknown operation name starting with l" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6537 +msgid "save the file using the original name" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:167 -msgid "Too many subroutine parameters" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6559 +msgid "save the file with a new name" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:168 -msgid "Too many subroutine levels" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6605 +msgid "clear the edit field and make a new file" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:169 -msgid "Bug: call stack underrun" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6641 +msgid "Show or hide the virtual keyboard" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:170 -msgid "Unknown control command in o word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6665 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6879 +msgid "Go back to main button list" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:171 -msgid "Too many oword labels" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6701 +msgid "delete selected tool or tools" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:172 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6718 #, fuzzy -msgid "Unknown oword number" -msgstr "Scula %d necunoscuta" +msgid "add a new tool to tool table" +msgstr "Incarca tabela scule" -#: src/emc/rs274ngc/rs274ngc_return.hh:173 -msgid "Nested subroutine definition" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6729 +#, fuzzy +msgid "Reload" +msgstr "_Reincarca" -#: src/emc/rs274ngc/rs274ngc_return.hh:174 -msgid "Not in subroutine definition" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6735 +#, fuzzy +msgid "reload tool table from file" +msgstr "Incarca tabela scule" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6746 +msgid "Apply" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:175 -msgid "File not open" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6752 +msgid "" +"apply the changes you made, G43 will be excecuted only if it is active g-code" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:176 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6768 #, fuzzy -msgid "Need tool prepared -Txx- for toolchange" -msgstr "" -"Confirmare pe ecran pentru\n" -"schimbare scula" +msgid "Select a tool by number" +msgstr "Selecteaza un nod pentru afisare" -#: src/emc/rs274ngc/rs274ngc_return.hh:177 -msgid "Cannot change planes with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6790 +msgid "change tool with the command M61 Q?, no machine move will be done" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:178 -msgid "Cutter radius compensation allowed only in XY, XZ planes" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6812 +msgid "change tool to the selected one" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:179 -msgid "P word missing with G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6824 +msgid "" +"touchoff\n" +" tool x" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:180 -msgid "I J or K words missing with G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6832 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6863 +msgid "touch off the tool and set the value to the tool table" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:181 -msgid "Cannot move rotary axes with G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6855 +msgid "" +"touchoff\n" +" tool z" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:182 -msgid "Multiple e words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6915 +msgid "Move to your home directory" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:183 -msgid "Named parameter not terminated" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6932 +#, fuzzy +msgid "Move to parrent directory" +msgstr "Selector configuratii EMC2" -#: src/emc/rs274ngc/rs274ngc_return.hh:184 -msgid "Out of memory" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6961 +#, fuzzy +msgid "Select the previos file" +msgstr "Selecteaza un nod pentru afisare" -#: src/emc/rs274ngc/rs274ngc_return.hh:185 -msgid "S word missing with G96" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6979 +#, fuzzy +msgid "Select the next file" +msgstr "Selecteaza un nod pentru afisare" -#: src/emc/rs274ngc/rs274ngc_return.hh:186 -msgid "Queue is not empty after external input" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6997 +msgid "Jump to user defined directory" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:187 -msgid "Can't select analog input with wait type != immediate return" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7027 +msgid "select the highlighted file and return the path" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:188 -msgid "Zero timeout with wait type != immediate return" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7057 +msgid "Close without returning a file path" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:189 -msgid "Invalid to select both a digital and an analog input with M66" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7075 +#, fuzzy +msgid "Load File" +msgstr "Fisier Program" -#: src/emc/rs274ngc/rs274ngc_return.hh:190 -msgid "Need to have either a valid P or a valid E word with M66" -msgstr "" +#, fuzzy +#~ msgid "LinuxCNC Debug Level" +#~ msgstr "EMC Diagnostic" -#: src/emc/rs274ngc/rs274ngc_return.hh:191 -msgid "Q word missing with g73" -msgstr "" +#~ msgid "Generated by stepconf at %s" +#~ msgstr "Generat de stepconf la %s" -#: src/emc/rs274ngc/rs274ngc_return.hh:192 -msgid "Digital input selected out of bounds" -msgstr "" +#, fuzzy +#~ msgid " Out" +#~ msgstr " " -#: src/emc/rs274ngc/rs274ngc_return.hh:193 -msgid "Analog input selected out of bounds" -msgstr "" +#~ msgid "S_econd Parport Address:" +#~ msgstr "Adresa port paralel 2:" -#: src/emc/rs274ngc/rs274ngc_return.hh:194 -msgid "W value unspecified in UV plane canned cycle" -msgstr "" +#~ msgid "T_hird Parport Address:" +#~ msgstr "Adresa port paralel 3:" -#: src/emc/rs274ngc/rs274ngc_return.hh:195 -msgid "U value unspecified in VW plane canned cycle" -msgstr "" +#, fuzzy +#~ msgid " Parallel Port Settings" +#~ msgstr "Initializare imprimare" -#: src/emc/rs274ngc/rs274ngc_return.hh:196 -msgid "V value unspecified in UW plane canned cycle" -msgstr "" +#, fuzzy +#~ msgid "" +#~ "Driver characteristics: (Multiply by 1000 for times specified in µs or " +#~ "microseconds)\n" +#~ " Additional signal conditioning or isolation such as optocouplers " +#~ "and RC filters\n" +#~ " can impose timing constraints of their own, in addition to those " +#~ "of the driver." +#~ msgstr "" +#~ "Caracteristici driver: (Inmulteste cu 1000 pentru timpi specificati in µs " +#~ "sau microsecunde)\n" +#~ "\n" +#~ "Alte conditii de semnale sau izolare cum ar fi optocuploare sau filtre RC " +#~ "pot impune alte cerinte de timp, pe langa cele determinate de catre " +#~ "driver." -#: src/emc/rs274ngc/rs274ngc_return.hh:197 -msgid "R less than W in cycle in UV plane" -msgstr "" +#, fuzzy +#~ msgid "Advanced Configuration Options" +#~ msgstr "Configuratii model" -#: src/emc/rs274ngc/rs274ngc_return.hh:198 -msgid "R less than U in cycle in VW plane" -msgstr "" +#~ msgid "_Sherline Outputs" +#~ msgstr "Pinout _Sherline" -#: src/emc/rs274ngc/rs274ngc_return.hh:199 -msgid "R less than V in cycle in UW plane" -msgstr "" +#~ msgid "_Xylotex Outputs" +#~ msgstr "Pinout _Xylotex" + +#, fuzzy +#~ msgid "Spindle Configuration" +#~ msgstr "Configuratii model" + +#, fuzzy +#~ msgid "Spindle Max Output:" +#~ msgstr "Freza oprita" #~ msgid "ERROR: must specify a path to search for configurations" #~ msgstr "EROARE: trebuie specificata o cale pentru configuratii" @@ -13939,9 +17512,6 @@ msgstr "" #~ msgid "About TkEmc" #~ msgstr "Despre TkEmc" -#~ msgid "Diameter:" -#~ msgstr "Diametru:" - #~ msgid "Tools..." #~ msgstr "Scule..." @@ -13951,10 +17521,6 @@ msgstr "" #~ msgid "mm / s²" #~ msgstr "mm / s²" -#, fuzzy -#~ msgid "Out" -#~ msgstr "Decupare" - #, fuzzy #~ msgid "X PWM Direction" #~ msgstr "X Directie" @@ -14063,10 +17629,6 @@ msgstr "" #~ msgid "Base Period Maximum Jitter:" #~ msgstr "_Jitter maxim perioada baza" -#, fuzzy -#~ msgid "Analog" -#~ msgstr "dialog1" - #, fuzzy #~ msgid "Switch and index" #~ msgstr "Freza index" @@ -14119,23 +17681,13 @@ msgstr "" #~ msgid "Speed 1:" #~ msgstr "Viteza:" -#, fuzzy -#~ msgid "Advanced realtime components" -#~ msgstr "Optiuni Configurare Avansata" - #, fuzzy #~ msgid "Step generator" #~ msgstr "Executa un pas" -#~ msgid "Xylotex" -#~ msgstr "Xylotex" - #~ msgid "AXIS error" #~ msgstr "Eroare AXIS" -#~ msgid "AXIS Message" -#~ msgstr "Mesaj AXIS" - #~ msgid "Set _next line" #~ msgstr "Alege linie _urmatoare" @@ -14214,10 +17766,6 @@ msgstr "" #~ "Activare driver\n" #~ "Charge Pump" -#, fuzzy -#~ msgid "Include custom _HAL configuration" -#~ msgstr "Configurare HAL" - #~ msgid "mm / s^2\t" #~ msgstr "mm / s^2\t" @@ -14242,12 +17790,6 @@ msgstr "" #~ msgid "_Y" #~ msgstr "_Y" -#~ msgid "_B" -#~ msgstr "_B" - -#~ msgid "_C" -#~ msgstr "_C" - #~ msgid "Break on" #~ msgstr "Frana pornita" diff --git a/src/po/ru.po b/src/po/ru.po index 24af7b6bb2..1fbc00e927 100644 --- a/src/po/ru.po +++ b/src/po/ru.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: emc 2.2.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-10 13:40-0600\n" +"POT-Creation-Date: 2019-02-20 07:49+0000\n" "PO-Revision-Date: 2010-01-26 10:20+0300\n" "Last-Translator: Alexey Starikovskiy \n" "Language-Team: Russian \n" @@ -19,13607 +19,17226 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: src/hal/utils/meter.c:198 +#: src/emc/task/emctaskmain.cc:479 src/emc/task/emctaskmain.cc:512 #, c-format -msgid "ERROR: '%s' is not a valid probe type\n" -msgstr "ОШИБКА: '%s' неверный тип пробника\n" +msgid "%s exceeds +X limit" +msgstr "%s выходит за +X предел" -#: src/hal/utils/meter.c:206 +#: src/emc/task/emctaskmain.cc:484 src/emc/task/emctaskmain.cc:517 #, c-format -msgid "ERROR: no pin/signal/parameter name\n" -msgstr "ОШИБКА: не имя ноги, сигнала или параметра\n" +msgid "%s exceeds +Y limit" +msgstr "%s выходит за +Y предел" -#: src/hal/utils/meter.c:212 +#: src/emc/task/emctaskmain.cc:489 src/emc/task/emctaskmain.cc:522 #, c-format -msgid "" -"ERROR: -s option requires a probe type and a pin/signal/parameter name\n" -msgstr "ОШИБКА: -s опция требует тип пробника и имя сигнала или входа\n" - -#: src/hal/utils/meter.c:238 tcl/tklinuxcnc.tcl:764 -msgid "Hal Meter" -msgstr "HAL-метр" +msgid "%s exceeds +Z limit" +msgstr "%s выходит за +Z предел" -#: src/hal/utils/meter.c:287 -msgid "_Select" -msgstr "Выбрать" +#: src/emc/task/emctaskmain.cc:494 src/emc/task/emctaskmain.cc:527 +#, c-format +msgid "%s exceeds -X limit" +msgstr "%s выходит за -X предел" -#: src/hal/utils/meter.c:288 -msgid "E_xit" -msgstr "Выход" +#: src/emc/task/emctaskmain.cc:499 src/emc/task/emctaskmain.cc:532 +#, c-format +msgid "%s exceeds -Y limit" +msgstr "%s выходит за -Y предел" -#: src/hal/utils/meter.c:336 src/hal/utils/meter.c:364 -msgid "Select Item to Probe" -msgstr "Выберите узел для показа" +#: src/emc/task/emctaskmain.cc:504 src/emc/task/emctaskmain.cc:537 +#, c-format +msgid "%s exceeds -Z limit" +msgstr "%s выходит за -Z предел" -#: src/hal/utils/meter.c:640 -msgid " _Pins " -msgstr "Ножки" +#: src/emc/task/emctaskmain.cc:892 +#, c-format +msgid "" +"command (%s) cannot be executed until the machine is out of E-stop and " +"turned on" +msgstr "" +"команда (%s) не может быть исполнена пока станок на АВОСТе или выключен." -#: src/hal/utils/meter.c:641 -msgid " _Signals " -msgstr "Сигналы" +#: src/emc/task/emctaskmain.cc:1013 +#, fuzzy, c-format +msgid "can't do that (%s:%d) in manual mode" +msgstr "не могу делать это (%s) в ручном режиме" -#: src/hal/utils/meter.c:642 -msgid " Para_meters " -msgstr "Параметры" +#: src/emc/task/emctaskmain.cc:1113 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter idle" +msgstr "не могу делать это (%s) в авто режиме с остановленным интерпретатором" -#: src/hal/utils/meter.c:685 -msgid "_Close" -msgstr "Закрыть" +#: src/emc/task/emctaskmain.cc:1180 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter reading" +msgstr "не могу делать это (%s) в авто режиме с читающим интерпретатором" -#: src/hal/utils/scope.c:126 -msgid "" -"Usage:\n" -" halscope [-h] [-i infile] [-o outfile] [num_samples]\n" +#: src/emc/task/emctaskmain.cc:1265 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter paused" msgstr "" -"Использование:\n" -" halscope [-h] [-i входной файл] [-o выходной файл] [количество точек]\n" +"не могу делать это (%s) в авто режиме с приостановленным интерпретатором" -#: src/hal/utils/scope.c:474 src/hal/utils/scope.c:501 -msgid "Open Configuration File:" -msgstr "Открыть файл конфигурации" +#: src/emc/task/emctaskmain.cc:1334 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter waiting" +msgstr "не могу делать это (%s) в авто режиме с ждущим интерпретатором" -#: src/hal/utils/scope.c:535 -msgid "_Open Configuration..." -msgstr "Открыть конфигурацию..." +#: src/emc/task/emctaskmain.cc:1442 +#, fuzzy, c-format +msgid "can't do that (%s:%d) in MDI mode" +msgstr "не могу делать это (%s) в MDI режиме" -#: src/hal/utils/scope.c:541 -msgid "_Save Configuration..." -msgstr "Сохранить конфигурацию..." +#: src/emc/task/emctaskmain.cc:2100 +msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" +msgstr "Не могу переключить режим из авто при не остановленном интерпретаторе" -#: src/hal/utils/scope.c:550 -msgid "O_pen Data File..." -msgstr "Открыть файл данных" +#: src/emc/task/emctaskmain.cc:2157 tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 +#: tcl/mini.tcl:1775 tcl/tklinuxcnc.tcl:451 +#, c-format, tcl-format +msgid "can't open %s" +msgstr "не могу открыть %s" -#: src/hal/utils/scope.c:557 -msgid "S_ave Data File..." -msgstr "Сохранить файл данных" +#: src/emc/task/emctaskmain.cc:2169 +msgid "Can't issue MDI command when not homed" +msgstr "Не могу исполнить команду MDI если не найдены начала" -#: src/hal/utils/scope.c:566 share/axis/tcl/axis.tcl:93 -msgid "_Quit" -msgstr "Выход" +#: src/emc/task/emctaskmain.cc:2174 +msgid "Must be in MDI mode to issue MDI command" +msgstr "Должен быть в MDI режиме для исполнения команд MDI" -#: src/hal/utils/scope.c:572 -msgid "_About Halscope" -msgstr "О Halscope" +#: src/emc/task/emctaskmain.cc:2256 +msgid "Can't run a program when not homed" +msgstr "Не могу исполнить программу если не найдены начала" -#: src/hal/utils/scope.c:578 share/axis/tcl/axis.tcl:435 -msgid "_File" -msgstr "Файл" +#: src/emc/rs274ngc/interp_arc.cc:110 src/emc/rs274ngc/interp_arc.cc:284 +#, fuzzy, c-format +msgid "" +"Zero-radius arc: start=(%c%.4f,%c%.4f) center=(%c%.4f,%c%.4f) end=(%c%.4f,%c" +"%.4f) r1=%.4f r2=%.4f" +msgstr "" +"Радиус конца окружности отличается от радиуся начала: start=(%c%.4f,%c%.4f) " +"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f" -#: src/hal/utils/scope.c:582 share/axis/tcl/axis.tcl:447 -msgid "_Help" -msgstr "Помощь" +#: src/emc/rs274ngc/interp_arc.cc:120 src/emc/rs274ngc/interp_arc.cc:292 +#, fuzzy, c-format +msgid "" +"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " +"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " +"rel_err=%.4f%%" +msgstr "" +"Радиус конца окружности отличается от радиуся начала: start=(%c%.4f,%c%.4f) " +"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f" -#: src/hal/utils/scope.c:641 -msgid "HAL Oscilloscope" -msgstr "HAL Осциллограф" +#: src/emc/rs274ngc/interp_check.cc:90 +msgid "G4 not allowed with G2 or G3 because they both use P" +msgstr "" -#: src/hal/utils/scope.c:669 -msgid "Horizontal" -msgstr "Горизонтальный" +#: src/emc/rs274ngc/interp_check.cc:93 +#, fuzzy +msgid "Line with G10 does not have L1, L10, L11, L2, or L20" +msgstr "Строка с g10 не имеет l2" -#: src/hal/utils/scope.c:677 -msgid "Selected Channel" -msgstr "Выбранный канал" +#: src/emc/rs274ngc/interp_check.cc:94 +#, fuzzy +msgid "P value not an integer with G10" +msgstr "Значение P не целое для g10 l2" -#: src/hal/utils/scope.c:683 -msgid "Run Mode" -msgstr "Режим работы" +#: src/emc/rs274ngc/interp_check.cc:95 +#, fuzzy, c-format +msgid "P value out of range (0-9) with G10 L%d" +msgstr "Значение P вне диапазона для g10 l2" -#: src/hal/utils/scope.c:686 -msgid "Trigger" -msgstr "Запуск" +#: src/emc/rs274ngc/interp_check.cc:96 +#, fuzzy, c-format +msgid "P value out of range with G10 L%d" +msgstr "Значение P вне диапазона для g10 l2" -#: src/hal/utils/scope.c:692 -msgid "Vertical" -msgstr "Вертикальный" +#: src/emc/rs274ngc/interp_check.cc:100 +msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." +msgstr "Между G5.2 и G5.3 кодами, допустимы только дополнительные G5.2 коды." -#: src/hal/utils/scope.c:700 share/axis/tcl/axis.tcl:135 -#: share/axis/tcl/axis.tcl:1199 -msgid "Stop" -msgstr "Стоп" +#: src/emc/rs274ngc/interp_check.cc:259 +#, fuzzy +msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" +msgstr "D слово без G41, G41.1, G42, G42.2 или G96 перед ним" -#: src/hal/utils/scope.c:703 -msgid "Normal" -msgstr "Нормальный" +#: src/emc/rs274ngc/interp_check.cc:265 +msgid "E word with no G76, M66, M67 or M68 to use it" +msgstr "E слово вне G76, M66, M67 или M68" -#: src/hal/utils/scope.c:706 -msgid "Single" -msgstr "Одиночный" +#: src/emc/rs274ngc/interp_check.cc:270 +msgid "H word with no G43 or G76 to use it" +msgstr "H слово вне G43 или G76" -#: src/hal/utils/scope.c:709 -msgid "Roll" -msgstr "Прокрутить" +#: src/emc/rs274ngc/interp_check.cc:276 +#, fuzzy +msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" +msgstr "J слово без G2, G3, G5, G5.1, G10, G76, G87 или G43.1 перед ним" -#: src/hal/utils/scope_horiz.c:130 -msgid "Zoom" -msgstr "zoom" +#: src/emc/rs274ngc/interp_check.cc:282 +msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" +msgstr "J слово без G2, G3, G5, G5.1, G10, G76, G87 или G43.1 перед ним" -#: src/hal/utils/scope_horiz.c:131 -msgid " Pos " -msgstr "Поз" +#: src/emc/rs274ngc/interp_check.cc:288 +#, fuzzy +msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" +msgstr "K слово без G2, G3, G33, G33.1, G76, G87 или G43.1 перед ним" -#: src/hal/utils/scope_horiz.c:164 +#: src/emc/rs274ngc/interp_check.cc:298 msgid "" -"----- Samples\n" -"at ---- KHz" +"L word with no G10, cutter compensation, canned cycle, digital/analog input, " +"or NURBS code" msgstr "" -"----- Точки\n" -"на ---- КГц" -#: src/hal/utils/scope_horiz.c:459 -msgid "Realtime component not loaded" -msgstr "Компонента реального времени не загружена" - -#: src/hal/utils/scope_horiz.c:460 +#: src/emc/rs274ngc/interp_check.cc:310 msgid "" -"HALSCOPE uses a realtime component called scope_rt'\n" -"to sample signals for display. It is not currently loaded\n" -"and attempting to load it automatically failed. More information\n" -"may be available in the terminal where halscope was started.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Load the component (using 'halcmd loadrt scope_rt'), then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " +"M53 M62 M63 M64 M65 M66 or user M code to use it" msgstr "" -"HALSCOPE uses a realtime component called scope_rt'\n" -"to sample signals for display. It is not currently loaded\n" -"and attempting to load it automatically failed. More information\n" -"may be available in the terminal where halscope was started.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Load the component (using 'halcmd loadrt scope_rt'), then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" -#: src/hal/utils/scope_horiz.c:495 -msgid "Realtime function not linked" -msgstr "Функция не слинкована" +#: src/emc/rs274ngc/interp_check.cc:315 +#, fuzzy +msgid "P value not an integer with M19 G2 or G3" +msgstr "Значение P не целое для g10 l2" -#: src/hal/utils/scope_horiz.c:496 -msgid "" -"The HALSCOPE realtime sampling function\n" -"must be called from a HAL thread in to\n" -"determine the sampling rate.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Select a thread name and multiplier then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" -msgstr "" -"The HALSCOPE realtime sampling function\n" -"must be called from a HAL thread in to\n" -"determine the sampling rate.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Select a thread name and multiplier then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +#: src/emc/rs274ngc/interp_check.cc:317 +#, fuzzy +msgid "P value must be 0,1,or 2 with M19" +msgstr "Значение P вне диапазона для g10 l2" -#: src/hal/utils/scope_horiz.c:503 -msgid "Select Sample Rate" -msgstr "Выберите скорость отсчетов" +#: src/emc/rs274ngc/interp_check.cc:319 +#, fuzzy +msgid "P value should be 1 or greater with G2 or G3" +msgstr "Значение P вне диапазона для g10 l2" -#: src/hal/utils/scope_horiz.c:504 +#: src/emc/rs274ngc/interp_check.cc:327 +#, fuzzy msgid "" -"Select a thread name and multiplier then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" -msgstr "" -"Выберите имя очереди и множитель 'OK'\n" -"или\n" -"Нажмите 'Quit' для выхода из HALSCOPE" +"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " +"code that uses it" +msgstr "K слово без G2, G3, G33, G33.1, G76, G87 или G43.1 перед ним" -#: src/hal/utils/scope_horiz.c:526 -msgid "Thread:" -msgstr "Поток:" +#: src/emc/rs274ngc/interp_check.cc:337 +#, fuzzy +msgid "R value must be within 0..360 with M19" +msgstr "Значение P вне диапазона для g10 l2" -#: src/hal/utils/scope_horiz.c:534 -msgid "Sample Period:" -msgstr "Период опроса:" +#: src/emc/rs274ngc/interp_convert.cc:139 +msgid "You must specify both X and Y coordinates for Control Points" +msgstr "" -#: src/hal/utils/scope_horiz.c:542 -msgid "Sample Rate:" -msgstr "Скорость опроса" - -#: src/hal/utils/scope_horiz.c:558 src/emc/usr_intf/touchy/mdi.py:78 -msgid "Thread" -msgstr "Поток" - -#: src/hal/utils/scope_horiz.c:559 -msgid "Period" -msgstr "Период" - -#: src/hal/utils/scope_horiz.c:619 -msgid "Multiplier:" -msgstr "Множитель:" - -#: src/hal/utils/scope_horiz.c:636 -msgid "Record Length" -msgstr "Длина записи" - -#: src/hal/utils/scope_horiz.c:639 -#, c-format -msgid "%5d samples (1 channel)" -msgstr "%5d замеров (1 канал)" +#: src/emc/rs274ngc/interp_convert.cc:142 +msgid "Can specify P without X and Y only for the first control point" +msgstr "" -#: src/hal/utils/scope_horiz.c:641 -#, c-format -msgid "%5d samples (2 channels)" -msgstr "%5d замеров (2 канала)" +#: src/emc/rs274ngc/interp_convert.cc:145 +msgid "Must specify positive weight P for every Control Point" +msgstr "" -#: src/hal/utils/scope_horiz.c:645 -#, c-format -msgid "%5d samples (4 channels)" -msgstr "%5d замеров (4 канала)" +#: src/emc/rs274ngc/interp_convert.cc:148 +#, fuzzy +msgid "Cannot make a NURBS with 0 feedrate" +msgstr "Не могу делать арку с нулевой подачей" -#: src/hal/utils/scope_horiz.c:649 -#, c-format -msgid "%5d samples (8 channels)" -msgstr "%5d замеров (8 каналов)" +#: src/emc/rs274ngc/interp_convert.cc:183 +#, fuzzy +msgid "Cannot use G5.3 without G5.2 first" +msgstr "Не могу использовать G53 с компенсацией радиуса" -#: src/hal/utils/scope_horiz.c:653 +#: src/emc/rs274ngc/interp_convert.cc:184 #, c-format -msgid "%5d samples (16 channels)" -msgstr "%5d замеров (16 каналов)" - -#: src/hal/utils/scope_horiz.c:708 src/hal/utils/scope_horiz.c:754 -#: src/hal/utils/scope_horiz.c:966 src/hal/utils/scope_vert.c:761 -#: src/hal/utils/scope_vert.c:853 tcl/bin/emccalib.tcl:227 -#: tcl/bin/genedit.tcl:180 tcl/bin/genedit.tcl:450 tcl/bin/halconfig.tcl:682 -#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:257 -#: tcl/bin/pickconfig.tcl:479 tcl/bin/pickconfig.tcl:506 tcl/mini.tcl:1456 -#: tcl/mini.tcl:2937 tcl/tklinuxcnc.tcl:160 tcl/tklinuxcnc.tcl:245 -#: tcl/tklinuxcnc.tcl:419 tcl/tklinuxcnc.tcl:1338 tcl/tklinuxcnc.tcl:1407 -#: tcl/tklinuxcnc.tcl:1438 tcl/tklinuxcnc.tcl:1469 tcl/tklinuxcnc.tcl:2017 -#: tcl/tklinuxcnc.tcl:2036 tcl/tklinuxcnc.tcl:2055 tcl/tklinuxcnc.tcl:2102 -#: src/emc/usr_intf/axis/scripts/axis.py:1077 -#: src/emc/usr_intf/axis/scripts/axis.py:1141 -#: src/emc/usr_intf/axis/scripts/axis.py:1458 -#: src/emc/usr_intf/axis/scripts/axis.py:2477 -#: src/emc/usr_intf/axis/scripts/axis.py:3336 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:718 -#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1720 -#: share/axis/tcl/axis.tcl:1757 -msgid "OK" -msgstr "Да" +msgid "" +"You must specify a number of control points at least equal to the order L = " +"%d" +msgstr "Вы должны задать по крайней мере %d контрольных точек" -#: src/hal/utils/scope_horiz.c:713 src/hal/utils/scope_horiz.c:754 -#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 -msgid "Quit" -msgstr "Выход" +#: src/emc/rs274ngc/interp_convert.cc:213 +msgid "Cannot convert spline with cutter radius compensation" +msgstr "Не могу конвертировать сплайн с компенсацией радиуса инструмента" -#: src/hal/utils/scope_horiz.c:745 -msgid "Realtime thread(s) not running" -msgstr "" +#: src/emc/rs274ngc/interp_convert.cc:223 +msgid "Splines must be in the XY plane" +msgstr "Сплайны должны быть в плоскости XY" -#: src/hal/utils/scope_horiz.c:746 -msgid "" -"HALSCOPE uses code in a realtime HAL thread to sample\n" -"signals for display. The HAL thread(s) are not running.\n" -"Threads are usually started by the application you are\n" -"attempting to run, or you can use the 'halcmd start' command.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Start the threads, then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +#: src/emc/rs274ngc/interp_convert.cc:228 +msgid "Splines may not have motion in Z, A, B, or C" msgstr "" -#: src/hal/utils/scope_horiz.c:779 -msgid "Pick log file to write to:" +#: src/emc/rs274ngc/interp_convert.cc:232 +msgid "Must specify both I and J with G5.1" msgstr "" -#: src/hal/utils/scope_horiz.c:962 -msgid "Not enough channels" +#: src/emc/rs274ngc/interp_convert.cc:251 +msgid "Must specify both I and J, or neither" msgstr "" -#: src/hal/utils/scope_horiz.c:963 -msgid "" -"This record length cannot handle the channels\n" -"that are currently enabled. Pick a shorter\n" -"record length that supports more channels." +#: src/emc/rs274ngc/interp_convert.cc:262 +msgid "Must specify both P and Q with G5" msgstr "" -#: src/hal/utils/scope_horiz.c:1051 -#, c-format +#: src/emc/rs274ngc/interp_convert.cc:363 msgid "" -"%s\n" -"per div" -msgstr "" +"The move just after exiting cutter compensation mode must be straight, not " +"an arc" +msgstr "Движение после отмены компенсации инструмента должно быть линейным" -#: src/hal/utils/scope_horiz.c:1066 -#, c-format -msgid "" -"%s samples\n" -"at %s" +#: src/emc/rs274ngc/interp_convert.cc:371 +msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" msgstr "" -#: src/hal/utils/scope_horiz.c:1170 -msgid "nSec" +#: src/emc/rs274ngc/interp_convert.cc:383 +#: src/emc/rs274ngc/interp_convert.cc:4488 +msgid "Cannot feed with zero spindle speed in feed per rev mode" msgstr "" -#: src/hal/utils/scope_horiz.c:1173 -msgid "uSec" -msgstr "" +#: src/emc/rs274ngc/interp_convert.cc:394 +#: src/emc/rs274ngc/interp_convert.cc:400 +#: src/emc/rs274ngc/interp_convert.cc:409 +#: src/emc/rs274ngc/interp_convert.cc:415 +#: src/emc/rs274ngc/interp_convert.cc:424 +#: src/emc/rs274ngc/interp_convert.cc:430 +#, fuzzy, c-format +msgid "%c word missing in absolute center arc" +msgstr "F слово не задано в движении с инверсным временем" -#: src/hal/utils/scope_horiz.c:1177 -msgid "mSec" +#: src/emc/rs274ngc/interp_convert.cc:662 +msgid "" +"Radius of cutter compensation entry arc is not greater than the tool radius" msgstr "" -#: src/hal/utils/scope_horiz.c:1181 -#: src/emc/usr_intf/pncconf/pncconf.glade:1953 -#: src/emc/usr_intf/pncconf/pncconf.glade:2825 -#: src/emc/usr_intf/pncconf/pncconf.glade:3706 -#: src/emc/usr_intf/pncconf/pncconf.glade:4587 -msgid "Sec" -msgstr "секунды" - -#: src/hal/utils/scope_horiz.c:1198 -#: src/emc/usr_intf/stepconf/stepconf.glade:3664 -#: src/emc/usr_intf/stepconf/stepconf.glade:4040 -#: src/emc/usr_intf/pncconf/pncconf.glade:8268 -#: src/emc/usr_intf/pncconf/pncconf.glade:8281 -#: src/emc/usr_intf/pncconf/pncconf.glade:8458 -msgid "Hz" -msgstr "Гц" +#: src/emc/rs274ngc/interp_convert.cc:882 +#: src/emc/rs274ngc/interp_convert.cc:892 src/emc/rs274ngc/interp_queue.cc:696 +msgid "" +"Arc move in concave corner cannot be reached by the tool without gouging" +msgstr "Арка в вогнутом угле не может быть достигнута инструментом без зареза" -#: src/hal/utils/scope_horiz.c:1201 -msgid "KHz" -msgstr "КГц" +#: src/emc/rs274ngc/interp_convert.cc:918 +msgid "Arc to arc motion is invalid because the arcs have the same center" +msgstr "Переход из арки в арку неверен, так как арки имеют общий центр" -#: src/hal/utils/scope_horiz.c:1205 -msgid "Mhz" +#: src/emc/rs274ngc/interp_convert.cc:921 +msgid "" +"Arc to arc motion makes a corner the compensated tool can't fit in without " +"gouging" msgstr "" +"Переход от арки к арке делает угол в который скомпенсированный инструмент не " +"может проникнуть без зареза" -#: src/hal/utils/scope_vert.c:403 src/hal/utils/scope_vert.c:1258 +#: src/emc/rs274ngc/interp_convert.cc:1053 +#: src/emc/rs274ngc/interp_convert.cc:1057 +#: src/emc/rs274ngc/interp_convert.cc:1061 +#: src/emc/rs274ngc/interp_convert.cc:3945 +#: src/emc/rs274ngc/interp_convert.cc:3948 +#: src/emc/rs274ngc/interp_convert.cc:3951 src/emc/rs274ngc/interp_find.cc:97 #, c-format -msgid "" -"Offset\n" -"%s" +msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" msgstr "" -"Отступ\n" -"%s" - -#: src/hal/utils/scope_vert.c:618 -msgid "Gain" -msgstr "Усиление" -#: src/hal/utils/scope_vert.c:630 src/hal/utils/scope_trig.c:252 -msgid "Pos" +#: src/emc/rs274ngc/interp_convert.cc:1563 +msgid "Cannot change control mode with cutter radius compensation on" msgstr "" +"Не могу сменить режим управления с включенной компенсацией радиуса " +"инструмента" -#: src/hal/utils/scope_vert.c:644 tcl/ngcgui_ttt.tcl:214 -#: src/emc/usr_intf/pncconf/pncconf.glade:57147 -msgid "Scale" -msgstr "Масштаб" - -#: src/hal/utils/scope_vert.c:657 -msgid "Chan Off" +#: src/emc/rs274ngc/interp_convert.cc:1676 +msgid "Cannot change coordinate systems with cutter radius compensation on" msgstr "" +"Не могу изменить координатную систему с включенной компенсацией радиуса " +"инструмента" -#: src/hal/utils/scope_vert.c:713 -msgid "Set Offset" -msgstr "Установить отступ" - -#: src/hal/utils/scope_vert.c:714 +#: src/emc/rs274ngc/interp_convert.cc:1920 #, c-format -msgid "" -"Set the vertical offset\n" -"for channel %d." -msgstr "" +msgid "G%d.1 with no D word" +msgstr "G%d.1 без D слова" -#: src/hal/utils/scope_vert.c:734 -msgid "AC Coupled" -msgstr "" +#: src/emc/rs274ngc/interp_convert.cc:1923 +#, c-format +msgid "G%d.1 with L word, but plane is not G18" +msgstr "G%d.1 с L словом, но плоскость не G18" -#: src/hal/utils/scope_vert.c:769 src/hal/utils/scope_vert.c:1171 -#: src/hal/utils/scope_trig.c:367 tcl/bin/emccalib.tcl:229 -#: tcl/bin/genedit.tcl:294 tcl/bin/halconfig.tcl:103 tcl/bin/halconfig.tcl:684 -#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:260 -#: tcl/bin/pickconfig.tcl:369 tcl/mini.tcl:1457 tcl/mini.tcl:2938 -#: tcl/mini.tcl:3110 tcl/tklinuxcnc.tcl:162 tcl/tklinuxcnc.tcl:213 -#: tcl/tklinuxcnc.tcl:420 tcl/tklinuxcnc.tcl:1339 tcl/tklinuxcnc.tcl:1408 -#: tcl/tklinuxcnc.tcl:1439 tcl/tklinuxcnc.tcl:1470 tcl/tklinuxcnc.tcl:2103 -#: src/emc/usr_intf/axis/scripts/axis.py:1404 -#: src/emc/usr_intf/axis/scripts/axis.py:1459 -#: src/emc/usr_intf/axis/scripts/axis.py:1646 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:720 -msgid "Cancel" -msgstr "Отмена" +#: src/emc/rs274ngc/interp_convert.cc:1934 +#, c-format +msgid "G%d requires D word to be a whole number" +msgstr "G%d требует D слово как целое число" -#: src/hal/utils/scope_vert.c:849 -msgid "Too many channels" -msgstr "Слишком много каналов" +#: src/emc/rs274ngc/interp_convert.cc:1941 +#, c-format +msgid "G%d with lathe tool, but plane is not G18" +msgstr "G%d с токарным инструментом, но плоскость не G18" -#: src/hal/utils/scope_vert.c:850 -msgid "" -"You cannot add another channel.\n" -"\n" -"Either turn off one or more channels, or shorten\n" -"the record length to allow for more channels" +#: src/emc/rs274ngc/interp_convert.cc:2340 +#, fuzzy +msgid "Cannot set reference point with cutter compensation in effect" msgstr "" +"Не могу установить выход движения при включенной компенсации радиуса " +"инструмента" -#: src/hal/utils/scope_vert.c:1026 -msgid "Select Channel Source" +#: src/emc/rs274ngc/interp_convert.cc:2859 +#, c-format +msgid "gen_restore G20/G21 failed: '%s'" msgstr "" -#: src/hal/utils/scope_vert.c:1027 +#: src/emc/rs274ngc/interp_convert.cc:2907 #, c-format msgid "" -"Select a pin, signal, or parameter\n" -"as the source for channel %d." +"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" msgstr "" -#: src/hal/utils/scope_vert.c:1059 -msgid "Pins" -msgstr "Ножки" - -#: src/hal/utils/scope_vert.c:1060 -msgid "Signals" -msgstr "Сигналы" - -#: src/hal/utils/scope_vert.c:1061 -msgid "Parameters" -msgstr "Параметры" - -#: src/hal/utils/scope_trig.c:110 +#: src/emc/rs274ngc/interp_convert.cc:2908 #, c-format -msgid "Falling" +msgid "BUG: restore from level %d !?" msgstr "" -#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:275 +#: src/emc/rs274ngc/interp_convert.cc:2909 #, c-format -msgid "Rising" +msgid "BUG: restore to level %d !?" msgstr "" -#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:283 -msgid "" -"Source\n" -"None" +#: src/emc/rs274ngc/interp_convert.cc:2928 +#, c-format +msgid "M7x: restore_settings G20/G21 failed: '%s'" msgstr "" -#: src/hal/utils/scope_trig.c:124 +#: src/emc/rs274ngc/interp_convert.cc:2946 #, c-format -msgid "" -"Source\n" -"Chan %2d" +msgid "M7x: restore_settings failed executing: '%s': %s" msgstr "" -#: src/hal/utils/scope_trig.c:199 tcl/tklinuxcnc.tcl:827 -#: src/emc/usr_intf/touchy/touchy.glade:2469 -msgid "Auto" -msgstr "Авто" - -#: src/hal/utils/scope_trig.c:201 -msgid "Force" +#: src/emc/rs274ngc/interp_convert.cc:3005 +#, c-format +msgid "Failed to restore interp state on abort '%s': %s" msgstr "" -#: src/hal/utils/scope_trig.c:235 src/hal/utils/scope_trig.c:269 -msgid "Level" +#: src/emc/rs274ngc/interp_convert.cc:3069 +msgid "No valid P word with M62" msgstr "" -#: src/hal/utils/scope_trig.c:303 -msgid "Trigger Source" +#: src/emc/rs274ngc/interp_convert.cc:3072 +msgid "No valid P word with M63" msgstr "" -#: src/hal/utils/scope_trig.c:304 -msgid "Select a channel to use for triggering." +#: src/emc/rs274ngc/interp_convert.cc:3075 +msgid "No valid P word with M64" msgstr "" -#: src/hal/utils/scope_trig.c:327 -msgid "Chan" -msgstr "Канал" - -#: src/hal/utils/scope_trig.c:328 -msgid "Source" +#: src/emc/rs274ngc/interp_convert.cc:3078 +msgid "No valid P word with M65" msgstr "" -#: src/emc/motion/control.c:261 -msgid "Unexpected realtime delay: check dmesg for details." +#: src/emc/rs274ngc/interp_convert.cc:3111 +msgid "invalid P-word with M66" msgstr "" -#: src/emc/motion/control.c:263 -#, c-format -msgid "" -"\n" -"In recent history there were\n" -"%ld, %ld, %ld, %ld, and %ld\n" -"elapsed clocks between calls to the motion controller.\n" +#: src/emc/rs274ngc/interp_convert.cc:3126 +msgid "Cannot wait for digital input with cutter radius compensation on" msgstr "" +"Не могу ждать цифровой вход при включенной компенсации радиуса инструмента" -#: src/emc/motion/control.c:268 -#, c-format -msgid "" -"This time, there were %ld which is so anomalously\n" -"large that it probably signifies a problem with your\n" -"realtime configuration. For the rest of this run of\n" -"EMC, this message will be suppressed.\n" -"\n" +#: src/emc/rs274ngc/interp_convert.cc:3138 +msgid "Cannot wait for analog input with cutter radius compensation on" msgstr "" +"Не могу ждать аналоговый вход при включенной компенсации радиуса инструмента" -#: src/emc/motion/control.c:384 -msgid "G38.4 move finished without breaking contact." +#: src/emc/rs274ngc/interp_convert.cc:3152 +msgid "Invalid analog index with M67" msgstr "" -#: src/emc/motion/control.c:387 -msgid "G38.2 move finished without making contact." +#: src/emc/rs274ngc/interp_convert.cc:3157 +msgid "Invalid analog index with M68" msgstr "" -#: src/emc/motion/control.c:401 -msgid "Probe tripped during non-probe MDI command." +#: src/emc/rs274ngc/interp_convert.cc:3188 +#, fuzzy +msgid "Need non-negative Q-word to specify tool number with M61" +msgstr "Нужно положительное Q-слово для обозначения номера инструмента с M61" + +#: src/emc/rs274ngc/interp_convert.cc:3258 +msgid "Q word with M19 requires a value > 0" msgstr "" -#: src/emc/motion/control.c:429 -msgid "Probe tripped during homing motion." -msgstr "" - -#: src/emc/motion/control.c:433 -msgid "Probe tripped during a jog." +#: src/emc/rs274ngc/interp_convert.cc:3286 +msgid "Cannot restore context from invalid stack frame - missing M70/M73?" msgstr "" -#: src/emc/motion/control.c:578 -#, c-format -msgid "fault %d during orient in progress" +#: src/emc/rs274ngc/interp_convert.cc:3327 +#: src/emc/rs274ngc/interp_convert.cc:3344 +#: src/emc/rs274ngc/interp_convert.cc:3359 +#: src/emc/rs274ngc/interp_convert.cc:3373 +#: src/emc/rs274ngc/interp_convert.cc:3387 +msgid "Cannot enable overrides with cutter radius compensation on" msgstr "" +"Не могу установить переопределения при включенной компенсации радиуса " +"инструмента" -#: src/emc/motion/control.c:718 -msgid "motion stopped by enable input" +#: src/emc/rs274ngc/interp_convert.cc:3334 +#: src/emc/rs274ngc/interp_convert.cc:3349 +#: src/emc/rs274ngc/interp_convert.cc:3364 +#: src/emc/rs274ngc/interp_convert.cc:3378 +#: src/emc/rs274ngc/interp_convert.cc:3392 +msgid "Cannot disable overrides with cutter radius compensation on" msgstr "" +"Не могу сбросить переопределения при включенной компенсации радиуса " +"инструмента" -#: src/emc/motion/control.c:741 +#: src/emc/rs274ngc/interp_convert.cc:3506 +#: src/emc/rs274ngc/interp_convert.cc:3507 +#: src/emc/rs274ngc/interp_convert.cc:3508 #, c-format -msgid "joint %d on limit switch error" +msgid "Indexing axis %c can only be moved with G0" msgstr "" -#: src/emc/motion/control.c:753 +#: src/emc/rs274ngc/interp_convert.cc:3515 +#: src/emc/rs274ngc/interp_convert.cc:3517 +#: src/emc/rs274ngc/interp_convert.cc:3519 #, c-format -msgid "joint %d amplifier fault" +msgid "Indexing axis %c can only be moved alone" msgstr "" -#: src/emc/motion/control.c:762 -#, c-format -msgid "joint %d following error" -msgstr "" +#: src/emc/rs274ngc/interp_convert.cc:3621 +#, fuzzy +msgid "Cannot probe with feed per rev mode" +msgstr "Не могу мерить с нулевой подачей" -#: src/emc/motion/control.c:1444 -#, c-format -msgid "Exceeded positive soft limit on joint %d" +#: src/emc/rs274ngc/interp_convert.cc:3669 +msgid "Cannot change retract mode with cutter radius compensation on" msgstr "" +"Не могу изменить режим возврата при включенной компенсации радиуса " +"инструмента" -#: src/emc/motion/control.c:1449 -#, c-format -msgid "Exceeded negative soft limit on joint %d" +#: src/emc/rs274ngc/interp_convert.cc:3703 +msgid "G10 L1 without offsets has no effect" msgstr "" -#: src/emc/motion/command.c:159 -#, c-format -msgid "Can't jog invalid joint number %d." +#: src/emc/rs274ngc/interp_convert.cc:3809 +msgid "Q number in G10 is not an integer" msgstr "" -#: src/emc/motion/command.c:163 -#, c-format -msgid "Can't jog joint %d further past max hard limit." +#: src/emc/rs274ngc/interp_convert.cc:3810 +msgid "Invalid tool orientation" msgstr "" -#: src/emc/motion/command.c:168 -#, c-format -msgid "Can't jog joint %d further past min hard limit." -msgstr "" +#: src/emc/rs274ngc/interp_convert.cc:3933 +msgid "I J words not allowed with G10 L2" +msgstr "I J не разрешены вместе с G10 L2" -#: src/emc/motion/command.c:174 -#, c-format -msgid "Can't jog joint %d further past max soft limit." +#: src/emc/rs274ngc/interp_convert.cc:3954 +#, fuzzy +msgid "" +"Cannot change the active coordinate system with cutter radius compensation on" msgstr "" +"Не могу изменить координатную систему с включенной компенсацией радиуса " +"инструмента" -#: src/emc/motion/command.c:179 -#, c-format -msgid "Can't jog joint %d further past min soft limit." -msgstr "" +#: src/emc/rs274ngc/interp_convert.cc:3962 +#, fuzzy +msgid "R not allowed in G10 L20" +msgstr "I J не разрешены вместе с G10 L2" -#: src/emc/motion/command.c:237 -#, c-format -msgid "%s move on line %d would exceed joint %d's positive limit" -msgstr "" +#: src/emc/rs274ngc/interp_convert.cc:4550 +#, fuzzy +msgid "Spindle not turning in G33" +msgstr "Шпиндель не крутится при g86" -#: src/emc/motion/command.c:240 -#, c-format -msgid "%s move in MDI would exceed joint %d's positive limit" -msgstr "" +#: src/emc/rs274ngc/interp_convert.cc:4560 +#, fuzzy +msgid "Spindle not turning in G33.1" +msgstr "Шпиндель не крутится при g86" -#: src/emc/motion/command.c:247 -#, c-format -msgid "%s move on line %d would exceed joint %d's negative limit" +#: src/emc/rs274ngc/interp_convert.cc:4603 +msgid "BUG: An axis incorrectly moved along with an indexer" msgstr "" -#: src/emc/motion/command.c:250 -#, c-format -msgid "%s move in MDI would exceed joint %d's negative limit" +#: src/emc/rs274ngc/interp_convert.cc:4616 +msgid "BUG: trying to index incorrect axis" msgstr "" -#: src/emc/motion/command.c:500 -msgid "all joints must be homed before going into coordinated mode" +#: src/emc/rs274ngc/interp_convert.cc:4708 +msgid "Cannot use G76 threading cycle with cutter radius compensation on" msgstr "" +"Не могу использовать цикл резьбы G76 при включенной компенсации радиуса " +"инструмента" -#: src/emc/motion/command.c:521 -msgid "all joints must be homed before going into teleop mode" +#: src/emc/rs274ngc/interp_convert.cc:4711 +msgid "In G76, I must not be 0" msgstr "" -#: src/emc/motion/command.c:675 src/emc/motion/command.c:741 -#: src/emc/motion/command.c:814 -msgid "Can't jog joint in coordinated mode." -msgstr "" +#: src/emc/rs274ngc/interp_convert.cc:4713 +msgid "In G76, J must be greater than 0" +msgstr "В G76, J дожно быть больше 0" -#: src/emc/motion/command.c:680 src/emc/motion/command.c:746 -#: src/emc/motion/command.c:819 -msgid "Can't jog joint when not enabled." -msgstr "" +#: src/emc/rs274ngc/interp_convert.cc:4715 +msgid "In G76, K must be greater than J" +msgstr "В G76, K дожно быть больше J" -#: src/emc/motion/command.c:685 src/emc/motion/command.c:824 -msgid "Can't jog any joints while homing." +#: src/emc/rs274ngc/interp_convert.cc:4858 +msgid "" +"Length of cutter compensation entry move is not greater than the tool radius" msgstr "" -#: src/emc/motion/command.c:751 -msgid "Can't jog any joint while homing." -msgstr "" +#: src/emc/rs274ngc/interp_convert.cc:5077 +msgid "Zero degree inside corner is invalid for cutter compensation" +msgstr "Нулевой внутренний угол неверен для компенсации радиуса инструмента" -#: src/emc/motion/command.c:881 -msgid "need to be enabled, in coord mode for linear move" +#: src/emc/rs274ngc/interp_convert.cc:5115 +#: src/emc/rs274ngc/interp_convert.cc:5123 +msgid "" +"Arc to straight motion makes a corner the compensated tool can't fit in " +"without gouging" msgstr "" +"Переход от арки к линейному ходу делает угол, который не может быть исполнен " +"без зареза при включенной компенсации радиуса инструмента" -#: src/emc/motion/command.c:891 -msgid "can't do linear move with limits exceeded" +#: src/emc/rs274ngc/interp_convert.cc:5207 +msgid "Cannot change tools with cutter radius compensation on" msgstr "" +"Не могу менять инструмент при включенной компенсации радиуса инструмента" -#: src/emc/motion/command.c:910 -msgid "can't add linear move" +#: src/emc/rs274ngc/interp_convert.cc:5328 +msgid "Cannot change tool offset with cutter radius compensation on" msgstr "" +"Не могу изменять отступ инструмента при включенной компенсации радиуса " +"инструмента" -#: src/emc/motion/command.c:930 -msgid "need to be enabled, in coord mode for circular move" +#: src/emc/rs274ngc/interp_queue.cc:694 +#, c-format +msgid "" +"BUG: cutter compensation has generated an invalid arc with mismatched radii " +"r1 %f r2 %f\n" msgstr "" +"Ошибка: компенсация радиуса создала неверную арку с несовпадающими радиусами " +"r1 %f r2 %f\n" -#: src/emc/motion/command.c:940 -msgid "can't do circular move with limits exceeded" -msgstr "" +#: src/emc/rs274ngc/interp_queue.cc:716 +msgid "BUG: Unsupported plane in cutter compensation" +msgstr "Ошибка: неподдерживаемая плоскость для компенсации инструмента" -#: src/emc/motion/command.c:958 -msgid "can't add circular move" -msgstr "" +#: src/emc/rs274ngc/interp_queue.cc:729 +msgid "" +"Straight traverse in concave corner cannot be reached by the tool without " +"gouging" +msgstr "Прямой переход в вогнутый угол не может быть достигнут без зареза" -#: src/emc/motion/command.c:1048 -msgid "MOTION: can't STEP while already executing" -msgstr "" +#: src/emc/rs274ngc/interp_queue.cc:757 +#, c-format +msgid "BUG: Unsupported plane [%d] in cutter compensation" +msgstr "Ошибка: неподдерживаемая [%d] плоскость для компенсации инструмента" -#: src/emc/motion/command.c:1140 -msgid "can't enable motion, enable input is false" -msgstr "" +#: src/emc/rs274ngc/interp_queue.cc:771 +msgid "" +"Straight feed in concave corner cannot be reached by the tool without gouging" +msgstr "Прямой переход в вогнутый угол не может быть достигнут без зареза" -#: src/emc/motion/command.c:1213 +#: src/emc/rs274ngc/interp_cycles.cc:630 #, fuzzy -msgid "must be in joint mode to home" -msgstr "Должен быть в MDI режиме для исполнения команд MDI" - -#: src/emc/motion/command.c:1224 src/emc/motion/command.c:1235 -msgid "homing sequence already in progress" -msgstr "" +msgid "Cannot feed with zero feed rate" +msgstr "Не могу делать G1 с нулевой подачей" -#: src/emc/motion/command.c:1233 -msgid "homing already in progress" -msgstr "" +#: src/emc/rs274ngc/interp_cycles.cc:631 +#, fuzzy +msgid "Cannot use inverse time feed with canned cycles" +msgstr "Не могу делать замер с подачей инверсного времени" -#: src/emc/motion/command.c:1263 +#: src/emc/rs274ngc/interp_cycles.cc:632 #, fuzzy -msgid "must be in joint mode or disabled to unhome" -msgstr "Должен быть в MDI режиме для исполнения команд MDI" +msgid "Cannot use canned cycles with cutter compensation on" +msgstr "Нельзя менять плоскости при включенной компенсации радиуса" -#: src/emc/motion/command.c:1275 src/emc/motion/command.c:1298 -#, c-format -msgid "Cannot unhome while homing, joint %d" +#: src/emc/rs274ngc/interp_cycles.cc:829 +msgid "G17 canned cycle is not possible on a machine without Z axis" msgstr "" -#: src/emc/motion/command.c:1279 src/emc/motion/command.c:1302 -#, c-format -msgid "Cannot unhome while moving, joint %d" +#: src/emc/rs274ngc/interp_cycles.cc:1015 +msgid "G17.1 canned cycle is not possible on a machine without W axis" msgstr "" -#: src/emc/motion/command.c:1307 -#, c-format -msgid "Cannot unhome inactive joint %d" +#: src/emc/rs274ngc/interp_cycles.cc:1231 +msgid "G19 canned cycle is not possible on a machine without X axis" msgstr "" -#: src/emc/motion/command.c:1311 -#, c-format -msgid "Cannot unhome invalid joint %d (max %d)" +#: src/emc/rs274ngc/interp_cycles.cc:1399 +msgid "G19.1 canned cycle is not possible on a machine without U axis" msgstr "" -#: src/emc/motion/command.c:1338 -msgid "need to be enabled, in coord mode for probe move" +#: src/emc/rs274ngc/interp_cycles.cc:1624 +msgid "G18 canned cycle is not possible on a machine without Y axis" msgstr "" -#: src/emc/motion/command.c:1348 -msgid "can't do probe move with limits exceeded" +#: src/emc/rs274ngc/interp_cycles.cc:1791 +msgid "G18.1 canned cycle is not possible on a machine without V axis" msgstr "" -#: src/emc/motion/command.c:1362 -msgid "Probe is already clear when starting G38.4 or G38.5 move" -msgstr "" +#: src/emc/rs274ngc/interp_find.cc:170 +msgid "Cannot use polar coordinates with G53" +msgstr "Нельзя использовать полярные координаты с G53" -#: src/emc/motion/command.c:1364 -msgid "Probe is already tripped when starting G38.2 or G38.3 move" +#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 +#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 +#: src/emc/rs274ngc/interp_find.cc:347 +msgid "Cannot specify X or Y words with polar coordinate" msgstr "" -#: src/emc/motion/command.c:1376 -msgid "can't add probe move" +#: src/emc/rs274ngc/interp_find.cc:272 +msgid "Must specify angle in polar coordinate if at the origin" msgstr "" -#: src/emc/motion/command.c:1400 -msgid "need to be enabled, in coord mode for rigid tap move" +#: src/emc/rs274ngc/interp_find.cc:338 +msgid "" +"Incremental motion with polar coordinates is indeterminate when at the origin" msgstr "" -#: src/emc/motion/command.c:1410 -msgid "can't do rigid tap move with limits exceeded" +#: src/emc/rs274ngc/interp_find.cc:348 +msgid "G91 motion with polar coordinates is indeterminate when at the origin" msgstr "" -#: src/emc/motion/command.c:1421 -msgid "can't add rigid tap move" +#: src/emc/rs274ngc/interp_find.cc:720 +#, c-format +msgid "Requested tool %d not found in the tool table" msgstr "" -#: src/emc/motion/command.c:1435 -msgid "need to be enabled, in teleop mode for teleop move" +#: src/emc/rs274ngc/interp_internal.cc:161 +msgid "Cannot use polar coordinate on a machine lacking X or Y axes" msgstr "" -#: src/emc/motion/command.c:1605 -#, c-format -msgid "joint %d: too many compensation entries" +#: src/emc/rs274ngc/interp_internal.cc:162 +msgid "Cannot use polar coordinate except in G17 plane" msgstr "" -#: src/emc/motion/command.c:1611 -#, c-format -msgid "joint %d: compensation values must increase" +#: src/emc/rs274ngc/interp_internal.cc:163 +msgid "Cannot specify both polar coordinate and X word" msgstr "" -#: src/emc/motion/command.c:1640 -#, c-format -msgid "unrecognized command %d" +#: src/emc/rs274ngc/interp_internal.cc:164 +msgid "Cannot specify both polar coordinate and Y word" msgstr "" -#: src/emc/motion/motion.c:185 -msgid "MOTION: hal_init() failed\n" +#: src/emc/rs274ngc/interp_internal.cc:185 +#: src/emc/rs274ngc/interp_internal.cc:199 +#: src/emc/rs274ngc/interp_internal.cc:214 +msgid "Polar coordinates can only be used for motion" msgstr "" -#: src/emc/motion/motion.c:190 +#: src/emc/rs274ngc/interp_read.cc:1150 src/emc/rs274ngc/interp_read.cc:1154 #, c-format -msgid "MOTION: num_joints is %d, must be between 1 and %d\n" -msgstr "" +msgid "Bad character '\\%03o' used" +msgstr "Встречен плохой символ '\\%03o'" -#: src/emc/motion/motion.c:197 +#: src/emc/rs274ngc/interp_read.cc:1154 #, c-format -msgid "MOTION: num_dio is %d, must be between 1 and %d\n" -msgstr "" +msgid "Bad character '%c' used" +msgstr "Встречен плохой символ '\\%c'" -#: src/emc/motion/motion.c:204 -#, c-format -msgid "MOTION: num_aio is %d, must be between 1 and %d\n" -msgstr "" +#: src/emc/rs274ngc/interp_read.cc:1678 +#, fuzzy +msgid "Left bracket missing after 'while'" +msgstr "Левая скобка отсутствует после слэша в atan" -#: src/emc/motion/motion.c:212 -msgid "MOTION: init_hal_io() failed\n" -msgstr "" +#: src/emc/rs274ngc/interp_read.cc:1693 +#, fuzzy +msgid "Left bracket missing after 'repeat'" +msgstr "Левая скобка отсутствует после имени унарной операции" -#: src/emc/motion/motion.c:221 -msgid "MOTION: init_comm_buffers() failed\n" +#: src/emc/rs274ngc/interp_read.cc:1708 +#, fuzzy +msgid "Left bracket missing after 'if'" +msgstr "Левая скобка отсутствует после слэша в atan" + +#: src/emc/rs274ngc/interp_read.cc:1723 +#, fuzzy +msgid "Left bracket missing after 'elseif'" +msgstr "Левая скобка отсутствует после слэша в atan" + +#: src/emc/rs274ngc/interp_read.cc:1926 +#, fuzzy +msgid "Cannot read current position with cutter radius compensation on" msgstr "" +"Не могу установить выход движения при включенной компенсации радиуса " +"инструмента" -#: src/emc/motion/motion.c:229 -msgid "MOTION: init_threads() failed\n" +#: src/emc/rs274ngc/interp_read.cc:1941 +#, fuzzy +msgid "Expected # reading parameter" +msgstr "Раскрыть параметры" + +#: src/emc/rs274ngc/interp_read.cc:1943 +msgid "Expected ] reading bracketed parameter" msgstr "" -#: src/emc/motion/motion.c:254 +#: src/emc/rs274ngc/interp_read.cc:2615 #, c-format -msgid "MOTION: hal_stop_threads() failed, returned %d\n" +msgid "bad number format (conversion failed) parsing '%s'" msgstr "" -#: src/emc/motion/motion.c:260 +#: src/emc/rs274ngc/interp_read.cc:2616 #, c-format -msgid "MOTION: rtapi_shmem_delete() failed, returned %d\n" +msgid "bad number format (trailing characters) parsing '%s'" msgstr "" -#: src/emc/motion/motion.c:266 -#, c-format -msgid "MOTION: hal_exit() failed, returned %d\n" +#: src/emc/rs274ngc/interp_read.cc:2706 +msgid "Calculation resulted in 'not a number'" msgstr "" -#: src/emc/motion/motion.c:289 -msgid "MOTION: emcmot_hal_data malloc failed\n" +#: src/emc/rs274ngc/interp_read.cc:2708 +msgid "Calculation resulted in 'infinity'" msgstr "" -#: src/emc/motion/motion.c:597 +#: src/emc/rs274ngc/interp_read.cc:3001 #, c-format -msgid "MOTION: joint %d pin/param export failed\n" +msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" msgstr "" -#: src/emc/motion/homing.c:80 src/emc/motion/homing.c:748 +#: src/emc/rs274ngc/interp_read.cc:3113 +msgid "Multiple U words on one line" +msgstr "Много U на одной строке" + +#: src/emc/rs274ngc/interp_read.cc:3129 +msgid "Multiple V words on one line" +msgstr "Много V на одной строке" + +#: src/emc/rs274ngc/interp_read.cc:3145 +msgid "Multiple W words on one line" +msgstr "Много W на одной строке" + +#: src/emc/rs274ngc/interp_o_word.cc:97 #, c-format -msgid "hit limit in home state %d" +msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" msgstr "" -#: src/emc/motion/homing.c:90 +#: src/emc/rs274ngc/interp_o_word.cc:722 +#, fuzzy, c-format +msgid "%d: not in a subroutine definition: '%s'" +msgstr "Вне определения подпрогаммы" + +#: src/emc/rs274ngc/interp_o_word.cc:759 src/emc/rs274ngc/interp_o_word.cc:809 #, c-format -msgid "end of move in home state %d" +msgid "%d: duplicate O-word label: '%s' - defined in line %d" msgstr "" -#: src/emc/motion/homing.c:185 +#: src/emc/rs274ngc/interp_o_word.cc:862 #, c-format -msgid "unknown state '%d' during homing sequence" +msgid "%d: duplicate O-word label - already defined in line %d: '%s'" msgstr "" -#: src/emc/motion/homing.c:246 -msgid "Cannot home while shared home switch is closed" +#: src/emc/rs274ngc/interp_o_word.cc:886 src/emc/rs274ngc/interp_o_word.cc:944 +#: src/emc/rs274ngc/interp_o_word.cc:978 src/emc/rs274ngc/interp_o_word.cc:996 +#: src/emc/rs274ngc/interp_o_word.cc:1013 +#: src/emc/rs274ngc/interp_o_word.cc:1038 +#, c-format +msgid "%d: undefined O-word label: '%s'" msgstr "" -#: src/emc/motion/homing.c:290 -msgid "" -"invalid homing config: non-zero LATCH_VEL needs either SEARCH_VEL or " -"USE_INDEX" +#: src/emc/rs274ngc/interp_o_word.cc:889 src/emc/rs274ngc/interp_o_word.cc:947 +#, c-format +msgid "%d: no matching 'if' label: '%s' (found '%s' in line %d)" msgstr "" -#: src/emc/motion/homing.c:299 -msgid "invalid homing config: non-zero SEARCH_VEL needs LATCH_VEL" +#: src/emc/rs274ngc/interp_o_word.cc:981 +#, c-format +msgid "%d: no matching label: '%s' (found '%s' in line %d): '%s'" msgstr "" -#: src/emc/motion/homing.c:447 -msgid "Home switch inactive before start of backoff move" +#: src/emc/rs274ngc/interp_o_word.cc:999 src/emc/rs274ngc/interp_o_word.cc:1016 +#, c-format +msgid "%d: no matching while/do label: '%s' (found '%s' in line %d)" msgstr "" -#: src/emc/motion/homing.c:495 -msgid "Home switch active before start of latch move" +#: src/emc/rs274ngc/interp_o_word.cc:1042 +#, c-format +msgid "%d: no matching label: '%s' (found '%s' in line %d)" msgstr "" -#: src/emc/motion/homing.c:551 -msgid "Home switch inactive before start of latch move" -msgstr "" +#: src/emc/rs274ngc/interp_namedparams.cc:166 +#, c-format +msgid "Named parameter #<%s> not defined" +msgstr "Поименованный параметр #<%s> не определен" -#: src/emc/motion/homing.c:797 +#: src/emc/rs274ngc/interp_namedparams.cc:196 +#, fuzzy, c-format +msgid "cant open ini file '%s'" +msgstr "не могу открыть %s" + +#: src/emc/rs274ngc/interp_namedparams.cc:213 +#, fuzzy, c-format +msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" +msgstr "Поименованный параметр #<%s> не определен" + +#: src/emc/rs274ngc/interp_namedparams.cc:237 #, c-format -msgid "unknown state '%d' during homing" +msgid "fetch_hal_param: hal_init(%s): %d" msgstr "" -#: tcl/bin/emccalib.tcl:80 -#, fuzzy -msgid "LinuxCNC Servo Axis Calibration" -msgstr "Калибровка сервоприводов" +#: src/emc/rs274ngc/interp_namedparams.cc:238 +#, c-format +msgid "fetch_hal_param: hal_ready(): %d" +msgstr "" -#: tcl/bin/emccalib.tcl:90 -msgid "Save To File" -msgstr "Сохранить в файл" +#: src/emc/rs274ngc/interp_namedparams.cc:419 +#, c-format +msgid "Internal error: Could not assign #<%s>" +msgstr "" -#: tcl/bin/emccalib.tcl:106 tcl/bin/genedit.tcl:77 tcl/bin/halconfig.tcl:151 -#: tcl/bin/halshow.tcl:85 tcl/mini.tcl:2516 tcl/tklinuxcnc.tcl:719 -#: tcl/ngcgui.tcl:549 -msgid "File" -msgstr "Файл" +#: src/emc/rs274ngc/interp_namedparams.cc:427 +#, c-format +msgid "Cannot assign to read-only parameter #<%s>" +msgstr "" -#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:231 tcl/bin/halconfig.tcl:153 -#: tcl/mini.tcl:3558 src/emc/usr_intf/touchy/touchy.glade:2420 -msgid "Refresh" -msgstr "Перечитать" +#: src/emc/rs274ngc/interp_namedparams.cc:731 +#, c-format +msgid "BUG: lookup_named_param(%s): unhandled index=%fn" +msgstr "" -#: tcl/bin/emccalib.tcl:110 tcl/bin/genedit.tcl:82 tcl/bin/halconfig.tcl:155 -#: tcl/mini.tcl:2535 -msgid "Save" -msgstr "Сохранить" +#: src/emc/rs274ngc/rs274ngc_pre.cc:1407 src/emc/rs274ngc/rs274ngc_pre.cc:1482 +msgid "Queue is not empty after tool change" +msgstr "Очередь не пуста после смены инструмента" -#: tcl/bin/emccalib.tcl:159 tcl/bin/halconfig.tcl:623 -#, tcl-format -msgid "Tune %d" -msgstr "Настроить %d" +#: src/emc/rs274ngc/rs274ngc_pre.cc:1786 +#, fuzzy, c-format +msgid "Unable to open parameter file: '%s'" +msgstr "Не могу открыть файл" -#: tcl/bin/emccalib.tcl:160 tcl/bin/halconfig.tcl:628 -msgid "INI Name" -msgstr "Название в INI" +#: src/emc/rs274ngc/rs274ngc_return.hh:19 +msgid "A file is already open" +msgstr "Файл уже открыт" -#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:629 -msgid "HAL's Value" -msgstr "Значение в HAL" +#: src/emc/rs274ngc/rs274ngc_return.hh:21 +#, fuzzy +msgid "All axes missing with g52 or g92" +msgstr "Все оси пролетают с g92" -#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:631 -msgid "Next Value" -msgstr "Следующее значение" +#: src/emc/rs274ngc/rs274ngc_return.hh:22 +msgid "All axes missing with motion code" +msgstr "Все оси пролетают с кодом движения" -#: tcl/bin/emccalib.tcl:225 tcl/bin/halconfig.tcl:680 -#: tcl/bin/halconfig.tcl:731 -msgid "Test" -msgstr "Проверка" +#: src/emc/rs274ngc/rs274ngc_return.hh:23 +msgid "Arc radius too small to reach end point" +msgstr "радиус арки слишком мал для завершения" -#: tcl/bin/emccalib.tcl:358 tcl/bin/halconfig.tcl:883 -#, tcl-format -msgid "" -"The HAL parameter \n" -" %s \n" -" has changed. \n" -" Really quit?" -msgstr "" -"Параметр HAL %s был изменен.\n" -"Действительно выходим?" +#: src/emc/rs274ngc/rs274ngc_return.hh:24 +msgid "Argument to acos out of range" +msgstr "Аргумент вне диапазона для acos" -#: tcl/bin/emccalib.tcl:383 tcl/bin/halconfig.tcl:1170 -msgid "" -"Not permitted to save here.\n" -"\n" -" You need to copy a configuration to your home directory and work there." -msgstr "" -"Нет разрешения на запись.\n" -"Скопируйте конфигурацию к себе и работайте там." +#: src/emc/rs274ngc/rs274ngc_return.hh:25 +msgid "Argument to asin out of range" +msgstr "Аргумент вне диапазона для asin" -#: tcl/bin/emccalib.tcl:457 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 -#: tcl/bin/pickconfig.tcl:544 tcl/bin/pickconfig.tcl:555 -#: tcl/scripts/Set_Coordinates.tcl:205 tcl/scripts/Set_Coordinates.tcl:228 -#, tcl-format -msgid "can't save %s" -msgstr "нельзя сохранить %s" +#: src/emc/rs274ngc/rs274ngc_return.hh:26 +msgid "Attempt to divide by zero" +msgstr "Попытка деления на ноль" -#: tcl/bin/emcdebug.tcl:166 tcl/bin/emcdebug.tcl:177 -#, fuzzy -msgid "LinuxCNC Debug" -msgstr "Отладка EMC" +#: src/emc/rs274ngc/rs274ngc_return.hh:27 +msgid "Attempt to raise negative to non integer power" +msgstr "Попытка возвести отрицательное число в нецелую степень" -#: tcl/bin/emcdebug.tcl:185 -msgid "Invalid INI file entries" -msgstr "Ошибки в INI файле" +#: src/emc/rs274ngc/rs274ngc_return.hh:28 +msgid "Bad format unsigned integer" +msgstr "Плохой формат для натурального целого" -#: tcl/bin/emcdebug.tcl:186 -msgid "Configuration information" -msgstr "Сведения о конфигурации" +#: src/emc/rs274ngc/rs274ngc_return.hh:29 +msgid "Bad number format" +msgstr "Плохой формат числа" -#: tcl/bin/emcdebug.tcl:187 -msgid "Use of defaults" -msgstr "Использовать умолчания" +#: src/emc/rs274ngc/rs274ngc_return.hh:30 +msgid "Bug bad g code modal group 0" +msgstr "Ошибка: плохой G-код в модальной группе 0" -#: tcl/bin/emcdebug.tcl:188 -msgid "Version information" -msgstr "Сведения о версии" +#: src/emc/rs274ngc/rs274ngc_return.hh:31 +msgid "Bug code not g0 or g1" +msgstr "Ошибка: код не G0 или G1" -#: tcl/bin/emcdebug.tcl:189 -msgid "Command issuing" -msgstr "Исполнение команды" +#: src/emc/rs274ngc/rs274ngc_return.hh:32 +msgid "Bug code not g17 g18 or g19" +msgstr "Ошибка: код не G17, G18 или G19" -#: tcl/bin/emcdebug.tcl:190 -msgid "IO points" -msgstr "Точки IO" +#: src/emc/rs274ngc/rs274ngc_return.hh:33 +msgid "Bug code not g20 or g21" +msgstr "Ошибка: код не G20 или G21" -#: tcl/bin/emcdebug.tcl:191 -msgid "NML" -msgstr "NML" +#: src/emc/rs274ngc/rs274ngc_return.hh:34 +msgid "Bug code not g28 or g30" +msgstr "Ошибка: код не G28 или G30" -#: tcl/bin/emcdebug.tcl:192 -msgid "Motion time" -msgstr "Время движения" +#: src/emc/rs274ngc/rs274ngc_return.hh:35 +msgid "Bug code not g2 or g3" +msgstr "Ошибка: код не G2 или G3" -#: tcl/bin/emcdebug.tcl:193 src/emc/usr_intf/axis/scripts/debuglevel.py:42 -msgid "Interpreter" -msgstr "Интерпретатор" +#: src/emc/rs274ngc/rs274ngc_return.hh:37 +#, fuzzy +msgid "Bug code not g4 g10 g28 g30 g52 g53 or g92 series" +msgstr "Ошибка: код не G4, G10, G28, G30, G53 или G92 последовательность" -#: tcl/bin/emcdebug.tcl:194 -msgid "RCS" -msgstr "RCS" +#: src/emc/rs274ngc/rs274ngc_return.hh:38 +msgid "Bug code not g61 g61.1 or g64" +msgstr "Ошибка: код не G61, G61.1 или G64" -#: tcl/bin/emcdebug.tcl:195 -msgid "Trajectory level" -msgstr "Уровень траектории" +#: src/emc/rs274ngc/rs274ngc_return.hh:39 +msgid "Bug code not g90 or g91" +msgstr "Ошибка: код не G90 или G91" -#: tcl/bin/emcdebug.tcl:196 -msgid "Interpreter list" -msgstr "Список интерпретатора" +#: src/emc/rs274ngc/rs274ngc_return.hh:40 +msgid "Bug code not g98 or g99" +msgstr "Ошибка: код не G98 или G99" -#: tcl/bin/genedit.tcl:78 tcl/mini.tcl:2533 -msgid "New" -msgstr "Новый" +#: src/emc/rs274ngc/rs274ngc_return.hh:41 +#, fuzzy +msgid "Bug code not in g52 or g92 series" +msgstr "Ошибка: код не G92 последовательность" -#: tcl/bin/genedit.tcl:80 tcl/mini.tcl:1667 tcl/mini.tcl:2534 -#: tcl/tklinuxcnc.tcl:720 tcl/tklinuxcnc.tcl:1657 -msgid "Open..." -msgstr "Oткрыть..." +#: src/emc/rs274ngc/rs274ngc_return.hh:42 +msgid "Bug code not in range g54 to g593" +msgstr "Ошибка: код не в диапазоне от G54 до G59.3" -#: tcl/bin/genedit.tcl:84 tcl/mini.tcl:2536 -msgid "Save As..." -msgstr "Сохранить как..." +#: src/emc/rs274ngc/rs274ngc_return.hh:43 +msgid "Bug code not m0 m1 m2 m30 m60" +msgstr "Ошибка: код не M0, M1, M2, M30 или M60" -#: tcl/bin/genedit.tcl:87 tcl/bin/halconfig.tcl:165 tcl/bin/halshow.tcl:92 -#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1243 -#: tcl/ngcgui.tcl:3680 -msgid "Exit" -msgstr "Выход" +#: src/emc/rs274ngc/rs274ngc_return.hh:44 +msgid "Bug distance mode not g90 or g91" +msgstr "Ошибка: расстояние не G90 или G91" -#: tcl/bin/genedit.tcl:91 tcl/mini.tcl:2517 -msgid "Edit" -msgstr "Изменить" +#: src/emc/rs274ngc/rs274ngc_return.hh:45 +msgid "Bug function should not have been called" +msgstr "Функция не должна вызываться" -#: tcl/bin/genedit.tcl:92 tcl/mini.tcl:2543 -msgid "Cut" -msgstr "Вырезать" +#: src/emc/rs274ngc/rs274ngc_return.hh:46 +msgid "Bug in tool radius comp" +msgstr "Ошибка с компенсацией радиуса" -#: tcl/bin/genedit.tcl:94 tcl/mini.tcl:2544 -msgid "Copy" -msgstr "Копировать" - -#: tcl/bin/genedit.tcl:96 tcl/mini.tcl:2545 -msgid "Paste" -msgstr "Вставить" +#: src/emc/rs274ngc/rs274ngc_return.hh:47 +msgid "Bug plane not xy yz or xz" +msgstr "Ошибка: код не xy, yz или xz" -#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:68 -msgid "Select All" -msgstr "Выбрать всё" +#: src/emc/rs274ngc/rs274ngc_return.hh:48 +msgid "Bug side not right or left" +msgstr "Ошибка: сторона не левая или правая" -#: tcl/bin/genedit.tcl:104 tcl/bin/halconfig.tcl:192 tcl/mini.tcl:919 -#: tcl/mini.tcl:2519 tcl/tklinuxcnc.tcl:790 -msgid "Help" -msgstr "Помощь" +#: src/emc/rs274ngc/rs274ngc_return.hh:49 +msgid "Bug unknown motion code" +msgstr "Ошибка: неизвестный код движения" -#: tcl/bin/genedit.tcl:105 tcl/mini.tcl:1011 tcl/mini.tcl:2559 -#: tcl/tklinuxcnc.tcl:796 -msgid "About..." -msgstr "О программе..." +#: src/emc/rs274ngc/rs274ngc_return.hh:50 +msgid "Bug unknown operation" +msgstr "Ошибка: неизвестная операция" -#: tcl/bin/genedit.tcl:130 -msgid "Save and Reload" -msgstr "Сохранить и загрузить" +#: src/emc/rs274ngc/rs274ngc_return.hh:51 +msgid "Cannot change axis offsets with cutter radius comp" +msgstr "" +"Не могу менять отступы оси при включенной компенсации радиуса инструмента" -#: tcl/bin/genedit.tcl:133 tcl/mini.tcl:2550 -msgid "Find..." -msgstr "Найти..." +#: src/emc/rs274ngc/rs274ngc_return.hh:52 +msgid "Cannot create backup file" +msgstr "Не могу создать файл бэкапа" -#: tcl/bin/genedit.tcl:135 tcl/mini.tcl:2552 -msgid "Renumber File..." -msgstr "Перенумеровать..." +#: src/emc/rs274ngc/rs274ngc_return.hh:53 +msgid "Cannot do g1 with zero feed rate" +msgstr "Не могу делать G1 с нулевой подачей" -#: tcl/bin/genedit.tcl:140 tcl/mini.tcl:917 tcl/mini.tcl:2518 -#: tcl/tklinuxcnc.tcl:746 -msgid "Settings" -msgstr "Настройки" +#: src/emc/rs274ngc/rs274ngc_return.hh:54 +msgid "Cannot do zero repeats of cycle" +msgstr "Не могу делать ноль повторения цикла" -#: tcl/bin/genedit.tcl:141 tcl/mini.tcl:2554 -msgid "No Numbering" -msgstr "Не нумеровать" +#: src/emc/rs274ngc/rs274ngc_return.hh:55 +msgid "Cannot make arc with zero feed rate" +msgstr "Не могу делать арку с нулевой подачей" -#: tcl/bin/genedit.tcl:144 tcl/mini.tcl:2556 -msgid "Line Numbering..." -msgstr "Нумерование строк..." +#: src/emc/rs274ngc/rs274ngc_return.hh:56 +msgid "Cannot open backup file" +msgstr "Не могу открыть файл бэкапа" -#: tcl/bin/genedit.tcl:150 tcl/tklinuxcnc.tcl:768 -msgid "Scripts" -msgstr "Скрипты" +#: src/emc/rs274ngc/rs274ngc_return.hh:57 +msgid "Cannot open variable file" +msgstr "Не могу открыть файл переменных" -#: tcl/bin/genedit.tcl:177 -msgid "About TkEditor" -msgstr "О TkEditor" +#: src/emc/rs274ngc/rs274ngc_return.hh:58 +msgid "Cannot probe with cutter radius comp on" +msgstr "Не могу мерить с включенной компенсацией радиуса" -#: tcl/bin/genedit.tcl:179 -msgid "" -"TkEditor\n" -"\n" -"Simple Tcl/Tk Text Editor\n" -"\n" -"GPL Version 2" -msgstr "" -"TkEditor\n" -"\n" -"Простой Tcl/Tk текстовый редактор\n" -"\n" -"GPL версия 2" +#: src/emc/rs274ngc/rs274ngc_return.hh:59 +msgid "Cannot probe with zero feed rate" +msgstr "Не могу мерить с нулевой подачей" -#: tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 tcl/mini.tcl:1775 -#: tcl/tklinuxcnc.tcl:451 src/emc/task/emctaskmain.cc:2072 -#, c-format, tcl-format -msgid "can't open %s" -msgstr "не могу открыть %s" +#: src/emc/rs274ngc/rs274ngc_return.hh:60 +msgid "Cannot put a b in canned cycle" +msgstr "Не могу добавить B в цикл" -#: tcl/bin/genedit.tcl:267 tcl/mini.tcl:3090 -msgid "Find" -msgstr "найти" +#: src/emc/rs274ngc/rs274ngc_return.hh:61 +msgid "Cannot put a c in canned cycle" +msgstr "Не могу добавить C в цикл" -#: tcl/bin/genedit.tcl:270 -msgid "Find:" -msgstr "Найти:" +#: src/emc/rs274ngc/rs274ngc_return.hh:62 +msgid "Cannot put an a in canned cycle" +msgstr "Не могу добавить A в цикл" -#: tcl/bin/genedit.tcl:276 -msgid "Replace:" -msgstr "Заменить:" +#: src/emc/rs274ngc/rs274ngc_return.hh:63 +msgid "Cannot turn cutter radius comp on when on" +msgstr "Не могу включить компенсацию радиуса второй раз" -#: tcl/bin/genedit.tcl:282 -msgid "Find All" -msgstr "Найти все" +#: src/emc/rs274ngc/rs274ngc_return.hh:64 +msgid "Cannot use axis values with g80" +msgstr "Не могу использовать слова осей с G80" -#: tcl/bin/genedit.tcl:285 tcl/mini.tcl:3113 -msgid "Replace All" -msgstr "Заменить все" +#: src/emc/rs274ngc/rs274ngc_return.hh:65 +msgid "Cannot use axis values without a g code that uses them" +msgstr "Не могу использовать слова осей без G-кода" -#: tcl/bin/genedit.tcl:288 -msgid "Skip This" -msgstr "Пропустить" +#: src/emc/rs274ngc/rs274ngc_return.hh:66 +msgid "Cannot use g28 or g30 with cutter radius comp" +msgstr "Не могу использовать G28 или G30 с компенсацией радиуса" -#: tcl/bin/genedit.tcl:291 -msgid "Replace This" -msgstr "Заменить" +#: src/emc/rs274ngc/rs274ngc_return.hh:67 +msgid "Cannot use g53 incremental" +msgstr "Не могу использовать G53 инкрементально" -#: tcl/bin/genedit.tcl:297 -msgid "Clear" -msgstr "Очистить" +#: src/emc/rs274ngc/rs274ngc_return.hh:68 +msgid "Cannot use g53 with cutter radius comp" +msgstr "Не могу использовать G53 с компенсацией радиуса" -#: tcl/bin/genedit.tcl:422 tcl/mini.tcl:2640 -msgid "Set Line Numbering" -msgstr "Показать номера строк" +#: src/emc/rs274ngc/rs274ngc_return.hh:69 +msgid "Cannot use two g codes that both use axis values" +msgstr "Не могу использовать два G-кода использующих слова осей" -#: tcl/bin/genedit.tcl:424 tcl/mini.tcl:2644 -msgid "Increment" -msgstr "Увеличить" +#: src/emc/rs274ngc/rs274ngc_return.hh:70 +msgid "Command too long" +msgstr "Слишком длинная команда" -#: tcl/bin/genedit.tcl:426 tcl/mini.tcl:2646 -msgid "One" -msgstr "Раз" +#: src/emc/rs274ngc/rs274ngc_return.hh:71 +msgid "Current point same as end point of arc" +msgstr "Текущая точка та же, что и конец арки" -#: tcl/bin/genedit.tcl:429 tcl/mini.tcl:2648 -msgid "Two" -msgstr "Два" +#: src/emc/rs274ngc/rs274ngc_return.hh:72 +msgid "Dwell time missing with g4" +msgstr "Время P не задано для G4" -#: tcl/bin/genedit.tcl:432 tcl/mini.tcl:2650 -msgid "Five" -msgstr "Пять" +#: src/emc/rs274ngc/rs274ngc_return.hh:73 +msgid "Dwell time p word missing with g82" +msgstr "Время P не задано для G82" -#: tcl/bin/genedit.tcl:435 tcl/mini.tcl:2652 -msgid "Ten" -msgstr "Десять" +#: src/emc/rs274ngc/rs274ngc_return.hh:74 +msgid "Dwell time p word missing with g86" +msgstr "Время P не задано для G86" -#: tcl/bin/genedit.tcl:439 tcl/mini.tcl:2654 -msgid "Space" -msgstr "Пробел" +#: src/emc/rs274ngc/rs274ngc_return.hh:75 +msgid "Dwell time p word missing with g88" +msgstr "Время P не задано для G88" -#: tcl/bin/genedit.tcl:441 tcl/mini.tcl:2656 -msgid "Single Space" -msgstr "Один пробел" +#: src/emc/rs274ngc/rs274ngc_return.hh:76 +msgid "Dwell time p word missing with g89" +msgstr "Время P не задано для G89" -#: tcl/bin/genedit.tcl:444 tcl/mini.tcl:2658 -msgid "Double Space" -msgstr "Двойной пробел" +#: src/emc/rs274ngc/rs274ngc_return.hh:77 +msgid "Equal sign missing in parameter setting" +msgstr "Знак равно не найден в установке параметра" -#: tcl/bin/genedit.tcl:447 tcl/mini.tcl:2660 -msgid "Tab Space" -msgstr "Табуляция" +#: src/emc/rs274ngc/rs274ngc_return.hh:78 +msgid "F word missing with inverse time arc move" +msgstr "F слово не задано в движении с инверсным временем" -#: tcl/bin/genedit.tcl:453 -msgid "Next Number:" -msgstr "Следующий номер:" +#: src/emc/rs274ngc/rs274ngc_return.hh:79 +msgid "F word missing with inverse time g1 move" +msgstr "F слово не задано в движении с инверсным временем" -#: tcl/bin/genedit.tcl:474 tcl/mini.tcl:2668 -msgid "Renumber" -msgstr "Перенумеровать" +#: src/emc/rs274ngc/rs274ngc_return.hh:80 +msgid "File ended with no percent sign" +msgstr "Файл закончился без знака процента" -#: tcl/bin/halconfig.tcl:88 tcl/bin/halshow.tcl:33 -msgid "HAL Configuration" -msgstr "Установки HAL" +#: src/emc/rs274ngc/rs274ngc_return.hh:81 +msgid "File ended with no percent sign or program end" +msgstr "Файл закончился без знака процента или конца программы" -#: tcl/bin/halconfig.tcl:103 -msgid "Would you like to save your configuration before you exit?" -msgstr "Сохранить изменения перед выходом?" +#: src/emc/rs274ngc/rs274ngc_return.hh:82 +msgid "File name too long" +msgstr "Слишком длинное имя файла" -#: tcl/bin/halconfig.tcl:103 -msgid "Save All" -msgstr "Сохранить всё" +#: src/emc/rs274ngc/rs274ngc_return.hh:83 +msgid "G code out of range" +msgstr "G код вне дипазона" -#: tcl/bin/halconfig.tcl:103 -msgid "Save Tune" -msgstr "Сохранить настройку" +#: src/emc/rs274ngc/rs274ngc_return.hh:84 +msgid "I word given for arc in yz plane" +msgstr "I слово задано для арки на yz плоскости" -#: tcl/bin/halconfig.tcl:103 -msgid "Save as Netlist" -msgstr "Сохранить как нетлист" +#: src/emc/rs274ngc/rs274ngc_return.hh:85 +msgid "I word missing with g87" +msgstr "I слово отсутствует после g87" -#: tcl/bin/halconfig.tcl:103 -msgid "Don't Save" -msgstr "Не сохранять" +#: src/emc/rs274ngc/rs274ngc_return.hh:86 +msgid "J word given for arc in xz plane" +msgstr "J слово дано для арки в xz плоскости" -#: tcl/bin/halconfig.tcl:132 +#: src/emc/rs274ngc/rs274ngc_return.hh:87 +msgid "J word missing with g87" +msgstr "J слово отсутствует после g87" + +#: src/emc/rs274ngc/rs274ngc_return.hh:88 +msgid "K word given for arc in xy plane" +msgstr "K слово задано для арки на xy плоскости" + +#: src/emc/rs274ngc/rs274ngc_return.hh:89 +msgid "K word missing with g87" +msgstr "K слово отсутствует после g87" + +#: src/emc/rs274ngc/rs274ngc_return.hh:90 +msgid "Left bracket missing after slash with atan" +msgstr "Левая скобка отсутствует после слэша в atan" + +#: src/emc/rs274ngc/rs274ngc_return.hh:91 +msgid "Left bracket missing after unary operation name" +msgstr "Левая скобка отсутствует после имени унарной операции" + +#: src/emc/rs274ngc/rs274ngc_return.hh:92 +#, fuzzy, c-format +msgid "M code greater than 199: M%d" +msgstr "M код больше 199" + +#: src/emc/rs274ngc/rs274ngc_return.hh:93 +msgid "Mixed radius ijk format for arc" +msgstr "Смешан радиус и ijk форматы для арки" + +#: src/emc/rs274ngc/rs274ngc_return.hh:94 +msgid "Multiple a words on one line" +msgstr "Много a слов на одной строке" + +#: src/emc/rs274ngc/rs274ngc_return.hh:95 +msgid "Multiple b words on one line" +msgstr "Много b слов на одной строке" + +#: src/emc/rs274ngc/rs274ngc_return.hh:96 +msgid "Multiple c words on one line" +msgstr "Много c слов на одной строке" + +#: src/emc/rs274ngc/rs274ngc_return.hh:97 +msgid "Multiple d words on one line" +msgstr "Много d слов на одной строке" + +#: src/emc/rs274ngc/rs274ngc_return.hh:98 +msgid "Multiple f words on one line" +msgstr "Много f слов на одной строке" + +#: src/emc/rs274ngc/rs274ngc_return.hh:99 +msgid "Multiple h words on one line" +msgstr "Много h слов на одной строке" + +#: src/emc/rs274ngc/rs274ngc_return.hh:100 +msgid "Multiple i words on one line" +msgstr "Много i слов на одной строке" + +#: src/emc/rs274ngc/rs274ngc_return.hh:101 +msgid "Multiple j words on one line" +msgstr "Много j слов на одной строке" + +#: src/emc/rs274ngc/rs274ngc_return.hh:102 +msgid "Multiple k words on one line" +msgstr "Много k слов на одной строке" + +#: src/emc/rs274ngc/rs274ngc_return.hh:103 +msgid "Multiple l words on one line" +msgstr "Много l слов на одной строке" + +#: src/emc/rs274ngc/rs274ngc_return.hh:104 +msgid "Multiple p words on one line" +msgstr "Много p слов на одной строке" + +#: src/emc/rs274ngc/rs274ngc_return.hh:105 +msgid "Multiple q words on one line" +msgstr "Много q слов на одной строке" + +#: src/emc/rs274ngc/rs274ngc_return.hh:106 +msgid "Multiple r words on one line" +msgstr "Много r слов на одной строке" + +#: src/emc/rs274ngc/rs274ngc_return.hh:107 +msgid "Multiple s words on one line" +msgstr "Много s слов на одной строке" + +#: src/emc/rs274ngc/rs274ngc_return.hh:108 +msgid "Multiple t words on one line" +msgstr "Много t слов на одной строке" + +#: src/emc/rs274ngc/rs274ngc_return.hh:109 +msgid "Multiple x words on one line" +msgstr "Много x слов на одной строке" + +#: src/emc/rs274ngc/rs274ngc_return.hh:110 +msgid "Multiple y words on one line" +msgstr "Много y слов на одной строке" + +#: src/emc/rs274ngc/rs274ngc_return.hh:111 +msgid "Multiple z words on one line" +msgstr "Много z слов на одной строке" + +#: src/emc/rs274ngc/rs274ngc_return.hh:112 +msgid "Must use g0 or g1 with g53" +msgstr "Должен использовать g0 или g1 с g53" + +#: src/emc/rs274ngc/rs274ngc_return.hh:113 +msgid "Negative argument to sqrt" +msgstr "Отрицательный аргумент для sqrt" + +#: src/emc/rs274ngc/rs274ngc_return.hh:114 +msgid "Negative d word tool radius index used" +msgstr "Отрицательное d слово для индекса радиуса инструмента" + +#: src/emc/rs274ngc/rs274ngc_return.hh:115 +msgid "Negative f word used" +msgstr "Отрицательное f слово " + +#: src/emc/rs274ngc/rs274ngc_return.hh:116 +msgid "Negative g code used" +msgstr "Отрицательное g слово " + +#: src/emc/rs274ngc/rs274ngc_return.hh:117 +msgid "Negative h word used" +msgstr "Отрицательное h слово " + +#: src/emc/rs274ngc/rs274ngc_return.hh:118 +msgid "Negative l word used" +msgstr "Отрицательное l слово " + +#: src/emc/rs274ngc/rs274ngc_return.hh:119 +msgid "Negative m code used" +msgstr "Отрицательное m слово " + +#: src/emc/rs274ngc/rs274ngc_return.hh:120 +msgid "Negative or zero q value used" +msgstr "Отрицательное или нулевое q слово " + +#: src/emc/rs274ngc/rs274ngc_return.hh:121 +msgid "Negative p word used" +msgstr "Отрицательное p слово " + +#: src/emc/rs274ngc/rs274ngc_return.hh:122 +msgid "Negative spindle speed used" +msgstr "Отрицательное значение скорости шпинделя" + +#: src/emc/rs274ngc/rs274ngc_return.hh:123 +msgid "Negative tool id used" +msgstr "Отрицательный индекс инструмента " + +#: src/emc/rs274ngc/rs274ngc_return.hh:124 +msgid "Nested comment found" +msgstr "Вложенный комментарий" + +#: src/emc/rs274ngc/rs274ngc_return.hh:125 +msgid "No characters found in reading real value" +msgstr "Не найдено символов при чтении реального числа" + +#: src/emc/rs274ngc/rs274ngc_return.hh:126 +msgid "Non integer value for integer" +msgstr "Не целое число для целого аргумента" + +#: src/emc/rs274ngc/rs274ngc_return.hh:127 +msgid "Null missing after newline" +msgstr "NULL отсутствует после конца строки" + +#: src/emc/rs274ngc/rs274ngc_return.hh:128 +msgid "Parameter file out of order" +msgstr "Файл параметров не отсортирован" + +#: src/emc/rs274ngc/rs274ngc_return.hh:129 +msgid "Parameter number out of range" +msgstr "Номер параметра вне диапазона" + +#: src/emc/rs274ngc/rs274ngc_return.hh:130 +msgid "Parameter is readonly" +msgstr "Параметр только для чтения" + +#: src/emc/rs274ngc/rs274ngc_return.hh:131 +msgid "Q word missing with g83" +msgstr "Q слово отсутствует после g83" + +#: src/emc/rs274ngc/rs274ngc_return.hh:132 +msgid "Queue is not empty after probing" +msgstr "Очередь не пуста после замера" + +#: src/emc/rs274ngc/rs274ngc_return.hh:133 +msgid "R clearance plane unspecified in cycle" +msgstr "R плоскость прохода не определена для цикла" + +#: src/emc/rs274ngc/rs274ngc_return.hh:134 +msgid "R i j k words all missing for arc" +msgstr "R i j k слова не определены для арки" + +#: src/emc/rs274ngc/rs274ngc_return.hh:135 +msgid "R less than x in cycle in yz plane" +msgstr "R меньше x в цикле на yz плоскости" + +#: src/emc/rs274ngc/rs274ngc_return.hh:136 +msgid "R less than y in cycle in xz plane" +msgstr "R меньше y в цикле на xz плоскости" + +#: src/emc/rs274ngc/rs274ngc_return.hh:137 +msgid "R less than z in cycle in xy plane" +msgstr "R меньше z в цикле на xy плоскости" + +#: src/emc/rs274ngc/rs274ngc_return.hh:138 +msgid "R word with no g code that uses it" +msgstr "R слово без g кода перед ним" + +#: src/emc/rs274ngc/rs274ngc_return.hh:139 +msgid "Slash missing after first atan argument" +msgstr "Слэш отсутствует после первого аргумента atan" + +#: src/emc/rs274ngc/rs274ngc_return.hh:140 +msgid "Spindle not turning clockwise in g84" +msgstr "Шпиндель не крутится вперед при g84" + +#: src/emc/rs274ngc/rs274ngc_return.hh:141 +msgid "Spindle not turning in g86" +msgstr "Шпиндель не крутится при g86" + +#: src/emc/rs274ngc/rs274ngc_return.hh:142 +msgid "Spindle not turning in g87" +msgstr "Шпиндель не крутится при g87" + +#: src/emc/rs274ngc/rs274ngc_return.hh:143 +msgid "Spindle not turning in g88" +msgstr "Шпиндель не крутится при g88" + +#: src/emc/rs274ngc/rs274ngc_return.hh:144 +msgid "Sscanf failed" +msgstr "Sscanf не прошел" + +#: src/emc/rs274ngc/rs274ngc_return.hh:145 +msgid "Start point too close to probe point" +msgstr "Точка старта слишком близка к точке замера" + +#: src/emc/rs274ngc/rs274ngc_return.hh:146 +msgid "Too many m codes on line" +msgstr "Слишком много М-кодов на строке" + +#: src/emc/rs274ngc/rs274ngc_return.hh:147 +msgid "Pocket max too large" +msgstr "Максимум кармана слишком большой" + +#: src/emc/rs274ngc/rs274ngc_return.hh:148 +msgid "Tool radius not less than arc radius with comp" +msgstr "Радиус инструмента не меньше радиуса арки с компенсацией" + +#: src/emc/rs274ngc/rs274ngc_return.hh:149 +msgid "Two g codes used from same modal group" +msgstr "Использованы два g-кода из одной модальной группы" + +#: src/emc/rs274ngc/rs274ngc_return.hh:150 +msgid "Two m codes used from same modal group" +msgstr "Использованы два m-кода из одной модальной группы" + +#: src/emc/rs274ngc/rs274ngc_return.hh:151 +#, fuzzy, c-format +msgid "Unable to open file <%s>" +msgstr "Не могу открыть файл" + +#: src/emc/rs274ngc/rs274ngc_return.hh:152 +msgid "Unclosed comment found" +msgstr "Незавершенный комментарий" + +#: src/emc/rs274ngc/rs274ngc_return.hh:153 +msgid "Unclosed expression" +msgstr "Незавершенное выражение" + +#: src/emc/rs274ngc/rs274ngc_return.hh:154 +msgid "Unknown g code used" +msgstr "Использован неизвестный G-код" + +#: src/emc/rs274ngc/rs274ngc_return.hh:155 +#, fuzzy, c-format +msgid "Unknown m code used: M%d" +msgstr "Использован неизвестный M-код" + +#: src/emc/rs274ngc/rs274ngc_return.hh:156 +msgid "Unknown operation" +msgstr "Использована неизвестная операция" + +#: src/emc/rs274ngc/rs274ngc_return.hh:157 +msgid "Unknown operation name starting with a" +msgstr "Неизвестная операция с A" + +#: src/emc/rs274ngc/rs274ngc_return.hh:158 +msgid "Unknown operation name starting with m" +msgstr "Неизвестная операция с M" + +#: src/emc/rs274ngc/rs274ngc_return.hh:159 +msgid "Unknown operation name starting with o" +msgstr "Неизвестная операция с O" + +#: src/emc/rs274ngc/rs274ngc_return.hh:160 +msgid "Unknown operation name starting with x" +msgstr "Неизвестная операция с X" + +#: src/emc/rs274ngc/rs274ngc_return.hh:161 +msgid "Unknown word starting with a" +msgstr "Неизвестное слово на A" + +#: src/emc/rs274ngc/rs274ngc_return.hh:162 +msgid "Unknown word starting with c" +msgstr "Неизвестное слово на С" + +#: src/emc/rs274ngc/rs274ngc_return.hh:163 +msgid "Unknown word starting with e" +msgstr "Неизвестное слово на E" + +#: src/emc/rs274ngc/rs274ngc_return.hh:164 +msgid "Unknown word starting with f" +msgstr "Неизвестное слово на F" + +#: src/emc/rs274ngc/rs274ngc_return.hh:165 +msgid "Unknown word starting with l" +msgstr "Неизвестное слово на I" + +#: src/emc/rs274ngc/rs274ngc_return.hh:166 +msgid "Unknown word starting with r" +msgstr "Неизвестное слово на R" + +#: src/emc/rs274ngc/rs274ngc_return.hh:167 +msgid "Unknown word starting with s" +msgstr "Неизвестное слово на S" + +#: src/emc/rs274ngc/rs274ngc_return.hh:168 +msgid "Unknown word starting with t" +msgstr "Неизвестное слово на T" + +#: src/emc/rs274ngc/rs274ngc_return.hh:169 +msgid "Unknown word where unary operation could be" +msgstr "Неизвестное слово после унарной операции" + +#: src/emc/rs274ngc/rs274ngc_return.hh:170 +msgid "X and y words missing for arc in xy plane" +msgstr "X и y не найдены для арки на xy плоскости" + +#: src/emc/rs274ngc/rs274ngc_return.hh:171 +msgid "X and z words missing for arc in xz plane" +msgstr "X и z не найдены для арки на xz плоскости" + +#: src/emc/rs274ngc/rs274ngc_return.hh:172 +msgid "X value unspecified in yz plane canned cycle" +msgstr "X не задан для цикла на yz плоскости" + +#: src/emc/rs274ngc/rs274ngc_return.hh:173 +msgid "Y and z words missing for arc in yz plane" +msgstr "Y и z слова не заданы для арки на yz плоскости" + +#: src/emc/rs274ngc/rs274ngc_return.hh:174 +msgid "Y value unspecified in xz plane canned cycle" +msgstr "Значение Y не указано для цикла на xz плоскости" + +#: src/emc/rs274ngc/rs274ngc_return.hh:175 +msgid "Z value unspecified in xy plane canned cycle" +msgstr "Значение Z не указано для цикла на xy плоскости" + +#: src/emc/rs274ngc/rs274ngc_return.hh:176 +msgid "Zero or negative argument to ln" +msgstr "Неположительный аргумент для ln" + +#: src/emc/rs274ngc/rs274ngc_return.hh:177 +msgid "Zero radius arc" +msgstr "Арка с нулевым радиусом" + +#: src/emc/rs274ngc/rs274ngc_return.hh:178 +msgid "K word missing with g33/g33.1" +msgstr "K не указан после g33/g33.1" + +#: src/emc/rs274ngc/rs274ngc_return.hh:179 +msgid "F word used with a g33/g33.1" +msgstr "F использован для g33/g33.1" + +#: src/emc/rs274ngc/rs274ngc_return.hh:180 +msgid "Unknown operation name starting with e" +msgstr "Неизвестная операция на e" + +#: src/emc/rs274ngc/rs274ngc_return.hh:181 +msgid "Unknown operation name starting with n" +msgstr "Неизвестная операция на n" + +#: src/emc/rs274ngc/rs274ngc_return.hh:182 +msgid "Unknown operation name starting with g" +msgstr "Неизвестная операция на g" + +#: src/emc/rs274ngc/rs274ngc_return.hh:183 +msgid "Unknown operation name starting with l" +msgstr "Неизвестная операция на l" + +#: src/emc/rs274ngc/rs274ngc_return.hh:184 +msgid "Too many subroutine parameters" +msgstr "Слишком много параметров подпрограммы" + +#: src/emc/rs274ngc/rs274ngc_return.hh:185 +msgid "Too many subroutine levels" +msgstr "Слишком много уровней подпрограммы" + +#: src/emc/rs274ngc/rs274ngc_return.hh:186 +msgid "Bug: call stack underrun" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:187 +msgid "Unknown control command in o word" +msgstr "Неизвестная управляющая команда в o-слове" + +#: src/emc/rs274ngc/rs274ngc_return.hh:188 +msgid "Too many oword labels" +msgstr "Слишком много o-меток" + +#: src/emc/rs274ngc/rs274ngc_return.hh:189 +msgid "Unknown oword number" +msgstr "Использовано неизвестное О-слово" + +#: src/emc/rs274ngc/rs274ngc_return.hh:190 +msgid "Nested subroutine definition" +msgstr "Вложенное определение подпрограммы" + +#: src/emc/rs274ngc/rs274ngc_return.hh:191 +msgid "Not in subroutine definition" +msgstr "Вне определения подпрогаммы" + +#: src/emc/rs274ngc/rs274ngc_return.hh:192 +msgid "File not open" +msgstr "Файл не найден" + +#: src/emc/rs274ngc/rs274ngc_return.hh:193 +#, c-format +msgid "cannot reopen file %s - removed or renamed? (%s)" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:194 +msgid "Need tool prepared -Txx- for toolchange" +msgstr "Нужно подготовить инструмент -Txx- к замене" + +#: src/emc/rs274ngc/rs274ngc_return.hh:195 +msgid "Cannot change planes with cutter radius compensation on" +msgstr "Нельзя менять плоскости при включенной компенсации радиуса" + +#: src/emc/rs274ngc/rs274ngc_return.hh:196 +msgid "Cutter radius compensation allowed only in XY, XZ planes" +msgstr "Компенсация радиуса разрешена только на плоскостях XY и XZ" + +#: src/emc/rs274ngc/rs274ngc_return.hh:197 +msgid "P word missing with G76" +msgstr "P не указан после G76" + +#: src/emc/rs274ngc/rs274ngc_return.hh:198 +msgid "I J or K words missing with G76" +msgstr "I J или K не указаны после G76" + +#: src/emc/rs274ngc/rs274ngc_return.hh:199 +msgid "Cannot move rotary axes with G76" +msgstr "Нельзя двигать вращательные оси в G76" + +#: src/emc/rs274ngc/rs274ngc_return.hh:200 +msgid "Multiple e words on one line" +msgstr "Несколько e слов на одной строке" + +#: src/emc/rs274ngc/rs274ngc_return.hh:201 +msgid "Named parameter not terminated" +msgstr "Поименованный параметр не закрыт" + +#: src/emc/rs274ngc/rs274ngc_return.hh:202 +msgid "Out of memory" +msgstr "Память кончилась" + +#: src/emc/rs274ngc/rs274ngc_return.hh:203 +msgid "S word missing with G96" +msgstr "S не указан после G96" + +#: src/emc/rs274ngc/rs274ngc_return.hh:204 +msgid "Queue is not empty after external input" +msgstr "Очередь не пуста после внешнего ввода" + +#: src/emc/rs274ngc/rs274ngc_return.hh:205 +msgid "Can't select analog input with wait type != immediate return" +msgstr "" +"Не могу выбрать аналоговый выход с типом ожидания != немедленному возврату" + +#: src/emc/rs274ngc/rs274ngc_return.hh:206 +msgid "Zero timeout with wait type != immediate return" +msgstr "Нулевое ожидание с типом ожидания не равным немедленному возврату" + +#: src/emc/rs274ngc/rs274ngc_return.hh:207 +msgid "Invalid to select both a digital and an analog input with M66" +msgstr "Нельзя выбрать аналоговый и цифровой вход с M66" + +#: src/emc/rs274ngc/rs274ngc_return.hh:208 +msgid "Need to have either a valid P or a valid E word with M66" +msgstr "Нужно задать верное P или E для M66" + +#: src/emc/rs274ngc/rs274ngc_return.hh:209 +msgid "Q word missing with g73" +msgstr "Q не указан для g73" + +#: src/emc/rs274ngc/rs274ngc_return.hh:210 +msgid "Digital input selected out of bounds" +msgstr "Выбранный цифровой вход вне диапазона" + +#: src/emc/rs274ngc/rs274ngc_return.hh:211 +msgid "Analog input selected out of bounds" +msgstr "Аналоговый выход выбран вне диапазона" + +#: src/emc/rs274ngc/rs274ngc_return.hh:212 +msgid "W value unspecified in UV plane canned cycle" +msgstr "W не указано для цикла на UV плоскости" + +#: src/emc/rs274ngc/rs274ngc_return.hh:213 +msgid "U value unspecified in VW plane canned cycle" +msgstr "U не указано для цикла на VW плоскости" + +#: src/emc/rs274ngc/rs274ngc_return.hh:214 +msgid "V value unspecified in UW plane canned cycle" +msgstr "V значение не определено в цикле на UW плоскости" + +#: src/emc/rs274ngc/rs274ngc_return.hh:215 +msgid "R less than W in cycle in UV plane" +msgstr "R меньше W в цикле на UV плоскости" + +#: src/emc/rs274ngc/rs274ngc_return.hh:216 +msgid "R less than U in cycle in VW plane" +msgstr "R меньше U в цикле на VW плоскости" + +#: src/emc/rs274ngc/rs274ngc_return.hh:217 +msgid "R less than V in cycle in UW plane" +msgstr "R меньше V в цикле на UW плоскости" + +#: src/hal/utils/meter.c:200 +#, c-format +msgid "ERROR: '%s' is not a valid probe type\n" +msgstr "ОШИБКА: '%s' неверный тип пробника\n" + +#: src/hal/utils/meter.c:208 +#, c-format +msgid "ERROR: no pin/signal/parameter name\n" +msgstr "ОШИБКА: не имя ноги, сигнала или параметра\n" + +#: src/hal/utils/meter.c:214 +#, c-format +msgid "" +"ERROR: -s option requires a probe type and a pin/signal/parameter name\n" +msgstr "ОШИБКА: -s опция требует тип пробника и имя сигнала или входа\n" + +#: src/hal/utils/meter.c:240 tcl/tklinuxcnc.tcl:764 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6431 +msgid "Hal Meter" +msgstr "HAL-метр" + +#: src/hal/utils/meter.c:290 +msgid "_Select" +msgstr "Выбрать" + +#: src/hal/utils/meter.c:291 +msgid "E_xit" +msgstr "Выход" + +#: src/hal/utils/meter.c:339 src/hal/utils/meter.c:367 +msgid "Select Item to Probe" +msgstr "Выберите узел для показа" + +#: src/hal/utils/meter.c:669 +msgid " _Pins " +msgstr "Ножки" + +#: src/hal/utils/meter.c:670 +msgid " _Signals " +msgstr "Сигналы" + +#: src/hal/utils/meter.c:671 +msgid " Para_meters " +msgstr "Параметры" + +#: src/hal/utils/meter.c:714 +msgid "_Close" +msgstr "Закрыть" + +#: src/hal/utils/scope.c:126 +msgid "" +"Usage:\n" +" halscope [-h] [-i infile] [-o outfile] [num_samples]\n" +msgstr "" +"Использование:\n" +" halscope [-h] [-i входной файл] [-o выходной файл] [количество точек]\n" + +#: src/hal/utils/scope.c:479 src/hal/utils/scope.c:506 +msgid "Open Configuration File:" +msgstr "Открыть файл конфигурации" + +#: src/hal/utils/scope.c:540 +msgid "_Open Configuration..." +msgstr "Открыть конфигурацию..." + +#: src/hal/utils/scope.c:546 +msgid "_Save Configuration..." +msgstr "Сохранить конфигурацию..." + +#: src/hal/utils/scope.c:555 +msgid "O_pen Data File..." +msgstr "Открыть файл данных" + +#: src/hal/utils/scope.c:562 +msgid "S_ave Data File..." +msgstr "Сохранить файл данных" + +#: src/hal/utils/scope.c:571 share/axis/tcl/axis.tcl:96 +msgid "_Quit" +msgstr "Выход" + +#: src/hal/utils/scope.c:577 +msgid "_About Halscope" +msgstr "О Halscope" + +#: src/hal/utils/scope.c:583 share/axis/tcl/axis.tcl:501 +msgid "_File" +msgstr "Файл" + +#: src/hal/utils/scope.c:587 share/axis/tcl/axis.tcl:517 +msgid "_Help" +msgstr "Помощь" + +#: src/hal/utils/scope.c:646 +msgid "HAL Oscilloscope" +msgstr "HAL Осциллограф" + +#: src/hal/utils/scope.c:674 +msgid "Horizontal" +msgstr "Горизонтальный" + +#: src/hal/utils/scope.c:682 +msgid "Selected Channel" +msgstr "Выбранный канал" + +#: src/hal/utils/scope.c:688 +msgid "Run Mode" +msgstr "Режим работы" + +#: src/hal/utils/scope.c:691 +msgid "Trigger" +msgstr "Запуск" + +#: src/hal/utils/scope.c:697 +msgid "Vertical" +msgstr "Вертикальный" + +#: src/hal/utils/scope.c:705 share/axis/tcl/axis.tcl:138 +#: share/axis/tcl/axis.tcl:1269 src/emc/usr_intf/gscreen/gscreen.py:3416 +#: src/emc/usr_intf/gscreen/gscreen.py:3417 +#: src/emc/usr_intf/gscreen/gscreen.glade:2614 +msgid "Stop" +msgstr "Стоп" + +#: src/hal/utils/scope.c:708 +msgid "Normal" +msgstr "Нормальный" + +#: src/hal/utils/scope.c:711 +msgid "Single" +msgstr "Одиночный" + +#: src/hal/utils/scope.c:714 +msgid "Roll" +msgstr "Прокрутить" + +#: src/hal/utils/scope_horiz.c:130 src/emc/usr_intf/gscreen/gscreen.glade:3419 +msgid "Zoom" +msgstr "zoom" + +#: src/hal/utils/scope_horiz.c:131 +msgid " Pos " +msgstr "Поз" + +#: src/hal/utils/scope_horiz.c:164 +msgid "" +"----- Samples\n" +"at ---- KHz" +msgstr "" +"----- Точки\n" +"на ---- КГц" + +#: src/hal/utils/scope_horiz.c:464 +msgid "Realtime component not loaded" +msgstr "Компонента реального времени не загружена" + +#: src/hal/utils/scope_horiz.c:465 +msgid "" +"HALSCOPE uses a realtime component called scope_rt'\n" +"to sample signals for display. It is not currently loaded\n" +"and attempting to load it automatically failed. More information\n" +"may be available in the terminal where halscope was started.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Load the component (using 'halcmd loadrt scope_rt'), then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" +msgstr "" +"HALSCOPE uses a realtime component called scope_rt'\n" +"to sample signals for display. It is not currently loaded\n" +"and attempting to load it automatically failed. More information\n" +"may be available in the terminal where halscope was started.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Load the component (using 'halcmd loadrt scope_rt'), then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" + +#: src/hal/utils/scope_horiz.c:536 +msgid "Realtime function not linked" +msgstr "Функция не слинкована" + +#: src/hal/utils/scope_horiz.c:537 +msgid "" +"The HALSCOPE realtime sampling function\n" +"must be called from a HAL thread in to\n" +"determine the sampling rate.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Select a thread name and multiplier then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" +msgstr "" +"The HALSCOPE realtime sampling function\n" +"must be called from a HAL thread in to\n" +"determine the sampling rate.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Select a thread name and multiplier then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" + +#: src/hal/utils/scope_horiz.c:544 +msgid "Select Sample Rate" +msgstr "Выберите скорость отсчетов" + +#: src/hal/utils/scope_horiz.c:545 +msgid "" +"Select a thread name and multiplier then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" +msgstr "" +"Выберите имя очереди и множитель 'OK'\n" +"или\n" +"Нажмите 'Quit' для выхода из HALSCOPE" + +#: src/hal/utils/scope_horiz.c:567 +msgid "Thread:" +msgstr "Поток:" + +#: src/hal/utils/scope_horiz.c:575 +msgid "Sample Period:" +msgstr "Период опроса:" + +#: src/hal/utils/scope_horiz.c:583 +msgid "Sample Rate:" +msgstr "Скорость опроса" + +#: src/hal/utils/scope_horiz.c:599 src/emc/usr_intf/touchy/mdi.py:79 +#: src/emc/usr_intf/gscreen/mdi.py:78 +msgid "Thread" +msgstr "Поток" + +#: src/hal/utils/scope_horiz.c:600 +msgid "Period" +msgstr "Период" + +#: src/hal/utils/scope_horiz.c:638 +msgid "Multiplier:" +msgstr "Множитель:" + +#: src/hal/utils/scope_horiz.c:655 +msgid "Record Length" +msgstr "Длина записи" + +#: src/hal/utils/scope_horiz.c:658 +#, c-format +msgid "%5d samples (1 channel)" +msgstr "%5d замеров (1 канал)" + +#: src/hal/utils/scope_horiz.c:660 +#, c-format +msgid "%5d samples (2 channels)" +msgstr "%5d замеров (2 канала)" + +#: src/hal/utils/scope_horiz.c:664 +#, c-format +msgid "%5d samples (4 channels)" +msgstr "%5d замеров (4 канала)" + +#: src/hal/utils/scope_horiz.c:668 +#, c-format +msgid "%5d samples (8 channels)" +msgstr "%5d замеров (8 каналов)" + +#: src/hal/utils/scope_horiz.c:672 +#, c-format +msgid "%5d samples (16 channels)" +msgstr "%5d замеров (16 каналов)" + +#: src/hal/utils/scope_horiz.c:727 src/hal/utils/scope_horiz.c:773 +#: src/hal/utils/scope_horiz.c:985 src/hal/utils/scope_vert.c:771 +#: src/hal/utils/scope_vert.c:863 tcl/bin/emccalib.tcl:232 +#: tcl/bin/genedit.tcl:180 tcl/bin/genedit.tcl:450 tcl/bin/halconfig.tcl:682 +#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:387 +#: tcl/bin/pickconfig.tcl:749 tcl/bin/pickconfig.tcl:799 tcl/mini.tcl:1456 +#: tcl/mini.tcl:2937 tcl/tklinuxcnc.tcl:160 tcl/tklinuxcnc.tcl:245 +#: tcl/tklinuxcnc.tcl:419 tcl/tklinuxcnc.tcl:1338 tcl/tklinuxcnc.tcl:1407 +#: tcl/tklinuxcnc.tcl:1438 tcl/tklinuxcnc.tcl:1469 tcl/tklinuxcnc.tcl:2017 +#: tcl/tklinuxcnc.tcl:2036 tcl/tklinuxcnc.tcl:2055 tcl/tklinuxcnc.tcl:2102 +#: src/emc/usr_intf/axis/scripts/axis.py:1106 +#: src/emc/usr_intf/axis/scripts/axis.py:1173 +#: src/emc/usr_intf/axis/scripts/axis.py:1508 +#: src/emc/usr_intf/axis/scripts/axis.py:2672 +#: src/emc/usr_intf/axis/scripts/axis.py:3599 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:718 +#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1828 +#: share/axis/tcl/axis.tcl:1865 +msgid "OK" +msgstr "Да" + +#: src/hal/utils/scope_horiz.c:732 src/hal/utils/scope_horiz.c:773 +#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 tcl/tooledit.tcl:468 +msgid "Quit" +msgstr "Выход" + +#: src/hal/utils/scope_horiz.c:764 +msgid "Realtime thread(s) not running" +msgstr "" + +#: src/hal/utils/scope_horiz.c:765 +msgid "" +"HALSCOPE uses code in a realtime HAL thread to sample\n" +"signals for display. The HAL thread(s) are not running.\n" +"Threads are usually started by the application you are\n" +"attempting to run, or you can use the 'halcmd start' command.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Start the threads, then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" +msgstr "" + +#: src/hal/utils/scope_horiz.c:798 +msgid "Pick log file to write to:" +msgstr "" + +#: src/hal/utils/scope_horiz.c:981 +msgid "Not enough channels" +msgstr "" + +#: src/hal/utils/scope_horiz.c:982 +msgid "" +"This record length cannot handle the channels\n" +"that are currently enabled. Pick a shorter\n" +"record length that supports more channels." +msgstr "" + +#: src/hal/utils/scope_horiz.c:1070 +#, c-format +msgid "" +"%s\n" +"per div" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1085 +#, c-format +msgid "" +"%s samples\n" +"at %s" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1189 +msgid "nSec" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1192 +msgid "uSec" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1196 +msgid "mSec" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1200 src/emc/usr_intf/pncconf/pncconf.glade:2635 +#: src/emc/usr_intf/pncconf/pncconf.glade:3533 +#: src/emc/usr_intf/pncconf/pncconf.glade:4414 +#: src/emc/usr_intf/pncconf/pncconf.glade:5295 +msgid "Sec" +msgstr "секунды" + +#: src/hal/utils/scope_horiz.c:1217 src/emc/usr_intf/stepconf/spindle.glade:301 +#: src/emc/usr_intf/stepconf/axisx.glade:693 +#: src/emc/usr_intf/stepconf/axisy.glade:679 +#: src/emc/usr_intf/stepconf/axisz.glade:679 +#: src/emc/usr_intf/stepconf/axisa.glade:693 +#: src/emc/usr_intf/pncconf/pncconf.glade:8024 +#: src/emc/usr_intf/pncconf/pncconf.glade:8201 +#: src/emc/usr_intf/pncconf/pncconf.glade:8213 +msgid "Hz" +msgstr "Гц" + +#: src/hal/utils/scope_horiz.c:1220 +msgid "KHz" +msgstr "КГц" + +#: src/hal/utils/scope_horiz.c:1224 +msgid "Mhz" +msgstr "" + +#: src/hal/utils/scope_vert.c:413 src/hal/utils/scope_vert.c:1303 +#, c-format +msgid "" +"Offset\n" +"%s" +msgstr "" +"Отступ\n" +"%s" + +#: src/hal/utils/scope_vert.c:628 +msgid "Gain" +msgstr "Усиление" + +#: src/hal/utils/scope_vert.c:640 src/hal/utils/scope_trig.c:272 +msgid "Pos" +msgstr "" + +#: src/hal/utils/scope_vert.c:654 tcl/ngcgui_ttt.tcl:214 +#: src/emc/usr_intf/pncconf/pncconf.glade:64273 +msgid "Scale" +msgstr "Масштаб" + +#: src/hal/utils/scope_vert.c:667 +msgid "Chan Off" +msgstr "" + +#: src/hal/utils/scope_vert.c:723 +msgid "Set Offset" +msgstr "Установить отступ" + +#: src/hal/utils/scope_vert.c:724 +#, c-format +msgid "" +"Set the vertical offset\n" +"for channel %d." +msgstr "" + +#: src/hal/utils/scope_vert.c:744 +msgid "AC Coupled" +msgstr "" + +#: src/hal/utils/scope_vert.c:779 src/hal/utils/scope_vert.c:1215 +#: src/hal/utils/scope_trig.c:387 tcl/bin/emccalib.tcl:234 +#: tcl/bin/genedit.tcl:294 tcl/bin/halconfig.tcl:103 tcl/bin/halconfig.tcl:684 +#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:390 +#: tcl/bin/pickconfig.tcl:567 tcl/mini.tcl:1457 tcl/mini.tcl:2938 +#: tcl/mini.tcl:3110 tcl/tklinuxcnc.tcl:162 tcl/tklinuxcnc.tcl:213 +#: tcl/tklinuxcnc.tcl:420 tcl/tklinuxcnc.tcl:1339 tcl/tklinuxcnc.tcl:1408 +#: tcl/tklinuxcnc.tcl:1439 tcl/tklinuxcnc.tcl:1470 tcl/tklinuxcnc.tcl:2103 +#: src/emc/usr_intf/axis/scripts/axis.py:1453 +#: src/emc/usr_intf/axis/scripts/axis.py:1509 +#: src/emc/usr_intf/axis/scripts/axis.py:1699 +#: src/emc/usr_intf/axis/scripts/axis.py:2108 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:720 +#: src/emc/usr_intf/stepconf/main_page.glade:467 +#: src/emc/usr_intf/gscreen/gscreen.glade:3986 +msgid "Cancel" +msgstr "Отмена" + +#: src/hal/utils/scope_vert.c:859 +msgid "Too many channels" +msgstr "Слишком много каналов" + +#: src/hal/utils/scope_vert.c:860 +msgid "" +"You cannot add another channel.\n" +"\n" +"Either turn off one or more channels, or shorten\n" +"the record length to allow for more channels" +msgstr "" + +#: src/hal/utils/scope_vert.c:1074 +msgid "Select Channel Source" +msgstr "" + +#: src/hal/utils/scope_vert.c:1075 +#, c-format +msgid "" +"Select a pin, signal, or parameter\n" +"as the source for channel %d." +msgstr "" + +#: src/hal/utils/scope_vert.c:1107 +msgid "Pins" +msgstr "Ножки" + +#: src/hal/utils/scope_vert.c:1108 +msgid "Signals" +msgstr "Сигналы" + +#: src/hal/utils/scope_vert.c:1109 +msgid "Parameters" +msgstr "Параметры" + +#: src/hal/utils/scope_trig.c:110 +#, c-format +msgid "Falling" +msgstr "" + +#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:295 +#, c-format +msgid "Rising" +msgstr "" + +#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:303 +msgid "" +"Source\n" +"None" +msgstr "" + +#: src/hal/utils/scope_trig.c:124 +#, c-format +msgid "" +"Source\n" +"Chan %2d" +msgstr "" + +#: src/hal/utils/scope_trig.c:219 tcl/tklinuxcnc.tcl:827 +#: src/emc/usr_intf/touchy/touchy.glade:2469 +msgid "Auto" +msgstr "Авто" + +#: src/hal/utils/scope_trig.c:221 +msgid "Force" +msgstr "" + +#: src/hal/utils/scope_trig.c:255 src/hal/utils/scope_trig.c:289 +msgid "Level" +msgstr "" + +#: src/hal/utils/scope_trig.c:323 +msgid "Trigger Source" +msgstr "" + +#: src/hal/utils/scope_trig.c:324 +msgid "Select a channel to use for triggering." +msgstr "" + +#: src/hal/utils/scope_trig.c:347 +msgid "Chan" +msgstr "Канал" + +#: src/hal/utils/scope_trig.c:348 +msgid "Source" +msgstr "" + +#: src/emc/motion/control.c:270 +msgid "Unexpected realtime delay: check dmesg for details." +msgstr "" + +#: src/emc/motion/control.c:272 +#, c-format +msgid "" +"\n" +"In recent history there were\n" +"%ld, %ld, %ld, %ld, and %ld\n" +"elapsed clocks between calls to the motion controller.\n" +msgstr "" + +#: src/emc/motion/control.c:277 +#, c-format +msgid "" +"This time, there were %ld which is so anomalously\n" +"large that it probably signifies a problem with your\n" +"realtime configuration. For the rest of this run of\n" +"EMC, this message will be suppressed.\n" +"\n" +msgstr "" + +#: src/emc/motion/control.c:394 +msgid "G38.4 move finished without breaking contact." +msgstr "" + +#: src/emc/motion/control.c:397 +msgid "G38.2 move finished without making contact." +msgstr "" + +#: src/emc/motion/control.c:412 +msgid "Probe tripped during non-probe MDI command." +msgstr "" + +#: src/emc/motion/control.c:440 +msgid "Probe tripped during homing motion." +msgstr "" + +#: src/emc/motion/control.c:444 +msgid "Probe tripped during a jog." +msgstr "" + +#: src/emc/motion/control.c:622 +msgid "can't add coordinated return move" +msgstr "" + +#: src/emc/motion/control.c:663 +msgid "can't add linear coordinated jog move" +msgstr "" + +#: src/emc/motion/control.c:817 +#, c-format +msgid "fault %d during orient in progress" +msgstr "" + +#: src/emc/motion/control.c:957 +msgid "motion stopped by enable input" +msgstr "" + +#: src/emc/motion/control.c:980 +#, c-format +msgid "joint %d on limit switch error" +msgstr "" + +#: src/emc/motion/control.c:992 +#, c-format +msgid "joint %d amplifier fault" +msgstr "" + +#: src/emc/motion/control.c:1001 +#, c-format +msgid "joint %d following error" +msgstr "" + +#: src/emc/motion/control.c:1687 +#, c-format +msgid "Exceeded positive soft limit on joint %d" +msgstr "" + +#: src/emc/motion/control.c:1692 +#, c-format +msgid "Exceeded negative soft limit on joint %d" +msgstr "" + +#: src/emc/motion/command.c:163 +#, c-format +msgid "Can't jog invalid joint number %d." +msgstr "" + +#: src/emc/motion/command.c:167 +#, c-format +msgid "Can't jog joint %d further past max hard limit." +msgstr "" + +#: src/emc/motion/command.c:172 +#, c-format +msgid "Can't jog joint %d further past min hard limit." +msgstr "" + +#: src/emc/motion/command.c:178 +#, c-format +msgid "Can't jog joint %d further past max soft limit." +msgstr "" + +#: src/emc/motion/command.c:183 +#, c-format +msgid "Can't jog joint %d further past min soft limit." +msgstr "" + +#: src/emc/motion/command.c:243 +#, c-format +msgid "%s move on line %d would exceed joint %d's positive limit" +msgstr "" + +#: src/emc/motion/command.c:250 +#, c-format +msgid "%s move on line %d would exceed joint %d's negative limit" +msgstr "" + +#: src/emc/motion/command.c:535 +msgid "all joints must be homed before going into coordinated mode" +msgstr "" + +#: src/emc/motion/command.c:556 +msgid "all joints must be homed before going into teleop mode" +msgstr "" + +#: src/emc/motion/command.c:710 src/emc/motion/command.c:776 +#: src/emc/motion/command.c:849 +msgid "Can't jog joint in coordinated mode." +msgstr "" + +#: src/emc/motion/command.c:715 src/emc/motion/command.c:781 +#: src/emc/motion/command.c:854 +msgid "Can't jog joint when not enabled." +msgstr "" + +#: src/emc/motion/command.c:720 src/emc/motion/command.c:859 +msgid "Can't jog any joints while homing." +msgstr "" + +#: src/emc/motion/command.c:786 +msgid "Can't jog any joint while homing." +msgstr "" + +#: src/emc/motion/command.c:918 +msgid "need to be enabled, in coord mode for linear move" +msgstr "" + +#: src/emc/motion/command.c:928 +msgid "can't do linear move with limits exceeded" +msgstr "" + +#: src/emc/motion/command.c:954 +#, c-format +msgid "can't add linear move at line %d, error code %d" +msgstr "" + +#: src/emc/motion/command.c:982 +msgid "need to be enabled, in coord mode for circular move" +msgstr "" + +#: src/emc/motion/command.c:993 +msgid "can't do circular move with limits exceeded" +msgstr "" + +#: src/emc/motion/command.c:1015 +#, c-format +msgid "can't add circular move at line %d, error code %d" +msgstr "" + +#: src/emc/motion/command.c:1114 +msgid "MOTION: can't STEP while jogging" +msgstr "" + +#: src/emc/motion/command.c:1117 +msgid "MOTION: can't STEP while in return move" +msgstr "" + +#: src/emc/motion/command.c:1127 +#, c-format +msgid "MOTION: STEP while in state %d" +msgstr "" + +#: src/emc/motion/command.c:1229 +msgid "can't enable motion, enable input is false" +msgstr "" + +#: src/emc/motion/command.c:1302 +#, fuzzy +msgid "must be in joint mode to home" +msgstr "Должен быть в MDI режиме для исполнения команд MDI" + +#: src/emc/motion/command.c:1313 src/emc/motion/command.c:1324 +msgid "homing sequence already in progress" +msgstr "" + +#: src/emc/motion/command.c:1322 +msgid "homing already in progress" +msgstr "" + +#: src/emc/motion/command.c:1352 +#, fuzzy +msgid "must be in joint mode or disabled to unhome" +msgstr "Должен быть в MDI режиме для исполнения команд MDI" + +#: src/emc/motion/command.c:1364 src/emc/motion/command.c:1387 +#, c-format +msgid "Cannot unhome while homing, joint %d" +msgstr "" + +#: src/emc/motion/command.c:1368 src/emc/motion/command.c:1391 +#, c-format +msgid "Cannot unhome while moving, joint %d" +msgstr "" + +#: src/emc/motion/command.c:1396 +#, c-format +msgid "Cannot unhome inactive joint %d" +msgstr "" + +#: src/emc/motion/command.c:1400 +#, c-format +msgid "Cannot unhome invalid joint %d (max %d)" +msgstr "" + +#: src/emc/motion/command.c:1427 +msgid "need to be enabled, in coord mode for probe move" +msgstr "" + +#: src/emc/motion/command.c:1437 +msgid "can't do probe move with limits exceeded" +msgstr "" + +#: src/emc/motion/command.c:1451 +msgid "Probe is already clear when starting G38.4 or G38.5 move" +msgstr "" + +#: src/emc/motion/command.c:1453 +msgid "Probe is already tripped when starting G38.2 or G38.3 move" +msgstr "" + +#: src/emc/motion/command.c:1473 +msgid "can't add probe move" +msgstr "" + +#: src/emc/motion/command.c:1498 +msgid "need to be enabled, in coord mode for rigid tap move" +msgstr "" + +#: src/emc/motion/command.c:1509 +msgid "can't do rigid tap move with limits exceeded" +msgstr "" + +#: src/emc/motion/command.c:1526 +msgid "can't add rigid tap move" +msgstr "" + +#: src/emc/motion/command.c:1541 +msgid "need to be enabled, in teleop mode for teleop move" +msgstr "" + +#: src/emc/motion/command.c:1710 +#, c-format +msgid "joint %d: too many compensation entries" +msgstr "" + +#: src/emc/motion/command.c:1716 +#, c-format +msgid "joint %d: compensation values must increase" +msgstr "" + +#: src/emc/motion/command.c:1745 +#, c-format +msgid "unrecognized command %d" +msgstr "" + +#: src/emc/motion/motion.c:212 +msgid "MOTION: hal_init() failed\n" +msgstr "" + +#: src/emc/motion/motion.c:217 +#, c-format +msgid "MOTION: num_joints is %d, must be between 1 and %d\n" +msgstr "" + +#: src/emc/motion/motion.c:224 +#, c-format +msgid "MOTION: num_dio is %d, must be between 1 and %d\n" +msgstr "" + +#: src/emc/motion/motion.c:231 +#, c-format +msgid "MOTION: num_aio is %d, must be between 1 and %d\n" +msgstr "" + +#: src/emc/motion/motion.c:239 +msgid "MOTION: init_hal_io() failed\n" +msgstr "" + +#: src/emc/motion/motion.c:248 +msgid "MOTION: init_comm_buffers() failed\n" +msgstr "" + +#: src/emc/motion/motion.c:256 +msgid "MOTION: init_threads() failed\n" +msgstr "" + +#: src/emc/motion/motion.c:281 +#, c-format +msgid "MOTION: hal_stop_threads() failed, returned %d\n" +msgstr "" + +#: src/emc/motion/motion.c:294 +#, c-format +msgid "MOTION: rtapi_shmem_delete() failed, returned %d\n" +msgstr "" + +#: src/emc/motion/motion.c:300 +#, c-format +msgid "MOTION: hal_exit() failed, returned %d\n" +msgstr "" + +#: src/emc/motion/motion.c:323 +msgid "MOTION: emcmot_hal_data malloc failed\n" +msgstr "" + +#: src/emc/motion/motion.c:331 +msgid "MOTION: joints malloc failed\n" +msgstr "" + +#: src/emc/motion/motion.c:695 +#, c-format +msgid "MOTION: joint %d pin/param export failed\n" +msgstr "" + +#: src/emc/motion/homing.c:80 src/emc/motion/homing.c:748 +#, c-format +msgid "hit limit in home state %d" +msgstr "" + +#: src/emc/motion/homing.c:90 +#, c-format +msgid "end of move in home state %d" +msgstr "" + +#: src/emc/motion/homing.c:185 +#, c-format +msgid "unknown state '%d' during homing sequence" +msgstr "" + +#: src/emc/motion/homing.c:246 +msgid "Cannot home while shared home switch is closed" +msgstr "" + +#: src/emc/motion/homing.c:290 +msgid "" +"invalid homing config: non-zero LATCH_VEL needs either SEARCH_VEL or " +"USE_INDEX" +msgstr "" + +#: src/emc/motion/homing.c:299 +msgid "invalid homing config: non-zero SEARCH_VEL needs LATCH_VEL" +msgstr "" + +#: src/emc/motion/homing.c:447 +msgid "Home switch inactive before start of backoff move" +msgstr "" + +#: src/emc/motion/homing.c:495 +msgid "Home switch active before start of latch move" +msgstr "" + +#: src/emc/motion/homing.c:551 +msgid "Home switch inactive before start of latch move" +msgstr "" + +#: src/emc/motion/homing.c:797 +#, c-format +msgid "unknown state '%d' during homing" +msgstr "" + +#: tcl/bin/emccalib.tcl:80 +#, fuzzy +msgid "Machinekit Servo Axis Calibration" +msgstr "Калибровка сервоприводов" + +#: tcl/bin/emccalib.tcl:90 +msgid "Save To File" +msgstr "Сохранить в файл" + +#: tcl/bin/emccalib.tcl:106 tcl/bin/genedit.tcl:77 tcl/bin/halconfig.tcl:151 +#: tcl/bin/halshow.tcl:85 tcl/mini.tcl:2516 tcl/tklinuxcnc.tcl:719 +#: tcl/ngcgui.tcl:489 +msgid "File" +msgstr "Файл" + +#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:236 tcl/bin/halconfig.tcl:153 +#: tcl/mini.tcl:3558 src/emc/usr_intf/touchy/touchy.glade:2420 +msgid "Refresh" +msgstr "Перечитать" + +#: tcl/bin/emccalib.tcl:110 tcl/bin/genedit.tcl:82 tcl/bin/halconfig.tcl:155 +#: tcl/mini.tcl:2535 src/emc/usr_intf/axis/scripts/axis.py:2107 +msgid "Save" +msgstr "Сохранить" + +#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:623 +#, tcl-format +msgid "Tune %d" +msgstr "Настроить %d" + +#: tcl/bin/emccalib.tcl:162 tcl/bin/halconfig.tcl:628 +msgid "INI Name" +msgstr "Название в INI" + +#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:629 +msgid "HAL's Value" +msgstr "Значение в HAL" + +#: tcl/bin/emccalib.tcl:165 tcl/bin/halconfig.tcl:631 +msgid "Next Value" +msgstr "Следующее значение" + +#: tcl/bin/emccalib.tcl:230 tcl/bin/halconfig.tcl:680 tcl/bin/halconfig.tcl:731 +msgid "Test" +msgstr "Проверка" + +#: tcl/bin/emccalib.tcl:388 tcl/bin/halconfig.tcl:883 +#, tcl-format +msgid "" +"The HAL parameter \n" +" %s \n" +" has changed. \n" +" Really quit?" +msgstr "" +"Параметр HAL %s был изменен.\n" +"Действительно выходим?" + +#: tcl/bin/emccalib.tcl:413 tcl/bin/halconfig.tcl:1170 +msgid "" +"Not permitted to save here.\n" +"\n" +" You need to copy a configuration to your home directory and work there." +msgstr "" +"Нет разрешения на запись.\n" +"Скопируйте конфигурацию к себе и работайте там." + +#: tcl/bin/emccalib.tcl:487 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 +#: tcl/bin/pickconfig.tcl:843 tcl/bin/pickconfig.tcl:854 +#: tcl/scripts/Set_Coordinates.tcl:205 tcl/scripts/Set_Coordinates.tcl:228 +#, tcl-format +msgid "can't save %s" +msgstr "нельзя сохранить %s" + +#: tcl/bin/emcdebug.tcl:166 tcl/bin/emcdebug.tcl:177 +#, fuzzy +msgid "LinuxCNC Debug" +msgstr "Отладка EMC" + +#: tcl/bin/emcdebug.tcl:185 +msgid "Invalid INI file entries" +msgstr "Ошибки в INI файле" + +#: tcl/bin/emcdebug.tcl:186 +msgid "Configuration information" +msgstr "Сведения о конфигурации" + +#: tcl/bin/emcdebug.tcl:187 +msgid "Use of defaults" +msgstr "Использовать умолчания" + +#: tcl/bin/emcdebug.tcl:188 +msgid "Version information" +msgstr "Сведения о версии" + +#: tcl/bin/emcdebug.tcl:189 +msgid "Command issuing" +msgstr "Исполнение команды" + +#: tcl/bin/emcdebug.tcl:190 +msgid "IO points" +msgstr "Точки IO" + +#: tcl/bin/emcdebug.tcl:191 +msgid "NML" +msgstr "NML" + +#: tcl/bin/emcdebug.tcl:192 +msgid "Motion time" +msgstr "Время движения" + +#: tcl/bin/emcdebug.tcl:193 src/emc/usr_intf/axis/scripts/debuglevel.py:42 +msgid "Interpreter" +msgstr "Интерпретатор" + +#: tcl/bin/emcdebug.tcl:194 +msgid "RCS" +msgstr "RCS" + +#: tcl/bin/emcdebug.tcl:195 +msgid "Trajectory level" +msgstr "Уровень траектории" + +#: tcl/bin/emcdebug.tcl:196 +msgid "Interpreter list" +msgstr "Список интерпретатора" + +#: tcl/bin/genedit.tcl:78 tcl/mini.tcl:2533 +msgid "New" +msgstr "Новый" + +#: tcl/bin/genedit.tcl:80 tcl/mini.tcl:1667 tcl/mini.tcl:2534 +#: tcl/tklinuxcnc.tcl:720 tcl/tklinuxcnc.tcl:1657 +msgid "Open..." +msgstr "Oткрыть..." + +#: tcl/bin/genedit.tcl:84 tcl/mini.tcl:2536 +msgid "Save As..." +msgstr "Сохранить как..." + +#: tcl/bin/genedit.tcl:87 tcl/bin/halconfig.tcl:165 tcl/bin/halshow.tcl:92 +#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1322 +#: tcl/ngcgui.tcl:3832 +msgid "Exit" +msgstr "Выход" + +#: tcl/bin/genedit.tcl:91 tcl/mini.tcl:2517 +#: src/emc/usr_intf/gscreen/gscreen.glade:2685 +msgid "Edit" +msgstr "Изменить" + +#: tcl/bin/genedit.tcl:92 tcl/mini.tcl:2543 +msgid "Cut" +msgstr "Вырезать" + +#: tcl/bin/genedit.tcl:94 tcl/mini.tcl:2544 +msgid "Copy" +msgstr "Копировать" + +#: tcl/bin/genedit.tcl:96 tcl/mini.tcl:2545 +msgid "Paste" +msgstr "Вставить" + +#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:73 +msgid "Select All" +msgstr "Выбрать всё" + +#: tcl/bin/genedit.tcl:104 tcl/bin/halconfig.tcl:192 tcl/mini.tcl:919 +#: tcl/mini.tcl:2519 tcl/tklinuxcnc.tcl:790 +#: src/emc/usr_intf/stepconf/main_page.glade:445 +msgid "Help" +msgstr "Помощь" + +#: tcl/bin/genedit.tcl:105 tcl/mini.tcl:1011 tcl/mini.tcl:2559 +#: tcl/tklinuxcnc.tcl:796 +msgid "About..." +msgstr "О программе..." + +#: tcl/bin/genedit.tcl:130 +msgid "Save and Reload" +msgstr "Сохранить и загрузить" + +#: tcl/bin/genedit.tcl:133 tcl/mini.tcl:2550 +msgid "Find..." +msgstr "Найти..." + +#: tcl/bin/genedit.tcl:135 tcl/mini.tcl:2552 +msgid "Renumber File..." +msgstr "Перенумеровать..." + +#: tcl/bin/genedit.tcl:140 tcl/mini.tcl:917 tcl/mini.tcl:2518 +#: tcl/tklinuxcnc.tcl:746 src/emc/usr_intf/gmoccapy/gmoccapy.glade:5135 +msgid "Settings" +msgstr "Настройки" + +#: tcl/bin/genedit.tcl:141 tcl/mini.tcl:2554 +msgid "No Numbering" +msgstr "Не нумеровать" + +#: tcl/bin/genedit.tcl:144 tcl/mini.tcl:2556 +msgid "Line Numbering..." +msgstr "Нумерование строк..." + +#: tcl/bin/genedit.tcl:150 tcl/tklinuxcnc.tcl:768 +msgid "Scripts" +msgstr "Скрипты" + +#: tcl/bin/genedit.tcl:177 +msgid "About TkEditor" +msgstr "О TkEditor" + +#: tcl/bin/genedit.tcl:179 +msgid "" +"TkEditor\n" +"\n" +"Simple Tcl/Tk Text Editor\n" +"\n" +"GPL Version 2" +msgstr "" +"TkEditor\n" +"\n" +"Простой Tcl/Tk текстовый редактор\n" +"\n" +"GPL версия 2" + +#: tcl/bin/genedit.tcl:267 tcl/mini.tcl:3090 +msgid "Find" +msgstr "найти" + +#: tcl/bin/genedit.tcl:270 +msgid "Find:" +msgstr "Найти:" + +#: tcl/bin/genedit.tcl:276 +msgid "Replace:" +msgstr "Заменить:" + +#: tcl/bin/genedit.tcl:282 +msgid "Find All" +msgstr "Найти все" + +#: tcl/bin/genedit.tcl:285 tcl/mini.tcl:3113 +msgid "Replace All" +msgstr "Заменить все" + +#: tcl/bin/genedit.tcl:288 +msgid "Skip This" +msgstr "Пропустить" + +#: tcl/bin/genedit.tcl:291 +msgid "Replace This" +msgstr "Заменить" + +#: tcl/bin/genedit.tcl:297 +msgid "Clear" +msgstr "Очистить" + +#: tcl/bin/genedit.tcl:422 tcl/mini.tcl:2640 +msgid "Set Line Numbering" +msgstr "Показать номера строк" + +#: tcl/bin/genedit.tcl:424 tcl/mini.tcl:2644 +msgid "Increment" +msgstr "Увеличить" + +#: tcl/bin/genedit.tcl:426 tcl/mini.tcl:2646 +msgid "One" +msgstr "Раз" + +#: tcl/bin/genedit.tcl:429 tcl/mini.tcl:2648 +msgid "Two" +msgstr "Два" + +#: tcl/bin/genedit.tcl:432 tcl/mini.tcl:2650 +msgid "Five" +msgstr "Пять" + +#: tcl/bin/genedit.tcl:435 tcl/mini.tcl:2652 +msgid "Ten" +msgstr "Десять" + +#: tcl/bin/genedit.tcl:439 tcl/mini.tcl:2654 +msgid "Space" +msgstr "Пробел" + +#: tcl/bin/genedit.tcl:441 tcl/mini.tcl:2656 +msgid "Single Space" +msgstr "Один пробел" + +#: tcl/bin/genedit.tcl:444 tcl/mini.tcl:2658 +msgid "Double Space" +msgstr "Двойной пробел" + +#: tcl/bin/genedit.tcl:447 tcl/mini.tcl:2660 +msgid "Tab Space" +msgstr "Табуляция" + +#: tcl/bin/genedit.tcl:453 +msgid "Next Number:" +msgstr "Следующий номер:" + +#: tcl/bin/genedit.tcl:474 tcl/mini.tcl:2668 +msgid "Renumber" +msgstr "Перенумеровать" + +#: tcl/bin/halconfig.tcl:88 tcl/bin/halshow.tcl:33 +msgid "HAL Configuration" +msgstr "Установки HAL" + +#: tcl/bin/halconfig.tcl:103 +msgid "Would you like to save your configuration before you exit?" +msgstr "Сохранить изменения перед выходом?" + +#: tcl/bin/halconfig.tcl:103 +msgid "Save All" +msgstr "Сохранить всё" + +#: tcl/bin/halconfig.tcl:103 +msgid "Save Tune" +msgstr "Сохранить настройку" + +#: tcl/bin/halconfig.tcl:103 +msgid "Save as Netlist" +msgstr "Сохранить как нетлист" + +#: tcl/bin/halconfig.tcl:103 +msgid "Don't Save" +msgstr "Не сохранять" + +#: tcl/bin/halconfig.tcl:132 msgid "Show" msgstr "Показать" -#: tcl/bin/halconfig.tcl:133 -msgid "Watch" -msgstr "Следить" +#: tcl/bin/halconfig.tcl:133 +msgid "Watch" +msgstr "Следить" + +#: tcl/bin/halconfig.tcl:134 +msgid "Modify" +msgstr "Изменить" + +#: tcl/bin/halconfig.tcl:157 +msgid "Save INI Tuning" +msgstr "Сохранить настройку INI" + +#: tcl/bin/halconfig.tcl:159 +msgid "Save HAL Ini" +msgstr "Сохранить HAL INI" + +#: tcl/bin/halconfig.tcl:161 +msgid "Save HAL Net" +msgstr "Сохранить HAL Net" + +#: tcl/bin/halconfig.tcl:163 +msgid "Save and Exit" +msgstr "Сохранить и выйти" + +#: tcl/bin/halconfig.tcl:168 tcl/mini.tcl:916 tcl/tklinuxcnc.tcl:739 +msgid "View" +msgstr "Вид" + +#: tcl/bin/halconfig.tcl:170 tcl/bin/halshow.tcl:104 +msgid "Expand Tree" +msgstr "Раскрыть дерево" + +#: tcl/bin/halconfig.tcl:172 tcl/bin/halshow.tcl:106 +msgid "Collapse Tree" +msgstr "Скрыть дерево" + +#: tcl/bin/halconfig.tcl:175 tcl/bin/halshow.tcl:109 +msgid "Expand Pins" +msgstr "Раскрыть пункт" + +#: tcl/bin/halconfig.tcl:177 tcl/bin/halshow.tcl:111 +msgid "Expand Parameters" +msgstr "Раскрыть параметры" + +#: tcl/bin/halconfig.tcl:179 tcl/bin/halshow.tcl:113 +msgid "Expand Signals" +msgstr "Раскрыть сигналы" + +#: tcl/bin/halconfig.tcl:182 tcl/bin/halshow.tcl:116 +msgid "Erase Watch" +msgstr "Очистить слежение" + +#: tcl/bin/halconfig.tcl:194 tcl/mini.tcl:840 tcl/mini.tcl:2785 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "About" +msgstr "О программе" + +#: tcl/bin/halconfig.tcl:196 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2579 +msgid "Main" +msgstr "Главная" + +#: tcl/bin/halconfig.tcl:476 +msgid "Enter HAL command :" +msgstr "Введите команду HAL" + +#: tcl/bin/halconfig.tcl:479 tcl/bin/halconfig.tcl:528 tcl/bin/halshow.tcl:354 +msgid "Execute" +msgstr "Выполнить" + +#: tcl/bin/halconfig.tcl:943 tcl/bin/halshow.tcl:405 +msgid "Select a node to show." +msgstr "Выберите узел для показа" + +#: tcl/bin/halconfig.tcl:968 tcl/bin/halshow.tcl:429 +msgid "<-- Select a Leaf. Click on its name." +msgstr "<-- Выберите пункт. Нажмите на его имени" + +#: tcl/bin/halconfig.tcl:1085 tcl/bin/halconfig.tcl:1095 +#: tcl/bin/halconfig.tcl:1102 tcl/bin/halconfig.tcl:1109 +#: tcl/bin/halconfig.tcl:1116 +#, tcl-format +msgid "Click a highlighted entry where %s should go." +msgstr "Нажмите на подсвеченном пункте куда должен попасть %s" + +#: tcl/bin/halconfig.tcl:1092 +msgid "Nothing to be done for parameters here. Try the tuning page" +msgstr "Нечего делать для параметров. Посмотрите страницу настройки" + +#: tcl/bin/halconfig.tcl:1124 +#, tcl-format +msgid "%s is not a leaf, try again" +msgstr "%s не крайний, попробуйте снова" + +#: tcl/bin/halconfig.tcl:1281 +#, fuzzy +msgid "" +"Copyright Raymond E Henry. 2006\n" +"License: GPL Version 2\n" +"\n" +"Halconfig is an LinuxCNC configuration tool. It requires that you have " +"started an instance of linuxcnc.\n" +"\n" +"This script carries no warranty or liability for its use to the extent " +"allowed by law." +msgstr "" +"Копирайт Raymond E Henry. 2006\n" +"Лицензия: GPL Version 2\n" +"\n" +"Halconfig это средство конфигурации EMC2. Он должен быть запущен в каталоге " +"emc2 и требует запущенный emc2 или новую конфигурацию из демонстрационного " +"RT-скрипта." + +#: tcl/bin/halshow.tcl:69 +msgid " SHOW " +msgstr "Показать" + +#: tcl/bin/halshow.tcl:70 +msgid " WATCH " +msgstr "Следить" + +#: tcl/bin/halshow.tcl:90 +msgid "Load Watch List" +msgstr "" + +#: tcl/bin/halshow.tcl:102 +msgid "Tree View" +msgstr "Вид дерева" + +#: tcl/bin/halshow.tcl:349 +msgid "Test HAL command :" +msgstr "Проверить команду HAL:" + +#: tcl/bin/halshow.tcl:544 +msgid "Load a watch list" +msgstr "" + +#: tcl/bin/halshow.tcl:567 +msgid "Save current watch list" +msgstr "" + +#: tcl/bin/halshow.tcl:581 +msgid "Commands may be tested here but they will NOT be saved" +msgstr "Команды можно проверить здесь без сохранения" + +#: tcl/bin/pickconfig.tcl:96 +msgid "" +"Can't find the bwidget 1.7 package. There is a debian bwidget package; " +"install \n" +"it with sudo apt-get install bwidget." +msgstr "Не могу найти пакет bwidget 1.7." + +#: tcl/bin/pickconfig.tcl:154 +#, fuzzy +msgid "Machinekit Configuration Selector" +msgstr "Выбор конфигураций EMC" + +#: tcl/bin/pickconfig.tcl:296 +msgid "No details available." +msgstr "Детали не доступны." + +#: tcl/bin/pickconfig.tcl:343 +#, fuzzy +msgid "" +"Welcome to MachineKit.\n" +"\n" +"Select a machine configuration from the list on the left.\n" +"Details about the selected configuration will appear in the display on the " +"right.\n" +"Click 'OK' to run the selected configuration" +msgstr "" +"Добро пожаловать в EMC2.\n" +"\n" +"Выберите конфигурацию машины из списка слева.\n" +"Детали выбранной конфигурации можно посмотреть в окне справа.\n" +"Нажмите ОК для запуска с выбранной конфигурацией" + +#: tcl/bin/pickconfig.tcl:401 +msgid "My Configurations" +msgstr "Мои конфигурации" + +#: tcl/bin/pickconfig.tcl:405 +msgid "Sample Configurations" +msgstr "Примеры" + +#: tcl/bin/pickconfig.tcl:530 +#, tcl-format +msgid "ERROR: no configurations found in path '%s'" +msgstr "Ошибка: нет конфигурации по пути '%s'" + +#: tcl/bin/pickconfig.tcl:567 +msgid "Copy Configuration?" +msgstr "Скопировать конфигурацию?" + +#: tcl/bin/pickconfig.tcl:567 +#, tcl-format +msgid "" +"Would you like to copy the %s configuration to your home directory so you " +"can customize it?" +msgstr "" +"Хотите поместить копию конфигурации %s к себе, чтобы иметь возможность её " +"изменять?" + +#: tcl/bin/pickconfig.tcl:567 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:563 +msgid "Yes" +msgstr "Да" + +#: tcl/bin/pickconfig.tcl:749 +msgid "Configuration Copied" +msgstr "Конфигурация скопирована" + +#: tcl/bin/pickconfig.tcl:749 +#, fuzzy, tcl-format +msgid "" +"The configuration file has been copied to %s. Next time, choose this " +"location when starting MachineKit." +msgstr "" +"Файлы конфигурации были скопированы в %s. В следующий раз выбирайте это " +"место при старте EMC2." + +#: tcl/bin/pickconfig.tcl:799 +msgid "Shortcut Created" +msgstr "Ссылка сделана" + +#: tcl/bin/pickconfig.tcl:799 +msgid "" +"A shortcut to this configuration file has been created on your desktop. You " +"can use it to automatically launch this configuration." +msgstr "" +"Ссылка на эту конфигурацию была добавлена на ваш рабочий стол. Вы можете " +"использовать ее для автоматического запуска этой конфигурации." + +#: tcl/bin/pickconfig.tcl:805 +msgid "Create Desktop Shortcut" +msgstr "Сделать ссылку на рабочий стол" + +#: tcl/bin/tkbackplot.tcl:110 +#, fuzzy +msgid "TkLinuxCNC BackPlot" +msgstr "TkEmc плоттер" + +#: tcl/bin/tkbackplot.tcl:125 +msgid "SETUP" +msgstr "Настройки" + +#: tcl/bin/tkbackplot.tcl:127 +msgid "RESET" +msgstr "Сброс" + +#: tcl/bin/tkbackplot.tcl:129 +msgid "CANCEL" +msgstr "Отменить" + +#: tcl/bin/tkbackplot.tcl:250 +msgid "AXIS" +msgstr "Оси" + +#: tcl/bin/tkbackplot.tcl:251 +msgid "OFFSET" +msgstr "Отступ" + +#: tcl/bin/tkbackplot.tcl:252 +msgid "ANGLE" +msgstr "Угол" + +#: tcl/bin/tkbackplot.tcl:253 +msgid "DIRECTION" +msgstr "Направление" + +#: tcl/bin/tkbackplot.tcl:270 +msgid "SIZE :" +msgstr "Размер:" + +#: tcl/mini.tcl:490 +#, tcl-format +msgid "JOG %s +" +msgstr "Шагнуть %s +" + +#: tcl/mini.tcl:491 +#, tcl-format +msgid "JOG %s -" +msgstr "Шагнуть %s -" + +#: tcl/mini.tcl:492 +#, tcl-format +msgid "" +"%s\n" +"\n" +"Z\n" +"E\n" +"R\n" +"O" +msgstr "" +"%s\n" +"\n" +"Н\n" +"О\n" +"Л\n" +"Ь" + +#: tcl/mini.tcl:840 +msgid "" +"TkMini \n" +"\n" +"Tcl/Tk GUI for Enhanced Machine Controller\n" +"\n" +"GPL Copyright 2003 \n" +"Ray Henry \n" +"\n" +" 3D backplotter by Paul Corner \n" +" \n" +"This software comes with ABSOLUTELY NO GUARANTEE! \n" +"For details see the copyright.html file in this directory." +msgstr "" +"TkMini \n" +"\n" +"Tcl/Tk GUI for Enhanced Machine Controller\n" +"\n" +"GPL Copyright 2003 \n" +"Ray Henry \n" +"\n" +" 3D backplotter by Paul Corner \n" +" \n" +"This software comes with ABSOLUTELY NO GUARANTEE! \n" +"For details see the copyright.html file in this directory." + +#: tcl/mini.tcl:915 +msgid "Program" +msgstr "Программа" + +#: tcl/mini.tcl:918 +msgid "Info" +msgstr "Инфо" + +#: tcl/mini.tcl:923 +msgid "Backplot" +msgstr "Плоттер" + +#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:5915 +msgid "Editor" +msgstr "Редактор" + +#: tcl/mini.tcl:927 +msgid "Offsets" +msgstr "Отступы" + +#: tcl/mini.tcl:929 +msgid "Tools" +msgstr "Инструменты" + +#: tcl/mini.tcl:951 tcl/mini.tcl:3565 tcl/tklinuxcnc.tcl:732 +msgid "Reset" +msgstr "Сброс" + +#: tcl/mini.tcl:960 +msgid "Position Type" +msgstr "Тип позиции:" + +#: tcl/mini.tcl:962 +msgid "Tool Info" +msgstr "Инфо инструмента" + +#: tcl/mini.tcl:964 +msgid "Offset Info" +msgstr "Инфо по отступу" + +#: tcl/mini.tcl:967 +msgid "Show Restart" +msgstr "Показать перезапуск" + +#: tcl/mini.tcl:968 +msgid "Hide Restart" +msgstr "Скрыть перезапуск" + +#: tcl/mini.tcl:970 +msgid "Show Split Right" +msgstr "Показать раздел справа" + +#: tcl/mini.tcl:972 +msgid "Show Mode Full" +msgstr "Show Mode Full" + +#: tcl/mini.tcl:974 +msgid "Show Popin Full" +msgstr "Show Popin Full" + +#: tcl/mini.tcl:978 +msgid "Actual Position" +msgstr "Настоящая позиция" + +#: tcl/mini.tcl:980 +msgid "Commanded Position" +msgstr "Заданная позиция" + +#: tcl/mini.tcl:983 +msgid "Machine Position" +msgstr "Машинная позиция" + +#: tcl/mini.tcl:985 +msgid "Relative Position" +msgstr "Относительная позиция" + +#: tcl/mini.tcl:988 tcl/tklinuxcnc.tcl:747 +msgid "Calibration..." +msgstr "Калибровка..." + +#: tcl/mini.tcl:990 +msgid "HAL Show..." +msgstr "Показать HAL..." + +#: tcl/mini.tcl:992 +msgid "HAL Config..." +msgstr "Настроить HAL..." + +#: tcl/mini.tcl:997 +msgid "Program File" +msgstr "Файл программы" + +#: tcl/mini.tcl:998 +#, tcl-format +msgid "Program file is %s" +msgstr "Файл программы %s" + +#: tcl/mini.tcl:999 +msgid "Editor File" +msgstr "Файл редактора" + +#: tcl/mini.tcl:1000 +#, tcl-format +msgid "Editor file is %s" +msgstr "Файл редактора %s" + +#: tcl/mini.tcl:1001 +msgid "Parameter File" +msgstr "Файл параметров" + +#: tcl/mini.tcl:1002 +#, tcl-format +msgid "Parameter file is %s" +msgstr "Файл параметров %s" + +#: tcl/mini.tcl:1003 +msgid "Tool File" +msgstr "Файл инструмента" + +#: tcl/mini.tcl:1004 +#, tcl-format +msgid "Tool file is %s" +msgstr "Файл инструмента %s" + +#: tcl/mini.tcl:1006 +msgid "Active G Codes" +msgstr "Активные G-коды:" + +#: tcl/mini.tcl:1007 +#, tcl-format +msgid "" +"Active codes include; \n" +"%s" +msgstr "" +"Активные коды включают: \n" +"%s" + +#: tcl/mini.tcl:1010 tcl/mini.tcl:2558 tcl/tklinuxcnc.tcl:791 +msgid "Help..." +msgstr "Помощь..." + +#: tcl/mini.tcl:1027 tcl/tklinuxcnc.tcl:890 +msgid "ABORT" +msgstr "Отменить" + +#: tcl/mini.tcl:1038 tcl/mini.tcl:2048 +msgid "CONTINUE" +msgstr "Продолжить" + +#: tcl/mini.tcl:1044 tcl/tklinuxcnc.tcl:828 tcl/tklinuxcnc.tcl:2248 +#: src/emc/usr_intf/touchy/touchy.glade:1264 +msgid "MDI" +msgstr "MDI" + +#: tcl/mini.tcl:1048 tcl/tklinuxcnc.tcl:2239 +msgid "AUTO" +msgstr "Авто" + +#: tcl/mini.tcl:1052 tcl/mini.tcl:1812 tcl/tklinuxcnc.tcl:2141 +#: tcl/tklinuxcnc.tcl:2261 +msgid "MANUAL" +msgstr "Ручной" + +#: tcl/mini.tcl:1106 +msgid "Tool #:" +msgstr "Номер инструмента:" + +#: tcl/mini.tcl:1108 +msgid "Length :" +msgstr "Длина:" + +#: tcl/mini.tcl:1119 +msgid "Work Offsets: " +msgstr "Отступы заготовки:" + +#: tcl/mini.tcl:1121 +msgid "start offsets popup here" +msgstr "start offsets popup here" + +#: tcl/mini.tcl:1165 +msgid "start override popup here" +msgstr "start override popup here" + +#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1739 +msgid "Feed Override:" +msgstr "Изменить подачу:" + +#: tcl/mini.tcl:1180 +msgid "-- MESSAGES --" +msgstr "-- MESSAGES --" + +#: tcl/mini.tcl:1230 +msgid "toggleView's not doin nothin yet" +msgstr "toggleView's not doin nothin yet" + +#: tcl/mini.tcl:1282 +msgid "Can't set zero with a tool offset active so I issued G49 to cancel it." +msgstr "" +"Не могу установить ноль с активной поправкой на инструмент, поэтому я " +"выполнил G49 для её отмены." + +#: tcl/mini.tcl:1346 +#, tcl-format +msgid "Can't update the var file while machine is in auto and %s." +msgstr "Не могу обновить файл переменных в режиме Авто и %s." + +#: tcl/mini.tcl:1400 tcl/tklinuxcnc.tcl:1227 +msgid "override limits" +msgstr "Игнорировать пределы" + +#: tcl/mini.tcl:1405 tcl/tklinuxcnc.tcl:1263 +msgid "home" +msgstr "начало" + +#: tcl/mini.tcl:1426 +msgid "DEFAULT" +msgstr "Умолчание" + +#: tcl/mini.tcl:1427 +msgid "Speed:" +msgstr "Скорость:" + +#: tcl/mini.tcl:1430 +msgid "RAPID" +msgstr "Быстрый" + +#: tcl/mini.tcl:1447 tcl/tklinuxcnc.tcl:1391 +msgid "Set Jog Speed" +msgstr "Скорость перемещений" + +#: tcl/mini.tcl:1453 tcl/tklinuxcnc.tcl:1404 +msgid "Set jog speed:" +msgstr "Скорость быстрого хода:" + +#: tcl/mini.tcl:1511 +msgid "JOG X +" +msgstr "Двигать X +" + +#: tcl/mini.tcl:1512 +msgid "JOG X -" +msgstr "Двигать X -" + +#: tcl/mini.tcl:1516 +msgid "increment" +msgstr "увеличить" + +#: tcl/mini.tcl:1518 tcl/tklinuxcnc.tcl:602 tcl/tklinuxcnc.tcl:1249 +#: tcl/tklinuxcnc.tcl:1253 src/emc/usr_intf/gscreen/gscreen.glade:1574 +#: src/emc/usr_intf/gscreen/gscreen.glade:1586 +msgid "continuous" +msgstr "Постоянный" + +#: tcl/mini.tcl:1520 +msgid "" +"A\n" +"L\n" +"L\n" +"\n" +"Z\n" +"E\n" +"R\n" +"O" +msgstr "" +"В\n" +"С\n" +"Е\n" +"\n" +"Н\n" +"О\n" +"Л\n" +"Ь" + +#: tcl/mini.tcl:1588 src/emc/usr_intf/touchy/touchy.glade:1422 +msgid "Spindle Forward" +msgstr "Шпиндель вперед" + +#: tcl/mini.tcl:1589 src/emc/usr_intf/touchy/touchy.glade:1433 +msgid "Spindle Reverse" +msgstr "Шпиндель назад:" + +#: tcl/mini.tcl:1590 tcl/tklinuxcnc.tcl:871 +msgid "Spindle off" +msgstr "Выключить шпиндель" + +#: tcl/mini.tcl:1592 src/emc/usr_intf/touchy/touchy.glade:1479 +msgid "Spindle Slower" +msgstr "Шпиндель медленнее" + +#: tcl/mini.tcl:1596 src/emc/usr_intf/touchy/touchy.glade:1464 +msgid "Spindle Faster" +msgstr "Шпиндель быстрее" + +#: tcl/mini.tcl:1632 tcl/tklinuxcnc.tcl:1620 +msgid "MDI:" +msgstr "MDI:" + +#: tcl/mini.tcl:1669 tcl/tklinuxcnc.tcl:1658 +#: src/emc/usr_intf/stepconf/main_page.glade:298 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2625 +msgid "Run" +msgstr "Запустить" + +#: tcl/mini.tcl:1671 tcl/tklinuxcnc.tcl:1659 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2638 +msgid "Pause" +msgstr "Пауза" + +#: tcl/mini.tcl:1673 tcl/tklinuxcnc.tcl:1660 +msgid "Resume" +msgstr "Продолжить" + +#: tcl/mini.tcl:1675 tcl/tklinuxcnc.tcl:1661 +msgid "Step" +msgstr "Шаг" + +#: tcl/mini.tcl:1677 tcl/tklinuxcnc.tcl:1662 +msgid "Verify" +msgstr "Проверить" + +#: tcl/mini.tcl:1698 +msgid "RESTART LINE" +msgstr "Строка рестарта" + +#: tcl/mini.tcl:1699 src/emc/usr_intf/stepconf/main_page.glade:531 +msgid "Back" +msgstr "Назад" + +#: tcl/mini.tcl:1700 +msgid "Ahead" +msgstr "Вперед" + +#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1300 +#: src/emc/usr_intf/gscreen/gscreen.glade:3973 +msgid "Restart" +msgstr "Рестарт" + +#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 tcl/tklinuxcnc.tcl:465 +#: src/emc/usr_intf/axis/scripts/axis.py:2023 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:754 +msgid "All files" +msgstr "Все файлы" + +#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 tcl/tklinuxcnc.tcl:466 +msgid "Text files" +msgstr "Текстовые файлы" + +#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 tcl/tklinuxcnc.tcl:467 +msgid "NC files" +msgstr "NC файлы" + +#: tcl/mini.tcl:1753 +msgid "" +"The interpreter is running. \n" +" Pressing OK will abort and load the new program" +msgstr "" +"Интерпретатор работает. \n" +"Нажмите OK чтобы остановить его и загрузить новую программу" + +#: tcl/mini.tcl:1886 +msgid "ESTOPPED" +msgstr "АВОСТ" + +#: tcl/mini.tcl:1889 +msgid "ESTOP PUSH" +msgstr "Нажать АВОСТ" + +#: tcl/mini.tcl:1892 tcl/tklinuxcnc.tcl:2233 +msgid "ESTOP RESET" +msgstr "Сбросить АВОСТ" + +#: tcl/mini.tcl:1897 tcl/tklinuxcnc.tcl:2298 +msgid "SPINDLE FORWARD" +msgstr "Шпиндель вперед" + +#: tcl/mini.tcl:1899 tcl/tklinuxcnc.tcl:2300 +msgid "SPINDLE REVERSE" +msgstr "Шпиндель назад" + +#: tcl/mini.tcl:1901 tcl/tklinuxcnc.tcl:2302 +msgid "SPINDLE OFF" +msgstr "Выключить шпиндель" + +#: tcl/mini.tcl:1903 tcl/tklinuxcnc.tcl:2304 +msgid "SPINDLE INCREASE" +msgstr "Шпиндель быстрее" + +#: tcl/mini.tcl:1905 tcl/tklinuxcnc.tcl:2306 +msgid "SPINDLE DECREASE" +msgstr "Шпиндель медленнее" + +#: tcl/mini.tcl:1907 tcl/tklinuxcnc.tcl:2308 +msgid "SPINDLE ?" +msgstr "Шпиндель?" + +#: tcl/mini.tcl:1911 tcl/tklinuxcnc.tcl:2312 +msgid "BRAKE ON" +msgstr "Включить тормоз" + +#: tcl/mini.tcl:1913 tcl/tklinuxcnc.tcl:2314 +msgid "BRAKE OFF" +msgstr "Выключить тормоз" + +#: tcl/mini.tcl:1915 tcl/tklinuxcnc.tcl:2316 +msgid "BRAKE ?" +msgstr "Тормоз?" + +#: tcl/mini.tcl:1919 tcl/tklinuxcnc.tcl:2274 +msgid "MIST ON" +msgstr "Включить туман" + +#: tcl/mini.tcl:1921 tcl/tklinuxcnc.tcl:2276 +msgid "MIST OFF" +msgstr "Выключить туман" + +#: tcl/mini.tcl:1923 tcl/tklinuxcnc.tcl:2278 +msgid "MIST ?" +msgstr "Туман?" + +#: tcl/mini.tcl:1927 tcl/tklinuxcnc.tcl:2282 +msgid "FLOOD ON" +msgstr "Включить струю" + +#: tcl/mini.tcl:1929 tcl/tklinuxcnc.tcl:2284 +msgid "FLOOD OFF" +msgstr "Выключить струю" + +#: tcl/mini.tcl:1931 tcl/tklinuxcnc.tcl:2286 +msgid "FLOOD ?" +msgstr "Струя?" + +#: tcl/mini.tcl:2052 +msgid "FEEDHOLD" +msgstr "Приостановка подачи" + +#: tcl/mini.tcl:2124 +msgid "" +"TOOL SETUP \n" +" Click or tab to edit. Press enter to return to keyboard machine control." +msgstr "" +"Настройка инструмента \n" +" Нажмите ввод для возврата в управление машиной." + +#: tcl/mini.tcl:2130 +msgid " TOOL NUMBER " +msgstr "Номер инструмента" + +#: tcl/mini.tcl:2131 +msgid " LENGTH " +msgstr "Длина" + +#: tcl/mini.tcl:2132 +msgid " DIAMETER " +msgstr "Диаметр" + +#: tcl/mini.tcl:2133 +msgid " COMMENT " +msgstr "Комментарий" + +#: tcl/mini.tcl:2188 +msgid "Add Extra Tool" +msgstr "Добавить инструмент" + +#: tcl/mini.tcl:2189 +msgid "Remove Last Tool" +msgstr "Удалить последний инструмент" + +#: tcl/mini.tcl:2217 tcl/mini.tcl:2253 +#, tcl-format +msgid "Can't update the tool file while machine is in auto and %s." +msgstr "Не могу изменить файл инструмента пока машина в режиме авто и %s." + +#: tcl/mini.tcl:2229 +msgid "This is not a good number." +msgstr "Неподходящее число." + +#: tcl/mini.tcl:2293 +msgid "" +"COORDINATE SYSTEM SETUP \n" +"\n" +" Click value to edit with keyboard. Press enter to return to keyboard " +"control of machine. \n" +" " +msgstr "" +"Настройка координатной системы \n" +"\n" +" Нажмите на значение для изменения. Нажмите ввод для возврата в управление " +"машиной." + +#: tcl/mini.tcl:2320 tcl/scripts/Set_Coordinates.tcl:80 +msgid "Axis " +msgstr "Ось " + +#: tcl/mini.tcl:2321 +msgid "Value " +msgstr "Значение" + +#: tcl/mini.tcl:2326 tcl/scripts/Set_Coordinates.tcl:91 +msgid "Teach" +msgstr "Научить" + +#: tcl/mini.tcl:2334 +msgid "Write And Load File " +msgstr "Записать и загрузить файл" + +#: tcl/mini.tcl:2336 +msgid "Offset By Radius" +msgstr "Отступ по радиусу" + +#: tcl/mini.tcl:2337 +msgid "Offset By Length" +msgstr "Отступ по длине" + +#: tcl/mini.tcl:2342 +msgid "Subtract" +msgstr "Вычесть" + +#: tcl/mini.tcl:2344 src/emc/usr_intf/gmoccapy/gmoccapy.glade:6712 +msgid "Add" +msgstr "Добавить" + +#: tcl/mini.tcl:2366 +msgid "Zero All G54" +msgstr "Обнулить все G54" + +#: tcl/mini.tcl:2367 +msgid "Zero All G55" +msgstr "Обнулить все G55" + +#: tcl/mini.tcl:2368 +msgid "Zero All G56" +msgstr "Обнулить все G56" + +#: tcl/mini.tcl:2369 +msgid "Zero All G57" +msgstr "Обнулить все G57" + +#: tcl/mini.tcl:2370 +msgid "Zero All G58" +msgstr "Обнулить все G58" + +#: tcl/mini.tcl:2371 +msgid "Zero All G59" +msgstr "Обнулить все G59" + +#: tcl/mini.tcl:2372 +msgid "Zero All G59.1" +msgstr "Обнулить все G59.1" + +#: tcl/mini.tcl:2373 +msgid "Zero All G59.2" +msgstr "Обнулить все G59.2" + +#: tcl/mini.tcl:2374 +msgid "Zero All G59.3" +msgstr "Обнулить все G59.3" + +#: tcl/mini.tcl:2375 +msgid "Zero All ????" +msgstr "Обнулить все ????" + +#: tcl/mini.tcl:2493 +msgid "Modified..." +msgstr "Изменен..." + +#: tcl/mini.tcl:2538 +msgid "Save and Load" +msgstr "Сохранить и загрузить" + +#: tcl/mini.tcl:2540 src/emc/usr_intf/gscreen/gscreen.glade:3515 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2363 +msgid "Undo" +msgstr "Откатить" + +#: tcl/mini.tcl:2541 src/emc/usr_intf/gscreen/gscreen.glade:3526 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2411 +msgid "Redo" +msgstr "Накатить" + +#: tcl/mini.tcl:2546 tcl/tooledit.tcl:488 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6695 +msgid "Delete" +msgstr "Удалить" + +#: tcl/mini.tcl:2551 +msgid "Replace..." +msgstr "Заменить..." + +#: tcl/mini.tcl:2664 +msgid "Next Number: " +msgstr "Следующий номер:" + +#: tcl/mini.tcl:2765 +msgid "Basic Help" +msgstr "Помощь" + +#: tcl/mini.tcl:2765 +msgid "" +"This is a simple ASCII editor like many others.\n" +"\n" +"Ctrl+O Open\n" +"Ctrl+S Save\n" +"Ctrl+Z Undo\n" +"Ctrl+Y Redo\n" +"Ctrl+X Cut\n" +"Ctrl+C Copy\n" +"Ctrl+V Paste\n" +"Del Delete\n" +"Ctrl+A Select All\n" +"\n" +"Ctrl+F Find\n" +"Ctrl+R Replace " +msgstr "" +"Это простенький редактор.\n" +"\n" +"Ctrl+O Открыть\n" +"Ctrl+S Сохранить\n" +"Ctrl+Z Откатить\n" +"Ctrl+Y Накатить\n" +"Ctrl+X Вырезать\n" +"Ctrl+C Скопировать\n" +"Ctrl+V Вставить\n" +"Del Удалить\n" +"Ctrl+A Выбрать все\n" +"\n" +"Ctrl+F Найти\n" +"Ctrl+R Заменить" + +#: tcl/mini.tcl:2785 +msgid "" +"tknotepad by Joseph Acosta. \n" +"\n" +" Modified for EMC by: Paul Corner " +msgstr "" + +#: tcl/mini.tcl:2793 +msgid "" +"The contents of this file may have changed, do you wish to to save your " +"changes?" +msgstr "Содержимое файла изменено, хотите сохранить изменения?" + +#: tcl/mini.tcl:2794 +msgid "New Confirm?" +msgstr "Подтвердить новый?" + +#: tcl/mini.tcl:2928 +msgid "Print Setup" +msgstr "Настройки печати" + +#: tcl/mini.tcl:2932 +msgid "Print Command: " +msgstr "Команда печати:" + +#: tcl/mini.tcl:3095 +msgid "Find what:" +msgstr "Что искать:" + +#: tcl/mini.tcl:3101 +msgid "Replace with:" +msgstr "Заменить на:" + +#: tcl/mini.tcl:3109 +msgid "Find Next" +msgstr "Найти дальше" + +#: tcl/mini.tcl:3112 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2494 +msgid "Replace" +msgstr "Заменить" + +#: tcl/mini.tcl:3120 src/emc/usr_intf/gscreen/gscreen.py:2750 +#: src/emc/usr_intf/gmoccapy/dialogs.py:171 +msgid "Up" +msgstr "Вверх" + +#: tcl/mini.tcl:3121 src/emc/usr_intf/gscreen/gscreen.py:2754 +#: src/emc/usr_intf/gmoccapy/dialogs.py:175 +msgid "Down" +msgstr "Вниз" + +#: tcl/mini.tcl:3124 +msgid "Match case" +msgstr "Match case" + +#: tcl/mini.tcl:3569 +msgid "rot-x" +msgstr "rot-x" + +#: tcl/mini.tcl:3579 +msgid "rot-y" +msgstr "rot-y" + +#: tcl/mini.tcl:3589 +msgid "rot-z" +msgstr "rot-z" + +#: tcl/mini.tcl:3599 +msgid "zoom" +msgstr "zoom" + +#: tcl/mini.tcl:3655 +msgid "TEST" +msgstr "TEST" + +#: tcl/mini.tcl:3699 +msgid "Hide Setup" +msgstr "Спрятать настройки" + +#: tcl/mini.tcl:3703 +msgid "Show Setup" +msgstr "Показать настройки" + +#: tcl/show_errors.tcl:41 +#, fuzzy +msgid "LinuxCNC Errors" +msgstr "Ошибки EMC2" + +#: tcl/show_errors.tcl:44 +#, fuzzy +msgid "" +"LinuxCNC terminated with an error. When reporting problems, please include " +"all the information below in your message." +msgstr "" +"EMC2 завершился с ошибкой. При сообщении о проблеме, пожалуйста вложите все " +"следующие сведения." + +#: tcl/show_errors.tcl:74 tcl/scripts/Set_Coordinates.tcl:103 +msgid "Close" +msgstr "Закрыть" + +#: tcl/tklinuxcnc.tcl:154 tcl/tklinuxcnc.tcl:181 +msgid "Set Run Mark" +msgstr "Поставить метку исполнения" + +#: tcl/tklinuxcnc.tcl:156 +#, tcl-format +msgid "Set run mark at line %s?" +msgstr "Поставить метку исполнения на строке %s?" + +#: tcl/tklinuxcnc.tcl:176 tcl/tklinuxcnc.tcl:204 +msgid "untitled" +msgstr "безымянный" + +#: tcl/tklinuxcnc.tcl:212 +msgid "Load Parameter File" +msgstr "Загрузить файл параметров" + +#: tcl/tklinuxcnc.tcl:261 +#, fuzzy +msgid "LinuxCNC Diagnostics" +msgstr "Диагностика EMC" + +#: tcl/tklinuxcnc.tcl:263 +msgid "Task" +msgstr "Задача" + +#: tcl/tklinuxcnc.tcl:265 tcl/tklinuxcnc.tcl:288 tcl/tklinuxcnc.tcl:311 +msgid "Heartbeat:" +msgstr "Heartbeat:" + +#: tcl/tklinuxcnc.tcl:268 tcl/tklinuxcnc.tcl:291 tcl/tklinuxcnc.tcl:314 +msgid "Command:" +msgstr "Команда:" + +#: tcl/tklinuxcnc.tcl:271 tcl/tklinuxcnc.tcl:294 tcl/tklinuxcnc.tcl:317 +msgid "Command #:" +msgstr "Номер команды:" + +#: tcl/tklinuxcnc.tcl:274 tcl/tklinuxcnc.tcl:297 tcl/tklinuxcnc.tcl:320 +msgid "Status:" +msgstr "Статус:" + +#: tcl/tklinuxcnc.tcl:286 +msgid "Io" +msgstr "Io" + +#: tcl/tklinuxcnc.tcl:309 +msgid "Motion" +msgstr "Motion" + +#: tcl/tklinuxcnc.tcl:350 +#, fuzzy +msgid "About TkLinuxCNC" +msgstr "О TkEditor" + +#: tcl/tklinuxcnc.tcl:351 +#, fuzzy +msgid "" +"TkLinuxcnc\n" +"\n" +"Tcl/Tk GUI for LinuxCNC\n" +"\n" +"GPL Version 2 (2012)" +msgstr "" +"TkEmc\n" +"\n" +"Tcl/Tk GUI for Enhanced Machine Controller version 2 (EMC2)\n" +"\n" +"GPL Version 2 (2006)" + +#: tcl/tklinuxcnc.tcl:399 +msgid "Set Tool Offset" +msgstr "Установить отступ инструмента" + +#: tcl/tklinuxcnc.tcl:404 tcl/tklinuxcnc.tcl:905 +msgid "Tool:" +msgstr "Инструмент:" + +#: tcl/tklinuxcnc.tcl:722 +msgid "Edit..." +msgstr "Изменить..." + +#: tcl/tklinuxcnc.tcl:727 +msgid "Tool Table Editor..." +msgstr "Редактор таблицы инструментов..." + +#: tcl/tklinuxcnc.tcl:730 src/emc/usr_intf/touchy/touchy.glade:1383 +msgid "Reload Tool Table" +msgstr "Загрузить таблицу инструментов" + +#: tcl/tklinuxcnc.tcl:740 +msgid "Offsets and Variables..." +msgstr "Отступы и переменные..." + +#: tcl/tklinuxcnc.tcl:741 +msgid "Diagnostics..." +msgstr "Диагностика..." + +#: tcl/tklinuxcnc.tcl:742 +msgid "Backplot..." +msgstr "Плоттер..." + +#: tcl/tklinuxcnc.tcl:748 +msgid "Testing..." +msgstr "Проверка..." + +#: tcl/tklinuxcnc.tcl:749 +msgid "Debug..." +msgstr "Отладка..." + +#: tcl/tklinuxcnc.tcl:750 +msgid "Font..." +msgstr "Шрифт..." + +#: tcl/tklinuxcnc.tcl:754 src/emc/usr_intf/axis/scripts/image-to-gcode.py:665 +msgid "Units" +msgstr "Единицы" + +#: tcl/tklinuxcnc.tcl:755 +msgid "auto" +msgstr "авто" + +#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8873 +msgid "inches" +msgstr "дюймы" + +#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1609 +#: src/emc/usr_intf/axis/scripts/axis.py:1855 +#: src/emc/usr_intf/axis/scripts/axis.py:2386 +#: src/emc/usr_intf/touchy/touchy.glade:3301 +#: src/emc/usr_intf/stepconf/stepconf.py:1314 +#: src/emc/usr_intf/stepconf/pages.py:625 +#: src/emc/usr_intf/stepconf/main_page.glade:251 +#: src/emc/usr_intf/pncconf/pncconf.py:8869 +#: src/emc/usr_intf/pncconf/pncconf.glade:2195 +#: src/emc/usr_intf/pncconf/pncconf.glade:2362 +#: src/emc/usr_intf/pncconf/pncconf.glade:64552 +#: src/emc/usr_intf/pncconf/pncconf.glade:64621 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm" +msgstr "мм" + +#: tcl/tklinuxcnc.tcl:758 +msgid "cm" +msgstr "см" + +#: tcl/tklinuxcnc.tcl:762 +msgid "Utilities" +msgstr "Утилиты" + +#: tcl/tklinuxcnc.tcl:763 +msgid "Hal Scope" +msgstr "HAL-скоп" + +#: tcl/tklinuxcnc.tcl:785 +msgid "HAL Show" +msgstr "Показать HAL" + +#: tcl/tklinuxcnc.tcl:786 +msgid "HAL Config" +msgstr "Настроить HAL" + +#: tcl/tklinuxcnc.tcl:792 +msgid "Balloon help" +msgstr "Подсказки" + +#: tcl/tklinuxcnc.tcl:815 +msgid "Estop on" +msgstr "АВОСТ вкл" + +#: tcl/tklinuxcnc.tcl:816 +msgid "Estop off" +msgstr "АВОСТ выкл" + +#: tcl/tklinuxcnc.tcl:818 +msgid "Machine on" +msgstr "Станок вкл" + +#: tcl/tklinuxcnc.tcl:819 src/emc/usr_intf/gscreen/gscreen.glade:2452 +msgid "Machine off" +msgstr "Станок выкл" + +#: tcl/tklinuxcnc.tcl:826 src/emc/usr_intf/touchy/touchy.glade:1561 +msgid "Manual" +msgstr "Ручной" + +#: tcl/tklinuxcnc.tcl:835 +msgid "Mist on" +msgstr "Туман вкл" + +#: tcl/tklinuxcnc.tcl:836 +msgid "Mist off" +msgstr "Туман выкл" + +#: tcl/tklinuxcnc.tcl:843 +msgid "Flood on" +msgstr "Струя вкл" + +#: tcl/tklinuxcnc.tcl:844 +msgid "Flood off" +msgstr "Струя выкл" + +#: tcl/tklinuxcnc.tcl:851 +msgid "Lube on" +msgstr "Смазка вкл" -#: tcl/bin/halconfig.tcl:134 -msgid "Modify" -msgstr "Изменить" +#: tcl/tklinuxcnc.tcl:852 +msgid "Lube off" +msgstr "Смазка выкл" -#: tcl/bin/halconfig.tcl:157 -msgid "Save INI Tuning" -msgstr "Сохранить настройку INI" +#: tcl/tklinuxcnc.tcl:869 +msgid "Spindle forward" +msgstr "Шпиндель вперед" -#: tcl/bin/halconfig.tcl:159 -msgid "Save HAL Ini" -msgstr "Сохранить HAL INI" +#: tcl/tklinuxcnc.tcl:870 +msgid "Spindle reverse" +msgstr "Шпиндель назад:" -#: tcl/bin/halconfig.tcl:161 -msgid "Save HAL Net" -msgstr "Сохранить HAL Net" +#: tcl/tklinuxcnc.tcl:885 +msgid "Brake on" +msgstr "Тормоз вкл" -#: tcl/bin/halconfig.tcl:163 -msgid "Save and Exit" -msgstr "Сохранить и выйти" +#: tcl/tklinuxcnc.tcl:886 +msgid "Brake off" +msgstr "Тормоз выкл" -#: tcl/bin/halconfig.tcl:168 tcl/mini.tcl:916 tcl/tklinuxcnc.tcl:739 -msgid "View" -msgstr "Вид" +#: tcl/tklinuxcnc.tcl:907 +msgid "Offset:" +msgstr "Отступ:" -#: tcl/bin/halconfig.tcl:170 tcl/bin/halshow.tcl:104 -msgid "Expand Tree" -msgstr "Раскрыть дерево" +#: tcl/tklinuxcnc.tcl:913 +msgid "Work Offsets:" +msgstr "Рабочий отступ:" -#: tcl/bin/halconfig.tcl:172 tcl/bin/halshow.tcl:106 -msgid "Collapse Tree" -msgstr "Скрыть дерево" +#: tcl/tklinuxcnc.tcl:1233 +msgid "relative" +msgstr "Относительная" -#: tcl/bin/halconfig.tcl:175 tcl/bin/halshow.tcl:109 -msgid "Expand Pins" -msgstr "Раскрыть пункт" +#: tcl/tklinuxcnc.tcl:1234 +msgid "machine" +msgstr "Абсолютная" -#: tcl/bin/halconfig.tcl:177 tcl/bin/halshow.tcl:111 -msgid "Expand Parameters" -msgstr "Раскрыть параметры" +#: tcl/tklinuxcnc.tcl:1236 +msgid "actual" +msgstr "Настоящая" -#: tcl/bin/halconfig.tcl:179 tcl/bin/halshow.tcl:113 -msgid "Expand Signals" -msgstr "Раскрыть сигналы" +#: tcl/tklinuxcnc.tcl:1237 +msgid "commanded" +msgstr "Заданная" -#: tcl/bin/halconfig.tcl:182 tcl/bin/halshow.tcl:116 -msgid "Erase Watch" -msgstr "Очистить слежение" +#: tcl/tklinuxcnc.tcl:1239 +msgid "joint" +msgstr "Сочленение:" -#: tcl/bin/halconfig.tcl:194 tcl/mini.tcl:840 tcl/mini.tcl:2785 -msgid "About" -msgstr "О программе" +#: tcl/tklinuxcnc.tcl:1240 +msgid "world" +msgstr "Координаты" -#: tcl/bin/halconfig.tcl:196 -msgid "Main" -msgstr "Главная" +#: tcl/tklinuxcnc.tcl:1333 +msgid "Axis Offset" +msgstr "Отступ оси" -#: tcl/bin/halconfig.tcl:476 -msgid "Enter HAL command :" -msgstr "Введите команду HAL" +#: tcl/tklinuxcnc.tcl:1335 +msgid "Set axis value:" +msgstr "Установить значение оси:" -#: tcl/bin/halconfig.tcl:479 tcl/bin/halconfig.tcl:528 tcl/bin/halshow.tcl:354 -msgid "Execute" -msgstr "Выполнить" +#: tcl/tklinuxcnc.tcl:1429 +msgid "Set Feed Override" +msgstr "Изменить подачу:" -#: tcl/bin/halconfig.tcl:943 tcl/bin/halshow.tcl:405 -msgid "Select a node to show." -msgstr "Выберите узел для показа" +#: tcl/tklinuxcnc.tcl:1435 +msgid "Set feed override:" +msgstr "Изменить подачу:" -#: tcl/bin/halconfig.tcl:968 tcl/bin/halshow.tcl:429 -msgid "<-- Select a Leaf. Click on its name." -msgstr "<-- Выберите пункт. Нажмите на его имени" +#: tcl/tklinuxcnc.tcl:1460 +msgid "Set Spindle Override" +msgstr "Изменить обороты шпинделя:" -#: tcl/bin/halconfig.tcl:1085 tcl/bin/halconfig.tcl:1095 -#: tcl/bin/halconfig.tcl:1102 tcl/bin/halconfig.tcl:1109 -#: tcl/bin/halconfig.tcl:1116 -#, tcl-format -msgid "Click a highlighted entry where %s should go." -msgstr "Нажмите на подсвеченном пункте куда должен попасть %s" +#: tcl/tklinuxcnc.tcl:1466 +msgid "Set spindle speed override:" +msgstr "Изменить обороты шпинделя:" -#: tcl/bin/halconfig.tcl:1092 -msgid "Nothing to be done for parameters here. Try the tuning page" -msgstr "Нечего делать для параметров. Посмотрите страницу настройки" +#: tcl/tklinuxcnc.tcl:1521 +msgid "Linear Jog Speed" +msgstr "Скорость линейного хода" -#: tcl/bin/halconfig.tcl:1124 -#, tcl-format -msgid "%s is not a leaf, try again" -msgstr "%s не крайний, попробуйте снова" +#: tcl/tklinuxcnc.tcl:1552 +msgid "Angular Jog Speed (deg)/min:" +msgstr "Скорость углового хода (deg)/min:" -#: tcl/bin/halconfig.tcl:1281 +#: tcl/tklinuxcnc.tcl:1596 +msgid "Spindle speed Override:" +msgstr "Обороты шпинделя:" + +#: tcl/tklinuxcnc.tcl:1642 +msgid "Program: " +msgstr "Программа:" + +#: tcl/tklinuxcnc.tcl:1647 +msgid " - Status: " +msgstr " -- Статус: " + +#: tcl/tklinuxcnc.tcl:1663 +msgid "Optional Stop" +msgstr "Останов по запросу" + +#: tcl/tklinuxcnc.tcl:2010 +msgid "Error" +msgstr "Ошибка" + +#: tcl/tklinuxcnc.tcl:2070 tcl/ngcgui_ttt.tcl:46 +msgid "Set Font" +msgstr "Установить шрифт" + +#: tcl/tklinuxcnc.tcl:2079 tcl/ngcgui_ttt.tcl:283 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4827 +msgid "Font" +msgstr "Шрифт" + +#: tcl/tklinuxcnc.tcl:2086 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3257 +msgid "Size" +msgstr "Размер" + +#: tcl/tklinuxcnc.tcl:2093 +msgid "Style" +msgstr "Стиль" + +#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:2031 +msgid "ESTOP" +msgstr "АВОСТ" + +#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2979 share/axis/tcl/axis.tcl:2033 +msgid "ON" +msgstr "ВКЛ" + +#: tcl/tklinuxcnc.tcl:2290 +msgid "LUBE ON" +msgstr "СМАЗКА ВКЛ" + +#: tcl/tklinuxcnc.tcl:2292 +msgid "LUBE OFF" +msgstr "СМАЗКА ВЫКЛ" + +#: tcl/tklinuxcnc.tcl:2294 +msgid "LUBE ?" +msgstr "СМАЗКА?" + +#: tcl/scripts/Set_Coordinates.tcl:23 #, fuzzy -msgid "" -"Copyright Raymond E Henry. 2006\n" -"License: GPL Version 2\n" -"\n" -"Halconfig is an LinuxCNC configuration tool. It requires that you have " -"started an instance of linuxcnc.\n" -"\n" -"This script carries no warranty or liability for its use to the extent " -"allowed by law." -msgstr "" -"Копирайт Raymond E Henry. 2006\n" -"Лицензия: GPL Version 2\n" -"\n" -"Halconfig это средство конфигурации EMC2. Он должен быть запущен в каталоге " -"emc2 и требует запущенный emc2 или новую конфигурацию из демонстрационного " -"RT-скрипта." +msgid "LinuxCNC Set Coordinate" +msgstr "EMC Установить координату" -#: tcl/bin/halshow.tcl:69 -msgid " SHOW " -msgstr "Показать" +#: tcl/scripts/Set_Coordinates.tcl:26 +msgid "Coordinate System Control Window" +msgstr "Окно управления координатной системой:" -#: tcl/bin/halshow.tcl:70 -msgid " WATCH " -msgstr "Следить" +#: tcl/scripts/Set_Coordinates.tcl:81 +msgid "Var # " +msgstr "Номер переменной" -#: tcl/bin/halshow.tcl:90 -msgid "Load Watch List" -msgstr "" +#: tcl/scripts/Set_Coordinates.tcl:82 +msgid "Offset Value " +msgstr "Значение отступа" -#: tcl/bin/halshow.tcl:102 -msgid "Tree View" -msgstr "Вид дерева" +#: tcl/scripts/Set_Coordinates.tcl:83 +msgid "What to Teach" +msgstr "Чему учить" -#: tcl/bin/halshow.tcl:349 -msgid "Test HAL command :" -msgstr "Проверить команду HAL:" +#: tcl/scripts/Set_Coordinates.tcl:101 +msgid "Set Old" +msgstr "Установить старое" -#: tcl/bin/halshow.tcl:544 -msgid "Load a watch list" +#: tcl/scripts/Set_Coordinates.tcl:102 +msgid "Set Zero" +msgstr "Установить ноль" + +#: tcl/scripts/Set_Coordinates.tcl:104 +msgid "Write" +msgstr "Записать" + +#: tcl/ngcgui.tcl:439 tcl/ngcgui.tcl:846 +msgid "Need non-null file name" +msgstr "" + +#: tcl/ngcgui.tcl:483 +msgid "Disallowed use of ngcgui generated file as Subfile" +msgstr "" + +#: tcl/ngcgui.tcl:489 +msgid "" +"marked (not_a_subfile)\n" +"Not intended for use as a subfile" msgstr "" -#: tcl/bin/halshow.tcl:567 -msgid "Save current watch list" +#: tcl/ngcgui.tcl:503 tcl/ngcgui.tcl:522 tcl/ngcgui.tcl:544 tcl/ngcgui.tcl:557 +#: tcl/ngcgui.tcl:577 tcl/ngcgui.tcl:682 +msgid "bogus" msgstr "" -#: tcl/bin/halshow.tcl:581 -msgid "Commands may be tested here but they will NOT be saved" -msgstr "Команды можно проверить здесь без сохранения" +#: tcl/ngcgui.tcl:505 +msgid "can not include subroutines within ngcgui subfile" +msgstr "" -#: tcl/bin/pickconfig.tcl:50 -msgid "" -"Can't find the bwidget 1.7 package. There is a debian bwidget package; " -"install \n" -"it with sudo apt-get install bwidget." -msgstr "Не могу найти пакет bwidget 1.7." +#: tcl/ngcgui.tcl:513 +msgid "Multiple subroutines in file not allowed" +msgstr "" -#: tcl/bin/pickconfig.tcl:178 -msgid "No details available." -msgstr "Детали не доступны." +#: tcl/ngcgui.tcl:524 +msgid "sub label" +msgstr "" -#: tcl/bin/pickconfig.tcl:194 +#: tcl/ngcgui.tcl:524 tcl/ngcgui.tcl:579 #, fuzzy -msgid "LinuxCNC Configuration Selector" -msgstr "Выбор конфигураций EMC" +msgid "does not match subroutine file name" +msgstr "Слишком много уровней подпрограммы" -#: tcl/bin/pickconfig.tcl:215 -#, fuzzy -msgid "" -"Welcome to LinuxCNC.\n" -"\n" -"Select a machine configuration from the list on the left.\n" -"Details about the selected configuration will appear in the display on the " -"right.\n" -"Click 'OK' to run the selected configuration" +#: tcl/ngcgui.tcl:539 tcl/ngcgui.tcl:540 +msgid "ignoring M2 after endsub" msgstr "" -"Добро пожаловать в EMC2.\n" -"\n" -"Выберите конфигурацию машины из списка слева.\n" -"Детали выбранной конфигурации можно посмотреть в окне справа.\n" -"Нажмите ОК для запуска с выбранной конфигурацией" -#: tcl/bin/pickconfig.tcl:271 -msgid "My Configurations" -msgstr "Мои конфигурации" +#: tcl/ngcgui.tcl:545 +msgid "file contains lines after subend" +msgstr "" -#: tcl/bin/pickconfig.tcl:274 -msgid "Sample Configurations" -msgstr "Примеры" +#: tcl/ngcgui.tcl:558 +msgid "file contains lines before sub" +msgstr "" -#: tcl/bin/pickconfig.tcl:332 -#, tcl-format -msgid "ERROR: no configurations found in path '%s'" -msgstr "Ошибка: нет конфигурации по пути '%s'" +#: tcl/ngcgui.tcl:579 +msgid "endsub label" +msgstr "" -#: tcl/bin/pickconfig.tcl:369 -msgid "Copy Configuration?" -msgstr "Скопировать конфигурацию?" +#: tcl/ngcgui.tcl:684 +msgid "out of sequence positional parameter" +msgstr "" -#: tcl/bin/pickconfig.tcl:369 -#, tcl-format -msgid "" -"Would you like to copy the %s configuration to your home directory so you " -"can customize it?" +#: tcl/ngcgui.tcl:684 +msgid "expected" msgstr "" -"Хотите поместить копию конфигурации %s к себе, чтобы иметь возможность её " -"изменять?" -#: tcl/bin/pickconfig.tcl:369 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:563 -msgid "Yes" -msgstr "Да" +#: tcl/ngcgui.tcl:735 +msgid "no sub found in file" +msgstr "" -#: tcl/bin/pickconfig.tcl:479 -msgid "Configuration Copied" -msgstr "Конфигурация скопирована" +#: tcl/ngcgui.tcl:738 +msgid "no endsub found in file" +msgstr "" -#: tcl/bin/pickconfig.tcl:479 -#, fuzzy, tcl-format -msgid "" -"The configuration file has been copied to %s. Next time, choose this " -"location when starting LinuxCNC." +#: tcl/ngcgui.tcl:801 +msgid "Cannot find gcmc executable" msgstr "" -"Файлы конфигурации были скопированы в %s. В следующий раз выбирайте это " -"место при старте EMC2." -#: tcl/bin/pickconfig.tcl:506 -msgid "Shortcut Created" -msgstr "Ссылка сделана" +#: tcl/ngcgui.tcl:802 +msgid "Please Install in path" +msgstr "" -#: tcl/bin/pickconfig.tcl:506 -msgid "" -"A shortcut to this configuration file has been created on your desktop. You " -"can use it to automatically launch this configuration." +#: tcl/ngcgui.tcl:810 +msgid "not embedded, deriving outdir from:" msgstr "" -"Ссылка на эту конфигурацию была добавлена на ваш рабочий стол. Вы можете " -"использовать ее для автоматического запуска этой конфигурации." -#: tcl/bin/pickconfig.tcl:511 -msgid "Create Desktop Shortcut" -msgstr "Сделать ссылку на рабочий стол" +#: tcl/ngcgui.tcl:1038 +#, fuzzy +msgid "Choose Files" +msgstr "Файл инструмента" -#: tcl/bin/tkbackplot.tcl:110 +#: tcl/ngcgui.tcl:1178 #, fuzzy -msgid "TkLinuxCNC BackPlot" -msgstr "TkEmc плоттер" +msgid "Controls" +msgstr "Control-M" -#: tcl/bin/tkbackplot.tcl:125 -msgid "SETUP" -msgstr "Настройки" +#: tcl/ngcgui.tcl:1187 +msgid "Preamble" +msgstr "" -#: tcl/bin/tkbackplot.tcl:127 -msgid "RESET" -msgstr "Сброс" +#: tcl/ngcgui.tcl:1200 +msgid "Subfile" +msgstr "" -#: tcl/bin/tkbackplot.tcl:129 -msgid "CANCEL" -msgstr "Отменить" +#: tcl/ngcgui.tcl:1212 +msgid "Postamble" +msgstr "" -#: tcl/bin/tkbackplot.tcl:250 -msgid "AXIS" -msgstr "Оси" +#: tcl/ngcgui.tcl:1229 +msgid "Retain values on Subfile read" +msgstr "" -#: tcl/bin/tkbackplot.tcl:251 -msgid "OFFSET" -msgstr "Отступ" +#: tcl/ngcgui.tcl:1237 +#, fuzzy +msgid "Expand subroutine" +msgstr "Раскрыть дерево" -#: tcl/bin/tkbackplot.tcl:252 -msgid "ANGLE" -msgstr "Угол" +#: tcl/ngcgui.tcl:1247 tcl/ngcgui.tcl:2571 +#, fuzzy +msgid "Autosend" +msgstr "Авто" -#: tcl/bin/tkbackplot.tcl:253 -msgid "DIRECTION" -msgstr "Направление" +#: tcl/ngcgui.tcl:1257 +#, fuzzy +msgid "Verbose ngcfile" +msgstr "rs274ngc файлы" -#: tcl/bin/tkbackplot.tcl:270 -msgid "SIZE :" -msgstr "Размер:" +#: tcl/ngcgui.tcl:1267 tcl/ngcgui.tcl:2393 tcl/ngcgui.tcl:2416 +#: tcl/ngcgui.tcl:2446 +msgid "Create Feature" +msgstr "" -#: tcl/mini.tcl:490 -#, tcl-format -msgid "JOG %s +" -msgstr "Шагнуть %s +" +#: tcl/ngcgui.tcl:1273 tcl/ngcgui.tcl:3058 +#, fuzzy +msgid "MakeFile" +msgstr "Файл" -#: tcl/mini.tcl:491 -#, tcl-format -msgid "JOG %s -" -msgstr "Шагнуть %s -" +#: tcl/ngcgui.tcl:1274 tcl/ngcgui.tcl:3055 +msgid "Finalize" +msgstr "" -#: tcl/mini.tcl:492 -#, tcl-format -msgid "" -"%s\n" -"\n" -"Z\n" -"E\n" -"R\n" -"O" +#: tcl/ngcgui.tcl:1291 +#, fuzzy +msgid "Reread" +msgstr "Поток" + +#: tcl/ngcgui.tcl:1310 +msgid "SendFileToAxis" msgstr "" -"%s\n" -"\n" -"Н\n" -"О\n" -"Л\n" -"Ь" -#: tcl/mini.tcl:840 -msgid "" -"TkMini \n" -"\n" -"Tcl/Tk GUI for Enhanced Machine Controller\n" -"\n" -"GPL Copyright 2003 \n" -"Ray Henry \n" -"\n" -" 3D backplotter by Paul Corner \n" -" \n" -"This software comes with ABSOLUTELY NO GUARANTEE! \n" -"For details see the copyright.html file in this directory." +#: tcl/ngcgui.tcl:1353 +msgid "Unrecoverable problem" msgstr "" -"TkMini \n" -"\n" -"Tcl/Tk GUI for Enhanced Machine Controller\n" -"\n" -"GPL Copyright 2003 \n" -"Ray Henry \n" -"\n" -" 3D backplotter by Paul Corner \n" -" \n" -"This software comes with ABSOLUTELY NO GUARANTEE! \n" -"For details see the copyright.html file in this directory." -#: tcl/mini.tcl:915 -msgid "Program" -msgstr "Программа" +#: tcl/ngcgui.tcl:1431 +msgid "Postamble file" +msgstr "" -#: tcl/mini.tcl:918 -msgid "Info" -msgstr "Инфо" +#: tcl/ngcgui.tcl:1481 +msgid "Subroutine file" +msgstr "" -#: tcl/mini.tcl:923 -msgid "Backplot" -msgstr "Плоттер" +#: tcl/ngcgui.tcl:1545 +#, fuzzy +msgid "Positional Parameters" +msgstr "Параметры" -#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:6125 -msgid "Editor" -msgstr "Редактор" +#: tcl/ngcgui.tcl:1694 +msgid "No Subfile specified" +msgstr "" -#: tcl/mini.tcl:927 -msgid "Offsets" -msgstr "Отступы" +#: tcl/ngcgui.tcl:1696 +#, fuzzy +msgid "No parameters yet" +msgstr "Параметры" -#: tcl/mini.tcl:929 -msgid "Tools" -msgstr "Инструменты" +#: tcl/ngcgui.tcl:1705 +msgid "Missing value for parm" +msgstr "" -#: tcl/mini.tcl:951 tcl/mini.tcl:3565 tcl/tklinuxcnc.tcl:732 -msgid "Reset" -msgstr "Сброс" +#: tcl/ngcgui.tcl:1726 +msgid "Output file" +msgstr "" -#: tcl/mini.tcl:960 -msgid "Position Type" -msgstr "Тип позиции:" +#: tcl/ngcgui.tcl:1841 +msgid "Multiple Tabs with Features" +msgstr "" -#: tcl/mini.tcl:962 -msgid "Tool Info" -msgstr "Инфо инструмента" +#: tcl/ngcgui.tcl:1842 +msgid "Finalize all Tabs?" +msgstr "" -#: tcl/mini.tcl:964 -msgid "Offset Info" -msgstr "Инфо по отступу" +#: tcl/ngcgui.tcl:1842 +msgid "Order" +msgstr "" -#: tcl/mini.tcl:967 -msgid "Show Restart" -msgstr "Показать перезапуск" +#: tcl/ngcgui.tcl:1844 +msgid "No, just this page" +msgstr "" -#: tcl/mini.tcl:968 -msgid "Hide Restart" -msgstr "Скрыть перезапуск" +#: tcl/ngcgui.tcl:1858 +msgid "Axis is not responding" +msgstr "" -#: tcl/mini.tcl:970 -msgid "Show Split Right" -msgstr "Показать раздел справа" +#: tcl/ngcgui.tcl:1859 +#, fuzzy +msgid "Error: " +msgstr "Ошибка" -#: tcl/mini.tcl:972 -msgid "Show Mode Full" -msgstr "Show Mode Full" +#: tcl/ngcgui.tcl:1861 +msgid "Autosend disabled, Ctrl-A toggles autosend" +msgstr "" -#: tcl/mini.tcl:974 -msgid "Show Popin Full" -msgstr "Show Popin Full" +#: tcl/ngcgui.tcl:1863 +msgid "File saving enabled -- Finalize to save" +msgstr "" -#: tcl/mini.tcl:978 -msgid "Actual Position" -msgstr "Настоящая позиция" +#: tcl/ngcgui.tcl:1879 +msgid "Require .ngc suffix for filename" +msgstr "" -#: tcl/mini.tcl:980 -msgid "Commanded Position" -msgstr "Заданная позиция" +#: tcl/ngcgui.tcl:1889 +msgid "Disallowed overwrite of" +msgstr "" -#: tcl/mini.tcl:983 -msgid "Machine Position" -msgstr "Машинная позиция" +#: tcl/ngcgui.tcl:1913 +msgid "FEATURE" +msgstr "" -#: tcl/mini.tcl:985 -msgid "Relative Position" -msgstr "Относительная позиция" +#: tcl/ngcgui.tcl:1920 +msgid "feature line added" +msgstr "" -#: tcl/mini.tcl:988 tcl/tklinuxcnc.tcl:747 -msgid "Calibration..." -msgstr "Калибровка..." +#: tcl/ngcgui.tcl:1932 +msgid "line added" +msgstr "" -#: tcl/mini.tcl:990 -msgid "HAL Show..." -msgstr "Показать HAL..." +#: tcl/ngcgui.tcl:1932 +msgid "activated" +msgstr "" -#: tcl/mini.tcl:992 -msgid "HAL Config..." -msgstr "Настроить HAL..." +#: tcl/ngcgui.tcl:1934 +msgid "restores" +msgstr "" -#: tcl/mini.tcl:997 -msgid "Program File" -msgstr "Файл программы" +#: tcl/ngcgui.tcl:1973 +msgid "NOTREACHED mode" +msgstr "" -#: tcl/mini.tcl:998 -#, tcl-format -msgid "Program file is %s" -msgstr "Файл программы %s" +#: tcl/ngcgui.tcl:1989 +msgid "Positional parameters for" +msgstr "" -#: tcl/mini.tcl:999 -msgid "Editor File" -msgstr "Файл редактора" +#: tcl/ngcgui.tcl:1997 +#, fuzzy +msgid "expanded file" +msgstr "Текстовые файлы" -#: tcl/mini.tcl:1000 -#, tcl-format -msgid "Editor file is %s" -msgstr "Файл редактора %s" +#: tcl/ngcgui.tcl:2011 +#, fuzzy +msgid "call subroutine file" +msgstr "Слишком много уровней подпрограммы" -#: tcl/mini.tcl:1001 -msgid "Parameter File" -msgstr "Файл параметров" +#: tcl/ngcgui.tcl:2394 +msgid "Enter parms for 1st feature" +msgstr "" -#: tcl/mini.tcl:1002 -#, tcl-format -msgid "Parameter file is %s" -msgstr "Файл параметров %s" +#: tcl/ngcgui.tcl:2401 +#, fuzzy +msgid "New Outfile" +msgstr "NC файлы" -#: tcl/mini.tcl:1003 -msgid "Tool File" -msgstr "Файл инструмента" +#: tcl/ngcgui.tcl:2403 +msgid "Ready to make New Outfile" +msgstr "" -#: tcl/mini.tcl:1004 -#, tcl-format -msgid "Tool file is %s" -msgstr "Файл инструмента %s" +#: tcl/ngcgui.tcl:2419 tcl/ngcgui.tcl:2452 +msgid "Enter parms for feature " +msgstr "" -#: tcl/mini.tcl:1006 -msgid "Active G Codes" -msgstr "Активные G-коды:" +#: tcl/ngcgui.tcl:2439 +msgid "feature" +msgstr "" -#: tcl/mini.tcl:1007 -#, tcl-format -msgid "" -"Active codes include; \n" -"%s" +#: tcl/ngcgui.tcl:2444 +msgid "Create Next" msgstr "" -"Активные коды включают: \n" -"%s" -#: tcl/mini.tcl:1010 tcl/mini.tcl:2558 tcl/tklinuxcnc.tcl:791 -msgid "Help..." -msgstr "Помощь..." +#: tcl/ngcgui.tcl:2449 +msgid "Created feature " +msgstr "" -#: tcl/mini.tcl:1027 tcl/tklinuxcnc.tcl:890 -msgid "ABORT" -msgstr "Отменить" +#: tcl/ngcgui.tcl:2473 +#, fuzzy +msgid "option" +msgstr "Motion" -#: tcl/mini.tcl:1038 tcl/mini.tcl:2048 -msgid "CONTINUE" -msgstr "Продолжить" +#: tcl/ngcgui.tcl:2484 +#, fuzzy +msgid "Missing parameters" +msgstr "Параметры" -#: tcl/mini.tcl:1044 tcl/tklinuxcnc.tcl:828 tcl/tklinuxcnc.tcl:2248 -#: src/emc/usr_intf/touchy/touchy.glade:1264 -msgid "MDI" -msgstr "MDI" +#: tcl/ngcgui.tcl:2488 +#, fuzzy +msgid "Parse Error" +msgstr "Ошибка" -#: tcl/mini.tcl:1048 tcl/tklinuxcnc.tcl:2239 -msgid "AUTO" -msgstr "Авто" +#: tcl/ngcgui.tcl:2495 +msgid "Null Preamble" +msgstr "" -#: tcl/mini.tcl:1052 tcl/mini.tcl:1812 tcl/tklinuxcnc.tcl:2141 -#: tcl/tklinuxcnc.tcl:2261 -msgid "MANUAL" -msgstr "Ручной" +#: tcl/ngcgui.tcl:2500 +msgid "Read Preamble" +msgstr "" -#: tcl/mini.tcl:1106 -msgid "Tool #:" -msgstr "Номер инструмента:" +#: tcl/ngcgui.tcl:2504 +msgid "Preamble Error" +msgstr "" -#: tcl/mini.tcl:1108 -msgid "Length :" -msgstr "Длина:" +#: tcl/ngcgui.tcl:2509 +msgid "Null Postamble" +msgstr "" -#: tcl/mini.tcl:1119 -msgid "Work Offsets: " -msgstr "Отступы заготовки:" +#: tcl/ngcgui.tcl:2514 +msgid "Read Postamble" +msgstr "" -#: tcl/mini.tcl:1121 -msgid "start offsets popup here" -msgstr "start offsets popup here" +#: tcl/ngcgui.tcl:2518 +msgid "Postamble Error" +msgstr "" -#: tcl/mini.tcl:1165 -msgid "start override popup here" -msgstr "start override popup here" +#: tcl/ngcgui.tcl:2523 +msgid "Read Subfile" +msgstr "" -#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1669 -msgid "Feed Override:" -msgstr "Изменить подачу:" +#: tcl/ngcgui.tcl:2528 +#, fuzzy +msgid "Write Error" +msgstr "Ошибка" -#: tcl/mini.tcl:1180 -msgid "-- MESSAGES --" -msgstr "-- MESSAGES --" +#: tcl/ngcgui.tcl:2532 +msgid "Outfile set" +msgstr "" -#: tcl/mini.tcl:1230 -msgid "toggleView's not doin nothin yet" -msgstr "toggleView's not doin nothin yet" +#: tcl/ngcgui.tcl:2537 +msgid "Finished" +msgstr "" -#: tcl/mini.tcl:1282 -msgid "Can't set zero with a tool offset active so I issued G49 to cancel it." +#: tcl/ngcgui.tcl:2542 +#, fuzzy +msgid "Canceled" +msgstr "Отмена" + +#: tcl/ngcgui.tcl:2548 +msgid "Sent" msgstr "" -"Не могу установить ноль с активной поправкой на инструмент, поэтому я " -"выполнил G49 для её отмены." -#: tcl/mini.tcl:1346 -#, tcl-format -msgid "Can't update the var file while machine is in auto and %s." -msgstr "Не могу обновить файл переменных в режиме Авто и %s." +#: tcl/ngcgui.tcl:2552 +#, fuzzy +msgid "SendFileToAxis failed" +msgstr "Ошибка фильтра" -#: tcl/mini.tcl:1400 tcl/tklinuxcnc.tcl:1227 -msgid "override limits" -msgstr "Игнорировать пределы" +#: tcl/ngcgui.tcl:2556 +msgid "Ctrl-k for Key bindings" +msgstr "" -#: tcl/mini.tcl:1405 tcl/tklinuxcnc.tcl:1263 -msgid "home" -msgstr "начало" +#: tcl/ngcgui.tcl:2560 +#, fuzzy +msgid "Expand sub" +msgstr "Раскрыть пункт" -#: tcl/mini.tcl:1426 -msgid "DEFAULT" -msgstr "Умолчание" +#: tcl/ngcgui.tcl:2564 +#, fuzzy +msgid "Retain values" +msgstr "Установить значение оси:" -#: tcl/mini.tcl:1427 -msgid "Speed:" -msgstr "Скорость:" +#: tcl/ngcgui.tcl:2568 +msgid "Verbose" +msgstr "" -#: tcl/mini.tcl:1430 -msgid "RAPID" -msgstr "Быстрый" +#: tcl/ngcgui.tcl:2574 +msgid "Finalize Canceled" +msgstr "" -#: tcl/mini.tcl:1447 tcl/tklinuxcnc.tcl:1391 -msgid "Set Jog Speed" -msgstr "Скорость перемещений" +#: tcl/ngcgui.tcl:2711 tcl/ngcgui.tcl:2867 +msgid "Dismiss" +msgstr "" -#: tcl/mini.tcl:1453 tcl/tklinuxcnc.tcl:1404 -msgid "Set jog speed:" -msgstr "Скорость быстрого хода:" +#: tcl/ngcgui.tcl:2716 +msgid "ngcgui Error" +msgstr "" -#: tcl/mini.tcl:1511 -msgid "JOG X +" -msgstr "Двигать X +" +#: tcl/ngcgui.tcl:2739 +msgid "Declining support for tk send bug in ngcgui" +msgstr "" -#: tcl/mini.tcl:1512 -msgid "JOG X -" -msgstr "Двигать X -" +#: tcl/ngcgui.tcl:2740 +msgid "You should upgrade linuxcnc to >= linuxcnc2.5" +msgstr "" + +#: tcl/ngcgui.tcl:2784 +msgid "pre2.4_send_file_to_axis:error" +msgstr "" + +#: tcl/ngcgui.tcl:2978 share/axis/tcl/axis.tcl:2032 +msgid "OFF" +msgstr "ВЫКЛ" -#: tcl/mini.tcl:1516 -msgid "increment" -msgstr "увеличить" +#: tcl/ngcgui.tcl:2981 +#, fuzzy +msgid "Toggle autosend" +msgstr "Включить охлаждение" -#: tcl/mini.tcl:1518 tcl/tklinuxcnc.tcl:602 tcl/tklinuxcnc.tcl:1249 -#: tcl/tklinuxcnc.tcl:1253 -msgid "continuous" -msgstr "Постоянный" +#: tcl/ngcgui.tcl:2982 tcl/ngcgui.tcl:3189 +#, fuzzy +msgid "Clear entries" +msgstr "Очистить сообщения" -#: tcl/mini.tcl:1520 -msgid "" -"A\n" -"L\n" -"L\n" -"\n" -"Z\n" -"E\n" -"R\n" -"O" +#: tcl/ngcgui.tcl:2983 +msgid "Set entries to default values" msgstr "" -"В\n" -"С\n" -"Е\n" -"\n" -"Н\n" -"О\n" -"Л\n" -"Ь" -#: tcl/mini.tcl:1588 src/emc/usr_intf/touchy/touchy.glade:1422 -msgid "Spindle Forward" -msgstr "Шпиндель вперед" +#: tcl/ngcgui.tcl:2984 tcl/ngcgui.tcl:2998 tcl/ngcgui.tcl:3000 +msgid "Open editor specified by" +msgstr "" -#: tcl/mini.tcl:1589 src/emc/usr_intf/touchy/touchy.glade:1433 -msgid "Spindle Reverse" -msgstr "Шпиндель назад:" +#: tcl/ngcgui.tcl:2985 +msgid "on last outfile" +msgstr "" -#: tcl/mini.tcl:1590 tcl/tklinuxcnc.tcl:871 -msgid "Spindle off" -msgstr "Выключить шпиндель" +#: tcl/ngcgui.tcl:2986 +#, fuzzy +msgid "toggle expand subroutines" +msgstr "Слишком много уровней подпрограммы" -#: tcl/mini.tcl:1592 src/emc/usr_intf/touchy/touchy.glade:1479 -msgid "Spindle Slower" -msgstr "Шпиндель медленнее" +#: tcl/ngcgui.tcl:2987 +msgid "Create feature" +msgstr "" -#: tcl/mini.tcl:1596 src/emc/usr_intf/touchy/touchy.glade:1464 -msgid "Spindle Faster" -msgstr "Шпиндель быстрее" +#: tcl/ngcgui.tcl:2988 +msgid "Finalize (AUTO send is" +msgstr "" -#: tcl/mini.tcl:1632 tcl/tklinuxcnc.tcl:1620 -msgid "MDI:" -msgstr "MDI:" +#: tcl/ngcgui.tcl:2989 +msgid "Show key bindings" +msgstr "" -#: tcl/mini.tcl:1669 tcl/tklinuxcnc.tcl:1658 -#: src/emc/usr_intf/stepconf/stepconf.glade:4403 -#: src/emc/usr_intf/pncconf/pncconf.glade:60509 -#: src/emc/usr_intf/pncconf/pncconf.glade:61603 -#: src/emc/usr_intf/pncconf/pncconf.glade:62696 -#: src/emc/usr_intf/pncconf/pncconf.glade:63789 -#: src/emc/usr_intf/pncconf/pncconf.glade:64889 -msgid "Run" -msgstr "Запустить" +#: tcl/ngcgui.tcl:2990 +msgid "Restart (cancel pending)" +msgstr "" -#: tcl/mini.tcl:1671 tcl/tklinuxcnc.tcl:1659 -#: src/emc/usr_intf/pncconf/pncconf.glade:60574 -#: src/emc/usr_intf/pncconf/pncconf.glade:61668 -#: src/emc/usr_intf/pncconf/pncconf.glade:62761 -#: src/emc/usr_intf/pncconf/pncconf.glade:63854 -msgid "Pause" -msgstr "Пауза" +#: tcl/ngcgui.tcl:2991 +msgid "(re)Read Preamble" +msgstr "" -#: tcl/mini.tcl:1673 tcl/tklinuxcnc.tcl:1660 -msgid "Resume" -msgstr "Продолжить" +#: tcl/ngcgui.tcl:2992 +msgid "(re)Read Postamble" +msgstr "" -#: tcl/mini.tcl:1675 tcl/tklinuxcnc.tcl:1661 -msgid "Step" -msgstr "Шаг" +#: tcl/ngcgui.tcl:2993 +msgid "(re)Read Subfile" +msgstr "" -#: tcl/mini.tcl:1677 tcl/tklinuxcnc.tcl:1662 -msgid "Verify" -msgstr "Проверить" +#: tcl/ngcgui.tcl:2994 +msgid "toggle retain values" +msgstr "" -#: tcl/mini.tcl:1698 -msgid "RESTART LINE" -msgstr "Строка рестарта" +#: tcl/ngcgui.tcl:2995 +msgid "toggle output file verbosity" +msgstr "" -#: tcl/mini.tcl:1699 -msgid "Back" -msgstr "Назад" +#: tcl/ngcgui.tcl:2996 +#, fuzzy +msgid "Show status" +msgstr "Показать перезапуск" -#: tcl/mini.tcl:1700 -msgid "Ahead" -msgstr "Вперед" +#: tcl/ngcgui.tcl:2997 +msgid "Show full status (debug info)" +msgstr "" -#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1221 -msgid "Restart" -msgstr "Рестарт" +#: tcl/ngcgui.tcl:2999 +#, fuzzy +msgid "on current subfile" +msgstr "Перечитать текущий файл·[Control-R]" -#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 -#: tcl/tklinuxcnc.tcl:465 src/emc/usr_intf/axis/scripts/axis.py:1885 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:754 -msgid "All files" -msgstr "Все файлы" +#: tcl/ngcgui.tcl:3001 +msgid "on current preamble" +msgstr "" -#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 -#: tcl/tklinuxcnc.tcl:466 -msgid "Text files" -msgstr "Текстовые файлы" +#: tcl/ngcgui.tcl:3004 +msgid " Escape Return to Preview page" +msgstr "" -#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 -#: tcl/tklinuxcnc.tcl:467 -msgid "NC files" -msgstr "NC файлы" +#: tcl/ngcgui.tcl:3081 +msgid "Editing requires setting for environmental variable VISUAL" +msgstr "" -#: tcl/mini.tcl:1753 -msgid "" -"The interpreter is running. \n" -" Pressing OK will abort and load the new program" +#: tcl/ngcgui.tcl:3082 +msgid "Trying gedit" msgstr "" -"Интерпретатор работает. \n" -"Нажмите OK чтобы остановить его и загрузить новую программу" -#: tcl/mini.tcl:1886 -msgid "ESTOPPED" -msgstr "АВОСТ" +#: tcl/ngcgui.tcl:3095 +#, fuzzy +msgid "No file available for editing yet" +msgstr "Не целое число для целого аргумента" -#: tcl/mini.tcl:1889 -msgid "ESTOP PUSH" -msgstr "Нажать АВОСТ" +#: tcl/ngcgui.tcl:3104 tcl/ngcgui.tcl:3113 +#, fuzzy +msgid "No file available for editing" +msgstr "Не целое число для целого аргумента" -#: tcl/mini.tcl:1892 tcl/tklinuxcnc.tcl:2233 -msgid "ESTOP RESET" -msgstr "Сбросить АВОСТ" +#: tcl/ngcgui.tcl:3130 +#, fuzzy +msgid "Status items" +msgstr "Статус" -#: tcl/mini.tcl:1897 tcl/tklinuxcnc.tcl:2298 -msgid "SPINDLE FORWARD" -msgstr "Шпиндель вперед" +#: tcl/ngcgui.tcl:3143 +msgid "All-page opt items" +msgstr "" -#: tcl/mini.tcl:1899 tcl/tklinuxcnc.tcl:2300 -msgid "SPINDLE REVERSE" -msgstr "Шпиндель назад" +#: tcl/ngcgui.tcl:3149 +msgid "any-items" +msgstr "" -#: tcl/mini.tcl:1901 tcl/tklinuxcnc.tcl:2302 -msgid "SPINDLE OFF" -msgstr "Выключить шпиндель" +#: tcl/ngcgui.tcl:3182 +#, fuzzy +msgid "Set defaults" +msgstr "умолчания AXIS" -#: tcl/mini.tcl:1903 tcl/tklinuxcnc.tcl:2304 -msgid "SPINDLE INCREASE" -msgstr "Шпиндель быстрее" +#: tcl/ngcgui.tcl:3257 +msgid "not writable" +msgstr "" -#: tcl/mini.tcl:1905 tcl/tklinuxcnc.tcl:2306 -msgid "SPINDLE DECREASE" -msgstr "Шпиндель медленнее" +#: tcl/ngcgui.tcl:3396 tcl/ngcgui.tcl:3577 +#, fuzzy +msgid "new" +msgstr "Новый" -#: tcl/mini.tcl:1907 tcl/tklinuxcnc.tcl:2308 -msgid "SPINDLE ?" -msgstr "Шпиндель?" +#: tcl/ngcgui.tcl:3422 +msgid "Open a new Subfile" +msgstr "" -#: tcl/mini.tcl:1911 tcl/tklinuxcnc.tcl:2312 -msgid "BRAKE ON" -msgstr "Включить тормоз" +#: tcl/ngcgui.tcl:3568 +msgid "remove" +msgstr "" -#: tcl/mini.tcl:1913 tcl/tklinuxcnc.tcl:2314 -msgid "BRAKE OFF" -msgstr "Выключить тормоз" +#: tcl/ngcgui.tcl:3590 tcl/ngcgui.tcl:3596 +msgid "move" +msgstr "" -#: tcl/mini.tcl:1915 tcl/tklinuxcnc.tcl:2316 -msgid "BRAKE ?" -msgstr "Тормоз?" +#: tcl/ngcgui.tcl:3704 src/emc/usr_intf/pncconf/pncconf.py:7374 +#: src/emc/usr_intf/pncconf/pncconf.py:7485 +#: src/emc/usr_intf/pncconf/pncconf.py:7650 +msgid "Custom" +msgstr "" -#: tcl/mini.tcl:1919 tcl/tklinuxcnc.tcl:2274 -msgid "MIST ON" -msgstr "Включить туман" +#: tcl/ngcgui.tcl:3730 +msgid "Problem creating page" +msgstr "" -#: tcl/mini.tcl:1921 tcl/tklinuxcnc.tcl:2276 -msgid "MIST OFF" -msgstr "Выключить туман" +#: tcl/ngcgui.tcl:3737 +msgid "entrykeybindings not available" +msgstr "" -#: tcl/mini.tcl:1923 tcl/tklinuxcnc.tcl:2278 -msgid "MIST ?" -msgstr "Туман?" +#: tcl/ngcgui.tcl:3781 +msgid "Found multiple matches for" +msgstr "" -#: tcl/mini.tcl:1927 tcl/tklinuxcnc.tcl:2282 -msgid "FLOOD ON" -msgstr "Включить струю" +#: tcl/ngcgui.tcl:3782 +msgid "using path" +msgstr "" -#: tcl/mini.tcl:1929 tcl/tklinuxcnc.tcl:2284 -msgid "FLOOD OFF" -msgstr "Выключить струю" +#: tcl/ngcgui.tcl:3790 src/emc/usr_intf/axis/scripts/axis.py:2440 +#: src/emc/usr_intf/axis/scripts/axis.py:2453 +msgid "Warning" +msgstr "" -#: tcl/mini.tcl:1931 tcl/tklinuxcnc.tcl:2286 -msgid "FLOOD ?" -msgstr "Струя?" +#: tcl/ngcgui.tcl:3791 +msgid "File absolute path specifier conflicts with searchpath result" +msgstr "" -#: tcl/mini.tcl:2052 -msgid "FEEDHOLD" -msgstr "Приостановка подачи" +#: tcl/ngcgui.tcl:3792 +#, fuzzy +msgid "Absolute Specifier" +msgstr "Абсолютный" -#: tcl/mini.tcl:2124 -msgid "" -"TOOL SETUP \n" -" Click or tab to edit. Press enter to return to keyboard machine control." +#: tcl/ngcgui.tcl:3793 +msgid "Using Search Result" msgstr "" -"Настройка инструмента \n" -" Нажмите ввод для возврата в управление машиной." -#: tcl/mini.tcl:2130 -msgid " TOOL NUMBER " -msgstr "Номер инструмента" +#: tcl/ngcgui.tcl:3798 +msgid "File not in Search Path" +msgstr "" -#: tcl/mini.tcl:2131 -msgid " LENGTH " -msgstr "Длина" +#: tcl/ngcgui.tcl:3800 +msgid "Must be in search path" +msgstr "" + +#: tcl/ngcgui.tcl:3802 +msgid "(File found -- not in search path)" +msgstr "" + +#: tcl/ngcgui.tcl:3804 +#, fuzzy +msgid "Current directory" +msgstr "Каталог конфигураций:" -#: tcl/mini.tcl:2132 -msgid " DIAMETER " -msgstr "Диаметр" +#: tcl/ngcgui.tcl:3805 +msgid "Search path" +msgstr "" -#: tcl/mini.tcl:2133 -msgid " COMMENT " -msgstr "Комментарий" +#: tcl/ngcgui.tcl:3815 +msgid "Check setting for" +msgstr "" -#: tcl/mini.tcl:2188 -msgid "Add Extra Tool" -msgstr "Добавить инструмент" +#: tcl/ngcgui.tcl:3816 +#, fuzzy +msgid "in ini file" +msgstr "(нет файла)" -#: tcl/mini.tcl:2189 -msgid "Remove Last Tool" -msgstr "Удалить последний инструмент" +#: tcl/ngcgui.tcl:3817 +msgid "(Restart required after fixing ini file)" +msgstr "" -#: tcl/mini.tcl:2217 tcl/mini.tcl:2253 -#, tcl-format -msgid "Can't update the tool file while machine is in auto and %s." -msgstr "Не могу изменить файл инструмента пока машина в режиме авто и %s." +#: tcl/ngcgui.tcl:3832 +#, fuzzy +msgid "Try to Continue" +msgstr "Продолжить" -#: tcl/mini.tcl:2229 -msgid "This is not a good number." -msgstr "Неподходящее число." +#: tcl/ngcgui.tcl:3837 +#, fuzzy +msgid "Ngcgui Configuration File Not Found" +msgstr "Открыть файл конфигурации" -#: tcl/mini.tcl:2293 -msgid "" -"COORDINATE SYSTEM SETUP \n" -"\n" -" Click value to edit with keyboard. Press enter to return to keyboard " -"control of machine. \n" -" " +#: tcl/ngcgui.tcl:3917 +msgid "Missing Tcl Package Img" msgstr "" -"Настройка координатной системы \n" -"\n" -" Нажмите на значение для изменения. Нажмите ввод для возврата в управление " -"машиной." -#: tcl/mini.tcl:2320 tcl/scripts/Set_Coordinates.tcl:80 -msgid "Axis " -msgstr "Ось " +#: tcl/ngcgui.tcl:3918 +msgid "Please install Img" +msgstr "" -#: tcl/mini.tcl:2321 -msgid "Value " -msgstr "Значение" +#: tcl/ngcgui.tcl:4122 +#, fuzzy +msgid "ini file" +msgstr "(нет файла)" -#: tcl/mini.tcl:2326 tcl/scripts/Set_Coordinates.tcl:91 -msgid "Teach" -msgstr "Научить" +#: tcl/ngcgui.tcl:4131 +msgid "not found" +msgstr "" -#: tcl/mini.tcl:2334 -msgid "Write And Load File " -msgstr "Записать и загрузить файл" +#: tcl/ngcgui_ttt.tcl:67 +msgid "found truetype-tracer v4 -OK" +msgstr "" -#: tcl/mini.tcl:2336 -msgid "Offset By Radius" -msgstr "Отступ по радиусу" +#: tcl/ngcgui_ttt.tcl:70 +msgid "Note truetype-tracer v4 is required" +msgstr "" -#: tcl/mini.tcl:2337 -msgid "Offset By Length" -msgstr "Отступ по длине" +#: tcl/ngcgui_ttt.tcl:71 +msgid "Note: truetype-tracer v4 is required" +msgstr "" -#: tcl/mini.tcl:2342 -msgid "Subtract" -msgstr "Вычесть" +#: tcl/ngcgui_ttt.tcl:81 +msgid "ngcgui_app.tcl must be loaded before" +msgstr "" -#: tcl/mini.tcl:2344 -msgid "Add" -msgstr "Добавить" +#: tcl/ngcgui_ttt.tcl:89 +msgid "Create a subroutine file from truetype-tracer (V4 reqd)" +msgstr "" -#: tcl/mini.tcl:2366 -msgid "Zero All G54" -msgstr "Обнулить все G54" +#: tcl/ngcgui_ttt.tcl:102 tcl/ngcgui_ttt.tcl:115 +#, fuzzy +msgid "problem with" +msgstr "Заменить на:" -#: tcl/mini.tcl:2367 -msgid "Zero All G55" -msgstr "Обнулить все G55" +#: tcl/ngcgui_ttt.tcl:106 +msgid "No entry for" +msgstr "" -#: tcl/mini.tcl:2368 -msgid "Zero All G56" -msgstr "Обнулить все G56" +#: tcl/ngcgui_ttt.tcl:109 +msgid "wrong version of truetype-tracer" +msgstr "" -#: tcl/mini.tcl:2369 -msgid "Zero All G57" -msgstr "Обнулить все G57" +#: tcl/ngcgui_ttt.tcl:125 +msgid "not writable, using" +msgstr "" -#: tcl/mini.tcl:2370 -msgid "Zero All G58" -msgstr "Обнулить все G58" +#: tcl/ngcgui_ttt.tcl:125 +msgid "and setting expandsub" +msgstr "" -#: tcl/mini.tcl:2371 -msgid "Zero All G59" -msgstr "Обнулить все G59" +#: tcl/ngcgui_ttt.tcl:161 +msgid "Text" +msgstr "текст" -#: tcl/mini.tcl:2372 -msgid "Zero All G59.1" -msgstr "Обнулить все G59.1" +#: tcl/ngcgui_ttt.tcl:171 +#, fuzzy +msgid "Linescale" +msgstr "Масштаб оси:" -#: tcl/mini.tcl:2373 -msgid "Zero All G59.2" -msgstr "Обнулить все G59.2" +#: tcl/ngcgui_ttt.tcl:177 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3583 +msgid "none" +msgstr "" -#: tcl/mini.tcl:2374 -msgid "Zero All G59.3" -msgstr "Обнулить все G59.3" +#: tcl/ngcgui_ttt.tcl:192 +msgid "Subdiv" +msgstr "" -#: tcl/mini.tcl:2375 -msgid "Zero All ????" -msgstr "Обнулить все ????" +#: tcl/ngcgui_ttt.tcl:199 +#, fuzzy +msgid "default" +msgstr "умолчания AXIS" -#: tcl/mini.tcl:2493 -msgid "Modified..." -msgstr "Изменен..." +#: tcl/ngcgui_ttt.tcl:239 +#, fuzzy +msgid "Mode" +msgstr "Режим работы" -#: tcl/mini.tcl:2538 -msgid "Save and Load" -msgstr "Сохранить и загрузить" +#: tcl/ngcgui_ttt.tcl:247 +#, fuzzy +msgid "normal" +msgstr "Нормальный" -#: tcl/mini.tcl:2540 -msgid "Undo" -msgstr "Откатить" +#: tcl/ngcgui_ttt.tcl:248 +msgid "date" +msgstr "" -#: tcl/mini.tcl:2541 -msgid "Redo" -msgstr "Накатить" +#: tcl/ngcgui_ttt.tcl:249 +msgid "fontname" +msgstr "" -#: tcl/mini.tcl:2546 -msgid "Delete" -msgstr "Удалить" +#: tcl/ngcgui_ttt.tcl:262 +#, fuzzy +msgid "Switches" +msgstr "дюймы" -#: tcl/mini.tcl:2551 -msgid "Replace..." -msgstr "Заменить..." +#: tcl/ngcgui_ttt.tcl:270 +msgid "Unicode" +msgstr "" -#: tcl/mini.tcl:2664 -msgid "Next Number: " -msgstr "Следующий номер:" +#: tcl/ngcgui_ttt.tcl:275 +#, fuzzy +msgid "Allow Rotation" +msgstr "XY вращение:" -#: tcl/mini.tcl:2765 -msgid "Basic Help" -msgstr "Помощь" +#: tcl/ngcgui_ttt.tcl:295 +msgid "Make ngcgui-compatible subfile and new tab page" +msgstr "" -#: tcl/mini.tcl:2765 -msgid "" -"This is a simple ASCII editor like many others.\n" -"\n" -"Ctrl+O Open\n" -"Ctrl+S Save\n" -"Ctrl+Z Undo\n" -"Ctrl+Y Redo\n" -"Ctrl+X Cut\n" -"Ctrl+C Copy\n" -"Ctrl+V Paste\n" -"Del Delete\n" -"Ctrl+A Select All\n" -"\n" -"Ctrl+F Find\n" -"Ctrl+R Replace " +#: tcl/ngcgui_ttt.tcl:353 +msgid "Null text" msgstr "" -"Это простенький редактор.\n" -"\n" -"Ctrl+O Открыть\n" -"Ctrl+S Сохранить\n" -"Ctrl+Z Откатить\n" -"Ctrl+Y Накатить\n" -"Ctrl+X Вырезать\n" -"Ctrl+C Скопировать\n" -"Ctrl+V Вставить\n" -"Del Удалить\n" -"Ctrl+A Выбрать все\n" -"\n" -"Ctrl+F Найти\n" -"Ctrl+R Заменить" -#: tcl/mini.tcl:2785 -msgid "" -"tknotepad by Joseph Acosta. \n" -"\n" -" Modified for EMC by: Paul Corner " +#: tcl/ngcgui_ttt.tcl:384 +msgid "Using truetype-tracer default font" msgstr "" -#: tcl/mini.tcl:2793 -msgid "" -"The contents of this file may have changed, do you wish to to save your " -"changes?" -msgstr "Содержимое файла изменено, хотите сохранить изменения?" +#: tcl/ngcgui_ttt.tcl:388 +#, fuzzy +msgid "no such file" +msgstr "(нет файла)" + +#: tcl/ngcgui_ttt.tcl:393 +#, fuzzy +msgid "file not readable" +msgstr "Файл не найден" -#: tcl/mini.tcl:2794 -msgid "New Confirm?" -msgstr "Подтвердить новый?" +#: tcl/ngcgui_ttt.tcl:507 +msgid "Creating new tab page" +msgstr "" -#: tcl/mini.tcl:2928 -msgid "Print Setup" -msgstr "Настройки печати" +#: tcl/ngcgui_app.tcl:25 +msgid "" +"requires command inifindall\n" +"from axis.py (LinuxCNC 2.5) or" +msgstr "" -#: tcl/mini.tcl:2932 -msgid "Print Command: " -msgstr "Команда печати:" +#: tcl/ngcgui_app.tcl:55 +#, fuzzy +msgid "Substituting" +msgstr "Настройки" -#: tcl/mini.tcl:3095 -msgid "Find what:" -msgstr "Что искать:" +#: tcl/ngcgui_app.tcl:55 +msgid "for" +msgstr "" -#: tcl/mini.tcl:3101 -msgid "Replace with:" -msgstr "Заменить на:" +#: tcl/ngcgui_app.tcl:59 +#, fuzzy +msgid "not readable" +msgstr "Файл не найден" -#: tcl/mini.tcl:3109 -msgid "Find Next" -msgstr "Найти дальше" +#: tcl/ngcgui_app.tcl:65 tcl/ngcgui_app.tcl:68 +msgid "Unexpected: multiple startups for ngcgui" +msgstr "" -#: tcl/mini.tcl:3112 -msgid "Replace" -msgstr "Заменить" +#: tcl/ngcgui_app.tcl:66 +#, fuzzy +msgid "LinuxCNC" +msgstr "Отладка EMC" -#: tcl/mini.tcl:3120 -msgid "Up" -msgstr "Вверх" +#: tcl/ngcgui_app.tcl:67 +msgid "for linuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" +msgstr "" -#: tcl/mini.tcl:3121 -msgid "Down" -msgstr "Вниз" +#: tcl/ngcgui_app.tcl:86 +#, fuzzy +msgid "LinuxCNC version" +msgstr "Ошибки EMC2" -#: tcl/mini.tcl:3124 -msgid "Match case" -msgstr "Match case" +#: tcl/ngcgui_app.tcl:87 +msgid "for LinuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" +msgstr "" -#: tcl/mini.tcl:3569 -msgid "rot-x" -msgstr "rot-x" +#: tcl/tooledit.tcl:65 +msgid "Problem reading ~/.tooleditrc" +msgstr "" -#: tcl/mini.tcl:3579 -msgid "rot-y" -msgstr "rot-y" +#: tcl/tooledit.tcl:82 +#, tcl-format +msgid "Note: Ignoring duplicate column name: %s" +msgstr "" -#: tcl/mini.tcl:3589 -msgid "rot-z" -msgstr "rot-z" +#: tcl/tooledit.tcl:93 +#, fuzzy, tcl-format +msgid "Unknown column: %s" +msgstr "Неизвестный инструмент %d" -#: tcl/mini.tcl:3599 -msgid "zoom" -msgstr "zoom" +#: tcl/tooledit.tcl:210 tcl/tooledit.tcl:213 tcl/tooledit.tcl:598 +#: tcl/tooledit.tcl:599 tcl/tooledit.tcl:1032 +msgid "NEW" +msgstr "" -#: tcl/mini.tcl:3655 -msgid "TEST" -msgstr "TEST" +#: tcl/tooledit.tcl:232 +#, tcl-format +msgid "%s must be a number" +msgstr "" -#: tcl/mini.tcl:3699 -msgid "Hide Setup" -msgstr "Спрятать настройки" +#: tcl/tooledit.tcl:241 +#, fuzzy, tcl-format +msgid "filename: <%s> not readable" +msgstr "Файл не найден" -#: tcl/mini.tcl:3703 -msgid "Show Setup" -msgstr "Показать настройки" +#: tcl/tooledit.tcl:245 +#, fuzzy, tcl-format +msgid "filename: <%s> not writable" +msgstr "Файл не найден" -#: tcl/show_errors.tcl:41 -#, fuzzy -msgid "LinuxCNC Errors" -msgstr "Ошибки EMC2" +#: tcl/tooledit.tcl:250 +#, tcl-format +msgid "directory: <%s> not writable" +msgstr "" -#: tcl/show_errors.tcl:44 -#, fuzzy -msgid "" -"LinuxCNC terminated with an error. When reporting problems, please include " -"all the information below in your message." +#: tcl/tooledit.tcl:294 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, value <%s> is not a number" msgstr "" -"EMC2 завершился с ошибкой. При сообщении о проблеме, пожалуйста вложите все " -"следующие сведения." -#: tcl/show_errors.tcl:69 tcl/scripts/Set_Coordinates.tcl:103 -msgid "Close" -msgstr "Закрыть" +#: tcl/tooledit.tcl:300 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, expected integer not <%s>" +msgstr "" -#: tcl/tklinuxcnc.tcl:154 tcl/tklinuxcnc.tcl:181 -msgid "Set Run Mark" -msgstr "Поставить метку исполнения" +#: tcl/tooledit.tcl:316 +#, tcl-format +msgid "At linenumber %d, Unknown tag <%s>" +msgstr "" -#: tcl/tklinuxcnc.tcl:156 +#: tcl/tooledit.tcl:399 #, tcl-format -msgid "Set run mark at line %s?" -msgstr "Поставить метку исполнения на строке %s?" +msgid "%s: Column sorting not available with tcl_version==%s" +msgstr "" -#: tcl/tklinuxcnc.tcl:176 tcl/tklinuxcnc.tcl:204 -msgid "untitled" -msgstr "безымянный" +#: tcl/tooledit.tcl:408 +#, fuzzy +msgid "tool" +msgstr "Без инструмента" -#: tcl/tklinuxcnc.tcl:212 -msgid "Load Parameter File" -msgstr "Загрузить файл параметров" +#: tcl/tooledit.tcl:409 +msgid "poc" +msgstr "" -#: tcl/tklinuxcnc.tcl:261 +#: tcl/tooledit.tcl:410 #, fuzzy -msgid "LinuxCNC Diagnostics" -msgstr "Диагностика EMC" - -#: tcl/tklinuxcnc.tcl:263 -msgid "Task" -msgstr "Задача" +msgid "diam" +msgstr "диаметр" -#: tcl/tklinuxcnc.tcl:265 tcl/tklinuxcnc.tcl:288 tcl/tklinuxcnc.tcl:311 -msgid "Heartbeat:" -msgstr "Heartbeat:" +#: tcl/tooledit.tcl:411 +msgid "front" +msgstr "" -#: tcl/tklinuxcnc.tcl:268 tcl/tklinuxcnc.tcl:291 tcl/tklinuxcnc.tcl:314 -msgid "Command:" -msgstr "Команда:" +#: tcl/tooledit.tcl:412 +msgid "back" +msgstr "" -#: tcl/tklinuxcnc.tcl:271 tcl/tklinuxcnc.tcl:294 tcl/tklinuxcnc.tcl:317 -msgid "Command #:" -msgstr "Номер команды:" +#: tcl/tooledit.tcl:413 +msgid "orien" +msgstr "" -#: tcl/tklinuxcnc.tcl:274 tcl/tklinuxcnc.tcl:297 tcl/tklinuxcnc.tcl:320 -msgid "Status:" -msgstr "Статус:" +#: tcl/tooledit.tcl:414 +#, fuzzy +msgid "comment" +msgstr "Увеличить" -#: tcl/tklinuxcnc.tcl:286 -msgid "Io" -msgstr "Io" +#: tcl/tooledit.tcl:444 +#, fuzzy +msgid "Del" +msgstr "Удалить" -#: tcl/tklinuxcnc.tcl:309 -msgid "Motion" -msgstr "Motion" +#: tcl/tooledit.tcl:473 +#, fuzzy +msgid "ReLoadTable" +msgstr "Загрузить таблицу инструментов" -#: tcl/tklinuxcnc.tcl:350 +#: tcl/tooledit.tcl:478 #, fuzzy -msgid "About TkLinuxCNC" -msgstr "О TkEditor" +msgid "SaveFile" +msgstr "Сохранить в файл" -#: tcl/tklinuxcnc.tcl:351 +#: tcl/tooledit.tcl:483 +msgid "ReRead" +msgstr "" + +#: tcl/tooledit.tcl:485 #, fuzzy -msgid "" -"TkLinuxcnc\n" -"\n" -"Tcl/Tk GUI for LinuxCNC\n" -"\n" -"GPL Version 2 (2012)" +msgid "AddTool" +msgstr "Инструменты" + +#: tcl/tooledit.tcl:535 +#, tcl-format +msgid "Opened %s" msgstr "" -"TkEmc\n" -"\n" -"Tcl/Tk GUI for Enhanced Machine Controller version 2 (EMC2)\n" -"\n" -"GPL Version 2 (2006)" -#: tcl/tklinuxcnc.tcl:399 -msgid "Set Tool Offset" -msgstr "Установить отступ инструмента" +#: tcl/tooledit.tcl:536 +#, tcl-format +msgid "Created %s" +msgstr "" -#: tcl/tklinuxcnc.tcl:404 tcl/tklinuxcnc.tcl:905 -msgid "Tool:" -msgstr "Инструмент:" +#: tcl/tooledit.tcl:537 +msgid "File updated" +msgstr "" -#: tcl/tklinuxcnc.tcl:722 -msgid "Edit..." -msgstr "Изменить..." +#: tcl/tooledit.tcl:538 +msgid "File modified" +msgstr "" -#: tcl/tklinuxcnc.tcl:727 -msgid "Tool Table Editor..." -msgstr "Редактор таблицы инструментов..." +#: tcl/tooledit.tcl:539 +msgid "File check errors" +msgstr "" -#: tcl/tklinuxcnc.tcl:730 src/emc/usr_intf/touchy/touchy.glade:1383 -msgid "Reload Tool Table" -msgstr "Загрузить таблицу инструментов" +#: tcl/tooledit.tcl:540 +msgid "File checked" +msgstr "" -#: tcl/tklinuxcnc.tcl:740 -msgid "Offsets and Variables..." -msgstr "Отступы и переменные..." +#: tcl/tooledit.tcl:541 +msgid "File items deleted" +msgstr "" -#: tcl/tklinuxcnc.tcl:741 -msgid "Diagnostics..." -msgstr "Диагностика..." +#: tcl/tooledit.tcl:542 +msgid "Bogus lines in file ignored" +msgstr "" -#: tcl/tklinuxcnc.tcl:742 -msgid "Backplot..." -msgstr "Плоттер..." +#: tcl/tooledit.tcl:543 +msgid "File errors -- Check Entries" +msgstr "" -#: tcl/tklinuxcnc.tcl:748 -msgid "Testing..." -msgstr "Проверка..." +#: tcl/tooledit.tcl:544 +msgid "Warning: File changed by another process" +msgstr "" -#: tcl/tklinuxcnc.tcl:749 -msgid "Debug..." -msgstr "Отладка..." +#: tcl/tooledit.tcl:545 +msgid "Warning: File deleted by another process" +msgstr "" -#: tcl/tklinuxcnc.tcl:750 -msgid "Font..." -msgstr "Шрифт..." +#: tcl/tooledit.tcl:546 +#, fuzzy +msgid "Added Tool" +msgstr "Добавить инструмент" -#: tcl/tklinuxcnc.tcl:754 src/emc/usr_intf/axis/scripts/image-to-gcode.py:665 -msgid "Units" -msgstr "Единицы" +#: tcl/tooledit.tcl:550 +#, tcl-format +msgid "Sorted by %s, increasing" +msgstr "" -#: tcl/tklinuxcnc.tcl:755 -msgid "auto" -msgstr "авто" +#: tcl/tooledit.tcl:551 +#, tcl-format +msgid "Sorted by %s, decreasing" +msgstr "" -#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8512 -msgid "inches" -msgstr "дюймы" +#: tcl/tooledit.tcl:593 +msgid "Added" +msgstr "" -#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1556 -#: src/emc/usr_intf/axis/scripts/axis.py:1726 -#: src/emc/usr_intf/touchy/touchy.glade:3301 -#: src/emc/usr_intf/stepconf/stepconf.py:1685 -#: src/emc/usr_intf/stepconf/stepconf.py:2221 -#: src/emc/usr_intf/stepconf/stepconf.glade:4357 -#: src/emc/usr_intf/pncconf/pncconf.py:8508 -#: src/emc/usr_intf/pncconf/pncconf.glade:2229 -#: src/emc/usr_intf/pncconf/pncconf.glade:2394 -#: src/emc/usr_intf/pncconf/pncconf.glade:57616 -#: src/emc/usr_intf/pncconf/pncconf.glade:57688 -#: src/emc/usr_intf/pncconf/pncconf.glade:60646 -#: src/emc/usr_intf/pncconf/pncconf.glade:61739 -#: src/emc/usr_intf/pncconf/pncconf.glade:62832 -#: src/emc/usr_intf/pncconf/pncconf.glade:63925 -#: src/emc/usr_intf/pncconf/pncconf.glade:65091 -msgid "mm" -msgstr "мм" +#: tcl/tooledit.tcl:802 +#, tcl-format +msgid "Tool %s, Column %s, parameter %s is not a number" +msgstr "" -#: tcl/tklinuxcnc.tcl:758 -msgid "cm" -msgstr "см" +#: tcl/tooledit.tcl:811 +#, tcl-format +msgid "Tool %s, parameter %s must be nonnegative integer" +msgstr "" -#: tcl/tklinuxcnc.tcl:762 -msgid "Utilities" -msgstr "Утилиты" +#: tcl/tooledit.tcl:819 +#, tcl-format +msgid "Tool %s: must be 0..9 integer" +msgstr "" -#: tcl/tklinuxcnc.tcl:763 -msgid "Hal Scope" -msgstr "HAL-скоп" +#: tcl/tooledit.tcl:826 +#, tcl-format +msgid "Tool %s: <%s> must be between -360 and 360" +msgstr "" + +#: tcl/tooledit.tcl:842 +#, tcl-format +msgid "Pocket <%s> specified multiple times" +msgstr "" + +#: tcl/tooledit.tcl:857 +#, tcl-format +msgid "Tool <%s> specified multiple times" +msgstr "" + +#: tcl/tooledit.tcl:902 +#, fuzzy +msgid "File Modified" +msgstr "Изменен..." -#: tcl/tklinuxcnc.tcl:785 -msgid "HAL Show" -msgstr "Показать HAL" +#: tcl/tooledit.tcl:903 +msgid "Save Modifications to File?" +msgstr "" -#: tcl/tklinuxcnc.tcl:786 -msgid "HAL Config" -msgstr "Настроить HAL" +#: tcl/tooledit.tcl:930 +#, tcl-format +msgid "" +"Only these columns are currently used:\n" +"\n" +" %s" +msgstr "" -#: tcl/tklinuxcnc.tcl:792 -msgid "Balloon help" -msgstr "Подсказки" +#: tcl/tooledit.tcl:931 +msgid "Limit display to these columns by specifying" +msgstr "" -#: tcl/tklinuxcnc.tcl:815 -msgid "Estop on" -msgstr "АВОСТ вкл" +#: tcl/tooledit.tcl:933 +#, fuzzy +msgid "Format for ini file is" +msgstr "не могу открыть %s" -#: tcl/tklinuxcnc.tcl:816 -msgid "Estop off" -msgstr "АВОСТ выкл" +#: tcl/tooledit.tcl:935 +msgid "For standalone use, invoke as" +msgstr "" -#: tcl/tklinuxcnc.tcl:818 -msgid "Machine on" -msgstr "Станок вкл" +#: tcl/tooledit.tcl:936 +msgid "tool_table_filename" +msgstr "" -#: tcl/tklinuxcnc.tcl:819 -msgid "Machine off" -msgstr "Станок выкл" +#: tcl/tooledit.tcl:956 +#, fuzzy, tcl-format +msgid "Created by %s" +msgstr "получено из %s" -#: tcl/tklinuxcnc.tcl:826 src/emc/usr_intf/touchy/touchy.glade:1561 -msgid "Manual" -msgstr "Ручной" +#: tcl/tooledit.tcl:957 +msgid "Saved geometry (updated on program termination)" +msgstr "" -#: tcl/tklinuxcnc.tcl:835 -msgid "Mist on" -msgstr "Туман вкл" +#: tcl/tooledit.tcl:980 +#, tcl-format +msgid "" +"%s: Axis inifile specifies multiple inifile items for: [EMCIO]TOOL_TABLE" +msgstr "" -#: tcl/tklinuxcnc.tcl:836 -msgid "Mist off" -msgstr "Туман выкл" +#: tcl/tooledit.tcl:981 +#, tcl-format +msgid "%s: Using: %s" +msgstr "" -#: tcl/tklinuxcnc.tcl:843 -msgid "Flood on" -msgstr "Струя вкл" +#: tcl/tooledit.tcl:990 +#, tcl-format +msgid "" +"%s: Warning: Axis is running but the tool table file <%s> \n" +"differs from the standalone startup file <%s>" +msgstr "" -#: tcl/tklinuxcnc.tcl:844 -msgid "Flood off" -msgstr "Струя выкл" +#: tcl/tooledit.tcl:1004 +msgid "Must be On and Idle to reload tool table" +msgstr "" -#: tcl/tklinuxcnc.tcl:851 -msgid "Lube on" -msgstr "Смазка вкл" +#: tcl/tooledit.tcl:1093 +msgid "Usage" +msgstr "" -#: tcl/tklinuxcnc.tcl:852 -msgid "Lube off" -msgstr "Смазка выкл" +#: tcl/tooledit.tcl:1094 tcl/tooledit.tcl:1095 +msgid "filename" +msgstr "" -#: tcl/tklinuxcnc.tcl:869 -msgid "Spindle forward" -msgstr "Шпиндель вперед" +#: tcl/tooledit.tcl:1096 +#, tcl-format +msgid "Allowed column_ names are: %s" +msgstr "" -#: tcl/tklinuxcnc.tcl:870 -msgid "Spindle reverse" -msgstr "Шпиндель назад:" +#: tcl/tooledit.tcl:1106 +#, fuzzy +msgid "Missing filename" +msgstr "Параметры" -#: tcl/tklinuxcnc.tcl:885 -msgid "Brake on" -msgstr "Тормоз вкл" +#: src/emc/usr_intf/axis/scripts/axis.py:183 +msgid "Emergency stop" +msgstr "Аварийная остановка" -#: tcl/tklinuxcnc.tcl:886 -msgid "Brake off" -msgstr "Тормоз выкл" +#: src/emc/usr_intf/axis/scripts/axis.py:184 +msgid "Turn machine on" +msgstr "Включить станок" -#: tcl/tklinuxcnc.tcl:907 -msgid "Offset:" -msgstr "Отступ:" +#: src/emc/usr_intf/axis/scripts/axis.py:186 +msgid "Activate first axis" +msgstr "Выбрать первую ось" -#: tcl/tklinuxcnc.tcl:913 -msgid "Work Offsets:" -msgstr "Рабочий отступ:" +#: src/emc/usr_intf/axis/scripts/axis.py:187 +msgid "Activate second axis" +msgstr "Выбрать вторую ось" -#: tcl/tklinuxcnc.tcl:1233 -msgid "relative" -msgstr "Относительная" +#: src/emc/usr_intf/axis/scripts/axis.py:188 +msgid "Activate third axis" +msgstr "Выбрать третью ось" -#: tcl/tklinuxcnc.tcl:1234 -msgid "machine" -msgstr "Абсолютная" +#: src/emc/usr_intf/axis/scripts/axis.py:189 +msgid "Activate fourth axis" +msgstr "Выбрать четвертую ось" -#: tcl/tklinuxcnc.tcl:1236 -msgid "actual" -msgstr "Настоящая" +#: src/emc/usr_intf/axis/scripts/axis.py:190 +msgid "Activate fifth through ninth axis" +msgstr "Выбрать пятую-девятую ось" -#: tcl/tklinuxcnc.tcl:1237 -msgid "commanded" -msgstr "Заданная" +#: src/emc/usr_intf/axis/scripts/axis.py:191 +msgid "Set Feed Override from 0% to 100%" +msgstr "Установить скорость подачи от 0% до 100%" -#: tcl/tklinuxcnc.tcl:1239 -msgid "joint" -msgstr "Сочленение:" +#: src/emc/usr_intf/axis/scripts/axis.py:192 +msgid ", and ." +msgstr ", и ." -#: tcl/tklinuxcnc.tcl:1240 -msgid "world" -msgstr "Координаты" +#: src/emc/usr_intf/axis/scripts/axis.py:192 +msgid "Select jog speed" +msgstr "Выбрать скорость быстрого хода" -#: tcl/tklinuxcnc.tcl:1333 -msgid "Axis Offset" -msgstr "Отступ оси" +#: src/emc/usr_intf/axis/scripts/axis.py:193 +msgid "< and >" +msgstr "< и >" -#: tcl/tklinuxcnc.tcl:1335 -msgid "Set axis value:" -msgstr "Установить значение оси:" +#: src/emc/usr_intf/axis/scripts/axis.py:193 +msgid "Select angular jog speed" +msgstr "Выбрать скорость быстрого поворота" -#: tcl/tklinuxcnc.tcl:1429 -msgid "Set Feed Override" -msgstr "Изменить подачу:" +#: src/emc/usr_intf/axis/scripts/axis.py:194 +msgid "I, Shift-I" +msgstr "I, Shift-I" -#: tcl/tklinuxcnc.tcl:1435 -msgid "Set feed override:" -msgstr "Изменить подачу:" +#: src/emc/usr_intf/axis/scripts/axis.py:194 share/axis/tcl/axis.tcl:2481 +msgid "Select jog increment" +msgstr "Выбрать шаг быстрого хода" -#: tcl/tklinuxcnc.tcl:1460 -msgid "Set Spindle Override" -msgstr "Изменить обороты шпинделя:" +#: src/emc/usr_intf/axis/scripts/axis.py:195 +msgid "Continuous jog" +msgstr "Постоянный ход" -#: tcl/tklinuxcnc.tcl:1466 -msgid "Set spindle speed override:" -msgstr "Изменить обороты шпинделя:" +#: src/emc/usr_intf/axis/scripts/axis.py:196 +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Home" +msgstr "Начало" -#: tcl/tklinuxcnc.tcl:1521 -msgid "Linear Jog Speed" -msgstr "Скорость линейного хода" +#: src/emc/usr_intf/axis/scripts/axis.py:196 +msgid "Send active axis home" +msgstr "Поставить активную ось в начало" -#: tcl/tklinuxcnc.tcl:1552 -msgid "Angular Jog Speed (deg)/min:" -msgstr "Скорость углового хода (deg)/min:" +#: src/emc/usr_intf/axis/scripts/axis.py:197 +msgid "Ctrl-Home" +msgstr "Ctrl-Home" -#: tcl/tklinuxcnc.tcl:1596 -msgid "Spindle speed Override:" -msgstr "Обороты шпинделя:" +#: src/emc/usr_intf/axis/scripts/axis.py:197 +msgid "Home all axes" +msgstr "Поставить все оси в начало" -#: tcl/tklinuxcnc.tcl:1642 -msgid "Program: " -msgstr "Программа:" +#: src/emc/usr_intf/axis/scripts/axis.py:198 +msgid "Shift-Home" +msgstr "Shift-Home" -#: tcl/tklinuxcnc.tcl:1647 -msgid " - Status: " -msgstr " -- Статус: " +#: src/emc/usr_intf/axis/scripts/axis.py:198 +msgid "Zero G54 offset for active axis" +msgstr "Обнулить G54 отступ для активной оси" -#: tcl/tklinuxcnc.tcl:1663 -msgid "Optional Stop" -msgstr "Останов по запросу" +#: src/emc/usr_intf/axis/scripts/axis.py:199 +msgid "End" +msgstr "End" -#: tcl/tklinuxcnc.tcl:2010 -msgid "Error" -msgstr "Ошибка" +#: src/emc/usr_intf/axis/scripts/axis.py:199 +msgid "Set G54 offset for active axis" +msgstr "Задать G54 отступ для активной оси" -#: tcl/tklinuxcnc.tcl:2070 tcl/ngcgui_ttt.tcl:46 -msgid "Set Font" -msgstr "Установить шрифт" +#: src/emc/usr_intf/axis/scripts/axis.py:200 +msgid "Jog active axis" +msgstr "Движение по оси" -#: tcl/tklinuxcnc.tcl:2079 tcl/ngcgui_ttt.tcl:283 -msgid "Font" -msgstr "Шрифт" +#: src/emc/usr_intf/axis/scripts/axis.py:203 +msgid "Left, Right" +msgstr "Влево, Вправо" -#: tcl/tklinuxcnc.tcl:2086 -msgid "Size" -msgstr "Размер" +#: src/emc/usr_intf/axis/scripts/axis.py:203 +msgid "Jog first axis" +msgstr "Движение первой оси" -#: tcl/tklinuxcnc.tcl:2093 -msgid "Style" -msgstr "Стиль" +#: src/emc/usr_intf/axis/scripts/axis.py:204 +msgid "Up, Down" +msgstr "Вверх, Вниз" -#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:1916 -msgid "ESTOP" -msgstr "АВОСТ" +#: src/emc/usr_intf/axis/scripts/axis.py:204 +msgid "Jog second axis" +msgstr "Движение второй оси" -#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2840 share/axis/tcl/axis.tcl:1918 -msgid "ON" -msgstr "ВКЛ" +#: src/emc/usr_intf/axis/scripts/axis.py:205 +msgid "Pg Up, Pg Dn" +msgstr "Pg Up, Pg Dn" -#: tcl/tklinuxcnc.tcl:2290 -msgid "LUBE ON" -msgstr "СМАЗКА ВКЛ" +#: src/emc/usr_intf/axis/scripts/axis.py:205 +msgid "Jog third axis" +msgstr "Движение третьей оси" -#: tcl/tklinuxcnc.tcl:2292 -msgid "LUBE OFF" -msgstr "СМАЗКА ВЫКЛ" +#: src/emc/usr_intf/axis/scripts/axis.py:206 +msgid "Shift+above jogs" +msgstr "Shift+кнопки быстрого хода" + +#: src/emc/usr_intf/axis/scripts/axis.py:206 +msgid "Jog at traverse speed" +msgstr "Движение на полной скорости" -#: tcl/tklinuxcnc.tcl:2294 -msgid "LUBE ?" -msgstr "СМАЗКА?" +#: src/emc/usr_intf/axis/scripts/axis.py:207 +msgid "Jog fourth axis" +msgstr "Движение четвертой оси" -#: tcl/scripts/Set_Coordinates.tcl:23 -#, fuzzy -msgid "LinuxCNC Set Coordinate" -msgstr "EMC Установить координату" +#: src/emc/usr_intf/axis/scripts/axis.py:210 +msgid "Toggle between Drag and Rotate mode" +msgstr "Переключить между смещением и вращением" -#: tcl/scripts/Set_Coordinates.tcl:26 -msgid "Coordinate System Control Window" -msgstr "Окно управления координатной системой:" +#: src/emc/usr_intf/axis/scripts/axis.py:211 +msgid "Left Button" +msgstr "Левая кнопка" -#: tcl/scripts/Set_Coordinates.tcl:81 -msgid "Var # " -msgstr "Номер переменной" +#: src/emc/usr_intf/axis/scripts/axis.py:211 +msgid "Pan, rotate or select line" +msgstr "Сместить, вращать или выбрать линию" -#: tcl/scripts/Set_Coordinates.tcl:82 -msgid "Offset Value " -msgstr "Значение отступа" +#: src/emc/usr_intf/axis/scripts/axis.py:212 +msgid "Shift+Left Button" +msgstr "Shift+Левая кнопка" -#: tcl/scripts/Set_Coordinates.tcl:83 -msgid "What to Teach" -msgstr "Чему учить" +#: src/emc/usr_intf/axis/scripts/axis.py:212 +msgid "Rotate or pan" +msgstr "Вращать или двигать" -#: tcl/scripts/Set_Coordinates.tcl:101 -msgid "Set Old" -msgstr "Установить старое" +#: src/emc/usr_intf/axis/scripts/axis.py:213 +msgid "Right Button" +msgstr "Правая кнопка" -#: tcl/scripts/Set_Coordinates.tcl:102 -msgid "Set Zero" -msgstr "Установить ноль" +#: src/emc/usr_intf/axis/scripts/axis.py:213 +#: src/emc/usr_intf/axis/scripts/axis.py:215 +#: src/emc/usr_intf/axis/scripts/axis.py:216 +msgid "Zoom view" +msgstr "Приблизить" -#: tcl/scripts/Set_Coordinates.tcl:104 -msgid "Write" -msgstr "Записать" +#: src/emc/usr_intf/axis/scripts/axis.py:214 +msgid "Wheel Button" +msgstr "Колёсико" -#: tcl/ngcgui.tcl:467 -msgid "Need non-null file name" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:214 +msgid "Rotate view" +msgstr "Вращать" -#: tcl/ngcgui.tcl:543 -msgid "Disallowed use of ngcgui generated file as Subfile" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:215 +msgid "Rotate Wheel" +msgstr "Вращать колёсико" -#: tcl/ngcgui.tcl:549 -msgid "" -"marked (not_a_subfile)\n" -"Not intended for use as a subfile" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:216 +msgid "Control+Left Button" +msgstr "Control+Левая кнопка" -#: tcl/ngcgui.tcl:564 -msgid "Multiple subroutines in file not allowed" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:219 +msgid "Manual control" +msgstr "Ручное управление" -#: tcl/ngcgui.tcl:573 tcl/ngcgui.tcl:595 tcl/ngcgui.tcl:608 tcl/ngcgui.tcl:650 -#: tcl/ngcgui.tcl:755 -msgid "bogus" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:220 +msgid "Code entry (MDI)" +msgstr "Ввод кода (MDI)" -#: tcl/ngcgui.tcl:575 -msgid "sub label" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:221 +msgid "Control-M" +msgstr "Control-M" -#: tcl/ngcgui.tcl:575 tcl/ngcgui.tcl:652 -#, fuzzy -msgid "does not match subroutine file name" -msgstr "Слишком много уровней подпрограммы" +#: src/emc/usr_intf/axis/scripts/axis.py:221 +msgid "Clear MDI history" +msgstr "Очистить журнал MDI" -#: tcl/ngcgui.tcl:590 tcl/ngcgui.tcl:591 -msgid "ignoring M2 after endsub" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:222 +msgid "Control-H" +msgstr "Control-H" -#: tcl/ngcgui.tcl:596 -msgid "file contains lines after subend" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:222 +msgid "Copy selected MDI history elements" +msgstr "Скопировать выбранные фрагменты журнала MDI" -#: tcl/ngcgui.tcl:609 -msgid "file contains lines before sub" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:223 +msgid "to clipboard" +msgstr "в буфер" -#: tcl/ngcgui.tcl:652 -msgid "endsub label" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:224 +msgid "Control-Shift-H" +msgstr "Control-Shift-H" -#: tcl/ngcgui.tcl:757 -msgid "out of sequence positional parameter" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:224 +msgid "Paste clipboard to MDI history" +msgstr "Вставить буфер в журнал MDI" -#: tcl/ngcgui.tcl:757 -msgid "expected" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:225 share/axis/tcl/axis.tcl:1183 +#: src/emc/usr_intf/touchy/touchy.glade:508 +msgid "Override Limits" +msgstr "Игнорировать пределы" -#: tcl/ngcgui.tcl:817 -msgid "toomany" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:227 +msgid "Open program" +msgstr "Открыть программу" -#: tcl/ngcgui.tcl:868 -msgid "no sub found in file" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:228 +msgid "Control-R" +msgstr "Control-R" -#: tcl/ngcgui.tcl:871 -msgid "no endsub found in file" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:228 +msgid "Reload program" +msgstr "Перезагрузить программу" -#: tcl/ngcgui.tcl:961 -#, fuzzy -msgid "Choose Files" -msgstr "Файл инструмента" +#: src/emc/usr_intf/axis/scripts/axis.py:229 +msgid "Control-S" +msgstr "Control-S" -#: tcl/ngcgui.tcl:1100 -#, fuzzy -msgid "Controls" -msgstr "Control-M" +#: src/emc/usr_intf/axis/scripts/axis.py:229 +msgid "Save g-code as" +msgstr "Сохранить программу как" -#: tcl/ngcgui.tcl:1109 -msgid "Preamble" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:230 +msgid "Run program" +msgstr "Исполнить программу" -#: tcl/ngcgui.tcl:1122 -msgid "Subfile" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:231 +msgid "Step program" +msgstr "Шагать по программе" -#: tcl/ngcgui.tcl:1134 -msgid "Postamble" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:232 +msgid "Pause program" +msgstr "Приостановить программу" -#: tcl/ngcgui.tcl:1151 -msgid "Retain values on Subfile read" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:233 +msgid "Resume program" +msgstr "Продолжить программу" -#: tcl/ngcgui.tcl:1159 -#, fuzzy -msgid "Expand subroutine" -msgstr "Раскрыть дерево" +#: src/emc/usr_intf/axis/scripts/axis.py:234 +msgid "Stop running program, or" +msgstr "Остановить запущенную программу или" -#: tcl/ngcgui.tcl:1168 tcl/ngcgui.tcl:2414 -#, fuzzy -msgid "Autosend" -msgstr "Авто" +#: src/emc/usr_intf/axis/scripts/axis.py:235 +msgid "stop loading program preview" +msgstr "остановить загрузку просмотра программы" -#: tcl/ngcgui.tcl:1178 -#, fuzzy -msgid "Verbose ngcfile" -msgstr "rs274ngc файлы" +#: src/emc/usr_intf/axis/scripts/axis.py:237 +msgid "Toggle mist" +msgstr "Включить туман" -#: tcl/ngcgui.tcl:1188 tcl/ngcgui.tcl:2235 tcl/ngcgui.tcl:2259 -#: tcl/ngcgui.tcl:2289 -msgid "Create Feature" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:238 +msgid "Toggle flood" +msgstr "Включить охлаждение" -#: tcl/ngcgui.tcl:1194 tcl/ngcgui.tcl:2919 -#, fuzzy -msgid "MakeFile" -msgstr "Файл" +#: src/emc/usr_intf/axis/scripts/axis.py:239 +msgid "Spindle brake off" +msgstr "Отключить тормоз шпинделя" -#: tcl/ngcgui.tcl:1195 tcl/ngcgui.tcl:2916 -msgid "Finalize" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:240 +msgid "Shift-B" +msgstr "Shift-B" -#: tcl/ngcgui.tcl:1212 -#, fuzzy -msgid "Reread" -msgstr "Поток" +#: src/emc/usr_intf/axis/scripts/axis.py:240 +msgid "Spindle brake on" +msgstr "Включить тормоз шпинделя" -#: tcl/ngcgui.tcl:1231 -msgid "SendFileToAxis" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:241 +msgid "Turn spindle clockwise" +msgstr "Вращать шпиндель по часовой стрелке" -#: tcl/ngcgui.tcl:1274 -msgid "Unrecoverable problem" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:242 +msgid "Turn spindle counterclockwise" +msgstr "Вращать шпиндель против часовой стрелки" -#: tcl/ngcgui.tcl:1374 -msgid "Postamble file" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:243 +msgid "Turn spindle more slowly" +msgstr "Вращать шпиндель медленнее" -#: tcl/ngcgui.tcl:1424 -msgid "Subroutine file" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:244 +msgid "Turn spindle more quickly" +msgstr "Вращать шпиндель быстрее" -#: tcl/ngcgui.tcl:1482 -#, fuzzy -msgid "Positional Parameters" -msgstr "Параметры" +#: src/emc/usr_intf/axis/scripts/axis.py:246 +msgid "Control-K" +msgstr "Control-K" -#: tcl/ngcgui.tcl:1587 -msgid "_Globals" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:246 +msgid "Clear live plot" +msgstr "Очистить плоттер" -#: tcl/ngcgui.tcl:1690 -msgid "No Subfile specified" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:247 +msgid "Cycle among preset views" +msgstr "Переключиться между заданными видами" -#: tcl/ngcgui.tcl:1692 +#: src/emc/usr_intf/axis/scripts/axis.py:248 #, fuzzy -msgid "No parameters yet" -msgstr "Параметры" - -#: tcl/ngcgui.tcl:1701 -msgid "Missing value for parm" -msgstr "" +msgid "Cycle among preview, DRO, and user tabs" +msgstr "Переключиться между заданными видами" -#: tcl/ngcgui.tcl:1735 -msgid "Output file" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:250 +msgid "Ctrl-Space" +msgstr "Control-Пробел" -#: tcl/ngcgui.tcl:1827 -msgid "Positional parameters for" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:250 +msgid "Clear notifications" +msgstr "Очистить сообщения" -#: tcl/ngcgui.tcl:1835 -#, fuzzy -msgid "expanded file" -msgstr "Текстовые файлы" +#: src/emc/usr_intf/axis/scripts/axis.py:850 +#, python-format +msgid "Unknown tool %d" +msgstr "Неизвестный инструмент %d" -#: tcl/ngcgui.tcl:1849 -#, fuzzy -msgid "call subroutine file" -msgstr "Слишком много уровней подпрограммы" +#: src/emc/usr_intf/axis/scripts/axis.py:852 +msgid "No tool" +msgstr "Без инструмента" -#: tcl/ngcgui.tcl:1919 -msgid "Multiple Tabs with Features" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:854 +#, python-format +msgid "Tool %(tool)d, offset %(zo)g, diameter %(dia)g" +msgstr "Инструмент %(tool)d, отступ %(zo)g, диаметр %(dia)g" -#: tcl/ngcgui.tcl:1920 -msgid "Finalize all Tabs?" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:856 +#, python-format +msgid "Tool %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" +msgstr "Инструмент %(tool)d, zo %(zo)g, xo %(xo)g, диаметр %(dia)g" -#: tcl/ngcgui.tcl:1920 -msgid "Order" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1031 +msgid "Filtering..." +msgstr "Фильтрую..." -#: tcl/ngcgui.tcl:1922 -msgid "No, just this page" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1102 +msgid "Filter failed" +msgstr "Ошибка фильтра" -#: tcl/ngcgui.tcl:1936 -msgid "Axis is not responding" +#: src/emc/usr_intf/axis/scripts/axis.py:1103 +#, python-format +msgid "" +"The program %(program)r exited with code %(code)d. Any error messages it " +"produced are shown below:" msgstr "" +"Программа %(program)r завершилась с кодом %(code)d. Все сообщения об " +"ошибках показаны ниже:" -#: tcl/ngcgui.tcl:1937 -#, fuzzy -msgid "Error: " -msgstr "Ошибка" +#: src/emc/usr_intf/axis/scripts/axis.py:1171 +#, python-format +msgid "G-Code error in %s" +msgstr "Ошибка G-кода на %s" -#: tcl/ngcgui.tcl:1939 -msgid "Autosend disabled, Ctrl-A toggles autosend" +#: src/emc/usr_intf/axis/scripts/axis.py:1172 +#, python-format +msgid "" +"Near line %(seq)d of %(f)s:\n" +"%(error_str)s" msgstr "" +"Около строки %(seq)d в %(f)s:\n" +"%(error_str)s" -#: tcl/ngcgui.tcl:1941 -msgid "File saving enabled -- Finalize to save" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1341 +#: src/emc/usr_intf/axis/scripts/axis.py:2942 share/axis/tcl/axis.tcl:1162 +#: share/axis/tcl/axis.tcl:1164 share/axis/tcl/axis.tcl:2269 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:895 +msgid "Continuous" +msgstr "Постоянный" -#: tcl/ngcgui.tcl:1957 -msgid "Require .ngc suffix for filename" +#: src/emc/usr_intf/axis/scripts/axis.py:1452 +msgid "Ok" msgstr "" -#: tcl/ngcgui.tcl:1967 -msgid "Disallowed overwrite of" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1599 +msgid "T Tool Table" +msgstr "T Таблица инструментов" -#: tcl/ngcgui.tcl:1986 -msgid "FEATURE" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1610 +#: src/emc/usr_intf/axis/scripts/axis.py:1859 +#: src/emc/usr_intf/axis/scripts/axis.py:2387 +#: src/emc/usr_intf/stepconf/stepconf.py:1328 +#: src/emc/usr_intf/stepconf/pages.py:631 +msgid "in" +msgstr "дюйм" -#: tcl/ngcgui.tcl:1993 -msgid "feature line added" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1613 +msgid " radius" +msgstr "радиус" -#: tcl/ngcgui.tcl:2002 -msgid "line added" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1615 +msgid " diameter" +msgstr "диаметр" -#: tcl/ngcgui.tcl:2002 -msgid "activated" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1616 +msgid "°" +msgstr "°" -#: tcl/ngcgui.tcl:2004 -msgid "restores" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1625 +msgid "Coordinate System:" +msgstr "Координатная система:" -#: tcl/ngcgui.tcl:2041 -msgid "NOTREACHED mode" +#: src/emc/usr_intf/axis/scripts/axis.py:1641 +msgid "fixture" msgstr "" -#: tcl/ngcgui.tcl:2236 -msgid "Enter parms for 1st feature" +#: src/emc/usr_intf/axis/scripts/axis.py:1642 +msgid "workpiece" msgstr "" -#: tcl/ngcgui.tcl:2243 -#, fuzzy -msgid "New Outfile" -msgstr "NC файлы" +#: src/emc/usr_intf/axis/scripts/axis.py:1658 +msgid "Name:" +msgstr "Имя:" -#: tcl/ngcgui.tcl:2245 -msgid "Ready to make New Outfile" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1658 +msgid "Size:" +msgstr "Размер:" -#: tcl/ngcgui.tcl:2262 tcl/ngcgui.tcl:2295 -msgid "Enter parms for feature " -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1659 +msgid "Tool order:" +msgstr "Номер инструмента:" -#: tcl/ngcgui.tcl:2282 -msgid "feature" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1659 +msgid "Rapid distance:" +msgstr "Расстояние быстрого хода:" -#: tcl/ngcgui.tcl:2287 -msgid "Create Next" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1660 +msgid "Feed distance:" +msgstr "Расстояние рабочего хода:" -#: tcl/ngcgui.tcl:2292 -msgid "Created feature " -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1660 +msgid "Total distance:" +msgstr "Общее расстояние:" -#: tcl/ngcgui.tcl:2316 -#, fuzzy -msgid "option" -msgstr "Motion" +#: src/emc/usr_intf/axis/scripts/axis.py:1661 +msgid "Run time:" +msgstr "Время работы:" -#: tcl/ngcgui.tcl:2327 -#, fuzzy -msgid "Missing parameters" -msgstr "Параметры" +#: src/emc/usr_intf/axis/scripts/axis.py:1661 +msgid "X bounds:" +msgstr "границы по X:" -#: tcl/ngcgui.tcl:2331 -#, fuzzy -msgid "Parse Error" -msgstr "Ошибка" +#: src/emc/usr_intf/axis/scripts/axis.py:1662 +msgid "Y bounds:" +msgstr "границы по Y:" -#: tcl/ngcgui.tcl:2338 -msgid "Null Preamble" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1662 +msgid "Z bounds:" +msgstr "границы по Z:" -#: tcl/ngcgui.tcl:2343 -msgid "Read Preamble" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1663 +msgid "A bounds:" +msgstr "границы по A:" -#: tcl/ngcgui.tcl:2347 -msgid "Preamble Error" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1663 +msgid "B bounds:" +msgstr "границы по B:" -#: tcl/ngcgui.tcl:2352 -msgid "Null Postamble" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1664 +msgid "C bounds:" +msgstr "границы по C:" -#: tcl/ngcgui.tcl:2357 -msgid "Read Postamble" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1688 +#, python-format +msgid "Program exceeds machine minimum on axis %s" +msgstr "Программа выходит за минимум оси %s" -#: tcl/ngcgui.tcl:2361 -msgid "Postamble Error" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1691 +#, python-format +msgid "Program exceeds machine maximum on axis %s" +msgstr "Программа выходит за максимум оси %s" -#: tcl/ngcgui.tcl:2366 -msgid "Read Subfile" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1696 +msgid "Program exceeds machine limits" +msgstr "Программа выходит за пределы станка" -#: tcl/ngcgui.tcl:2371 -#, fuzzy -msgid "Write Error" -msgstr "Ошибка" +#: src/emc/usr_intf/axis/scripts/axis.py:1699 +msgid "Run Anyway" +msgstr "Исполнить все равно" -#: tcl/ngcgui.tcl:2375 -msgid "Outfile set" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1581 +msgid "No file loaded" +msgstr "Файл не загружен" -#: tcl/ngcgui.tcl:2380 -msgid "Finished" +#: src/emc/usr_intf/axis/scripts/axis.py:1845 +#, python-format +msgid "generated from %s" +msgstr "получено из %s" + +#: src/emc/usr_intf/axis/scripts/axis.py:1851 +#, python-format +msgid "" +"%(size)s bytes\n" +"%(lines)s gcode lines" msgstr "" +"%(size)s байт\n" +"%(lines)s строк gcode" -#: tcl/ngcgui.tcl:2385 -#, fuzzy -msgid "Canceled" -msgstr "Отмена" +#: src/emc/usr_intf/axis/scripts/axis.py:1877 +#, python-format +msgid "%.1f minutes" +msgstr "%.1f минут" -#: tcl/ngcgui.tcl:2391 -msgid "Sent" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1879 +#, python-format +msgid "%d seconds" +msgstr "%d секунд" -#: tcl/ngcgui.tcl:2395 -#, fuzzy -msgid "SendFileToAxis failed" -msgstr "Ошибка фильтра" +#: src/emc/usr_intf/axis/scripts/axis.py:1887 +#, python-format +msgid "%(a)f to %(b)f = %(diff)f %(units)s" +msgstr "%(a)f к %(b)f = %(diff)f %(units)s" -#: tcl/ngcgui.tcl:2399 -msgid "Ctrl-k for Key bindings" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1888 +msgid "G-Code Properties" +msgstr "Свойства G-кода" -#: tcl/ngcgui.tcl:2403 -#, fuzzy -msgid "Expand sub" -msgstr "Раскрыть пункт" +#: src/emc/usr_intf/axis/scripts/axis.py:2021 +msgid "All machinable files" +msgstr "Все исполняемые файлы" -#: tcl/ngcgui.tcl:2407 -#, fuzzy -msgid "Retain values" -msgstr "Установить значение оси:" +#: src/emc/usr_intf/axis/scripts/axis.py:2022 +#: src/emc/usr_intf/axis/scripts/axis.py:2659 +msgid "rs274ngc files" +msgstr "rs274ngc файлы" -#: tcl/ngcgui.tcl:2411 -msgid "Verbose" +#: src/emc/usr_intf/axis/scripts/axis.py:2037 +msgid "axis cannot accept remote command while running" msgstr "" -#: tcl/ngcgui.tcl:2417 -msgid "Finalize Canceled" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:2098 +#, fuzzy +msgid "File not Writable:" +msgstr "Файл не найден" -#: tcl/ngcgui.tcl:2572 tcl/ngcgui.tcl:2728 -msgid "Dismiss" +#: src/emc/usr_intf/axis/scripts/axis.py:2099 +msgid "" +"This file is not writable\n" +"You can Edit-readonly\n" +"\n" +"or\n" +"\n" +"Save it to your own directory\n" +"then open that saved, writable file" msgstr "" -#: tcl/ngcgui.tcl:2577 -msgid "ngcgui Error" +#: src/emc/usr_intf/axis/scripts/axis.py:2106 +msgid "Edit-readonly" msgstr "" -#: tcl/ngcgui.tcl:2600 -msgid "Declining support for tk send bug in ngcgui" +#: src/emc/usr_intf/axis/scripts/axis.py:2440 +msgid "Axis is already homed, are you sure you want to re-home?" msgstr "" -#: tcl/ngcgui.tcl:2601 -msgid "You should upgrade linuxcnc to >= linuxcnc2.5" +#: src/emc/usr_intf/axis/scripts/axis.py:2453 +msgid "This axis is already homed, are you sure you want to re-home?" msgstr "" -#: tcl/ngcgui.tcl:2645 -msgid "pre2.4_send_file_to_axis:error" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:2493 share/axis/tcl/axis.tcl:1178 +msgid "Touch Off" +msgstr "Задать отступ" -#: tcl/ngcgui.tcl:2839 share/axis/tcl/axis.tcl:1917 -msgid "OFF" -msgstr "ВЫКЛ" +#: src/emc/usr_intf/axis/scripts/axis.py:2494 +#, fuzzy, python-format +msgid "Enter %s coordinate relative to %%s:" +msgstr "Введите %s координату относительно заготовки:" -#: tcl/ngcgui.tcl:2842 -#, fuzzy -msgid "Toggle autosend" -msgstr "Включить охлаждение" +#: src/emc/usr_intf/axis/scripts/axis.py:2671 +msgid "Error saving file" +msgstr "Ошибка при сохранении файла" -#: tcl/ngcgui.tcl:2843 tcl/ngcgui.tcl:3057 -#, fuzzy -msgid "Clear entries" -msgstr "Очистить сообщения" +#: src/emc/usr_intf/axis/scripts/axis.py:3077 +#: src/emc/usr_intf/touchy/touchy.glade:577 +#: src/emc/usr_intf/gscreen/gscreen.glade:2933 +msgid "Home All" +msgstr "Все в начало" -#: tcl/ngcgui.tcl:2844 -msgid "Set entries to default values" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:3079 +msgid "Home all axes [Ctrl-Home]" +msgstr "Все оси в начало [Ctrl-Home]" -#: tcl/ngcgui.tcl:2845 tcl/ngcgui.tcl:2859 tcl/ngcgui.tcl:2861 -msgid "Open editor specified by" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:3082 +msgid "Home All Axes" +msgstr "Все оси в начало" -#: tcl/ngcgui.tcl:2846 -msgid "on last outfile" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:3089 +msgid "Unhome All Axes" +msgstr "Забыть начало всех осей" -#: tcl/ngcgui.tcl:2847 -#, fuzzy -msgid "toggle expand subroutines" -msgstr "Слишком много уровней подпрограммы" +#: src/emc/usr_intf/axis/scripts/axis.py:3113 +#, python-format +msgid "Home Axis _%s" +msgstr "Ось _%s в начало" -#: tcl/ngcgui.tcl:2848 -msgid "Create feature" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:3115 +#, python-format +msgid "Unhome Axis _%s" +msgstr "Забыть начало оси _%s" -#: tcl/ngcgui.tcl:2849 -msgid "Finalize (AUTO send is" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:3282 +msgid "Run from here" +msgstr "Исполнить отсюда" -#: tcl/ngcgui.tcl:2850 -msgid "Show key bindings" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:3598 +msgid "Error in ~/.axisrc" +msgstr "Ошибка в ~/.axisrc" -#: tcl/ngcgui.tcl:2851 -msgid "Restart (cancel pending)" -msgstr "" +#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:102 +#, fuzzy +msgid "Machinekit Status" +msgstr "Единицы станка:" -#: tcl/ngcgui.tcl:2852 -msgid "(re)Read Preamble" -msgstr "" +#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:118 +#, fuzzy +msgid "Copy All" +msgstr "Копировать" -#: tcl/ngcgui.tcl:2853 -msgid "(re)Read Postamble" -msgstr "" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 +#, python-format +msgid "Insert tool %d and click continue when ready" +msgstr "Поставьте инструмент %d и нажмите Продолжить" -#: tcl/ngcgui.tcl:2854 -msgid "(re)Read Subfile" -msgstr "" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:39 +msgid "Remove the tool and click continue when ready" +msgstr "Уберите инструмент и нажмите Продолжить" -#: tcl/ngcgui.tcl:2855 -msgid "toggle retain values" -msgstr "" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 +#: src/emc/usr_intf/touchy/mdi.py:49 src/emc/usr_intf/gscreen/mdi.py:49 +msgid "Tool change" +msgstr "Смена инструмента" -#: tcl/ngcgui.tcl:2856 -msgid "toggle output file verbosity" -msgstr "" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 +msgid "Continue" +msgstr "Продолжить" -#: tcl/ngcgui.tcl:2857 -#, fuzzy -msgid "Show status" -msgstr "Показать перезапуск" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:64 +msgid "AXIS Manual Toolchanger" +msgstr "Ручная смена инструмента AXIS" -#: tcl/ngcgui.tcl:2858 -msgid "Show full status (debug info)" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:68 +msgid "" +"This window is part of the AXIS manual toolchanger. It is safe to close or " +"iconify this window, or it will close automatically after a few seconds." msgstr "" +"Это окно является частью ручной смены инструмента AXIS. Его можно закрыть " +"или спрятать, или оно исчезнет само через несколько секунд." -#: tcl/ngcgui.tcl:2860 -#, fuzzy -msgid "on current subfile" -msgstr "Перечитать текущий файл·[Control-R]" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:507 +#, python-format +msgid "%s: Image to gcode" +msgstr "%s: Картинку в код" -#: tcl/ngcgui.tcl:2862 -msgid "on current preamble" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:508 +msgid "Image to gcode" +msgstr "Картинку в код" -#: tcl/ngcgui.tcl:2865 -msgid " Escape Return to Preview page" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:518 +#, python-format +msgid "" +"Image size: %(w)d x %(h)d pixels\n" +"Minimum pixel value: %(min)d\n" +"Maximum pixel value: %(max)d" msgstr "" +"Размер картинки: %(w)d x %(h)d пикселей\n" +"Минимальное значение пикселя: %(min)d\n" +"Максимальное значение пикселя: %(max)d" -#: tcl/ngcgui.tcl:2942 -msgid "Editing requires setting for environmental variable VISUAL" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 +msgid "G20 (in)" +msgstr "G20 (дюймы)" -#: tcl/ngcgui.tcl:2943 -msgid "Trying gedit" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 +msgid "G21 (mm)" +msgstr "G21 (мм)" -#: tcl/ngcgui.tcl:2955 -#, fuzzy -msgid "No file available for editing yet" -msgstr "Не целое число для целого аргумента" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 +#: src/emc/usr_intf/touchy/emc_interface.py:417 +msgid "None" +msgstr "Ничего" -#: tcl/ngcgui.tcl:2964 tcl/ngcgui.tcl:2973 -#, fuzzy -msgid "No file available for editing" -msgstr "Не целое число для целого аргумента" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +msgid "White" +msgstr "Белый" -#: tcl/ngcgui.tcl:2990 -#, fuzzy -msgid "Status items" -msgstr "Статус" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +msgid "Black" +msgstr "Черный" -#: tcl/ngcgui.tcl:3003 -msgid "All-page opt items" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Rows" +msgstr "Строки" -#: tcl/ngcgui.tcl:3009 -msgid "any-items" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Columns" +msgstr "Колонки" -#: tcl/ngcgui.tcl:3046 -#, fuzzy -msgid "Set defaults" -msgstr "умолчания AXIS" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Rows then Columns" +msgstr "Строки затем колонки" -#: tcl/ngcgui.tcl:3125 -msgid "not writable" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Columns then Rows" +msgstr "Колонки затем строки" -#: tcl/ngcgui.tcl:3263 tcl/ngcgui.tcl:3443 -#, fuzzy -msgid "new" -msgstr "Новый" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Positive" +msgstr "Позитивный" -#: tcl/ngcgui.tcl:3288 -msgid "Open a new Subfile" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Negative" +msgstr "Негативный" -#: tcl/ngcgui.tcl:3434 -msgid "remove" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Alternating" +msgstr "Переменный" -#: tcl/ngcgui.tcl:3456 tcl/ngcgui.tcl:3462 -msgid "move" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Up Milling" +msgstr "Фрезеровка вверх" -#: tcl/ngcgui.tcl:3561 src/emc/usr_intf/pncconf/pncconf.py:7022 -#: src/emc/usr_intf/pncconf/pncconf.py:7139 -#: src/emc/usr_intf/pncconf/pncconf.py:7306 -msgid "Custom" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Down Milling" +msgstr "Фрезеровка вниз" -#: tcl/ngcgui.tcl:3587 -msgid "Problem creating page" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "Ball End" +msgstr "Шаровая фреза" -#: tcl/ngcgui.tcl:3594 -msgid "entrykeybindings not available" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "Flat End" +msgstr "Плоская фреза" -#: tcl/ngcgui.tcl:3633 -msgid "Found multiple matches for" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "30 Degree" +msgstr "30 градусов" -#: tcl/ngcgui.tcl:3634 -msgid "using path" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "45 Degree" +msgstr "45 градусов" -#: tcl/ngcgui.tcl:3642 src/emc/usr_intf/axis/scripts/axis.py:2255 -#: src/emc/usr_intf/axis/scripts/axis.py:2268 -msgid "Warning" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "60 Degree" +msgstr "60 градусов" -#: tcl/ngcgui.tcl:3643 -msgid "File absolute path specifier conflicts with searchpath result" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 +msgid "Secondary" +msgstr "Вторичный" -#: tcl/ngcgui.tcl:3644 -#, fuzzy -msgid "Absolute Specifier" -msgstr "Абсолютный" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 +msgid "Full" +msgstr "Полный" -#: tcl/ngcgui.tcl:3645 -msgid "Using Search Result" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:654 +msgid "Invert Image" +msgstr "Инвертировать картинку" -#: tcl/ngcgui.tcl:3650 -msgid "File not in Search Path" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:655 +msgid "Normalize Image" +msgstr "Нормализовать картинку" -#: tcl/ngcgui.tcl:3652 -msgid "Must be in search path" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:656 +msgid "Extend Image Border" +msgstr "Увеличить границу" -#: tcl/ngcgui.tcl:3654 -msgid "(File found -- not in search path)" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:657 +msgid "Pixel Size (Units)" +msgstr "Размер пикселя" -#: tcl/ngcgui.tcl:3656 -#, fuzzy -msgid "Current directory" -msgstr "Каталог конфигураций:" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:658 +msgid "Depth (units)" +msgstr "Глубина" -#: tcl/ngcgui.tcl:3657 -msgid "Search path" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:659 +msgid "Tolerance (units)" +msgstr "Точность" -#: tcl/ngcgui.tcl:3663 -msgid "Check setting for" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:660 +msgid "Stepover (pixels)" +msgstr "Шаг (пиксели)" -#: tcl/ngcgui.tcl:3664 -#, fuzzy -msgid "in ini file" -msgstr "(нет файла)" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:661 +msgid "Tool Diameter (units)" +msgstr "Диаметр инструмента" -#: tcl/ngcgui.tcl:3665 -msgid "(Restart required after fixing ini file)" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:662 +msgid "Tool Type" +msgstr "Тип инструмента" -#: tcl/ngcgui.tcl:3680 -#, fuzzy -msgid "Try to Continue" -msgstr "Продолжить" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:663 +msgid "Feed Rate (units per minute)" +msgstr "Скорость хода (в минуту)" -#: tcl/ngcgui.tcl:3685 -#, fuzzy -msgid "Ngcgui Configuration File Not Found" -msgstr "Открыть файл конфигурации" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:664 +msgid "Plunge Feed Rate (units per minute)" +msgstr "Скорость врезания (в минуту)" -#: tcl/ngcgui.tcl:3765 -msgid "Missing Tcl Package Img" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:666 +msgid "Safety Height (units)" +msgstr "Безопасная высота" -#: tcl/ngcgui.tcl:3766 -msgid "Please install Img" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:667 +msgid "Scan Pattern" +msgstr "Шаблон сканирования" -#: tcl/ngcgui.tcl:3965 -#, fuzzy -msgid "ini file" -msgstr "(нет файла)" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:668 +msgid "Scan Direction" +msgstr "Направление сканирования" -#: tcl/ngcgui.tcl:3973 -msgid "not found" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:669 +msgid "Lace Bounding" +msgstr "Ограничение разводов" -#: tcl/ngcgui_ttt.tcl:67 -msgid "found truetype-tracer v4 -OK" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:670 +msgid "Contact Angle (degrees)" +msgstr "Угол контакта" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:671 +msgid "Spindle Speed (RPM)" +msgstr "Обороты шпинделя" -#: tcl/ngcgui_ttt.tcl:70 -msgid "Note truetype-tracer v4 is required" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:672 +msgid "Roughing offset (units, 0=no roughing)" +msgstr "Отступ грубого прохода (0=без прохода)" -#: tcl/ngcgui_ttt.tcl:71 -msgid "Note: truetype-tracer v4 is required" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:673 +msgid "Roughing depth per pass (units)" +msgstr "Съём за проход" -#: tcl/ngcgui_ttt.tcl:81 -msgid "ngcgui_app.tcl must be loaded before" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:740 +msgid "image-to-gcode: User pressed cancel" +msgstr "image-to-gcode: Отмена пользователем" -#: tcl/ngcgui_ttt.tcl:89 -msgid "Create a subroutine file from truetype-tracer (V4 reqd)" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:753 +msgid "Depth images" +msgstr "Картинки глубины" -#: tcl/ngcgui_ttt.tcl:102 tcl/ngcgui_ttt.tcl:115 +#: src/emc/usr_intf/axis/scripts/debuglevel.py:22 #, fuzzy -msgid "problem with" -msgstr "Заменить на:" +msgid "Machinekit Debug Level" +msgstr "Установить уровень отладки" -#: tcl/ngcgui_ttt.tcl:106 -msgid "No entry for" -msgstr "" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:23 +msgid "debuglevel" +msgstr "debuglevel" -#: tcl/ngcgui_ttt.tcl:109 -msgid "wrong version of truetype-tracer" -msgstr "" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:36 +msgid "Configuration *" +msgstr "Установки *" -#: tcl/ngcgui_ttt.tcl:125 -msgid "not writable, using" -msgstr "" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:37 +msgid "Version Numbers *" +msgstr "Номер версий *" -#: tcl/ngcgui_ttt.tcl:125 -msgid "and setting expandsub" -msgstr "" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:38 +msgid "NML *" +msgstr "NML *" -#: tcl/ngcgui_ttt.tcl:161 -msgid "Text" -msgstr "текст" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:39 +msgid "RCS *" +msgstr "RCS *" -#: tcl/ngcgui_ttt.tcl:171 -#, fuzzy -msgid "Linescale" -msgstr "Масштаб оси:" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:40 +msgid "Task Issue" +msgstr "Номер задания" -#: tcl/ngcgui_ttt.tcl:177 -msgid "none" -msgstr "" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:41 +msgid "Motion Time" +msgstr "Время движения" -#: tcl/ngcgui_ttt.tcl:192 -msgid "Subdiv" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:43 +msgid "Interpreter List" +msgstr "Список интерпретатора" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:47 +#, python-format +msgid "" +"Inifile setting for this debug level:\n" +"[EMC]DEBUG=0x%08x" msgstr "" -#: tcl/ngcgui_ttt.tcl:199 -#, fuzzy -msgid "default" -msgstr "умолчания AXIS" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:81 +msgid " * This option can only be enabled in the inifile" +msgstr " * Эта опция может быть разрешена только в .INI-файле" -#: tcl/ngcgui_ttt.tcl:239 -#, fuzzy -msgid "Mode" -msgstr "Режим работы" +#: share/axis/tcl/axis.tcl:52 +msgid "_Open..." +msgstr "Oткрыть..." -#: tcl/ngcgui_ttt.tcl:247 -#, fuzzy -msgid "normal" -msgstr "Нормальный" +#: share/axis/tcl/axis.tcl:56 +msgid "Recent _Files" +msgstr "Недавние файлы" -#: tcl/ngcgui_ttt.tcl:248 -msgid "date" -msgstr "" +#: share/axis/tcl/axis.tcl:60 +msgid "_Edit..." +msgstr "Изменить..." -#: tcl/ngcgui_ttt.tcl:249 -msgid "fontname" -msgstr "" +#: share/axis/tcl/axis.tcl:63 +msgid "Ctrl-R" +msgstr "Ctrl-R" -#: tcl/ngcgui_ttt.tcl:262 -#, fuzzy -msgid "Switches" -msgstr "дюймы" +#: share/axis/tcl/axis.tcl:65 +msgid "_Reload" +msgstr "Перегрузить" -#: tcl/ngcgui_ttt.tcl:270 -msgid "Unicode" -msgstr "" +#: share/axis/tcl/axis.tcl:68 +msgid "Ctrl-S" +msgstr "Ctrl-S" -#: tcl/ngcgui_ttt.tcl:275 -#, fuzzy -msgid "Allow Rotation" -msgstr "XY вращение:" +#: share/axis/tcl/axis.tcl:70 +msgid "_Save gcode as..." +msgstr "Сохранить код как..." -#: tcl/ngcgui_ttt.tcl:295 -msgid "Make ngcgui-compatible subfile and new tab page" -msgstr "" +#: share/axis/tcl/axis.tcl:74 +msgid "_Properties..." +msgstr "Свойства..." -#: tcl/ngcgui_ttt.tcl:353 -msgid "Null text" -msgstr "" +#: share/axis/tcl/axis.tcl:80 +msgid "Edit _tool table..." +msgstr "Изменить таблицу инструментов..." -#: tcl/ngcgui_ttt.tcl:384 -msgid "Using truetype-tracer default font" -msgstr "" +#: share/axis/tcl/axis.tcl:84 +msgid "Reload tool ta_ble" +msgstr "Перегрузить таблицу инструментов" -#: tcl/ngcgui_ttt.tcl:388 -#, fuzzy -msgid "no such file" -msgstr "(нет файла)" +#: share/axis/tcl/axis.tcl:90 +msgid "_Ladder Editor..." +msgstr "PLC редактор..." -#: tcl/ngcgui_ttt.tcl:393 -#, fuzzy -msgid "file not readable" -msgstr "Файл не найден" +#: share/axis/tcl/axis.tcl:102 +msgid "Toggle _Emergency Stop" +msgstr "Аварийный стоп" -#: tcl/ngcgui_ttt.tcl:507 -msgid "Creating new tab page" -msgstr "" +#: share/axis/tcl/axis.tcl:107 +msgid "Toggle _Machine Power" +msgstr "Питание станка" -#: src/emc/usr_intf/axis/scripts/axis.py:148 -msgid "Emergency stop" -msgstr "Аварийная остановка" +#: share/axis/tcl/axis.tcl:114 +msgid "_Run program" +msgstr "Исполнить программу" -#: src/emc/usr_intf/axis/scripts/axis.py:149 -msgid "Turn machine on" -msgstr "Включить станок" +#: share/axis/tcl/axis.tcl:118 +msgid "Ru_n from selected line" +msgstr "Исполнить с выделенной строки" -#: src/emc/usr_intf/axis/scripts/axis.py:151 -msgid "Activate first axis" -msgstr "Выбрать первую ось" +#: share/axis/tcl/axis.tcl:123 +msgid "S_tep" +msgstr "Шаг" -#: src/emc/usr_intf/axis/scripts/axis.py:152 -msgid "Activate second axis" -msgstr "Выбрать вторую ось" +#: share/axis/tcl/axis.tcl:128 +msgid "_Pause" +msgstr "Пауза" -#: src/emc/usr_intf/axis/scripts/axis.py:153 -msgid "Activate third axis" -msgstr "Выбрать третью ось" +#: share/axis/tcl/axis.tcl:133 +msgid "Re_sume" +msgstr "Продолжить" -#: src/emc/usr_intf/axis/scripts/axis.py:154 -msgid "Activate fourth axis" -msgstr "Выбрать четвертую ось" +#: share/axis/tcl/axis.tcl:143 +msgid "Stop at M_1" +msgstr "Остановить на M1" -#: src/emc/usr_intf/axis/scripts/axis.py:155 -msgid "Activate fifth through ninth axis" -msgstr "Выбрать пятую-девятую ось" +#: share/axis/tcl/axis.tcl:148 +msgid "Skip lines with '_/'" +msgstr "Пропускать строки с '_/'" -#: src/emc/usr_intf/axis/scripts/axis.py:156 -msgid "Set Feed Override from 0% to 100%" -msgstr "Установить скорость подачи от 0% до 100%" +#: share/axis/tcl/axis.tcl:153 +msgid "Ctrl-M" +msgstr "Ctrl-M" -#: src/emc/usr_intf/axis/scripts/axis.py:157 -msgid ", and ." -msgstr ", и ." +#: share/axis/tcl/axis.tcl:155 +msgid "Clear MDI h_istory" +msgstr "Очистить журнал MDI" -#: src/emc/usr_intf/axis/scripts/axis.py:157 -msgid "Select jog speed" -msgstr "Выбрать скорость быстрого хода" +#: share/axis/tcl/axis.tcl:157 +msgid "Ctrl-H" +msgstr "Ctrl-H" -#: src/emc/usr_intf/axis/scripts/axis.py:158 -msgid "< and >" -msgstr "< и >" +#: share/axis/tcl/axis.tcl:159 +msgid "Copy from MDI hist_ory" +msgstr "Скопировать из журнала MDI" -#: src/emc/usr_intf/axis/scripts/axis.py:158 -msgid "Select angular jog speed" -msgstr "Выбрать скорость быстрого поворота" +#: share/axis/tcl/axis.tcl:161 +msgid "Ctrl-Shift-H" +msgstr "Ctrl-Shift-H" -#: src/emc/usr_intf/axis/scripts/axis.py:159 -msgid "I, Shift-I" -msgstr "I, Shift-I" +#: share/axis/tcl/axis.tcl:163 +msgid "Paste to MDI histor_y" +msgstr "Скопировать в журнал MDI" -#: src/emc/usr_intf/axis/scripts/axis.py:159 share/axis/tcl/axis.tcl:2356 -msgid "Select jog increment" -msgstr "Выбрать шаг быстрого хода" +#: share/axis/tcl/axis.tcl:169 +msgid "_Calibration" +msgstr "Калибровка" -#: src/emc/usr_intf/axis/scripts/axis.py:160 -msgid "Continuous jog" -msgstr "Постоянный ход" +#: share/axis/tcl/axis.tcl:173 +msgid "Show _Hal Configuration" +msgstr "Показать установки HAL" -#: src/emc/usr_intf/axis/scripts/axis.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:479 -msgid "Home" -msgstr "Начало" +#: share/axis/tcl/axis.tcl:177 +msgid "H_al Meter" +msgstr "HAL-метр" -#: src/emc/usr_intf/axis/scripts/axis.py:161 -msgid "Send active axis home" -msgstr "Поставить активную ось в начало" +#: share/axis/tcl/axis.tcl:181 +msgid "Ha_l Scope" +msgstr "HAL-скоп" -#: src/emc/usr_intf/axis/scripts/axis.py:162 -msgid "Ctrl-Home" -msgstr "Ctrl-Home" +#: share/axis/tcl/axis.tcl:185 +#, fuzzy +msgid "Sho_w Machinekit Status" +msgstr "Показать статус EMC" -#: src/emc/usr_intf/axis/scripts/axis.py:162 -msgid "Home all axes" -msgstr "Поставить все оси в начало" +#: share/axis/tcl/axis.tcl:189 +msgid "Set _Debug Level" +msgstr "Установить уровень отладки" -#: src/emc/usr_intf/axis/scripts/axis.py:163 -msgid "Shift-Home" -msgstr "Shift-Home" +#: share/axis/tcl/axis.tcl:195 +msgid "Homin_g" +msgstr "Поиск начала" -#: src/emc/usr_intf/axis/scripts/axis.py:163 -msgid "Zero G54 offset for active axis" -msgstr "Обнулить G54 отступ для активной оси" +#: share/axis/tcl/axis.tcl:199 +msgid "_Unhoming" +msgstr "Сброс начала" -#: src/emc/usr_intf/axis/scripts/axis.py:164 -msgid "End" -msgstr "End" +#: share/axis/tcl/axis.tcl:203 +msgid "_Zero coordinate system" +msgstr "Обнулить координаты" -#: src/emc/usr_intf/axis/scripts/axis.py:164 -msgid "Set G54 offset for active axis" -msgstr "Задать G54 отступ для активной оси" +#: share/axis/tcl/axis.tcl:207 +msgid "P1 G5_4" +msgstr "P1 G5_4" -#: src/emc/usr_intf/axis/scripts/axis.py:165 -msgid "Jog active axis" -msgstr "Движение по оси" +#: share/axis/tcl/axis.tcl:211 +msgid "P2 G5_5" +msgstr "P2 G5_5" -#: src/emc/usr_intf/axis/scripts/axis.py:168 -msgid "Left, Right" -msgstr "Влево, Вправо" +#: share/axis/tcl/axis.tcl:215 +msgid "P3 G5_6" +msgstr "P3 G5_6" -#: src/emc/usr_intf/axis/scripts/axis.py:168 -msgid "Jog first axis" -msgstr "Движение первой оси" +#: share/axis/tcl/axis.tcl:219 +msgid "P4 G5_7" +msgstr "P4 G5_7" -#: src/emc/usr_intf/axis/scripts/axis.py:169 -msgid "Up, Down" -msgstr "Вверх, Вниз" +#: share/axis/tcl/axis.tcl:223 +msgid "P5 G5_8" +msgstr "P5 G5_8" -#: src/emc/usr_intf/axis/scripts/axis.py:169 -msgid "Jog second axis" -msgstr "Движение второй оси" +#: share/axis/tcl/axis.tcl:227 +msgid "P6 G5_9" +msgstr "P6 G5_9" -#: src/emc/usr_intf/axis/scripts/axis.py:170 -msgid "Pg Up, Pg Dn" -msgstr "Pg Up, Pg Dn" +#: share/axis/tcl/axis.tcl:231 +msgid "P7 G59._1" +msgstr "P7 G59._1" -#: src/emc/usr_intf/axis/scripts/axis.py:170 -msgid "Jog third axis" -msgstr "Движение третьей оси" +#: share/axis/tcl/axis.tcl:235 +msgid "P8 G59._2" +msgstr "P8 G59._2" -#: src/emc/usr_intf/axis/scripts/axis.py:171 -msgid "Shift+above jogs" -msgstr "Shift+кнопки быстрого хода" +#: share/axis/tcl/axis.tcl:239 +msgid "P9 G59._3" +msgstr "P9 G59._3" -#: src/emc/usr_intf/axis/scripts/axis.py:171 -msgid "Jog at traverse speed" -msgstr "Движение на полной скорости" +#: share/axis/tcl/axis.tcl:243 +msgid "_G92" +msgstr "_G92" -#: src/emc/usr_intf/axis/scripts/axis.py:172 -msgid "Jog fourth axis" -msgstr "Движение четвертой оси" +#: share/axis/tcl/axis.tcl:251 +msgid "Tool touch off to wor_kpiece" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:175 -msgid "Toggle between Drag and Rotate mode" -msgstr "Переключить между смещением и вращением" +#: share/axis/tcl/axis.tcl:257 +msgid "Tool touch off to _fixture" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:176 -msgid "Left Button" -msgstr "Левая кнопка" +#: share/axis/tcl/axis.tcl:265 +msgid "_Top view" +msgstr "Вид сверху" -#: src/emc/usr_intf/axis/scripts/axis.py:176 -msgid "Pan, rotate or select line" -msgstr "Сместить, вращать или выбрать линию" +#: share/axis/tcl/axis.tcl:272 +msgid "_Rotated Top view" +msgstr "Повернутый вид сверху" -#: src/emc/usr_intf/axis/scripts/axis.py:177 -msgid "Shift+Left Button" -msgstr "Shift+Левая кнопка" +#: share/axis/tcl/axis.tcl:279 +msgid "_Side view" +msgstr "Вид сбоку" -#: src/emc/usr_intf/axis/scripts/axis.py:177 -msgid "Rotate or pan" -msgstr "Вращать или двигать" +#: share/axis/tcl/axis.tcl:286 +msgid "_Front view" +msgstr "Вид спереди" -#: src/emc/usr_intf/axis/scripts/axis.py:178 -msgid "Right Button" -msgstr "Правая кнопка" +#: share/axis/tcl/axis.tcl:293 +msgid "_Perspective view" +msgstr "Вид в перспективе" -#: src/emc/usr_intf/axis/scripts/axis.py:178 -#: src/emc/usr_intf/axis/scripts/axis.py:180 -#: src/emc/usr_intf/axis/scripts/axis.py:181 -msgid "Zoom view" -msgstr "Приблизить" +#: share/axis/tcl/axis.tcl:302 +msgid "Display _Inches" +msgstr "Показать дюймы" -#: src/emc/usr_intf/axis/scripts/axis.py:179 -msgid "Wheel Button" -msgstr "Колёсико" +#: share/axis/tcl/axis.tcl:309 +msgid "Display _MM" +msgstr "Показать мм" -#: src/emc/usr_intf/axis/scripts/axis.py:179 -msgid "Rotate view" -msgstr "Вращать" +#: share/axis/tcl/axis.tcl:316 +msgid "S_how program" +msgstr "Показать программу" -#: src/emc/usr_intf/axis/scripts/axis.py:180 -msgid "Rotate Wheel" -msgstr "Вращать колёсико" +#: share/axis/tcl/axis.tcl:321 +msgid "Show program r_apids" +msgstr "Показать быстрые проходы" -#: src/emc/usr_intf/axis/scripts/axis.py:181 -msgid "Control+Left Button" -msgstr "Control+Левая кнопка" +#: share/axis/tcl/axis.tcl:326 +#, fuzzy +msgid "Alpha-_blend program" +msgstr "Открыть программу" -#: src/emc/usr_intf/axis/scripts/axis.py:184 -msgid "Manual control" -msgstr "Ручное управление" +#: share/axis/tcl/axis.tcl:331 +msgid "Sho_w live plot" +msgstr "Показать исполненное" -#: src/emc/usr_intf/axis/scripts/axis.py:185 -msgid "Code entry (MDI)" -msgstr "Ввод кода (MDI)" +#: share/axis/tcl/axis.tcl:336 +msgid "Show too_l" +msgstr "Показать инструмент" -#: src/emc/usr_intf/axis/scripts/axis.py:186 -msgid "Control-M" -msgstr "Control-M" +#: share/axis/tcl/axis.tcl:341 +msgid "Show e_xtents" +msgstr "Показать размеры" -#: src/emc/usr_intf/axis/scripts/axis.py:186 -msgid "Clear MDI history" -msgstr "Очистить журнал MDI" +#: share/axis/tcl/axis.tcl:345 +msgid "_Grid" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:187 -msgid "Control-H" -msgstr "Control-H" +#: share/axis/tcl/axis.tcl:350 +#, fuzzy +msgid "Show o_ffsets" +msgstr "Показать размеры" -#: src/emc/usr_intf/axis/scripts/axis.py:187 -msgid "Copy selected MDI history elements" -msgstr "Скопировать выбранные фрагменты журнала MDI" +#: share/axis/tcl/axis.tcl:355 +msgid "Sh_ow machine limits" +msgstr "Показать пределы станка" -#: src/emc/usr_intf/axis/scripts/axis.py:188 -msgid "to clipboard" -msgstr "в буфер" +#: share/axis/tcl/axis.tcl:360 +msgid "Show v_elocity" +msgstr "Показать скорость" -#: src/emc/usr_intf/axis/scripts/axis.py:189 -msgid "Control-Shift-H" -msgstr "Control-Shift-H" +#: share/axis/tcl/axis.tcl:365 +msgid "Show _distance to go" +msgstr "Показать оставшееся расстояние" -#: src/emc/usr_intf/axis/scripts/axis.py:189 -msgid "Paste clipboard to MDI history" -msgstr "Вставить буфер в журнал MDI" +#: share/axis/tcl/axis.tcl:370 +msgid "Large coordinate fo_nt" +msgstr "Крупный шрифт" -#: src/emc/usr_intf/axis/scripts/axis.py:190 share/axis/tcl/axis.tcl:1113 -#: src/emc/usr_intf/touchy/touchy.glade:508 -msgid "Override Limits" -msgstr "Игнорировать пределы" +#: share/axis/tcl/axis.tcl:373 +msgid "Ctrl-K" +msgstr "Ctrl-K" -#: src/emc/usr_intf/axis/scripts/axis.py:192 -msgid "Open program" -msgstr "Открыть программу" +#: share/axis/tcl/axis.tcl:375 +msgid "_Clear live plot" +msgstr "Очистить исполненное" -#: src/emc/usr_intf/axis/scripts/axis.py:193 -msgid "Control-R" -msgstr "Control-R" +#: share/axis/tcl/axis.tcl:384 +msgid "Show commanded position" +msgstr "Показать заданную позицию" -#: src/emc/usr_intf/axis/scripts/axis.py:193 -msgid "Reload program" -msgstr "Перезагрузить программу" +#: share/axis/tcl/axis.tcl:391 +msgid "Show actual position" +msgstr "Показать настоящую позицию" -#: src/emc/usr_intf/axis/scripts/axis.py:194 -msgid "Control-S" -msgstr "Control-S" +#: share/axis/tcl/axis.tcl:400 +msgid "Show machine position" +msgstr "Показать станочную позицию" -#: src/emc/usr_intf/axis/scripts/axis.py:194 -msgid "Save g-code as" -msgstr "Сохранить программу как" +#: share/axis/tcl/axis.tcl:407 +msgid "Show relative position" +msgstr "Показать относительную позицию" -#: src/emc/usr_intf/axis/scripts/axis.py:195 -msgid "Run program" -msgstr "Исполнить программу" +#: share/axis/tcl/axis.tcl:416 +msgid "Joint mode" +msgstr "Режим сочленений" -#: src/emc/usr_intf/axis/scripts/axis.py:196 -msgid "Step program" -msgstr "Шагать по программе" +#: share/axis/tcl/axis.tcl:423 +msgid "World mode" +msgstr "Режим координат" -#: src/emc/usr_intf/axis/scripts/axis.py:197 -msgid "Pause program" -msgstr "Приостановить программу" +#: share/axis/tcl/axis.tcl:431 +msgid "_Off" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:198 -msgid "Resume program" -msgstr "Продолжить программу" +#: share/axis/tcl/axis.tcl:437 +msgid "_Custom" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:199 -msgid "Stop running program, or" -msgstr "Остановить запущенную программу или" +#: share/axis/tcl/axis.tcl:443 +msgid "User_0" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:200 -msgid "stop loading program preview" -msgstr "остановить загрузку просмотра программы" +#: share/axis/tcl/axis.tcl:447 +msgid "User_1" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:202 -msgid "Toggle mist" -msgstr "Включить туман" +#: share/axis/tcl/axis.tcl:451 +msgid "User_2" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:203 -msgid "Toggle flood" -msgstr "Включить охлаждение" +#: share/axis/tcl/axis.tcl:455 +msgid "User_3" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:204 -msgid "Spindle brake off" -msgstr "Отключить тормоз шпинделя" +#: share/axis/tcl/axis.tcl:459 +msgid "User_4" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:205 -msgid "Shift-B" -msgstr "Shift-B" +#: share/axis/tcl/axis.tcl:463 +msgid "User_5" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:205 -msgid "Spindle brake on" -msgstr "Включить тормоз шпинделя" +#: share/axis/tcl/axis.tcl:467 +msgid "User_6" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:206 -msgid "Turn spindle clockwise" -msgstr "Вращать шпиндель по часовой стрелке" +#: share/axis/tcl/axis.tcl:471 +msgid "User_7" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:207 -msgid "Turn spindle counterclockwise" -msgstr "Вращать шпиндель против часовой стрелки" +#: share/axis/tcl/axis.tcl:475 +msgid "User_8" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:208 -msgid "Turn spindle more slowly" -msgstr "Вращать шпиндель медленнее" +#: share/axis/tcl/axis.tcl:479 +msgid "User_9" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:209 -msgid "Turn spindle more quickly" -msgstr "Вращать шпиндель быстрее" +#: share/axis/tcl/axis.tcl:491 +msgid "_About AXIS" +msgstr "О AXIS" -#: src/emc/usr_intf/axis/scripts/axis.py:211 -msgid "Control-K" -msgstr "Control-K" +#: share/axis/tcl/axis.tcl:495 +msgid "Quick _Reference" +msgstr "Быстрая справка" -#: src/emc/usr_intf/axis/scripts/axis.py:211 -msgid "Clear live plot" -msgstr "Очистить плоттер" +#: share/axis/tcl/axis.tcl:505 +msgid "_Machine" +msgstr "Станок" -#: src/emc/usr_intf/axis/scripts/axis.py:212 -msgid "Cycle among preset views" -msgstr "Переключиться между заданными видами" +#: share/axis/tcl/axis.tcl:509 +msgid "_View" +msgstr "Вид" -#: src/emc/usr_intf/axis/scripts/axis.py:213 -#, fuzzy -msgid "Cycle among preview, DRO, and user tabs" -msgstr "Переключиться между заданными видами" +#: share/axis/tcl/axis.tcl:513 +msgid "_User" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:215 -msgid "Ctrl-Space" -msgstr "Control-Пробел" +#: share/axis/tcl/axis.tcl:526 +msgid "Toggle Emergency Stop [F1]" +msgstr "Аварийная остановка [F1]" -#: src/emc/usr_intf/axis/scripts/axis.py:215 -msgid "Clear notifications" -msgstr "Очистить сообщения" +#: share/axis/tcl/axis.tcl:535 +msgid "Toggle Machine power [F2]" +msgstr "Питание станка [F2]" + +#: share/axis/tcl/axis.tcl:546 +msgid "Open G-Code file [O]" +msgstr "Открыть файл G-кодов [O]" -#: src/emc/usr_intf/axis/scripts/axis.py:836 -#, python-format -msgid "Unknown tool %d" -msgstr "Неизвестный инструмент %d" +#: share/axis/tcl/axis.tcl:554 +msgid "Reopen current file [Control-R]" +msgstr "Перечитать текущий файл·[Control-R]" -#: src/emc/usr_intf/axis/scripts/axis.py:838 -msgid "No tool" -msgstr "Без инструмента" +#: share/axis/tcl/axis.tcl:564 +msgid "Begin executing current file [R]" +msgstr "Начать исполнение текущего файла·[R]" -#: src/emc/usr_intf/axis/scripts/axis.py:840 -#, python-format -msgid "Tool %(tool)d, offset %(zo)g, diameter %(dia)g" -msgstr "Инструмент %(tool)d, отступ %(zo)g, диаметр %(dia)g" +#: share/axis/tcl/axis.tcl:572 +msgid "Execute next line [T]" +msgstr "Исполнить следующую строку·[T]" -#: src/emc/usr_intf/axis/scripts/axis.py:842 -#, python-format -msgid "Tool %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" -msgstr "Инструмент %(tool)d, zo %(zo)g, xo %(xo)g, диаметр %(dia)g" +#: share/axis/tcl/axis.tcl:580 +msgid "Pause [P] / resume [S] execution" +msgstr "Приостановить·[P]·/·продолжить·[S]·исполнение" -#: src/emc/usr_intf/axis/scripts/axis.py:1013 -msgid "Filtering..." -msgstr "Фильтрую..." +#: share/axis/tcl/axis.tcl:588 +msgid "Stop program execution [ESC]" +msgstr "Остановить исполнение программы·[ESC]" -#: src/emc/usr_intf/axis/scripts/axis.py:1073 -msgid "Filter failed" -msgstr "Ошибка фильтра" +#: share/axis/tcl/axis.tcl:598 +msgid "Toggle skip lines with '/' [Alt-M /]" +msgstr "Пропускать строки с '/' [Alt-M /]" -#: src/emc/usr_intf/axis/scripts/axis.py:1074 -#, python-format -msgid "" -"The program %(program)r exited with code %(code)d. Any error messages it " -"produced are shown below:" -msgstr "" -"Программа %(program)r завершилась с кодом %(code)d. Все сообщения об " -"ошибках показаны ниже:" +#: share/axis/tcl/axis.tcl:605 +msgid "Toggle optional pause [Alt-M 1]" +msgstr "Включить остановку по требованию [Alt-M 1]" -#: src/emc/usr_intf/axis/scripts/axis.py:1139 -#, python-format -msgid "G-Code error in %s" -msgstr "Ошибка G-кода на %s" +#: share/axis/tcl/axis.tcl:614 src/emc/usr_intf/gmoccapy/gmoccapy.glade:549 +msgid "Zoom in" +msgstr "Приблизить" -#: src/emc/usr_intf/axis/scripts/axis.py:1140 -#, python-format -msgid "" -"Near line %(seq)d of %(f)s:\n" -"%(error_str)s" -msgstr "" -"Около строки %(seq)d в %(f)s:\n" -"%(error_str)s" +#: share/axis/tcl/axis.tcl:622 src/emc/usr_intf/gmoccapy/gmoccapy.glade:567 +msgid "Zoom out" +msgstr "Удалить" -#: src/emc/usr_intf/axis/scripts/axis.py:1292 -#: src/emc/usr_intf/axis/scripts/axis.py:2725 share/axis/tcl/axis.tcl:1092 -#: share/axis/tcl/axis.tcl:1094 share/axis/tcl/axis.tcl:2144 -msgid "Continuous" -msgstr "Постоянный" +#: share/axis/tcl/axis.tcl:630 +msgid "Top view" +msgstr "Вид сверху" -#: src/emc/usr_intf/axis/scripts/axis.py:1403 -msgid "Ok" -msgstr "" +#: share/axis/tcl/axis.tcl:638 +msgid "Rotated top view" +msgstr "Повернутый вид сверху" -#: src/emc/usr_intf/axis/scripts/axis.py:1546 -msgid "T Tool Table" -msgstr "T Таблица инструментов" +#: share/axis/tcl/axis.tcl:646 +msgid "Side view" +msgstr "Вид сбоку" -#: src/emc/usr_intf/axis/scripts/axis.py:1557 -#: src/emc/usr_intf/axis/scripts/axis.py:1730 -#: src/emc/usr_intf/stepconf/stepconf.py:1691 -#: src/emc/usr_intf/stepconf/stepconf.py:2235 -msgid "in" -msgstr "дюйм" +#: share/axis/tcl/axis.tcl:654 +msgid "Front view" +msgstr "Вид спереди" -#: src/emc/usr_intf/axis/scripts/axis.py:1560 -msgid " radius" -msgstr "радиус" +#: share/axis/tcl/axis.tcl:662 +msgid "Perspective view" +msgstr "Вид в перспективе" -#: src/emc/usr_intf/axis/scripts/axis.py:1562 -msgid " diameter" -msgstr "диаметр" +#: share/axis/tcl/axis.tcl:670 +msgid "Toggle between Drag and Rotate Mode [D]" +msgstr "Переключить между смещением и вращением·[D]" -#: src/emc/usr_intf/axis/scripts/axis.py:1563 -msgid "°" -msgstr "°" +#: share/axis/tcl/axis.tcl:685 +msgid "Clear live plot [Ctrl-K]" +msgstr "Очистить путь·[Ctrl-K]" -#: src/emc/usr_intf/axis/scripts/axis.py:1572 -msgid "Coordinate System:" -msgstr "Координатная система:" +#: share/axis/tcl/axis.tcl:836 +msgid "Manual Control [F3]" +msgstr "Ручное управление·[F3]" -#: src/emc/usr_intf/axis/scripts/axis.py:1588 -msgid "fixture" -msgstr "" +#: share/axis/tcl/axis.tcl:837 +msgid "MDI [F5]" +msgstr "MDI [F5]" -#: src/emc/usr_intf/axis/scripts/axis.py:1589 -msgid "workpiece" -msgstr "" +#: share/axis/tcl/axis.tcl:851 share/axis/tcl/axis.tcl:2158 +#: share/axis/tcl/axis.tcl:2328 +msgid "Axis:" +msgstr "Ось:" -#: src/emc/usr_intf/axis/scripts/axis.py:1605 -msgid "Name:" -msgstr "Имя:" +#: share/axis/tcl/axis.tcl:1172 src/emc/usr_intf/gscreen/gscreen.glade:2944 +msgid "Home Axis" +msgstr "Найти начало оси" -#: src/emc/usr_intf/axis/scripts/axis.py:1605 -msgid "Size:" -msgstr "Размер:" +#: share/axis/tcl/axis.tcl:1246 +msgid "Spindle:" +msgstr "Шпиндель:" -#: src/emc/usr_intf/axis/scripts/axis.py:1606 -msgid "Tool order:" -msgstr "Номер инструмента:" +#: share/axis/tcl/axis.tcl:1293 src/emc/usr_intf/touchy/touchy.glade:946 +#: src/emc/usr_intf/stepconf/main_page.glade:406 +#: src/emc/usr_intf/gscreen/gscreen.glade:4067 +msgid "-" +msgstr "-" -#: src/emc/usr_intf/axis/scripts/axis.py:1606 -msgid "Rapid distance:" -msgstr "Расстояние быстрого хода:" +#: share/axis/tcl/axis.tcl:1307 src/emc/usr_intf/stepconf/main_page.glade:403 +#: src/emc/usr_intf/gscreen/gscreen.glade:4056 +msgid "+" +msgstr "+" -#: src/emc/usr_intf/axis/scripts/axis.py:1607 -msgid "Feed distance:" -msgstr "Расстояние рабочего хода:" +#: share/axis/tcl/axis.tcl:1312 +msgid "Brake" +msgstr "Тормоз" -#: src/emc/usr_intf/axis/scripts/axis.py:1607 -msgid "Total distance:" -msgstr "Общее расстояние:" +#: share/axis/tcl/axis.tcl:1359 +msgid "Coolant:" +msgstr "Охлаждение:" -#: src/emc/usr_intf/axis/scripts/axis.py:1608 -msgid "Run time:" -msgstr "Время работы:" +#: share/axis/tcl/axis.tcl:1364 +msgid "Mist" +msgstr "Туман" -#: src/emc/usr_intf/axis/scripts/axis.py:1608 -msgid "X bounds:" -msgstr "границы по X:" +#: share/axis/tcl/axis.tcl:1369 +msgid "Flood" +msgstr "Струя" -#: src/emc/usr_intf/axis/scripts/axis.py:1609 -msgid "Y bounds:" -msgstr "границы по Y:" +#: share/axis/tcl/axis.tcl:1441 +msgid "History:" +msgstr "Журнал:" -#: src/emc/usr_intf/axis/scripts/axis.py:1609 -msgid "Z bounds:" -msgstr "границы по Z:" +#: share/axis/tcl/axis.tcl:1464 +msgid "MDI Command:" +msgstr "Команда MDI:" -#: src/emc/usr_intf/axis/scripts/axis.py:1610 -msgid "A bounds:" -msgstr "границы по A:" +#: share/axis/tcl/axis.tcl:1473 +msgid "Go" +msgstr "Исполнить" -#: src/emc/usr_intf/axis/scripts/axis.py:1610 -msgid "B bounds:" -msgstr "границы по B:" +#: share/axis/tcl/axis.tcl:1479 +msgid "Active G-Codes:" +msgstr "Активные G-коды:" -#: src/emc/usr_intf/axis/scripts/axis.py:1611 -msgid "C bounds:" -msgstr "границы по C:" +#: share/axis/tcl/axis.tcl:1557 src/emc/usr_intf/gmoccapy/gmoccapy.glade:771 +msgid "Preview" +msgstr "Вид" -#: src/emc/usr_intf/axis/scripts/axis.py:1635 -#, python-format -msgid "Program exceeds machine minimum on axis %s" -msgstr "Программа выходит за минимум оси %s" +#: share/axis/tcl/axis.tcl:1558 +msgid "DRO" +msgstr "Координаты" -#: src/emc/usr_intf/axis/scripts/axis.py:1638 -#, python-format -msgid "Program exceeds machine maximum on axis %s" -msgstr "Программа выходит за максимум оси %s" +#: share/axis/tcl/axis.tcl:1645 share/axis/tcl/axis.tcl:1658 +msgid "Jog Speed:" +msgstr "Скорость перемещений" -#: src/emc/usr_intf/axis/scripts/axis.py:1643 -msgid "Program exceeds machine limits" -msgstr "Программа выходит за пределы станка" +#: share/axis/tcl/axis.tcl:1670 +msgid "Max Velocity:" +msgstr "Максимальная скорость:" -#: src/emc/usr_intf/axis/scripts/axis.py:1646 -msgid "Run Anyway" -msgstr "Исполнить все равно" +#: share/axis/tcl/axis.tcl:1699 +msgid "Spindle Override:" +msgstr "Скорость шпинделя:" -#: src/emc/usr_intf/axis/scripts/axis.py:1708 -msgid "No file loaded" -msgstr "Файл не загружен" +#: share/axis/tcl/axis.tcl:1701 share/axis/tcl/axis.tcl:1741 +#: share/axis/tcl/axis.tcl:1779 src/emc/usr_intf/pncconf/pncconf.glade:2834 +#: src/emc/usr_intf/pncconf/pncconf.glade:2845 +#: src/emc/usr_intf/pncconf/pncconf.glade:2949 +#: src/emc/usr_intf/pncconf/pncconf.glade:2962 +#: src/emc/usr_intf/pncconf/pncconf.glade:2975 +#: src/emc/usr_intf/pncconf/pncconf.glade:2988 +#: src/emc/usr_intf/pncconf/pncconf.glade:3001 +#: src/emc/usr_intf/pncconf/pncconf.glade:3014 +#: src/emc/usr_intf/pncconf/pncconf.glade:3127 +#: src/emc/usr_intf/pncconf/pncconf.glade:3140 +#: src/emc/usr_intf/pncconf/pncconf.glade:3153 +#: src/emc/usr_intf/pncconf/pncconf.glade:3166 +#: src/emc/usr_intf/pncconf/pncconf.glade:3179 +#: src/emc/usr_intf/pncconf/pncconf.glade:3192 +#: src/emc/usr_intf/pncconf/pncconf.glade:3205 +#: src/emc/usr_intf/pncconf/pncconf.glade:3218 +#: src/emc/usr_intf/pncconf/pncconf.glade:3715 +#: src/emc/usr_intf/pncconf/pncconf.glade:3726 +#: src/emc/usr_intf/pncconf/pncconf.glade:3830 +#: src/emc/usr_intf/pncconf/pncconf.glade:3843 +#: src/emc/usr_intf/pncconf/pncconf.glade:3856 +#: src/emc/usr_intf/pncconf/pncconf.glade:3869 +#: src/emc/usr_intf/pncconf/pncconf.glade:3882 +#: src/emc/usr_intf/pncconf/pncconf.glade:3895 +#: src/emc/usr_intf/pncconf/pncconf.glade:4008 +#: src/emc/usr_intf/pncconf/pncconf.glade:4021 +#: src/emc/usr_intf/pncconf/pncconf.glade:4034 +#: src/emc/usr_intf/pncconf/pncconf.glade:4047 +#: src/emc/usr_intf/pncconf/pncconf.glade:4060 +#: src/emc/usr_intf/pncconf/pncconf.glade:4073 +#: src/emc/usr_intf/pncconf/pncconf.glade:4086 +#: src/emc/usr_intf/pncconf/pncconf.glade:4099 +#: src/emc/usr_intf/pncconf/pncconf.glade:4596 +#: src/emc/usr_intf/pncconf/pncconf.glade:4607 +#: src/emc/usr_intf/pncconf/pncconf.glade:4711 +#: src/emc/usr_intf/pncconf/pncconf.glade:4724 +#: src/emc/usr_intf/pncconf/pncconf.glade:4737 +#: src/emc/usr_intf/pncconf/pncconf.glade:4750 +#: src/emc/usr_intf/pncconf/pncconf.glade:4763 +#: src/emc/usr_intf/pncconf/pncconf.glade:4776 +#: src/emc/usr_intf/pncconf/pncconf.glade:4889 +#: src/emc/usr_intf/pncconf/pncconf.glade:4902 +#: src/emc/usr_intf/pncconf/pncconf.glade:4915 +#: src/emc/usr_intf/pncconf/pncconf.glade:4928 +#: src/emc/usr_intf/pncconf/pncconf.glade:4941 +#: src/emc/usr_intf/pncconf/pncconf.glade:4954 +#: src/emc/usr_intf/pncconf/pncconf.glade:4967 +#: src/emc/usr_intf/pncconf/pncconf.glade:4980 +#: src/emc/usr_intf/pncconf/pncconf.glade:5631 +#: src/emc/usr_intf/pncconf/pncconf.glade:5643 +#: src/emc/usr_intf/pncconf/pncconf.glade:5690 +msgid "%" +msgstr "%" -#: src/emc/usr_intf/axis/scripts/axis.py:1716 -#, python-format -msgid "generated from %s" -msgstr "получено из %s" +#: share/axis/tcl/axis.tcl:1777 +#, fuzzy +msgid "Rapid Override:" +msgstr "Скорость шпинделя:" -#: src/emc/usr_intf/axis/scripts/axis.py:1722 -#, python-format +#: share/axis/tcl/axis.tcl:1819 +#, fuzzy msgid "" -"%(size)s bytes\n" -"%(lines)s gcode lines" +"Machinekit/AXIS version $version\n" +"\n" +"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff " +"Epler and Chris Radek.\n" +"\n" +"This is free software, and you are welcome to redistribute it under certain " +"conditions. See the file COPYING, included with Machinekit.\n" +"\n" +"Visit the Machinekit web site: " msgstr "" -"%(size)s байт\n" -"%(lines)s строк gcode" +"LinuxCNC/AXIS версия $version\n" +"\n" +"Копирайт (C) 2004-2012 Jeff Epler и Chris Radek.\n" +"\n" +"Это бесплатная программа, и Вы можете копировать ее на определенных " +"условиях. Смотрите файл COPYING, поставляемый вместе с LinuxCNC.\n" +"\n" +"Посетите веб-сайт LinuxCNC: " -#: src/emc/usr_intf/axis/scripts/axis.py:1748 -#, python-format -msgid "%.1f minutes" -msgstr "%.1f минут" +#: share/axis/tcl/axis.tcl:1847 +msgid "About AXIS" +msgstr "О AXIS" -#: src/emc/usr_intf/axis/scripts/axis.py:1750 -#, python-format -msgid "%d seconds" -msgstr "%d секунд" +#: share/axis/tcl/axis.tcl:1876 +msgid "AXIS Quick Reference" +msgstr "Быстрая справка AXIS" -#: src/emc/usr_intf/axis/scripts/axis.py:1758 -#, python-format -msgid "%(a)f to %(b)f = %(diff)f %(units)s" -msgstr "%(a)f к %(b)f = %(diff)f %(units)s" +#: share/axis/tcl/axis.tcl:2017 +#, fuzzy +msgid "AXIS with MachineKit $::version on $::machine" +msgstr "AXIS $::version on $::machine" -#: src/emc/usr_intf/axis/scripts/axis.py:1759 -msgid "G-Code Properties" -msgstr "Свойства G-кода" +#: share/axis/tcl/axis.tcl:2019 +msgid "(no file)" +msgstr "(нет файла)" -#: src/emc/usr_intf/axis/scripts/axis.py:1883 -msgid "All machinable files" -msgstr "Все исполняемые файлы" +#: share/axis/tcl/axis.tcl:2091 share/axis/tcl/axis.tcl:2096 +msgid "Position:" +msgstr "Позиция:" -#: src/emc/usr_intf/axis/scripts/axis.py:1884 -#: src/emc/usr_intf/axis/scripts/axis.py:2464 -msgid "rs274ngc files" -msgstr "rs274ngc файлы" +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/gscreen/gscreen.py:3516 +msgid "Machine" +msgstr "Абсолютная" -#: src/emc/usr_intf/axis/scripts/axis.py:1899 -msgid "axis cannot accept remote command while running" -msgstr "" +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/touchy/touchy.glade:155 +msgid "Relative" +msgstr "Относительная" -#: src/emc/usr_intf/axis/scripts/axis.py:2255 -msgid "Axis is already homed, are you sure you want to re-home?" -msgstr "" +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3329 +msgid "Actual" +msgstr "Настоящая" -#: src/emc/usr_intf/axis/scripts/axis.py:2268 -msgid "This axis is already homed, are you sure you want to re-home?" -msgstr "" +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3318 +msgid "Commanded" +msgstr "Заданная" -#: src/emc/usr_intf/axis/scripts/axis.py:2308 share/axis/tcl/axis.tcl:1108 -msgid "Touch Off" -msgstr "Задать отступ" +#: share/axis/tcl/axis.tcl:2154 share/axis/tcl/axis.tcl:2328 +msgid "Joint:" +msgstr "Ось:" -#: src/emc/usr_intf/axis/scripts/axis.py:2309 -#, fuzzy, python-format -msgid "Enter %s coordinate relative to %%s:" -msgstr "Введите %s координату относительно заготовки:" +#: share/axis/tcl/axis.tcl:2463 +msgid "Turn spindle counterclockwise [F10]" +msgstr "Вращать шпиндель назад·[F10]" + +#: share/axis/tcl/axis.tcl:2464 +msgid "Turn spindle clockwise [F9]" +msgstr "Вращать шпиндель вперед·[F9]" + +#: share/axis/tcl/axis.tcl:2465 +msgid "Stop spindle [F9/F10]" +msgstr "Остановить шпиндель·[F9/F10]" + +#: share/axis/tcl/axis.tcl:2466 +msgid "Turn spindle Faster [F12]" +msgstr "Вращать шпиндель быстрее·[F12]" + +#: share/axis/tcl/axis.tcl:2467 +msgid "Turn spindle Slower [F11]" +msgstr "Вращать шпиндель медленнее·[F11]" + +#: share/axis/tcl/axis.tcl:2468 +msgid "Turn spindle brake on [Shift-B] or off [B]" +msgstr "Включить тормоз шпинделя·[Shift-B]·или выключить·[B]" + +#: share/axis/tcl/axis.tcl:2469 +msgid "Turn flood on or off [F8]" +msgstr "Включить охлаждение струей·[F8]" -#: src/emc/usr_intf/axis/scripts/axis.py:2476 -msgid "Error saving file" -msgstr "Ошибка при сохранении файла" +#: share/axis/tcl/axis.tcl:2470 +msgid "Turn mist on or off [F7]" +msgstr "Охлаждение туманом·[F7]" -#: src/emc/usr_intf/axis/scripts/axis.py:2859 -#: src/emc/usr_intf/touchy/touchy.glade:577 -msgid "Home All" -msgstr "Все в начало" +#: share/axis/tcl/axis.tcl:2471 +msgid "Send active axis home [Home]" +msgstr "Поставить активную ось в начало·[Home]" -#: src/emc/usr_intf/axis/scripts/axis.py:2861 -msgid "Home all axes [Ctrl-Home]" -msgstr "Все оси в начало [Ctrl-Home]" +#: share/axis/tcl/axis.tcl:2472 +msgid "Set G54 offset for active axis [End]" +msgstr "Установить отступ G54 для активной оси·[End]" -#: src/emc/usr_intf/axis/scripts/axis.py:2864 -msgid "Home All Axes" -msgstr "Все оси в начало" +#: share/axis/tcl/axis.tcl:2473 +msgid "Activate axis [X]" +msgstr "Выбрать ось·[X]" -#: src/emc/usr_intf/axis/scripts/axis.py:2871 -msgid "Unhome All Axes" -msgstr "Забыть начало всех осей" +#: share/axis/tcl/axis.tcl:2474 +msgid "Activate axis [Y]" +msgstr "Выбрать ось·[Y]" -#: src/emc/usr_intf/axis/scripts/axis.py:2895 -#, python-format -msgid "Home Axis _%s" -msgstr "Ось _%s в начало" +#: share/axis/tcl/axis.tcl:2475 +msgid "Activate axis [Z]" +msgstr "Выбрать ось·[Z]" -#: src/emc/usr_intf/axis/scripts/axis.py:2897 -#, python-format -msgid "Unhome Axis _%s" -msgstr "Забыть начало оси _%s" +#: share/axis/tcl/axis.tcl:2476 +msgid "Activate axis [A]" +msgstr "Выбрать ось·[A]" -#: src/emc/usr_intf/axis/scripts/axis.py:3040 -msgid "Run from here" -msgstr "Исполнить отсюда" +#: share/axis/tcl/axis.tcl:2477 +msgid "Activate axis [4]" +msgstr "Выбрать ось·[4]" -#: src/emc/usr_intf/axis/scripts/axis.py:3335 -msgid "Error in ~/.axisrc" -msgstr "Ошибка в ~/.axisrc" +#: share/axis/tcl/axis.tcl:2478 +msgid "Activate axis [5]" +msgstr "Выбрать ось·[5]" -#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:102 -msgid "LinuxCNC Status" -msgstr "" +#: share/axis/tcl/axis.tcl:2479 share/axis/tcl/axis.tcl:2480 +msgid "Jog selected axis" +msgstr "Двигать активную ось" -#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:118 -#, fuzzy -msgid "Copy All" -msgstr "Копировать" +#: share/axis/tcl/axis.tcl:2482 +msgid "Temporarily allow jogging outside machine limits [L]" +msgstr "Временно разрешить ход за пределами станка [L]" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:29 -#, python-format -msgid "Insert tool %d and click continue when ready" -msgstr "Поставьте инструмент %d и нажмите Продолжить" +#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:47 +msgid "Spindle CW" +msgstr "Шпиндель вперед" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:31 -msgid "Remove the tool and click continue when ready" -msgstr "Уберите инструмент и нажмите Продолжить" +#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:48 +msgid "Spindle CCW" +msgstr "Шпиндель назад" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 -#: src/emc/usr_intf/touchy/mdi.py:49 -msgid "Tool change" -msgstr "Смена инструмента" +#: src/emc/usr_intf/touchy/mdi.py:50 +#, fuzzy +msgid "Set tool number" +msgstr "Перенумеровать" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 -msgid "Continue" -msgstr "Продолжить" +#: src/emc/usr_intf/touchy/mdi.py:51 src/emc/usr_intf/gscreen/mdi.py:50 +msgid "Input control" +msgstr "Ручное управление" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:55 -msgid "AXIS Manual Toolchanger" -msgstr "Ручная смена инструмента AXIS" +#: src/emc/usr_intf/touchy/mdi.py:54 src/emc/usr_intf/touchy/mdi.py:55 +#: src/emc/usr_intf/gscreen/mdi.py:53 src/emc/usr_intf/gscreen/mdi.py:54 +msgid "Straight rapid" +msgstr "" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:59 -msgid "" -"This window is part of the AXIS manual toolchanger. It is safe to close or " -"iconify this window, or it will close automatically after a few seconds." +#: src/emc/usr_intf/touchy/mdi.py:56 src/emc/usr_intf/touchy/mdi.py:57 +#: src/emc/usr_intf/gscreen/mdi.py:55 src/emc/usr_intf/gscreen/mdi.py:56 +msgid "Straight feed" msgstr "" -"Это окно является частью ручной смены инструмента AXIS. Его можно закрыть " -"или спрятать, или оно исчезнет само через несколько секунд." -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:507 -#, python-format -msgid "%s: Image to gcode" -msgstr "%s: Картинку в код" +#: src/emc/usr_intf/touchy/mdi.py:58 src/emc/usr_intf/touchy/mdi.py:59 +#: src/emc/usr_intf/gscreen/mdi.py:57 src/emc/usr_intf/gscreen/mdi.py:58 +msgid "Arc CW" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:508 -msgid "Image to gcode" -msgstr "Картинку в код" +#: src/emc/usr_intf/touchy/mdi.py:60 src/emc/usr_intf/touchy/mdi.py:61 +#: src/emc/usr_intf/gscreen/mdi.py:59 src/emc/usr_intf/gscreen/mdi.py:60 +msgid "Arc CCW" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:518 -#, python-format -msgid "" -"Image size: %(w)d x %(h)d pixels\n" -"Minimum pixel value: %(min)d\n" -"Maximum pixel value: %(max)d" +#: src/emc/usr_intf/touchy/mdi.py:62 src/emc/usr_intf/touchy/mdi.py:63 +#: src/emc/usr_intf/gscreen/mdi.py:61 src/emc/usr_intf/gscreen/mdi.py:62 +msgid "Dwell" msgstr "" -"Размер картинки: %(w)d x %(h)d пикселей\n" -"Минимальное значение пикселя: %(min)d\n" -"Максимальное значение пикселя: %(max)d" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 -msgid "G20 (in)" -msgstr "G20 (дюймы)" +#: src/emc/usr_intf/touchy/mdi.py:64 src/emc/usr_intf/gscreen/mdi.py:63 +msgid "Setup" +msgstr "Настройки" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 -msgid "G21 (mm)" -msgstr "G21 (мм)" +#: src/emc/usr_intf/touchy/mdi.py:65 src/emc/usr_intf/gscreen/mdi.py:64 +msgid "Spindle synchronized feed" +msgstr "подача синхронно со шпинделем:" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 -#: src/emc/usr_intf/touchy/emc_interface.py:417 -msgid "None" -msgstr "Ничего" +#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:65 +msgid "Rigid tap" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 -msgid "White" -msgstr "Белый" +#: src/emc/usr_intf/touchy/mdi.py:67 src/emc/usr_intf/touchy/mdi.py:68 +#: src/emc/usr_intf/touchy/mdi.py:69 src/emc/usr_intf/touchy/mdi.py:70 +#: src/emc/usr_intf/gscreen/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:67 +#: src/emc/usr_intf/gscreen/mdi.py:68 src/emc/usr_intf/gscreen/mdi.py:69 +msgid "Probe" +msgstr "Щуп" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 -msgid "Black" -msgstr "Черный" +#: src/emc/usr_intf/touchy/mdi.py:71 src/emc/usr_intf/gscreen/mdi.py:70 +msgid "Radius compensation left" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Rows" -msgstr "Строки" +#: src/emc/usr_intf/touchy/mdi.py:72 src/emc/usr_intf/gscreen/mdi.py:71 +msgid "Radius compensation right" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Columns" -msgstr "Колонки" +#: src/emc/usr_intf/touchy/mdi.py:73 src/emc/usr_intf/gscreen/mdi.py:72 +msgid "Radius compensation left, immediate" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Rows then Columns" -msgstr "Строки затем колонки" +#: src/emc/usr_intf/touchy/mdi.py:74 src/emc/usr_intf/gscreen/mdi.py:73 +msgid "Radius compensation right, immediate" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Columns then Rows" -msgstr "Колонки затем строки" +#: src/emc/usr_intf/touchy/mdi.py:75 src/emc/usr_intf/gscreen/mdi.py:74 +msgid "Tool length offset" +msgstr "Отступ длины инструмента" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Positive" -msgstr "Позитивный" +#: src/emc/usr_intf/touchy/mdi.py:76 src/emc/usr_intf/gscreen/mdi.py:75 +msgid "Tool length offset immediate" +msgstr "Отступ длины инструмента мгновенный" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Negative" -msgstr "Негативный" +#: src/emc/usr_intf/touchy/mdi.py:77 src/emc/usr_intf/gscreen/mdi.py:76 +msgid "Motion in unoffset coordinates" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Alternating" -msgstr "Переменный" +#: src/emc/usr_intf/touchy/mdi.py:78 src/emc/usr_intf/gscreen/mdi.py:77 +msgid "Continuous mode" +msgstr "Постоянный ход" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Up Milling" -msgstr "Фрезеровка вверх" +#: src/emc/usr_intf/touchy/mdi.py:80 src/emc/usr_intf/gscreen/mdi.py:79 +msgid "Drill" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Down Milling" -msgstr "Фрезеровка вниз" +#: src/emc/usr_intf/touchy/mdi.py:81 src/emc/usr_intf/gscreen/mdi.py:80 +msgid "Drill with dwell" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "Ball End" -msgstr "Шаровая фреза" +#: src/emc/usr_intf/touchy/mdi.py:82 src/emc/usr_intf/gscreen/mdi.py:81 +msgid "Peck drill" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "Flat End" -msgstr "Плоская фреза" +#: src/emc/usr_intf/touchy/mdi.py:83 src/emc/usr_intf/gscreen/mdi.py:82 +msgid "Chip-break drill" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "30 Degree" -msgstr "30 градусов" +#: src/emc/usr_intf/touchy/mdi.py:84 src/emc/usr_intf/gscreen/mdi.py:83 +msgid "Bore" +msgstr "Расточка" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "45 Degree" -msgstr "45 градусов" +#: src/emc/usr_intf/touchy/mdi.py:85 src/emc/usr_intf/gscreen/mdi.py:84 +msgid "Bore with dwell" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "60 Degree" -msgstr "60 градусов" +#: src/emc/usr_intf/touchy/mdi.py:86 src/emc/usr_intf/gscreen/mdi.py:85 +msgid "Offset all coordinate systems" +msgstr "Отступ всех координат" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 -msgid "Secondary" -msgstr "Вторичный" +#: src/emc/usr_intf/touchy/mdi.py:87 src/emc/usr_intf/gscreen/mdi.py:86 +msgid "CSS Mode" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 -msgid "Full" -msgstr "Полный" +#: src/emc/usr_intf/touchy/emc_interface.py:410 +msgid "CCW" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:654 -msgid "Invert Image" -msgstr "Инвертировать картинку" +#: src/emc/usr_intf/touchy/emc_interface.py:410 +msgid "Stopped" +msgstr "Остановлен" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:655 -msgid "Normalize Image" -msgstr "Нормализовать картинку" +#: src/emc/usr_intf/touchy/emc_interface.py:410 +msgid "CW" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:656 -msgid "Extend Image Border" -msgstr "Увеличить границу" +#: src/emc/usr_intf/touchy/touchy.glade:7 +msgid "LinuxCNC/Touchy" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:657 -msgid "Pixel Size (Units)" -msgstr "Размер пикселя" +#. # Touchy is Copyright (c) 2009 Chris Radek # # Touchy 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 2 of the License, or # (at your option) any later version. # # Touchy 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. +#: src/emc/usr_intf/touchy/touchy.glade:11 +msgid "window1" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:658 -msgid "Depth (units)" -msgstr "Глубина" +#: src/emc/usr_intf/touchy/touchy.glade:31 +msgid "xa" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:659 -msgid "Tolerance (units)" -msgstr "Точность" +#: src/emc/usr_intf/touchy/touchy.glade:44 +msgid "xd" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:660 -msgid "Stepover (pixels)" -msgstr "Шаг (пиксели)" +#: src/emc/usr_intf/touchy/touchy.glade:57 +msgid "yr" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:661 -msgid "Tool Diameter (units)" -msgstr "Диаметр инструмента" +#: src/emc/usr_intf/touchy/touchy.glade:68 +msgid "ya" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:662 -msgid "Tool Type" -msgstr "Тип инструмента" +#: src/emc/usr_intf/touchy/touchy.glade:81 +msgid "yd" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:663 -msgid "Feed Rate (units per minute)" -msgstr "Скорость хода (в минуту)" +#: src/emc/usr_intf/touchy/touchy.glade:94 +msgid "zr" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:664 -msgid "Plunge Feed Rate (units per minute)" -msgstr "Скорость врезания (в минуту)" +#: src/emc/usr_intf/touchy/touchy.glade:105 +msgid "za" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:666 -msgid "Safety Height (units)" -msgstr "Безопасная высота" +#: src/emc/usr_intf/touchy/touchy.glade:118 +msgid "zd" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:667 -msgid "Scan Pattern" -msgstr "Шаблон сканирования" +#: src/emc/usr_intf/touchy/touchy.glade:131 +#: src/emc/usr_intf/gscreen/gscreen.glade:85 +#: src/emc/usr_intf/gscreen/gscreen.glade:213 +#: src/emc/usr_intf/gscreen/gscreen.glade:343 +#: src/emc/usr_intf/gscreen/gscreen.glade:471 +#: src/emc/usr_intf/gscreen/gscreen.glade:599 +#: src/emc/usr_intf/gscreen/gscreen.glade:727 +#: src/emc/usr_intf/gscreen/gscreen.glade:855 +#: src/emc/usr_intf/gscreen/gscreen.glade:983 +#: src/emc/usr_intf/gscreen/gscreen.glade:1111 +msgid "DTG" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:668 -msgid "Scan Direction" -msgstr "Направление сканирования" +#: src/emc/usr_intf/touchy/touchy.glade:143 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Absolute" +msgstr "Абсолютный" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:669 -msgid "Lace Bounding" -msgstr "Ограничение разводов" +#: src/emc/usr_intf/touchy/touchy.glade:165 +msgid "xr" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:670 -msgid "Contact Angle (degrees)" -msgstr "Угол контакта" +#: src/emc/usr_intf/touchy/touchy.glade:176 +msgid "ar" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:671 -msgid "Spindle Speed (RPM)" -msgstr "Обороты шпинделя" +#: src/emc/usr_intf/touchy/touchy.glade:188 +msgid "br" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:672 -msgid "Roughing offset (units, 0=no roughing)" -msgstr "Отступ грубого прохода (0=без прохода)" +#: src/emc/usr_intf/touchy/touchy.glade:200 +msgid "cr" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:673 -msgid "Roughing depth per pass (units)" -msgstr "Съём за проход" +#: src/emc/usr_intf/touchy/touchy.glade:212 +msgid "ur" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:740 -msgid "image-to-gcode: User pressed cancel" -msgstr "image-to-gcode: Отмена пользователем" +#: src/emc/usr_intf/touchy/touchy.glade:224 +msgid "vr" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:753 -msgid "Depth images" -msgstr "Картинки глубины" +#: src/emc/usr_intf/touchy/touchy.glade:236 +msgid "wr" +msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:22 -#, fuzzy -msgid "LinuxCNC Debug Level" -msgstr "Уровень отладки" +#: src/emc/usr_intf/touchy/touchy.glade:248 +msgid "aa" +msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:23 -msgid "debuglevel" -msgstr "debuglevel" +#: src/emc/usr_intf/touchy/touchy.glade:262 +msgid "ba" +msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:36 -msgid "Configuration *" -msgstr "Установки *" +#: src/emc/usr_intf/touchy/touchy.glade:276 +msgid "ca" +msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:37 -msgid "Version Numbers *" -msgstr "Номер версий *" +#: src/emc/usr_intf/touchy/touchy.glade:290 +msgid "ua" +msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:38 -msgid "NML *" -msgstr "NML *" +#: src/emc/usr_intf/touchy/touchy.glade:304 +msgid "va" +msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:39 -msgid "RCS *" -msgstr "RCS *" +#: src/emc/usr_intf/touchy/touchy.glade:318 +msgid "wa" +msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:40 -msgid "Task Issue" -msgstr "Номер задания" +#: src/emc/usr_intf/touchy/touchy.glade:332 +msgid "ad" +msgstr "ad" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:41 -msgid "Motion Time" -msgstr "Время движения" +#: src/emc/usr_intf/touchy/touchy.glade:346 +msgid "bd" +msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:43 -msgid "Interpreter List" -msgstr "Список интерпретатора" +#: src/emc/usr_intf/touchy/touchy.glade:360 +msgid "cd" +msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:47 -#, python-format -msgid "" -"Inifile setting for this debug level:\n" -"[EMC]DEBUG=0x%08x" +#: src/emc/usr_intf/touchy/touchy.glade:374 +msgid "ud" msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:81 -msgid " * This option can only be enabled in the inifile" -msgstr " * Эта опция может быть разрешена только в .INI-файле" +#: src/emc/usr_intf/touchy/touchy.glade:388 +msgid "vd" +msgstr "" -#: share/axis/tcl/axis.tcl:49 -msgid "_Open..." -msgstr "Oткрыть..." +#: src/emc/usr_intf/touchy/touchy.glade:402 +msgid "wd" +msgstr "" -#: share/axis/tcl/axis.tcl:53 -msgid "Recent _Files" -msgstr "Недавние файлы" +#: src/emc/usr_intf/touchy/touchy.glade:448 +msgid "Estop Reset" +msgstr "АВОСТ сброс" -#: share/axis/tcl/axis.tcl:57 -msgid "_Edit..." -msgstr "Изменить..." +#: src/emc/usr_intf/touchy/touchy.glade:459 +#: src/emc/usr_intf/stepconf/pport1.glade:21 +#: src/emc/usr_intf/stepconf/pport2.glade:1409 +#: src/emc/usr_intf/gscreen/gscreen.glade:2442 +msgid "Estop" +msgstr "АВОСТ" -#: share/axis/tcl/axis.tcl:60 -msgid "Ctrl-R" -msgstr "Ctrl-R" +#: src/emc/usr_intf/touchy/touchy.glade:475 +msgid "Machine On" +msgstr "Станок вкл" -#: share/axis/tcl/axis.tcl:62 -msgid "_Reload" -msgstr "Перегрузить" +#: src/emc/usr_intf/touchy/touchy.glade:490 +msgid "Machine Off" +msgstr "Станок выкл" -#: share/axis/tcl/axis.tcl:65 -msgid "Ctrl-S" -msgstr "Ctrl-S" +#: src/emc/usr_intf/touchy/touchy.glade:531 +msgid "Power" +msgstr "Питание" -#: share/axis/tcl/axis.tcl:67 -msgid "_Save gcode as..." -msgstr "Сохранить код как..." +#: src/emc/usr_intf/touchy/touchy.glade:562 +msgid "Unhome All" +msgstr "Забыть начало всех осей" -#: share/axis/tcl/axis.tcl:71 -msgid "_Properties..." -msgstr "Свойства..." +#: src/emc/usr_intf/touchy/touchy.glade:588 +msgid "Home Selected" +msgstr "Найти начало активной оси" -#: share/axis/tcl/axis.tcl:77 -msgid "Edit _tool table..." -msgstr "Изменить таблицу инструментов..." +#: src/emc/usr_intf/touchy/touchy.glade:603 +msgid "Unhome Selected" +msgstr "Забыть начало активной оси" -#: share/axis/tcl/axis.tcl:81 -msgid "Reload tool ta_ble" -msgstr "Перегрузить таблицу инструментов" +#: src/emc/usr_intf/touchy/touchy.glade:625 +msgid "Homing" +msgstr "Поиск начала" -#: share/axis/tcl/axis.tcl:87 -msgid "_Ladder Editor..." -msgstr "PLC редактор..." +#: src/emc/usr_intf/touchy/touchy.glade:644 +msgid "Startup" +msgstr "Стартовый" -#: share/axis/tcl/axis.tcl:99 -msgid "Toggle _Emergency Stop" -msgstr "Аварийный стоп" +#: src/emc/usr_intf/touchy/touchy.glade:727 +msgid "G" +msgstr "G" -#: share/axis/tcl/axis.tcl:104 -msgid "Toggle _Machine Power" -msgstr "Питание станка" +#: src/emc/usr_intf/touchy/touchy.glade:929 +msgid "." +msgstr "" -#: share/axis/tcl/axis.tcl:111 -msgid "_Run program" -msgstr "Исполнить программу" +#: src/emc/usr_intf/touchy/touchy.glade:963 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "0" +msgstr "" -#: share/axis/tcl/axis.tcl:115 -msgid "Ru_n from selected line" -msgstr "Исполнить с выделенной строки" +#: src/emc/usr_intf/touchy/touchy.glade:980 +msgid "3" +msgstr "" -#: share/axis/tcl/axis.tcl:120 -msgid "S_tep" -msgstr "Шаг" +#: src/emc/usr_intf/touchy/touchy.glade:997 +msgid "2" +msgstr "" -#: share/axis/tcl/axis.tcl:125 -msgid "_Pause" -msgstr "Пауза" +#: src/emc/usr_intf/touchy/touchy.glade:1014 +msgid "1" +msgstr "" -#: share/axis/tcl/axis.tcl:130 -msgid "Re_sume" -msgstr "Продолжить" +#: src/emc/usr_intf/touchy/touchy.glade:1031 +msgid "6" +msgstr "" -#: share/axis/tcl/axis.tcl:140 -msgid "Stop at M_1" -msgstr "Остановить на M1" +#: src/emc/usr_intf/touchy/touchy.glade:1048 +msgid "5" +msgstr "" -#: share/axis/tcl/axis.tcl:145 -msgid "Skip lines with '_/'" -msgstr "Пропускать строки с '_/'" +#: src/emc/usr_intf/touchy/touchy.glade:1065 +msgid "4" +msgstr "" -#: share/axis/tcl/axis.tcl:150 -msgid "Ctrl-M" -msgstr "Ctrl-M" +#: src/emc/usr_intf/touchy/touchy.glade:1082 +msgid "9" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:1097 +msgid "8" +msgstr "" -#: share/axis/tcl/axis.tcl:152 -msgid "Clear MDI h_istory" -msgstr "Очистить журнал MDI" +#: src/emc/usr_intf/touchy/touchy.glade:1112 +msgid "7" +msgstr "" -#: share/axis/tcl/axis.tcl:154 -msgid "Ctrl-H" -msgstr "Ctrl-H" +#: src/emc/usr_intf/touchy/touchy.glade:1297 +msgid "Flood On" +msgstr "Струя вкл" -#: share/axis/tcl/axis.tcl:156 -msgid "Copy from MDI hist_ory" -msgstr "Скопировать из журнала MDI" +#: src/emc/usr_intf/touchy/touchy.glade:1308 +msgid "Flood Off" +msgstr "Струя выкл" -#: share/axis/tcl/axis.tcl:158 -msgid "Ctrl-Shift-H" -msgstr "Ctrl-Shift-H" +#: src/emc/usr_intf/touchy/touchy.glade:1324 +msgid "Mist On" +msgstr "Туман вкл" -#: share/axis/tcl/axis.tcl:160 -msgid "Paste to MDI histor_y" -msgstr "Скопировать в журнал MDI" +#: src/emc/usr_intf/touchy/touchy.glade:1339 +msgid "Mist Off" +msgstr "Туман выкл" -#: share/axis/tcl/axis.tcl:166 -msgid "_Calibration" -msgstr "Калибровка" +#: src/emc/usr_intf/touchy/touchy.glade:1362 +msgid "Coolant" +msgstr "Охлаждение" -#: share/axis/tcl/axis.tcl:170 -msgid "Show _Hal Configuration" -msgstr "Показать установки HAL" +#: src/emc/usr_intf/touchy/touchy.glade:1448 +msgid "Spindle Off" +msgstr "Выключить шпиндель" -#: share/axis/tcl/axis.tcl:174 -msgid "H_al Meter" -msgstr "HAL-метр" +#: src/emc/usr_intf/touchy/touchy.glade:1501 +#: src/emc/usr_intf/touchy/touchy.glade:2578 +msgid "Spindle speed:" +msgstr "Обороты шпинделя:" -#: share/axis/tcl/axis.tcl:178 -msgid "Ha_l Scope" -msgstr "HAL-скоп" +#: src/emc/usr_intf/touchy/touchy.glade:1513 +#: src/emc/usr_intf/touchy/touchy.glade:2707 +msgid "label26" +msgstr "" -#: share/axis/tcl/axis.tcl:182 -#, fuzzy -msgid "Sho_w LinuxCNC Status" -msgstr "Показать статус EMC" +#: src/emc/usr_intf/touchy/touchy.glade:1539 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4226 +msgid "Spindle" +msgstr "Шпиндель" -#: share/axis/tcl/axis.tcl:186 -msgid "Set _Debug Level" -msgstr "Установить уровень отладки" +#: src/emc/usr_intf/touchy/touchy.glade:1597 +msgid "file.ngc" +msgstr "" -#: share/axis/tcl/axis.tcl:192 -msgid "Homin_g" -msgstr "Поиск начала" +#: src/emc/usr_intf/touchy/touchy.glade:1812 +#: src/emc/usr_intf/touchy/touchy.glade:2017 +#: src/emc/usr_intf/touchy/touchy.glade:2037 +#: src/emc/usr_intf/touchy/touchy.glade:2057 +#: src/emc/usr_intf/touchy/touchy.glade:2077 +#: src/emc/usr_intf/touchy/touchy.glade:2097 +#: src/emc/usr_intf/touchy/touchy.glade:2117 +#: src/emc/usr_intf/touchy/touchy.glade:2137 +#: src/emc/usr_intf/touchy/touchy.glade:2157 +#: src/emc/usr_intf/touchy/touchy.glade:2177 +msgid "M2" +msgstr "" -#: share/axis/tcl/axis.tcl:196 -msgid "_Unhoming" -msgstr "Сброс начала" +#: src/emc/usr_intf/touchy/touchy.glade:2244 +#: src/emc/usr_intf/touchy/touchy.glade:2374 +msgid "Page" +msgstr "Страница" -#: share/axis/tcl/axis.tcl:200 -msgid "_Zero coordinate system" -msgstr "Обнулить координаты" +#: src/emc/usr_intf/touchy/touchy.glade:2308 +msgid "Start Point" +msgstr "" -#: share/axis/tcl/axis.tcl:204 -msgid "P1 G5_4" -msgstr "P1 G5_4" +#: src/emc/usr_intf/touchy/touchy.glade:2452 +msgid "Loaded File" +msgstr "" -#: share/axis/tcl/axis.tcl:208 -msgid "P2 G5_5" -msgstr "P2 G5_5" +#: src/emc/usr_intf/touchy/touchy.glade:2488 +msgid "Loaded file:" +msgstr "" -#: share/axis/tcl/axis.tcl:212 -msgid "P3 G5_6" -msgstr "P3 G5_6" +#: src/emc/usr_intf/touchy/touchy.glade:2499 +msgid "Interpreted line:" +msgstr "Исполненная строка:" -#: share/axis/tcl/axis.tcl:216 -msgid "P4 G5_7" -msgstr "P4 G5_7" +#: src/emc/usr_intf/touchy/touchy.glade:2513 +msgid "Distance:" +msgstr "Расстояние:" -#: share/axis/tcl/axis.tcl:220 -msgid "P5 G5_8" -msgstr "P5 G5_8" +#: src/emc/usr_intf/touchy/touchy.glade:2526 +#: src/emc/usr_intf/stepconf/main_page.glade:23 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Velocity:" +msgstr "Скорость:" -#: share/axis/tcl/axis.tcl:224 -msgid "P6 G5_9" -msgstr "P6 G5_9" +#: src/emc/usr_intf/touchy/touchy.glade:2539 +msgid "Delay:" +msgstr "" -#: share/axis/tcl/axis.tcl:228 -msgid "P7 G59._1" -msgstr "P7 G59._1" +#: src/emc/usr_intf/touchy/touchy.glade:2552 +msgid "On limit switch:" +msgstr "" -#: share/axis/tcl/axis.tcl:232 -msgid "P8 G59._2" -msgstr "P8 G59._2" +#: src/emc/usr_intf/touchy/touchy.glade:2565 +msgid "Spindle direction:" +msgstr "Направление шпинделя:" -#: share/axis/tcl/axis.tcl:236 -msgid "P9 G59._3" -msgstr "P9 G59._3" +#: src/emc/usr_intf/touchy/touchy.glade:2591 +msgid "Loaded tool:" +msgstr "Загруженный инструмент:" -#: share/axis/tcl/axis.tcl:240 -msgid "_G92" -msgstr "_G92" +#: src/emc/usr_intf/touchy/touchy.glade:2604 +#: src/emc/usr_intf/touchy/touchy.glade:2955 +msgid "label19" +msgstr "" -#: share/axis/tcl/axis.tcl:248 -msgid "Tool touch off to wor_kpiece" +#: src/emc/usr_intf/touchy/touchy.glade:2617 +msgid "label20" msgstr "" -#: share/axis/tcl/axis.tcl:254 -msgid "Tool touch off to _fixture" +#: src/emc/usr_intf/touchy/touchy.glade:2632 +#: src/emc/usr_intf/touchy/touchy.glade:2779 +#: src/emc/usr_intf/touchy/touchy.glade:2808 +#: src/emc/usr_intf/touchy/touchy.glade:2912 +#: src/emc/usr_intf/touchy/touchy.glade:2927 +msgid "label21" msgstr "" -#: share/axis/tcl/axis.tcl:262 -msgid "_Top view" -msgstr "Вид сверху" +#: src/emc/usr_intf/touchy/touchy.glade:2647 +msgid "label22" +msgstr "" -#: share/axis/tcl/axis.tcl:269 -msgid "_Rotated Top view" -msgstr "Повернутый вид сверху" +#: src/emc/usr_intf/touchy/touchy.glade:2662 +msgid "label23" +msgstr "" -#: share/axis/tcl/axis.tcl:276 -msgid "_Side view" -msgstr "Вид сбоку" +#: src/emc/usr_intf/touchy/touchy.glade:2677 +msgid "label24" +msgstr "" -#: share/axis/tcl/axis.tcl:283 -msgid "_Front view" -msgstr "Вид спереди" +#: src/emc/usr_intf/touchy/touchy.glade:2692 +msgid "label25" +msgstr "" -#: share/axis/tcl/axis.tcl:290 -msgid "_Perspective view" -msgstr "Вид в перспективе" +#: src/emc/usr_intf/touchy/touchy.glade:2722 +msgid "label27" +msgstr "" -#: share/axis/tcl/axis.tcl:299 -msgid "Display _Inches" -msgstr "Показать дюймы" +#: src/emc/usr_intf/touchy/touchy.glade:2737 +msgid "Prepped tool:" +msgstr "" -#: share/axis/tcl/axis.tcl:306 -msgid "Display _MM" -msgstr "Показать мм" +#: src/emc/usr_intf/touchy/touchy.glade:2750 +msgid "label28" +msgstr "" -#: share/axis/tcl/axis.tcl:313 -msgid "S_how program" -msgstr "Показать программу" +#: src/emc/usr_intf/touchy/touchy.glade:2765 +msgid "Running line:" +msgstr "Исполняемая строка:" -#: share/axis/tcl/axis.tcl:318 -msgid "Show program r_apids" -msgstr "Показать быстрые проходы" +#: src/emc/usr_intf/touchy/touchy.glade:2794 +msgid "XY Rotation:" +msgstr "XY вращение:" -#: share/axis/tcl/axis.tcl:323 -#, fuzzy -msgid "Alpha-_blend program" -msgstr "Открыть программу" +#: src/emc/usr_intf/touchy/touchy.glade:2823 +msgid "Tool length:" +msgstr "Длина инструмента:" -#: share/axis/tcl/axis.tcl:328 -msgid "Sho_w live plot" -msgstr "Показать исполненное" +#: src/emc/usr_intf/touchy/touchy.glade:2836 +msgid "label52" +msgstr "" -#: share/axis/tcl/axis.tcl:333 -msgid "Show too_l" -msgstr "Показать инструмент" +#: src/emc/usr_intf/touchy/touchy.glade:2851 +msgid "" +"G1 G2 G3\n" +"M1 M2 M3\n" +"F1 S1" +msgstr "" -#: share/axis/tcl/axis.tcl:338 -msgid "Show e_xtents" -msgstr "Показать размеры" +#: src/emc/usr_intf/touchy/touchy.glade:2870 +msgid "Active codes:" +msgstr "Активные коды:" -#: share/axis/tcl/axis.tcl:343 +#: src/emc/usr_intf/touchy/touchy.glade:2883 #, fuzzy -msgid "Show o_ffsets" -msgstr "Показать размеры" +msgid "G5x Offset:" +msgstr "Отступ:" -#: share/axis/tcl/axis.tcl:348 -msgid "Sh_ow machine limits" -msgstr "Показать пределы станка" +#: src/emc/usr_intf/touchy/touchy.glade:2898 +#, fuzzy +msgid "G92 Offset:" +msgstr "Отступ:" -#: share/axis/tcl/axis.tcl:353 -msgid "Show v_elocity" -msgstr "Показать скорость" +#: src/emc/usr_intf/touchy/touchy.glade:2942 +#, fuzzy +msgid "Loaded file lines:" +msgstr "Загруженный инструмент:" -#: share/axis/tcl/axis.tcl:358 -msgid "Show _distance to go" -msgstr "Показать оставшееся расстояние" +#: src/emc/usr_intf/touchy/touchy.glade:2971 +msgid "Pockets:" +msgstr "" -#: share/axis/tcl/axis.tcl:363 -msgid "Large coordinate fo_nt" -msgstr "Крупный шрифт" +#: src/emc/usr_intf/touchy/touchy.glade:2984 +#, fuzzy +msgid "" +"1\n" +"2\n" +"3" +msgstr "b)" -#: share/axis/tcl/axis.tcl:366 -msgid "Ctrl-K" -msgstr "Ctrl-K" +#: src/emc/usr_intf/touchy/touchy.glade:3009 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6414 +msgid "Status" +msgstr "Статус" -#: share/axis/tcl/axis.tcl:368 -msgid "_Clear live plot" -msgstr "Очистить исполненное" +#: src/emc/usr_intf/touchy/touchy.glade:3038 +msgid "Control Font:" +msgstr "Шрифт управления:" + +#: src/emc/usr_intf/touchy/touchy.glade:3050 +msgid "DRO Font:" +msgstr "Шрифт координат:" -#: share/axis/tcl/axis.tcl:377 -msgid "Show commanded position" -msgstr "Показать заданную позицию" +#: src/emc/usr_intf/touchy/touchy.glade:3064 +msgid "Error Font:" +msgstr "Шрифт ошибок:" -#: share/axis/tcl/axis.tcl:384 -msgid "Show actual position" -msgstr "Показать настоящую позицию" +#: src/emc/usr_intf/touchy/touchy.glade:3081 +msgid "ControlFont" +msgstr "Шрифт управления" -#: share/axis/tcl/axis.tcl:393 -msgid "Show machine position" -msgstr "Показать станочную позицию" +#: src/emc/usr_intf/touchy/touchy.glade:3100 +msgid "DRO Font" +msgstr "Шрифт координат" -#: share/axis/tcl/axis.tcl:400 -msgid "Show relative position" -msgstr "Показать относительную позицию" +#: src/emc/usr_intf/touchy/touchy.glade:3121 +msgid "Error Font" +msgstr "Шрифт ошибок" -#: share/axis/tcl/axis.tcl:409 -msgid "Joint mode" -msgstr "Режим сочленений" +#: src/emc/usr_intf/touchy/touchy.glade:3139 +msgid "Listing Font:" +msgstr "Шрифт программы:" -#: share/axis/tcl/axis.tcl:416 -msgid "World mode" -msgstr "Режим координат" +#: src/emc/usr_intf/touchy/touchy.glade:3156 +msgid "Listing Font" +msgstr "Шрифт программы" -#: share/axis/tcl/axis.tcl:425 -msgid "_About AXIS" -msgstr "О AXIS" +#: src/emc/usr_intf/touchy/touchy.glade:3176 +msgid "Hide pointer" +msgstr "" -#: share/axis/tcl/axis.tcl:429 -msgid "Quick _Reference" -msgstr "Быстрая справка" +#: src/emc/usr_intf/touchy/touchy.glade:3187 +msgid "Show pointer" +msgstr "Показать стрелку" -#: share/axis/tcl/axis.tcl:439 -msgid "_Machine" -msgstr "Станок" +#: src/emc/usr_intf/touchy/touchy.glade:3214 +msgid "Theme:" +msgstr "" -#: share/axis/tcl/axis.tcl:443 -msgid "_View" -msgstr "Вид" +#: src/emc/usr_intf/touchy/touchy.glade:3228 +#, fuzzy +msgid "default\n" +msgstr "умолчания AXIS" -#: share/axis/tcl/axis.tcl:456 -msgid "Toggle Emergency Stop [F1]" -msgstr "Аварийная остановка [F1]" +#: src/emc/usr_intf/touchy/touchy.glade:3252 +msgid "Display Options" +msgstr "" -#: share/axis/tcl/axis.tcl:465 -msgid "Toggle Machine power [F2]" -msgstr "Питание станка [F2]" +#: src/emc/usr_intf/touchy/touchy.glade:3286 +#: src/emc/usr_intf/stepconf/base.glade:867 +#: src/emc/usr_intf/gscreen/gscreen.glade:3664 +msgid "Inch" +msgstr "дюйм" -#: share/axis/tcl/axis.tcl:476 -msgid "Open G-Code file [O]" -msgstr "Открыть файл G-кодов [O]" +#: src/emc/usr_intf/touchy/touchy.glade:3349 +msgid "Position Readout" +msgstr "" -#: share/axis/tcl/axis.tcl:484 -msgid "Reopen current file [Control-R]" -msgstr "Перечитать текущий файл·[Control-R]" +#: src/emc/usr_intf/touchy/touchy.glade:3379 +msgid "Workpiece" +msgstr "" -#: share/axis/tcl/axis.tcl:494 -msgid "Begin executing current file [R]" -msgstr "Начать исполнение текущего файла·[R]" +#: src/emc/usr_intf/touchy/touchy.glade:3390 +msgid "Fixture" +msgstr "" -#: share/axis/tcl/axis.tcl:502 -msgid "Execute next line [T]" -msgstr "Исполнить следующую строку·[T]" +#: src/emc/usr_intf/touchy/touchy.glade:3410 +#, fuzzy +msgid "Tool Setting" +msgstr "Поиск начала" -#: share/axis/tcl/axis.tcl:510 -msgid "Pause [P] / resume [S] execution" -msgstr "Приостановить·[P]·/·продолжить·[S]·исполнение" +#: src/emc/usr_intf/touchy/touchy.glade:3441 +msgid "Delete / lines" +msgstr "Удалить / строки" -#: share/axis/tcl/axis.tcl:518 -msgid "Stop program execution [ESC]" -msgstr "Остановить исполнение программы·[ESC]" +#: src/emc/usr_intf/touchy/touchy.glade:3456 +msgid "Keep / lines" +msgstr "Сохранить / строки" -#: share/axis/tcl/axis.tcl:528 -msgid "Toggle skip lines with '/' [Alt-M /]" -msgstr "Пропускать строки с '/' [Alt-M /]" +#: src/emc/usr_intf/touchy/touchy.glade:3473 +msgid "Pause on M1" +msgstr "Пауза по M1" -#: share/axis/tcl/axis.tcl:535 -msgid "Toggle optional pause [Alt-M 1]" -msgstr "Включить остановку по требованию [Alt-M 1]" +#: src/emc/usr_intf/touchy/touchy.glade:3484 +msgid "Ignore M1" +msgstr "" -#: share/axis/tcl/axis.tcl:544 -msgid "Zoom in" -msgstr "Приблизить" +#: src/emc/usr_intf/touchy/touchy.glade:3504 +msgid "Program Options" +msgstr "Опции программы" -#: share/axis/tcl/axis.tcl:552 -msgid "Zoom out" -msgstr "Удалить" +#: src/emc/usr_intf/touchy/touchy.glade:3531 +#: src/emc/usr_intf/gscreen/gscreen.glade:2200 +msgid "Preferences" +msgstr "" -#: share/axis/tcl/axis.tcl:560 -msgid "Top view" -msgstr "Вид сверху" +#: src/emc/usr_intf/touchy/touchy.glade:3567 +#: src/emc/usr_intf/gscreen/gscreen.glade:1425 +msgid "FO: 100%" +msgstr "" -#: share/axis/tcl/axis.tcl:568 -msgid "Rotated top view" -msgstr "Повернутый вид сверху" +#: src/emc/usr_intf/touchy/touchy.glade:3582 +#: src/emc/usr_intf/gscreen/gscreen.glade:1437 +msgid "SO: 100%" +msgstr "" -#: share/axis/tcl/axis.tcl:576 -msgid "Side view" -msgstr "Вид сбоку" +#: src/emc/usr_intf/touchy/touchy.glade:3596 +msgid "MV: 100" +msgstr "" -#: share/axis/tcl/axis.tcl:584 -msgid "Front view" -msgstr "Вид спереди" +#: src/emc/usr_intf/touchy/touchy.glade:3610 +msgid "Jogging" +msgstr "Движение" -#: share/axis/tcl/axis.tcl:592 -msgid "Perspective view" -msgstr "Вид в перспективе" +#: src/emc/usr_intf/touchy/touchy.glade:3624 +msgid "Start Point" +msgstr "" -#: share/axis/tcl/axis.tcl:600 -msgid "Toggle between Drag and Rotate Mode [D]" -msgstr "Переключить между смещением и вращением·[D]" +#: src/emc/usr_intf/touchy/touchy.glade:3651 +msgid ".01" +msgstr "" -#: share/axis/tcl/axis.tcl:615 -msgid "Clear live plot [Ctrl-K]" -msgstr "Очистить путь·[Ctrl-K]" +#: src/emc/usr_intf/touchy/touchy.glade:3664 +msgid ".001" +msgstr "" -#: share/axis/tcl/axis.tcl:766 -msgid "Manual Control [F3]" -msgstr "Ручное управление·[F3]" +#: src/emc/usr_intf/touchy/touchy.glade:3680 +msgid ".0001" +msgstr "" -#: share/axis/tcl/axis.tcl:767 -msgid "MDI [F5]" -msgstr "MDI [F5]" +#: src/emc/usr_intf/touchy/touchy.glade:3708 +msgid " X " +msgstr "" -#: share/axis/tcl/axis.tcl:781 share/axis/tcl/axis.tcl:2036 -#: share/axis/tcl/axis.tcl:2203 -msgid "Axis:" -msgstr "Ось:" +#: src/emc/usr_intf/touchy/touchy.glade:3720 +msgid " Y " +msgstr "" -#: share/axis/tcl/axis.tcl:1102 -msgid "Home Axis" -msgstr "Найти начало оси" +#: src/emc/usr_intf/touchy/touchy.glade:3735 +msgid " Z " +msgstr "" -#: share/axis/tcl/axis.tcl:1176 -msgid "Spindle:" -msgstr "Шпиндель:" +#: src/emc/usr_intf/touchy/touchy.glade:3750 +msgid " A " +msgstr "" -#: share/axis/tcl/axis.tcl:1223 src/emc/usr_intf/touchy/touchy.glade:946 -msgid "-" -msgstr "-" +#: src/emc/usr_intf/touchy/touchy.glade:3766 +msgid " B " +msgstr "" -#: share/axis/tcl/axis.tcl:1237 -msgid "+" -msgstr "+" +#: src/emc/usr_intf/touchy/touchy.glade:3784 +msgid " C " +msgstr "" -#: share/axis/tcl/axis.tcl:1242 -msgid "Brake" -msgstr "Тормоз" +#: src/emc/usr_intf/touchy/touchy.glade:3802 +msgid " U " +msgstr "" -#: share/axis/tcl/axis.tcl:1289 -msgid "Coolant:" -msgstr "Охлаждение:" +#: src/emc/usr_intf/touchy/touchy.glade:3818 +msgid " V " +msgstr "" -#: share/axis/tcl/axis.tcl:1294 -msgid "Mist" -msgstr "Туман" +#: src/emc/usr_intf/touchy/touchy.glade:3836 +msgid " W " +msgstr "" -#: share/axis/tcl/axis.tcl:1299 -msgid "Flood" -msgstr "Струя" +#: src/emc/usr_intf/touchy/touchy.glade:3869 +msgid "Handwheel" +msgstr "Штурвал" -#: share/axis/tcl/axis.tcl:1371 -msgid "History:" -msgstr "Журнал:" +#: src/emc/usr_intf/stepconf/stepconf.py:57 +msgid "" +"Stepconf encountered an error. The following information may be useful in " +"troubleshooting:\n" +"\n" +msgstr "" +"Stepconf·обнаружил ошибку.··Эта информация может помочь:\n" +"\n" -#: share/axis/tcl/axis.tcl:1394 -msgid "MDI Command:" -msgstr "Команда MDI:" +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#, fuzzy +msgid "Stepconf" +msgstr "Шаг" -#: share/axis/tcl/axis.tcl:1403 -msgid "Go" -msgstr "Исполнить" +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#: src/emc/usr_intf/stepconf/stepconf.py:217 +#: src/emc/usr_intf/stepconf/main_page.glade:557 +#: src/emc/usr_intf/gscreen/gscreen.py:3414 +#: src/emc/usr_intf/gscreen/gscreen.py:3415 +#: src/emc/usr_intf/gscreen/gscreen.glade:4043 +#, fuzzy +msgid "Start" +msgstr "Стартовый" -#: share/axis/tcl/axis.tcl:1409 -msgid "Active G-Codes:" -msgstr "Активные G-коды:" +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Base Information" +msgstr "Базовая конфигурация" -#: share/axis/tcl/axis.tcl:1487 -msgid "Preview" -msgstr "Вид" +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Parallel Port 1" +msgstr "Настройка параллельного порта" -#: share/axis/tcl/axis.tcl:1488 -msgid "DRO" -msgstr "Координаты" +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Parallel Port 2" +msgstr "Настройка параллельного порта" -#: share/axis/tcl/axis.tcl:1575 share/axis/tcl/axis.tcl:1588 -msgid "Jog Speed:" -msgstr "Скорость перемещений" +#: src/emc/usr_intf/stepconf/stepconf.py:130 +#, fuzzy +msgid "Options" +msgstr "Опции PLC" -#: share/axis/tcl/axis.tcl:1600 -msgid "Max Velocity:" -msgstr "Максимальная скорость:" +#: src/emc/usr_intf/stepconf/stepconf.py:130 +#, fuzzy +msgid "Axis X" +msgstr "Ось " -#: share/axis/tcl/axis.tcl:1629 -msgid "Spindle Override:" -msgstr "Скорость шпинделя:" +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis Y" +msgstr "Ось " -#: share/axis/tcl/axis.tcl:1631 share/axis/tcl/axis.tcl:1671 -#: src/emc/usr_intf/pncconf/pncconf.glade:3141 -#: src/emc/usr_intf/pncconf/pncconf.glade:3154 -#: src/emc/usr_intf/pncconf/pncconf.glade:3167 -#: src/emc/usr_intf/pncconf/pncconf.glade:3180 -#: src/emc/usr_intf/pncconf/pncconf.glade:3193 -#: src/emc/usr_intf/pncconf/pncconf.glade:3206 -#: src/emc/usr_intf/pncconf/pncconf.glade:3219 -#: src/emc/usr_intf/pncconf/pncconf.glade:3232 -#: src/emc/usr_intf/pncconf/pncconf.glade:3345 -#: src/emc/usr_intf/pncconf/pncconf.glade:3358 -#: src/emc/usr_intf/pncconf/pncconf.glade:3371 -#: src/emc/usr_intf/pncconf/pncconf.glade:3384 -#: src/emc/usr_intf/pncconf/pncconf.glade:3397 -#: src/emc/usr_intf/pncconf/pncconf.glade:3410 -#: src/emc/usr_intf/pncconf/pncconf.glade:3516 -#: src/emc/usr_intf/pncconf/pncconf.glade:3527 -#: src/emc/usr_intf/pncconf/pncconf.glade:4022 -#: src/emc/usr_intf/pncconf/pncconf.glade:4035 -#: src/emc/usr_intf/pncconf/pncconf.glade:4048 -#: src/emc/usr_intf/pncconf/pncconf.glade:4061 -#: src/emc/usr_intf/pncconf/pncconf.glade:4074 -#: src/emc/usr_intf/pncconf/pncconf.glade:4087 -#: src/emc/usr_intf/pncconf/pncconf.glade:4100 -#: src/emc/usr_intf/pncconf/pncconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:4226 -#: src/emc/usr_intf/pncconf/pncconf.glade:4239 -#: src/emc/usr_intf/pncconf/pncconf.glade:4252 -#: src/emc/usr_intf/pncconf/pncconf.glade:4265 -#: src/emc/usr_intf/pncconf/pncconf.glade:4278 -#: src/emc/usr_intf/pncconf/pncconf.glade:4291 -#: src/emc/usr_intf/pncconf/pncconf.glade:4397 -#: src/emc/usr_intf/pncconf/pncconf.glade:4408 -#: src/emc/usr_intf/pncconf/pncconf.glade:4903 -#: src/emc/usr_intf/pncconf/pncconf.glade:4916 -#: src/emc/usr_intf/pncconf/pncconf.glade:4929 -#: src/emc/usr_intf/pncconf/pncconf.glade:4942 -#: src/emc/usr_intf/pncconf/pncconf.glade:4955 -#: src/emc/usr_intf/pncconf/pncconf.glade:4968 -#: src/emc/usr_intf/pncconf/pncconf.glade:4981 -#: src/emc/usr_intf/pncconf/pncconf.glade:4994 -#: src/emc/usr_intf/pncconf/pncconf.glade:5107 -#: src/emc/usr_intf/pncconf/pncconf.glade:5120 -#: src/emc/usr_intf/pncconf/pncconf.glade:5133 -#: src/emc/usr_intf/pncconf/pncconf.glade:5146 -#: src/emc/usr_intf/pncconf/pncconf.glade:5159 -#: src/emc/usr_intf/pncconf/pncconf.glade:5172 -#: src/emc/usr_intf/pncconf/pncconf.glade:5278 -#: src/emc/usr_intf/pncconf/pncconf.glade:5289 -#: src/emc/usr_intf/pncconf/pncconf.glade:5582 -#: src/emc/usr_intf/pncconf/pncconf.glade:5631 -#: src/emc/usr_intf/pncconf/pncconf.glade:5641 -msgid "%" -msgstr "%" +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis Z" +msgstr "Ось " -#: share/axis/tcl/axis.tcl:1711 +#: src/emc/usr_intf/stepconf/stepconf.py:131 #, fuzzy -msgid "" -"LinuxCNC/AXIS version $version\n" -"\n" -"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff Epler and Chris " -"Radek.\n" -"\n" -"This is free software, and you are welcome to redistribute it under certain " -"conditions. See the file COPYING, included with LinuxCNC.\n" -"\n" -"Visit the LinuxCNC web site: " -msgstr "" -"LinuxCNC/AXIS версия $version\n" -"\n" -"Копирайт (C) 2004-2012 Jeff Epler и Chris Radek.\n" -"\n" -"Это бесплатная программа, и Вы можете копировать ее на определенных " -"условиях. Смотрите файл COPYING, поставляемый вместе с LinuxCNC.\n" -"\n" -"Посетите веб-сайт LinuxCNC: " +msgid "Axis A" +msgstr "Ось " + +#: src/emc/usr_intf/stepconf/stepconf.py:132 +#: src/emc/usr_intf/pncconf/pncconf.py:378 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#, fuzzy +msgid "Spindle" +msgstr "Шпиндель:" -#: share/axis/tcl/axis.tcl:1739 -msgid "About AXIS" -msgstr "О AXIS" +#: src/emc/usr_intf/stepconf/stepconf.py:132 +msgid "Almost Done" +msgstr "" -#: share/axis/tcl/axis.tcl:1768 -msgid "AXIS Quick Reference" -msgstr "Быстрая справка AXIS" +#: src/emc/usr_intf/stepconf/stepconf.py:136 +#: src/emc/usr_intf/pncconf/pncconf.py:135 +msgid "Gecko 201" +msgstr "Gecko 201" -#: share/axis/tcl/axis.tcl:1903 -msgid "AXIS $::version on $::machine" -msgstr "AXIS $::version on $::machine" +#: src/emc/usr_intf/stepconf/stepconf.py:137 +#: src/emc/usr_intf/pncconf/pncconf.py:136 +msgid "Gecko 202" +msgstr "Gecko 202" -#: share/axis/tcl/axis.tcl:1905 -msgid "(no file)" -msgstr "(нет файла)" +#: src/emc/usr_intf/stepconf/stepconf.py:138 +#: src/emc/usr_intf/pncconf/pncconf.py:137 +msgid "Gecko 203v" +msgstr "Gecko 203v" -#: share/axis/tcl/axis.tcl:1976 share/axis/tcl/axis.tcl:1981 -msgid "Position:" -msgstr "Позиция:" +#: src/emc/usr_intf/stepconf/stepconf.py:139 +#: src/emc/usr_intf/pncconf/pncconf.py:138 +msgid "Gecko 210" +msgstr "Gecko 210" -#: share/axis/tcl/axis.tcl:1978 -msgid "Machine" -msgstr "Абсолютная" +#: src/emc/usr_intf/stepconf/stepconf.py:140 +#: src/emc/usr_intf/pncconf/pncconf.py:139 +msgid "Gecko 212" +msgstr "Gecko 212" -#: share/axis/tcl/axis.tcl:1978 src/emc/usr_intf/touchy/touchy.glade:155 -msgid "Relative" -msgstr "Относительная" +#: src/emc/usr_intf/stepconf/stepconf.py:141 +#: src/emc/usr_intf/pncconf/pncconf.py:140 +msgid "Gecko 320" +msgstr "Gecko 320" -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3329 -msgid "Actual" -msgstr "Настоящая" +#: src/emc/usr_intf/stepconf/stepconf.py:142 +#: src/emc/usr_intf/pncconf/pncconf.py:141 +msgid "Gecko 540" +msgstr "Gecko 540" -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3318 -msgid "Commanded" -msgstr "Заданная" +#: src/emc/usr_intf/stepconf/stepconf.py:143 +#: src/emc/usr_intf/pncconf/pncconf.py:142 +msgid "L297" +msgstr "L297" -#: share/axis/tcl/axis.tcl:2032 share/axis/tcl/axis.tcl:2203 -msgid "Joint:" -msgstr "Ось:" +#: src/emc/usr_intf/stepconf/stepconf.py:144 +#: src/emc/usr_intf/pncconf/pncconf.py:143 +msgid "PMDX-150" +msgstr "PMDX-150" -#: share/axis/tcl/axis.tcl:2338 -msgid "Turn spindle counterclockwise [F10]" -msgstr "Вращать шпиндель назад·[F10]" +#: src/emc/usr_intf/stepconf/stepconf.py:145 +#: src/emc/usr_intf/stepconf/pport1.glade:32 +#: src/emc/usr_intf/pncconf/pncconf.py:144 +msgid "Sherline" +msgstr "Sherline" -#: share/axis/tcl/axis.tcl:2339 -msgid "Turn spindle clockwise [F9]" -msgstr "Вращать шпиндель вперед·[F9]" +#: src/emc/usr_intf/stepconf/stepconf.py:146 +#: src/emc/usr_intf/pncconf/pncconf.py:145 +msgid "Xylotex 8S-3" +msgstr "Xylotex 8S-3" -#: share/axis/tcl/axis.tcl:2340 -msgid "Stop spindle [F9/F10]" -msgstr "Остановить шпиндель·[F9/F10]" +#: src/emc/usr_intf/stepconf/stepconf.py:147 +#: src/emc/usr_intf/pncconf/pncconf.py:146 +msgid "Parker-Compumotor oem750" +msgstr "Parker-Compumotor OEM750" -#: share/axis/tcl/axis.tcl:2341 -msgid "Turn spindle Faster [F12]" -msgstr "Вращать шпиндель быстрее·[F12]" +#: src/emc/usr_intf/stepconf/stepconf.py:148 +#: src/emc/usr_intf/pncconf/pncconf.py:147 +msgid "JVL-SMD41 or 42" +msgstr "JVL-SMD41 or 42" -#: share/axis/tcl/axis.tcl:2342 -msgid "Turn spindle Slower [F11]" -msgstr "Вращать шпиндель медленнее·[F11]" +#: src/emc/usr_intf/stepconf/stepconf.py:149 +#: src/emc/usr_intf/pncconf/pncconf.py:148 +msgid "Hobbycnc Pro Chopper" +msgstr "Hobbycnc Pro Chopper" -#: share/axis/tcl/axis.tcl:2343 -msgid "Turn spindle brake on [Shift-B] or off [B]" -msgstr "Включить тормоз шпинделя·[Shift-B]·или выключить·[B]" +#: src/emc/usr_intf/stepconf/stepconf.py:150 +#, fuzzy +msgid "Kelling 4030" +msgstr "Keling 4030" -#: share/axis/tcl/axis.tcl:2344 -msgid "Turn flood on or off [F8]" -msgstr "Включить охлаждение струей·[F8]" +#: src/emc/usr_intf/stepconf/stepconf.py:151 +msgid "Leadshine Series" +msgstr "" -#: share/axis/tcl/axis.tcl:2345 -msgid "Turn mist on or off [F7]" -msgstr "Охлаждение туманом·[F7]" +#: src/emc/usr_intf/stepconf/stepconf.py:190 +msgid "X Step" +msgstr "X·Шаг" -#: share/axis/tcl/axis.tcl:2346 -msgid "Send active axis home [Home]" -msgstr "Поставить активную ось в начало·[Home]" +#: src/emc/usr_intf/stepconf/stepconf.py:190 +msgid "X Direction" +msgstr "X Направление" -#: share/axis/tcl/axis.tcl:2347 -msgid "Set G54 offset for active axis [End]" -msgstr "Установить отступ G54 для активной оси·[End]" +#: src/emc/usr_intf/stepconf/stepconf.py:190 +msgid "Y Step" +msgstr "Y·Шаг" -#: share/axis/tcl/axis.tcl:2348 -msgid "Activate axis [X]" -msgstr "Выбрать ось·[X]" +#: src/emc/usr_intf/stepconf/stepconf.py:190 +msgid "Y Direction" +msgstr "Y·Направление" -#: share/axis/tcl/axis.tcl:2349 -msgid "Activate axis [Y]" -msgstr "Выбрать ось·[Y]" +#: src/emc/usr_intf/stepconf/stepconf.py:191 +msgid "Z Step" +msgstr "Z·Шаг" -#: share/axis/tcl/axis.tcl:2350 -msgid "Activate axis [Z]" -msgstr "Выбрать ось·[Z]" +#: src/emc/usr_intf/stepconf/stepconf.py:191 +msgid "Z Direction" +msgstr "Z·Направление" -#: share/axis/tcl/axis.tcl:2351 -msgid "Activate axis [A]" -msgstr "Выбрать ось·[A]" +#: src/emc/usr_intf/stepconf/stepconf.py:191 +msgid "A Step" +msgstr "A Шаг" -#: share/axis/tcl/axis.tcl:2352 -msgid "Activate axis [4]" -msgstr "Выбрать ось·[4]" +#: src/emc/usr_intf/stepconf/stepconf.py:191 +msgid "A Direction" +msgstr "A Направление" -#: share/axis/tcl/axis.tcl:2353 -msgid "Activate axis [5]" -msgstr "Выбрать ось·[5]" +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 +msgid "Spindle ON" +msgstr "Шпиндель ON" -#: share/axis/tcl/axis.tcl:2354 share/axis/tcl/axis.tcl:2355 -msgid "Jog selected axis" -msgstr "Двигать активную ось" +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:488 +msgid "Spindle PWM" +msgstr "Шпиндель ШИМ" -#: share/axis/tcl/axis.tcl:2357 -msgid "Temporarily allow jogging outside machine limits [L]" -msgstr "Временно разрешить ход за пределами станка [L]" +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 +msgid "Spindle Brake" +msgstr "Шпиндель тормоз" -#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -msgid "Spindle CW" -msgstr "Шпиндель вперед" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 +msgid "Coolant Mist" +msgstr "Туман" -#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -msgid "Spindle CCW" -msgstr "Шпиндель назад" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 +msgid "Coolant Flood" +msgstr "Струя" -#: src/emc/usr_intf/touchy/mdi.py:50 -msgid "Input control" -msgstr "Ручное управление" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "ESTOP Out" +msgstr "ESTOP выход" -#: src/emc/usr_intf/touchy/mdi.py:53 src/emc/usr_intf/touchy/mdi.py:54 -msgid "Straight rapid" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +msgid "Amplifier Enable" +msgstr "Включить усилитель" -#: src/emc/usr_intf/touchy/mdi.py:55 src/emc/usr_intf/touchy/mdi.py:56 -msgid "Straight feed" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:194 +#: src/emc/usr_intf/pncconf/pncconf.py:371 +msgid "Charge Pump" +msgstr "Пульс" -#: src/emc/usr_intf/touchy/mdi.py:57 src/emc/usr_intf/touchy/mdi.py:58 -msgid "Arc CW" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 0" +msgstr "Цифровой выход 0" -#: src/emc/usr_intf/touchy/mdi.py:59 src/emc/usr_intf/touchy/mdi.py:60 -msgid "Arc CCW" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 1" +msgstr "Цифровой выход 1" -#: src/emc/usr_intf/touchy/mdi.py:61 src/emc/usr_intf/touchy/mdi.py:62 -msgid "Dwell" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 2" +msgstr "Цифровой выход 2" -#: src/emc/usr_intf/touchy/mdi.py:63 -msgid "Setup" -msgstr "Настройки" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 3" +msgstr "Цифровой выход 3" -#: src/emc/usr_intf/touchy/mdi.py:64 -msgid "Spindle synchronized feed" -msgstr "подача синхронно со шпинделем:" +#: src/emc/usr_intf/stepconf/stepconf.py:196 +#: src/emc/usr_intf/stepconf/stepconf.py:215 +#: src/emc/usr_intf/stepconf/pport1.glade:18 +#: src/emc/usr_intf/stepconf/pport2.glade:1406 +#: src/emc/usr_intf/stepconf/pport2.glade:1420 +msgid "Unused" +msgstr "Не подключен" -#: src/emc/usr_intf/touchy/mdi.py:65 -msgid "Rigid tap" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 +msgid "ESTOP In" +msgstr "ESTOP вход" -#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/touchy/mdi.py:67 -#: src/emc/usr_intf/touchy/mdi.py:68 src/emc/usr_intf/touchy/mdi.py:69 -msgid "Probe" -msgstr "Щуп" +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 +msgid "Probe In" +msgstr "Щуп вход" -#: src/emc/usr_intf/touchy/mdi.py:70 -msgid "Radius compensation left" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:199 +msgid "Spindle Index" +msgstr "Шпиндель индекс" -#: src/emc/usr_intf/touchy/mdi.py:71 -msgid "Radius compensation right" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:199 +msgid "Spindle Phase A" +msgstr "Шпиндель Фаза А" -#: src/emc/usr_intf/touchy/mdi.py:72 -msgid "Radius compensation left, immediate" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:199 +msgid "Spindle Phase B" +msgstr "Шпиндель фаза B" -#: src/emc/usr_intf/touchy/mdi.py:73 -msgid "Radius compensation right, immediate" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:200 +msgid "Home X" +msgstr "Начало X" -#: src/emc/usr_intf/touchy/mdi.py:74 -msgid "Tool length offset" -msgstr "Отступ длины инструмента" +#: src/emc/usr_intf/stepconf/stepconf.py:200 +msgid "Home Y" +msgstr "Начало Y" -#: src/emc/usr_intf/touchy/mdi.py:75 -msgid "Tool length offset immediate" -msgstr "Отступ длины инструмента мгновенный" +#: src/emc/usr_intf/stepconf/stepconf.py:200 +msgid "Home Z" +msgstr "Начало Z" -#: src/emc/usr_intf/touchy/mdi.py:76 -msgid "Motion in unoffset coordinates" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:200 +msgid "Home A" +msgstr "Начало A" -#: src/emc/usr_intf/touchy/mdi.py:77 -msgid "Continuous mode" -msgstr "Постоянный ход" +#: src/emc/usr_intf/stepconf/stepconf.py:201 +msgid "Minimum Limit + Home X" +msgstr "Меньший предел + начало X" -#: src/emc/usr_intf/touchy/mdi.py:79 -msgid "Drill" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:201 +msgid "Minimum Limit + Home Y" +msgstr "Меньший предел + начало Y" -#: src/emc/usr_intf/touchy/mdi.py:80 -msgid "Drill with dwell" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:202 +msgid "Minimum Limit + Home Z" +msgstr "Меньший предел + начало Z" -#: src/emc/usr_intf/touchy/mdi.py:81 -msgid "Peck drill" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:202 +msgid "Minimum Limit + Home A" +msgstr "Меньший предел + начало A" -#: src/emc/usr_intf/touchy/mdi.py:82 -msgid "Chip-break drill" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:203 +msgid "Maximum Limit + Home X" +msgstr "Больший предел + начало X" -#: src/emc/usr_intf/touchy/mdi.py:83 -msgid "Bore" -msgstr "Расточка" +#: src/emc/usr_intf/stepconf/stepconf.py:203 +msgid "Maximum Limit + Home Y" +msgstr "Больший предел + начало Y" -#: src/emc/usr_intf/touchy/mdi.py:84 -msgid "Bore with dwell" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:204 +msgid "Maximum Limit + Home Z" +msgstr "Больший предел + начало Z" -#: src/emc/usr_intf/touchy/mdi.py:85 -msgid "Offset all coordinate systems" -msgstr "Отступ всех координат" +#: src/emc/usr_intf/stepconf/stepconf.py:204 +msgid "Maximum Limit + Home A" +msgstr "Больший предел + начало A" -#: src/emc/usr_intf/touchy/mdi.py:86 -msgid "CSS Mode" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:205 +msgid "Both Limit + Home X" +msgstr "Оба предела + начало X" -#: src/emc/usr_intf/touchy/emc_interface.py:410 -msgid "CCW" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:205 +msgid "Both Limit + Home Y" +msgstr "Оба предела + начало Y" + +#: src/emc/usr_intf/stepconf/stepconf.py:206 +msgid "Both Limit + Home Z" +msgstr "Оба предела + начало Z" + +#: src/emc/usr_intf/stepconf/stepconf.py:206 +msgid "Both Limit + Home A" +msgstr "Оба предела + начало A" + +#: src/emc/usr_intf/stepconf/stepconf.py:207 +msgid "Minimum Limit X" +msgstr "Меньший предел X" + +#: src/emc/usr_intf/stepconf/stepconf.py:207 +msgid "Minimum Limit Y" +msgstr "Меньший предел Y" -#: src/emc/usr_intf/touchy/emc_interface.py:410 -msgid "Stopped" -msgstr "Остановлен" +#: src/emc/usr_intf/stepconf/stepconf.py:208 +msgid "Minimum Limit Z" +msgstr "Меньший предел Z" -#: src/emc/usr_intf/touchy/emc_interface.py:410 -msgid "CW" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:208 +msgid "Minimum Limit A" +msgstr "Меньший предел A" -#: src/emc/usr_intf/touchy/touchy.glade:7 -msgid "LinuxCNC/Touchy" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:209 +msgid "Maximum Limit X" +msgstr "Больший предел X" -#. # Touchy is Copyright (c) 2009 Chris Radek # # Touchy 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 2 of the License, or # (at your option) any later version. # # Touchy 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. -#: src/emc/usr_intf/touchy/touchy.glade:11 -msgid "window1" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:209 +msgid "Maximum Limit Y" +msgstr "Больший предел Y" -#: src/emc/usr_intf/touchy/touchy.glade:31 -msgid "xa" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:210 +msgid "Maximum Limit Z" +msgstr "Больший предел Z" -#: src/emc/usr_intf/touchy/touchy.glade:44 -msgid "xd" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:210 +msgid "Maximum Limit A" +msgstr "Больший предел A" -#: src/emc/usr_intf/touchy/touchy.glade:57 -msgid "yr" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:211 +msgid "Both Limit X" +msgstr "Оба предела X" -#: src/emc/usr_intf/touchy/touchy.glade:68 -msgid "ya" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:211 +msgid "Both Limit Y" +msgstr "Оба предела Y" -#: src/emc/usr_intf/touchy/touchy.glade:81 -msgid "yd" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:212 +msgid "Both Limit Z" +msgstr "Оба предела Z" -#: src/emc/usr_intf/touchy/touchy.glade:94 -msgid "zr" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:212 +msgid "Both Limit A" +msgstr "Оба предела A" -#: src/emc/usr_intf/touchy/touchy.glade:105 -msgid "za" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:213 +msgid "All limits" +msgstr "Все пределы" -#: src/emc/usr_intf/touchy/touchy.glade:118 -msgid "zd" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:213 +msgid "All home" +msgstr "Все начала" -#: src/emc/usr_intf/touchy/touchy.glade:131 -msgid "DTG" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:213 +#, fuzzy +msgid "All limits + homes" +msgstr "Все пределы" -#: src/emc/usr_intf/touchy/touchy.glade:143 -#: src/emc/usr_intf/pncconf/pncconf.glade:59755 -msgid "Absolute" -msgstr "Абсолютный" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 0" +msgstr "Цифровой вход 0" -#: src/emc/usr_intf/touchy/touchy.glade:165 -msgid "xr" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 1" +msgstr "Цифровой вход 1" -#: src/emc/usr_intf/touchy/touchy.glade:176 -msgid "ar" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 2" +msgstr "Цифровой вход 2" -#: src/emc/usr_intf/touchy/touchy.glade:188 -msgid "br" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 3" +msgstr "Цифровой вход 3" -#: src/emc/usr_intf/touchy/touchy.glade:200 -msgid "cr" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:218 +#, fuzzy +msgid "Forward" +msgstr "Шпиндель вперед" -#: src/emc/usr_intf/touchy/touchy.glade:212 -msgid "ur" +#: src/emc/usr_intf/stepconf/stepconf.py:219 +msgid "Done" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:224 -msgid "vr" +#: src/emc/usr_intf/stepconf/stepconf.py:220 +msgid "" +"OK to replace existing custom ladder program?\n" +"Existing Custom.clp will be renamed custom_backup.clp.\n" +"Any existing file named -custom_backup.clp- will be lost. " msgstr "" +"OK to replace existing custom ladder program?\n" +"Existing Custom.clp will be renamed custom_backup.clp.\n" +"Any existing file named -custom_backup.clp- will be lost. " -#: src/emc/usr_intf/touchy/touchy.glade:236 -msgid "wr" +#: src/emc/usr_intf/stepconf/stepconf.py:221 +#: src/emc/usr_intf/pncconf/pncconf.py:8163 +msgid "" +"You edited a ladder program and have selected a different program to copy to " +"your configuration file.\n" +"The edited program will be lost.\n" +"\n" +"Are you sure? " msgstr "" +"You edited a ladder program and have selected a different program to copy to " +"your configuration file.\n" +"The edited program will be lost.\n" +"\n" +"Are you sure? " -#: src/emc/usr_intf/touchy/touchy.glade:248 -msgid "aa" +#: src/emc/usr_intf/stepconf/stepconf.py:222 +msgid "" +"You need to designate an E-stop input pin in the Parallel Port Setup page " +"for this program." msgstr "" +"Вам нужно определить вход для ABOCT на странице настройки параллельного " +"порта для работы этой программы" -#: src/emc/usr_intf/touchy/touchy.glade:262 -msgid "ba" +#: src/emc/usr_intf/stepconf/stepconf.py:223 +msgid "" +"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" +"Existing custompanel.xml and custom_postgui.hal will be renamed " +"custompanel_backup.xml and postgui_backup.hal.\n" +"Any existing file named custompanel_backup.xml and custom_postgui.hal will " +"be lost. " msgstr "" +"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" +"Existing custompanel.xml and custom_postgui.hal will be renamed " +"custompanel_backup.xml and postgui_backup.hal.\n" +"Any existing file named custompanel_backup.xml and custom_postgui.hal will " +"be lost. " -#: src/emc/usr_intf/touchy/touchy.glade:276 -msgid "ca" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:224 +msgid "Quit Stepconf and discard changes?" +msgstr "Выйти из Stepconf и сбросить все изменения?" -#: src/emc/usr_intf/touchy/touchy.glade:290 -msgid "ua" +#: src/emc/usr_intf/stepconf/stepconf.py:225 +msgid "" +"The configuration has been built and saved.\n" +"Do you want to quit?" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:304 -msgid "va" +#: src/emc/usr_intf/stepconf/stepconf.py:226 +msgid "" +"You are using a simulated-realtime version of Machinekit, so testing / " +"tuning of hardware is unavailable." msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:318 -msgid "wa" +#: src/emc/usr_intf/stepconf/stepconf.py:227 +#, python-format +msgid "" +"You are using a realtime version of Machinekit but didn't load a realtime " +"kernel so testing / tuning of hardware is unavailable.\n" +"This is possibly because you updated the OS and it doesn't automatically " +"load the RTAI kernel anymore.\n" +"You are using the %(actual)s kernel.\n" +"You need to use kernel:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:332 -msgid "ad" -msgstr "ad" +#: src/emc/usr_intf/stepconf/stepconf.py:246 +msgid "my-mill" +msgstr "мой-станок" -#: src/emc/usr_intf/touchy/touchy.glade:346 -msgid "bd" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:585 +#, python-format +msgid "File %r was modified since it was written by stepconf" +msgstr "Файл %r был изменен после записи stepconf" -#: src/emc/usr_intf/touchy/touchy.glade:360 -msgid "cd" +#: src/emc/usr_intf/stepconf/stepconf.py:588 +msgid "" +"Saving this configuration file will discard configuration changes made " +"outside stepconf." msgstr "" +"Сохранение этого файла конфигурации отменит все изменения, сделанные вручную." -#: src/emc/usr_intf/touchy/touchy.glade:374 -msgid "ud" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:603 +#: src/emc/usr_intf/pncconf/pncconf.py:1318 +msgid "Continue? " +msgstr "Продолжить?" -#: src/emc/usr_intf/touchy/touchy.glade:388 -msgid "vd" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:604 +#: src/emc/usr_intf/pncconf/pncconf.py:1319 +msgid "yY" +msgstr "дД" -#: src/emc/usr_intf/touchy/touchy.glade:402 -msgid "wd" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:689 +#: src/emc/usr_intf/pncconf/pncconf.py:3591 +#, python-format +msgid "launch %s" +msgstr "Запустить %s" -#: src/emc/usr_intf/touchy/touchy.glade:448 -msgid "Estop Reset" -msgstr "АВОСТ сброс" +#: src/emc/usr_intf/stepconf/stepconf.py:693 +#, fuzzy +msgid "Desktop Launcher for Machinekit config made by Stepconf" +msgstr "Desktop Launcher for EMC config made by Stepconf" -#: src/emc/usr_intf/touchy/touchy.glade:459 -msgid "Estop" -msgstr "АВОСТ" +#: src/emc/usr_intf/stepconf/stepconf.py:860 +#: src/emc/usr_intf/stepconf/pages.py:145 +msgid "Other" +msgstr "Другое" -#: src/emc/usr_intf/touchy/touchy.glade:475 -msgid "Machine On" -msgstr "Станок вкл" +#: src/emc/usr_intf/stepconf/stepconf.py:1295 +#: src/emc/usr_intf/pncconf/pncconf.py:9302 +#, python-format +msgid "%s Axis Test" +msgstr "%s Axis Test" -#: src/emc/usr_intf/touchy/touchy.glade:490 -msgid "Machine Off" -msgstr "Станок выкл" +#: src/emc/usr_intf/stepconf/stepconf.py:1298 +#: src/emc/usr_intf/stepconf/pages.py:617 +msgid "deg / s" +msgstr "градус/с" -#: src/emc/usr_intf/touchy/touchy.glade:531 -msgid "Power" -msgstr "Питание" +#: src/emc/usr_intf/stepconf/stepconf.py:1299 +#: src/emc/usr_intf/stepconf/pages.py:618 +msgid "deg / s²" +msgstr "градус/с²" -#: src/emc/usr_intf/touchy/touchy.glade:562 -msgid "Unhome All" -msgstr "Забыть начало всех осей" +#: src/emc/usr_intf/stepconf/stepconf.py:1300 +#: src/emc/usr_intf/stepconf/pages.py:619 +msgid "deg" +msgstr "градус" -#: src/emc/usr_intf/touchy/touchy.glade:588 -msgid "Home Selected" -msgstr "Найти начало активной оси" +#: src/emc/usr_intf/stepconf/stepconf.py:1312 +#: src/emc/usr_intf/stepconf/pages.py:623 +#: src/emc/usr_intf/stepconf/axisx.glade:629 +#: src/emc/usr_intf/stepconf/axisy.glade:615 +#: src/emc/usr_intf/stepconf/axisz.glade:615 +#: src/emc/usr_intf/stepconf/axisa.glade:629 +#: src/emc/usr_intf/pncconf/pncconf.glade:64717 +msgid "mm / s" +msgstr "мм/с" -#: src/emc/usr_intf/touchy/touchy.glade:603 -msgid "Unhome Selected" -msgstr "Забыть начало активной оси" +#: src/emc/usr_intf/stepconf/stepconf.py:1313 +#: src/emc/usr_intf/stepconf/pages.py:624 +#: src/emc/usr_intf/stepconf/axisx.glade:645 +#: src/emc/usr_intf/stepconf/axisy.glade:631 +#: src/emc/usr_intf/stepconf/axisz.glade:631 +#: src/emc/usr_intf/stepconf/axisa.glade:645 +#: src/emc/usr_intf/pncconf/pncconf.glade:64732 +msgid "mm / s²" +msgstr "мм/с²" -#: src/emc/usr_intf/touchy/touchy.glade:625 -msgid "Homing" -msgstr "Поиск начала" +#: src/emc/usr_intf/stepconf/stepconf.py:1326 +#: src/emc/usr_intf/stepconf/pages.py:629 +msgid "in / s" +msgstr "дюйм/с" -#: src/emc/usr_intf/touchy/touchy.glade:644 -msgid "Startup" -msgstr "Стартовый" +#: src/emc/usr_intf/stepconf/stepconf.py:1327 +#: src/emc/usr_intf/stepconf/pages.py:630 +msgid "in / s²" +msgstr "дюйм/с²" -#: src/emc/usr_intf/touchy/touchy.glade:727 -msgid "G" -msgstr "G" +#: src/emc/usr_intf/stepconf/pages.py:189 +#, fuzzy +msgid "Machinekit 'stepconf' configuration files" +msgstr "EMC2 'stepconf' configuration files" -#: src/emc/usr_intf/touchy/touchy.glade:929 -msgid "." -msgstr "" +#: src/emc/usr_intf/stepconf/pages.py:190 +#: src/emc/usr_intf/pncconf/pncconf.py:4257 +msgid "Modify Existing Configuration" +msgstr "Изменить существующую конфигурацию" -#: src/emc/usr_intf/touchy/touchy.glade:963 -#: src/emc/usr_intf/pncconf/pncconf.glade:60883 -#: src/emc/usr_intf/pncconf/pncconf.glade:60895 -#: src/emc/usr_intf/pncconf/pncconf.glade:61017 -#: src/emc/usr_intf/pncconf/pncconf.glade:61029 -#: src/emc/usr_intf/pncconf/pncconf.glade:61041 -#: src/emc/usr_intf/pncconf/pncconf.glade:61053 -#: src/emc/usr_intf/pncconf/pncconf.glade:61065 -#: src/emc/usr_intf/pncconf/pncconf.glade:61077 -#: src/emc/usr_intf/pncconf/pncconf.glade:62040 -#: src/emc/usr_intf/pncconf/pncconf.glade:62052 -#: src/emc/usr_intf/pncconf/pncconf.glade:62064 -#: src/emc/usr_intf/pncconf/pncconf.glade:62076 -#: src/emc/usr_intf/pncconf/pncconf.glade:62088 -#: src/emc/usr_intf/pncconf/pncconf.glade:62100 -#: src/emc/usr_intf/pncconf/pncconf.glade:62222 -#: src/emc/usr_intf/pncconf/pncconf.glade:62234 -#: src/emc/usr_intf/pncconf/pncconf.glade:63069 -#: src/emc/usr_intf/pncconf/pncconf.glade:63081 -#: src/emc/usr_intf/pncconf/pncconf.glade:63203 -#: src/emc/usr_intf/pncconf/pncconf.glade:63215 -#: src/emc/usr_intf/pncconf/pncconf.glade:63227 -#: src/emc/usr_intf/pncconf/pncconf.glade:63239 -#: src/emc/usr_intf/pncconf/pncconf.glade:63251 -#: src/emc/usr_intf/pncconf/pncconf.glade:63263 -#: src/emc/usr_intf/pncconf/pncconf.glade:64226 -#: src/emc/usr_intf/pncconf/pncconf.glade:64238 -#: src/emc/usr_intf/pncconf/pncconf.glade:64250 -#: src/emc/usr_intf/pncconf/pncconf.glade:64262 -#: src/emc/usr_intf/pncconf/pncconf.glade:64274 -#: src/emc/usr_intf/pncconf/pncconf.glade:64286 -#: src/emc/usr_intf/pncconf/pncconf.glade:64408 -#: src/emc/usr_intf/pncconf/pncconf.glade:64420 -#: src/emc/usr_intf/pncconf/pncconf.glade:65231 -#: src/emc/usr_intf/pncconf/pncconf.glade:65243 -#: src/emc/usr_intf/pncconf/pncconf.glade:65359 -#: src/emc/usr_intf/pncconf/pncconf.glade:65371 -#: src/emc/usr_intf/pncconf/pncconf.glade:65383 -#: src/emc/usr_intf/pncconf/pncconf.glade:65395 -#: src/emc/usr_intf/pncconf/pncconf.glade:65407 -#: src/emc/usr_intf/pncconf/pncconf.glade:65419 -#: src/emc/usr_intf/pncconf/pncconf.glade:67091 -msgid "0" -msgstr "" +#: src/emc/usr_intf/stepconf/pages.py:616 +msgid "degree / rev" +msgstr "градусы/об." -#: src/emc/usr_intf/touchy/touchy.glade:980 -msgid "3" -msgstr "" +#: src/emc/usr_intf/stepconf/pages.py:620 +msgid "Steps / deg" +msgstr "шаг/градус" -#: src/emc/usr_intf/touchy/touchy.glade:997 -msgid "2" -msgstr "" +#: src/emc/usr_intf/stepconf/pages.py:622 +#: src/emc/usr_intf/stepconf/axisx.glade:613 +#: src/emc/usr_intf/stepconf/axisy.glade:599 +#: src/emc/usr_intf/stepconf/axisz.glade:599 +#: src/emc/usr_intf/stepconf/axisa.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / rev" +msgstr "мм/об" -#: src/emc/usr_intf/touchy/touchy.glade:1014 -msgid "1" -msgstr "" +#: src/emc/usr_intf/stepconf/pages.py:626 +#: src/emc/usr_intf/stepconf/axisx.glade:15 +#: src/emc/usr_intf/stepconf/axisy.glade:15 +#: src/emc/usr_intf/stepconf/axisz.glade:15 +#: src/emc/usr_intf/stepconf/axisa.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Steps / mm" +msgstr "шаг/мм" -#: src/emc/usr_intf/touchy/touchy.glade:1031 -msgid "6" -msgstr "" +#: src/emc/usr_intf/stepconf/pages.py:628 +msgid "rev / in" +msgstr "об/дюйм" -#: src/emc/usr_intf/touchy/touchy.glade:1048 -msgid "5" -msgstr "" +#: src/emc/usr_intf/stepconf/pages.py:632 +msgid "Steps / in" +msgstr "шаг/дюйм" -#: src/emc/usr_intf/touchy/touchy.glade:1065 -msgid "4" -msgstr "" +#: src/emc/usr_intf/stepconf/build_INI.py:45 +#: src/emc/usr_intf/stepconf/build_HAL.py:41 +#, fuzzy, python-format +msgid "# Generated by stepconf 1.1 at %s" +msgstr "# Создан stepconf в %s" -#: src/emc/usr_intf/touchy/touchy.glade:1082 -msgid "9" -msgstr "" +#: src/emc/usr_intf/stepconf/build_INI.py:46 +#: src/emc/usr_intf/stepconf/build_HAL.py:42 +#: src/emc/usr_intf/pncconf/pncconf.py:1328 +#: src/emc/usr_intf/pncconf/pncconf.py:2422 +msgid "# If you make changes to this file, they will be" +msgstr "# Все изменения в этом файле будут перезаписаны" -#: src/emc/usr_intf/touchy/touchy.glade:1097 -msgid "8" -msgstr "" +#: src/emc/usr_intf/stepconf/build_INI.py:47 +#: src/emc/usr_intf/stepconf/build_HAL.py:43 +msgid "# overwritten when you run stepconf again" +msgstr "# при следующем запуске stepconf" -#: src/emc/usr_intf/touchy/touchy.glade:1112 -msgid "7" -msgstr "" +#: src/emc/usr_intf/stepconf/build_INI.py:126 +msgid "# add halui MDI commands here (max 64) " +msgstr "# добавьте halui MDI команды сюда (max 64)" -#: src/emc/usr_intf/touchy/touchy.glade:1297 -msgid "Flood On" -msgstr "Струя вкл" +#: src/emc/usr_intf/stepconf/build_HAL.py:275 +#: src/emc/usr_intf/pncconf/pncconf.py:3131 +msgid "# **** Setup for external estop ladder program -START ****" +msgstr "# ****Установки для программы внешнего АВОСТ -START ****" -#: src/emc/usr_intf/touchy/touchy.glade:1308 -msgid "Flood Off" -msgstr "Струя выкл" +#: src/emc/usr_intf/stepconf/build_HAL.py:282 +#: src/emc/usr_intf/pncconf/pncconf.py:3138 +msgid "# **** Setup for external estop ladder program -END ****" +msgstr "# ****Установки для программы внешнего АВОСТ -END ****" -#: src/emc/usr_intf/touchy/touchy.glade:1324 -msgid "Mist On" -msgstr "Туман вкл" +#: src/emc/usr_intf/stepconf/build_HAL.py:302 +#: src/emc/usr_intf/pncconf/pncconf.py:3165 +msgid "" +"# Load Classicladder with modbus master included (GUI must run for Modbus)" +msgstr "" +"# Load Classicladder with modbus master included (GUI must run for Modbus)" -#: src/emc/usr_intf/touchy/touchy.glade:1339 -msgid "Mist Off" -msgstr "Туман выкл" +#: src/emc/usr_intf/stepconf/build_HAL.py:305 +#: src/emc/usr_intf/pncconf/pncconf.py:3170 +msgid "# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI" +msgstr "# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI" -#: src/emc/usr_intf/touchy/touchy.glade:1362 -msgid "Coolant" -msgstr "Охлаждение" +#: src/emc/usr_intf/stepconf/build_HAL.py:315 +#: src/emc/usr_intf/pncconf/pncconf.py:3252 +msgid "Include your PyVCP panel here.\n" +msgstr "Include your PyVCP panel here.\n" -#: src/emc/usr_intf/touchy/touchy.glade:1448 -msgid "Spindle Off" -msgstr "Выключить шпиндель" +#: src/emc/usr_intf/stepconf/build_HAL.py:324 +#: src/emc/usr_intf/stepconf/build_HAL.py:370 +msgid "# Include your customized HAL commands here" +msgstr "# Include your customized HAL commands here" -#: src/emc/usr_intf/touchy/touchy.glade:1501 -#: src/emc/usr_intf/touchy/touchy.glade:2578 -msgid "Spindle speed:" -msgstr "Обороты шпинделя:" +#: src/emc/usr_intf/stepconf/build_HAL.py:325 +msgid "" +"# The commands in this file are run after the AXIS GUI (including PyVCP " +"panel) starts" +msgstr "" +"# The commands in this file are run after the AXIS GUI (including PyVCP " +"panel) starts" -#: src/emc/usr_intf/touchy/touchy.glade:1513 -#: src/emc/usr_intf/touchy/touchy.glade:2707 -msgid "label26" +#: src/emc/usr_intf/stepconf/build_HAL.py:328 +#: src/emc/usr_intf/pncconf/pncconf.py:3280 +#, fuzzy +msgid "# **** Setup of spindle speed display using pyvcp -START ****" msgstr "" +"# **** Setup of spindle speed and tool number display using pyvcp -START ****" -#: src/emc/usr_intf/touchy/touchy.glade:1539 -msgid "Spindle" -msgstr "Шпиндель" +#: src/emc/usr_intf/stepconf/build_HAL.py:330 +msgid "# **** Use ACTUAL spindle velocity from spindle encoder" +msgstr "# **** Use ACTUAL spindle velocity from spindle encoder" -#: src/emc/usr_intf/touchy/touchy.glade:1597 -msgid "file.ngc" +#: src/emc/usr_intf/stepconf/build_HAL.py:331 +#, fuzzy +msgid "" +"# **** spindle-velocity-feedback-rps bounces around so we filter it with " +"lowpass" msgstr "" +"# **** spindle-velocity is signed so we use absolute compoent to remove sign" -#: src/emc/usr_intf/touchy/touchy.glade:1812 -#: src/emc/usr_intf/touchy/touchy.glade:2017 -#: src/emc/usr_intf/touchy/touchy.glade:2037 -#: src/emc/usr_intf/touchy/touchy.glade:2057 -#: src/emc/usr_intf/touchy/touchy.glade:2077 -#: src/emc/usr_intf/touchy/touchy.glade:2097 -#: src/emc/usr_intf/touchy/touchy.glade:2117 -#: src/emc/usr_intf/touchy/touchy.glade:2137 -#: src/emc/usr_intf/touchy/touchy.glade:2157 -#: src/emc/usr_intf/touchy/touchy.glade:2177 -msgid "M2" +#: src/emc/usr_intf/stepconf/build_HAL.py:332 +#, fuzzy +msgid "" +"# **** spindle-velocity-feedback-rps is signed so we use absolute component " +"to remove sign" msgstr "" +"# **** spindle-velocity is signed so we use absolute compoent to remove sign" -#: src/emc/usr_intf/touchy/touchy.glade:2244 -#: src/emc/usr_intf/touchy/touchy.glade:2374 -msgid "Page" -msgstr "Страница" +#: src/emc/usr_intf/stepconf/build_HAL.py:333 +msgid "# **** ACTUAL velocity is in RPS not RPM so we scale it." +msgstr "# **** ACTUAL velocity is in RPS not RPM so we scale it." -#: src/emc/usr_intf/touchy/touchy.glade:2308 -msgid "Start Point" +#: src/emc/usr_intf/stepconf/build_HAL.py:342 +msgid "# **** set up spindle at speed indicator ****" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2452 -msgid "Loaded File" +#: src/emc/usr_intf/stepconf/build_HAL.py:355 +#, fuzzy +msgid "" +"# **** Use COMMANDED spindle velocity from LinuxCNC because no spindle " +"encoder was specified" msgstr "" +"# **** Use COMMANDED spindle velocity from EMC because no spindle encoder " +"was specified" -#: src/emc/usr_intf/touchy/touchy.glade:2488 -msgid "Loaded file:" -msgstr "" +#: src/emc/usr_intf/stepconf/build_HAL.py:371 +msgid "# This file will not be overwritten when you run stepconf again" +msgstr "# This file will not be overwritten when you run stepconf again" -#: src/emc/usr_intf/touchy/touchy.glade:2499 -msgid "Interpreted line:" -msgstr "Исполненная строка:" +#: src/emc/usr_intf/stepconf/build_HAL.py:412 +msgid "# This file sets up simulated limits/home/spindle encoder hardware." +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2513 -msgid "Distance:" -msgstr "Расстояние:" +#: src/emc/usr_intf/stepconf/build_HAL.py:413 +msgid "# This is a generated file do not edit." +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2526 -#: src/emc/usr_intf/stepconf/stepconf.glade:4148 -#: src/emc/usr_intf/pncconf/pncconf.glade:60476 -#: src/emc/usr_intf/pncconf/pncconf.glade:61571 -#: src/emc/usr_intf/pncconf/pncconf.glade:62664 -#: src/emc/usr_intf/pncconf/pncconf.glade:63757 -#: src/emc/usr_intf/pncconf/pncconf.glade:64856 -msgid "Velocity:" -msgstr "Скорость:" +#: src/emc/usr_intf/stepconf/main_page.glade:35 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Acceleration:" +msgstr "Ускорение:" -#: src/emc/usr_intf/touchy/touchy.glade:2539 -msgid "Delay:" -msgstr "" +#: src/emc/usr_intf/stepconf/main_page.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Jog:" +msgstr "Движение:" -#: src/emc/usr_intf/touchy/touchy.glade:2552 -msgid "On limit switch:" -msgstr "" +#: src/emc/usr_intf/stepconf/main_page.glade:63 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Test Area:" +msgstr "Тестовое пространство:" -#: src/emc/usr_intf/touchy/touchy.glade:2565 -msgid "Spindle direction:" -msgstr "Направление шпинделя:" +#: src/emc/usr_intf/stepconf/main_page.glade:97 +msgid "mm/s^2" +msgstr "мм/с^2" -#: src/emc/usr_intf/touchy/touchy.glade:2591 -msgid "Loaded tool:" -msgstr "Загруженный инструмент:" +#: src/emc/usr_intf/stepconf/main_page.glade:138 +msgid "mm/s" +msgstr "мм/с" -#: src/emc/usr_intf/touchy/touchy.glade:2604 -#: src/emc/usr_intf/touchy/touchy.glade:2955 -msgid "label19" +#: src/emc/usr_intf/stepconf/main_page.glade:400 +msgid "±" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2617 -msgid "label20" -msgstr "" +#: src/emc/usr_intf/stepconf/main_page.glade:423 +#, fuzzy +msgid "Stepconf -Stepper Configuration Wizard" +msgstr "Конфигурация LinuxCNC для фрезера на шаговых моторах" -#: src/emc/usr_intf/touchy/touchy.glade:2632 -#: src/emc/usr_intf/touchy/touchy.glade:2779 -#: src/emc/usr_intf/touchy/touchy.glade:2808 -#: src/emc/usr_intf/touchy/touchy.glade:2912 -#: src/emc/usr_intf/touchy/touchy.glade:2927 -msgid "label21" +#: src/emc/usr_intf/stepconf/main_page.glade:503 +#: src/emc/usr_intf/pncconf/pncconf.glade:2054 +#: src/emc/usr_intf/pncconf/pncconf.glade:2067 +#: src/emc/usr_intf/pncconf/pncconf.glade:2080 +#: src/emc/usr_intf/pncconf/pncconf.glade:2093 +#: src/emc/usr_intf/pncconf/pncconf.glade:2106 +#: src/emc/usr_intf/pncconf/pncconf.glade:2119 +#: src/emc/usr_intf/pncconf/pncconf.glade:2132 +#: src/emc/usr_intf/pncconf/pncconf.glade:2145 +#: src/emc/usr_intf/pncconf/pncconf.glade:2156 +#: src/emc/usr_intf/pncconf/pncconf.glade:2169 +#: src/emc/usr_intf/pncconf/pncconf.glade:2182 +#: src/emc/usr_intf/pncconf/pncconf.glade:2528 +#: src/emc/usr_intf/pncconf/pncconf.glade:2541 +#: src/emc/usr_intf/pncconf/pncconf.glade:2554 +#: src/emc/usr_intf/pncconf/pncconf.glade:8104 +#: src/emc/usr_intf/pncconf/pncconf.glade:8139 +#: src/emc/usr_intf/pncconf/pncconf.glade:63377 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:1342 +#: src/emc/usr_intf/gscreen/gscreen.glade:1360 +#: src/emc/usr_intf/gscreen/gscreen.glade:1378 +msgid "label" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2647 -msgid "label22" +#: src/emc/usr_intf/stepconf/main_page.glade:605 +#, fuzzy +msgid "" +"This program creates configuration files (.ini and .hal) for \"step and " +"direction\" milling machines and lathes connected to the PC parallel port.\n" +"\n" +"Stepconf requires a minimum 800 X 600 display resolution." msgstr "" +"Эта программа создает конфигурационные файлы (.ini и .hal) для фрезерных и " +"токарных станков, управлямых через параллельный порт сигналами шаг и " +"направление." -#: src/emc/usr_intf/touchy/touchy.glade:2662 -msgid "label23" +#: src/emc/usr_intf/stepconf/main_page.glade:628 +#: src/emc/usr_intf/pncconf/pncconf.glade:28799 +#: src/emc/usr_intf/pncconf/pncconf.glade:35720 +#: src/emc/usr_intf/pncconf/pncconf.glade:42643 +#: src/emc/usr_intf/pncconf/pncconf.glade:49566 +#: src/emc/usr_intf/pncconf/pncconf.glade:56489 +msgid "page 1" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2677 -msgid "label24" +#: src/emc/usr_intf/stepconf/base.glade:18 +msgid "XYZ" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2692 -msgid "label25" +#: src/emc/usr_intf/stepconf/base.glade:21 +msgid "XYZA" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2722 -msgid "label27" +#: src/emc/usr_intf/stepconf/base.glade:24 +#, fuzzy +msgid "XZ (Lathe)" msgstr "" +"XYZ\n" +"XYZA\n" +"XZ (Токарный)" -#: src/emc/usr_intf/touchy/touchy.glade:2737 -msgid "Prepped tool:" -msgstr "" +#: src/emc/usr_intf/stepconf/base.glade:79 +msgid "Step _Time:" +msgstr "Время шага:" -#: src/emc/usr_intf/touchy/touchy.glade:2750 -msgid "label28" -msgstr "" +#: src/emc/usr_intf/stepconf/base.glade:113 +#: src/emc/usr_intf/stepconf/base.glade:165 +#: src/emc/usr_intf/stepconf/base.glade:219 +#: src/emc/usr_intf/stepconf/base.glade:271 +#: src/emc/usr_intf/stepconf/base.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:443 +#: src/emc/usr_intf/pncconf/pncconf.glade:8226 +msgid "ns" +msgstr "нс" -#: src/emc/usr_intf/touchy/touchy.glade:2765 -msgid "Running line:" -msgstr "Исполняемая строка:" +#: src/emc/usr_intf/stepconf/base.glade:127 +msgid "Step _Space:" +msgstr "Место шага:" -#: src/emc/usr_intf/touchy/touchy.glade:2794 -msgid "XY Rotation:" -msgstr "XY вращение:" +#: src/emc/usr_intf/stepconf/base.glade:181 +msgid "Direction _Hold:" +msgstr "Удержание направления:" -#: src/emc/usr_intf/touchy/touchy.glade:2823 -msgid "Tool length:" -msgstr "Длина инструмента:" +#: src/emc/usr_intf/stepconf/base.glade:235 +msgid "_Direction Setup:" +msgstr "Установка направления:" -#: src/emc/usr_intf/touchy/touchy.glade:2836 -msgid "label52" +#: src/emc/usr_intf/stepconf/base.glade:338 +msgid "Driver Timing Settings" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2851 +#: src/emc/usr_intf/stepconf/base.glade:351 msgid "" -"G1 G2 G3\n" -"M1 M2 M3\n" -"F1 S1" -msgstr "" +"_Test Base\n" +"Period Jitter " +msgstr "Проверить джиттер базового периода" -#: src/emc/usr_intf/touchy/touchy.glade:2870 -msgid "Active codes:" -msgstr "Активные коды:" +#: src/emc/usr_intf/stepconf/base.glade:372 +msgid "Machine _Name:" +msgstr "Название станка:" + +#: src/emc/usr_intf/stepconf/base.glade:386 +msgid "_Axis configuration:" +msgstr "Конфигурация осей:" -#: src/emc/usr_intf/touchy/touchy.glade:2883 +#: src/emc/usr_intf/stepconf/base.glade:401 #, fuzzy -msgid "G5x Offset:" -msgstr "Отступ:" +msgid "Reset Default machine _units:" +msgstr "Единицы станка:" -#: src/emc/usr_intf/touchy/touchy.glade:2898 -#, fuzzy -msgid "G92 Offset:" -msgstr "Отступ:" +#: src/emc/usr_intf/stepconf/base.glade:416 +#: src/emc/usr_intf/pncconf/pncconf.glade:245 +msgid "Configuration directory:" +msgstr "Каталог конфигураций:" -#: src/emc/usr_intf/touchy/touchy.glade:2942 -#, fuzzy -msgid "Loaded file lines:" -msgstr "Загруженный инструмент:" +#: src/emc/usr_intf/stepconf/base.glade:430 +msgid "D_river type:" +msgstr "Тип привода:" -#: src/emc/usr_intf/touchy/touchy.glade:2971 -msgid "Pockets:" +#: src/emc/usr_intf/stepconf/base.glade:545 +msgid "" +"Driver characteristics: (Multiply by 1000 for times specified in µs or " +"microseconds)" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2984 -#, fuzzy -msgid "" -"1\n" -"2\n" -"3" -msgstr "b)" +#: src/emc/usr_intf/stepconf/base.glade:573 +msgid "Base Period Maximum _Jitter:" +msgstr "Максимальный джиттер базового периода:" -#: src/emc/usr_intf/touchy/touchy.glade:3009 -msgid "Status" -msgstr "Статус" +#: src/emc/usr_intf/stepconf/base.glade:630 +msgid "One Parport" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3038 -msgid "Control Font:" -msgstr "Шрифт управления:" +#: src/emc/usr_intf/stepconf/base.glade:646 +msgid "Two Parports" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3050 -msgid "DRO Font:" -msgstr "Шрифт координат:" +#: src/emc/usr_intf/stepconf/base.glade:663 +#, fuzzy +msgid "Three Parports" +msgstr "Адрес треьего порта:" -#: src/emc/usr_intf/touchy/touchy.glade:3064 -msgid "Error Font:" -msgstr "Шрифт ошибок:" +#: src/emc/usr_intf/stepconf/base.glade:698 +msgid "Min Base Period:" +msgstr "Минимальный базовый период:" -#: src/emc/usr_intf/touchy/touchy.glade:3081 -msgid "ControlFont" -msgstr "Шрифт управления" +#: src/emc/usr_intf/stepconf/base.glade:735 +msgid "Max step rate:" +msgstr "Максимальная частота шагов:" -#: src/emc/usr_intf/touchy/touchy.glade:3100 -msgid "DRO Font" -msgstr "Шрифт координат" +#: src/emc/usr_intf/stepconf/base.glade:870 +msgid "MM" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3121 -msgid "Error Font" -msgstr "Шрифт ошибок" +#: src/emc/usr_intf/stepconf/start.glade:11 +msgid "Create a _new configuration" +msgstr "Создать новую конфигурацию" -#: src/emc/usr_intf/touchy/touchy.glade:3139 -msgid "Listing Font:" -msgstr "Шрифт программы:" +#: src/emc/usr_intf/stepconf/start.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:130 +msgid "Modify a configuration already created with this program" +msgstr "Изменить конфигурацию уже созданую этой программой" -#: src/emc/usr_intf/touchy/touchy.glade:3156 -msgid "Listing Font" -msgstr "Шрифт программы" +#: src/emc/usr_intf/stepconf/start.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:118 +msgid "Do you wish to:" +msgstr "Вы хотите:" -#: src/emc/usr_intf/touchy/touchy.glade:3176 -msgid "Hide pointer" +#: src/emc/usr_intf/stepconf/start.glade:61 +#: src/emc/usr_intf/pncconf/pncconf.glade:100 +msgid "" +"If you have made modifications to this configuration outside this program, " +"they will be lost when you select \"Modify a configuration\"" msgstr "" +"Если вы изменили конфигурацию вне этой программы, эти изменения будут " +"утрачены." -#: src/emc/usr_intf/touchy/touchy.glade:3187 -msgid "Show pointer" -msgstr "Показать стрелку" +#: src/emc/usr_intf/stepconf/start.glade:76 +msgid "Create a desktop _shortcut (symlink) to configuration files." +msgstr "Создать ссылку на конфигурационные файлы." -#: src/emc/usr_intf/touchy/touchy.glade:3214 -msgid "Theme:" +#: src/emc/usr_intf/stepconf/start.glade:93 +msgid "Create a desktop _launcher to start LinuxCNC with this configuration." msgstr "" +"Создать на рабочем столе ссылку для быстрого запуска LinuxCNC с этой " +"конфигурацией" -#: src/emc/usr_intf/touchy/touchy.glade:3228 +#: src/emc/usr_intf/stepconf/start.glade:124 #, fuzzy -msgid "default\n" -msgstr "умолчания AXIS" - -#: src/emc/usr_intf/touchy/touchy.glade:3252 -msgid "Display Options" -msgstr "" +msgid "Create simulated hardware configuration." +msgstr "Создать новую конфигурацию" -#: src/emc/usr_intf/touchy/touchy.glade:3286 -msgid "Inch" -msgstr "дюйм" +#: src/emc/usr_intf/stepconf/pport1.glade:35 +msgid "Xylotex" +msgstr "Xylotex" -#: src/emc/usr_intf/touchy/touchy.glade:3349 -msgid "Position Readout" +#: src/emc/usr_intf/stepconf/pport1.glade:38 +msgid "TB6560 3 axes" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3379 -msgid "Workpiece" +#: src/emc/usr_intf/stepconf/pport1.glade:41 +msgid "TB6560 4 axes" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3390 -msgid "Fixture" -msgstr "" +#: src/emc/usr_intf/stepconf/pport1.glade:59 +#: src/emc/usr_intf/pncconf/pncconf.glade:62915 +msgid "Pin _1:" +msgstr "Ножка _1:" -#: src/emc/usr_intf/touchy/touchy.glade:3410 -#, fuzzy -msgid "Tool Setting" -msgstr "Поиск начала" +#: src/emc/usr_intf/stepconf/pport1.glade:74 +#: src/emc/usr_intf/stepconf/pport2.glade:768 +#: src/emc/usr_intf/pncconf/pncconf.glade:61685 +#: src/emc/usr_intf/pncconf/pncconf.glade:62901 +msgid "Pin _2:" +msgstr "Ножка _2:" -#: src/emc/usr_intf/touchy/touchy.glade:3441 -msgid "Delete / lines" -msgstr "Удалить / строки" +#: src/emc/usr_intf/stepconf/pport1.glade:89 +#: src/emc/usr_intf/stepconf/pport2.glade:814 +#: src/emc/usr_intf/pncconf/pncconf.glade:61668 +#: src/emc/usr_intf/pncconf/pncconf.glade:62887 +msgid "Pin _3:" +msgstr "Ножка _3:" -#: src/emc/usr_intf/touchy/touchy.glade:3456 -msgid "Keep / lines" -msgstr "Сохранить / строки" +#: src/emc/usr_intf/stepconf/pport1.glade:104 +#: src/emc/usr_intf/stepconf/pport2.glade:860 +#: src/emc/usr_intf/pncconf/pncconf.glade:61651 +#: src/emc/usr_intf/pncconf/pncconf.glade:62873 +msgid "Pin _4:" +msgstr "Ножка _4:" -#: src/emc/usr_intf/touchy/touchy.glade:3473 -msgid "Pause on M1" -msgstr "Пауза по M1" +#: src/emc/usr_intf/stepconf/pport1.glade:119 +#: src/emc/usr_intf/stepconf/pport2.glade:906 +#: src/emc/usr_intf/pncconf/pncconf.glade:61634 +#: src/emc/usr_intf/pncconf/pncconf.glade:62859 +msgid "Pin _5:" +msgstr "Ножка _5:" -#: src/emc/usr_intf/touchy/touchy.glade:3484 -msgid "Ignore M1" -msgstr "" +#: src/emc/usr_intf/stepconf/pport1.glade:134 +#: src/emc/usr_intf/stepconf/pport2.glade:952 +#: src/emc/usr_intf/pncconf/pncconf.glade:61617 +#: src/emc/usr_intf/pncconf/pncconf.glade:62845 +msgid "Pin _6:" +msgstr "Ножка _6:" -#: src/emc/usr_intf/touchy/touchy.glade:3504 -msgid "Program Options" -msgstr "Опции программы" +#: src/emc/usr_intf/stepconf/pport1.glade:149 +#: src/emc/usr_intf/stepconf/pport2.glade:998 +#: src/emc/usr_intf/pncconf/pncconf.glade:61600 +#: src/emc/usr_intf/pncconf/pncconf.glade:62831 +msgid "Pin _7:" +msgstr "Ножка _7:" -#: src/emc/usr_intf/touchy/touchy.glade:3531 -msgid "Preferences" -msgstr "" +#: src/emc/usr_intf/stepconf/pport1.glade:164 +#: src/emc/usr_intf/stepconf/pport2.glade:1044 +#: src/emc/usr_intf/pncconf/pncconf.glade:61583 +#: src/emc/usr_intf/pncconf/pncconf.glade:62817 +msgid "Pin _8:" +msgstr "Ножка _8:" -#: src/emc/usr_intf/touchy/touchy.glade:3567 -msgid "FO: 100%" -msgstr "" +#: src/emc/usr_intf/stepconf/pport1.glade:179 +#: src/emc/usr_intf/stepconf/pport2.glade:1090 +#: src/emc/usr_intf/pncconf/pncconf.glade:61566 +#: src/emc/usr_intf/pncconf/pncconf.glade:62803 +msgid "Pin _9:" +msgstr "Ножка _9:" -#: src/emc/usr_intf/touchy/touchy.glade:3582 -msgid "SO: 100%" -msgstr "" +#: src/emc/usr_intf/stepconf/pport1.glade:194 +#: src/emc/usr_intf/stepconf/pport2.glade:1137 +#: src/emc/usr_intf/pncconf/pncconf.glade:62789 +msgid "_Pin 14:" +msgstr "Ножка 14:" -#: src/emc/usr_intf/touchy/touchy.glade:3596 -msgid "MV: 100" -msgstr "" +#: src/emc/usr_intf/stepconf/pport1.glade:209 +#: src/emc/usr_intf/stepconf/pport2.glade:1185 +#: src/emc/usr_intf/pncconf/pncconf.glade:62775 +msgid "P_in 16:" +msgstr "Ножка 16:" -#: src/emc/usr_intf/touchy/touchy.glade:3610 -msgid "Jogging" -msgstr "Движение" +#: src/emc/usr_intf/stepconf/pport1.glade:224 +#: src/emc/usr_intf/stepconf/pport2.glade:1233 +#: src/emc/usr_intf/pncconf/pncconf.glade:62761 +msgid "Pi_n 17:" +msgstr "Ножка 17:" -#: src/emc/usr_intf/touchy/touchy.glade:3637 -msgid ".01" -msgstr "" +#: src/emc/usr_intf/stepconf/pport1.glade:470 +#: src/emc/usr_intf/stepconf/pport2.glade:692 +msgid "Outputs (PC to Mill):" +msgstr "Выходы (от PC к станку)" -#: src/emc/usr_intf/touchy/touchy.glade:3650 -msgid ".001" -msgstr "" +#: src/emc/usr_intf/stepconf/pport1.glade:483 +#: src/emc/usr_intf/stepconf/pport2.glade:427 +#: src/emc/usr_intf/pncconf/pncconf.glade:61701 +msgid "Pin 1_0:" +msgstr "Ножка 1_0:" -#: src/emc/usr_intf/touchy/touchy.glade:3666 -msgid ".0001" -msgstr "" +#: src/emc/usr_intf/stepconf/pport1.glade:500 +#: src/emc/usr_intf/stepconf/pport2.glade:475 +#: src/emc/usr_intf/pncconf/pncconf.glade:61717 +msgid "Pin 1_1:" +msgstr "Ножка 1_1:" -#: src/emc/usr_intf/touchy/touchy.glade:3694 -msgid " X " -msgstr "" +#: src/emc/usr_intf/stepconf/pport1.glade:517 +#: src/emc/usr_intf/stepconf/pport2.glade:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:61733 +msgid "Pin 1_2:" +msgstr "Ножка 1_2:" -#: src/emc/usr_intf/touchy/touchy.glade:3706 -msgid " Y " -msgstr "" +#: src/emc/usr_intf/stepconf/pport1.glade:534 +#: src/emc/usr_intf/stepconf/pport2.glade:571 +#: src/emc/usr_intf/pncconf/pncconf.glade:61749 +msgid "Pin 1_3:" +msgstr "Ножка 1_3:" -#: src/emc/usr_intf/touchy/touchy.glade:3721 -msgid " Z " -msgstr "" +#: src/emc/usr_intf/stepconf/pport1.glade:551 +#: src/emc/usr_intf/stepconf/pport2.glade:619 +#: src/emc/usr_intf/pncconf/pncconf.glade:61765 +msgid "Pin 1_5:" +msgstr "Ножка 1_5:" -#: src/emc/usr_intf/touchy/touchy.glade:3736 -msgid " A " -msgstr "" +#: src/emc/usr_intf/stepconf/pport1.glade:590 +#: src/emc/usr_intf/stepconf/pport2.glade:16 +msgid "Inputs (Mill to PC):" +msgstr "Входы (От станка к PC)" -#: src/emc/usr_intf/touchy/touchy.glade:3752 -msgid " B " -msgstr "" +#: src/emc/usr_intf/stepconf/pport1.glade:618 +#: src/emc/usr_intf/stepconf/pport1.glade:632 +#: src/emc/usr_intf/stepconf/pport2.glade:29 +#: src/emc/usr_intf/stepconf/pport2.glade:702 +#: src/emc/usr_intf/pncconf/pncconf.glade:62335 +#: src/emc/usr_intf/pncconf/pncconf.glade:62348 +msgid "Invert" +msgstr "Инвертировать" -#: src/emc/usr_intf/touchy/touchy.glade:3770 -msgid " C " -msgstr "" +#: src/emc/usr_intf/stepconf/pport1.glade:1018 +msgid "Output pinout presets:" +msgstr "Предустановки выходов:" -#: src/emc/usr_intf/touchy/touchy.glade:3788 -msgid " U " -msgstr "" +#: src/emc/usr_intf/stepconf/pport1.glade:1096 +#, fuzzy +msgid "Parport _Base Address:" +msgstr "Адрес первого порта" -#: src/emc/usr_intf/touchy/touchy.glade:3804 -msgid " V " -msgstr "" +#: src/emc/usr_intf/stepconf/pport1.glade:1132 +#, fuzzy +msgid "Preset" +msgstr "Сброс" -#: src/emc/usr_intf/touchy/touchy.glade:3822 -msgid " W " -msgstr "" +#: src/emc/usr_intf/stepconf/pport2.glade:47 +#, fuzzy +msgid "Pin 2:" +msgstr "Ножка _2:" -#: src/emc/usr_intf/touchy/touchy.glade:3855 -msgid "Handwheel" -msgstr "Штурвал" +#: src/emc/usr_intf/stepconf/pport2.glade:94 +#, fuzzy +msgid "Pin 3:" +msgstr "Ножка _3:" -#: src/emc/usr_intf/stepconf/stepconf.py:53 -msgid "" -"Stepconf encountered an error. The following information may be useful in " -"troubleshooting:\n" -"\n" -msgstr "" -"Stepconf·обнаружил ошибку.··Эта информация может помочь:\n" -"\n" +#: src/emc/usr_intf/stepconf/pport2.glade:141 +#, fuzzy +msgid "Pin 4:" +msgstr "Ножка _4:" -#: src/emc/usr_intf/stepconf/stepconf.py:70 -#: src/emc/usr_intf/pncconf/pncconf.py:133 -msgid "Gecko 201" -msgstr "Gecko 201" +#: src/emc/usr_intf/stepconf/pport2.glade:188 +#, fuzzy +msgid "Pin 5:" +msgstr "Ножка _5:" -#: src/emc/usr_intf/stepconf/stepconf.py:71 -#: src/emc/usr_intf/pncconf/pncconf.py:134 -msgid "Gecko 202" -msgstr "Gecko 202" +#: src/emc/usr_intf/stepconf/pport2.glade:235 +#, fuzzy +msgid "Pin 6:" +msgstr "Ножка _6:" -#: src/emc/usr_intf/stepconf/stepconf.py:72 -#: src/emc/usr_intf/pncconf/pncconf.py:135 -msgid "Gecko 203v" -msgstr "Gecko 203v" +#: src/emc/usr_intf/stepconf/pport2.glade:282 +#, fuzzy +msgid "Pin 7:" +msgstr "Ножка _7:" -#: src/emc/usr_intf/stepconf/stepconf.py:73 -#: src/emc/usr_intf/pncconf/pncconf.py:136 -msgid "Gecko 210" -msgstr "Gecko 210" +#: src/emc/usr_intf/stepconf/pport2.glade:329 +#, fuzzy +msgid "Pin 8:" +msgstr "Ножка _8:" -#: src/emc/usr_intf/stepconf/stepconf.py:74 -#: src/emc/usr_intf/pncconf/pncconf.py:137 -msgid "Gecko 212" -msgstr "Gecko 212" +#: src/emc/usr_intf/stepconf/pport2.glade:376 +#, fuzzy +msgid "Pin 9:" +msgstr "Ножка _9:" + +#: src/emc/usr_intf/stepconf/pport2.glade:721 +#, fuzzy +msgid "Pin _1: " +msgstr "Ножка _1:" + +#: src/emc/usr_intf/stepconf/pport2.glade:1431 +msgid "Out" +msgstr "Выход" -#: src/emc/usr_intf/stepconf/stepconf.py:75 -#: src/emc/usr_intf/pncconf/pncconf.py:138 -msgid "Gecko 320" -msgstr "Gecko 320" +#: src/emc/usr_intf/stepconf/pport2.glade:1434 +#, fuzzy +msgid "In" +msgstr "Инверсный" -#: src/emc/usr_intf/stepconf/stepconf.py:76 -#: src/emc/usr_intf/pncconf/pncconf.py:139 -msgid "Gecko 540" -msgstr "Gecko 540" +#: src/emc/usr_intf/stepconf/spindle.glade:23 +#, fuzzy +msgid "Use spindle-at-speed:" +msgstr "Обороты шпинделя:" -#: src/emc/usr_intf/stepconf/stepconf.py:77 -#: src/emc/usr_intf/pncconf/pncconf.py:140 -msgid "L297" -msgstr "L297" +#: src/emc/usr_intf/stepconf/spindle.glade:64 +msgid "Speed display filter gain:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:78 -#: src/emc/usr_intf/pncconf/pncconf.py:141 -msgid "PMDX-150" -msgstr "PMDX-150" +#: src/emc/usr_intf/stepconf/spindle.glade:99 +msgid "Calibration:" +msgstr "Калибровка:" -#: src/emc/usr_intf/stepconf/stepconf.py:79 -#: src/emc/usr_intf/pncconf/pncconf.py:142 -msgid "Sherline" -msgstr "Sherline" +#: src/emc/usr_intf/stepconf/spindle.glade:113 +msgid "_Speed 1:" +msgstr "Скорость 1" -#: src/emc/usr_intf/stepconf/stepconf.py:80 -#: src/emc/usr_intf/pncconf/pncconf.py:143 -msgid "Xylotex 8S-3" -msgstr "Xylotex 8S-3" +#: src/emc/usr_intf/stepconf/spindle.glade:129 +msgid "_PWM 1:" +msgstr "_PWM 1:" -#: src/emc/usr_intf/stepconf/stepconf.py:81 -#: src/emc/usr_intf/pncconf/pncconf.py:144 -msgid "Parker-Compumotor oem750" -msgstr "Parker-Compumotor OEM750" +#: src/emc/usr_intf/stepconf/spindle.glade:148 +msgid "S_peed 2:" +msgstr "Скорость 2" -#: src/emc/usr_intf/stepconf/stepconf.py:82 -#: src/emc/usr_intf/pncconf/pncconf.py:145 -msgid "JVL-SMD41 or 42" -msgstr "JVL-SMD41 or 42" +#: src/emc/usr_intf/stepconf/spindle.glade:164 +msgid "P_WM 2:" +msgstr "P_WM 2:" -#: src/emc/usr_intf/stepconf/stepconf.py:83 -#: src/emc/usr_intf/pncconf/pncconf.py:146 -msgid "Hobbycnc Pro Chopper" -msgstr "Hobbycnc Pro Chopper" +#: src/emc/usr_intf/stepconf/spindle.glade:183 +msgid "PWM _Rate:" +msgstr "Коэффициенты ШИМ" -#: src/emc/usr_intf/stepconf/stepconf.py:84 -#: src/emc/usr_intf/pncconf/pncconf.py:147 -msgid "Keling 4030" -msgstr "Keling 4030" +#: src/emc/usr_intf/stepconf/spindle.glade:285 +msgid "_Cycles per revolution:" +msgstr "Циклы на оборот:" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -msgid "X Step" -msgstr "X·Шаг" +#: src/emc/usr_intf/stepconf/spindle.glade:347 +msgid "Enter 0 Hz for \"PDM\" mode" +msgstr "Введите 0 Гц для Частотно Импульсного режима" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -msgid "X Direction" -msgstr "X Направление" +#: src/emc/usr_intf/stepconf/spindle.glade:360 +#, fuzzy +msgid "Scale %" +msgstr "Масштаб" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -msgid "Y Step" -msgstr "Y·Шаг" +#: src/emc/usr_intf/stepconf/options.glade:50 +msgid "Include Halui user interface component" +msgstr "Добавить компоненту HALUI интерфейсa" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -msgid "Y Direction" -msgstr "Y·Направление" +#: src/emc/usr_intf/stepconf/options.glade:102 +#: src/emc/usr_intf/pncconf/pncconf.glade:6753 +msgid "Blank program" +msgstr "Пустая программа" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -msgid "Z Step" -msgstr "Z·Шаг" +#: src/emc/usr_intf/stepconf/options.glade:119 +#: src/emc/usr_intf/pncconf/pncconf.glade:6768 +#, fuzzy +msgid "Spindle speed display " +msgstr "Скорость шпинделя/номер инструмента" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -msgid "Z Direction" -msgstr "Z·Направление" +#: src/emc/usr_intf/stepconf/options.glade:136 +#: src/emc/usr_intf/stepconf/options.glade:671 +#: src/emc/usr_intf/pncconf/pncconf.glade:6799 +#: src/emc/usr_intf/pncconf/pncconf.glade:7120 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Existing custom program" +msgstr "Существующая программа" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -msgid "A Step" -msgstr "A Шаг" +#: src/emc/usr_intf/stepconf/options.glade:153 +#: src/emc/usr_intf/stepconf/options.glade:688 +#: src/emc/usr_intf/pncconf/pncconf.glade:6814 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include connections to HAL" +msgstr "Добавить привязку к HAL" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -msgid "A Direction" -msgstr "A Направление" +#: src/emc/usr_intf/stepconf/options.glade:202 +#: src/emc/usr_intf/pncconf/pncconf.glade:6997 +#: src/emc/usr_intf/pncconf/pncconf.glade:7545 +msgid "" +"_Display\n" +"sample\n" +"panel" +msgstr "" +"Показать\n" +"пример\n" +"панели" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -msgid "Spindle ON" -msgstr "Шпиндель ON" +#: src/emc/usr_intf/stepconf/options.glade:243 +#: src/emc/usr_intf/pncconf/pncconf.glade:7056 +msgid "Include custom PyVCP GUI panel" +msgstr "Добавить PyVCP GUI панель" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:557 -msgid "Spindle PWM" -msgstr "Шпиндель ШИМ" +#: src/emc/usr_intf/stepconf/options.glade:414 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (float) out pins:" +msgstr "Количество аналоговых (float) выходов:" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -msgid "Spindle Brake" -msgstr "Шпиндель тормоз" +#: src/emc/usr_intf/stepconf/options.glade:429 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (float) in pins:" +msgstr "Количество аналоговых (float) входов:" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 -msgid "Coolant Mist" -msgstr "Туман" +#: src/emc/usr_intf/stepconf/options.glade:444 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (s32) out pins:" +msgstr "Количество аналоговых (s32) выходов:" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 -msgid "Coolant Flood" -msgstr "Струя" +#: src/emc/usr_intf/stepconf/options.glade:459 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (s32) in pins:" +msgstr "Количество аналоговых (s32) входов:" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:442 -msgid "ESTOP Out" -msgstr "ESTOP выход" +#: src/emc/usr_intf/stepconf/options.glade:475 +msgid "Number of digital out pins:" +msgstr "Количество цифровых выходов:" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -msgid "Amplifier Enable" -msgstr "Включить усилитель" +#: src/emc/usr_intf/stepconf/options.glade:506 +msgid "Number of digital in pins:" +msgstr "Количество цифровых входов:" -#: src/emc/usr_intf/stepconf/stepconf.py:157 -#: src/emc/usr_intf/pncconf/pncconf.py:443 -msgid "Charge Pump" -msgstr "Пульс" +#: src/emc/usr_intf/stepconf/options.glade:518 +msgid "setup number of external pins" +msgstr "Количество цифровых входов:" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 0" -msgstr "Цифровой выход 0" +#: src/emc/usr_intf/stepconf/options.glade:533 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include modbus master support" +msgstr "Добавить поддержку мастера MODBUS" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 1" -msgstr "Цифровой выход 1" +#: src/emc/usr_intf/stepconf/options.glade:625 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Blank ladder program" +msgstr "Пустая программа PLC" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 2" -msgstr "Цифровой выход 2" +#: src/emc/usr_intf/stepconf/options.glade:638 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Estop ladder program" +msgstr "Лестница АвОст" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 3" -msgstr "Цифровой выход 3" +#: src/emc/usr_intf/stepconf/options.glade:654 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Serial modbus program" +msgstr "Программа последовательной modbus" -#: src/emc/usr_intf/stepconf/stepconf.py:159 -#: src/emc/usr_intf/stepconf/stepconf.py:178 -msgid "Unused" -msgstr "Не подключен" +#: src/emc/usr_intf/stepconf/options.glade:740 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"Edit ladder\n" +"program" +msgstr "Редактировать лестницу" -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 -msgid "ESTOP In" -msgstr "ESTOP вход" +#: src/emc/usr_intf/stepconf/options.glade:781 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include _Classicladder PLC" +msgstr "Добавить Classicladder PLC" -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 -msgid "Probe In" -msgstr "Щуп вход" +#: src/emc/usr_intf/stepconf/options.glade:802 +#, fuzzy +msgid "_Onscreen prompt for manual tool change" +msgstr "Экранный запрос смены инструмента" -#: src/emc/usr_intf/stepconf/stepconf.py:162 -msgid "Spindle Index" -msgstr "Шпиндель индекс" +#: src/emc/usr_intf/stepconf/axisx.glade:31 +#: src/emc/usr_intf/stepconf/axisy.glade:31 +#: src/emc/usr_intf/stepconf/axisz.glade:31 +#: src/emc/usr_intf/stepconf/axisa.glade:45 +msgid "_Motor steps per revolution:" +msgstr "Шаги мотора за оборот" -#: src/emc/usr_intf/stepconf/stepconf.py:162 -msgid "Spindle Phase A" -msgstr "Шпиндель Фаза А" +#: src/emc/usr_intf/stepconf/axisx.glade:45 +#: src/emc/usr_intf/stepconf/axisy.glade:44 +#: src/emc/usr_intf/stepconf/axisz.glade:44 +#: src/emc/usr_intf/stepconf/axisa.glade:58 +msgid "_Driver Microstepping:" +msgstr "Микрошаг привода" -#: src/emc/usr_intf/stepconf/stepconf.py:162 -msgid "Spindle Phase B" -msgstr "Шпиндель фаза B" +#: src/emc/usr_intf/stepconf/axisx.glade:61 +#: src/emc/usr_intf/stepconf/axisy.glade:59 +#: src/emc/usr_intf/stepconf/axisz.glade:59 +#: src/emc/usr_intf/stepconf/axisa.glade:73 +msgid "_Pulley teeth (Motor:Leadscrew):" +msgstr "Зубья шестеренок (Мотор:Винт)" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -msgid "Home X" -msgstr "Начало X" +#: src/emc/usr_intf/stepconf/axisx.glade:77 +#: src/emc/usr_intf/stepconf/axisy.glade:74 +#: src/emc/usr_intf/stepconf/axisz.glade:74 +#: src/emc/usr_intf/stepconf/axisa.glade:88 +msgid "_Leadscrew Pitch:" +msgstr "Шаг винта:" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -msgid "Home Y" -msgstr "Начало Y" +#: src/emc/usr_intf/stepconf/axisx.glade:93 +#: src/emc/usr_intf/stepconf/axisy.glade:89 +#: src/emc/usr_intf/stepconf/axisz.glade:89 +#: src/emc/usr_intf/stepconf/axisa.glade:103 +#: src/emc/usr_intf/pncconf/pncconf.glade:64687 +msgid "Maximum _Velocity:" +msgstr "Максимальная скорость:" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -msgid "Home Z" -msgstr "Начало Z" +#: src/emc/usr_intf/stepconf/axisx.glade:109 +#: src/emc/usr_intf/stepconf/axisy.glade:104 +#: src/emc/usr_intf/stepconf/axisz.glade:104 +#: src/emc/usr_intf/stepconf/axisa.glade:118 +#: src/emc/usr_intf/pncconf/pncconf.glade:64702 +msgid "Maximum _Acceleration:" +msgstr "Максимальное ускорение:" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -msgid "Home A" -msgstr "Начало A" +#: src/emc/usr_intf/stepconf/axisx.glade:125 +#: src/emc/usr_intf/stepconf/axisy.glade:119 +#: src/emc/usr_intf/stepconf/axisz.glade:119 +#: src/emc/usr_intf/stepconf/axisa.glade:133 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Time to accelerate to max speed:" +msgstr "Время для разгона до максимальной скорости:" -#: src/emc/usr_intf/stepconf/stepconf.py:164 -msgid "Minimum Limit + Home X" -msgstr "Меньший предел + начало X" +#: src/emc/usr_intf/stepconf/axisx.glade:141 +#: src/emc/usr_intf/stepconf/axisy.glade:134 +#: src/emc/usr_intf/stepconf/axisz.glade:134 +#: src/emc/usr_intf/stepconf/axisa.glade:148 +msgid "Distance to accelerate to max speed:" +msgstr "Расстояние разгона до максимальной скорости:" -#: src/emc/usr_intf/stepconf/stepconf.py:164 -msgid "Minimum Limit + Home Y" -msgstr "Меньший предел + начало Y" +#: src/emc/usr_intf/stepconf/axisx.glade:271 +#: src/emc/usr_intf/stepconf/axisy.glade:263 +#: src/emc/usr_intf/stepconf/axisz.glade:263 +#: src/emc/usr_intf/stepconf/axisa.glade:277 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulse rate at max speed:" +msgstr "Частота шагов на максимальной скорости:" -#: src/emc/usr_intf/stepconf/stepconf.py:165 -msgid "Minimum Limit + Home Z" -msgstr "Меньший предел + начало Z" +#: src/emc/usr_intf/stepconf/axisx.glade:342 +#: src/emc/usr_intf/stepconf/axisy.glade:334 +#: src/emc/usr_intf/stepconf/axisz.glade:334 +#: src/emc/usr_intf/stepconf/axisa.glade:348 +msgid "_Home location:" +msgstr "Положение начала:" -#: src/emc/usr_intf/stepconf/stepconf.py:165 -msgid "Minimum Limit + Home A" -msgstr "Меньший предел + начало A" +#: src/emc/usr_intf/stepconf/axisx.glade:358 +#: src/emc/usr_intf/stepconf/axisy.glade:349 +#: src/emc/usr_intf/stepconf/axisz.glade:349 +#: src/emc/usr_intf/stepconf/axisa.glade:363 +msgid "Home _Switch location:" +msgstr "Положение датчика начала:" -#: src/emc/usr_intf/stepconf/stepconf.py:166 -msgid "Maximum Limit + Home X" -msgstr "Больший предел + начало X" +#: src/emc/usr_intf/stepconf/axisx.glade:374 +#: src/emc/usr_intf/stepconf/axisy.glade:364 +#: src/emc/usr_intf/stepconf/axisz.glade:364 +#: src/emc/usr_intf/stepconf/axisa.glade:378 +msgid "Home Sear_ch velocity:" +msgstr "Скорость поиска начала:" -#: src/emc/usr_intf/stepconf/stepconf.py:166 -msgid "Maximum Limit + Home Y" -msgstr "Больший предел + начало Y" +#: src/emc/usr_intf/stepconf/axisx.glade:390 +#: src/emc/usr_intf/stepconf/axisy.glade:379 +#: src/emc/usr_intf/stepconf/axisz.glade:379 +#: src/emc/usr_intf/stepconf/axisa.glade:393 +msgid "Home La_tch direction:" +msgstr "Направление датчика начала:" -#: src/emc/usr_intf/stepconf/stepconf.py:167 -msgid "Maximum Limit + Home Z" -msgstr "Больший предел + начало Z" +#: src/emc/usr_intf/stepconf/axisx.glade:404 +#: src/emc/usr_intf/stepconf/axisy.glade:393 +#: src/emc/usr_intf/stepconf/axisz.glade:393 +#: src/emc/usr_intf/stepconf/axisa.glade:407 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "_:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:167 -msgid "Maximum Limit + Home A" -msgstr "Больший предел + начало A" +#: src/emc/usr_intf/stepconf/axisx.glade:498 +#: src/emc/usr_intf/stepconf/axisy.glade:486 +#: src/emc/usr_intf/stepconf/axisz.glade:486 +#: src/emc/usr_intf/stepconf/axisa.glade:500 +msgid "Tab_le travel:" +msgstr "Перемещение стола:" -#: src/emc/usr_intf/stepconf/stepconf.py:168 -msgid "Both Limit + Home X" -msgstr "Оба предела + начало X" +#: src/emc/usr_intf/stepconf/axisx.glade:531 +#: src/emc/usr_intf/stepconf/axisy.glade:518 +#: src/emc/usr_intf/stepconf/axisz.glade:518 +#: src/emc/usr_intf/stepconf/axisa.glade:532 +msgid "t_o" +msgstr "до" -#: src/emc/usr_intf/stepconf/stepconf.py:168 -msgid "Both Limit + Home Y" -msgstr "Оба предела + начало Y" +#: src/emc/usr_intf/stepconf/axisx.glade:677 +#: src/emc/usr_intf/stepconf/axisy.glade:663 +#: src/emc/usr_intf/stepconf/axisz.glade:663 +#: src/emc/usr_intf/stepconf/axisa.glade:677 +msgid "s" +msgstr "с" -#: src/emc/usr_intf/stepconf/stepconf.py:169 -msgid "Both Limit + Home Z" -msgstr "Оба предела + начало Z" +#: src/emc/usr_intf/stepconf/axisx.glade:738 +#: src/emc/usr_intf/stepconf/axisy.glade:724 +#: src/emc/usr_intf/stepconf/axisz.glade:724 +#: src/emc/usr_intf/stepconf/axisa.glade:738 +msgid "T_est this axis" +msgstr "Проверить ось" -#: src/emc/usr_intf/stepconf/stepconf.py:169 -msgid "Both Limit + Home A" -msgstr "Оба предела + начало A" +#: src/emc/usr_intf/stepconf/axisx.glade:765 +#: src/emc/usr_intf/stepconf/axisy.glade:751 +#: src/emc/usr_intf/stepconf/axisz.glade:751 +#: src/emc/usr_intf/stepconf/axisa.glade:765 +msgid "Axis SCALE:" +msgstr "Масштаб оси:" -#: src/emc/usr_intf/stepconf/stepconf.py:170 -msgid "Minimum Limit X" -msgstr "Меньший предел X" +#: src/emc/usr_intf/stepconf/axisx.glade:833 +#: src/emc/usr_intf/stepconf/axisy.glade:819 +#: src/emc/usr_intf/stepconf/axisz.glade:819 +#: src/emc/usr_intf/stepconf/axisa.glade:12 +msgid "Same" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:170 -msgid "Minimum Limit Y" -msgstr "Меньший предел Y" +#: src/emc/usr_intf/stepconf/axisx.glade:836 +#: src/emc/usr_intf/stepconf/axisy.glade:822 +#: src/emc/usr_intf/stepconf/axisz.glade:822 +#: src/emc/usr_intf/stepconf/axisa.glade:15 +#, fuzzy +msgid "Opposite" +msgstr "" +"То же\n" +"Обратное" -#: src/emc/usr_intf/stepconf/stepconf.py:171 -msgid "Minimum Limit Z" -msgstr "Меньший предел Z" +#: src/emc/usr_intf/stepconf/finished.glade:6 +#, fuzzy +msgid "" +"All the necessary information has now been gathered. \n" +"Click \"Done\" to write your configuration files to disk.\n" +"\n" +"If you experience lockups while running LinuxCNC:\n" +"-you will need to decrease the maximum velocity which will have the effect " +"of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC:\n" +"-first verify that you entered the proper timings for your stepper " +"drivers. \n" +"-then run a more thorough latency test as described on the linuxcnc.org " +"wiki.\n" +" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" +"\n" +"If you experience the \"Unexpected Realtime Delay\" message:\n" +"-run a more thorough latency test as described on the linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" +msgstr "" +"Вся необходимая информация собрана, Нажмите применить для сохранения " +"конфигурации на диск,\n" +"Если EMC зависает, нужно уменьшить максимальную скорость, что приведет к " +"повышению BASE_PERIOD.\n" +"\n" +"Если вы замечаете проблемы в работе emc, сначала проверьте правильность " +"времен для ШД. Если это не помогает, то проведите более тщательный тест " +"задержек по описанию на linuxcnc.org wiki:\n" +" http;//wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting\n" +"\n" +"Если вы получили сообщение \"Unexpected Realtime Delay\", проведите более " +"тщательный тест задержек по описанию на linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting" -#: src/emc/usr_intf/stepconf/stepconf.py:171 -msgid "Minimum Limit A" -msgstr "Меньший предел A" +#: src/emc/usr_intf/pncconf/pncconf.py:81 +msgid "" +"PNCconf encountered an error. The following information may be useful in " +"troubleshooting:\n" +"\n" +msgstr "" +"PNCconf·обнаружил ошибку.··Эта информация может помочь:\n" +"\n" -#: src/emc/usr_intf/stepconf/stepconf.py:172 -msgid "Maximum Limit X" -msgstr "Больший предел X" +#: src/emc/usr_intf/pncconf/pncconf.py:149 +msgid "Keling 4030" +msgstr "Keling 4030" -#: src/emc/usr_intf/stepconf/stepconf.py:172 -msgid "Maximum Limit Y" -msgstr "Больший предел Y" +#: src/emc/usr_intf/pncconf/pncconf.py:151 +msgid "Not Used" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:173 -msgid "Maximum Limit Z" -msgstr "Больший предел Z" +#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:176 +msgid "Dummy" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:173 -msgid "Maximum Limit A" -msgstr "Больший предел A" +#: src/emc/usr_intf/pncconf/pncconf.py:152 +msgid "8i20 Servo Drive" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:174 -msgid "Both Limit X" -msgstr "Оба предела X" +#: src/emc/usr_intf/pncconf/pncconf.py:153 +#, fuzzy +msgid "POT Output" +msgstr "GPIO выход" -#: src/emc/usr_intf/stepconf/stepconf.py:174 -msgid "Both Limit Y" -msgstr "Оба предела Y" +#: src/emc/usr_intf/pncconf/pncconf.py:153 +#, fuzzy +msgid "POT Enable" +msgstr "Разрешение" -#: src/emc/usr_intf/stepconf/stepconf.py:175 -msgid "Both Limit Z" -msgstr "Оба предела Z" +#: src/emc/usr_intf/pncconf/pncconf.py:153 +#, fuzzy +msgid "POT Direction" +msgstr "X Направление" -#: src/emc/usr_intf/stepconf/stepconf.py:175 -msgid "Both Limit A" -msgstr "Оба предела A" +#: src/emc/usr_intf/pncconf/pncconf.py:154 +msgid "GPIO Input" +msgstr "GPIO вход" -#: src/emc/usr_intf/stepconf/stepconf.py:176 -msgid "All limits" -msgstr "Все пределы" +#: src/emc/usr_intf/pncconf/pncconf.py:154 +msgid "GPIO Output" +msgstr "GPIO выход" -#: src/emc/usr_intf/stepconf/stepconf.py:176 -msgid "All home" -msgstr "Все начала" +#: src/emc/usr_intf/pncconf/pncconf.py:154 +msgid "GPIO O Drain" +msgstr "GPIO открытый исток" -#: src/emc/usr_intf/stepconf/stepconf.py:176 +#: src/emc/usr_intf/pncconf/pncconf.py:155 #, fuzzy -msgid "All limits + homes" -msgstr "Все пределы" - -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 0" -msgstr "Цифровой вход 0" +msgid "Quad Encoder-A" +msgstr "Неиспользованный енкодер" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 1" -msgstr "Цифровой вход 1" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +#, fuzzy +msgid "Quad Encoder-B" +msgstr "Неиспользованный енкодер" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 2" -msgstr "Цифровой вход 2" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +#, fuzzy +msgid "Quad Encoder-I" +msgstr "Неиспользованный енкодер" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 3" -msgstr "Цифровой вход 3" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +#, fuzzy +msgid "Quad Encoder-M" +msgstr "Неиспользованный енкодер" -#: src/emc/usr_intf/stepconf/stepconf.py:203 -msgid "my-mill" -msgstr "мой-станок" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +#, fuzzy +msgid "Muxed Encoder 0" +msgstr "Неиспользованный енкодер" -#: src/emc/usr_intf/stepconf/stepconf.py:215 -#: src/emc/usr_intf/stepconf/stepconf.py:217 -#: src/emc/usr_intf/pncconf/pncconf.py:983 -#: src/emc/usr_intf/pncconf/pncconf.py:985 -msgid "Enter Address" -msgstr "Введите адрес" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +#, fuzzy +msgid "Muxed Encoder 1" +msgstr "Неиспользованный енкодер" -#: src/emc/usr_intf/stepconf/stepconf.py:375 -#, python-format -msgid "File %r was modified since it was written by stepconf" -msgstr "Файл %r был изменен после записи stepconf" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "muxed enc" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:378 -msgid "" -"Saving this configuration file will discard configuration changes made " -"outside stepconf." +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "mux enc mask" msgstr "" -"Сохранение этого файла конфигурации отменит все изменения, сделанные вручную." -#: src/emc/usr_intf/stepconf/stepconf.py:393 -#: src/emc/usr_intf/pncconf/pncconf.py:1356 -msgid "Continue? " -msgstr "Продолжить?" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +#, fuzzy +msgid "mux select" +msgstr "Найти начало активной оси" -#: src/emc/usr_intf/stepconf/stepconf.py:394 -#: src/emc/usr_intf/pncconf/pncconf.py:1357 -msgid "yY" -msgstr "дД" +#: src/emc/usr_intf/pncconf/pncconf.py:157 +#, fuzzy +msgid "Resolver 0 Encoder" +msgstr "Сбросить энкодер" -#: src/emc/usr_intf/stepconf/stepconf.py:446 -#: src/emc/usr_intf/stepconf/stepconf.py:786 -#, python-format -msgid "# Generated by stepconf at %s" -msgstr "# Создан stepconf в %s" +#: src/emc/usr_intf/pncconf/pncconf.py:157 +#, fuzzy +msgid "Resolver 1 Encoder" +msgstr "Сбросить энкодер" -#: src/emc/usr_intf/stepconf/stepconf.py:447 -#: src/emc/usr_intf/stepconf/stepconf.py:787 -#: src/emc/usr_intf/pncconf/pncconf.py:1366 -#: src/emc/usr_intf/pncconf/pncconf.py:2369 -msgid "# If you make changes to this file, they will be" -msgstr "# Все изменения в этом файле будут перезаписаны" +#: src/emc/usr_intf/pncconf/pncconf.py:157 +#, fuzzy +msgid "Resolver 2 Encoder" +msgstr "Сбросить энкодер" -#: src/emc/usr_intf/stepconf/stepconf.py:448 -#: src/emc/usr_intf/stepconf/stepconf.py:788 -msgid "# overwritten when you run stepconf again" -msgstr "# при следующем запуске stepconf" +#: src/emc/usr_intf/pncconf/pncconf.py:158 +#, fuzzy +msgid "Resolver 3 Encoder" +msgstr "Сбросить энкодер" -#: src/emc/usr_intf/stepconf/stepconf.py:516 -msgid "# add halui MDI commands here (max 64) " -msgstr "# добавьте halui MDI команды сюда (max 64)" +#: src/emc/usr_intf/pncconf/pncconf.py:158 +#, fuzzy +msgid "Resolver 4 Encoder" +msgstr "Сбросить энкодер" -#: src/emc/usr_intf/stepconf/stepconf.py:991 -#: src/emc/usr_intf/pncconf/pncconf.py:2991 -msgid "# **** Setup for external estop ladder program -START ****" -msgstr "# ****Установки для программы внешнего АВОСТ -START ****" +#: src/emc/usr_intf/pncconf/pncconf.py:158 +#, fuzzy +msgid "Resolver 5 Encoder" +msgstr "Сбросить энкодер" -#: src/emc/usr_intf/stepconf/stepconf.py:998 -#: src/emc/usr_intf/pncconf/pncconf.py:2998 -msgid "# **** Setup for external estop ladder program -END ****" -msgstr "# ****Установки для программы внешнего АВОСТ -END ****" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +#, fuzzy +msgid "Step Gen-A" +msgstr "X·Шаг" -#: src/emc/usr_intf/stepconf/stepconf.py:1018 -#: src/emc/usr_intf/pncconf/pncconf.py:3025 -msgid "" -"# Load Classicladder with modbus master included (GUI must run for Modbus)" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Dir Gen-B" msgstr "" -"# Load Classicladder with modbus master included (GUI must run for Modbus)" - -#: src/emc/usr_intf/stepconf/stepconf.py:1021 -#: src/emc/usr_intf/pncconf/pncconf.py:3030 -msgid "# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI" -msgstr "# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI" - -#: src/emc/usr_intf/stepconf/stepconf.py:1031 -#: src/emc/usr_intf/pncconf/pncconf.py:3112 -msgid "Include your PyVCP panel here.\n" -msgstr "Include your PyVCP panel here.\n" - -#: src/emc/usr_intf/stepconf/stepconf.py:1040 -#: src/emc/usr_intf/stepconf/stepconf.py:1087 -msgid "# Include your customized HAL commands here" -msgstr "# Include your customized HAL commands here" -#: src/emc/usr_intf/stepconf/stepconf.py:1041 -msgid "" -"# The commands in this file are run after the AXIS GUI (including PyVCP " -"panel) starts" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Step/Dir Gen-C" msgstr "" -"# The commands in this file are run after the AXIS GUI (including PyVCP " -"panel) starts" -#: src/emc/usr_intf/stepconf/stepconf.py:1045 -#: src/emc/usr_intf/pncconf/pncconf.py:3140 -#, fuzzy -msgid "# **** Setup of spindle speed display using pyvcp -START ****" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Step/Dir Gen-D" msgstr "" -"# **** Setup of spindle speed and tool number display using pyvcp -START ****" -#: src/emc/usr_intf/stepconf/stepconf.py:1047 -msgid "# **** Use ACTUAL spindle velocity from spindle encoder" -msgstr "# **** Use ACTUAL spindle velocity from spindle encoder" - -#: src/emc/usr_intf/stepconf/stepconf.py:1048 -#, fuzzy -msgid "# **** spindle-velocity bounces around so we filter it with lowpass" +#: src/emc/usr_intf/pncconf/pncconf.py:160 +msgid "Step/Dir Gen-E" msgstr "" -"# **** spindle-velocity is signed so we use absolute compoent to remove sign" -#: src/emc/usr_intf/stepconf/stepconf.py:1049 -#, fuzzy -msgid "" -"# **** spindle-velocity is signed so we use absolute component to remove sign" +#: src/emc/usr_intf/pncconf/pncconf.py:160 +msgid "Step/dir Gen-F" msgstr "" -"# **** spindle-velocity is signed so we use absolute compoent to remove sign" -#: src/emc/usr_intf/stepconf/stepconf.py:1050 -msgid "# **** ACTUAL velocity is in RPS not RPM so we scale it." -msgstr "# **** ACTUAL velocity is in RPS not RPM so we scale it." - -#: src/emc/usr_intf/stepconf/stepconf.py:1059 -msgid "# **** set up spindle at speed indicator ****" +#: src/emc/usr_intf/pncconf/pncconf.py:161 +msgid "Pulse Width Gen-P" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1072 -#, fuzzy -msgid "" -"# **** Use COMMANDED spindle velocity from LinuxCNC because no spindle " -"encoder was specified" +#: src/emc/usr_intf/pncconf/pncconf.py:161 +msgid "Pulse Width Gen-D" msgstr "" -"# **** Use COMMANDED spindle velocity from EMC because no spindle encoder " -"was specified" -#: src/emc/usr_intf/stepconf/stepconf.py:1073 -msgid "" -"# **** COMANDED velocity is signed so we use absolute component (abs.0) to " -"remove sign" +#: src/emc/usr_intf/pncconf/pncconf.py:161 +msgid "Pulse Width Gen-E" msgstr "" -"# **** COMANDED velocity is signed so we use absolute component (abs.0) to " -"remove sign" - -#: src/emc/usr_intf/stepconf/stepconf.py:1088 -msgid "# This file will not be overwritten when you run stepconf again" -msgstr "# This file will not be overwritten when you run stepconf again" -#: src/emc/usr_intf/stepconf/stepconf.py:1095 -#, python-format -msgid "Generated by stepconf at %s" -msgstr "Generated by stepconf at %s" - -#: src/emc/usr_intf/stepconf/stepconf.py:1166 -#: src/emc/usr_intf/pncconf/pncconf.py:3451 -#, python-format -msgid "launch %s" -msgstr "Запустить %s" - -#: src/emc/usr_intf/stepconf/stepconf.py:1170 -#, fuzzy -msgid "Desktop Launcher for LinuxCNC config made by Stepconf" -msgstr "Desktop Launcher for EMC config made by Stepconf" +#: src/emc/usr_intf/pncconf/pncconf.py:162 +msgid "Pulse Density Gen-P" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1196 -#: src/emc/usr_intf/pncconf/pncconf.py:3700 -#, python-format -msgid "%s Axis Configuration" -msgstr "%s Axis Configuration" +#: src/emc/usr_intf/pncconf/pncconf.py:162 +msgid "Pulse Density Gen-D" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1238 -#: src/emc/usr_intf/stepconf/stepconf.py:1337 -msgid "Other" -msgstr "Другое" +#: src/emc/usr_intf/pncconf/pncconf.py:162 +msgid "Pulse Density Gen-E" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1249 -msgid "Quit Stepconf and discard changes?" -msgstr "Выйти из Stepconf и сбросить все изменения?" +#: src/emc/usr_intf/pncconf/pncconf.py:163 +msgid "Up/Down Mode -Up" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1280 -msgid "" -"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " -"of hardware is unavailable." +#: src/emc/usr_intf/pncconf/pncconf.py:163 +msgid "Up/Down Mode-Down" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1283 -msgid "" -"You are using a realtime version of LinuxCNC but didn't load a realtime " -"kernel so testing / tuning of hardware is unavailable.\n" -"This is possibly because you updated the OS and it doesn't automatically " -"load the RTAI kernel anymore.\n" +#: src/emc/usr_intf/pncconf/pncconf.py:163 +msgid "Up/Down Mode-Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1298 -#, fuzzy -msgid "LinuxCNC 'stepconf' configuration files" -msgstr "EMC2 'stepconf' configuration files" +#: src/emc/usr_intf/pncconf/pncconf.py:164 +msgid "Motor Phase A" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1299 -#: src/emc/usr_intf/pncconf/pncconf.py:4094 -msgid "Modify Existing Configuration" -msgstr "Изменить существующую конфигурацию" +#: src/emc/usr_intf/pncconf/pncconf.py:164 +msgid "Motor Phase B" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1439 -msgid "" -"You need to designate an E-stop input pin in the Parallel Port Setup page " -"for this program." +#: src/emc/usr_intf/pncconf/pncconf.py:164 +msgid "Motor Phase C" msgstr "" -"Вам нужно определить вход для ABOCT на странице настройки параллельного " -"порта для работы этой программы" -#: src/emc/usr_intf/stepconf/stepconf.py:1452 -msgid "" -"OK to replace existing custom ladder program?\n" -"Existing Custom.clp will be renamed custom_backup.clp.\n" -"Any existing file named -custom_backup.clp- will be lost. " +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Phase A Not" msgstr "" -"OK to replace existing custom ladder program?\n" -"Existing Custom.clp will be renamed custom_backup.clp.\n" -"Any existing file named -custom_backup.clp- will be lost. " -#: src/emc/usr_intf/stepconf/stepconf.py:1457 -#: src/emc/usr_intf/pncconf/pncconf.py:7815 -msgid "" -"You edited a ladder program and have selected a different program to copy to " -"your configuration file.\n" -"The edited program will be lost.\n" -"\n" -"Are you sure? " +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Phase B Not" msgstr "" -"You edited a ladder program and have selected a different program to copy to " -"your configuration file.\n" -"The edited program will be lost.\n" -"\n" -"Are you sure? " -#: src/emc/usr_intf/stepconf/stepconf.py:1471 -msgid "" -"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" -"Existing custompanel.xml and custom_postgui.hal will be renamed " -"custompanel_backup.xml and postgui_backup.hal.\n" -"Any existing file named custompanel_backup.xml and custom_postgui.hal will " -"be lost. " +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Phase C Not" msgstr "" -"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" -"Existing custompanel.xml and custom_postgui.hal will be renamed " -"custompanel_backup.xml and postgui_backup.hal.\n" -"Any existing file named custompanel_backup.xml and custom_postgui.hal will " -"be lost. " -#: src/emc/usr_intf/stepconf/stepconf.py:1676 -msgid "degree / rev" -msgstr "градусы/об." +#: src/emc/usr_intf/pncconf/pncconf.py:165 +#, fuzzy +msgid "Motor Enable" +msgstr "X Разрешение" -#: src/emc/usr_intf/stepconf/stepconf.py:1677 -#: src/emc/usr_intf/stepconf/stepconf.py:2205 -msgid "deg / s" -msgstr "градус/с" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Fault" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1678 -#: src/emc/usr_intf/stepconf/stepconf.py:2206 -msgid "deg / s²" -msgstr "градус/с²" +#: src/emc/usr_intf/pncconf/pncconf.py:168 +msgid "SMARTSERIAL-P0-TX" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1679 -#: src/emc/usr_intf/stepconf/stepconf.py:2207 -msgid "deg" -msgstr "градус" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P0-RX" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1680 -msgid "Steps / deg" -msgstr "шаг/градус" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P0-EN" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1682 -#: src/emc/usr_intf/stepconf/stepconf.glade:3589 -#: src/emc/usr_intf/pncconf/pncconf.glade:66138 -#: src/emc/usr_intf/pncconf/pncconf.glade:66424 -msgid "mm / rev" -msgstr "мм/об" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-TX" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1683 -#: src/emc/usr_intf/stepconf/stepconf.py:2219 -#: src/emc/usr_intf/stepconf/stepconf.glade:3604 -#: src/emc/usr_intf/pncconf/pncconf.glade:57828 -msgid "mm / s" -msgstr "мм/с" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-RX" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1684 -#: src/emc/usr_intf/stepconf/stepconf.py:2220 -#: src/emc/usr_intf/stepconf/stepconf.glade:3619 -#: src/emc/usr_intf/pncconf/pncconf.glade:57813 -msgid "mm / s²" -msgstr "мм/с²" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-EN" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1686 -#: src/emc/usr_intf/stepconf/stepconf.glade:3075 -#: src/emc/usr_intf/pncconf/pncconf.glade:66888 -msgid "Steps / mm" -msgstr "шаг/мм" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-TX" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1688 -msgid "rev / in" -msgstr "об/дюйм" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-RX" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1689 -#: src/emc/usr_intf/stepconf/stepconf.py:2233 -msgid "in / s" -msgstr "дюйм/с" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-EN" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1690 -#: src/emc/usr_intf/stepconf/stepconf.py:2234 -msgid "in / s²" -msgstr "дюйм/с²" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-TX" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1692 -msgid "Steps / in" -msgstr "шаг/дюйм" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-RX" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:2202 -#: src/emc/usr_intf/pncconf/pncconf.py:8893 -#, python-format -msgid "%s Axis Test" -msgstr "%s Axis Test" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-EN" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:8 -#: src/emc/usr_intf/stepconf/stepconf.glade:21 -msgid "LinuxCNC Stepper Mill Configuration" -msgstr "Конфигурация LinuxCNC для фрезера на шаговых моторах" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-TX" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:22 -#, fuzzy -msgid "" -"This program creates configuration files (.ini and .hal) for \"step and " -"direction\" milling machines and lathes connected to the PC parallel port.\n" -"\n" -"Stepconf requires a minimum 800 X 600 display resolution.\n" -"You may need to collapse the 'Driver Timing Settings' and \n" -"Parallel Port Settings' expanders." +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-RX" msgstr "" -"Эта программа создает конфигурационные файлы (.ini и .hal) для фрезерных и " -"токарных станков, управлямых через параллельный порт сигналами шаг и " -"направление." -#: src/emc/usr_intf/stepconf/stepconf.glade:51 -msgid "Create a _new configuration" -msgstr "Создать новую конфигурацию" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-EN" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:69 -#: src/emc/usr_intf/pncconf/pncconf.glade:70 -msgid "Modify a configuration already created with this program" -msgstr "Изменить конфигурацию уже созданую этой программой" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-TX" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:87 -#: src/emc/usr_intf/pncconf/pncconf.glade:88 -msgid "Do you wish to:" -msgstr "Вы хотите:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-RX" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:99 -#: src/emc/usr_intf/pncconf/pncconf.glade:100 -msgid "" -"If you have made modifications to this configuration outside this program, " -"they will be lost when you select \"Modify a configuration\"" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-EN" msgstr "" -"Если вы изменили конфигурацию вне этой программы, эти изменения будут " -"утрачены." -#: src/emc/usr_intf/stepconf/stepconf.glade:116 -msgid "Create a desktop _shortcut (symlink) to configuration files." -msgstr "Создать ссылку на конфигурационные файлы." +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-TX" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:133 -msgid "Create a desktop _launcher to start LinuxCNC with this configuration." +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-RX" msgstr "" -"Создать на рабочем столе ссылку для быстрого запуска LinuxCNC с этой " -"конфигурацией" -#: src/emc/usr_intf/stepconf/stepconf.glade:169 -#: src/emc/usr_intf/pncconf/pncconf.glade:175 -msgid "Basic machine information" -msgstr "Базовая конфигурация" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-EN" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:327 -msgid "Step _Time:" -msgstr "Время шага:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-TX" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:356 -#: src/emc/usr_intf/stepconf/stepconf.glade:402 -#: src/emc/usr_intf/stepconf/stepconf.glade:449 -#: src/emc/usr_intf/stepconf/stepconf.glade:494 -#: src/emc/usr_intf/stepconf/stepconf.glade:909 -#: src/emc/usr_intf/pncconf/pncconf.glade:458 -#: src/emc/usr_intf/pncconf/pncconf.glade:8256 -msgid "ns" -msgstr "нс" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-RX" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:369 -msgid "Step _Space:" -msgstr "Место шага:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-EN" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:417 -msgid "Direction _Hold:" -msgstr "Удержание направления:" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS0)" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:464 -msgid "_Direction Setup:" -msgstr "Установка направления:" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS2)" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:512 -msgid "Driver Timing Settings" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS3)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:538 -msgid "First Parport _Base Address:" -msgstr "Адрес первого порта" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 I/O (SS0)" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:564 -msgid " Out" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 Analog (SS1)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:575 -#: src/emc/usr_intf/stepconf/stepconf.glade:591 -msgid "" -"Out\n" -"In" +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 I/O (SS3)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:633 -msgid "S_econd Parport Address:" -msgstr "Адрес второго порта:" +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 Analog (SS4)" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:650 -msgid "T_hird Parport Address:" -msgstr "Адрес треьего порта:" +#: src/emc/usr_intf/pncconf/pncconf.py:176 +#, fuzzy +msgid "Analog Input" +msgstr "Ручное управление" -#: src/emc/usr_intf/stepconf/stepconf.glade:667 -msgid " Parallel Port Settings" -msgstr "Настройка параллельного порта" +#: src/emc/usr_intf/pncconf/pncconf.py:277 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +#, fuzzy +msgid "Axis Selection" +msgstr "A Направление" -#: src/emc/usr_intf/stepconf/stepconf.glade:684 +#: src/emc/usr_intf/pncconf/pncconf.py:285 msgid "" -"_Test Base\n" -"Period Jitter " -msgstr "Проверить джиттер базового периода" +"7i64-Input\n" +"P3 and P4" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:703 -msgid "Machine _Name:" -msgstr "Название станка:" +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "" +"7i64-Output\n" +"P2 and P5" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:716 -msgid "_Axis configuration:" -msgstr "Конфигурация осей:" +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "7i64-Analog In" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:730 -msgid "Machine _units:" -msgstr "Единицы станка:" +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P2" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:744 -#: src/emc/usr_intf/pncconf/pncconf.glade:246 -msgid "Configuration directory:" -msgstr "Каталог конфигураций:" +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P3" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:757 -msgid "D_river type:" -msgstr "Тип привода:" +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB3" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:785 -#: src/emc/usr_intf/pncconf/pncconf.glade:326 +#: src/emc/usr_intf/pncconf/pncconf.py:301 msgid "" -"Inch\n" -"Millimeter" +"7i70-Input\n" +"TB2" msgstr "" -"Дюймы\n" -"Миллиметры" -#: src/emc/usr_intf/stepconf/stepconf.glade:800 -#: src/emc/usr_intf/pncconf/pncconf.glade:291 +#: src/emc/usr_intf/pncconf/pncconf.py:309 msgid "" -"XYZ\n" -"XYZA\n" -"XZ (Lathe)" +"7i71-Output\n" +"TB3" msgstr "" -"XYZ\n" -"XYZA\n" -"XZ (Токарный)" -#: src/emc/usr_intf/stepconf/stepconf.glade:847 +#: src/emc/usr_intf/pncconf/pncconf.py:309 msgid "" -"Driver characteristics: (Multiply by 1000 for times specified in µs or " -"microseconds)\n" -" Additional signal conditioning or isolation such as optocouplers " -"and RC filters\n" -" can impose timing constraints of their own, in addition to those of " -"the driver." -msgstr "" -"Характеристики привода (Умножьте на 1000 для времен, заданных в " -"микросекундах)\n" -"\n" -"Дополнительные усилители и изоляторы и фильтры могут внести собственные " -"временные ограничения в дополнение к ограничениям привода." +"7i71-Output\n" +"TB2" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:875 -msgid "Base Period Maximum _Jitter:" -msgstr "Максимальный джиттер базового периода:" +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-I/O\n" +"TB6" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:924 -msgid "Max step rate:" -msgstr "Максимальная частота шагов:" +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-I/O\n" +"TB5" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:940 -msgid "Min Base Period:" -msgstr "Минимальный базовый период:" +#: src/emc/usr_intf/pncconf/pncconf.py:317 +#, fuzzy +msgid "" +"7i76-Analog Output\n" +"TB4" +msgstr "Неиспользованный выход" -#: src/emc/usr_intf/stepconf/stepconf.glade:956 +#: src/emc/usr_intf/pncconf/pncconf.py:325 msgid "" -"_Onscreen prompt for\n" -"tool change" -msgstr "Экранный запрос смены инструмента" +"7i77-I/O\n" +"TB8" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1015 -msgid "Advanced Configuration Options" -msgstr "Продвинутые настройки" +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB7" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1033 -msgid "Include Halui user interface component" -msgstr "Добавить компоненту HALUI интерфейсa" +#: src/emc/usr_intf/pncconf/pncconf.py:325 +#, fuzzy +msgid "" +"7i77-Analog Output\n" +"TB5" +msgstr "Неиспользованный выход" -#: src/emc/usr_intf/stepconf/stepconf.glade:1074 -#: src/emc/usr_intf/pncconf/pncconf.glade:6745 -msgid "Blank program" -msgstr "Пустая программа" +#: src/emc/usr_intf/pncconf/pncconf.py:333 +msgid "7i73-I/O\n" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1089 -#: src/emc/usr_intf/pncconf/pncconf.glade:6760 +#: src/emc/usr_intf/pncconf/pncconf.py:348 #, fuzzy -msgid "Spindle speed display " -msgstr "Скорость шпинделя/номер инструмента" +msgid "Unused Unused" +msgstr "Неиспользованный вход" -#: src/emc/usr_intf/stepconf/stepconf.glade:1105 -#: src/emc/usr_intf/stepconf/stepconf.glade:1543 -#: src/emc/usr_intf/pncconf/pncconf.glade:6791 -#: src/emc/usr_intf/pncconf/pncconf.glade:7112 -#: src/emc/usr_intf/pncconf/pncconf.glade:59393 -msgid "Existing custom program" -msgstr "Существующая программа" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +#, fuzzy +msgid "Machine Is Enabled" +msgstr "Название станка:" -#: src/emc/usr_intf/stepconf/stepconf.glade:1120 -#: src/emc/usr_intf/stepconf/stepconf.glade:1559 -#: src/emc/usr_intf/pncconf/pncconf.glade:6806 -#: src/emc/usr_intf/pncconf/pncconf.glade:59409 -msgid "Include connections to HAL" -msgstr "Добавить привязку к HAL" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +#, fuzzy +msgid "X Amplifier Enable" +msgstr "Включить усилитель" -#: src/emc/usr_intf/stepconf/stepconf.glade:1154 -#: src/emc/usr_intf/pncconf/pncconf.glade:6989 -#: src/emc/usr_intf/pncconf/pncconf.glade:7537 -msgid "" -"_Display\n" -"sample\n" -"panel" -msgstr "" -"Показать\n" -"пример\n" -"панели" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +#, fuzzy +msgid "Y Amplifier Enable" +msgstr "Включить усилитель" -#: src/emc/usr_intf/stepconf/stepconf.glade:1188 -#: src/emc/usr_intf/pncconf/pncconf.glade:7048 -msgid "Include custom PyVCP GUI panel" -msgstr "Добавить PyVCP GUI панель" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +#, fuzzy +msgid "Z Amplifier Enable" +msgstr "Включить усилитель" -#: src/emc/usr_intf/stepconf/stepconf.glade:1321 -#: src/emc/usr_intf/pncconf/pncconf.glade:59199 -msgid " Number of analog (float) out pins:" -msgstr "Количество аналоговых (float) выходов:" +#: src/emc/usr_intf/pncconf/pncconf.py:371 +#, fuzzy +msgid "A Amplifier Enable" +msgstr "Включить усилитель" -#: src/emc/usr_intf/stepconf/stepconf.glade:1335 -#: src/emc/usr_intf/pncconf/pncconf.glade:59184 -msgid " Number of analog (float) in pins:" -msgstr "Количество аналоговых (float) входов:" +#: src/emc/usr_intf/pncconf/pncconf.py:371 +msgid "Force Pin True" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1349 -#: src/emc/usr_intf/pncconf/pncconf.glade:59169 -msgid " Number of analog (s32) out pins:" -msgstr "Количество аналоговых (s32) выходов:" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X HALL 1" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1363 -#: src/emc/usr_intf/pncconf/pncconf.glade:59153 -msgid " Number of analog (s32) in pins:" -msgstr "Количество аналоговых (s32) входов:" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X HALL 2" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1378 -msgid "Number of digital out pins:" -msgstr "Количество цифровых выходов:" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X HALL 3" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1403 -msgid "Number of digital in pins:" -msgstr "Количество цифровых входов:" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C1" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1414 -msgid "setup number of external pins" -msgstr "Количество цифровых входов:" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C2" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1429 -#: src/emc/usr_intf/pncconf/pncconf.glade:59213 -msgid "Include modbus master support" -msgstr "Добавить поддержку мастера MODBUS" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C4" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1500 -#: src/emc/usr_intf/pncconf/pncconf.glade:59333 -msgid "Blank ladder program" -msgstr "Пустая программа PLC" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C8" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1513 -#: src/emc/usr_intf/pncconf/pncconf.glade:59346 -msgid "Estop ladder program" -msgstr "Лестница АвОст" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y HALL 1" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1527 -#: src/emc/usr_intf/pncconf/pncconf.glade:59377 -msgid "Serial modbus program" -msgstr "Программа последовательной modbus" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y HALL 2" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1592 -#: src/emc/usr_intf/pncconf/pncconf.glade:59443 -msgid "" -"Edit ladder\n" -"program" -msgstr "Редактировать лестницу" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y HALL 3" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1628 -#: src/emc/usr_intf/pncconf/pncconf.glade:59479 -msgid "Include _Classicladder PLC" -msgstr "Добавить Classicladder PLC" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C1" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1653 -msgid "Parallel Port Setup" -msgstr "Настройка параллельного порта" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C2" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1760 -#: src/emc/usr_intf/pncconf/pncconf.glade:54010 -msgid "Pin _1:" -msgstr "Ножка _1:" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C4" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1774 -#: src/emc/usr_intf/pncconf/pncconf.glade:54024 -#: src/emc/usr_intf/pncconf/pncconf.glade:55239 -msgid "Pin _2:" -msgstr "Ножка _2:" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C8" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1788 -#: src/emc/usr_intf/pncconf/pncconf.glade:54038 -#: src/emc/usr_intf/pncconf/pncconf.glade:55256 -msgid "Pin _3:" -msgstr "Ножка _3:" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z HALL 1" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1802 -#: src/emc/usr_intf/pncconf/pncconf.glade:54052 -#: src/emc/usr_intf/pncconf/pncconf.glade:55273 -msgid "Pin _4:" -msgstr "Ножка _4:" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z HALL 2" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1816 -#: src/emc/usr_intf/pncconf/pncconf.glade:54066 -#: src/emc/usr_intf/pncconf/pncconf.glade:55290 -msgid "Pin _5:" -msgstr "Ножка _5:" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z HALL 3" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1830 -#: src/emc/usr_intf/pncconf/pncconf.glade:54080 -#: src/emc/usr_intf/pncconf/pncconf.glade:55307 -msgid "Pin _6:" -msgstr "Ножка _6:" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C1" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1844 -#: src/emc/usr_intf/pncconf/pncconf.glade:54094 -#: src/emc/usr_intf/pncconf/pncconf.glade:55324 -msgid "Pin _7:" -msgstr "Ножка _7:" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C2" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1858 -#: src/emc/usr_intf/pncconf/pncconf.glade:54108 -#: src/emc/usr_intf/pncconf/pncconf.glade:55341 -msgid "Pin _8:" -msgstr "Ножка _8:" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C4" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1872 -#: src/emc/usr_intf/pncconf/pncconf.glade:54122 -#: src/emc/usr_intf/pncconf/pncconf.glade:55358 -msgid "Pin _9:" -msgstr "Ножка _9:" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C8" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1886 -#: src/emc/usr_intf/pncconf/pncconf.glade:54136 -msgid "_Pin 14:" -msgstr "Ножка 14:" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A HALL 1" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1900 -#: src/emc/usr_intf/pncconf/pncconf.glade:54150 -msgid "P_in 16:" -msgstr "Ножка 16:" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A HALL 2" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1914 -#: src/emc/usr_intf/pncconf/pncconf.glade:54164 -msgid "Pi_n 17:" -msgstr "Ножка 17:" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A HALL 3" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2258 -msgid "Outputs (PC to Mill):" -msgstr "Выходы (от PC к станку)" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C1" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2270 -#: src/emc/usr_intf/pncconf/pncconf.glade:55222 -msgid "Pin 1_0:" -msgstr "Ножка 1_0:" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C2" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2286 -#: src/emc/usr_intf/pncconf/pncconf.glade:55206 -msgid "Pin 1_1:" -msgstr "Ножка 1_1:" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C4" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2302 -#: src/emc/usr_intf/pncconf/pncconf.glade:55190 -msgid "Pin 1_2:" -msgstr "Ножка 1_2:" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C8" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2318 -#: src/emc/usr_intf/pncconf/pncconf.glade:55174 -msgid "Pin 1_3:" -msgstr "Ножка 1_3:" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +#, fuzzy +msgid "S HALL 1" +msgstr "Сохранить HAL INI" -#: src/emc/usr_intf/stepconf/stepconf.glade:2334 -#: src/emc/usr_intf/pncconf/pncconf.glade:55158 -msgid "Pin 1_5:" -msgstr "Ножка 1_5:" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +#, fuzzy +msgid "S HALL 2" +msgstr "Сохранить HAL INI" -#: src/emc/usr_intf/stepconf/stepconf.glade:2399 -msgid "Inputs (Mill to PC):" -msgstr "Входы (От станка к PC)" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +#, fuzzy +msgid "S HALL 3" +msgstr "Сохранить HAL INI" -#: src/emc/usr_intf/stepconf/stepconf.glade:2425 -#: src/emc/usr_intf/stepconf/stepconf.glade:2438 -#: src/emc/usr_intf/pncconf/pncconf.glade:54578 -#: src/emc/usr_intf/pncconf/pncconf.glade:54591 -msgid "Invert" -msgstr "Инвертировать" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C1" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2887 -msgid "_Sherline Outputs" -msgstr "Выходы _Sherline" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C2" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2905 -msgid "_Xylotex Outputs" -msgstr "Выходы _Xylotex" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C4" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2923 -msgid "Output pinout presets:" -msgstr "Предустановки выходов:" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C8" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3022 -#: src/emc/usr_intf/pncconf/pncconf.glade:57970 -msgid "X Axis Configuration" -msgstr "Конфигурация оси X" +#: src/emc/usr_intf/pncconf/pncconf.py:378 +msgid "Unused Output" +msgstr "Неиспользованный выход" -#: src/emc/usr_intf/stepconf/stepconf.glade:3090 -msgid "_Motor steps per revolution:" -msgstr "Шаги мотора за оборот" +#: src/emc/usr_intf/pncconf/pncconf.py:378 +#, fuzzy +msgid "Coolant" +msgstr "Охлаждение:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3103 -msgid "_Driver Microstepping:" -msgstr "Микрошаг привода" +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#, fuzzy +msgid "Control" +msgstr "Control-M" -#: src/emc/usr_intf/stepconf/stepconf.glade:3118 -msgid "_Pulley teeth (Motor:Leadscrew):" -msgstr "Зубья шестеренок (Мотор:Винт)" +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +#, fuzzy +msgid "Digital" +msgstr "Цифровой вход 0" -#: src/emc/usr_intf/stepconf/stepconf.glade:3133 -msgid "_Leadscrew Pitch:" -msgstr "Шаг винта:" +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:410 +#, fuzzy +msgid "X BLDC Control" +msgstr "Control-M" -#: src/emc/usr_intf/stepconf/stepconf.glade:3148 -#: src/emc/usr_intf/pncconf/pncconf.glade:57858 -msgid "Maximum _Velocity:" -msgstr "Максимальная скорость:" +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 +#, fuzzy +msgid "Y BLDC Control" +msgstr "Control-M" -#: src/emc/usr_intf/stepconf/stepconf.glade:3163 -#: src/emc/usr_intf/pncconf/pncconf.glade:57843 -msgid "Maximum _Acceleration:" -msgstr "Максимальное ускорение:" +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 +#, fuzzy +msgid "Z BLDC Control" +msgstr "Control-M" -#: src/emc/usr_intf/stepconf/stepconf.glade:3178 -#: src/emc/usr_intf/pncconf/pncconf.glade:67063 -msgid "Time to accelerate to max speed:" -msgstr "Время для разгона до максимальной скорости:" +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 +#, fuzzy +msgid "A BLDC Control" +msgstr "Control-M" -#: src/emc/usr_intf/stepconf/stepconf.glade:3193 -msgid "Distance to accelerate to max speed:" -msgstr "Расстояние разгона до максимальной скорости:" +#: src/emc/usr_intf/pncconf/pncconf.py:381 +msgid " S BLDC Control" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3292 -#: src/emc/usr_intf/pncconf/pncconf.glade:67036 -msgid "Pulse rate at max speed:" -msgstr "Частота шагов на максимальной скорости:" +#: src/emc/usr_intf/pncconf/pncconf.py:381 +#: src/emc/usr_intf/pncconf/pncconf.py:412 +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#: src/emc/usr_intf/pncconf/pncconf.py:516 +#: src/emc/usr_intf/pncconf/pncconf.py:519 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.py:528 +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#: src/emc/usr_intf/pncconf/pncconf.py:568 +#: src/emc/usr_intf/pncconf/pncconf.py:580 +#, fuzzy +msgid "Custom Signals" +msgstr "Сигналы" -#: src/emc/usr_intf/stepconf/stepconf.glade:3362 -msgid "_Home location:" -msgstr "Положение начала:" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 +msgid "X Minimum Limit" +msgstr "Меньший предел X" -#: src/emc/usr_intf/stepconf/stepconf.glade:3377 -msgid "Home _Switch location:" -msgstr "Положение датчика начала:" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 +msgid "Y Minimum Limit" +msgstr "Меньший предел Y" -#: src/emc/usr_intf/stepconf/stepconf.glade:3392 -msgid "Home Sear_ch velocity:" -msgstr "Скорость поиска начала:" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 +msgid "Z Minimum Limit" +msgstr "Меньший предел Z" -#: src/emc/usr_intf/stepconf/stepconf.glade:3407 -msgid "Home La_tch direction:" -msgstr "Направление датчика начала:" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 +msgid "A Minimum Limit" +msgstr "Меньший предел A" -#: src/emc/usr_intf/stepconf/stepconf.glade:3420 -#: src/emc/usr_intf/pncconf/pncconf.glade:66232 -#: src/emc/usr_intf/pncconf/pncconf.glade:66274 -#: src/emc/usr_intf/pncconf/pncconf.glade:66505 -#: src/emc/usr_intf/pncconf/pncconf.glade:66570 -msgid "_:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 +msgid "X Maximum Limit" +msgstr "Больший предел Y" -#: src/emc/usr_intf/stepconf/stepconf.glade:3437 -#: src/emc/usr_intf/pncconf/pncconf.glade:58536 -msgid "" -"Same\n" -"Opposite" -msgstr "" -"То же\n" -"Обратное" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 +msgid "Y Maximum Limit" +msgstr "Больший предел Y" -#: src/emc/usr_intf/stepconf/stepconf.glade:3492 -msgid "Tab_le travel:" -msgstr "Перемещение стола:" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 +msgid "Z Maximum Limit" +msgstr "Больший предел Z" -#: src/emc/usr_intf/stepconf/stepconf.glade:3519 -msgid "t_o" -msgstr "до" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 +msgid "A Maximum Limit" +msgstr "Больший предел A" -#: src/emc/usr_intf/stepconf/stepconf.glade:3649 -msgid "s" -msgstr "с" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 +msgid "X Both Limit" +msgstr "Оба предела X" -#: src/emc/usr_intf/stepconf/stepconf.glade:3703 -msgid "T_est this axis" -msgstr "Проверить ось" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 +msgid "Y Both Limit" +msgstr "Оба предела Y" -#: src/emc/usr_intf/stepconf/stepconf.glade:3729 -msgid "Axis SCALE:" -msgstr "Масштаб оси:" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 +msgid "Z Both Limit" +msgstr "Оба предела Z" -#: src/emc/usr_intf/stepconf/stepconf.glade:3765 -msgid "Spindle Configuration" -msgstr "Конфигурация шпинделя" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 +msgid "A Both Limit" +msgstr "Оба предела A" -#: src/emc/usr_intf/stepconf/stepconf.glade:3785 -#, fuzzy -msgid "Use spindle-at-speed:" -msgstr "Обороты шпинделя:" +#: src/emc/usr_intf/pncconf/pncconf.py:386 +#: src/emc/usr_intf/pncconf/pncconf.py:477 +msgid "All Limits" +msgstr "Все пределы" -#: src/emc/usr_intf/stepconf/stepconf.glade:3841 -msgid "Speed display filter gain:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:387 +msgid "X Home" +msgstr "Начало X" -#: src/emc/usr_intf/stepconf/stepconf.glade:3870 -msgid "Calibration:" -msgstr "Калибровка:" +#: src/emc/usr_intf/pncconf/pncconf.py:387 +msgid "Y Home" +msgstr "Начало Y" -#: src/emc/usr_intf/stepconf/stepconf.glade:3883 -msgid "_Speed 1:" -msgstr "Скорость 1" +#: src/emc/usr_intf/pncconf/pncconf.py:387 +msgid "Z Home" +msgstr "Начало Z" -#: src/emc/usr_intf/stepconf/stepconf.glade:3898 -msgid "_PWM 1:" -msgstr "_PWM 1:" +#: src/emc/usr_intf/pncconf/pncconf.py:387 +msgid "A Home" +msgstr "Начало A" -#: src/emc/usr_intf/stepconf/stepconf.glade:3916 -msgid "S_peed 2:" -msgstr "Скорость 2" +#: src/emc/usr_intf/pncconf/pncconf.py:387 +msgid "All Home" +msgstr "Все начала" -#: src/emc/usr_intf/stepconf/stepconf.glade:3931 -msgid "P_WM 2:" -msgstr "P_WM 2:" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 +msgid "X Minimum Limit + Home" +msgstr "Меньший предел + начало X" -#: src/emc/usr_intf/stepconf/stepconf.glade:3949 -msgid "PWM _Rate:" -msgstr "Коэффициенты ШИМ" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 +msgid "Y Minimum Limit + Home" +msgstr "Меньший предел + начало X" -#: src/emc/usr_intf/stepconf/stepconf.glade:4025 -msgid "_Cycles per revolution:" -msgstr "Циклы на оборот:" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 +msgid "Z Minimum Limit + Home" +msgstr "Меньший предел + начало Z" -#: src/emc/usr_intf/stepconf/stepconf.glade:4079 -msgid "Enter 0 Hz for \"PDM\" mode" -msgstr "Введите 0 Гц для Частотно Импульсного режима" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 +msgid "A Minimum Limit + Home" +msgstr "Меньший предел + начало A" -#: src/emc/usr_intf/stepconf/stepconf.glade:4091 -#, fuzzy -msgid "Scale %" -msgstr "Масштаб" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 +msgid "X Maximum Limit + Home" +msgstr "Больший предел + начало X" -#: src/emc/usr_intf/stepconf/stepconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:60002 -msgid "Machine configuration complete" -msgstr "Настройка станка завершена" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 +msgid "Y Maximum Limit + Home" +msgstr "Больший предел + начало Y" -#: src/emc/usr_intf/stepconf/stepconf.glade:4114 -#: src/emc/usr_intf/pncconf/pncconf.glade:60003 -#, fuzzy -msgid "" -"All the necessary information has now been gathered. Click \"Apply\" to " -"write your configuration files to disk.\n" -"If you experience lockups while running LinuxCNC, you will need to decrease " -"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" -"\n" -"If you experience lost steps while running LinuxCNC, first verify that you " -"entered the proper timings for your stepper drivers. If that does not fix " -"the problem, then run a more thorough latency test as described on the " -"linuxcnc.org wiki:\n" -" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" -"\n" -"If you experience the \"Unexpected Realtime Delay\" message, run a more " -"thorough latency test as described on the linuxcnc.org wiki: \n" -" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" -msgstr "" -"Вся необходимая информация собрана, Нажмите применить для сохранения " -"конфигурации на диск,\n" -"Если EMC зависает, нужно уменьшить максимальную скорость, что приведет к " -"повышению BASE_PERIOD.\n" -"\n" -"Если вы замечаете проблемы в работе emc, сначала проверьте правильность " -"времен для ШД. Если это не помогает, то проведите более тщательный тест " -"задержек по описанию на linuxcnc.org wiki:\n" -" http;//wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting\n" -"\n" -"Если вы получили сообщение \"Unexpected Realtime Delay\", проведите более " -"тщательный тест задержек по описанию на linuxcnc.org wiki: \n" -" http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 +msgid "Z Maximum Limit + Home" +msgstr "Больший предел + начало Z" -#: src/emc/usr_intf/stepconf/stepconf.glade:4160 -#: src/emc/usr_intf/pncconf/pncconf.glade:60462 -#: src/emc/usr_intf/pncconf/pncconf.glade:61557 -#: src/emc/usr_intf/pncconf/pncconf.glade:62650 -#: src/emc/usr_intf/pncconf/pncconf.glade:63743 -#: src/emc/usr_intf/pncconf/pncconf.glade:64842 -msgid "Acceleration:" -msgstr "Ускорение:" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 +msgid "A Maximum Limit + Home" +msgstr "Больший предел + начало A" -#: src/emc/usr_intf/stepconf/stepconf.glade:4174 -#: src/emc/usr_intf/pncconf/pncconf.glade:60231 -#: src/emc/usr_intf/pncconf/pncconf.glade:60695 -#: src/emc/usr_intf/pncconf/pncconf.glade:61788 -#: src/emc/usr_intf/pncconf/pncconf.glade:62881 -#: src/emc/usr_intf/pncconf/pncconf.glade:63974 -#: src/emc/usr_intf/pncconf/pncconf.glade:64954 -msgid "Jog:" -msgstr "Движение:" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 +msgid "X Both Limit + Home" +msgstr "Оба предела + начало X" -#: src/emc/usr_intf/stepconf/stepconf.glade:4188 -#: src/emc/usr_intf/pncconf/pncconf.glade:60681 -#: src/emc/usr_intf/pncconf/pncconf.glade:61774 -#: src/emc/usr_intf/pncconf/pncconf.glade:62867 -#: src/emc/usr_intf/pncconf/pncconf.glade:63960 -msgid "Test Area:" -msgstr "Тестовое пространство:" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 +msgid "Y Both Limit + Home" +msgstr "Оба предела + начало Y" -#: src/emc/usr_intf/stepconf/stepconf.glade:4217 -msgid "mm/s^2" -msgstr "мм/с^2" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 +msgid "Z Both Limit + Home" +msgstr "Оба предела + начало Z" -#: src/emc/usr_intf/stepconf/stepconf.glade:4253 -msgid "mm/s" -msgstr "мм/с" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 +msgid "A Both Limit + Home" +msgstr "Оба предела + начало A" -#: src/emc/usr_intf/stepconf/stepconf.glade:4329 -#: src/emc/usr_intf/pncconf/pncconf.glade:60620 -#: src/emc/usr_intf/pncconf/pncconf.glade:61713 -#: src/emc/usr_intf/pncconf/pncconf.glade:62806 -#: src/emc/usr_intf/pncconf/pncconf.glade:63899 -#: src/emc/usr_intf/pncconf/pncconf.glade:65066 -msgid "" -"±\n" -"+\n" -"-\n" +#: src/emc/usr_intf/pncconf/pncconf.py:392 +msgid "Joint select A" msgstr "" -"±\n" -"+\n" -"-\n" -#: src/emc/usr_intf/pncconf/pncconf.py:79 -msgid "" -"PNCconf encountered an error. The following information may be useful in " -"troubleshooting:\n" -"\n" +#: src/emc/usr_intf/pncconf/pncconf.py:392 +msgid "Joint select B" msgstr "" -"PNCconf·обнаружил ошибку.··Эта информация может помочь:\n" -"\n" -#: src/emc/usr_intf/pncconf/pncconf.py:149 -msgid "Not Used" +#: src/emc/usr_intf/pncconf/pncconf.py:392 +msgid "Joint select C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:149 -#: src/emc/usr_intf/pncconf/pncconf.py:150 -msgid "Dummy" +#: src/emc/usr_intf/pncconf/pncconf.py:392 +msgid "Joint select D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:150 -msgid "8i20 Servo Drive" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:151 -#, fuzzy -msgid "POT Output" -msgstr "GPIO выход" - -#: src/emc/usr_intf/pncconf/pncconf.py:151 -#, fuzzy -msgid "POT Enable" -msgstr "Разрешение" - -#: src/emc/usr_intf/pncconf/pncconf.py:151 -#, fuzzy -msgid "POT Direction" -msgstr "X Направление" - -#: src/emc/usr_intf/pncconf/pncconf.py:152 -msgid "GPIO Input" -msgstr "GPIO вход" - -#: src/emc/usr_intf/pncconf/pncconf.py:152 -msgid "GPIO Output" -msgstr "GPIO выход" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr B" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:152 -msgid "GPIO O Drain" -msgstr "GPIO открытый исток" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr C" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -#, fuzzy -msgid "Quad Encoder-A" -msgstr "Неиспользованный енкодер" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr D" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 +#: src/emc/usr_intf/pncconf/pncconf.py:393 #, fuzzy -msgid "Quad Encoder-B" -msgstr "Неиспользованный енкодер" +msgid "Feed Override incr A" +msgstr "Изменить подачу:" -#: src/emc/usr_intf/pncconf/pncconf.py:153 +#: src/emc/usr_intf/pncconf/pncconf.py:393 #, fuzzy -msgid "Quad Encoder-I" -msgstr "Неиспользованный енкодер" +msgid "Feed Override incr B" +msgstr "Изменить подачу:" -#: src/emc/usr_intf/pncconf/pncconf.py:153 +#: src/emc/usr_intf/pncconf/pncconf.py:394 #, fuzzy -msgid "Quad Encoder-M" -msgstr "Неиспользованный енкодер" +msgid "Feed Override incr C" +msgstr "Изменить подачу:" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:394 #, fuzzy -msgid "Muxed Encoder 0" -msgstr "Неиспользованный енкодер" +msgid "Feed Override incr D" +msgstr "Изменить подачу:" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:394 #, fuzzy -msgid "Muxed Encoder 1" -msgstr "Неиспользованный енкодер" - -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "muxed enc" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "mux enc mask" -msgstr "" +msgid "Spindle Override incr A" +msgstr "Скорость шпинделя:" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:394 #, fuzzy -msgid "mux select" -msgstr "Найти начало активной оси" +msgid "Spindle Override incr B" +msgstr "Скорость шпинделя:" -#: src/emc/usr_intf/pncconf/pncconf.py:155 +#: src/emc/usr_intf/pncconf/pncconf.py:395 #, fuzzy -msgid "Resolver 0 Encoder" -msgstr "Сбросить энкодер" +msgid "Spindle Override incr C" +msgstr "Скорость шпинделя:" -#: src/emc/usr_intf/pncconf/pncconf.py:155 +#: src/emc/usr_intf/pncconf/pncconf.py:395 #, fuzzy -msgid "Resolver 1 Encoder" -msgstr "Сбросить энкодер" +msgid "Spindle Override incr D" +msgstr "Скорость шпинделя:" -#: src/emc/usr_intf/pncconf/pncconf.py:155 +#: src/emc/usr_intf/pncconf/pncconf.py:395 #, fuzzy -msgid "Resolver 2 Encoder" -msgstr "Сбросить энкодер" +msgid "Max Vel Override incr A" +msgstr "Изменить максимальную подачу:" -#: src/emc/usr_intf/pncconf/pncconf.py:156 +#: src/emc/usr_intf/pncconf/pncconf.py:395 #, fuzzy -msgid "Resolver 3 Encoder" -msgstr "Сбросить энкодер" +msgid "Max Vel Override incr B" +msgstr "Изменить максимальную подачу:" -#: src/emc/usr_intf/pncconf/pncconf.py:156 +#: src/emc/usr_intf/pncconf/pncconf.py:396 #, fuzzy -msgid "Resolver 4 Encoder" -msgstr "Сбросить энкодер" +msgid "Max Vel Override incr C" +msgstr "Изменить максимальную подачу:" -#: src/emc/usr_intf/pncconf/pncconf.py:156 +#: src/emc/usr_intf/pncconf/pncconf.py:396 #, fuzzy -msgid "Resolver 5 Encoder" -msgstr "Сбросить энкодер" +msgid "Max Vel Override incr D" +msgstr "Изменить максимальную подачу:" -#: src/emc/usr_intf/pncconf/pncconf.py:157 +#: src/emc/usr_intf/pncconf/pncconf.py:396 #, fuzzy -msgid "Step Gen-A" -msgstr "X·Шаг" +msgid "Feed Override enable" +msgstr "Изменить подачу:" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -msgid "Dir Gen-B" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:396 +#, fuzzy +msgid "Spindle Override enable" +msgstr "Скорость шпинделя:" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -msgid "Step/Dir Gen-C" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:397 +#, fuzzy +msgid "Max Vel Override enable" +msgstr "Изменить максимальную подачу:" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -msgid "Step/Dir Gen-D" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +msgid "Manual Spindle CW" +msgstr "Шпиндель вперед" -#: src/emc/usr_intf/pncconf/pncconf.py:158 -msgid "Step/Dir Gen-E" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +msgid "Manual Spindle CCW" +msgstr "Шпиндель назад" -#: src/emc/usr_intf/pncconf/pncconf.py:158 -msgid "Step/dir Gen-F" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +msgid "Manual Spindle Stop" +msgstr "Остановить шпиндель" -#: src/emc/usr_intf/pncconf/pncconf.py:159 -msgid "Pulse Width Gen-P" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +msgid "Spindle Up-To-Speed" +msgstr "Шпинделя раскручен" -#: src/emc/usr_intf/pncconf/pncconf.py:159 -msgid "Pulse Width Gen-D" +#: src/emc/usr_intf/pncconf/pncconf.py:399 +msgid "Cycle Start" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 -msgid "Pulse Width Gen-E" +#: src/emc/usr_intf/pncconf/pncconf.py:399 +msgid "Abort" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 -msgid "Pulse Density Gen-P" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:399 +#, fuzzy +msgid "Single Step" +msgstr "Один пробел" -#: src/emc/usr_intf/pncconf/pncconf.py:160 -msgid "Pulse Density Gen-D" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 +msgid "Jog X +" +msgstr "Двигать X +" -#: src/emc/usr_intf/pncconf/pncconf.py:160 -msgid "Pulse Density Gen-E" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 +msgid "Jog X -" +msgstr "Двигать X -" -#: src/emc/usr_intf/pncconf/pncconf.py:161 -msgid "Up/Down Mode -Up" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 +msgid "Jog Y +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 -msgid "Up/Down Mode-Down" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 +msgid "Jog Y -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 -msgid "Up/Down Mode-Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 +msgid "Jog Z +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 -msgid "Motor Phase A" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 +msgid "Jog Z -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 -msgid "Motor Phase B" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 +msgid "Jog A +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 -msgid "Motor Phase C" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 +msgid "Jog A -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Phase A Not" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:407 +msgid "Jog button selected +" +msgstr "Двигать активную ось" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Phase B Not" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:407 +msgid "Jog button selected -" +msgstr "Двигать активную ось" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Phase C Not" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Unused Input" +msgstr "Неиспользованный вход" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:408 #, fuzzy -msgid "Motor Enable" -msgstr "X Разрешение" - -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Fault" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.py:165 -msgid "SMARTSERIAL-P0-TX" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P0-RX" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P0-EN" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-TX" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-RX" -msgstr "" +msgid "Limits" +msgstr "Все пределы" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Limts/Home Shared" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-TX" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:409 +#, fuzzy +msgid "Overrides" +msgstr "Игнорировать пределы" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-RX" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:410 +#, fuzzy +msgid "Operation" +msgstr "Ускорение:" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-EN" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:410 +#, fuzzy +msgid "External Control" +msgstr "внешнее управление" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-TX" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:410 +#, fuzzy +msgid "Axis rapid" +msgstr "Ось " -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-RX" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:412 +#, fuzzy +msgid "S BLDC Control" +msgstr "Control-M" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-EN" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:487 +msgid "Unused PWM Gen" +msgstr "Неиспользованный ШИМ генератор" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-TX" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:487 +#, fuzzy +msgid "X Axis PWM" +msgstr "Ось X" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-RX" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:487 +#, fuzzy +msgid "Y Axis PWM" +msgstr "Ось Y" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-EN" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#, fuzzy +msgid "Z Axis PWM" +msgstr "Ось Z" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-TX" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#, fuzzy +msgid "A Axis PWM" +msgstr "Ось A" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-RX" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +#, fuzzy +msgid "X Encoder" +msgstr "Сбросить энкодер" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-EN" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +#, fuzzy +msgid "Y Encoder" +msgstr "Сбросить энкодер" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-TX" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +#, fuzzy +msgid "Z Encoder" +msgstr "Сбросить энкодер" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-RX" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +#, fuzzy +msgid "A Encoder" +msgstr "Сбросить энкодер" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-EN" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +#, fuzzy +msgid "Spindle Encoder" +msgstr "Шпиндель тормоз" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "X Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "Y Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "Z Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #1" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "A Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #2" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "Multi Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:420 +#: src/emc/usr_intf/pncconf/pncconf.py:514 #, fuzzy -msgid "Unused Unused" -msgstr "Неиспользованный вход" - -#: src/emc/usr_intf/pncconf/pncconf.py:442 -#, fuzzy -msgid "Machine Is Enabled" -msgstr "Название станка:" +msgid "Feed Override" +msgstr "Изменить подачу:" -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/pncconf/pncconf.py:514 #, fuzzy -msgid "X Amplifier Enable" -msgstr "Включить усилитель" +msgid "spindle Override" +msgstr "Скорость шпинделя:" -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/pncconf/pncconf.py:514 #, fuzzy -msgid "Y Amplifier Enable" -msgstr "Включить усилитель" +msgid "Max Vel Override" +msgstr "Изменить максимальную подачу:" -#: src/emc/usr_intf/pncconf/pncconf.py:442 -#, fuzzy -msgid "Z Amplifier Enable" -msgstr "Включить усилитель" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "Unused Encoder" +msgstr "Неиспользованный енкодер" -#: src/emc/usr_intf/pncconf/pncconf.py:443 +#: src/emc/usr_intf/pncconf/pncconf.py:515 #, fuzzy -msgid "A Amplifier Enable" -msgstr "Включить усилитель" +msgid "Axis Encoder" +msgstr "Сбросить энкодер" -#: src/emc/usr_intf/pncconf/pncconf.py:443 -msgid "Force Pin True" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "MPG Jog Controls" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "Override MPG control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X HALL 2" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +#, fuzzy +msgid "Unused Resolver" +msgstr "Неиспользованный енкодер" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "X Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "Y Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "Z Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:519 +msgid "A Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:519 +msgid "S Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y HALL 1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#, fuzzy +msgid "Unused 8I20" +msgstr "Не подключен" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y HALL 2" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "X Axis" +msgstr "Ось X" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y HALL 3" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Y Axis" +msgstr "Ось Y" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Z Axis" +msgstr "Ось Z" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C2" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "A Axis" +msgstr "Ось A" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C4" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:528 +#, fuzzy +msgid "Unused Analog Output" +msgstr "Неиспользованный выход" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C8" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:528 +#, fuzzy +msgid "Spindle Output" +msgstr "Шпиндель ON" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z HALL 1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:551 +msgid "Unused StepGen" +msgstr "Неиспользованный генератор шагов" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z HALL 2" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:551 +#, fuzzy +msgid "X Axis StepGen" +msgstr "Неиспользованный генератор шагов" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z HALL 3" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:551 +#, fuzzy +msgid "Y Axis StepGen" +msgstr "Неиспользованный генератор шагов" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:551 +#, fuzzy +msgid "Z Axis StepGen" +msgstr "Неиспользованный генератор шагов" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C2" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:552 +#, fuzzy +msgid "A Axis StepGen" +msgstr "Неиспользованный генератор шагов" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C4" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:552 +#, fuzzy +msgid "Spindle StepGen" +msgstr "Шпиндель медленнее" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C8" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:552 +#, fuzzy +msgid "X2 Tandem StepGen" +msgstr "Шпиндель медленнее" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A HALL 1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:552 +#, fuzzy +msgid "Y2 Tandem StepGen" +msgstr "Шпиндель медленнее" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A HALL 2" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#, fuzzy +msgid "Z2 Tandem StepGen" +msgstr "Шпиндель медленнее" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#, fuzzy +msgid "Charge Pump StepGen" +msgstr "Пульс" + +#: src/emc/usr_intf/pncconf/pncconf.py:567 +#, fuzzy +msgid "Unused TPPWM Gen" +msgstr "Неиспользованный ШИМ генератор" + +#: src/emc/usr_intf/pncconf/pncconf.py:567 +msgid "X Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:567 +msgid "Y Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:568 +msgid "Z Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:568 +msgid "A Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:568 +msgid "S Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:576 +#: src/emc/usr_intf/pncconf/pncconf.py:6882 #, fuzzy -msgid "S HALL 1" -msgstr "Сохранить HAL INI" +msgid "Unused Channel" +msgstr "Выбранный канал" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:576 #, fuzzy -msgid "S HALL 2" -msgstr "Сохранить HAL INI" +msgid "8i20 Amplifier Card" +msgstr "Включить усилитель" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -#, fuzzy -msgid "S HALL 3" -msgstr "Сохранить HAL INI" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +msgid "7i64 I/O Card" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +msgid "7i69 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i70 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i71 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i76 Mode 0 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:450 -msgid "Unused Output" -msgstr "Неиспользованный выход" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i77 Mode 0 I/O Card" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:450 -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#, fuzzy -msgid "Spindle" -msgstr "Шпиндель:" +#: src/emc/usr_intf/pncconf/pncconf.py:578 +msgid "7i73 Mode 1 Pendant Card" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:450 +#: src/emc/usr_intf/pncconf/pncconf.py:580 #, fuzzy -msgid "Coolant" -msgstr "Охлаждение:" +msgid "Unused Analog In" +msgstr "Неиспользованный выход" -#: src/emc/usr_intf/pncconf/pncconf.py:451 +#: src/emc/usr_intf/pncconf/pncconf.py:676 #, fuzzy -msgid "Control" -msgstr "Control-M" +msgid "my_LinuxCNC_machine" +msgstr "Моя_машина" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#, fuzzy -msgid "Digital" -msgstr "Цифровой вход 0" +#: src/emc/usr_intf/pncconf/pncconf.py:939 +#: src/emc/usr_intf/pncconf/pncconf.py:941 +msgid "Enter Address" +msgstr "Введите адрес" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:481 -#, fuzzy -msgid "X BLDC Control" -msgstr "Control-M" +#: src/emc/usr_intf/pncconf/pncconf.py:1290 +msgid "" +"This configuration was saved with an earlier version of pncconf which may be " +"incompatible.\n" +"If it doesn't plainly cause an error, you still may want to save it with " +"another name and check it. Safer to start from scratch.\n" +"If you have a REALLY large config that you wish to convert to this newer " +"version of PNConf - ask on the LinuxCNC forum - it may be possible.." +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 -#, fuzzy -msgid "Y BLDC Control" -msgstr "Control-M" +#: src/emc/usr_intf/pncconf/pncconf.py:1296 +#, python-format +msgid "File %r was modified since it was written by PNCconf" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 -#, fuzzy -msgid "Z BLDC Control" -msgstr "Control-M" +#: src/emc/usr_intf/pncconf/pncconf.py:1300 +msgid "" +"Saving this configuration file will discard configuration changes made " +"outside PNCconf." +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 -#, fuzzy -msgid "A BLDC Control" -msgstr "Control-M" +#: src/emc/usr_intf/pncconf/pncconf.py:1327 +#: src/emc/usr_intf/pncconf/pncconf.py:2421 +#, python-format +msgid "# Generated by PNCconf at %s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:453 -msgid " S BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:1329 +#: src/emc/usr_intf/pncconf/pncconf.py:2423 +msgid "# overwritten when you run PNCconf again" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:453 -#: src/emc/usr_intf/pncconf/pncconf.py:483 -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#: src/emc/usr_intf/pncconf/pncconf.py:585 -#: src/emc/usr_intf/pncconf/pncconf.py:588 -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.py:597 -#: src/emc/usr_intf/pncconf/pncconf.py:614 -#: src/emc/usr_intf/pncconf/pncconf.py:629 +#: src/emc/usr_intf/pncconf/pncconf.py:2134 #, fuzzy -msgid "Custom Signals" -msgstr "Сигналы" +msgid "# Use ACTUAL spindle velocity from spindle encoder" +msgstr "# **** Use ACTUAL spindle velocity from spindle encoder" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 -msgid "X Minimum Limit" -msgstr "Меньший предел X" +#: src/emc/usr_intf/pncconf/pncconf.py:2135 +msgid "# spindle-velocity bounces around so we filter it with lowpass" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 -msgid "Y Minimum Limit" -msgstr "Меньший предел Y" +#: src/emc/usr_intf/pncconf/pncconf.py:2136 +#, fuzzy +msgid "" +"# spindle-velocity is signed so we use absolute component to remove sign" +msgstr "" +"# **** spindle-velocity is signed so we use absolute compoent to remove sign" + +#: src/emc/usr_intf/pncconf/pncconf.py:2137 +#, fuzzy +msgid "# ACTUAL velocity is in RPS not RPM so we scale it." +msgstr "# **** ACTUAL velocity is in RPS not RPM so we scale it." -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 -msgid "Z Minimum Limit" -msgstr "Меньший предел Z" +#: src/emc/usr_intf/pncconf/pncconf.py:2821 +msgid "# connect miscellaneous signals" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 -msgid "A Minimum Limit" -msgstr "Меньший предел A" +#: src/emc/usr_intf/pncconf/pncconf.py:2824 +msgid "# ---HALUI signals---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 -msgid "X Maximum Limit" -msgstr "Больший предел Y" +#: src/emc/usr_intf/pncconf/pncconf.py:2843 +msgid "# ---charge pump signals---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 -msgid "Y Maximum Limit" -msgstr "Больший предел Y" +#: src/emc/usr_intf/pncconf/pncconf.py:2847 +msgid "# ---coolant signals---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 -msgid "Z Maximum Limit" -msgstr "Больший предел Z" +#: src/emc/usr_intf/pncconf/pncconf.py:2852 +msgid "# ---probe signal---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 -msgid "A Maximum Limit" -msgstr "Больший предел A" +#: src/emc/usr_intf/pncconf/pncconf.py:2857 +msgid "# ---jog button signals---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 -msgid "X Both Limit" -msgstr "Оба предела X" +#: src/emc/usr_intf/pncconf/pncconf.py:2862 +msgid "# ---USB device jog button signals---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 -msgid "Y Both Limit" -msgstr "Оба предела Y" +#: src/emc/usr_intf/pncconf/pncconf.py:2903 +#: src/emc/usr_intf/pncconf/pncconf.py:2929 +msgid "# ---mpg signals---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 -msgid "Z Both Limit" -msgstr "Оба предела Z" +#: src/emc/usr_intf/pncconf/pncconf.py:3111 +msgid "# ---motion control signals---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 -msgid "A Both Limit" -msgstr "Оба предела A" +#: src/emc/usr_intf/pncconf/pncconf.py:3116 +msgid "# ---digital in / out signals---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:458 -#: src/emc/usr_intf/pncconf/pncconf.py:546 -msgid "All Limits" -msgstr "Все пределы" +#: src/emc/usr_intf/pncconf/pncconf.py:3126 +msgid "# ---estop signals---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:459 -msgid "X Home" -msgstr "Начало X" +#: src/emc/usr_intf/pncconf/pncconf.py:3145 +msgid "# ---manual tool change signals---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:459 -msgid "Y Home" -msgstr "Начало Y" +#: src/emc/usr_intf/pncconf/pncconf.py:3154 +msgid "# ---toolchange signals for custom tool changer---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:459 -msgid "Z Home" -msgstr "Начало Z" +#: src/emc/usr_intf/pncconf/pncconf.py:3176 +msgid "# --- Classicladder signals for Z axis Auto touch off program---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:459 -msgid "A Home" -msgstr "Начало A" +#: src/emc/usr_intf/pncconf/pncconf.py:3195 +msgid "# These files are loaded post gladeVCP, in the order they appear" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:459 -msgid "All Home" -msgstr "Все начала" +#: src/emc/usr_intf/pncconf/pncconf.py:3209 +#: src/emc/usr_intf/pncconf/pncconf.py:3276 +#, fuzzy +msgid "# _DO NOT_ include your HAL commands here." +msgstr "# Include your customized HAL commands here" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 -msgid "X Minimum Limit + Home" -msgstr "Меньший предел + начало X" +#: src/emc/usr_intf/pncconf/pncconf.py:3210 +msgid "# Put custom HAL commands in custom_gvcp.hal" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 -msgid "Y Minimum Limit + Home" -msgstr "Меньший предел + начало X" +#: src/emc/usr_intf/pncconf/pncconf.py:3213 +#, fuzzy +msgid "# **** Setup of spindle speed display using gladevcp ****" +msgstr "" +"# **** Setup of spindle speed and tool number display using pyvcp -START ****" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 -msgid "Z Minimum Limit + Home" -msgstr "Меньший предел + начало Z" +#: src/emc/usr_intf/pncconf/pncconf.py:3222 +msgid "# **** Setup GLADE MDI buttons ****" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 -msgid "A Minimum Limit + Home" -msgstr "Меньший предел + начало A" +#: src/emc/usr_intf/pncconf/pncconf.py:3235 +msgid "" +"# **** Z axis touch-off button - requires the touch-off classicladder " +"program ****" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 -msgid "X Maximum Limit + Home" -msgstr "Больший предел + начало X" +#: src/emc/usr_intf/pncconf/pncconf.py:3265 +msgid "# These files are loaded post GUI, in the order they appear" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 -msgid "Y Maximum Limit + Home" -msgstr "Больший предел + начало Y" +#: src/emc/usr_intf/pncconf/pncconf.py:3277 +msgid "# Put custom HAL commands in custom_postgui.hal" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 -msgid "Z Maximum Limit + Home" -msgstr "Больший предел + начало Z" +#: src/emc/usr_intf/pncconf/pncconf.py:3278 +#, fuzzy +msgid "# The commands in this file are run after the GUI loads" +msgstr "" +"# The commands in this file are run after the AXIS GUI (including PyVCP " +"panel) starts" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 -msgid "A Maximum Limit + Home" -msgstr "Больший предел + начало A" +#: src/emc/usr_intf/pncconf/pncconf.py:3288 +#, fuzzy +msgid "# **** Setup of spindle speed display using pyvcp -END ****" +msgstr "" +"# **** Setup of spindle speed and tool number display using pyvcp -START ****" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 -msgid "X Both Limit + Home" -msgstr "Оба предела + начало X" +#: src/emc/usr_intf/pncconf/pncconf.py:3300 +msgid "# This file will not be overwritten when you run PNCconf again" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 -msgid "Y Both Limit + Home" -msgstr "Оба предела + начало Y" +#: src/emc/usr_intf/pncconf/pncconf.py:3306 +msgid "# These commands are required for Touchy GUI" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 -msgid "Z Both Limit + Home" -msgstr "Оба предела + начало Z" +#: src/emc/usr_intf/pncconf/pncconf.py:3358 +#, python-format +msgid "Generated by PNCconf at %s" +msgstr "Сделано PNCconf в %s" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 -msgid "A Both Limit + Home" -msgstr "Оба предела + начало A" +#: src/emc/usr_intf/pncconf/pncconf.py:3370 +msgid "configures LinuxCNC as:\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -msgid "Joint select A" +#: src/emc/usr_intf/pncconf/pncconf.py:3371 +msgid "type CNC\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -msgid "Joint select B" +#: src/emc/usr_intf/pncconf/pncconf.py:3372 +msgid "will be used as the frontend display" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -msgid "Joint select C" +#: src/emc/usr_intf/pncconf/pncconf.py:3381 +msgid " connector" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -msgid "Joint select D" +#: src/emc/usr_intf/pncconf/pncconf.py:3393 +msgid "invrt" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr A" +#: src/emc/usr_intf/pncconf/pncconf.py:3402 +#, python-format +msgid "%(name)s Parport" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr B" +#: src/emc/usr_intf/pncconf/pncconf.py:3407 +#: src/emc/usr_intf/pncconf/pncconf.py:3415 +msgid "-> inverted" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr C" +#: src/emc/usr_intf/pncconf/pncconf.py:3409 +#, python-format +msgid "pin# %(pinnum)d is connected to input signal:'%(data)s' %(mesag)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr D" +#: src/emc/usr_intf/pncconf/pncconf.py:3417 +#, python-format +msgid "pin# %(pinnum)d is connected to output signal:'%(data)s' %(mesag)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/pncconf/pncconf.py:3595 #, fuzzy -msgid "Feed Override incr A" -msgstr "Изменить подачу:" +msgid "Desktop Launcher for LinuxCNC config made by PNCconf" +msgstr "Desktop Launcher for EMC config made by Stepconf" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -#, fuzzy -msgid "Feed Override incr B" -msgstr "Изменить подачу:" +#: src/emc/usr_intf/pncconf/pncconf.py:3856 +#, python-format +msgid "%s Axis Configuration" +msgstr "%s Axis Configuration" -#: src/emc/usr_intf/pncconf/pncconf.py:466 +#: src/emc/usr_intf/pncconf/pncconf.py:3881 #, fuzzy -msgid "Feed Override incr C" -msgstr "Изменить подачу:" +msgid "Spindle Motor/Encoder Configuration" +msgstr "Конфигурация шпинделя" -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#, fuzzy -msgid "Feed Override incr D" -msgstr "Изменить подачу:" +#: src/emc/usr_intf/pncconf/pncconf.py:3883 +#, python-format +msgid "%s Axis Motor/Encoder Configuration" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#, fuzzy -msgid "Spindle Override incr A" -msgstr "Скорость шпинделя:" +#: src/emc/usr_intf/pncconf/pncconf.py:3912 +#, python-format +msgid "%s Parallel Port Setup" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#, fuzzy -msgid "Spindle Override incr B" -msgstr "Скорость шпинделя:" +#: src/emc/usr_intf/pncconf/pncconf.py:3936 +#, python-format +msgid "%s I/0 Setup" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -#, fuzzy -msgid "Spindle Override incr C" -msgstr "Скорость шпинделя:" +#: src/emc/usr_intf/pncconf/pncconf.py:4162 +msgid "Quit PNCconfig and discard changes?" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:467 +#: src/emc/usr_intf/pncconf/pncconf.py:4203 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Help Pages" +msgstr "Страницы помощи" + +#: src/emc/usr_intf/pncconf/pncconf.py:4208 +msgid "Help page is unavailable\n" +msgstr "Помощь не доступна\n" + +#: src/emc/usr_intf/pncconf/pncconf.py:4218 +msgid "" +"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " +"of external hardware is unavailable." +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:4223 +#, python-format +msgid "" +"You are using a realtime version of LinuxCNC but didn't load a realtime " +"kernel so testing / tuning of external hardware is unavailable.\n" +" This is probably because you updated the OS and it doesn't load the RTAI " +"kernel anymore\n" +" You are using the %(actual)s kernel instead of %(needed)s" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:4256 #, fuzzy -msgid "Spindle Override incr D" -msgstr "Скорость шпинделя:" +msgid "LinuxCNC 'PNCconf' configuration files" +msgstr "EMC2 'stepconf' configuration files" + +#: src/emc/usr_intf/pncconf/pncconf.py:4286 +msgid "" +"It seems data in this file is from too old of a version of PNCConf to " +"continue.\n" +"." +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:4293 +#: src/emc/usr_intf/pncconf/pncconf.py:4391 +#, python-format +msgid "Point and click configuration - %s.pncconf " +msgstr "Легкое конфигурирование - %s.pncconf" + +#: src/emc/usr_intf/pncconf/pncconf.py:4413 +msgid "" +"You need to designate a parport and/or mesa I/O device before continuing." +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:4481 +msgid "" +"You Have choosen to re-edit the current config, so you can not go to the new/" +"modify page.\n" +" Quit and reload PNCconf if you wish to build a new config." +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:4485 +msgid "" +"If you can not go to the new/modify page your current data will be lost.\n" +"Ok to reset data and start a new configuration?" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -#, fuzzy -msgid "Max Vel Override incr A" -msgstr "Изменить максимальную подачу:" +#: src/emc/usr_intf/pncconf/pncconf.py:4811 +msgid "USB device Info Search" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:467 +#: src/emc/usr_intf/pncconf/pncconf.py:4825 #, fuzzy -msgid "Max Vel Override incr B" -msgstr "Изменить максимальную подачу:" +msgid "USB device page is unavailable\n" +msgstr "Помощь не доступна\n" -#: src/emc/usr_intf/pncconf/pncconf.py:468 +#: src/emc/usr_intf/pncconf/pncconf.py:4890 #, fuzzy -msgid "Max Vel Override incr C" -msgstr "Изменить максимальную подачу:" +msgid "Pin names are unavailable\n" +msgstr "Помощь не доступна\n" -#: src/emc/usr_intf/pncconf/pncconf.py:468 +#: src/emc/usr_intf/pncconf/pncconf.py:4912 #, fuzzy -msgid "Max Vel Override incr D" -msgstr "Изменить максимальную подачу:" - -#: src/emc/usr_intf/pncconf/pncconf.py:469 -msgid "Manual Spindle CW" -msgstr "Шпиндель вперед" - -#: src/emc/usr_intf/pncconf/pncconf.py:469 -msgid "Manual Spindle CCW" -msgstr "Шпиндель назад" - -#: src/emc/usr_intf/pncconf/pncconf.py:469 -msgid "Manual Spindle Stop" -msgstr "Остановить шпиндель" - -#: src/emc/usr_intf/pncconf/pncconf.py:469 -msgid "Spindle Up-To-Speed" -msgstr "Шпинделя раскручен" +msgid "Device names are unavailable\n" +msgstr "Помощь не доступна\n" -#: src/emc/usr_intf/pncconf/pncconf.py:470 -msgid "Cycle Start" +#: src/emc/usr_intf/pncconf/pncconf.py:4915 +msgid "No Pncconf made device rules were found\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:470 -msgid "Abort" +#: src/emc/usr_intf/pncconf/pncconf.py:5041 +#, fuzzy +msgid "" +"OK to replace existing glade panel ?\n" +"It will be renamed and added to 'backups' folder.\n" +" Clicking 'existing custom program' will avoid this warning, but if you " +"change related options later -such as spindle feedback- the HAL connection " +"will not update" msgstr "" +"OK to replace existing custom ladder program?\n" +"Existing Custom.clp will be renamed custom_backup.clp.\n" +"Any existing file named -custom_backup.clp- will be lost. " -#: src/emc/usr_intf/pncconf/pncconf.py:470 +#: src/emc/usr_intf/pncconf/pncconf.py:5047 #, fuzzy -msgid "Single Step" -msgstr "Один пробел" +msgid "" +"OK to replace existing custom pyvcp panel?\n" +"Existing pyvcp-panel.xml will be renamed and added to 'backups' folder\n" +"Clicking 'existing custom program' will aviod this warning. " +msgstr "" +"OK to replace existing custom ladder program?\n" +"Existing Custom.clp will be renamed custom_backup.clp.\n" +"Any existing file named -custom_backup.clp- will be lost. " -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 -msgid "Jog X +" -msgstr "Двигать X +" +#: src/emc/usr_intf/pncconf/pncconf.py:5493 +msgid "" +"You need to configure the mesa0 page.\n" +" Choose the board type, firmware, component amounts and press 'Accept " +"component changes' button'" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 -msgid "Jog X -" -msgstr "Двигать X -" +#: src/emc/usr_intf/pncconf/pncconf.py:5497 +msgid "" +"The chosen Mesa0 board is different from the current displayed.\n" +"please press 'Accept component changes' button'" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 -msgid "Jog Y +" +#: src/emc/usr_intf/pncconf/pncconf.py:5540 +msgid "" +"You need to configure the mesa1 page.\n" +" Choose the board type, firmware, component amounts and press 'Accept " +"component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 -msgid "Jog Y -" +#: src/emc/usr_intf/pncconf/pncconf.py:5544 +msgid "" +"The chosen Mesa1 board is different from the current displayed.\n" +"please press 'Accept component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 -msgid "Jog Z +" +#: src/emc/usr_intf/pncconf/pncconf.py:5558 +msgid "" +"Do to technical reasons this test panel can be loaded only once without " +"reloading pncconf.You also will not be able to do any other testing untill " +"you reload pncconf and quite possibly open a terminal and type 'halrun -U' I " +"hesitate to even allow it's use but at times it's very useful.\n" +"Do you wish to continue the test?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 -msgid "Jog Z -" +#: src/emc/usr_intf/pncconf/pncconf.py:7042 +msgid "First Parallel Port set for OUTPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 -msgid "Jog A +" +#: src/emc/usr_intf/pncconf/pncconf.py:7044 +msgid "First Parallel Port set for INPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 -msgid "Jog A -" +#: src/emc/usr_intf/pncconf/pncconf.py:7068 +msgid "Second Parallel Port set for OUTPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:478 -msgid "Jog button selected +" -msgstr "Двигать активную ось" +#: src/emc/usr_intf/pncconf/pncconf.py:7070 +msgid "Second Parallel Port set for INPUT" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:478 -msgid "Jog button selected -" -msgstr "Двигать активную ось" +#: src/emc/usr_intf/pncconf/pncconf.py:7082 +msgid "Third Parallel Port set for OUTPUT" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:479 -msgid "Unused Input" -msgstr "Неиспользованный вход" +#: src/emc/usr_intf/pncconf/pncconf.py:7084 +msgid "Third Parallel Port set for INPUT" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:479 -#, fuzzy -msgid "Limits" -msgstr "Все пределы" +#: src/emc/usr_intf/pncconf/pncconf.py:7210 +msgid "You can not have both steppers and pwm signals for spindle control\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:479 -msgid "Limts/Home Shared" +#: src/emc/usr_intf/pncconf/pncconf.py:7214 +#, python-format +msgid "You forgot to designate a stepper or pwm signal for axis %s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#, fuzzy -msgid "Axis Selection" -msgstr "A Направление" +#: src/emc/usr_intf/pncconf/pncconf.py:7217 +#, python-format +msgid "You forgot to designate an encoder /resolver signal for axis %s servo\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#, fuzzy -msgid "Overrides" -msgstr "Игнорировать пределы" +#: src/emc/usr_intf/pncconf/pncconf.py:7220 +#, python-format +msgid "You forgot to designate a pwm signal or stepper signal for axis %s\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:481 -#, fuzzy -msgid "Operation" -msgstr "Ускорение:" +#: src/emc/usr_intf/pncconf/pncconf.py:7223 +#, python-format +msgid "You can not have both steppers and pwm signals for axis %s\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:481 -#, fuzzy -msgid "External Control" -msgstr "внешнее управление" +#: src/emc/usr_intf/pncconf/pncconf.py:7226 +#, python-format +msgid "" +"If using a tandem axis stepper, you must select a master stepgen for axis " +"%s\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:481 -#, fuzzy -msgid "Axis rapid" -msgstr "Ось " +#: src/emc/usr_intf/pncconf/pncconf.py:7235 +msgid "Touchy require an external cycle start signal\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:483 -#, fuzzy -msgid "S BLDC Control" -msgstr "Control-M" +#: src/emc/usr_intf/pncconf/pncconf.py:7238 +msgid "Touchy require an external abort signal\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:556 -msgid "Unused PWM Gen" -msgstr "Неиспользованный ШИМ генератор" +#: src/emc/usr_intf/pncconf/pncconf.py:7241 +msgid "Touchy require an external single-step signal\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:556 -#, fuzzy -msgid "X Axis PWM" -msgstr "Ось X" +#: src/emc/usr_intf/pncconf/pncconf.py:7244 +msgid "" +"Touchy require an external multi handwheel MPG encoder signal on the mesa " +"page\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:556 -#, fuzzy -msgid "Y Axis PWM" -msgstr "Ось Y" +#: src/emc/usr_intf/pncconf/pncconf.py:7247 +msgid "" +"Touchy require 'external mpg jogging' to be selected on the external control " +"page\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#, fuzzy -msgid "Z Axis PWM" -msgstr "Ось Z" +#: src/emc/usr_intf/pncconf/pncconf.py:7250 +msgid "" +"Touchy require the external mpg to be in 'shared mpg' mode on the external " +"controls page\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#, fuzzy -msgid "A Axis PWM" -msgstr "Ось A" +#: src/emc/usr_intf/pncconf/pncconf.py:7253 +msgid "" +"Touchy require selectable increments to be unchecked on the external " +"controls page\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -#, fuzzy -msgid "X Encoder" -msgstr "Сбросить энкодер" +#: src/emc/usr_intf/pncconf/pncconf.py:7257 +msgid "" +"The 7i29 daughter board requires PWM type generators and a PWM base " +"frequency of 20 khz\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -#, fuzzy -msgid "Y Encoder" -msgstr "Сбросить энкодер" +#: src/emc/usr_intf/pncconf/pncconf.py:7260 +msgid "" +"The 7i30 daughter board requires PWM type generators and a PWM base " +"frequency of 20 khz\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -#, fuzzy -msgid "Z Encoder" -msgstr "Сбросить энкодер" +#: src/emc/usr_intf/pncconf/pncconf.py:7263 +msgid "" +"The 7i33 daughter board requires PDM type generators and a PDM base " +"frequency of 6 Mhz\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -#, fuzzy -msgid "A Encoder" -msgstr "Сбросить энкодер" +#: src/emc/usr_intf/pncconf/pncconf.py:7266 +msgid "" +"The 7i40 daughter board requires PWM type generators and a PWM base " +"frequency of 50 khz\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -#, fuzzy -msgid "Spindle Encoder" -msgstr "Шпиндель тормоз" +#: src/emc/usr_intf/pncconf/pncconf.py:7269 +msgid "" +"The 7i48 daughter board requires UDM type generators and a PWM base " +"frequency of 24 khz\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "X Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:7494 +msgid "Gearbox Reduction Ratio" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "Y Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:7497 +msgid "Reduction Ratio" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "Z Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:7500 +msgid "Leadscrew Pitch" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "A Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:7503 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Leadscrew TPI" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "Multi Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:7507 +#: src/emc/usr_intf/pncconf/pncconf.py:7508 +msgid "(" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:583 +#: src/emc/usr_intf/pncconf/pncconf.py:7509 +#: src/emc/usr_intf/pncconf/pncconf.py:7519 +#: src/emc/usr_intf/pncconf/pncconf.py:7520 +#: src/emc/usr_intf/pncconf/pncconf.py:7521 #, fuzzy -msgid "Feed Override" -msgstr "Изменить подачу:" +msgid " / min" +msgstr "градусы/мин" -#: src/emc/usr_intf/pncconf/pncconf.py:583 +#: src/emc/usr_intf/pncconf/pncconf.py:7510 #, fuzzy -msgid "spindle Override" -msgstr "Скорость шпинделя:" +msgid " / sec²" +msgstr "мм/сек²" -#: src/emc/usr_intf/pncconf/pncconf.py:583 +#: src/emc/usr_intf/pncconf/pncconf.py:7513 #, fuzzy -msgid "Max Vel Override" -msgstr "Изменить максимальную подачу:" +msgid " / Step" +msgstr "мм/шаг" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "Unused Encoder" -msgstr "Неиспользованный енкодер" +#: src/emc/usr_intf/pncconf/pncconf.py:7514 +#, fuzzy +msgid "Steps / " +msgstr "шаг/мм" + +#: src/emc/usr_intf/pncconf/pncconf.py:7516 +#, fuzzy +msgid " / encoder pulse" +msgstr "Множитель энкодера:" -#: src/emc/usr_intf/pncconf/pncconf.py:584 +#: src/emc/usr_intf/pncconf/pncconf.py:7517 #, fuzzy -msgid "Axis Encoder" -msgstr "Сбросить энкодер" +msgid "Encoder pulses / " +msgstr "Шаги енкодера за оборот" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "MPG Jog Controls" +#: src/emc/usr_intf/pncconf/pncconf.py:7525 +#, fuzzy +msgid "Resolver Scale:" +msgstr "Множитель энкодера:" + +#: src/emc/usr_intf/pncconf/pncconf.py:7826 +msgid "Axis Scale Calculation" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "Override MPG control" +#: src/emc/usr_intf/pncconf/pncconf.py:8133 +msgid "You need to designate an E-stop input pin for this ladder program." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 +#: src/emc/usr_intf/pncconf/pncconf.py:8145 #, fuzzy -msgid "Unused Resolver" -msgstr "Неиспользованный енкодер" - -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "X Resolver" +msgid "You need to designate a probe input pin for this ladder program." msgstr "" +"Вам нужно определить вход для ABOCT на странице настройки параллельного " +"порта для работы этой программы" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "Y Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:8156 +#, fuzzy +msgid "" +"OK to replace existing custom ladder program?\n" +"Existing Custom.clp will be renamed custom_backup.clp.\n" +"Any existing file named -custom_backup.clp- will be lost.Selecting 'existing " +"ladder program' will avoid this warning" msgstr "" +"OK to replace existing custom ladder program?\n" +"Existing Custom.clp will be renamed custom_backup.clp.\n" +"Any existing file named -custom_backup.clp- will be lost. " -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "Z Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:8374 +msgid "Do you wish to continue to edit this configuration." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:588 -msgid "A Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:8413 +msgid "PCI search page is unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:588 -msgid "S Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:8532 +msgid "" +"You specified there is an existing gladefile, But there is not one in the " +"machine-named folder.." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#, fuzzy -msgid "Unused 8I20" -msgstr "Не подключен" - -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:61457 -msgid "X Axis" -msgstr "Ось X" - -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:62549 -msgid "Y Axis" -msgstr "Ось Y" - -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:63642 -msgid "Z Axis" -msgstr "Ось Z" - -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.glade:64735 -msgid "A Axis" -msgstr "Ось A" - -#: src/emc/usr_intf/pncconf/pncconf.py:597 -#, fuzzy -msgid "Unused Analog Output" -msgstr "Неиспользованный выход" +#: src/emc/usr_intf/pncconf/pncconf.py:8856 +msgid "Servo tuning is not avaiable in PNCconf yet\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:597 -#, fuzzy -msgid "Spindle Output" -msgstr "Шпиндель ON" +#: src/emc/usr_intf/pncconf/pncconf.py:8861 +msgid "degrees" +msgstr "градусы" -#: src/emc/usr_intf/pncconf/pncconf.py:613 -msgid "Unused StepGen" -msgstr "Неиспользованный генератор шагов" +#: src/emc/usr_intf/pncconf/pncconf.py:8862 +msgid "degrees / minute" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:613 -#, fuzzy -msgid "X Axis StepGen" -msgstr "Неиспользованный генератор шагов" +#: src/emc/usr_intf/pncconf/pncconf.py:8863 +msgid "degrees / second²" +msgstr "градусы/сек²" -#: src/emc/usr_intf/pncconf/pncconf.py:613 +#: src/emc/usr_intf/pncconf/pncconf.py:8865 #, fuzzy -msgid "Y Axis StepGen" -msgstr "Неиспользованный генератор шагов" +msgid "revolutions" +msgstr "Разрешение:" -#: src/emc/usr_intf/pncconf/pncconf.py:613 -#, fuzzy -msgid "Z Axis StepGen" -msgstr "Неиспользованный генератор шагов" +#: src/emc/usr_intf/pncconf/pncconf.py:8866 +msgid "rpm" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:614 +#: src/emc/usr_intf/pncconf/pncconf.py:8867 #, fuzzy -msgid "A Axis StepGen" -msgstr "Неиспользованный генератор шагов" +msgid "revs / second²" +msgstr "градусы/сек²" -#: src/emc/usr_intf/pncconf/pncconf.py:614 -#, fuzzy -msgid "Spindle StepGen" -msgstr "Шпиндель медленнее" +#: src/emc/usr_intf/pncconf/pncconf.py:8870 +#: src/emc/usr_intf/pncconf/pncconf.glade:65184 +#: src/emc/usr_intf/pncconf/pncconf.glade:65281 +#: src/emc/usr_intf/pncconf/pncconf.glade:65465 +msgid "mm / minute" +msgstr "мм/мин" -#: src/emc/usr_intf/pncconf/pncconf.py:628 -#, fuzzy -msgid "Unused TPPWM Gen" -msgstr "Неиспользованный ШИМ генератор" +#: src/emc/usr_intf/pncconf/pncconf.py:8871 +msgid "mm / second²" +msgstr "мм/сек²" -#: src/emc/usr_intf/pncconf/pncconf.py:628 -msgid "X Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:8874 +msgid "inches / minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:628 -msgid "Y Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:8875 +msgid "inches / second²" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "Z Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:9031 +#, python-format +msgid "%s Axis Tune" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "A Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:9195 +msgid "" +" You must designate a ENCODER / RESOLVER signal and an ANALOG SPINDLE signal " +"for this axis test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "S Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:9199 +msgid "" +" You must designate a ENCODER / RESOLVER signal and a PWM signal for this " +"axis test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -#: src/emc/usr_intf/pncconf/pncconf.py:6557 +#: src/emc/usr_intf/pncconf/pncconf.glade:8 #, fuzzy -msgid "Unused Channel" -msgstr "Выбранный канал" +msgid "LinuxCNC Point And Click Configuration" +msgstr "Легкое конфигурирование EMC2 " -#: src/emc/usr_intf/pncconf/pncconf.py:636 +#: src/emc/usr_intf/pncconf/pncconf.glade:23 #, fuzzy -msgid "8i20 Amplifier Card" -msgstr "Включить усилитель" +msgid "LinuxCNC Configuration Wizard Beta 1 Version" +msgstr "Мастер конфигураций EMC (альфа)" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -msgid "7i64 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.glade:24 +msgid "" +"\tThis program creates configuration \n" +" files for \"Closed Loop Servo\" \n" +"\t \t and hardware stepper\n" +" \tmachines" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -msgid "7i69 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.glade:34 +msgid "Create or Edit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 -msgid "7i70 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.glade:66 +msgid "Create a desktop launcher to start LinuxCNC with this configuration." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 -msgid "7i71 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.glade:83 +msgid "Create a desktop shortcut (symlink) to configuration files." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 -msgid "7i76 Mode 0 I/O Card" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:148 +msgid "Create a new configuration" +msgstr "Создать новую конфигурацию" -#: src/emc/usr_intf/pncconf/pncconf.py:722 -#, fuzzy -msgid "my_LinuxCNC_machine" -msgstr "Моя_машина" +#: src/emc/usr_intf/pncconf/pncconf.glade:175 +msgid "Basic machine information" +msgstr "Базовая конфигурация" -#: src/emc/usr_intf/pncconf/pncconf.py:1328 +#: src/emc/usr_intf/pncconf/pncconf.glade:214 +msgid "Machine Name:" +msgstr "Название станка:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:280 +msgid "Axis configuration:" +msgstr "Конфигурация осей:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:295 msgid "" -"This configuration was saved with an earlier version of pncconf which may be " -"incompatible.\n" -"If it doesn't plainly cause an error, you still may want to save it with " -"another name and check it. Safer to start from scratch.\n" -"If you have a REALLY large config that you wish to convert to this newer " -"version of PNConf - ask on the LinuxCNC forum - it may be possible.." +"XYZ\n" +"XYZA\n" +"XZ (Lathe)" msgstr "" +"XYZ\n" +"XYZA\n" +"XZ (Токарный)" -#: src/emc/usr_intf/pncconf/pncconf.py:1334 -#, python-format -msgid "File %r was modified since it was written by PNCconf" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:322 +msgid "Machine units:" +msgstr "Единицы станка:" -#: src/emc/usr_intf/pncconf/pncconf.py:1338 +#: src/emc/usr_intf/pncconf/pncconf.glade:337 msgid "" -"Saving this configuration file will discard configuration changes made " -"outside PNCconf." +"Inch\n" +"Millimeter" msgstr "" +"Дюймы\n" +"Миллиметры" -#: src/emc/usr_intf/pncconf/pncconf.py:1365 -#: src/emc/usr_intf/pncconf/pncconf.py:2368 -#, python-format -msgid "# Generated by PNCconf at %s" +#: src/emc/usr_intf/pncconf/pncconf.glade:363 +msgid "Machine Basics" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1367 -#: src/emc/usr_intf/pncconf/pncconf.py:2370 -msgid "# overwritten when you run PNCconf again" +#: src/emc/usr_intf/pncconf/pncconf.glade:416 +msgid "Actual Servo Period: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2070 -#, fuzzy -msgid "# Use ACTUAL spindle velocity from spindle encoder" -msgstr "# **** Use ACTUAL spindle velocity from spindle encoder" - -#: src/emc/usr_intf/pncconf/pncconf.py:2071 -msgid "# spindle-velocity bounces around so we filter it with lowpass" +#: src/emc/usr_intf/pncconf/pncconf.glade:475 +msgid "Recommend servo period: 1000000" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2072 -#, fuzzy +#: src/emc/usr_intf/pncconf/pncconf.glade:494 msgid "" -"# spindle-velocity is signed so we use absolute component to remove sign" +" Test Base\n" +"Period Jitter " msgstr "" -"# **** spindle-velocity is signed so we use absolute compoent to remove sign" -#: src/emc/usr_intf/pncconf/pncconf.py:2073 -#, fuzzy -msgid "# ACTUAL velocity is in RPS not RPM so we scale it." -msgstr "# **** ACTUAL velocity is in RPS not RPM so we scale it." +#: src/emc/usr_intf/pncconf/pncconf.glade:519 +msgid "Computer Response Time" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2082 +#: src/emc/usr_intf/pncconf/pncconf.glade:561 #, fuzzy -msgid "" -"# Use COMMANDED spindle velocity from LinuxCNC because no spindle encoder " -"was specified" -msgstr "" -"# **** Use COMMANDED spindle velocity from EMC because no spindle encoder " -"was specified" +msgid "Mesa0 PCI / Parport Card:" +msgstr "Адрес порта MESA:" -#: src/emc/usr_intf/pncconf/pncconf.py:2083 +#: src/emc/usr_intf/pncconf/pncconf.glade:571 #, fuzzy -msgid "" -"# COMMANDED velocity is signed so we use absolute component to remove sign" -msgstr "" -"# **** COMANDED velocity is signed so we use absolute component (abs.0) to " -"remove sign" +msgid "Mesa1 PCI / Parport Card:" +msgstr "Адрес порта MESA:" -#: src/emc/usr_intf/pncconf/pncconf.py:2727 -msgid "# connect miscellaneous signals" +#: src/emc/usr_intf/pncconf/pncconf.glade:584 +msgid "First Parport Address:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2730 -msgid "# ---HALUI signals---" +#: src/emc/usr_intf/pncconf/pncconf.glade:597 +msgid "Second Parport Address:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2749 -msgid "# ---charge pump signals---" +#: src/emc/usr_intf/pncconf/pncconf.glade:612 +msgid "Third Parport Address:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2753 -msgid "# ---coolant signals---" +#: src/emc/usr_intf/pncconf/pncconf.glade:635 +#: src/emc/usr_intf/pncconf/pncconf.glade:643 +msgid "" +"5i20\n" +"5i23\n" +"5i22" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2758 -msgid "# ---probe signal---" +#: src/emc/usr_intf/pncconf/pncconf.glade:716 +#: src/emc/usr_intf/pncconf/pncconf.glade:728 +#: src/emc/usr_intf/pncconf/pncconf.glade:741 +msgid "" +"In\n" +"Out" msgstr "" +"Вход\n" +"Выход" -#: src/emc/usr_intf/pncconf/pncconf.py:2763 -msgid "# ---jog button signals---" +#: src/emc/usr_intf/pncconf/pncconf.glade:804 +msgid "" +"Add-on PCI\n" +" Parport\n" +" Address \n" +" Search" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2768 -msgid "# ---USB device jog button signals---" +#: src/emc/usr_intf/pncconf/pncconf.glade:829 +msgid "I/O Control Ports/ Boards" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2803 -#: src/emc/usr_intf/pncconf/pncconf.py:2825 -msgid "# ---mpg signals---" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:878 +msgid "Axis" +msgstr "Ось " -#: src/emc/usr_intf/pncconf/pncconf.py:2971 -msgid "# ---motion control signals---" +#: src/emc/usr_intf/pncconf/pncconf.glade:893 +msgid "TKLinuxCNC" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2976 -msgid "# ---digital in / out signals---" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:907 +msgid "Mini" +msgstr "Мини" -#: src/emc/usr_intf/pncconf/pncconf.py:2986 -msgid "# ---estop signals---" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:921 +#: src/emc/usr_intf/pncconf/pncconf.glade:6656 +#, fuzzy +msgid "Touchy" +msgstr "Задать отступ" -#: src/emc/usr_intf/pncconf/pncconf.py:3005 -msgid "# ---manual tool change signals---" +#: src/emc/usr_intf/pncconf/pncconf.glade:938 +msgid "GUI frontend list" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3014 -msgid "# ---toolchange signals for custom tool changer---" +#: src/emc/usr_intf/pncconf/pncconf.glade:973 +msgid "External Controls" +msgstr "внешнее управление" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1014 +msgid "Add device rule" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3036 -msgid "# --- Classicladder signals for Z axis Auto touch off program---" +#: src/emc/usr_intf/pncconf/pncconf.glade:1027 +msgid "Test device" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3055 -msgid "# These files are loaded post gladeVCP, in the order they appear" +#: src/emc/usr_intf/pncconf/pncconf.glade:1041 +msgid "Search for device rules" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3069 -#: src/emc/usr_intf/pncconf/pncconf.py:3136 +#: src/emc/usr_intf/pncconf/pncconf.glade:1062 #, fuzzy -msgid "# _DO NOT_ include your HAL commands here." -msgstr "# Include your customized HAL commands here" +msgid "Device Name:" +msgstr "Название станка:" -#: src/emc/usr_intf/pncconf/pncconf.py:3070 -msgid "# Put custom HAL commands in custom_gvcp.hal" +#: src/emc/usr_intf/pncconf/pncconf.glade:1125 +msgid "A +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3073 -#, fuzzy -msgid "# **** Setup of spindle speed display using gladevcp ****" +#: src/emc/usr_intf/pncconf/pncconf.glade:1135 +msgid "A -" msgstr "" -"# **** Setup of spindle speed and tool number display using pyvcp -START ****" -#: src/emc/usr_intf/pncconf/pncconf.py:3082 -msgid "# **** Setup GLADE MDI buttons ****" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1169 +#: src/emc/usr_intf/pncconf/pncconf.glade:1181 +#: src/emc/usr_intf/pncconf/pncconf.glade:1191 +#: src/emc/usr_intf/pncconf/pncconf.glade:1246 +#: src/emc/usr_intf/pncconf/pncconf.glade:1759 +msgid "mm/min " +msgstr "мм/мин" -#: src/emc/usr_intf/pncconf/pncconf.py:3095 -msgid "" -"# **** Z axis touch-off button - requires the touch-off classicladder " -"program ****" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1269 +#, fuzzy +msgid " ab)" +msgstr "b)" -#: src/emc/usr_intf/pncconf/pncconf.py:3125 -msgid "# These files are loaded post GUI, in the order they appear" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1282 +#: src/emc/usr_intf/pncconf/pncconf.glade:2493 +#: src/emc/usr_intf/pncconf/pncconf.glade:2927 +#: src/emc/usr_intf/pncconf/pncconf.glade:3808 +#: src/emc/usr_intf/pncconf/pncconf.glade:4689 +msgid " b)" +msgstr "b)" -#: src/emc/usr_intf/pncconf/pncconf.py:3137 -msgid "# Put custom HAL commands in custom_postgui.hal" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1293 +#: src/emc/usr_intf/pncconf/pncconf.glade:2482 +#: src/emc/usr_intf/pncconf/pncconf.glade:2916 +#: src/emc/usr_intf/pncconf/pncconf.glade:3797 +#: src/emc/usr_intf/pncconf/pncconf.glade:4678 +msgid " a)" +msgstr " a)" -#: src/emc/usr_intf/pncconf/pncconf.py:3138 -#, fuzzy -msgid "# The commands in this file are run after the GUI loads" +#: src/emc/usr_intf/pncconf/pncconf.glade:1305 +#: src/emc/usr_intf/pncconf/pncconf.glade:2385 +#: src/emc/usr_intf/pncconf/pncconf.glade:2867 +#: src/emc/usr_intf/pncconf/pncconf.glade:3748 +#: src/emc/usr_intf/pncconf/pncconf.glade:4629 +msgid "default" msgstr "" -"# The commands in this file are run after the AXIS GUI (including PyVCP " -"panel) starts" -#: src/emc/usr_intf/pncconf/pncconf.py:3148 +#: src/emc/usr_intf/pncconf/pncconf.glade:1336 +#: src/emc/usr_intf/pncconf/pncconf.glade:1476 #, fuzzy -msgid "# **** Setup of spindle speed display using pyvcp -END ****" -msgstr "" -"# **** Setup of spindle speed and tool number display using pyvcp -START ****" +msgid "Jog Speed select A" +msgstr "Скорость перемещений" -#: src/emc/usr_intf/pncconf/pncconf.py:3160 -msgid "# This file will not be overwritten when you run PNCconf again" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1348 +#, fuzzy +msgid "X +" +msgstr "Двигать X +" -#: src/emc/usr_intf/pncconf/pncconf.py:3166 -msgid "# These commands are required for Touchy GUI" +#: src/emc/usr_intf/pncconf/pncconf.glade:1354 +msgid "Y +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3218 -#, python-format -msgid "Generated by PNCconf at %s" -msgstr "Сделано PNCconf в %s" - -#: src/emc/usr_intf/pncconf/pncconf.py:3230 -msgid "configures LinuxCNC as:\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1364 +msgid "Z +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3231 -msgid "type CNC\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1374 +#, fuzzy +msgid "X -" +msgstr "Двигать X -" -#: src/emc/usr_intf/pncconf/pncconf.py:3232 -msgid "will be used as the frontend display" +#: src/emc/usr_intf/pncconf/pncconf.glade:1384 +msgid "Y -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3241 -msgid " connector" +#: src/emc/usr_intf/pncconf/pncconf.glade:1396 +msgid "Z -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3253 -msgid "invrt" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1500 +#, fuzzy +msgid "Digital Control" +msgstr "Цифровой выход 0" -#: src/emc/usr_intf/pncconf/pncconf.py:3262 -#, python-format -msgid "%(name)s Parport" +#: src/emc/usr_intf/pncconf/pncconf.glade:1593 +#: src/emc/usr_intf/gscreen/gscreen.glade:502 +msgid "A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3267 -#: src/emc/usr_intf/pncconf/pncconf.py:3275 -msgid "-> inverted" +#: src/emc/usr_intf/pncconf/pncconf.glade:1603 +#: src/emc/usr_intf/gscreen/gscreen.glade:374 +msgid "Z" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3269 -#, python-format -msgid "pin# %(pinnum)d is connected to input signal:'%(data)s' %(mesag)s" +#: src/emc/usr_intf/pncconf/pncconf.glade:1613 +#: src/emc/usr_intf/pncconf/pncconf.glade:6134 +#: src/emc/usr_intf/pncconf/pncconf.glade:6458 +#: src/emc/usr_intf/pncconf/pncconf.glade:6860 +#: src/emc/usr_intf/pncconf/pncconf.glade:7235 +#: src/emc/usr_intf/gscreen/gscreen.glade:244 +msgid "Y" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3277 -#, python-format -msgid "pin# %(pinnum)d is connected to output signal:'%(data)s' %(mesag)s" +#: src/emc/usr_intf/pncconf/pncconf.glade:1623 +msgid "X " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3455 +#: src/emc/usr_intf/pncconf/pncconf.glade:1631 #, fuzzy -msgid "Desktop Launcher for LinuxCNC config made by PNCconf" -msgstr "Desktop Launcher for EMC config made by Stepconf" - -#: src/emc/usr_intf/pncconf/pncconf.py:3725 -#, fuzzy -msgid "Spindle Motor/Encoder Configuration" -msgstr "Конфигурация шпинделя" - -#: src/emc/usr_intf/pncconf/pncconf.py:3727 -#, python-format -msgid "%s Axis Motor/Encoder Configuration" -msgstr "" +msgid "Analog Control" +msgstr "Ручное управление" -#: src/emc/usr_intf/pncconf/pncconf.py:3756 -#, python-format -msgid "%s Parallel Port Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:1657 +#: src/emc/usr_intf/pncconf/pncconf.glade:1788 +#: src/emc/usr_intf/pncconf/pncconf.glade:2698 +#: src/emc/usr_intf/pncconf/pncconf.glade:3579 +#: src/emc/usr_intf/pncconf/pncconf.glade:4460 +#: src/emc/usr_intf/pncconf/pncconf.glade:5341 +#: src/emc/usr_intf/pncconf/pncconf.glade:64300 +msgid "Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3780 -#, python-format -msgid "%s I/0 Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:1675 +msgid "USB Joystick Jogging " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4001 -msgid "Quit PNCconfig and discard changes?" +#: src/emc/usr_intf/pncconf/pncconf.glade:1719 +msgid "shared buttons for all axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4042 -#: src/emc/usr_intf/pncconf/pncconf.glade:65849 -msgid "Help Pages" -msgstr "Страницы помощи" - -#: src/emc/usr_intf/pncconf/pncconf.py:4047 -msgid "Help page is unavailable\n" -msgstr "Помощь не доступна\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1732 +msgid "buttons for each axis" +msgstr "кнопки на каждой оси" -#: src/emc/usr_intf/pncconf/pncconf.py:4054 -msgid "" -"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " -"of external hardware is unavailable." +#: src/emc/usr_intf/pncconf/pncconf.glade:1806 +msgid "External Button Jogging" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4059 -#, python-format -msgid "" -"You are using a realtime version of LinuxCNC but didn't load a realtime " -"kernel so testing / tuning of external hardware is unavailable.\n" -" This is probably because you updated the OS and it doesn't load the RTAI " -"kernel anymore\n" -" You are using the %(actual)s kernel instead of %(needed)s" +#: src/emc/usr_intf/pncconf/pncconf.glade:1847 +msgid "Shared MPG / selectable axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4079 -#, python-format -msgid "" -"You are have no hostmot2 firmware downloaded in folder:\n" -"%s\n" -"PNCconf will use sample firmware data\n" -"live testing will not be possible" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1860 +msgid "Mpg per axis" +msgstr "Шаговых генераторов на ось" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1875 +msgid "selectable MPG increments" +msgstr "Выбираемые скорости генератора" -#: src/emc/usr_intf/pncconf/pncconf.py:4093 +#: src/emc/usr_intf/pncconf/pncconf.glade:1940 +#: src/emc/usr_intf/pncconf/pncconf.glade:3379 +#: src/emc/usr_intf/pncconf/pncconf.glade:4260 +#: src/emc/usr_intf/pncconf/pncconf.glade:5141 #, fuzzy -msgid "LinuxCNC 'PNCconf' configuration files" -msgstr "EMC2 'stepconf' configuration files" +msgid " d)" +msgstr "b)" -#: src/emc/usr_intf/pncconf/pncconf.py:4123 -msgid "" -"It seems data in this file is from too old of a version of PNCConf to " -"continue.\n" -"." +#: src/emc/usr_intf/pncconf/pncconf.glade:1952 +#: src/emc/usr_intf/pncconf/pncconf.glade:3340 +#: src/emc/usr_intf/pncconf/pncconf.glade:4221 +#: src/emc/usr_intf/pncconf/pncconf.glade:5102 +msgid " abcd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4130 -#: src/emc/usr_intf/pncconf/pncconf.py:4228 -#, python-format -msgid "Point and click configuration - %s.pncconf " -msgstr "Легкое конфигурирование - %s.pncconf" - -#: src/emc/usr_intf/pncconf/pncconf.py:4250 -msgid "" -"You need to designate a parport and/or mesa I/O device before continuing." +#: src/emc/usr_intf/pncconf/pncconf.glade:1965 +#: src/emc/usr_intf/pncconf/pncconf.glade:3353 +#: src/emc/usr_intf/pncconf/pncconf.glade:4234 +#: src/emc/usr_intf/pncconf/pncconf.glade:5115 +msgid " bcd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4309 -msgid "" -"You Have choosen to re-edit the current config, so you can not go to the new/" -"modify page.\n" -" Quit and reload PNCconf if you wish to build a new config." +#: src/emc/usr_intf/pncconf/pncconf.glade:1978 +#: src/emc/usr_intf/pncconf/pncconf.glade:3366 +#: src/emc/usr_intf/pncconf/pncconf.glade:4247 +#: src/emc/usr_intf/pncconf/pncconf.glade:5128 +msgid " acd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4313 -msgid "" -"If you can not go to the new/modify page your current data will be lost.\n" -"Ok to reset data and start a new configuration?" +#: src/emc/usr_intf/pncconf/pncconf.glade:1991 +#: src/emc/usr_intf/pncconf/pncconf.glade:3430 +#: src/emc/usr_intf/pncconf/pncconf.glade:4311 +#: src/emc/usr_intf/pncconf/pncconf.glade:5192 +msgid " cd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4594 -msgid "USB device Info Search" +#: src/emc/usr_intf/pncconf/pncconf.glade:2004 +#: src/emc/usr_intf/pncconf/pncconf.glade:3404 +#: src/emc/usr_intf/pncconf/pncconf.glade:4285 +#: src/emc/usr_intf/pncconf/pncconf.glade:5166 +msgid " bd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4608 -#, fuzzy -msgid "USB device page is unavailable\n" -msgstr "Помощь не доступна\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2017 +#: src/emc/usr_intf/pncconf/pncconf.glade:3391 +#: src/emc/usr_intf/pncconf/pncconf.glade:4272 +#: src/emc/usr_intf/pncconf/pncconf.glade:5153 +msgid " ad)" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4673 -#, fuzzy -msgid "Pin names are unavailable\n" -msgstr "Помощь не доступна\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2030 +#: src/emc/usr_intf/pncconf/pncconf.glade:2514 +#: src/emc/usr_intf/pncconf/pncconf.glade:3059 +#: src/emc/usr_intf/pncconf/pncconf.glade:3940 +#: src/emc/usr_intf/pncconf/pncconf.glade:4821 +msgid " abc)" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4695 -#, fuzzy -msgid "Device names are unavailable\n" -msgstr "Помощь не доступна\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2041 +#: src/emc/usr_intf/pncconf/pncconf.glade:3026 +#: src/emc/usr_intf/pncconf/pncconf.glade:3907 +#: src/emc/usr_intf/pncconf/pncconf.glade:4788 +msgid " c)" +msgstr " c)" -#: src/emc/usr_intf/pncconf/pncconf.py:4698 -msgid "No Pncconf made device rules were found\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2207 +#: src/emc/usr_intf/pncconf/pncconf.glade:3049 +#: src/emc/usr_intf/pncconf/pncconf.glade:3930 +#: src/emc/usr_intf/pncconf/pncconf.glade:4811 +msgid " bc)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4822 -msgid "" -"OK to replace existing glade panel ?\n" -"It will be renamed and added to 'backups' folder.\n" -" Clicking 'existing custom program' will aviod this warning. " +#: src/emc/usr_intf/pncconf/pncconf.glade:2217 +#: src/emc/usr_intf/pncconf/pncconf.glade:3038 +#: src/emc/usr_intf/pncconf/pncconf.glade:3919 +#: src/emc/usr_intf/pncconf/pncconf.glade:4800 +msgid " ac)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4827 -#, fuzzy -msgid "" -"OK to replace existing custom pyvcp panel?\n" -"Existing pyvcp-panel.xml will be renamed and added to 'backups' folder\n" -"Clicking 'existing custom program' will aviod this warning. " +#: src/emc/usr_intf/pncconf/pncconf.glade:2504 +#: src/emc/usr_intf/pncconf/pncconf.glade:2938 +#: src/emc/usr_intf/pncconf/pncconf.glade:3819 +#: src/emc/usr_intf/pncconf/pncconf.glade:4700 +msgid " ab)" msgstr "" -"OK to replace existing custom ladder program?\n" -"Existing Custom.clp will be renamed custom_backup.clp.\n" -"Any existing file named -custom_backup.clp- will be lost. " -#: src/emc/usr_intf/pncconf/pncconf.py:5250 -msgid "" -"You need to configure the mesa0 page.\n" -" Choose the board type, firmware, component amounts and press 'Accept " -"component changes' button'" +#: src/emc/usr_intf/pncconf/pncconf.glade:2577 +msgid "ignore all inputs false" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5254 -msgid "" -"The chosen Mesa0 board is different from the current displayed.\n" -"please press 'Accept component changes' button'" +#: src/emc/usr_intf/pncconf/pncconf.glade:2592 +msgid "use gray code" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5297 -msgid "" -"You need to configure the mesa1 page.\n" -" Choose the board type, firmware, component amounts and press 'Accept " -"component changes' button'" +#: src/emc/usr_intf/pncconf/pncconf.glade:2607 +#: src/emc/usr_intf/pncconf/pncconf.glade:3489 +#: src/emc/usr_intf/pncconf/pncconf.glade:4356 +#: src/emc/usr_intf/pncconf/pncconf.glade:5237 +msgid "use debounce" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5301 -msgid "" -"The chosen Mesa1 board is different from the current displayed.\n" -"please press 'Accept component changes' button'" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:2658 +#: src/emc/usr_intf/pncconf/pncconf.glade:3453 +#: src/emc/usr_intf/pncconf/pncconf.glade:4334 +#: src/emc/usr_intf/pncconf/pncconf.glade:5215 +#, fuzzy +msgid "Mux options" +msgstr "Motion" -#: src/emc/usr_intf/pncconf/pncconf.py:5315 -msgid "" -"Do to technical reasons this test panel can be loaded only once without " -"reloading pncconf.You also will not be able to do any other testing untill " -"you reload pncconf and quite possibly open a terminal and type 'halrun -U' I " -"hesitate to even allow it's use but at times it's very useful.\n" -"Do you wish to continue the test?" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:2672 +#, fuzzy +msgid "increments" +msgstr "увеличить" -#: src/emc/usr_intf/pncconf/pncconf.py:6699 -msgid "First Parallel Port set for OUTPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:2716 +msgid "External MPG Jogging" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6701 -msgid "First Parallel Port set for INPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:2747 +#: src/emc/usr_intf/pncconf/pncconf.glade:3628 +#: src/emc/usr_intf/pncconf/pncconf.glade:4509 +msgid "Use MPG " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6725 -msgid "Second Parallel Port set for OUTPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:2760 +#: src/emc/usr_intf/pncconf/pncconf.glade:3641 +#: src/emc/usr_intf/pncconf/pncconf.glade:4522 +msgid "use switches" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6727 -msgid "Second Parallel Port set for INPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:3417 +#: src/emc/usr_intf/pncconf/pncconf.glade:4298 +#: src/emc/usr_intf/pncconf/pncconf.glade:5179 +msgid " abd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6739 -msgid "Third Parallel Port set for OUTPUT" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:3504 +#: src/emc/usr_intf/pncconf/pncconf.glade:4371 +#: src/emc/usr_intf/pncconf/pncconf.glade:5252 +#, fuzzy +msgid "use graycode" +msgstr "Неиспользованный енкодер" -#: src/emc/usr_intf/pncconf/pncconf.py:6741 -msgid "Third Parallel Port set for INPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:3519 +#: src/emc/usr_intf/pncconf/pncconf.glade:4386 +#: src/emc/usr_intf/pncconf/pncconf.glade:5267 +msgid "ignore all-inputs false" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6866 -msgid "You can not have both steppers and pwm signals for spindle control\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:3563 +#: src/emc/usr_intf/pncconf/pncconf.glade:4444 +#: src/emc/usr_intf/pncconf/pncconf.glade:5325 +#, fuzzy +msgid "Increments" +msgstr "Увеличить" + +#: src/emc/usr_intf/pncconf/pncconf.glade:3597 +#, fuzzy +msgid "External Feed Override" +msgstr "Изменить подачу:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:4478 +#, fuzzy +msgid "Max Velocity Override" +msgstr "Изменить максимальную подачу:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:5359 +#, fuzzy +msgid "External Spindle Override" +msgstr "Изменить обороты шпинделя:" -#: src/emc/usr_intf/pncconf/pncconf.py:6870 -#, python-format -msgid "You forgot to designate a stepper or pwm signal for axis %s\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5387 +msgid "GUI configuration" +msgstr "Конфигурация окон" -#: src/emc/usr_intf/pncconf/pncconf.py:6873 -#, python-format -msgid "You forgot to designate an encoder /resolver signal for axis %s servo\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:5406 +msgid "Frontend" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6876 -#, python-format -msgid "You forgot to designate a pwm signal or stepper signal for axis %s\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5566 +msgid "Position_offset" +msgstr "Отступ позиции" -#: src/emc/usr_intf/pncconf/pncconf.py:6879 -#, python-format -msgid "You can not have both steppers and pwm signals for axis %s\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5573 +msgid "Position_feedback" +msgstr "Обратная связь по позиции" -#: src/emc/usr_intf/pncconf/pncconf.py:6887 -msgid "Touchy require an external cycle start signal\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5584 +msgid "Max Spindle Override " +msgstr "Максимальное изменение шпинделя" -#: src/emc/usr_intf/pncconf/pncconf.py:6890 -msgid "Touchy require an external abort signal\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5606 +msgid "Min Spindle Override" +msgstr "Минимальное изменение шпинделя" -#: src/emc/usr_intf/pncconf/pncconf.py:6893 -msgid "Touchy require an external single-step signal\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5665 +msgid "Max Feed Override" +msgstr "Изменить максимальную подачу:" -#: src/emc/usr_intf/pncconf/pncconf.py:6896 +#: src/emc/usr_intf/pncconf/pncconf.glade:5702 msgid "" -"Touchy require an external multi handwheel MPG encoder signal on the mesa " -"page\n" +"Machine\n" +"Relative\n" msgstr "" +"Станочная\n" +"Относительная\n" -#: src/emc/usr_intf/pncconf/pncconf.py:6899 +#: src/emc/usr_intf/pncconf/pncconf.glade:5714 msgid "" -"Touchy require 'external mpg jogging' to be selected on the external control " -"page\n" +"Commanded\n" +"Actual" msgstr "" +"Заданная\n" +"Настоящая" -#: src/emc/usr_intf/pncconf/pncconf.py:6902 -msgid "" -"Touchy require the external mpg to be in 'shared mpg' mode on the external " -"controls page\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:5729 +msgid "General GUI Defaults" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6905 -msgid "" -"Touchy require selectable increments to be unchecked on the external " -"controls page\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5811 +msgid "Default linear velocity " +msgstr "Скорость по умолчанию" -#: src/emc/usr_intf/pncconf/pncconf.py:6909 -msgid "" -"The 7i29 daughter board requires PWM type generators and a PWM base " -"frequency of 20 khz\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5818 +msgid "Min linear velocity" +msgstr "Минимальная скорость" -#: src/emc/usr_intf/pncconf/pncconf.py:6912 -msgid "" -"The 7i30 daughter board requires PWM type generators and a PWM base " -"frequency of 20 khz\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5829 +msgid "Max linear velocity" +msgstr "Максимальная скорость" -#: src/emc/usr_intf/pncconf/pncconf.py:6915 -msgid "" -"The 7i33 daughter board requires PDM type generators and a PDM base " -"frequency of 6 Mhz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:5879 +#: src/emc/usr_intf/pncconf/pncconf.glade:6085 +#: src/emc/usr_intf/pncconf/pncconf.glade:6097 +msgid "mm / min" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6918 -msgid "" -"The 7i40 daughter board requires PWM type generators and a PWM base " -"frequency of 50 khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:5892 +msgid "Default Angular velocity " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6921 -msgid "" -"The 7i48 daughter board requires UDM type generators and a PWM base " -"frequency of 24 khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:5926 +msgid "gedit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7148 -msgid "Gearbox Reduction Ratio" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5939 +msgid "Min Angular velocity" +msgstr "Максимальная скорость вращения:" -#: src/emc/usr_intf/pncconf/pncconf.py:7151 -msgid "Reduction Ratio" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5966 +msgid "Increments " +msgstr "Увеличить" -#: src/emc/usr_intf/pncconf/pncconf.py:7154 -msgid "Leadscrew Pitch" +#: src/emc/usr_intf/pncconf/pncconf.glade:5977 +msgid "5mm 1mm .5mm .1mm .05mm .01mm .005mm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7157 -#: src/emc/usr_intf/pncconf/pncconf.glade:66327 -#: src/emc/usr_intf/pncconf/pncconf.glade:66622 -msgid "Leadscrew TPI" +#: src/emc/usr_intf/pncconf/pncconf.glade:5990 +msgid "Max Angular velocity" +msgstr "Максимальная скорость вращения:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:6017 +msgid "Axis Geometry" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7161 -#: src/emc/usr_intf/pncconf/pncconf.py:7162 -msgid "(" +#: src/emc/usr_intf/pncconf/pncconf.glade:6028 +msgid "xyzabc" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7163 -#: src/emc/usr_intf/pncconf/pncconf.py:7173 -#: src/emc/usr_intf/pncconf/pncconf.py:7174 -#: src/emc/usr_intf/pncconf/pncconf.py:7175 -#, fuzzy -msgid " / min" +#: src/emc/usr_intf/pncconf/pncconf.glade:6040 +#: src/emc/usr_intf/pncconf/pncconf.glade:6052 +#: src/emc/usr_intf/pncconf/pncconf.glade:6064 +msgid "Deg / min" msgstr "градусы/мин" -#: src/emc/usr_intf/pncconf/pncconf.py:7164 -#, fuzzy -msgid " / sec²" -msgstr "мм/сек²" - -#: src/emc/usr_intf/pncconf/pncconf.py:7167 -#, fuzzy -msgid " / Step" -msgstr "мм/шаг" - -#: src/emc/usr_intf/pncconf/pncconf.py:7168 -#, fuzzy -msgid "Steps / " -msgstr "шаг/мм" - -#: src/emc/usr_intf/pncconf/pncconf.py:7170 -#, fuzzy -msgid " / encoder pulse" -msgstr "Множитель энкодера:" +#: src/emc/usr_intf/pncconf/pncconf.glade:6113 +#: src/emc/usr_intf/pncconf/pncconf.glade:6484 +#: src/emc/usr_intf/pncconf/pncconf.glade:6839 +#: src/emc/usr_intf/pncconf/pncconf.glade:7262 +msgid "size" +msgstr "Размер" -#: src/emc/usr_intf/pncconf/pncconf.py:7171 -#, fuzzy -msgid "Encoder pulses / " -msgstr "Шаги енкодера за оборот" +#: src/emc/usr_intf/pncconf/pncconf.glade:6122 +#: src/emc/usr_intf/pncconf/pncconf.glade:6471 +#: src/emc/usr_intf/pncconf/pncconf.glade:6848 +#: src/emc/usr_intf/pncconf/pncconf.glade:7248 +msgid "Position" +msgstr "Позиция" -#: src/emc/usr_intf/pncconf/pncconf.py:7482 -msgid "Axis Scale Calculation" +#: src/emc/usr_intf/pncconf/pncconf.glade:6159 +#: src/emc/usr_intf/pncconf/pncconf.glade:6433 +#: src/emc/usr_intf/pncconf/pncconf.glade:6885 +#: src/emc/usr_intf/pncconf/pncconf.glade:7210 +#: src/emc/usr_intf/gscreen/gscreen.glade:116 +msgid "X" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7785 -msgid "You need to designate an E-stop input pin for this ladder program." +#: src/emc/usr_intf/pncconf/pncconf.glade:6171 +#: src/emc/usr_intf/pncconf/pncconf.glade:6423 +#: src/emc/usr_intf/pncconf/pncconf.glade:6897 +#: src/emc/usr_intf/pncconf/pncconf.glade:7200 +#: src/emc/usr_intf/gscreen/gscreen.glade:1142 +msgid "W" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7797 -#, fuzzy -msgid "You need to designate a probe input pin for this ladder program." +#: src/emc/usr_intf/pncconf/pncconf.glade:6205 +#: src/emc/usr_intf/pncconf/pncconf.glade:6389 +#: src/emc/usr_intf/pncconf/pncconf.glade:6931 +#: src/emc/usr_intf/pncconf/pncconf.glade:7166 +msgid "H" msgstr "" -"Вам нужно определить вход для ABOCT на странице настройки параллельного " -"порта для работы этой программы" -#: src/emc/usr_intf/pncconf/pncconf.py:7808 -#, fuzzy -msgid "" -"OK to replace existing custom ladder program?\n" -"Existing Custom.clp will be renamed custom_backup.clp.\n" -"Any existing file named -custom_backup.clp- will be lost.Selecting 'existing " -"ladder program' will avoid this warning" +#: src/emc/usr_intf/pncconf/pncconf.glade:6227 +msgid "Force Axis to Maximize" msgstr "" -"OK to replace existing custom ladder program?\n" -"Existing Custom.clp will be renamed custom_backup.clp.\n" -"Any existing file named -custom_backup.clp- will be lost. " -#: src/emc/usr_intf/pncconf/pncconf.py:8019 -msgid "Do you wish to continue to edit this configuration." -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:6249 +msgid "AXIS defaults" +msgstr "умолчания AXIS" -#: src/emc/usr_intf/pncconf/pncconf.py:8058 -msgid "PCI search page is unavailable\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:6365 +msgid "Force Touchy to Maximize after positioning" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8176 -msgid "" -"You specified there is an existing gladefile, But there is not one in the " -"machine-named folder.." +#: src/emc/usr_intf/pncconf/pncconf.glade:6501 +#: src/emc/usr_intf/pncconf/pncconf.glade:7333 +msgid "Follow System Theme\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8495 -msgid "Servo tuning is not avaiable in PNCconf yet\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:6514 +#: src/emc/usr_intf/pncconf/pncconf.glade:7347 +msgid "GTK Theme" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8500 -msgid "degrees" -msgstr "градусы" - -#: src/emc/usr_intf/pncconf/pncconf.py:8501 -msgid "degrees / minute" +#: src/emc/usr_intf/pncconf/pncconf.glade:6540 +#: src/emc/usr_intf/gscreen/gscreen.glade:1857 +msgid "Absolute Text Color" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8502 -msgid "degrees / second²" -msgstr "градусы/сек²" +#: src/emc/usr_intf/pncconf/pncconf.glade:6603 +#, fuzzy +msgid "Absolute Textcolor" +msgstr "Абсолютный" -#: src/emc/usr_intf/pncconf/pncconf.py:8504 +#: src/emc/usr_intf/pncconf/pncconf.glade:6616 #, fuzzy -msgid "revolutions" -msgstr "Разрешение:" +msgid "Relative Textcolor" +msgstr "Относительная позиция" -#: src/emc/usr_intf/pncconf/pncconf.py:8505 -msgid "rpm" +#: src/emc/usr_intf/pncconf/pncconf.glade:6629 +msgid "DTG Textcolor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8506 -#, fuzzy -msgid "revs / second²" -msgstr "градусы/сек²" - -#: src/emc/usr_intf/pncconf/pncconf.py:8509 -#: src/emc/usr_intf/pncconf/pncconf.glade:58295 -#: src/emc/usr_intf/pncconf/pncconf.glade:58479 -#: src/emc/usr_intf/pncconf/pncconf.glade:58576 -msgid "mm / minute" -msgstr "мм/мин" +#: src/emc/usr_intf/pncconf/pncconf.glade:6642 +msgid "Error Textcolor" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8510 -msgid "mm / second²" -msgstr "мм/сек²" +#: src/emc/usr_intf/pncconf/pncconf.glade:6677 +#, fuzzy +msgid "GUI Options" +msgstr "Опции PLC" -#: src/emc/usr_intf/pncconf/pncconf.py:8513 -msgid "inches / minute" +#: src/emc/usr_intf/pncconf/pncconf.glade:6708 +msgid "Virtual Control Panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8514 -msgid "inches / second²" +#: src/emc/usr_intf/pncconf/pncconf.glade:6783 +msgid "XYZ buttons (uses Halui)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8646 -#, python-format -msgid "%s Axis Tune" +#: src/emc/usr_intf/pncconf/pncconf.glade:6954 +msgid "Geometry Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8810 -msgid "" -" You must designate a ENCODER / RESOLVER signal and an ANALOG SPINDLE signal " -"for this axis test" +#: src/emc/usr_intf/pncconf/pncconf.glade:7033 +msgid "Pyvcp Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8814 -msgid "" -" You must designate a ENCODER / RESOLVER signal and a PWM signal for this " -"axis test" +#: src/emc/usr_intf/pncconf/pncconf.glade:7105 +msgid "Sample display " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8 -#, fuzzy -msgid "LinuxCNC Point And Click Configuration" -msgstr "Легкое конфигурирование EMC2 " +#: src/emc/usr_intf/pncconf/pncconf.glade:7272 +msgid "Standalone Panel" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:23 -#, fuzzy -msgid "LinuxCNC Configuration Wizard Beta 1 Version" -msgstr "Мастер конфигураций EMC (альфа)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7289 +msgid "Rightside Embeded" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:24 -msgid "" -"\tThis program creates configuration \n" -" files for \"Closed Loop Servo\" \n" -"\t \t and hardware stepper\n" -" \tmachines" +#: src/emc/usr_intf/pncconf/pncconf.glade:7305 +msgid "Center Tab Embeded" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:34 -msgid "Create or Edit" +#: src/emc/usr_intf/pncconf/pncconf.glade:7320 +msgid "Force Maximize" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:52 -msgid "Create a new configuration" -msgstr "Создать новую конфигурацию" +#: src/emc/usr_intf/pncconf/pncconf.glade:7359 +#, fuzzy +msgid "Display Options" +msgstr "Показать дюймы" -#: src/emc/usr_intf/pncconf/pncconf.glade:118 -msgid "Create a desktop shortcut (symlink) to configuration files." +#: src/emc/usr_intf/pncconf/pncconf.glade:7409 +msgid "Max RPM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:135 -msgid "Create a desktop launcher to start LinuxCNC with this configuration." -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:7422 +#, fuzzy +msgid "Spindle Speed Indicator" +msgstr "Обороты шпинделя" -#: src/emc/usr_intf/pncconf/pncconf.glade:214 -msgid "Machine Name:" -msgstr "Название станка:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7434 +#, fuzzy +msgid "Spindle At Speed LED" +msgstr "Обороты шпинделя" -#: src/emc/usr_intf/pncconf/pncconf.glade:281 -msgid "Axis configuration:" -msgstr "Конфигурация осей:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7446 +#, fuzzy +msgid "Zero X Button" +msgstr "Левая кнопка" -#: src/emc/usr_intf/pncconf/pncconf.glade:316 -msgid "Machine units:" -msgstr "Единицы станка:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7458 +#, fuzzy +msgid "Zero Y Button" +msgstr "Левая кнопка" -#: src/emc/usr_intf/pncconf/pncconf.glade:355 -msgid "Machine Basics" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:7470 +#, fuzzy +msgid "Zero Z Button" +msgstr "Левая кнопка" + +#: src/emc/usr_intf/pncconf/pncconf.glade:7482 +#, fuzzy +msgid "Zero A Button" +msgstr "Левая кнопка" -#: src/emc/usr_intf/pncconf/pncconf.glade:405 -msgid "Recommend servo period: 1000000" +#: src/emc/usr_intf/pncconf/pncconf.glade:7494 +msgid "Requires Classicladder touch-off program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:431 -msgid "Actual Servo Period: " +#: src/emc/usr_intf/pncconf/pncconf.glade:7495 +msgid "Auto Z Touch Off Button" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:486 -msgid "" -" Test Base\n" -"Period Jitter " -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:7508 +#, fuzzy +msgid "Sample Options" +msgstr "Пример устнавок Pyvcp" -#: src/emc/usr_intf/pncconf/pncconf.glade:511 -msgid "Computer Response Time" +#: src/emc/usr_intf/pncconf/pncconf.glade:7582 +msgid "Gladevcp Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:553 -#, fuzzy -msgid "Mesa0 PCI / Parport Card:" -msgstr "Адрес порта MESA:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:563 +#: src/emc/usr_intf/pncconf/pncconf.glade:7605 #, fuzzy -msgid "Mesa1 PCI / Parport Card:" -msgstr "Адрес порта MESA:" +msgid "Include custom GladeVCP GUI panel" +msgstr "Добавить PyVCP GUI панель" -#: src/emc/usr_intf/pncconf/pncconf.glade:576 -msgid "First Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7676 +msgid "Force individual manual homing" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:589 -msgid "Second Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7689 +msgid "Random position toolchanger " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:604 -msgid "Third Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7704 +msgid "Require homing before MDI / Running" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:627 -#: src/emc/usr_intf/pncconf/pncconf.glade:635 -msgid "" -"5i20\n" -"5i23\n" -"5i22" +#: src/emc/usr_intf/pncconf/pncconf.glade:7713 +msgid "Popup Toolchange Prompt" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:708 -#: src/emc/usr_intf/pncconf/pncconf.glade:720 -#: src/emc/usr_intf/pncconf/pncconf.glade:733 -msgid "" -"In\n" -"Out" +#: src/emc/usr_intf/pncconf/pncconf.glade:7727 +msgid "Leave spindle on during tool change" msgstr "" -"Вход\n" -"Выход" -#: src/emc/usr_intf/pncconf/pncconf.glade:796 -msgid "" -"Add-on PCI\n" -" Parport\n" -" Address \n" -" Search" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:7740 +msgid "Move spindle up before tool change" +msgstr "Поднимите шпиндель перед сменой инструмента" -#: src/emc/usr_intf/pncconf/pncconf.glade:821 -msgid "I/O Control Ports/ Boards" +#: src/emc/usr_intf/pncconf/pncconf.glade:7753 +msgid "Restore joint position after shutdown" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:870 -msgid "Axis" -msgstr "Ось " - -#: src/emc/usr_intf/pncconf/pncconf.glade:885 -msgid "TKLinuxCNC" +#: src/emc/usr_intf/pncconf/pncconf.glade:7769 +msgid "Defaults and Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:899 -msgid "Mini" -msgstr "Мини" +#: src/emc/usr_intf/pncconf/pncconf.glade:7797 +msgid "Mesa0 I/O setup\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:913 -#: src/emc/usr_intf/pncconf/pncconf.glade:6648 -#, fuzzy -msgid "Touchy" -msgstr "Задать отступ" +#: src/emc/usr_intf/pncconf/pncconf.glade:7817 +msgid "" +"Click on each page tab to configure signal names for each connector port.\n" +"\n" +"Press the button to make the tabbed pages\n" +"accept the changes.\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:930 -msgid "GUI frontend list" +#: src/emc/usr_intf/pncconf/pncconf.glade:8001 +msgid "3PWM base frequency:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:965 -msgid "External Controls" -msgstr "внешнее управление" +#: src/emc/usr_intf/pncconf/pncconf.glade:8036 +msgid "Mesa parport address:" +msgstr "Адрес порта MESA:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1006 -msgid "Add device rule" +#: src/emc/usr_intf/pncconf/pncconf.glade:8047 +msgid "Firmware:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1019 -msgid "Test device" +#: src/emc/usr_intf/pncconf/pncconf.glade:8069 +msgid "SVST8_4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1033 -msgid "Search for device rules" +#: src/emc/usr_intf/pncconf/pncconf.glade:8094 +msgid "Num of 3 pwm generators: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1054 -#, fuzzy -msgid "Device Name:" -msgstr "Название станка:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1117 -#: src/emc/usr_intf/pncconf/pncconf.glade:1255 -#, fuzzy -msgid "Jog Speed select A" -msgstr "Скорость перемещений" +#: src/emc/usr_intf/pncconf/pncconf.glade:8128 +msgid "Total number of pins:" +msgstr "Общее число контактов:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1195 -msgid "Z -" +#: src/emc/usr_intf/pncconf/pncconf.glade:8153 +msgid "" +"Accept components\n" +" Changes" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1207 -msgid "Y -" +#: src/emc/usr_intf/pncconf/pncconf.glade:8168 +msgid "PWM base frequency:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1219 -#, fuzzy -msgid "X -" -msgstr "Двигать X -" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1229 -msgid "Z +" +#: src/emc/usr_intf/pncconf/pncconf.glade:8179 +msgid "PDM base frequency:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1239 -msgid "Y +" +#: src/emc/usr_intf/pncconf/pncconf.glade:8190 +msgid "Watchdog timeout:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1249 -#, fuzzy -msgid "X +" -msgstr "Двигать X +" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1289 -#: src/emc/usr_intf/pncconf/pncconf.glade:2208 -#: src/emc/usr_intf/pncconf/pncconf.glade:3496 -#: src/emc/usr_intf/pncconf/pncconf.glade:4377 -#: src/emc/usr_intf/pncconf/pncconf.glade:5258 -msgid "default" +#: src/emc/usr_intf/pncconf/pncconf.glade:8307 +msgid "Num of encoders:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1299 -#: src/emc/usr_intf/pncconf/pncconf.glade:2107 -#: src/emc/usr_intf/pncconf/pncconf.glade:3443 -#: src/emc/usr_intf/pncconf/pncconf.glade:4324 -#: src/emc/usr_intf/pncconf/pncconf.glade:5205 -msgid " a)" -msgstr " a)" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1311 -#: src/emc/usr_intf/pncconf/pncconf.glade:2096 -#: src/emc/usr_intf/pncconf/pncconf.glade:3432 -#: src/emc/usr_intf/pncconf/pncconf.glade:4313 -#: src/emc/usr_intf/pncconf/pncconf.glade:5194 -msgid " b)" -msgstr "b)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8318 +msgid "Num of pwm generators:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1322 -#, fuzzy -msgid " ab)" -msgstr "b)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8329 +msgid "Num of step generators: " +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1348 -#: src/emc/usr_intf/pncconf/pncconf.glade:1401 -#: src/emc/usr_intf/pncconf/pncconf.glade:1413 -#: src/emc/usr_intf/pncconf/pncconf.glade:1423 -#: src/emc/usr_intf/pncconf/pncconf.glade:1751 -msgid "mm/min " -msgstr "мм/мин" +#: src/emc/usr_intf/pncconf/pncconf.glade:8340 +msgid "Board name" +msgstr "Имя платы" -#: src/emc/usr_intf/pncconf/pncconf.glade:1456 -msgid "A -" +#: src/emc/usr_intf/pncconf/pncconf.glade:8346 +msgid "Num of Smart Serial Ports:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1468 -msgid "A +" +#: src/emc/usr_intf/pncconf/pncconf.glade:8393 +msgid "7i29 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1492 -#, fuzzy -msgid "Digital Control" -msgstr "Цифровой выход 0" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1539 -msgid "X " +#: src/emc/usr_intf/pncconf/pncconf.glade:8402 +msgid "7i30 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1545 -#: src/emc/usr_intf/pncconf/pncconf.glade:5901 -#: src/emc/usr_intf/pncconf/pncconf.glade:6531 -#: src/emc/usr_intf/pncconf/pncconf.glade:6910 -#: src/emc/usr_intf/pncconf/pncconf.glade:7257 -msgid "Y" +#: src/emc/usr_intf/pncconf/pncconf.glade:8414 +msgid "7i33 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1555 -msgid "Z" +#: src/emc/usr_intf/pncconf/pncconf.glade:8426 +msgid "7i40 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1565 -msgid "A" +#: src/emc/usr_intf/pncconf/pncconf.glade:8438 +msgid "7i48 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1623 +#: src/emc/usr_intf/pncconf/pncconf.glade:8453 #, fuzzy -msgid "Analog Control" -msgstr "Ручное управление" +msgid "Sanity Checks" +msgstr "Штурвал" -#: src/emc/usr_intf/pncconf/pncconf.glade:1649 -#: src/emc/usr_intf/pncconf/pncconf.glade:1780 -#: src/emc/usr_intf/pncconf/pncconf.glade:2690 -#: src/emc/usr_intf/pncconf/pncconf.glade:3571 -#: src/emc/usr_intf/pncconf/pncconf.glade:4452 -#: src/emc/usr_intf/pncconf/pncconf.glade:5333 -#: src/emc/usr_intf/pncconf/pncconf.glade:57371 -msgid "Details" +#: src/emc/usr_intf/pncconf/pncconf.glade:8482 +msgid "Num of channels: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1667 -msgid "USB Joystick Jogging " +#: src/emc/usr_intf/pncconf/pncconf.glade:8494 +msgid "Num of resolvers:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1711 -msgid "shared buttons for all axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:8528 +msgid "" +"Configuration\n" +" Page" msgstr "" +"Страница\n" +"установок" -#: src/emc/usr_intf/pncconf/pncconf.glade:1724 -msgid "buttons for each axis" -msgstr "кнопки на каждой оси" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1798 -msgid "External Button Jogging" +#: src/emc/usr_intf/pncconf/pncconf.glade:8721 +#: src/emc/usr_intf/pncconf/pncconf.glade:8773 +#: src/emc/usr_intf/pncconf/pncconf.glade:9093 +#: src/emc/usr_intf/pncconf/pncconf.glade:9145 +#: src/emc/usr_intf/pncconf/pncconf.glade:9197 +#: src/emc/usr_intf/pncconf/pncconf.glade:9249 +#: src/emc/usr_intf/pncconf/pncconf.glade:9301 +#: src/emc/usr_intf/pncconf/pncconf.glade:9353 +#: src/emc/usr_intf/pncconf/pncconf.glade:9405 +#: src/emc/usr_intf/pncconf/pncconf.glade:9457 +#: src/emc/usr_intf/pncconf/pncconf.glade:9509 +#: src/emc/usr_intf/pncconf/pncconf.glade:9561 +#: src/emc/usr_intf/pncconf/pncconf.glade:10400 +#: src/emc/usr_intf/pncconf/pncconf.glade:10453 +#: src/emc/usr_intf/pncconf/pncconf.glade:10505 +#: src/emc/usr_intf/pncconf/pncconf.glade:10557 +#: src/emc/usr_intf/pncconf/pncconf.glade:11335 +#: src/emc/usr_intf/pncconf/pncconf.glade:11387 +#: src/emc/usr_intf/pncconf/pncconf.glade:12047 +#: src/emc/usr_intf/pncconf/pncconf.glade:12099 +#: src/emc/usr_intf/pncconf/pncconf.glade:12151 +#: src/emc/usr_intf/pncconf/pncconf.glade:12203 +#: src/emc/usr_intf/pncconf/pncconf.glade:13042 +#: src/emc/usr_intf/pncconf/pncconf.glade:13094 +#: src/emc/usr_intf/pncconf/pncconf.glade:13146 +#: src/emc/usr_intf/pncconf/pncconf.glade:13198 +#: src/emc/usr_intf/pncconf/pncconf.glade:13250 +#: src/emc/usr_intf/pncconf/pncconf.glade:13302 +#: src/emc/usr_intf/pncconf/pncconf.glade:13354 +#: src/emc/usr_intf/pncconf/pncconf.glade:13406 +#: src/emc/usr_intf/pncconf/pncconf.glade:13458 +#: src/emc/usr_intf/pncconf/pncconf.glade:13510 +#: src/emc/usr_intf/pncconf/pncconf.glade:14556 +#: src/emc/usr_intf/pncconf/pncconf.glade:14608 +#: src/emc/usr_intf/pncconf/pncconf.glade:14660 +#: src/emc/usr_intf/pncconf/pncconf.glade:14712 +#: src/emc/usr_intf/pncconf/pncconf.glade:15539 +#: src/emc/usr_intf/pncconf/pncconf.glade:15591 +#: src/emc/usr_intf/pncconf/pncconf.glade:15643 +#: src/emc/usr_intf/pncconf/pncconf.glade:15695 +#: src/emc/usr_intf/pncconf/pncconf.glade:15747 +#: src/emc/usr_intf/pncconf/pncconf.glade:15799 +#: src/emc/usr_intf/pncconf/pncconf.glade:15851 +#: src/emc/usr_intf/pncconf/pncconf.glade:15903 +#: src/emc/usr_intf/pncconf/pncconf.glade:15955 +#: src/emc/usr_intf/pncconf/pncconf.glade:16007 +#: src/emc/usr_intf/pncconf/pncconf.glade:16059 +#: src/emc/usr_intf/pncconf/pncconf.glade:16111 +#: src/emc/usr_intf/pncconf/pncconf.glade:16540 +#: src/emc/usr_intf/pncconf/pncconf.glade:16592 +#: src/emc/usr_intf/pncconf/pncconf.glade:17253 +#: src/emc/usr_intf/pncconf/pncconf.glade:17305 +#: src/emc/usr_intf/pncconf/pncconf.glade:17357 +#: src/emc/usr_intf/pncconf/pncconf.glade:18196 +#: src/emc/usr_intf/pncconf/pncconf.glade:18248 +#: src/emc/usr_intf/pncconf/pncconf.glade:18300 +#: src/emc/usr_intf/pncconf/pncconf.glade:18352 +#: src/emc/usr_intf/pncconf/pncconf.glade:18404 +#: src/emc/usr_intf/pncconf/pncconf.glade:18456 +#: src/emc/usr_intf/pncconf/pncconf.glade:18508 +#: src/emc/usr_intf/pncconf/pncconf.glade:18560 +#: src/emc/usr_intf/pncconf/pncconf.glade:18612 +#: src/emc/usr_intf/pncconf/pncconf.glade:18664 +#: src/emc/usr_intf/pncconf/pncconf.glade:18716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26612 +#: src/emc/usr_intf/pncconf/pncconf.glade:26664 +#: src/emc/usr_intf/pncconf/pncconf.glade:26716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26768 +#: src/emc/usr_intf/pncconf/pncconf.glade:26820 +#: src/emc/usr_intf/pncconf/pncconf.glade:26872 +#: src/emc/usr_intf/pncconf/pncconf.glade:26924 +#: src/emc/usr_intf/pncconf/pncconf.glade:26976 +#: src/emc/usr_intf/pncconf/pncconf.glade:27028 +#: src/emc/usr_intf/pncconf/pncconf.glade:27080 +#: src/emc/usr_intf/pncconf/pncconf.glade:27132 +#: src/emc/usr_intf/pncconf/pncconf.glade:27184 +#: src/emc/usr_intf/pncconf/pncconf.glade:28011 +#: src/emc/usr_intf/pncconf/pncconf.glade:28063 +#: src/emc/usr_intf/pncconf/pncconf.glade:28115 +#: src/emc/usr_intf/pncconf/pncconf.glade:28167 +#: src/emc/usr_intf/pncconf/pncconf.glade:29507 +#: src/emc/usr_intf/pncconf/pncconf.glade:29559 +#: src/emc/usr_intf/pncconf/pncconf.glade:29611 +#: src/emc/usr_intf/pncconf/pncconf.glade:29663 +#: src/emc/usr_intf/pncconf/pncconf.glade:30490 +#: src/emc/usr_intf/pncconf/pncconf.glade:30542 +#: src/emc/usr_intf/pncconf/pncconf.glade:30594 +#: src/emc/usr_intf/pncconf/pncconf.glade:30646 +#: src/emc/usr_intf/pncconf/pncconf.glade:30698 +#: src/emc/usr_intf/pncconf/pncconf.glade:30750 +#: src/emc/usr_intf/pncconf/pncconf.glade:30802 +#: src/emc/usr_intf/pncconf/pncconf.glade:30854 +#: src/emc/usr_intf/pncconf/pncconf.glade:30906 +#: src/emc/usr_intf/pncconf/pncconf.glade:30958 +#: src/emc/usr_intf/pncconf/pncconf.glade:31010 +#: src/emc/usr_intf/pncconf/pncconf.glade:31062 +#: src/emc/usr_intf/pncconf/pncconf.glade:31878 +#: src/emc/usr_intf/pncconf/pncconf.glade:31930 +#: src/emc/usr_intf/pncconf/pncconf.glade:31982 +#: src/emc/usr_intf/pncconf/pncconf.glade:32034 +#: src/emc/usr_intf/pncconf/pncconf.glade:32086 +#: src/emc/usr_intf/pncconf/pncconf.glade:32138 +#: src/emc/usr_intf/pncconf/pncconf.glade:32190 +#: src/emc/usr_intf/pncconf/pncconf.glade:32242 +#: src/emc/usr_intf/pncconf/pncconf.glade:32294 +#: src/emc/usr_intf/pncconf/pncconf.glade:32346 +#: src/emc/usr_intf/pncconf/pncconf.glade:32398 +#: src/emc/usr_intf/pncconf/pncconf.glade:32450 +#: src/emc/usr_intf/pncconf/pncconf.glade:33852 +#: src/emc/usr_intf/pncconf/pncconf.glade:33904 +#: src/emc/usr_intf/pncconf/pncconf.glade:33956 +#: src/emc/usr_intf/pncconf/pncconf.glade:34008 +#: src/emc/usr_intf/pncconf/pncconf.glade:34835 +#: src/emc/usr_intf/pncconf/pncconf.glade:34887 +#: src/emc/usr_intf/pncconf/pncconf.glade:34939 +#: src/emc/usr_intf/pncconf/pncconf.glade:34991 +#: src/emc/usr_intf/pncconf/pncconf.glade:35043 +#: src/emc/usr_intf/pncconf/pncconf.glade:35095 +#: src/emc/usr_intf/pncconf/pncconf.glade:35147 +#: src/emc/usr_intf/pncconf/pncconf.glade:35199 +#: src/emc/usr_intf/pncconf/pncconf.glade:35251 +#: src/emc/usr_intf/pncconf/pncconf.glade:35303 +#: src/emc/usr_intf/pncconf/pncconf.glade:35355 +#: src/emc/usr_intf/pncconf/pncconf.glade:35407 +#: src/emc/usr_intf/pncconf/pncconf.glade:36096 +#: src/emc/usr_intf/pncconf/pncconf.glade:36148 +#: src/emc/usr_intf/pncconf/pncconf.glade:36200 +#: src/emc/usr_intf/pncconf/pncconf.glade:36252 +#: src/emc/usr_intf/pncconf/pncconf.glade:36304 +#: src/emc/usr_intf/pncconf/pncconf.glade:36356 +#: src/emc/usr_intf/pncconf/pncconf.glade:36408 +#: src/emc/usr_intf/pncconf/pncconf.glade:36460 +#: src/emc/usr_intf/pncconf/pncconf.glade:36512 +#: src/emc/usr_intf/pncconf/pncconf.glade:36564 +#: src/emc/usr_intf/pncconf/pncconf.glade:36616 +#: src/emc/usr_intf/pncconf/pncconf.glade:36668 +#: src/emc/usr_intf/pncconf/pncconf.glade:37495 +#: src/emc/usr_intf/pncconf/pncconf.glade:37547 +#: src/emc/usr_intf/pncconf/pncconf.glade:37599 +#: src/emc/usr_intf/pncconf/pncconf.glade:37651 +#: src/emc/usr_intf/pncconf/pncconf.glade:39168 +#: src/emc/usr_intf/pncconf/pncconf.glade:39220 +#: src/emc/usr_intf/pncconf/pncconf.glade:39272 +#: src/emc/usr_intf/pncconf/pncconf.glade:39324 +#: src/emc/usr_intf/pncconf/pncconf.glade:39376 +#: src/emc/usr_intf/pncconf/pncconf.glade:39428 +#: src/emc/usr_intf/pncconf/pncconf.glade:39480 +#: src/emc/usr_intf/pncconf/pncconf.glade:39532 +#: src/emc/usr_intf/pncconf/pncconf.glade:39584 +#: src/emc/usr_intf/pncconf/pncconf.glade:39636 +#: src/emc/usr_intf/pncconf/pncconf.glade:39688 +#: src/emc/usr_intf/pncconf/pncconf.glade:39740 +#: src/emc/usr_intf/pncconf/pncconf.glade:40456 +#: src/emc/usr_intf/pncconf/pncconf.glade:40508 +#: src/emc/usr_intf/pncconf/pncconf.glade:40560 +#: src/emc/usr_intf/pncconf/pncconf.glade:40612 +#: src/emc/usr_intf/pncconf/pncconf.glade:40664 +#: src/emc/usr_intf/pncconf/pncconf.glade:40716 +#: src/emc/usr_intf/pncconf/pncconf.glade:40768 +#: src/emc/usr_intf/pncconf/pncconf.glade:40820 +#: src/emc/usr_intf/pncconf/pncconf.glade:40872 +#: src/emc/usr_intf/pncconf/pncconf.glade:40924 +#: src/emc/usr_intf/pncconf/pncconf.glade:40976 +#: src/emc/usr_intf/pncconf/pncconf.glade:41028 +#: src/emc/usr_intf/pncconf/pncconf.glade:41855 +#: src/emc/usr_intf/pncconf/pncconf.glade:41907 +#: src/emc/usr_intf/pncconf/pncconf.glade:41959 +#: src/emc/usr_intf/pncconf/pncconf.glade:42011 +#: src/emc/usr_intf/pncconf/pncconf.glade:43351 +#: src/emc/usr_intf/pncconf/pncconf.glade:43403 +#: src/emc/usr_intf/pncconf/pncconf.glade:43455 +#: src/emc/usr_intf/pncconf/pncconf.glade:43507 +#: src/emc/usr_intf/pncconf/pncconf.glade:44334 +#: src/emc/usr_intf/pncconf/pncconf.glade:44386 +#: src/emc/usr_intf/pncconf/pncconf.glade:44438 +#: src/emc/usr_intf/pncconf/pncconf.glade:44490 +#: src/emc/usr_intf/pncconf/pncconf.glade:44542 +#: src/emc/usr_intf/pncconf/pncconf.glade:44594 +#: src/emc/usr_intf/pncconf/pncconf.glade:44646 +#: src/emc/usr_intf/pncconf/pncconf.glade:44698 +#: src/emc/usr_intf/pncconf/pncconf.glade:44750 +#: src/emc/usr_intf/pncconf/pncconf.glade:44802 +#: src/emc/usr_intf/pncconf/pncconf.glade:44854 +#: src/emc/usr_intf/pncconf/pncconf.glade:44906 +#: src/emc/usr_intf/pncconf/pncconf.glade:45711 +#: src/emc/usr_intf/pncconf/pncconf.glade:45763 +#: src/emc/usr_intf/pncconf/pncconf.glade:45815 +#: src/emc/usr_intf/pncconf/pncconf.glade:45867 +#: src/emc/usr_intf/pncconf/pncconf.glade:45919 +#: src/emc/usr_intf/pncconf/pncconf.glade:45971 +#: src/emc/usr_intf/pncconf/pncconf.glade:46023 +#: src/emc/usr_intf/pncconf/pncconf.glade:46075 +#: src/emc/usr_intf/pncconf/pncconf.glade:46127 +#: src/emc/usr_intf/pncconf/pncconf.glade:46179 +#: src/emc/usr_intf/pncconf/pncconf.glade:46231 +#: src/emc/usr_intf/pncconf/pncconf.glade:46283 +#: src/emc/usr_intf/pncconf/pncconf.glade:47379 +#: src/emc/usr_intf/pncconf/pncconf.glade:47431 +#: src/emc/usr_intf/pncconf/pncconf.glade:47483 +#: src/emc/usr_intf/pncconf/pncconf.glade:47535 +#: src/emc/usr_intf/pncconf/pncconf.glade:47587 +#: src/emc/usr_intf/pncconf/pncconf.glade:47639 +#: src/emc/usr_intf/pncconf/pncconf.glade:47691 +#: src/emc/usr_intf/pncconf/pncconf.glade:47743 +#: src/emc/usr_intf/pncconf/pncconf.glade:47795 +#: src/emc/usr_intf/pncconf/pncconf.glade:47847 +#: src/emc/usr_intf/pncconf/pncconf.glade:47899 +#: src/emc/usr_intf/pncconf/pncconf.glade:47951 +#: src/emc/usr_intf/pncconf/pncconf.glade:48778 +#: src/emc/usr_intf/pncconf/pncconf.glade:48830 +#: src/emc/usr_intf/pncconf/pncconf.glade:48882 +#: src/emc/usr_intf/pncconf/pncconf.glade:48934 +#: src/emc/usr_intf/pncconf/pncconf.glade:50274 +#: src/emc/usr_intf/pncconf/pncconf.glade:50326 +#: src/emc/usr_intf/pncconf/pncconf.glade:50378 +#: src/emc/usr_intf/pncconf/pncconf.glade:50430 +#: src/emc/usr_intf/pncconf/pncconf.glade:51257 +#: src/emc/usr_intf/pncconf/pncconf.glade:51309 +#: src/emc/usr_intf/pncconf/pncconf.glade:51361 +#: src/emc/usr_intf/pncconf/pncconf.glade:51413 +#: src/emc/usr_intf/pncconf/pncconf.glade:51465 +#: src/emc/usr_intf/pncconf/pncconf.glade:51517 +#: src/emc/usr_intf/pncconf/pncconf.glade:51569 +#: src/emc/usr_intf/pncconf/pncconf.glade:51621 +#: src/emc/usr_intf/pncconf/pncconf.glade:51673 +#: src/emc/usr_intf/pncconf/pncconf.glade:51725 +#: src/emc/usr_intf/pncconf/pncconf.glade:51777 +#: src/emc/usr_intf/pncconf/pncconf.glade:51829 +#: src/emc/usr_intf/pncconf/pncconf.glade:52634 +#: src/emc/usr_intf/pncconf/pncconf.glade:52686 +#: src/emc/usr_intf/pncconf/pncconf.glade:52738 +#: src/emc/usr_intf/pncconf/pncconf.glade:52790 +#: src/emc/usr_intf/pncconf/pncconf.glade:52842 +#: src/emc/usr_intf/pncconf/pncconf.glade:52894 +#: src/emc/usr_intf/pncconf/pncconf.glade:52946 +#: src/emc/usr_intf/pncconf/pncconf.glade:52998 +#: src/emc/usr_intf/pncconf/pncconf.glade:53050 +#: src/emc/usr_intf/pncconf/pncconf.glade:53102 +#: src/emc/usr_intf/pncconf/pncconf.glade:53154 +#: src/emc/usr_intf/pncconf/pncconf.glade:53206 +#: src/emc/usr_intf/pncconf/pncconf.glade:54302 +#: src/emc/usr_intf/pncconf/pncconf.glade:54354 +#: src/emc/usr_intf/pncconf/pncconf.glade:54406 +#: src/emc/usr_intf/pncconf/pncconf.glade:54458 +#: src/emc/usr_intf/pncconf/pncconf.glade:54510 +#: src/emc/usr_intf/pncconf/pncconf.glade:54562 +#: src/emc/usr_intf/pncconf/pncconf.glade:54614 +#: src/emc/usr_intf/pncconf/pncconf.glade:54666 +#: src/emc/usr_intf/pncconf/pncconf.glade:54718 +#: src/emc/usr_intf/pncconf/pncconf.glade:54770 +#: src/emc/usr_intf/pncconf/pncconf.glade:54822 +#: src/emc/usr_intf/pncconf/pncconf.glade:54874 +#: src/emc/usr_intf/pncconf/pncconf.glade:55701 +#: src/emc/usr_intf/pncconf/pncconf.glade:55753 +#: src/emc/usr_intf/pncconf/pncconf.glade:55805 +#: src/emc/usr_intf/pncconf/pncconf.glade:55857 +#: src/emc/usr_intf/pncconf/pncconf.glade:57197 +#: src/emc/usr_intf/pncconf/pncconf.glade:57249 +#: src/emc/usr_intf/pncconf/pncconf.glade:57301 +#: src/emc/usr_intf/pncconf/pncconf.glade:57353 +#: src/emc/usr_intf/pncconf/pncconf.glade:58180 +#: src/emc/usr_intf/pncconf/pncconf.glade:58232 +#: src/emc/usr_intf/pncconf/pncconf.glade:58284 +#: src/emc/usr_intf/pncconf/pncconf.glade:58336 +#: src/emc/usr_intf/pncconf/pncconf.glade:58388 +#: src/emc/usr_intf/pncconf/pncconf.glade:58440 +#: src/emc/usr_intf/pncconf/pncconf.glade:58492 +#: src/emc/usr_intf/pncconf/pncconf.glade:58544 +#: src/emc/usr_intf/pncconf/pncconf.glade:58596 +#: src/emc/usr_intf/pncconf/pncconf.glade:58648 +#: src/emc/usr_intf/pncconf/pncconf.glade:58700 +#: src/emc/usr_intf/pncconf/pncconf.glade:58752 +#: src/emc/usr_intf/pncconf/pncconf.glade:59557 +#: src/emc/usr_intf/pncconf/pncconf.glade:59609 +#: src/emc/usr_intf/pncconf/pncconf.glade:59661 +#: src/emc/usr_intf/pncconf/pncconf.glade:59713 +#: src/emc/usr_intf/pncconf/pncconf.glade:59765 +#: src/emc/usr_intf/pncconf/pncconf.glade:59817 +#: src/emc/usr_intf/pncconf/pncconf.glade:59869 +#: src/emc/usr_intf/pncconf/pncconf.glade:59921 +#: src/emc/usr_intf/pncconf/pncconf.glade:59973 +#: src/emc/usr_intf/pncconf/pncconf.glade:60025 +#: src/emc/usr_intf/pncconf/pncconf.glade:60077 +#: src/emc/usr_intf/pncconf/pncconf.glade:60129 +msgid "" +"ESTOP IN\n" +"Spindle PPR\n" +"Spindle A \n" +"Spindle B \n" +"Home X \n" +"Home Y \n" +"Home Z\n" +"Home A\n" +"Minimum Limit + Home X \n" +"Minimum Limit + Home Y \n" +"Minimum Limit + Home Z \n" +"Minimum Limit + Home A\n" +"Maximum Limit + Home X \n" +"Maximum Limit + Home Y \n" +"Maximum Limit + Home Z \n" +"Maximum Limit + Home A\n" +"Both Limit + Home X \n" +"Both Limit + Home Y \n" +"Both Limit + Home Z \n" +"Both Limit + Home A\n" +"Minimum Limit X \n" +"Minimum Limit Y \n" +"Minimum Limit Z \n" +"Minimum Limit A\n" +"Maximum Limit X \n" +"Maximum Limit Y \n" +"Maximum Limit Z \n" +"Maximum Limit A\n" +"Both Limit X \n" +"Both Limit Y \n" +"Both Limit Z \n" +"Both Limit A\n" +"All limits\n" +"All home\n" +"Unused" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1839 -msgid "Shared MPG / selectable axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:8825 +#: src/emc/usr_intf/pncconf/pncconf.glade:9081 +#: src/emc/usr_intf/pncconf/pncconf.glade:13563 +#: src/emc/usr_intf/pncconf/pncconf.glade:13818 +#: src/emc/usr_intf/pncconf/pncconf.glade:16164 +#: src/emc/usr_intf/pncconf/pncconf.glade:16410 +#: src/emc/usr_intf/pncconf/pncconf.glade:18769 +#: src/emc/usr_intf/pncconf/pncconf.glade:19024 +#: src/emc/usr_intf/pncconf/pncconf.glade:20571 +#: src/emc/usr_intf/pncconf/pncconf.glade:20820 +#: src/emc/usr_intf/pncconf/pncconf.glade:20949 +#: src/emc/usr_intf/pncconf/pncconf.glade:21199 +#: src/emc/usr_intf/pncconf/pncconf.glade:22745 +#: src/emc/usr_intf/pncconf/pncconf.glade:22995 +#: src/emc/usr_intf/pncconf/pncconf.glade:24541 +#: src/emc/usr_intf/pncconf/pncconf.glade:24791 +#: src/emc/usr_intf/pncconf/pncconf.glade:26353 +#: src/emc/usr_intf/pncconf/pncconf.glade:26600 +#: src/emc/usr_intf/pncconf/pncconf.glade:31115 +#: src/emc/usr_intf/pncconf/pncconf.glade:31361 +#: src/emc/usr_intf/pncconf/pncconf.glade:31621 +#: src/emc/usr_intf/pncconf/pncconf.glade:35460 +#: src/emc/usr_intf/pncconf/pncconf.glade:35706 +#: src/emc/usr_intf/pncconf/pncconf.glade:35837 +#: src/emc/usr_intf/pncconf/pncconf.glade:36084 +#: src/emc/usr_intf/pncconf/pncconf.glade:40037 +#: src/emc/usr_intf/pncconf/pncconf.glade:40197 +#: src/emc/usr_intf/pncconf/pncconf.glade:40444 +#: src/emc/usr_intf/pncconf/pncconf.glade:44959 +#: src/emc/usr_intf/pncconf/pncconf.glade:45205 +#: src/emc/usr_intf/pncconf/pncconf.glade:45454 +#: src/emc/usr_intf/pncconf/pncconf.glade:47120 +#: src/emc/usr_intf/pncconf/pncconf.glade:47367 +#: src/emc/usr_intf/pncconf/pncconf.glade:51882 +#: src/emc/usr_intf/pncconf/pncconf.glade:52128 +#: src/emc/usr_intf/pncconf/pncconf.glade:52377 +#: src/emc/usr_intf/pncconf/pncconf.glade:54043 +#: src/emc/usr_intf/pncconf/pncconf.glade:54290 +#: src/emc/usr_intf/pncconf/pncconf.glade:58805 +#: src/emc/usr_intf/pncconf/pncconf.glade:59051 +#: src/emc/usr_intf/pncconf/pncconf.glade:59300 +msgid "Pin Type" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1852 -msgid "Mpg per axis" -msgstr "Шаговых генераторов на ось" +#: src/emc/usr_intf/pncconf/pncconf.glade:8838 +#: src/emc/usr_intf/pncconf/pncconf.glade:8900 +#: src/emc/usr_intf/pncconf/pncconf.glade:13743 +#: src/emc/usr_intf/pncconf/pncconf.glade:13806 +#: src/emc/usr_intf/pncconf/pncconf.glade:16335 +#: src/emc/usr_intf/pncconf/pncconf.glade:16398 +#: src/emc/usr_intf/pncconf/pncconf.glade:18949 +#: src/emc/usr_intf/pncconf/pncconf.glade:19012 +#: src/emc/usr_intf/pncconf/pncconf.glade:20751 +#: src/emc/usr_intf/pncconf/pncconf.glade:20808 +#: src/emc/usr_intf/pncconf/pncconf.glade:20962 +#: src/emc/usr_intf/pncconf/pncconf.glade:21018 +#: src/emc/usr_intf/pncconf/pncconf.glade:22758 +#: src/emc/usr_intf/pncconf/pncconf.glade:22814 +#: src/emc/usr_intf/pncconf/pncconf.glade:24554 +#: src/emc/usr_intf/pncconf/pncconf.glade:24610 +#: src/emc/usr_intf/pncconf/pncconf.glade:26366 +#: src/emc/usr_intf/pncconf/pncconf.glade:26428 +#: src/emc/usr_intf/pncconf/pncconf.glade:31286 +#: src/emc/usr_intf/pncconf/pncconf.glade:31349 +#: src/emc/usr_intf/pncconf/pncconf.glade:31634 +#: src/emc/usr_intf/pncconf/pncconf.glade:35631 +#: src/emc/usr_intf/pncconf/pncconf.glade:35694 +#: src/emc/usr_intf/pncconf/pncconf.glade:35850 +#: src/emc/usr_intf/pncconf/pncconf.glade:35912 +#: src/emc/usr_intf/pncconf/pncconf.glade:40025 +#: src/emc/usr_intf/pncconf/pncconf.glade:40210 +#: src/emc/usr_intf/pncconf/pncconf.glade:40272 +#: src/emc/usr_intf/pncconf/pncconf.glade:45130 +#: src/emc/usr_intf/pncconf/pncconf.glade:45193 +#: src/emc/usr_intf/pncconf/pncconf.glade:45467 +#: src/emc/usr_intf/pncconf/pncconf.glade:47133 +#: src/emc/usr_intf/pncconf/pncconf.glade:47195 +#: src/emc/usr_intf/pncconf/pncconf.glade:52053 +#: src/emc/usr_intf/pncconf/pncconf.glade:52116 +#: src/emc/usr_intf/pncconf/pncconf.glade:52390 +#: src/emc/usr_intf/pncconf/pncconf.glade:54056 +#: src/emc/usr_intf/pncconf/pncconf.glade:54118 +#: src/emc/usr_intf/pncconf/pncconf.glade:58976 +#: src/emc/usr_intf/pncconf/pncconf.glade:59039 +#: src/emc/usr_intf/pncconf/pncconf.glade:59313 +msgid "Inv" +msgstr "Инверсный" -#: src/emc/usr_intf/pncconf/pncconf.glade:1867 -msgid "selectable MPG increments" -msgstr "Выбираемые скорости генератора" +#: src/emc/usr_intf/pncconf/pncconf.glade:8867 +#: src/emc/usr_intf/pncconf/pncconf.glade:10731 +#: src/emc/usr_intf/pncconf/pncconf.glade:10751 +#: src/emc/usr_intf/pncconf/pncconf.glade:10771 +#: src/emc/usr_intf/pncconf/pncconf.glade:10791 +#: src/emc/usr_intf/pncconf/pncconf.glade:10811 +#: src/emc/usr_intf/pncconf/pncconf.glade:10831 +#: src/emc/usr_intf/pncconf/pncconf.glade:10851 +#: src/emc/usr_intf/pncconf/pncconf.glade:10871 +#: src/emc/usr_intf/pncconf/pncconf.glade:10891 +#: src/emc/usr_intf/pncconf/pncconf.glade:10911 +#: src/emc/usr_intf/pncconf/pncconf.glade:10931 +#: src/emc/usr_intf/pncconf/pncconf.glade:10951 +#: src/emc/usr_intf/pncconf/pncconf.glade:10971 +#: src/emc/usr_intf/pncconf/pncconf.glade:10991 +#: src/emc/usr_intf/pncconf/pncconf.glade:11011 +#: src/emc/usr_intf/pncconf/pncconf.glade:11031 +#: src/emc/usr_intf/pncconf/pncconf.glade:11051 +#: src/emc/usr_intf/pncconf/pncconf.glade:11071 +#: src/emc/usr_intf/pncconf/pncconf.glade:11091 +#: src/emc/usr_intf/pncconf/pncconf.glade:11111 +#: src/emc/usr_intf/pncconf/pncconf.glade:11131 +#: src/emc/usr_intf/pncconf/pncconf.glade:11151 +#: src/emc/usr_intf/pncconf/pncconf.glade:11171 +#: src/emc/usr_intf/pncconf/pncconf.glade:11465 +#: src/emc/usr_intf/pncconf/pncconf.glade:11485 +#: src/emc/usr_intf/pncconf/pncconf.glade:11505 +#: src/emc/usr_intf/pncconf/pncconf.glade:11525 +#: src/emc/usr_intf/pncconf/pncconf.glade:11545 +#: src/emc/usr_intf/pncconf/pncconf.glade:11565 +#: src/emc/usr_intf/pncconf/pncconf.glade:11585 +#: src/emc/usr_intf/pncconf/pncconf.glade:11605 +#: src/emc/usr_intf/pncconf/pncconf.glade:11625 +#: src/emc/usr_intf/pncconf/pncconf.glade:11645 +#: src/emc/usr_intf/pncconf/pncconf.glade:11665 +#: src/emc/usr_intf/pncconf/pncconf.glade:11685 +#: src/emc/usr_intf/pncconf/pncconf.glade:11705 +#: src/emc/usr_intf/pncconf/pncconf.glade:11725 +#: src/emc/usr_intf/pncconf/pncconf.glade:11745 +#: src/emc/usr_intf/pncconf/pncconf.glade:11765 +#: src/emc/usr_intf/pncconf/pncconf.glade:11785 +#: src/emc/usr_intf/pncconf/pncconf.glade:11805 +#: src/emc/usr_intf/pncconf/pncconf.glade:11825 +#: src/emc/usr_intf/pncconf/pncconf.glade:11845 +#: src/emc/usr_intf/pncconf/pncconf.glade:11865 +#: src/emc/usr_intf/pncconf/pncconf.glade:11885 +#: src/emc/usr_intf/pncconf/pncconf.glade:11905 +#: src/emc/usr_intf/pncconf/pncconf.glade:13768 +#: src/emc/usr_intf/pncconf/pncconf.glade:13974 +#: src/emc/usr_intf/pncconf/pncconf.glade:13994 +#: src/emc/usr_intf/pncconf/pncconf.glade:14014 +#: src/emc/usr_intf/pncconf/pncconf.glade:14034 +#: src/emc/usr_intf/pncconf/pncconf.glade:14054 +#: src/emc/usr_intf/pncconf/pncconf.glade:14074 +#: src/emc/usr_intf/pncconf/pncconf.glade:14094 +#: src/emc/usr_intf/pncconf/pncconf.glade:14114 +#: src/emc/usr_intf/pncconf/pncconf.glade:14134 +#: src/emc/usr_intf/pncconf/pncconf.glade:14154 +#: src/emc/usr_intf/pncconf/pncconf.glade:14174 +#: src/emc/usr_intf/pncconf/pncconf.glade:14194 +#: src/emc/usr_intf/pncconf/pncconf.glade:14214 +#: src/emc/usr_intf/pncconf/pncconf.glade:14234 +#: src/emc/usr_intf/pncconf/pncconf.glade:14254 +#: src/emc/usr_intf/pncconf/pncconf.glade:14274 +#: src/emc/usr_intf/pncconf/pncconf.glade:14294 +#: src/emc/usr_intf/pncconf/pncconf.glade:14314 +#: src/emc/usr_intf/pncconf/pncconf.glade:14334 +#: src/emc/usr_intf/pncconf/pncconf.glade:14354 +#: src/emc/usr_intf/pncconf/pncconf.glade:14374 +#: src/emc/usr_intf/pncconf/pncconf.glade:14394 +#: src/emc/usr_intf/pncconf/pncconf.glade:14414 +#: src/emc/usr_intf/pncconf/pncconf.glade:16360 +#: src/emc/usr_intf/pncconf/pncconf.glade:16670 +#: src/emc/usr_intf/pncconf/pncconf.glade:16690 +#: src/emc/usr_intf/pncconf/pncconf.glade:16710 +#: src/emc/usr_intf/pncconf/pncconf.glade:16730 +#: src/emc/usr_intf/pncconf/pncconf.glade:16750 +#: src/emc/usr_intf/pncconf/pncconf.glade:16770 +#: src/emc/usr_intf/pncconf/pncconf.glade:16790 +#: src/emc/usr_intf/pncconf/pncconf.glade:16810 +#: src/emc/usr_intf/pncconf/pncconf.glade:16830 +#: src/emc/usr_intf/pncconf/pncconf.glade:16850 +#: src/emc/usr_intf/pncconf/pncconf.glade:16870 +#: src/emc/usr_intf/pncconf/pncconf.glade:16890 +#: src/emc/usr_intf/pncconf/pncconf.glade:16910 +#: src/emc/usr_intf/pncconf/pncconf.glade:16930 +#: src/emc/usr_intf/pncconf/pncconf.glade:16950 +#: src/emc/usr_intf/pncconf/pncconf.glade:16970 +#: src/emc/usr_intf/pncconf/pncconf.glade:16990 +#: src/emc/usr_intf/pncconf/pncconf.glade:17010 +#: src/emc/usr_intf/pncconf/pncconf.glade:17030 +#: src/emc/usr_intf/pncconf/pncconf.glade:17050 +#: src/emc/usr_intf/pncconf/pncconf.glade:17070 +#: src/emc/usr_intf/pncconf/pncconf.glade:17090 +#: src/emc/usr_intf/pncconf/pncconf.glade:17110 +#: src/emc/usr_intf/pncconf/pncconf.glade:18974 +#: src/emc/usr_intf/pncconf/pncconf.glade:26395 +#: src/emc/usr_intf/pncconf/pncconf.glade:28311 +#: src/emc/usr_intf/pncconf/pncconf.glade:28331 +#: src/emc/usr_intf/pncconf/pncconf.glade:28351 +#: src/emc/usr_intf/pncconf/pncconf.glade:28371 +#: src/emc/usr_intf/pncconf/pncconf.glade:28391 +#: src/emc/usr_intf/pncconf/pncconf.glade:28411 +#: src/emc/usr_intf/pncconf/pncconf.glade:28431 +#: src/emc/usr_intf/pncconf/pncconf.glade:28451 +#: src/emc/usr_intf/pncconf/pncconf.glade:28471 +#: src/emc/usr_intf/pncconf/pncconf.glade:28491 +#: src/emc/usr_intf/pncconf/pncconf.glade:28511 +#: src/emc/usr_intf/pncconf/pncconf.glade:28531 +#: src/emc/usr_intf/pncconf/pncconf.glade:28551 +#: src/emc/usr_intf/pncconf/pncconf.glade:28571 +#: src/emc/usr_intf/pncconf/pncconf.glade:28591 +#: src/emc/usr_intf/pncconf/pncconf.glade:28611 +#: src/emc/usr_intf/pncconf/pncconf.glade:28631 +#: src/emc/usr_intf/pncconf/pncconf.glade:28651 +#: src/emc/usr_intf/pncconf/pncconf.glade:28671 +#: src/emc/usr_intf/pncconf/pncconf.glade:28691 +#: src/emc/usr_intf/pncconf/pncconf.glade:28711 +#: src/emc/usr_intf/pncconf/pncconf.glade:28731 +#: src/emc/usr_intf/pncconf/pncconf.glade:28751 +#: src/emc/usr_intf/pncconf/pncconf.glade:28942 +#: src/emc/usr_intf/pncconf/pncconf.glade:28962 +#: src/emc/usr_intf/pncconf/pncconf.glade:28982 +#: src/emc/usr_intf/pncconf/pncconf.glade:29002 +#: src/emc/usr_intf/pncconf/pncconf.glade:29022 +#: src/emc/usr_intf/pncconf/pncconf.glade:29042 +#: src/emc/usr_intf/pncconf/pncconf.glade:29062 +#: src/emc/usr_intf/pncconf/pncconf.glade:29082 +#: src/emc/usr_intf/pncconf/pncconf.glade:29102 +#: src/emc/usr_intf/pncconf/pncconf.glade:29122 +#: src/emc/usr_intf/pncconf/pncconf.glade:29142 +#: src/emc/usr_intf/pncconf/pncconf.glade:29162 +#: src/emc/usr_intf/pncconf/pncconf.glade:29182 +#: src/emc/usr_intf/pncconf/pncconf.glade:29202 +#: src/emc/usr_intf/pncconf/pncconf.glade:29222 +#: src/emc/usr_intf/pncconf/pncconf.glade:29242 +#: src/emc/usr_intf/pncconf/pncconf.glade:29262 +#: src/emc/usr_intf/pncconf/pncconf.glade:29282 +#: src/emc/usr_intf/pncconf/pncconf.glade:29302 +#: src/emc/usr_intf/pncconf/pncconf.glade:29322 +#: src/emc/usr_intf/pncconf/pncconf.glade:29342 +#: src/emc/usr_intf/pncconf/pncconf.glade:29362 +#: src/emc/usr_intf/pncconf/pncconf.glade:29382 +#: src/emc/usr_intf/pncconf/pncconf.glade:31311 +#: src/emc/usr_intf/pncconf/pncconf.glade:31663 +#: src/emc/usr_intf/pncconf/pncconf.glade:32881 +#: src/emc/usr_intf/pncconf/pncconf.glade:32901 +#: src/emc/usr_intf/pncconf/pncconf.glade:32921 +#: src/emc/usr_intf/pncconf/pncconf.glade:32941 +#: src/emc/usr_intf/pncconf/pncconf.glade:32961 +#: src/emc/usr_intf/pncconf/pncconf.glade:32981 +#: src/emc/usr_intf/pncconf/pncconf.glade:33001 +#: src/emc/usr_intf/pncconf/pncconf.glade:33021 +#: src/emc/usr_intf/pncconf/pncconf.glade:33041 +#: src/emc/usr_intf/pncconf/pncconf.glade:33061 +#: src/emc/usr_intf/pncconf/pncconf.glade:33081 +#: src/emc/usr_intf/pncconf/pncconf.glade:33300 +#: src/emc/usr_intf/pncconf/pncconf.glade:33320 +#: src/emc/usr_intf/pncconf/pncconf.glade:33340 +#: src/emc/usr_intf/pncconf/pncconf.glade:33360 +#: src/emc/usr_intf/pncconf/pncconf.glade:33380 +#: src/emc/usr_intf/pncconf/pncconf.glade:33400 +#: src/emc/usr_intf/pncconf/pncconf.glade:33420 +#: src/emc/usr_intf/pncconf/pncconf.glade:33440 +#: src/emc/usr_intf/pncconf/pncconf.glade:33460 +#: src/emc/usr_intf/pncconf/pncconf.glade:33480 +#: src/emc/usr_intf/pncconf/pncconf.glade:33500 +#: src/emc/usr_intf/pncconf/pncconf.glade:33520 +#: src/emc/usr_intf/pncconf/pncconf.glade:33540 +#: src/emc/usr_intf/pncconf/pncconf.glade:33560 +#: src/emc/usr_intf/pncconf/pncconf.glade:33580 +#: src/emc/usr_intf/pncconf/pncconf.glade:33600 +#: src/emc/usr_intf/pncconf/pncconf.glade:33620 +#: src/emc/usr_intf/pncconf/pncconf.glade:33640 +#: src/emc/usr_intf/pncconf/pncconf.glade:33660 +#: src/emc/usr_intf/pncconf/pncconf.glade:33680 +#: src/emc/usr_intf/pncconf/pncconf.glade:33700 +#: src/emc/usr_intf/pncconf/pncconf.glade:33720 +#: src/emc/usr_intf/pncconf/pncconf.glade:33740 +#: src/emc/usr_intf/pncconf/pncconf.glade:35656 +#: src/emc/usr_intf/pncconf/pncconf.glade:35879 +#: src/emc/usr_intf/pncconf/pncconf.glade:37808 +#: src/emc/usr_intf/pncconf/pncconf.glade:37828 +#: src/emc/usr_intf/pncconf/pncconf.glade:37848 +#: src/emc/usr_intf/pncconf/pncconf.glade:37868 +#: src/emc/usr_intf/pncconf/pncconf.glade:37888 +#: src/emc/usr_intf/pncconf/pncconf.glade:37908 +#: src/emc/usr_intf/pncconf/pncconf.glade:37928 +#: src/emc/usr_intf/pncconf/pncconf.glade:37948 +#: src/emc/usr_intf/pncconf/pncconf.glade:37968 +#: src/emc/usr_intf/pncconf/pncconf.glade:37988 +#: src/emc/usr_intf/pncconf/pncconf.glade:38008 +#: src/emc/usr_intf/pncconf/pncconf.glade:38028 +#: src/emc/usr_intf/pncconf/pncconf.glade:38048 +#: src/emc/usr_intf/pncconf/pncconf.glade:38068 +#: src/emc/usr_intf/pncconf/pncconf.glade:38088 +#: src/emc/usr_intf/pncconf/pncconf.glade:38108 +#: src/emc/usr_intf/pncconf/pncconf.glade:38128 +#: src/emc/usr_intf/pncconf/pncconf.glade:38148 +#: src/emc/usr_intf/pncconf/pncconf.glade:38168 +#: src/emc/usr_intf/pncconf/pncconf.glade:38188 +#: src/emc/usr_intf/pncconf/pncconf.glade:38208 +#: src/emc/usr_intf/pncconf/pncconf.glade:38228 +#: src/emc/usr_intf/pncconf/pncconf.glade:38248 +#: src/emc/usr_intf/pncconf/pncconf.glade:38557 +#: src/emc/usr_intf/pncconf/pncconf.glade:38577 +#: src/emc/usr_intf/pncconf/pncconf.glade:38597 +#: src/emc/usr_intf/pncconf/pncconf.glade:38617 +#: src/emc/usr_intf/pncconf/pncconf.glade:38637 +#: src/emc/usr_intf/pncconf/pncconf.glade:38657 +#: src/emc/usr_intf/pncconf/pncconf.glade:38677 +#: src/emc/usr_intf/pncconf/pncconf.glade:38697 +#: src/emc/usr_intf/pncconf/pncconf.glade:38717 +#: src/emc/usr_intf/pncconf/pncconf.glade:38737 +#: src/emc/usr_intf/pncconf/pncconf.glade:38757 +#: src/emc/usr_intf/pncconf/pncconf.glade:39987 +#: src/emc/usr_intf/pncconf/pncconf.glade:40239 +#: src/emc/usr_intf/pncconf/pncconf.glade:42155 +#: src/emc/usr_intf/pncconf/pncconf.glade:42175 +#: src/emc/usr_intf/pncconf/pncconf.glade:42195 +#: src/emc/usr_intf/pncconf/pncconf.glade:42215 +#: src/emc/usr_intf/pncconf/pncconf.glade:42235 +#: src/emc/usr_intf/pncconf/pncconf.glade:42255 +#: src/emc/usr_intf/pncconf/pncconf.glade:42275 +#: src/emc/usr_intf/pncconf/pncconf.glade:42295 +#: src/emc/usr_intf/pncconf/pncconf.glade:42315 +#: src/emc/usr_intf/pncconf/pncconf.glade:42335 +#: src/emc/usr_intf/pncconf/pncconf.glade:42355 +#: src/emc/usr_intf/pncconf/pncconf.glade:42375 +#: src/emc/usr_intf/pncconf/pncconf.glade:42395 +#: src/emc/usr_intf/pncconf/pncconf.glade:42415 +#: src/emc/usr_intf/pncconf/pncconf.glade:42435 +#: src/emc/usr_intf/pncconf/pncconf.glade:42455 +#: src/emc/usr_intf/pncconf/pncconf.glade:42475 +#: src/emc/usr_intf/pncconf/pncconf.glade:42495 +#: src/emc/usr_intf/pncconf/pncconf.glade:42515 +#: src/emc/usr_intf/pncconf/pncconf.glade:42535 +#: src/emc/usr_intf/pncconf/pncconf.glade:42555 +#: src/emc/usr_intf/pncconf/pncconf.glade:42575 +#: src/emc/usr_intf/pncconf/pncconf.glade:42595 +#: src/emc/usr_intf/pncconf/pncconf.glade:42786 +#: src/emc/usr_intf/pncconf/pncconf.glade:42806 +#: src/emc/usr_intf/pncconf/pncconf.glade:42826 +#: src/emc/usr_intf/pncconf/pncconf.glade:42846 +#: src/emc/usr_intf/pncconf/pncconf.glade:42866 +#: src/emc/usr_intf/pncconf/pncconf.glade:42886 +#: src/emc/usr_intf/pncconf/pncconf.glade:42906 +#: src/emc/usr_intf/pncconf/pncconf.glade:42926 +#: src/emc/usr_intf/pncconf/pncconf.glade:42946 +#: src/emc/usr_intf/pncconf/pncconf.glade:42966 +#: src/emc/usr_intf/pncconf/pncconf.glade:42986 +#: src/emc/usr_intf/pncconf/pncconf.glade:43006 +#: src/emc/usr_intf/pncconf/pncconf.glade:43026 +#: src/emc/usr_intf/pncconf/pncconf.glade:43046 +#: src/emc/usr_intf/pncconf/pncconf.glade:43066 +#: src/emc/usr_intf/pncconf/pncconf.glade:43086 +#: src/emc/usr_intf/pncconf/pncconf.glade:43106 +#: src/emc/usr_intf/pncconf/pncconf.glade:43126 +#: src/emc/usr_intf/pncconf/pncconf.glade:43146 +#: src/emc/usr_intf/pncconf/pncconf.glade:43166 +#: src/emc/usr_intf/pncconf/pncconf.glade:43186 +#: src/emc/usr_intf/pncconf/pncconf.glade:43206 +#: src/emc/usr_intf/pncconf/pncconf.glade:43226 +#: src/emc/usr_intf/pncconf/pncconf.glade:45155 +#: src/emc/usr_intf/pncconf/pncconf.glade:45496 +#: src/emc/usr_intf/pncconf/pncconf.glade:46726 +#: src/emc/usr_intf/pncconf/pncconf.glade:46746 +#: src/emc/usr_intf/pncconf/pncconf.glade:46766 +#: src/emc/usr_intf/pncconf/pncconf.glade:46786 +#: src/emc/usr_intf/pncconf/pncconf.glade:46806 +#: src/emc/usr_intf/pncconf/pncconf.glade:46826 +#: src/emc/usr_intf/pncconf/pncconf.glade:46846 +#: src/emc/usr_intf/pncconf/pncconf.glade:46866 +#: src/emc/usr_intf/pncconf/pncconf.glade:46886 +#: src/emc/usr_intf/pncconf/pncconf.glade:46906 +#: src/emc/usr_intf/pncconf/pncconf.glade:46926 +#: src/emc/usr_intf/pncconf/pncconf.glade:47162 +#: src/emc/usr_intf/pncconf/pncconf.glade:49078 +#: src/emc/usr_intf/pncconf/pncconf.glade:49098 +#: src/emc/usr_intf/pncconf/pncconf.glade:49118 +#: src/emc/usr_intf/pncconf/pncconf.glade:49138 +#: src/emc/usr_intf/pncconf/pncconf.glade:49158 +#: src/emc/usr_intf/pncconf/pncconf.glade:49178 +#: src/emc/usr_intf/pncconf/pncconf.glade:49198 +#: src/emc/usr_intf/pncconf/pncconf.glade:49218 +#: src/emc/usr_intf/pncconf/pncconf.glade:49238 +#: src/emc/usr_intf/pncconf/pncconf.glade:49258 +#: src/emc/usr_intf/pncconf/pncconf.glade:49278 +#: src/emc/usr_intf/pncconf/pncconf.glade:49298 +#: src/emc/usr_intf/pncconf/pncconf.glade:49318 +#: src/emc/usr_intf/pncconf/pncconf.glade:49338 +#: src/emc/usr_intf/pncconf/pncconf.glade:49358 +#: src/emc/usr_intf/pncconf/pncconf.glade:49378 +#: src/emc/usr_intf/pncconf/pncconf.glade:49398 +#: src/emc/usr_intf/pncconf/pncconf.glade:49418 +#: src/emc/usr_intf/pncconf/pncconf.glade:49438 +#: src/emc/usr_intf/pncconf/pncconf.glade:49458 +#: src/emc/usr_intf/pncconf/pncconf.glade:49478 +#: src/emc/usr_intf/pncconf/pncconf.glade:49498 +#: src/emc/usr_intf/pncconf/pncconf.glade:49518 +#: src/emc/usr_intf/pncconf/pncconf.glade:49709 +#: src/emc/usr_intf/pncconf/pncconf.glade:49729 +#: src/emc/usr_intf/pncconf/pncconf.glade:49749 +#: src/emc/usr_intf/pncconf/pncconf.glade:49769 +#: src/emc/usr_intf/pncconf/pncconf.glade:49789 +#: src/emc/usr_intf/pncconf/pncconf.glade:49809 +#: src/emc/usr_intf/pncconf/pncconf.glade:49829 +#: src/emc/usr_intf/pncconf/pncconf.glade:49849 +#: src/emc/usr_intf/pncconf/pncconf.glade:49869 +#: src/emc/usr_intf/pncconf/pncconf.glade:49889 +#: src/emc/usr_intf/pncconf/pncconf.glade:49909 +#: src/emc/usr_intf/pncconf/pncconf.glade:49929 +#: src/emc/usr_intf/pncconf/pncconf.glade:49949 +#: src/emc/usr_intf/pncconf/pncconf.glade:49969 +#: src/emc/usr_intf/pncconf/pncconf.glade:49989 +#: src/emc/usr_intf/pncconf/pncconf.glade:50009 +#: src/emc/usr_intf/pncconf/pncconf.glade:50029 +#: src/emc/usr_intf/pncconf/pncconf.glade:50049 +#: src/emc/usr_intf/pncconf/pncconf.glade:50069 +#: src/emc/usr_intf/pncconf/pncconf.glade:50089 +#: src/emc/usr_intf/pncconf/pncconf.glade:50109 +#: src/emc/usr_intf/pncconf/pncconf.glade:50129 +#: src/emc/usr_intf/pncconf/pncconf.glade:50149 +#: src/emc/usr_intf/pncconf/pncconf.glade:52078 +#: src/emc/usr_intf/pncconf/pncconf.glade:52419 +#: src/emc/usr_intf/pncconf/pncconf.glade:53649 +#: src/emc/usr_intf/pncconf/pncconf.glade:53669 +#: src/emc/usr_intf/pncconf/pncconf.glade:53689 +#: src/emc/usr_intf/pncconf/pncconf.glade:53709 +#: src/emc/usr_intf/pncconf/pncconf.glade:53729 +#: src/emc/usr_intf/pncconf/pncconf.glade:53749 +#: src/emc/usr_intf/pncconf/pncconf.glade:53769 +#: src/emc/usr_intf/pncconf/pncconf.glade:53789 +#: src/emc/usr_intf/pncconf/pncconf.glade:53809 +#: src/emc/usr_intf/pncconf/pncconf.glade:53829 +#: src/emc/usr_intf/pncconf/pncconf.glade:53849 +#: src/emc/usr_intf/pncconf/pncconf.glade:54085 +#: src/emc/usr_intf/pncconf/pncconf.glade:56001 +#: src/emc/usr_intf/pncconf/pncconf.glade:56021 +#: src/emc/usr_intf/pncconf/pncconf.glade:56041 +#: src/emc/usr_intf/pncconf/pncconf.glade:56061 +#: src/emc/usr_intf/pncconf/pncconf.glade:56081 +#: src/emc/usr_intf/pncconf/pncconf.glade:56101 +#: src/emc/usr_intf/pncconf/pncconf.glade:56121 +#: src/emc/usr_intf/pncconf/pncconf.glade:56141 +#: src/emc/usr_intf/pncconf/pncconf.glade:56161 +#: src/emc/usr_intf/pncconf/pncconf.glade:56181 +#: src/emc/usr_intf/pncconf/pncconf.glade:56201 +#: src/emc/usr_intf/pncconf/pncconf.glade:56221 +#: src/emc/usr_intf/pncconf/pncconf.glade:56241 +#: src/emc/usr_intf/pncconf/pncconf.glade:56261 +#: src/emc/usr_intf/pncconf/pncconf.glade:56281 +#: src/emc/usr_intf/pncconf/pncconf.glade:56301 +#: src/emc/usr_intf/pncconf/pncconf.glade:56321 +#: src/emc/usr_intf/pncconf/pncconf.glade:56341 +#: src/emc/usr_intf/pncconf/pncconf.glade:56361 +#: src/emc/usr_intf/pncconf/pncconf.glade:56381 +#: src/emc/usr_intf/pncconf/pncconf.glade:56401 +#: src/emc/usr_intf/pncconf/pncconf.glade:56421 +#: src/emc/usr_intf/pncconf/pncconf.glade:56441 +#: src/emc/usr_intf/pncconf/pncconf.glade:56632 +#: src/emc/usr_intf/pncconf/pncconf.glade:56652 +#: src/emc/usr_intf/pncconf/pncconf.glade:56672 +#: src/emc/usr_intf/pncconf/pncconf.glade:56692 +#: src/emc/usr_intf/pncconf/pncconf.glade:56712 +#: src/emc/usr_intf/pncconf/pncconf.glade:56732 +#: src/emc/usr_intf/pncconf/pncconf.glade:56752 +#: src/emc/usr_intf/pncconf/pncconf.glade:56772 +#: src/emc/usr_intf/pncconf/pncconf.glade:56792 +#: src/emc/usr_intf/pncconf/pncconf.glade:56812 +#: src/emc/usr_intf/pncconf/pncconf.glade:56832 +#: src/emc/usr_intf/pncconf/pncconf.glade:56852 +#: src/emc/usr_intf/pncconf/pncconf.glade:56872 +#: src/emc/usr_intf/pncconf/pncconf.glade:56892 +#: src/emc/usr_intf/pncconf/pncconf.glade:56912 +#: src/emc/usr_intf/pncconf/pncconf.glade:56932 +#: src/emc/usr_intf/pncconf/pncconf.glade:56952 +#: src/emc/usr_intf/pncconf/pncconf.glade:56972 +#: src/emc/usr_intf/pncconf/pncconf.glade:56992 +#: src/emc/usr_intf/pncconf/pncconf.glade:57012 +#: src/emc/usr_intf/pncconf/pncconf.glade:57032 +#: src/emc/usr_intf/pncconf/pncconf.glade:57052 +#: src/emc/usr_intf/pncconf/pncconf.glade:57072 +#: src/emc/usr_intf/pncconf/pncconf.glade:59001 +#: src/emc/usr_intf/pncconf/pncconf.glade:59342 +#: src/emc/usr_intf/pncconf/pncconf.glade:60572 +#: src/emc/usr_intf/pncconf/pncconf.glade:60592 +#: src/emc/usr_intf/pncconf/pncconf.glade:60612 +#: src/emc/usr_intf/pncconf/pncconf.glade:60632 +#: src/emc/usr_intf/pncconf/pncconf.glade:60652 +#: src/emc/usr_intf/pncconf/pncconf.glade:60672 +#: src/emc/usr_intf/pncconf/pncconf.glade:60692 +#: src/emc/usr_intf/pncconf/pncconf.glade:60712 +#: src/emc/usr_intf/pncconf/pncconf.glade:60732 +#: src/emc/usr_intf/pncconf/pncconf.glade:60752 +#: src/emc/usr_intf/pncconf/pncconf.glade:60772 +msgid "" +"GPIO Input\n" +"GPIO Output\n" +"GPIO O Drain\n" +"Encoder\n" +"PWM\n" +"StepGen\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1932 -#: src/emc/usr_intf/pncconf/pncconf.glade:2907 -#: src/emc/usr_intf/pncconf/pncconf.glade:3788 -#: src/emc/usr_intf/pncconf/pncconf.glade:4669 -#, fuzzy -msgid "Mux options" -msgstr "Motion" +#: src/emc/usr_intf/pncconf/pncconf.glade:8913 +#: src/emc/usr_intf/pncconf/pncconf.glade:13730 +#: src/emc/usr_intf/pncconf/pncconf.glade:18936 +#: src/emc/usr_intf/pncconf/pncconf.glade:20738 +#: src/emc/usr_intf/pncconf/pncconf.glade:21031 +#: src/emc/usr_intf/pncconf/pncconf.glade:22827 +#: src/emc/usr_intf/pncconf/pncconf.glade:24623 +msgid " 1:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1980 -#: src/emc/usr_intf/pncconf/pncconf.glade:2868 -#: src/emc/usr_intf/pncconf/pncconf.glade:3763 -#: src/emc/usr_intf/pncconf/pncconf.glade:4644 -msgid "use debounce" +#: src/emc/usr_intf/pncconf/pncconf.glade:8927 +#: src/emc/usr_intf/pncconf/pncconf.glade:13716 +#: src/emc/usr_intf/pncconf/pncconf.glade:18922 +#: src/emc/usr_intf/pncconf/pncconf.glade:20724 +#: src/emc/usr_intf/pncconf/pncconf.glade:21045 +#: src/emc/usr_intf/pncconf/pncconf.glade:22841 +#: src/emc/usr_intf/pncconf/pncconf.glade:24637 +msgid " 3:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1995 -msgid "use gray code" +#: src/emc/usr_intf/pncconf/pncconf.glade:8941 +#: src/emc/usr_intf/pncconf/pncconf.glade:13702 +#: src/emc/usr_intf/pncconf/pncconf.glade:18908 +#: src/emc/usr_intf/pncconf/pncconf.glade:20710 +#: src/emc/usr_intf/pncconf/pncconf.glade:21059 +#: src/emc/usr_intf/pncconf/pncconf.glade:22855 +#: src/emc/usr_intf/pncconf/pncconf.glade:24651 +msgid " 5:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2010 -msgid "ignore all inputs false" +#: src/emc/usr_intf/pncconf/pncconf.glade:8955 +#: src/emc/usr_intf/pncconf/pncconf.glade:13688 +#: src/emc/usr_intf/pncconf/pncconf.glade:18894 +#: src/emc/usr_intf/pncconf/pncconf.glade:20696 +#: src/emc/usr_intf/pncconf/pncconf.glade:21073 +#: src/emc/usr_intf/pncconf/pncconf.glade:22869 +#: src/emc/usr_intf/pncconf/pncconf.glade:24665 +msgid " 7:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2035 -#: src/emc/usr_intf/pncconf/pncconf.glade:2048 -#: src/emc/usr_intf/pncconf/pncconf.glade:2061 -#: src/emc/usr_intf/pncconf/pncconf.glade:2407 -#: src/emc/usr_intf/pncconf/pncconf.glade:2420 -#: src/emc/usr_intf/pncconf/pncconf.glade:2433 -#: src/emc/usr_intf/pncconf/pncconf.glade:2446 -#: src/emc/usr_intf/pncconf/pncconf.glade:2457 -#: src/emc/usr_intf/pncconf/pncconf.glade:2470 -#: src/emc/usr_intf/pncconf/pncconf.glade:2483 -#: src/emc/usr_intf/pncconf/pncconf.glade:2496 -#: src/emc/usr_intf/pncconf/pncconf.glade:2509 -#: src/emc/usr_intf/pncconf/pncconf.glade:2522 -#: src/emc/usr_intf/pncconf/pncconf.glade:2535 -#: src/emc/usr_intf/pncconf/pncconf.glade:8343 -#: src/emc/usr_intf/pncconf/pncconf.glade:8379 -#: src/emc/usr_intf/pncconf/pncconf.glade:56542 -#: src/emc/usr_intf/pncconf/pncconf.glade:61266 -#: src/emc/usr_intf/pncconf/pncconf.glade:61278 -#: src/emc/usr_intf/pncconf/pncconf.glade:61290 -#: src/emc/usr_intf/pncconf/pncconf.glade:61302 -#: src/emc/usr_intf/pncconf/pncconf.glade:62475 -#: src/emc/usr_intf/pncconf/pncconf.glade:62487 -#: src/emc/usr_intf/pncconf/pncconf.glade:62499 -#: src/emc/usr_intf/pncconf/pncconf.glade:62511 -#: src/emc/usr_intf/pncconf/pncconf.glade:63452 -#: src/emc/usr_intf/pncconf/pncconf.glade:63464 -#: src/emc/usr_intf/pncconf/pncconf.glade:63476 -#: src/emc/usr_intf/pncconf/pncconf.glade:63488 -#: src/emc/usr_intf/pncconf/pncconf.glade:64661 -#: src/emc/usr_intf/pncconf/pncconf.glade:64673 -#: src/emc/usr_intf/pncconf/pncconf.glade:64685 -#: src/emc/usr_intf/pncconf/pncconf.glade:64697 -#: src/emc/usr_intf/pncconf/pncconf.glade:65608 -#: src/emc/usr_intf/pncconf/pncconf.glade:65620 -#: src/emc/usr_intf/pncconf/pncconf.glade:65632 -#: src/emc/usr_intf/pncconf/pncconf.glade:65644 -msgid "label" +#: src/emc/usr_intf/pncconf/pncconf.glade:8969 +#: src/emc/usr_intf/pncconf/pncconf.glade:13674 +#: src/emc/usr_intf/pncconf/pncconf.glade:18880 +#: src/emc/usr_intf/pncconf/pncconf.glade:20682 +#: src/emc/usr_intf/pncconf/pncconf.glade:21087 +#: src/emc/usr_intf/pncconf/pncconf.glade:22883 +#: src/emc/usr_intf/pncconf/pncconf.glade:24679 +msgid " 9:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2073 -#: src/emc/usr_intf/pncconf/pncconf.glade:2559 -#: src/emc/usr_intf/pncconf/pncconf.glade:3300 -#: src/emc/usr_intf/pncconf/pncconf.glade:4181 -#: src/emc/usr_intf/pncconf/pncconf.glade:5062 -msgid " abc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8983 +#: src/emc/usr_intf/pncconf/pncconf.glade:13660 +#: src/emc/usr_intf/pncconf/pncconf.glade:18866 +#: src/emc/usr_intf/pncconf/pncconf.glade:20668 +#: src/emc/usr_intf/pncconf/pncconf.glade:21101 +#: src/emc/usr_intf/pncconf/pncconf.glade:22897 +#: src/emc/usr_intf/pncconf/pncconf.glade:24693 +msgid "11:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2086 -#: src/emc/usr_intf/pncconf/pncconf.glade:3422 -#: src/emc/usr_intf/pncconf/pncconf.glade:4303 -#: src/emc/usr_intf/pncconf/pncconf.glade:5184 -msgid " ab)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8997 +#: src/emc/usr_intf/pncconf/pncconf.glade:13646 +#: src/emc/usr_intf/pncconf/pncconf.glade:18852 +#: src/emc/usr_intf/pncconf/pncconf.glade:20654 +#: src/emc/usr_intf/pncconf/pncconf.glade:21115 +#: src/emc/usr_intf/pncconf/pncconf.glade:22911 +#: src/emc/usr_intf/pncconf/pncconf.glade:24707 +msgid "13:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2372 -#: src/emc/usr_intf/pncconf/pncconf.glade:3321 -#: src/emc/usr_intf/pncconf/pncconf.glade:4202 -#: src/emc/usr_intf/pncconf/pncconf.glade:5083 -msgid " ac)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9011 +#: src/emc/usr_intf/pncconf/pncconf.glade:13632 +#: src/emc/usr_intf/pncconf/pncconf.glade:18838 +#: src/emc/usr_intf/pncconf/pncconf.glade:20640 +#: src/emc/usr_intf/pncconf/pncconf.glade:21129 +#: src/emc/usr_intf/pncconf/pncconf.glade:22925 +#: src/emc/usr_intf/pncconf/pncconf.glade:24721 +msgid "15:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2383 -#: src/emc/usr_intf/pncconf/pncconf.glade:3311 -#: src/emc/usr_intf/pncconf/pncconf.glade:4192 -#: src/emc/usr_intf/pncconf/pncconf.glade:5073 -msgid " bc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9025 +#: src/emc/usr_intf/pncconf/pncconf.glade:13618 +#: src/emc/usr_intf/pncconf/pncconf.glade:18824 +#: src/emc/usr_intf/pncconf/pncconf.glade:20626 +#: src/emc/usr_intf/pncconf/pncconf.glade:21143 +#: src/emc/usr_intf/pncconf/pncconf.glade:22939 +#: src/emc/usr_intf/pncconf/pncconf.glade:24735 +msgid "17:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2547 -#: src/emc/usr_intf/pncconf/pncconf.glade:3332 -#: src/emc/usr_intf/pncconf/pncconf.glade:4213 -#: src/emc/usr_intf/pncconf/pncconf.glade:5094 -msgid " c)" -msgstr " c)" - -#: src/emc/usr_intf/pncconf/pncconf.glade:2570 -#: src/emc/usr_intf/pncconf/pncconf.glade:2966 -#: src/emc/usr_intf/pncconf/pncconf.glade:3847 -#: src/emc/usr_intf/pncconf/pncconf.glade:4728 -msgid " ad)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9039 +#: src/emc/usr_intf/pncconf/pncconf.glade:13604 +#: src/emc/usr_intf/pncconf/pncconf.glade:18810 +#: src/emc/usr_intf/pncconf/pncconf.glade:20612 +#: src/emc/usr_intf/pncconf/pncconf.glade:21157 +#: src/emc/usr_intf/pncconf/pncconf.glade:22953 +#: src/emc/usr_intf/pncconf/pncconf.glade:24749 +msgid "19:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2583 -#: src/emc/usr_intf/pncconf/pncconf.glade:2953 -#: src/emc/usr_intf/pncconf/pncconf.glade:3834 -#: src/emc/usr_intf/pncconf/pncconf.glade:4715 -msgid " bd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9053 +#: src/emc/usr_intf/pncconf/pncconf.glade:13590 +#: src/emc/usr_intf/pncconf/pncconf.glade:18796 +#: src/emc/usr_intf/pncconf/pncconf.glade:20598 +#: src/emc/usr_intf/pncconf/pncconf.glade:21171 +#: src/emc/usr_intf/pncconf/pncconf.glade:22967 +#: src/emc/usr_intf/pncconf/pncconf.glade:24763 +msgid "21:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2596 -#: src/emc/usr_intf/pncconf/pncconf.glade:2927 -#: src/emc/usr_intf/pncconf/pncconf.glade:3808 -#: src/emc/usr_intf/pncconf/pncconf.glade:4689 -msgid " cd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9067 +#: src/emc/usr_intf/pncconf/pncconf.glade:13576 +#: src/emc/usr_intf/pncconf/pncconf.glade:18782 +#: src/emc/usr_intf/pncconf/pncconf.glade:20584 +#: src/emc/usr_intf/pncconf/pncconf.glade:21185 +#: src/emc/usr_intf/pncconf/pncconf.glade:22981 +#: src/emc/usr_intf/pncconf/pncconf.glade:24777 +msgid "23:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2609 -#: src/emc/usr_intf/pncconf/pncconf.glade:2991 -#: src/emc/usr_intf/pncconf/pncconf.glade:3872 -#: src/emc/usr_intf/pncconf/pncconf.glade:4753 -msgid " acd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9801 +#: src/emc/usr_intf/pncconf/pncconf.glade:12840 +#: src/emc/usr_intf/pncconf/pncconf.glade:17994 +#: src/emc/usr_intf/pncconf/pncconf.glade:20170 +#: src/emc/usr_intf/pncconf/pncconf.glade:21597 +#: src/emc/usr_intf/pncconf/pncconf.glade:23393 +#: src/emc/usr_intf/pncconf/pncconf.glade:25189 +msgid "47:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2622 -#: src/emc/usr_intf/pncconf/pncconf.glade:3004 -#: src/emc/usr_intf/pncconf/pncconf.glade:3885 -#: src/emc/usr_intf/pncconf/pncconf.glade:4766 -msgid " bcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9868 +#: src/emc/usr_intf/pncconf/pncconf.glade:12773 +#: src/emc/usr_intf/pncconf/pncconf.glade:17927 +#: src/emc/usr_intf/pncconf/pncconf.glade:20119 +#: src/emc/usr_intf/pncconf/pncconf.glade:21648 +#: src/emc/usr_intf/pncconf/pncconf.glade:23444 +#: src/emc/usr_intf/pncconf/pncconf.glade:25240 +msgid "45:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2635 -#: src/emc/usr_intf/pncconf/pncconf.glade:3017 -#: src/emc/usr_intf/pncconf/pncconf.glade:3898 -#: src/emc/usr_intf/pncconf/pncconf.glade:4779 -msgid " abcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9884 +#: src/emc/usr_intf/pncconf/pncconf.glade:12757 +#: src/emc/usr_intf/pncconf/pncconf.glade:17911 +#: src/emc/usr_intf/pncconf/pncconf.glade:20103 +#: src/emc/usr_intf/pncconf/pncconf.glade:21664 +#: src/emc/usr_intf/pncconf/pncconf.glade:23460 +#: src/emc/usr_intf/pncconf/pncconf.glade:25256 +msgid "43:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2648 -#: src/emc/usr_intf/pncconf/pncconf.glade:2979 -#: src/emc/usr_intf/pncconf/pncconf.glade:3860 -#: src/emc/usr_intf/pncconf/pncconf.glade:4741 -#, fuzzy -msgid " d)" -msgstr "b)" - -#: src/emc/usr_intf/pncconf/pncconf.glade:2664 -#, fuzzy -msgid "increments" -msgstr "увеличить" - -#: src/emc/usr_intf/pncconf/pncconf.glade:2708 -msgid "External MPG Jogging" +#: src/emc/usr_intf/pncconf/pncconf.glade:9900 +#: src/emc/usr_intf/pncconf/pncconf.glade:12741 +#: src/emc/usr_intf/pncconf/pncconf.glade:17895 +#: src/emc/usr_intf/pncconf/pncconf.glade:20087 +#: src/emc/usr_intf/pncconf/pncconf.glade:21680 +#: src/emc/usr_intf/pncconf/pncconf.glade:23476 +#: src/emc/usr_intf/pncconf/pncconf.glade:25272 +msgid "41:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2739 -#: src/emc/usr_intf/pncconf/pncconf.glade:3620 -#: src/emc/usr_intf/pncconf/pncconf.glade:4501 -msgid "Use MPG " +#: src/emc/usr_intf/pncconf/pncconf.glade:9916 +#: src/emc/usr_intf/pncconf/pncconf.glade:12725 +#: src/emc/usr_intf/pncconf/pncconf.glade:17879 +#: src/emc/usr_intf/pncconf/pncconf.glade:20071 +#: src/emc/usr_intf/pncconf/pncconf.glade:21696 +#: src/emc/usr_intf/pncconf/pncconf.glade:23492 +#: src/emc/usr_intf/pncconf/pncconf.glade:25288 +msgid "39:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2752 -#: src/emc/usr_intf/pncconf/pncconf.glade:3633 -#: src/emc/usr_intf/pncconf/pncconf.glade:4514 -msgid "use switches" +#: src/emc/usr_intf/pncconf/pncconf.glade:9932 +#: src/emc/usr_intf/pncconf/pncconf.glade:12709 +#: src/emc/usr_intf/pncconf/pncconf.glade:17863 +#: src/emc/usr_intf/pncconf/pncconf.glade:20055 +#: src/emc/usr_intf/pncconf/pncconf.glade:21712 +#: src/emc/usr_intf/pncconf/pncconf.glade:23508 +#: src/emc/usr_intf/pncconf/pncconf.glade:25304 +msgid "37:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2838 -#: src/emc/usr_intf/pncconf/pncconf.glade:3733 -#: src/emc/usr_intf/pncconf/pncconf.glade:4614 -msgid "ignore all-inputs false" +#: src/emc/usr_intf/pncconf/pncconf.glade:9948 +#: src/emc/usr_intf/pncconf/pncconf.glade:12693 +#: src/emc/usr_intf/pncconf/pncconf.glade:17847 +#: src/emc/usr_intf/pncconf/pncconf.glade:20039 +#: src/emc/usr_intf/pncconf/pncconf.glade:21728 +#: src/emc/usr_intf/pncconf/pncconf.glade:23524 +#: src/emc/usr_intf/pncconf/pncconf.glade:25320 +msgid "35:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2853 -#: src/emc/usr_intf/pncconf/pncconf.glade:3748 -#: src/emc/usr_intf/pncconf/pncconf.glade:4629 -#, fuzzy -msgid "use graycode" -msgstr "Неиспользованный енкодер" +#: src/emc/usr_intf/pncconf/pncconf.glade:9964 +#: src/emc/usr_intf/pncconf/pncconf.glade:12677 +#: src/emc/usr_intf/pncconf/pncconf.glade:17831 +#: src/emc/usr_intf/pncconf/pncconf.glade:20023 +#: src/emc/usr_intf/pncconf/pncconf.glade:21744 +#: src/emc/usr_intf/pncconf/pncconf.glade:23540 +#: src/emc/usr_intf/pncconf/pncconf.glade:25336 +msgid "33:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2940 -#: src/emc/usr_intf/pncconf/pncconf.glade:3821 -#: src/emc/usr_intf/pncconf/pncconf.glade:4702 -msgid " abd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:10337 +#: src/emc/usr_intf/pncconf/pncconf.glade:12304 +#: src/emc/usr_intf/pncconf/pncconf.glade:17458 +#: src/emc/usr_intf/pncconf/pncconf.glade:19762 +#: src/emc/usr_intf/pncconf/pncconf.glade:22005 +#: src/emc/usr_intf/pncconf/pncconf.glade:23801 +#: src/emc/usr_intf/pncconf/pncconf.glade:25597 +msgid "25:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:3555 -#: src/emc/usr_intf/pncconf/pncconf.glade:4436 -#: src/emc/usr_intf/pncconf/pncconf.glade:5317 -#, fuzzy -msgid "Increments" -msgstr "Увеличить" +#: src/emc/usr_intf/pncconf/pncconf.glade:10353 +#: src/emc/usr_intf/pncconf/pncconf.glade:12288 +#: src/emc/usr_intf/pncconf/pncconf.glade:17442 +#: src/emc/usr_intf/pncconf/pncconf.glade:19746 +#: src/emc/usr_intf/pncconf/pncconf.glade:22021 +#: src/emc/usr_intf/pncconf/pncconf.glade:23817 +#: src/emc/usr_intf/pncconf/pncconf.glade:25613 +msgid "27:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:3589 -#, fuzzy -msgid "External Feed Override" -msgstr "Изменить подачу:" +#: src/emc/usr_intf/pncconf/pncconf.glade:10369 +#: src/emc/usr_intf/pncconf/pncconf.glade:12272 +#: src/emc/usr_intf/pncconf/pncconf.glade:17426 +#: src/emc/usr_intf/pncconf/pncconf.glade:19730 +#: src/emc/usr_intf/pncconf/pncconf.glade:22037 +#: src/emc/usr_intf/pncconf/pncconf.glade:23833 +#: src/emc/usr_intf/pncconf/pncconf.glade:25629 +msgid "29:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:4470 -#, fuzzy -msgid "Max Velocity Override" -msgstr "Изменить максимальную подачу:" +#: src/emc/usr_intf/pncconf/pncconf.glade:10385 +#: src/emc/usr_intf/pncconf/pncconf.glade:12256 +#: src/emc/usr_intf/pncconf/pncconf.glade:17410 +#: src/emc/usr_intf/pncconf/pncconf.glade:19714 +#: src/emc/usr_intf/pncconf/pncconf.glade:22053 +#: src/emc/usr_intf/pncconf/pncconf.glade:23849 +#: src/emc/usr_intf/pncconf/pncconf.glade:25645 +msgid "31:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5351 -#, fuzzy -msgid "External Spindle Override" -msgstr "Изменить обороты шпинделя:" +#: src/emc/usr_intf/pncconf/pncconf.glade:10677 +#: src/emc/usr_intf/pncconf/pncconf.glade:10689 +#: src/emc/usr_intf/pncconf/pncconf.glade:11955 +#: src/emc/usr_intf/pncconf/pncconf.glade:11967 +#: src/emc/usr_intf/pncconf/pncconf.glade:14464 +#: src/emc/usr_intf/pncconf/pncconf.glade:14476 +#: src/emc/usr_intf/pncconf/pncconf.glade:17161 +#: src/emc/usr_intf/pncconf/pncconf.glade:17173 +#: src/emc/usr_intf/pncconf/pncconf.glade:19567 +#: src/emc/usr_intf/pncconf/pncconf.glade:19579 +#: src/emc/usr_intf/pncconf/pncconf.glade:22190 +#: src/emc/usr_intf/pncconf/pncconf.glade:22202 +#: src/emc/usr_intf/pncconf/pncconf.glade:23986 +#: src/emc/usr_intf/pncconf/pncconf.glade:23998 +#: src/emc/usr_intf/pncconf/pncconf.glade:25782 +#: src/emc/usr_intf/pncconf/pncconf.glade:25794 +#: src/emc/usr_intf/pncconf/pncconf.glade:28287 +#: src/emc/usr_intf/pncconf/pncconf.glade:28299 +#: src/emc/usr_intf/pncconf/pncconf.glade:29415 +#: src/emc/usr_intf/pncconf/pncconf.glade:29427 +#: src/emc/usr_intf/pncconf/pncconf.glade:32869 +#: src/emc/usr_intf/pncconf/pncconf.glade:33760 +#: src/emc/usr_intf/pncconf/pncconf.glade:33772 +#: src/emc/usr_intf/pncconf/pncconf.glade:37771 +#: src/emc/usr_intf/pncconf/pncconf.glade:37783 +#: src/emc/usr_intf/pncconf/pncconf.glade:38777 +#: src/emc/usr_intf/pncconf/pncconf.glade:38789 +#: src/emc/usr_intf/pncconf/pncconf.glade:42131 +#: src/emc/usr_intf/pncconf/pncconf.glade:42143 +#: src/emc/usr_intf/pncconf/pncconf.glade:43259 +#: src/emc/usr_intf/pncconf/pncconf.glade:43271 +#: src/emc/usr_intf/pncconf/pncconf.glade:46702 +#: src/emc/usr_intf/pncconf/pncconf.glade:46714 +#: src/emc/usr_intf/pncconf/pncconf.glade:49054 +#: src/emc/usr_intf/pncconf/pncconf.glade:49066 +#: src/emc/usr_intf/pncconf/pncconf.glade:50182 +#: src/emc/usr_intf/pncconf/pncconf.glade:50194 +#: src/emc/usr_intf/pncconf/pncconf.glade:53625 +#: src/emc/usr_intf/pncconf/pncconf.glade:53637 +#: src/emc/usr_intf/pncconf/pncconf.glade:55977 +#: src/emc/usr_intf/pncconf/pncconf.glade:55989 +#: src/emc/usr_intf/pncconf/pncconf.glade:57105 +#: src/emc/usr_intf/pncconf/pncconf.glade:57117 +#: src/emc/usr_intf/pncconf/pncconf.glade:60548 +#: src/emc/usr_intf/pncconf/pncconf.glade:60560 +msgid "function" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5379 -msgid "GUI configuration" -msgstr "Конфигурация окон" +#: src/emc/usr_intf/pncconf/pncconf.glade:10703 +#: src/emc/usr_intf/pncconf/pncconf.glade:11940 +#: src/emc/usr_intf/pncconf/pncconf.glade:14449 +#: src/emc/usr_intf/pncconf/pncconf.glade:17146 +#: src/emc/usr_intf/pncconf/pncconf.glade:19553 +#: src/emc/usr_intf/pncconf/pncconf.glade:22217 +#: src/emc/usr_intf/pncconf/pncconf.glade:24013 +#: src/emc/usr_intf/pncconf/pncconf.glade:25809 +msgid "Launch test panel" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5398 -msgid "Frontend" +#: src/emc/usr_intf/pncconf/pncconf.glade:11192 +#: src/emc/usr_intf/pncconf/pncconf.glade:11204 +#: src/emc/usr_intf/pncconf/pncconf.glade:11440 +#: src/emc/usr_intf/pncconf/pncconf.glade:11454 +#: src/emc/usr_intf/pncconf/pncconf.glade:13949 +#: src/emc/usr_intf/pncconf/pncconf.glade:13963 +#: src/emc/usr_intf/pncconf/pncconf.glade:16645 +#: src/emc/usr_intf/pncconf/pncconf.glade:16659 +#: src/emc/usr_intf/pncconf/pncconf.glade:19190 +#: src/emc/usr_intf/pncconf/pncconf.glade:19204 +#: src/emc/usr_intf/pncconf/pncconf.glade:22567 +#: src/emc/usr_intf/pncconf/pncconf.glade:22579 +#: src/emc/usr_intf/pncconf/pncconf.glade:24363 +#: src/emc/usr_intf/pncconf/pncconf.glade:24375 +#: src/emc/usr_intf/pncconf/pncconf.glade:26159 +#: src/emc/usr_intf/pncconf/pncconf.glade:26171 +#: src/emc/usr_intf/pncconf/pncconf.glade:28772 +#: src/emc/usr_intf/pncconf/pncconf.glade:28784 +#: src/emc/usr_intf/pncconf/pncconf.glade:28917 +#: src/emc/usr_intf/pncconf/pncconf.glade:28931 +#: src/emc/usr_intf/pncconf/pncconf.glade:33102 +#: src/emc/usr_intf/pncconf/pncconf.glade:33275 +#: src/emc/usr_intf/pncconf/pncconf.glade:33289 +#: src/emc/usr_intf/pncconf/pncconf.glade:38269 +#: src/emc/usr_intf/pncconf/pncconf.glade:38281 +#: src/emc/usr_intf/pncconf/pncconf.glade:38532 +#: src/emc/usr_intf/pncconf/pncconf.glade:38546 +#: src/emc/usr_intf/pncconf/pncconf.glade:42616 +#: src/emc/usr_intf/pncconf/pncconf.glade:42628 +#: src/emc/usr_intf/pncconf/pncconf.glade:42761 +#: src/emc/usr_intf/pncconf/pncconf.glade:42775 +#: src/emc/usr_intf/pncconf/pncconf.glade:46947 +#: src/emc/usr_intf/pncconf/pncconf.glade:46959 +#: src/emc/usr_intf/pncconf/pncconf.glade:49539 +#: src/emc/usr_intf/pncconf/pncconf.glade:49551 +#: src/emc/usr_intf/pncconf/pncconf.glade:49684 +#: src/emc/usr_intf/pncconf/pncconf.glade:49698 +#: src/emc/usr_intf/pncconf/pncconf.glade:53870 +#: src/emc/usr_intf/pncconf/pncconf.glade:53882 +#: src/emc/usr_intf/pncconf/pncconf.glade:56462 +#: src/emc/usr_intf/pncconf/pncconf.glade:56474 +#: src/emc/usr_intf/pncconf/pncconf.glade:56607 +#: src/emc/usr_intf/pncconf/pncconf.glade:56621 +#: src/emc/usr_intf/pncconf/pncconf.glade:60793 +#: src/emc/usr_intf/pncconf/pncconf.glade:60805 +msgid "Num" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5557 +#: src/emc/usr_intf/pncconf/pncconf.glade:11222 msgid "" -"Commanded\n" -"Actual" +" I/O\n" +"Connector 2" msgstr "" -"Заданная\n" -"Настоящая" -#: src/emc/usr_intf/pncconf/pncconf.glade:5570 +#: src/emc/usr_intf/pncconf/pncconf.glade:13835 msgid "" -"Machine\n" -"Relative\n" +" I/O\n" +" Connector 3" msgstr "" -"Станочная\n" -"Относительная\n" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5608 -msgid "Max Feed Override" -msgstr "Изменить максимальную подачу:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5667 -msgid "Min Spindle Override" -msgstr "Минимальное изменение шпинделя" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5691 -msgid "Max Spindle Override " -msgstr "Максимальное изменение шпинделя" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5702 -msgid "Position_feedback" -msgstr "Обратная связь по позиции" -#: src/emc/usr_intf/pncconf/pncconf.glade:5713 -msgid "Position_offset" -msgstr "Отступ позиции" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5721 -msgid "General GUI Defaults" +#: src/emc/usr_intf/pncconf/pncconf.glade:16281 +#: src/emc/usr_intf/pncconf/pncconf.glade:16295 +#: src/emc/usr_intf/pncconf/pncconf.glade:16322 +#: src/emc/usr_intf/pncconf/pncconf.glade:26441 +#: src/emc/usr_intf/pncconf/pncconf.glade:26468 +#: src/emc/usr_intf/pncconf/pncconf.glade:26482 +#: src/emc/usr_intf/pncconf/pncconf.glade:31232 +#: src/emc/usr_intf/pncconf/pncconf.glade:31246 +#: src/emc/usr_intf/pncconf/pncconf.glade:31273 +#: src/emc/usr_intf/pncconf/pncconf.glade:31708 +#: src/emc/usr_intf/pncconf/pncconf.glade:31735 +#: src/emc/usr_intf/pncconf/pncconf.glade:31749 +#: src/emc/usr_intf/pncconf/pncconf.glade:35577 +#: src/emc/usr_intf/pncconf/pncconf.glade:35591 +#: src/emc/usr_intf/pncconf/pncconf.glade:35618 +#: src/emc/usr_intf/pncconf/pncconf.glade:35925 +#: src/emc/usr_intf/pncconf/pncconf.glade:35952 +#: src/emc/usr_intf/pncconf/pncconf.glade:35966 +#: src/emc/usr_intf/pncconf/pncconf.glade:39909 +#: src/emc/usr_intf/pncconf/pncconf.glade:39923 +#: src/emc/usr_intf/pncconf/pncconf.glade:39950 +#: src/emc/usr_intf/pncconf/pncconf.glade:40285 +#: src/emc/usr_intf/pncconf/pncconf.glade:40312 +#: src/emc/usr_intf/pncconf/pncconf.glade:40326 +#: src/emc/usr_intf/pncconf/pncconf.glade:45076 +#: src/emc/usr_intf/pncconf/pncconf.glade:45090 +#: src/emc/usr_intf/pncconf/pncconf.glade:45117 +#: src/emc/usr_intf/pncconf/pncconf.glade:45541 +#: src/emc/usr_intf/pncconf/pncconf.glade:45568 +#: src/emc/usr_intf/pncconf/pncconf.glade:45582 +#: src/emc/usr_intf/pncconf/pncconf.glade:47208 +#: src/emc/usr_intf/pncconf/pncconf.glade:47235 +#: src/emc/usr_intf/pncconf/pncconf.glade:47249 +#: src/emc/usr_intf/pncconf/pncconf.glade:51999 +#: src/emc/usr_intf/pncconf/pncconf.glade:52013 +#: src/emc/usr_intf/pncconf/pncconf.glade:52040 +#: src/emc/usr_intf/pncconf/pncconf.glade:52464 +#: src/emc/usr_intf/pncconf/pncconf.glade:52491 +#: src/emc/usr_intf/pncconf/pncconf.glade:52505 +#: src/emc/usr_intf/pncconf/pncconf.glade:54131 +#: src/emc/usr_intf/pncconf/pncconf.glade:54158 +#: src/emc/usr_intf/pncconf/pncconf.glade:54172 +#: src/emc/usr_intf/pncconf/pncconf.glade:58922 +#: src/emc/usr_intf/pncconf/pncconf.glade:58936 +#: src/emc/usr_intf/pncconf/pncconf.glade:58963 +#: src/emc/usr_intf/pncconf/pncconf.glade:59387 +#: src/emc/usr_intf/pncconf/pncconf.glade:59414 +#: src/emc/usr_intf/pncconf/pncconf.glade:59428 +msgid " " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5808 -msgid "Force Axis to Maximize" +#: src/emc/usr_intf/pncconf/pncconf.glade:16427 +msgid "" +" I/O\n" +" Connector 4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5832 -#: src/emc/usr_intf/pncconf/pncconf.glade:6602 -#: src/emc/usr_intf/pncconf/pncconf.glade:6841 -#: src/emc/usr_intf/pncconf/pncconf.glade:7328 -msgid "H" +#: src/emc/usr_intf/pncconf/pncconf.glade:19041 +msgid "" +" I/O\n" +" Connector 5" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5866 -#: src/emc/usr_intf/pncconf/pncconf.glade:6568 -#: src/emc/usr_intf/pncconf/pncconf.glade:6875 -#: src/emc/usr_intf/pncconf/pncconf.glade:7294 -msgid "W" +#: src/emc/usr_intf/pncconf/pncconf.glade:20837 +msgid "" +" I/O\n" +"Connector 6" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5876 -#: src/emc/usr_intf/pncconf/pncconf.glade:6556 -#: src/emc/usr_intf/pncconf/pncconf.glade:6885 -#: src/emc/usr_intf/pncconf/pncconf.glade:7282 -msgid "X" +#: src/emc/usr_intf/pncconf/pncconf.glade:22633 +msgid "" +" I/O\n" +"Connector 7" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5914 -#: src/emc/usr_intf/pncconf/pncconf.glade:6519 -#: src/emc/usr_intf/pncconf/pncconf.glade:6923 -#: src/emc/usr_intf/pncconf/pncconf.glade:7244 -msgid "Position" -msgstr "Позиция" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5927 -#: src/emc/usr_intf/pncconf/pncconf.glade:6510 -#: src/emc/usr_intf/pncconf/pncconf.glade:6936 -#: src/emc/usr_intf/pncconf/pncconf.glade:7234 -msgid "size" -msgstr "Размер" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5942 -#: src/emc/usr_intf/pncconf/pncconf.glade:5952 -#: src/emc/usr_intf/pncconf/pncconf.glade:6158 -msgid "mm / min" +#: src/emc/usr_intf/pncconf/pncconf.glade:24429 +msgid "" +" I/O\n" +"Connector 8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5975 -#: src/emc/usr_intf/pncconf/pncconf.glade:5985 -#: src/emc/usr_intf/pncconf/pncconf.glade:5997 -msgid "Deg / min" -msgstr "градусы/мин" - -#: src/emc/usr_intf/pncconf/pncconf.glade:6010 -msgid "xyzabc" +#: src/emc/usr_intf/pncconf/pncconf.glade:26225 +msgid "" +" I/O\n" +" Connector 9" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6023 -msgid "Axis Geometry" +#: src/emc/usr_intf/pncconf/pncconf.glade:31378 +#: src/emc/usr_intf/pncconf/pncconf.glade:38299 +#: src/emc/usr_intf/pncconf/pncconf.glade:45222 +#: src/emc/usr_intf/pncconf/pncconf.glade:52145 +#: src/emc/usr_intf/pncconf/pncconf.glade:59068 +msgid "page 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6048 -msgid "Max Angular velocity" -msgstr "Максимальная скорость вращения:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:6061 -msgid "5mm 1mm .5mm .1mm .05mm .01mm .005mm" +#: src/emc/usr_intf/pncconf/pncconf.glade:33131 +#: src/emc/usr_intf/pncconf/pncconf.glade:40054 +#: src/emc/usr_intf/pncconf/pncconf.glade:46977 +#: src/emc/usr_intf/pncconf/pncconf.glade:53900 +#: src/emc/usr_intf/pncconf/pncconf.glade:60823 +msgid "page 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6074 -msgid "Increments " -msgstr "Увеличить" +#: src/emc/usr_intf/pncconf/pncconf.glade:33147 +msgid "Smart Serial 0" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6099 -msgid "Min Angular velocity" -msgstr "Максимальная скорость вращения:" +#: src/emc/usr_intf/pncconf/pncconf.glade:40070 +msgid "Smart Serial 1" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6112 -msgid "gedit" +#: src/emc/usr_intf/pncconf/pncconf.glade:46993 +msgid "Smart Serial 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6148 -msgid "Default Angular velocity " +#: src/emc/usr_intf/pncconf/pncconf.glade:53916 +msgid "Smart Serial 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6211 -msgid "Max linear velocity" -msgstr "Максимальная скорость" +#: src/emc/usr_intf/pncconf/pncconf.glade:60839 +msgid "Smart Serial 4" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6222 -msgid "Min linear velocity" -msgstr "Минимальная скорость" +#: src/emc/usr_intf/pncconf/pncconf.glade:60861 +msgid "First Parallel Port Setup" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6233 -msgid "Default linear velocity " -msgstr "Скорость по умолчанию" +#: src/emc/usr_intf/pncconf/pncconf.glade:60946 +msgid "Launch Test Panel" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6241 -msgid "AXIS defaults" -msgstr "умолчания AXIS" +#: src/emc/usr_intf/pncconf/pncconf.glade:62374 +msgid "Inputs (Machine to PC):" +msgstr "Входы (От станка к PC)" -#: src/emc/usr_intf/pncconf/pncconf.glade:6352 -msgid "Error Textcolor" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:62929 +msgid "Outputs (PC to Machine):" +msgstr "Выходы (от PC к станку)" -#: src/emc/usr_intf/pncconf/pncconf.glade:6365 -msgid "DTG Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:62950 +msgid "X Axis Motor/Encoder Configuration" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6378 +#: src/emc/usr_intf/pncconf/pncconf.glade:63005 #, fuzzy -msgid "Relative Textcolor" -msgstr "Относительная позиция" - -#: src/emc/usr_intf/pncconf/pncconf.glade:6391 -#, fuzzy -msgid "Absolute Textcolor" -msgstr "Абсолютный" +msgid "Max Output" +msgstr "GPIO выход" -#: src/emc/usr_intf/pncconf/pncconf.glade:6454 -msgid "Absolute Text Color" +#: src/emc/usr_intf/pncconf/pncconf.glade:63070 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6479 -#: src/emc/usr_intf/pncconf/pncconf.glade:7148 -msgid "GTK Theme" +#: src/emc/usr_intf/pncconf/pncconf.glade:63083 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6491 -#: src/emc/usr_intf/pncconf/pncconf.glade:7158 -msgid "Follow System Theme\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:63096 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF0" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6624 -msgid "Force Touchy to Maximize after positioning" +#: src/emc/usr_intf/pncconf/pncconf.glade:63143 +msgid "Deadband" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6669 -#, fuzzy -msgid "GUI Options" -msgstr "Опции PLC" - -#: src/emc/usr_intf/pncconf/pncconf.glade:6700 -msgid "Virtual Control Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:63156 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Bias" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6775 -msgid "XYZ buttons (uses Halui)" +#: src/emc/usr_intf/pncconf/pncconf.glade:63169 +msgid "P" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6946 -msgid "Geometry Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:63180 +msgid "I" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7025 -msgid "Pyvcp Details" +#: src/emc/usr_intf/pncconf/pncconf.glade:63193 +msgid "D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7097 -msgid "Sample display " +#: src/emc/usr_intf/pncconf/pncconf.glade:63258 +msgid "Servo Info" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7172 -msgid "Force Maximize" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63337 +#, fuzzy +msgid "3pwm Scale:" +msgstr "Масштаб оси:" -#: src/emc/usr_intf/pncconf/pncconf.glade:7186 -msgid "Center Tab Embeded" +#: src/emc/usr_intf/pncconf/pncconf.glade:63348 +msgid "3pwm Deadtime:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7201 -msgid "Rightside Embeded" +#: src/emc/usr_intf/pncconf/pncconf.glade:63361 +msgid "Quad Pulses / Rev:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7217 -msgid "Standalone Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:63438 +msgid "" +"Open Loop\n" +" Test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7351 +#: src/emc/usr_intf/pncconf/pncconf.glade:63462 #, fuzzy -msgid "Display Options" -msgstr "Показать дюймы" +msgid "Analog Min Limit:" +msgstr "Шпиндель ШИМ" -#: src/emc/usr_intf/pncconf/pncconf.glade:7401 -msgid "Max RPM" +#: src/emc/usr_intf/pncconf/pncconf.glade:63476 +#, fuzzy +msgid "Analog Max limit:" +msgstr "Шпиндель быстрее" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63490 +msgid "Analog Max Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7414 +#: src/emc/usr_intf/pncconf/pncconf.glade:63554 #, fuzzy -msgid "Spindle Speed Indicator" -msgstr "Обороты шпинделя" +msgid "Output Info" +msgstr "Инфо по отступу" -#: src/emc/usr_intf/pncconf/pncconf.glade:7426 -#, fuzzy -msgid "Spindle At Speed LED" -msgstr "Обороты шпинделя" +#: src/emc/usr_intf/pncconf/pncconf.glade:63603 +msgid "Step On-Time" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63616 +msgid "Step Space" +msgstr "Пауза шага" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63659 +msgid "Direction Hold" +msgstr "Удержание Направления" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63672 +msgid "Direction Setup" +msgstr "Установка направления" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63715 +msgid "Driver Type:" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63748 +msgid "Stepper Info" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7438 +#: src/emc/usr_intf/pncconf/pncconf.glade:63800 #, fuzzy -msgid "Zero X Button" -msgstr "Левая кнопка" +msgid "No feedback" +msgstr "Обратная связь по позиции" -#: src/emc/usr_intf/pncconf/pncconf.glade:7450 +#: src/emc/usr_intf/pncconf/pncconf.glade:63810 #, fuzzy -msgid "Zero Y Button" -msgstr "Левая кнопка" +msgid "Absolute Feedback" +msgstr "Абсолютный" -#: src/emc/usr_intf/pncconf/pncconf.glade:7462 +#: src/emc/usr_intf/pncconf/pncconf.glade:63824 #, fuzzy -msgid "Zero Z Button" -msgstr "Левая кнопка" +msgid "Incremental Feedback" +msgstr "Увеличить" -#: src/emc/usr_intf/pncconf/pncconf.glade:7474 +#: src/emc/usr_intf/pncconf/pncconf.glade:63838 #, fuzzy -msgid "Zero A Button" -msgstr "Левая кнопка" +msgid "Incremental Encoder" +msgstr "Инвертировать энкодер" -#: src/emc/usr_intf/pncconf/pncconf.glade:7486 -msgid "Requires Classicladder touch-off program" +#: src/emc/usr_intf/pncconf/pncconf.glade:63850 +msgid "Hall sensors" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7487 -msgid "Auto Z Touch Off Button" +#: src/emc/usr_intf/pncconf/pncconf.glade:63862 +msgid "Fanuc Red Cap " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7500 +#: src/emc/usr_intf/pncconf/pncconf.glade:63874 #, fuzzy -msgid "Sample Options" -msgstr "Пример устнавок Pyvcp" +msgid "Use encoder Index" +msgstr "Неиспользованный енкодер" -#: src/emc/usr_intf/pncconf/pncconf.glade:7574 -msgid "Gladevcp Details" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63905 +#, fuzzy +msgid "Input Options" +msgstr "Опции программы" -#: src/emc/usr_intf/pncconf/pncconf.glade:7597 +#: src/emc/usr_intf/pncconf/pncconf.glade:63929 #, fuzzy -msgid "Include custom GladeVCP GUI panel" -msgstr "Добавить PyVCP GUI панель" +msgid "Digital instead of PWM outputs" +msgstr "Выбранный цифровой вход вне диапазона" -#: src/emc/usr_intf/pncconf/pncconf.glade:7668 -msgid "Restore joint position after shutdown" +#: src/emc/usr_intf/pncconf/pncconf.glade:63938 +msgid "6 outputs instead of 3 " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7683 -msgid "Move spindle up before tool change" -msgstr "Поднимите шпиндель перед сменой инструмента" - -#: src/emc/usr_intf/pncconf/pncconf.glade:7696 -msgid "Leave spindle on during tool change" +#: src/emc/usr_intf/pncconf/pncconf.glade:63950 +msgid "Force Trapezoid Mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7709 -msgid "Popup Toolchange Prompt" +#: src/emc/usr_intf/pncconf/pncconf.glade:63962 +msgid "Emulate feedback " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7723 -msgid "Require homing before MDI / Running" +#: src/emc/usr_intf/pncconf/pncconf.glade:63974 +msgid "Emulated Hall sensors" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7732 -msgid "Random position toolchanger " +#: src/emc/usr_intf/pncconf/pncconf.glade:63987 +msgid "Emulated Fanuc Red Cap" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7747 -msgid "Force individual manual homing" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64014 +#, fuzzy +msgid "8i20 Max Current" +msgstr "Текущий" -#: src/emc/usr_intf/pncconf/pncconf.glade:7761 -msgid "Defaults and Options" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64048 +#, fuzzy +msgid "Output Options" +msgstr "Опции программы" -#: src/emc/usr_intf/pncconf/pncconf.glade:7789 -msgid "Mesa0 I/O setup\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:64103 +msgid "alignment current" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7809 -msgid "" -"Click on each page tab to configure signal names for each connector port.\n" -"\n" -"Press the button to make the tabbed pages\n" -"accept the changes.\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:64113 +msgid "lead angle" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7998 -msgid "Num of channels: " -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64213 +#, fuzzy +msgid "Reverse" +msgstr "Шпиндель назад:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8036 -msgid "7i29 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:64223 +msgid "Input-pattern" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8045 -msgid "7i30 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:64233 +msgid "output-pattern" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8057 -msgid "7i33 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:64243 +msgid "Drive-offset" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8069 -msgid "7i40 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:64253 +msgid "Encoder-offset" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8081 -msgid "7i48 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:64263 +msgid "Poles" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8096 +#: src/emc/usr_intf/pncconf/pncconf.glade:64283 #, fuzzy -msgid "Sanity Checks" -msgstr "Штурвал" +msgid "Configuration" +msgstr "Установки *" -#: src/emc/usr_intf/pncconf/pncconf.glade:8137 -msgid "Num of Smart Serial Ports:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64318 +msgid "Use BLDC Motor Commutation Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8148 -msgid "Board name" -msgstr "Имя платы" +#: src/emc/usr_intf/pncconf/pncconf.glade:64354 +#, fuzzy +msgid "Scale:" +msgstr "Масштаб" -#: src/emc/usr_intf/pncconf/pncconf.glade:8155 -msgid "Num of step generators: " -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64375 +#, fuzzy +msgid "% " +msgstr "%" -#: src/emc/usr_intf/pncconf/pncconf.glade:8166 -msgid "Num of pwm generators:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64394 +msgid "Range:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8177 -msgid "Num of encoders:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64419 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "RPM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8294 -msgid "Watchdog timeout:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64439 +#, fuzzy +msgid "Use Spindle-At-Speed" +msgstr "Шпиндель" -#: src/emc/usr_intf/pncconf/pncconf.glade:8305 -msgid "PDM base frequency:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64464 +#, fuzzy +msgid "Filter gain:" +msgstr "Ошибка фильтра" -#: src/emc/usr_intf/pncconf/pncconf.glade:8316 -msgid "PWM base frequency:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64499 +msgid "Spindle Display Filter Settings" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8328 -msgid "" -"Accept components\n" -" Changes" +#: src/emc/usr_intf/pncconf/pncconf.glade:64565 +msgid "Rapid Speed Following Error:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8356 -msgid "Total number of pins:" -msgstr "Общее число контактов:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:8389 -msgid "Num of 3 pwm generators: " +#: src/emc/usr_intf/pncconf/pncconf.glade:64577 +msgid "Feed Speed Following Error:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8412 -msgid "SVST8_4" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64591 +msgid "Invert Motor Direction" +msgstr "изменить направление мотора" -#: src/emc/usr_intf/pncconf/pncconf.glade:8437 -msgid "Firmware:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64606 +msgid "Invert Encoder Direction " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8447 -msgid "Mesa parport address:" -msgstr "Адрес порта MESA:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64661 +#, fuzzy +msgid "Single Input Encoder" +msgstr "Инвертировать энкодер" -#: src/emc/usr_intf/pncconf/pncconf.glade:8482 -msgid "3PWM base frequency:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64776 +#, fuzzy +msgid "encoder Scale:" +msgstr "Множитель энкодера:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64801 +#, fuzzy +msgid "Stepper Scale:" +msgstr "Пауза шага:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8504 +#: src/emc/usr_intf/pncconf/pncconf.glade:64831 msgid "" -"Configuration\n" -" Page" +"Calculate\n" +"Scale" msgstr "" -"Страница\n" -"установок" -#: src/emc/usr_intf/pncconf/pncconf.glade:8698 -#: src/emc/usr_intf/pncconf/pncconf.glade:8712 -#: src/emc/usr_intf/pncconf/pncconf.glade:13677 -#: src/emc/usr_intf/pncconf/pncconf.glade:13689 -#: src/emc/usr_intf/pncconf/pncconf.glade:16373 -#: src/emc/usr_intf/pncconf/pncconf.glade:16385 -#: src/emc/usr_intf/pncconf/pncconf.glade:18883 -#: src/emc/usr_intf/pncconf/pncconf.glade:18895 -#: src/emc/usr_intf/pncconf/pncconf.glade:20747 -#: src/emc/usr_intf/pncconf/pncconf.glade:20759 -#: src/emc/usr_intf/pncconf/pncconf.glade:20962 -#: src/emc/usr_intf/pncconf/pncconf.glade:20976 -#: src/emc/usr_intf/pncconf/pncconf.glade:22758 -#: src/emc/usr_intf/pncconf/pncconf.glade:22772 -#: src/emc/usr_intf/pncconf/pncconf.glade:24554 -#: src/emc/usr_intf/pncconf/pncconf.glade:24568 -#: src/emc/usr_intf/pncconf/pncconf.glade:26330 -#: src/emc/usr_intf/pncconf/pncconf.glade:26344 -#: src/emc/usr_intf/pncconf/pncconf.glade:31324 -#: src/emc/usr_intf/pncconf/pncconf.glade:31336 -#: src/emc/usr_intf/pncconf/pncconf.glade:31600 -#: src/emc/usr_intf/pncconf/pncconf.glade:35669 -#: src/emc/usr_intf/pncconf/pncconf.glade:35681 -#: src/emc/usr_intf/pncconf/pncconf.glade:35814 -#: src/emc/usr_intf/pncconf/pncconf.glade:35828 -#: src/emc/usr_intf/pncconf/pncconf.glade:40000 -#: src/emc/usr_intf/pncconf/pncconf.glade:40012 -#: src/emc/usr_intf/pncconf/pncconf.glade:40174 -#: src/emc/usr_intf/pncconf/pncconf.glade:40188 -#: src/emc/usr_intf/pncconf/pncconf.glade:45168 -#: src/emc/usr_intf/pncconf/pncconf.glade:45180 -#: src/emc/usr_intf/pncconf/pncconf.glade:45431 -#: src/emc/usr_intf/pncconf/pncconf.glade:45445 -#: src/emc/usr_intf/pncconf/pncconf.glade:47097 -#: src/emc/usr_intf/pncconf/pncconf.glade:47111 -#: src/emc/usr_intf/pncconf/pncconf.glade:52091 -#: src/emc/usr_intf/pncconf/pncconf.glade:52103 -#: src/emc/usr_intf/pncconf/pncconf.glade:52354 -#: src/emc/usr_intf/pncconf/pncconf.glade:52368 -msgid "Num" +#: src/emc/usr_intf/pncconf/pncconf.glade:64901 +msgid "Test / Tune Axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8723 -#: src/emc/usr_intf/pncconf/pncconf.glade:8743 -#: src/emc/usr_intf/pncconf/pncconf.glade:8763 -#: src/emc/usr_intf/pncconf/pncconf.glade:8783 -#: src/emc/usr_intf/pncconf/pncconf.glade:8803 -#: src/emc/usr_intf/pncconf/pncconf.glade:8823 -#: src/emc/usr_intf/pncconf/pncconf.glade:8843 -#: src/emc/usr_intf/pncconf/pncconf.glade:8863 -#: src/emc/usr_intf/pncconf/pncconf.glade:8883 -#: src/emc/usr_intf/pncconf/pncconf.glade:8903 -#: src/emc/usr_intf/pncconf/pncconf.glade:8923 -#: src/emc/usr_intf/pncconf/pncconf.glade:8943 -#: src/emc/usr_intf/pncconf/pncconf.glade:8963 -#: src/emc/usr_intf/pncconf/pncconf.glade:8983 -#: src/emc/usr_intf/pncconf/pncconf.glade:9003 -#: src/emc/usr_intf/pncconf/pncconf.glade:9023 -#: src/emc/usr_intf/pncconf/pncconf.glade:9043 -#: src/emc/usr_intf/pncconf/pncconf.glade:9063 -#: src/emc/usr_intf/pncconf/pncconf.glade:9083 -#: src/emc/usr_intf/pncconf/pncconf.glade:9103 -#: src/emc/usr_intf/pncconf/pncconf.glade:9123 -#: src/emc/usr_intf/pncconf/pncconf.glade:9143 -#: src/emc/usr_intf/pncconf/pncconf.glade:9163 -#: src/emc/usr_intf/pncconf/pncconf.glade:11027 -#: src/emc/usr_intf/pncconf/pncconf.glade:11353 -#: src/emc/usr_intf/pncconf/pncconf.glade:13216 -#: src/emc/usr_intf/pncconf/pncconf.glade:13236 -#: src/emc/usr_intf/pncconf/pncconf.glade:13256 -#: src/emc/usr_intf/pncconf/pncconf.glade:13276 -#: src/emc/usr_intf/pncconf/pncconf.glade:13296 -#: src/emc/usr_intf/pncconf/pncconf.glade:13316 -#: src/emc/usr_intf/pncconf/pncconf.glade:13336 -#: src/emc/usr_intf/pncconf/pncconf.glade:13356 -#: src/emc/usr_intf/pncconf/pncconf.glade:13376 -#: src/emc/usr_intf/pncconf/pncconf.glade:13396 -#: src/emc/usr_intf/pncconf/pncconf.glade:13416 -#: src/emc/usr_intf/pncconf/pncconf.glade:13436 -#: src/emc/usr_intf/pncconf/pncconf.glade:13456 -#: src/emc/usr_intf/pncconf/pncconf.glade:13476 -#: src/emc/usr_intf/pncconf/pncconf.glade:13496 -#: src/emc/usr_intf/pncconf/pncconf.glade:13516 -#: src/emc/usr_intf/pncconf/pncconf.glade:13536 -#: src/emc/usr_intf/pncconf/pncconf.glade:13556 -#: src/emc/usr_intf/pncconf/pncconf.glade:13576 -#: src/emc/usr_intf/pncconf/pncconf.glade:13596 -#: src/emc/usr_intf/pncconf/pncconf.glade:13616 -#: src/emc/usr_intf/pncconf/pncconf.glade:13636 -#: src/emc/usr_intf/pncconf/pncconf.glade:13656 -#: src/emc/usr_intf/pncconf/pncconf.glade:13966 -#: src/emc/usr_intf/pncconf/pncconf.glade:15912 -#: src/emc/usr_intf/pncconf/pncconf.glade:15932 -#: src/emc/usr_intf/pncconf/pncconf.glade:15952 -#: src/emc/usr_intf/pncconf/pncconf.glade:15972 -#: src/emc/usr_intf/pncconf/pncconf.glade:15992 -#: src/emc/usr_intf/pncconf/pncconf.glade:16012 -#: src/emc/usr_intf/pncconf/pncconf.glade:16032 -#: src/emc/usr_intf/pncconf/pncconf.glade:16052 -#: src/emc/usr_intf/pncconf/pncconf.glade:16072 -#: src/emc/usr_intf/pncconf/pncconf.glade:16092 -#: src/emc/usr_intf/pncconf/pncconf.glade:16112 -#: src/emc/usr_intf/pncconf/pncconf.glade:16132 -#: src/emc/usr_intf/pncconf/pncconf.glade:16152 -#: src/emc/usr_intf/pncconf/pncconf.glade:16172 -#: src/emc/usr_intf/pncconf/pncconf.glade:16192 -#: src/emc/usr_intf/pncconf/pncconf.glade:16212 -#: src/emc/usr_intf/pncconf/pncconf.glade:16232 -#: src/emc/usr_intf/pncconf/pncconf.glade:16252 -#: src/emc/usr_intf/pncconf/pncconf.glade:16272 -#: src/emc/usr_intf/pncconf/pncconf.glade:16292 -#: src/emc/usr_intf/pncconf/pncconf.glade:16312 -#: src/emc/usr_intf/pncconf/pncconf.glade:16332 -#: src/emc/usr_intf/pncconf/pncconf.glade:16352 -#: src/emc/usr_intf/pncconf/pncconf.glade:16558 -#: src/emc/usr_intf/pncconf/pncconf.glade:18422 -#: src/emc/usr_intf/pncconf/pncconf.glade:18442 -#: src/emc/usr_intf/pncconf/pncconf.glade:18462 -#: src/emc/usr_intf/pncconf/pncconf.glade:18482 -#: src/emc/usr_intf/pncconf/pncconf.glade:18502 -#: src/emc/usr_intf/pncconf/pncconf.glade:18522 -#: src/emc/usr_intf/pncconf/pncconf.glade:18542 -#: src/emc/usr_intf/pncconf/pncconf.glade:18562 -#: src/emc/usr_intf/pncconf/pncconf.glade:18582 -#: src/emc/usr_intf/pncconf/pncconf.glade:18602 -#: src/emc/usr_intf/pncconf/pncconf.glade:18622 -#: src/emc/usr_intf/pncconf/pncconf.glade:18642 -#: src/emc/usr_intf/pncconf/pncconf.glade:18662 -#: src/emc/usr_intf/pncconf/pncconf.glade:18682 -#: src/emc/usr_intf/pncconf/pncconf.glade:18702 -#: src/emc/usr_intf/pncconf/pncconf.glade:18722 -#: src/emc/usr_intf/pncconf/pncconf.glade:18742 -#: src/emc/usr_intf/pncconf/pncconf.glade:18762 -#: src/emc/usr_intf/pncconf/pncconf.glade:18782 -#: src/emc/usr_intf/pncconf/pncconf.glade:18802 -#: src/emc/usr_intf/pncconf/pncconf.glade:18822 -#: src/emc/usr_intf/pncconf/pncconf.glade:18842 -#: src/emc/usr_intf/pncconf/pncconf.glade:18862 -#: src/emc/usr_intf/pncconf/pncconf.glade:26355 -#: src/emc/usr_intf/pncconf/pncconf.glade:26375 -#: src/emc/usr_intf/pncconf/pncconf.glade:26395 -#: src/emc/usr_intf/pncconf/pncconf.glade:26415 -#: src/emc/usr_intf/pncconf/pncconf.glade:26435 -#: src/emc/usr_intf/pncconf/pncconf.glade:26455 -#: src/emc/usr_intf/pncconf/pncconf.glade:26475 -#: src/emc/usr_intf/pncconf/pncconf.glade:26495 -#: src/emc/usr_intf/pncconf/pncconf.glade:26515 -#: src/emc/usr_intf/pncconf/pncconf.glade:26535 -#: src/emc/usr_intf/pncconf/pncconf.glade:26555 -#: src/emc/usr_intf/pncconf/pncconf.glade:26575 -#: src/emc/usr_intf/pncconf/pncconf.glade:26595 -#: src/emc/usr_intf/pncconf/pncconf.glade:26615 -#: src/emc/usr_intf/pncconf/pncconf.glade:26635 -#: src/emc/usr_intf/pncconf/pncconf.glade:26655 -#: src/emc/usr_intf/pncconf/pncconf.glade:26675 -#: src/emc/usr_intf/pncconf/pncconf.glade:26695 -#: src/emc/usr_intf/pncconf/pncconf.glade:26715 -#: src/emc/usr_intf/pncconf/pncconf.glade:26735 -#: src/emc/usr_intf/pncconf/pncconf.glade:26755 -#: src/emc/usr_intf/pncconf/pncconf.glade:26775 -#: src/emc/usr_intf/pncconf/pncconf.glade:26795 -#: src/emc/usr_intf/pncconf/pncconf.glade:28711 -#: src/emc/usr_intf/pncconf/pncconf.glade:28934 -#: src/emc/usr_intf/pncconf/pncconf.glade:30863 -#: src/emc/usr_intf/pncconf/pncconf.glade:30883 -#: src/emc/usr_intf/pncconf/pncconf.glade:30903 -#: src/emc/usr_intf/pncconf/pncconf.glade:30923 -#: src/emc/usr_intf/pncconf/pncconf.glade:30943 -#: src/emc/usr_intf/pncconf/pncconf.glade:30963 -#: src/emc/usr_intf/pncconf/pncconf.glade:30983 -#: src/emc/usr_intf/pncconf/pncconf.glade:31003 -#: src/emc/usr_intf/pncconf/pncconf.glade:31023 -#: src/emc/usr_intf/pncconf/pncconf.glade:31043 -#: src/emc/usr_intf/pncconf/pncconf.glade:31063 -#: src/emc/usr_intf/pncconf/pncconf.glade:31083 -#: src/emc/usr_intf/pncconf/pncconf.glade:31103 -#: src/emc/usr_intf/pncconf/pncconf.glade:31123 -#: src/emc/usr_intf/pncconf/pncconf.glade:31143 -#: src/emc/usr_intf/pncconf/pncconf.glade:31163 -#: src/emc/usr_intf/pncconf/pncconf.glade:31183 -#: src/emc/usr_intf/pncconf/pncconf.glade:31203 -#: src/emc/usr_intf/pncconf/pncconf.glade:31223 -#: src/emc/usr_intf/pncconf/pncconf.glade:31243 -#: src/emc/usr_intf/pncconf/pncconf.glade:31263 -#: src/emc/usr_intf/pncconf/pncconf.glade:31283 -#: src/emc/usr_intf/pncconf/pncconf.glade:31303 -#: src/emc/usr_intf/pncconf/pncconf.glade:31611 -#: src/emc/usr_intf/pncconf/pncconf.glade:31631 -#: src/emc/usr_intf/pncconf/pncconf.glade:31651 -#: src/emc/usr_intf/pncconf/pncconf.glade:31671 -#: src/emc/usr_intf/pncconf/pncconf.glade:31691 -#: src/emc/usr_intf/pncconf/pncconf.glade:31711 -#: src/emc/usr_intf/pncconf/pncconf.glade:31731 -#: src/emc/usr_intf/pncconf/pncconf.glade:31751 -#: src/emc/usr_intf/pncconf/pncconf.glade:31771 -#: src/emc/usr_intf/pncconf/pncconf.glade:31791 -#: src/emc/usr_intf/pncconf/pncconf.glade:31811 -#: src/emc/usr_intf/pncconf/pncconf.glade:33029 -#: src/emc/usr_intf/pncconf/pncconf.glade:33292 -#: src/emc/usr_intf/pncconf/pncconf.glade:35208 -#: src/emc/usr_intf/pncconf/pncconf.glade:35228 -#: src/emc/usr_intf/pncconf/pncconf.glade:35248 -#: src/emc/usr_intf/pncconf/pncconf.glade:35268 -#: src/emc/usr_intf/pncconf/pncconf.glade:35288 -#: src/emc/usr_intf/pncconf/pncconf.glade:35308 -#: src/emc/usr_intf/pncconf/pncconf.glade:35328 -#: src/emc/usr_intf/pncconf/pncconf.glade:35348 -#: src/emc/usr_intf/pncconf/pncconf.glade:35368 -#: src/emc/usr_intf/pncconf/pncconf.glade:35388 -#: src/emc/usr_intf/pncconf/pncconf.glade:35408 -#: src/emc/usr_intf/pncconf/pncconf.glade:35428 -#: src/emc/usr_intf/pncconf/pncconf.glade:35448 -#: src/emc/usr_intf/pncconf/pncconf.glade:35468 -#: src/emc/usr_intf/pncconf/pncconf.glade:35488 -#: src/emc/usr_intf/pncconf/pncconf.glade:35508 -#: src/emc/usr_intf/pncconf/pncconf.glade:35528 -#: src/emc/usr_intf/pncconf/pncconf.glade:35548 -#: src/emc/usr_intf/pncconf/pncconf.glade:35568 -#: src/emc/usr_intf/pncconf/pncconf.glade:35588 -#: src/emc/usr_intf/pncconf/pncconf.glade:35608 -#: src/emc/usr_intf/pncconf/pncconf.glade:35628 -#: src/emc/usr_intf/pncconf/pncconf.glade:35648 -#: src/emc/usr_intf/pncconf/pncconf.glade:35839 -#: src/emc/usr_intf/pncconf/pncconf.glade:35859 -#: src/emc/usr_intf/pncconf/pncconf.glade:35879 -#: src/emc/usr_intf/pncconf/pncconf.glade:35899 -#: src/emc/usr_intf/pncconf/pncconf.glade:35919 -#: src/emc/usr_intf/pncconf/pncconf.glade:35939 -#: src/emc/usr_intf/pncconf/pncconf.glade:35959 -#: src/emc/usr_intf/pncconf/pncconf.glade:35979 -#: src/emc/usr_intf/pncconf/pncconf.glade:35999 -#: src/emc/usr_intf/pncconf/pncconf.glade:36019 -#: src/emc/usr_intf/pncconf/pncconf.glade:36039 -#: src/emc/usr_intf/pncconf/pncconf.glade:36059 -#: src/emc/usr_intf/pncconf/pncconf.glade:36079 -#: src/emc/usr_intf/pncconf/pncconf.glade:36099 -#: src/emc/usr_intf/pncconf/pncconf.glade:36119 -#: src/emc/usr_intf/pncconf/pncconf.glade:36139 -#: src/emc/usr_intf/pncconf/pncconf.glade:36159 -#: src/emc/usr_intf/pncconf/pncconf.glade:36179 -#: src/emc/usr_intf/pncconf/pncconf.glade:36199 -#: src/emc/usr_intf/pncconf/pncconf.glade:36219 -#: src/emc/usr_intf/pncconf/pncconf.glade:36239 -#: src/emc/usr_intf/pncconf/pncconf.glade:36259 -#: src/emc/usr_intf/pncconf/pncconf.glade:36279 -#: src/emc/usr_intf/pncconf/pncconf.glade:38208 -#: src/emc/usr_intf/pncconf/pncconf.glade:38549 -#: src/emc/usr_intf/pncconf/pncconf.glade:39779 -#: src/emc/usr_intf/pncconf/pncconf.glade:39799 -#: src/emc/usr_intf/pncconf/pncconf.glade:39819 -#: src/emc/usr_intf/pncconf/pncconf.glade:39839 -#: src/emc/usr_intf/pncconf/pncconf.glade:39859 -#: src/emc/usr_intf/pncconf/pncconf.glade:39879 -#: src/emc/usr_intf/pncconf/pncconf.glade:39899 -#: src/emc/usr_intf/pncconf/pncconf.glade:39919 -#: src/emc/usr_intf/pncconf/pncconf.glade:39939 -#: src/emc/usr_intf/pncconf/pncconf.glade:39959 -#: src/emc/usr_intf/pncconf/pncconf.glade:39979 -#: src/emc/usr_intf/pncconf/pncconf.glade:40199 -#: src/emc/usr_intf/pncconf/pncconf.glade:40219 -#: src/emc/usr_intf/pncconf/pncconf.glade:40239 -#: src/emc/usr_intf/pncconf/pncconf.glade:40259 -#: src/emc/usr_intf/pncconf/pncconf.glade:40279 -#: src/emc/usr_intf/pncconf/pncconf.glade:40299 -#: src/emc/usr_intf/pncconf/pncconf.glade:40319 -#: src/emc/usr_intf/pncconf/pncconf.glade:40339 -#: src/emc/usr_intf/pncconf/pncconf.glade:40359 -#: src/emc/usr_intf/pncconf/pncconf.glade:40379 -#: src/emc/usr_intf/pncconf/pncconf.glade:40399 -#: src/emc/usr_intf/pncconf/pncconf.glade:40419 -#: src/emc/usr_intf/pncconf/pncconf.glade:40439 -#: src/emc/usr_intf/pncconf/pncconf.glade:40459 -#: src/emc/usr_intf/pncconf/pncconf.glade:40479 -#: src/emc/usr_intf/pncconf/pncconf.glade:40499 -#: src/emc/usr_intf/pncconf/pncconf.glade:40519 -#: src/emc/usr_intf/pncconf/pncconf.glade:40539 -#: src/emc/usr_intf/pncconf/pncconf.glade:40559 -#: src/emc/usr_intf/pncconf/pncconf.glade:40579 -#: src/emc/usr_intf/pncconf/pncconf.glade:40599 -#: src/emc/usr_intf/pncconf/pncconf.glade:40619 -#: src/emc/usr_intf/pncconf/pncconf.glade:40639 -#: src/emc/usr_intf/pncconf/pncconf.glade:42555 -#: src/emc/usr_intf/pncconf/pncconf.glade:42778 -#: src/emc/usr_intf/pncconf/pncconf.glade:44707 -#: src/emc/usr_intf/pncconf/pncconf.glade:44727 -#: src/emc/usr_intf/pncconf/pncconf.glade:44747 -#: src/emc/usr_intf/pncconf/pncconf.glade:44767 -#: src/emc/usr_intf/pncconf/pncconf.glade:44787 -#: src/emc/usr_intf/pncconf/pncconf.glade:44807 -#: src/emc/usr_intf/pncconf/pncconf.glade:44827 -#: src/emc/usr_intf/pncconf/pncconf.glade:44847 -#: src/emc/usr_intf/pncconf/pncconf.glade:44867 -#: src/emc/usr_intf/pncconf/pncconf.glade:44887 -#: src/emc/usr_intf/pncconf/pncconf.glade:44907 -#: src/emc/usr_intf/pncconf/pncconf.glade:44927 -#: src/emc/usr_intf/pncconf/pncconf.glade:44947 -#: src/emc/usr_intf/pncconf/pncconf.glade:44967 -#: src/emc/usr_intf/pncconf/pncconf.glade:44987 -#: src/emc/usr_intf/pncconf/pncconf.glade:45007 -#: src/emc/usr_intf/pncconf/pncconf.glade:45027 -#: src/emc/usr_intf/pncconf/pncconf.glade:45047 -#: src/emc/usr_intf/pncconf/pncconf.glade:45067 -#: src/emc/usr_intf/pncconf/pncconf.glade:45087 -#: src/emc/usr_intf/pncconf/pncconf.glade:45107 -#: src/emc/usr_intf/pncconf/pncconf.glade:45127 -#: src/emc/usr_intf/pncconf/pncconf.glade:45147 -#: src/emc/usr_intf/pncconf/pncconf.glade:45456 -#: src/emc/usr_intf/pncconf/pncconf.glade:45476 -#: src/emc/usr_intf/pncconf/pncconf.glade:45496 -#: src/emc/usr_intf/pncconf/pncconf.glade:45516 -#: src/emc/usr_intf/pncconf/pncconf.glade:45536 -#: src/emc/usr_intf/pncconf/pncconf.glade:45556 -#: src/emc/usr_intf/pncconf/pncconf.glade:45576 -#: src/emc/usr_intf/pncconf/pncconf.glade:45596 -#: src/emc/usr_intf/pncconf/pncconf.glade:45616 -#: src/emc/usr_intf/pncconf/pncconf.glade:45636 -#: src/emc/usr_intf/pncconf/pncconf.glade:45656 -#: src/emc/usr_intf/pncconf/pncconf.glade:46886 -#: src/emc/usr_intf/pncconf/pncconf.glade:47122 -#: src/emc/usr_intf/pncconf/pncconf.glade:47142 -#: src/emc/usr_intf/pncconf/pncconf.glade:47162 -#: src/emc/usr_intf/pncconf/pncconf.glade:47182 -#: src/emc/usr_intf/pncconf/pncconf.glade:47202 -#: src/emc/usr_intf/pncconf/pncconf.glade:47222 -#: src/emc/usr_intf/pncconf/pncconf.glade:47242 -#: src/emc/usr_intf/pncconf/pncconf.glade:47262 -#: src/emc/usr_intf/pncconf/pncconf.glade:47282 -#: src/emc/usr_intf/pncconf/pncconf.glade:47302 -#: src/emc/usr_intf/pncconf/pncconf.glade:47322 -#: src/emc/usr_intf/pncconf/pncconf.glade:47342 -#: src/emc/usr_intf/pncconf/pncconf.glade:47362 -#: src/emc/usr_intf/pncconf/pncconf.glade:47382 -#: src/emc/usr_intf/pncconf/pncconf.glade:47402 -#: src/emc/usr_intf/pncconf/pncconf.glade:47422 -#: src/emc/usr_intf/pncconf/pncconf.glade:47442 -#: src/emc/usr_intf/pncconf/pncconf.glade:47462 -#: src/emc/usr_intf/pncconf/pncconf.glade:47482 -#: src/emc/usr_intf/pncconf/pncconf.glade:47502 -#: src/emc/usr_intf/pncconf/pncconf.glade:47522 -#: src/emc/usr_intf/pncconf/pncconf.glade:47542 -#: src/emc/usr_intf/pncconf/pncconf.glade:47562 -#: src/emc/usr_intf/pncconf/pncconf.glade:49478 -#: src/emc/usr_intf/pncconf/pncconf.glade:49701 -#: src/emc/usr_intf/pncconf/pncconf.glade:51630 -#: src/emc/usr_intf/pncconf/pncconf.glade:51650 -#: src/emc/usr_intf/pncconf/pncconf.glade:51670 -#: src/emc/usr_intf/pncconf/pncconf.glade:51690 -#: src/emc/usr_intf/pncconf/pncconf.glade:51710 -#: src/emc/usr_intf/pncconf/pncconf.glade:51730 -#: src/emc/usr_intf/pncconf/pncconf.glade:51750 -#: src/emc/usr_intf/pncconf/pncconf.glade:51770 -#: src/emc/usr_intf/pncconf/pncconf.glade:51790 -#: src/emc/usr_intf/pncconf/pncconf.glade:51810 -#: src/emc/usr_intf/pncconf/pncconf.glade:51830 -#: src/emc/usr_intf/pncconf/pncconf.glade:51850 -#: src/emc/usr_intf/pncconf/pncconf.glade:51870 -#: src/emc/usr_intf/pncconf/pncconf.glade:51890 -#: src/emc/usr_intf/pncconf/pncconf.glade:51910 -#: src/emc/usr_intf/pncconf/pncconf.glade:51930 -#: src/emc/usr_intf/pncconf/pncconf.glade:51950 -#: src/emc/usr_intf/pncconf/pncconf.glade:51970 -#: src/emc/usr_intf/pncconf/pncconf.glade:51990 -#: src/emc/usr_intf/pncconf/pncconf.glade:52010 -#: src/emc/usr_intf/pncconf/pncconf.glade:52030 -#: src/emc/usr_intf/pncconf/pncconf.glade:52050 -#: src/emc/usr_intf/pncconf/pncconf.glade:52070 -#: src/emc/usr_intf/pncconf/pncconf.glade:52379 -#: src/emc/usr_intf/pncconf/pncconf.glade:52399 -#: src/emc/usr_intf/pncconf/pncconf.glade:52419 -#: src/emc/usr_intf/pncconf/pncconf.glade:52439 -#: src/emc/usr_intf/pncconf/pncconf.glade:52459 -#: src/emc/usr_intf/pncconf/pncconf.glade:52479 -#: src/emc/usr_intf/pncconf/pncconf.glade:52499 -#: src/emc/usr_intf/pncconf/pncconf.glade:52519 -#: src/emc/usr_intf/pncconf/pncconf.glade:52539 -#: src/emc/usr_intf/pncconf/pncconf.glade:52559 -#: src/emc/usr_intf/pncconf/pncconf.glade:52579 -#: src/emc/usr_intf/pncconf/pncconf.glade:53809 +#: src/emc/usr_intf/pncconf/pncconf.glade:64943 +msgid "X Axis Configuration" +msgstr "Конфигурация оси X" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65155 msgid "" -"GPIO Input\n" -"GPIO Output\n" -"GPIO O Drain\n" -"Encoder\n" -"PWM\n" -"StepGen\n" +"NO\n" +"YES" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9198 -#: src/emc/usr_intf/pncconf/pncconf.glade:13188 -#: src/emc/usr_intf/pncconf/pncconf.glade:15884 -#: src/emc/usr_intf/pncconf/pncconf.glade:18394 -#: src/emc/usr_intf/pncconf/pncconf.glade:20397 -#: src/emc/usr_intf/pncconf/pncconf.glade:21325 -#: src/emc/usr_intf/pncconf/pncconf.glade:23121 -#: src/emc/usr_intf/pncconf/pncconf.glade:24917 -msgid "Launch test panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:65171 +msgid "Use Encoder Index For Home:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9213 -#: src/emc/usr_intf/pncconf/pncconf.glade:9225 -#: src/emc/usr_intf/pncconf/pncconf.glade:13162 -#: src/emc/usr_intf/pncconf/pncconf.glade:13174 -#: src/emc/usr_intf/pncconf/pncconf.glade:15858 -#: src/emc/usr_intf/pncconf/pncconf.glade:15870 -#: src/emc/usr_intf/pncconf/pncconf.glade:18367 -#: src/emc/usr_intf/pncconf/pncconf.glade:18379 -#: src/emc/usr_intf/pncconf/pncconf.glade:20370 -#: src/emc/usr_intf/pncconf/pncconf.glade:20382 -#: src/emc/usr_intf/pncconf/pncconf.glade:21339 -#: src/emc/usr_intf/pncconf/pncconf.glade:21351 -#: src/emc/usr_intf/pncconf/pncconf.glade:23135 -#: src/emc/usr_intf/pncconf/pncconf.glade:23147 -#: src/emc/usr_intf/pncconf/pncconf.glade:24931 -#: src/emc/usr_intf/pncconf/pncconf.glade:24943 -#: src/emc/usr_intf/pncconf/pncconf.glade:26815 -#: src/emc/usr_intf/pncconf/pncconf.glade:26827 -#: src/emc/usr_intf/pncconf/pncconf.glade:30826 -#: src/emc/usr_intf/pncconf/pncconf.glade:30838 -#: src/emc/usr_intf/pncconf/pncconf.glade:31831 -#: src/emc/usr_intf/pncconf/pncconf.glade:35184 -#: src/emc/usr_intf/pncconf/pncconf.glade:35196 -#: src/emc/usr_intf/pncconf/pncconf.glade:36312 -#: src/emc/usr_intf/pncconf/pncconf.glade:36324 -#: src/emc/usr_intf/pncconf/pncconf.glade:39755 -#: src/emc/usr_intf/pncconf/pncconf.glade:39767 -#: src/emc/usr_intf/pncconf/pncconf.glade:40659 -#: src/emc/usr_intf/pncconf/pncconf.glade:40671 -#: src/emc/usr_intf/pncconf/pncconf.glade:44670 -#: src/emc/usr_intf/pncconf/pncconf.glade:44682 -#: src/emc/usr_intf/pncconf/pncconf.glade:45676 -#: src/emc/usr_intf/pncconf/pncconf.glade:45688 -#: src/emc/usr_intf/pncconf/pncconf.glade:47582 -#: src/emc/usr_intf/pncconf/pncconf.glade:47594 -#: src/emc/usr_intf/pncconf/pncconf.glade:51593 -#: src/emc/usr_intf/pncconf/pncconf.glade:51605 -#: src/emc/usr_intf/pncconf/pncconf.glade:52599 -#: src/emc/usr_intf/pncconf/pncconf.glade:52611 -msgid "function" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65212 +msgid "Home Final Velocity:" +msgstr "Максимальная скорость поиска начала" -#: src/emc/usr_intf/pncconf/pncconf.glade:9305 -#: src/emc/usr_intf/pncconf/pncconf.glade:9357 -#: src/emc/usr_intf/pncconf/pncconf.glade:9409 -#: src/emc/usr_intf/pncconf/pncconf.glade:9461 -#: src/emc/usr_intf/pncconf/pncconf.glade:10301 -#: src/emc/usr_intf/pncconf/pncconf.glade:10353 -#: src/emc/usr_intf/pncconf/pncconf.glade:10405 -#: src/emc/usr_intf/pncconf/pncconf.glade:10457 -#: src/emc/usr_intf/pncconf/pncconf.glade:10509 -#: src/emc/usr_intf/pncconf/pncconf.glade:10561 -#: src/emc/usr_intf/pncconf/pncconf.glade:10613 -#: src/emc/usr_intf/pncconf/pncconf.glade:10665 -#: src/emc/usr_intf/pncconf/pncconf.glade:10717 -#: src/emc/usr_intf/pncconf/pncconf.glade:10769 -#: src/emc/usr_intf/pncconf/pncconf.glade:11089 -#: src/emc/usr_intf/pncconf/pncconf.glade:11141 -#: src/emc/usr_intf/pncconf/pncconf.glade:11579 -#: src/emc/usr_intf/pncconf/pncconf.glade:11631 -#: src/emc/usr_intf/pncconf/pncconf.glade:11683 -#: src/emc/usr_intf/pncconf/pncconf.glade:11735 -#: src/emc/usr_intf/pncconf/pncconf.glade:11787 -#: src/emc/usr_intf/pncconf/pncconf.glade:11839 -#: src/emc/usr_intf/pncconf/pncconf.glade:11891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11943 -#: src/emc/usr_intf/pncconf/pncconf.glade:11995 -#: src/emc/usr_intf/pncconf/pncconf.glade:12047 -#: src/emc/usr_intf/pncconf/pncconf.glade:12886 -#: src/emc/usr_intf/pncconf/pncconf.glade:12938 -#: src/emc/usr_intf/pncconf/pncconf.glade:12990 -#: src/emc/usr_intf/pncconf/pncconf.glade:13042 -#: src/emc/usr_intf/pncconf/pncconf.glade:13702 -#: src/emc/usr_intf/pncconf/pncconf.glade:13754 -#: src/emc/usr_intf/pncconf/pncconf.glade:14183 -#: src/emc/usr_intf/pncconf/pncconf.glade:14235 -#: src/emc/usr_intf/pncconf/pncconf.glade:14287 -#: src/emc/usr_intf/pncconf/pncconf.glade:14339 -#: src/emc/usr_intf/pncconf/pncconf.glade:14391 -#: src/emc/usr_intf/pncconf/pncconf.glade:14443 -#: src/emc/usr_intf/pncconf/pncconf.glade:14495 -#: src/emc/usr_intf/pncconf/pncconf.glade:14547 -#: src/emc/usr_intf/pncconf/pncconf.glade:14599 -#: src/emc/usr_intf/pncconf/pncconf.glade:14651 -#: src/emc/usr_intf/pncconf/pncconf.glade:14703 -#: src/emc/usr_intf/pncconf/pncconf.glade:14755 -#: src/emc/usr_intf/pncconf/pncconf.glade:15582 -#: src/emc/usr_intf/pncconf/pncconf.glade:15634 -#: src/emc/usr_intf/pncconf/pncconf.glade:15686 -#: src/emc/usr_intf/pncconf/pncconf.glade:15738 -#: src/emc/usr_intf/pncconf/pncconf.glade:16784 -#: src/emc/usr_intf/pncconf/pncconf.glade:16836 -#: src/emc/usr_intf/pncconf/pncconf.glade:16888 -#: src/emc/usr_intf/pncconf/pncconf.glade:16940 -#: src/emc/usr_intf/pncconf/pncconf.glade:16992 -#: src/emc/usr_intf/pncconf/pncconf.glade:17044 -#: src/emc/usr_intf/pncconf/pncconf.glade:17096 -#: src/emc/usr_intf/pncconf/pncconf.glade:17148 -#: src/emc/usr_intf/pncconf/pncconf.glade:17200 -#: src/emc/usr_intf/pncconf/pncconf.glade:17252 -#: src/emc/usr_intf/pncconf/pncconf.glade:17304 -#: src/emc/usr_intf/pncconf/pncconf.glade:18143 -#: src/emc/usr_intf/pncconf/pncconf.glade:18195 -#: src/emc/usr_intf/pncconf/pncconf.glade:18247 -#: src/emc/usr_intf/pncconf/pncconf.glade:18908 -#: src/emc/usr_intf/pncconf/pncconf.glade:18960 -#: src/emc/usr_intf/pncconf/pncconf.glade:26907 -#: src/emc/usr_intf/pncconf/pncconf.glade:26959 -#: src/emc/usr_intf/pncconf/pncconf.glade:27011 -#: src/emc/usr_intf/pncconf/pncconf.glade:27063 -#: src/emc/usr_intf/pncconf/pncconf.glade:27890 -#: src/emc/usr_intf/pncconf/pncconf.glade:27942 -#: src/emc/usr_intf/pncconf/pncconf.glade:27994 -#: src/emc/usr_intf/pncconf/pncconf.glade:28046 -#: src/emc/usr_intf/pncconf/pncconf.glade:28098 -#: src/emc/usr_intf/pncconf/pncconf.glade:28150 -#: src/emc/usr_intf/pncconf/pncconf.glade:28202 -#: src/emc/usr_intf/pncconf/pncconf.glade:28254 -#: src/emc/usr_intf/pncconf/pncconf.glade:28306 -#: src/emc/usr_intf/pncconf/pncconf.glade:28358 -#: src/emc/usr_intf/pncconf/pncconf.glade:28410 -#: src/emc/usr_intf/pncconf/pncconf.glade:28462 -#: src/emc/usr_intf/pncconf/pncconf.glade:29151 -#: src/emc/usr_intf/pncconf/pncconf.glade:29203 -#: src/emc/usr_intf/pncconf/pncconf.glade:29255 -#: src/emc/usr_intf/pncconf/pncconf.glade:29307 -#: src/emc/usr_intf/pncconf/pncconf.glade:29359 -#: src/emc/usr_intf/pncconf/pncconf.glade:29411 -#: src/emc/usr_intf/pncconf/pncconf.glade:29463 -#: src/emc/usr_intf/pncconf/pncconf.glade:29515 -#: src/emc/usr_intf/pncconf/pncconf.glade:29567 -#: src/emc/usr_intf/pncconf/pncconf.glade:29619 -#: src/emc/usr_intf/pncconf/pncconf.glade:29671 -#: src/emc/usr_intf/pncconf/pncconf.glade:29723 -#: src/emc/usr_intf/pncconf/pncconf.glade:30550 -#: src/emc/usr_intf/pncconf/pncconf.glade:30602 -#: src/emc/usr_intf/pncconf/pncconf.glade:30654 -#: src/emc/usr_intf/pncconf/pncconf.glade:30706 -#: src/emc/usr_intf/pncconf/pncconf.glade:32210 -#: src/emc/usr_intf/pncconf/pncconf.glade:32262 -#: src/emc/usr_intf/pncconf/pncconf.glade:32314 -#: src/emc/usr_intf/pncconf/pncconf.glade:32366 -#: src/emc/usr_intf/pncconf/pncconf.glade:32418 -#: src/emc/usr_intf/pncconf/pncconf.glade:32470 -#: src/emc/usr_intf/pncconf/pncconf.glade:32522 -#: src/emc/usr_intf/pncconf/pncconf.glade:32574 -#: src/emc/usr_intf/pncconf/pncconf.glade:32626 -#: src/emc/usr_intf/pncconf/pncconf.glade:32678 -#: src/emc/usr_intf/pncconf/pncconf.glade:32730 -#: src/emc/usr_intf/pncconf/pncconf.glade:32782 -#: src/emc/usr_intf/pncconf/pncconf.glade:33509 -#: src/emc/usr_intf/pncconf/pncconf.glade:33561 -#: src/emc/usr_intf/pncconf/pncconf.glade:33613 -#: src/emc/usr_intf/pncconf/pncconf.glade:33665 -#: src/emc/usr_intf/pncconf/pncconf.glade:33717 -#: src/emc/usr_intf/pncconf/pncconf.glade:33769 -#: src/emc/usr_intf/pncconf/pncconf.glade:33821 -#: src/emc/usr_intf/pncconf/pncconf.glade:33873 -#: src/emc/usr_intf/pncconf/pncconf.glade:33925 -#: src/emc/usr_intf/pncconf/pncconf.glade:33977 -#: src/emc/usr_intf/pncconf/pncconf.glade:34029 -#: src/emc/usr_intf/pncconf/pncconf.glade:34081 -#: src/emc/usr_intf/pncconf/pncconf.glade:34908 -#: src/emc/usr_intf/pncconf/pncconf.glade:34960 -#: src/emc/usr_intf/pncconf/pncconf.glade:35012 -#: src/emc/usr_intf/pncconf/pncconf.glade:35064 -#: src/emc/usr_intf/pncconf/pncconf.glade:36404 -#: src/emc/usr_intf/pncconf/pncconf.glade:36456 -#: src/emc/usr_intf/pncconf/pncconf.glade:36508 -#: src/emc/usr_intf/pncconf/pncconf.glade:36560 -#: src/emc/usr_intf/pncconf/pncconf.glade:37387 -#: src/emc/usr_intf/pncconf/pncconf.glade:37439 -#: src/emc/usr_intf/pncconf/pncconf.glade:37491 -#: src/emc/usr_intf/pncconf/pncconf.glade:37543 -#: src/emc/usr_intf/pncconf/pncconf.glade:37595 -#: src/emc/usr_intf/pncconf/pncconf.glade:37647 -#: src/emc/usr_intf/pncconf/pncconf.glade:37699 -#: src/emc/usr_intf/pncconf/pncconf.glade:37751 -#: src/emc/usr_intf/pncconf/pncconf.glade:37803 -#: src/emc/usr_intf/pncconf/pncconf.glade:37855 -#: src/emc/usr_intf/pncconf/pncconf.glade:37907 -#: src/emc/usr_intf/pncconf/pncconf.glade:37959 -#: src/emc/usr_intf/pncconf/pncconf.glade:38764 -#: src/emc/usr_intf/pncconf/pncconf.glade:38816 -#: src/emc/usr_intf/pncconf/pncconf.glade:38868 -#: src/emc/usr_intf/pncconf/pncconf.glade:38920 -#: src/emc/usr_intf/pncconf/pncconf.glade:38972 -#: src/emc/usr_intf/pncconf/pncconf.glade:39024 -#: src/emc/usr_intf/pncconf/pncconf.glade:39076 -#: src/emc/usr_intf/pncconf/pncconf.glade:39128 -#: src/emc/usr_intf/pncconf/pncconf.glade:39180 -#: src/emc/usr_intf/pncconf/pncconf.glade:39232 -#: src/emc/usr_intf/pncconf/pncconf.glade:39284 -#: src/emc/usr_intf/pncconf/pncconf.glade:39336 -#: src/emc/usr_intf/pncconf/pncconf.glade:40751 -#: src/emc/usr_intf/pncconf/pncconf.glade:40803 -#: src/emc/usr_intf/pncconf/pncconf.glade:40855 -#: src/emc/usr_intf/pncconf/pncconf.glade:40907 -#: src/emc/usr_intf/pncconf/pncconf.glade:41734 -#: src/emc/usr_intf/pncconf/pncconf.glade:41786 -#: src/emc/usr_intf/pncconf/pncconf.glade:41838 -#: src/emc/usr_intf/pncconf/pncconf.glade:41890 -#: src/emc/usr_intf/pncconf/pncconf.glade:41942 -#: src/emc/usr_intf/pncconf/pncconf.glade:41994 -#: src/emc/usr_intf/pncconf/pncconf.glade:42046 -#: src/emc/usr_intf/pncconf/pncconf.glade:42098 -#: src/emc/usr_intf/pncconf/pncconf.glade:42150 -#: src/emc/usr_intf/pncconf/pncconf.glade:42202 -#: src/emc/usr_intf/pncconf/pncconf.glade:42254 -#: src/emc/usr_intf/pncconf/pncconf.glade:42306 -#: src/emc/usr_intf/pncconf/pncconf.glade:42995 -#: src/emc/usr_intf/pncconf/pncconf.glade:43047 -#: src/emc/usr_intf/pncconf/pncconf.glade:43099 -#: src/emc/usr_intf/pncconf/pncconf.glade:43151 -#: src/emc/usr_intf/pncconf/pncconf.glade:43203 -#: src/emc/usr_intf/pncconf/pncconf.glade:43255 -#: src/emc/usr_intf/pncconf/pncconf.glade:43307 -#: src/emc/usr_intf/pncconf/pncconf.glade:43359 -#: src/emc/usr_intf/pncconf/pncconf.glade:43411 -#: src/emc/usr_intf/pncconf/pncconf.glade:43463 -#: src/emc/usr_intf/pncconf/pncconf.glade:43515 -#: src/emc/usr_intf/pncconf/pncconf.glade:43567 -#: src/emc/usr_intf/pncconf/pncconf.glade:44394 -#: src/emc/usr_intf/pncconf/pncconf.glade:44446 -#: src/emc/usr_intf/pncconf/pncconf.glade:44498 -#: src/emc/usr_intf/pncconf/pncconf.glade:44550 -#: src/emc/usr_intf/pncconf/pncconf.glade:46067 -#: src/emc/usr_intf/pncconf/pncconf.glade:46119 -#: src/emc/usr_intf/pncconf/pncconf.glade:46171 -#: src/emc/usr_intf/pncconf/pncconf.glade:46223 -#: src/emc/usr_intf/pncconf/pncconf.glade:46275 -#: src/emc/usr_intf/pncconf/pncconf.glade:46327 -#: src/emc/usr_intf/pncconf/pncconf.glade:46379 -#: src/emc/usr_intf/pncconf/pncconf.glade:46431 -#: src/emc/usr_intf/pncconf/pncconf.glade:46483 -#: src/emc/usr_intf/pncconf/pncconf.glade:46535 -#: src/emc/usr_intf/pncconf/pncconf.glade:46587 -#: src/emc/usr_intf/pncconf/pncconf.glade:46639 -#: src/emc/usr_intf/pncconf/pncconf.glade:47674 -#: src/emc/usr_intf/pncconf/pncconf.glade:47726 -#: src/emc/usr_intf/pncconf/pncconf.glade:47778 -#: src/emc/usr_intf/pncconf/pncconf.glade:47830 -#: src/emc/usr_intf/pncconf/pncconf.glade:48657 -#: src/emc/usr_intf/pncconf/pncconf.glade:48709 -#: src/emc/usr_intf/pncconf/pncconf.glade:48761 -#: src/emc/usr_intf/pncconf/pncconf.glade:48813 -#: src/emc/usr_intf/pncconf/pncconf.glade:48865 -#: src/emc/usr_intf/pncconf/pncconf.glade:48917 -#: src/emc/usr_intf/pncconf/pncconf.glade:48969 -#: src/emc/usr_intf/pncconf/pncconf.glade:49021 -#: src/emc/usr_intf/pncconf/pncconf.glade:49073 -#: src/emc/usr_intf/pncconf/pncconf.glade:49125 -#: src/emc/usr_intf/pncconf/pncconf.glade:49177 -#: src/emc/usr_intf/pncconf/pncconf.glade:49229 -#: src/emc/usr_intf/pncconf/pncconf.glade:49918 -#: src/emc/usr_intf/pncconf/pncconf.glade:49970 -#: src/emc/usr_intf/pncconf/pncconf.glade:50022 -#: src/emc/usr_intf/pncconf/pncconf.glade:50074 -#: src/emc/usr_intf/pncconf/pncconf.glade:50126 -#: src/emc/usr_intf/pncconf/pncconf.glade:50178 -#: src/emc/usr_intf/pncconf/pncconf.glade:50230 -#: src/emc/usr_intf/pncconf/pncconf.glade:50282 -#: src/emc/usr_intf/pncconf/pncconf.glade:50334 -#: src/emc/usr_intf/pncconf/pncconf.glade:50386 -#: src/emc/usr_intf/pncconf/pncconf.glade:50438 -#: src/emc/usr_intf/pncconf/pncconf.glade:50490 -#: src/emc/usr_intf/pncconf/pncconf.glade:51317 -#: src/emc/usr_intf/pncconf/pncconf.glade:51369 -#: src/emc/usr_intf/pncconf/pncconf.glade:51421 -#: src/emc/usr_intf/pncconf/pncconf.glade:51473 -#: src/emc/usr_intf/pncconf/pncconf.glade:52990 -#: src/emc/usr_intf/pncconf/pncconf.glade:53042 -#: src/emc/usr_intf/pncconf/pncconf.glade:53094 -#: src/emc/usr_intf/pncconf/pncconf.glade:53146 -#: src/emc/usr_intf/pncconf/pncconf.glade:53198 -#: src/emc/usr_intf/pncconf/pncconf.glade:53250 -#: src/emc/usr_intf/pncconf/pncconf.glade:53302 -#: src/emc/usr_intf/pncconf/pncconf.glade:53354 -#: src/emc/usr_intf/pncconf/pncconf.glade:53406 -#: src/emc/usr_intf/pncconf/pncconf.glade:53458 -#: src/emc/usr_intf/pncconf/pncconf.glade:53510 -#: src/emc/usr_intf/pncconf/pncconf.glade:53562 +#: src/emc/usr_intf/pncconf/pncconf.glade:65222 msgid "" -"ESTOP IN\n" -"Spindle PPR\n" -"Spindle A \n" -"Spindle B \n" -"Home X \n" -"Home Y \n" -"Home Z\n" -"Home A\n" -"Minimum Limit + Home X \n" -"Minimum Limit + Home Y \n" -"Minimum Limit + Home Z \n" -"Minimum Limit + Home A\n" -"Maximum Limit + Home X \n" -"Maximum Limit + Home Y \n" -"Maximum Limit + Home Z \n" -"Maximum Limit + Home A\n" -"Both Limit + Home X \n" -"Both Limit + Home Y \n" -"Both Limit + Home Z \n" -"Both Limit + Home A\n" -"Minimum Limit X \n" -"Minimum Limit Y \n" -"Minimum Limit Z \n" -"Minimum Limit A\n" -"Maximum Limit X \n" -"Maximum Limit Y \n" -"Maximum Limit Z \n" -"Maximum Limit A\n" -"Both Limit X \n" -"Both Limit Y \n" -"Both Limit Z \n" -"Both Limit A\n" -"All limits\n" -"All home\n" -"Unused" +"Same\n" +"Opposite" msgstr "" +"То же\n" +"Обратное" -#: src/emc/usr_intf/pncconf/pncconf.glade:9515 -#: src/emc/usr_intf/pncconf/pncconf.glade:12871 -#: src/emc/usr_intf/pncconf/pncconf.glade:18128 -#: src/emc/usr_intf/pncconf/pncconf.glade:20233 -#: src/emc/usr_intf/pncconf/pncconf.glade:21486 -#: src/emc/usr_intf/pncconf/pncconf.glade:23282 -#: src/emc/usr_intf/pncconf/pncconf.glade:25078 -msgid "31:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65238 +msgid "Home Latch Direction:" +msgstr "Направление датчика начала" -#: src/emc/usr_intf/pncconf/pncconf.glade:9531 -#: src/emc/usr_intf/pncconf/pncconf.glade:12855 -#: src/emc/usr_intf/pncconf/pncconf.glade:18112 -#: src/emc/usr_intf/pncconf/pncconf.glade:20217 -#: src/emc/usr_intf/pncconf/pncconf.glade:21502 -#: src/emc/usr_intf/pncconf/pncconf.glade:23298 -#: src/emc/usr_intf/pncconf/pncconf.glade:25094 -msgid "29:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65251 +msgid "" +"Towards Negative limit\n" +"Towards Positive limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9547 -#: src/emc/usr_intf/pncconf/pncconf.glade:12839 -#: src/emc/usr_intf/pncconf/pncconf.glade:18096 -#: src/emc/usr_intf/pncconf/pncconf.glade:20201 -#: src/emc/usr_intf/pncconf/pncconf.glade:21518 -#: src/emc/usr_intf/pncconf/pncconf.glade:23314 -#: src/emc/usr_intf/pncconf/pncconf.glade:25110 -msgid "27:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65267 +msgid "Home Search Direction:" +msgstr "Направление поиска начала:" -#: src/emc/usr_intf/pncconf/pncconf.glade:9563 -#: src/emc/usr_intf/pncconf/pncconf.glade:12823 -#: src/emc/usr_intf/pncconf/pncconf.glade:18080 -#: src/emc/usr_intf/pncconf/pncconf.glade:20185 -#: src/emc/usr_intf/pncconf/pncconf.glade:21534 -#: src/emc/usr_intf/pncconf/pncconf.glade:23330 -#: src/emc/usr_intf/pncconf/pncconf.glade:25126 -msgid "25:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65309 +msgid "Home latch Velocity:" +msgstr "Максимальная скорость на датчике начала" -#: src/emc/usr_intf/pncconf/pncconf.glade:9936 -#: src/emc/usr_intf/pncconf/pncconf.glade:12450 -#: src/emc/usr_intf/pncconf/pncconf.glade:17707 -#: src/emc/usr_intf/pncconf/pncconf.glade:19924 -#: src/emc/usr_intf/pncconf/pncconf.glade:21795 -#: src/emc/usr_intf/pncconf/pncconf.glade:23591 -#: src/emc/usr_intf/pncconf/pncconf.glade:25387 -msgid "33:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65334 +msgid "filename:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9952 -#: src/emc/usr_intf/pncconf/pncconf.glade:12434 -#: src/emc/usr_intf/pncconf/pncconf.glade:17691 -#: src/emc/usr_intf/pncconf/pncconf.glade:19908 -#: src/emc/usr_intf/pncconf/pncconf.glade:21811 -#: src/emc/usr_intf/pncconf/pncconf.glade:23607 -#: src/emc/usr_intf/pncconf/pncconf.glade:25403 -msgid "35:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65347 +msgid "" +"Type 1\n" +"Type 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9968 -#: src/emc/usr_intf/pncconf/pncconf.glade:12418 -#: src/emc/usr_intf/pncconf/pncconf.glade:17675 -#: src/emc/usr_intf/pncconf/pncconf.glade:19892 -#: src/emc/usr_intf/pncconf/pncconf.glade:21827 -#: src/emc/usr_intf/pncconf/pncconf.glade:23623 -#: src/emc/usr_intf/pncconf/pncconf.glade:25419 -msgid "37:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65392 +msgid "Use Compensation File:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9984 -#: src/emc/usr_intf/pncconf/pncconf.glade:12402 -#: src/emc/usr_intf/pncconf/pncconf.glade:17659 -#: src/emc/usr_intf/pncconf/pncconf.glade:19876 -#: src/emc/usr_intf/pncconf/pncconf.glade:21843 -#: src/emc/usr_intf/pncconf/pncconf.glade:23639 -#: src/emc/usr_intf/pncconf/pncconf.glade:25435 -msgid "39:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65406 +msgid "Use Backlash Compensation:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10000 -#: src/emc/usr_intf/pncconf/pncconf.glade:12386 -#: src/emc/usr_intf/pncconf/pncconf.glade:17643 -#: src/emc/usr_intf/pncconf/pncconf.glade:19860 -#: src/emc/usr_intf/pncconf/pncconf.glade:21859 -#: src/emc/usr_intf/pncconf/pncconf.glade:23655 -#: src/emc/usr_intf/pncconf/pncconf.glade:25451 -msgid "41:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65433 +msgid "Home Position location (offset from machine zero Origin):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10016 -#: src/emc/usr_intf/pncconf/pncconf.glade:12370 -#: src/emc/usr_intf/pncconf/pncconf.glade:17627 -#: src/emc/usr_intf/pncconf/pncconf.glade:19844 -#: src/emc/usr_intf/pncconf/pncconf.glade:21875 -#: src/emc/usr_intf/pncconf/pncconf.glade:23671 -#: src/emc/usr_intf/pncconf/pncconf.glade:25467 -msgid "43:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65449 +msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10032 -#: src/emc/usr_intf/pncconf/pncconf.glade:12354 -#: src/emc/usr_intf/pncconf/pncconf.glade:17611 -#: src/emc/usr_intf/pncconf/pncconf.glade:19828 -#: src/emc/usr_intf/pncconf/pncconf.glade:21891 -#: src/emc/usr_intf/pncconf/pncconf.glade:23687 -#: src/emc/usr_intf/pncconf/pncconf.glade:25483 -msgid "45:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65493 +msgid "Home Switch location (Offset from machine zero Origin):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10099 -#: src/emc/usr_intf/pncconf/pncconf.glade:12287 -#: src/emc/usr_intf/pncconf/pncconf.glade:17544 -#: src/emc/usr_intf/pncconf/pncconf.glade:19777 -#: src/emc/usr_intf/pncconf/pncconf.glade:21942 -#: src/emc/usr_intf/pncconf/pncconf.glade:23738 -#: src/emc/usr_intf/pncconf/pncconf.glade:25534 -msgid "47:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65509 +msgid "Home Search Velocity:" +msgstr "Максимальная скорость поиска начала:" -#: src/emc/usr_intf/pncconf/pncconf.glade:10822 -#: src/emc/usr_intf/pncconf/pncconf.glade:11077 -#: src/emc/usr_intf/pncconf/pncconf.glade:11311 -#: src/emc/usr_intf/pncconf/pncconf.glade:11567 -#: src/emc/usr_intf/pncconf/pncconf.glade:13924 -#: src/emc/usr_intf/pncconf/pncconf.glade:14171 -#: src/emc/usr_intf/pncconf/pncconf.glade:16516 -#: src/emc/usr_intf/pncconf/pncconf.glade:16772 -#: src/emc/usr_intf/pncconf/pncconf.glade:19129 -#: src/emc/usr_intf/pncconf/pncconf.glade:19379 -#: src/emc/usr_intf/pncconf/pncconf.glade:22343 -#: src/emc/usr_intf/pncconf/pncconf.glade:22592 -#: src/emc/usr_intf/pncconf/pncconf.glade:24139 -#: src/emc/usr_intf/pncconf/pncconf.glade:24388 -#: src/emc/usr_intf/pncconf/pncconf.glade:25935 -#: src/emc/usr_intf/pncconf/pncconf.glade:26184 -#: src/emc/usr_intf/pncconf/pncconf.glade:28515 -#: src/emc/usr_intf/pncconf/pncconf.glade:28761 -#: src/emc/usr_intf/pncconf/pncconf.glade:28892 -#: src/emc/usr_intf/pncconf/pncconf.glade:29139 -#: src/emc/usr_intf/pncconf/pncconf.glade:33079 -#: src/emc/usr_intf/pncconf/pncconf.glade:33250 -#: src/emc/usr_intf/pncconf/pncconf.glade:33497 -#: src/emc/usr_intf/pncconf/pncconf.glade:38012 -#: src/emc/usr_intf/pncconf/pncconf.glade:38258 -#: src/emc/usr_intf/pncconf/pncconf.glade:38507 -#: src/emc/usr_intf/pncconf/pncconf.glade:42359 -#: src/emc/usr_intf/pncconf/pncconf.glade:42605 -#: src/emc/usr_intf/pncconf/pncconf.glade:42736 -#: src/emc/usr_intf/pncconf/pncconf.glade:42983 -#: src/emc/usr_intf/pncconf/pncconf.glade:46936 -#: src/emc/usr_intf/pncconf/pncconf.glade:49282 -#: src/emc/usr_intf/pncconf/pncconf.glade:49528 -#: src/emc/usr_intf/pncconf/pncconf.glade:49659 -#: src/emc/usr_intf/pncconf/pncconf.glade:49906 -#: src/emc/usr_intf/pncconf/pncconf.glade:53859 -msgid "Pin Type" +#: src/emc/usr_intf/pncconf/pncconf.glade:65524 +msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10835 -#: src/emc/usr_intf/pncconf/pncconf.glade:11553 -#: src/emc/usr_intf/pncconf/pncconf.glade:16758 -#: src/emc/usr_intf/pncconf/pncconf.glade:19365 -#: src/emc/usr_intf/pncconf/pncconf.glade:22356 -#: src/emc/usr_intf/pncconf/pncconf.glade:24152 -#: src/emc/usr_intf/pncconf/pncconf.glade:25948 -msgid "23:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Advanced Options" +msgstr "Продвинутые настройки" -#: src/emc/usr_intf/pncconf/pncconf.glade:10849 -#: src/emc/usr_intf/pncconf/pncconf.glade:11539 -#: src/emc/usr_intf/pncconf/pncconf.glade:16744 -#: src/emc/usr_intf/pncconf/pncconf.glade:19351 -#: src/emc/usr_intf/pncconf/pncconf.glade:22370 -#: src/emc/usr_intf/pncconf/pncconf.glade:24166 -#: src/emc/usr_intf/pncconf/pncconf.glade:25962 -msgid "21:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 15" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10863 -#: src/emc/usr_intf/pncconf/pncconf.glade:11525 -#: src/emc/usr_intf/pncconf/pncconf.glade:16730 -#: src/emc/usr_intf/pncconf/pncconf.glade:19337 -#: src/emc/usr_intf/pncconf/pncconf.glade:22384 -#: src/emc/usr_intf/pncconf/pncconf.glade:24180 -#: src/emc/usr_intf/pncconf/pncconf.glade:25976 -msgid "19:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 14" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10877 -#: src/emc/usr_intf/pncconf/pncconf.glade:11511 -#: src/emc/usr_intf/pncconf/pncconf.glade:16716 -#: src/emc/usr_intf/pncconf/pncconf.glade:19323 -#: src/emc/usr_intf/pncconf/pncconf.glade:22398 -#: src/emc/usr_intf/pncconf/pncconf.glade:24194 -#: src/emc/usr_intf/pncconf/pncconf.glade:25990 -msgid "17:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 13" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11497 -#: src/emc/usr_intf/pncconf/pncconf.glade:16702 -#: src/emc/usr_intf/pncconf/pncconf.glade:19309 -#: src/emc/usr_intf/pncconf/pncconf.glade:22412 -#: src/emc/usr_intf/pncconf/pncconf.glade:24208 -#: src/emc/usr_intf/pncconf/pncconf.glade:26004 -msgid "15:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 12" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10905 -#: src/emc/usr_intf/pncconf/pncconf.glade:11483 -#: src/emc/usr_intf/pncconf/pncconf.glade:16688 -#: src/emc/usr_intf/pncconf/pncconf.glade:19295 -#: src/emc/usr_intf/pncconf/pncconf.glade:22426 -#: src/emc/usr_intf/pncconf/pncconf.glade:24222 -#: src/emc/usr_intf/pncconf/pncconf.glade:26018 -msgid "13:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 11" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10919 -#: src/emc/usr_intf/pncconf/pncconf.glade:11469 -#: src/emc/usr_intf/pncconf/pncconf.glade:16674 -#: src/emc/usr_intf/pncconf/pncconf.glade:19281 -#: src/emc/usr_intf/pncconf/pncconf.glade:22440 -#: src/emc/usr_intf/pncconf/pncconf.glade:24236 -#: src/emc/usr_intf/pncconf/pncconf.glade:26032 -msgid "11:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 10" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10933 -#: src/emc/usr_intf/pncconf/pncconf.glade:11455 -#: src/emc/usr_intf/pncconf/pncconf.glade:16660 -#: src/emc/usr_intf/pncconf/pncconf.glade:19267 -#: src/emc/usr_intf/pncconf/pncconf.glade:22454 -#: src/emc/usr_intf/pncconf/pncconf.glade:24250 -#: src/emc/usr_intf/pncconf/pncconf.glade:26046 -msgid " 9:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 9" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10947 -#: src/emc/usr_intf/pncconf/pncconf.glade:11441 -#: src/emc/usr_intf/pncconf/pncconf.glade:16646 -#: src/emc/usr_intf/pncconf/pncconf.glade:19253 -#: src/emc/usr_intf/pncconf/pncconf.glade:22468 -#: src/emc/usr_intf/pncconf/pncconf.glade:24264 -#: src/emc/usr_intf/pncconf/pncconf.glade:26060 -msgid " 7:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10961 -#: src/emc/usr_intf/pncconf/pncconf.glade:11427 -#: src/emc/usr_intf/pncconf/pncconf.glade:16632 -#: src/emc/usr_intf/pncconf/pncconf.glade:19239 -#: src/emc/usr_intf/pncconf/pncconf.glade:22482 -#: src/emc/usr_intf/pncconf/pncconf.glade:24278 -#: src/emc/usr_intf/pncconf/pncconf.glade:26074 -msgid " 5:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 7" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10975 -#: src/emc/usr_intf/pncconf/pncconf.glade:11413 -#: src/emc/usr_intf/pncconf/pncconf.glade:16618 -#: src/emc/usr_intf/pncconf/pncconf.glade:19225 -#: src/emc/usr_intf/pncconf/pncconf.glade:22496 -#: src/emc/usr_intf/pncconf/pncconf.glade:24292 -#: src/emc/usr_intf/pncconf/pncconf.glade:26088 -msgid " 3:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 6" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10989 -#: src/emc/usr_intf/pncconf/pncconf.glade:11399 -#: src/emc/usr_intf/pncconf/pncconf.glade:16604 -#: src/emc/usr_intf/pncconf/pncconf.glade:19211 -#: src/emc/usr_intf/pncconf/pncconf.glade:22510 -#: src/emc/usr_intf/pncconf/pncconf.glade:24306 -#: src/emc/usr_intf/pncconf/pncconf.glade:26102 -msgid " 1:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 5" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:11002 -#: src/emc/usr_intf/pncconf/pncconf.glade:11065 -#: src/emc/usr_intf/pncconf/pncconf.glade:11324 -#: src/emc/usr_intf/pncconf/pncconf.glade:11386 -#: src/emc/usr_intf/pncconf/pncconf.glade:13937 -#: src/emc/usr_intf/pncconf/pncconf.glade:13999 -#: src/emc/usr_intf/pncconf/pncconf.glade:16529 -#: src/emc/usr_intf/pncconf/pncconf.glade:16591 -#: src/emc/usr_intf/pncconf/pncconf.glade:19142 -#: src/emc/usr_intf/pncconf/pncconf.glade:19198 -#: src/emc/usr_intf/pncconf/pncconf.glade:22523 -#: src/emc/usr_intf/pncconf/pncconf.glade:22580 -#: src/emc/usr_intf/pncconf/pncconf.glade:24319 -#: src/emc/usr_intf/pncconf/pncconf.glade:24376 -#: src/emc/usr_intf/pncconf/pncconf.glade:26115 -#: src/emc/usr_intf/pncconf/pncconf.glade:26172 -#: src/emc/usr_intf/pncconf/pncconf.glade:28686 -#: src/emc/usr_intf/pncconf/pncconf.glade:28749 -#: src/emc/usr_intf/pncconf/pncconf.glade:28905 -#: src/emc/usr_intf/pncconf/pncconf.glade:28967 -#: src/emc/usr_intf/pncconf/pncconf.glade:33067 -#: src/emc/usr_intf/pncconf/pncconf.glade:33263 -#: src/emc/usr_intf/pncconf/pncconf.glade:33325 -#: src/emc/usr_intf/pncconf/pncconf.glade:38183 -#: src/emc/usr_intf/pncconf/pncconf.glade:38246 -#: src/emc/usr_intf/pncconf/pncconf.glade:38520 -#: src/emc/usr_intf/pncconf/pncconf.glade:42530 -#: src/emc/usr_intf/pncconf/pncconf.glade:42593 -#: src/emc/usr_intf/pncconf/pncconf.glade:42749 -#: src/emc/usr_intf/pncconf/pncconf.glade:42811 -#: src/emc/usr_intf/pncconf/pncconf.glade:46924 -#: src/emc/usr_intf/pncconf/pncconf.glade:49453 -#: src/emc/usr_intf/pncconf/pncconf.glade:49516 -#: src/emc/usr_intf/pncconf/pncconf.glade:49672 -#: src/emc/usr_intf/pncconf/pncconf.glade:49734 -#: src/emc/usr_intf/pncconf/pncconf.glade:53847 -msgid "Inv" -msgstr "Инверсный" - -#: src/emc/usr_intf/pncconf/pncconf.glade:11198 -msgid "" -" I/O\n" -"Connector 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:13811 -msgid "" -" I/O\n" -" Connector 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:14012 -#: src/emc/usr_intf/pncconf/pncconf.glade:14039 -#: src/emc/usr_intf/pncconf/pncconf.glade:14053 -#: src/emc/usr_intf/pncconf/pncconf.glade:28632 -#: src/emc/usr_intf/pncconf/pncconf.glade:28646 -#: src/emc/usr_intf/pncconf/pncconf.glade:28673 -#: src/emc/usr_intf/pncconf/pncconf.glade:28980 -#: src/emc/usr_intf/pncconf/pncconf.glade:29007 -#: src/emc/usr_intf/pncconf/pncconf.glade:29021 -#: src/emc/usr_intf/pncconf/pncconf.glade:32951 -#: src/emc/usr_intf/pncconf/pncconf.glade:32965 -#: src/emc/usr_intf/pncconf/pncconf.glade:32992 -#: src/emc/usr_intf/pncconf/pncconf.glade:33338 -#: src/emc/usr_intf/pncconf/pncconf.glade:33365 -#: src/emc/usr_intf/pncconf/pncconf.glade:33379 -#: src/emc/usr_intf/pncconf/pncconf.glade:38129 -#: src/emc/usr_intf/pncconf/pncconf.glade:38143 -#: src/emc/usr_intf/pncconf/pncconf.glade:38170 -#: src/emc/usr_intf/pncconf/pncconf.glade:38594 -#: src/emc/usr_intf/pncconf/pncconf.glade:38621 -#: src/emc/usr_intf/pncconf/pncconf.glade:38635 -#: src/emc/usr_intf/pncconf/pncconf.glade:42476 -#: src/emc/usr_intf/pncconf/pncconf.glade:42490 -#: src/emc/usr_intf/pncconf/pncconf.glade:42517 -#: src/emc/usr_intf/pncconf/pncconf.glade:42824 -#: src/emc/usr_intf/pncconf/pncconf.glade:42851 -#: src/emc/usr_intf/pncconf/pncconf.glade:42865 -#: src/emc/usr_intf/pncconf/pncconf.glade:46808 -#: src/emc/usr_intf/pncconf/pncconf.glade:46822 -#: src/emc/usr_intf/pncconf/pncconf.glade:46849 -#: src/emc/usr_intf/pncconf/pncconf.glade:49399 -#: src/emc/usr_intf/pncconf/pncconf.glade:49413 -#: src/emc/usr_intf/pncconf/pncconf.glade:49440 -#: src/emc/usr_intf/pncconf/pncconf.glade:49747 -#: src/emc/usr_intf/pncconf/pncconf.glade:49774 -#: src/emc/usr_intf/pncconf/pncconf.glade:49788 -#: src/emc/usr_intf/pncconf/pncconf.glade:53731 -#: src/emc/usr_intf/pncconf/pncconf.glade:53745 -#: src/emc/usr_intf/pncconf/pncconf.glade:53772 -msgid " " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:16403 -msgid "" -" I/O\n" -" Connector 4" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:19017 -msgid "" -" I/O\n" -" Connector 5" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include Halui user interface component / commands" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:20813 -msgid "" -" I/O\n" -"Connector 6" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Number of digital (bit) in pins:" +msgstr "Количество цифровых входов:" -#: src/emc/usr_intf/pncconf/pncconf.glade:22609 -msgid "" -" I/O\n" -"Connector 7" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Number of digital (bit) out pins:" +msgstr "Количество цифровых выходов:" -#: src/emc/usr_intf/pncconf/pncconf.glade:24405 -msgid "" -" I/O\n" -"Connector 8" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid " Number of Internal bit memory:" +msgstr "Количество цифровых выходов:" -#: src/emc/usr_intf/pncconf/pncconf.glade:26201 -msgid "" -" I/O\n" -" Connector 9" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of Internal word memory:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:28775 -#: src/emc/usr_intf/pncconf/pncconf.glade:35696 -#: src/emc/usr_intf/pncconf/pncconf.glade:42619 -#: src/emc/usr_intf/pncconf/pncconf.glade:49542 -msgid "page 1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Setup number of external pins" +msgstr "Количество цифровых входов:" -#: src/emc/usr_intf/pncconf/pncconf.glade:31354 -#: src/emc/usr_intf/pncconf/pncconf.glade:38275 -#: src/emc/usr_intf/pncconf/pncconf.glade:45198 -#: src/emc/usr_intf/pncconf/pncconf.glade:52121 -msgid "page 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Z Auto Touch off program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:33107 -#: src/emc/usr_intf/pncconf/pncconf.glade:40030 -#: src/emc/usr_intf/pncconf/pncconf.glade:46953 -#: src/emc/usr_intf/pncconf/pncconf.glade:53876 -msgid "page 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "HAL Component Page" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:33123 -msgid "Smart Serial 0" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Add HAL components with this page." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:40046 -msgid "Smart Serial 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Component" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:46969 -msgid "Smart Serial 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "number of components" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53892 -msgid "Smart Serial 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "PID" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53914 -msgid "First Parallel Port Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53998 -msgid "Outputs (PC to Machine):" -msgstr "Выходы (от PC к станку)" - -#: src/emc/usr_intf/pncconf/pncconf.glade:54552 -msgid "Inputs (Machine to PC):" -msgstr "Входы (От станка к PC)" - -#: src/emc/usr_intf/pncconf/pncconf.glade:55977 -msgid "Launch Test Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mux16" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56003 -msgid "X Axis Motor/Encoder Configuration" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "lowpass" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56091 -msgid "D" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Base Thread" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56104 -msgid "I" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Servo Thread" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56117 -msgid "P" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Load Command " +msgstr "Загрузить команду" -#: src/emc/usr_intf/pncconf/pncconf.glade:56128 -#: src/emc/usr_intf/pncconf/pncconf.glade:60917 -#: src/emc/usr_intf/pncconf/pncconf.glade:62202 -#: src/emc/usr_intf/pncconf/pncconf.glade:63103 -#: src/emc/usr_intf/pncconf/pncconf.glade:64388 -#: src/emc/usr_intf/pncconf/pncconf.glade:65265 -msgid "Bias" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Thread Speed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56141 -msgid "Deadband" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Thread Command" +msgstr "Команда потока:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56188 -#: src/emc/usr_intf/pncconf/pncconf.glade:61128 -#: src/emc/usr_intf/pncconf/pncconf.glade:61991 -#: src/emc/usr_intf/pncconf/pncconf.glade:63314 -#: src/emc/usr_intf/pncconf/pncconf.glade:64177 -#: src/emc/usr_intf/pncconf/pncconf.glade:65470 -msgid "FF0" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Custom Components Commands" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56201 -#: src/emc/usr_intf/pncconf/pncconf.glade:61118 -#: src/emc/usr_intf/pncconf/pncconf.glade:62001 -#: src/emc/usr_intf/pncconf/pncconf.glade:63304 -#: src/emc/usr_intf/pncconf/pncconf.glade:64187 -#: src/emc/usr_intf/pncconf/pncconf.glade:65460 -msgid "FF1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Machine configuration complete" +msgstr "Настройка станка завершена" -#: src/emc/usr_intf/pncconf/pncconf.glade:56214 -#: src/emc/usr_intf/pncconf/pncconf.glade:61108 -#: src/emc/usr_intf/pncconf/pncconf.glade:62011 -#: src/emc/usr_intf/pncconf/pncconf.glade:63294 -#: src/emc/usr_intf/pncconf/pncconf.glade:64197 -#: src/emc/usr_intf/pncconf/pncconf.glade:65450 -msgid "FF2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "" +"All the necessary information has now been gathered. Click \"Apply\" to " +"write your configuration files to disk.\n" +"\n" +"If you are using the 5i25 card with daugther boards or are using SSerial " +"based daughter cards, the cards must be connected and/or field power " +"supplied to the 5i25 \n" +"for the HAL pins to be available. If the config is expecting the pins and " +"they are not there, linuxcnc will error.\n" +"If you experience lockups while running LinuxCNC, you will need to decrease " +"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC, first verify that you " +"entered the proper timings for your stepper drivers. If that does not fix " +"the problem, then run a more thorough latency test as described on the " +"linuxcnc.org wiki:\n" +" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" +"\n" +"If you experience the \"Unexpected Realtime Delay\" message, run a more " +"thorough latency test as described on the linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" msgstr "" +"Вся необходимая информация собрана, Нажмите применить для сохранения " +"конфигурации на диск,\n" +"Если EMC зависает, нужно уменьшить максимальную скорость, что приведет к " +"повышению BASE_PERIOD.\n" +"\n" +"Если вы замечаете проблемы в работе emc, сначала проверьте правильность " +"времен для ШД. Если это не помогает, то проведите более тщательный тест " +"задержек по описанию на linuxcnc.org wiki:\n" +" http;//wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting\n" +"\n" +"Если вы получили сообщение \"Unexpected Realtime Delay\", проведите более " +"тщательный тест задержек по описанию на linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting" -#: src/emc/usr_intf/pncconf/pncconf.glade:56282 -msgid "Servo Info" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +" Motor Encoder Test\n" +"Warning limits switches \n" +" Will not be obeyed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56362 -#, fuzzy -msgid "Spindle Max Output:" -msgstr "Шпиндель ON" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Slow Dac Speed" +msgstr "Медленная скорость ЦАП" -#: src/emc/usr_intf/pncconf/pncconf.glade:56412 -#, fuzzy -msgid "Spindle Max limit:" -msgstr "Шпиндель быстрее" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Fast Dac Speed" +msgstr "Быстрая скорость ЦАП" -#: src/emc/usr_intf/pncconf/pncconf.glade:56426 -#, fuzzy -msgid "Spindle Min Limit:" -msgstr "Шпиндель ШИМ" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Dac Offset:" +msgstr "Отступ ЦАП:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56456 -msgid "" -"Open Loop\n" -" Test" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder Scale:" +msgstr "Множитель энкодера:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56557 -msgid "Quad Pulses / Rev:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Reset Encoder" +msgstr "Сбросить энкодер" -#: src/emc/usr_intf/pncconf/pncconf.glade:56572 -msgid "Dac Max Output:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Enable Amp" +msgstr "Разрешить усилитель" -#: src/emc/usr_intf/pncconf/pncconf.glade:56586 -msgid "Dac Output Scale:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Invert Encoder" +msgstr "Инвертировать энкодер" -#: src/emc/usr_intf/pncconf/pncconf.glade:56599 -msgid "3pwm Deadtime:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Invert Motor" +msgstr "Инвертировать мотор" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"±\n" +"+\n" +"-\n" msgstr "" +"±\n" +"+\n" +"-\n" -#: src/emc/usr_intf/pncconf/pncconf.glade:56612 -#, fuzzy -msgid "3pwm Scale:" -msgstr "Масштаб оси:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Seconds" +msgstr "секунды" -#: src/emc/usr_intf/pncconf/pncconf.glade:56626 -#, fuzzy -msgid "Output Info" -msgstr "Инфо по отступу" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Enable" +msgstr "Разрешение" -#: src/emc/usr_intf/pncconf/pncconf.glade:56691 -msgid "Driver Type:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm/minute^2" +msgstr "мм/минута^2" -#: src/emc/usr_intf/pncconf/pncconf.glade:56735 -msgid "Direction Setup" -msgstr "Установка направления" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm/minute" +msgstr "мм/миннута" -#: src/emc/usr_intf/pncconf/pncconf.glade:56748 -msgid "Direction Hold" -msgstr "Удержание Направления" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Current" +msgstr "Текущий" -#: src/emc/usr_intf/pncconf/pncconf.glade:56791 -msgid "Step Space" -msgstr "Пауза шага" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "P:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56804 -msgid "Step On-Time" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "I:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56820 -msgid "Stepper Info" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "D:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56871 -#, fuzzy -msgid "No feedback" -msgstr "Обратная связь по позиции" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Original" +msgstr "Оригинал" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "DeadBand" +msgstr "Дедбэнд" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "PID Tuning" +msgstr "Настройка ПИД" -#: src/emc/usr_intf/pncconf/pncconf.glade:56881 -#, fuzzy -msgid "Absolute Feedback" -msgstr "Абсолютный" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Time:" +msgstr "Время шага:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56895 -#, fuzzy -msgid "Incremental Feedback" -msgstr "Увеличить" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Space:" +msgstr "Пауза шага:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56909 -#, fuzzy -msgid "Incremental Encoder" -msgstr "Инвертировать энкодер" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Direction Hold:" +msgstr "Удержание направления:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56921 -msgid "Hall sensors" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Direction Setup:" +msgstr "Установка направления:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56933 -msgid "Fanuc Red Cap " -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Timing" +msgstr "Время шага" -#: src/emc/usr_intf/pncconf/pncconf.glade:56945 -#, fuzzy -msgid "Use encoder Index" -msgstr "Неиспользованный енкодер" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "enable" +msgstr "разрешение" -#: src/emc/usr_intf/pncconf/pncconf.glade:56976 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Input Options" -msgstr "Опции программы" +msgid "spindle" +msgstr "Шпиндель:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57000 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Digital instead of PWM outputs" -msgstr "Выбранный цифровой вход вне диапазона" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57009 -msgid "6 outputs instead of 3 " -msgstr "" +msgid "Help Page" +msgstr "Страницы помощи" -#: src/emc/usr_intf/pncconf/pncconf.glade:57021 -msgid "Force Trapezoid Mode" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"X axis:\n" +"Total Travel = 10\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = 0\n" +"Pos Travel Distance = Total Travel - neg travel distance = 10\n" +"Home Position = Origin to Home Position distance = 6\n" +"\n" +"Y axis:\n" +"Total Travel = 8\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = -8\n" +"Pos Travel Distance = Total Travel - neg travel distance = 0\n" +"Home Position = Origin to Home Position distance = 0\n" +"\n" +"Z axis:\n" +"Total Travel = 12\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = -12\n" +"Pos Travel Distance = Total Travel - neg travel distance = 0\n" +"Home Position = Origin to Home Position distance = 0\n" +"\n" +"Note that the direction indicators on the top right show \n" +"movement of the TOOL and on the actual machine,\n" +"often it is the table that actually moves. In that case the \n" +"directions are opposite of shown.\n" +"\n" +"Note this is an example, Many other combinations are \n" +"possible" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57033 -msgid "Emulate feedback " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Mill" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57045 -msgid "Emulated Hall sensors" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"Total Travel = 4 + 6 = 10\n" +"Z Home Offset = Origin to Home Switch distance = 10\n" +"Z Neg Travel Distance = Origin to neg limit distance = 0\n" +"Z Pos Travel Distance = Total Travel - neg travel distance = 10\n" +"Z Home Position = Origin to Home Position distance = 4\n" +"\n" +"X axis would be similar but not shown fully for clarity.\n" +"This is just a sample reference other switch combinations are\n" +"possible." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57058 -msgid "Emulated Fanuc Red Cap" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Lathe" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57085 -#, fuzzy -msgid "8i20 Max Current" -msgstr "Текущий" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Diagram" +msgstr "Диаграмма" -#: src/emc/usr_intf/pncconf/pncconf.glade:57119 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Output Options" -msgstr "Опции программы" +msgid "Output" +msgstr "GPIO выход" -#: src/emc/usr_intf/pncconf/pncconf.glade:57153 -msgid "Poles" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"\t\t\t\tPNCconf - Point aNd Click CONFigurator\n" +"PNCconf is a configuration program for Linuxcnc.\n" +"It configures machines using Mesa I/O cards.\n" +"It configures servo,stepper or closed loop stepper machines.\n" +"It supports some of Mesa's sserial cards.\n" +"It will forever be a work in progress as Linuxcnc changes.\n" +"\n" +"Many thanks To:\n" +"Jeff Eppler - PNCconf is based on stepconf - Jeff's creation. Jeff also has " +"helped with techincal difficulties.\n" +"Big John T - John drew the original machine illustrations. Testing and " +"suggestions.\n" +"Peter Wallace - Technical questions on Mesa's I/O cards. Supplied sample " +"equipment to test with.\n" +"Andy Pugh - suggestions, questions answered and many pin name changes :) \n" +"Dave Armstrong - testing and suggestions expecially with resolvers.\n" +"Everyone who gave a bug report ! I cannot test everything thoughly enough so " +"reports help.\n" +"\n" +"Beta 1 version" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57163 -msgid "Encoder-offset" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "TPI " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57173 -msgid "Drive-offset" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Pulley teeth (motor:Leadscrew):" +msgstr "Зубья шестеренок (Мотор:Винт)" -#: src/emc/usr_intf/pncconf/pncconf.glade:57183 -msgid "output-pattern" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Worm turn ratio (Input:Outputl)" +msgstr "Передача червяка (Вход:Выход)" -#: src/emc/usr_intf/pncconf/pncconf.glade:57193 -msgid "Input-pattern" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Microstep Multiplication Factor:" +msgstr "Множитель микрошага:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57203 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Reverse" -msgstr "Шпиндель назад:" +msgid "Leadscrew Metric Pitch" +msgstr "Шаг винта:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57303 -msgid "lead angle" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motor steps per revolution:" +msgstr "Шаги мотора на оборот:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Motor Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57313 -msgid "alignment current" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "TPI" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57354 -#, fuzzy -msgid "Configuration" -msgstr "Установки *" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "X 4 = Pulses/Rev" +msgstr "X 4 = Импульсов/оборот" -#: src/emc/usr_intf/pncconf/pncconf.glade:57389 -msgid "Use Brushless Motor Control" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder lines per revolution:" +msgstr "Линий энкодера на оборот:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57425 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Scale:" -msgstr "Масштаб" +msgid "Pulley teeth (encoder:Leadscrew):" +msgstr "Зубья шестеренок (Мотор:Винт)" -#: src/emc/usr_intf/pncconf/pncconf.glade:57446 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "% " -msgstr "%" +msgid "Encoder Scale" +msgstr "Множитель энкодера:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57466 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " " +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Use Spindle-At-Speed" -msgstr "Шпиндель" +msgid "encoder pulses per unit:" +msgstr "Линий энкодера на оборот:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57491 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Filter gain:" -msgstr "Ошибка фильтра" +msgid "motor steps per unit:" +msgstr "Шаги мотора на оборот:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57526 -msgid "Spindle Display Filter Settings" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Calculated Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57577 -#, fuzzy -msgid "Single Input Encoder" -msgstr "Инвертировать энкодер" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57631 -msgid "Invert Encoder Direction " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / encoder pulse" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57646 -msgid "Invert Motor Direction" -msgstr "изменить направление мотора" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Resolution:" +msgstr "Разрешение:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57661 -msgid "Feed Speed Following Error:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Distance to acheave max speed:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57675 -msgid "Rapid Speed Following Error:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "sec" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57715 -msgid "" -"Calculate\n" -"Scale" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Khz" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Calculated Axis SCALE:" +msgstr "Вычисленный масштаб оси:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motor RPM at max speed:" +msgstr "Обороты мотора на максимальной скорости:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "xmaxrpm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57744 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Stepper Scale:" -msgstr "Пауза шага:" +msgid "Motion Data" +msgstr "Охлаждение" -#: src/emc/usr_intf/pncconf/pncconf.glade:57771 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "encoder Scale:" -msgstr "Множитель энкодера:" +msgid "gtk-cancel" +msgstr "Отмена" -#: src/emc/usr_intf/pncconf/pncconf.glade:57928 -msgid "Test / Tune Axis" +#: src/emc/usr_intf/gscreen/gscreen.py:349 +#, python-format +msgid "adding import dir %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58235 -msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " +#: src/emc/usr_intf/gscreen/gscreen.py:355 +#, python-format +msgid "module '%s' imported OK" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58251 -msgid "Home Search Velocity:" -msgstr "Максимальная скорость поиска начала:" +#: src/emc/usr_intf/gscreen/gscreen.py:452 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Using CUSTOM glade file from %s ****" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58266 -msgid "Home Switch location (Offset from machine zero Origin):" +#: src/emc/usr_intf/gscreen/gscreen.py:457 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Using SKIN glade file from %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58310 -msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " +#: src/emc/usr_intf/gscreen/gscreen.py:460 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: using STOCK glade file from: %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58326 -msgid "Home Position location (offset from machine zero Origin):" +#: src/emc/usr_intf/gscreen/gscreen.py:466 +#, python-format +msgid "**** Gscreen GLADE ERROR: With main screen xml file: %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58355 -msgid "Use Backlash Compensation:" +#: src/emc/usr_intf/gscreen/gscreen.py:471 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Screen 2 -Using CUSTOM glade file from %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58369 -msgid "Use Compensation File:" +#: src/emc/usr_intf/gscreen/gscreen.py:477 +#, python-format +msgid "**** Gscreen GLADE ERROR: With screen 2's xml file: %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58412 +#: src/emc/usr_intf/gscreen/gscreen.py:479 msgid "" -"Type 1\n" -"Type 2" +"\n" +"**** GSCREEN INFO: No Screen 2 glade file present" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58427 -msgid "filename:" +#: src/emc/usr_intf/gscreen/gscreen.py:519 +msgid "No UNITS entry found in [TRAJ] or [AXIS_0] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58455 -msgid "Home latch Velocity:" -msgstr "Максимальная скорость на датчике начала" - -#: src/emc/usr_intf/pncconf/pncconf.glade:58494 -msgid "Home Search Direction:" -msgstr "Направление поиска начала:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:58507 +#: src/emc/usr_intf/gscreen/gscreen.py:532 msgid "" -"Towards Negative limit\n" -"Towards Positive limit" +"*** Gscreen ERROR: Asking for a HAL component using a name that already " +"exists." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58523 -msgid "Home Latch Direction:" -msgstr "Направление датчика начала" - -#: src/emc/usr_intf/pncconf/pncconf.glade:58552 -msgid "Home Final Velocity:" -msgstr "Максимальная скорость поиска начала" +#: src/emc/usr_intf/gscreen/gscreen.py:585 +msgid "No default jog increments entry found in [DISPLAY] of INI file" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58591 -msgid "Use Encoder Index For Home:" +#: src/emc/usr_intf/gscreen/gscreen.py:598 +msgid "No default angular jog increments entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58603 +#: src/emc/usr_intf/gscreen/gscreen.py:607 +#, python-format msgid "" -"NO\n" -"YES" +"No DEFAULT_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58628 -msgid "Advanced Options" -msgstr "Продвинутые настройки" +#: src/emc/usr_intf/gscreen/gscreen.py:618 +#, python-format +msgid "" +"No MAX_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58712 -msgid "Cmd 1" +#: src/emc/usr_intf/gscreen/gscreen.py:625 +msgid "No MAX_VELOCITY found in [TRAJ] of the INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58718 -msgid "Cmd 2" +#: src/emc/usr_intf/gscreen/gscreen.py:638 +#, python-format +msgid "" +"No DEFAULT_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58728 -msgid "Cmd 3" +#: src/emc/usr_intf/gscreen/gscreen.py:649 +#, python-format +msgid "" +"No MAX_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58738 -msgid "Cmd 4" +#: src/emc/usr_intf/gscreen/gscreen.py:657 +msgid "No MAX_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58748 -msgid "Cmd 5" +#: src/emc/usr_intf/gscreen/gscreen.py:663 +msgid "No MIN_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58874 -msgid "Cmd 6" +#: src/emc/usr_intf/gscreen/gscreen.py:669 +msgid "No MAX_FEED_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58884 -msgid "Cmd 7" +#: src/emc/usr_intf/gscreen/gscreen.py:674 +msgid "This screen will be orientated for Lathe options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58896 -msgid "Cmd 8" +#: src/emc/usr_intf/gscreen/gscreen.py:727 +msgid "CYCLE_TIME in [DISPLAY] of INI file is missing: defaulting to 100ms" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58908 -msgid "Cmd 9" +#: src/emc/usr_intf/gscreen/gscreen.py:730 +msgid "CYCLE_TIME in [DISPLAY] of INI file is too small: defaulting to 100ms" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58920 -msgid "Cmd 10" +#: src/emc/usr_intf/gscreen/gscreen.py:732 +#, python-format +msgid "timeout %d" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58990 -msgid "Cmd 11" +#: src/emc/usr_intf/gscreen/gscreen.py:1001 +msgid "" +"**** WARNING GSCREEN: could not understand the window geometry info in " +"hidden preference file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59000 -msgid "Cmd 12" +#: src/emc/usr_intf/gscreen/gscreen.py:1089 +msgid "Control powered up and initialized" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59012 -msgid "Cmd 13" +#: src/emc/usr_intf/gscreen/gscreen.py:1264 +msgid "Cycle start pressed in AUTO mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59024 -msgid "Cmd 14" +#: src/emc/usr_intf/gscreen/gscreen.py:1267 +#, fuzzy +msgid "Cycle start pressed in MDI mode" +msgstr "не могу делать это (%s) в MDI режиме" + +#: src/emc/usr_intf/gscreen/gscreen.py:1290 +#, python-format +msgid "Please change to tool # %s, then click OK." +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1291 +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +#: src/emc/usr_intf/gscreen/gscreen.py:1789 +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2849 +msgid "INFO:" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +msgid "Can't start spindle manually while MDI busy" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +#, fuzzy +msgid "can't start spindle manually in Auto mode" +msgstr "не могу делать это (%s) в ручном режиме" + +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +msgid "No direction selected for spindle" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59036 -msgid "Cmd 15" +#: src/emc/usr_intf/gscreen/gscreen.py:1331 +#: src/emc/usr_intf/gscreen/gscreen.py:1333 +#, fuzzy +msgid "Spindle Speed Preset Entry" +msgstr "Обороты шпинделя" + +#: src/emc/usr_intf/gscreen/gscreen.py:1362 +#: src/emc/usr_intf/gscreen/gscreen.py:1367 +#, fuzzy +msgid "Manual Tool Index Entry" +msgstr "Ручная смена инструмента AXIS" + +#: src/emc/usr_intf/gscreen/gscreen.py:1489 +msgid "Entry dialog" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59053 -msgid "Include Halui user interface component / commands" +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +#, fuzzy +msgid "Classicladder realtime component not detected" +msgstr "Компонента реального времени не загружена" + +#: src/emc/usr_intf/gscreen/gscreen.py:1617 +msgid "ladder not available - is the realtime component loaded?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59127 +#: src/emc/usr_intf/gscreen/gscreen.py:1691 #, fuzzy -msgid "Number of digital (bit) in pins:" -msgstr "Количество цифровых входов:" +msgid "Override Entry" +msgstr "Игнорировать пределы" -#: src/emc/usr_intf/pncconf/pncconf.glade:59138 +#: src/emc/usr_intf/gscreen/gscreen.py:1719 #, fuzzy -msgid "Number of digital (bit) out pins:" -msgstr "Количество цифровых выходов:" +msgid "Machine powered on" +msgstr "Станок вкл" -#: src/emc/usr_intf/pncconf/pncconf.glade:59308 +#: src/emc/usr_intf/gscreen/gscreen.py:1724 #, fuzzy -msgid "Setup number of external pins" -msgstr "Количество цифровых входов:" +msgid "Machine Estopped!" +msgstr "Машинная позиция" -#: src/emc/usr_intf/pncconf/pncconf.glade:59360 -msgid "Z Auto Touch off program" +#: src/emc/usr_intf/gscreen/gscreen.py:1727 +msgid "Calculator" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59505 -msgid "HAL Component Page" +#: src/emc/usr_intf/gscreen/gscreen.py:1857 +#, python-format +msgid "Axes %s are homed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59648 -msgid "lowpass" +#: src/emc/usr_intf/gscreen/gscreen.py:1864 +msgid "All the axes have been homed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59675 -msgid "mux16" +#: src/emc/usr_intf/gscreen/gscreen.py:1874 +#, python-format +msgid "There are unhomed axes: %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59702 -msgid "scale" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:1879 +#, fuzzy, python-format +msgid "Program loaded: %s" +msgstr "Файл программы %s" -#: src/emc/usr_intf/pncconf/pncconf.glade:59728 -msgid "PID" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:1977 +#, fuzzy +msgid "Manual Spindle Control" +msgstr "Остановить шпиндель" -#: src/emc/usr_intf/pncconf/pncconf.glade:59739 -msgid "number of components" +#: src/emc/usr_intf/gscreen/gscreen.py:2034 +msgid "Keyboard" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59767 -msgid "Component" +#: src/emc/usr_intf/gscreen/gscreen.py:2067 +msgid "Error with launching 'Onboard' on-screen keyboard program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59794 -msgid "Add HAL components with this page." +#: src/emc/usr_intf/gscreen/gscreen.py:2215 +#, python-format +msgid "**** GSCREEN INFO: Overriding internal signal call to %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59844 -msgid "Thread Command" -msgstr "Команда потока:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:59854 -msgid "Thread Speed" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:2643 +#, fuzzy +msgid " Zero Origin" +msgstr "Оригинал" -#: src/emc/usr_intf/pncconf/pncconf.glade:59906 -msgid "Load Command " -msgstr "Загрузить команду" +#: src/emc/usr_intf/gscreen/gscreen.py:2644 +#, fuzzy +msgid "Offset Origin" +msgstr "Инфо по отступу" -#: src/emc/usr_intf/pncconf/pncconf.glade:59952 -msgid "Servo Thread" +#: src/emc/usr_intf/gscreen/gscreen.py:2659 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing text or type) " +"in INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59965 -msgid "Base Thread" +#: src/emc/usr_intf/gscreen/gscreen.py:2661 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing pinname) in " +"INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59979 -msgid "Custom Components Commands" +#: src/emc/usr_intf/gscreen/gscreen.py:2663 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing boldtext) in " +"INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60031 +#: src/emc/usr_intf/gscreen/gscreen.py:2667 +#, python-format msgid "" -" Motor Encoder Test\n" -"Warning limits switches \n" -" Will not be obeyed" +"**** Gscreen ERROR: invalid message type (%s)in INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60067 -#: src/emc/usr_intf/pncconf/pncconf.glade:60766 -#: src/emc/usr_intf/pncconf/pncconf.glade:61859 -#: src/emc/usr_intf/pncconf/pncconf.glade:62952 -#: src/emc/usr_intf/pncconf/pncconf.glade:64045 -#: src/emc/usr_intf/pncconf/pncconf.glade:65025 -msgid "Invert Motor" -msgstr "Инвертировать мотор" +#: src/emc/usr_intf/gscreen/gscreen.py:2699 +msgid "Dialog error - Is the dialog handler missing from the handler file?" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60083 -#: src/emc/usr_intf/pncconf/pncconf.glade:60782 -#: src/emc/usr_intf/pncconf/pncconf.glade:61875 -#: src/emc/usr_intf/pncconf/pncconf.glade:62968 -#: src/emc/usr_intf/pncconf/pncconf.glade:64061 -#: src/emc/usr_intf/pncconf/pncconf.glade:65040 -msgid "Invert Encoder" -msgstr "Инвертировать энкодер" +#: src/emc/usr_intf/gscreen/gscreen.py:2701 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3540 +#, fuzzy +msgid "Manual Toolchange" +msgstr "Ручная смена инструмента AXIS" -#: src/emc/usr_intf/pncconf/pncconf.glade:60100 -msgid "Enable Amp" -msgstr "Разрешить усилитель" +#: src/emc/usr_intf/gscreen/gscreen.py:2703 +#: src/emc/usr_intf/gmoccapy/dialogs.py:94 +#: src/emc/usr_intf/gmoccapy/dialogs.py:107 +#: src/emc/usr_intf/gmoccapy/dialogs.py:119 +msgid "Operator Message" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60114 -msgid "Reset Encoder" -msgstr "Сбросить энкодер" +#: src/emc/usr_intf/gscreen/gscreen.py:2737 +#: src/emc/usr_intf/gscreen/gscreen.py:2741 +#: src/emc/usr_intf/gmoccapy/dialogs.py:155 +#: src/emc/usr_intf/gmoccapy/dialogs.py:159 +#, fuzzy +msgid "Restart Entry" +msgstr "Рестарт" -#: src/emc/usr_intf/pncconf/pncconf.glade:60142 -msgid "Encoder Scale:" -msgstr "Множитель энкодера:" +#: src/emc/usr_intf/gscreen/gscreen.py:2752 +#: src/emc/usr_intf/gmoccapy/dialogs.py:173 +msgid "Enter" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60153 -msgid "Dac Offset:" -msgstr "Отступ ЦАП:" +#: src/emc/usr_intf/gscreen/gscreen.py:2774 +#, python-format +msgid "Ready to Restart program from line %d" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60243 -msgid "Fast Dac Speed" -msgstr "Быстрая скорость ЦАП" +#: src/emc/usr_intf/gscreen/gscreen.py:2807 +#, fuzzy +msgid "Invalid embeded tab configuration" +msgstr "Создать новую конфигурацию" -#: src/emc/usr_intf/pncconf/pncconf.glade:60258 -msgid "Slow Dac Speed" -msgstr "Медленная скорость ЦАП" +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +msgid "Can't jog multiple axis" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60407 -#: src/emc/usr_intf/pncconf/pncconf.glade:61503 -#: src/emc/usr_intf/pncconf/pncconf.glade:62596 -#: src/emc/usr_intf/pncconf/pncconf.glade:63689 -#: src/emc/usr_intf/pncconf/pncconf.glade:64788 -msgid "mm/minute" -msgstr "мм/миннута" +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +msgid "No axis selected to jog" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60441 -#: src/emc/usr_intf/pncconf/pncconf.glade:61536 -#: src/emc/usr_intf/pncconf/pncconf.glade:62629 -#: src/emc/usr_intf/pncconf/pncconf.glade:63722 -#: src/emc/usr_intf/pncconf/pncconf.glade:64821 -msgid "mm/minute^2" -msgstr "мм/минута^2" +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +msgid "No axis selected to move" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60550 -#: src/emc/usr_intf/pncconf/pncconf.glade:61644 -#: src/emc/usr_intf/pncconf/pncconf.glade:62737 -#: src/emc/usr_intf/pncconf/pncconf.glade:64930 -msgid "Enable" -msgstr "Разрешение" +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +msgid "Can't home multiple axis - select HOME ALL instead" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60600 -#: src/emc/usr_intf/pncconf/pncconf.glade:61693 -#: src/emc/usr_intf/pncconf/pncconf.glade:62786 -#: src/emc/usr_intf/pncconf/pncconf.glade:63879 -#: src/emc/usr_intf/pncconf/pncconf.glade:65139 -msgid "Seconds" -msgstr "секунды" +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +msgid "No axis selected to home" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60907 -#: src/emc/usr_intf/pncconf/pncconf.glade:62212 -#: src/emc/usr_intf/pncconf/pncconf.glade:63093 -#: src/emc/usr_intf/pncconf/pncconf.glade:64398 -#: src/emc/usr_intf/pncconf/pncconf.glade:65255 -msgid "DeadBand" -msgstr "Дедбэнд" +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +msgid "Can't unhome multiple axis" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61089 -#: src/emc/usr_intf/pncconf/pncconf.glade:61380 -#: src/emc/usr_intf/pncconf/pncconf.glade:62030 -#: src/emc/usr_intf/pncconf/pncconf.glade:62401 -#: src/emc/usr_intf/pncconf/pncconf.glade:63275 -#: src/emc/usr_intf/pncconf/pncconf.glade:63562 -#: src/emc/usr_intf/pncconf/pncconf.glade:64216 -#: src/emc/usr_intf/pncconf/pncconf.glade:64587 -#: src/emc/usr_intf/pncconf/pncconf.glade:65431 -#: src/emc/usr_intf/pncconf/pncconf.glade:65718 -msgid "Original" -msgstr "Оригинал" +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +msgid "No axis selected to unhome" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61138 -#: src/emc/usr_intf/pncconf/pncconf.glade:61981 -#: src/emc/usr_intf/pncconf/pncconf.glade:63324 -#: src/emc/usr_intf/pncconf/pncconf.glade:64167 -#: src/emc/usr_intf/pncconf/pncconf.glade:65480 -msgid "D:" +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +msgid "No axis selected for origin zeroing" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61148 -#: src/emc/usr_intf/pncconf/pncconf.glade:61971 -#: src/emc/usr_intf/pncconf/pncconf.glade:63334 -#: src/emc/usr_intf/pncconf/pncconf.glade:64157 -#: src/emc/usr_intf/pncconf/pncconf.glade:65490 -msgid "I:" +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +msgid "No axis selected for origin touch-off" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61158 -#: src/emc/usr_intf/pncconf/pncconf.glade:61961 -#: src/emc/usr_intf/pncconf/pncconf.glade:63344 -#: src/emc/usr_intf/pncconf/pncconf.glade:64147 -#: src/emc/usr_intf/pncconf/pncconf.glade:65500 -msgid "P:" +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +msgid "Can't tool touch-off multiple axes" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61168 -#: src/emc/usr_intf/pncconf/pncconf.glade:61392 -#: src/emc/usr_intf/pncconf/pncconf.glade:61951 -#: src/emc/usr_intf/pncconf/pncconf.glade:62389 -#: src/emc/usr_intf/pncconf/pncconf.glade:63354 -#: src/emc/usr_intf/pncconf/pncconf.glade:63574 -#: src/emc/usr_intf/pncconf/pncconf.glade:64137 -#: src/emc/usr_intf/pncconf/pncconf.glade:64575 -#: src/emc/usr_intf/pncconf/pncconf.glade:65510 -#: src/emc/usr_intf/pncconf/pncconf.glade:65730 -msgid "Current" -msgstr "Текущий" +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +msgid "No axis selected for tool touch-off" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61185 -#: src/emc/usr_intf/pncconf/pncconf.glade:62278 -#: src/emc/usr_intf/pncconf/pncconf.glade:63371 -#: src/emc/usr_intf/pncconf/pncconf.glade:64464 -#: src/emc/usr_intf/pncconf/pncconf.glade:65527 -msgid "PID Tuning" -msgstr "Настройка ПИД" +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#: src/emc/usr_intf/gscreen/gscreen.py:3375 +#, fuzzy +msgid "Error Message" +msgstr "Ошибка при сохранении файла" -#: src/emc/usr_intf/pncconf/pncconf.glade:61370 -#: src/emc/usr_intf/pncconf/pncconf.glade:62413 -#: src/emc/usr_intf/pncconf/pncconf.glade:63552 -#: src/emc/usr_intf/pncconf/pncconf.glade:64599 -#: src/emc/usr_intf/pncconf/pncconf.glade:65708 -msgid "Direction Setup:" -msgstr "Установка направления:" +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#, python-format +msgid "Tool editor error - is the %s editor available?" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61404 -#: src/emc/usr_intf/pncconf/pncconf.glade:62379 -#: src/emc/usr_intf/pncconf/pncconf.glade:63586 -#: src/emc/usr_intf/pncconf/pncconf.glade:64565 -#: src/emc/usr_intf/pncconf/pncconf.glade:65742 -msgid "Direction Hold:" -msgstr "Удержание направления:" +#: src/emc/usr_intf/gscreen/gscreen.py:3377 +#: src/emc/usr_intf/gscreen/gscreen.py:3379 +msgid "Message" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61414 -#: src/emc/usr_intf/pncconf/pncconf.glade:62369 -#: src/emc/usr_intf/pncconf/pncconf.glade:63596 -#: src/emc/usr_intf/pncconf/pncconf.glade:64555 -#: src/emc/usr_intf/pncconf/pncconf.glade:65752 -msgid "Step Space:" -msgstr "Пауза шага:" +#: src/emc/usr_intf/gscreen/gscreen.py:3409 +#, python-format +msgid "%d RPM" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:48 +#: src/emc/usr_intf/gscreen/gscreen.glade:59 +#: src/emc/usr_intf/gscreen/gscreen.glade:135 +#: src/emc/usr_intf/gscreen/gscreen.glade:176 +#: src/emc/usr_intf/gscreen/gscreen.glade:187 +#: src/emc/usr_intf/gscreen/gscreen.glade:264 +#: src/emc/usr_intf/gscreen/gscreen.glade:306 +#: src/emc/usr_intf/gscreen/gscreen.glade:317 +#: src/emc/usr_intf/gscreen/gscreen.glade:393 +#: src/emc/usr_intf/gscreen/gscreen.glade:434 +#: src/emc/usr_intf/gscreen/gscreen.glade:445 +#: src/emc/usr_intf/gscreen/gscreen.glade:521 +#: src/emc/usr_intf/gscreen/gscreen.glade:562 +#: src/emc/usr_intf/gscreen/gscreen.glade:573 +#: src/emc/usr_intf/gscreen/gscreen.glade:649 +#: src/emc/usr_intf/gscreen/gscreen.glade:690 +#: src/emc/usr_intf/gscreen/gscreen.glade:701 +#: src/emc/usr_intf/gscreen/gscreen.glade:777 +#: src/emc/usr_intf/gscreen/gscreen.glade:818 +#: src/emc/usr_intf/gscreen/gscreen.glade:829 +#: src/emc/usr_intf/gscreen/gscreen.glade:905 +#: src/emc/usr_intf/gscreen/gscreen.glade:946 +#: src/emc/usr_intf/gscreen/gscreen.glade:957 +#: src/emc/usr_intf/gscreen/gscreen.glade:1033 +#: src/emc/usr_intf/gscreen/gscreen.glade:1074 +#: src/emc/usr_intf/gscreen/gscreen.glade:1085 +#: src/emc/usr_intf/gscreen/gscreen.glade:1161 +msgid "0000.0000" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:73 +#: src/emc/usr_intf/gscreen/gscreen.glade:201 +#: src/emc/usr_intf/gscreen/gscreen.glade:331 +#: src/emc/usr_intf/gscreen/gscreen.glade:459 +#: src/emc/usr_intf/gscreen/gscreen.glade:587 +#: src/emc/usr_intf/gscreen/gscreen.glade:715 +#: src/emc/usr_intf/gscreen/gscreen.glade:843 +#: src/emc/usr_intf/gscreen/gscreen.glade:971 +#: src/emc/usr_intf/gscreen/gscreen.glade:1099 +msgid "REL" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:99 +#: src/emc/usr_intf/gscreen/gscreen.glade:227 +#: src/emc/usr_intf/gscreen/gscreen.glade:357 +#: src/emc/usr_intf/gscreen/gscreen.glade:485 +#: src/emc/usr_intf/gscreen/gscreen.glade:613 +#: src/emc/usr_intf/gscreen/gscreen.glade:741 +#: src/emc/usr_intf/gscreen/gscreen.glade:869 +#: src/emc/usr_intf/gscreen/gscreen.glade:997 +#: src/emc/usr_intf/gscreen/gscreen.glade:1125 +msgid "ABS" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:630 +msgid "B" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:758 +msgid "C" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:886 +#, fuzzy +msgid "U" +msgstr "Вверх" -#: src/emc/usr_intf/pncconf/pncconf.glade:61424 -#: src/emc/usr_intf/pncconf/pncconf.glade:62359 -#: src/emc/usr_intf/pncconf/pncconf.glade:63606 -#: src/emc/usr_intf/pncconf/pncconf.glade:64545 -#: src/emc/usr_intf/pncconf/pncconf.glade:65762 -msgid "Step Time:" -msgstr "Время шага:" +#: src/emc/usr_intf/gscreen/gscreen.glade:1014 +msgid "V" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61439 -#: src/emc/usr_intf/pncconf/pncconf.glade:62528 -#: src/emc/usr_intf/pncconf/pncconf.glade:63621 -#: src/emc/usr_intf/pncconf/pncconf.glade:64714 -#: src/emc/usr_intf/pncconf/pncconf.glade:65777 -msgid "Step Timing" -msgstr "Время шага" +#: src/emc/usr_intf/gscreen/gscreen.glade:1298 +#, fuzzy +msgid "G code" +msgstr "Сбросить энкодер" -#: src/emc/usr_intf/pncconf/pncconf.glade:63830 -msgid "enable" -msgstr "разрешение" +#: src/emc/usr_intf/gscreen/gscreen.glade:1392 +#, fuzzy +msgid "G Codes Active" +msgstr "Множитель энкодера:" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1451 +msgid "MV:100%" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65798 +#: src/emc/usr_intf/gscreen/gscreen.glade:1470 #, fuzzy -msgid "spindle" -msgstr "Шпиндель:" +msgid " Mist" +msgstr "Туман" -#: src/emc/usr_intf/pncconf/pncconf.glade:65881 +#: src/emc/usr_intf/gscreen/gscreen.glade:1481 #, fuzzy -msgid "Help Page" -msgstr "Страницы помощи" +msgid " Flood " +msgstr "Струя" -#: src/emc/usr_intf/pncconf/pncconf.glade:65911 -msgid "" -"X axis:\n" -"Total Travel = 10\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = 0\n" -"Pos Travel Distance = Total Travel - neg travel distance = 10\n" -"Home Position = Origin to Home Position distance = 6\n" -"\n" -"Y axis:\n" -"Total Travel = 8\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = -8\n" -"Pos Travel Distance = Total Travel - neg travel distance = 0\n" -"Home Position = Origin to Home Position distance = 0\n" -"\n" -"Z axis:\n" -"Total Travel = 12\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = -12\n" -"Pos Travel Distance = Total Travel - neg travel distance = 0\n" -"Home Position = Origin to Home Position distance = 0\n" -"\n" -"Note that the direction indicators on the top right show \n" -"movement of the TOOL and on the actual machine,\n" -"often it is the table that actually moves. In that case the \n" -"directions are opposite of shown.\n" -"\n" -"Note this is an example, Many other combinations are \n" -"possible" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1533 +#, fuzzy +msgid " At Speed " +msgstr "Обороты шпинделя" -#: src/emc/usr_intf/pncconf/pncconf.glade:65951 -msgid "Mill" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1546 +#, fuzzy +msgid " Jog mode" +msgstr "Режим сочленений" -#: src/emc/usr_intf/pncconf/pncconf.glade:65970 -msgid "" -"Total Travel = 4 + 6 = 10\n" -"Z Home Offset = Origin to Home Switch distance = 10\n" -"Z Neg Travel Distance = Origin to neg limit distance = 0\n" -"Z Pos Travel Distance = Total Travel - neg travel distance = 10\n" -"Z Home Position = Origin to Home Position distance = 4\n" -"\n" -"X axis would be similar but not shown fully for clarity.\n" -"This is just a sample reference other switch combinations are\n" -"possible." +#: src/emc/usr_intf/gscreen/gscreen.glade:1600 +msgid "10 DPM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65994 -msgid "Lathe" +#: src/emc/usr_intf/gscreen/gscreen.glade:1616 +msgid "10 Ipm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66010 -msgid "Diagram" -msgstr "Диаграмма" - -#: src/emc/usr_intf/pncconf/pncconf.glade:66043 +#: src/emc/usr_intf/gscreen/gscreen.glade:1690 #, fuzzy -msgid "Output" -msgstr "GPIO выход" +msgid "Status" +msgstr " a)" -#: src/emc/usr_intf/pncconf/pncconf.glade:66123 -msgid "Motor steps per revolution:" -msgstr "Шаги мотора на оборот:" +#: src/emc/usr_intf/gscreen/gscreen.glade:1715 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2510 +msgid "" +"Search\n" +" Text:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66173 -#: src/emc/usr_intf/pncconf/pncconf.glade:66459 +#: src/emc/usr_intf/gscreen/gscreen.glade:1766 #, fuzzy -msgid "Leadscrew Metric Pitch" -msgstr "Шаг винта:" +msgid "Mode" +msgstr "Питание" -#: src/emc/usr_intf/pncconf/pncconf.glade:66186 -msgid "Microstep Multiplication Factor:" -msgstr "Множитель микрошага:" +#: src/emc/usr_intf/gscreen/gscreen.glade:1782 +msgid "Main Level" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66199 -#: src/emc/usr_intf/pncconf/pncconf.glade:66481 -msgid "Worm turn ratio (Input:Outputl)" -msgstr "Передача червяка (Вход:Выход)" +#: src/emc/usr_intf/gscreen/gscreen.glade:1823 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3678 +msgid "Themes" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66212 +#: src/emc/usr_intf/gscreen/gscreen.glade:1847 #, fuzzy -msgid "Pulley teeth (motor:Leadscrew):" -msgstr "Зубья шестеренок (Мотор:Винт)" +msgid "Relative Text Color" +msgstr "Относительная позиция" -#: src/emc/usr_intf/pncconf/pncconf.glade:66356 -msgid "TPI " +#: src/emc/usr_intf/gscreen/gscreen.glade:1895 +msgid "DTG Text Color" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66372 -msgid "Step Motor Scale" +#: src/emc/usr_intf/gscreen/gscreen.glade:1916 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3710 +msgid "Warning Audio" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1926 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3723 +msgid "Alert Audio" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66472 +#: src/emc/usr_intf/gscreen/gscreen.glade:1947 #, fuzzy -msgid "Pulley teeth (encoder:Leadscrew):" -msgstr "Зубья шестеренок (Мотор:Винт)" +msgid "Grid Size" +msgstr "Размер" -#: src/emc/usr_intf/pncconf/pncconf.glade:66537 -msgid "Encoder lines per revolution:" -msgstr "Линий энкодера на оборот:" +#: src/emc/usr_intf/gscreen/gscreen.glade:1986 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4119 +#, fuzzy +msgid "Starting RPM" +msgstr "Настройки" -#: src/emc/usr_intf/pncconf/pncconf.glade:66547 -msgid "X 4 = Pulses/Rev" -msgstr "X 4 = Импульсов/оборот" +#: src/emc/usr_intf/gscreen/gscreen.glade:2015 +msgid "Metric\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66651 -msgid "TPI" +#: src/emc/usr_intf/gscreen/gscreen.glade:2030 +msgid "" +" Display\n" +"Aux Screen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66667 +#: src/emc/usr_intf/gscreen/gscreen.glade:2045 #, fuzzy -msgid "Encoder Scale" -msgstr "Множитель энкодера:" +msgid "" +"Diameter\n" +" Mode" +msgstr "Диаметр:" -#: src/emc/usr_intf/pncconf/pncconf.glade:66711 +#: src/emc/usr_intf/gscreen/gscreen.glade:2062 +#: src/emc/usr_intf/gscreen/gscreen.glade:3096 #, fuzzy -msgid "motor steps per unit:" -msgstr "Шаги мотора на оборот:" +msgid "" +" Show\n" +"Offsets" +msgstr "Показать размеры" -#: src/emc/usr_intf/pncconf/pncconf.glade:66721 +#: src/emc/usr_intf/gscreen/gscreen.glade:2079 #, fuzzy -msgid "encoder pulses per unit:" -msgstr "Линий энкодера на оборот:" +msgid "" +"Show\n" +"DTG" +msgstr "Показать" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2096 +msgid "" +" Gscreen\n" +"Fullscreen" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66756 -msgid " " +#: src/emc/usr_intf/gscreen/gscreen.glade:2118 +msgid "" +" On M7 Use\n" +"Aux Coolant" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66770 -msgid "Calculated Scale" +#: src/emc/usr_intf/gscreen/gscreen.glade:2131 +msgid "" +" On M8 Use\n" +"Aux Coolant" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66848 -msgid "xmaxrpm" +#: src/emc/usr_intf/gscreen/gscreen.glade:2144 +msgid "Hide Pointer" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66864 -msgid "RPM" +#: src/emc/usr_intf/gscreen/gscreen.glade:2156 +msgid "" +" Desktop\n" +"Notification" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66877 -msgid "Motor RPM at max speed:" -msgstr "Обороты мотора на максимальной скорости:" +#: src/emc/usr_intf/gscreen/gscreen.glade:2228 +#: src/emc/usr_intf/gscreen/gscreen.glade:2368 +#, fuzzy +msgid "Debug" +msgstr "Отладка..." -#: src/emc/usr_intf/pncconf/pncconf.glade:66921 -msgid "Calculated Axis SCALE:" -msgstr "Вычисленный масштаб оси:" +#: src/emc/usr_intf/gscreen/gscreen.glade:2263 +#, fuzzy +msgid "Alarm History" +msgstr "Журнал:" -#: src/emc/usr_intf/pncconf/pncconf.glade:66934 -msgid "Khz" +#: src/emc/usr_intf/gscreen/gscreen.glade:2281 +msgid "" +" Launch\n" +"Halshow" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66949 -msgid "sec" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2293 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6449 +#, fuzzy +msgid "Calibration" +msgstr "Калибровка" -#: src/emc/usr_intf/pncconf/pncconf.glade:67049 -msgid "Distance to acheave max speed:" +#: src/emc/usr_intf/gscreen/gscreen.glade:2304 +#, fuzzy +msgid "Halmeter" +msgstr "HAL-метр" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2315 +msgid "" +"linuxcnc\n" +" Status" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67077 -msgid "Resolution:" -msgstr "Разрешение:" +#: src/emc/usr_intf/gscreen/gscreen.glade:2327 +#, fuzzy +msgid "Halscope" +msgstr "HAL-скоп" -#: src/emc/usr_intf/pncconf/pncconf.glade:67105 -msgid "mm / encoder pulse" +#: src/emc/usr_intf/gscreen/gscreen.glade:2338 +msgid "Ladder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67123 +#: src/emc/usr_intf/gscreen/gscreen.glade:2386 #, fuzzy -msgid "Motion Data" -msgstr "Охлаждение" +msgid "Tooleditor" +msgstr "Редактор таблицы инструментов..." -#: src/emc/usr_intf/pncconf/pncconf.glade:67151 +#: src/emc/usr_intf/gscreen/gscreen.glade:2404 #, fuzzy -msgid "gtk-cancel" -msgstr "Отмена" - -#: src/emc/task/emctaskmain.cc:467 src/emc/task/emctaskmain.cc:500 -#, c-format -msgid "%s exceeds +X limit" -msgstr "%s выходит за +X предел" - -#: src/emc/task/emctaskmain.cc:472 src/emc/task/emctaskmain.cc:505 -#, c-format -msgid "%s exceeds +Y limit" -msgstr "%s выходит за +Y предел" +msgid "" +"Offset\n" +" Page" +msgstr "Значение отступа" -#: src/emc/task/emctaskmain.cc:477 src/emc/task/emctaskmain.cc:510 -#, c-format -msgid "%s exceeds +Z limit" -msgstr "%s выходит за +Z предел" +#: src/emc/usr_intf/gscreen/gscreen.glade:2572 +#: src/emc/usr_intf/gscreen/gscreen.glade:2749 +#: src/emc/usr_intf/gscreen/gscreen.glade:3156 +msgid "\n" +msgstr "" -#: src/emc/task/emctaskmain.cc:482 src/emc/task/emctaskmain.cc:515 -#, c-format -msgid "%s exceeds -X limit" -msgstr "%s выходит за -X предел" +#: src/emc/usr_intf/gscreen/gscreen.glade:2584 +#, fuzzy +msgid "Tool Setting" +msgstr "Поиск начала" -#: src/emc/task/emctaskmain.cc:487 src/emc/task/emctaskmain.cc:520 -#, c-format -msgid "%s exceeds -Y limit" -msgstr "%s выходит за -Y предел" +#: src/emc/usr_intf/gscreen/gscreen.glade:2648 +#, fuzzy +msgid "" +"Single\n" +" Step" +msgstr "Один пробел" -#: src/emc/task/emctaskmain.cc:492 src/emc/task/emctaskmain.cc:525 -#, c-format -msgid "%s exceeds -Z limit" -msgstr "%s выходит за -Z предел" +#: src/emc/usr_intf/gscreen/gscreen.glade:2661 +#, fuzzy +msgid "" +"Run At\n" +" Line" +msgstr "Время работы:" -#: src/emc/task/emctaskmain.cc:853 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:2673 msgid "" -"command (%s) cannot be executed until the machine is out of E-stop and " -"turned on" +"Change \n" +" View" msgstr "" -"команда (%s) не может быть исполнена пока станок на АВОСТе или выключен." -#: src/emc/task/emctaskmain.cc:973 -#, c-format -msgid "can't do that (%s) in manual mode" -msgstr "не могу делать это (%s) в ручном режиме" +#: src/emc/usr_intf/gscreen/gscreen.glade:2760 +#, fuzzy +msgid "Homing\n" +msgstr "Поиск начала" -#: src/emc/task/emctaskmain.cc:1072 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter idle" -msgstr "не могу делать это (%s) в авто режиме с остановленным интерпретатором" +#: src/emc/usr_intf/gscreen/gscreen.glade:2781 +#, fuzzy +msgid "" +"Ignore\n" +"Limits" +msgstr "Все пределы" -#: src/emc/task/emctaskmain.cc:1132 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter reading" -msgstr "не могу делать это (%s) в авто режиме с читающим интерпретатором" +#: src/emc/usr_intf/gscreen/gscreen.glade:2810 +#, fuzzy +msgid "" +" Set\n" +"Override" +msgstr "Изменить подачу:" -#: src/emc/task/emctaskmain.cc:1216 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter paused" +#: src/emc/usr_intf/gscreen/gscreen.glade:2824 +msgid "Graphics\n" msgstr "" -"не могу делать это (%s) в авто режиме с приостановленным интерпретатором" -#: src/emc/task/emctaskmain.cc:1278 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter waiting" -msgstr "не могу делать это (%s) в авто режиме с ждущим интерпретатором" +#: src/emc/usr_intf/gscreen/gscreen.glade:2838 +#, fuzzy +msgid "" +"Menu\n" +"Level" +msgstr "debuglevel" -#: src/emc/task/emctaskmain.cc:1370 -#, c-format -msgid "can't do that (%s) in MDI mode" -msgstr "не могу делать это (%s) в MDI режиме" +#: src/emc/usr_intf/gscreen/gscreen.glade:2851 +msgid "" +" Launch\n" +"Keyboard" +msgstr "" -#: src/emc/task/emctaskmain.cc:2015 -msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" -msgstr "Не могу переключить режим из авто при не остановленном интерпретаторе" +#: src/emc/usr_intf/gscreen/gscreen.glade:2868 +#, fuzzy +msgid "Select Buttons" +msgstr "Опции программы" -#: src/emc/task/emctaskmain.cc:2084 -msgid "Can't issue MDI command when not homed" -msgstr "Не могу исполнить команду MDI если не найдены начала" +#: src/emc/usr_intf/gscreen/gscreen.glade:2955 +#, fuzzy +msgid "" +"Unhome \n" +" All" +msgstr "Забыть начало всех осей" -#: src/emc/task/emctaskmain.cc:2089 -msgid "Must be in MDI mode to issue MDI command" -msgstr "Должен быть в MDI режиме для исполнения команд MDI" +#: src/emc/usr_intf/gscreen/gscreen.glade:2967 +#, fuzzy +msgid "" +"Unhome\n" +" Axis" +msgstr "Забыть начало оси _%s" -#: src/emc/task/emctaskmain.cc:2151 -msgid "Can't run a program when not homed" -msgstr "Не могу исполнить программу если не найдены начала" +#: src/emc/usr_intf/gscreen/gscreen.glade:2979 +#: src/emc/usr_intf/gscreen/gscreen.glade:3084 +#, fuzzy +msgid "" +"Toggle\n" +"Readout" +msgstr "Включить охлаждение" -#: src/emc/rs274ngc/interp_arc.cc:108 src/emc/rs274ngc/rs274ngc_return.hh:160 -msgid "Zero radius arc" -msgstr "Арка с нулевым радиусом" +#: src/emc/usr_intf/gscreen/gscreen.glade:3004 +#, fuzzy +msgid "" +"Jogging\n" +" Mode" +msgstr "Движение" -#: src/emc/rs274ngc/interp_arc.cc:112 src/emc/rs274ngc/interp_arc.cc:279 -#, fuzzy, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:3016 +#, fuzzy msgid "" -"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " -"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " -"rel_err=%.4f%%" -msgstr "" -"Радиус конца окружности отличается от радиуся начала: start=(%c%.4f,%c%.4f) " -"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f" +"coordinate\n" +" System" +msgstr "Координатная система:" -#: src/emc/rs274ngc/interp_check.cc:90 -msgid "G4 not allowed with G2 or G3 because they both use P" +#: src/emc/usr_intf/gscreen/gscreen.glade:3060 +msgid "" +"Index\n" +" Tool" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:93 +#: src/emc/usr_intf/gscreen/gscreen.glade:3072 #, fuzzy -msgid "Line with G10 does not have L1, L10, L11, L2, or L20" -msgstr "Строка с g10 не имеет l2" +msgid "" +"Spindle\n" +"Controls" +msgstr "Control-M" -#: src/emc/rs274ngc/interp_check.cc:94 +#: src/emc/usr_intf/gscreen/gscreen.glade:3195 #, fuzzy -msgid "P value not an integer with G10" -msgstr "Значение P не целое для g10 l2" +msgid "Open" +msgstr "Oткрыть..." -#: src/emc/rs274ngc/interp_check.cc:95 +#: src/emc/usr_intf/gscreen/gscreen.glade:3205 #, fuzzy -msgid "P value out of range (0-9) with G10 L2 or L20" -msgstr "Значение P вне диапазона для g10 l2" +msgid "" +" Block\n" +"Delete" +msgstr "Удалить" -#: src/emc/rs274ngc/interp_check.cc:96 +#: src/emc/usr_intf/gscreen/gscreen.glade:3217 #, fuzzy -msgid "P value out of range with G10 L1 or G10 L10" -msgstr "Значение P вне диапазона для g10 l2" +msgid "" +"Optional\n" +" Stop" +msgstr "Останов по запросу" -#: src/emc/rs274ngc/interp_check.cc:100 -msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." -msgstr "Между G5.2 и G5.3 кодами, допустимы только дополнительные G5.2 коды." +#: src/emc/usr_intf/gscreen/gscreen.glade:3229 +msgid "" +" Full\n" +"View" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:258 +#: src/emc/usr_intf/gscreen/gscreen.glade:3265 #, fuzzy -msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" -msgstr "D слово без G41, G41.1, G42, G42.2 или G96 перед ним" +msgid "" +"Next\n" +" Tab" +msgstr "Следующее значение" -#: src/emc/rs274ngc/interp_check.cc:264 -msgid "E word with no G76, M66, M67 or M68 to use it" -msgstr "E слово вне G76, M66, M67 или M68" +#: src/emc/usr_intf/gscreen/gscreen.glade:3285 +#, fuzzy +msgid "" +" Feed\n" +"Override" +msgstr "Изменить подачу:" -#: src/emc/rs274ngc/interp_check.cc:269 -msgid "H word with no G43 or G76 to use it" -msgstr "H слово вне G43 или G76" +#: src/emc/usr_intf/gscreen/gscreen.glade:3298 +#, fuzzy +msgid "" +"Spindle\n" +"Override" +msgstr "Скорость шпинделя:" -#: src/emc/rs274ngc/interp_check.cc:275 +#: src/emc/usr_intf/gscreen/gscreen.glade:3311 #, fuzzy -msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" -msgstr "J слово без G2, G3, G5, G5.1, G10, G76, G87 или G43.1 перед ним" +msgid "" +" Rapid\n" +"Override" +msgstr "Скорость шпинделя:" -#: src/emc/rs274ngc/interp_check.cc:281 -msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" -msgstr "J слово без G2, G3, G5, G5.1, G10, G76, G87 или G43.1 перед ним" +#: src/emc/usr_intf/gscreen/gscreen.glade:3332 +#, fuzzy +msgid "" +" Jog\n" +"Speed" +msgstr "Скорость перемещений" -#: src/emc/rs274ngc/interp_check.cc:287 +#: src/emc/usr_intf/gscreen/gscreen.glade:3345 #, fuzzy -msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" -msgstr "K слово без G2, G3, G33, G33.1, G76, G87 или G43.1 перед ним" +msgid "" +" Jog\n" +"Increments" +msgstr "Увеличить" -#: src/emc/rs274ngc/interp_check.cc:297 +#: src/emc/usr_intf/gscreen/gscreen.glade:3361 msgid "" -"L word with no G10, cutter compensation, canned cycle, digital/analog input, " -"or NURBS code" +"Adjust\n" +"Rotary" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:309 +#: src/emc/usr_intf/gscreen/gscreen.glade:3383 msgid "" -"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " -"M53 M62 M63 M64 M65 M66 or user M code to use it" +"Change\n" +" View" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:314 +#: src/emc/usr_intf/gscreen/gscreen.glade:3431 #, fuzzy -msgid "P value not an integer with M19 G2 or G3" -msgstr "Значение P не целое для g10 l2" +msgid "" +" Pan\n" +"Vertical" +msgstr "Вертикальный" -#: src/emc/rs274ngc/interp_check.cc:316 +#: src/emc/usr_intf/gscreen/gscreen.glade:3444 #, fuzzy -msgid "P value must be 0,1,or 2 with M19" -msgstr "Значение P вне диапазона для g10 l2" +msgid "" +" Pan\n" +"Horizontal" +msgstr "Горизонтальный" -#: src/emc/rs274ngc/interp_check.cc:318 +#: src/emc/usr_intf/gscreen/gscreen.glade:3457 #, fuzzy -msgid "P value should be 1 or greater with G2 or G3" -msgstr "Значение P вне диапазона для g10 l2" +msgid "" +" Rotate\n" +"Horiontal" +msgstr "Горизонтальный" -#: src/emc/rs274ngc/interp_check.cc:326 +#: src/emc/usr_intf/gscreen/gscreen.glade:3470 #, fuzzy msgid "" -"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " -"code that uses it" -msgstr "K слово без G2, G3, G33, G33.1, G76, G87 или G43.1 перед ним" +" Rotate\n" +"Vertical" +msgstr "Вертикальный" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3491 +msgid "" +"Search\n" +" Bwd" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3503 +msgid "" +"Search\n" +" Fwd" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:336 +#: src/emc/usr_intf/gscreen/gscreen.glade:3561 #, fuzzy -msgid "R value must be within 0..360 with M19" -msgstr "Значение P вне диапазона для g10 l2" +msgid "" +" Reload\n" +"Program" +msgstr "Перезагрузить программу" -#: src/emc/rs274ngc/interp_convert.cc:138 -msgid "You must specify both X and Y coordinates for Control Points" +#: src/emc/usr_intf/gscreen/gscreen.glade:3604 +msgid "" +" Clear\n" +"status" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:141 -msgid "Can specify P without X and Y only for the first control point" +#: src/emc/usr_intf/gscreen/gscreen.glade:3634 +msgid "G54" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:144 -msgid "Must specify positive weight P for every Control Point" +#: src/emc/usr_intf/gscreen/gscreen.glade:3650 +msgid "calc" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3725 +msgid "test" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3728 +msgid "test2" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3778 +msgid "Data Entry" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3805 +#, fuzzy +msgid "Calculator Entry" +msgstr "Охлаждение" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3894 +#, fuzzy +msgid "Program Restart" +msgstr "Показать перезапуск" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3909 +msgid "" +"Highlighting the run-at-line with the\n" +"up / down buttons or entering the line\n" +"directly." +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3923 +msgid "" +"Line\n" +" Up" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3946 +msgid "" +" Line\n" +"Down" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:4028 +msgid "S 1000" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:4098 +msgid " FWD" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:4133 +msgid " REV" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen2.glade:35 +msgid "screen 2" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:403 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:884 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:923 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:934 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:949 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1099 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1102 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1156 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1163 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1166 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2148 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2157 +msgid "**** GMOCCAPY INFO ****" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:404 +msgid "**** no valid probe config in INI File ****" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:405 +msgid "**** disabled tool measurement ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:147 -#, fuzzy -msgid "Cannot make a NURBS with 0 feedrate" -msgstr "Не могу делать арку с нулевой подачей" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:770 +msgid "**** GMOCCAPY ERROR : ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:182 -#, fuzzy -msgid "Cannot use G5.3 without G5.2 first" -msgstr "Не могу использовать G53 с компенсацией радиуса" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:772 +#, python-format +msgid "" +"**** gmoccapy can only handle 4 axis, ****\n" +"**** but you have given %d through your INI file ****\n" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:183 -#, c-format +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:774 msgid "" -"You must specify a number of control points at least equal to the order L = " -"%d" -msgstr "Вы должны задать по крайней мере %d контрольных точек" +"**** gmoccapy will not start ****\n" +"\n" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:212 -msgid "Cannot convert spline with cutter radius compensation" -msgstr "Не могу конвертировать сплайн с компенсацией радиуса инструмента" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:786 +#, fuzzy, python-format +msgid "Home axis %s" +msgstr "Ось _%s в начало" -#: src/emc/rs274ngc/interp_convert.cc:222 -msgid "Splines must be in the XY plane" -msgstr "Сплайны должны быть в плоскости XY" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:885 +msgid "**** To many increments given in INI File for this screen ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:227 -msgid "Splines may not have motion in Z, A, B, or C" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:886 +msgid "**** Only the first 10 will be reachable through this screen ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:231 -msgid "Must specify both I and J with G5.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:924 +msgid "**** gmoccapy screen 2 found ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:250 -msgid "Must specify both I and J, or neither" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:929 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1055 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1177 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1225 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1844 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2190 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2200 +msgid "**** GMOCCAPY ERROR ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:261 -msgid "Must specify both P and Q with G5" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:930 +msgid "**** screen 2 GLADE ERROR: ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:362 -msgid "" -"The move just after exiting cutter compensation mode must be straight, not " -"an arc" -msgstr "Движение после отмены компенсации инструмента должно быть линейным" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:935 +msgid "**** No gmoccapy2.glade file present ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:370 -msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:950 +msgid "**** Invalid embeded tab configuration ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:382 -#: src/emc/rs274ngc/interp_convert.cc:4266 -msgid "Cannot feed with zero spindle speed in feed per rev mode" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:951 +msgid "**** No tabs will be added! ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:393 -#: src/emc/rs274ngc/interp_convert.cc:399 -#: src/emc/rs274ngc/interp_convert.cc:408 -#: src/emc/rs274ngc/interp_convert.cc:414 -#: src/emc/rs274ngc/interp_convert.cc:423 -#: src/emc/rs274ngc/interp_convert.cc:429 -#, fuzzy, c-format -msgid "%c word missing in absolute center arc" -msgstr "F слово не задано в движении с инверсным временем" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:964 +msgid "ERROR, trying to initialize the user tabs or panaels, check for typos" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:649 -msgid "" -"Radius of cutter compensation entry arc is not greater than the tool radius" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1056 +msgid "**** Did not find a toolfile file in [EMCIO] TOOL_TABLE ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:868 -#: src/emc/rs274ngc/interp_convert.cc:878 src/emc/rs274ngc/interp_queue.cc:592 -msgid "" -"Arc move in concave corner cannot be reached by the tool without gouging" -msgstr "Арка в вогнутом угле не может быть достигнута инструментом без зареза" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1100 +msgid "**** audio available! ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:904 -msgid "Arc to arc motion is invalid because the arcs have the same center" -msgstr "Переход из арки в арку неверен, так как арки имеют общий центр" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1103 +msgid "**** no audio available! ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:907 -msgid "" -"Arc to arc motion makes a corner the compensated tool can't fit in without " -"gouging" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1104 +msgid "**** PYGST libray not installed? ****" msgstr "" -"Переход от арки к арке делает угол в который скомпенсированный инструмент не " -"может проникнуть без зареза" -#: src/emc/rs274ngc/interp_convert.cc:1036 -#: src/emc/rs274ngc/interp_convert.cc:1037 -#: src/emc/rs274ngc/interp_convert.cc:1038 -#: src/emc/rs274ngc/interp_convert.cc:3733 -#: src/emc/rs274ngc/interp_convert.cc:3736 -#: src/emc/rs274ngc/interp_convert.cc:3739 src/emc/rs274ngc/interp_find.cc:97 -#, c-format -msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1157 +msgid "**** virtual keyboard program found : " msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1494 -msgid "Cannot change control mode with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1164 +msgid "**** virtual keyboard program found : " msgstr "" -"Не могу сменить режим управления с включенной компенсацией радиуса " -"инструмента" -#: src/emc/rs274ngc/interp_convert.cc:1607 -msgid "Cannot change coordinate systems with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1167 +msgid "" +"**** No virtual keyboard installed, we checked for and ." msgstr "" -"Не могу изменить координатную систему с включенной компенсацией радиуса " -"инструмента" -#: src/emc/rs274ngc/interp_convert.cc:1851 -#, c-format -msgid "G%d.1 with no D word" -msgstr "G%d.1 без D слова" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1178 +msgid "**** Error with launching virtual keyboard," +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1854 -#, c-format -msgid "G%d.1 with L word, but plane is not G18" -msgstr "G%d.1 с L словом, но плоскость не G18" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1179 +msgid "**** is onboard or matchbox-keyboard installed? ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1865 -#, c-format -msgid "G%d requires D word to be a whole number" -msgstr "G%d требует D слово как целое число" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1193 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1875 +msgid "interrupt running macro" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1872 -#, c-format -msgid "G%d with lathe tool, but plane is not G18" -msgstr "G%d с токарным инструментом, но плоскость не G18" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1226 +msgid "**** Did not find a parameter file in [RS274NGC] PARAMETER_FILE ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2271 -#, fuzzy -msgid "Cannot set reference point with cutter compensation in effect" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1294 +msgid "Select the file you want to be loaded at program start" msgstr "" -"Не могу установить выход движения при включенной компенсации радиуса " -"инструмента" -#: src/emc/rs274ngc/interp_convert.cc:2786 -#, c-format -msgid "" -"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1329 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1353 +#, python-format +msgid "**** GMOCCAPY ERROR **** /n Message type %s not suported" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2787 -#, c-format -msgid "BUG: restore from level %d !?" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1462 +msgid "Unknown error type and no error text given" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2788 -#, c-format -msgid "BUG: restore to level %d !?" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1478 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1840 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1847 +msgid "Important Warning" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2807 -#, c-format -msgid "M7x: restore_settings G20/G21 failed: '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1498 +msgid "ERROR : External ESTOP is set, could not change state!" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2819 -#, c-format -msgid "M7x: restore_settings failed executing: '%s': %s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1511 +msgid "ERROR : Could not switch the machine on, is limit switch aktivated?" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2885 -msgid "Cannot set motion output with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1730 +msgid "It is not possible to change to MDI Mode at the moment" msgstr "" -"Не могу установить выход движения при включенной компенсации радиуса " -"инструмента" -#: src/emc/rs274ngc/interp_convert.cc:2886 -msgid "No valid P word with M62" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1754 +msgid "It is not possible to change to Auto Mode at the moment" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2890 -msgid "Cannot set motion digital output with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1838 +msgid "" +"\n" +"**** No subroutine folder or program prefix is given in the ini file **** \n" msgstr "" -"Не могу установить выход движения при включенной компенсации радиуса " -"инструмента" -#: src/emc/rs274ngc/interp_convert.cc:2891 -msgid "No valid P word with M63" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1839 +msgid "**** so the corresponding file could not be found ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2895 -#: src/emc/rs274ngc/interp_convert.cc:2900 -msgid "Cannot set auxiliary digital output with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1845 +#, python-format +msgid "" +"\n" +"**** File %s of the macro could not be found ****\n" msgstr "" -"Не могу установить дополнительный выход при включенной компенсации радиуса " -"инструмента" -#: src/emc/rs274ngc/interp_convert.cc:2896 -msgid "No valid P word with M64" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1846 +#, python-format +msgid "**** we searched in subdirectory %s ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2901 -msgid "No valid P word with M65" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1851 +msgid "Enter value:" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2931 -msgid "invalid P-word with M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1852 +#, fuzzy, python-format +msgid "Set parameter %s to:" +msgstr "Параметры" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1854 +msgid "conversion error" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2946 -msgid "Cannot wait for digital input with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1855 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3610 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3634 +msgid "Conversion error !" msgstr "" -"Не могу ждать цифровой вход при включенной компенсации радиуса инструмента" -#: src/emc/rs274ngc/interp_convert.cc:2958 -msgid "Cannot wait for analog input with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1856 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3299 +msgid "" +"Please enter only numerical values\n" +"Values have not been applied" msgstr "" -"Не могу ждать аналоговый вход при включенной компенсации радиуса инструмента" -#: src/emc/rs274ngc/interp_convert.cc:2973 -msgid "Cannot set motion analog output with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2149 +#, python-brace-format +msgid "**** replaced {0} to {1} ****" msgstr "" -"Не могу установить аналоговый выход при включенной компенсации радиуса " -"инструмента" -#: src/emc/rs274ngc/interp_convert.cc:2974 -msgid "Invalid analog index with M67" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2158 +msgid "" +"\n" +"**** found more than 9 macros, only the first 9 will be used ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2980 -msgid "Cannot set auxiliary analog output with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2191 +#, python-format +msgid "**** %s ****" msgstr "" -"Не могу установить дополнительный аналоговый выход при включенной " -"компенсации радиуса инструмента" -#: src/emc/rs274ngc/interp_convert.cc:2981 -msgid "Invalid analog index with M68" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2201 +#, python-format +msgid "**** No widget named: %s to sensitize ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3012 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2366 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1561 #, fuzzy -msgid "Need non-negative Q-word to specify tool number with M61" -msgstr "Нужно положительное Q-слово для обозначения номера инструмента с M61" +msgid "No tool description available" +msgstr "Детали не доступны." -#: src/emc/rs274ngc/interp_convert.cc:3087 -msgid "Q word with M19 requires a value > 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2591 +#, python-format +msgid "Halo, welcome to the test message %d" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3115 -msgid "Cannot restore context from invalid stack frame - missing M70/M73?" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2732 +msgid "Hal Pin is low, Access denied" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3156 -#: src/emc/rs274ngc/interp_convert.cc:3173 -#: src/emc/rs274ngc/interp_convert.cc:3188 -#: src/emc/rs274ngc/interp_convert.cc:3202 -#: src/emc/rs274ngc/interp_convert.cc:3216 -msgid "Cannot enable overrides with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2734 +msgid "wrong code entered, Access denied" msgstr "" -"Не могу установить переопределения при включенной компенсации радиуса " -"инструмента" -#: src/emc/rs274ngc/interp_convert.cc:3163 -#: src/emc/rs274ngc/interp_convert.cc:3178 -#: src/emc/rs274ngc/interp_convert.cc:3193 -#: src/emc/rs274ngc/interp_convert.cc:3207 -#: src/emc/rs274ngc/interp_convert.cc:3221 -msgid "Cannot disable overrides with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2735 +msgid "Just to warn you" msgstr "" -"Не могу сбросить переопределения при включенной компенсации радиуса " -"инструмента" -#: src/emc/rs274ngc/interp_convert.cc:3325 -#: src/emc/rs274ngc/interp_convert.cc:3326 -#: src/emc/rs274ngc/interp_convert.cc:3327 -#, c-format -msgid "Indexing axis %c can only be moved with G0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2810 +msgid "ERROR : No limit switch is active, ignore limits will not be set." msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3334 -#: src/emc/rs274ngc/interp_convert.cc:3336 -#: src/emc/rs274ngc/interp_convert.cc:3338 -#, c-format -msgid "Indexing axis %c can only be moved alone" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2850 +#, fuzzy +msgid "Classicladder real-time component not detected" +msgstr "Компонента реального времени не загружена" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2937 +msgid "Something went wrong, we have an unknown spindle widget" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3433 -#, fuzzy -msgid "Cannot probe with feed per rev mode" -msgstr "Не могу мерить с нулевой подачей" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3046 +msgid "Do you really want to delete the MDI history?\n" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3481 -msgid "Cannot change retract mode with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3047 +msgid "this will not delete the MDI History file, but will\n" msgstr "" -"Не могу изменить режим возврата при включенной компенсации радиуса " -"инструмента" -#: src/emc/rs274ngc/interp_convert.cc:3515 -msgid "G10 L1 without offsets has no effect" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3048 +msgid "delete the listbox entries for this session" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3621 -msgid "Q number in G10 is not an integer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3049 +msgid "Attention!!" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3622 -msgid "Invalid tool orientation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3076 +msgid "This button will show or hide the keyboard" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3721 -msgid "I J words not allowed with G10 L2" -msgstr "I J не разрешены вместе с G10 L2" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3196 +#, python-format +msgid "Offset %s could not be set, because off unknown axis" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3742 -#, fuzzy -msgid "" -"Cannot change the active coordinate system with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3197 +msgid "Wrong offset setting!" msgstr "" -"Не могу изменить координатную систему с включенной компенсацией радиуса " -"инструмента" -#: src/emc/rs274ngc/interp_convert.cc:3750 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3202 #, fuzzy -msgid "R not allowed in G10 L20" -msgstr "I J не разрешены вместе с G10 L2" +msgid "Enter value for diameter" +msgstr "Не целое число для целого аргумента" -#: src/emc/rs274ngc/interp_convert.cc:4323 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3203 #, fuzzy -msgid "Spindle not turning in G33" -msgstr "Шпиндель не крутится при g86" +msgid "Set diameter to:" +msgstr "диаметр" -#: src/emc/rs274ngc/interp_convert.cc:4333 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3206 #, fuzzy -msgid "Spindle not turning in G33.1" -msgstr "Шпиндель не крутится при g86" +msgid "Enter value for radius" +msgstr "Не целое число для целого аргумента" -#: src/emc/rs274ngc/interp_convert.cc:4376 -msgid "BUG: An axis incorrectly moved along with an indexer" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3207 +#, fuzzy +msgid "Set radius to:" +msgstr "радиус" -#: src/emc/rs274ngc/interp_convert.cc:4389 -msgid "BUG: trying to index incorrect axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3210 +#, fuzzy, python-format +msgid "Enter value for axis %s" +msgstr "Не целое число для целого аргумента" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3211 +#, fuzzy, python-format +msgid "Set axis %s to:" +msgstr "Установить значение оси:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3215 +msgid "Conversion error in btn_set_value" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4481 -msgid "Cannot use G76 threading cycle with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3216 +msgid "Conversion error in btn_set_value!" msgstr "" -"Не могу использовать цикл резьбы G76 при включенной компенсации радиуса " -"инструмента" -#: src/emc/rs274ngc/interp_convert.cc:4484 -msgid "In G76, I must not be 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3217 +msgid "Please enter only numerical values. Values have not been applied" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4486 -msgid "In G76, J must be greater than 0" -msgstr "В G76, J дожно быть больше 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3232 +msgid "" +"you did not selected a system to be changed to, so nothing will be changed" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4488 -msgid "In G76, K must be greater than J" -msgstr "В G76, K дожно быть больше J" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3640 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3654 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3658 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3673 +msgid "Important Warning!" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4631 -msgid "" -"Length of cutter compensation entry move is not greater than the tool radius" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3284 +msgid "Enter the block height" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4850 -msgid "Zero degree inside corner is invalid for cutter compensation" -msgstr "Нулевой внутренний угол неверен для компенсации радиуса инструмента" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3285 +msgid "Block height measured from base table" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4888 -#: src/emc/rs274ngc/interp_convert.cc:4896 -msgid "" -"Arc to straight motion makes a corner the compensated tool can't fit in " -"without gouging" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3297 +msgid "Conversion error in btn_block_height" msgstr "" -"Переход от арки к линейному ходу делает угол, который не может быть исполнен " -"без зареза при включенной компенсации радиуса инструмента" -#: src/emc/rs274ngc/interp_convert.cc:4980 -msgid "Cannot change tools with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3298 +msgid "Conversion error in btn_block_height!" msgstr "" -"Не могу менять инструмент при включенной компенсации радиуса инструмента" -#: src/emc/rs274ngc/interp_convert.cc:5101 -msgid "Cannot change tool offset with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3536 +msgid "Please remove the mounted tool and press OK when done" msgstr "" -"Не могу изменять отступ инструмента при включенной компенсации радиуса " -"инструмента" -#: src/emc/rs274ngc/interp_queue.cc:590 -#, c-format +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3539 +#, python-brace-format msgid "" -"BUG: cutter compensation has generated an invalid arc with mismatched radii " -"r1 %f r2 %f\n" +"Please change to tool\n" +"\n" +"# {0:d} {1}\n" +"\n" +" then click OK." msgstr "" -"Ошибка: компенсация радиуса создала неверную арку с несовпадающими радиусами " -"r1 %f r2 %f\n" -#: src/emc/rs274ngc/interp_queue.cc:612 -msgid "BUG: Unsupported plane in cutter compensation" -msgstr "Ошибка: неподдерживаемая плоскость для компенсации инструмента" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3549 +msgid "Tool Change has been aborted!\n" +msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:622 -msgid "" -"Straight traverse in concave corner cannot be reached by the tool without " -"gouging" -msgstr "Прямой переход в вогнутый угол не может быть достигнут без зареза" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3550 +msgid "The old tool will remain set!" +msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:650 -#, c-format -msgid "BUG: Unsupported plane [%d] in cutter compensation" -msgstr "Ошибка: неподдерживаемая [%d] плоскость для компенсации инструмента" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3570 +msgid "No or more than one tool selected in tool table" +msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:661 -msgid "" -"Straight feed in concave corner cannot be reached by the tool without gouging" -msgstr "Прямой переход в вогнутый угол не может быть достигнут без зареза" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3571 +msgid "Please select only one tool in the table" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:628 -#, fuzzy -msgid "Cannot feed with zero feed rate" -msgstr "Не могу делать G1 с нулевой подачей" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3573 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3580 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3589 +msgid "Warning Tool Touch off not possible!" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:629 -#, fuzzy -msgid "Cannot use inverse time feed with canned cycles" -msgstr "Не могу делать замер с подачей инверсного времени" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3577 +msgid "you can not touch of a tool, witch is not mounted in the spindle" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:630 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3578 +msgid "your selection has been reseted to the tool in spindle" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3586 #, fuzzy -msgid "Cannot use canned cycles with cutter compensation on" -msgstr "Нельзя менять плоскости при включенной компенсации радиуса" +msgid "" +"Tool touch off is not possible with cutter radius compensation switched on!\n" +msgstr "" +"Не могу изменять отступ инструмента при включенной компенсации радиуса " +"инструмента" -#: src/emc/rs274ngc/interp_cycles.cc:818 -msgid "G17 canned cycle is not possible on a machine without Z axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3587 +msgid "Please emit an G40 before tool touch off" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1004 -msgid "G17.1 canned cycle is not possible on a machine without W axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3597 +msgid "Real big error!" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1220 -msgid "G19 canned cycle is not possible on a machine without X axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3598 +msgid "" +"You managed to come to a place that is not possible in on_btn_tool_touchoff" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1388 -msgid "G19.1 canned cycle is not possible on a machine without U axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3602 +#, fuzzy, python-format +msgid "Enter value for axis %s to set:" +msgstr "Не целое число для целого аргумента" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3603 +#, python-brace-format +msgid "Set parameter of tool {0:d} and axis {1} to:" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1613 -msgid "G18 canned cycle is not possible on a machine without Y axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3608 +#, python-format +msgid "Conversion error because of wrong entry for touch off axis %s" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1780 -msgid "G18.1 canned cycle is not possible on a machine without V axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3628 +msgid "Enter the tool number as integer " msgstr "" -#: src/emc/rs274ngc/interp_find.cc:170 -msgid "Cannot use polar coordinates with G53" -msgstr "Нельзя использовать полярные координаты с G53" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3629 +#, fuzzy +msgid "Select the tool to change" +msgstr "Выберите узел для показа" -#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 -#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 -#: src/emc/rs274ngc/interp_find.cc:347 -msgid "Cannot specify X or Y words with polar coordinate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3631 +msgid "Conversion error because of wrong entry for tool number\n" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:272 -msgid "Must specify angle in polar coordinate if at the origin" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3632 +msgid "enter only integer nummbers" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:338 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3657 +msgid "Selected tool is already in spindle, no change needed." +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3653 msgid "" -"Incremental motion with polar coordinates is indeterminate when at the origin" +"you selected no or more than one tool, the tool selection must be unique" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:348 -msgid "G91 motion with polar coordinates is indeterminate when at the origin" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3672 +msgid "Could not understand the entered tool number. Will not change anything" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:720 -#, c-format -msgid "Requested tool %d not found in the tool table" +#: src/emc/usr_intf/gmoccapy/dialogs.py:33 +#: src/emc/usr_intf/gmoccapy/dialogs.py:38 +msgid "Enter System Unlock Code" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:154 -msgid "Cannot use polar coordinate on a machine lacking X or Y axes" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter value" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:155 -msgid "Cannot use polar coordinate except in G17 plane" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter the value to set" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:156 -msgid "Cannot specify both polar coordinate and X word" +#: src/emc/usr_intf/gmoccapy/notification.py:205 +#, python-format +msgid "Error trying to delet the message with number %s" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:157 -msgid "Cannot specify both polar coordinate and Y word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:409 +msgid "left rotate, middle move, right zoom" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:178 -#: src/emc/rs274ngc/interp_internal.cc:190 -#: src/emc/rs274ngc/interp_internal.cc:203 -msgid "Polar coordinates can only be used for motion" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:413 +msgid "left zoom, middle move, right rotate" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1143 src/emc/rs274ngc/interp_read.cc:1147 -#, c-format -msgid "Bad character '\\%03o' used" -msgstr "Встречен плохой символ '\\%03o'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:417 +msgid "left move, middle rotate, right zoom" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1147 -#, c-format -msgid "Bad character '%c' used" -msgstr "Встречен плохой символ '\\%c'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:421 +msgid "left zoom, middle rotate, right move" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1671 -#, fuzzy -msgid "Left bracket missing after 'while'" -msgstr "Левая скобка отсутствует после слэша в atan" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:425 +msgid "left move, middle zoom, right rotate" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1686 -#, fuzzy -msgid "Left bracket missing after 'repeat'" -msgstr "Левая скобка отсутствует после имени унарной операции" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:429 +msgid "left rotate, middle zoom, right move" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1701 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:526 #, fuzzy -msgid "Left bracket missing after 'if'" -msgstr "Левая скобка отсутствует после слэша в atan" +msgid "clear plot" +msgstr "Очистить плоттер" -#: src/emc/rs274ngc/interp_read.cc:1716 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:585 #, fuzzy -msgid "Left bracket missing after 'elseif'" -msgstr "Левая скобка отсутствует после слэша в atan" +msgid "view perspective" +msgstr "Вид в перспективе" -#: src/emc/rs274ngc/interp_read.cc:1919 -#, fuzzy -msgid "Cannot read current position with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:608 +msgid "view along the X axis from positive to negative" msgstr "" -"Не могу установить выход движения при включенной компенсации радиуса " -"инструмента" - -#: src/emc/rs274ngc/interp_read.cc:1934 -#, fuzzy -msgid "Expected # reading parameter" -msgstr "Раскрыть параметры" -#: src/emc/rs274ngc/interp_read.cc:1936 -msgid "Expected ] reading bracketed parameter" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:633 +msgid "view along the Y axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2608 -#, c-format -msgid "bad number format (conversion failed) parsing '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:658 +msgid "view along the Z axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2609 -#, c-format -msgid "bad number format (trailing characters) parsing '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:685 +msgid "Show or hide tool path" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2699 -msgid "Calculation resulted in 'not a number'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:708 +msgid "Show or hide dimensions" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2701 -msgid "Calculation resulted in 'infinity'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:731 +msgid "" +"view along the Y axis from positive to negative as viewn for a back tool " +"lathe" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2994 -#, c-format -msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:791 +#, fuzzy +msgid "Offset Page" +msgstr "Значение отступа" -#: src/emc/rs274ngc/interp_read.cc:3106 -msgid "Multiple U words on one line" -msgstr "Много U на одной строке" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:809 +#, fuzzy +msgid "Tooledit" +msgstr "Инструменты" -#: src/emc/rs274ngc/interp_read.cc:3122 -msgid "Multiple V words on one line" -msgstr "Много V на одной строке" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:831 +#, fuzzy +msgid "File Selection" +msgstr "A Направление" -#: src/emc/rs274ngc/interp_read.cc:3138 -msgid "Multiple W words on one line" -msgstr "Много W на одной строке" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:869 +#, fuzzy +msgid "Toggle between metric and imperial units" +msgstr "Переключить между смещением и вращением" -#: src/emc/rs274ngc/interp_o_word.cc:95 -#, c-format -msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:887 +msgid "Switch DRO to DTG mode" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:161 -#, c-format -msgid "Named parameter #<%s> not defined" -msgstr "Поименованный параметр #<%s> не определен" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:905 +#, fuzzy +msgid "Toggle between machine and relative coordinates" +msgstr "Переключить между смещением и вращением" -#: src/emc/rs274ngc/interp_namedparams.cc:191 -#, fuzzy, c-format -msgid "cant open ini file '%s'" -msgstr "не могу открыть %s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:928 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:946 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:963 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:980 +msgid "Klick to toggle through the DRO modes" +msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:208 -#, fuzzy, c-format -msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" -msgstr "Поименованный параметр #<%s> не определен" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1253 +#, fuzzy +msgid "Ignore limits" +msgstr "Игнорировать пределы" -#: src/emc/rs274ngc/interp_namedparams.cc:232 -#, c-format -msgid "fetch_hal_param: hal_init(%s): %d" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1321 +#, fuzzy +msgid "Jogging" +msgstr "Поиск начала" -#: src/emc/rs274ngc/interp_namedparams.cc:233 -#, c-format -msgid "fetch_hal_param: hal_ready(): %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1430 +msgid "Information over the tool in spindle" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:370 -#, c-format -msgid "Internal error: Could not assign #<%s>" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1448 +#, fuzzy +msgid "Tool no." +msgstr "Инфо инструмента" -#: src/emc/rs274ngc/interp_namedparams.cc:378 -#, c-format -msgid "Cannot assign to read-only parameter #<%s>" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1474 +#, fuzzy +msgid "Diameter" +msgstr "Диаметр:" -#: src/emc/rs274ngc/interp_namedparams.cc:682 -#, c-format -msgid "BUG: lookup_named_param(%s): unhandled index=%fn" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1503 +#, fuzzy +msgid "offset z" +msgstr "Отступы" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1532 +#, fuzzy +msgid "offset x" +msgstr "Отступы" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1580 +#, fuzzy +msgid "Tool information" +msgstr "Установки *" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1592 +msgid "G and M code information as well as speed and feed" msgstr "" -#: src/emc/rs274ngc/rs274ngc_pre.cc:1269 src/emc/rs274ngc/rs274ngc_pre.cc:1344 -msgid "Queue is not empty after tool change" -msgstr "Очередь не пуста после смены инструмента" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1611 +#, fuzzy +msgid "active_mcodes_label" +msgstr "Активные коды:" -#: src/emc/rs274ngc/rs274ngc_pre.cc:1648 -#, fuzzy, c-format -msgid "Unable to open parameter file: '%s'" -msgstr "Не могу открыть файл" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1663 +#, fuzzy +msgid "active_gcodes_label" +msgstr "Активные коды:" -#: src/emc/rs274ngc/rs274ngc_return.hh:4 -msgid "A file is already open" -msgstr "Файл уже открыт" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1717 +#, fuzzy +msgid "G-Code" +msgstr "Питание" -#: src/emc/rs274ngc/rs274ngc_return.hh:5 -msgid "All axes missing with g92" -msgstr "Все оси пролетают с g92" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1730 +msgid "The name and location of the loaded program" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:6 -msgid "All axes missing with motion code" -msgstr "Все оси пролетают с кодом движения" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1742 +#, fuzzy +msgid "No Program loaded" +msgstr "Файл программы" -#: src/emc/rs274ngc/rs274ngc_return.hh:7 -msgid "Arc radius too small to reach end point" -msgstr "радиус арки слишком мал для завершения" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1750 +#, fuzzy +msgid "Program" +msgstr "Опции программы" -#: src/emc/rs274ngc/rs274ngc_return.hh:8 -msgid "Argument to acos out of range" -msgstr "Аргумент вне диапазона для acos" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1800 +msgid "Vel." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:9 -msgid "Argument to asin out of range" -msgstr "Аргумент вне диапазона для asin" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1814 +msgid "Displays the current velocity" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:10 -msgid "Attempt to divide by zero" -msgstr "Попытка деления на ноль" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1838 +msgid "adjust max vel of machine" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:11 -msgid "Attempt to raise negative to non integer power" -msgstr "Попытка возвести отрицательное число в нецелую степень" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1854 +#, fuzzy +msgid "Max. Velocity" +msgstr "Изменить максимальную подачу:" -#: src/emc/rs274ngc/rs274ngc_return.hh:12 -msgid "Bad format unsigned integer" -msgstr "Плохой формат для натурального целого" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1885 +msgid "Displayes the programmed feed rate" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:13 -msgid "Bad number format" -msgstr "Плохой формат числа" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1904 +#, fuzzy +msgid "reset feed override to 100 %" +msgstr "Установить скорость подачи от 0% до 100%" -#: src/emc/rs274ngc/rs274ngc_return.hh:14 -msgid "Bug bad g code modal group 0" -msgstr "Ошибка: плохой G-код в модальной группе 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1922 +#, fuzzy +msgid "adjust feed override" +msgstr "Изменить подачу:" -#: src/emc/rs274ngc/rs274ngc_return.hh:15 -msgid "Bug code not g0 or g1" -msgstr "Ошибка: код не G0 или G1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1941 +#, fuzzy +msgid "Feed Override [%]" +msgstr "Изменить подачу:" -#: src/emc/rs274ngc/rs274ngc_return.hh:16 -msgid "Bug code not g17 g18 or g19" -msgstr "Ошибка: код не G17, G18 или G19" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2034 +#, fuzzy +msgid "Cooling" +msgstr "Охлаждение" -#: src/emc/rs274ngc/rs274ngc_return.hh:17 -msgid "Bug code not g20 or g21" -msgstr "Ошибка: код не G20 или G21" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2285 +#, fuzzy +msgid "Spindle [rpm]" +msgstr "Шпиндель" -#: src/emc/rs274ngc/rs274ngc_return.hh:18 -msgid "Bug code not g28 or g30" -msgstr "Ошибка: код не G28 или G30" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2377 +msgid "" +"Search\n" +" back" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:19 -msgid "Bug code not g2 or g3" -msgstr "Ошибка: код не G2 или G3" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2394 +msgid "" +"Search\n" +" fwd" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:20 -msgid "Bug code not g4 g10 g28 g30 g53 or g92 series" -msgstr "Ошибка: код не G4, G10, G28, G30, G53 или G92 последовательность" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2446 +#, fuzzy +msgid "" +"Replace\n" +" Text:" +msgstr "Заменить на:" -#: src/emc/rs274ngc/rs274ngc_return.hh:21 -msgid "Bug code not g61 g61.1 or g64" -msgstr "Ошибка: код не G61, G61.1 или G64" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2456 +#, fuzzy +msgid "" +"Replace\n" +" All" +msgstr "Заменить все" -#: src/emc/rs274ngc/rs274ngc_return.hh:22 -msgid "Bug code not g90 or g91" -msgstr "Ошибка: код не G90 или G91" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2470 +msgid "" +"Ignore\n" +" Case" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:23 -msgid "Bug code not g98 or g99" -msgstr "Ошибка: код не G98 или G99" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2616 +msgid "Start as fullscreen" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:24 -msgid "Bug code not in g92 series" -msgstr "Ошибка: код не G92 последовательность" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2631 +msgid "Start maximized" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:25 -msgid "Bug code not in range g54 to g593" -msgstr "Ошибка: код не в диапазоне от G54 до G59.3" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2646 +msgid "Start as window" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:26 -msgid "Bug code not m0 m1 m2 m30 m60" -msgstr "Ошибка: код не M0, M1, M2, M30 или M60" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2670 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4426 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4943 +#, fuzzy +msgid "X Pos." +msgstr "Поз" -#: src/emc/rs274ngc/rs274ngc_return.hh:27 -msgid "Bug distance mode not g90 or g91" -msgstr "Ошибка: расстояние не G90 или G91" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2683 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4437 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4928 +#, fuzzy +msgid "Y Pos." +msgstr "Поз" -#: src/emc/rs274ngc/rs274ngc_return.hh:28 -msgid "Bug function should not have been called" -msgstr "Функция не должна вызываться" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2698 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4855 +msgid "Width" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:29 -msgid "Bug in tool radius comp" -msgstr "Ошибка с компенсацией радиуса" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2713 +msgid "Height" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:30 -msgid "Bug plane not xy yz or xz" -msgstr "Ошибка: код не xy, yz или xz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2811 +msgid "hide cursor" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:31 -msgid "Bug side not right or left" -msgstr "Ошибка: сторона не левая или правая" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2830 +#, fuzzy +msgid "Main Window" +msgstr "Штурвал" -#: src/emc/rs274ngc/rs274ngc_return.hh:32 -msgid "Bug unknown motion code" -msgstr "Ошибка: неизвестный код движения" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2857 +#, fuzzy +msgid "Show keyboard on offset" +msgstr "Показать размеры" -#: src/emc/rs274ngc/rs274ngc_return.hh:33 -msgid "Bug unknown operation" -msgstr "Ошибка: неизвестная операция" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2871 +msgid "Show keyboard on tooledit" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:34 -msgid "Cannot change axis offsets with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2885 +msgid "Show keyboard on MDI" msgstr "" -"Не могу менять отступы оси при включенной компенсации радиуса инструмента" -#: src/emc/rs274ngc/rs274ngc_return.hh:35 -msgid "Cannot create backup file" -msgstr "Не могу создать файл бэкапа" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2899 +msgid "Show keyboard on EDIT" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:36 -msgid "Cannot do g1 with zero feed rate" -msgstr "Не могу делать G1 с нулевой подачей" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2913 +msgid "Show keyboard on load file" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:37 -msgid "Cannot do zero repeats of cycle" -msgstr "Не могу делать ноль повторения цикла" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2931 +#, fuzzy +msgid "Keyboard" +msgstr "Питание" -#: src/emc/rs274ngc/rs274ngc_return.hh:38 -msgid "Cannot make arc with zero feed rate" -msgstr "Не могу делать арку с нулевой подачей" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2959 +#, fuzzy +msgid "show preview" +msgstr "Вид" -#: src/emc/rs274ngc/rs274ngc_return.hh:39 -msgid "Cannot open backup file" -msgstr "Не могу открыть файл бэкапа" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2973 +#, fuzzy +msgid "show offsets" +msgstr "Показать размеры" -#: src/emc/rs274ngc/rs274ngc_return.hh:40 -msgid "Cannot open variable file" -msgstr "Не могу открыть файл переменных" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2991 +msgid "On Touch off" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:41 -msgid "Cannot probe with cutter radius comp on" -msgstr "Не могу мерить с включенной компенсацией радиуса" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3005 +msgid "" +" Display \n" +"Aux Screen" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:42 -msgid "Cannot probe with zero feed rate" -msgstr "Не могу мерить с нулевой подачей" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3052 +#, fuzzy +msgid "Relative Color" +msgstr "Относительная позиция" -#: src/emc/rs274ngc/rs274ngc_return.hh:43 -msgid "Cannot put a b in canned cycle" -msgstr "Не могу добавить B в цикл" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3079 +#, fuzzy +msgid "Absolute Color" +msgstr "Абсолютный" -#: src/emc/rs274ngc/rs274ngc_return.hh:44 -msgid "Cannot put a c in canned cycle" -msgstr "Не могу добавить C в цикл" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3110 +msgid "DTG Color" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:45 -msgid "Cannot put an a in canned cycle" -msgstr "Не могу добавить A в цикл" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3139 +msgid "Use Auto Units" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:46 -msgid "Cannot turn cutter radius comp on when on" -msgstr "Не могу включить компенсацию радиуса второй раз" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3159 +#, fuzzy +msgid "Show the DRO Button" +msgstr "Shift+Левая кнопка" -#: src/emc/rs274ngc/rs274ngc_return.hh:47 -msgid "Cannot use axis values with g80" -msgstr "Не могу использовать слова осей с G80" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3190 +#, fuzzy +msgid "Homed color" +msgstr "Все в начало" -#: src/emc/rs274ngc/rs274ngc_return.hh:48 -msgid "Cannot use axis values without a g code that uses them" -msgstr "Не могу использовать слова осей без G-кода" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3204 +#, fuzzy +msgid "Unhomed color" +msgstr "Забыть начало всех осей" -#: src/emc/rs274ngc/rs274ngc_return.hh:49 -msgid "Cannot use g28 or g30 with cutter radius comp" -msgstr "Не могу использовать G28 или G30 с компенсацией радиуса" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3299 +#, fuzzy +msgid "Digits" +msgstr "Цифровой вход 0" -#: src/emc/rs274ngc/rs274ngc_return.hh:50 -msgid "Cannot use g53 incremental" -msgstr "Не могу использовать G53 инкрементально" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3344 +msgid "" +"toggle DRO mode \n" +"clicking on the DRO" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:51 -msgid "Cannot use g53 with cutter radius comp" -msgstr "Не могу использовать G53 с компенсацией радиуса" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3369 +#, fuzzy +msgid "DRO" +msgstr " a)" -#: src/emc/rs274ngc/rs274ngc_return.hh:52 -msgid "Cannot use two g codes that both use axis values" -msgstr "Не могу использовать два G-кода использующих слова осей" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3401 +#, fuzzy +msgid "Grid size" +msgstr "Размер" -#: src/emc/rs274ngc/rs274ngc_return.hh:53 -msgid "Command too long" -msgstr "Слишком длинная команда" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3430 +#, fuzzy +msgid "Show DRO" +msgstr "Показать" -#: src/emc/rs274ngc/rs274ngc_return.hh:54 -msgid "Current point same as end point of arc" -msgstr "Текущая точка та же, что и конец арки" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3444 +#, fuzzy +msgid "Show offsets" +msgstr "Показать размеры" -#: src/emc/rs274ngc/rs274ngc_return.hh:55 -msgid "Dwell time missing with g4" -msgstr "Время P не задано для G4" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3458 +#, fuzzy +msgid "Show DTG" +msgstr "Показать" -#: src/emc/rs274ngc/rs274ngc_return.hh:56 -msgid "Dwell time p word missing with g82" -msgstr "Время P не задано для G82" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3483 +#, fuzzy +msgid "Mouse Button mode" +msgstr "Охлаждение" -#: src/emc/rs274ngc/rs274ngc_return.hh:57 -msgid "Dwell time p word missing with g86" -msgstr "Время P не задано для G86" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3512 +#, fuzzy +msgid "Preview" +msgstr "Страница" -#: src/emc/rs274ngc/rs274ngc_return.hh:58 -msgid "Dwell time p word missing with g88" -msgstr "Время P не задано для G88" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3565 +#, fuzzy +msgid "" +"current\n" +" file" +msgstr "Перечитать текущий файл·[Control-R]" -#: src/emc/rs274ngc/rs274ngc_return.hh:59 -msgid "Dwell time p word missing with g89" -msgstr "Время P не задано для G89" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3611 +msgid "File to load on start" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:60 -msgid "Equal sign missing in parameter setting" -msgstr "Знак равно не найден в установке параметра" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3638 +#, fuzzy +msgid "Select user dir" +msgstr "Выбрать скорость быстрого хода" -#: src/emc/rs274ngc/rs274ngc_return.hh:61 -msgid "F word missing with inverse time arc move" -msgstr "F слово не задано в движении с инверсным временем" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3647 +#, fuzzy +msgid "Select jump to dir" +msgstr "Выберите узел для показа" -#: src/emc/rs274ngc/rs274ngc_return.hh:62 -msgid "F word missing with inverse time g1 move" -msgstr "F слово не задано в движении с инверсным временем" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3767 +msgid "Themes and sound" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:63 -msgid "File ended with no percent sign" -msgstr "Файл закончился без знака процента" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3799 +msgid "Appearance" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:64 -msgid "File ended with no percent sign or program end" -msgstr "Файл закончился без знака процента или конца программы" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3833 +#, fuzzy +msgid "Scale max velocity" +msgstr "Максимальная скорость" -#: src/emc/rs274ngc/rs274ngc_return.hh:65 -msgid "File name too long" -msgstr "Слишком длинное имя файла" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3846 +#, fuzzy +msgid "Scale jog velocity" +msgstr "Показать скорость" -#: src/emc/rs274ngc/rs274ngc_return.hh:66 -msgid "G code out of range" -msgstr "G код вне дипазона" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3861 +#, fuzzy +msgid "Scale feed override" +msgstr "Изменить подачу:" -#: src/emc/rs274ngc/rs274ngc_return.hh:67 -msgid "I word given for arc in yz plane" -msgstr "I слово задано для арки на yz плоскости" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3876 +#, fuzzy +msgid "Scale spindle override" +msgstr "Изменить обороты шпинделя:" -#: src/emc/rs274ngc/rs274ngc_return.hh:68 -msgid "I word missing with g87" -msgstr "I слово отсутствует после g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3970 +#, fuzzy +msgid "Hardware MPG Scale" +msgstr "Множитель энкодера:" -#: src/emc/rs274ngc/rs274ngc_return.hh:69 -msgid "J word given for arc in xz plane" -msgstr "J слово дано для арки в xz плоскости" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3994 +msgid "Use keyboard shortcuts" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:70 -msgid "J word missing with g87" -msgstr "J слово отсутствует после g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4007 +msgid "Keyboard shortcuts" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:71 -msgid "K word given for arc in xy plane" -msgstr "K слово задано для арки на xy плоскости" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4034 +#, fuzzy +msgid "Use unlock code" +msgstr "Неиспользованный енкодер" -#: src/emc/rs274ngc/rs274ngc_return.hh:72 -msgid "K word missing with g87" -msgstr "K слово отсутствует после g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4050 +#, fuzzy +msgid "Do not use unlock code" +msgstr "Не могу использовать С слово" -#: src/emc/rs274ngc/rs274ngc_return.hh:73 -msgid "Left bracket missing after slash with atan" -msgstr "Левая скобка отсутствует после слэша в atan" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4066 +msgid "Use hal pin to unlock" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:74 -msgid "Left bracket missing after unary operation name" -msgstr "Левая скобка отсутствует после имени унарной операции" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4087 +#, fuzzy +msgid "Unlock settings" +msgstr "Поиск начала" -#: src/emc/rs274ngc/rs274ngc_return.hh:75 -msgid "M code greater than 199" -msgstr "M код больше 199" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4197 +#, fuzzy +msgid "Spindle bar min" +msgstr "Включить тормоз шпинделя" -#: src/emc/rs274ngc/rs274ngc_return.hh:76 -msgid "Mixed radius ijk format for arc" -msgstr "Смешан радиус и ijk форматы для арки" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4210 +#, fuzzy +msgid "Spindle bar max" +msgstr "Шпиндель тормоз" -#: src/emc/rs274ngc/rs274ngc_return.hh:77 -msgid "Multiple a words on one line" -msgstr "Много a слов на одной строке" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4252 +msgid "Hide turtle Jog Button" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:78 -msgid "Multiple b words on one line" -msgstr "Много b слов на одной строке" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4282 +msgid "Turtle jog Factor" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:79 -msgid "Multiple c words on one line" -msgstr "Много c слов на одной строке" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4318 +#, fuzzy +msgid "Turtle Jog" +msgstr "Поиск начала" -#: src/emc/rs274ngc/rs274ngc_return.hh:80 -msgid "Multiple d words on one line" -msgstr "Много d слов на одной строке" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4360 +msgid "Hardware" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:81 -msgid "Multiple f words on one line" -msgstr "Много f слов на одной строке" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4392 +msgid "Use auto tool measurement" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:82 -msgid "Multiple h words on one line" -msgstr "Много h слов на одной строке" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4450 +#, fuzzy +msgid "Probe Height" +msgstr "Щуп вход" -#: src/emc/rs274ngc/rs274ngc_return.hh:83 -msgid "Multiple i words on one line" -msgstr "Много i слов на одной строке" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4485 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4498 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4527 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4556 +msgid "0.000" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:84 -msgid "Multiple j words on one line" -msgstr "Много j слов на одной строке" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4514 +#, fuzzy +msgid "Z Pos." +msgstr "Поз" -#: src/emc/rs274ngc/rs274ngc_return.hh:85 -msgid "Multiple k words on one line" -msgstr "Много k слов на одной строке" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4543 +#, fuzzy +msgid "Max. Probe" +msgstr "Щуп" -#: src/emc/rs274ngc/rs274ngc_return.hh:86 -msgid "Multiple l words on one line" -msgstr "Много l слов на одной строке" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4575 +#, fuzzy +msgid "Probe Informations" +msgstr "Опции программы" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4607 +#, fuzzy +msgid "Search Vel." +msgstr "Максимальная скорость поиска начала:" -#: src/emc/rs274ngc/rs274ngc_return.hh:87 -msgid "Multiple p words on one line" -msgstr "Много p слов на одной строке" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4618 +#, fuzzy +msgid "Probe Vel." +msgstr "Щуп вход" -#: src/emc/rs274ngc/rs274ngc_return.hh:88 -msgid "Multiple q words on one line" -msgstr "Много q слов на одной строке" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4674 +#, fuzzy +msgid "Probe velocitys" +msgstr "Изменить максимальную подачу:" -#: src/emc/rs274ngc/rs274ngc_return.hh:89 -msgid "Multiple r words on one line" -msgstr "Много r слов на одной строке" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4688 +msgid "" +"No valid configuration\n" +"found in your INI file,\n" +"please take a look at \n" +"the WIKI to check how\n" +"to configure the settings." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:90 -msgid "Multiple s words on one line" -msgstr "Много s слов на одной строке" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4708 +#, fuzzy +msgid "Tool Measurement" +msgstr "Охлаждение" -#: src/emc/rs274ngc/rs274ngc_return.hh:91 -msgid "Multiple t words on one line" -msgstr "Много t слов на одной строке" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4737 +msgid "" +"If the 4'th axis is used\n" +"for a tool changer, you\n" +"hide the DRO and\n" +"jog buttons." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:92 -msgid "Multiple x words on one line" -msgstr "Много x слов на одной строке" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4749 +#, fuzzy +msgid "Hide 4'th axis" +msgstr "Проверить ось" -#: src/emc/rs274ngc/rs274ngc_return.hh:93 -msgid "Multiple y words on one line" -msgstr "Много y слов на одной строке" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4769 +#, fuzzy +msgid "Tool Changer" +msgstr "Поиск начала" -#: src/emc/rs274ngc/rs274ngc_return.hh:94 -msgid "Multiple z words on one line" -msgstr "Много z слов на одной строке" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4808 +msgid "Use frames" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:95 -msgid "Must use g0 or g1 with g53" -msgstr "Должен использовать g0 или g1 с g53" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4840 +msgid "max." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:96 -msgid "Negative argument to sqrt" -msgstr "Отрицательный аргумент для sqrt" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4992 +msgid "Launch test message" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:97 -msgid "Negative d word tool radius index used" -msgstr "Отрицательное d слово для индекса радиуса инструмента" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5011 +msgid "" +" gmoccapy message\n" +" behavior and appearance " +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:98 -msgid "Negative f word used" -msgstr "Отрицательное f слово " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5049 +msgid "Do not use run from line" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:99 -msgid "Negative g code used" -msgstr "Отрицательное g слово " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5065 +#, fuzzy +msgid "Use run from line" +msgstr "Исполнить с выделенной строки" -#: src/emc/rs274ngc/rs274ngc_return.hh:100 -msgid "Negative h word used" -msgstr "Отрицательное h слово " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5086 +#, fuzzy +msgid "Run from line" +msgstr "Поиск начала" -#: src/emc/rs274ngc/rs274ngc_return.hh:101 -msgid "Negative l word used" -msgstr "Отрицательное l слово " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5119 +#, fuzzy +msgid "" +"Advanced\n" +" Settings" +msgstr "Продвинутые настройки" -#: src/emc/rs274ngc/rs274ngc_return.hh:102 -msgid "Negative m code used" -msgstr "Отрицательное m слово " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5157 +msgid "User tab 1" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:103 -msgid "Negative or zero q value used" -msgstr "Отрицательное или нулевое q слово " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5171 +msgid "User tabs" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:104 -msgid "Negative p word used" -msgstr "Отрицательное p слово " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5207 +msgid "Estop the machine" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:105 -msgid "Negative spindle speed used" -msgstr "Отрицательное значение скорости шпинделя" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5229 +#, fuzzy +msgid "Turn the machine on/off" +msgstr "Включить станок" -#: src/emc/rs274ngc/rs274ngc_return.hh:106 -msgid "Negative tool id used" -msgstr "Отрицательный индекс инструмента " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5251 +msgid "enter manual mode to jog axis by hand or touch off" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:107 -msgid "Nested comment found" -msgstr "Вложенный комментарий" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5271 +#, fuzzy +msgid "enter MDI mode to launch g-code commands" +msgstr "Должен быть в MDI режиме для исполнения команд MDI" -#: src/emc/rs274ngc/rs274ngc_return.hh:108 -msgid "No characters found in reading real value" -msgstr "Не найдено символов при чтении реального числа" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5290 +#, fuzzy +msgid "enter auto mode to run programs" +msgstr "Программа последовательной modbus" -#: src/emc/rs274ngc/rs274ngc_return.hh:109 -msgid "Non integer value for integer" -msgstr "Не целое число для целого аргумента" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5308 +msgid "Enter the settings page, the default code is \"123\"" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:110 -msgid "Null missing after newline" -msgstr "NULL отсутствует после конца строки" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5330 +#, fuzzy +msgid "show user tabs" +msgstr "Показать перезапуск" -#: src/emc/rs274ngc/rs274ngc_return.hh:111 -msgid "Parameter file out of order" -msgstr "Файл параметров не отсортирован" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5381 +msgid "open homing button list" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:112 -msgid "Parameter number out of range" -msgstr "Номер параметра вне диапазона" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5398 +msgid "open touch off button list" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:113 -msgid "Parameter is readonly" -msgstr "Параметр только для чтения" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5427 +msgid "Open the tooleditor page" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:114 -msgid "Q word missing with g83" -msgstr "Q слово отсутствует после g83" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5498 +msgid "make the preview as large as possible" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:115 -msgid "Queue is not empty after probing" -msgstr "Очередь не пуста после замера" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5515 +msgid "Close moccapy / leave the program" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:116 -msgid "R clearance plane unspecified in cycle" -msgstr "R плоскость прохода не определена для цикла" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5577 +msgid "This button will show or hide the Keyboard" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:117 -msgid "R i j k words all missing for arc" -msgstr "R i j k слова не определены для арки" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5620 +#, fuzzy +msgid "Load a new program" +msgstr "Перезагрузить программу" -#: src/emc/rs274ngc/rs274ngc_return.hh:118 -msgid "R less than x in cycle in yz plane" -msgstr "R меньше x в цикле на yz плоскости" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5637 +#, fuzzy +msgid "Run the loaded program" +msgstr "Перезагрузить программу" -#: src/emc/rs274ngc/rs274ngc_return.hh:119 -msgid "R less than y in cycle in xz plane" -msgstr "R меньше y в цикле на xz плоскости" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5654 +#, fuzzy +msgid "Stop the running program" +msgstr "Остановить запущенную программу или" -#: src/emc/rs274ngc/rs274ngc_return.hh:120 -msgid "R less than z in cycle in xy plane" -msgstr "R меньше z в цикле на xy плоскости" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5672 +#, fuzzy +msgid "Pause the running program" +msgstr "Остановить запущенную программу или" -#: src/emc/rs274ngc/rs274ngc_return.hh:121 -msgid "R word with no g code that uses it" -msgstr "R слово без g кода перед ним" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5680 +#, fuzzy +msgid "pause the running program" +msgstr "Остановить запущенную программу или" -#: src/emc/rs274ngc/rs274ngc_return.hh:122 -msgid "Slash missing after first atan argument" -msgstr "Слэш отсутствует после первого аргумента atan" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5698 +msgid "Run the loaded program step by step" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:123 -msgid "Spindle not turning clockwise in g84" -msgstr "Шпиндель не крутится вперед при g84" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5715 +msgid "" +"run the program from a certain line, attention, that is dangerous, because " +"the previous lines will not checed!" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:124 -msgid "Spindle not turning in g86" -msgstr "Шпиндель не крутится при g86" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5732 +msgid "" +"Machine or not the optional blocks of the program. If the button is pressed, " +"the optional blocks will not be machined. The button will indicate this by a " +"yellow background." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:125 -msgid "Spindle not turning in g87" -msgstr "Шпиндель не крутится при g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5757 +msgid "" +"Make optional stops or not. if an M1 is programed and the button is pressed " +"(is active) the programm will pause if it found a M1" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:126 -msgid "Spindle not turning in g88" -msgstr "Шпиндель не крутится при g88" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5789 +#, fuzzy +msgid "Edit the loaded program" +msgstr "Редактировать лестницу" -#: src/emc/rs274ngc/rs274ngc_return.hh:127 -msgid "Sscanf failed" -msgstr "Sscanf не прошел" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5837 +#, fuzzy +msgid "home all axis" +msgstr "Поставить все оси в начало" -#: src/emc/rs274ngc/rs274ngc_return.hh:128 -msgid "Start point too close to probe point" -msgstr "Точка старта слишком близка к точке замера" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5873 +#, fuzzy +msgid "home x axis" +msgstr "Найти начало оси" -#: src/emc/rs274ngc/rs274ngc_return.hh:129 -msgid "Too many m codes on line" -msgstr "Слишком много М-кодов на строке" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5897 +#, fuzzy +msgid "home y axis" +msgstr "Найти начало оси" -#: src/emc/rs274ngc/rs274ngc_return.hh:130 -msgid "Pocket max too large" -msgstr "Максимум кармана слишком большой" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5929 +#, fuzzy +msgid "home z axis" +msgstr "Найти начало оси" -#: src/emc/rs274ngc/rs274ngc_return.hh:131 -msgid "Tool radius not less than arc radius with comp" -msgstr "Радиус инструмента не меньше радиуса арки с компенсацией" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5987 +#, fuzzy +msgid "Unhome all axis" +msgstr "Забыть начало всех осей" -#: src/emc/rs274ngc/rs274ngc_return.hh:132 -msgid "Two g codes used from same modal group" -msgstr "Использованы два g-кода из одной модальной группы" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6023 +msgid "go back to main button list" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:133 -msgid "Two m codes used from same modal group" -msgstr "Использованы два m-кода из одной модальной группы" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6053 +msgid "" +" edit\n" +"offsets" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:134 -#, fuzzy, c-format -msgid "Unable to open file <%s>" -msgstr "Не могу открыть файл" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6060 +#, fuzzy +msgid "Edit offsets" +msgstr "Показать размеры" -#: src/emc/rs274ngc/rs274ngc_return.hh:135 -msgid "Unclosed comment found" -msgstr "Незавершенный комментарий" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6076 +msgid "touch off X / set X to 0" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:136 -msgid "Unclosed expression" -msgstr "Незавершенное выражение" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6100 +msgid "touch off Y / set Y to 0" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:137 -msgid "Unknown g code used" -msgstr "Использован неизвестный G-код" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6135 +msgid "touch off Z / set Z to 0" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:138 -msgid "Unknown m code used" -msgstr "Использован неизвестный M-код" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6155 +msgid "" +"zero\n" +"G92" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:139 -msgid "Unknown operation" -msgstr "Использована неизвестная операция" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6161 +#, fuzzy +msgid "Zero all G92 offsets" +msgstr "Обнулить все G59.2" -#: src/emc/rs274ngc/rs274ngc_return.hh:140 -msgid "Unknown operation name starting with a" -msgstr "Неизвестная операция с A" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6172 +msgid "" +" Block\n" +"Height" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:141 -msgid "Unknown operation name starting with m" -msgstr "Неизвестная операция с M" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6192 +msgid "touch off X / set X to an desired value" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:142 -msgid "Unknown operation name starting with o" -msgstr "Неизвестная операция с O" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6216 +msgid "touch off Y / set Y to an desired value" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:143 -msgid "Unknown operation name starting with x" -msgstr "Неизвестная операция с X" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6251 +msgid "touch off Z / set Z to an desired value" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:144 -msgid "Unknown word starting with a" -msgstr "Неизвестное слово на A" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6270 +msgid "" +" set\n" +"selected" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:145 -msgid "Unknown word starting with c" -msgstr "Неизвестное слово на С" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6277 +#, fuzzy +msgid "set the selected coordinate system to be the active one" +msgstr "" +"Не могу изменить координатную систему с включенной компенсацией радиуса " +"инструмента" -#: src/emc/rs274ngc/rs274ngc_return.hh:146 -msgid "Unknown word starting with e" -msgstr "Неизвестное слово на E" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6293 +msgid "Go back to main view" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:147 -msgid "Unknown word starting with f" -msgstr "Неизвестное слово на F" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6324 +#, fuzzy +msgid "delete MDI" +msgstr "Удалить" -#: src/emc/rs274ngc/rs274ngc_return.hh:148 -msgid "Unknown word starting with l" -msgstr "Неизвестное слово на I" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6330 +#, fuzzy +msgid "delete MDI history" +msgstr "Очистить журнал MDI" -#: src/emc/rs274ngc/rs274ngc_return.hh:149 -msgid "Unknown word starting with r" -msgstr "Неизвестное слово на R" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6380 +msgid "Cl.-ladder" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:150 -msgid "Unknown word starting with s" -msgstr "Неизвестное слово на S" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6386 +#, fuzzy +msgid "Open classicladder" +msgstr "Добавить Classicladder PLC" -#: src/emc/rs274ngc/rs274ngc_return.hh:151 -msgid "Unknown word starting with t" -msgstr "Неизвестное слово на T" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6397 +#, fuzzy +msgid "Hal-Scope" +msgstr "HAL-скоп" -#: src/emc/rs274ngc/rs274ngc_return.hh:152 -msgid "Unknown word where unary operation could be" -msgstr "Неизвестное слово после унарной операции" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6403 +#, fuzzy +msgid "launch hal scope" +msgstr "Запустить %s" -#: src/emc/rs274ngc/rs274ngc_return.hh:153 -msgid "X and y words missing for arc in xy plane" -msgstr "X и y не найдены для арки на xy плоскости" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6420 +msgid "launch linuxcnc status" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:154 -msgid "X and z words missing for arc in xz plane" -msgstr "X и z не найдены для арки на xz плоскости" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6437 +msgid "launch hal meter" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:155 -msgid "X value unspecified in yz plane canned cycle" -msgstr "X не задан для цикла на yz плоскости" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6455 +#, fuzzy +msgid "launch calibration" +msgstr "Калибровка" -#: src/emc/rs274ngc/rs274ngc_return.hh:156 -msgid "Y and z words missing for arc in yz plane" -msgstr "Y и z слова не заданы для арки на yz плоскости" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6466 +msgid "Halshow" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:157 -msgid "Y value unspecified in xz plane canned cycle" -msgstr "Значение Y не указано для цикла на xz плоскости" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6472 +msgid "opens the show hal tool" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:158 -msgid "Z value unspecified in xy plane canned cycle" -msgstr "Значение Z не указано для цикла на xy плоскости" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6537 +msgid "save the file using the original name" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:159 -msgid "Zero or negative argument to ln" -msgstr "Неположительный аргумент для ln" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6559 +msgid "save the file with a new name" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:161 -msgid "K word missing with g33/g33.1" -msgstr "K не указан после g33/g33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6605 +msgid "clear the edit field and make a new file" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:162 -msgid "F word used with a g33/g33.1" -msgstr "F использован для g33/g33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6641 +msgid "Show or hide the virtual keyboard" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:163 -msgid "Unknown operation name starting with e" -msgstr "Неизвестная операция на e" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6665 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6879 +msgid "Go back to main button list" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:164 -msgid "Unknown operation name starting with n" -msgstr "Неизвестная операция на n" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6701 +#, fuzzy +msgid "delete selected tool or tools" +msgstr "Выбранный номер слота инструмента слишком большой" -#: src/emc/rs274ngc/rs274ngc_return.hh:165 -msgid "Unknown operation name starting with g" -msgstr "Неизвестная операция на g" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6718 +#, fuzzy +msgid "add a new tool to tool table" +msgstr "Перегрузить таблицу инструментов" -#: src/emc/rs274ngc/rs274ngc_return.hh:166 -msgid "Unknown operation name starting with l" -msgstr "Неизвестная операция на l" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6729 +#, fuzzy +msgid "Reload" +msgstr "Перегрузить" -#: src/emc/rs274ngc/rs274ngc_return.hh:167 -msgid "Too many subroutine parameters" -msgstr "Слишком много параметров подпрограммы" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6735 +#, fuzzy +msgid "reload tool table from file" +msgstr "Перегрузить таблицу инструментов" -#: src/emc/rs274ngc/rs274ngc_return.hh:168 -msgid "Too many subroutine levels" -msgstr "Слишком много уровней подпрограммы" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6746 +msgid "Apply" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:169 -msgid "Bug: call stack underrun" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6752 +msgid "" +"apply the changes you made, G43 will be excecuted only if it is active g-code" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:170 -msgid "Unknown control command in o word" -msgstr "Неизвестная управляющая команда в o-слове" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6768 +#, fuzzy +msgid "Select a tool by number" +msgstr "Выбранный номер слота инструмента слишком большой" -#: src/emc/rs274ngc/rs274ngc_return.hh:171 -msgid "Too many oword labels" -msgstr "Слишком много o-меток" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6790 +msgid "change tool with the command M61 Q?, no machine move will be done" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:172 -msgid "Unknown oword number" -msgstr "Использовано неизвестное О-слово" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6812 +msgid "change tool to the selected one" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:173 -msgid "Nested subroutine definition" -msgstr "Вложенное определение подпрограммы" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6824 +msgid "" +"touchoff\n" +" tool x" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:174 -msgid "Not in subroutine definition" -msgstr "Вне определения подпрогаммы" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6832 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6863 +msgid "touch off the tool and set the value to the tool table" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:175 -msgid "File not open" -msgstr "Файл не найден" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6855 +msgid "" +"touchoff\n" +" tool z" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:176 -msgid "Need tool prepared -Txx- for toolchange" -msgstr "Нужно подготовить инструмент -Txx- к замене" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6915 +msgid "Move to your home directory" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:177 -msgid "Cannot change planes with cutter radius compensation on" -msgstr "Нельзя менять плоскости при включенной компенсации радиуса" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6932 +#, fuzzy +msgid "Move to parrent directory" +msgstr "Каталог конфигураций:" -#: src/emc/rs274ngc/rs274ngc_return.hh:178 -msgid "Cutter radius compensation allowed only in XY, XZ planes" -msgstr "Компенсация радиуса разрешена только на плоскостях XY и XZ" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6961 +#, fuzzy +msgid "Select the previos file" +msgstr "Выберите объект для показа" -#: src/emc/rs274ngc/rs274ngc_return.hh:179 -msgid "P word missing with G76" -msgstr "P не указан после G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6979 +#, fuzzy +msgid "Select the next file" +msgstr "Выберите объект для показа" -#: src/emc/rs274ngc/rs274ngc_return.hh:180 -msgid "I J or K words missing with G76" -msgstr "I J или K не указаны после G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6997 +msgid "Jump to user defined directory" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:181 -msgid "Cannot move rotary axes with G76" -msgstr "Нельзя двигать вращательные оси в G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7027 +msgid "select the highlighted file and return the path" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:182 -msgid "Multiple e words on one line" -msgstr "Несколько e слов на одной строке" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7057 +msgid "Close without returning a file path" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:183 -msgid "Named parameter not terminated" -msgstr "Поименованный параметр не закрыт" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7075 +#, fuzzy +msgid "Load File" +msgstr "Файл программы" -#: src/emc/rs274ngc/rs274ngc_return.hh:184 -msgid "Out of memory" -msgstr "Память кончилась" +#, fuzzy +#~ msgid "LinuxCNC Debug Level" +#~ msgstr "Уровень отладки" -#: src/emc/rs274ngc/rs274ngc_return.hh:185 -msgid "S word missing with G96" -msgstr "S не указан после G96" +#~ msgid "" +#~ "# **** COMANDED velocity is signed so we use absolute component (abs.0) " +#~ "to remove sign" +#~ msgstr "" +#~ "# **** COMANDED velocity is signed so we use absolute component (abs.0) " +#~ "to remove sign" -#: src/emc/rs274ngc/rs274ngc_return.hh:186 -msgid "Queue is not empty after external input" -msgstr "Очередь не пуста после внешнего ввода" +#~ msgid "Generated by stepconf at %s" +#~ msgstr "Generated by stepconf at %s" -#: src/emc/rs274ngc/rs274ngc_return.hh:187 -msgid "Can't select analog input with wait type != immediate return" -msgstr "" -"Не могу выбрать аналоговый выход с типом ожидания != немедленному возврату" +#~ msgid "S_econd Parport Address:" +#~ msgstr "Адрес второго порта:" -#: src/emc/rs274ngc/rs274ngc_return.hh:188 -msgid "Zero timeout with wait type != immediate return" -msgstr "Нулевое ожидание с типом ожидания не равным немедленному возврату" +#~ msgid " Parallel Port Settings" +#~ msgstr "Настройка параллельного порта" -#: src/emc/rs274ngc/rs274ngc_return.hh:189 -msgid "Invalid to select both a digital and an analog input with M66" -msgstr "Нельзя выбрать аналоговый и цифровой вход с M66" +#~ msgid "" +#~ "Driver characteristics: (Multiply by 1000 for times specified in µs or " +#~ "microseconds)\n" +#~ " Additional signal conditioning or isolation such as optocouplers " +#~ "and RC filters\n" +#~ " can impose timing constraints of their own, in addition to those " +#~ "of the driver." +#~ msgstr "" +#~ "Характеристики привода (Умножьте на 1000 для времен, заданных в " +#~ "микросекундах)\n" +#~ "\n" +#~ "Дополнительные усилители и изоляторы и фильтры могут внести собственные " +#~ "временные ограничения в дополнение к ограничениям привода." -#: src/emc/rs274ngc/rs274ngc_return.hh:190 -msgid "Need to have either a valid P or a valid E word with M66" -msgstr "Нужно задать верное P или E для M66" +#~ msgid "Advanced Configuration Options" +#~ msgstr "Продвинутые настройки" -#: src/emc/rs274ngc/rs274ngc_return.hh:191 -msgid "Q word missing with g73" -msgstr "Q не указан для g73" +#~ msgid "_Sherline Outputs" +#~ msgstr "Выходы _Sherline" -#: src/emc/rs274ngc/rs274ngc_return.hh:192 -msgid "Digital input selected out of bounds" -msgstr "Выбранный цифровой вход вне диапазона" +#~ msgid "_Xylotex Outputs" +#~ msgstr "Выходы _Xylotex" -#: src/emc/rs274ngc/rs274ngc_return.hh:193 -msgid "Analog input selected out of bounds" -msgstr "Аналоговый выход выбран вне диапазона" +#~ msgid "Spindle Configuration" +#~ msgstr "Конфигурация шпинделя" -#: src/emc/rs274ngc/rs274ngc_return.hh:194 -msgid "W value unspecified in UV plane canned cycle" -msgstr "W не указано для цикла на UV плоскости" +#, fuzzy +#~ msgid "" +#~ "# Use COMMANDED spindle velocity from LinuxCNC because no spindle " +#~ "encoder was specified" +#~ msgstr "" +#~ "# **** Use COMMANDED spindle velocity from EMC because no spindle encoder " +#~ "was specified" -#: src/emc/rs274ngc/rs274ngc_return.hh:195 -msgid "U value unspecified in VW plane canned cycle" -msgstr "U не указано для цикла на VW плоскости" +#, fuzzy +#~ msgid "" +#~ "# COMMANDED velocity is signed so we use absolute component to remove " +#~ "sign" +#~ msgstr "" +#~ "# **** COMANDED velocity is signed so we use absolute component (abs.0) " +#~ "to remove sign" -#: src/emc/rs274ngc/rs274ngc_return.hh:196 -msgid "V value unspecified in UW plane canned cycle" -msgstr "V значение не определено в цикле на UW плоскости" +#, fuzzy +#~ msgid "Spindle Max Output:" +#~ msgstr "Шпиндель ON" -#: src/emc/rs274ngc/rs274ngc_return.hh:197 -msgid "R less than W in cycle in UV plane" -msgstr "R меньше W в цикле на UV плоскости" +#~ msgid "Cannot set motion output with cutter radius compensation on" +#~ msgstr "" +#~ "Не могу установить выход движения при включенной компенсации радиуса " +#~ "инструмента" -#: src/emc/rs274ngc/rs274ngc_return.hh:198 -msgid "R less than U in cycle in VW plane" -msgstr "R меньше U в цикле на VW плоскости" +#~ msgid "Cannot set motion digital output with cutter radius compensation on" +#~ msgstr "" +#~ "Не могу установить выход движения при включенной компенсации радиуса " +#~ "инструмента" -#: src/emc/rs274ngc/rs274ngc_return.hh:199 -msgid "R less than V in cycle in UW plane" -msgstr "R меньше V в цикле на UW плоскости" +#~ msgid "" +#~ "Cannot set auxiliary digital output with cutter radius compensation on" +#~ msgstr "" +#~ "Не могу установить дополнительный выход при включенной компенсации " +#~ "радиуса инструмента" + +#~ msgid "Cannot set motion analog output with cutter radius compensation on" +#~ msgstr "" +#~ "Не могу установить аналоговый выход при включенной компенсации радиуса " +#~ "инструмента" -#~ msgid "Select item to display" -#~ msgstr "Выберите объект для показа" +#~ msgid "" +#~ "Cannot set auxiliary analog output with cutter radius compensation on" +#~ msgstr "" +#~ "Не могу установить дополнительный аналоговый выход при включенной " +#~ "компенсации радиуса инструмента" #~ msgid "ERROR: must specify a path to search for configurations" #~ msgstr "Ошибка: нет пути для поиска конфигураций" @@ -13636,9 +17255,6 @@ msgstr "R меньше V в цикле на UW плоскости" #~ msgid "Length:" #~ msgstr "Длина:" -#~ msgid "Diameter:" -#~ msgstr "Диаметр:" - #~ msgid "Tools..." #~ msgstr "Инструменты..." @@ -13799,9 +17415,6 @@ msgstr "R меньше V в цикле на UW плоскости" #~ msgid "Cannot use b word" #~ msgstr "Не могу использовать B слово" -#~ msgid "Cannot use c word" -#~ msgstr "Не могу использовать С слово" - #~ msgid "Cannot use xz plane with cutter radius comp" #~ msgstr "Не могу использовать xz плоскость с компенсацией радиуса" @@ -13853,9 +17466,6 @@ msgstr "R меньше V в цикле на UW плоскости" #~ msgid "Required parameter missing" #~ msgstr "Нет необходимого параметра" -#~ msgid "Selected tool slot number too large" -#~ msgstr "Выбранный номер слота инструмента слишком большой" - #~ msgid "Tool length offset index too big" #~ msgstr "Отступ длины инструмента слишком большой" @@ -13894,9 +17504,6 @@ msgstr "R меньше V в цикле на UW плоскости" #~ msgid "mm / s²" #~ msgstr "мм/с²" -#~ msgid "Out" -#~ msgstr "Выход" - #~ msgid "EMC2 Servo Configuration" #~ msgstr "Конфигурирование EMC2 для сервоприводов" @@ -13925,6 +17532,3 @@ msgstr "R меньше V в цикле на UW плоскости" #~ msgid "P word with no g4 g10 g64 g76 g82 g86 g88 g89" #~ msgstr "P слово без g4 g10 g64 g76 g82 g86 g88 g89" - -#~ msgid "Xylotex" -#~ msgstr "Xylotex" diff --git a/src/po/sk.po b/src/po/sk.po index b34c5c3b73..f5f86a311d 100644 --- a/src/po/sk.po +++ b/src/po/sk.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: sk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-10 13:40-0600\n" +"POT-Creation-Date: 2019-02-20 07:49+0000\n" "PO-Revision-Date: 2009-01-25 14:12+0100\n" "Last-Translator: Ševc Dominik \n" "Language-Team: Slovak \n" @@ -14,13556 +14,17008 @@ msgstr "" "X-Poedit-Language: Slovak\n" "X-Poedit-Country: SLOVAKIA\n" -#: src/hal/utils/meter.c:198 +#: src/emc/task/emctaskmain.cc:479 src/emc/task/emctaskmain.cc:512 #, c-format -msgid "ERROR: '%s' is not a valid probe type\n" +msgid "%s exceeds +X limit" msgstr "" -#: src/hal/utils/meter.c:206 +#: src/emc/task/emctaskmain.cc:484 src/emc/task/emctaskmain.cc:517 #, c-format -msgid "ERROR: no pin/signal/parameter name\n" +msgid "%s exceeds +Y limit" msgstr "" -#: src/hal/utils/meter.c:212 +#: src/emc/task/emctaskmain.cc:489 src/emc/task/emctaskmain.cc:522 #, c-format -msgid "" -"ERROR: -s option requires a probe type and a pin/signal/parameter name\n" +msgid "%s exceeds +Z limit" msgstr "" -#: src/hal/utils/meter.c:238 tcl/tklinuxcnc.tcl:764 -msgid "Hal Meter" -msgstr "HAL-Meter" - -#: src/hal/utils/meter.c:287 -#, fuzzy -msgid "_Select" -msgstr "Vybrať všetky" - -#: src/hal/utils/meter.c:288 -msgid "E_xit" +#: src/emc/task/emctaskmain.cc:494 src/emc/task/emctaskmain.cc:527 +#, c-format +msgid "%s exceeds -X limit" msgstr "" -#: src/hal/utils/meter.c:336 src/hal/utils/meter.c:364 -#, fuzzy -msgid "Select Item to Probe" -msgstr "Vyberte premennú pre zobrazenie." - -#: src/hal/utils/meter.c:640 -msgid " _Pins " +#: src/emc/task/emctaskmain.cc:499 src/emc/task/emctaskmain.cc:532 +#, c-format +msgid "%s exceeds -Y limit" msgstr "" -#: src/hal/utils/meter.c:641 -#, fuzzy -msgid " _Signals " -msgstr "Rozšíriť signály" - -#: src/hal/utils/meter.c:642 -#, fuzzy -msgid " Para_meters " -msgstr "Súbor parametrov" - -#: src/hal/utils/meter.c:685 -#, fuzzy -msgid "_Close" -msgstr "Ukončiť" +#: src/emc/task/emctaskmain.cc:504 src/emc/task/emctaskmain.cc:537 +#, c-format +msgid "%s exceeds -Z limit" +msgstr "" -#: src/hal/utils/scope.c:126 +#: src/emc/task/emctaskmain.cc:892 +#, c-format msgid "" -"Usage:\n" -" halscope [-h] [-i infile] [-o outfile] [num_samples]\n" +"command (%s) cannot be executed until the machine is out of E-stop and " +"turned on" msgstr "" -#: src/hal/utils/scope.c:474 src/hal/utils/scope.c:501 -#, fuzzy -msgid "Open Configuration File:" -msgstr "Konfigurácia skopírovaná" - -#: src/hal/utils/scope.c:535 -#, fuzzy -msgid "_Open Configuration..." -msgstr "Príklady konfigurácií" - -#: src/hal/utils/scope.c:541 -#, fuzzy -msgid "_Save Configuration..." -msgstr "Príklady konfigurácií" - -#: src/hal/utils/scope.c:550 -msgid "O_pen Data File..." +#: src/emc/task/emctaskmain.cc:1013 +#, c-format +msgid "can't do that (%s:%d) in manual mode" msgstr "" -#: src/hal/utils/scope.c:557 -#, fuzzy -msgid "S_ave Data File..." -msgstr "Uložiť" - -#: src/hal/utils/scope.c:566 share/axis/tcl/axis.tcl:93 -#, fuzzy -msgid "_Quit" -msgstr "Ukončiť" - -#: src/hal/utils/scope.c:572 -msgid "_About Halscope" +#: src/emc/task/emctaskmain.cc:1113 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter idle" msgstr "" -#: src/hal/utils/scope.c:578 share/axis/tcl/axis.tcl:435 -#, fuzzy -msgid "_File" -msgstr "Súbor" - -#: src/hal/utils/scope.c:582 share/axis/tcl/axis.tcl:447 -#, fuzzy -msgid "_Help" -msgstr "Pomoc" - -#: src/hal/utils/scope.c:641 -msgid "HAL Oscilloscope" +#: src/emc/task/emctaskmain.cc:1180 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter reading" msgstr "" -#: src/hal/utils/scope.c:669 -msgid "Horizontal" +#: src/emc/task/emctaskmain.cc:1265 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter paused" msgstr "" -#: src/hal/utils/scope.c:677 -#, fuzzy -msgid "Selected Channel" -msgstr "Vybrať všetky" - -#: src/hal/utils/scope.c:683 -msgid "Run Mode" +#: src/emc/task/emctaskmain.cc:1334 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter waiting" msgstr "" -#: src/hal/utils/scope.c:686 -msgid "Trigger" +#: src/emc/task/emctaskmain.cc:1442 +#, c-format +msgid "can't do that (%s:%d) in MDI mode" msgstr "" -#: src/hal/utils/scope.c:692 -msgid "Vertical" +#: src/emc/task/emctaskmain.cc:2100 +msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" msgstr "" -#: src/hal/utils/scope.c:700 share/axis/tcl/axis.tcl:135 -#: share/axis/tcl/axis.tcl:1199 -#, fuzzy -msgid "Stop" -msgstr "Krok" +#: src/emc/task/emctaskmain.cc:2157 tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 +#: tcl/mini.tcl:1775 tcl/tklinuxcnc.tcl:451 +#, c-format, tcl-format +msgid "can't open %s" +msgstr "Nie je možné otvoriť %s." -#: src/hal/utils/scope.c:703 -msgid "Normal" +#: src/emc/task/emctaskmain.cc:2169 +msgid "Can't issue MDI command when not homed" msgstr "" -#: src/hal/utils/scope.c:706 -#, fuzzy -msgid "Single" -msgstr "Jedna medzera" - -#: src/hal/utils/scope.c:709 -msgid "Roll" +#: src/emc/task/emctaskmain.cc:2174 +msgid "Must be in MDI mode to issue MDI command" msgstr "" -#: src/hal/utils/scope_horiz.c:130 -msgid "Zoom" +#: src/emc/task/emctaskmain.cc:2256 +msgid "Can't run a program when not homed" msgstr "" -#: src/hal/utils/scope_horiz.c:131 -msgid " Pos " +#: src/emc/rs274ngc/interp_arc.cc:110 src/emc/rs274ngc/interp_arc.cc:284 +#, c-format +msgid "" +"Zero-radius arc: start=(%c%.4f,%c%.4f) center=(%c%.4f,%c%.4f) end=(%c%.4f,%c" +"%.4f) r1=%.4f r2=%.4f" msgstr "" -#: src/hal/utils/scope_horiz.c:164 +#: src/emc/rs274ngc/interp_arc.cc:120 src/emc/rs274ngc/interp_arc.cc:292 +#, c-format msgid "" -"----- Samples\n" -"at ---- KHz" +"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " +"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " +"rel_err=%.4f%%" msgstr "" -#: src/hal/utils/scope_horiz.c:459 -msgid "Realtime component not loaded" +#: src/emc/rs274ngc/interp_check.cc:90 +msgid "G4 not allowed with G2 or G3 because they both use P" msgstr "" -#: src/hal/utils/scope_horiz.c:460 -msgid "" -"HALSCOPE uses a realtime component called scope_rt'\n" -"to sample signals for display. It is not currently loaded\n" -"and attempting to load it automatically failed. More information\n" -"may be available in the terminal where halscope was started.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Load the component (using 'halcmd loadrt scope_rt'), then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +#: src/emc/rs274ngc/interp_check.cc:93 +msgid "Line with G10 does not have L1, L10, L11, L2, or L20" msgstr "" -#: src/hal/utils/scope_horiz.c:495 -msgid "Realtime function not linked" +#: src/emc/rs274ngc/interp_check.cc:94 +msgid "P value not an integer with G10" msgstr "" -#: src/hal/utils/scope_horiz.c:496 -msgid "" -"The HALSCOPE realtime sampling function\n" -"must be called from a HAL thread in to\n" -"determine the sampling rate.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Select a thread name and multiplier then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +#: src/emc/rs274ngc/interp_check.cc:95 +#, c-format +msgid "P value out of range (0-9) with G10 L%d" msgstr "" -#: src/hal/utils/scope_horiz.c:503 -msgid "Select Sample Rate" +#: src/emc/rs274ngc/interp_check.cc:96 +#, c-format +msgid "P value out of range with G10 L%d" msgstr "" -#: src/hal/utils/scope_horiz.c:504 -msgid "" -"Select a thread name and multiplier then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +#: src/emc/rs274ngc/interp_check.cc:100 +msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." msgstr "" -#: src/hal/utils/scope_horiz.c:526 -msgid "Thread:" +#: src/emc/rs274ngc/interp_check.cc:259 +msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" msgstr "" -#: src/hal/utils/scope_horiz.c:534 -msgid "Sample Period:" +#: src/emc/rs274ngc/interp_check.cc:265 +msgid "E word with no G76, M66, M67 or M68 to use it" msgstr "" -#: src/hal/utils/scope_horiz.c:542 -msgid "Sample Rate:" +#: src/emc/rs274ngc/interp_check.cc:270 +msgid "H word with no G43 or G76 to use it" msgstr "" -#: src/hal/utils/scope_horiz.c:558 src/emc/usr_intf/touchy/mdi.py:78 -msgid "Thread" +#: src/emc/rs274ngc/interp_check.cc:276 +msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" msgstr "" -#: src/hal/utils/scope_horiz.c:559 -msgid "Period" +#: src/emc/rs274ngc/interp_check.cc:282 +msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" msgstr "" -#: src/hal/utils/scope_horiz.c:619 -msgid "Multiplier:" +#: src/emc/rs274ngc/interp_check.cc:288 +msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" msgstr "" -#: src/hal/utils/scope_horiz.c:636 -#, fuzzy -msgid "Record Length" -msgstr "Dĺžka:" - -#: src/hal/utils/scope_horiz.c:639 -#, c-format -msgid "%5d samples (1 channel)" +#: src/emc/rs274ngc/interp_check.cc:298 +msgid "" +"L word with no G10, cutter compensation, canned cycle, digital/analog input, " +"or NURBS code" msgstr "" -#: src/hal/utils/scope_horiz.c:641 -#, c-format -msgid "%5d samples (2 channels)" +#: src/emc/rs274ngc/interp_check.cc:310 +msgid "" +"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " +"M53 M62 M63 M64 M65 M66 or user M code to use it" msgstr "" -#: src/hal/utils/scope_horiz.c:645 -#, c-format -msgid "%5d samples (4 channels)" +#: src/emc/rs274ngc/interp_check.cc:315 +msgid "P value not an integer with M19 G2 or G3" msgstr "" -#: src/hal/utils/scope_horiz.c:649 -#, c-format -msgid "%5d samples (8 channels)" +#: src/emc/rs274ngc/interp_check.cc:317 +msgid "P value must be 0,1,or 2 with M19" msgstr "" -#: src/hal/utils/scope_horiz.c:653 -#, c-format -msgid "%5d samples (16 channels)" +#: src/emc/rs274ngc/interp_check.cc:319 +msgid "P value should be 1 or greater with G2 or G3" msgstr "" -#: src/hal/utils/scope_horiz.c:708 src/hal/utils/scope_horiz.c:754 -#: src/hal/utils/scope_horiz.c:966 src/hal/utils/scope_vert.c:761 -#: src/hal/utils/scope_vert.c:853 tcl/bin/emccalib.tcl:227 -#: tcl/bin/genedit.tcl:180 tcl/bin/genedit.tcl:450 tcl/bin/halconfig.tcl:682 -#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:257 -#: tcl/bin/pickconfig.tcl:479 tcl/bin/pickconfig.tcl:506 tcl/mini.tcl:1456 -#: tcl/mini.tcl:2937 tcl/tklinuxcnc.tcl:160 tcl/tklinuxcnc.tcl:245 -#: tcl/tklinuxcnc.tcl:419 tcl/tklinuxcnc.tcl:1338 tcl/tklinuxcnc.tcl:1407 -#: tcl/tklinuxcnc.tcl:1438 tcl/tklinuxcnc.tcl:1469 tcl/tklinuxcnc.tcl:2017 -#: tcl/tklinuxcnc.tcl:2036 tcl/tklinuxcnc.tcl:2055 tcl/tklinuxcnc.tcl:2102 -#: src/emc/usr_intf/axis/scripts/axis.py:1077 -#: src/emc/usr_intf/axis/scripts/axis.py:1141 -#: src/emc/usr_intf/axis/scripts/axis.py:1458 -#: src/emc/usr_intf/axis/scripts/axis.py:2477 -#: src/emc/usr_intf/axis/scripts/axis.py:3336 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:718 -#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1720 -#: share/axis/tcl/axis.tcl:1757 -msgid "OK" -msgstr "OK" - -#: src/hal/utils/scope_horiz.c:713 src/hal/utils/scope_horiz.c:754 -#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 -msgid "Quit" -msgstr "Ukončiť" +#: src/emc/rs274ngc/interp_check.cc:327 +msgid "" +"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " +"code that uses it" +msgstr "" -#: src/hal/utils/scope_horiz.c:745 -msgid "Realtime thread(s) not running" +#: src/emc/rs274ngc/interp_check.cc:337 +msgid "R value must be within 0..360 with M19" msgstr "" -#: src/hal/utils/scope_horiz.c:746 -msgid "" -"HALSCOPE uses code in a realtime HAL thread to sample\n" -"signals for display. The HAL thread(s) are not running.\n" -"Threads are usually started by the application you are\n" -"attempting to run, or you can use the 'halcmd start' command.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Start the threads, then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +#: src/emc/rs274ngc/interp_convert.cc:139 +msgid "You must specify both X and Y coordinates for Control Points" msgstr "" -#: src/hal/utils/scope_horiz.c:779 -msgid "Pick log file to write to:" +#: src/emc/rs274ngc/interp_convert.cc:142 +msgid "Can specify P without X and Y only for the first control point" msgstr "" -#: src/hal/utils/scope_horiz.c:962 -msgid "Not enough channels" +#: src/emc/rs274ngc/interp_convert.cc:145 +msgid "Must specify positive weight P for every Control Point" msgstr "" -#: src/hal/utils/scope_horiz.c:963 -msgid "" -"This record length cannot handle the channels\n" -"that are currently enabled. Pick a shorter\n" -"record length that supports more channels." +#: src/emc/rs274ngc/interp_convert.cc:148 +msgid "Cannot make a NURBS with 0 feedrate" msgstr "" -#: src/hal/utils/scope_horiz.c:1051 -#, c-format -msgid "" -"%s\n" -"per div" +#: src/emc/rs274ngc/interp_convert.cc:183 +msgid "Cannot use G5.3 without G5.2 first" msgstr "" -#: src/hal/utils/scope_horiz.c:1066 +#: src/emc/rs274ngc/interp_convert.cc:184 #, c-format msgid "" -"%s samples\n" -"at %s" +"You must specify a number of control points at least equal to the order L = " +"%d" msgstr "" -#: src/hal/utils/scope_horiz.c:1170 -msgid "nSec" +#: src/emc/rs274ngc/interp_convert.cc:213 +msgid "Cannot convert spline with cutter radius compensation" msgstr "" -#: src/hal/utils/scope_horiz.c:1173 -msgid "uSec" +#: src/emc/rs274ngc/interp_convert.cc:223 +msgid "Splines must be in the XY plane" msgstr "" -#: src/hal/utils/scope_horiz.c:1177 -msgid "mSec" +#: src/emc/rs274ngc/interp_convert.cc:228 +msgid "Splines may not have motion in Z, A, B, or C" msgstr "" -#: src/hal/utils/scope_horiz.c:1181 -#: src/emc/usr_intf/pncconf/pncconf.glade:1953 -#: src/emc/usr_intf/pncconf/pncconf.glade:2825 -#: src/emc/usr_intf/pncconf/pncconf.glade:3706 -#: src/emc/usr_intf/pncconf/pncconf.glade:4587 -msgid "Sec" +#: src/emc/rs274ngc/interp_convert.cc:232 +msgid "Must specify both I and J with G5.1" msgstr "" -#: src/hal/utils/scope_horiz.c:1198 -#: src/emc/usr_intf/stepconf/stepconf.glade:3664 -#: src/emc/usr_intf/stepconf/stepconf.glade:4040 -#: src/emc/usr_intf/pncconf/pncconf.glade:8268 -#: src/emc/usr_intf/pncconf/pncconf.glade:8281 -#: src/emc/usr_intf/pncconf/pncconf.glade:8458 -msgid "Hz" +#: src/emc/rs274ngc/interp_convert.cc:251 +msgid "Must specify both I and J, or neither" msgstr "" -#: src/hal/utils/scope_horiz.c:1201 -msgid "KHz" +#: src/emc/rs274ngc/interp_convert.cc:262 +msgid "Must specify both P and Q with G5" msgstr "" -#: src/hal/utils/scope_horiz.c:1205 -msgid "Mhz" -msgstr "" - -#: src/hal/utils/scope_vert.c:403 src/hal/utils/scope_vert.c:1258 -#, fuzzy, c-format +#: src/emc/rs274ngc/interp_convert.cc:363 msgid "" -"Offset\n" -"%s" -msgstr "Doplnky" - -#: src/hal/utils/scope_vert.c:618 -msgid "Gain" -msgstr "" - -#: src/hal/utils/scope_vert.c:630 src/hal/utils/scope_trig.c:252 -msgid "Pos" +"The move just after exiting cutter compensation mode must be straight, not " +"an arc" msgstr "" -#: src/hal/utils/scope_vert.c:644 tcl/ngcgui_ttt.tcl:214 -#: src/emc/usr_intf/pncconf/pncconf.glade:57147 -msgid "Scale" +#: src/emc/rs274ngc/interp_convert.cc:371 +msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" msgstr "" -#: src/hal/utils/scope_vert.c:657 -msgid "Chan Off" +#: src/emc/rs274ngc/interp_convert.cc:383 +#: src/emc/rs274ngc/interp_convert.cc:4488 +msgid "Cannot feed with zero spindle speed in feed per rev mode" msgstr "" -#: src/hal/utils/scope_vert.c:713 -#, fuzzy -msgid "Set Offset" -msgstr "Určiť doplnok nástroja" - -#: src/hal/utils/scope_vert.c:714 +#: src/emc/rs274ngc/interp_convert.cc:394 +#: src/emc/rs274ngc/interp_convert.cc:400 +#: src/emc/rs274ngc/interp_convert.cc:409 +#: src/emc/rs274ngc/interp_convert.cc:415 +#: src/emc/rs274ngc/interp_convert.cc:424 +#: src/emc/rs274ngc/interp_convert.cc:430 #, c-format -msgid "" -"Set the vertical offset\n" -"for channel %d." +msgid "%c word missing in absolute center arc" msgstr "" -#: src/hal/utils/scope_vert.c:734 -msgid "AC Coupled" +#: src/emc/rs274ngc/interp_convert.cc:662 +msgid "" +"Radius of cutter compensation entry arc is not greater than the tool radius" msgstr "" -#: src/hal/utils/scope_vert.c:769 src/hal/utils/scope_vert.c:1171 -#: src/hal/utils/scope_trig.c:367 tcl/bin/emccalib.tcl:229 -#: tcl/bin/genedit.tcl:294 tcl/bin/halconfig.tcl:103 tcl/bin/halconfig.tcl:684 -#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:260 -#: tcl/bin/pickconfig.tcl:369 tcl/mini.tcl:1457 tcl/mini.tcl:2938 -#: tcl/mini.tcl:3110 tcl/tklinuxcnc.tcl:162 tcl/tklinuxcnc.tcl:213 -#: tcl/tklinuxcnc.tcl:420 tcl/tklinuxcnc.tcl:1339 tcl/tklinuxcnc.tcl:1408 -#: tcl/tklinuxcnc.tcl:1439 tcl/tklinuxcnc.tcl:1470 tcl/tklinuxcnc.tcl:2103 -#: src/emc/usr_intf/axis/scripts/axis.py:1404 -#: src/emc/usr_intf/axis/scripts/axis.py:1459 -#: src/emc/usr_intf/axis/scripts/axis.py:1646 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:720 -msgid "Cancel" -msgstr "ZrušiťAbbrechen" - -#: src/hal/utils/scope_vert.c:849 -#, fuzzy -msgid "Too many channels" -msgstr "Súbor nástrojov" - -#: src/hal/utils/scope_vert.c:850 +#: src/emc/rs274ngc/interp_convert.cc:882 +#: src/emc/rs274ngc/interp_convert.cc:892 src/emc/rs274ngc/interp_queue.cc:696 msgid "" -"You cannot add another channel.\n" -"\n" -"Either turn off one or more channels, or shorten\n" -"the record length to allow for more channels" +"Arc move in concave corner cannot be reached by the tool without gouging" msgstr "" -#: src/hal/utils/scope_vert.c:1026 -msgid "Select Channel Source" +#: src/emc/rs274ngc/interp_convert.cc:918 +msgid "Arc to arc motion is invalid because the arcs have the same center" msgstr "" -#: src/hal/utils/scope_vert.c:1027 -#, c-format +#: src/emc/rs274ngc/interp_convert.cc:921 msgid "" -"Select a pin, signal, or parameter\n" -"as the source for channel %d." -msgstr "" - -#: src/hal/utils/scope_vert.c:1059 -msgid "Pins" +"Arc to arc motion makes a corner the compensated tool can't fit in without " +"gouging" msgstr "" -#: src/hal/utils/scope_vert.c:1060 -#, fuzzy -msgid "Signals" -msgstr "Rozšíriť signály" - -#: src/hal/utils/scope_vert.c:1061 -#, fuzzy -msgid "Parameters" -msgstr "Súbor parametrov" - -#: src/hal/utils/scope_trig.c:110 +#: src/emc/rs274ngc/interp_convert.cc:1053 +#: src/emc/rs274ngc/interp_convert.cc:1057 +#: src/emc/rs274ngc/interp_convert.cc:1061 +#: src/emc/rs274ngc/interp_convert.cc:3945 +#: src/emc/rs274ngc/interp_convert.cc:3948 +#: src/emc/rs274ngc/interp_convert.cc:3951 src/emc/rs274ngc/interp_find.cc:97 #, c-format -msgid "Falling" +msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" msgstr "" -#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:275 -#, c-format -msgid "Rising" +#: src/emc/rs274ngc/interp_convert.cc:1563 +msgid "Cannot change control mode with cutter radius compensation on" msgstr "" -#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:283 -msgid "" -"Source\n" -"None" +#: src/emc/rs274ngc/interp_convert.cc:1676 +msgid "Cannot change coordinate systems with cutter radius compensation on" msgstr "" -#: src/hal/utils/scope_trig.c:124 +#: src/emc/rs274ngc/interp_convert.cc:1920 #, c-format -msgid "" -"Source\n" -"Chan %2d" +msgid "G%d.1 with no D word" msgstr "" -#: src/hal/utils/scope_trig.c:199 tcl/tklinuxcnc.tcl:827 -#: src/emc/usr_intf/touchy/touchy.glade:2469 -msgid "Auto" -msgstr "Automatika" - -#: src/hal/utils/scope_trig.c:201 -msgid "Force" +#: src/emc/rs274ngc/interp_convert.cc:1923 +#, c-format +msgid "G%d.1 with L word, but plane is not G18" msgstr "" -#: src/hal/utils/scope_trig.c:235 src/hal/utils/scope_trig.c:269 -msgid "Level" +#: src/emc/rs274ngc/interp_convert.cc:1934 +#, c-format +msgid "G%d requires D word to be a whole number" msgstr "" -#: src/hal/utils/scope_trig.c:303 -msgid "Trigger Source" +#: src/emc/rs274ngc/interp_convert.cc:1941 +#, c-format +msgid "G%d with lathe tool, but plane is not G18" msgstr "" -#: src/hal/utils/scope_trig.c:304 -msgid "Select a channel to use for triggering." +#: src/emc/rs274ngc/interp_convert.cc:2340 +msgid "Cannot set reference point with cutter compensation in effect" msgstr "" -#: src/hal/utils/scope_trig.c:327 -msgid "Chan" +#: src/emc/rs274ngc/interp_convert.cc:2859 +#, c-format +msgid "gen_restore G20/G21 failed: '%s'" msgstr "" -#: src/hal/utils/scope_trig.c:328 -msgid "Source" +#: src/emc/rs274ngc/interp_convert.cc:2907 +#, c-format +msgid "" +"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" msgstr "" -#: src/emc/motion/control.c:261 -msgid "Unexpected realtime delay: check dmesg for details." +#: src/emc/rs274ngc/interp_convert.cc:2908 +#, c-format +msgid "BUG: restore from level %d !?" msgstr "" -#: src/emc/motion/control.c:263 +#: src/emc/rs274ngc/interp_convert.cc:2909 #, c-format -msgid "" -"\n" -"In recent history there were\n" -"%ld, %ld, %ld, %ld, and %ld\n" -"elapsed clocks between calls to the motion controller.\n" +msgid "BUG: restore to level %d !?" msgstr "" -#: src/emc/motion/control.c:268 +#: src/emc/rs274ngc/interp_convert.cc:2928 #, c-format -msgid "" -"This time, there were %ld which is so anomalously\n" -"large that it probably signifies a problem with your\n" -"realtime configuration. For the rest of this run of\n" -"EMC, this message will be suppressed.\n" -"\n" +msgid "M7x: restore_settings G20/G21 failed: '%s'" msgstr "" -#: src/emc/motion/control.c:384 -msgid "G38.4 move finished without breaking contact." +#: src/emc/rs274ngc/interp_convert.cc:2946 +#, c-format +msgid "M7x: restore_settings failed executing: '%s': %s" msgstr "" -#: src/emc/motion/control.c:387 -msgid "G38.2 move finished without making contact." +#: src/emc/rs274ngc/interp_convert.cc:3005 +#, c-format +msgid "Failed to restore interp state on abort '%s': %s" msgstr "" -#: src/emc/motion/control.c:401 -msgid "Probe tripped during non-probe MDI command." +#: src/emc/rs274ngc/interp_convert.cc:3069 +msgid "No valid P word with M62" msgstr "" -#: src/emc/motion/control.c:429 -msgid "Probe tripped during homing motion." +#: src/emc/rs274ngc/interp_convert.cc:3072 +msgid "No valid P word with M63" msgstr "" -#: src/emc/motion/control.c:433 -msgid "Probe tripped during a jog." +#: src/emc/rs274ngc/interp_convert.cc:3075 +msgid "No valid P word with M64" msgstr "" -#: src/emc/motion/control.c:578 -#, c-format -msgid "fault %d during orient in progress" +#: src/emc/rs274ngc/interp_convert.cc:3078 +msgid "No valid P word with M65" msgstr "" -#: src/emc/motion/control.c:718 -msgid "motion stopped by enable input" +#: src/emc/rs274ngc/interp_convert.cc:3111 +msgid "invalid P-word with M66" msgstr "" -#: src/emc/motion/control.c:741 -#, c-format -msgid "joint %d on limit switch error" +#: src/emc/rs274ngc/interp_convert.cc:3126 +msgid "Cannot wait for digital input with cutter radius compensation on" msgstr "" -#: src/emc/motion/control.c:753 -#, c-format -msgid "joint %d amplifier fault" +#: src/emc/rs274ngc/interp_convert.cc:3138 +msgid "Cannot wait for analog input with cutter radius compensation on" msgstr "" -#: src/emc/motion/control.c:762 -#, c-format -msgid "joint %d following error" +#: src/emc/rs274ngc/interp_convert.cc:3152 +msgid "Invalid analog index with M67" msgstr "" -#: src/emc/motion/control.c:1444 -#, c-format -msgid "Exceeded positive soft limit on joint %d" +#: src/emc/rs274ngc/interp_convert.cc:3157 +msgid "Invalid analog index with M68" msgstr "" -#: src/emc/motion/control.c:1449 -#, c-format -msgid "Exceeded negative soft limit on joint %d" +#: src/emc/rs274ngc/interp_convert.cc:3188 +msgid "Need non-negative Q-word to specify tool number with M61" msgstr "" -#: src/emc/motion/command.c:159 -#, c-format -msgid "Can't jog invalid joint number %d." +#: src/emc/rs274ngc/interp_convert.cc:3258 +msgid "Q word with M19 requires a value > 0" msgstr "" -#: src/emc/motion/command.c:163 -#, c-format -msgid "Can't jog joint %d further past max hard limit." +#: src/emc/rs274ngc/interp_convert.cc:3286 +msgid "Cannot restore context from invalid stack frame - missing M70/M73?" msgstr "" -#: src/emc/motion/command.c:168 -#, c-format -msgid "Can't jog joint %d further past min hard limit." +#: src/emc/rs274ngc/interp_convert.cc:3327 +#: src/emc/rs274ngc/interp_convert.cc:3344 +#: src/emc/rs274ngc/interp_convert.cc:3359 +#: src/emc/rs274ngc/interp_convert.cc:3373 +#: src/emc/rs274ngc/interp_convert.cc:3387 +msgid "Cannot enable overrides with cutter radius compensation on" msgstr "" -#: src/emc/motion/command.c:174 -#, c-format -msgid "Can't jog joint %d further past max soft limit." +#: src/emc/rs274ngc/interp_convert.cc:3334 +#: src/emc/rs274ngc/interp_convert.cc:3349 +#: src/emc/rs274ngc/interp_convert.cc:3364 +#: src/emc/rs274ngc/interp_convert.cc:3378 +#: src/emc/rs274ngc/interp_convert.cc:3392 +msgid "Cannot disable overrides with cutter radius compensation on" msgstr "" -#: src/emc/motion/command.c:179 +#: src/emc/rs274ngc/interp_convert.cc:3506 +#: src/emc/rs274ngc/interp_convert.cc:3507 +#: src/emc/rs274ngc/interp_convert.cc:3508 #, c-format -msgid "Can't jog joint %d further past min soft limit." +msgid "Indexing axis %c can only be moved with G0" msgstr "" -#: src/emc/motion/command.c:237 +#: src/emc/rs274ngc/interp_convert.cc:3515 +#: src/emc/rs274ngc/interp_convert.cc:3517 +#: src/emc/rs274ngc/interp_convert.cc:3519 #, c-format -msgid "%s move on line %d would exceed joint %d's positive limit" +msgid "Indexing axis %c can only be moved alone" msgstr "" -#: src/emc/motion/command.c:240 -#, c-format -msgid "%s move in MDI would exceed joint %d's positive limit" +#: src/emc/rs274ngc/interp_convert.cc:3621 +msgid "Cannot probe with feed per rev mode" msgstr "" -#: src/emc/motion/command.c:247 -#, c-format -msgid "%s move on line %d would exceed joint %d's negative limit" +#: src/emc/rs274ngc/interp_convert.cc:3669 +msgid "Cannot change retract mode with cutter radius compensation on" msgstr "" -#: src/emc/motion/command.c:250 -#, c-format -msgid "%s move in MDI would exceed joint %d's negative limit" +#: src/emc/rs274ngc/interp_convert.cc:3703 +msgid "G10 L1 without offsets has no effect" msgstr "" -#: src/emc/motion/command.c:500 -msgid "all joints must be homed before going into coordinated mode" +#: src/emc/rs274ngc/interp_convert.cc:3809 +msgid "Q number in G10 is not an integer" msgstr "" -#: src/emc/motion/command.c:521 -msgid "all joints must be homed before going into teleop mode" +#: src/emc/rs274ngc/interp_convert.cc:3810 +msgid "Invalid tool orientation" msgstr "" -#: src/emc/motion/command.c:675 src/emc/motion/command.c:741 -#: src/emc/motion/command.c:814 -msgid "Can't jog joint in coordinated mode." +#: src/emc/rs274ngc/interp_convert.cc:3933 +msgid "I J words not allowed with G10 L2" msgstr "" -#: src/emc/motion/command.c:680 src/emc/motion/command.c:746 -#: src/emc/motion/command.c:819 -msgid "Can't jog joint when not enabled." +#: src/emc/rs274ngc/interp_convert.cc:3954 +msgid "" +"Cannot change the active coordinate system with cutter radius compensation on" msgstr "" -#: src/emc/motion/command.c:685 src/emc/motion/command.c:824 -msgid "Can't jog any joints while homing." +#: src/emc/rs274ngc/interp_convert.cc:3962 +msgid "R not allowed in G10 L20" msgstr "" -#: src/emc/motion/command.c:751 -msgid "Can't jog any joint while homing." +#: src/emc/rs274ngc/interp_convert.cc:4550 +msgid "Spindle not turning in G33" msgstr "" -#: src/emc/motion/command.c:881 -msgid "need to be enabled, in coord mode for linear move" +#: src/emc/rs274ngc/interp_convert.cc:4560 +msgid "Spindle not turning in G33.1" msgstr "" -#: src/emc/motion/command.c:891 -msgid "can't do linear move with limits exceeded" +#: src/emc/rs274ngc/interp_convert.cc:4603 +msgid "BUG: An axis incorrectly moved along with an indexer" msgstr "" -#: src/emc/motion/command.c:910 -msgid "can't add linear move" +#: src/emc/rs274ngc/interp_convert.cc:4616 +msgid "BUG: trying to index incorrect axis" msgstr "" -#: src/emc/motion/command.c:930 -msgid "need to be enabled, in coord mode for circular move" +#: src/emc/rs274ngc/interp_convert.cc:4708 +msgid "Cannot use G76 threading cycle with cutter radius compensation on" msgstr "" -#: src/emc/motion/command.c:940 -msgid "can't do circular move with limits exceeded" +#: src/emc/rs274ngc/interp_convert.cc:4711 +msgid "In G76, I must not be 0" msgstr "" -#: src/emc/motion/command.c:958 -msgid "can't add circular move" +#: src/emc/rs274ngc/interp_convert.cc:4713 +msgid "In G76, J must be greater than 0" msgstr "" -#: src/emc/motion/command.c:1048 -msgid "MOTION: can't STEP while already executing" +#: src/emc/rs274ngc/interp_convert.cc:4715 +msgid "In G76, K must be greater than J" msgstr "" -#: src/emc/motion/command.c:1140 -msgid "can't enable motion, enable input is false" +#: src/emc/rs274ngc/interp_convert.cc:4858 +msgid "" +"Length of cutter compensation entry move is not greater than the tool radius" msgstr "" -#: src/emc/motion/command.c:1213 -msgid "must be in joint mode to home" +#: src/emc/rs274ngc/interp_convert.cc:5077 +msgid "Zero degree inside corner is invalid for cutter compensation" msgstr "" -#: src/emc/motion/command.c:1224 src/emc/motion/command.c:1235 -msgid "homing sequence already in progress" +#: src/emc/rs274ngc/interp_convert.cc:5115 +#: src/emc/rs274ngc/interp_convert.cc:5123 +msgid "" +"Arc to straight motion makes a corner the compensated tool can't fit in " +"without gouging" msgstr "" -#: src/emc/motion/command.c:1233 -msgid "homing already in progress" +#: src/emc/rs274ngc/interp_convert.cc:5207 +msgid "Cannot change tools with cutter radius compensation on" msgstr "" -#: src/emc/motion/command.c:1263 -msgid "must be in joint mode or disabled to unhome" +#: src/emc/rs274ngc/interp_convert.cc:5328 +msgid "Cannot change tool offset with cutter radius compensation on" msgstr "" -#: src/emc/motion/command.c:1275 src/emc/motion/command.c:1298 +#: src/emc/rs274ngc/interp_queue.cc:694 #, c-format -msgid "Cannot unhome while homing, joint %d" +msgid "" +"BUG: cutter compensation has generated an invalid arc with mismatched radii " +"r1 %f r2 %f\n" msgstr "" -#: src/emc/motion/command.c:1279 src/emc/motion/command.c:1302 -#, c-format -msgid "Cannot unhome while moving, joint %d" +#: src/emc/rs274ngc/interp_queue.cc:716 +msgid "BUG: Unsupported plane in cutter compensation" msgstr "" -#: src/emc/motion/command.c:1307 -#, c-format -msgid "Cannot unhome inactive joint %d" +#: src/emc/rs274ngc/interp_queue.cc:729 +msgid "" +"Straight traverse in concave corner cannot be reached by the tool without " +"gouging" msgstr "" -#: src/emc/motion/command.c:1311 +#: src/emc/rs274ngc/interp_queue.cc:757 #, c-format -msgid "Cannot unhome invalid joint %d (max %d)" +msgid "BUG: Unsupported plane [%d] in cutter compensation" msgstr "" -#: src/emc/motion/command.c:1338 -msgid "need to be enabled, in coord mode for probe move" +#: src/emc/rs274ngc/interp_queue.cc:771 +msgid "" +"Straight feed in concave corner cannot be reached by the tool without gouging" msgstr "" -#: src/emc/motion/command.c:1348 -msgid "can't do probe move with limits exceeded" +#: src/emc/rs274ngc/interp_cycles.cc:630 +msgid "Cannot feed with zero feed rate" msgstr "" -#: src/emc/motion/command.c:1362 -msgid "Probe is already clear when starting G38.4 or G38.5 move" +#: src/emc/rs274ngc/interp_cycles.cc:631 +msgid "Cannot use inverse time feed with canned cycles" msgstr "" -#: src/emc/motion/command.c:1364 -msgid "Probe is already tripped when starting G38.2 or G38.3 move" +#: src/emc/rs274ngc/interp_cycles.cc:632 +msgid "Cannot use canned cycles with cutter compensation on" msgstr "" -#: src/emc/motion/command.c:1376 -msgid "can't add probe move" +#: src/emc/rs274ngc/interp_cycles.cc:829 +msgid "G17 canned cycle is not possible on a machine without Z axis" msgstr "" -#: src/emc/motion/command.c:1400 -msgid "need to be enabled, in coord mode for rigid tap move" +#: src/emc/rs274ngc/interp_cycles.cc:1015 +msgid "G17.1 canned cycle is not possible on a machine without W axis" msgstr "" -#: src/emc/motion/command.c:1410 -msgid "can't do rigid tap move with limits exceeded" +#: src/emc/rs274ngc/interp_cycles.cc:1231 +msgid "G19 canned cycle is not possible on a machine without X axis" msgstr "" -#: src/emc/motion/command.c:1421 -msgid "can't add rigid tap move" +#: src/emc/rs274ngc/interp_cycles.cc:1399 +msgid "G19.1 canned cycle is not possible on a machine without U axis" msgstr "" -#: src/emc/motion/command.c:1435 -msgid "need to be enabled, in teleop mode for teleop move" +#: src/emc/rs274ngc/interp_cycles.cc:1624 +msgid "G18 canned cycle is not possible on a machine without Y axis" msgstr "" -#: src/emc/motion/command.c:1605 -#, c-format -msgid "joint %d: too many compensation entries" +#: src/emc/rs274ngc/interp_cycles.cc:1791 +msgid "G18.1 canned cycle is not possible on a machine without V axis" msgstr "" -#: src/emc/motion/command.c:1611 -#, c-format -msgid "joint %d: compensation values must increase" +#: src/emc/rs274ngc/interp_find.cc:170 +msgid "Cannot use polar coordinates with G53" msgstr "" -#: src/emc/motion/command.c:1640 -#, c-format -msgid "unrecognized command %d" +#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 +#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 +#: src/emc/rs274ngc/interp_find.cc:347 +msgid "Cannot specify X or Y words with polar coordinate" msgstr "" -#: src/emc/motion/motion.c:185 -msgid "MOTION: hal_init() failed\n" +#: src/emc/rs274ngc/interp_find.cc:272 +msgid "Must specify angle in polar coordinate if at the origin" msgstr "" -#: src/emc/motion/motion.c:190 -#, c-format -msgid "MOTION: num_joints is %d, must be between 1 and %d\n" +#: src/emc/rs274ngc/interp_find.cc:338 +msgid "" +"Incremental motion with polar coordinates is indeterminate when at the origin" msgstr "" -#: src/emc/motion/motion.c:197 -#, c-format -msgid "MOTION: num_dio is %d, must be between 1 and %d\n" +#: src/emc/rs274ngc/interp_find.cc:348 +msgid "G91 motion with polar coordinates is indeterminate when at the origin" msgstr "" -#: src/emc/motion/motion.c:204 +#: src/emc/rs274ngc/interp_find.cc:720 #, c-format -msgid "MOTION: num_aio is %d, must be between 1 and %d\n" +msgid "Requested tool %d not found in the tool table" msgstr "" -#: src/emc/motion/motion.c:212 -msgid "MOTION: init_hal_io() failed\n" +#: src/emc/rs274ngc/interp_internal.cc:161 +msgid "Cannot use polar coordinate on a machine lacking X or Y axes" msgstr "" -#: src/emc/motion/motion.c:221 -msgid "MOTION: init_comm_buffers() failed\n" +#: src/emc/rs274ngc/interp_internal.cc:162 +msgid "Cannot use polar coordinate except in G17 plane" msgstr "" -#: src/emc/motion/motion.c:229 -msgid "MOTION: init_threads() failed\n" +#: src/emc/rs274ngc/interp_internal.cc:163 +msgid "Cannot specify both polar coordinate and X word" msgstr "" -#: src/emc/motion/motion.c:254 -#, c-format -msgid "MOTION: hal_stop_threads() failed, returned %d\n" +#: src/emc/rs274ngc/interp_internal.cc:164 +msgid "Cannot specify both polar coordinate and Y word" +msgstr "" + +#: src/emc/rs274ngc/interp_internal.cc:185 +#: src/emc/rs274ngc/interp_internal.cc:199 +#: src/emc/rs274ngc/interp_internal.cc:214 +msgid "Polar coordinates can only be used for motion" msgstr "" -#: src/emc/motion/motion.c:260 +#: src/emc/rs274ngc/interp_read.cc:1150 src/emc/rs274ngc/interp_read.cc:1154 #, c-format -msgid "MOTION: rtapi_shmem_delete() failed, returned %d\n" +msgid "Bad character '\\%03o' used" msgstr "" -#: src/emc/motion/motion.c:266 +#: src/emc/rs274ngc/interp_read.cc:1154 #, c-format -msgid "MOTION: hal_exit() failed, returned %d\n" +msgid "Bad character '%c' used" msgstr "" -#: src/emc/motion/motion.c:289 -msgid "MOTION: emcmot_hal_data malloc failed\n" +#: src/emc/rs274ngc/interp_read.cc:1678 +msgid "Left bracket missing after 'while'" msgstr "" -#: src/emc/motion/motion.c:597 -#, c-format -msgid "MOTION: joint %d pin/param export failed\n" +#: src/emc/rs274ngc/interp_read.cc:1693 +msgid "Left bracket missing after 'repeat'" msgstr "" -#: src/emc/motion/homing.c:80 src/emc/motion/homing.c:748 -#, c-format -msgid "hit limit in home state %d" +#: src/emc/rs274ngc/interp_read.cc:1708 +msgid "Left bracket missing after 'if'" msgstr "" -#: src/emc/motion/homing.c:90 +#: src/emc/rs274ngc/interp_read.cc:1723 +msgid "Left bracket missing after 'elseif'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1926 +msgid "Cannot read current position with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1941 +#, fuzzy +msgid "Expected # reading parameter" +msgstr "Rozšíriť parametre" + +#: src/emc/rs274ngc/interp_read.cc:1943 +msgid "Expected ] reading bracketed parameter" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:2615 #, c-format -msgid "end of move in home state %d" +msgid "bad number format (conversion failed) parsing '%s'" msgstr "" -#: src/emc/motion/homing.c:185 +#: src/emc/rs274ngc/interp_read.cc:2616 #, c-format -msgid "unknown state '%d' during homing sequence" +msgid "bad number format (trailing characters) parsing '%s'" msgstr "" -#: src/emc/motion/homing.c:246 -msgid "Cannot home while shared home switch is closed" +#: src/emc/rs274ngc/interp_read.cc:2706 +msgid "Calculation resulted in 'not a number'" msgstr "" -#: src/emc/motion/homing.c:290 -msgid "" -"invalid homing config: non-zero LATCH_VEL needs either SEARCH_VEL or " -"USE_INDEX" +#: src/emc/rs274ngc/interp_read.cc:2708 +msgid "Calculation resulted in 'infinity'" msgstr "" -#: src/emc/motion/homing.c:299 -msgid "invalid homing config: non-zero SEARCH_VEL needs LATCH_VEL" +#: src/emc/rs274ngc/interp_read.cc:3001 +#, c-format +msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" msgstr "" -#: src/emc/motion/homing.c:447 -msgid "Home switch inactive before start of backoff move" +#: src/emc/rs274ngc/interp_read.cc:3113 +msgid "Multiple U words on one line" msgstr "" -#: src/emc/motion/homing.c:495 -msgid "Home switch active before start of latch move" +#: src/emc/rs274ngc/interp_read.cc:3129 +msgid "Multiple V words on one line" msgstr "" -#: src/emc/motion/homing.c:551 -msgid "Home switch inactive before start of latch move" +#: src/emc/rs274ngc/interp_read.cc:3145 +msgid "Multiple W words on one line" msgstr "" -#: src/emc/motion/homing.c:797 +#: src/emc/rs274ngc/interp_o_word.cc:97 #, c-format -msgid "unknown state '%d' during homing" +msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" msgstr "" -#: tcl/bin/emccalib.tcl:80 -#, fuzzy -msgid "LinuxCNC Servo Axis Calibration" -msgstr "Kalibrácia osi EMC2" +#: src/emc/rs274ngc/interp_o_word.cc:722 +#, c-format +msgid "%d: not in a subroutine definition: '%s'" +msgstr "" -#: tcl/bin/emccalib.tcl:90 -msgid "Save To File" -msgstr "Uložiť" +#: src/emc/rs274ngc/interp_o_word.cc:759 src/emc/rs274ngc/interp_o_word.cc:809 +#, c-format +msgid "%d: duplicate O-word label: '%s' - defined in line %d" +msgstr "" -#: tcl/bin/emccalib.tcl:106 tcl/bin/genedit.tcl:77 tcl/bin/halconfig.tcl:151 -#: tcl/bin/halshow.tcl:85 tcl/mini.tcl:2516 tcl/tklinuxcnc.tcl:719 -#: tcl/ngcgui.tcl:549 -msgid "File" -msgstr "Súbor" +#: src/emc/rs274ngc/interp_o_word.cc:862 +#, c-format +msgid "%d: duplicate O-word label - already defined in line %d: '%s'" +msgstr "" -#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:231 tcl/bin/halconfig.tcl:153 -#: tcl/mini.tcl:3558 src/emc/usr_intf/touchy/touchy.glade:2420 -msgid "Refresh" -msgstr "Obnoviť" +#: src/emc/rs274ngc/interp_o_word.cc:886 src/emc/rs274ngc/interp_o_word.cc:944 +#: src/emc/rs274ngc/interp_o_word.cc:978 src/emc/rs274ngc/interp_o_word.cc:996 +#: src/emc/rs274ngc/interp_o_word.cc:1013 +#: src/emc/rs274ngc/interp_o_word.cc:1038 +#, c-format +msgid "%d: undefined O-word label: '%s'" +msgstr "" -#: tcl/bin/emccalib.tcl:110 tcl/bin/genedit.tcl:82 tcl/bin/halconfig.tcl:155 -#: tcl/mini.tcl:2535 -msgid "Save" -msgstr "Uložiť" +#: src/emc/rs274ngc/interp_o_word.cc:889 src/emc/rs274ngc/interp_o_word.cc:947 +#, c-format +msgid "%d: no matching 'if' label: '%s' (found '%s' in line %d)" +msgstr "" -#: tcl/bin/emccalib.tcl:159 tcl/bin/halconfig.tcl:623 -#, tcl-format -msgid "Tune %d" -msgstr "Tunning %d" +#: src/emc/rs274ngc/interp_o_word.cc:981 +#, c-format +msgid "%d: no matching label: '%s' (found '%s' in line %d): '%s'" +msgstr "" -#: tcl/bin/emccalib.tcl:160 tcl/bin/halconfig.tcl:628 -msgid "INI Name" -msgstr "INI-Názov" +#: src/emc/rs274ngc/interp_o_word.cc:999 src/emc/rs274ngc/interp_o_word.cc:1016 +#, c-format +msgid "%d: no matching while/do label: '%s' (found '%s' in line %d)" +msgstr "" -#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:629 -msgid "HAL's Value" -msgstr "Hodnota HAL" +#: src/emc/rs274ngc/interp_o_word.cc:1042 +#, c-format +msgid "%d: no matching label: '%s' (found '%s' in line %d)" +msgstr "" -#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:631 -msgid "Next Value" -msgstr "Ďalšia hodnota" +#: src/emc/rs274ngc/interp_namedparams.cc:166 +#, fuzzy, c-format +msgid "Named parameter #<%s> not defined" +msgstr "Načítať súbor parametra" -#: tcl/bin/emccalib.tcl:225 tcl/bin/halconfig.tcl:680 -#: tcl/bin/halconfig.tcl:731 -msgid "Test" -msgstr "Testovať" +#: src/emc/rs274ngc/interp_namedparams.cc:196 +#, fuzzy, c-format +msgid "cant open ini file '%s'" +msgstr "Nie je možné otvoriť %s." -#: tcl/bin/emccalib.tcl:358 tcl/bin/halconfig.tcl:883 -#, tcl-format -msgid "" -"The HAL parameter \n" -" %s \n" -" has changed. \n" -" Really quit?" +#: src/emc/rs274ngc/interp_namedparams.cc:213 +#, fuzzy, c-format +msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" +msgstr "Načítať súbor parametra" + +#: src/emc/rs274ngc/interp_namedparams.cc:237 +#, c-format +msgid "fetch_hal_param: hal_init(%s): %d" msgstr "" -"HAL Parameter \n" -"%s \n" -"sa zmenil. \n" -"Naozaj ukončiť?" -#: tcl/bin/emccalib.tcl:383 tcl/bin/halconfig.tcl:1170 -msgid "" -"Not permitted to save here.\n" -"\n" -" You need to copy a configuration to your home directory and work there." +#: src/emc/rs274ngc/interp_namedparams.cc:238 +#, c-format +msgid "fetch_hal_param: hal_ready(): %d" msgstr "" -"Tu nie je možné uložiť. \n" -"\n" -"Skopírujte nastavenia do vašej domácej zložky a pracujte tam." -#: tcl/bin/emccalib.tcl:457 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 -#: tcl/bin/pickconfig.tcl:544 tcl/bin/pickconfig.tcl:555 -#: tcl/scripts/Set_Coordinates.tcl:205 tcl/scripts/Set_Coordinates.tcl:228 -#, tcl-format -msgid "can't save %s" -msgstr "Nie je možné uložiť %s ." +#: src/emc/rs274ngc/interp_namedparams.cc:419 +#, c-format +msgid "Internal error: Could not assign #<%s>" +msgstr "" -#: tcl/bin/emcdebug.tcl:166 tcl/bin/emcdebug.tcl:177 -#, fuzzy -msgid "LinuxCNC Debug" -msgstr "EMC2 Debug" +#: src/emc/rs274ngc/interp_namedparams.cc:427 +#, c-format +msgid "Cannot assign to read-only parameter #<%s>" +msgstr "" -#: tcl/bin/emcdebug.tcl:185 -msgid "Invalid INI file entries" -msgstr "Nesprávne vstupy súboru INI" +#: src/emc/rs274ngc/interp_namedparams.cc:731 +#, c-format +msgid "BUG: lookup_named_param(%s): unhandled index=%fn" +msgstr "" -#: tcl/bin/emcdebug.tcl:186 -msgid "Configuration information" -msgstr "Informácie o nastavení" +#: src/emc/rs274ngc/rs274ngc_pre.cc:1407 src/emc/rs274ngc/rs274ngc_pre.cc:1482 +msgid "Queue is not empty after tool change" +msgstr "" -#: tcl/bin/emcdebug.tcl:187 -msgid "Use of defaults" -msgstr "Použiť pôvodné" +#: src/emc/rs274ngc/rs274ngc_pre.cc:1786 +#, c-format +msgid "Unable to open parameter file: '%s'" +msgstr "" -#: tcl/bin/emcdebug.tcl:188 -msgid "Version information" -msgstr "Informácie o verzii" +#: src/emc/rs274ngc/rs274ngc_return.hh:19 +msgid "A file is already open" +msgstr "" -#: tcl/bin/emcdebug.tcl:189 -msgid "Command issuing" -msgstr "Zadávam príkaz" +#: src/emc/rs274ngc/rs274ngc_return.hh:21 +msgid "All axes missing with g52 or g92" +msgstr "" -#: tcl/bin/emcdebug.tcl:190 -msgid "IO points" -msgstr "IO piny" +#: src/emc/rs274ngc/rs274ngc_return.hh:22 +msgid "All axes missing with motion code" +msgstr "" -#: tcl/bin/emcdebug.tcl:191 -msgid "NML" -msgstr "NML" +#: src/emc/rs274ngc/rs274ngc_return.hh:23 +msgid "Arc radius too small to reach end point" +msgstr "" -#: tcl/bin/emcdebug.tcl:192 -msgid "Motion time" -msgstr "Čas pohybu" +#: src/emc/rs274ngc/rs274ngc_return.hh:24 +msgid "Argument to acos out of range" +msgstr "" -#: tcl/bin/emcdebug.tcl:193 src/emc/usr_intf/axis/scripts/debuglevel.py:42 -msgid "Interpreter" -msgstr "Interpret" +#: src/emc/rs274ngc/rs274ngc_return.hh:25 +msgid "Argument to asin out of range" +msgstr "" -#: tcl/bin/emcdebug.tcl:194 -msgid "RCS" -msgstr "RCS" +#: src/emc/rs274ngc/rs274ngc_return.hh:26 +msgid "Attempt to divide by zero" +msgstr "" -#: tcl/bin/emcdebug.tcl:195 -msgid "Trajectory level" -msgstr "Stav Trajektórie" +#: src/emc/rs274ngc/rs274ngc_return.hh:27 +msgid "Attempt to raise negative to non integer power" +msgstr "" -#: tcl/bin/emcdebug.tcl:196 -msgid "Interpreter list" -msgstr "Zoznam interpretov" +#: src/emc/rs274ngc/rs274ngc_return.hh:28 +msgid "Bad format unsigned integer" +msgstr "" -#: tcl/bin/genedit.tcl:78 tcl/mini.tcl:2533 -msgid "New" -msgstr "Nový" +#: src/emc/rs274ngc/rs274ngc_return.hh:29 +msgid "Bad number format" +msgstr "" -#: tcl/bin/genedit.tcl:80 tcl/mini.tcl:1667 tcl/mini.tcl:2534 -#: tcl/tklinuxcnc.tcl:720 tcl/tklinuxcnc.tcl:1657 -msgid "Open..." -msgstr "Otvoriť..." +#: src/emc/rs274ngc/rs274ngc_return.hh:30 +msgid "Bug bad g code modal group 0" +msgstr "" -#: tcl/bin/genedit.tcl:84 tcl/mini.tcl:2536 -msgid "Save As..." -msgstr "Uložiť ako..." +#: src/emc/rs274ngc/rs274ngc_return.hh:31 +msgid "Bug code not g0 or g1" +msgstr "" -#: tcl/bin/genedit.tcl:87 tcl/bin/halconfig.tcl:165 tcl/bin/halshow.tcl:92 -#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1243 -#: tcl/ngcgui.tcl:3680 -msgid "Exit" -msgstr "Ukončiť" +#: src/emc/rs274ngc/rs274ngc_return.hh:32 +msgid "Bug code not g17 g18 or g19" +msgstr "" -#: tcl/bin/genedit.tcl:91 tcl/mini.tcl:2517 -msgid "Edit" -msgstr "Upraviť" +#: src/emc/rs274ngc/rs274ngc_return.hh:33 +msgid "Bug code not g20 or g21" +msgstr "" -#: tcl/bin/genedit.tcl:92 tcl/mini.tcl:2543 -msgid "Cut" -msgstr "Vystrihnúť" +#: src/emc/rs274ngc/rs274ngc_return.hh:34 +msgid "Bug code not g28 or g30" +msgstr "" -#: tcl/bin/genedit.tcl:94 tcl/mini.tcl:2544 -msgid "Copy" -msgstr "Kopírovať" +#: src/emc/rs274ngc/rs274ngc_return.hh:35 +msgid "Bug code not g2 or g3" +msgstr "" -#: tcl/bin/genedit.tcl:96 tcl/mini.tcl:2545 -msgid "Paste" -msgstr "Vložiť" +#: src/emc/rs274ngc/rs274ngc_return.hh:37 +msgid "Bug code not g4 g10 g28 g30 g52 g53 or g92 series" +msgstr "" -#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:68 -msgid "Select All" -msgstr "Vybrať všetky" +#: src/emc/rs274ngc/rs274ngc_return.hh:38 +msgid "Bug code not g61 g61.1 or g64" +msgstr "" -#: tcl/bin/genedit.tcl:104 tcl/bin/halconfig.tcl:192 tcl/mini.tcl:919 -#: tcl/mini.tcl:2519 tcl/tklinuxcnc.tcl:790 -msgid "Help" -msgstr "Pomoc" +#: src/emc/rs274ngc/rs274ngc_return.hh:39 +msgid "Bug code not g90 or g91" +msgstr "" -#: tcl/bin/genedit.tcl:105 tcl/mini.tcl:1011 tcl/mini.tcl:2559 -#: tcl/tklinuxcnc.tcl:796 -msgid "About..." -msgstr "O..." +#: src/emc/rs274ngc/rs274ngc_return.hh:40 +msgid "Bug code not g98 or g99" +msgstr "" -#: tcl/bin/genedit.tcl:130 -msgid "Save and Reload" -msgstr "Uložiť a znovu načítať" +#: src/emc/rs274ngc/rs274ngc_return.hh:41 +msgid "Bug code not in g52 or g92 series" +msgstr "" -#: tcl/bin/genedit.tcl:133 tcl/mini.tcl:2550 -msgid "Find..." -msgstr "Nájsť..." +#: src/emc/rs274ngc/rs274ngc_return.hh:42 +msgid "Bug code not in range g54 to g593" +msgstr "" -#: tcl/bin/genedit.tcl:135 tcl/mini.tcl:2552 -msgid "Renumber File..." -msgstr "Zmeniť číslo súboru..." +#: src/emc/rs274ngc/rs274ngc_return.hh:43 +msgid "Bug code not m0 m1 m2 m30 m60" +msgstr "" -#: tcl/bin/genedit.tcl:140 tcl/mini.tcl:917 tcl/mini.tcl:2518 -#: tcl/tklinuxcnc.tcl:746 -msgid "Settings" -msgstr "Nastavenia" +#: src/emc/rs274ngc/rs274ngc_return.hh:44 +msgid "Bug distance mode not g90 or g91" +msgstr "" -#: tcl/bin/genedit.tcl:141 tcl/mini.tcl:2554 -msgid "No Numbering" -msgstr "Žiadne číslovanie" +#: src/emc/rs274ngc/rs274ngc_return.hh:45 +msgid "Bug function should not have been called" +msgstr "" -#: tcl/bin/genedit.tcl:144 tcl/mini.tcl:2556 -msgid "Line Numbering..." -msgstr "Číslovanie riadkov..." +#: src/emc/rs274ngc/rs274ngc_return.hh:46 +msgid "Bug in tool radius comp" +msgstr "" -#: tcl/bin/genedit.tcl:150 tcl/tklinuxcnc.tcl:768 -msgid "Scripts" -msgstr "Skripty" +#: src/emc/rs274ngc/rs274ngc_return.hh:47 +msgid "Bug plane not xy yz or xz" +msgstr "" -#: tcl/bin/genedit.tcl:177 -msgid "About TkEditor" -msgstr "O TkEditore" +#: src/emc/rs274ngc/rs274ngc_return.hh:48 +msgid "Bug side not right or left" +msgstr "" -#: tcl/bin/genedit.tcl:179 -msgid "" -"TkEditor\n" -"\n" -"Simple Tcl/Tk Text Editor\n" -"\n" -"GPL Version 2" +#: src/emc/rs274ngc/rs274ngc_return.hh:49 +msgid "Bug unknown motion code" msgstr "" -"TkEditor\n" -"\n" -"Jednoduchý Tcl/Tk Editor Textu\n" -"\n" -"GPL Version 2" -#: tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 tcl/mini.tcl:1775 -#: tcl/tklinuxcnc.tcl:451 src/emc/task/emctaskmain.cc:2072 -#, c-format, tcl-format -msgid "can't open %s" -msgstr "Nie je možné otvoriť %s." +#: src/emc/rs274ngc/rs274ngc_return.hh:50 +msgid "Bug unknown operation" +msgstr "" -#: tcl/bin/genedit.tcl:267 tcl/mini.tcl:3090 -msgid "Find" -msgstr "Nájsť" +#: src/emc/rs274ngc/rs274ngc_return.hh:51 +msgid "Cannot change axis offsets with cutter radius comp" +msgstr "" -#: tcl/bin/genedit.tcl:270 -msgid "Find:" -msgstr "Nájsť:" +#: src/emc/rs274ngc/rs274ngc_return.hh:52 +msgid "Cannot create backup file" +msgstr "" -#: tcl/bin/genedit.tcl:276 -msgid "Replace:" -msgstr "Nahradiť." +#: src/emc/rs274ngc/rs274ngc_return.hh:53 +msgid "Cannot do g1 with zero feed rate" +msgstr "" -#: tcl/bin/genedit.tcl:282 -msgid "Find All" -msgstr "Nájsť všetky" +#: src/emc/rs274ngc/rs274ngc_return.hh:54 +msgid "Cannot do zero repeats of cycle" +msgstr "" -#: tcl/bin/genedit.tcl:285 tcl/mini.tcl:3113 -msgid "Replace All" -msgstr "Nahradiť všetky" +#: src/emc/rs274ngc/rs274ngc_return.hh:55 +msgid "Cannot make arc with zero feed rate" +msgstr "" -#: tcl/bin/genedit.tcl:288 -msgid "Skip This" -msgstr "Preskočiť" +#: src/emc/rs274ngc/rs274ngc_return.hh:56 +msgid "Cannot open backup file" +msgstr "" -#: tcl/bin/genedit.tcl:291 -msgid "Replace This" -msgstr "Nahradiť" +#: src/emc/rs274ngc/rs274ngc_return.hh:57 +msgid "Cannot open variable file" +msgstr "" -#: tcl/bin/genedit.tcl:297 -msgid "Clear" -msgstr "Vymazať" +#: src/emc/rs274ngc/rs274ngc_return.hh:58 +msgid "Cannot probe with cutter radius comp on" +msgstr "" -#: tcl/bin/genedit.tcl:422 tcl/mini.tcl:2640 -msgid "Set Line Numbering" -msgstr "Nastaviť číslovanie riadkov" +#: src/emc/rs274ngc/rs274ngc_return.hh:59 +msgid "Cannot probe with zero feed rate" +msgstr "" -#: tcl/bin/genedit.tcl:424 tcl/mini.tcl:2644 -msgid "Increment" -msgstr "Pričítať" +#: src/emc/rs274ngc/rs274ngc_return.hh:60 +msgid "Cannot put a b in canned cycle" +msgstr "" -#: tcl/bin/genedit.tcl:426 tcl/mini.tcl:2646 -msgid "One" -msgstr "Jeden" +#: src/emc/rs274ngc/rs274ngc_return.hh:61 +msgid "Cannot put a c in canned cycle" +msgstr "" -#: tcl/bin/genedit.tcl:429 tcl/mini.tcl:2648 -msgid "Two" -msgstr "Dva" +#: src/emc/rs274ngc/rs274ngc_return.hh:62 +msgid "Cannot put an a in canned cycle" +msgstr "" -#: tcl/bin/genedit.tcl:432 tcl/mini.tcl:2650 -msgid "Five" -msgstr "Päť" +#: src/emc/rs274ngc/rs274ngc_return.hh:63 +msgid "Cannot turn cutter radius comp on when on" +msgstr "" -#: tcl/bin/genedit.tcl:435 tcl/mini.tcl:2652 -msgid "Ten" -msgstr "Desať" +#: src/emc/rs274ngc/rs274ngc_return.hh:64 +msgid "Cannot use axis values with g80" +msgstr "" -#: tcl/bin/genedit.tcl:439 tcl/mini.tcl:2654 -msgid "Space" -msgstr "Medzera" +#: src/emc/rs274ngc/rs274ngc_return.hh:65 +msgid "Cannot use axis values without a g code that uses them" +msgstr "" -#: tcl/bin/genedit.tcl:441 tcl/mini.tcl:2656 -msgid "Single Space" -msgstr "Jedna medzera" +#: src/emc/rs274ngc/rs274ngc_return.hh:66 +msgid "Cannot use g28 or g30 with cutter radius comp" +msgstr "" -#: tcl/bin/genedit.tcl:444 tcl/mini.tcl:2658 -msgid "Double Space" -msgstr "Dve medzery" +#: src/emc/rs274ngc/rs274ngc_return.hh:67 +msgid "Cannot use g53 incremental" +msgstr "" -#: tcl/bin/genedit.tcl:447 tcl/mini.tcl:2660 -msgid "Tab Space" -msgstr "Medzera Tabulátorom" +#: src/emc/rs274ngc/rs274ngc_return.hh:68 +msgid "Cannot use g53 with cutter radius comp" +msgstr "" -#: tcl/bin/genedit.tcl:453 -msgid "Next Number:" -msgstr "Ďalšie číslo:" +#: src/emc/rs274ngc/rs274ngc_return.hh:69 +msgid "Cannot use two g codes that both use axis values" +msgstr "" -#: tcl/bin/genedit.tcl:474 tcl/mini.tcl:2668 -msgid "Renumber" -msgstr "Prečíslovať" +#: src/emc/rs274ngc/rs274ngc_return.hh:70 +#, fuzzy +msgid "Command too long" +msgstr "Zadaná pozícia" -#: tcl/bin/halconfig.tcl:88 tcl/bin/halshow.tcl:33 -msgid "HAL Configuration" -msgstr "Nastavenie HAL" +#: src/emc/rs274ngc/rs274ngc_return.hh:71 +msgid "Current point same as end point of arc" +msgstr "" -#: tcl/bin/halconfig.tcl:103 -msgid "Would you like to save your configuration before you exit?" -msgstr "Chcete uložiť vaše nastavenia kým skončíte?" +#: src/emc/rs274ngc/rs274ngc_return.hh:72 +msgid "Dwell time missing with g4" +msgstr "" -#: tcl/bin/halconfig.tcl:103 -msgid "Save All" -msgstr "Uložiť všetky" +#: src/emc/rs274ngc/rs274ngc_return.hh:73 +msgid "Dwell time p word missing with g82" +msgstr "" -#: tcl/bin/halconfig.tcl:103 -msgid "Save Tune" -msgstr "Uložiť tunning" +#: src/emc/rs274ngc/rs274ngc_return.hh:74 +msgid "Dwell time p word missing with g86" +msgstr "" -#: tcl/bin/halconfig.tcl:103 -msgid "Save as Netlist" -msgstr "Uložiť ako Netlist" +#: src/emc/rs274ngc/rs274ngc_return.hh:75 +msgid "Dwell time p word missing with g88" +msgstr "" -#: tcl/bin/halconfig.tcl:103 -msgid "Don't Save" -msgstr "Neuložiť" +#: src/emc/rs274ngc/rs274ngc_return.hh:76 +msgid "Dwell time p word missing with g89" +msgstr "" -#: tcl/bin/halconfig.tcl:132 -msgid "Show" -msgstr "Ukázať" +#: src/emc/rs274ngc/rs274ngc_return.hh:77 +msgid "Equal sign missing in parameter setting" +msgstr "" -#: tcl/bin/halconfig.tcl:133 -msgid "Watch" -msgstr "Pozorovať" +#: src/emc/rs274ngc/rs274ngc_return.hh:78 +msgid "F word missing with inverse time arc move" +msgstr "" -#: tcl/bin/halconfig.tcl:134 -msgid "Modify" -msgstr "Zmeniť " +#: src/emc/rs274ngc/rs274ngc_return.hh:79 +msgid "F word missing with inverse time g1 move" +msgstr "" -#: tcl/bin/halconfig.tcl:157 -msgid "Save INI Tuning" -msgstr "Uložiť INI tunning" +#: src/emc/rs274ngc/rs274ngc_return.hh:80 +msgid "File ended with no percent sign" +msgstr "" -#: tcl/bin/halconfig.tcl:159 -msgid "Save HAL Ini" -msgstr "Uložiť HAL Ini" +#: src/emc/rs274ngc/rs274ngc_return.hh:81 +msgid "File ended with no percent sign or program end" +msgstr "" -#: tcl/bin/halconfig.tcl:161 -msgid "Save HAL Net" -msgstr "Uložiť Hal Net" +#: src/emc/rs274ngc/rs274ngc_return.hh:82 +msgid "File name too long" +msgstr "" -#: tcl/bin/halconfig.tcl:163 -msgid "Save and Exit" -msgstr "Uložiť a ukončiť" +#: src/emc/rs274ngc/rs274ngc_return.hh:83 +msgid "G code out of range" +msgstr "" -#: tcl/bin/halconfig.tcl:168 tcl/mini.tcl:916 tcl/tklinuxcnc.tcl:739 -msgid "View" -msgstr "Náhľad" +#: src/emc/rs274ngc/rs274ngc_return.hh:84 +msgid "I word given for arc in yz plane" +msgstr "" -#: tcl/bin/halconfig.tcl:170 tcl/bin/halshow.tcl:104 -msgid "Expand Tree" -msgstr "Rozšíriť strom" +#: src/emc/rs274ngc/rs274ngc_return.hh:85 +msgid "I word missing with g87" +msgstr "" -#: tcl/bin/halconfig.tcl:172 tcl/bin/halshow.tcl:106 -msgid "Collapse Tree" -msgstr "Uzavrieť strom" +#: src/emc/rs274ngc/rs274ngc_return.hh:86 +msgid "J word given for arc in xz plane" +msgstr "" -#: tcl/bin/halconfig.tcl:175 tcl/bin/halshow.tcl:109 -msgid "Expand Pins" -msgstr "Rozšíriť piny" +#: src/emc/rs274ngc/rs274ngc_return.hh:87 +msgid "J word missing with g87" +msgstr "" -#: tcl/bin/halconfig.tcl:177 tcl/bin/halshow.tcl:111 -msgid "Expand Parameters" -msgstr "Rozšíriť parametre" +#: src/emc/rs274ngc/rs274ngc_return.hh:88 +msgid "K word given for arc in xy plane" +msgstr "" -#: tcl/bin/halconfig.tcl:179 tcl/bin/halshow.tcl:113 -msgid "Expand Signals" -msgstr "Rozšíriť signály" +#: src/emc/rs274ngc/rs274ngc_return.hh:89 +msgid "K word missing with g87" +msgstr "" -#: tcl/bin/halconfig.tcl:182 tcl/bin/halshow.tcl:116 -msgid "Erase Watch" -msgstr "Vymazať pohľad" +#: src/emc/rs274ngc/rs274ngc_return.hh:90 +msgid "Left bracket missing after slash with atan" +msgstr "" -#: tcl/bin/halconfig.tcl:194 tcl/mini.tcl:840 tcl/mini.tcl:2785 -msgid "About" -msgstr "O" +#: src/emc/rs274ngc/rs274ngc_return.hh:91 +msgid "Left bracket missing after unary operation name" +msgstr "" -#: tcl/bin/halconfig.tcl:196 -msgid "Main" -msgstr "Hlavné" +#: src/emc/rs274ngc/rs274ngc_return.hh:92 +#, c-format +msgid "M code greater than 199: M%d" +msgstr "" -#: tcl/bin/halconfig.tcl:476 -msgid "Enter HAL command :" -msgstr "Zadať príkaz HAL:" +#: src/emc/rs274ngc/rs274ngc_return.hh:93 +msgid "Mixed radius ijk format for arc" +msgstr "" -#: tcl/bin/halconfig.tcl:479 tcl/bin/halconfig.tcl:528 tcl/bin/halshow.tcl:354 -msgid "Execute" -msgstr "Vykonať" +#: src/emc/rs274ngc/rs274ngc_return.hh:94 +msgid "Multiple a words on one line" +msgstr "" -#: tcl/bin/halconfig.tcl:943 tcl/bin/halshow.tcl:405 -msgid "Select a node to show." -msgstr "Vyberte premennú pre zobrazenie." +#: src/emc/rs274ngc/rs274ngc_return.hh:95 +msgid "Multiple b words on one line" +msgstr "" -#: tcl/bin/halconfig.tcl:968 tcl/bin/halshow.tcl:429 -msgid "<-- Select a Leaf. Click on its name." -msgstr "Vyberte si. Kliknite na názov." +#: src/emc/rs274ngc/rs274ngc_return.hh:96 +msgid "Multiple c words on one line" +msgstr "" -#: tcl/bin/halconfig.tcl:1085 tcl/bin/halconfig.tcl:1095 -#: tcl/bin/halconfig.tcl:1102 tcl/bin/halconfig.tcl:1109 -#: tcl/bin/halconfig.tcl:1116 -#, tcl-format -msgid "Click a highlighted entry where %s should go." -msgstr "Kliknite na vysvietený vstup kde by malo ísť %s." +#: src/emc/rs274ngc/rs274ngc_return.hh:97 +msgid "Multiple d words on one line" +msgstr "" -#: tcl/bin/halconfig.tcl:1092 -msgid "Nothing to be done for parameters here. Try the tuning page" +#: src/emc/rs274ngc/rs274ngc_return.hh:98 +msgid "Multiple f words on one line" msgstr "" -"Tu nie je možné urobiť s parametrami nič. Skúste stránku optimalizovania" -#: tcl/bin/halconfig.tcl:1124 -#, tcl-format -msgid "%s is not a leaf, try again" -msgstr "%s nie je list, skúste znova" +#: src/emc/rs274ngc/rs274ngc_return.hh:99 +msgid "Multiple h words on one line" +msgstr "" -#: tcl/bin/halconfig.tcl:1281 -#, fuzzy -msgid "" -"Copyright Raymond E Henry. 2006\n" -"License: GPL Version 2\n" -"\n" -"Halconfig is an LinuxCNC configuration tool. It requires that you have " -"started an instance of linuxcnc.\n" -"\n" -"This script carries no warranty or liability for its use to the extent " -"allowed by law." +#: src/emc/rs274ngc/rs274ngc_return.hh:100 +msgid "Multiple i words on one line" msgstr "" -"Copyright Raymond E Henry. 2006\n" -"License: GPL Version 2\n" -"\n" -"Halconfig is an EMC2 configuration tool. It should be started from the emc2 " -"directory and will require that you have started an instance of emc2 or work " -"up a new configuration starting with a demo rt script.\n" -"\n" -"This script is not for the faint hearted and carries no warranty or " -"liability for its use to the extent allowed by law." -#: tcl/bin/halshow.tcl:69 -msgid " SHOW " -msgstr "UKÁZAŤ" +#: src/emc/rs274ngc/rs274ngc_return.hh:101 +msgid "Multiple j words on one line" +msgstr "" -#: tcl/bin/halshow.tcl:70 -msgid " WATCH " -msgstr "POZOROVAŤ" +#: src/emc/rs274ngc/rs274ngc_return.hh:102 +msgid "Multiple k words on one line" +msgstr "" -#: tcl/bin/halshow.tcl:90 -msgid "Load Watch List" +#: src/emc/rs274ngc/rs274ngc_return.hh:103 +msgid "Multiple l words on one line" msgstr "" -#: tcl/bin/halshow.tcl:102 -msgid "Tree View" -msgstr "Vetvený Pohľad" +#: src/emc/rs274ngc/rs274ngc_return.hh:104 +msgid "Multiple p words on one line" +msgstr "" -#: tcl/bin/halshow.tcl:349 -msgid "Test HAL command :" -msgstr "Vyskúšať príkaz HAL :" +#: src/emc/rs274ngc/rs274ngc_return.hh:105 +msgid "Multiple q words on one line" +msgstr "" -#: tcl/bin/halshow.tcl:544 -msgid "Load a watch list" +#: src/emc/rs274ngc/rs274ngc_return.hh:106 +msgid "Multiple r words on one line" msgstr "" -#: tcl/bin/halshow.tcl:567 -msgid "Save current watch list" +#: src/emc/rs274ngc/rs274ngc_return.hh:107 +msgid "Multiple s words on one line" msgstr "" -#: tcl/bin/halshow.tcl:581 -msgid "Commands may be tested here but they will NOT be saved" -msgstr "Tu môžete vyskúšať príkazy, ale NEBUDÚ uložené." +#: src/emc/rs274ngc/rs274ngc_return.hh:108 +msgid "Multiple t words on one line" +msgstr "" -#: tcl/bin/pickconfig.tcl:50 -msgid "" -"Can't find the bwidget 1.7 package. There is a debian bwidget package; " -"install \n" -"it with sudo apt-get install bwidget." +#: src/emc/rs274ngc/rs274ngc_return.hh:109 +msgid "Multiple x words on one line" msgstr "" -"Balík bwidget 1.7 nebol nájdený. \n" -"Je tu balík debian bwidget .\n" -"Môžete ho nainštalovať použitím sudo apt-get bwidget." -#: tcl/bin/pickconfig.tcl:178 -msgid "No details available." -msgstr "Nie sú dostupné žiadne detaily." +#: src/emc/rs274ngc/rs274ngc_return.hh:110 +msgid "Multiple y words on one line" +msgstr "" -#: tcl/bin/pickconfig.tcl:194 -#, fuzzy -msgid "LinuxCNC Configuration Selector" -msgstr "EMC2 Pomocník nastavenia" +#: src/emc/rs274ngc/rs274ngc_return.hh:111 +msgid "Multiple z words on one line" +msgstr "" -#: tcl/bin/pickconfig.tcl:215 -#, fuzzy -msgid "" -"Welcome to LinuxCNC.\n" -"\n" -"Select a machine configuration from the list on the left.\n" -"Details about the selected configuration will appear in the display on the " -"right.\n" -"Click 'OK' to run the selected configuration" +#: src/emc/rs274ngc/rs274ngc_return.hh:112 +msgid "Must use g0 or g1 with g53" msgstr "" -"Vitajte v EMC2.\n" -"\n" -"Vyberte konfiguráciu stroja zo zoznamu.\n" -"Detaily o vybranej konfigurácii sa objavia na displeji vpravo.\n" -"Stlačte 'OK' pre spustenie vybranej konfigurácie ." - -#: tcl/bin/pickconfig.tcl:271 -msgid "My Configurations" -msgstr "Moje konfigurácie" - -#: tcl/bin/pickconfig.tcl:274 -msgid "Sample Configurations" -msgstr "Príklady konfigurácií" -#: tcl/bin/pickconfig.tcl:332 -#, tcl-format -msgid "ERROR: no configurations found in path '%s'" -msgstr "CHYBA: Neboli nájdené žiadne konfigurácie na ceste %s." +#: src/emc/rs274ngc/rs274ngc_return.hh:113 +msgid "Negative argument to sqrt" +msgstr "" -#: tcl/bin/pickconfig.tcl:369 -msgid "Copy Configuration?" -msgstr "Skopírovať konfiguráciu?" +#: src/emc/rs274ngc/rs274ngc_return.hh:114 +msgid "Negative d word tool radius index used" +msgstr "" -#: tcl/bin/pickconfig.tcl:369 -#, tcl-format -msgid "" -"Would you like to copy the %s configuration to your home directory so you " -"can customize it?" +#: src/emc/rs274ngc/rs274ngc_return.hh:115 +msgid "Negative f word used" msgstr "" -"Chcete skopírovať %s konfiguráciu do vašej domovskej zložky aby ste ju potom " -"mohli zmeniť?" -#: tcl/bin/pickconfig.tcl:369 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:563 -msgid "Yes" -msgstr "Áno" +#: src/emc/rs274ngc/rs274ngc_return.hh:116 +msgid "Negative g code used" +msgstr "" -#: tcl/bin/pickconfig.tcl:479 -msgid "Configuration Copied" -msgstr "Konfigurácia skopírovaná" +#: src/emc/rs274ngc/rs274ngc_return.hh:117 +msgid "Negative h word used" +msgstr "" -#: tcl/bin/pickconfig.tcl:479 -#, fuzzy, tcl-format -msgid "" -"The configuration file has been copied to %s. Next time, choose this " -"location when starting LinuxCNC." +#: src/emc/rs274ngc/rs274ngc_return.hh:118 +msgid "Negative l word used" msgstr "" -"Súbor konfigurácie bol skopírovaný do %s. Nabudúce vyberte túto pozíciu pri " -"spúšťaní EMC2." -#: tcl/bin/pickconfig.tcl:506 -msgid "Shortcut Created" -msgstr "Odkaz vytvorený" +#: src/emc/rs274ngc/rs274ngc_return.hh:119 +msgid "Negative m code used" +msgstr "" -#: tcl/bin/pickconfig.tcl:506 -msgid "" -"A shortcut to this configuration file has been created on your desktop. You " -"can use it to automatically launch this configuration." +#: src/emc/rs274ngc/rs274ngc_return.hh:120 +msgid "Negative or zero q value used" msgstr "" -"Na pracovnej ploche bol vytvorený odkaz pre túto konfiguráciu. Môžete ho " -"použiť aby ste ju automaticky spustili." -#: tcl/bin/pickconfig.tcl:511 -msgid "Create Desktop Shortcut" -msgstr "Vytvoriť odkaz na ploche" +#: src/emc/rs274ngc/rs274ngc_return.hh:121 +msgid "Negative p word used" +msgstr "" -#: tcl/bin/tkbackplot.tcl:110 +#: src/emc/rs274ngc/rs274ngc_return.hh:122 #, fuzzy -msgid "TkLinuxCNC BackPlot" -msgstr "TkEMC Backplot" +msgid "Negative spindle speed used" +msgstr "Nastaviť zmenu rýchlosti vretena:" -#: tcl/bin/tkbackplot.tcl:125 -msgid "SETUP" -msgstr "NASTAVENIE" +#: src/emc/rs274ngc/rs274ngc_return.hh:123 +msgid "Negative tool id used" +msgstr "" -#: tcl/bin/tkbackplot.tcl:127 -msgid "RESET" -msgstr "RESET" +#: src/emc/rs274ngc/rs274ngc_return.hh:124 +msgid "Nested comment found" +msgstr "" -#: tcl/bin/tkbackplot.tcl:129 -msgid "CANCEL" -msgstr "ZRUŠIŤ" +#: src/emc/rs274ngc/rs274ngc_return.hh:125 +msgid "No characters found in reading real value" +msgstr "" -#: tcl/bin/tkbackplot.tcl:250 -msgid "AXIS" -msgstr "OS" +#: src/emc/rs274ngc/rs274ngc_return.hh:126 +msgid "Non integer value for integer" +msgstr "" -#: tcl/bin/tkbackplot.tcl:251 -msgid "OFFSET" -msgstr "OFFSET" +#: src/emc/rs274ngc/rs274ngc_return.hh:127 +msgid "Null missing after newline" +msgstr "" -#: tcl/bin/tkbackplot.tcl:252 -msgid "ANGLE" -msgstr "UHOL" +#: src/emc/rs274ngc/rs274ngc_return.hh:128 +#, fuzzy +msgid "Parameter file out of order" +msgstr "Súbor parametrov je %s" -#: tcl/bin/tkbackplot.tcl:253 -msgid "DIRECTION" -msgstr "SMER" +#: src/emc/rs274ngc/rs274ngc_return.hh:129 +msgid "Parameter number out of range" +msgstr "" -#: tcl/bin/tkbackplot.tcl:270 -msgid "SIZE :" -msgstr "VEĽKOSŤ" +#: src/emc/rs274ngc/rs274ngc_return.hh:130 +#, fuzzy +msgid "Parameter is readonly" +msgstr "Súbor parametrov" -#: tcl/mini.tcl:490 -#, tcl-format -msgid "JOG %s +" -msgstr "JOG %s +" +#: src/emc/rs274ngc/rs274ngc_return.hh:131 +msgid "Q word missing with g83" +msgstr "" -#: tcl/mini.tcl:491 -#, tcl-format -msgid "JOG %s -" -msgstr "JOG %s -" +#: src/emc/rs274ngc/rs274ngc_return.hh:132 +msgid "Queue is not empty after probing" +msgstr "" -#: tcl/mini.tcl:492 -#, tcl-format -msgid "" -"%s\n" -"\n" -"Z\n" -"E\n" -"R\n" -"O" +#: src/emc/rs274ngc/rs274ngc_return.hh:133 +msgid "R clearance plane unspecified in cycle" msgstr "" -"%s\n" -"\n" -"N\n" -"U\n" -"L\n" -"A" -#: tcl/mini.tcl:840 -msgid "" -"TkMini \n" -"\n" -"Tcl/Tk GUI for Enhanced Machine Controller\n" -"\n" -"GPL Copyright 2003 \n" -"Ray Henry \n" -"\n" -" 3D backplotter by Paul Corner \n" -" \n" -"This software comes with ABSOLUTELY NO GUARANTEE! \n" -"For details see the copyright.html file in this directory." +#: src/emc/rs274ngc/rs274ngc_return.hh:134 +msgid "R i j k words all missing for arc" msgstr "" -"TkMini \n" -"\n" -"Graphische Tcl/Tk Oberfläche für EMC2\n" -"\n" -"GPL Copyright 2003 \n" -"Ray Henry \n" -"\n" -" 3D backplotter by Paul Corner \n" -" \n" -"This software comes with ABSOLUTELY NO GUARANTEE!\n" -"For details see the copyright.html file in this directory." -#: tcl/mini.tcl:915 -msgid "Program" -msgstr "Program" +#: src/emc/rs274ngc/rs274ngc_return.hh:135 +msgid "R less than x in cycle in yz plane" +msgstr "" -#: tcl/mini.tcl:918 -msgid "Info" -msgstr "Info" +#: src/emc/rs274ngc/rs274ngc_return.hh:136 +msgid "R less than y in cycle in xz plane" +msgstr "" -#: tcl/mini.tcl:923 -msgid "Backplot" -msgstr "Backplot" +#: src/emc/rs274ngc/rs274ngc_return.hh:137 +msgid "R less than z in cycle in xy plane" +msgstr "" -#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:6125 -msgid "Editor" -msgstr "Editor" +#: src/emc/rs274ngc/rs274ngc_return.hh:138 +msgid "R word with no g code that uses it" +msgstr "" -#: tcl/mini.tcl:927 -msgid "Offsets" -msgstr "Doplnky" +#: src/emc/rs274ngc/rs274ngc_return.hh:139 +msgid "Slash missing after first atan argument" +msgstr "" -#: tcl/mini.tcl:929 -msgid "Tools" -msgstr "Nástroje" +#: src/emc/rs274ngc/rs274ngc_return.hh:140 +msgid "Spindle not turning clockwise in g84" +msgstr "" -#: tcl/mini.tcl:951 tcl/mini.tcl:3565 tcl/tklinuxcnc.tcl:732 -msgid "Reset" -msgstr "Resetovať" +#: src/emc/rs274ngc/rs274ngc_return.hh:141 +msgid "Spindle not turning in g86" +msgstr "" -#: tcl/mini.tcl:960 -msgid "Position Type" -msgstr "Typ polohy" +#: src/emc/rs274ngc/rs274ngc_return.hh:142 +msgid "Spindle not turning in g87" +msgstr "" -#: tcl/mini.tcl:962 -msgid "Tool Info" -msgstr "Informácie o nástroji" +#: src/emc/rs274ngc/rs274ngc_return.hh:143 +msgid "Spindle not turning in g88" +msgstr "" -#: tcl/mini.tcl:964 -msgid "Offset Info" -msgstr "Informácie o doplnku" +#: src/emc/rs274ngc/rs274ngc_return.hh:144 +msgid "Sscanf failed" +msgstr "" -#: tcl/mini.tcl:967 -msgid "Show Restart" -msgstr "Ukázať Reštart" +#: src/emc/rs274ngc/rs274ngc_return.hh:145 +msgid "Start point too close to probe point" +msgstr "" -#: tcl/mini.tcl:968 -msgid "Hide Restart" -msgstr "Schovať Reštart" +#: src/emc/rs274ngc/rs274ngc_return.hh:146 +msgid "Too many m codes on line" +msgstr "" -#: tcl/mini.tcl:970 -msgid "Show Split Right" +#: src/emc/rs274ngc/rs274ngc_return.hh:147 +msgid "Pocket max too large" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:148 +msgid "Tool radius not less than arc radius with comp" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:149 +msgid "Two g codes used from same modal group" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:150 +msgid "Two m codes used from same modal group" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:151 +#, c-format +msgid "Unable to open file <%s>" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:152 +msgid "Unclosed comment found" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:153 +msgid "Unclosed expression" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:154 +msgid "Unknown g code used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:155 +#, c-format +msgid "Unknown m code used: M%d" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:156 +msgid "Unknown operation" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:157 +msgid "Unknown operation name starting with a" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:158 +msgid "Unknown operation name starting with m" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:159 +msgid "Unknown operation name starting with o" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:160 +msgid "Unknown operation name starting with x" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:161 +msgid "Unknown word starting with a" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:162 +msgid "Unknown word starting with c" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:163 +msgid "Unknown word starting with e" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:164 +msgid "Unknown word starting with f" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:165 +msgid "Unknown word starting with l" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:166 +msgid "Unknown word starting with r" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:167 +msgid "Unknown word starting with s" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:168 +msgid "Unknown word starting with t" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:169 +msgid "Unknown word where unary operation could be" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:170 +msgid "X and y words missing for arc in xy plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:171 +msgid "X and z words missing for arc in xz plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:172 +msgid "X value unspecified in yz plane canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:173 +msgid "Y and z words missing for arc in yz plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:174 +msgid "Y value unspecified in xz plane canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:175 +msgid "Z value unspecified in xy plane canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:176 +msgid "Zero or negative argument to ln" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:177 +msgid "Zero radius arc" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:178 +msgid "K word missing with g33/g33.1" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:179 +msgid "F word used with a g33/g33.1" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:180 +msgid "Unknown operation name starting with e" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:181 +msgid "Unknown operation name starting with n" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:182 +msgid "Unknown operation name starting with g" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:183 +msgid "Unknown operation name starting with l" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:184 +msgid "Too many subroutine parameters" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:185 +msgid "Too many subroutine levels" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:186 +msgid "Bug: call stack underrun" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:187 +msgid "Unknown control command in o word" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:188 +msgid "Too many oword labels" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:189 +msgid "Unknown oword number" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:190 +msgid "Nested subroutine definition" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:191 +msgid "Not in subroutine definition" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:192 +msgid "File not open" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:193 +#, c-format +msgid "cannot reopen file %s - removed or renamed? (%s)" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:194 +msgid "Need tool prepared -Txx- for toolchange" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:195 +msgid "Cannot change planes with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:196 +msgid "Cutter radius compensation allowed only in XY, XZ planes" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:197 +msgid "P word missing with G76" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:198 +msgid "I J or K words missing with G76" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:199 +msgid "Cannot move rotary axes with G76" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:200 +msgid "Multiple e words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:201 +msgid "Named parameter not terminated" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:202 +msgid "Out of memory" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:203 +msgid "S word missing with G96" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:204 +msgid "Queue is not empty after external input" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:205 +msgid "Can't select analog input with wait type != immediate return" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:206 +msgid "Zero timeout with wait type != immediate return" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:207 +msgid "Invalid to select both a digital and an analog input with M66" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:208 +msgid "Need to have either a valid P or a valid E word with M66" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:209 +msgid "Q word missing with g73" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:210 +msgid "Digital input selected out of bounds" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:211 +msgid "Analog input selected out of bounds" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:212 +msgid "W value unspecified in UV plane canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:213 +msgid "U value unspecified in VW plane canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:214 +msgid "V value unspecified in UW plane canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:215 +msgid "R less than W in cycle in UV plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:216 +msgid "R less than U in cycle in VW plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:217 +msgid "R less than V in cycle in UW plane" +msgstr "" + +#: src/hal/utils/meter.c:200 +#, c-format +msgid "ERROR: '%s' is not a valid probe type\n" +msgstr "" + +#: src/hal/utils/meter.c:208 +#, c-format +msgid "ERROR: no pin/signal/parameter name\n" +msgstr "" + +#: src/hal/utils/meter.c:214 +#, c-format +msgid "" +"ERROR: -s option requires a probe type and a pin/signal/parameter name\n" +msgstr "" + +#: src/hal/utils/meter.c:240 tcl/tklinuxcnc.tcl:764 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6431 +msgid "Hal Meter" +msgstr "HAL-Meter" + +#: src/hal/utils/meter.c:290 +#, fuzzy +msgid "_Select" +msgstr "Vybrať všetky" + +#: src/hal/utils/meter.c:291 +msgid "E_xit" +msgstr "" + +#: src/hal/utils/meter.c:339 src/hal/utils/meter.c:367 +#, fuzzy +msgid "Select Item to Probe" +msgstr "Vyberte premennú pre zobrazenie." + +#: src/hal/utils/meter.c:669 +msgid " _Pins " +msgstr "" + +#: src/hal/utils/meter.c:670 +#, fuzzy +msgid " _Signals " +msgstr "Rozšíriť signály" + +#: src/hal/utils/meter.c:671 +#, fuzzy +msgid " Para_meters " +msgstr "Súbor parametrov" + +#: src/hal/utils/meter.c:714 +#, fuzzy +msgid "_Close" +msgstr "Ukončiť" + +#: src/hal/utils/scope.c:126 +msgid "" +"Usage:\n" +" halscope [-h] [-i infile] [-o outfile] [num_samples]\n" +msgstr "" + +#: src/hal/utils/scope.c:479 src/hal/utils/scope.c:506 +#, fuzzy +msgid "Open Configuration File:" +msgstr "Konfigurácia skopírovaná" + +#: src/hal/utils/scope.c:540 +#, fuzzy +msgid "_Open Configuration..." +msgstr "Príklady konfigurácií" + +#: src/hal/utils/scope.c:546 +#, fuzzy +msgid "_Save Configuration..." +msgstr "Príklady konfigurácií" + +#: src/hal/utils/scope.c:555 +msgid "O_pen Data File..." +msgstr "" + +#: src/hal/utils/scope.c:562 +#, fuzzy +msgid "S_ave Data File..." +msgstr "Uložiť" + +#: src/hal/utils/scope.c:571 share/axis/tcl/axis.tcl:96 +#, fuzzy +msgid "_Quit" +msgstr "Ukončiť" + +#: src/hal/utils/scope.c:577 +msgid "_About Halscope" +msgstr "" + +#: src/hal/utils/scope.c:583 share/axis/tcl/axis.tcl:501 +#, fuzzy +msgid "_File" +msgstr "Súbor" + +#: src/hal/utils/scope.c:587 share/axis/tcl/axis.tcl:517 +#, fuzzy +msgid "_Help" +msgstr "Pomoc" + +#: src/hal/utils/scope.c:646 +msgid "HAL Oscilloscope" +msgstr "" + +#: src/hal/utils/scope.c:674 +msgid "Horizontal" +msgstr "" + +#: src/hal/utils/scope.c:682 +#, fuzzy +msgid "Selected Channel" +msgstr "Vybrať všetky" + +#: src/hal/utils/scope.c:688 +msgid "Run Mode" +msgstr "" + +#: src/hal/utils/scope.c:691 +msgid "Trigger" +msgstr "" + +#: src/hal/utils/scope.c:697 +msgid "Vertical" +msgstr "" + +#: src/hal/utils/scope.c:705 share/axis/tcl/axis.tcl:138 +#: share/axis/tcl/axis.tcl:1269 src/emc/usr_intf/gscreen/gscreen.py:3416 +#: src/emc/usr_intf/gscreen/gscreen.py:3417 +#: src/emc/usr_intf/gscreen/gscreen.glade:2614 +#, fuzzy +msgid "Stop" +msgstr "Krok" + +#: src/hal/utils/scope.c:708 +msgid "Normal" +msgstr "" + +#: src/hal/utils/scope.c:711 +#, fuzzy +msgid "Single" +msgstr "Jedna medzera" + +#: src/hal/utils/scope.c:714 +msgid "Roll" +msgstr "" + +#: src/hal/utils/scope_horiz.c:130 src/emc/usr_intf/gscreen/gscreen.glade:3419 +msgid "Zoom" +msgstr "" + +#: src/hal/utils/scope_horiz.c:131 +msgid " Pos " +msgstr "" + +#: src/hal/utils/scope_horiz.c:164 +msgid "" +"----- Samples\n" +"at ---- KHz" +msgstr "" + +#: src/hal/utils/scope_horiz.c:464 +msgid "Realtime component not loaded" +msgstr "" + +#: src/hal/utils/scope_horiz.c:465 +msgid "" +"HALSCOPE uses a realtime component called scope_rt'\n" +"to sample signals for display. It is not currently loaded\n" +"and attempting to load it automatically failed. More information\n" +"may be available in the terminal where halscope was started.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Load the component (using 'halcmd loadrt scope_rt'), then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" +msgstr "" + +#: src/hal/utils/scope_horiz.c:536 +msgid "Realtime function not linked" +msgstr "" + +#: src/hal/utils/scope_horiz.c:537 +msgid "" +"The HALSCOPE realtime sampling function\n" +"must be called from a HAL thread in to\n" +"determine the sampling rate.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Select a thread name and multiplier then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" +msgstr "" + +#: src/hal/utils/scope_horiz.c:544 +msgid "Select Sample Rate" +msgstr "" + +#: src/hal/utils/scope_horiz.c:545 +msgid "" +"Select a thread name and multiplier then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" +msgstr "" + +#: src/hal/utils/scope_horiz.c:567 +msgid "Thread:" +msgstr "" + +#: src/hal/utils/scope_horiz.c:575 +msgid "Sample Period:" +msgstr "" + +#: src/hal/utils/scope_horiz.c:583 +msgid "Sample Rate:" +msgstr "" + +#: src/hal/utils/scope_horiz.c:599 src/emc/usr_intf/touchy/mdi.py:79 +#: src/emc/usr_intf/gscreen/mdi.py:78 +msgid "Thread" +msgstr "" + +#: src/hal/utils/scope_horiz.c:600 +msgid "Period" +msgstr "" + +#: src/hal/utils/scope_horiz.c:638 +msgid "Multiplier:" +msgstr "" + +#: src/hal/utils/scope_horiz.c:655 +#, fuzzy +msgid "Record Length" +msgstr "Dĺžka:" + +#: src/hal/utils/scope_horiz.c:658 +#, c-format +msgid "%5d samples (1 channel)" +msgstr "" + +#: src/hal/utils/scope_horiz.c:660 +#, c-format +msgid "%5d samples (2 channels)" +msgstr "" + +#: src/hal/utils/scope_horiz.c:664 +#, c-format +msgid "%5d samples (4 channels)" +msgstr "" + +#: src/hal/utils/scope_horiz.c:668 +#, c-format +msgid "%5d samples (8 channels)" +msgstr "" + +#: src/hal/utils/scope_horiz.c:672 +#, c-format +msgid "%5d samples (16 channels)" +msgstr "" + +#: src/hal/utils/scope_horiz.c:727 src/hal/utils/scope_horiz.c:773 +#: src/hal/utils/scope_horiz.c:985 src/hal/utils/scope_vert.c:771 +#: src/hal/utils/scope_vert.c:863 tcl/bin/emccalib.tcl:232 +#: tcl/bin/genedit.tcl:180 tcl/bin/genedit.tcl:450 tcl/bin/halconfig.tcl:682 +#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:387 +#: tcl/bin/pickconfig.tcl:749 tcl/bin/pickconfig.tcl:799 tcl/mini.tcl:1456 +#: tcl/mini.tcl:2937 tcl/tklinuxcnc.tcl:160 tcl/tklinuxcnc.tcl:245 +#: tcl/tklinuxcnc.tcl:419 tcl/tklinuxcnc.tcl:1338 tcl/tklinuxcnc.tcl:1407 +#: tcl/tklinuxcnc.tcl:1438 tcl/tklinuxcnc.tcl:1469 tcl/tklinuxcnc.tcl:2017 +#: tcl/tklinuxcnc.tcl:2036 tcl/tklinuxcnc.tcl:2055 tcl/tklinuxcnc.tcl:2102 +#: src/emc/usr_intf/axis/scripts/axis.py:1106 +#: src/emc/usr_intf/axis/scripts/axis.py:1173 +#: src/emc/usr_intf/axis/scripts/axis.py:1508 +#: src/emc/usr_intf/axis/scripts/axis.py:2672 +#: src/emc/usr_intf/axis/scripts/axis.py:3599 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:718 +#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1828 +#: share/axis/tcl/axis.tcl:1865 +msgid "OK" +msgstr "OK" + +#: src/hal/utils/scope_horiz.c:732 src/hal/utils/scope_horiz.c:773 +#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 tcl/tooledit.tcl:468 +msgid "Quit" +msgstr "Ukončiť" + +#: src/hal/utils/scope_horiz.c:764 +msgid "Realtime thread(s) not running" +msgstr "" + +#: src/hal/utils/scope_horiz.c:765 +msgid "" +"HALSCOPE uses code in a realtime HAL thread to sample\n" +"signals for display. The HAL thread(s) are not running.\n" +"Threads are usually started by the application you are\n" +"attempting to run, or you can use the 'halcmd start' command.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Start the threads, then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" +msgstr "" + +#: src/hal/utils/scope_horiz.c:798 +msgid "Pick log file to write to:" +msgstr "" + +#: src/hal/utils/scope_horiz.c:981 +msgid "Not enough channels" +msgstr "" + +#: src/hal/utils/scope_horiz.c:982 +msgid "" +"This record length cannot handle the channels\n" +"that are currently enabled. Pick a shorter\n" +"record length that supports more channels." +msgstr "" + +#: src/hal/utils/scope_horiz.c:1070 +#, c-format +msgid "" +"%s\n" +"per div" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1085 +#, c-format +msgid "" +"%s samples\n" +"at %s" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1189 +msgid "nSec" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1192 +msgid "uSec" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1196 +msgid "mSec" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1200 src/emc/usr_intf/pncconf/pncconf.glade:2635 +#: src/emc/usr_intf/pncconf/pncconf.glade:3533 +#: src/emc/usr_intf/pncconf/pncconf.glade:4414 +#: src/emc/usr_intf/pncconf/pncconf.glade:5295 +msgid "Sec" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1217 src/emc/usr_intf/stepconf/spindle.glade:301 +#: src/emc/usr_intf/stepconf/axisx.glade:693 +#: src/emc/usr_intf/stepconf/axisy.glade:679 +#: src/emc/usr_intf/stepconf/axisz.glade:679 +#: src/emc/usr_intf/stepconf/axisa.glade:693 +#: src/emc/usr_intf/pncconf/pncconf.glade:8024 +#: src/emc/usr_intf/pncconf/pncconf.glade:8201 +#: src/emc/usr_intf/pncconf/pncconf.glade:8213 +msgid "Hz" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1220 +msgid "KHz" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1224 +msgid "Mhz" +msgstr "" + +#: src/hal/utils/scope_vert.c:413 src/hal/utils/scope_vert.c:1303 +#, fuzzy, c-format +msgid "" +"Offset\n" +"%s" +msgstr "Doplnky" + +#: src/hal/utils/scope_vert.c:628 +msgid "Gain" +msgstr "" + +#: src/hal/utils/scope_vert.c:640 src/hal/utils/scope_trig.c:272 +msgid "Pos" +msgstr "" + +#: src/hal/utils/scope_vert.c:654 tcl/ngcgui_ttt.tcl:214 +#: src/emc/usr_intf/pncconf/pncconf.glade:64273 +msgid "Scale" +msgstr "" + +#: src/hal/utils/scope_vert.c:667 +msgid "Chan Off" +msgstr "" + +#: src/hal/utils/scope_vert.c:723 +#, fuzzy +msgid "Set Offset" +msgstr "Určiť doplnok nástroja" + +#: src/hal/utils/scope_vert.c:724 +#, c-format +msgid "" +"Set the vertical offset\n" +"for channel %d." +msgstr "" + +#: src/hal/utils/scope_vert.c:744 +msgid "AC Coupled" +msgstr "" + +#: src/hal/utils/scope_vert.c:779 src/hal/utils/scope_vert.c:1215 +#: src/hal/utils/scope_trig.c:387 tcl/bin/emccalib.tcl:234 +#: tcl/bin/genedit.tcl:294 tcl/bin/halconfig.tcl:103 tcl/bin/halconfig.tcl:684 +#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:390 +#: tcl/bin/pickconfig.tcl:567 tcl/mini.tcl:1457 tcl/mini.tcl:2938 +#: tcl/mini.tcl:3110 tcl/tklinuxcnc.tcl:162 tcl/tklinuxcnc.tcl:213 +#: tcl/tklinuxcnc.tcl:420 tcl/tklinuxcnc.tcl:1339 tcl/tklinuxcnc.tcl:1408 +#: tcl/tklinuxcnc.tcl:1439 tcl/tklinuxcnc.tcl:1470 tcl/tklinuxcnc.tcl:2103 +#: src/emc/usr_intf/axis/scripts/axis.py:1453 +#: src/emc/usr_intf/axis/scripts/axis.py:1509 +#: src/emc/usr_intf/axis/scripts/axis.py:1699 +#: src/emc/usr_intf/axis/scripts/axis.py:2108 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:720 +#: src/emc/usr_intf/stepconf/main_page.glade:467 +#: src/emc/usr_intf/gscreen/gscreen.glade:3986 +msgid "Cancel" +msgstr "ZrušiťAbbrechen" + +#: src/hal/utils/scope_vert.c:859 +#, fuzzy +msgid "Too many channels" +msgstr "Súbor nástrojov" + +#: src/hal/utils/scope_vert.c:860 +msgid "" +"You cannot add another channel.\n" +"\n" +"Either turn off one or more channels, or shorten\n" +"the record length to allow for more channels" +msgstr "" + +#: src/hal/utils/scope_vert.c:1074 +msgid "Select Channel Source" +msgstr "" + +#: src/hal/utils/scope_vert.c:1075 +#, c-format +msgid "" +"Select a pin, signal, or parameter\n" +"as the source for channel %d." +msgstr "" + +#: src/hal/utils/scope_vert.c:1107 +msgid "Pins" +msgstr "" + +#: src/hal/utils/scope_vert.c:1108 +#, fuzzy +msgid "Signals" +msgstr "Rozšíriť signály" + +#: src/hal/utils/scope_vert.c:1109 +#, fuzzy +msgid "Parameters" +msgstr "Súbor parametrov" + +#: src/hal/utils/scope_trig.c:110 +#, c-format +msgid "Falling" +msgstr "" + +#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:295 +#, c-format +msgid "Rising" +msgstr "" + +#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:303 +msgid "" +"Source\n" +"None" +msgstr "" + +#: src/hal/utils/scope_trig.c:124 +#, c-format +msgid "" +"Source\n" +"Chan %2d" +msgstr "" + +#: src/hal/utils/scope_trig.c:219 tcl/tklinuxcnc.tcl:827 +#: src/emc/usr_intf/touchy/touchy.glade:2469 +msgid "Auto" +msgstr "Automatika" + +#: src/hal/utils/scope_trig.c:221 +msgid "Force" +msgstr "" + +#: src/hal/utils/scope_trig.c:255 src/hal/utils/scope_trig.c:289 +msgid "Level" +msgstr "" + +#: src/hal/utils/scope_trig.c:323 +msgid "Trigger Source" +msgstr "" + +#: src/hal/utils/scope_trig.c:324 +msgid "Select a channel to use for triggering." +msgstr "" + +#: src/hal/utils/scope_trig.c:347 +msgid "Chan" +msgstr "" + +#: src/hal/utils/scope_trig.c:348 +msgid "Source" +msgstr "" + +#: src/emc/motion/control.c:270 +msgid "Unexpected realtime delay: check dmesg for details." +msgstr "" + +#: src/emc/motion/control.c:272 +#, c-format +msgid "" +"\n" +"In recent history there were\n" +"%ld, %ld, %ld, %ld, and %ld\n" +"elapsed clocks between calls to the motion controller.\n" +msgstr "" + +#: src/emc/motion/control.c:277 +#, c-format +msgid "" +"This time, there were %ld which is so anomalously\n" +"large that it probably signifies a problem with your\n" +"realtime configuration. For the rest of this run of\n" +"EMC, this message will be suppressed.\n" +"\n" +msgstr "" + +#: src/emc/motion/control.c:394 +msgid "G38.4 move finished without breaking contact." +msgstr "" + +#: src/emc/motion/control.c:397 +msgid "G38.2 move finished without making contact." +msgstr "" + +#: src/emc/motion/control.c:412 +msgid "Probe tripped during non-probe MDI command." +msgstr "" + +#: src/emc/motion/control.c:440 +msgid "Probe tripped during homing motion." +msgstr "" + +#: src/emc/motion/control.c:444 +msgid "Probe tripped during a jog." +msgstr "" + +#: src/emc/motion/control.c:622 +msgid "can't add coordinated return move" +msgstr "" + +#: src/emc/motion/control.c:663 +msgid "can't add linear coordinated jog move" +msgstr "" + +#: src/emc/motion/control.c:817 +#, c-format +msgid "fault %d during orient in progress" +msgstr "" + +#: src/emc/motion/control.c:957 +msgid "motion stopped by enable input" +msgstr "" + +#: src/emc/motion/control.c:980 +#, c-format +msgid "joint %d on limit switch error" +msgstr "" + +#: src/emc/motion/control.c:992 +#, c-format +msgid "joint %d amplifier fault" +msgstr "" + +#: src/emc/motion/control.c:1001 +#, c-format +msgid "joint %d following error" +msgstr "" + +#: src/emc/motion/control.c:1687 +#, c-format +msgid "Exceeded positive soft limit on joint %d" +msgstr "" + +#: src/emc/motion/control.c:1692 +#, c-format +msgid "Exceeded negative soft limit on joint %d" +msgstr "" + +#: src/emc/motion/command.c:163 +#, c-format +msgid "Can't jog invalid joint number %d." +msgstr "" + +#: src/emc/motion/command.c:167 +#, c-format +msgid "Can't jog joint %d further past max hard limit." +msgstr "" + +#: src/emc/motion/command.c:172 +#, c-format +msgid "Can't jog joint %d further past min hard limit." +msgstr "" + +#: src/emc/motion/command.c:178 +#, c-format +msgid "Can't jog joint %d further past max soft limit." +msgstr "" + +#: src/emc/motion/command.c:183 +#, c-format +msgid "Can't jog joint %d further past min soft limit." +msgstr "" + +#: src/emc/motion/command.c:243 +#, c-format +msgid "%s move on line %d would exceed joint %d's positive limit" +msgstr "" + +#: src/emc/motion/command.c:250 +#, c-format +msgid "%s move on line %d would exceed joint %d's negative limit" +msgstr "" + +#: src/emc/motion/command.c:535 +msgid "all joints must be homed before going into coordinated mode" +msgstr "" + +#: src/emc/motion/command.c:556 +msgid "all joints must be homed before going into teleop mode" +msgstr "" + +#: src/emc/motion/command.c:710 src/emc/motion/command.c:776 +#: src/emc/motion/command.c:849 +msgid "Can't jog joint in coordinated mode." +msgstr "" + +#: src/emc/motion/command.c:715 src/emc/motion/command.c:781 +#: src/emc/motion/command.c:854 +msgid "Can't jog joint when not enabled." +msgstr "" + +#: src/emc/motion/command.c:720 src/emc/motion/command.c:859 +msgid "Can't jog any joints while homing." +msgstr "" + +#: src/emc/motion/command.c:786 +msgid "Can't jog any joint while homing." +msgstr "" + +#: src/emc/motion/command.c:918 +msgid "need to be enabled, in coord mode for linear move" +msgstr "" + +#: src/emc/motion/command.c:928 +msgid "can't do linear move with limits exceeded" +msgstr "" + +#: src/emc/motion/command.c:954 +#, c-format +msgid "can't add linear move at line %d, error code %d" +msgstr "" + +#: src/emc/motion/command.c:982 +msgid "need to be enabled, in coord mode for circular move" +msgstr "" + +#: src/emc/motion/command.c:993 +msgid "can't do circular move with limits exceeded" +msgstr "" + +#: src/emc/motion/command.c:1015 +#, c-format +msgid "can't add circular move at line %d, error code %d" +msgstr "" + +#: src/emc/motion/command.c:1114 +msgid "MOTION: can't STEP while jogging" +msgstr "" + +#: src/emc/motion/command.c:1117 +msgid "MOTION: can't STEP while in return move" +msgstr "" + +#: src/emc/motion/command.c:1127 +#, c-format +msgid "MOTION: STEP while in state %d" +msgstr "" + +#: src/emc/motion/command.c:1229 +msgid "can't enable motion, enable input is false" +msgstr "" + +#: src/emc/motion/command.c:1302 +msgid "must be in joint mode to home" +msgstr "" + +#: src/emc/motion/command.c:1313 src/emc/motion/command.c:1324 +msgid "homing sequence already in progress" +msgstr "" + +#: src/emc/motion/command.c:1322 +msgid "homing already in progress" +msgstr "" + +#: src/emc/motion/command.c:1352 +msgid "must be in joint mode or disabled to unhome" +msgstr "" + +#: src/emc/motion/command.c:1364 src/emc/motion/command.c:1387 +#, c-format +msgid "Cannot unhome while homing, joint %d" +msgstr "" + +#: src/emc/motion/command.c:1368 src/emc/motion/command.c:1391 +#, c-format +msgid "Cannot unhome while moving, joint %d" +msgstr "" + +#: src/emc/motion/command.c:1396 +#, c-format +msgid "Cannot unhome inactive joint %d" +msgstr "" + +#: src/emc/motion/command.c:1400 +#, c-format +msgid "Cannot unhome invalid joint %d (max %d)" +msgstr "" + +#: src/emc/motion/command.c:1427 +msgid "need to be enabled, in coord mode for probe move" +msgstr "" + +#: src/emc/motion/command.c:1437 +msgid "can't do probe move with limits exceeded" +msgstr "" + +#: src/emc/motion/command.c:1451 +msgid "Probe is already clear when starting G38.4 or G38.5 move" +msgstr "" + +#: src/emc/motion/command.c:1453 +msgid "Probe is already tripped when starting G38.2 or G38.3 move" +msgstr "" + +#: src/emc/motion/command.c:1473 +msgid "can't add probe move" +msgstr "" + +#: src/emc/motion/command.c:1498 +msgid "need to be enabled, in coord mode for rigid tap move" +msgstr "" + +#: src/emc/motion/command.c:1509 +msgid "can't do rigid tap move with limits exceeded" +msgstr "" + +#: src/emc/motion/command.c:1526 +msgid "can't add rigid tap move" +msgstr "" + +#: src/emc/motion/command.c:1541 +msgid "need to be enabled, in teleop mode for teleop move" +msgstr "" + +#: src/emc/motion/command.c:1710 +#, c-format +msgid "joint %d: too many compensation entries" +msgstr "" + +#: src/emc/motion/command.c:1716 +#, c-format +msgid "joint %d: compensation values must increase" +msgstr "" + +#: src/emc/motion/command.c:1745 +#, c-format +msgid "unrecognized command %d" +msgstr "" + +#: src/emc/motion/motion.c:212 +msgid "MOTION: hal_init() failed\n" +msgstr "" + +#: src/emc/motion/motion.c:217 +#, c-format +msgid "MOTION: num_joints is %d, must be between 1 and %d\n" +msgstr "" + +#: src/emc/motion/motion.c:224 +#, c-format +msgid "MOTION: num_dio is %d, must be between 1 and %d\n" +msgstr "" + +#: src/emc/motion/motion.c:231 +#, c-format +msgid "MOTION: num_aio is %d, must be between 1 and %d\n" +msgstr "" + +#: src/emc/motion/motion.c:239 +msgid "MOTION: init_hal_io() failed\n" +msgstr "" + +#: src/emc/motion/motion.c:248 +msgid "MOTION: init_comm_buffers() failed\n" +msgstr "" + +#: src/emc/motion/motion.c:256 +msgid "MOTION: init_threads() failed\n" +msgstr "" + +#: src/emc/motion/motion.c:281 +#, c-format +msgid "MOTION: hal_stop_threads() failed, returned %d\n" +msgstr "" + +#: src/emc/motion/motion.c:294 +#, c-format +msgid "MOTION: rtapi_shmem_delete() failed, returned %d\n" +msgstr "" + +#: src/emc/motion/motion.c:300 +#, c-format +msgid "MOTION: hal_exit() failed, returned %d\n" +msgstr "" + +#: src/emc/motion/motion.c:323 +msgid "MOTION: emcmot_hal_data malloc failed\n" +msgstr "" + +#: src/emc/motion/motion.c:331 +msgid "MOTION: joints malloc failed\n" +msgstr "" + +#: src/emc/motion/motion.c:695 +#, c-format +msgid "MOTION: joint %d pin/param export failed\n" +msgstr "" + +#: src/emc/motion/homing.c:80 src/emc/motion/homing.c:748 +#, c-format +msgid "hit limit in home state %d" +msgstr "" + +#: src/emc/motion/homing.c:90 +#, c-format +msgid "end of move in home state %d" +msgstr "" + +#: src/emc/motion/homing.c:185 +#, c-format +msgid "unknown state '%d' during homing sequence" +msgstr "" + +#: src/emc/motion/homing.c:246 +msgid "Cannot home while shared home switch is closed" +msgstr "" + +#: src/emc/motion/homing.c:290 +msgid "" +"invalid homing config: non-zero LATCH_VEL needs either SEARCH_VEL or " +"USE_INDEX" +msgstr "" + +#: src/emc/motion/homing.c:299 +msgid "invalid homing config: non-zero SEARCH_VEL needs LATCH_VEL" +msgstr "" + +#: src/emc/motion/homing.c:447 +msgid "Home switch inactive before start of backoff move" +msgstr "" + +#: src/emc/motion/homing.c:495 +msgid "Home switch active before start of latch move" +msgstr "" + +#: src/emc/motion/homing.c:551 +msgid "Home switch inactive before start of latch move" +msgstr "" + +#: src/emc/motion/homing.c:797 +#, c-format +msgid "unknown state '%d' during homing" +msgstr "" + +#: tcl/bin/emccalib.tcl:80 +#, fuzzy +msgid "Machinekit Servo Axis Calibration" +msgstr "Kalibrácia osi EMC2" + +#: tcl/bin/emccalib.tcl:90 +msgid "Save To File" +msgstr "Uložiť" + +#: tcl/bin/emccalib.tcl:106 tcl/bin/genedit.tcl:77 tcl/bin/halconfig.tcl:151 +#: tcl/bin/halshow.tcl:85 tcl/mini.tcl:2516 tcl/tklinuxcnc.tcl:719 +#: tcl/ngcgui.tcl:489 +msgid "File" +msgstr "Súbor" + +#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:236 tcl/bin/halconfig.tcl:153 +#: tcl/mini.tcl:3558 src/emc/usr_intf/touchy/touchy.glade:2420 +msgid "Refresh" +msgstr "Obnoviť" + +#: tcl/bin/emccalib.tcl:110 tcl/bin/genedit.tcl:82 tcl/bin/halconfig.tcl:155 +#: tcl/mini.tcl:2535 src/emc/usr_intf/axis/scripts/axis.py:2107 +msgid "Save" +msgstr "Uložiť" + +#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:623 +#, tcl-format +msgid "Tune %d" +msgstr "Tunning %d" + +#: tcl/bin/emccalib.tcl:162 tcl/bin/halconfig.tcl:628 +msgid "INI Name" +msgstr "INI-Názov" + +#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:629 +msgid "HAL's Value" +msgstr "Hodnota HAL" + +#: tcl/bin/emccalib.tcl:165 tcl/bin/halconfig.tcl:631 +msgid "Next Value" +msgstr "Ďalšia hodnota" + +#: tcl/bin/emccalib.tcl:230 tcl/bin/halconfig.tcl:680 tcl/bin/halconfig.tcl:731 +msgid "Test" +msgstr "Testovať" + +#: tcl/bin/emccalib.tcl:388 tcl/bin/halconfig.tcl:883 +#, tcl-format +msgid "" +"The HAL parameter \n" +" %s \n" +" has changed. \n" +" Really quit?" +msgstr "" +"HAL Parameter \n" +"%s \n" +"sa zmenil. \n" +"Naozaj ukončiť?" + +#: tcl/bin/emccalib.tcl:413 tcl/bin/halconfig.tcl:1170 +msgid "" +"Not permitted to save here.\n" +"\n" +" You need to copy a configuration to your home directory and work there." +msgstr "" +"Tu nie je možné uložiť. \n" +"\n" +"Skopírujte nastavenia do vašej domácej zložky a pracujte tam." + +#: tcl/bin/emccalib.tcl:487 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 +#: tcl/bin/pickconfig.tcl:843 tcl/bin/pickconfig.tcl:854 +#: tcl/scripts/Set_Coordinates.tcl:205 tcl/scripts/Set_Coordinates.tcl:228 +#, tcl-format +msgid "can't save %s" +msgstr "Nie je možné uložiť %s ." + +#: tcl/bin/emcdebug.tcl:166 tcl/bin/emcdebug.tcl:177 +#, fuzzy +msgid "LinuxCNC Debug" +msgstr "EMC2 Debug" + +#: tcl/bin/emcdebug.tcl:185 +msgid "Invalid INI file entries" +msgstr "Nesprávne vstupy súboru INI" + +#: tcl/bin/emcdebug.tcl:186 +msgid "Configuration information" +msgstr "Informácie o nastavení" + +#: tcl/bin/emcdebug.tcl:187 +msgid "Use of defaults" +msgstr "Použiť pôvodné" + +#: tcl/bin/emcdebug.tcl:188 +msgid "Version information" +msgstr "Informácie o verzii" + +#: tcl/bin/emcdebug.tcl:189 +msgid "Command issuing" +msgstr "Zadávam príkaz" + +#: tcl/bin/emcdebug.tcl:190 +msgid "IO points" +msgstr "IO piny" + +#: tcl/bin/emcdebug.tcl:191 +msgid "NML" +msgstr "NML" + +#: tcl/bin/emcdebug.tcl:192 +msgid "Motion time" +msgstr "Čas pohybu" + +#: tcl/bin/emcdebug.tcl:193 src/emc/usr_intf/axis/scripts/debuglevel.py:42 +msgid "Interpreter" +msgstr "Interpret" + +#: tcl/bin/emcdebug.tcl:194 +msgid "RCS" +msgstr "RCS" + +#: tcl/bin/emcdebug.tcl:195 +msgid "Trajectory level" +msgstr "Stav Trajektórie" + +#: tcl/bin/emcdebug.tcl:196 +msgid "Interpreter list" +msgstr "Zoznam interpretov" + +#: tcl/bin/genedit.tcl:78 tcl/mini.tcl:2533 +msgid "New" +msgstr "Nový" + +#: tcl/bin/genedit.tcl:80 tcl/mini.tcl:1667 tcl/mini.tcl:2534 +#: tcl/tklinuxcnc.tcl:720 tcl/tklinuxcnc.tcl:1657 +msgid "Open..." +msgstr "Otvoriť..." + +#: tcl/bin/genedit.tcl:84 tcl/mini.tcl:2536 +msgid "Save As..." +msgstr "Uložiť ako..." + +#: tcl/bin/genedit.tcl:87 tcl/bin/halconfig.tcl:165 tcl/bin/halshow.tcl:92 +#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1322 +#: tcl/ngcgui.tcl:3832 +msgid "Exit" +msgstr "Ukončiť" + +#: tcl/bin/genedit.tcl:91 tcl/mini.tcl:2517 +#: src/emc/usr_intf/gscreen/gscreen.glade:2685 +msgid "Edit" +msgstr "Upraviť" + +#: tcl/bin/genedit.tcl:92 tcl/mini.tcl:2543 +msgid "Cut" +msgstr "Vystrihnúť" + +#: tcl/bin/genedit.tcl:94 tcl/mini.tcl:2544 +msgid "Copy" +msgstr "Kopírovať" + +#: tcl/bin/genedit.tcl:96 tcl/mini.tcl:2545 +msgid "Paste" +msgstr "Vložiť" + +#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:73 +msgid "Select All" +msgstr "Vybrať všetky" + +#: tcl/bin/genedit.tcl:104 tcl/bin/halconfig.tcl:192 tcl/mini.tcl:919 +#: tcl/mini.tcl:2519 tcl/tklinuxcnc.tcl:790 +#: src/emc/usr_intf/stepconf/main_page.glade:445 +msgid "Help" +msgstr "Pomoc" + +#: tcl/bin/genedit.tcl:105 tcl/mini.tcl:1011 tcl/mini.tcl:2559 +#: tcl/tklinuxcnc.tcl:796 +msgid "About..." +msgstr "O..." + +#: tcl/bin/genedit.tcl:130 +msgid "Save and Reload" +msgstr "Uložiť a znovu načítať" + +#: tcl/bin/genedit.tcl:133 tcl/mini.tcl:2550 +msgid "Find..." +msgstr "Nájsť..." + +#: tcl/bin/genedit.tcl:135 tcl/mini.tcl:2552 +msgid "Renumber File..." +msgstr "Zmeniť číslo súboru..." + +#: tcl/bin/genedit.tcl:140 tcl/mini.tcl:917 tcl/mini.tcl:2518 +#: tcl/tklinuxcnc.tcl:746 src/emc/usr_intf/gmoccapy/gmoccapy.glade:5135 +msgid "Settings" +msgstr "Nastavenia" + +#: tcl/bin/genedit.tcl:141 tcl/mini.tcl:2554 +msgid "No Numbering" +msgstr "Žiadne číslovanie" + +#: tcl/bin/genedit.tcl:144 tcl/mini.tcl:2556 +msgid "Line Numbering..." +msgstr "Číslovanie riadkov..." + +#: tcl/bin/genedit.tcl:150 tcl/tklinuxcnc.tcl:768 +msgid "Scripts" +msgstr "Skripty" + +#: tcl/bin/genedit.tcl:177 +msgid "About TkEditor" +msgstr "O TkEditore" + +#: tcl/bin/genedit.tcl:179 +msgid "" +"TkEditor\n" +"\n" +"Simple Tcl/Tk Text Editor\n" +"\n" +"GPL Version 2" +msgstr "" +"TkEditor\n" +"\n" +"Jednoduchý Tcl/Tk Editor Textu\n" +"\n" +"GPL Version 2" + +#: tcl/bin/genedit.tcl:267 tcl/mini.tcl:3090 +msgid "Find" +msgstr "Nájsť" + +#: tcl/bin/genedit.tcl:270 +msgid "Find:" +msgstr "Nájsť:" + +#: tcl/bin/genedit.tcl:276 +msgid "Replace:" +msgstr "Nahradiť." + +#: tcl/bin/genedit.tcl:282 +msgid "Find All" +msgstr "Nájsť všetky" + +#: tcl/bin/genedit.tcl:285 tcl/mini.tcl:3113 +msgid "Replace All" +msgstr "Nahradiť všetky" + +#: tcl/bin/genedit.tcl:288 +msgid "Skip This" +msgstr "Preskočiť" + +#: tcl/bin/genedit.tcl:291 +msgid "Replace This" +msgstr "Nahradiť" + +#: tcl/bin/genedit.tcl:297 +msgid "Clear" +msgstr "Vymazať" + +#: tcl/bin/genedit.tcl:422 tcl/mini.tcl:2640 +msgid "Set Line Numbering" +msgstr "Nastaviť číslovanie riadkov" + +#: tcl/bin/genedit.tcl:424 tcl/mini.tcl:2644 +msgid "Increment" +msgstr "Pričítať" + +#: tcl/bin/genedit.tcl:426 tcl/mini.tcl:2646 +msgid "One" +msgstr "Jeden" + +#: tcl/bin/genedit.tcl:429 tcl/mini.tcl:2648 +msgid "Two" +msgstr "Dva" + +#: tcl/bin/genedit.tcl:432 tcl/mini.tcl:2650 +msgid "Five" +msgstr "Päť" + +#: tcl/bin/genedit.tcl:435 tcl/mini.tcl:2652 +msgid "Ten" +msgstr "Desať" + +#: tcl/bin/genedit.tcl:439 tcl/mini.tcl:2654 +msgid "Space" +msgstr "Medzera" + +#: tcl/bin/genedit.tcl:441 tcl/mini.tcl:2656 +msgid "Single Space" +msgstr "Jedna medzera" + +#: tcl/bin/genedit.tcl:444 tcl/mini.tcl:2658 +msgid "Double Space" +msgstr "Dve medzery" + +#: tcl/bin/genedit.tcl:447 tcl/mini.tcl:2660 +msgid "Tab Space" +msgstr "Medzera Tabulátorom" + +#: tcl/bin/genedit.tcl:453 +msgid "Next Number:" +msgstr "Ďalšie číslo:" + +#: tcl/bin/genedit.tcl:474 tcl/mini.tcl:2668 +msgid "Renumber" +msgstr "Prečíslovať" + +#: tcl/bin/halconfig.tcl:88 tcl/bin/halshow.tcl:33 +msgid "HAL Configuration" +msgstr "Nastavenie HAL" + +#: tcl/bin/halconfig.tcl:103 +msgid "Would you like to save your configuration before you exit?" +msgstr "Chcete uložiť vaše nastavenia kým skončíte?" + +#: tcl/bin/halconfig.tcl:103 +msgid "Save All" +msgstr "Uložiť všetky" + +#: tcl/bin/halconfig.tcl:103 +msgid "Save Tune" +msgstr "Uložiť tunning" + +#: tcl/bin/halconfig.tcl:103 +msgid "Save as Netlist" +msgstr "Uložiť ako Netlist" + +#: tcl/bin/halconfig.tcl:103 +msgid "Don't Save" +msgstr "Neuložiť" + +#: tcl/bin/halconfig.tcl:132 +msgid "Show" +msgstr "Ukázať" + +#: tcl/bin/halconfig.tcl:133 +msgid "Watch" +msgstr "Pozorovať" + +#: tcl/bin/halconfig.tcl:134 +msgid "Modify" +msgstr "Zmeniť " + +#: tcl/bin/halconfig.tcl:157 +msgid "Save INI Tuning" +msgstr "Uložiť INI tunning" + +#: tcl/bin/halconfig.tcl:159 +msgid "Save HAL Ini" +msgstr "Uložiť HAL Ini" + +#: tcl/bin/halconfig.tcl:161 +msgid "Save HAL Net" +msgstr "Uložiť Hal Net" + +#: tcl/bin/halconfig.tcl:163 +msgid "Save and Exit" +msgstr "Uložiť a ukončiť" + +#: tcl/bin/halconfig.tcl:168 tcl/mini.tcl:916 tcl/tklinuxcnc.tcl:739 +msgid "View" +msgstr "Náhľad" + +#: tcl/bin/halconfig.tcl:170 tcl/bin/halshow.tcl:104 +msgid "Expand Tree" +msgstr "Rozšíriť strom" + +#: tcl/bin/halconfig.tcl:172 tcl/bin/halshow.tcl:106 +msgid "Collapse Tree" +msgstr "Uzavrieť strom" + +#: tcl/bin/halconfig.tcl:175 tcl/bin/halshow.tcl:109 +msgid "Expand Pins" +msgstr "Rozšíriť piny" + +#: tcl/bin/halconfig.tcl:177 tcl/bin/halshow.tcl:111 +msgid "Expand Parameters" +msgstr "Rozšíriť parametre" + +#: tcl/bin/halconfig.tcl:179 tcl/bin/halshow.tcl:113 +msgid "Expand Signals" +msgstr "Rozšíriť signály" + +#: tcl/bin/halconfig.tcl:182 tcl/bin/halshow.tcl:116 +msgid "Erase Watch" +msgstr "Vymazať pohľad" + +#: tcl/bin/halconfig.tcl:194 tcl/mini.tcl:840 tcl/mini.tcl:2785 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "About" +msgstr "O" + +#: tcl/bin/halconfig.tcl:196 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2579 +msgid "Main" +msgstr "Hlavné" + +#: tcl/bin/halconfig.tcl:476 +msgid "Enter HAL command :" +msgstr "Zadať príkaz HAL:" + +#: tcl/bin/halconfig.tcl:479 tcl/bin/halconfig.tcl:528 tcl/bin/halshow.tcl:354 +msgid "Execute" +msgstr "Vykonať" + +#: tcl/bin/halconfig.tcl:943 tcl/bin/halshow.tcl:405 +msgid "Select a node to show." +msgstr "Vyberte premennú pre zobrazenie." + +#: tcl/bin/halconfig.tcl:968 tcl/bin/halshow.tcl:429 +msgid "<-- Select a Leaf. Click on its name." +msgstr "Vyberte si. Kliknite na názov." + +#: tcl/bin/halconfig.tcl:1085 tcl/bin/halconfig.tcl:1095 +#: tcl/bin/halconfig.tcl:1102 tcl/bin/halconfig.tcl:1109 +#: tcl/bin/halconfig.tcl:1116 +#, tcl-format +msgid "Click a highlighted entry where %s should go." +msgstr "Kliknite na vysvietený vstup kde by malo ísť %s." + +#: tcl/bin/halconfig.tcl:1092 +msgid "Nothing to be done for parameters here. Try the tuning page" +msgstr "" +"Tu nie je možné urobiť s parametrami nič. Skúste stránku optimalizovania" + +#: tcl/bin/halconfig.tcl:1124 +#, tcl-format +msgid "%s is not a leaf, try again" +msgstr "%s nie je list, skúste znova" + +#: tcl/bin/halconfig.tcl:1281 +#, fuzzy +msgid "" +"Copyright Raymond E Henry. 2006\n" +"License: GPL Version 2\n" +"\n" +"Halconfig is an LinuxCNC configuration tool. It requires that you have " +"started an instance of linuxcnc.\n" +"\n" +"This script carries no warranty or liability for its use to the extent " +"allowed by law." +msgstr "" +"Copyright Raymond E Henry. 2006\n" +"License: GPL Version 2\n" +"\n" +"Halconfig is an EMC2 configuration tool. It should be started from the emc2 " +"directory and will require that you have started an instance of emc2 or work " +"up a new configuration starting with a demo rt script.\n" +"\n" +"This script is not for the faint hearted and carries no warranty or " +"liability for its use to the extent allowed by law." + +#: tcl/bin/halshow.tcl:69 +msgid " SHOW " +msgstr "UKÁZAŤ" + +#: tcl/bin/halshow.tcl:70 +msgid " WATCH " +msgstr "POZOROVAŤ" + +#: tcl/bin/halshow.tcl:90 +msgid "Load Watch List" +msgstr "" + +#: tcl/bin/halshow.tcl:102 +msgid "Tree View" +msgstr "Vetvený Pohľad" + +#: tcl/bin/halshow.tcl:349 +msgid "Test HAL command :" +msgstr "Vyskúšať príkaz HAL :" + +#: tcl/bin/halshow.tcl:544 +msgid "Load a watch list" +msgstr "" + +#: tcl/bin/halshow.tcl:567 +msgid "Save current watch list" +msgstr "" + +#: tcl/bin/halshow.tcl:581 +msgid "Commands may be tested here but they will NOT be saved" +msgstr "Tu môžete vyskúšať príkazy, ale NEBUDÚ uložené." + +#: tcl/bin/pickconfig.tcl:96 +msgid "" +"Can't find the bwidget 1.7 package. There is a debian bwidget package; " +"install \n" +"it with sudo apt-get install bwidget." +msgstr "" +"Balík bwidget 1.7 nebol nájdený. \n" +"Je tu balík debian bwidget .\n" +"Môžete ho nainštalovať použitím sudo apt-get bwidget." + +#: tcl/bin/pickconfig.tcl:154 +#, fuzzy +msgid "Machinekit Configuration Selector" +msgstr "EMC2 Pomocník nastavenia" + +#: tcl/bin/pickconfig.tcl:296 +msgid "No details available." +msgstr "Nie sú dostupné žiadne detaily." + +#: tcl/bin/pickconfig.tcl:343 +#, fuzzy +msgid "" +"Welcome to MachineKit.\n" +"\n" +"Select a machine configuration from the list on the left.\n" +"Details about the selected configuration will appear in the display on the " +"right.\n" +"Click 'OK' to run the selected configuration" +msgstr "" +"Vitajte v EMC2.\n" +"\n" +"Vyberte konfiguráciu stroja zo zoznamu.\n" +"Detaily o vybranej konfigurácii sa objavia na displeji vpravo.\n" +"Stlačte 'OK' pre spustenie vybranej konfigurácie ." + +#: tcl/bin/pickconfig.tcl:401 +msgid "My Configurations" +msgstr "Moje konfigurácie" + +#: tcl/bin/pickconfig.tcl:405 +msgid "Sample Configurations" +msgstr "Príklady konfigurácií" + +#: tcl/bin/pickconfig.tcl:530 +#, tcl-format +msgid "ERROR: no configurations found in path '%s'" +msgstr "CHYBA: Neboli nájdené žiadne konfigurácie na ceste %s." + +#: tcl/bin/pickconfig.tcl:567 +msgid "Copy Configuration?" +msgstr "Skopírovať konfiguráciu?" + +#: tcl/bin/pickconfig.tcl:567 +#, tcl-format +msgid "" +"Would you like to copy the %s configuration to your home directory so you " +"can customize it?" +msgstr "" +"Chcete skopírovať %s konfiguráciu do vašej domovskej zložky aby ste ju potom " +"mohli zmeniť?" + +#: tcl/bin/pickconfig.tcl:567 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:563 +msgid "Yes" +msgstr "Áno" + +#: tcl/bin/pickconfig.tcl:749 +msgid "Configuration Copied" +msgstr "Konfigurácia skopírovaná" + +#: tcl/bin/pickconfig.tcl:749 +#, fuzzy, tcl-format +msgid "" +"The configuration file has been copied to %s. Next time, choose this " +"location when starting MachineKit." +msgstr "" +"Súbor konfigurácie bol skopírovaný do %s. Nabudúce vyberte túto pozíciu pri " +"spúšťaní EMC2." + +#: tcl/bin/pickconfig.tcl:799 +msgid "Shortcut Created" +msgstr "Odkaz vytvorený" + +#: tcl/bin/pickconfig.tcl:799 +msgid "" +"A shortcut to this configuration file has been created on your desktop. You " +"can use it to automatically launch this configuration." +msgstr "" +"Na pracovnej ploche bol vytvorený odkaz pre túto konfiguráciu. Môžete ho " +"použiť aby ste ju automaticky spustili." + +#: tcl/bin/pickconfig.tcl:805 +msgid "Create Desktop Shortcut" +msgstr "Vytvoriť odkaz na ploche" + +#: tcl/bin/tkbackplot.tcl:110 +#, fuzzy +msgid "TkLinuxCNC BackPlot" +msgstr "TkEMC Backplot" + +#: tcl/bin/tkbackplot.tcl:125 +msgid "SETUP" +msgstr "NASTAVENIE" + +#: tcl/bin/tkbackplot.tcl:127 +msgid "RESET" +msgstr "RESET" + +#: tcl/bin/tkbackplot.tcl:129 +msgid "CANCEL" +msgstr "ZRUŠIŤ" + +#: tcl/bin/tkbackplot.tcl:250 +msgid "AXIS" +msgstr "OS" + +#: tcl/bin/tkbackplot.tcl:251 +msgid "OFFSET" +msgstr "OFFSET" + +#: tcl/bin/tkbackplot.tcl:252 +msgid "ANGLE" +msgstr "UHOL" + +#: tcl/bin/tkbackplot.tcl:253 +msgid "DIRECTION" +msgstr "SMER" + +#: tcl/bin/tkbackplot.tcl:270 +msgid "SIZE :" +msgstr "VEĽKOSŤ" + +#: tcl/mini.tcl:490 +#, tcl-format +msgid "JOG %s +" +msgstr "JOG %s +" + +#: tcl/mini.tcl:491 +#, tcl-format +msgid "JOG %s -" +msgstr "JOG %s -" + +#: tcl/mini.tcl:492 +#, tcl-format +msgid "" +"%s\n" +"\n" +"Z\n" +"E\n" +"R\n" +"O" +msgstr "" +"%s\n" +"\n" +"N\n" +"U\n" +"L\n" +"A" + +#: tcl/mini.tcl:840 +msgid "" +"TkMini \n" +"\n" +"Tcl/Tk GUI for Enhanced Machine Controller\n" +"\n" +"GPL Copyright 2003 \n" +"Ray Henry \n" +"\n" +" 3D backplotter by Paul Corner \n" +" \n" +"This software comes with ABSOLUTELY NO GUARANTEE! \n" +"For details see the copyright.html file in this directory." +msgstr "" +"TkMini \n" +"\n" +"Graphische Tcl/Tk Oberfläche für EMC2\n" +"\n" +"GPL Copyright 2003 \n" +"Ray Henry \n" +"\n" +" 3D backplotter by Paul Corner \n" +" \n" +"This software comes with ABSOLUTELY NO GUARANTEE!\n" +"For details see the copyright.html file in this directory." + +#: tcl/mini.tcl:915 +msgid "Program" +msgstr "Program" + +#: tcl/mini.tcl:918 +msgid "Info" +msgstr "Info" + +#: tcl/mini.tcl:923 +msgid "Backplot" +msgstr "Backplot" + +#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:5915 +msgid "Editor" +msgstr "Editor" + +#: tcl/mini.tcl:927 +msgid "Offsets" +msgstr "Doplnky" + +#: tcl/mini.tcl:929 +msgid "Tools" +msgstr "Nástroje" + +#: tcl/mini.tcl:951 tcl/mini.tcl:3565 tcl/tklinuxcnc.tcl:732 +msgid "Reset" +msgstr "Resetovať" + +#: tcl/mini.tcl:960 +msgid "Position Type" +msgstr "Typ polohy" + +#: tcl/mini.tcl:962 +msgid "Tool Info" +msgstr "Informácie o nástroji" + +#: tcl/mini.tcl:964 +msgid "Offset Info" +msgstr "Informácie o doplnku" + +#: tcl/mini.tcl:967 +msgid "Show Restart" +msgstr "Ukázať Reštart" + +#: tcl/mini.tcl:968 +msgid "Hide Restart" +msgstr "Schovať Reštart" + +#: tcl/mini.tcl:970 +msgid "Show Split Right" msgstr "Ukázať delenie vpravo" -#: tcl/mini.tcl:972 -msgid "Show Mode Full" -msgstr "Ukázať plný spôsob" +#: tcl/mini.tcl:972 +msgid "Show Mode Full" +msgstr "Ukázať plný spôsob" + +#: tcl/mini.tcl:974 +msgid "Show Popin Full" +msgstr "Ukázať plný Popin" + +#: tcl/mini.tcl:978 +msgid "Actual Position" +msgstr "Aktuálna pozícia" + +#: tcl/mini.tcl:980 +msgid "Commanded Position" +msgstr "Zadaná pozícia" + +#: tcl/mini.tcl:983 +msgid "Machine Position" +msgstr "Pozícia stroja" + +#: tcl/mini.tcl:985 +msgid "Relative Position" +msgstr "Relatívna pozícia" + +#: tcl/mini.tcl:988 tcl/tklinuxcnc.tcl:747 +msgid "Calibration..." +msgstr "Kalibrácia..." + +#: tcl/mini.tcl:990 +msgid "HAL Show..." +msgstr "Ukázať HAL..." + +#: tcl/mini.tcl:992 +msgid "HAL Config..." +msgstr "Nastavenie HAL..." + +#: tcl/mini.tcl:997 +msgid "Program File" +msgstr "Súbor programu" + +#: tcl/mini.tcl:998 +#, tcl-format +msgid "Program file is %s" +msgstr "Súbor programu je %s" + +#: tcl/mini.tcl:999 +msgid "Editor File" +msgstr "Upravovací Súbor" + +#: tcl/mini.tcl:1000 +#, tcl-format +msgid "Editor file is %s" +msgstr "Upravovací Súbor je %s" + +#: tcl/mini.tcl:1001 +msgid "Parameter File" +msgstr "Súbor parametrov" + +#: tcl/mini.tcl:1002 +#, tcl-format +msgid "Parameter file is %s" +msgstr "Súbor parametrov je %s" + +#: tcl/mini.tcl:1003 +msgid "Tool File" +msgstr "Súbor nástrojov" + +#: tcl/mini.tcl:1004 +#, tcl-format +msgid "Tool file is %s" +msgstr "Súbor nástrojov je %s" + +#: tcl/mini.tcl:1006 +msgid "Active G Codes" +msgstr "Aktívne G Kódy" + +#: tcl/mini.tcl:1007 +#, tcl-format +msgid "" +"Active codes include; \n" +"%s" +msgstr "" +"Aktívne kódy sú:\n" +"%s" + +#: tcl/mini.tcl:1010 tcl/mini.tcl:2558 tcl/tklinuxcnc.tcl:791 +msgid "Help..." +msgstr "Pomoc..." + +#: tcl/mini.tcl:1027 tcl/tklinuxcnc.tcl:890 +msgid "ABORT" +msgstr "PRERUŠIŤ" + +#: tcl/mini.tcl:1038 tcl/mini.tcl:2048 +msgid "CONTINUE" +msgstr "POKRAČOVAŤ" + +#: tcl/mini.tcl:1044 tcl/tklinuxcnc.tcl:828 tcl/tklinuxcnc.tcl:2248 +#: src/emc/usr_intf/touchy/touchy.glade:1264 +msgid "MDI" +msgstr "MDI" + +#: tcl/mini.tcl:1048 tcl/tklinuxcnc.tcl:2239 +msgid "AUTO" +msgstr "AUTO" + +#: tcl/mini.tcl:1052 tcl/mini.tcl:1812 tcl/tklinuxcnc.tcl:2141 +#: tcl/tklinuxcnc.tcl:2261 +msgid "MANUAL" +msgstr "MANUÁL" + +#: tcl/mini.tcl:1106 +msgid "Tool #:" +msgstr "Nástroj :" + +#: tcl/mini.tcl:1108 +msgid "Length :" +msgstr "Dĺžka:" + +#: tcl/mini.tcl:1119 +msgid "Work Offsets: " +msgstr "Pracovný Offset:" + +#: tcl/mini.tcl:1121 +msgid "start offsets popup here" +msgstr "Začať zobrazovanie offset tu" + +#: tcl/mini.tcl:1165 +msgid "start override popup here" +msgstr "Začať prepisovanie prekrytia tu" + +#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1739 +msgid "Feed Override:" +msgstr "Začať posun:" + +#: tcl/mini.tcl:1180 +msgid "-- MESSAGES --" +msgstr "\"-- SPRÁVY--" + +#: tcl/mini.tcl:1230 +msgid "toggleView's not doin nothin yet" +msgstr "toggleView ešte nič neurobilo" + +#: tcl/mini.tcl:1282 +msgid "Can't set zero with a tool offset active so I issued G49 to cancel it." +msgstr "" +"Nie je možné nastaviť nulu kým je nástroj aktívny, tak som nariadil G49 aby " +"ho vypol." + +#: tcl/mini.tcl:1346 +#, tcl-format +msgid "Can't update the var file while machine is in auto and %s." +msgstr "Nie je možné aktualizovať var súbor kým je stroj v auto a %s. " + +#: tcl/mini.tcl:1400 tcl/tklinuxcnc.tcl:1227 +msgid "override limits" +msgstr "Zmeniť limity" + +#: tcl/mini.tcl:1405 tcl/tklinuxcnc.tcl:1263 +msgid "home" +msgstr "Domov" + +#: tcl/mini.tcl:1426 +msgid "DEFAULT" +msgstr "PREDVOLENÉ" + +#: tcl/mini.tcl:1427 +msgid "Speed:" +msgstr "Rýchlosť:" + +#: tcl/mini.tcl:1430 +msgid "RAPID" +msgstr "RÝCHLY" + +#: tcl/mini.tcl:1447 tcl/tklinuxcnc.tcl:1391 +msgid "Set Jog Speed" +msgstr "Rýchlosť krokov" + +#: tcl/mini.tcl:1453 tcl/tklinuxcnc.tcl:1404 +msgid "Set jog speed:" +msgstr "Nastaviť rýchlosť krokov:" + +#: tcl/mini.tcl:1511 +msgid "JOG X +" +msgstr "X +" + +#: tcl/mini.tcl:1512 +msgid "JOG X -" +msgstr "X -" + +#: tcl/mini.tcl:1516 +msgid "increment" +msgstr "Pričítať" + +#: tcl/mini.tcl:1518 tcl/tklinuxcnc.tcl:602 tcl/tklinuxcnc.tcl:1249 +#: tcl/tklinuxcnc.tcl:1253 src/emc/usr_intf/gscreen/gscreen.glade:1574 +#: src/emc/usr_intf/gscreen/gscreen.glade:1586 +msgid "continuous" +msgstr "Priebežný" + +#: tcl/mini.tcl:1520 +msgid "" +"A\n" +"L\n" +"L\n" +"\n" +"Z\n" +"E\n" +"R\n" +"O" +msgstr "" +"V\n" +"Š\n" +"A\n" +"D\n" +"E\n" +".\n" +"\n" +"N\n" +"U\n" +"L\n" +"A" + +#: tcl/mini.tcl:1588 src/emc/usr_intf/touchy/touchy.glade:1422 +msgid "Spindle Forward" +msgstr "Vreteno Dopredu" + +#: tcl/mini.tcl:1589 src/emc/usr_intf/touchy/touchy.glade:1433 +msgid "Spindle Reverse" +msgstr "Vreteno Dozadu" + +#: tcl/mini.tcl:1590 tcl/tklinuxcnc.tcl:871 +msgid "Spindle off" +msgstr "Vreteno vypni" + +#: tcl/mini.tcl:1592 src/emc/usr_intf/touchy/touchy.glade:1479 +msgid "Spindle Slower" +msgstr "Vreteno Pomalšie" + +#: tcl/mini.tcl:1596 src/emc/usr_intf/touchy/touchy.glade:1464 +msgid "Spindle Faster" +msgstr "Vreteno rýchlejšie" + +#: tcl/mini.tcl:1632 tcl/tklinuxcnc.tcl:1620 +msgid "MDI:" +msgstr "MDI:" + +#: tcl/mini.tcl:1669 tcl/tklinuxcnc.tcl:1658 +#: src/emc/usr_intf/stepconf/main_page.glade:298 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2625 +msgid "Run" +msgstr "Ausführen" + +#: tcl/mini.tcl:1671 tcl/tklinuxcnc.tcl:1659 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2638 +msgid "Pause" +msgstr "Pauza" + +#: tcl/mini.tcl:1673 tcl/tklinuxcnc.tcl:1660 +msgid "Resume" +msgstr "Pokračovať" + +#: tcl/mini.tcl:1675 tcl/tklinuxcnc.tcl:1661 +msgid "Step" +msgstr "Krok" + +#: tcl/mini.tcl:1677 tcl/tklinuxcnc.tcl:1662 +msgid "Verify" +msgstr "Overiť" + +#: tcl/mini.tcl:1698 +msgid "RESTART LINE" +msgstr "Reštartovať" + +#: tcl/mini.tcl:1699 src/emc/usr_intf/stepconf/main_page.glade:531 +msgid "Back" +msgstr "Späť" + +#: tcl/mini.tcl:1700 +msgid "Ahead" +msgstr "Dopredu" + +#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1300 +#: src/emc/usr_intf/gscreen/gscreen.glade:3973 +msgid "Restart" +msgstr "Reštartovať" + +#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 tcl/tklinuxcnc.tcl:465 +#: src/emc/usr_intf/axis/scripts/axis.py:2023 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:754 +msgid "All files" +msgstr "Všetky súbory" + +#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 tcl/tklinuxcnc.tcl:466 +msgid "Text files" +msgstr "Text files" + +#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 tcl/tklinuxcnc.tcl:467 +msgid "NC files" +msgstr "Súbory" + +#: tcl/mini.tcl:1753 +msgid "" +"The interpreter is running. \n" +" Pressing OK will abort and load the new program" +msgstr "" +"Interpret je spustený. \n" +"Stlačenie OK ho preruší a načíta nový program." + +#: tcl/mini.tcl:1886 +msgid "ESTOPPED" +msgstr "NÚDZOVO PRERUŠENÉ" + +#: tcl/mini.tcl:1889 +msgid "ESTOP PUSH" +msgstr "NÚDZOVO PRERUŠIŤ" + +#: tcl/mini.tcl:1892 tcl/tklinuxcnc.tcl:2233 +msgid "ESTOP RESET" +msgstr "RESET NÚDZOVÉHO PRERUŠENIA" + +#: tcl/mini.tcl:1897 tcl/tklinuxcnc.tcl:2298 +msgid "SPINDLE FORWARD" +msgstr "VRETENO DOPREDU" + +#: tcl/mini.tcl:1899 tcl/tklinuxcnc.tcl:2300 +msgid "SPINDLE REVERSE" +msgstr "VRETENO REVERZNE" + +#: tcl/mini.tcl:1901 tcl/tklinuxcnc.tcl:2302 +msgid "SPINDLE OFF" +msgstr "VYPNÚŤ VRETENO" + +#: tcl/mini.tcl:1903 tcl/tklinuxcnc.tcl:2304 +msgid "SPINDLE INCREASE" +msgstr "ZVÝŠIŤ VRETENO" + +#: tcl/mini.tcl:1905 tcl/tklinuxcnc.tcl:2306 +msgid "SPINDLE DECREASE" +msgstr "ZNÍŽIŤ VRETENO" + +#: tcl/mini.tcl:1907 tcl/tklinuxcnc.tcl:2308 +msgid "SPINDLE ?" +msgstr "VRETENO ?" + +#: tcl/mini.tcl:1911 tcl/tklinuxcnc.tcl:2312 +msgid "BRAKE ON" +msgstr "BRZDY ZAPNUTÉ" + +#: tcl/mini.tcl:1913 tcl/tklinuxcnc.tcl:2314 +msgid "BRAKE OFF" +msgstr "BRZDY VYPNUTÉ" + +#: tcl/mini.tcl:1915 tcl/tklinuxcnc.tcl:2316 +msgid "BRAKE ?" +msgstr "BRZDY ?" + +#: tcl/mini.tcl:1919 tcl/tklinuxcnc.tcl:2274 +msgid "MIST ON" +msgstr "FÚKANIE ZAPNUTÉ" + +#: tcl/mini.tcl:1921 tcl/tklinuxcnc.tcl:2276 +msgid "MIST OFF" +msgstr "FÚKANIE VYPNUTÉ" + +#: tcl/mini.tcl:1923 tcl/tklinuxcnc.tcl:2278 +msgid "MIST ?" +msgstr "FÚKANIE ?" + +#: tcl/mini.tcl:1927 tcl/tklinuxcnc.tcl:2282 +msgid "FLOOD ON" +msgstr "CHLADENIE ZAPNUTÉ" + +#: tcl/mini.tcl:1929 tcl/tklinuxcnc.tcl:2284 +msgid "FLOOD OFF" +msgstr "CHLADENIE VYPNUTÉ" + +#: tcl/mini.tcl:1931 tcl/tklinuxcnc.tcl:2286 +msgid "FLOOD ?" +msgstr "CHLADENIE. ?" + +#: tcl/mini.tcl:2052 +msgid "FEEDHOLD" +msgstr "ZASTAVIŤ" + +#: tcl/mini.tcl:2124 +msgid "" +"TOOL SETUP \n" +" Click or tab to edit. Press enter to return to keyboard machine control." +msgstr "" +"NASTAVENIE NÁSTROJA \n" +"\n" +"Kliknite tu alebo stlačte TAB pre úpravu. Stlačte ENTER pre návrat do " +"ovládania klávesnice stroja." + +#: tcl/mini.tcl:2130 +msgid " TOOL NUMBER " +msgstr "ČÍSLO NÁSTROJA " + +#: tcl/mini.tcl:2131 +msgid " LENGTH " +msgstr "DĹŽKA " + +#: tcl/mini.tcl:2132 +msgid " DIAMETER " +msgstr "PRIEMER " + +#: tcl/mini.tcl:2133 +msgid " COMMENT " +msgstr "POZNÁMKA" + +#: tcl/mini.tcl:2188 +msgid "Add Extra Tool" +msgstr "Pridať nástroj" + +#: tcl/mini.tcl:2189 +msgid "Remove Last Tool" +msgstr "Odstrániť posledný nástroj" + +#: tcl/mini.tcl:2217 tcl/mini.tcl:2253 +#, tcl-format +msgid "Can't update the tool file while machine is in auto and %s." +msgstr "" +"Nie je možné aktualizovať súbor nástroja pokým je stroj v automatickom móde " +"a %s." + +#: tcl/mini.tcl:2229 +msgid "This is not a good number." +msgstr "Toto nie je správne číslo." + +#: tcl/mini.tcl:2293 +msgid "" +"COORDINATE SYSTEM SETUP \n" +"\n" +" Click value to edit with keyboard. Press enter to return to keyboard " +"control of machine. \n" +" " +msgstr "" +"NASTAVENIE SÚRADNÍC SYSTÉMU \n" +"\n" +"Kliknite na hodnotu ktorú chcete upraviť. Stlačte ENTER \n" +"pre návrat do ovládania stroja klávesnicou. " + +#: tcl/mini.tcl:2320 tcl/scripts/Set_Coordinates.tcl:80 +msgid "Axis " +msgstr "Os" + +#: tcl/mini.tcl:2321 +msgid "Value " +msgstr "Hodnota" + +#: tcl/mini.tcl:2326 tcl/scripts/Set_Coordinates.tcl:91 +msgid "Teach" +msgstr "Naučiť" + +#: tcl/mini.tcl:2334 +msgid "Write And Load File " +msgstr "Zapísať a načítať súbor" + +#: tcl/mini.tcl:2336 +msgid "Offset By Radius" +msgstr "Offset uhlu" + +#: tcl/mini.tcl:2337 +msgid "Offset By Length" +msgstr "Offset dĺžky" + +#: tcl/mini.tcl:2342 +msgid "Subtract" +msgstr "Odčítať" + +#: tcl/mini.tcl:2344 src/emc/usr_intf/gmoccapy/gmoccapy.glade:6712 +msgid "Add" +msgstr "Pridať" + +#: tcl/mini.tcl:2366 +msgid "Zero All G54" +msgstr "Nula pre všetky G54" + +#: tcl/mini.tcl:2367 +msgid "Zero All G55" +msgstr "Nula pre všetky G55" + +#: tcl/mini.tcl:2368 +msgid "Zero All G56" +msgstr "Nula pre všetky G56" + +#: tcl/mini.tcl:2369 +msgid "Zero All G57" +msgstr "Nula pre všetky G57" + +#: tcl/mini.tcl:2370 +msgid "Zero All G58" +msgstr "Nula pre všetky G58" + +#: tcl/mini.tcl:2371 +msgid "Zero All G59" +msgstr "Nula pre všetky G59" + +#: tcl/mini.tcl:2372 +msgid "Zero All G59.1" +msgstr "Nula pre všetky G59.1" + +#: tcl/mini.tcl:2373 +msgid "Zero All G59.2" +msgstr "Nula pre všetky G59.2" + +#: tcl/mini.tcl:2374 +msgid "Zero All G59.3" +msgstr "Nula pre všetky G59.3" + +#: tcl/mini.tcl:2375 +msgid "Zero All ????" +msgstr "Nula pre všetky ????" + +#: tcl/mini.tcl:2493 +msgid "Modified..." +msgstr "Zmenené..." + +#: tcl/mini.tcl:2538 +msgid "Save and Load" +msgstr "Uložiť a načítať" + +#: tcl/mini.tcl:2540 src/emc/usr_intf/gscreen/gscreen.glade:3515 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2363 +msgid "Undo" +msgstr "Späť" + +#: tcl/mini.tcl:2541 src/emc/usr_intf/gscreen/gscreen.glade:3526 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2411 +msgid "Redo" +msgstr "Obnoviť" + +#: tcl/mini.tcl:2546 tcl/tooledit.tcl:488 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6695 +msgid "Delete" +msgstr "Vymazať" + +#: tcl/mini.tcl:2551 +msgid "Replace..." +msgstr "Nahradiť..." + +#: tcl/mini.tcl:2664 +msgid "Next Number: " +msgstr "Ďalšie číslo:" + +#: tcl/mini.tcl:2765 +msgid "Basic Help" +msgstr "Pomoc" + +#: tcl/mini.tcl:2765 +msgid "" +"This is a simple ASCII editor like many others.\n" +"\n" +"Ctrl+O Open\n" +"Ctrl+S Save\n" +"Ctrl+Z Undo\n" +"Ctrl+Y Redo\n" +"Ctrl+X Cut\n" +"Ctrl+C Copy\n" +"Ctrl+V Paste\n" +"Del Delete\n" +"Ctrl+A Select All\n" +"\n" +"Ctrl+F Find\n" +"Ctrl+R Replace " +msgstr "" +"Toto je jednoduchý textový editor.\n" +"\n" +"Ctrl+O Otvoriť\n" +"Ctrl +S Uložiť\n" +"Ctrl +Z Späť\n" +"Ctrl +Y Obnoviť\n" +"Ctrl +X Vystrihnúť\n" +"Ctrl +C Kopírovať\n" +"Ctrl +V Vložiť\n" +"Del Zmazať\n" +"Ctrl +A Označiť všetko\n" +"\n" +"Ctrl +F Nájsť\n" +"Ctrl +R Nahradiť " + +#: tcl/mini.tcl:2785 +msgid "" +"tknotepad by Joseph Acosta. \n" +"\n" +" Modified for EMC by: Paul Corner " +msgstr "" +"tknotepad by Joseph Acosta \n" +"\n" +"Modifikoval pre EMC : Paul Corner " + +#: tcl/mini.tcl:2793 +msgid "" +"The contents of this file may have changed, do you wish to to save your " +"changes?" +msgstr "Obsah tohto súboru sa mohol zmeniť. Prajete si uložiť tieto zmeny?" + +#: tcl/mini.tcl:2794 +msgid "New Confirm?" +msgstr "Potvrdiť nové?" + +#: tcl/mini.tcl:2928 +msgid "Print Setup" +msgstr "Vytlačiť nastavenia" + +#: tcl/mini.tcl:2932 +msgid "Print Command: " +msgstr "Vytlačiť príkaz:" + +#: tcl/mini.tcl:3095 +msgid "Find what:" +msgstr "Hľadať:" + +#: tcl/mini.tcl:3101 +msgid "Replace with:" +msgstr "Nahradiť týmto:" + +#: tcl/mini.tcl:3109 +msgid "Find Next" +msgstr "Hľadať dalšie" + +#: tcl/mini.tcl:3112 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2494 +msgid "Replace" +msgstr "Nahradiť" + +#: tcl/mini.tcl:3120 src/emc/usr_intf/gscreen/gscreen.py:2750 +#: src/emc/usr_intf/gmoccapy/dialogs.py:171 +msgid "Up" +msgstr "Hore" + +#: tcl/mini.tcl:3121 src/emc/usr_intf/gscreen/gscreen.py:2754 +#: src/emc/usr_intf/gmoccapy/dialogs.py:175 +msgid "Down" +msgstr "Dole" + +#: tcl/mini.tcl:3124 +msgid "Match case" +msgstr "Porovnať prípady" + +#: tcl/mini.tcl:3569 +msgid "rot-x" +msgstr "Rot-X" + +#: tcl/mini.tcl:3579 +msgid "rot-y" +msgstr "Rot-Y" + +#: tcl/mini.tcl:3589 +msgid "rot-z" +msgstr "Rot-Z" + +#: tcl/mini.tcl:3599 +msgid "zoom" +msgstr "Priblížiť" + +#: tcl/mini.tcl:3655 +msgid "TEST" +msgstr "TEST" + +#: tcl/mini.tcl:3699 +msgid "Hide Setup" +msgstr "Schovať nastavenia." + +#: tcl/mini.tcl:3703 +msgid "Show Setup" +msgstr "Ukázať nastavenia." + +#: tcl/show_errors.tcl:41 +#, fuzzy +msgid "LinuxCNC Errors" +msgstr "Chyby EMC2" + +#: tcl/show_errors.tcl:44 +#, fuzzy +msgid "" +"LinuxCNC terminated with an error. When reporting problems, please include " +"all the information below in your message." +msgstr "" +"EMC2 ukončené kvôli chybe. Pri nahlasovaní problému prosím zahrňte všetky " +"informácie vo vašej správe." + +#: tcl/show_errors.tcl:74 tcl/scripts/Set_Coordinates.tcl:103 +msgid "Close" +msgstr "Ukončiť" + +#: tcl/tklinuxcnc.tcl:154 tcl/tklinuxcnc.tcl:181 +msgid "Set Run Mark" +msgstr "Nastavte značku spustenia" + +#: tcl/tklinuxcnc.tcl:156 +#, tcl-format +msgid "Set run mark at line %s?" +msgstr "Nastaviť značku spustenia v riadku %s?" + +#: tcl/tklinuxcnc.tcl:176 tcl/tklinuxcnc.tcl:204 +msgid "untitled" +msgstr "nepomenovaný" + +#: tcl/tklinuxcnc.tcl:212 +msgid "Load Parameter File" +msgstr "Načítať súbor parametra" + +#: tcl/tklinuxcnc.tcl:261 +#, fuzzy +msgid "LinuxCNC Diagnostics" +msgstr "EMC2 Diagnostika" + +#: tcl/tklinuxcnc.tcl:263 +msgid "Task" +msgstr "Úloha" + +#: tcl/tklinuxcnc.tcl:265 tcl/tklinuxcnc.tcl:288 tcl/tklinuxcnc.tcl:311 +msgid "Heartbeat:" +msgstr "Takt:" + +#: tcl/tklinuxcnc.tcl:268 tcl/tklinuxcnc.tcl:291 tcl/tklinuxcnc.tcl:314 +msgid "Command:" +msgstr "Príkaz:" -#: tcl/mini.tcl:974 -msgid "Show Popin Full" -msgstr "Ukázať plný Popin" +#: tcl/tklinuxcnc.tcl:271 tcl/tklinuxcnc.tcl:294 tcl/tklinuxcnc.tcl:317 +msgid "Command #:" +msgstr "Rozkaz číslo:" -#: tcl/mini.tcl:978 -msgid "Actual Position" -msgstr "Aktuálna pozícia" +#: tcl/tklinuxcnc.tcl:274 tcl/tklinuxcnc.tcl:297 tcl/tklinuxcnc.tcl:320 +msgid "Status:" +msgstr "Stav:" -#: tcl/mini.tcl:980 -msgid "Commanded Position" -msgstr "Zadaná pozícia" +#: tcl/tklinuxcnc.tcl:286 +msgid "Io" +msgstr "Io port" -#: tcl/mini.tcl:983 -msgid "Machine Position" -msgstr "Pozícia stroja" +#: tcl/tklinuxcnc.tcl:309 +msgid "Motion" +msgstr "Pohyb" -#: tcl/mini.tcl:985 -msgid "Relative Position" -msgstr "Relatívna pozícia" +#: tcl/tklinuxcnc.tcl:350 +#, fuzzy +msgid "About TkLinuxCNC" +msgstr "O TkEditore" -#: tcl/mini.tcl:988 tcl/tklinuxcnc.tcl:747 -msgid "Calibration..." -msgstr "Kalibrácia..." +#: tcl/tklinuxcnc.tcl:351 +#, fuzzy +msgid "" +"TkLinuxcnc\n" +"\n" +"Tcl/Tk GUI for LinuxCNC\n" +"\n" +"GPL Version 2 (2012)" +msgstr "" +"TkEmc\n" +"\n" +" Tcl/Tk GUI pre \n" +"Enhanced Machine Controller, Verzia 2 (EMC2)\n" +"\n" +"\n" +"GPL Verzia 2 (2006)" -#: tcl/mini.tcl:990 -msgid "HAL Show..." -msgstr "Ukázať HAL..." +#: tcl/tklinuxcnc.tcl:399 +msgid "Set Tool Offset" +msgstr "Určiť doplnok nástroja" -#: tcl/mini.tcl:992 -msgid "HAL Config..." -msgstr "Nastavenie HAL..." +#: tcl/tklinuxcnc.tcl:404 tcl/tklinuxcnc.tcl:905 +msgid "Tool:" +msgstr "Nástroj:" -#: tcl/mini.tcl:997 -msgid "Program File" -msgstr "Súbor programu" +#: tcl/tklinuxcnc.tcl:722 +msgid "Edit..." +msgstr "Upraviť..." -#: tcl/mini.tcl:998 -#, tcl-format -msgid "Program file is %s" -msgstr "Súbor programu je %s" +#: tcl/tklinuxcnc.tcl:727 +msgid "Tool Table Editor..." +msgstr "" -#: tcl/mini.tcl:999 -msgid "Editor File" -msgstr "Upravovací Súbor" +#: tcl/tklinuxcnc.tcl:730 src/emc/usr_intf/touchy/touchy.glade:1383 +#, fuzzy +msgid "Reload Tool Table" +msgstr "Načítať tabuľku nástrojov" -#: tcl/mini.tcl:1000 -#, tcl-format -msgid "Editor file is %s" -msgstr "Upravovací Súbor je %s" +#: tcl/tklinuxcnc.tcl:740 +msgid "Offsets and Variables..." +msgstr "Doplnky a premenné..." -#: tcl/mini.tcl:1001 -msgid "Parameter File" -msgstr "Súbor parametrov" +#: tcl/tklinuxcnc.tcl:741 +msgid "Diagnostics..." +msgstr "Diagnostika..." + +#: tcl/tklinuxcnc.tcl:742 +msgid "Backplot..." +msgstr "Backplot..." + +#: tcl/tklinuxcnc.tcl:748 +msgid "Testing..." +msgstr "Testujem..." + +#: tcl/tklinuxcnc.tcl:749 +msgid "Debug..." +msgstr "Odstraňovanie chýb..." + +#: tcl/tklinuxcnc.tcl:750 +msgid "Font..." +msgstr "Font..." + +#: tcl/tklinuxcnc.tcl:754 src/emc/usr_intf/axis/scripts/image-to-gcode.py:665 +msgid "Units" +msgstr "Jednotky" + +#: tcl/tklinuxcnc.tcl:755 +msgid "auto" +msgstr "auto" + +#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8873 +msgid "inches" +msgstr "inch" + +#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1609 +#: src/emc/usr_intf/axis/scripts/axis.py:1855 +#: src/emc/usr_intf/axis/scripts/axis.py:2386 +#: src/emc/usr_intf/touchy/touchy.glade:3301 +#: src/emc/usr_intf/stepconf/stepconf.py:1314 +#: src/emc/usr_intf/stepconf/pages.py:625 +#: src/emc/usr_intf/stepconf/main_page.glade:251 +#: src/emc/usr_intf/pncconf/pncconf.py:8869 +#: src/emc/usr_intf/pncconf/pncconf.glade:2195 +#: src/emc/usr_intf/pncconf/pncconf.glade:2362 +#: src/emc/usr_intf/pncconf/pncconf.glade:64552 +#: src/emc/usr_intf/pncconf/pncconf.glade:64621 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm" +msgstr "mm" + +#: tcl/tklinuxcnc.tcl:758 +msgid "cm" +msgstr "cm" + +#: tcl/tklinuxcnc.tcl:762 +msgid "Utilities" +msgstr "Pomôcky" + +#: tcl/tklinuxcnc.tcl:763 +msgid "Hal Scope" +msgstr "HAL-Dosah" + +#: tcl/tklinuxcnc.tcl:785 +msgid "HAL Show" +msgstr "HAL Ukáž" + +#: tcl/tklinuxcnc.tcl:786 +msgid "HAL Config" +msgstr "HAL nastavenie..." + +#: tcl/tklinuxcnc.tcl:792 +msgid "Balloon help" +msgstr "Pomoc v bublinách" + +#: tcl/tklinuxcnc.tcl:815 +msgid "Estop on" +msgstr "Núdzové prerušenie zapnuté" + +#: tcl/tklinuxcnc.tcl:816 +msgid "Estop off" +msgstr "Núdzové prerušenie vypnuté " + +#: tcl/tklinuxcnc.tcl:818 +msgid "Machine on" +msgstr "Stroj zapnutý" + +#: tcl/tklinuxcnc.tcl:819 src/emc/usr_intf/gscreen/gscreen.glade:2452 +msgid "Machine off" +msgstr "Machine off" + +#: tcl/tklinuxcnc.tcl:826 src/emc/usr_intf/touchy/touchy.glade:1561 +msgid "Manual" +msgstr "Manuál" + +#: tcl/tklinuxcnc.tcl:835 +msgid "Mist on" +msgstr "Fúkanie zapnuté" + +#: tcl/tklinuxcnc.tcl:836 +msgid "Mist off" +msgstr "Chladenie vypnuté" + +#: tcl/tklinuxcnc.tcl:843 +msgid "Flood on" +msgstr "Chladenie zapnuté" + +#: tcl/tklinuxcnc.tcl:844 +msgid "Flood off" +msgstr "Chladenie vypnuté" + +#: tcl/tklinuxcnc.tcl:851 +msgid "Lube on" +msgstr "Olej zapnutý" + +#: tcl/tklinuxcnc.tcl:852 +msgid "Lube off" +msgstr "Olej vypnutý" + +#: tcl/tklinuxcnc.tcl:869 +msgid "Spindle forward" +msgstr "Vreteno dopredu" + +#: tcl/tklinuxcnc.tcl:870 +msgid "Spindle reverse" +msgstr "Vreteno dozadu" + +#: tcl/tklinuxcnc.tcl:885 +msgid "Brake on" +msgstr "Brzdy zapnuté" + +#: tcl/tklinuxcnc.tcl:886 +msgid "Brake off" +msgstr "Brzdy vypnuté" + +#: tcl/tklinuxcnc.tcl:907 +msgid "Offset:" +msgstr "Nástrojový doplnok:" + +#: tcl/tklinuxcnc.tcl:913 +msgid "Work Offsets:" +msgstr "Pracovný doplnok:" + +#: tcl/tklinuxcnc.tcl:1233 +msgid "relative" +msgstr "pomerný" + +#: tcl/tklinuxcnc.tcl:1234 +msgid "machine" +msgstr "Stroj" + +#: tcl/tklinuxcnc.tcl:1236 +msgid "actual" +msgstr "Aktuálna" + +#: tcl/tklinuxcnc.tcl:1237 +msgid "commanded" +msgstr "Rozkaz zadaný" + +#: tcl/tklinuxcnc.tcl:1239 +msgid "joint" +msgstr "spoj" + +#: tcl/tklinuxcnc.tcl:1240 +msgid "world" +msgstr "Global" + +#: tcl/tklinuxcnc.tcl:1333 +msgid "Axis Offset" +msgstr "Doplnok osi" + +#: tcl/tklinuxcnc.tcl:1335 +msgid "Set axis value:" +msgstr "Hodnota osi:" -#: tcl/mini.tcl:1002 -#, tcl-format -msgid "Parameter file is %s" -msgstr "Súbor parametrov je %s" +#: tcl/tklinuxcnc.tcl:1429 +msgid "Set Feed Override" +msgstr "Nastav prechod posunu" -#: tcl/mini.tcl:1003 -msgid "Tool File" -msgstr "Súbor nástrojov" +#: tcl/tklinuxcnc.tcl:1435 +msgid "Set feed override:" +msgstr "Nastav prechod posunu:" -#: tcl/mini.tcl:1004 -#, tcl-format -msgid "Tool file is %s" -msgstr "Súbor nástrojov je %s" +#: tcl/tklinuxcnc.tcl:1460 +msgid "Set Spindle Override" +msgstr "Nastaviť zmenu vretena" -#: tcl/mini.tcl:1006 -msgid "Active G Codes" -msgstr "Aktívne G Kódy" +#: tcl/tklinuxcnc.tcl:1466 +msgid "Set spindle speed override:" +msgstr "Nastaviť zmenu rýchlosti vretena:" -#: tcl/mini.tcl:1007 -#, tcl-format -msgid "" -"Active codes include; \n" -"%s" +#: tcl/tklinuxcnc.tcl:1521 +#, fuzzy +msgid "Linear Jog Speed" +msgstr "Rýchlosť krokov" + +#: tcl/tklinuxcnc.tcl:1552 +msgid "Angular Jog Speed (deg)/min:" msgstr "" -"Aktívne kódy sú:\n" -"%s" -#: tcl/mini.tcl:1010 tcl/mini.tcl:2558 tcl/tklinuxcnc.tcl:791 -msgid "Help..." -msgstr "Pomoc..." +#: tcl/tklinuxcnc.tcl:1596 +msgid "Spindle speed Override:" +msgstr "Zmena rýchlosti vretena:" -#: tcl/mini.tcl:1027 tcl/tklinuxcnc.tcl:890 -msgid "ABORT" -msgstr "PRERUŠIŤ" +#: tcl/tklinuxcnc.tcl:1642 +msgid "Program: " +msgstr "Program: " -#: tcl/mini.tcl:1038 tcl/mini.tcl:2048 -msgid "CONTINUE" -msgstr "POKRAČOVAŤ" +#: tcl/tklinuxcnc.tcl:1647 +msgid " - Status: " +msgstr " - Stav: " -#: tcl/mini.tcl:1044 tcl/tklinuxcnc.tcl:828 tcl/tklinuxcnc.tcl:2248 -#: src/emc/usr_intf/touchy/touchy.glade:1264 -msgid "MDI" -msgstr "MDI" +#: tcl/tklinuxcnc.tcl:1663 +msgid "Optional Stop" +msgstr "Možnosť prerušenia" -#: tcl/mini.tcl:1048 tcl/tklinuxcnc.tcl:2239 -msgid "AUTO" -msgstr "AUTO" +#: tcl/tklinuxcnc.tcl:2010 +msgid "Error" +msgstr "Chyba" -#: tcl/mini.tcl:1052 tcl/mini.tcl:1812 tcl/tklinuxcnc.tcl:2141 -#: tcl/tklinuxcnc.tcl:2261 -msgid "MANUAL" -msgstr "MANUÁL" +#: tcl/tklinuxcnc.tcl:2070 tcl/ngcgui_ttt.tcl:46 +msgid "Set Font" +msgstr "Vybrať font" -#: tcl/mini.tcl:1106 -msgid "Tool #:" -msgstr "Nástroj :" +#: tcl/tklinuxcnc.tcl:2079 tcl/ngcgui_ttt.tcl:283 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4827 +msgid "Font" +msgstr "Font" -#: tcl/mini.tcl:1108 -msgid "Length :" -msgstr "Dĺžka:" +#: tcl/tklinuxcnc.tcl:2086 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3257 +msgid "Size" +msgstr "Veľkosť" -#: tcl/mini.tcl:1119 -msgid "Work Offsets: " -msgstr "Pracovný Offset:" +#: tcl/tklinuxcnc.tcl:2093 +msgid "Style" +msgstr "Štýl" -#: tcl/mini.tcl:1121 -msgid "start offsets popup here" -msgstr "Začať zobrazovanie offset tu" +#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:2031 +msgid "ESTOP" +msgstr "NÚDZOVÉ PRERUŠENIE" -#: tcl/mini.tcl:1165 -msgid "start override popup here" -msgstr "Začať prepisovanie prekrytia tu" +#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2979 share/axis/tcl/axis.tcl:2033 +msgid "ON" +msgstr "ZAPNUTÉ" -#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1669 -msgid "Feed Override:" -msgstr "Začať posun:" +#: tcl/tklinuxcnc.tcl:2290 +msgid "LUBE ON" +msgstr "OLEJ ZAPNUTÝ" -#: tcl/mini.tcl:1180 -msgid "-- MESSAGES --" -msgstr "\"-- SPRÁVY--" +#: tcl/tklinuxcnc.tcl:2292 +msgid "LUBE OFF" +msgstr "OLEJ VYPNUTÝ" -#: tcl/mini.tcl:1230 -msgid "toggleView's not doin nothin yet" -msgstr "toggleView ešte nič neurobilo" +#: tcl/tklinuxcnc.tcl:2294 +msgid "LUBE ?" +msgstr "OLEJ ?" -#: tcl/mini.tcl:1282 -msgid "Can't set zero with a tool offset active so I issued G49 to cancel it." -msgstr "" -"Nie je možné nastaviť nulu kým je nástroj aktívny, tak som nariadil G49 aby " -"ho vypol." +#: tcl/scripts/Set_Coordinates.tcl:23 +#, fuzzy +msgid "LinuxCNC Set Coordinate" +msgstr "EMC2 Nastavenie Súradníc" -#: tcl/mini.tcl:1346 -#, tcl-format -msgid "Can't update the var file while machine is in auto and %s." -msgstr "Nie je možné aktualizovať var súbor kým je stroj v auto a %s. " +#: tcl/scripts/Set_Coordinates.tcl:26 +msgid "Coordinate System Control Window" +msgstr "Okno Kontroly Systému Súradníc" -#: tcl/mini.tcl:1400 tcl/tklinuxcnc.tcl:1227 -msgid "override limits" -msgstr "Zmeniť limity" +#: tcl/scripts/Set_Coordinates.tcl:81 +msgid "Var # " +msgstr "Premenná" -#: tcl/mini.tcl:1405 tcl/tklinuxcnc.tcl:1263 -msgid "home" -msgstr "Domov" +#: tcl/scripts/Set_Coordinates.tcl:82 +msgid "Offset Value " +msgstr "Offset hodnota" -#: tcl/mini.tcl:1426 -msgid "DEFAULT" -msgstr "PREDVOLENÉ" +#: tcl/scripts/Set_Coordinates.tcl:83 +msgid "What to Teach" +msgstr "Naučiť" -#: tcl/mini.tcl:1427 -msgid "Speed:" -msgstr "Rýchlosť:" +#: tcl/scripts/Set_Coordinates.tcl:101 +msgid "Set Old" +msgstr "Použiť starú" -#: tcl/mini.tcl:1430 -msgid "RAPID" -msgstr "RÝCHLY" +#: tcl/scripts/Set_Coordinates.tcl:102 +msgid "Set Zero" +msgstr "Použiť nulu" -#: tcl/mini.tcl:1447 tcl/tklinuxcnc.tcl:1391 -msgid "Set Jog Speed" -msgstr "Rýchlosť krokov" +#: tcl/scripts/Set_Coordinates.tcl:104 +msgid "Write" +msgstr "Písať" -#: tcl/mini.tcl:1453 tcl/tklinuxcnc.tcl:1404 -msgid "Set jog speed:" -msgstr "Nastaviť rýchlosť krokov:" +#: tcl/ngcgui.tcl:439 tcl/ngcgui.tcl:846 +msgid "Need non-null file name" +msgstr "" -#: tcl/mini.tcl:1511 -msgid "JOG X +" -msgstr "X +" +#: tcl/ngcgui.tcl:483 +msgid "Disallowed use of ngcgui generated file as Subfile" +msgstr "" -#: tcl/mini.tcl:1512 -msgid "JOG X -" -msgstr "X -" +#: tcl/ngcgui.tcl:489 +msgid "" +"marked (not_a_subfile)\n" +"Not intended for use as a subfile" +msgstr "" -#: tcl/mini.tcl:1516 -msgid "increment" -msgstr "Pričítať" +#: tcl/ngcgui.tcl:503 tcl/ngcgui.tcl:522 tcl/ngcgui.tcl:544 tcl/ngcgui.tcl:557 +#: tcl/ngcgui.tcl:577 tcl/ngcgui.tcl:682 +msgid "bogus" +msgstr "" -#: tcl/mini.tcl:1518 tcl/tklinuxcnc.tcl:602 tcl/tklinuxcnc.tcl:1249 -#: tcl/tklinuxcnc.tcl:1253 -msgid "continuous" -msgstr "Priebežný" +#: tcl/ngcgui.tcl:505 +msgid "can not include subroutines within ngcgui subfile" +msgstr "" -#: tcl/mini.tcl:1520 -msgid "" -"A\n" -"L\n" -"L\n" -"\n" -"Z\n" -"E\n" -"R\n" -"O" +#: tcl/ngcgui.tcl:513 +msgid "Multiple subroutines in file not allowed" msgstr "" -"V\n" -"Š\n" -"A\n" -"D\n" -"E\n" -".\n" -"\n" -"N\n" -"U\n" -"L\n" -"A" -#: tcl/mini.tcl:1588 src/emc/usr_intf/touchy/touchy.glade:1422 -msgid "Spindle Forward" -msgstr "Vreteno Dopredu" +#: tcl/ngcgui.tcl:524 +msgid "sub label" +msgstr "" -#: tcl/mini.tcl:1589 src/emc/usr_intf/touchy/touchy.glade:1433 -msgid "Spindle Reverse" -msgstr "Vreteno Dozadu" +#: tcl/ngcgui.tcl:524 tcl/ngcgui.tcl:579 +msgid "does not match subroutine file name" +msgstr "" -#: tcl/mini.tcl:1590 tcl/tklinuxcnc.tcl:871 -msgid "Spindle off" -msgstr "Vreteno vypni" +#: tcl/ngcgui.tcl:539 tcl/ngcgui.tcl:540 +msgid "ignoring M2 after endsub" +msgstr "" -#: tcl/mini.tcl:1592 src/emc/usr_intf/touchy/touchy.glade:1479 -msgid "Spindle Slower" -msgstr "Vreteno Pomalšie" +#: tcl/ngcgui.tcl:545 +msgid "file contains lines after subend" +msgstr "" -#: tcl/mini.tcl:1596 src/emc/usr_intf/touchy/touchy.glade:1464 -msgid "Spindle Faster" -msgstr "Vreteno rýchlejšie" +#: tcl/ngcgui.tcl:558 +msgid "file contains lines before sub" +msgstr "" -#: tcl/mini.tcl:1632 tcl/tklinuxcnc.tcl:1620 -msgid "MDI:" -msgstr "MDI:" +#: tcl/ngcgui.tcl:579 +msgid "endsub label" +msgstr "" -#: tcl/mini.tcl:1669 tcl/tklinuxcnc.tcl:1658 -#: src/emc/usr_intf/stepconf/stepconf.glade:4403 -#: src/emc/usr_intf/pncconf/pncconf.glade:60509 -#: src/emc/usr_intf/pncconf/pncconf.glade:61603 -#: src/emc/usr_intf/pncconf/pncconf.glade:62696 -#: src/emc/usr_intf/pncconf/pncconf.glade:63789 -#: src/emc/usr_intf/pncconf/pncconf.glade:64889 -msgid "Run" -msgstr "Ausführen" +#: tcl/ngcgui.tcl:684 +msgid "out of sequence positional parameter" +msgstr "" -#: tcl/mini.tcl:1671 tcl/tklinuxcnc.tcl:1659 -#: src/emc/usr_intf/pncconf/pncconf.glade:60574 -#: src/emc/usr_intf/pncconf/pncconf.glade:61668 -#: src/emc/usr_intf/pncconf/pncconf.glade:62761 -#: src/emc/usr_intf/pncconf/pncconf.glade:63854 -msgid "Pause" -msgstr "Pauza" +#: tcl/ngcgui.tcl:684 +msgid "expected" +msgstr "" -#: tcl/mini.tcl:1673 tcl/tklinuxcnc.tcl:1660 -msgid "Resume" -msgstr "Pokračovať" +#: tcl/ngcgui.tcl:735 +msgid "no sub found in file" +msgstr "" -#: tcl/mini.tcl:1675 tcl/tklinuxcnc.tcl:1661 -msgid "Step" -msgstr "Krok" +#: tcl/ngcgui.tcl:738 +msgid "no endsub found in file" +msgstr "" -#: tcl/mini.tcl:1677 tcl/tklinuxcnc.tcl:1662 -msgid "Verify" -msgstr "Overiť" +#: tcl/ngcgui.tcl:801 +msgid "Cannot find gcmc executable" +msgstr "" -#: tcl/mini.tcl:1698 -msgid "RESTART LINE" -msgstr "Reštartovať" +#: tcl/ngcgui.tcl:802 +msgid "Please Install in path" +msgstr "" -#: tcl/mini.tcl:1699 -msgid "Back" -msgstr "Späť" +#: tcl/ngcgui.tcl:810 +msgid "not embedded, deriving outdir from:" +msgstr "" -#: tcl/mini.tcl:1700 -msgid "Ahead" -msgstr "Dopredu" +#: tcl/ngcgui.tcl:1038 +#, fuzzy +msgid "Choose Files" +msgstr "Súbor nástrojov" -#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1221 -msgid "Restart" -msgstr "Reštartovať" +#: tcl/ngcgui.tcl:1178 +#, fuzzy +msgid "Controls" +msgstr "Priebežný" -#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 -#: tcl/tklinuxcnc.tcl:465 src/emc/usr_intf/axis/scripts/axis.py:1885 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:754 -msgid "All files" -msgstr "Všetky súbory" +#: tcl/ngcgui.tcl:1187 +msgid "Preamble" +msgstr "" -#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 -#: tcl/tklinuxcnc.tcl:466 -msgid "Text files" -msgstr "Text files" +#: tcl/ngcgui.tcl:1200 +msgid "Subfile" +msgstr "" -#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 -#: tcl/tklinuxcnc.tcl:467 -msgid "NC files" -msgstr "Súbory" +#: tcl/ngcgui.tcl:1212 +msgid "Postamble" +msgstr "" -#: tcl/mini.tcl:1753 -msgid "" -"The interpreter is running. \n" -" Pressing OK will abort and load the new program" +#: tcl/ngcgui.tcl:1229 +msgid "Retain values on Subfile read" msgstr "" -"Interpret je spustený. \n" -"Stlačenie OK ho preruší a načíta nový program." -#: tcl/mini.tcl:1886 -msgid "ESTOPPED" -msgstr "NÚDZOVO PRERUŠENÉ" +#: tcl/ngcgui.tcl:1237 +#, fuzzy +msgid "Expand subroutine" +msgstr "Rozšíriť strom" -#: tcl/mini.tcl:1889 -msgid "ESTOP PUSH" -msgstr "NÚDZOVO PRERUŠIŤ" +#: tcl/ngcgui.tcl:1247 tcl/ngcgui.tcl:2571 +#, fuzzy +msgid "Autosend" +msgstr "Automatika" -#: tcl/mini.tcl:1892 tcl/tklinuxcnc.tcl:2233 -msgid "ESTOP RESET" -msgstr "RESET NÚDZOVÉHO PRERUŠENIA" +#: tcl/ngcgui.tcl:1257 +msgid "Verbose ngcfile" +msgstr "" -#: tcl/mini.tcl:1897 tcl/tklinuxcnc.tcl:2298 -msgid "SPINDLE FORWARD" -msgstr "VRETENO DOPREDU" +#: tcl/ngcgui.tcl:1267 tcl/ngcgui.tcl:2393 tcl/ngcgui.tcl:2416 +#: tcl/ngcgui.tcl:2446 +msgid "Create Feature" +msgstr "" -#: tcl/mini.tcl:1899 tcl/tklinuxcnc.tcl:2300 -msgid "SPINDLE REVERSE" -msgstr "VRETENO REVERZNE" +#: tcl/ngcgui.tcl:1273 tcl/ngcgui.tcl:3058 +#, fuzzy +msgid "MakeFile" +msgstr "Súbor" -#: tcl/mini.tcl:1901 tcl/tklinuxcnc.tcl:2302 -msgid "SPINDLE OFF" -msgstr "VYPNÚŤ VRETENO" +#: tcl/ngcgui.tcl:1274 tcl/ngcgui.tcl:3055 +msgid "Finalize" +msgstr "" -#: tcl/mini.tcl:1903 tcl/tklinuxcnc.tcl:2304 -msgid "SPINDLE INCREASE" -msgstr "ZVÝŠIŤ VRETENO" +#: tcl/ngcgui.tcl:1291 +msgid "Reread" +msgstr "" -#: tcl/mini.tcl:1905 tcl/tklinuxcnc.tcl:2306 -msgid "SPINDLE DECREASE" -msgstr "ZNÍŽIŤ VRETENO" +#: tcl/ngcgui.tcl:1310 +msgid "SendFileToAxis" +msgstr "" -#: tcl/mini.tcl:1907 tcl/tklinuxcnc.tcl:2308 -msgid "SPINDLE ?" -msgstr "VRETENO ?" +#: tcl/ngcgui.tcl:1353 +msgid "Unrecoverable problem" +msgstr "" -#: tcl/mini.tcl:1911 tcl/tklinuxcnc.tcl:2312 -msgid "BRAKE ON" -msgstr "BRZDY ZAPNUTÉ" +#: tcl/ngcgui.tcl:1431 +msgid "Postamble file" +msgstr "" -#: tcl/mini.tcl:1913 tcl/tklinuxcnc.tcl:2314 -msgid "BRAKE OFF" -msgstr "BRZDY VYPNUTÉ" +#: tcl/ngcgui.tcl:1481 +msgid "Subroutine file" +msgstr "" -#: tcl/mini.tcl:1915 tcl/tklinuxcnc.tcl:2316 -msgid "BRAKE ?" -msgstr "BRZDY ?" +#: tcl/ngcgui.tcl:1545 +#, fuzzy +msgid "Positional Parameters" +msgstr "Rozšíriť parametre" -#: tcl/mini.tcl:1919 tcl/tklinuxcnc.tcl:2274 -msgid "MIST ON" -msgstr "FÚKANIE ZAPNUTÉ" +#: tcl/ngcgui.tcl:1694 +msgid "No Subfile specified" +msgstr "" -#: tcl/mini.tcl:1921 tcl/tklinuxcnc.tcl:2276 -msgid "MIST OFF" -msgstr "FÚKANIE VYPNUTÉ" +#: tcl/ngcgui.tcl:1696 +#, fuzzy +msgid "No parameters yet" +msgstr "Načítať súbor parametra" -#: tcl/mini.tcl:1923 tcl/tklinuxcnc.tcl:2278 -msgid "MIST ?" -msgstr "FÚKANIE ?" +#: tcl/ngcgui.tcl:1705 +msgid "Missing value for parm" +msgstr "" -#: tcl/mini.tcl:1927 tcl/tklinuxcnc.tcl:2282 -msgid "FLOOD ON" -msgstr "CHLADENIE ZAPNUTÉ" +#: tcl/ngcgui.tcl:1726 +msgid "Output file" +msgstr "" -#: tcl/mini.tcl:1929 tcl/tklinuxcnc.tcl:2284 -msgid "FLOOD OFF" -msgstr "CHLADENIE VYPNUTÉ" +#: tcl/ngcgui.tcl:1841 +msgid "Multiple Tabs with Features" +msgstr "" -#: tcl/mini.tcl:1931 tcl/tklinuxcnc.tcl:2286 -msgid "FLOOD ?" -msgstr "CHLADENIE. ?" +#: tcl/ngcgui.tcl:1842 +msgid "Finalize all Tabs?" +msgstr "" -#: tcl/mini.tcl:2052 -msgid "FEEDHOLD" -msgstr "ZASTAVIŤ" +#: tcl/ngcgui.tcl:1842 +msgid "Order" +msgstr "" -#: tcl/mini.tcl:2124 -msgid "" -"TOOL SETUP \n" -" Click or tab to edit. Press enter to return to keyboard machine control." +#: tcl/ngcgui.tcl:1844 +msgid "No, just this page" msgstr "" -"NASTAVENIE NÁSTROJA \n" -"\n" -"Kliknite tu alebo stlačte TAB pre úpravu. Stlačte ENTER pre návrat do " -"ovládania klávesnice stroja." -#: tcl/mini.tcl:2130 -msgid " TOOL NUMBER " -msgstr "ČÍSLO NÁSTROJA " +#: tcl/ngcgui.tcl:1858 +msgid "Axis is not responding" +msgstr "" -#: tcl/mini.tcl:2131 -msgid " LENGTH " -msgstr "DĹŽKA " +#: tcl/ngcgui.tcl:1859 +#, fuzzy +msgid "Error: " +msgstr "Chyba" -#: tcl/mini.tcl:2132 -msgid " DIAMETER " -msgstr "PRIEMER " +#: tcl/ngcgui.tcl:1861 +msgid "Autosend disabled, Ctrl-A toggles autosend" +msgstr "" -#: tcl/mini.tcl:2133 -msgid " COMMENT " -msgstr "POZNÁMKA" +#: tcl/ngcgui.tcl:1863 +msgid "File saving enabled -- Finalize to save" +msgstr "" -#: tcl/mini.tcl:2188 -msgid "Add Extra Tool" -msgstr "Pridať nástroj" +#: tcl/ngcgui.tcl:1879 +msgid "Require .ngc suffix for filename" +msgstr "" -#: tcl/mini.tcl:2189 -msgid "Remove Last Tool" -msgstr "Odstrániť posledný nástroj" +#: tcl/ngcgui.tcl:1889 +msgid "Disallowed overwrite of" +msgstr "" -#: tcl/mini.tcl:2217 tcl/mini.tcl:2253 -#, tcl-format -msgid "Can't update the tool file while machine is in auto and %s." +#: tcl/ngcgui.tcl:1913 +msgid "FEATURE" msgstr "" -"Nie je možné aktualizovať súbor nástroja pokým je stroj v automatickom móde " -"a %s." -#: tcl/mini.tcl:2229 -msgid "This is not a good number." -msgstr "Toto nie je správne číslo." +#: tcl/ngcgui.tcl:1920 +msgid "feature line added" +msgstr "" -#: tcl/mini.tcl:2293 -msgid "" -"COORDINATE SYSTEM SETUP \n" -"\n" -" Click value to edit with keyboard. Press enter to return to keyboard " -"control of machine. \n" -" " +#: tcl/ngcgui.tcl:1932 +msgid "line added" msgstr "" -"NASTAVENIE SÚRADNÍC SYSTÉMU \n" -"\n" -"Kliknite na hodnotu ktorú chcete upraviť. Stlačte ENTER \n" -"pre návrat do ovládania stroja klávesnicou. " -#: tcl/mini.tcl:2320 tcl/scripts/Set_Coordinates.tcl:80 -msgid "Axis " -msgstr "Os" +#: tcl/ngcgui.tcl:1932 +msgid "activated" +msgstr "" -#: tcl/mini.tcl:2321 -msgid "Value " -msgstr "Hodnota" +#: tcl/ngcgui.tcl:1934 +#, fuzzy +msgid "restores" +msgstr "Testovať" -#: tcl/mini.tcl:2326 tcl/scripts/Set_Coordinates.tcl:91 -msgid "Teach" -msgstr "Naučiť" +#: tcl/ngcgui.tcl:1973 +msgid "NOTREACHED mode" +msgstr "" -#: tcl/mini.tcl:2334 -msgid "Write And Load File " -msgstr "Zapísať a načítať súbor" +#: tcl/ngcgui.tcl:1989 +msgid "Positional parameters for" +msgstr "" -#: tcl/mini.tcl:2336 -msgid "Offset By Radius" -msgstr "Offset uhlu" +#: tcl/ngcgui.tcl:1997 +#, fuzzy +msgid "expanded file" +msgstr "Text files" + +#: tcl/ngcgui.tcl:2011 +msgid "call subroutine file" +msgstr "" -#: tcl/mini.tcl:2337 -msgid "Offset By Length" -msgstr "Offset dĺžky" +#: tcl/ngcgui.tcl:2394 +msgid "Enter parms for 1st feature" +msgstr "" -#: tcl/mini.tcl:2342 -msgid "Subtract" -msgstr "Odčítať" +#: tcl/ngcgui.tcl:2401 +#, fuzzy +msgid "New Outfile" +msgstr "Súbory" -#: tcl/mini.tcl:2344 -msgid "Add" -msgstr "Pridať" +#: tcl/ngcgui.tcl:2403 +msgid "Ready to make New Outfile" +msgstr "" -#: tcl/mini.tcl:2366 -msgid "Zero All G54" -msgstr "Nula pre všetky G54" +#: tcl/ngcgui.tcl:2419 tcl/ngcgui.tcl:2452 +msgid "Enter parms for feature " +msgstr "" -#: tcl/mini.tcl:2367 -msgid "Zero All G55" -msgstr "Nula pre všetky G55" +#: tcl/ngcgui.tcl:2439 +msgid "feature" +msgstr "" -#: tcl/mini.tcl:2368 -msgid "Zero All G56" -msgstr "Nula pre všetky G56" +#: tcl/ngcgui.tcl:2444 +msgid "Create Next" +msgstr "" -#: tcl/mini.tcl:2369 -msgid "Zero All G57" -msgstr "Nula pre všetky G57" +#: tcl/ngcgui.tcl:2449 +msgid "Created feature " +msgstr "" -#: tcl/mini.tcl:2370 -msgid "Zero All G58" -msgstr "Nula pre všetky G58" +#: tcl/ngcgui.tcl:2473 +#, fuzzy +msgid "option" +msgstr "Pohyb" -#: tcl/mini.tcl:2371 -msgid "Zero All G59" -msgstr "Nula pre všetky G59" +#: tcl/ngcgui.tcl:2484 +#, fuzzy +msgid "Missing parameters" +msgstr "Rozšíriť parametre" -#: tcl/mini.tcl:2372 -msgid "Zero All G59.1" -msgstr "Nula pre všetky G59.1" +#: tcl/ngcgui.tcl:2488 +#, fuzzy +msgid "Parse Error" +msgstr "Chyba" -#: tcl/mini.tcl:2373 -msgid "Zero All G59.2" -msgstr "Nula pre všetky G59.2" +#: tcl/ngcgui.tcl:2495 +msgid "Null Preamble" +msgstr "" -#: tcl/mini.tcl:2374 -msgid "Zero All G59.3" -msgstr "Nula pre všetky G59.3" +#: tcl/ngcgui.tcl:2500 +msgid "Read Preamble" +msgstr "" -#: tcl/mini.tcl:2375 -msgid "Zero All ????" -msgstr "Nula pre všetky ????" +#: tcl/ngcgui.tcl:2504 +msgid "Preamble Error" +msgstr "" -#: tcl/mini.tcl:2493 -msgid "Modified..." -msgstr "Zmenené..." +#: tcl/ngcgui.tcl:2509 +msgid "Null Postamble" +msgstr "" -#: tcl/mini.tcl:2538 -msgid "Save and Load" -msgstr "Uložiť a načítať" +#: tcl/ngcgui.tcl:2514 +msgid "Read Postamble" +msgstr "" -#: tcl/mini.tcl:2540 -msgid "Undo" -msgstr "Späť" +#: tcl/ngcgui.tcl:2518 +msgid "Postamble Error" +msgstr "" -#: tcl/mini.tcl:2541 -msgid "Redo" -msgstr "Obnoviť" +#: tcl/ngcgui.tcl:2523 +msgid "Read Subfile" +msgstr "" -#: tcl/mini.tcl:2546 -msgid "Delete" -msgstr "Vymazať" +#: tcl/ngcgui.tcl:2528 +#, fuzzy +msgid "Write Error" +msgstr "Chyba" -#: tcl/mini.tcl:2551 -msgid "Replace..." -msgstr "Nahradiť..." +#: tcl/ngcgui.tcl:2532 +msgid "Outfile set" +msgstr "" -#: tcl/mini.tcl:2664 -msgid "Next Number: " -msgstr "Ďalšie číslo:" +#: tcl/ngcgui.tcl:2537 +msgid "Finished" +msgstr "" -#: tcl/mini.tcl:2765 -msgid "Basic Help" -msgstr "Pomoc" +#: tcl/ngcgui.tcl:2542 +#, fuzzy +msgid "Canceled" +msgstr "ZrušiťAbbrechen" -#: tcl/mini.tcl:2765 -msgid "" -"This is a simple ASCII editor like many others.\n" -"\n" -"Ctrl+O Open\n" -"Ctrl+S Save\n" -"Ctrl+Z Undo\n" -"Ctrl+Y Redo\n" -"Ctrl+X Cut\n" -"Ctrl+C Copy\n" -"Ctrl+V Paste\n" -"Del Delete\n" -"Ctrl+A Select All\n" -"\n" -"Ctrl+F Find\n" -"Ctrl+R Replace " +#: tcl/ngcgui.tcl:2548 +msgid "Sent" msgstr "" -"Toto je jednoduchý textový editor.\n" -"\n" -"Ctrl+O Otvoriť\n" -"Ctrl +S Uložiť\n" -"Ctrl +Z Späť\n" -"Ctrl +Y Obnoviť\n" -"Ctrl +X Vystrihnúť\n" -"Ctrl +C Kopírovať\n" -"Ctrl +V Vložiť\n" -"Del Zmazať\n" -"Ctrl +A Označiť všetko\n" -"\n" -"Ctrl +F Nájsť\n" -"Ctrl +R Nahradiť " -#: tcl/mini.tcl:2785 -msgid "" -"tknotepad by Joseph Acosta. \n" -"\n" -" Modified for EMC by: Paul Corner " +#: tcl/ngcgui.tcl:2552 +msgid "SendFileToAxis failed" msgstr "" -"tknotepad by Joseph Acosta \n" -"\n" -"Modifikoval pre EMC : Paul Corner " -#: tcl/mini.tcl:2793 -msgid "" -"The contents of this file may have changed, do you wish to to save your " -"changes?" -msgstr "Obsah tohto súboru sa mohol zmeniť. Prajete si uložiť tieto zmeny?" +#: tcl/ngcgui.tcl:2556 +msgid "Ctrl-k for Key bindings" +msgstr "" -#: tcl/mini.tcl:2794 -msgid "New Confirm?" -msgstr "Potvrdiť nové?" +#: tcl/ngcgui.tcl:2560 +#, fuzzy +msgid "Expand sub" +msgstr "Rozšíriť piny" -#: tcl/mini.tcl:2928 -msgid "Print Setup" -msgstr "Vytlačiť nastavenia" +#: tcl/ngcgui.tcl:2564 +#, fuzzy +msgid "Retain values" +msgstr "Hodnota osi:" -#: tcl/mini.tcl:2932 -msgid "Print Command: " -msgstr "Vytlačiť príkaz:" +#: tcl/ngcgui.tcl:2568 +msgid "Verbose" +msgstr "" -#: tcl/mini.tcl:3095 -msgid "Find what:" -msgstr "Hľadať:" +#: tcl/ngcgui.tcl:2574 +msgid "Finalize Canceled" +msgstr "" -#: tcl/mini.tcl:3101 -msgid "Replace with:" -msgstr "Nahradiť týmto:" +#: tcl/ngcgui.tcl:2711 tcl/ngcgui.tcl:2867 +msgid "Dismiss" +msgstr "" -#: tcl/mini.tcl:3109 -msgid "Find Next" -msgstr "Hľadať dalšie" +#: tcl/ngcgui.tcl:2716 +msgid "ngcgui Error" +msgstr "" -#: tcl/mini.tcl:3112 -msgid "Replace" -msgstr "Nahradiť" +#: tcl/ngcgui.tcl:2739 +msgid "Declining support for tk send bug in ngcgui" +msgstr "" -#: tcl/mini.tcl:3120 -msgid "Up" -msgstr "Hore" +#: tcl/ngcgui.tcl:2740 +msgid "You should upgrade linuxcnc to >= linuxcnc2.5" +msgstr "" -#: tcl/mini.tcl:3121 -msgid "Down" -msgstr "Dole" +#: tcl/ngcgui.tcl:2784 +msgid "pre2.4_send_file_to_axis:error" +msgstr "" -#: tcl/mini.tcl:3124 -msgid "Match case" -msgstr "Porovnať prípady" +#: tcl/ngcgui.tcl:2978 share/axis/tcl/axis.tcl:2032 +#, fuzzy +msgid "OFF" +msgstr "OFFSET" -#: tcl/mini.tcl:3569 -msgid "rot-x" -msgstr "Rot-X" +#: tcl/ngcgui.tcl:2981 +msgid "Toggle autosend" +msgstr "" -#: tcl/mini.tcl:3579 -msgid "rot-y" -msgstr "Rot-Y" +#: tcl/ngcgui.tcl:2982 tcl/ngcgui.tcl:3189 +#, fuzzy +msgid "Clear entries" +msgstr "Príklady konfigurácií" -#: tcl/mini.tcl:3589 -msgid "rot-z" -msgstr "Rot-Z" +#: tcl/ngcgui.tcl:2983 +msgid "Set entries to default values" +msgstr "" -#: tcl/mini.tcl:3599 -msgid "zoom" -msgstr "Priblížiť" +#: tcl/ngcgui.tcl:2984 tcl/ngcgui.tcl:2998 tcl/ngcgui.tcl:3000 +msgid "Open editor specified by" +msgstr "" -#: tcl/mini.tcl:3655 -msgid "TEST" -msgstr "TEST" +#: tcl/ngcgui.tcl:2985 +msgid "on last outfile" +msgstr "" -#: tcl/mini.tcl:3699 -msgid "Hide Setup" -msgstr "Schovať nastavenia." +#: tcl/ngcgui.tcl:2986 +msgid "toggle expand subroutines" +msgstr "" -#: tcl/mini.tcl:3703 -msgid "Show Setup" -msgstr "Ukázať nastavenia." +#: tcl/ngcgui.tcl:2987 +msgid "Create feature" +msgstr "" -#: tcl/show_errors.tcl:41 -#, fuzzy -msgid "LinuxCNC Errors" -msgstr "Chyby EMC2" +#: tcl/ngcgui.tcl:2988 +msgid "Finalize (AUTO send is" +msgstr "" -#: tcl/show_errors.tcl:44 -#, fuzzy -msgid "" -"LinuxCNC terminated with an error. When reporting problems, please include " -"all the information below in your message." +#: tcl/ngcgui.tcl:2989 +msgid "Show key bindings" +msgstr "" + +#: tcl/ngcgui.tcl:2990 +msgid "Restart (cancel pending)" msgstr "" -"EMC2 ukončené kvôli chybe. Pri nahlasovaní problému prosím zahrňte všetky " -"informácie vo vašej správe." -#: tcl/show_errors.tcl:69 tcl/scripts/Set_Coordinates.tcl:103 -msgid "Close" -msgstr "Ukončiť" +#: tcl/ngcgui.tcl:2991 +msgid "(re)Read Preamble" +msgstr "" -#: tcl/tklinuxcnc.tcl:154 tcl/tklinuxcnc.tcl:181 -msgid "Set Run Mark" -msgstr "Nastavte značku spustenia" +#: tcl/ngcgui.tcl:2992 +msgid "(re)Read Postamble" +msgstr "" -#: tcl/tklinuxcnc.tcl:156 -#, tcl-format -msgid "Set run mark at line %s?" -msgstr "Nastaviť značku spustenia v riadku %s?" +#: tcl/ngcgui.tcl:2993 +msgid "(re)Read Subfile" +msgstr "" -#: tcl/tklinuxcnc.tcl:176 tcl/tklinuxcnc.tcl:204 -msgid "untitled" -msgstr "nepomenovaný" +#: tcl/ngcgui.tcl:2994 +msgid "toggle retain values" +msgstr "" -#: tcl/tklinuxcnc.tcl:212 -msgid "Load Parameter File" -msgstr "Načítať súbor parametra" +#: tcl/ngcgui.tcl:2995 +msgid "toggle output file verbosity" +msgstr "" -#: tcl/tklinuxcnc.tcl:261 +#: tcl/ngcgui.tcl:2996 #, fuzzy -msgid "LinuxCNC Diagnostics" -msgstr "EMC2 Diagnostika" +msgid "Show status" +msgstr "Ukázať Reštart" -#: tcl/tklinuxcnc.tcl:263 -msgid "Task" -msgstr "Úloha" +#: tcl/ngcgui.tcl:2997 +msgid "Show full status (debug info)" +msgstr "" -#: tcl/tklinuxcnc.tcl:265 tcl/tklinuxcnc.tcl:288 tcl/tklinuxcnc.tcl:311 -msgid "Heartbeat:" -msgstr "Takt:" +#: tcl/ngcgui.tcl:2999 +msgid "on current subfile" +msgstr "" -#: tcl/tklinuxcnc.tcl:268 tcl/tklinuxcnc.tcl:291 tcl/tklinuxcnc.tcl:314 -msgid "Command:" -msgstr "Príkaz:" +#: tcl/ngcgui.tcl:3001 +msgid "on current preamble" +msgstr "" -#: tcl/tklinuxcnc.tcl:271 tcl/tklinuxcnc.tcl:294 tcl/tklinuxcnc.tcl:317 -msgid "Command #:" -msgstr "Rozkaz číslo:" +#: tcl/ngcgui.tcl:3004 +msgid " Escape Return to Preview page" +msgstr "" -#: tcl/tklinuxcnc.tcl:274 tcl/tklinuxcnc.tcl:297 tcl/tklinuxcnc.tcl:320 -msgid "Status:" -msgstr "Stav:" +#: tcl/ngcgui.tcl:3081 +msgid "Editing requires setting for environmental variable VISUAL" +msgstr "" -#: tcl/tklinuxcnc.tcl:286 -msgid "Io" -msgstr "Io port" +#: tcl/ngcgui.tcl:3082 +msgid "Trying gedit" +msgstr "" -#: tcl/tklinuxcnc.tcl:309 -msgid "Motion" -msgstr "Pohyb" +#: tcl/ngcgui.tcl:3095 +msgid "No file available for editing yet" +msgstr "" -#: tcl/tklinuxcnc.tcl:350 +#: tcl/ngcgui.tcl:3104 tcl/ngcgui.tcl:3113 #, fuzzy -msgid "About TkLinuxCNC" -msgstr "O TkEditore" +msgid "No file available for editing" +msgstr "Nie sú dostupné žiadne detaily." -#: tcl/tklinuxcnc.tcl:351 +#: tcl/ngcgui.tcl:3130 #, fuzzy -msgid "" -"TkLinuxcnc\n" -"\n" -"Tcl/Tk GUI for LinuxCNC\n" -"\n" -"GPL Version 2 (2012)" -msgstr "" -"TkEmc\n" -"\n" -" Tcl/Tk GUI pre \n" -"Enhanced Machine Controller, Verzia 2 (EMC2)\n" -"\n" -"\n" -"GPL Verzia 2 (2006)" +msgid "Status items" +msgstr "Stav:" -#: tcl/tklinuxcnc.tcl:399 -msgid "Set Tool Offset" -msgstr "Určiť doplnok nástroja" +#: tcl/ngcgui.tcl:3143 +msgid "All-page opt items" +msgstr "" -#: tcl/tklinuxcnc.tcl:404 tcl/tklinuxcnc.tcl:905 -msgid "Tool:" -msgstr "Nástroj:" +#: tcl/ngcgui.tcl:3149 +msgid "any-items" +msgstr "" -#: tcl/tklinuxcnc.tcl:722 -msgid "Edit..." -msgstr "Upraviť..." +#: tcl/ngcgui.tcl:3182 +#, fuzzy +msgid "Set defaults" +msgstr "Použiť pôvodné" -#: tcl/tklinuxcnc.tcl:727 -msgid "Tool Table Editor..." +#: tcl/ngcgui.tcl:3257 +msgid "not writable" msgstr "" -#: tcl/tklinuxcnc.tcl:730 src/emc/usr_intf/touchy/touchy.glade:1383 +#: tcl/ngcgui.tcl:3396 tcl/ngcgui.tcl:3577 #, fuzzy -msgid "Reload Tool Table" -msgstr "Načítať tabuľku nástrojov" +msgid "new" +msgstr "Nový" -#: tcl/tklinuxcnc.tcl:740 -msgid "Offsets and Variables..." -msgstr "Doplnky a premenné..." +#: tcl/ngcgui.tcl:3422 +msgid "Open a new Subfile" +msgstr "" -#: tcl/tklinuxcnc.tcl:741 -msgid "Diagnostics..." -msgstr "Diagnostika..." +#: tcl/ngcgui.tcl:3568 +msgid "remove" +msgstr "" -#: tcl/tklinuxcnc.tcl:742 -msgid "Backplot..." -msgstr "Backplot..." +#: tcl/ngcgui.tcl:3590 tcl/ngcgui.tcl:3596 +msgid "move" +msgstr "" -#: tcl/tklinuxcnc.tcl:748 -msgid "Testing..." -msgstr "Testujem..." +#: tcl/ngcgui.tcl:3704 src/emc/usr_intf/pncconf/pncconf.py:7374 +#: src/emc/usr_intf/pncconf/pncconf.py:7485 +#: src/emc/usr_intf/pncconf/pncconf.py:7650 +#, fuzzy +msgid "Custom" +msgstr "Vystrihnúť" -#: tcl/tklinuxcnc.tcl:749 -msgid "Debug..." -msgstr "Odstraňovanie chýb..." +#: tcl/ngcgui.tcl:3730 +msgid "Problem creating page" +msgstr "" -#: tcl/tklinuxcnc.tcl:750 -msgid "Font..." -msgstr "Font..." +#: tcl/ngcgui.tcl:3737 +msgid "entrykeybindings not available" +msgstr "" -#: tcl/tklinuxcnc.tcl:754 src/emc/usr_intf/axis/scripts/image-to-gcode.py:665 -msgid "Units" -msgstr "Jednotky" +#: tcl/ngcgui.tcl:3781 +msgid "Found multiple matches for" +msgstr "" -#: tcl/tklinuxcnc.tcl:755 -msgid "auto" -msgstr "auto" +#: tcl/ngcgui.tcl:3782 +msgid "using path" +msgstr "" -#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8512 -msgid "inches" -msgstr "inch" +#: tcl/ngcgui.tcl:3790 src/emc/usr_intf/axis/scripts/axis.py:2440 +#: src/emc/usr_intf/axis/scripts/axis.py:2453 +msgid "Warning" +msgstr "" -#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1556 -#: src/emc/usr_intf/axis/scripts/axis.py:1726 -#: src/emc/usr_intf/touchy/touchy.glade:3301 -#: src/emc/usr_intf/stepconf/stepconf.py:1685 -#: src/emc/usr_intf/stepconf/stepconf.py:2221 -#: src/emc/usr_intf/stepconf/stepconf.glade:4357 -#: src/emc/usr_intf/pncconf/pncconf.py:8508 -#: src/emc/usr_intf/pncconf/pncconf.glade:2229 -#: src/emc/usr_intf/pncconf/pncconf.glade:2394 -#: src/emc/usr_intf/pncconf/pncconf.glade:57616 -#: src/emc/usr_intf/pncconf/pncconf.glade:57688 -#: src/emc/usr_intf/pncconf/pncconf.glade:60646 -#: src/emc/usr_intf/pncconf/pncconf.glade:61739 -#: src/emc/usr_intf/pncconf/pncconf.glade:62832 -#: src/emc/usr_intf/pncconf/pncconf.glade:63925 -#: src/emc/usr_intf/pncconf/pncconf.glade:65091 -msgid "mm" -msgstr "mm" +#: tcl/ngcgui.tcl:3791 +msgid "File absolute path specifier conflicts with searchpath result" +msgstr "" -#: tcl/tklinuxcnc.tcl:758 -msgid "cm" -msgstr "cm" +#: tcl/ngcgui.tcl:3792 +msgid "Absolute Specifier" +msgstr "" -#: tcl/tklinuxcnc.tcl:762 -msgid "Utilities" -msgstr "Pomôcky" +#: tcl/ngcgui.tcl:3793 +msgid "Using Search Result" +msgstr "" -#: tcl/tklinuxcnc.tcl:763 -msgid "Hal Scope" -msgstr "HAL-Dosah" +#: tcl/ngcgui.tcl:3798 +msgid "File not in Search Path" +msgstr "" -#: tcl/tklinuxcnc.tcl:785 -msgid "HAL Show" -msgstr "HAL Ukáž" +#: tcl/ngcgui.tcl:3800 +msgid "Must be in search path" +msgstr "" -#: tcl/tklinuxcnc.tcl:786 -msgid "HAL Config" -msgstr "HAL nastavenie..." +#: tcl/ngcgui.tcl:3802 +msgid "(File found -- not in search path)" +msgstr "" -#: tcl/tklinuxcnc.tcl:792 -msgid "Balloon help" -msgstr "Pomoc v bublinách" +#: tcl/ngcgui.tcl:3804 +#, fuzzy +msgid "Current directory" +msgstr "EMC2 Pomocník nastavenia" -#: tcl/tklinuxcnc.tcl:815 -msgid "Estop on" -msgstr "Núdzové prerušenie zapnuté" +#: tcl/ngcgui.tcl:3805 +msgid "Search path" +msgstr "" -#: tcl/tklinuxcnc.tcl:816 -msgid "Estop off" -msgstr "Núdzové prerušenie vypnuté " +#: tcl/ngcgui.tcl:3815 +msgid "Check setting for" +msgstr "" -#: tcl/tklinuxcnc.tcl:818 -msgid "Machine on" -msgstr "Stroj zapnutý" +#: tcl/ngcgui.tcl:3816 +msgid "in ini file" +msgstr "" -#: tcl/tklinuxcnc.tcl:819 -msgid "Machine off" -msgstr "Machine off" +#: tcl/ngcgui.tcl:3817 +msgid "(Restart required after fixing ini file)" +msgstr "" -#: tcl/tklinuxcnc.tcl:826 src/emc/usr_intf/touchy/touchy.glade:1561 -msgid "Manual" -msgstr "Manuál" +#: tcl/ngcgui.tcl:3832 +#, fuzzy +msgid "Try to Continue" +msgstr "Priebežný" -#: tcl/tklinuxcnc.tcl:835 -msgid "Mist on" -msgstr "Fúkanie zapnuté" +#: tcl/ngcgui.tcl:3837 +#, fuzzy +msgid "Ngcgui Configuration File Not Found" +msgstr "Informácie o nastavení" -#: tcl/tklinuxcnc.tcl:836 -msgid "Mist off" -msgstr "Chladenie vypnuté" +#: tcl/ngcgui.tcl:3917 +msgid "Missing Tcl Package Img" +msgstr "" -#: tcl/tklinuxcnc.tcl:843 -msgid "Flood on" -msgstr "Chladenie zapnuté" +#: tcl/ngcgui.tcl:3918 +msgid "Please install Img" +msgstr "" -#: tcl/tklinuxcnc.tcl:844 -msgid "Flood off" -msgstr "Chladenie vypnuté" +#: tcl/ngcgui.tcl:4122 +#, fuzzy +msgid "ini file" +msgstr "Súbory" -#: tcl/tklinuxcnc.tcl:851 -msgid "Lube on" -msgstr "Olej zapnutý" +#: tcl/ngcgui.tcl:4131 +msgid "not found" +msgstr "" -#: tcl/tklinuxcnc.tcl:852 -msgid "Lube off" -msgstr "Olej vypnutý" +#: tcl/ngcgui_ttt.tcl:67 +msgid "found truetype-tracer v4 -OK" +msgstr "" -#: tcl/tklinuxcnc.tcl:869 -msgid "Spindle forward" -msgstr "Vreteno dopredu" +#: tcl/ngcgui_ttt.tcl:70 +msgid "Note truetype-tracer v4 is required" +msgstr "" -#: tcl/tklinuxcnc.tcl:870 -msgid "Spindle reverse" -msgstr "Vreteno dozadu" +#: tcl/ngcgui_ttt.tcl:71 +msgid "Note: truetype-tracer v4 is required" +msgstr "" -#: tcl/tklinuxcnc.tcl:885 -msgid "Brake on" -msgstr "Brzdy zapnuté" +#: tcl/ngcgui_ttt.tcl:81 +msgid "ngcgui_app.tcl must be loaded before" +msgstr "" -#: tcl/tklinuxcnc.tcl:886 -msgid "Brake off" -msgstr "Brzdy vypnuté" +#: tcl/ngcgui_ttt.tcl:89 +msgid "Create a subroutine file from truetype-tracer (V4 reqd)" +msgstr "" -#: tcl/tklinuxcnc.tcl:907 -msgid "Offset:" -msgstr "Nástrojový doplnok:" +#: tcl/ngcgui_ttt.tcl:102 tcl/ngcgui_ttt.tcl:115 +#, fuzzy +msgid "problem with" +msgstr "Nahradiť týmto:" -#: tcl/tklinuxcnc.tcl:913 -msgid "Work Offsets:" -msgstr "Pracovný doplnok:" +#: tcl/ngcgui_ttt.tcl:106 +msgid "No entry for" +msgstr "" -#: tcl/tklinuxcnc.tcl:1233 -msgid "relative" -msgstr "pomerný" +#: tcl/ngcgui_ttt.tcl:109 +msgid "wrong version of truetype-tracer" +msgstr "" -#: tcl/tklinuxcnc.tcl:1234 -msgid "machine" -msgstr "Stroj" +#: tcl/ngcgui_ttt.tcl:125 +msgid "not writable, using" +msgstr "" -#: tcl/tklinuxcnc.tcl:1236 -msgid "actual" -msgstr "Aktuálna" +#: tcl/ngcgui_ttt.tcl:125 +msgid "and setting expandsub" +msgstr "" -#: tcl/tklinuxcnc.tcl:1237 -msgid "commanded" -msgstr "Rozkaz zadaný" +#: tcl/ngcgui_ttt.tcl:161 +msgid "Text" +msgstr "" -#: tcl/tklinuxcnc.tcl:1239 -msgid "joint" -msgstr "spoj" +#: tcl/ngcgui_ttt.tcl:171 +msgid "Linescale" +msgstr "" -#: tcl/tklinuxcnc.tcl:1240 -msgid "world" -msgstr "Global" +#: tcl/ngcgui_ttt.tcl:177 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3583 +msgid "none" +msgstr "" -#: tcl/tklinuxcnc.tcl:1333 -msgid "Axis Offset" -msgstr "Doplnok osi" +#: tcl/ngcgui_ttt.tcl:192 +msgid "Subdiv" +msgstr "" -#: tcl/tklinuxcnc.tcl:1335 -msgid "Set axis value:" -msgstr "Hodnota osi:" +#: tcl/ngcgui_ttt.tcl:199 +#, fuzzy +msgid "default" +msgstr "Použiť pôvodné" -#: tcl/tklinuxcnc.tcl:1429 -msgid "Set Feed Override" -msgstr "Nastav prechod posunu" +#: tcl/ngcgui_ttt.tcl:239 +msgid "Mode" +msgstr "" -#: tcl/tklinuxcnc.tcl:1435 -msgid "Set feed override:" -msgstr "Nastav prechod posunu:" +#: tcl/ngcgui_ttt.tcl:247 +msgid "normal" +msgstr "" -#: tcl/tklinuxcnc.tcl:1460 -msgid "Set Spindle Override" -msgstr "Nastaviť zmenu vretena" +#: tcl/ngcgui_ttt.tcl:248 +msgid "date" +msgstr "" -#: tcl/tklinuxcnc.tcl:1466 -msgid "Set spindle speed override:" -msgstr "Nastaviť zmenu rýchlosti vretena:" +#: tcl/ngcgui_ttt.tcl:249 +msgid "fontname" +msgstr "" -#: tcl/tklinuxcnc.tcl:1521 +#: tcl/ngcgui_ttt.tcl:262 #, fuzzy -msgid "Linear Jog Speed" -msgstr "Rýchlosť krokov" +msgid "Switches" +msgstr "inch" -#: tcl/tklinuxcnc.tcl:1552 -msgid "Angular Jog Speed (deg)/min:" +#: tcl/ngcgui_ttt.tcl:270 +msgid "Unicode" msgstr "" -#: tcl/tklinuxcnc.tcl:1596 -msgid "Spindle speed Override:" -msgstr "Zmena rýchlosti vretena:" +#: tcl/ngcgui_ttt.tcl:275 +msgid "Allow Rotation" +msgstr "" -#: tcl/tklinuxcnc.tcl:1642 -msgid "Program: " -msgstr "Program: " +#: tcl/ngcgui_ttt.tcl:295 +msgid "Make ngcgui-compatible subfile and new tab page" +msgstr "" -#: tcl/tklinuxcnc.tcl:1647 -msgid " - Status: " -msgstr " - Stav: " +#: tcl/ngcgui_ttt.tcl:353 +msgid "Null text" +msgstr "" -#: tcl/tklinuxcnc.tcl:1663 -msgid "Optional Stop" -msgstr "Možnosť prerušenia" +#: tcl/ngcgui_ttt.tcl:384 +msgid "Using truetype-tracer default font" +msgstr "" -#: tcl/tklinuxcnc.tcl:2010 -msgid "Error" -msgstr "Chyba" +#: tcl/ngcgui_ttt.tcl:388 +msgid "no such file" +msgstr "" -#: tcl/tklinuxcnc.tcl:2070 tcl/ngcgui_ttt.tcl:46 -msgid "Set Font" -msgstr "Vybrať font" +#: tcl/ngcgui_ttt.tcl:393 +msgid "file not readable" +msgstr "" -#: tcl/tklinuxcnc.tcl:2079 tcl/ngcgui_ttt.tcl:283 -msgid "Font" -msgstr "Font" +#: tcl/ngcgui_ttt.tcl:507 +msgid "Creating new tab page" +msgstr "" -#: tcl/tklinuxcnc.tcl:2086 -msgid "Size" -msgstr "Veľkosť" +#: tcl/ngcgui_app.tcl:25 +msgid "" +"requires command inifindall\n" +"from axis.py (LinuxCNC 2.5) or" +msgstr "" -#: tcl/tklinuxcnc.tcl:2093 -msgid "Style" -msgstr "Štýl" +#: tcl/ngcgui_app.tcl:55 +#, fuzzy +msgid "Substituting" +msgstr "Nastavenia" -#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:1916 -msgid "ESTOP" -msgstr "NÚDZOVÉ PRERUŠENIE" +#: tcl/ngcgui_app.tcl:55 +msgid "for" +msgstr "" -#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2840 share/axis/tcl/axis.tcl:1918 -msgid "ON" -msgstr "ZAPNUTÉ" +#: tcl/ngcgui_app.tcl:59 +msgid "not readable" +msgstr "" -#: tcl/tklinuxcnc.tcl:2290 -msgid "LUBE ON" -msgstr "OLEJ ZAPNUTÝ" +#: tcl/ngcgui_app.tcl:65 tcl/ngcgui_app.tcl:68 +msgid "Unexpected: multiple startups for ngcgui" +msgstr "" -#: tcl/tklinuxcnc.tcl:2292 -msgid "LUBE OFF" -msgstr "OLEJ VYPNUTÝ" +#: tcl/ngcgui_app.tcl:66 +#, fuzzy +msgid "LinuxCNC" +msgstr "EMC2 Debug" -#: tcl/tklinuxcnc.tcl:2294 -msgid "LUBE ?" -msgstr "OLEJ ?" +#: tcl/ngcgui_app.tcl:67 +msgid "for linuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" +msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:23 +#: tcl/ngcgui_app.tcl:86 #, fuzzy -msgid "LinuxCNC Set Coordinate" -msgstr "EMC2 Nastavenie Súradníc" +msgid "LinuxCNC version" +msgstr "Chyby EMC2" -#: tcl/scripts/Set_Coordinates.tcl:26 -msgid "Coordinate System Control Window" -msgstr "Okno Kontroly Systému Súradníc" +#: tcl/ngcgui_app.tcl:87 +msgid "for LinuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" +msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:81 -msgid "Var # " -msgstr "Premenná" +#: tcl/tooledit.tcl:65 +msgid "Problem reading ~/.tooleditrc" +msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:82 -msgid "Offset Value " -msgstr "Offset hodnota" +#: tcl/tooledit.tcl:82 +#, tcl-format +msgid "Note: Ignoring duplicate column name: %s" +msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:83 -msgid "What to Teach" -msgstr "Naučiť" +#: tcl/tooledit.tcl:93 +#, tcl-format +msgid "Unknown column: %s" +msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:101 -msgid "Set Old" -msgstr "Použiť starú" +#: tcl/tooledit.tcl:210 tcl/tooledit.tcl:213 tcl/tooledit.tcl:598 +#: tcl/tooledit.tcl:599 tcl/tooledit.tcl:1032 +msgid "NEW" +msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:102 -msgid "Set Zero" -msgstr "Použiť nulu" +#: tcl/tooledit.tcl:232 +#, tcl-format +msgid "%s must be a number" +msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:104 -msgid "Write" -msgstr "Písať" +#: tcl/tooledit.tcl:241 +#, tcl-format +msgid "filename: <%s> not readable" +msgstr "" -#: tcl/ngcgui.tcl:467 -msgid "Need non-null file name" +#: tcl/tooledit.tcl:245 +#, tcl-format +msgid "filename: <%s> not writable" msgstr "" -#: tcl/ngcgui.tcl:543 -msgid "Disallowed use of ngcgui generated file as Subfile" +#: tcl/tooledit.tcl:250 +#, tcl-format +msgid "directory: <%s> not writable" msgstr "" -#: tcl/ngcgui.tcl:549 -msgid "" -"marked (not_a_subfile)\n" -"Not intended for use as a subfile" +#: tcl/tooledit.tcl:294 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, value <%s> is not a number" msgstr "" -#: tcl/ngcgui.tcl:564 -msgid "Multiple subroutines in file not allowed" +#: tcl/tooledit.tcl:300 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, expected integer not <%s>" msgstr "" -#: tcl/ngcgui.tcl:573 tcl/ngcgui.tcl:595 tcl/ngcgui.tcl:608 tcl/ngcgui.tcl:650 -#: tcl/ngcgui.tcl:755 -msgid "bogus" +#: tcl/tooledit.tcl:316 +#, tcl-format +msgid "At linenumber %d, Unknown tag <%s>" msgstr "" -#: tcl/ngcgui.tcl:575 -msgid "sub label" +#: tcl/tooledit.tcl:399 +#, tcl-format +msgid "%s: Column sorting not available with tcl_version==%s" msgstr "" -#: tcl/ngcgui.tcl:575 tcl/ngcgui.tcl:652 -msgid "does not match subroutine file name" +#: tcl/tooledit.tcl:408 +msgid "tool" msgstr "" -#: tcl/ngcgui.tcl:590 tcl/ngcgui.tcl:591 -msgid "ignoring M2 after endsub" +#: tcl/tooledit.tcl:409 +msgid "poc" +msgstr "" + +#: tcl/tooledit.tcl:410 +#, fuzzy +msgid "diam" +msgstr "Priemer:" + +#: tcl/tooledit.tcl:411 +msgid "front" +msgstr "" + +#: tcl/tooledit.tcl:412 +msgid "back" +msgstr "" + +#: tcl/tooledit.tcl:413 +msgid "orien" msgstr "" -#: tcl/ngcgui.tcl:596 -msgid "file contains lines after subend" -msgstr "" +#: tcl/tooledit.tcl:414 +#, fuzzy +msgid "comment" +msgstr "Pričítať" + +#: tcl/tooledit.tcl:444 +#, fuzzy +msgid "Del" +msgstr "Vymazať" + +#: tcl/tooledit.tcl:473 +#, fuzzy +msgid "ReLoadTable" +msgstr "Načítať tabuľku nástrojov" + +#: tcl/tooledit.tcl:478 +#, fuzzy +msgid "SaveFile" +msgstr "Uložiť" -#: tcl/ngcgui.tcl:609 -msgid "file contains lines before sub" +#: tcl/tooledit.tcl:483 +msgid "ReRead" msgstr "" -#: tcl/ngcgui.tcl:652 -msgid "endsub label" -msgstr "" +#: tcl/tooledit.tcl:485 +#, fuzzy +msgid "AddTool" +msgstr "Nástroje" -#: tcl/ngcgui.tcl:757 -msgid "out of sequence positional parameter" +#: tcl/tooledit.tcl:535 +#, tcl-format +msgid "Opened %s" msgstr "" -#: tcl/ngcgui.tcl:757 -msgid "expected" +#: tcl/tooledit.tcl:536 +#, tcl-format +msgid "Created %s" msgstr "" -#: tcl/ngcgui.tcl:817 -msgid "toomany" +#: tcl/tooledit.tcl:537 +msgid "File updated" msgstr "" -#: tcl/ngcgui.tcl:868 -msgid "no sub found in file" +#: tcl/tooledit.tcl:538 +msgid "File modified" msgstr "" -#: tcl/ngcgui.tcl:871 -msgid "no endsub found in file" +#: tcl/tooledit.tcl:539 +msgid "File check errors" msgstr "" -#: tcl/ngcgui.tcl:961 -#, fuzzy -msgid "Choose Files" -msgstr "Súbor nástrojov" - -#: tcl/ngcgui.tcl:1100 -#, fuzzy -msgid "Controls" -msgstr "Priebežný" - -#: tcl/ngcgui.tcl:1109 -msgid "Preamble" +#: tcl/tooledit.tcl:540 +msgid "File checked" msgstr "" -#: tcl/ngcgui.tcl:1122 -msgid "Subfile" +#: tcl/tooledit.tcl:541 +msgid "File items deleted" msgstr "" -#: tcl/ngcgui.tcl:1134 -msgid "Postamble" +#: tcl/tooledit.tcl:542 +msgid "Bogus lines in file ignored" msgstr "" -#: tcl/ngcgui.tcl:1151 -msgid "Retain values on Subfile read" +#: tcl/tooledit.tcl:543 +msgid "File errors -- Check Entries" msgstr "" -#: tcl/ngcgui.tcl:1159 -#, fuzzy -msgid "Expand subroutine" -msgstr "Rozšíriť strom" - -#: tcl/ngcgui.tcl:1168 tcl/ngcgui.tcl:2414 -#, fuzzy -msgid "Autosend" -msgstr "Automatika" - -#: tcl/ngcgui.tcl:1178 -msgid "Verbose ngcfile" +#: tcl/tooledit.tcl:544 +msgid "Warning: File changed by another process" msgstr "" -#: tcl/ngcgui.tcl:1188 tcl/ngcgui.tcl:2235 tcl/ngcgui.tcl:2259 -#: tcl/ngcgui.tcl:2289 -msgid "Create Feature" +#: tcl/tooledit.tcl:545 +msgid "Warning: File deleted by another process" msgstr "" -#: tcl/ngcgui.tcl:1194 tcl/ngcgui.tcl:2919 +#: tcl/tooledit.tcl:546 #, fuzzy -msgid "MakeFile" -msgstr "Súbor" +msgid "Added Tool" +msgstr "Pridať nástroj" -#: tcl/ngcgui.tcl:1195 tcl/ngcgui.tcl:2916 -msgid "Finalize" +#: tcl/tooledit.tcl:550 +#, tcl-format +msgid "Sorted by %s, increasing" msgstr "" -#: tcl/ngcgui.tcl:1212 -msgid "Reread" +#: tcl/tooledit.tcl:551 +#, tcl-format +msgid "Sorted by %s, decreasing" msgstr "" -#: tcl/ngcgui.tcl:1231 -msgid "SendFileToAxis" +#: tcl/tooledit.tcl:593 +msgid "Added" msgstr "" -#: tcl/ngcgui.tcl:1274 -msgid "Unrecoverable problem" +#: tcl/tooledit.tcl:802 +#, tcl-format +msgid "Tool %s, Column %s, parameter %s is not a number" msgstr "" -#: tcl/ngcgui.tcl:1374 -msgid "Postamble file" +#: tcl/tooledit.tcl:811 +#, tcl-format +msgid "Tool %s, parameter %s must be nonnegative integer" msgstr "" -#: tcl/ngcgui.tcl:1424 -msgid "Subroutine file" +#: tcl/tooledit.tcl:819 +#, tcl-format +msgid "Tool %s: must be 0..9 integer" msgstr "" -#: tcl/ngcgui.tcl:1482 -#, fuzzy -msgid "Positional Parameters" -msgstr "Rozšíriť parametre" +#: tcl/tooledit.tcl:826 +#, tcl-format +msgid "Tool %s: <%s> must be between -360 and 360" +msgstr "" -#: tcl/ngcgui.tcl:1587 -msgid "_Globals" +#: tcl/tooledit.tcl:842 +#, tcl-format +msgid "Pocket <%s> specified multiple times" msgstr "" -#: tcl/ngcgui.tcl:1690 -msgid "No Subfile specified" +#: tcl/tooledit.tcl:857 +#, tcl-format +msgid "Tool <%s> specified multiple times" msgstr "" -#: tcl/ngcgui.tcl:1692 +#: tcl/tooledit.tcl:902 #, fuzzy -msgid "No parameters yet" -msgstr "Načítať súbor parametra" +msgid "File Modified" +msgstr "Zmenené..." -#: tcl/ngcgui.tcl:1701 -msgid "Missing value for parm" +#: tcl/tooledit.tcl:903 +msgid "Save Modifications to File?" msgstr "" -#: tcl/ngcgui.tcl:1735 -msgid "Output file" +#: tcl/tooledit.tcl:930 +#, tcl-format +msgid "" +"Only these columns are currently used:\n" +"\n" +" %s" msgstr "" -#: tcl/ngcgui.tcl:1827 -msgid "Positional parameters for" +#: tcl/tooledit.tcl:931 +msgid "Limit display to these columns by specifying" msgstr "" -#: tcl/ngcgui.tcl:1835 +#: tcl/tooledit.tcl:933 #, fuzzy -msgid "expanded file" -msgstr "Text files" +msgid "Format for ini file is" +msgstr "Nie je možné otvoriť %s." -#: tcl/ngcgui.tcl:1849 -msgid "call subroutine file" +#: tcl/tooledit.tcl:935 +msgid "For standalone use, invoke as" msgstr "" -#: tcl/ngcgui.tcl:1919 -msgid "Multiple Tabs with Features" +#: tcl/tooledit.tcl:936 +msgid "tool_table_filename" msgstr "" -#: tcl/ngcgui.tcl:1920 -msgid "Finalize all Tabs?" +#: tcl/tooledit.tcl:956 +#, tcl-format +msgid "Created by %s" msgstr "" -#: tcl/ngcgui.tcl:1920 -msgid "Order" +#: tcl/tooledit.tcl:957 +msgid "Saved geometry (updated on program termination)" msgstr "" -#: tcl/ngcgui.tcl:1922 -msgid "No, just this page" +#: tcl/tooledit.tcl:980 +#, tcl-format +msgid "" +"%s: Axis inifile specifies multiple inifile items for: [EMCIO]TOOL_TABLE" msgstr "" -#: tcl/ngcgui.tcl:1936 -msgid "Axis is not responding" +#: tcl/tooledit.tcl:981 +#, tcl-format +msgid "%s: Using: %s" msgstr "" -#: tcl/ngcgui.tcl:1937 -#, fuzzy -msgid "Error: " -msgstr "Chyba" - -#: tcl/ngcgui.tcl:1939 -msgid "Autosend disabled, Ctrl-A toggles autosend" +#: tcl/tooledit.tcl:990 +#, tcl-format +msgid "" +"%s: Warning: Axis is running but the tool table file <%s> \n" +"differs from the standalone startup file <%s>" msgstr "" -#: tcl/ngcgui.tcl:1941 -msgid "File saving enabled -- Finalize to save" +#: tcl/tooledit.tcl:1004 +msgid "Must be On and Idle to reload tool table" msgstr "" -#: tcl/ngcgui.tcl:1957 -msgid "Require .ngc suffix for filename" +#: tcl/tooledit.tcl:1093 +msgid "Usage" msgstr "" -#: tcl/ngcgui.tcl:1967 -msgid "Disallowed overwrite of" +#: tcl/tooledit.tcl:1094 tcl/tooledit.tcl:1095 +msgid "filename" msgstr "" -#: tcl/ngcgui.tcl:1986 -msgid "FEATURE" +#: tcl/tooledit.tcl:1096 +#, tcl-format +msgid "Allowed column_ names are: %s" msgstr "" -#: tcl/ngcgui.tcl:1993 -msgid "feature line added" +#: tcl/tooledit.tcl:1106 +#, fuzzy +msgid "Missing filename" +msgstr "Rozšíriť parametre" + +#: src/emc/usr_intf/axis/scripts/axis.py:183 +msgid "Emergency stop" msgstr "" -#: tcl/ngcgui.tcl:2002 -msgid "line added" +#: src/emc/usr_intf/axis/scripts/axis.py:184 +#, fuzzy +msgid "Turn machine on" +msgstr "Stroj zapnutý" + +#: src/emc/usr_intf/axis/scripts/axis.py:186 +msgid "Activate first axis" msgstr "" -#: tcl/ngcgui.tcl:2002 -msgid "activated" +#: src/emc/usr_intf/axis/scripts/axis.py:187 +msgid "Activate second axis" msgstr "" -#: tcl/ngcgui.tcl:2004 -#, fuzzy -msgid "restores" -msgstr "Testovať" +#: src/emc/usr_intf/axis/scripts/axis.py:188 +msgid "Activate third axis" +msgstr "" -#: tcl/ngcgui.tcl:2041 -msgid "NOTREACHED mode" +#: src/emc/usr_intf/axis/scripts/axis.py:189 +msgid "Activate fourth axis" msgstr "" -#: tcl/ngcgui.tcl:2236 -msgid "Enter parms for 1st feature" +#: src/emc/usr_intf/axis/scripts/axis.py:190 +msgid "Activate fifth through ninth axis" msgstr "" -#: tcl/ngcgui.tcl:2243 +#: src/emc/usr_intf/axis/scripts/axis.py:191 #, fuzzy -msgid "New Outfile" -msgstr "Súbory" +msgid "Set Feed Override from 0% to 100%" +msgstr "Nastav prechod posunu" -#: tcl/ngcgui.tcl:2245 -msgid "Ready to make New Outfile" +#: src/emc/usr_intf/axis/scripts/axis.py:192 +msgid ", and ." msgstr "" -#: tcl/ngcgui.tcl:2262 tcl/ngcgui.tcl:2295 -msgid "Enter parms for feature " -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:192 +#, fuzzy +msgid "Select jog speed" +msgstr "Nastaviť rýchlosť krokov:" -#: tcl/ngcgui.tcl:2282 -msgid "feature" +#: src/emc/usr_intf/axis/scripts/axis.py:193 +msgid "< and >" msgstr "" -#: tcl/ngcgui.tcl:2287 -msgid "Create Next" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:193 +#, fuzzy +msgid "Select angular jog speed" +msgstr "Nastaviť rýchlosť krokov:" -#: tcl/ngcgui.tcl:2292 -msgid "Created feature " +#: src/emc/usr_intf/axis/scripts/axis.py:194 +msgid "I, Shift-I" msgstr "" -#: tcl/ngcgui.tcl:2316 +#: src/emc/usr_intf/axis/scripts/axis.py:194 share/axis/tcl/axis.tcl:2481 #, fuzzy -msgid "option" -msgstr "Pohyb" +msgid "Select jog increment" +msgstr "Pričítať" -#: tcl/ngcgui.tcl:2327 +#: src/emc/usr_intf/axis/scripts/axis.py:195 #, fuzzy -msgid "Missing parameters" -msgstr "Rozšíriť parametre" +msgid "Continuous jog" +msgstr "Priebežný" -#: tcl/ngcgui.tcl:2331 +#: src/emc/usr_intf/axis/scripts/axis.py:196 +#: src/emc/usr_intf/pncconf/pncconf.py:408 #, fuzzy -msgid "Parse Error" -msgstr "Chyba" +msgid "Home" +msgstr "Domov" -#: tcl/ngcgui.tcl:2338 -msgid "Null Preamble" +#: src/emc/usr_intf/axis/scripts/axis.py:196 +msgid "Send active axis home" msgstr "" -#: tcl/ngcgui.tcl:2343 -msgid "Read Preamble" +#: src/emc/usr_intf/axis/scripts/axis.py:197 +msgid "Ctrl-Home" msgstr "" -#: tcl/ngcgui.tcl:2347 -msgid "Preamble Error" +#: src/emc/usr_intf/axis/scripts/axis.py:197 +msgid "Home all axes" msgstr "" -#: tcl/ngcgui.tcl:2352 -msgid "Null Postamble" +#: src/emc/usr_intf/axis/scripts/axis.py:198 +msgid "Shift-Home" msgstr "" -#: tcl/ngcgui.tcl:2357 -msgid "Read Postamble" +#: src/emc/usr_intf/axis/scripts/axis.py:198 +msgid "Zero G54 offset for active axis" msgstr "" -#: tcl/ngcgui.tcl:2361 -msgid "Postamble Error" +#: src/emc/usr_intf/axis/scripts/axis.py:199 +msgid "End" msgstr "" -#: tcl/ngcgui.tcl:2366 -msgid "Read Subfile" +#: src/emc/usr_intf/axis/scripts/axis.py:199 +msgid "Set G54 offset for active axis" msgstr "" -#: tcl/ngcgui.tcl:2371 -#, fuzzy -msgid "Write Error" -msgstr "Chyba" +#: src/emc/usr_intf/axis/scripts/axis.py:200 +msgid "Jog active axis" +msgstr "" -#: tcl/ngcgui.tcl:2375 -msgid "Outfile set" +#: src/emc/usr_intf/axis/scripts/axis.py:203 +msgid "Left, Right" msgstr "" -#: tcl/ngcgui.tcl:2380 -msgid "Finished" +#: src/emc/usr_intf/axis/scripts/axis.py:203 +msgid "Jog first axis" msgstr "" -#: tcl/ngcgui.tcl:2385 +#: src/emc/usr_intf/axis/scripts/axis.py:204 #, fuzzy -msgid "Canceled" -msgstr "ZrušiťAbbrechen" +msgid "Up, Down" +msgstr "Dole" -#: tcl/ngcgui.tcl:2391 -msgid "Sent" +#: src/emc/usr_intf/axis/scripts/axis.py:204 +msgid "Jog second axis" msgstr "" -#: tcl/ngcgui.tcl:2395 -msgid "SendFileToAxis failed" +#: src/emc/usr_intf/axis/scripts/axis.py:205 +msgid "Pg Up, Pg Dn" msgstr "" -#: tcl/ngcgui.tcl:2399 -msgid "Ctrl-k for Key bindings" +#: src/emc/usr_intf/axis/scripts/axis.py:205 +msgid "Jog third axis" msgstr "" -#: tcl/ngcgui.tcl:2403 -#, fuzzy -msgid "Expand sub" -msgstr "Rozšíriť piny" - -#: tcl/ngcgui.tcl:2407 -#, fuzzy -msgid "Retain values" -msgstr "Hodnota osi:" - -#: tcl/ngcgui.tcl:2411 -msgid "Verbose" +#: src/emc/usr_intf/axis/scripts/axis.py:206 +msgid "Shift+above jogs" msgstr "" -#: tcl/ngcgui.tcl:2417 -msgid "Finalize Canceled" +#: src/emc/usr_intf/axis/scripts/axis.py:206 +msgid "Jog at traverse speed" msgstr "" -#: tcl/ngcgui.tcl:2572 tcl/ngcgui.tcl:2728 -msgid "Dismiss" +#: src/emc/usr_intf/axis/scripts/axis.py:207 +msgid "Jog fourth axis" msgstr "" -#: tcl/ngcgui.tcl:2577 -msgid "ngcgui Error" +#: src/emc/usr_intf/axis/scripts/axis.py:210 +msgid "Toggle between Drag and Rotate mode" msgstr "" -#: tcl/ngcgui.tcl:2600 -msgid "Declining support for tk send bug in ngcgui" +#: src/emc/usr_intf/axis/scripts/axis.py:211 +msgid "Left Button" msgstr "" -#: tcl/ngcgui.tcl:2601 -msgid "You should upgrade linuxcnc to >= linuxcnc2.5" +#: src/emc/usr_intf/axis/scripts/axis.py:211 +msgid "Pan, rotate or select line" msgstr "" -#: tcl/ngcgui.tcl:2645 -msgid "pre2.4_send_file_to_axis:error" +#: src/emc/usr_intf/axis/scripts/axis.py:212 +msgid "Shift+Left Button" msgstr "" -#: tcl/ngcgui.tcl:2839 share/axis/tcl/axis.tcl:1917 -#, fuzzy -msgid "OFF" -msgstr "OFFSET" - -#: tcl/ngcgui.tcl:2842 -msgid "Toggle autosend" +#: src/emc/usr_intf/axis/scripts/axis.py:212 +msgid "Rotate or pan" msgstr "" -#: tcl/ngcgui.tcl:2843 tcl/ngcgui.tcl:3057 -#, fuzzy -msgid "Clear entries" -msgstr "Príklady konfigurácií" +#: src/emc/usr_intf/axis/scripts/axis.py:213 +msgid "Right Button" +msgstr "" -#: tcl/ngcgui.tcl:2844 -msgid "Set entries to default values" +#: src/emc/usr_intf/axis/scripts/axis.py:213 +#: src/emc/usr_intf/axis/scripts/axis.py:215 +#: src/emc/usr_intf/axis/scripts/axis.py:216 +msgid "Zoom view" msgstr "" -#: tcl/ngcgui.tcl:2845 tcl/ngcgui.tcl:2859 tcl/ngcgui.tcl:2861 -msgid "Open editor specified by" +#: src/emc/usr_intf/axis/scripts/axis.py:214 +msgid "Wheel Button" msgstr "" -#: tcl/ngcgui.tcl:2846 -msgid "on last outfile" +#: src/emc/usr_intf/axis/scripts/axis.py:214 +msgid "Rotate view" msgstr "" -#: tcl/ngcgui.tcl:2847 -msgid "toggle expand subroutines" +#: src/emc/usr_intf/axis/scripts/axis.py:215 +msgid "Rotate Wheel" msgstr "" -#: tcl/ngcgui.tcl:2848 -msgid "Create feature" +#: src/emc/usr_intf/axis/scripts/axis.py:216 +msgid "Control+Left Button" msgstr "" -#: tcl/ngcgui.tcl:2849 -msgid "Finalize (AUTO send is" +#: src/emc/usr_intf/axis/scripts/axis.py:219 +#, fuzzy +msgid "Manual control" +msgstr "Manuál" + +#: src/emc/usr_intf/axis/scripts/axis.py:220 +msgid "Code entry (MDI)" msgstr "" -#: tcl/ngcgui.tcl:2850 -msgid "Show key bindings" +#: src/emc/usr_intf/axis/scripts/axis.py:221 +msgid "Control-M" msgstr "" -#: tcl/ngcgui.tcl:2851 -msgid "Restart (cancel pending)" +#: src/emc/usr_intf/axis/scripts/axis.py:221 +msgid "Clear MDI history" msgstr "" -#: tcl/ngcgui.tcl:2852 -msgid "(re)Read Preamble" +#: src/emc/usr_intf/axis/scripts/axis.py:222 +msgid "Control-H" msgstr "" -#: tcl/ngcgui.tcl:2853 -msgid "(re)Read Postamble" +#: src/emc/usr_intf/axis/scripts/axis.py:222 +msgid "Copy selected MDI history elements" msgstr "" -#: tcl/ngcgui.tcl:2854 -msgid "(re)Read Subfile" +#: src/emc/usr_intf/axis/scripts/axis.py:223 +msgid "to clipboard" msgstr "" -#: tcl/ngcgui.tcl:2855 -msgid "toggle retain values" +#: src/emc/usr_intf/axis/scripts/axis.py:224 +msgid "Control-Shift-H" msgstr "" -#: tcl/ngcgui.tcl:2856 -msgid "toggle output file verbosity" +#: src/emc/usr_intf/axis/scripts/axis.py:224 +msgid "Paste clipboard to MDI history" msgstr "" -#: tcl/ngcgui.tcl:2857 +#: src/emc/usr_intf/axis/scripts/axis.py:225 share/axis/tcl/axis.tcl:1183 +#: src/emc/usr_intf/touchy/touchy.glade:508 #, fuzzy -msgid "Show status" -msgstr "Ukázať Reštart" +msgid "Override Limits" +msgstr "Zmeniť limity" -#: tcl/ngcgui.tcl:2858 -msgid "Show full status (debug info)" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:227 +#, fuzzy +msgid "Open program" +msgstr "Program" -#: tcl/ngcgui.tcl:2860 -msgid "on current subfile" +#: src/emc/usr_intf/axis/scripts/axis.py:228 +msgid "Control-R" msgstr "" -#: tcl/ngcgui.tcl:2862 -msgid "on current preamble" +#: src/emc/usr_intf/axis/scripts/axis.py:228 +msgid "Reload program" msgstr "" -#: tcl/ngcgui.tcl:2865 -msgid " Escape Return to Preview page" +#: src/emc/usr_intf/axis/scripts/axis.py:229 +msgid "Control-S" msgstr "" -#: tcl/ngcgui.tcl:2942 -msgid "Editing requires setting for environmental variable VISUAL" +#: src/emc/usr_intf/axis/scripts/axis.py:229 +msgid "Save g-code as" msgstr "" -#: tcl/ngcgui.tcl:2943 -msgid "Trying gedit" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:230 +#, fuzzy +msgid "Run program" +msgstr "Program" -#: tcl/ngcgui.tcl:2955 -msgid "No file available for editing yet" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:231 +#, fuzzy +msgid "Step program" +msgstr "Program" -#: tcl/ngcgui.tcl:2964 tcl/ngcgui.tcl:2973 +#: src/emc/usr_intf/axis/scripts/axis.py:232 #, fuzzy -msgid "No file available for editing" -msgstr "Nie sú dostupné žiadne detaily." +msgid "Pause program" +msgstr "Program" -#: tcl/ngcgui.tcl:2990 +#: src/emc/usr_intf/axis/scripts/axis.py:233 #, fuzzy -msgid "Status items" -msgstr "Stav:" +msgid "Resume program" +msgstr "Pokračovať" -#: tcl/ngcgui.tcl:3003 -msgid "All-page opt items" +#: src/emc/usr_intf/axis/scripts/axis.py:234 +msgid "Stop running program, or" msgstr "" -#: tcl/ngcgui.tcl:3009 -msgid "any-items" +#: src/emc/usr_intf/axis/scripts/axis.py:235 +msgid "stop loading program preview" msgstr "" -#: tcl/ngcgui.tcl:3046 -#, fuzzy -msgid "Set defaults" -msgstr "Použiť pôvodné" +#: src/emc/usr_intf/axis/scripts/axis.py:237 +msgid "Toggle mist" +msgstr "" -#: tcl/ngcgui.tcl:3125 -msgid "not writable" +#: src/emc/usr_intf/axis/scripts/axis.py:238 +msgid "Toggle flood" msgstr "" -#: tcl/ngcgui.tcl:3263 tcl/ngcgui.tcl:3443 +#: src/emc/usr_intf/axis/scripts/axis.py:239 #, fuzzy -msgid "new" -msgstr "Nový" - -#: tcl/ngcgui.tcl:3288 -msgid "Open a new Subfile" -msgstr "" +msgid "Spindle brake off" +msgstr "Vreteno vypni" -#: tcl/ngcgui.tcl:3434 -msgid "remove" +#: src/emc/usr_intf/axis/scripts/axis.py:240 +msgid "Shift-B" msgstr "" -#: tcl/ngcgui.tcl:3456 tcl/ngcgui.tcl:3462 -msgid "move" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:240 +#, fuzzy +msgid "Spindle brake on" +msgstr "Vreteno rýchlejšie" -#: tcl/ngcgui.tcl:3561 src/emc/usr_intf/pncconf/pncconf.py:7022 -#: src/emc/usr_intf/pncconf/pncconf.py:7139 -#: src/emc/usr_intf/pncconf/pncconf.py:7306 +#: src/emc/usr_intf/axis/scripts/axis.py:241 #, fuzzy -msgid "Custom" -msgstr "Vystrihnúť" +msgid "Turn spindle clockwise" +msgstr "Vreteno Pomalšie" -#: tcl/ngcgui.tcl:3587 -msgid "Problem creating page" +#: src/emc/usr_intf/axis/scripts/axis.py:242 +msgid "Turn spindle counterclockwise" msgstr "" -#: tcl/ngcgui.tcl:3594 -msgid "entrykeybindings not available" +#: src/emc/usr_intf/axis/scripts/axis.py:243 +msgid "Turn spindle more slowly" msgstr "" -#: tcl/ngcgui.tcl:3633 -msgid "Found multiple matches for" +#: src/emc/usr_intf/axis/scripts/axis.py:244 +msgid "Turn spindle more quickly" msgstr "" -#: tcl/ngcgui.tcl:3634 -msgid "using path" +#: src/emc/usr_intf/axis/scripts/axis.py:246 +msgid "Control-K" msgstr "" -#: tcl/ngcgui.tcl:3642 src/emc/usr_intf/axis/scripts/axis.py:2255 -#: src/emc/usr_intf/axis/scripts/axis.py:2268 -msgid "Warning" +#: src/emc/usr_intf/axis/scripts/axis.py:246 +msgid "Clear live plot" msgstr "" -#: tcl/ngcgui.tcl:3643 -msgid "File absolute path specifier conflicts with searchpath result" +#: src/emc/usr_intf/axis/scripts/axis.py:247 +msgid "Cycle among preset views" msgstr "" -#: tcl/ngcgui.tcl:3644 -msgid "Absolute Specifier" +#: src/emc/usr_intf/axis/scripts/axis.py:248 +msgid "Cycle among preview, DRO, and user tabs" msgstr "" -#: tcl/ngcgui.tcl:3645 -msgid "Using Search Result" +#: src/emc/usr_intf/axis/scripts/axis.py:250 +#, fuzzy +msgid "Ctrl-Space" +msgstr "Medzera" + +#: src/emc/usr_intf/axis/scripts/axis.py:250 +#, fuzzy +msgid "Clear notifications" +msgstr "Príklady konfigurácií" + +#: src/emc/usr_intf/axis/scripts/axis.py:850 +#, python-format +msgid "Unknown tool %d" msgstr "" -#: tcl/ngcgui.tcl:3650 -msgid "File not in Search Path" +#: src/emc/usr_intf/axis/scripts/axis.py:852 +msgid "No tool" msgstr "" -#: tcl/ngcgui.tcl:3652 -msgid "Must be in search path" +#: src/emc/usr_intf/axis/scripts/axis.py:854 +#, python-format +msgid "Tool %(tool)d, offset %(zo)g, diameter %(dia)g" msgstr "" -#: tcl/ngcgui.tcl:3654 -msgid "(File found -- not in search path)" +#: src/emc/usr_intf/axis/scripts/axis.py:856 +#, python-format +msgid "Tool %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" msgstr "" -#: tcl/ngcgui.tcl:3656 +#: src/emc/usr_intf/axis/scripts/axis.py:1031 #, fuzzy -msgid "Current directory" -msgstr "EMC2 Pomocník nastavenia" +msgid "Filtering..." +msgstr "Testujem..." -#: tcl/ngcgui.tcl:3657 -msgid "Search path" +#: src/emc/usr_intf/axis/scripts/axis.py:1102 +msgid "Filter failed" msgstr "" -#: tcl/ngcgui.tcl:3663 -msgid "Check setting for" +#: src/emc/usr_intf/axis/scripts/axis.py:1103 +#, python-format +msgid "" +"The program %(program)r exited with code %(code)d. Any error messages it " +"produced are shown below:" msgstr "" -#: tcl/ngcgui.tcl:3664 -msgid "in ini file" +#: src/emc/usr_intf/axis/scripts/axis.py:1171 +#, python-format +msgid "G-Code error in %s" msgstr "" -#: tcl/ngcgui.tcl:3665 -msgid "(Restart required after fixing ini file)" +#: src/emc/usr_intf/axis/scripts/axis.py:1172 +#, python-format +msgid "" +"Near line %(seq)d of %(f)s:\n" +"%(error_str)s" msgstr "" -#: tcl/ngcgui.tcl:3680 +#: src/emc/usr_intf/axis/scripts/axis.py:1341 +#: src/emc/usr_intf/axis/scripts/axis.py:2942 share/axis/tcl/axis.tcl:1162 +#: share/axis/tcl/axis.tcl:1164 share/axis/tcl/axis.tcl:2269 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:895 #, fuzzy -msgid "Try to Continue" +msgid "Continuous" msgstr "Priebežný" -#: tcl/ngcgui.tcl:3685 +#: src/emc/usr_intf/axis/scripts/axis.py:1452 +msgid "Ok" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1599 #, fuzzy -msgid "Ngcgui Configuration File Not Found" -msgstr "Informácie o nastavení" +msgid "T Tool Table" +msgstr "Načítať tabuľku nástrojov" -#: tcl/ngcgui.tcl:3765 -msgid "Missing Tcl Package Img" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1610 +#: src/emc/usr_intf/axis/scripts/axis.py:1859 +#: src/emc/usr_intf/axis/scripts/axis.py:2387 +#: src/emc/usr_intf/stepconf/stepconf.py:1328 +#: src/emc/usr_intf/stepconf/pages.py:631 +#, fuzzy +msgid "in" +msgstr "Hlavné" -#: tcl/ngcgui.tcl:3766 -msgid "Please install Img" +#: src/emc/usr_intf/axis/scripts/axis.py:1613 +msgid " radius" msgstr "" -#: tcl/ngcgui.tcl:3965 +#: src/emc/usr_intf/axis/scripts/axis.py:1615 #, fuzzy -msgid "ini file" -msgstr "Súbory" +msgid " diameter" +msgstr "Priemer:" -#: tcl/ngcgui.tcl:3973 -msgid "not found" +#: src/emc/usr_intf/axis/scripts/axis.py:1616 +msgid "°" msgstr "" -#: tcl/ngcgui_ttt.tcl:67 -msgid "found truetype-tracer v4 -OK" +#: src/emc/usr_intf/axis/scripts/axis.py:1625 +#, fuzzy +msgid "Coordinate System:" +msgstr "Okno Kontroly Systému Súradníc" + +#: src/emc/usr_intf/axis/scripts/axis.py:1641 +msgid "fixture" msgstr "" -#: tcl/ngcgui_ttt.tcl:70 -msgid "Note truetype-tracer v4 is required" +#: src/emc/usr_intf/axis/scripts/axis.py:1642 +msgid "workpiece" msgstr "" -#: tcl/ngcgui_ttt.tcl:71 -msgid "Note: truetype-tracer v4 is required" +#: src/emc/usr_intf/axis/scripts/axis.py:1658 +#, fuzzy +msgid "Name:" +msgstr "INI-Názov" + +#: src/emc/usr_intf/axis/scripts/axis.py:1658 +#, fuzzy +msgid "Size:" +msgstr "Veľkosť" + +#: src/emc/usr_intf/axis/scripts/axis.py:1659 +#, fuzzy +msgid "Tool order:" +msgstr "Nástroj :" + +#: src/emc/usr_intf/axis/scripts/axis.py:1659 +msgid "Rapid distance:" msgstr "" -#: tcl/ngcgui_ttt.tcl:81 -msgid "ngcgui_app.tcl must be loaded before" +#: src/emc/usr_intf/axis/scripts/axis.py:1660 +msgid "Feed distance:" msgstr "" -#: tcl/ngcgui_ttt.tcl:89 -msgid "Create a subroutine file from truetype-tracer (V4 reqd)" +#: src/emc/usr_intf/axis/scripts/axis.py:1660 +msgid "Total distance:" msgstr "" -#: tcl/ngcgui_ttt.tcl:102 tcl/ngcgui_ttt.tcl:115 +#: src/emc/usr_intf/axis/scripts/axis.py:1661 #, fuzzy -msgid "problem with" -msgstr "Nahradiť týmto:" +msgid "Run time:" +msgstr "Čas pohybu" -#: tcl/ngcgui_ttt.tcl:106 -msgid "No entry for" +#: src/emc/usr_intf/axis/scripts/axis.py:1661 +msgid "X bounds:" msgstr "" -#: tcl/ngcgui_ttt.tcl:109 -msgid "wrong version of truetype-tracer" +#: src/emc/usr_intf/axis/scripts/axis.py:1662 +msgid "Y bounds:" msgstr "" -#: tcl/ngcgui_ttt.tcl:125 -msgid "not writable, using" +#: src/emc/usr_intf/axis/scripts/axis.py:1662 +msgid "Z bounds:" msgstr "" -#: tcl/ngcgui_ttt.tcl:125 -msgid "and setting expandsub" +#: src/emc/usr_intf/axis/scripts/axis.py:1663 +msgid "A bounds:" msgstr "" -#: tcl/ngcgui_ttt.tcl:161 -msgid "Text" +#: src/emc/usr_intf/axis/scripts/axis.py:1663 +msgid "B bounds:" msgstr "" -#: tcl/ngcgui_ttt.tcl:171 -msgid "Linescale" +#: src/emc/usr_intf/axis/scripts/axis.py:1664 +msgid "C bounds:" msgstr "" -#: tcl/ngcgui_ttt.tcl:177 -msgid "none" +#: src/emc/usr_intf/axis/scripts/axis.py:1688 +#, python-format +msgid "Program exceeds machine minimum on axis %s" msgstr "" -#: tcl/ngcgui_ttt.tcl:192 -msgid "Subdiv" +#: src/emc/usr_intf/axis/scripts/axis.py:1691 +#, python-format +msgid "Program exceeds machine maximum on axis %s" msgstr "" -#: tcl/ngcgui_ttt.tcl:199 -#, fuzzy -msgid "default" -msgstr "Použiť pôvodné" +#: src/emc/usr_intf/axis/scripts/axis.py:1696 +msgid "Program exceeds machine limits" +msgstr "" -#: tcl/ngcgui_ttt.tcl:239 -msgid "Mode" +#: src/emc/usr_intf/axis/scripts/axis.py:1699 +msgid "Run Anyway" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1581 +msgid "No file loaded" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1845 +#, python-format +msgid "generated from %s" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1851 +#, python-format +msgid "" +"%(size)s bytes\n" +"%(lines)s gcode lines" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1877 +#, python-format +msgid "%.1f minutes" msgstr "" -#: tcl/ngcgui_ttt.tcl:247 -msgid "normal" +#: src/emc/usr_intf/axis/scripts/axis.py:1879 +#, python-format +msgid "%d seconds" msgstr "" -#: tcl/ngcgui_ttt.tcl:248 -msgid "date" +#: src/emc/usr_intf/axis/scripts/axis.py:1887 +#, python-format +msgid "%(a)f to %(b)f = %(diff)f %(units)s" msgstr "" -#: tcl/ngcgui_ttt.tcl:249 -msgid "fontname" +#: src/emc/usr_intf/axis/scripts/axis.py:1888 +msgid "G-Code Properties" msgstr "" -#: tcl/ngcgui_ttt.tcl:262 +#: src/emc/usr_intf/axis/scripts/axis.py:2021 #, fuzzy -msgid "Switches" -msgstr "inch" +msgid "All machinable files" +msgstr "Všetky súbory" -#: tcl/ngcgui_ttt.tcl:270 -msgid "Unicode" +#: src/emc/usr_intf/axis/scripts/axis.py:2022 +#: src/emc/usr_intf/axis/scripts/axis.py:2659 +msgid "rs274ngc files" msgstr "" -#: tcl/ngcgui_ttt.tcl:275 -msgid "Allow Rotation" +#: src/emc/usr_intf/axis/scripts/axis.py:2037 +msgid "axis cannot accept remote command while running" msgstr "" -#: tcl/ngcgui_ttt.tcl:295 -msgid "Make ngcgui-compatible subfile and new tab page" +#: src/emc/usr_intf/axis/scripts/axis.py:2098 +msgid "File not Writable:" msgstr "" -#: tcl/ngcgui_ttt.tcl:353 -msgid "Null text" +#: src/emc/usr_intf/axis/scripts/axis.py:2099 +msgid "" +"This file is not writable\n" +"You can Edit-readonly\n" +"\n" +"or\n" +"\n" +"Save it to your own directory\n" +"then open that saved, writable file" msgstr "" -#: tcl/ngcgui_ttt.tcl:384 -msgid "Using truetype-tracer default font" +#: src/emc/usr_intf/axis/scripts/axis.py:2106 +msgid "Edit-readonly" msgstr "" -#: tcl/ngcgui_ttt.tcl:388 -msgid "no such file" +#: src/emc/usr_intf/axis/scripts/axis.py:2440 +msgid "Axis is already homed, are you sure you want to re-home?" msgstr "" -#: tcl/ngcgui_ttt.tcl:393 -msgid "file not readable" +#: src/emc/usr_intf/axis/scripts/axis.py:2453 +msgid "This axis is already homed, are you sure you want to re-home?" msgstr "" -#: tcl/ngcgui_ttt.tcl:507 -msgid "Creating new tab page" +#: src/emc/usr_intf/axis/scripts/axis.py:2493 share/axis/tcl/axis.tcl:1178 +msgid "Touch Off" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:148 -msgid "Emergency stop" +#: src/emc/usr_intf/axis/scripts/axis.py:2494 +#, python-format +msgid "Enter %s coordinate relative to %%s:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2671 +msgid "Error saving file" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:149 +#: src/emc/usr_intf/axis/scripts/axis.py:3077 +#: src/emc/usr_intf/touchy/touchy.glade:577 +#: src/emc/usr_intf/gscreen/gscreen.glade:2933 #, fuzzy -msgid "Turn machine on" -msgstr "Stroj zapnutý" +msgid "Home All" +msgstr "Uložiť všetky" -#: src/emc/usr_intf/axis/scripts/axis.py:151 -msgid "Activate first axis" +#: src/emc/usr_intf/axis/scripts/axis.py:3079 +msgid "Home all axes [Ctrl-Home]" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:152 -msgid "Activate second axis" +#: src/emc/usr_intf/axis/scripts/axis.py:3082 +msgid "Home All Axes" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:153 -msgid "Activate third axis" +#: src/emc/usr_intf/axis/scripts/axis.py:3089 +msgid "Unhome All Axes" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:154 -msgid "Activate fourth axis" +#: src/emc/usr_intf/axis/scripts/axis.py:3113 +#, python-format +msgid "Home Axis _%s" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:155 -msgid "Activate fifth through ninth axis" +#: src/emc/usr_intf/axis/scripts/axis.py:3115 +#, python-format +msgid "Unhome Axis _%s" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:156 -#, fuzzy -msgid "Set Feed Override from 0% to 100%" -msgstr "Nastav prechod posunu" +#: src/emc/usr_intf/axis/scripts/axis.py:3282 +msgid "Run from here" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:157 -msgid ", and ." +#: src/emc/usr_intf/axis/scripts/axis.py:3598 +msgid "Error in ~/.axisrc" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:157 +#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:102 #, fuzzy -msgid "Select jog speed" -msgstr "Nastaviť rýchlosť krokov:" - -#: src/emc/usr_intf/axis/scripts/axis.py:158 -msgid "< and >" -msgstr "" +msgid "Machinekit Status" +msgstr "Stroj zapnutý" -#: src/emc/usr_intf/axis/scripts/axis.py:158 +#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:118 #, fuzzy -msgid "Select angular jog speed" -msgstr "Nastaviť rýchlosť krokov:" +msgid "Copy All" +msgstr "Kopírovať" -#: src/emc/usr_intf/axis/scripts/axis.py:159 -msgid "I, Shift-I" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 +#, python-format +msgid "Insert tool %d and click continue when ready" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:159 share/axis/tcl/axis.tcl:2356 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:39 +msgid "Remove the tool and click continue when ready" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 +#: src/emc/usr_intf/touchy/mdi.py:49 src/emc/usr_intf/gscreen/mdi.py:49 #, fuzzy -msgid "Select jog increment" -msgstr "Pričítať" +msgid "Tool change" +msgstr "Súbor nástrojov" -#: src/emc/usr_intf/axis/scripts/axis.py:160 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 #, fuzzy -msgid "Continuous jog" +msgid "Continue" msgstr "Priebežný" -#: src/emc/usr_intf/axis/scripts/axis.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:479 -#, fuzzy -msgid "Home" -msgstr "Domov" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:64 +msgid "AXIS Manual Toolchanger" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:161 -msgid "Send active axis home" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:68 +msgid "" +"This window is part of the AXIS manual toolchanger. It is safe to close or " +"iconify this window, or it will close automatically after a few seconds." msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:162 -msgid "Ctrl-Home" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:507 +#, python-format +msgid "%s: Image to gcode" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:162 -msgid "Home all axes" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:508 +msgid "Image to gcode" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:163 -msgid "Shift-Home" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:518 +#, python-format +msgid "" +"Image size: %(w)d x %(h)d pixels\n" +"Minimum pixel value: %(min)d\n" +"Maximum pixel value: %(max)d" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:163 -msgid "Zero G54 offset for active axis" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 +msgid "G20 (in)" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:164 -msgid "End" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 +msgid "G21 (mm)" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:164 -msgid "Set G54 offset for active axis" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 +#: src/emc/usr_intf/touchy/emc_interface.py:417 +#, fuzzy +msgid "None" +msgstr "Nie" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +#, fuzzy +msgid "White" +msgstr "Písať" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +#, fuzzy +msgid "Black" +msgstr "Späť" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Rows" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:165 -msgid "Jog active axis" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Columns" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:168 -msgid "Left, Right" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Rows then Columns" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:168 -msgid "Jog first axis" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Columns then Rows" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:169 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 #, fuzzy -msgid "Up, Down" -msgstr "Dole" +msgid "Positive" +msgstr "Typ polohy" -#: src/emc/usr_intf/axis/scripts/axis.py:169 -msgid "Jog second axis" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +#, fuzzy +msgid "Negative" +msgstr "pomerný" -#: src/emc/usr_intf/axis/scripts/axis.py:170 -msgid "Pg Up, Pg Dn" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Alternating" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:170 -msgid "Jog third axis" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Up Milling" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:171 -msgid "Shift+above jogs" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Down Milling" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:171 -msgid "Jog at traverse speed" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "Ball End" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:172 -msgid "Jog fourth axis" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "Flat End" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:175 -msgid "Toggle between Drag and Rotate mode" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "30 Degree" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:176 -msgid "Left Button" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "45 Degree" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:176 -msgid "Pan, rotate or select line" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "60 Degree" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:177 -msgid "Shift+Left Button" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 +msgid "Secondary" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:177 -msgid "Rotate or pan" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 +msgid "Full" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:178 -msgid "Right Button" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:654 +msgid "Invert Image" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:178 -#: src/emc/usr_intf/axis/scripts/axis.py:180 -#: src/emc/usr_intf/axis/scripts/axis.py:181 -msgid "Zoom view" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:655 +msgid "Normalize Image" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:179 -msgid "Wheel Button" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:656 +msgid "Extend Image Border" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:179 -msgid "Rotate view" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:657 +msgid "Pixel Size (Units)" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:180 -msgid "Rotate Wheel" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:658 +msgid "Depth (units)" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:181 -msgid "Control+Left Button" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:659 +msgid "Tolerance (units)" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:184 -#, fuzzy -msgid "Manual control" -msgstr "Manuál" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:660 +msgid "Stepover (pixels)" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:185 -msgid "Code entry (MDI)" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:661 +msgid "Tool Diameter (units)" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:186 -msgid "Control-M" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:662 +#, fuzzy +msgid "Tool Type" +msgstr "Súbor nástrojov" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:663 +msgid "Feed Rate (units per minute)" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:186 -msgid "Clear MDI history" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:664 +msgid "Plunge Feed Rate (units per minute)" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:187 -msgid "Control-H" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:666 +msgid "Safety Height (units)" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:187 -msgid "Copy selected MDI history elements" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:667 +msgid "Scan Pattern" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:188 -msgid "to clipboard" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:668 +msgid "Scan Direction" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:189 -msgid "Control-Shift-H" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:669 +msgid "Lace Bounding" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:189 -msgid "Paste clipboard to MDI history" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:670 +msgid "Contact Angle (degrees)" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:190 share/axis/tcl/axis.tcl:1113 -#: src/emc/usr_intf/touchy/touchy.glade:508 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:671 #, fuzzy -msgid "Override Limits" -msgstr "Zmeniť limity" +msgid "Spindle Speed (RPM)" +msgstr "Zmena rýchlosti vretena:" -#: src/emc/usr_intf/axis/scripts/axis.py:192 -#, fuzzy -msgid "Open program" -msgstr "Program" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:672 +msgid "Roughing offset (units, 0=no roughing)" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:193 -msgid "Control-R" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:673 +msgid "Roughing depth per pass (units)" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:193 -msgid "Reload program" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:740 +msgid "image-to-gcode: User pressed cancel" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:194 -msgid "Control-S" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:753 +msgid "Depth images" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:194 -msgid "Save g-code as" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:22 +#, fuzzy +msgid "Machinekit Debug Level" +msgstr "EMC2 Debug" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:23 +msgid "debuglevel" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:195 +#: src/emc/usr_intf/axis/scripts/debuglevel.py:36 #, fuzzy -msgid "Run program" -msgstr "Program" +msgid "Configuration *" +msgstr "Nastavenie HAL" -#: src/emc/usr_intf/axis/scripts/axis.py:196 +#: src/emc/usr_intf/axis/scripts/debuglevel.py:37 #, fuzzy -msgid "Step program" -msgstr "Program" +msgid "Version Numbers *" +msgstr "Ďalšie číslo:" -#: src/emc/usr_intf/axis/scripts/axis.py:197 +#: src/emc/usr_intf/axis/scripts/debuglevel.py:38 #, fuzzy -msgid "Pause program" -msgstr "Program" +msgid "NML *" +msgstr "NML" -#: src/emc/usr_intf/axis/scripts/axis.py:198 +#: src/emc/usr_intf/axis/scripts/debuglevel.py:39 #, fuzzy -msgid "Resume program" -msgstr "Pokračovať" +msgid "RCS *" +msgstr "RCS" -#: src/emc/usr_intf/axis/scripts/axis.py:199 -msgid "Stop running program, or" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:40 +msgid "Task Issue" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:200 -msgid "stop loading program preview" -msgstr "" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:41 +#, fuzzy +msgid "Motion Time" +msgstr "Čas pohybu" -#: src/emc/usr_intf/axis/scripts/axis.py:202 -msgid "Toggle mist" -msgstr "" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:43 +#, fuzzy +msgid "Interpreter List" +msgstr "Zoznam interpretov" -#: src/emc/usr_intf/axis/scripts/axis.py:203 -msgid "Toggle flood" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:47 +#, python-format +msgid "" +"Inifile setting for this debug level:\n" +"[EMC]DEBUG=0x%08x" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:204 -#, fuzzy -msgid "Spindle brake off" -msgstr "Vreteno vypni" - -#: src/emc/usr_intf/axis/scripts/axis.py:205 -msgid "Shift-B" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:81 +msgid " * This option can only be enabled in the inifile" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:205 +#: share/axis/tcl/axis.tcl:52 #, fuzzy -msgid "Spindle brake on" -msgstr "Vreteno rýchlejšie" +msgid "_Open..." +msgstr "Otvoriť..." -#: src/emc/usr_intf/axis/scripts/axis.py:206 +#: share/axis/tcl/axis.tcl:56 #, fuzzy -msgid "Turn spindle clockwise" -msgstr "Vreteno Pomalšie" +msgid "Recent _Files" +msgstr "Text files" -#: src/emc/usr_intf/axis/scripts/axis.py:207 -msgid "Turn spindle counterclockwise" -msgstr "" +#: share/axis/tcl/axis.tcl:60 +#, fuzzy +msgid "_Edit..." +msgstr "Upraviť..." -#: src/emc/usr_intf/axis/scripts/axis.py:208 -msgid "Turn spindle more slowly" -msgstr "" +#: share/axis/tcl/axis.tcl:63 +#, fuzzy +msgid "Ctrl-R" +msgstr "Medzera" -#: src/emc/usr_intf/axis/scripts/axis.py:209 -msgid "Turn spindle more quickly" +#: share/axis/tcl/axis.tcl:65 +msgid "_Reload" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:211 -msgid "Control-K" -msgstr "" +#: share/axis/tcl/axis.tcl:68 +#, fuzzy +msgid "Ctrl-S" +msgstr "Medzera" -#: src/emc/usr_intf/axis/scripts/axis.py:211 -msgid "Clear live plot" -msgstr "" +#: share/axis/tcl/axis.tcl:70 +#, fuzzy +msgid "_Save gcode as..." +msgstr "Uložiť ako..." -#: src/emc/usr_intf/axis/scripts/axis.py:212 -msgid "Cycle among preset views" +#: share/axis/tcl/axis.tcl:74 +msgid "_Properties..." msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:213 -msgid "Cycle among preview, DRO, and user tabs" +#: share/axis/tcl/axis.tcl:80 +msgid "Edit _tool table..." msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:215 -#, fuzzy -msgid "Ctrl-Space" -msgstr "Medzera" - -#: src/emc/usr_intf/axis/scripts/axis.py:215 +#: share/axis/tcl/axis.tcl:84 #, fuzzy -msgid "Clear notifications" -msgstr "Príklady konfigurácií" +msgid "Reload tool ta_ble" +msgstr "Načítať tabuľku nástrojov" -#: src/emc/usr_intf/axis/scripts/axis.py:836 -#, python-format -msgid "Unknown tool %d" +#: share/axis/tcl/axis.tcl:90 +msgid "_Ladder Editor..." msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:838 -msgid "No tool" +#: share/axis/tcl/axis.tcl:102 +msgid "Toggle _Emergency Stop" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:840 -#, python-format -msgid "Tool %(tool)d, offset %(zo)g, diameter %(dia)g" +#: share/axis/tcl/axis.tcl:107 +msgid "Toggle _Machine Power" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:842 -#, python-format -msgid "Tool %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" +#: share/axis/tcl/axis.tcl:114 +#, fuzzy +msgid "_Run program" +msgstr "Program" + +#: share/axis/tcl/axis.tcl:118 +msgid "Ru_n from selected line" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1013 +#: share/axis/tcl/axis.tcl:123 #, fuzzy -msgid "Filtering..." -msgstr "Testujem..." +msgid "S_tep" +msgstr "Krok" -#: src/emc/usr_intf/axis/scripts/axis.py:1073 -msgid "Filter failed" -msgstr "" +#: share/axis/tcl/axis.tcl:128 +#, fuzzy +msgid "_Pause" +msgstr "Pauza" -#: src/emc/usr_intf/axis/scripts/axis.py:1074 -#, python-format -msgid "" -"The program %(program)r exited with code %(code)d. Any error messages it " -"produced are shown below:" -msgstr "" +#: share/axis/tcl/axis.tcl:133 +#, fuzzy +msgid "Re_sume" +msgstr "Pokračovať" -#: src/emc/usr_intf/axis/scripts/axis.py:1139 -#, python-format -msgid "G-Code error in %s" +#: share/axis/tcl/axis.tcl:143 +msgid "Stop at M_1" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1140 -#, python-format -msgid "" -"Near line %(seq)d of %(f)s:\n" -"%(error_str)s" +#: share/axis/tcl/axis.tcl:148 +msgid "Skip lines with '_/'" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1292 -#: src/emc/usr_intf/axis/scripts/axis.py:2725 share/axis/tcl/axis.tcl:1092 -#: share/axis/tcl/axis.tcl:1094 share/axis/tcl/axis.tcl:2144 +#: share/axis/tcl/axis.tcl:153 #, fuzzy -msgid "Continuous" -msgstr "Priebežný" +msgid "Ctrl-M" +msgstr "Medzera" -#: src/emc/usr_intf/axis/scripts/axis.py:1403 -msgid "Ok" +#: share/axis/tcl/axis.tcl:155 +msgid "Clear MDI h_istory" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1546 -#, fuzzy -msgid "T Tool Table" -msgstr "Načítať tabuľku nástrojov" - -#: src/emc/usr_intf/axis/scripts/axis.py:1557 -#: src/emc/usr_intf/axis/scripts/axis.py:1730 -#: src/emc/usr_intf/stepconf/stepconf.py:1691 -#: src/emc/usr_intf/stepconf/stepconf.py:2235 +#: share/axis/tcl/axis.tcl:157 #, fuzzy -msgid "in" -msgstr "Hlavné" +msgid "Ctrl-H" +msgstr "Medzera" -#: src/emc/usr_intf/axis/scripts/axis.py:1560 -msgid " radius" +#: share/axis/tcl/axis.tcl:159 +msgid "Copy from MDI hist_ory" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1562 -#, fuzzy -msgid " diameter" -msgstr "Priemer:" +#: share/axis/tcl/axis.tcl:161 +msgid "Ctrl-Shift-H" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1563 -msgid "°" +#: share/axis/tcl/axis.tcl:163 +msgid "Paste to MDI histor_y" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1572 +#: share/axis/tcl/axis.tcl:169 #, fuzzy -msgid "Coordinate System:" -msgstr "Okno Kontroly Systému Súradníc" +msgid "_Calibration" +msgstr "Kalibrácia..." -#: src/emc/usr_intf/axis/scripts/axis.py:1588 -msgid "fixture" -msgstr "" +#: share/axis/tcl/axis.tcl:173 +#, fuzzy +msgid "Show _Hal Configuration" +msgstr "Príklady konfigurácií" -#: src/emc/usr_intf/axis/scripts/axis.py:1589 -msgid "workpiece" -msgstr "" +#: share/axis/tcl/axis.tcl:177 +#, fuzzy +msgid "H_al Meter" +msgstr "HAL-Meter" -#: src/emc/usr_intf/axis/scripts/axis.py:1605 +#: share/axis/tcl/axis.tcl:181 #, fuzzy -msgid "Name:" -msgstr "INI-Názov" +msgid "Ha_l Scope" +msgstr "HAL-Dosah" -#: src/emc/usr_intf/axis/scripts/axis.py:1605 +#: share/axis/tcl/axis.tcl:185 #, fuzzy -msgid "Size:" -msgstr "Veľkosť" +msgid "Sho_w Machinekit Status" +msgstr "Ukázať nastavenia." -#: src/emc/usr_intf/axis/scripts/axis.py:1606 +#: share/axis/tcl/axis.tcl:189 #, fuzzy -msgid "Tool order:" -msgstr "Nástroj :" +msgid "Set _Debug Level" +msgstr "EMC2 Debug" -#: src/emc/usr_intf/axis/scripts/axis.py:1606 -msgid "Rapid distance:" +#: share/axis/tcl/axis.tcl:195 +msgid "Homin_g" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1607 -msgid "Feed distance:" +#: share/axis/tcl/axis.tcl:199 +msgid "_Unhoming" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1607 -msgid "Total distance:" +#: share/axis/tcl/axis.tcl:203 +#, fuzzy +msgid "_Zero coordinate system" +msgstr "Okno Kontroly Systému Súradníc" + +#: share/axis/tcl/axis.tcl:207 +msgid "P1 G5_4" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1608 -#, fuzzy -msgid "Run time:" -msgstr "Čas pohybu" +#: share/axis/tcl/axis.tcl:211 +msgid "P2 G5_5" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1608 -msgid "X bounds:" +#: share/axis/tcl/axis.tcl:215 +msgid "P3 G5_6" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1609 -msgid "Y bounds:" +#: share/axis/tcl/axis.tcl:219 +msgid "P4 G5_7" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1609 -msgid "Z bounds:" +#: share/axis/tcl/axis.tcl:223 +msgid "P5 G5_8" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1610 -msgid "A bounds:" +#: share/axis/tcl/axis.tcl:227 +msgid "P6 G5_9" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1610 -msgid "B bounds:" +#: share/axis/tcl/axis.tcl:231 +msgid "P7 G59._1" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1611 -msgid "C bounds:" +#: share/axis/tcl/axis.tcl:235 +msgid "P8 G59._2" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1635 -#, python-format -msgid "Program exceeds machine minimum on axis %s" +#: share/axis/tcl/axis.tcl:239 +msgid "P9 G59._3" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1638 -#, python-format -msgid "Program exceeds machine maximum on axis %s" +#: share/axis/tcl/axis.tcl:243 +msgid "_G92" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1643 -msgid "Program exceeds machine limits" +#: share/axis/tcl/axis.tcl:251 +msgid "Tool touch off to wor_kpiece" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1646 -msgid "Run Anyway" +#: share/axis/tcl/axis.tcl:257 +msgid "Tool touch off to _fixture" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1708 -msgid "No file loaded" +#: share/axis/tcl/axis.tcl:265 +msgid "_Top view" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1716 -#, python-format -msgid "generated from %s" +#: share/axis/tcl/axis.tcl:272 +msgid "_Rotated Top view" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1722 -#, python-format -msgid "" -"%(size)s bytes\n" -"%(lines)s gcode lines" +#: share/axis/tcl/axis.tcl:279 +msgid "_Side view" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1748 -#, python-format -msgid "%.1f minutes" +#: share/axis/tcl/axis.tcl:286 +msgid "_Front view" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1750 -#, python-format -msgid "%d seconds" +#: share/axis/tcl/axis.tcl:293 +msgid "_Perspective view" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1758 -#, python-format -msgid "%(a)f to %(b)f = %(diff)f %(units)s" +#: share/axis/tcl/axis.tcl:302 +msgid "Display _Inches" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1759 -msgid "G-Code Properties" +#: share/axis/tcl/axis.tcl:309 +msgid "Display _MM" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1883 +#: share/axis/tcl/axis.tcl:316 #, fuzzy -msgid "All machinable files" -msgstr "Všetky súbory" +msgid "S_how program" +msgstr "Program" -#: src/emc/usr_intf/axis/scripts/axis.py:1884 -#: src/emc/usr_intf/axis/scripts/axis.py:2464 -msgid "rs274ngc files" +#: share/axis/tcl/axis.tcl:321 +msgid "Show program r_apids" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1899 -msgid "axis cannot accept remote command while running" -msgstr "" +#: share/axis/tcl/axis.tcl:326 +#, fuzzy +msgid "Alpha-_blend program" +msgstr "Program" -#: src/emc/usr_intf/axis/scripts/axis.py:2255 -msgid "Axis is already homed, are you sure you want to re-home?" +#: share/axis/tcl/axis.tcl:331 +msgid "Sho_w live plot" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2268 -msgid "This axis is already homed, are you sure you want to re-home?" +#: share/axis/tcl/axis.tcl:336 +#, fuzzy +msgid "Show too_l" +msgstr "Ukázať nastavenia." + +#: share/axis/tcl/axis.tcl:341 +#, fuzzy +msgid "Show e_xtents" +msgstr "Ukázať Reštart" + +#: share/axis/tcl/axis.tcl:345 +msgid "_Grid" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2308 share/axis/tcl/axis.tcl:1108 -msgid "Touch Off" +#: share/axis/tcl/axis.tcl:350 +#, fuzzy +msgid "Show o_ffsets" +msgstr "Ukázať Reštart" + +#: share/axis/tcl/axis.tcl:355 +msgid "Sh_ow machine limits" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2309 -#, python-format -msgid "Enter %s coordinate relative to %%s:" +#: share/axis/tcl/axis.tcl:360 +msgid "Show v_elocity" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2476 -msgid "Error saving file" +#: share/axis/tcl/axis.tcl:365 +msgid "Show _distance to go" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2859 -#: src/emc/usr_intf/touchy/touchy.glade:577 +#: share/axis/tcl/axis.tcl:370 #, fuzzy -msgid "Home All" -msgstr "Uložiť všetky" +msgid "Large coordinate fo_nt" +msgstr "Okno Kontroly Systému Súradníc" -#: src/emc/usr_intf/axis/scripts/axis.py:2861 -msgid "Home all axes [Ctrl-Home]" -msgstr "" +#: share/axis/tcl/axis.tcl:373 +#, fuzzy +msgid "Ctrl-K" +msgstr "Medzera" -#: src/emc/usr_intf/axis/scripts/axis.py:2864 -msgid "Home All Axes" +#: share/axis/tcl/axis.tcl:375 +msgid "_Clear live plot" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2871 -msgid "Unhome All Axes" -msgstr "" +#: share/axis/tcl/axis.tcl:384 +#, fuzzy +msgid "Show commanded position" +msgstr "Zadaná pozícia" -#: src/emc/usr_intf/axis/scripts/axis.py:2895 -#, python-format -msgid "Home Axis _%s" -msgstr "" +#: share/axis/tcl/axis.tcl:391 +#, fuzzy +msgid "Show actual position" +msgstr "Aktuálna pozícia" -#: src/emc/usr_intf/axis/scripts/axis.py:2897 -#, python-format -msgid "Unhome Axis _%s" -msgstr "" +#: share/axis/tcl/axis.tcl:400 +#, fuzzy +msgid "Show machine position" +msgstr "Pozícia stroja" -#: src/emc/usr_intf/axis/scripts/axis.py:3040 -msgid "Run from here" +#: share/axis/tcl/axis.tcl:407 +#, fuzzy +msgid "Show relative position" +msgstr "Relatívna pozícia" + +#: share/axis/tcl/axis.tcl:416 +msgid "Joint mode" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:3335 -msgid "Error in ~/.axisrc" +#: share/axis/tcl/axis.tcl:423 +msgid "World mode" msgstr "" -#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:102 -msgid "LinuxCNC Status" +#: share/axis/tcl/axis.tcl:431 +msgid "_Off" msgstr "" -#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:118 +#: share/axis/tcl/axis.tcl:437 #, fuzzy -msgid "Copy All" -msgstr "Kopírovať" +msgid "_Custom" +msgstr "Vystrihnúť" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:29 -#, python-format -msgid "Insert tool %d and click continue when ready" +#: share/axis/tcl/axis.tcl:443 +msgid "User_0" msgstr "" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:31 -msgid "Remove the tool and click continue when ready" +#: share/axis/tcl/axis.tcl:447 +msgid "User_1" msgstr "" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 -#: src/emc/usr_intf/touchy/mdi.py:49 -#, fuzzy -msgid "Tool change" -msgstr "Súbor nástrojov" - -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 -#, fuzzy -msgid "Continue" -msgstr "Priebežný" +#: share/axis/tcl/axis.tcl:451 +msgid "User_2" +msgstr "" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:55 -msgid "AXIS Manual Toolchanger" +#: share/axis/tcl/axis.tcl:455 +msgid "User_3" msgstr "" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:59 -msgid "" -"This window is part of the AXIS manual toolchanger. It is safe to close or " -"iconify this window, or it will close automatically after a few seconds." +#: share/axis/tcl/axis.tcl:459 +msgid "User_4" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:507 -#, python-format -msgid "%s: Image to gcode" +#: share/axis/tcl/axis.tcl:463 +msgid "User_5" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:508 -msgid "Image to gcode" +#: share/axis/tcl/axis.tcl:467 +msgid "User_6" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:518 -#, python-format -msgid "" -"Image size: %(w)d x %(h)d pixels\n" -"Minimum pixel value: %(min)d\n" -"Maximum pixel value: %(max)d" +#: share/axis/tcl/axis.tcl:471 +msgid "User_7" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 -msgid "G20 (in)" +#: share/axis/tcl/axis.tcl:475 +msgid "User_8" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 -msgid "G21 (mm)" +#: share/axis/tcl/axis.tcl:479 +msgid "User_9" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 -#: src/emc/usr_intf/touchy/emc_interface.py:417 +#: share/axis/tcl/axis.tcl:491 #, fuzzy -msgid "None" -msgstr "Nie" +msgid "_About AXIS" +msgstr "O" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +#: share/axis/tcl/axis.tcl:495 +msgid "Quick _Reference" +msgstr "" + +#: share/axis/tcl/axis.tcl:505 #, fuzzy -msgid "White" -msgstr "Písať" +msgid "_Machine" +msgstr "Stroj" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +#: share/axis/tcl/axis.tcl:509 #, fuzzy -msgid "Black" -msgstr "Späť" +msgid "_View" +msgstr "Náhľad" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Rows" +#: share/axis/tcl/axis.tcl:513 +msgid "_User" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Columns" +#: share/axis/tcl/axis.tcl:526 +msgid "Toggle Emergency Stop [F1]" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Rows then Columns" +#: share/axis/tcl/axis.tcl:535 +msgid "Toggle Machine power [F2]" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Columns then Rows" +#: share/axis/tcl/axis.tcl:546 +msgid "Open G-Code file [O]" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -#, fuzzy -msgid "Positive" -msgstr "Typ polohy" +#: share/axis/tcl/axis.tcl:554 +msgid "Reopen current file [Control-R]" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -#, fuzzy -msgid "Negative" -msgstr "pomerný" +#: share/axis/tcl/axis.tcl:564 +msgid "Begin executing current file [R]" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Alternating" +#: share/axis/tcl/axis.tcl:572 +msgid "Execute next line [T]" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Up Milling" +#: share/axis/tcl/axis.tcl:580 +msgid "Pause [P] / resume [S] execution" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Down Milling" +#: share/axis/tcl/axis.tcl:588 +msgid "Stop program execution [ESC]" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "Ball End" +#: share/axis/tcl/axis.tcl:598 +msgid "Toggle skip lines with '/' [Alt-M /]" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "Flat End" +#: share/axis/tcl/axis.tcl:605 +msgid "Toggle optional pause [Alt-M 1]" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "30 Degree" +#: share/axis/tcl/axis.tcl:614 src/emc/usr_intf/gmoccapy/gmoccapy.glade:549 +msgid "Zoom in" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "45 Degree" +#: share/axis/tcl/axis.tcl:622 src/emc/usr_intf/gmoccapy/gmoccapy.glade:567 +msgid "Zoom out" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "60 Degree" +#: share/axis/tcl/axis.tcl:630 +msgid "Top view" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 -msgid "Secondary" +#: share/axis/tcl/axis.tcl:638 +msgid "Rotated top view" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 -msgid "Full" +#: share/axis/tcl/axis.tcl:646 +msgid "Side view" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:654 -msgid "Invert Image" +#: share/axis/tcl/axis.tcl:654 +#, fuzzy +msgid "Front view" +msgstr "Neuložiť" + +#: share/axis/tcl/axis.tcl:662 +msgid "Perspective view" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:655 -msgid "Normalize Image" +#: share/axis/tcl/axis.tcl:670 +msgid "Toggle between Drag and Rotate Mode [D]" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:656 -msgid "Extend Image Border" +#: share/axis/tcl/axis.tcl:685 +msgid "Clear live plot [Ctrl-K]" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:657 -msgid "Pixel Size (Units)" +#: share/axis/tcl/axis.tcl:836 +#, fuzzy +msgid "Manual Control [F3]" +msgstr "Manuál" + +#: share/axis/tcl/axis.tcl:837 +msgid "MDI [F5]" +msgstr "" + +#: share/axis/tcl/axis.tcl:851 share/axis/tcl/axis.tcl:2158 +#: share/axis/tcl/axis.tcl:2328 +#, fuzzy +msgid "Axis:" +msgstr "Os" + +#: share/axis/tcl/axis.tcl:1172 src/emc/usr_intf/gscreen/gscreen.glade:2944 +#, fuzzy +msgid "Home Axis" +msgstr "Domov" + +#: share/axis/tcl/axis.tcl:1246 +#, fuzzy +msgid "Spindle:" +msgstr "Vreteno vypni" + +#: share/axis/tcl/axis.tcl:1293 src/emc/usr_intf/touchy/touchy.glade:946 +#: src/emc/usr_intf/stepconf/main_page.glade:406 +#: src/emc/usr_intf/gscreen/gscreen.glade:4067 +msgid "-" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:658 -msgid "Depth (units)" +#: share/axis/tcl/axis.tcl:1307 src/emc/usr_intf/stepconf/main_page.glade:403 +#: src/emc/usr_intf/gscreen/gscreen.glade:4056 +msgid "+" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:659 -msgid "Tolerance (units)" -msgstr "" +#: share/axis/tcl/axis.tcl:1312 +#, fuzzy +msgid "Brake" +msgstr "Brzdy zapnuté" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:660 -msgid "Stepover (pixels)" -msgstr "" +#: share/axis/tcl/axis.tcl:1359 +#, fuzzy +msgid "Coolant:" +msgstr "Príkaz:" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:661 -msgid "Tool Diameter (units)" -msgstr "" +#: share/axis/tcl/axis.tcl:1364 +#, fuzzy +msgid "Mist" +msgstr "Fúkanie zapnuté" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:662 +#: share/axis/tcl/axis.tcl:1369 #, fuzzy -msgid "Tool Type" -msgstr "Súbor nástrojov" +msgid "Flood" +msgstr "Chladenie zapnuté" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:663 -msgid "Feed Rate (units per minute)" +#: share/axis/tcl/axis.tcl:1441 +msgid "History:" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:664 -msgid "Plunge Feed Rate (units per minute)" -msgstr "" +#: share/axis/tcl/axis.tcl:1464 +#, fuzzy +msgid "MDI Command:" +msgstr "Príkaz:" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:666 -msgid "Safety Height (units)" +#: share/axis/tcl/axis.tcl:1473 +msgid "Go" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:667 -msgid "Scan Pattern" -msgstr "" +#: share/axis/tcl/axis.tcl:1479 +#, fuzzy +msgid "Active G-Codes:" +msgstr "Aktívne G Kódy" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:668 -msgid "Scan Direction" -msgstr "" +#: share/axis/tcl/axis.tcl:1557 src/emc/usr_intf/gmoccapy/gmoccapy.glade:771 +#, fuzzy +msgid "Preview" +msgstr "Vetvený Pohľad" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:669 -msgid "Lace Bounding" +#: share/axis/tcl/axis.tcl:1558 +msgid "DRO" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:670 -msgid "Contact Angle (degrees)" +#: share/axis/tcl/axis.tcl:1645 share/axis/tcl/axis.tcl:1658 +#, fuzzy +msgid "Jog Speed:" +msgstr "Rýchlosť krokov" + +#: share/axis/tcl/axis.tcl:1670 +msgid "Max Velocity:" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:671 +#: share/axis/tcl/axis.tcl:1699 #, fuzzy -msgid "Spindle Speed (RPM)" -msgstr "Zmena rýchlosti vretena:" +msgid "Spindle Override:" +msgstr "Nastaviť zmenu vretena" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:672 -msgid "Roughing offset (units, 0=no roughing)" +#: share/axis/tcl/axis.tcl:1701 share/axis/tcl/axis.tcl:1741 +#: share/axis/tcl/axis.tcl:1779 src/emc/usr_intf/pncconf/pncconf.glade:2834 +#: src/emc/usr_intf/pncconf/pncconf.glade:2845 +#: src/emc/usr_intf/pncconf/pncconf.glade:2949 +#: src/emc/usr_intf/pncconf/pncconf.glade:2962 +#: src/emc/usr_intf/pncconf/pncconf.glade:2975 +#: src/emc/usr_intf/pncconf/pncconf.glade:2988 +#: src/emc/usr_intf/pncconf/pncconf.glade:3001 +#: src/emc/usr_intf/pncconf/pncconf.glade:3014 +#: src/emc/usr_intf/pncconf/pncconf.glade:3127 +#: src/emc/usr_intf/pncconf/pncconf.glade:3140 +#: src/emc/usr_intf/pncconf/pncconf.glade:3153 +#: src/emc/usr_intf/pncconf/pncconf.glade:3166 +#: src/emc/usr_intf/pncconf/pncconf.glade:3179 +#: src/emc/usr_intf/pncconf/pncconf.glade:3192 +#: src/emc/usr_intf/pncconf/pncconf.glade:3205 +#: src/emc/usr_intf/pncconf/pncconf.glade:3218 +#: src/emc/usr_intf/pncconf/pncconf.glade:3715 +#: src/emc/usr_intf/pncconf/pncconf.glade:3726 +#: src/emc/usr_intf/pncconf/pncconf.glade:3830 +#: src/emc/usr_intf/pncconf/pncconf.glade:3843 +#: src/emc/usr_intf/pncconf/pncconf.glade:3856 +#: src/emc/usr_intf/pncconf/pncconf.glade:3869 +#: src/emc/usr_intf/pncconf/pncconf.glade:3882 +#: src/emc/usr_intf/pncconf/pncconf.glade:3895 +#: src/emc/usr_intf/pncconf/pncconf.glade:4008 +#: src/emc/usr_intf/pncconf/pncconf.glade:4021 +#: src/emc/usr_intf/pncconf/pncconf.glade:4034 +#: src/emc/usr_intf/pncconf/pncconf.glade:4047 +#: src/emc/usr_intf/pncconf/pncconf.glade:4060 +#: src/emc/usr_intf/pncconf/pncconf.glade:4073 +#: src/emc/usr_intf/pncconf/pncconf.glade:4086 +#: src/emc/usr_intf/pncconf/pncconf.glade:4099 +#: src/emc/usr_intf/pncconf/pncconf.glade:4596 +#: src/emc/usr_intf/pncconf/pncconf.glade:4607 +#: src/emc/usr_intf/pncconf/pncconf.glade:4711 +#: src/emc/usr_intf/pncconf/pncconf.glade:4724 +#: src/emc/usr_intf/pncconf/pncconf.glade:4737 +#: src/emc/usr_intf/pncconf/pncconf.glade:4750 +#: src/emc/usr_intf/pncconf/pncconf.glade:4763 +#: src/emc/usr_intf/pncconf/pncconf.glade:4776 +#: src/emc/usr_intf/pncconf/pncconf.glade:4889 +#: src/emc/usr_intf/pncconf/pncconf.glade:4902 +#: src/emc/usr_intf/pncconf/pncconf.glade:4915 +#: src/emc/usr_intf/pncconf/pncconf.glade:4928 +#: src/emc/usr_intf/pncconf/pncconf.glade:4941 +#: src/emc/usr_intf/pncconf/pncconf.glade:4954 +#: src/emc/usr_intf/pncconf/pncconf.glade:4967 +#: src/emc/usr_intf/pncconf/pncconf.glade:4980 +#: src/emc/usr_intf/pncconf/pncconf.glade:5631 +#: src/emc/usr_intf/pncconf/pncconf.glade:5643 +#: src/emc/usr_intf/pncconf/pncconf.glade:5690 +msgid "%" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:673 -msgid "Roughing depth per pass (units)" -msgstr "" +#: share/axis/tcl/axis.tcl:1777 +#, fuzzy +msgid "Rapid Override:" +msgstr "Nastaviť zmenu vretena" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:740 -msgid "image-to-gcode: User pressed cancel" +#: share/axis/tcl/axis.tcl:1819 +msgid "" +"Machinekit/AXIS version $version\n" +"\n" +"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff " +"Epler and Chris Radek.\n" +"\n" +"This is free software, and you are welcome to redistribute it under certain " +"conditions. See the file COPYING, included with Machinekit.\n" +"\n" +"Visit the Machinekit web site: " msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:753 -msgid "Depth images" +#: share/axis/tcl/axis.tcl:1847 +#, fuzzy +msgid "About AXIS" +msgstr "O" + +#: share/axis/tcl/axis.tcl:1876 +msgid "AXIS Quick Reference" msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:22 -#, fuzzy -msgid "LinuxCNC Debug Level" -msgstr "EMC2 Debug" +#: share/axis/tcl/axis.tcl:2017 +msgid "AXIS with MachineKit $::version on $::machine" +msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:23 -msgid "debuglevel" +#: share/axis/tcl/axis.tcl:2019 +msgid "(no file)" msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:36 +#: share/axis/tcl/axis.tcl:2091 share/axis/tcl/axis.tcl:2096 #, fuzzy -msgid "Configuration *" -msgstr "Nastavenie HAL" +msgid "Position:" +msgstr "Typ polohy" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:37 +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/gscreen/gscreen.py:3516 #, fuzzy -msgid "Version Numbers *" -msgstr "Ďalšie číslo:" +msgid "Machine" +msgstr "Stroj" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:38 +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/touchy/touchy.glade:155 #, fuzzy -msgid "NML *" -msgstr "NML" +msgid "Relative" +msgstr "pomerný" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:39 +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3329 #, fuzzy -msgid "RCS *" -msgstr "RCS" +msgid "Actual" +msgstr "Aktuálna" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:40 -msgid "Task Issue" -msgstr "" +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3318 +#, fuzzy +msgid "Commanded" +msgstr "Rozkaz zadaný" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:41 +#: share/axis/tcl/axis.tcl:2154 share/axis/tcl/axis.tcl:2328 #, fuzzy -msgid "Motion Time" -msgstr "Čas pohybu" +msgid "Joint:" +msgstr "spoj" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:43 +#: share/axis/tcl/axis.tcl:2463 #, fuzzy -msgid "Interpreter List" -msgstr "Zoznam interpretov" +msgid "Turn spindle counterclockwise [F10]" +msgstr "Vreteno Pomalšie" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:47 -#, python-format -msgid "" -"Inifile setting for this debug level:\n" -"[EMC]DEBUG=0x%08x" -msgstr "" +#: share/axis/tcl/axis.tcl:2464 +#, fuzzy +msgid "Turn spindle clockwise [F9]" +msgstr "Vreteno Pomalšie" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:81 -msgid " * This option can only be enabled in the inifile" +#: share/axis/tcl/axis.tcl:2465 +msgid "Stop spindle [F9/F10]" msgstr "" -#: share/axis/tcl/axis.tcl:49 +#: share/axis/tcl/axis.tcl:2466 #, fuzzy -msgid "_Open..." -msgstr "Otvoriť..." +msgid "Turn spindle Faster [F12]" +msgstr "Vreteno rýchlejšie" -#: share/axis/tcl/axis.tcl:53 +#: share/axis/tcl/axis.tcl:2467 #, fuzzy -msgid "Recent _Files" -msgstr "Text files" +msgid "Turn spindle Slower [F11]" +msgstr "Vreteno Pomalšie" -#: share/axis/tcl/axis.tcl:57 -#, fuzzy -msgid "_Edit..." -msgstr "Upraviť..." +#: share/axis/tcl/axis.tcl:2468 +msgid "Turn spindle brake on [Shift-B] or off [B]" +msgstr "" -#: share/axis/tcl/axis.tcl:60 -#, fuzzy -msgid "Ctrl-R" -msgstr "Medzera" +#: share/axis/tcl/axis.tcl:2469 +msgid "Turn flood on or off [F8]" +msgstr "" -#: share/axis/tcl/axis.tcl:62 -msgid "_Reload" +#: share/axis/tcl/axis.tcl:2470 +msgid "Turn mist on or off [F7]" msgstr "" -#: share/axis/tcl/axis.tcl:65 -#, fuzzy -msgid "Ctrl-S" -msgstr "Medzera" +#: share/axis/tcl/axis.tcl:2471 +msgid "Send active axis home [Home]" +msgstr "" -#: share/axis/tcl/axis.tcl:67 -#, fuzzy -msgid "_Save gcode as..." -msgstr "Uložiť ako..." +#: share/axis/tcl/axis.tcl:2472 +msgid "Set G54 offset for active axis [End]" +msgstr "" -#: share/axis/tcl/axis.tcl:71 -msgid "_Properties..." +#: share/axis/tcl/axis.tcl:2473 +msgid "Activate axis [X]" msgstr "" -#: share/axis/tcl/axis.tcl:77 -msgid "Edit _tool table..." +#: share/axis/tcl/axis.tcl:2474 +msgid "Activate axis [Y]" msgstr "" -#: share/axis/tcl/axis.tcl:81 -#, fuzzy -msgid "Reload tool ta_ble" -msgstr "Načítať tabuľku nástrojov" +#: share/axis/tcl/axis.tcl:2475 +msgid "Activate axis [Z]" +msgstr "" -#: share/axis/tcl/axis.tcl:87 -msgid "_Ladder Editor..." +#: share/axis/tcl/axis.tcl:2476 +msgid "Activate axis [A]" msgstr "" -#: share/axis/tcl/axis.tcl:99 -msgid "Toggle _Emergency Stop" +#: share/axis/tcl/axis.tcl:2477 +msgid "Activate axis [4]" msgstr "" -#: share/axis/tcl/axis.tcl:104 -msgid "Toggle _Machine Power" +#: share/axis/tcl/axis.tcl:2478 +msgid "Activate axis [5]" msgstr "" -#: share/axis/tcl/axis.tcl:111 -#, fuzzy -msgid "_Run program" -msgstr "Program" +#: share/axis/tcl/axis.tcl:2479 share/axis/tcl/axis.tcl:2480 +msgid "Jog selected axis" +msgstr "" -#: share/axis/tcl/axis.tcl:115 -msgid "Ru_n from selected line" +#: share/axis/tcl/axis.tcl:2482 +msgid "Temporarily allow jogging outside machine limits [L]" msgstr "" -#: share/axis/tcl/axis.tcl:120 +#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:47 #, fuzzy -msgid "S_tep" -msgstr "Krok" +msgid "Spindle CW" +msgstr "Vreteno vypni" -#: share/axis/tcl/axis.tcl:125 +#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:48 #, fuzzy -msgid "_Pause" -msgstr "Pauza" +msgid "Spindle CCW" +msgstr "Vreteno vypni" -#: share/axis/tcl/axis.tcl:130 +#: src/emc/usr_intf/touchy/mdi.py:50 #, fuzzy -msgid "Re_sume" -msgstr "Pokračovať" - -#: share/axis/tcl/axis.tcl:140 -msgid "Stop at M_1" -msgstr "" - -#: share/axis/tcl/axis.tcl:145 -msgid "Skip lines with '_/'" -msgstr "" +msgid "Set tool number" +msgstr "Prečíslovať" -#: share/axis/tcl/axis.tcl:150 +#: src/emc/usr_intf/touchy/mdi.py:51 src/emc/usr_intf/gscreen/mdi.py:50 #, fuzzy -msgid "Ctrl-M" -msgstr "Medzera" +msgid "Input control" +msgstr "Manuál" -#: share/axis/tcl/axis.tcl:152 -msgid "Clear MDI h_istory" +#: src/emc/usr_intf/touchy/mdi.py:54 src/emc/usr_intf/touchy/mdi.py:55 +#: src/emc/usr_intf/gscreen/mdi.py:53 src/emc/usr_intf/gscreen/mdi.py:54 +msgid "Straight rapid" msgstr "" -#: share/axis/tcl/axis.tcl:154 -#, fuzzy -msgid "Ctrl-H" -msgstr "Medzera" +#: src/emc/usr_intf/touchy/mdi.py:56 src/emc/usr_intf/touchy/mdi.py:57 +#: src/emc/usr_intf/gscreen/mdi.py:55 src/emc/usr_intf/gscreen/mdi.py:56 +msgid "Straight feed" +msgstr "" -#: share/axis/tcl/axis.tcl:156 -msgid "Copy from MDI hist_ory" +#: src/emc/usr_intf/touchy/mdi.py:58 src/emc/usr_intf/touchy/mdi.py:59 +#: src/emc/usr_intf/gscreen/mdi.py:57 src/emc/usr_intf/gscreen/mdi.py:58 +msgid "Arc CW" msgstr "" -#: share/axis/tcl/axis.tcl:158 -msgid "Ctrl-Shift-H" +#: src/emc/usr_intf/touchy/mdi.py:60 src/emc/usr_intf/touchy/mdi.py:61 +#: src/emc/usr_intf/gscreen/mdi.py:59 src/emc/usr_intf/gscreen/mdi.py:60 +msgid "Arc CCW" msgstr "" -#: share/axis/tcl/axis.tcl:160 -msgid "Paste to MDI histor_y" +#: src/emc/usr_intf/touchy/mdi.py:62 src/emc/usr_intf/touchy/mdi.py:63 +#: src/emc/usr_intf/gscreen/mdi.py:61 src/emc/usr_intf/gscreen/mdi.py:62 +msgid "Dwell" msgstr "" -#: share/axis/tcl/axis.tcl:166 +#: src/emc/usr_intf/touchy/mdi.py:64 src/emc/usr_intf/gscreen/mdi.py:63 #, fuzzy -msgid "_Calibration" -msgstr "Kalibrácia..." +msgid "Setup" +msgstr "Schovať nastavenia." -#: share/axis/tcl/axis.tcl:170 +#: src/emc/usr_intf/touchy/mdi.py:65 src/emc/usr_intf/gscreen/mdi.py:64 #, fuzzy -msgid "Show _Hal Configuration" -msgstr "Príklady konfigurácií" +msgid "Spindle synchronized feed" +msgstr "Vreteno dozadu" -#: share/axis/tcl/axis.tcl:174 -#, fuzzy -msgid "H_al Meter" -msgstr "HAL-Meter" +#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:65 +msgid "Rigid tap" +msgstr "" -#: share/axis/tcl/axis.tcl:178 -#, fuzzy -msgid "Ha_l Scope" -msgstr "HAL-Dosah" +#: src/emc/usr_intf/touchy/mdi.py:67 src/emc/usr_intf/touchy/mdi.py:68 +#: src/emc/usr_intf/touchy/mdi.py:69 src/emc/usr_intf/touchy/mdi.py:70 +#: src/emc/usr_intf/gscreen/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:67 +#: src/emc/usr_intf/gscreen/mdi.py:68 src/emc/usr_intf/gscreen/mdi.py:69 +msgid "Probe" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:71 src/emc/usr_intf/gscreen/mdi.py:70 +msgid "Radius compensation left" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:72 src/emc/usr_intf/gscreen/mdi.py:71 +msgid "Radius compensation right" +msgstr "" -#: share/axis/tcl/axis.tcl:182 -#, fuzzy -msgid "Sho_w LinuxCNC Status" -msgstr "Ukázať nastavenia." +#: src/emc/usr_intf/touchy/mdi.py:73 src/emc/usr_intf/gscreen/mdi.py:72 +msgid "Radius compensation left, immediate" +msgstr "" -#: share/axis/tcl/axis.tcl:186 +#: src/emc/usr_intf/touchy/mdi.py:74 src/emc/usr_intf/gscreen/mdi.py:73 +msgid "Radius compensation right, immediate" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:75 src/emc/usr_intf/gscreen/mdi.py:74 #, fuzzy -msgid "Set _Debug Level" -msgstr "EMC2 Debug" +msgid "Tool length offset" +msgstr "Určiť doplnok nástroja" -#: share/axis/tcl/axis.tcl:192 -msgid "Homin_g" +#: src/emc/usr_intf/touchy/mdi.py:76 src/emc/usr_intf/gscreen/mdi.py:75 +msgid "Tool length offset immediate" msgstr "" -#: share/axis/tcl/axis.tcl:196 -msgid "_Unhoming" +#: src/emc/usr_intf/touchy/mdi.py:77 src/emc/usr_intf/gscreen/mdi.py:76 +msgid "Motion in unoffset coordinates" msgstr "" -#: share/axis/tcl/axis.tcl:200 +#: src/emc/usr_intf/touchy/mdi.py:78 src/emc/usr_intf/gscreen/mdi.py:77 #, fuzzy -msgid "_Zero coordinate system" -msgstr "Okno Kontroly Systému Súradníc" +msgid "Continuous mode" +msgstr "Priebežný" -#: share/axis/tcl/axis.tcl:204 -msgid "P1 G5_4" +#: src/emc/usr_intf/touchy/mdi.py:80 src/emc/usr_intf/gscreen/mdi.py:79 +msgid "Drill" msgstr "" -#: share/axis/tcl/axis.tcl:208 -msgid "P2 G5_5" +#: src/emc/usr_intf/touchy/mdi.py:81 src/emc/usr_intf/gscreen/mdi.py:80 +msgid "Drill with dwell" msgstr "" -#: share/axis/tcl/axis.tcl:212 -msgid "P3 G5_6" +#: src/emc/usr_intf/touchy/mdi.py:82 src/emc/usr_intf/gscreen/mdi.py:81 +msgid "Peck drill" msgstr "" -#: share/axis/tcl/axis.tcl:216 -msgid "P4 G5_7" +#: src/emc/usr_intf/touchy/mdi.py:83 src/emc/usr_intf/gscreen/mdi.py:82 +msgid "Chip-break drill" msgstr "" -#: share/axis/tcl/axis.tcl:220 -msgid "P5 G5_8" +#: src/emc/usr_intf/touchy/mdi.py:84 src/emc/usr_intf/gscreen/mdi.py:83 +msgid "Bore" msgstr "" -#: share/axis/tcl/axis.tcl:224 -msgid "P6 G5_9" +#: src/emc/usr_intf/touchy/mdi.py:85 src/emc/usr_intf/gscreen/mdi.py:84 +msgid "Bore with dwell" msgstr "" -#: share/axis/tcl/axis.tcl:228 -msgid "P7 G59._1" +#: src/emc/usr_intf/touchy/mdi.py:86 src/emc/usr_intf/gscreen/mdi.py:85 +#, fuzzy +msgid "Offset all coordinate systems" +msgstr "Okno Kontroly Systému Súradníc" + +#: src/emc/usr_intf/touchy/mdi.py:87 src/emc/usr_intf/gscreen/mdi.py:86 +msgid "CSS Mode" msgstr "" -#: share/axis/tcl/axis.tcl:232 -msgid "P8 G59._2" +#: src/emc/usr_intf/touchy/emc_interface.py:410 +msgid "CCW" msgstr "" -#: share/axis/tcl/axis.tcl:236 -msgid "P9 G59._3" +#: src/emc/usr_intf/touchy/emc_interface.py:410 +#, fuzzy +msgid "Stopped" +msgstr "Krok" + +#: src/emc/usr_intf/touchy/emc_interface.py:410 +msgid "CW" msgstr "" -#: share/axis/tcl/axis.tcl:240 -msgid "_G92" +#: src/emc/usr_intf/touchy/touchy.glade:7 +msgid "LinuxCNC/Touchy" msgstr "" -#: share/axis/tcl/axis.tcl:248 -msgid "Tool touch off to wor_kpiece" +#. # Touchy is Copyright (c) 2009 Chris Radek # # Touchy 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 2 of the License, or # (at your option) any later version. # # Touchy 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. +#: src/emc/usr_intf/touchy/touchy.glade:11 +msgid "window1" msgstr "" -#: share/axis/tcl/axis.tcl:254 -msgid "Tool touch off to _fixture" +#: src/emc/usr_intf/touchy/touchy.glade:31 +msgid "xa" msgstr "" -#: share/axis/tcl/axis.tcl:262 -msgid "_Top view" +#: src/emc/usr_intf/touchy/touchy.glade:44 +msgid "xd" msgstr "" -#: share/axis/tcl/axis.tcl:269 -msgid "_Rotated Top view" +#: src/emc/usr_intf/touchy/touchy.glade:57 +msgid "yr" msgstr "" -#: share/axis/tcl/axis.tcl:276 -msgid "_Side view" +#: src/emc/usr_intf/touchy/touchy.glade:68 +msgid "ya" msgstr "" -#: share/axis/tcl/axis.tcl:283 -msgid "_Front view" +#: src/emc/usr_intf/touchy/touchy.glade:81 +msgid "yd" msgstr "" -#: share/axis/tcl/axis.tcl:290 -msgid "_Perspective view" +#: src/emc/usr_intf/touchy/touchy.glade:94 +msgid "zr" msgstr "" -#: share/axis/tcl/axis.tcl:299 -msgid "Display _Inches" +#: src/emc/usr_intf/touchy/touchy.glade:105 +msgid "za" msgstr "" -#: share/axis/tcl/axis.tcl:306 -msgid "Display _MM" +#: src/emc/usr_intf/touchy/touchy.glade:118 +msgid "zd" msgstr "" -#: share/axis/tcl/axis.tcl:313 -#, fuzzy -msgid "S_how program" -msgstr "Program" +#: src/emc/usr_intf/touchy/touchy.glade:131 +#: src/emc/usr_intf/gscreen/gscreen.glade:85 +#: src/emc/usr_intf/gscreen/gscreen.glade:213 +#: src/emc/usr_intf/gscreen/gscreen.glade:343 +#: src/emc/usr_intf/gscreen/gscreen.glade:471 +#: src/emc/usr_intf/gscreen/gscreen.glade:599 +#: src/emc/usr_intf/gscreen/gscreen.glade:727 +#: src/emc/usr_intf/gscreen/gscreen.glade:855 +#: src/emc/usr_intf/gscreen/gscreen.glade:983 +#: src/emc/usr_intf/gscreen/gscreen.glade:1111 +msgid "DTG" +msgstr "" -#: share/axis/tcl/axis.tcl:318 -msgid "Show program r_apids" +#: src/emc/usr_intf/touchy/touchy.glade:143 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Absolute" msgstr "" -#: share/axis/tcl/axis.tcl:323 -#, fuzzy -msgid "Alpha-_blend program" -msgstr "Program" +#: src/emc/usr_intf/touchy/touchy.glade:165 +msgid "xr" +msgstr "" -#: share/axis/tcl/axis.tcl:328 -msgid "Sho_w live plot" +#: src/emc/usr_intf/touchy/touchy.glade:176 +msgid "ar" msgstr "" -#: share/axis/tcl/axis.tcl:333 -#, fuzzy -msgid "Show too_l" -msgstr "Ukázať nastavenia." +#: src/emc/usr_intf/touchy/touchy.glade:188 +msgid "br" +msgstr "" -#: share/axis/tcl/axis.tcl:338 -#, fuzzy -msgid "Show e_xtents" -msgstr "Ukázať Reštart" +#: src/emc/usr_intf/touchy/touchy.glade:200 +msgid "cr" +msgstr "" -#: share/axis/tcl/axis.tcl:343 -#, fuzzy -msgid "Show o_ffsets" -msgstr "Ukázať Reštart" +#: src/emc/usr_intf/touchy/touchy.glade:212 +msgid "ur" +msgstr "" -#: share/axis/tcl/axis.tcl:348 -msgid "Sh_ow machine limits" +#: src/emc/usr_intf/touchy/touchy.glade:224 +msgid "vr" msgstr "" -#: share/axis/tcl/axis.tcl:353 -msgid "Show v_elocity" +#: src/emc/usr_intf/touchy/touchy.glade:236 +msgid "wr" msgstr "" -#: share/axis/tcl/axis.tcl:358 -msgid "Show _distance to go" +#: src/emc/usr_intf/touchy/touchy.glade:248 +msgid "aa" msgstr "" -#: share/axis/tcl/axis.tcl:363 -#, fuzzy -msgid "Large coordinate fo_nt" -msgstr "Okno Kontroly Systému Súradníc" +#: src/emc/usr_intf/touchy/touchy.glade:262 +msgid "ba" +msgstr "" -#: share/axis/tcl/axis.tcl:366 -#, fuzzy -msgid "Ctrl-K" -msgstr "Medzera" +#: src/emc/usr_intf/touchy/touchy.glade:276 +msgid "ca" +msgstr "" -#: share/axis/tcl/axis.tcl:368 -msgid "_Clear live plot" +#: src/emc/usr_intf/touchy/touchy.glade:290 +msgid "ua" msgstr "" -#: share/axis/tcl/axis.tcl:377 -#, fuzzy -msgid "Show commanded position" -msgstr "Zadaná pozícia" +#: src/emc/usr_intf/touchy/touchy.glade:304 +msgid "va" +msgstr "" -#: share/axis/tcl/axis.tcl:384 -#, fuzzy -msgid "Show actual position" -msgstr "Aktuálna pozícia" +#: src/emc/usr_intf/touchy/touchy.glade:318 +msgid "wa" +msgstr "" -#: share/axis/tcl/axis.tcl:393 -#, fuzzy -msgid "Show machine position" -msgstr "Pozícia stroja" +#: src/emc/usr_intf/touchy/touchy.glade:332 +msgid "ad" +msgstr "" -#: share/axis/tcl/axis.tcl:400 -#, fuzzy -msgid "Show relative position" -msgstr "Relatívna pozícia" +#: src/emc/usr_intf/touchy/touchy.glade:346 +msgid "bd" +msgstr "" -#: share/axis/tcl/axis.tcl:409 -msgid "Joint mode" +#: src/emc/usr_intf/touchy/touchy.glade:360 +msgid "cd" msgstr "" -#: share/axis/tcl/axis.tcl:416 -msgid "World mode" +#: src/emc/usr_intf/touchy/touchy.glade:374 +msgid "ud" msgstr "" -#: share/axis/tcl/axis.tcl:425 -#, fuzzy -msgid "_About AXIS" -msgstr "O" +#: src/emc/usr_intf/touchy/touchy.glade:388 +msgid "vd" +msgstr "" -#: share/axis/tcl/axis.tcl:429 -msgid "Quick _Reference" +#: src/emc/usr_intf/touchy/touchy.glade:402 +msgid "wd" msgstr "" -#: share/axis/tcl/axis.tcl:439 +#: src/emc/usr_intf/touchy/touchy.glade:448 #, fuzzy -msgid "_Machine" -msgstr "Stroj" +msgid "Estop Reset" +msgstr "Núdzové prerušenie zapnuté" -#: share/axis/tcl/axis.tcl:443 +#: src/emc/usr_intf/touchy/touchy.glade:459 +#: src/emc/usr_intf/stepconf/pport1.glade:21 +#: src/emc/usr_intf/stepconf/pport2.glade:1409 +#: src/emc/usr_intf/gscreen/gscreen.glade:2442 #, fuzzy -msgid "_View" -msgstr "Náhľad" +msgid "Estop" +msgstr "Testovať" -#: share/axis/tcl/axis.tcl:456 -msgid "Toggle Emergency Stop [F1]" -msgstr "" +#: src/emc/usr_intf/touchy/touchy.glade:475 +#, fuzzy +msgid "Machine On" +msgstr "Stroj zapnutý" -#: share/axis/tcl/axis.tcl:465 -msgid "Toggle Machine power [F2]" -msgstr "" +#: src/emc/usr_intf/touchy/touchy.glade:490 +#, fuzzy +msgid "Machine Off" +msgstr "Machine off" -#: share/axis/tcl/axis.tcl:476 -msgid "Open G-Code file [O]" +#: src/emc/usr_intf/touchy/touchy.glade:531 +msgid "Power" msgstr "" -#: share/axis/tcl/axis.tcl:484 -msgid "Reopen current file [Control-R]" -msgstr "" +#: src/emc/usr_intf/touchy/touchy.glade:562 +#, fuzzy +msgid "Unhome All" +msgstr "Uložiť všetky" -#: share/axis/tcl/axis.tcl:494 -msgid "Begin executing current file [R]" +#: src/emc/usr_intf/touchy/touchy.glade:588 +msgid "Home Selected" msgstr "" -#: share/axis/tcl/axis.tcl:502 -msgid "Execute next line [T]" +#: src/emc/usr_intf/touchy/touchy.glade:603 +msgid "Unhome Selected" msgstr "" -#: share/axis/tcl/axis.tcl:510 -msgid "Pause [P] / resume [S] execution" +#: src/emc/usr_intf/touchy/touchy.glade:625 +msgid "Homing" msgstr "" -#: share/axis/tcl/axis.tcl:518 -msgid "Stop program execution [ESC]" +#: src/emc/usr_intf/touchy/touchy.glade:644 +msgid "Startup" msgstr "" -#: share/axis/tcl/axis.tcl:528 -msgid "Toggle skip lines with '/' [Alt-M /]" +#: src/emc/usr_intf/touchy/touchy.glade:727 +msgid "G" msgstr "" -#: share/axis/tcl/axis.tcl:535 -msgid "Toggle optional pause [Alt-M 1]" +#: src/emc/usr_intf/touchy/touchy.glade:929 +msgid "." msgstr "" -#: share/axis/tcl/axis.tcl:544 -msgid "Zoom in" +#: src/emc/usr_intf/touchy/touchy.glade:963 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "0" msgstr "" -#: share/axis/tcl/axis.tcl:552 -msgid "Zoom out" +#: src/emc/usr_intf/touchy/touchy.glade:980 +msgid "3" msgstr "" -#: share/axis/tcl/axis.tcl:560 -msgid "Top view" +#: src/emc/usr_intf/touchy/touchy.glade:997 +msgid "2" msgstr "" -#: share/axis/tcl/axis.tcl:568 -msgid "Rotated top view" +#: src/emc/usr_intf/touchy/touchy.glade:1014 +msgid "1" msgstr "" -#: share/axis/tcl/axis.tcl:576 -msgid "Side view" +#: src/emc/usr_intf/touchy/touchy.glade:1031 +msgid "6" msgstr "" -#: share/axis/tcl/axis.tcl:584 -#, fuzzy -msgid "Front view" -msgstr "Neuložiť" - -#: share/axis/tcl/axis.tcl:592 -msgid "Perspective view" +#: src/emc/usr_intf/touchy/touchy.glade:1048 +msgid "5" msgstr "" -#: share/axis/tcl/axis.tcl:600 -msgid "Toggle between Drag and Rotate Mode [D]" +#: src/emc/usr_intf/touchy/touchy.glade:1065 +msgid "4" msgstr "" -#: share/axis/tcl/axis.tcl:615 -msgid "Clear live plot [Ctrl-K]" +#: src/emc/usr_intf/touchy/touchy.glade:1082 +msgid "9" msgstr "" -#: share/axis/tcl/axis.tcl:766 -#, fuzzy -msgid "Manual Control [F3]" -msgstr "Manuál" +#: src/emc/usr_intf/touchy/touchy.glade:1097 +msgid "8" +msgstr "" -#: share/axis/tcl/axis.tcl:767 -msgid "MDI [F5]" +#: src/emc/usr_intf/touchy/touchy.glade:1112 +msgid "7" msgstr "" -#: share/axis/tcl/axis.tcl:781 share/axis/tcl/axis.tcl:2036 -#: share/axis/tcl/axis.tcl:2203 +#: src/emc/usr_intf/touchy/touchy.glade:1297 #, fuzzy -msgid "Axis:" -msgstr "Os" +msgid "Flood On" +msgstr "Chladenie zapnuté" -#: share/axis/tcl/axis.tcl:1102 +#: src/emc/usr_intf/touchy/touchy.glade:1308 #, fuzzy -msgid "Home Axis" -msgstr "Domov" +msgid "Flood Off" +msgstr "Chladenie vypnuté" -#: share/axis/tcl/axis.tcl:1176 +#: src/emc/usr_intf/touchy/touchy.glade:1324 #, fuzzy -msgid "Spindle:" -msgstr "Vreteno vypni" - -#: share/axis/tcl/axis.tcl:1223 src/emc/usr_intf/touchy/touchy.glade:946 -msgid "-" -msgstr "" - -#: share/axis/tcl/axis.tcl:1237 -msgid "+" -msgstr "" +msgid "Mist On" +msgstr "Fúkanie zapnuté" -#: share/axis/tcl/axis.tcl:1242 +#: src/emc/usr_intf/touchy/touchy.glade:1339 #, fuzzy -msgid "Brake" -msgstr "Brzdy zapnuté" +msgid "Mist Off" +msgstr "Chladenie vypnuté" -#: share/axis/tcl/axis.tcl:1289 +#: src/emc/usr_intf/touchy/touchy.glade:1362 #, fuzzy -msgid "Coolant:" +msgid "Coolant" msgstr "Príkaz:" -#: share/axis/tcl/axis.tcl:1294 +#: src/emc/usr_intf/touchy/touchy.glade:1448 #, fuzzy -msgid "Mist" -msgstr "Fúkanie zapnuté" +msgid "Spindle Off" +msgstr "Vreteno vypni" -#: share/axis/tcl/axis.tcl:1299 +#: src/emc/usr_intf/touchy/touchy.glade:1501 +#: src/emc/usr_intf/touchy/touchy.glade:2578 #, fuzzy -msgid "Flood" -msgstr "Chladenie zapnuté" +msgid "Spindle speed:" +msgstr "Zmena rýchlosti vretena:" -#: share/axis/tcl/axis.tcl:1371 -msgid "History:" +#: src/emc/usr_intf/touchy/touchy.glade:1513 +#: src/emc/usr_intf/touchy/touchy.glade:2707 +msgid "label26" msgstr "" -#: share/axis/tcl/axis.tcl:1394 +#: src/emc/usr_intf/touchy/touchy.glade:1539 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4226 #, fuzzy -msgid "MDI Command:" -msgstr "Príkaz:" +msgid "Spindle" +msgstr "Vreteno vypni" -#: share/axis/tcl/axis.tcl:1403 -msgid "Go" +#: src/emc/usr_intf/touchy/touchy.glade:1597 +msgid "file.ngc" msgstr "" -#: share/axis/tcl/axis.tcl:1409 -#, fuzzy -msgid "Active G-Codes:" -msgstr "Aktívne G Kódy" - -#: share/axis/tcl/axis.tcl:1487 -#, fuzzy -msgid "Preview" -msgstr "Vetvený Pohľad" - -#: share/axis/tcl/axis.tcl:1488 -msgid "DRO" +#: src/emc/usr_intf/touchy/touchy.glade:1812 +#: src/emc/usr_intf/touchy/touchy.glade:2017 +#: src/emc/usr_intf/touchy/touchy.glade:2037 +#: src/emc/usr_intf/touchy/touchy.glade:2057 +#: src/emc/usr_intf/touchy/touchy.glade:2077 +#: src/emc/usr_intf/touchy/touchy.glade:2097 +#: src/emc/usr_intf/touchy/touchy.glade:2117 +#: src/emc/usr_intf/touchy/touchy.glade:2137 +#: src/emc/usr_intf/touchy/touchy.glade:2157 +#: src/emc/usr_intf/touchy/touchy.glade:2177 +msgid "M2" msgstr "" -#: share/axis/tcl/axis.tcl:1575 share/axis/tcl/axis.tcl:1588 -#, fuzzy -msgid "Jog Speed:" -msgstr "Rýchlosť krokov" - -#: share/axis/tcl/axis.tcl:1600 -msgid "Max Velocity:" +#: src/emc/usr_intf/touchy/touchy.glade:2244 +#: src/emc/usr_intf/touchy/touchy.glade:2374 +msgid "Page" msgstr "" -#: share/axis/tcl/axis.tcl:1629 -#, fuzzy -msgid "Spindle Override:" -msgstr "Nastaviť zmenu vretena" +#: src/emc/usr_intf/touchy/touchy.glade:2308 +msgid "Start Point" +msgstr "" -#: share/axis/tcl/axis.tcl:1631 share/axis/tcl/axis.tcl:1671 -#: src/emc/usr_intf/pncconf/pncconf.glade:3141 -#: src/emc/usr_intf/pncconf/pncconf.glade:3154 -#: src/emc/usr_intf/pncconf/pncconf.glade:3167 -#: src/emc/usr_intf/pncconf/pncconf.glade:3180 -#: src/emc/usr_intf/pncconf/pncconf.glade:3193 -#: src/emc/usr_intf/pncconf/pncconf.glade:3206 -#: src/emc/usr_intf/pncconf/pncconf.glade:3219 -#: src/emc/usr_intf/pncconf/pncconf.glade:3232 -#: src/emc/usr_intf/pncconf/pncconf.glade:3345 -#: src/emc/usr_intf/pncconf/pncconf.glade:3358 -#: src/emc/usr_intf/pncconf/pncconf.glade:3371 -#: src/emc/usr_intf/pncconf/pncconf.glade:3384 -#: src/emc/usr_intf/pncconf/pncconf.glade:3397 -#: src/emc/usr_intf/pncconf/pncconf.glade:3410 -#: src/emc/usr_intf/pncconf/pncconf.glade:3516 -#: src/emc/usr_intf/pncconf/pncconf.glade:3527 -#: src/emc/usr_intf/pncconf/pncconf.glade:4022 -#: src/emc/usr_intf/pncconf/pncconf.glade:4035 -#: src/emc/usr_intf/pncconf/pncconf.glade:4048 -#: src/emc/usr_intf/pncconf/pncconf.glade:4061 -#: src/emc/usr_intf/pncconf/pncconf.glade:4074 -#: src/emc/usr_intf/pncconf/pncconf.glade:4087 -#: src/emc/usr_intf/pncconf/pncconf.glade:4100 -#: src/emc/usr_intf/pncconf/pncconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:4226 -#: src/emc/usr_intf/pncconf/pncconf.glade:4239 -#: src/emc/usr_intf/pncconf/pncconf.glade:4252 -#: src/emc/usr_intf/pncconf/pncconf.glade:4265 -#: src/emc/usr_intf/pncconf/pncconf.glade:4278 -#: src/emc/usr_intf/pncconf/pncconf.glade:4291 -#: src/emc/usr_intf/pncconf/pncconf.glade:4397 -#: src/emc/usr_intf/pncconf/pncconf.glade:4408 -#: src/emc/usr_intf/pncconf/pncconf.glade:4903 -#: src/emc/usr_intf/pncconf/pncconf.glade:4916 -#: src/emc/usr_intf/pncconf/pncconf.glade:4929 -#: src/emc/usr_intf/pncconf/pncconf.glade:4942 -#: src/emc/usr_intf/pncconf/pncconf.glade:4955 -#: src/emc/usr_intf/pncconf/pncconf.glade:4968 -#: src/emc/usr_intf/pncconf/pncconf.glade:4981 -#: src/emc/usr_intf/pncconf/pncconf.glade:4994 -#: src/emc/usr_intf/pncconf/pncconf.glade:5107 -#: src/emc/usr_intf/pncconf/pncconf.glade:5120 -#: src/emc/usr_intf/pncconf/pncconf.glade:5133 -#: src/emc/usr_intf/pncconf/pncconf.glade:5146 -#: src/emc/usr_intf/pncconf/pncconf.glade:5159 -#: src/emc/usr_intf/pncconf/pncconf.glade:5172 -#: src/emc/usr_intf/pncconf/pncconf.glade:5278 -#: src/emc/usr_intf/pncconf/pncconf.glade:5289 -#: src/emc/usr_intf/pncconf/pncconf.glade:5582 -#: src/emc/usr_intf/pncconf/pncconf.glade:5631 -#: src/emc/usr_intf/pncconf/pncconf.glade:5641 -msgid "%" +#: src/emc/usr_intf/touchy/touchy.glade:2452 +msgid "Loaded File" msgstr "" -#: share/axis/tcl/axis.tcl:1711 -msgid "" -"LinuxCNC/AXIS version $version\n" -"\n" -"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff Epler and Chris " -"Radek.\n" -"\n" -"This is free software, and you are welcome to redistribute it under certain " -"conditions. See the file COPYING, included with LinuxCNC.\n" -"\n" -"Visit the LinuxCNC web site: " +#: src/emc/usr_intf/touchy/touchy.glade:2488 +msgid "Loaded file:" msgstr "" -#: share/axis/tcl/axis.tcl:1739 +#: src/emc/usr_intf/touchy/touchy.glade:2499 #, fuzzy -msgid "About AXIS" -msgstr "O" +msgid "Interpreted line:" +msgstr "Zoznam interpretov" -#: share/axis/tcl/axis.tcl:1768 -msgid "AXIS Quick Reference" +#: src/emc/usr_intf/touchy/touchy.glade:2513 +msgid "Distance:" msgstr "" -#: share/axis/tcl/axis.tcl:1903 -msgid "AXIS $::version on $::machine" +#: src/emc/usr_intf/touchy/touchy.glade:2526 +#: src/emc/usr_intf/stepconf/main_page.glade:23 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Velocity:" msgstr "" -#: share/axis/tcl/axis.tcl:1905 -msgid "(no file)" +#: src/emc/usr_intf/touchy/touchy.glade:2539 +msgid "Delay:" msgstr "" -#: share/axis/tcl/axis.tcl:1976 share/axis/tcl/axis.tcl:1981 -#, fuzzy -msgid "Position:" -msgstr "Typ polohy" - -#: share/axis/tcl/axis.tcl:1978 -#, fuzzy -msgid "Machine" -msgstr "Stroj" +#: src/emc/usr_intf/touchy/touchy.glade:2552 +msgid "On limit switch:" +msgstr "" -#: share/axis/tcl/axis.tcl:1978 src/emc/usr_intf/touchy/touchy.glade:155 +#: src/emc/usr_intf/touchy/touchy.glade:2565 #, fuzzy -msgid "Relative" -msgstr "pomerný" +msgid "Spindle direction:" +msgstr "Príklady konfigurácií" -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3329 -#, fuzzy -msgid "Actual" -msgstr "Aktuálna" +#: src/emc/usr_intf/touchy/touchy.glade:2591 +msgid "Loaded tool:" +msgstr "" -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3318 -#, fuzzy -msgid "Commanded" -msgstr "Rozkaz zadaný" +#: src/emc/usr_intf/touchy/touchy.glade:2604 +#: src/emc/usr_intf/touchy/touchy.glade:2955 +msgid "label19" +msgstr "" -#: share/axis/tcl/axis.tcl:2032 share/axis/tcl/axis.tcl:2203 -#, fuzzy -msgid "Joint:" -msgstr "spoj" +#: src/emc/usr_intf/touchy/touchy.glade:2617 +msgid "label20" +msgstr "" -#: share/axis/tcl/axis.tcl:2338 -#, fuzzy -msgid "Turn spindle counterclockwise [F10]" -msgstr "Vreteno Pomalšie" +#: src/emc/usr_intf/touchy/touchy.glade:2632 +#: src/emc/usr_intf/touchy/touchy.glade:2779 +#: src/emc/usr_intf/touchy/touchy.glade:2808 +#: src/emc/usr_intf/touchy/touchy.glade:2912 +#: src/emc/usr_intf/touchy/touchy.glade:2927 +msgid "label21" +msgstr "" -#: share/axis/tcl/axis.tcl:2339 -#, fuzzy -msgid "Turn spindle clockwise [F9]" -msgstr "Vreteno Pomalšie" +#: src/emc/usr_intf/touchy/touchy.glade:2647 +msgid "label22" +msgstr "" -#: share/axis/tcl/axis.tcl:2340 -msgid "Stop spindle [F9/F10]" +#: src/emc/usr_intf/touchy/touchy.glade:2662 +msgid "label23" msgstr "" -#: share/axis/tcl/axis.tcl:2341 -#, fuzzy -msgid "Turn spindle Faster [F12]" -msgstr "Vreteno rýchlejšie" +#: src/emc/usr_intf/touchy/touchy.glade:2677 +msgid "label24" +msgstr "" -#: share/axis/tcl/axis.tcl:2342 -#, fuzzy -msgid "Turn spindle Slower [F11]" -msgstr "Vreteno Pomalšie" +#: src/emc/usr_intf/touchy/touchy.glade:2692 +msgid "label25" +msgstr "" -#: share/axis/tcl/axis.tcl:2343 -msgid "Turn spindle brake on [Shift-B] or off [B]" +#: src/emc/usr_intf/touchy/touchy.glade:2722 +msgid "label27" msgstr "" -#: share/axis/tcl/axis.tcl:2344 -msgid "Turn flood on or off [F8]" +#: src/emc/usr_intf/touchy/touchy.glade:2737 +msgid "Prepped tool:" msgstr "" -#: share/axis/tcl/axis.tcl:2345 -msgid "Turn mist on or off [F7]" +#: src/emc/usr_intf/touchy/touchy.glade:2750 +msgid "label28" msgstr "" -#: share/axis/tcl/axis.tcl:2346 -msgid "Send active axis home [Home]" +#: src/emc/usr_intf/touchy/touchy.glade:2765 +msgid "Running line:" msgstr "" -#: share/axis/tcl/axis.tcl:2347 -msgid "Set G54 offset for active axis [End]" +#: src/emc/usr_intf/touchy/touchy.glade:2794 +msgid "XY Rotation:" msgstr "" -#: share/axis/tcl/axis.tcl:2348 -msgid "Activate axis [X]" +#: src/emc/usr_intf/touchy/touchy.glade:2823 +#, fuzzy +msgid "Tool length:" +msgstr "Súbor nástrojov" + +#: src/emc/usr_intf/touchy/touchy.glade:2836 +msgid "label52" msgstr "" -#: share/axis/tcl/axis.tcl:2349 -msgid "Activate axis [Y]" +#: src/emc/usr_intf/touchy/touchy.glade:2851 +msgid "" +"G1 G2 G3\n" +"M1 M2 M3\n" +"F1 S1" msgstr "" -#: share/axis/tcl/axis.tcl:2350 -msgid "Activate axis [Z]" +#: src/emc/usr_intf/touchy/touchy.glade:2870 +#, fuzzy +msgid "Active codes:" +msgstr "Aktívne G Kódy" + +#: src/emc/usr_intf/touchy/touchy.glade:2883 +#, fuzzy +msgid "G5x Offset:" +msgstr "Nástrojový doplnok:" + +#: src/emc/usr_intf/touchy/touchy.glade:2898 +#, fuzzy +msgid "G92 Offset:" +msgstr "Nástrojový doplnok:" + +#: src/emc/usr_intf/touchy/touchy.glade:2942 +msgid "Loaded file lines:" msgstr "" -#: share/axis/tcl/axis.tcl:2351 -msgid "Activate axis [A]" +#: src/emc/usr_intf/touchy/touchy.glade:2971 +msgid "Pockets:" msgstr "" -#: share/axis/tcl/axis.tcl:2352 -msgid "Activate axis [4]" +#: src/emc/usr_intf/touchy/touchy.glade:2984 +msgid "" +"1\n" +"2\n" +"3" msgstr "" -#: share/axis/tcl/axis.tcl:2353 -msgid "Activate axis [5]" +#: src/emc/usr_intf/touchy/touchy.glade:3009 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6414 +#, fuzzy +msgid "Status" +msgstr "Stav:" + +#: src/emc/usr_intf/touchy/touchy.glade:3038 +msgid "Control Font:" msgstr "" -#: share/axis/tcl/axis.tcl:2354 share/axis/tcl/axis.tcl:2355 -msgid "Jog selected axis" -msgstr "" +#: src/emc/usr_intf/touchy/touchy.glade:3050 +#, fuzzy +msgid "DRO Font:" +msgstr "Font" + +#: src/emc/usr_intf/touchy/touchy.glade:3064 +#, fuzzy +msgid "Error Font:" +msgstr "Chyba" -#: share/axis/tcl/axis.tcl:2357 -msgid "Temporarily allow jogging outside machine limits [L]" +#: src/emc/usr_intf/touchy/touchy.glade:3081 +msgid "ControlFont" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -#, fuzzy -msgid "Spindle CW" -msgstr "Vreteno vypni" - -#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 +#: src/emc/usr_intf/touchy/touchy.glade:3100 #, fuzzy -msgid "Spindle CCW" -msgstr "Vreteno vypni" +msgid "DRO Font" +msgstr "Font" -#: src/emc/usr_intf/touchy/mdi.py:50 +#: src/emc/usr_intf/touchy/touchy.glade:3121 #, fuzzy -msgid "Input control" -msgstr "Manuál" +msgid "Error Font" +msgstr "Chyba" -#: src/emc/usr_intf/touchy/mdi.py:53 src/emc/usr_intf/touchy/mdi.py:54 -msgid "Straight rapid" +#: src/emc/usr_intf/touchy/touchy.glade:3139 +msgid "Listing Font:" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:55 src/emc/usr_intf/touchy/mdi.py:56 -msgid "Straight feed" -msgstr "" +#: src/emc/usr_intf/touchy/touchy.glade:3156 +#, fuzzy +msgid "Listing Font" +msgstr "Vybrať font" -#: src/emc/usr_intf/touchy/mdi.py:57 src/emc/usr_intf/touchy/mdi.py:58 -msgid "Arc CW" +#: src/emc/usr_intf/touchy/touchy.glade:3176 +msgid "Hide pointer" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:59 src/emc/usr_intf/touchy/mdi.py:60 -msgid "Arc CCW" -msgstr "" +#: src/emc/usr_intf/touchy/touchy.glade:3187 +#, fuzzy +msgid "Show pointer" +msgstr "Program" -#: src/emc/usr_intf/touchy/mdi.py:61 src/emc/usr_intf/touchy/mdi.py:62 -msgid "Dwell" +#: src/emc/usr_intf/touchy/touchy.glade:3214 +msgid "Theme:" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:63 -#, fuzzy -msgid "Setup" -msgstr "Schovať nastavenia." - -#: src/emc/usr_intf/touchy/mdi.py:64 +#: src/emc/usr_intf/touchy/touchy.glade:3228 #, fuzzy -msgid "Spindle synchronized feed" -msgstr "Vreteno dozadu" +msgid "default\n" +msgstr "Použiť pôvodné" -#: src/emc/usr_intf/touchy/mdi.py:65 -msgid "Rigid tap" +#: src/emc/usr_intf/touchy/touchy.glade:3252 +msgid "Display Options" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/touchy/mdi.py:67 -#: src/emc/usr_intf/touchy/mdi.py:68 src/emc/usr_intf/touchy/mdi.py:69 -msgid "Probe" +#: src/emc/usr_intf/touchy/touchy.glade:3286 +#: src/emc/usr_intf/stepconf/base.glade:867 +#: src/emc/usr_intf/gscreen/gscreen.glade:3664 +msgid "Inch" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:70 -msgid "Radius compensation left" +#: src/emc/usr_intf/touchy/touchy.glade:3349 +msgid "Position Readout" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:71 -msgid "Radius compensation right" +#: src/emc/usr_intf/touchy/touchy.glade:3379 +msgid "Workpiece" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:72 -msgid "Radius compensation left, immediate" +#: src/emc/usr_intf/touchy/touchy.glade:3390 +msgid "Fixture" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:73 -msgid "Radius compensation right, immediate" +#: src/emc/usr_intf/touchy/touchy.glade:3410 +msgid "Tool Setting" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:74 +#: src/emc/usr_intf/touchy/touchy.glade:3441 #, fuzzy -msgid "Tool length offset" -msgstr "Určiť doplnok nástroja" - -#: src/emc/usr_intf/touchy/mdi.py:75 -msgid "Tool length offset immediate" -msgstr "" +msgid "Delete / lines" +msgstr "Vymazať" -#: src/emc/usr_intf/touchy/mdi.py:76 -msgid "Motion in unoffset coordinates" +#: src/emc/usr_intf/touchy/touchy.glade:3456 +msgid "Keep / lines" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:77 +#: src/emc/usr_intf/touchy/touchy.glade:3473 #, fuzzy -msgid "Continuous mode" -msgstr "Priebežný" +msgid "Pause on M1" +msgstr "Pauza" -#: src/emc/usr_intf/touchy/mdi.py:79 -msgid "Drill" +#: src/emc/usr_intf/touchy/touchy.glade:3484 +msgid "Ignore M1" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:80 -msgid "Drill with dwell" +#: src/emc/usr_intf/touchy/touchy.glade:3504 +msgid "Program Options" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:81 -msgid "Peck drill" +#: src/emc/usr_intf/touchy/touchy.glade:3531 +#: src/emc/usr_intf/gscreen/gscreen.glade:2200 +msgid "Preferences" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:82 -msgid "Chip-break drill" +#: src/emc/usr_intf/touchy/touchy.glade:3567 +#: src/emc/usr_intf/gscreen/gscreen.glade:1425 +msgid "FO: 100%" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:83 -msgid "Bore" +#: src/emc/usr_intf/touchy/touchy.glade:3582 +#: src/emc/usr_intf/gscreen/gscreen.glade:1437 +msgid "SO: 100%" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:84 -msgid "Bore with dwell" +#: src/emc/usr_intf/touchy/touchy.glade:3596 +msgid "MV: 100" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:85 -#, fuzzy -msgid "Offset all coordinate systems" -msgstr "Okno Kontroly Systému Súradníc" - -#: src/emc/usr_intf/touchy/mdi.py:86 -msgid "CSS Mode" +#: src/emc/usr_intf/touchy/touchy.glade:3610 +msgid "Jogging" msgstr "" -#: src/emc/usr_intf/touchy/emc_interface.py:410 -msgid "CCW" +#: src/emc/usr_intf/touchy/touchy.glade:3624 +msgid "Start Point" msgstr "" -#: src/emc/usr_intf/touchy/emc_interface.py:410 -#, fuzzy -msgid "Stopped" -msgstr "Krok" - -#: src/emc/usr_intf/touchy/emc_interface.py:410 -msgid "CW" +#: src/emc/usr_intf/touchy/touchy.glade:3651 +msgid ".01" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:7 -msgid "LinuxCNC/Touchy" +#: src/emc/usr_intf/touchy/touchy.glade:3664 +msgid ".001" msgstr "" -#. # Touchy is Copyright (c) 2009 Chris Radek # # Touchy 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 2 of the License, or # (at your option) any later version. # # Touchy 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. -#: src/emc/usr_intf/touchy/touchy.glade:11 -msgid "window1" +#: src/emc/usr_intf/touchy/touchy.glade:3680 +msgid ".0001" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:31 -msgid "xa" +#: src/emc/usr_intf/touchy/touchy.glade:3708 +msgid " X " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:44 -msgid "xd" +#: src/emc/usr_intf/touchy/touchy.glade:3720 +msgid " Y " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:57 -msgid "yr" +#: src/emc/usr_intf/touchy/touchy.glade:3735 +msgid " Z " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:68 -msgid "ya" +#: src/emc/usr_intf/touchy/touchy.glade:3750 +msgid " A " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:81 -msgid "yd" +#: src/emc/usr_intf/touchy/touchy.glade:3766 +msgid " B " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:94 -msgid "zr" +#: src/emc/usr_intf/touchy/touchy.glade:3784 +msgid " C " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:105 -msgid "za" +#: src/emc/usr_intf/touchy/touchy.glade:3802 +msgid " U " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:118 -msgid "zd" +#: src/emc/usr_intf/touchy/touchy.glade:3818 +msgid " V " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:131 -msgid "DTG" +#: src/emc/usr_intf/touchy/touchy.glade:3836 +msgid " W " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:143 -#: src/emc/usr_intf/pncconf/pncconf.glade:59755 -msgid "Absolute" +#: src/emc/usr_intf/touchy/touchy.glade:3869 +msgid "Handwheel" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:165 -msgid "xr" +#: src/emc/usr_intf/stepconf/stepconf.py:57 +msgid "" +"Stepconf encountered an error. The following information may be useful in " +"troubleshooting:\n" +"\n" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:176 -msgid "ar" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#, fuzzy +msgid "Stepconf" +msgstr "Krok" -#: src/emc/usr_intf/touchy/touchy.glade:188 -msgid "br" +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#: src/emc/usr_intf/stepconf/stepconf.py:217 +#: src/emc/usr_intf/stepconf/main_page.glade:557 +#: src/emc/usr_intf/gscreen/gscreen.py:3414 +#: src/emc/usr_intf/gscreen/gscreen.py:3415 +#: src/emc/usr_intf/gscreen/gscreen.glade:4043 +#, fuzzy +msgid "Start" +msgstr "Reštartovať" + +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Base Information" +msgstr "Informácie o verzii" + +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Parallel Port 1" +msgstr "Vytlačiť nastavenia" + +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Parallel Port 2" +msgstr "Vytlačiť nastavenia" + +#: src/emc/usr_intf/stepconf/stepconf.py:130 +#, fuzzy +msgid "Options" +msgstr "Pohyb" + +#: src/emc/usr_intf/stepconf/stepconf.py:130 +#, fuzzy +msgid "Axis X" +msgstr "Os" + +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis Y" +msgstr "Os" + +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis Z" +msgstr "Os" + +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis A" +msgstr "Os" + +#: src/emc/usr_intf/stepconf/stepconf.py:132 +#: src/emc/usr_intf/pncconf/pncconf.py:378 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#, fuzzy +msgid "Spindle" +msgstr "Vreteno vypni" + +#: src/emc/usr_intf/stepconf/stepconf.py:132 +msgid "Almost Done" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:200 -msgid "cr" +#: src/emc/usr_intf/stepconf/stepconf.py:136 +#: src/emc/usr_intf/pncconf/pncconf.py:135 +msgid "Gecko 201" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:212 -msgid "ur" +#: src/emc/usr_intf/stepconf/stepconf.py:137 +#: src/emc/usr_intf/pncconf/pncconf.py:136 +msgid "Gecko 202" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:224 -msgid "vr" +#: src/emc/usr_intf/stepconf/stepconf.py:138 +#: src/emc/usr_intf/pncconf/pncconf.py:137 +msgid "Gecko 203v" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:236 -msgid "wr" +#: src/emc/usr_intf/stepconf/stepconf.py:139 +#: src/emc/usr_intf/pncconf/pncconf.py:138 +msgid "Gecko 210" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:248 -msgid "aa" +#: src/emc/usr_intf/stepconf/stepconf.py:140 +#: src/emc/usr_intf/pncconf/pncconf.py:139 +msgid "Gecko 212" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:262 -msgid "ba" +#: src/emc/usr_intf/stepconf/stepconf.py:141 +#: src/emc/usr_intf/pncconf/pncconf.py:140 +msgid "Gecko 320" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:276 -msgid "ca" +#: src/emc/usr_intf/stepconf/stepconf.py:142 +#: src/emc/usr_intf/pncconf/pncconf.py:141 +msgid "Gecko 540" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:290 -msgid "ua" +#: src/emc/usr_intf/stepconf/stepconf.py:143 +#: src/emc/usr_intf/pncconf/pncconf.py:142 +msgid "L297" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:304 -msgid "va" +#: src/emc/usr_intf/stepconf/stepconf.py:144 +#: src/emc/usr_intf/pncconf/pncconf.py:143 +msgid "PMDX-150" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:318 -msgid "wa" +#: src/emc/usr_intf/stepconf/stepconf.py:145 +#: src/emc/usr_intf/stepconf/pport1.glade:32 +#: src/emc/usr_intf/pncconf/pncconf.py:144 +msgid "Sherline" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:332 -msgid "ad" +#: src/emc/usr_intf/stepconf/stepconf.py:146 +#: src/emc/usr_intf/pncconf/pncconf.py:145 +msgid "Xylotex 8S-3" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:346 -msgid "bd" +#: src/emc/usr_intf/stepconf/stepconf.py:147 +#: src/emc/usr_intf/pncconf/pncconf.py:146 +msgid "Parker-Compumotor oem750" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:360 -msgid "cd" +#: src/emc/usr_intf/stepconf/stepconf.py:148 +#: src/emc/usr_intf/pncconf/pncconf.py:147 +msgid "JVL-SMD41 or 42" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:374 -msgid "ud" +#: src/emc/usr_intf/stepconf/stepconf.py:149 +#: src/emc/usr_intf/pncconf/pncconf.py:148 +msgid "Hobbycnc Pro Chopper" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:388 -msgid "vd" +#: src/emc/usr_intf/stepconf/stepconf.py:150 +msgid "Kelling 4030" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:402 -msgid "wd" +#: src/emc/usr_intf/stepconf/stepconf.py:151 +msgid "Leadshine Series" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:448 +#: src/emc/usr_intf/stepconf/stepconf.py:190 #, fuzzy -msgid "Estop Reset" -msgstr "Núdzové prerušenie zapnuté" +msgid "X Step" +msgstr "Krok" -#: src/emc/usr_intf/touchy/touchy.glade:459 -#, fuzzy -msgid "Estop" -msgstr "Testovať" +#: src/emc/usr_intf/stepconf/stepconf.py:190 +msgid "X Direction" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:475 +#: src/emc/usr_intf/stepconf/stepconf.py:190 #, fuzzy -msgid "Machine On" -msgstr "Stroj zapnutý" +msgid "Y Step" +msgstr "Krok" -#: src/emc/usr_intf/touchy/touchy.glade:490 +#: src/emc/usr_intf/stepconf/stepconf.py:190 +msgid "Y Direction" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:191 #, fuzzy -msgid "Machine Off" -msgstr "Machine off" +msgid "Z Step" +msgstr "Krok" -#: src/emc/usr_intf/touchy/touchy.glade:531 -msgid "Power" +#: src/emc/usr_intf/stepconf/stepconf.py:191 +msgid "Z Direction" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:562 +#: src/emc/usr_intf/stepconf/stepconf.py:191 #, fuzzy -msgid "Unhome All" -msgstr "Uložiť všetky" +msgid "A Step" +msgstr "Krok" -#: src/emc/usr_intf/touchy/touchy.glade:588 -msgid "Home Selected" +#: src/emc/usr_intf/stepconf/stepconf.py:191 +msgid "A Direction" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:603 -msgid "Unhome Selected" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 +#, fuzzy +msgid "Spindle ON" +msgstr "Vreteno vypni" -#: src/emc/usr_intf/touchy/touchy.glade:625 -msgid "Homing" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#, fuzzy +msgid "Spindle PWM" +msgstr "Vreteno vypni" -#: src/emc/usr_intf/touchy/touchy.glade:644 -msgid "Startup" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 +#, fuzzy +msgid "Spindle Brake" +msgstr "Vreteno rýchlejšie" -#: src/emc/usr_intf/touchy/touchy.glade:727 -msgid "G" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 +msgid "Coolant Mist" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:929 -msgid "." +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 +msgid "Coolant Flood" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:963 -#: src/emc/usr_intf/pncconf/pncconf.glade:60883 -#: src/emc/usr_intf/pncconf/pncconf.glade:60895 -#: src/emc/usr_intf/pncconf/pncconf.glade:61017 -#: src/emc/usr_intf/pncconf/pncconf.glade:61029 -#: src/emc/usr_intf/pncconf/pncconf.glade:61041 -#: src/emc/usr_intf/pncconf/pncconf.glade:61053 -#: src/emc/usr_intf/pncconf/pncconf.glade:61065 -#: src/emc/usr_intf/pncconf/pncconf.glade:61077 -#: src/emc/usr_intf/pncconf/pncconf.glade:62040 -#: src/emc/usr_intf/pncconf/pncconf.glade:62052 -#: src/emc/usr_intf/pncconf/pncconf.glade:62064 -#: src/emc/usr_intf/pncconf/pncconf.glade:62076 -#: src/emc/usr_intf/pncconf/pncconf.glade:62088 -#: src/emc/usr_intf/pncconf/pncconf.glade:62100 -#: src/emc/usr_intf/pncconf/pncconf.glade:62222 -#: src/emc/usr_intf/pncconf/pncconf.glade:62234 -#: src/emc/usr_intf/pncconf/pncconf.glade:63069 -#: src/emc/usr_intf/pncconf/pncconf.glade:63081 -#: src/emc/usr_intf/pncconf/pncconf.glade:63203 -#: src/emc/usr_intf/pncconf/pncconf.glade:63215 -#: src/emc/usr_intf/pncconf/pncconf.glade:63227 -#: src/emc/usr_intf/pncconf/pncconf.glade:63239 -#: src/emc/usr_intf/pncconf/pncconf.glade:63251 -#: src/emc/usr_intf/pncconf/pncconf.glade:63263 -#: src/emc/usr_intf/pncconf/pncconf.glade:64226 -#: src/emc/usr_intf/pncconf/pncconf.glade:64238 -#: src/emc/usr_intf/pncconf/pncconf.glade:64250 -#: src/emc/usr_intf/pncconf/pncconf.glade:64262 -#: src/emc/usr_intf/pncconf/pncconf.glade:64274 -#: src/emc/usr_intf/pncconf/pncconf.glade:64286 -#: src/emc/usr_intf/pncconf/pncconf.glade:64408 -#: src/emc/usr_intf/pncconf/pncconf.glade:64420 -#: src/emc/usr_intf/pncconf/pncconf.glade:65231 -#: src/emc/usr_intf/pncconf/pncconf.glade:65243 -#: src/emc/usr_intf/pncconf/pncconf.glade:65359 -#: src/emc/usr_intf/pncconf/pncconf.glade:65371 -#: src/emc/usr_intf/pncconf/pncconf.glade:65383 -#: src/emc/usr_intf/pncconf/pncconf.glade:65395 -#: src/emc/usr_intf/pncconf/pncconf.glade:65407 -#: src/emc/usr_intf/pncconf/pncconf.glade:65419 -#: src/emc/usr_intf/pncconf/pncconf.glade:67091 -msgid "0" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:370 +#, fuzzy +msgid "ESTOP Out" +msgstr "NÚDZOVÉ PRERUŠENIE" -#: src/emc/usr_intf/touchy/touchy.glade:980 -msgid "3" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +msgid "Amplifier Enable" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:997 -msgid "2" +#: src/emc/usr_intf/stepconf/stepconf.py:194 +#: src/emc/usr_intf/pncconf/pncconf.py:371 +msgid "Charge Pump" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1014 -msgid "1" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 0" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1031 -msgid "6" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 1" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1048 -msgid "5" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 2" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1065 -msgid "4" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 3" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1082 -msgid "9" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:196 +#: src/emc/usr_intf/stepconf/stepconf.py:215 +#: src/emc/usr_intf/stepconf/pport1.glade:18 +#: src/emc/usr_intf/stepconf/pport2.glade:1406 +#: src/emc/usr_intf/stepconf/pport2.glade:1420 +#, fuzzy +msgid "Unused" +msgstr "Späť" -#: src/emc/usr_intf/touchy/touchy.glade:1097 -msgid "8" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 +#, fuzzy +msgid "ESTOP In" +msgstr "NÚDZOVÉ PRERUŠENIE" -#: src/emc/usr_intf/touchy/touchy.glade:1112 -msgid "7" +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 +msgid "Probe In" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1297 +#: src/emc/usr_intf/stepconf/stepconf.py:199 #, fuzzy -msgid "Flood On" -msgstr "Chladenie zapnuté" +msgid "Spindle Index" +msgstr "Vreteno rýchlejšie" -#: src/emc/usr_intf/touchy/touchy.glade:1308 +#: src/emc/usr_intf/stepconf/stepconf.py:199 #, fuzzy -msgid "Flood Off" -msgstr "Chladenie vypnuté" +msgid "Spindle Phase A" +msgstr "Vreteno rýchlejšie" -#: src/emc/usr_intf/touchy/touchy.glade:1324 +#: src/emc/usr_intf/stepconf/stepconf.py:199 #, fuzzy -msgid "Mist On" -msgstr "Fúkanie zapnuté" +msgid "Spindle Phase B" +msgstr "Vreteno rýchlejšie" -#: src/emc/usr_intf/touchy/touchy.glade:1339 +#: src/emc/usr_intf/stepconf/stepconf.py:200 #, fuzzy -msgid "Mist Off" -msgstr "Chladenie vypnuté" +msgid "Home X" +msgstr "Domov" -#: src/emc/usr_intf/touchy/touchy.glade:1362 +#: src/emc/usr_intf/stepconf/stepconf.py:200 #, fuzzy -msgid "Coolant" -msgstr "Príkaz:" +msgid "Home Y" +msgstr "Domov" -#: src/emc/usr_intf/touchy/touchy.glade:1448 +#: src/emc/usr_intf/stepconf/stepconf.py:200 #, fuzzy -msgid "Spindle Off" -msgstr "Vreteno vypni" +msgid "Home Z" +msgstr "Domov" -#: src/emc/usr_intf/touchy/touchy.glade:1501 -#: src/emc/usr_intf/touchy/touchy.glade:2578 +#: src/emc/usr_intf/stepconf/stepconf.py:200 #, fuzzy -msgid "Spindle speed:" -msgstr "Zmena rýchlosti vretena:" +msgid "Home A" +msgstr "Domov" -#: src/emc/usr_intf/touchy/touchy.glade:1513 -#: src/emc/usr_intf/touchy/touchy.glade:2707 -msgid "label26" +#: src/emc/usr_intf/stepconf/stepconf.py:201 +msgid "Minimum Limit + Home X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1539 -#, fuzzy -msgid "Spindle" -msgstr "Vreteno vypni" +#: src/emc/usr_intf/stepconf/stepconf.py:201 +msgid "Minimum Limit + Home Y" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1597 -msgid "file.ngc" +#: src/emc/usr_intf/stepconf/stepconf.py:202 +msgid "Minimum Limit + Home Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1812 -#: src/emc/usr_intf/touchy/touchy.glade:2017 -#: src/emc/usr_intf/touchy/touchy.glade:2037 -#: src/emc/usr_intf/touchy/touchy.glade:2057 -#: src/emc/usr_intf/touchy/touchy.glade:2077 -#: src/emc/usr_intf/touchy/touchy.glade:2097 -#: src/emc/usr_intf/touchy/touchy.glade:2117 -#: src/emc/usr_intf/touchy/touchy.glade:2137 -#: src/emc/usr_intf/touchy/touchy.glade:2157 -#: src/emc/usr_intf/touchy/touchy.glade:2177 -msgid "M2" +#: src/emc/usr_intf/stepconf/stepconf.py:202 +msgid "Minimum Limit + Home A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2244 -#: src/emc/usr_intf/touchy/touchy.glade:2374 -msgid "Page" +#: src/emc/usr_intf/stepconf/stepconf.py:203 +msgid "Maximum Limit + Home X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2308 -msgid "Start Point" +#: src/emc/usr_intf/stepconf/stepconf.py:203 +msgid "Maximum Limit + Home Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2452 -msgid "Loaded File" +#: src/emc/usr_intf/stepconf/stepconf.py:204 +msgid "Maximum Limit + Home Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2488 -msgid "Loaded file:" +#: src/emc/usr_intf/stepconf/stepconf.py:204 +msgid "Maximum Limit + Home A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2499 -#, fuzzy -msgid "Interpreted line:" -msgstr "Zoznam interpretov" +#: src/emc/usr_intf/stepconf/stepconf.py:205 +msgid "Both Limit + Home X" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2513 -msgid "Distance:" +#: src/emc/usr_intf/stepconf/stepconf.py:205 +msgid "Both Limit + Home Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2526 -#: src/emc/usr_intf/stepconf/stepconf.glade:4148 -#: src/emc/usr_intf/pncconf/pncconf.glade:60476 -#: src/emc/usr_intf/pncconf/pncconf.glade:61571 -#: src/emc/usr_intf/pncconf/pncconf.glade:62664 -#: src/emc/usr_intf/pncconf/pncconf.glade:63757 -#: src/emc/usr_intf/pncconf/pncconf.glade:64856 -msgid "Velocity:" +#: src/emc/usr_intf/stepconf/stepconf.py:206 +msgid "Both Limit + Home Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2539 -msgid "Delay:" +#: src/emc/usr_intf/stepconf/stepconf.py:206 +msgid "Both Limit + Home A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2552 -msgid "On limit switch:" +#: src/emc/usr_intf/stepconf/stepconf.py:207 +msgid "Minimum Limit X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2565 -#, fuzzy -msgid "Spindle direction:" -msgstr "Príklady konfigurácií" +#: src/emc/usr_intf/stepconf/stepconf.py:207 +msgid "Minimum Limit Y" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2591 -msgid "Loaded tool:" +#: src/emc/usr_intf/stepconf/stepconf.py:208 +msgid "Minimum Limit Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2604 -#: src/emc/usr_intf/touchy/touchy.glade:2955 -msgid "label19" +#: src/emc/usr_intf/stepconf/stepconf.py:208 +msgid "Minimum Limit A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2617 -msgid "label20" +#: src/emc/usr_intf/stepconf/stepconf.py:209 +msgid "Maximum Limit X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2632 -#: src/emc/usr_intf/touchy/touchy.glade:2779 -#: src/emc/usr_intf/touchy/touchy.glade:2808 -#: src/emc/usr_intf/touchy/touchy.glade:2912 -#: src/emc/usr_intf/touchy/touchy.glade:2927 -msgid "label21" +#: src/emc/usr_intf/stepconf/stepconf.py:209 +msgid "Maximum Limit Y" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:210 +msgid "Maximum Limit Z" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:210 +msgid "Maximum Limit A" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:211 +msgid "Both Limit X" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:211 +msgid "Both Limit Y" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:212 +msgid "Both Limit Z" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:212 +msgid "Both Limit A" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:213 +#, fuzzy +msgid "All limits" +msgstr "Všetky súbory" + +#: src/emc/usr_intf/stepconf/stepconf.py:213 +#, fuzzy +msgid "All home" +msgstr "Domov" + +#: src/emc/usr_intf/stepconf/stepconf.py:213 +#, fuzzy +msgid "All limits + homes" +msgstr "Všetky súbory" + +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 0" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2647 -msgid "label22" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 1" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2662 -msgid "label23" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 2" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2677 -msgid "label24" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 3" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2692 -msgid "label25" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:218 +#, fuzzy +msgid "Forward" +msgstr "Vreteno Dopredu" -#: src/emc/usr_intf/touchy/touchy.glade:2722 -msgid "label27" +#: src/emc/usr_intf/stepconf/stepconf.py:219 +msgid "Done" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2737 -msgid "Prepped tool:" +#: src/emc/usr_intf/stepconf/stepconf.py:220 +msgid "" +"OK to replace existing custom ladder program?\n" +"Existing Custom.clp will be renamed custom_backup.clp.\n" +"Any existing file named -custom_backup.clp- will be lost. " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2750 -msgid "label28" +#: src/emc/usr_intf/stepconf/stepconf.py:221 +#: src/emc/usr_intf/pncconf/pncconf.py:8163 +msgid "" +"You edited a ladder program and have selected a different program to copy to " +"your configuration file.\n" +"The edited program will be lost.\n" +"\n" +"Are you sure? " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2765 -msgid "Running line:" +#: src/emc/usr_intf/stepconf/stepconf.py:222 +msgid "" +"You need to designate an E-stop input pin in the Parallel Port Setup page " +"for this program." msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2794 -msgid "XY Rotation:" +#: src/emc/usr_intf/stepconf/stepconf.py:223 +msgid "" +"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" +"Existing custompanel.xml and custom_postgui.hal will be renamed " +"custompanel_backup.xml and postgui_backup.hal.\n" +"Any existing file named custompanel_backup.xml and custom_postgui.hal will " +"be lost. " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2823 -#, fuzzy -msgid "Tool length:" -msgstr "Súbor nástrojov" - -#: src/emc/usr_intf/touchy/touchy.glade:2836 -msgid "label52" +#: src/emc/usr_intf/stepconf/stepconf.py:224 +msgid "Quit Stepconf and discard changes?" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2851 +#: src/emc/usr_intf/stepconf/stepconf.py:225 msgid "" -"G1 G2 G3\n" -"M1 M2 M3\n" -"F1 S1" +"The configuration has been built and saved.\n" +"Do you want to quit?" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2870 -#, fuzzy -msgid "Active codes:" -msgstr "Aktívne G Kódy" - -#: src/emc/usr_intf/touchy/touchy.glade:2883 -#, fuzzy -msgid "G5x Offset:" -msgstr "Nástrojový doplnok:" +#: src/emc/usr_intf/stepconf/stepconf.py:226 +msgid "" +"You are using a simulated-realtime version of Machinekit, so testing / " +"tuning of hardware is unavailable." +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2898 -#, fuzzy -msgid "G92 Offset:" -msgstr "Nástrojový doplnok:" +#: src/emc/usr_intf/stepconf/stepconf.py:227 +#, python-format +msgid "" +"You are using a realtime version of Machinekit but didn't load a realtime " +"kernel so testing / tuning of hardware is unavailable.\n" +"This is possibly because you updated the OS and it doesn't automatically " +"load the RTAI kernel anymore.\n" +"You are using the %(actual)s kernel.\n" +"You need to use kernel:" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2942 -msgid "Loaded file lines:" +#: src/emc/usr_intf/stepconf/stepconf.py:246 +msgid "my-mill" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2971 -msgid "Pockets:" +#: src/emc/usr_intf/stepconf/stepconf.py:585 +#, python-format +msgid "File %r was modified since it was written by stepconf" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2984 +#: src/emc/usr_intf/stepconf/stepconf.py:588 msgid "" -"1\n" -"2\n" -"3" +"Saving this configuration file will discard configuration changes made " +"outside stepconf." msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3009 +#: src/emc/usr_intf/stepconf/stepconf.py:603 +#: src/emc/usr_intf/pncconf/pncconf.py:1318 #, fuzzy -msgid "Status" -msgstr "Stav:" +msgid "Continue? " +msgstr "Priebežný" -#: src/emc/usr_intf/touchy/touchy.glade:3038 -msgid "Control Font:" +#: src/emc/usr_intf/stepconf/stepconf.py:604 +#: src/emc/usr_intf/pncconf/pncconf.py:1319 +msgid "yY" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3050 -#, fuzzy -msgid "DRO Font:" -msgstr "Font" - -#: src/emc/usr_intf/touchy/touchy.glade:3064 -#, fuzzy -msgid "Error Font:" -msgstr "Chyba" - -#: src/emc/usr_intf/touchy/touchy.glade:3081 -msgid "ControlFont" +#: src/emc/usr_intf/stepconf/stepconf.py:689 +#: src/emc/usr_intf/pncconf/pncconf.py:3591 +#, python-format +msgid "launch %s" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3100 -#, fuzzy -msgid "DRO Font" -msgstr "Font" - -#: src/emc/usr_intf/touchy/touchy.glade:3121 -#, fuzzy -msgid "Error Font" -msgstr "Chyba" - -#: src/emc/usr_intf/touchy/touchy.glade:3139 -msgid "Listing Font:" +#: src/emc/usr_intf/stepconf/stepconf.py:693 +msgid "Desktop Launcher for Machinekit config made by Stepconf" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3156 -#, fuzzy -msgid "Listing Font" -msgstr "Vybrať font" - -#: src/emc/usr_intf/touchy/touchy.glade:3176 -msgid "Hide pointer" +#: src/emc/usr_intf/stepconf/stepconf.py:860 +#: src/emc/usr_intf/stepconf/pages.py:145 +msgid "Other" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3187 -#, fuzzy -msgid "Show pointer" -msgstr "Program" +#: src/emc/usr_intf/stepconf/stepconf.py:1295 +#: src/emc/usr_intf/pncconf/pncconf.py:9302 +#, fuzzy, python-format +msgid "%s Axis Test" +msgstr "Doplnok osi" -#: src/emc/usr_intf/touchy/touchy.glade:3214 -msgid "Theme:" +#: src/emc/usr_intf/stepconf/stepconf.py:1298 +#: src/emc/usr_intf/stepconf/pages.py:617 +msgid "deg / s" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3228 -#, fuzzy -msgid "default\n" -msgstr "Použiť pôvodné" - -#: src/emc/usr_intf/touchy/touchy.glade:3252 -msgid "Display Options" +#: src/emc/usr_intf/stepconf/stepconf.py:1299 +#: src/emc/usr_intf/stepconf/pages.py:618 +msgid "deg / s²" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3286 -msgid "Inch" +#: src/emc/usr_intf/stepconf/stepconf.py:1300 +#: src/emc/usr_intf/stepconf/pages.py:619 +msgid "deg" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3349 -msgid "Position Readout" +#: src/emc/usr_intf/stepconf/stepconf.py:1312 +#: src/emc/usr_intf/stepconf/pages.py:623 +#: src/emc/usr_intf/stepconf/axisx.glade:629 +#: src/emc/usr_intf/stepconf/axisy.glade:615 +#: src/emc/usr_intf/stepconf/axisz.glade:615 +#: src/emc/usr_intf/stepconf/axisa.glade:629 +#: src/emc/usr_intf/pncconf/pncconf.glade:64717 +msgid "mm / s" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3379 -msgid "Workpiece" +#: src/emc/usr_intf/stepconf/stepconf.py:1313 +#: src/emc/usr_intf/stepconf/pages.py:624 +#: src/emc/usr_intf/stepconf/axisx.glade:645 +#: src/emc/usr_intf/stepconf/axisy.glade:631 +#: src/emc/usr_intf/stepconf/axisz.glade:631 +#: src/emc/usr_intf/stepconf/axisa.glade:645 +#: src/emc/usr_intf/pncconf/pncconf.glade:64732 +msgid "mm / s²" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3390 -msgid "Fixture" +#: src/emc/usr_intf/stepconf/stepconf.py:1326 +#: src/emc/usr_intf/stepconf/pages.py:629 +msgid "in / s" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3410 -msgid "Tool Setting" +#: src/emc/usr_intf/stepconf/stepconf.py:1327 +#: src/emc/usr_intf/stepconf/pages.py:630 +msgid "in / s²" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3441 +#: src/emc/usr_intf/stepconf/pages.py:189 #, fuzzy -msgid "Delete / lines" -msgstr "Vymazať" +msgid "Machinekit 'stepconf' configuration files" +msgstr "EMC2 Pomocník nastavenia" -#: src/emc/usr_intf/touchy/touchy.glade:3456 -msgid "Keep / lines" +#: src/emc/usr_intf/stepconf/pages.py:190 +#: src/emc/usr_intf/pncconf/pncconf.py:4257 +#, fuzzy +msgid "Modify Existing Configuration" +msgstr "Moje konfigurácie" + +#: src/emc/usr_intf/stepconf/pages.py:616 +msgid "degree / rev" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3473 -#, fuzzy -msgid "Pause on M1" -msgstr "Pauza" +#: src/emc/usr_intf/stepconf/pages.py:620 +msgid "Steps / deg" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3484 -msgid "Ignore M1" +#: src/emc/usr_intf/stepconf/pages.py:622 +#: src/emc/usr_intf/stepconf/axisx.glade:613 +#: src/emc/usr_intf/stepconf/axisy.glade:599 +#: src/emc/usr_intf/stepconf/axisz.glade:599 +#: src/emc/usr_intf/stepconf/axisa.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / rev" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3504 -msgid "Program Options" +#: src/emc/usr_intf/stepconf/pages.py:626 +#: src/emc/usr_intf/stepconf/axisx.glade:15 +#: src/emc/usr_intf/stepconf/axisy.glade:15 +#: src/emc/usr_intf/stepconf/axisz.glade:15 +#: src/emc/usr_intf/stepconf/axisa.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Steps / mm" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3531 -msgid "Preferences" +#: src/emc/usr_intf/stepconf/pages.py:628 +msgid "rev / in" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3567 -msgid "FO: 100%" +#: src/emc/usr_intf/stepconf/pages.py:632 +msgid "Steps / in" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3582 -msgid "SO: 100%" +#: src/emc/usr_intf/stepconf/build_INI.py:45 +#: src/emc/usr_intf/stepconf/build_HAL.py:41 +#, python-format +msgid "# Generated by stepconf 1.1 at %s" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3596 -msgid "MV: 100" +#: src/emc/usr_intf/stepconf/build_INI.py:46 +#: src/emc/usr_intf/stepconf/build_HAL.py:42 +#: src/emc/usr_intf/pncconf/pncconf.py:1328 +#: src/emc/usr_intf/pncconf/pncconf.py:2422 +msgid "# If you make changes to this file, they will be" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3610 -msgid "Jogging" +#: src/emc/usr_intf/stepconf/build_INI.py:47 +#: src/emc/usr_intf/stepconf/build_HAL.py:43 +msgid "# overwritten when you run stepconf again" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3637 -msgid ".01" +#: src/emc/usr_intf/stepconf/build_INI.py:126 +msgid "# add halui MDI commands here (max 64) " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3650 -msgid ".001" +#: src/emc/usr_intf/stepconf/build_HAL.py:275 +#: src/emc/usr_intf/pncconf/pncconf.py:3131 +msgid "# **** Setup for external estop ladder program -START ****" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3666 -msgid ".0001" +#: src/emc/usr_intf/stepconf/build_HAL.py:282 +#: src/emc/usr_intf/pncconf/pncconf.py:3138 +msgid "# **** Setup for external estop ladder program -END ****" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3694 -msgid " X " +#: src/emc/usr_intf/stepconf/build_HAL.py:302 +#: src/emc/usr_intf/pncconf/pncconf.py:3165 +msgid "" +"# Load Classicladder with modbus master included (GUI must run for Modbus)" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3706 -msgid " Y " +#: src/emc/usr_intf/stepconf/build_HAL.py:305 +#: src/emc/usr_intf/pncconf/pncconf.py:3170 +msgid "# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3721 -msgid " Z " +#: src/emc/usr_intf/stepconf/build_HAL.py:315 +#: src/emc/usr_intf/pncconf/pncconf.py:3252 +msgid "Include your PyVCP panel here.\n" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3736 -msgid " A " +#: src/emc/usr_intf/stepconf/build_HAL.py:324 +#: src/emc/usr_intf/stepconf/build_HAL.py:370 +msgid "# Include your customized HAL commands here" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3752 -msgid " B " +#: src/emc/usr_intf/stepconf/build_HAL.py:325 +msgid "" +"# The commands in this file are run after the AXIS GUI (including PyVCP " +"panel) starts" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3770 -msgid " C " +#: src/emc/usr_intf/stepconf/build_HAL.py:328 +#: src/emc/usr_intf/pncconf/pncconf.py:3280 +msgid "# **** Setup of spindle speed display using pyvcp -START ****" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3788 -msgid " U " +#: src/emc/usr_intf/stepconf/build_HAL.py:330 +msgid "# **** Use ACTUAL spindle velocity from spindle encoder" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3804 -msgid " V " +#: src/emc/usr_intf/stepconf/build_HAL.py:331 +msgid "" +"# **** spindle-velocity-feedback-rps bounces around so we filter it with " +"lowpass" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3822 -msgid " W " +#: src/emc/usr_intf/stepconf/build_HAL.py:332 +msgid "" +"# **** spindle-velocity-feedback-rps is signed so we use absolute component " +"to remove sign" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3855 -msgid "Handwheel" +#: src/emc/usr_intf/stepconf/build_HAL.py:333 +msgid "# **** ACTUAL velocity is in RPS not RPM so we scale it." +msgstr "" + +#: src/emc/usr_intf/stepconf/build_HAL.py:342 +msgid "# **** set up spindle at speed indicator ****" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:53 +#: src/emc/usr_intf/stepconf/build_HAL.py:355 msgid "" -"Stepconf encountered an error. The following information may be useful in " -"troubleshooting:\n" -"\n" +"# **** Use COMMANDED spindle velocity from LinuxCNC because no spindle " +"encoder was specified" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:70 -#: src/emc/usr_intf/pncconf/pncconf.py:133 -msgid "Gecko 201" +#: src/emc/usr_intf/stepconf/build_HAL.py:371 +msgid "# This file will not be overwritten when you run stepconf again" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:71 -#: src/emc/usr_intf/pncconf/pncconf.py:134 -msgid "Gecko 202" +#: src/emc/usr_intf/stepconf/build_HAL.py:412 +msgid "# This file sets up simulated limits/home/spindle encoder hardware." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:72 -#: src/emc/usr_intf/pncconf/pncconf.py:135 -msgid "Gecko 203v" +#: src/emc/usr_intf/stepconf/build_HAL.py:413 +msgid "# This is a generated file do not edit." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:73 -#: src/emc/usr_intf/pncconf/pncconf.py:136 -msgid "Gecko 210" +#: src/emc/usr_intf/stepconf/main_page.glade:35 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Acceleration:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:74 -#: src/emc/usr_intf/pncconf/pncconf.py:137 -msgid "Gecko 212" +#: src/emc/usr_intf/stepconf/main_page.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Jog:" +msgstr "" + +#: src/emc/usr_intf/stepconf/main_page.glade:63 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Test Area:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:75 -#: src/emc/usr_intf/pncconf/pncconf.py:138 -msgid "Gecko 320" +#: src/emc/usr_intf/stepconf/main_page.glade:97 +msgid "mm/s^2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:76 -#: src/emc/usr_intf/pncconf/pncconf.py:139 -msgid "Gecko 540" +#: src/emc/usr_intf/stepconf/main_page.glade:138 +#, fuzzy +msgid "mm/s" +msgstr "mm" + +#: src/emc/usr_intf/stepconf/main_page.glade:400 +msgid "±" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:77 -#: src/emc/usr_intf/pncconf/pncconf.py:140 -msgid "L297" +#: src/emc/usr_intf/stepconf/main_page.glade:423 +#, fuzzy +msgid "Stepconf -Stepper Configuration Wizard" +msgstr "Príklady konfigurácií" + +#: src/emc/usr_intf/stepconf/main_page.glade:503 +#: src/emc/usr_intf/pncconf/pncconf.glade:2054 +#: src/emc/usr_intf/pncconf/pncconf.glade:2067 +#: src/emc/usr_intf/pncconf/pncconf.glade:2080 +#: src/emc/usr_intf/pncconf/pncconf.glade:2093 +#: src/emc/usr_intf/pncconf/pncconf.glade:2106 +#: src/emc/usr_intf/pncconf/pncconf.glade:2119 +#: src/emc/usr_intf/pncconf/pncconf.glade:2132 +#: src/emc/usr_intf/pncconf/pncconf.glade:2145 +#: src/emc/usr_intf/pncconf/pncconf.glade:2156 +#: src/emc/usr_intf/pncconf/pncconf.glade:2169 +#: src/emc/usr_intf/pncconf/pncconf.glade:2182 +#: src/emc/usr_intf/pncconf/pncconf.glade:2528 +#: src/emc/usr_intf/pncconf/pncconf.glade:2541 +#: src/emc/usr_intf/pncconf/pncconf.glade:2554 +#: src/emc/usr_intf/pncconf/pncconf.glade:8104 +#: src/emc/usr_intf/pncconf/pncconf.glade:8139 +#: src/emc/usr_intf/pncconf/pncconf.glade:63377 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:1342 +#: src/emc/usr_intf/gscreen/gscreen.glade:1360 +#: src/emc/usr_intf/gscreen/gscreen.glade:1378 +msgid "label" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:78 -#: src/emc/usr_intf/pncconf/pncconf.py:141 -msgid "PMDX-150" +#: src/emc/usr_intf/stepconf/main_page.glade:605 +msgid "" +"This program creates configuration files (.ini and .hal) for \"step and " +"direction\" milling machines and lathes connected to the PC parallel port.\n" +"\n" +"Stepconf requires a minimum 800 X 600 display resolution." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:79 -#: src/emc/usr_intf/pncconf/pncconf.py:142 -msgid "Sherline" +#: src/emc/usr_intf/stepconf/main_page.glade:628 +#: src/emc/usr_intf/pncconf/pncconf.glade:28799 +#: src/emc/usr_intf/pncconf/pncconf.glade:35720 +#: src/emc/usr_intf/pncconf/pncconf.glade:42643 +#: src/emc/usr_intf/pncconf/pncconf.glade:49566 +#: src/emc/usr_intf/pncconf/pncconf.glade:56489 +msgid "page 1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:80 -#: src/emc/usr_intf/pncconf/pncconf.py:143 -msgid "Xylotex 8S-3" +#: src/emc/usr_intf/stepconf/base.glade:18 +msgid "XYZ" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:81 -#: src/emc/usr_intf/pncconf/pncconf.py:144 -msgid "Parker-Compumotor oem750" +#: src/emc/usr_intf/stepconf/base.glade:21 +msgid "XYZA" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:82 -#: src/emc/usr_intf/pncconf/pncconf.py:145 -msgid "JVL-SMD41 or 42" +#: src/emc/usr_intf/stepconf/base.glade:24 +msgid "XZ (Lathe)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:83 -#: src/emc/usr_intf/pncconf/pncconf.py:146 -msgid "Hobbycnc Pro Chopper" +#: src/emc/usr_intf/stepconf/base.glade:79 +msgid "Step _Time:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:84 -#: src/emc/usr_intf/pncconf/pncconf.py:147 -msgid "Keling 4030" +#: src/emc/usr_intf/stepconf/base.glade:113 +#: src/emc/usr_intf/stepconf/base.glade:165 +#: src/emc/usr_intf/stepconf/base.glade:219 +#: src/emc/usr_intf/stepconf/base.glade:271 +#: src/emc/usr_intf/stepconf/base.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:443 +#: src/emc/usr_intf/pncconf/pncconf.glade:8226 +msgid "ns" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:153 +#: src/emc/usr_intf/stepconf/base.glade:127 #, fuzzy -msgid "X Step" -msgstr "Krok" +msgid "Step _Space:" +msgstr "Jedna medzera" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -msgid "X Direction" +#: src/emc/usr_intf/stepconf/base.glade:181 +msgid "Direction _Hold:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:153 +#: src/emc/usr_intf/stepconf/base.glade:235 #, fuzzy -msgid "Y Step" -msgstr "Krok" +msgid "_Direction Setup:" +msgstr "Vytlačiť nastavenia" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -msgid "Y Direction" +#: src/emc/usr_intf/stepconf/base.glade:338 +msgid "Driver Timing Settings" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -#, fuzzy -msgid "Z Step" -msgstr "Krok" - -#: src/emc/usr_intf/stepconf/stepconf.py:154 -msgid "Z Direction" +#: src/emc/usr_intf/stepconf/base.glade:351 +msgid "" +"_Test Base\n" +"Period Jitter " msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:154 +#: src/emc/usr_intf/stepconf/base.glade:372 #, fuzzy -msgid "A Step" -msgstr "Krok" - -#: src/emc/usr_intf/stepconf/stepconf.py:154 -msgid "A Direction" -msgstr "" +msgid "Machine _Name:" +msgstr "Stroj zapnutý" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 +#: src/emc/usr_intf/stepconf/base.glade:386 #, fuzzy -msgid "Spindle ON" -msgstr "Vreteno vypni" +msgid "_Axis configuration:" +msgstr "Nastavenie HAL" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:557 +#: src/emc/usr_intf/stepconf/base.glade:401 #, fuzzy -msgid "Spindle PWM" -msgstr "Vreteno vypni" +msgid "Reset Default machine _units:" +msgstr "Stroj zapnutý" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 +#: src/emc/usr_intf/stepconf/base.glade:416 +#: src/emc/usr_intf/pncconf/pncconf.glade:245 #, fuzzy -msgid "Spindle Brake" -msgstr "Vreteno rýchlejšie" +msgid "Configuration directory:" +msgstr "EMC2 Pomocník nastavenia" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 -msgid "Coolant Mist" +#: src/emc/usr_intf/stepconf/base.glade:430 +msgid "D_river type:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 -msgid "Coolant Flood" +#: src/emc/usr_intf/stepconf/base.glade:545 +msgid "" +"Driver characteristics: (Multiply by 1000 for times specified in µs or " +"microseconds)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:442 -#, fuzzy -msgid "ESTOP Out" -msgstr "NÚDZOVÉ PRERUŠENIE" - -#: src/emc/usr_intf/stepconf/stepconf.py:156 -msgid "Amplifier Enable" +#: src/emc/usr_intf/stepconf/base.glade:573 +msgid "Base Period Maximum _Jitter:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:157 -#: src/emc/usr_intf/pncconf/pncconf.py:443 -msgid "Charge Pump" +#: src/emc/usr_intf/stepconf/base.glade:630 +msgid "One Parport" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 0" +#: src/emc/usr_intf/stepconf/base.glade:646 +msgid "Two Parports" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 1" +#: src/emc/usr_intf/stepconf/base.glade:663 +msgid "Three Parports" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 2" +#: src/emc/usr_intf/stepconf/base.glade:698 +msgid "Min Base Period:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 3" +#: src/emc/usr_intf/stepconf/base.glade:735 +msgid "Max step rate:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:159 -#: src/emc/usr_intf/stepconf/stepconf.py:178 -#, fuzzy -msgid "Unused" -msgstr "Späť" - -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 -#, fuzzy -msgid "ESTOP In" -msgstr "NÚDZOVÉ PRERUŠENIE" - -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 -msgid "Probe In" +#: src/emc/usr_intf/stepconf/base.glade:870 +msgid "MM" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:162 +#: src/emc/usr_intf/stepconf/start.glade:11 #, fuzzy -msgid "Spindle Index" -msgstr "Vreteno rýchlejšie" +msgid "Create a _new configuration" +msgstr "Príklady konfigurácií" -#: src/emc/usr_intf/stepconf/stepconf.py:162 -#, fuzzy -msgid "Spindle Phase A" -msgstr "Vreteno rýchlejšie" +#: src/emc/usr_intf/stepconf/start.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:130 +msgid "Modify a configuration already created with this program" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:162 -#, fuzzy -msgid "Spindle Phase B" -msgstr "Vreteno rýchlejšie" +#: src/emc/usr_intf/stepconf/start.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:118 +msgid "Do you wish to:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -#, fuzzy -msgid "Home X" -msgstr "Domov" +#: src/emc/usr_intf/stepconf/start.glade:61 +#: src/emc/usr_intf/pncconf/pncconf.glade:100 +msgid "" +"If you have made modifications to this configuration outside this program, " +"they will be lost when you select \"Modify a configuration\"" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -#, fuzzy -msgid "Home Y" -msgstr "Domov" +#: src/emc/usr_intf/stepconf/start.glade:76 +msgid "Create a desktop _shortcut (symlink) to configuration files." +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -#, fuzzy -msgid "Home Z" -msgstr "Domov" +#: src/emc/usr_intf/stepconf/start.glade:93 +msgid "Create a desktop _launcher to start LinuxCNC with this configuration." +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/start.glade:124 #, fuzzy -msgid "Home A" -msgstr "Domov" +msgid "Create simulated hardware configuration." +msgstr "Príklady konfigurácií" -#: src/emc/usr_intf/stepconf/stepconf.py:164 -msgid "Minimum Limit + Home X" +#: src/emc/usr_intf/stepconf/pport1.glade:35 +msgid "Xylotex" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:164 -msgid "Minimum Limit + Home Y" +#: src/emc/usr_intf/stepconf/pport1.glade:38 +msgid "TB6560 3 axes" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:165 -msgid "Minimum Limit + Home Z" +#: src/emc/usr_intf/stepconf/pport1.glade:41 +msgid "TB6560 4 axes" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:165 -msgid "Minimum Limit + Home A" +#: src/emc/usr_intf/stepconf/pport1.glade:59 +#: src/emc/usr_intf/pncconf/pncconf.glade:62915 +msgid "Pin _1:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:166 -msgid "Maximum Limit + Home X" +#: src/emc/usr_intf/stepconf/pport1.glade:74 +#: src/emc/usr_intf/stepconf/pport2.glade:768 +#: src/emc/usr_intf/pncconf/pncconf.glade:61685 +#: src/emc/usr_intf/pncconf/pncconf.glade:62901 +msgid "Pin _2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:166 -msgid "Maximum Limit + Home Y" +#: src/emc/usr_intf/stepconf/pport1.glade:89 +#: src/emc/usr_intf/stepconf/pport2.glade:814 +#: src/emc/usr_intf/pncconf/pncconf.glade:61668 +#: src/emc/usr_intf/pncconf/pncconf.glade:62887 +msgid "Pin _3:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:167 -msgid "Maximum Limit + Home Z" +#: src/emc/usr_intf/stepconf/pport1.glade:104 +#: src/emc/usr_intf/stepconf/pport2.glade:860 +#: src/emc/usr_intf/pncconf/pncconf.glade:61651 +#: src/emc/usr_intf/pncconf/pncconf.glade:62873 +msgid "Pin _4:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:167 -msgid "Maximum Limit + Home A" +#: src/emc/usr_intf/stepconf/pport1.glade:119 +#: src/emc/usr_intf/stepconf/pport2.glade:906 +#: src/emc/usr_intf/pncconf/pncconf.glade:61634 +#: src/emc/usr_intf/pncconf/pncconf.glade:62859 +msgid "Pin _5:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:168 -msgid "Both Limit + Home X" +#: src/emc/usr_intf/stepconf/pport1.glade:134 +#: src/emc/usr_intf/stepconf/pport2.glade:952 +#: src/emc/usr_intf/pncconf/pncconf.glade:61617 +#: src/emc/usr_intf/pncconf/pncconf.glade:62845 +msgid "Pin _6:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:168 -msgid "Both Limit + Home Y" +#: src/emc/usr_intf/stepconf/pport1.glade:149 +#: src/emc/usr_intf/stepconf/pport2.glade:998 +#: src/emc/usr_intf/pncconf/pncconf.glade:61600 +#: src/emc/usr_intf/pncconf/pncconf.glade:62831 +msgid "Pin _7:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:169 -msgid "Both Limit + Home Z" +#: src/emc/usr_intf/stepconf/pport1.glade:164 +#: src/emc/usr_intf/stepconf/pport2.glade:1044 +#: src/emc/usr_intf/pncconf/pncconf.glade:61583 +#: src/emc/usr_intf/pncconf/pncconf.glade:62817 +msgid "Pin _8:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:169 -msgid "Both Limit + Home A" +#: src/emc/usr_intf/stepconf/pport1.glade:179 +#: src/emc/usr_intf/stepconf/pport2.glade:1090 +#: src/emc/usr_intf/pncconf/pncconf.glade:61566 +#: src/emc/usr_intf/pncconf/pncconf.glade:62803 +msgid "Pin _9:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:170 -msgid "Minimum Limit X" +#: src/emc/usr_intf/stepconf/pport1.glade:194 +#: src/emc/usr_intf/stepconf/pport2.glade:1137 +#: src/emc/usr_intf/pncconf/pncconf.glade:62789 +msgid "_Pin 14:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:170 -msgid "Minimum Limit Y" +#: src/emc/usr_intf/stepconf/pport1.glade:209 +#: src/emc/usr_intf/stepconf/pport2.glade:1185 +#: src/emc/usr_intf/pncconf/pncconf.glade:62775 +msgid "P_in 16:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:171 -msgid "Minimum Limit Z" +#: src/emc/usr_intf/stepconf/pport1.glade:224 +#: src/emc/usr_intf/stepconf/pport2.glade:1233 +#: src/emc/usr_intf/pncconf/pncconf.glade:62761 +msgid "Pi_n 17:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:171 -msgid "Minimum Limit A" +#: src/emc/usr_intf/stepconf/pport1.glade:470 +#: src/emc/usr_intf/stepconf/pport2.glade:692 +msgid "Outputs (PC to Mill):" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:172 -msgid "Maximum Limit X" +#: src/emc/usr_intf/stepconf/pport1.glade:483 +#: src/emc/usr_intf/stepconf/pport2.glade:427 +#: src/emc/usr_intf/pncconf/pncconf.glade:61701 +msgid "Pin 1_0:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:172 -msgid "Maximum Limit Y" +#: src/emc/usr_intf/stepconf/pport1.glade:500 +#: src/emc/usr_intf/stepconf/pport2.glade:475 +#: src/emc/usr_intf/pncconf/pncconf.glade:61717 +msgid "Pin 1_1:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:173 -msgid "Maximum Limit Z" +#: src/emc/usr_intf/stepconf/pport1.glade:517 +#: src/emc/usr_intf/stepconf/pport2.glade:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:61733 +msgid "Pin 1_2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:173 -msgid "Maximum Limit A" +#: src/emc/usr_intf/stepconf/pport1.glade:534 +#: src/emc/usr_intf/stepconf/pport2.glade:571 +#: src/emc/usr_intf/pncconf/pncconf.glade:61749 +msgid "Pin 1_3:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:174 -msgid "Both Limit X" +#: src/emc/usr_intf/stepconf/pport1.glade:551 +#: src/emc/usr_intf/stepconf/pport2.glade:619 +#: src/emc/usr_intf/pncconf/pncconf.glade:61765 +msgid "Pin 1_5:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:174 -msgid "Both Limit Y" +#: src/emc/usr_intf/stepconf/pport1.glade:590 +#: src/emc/usr_intf/stepconf/pport2.glade:16 +msgid "Inputs (Mill to PC):" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:175 -msgid "Both Limit Z" +#: src/emc/usr_intf/stepconf/pport1.glade:618 +#: src/emc/usr_intf/stepconf/pport1.glade:632 +#: src/emc/usr_intf/stepconf/pport2.glade:29 +#: src/emc/usr_intf/stepconf/pport2.glade:702 +#: src/emc/usr_intf/pncconf/pncconf.glade:62335 +#: src/emc/usr_intf/pncconf/pncconf.glade:62348 +msgid "Invert" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:175 -msgid "Both Limit A" +#: src/emc/usr_intf/stepconf/pport1.glade:1018 +msgid "Output pinout presets:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:176 -#, fuzzy -msgid "All limits" -msgstr "Všetky súbory" +#: src/emc/usr_intf/stepconf/pport1.glade:1096 +msgid "Parport _Base Address:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:176 +#: src/emc/usr_intf/stepconf/pport1.glade:1132 #, fuzzy -msgid "All home" -msgstr "Domov" +msgid "Preset" +msgstr "Resetovať" -#: src/emc/usr_intf/stepconf/stepconf.py:176 -#, fuzzy -msgid "All limits + homes" -msgstr "Všetky súbory" +#: src/emc/usr_intf/stepconf/pport2.glade:47 +msgid "Pin 2:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 0" +#: src/emc/usr_intf/stepconf/pport2.glade:94 +msgid "Pin 3:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 1" +#: src/emc/usr_intf/stepconf/pport2.glade:141 +msgid "Pin 4:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 2" +#: src/emc/usr_intf/stepconf/pport2.glade:188 +msgid "Pin 5:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 3" +#: src/emc/usr_intf/stepconf/pport2.glade:235 +msgid "Pin 6:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:203 -msgid "my-mill" +#: src/emc/usr_intf/stepconf/pport2.glade:282 +msgid "Pin 7:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:215 -#: src/emc/usr_intf/stepconf/stepconf.py:217 -#: src/emc/usr_intf/pncconf/pncconf.py:983 -#: src/emc/usr_intf/pncconf/pncconf.py:985 -msgid "Enter Address" +#: src/emc/usr_intf/stepconf/pport2.glade:329 +msgid "Pin 8:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:375 -#, python-format -msgid "File %r was modified since it was written by stepconf" +#: src/emc/usr_intf/stepconf/pport2.glade:376 +msgid "Pin 9:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:378 -msgid "" -"Saving this configuration file will discard configuration changes made " -"outside stepconf." +#: src/emc/usr_intf/stepconf/pport2.glade:721 +msgid "Pin _1: " msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:393 -#: src/emc/usr_intf/pncconf/pncconf.py:1356 +#: src/emc/usr_intf/stepconf/pport2.glade:1431 #, fuzzy -msgid "Continue? " -msgstr "Priebežný" +msgid "Out" +msgstr "Vystrihnúť" -#: src/emc/usr_intf/stepconf/stepconf.py:394 -#: src/emc/usr_intf/pncconf/pncconf.py:1357 -msgid "yY" +#: src/emc/usr_intf/stepconf/pport2.glade:1434 +#, fuzzy +msgid "In" +msgstr "Io port" + +#: src/emc/usr_intf/stepconf/spindle.glade:23 +#, fuzzy +msgid "Use spindle-at-speed:" +msgstr "Nastaviť zmenu rýchlosti vretena:" + +#: src/emc/usr_intf/stepconf/spindle.glade:64 +msgid "Speed display filter gain:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:446 -#: src/emc/usr_intf/stepconf/stepconf.py:786 -#, python-format -msgid "# Generated by stepconf at %s" +#: src/emc/usr_intf/stepconf/spindle.glade:99 +#, fuzzy +msgid "Calibration:" +msgstr "Kalibrácia..." + +#: src/emc/usr_intf/stepconf/spindle.glade:113 +#, fuzzy +msgid "_Speed 1:" +msgstr "Rýchlosť:" + +#: src/emc/usr_intf/stepconf/spindle.glade:129 +msgid "_PWM 1:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:447 -#: src/emc/usr_intf/stepconf/stepconf.py:787 -#: src/emc/usr_intf/pncconf/pncconf.py:1366 -#: src/emc/usr_intf/pncconf/pncconf.py:2369 -msgid "# If you make changes to this file, they will be" +#: src/emc/usr_intf/stepconf/spindle.glade:148 +#, fuzzy +msgid "S_peed 2:" +msgstr "Rýchlosť:" + +#: src/emc/usr_intf/stepconf/spindle.glade:164 +msgid "P_WM 2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:448 -#: src/emc/usr_intf/stepconf/stepconf.py:788 -msgid "# overwritten when you run stepconf again" +#: src/emc/usr_intf/stepconf/spindle.glade:183 +msgid "PWM _Rate:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:516 -msgid "# add halui MDI commands here (max 64) " +#: src/emc/usr_intf/stepconf/spindle.glade:285 +msgid "_Cycles per revolution:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:991 -#: src/emc/usr_intf/pncconf/pncconf.py:2991 -msgid "# **** Setup for external estop ladder program -START ****" +#: src/emc/usr_intf/stepconf/spindle.glade:347 +msgid "Enter 0 Hz for \"PDM\" mode" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:998 -#: src/emc/usr_intf/pncconf/pncconf.py:2998 -msgid "# **** Setup for external estop ladder program -END ****" +#: src/emc/usr_intf/stepconf/spindle.glade:360 +msgid "Scale %" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1018 -#: src/emc/usr_intf/pncconf/pncconf.py:3025 -msgid "" -"# Load Classicladder with modbus master included (GUI must run for Modbus)" +#: src/emc/usr_intf/stepconf/options.glade:50 +msgid "Include Halui user interface component" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1021 -#: src/emc/usr_intf/pncconf/pncconf.py:3030 -msgid "# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI" -msgstr "" +#: src/emc/usr_intf/stepconf/options.glade:102 +#: src/emc/usr_intf/pncconf/pncconf.glade:6753 +#, fuzzy +msgid "Blank program" +msgstr "Program" + +#: src/emc/usr_intf/stepconf/options.glade:119 +#: src/emc/usr_intf/pncconf/pncconf.glade:6768 +#, fuzzy +msgid "Spindle speed display " +msgstr "Zmena rýchlosti vretena:" -#: src/emc/usr_intf/stepconf/stepconf.py:1031 -#: src/emc/usr_intf/pncconf/pncconf.py:3112 -msgid "Include your PyVCP panel here.\n" +#: src/emc/usr_intf/stepconf/options.glade:136 +#: src/emc/usr_intf/stepconf/options.glade:671 +#: src/emc/usr_intf/pncconf/pncconf.glade:6799 +#: src/emc/usr_intf/pncconf/pncconf.glade:7120 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Existing custom program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1040 -#: src/emc/usr_intf/stepconf/stepconf.py:1087 -msgid "# Include your customized HAL commands here" +#: src/emc/usr_intf/stepconf/options.glade:153 +#: src/emc/usr_intf/stepconf/options.glade:688 +#: src/emc/usr_intf/pncconf/pncconf.glade:6814 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include connections to HAL" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1041 +#: src/emc/usr_intf/stepconf/options.glade:202 +#: src/emc/usr_intf/pncconf/pncconf.glade:6997 +#: src/emc/usr_intf/pncconf/pncconf.glade:7545 msgid "" -"# The commands in this file are run after the AXIS GUI (including PyVCP " -"panel) starts" +"_Display\n" +"sample\n" +"panel" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1045 -#: src/emc/usr_intf/pncconf/pncconf.py:3140 -msgid "# **** Setup of spindle speed display using pyvcp -START ****" +#: src/emc/usr_intf/stepconf/options.glade:243 +#: src/emc/usr_intf/pncconf/pncconf.glade:7056 +msgid "Include custom PyVCP GUI panel" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1047 -msgid "# **** Use ACTUAL spindle velocity from spindle encoder" +#: src/emc/usr_intf/stepconf/options.glade:414 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (float) out pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1048 -msgid "# **** spindle-velocity bounces around so we filter it with lowpass" +#: src/emc/usr_intf/stepconf/options.glade:429 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (float) in pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1049 -msgid "" -"# **** spindle-velocity is signed so we use absolute component to remove sign" +#: src/emc/usr_intf/stepconf/options.glade:444 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (s32) out pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1050 -msgid "# **** ACTUAL velocity is in RPS not RPM so we scale it." +#: src/emc/usr_intf/stepconf/options.glade:459 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (s32) in pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1059 -msgid "# **** set up spindle at speed indicator ****" +#: src/emc/usr_intf/stepconf/options.glade:475 +msgid "Number of digital out pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1072 -msgid "" -"# **** Use COMMANDED spindle velocity from LinuxCNC because no spindle " -"encoder was specified" +#: src/emc/usr_intf/stepconf/options.glade:506 +msgid "Number of digital in pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1073 -msgid "" -"# **** COMANDED velocity is signed so we use absolute component (abs.0) to " -"remove sign" +#: src/emc/usr_intf/stepconf/options.glade:518 +msgid "setup number of external pins" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1088 -msgid "# This file will not be overwritten when you run stepconf again" +#: src/emc/usr_intf/stepconf/options.glade:533 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include modbus master support" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1095 -#, python-format -msgid "Generated by stepconf at %s" +#: src/emc/usr_intf/stepconf/options.glade:625 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Blank ladder program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1166 -#: src/emc/usr_intf/pncconf/pncconf.py:3451 -#, python-format -msgid "launch %s" +#: src/emc/usr_intf/stepconf/options.glade:638 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Estop ladder program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1170 -msgid "Desktop Launcher for LinuxCNC config made by Stepconf" +#: src/emc/usr_intf/stepconf/options.glade:654 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Serial modbus program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1196 -#: src/emc/usr_intf/pncconf/pncconf.py:3700 -#, fuzzy, python-format -msgid "%s Axis Configuration" -msgstr "Nastavenie HAL" +#: src/emc/usr_intf/stepconf/options.glade:740 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"Edit ladder\n" +"program" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1238 -#: src/emc/usr_intf/stepconf/stepconf.py:1337 -msgid "Other" +#: src/emc/usr_intf/stepconf/options.glade:781 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include _Classicladder PLC" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1249 -msgid "Quit Stepconf and discard changes?" +#: src/emc/usr_intf/stepconf/options.glade:802 +msgid "_Onscreen prompt for manual tool change" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1280 -msgid "" -"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " -"of hardware is unavailable." +#: src/emc/usr_intf/stepconf/axisx.glade:31 +#: src/emc/usr_intf/stepconf/axisy.glade:31 +#: src/emc/usr_intf/stepconf/axisz.glade:31 +#: src/emc/usr_intf/stepconf/axisa.glade:45 +msgid "_Motor steps per revolution:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1283 -msgid "" -"You are using a realtime version of LinuxCNC but didn't load a realtime " -"kernel so testing / tuning of hardware is unavailable.\n" -"This is possibly because you updated the OS and it doesn't automatically " -"load the RTAI kernel anymore.\n" +#: src/emc/usr_intf/stepconf/axisx.glade:45 +#: src/emc/usr_intf/stepconf/axisy.glade:44 +#: src/emc/usr_intf/stepconf/axisz.glade:44 +#: src/emc/usr_intf/stepconf/axisa.glade:58 +msgid "_Driver Microstepping:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1298 -#, fuzzy -msgid "LinuxCNC 'stepconf' configuration files" -msgstr "EMC2 Pomocník nastavenia" +#: src/emc/usr_intf/stepconf/axisx.glade:61 +#: src/emc/usr_intf/stepconf/axisy.glade:59 +#: src/emc/usr_intf/stepconf/axisz.glade:59 +#: src/emc/usr_intf/stepconf/axisa.glade:73 +msgid "_Pulley teeth (Motor:Leadscrew):" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1299 -#: src/emc/usr_intf/pncconf/pncconf.py:4094 +#: src/emc/usr_intf/stepconf/axisx.glade:77 +#: src/emc/usr_intf/stepconf/axisy.glade:74 +#: src/emc/usr_intf/stepconf/axisz.glade:74 +#: src/emc/usr_intf/stepconf/axisa.glade:88 #, fuzzy -msgid "Modify Existing Configuration" -msgstr "Moje konfigurácie" - -#: src/emc/usr_intf/stepconf/stepconf.py:1439 -msgid "" -"You need to designate an E-stop input pin in the Parallel Port Setup page " -"for this program." -msgstr "" +msgid "_Leadscrew Pitch:" +msgstr "Nahradiť týmto:" -#: src/emc/usr_intf/stepconf/stepconf.py:1452 -msgid "" -"OK to replace existing custom ladder program?\n" -"Existing Custom.clp will be renamed custom_backup.clp.\n" -"Any existing file named -custom_backup.clp- will be lost. " +#: src/emc/usr_intf/stepconf/axisx.glade:93 +#: src/emc/usr_intf/stepconf/axisy.glade:89 +#: src/emc/usr_intf/stepconf/axisz.glade:89 +#: src/emc/usr_intf/stepconf/axisa.glade:103 +#: src/emc/usr_intf/pncconf/pncconf.glade:64687 +msgid "Maximum _Velocity:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1457 -#: src/emc/usr_intf/pncconf/pncconf.py:7815 -msgid "" -"You edited a ladder program and have selected a different program to copy to " -"your configuration file.\n" -"The edited program will be lost.\n" -"\n" -"Are you sure? " +#: src/emc/usr_intf/stepconf/axisx.glade:109 +#: src/emc/usr_intf/stepconf/axisy.glade:104 +#: src/emc/usr_intf/stepconf/axisz.glade:104 +#: src/emc/usr_intf/stepconf/axisa.glade:118 +#: src/emc/usr_intf/pncconf/pncconf.glade:64702 +msgid "Maximum _Acceleration:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1471 -msgid "" -"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" -"Existing custompanel.xml and custom_postgui.hal will be renamed " -"custompanel_backup.xml and postgui_backup.hal.\n" -"Any existing file named custompanel_backup.xml and custom_postgui.hal will " -"be lost. " +#: src/emc/usr_intf/stepconf/axisx.glade:125 +#: src/emc/usr_intf/stepconf/axisy.glade:119 +#: src/emc/usr_intf/stepconf/axisz.glade:119 +#: src/emc/usr_intf/stepconf/axisa.glade:133 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Time to accelerate to max speed:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1676 -msgid "degree / rev" +#: src/emc/usr_intf/stepconf/axisx.glade:141 +#: src/emc/usr_intf/stepconf/axisy.glade:134 +#: src/emc/usr_intf/stepconf/axisz.glade:134 +#: src/emc/usr_intf/stepconf/axisa.glade:148 +msgid "Distance to accelerate to max speed:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1677 -#: src/emc/usr_intf/stepconf/stepconf.py:2205 -msgid "deg / s" +#: src/emc/usr_intf/stepconf/axisx.glade:271 +#: src/emc/usr_intf/stepconf/axisy.glade:263 +#: src/emc/usr_intf/stepconf/axisz.glade:263 +#: src/emc/usr_intf/stepconf/axisa.glade:277 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulse rate at max speed:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1678 -#: src/emc/usr_intf/stepconf/stepconf.py:2206 -msgid "deg / s²" +#: src/emc/usr_intf/stepconf/axisx.glade:342 +#: src/emc/usr_intf/stepconf/axisy.glade:334 +#: src/emc/usr_intf/stepconf/axisz.glade:334 +#: src/emc/usr_intf/stepconf/axisa.glade:348 +msgid "_Home location:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1679 -#: src/emc/usr_intf/stepconf/stepconf.py:2207 -msgid "deg" +#: src/emc/usr_intf/stepconf/axisx.glade:358 +#: src/emc/usr_intf/stepconf/axisy.glade:349 +#: src/emc/usr_intf/stepconf/axisz.glade:349 +#: src/emc/usr_intf/stepconf/axisa.glade:363 +msgid "Home _Switch location:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1680 -msgid "Steps / deg" +#: src/emc/usr_intf/stepconf/axisx.glade:374 +#: src/emc/usr_intf/stepconf/axisy.glade:364 +#: src/emc/usr_intf/stepconf/axisz.glade:364 +#: src/emc/usr_intf/stepconf/axisa.glade:378 +msgid "Home Sear_ch velocity:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1682 -#: src/emc/usr_intf/stepconf/stepconf.glade:3589 -#: src/emc/usr_intf/pncconf/pncconf.glade:66138 -#: src/emc/usr_intf/pncconf/pncconf.glade:66424 -msgid "mm / rev" +#: src/emc/usr_intf/stepconf/axisx.glade:390 +#: src/emc/usr_intf/stepconf/axisy.glade:379 +#: src/emc/usr_intf/stepconf/axisz.glade:379 +#: src/emc/usr_intf/stepconf/axisa.glade:393 +msgid "Home La_tch direction:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1683 -#: src/emc/usr_intf/stepconf/stepconf.py:2219 -#: src/emc/usr_intf/stepconf/stepconf.glade:3604 -#: src/emc/usr_intf/pncconf/pncconf.glade:57828 -msgid "mm / s" +#: src/emc/usr_intf/stepconf/axisx.glade:404 +#: src/emc/usr_intf/stepconf/axisy.glade:393 +#: src/emc/usr_intf/stepconf/axisz.glade:393 +#: src/emc/usr_intf/stepconf/axisa.glade:407 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "_:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1684 -#: src/emc/usr_intf/stepconf/stepconf.py:2220 -#: src/emc/usr_intf/stepconf/stepconf.glade:3619 -#: src/emc/usr_intf/pncconf/pncconf.glade:57813 -msgid "mm / s²" +#: src/emc/usr_intf/stepconf/axisx.glade:498 +#: src/emc/usr_intf/stepconf/axisy.glade:486 +#: src/emc/usr_intf/stepconf/axisz.glade:486 +#: src/emc/usr_intf/stepconf/axisa.glade:500 +msgid "Tab_le travel:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1686 -#: src/emc/usr_intf/stepconf/stepconf.glade:3075 -#: src/emc/usr_intf/pncconf/pncconf.glade:66888 -msgid "Steps / mm" +#: src/emc/usr_intf/stepconf/axisx.glade:531 +#: src/emc/usr_intf/stepconf/axisy.glade:518 +#: src/emc/usr_intf/stepconf/axisz.glade:518 +#: src/emc/usr_intf/stepconf/axisa.glade:532 +msgid "t_o" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1688 -msgid "rev / in" +#: src/emc/usr_intf/stepconf/axisx.glade:677 +#: src/emc/usr_intf/stepconf/axisy.glade:663 +#: src/emc/usr_intf/stepconf/axisz.glade:663 +#: src/emc/usr_intf/stepconf/axisa.glade:677 +msgid "s" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1689 -#: src/emc/usr_intf/stepconf/stepconf.py:2233 -msgid "in / s" +#: src/emc/usr_intf/stepconf/axisx.glade:738 +#: src/emc/usr_intf/stepconf/axisy.glade:724 +#: src/emc/usr_intf/stepconf/axisz.glade:724 +#: src/emc/usr_intf/stepconf/axisa.glade:738 +msgid "T_est this axis" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1690 -#: src/emc/usr_intf/stepconf/stepconf.py:2234 -msgid "in / s²" -msgstr "" +#: src/emc/usr_intf/stepconf/axisx.glade:765 +#: src/emc/usr_intf/stepconf/axisy.glade:751 +#: src/emc/usr_intf/stepconf/axisz.glade:751 +#: src/emc/usr_intf/stepconf/axisa.glade:765 +#, fuzzy +msgid "Axis SCALE:" +msgstr "Rýchlosť osi:" -#: src/emc/usr_intf/stepconf/stepconf.py:1692 -msgid "Steps / in" +#: src/emc/usr_intf/stepconf/axisx.glade:833 +#: src/emc/usr_intf/stepconf/axisy.glade:819 +#: src/emc/usr_intf/stepconf/axisz.glade:819 +#: src/emc/usr_intf/stepconf/axisa.glade:12 +msgid "Same" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:2202 -#: src/emc/usr_intf/pncconf/pncconf.py:8893 -#, fuzzy, python-format -msgid "%s Axis Test" -msgstr "Doplnok osi" - -#: src/emc/usr_intf/stepconf/stepconf.glade:8 -#: src/emc/usr_intf/stepconf/stepconf.glade:21 +#: src/emc/usr_intf/stepconf/axisx.glade:836 +#: src/emc/usr_intf/stepconf/axisy.glade:822 +#: src/emc/usr_intf/stepconf/axisz.glade:822 +#: src/emc/usr_intf/stepconf/axisa.glade:15 #, fuzzy -msgid "LinuxCNC Stepper Mill Configuration" -msgstr "Príklady konfigurácií" +msgid "Opposite" +msgstr "Typ polohy" -#: src/emc/usr_intf/stepconf/stepconf.glade:22 +#: src/emc/usr_intf/stepconf/finished.glade:6 msgid "" -"This program creates configuration files (.ini and .hal) for \"step and " -"direction\" milling machines and lathes connected to the PC parallel port.\n" +"All the necessary information has now been gathered. \n" +"Click \"Done\" to write your configuration files to disk.\n" +"\n" +"If you experience lockups while running LinuxCNC:\n" +"-you will need to decrease the maximum velocity which will have the effect " +"of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC:\n" +"-first verify that you entered the proper timings for your stepper " +"drivers. \n" +"-then run a more thorough latency test as described on the linuxcnc.org " +"wiki.\n" +" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" "\n" -"Stepconf requires a minimum 800 X 600 display resolution.\n" -"You may need to collapse the 'Driver Timing Settings' and \n" -"Parallel Port Settings' expanders." +"If you experience the \"Unexpected Realtime Delay\" message:\n" +"-run a more thorough latency test as described on the linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:51 -#, fuzzy -msgid "Create a _new configuration" -msgstr "Príklady konfigurácií" - -#: src/emc/usr_intf/stepconf/stepconf.glade:69 -#: src/emc/usr_intf/pncconf/pncconf.glade:70 -msgid "Modify a configuration already created with this program" +#: src/emc/usr_intf/pncconf/pncconf.py:81 +msgid "" +"PNCconf encountered an error. The following information may be useful in " +"troubleshooting:\n" +"\n" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:87 -#: src/emc/usr_intf/pncconf/pncconf.glade:88 -msgid "Do you wish to:" +#: src/emc/usr_intf/pncconf/pncconf.py:149 +msgid "Keling 4030" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:99 -#: src/emc/usr_intf/pncconf/pncconf.glade:100 -msgid "" -"If you have made modifications to this configuration outside this program, " -"they will be lost when you select \"Modify a configuration\"" +#: src/emc/usr_intf/pncconf/pncconf.py:151 +msgid "Not Used" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:116 -msgid "Create a desktop _shortcut (symlink) to configuration files." +#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:176 +msgid "Dummy" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:133 -msgid "Create a desktop _launcher to start LinuxCNC with this configuration." +#: src/emc/usr_intf/pncconf/pncconf.py:152 +msgid "8i20 Servo Drive" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:169 -#: src/emc/usr_intf/pncconf/pncconf.glade:175 -#, fuzzy -msgid "Basic machine information" -msgstr "Informácie o verzii" - -#: src/emc/usr_intf/stepconf/stepconf.glade:327 -msgid "Step _Time:" +#: src/emc/usr_intf/pncconf/pncconf.py:153 +msgid "POT Output" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:356 -#: src/emc/usr_intf/stepconf/stepconf.glade:402 -#: src/emc/usr_intf/stepconf/stepconf.glade:449 -#: src/emc/usr_intf/stepconf/stepconf.glade:494 -#: src/emc/usr_intf/stepconf/stepconf.glade:909 -#: src/emc/usr_intf/pncconf/pncconf.glade:458 -#: src/emc/usr_intf/pncconf/pncconf.glade:8256 -msgid "ns" +#: src/emc/usr_intf/pncconf/pncconf.py:153 +msgid "POT Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:369 +#: src/emc/usr_intf/pncconf/pncconf.py:153 #, fuzzy -msgid "Step _Space:" -msgstr "Jedna medzera" +msgid "POT Direction" +msgstr "Vytlačiť nastavenia" -#: src/emc/usr_intf/stepconf/stepconf.glade:417 -msgid "Direction _Hold:" +#: src/emc/usr_intf/pncconf/pncconf.py:154 +msgid "GPIO Input" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:464 -#, fuzzy -msgid "_Direction Setup:" -msgstr "Vytlačiť nastavenia" +#: src/emc/usr_intf/pncconf/pncconf.py:154 +msgid "GPIO Output" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:512 -msgid "Driver Timing Settings" +#: src/emc/usr_intf/pncconf/pncconf.py:154 +msgid "GPIO O Drain" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:538 -msgid "First Parport _Base Address:" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-A" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:564 -msgid " Out" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-B" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:575 -#: src/emc/usr_intf/stepconf/stepconf.glade:591 -msgid "" -"Out\n" -"In" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-I" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:633 -msgid "S_econd Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-M" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:650 -msgid "T_hird Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "Muxed Encoder 0" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:667 -#, fuzzy -msgid " Parallel Port Settings" -msgstr "Vytlačiť nastavenia" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "Muxed Encoder 1" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:684 -msgid "" -"_Test Base\n" -"Period Jitter " +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "muxed enc" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:703 -#, fuzzy -msgid "Machine _Name:" -msgstr "Stroj zapnutý" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "mux enc mask" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:716 -#, fuzzy -msgid "_Axis configuration:" -msgstr "Nastavenie HAL" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "mux select" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:730 -#, fuzzy -msgid "Machine _units:" -msgstr "Stroj zapnutý" +#: src/emc/usr_intf/pncconf/pncconf.py:157 +msgid "Resolver 0 Encoder" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:744 -#: src/emc/usr_intf/pncconf/pncconf.glade:246 -#, fuzzy -msgid "Configuration directory:" -msgstr "EMC2 Pomocník nastavenia" +#: src/emc/usr_intf/pncconf/pncconf.py:157 +msgid "Resolver 1 Encoder" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:757 -msgid "D_river type:" +#: src/emc/usr_intf/pncconf/pncconf.py:157 +msgid "Resolver 2 Encoder" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:785 -#: src/emc/usr_intf/pncconf/pncconf.glade:326 -msgid "" -"Inch\n" -"Millimeter" +#: src/emc/usr_intf/pncconf/pncconf.py:158 +msgid "Resolver 3 Encoder" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:800 -#: src/emc/usr_intf/pncconf/pncconf.glade:291 -msgid "" -"XYZ\n" -"XYZA\n" -"XZ (Lathe)" +#: src/emc/usr_intf/pncconf/pncconf.py:158 +msgid "Resolver 4 Encoder" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:847 -msgid "" -"Driver characteristics: (Multiply by 1000 for times specified in µs or " -"microseconds)\n" -" Additional signal conditioning or isolation such as optocouplers " -"and RC filters\n" -" can impose timing constraints of their own, in addition to those of " -"the driver." +#: src/emc/usr_intf/pncconf/pncconf.py:158 +msgid "Resolver 5 Encoder" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:875 -msgid "Base Period Maximum _Jitter:" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +#, fuzzy +msgid "Step Gen-A" +msgstr "Jedna medzera" + +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Dir Gen-B" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:924 -msgid "Max step rate:" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Step/Dir Gen-C" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:940 -msgid "Min Base Period:" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Step/Dir Gen-D" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:956 -msgid "" -"_Onscreen prompt for\n" -"tool change" +#: src/emc/usr_intf/pncconf/pncconf.py:160 +msgid "Step/Dir Gen-E" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1015 -#, fuzzy -msgid "Advanced Configuration Options" -msgstr "Príklady konfigurácií" +#: src/emc/usr_intf/pncconf/pncconf.py:160 +msgid "Step/dir Gen-F" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1033 -msgid "Include Halui user interface component" +#: src/emc/usr_intf/pncconf/pncconf.py:161 +msgid "Pulse Width Gen-P" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1074 -#: src/emc/usr_intf/pncconf/pncconf.glade:6745 -#, fuzzy -msgid "Blank program" -msgstr "Program" +#: src/emc/usr_intf/pncconf/pncconf.py:161 +msgid "Pulse Width Gen-D" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1089 -#: src/emc/usr_intf/pncconf/pncconf.glade:6760 -#, fuzzy -msgid "Spindle speed display " -msgstr "Zmena rýchlosti vretena:" +#: src/emc/usr_intf/pncconf/pncconf.py:161 +msgid "Pulse Width Gen-E" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1105 -#: src/emc/usr_intf/stepconf/stepconf.glade:1543 -#: src/emc/usr_intf/pncconf/pncconf.glade:6791 -#: src/emc/usr_intf/pncconf/pncconf.glade:7112 -#: src/emc/usr_intf/pncconf/pncconf.glade:59393 -msgid "Existing custom program" +#: src/emc/usr_intf/pncconf/pncconf.py:162 +msgid "Pulse Density Gen-P" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1120 -#: src/emc/usr_intf/stepconf/stepconf.glade:1559 -#: src/emc/usr_intf/pncconf/pncconf.glade:6806 -#: src/emc/usr_intf/pncconf/pncconf.glade:59409 -msgid "Include connections to HAL" +#: src/emc/usr_intf/pncconf/pncconf.py:162 +msgid "Pulse Density Gen-D" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1154 -#: src/emc/usr_intf/pncconf/pncconf.glade:6989 -#: src/emc/usr_intf/pncconf/pncconf.glade:7537 -msgid "" -"_Display\n" -"sample\n" -"panel" +#: src/emc/usr_intf/pncconf/pncconf.py:162 +msgid "Pulse Density Gen-E" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1188 -#: src/emc/usr_intf/pncconf/pncconf.glade:7048 -msgid "Include custom PyVCP GUI panel" +#: src/emc/usr_intf/pncconf/pncconf.py:163 +msgid "Up/Down Mode -Up" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1321 -#: src/emc/usr_intf/pncconf/pncconf.glade:59199 -msgid " Number of analog (float) out pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:163 +msgid "Up/Down Mode-Down" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1335 -#: src/emc/usr_intf/pncconf/pncconf.glade:59184 -msgid " Number of analog (float) in pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:163 +msgid "Up/Down Mode-Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1349 -#: src/emc/usr_intf/pncconf/pncconf.glade:59169 -msgid " Number of analog (s32) out pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:164 +msgid "Motor Phase A" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1363 -#: src/emc/usr_intf/pncconf/pncconf.glade:59153 -msgid " Number of analog (s32) in pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:164 +msgid "Motor Phase B" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1378 -msgid "Number of digital out pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:164 +msgid "Motor Phase C" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1403 -msgid "Number of digital in pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Phase A Not" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1414 -msgid "setup number of external pins" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Phase B Not" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1429 -#: src/emc/usr_intf/pncconf/pncconf.glade:59213 -msgid "Include modbus master support" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Phase C Not" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1500 -#: src/emc/usr_intf/pncconf/pncconf.glade:59333 -msgid "Blank ladder program" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1513 -#: src/emc/usr_intf/pncconf/pncconf.glade:59346 -msgid "Estop ladder program" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Fault" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1527 -#: src/emc/usr_intf/pncconf/pncconf.glade:59377 -msgid "Serial modbus program" +#: src/emc/usr_intf/pncconf/pncconf.py:168 +msgid "SMARTSERIAL-P0-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1592 -#: src/emc/usr_intf/pncconf/pncconf.glade:59443 -msgid "" -"Edit ladder\n" -"program" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P0-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1628 -#: src/emc/usr_intf/pncconf/pncconf.glade:59479 -msgid "Include _Classicladder PLC" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P0-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1653 -#, fuzzy -msgid "Parallel Port Setup" -msgstr "Vytlačiť nastavenia" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-TX" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1760 -#: src/emc/usr_intf/pncconf/pncconf.glade:54010 -msgid "Pin _1:" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1774 -#: src/emc/usr_intf/pncconf/pncconf.glade:54024 -#: src/emc/usr_intf/pncconf/pncconf.glade:55239 -msgid "Pin _2:" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1788 -#: src/emc/usr_intf/pncconf/pncconf.glade:54038 -#: src/emc/usr_intf/pncconf/pncconf.glade:55256 -msgid "Pin _3:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1802 -#: src/emc/usr_intf/pncconf/pncconf.glade:54052 -#: src/emc/usr_intf/pncconf/pncconf.glade:55273 -msgid "Pin _4:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1816 -#: src/emc/usr_intf/pncconf/pncconf.glade:54066 -#: src/emc/usr_intf/pncconf/pncconf.glade:55290 -msgid "Pin _5:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1830 -#: src/emc/usr_intf/pncconf/pncconf.glade:54080 -#: src/emc/usr_intf/pncconf/pncconf.glade:55307 -msgid "Pin _6:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1844 -#: src/emc/usr_intf/pncconf/pncconf.glade:54094 -#: src/emc/usr_intf/pncconf/pncconf.glade:55324 -msgid "Pin _7:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1858 -#: src/emc/usr_intf/pncconf/pncconf.glade:54108 -#: src/emc/usr_intf/pncconf/pncconf.glade:55341 -msgid "Pin _8:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1872 -#: src/emc/usr_intf/pncconf/pncconf.glade:54122 -#: src/emc/usr_intf/pncconf/pncconf.glade:55358 -msgid "Pin _9:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1886 -#: src/emc/usr_intf/pncconf/pncconf.glade:54136 -msgid "_Pin 14:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1900 -#: src/emc/usr_intf/pncconf/pncconf.glade:54150 -msgid "P_in 16:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1914 -#: src/emc/usr_intf/pncconf/pncconf.glade:54164 -msgid "Pi_n 17:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2258 -msgid "Outputs (PC to Mill):" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2270 -#: src/emc/usr_intf/pncconf/pncconf.glade:55222 -msgid "Pin 1_0:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2286 -#: src/emc/usr_intf/pncconf/pncconf.glade:55206 -msgid "Pin 1_1:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2302 -#: src/emc/usr_intf/pncconf/pncconf.glade:55190 -msgid "Pin 1_2:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2318 -#: src/emc/usr_intf/pncconf/pncconf.glade:55174 -msgid "Pin 1_3:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2334 -#: src/emc/usr_intf/pncconf/pncconf.glade:55158 -msgid "Pin 1_5:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2399 -msgid "Inputs (Mill to PC):" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2425 -#: src/emc/usr_intf/stepconf/stepconf.glade:2438 -#: src/emc/usr_intf/pncconf/pncconf.glade:54578 -#: src/emc/usr_intf/pncconf/pncconf.glade:54591 -msgid "Invert" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2887 -msgid "_Sherline Outputs" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS0)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2905 -msgid "_Xylotex Outputs" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS2)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2923 -msgid "Output pinout presets:" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS3)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3022 -#: src/emc/usr_intf/pncconf/pncconf.glade:57970 -#, fuzzy -msgid "X Axis Configuration" -msgstr "Nastavenie HAL" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 I/O (SS0)" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3090 -msgid "_Motor steps per revolution:" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 Analog (SS1)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3103 -msgid "_Driver Microstepping:" +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 I/O (SS3)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3118 -msgid "_Pulley teeth (Motor:Leadscrew):" +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 Analog (SS4)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3133 +#: src/emc/usr_intf/pncconf/pncconf.py:176 #, fuzzy -msgid "_Leadscrew Pitch:" -msgstr "Nahradiť týmto:" +msgid "Analog Input" +msgstr "Manuál" -#: src/emc/usr_intf/stepconf/stepconf.glade:3148 -#: src/emc/usr_intf/pncconf/pncconf.glade:57858 -msgid "Maximum _Velocity:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:277 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +#, fuzzy +msgid "Axis Selection" +msgstr "Nastavenie HAL" -#: src/emc/usr_intf/stepconf/stepconf.glade:3163 -#: src/emc/usr_intf/pncconf/pncconf.glade:57843 -msgid "Maximum _Acceleration:" +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "" +"7i64-Input\n" +"P3 and P4" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3178 -#: src/emc/usr_intf/pncconf/pncconf.glade:67063 -msgid "Time to accelerate to max speed:" +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "" +"7i64-Output\n" +"P2 and P5" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3193 -msgid "Distance to accelerate to max speed:" +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "7i64-Analog In" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3292 -#: src/emc/usr_intf/pncconf/pncconf.glade:67036 -msgid "Pulse rate at max speed:" +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3362 -msgid "_Home location:" +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3377 -msgid "Home _Switch location:" +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3392 -msgid "Home Sear_ch velocity:" +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3407 -msgid "Home La_tch direction:" +#: src/emc/usr_intf/pncconf/pncconf.py:309 +msgid "" +"7i71-Output\n" +"TB3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3420 -#: src/emc/usr_intf/pncconf/pncconf.glade:66232 -#: src/emc/usr_intf/pncconf/pncconf.glade:66274 -#: src/emc/usr_intf/pncconf/pncconf.glade:66505 -#: src/emc/usr_intf/pncconf/pncconf.glade:66570 -msgid "_:" +#: src/emc/usr_intf/pncconf/pncconf.py:309 +msgid "" +"7i71-Output\n" +"TB2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3437 -#: src/emc/usr_intf/pncconf/pncconf.glade:58536 +#: src/emc/usr_intf/pncconf/pncconf.py:317 msgid "" -"Same\n" -"Opposite" +"7i76-I/O\n" +"TB6" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3492 -msgid "Tab_le travel:" +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-I/O\n" +"TB5" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3519 -msgid "t_o" +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-Analog Output\n" +"TB4" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3649 -msgid "s" +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB8" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3703 -msgid "T_est this axis" +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB7" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3729 -#, fuzzy -msgid "Axis SCALE:" -msgstr "Rýchlosť osi:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3765 -#, fuzzy -msgid "Spindle Configuration" -msgstr "Príklady konfigurácií" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3785 -#, fuzzy -msgid "Use spindle-at-speed:" -msgstr "Nastaviť zmenu rýchlosti vretena:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3841 -msgid "Speed display filter gain:" +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-Analog Output\n" +"TB5" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3870 -#, fuzzy -msgid "Calibration:" -msgstr "Kalibrácia..." - -#: src/emc/usr_intf/stepconf/stepconf.glade:3883 -#, fuzzy -msgid "_Speed 1:" -msgstr "Rýchlosť:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3898 -msgid "_PWM 1:" +#: src/emc/usr_intf/pncconf/pncconf.py:333 +msgid "7i73-I/O\n" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3916 +#: src/emc/usr_intf/pncconf/pncconf.py:348 #, fuzzy -msgid "S_peed 2:" -msgstr "Rýchlosť:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3931 -msgid "P_WM 2:" -msgstr "" +msgid "Unused Unused" +msgstr "Späť" -#: src/emc/usr_intf/stepconf/stepconf.glade:3949 -msgid "PWM _Rate:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +#, fuzzy +msgid "Machine Is Enabled" +msgstr "Stroj zapnutý" -#: src/emc/usr_intf/stepconf/stepconf.glade:4025 -msgid "_Cycles per revolution:" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "X Amplifier Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4079 -msgid "Enter 0 Hz for \"PDM\" mode" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "Y Amplifier Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4091 -msgid "Scale %" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "Z Amplifier Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:60002 -#, fuzzy -msgid "Machine configuration complete" -msgstr "Konfigurácia skopírovaná" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4114 -#: src/emc/usr_intf/pncconf/pncconf.glade:60003 -msgid "" -"All the necessary information has now been gathered. Click \"Apply\" to " -"write your configuration files to disk.\n" -"If you experience lockups while running LinuxCNC, you will need to decrease " -"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" -"\n" -"If you experience lost steps while running LinuxCNC, first verify that you " -"entered the proper timings for your stepper drivers. If that does not fix " -"the problem, then run a more thorough latency test as described on the " -"linuxcnc.org wiki:\n" -" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" -"\n" -"If you experience the \"Unexpected Realtime Delay\" message, run a more " -"thorough latency test as described on the linuxcnc.org wiki: \n" -" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" +#: src/emc/usr_intf/pncconf/pncconf.py:371 +msgid "A Amplifier Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4160 -#: src/emc/usr_intf/pncconf/pncconf.glade:60462 -#: src/emc/usr_intf/pncconf/pncconf.glade:61557 -#: src/emc/usr_intf/pncconf/pncconf.glade:62650 -#: src/emc/usr_intf/pncconf/pncconf.glade:63743 -#: src/emc/usr_intf/pncconf/pncconf.glade:64842 -msgid "Acceleration:" +#: src/emc/usr_intf/pncconf/pncconf.py:371 +msgid "Force Pin True" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4174 -#: src/emc/usr_intf/pncconf/pncconf.glade:60231 -#: src/emc/usr_intf/pncconf/pncconf.glade:60695 -#: src/emc/usr_intf/pncconf/pncconf.glade:61788 -#: src/emc/usr_intf/pncconf/pncconf.glade:62881 -#: src/emc/usr_intf/pncconf/pncconf.glade:63974 -#: src/emc/usr_intf/pncconf/pncconf.glade:64954 -msgid "Jog:" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X HALL 1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4188 -#: src/emc/usr_intf/pncconf/pncconf.glade:60681 -#: src/emc/usr_intf/pncconf/pncconf.glade:61774 -#: src/emc/usr_intf/pncconf/pncconf.glade:62867 -#: src/emc/usr_intf/pncconf/pncconf.glade:63960 -msgid "Test Area:" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X HALL 2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4217 -msgid "mm/s^2" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X HALL 3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4253 -#, fuzzy -msgid "mm/s" -msgstr "mm" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4329 -#: src/emc/usr_intf/pncconf/pncconf.glade:60620 -#: src/emc/usr_intf/pncconf/pncconf.glade:61713 -#: src/emc/usr_intf/pncconf/pncconf.glade:62806 -#: src/emc/usr_intf/pncconf/pncconf.glade:63899 -#: src/emc/usr_intf/pncconf/pncconf.glade:65066 -msgid "" -"±\n" -"+\n" -"-\n" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:79 -msgid "" -"PNCconf encountered an error. The following information may be useful in " -"troubleshooting:\n" -"\n" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:149 -msgid "Not Used" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:149 -#: src/emc/usr_intf/pncconf/pncconf.py:150 -msgid "Dummy" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:150 -msgid "8i20 Servo Drive" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:151 -msgid "POT Output" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:151 -msgid "POT Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:151 -#, fuzzy -msgid "POT Direction" -msgstr "Vytlačiť nastavenia" - -#: src/emc/usr_intf/pncconf/pncconf.py:152 -msgid "GPIO Input" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:152 -msgid "GPIO Output" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:152 -msgid "GPIO O Drain" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-A" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-B" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-I" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-M" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "Muxed Encoder 0" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "Muxed Encoder 1" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "muxed enc" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "mux enc mask" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "mux select" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:155 -msgid "Resolver 0 Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:155 -msgid "Resolver 1 Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:155 -msgid "Resolver 2 Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:156 -msgid "Resolver 3 Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:156 -msgid "Resolver 4 Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:156 -msgid "Resolver 5 Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 #, fuzzy -msgid "Step Gen-A" -msgstr "Jedna medzera" +msgid "S HALL 1" +msgstr "Uložiť HAL Ini" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -msgid "Dir Gen-B" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +#, fuzzy +msgid "S HALL 2" +msgstr "Uložiť HAL Ini" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -msgid "Step/Dir Gen-C" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +#, fuzzy +msgid "S HALL 3" +msgstr "Uložiť HAL Ini" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -msgid "Step/Dir Gen-D" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:158 -msgid "Step/Dir Gen-E" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:158 -msgid "Step/dir Gen-F" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 -msgid "Pulse Width Gen-P" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 -msgid "Pulse Width Gen-D" +#: src/emc/usr_intf/pncconf/pncconf.py:378 +msgid "Unused Output" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 -msgid "Pulse Width Gen-E" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:378 +#, fuzzy +msgid "Coolant" +msgstr "Príkaz:" -#: src/emc/usr_intf/pncconf/pncconf.py:160 -msgid "Pulse Density Gen-P" +#: src/emc/usr_intf/pncconf/pncconf.py:379 +msgid "Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 -msgid "Pulse Density Gen-D" +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +msgid "Digital" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 -msgid "Pulse Density Gen-E" +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:410 +msgid "X BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 -msgid "Up/Down Mode -Up" +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 +msgid "Y BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 -msgid "Up/Down Mode-Down" +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 +msgid "Z BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 -msgid "Up/Down Mode-Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 +msgid "A BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 -msgid "Motor Phase A" +#: src/emc/usr_intf/pncconf/pncconf.py:381 +msgid " S BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 -msgid "Motor Phase B" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:381 +#: src/emc/usr_intf/pncconf/pncconf.py:412 +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#: src/emc/usr_intf/pncconf/pncconf.py:516 +#: src/emc/usr_intf/pncconf/pncconf.py:519 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.py:528 +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#: src/emc/usr_intf/pncconf/pncconf.py:568 +#: src/emc/usr_intf/pncconf/pncconf.py:580 +#, fuzzy +msgid "Custom Signals" +msgstr "Vystrihnúť" -#: src/emc/usr_intf/pncconf/pncconf.py:162 -msgid "Motor Phase C" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 +msgid "X Minimum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Phase A Not" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 +msgid "Y Minimum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Phase B Not" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 +msgid "Z Minimum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Phase C Not" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 +msgid "A Minimum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 +msgid "X Maximum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Fault" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 +msgid "Y Maximum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:165 -msgid "SMARTSERIAL-P0-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 +msgid "Z Maximum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P0-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 +msgid "A Maximum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P0-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 +msgid "X Both Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 +msgid "Y Both Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 +msgid "Z Both Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 +msgid "A Both Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:386 +#: src/emc/usr_intf/pncconf/pncconf.py:477 +#, fuzzy +msgid "All Limits" +msgstr "Všetky súbory" + +#: src/emc/usr_intf/pncconf/pncconf.py:387 +#, fuzzy +msgid "X Home" +msgstr "Domov" + +#: src/emc/usr_intf/pncconf/pncconf.py:387 +#, fuzzy +msgid "Y Home" +msgstr "Domov" + +#: src/emc/usr_intf/pncconf/pncconf.py:387 +#, fuzzy +msgid "Z Home" +msgstr "Domov" + +#: src/emc/usr_intf/pncconf/pncconf.py:387 +#, fuzzy +msgid "A Home" +msgstr "Domov" + +#: src/emc/usr_intf/pncconf/pncconf.py:387 +#, fuzzy +msgid "All Home" +msgstr "Domov" + +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 +msgid "X Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 +msgid "Y Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 +msgid "Z Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 +msgid "A Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 +msgid "X Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 +msgid "Y Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 +msgid "Z Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 +msgid "A Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 +msgid "X Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 +msgid "Y Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 +msgid "Z Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 +msgid "A Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:392 +msgid "Joint select A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:392 +msgid "Joint select B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:392 +msgid "Joint select C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:392 +msgid "Joint select D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #1" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #2" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:420 +#: src/emc/usr_intf/pncconf/pncconf.py:393 #, fuzzy -msgid "Unused Unused" -msgstr "Späť" +msgid "Feed Override incr A" +msgstr "Začať posun:" -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/pncconf/pncconf.py:393 #, fuzzy -msgid "Machine Is Enabled" -msgstr "Stroj zapnutý" +msgid "Feed Override incr B" +msgstr "Začať posun:" -#: src/emc/usr_intf/pncconf/pncconf.py:442 -msgid "X Amplifier Enable" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:394 +#, fuzzy +msgid "Feed Override incr C" +msgstr "Začať posun:" -#: src/emc/usr_intf/pncconf/pncconf.py:442 -msgid "Y Amplifier Enable" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:394 +#, fuzzy +msgid "Feed Override incr D" +msgstr "Začať posun:" -#: src/emc/usr_intf/pncconf/pncconf.py:442 -msgid "Z Amplifier Enable" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:394 +#, fuzzy +msgid "Spindle Override incr A" +msgstr "Nastaviť zmenu vretena" -#: src/emc/usr_intf/pncconf/pncconf.py:443 -msgid "A Amplifier Enable" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:394 +#, fuzzy +msgid "Spindle Override incr B" +msgstr "Nastaviť zmenu vretena" -#: src/emc/usr_intf/pncconf/pncconf.py:443 -msgid "Force Pin True" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:395 +#, fuzzy +msgid "Spindle Override incr C" +msgstr "Nastaviť zmenu vretena" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X HALL 1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:395 +#, fuzzy +msgid "Spindle Override incr D" +msgstr "Nastaviť zmenu vretena" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:395 +msgid "Max Vel Override incr A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:395 +msgid "Max Vel Override incr B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:396 +msgid "Max Vel Override incr C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:396 +msgid "Max Vel Override incr D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C4" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:396 +#, fuzzy +msgid "Feed Override enable" +msgstr "Začať posun:" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C8" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:396 +#, fuzzy +msgid "Spindle Override enable" +msgstr "Nastaviť zmenu vretena" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y HALL 1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:397 +#, fuzzy +msgid "Max Vel Override enable" +msgstr "Začať posun:" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y HALL 2" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +#, fuzzy +msgid "Manual Spindle CW" +msgstr "Vreteno vypni" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y HALL 3" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +#, fuzzy +msgid "Manual Spindle CCW" +msgstr "Vreteno vypni" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +#, fuzzy +msgid "Manual Spindle Stop" +msgstr "Vreteno Pomalšie" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C2" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +#, fuzzy +msgid "Spindle Up-To-Speed" +msgstr "Zmena rýchlosti vretena:" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:399 +msgid "Cycle Start" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:399 +msgid "Abort" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z HALL 1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:399 +#, fuzzy +msgid "Single Step" +msgstr "Jedna medzera" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 +#, fuzzy +msgid "Jog X +" +msgstr "X +" + +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 +#, fuzzy +msgid "Jog X -" +msgstr "X -" + +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 +msgid "Jog Y +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 +msgid "Jog Y -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 +msgid "Jog Z +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 +msgid "Jog Z -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 +msgid "Jog A +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 +msgid "Jog A -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:407 +msgid "Jog button selected +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:407 +msgid "Jog button selected -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Unused Input" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:408 +#, fuzzy +msgid "Limits" +msgstr "Všetky súbory" + +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Limts/Home Shared" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:409 +#, fuzzy +msgid "Overrides" +msgstr "Zmeniť limity" + +#: src/emc/usr_intf/pncconf/pncconf.py:410 +msgid "Operation" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:410 +#, fuzzy +msgid "External Control" +msgstr "Manuál" + +#: src/emc/usr_intf/pncconf/pncconf.py:410 +#, fuzzy +msgid "Axis rapid" +msgstr "Os" + +#: src/emc/usr_intf/pncconf/pncconf.py:412 +msgid "S BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:487 +msgid "Unused PWM Gen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:487 #, fuzzy -msgid "S HALL 1" -msgstr "Uložiť HAL Ini" +msgid "X Axis PWM" +msgstr "Os" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:487 #, fuzzy -msgid "S HALL 2" -msgstr "Uložiť HAL Ini" +msgid "Y Axis PWM" +msgstr "Os" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:488 #, fuzzy -msgid "S HALL 3" -msgstr "Uložiť HAL Ini" +msgid "Z Axis PWM" +msgstr "Os" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#, fuzzy +msgid "A Axis PWM" +msgstr "Os" + +#: src/emc/usr_intf/pncconf/pncconf.py:512 +msgid "X Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +msgid "Y Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +msgid "Z Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +msgid "A Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:450 -msgid "Unused Output" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +#, fuzzy +msgid "Spindle Encoder" +msgstr "Vreteno dozadu" + +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "X Hand Wheel" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "Y Hand Wheel" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "Z Hand Wheel" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "A Hand Wheel" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "Multi Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:450 -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#: src/emc/usr_intf/pncconf/pncconf.py:593 +#: src/emc/usr_intf/pncconf/pncconf.py:514 #, fuzzy -msgid "Spindle" -msgstr "Vreteno vypni" +msgid "Feed Override" +msgstr "Začať posun:" -#: src/emc/usr_intf/pncconf/pncconf.py:450 +#: src/emc/usr_intf/pncconf/pncconf.py:514 #, fuzzy -msgid "Coolant" -msgstr "Príkaz:" +msgid "spindle Override" +msgstr "Nastaviť zmenu vretena" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -msgid "Control" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:514 +#, fuzzy +msgid "Max Vel Override" +msgstr "Začať posun:" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:480 -msgid "Digital" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "Unused Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:481 -msgid "X BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "Axis Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 -msgid "Y BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "MPG Jog Controls" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 -msgid "Z BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "Override MPG control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 -msgid "A BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "Unused Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:453 -msgid " S BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "X Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:453 -#: src/emc/usr_intf/pncconf/pncconf.py:483 -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#: src/emc/usr_intf/pncconf/pncconf.py:585 -#: src/emc/usr_intf/pncconf/pncconf.py:588 -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.py:597 -#: src/emc/usr_intf/pncconf/pncconf.py:614 -#: src/emc/usr_intf/pncconf/pncconf.py:629 -#, fuzzy -msgid "Custom Signals" -msgstr "Vystrihnúť" - -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 -msgid "X Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "Y Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 -msgid "Y Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "Z Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 -msgid "Z Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:519 +msgid "A Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 -msgid "A Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:519 +msgid "S Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 -msgid "X Maximum Limit" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#, fuzzy +msgid "Unused 8I20" +msgstr "Späť" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 -msgid "Y Maximum Limit" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "X Axis" +msgstr "Os" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 -msgid "Z Maximum Limit" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Y Axis" +msgstr "Os" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 -msgid "A Maximum Limit" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Z Axis" +msgstr "Os" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 -msgid "X Both Limit" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "A Axis" +msgstr "Os" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 -msgid "Y Both Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:528 +msgid "Unused Analog Output" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 -msgid "Z Both Limit" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:528 +#, fuzzy +msgid "Spindle Output" +msgstr "Vreteno vypni" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 -msgid "A Both Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:551 +msgid "Unused StepGen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:458 -#: src/emc/usr_intf/pncconf/pncconf.py:546 +#: src/emc/usr_intf/pncconf/pncconf.py:551 #, fuzzy -msgid "All Limits" -msgstr "Všetky súbory" +msgid "X Axis StepGen" +msgstr "Os" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:551 #, fuzzy -msgid "X Home" -msgstr "Domov" +msgid "Y Axis StepGen" +msgstr "Os" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:551 #, fuzzy -msgid "Y Home" -msgstr "Domov" +msgid "Z Axis StepGen" +msgstr "Os" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:552 #, fuzzy -msgid "Z Home" -msgstr "Domov" +msgid "A Axis StepGen" +msgstr "Os" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:552 #, fuzzy -msgid "A Home" -msgstr "Domov" +msgid "Spindle StepGen" +msgstr "Vreteno Pomalšie" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:552 #, fuzzy -msgid "All Home" -msgstr "Domov" - -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 -msgid "X Minimum Limit + Home" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 -msgid "Y Minimum Limit + Home" -msgstr "" +msgid "X2 Tandem StepGen" +msgstr "Vreteno Pomalšie" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 -msgid "Z Minimum Limit + Home" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:552 +#, fuzzy +msgid "Y2 Tandem StepGen" +msgstr "Vreteno Pomalšie" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 -msgid "A Minimum Limit + Home" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#, fuzzy +msgid "Z2 Tandem StepGen" +msgstr "Vreteno Pomalšie" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 -msgid "X Maximum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:553 +msgid "Charge Pump StepGen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 -msgid "Y Maximum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:567 +msgid "Unused TPPWM Gen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 -msgid "Z Maximum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:567 +msgid "X Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 -msgid "A Maximum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:567 +msgid "Y Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 -msgid "X Both Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:568 +msgid "Z Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 -msgid "Y Both Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:568 +msgid "A Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 -msgid "Z Both Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:568 +msgid "S Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 -msgid "A Both Limit + Home" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +#: src/emc/usr_intf/pncconf/pncconf.py:6882 +#, fuzzy +msgid "Unused Channel" +msgstr "Späť" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -msgid "Joint select A" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +msgid "8i20 Amplifier Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -msgid "Joint select B" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +msgid "7i64 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -msgid "Joint select C" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +msgid "7i69 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -msgid "Joint select D" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i70 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr A" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i71 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr B" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i76 Mode 0 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr C" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i77 Mode 0 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr D" +#: src/emc/usr_intf/pncconf/pncconf.py:578 +msgid "7i73 Mode 1 Pendant Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -#, fuzzy -msgid "Feed Override incr A" -msgstr "Začať posun:" - -#: src/emc/usr_intf/pncconf/pncconf.py:465 -#, fuzzy -msgid "Feed Override incr B" -msgstr "Začať posun:" - -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#, fuzzy -msgid "Feed Override incr C" -msgstr "Začať posun:" - -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#, fuzzy -msgid "Feed Override incr D" -msgstr "Začať posun:" - -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#, fuzzy -msgid "Spindle Override incr A" -msgstr "Nastaviť zmenu vretena" - -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#, fuzzy -msgid "Spindle Override incr B" -msgstr "Nastaviť zmenu vretena" - -#: src/emc/usr_intf/pncconf/pncconf.py:467 +#: src/emc/usr_intf/pncconf/pncconf.py:580 #, fuzzy -msgid "Spindle Override incr C" -msgstr "Nastaviť zmenu vretena" +msgid "Unused Analog In" +msgstr "Späť" -#: src/emc/usr_intf/pncconf/pncconf.py:467 +#: src/emc/usr_intf/pncconf/pncconf.py:676 #, fuzzy -msgid "Spindle Override incr D" -msgstr "Nastaviť zmenu vretena" +msgid "my_LinuxCNC_machine" +msgstr "Stroj" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -msgid "Max Vel Override incr A" +#: src/emc/usr_intf/pncconf/pncconf.py:939 +#: src/emc/usr_intf/pncconf/pncconf.py:941 +msgid "Enter Address" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -msgid "Max Vel Override incr B" +#: src/emc/usr_intf/pncconf/pncconf.py:1290 +msgid "" +"This configuration was saved with an earlier version of pncconf which may be " +"incompatible.\n" +"If it doesn't plainly cause an error, you still may want to save it with " +"another name and check it. Safer to start from scratch.\n" +"If you have a REALLY large config that you wish to convert to this newer " +"version of PNConf - ask on the LinuxCNC forum - it may be possible.." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:468 -msgid "Max Vel Override incr C" +#: src/emc/usr_intf/pncconf/pncconf.py:1296 +#, python-format +msgid "File %r was modified since it was written by PNCconf" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:468 -msgid "Max Vel Override incr D" +#: src/emc/usr_intf/pncconf/pncconf.py:1300 +msgid "" +"Saving this configuration file will discard configuration changes made " +"outside PNCconf." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#, fuzzy -msgid "Manual Spindle CW" -msgstr "Vreteno vypni" - -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#, fuzzy -msgid "Manual Spindle CCW" -msgstr "Vreteno vypni" - -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#, fuzzy -msgid "Manual Spindle Stop" -msgstr "Vreteno Pomalšie" - -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#, fuzzy -msgid "Spindle Up-To-Speed" -msgstr "Zmena rýchlosti vretena:" - -#: src/emc/usr_intf/pncconf/pncconf.py:470 -msgid "Cycle Start" +#: src/emc/usr_intf/pncconf/pncconf.py:1327 +#: src/emc/usr_intf/pncconf/pncconf.py:2421 +#, python-format +msgid "# Generated by PNCconf at %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:470 -msgid "Abort" +#: src/emc/usr_intf/pncconf/pncconf.py:1329 +#: src/emc/usr_intf/pncconf/pncconf.py:2423 +msgid "# overwritten when you run PNCconf again" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:470 -#, fuzzy -msgid "Single Step" -msgstr "Jedna medzera" - -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 -#, fuzzy -msgid "Jog X +" -msgstr "X +" - -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 -#, fuzzy -msgid "Jog X -" -msgstr "X -" - -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 -msgid "Jog Y +" +#: src/emc/usr_intf/pncconf/pncconf.py:2134 +msgid "# Use ACTUAL spindle velocity from spindle encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 -msgid "Jog Y -" +#: src/emc/usr_intf/pncconf/pncconf.py:2135 +msgid "# spindle-velocity bounces around so we filter it with lowpass" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 -msgid "Jog Z +" +#: src/emc/usr_intf/pncconf/pncconf.py:2136 +msgid "" +"# spindle-velocity is signed so we use absolute component to remove sign" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 -msgid "Jog Z -" +#: src/emc/usr_intf/pncconf/pncconf.py:2137 +msgid "# ACTUAL velocity is in RPS not RPM so we scale it." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 -msgid "Jog A +" +#: src/emc/usr_intf/pncconf/pncconf.py:2821 +msgid "# connect miscellaneous signals" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 -msgid "Jog A -" +#: src/emc/usr_intf/pncconf/pncconf.py:2824 +msgid "# ---HALUI signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:478 -msgid "Jog button selected +" +#: src/emc/usr_intf/pncconf/pncconf.py:2843 +msgid "# ---charge pump signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:478 -msgid "Jog button selected -" +#: src/emc/usr_intf/pncconf/pncconf.py:2847 +msgid "# ---coolant signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:479 -msgid "Unused Input" +#: src/emc/usr_intf/pncconf/pncconf.py:2852 +msgid "# ---probe signal---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:479 -#, fuzzy -msgid "Limits" -msgstr "Všetky súbory" +#: src/emc/usr_intf/pncconf/pncconf.py:2857 +msgid "# ---jog button signals---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:479 -msgid "Limts/Home Shared" +#: src/emc/usr_intf/pncconf/pncconf.py:2862 +msgid "# ---USB device jog button signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#, fuzzy -msgid "Axis Selection" -msgstr "Nastavenie HAL" +#: src/emc/usr_intf/pncconf/pncconf.py:2903 +#: src/emc/usr_intf/pncconf/pncconf.py:2929 +msgid "# ---mpg signals---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#, fuzzy -msgid "Overrides" -msgstr "Zmeniť limity" +#: src/emc/usr_intf/pncconf/pncconf.py:3111 +msgid "# ---motion control signals---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:481 -msgid "Operation" +#: src/emc/usr_intf/pncconf/pncconf.py:3116 +msgid "# ---digital in / out signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:481 -#, fuzzy -msgid "External Control" -msgstr "Manuál" +#: src/emc/usr_intf/pncconf/pncconf.py:3126 +msgid "# ---estop signals---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:481 -#, fuzzy -msgid "Axis rapid" -msgstr "Os" +#: src/emc/usr_intf/pncconf/pncconf.py:3145 +msgid "# ---manual tool change signals---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:483 -msgid "S BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:3154 +msgid "# ---toolchange signals for custom tool changer---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:556 -msgid "Unused PWM Gen" +#: src/emc/usr_intf/pncconf/pncconf.py:3176 +msgid "# --- Classicladder signals for Z axis Auto touch off program---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:556 -#, fuzzy -msgid "X Axis PWM" -msgstr "Os" +#: src/emc/usr_intf/pncconf/pncconf.py:3195 +msgid "# These files are loaded post gladeVCP, in the order they appear" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:556 -#, fuzzy -msgid "Y Axis PWM" -msgstr "Os" +#: src/emc/usr_intf/pncconf/pncconf.py:3209 +#: src/emc/usr_intf/pncconf/pncconf.py:3276 +msgid "# _DO NOT_ include your HAL commands here." +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#, fuzzy -msgid "Z Axis PWM" -msgstr "Os" +#: src/emc/usr_intf/pncconf/pncconf.py:3210 +msgid "# Put custom HAL commands in custom_gvcp.hal" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#, fuzzy -msgid "A Axis PWM" -msgstr "Os" +#: src/emc/usr_intf/pncconf/pncconf.py:3213 +msgid "# **** Setup of spindle speed display using gladevcp ****" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -msgid "X Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:3222 +msgid "# **** Setup GLADE MDI buttons ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -msgid "Y Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:3235 +msgid "" +"# **** Z axis touch-off button - requires the touch-off classicladder " +"program ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -msgid "Z Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:3265 +msgid "# These files are loaded post GUI, in the order they appear" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -msgid "A Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:3277 +msgid "# Put custom HAL commands in custom_postgui.hal" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -#, fuzzy -msgid "Spindle Encoder" -msgstr "Vreteno dozadu" +#: src/emc/usr_intf/pncconf/pncconf.py:3278 +msgid "# The commands in this file are run after the GUI loads" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "X Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:3288 +msgid "# **** Setup of spindle speed display using pyvcp -END ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "Y Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:3300 +msgid "# This file will not be overwritten when you run PNCconf again" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "Z Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:3306 +msgid "# These commands are required for Touchy GUI" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "A Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:3358 +#, python-format +msgid "Generated by PNCconf at %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "Multi Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:3370 +msgid "configures LinuxCNC as:\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:583 -#, fuzzy -msgid "Feed Override" -msgstr "Začať posun:" +#: src/emc/usr_intf/pncconf/pncconf.py:3371 +msgid "type CNC\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:583 -#, fuzzy -msgid "spindle Override" -msgstr "Nastaviť zmenu vretena" +#: src/emc/usr_intf/pncconf/pncconf.py:3372 +msgid "will be used as the frontend display" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:583 -#, fuzzy -msgid "Max Vel Override" -msgstr "Začať posun:" +#: src/emc/usr_intf/pncconf/pncconf.py:3381 +msgid " connector" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "Unused Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:3393 +msgid "invrt" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "Axis Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:3402 +#, python-format +msgid "%(name)s Parport" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "MPG Jog Controls" +#: src/emc/usr_intf/pncconf/pncconf.py:3407 +#: src/emc/usr_intf/pncconf/pncconf.py:3415 +msgid "-> inverted" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "Override MPG control" +#: src/emc/usr_intf/pncconf/pncconf.py:3409 +#, python-format +msgid "pin# %(pinnum)d is connected to input signal:'%(data)s' %(mesag)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "Unused Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:3417 +#, python-format +msgid "pin# %(pinnum)d is connected to output signal:'%(data)s' %(mesag)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "X Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:3595 +msgid "Desktop Launcher for LinuxCNC config made by PNCconf" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "Y Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:3856 +#, fuzzy, python-format +msgid "%s Axis Configuration" +msgstr "Nastavenie HAL" + +#: src/emc/usr_intf/pncconf/pncconf.py:3881 +#, fuzzy +msgid "Spindle Motor/Encoder Configuration" +msgstr "Príklady konfigurácií" + +#: src/emc/usr_intf/pncconf/pncconf.py:3883 +#, python-format +msgid "%s Axis Motor/Encoder Configuration" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "Z Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:3912 +#, python-format +msgid "%s Parallel Port Setup" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:588 -msgid "A Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:3936 +#, python-format +msgid "%s I/0 Setup" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:588 -msgid "S Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:4162 +msgid "Quit PNCconfig and discard changes?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:592 +#: src/emc/usr_intf/pncconf/pncconf.py:4203 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Unused 8I20" -msgstr "Späť" +msgid "Help Pages" +msgstr "Testovať" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:61457 +#: src/emc/usr_intf/pncconf/pncconf.py:4208 #, fuzzy -msgid "X Axis" -msgstr "Os" +msgid "Help page is unavailable\n" +msgstr "Nie sú dostupné žiadne detaily." -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:62549 -#, fuzzy -msgid "Y Axis" -msgstr "Os" +#: src/emc/usr_intf/pncconf/pncconf.py:4218 +msgid "" +"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " +"of external hardware is unavailable." +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:63642 -#, fuzzy -msgid "Z Axis" -msgstr "Os" +#: src/emc/usr_intf/pncconf/pncconf.py:4223 +#, python-format +msgid "" +"You are using a realtime version of LinuxCNC but didn't load a realtime " +"kernel so testing / tuning of external hardware is unavailable.\n" +" This is probably because you updated the OS and it doesn't load the RTAI " +"kernel anymore\n" +" You are using the %(actual)s kernel instead of %(needed)s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.glade:64735 +#: src/emc/usr_intf/pncconf/pncconf.py:4256 #, fuzzy -msgid "A Axis" -msgstr "Os" +msgid "LinuxCNC 'PNCconf' configuration files" +msgstr "EMC2 Pomocník nastavenia" -#: src/emc/usr_intf/pncconf/pncconf.py:597 -msgid "Unused Analog Output" +#: src/emc/usr_intf/pncconf/pncconf.py:4286 +msgid "" +"It seems data in this file is from too old of a version of PNCConf to " +"continue.\n" +"." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:597 -#, fuzzy -msgid "Spindle Output" -msgstr "Vreteno vypni" +#: src/emc/usr_intf/pncconf/pncconf.py:4293 +#: src/emc/usr_intf/pncconf/pncconf.py:4391 +#, fuzzy, python-format +msgid "Point and click configuration - %s.pncconf " +msgstr "Skopírovať konfiguráciu?" -#: src/emc/usr_intf/pncconf/pncconf.py:613 -msgid "Unused StepGen" +#: src/emc/usr_intf/pncconf/pncconf.py:4413 +msgid "" +"You need to designate a parport and/or mesa I/O device before continuing." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:613 -#, fuzzy -msgid "X Axis StepGen" -msgstr "Os" +#: src/emc/usr_intf/pncconf/pncconf.py:4481 +msgid "" +"You Have choosen to re-edit the current config, so you can not go to the new/" +"modify page.\n" +" Quit and reload PNCconf if you wish to build a new config." +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:613 -#, fuzzy -msgid "Y Axis StepGen" -msgstr "Os" +#: src/emc/usr_intf/pncconf/pncconf.py:4485 +msgid "" +"If you can not go to the new/modify page your current data will be lost.\n" +"Ok to reset data and start a new configuration?" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:613 -#, fuzzy -msgid "Z Axis StepGen" -msgstr "Os" +#: src/emc/usr_intf/pncconf/pncconf.py:4811 +msgid "USB device Info Search" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:614 +#: src/emc/usr_intf/pncconf/pncconf.py:4825 #, fuzzy -msgid "A Axis StepGen" -msgstr "Os" +msgid "USB device page is unavailable\n" +msgstr "Nie sú dostupné žiadne detaily." -#: src/emc/usr_intf/pncconf/pncconf.py:614 -#, fuzzy -msgid "Spindle StepGen" -msgstr "Vreteno Pomalšie" +#: src/emc/usr_intf/pncconf/pncconf.py:4890 +msgid "Pin names are unavailable\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:628 -msgid "Unused TPPWM Gen" +#: src/emc/usr_intf/pncconf/pncconf.py:4912 +msgid "Device names are unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:628 -msgid "X Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:4915 +msgid "No Pncconf made device rules were found\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:628 -msgid "Y Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:5041 +msgid "" +"OK to replace existing glade panel ?\n" +"It will be renamed and added to 'backups' folder.\n" +" Clicking 'existing custom program' will avoid this warning, but if you " +"change related options later -such as spindle feedback- the HAL connection " +"will not update" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "Z Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:5047 +msgid "" +"OK to replace existing custom pyvcp panel?\n" +"Existing pyvcp-panel.xml will be renamed and added to 'backups' folder\n" +"Clicking 'existing custom program' will aviod this warning. " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "A Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:5493 +msgid "" +"You need to configure the mesa0 page.\n" +" Choose the board type, firmware, component amounts and press 'Accept " +"component changes' button'" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:5497 +msgid "" +"The chosen Mesa0 board is different from the current displayed.\n" +"please press 'Accept component changes' button'" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:5540 +msgid "" +"You need to configure the mesa1 page.\n" +" Choose the board type, firmware, component amounts and press 'Accept " +"component changes' button'" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:5544 +msgid "" +"The chosen Mesa1 board is different from the current displayed.\n" +"please press 'Accept component changes' button'" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:5558 +msgid "" +"Do to technical reasons this test panel can be loaded only once without " +"reloading pncconf.You also will not be able to do any other testing untill " +"you reload pncconf and quite possibly open a terminal and type 'halrun -U' I " +"hesitate to even allow it's use but at times it's very useful.\n" +"Do you wish to continue the test?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "S Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:7042 +msgid "First Parallel Port set for OUTPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -#: src/emc/usr_intf/pncconf/pncconf.py:6557 -#, fuzzy -msgid "Unused Channel" -msgstr "Späť" - -#: src/emc/usr_intf/pncconf/pncconf.py:636 -msgid "8i20 Amplifier Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7044 +msgid "First Parallel Port set for INPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -msgid "7i64 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7068 +msgid "Second Parallel Port set for OUTPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -msgid "7i69 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7070 +msgid "Second Parallel Port set for INPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 -msgid "7i70 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7082 +msgid "Third Parallel Port set for OUTPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 -msgid "7i71 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7084 +msgid "Third Parallel Port set for INPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 -msgid "7i76 Mode 0 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7210 +msgid "You can not have both steppers and pwm signals for spindle control\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:722 -#, fuzzy -msgid "my_LinuxCNC_machine" -msgstr "Stroj" +#: src/emc/usr_intf/pncconf/pncconf.py:7214 +#, python-format +msgid "You forgot to designate a stepper or pwm signal for axis %s\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1328 -msgid "" -"This configuration was saved with an earlier version of pncconf which may be " -"incompatible.\n" -"If it doesn't plainly cause an error, you still may want to save it with " -"another name and check it. Safer to start from scratch.\n" -"If you have a REALLY large config that you wish to convert to this newer " -"version of PNConf - ask on the LinuxCNC forum - it may be possible.." +#: src/emc/usr_intf/pncconf/pncconf.py:7217 +#, python-format +msgid "You forgot to designate an encoder /resolver signal for axis %s servo\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1334 +#: src/emc/usr_intf/pncconf/pncconf.py:7220 #, python-format -msgid "File %r was modified since it was written by PNCconf" +msgid "You forgot to designate a pwm signal or stepper signal for axis %s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1338 -msgid "" -"Saving this configuration file will discard configuration changes made " -"outside PNCconf." +#: src/emc/usr_intf/pncconf/pncconf.py:7223 +#, python-format +msgid "You can not have both steppers and pwm signals for axis %s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1365 -#: src/emc/usr_intf/pncconf/pncconf.py:2368 +#: src/emc/usr_intf/pncconf/pncconf.py:7226 #, python-format -msgid "# Generated by PNCconf at %s" +msgid "" +"If using a tandem axis stepper, you must select a master stepgen for axis " +"%s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1367 -#: src/emc/usr_intf/pncconf/pncconf.py:2370 -msgid "# overwritten when you run PNCconf again" +#: src/emc/usr_intf/pncconf/pncconf.py:7235 +msgid "Touchy require an external cycle start signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2070 -msgid "# Use ACTUAL spindle velocity from spindle encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:7238 +msgid "Touchy require an external abort signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2071 -msgid "# spindle-velocity bounces around so we filter it with lowpass" +#: src/emc/usr_intf/pncconf/pncconf.py:7241 +msgid "Touchy require an external single-step signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2072 +#: src/emc/usr_intf/pncconf/pncconf.py:7244 msgid "" -"# spindle-velocity is signed so we use absolute component to remove sign" +"Touchy require an external multi handwheel MPG encoder signal on the mesa " +"page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2073 -msgid "# ACTUAL velocity is in RPS not RPM so we scale it." +#: src/emc/usr_intf/pncconf/pncconf.py:7247 +msgid "" +"Touchy require 'external mpg jogging' to be selected on the external control " +"page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2082 +#: src/emc/usr_intf/pncconf/pncconf.py:7250 msgid "" -"# Use COMMANDED spindle velocity from LinuxCNC because no spindle encoder " -"was specified" +"Touchy require the external mpg to be in 'shared mpg' mode on the external " +"controls page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2083 +#: src/emc/usr_intf/pncconf/pncconf.py:7253 msgid "" -"# COMMANDED velocity is signed so we use absolute component to remove sign" +"Touchy require selectable increments to be unchecked on the external " +"controls page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2727 -msgid "# connect miscellaneous signals" +#: src/emc/usr_intf/pncconf/pncconf.py:7257 +msgid "" +"The 7i29 daughter board requires PWM type generators and a PWM base " +"frequency of 20 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2730 -msgid "# ---HALUI signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7260 +msgid "" +"The 7i30 daughter board requires PWM type generators and a PWM base " +"frequency of 20 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2749 -msgid "# ---charge pump signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7263 +msgid "" +"The 7i33 daughter board requires PDM type generators and a PDM base " +"frequency of 6 Mhz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2753 -msgid "# ---coolant signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7266 +msgid "" +"The 7i40 daughter board requires PWM type generators and a PWM base " +"frequency of 50 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2758 -msgid "# ---probe signal---" +#: src/emc/usr_intf/pncconf/pncconf.py:7269 +msgid "" +"The 7i48 daughter board requires UDM type generators and a PWM base " +"frequency of 24 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2763 -msgid "# ---jog button signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7494 +msgid "Gearbox Reduction Ratio" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2768 -msgid "# ---USB device jog button signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7497 +msgid "Reduction Ratio" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2803 -#: src/emc/usr_intf/pncconf/pncconf.py:2825 -msgid "# ---mpg signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7500 +msgid "Leadscrew Pitch" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2971 -msgid "# ---motion control signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7503 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Leadscrew TPI" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2976 -msgid "# ---digital in / out signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7507 +#: src/emc/usr_intf/pncconf/pncconf.py:7508 +msgid "(" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2986 -msgid "# ---estop signals---" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:7509 +#: src/emc/usr_intf/pncconf/pncconf.py:7519 +#: src/emc/usr_intf/pncconf/pncconf.py:7520 +#: src/emc/usr_intf/pncconf/pncconf.py:7521 +#, fuzzy +msgid " / min" +msgstr "inch" -#: src/emc/usr_intf/pncconf/pncconf.py:3005 -msgid "# ---manual tool change signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:7510 +msgid " / sec²" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3014 -msgid "# ---toolchange signals for custom tool changer---" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:7513 +#, fuzzy +msgid " / Step" +msgstr "Krok" -#: src/emc/usr_intf/pncconf/pncconf.py:3036 -msgid "# --- Classicladder signals for Z axis Auto touch off program---" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:7514 +#, fuzzy +msgid "Steps / " +msgstr "Krok" -#: src/emc/usr_intf/pncconf/pncconf.py:3055 -msgid "# These files are loaded post gladeVCP, in the order they appear" +#: src/emc/usr_intf/pncconf/pncconf.py:7516 +msgid " / encoder pulse" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3069 -#: src/emc/usr_intf/pncconf/pncconf.py:3136 -msgid "# _DO NOT_ include your HAL commands here." +#: src/emc/usr_intf/pncconf/pncconf.py:7517 +msgid "Encoder pulses / " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3070 -msgid "# Put custom HAL commands in custom_gvcp.hal" +#: src/emc/usr_intf/pncconf/pncconf.py:7525 +#, fuzzy +msgid "Resolver Scale:" +msgstr "Jedna medzera" + +#: src/emc/usr_intf/pncconf/pncconf.py:7826 +msgid "Axis Scale Calculation" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3073 -msgid "# **** Setup of spindle speed display using gladevcp ****" +#: src/emc/usr_intf/pncconf/pncconf.py:8133 +msgid "You need to designate an E-stop input pin for this ladder program." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3082 -msgid "# **** Setup GLADE MDI buttons ****" +#: src/emc/usr_intf/pncconf/pncconf.py:8145 +msgid "You need to designate a probe input pin for this ladder program." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3095 +#: src/emc/usr_intf/pncconf/pncconf.py:8156 msgid "" -"# **** Z axis touch-off button - requires the touch-off classicladder " -"program ****" +"OK to replace existing custom ladder program?\n" +"Existing Custom.clp will be renamed custom_backup.clp.\n" +"Any existing file named -custom_backup.clp- will be lost.Selecting 'existing " +"ladder program' will avoid this warning" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3125 -msgid "# These files are loaded post GUI, in the order they appear" +#: src/emc/usr_intf/pncconf/pncconf.py:8374 +msgid "Do you wish to continue to edit this configuration." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3137 -msgid "# Put custom HAL commands in custom_postgui.hal" +#: src/emc/usr_intf/pncconf/pncconf.py:8413 +msgid "PCI search page is unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3138 -msgid "# The commands in this file are run after the GUI loads" +#: src/emc/usr_intf/pncconf/pncconf.py:8532 +msgid "" +"You specified there is an existing gladefile, But there is not one in the " +"machine-named folder.." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3148 -msgid "# **** Setup of spindle speed display using pyvcp -END ****" +#: src/emc/usr_intf/pncconf/pncconf.py:8856 +msgid "Servo tuning is not avaiable in PNCconf yet\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3160 -msgid "# This file will not be overwritten when you run PNCconf again" +#: src/emc/usr_intf/pncconf/pncconf.py:8861 +msgid "degrees" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3166 -msgid "# These commands are required for Touchy GUI" +#: src/emc/usr_intf/pncconf/pncconf.py:8862 +msgid "degrees / minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3218 -#, python-format -msgid "Generated by PNCconf at %s" +#: src/emc/usr_intf/pncconf/pncconf.py:8863 +msgid "degrees / second²" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3230 -msgid "configures LinuxCNC as:\n" +#: src/emc/usr_intf/pncconf/pncconf.py:8865 +msgid "revolutions" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3231 -msgid "type CNC\n" +#: src/emc/usr_intf/pncconf/pncconf.py:8866 +msgid "rpm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3232 -msgid "will be used as the frontend display" +#: src/emc/usr_intf/pncconf/pncconf.py:8867 +msgid "revs / second²" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3241 -msgid " connector" +#: src/emc/usr_intf/pncconf/pncconf.py:8870 +#: src/emc/usr_intf/pncconf/pncconf.glade:65184 +#: src/emc/usr_intf/pncconf/pncconf.glade:65281 +#: src/emc/usr_intf/pncconf/pncconf.glade:65465 +msgid "mm / minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3253 -msgid "invrt" +#: src/emc/usr_intf/pncconf/pncconf.py:8871 +msgid "mm / second²" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3262 -#, python-format -msgid "%(name)s Parport" +#: src/emc/usr_intf/pncconf/pncconf.py:8874 +msgid "inches / minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3267 -#: src/emc/usr_intf/pncconf/pncconf.py:3275 -msgid "-> inverted" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:8875 +#, fuzzy +msgid "inches / second²" +msgstr "inch" -#: src/emc/usr_intf/pncconf/pncconf.py:3269 +#: src/emc/usr_intf/pncconf/pncconf.py:9031 #, python-format -msgid "pin# %(pinnum)d is connected to input signal:'%(data)s' %(mesag)s" +msgid "%s Axis Tune" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3277 -#, python-format -msgid "pin# %(pinnum)d is connected to output signal:'%(data)s' %(mesag)s" +#: src/emc/usr_intf/pncconf/pncconf.py:9195 +msgid "" +" You must designate a ENCODER / RESOLVER signal and an ANALOG SPINDLE signal " +"for this axis test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3455 -msgid "Desktop Launcher for LinuxCNC config made by PNCconf" +#: src/emc/usr_intf/pncconf/pncconf.py:9199 +msgid "" +" You must designate a ENCODER / RESOLVER signal and a PWM signal for this " +"axis test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3725 +#: src/emc/usr_intf/pncconf/pncconf.glade:8 #, fuzzy -msgid "Spindle Motor/Encoder Configuration" -msgstr "Príklady konfigurácií" +msgid "LinuxCNC Point And Click Configuration" +msgstr "Skopírovať konfiguráciu?" -#: src/emc/usr_intf/pncconf/pncconf.py:3727 -#, python-format -msgid "%s Axis Motor/Encoder Configuration" +#: src/emc/usr_intf/pncconf/pncconf.glade:23 +msgid "LinuxCNC Configuration Wizard Beta 1 Version" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3756 -#, python-format -msgid "%s Parallel Port Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:24 +msgid "" +"\tThis program creates configuration \n" +" files for \"Closed Loop Servo\" \n" +"\t \t and hardware stepper\n" +" \tmachines" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3780 -#, python-format -msgid "%s I/0 Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:34 +msgid "Create or Edit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4001 -msgid "Quit PNCconfig and discard changes?" +#: src/emc/usr_intf/pncconf/pncconf.glade:66 +msgid "Create a desktop launcher to start LinuxCNC with this configuration." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4042 -#: src/emc/usr_intf/pncconf/pncconf.glade:65849 -#, fuzzy -msgid "Help Pages" -msgstr "Testovať" +#: src/emc/usr_intf/pncconf/pncconf.glade:83 +msgid "Create a desktop shortcut (symlink) to configuration files." +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4047 +#: src/emc/usr_intf/pncconf/pncconf.glade:148 #, fuzzy -msgid "Help page is unavailable\n" -msgstr "Nie sú dostupné žiadne detaily." - -#: src/emc/usr_intf/pncconf/pncconf.py:4054 -msgid "" -"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " -"of external hardware is unavailable." -msgstr "" +msgid "Create a new configuration" +msgstr "Príklady konfigurácií" -#: src/emc/usr_intf/pncconf/pncconf.py:4059 -#, python-format -msgid "" -"You are using a realtime version of LinuxCNC but didn't load a realtime " -"kernel so testing / tuning of external hardware is unavailable.\n" -" This is probably because you updated the OS and it doesn't load the RTAI " -"kernel anymore\n" -" You are using the %(actual)s kernel instead of %(needed)s" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:175 +#, fuzzy +msgid "Basic machine information" +msgstr "Informácie o verzii" -#: src/emc/usr_intf/pncconf/pncconf.py:4079 -#, python-format -msgid "" -"You are have no hostmot2 firmware downloaded in folder:\n" -"%s\n" -"PNCconf will use sample firmware data\n" -"live testing will not be possible" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:214 +#, fuzzy +msgid "Machine Name:" +msgstr "Stroj zapnutý" -#: src/emc/usr_intf/pncconf/pncconf.py:4093 +#: src/emc/usr_intf/pncconf/pncconf.glade:280 #, fuzzy -msgid "LinuxCNC 'PNCconf' configuration files" -msgstr "EMC2 Pomocník nastavenia" +msgid "Axis configuration:" +msgstr "Nastavenie HAL" -#: src/emc/usr_intf/pncconf/pncconf.py:4123 +#: src/emc/usr_intf/pncconf/pncconf.glade:295 msgid "" -"It seems data in this file is from too old of a version of PNCConf to " -"continue.\n" -"." +"XYZ\n" +"XYZA\n" +"XZ (Lathe)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4130 -#: src/emc/usr_intf/pncconf/pncconf.py:4228 -#, fuzzy, python-format -msgid "Point and click configuration - %s.pncconf " -msgstr "Skopírovať konfiguráciu?" - -#: src/emc/usr_intf/pncconf/pncconf.py:4250 -msgid "" -"You need to designate a parport and/or mesa I/O device before continuing." -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:322 +#, fuzzy +msgid "Machine units:" +msgstr "Stroj zapnutý" -#: src/emc/usr_intf/pncconf/pncconf.py:4309 +#: src/emc/usr_intf/pncconf/pncconf.glade:337 msgid "" -"You Have choosen to re-edit the current config, so you can not go to the new/" -"modify page.\n" -" Quit and reload PNCconf if you wish to build a new config." +"Inch\n" +"Millimeter" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4313 -msgid "" -"If you can not go to the new/modify page your current data will be lost.\n" -"Ok to reset data and start a new configuration?" +#: src/emc/usr_intf/pncconf/pncconf.glade:363 +msgid "Machine Basics" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4594 -msgid "USB device Info Search" +#: src/emc/usr_intf/pncconf/pncconf.glade:416 +msgid "Actual Servo Period: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4608 -#, fuzzy -msgid "USB device page is unavailable\n" -msgstr "Nie sú dostupné žiadne detaily." +#: src/emc/usr_intf/pncconf/pncconf.glade:475 +msgid "Recommend servo period: 1000000" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4673 -msgid "Pin names are unavailable\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:494 +msgid "" +" Test Base\n" +"Period Jitter " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4695 -msgid "Device names are unavailable\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:519 +msgid "Computer Response Time" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4698 -msgid "No Pncconf made device rules were found\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:561 +msgid "Mesa0 PCI / Parport Card:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4822 -msgid "" -"OK to replace existing glade panel ?\n" -"It will be renamed and added to 'backups' folder.\n" -" Clicking 'existing custom program' will aviod this warning. " +#: src/emc/usr_intf/pncconf/pncconf.glade:571 +msgid "Mesa1 PCI / Parport Card:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4827 -msgid "" -"OK to replace existing custom pyvcp panel?\n" -"Existing pyvcp-panel.xml will be renamed and added to 'backups' folder\n" -"Clicking 'existing custom program' will aviod this warning. " +#: src/emc/usr_intf/pncconf/pncconf.glade:584 +msgid "First Parport Address:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5250 -msgid "" -"You need to configure the mesa0 page.\n" -" Choose the board type, firmware, component amounts and press 'Accept " -"component changes' button'" +#: src/emc/usr_intf/pncconf/pncconf.glade:597 +msgid "Second Parport Address:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5254 -msgid "" -"The chosen Mesa0 board is different from the current displayed.\n" -"please press 'Accept component changes' button'" +#: src/emc/usr_intf/pncconf/pncconf.glade:612 +msgid "Third Parport Address:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5297 +#: src/emc/usr_intf/pncconf/pncconf.glade:635 +#: src/emc/usr_intf/pncconf/pncconf.glade:643 msgid "" -"You need to configure the mesa1 page.\n" -" Choose the board type, firmware, component amounts and press 'Accept " -"component changes' button'" +"5i20\n" +"5i23\n" +"5i22" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5301 +#: src/emc/usr_intf/pncconf/pncconf.glade:716 +#: src/emc/usr_intf/pncconf/pncconf.glade:728 +#: src/emc/usr_intf/pncconf/pncconf.glade:741 msgid "" -"The chosen Mesa1 board is different from the current displayed.\n" -"please press 'Accept component changes' button'" +"In\n" +"Out" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5315 +#: src/emc/usr_intf/pncconf/pncconf.glade:804 msgid "" -"Do to technical reasons this test panel can be loaded only once without " -"reloading pncconf.You also will not be able to do any other testing untill " -"you reload pncconf and quite possibly open a terminal and type 'halrun -U' I " -"hesitate to even allow it's use but at times it's very useful.\n" -"Do you wish to continue the test?" +"Add-on PCI\n" +" Parport\n" +" Address \n" +" Search" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6699 -msgid "First Parallel Port set for OUTPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:829 +msgid "I/O Control Ports/ Boards" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6701 -msgid "First Parallel Port set for INPUT" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:878 +#, fuzzy +msgid "Axis" +msgstr "Os" -#: src/emc/usr_intf/pncconf/pncconf.py:6725 -msgid "Second Parallel Port set for OUTPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:893 +msgid "TKLinuxCNC" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6727 -msgid "Second Parallel Port set for INPUT" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:907 +#, fuzzy +msgid "Mini" +msgstr "Hlavné" -#: src/emc/usr_intf/pncconf/pncconf.py:6739 -msgid "Third Parallel Port set for OUTPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:921 +#: src/emc/usr_intf/pncconf/pncconf.glade:6656 +msgid "Touchy" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6741 -msgid "Third Parallel Port set for INPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:938 +msgid "GUI frontend list" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6866 -msgid "You can not have both steppers and pwm signals for spindle control\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:973 +#, fuzzy +msgid "External Controls" +msgstr "Manuál" -#: src/emc/usr_intf/pncconf/pncconf.py:6870 -#, python-format -msgid "You forgot to designate a stepper or pwm signal for axis %s\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1014 +msgid "Add device rule" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6873 -#, python-format -msgid "You forgot to designate an encoder /resolver signal for axis %s servo\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1027 +#, fuzzy +msgid "Test device" +msgstr "Testovať" -#: src/emc/usr_intf/pncconf/pncconf.py:6876 -#, python-format -msgid "You forgot to designate a pwm signal or stepper signal for axis %s\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1041 +msgid "Search for device rules" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6879 -#, python-format -msgid "You can not have both steppers and pwm signals for axis %s\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1062 +#, fuzzy +msgid "Device Name:" +msgstr "Stroj zapnutý" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1125 +msgid "A +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6887 -msgid "Touchy require an external cycle start signal\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1135 +msgid "A -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6890 -msgid "Touchy require an external abort signal\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1169 +#: src/emc/usr_intf/pncconf/pncconf.glade:1181 +#: src/emc/usr_intf/pncconf/pncconf.glade:1191 +#: src/emc/usr_intf/pncconf/pncconf.glade:1246 +#: src/emc/usr_intf/pncconf/pncconf.glade:1759 +msgid "mm/min " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6893 -msgid "Touchy require an external single-step signal\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1269 +msgid " ab)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6896 -msgid "" -"Touchy require an external multi handwheel MPG encoder signal on the mesa " -"page\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1282 +#: src/emc/usr_intf/pncconf/pncconf.glade:2493 +#: src/emc/usr_intf/pncconf/pncconf.glade:2927 +#: src/emc/usr_intf/pncconf/pncconf.glade:3808 +#: src/emc/usr_intf/pncconf/pncconf.glade:4689 +msgid " b)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6899 -msgid "" -"Touchy require 'external mpg jogging' to be selected on the external control " -"page\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1293 +#: src/emc/usr_intf/pncconf/pncconf.glade:2482 +#: src/emc/usr_intf/pncconf/pncconf.glade:2916 +#: src/emc/usr_intf/pncconf/pncconf.glade:3797 +#: src/emc/usr_intf/pncconf/pncconf.glade:4678 +msgid " a)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6902 -msgid "" -"Touchy require the external mpg to be in 'shared mpg' mode on the external " -"controls page\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1305 +#: src/emc/usr_intf/pncconf/pncconf.glade:2385 +#: src/emc/usr_intf/pncconf/pncconf.glade:2867 +#: src/emc/usr_intf/pncconf/pncconf.glade:3748 +#: src/emc/usr_intf/pncconf/pncconf.glade:4629 +#, fuzzy +msgid "default" +msgstr "Vreteno vypni" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1336 +#: src/emc/usr_intf/pncconf/pncconf.glade:1476 +#, fuzzy +msgid "Jog Speed select A" +msgstr "Rýchlosť krokov" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1348 +#, fuzzy +msgid "X +" +msgstr "X +" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1354 +msgid "Y +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6905 -msgid "" -"Touchy require selectable increments to be unchecked on the external " -"controls page\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1364 +msgid "Z +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6909 -msgid "" -"The 7i29 daughter board requires PWM type generators and a PWM base " -"frequency of 20 khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1374 +#, fuzzy +msgid "X -" +msgstr "X -" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1384 +msgid "Y -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6912 -msgid "" -"The 7i30 daughter board requires PWM type generators and a PWM base " -"frequency of 20 khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1396 +msgid "Z -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6915 -msgid "" -"The 7i33 daughter board requires PDM type generators and a PDM base " -"frequency of 6 Mhz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1500 +#, fuzzy +msgid "Digital Control" +msgstr "Manuál" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1593 +#: src/emc/usr_intf/gscreen/gscreen.glade:502 +msgid "A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6918 -msgid "" -"The 7i40 daughter board requires PWM type generators and a PWM base " -"frequency of 50 khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1603 +#: src/emc/usr_intf/gscreen/gscreen.glade:374 +msgid "Z" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6921 -msgid "" -"The 7i48 daughter board requires UDM type generators and a PWM base " -"frequency of 24 khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1613 +#: src/emc/usr_intf/pncconf/pncconf.glade:6134 +#: src/emc/usr_intf/pncconf/pncconf.glade:6458 +#: src/emc/usr_intf/pncconf/pncconf.glade:6860 +#: src/emc/usr_intf/pncconf/pncconf.glade:7235 +#: src/emc/usr_intf/gscreen/gscreen.glade:244 +msgid "Y" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7148 -msgid "Gearbox Reduction Ratio" +#: src/emc/usr_intf/pncconf/pncconf.glade:1623 +msgid "X " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7151 -msgid "Reduction Ratio" +#: src/emc/usr_intf/pncconf/pncconf.glade:1631 +#, fuzzy +msgid "Analog Control" +msgstr "Manuál" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1657 +#: src/emc/usr_intf/pncconf/pncconf.glade:1788 +#: src/emc/usr_intf/pncconf/pncconf.glade:2698 +#: src/emc/usr_intf/pncconf/pncconf.glade:3579 +#: src/emc/usr_intf/pncconf/pncconf.glade:4460 +#: src/emc/usr_intf/pncconf/pncconf.glade:5341 +#: src/emc/usr_intf/pncconf/pncconf.glade:64300 +msgid "Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7154 -msgid "Leadscrew Pitch" +#: src/emc/usr_intf/pncconf/pncconf.glade:1675 +msgid "USB Joystick Jogging " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7157 -#: src/emc/usr_intf/pncconf/pncconf.glade:66327 -#: src/emc/usr_intf/pncconf/pncconf.glade:66622 -msgid "Leadscrew TPI" +#: src/emc/usr_intf/pncconf/pncconf.glade:1719 +msgid "shared buttons for all axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7161 -#: src/emc/usr_intf/pncconf/pncconf.py:7162 -msgid "(" +#: src/emc/usr_intf/pncconf/pncconf.glade:1732 +msgid "buttons for each axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7163 -#: src/emc/usr_intf/pncconf/pncconf.py:7173 -#: src/emc/usr_intf/pncconf/pncconf.py:7174 -#: src/emc/usr_intf/pncconf/pncconf.py:7175 -#, fuzzy -msgid " / min" -msgstr "inch" +#: src/emc/usr_intf/pncconf/pncconf.glade:1806 +msgid "External Button Jogging" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7164 -msgid " / sec²" +#: src/emc/usr_intf/pncconf/pncconf.glade:1847 +msgid "Shared MPG / selectable axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7167 -#, fuzzy -msgid " / Step" -msgstr "Krok" +#: src/emc/usr_intf/pncconf/pncconf.glade:1860 +msgid "Mpg per axis" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7168 +#: src/emc/usr_intf/pncconf/pncconf.glade:1875 #, fuzzy -msgid "Steps / " -msgstr "Krok" +msgid "selectable MPG increments" +msgstr "Pričítať" -#: src/emc/usr_intf/pncconf/pncconf.py:7170 -msgid " / encoder pulse" +#: src/emc/usr_intf/pncconf/pncconf.glade:1940 +#: src/emc/usr_intf/pncconf/pncconf.glade:3379 +#: src/emc/usr_intf/pncconf/pncconf.glade:4260 +#: src/emc/usr_intf/pncconf/pncconf.glade:5141 +msgid " d)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7171 -msgid "Encoder pulses / " +#: src/emc/usr_intf/pncconf/pncconf.glade:1952 +#: src/emc/usr_intf/pncconf/pncconf.glade:3340 +#: src/emc/usr_intf/pncconf/pncconf.glade:4221 +#: src/emc/usr_intf/pncconf/pncconf.glade:5102 +msgid " abcd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7482 -msgid "Axis Scale Calculation" +#: src/emc/usr_intf/pncconf/pncconf.glade:1965 +#: src/emc/usr_intf/pncconf/pncconf.glade:3353 +#: src/emc/usr_intf/pncconf/pncconf.glade:4234 +#: src/emc/usr_intf/pncconf/pncconf.glade:5115 +msgid " bcd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7785 -msgid "You need to designate an E-stop input pin for this ladder program." +#: src/emc/usr_intf/pncconf/pncconf.glade:1978 +#: src/emc/usr_intf/pncconf/pncconf.glade:3366 +#: src/emc/usr_intf/pncconf/pncconf.glade:4247 +#: src/emc/usr_intf/pncconf/pncconf.glade:5128 +msgid " acd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7797 -msgid "You need to designate a probe input pin for this ladder program." +#: src/emc/usr_intf/pncconf/pncconf.glade:1991 +#: src/emc/usr_intf/pncconf/pncconf.glade:3430 +#: src/emc/usr_intf/pncconf/pncconf.glade:4311 +#: src/emc/usr_intf/pncconf/pncconf.glade:5192 +msgid " cd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7808 -msgid "" -"OK to replace existing custom ladder program?\n" -"Existing Custom.clp will be renamed custom_backup.clp.\n" -"Any existing file named -custom_backup.clp- will be lost.Selecting 'existing " -"ladder program' will avoid this warning" +#: src/emc/usr_intf/pncconf/pncconf.glade:2004 +#: src/emc/usr_intf/pncconf/pncconf.glade:3404 +#: src/emc/usr_intf/pncconf/pncconf.glade:4285 +#: src/emc/usr_intf/pncconf/pncconf.glade:5166 +msgid " bd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8019 -msgid "Do you wish to continue to edit this configuration." +#: src/emc/usr_intf/pncconf/pncconf.glade:2017 +#: src/emc/usr_intf/pncconf/pncconf.glade:3391 +#: src/emc/usr_intf/pncconf/pncconf.glade:4272 +#: src/emc/usr_intf/pncconf/pncconf.glade:5153 +msgid " ad)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8058 -msgid "PCI search page is unavailable\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2030 +#: src/emc/usr_intf/pncconf/pncconf.glade:2514 +#: src/emc/usr_intf/pncconf/pncconf.glade:3059 +#: src/emc/usr_intf/pncconf/pncconf.glade:3940 +#: src/emc/usr_intf/pncconf/pncconf.glade:4821 +msgid " abc)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8176 -msgid "" -"You specified there is an existing gladefile, But there is not one in the " -"machine-named folder.." +#: src/emc/usr_intf/pncconf/pncconf.glade:2041 +#: src/emc/usr_intf/pncconf/pncconf.glade:3026 +#: src/emc/usr_intf/pncconf/pncconf.glade:3907 +#: src/emc/usr_intf/pncconf/pncconf.glade:4788 +msgid " c)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8495 -msgid "Servo tuning is not avaiable in PNCconf yet\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2207 +#: src/emc/usr_intf/pncconf/pncconf.glade:3049 +#: src/emc/usr_intf/pncconf/pncconf.glade:3930 +#: src/emc/usr_intf/pncconf/pncconf.glade:4811 +msgid " bc)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8500 -msgid "degrees" +#: src/emc/usr_intf/pncconf/pncconf.glade:2217 +#: src/emc/usr_intf/pncconf/pncconf.glade:3038 +#: src/emc/usr_intf/pncconf/pncconf.glade:3919 +#: src/emc/usr_intf/pncconf/pncconf.glade:4800 +msgid " ac)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8501 -msgid "degrees / minute" +#: src/emc/usr_intf/pncconf/pncconf.glade:2504 +#: src/emc/usr_intf/pncconf/pncconf.glade:2938 +#: src/emc/usr_intf/pncconf/pncconf.glade:3819 +#: src/emc/usr_intf/pncconf/pncconf.glade:4700 +msgid " ab)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8502 -msgid "degrees / second²" +#: src/emc/usr_intf/pncconf/pncconf.glade:2577 +msgid "ignore all inputs false" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8504 -msgid "revolutions" +#: src/emc/usr_intf/pncconf/pncconf.glade:2592 +msgid "use gray code" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8505 -msgid "rpm" +#: src/emc/usr_intf/pncconf/pncconf.glade:2607 +#: src/emc/usr_intf/pncconf/pncconf.glade:3489 +#: src/emc/usr_intf/pncconf/pncconf.glade:4356 +#: src/emc/usr_intf/pncconf/pncconf.glade:5237 +msgid "use debounce" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8506 -msgid "revs / second²" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:2658 +#: src/emc/usr_intf/pncconf/pncconf.glade:3453 +#: src/emc/usr_intf/pncconf/pncconf.glade:4334 +#: src/emc/usr_intf/pncconf/pncconf.glade:5215 +#, fuzzy +msgid "Mux options" +msgstr "Pohyb" -#: src/emc/usr_intf/pncconf/pncconf.py:8509 -#: src/emc/usr_intf/pncconf/pncconf.glade:58295 -#: src/emc/usr_intf/pncconf/pncconf.glade:58479 -#: src/emc/usr_intf/pncconf/pncconf.glade:58576 -msgid "mm / minute" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:2672 +#, fuzzy +msgid "increments" +msgstr "Pričítať" -#: src/emc/usr_intf/pncconf/pncconf.py:8510 -msgid "mm / second²" +#: src/emc/usr_intf/pncconf/pncconf.glade:2716 +msgid "External MPG Jogging" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8513 -msgid "inches / minute" +#: src/emc/usr_intf/pncconf/pncconf.glade:2747 +#: src/emc/usr_intf/pncconf/pncconf.glade:3628 +#: src/emc/usr_intf/pncconf/pncconf.glade:4509 +msgid "Use MPG " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8514 -#, fuzzy -msgid "inches / second²" -msgstr "inch" +#: src/emc/usr_intf/pncconf/pncconf.glade:2760 +#: src/emc/usr_intf/pncconf/pncconf.glade:3641 +#: src/emc/usr_intf/pncconf/pncconf.glade:4522 +msgid "use switches" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8646 -#, python-format -msgid "%s Axis Tune" +#: src/emc/usr_intf/pncconf/pncconf.glade:3417 +#: src/emc/usr_intf/pncconf/pncconf.glade:4298 +#: src/emc/usr_intf/pncconf/pncconf.glade:5179 +msgid " abd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8810 -msgid "" -" You must designate a ENCODER / RESOLVER signal and an ANALOG SPINDLE signal " -"for this axis test" +#: src/emc/usr_intf/pncconf/pncconf.glade:3504 +#: src/emc/usr_intf/pncconf/pncconf.glade:4371 +#: src/emc/usr_intf/pncconf/pncconf.glade:5252 +msgid "use graycode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8814 -msgid "" -" You must designate a ENCODER / RESOLVER signal and a PWM signal for this " -"axis test" +#: src/emc/usr_intf/pncconf/pncconf.glade:3519 +#: src/emc/usr_intf/pncconf/pncconf.glade:4386 +#: src/emc/usr_intf/pncconf/pncconf.glade:5267 +msgid "ignore all-inputs false" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8 +#: src/emc/usr_intf/pncconf/pncconf.glade:3563 +#: src/emc/usr_intf/pncconf/pncconf.glade:4444 +#: src/emc/usr_intf/pncconf/pncconf.glade:5325 #, fuzzy -msgid "LinuxCNC Point And Click Configuration" -msgstr "Skopírovať konfiguráciu?" +msgid "Increments" +msgstr "Pričítať" -#: src/emc/usr_intf/pncconf/pncconf.glade:23 -msgid "LinuxCNC Configuration Wizard Beta 1 Version" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:3597 +#, fuzzy +msgid "External Feed Override" +msgstr "Nastav prechod posunu" -#: src/emc/usr_intf/pncconf/pncconf.glade:24 -msgid "" -"\tThis program creates configuration \n" -" files for \"Closed Loop Servo\" \n" -"\t \t and hardware stepper\n" -" \tmachines" +#: src/emc/usr_intf/pncconf/pncconf.glade:4478 +msgid "Max Velocity Override" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:34 -msgid "Create or Edit" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5359 +#, fuzzy +msgid "External Spindle Override" +msgstr "Nastaviť zmenu vretena" -#: src/emc/usr_intf/pncconf/pncconf.glade:52 +#: src/emc/usr_intf/pncconf/pncconf.glade:5387 #, fuzzy -msgid "Create a new configuration" -msgstr "Príklady konfigurácií" +msgid "GUI configuration" +msgstr "Moje konfigurácie" -#: src/emc/usr_intf/pncconf/pncconf.glade:118 -msgid "Create a desktop shortcut (symlink) to configuration files." +#: src/emc/usr_intf/pncconf/pncconf.glade:5406 +msgid "Frontend" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:135 -msgid "Create a desktop launcher to start LinuxCNC with this configuration." -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5566 +#, fuzzy +msgid "Position_offset" +msgstr "Typ polohy" -#: src/emc/usr_intf/pncconf/pncconf.glade:214 +#: src/emc/usr_intf/pncconf/pncconf.glade:5573 #, fuzzy -msgid "Machine Name:" -msgstr "Stroj zapnutý" +msgid "Position_feedback" +msgstr "Typ polohy" -#: src/emc/usr_intf/pncconf/pncconf.glade:281 +#: src/emc/usr_intf/pncconf/pncconf.glade:5584 #, fuzzy -msgid "Axis configuration:" -msgstr "Nastavenie HAL" +msgid "Max Spindle Override " +msgstr "Nastaviť zmenu vretena" -#: src/emc/usr_intf/pncconf/pncconf.glade:316 +#: src/emc/usr_intf/pncconf/pncconf.glade:5606 #, fuzzy -msgid "Machine units:" -msgstr "Stroj zapnutý" +msgid "Min Spindle Override" +msgstr "Nastaviť zmenu vretena" -#: src/emc/usr_intf/pncconf/pncconf.glade:355 -msgid "Machine Basics" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5665 +#, fuzzy +msgid "Max Feed Override" +msgstr "Začať posun:" -#: src/emc/usr_intf/pncconf/pncconf.glade:405 -msgid "Recommend servo period: 1000000" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5702 +#, fuzzy +msgid "" +"Machine\n" +"Relative\n" +msgstr "pomerný" -#: src/emc/usr_intf/pncconf/pncconf.glade:431 -msgid "Actual Servo Period: " +#: src/emc/usr_intf/pncconf/pncconf.glade:5714 +#, fuzzy +msgid "" +"Commanded\n" +"Actual" +msgstr "Rozkaz zadaný" + +#: src/emc/usr_intf/pncconf/pncconf.glade:5729 +msgid "General GUI Defaults" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:486 -msgid "" -" Test Base\n" -"Period Jitter " +#: src/emc/usr_intf/pncconf/pncconf.glade:5811 +msgid "Default linear velocity " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:511 -msgid "Computer Response Time" +#: src/emc/usr_intf/pncconf/pncconf.glade:5818 +msgid "Min linear velocity" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:553 -msgid "Mesa0 PCI / Parport Card:" +#: src/emc/usr_intf/pncconf/pncconf.glade:5829 +msgid "Max linear velocity" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:563 -msgid "Mesa1 PCI / Parport Card:" +#: src/emc/usr_intf/pncconf/pncconf.glade:5879 +#: src/emc/usr_intf/pncconf/pncconf.glade:6085 +#: src/emc/usr_intf/pncconf/pncconf.glade:6097 +msgid "mm / min" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:576 -msgid "First Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.glade:5892 +msgid "Default Angular velocity " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:589 -msgid "Second Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.glade:5926 +msgid "gedit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:604 -msgid "Third Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.glade:5939 +msgid "Min Angular velocity" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:627 -#: src/emc/usr_intf/pncconf/pncconf.glade:635 -msgid "" -"5i20\n" -"5i23\n" -"5i22" +#: src/emc/usr_intf/pncconf/pncconf.glade:5966 +#, fuzzy +msgid "Increments " +msgstr "Pričítať" + +#: src/emc/usr_intf/pncconf/pncconf.glade:5977 +msgid "5mm 1mm .5mm .1mm .05mm .01mm .005mm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:708 -#: src/emc/usr_intf/pncconf/pncconf.glade:720 -#: src/emc/usr_intf/pncconf/pncconf.glade:733 -msgid "" -"In\n" -"Out" +#: src/emc/usr_intf/pncconf/pncconf.glade:5990 +msgid "Max Angular velocity" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:796 -msgid "" -"Add-on PCI\n" -" Parport\n" -" Address \n" -" Search" +#: src/emc/usr_intf/pncconf/pncconf.glade:6017 +msgid "Axis Geometry" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:821 -msgid "I/O Control Ports/ Boards" +#: src/emc/usr_intf/pncconf/pncconf.glade:6028 +msgid "xyzabc" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:870 +#: src/emc/usr_intf/pncconf/pncconf.glade:6040 +#: src/emc/usr_intf/pncconf/pncconf.glade:6052 +#: src/emc/usr_intf/pncconf/pncconf.glade:6064 #, fuzzy -msgid "Axis" -msgstr "Os" +msgid "Deg / min" +msgstr "inch" -#: src/emc/usr_intf/pncconf/pncconf.glade:885 -msgid "TKLinuxCNC" +#: src/emc/usr_intf/pncconf/pncconf.glade:6113 +#: src/emc/usr_intf/pncconf/pncconf.glade:6484 +#: src/emc/usr_intf/pncconf/pncconf.glade:6839 +#: src/emc/usr_intf/pncconf/pncconf.glade:7262 +msgid "size" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:899 +#: src/emc/usr_intf/pncconf/pncconf.glade:6122 +#: src/emc/usr_intf/pncconf/pncconf.glade:6471 +#: src/emc/usr_intf/pncconf/pncconf.glade:6848 +#: src/emc/usr_intf/pncconf/pncconf.glade:7248 #, fuzzy -msgid "Mini" -msgstr "Hlavné" +msgid "Position" +msgstr "Typ polohy" -#: src/emc/usr_intf/pncconf/pncconf.glade:913 -#: src/emc/usr_intf/pncconf/pncconf.glade:6648 -msgid "Touchy" +#: src/emc/usr_intf/pncconf/pncconf.glade:6159 +#: src/emc/usr_intf/pncconf/pncconf.glade:6433 +#: src/emc/usr_intf/pncconf/pncconf.glade:6885 +#: src/emc/usr_intf/pncconf/pncconf.glade:7210 +#: src/emc/usr_intf/gscreen/gscreen.glade:116 +msgid "X" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:930 -msgid "GUI frontend list" +#: src/emc/usr_intf/pncconf/pncconf.glade:6171 +#: src/emc/usr_intf/pncconf/pncconf.glade:6423 +#: src/emc/usr_intf/pncconf/pncconf.glade:6897 +#: src/emc/usr_intf/pncconf/pncconf.glade:7200 +#: src/emc/usr_intf/gscreen/gscreen.glade:1142 +msgid "W" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:965 -#, fuzzy -msgid "External Controls" -msgstr "Manuál" +#: src/emc/usr_intf/pncconf/pncconf.glade:6205 +#: src/emc/usr_intf/pncconf/pncconf.glade:6389 +#: src/emc/usr_intf/pncconf/pncconf.glade:6931 +#: src/emc/usr_intf/pncconf/pncconf.glade:7166 +msgid "H" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1006 -msgid "Add device rule" +#: src/emc/usr_intf/pncconf/pncconf.glade:6227 +msgid "Force Axis to Maximize" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1019 +#: src/emc/usr_intf/pncconf/pncconf.glade:6249 #, fuzzy -msgid "Test device" -msgstr "Testovať" +msgid "AXIS defaults" +msgstr "Použiť pôvodné" -#: src/emc/usr_intf/pncconf/pncconf.glade:1033 -msgid "Search for device rules" +#: src/emc/usr_intf/pncconf/pncconf.glade:6365 +msgid "Force Touchy to Maximize after positioning" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1054 -#, fuzzy -msgid "Device Name:" -msgstr "Stroj zapnutý" +#: src/emc/usr_intf/pncconf/pncconf.glade:6501 +#: src/emc/usr_intf/pncconf/pncconf.glade:7333 +msgid "Follow System Theme\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1117 -#: src/emc/usr_intf/pncconf/pncconf.glade:1255 -#, fuzzy -msgid "Jog Speed select A" -msgstr "Rýchlosť krokov" +#: src/emc/usr_intf/pncconf/pncconf.glade:6514 +#: src/emc/usr_intf/pncconf/pncconf.glade:7347 +msgid "GTK Theme" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1195 -msgid "Z -" +#: src/emc/usr_intf/pncconf/pncconf.glade:6540 +#: src/emc/usr_intf/gscreen/gscreen.glade:1857 +msgid "Absolute Text Color" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1207 -msgid "Y -" +#: src/emc/usr_intf/pncconf/pncconf.glade:6603 +msgid "Absolute Textcolor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1219 +#: src/emc/usr_intf/pncconf/pncconf.glade:6616 #, fuzzy -msgid "X -" -msgstr "X -" +msgid "Relative Textcolor" +msgstr "Relatívna pozícia" -#: src/emc/usr_intf/pncconf/pncconf.glade:1229 -msgid "Z +" +#: src/emc/usr_intf/pncconf/pncconf.glade:6629 +msgid "DTG Textcolor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1239 -msgid "Y +" +#: src/emc/usr_intf/pncconf/pncconf.glade:6642 +msgid "Error Textcolor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1249 -#, fuzzy -msgid "X +" -msgstr "X +" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1289 -#: src/emc/usr_intf/pncconf/pncconf.glade:2208 -#: src/emc/usr_intf/pncconf/pncconf.glade:3496 -#: src/emc/usr_intf/pncconf/pncconf.glade:4377 -#: src/emc/usr_intf/pncconf/pncconf.glade:5258 -#, fuzzy -msgid "default" -msgstr "Vreteno vypni" +#: src/emc/usr_intf/pncconf/pncconf.glade:6677 +msgid "GUI Options" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1299 -#: src/emc/usr_intf/pncconf/pncconf.glade:2107 -#: src/emc/usr_intf/pncconf/pncconf.glade:3443 -#: src/emc/usr_intf/pncconf/pncconf.glade:4324 -#: src/emc/usr_intf/pncconf/pncconf.glade:5205 -msgid " a)" +#: src/emc/usr_intf/pncconf/pncconf.glade:6708 +msgid "Virtual Control Panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1311 -#: src/emc/usr_intf/pncconf/pncconf.glade:2096 -#: src/emc/usr_intf/pncconf/pncconf.glade:3432 -#: src/emc/usr_intf/pncconf/pncconf.glade:4313 -#: src/emc/usr_intf/pncconf/pncconf.glade:5194 -msgid " b)" +#: src/emc/usr_intf/pncconf/pncconf.glade:6783 +msgid "XYZ buttons (uses Halui)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1322 -msgid " ab)" +#: src/emc/usr_intf/pncconf/pncconf.glade:6954 +msgid "Geometry Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1348 -#: src/emc/usr_intf/pncconf/pncconf.glade:1401 -#: src/emc/usr_intf/pncconf/pncconf.glade:1413 -#: src/emc/usr_intf/pncconf/pncconf.glade:1423 -#: src/emc/usr_intf/pncconf/pncconf.glade:1751 -msgid "mm/min " +#: src/emc/usr_intf/pncconf/pncconf.glade:7033 +msgid "Pyvcp Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1456 -msgid "A -" +#: src/emc/usr_intf/pncconf/pncconf.glade:7105 +msgid "Sample display " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1468 -msgid "A +" +#: src/emc/usr_intf/pncconf/pncconf.glade:7272 +msgid "Standalone Panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1492 -#, fuzzy -msgid "Digital Control" -msgstr "Manuál" +#: src/emc/usr_intf/pncconf/pncconf.glade:7289 +msgid "Rightside Embeded" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1539 -msgid "X " +#: src/emc/usr_intf/pncconf/pncconf.glade:7305 +msgid "Center Tab Embeded" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1545 -#: src/emc/usr_intf/pncconf/pncconf.glade:5901 -#: src/emc/usr_intf/pncconf/pncconf.glade:6531 -#: src/emc/usr_intf/pncconf/pncconf.glade:6910 -#: src/emc/usr_intf/pncconf/pncconf.glade:7257 -msgid "Y" +#: src/emc/usr_intf/pncconf/pncconf.glade:7320 +msgid "Force Maximize" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1555 -msgid "Z" +#: src/emc/usr_intf/pncconf/pncconf.glade:7359 +msgid "Display Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1565 -msgid "A" +#: src/emc/usr_intf/pncconf/pncconf.glade:7409 +msgid "Max RPM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1623 +#: src/emc/usr_intf/pncconf/pncconf.glade:7422 #, fuzzy -msgid "Analog Control" -msgstr "Manuál" +msgid "Spindle Speed Indicator" +msgstr "Zmena rýchlosti vretena:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1649 -#: src/emc/usr_intf/pncconf/pncconf.glade:1780 -#: src/emc/usr_intf/pncconf/pncconf.glade:2690 -#: src/emc/usr_intf/pncconf/pncconf.glade:3571 -#: src/emc/usr_intf/pncconf/pncconf.glade:4452 -#: src/emc/usr_intf/pncconf/pncconf.glade:5333 -#: src/emc/usr_intf/pncconf/pncconf.glade:57371 -msgid "Details" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:7434 +#, fuzzy +msgid "Spindle At Speed LED" +msgstr "Zmena rýchlosti vretena:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1667 -msgid "USB Joystick Jogging " +#: src/emc/usr_intf/pncconf/pncconf.glade:7446 +msgid "Zero X Button" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1711 -msgid "shared buttons for all axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:7458 +msgid "Zero Y Button" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1724 -msgid "buttons for each axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:7470 +msgid "Zero Z Button" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1798 -msgid "External Button Jogging" +#: src/emc/usr_intf/pncconf/pncconf.glade:7482 +msgid "Zero A Button" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1839 -msgid "Shared MPG / selectable axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:7494 +msgid "Requires Classicladder touch-off program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1852 -msgid "Mpg per axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:7495 +msgid "Auto Z Touch Off Button" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1867 +#: src/emc/usr_intf/pncconf/pncconf.glade:7508 #, fuzzy -msgid "selectable MPG increments" -msgstr "Pričítať" +msgid "Sample Options" +msgstr "Príklady konfigurácií" -#: src/emc/usr_intf/pncconf/pncconf.glade:1932 -#: src/emc/usr_intf/pncconf/pncconf.glade:2907 -#: src/emc/usr_intf/pncconf/pncconf.glade:3788 -#: src/emc/usr_intf/pncconf/pncconf.glade:4669 -#, fuzzy -msgid "Mux options" -msgstr "Pohyb" +#: src/emc/usr_intf/pncconf/pncconf.glade:7582 +msgid "Gladevcp Details" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1980 -#: src/emc/usr_intf/pncconf/pncconf.glade:2868 -#: src/emc/usr_intf/pncconf/pncconf.glade:3763 -#: src/emc/usr_intf/pncconf/pncconf.glade:4644 -msgid "use debounce" +#: src/emc/usr_intf/pncconf/pncconf.glade:7605 +msgid "Include custom GladeVCP GUI panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1995 -msgid "use gray code" +#: src/emc/usr_intf/pncconf/pncconf.glade:7676 +msgid "Force individual manual homing" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:7689 +msgid "Random position toolchanger " +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:7704 +msgid "Require homing before MDI / Running" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:7713 +msgid "Popup Toolchange Prompt" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:7727 +msgid "Leave spindle on during tool change" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:7740 +msgid "Move spindle up before tool change" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:7753 +msgid "Restore joint position after shutdown" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2010 -msgid "ignore all inputs false" +#: src/emc/usr_intf/pncconf/pncconf.glade:7769 +msgid "Defaults and Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2035 -#: src/emc/usr_intf/pncconf/pncconf.glade:2048 -#: src/emc/usr_intf/pncconf/pncconf.glade:2061 -#: src/emc/usr_intf/pncconf/pncconf.glade:2407 -#: src/emc/usr_intf/pncconf/pncconf.glade:2420 -#: src/emc/usr_intf/pncconf/pncconf.glade:2433 -#: src/emc/usr_intf/pncconf/pncconf.glade:2446 -#: src/emc/usr_intf/pncconf/pncconf.glade:2457 -#: src/emc/usr_intf/pncconf/pncconf.glade:2470 -#: src/emc/usr_intf/pncconf/pncconf.glade:2483 -#: src/emc/usr_intf/pncconf/pncconf.glade:2496 -#: src/emc/usr_intf/pncconf/pncconf.glade:2509 -#: src/emc/usr_intf/pncconf/pncconf.glade:2522 -#: src/emc/usr_intf/pncconf/pncconf.glade:2535 -#: src/emc/usr_intf/pncconf/pncconf.glade:8343 -#: src/emc/usr_intf/pncconf/pncconf.glade:8379 -#: src/emc/usr_intf/pncconf/pncconf.glade:56542 -#: src/emc/usr_intf/pncconf/pncconf.glade:61266 -#: src/emc/usr_intf/pncconf/pncconf.glade:61278 -#: src/emc/usr_intf/pncconf/pncconf.glade:61290 -#: src/emc/usr_intf/pncconf/pncconf.glade:61302 -#: src/emc/usr_intf/pncconf/pncconf.glade:62475 -#: src/emc/usr_intf/pncconf/pncconf.glade:62487 -#: src/emc/usr_intf/pncconf/pncconf.glade:62499 -#: src/emc/usr_intf/pncconf/pncconf.glade:62511 -#: src/emc/usr_intf/pncconf/pncconf.glade:63452 -#: src/emc/usr_intf/pncconf/pncconf.glade:63464 -#: src/emc/usr_intf/pncconf/pncconf.glade:63476 -#: src/emc/usr_intf/pncconf/pncconf.glade:63488 -#: src/emc/usr_intf/pncconf/pncconf.glade:64661 -#: src/emc/usr_intf/pncconf/pncconf.glade:64673 -#: src/emc/usr_intf/pncconf/pncconf.glade:64685 -#: src/emc/usr_intf/pncconf/pncconf.glade:64697 -#: src/emc/usr_intf/pncconf/pncconf.glade:65608 -#: src/emc/usr_intf/pncconf/pncconf.glade:65620 -#: src/emc/usr_intf/pncconf/pncconf.glade:65632 -#: src/emc/usr_intf/pncconf/pncconf.glade:65644 -msgid "label" +#: src/emc/usr_intf/pncconf/pncconf.glade:7797 +msgid "Mesa0 I/O setup\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2073 -#: src/emc/usr_intf/pncconf/pncconf.glade:2559 -#: src/emc/usr_intf/pncconf/pncconf.glade:3300 -#: src/emc/usr_intf/pncconf/pncconf.glade:4181 -#: src/emc/usr_intf/pncconf/pncconf.glade:5062 -msgid " abc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7817 +msgid "" +"Click on each page tab to configure signal names for each connector port.\n" +"\n" +"Press the button to make the tabbed pages\n" +"accept the changes.\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2086 -#: src/emc/usr_intf/pncconf/pncconf.glade:3422 -#: src/emc/usr_intf/pncconf/pncconf.glade:4303 -#: src/emc/usr_intf/pncconf/pncconf.glade:5184 -msgid " ab)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8001 +msgid "3PWM base frequency:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2372 -#: src/emc/usr_intf/pncconf/pncconf.glade:3321 -#: src/emc/usr_intf/pncconf/pncconf.glade:4202 -#: src/emc/usr_intf/pncconf/pncconf.glade:5083 -msgid " ac)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8036 +msgid "Mesa parport address:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2383 -#: src/emc/usr_intf/pncconf/pncconf.glade:3311 -#: src/emc/usr_intf/pncconf/pncconf.glade:4192 -#: src/emc/usr_intf/pncconf/pncconf.glade:5073 -msgid " bc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8047 +msgid "Firmware:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2547 -#: src/emc/usr_intf/pncconf/pncconf.glade:3332 -#: src/emc/usr_intf/pncconf/pncconf.glade:4213 -#: src/emc/usr_intf/pncconf/pncconf.glade:5094 -msgid " c)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8069 +msgid "SVST8_4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2570 -#: src/emc/usr_intf/pncconf/pncconf.glade:2966 -#: src/emc/usr_intf/pncconf/pncconf.glade:3847 -#: src/emc/usr_intf/pncconf/pncconf.glade:4728 -msgid " ad)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8094 +msgid "Num of 3 pwm generators: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2583 -#: src/emc/usr_intf/pncconf/pncconf.glade:2953 -#: src/emc/usr_intf/pncconf/pncconf.glade:3834 -#: src/emc/usr_intf/pncconf/pncconf.glade:4715 -msgid " bd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8128 +msgid "Total number of pins:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2596 -#: src/emc/usr_intf/pncconf/pncconf.glade:2927 -#: src/emc/usr_intf/pncconf/pncconf.glade:3808 -#: src/emc/usr_intf/pncconf/pncconf.glade:4689 -msgid " cd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8153 +msgid "" +"Accept components\n" +" Changes" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2609 -#: src/emc/usr_intf/pncconf/pncconf.glade:2991 -#: src/emc/usr_intf/pncconf/pncconf.glade:3872 -#: src/emc/usr_intf/pncconf/pncconf.glade:4753 -msgid " acd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8168 +msgid "PWM base frequency:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2622 -#: src/emc/usr_intf/pncconf/pncconf.glade:3004 -#: src/emc/usr_intf/pncconf/pncconf.glade:3885 -#: src/emc/usr_intf/pncconf/pncconf.glade:4766 -msgid " bcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8179 +msgid "PDM base frequency:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2635 -#: src/emc/usr_intf/pncconf/pncconf.glade:3017 -#: src/emc/usr_intf/pncconf/pncconf.glade:3898 -#: src/emc/usr_intf/pncconf/pncconf.glade:4779 -msgid " abcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8190 +msgid "Watchdog timeout:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2648 -#: src/emc/usr_intf/pncconf/pncconf.glade:2979 -#: src/emc/usr_intf/pncconf/pncconf.glade:3860 -#: src/emc/usr_intf/pncconf/pncconf.glade:4741 -msgid " d)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8307 +msgid "Num of encoders:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2664 -#, fuzzy -msgid "increments" -msgstr "Pričítať" - -#: src/emc/usr_intf/pncconf/pncconf.glade:2708 -msgid "External MPG Jogging" +#: src/emc/usr_intf/pncconf/pncconf.glade:8318 +msgid "Num of pwm generators:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2739 -#: src/emc/usr_intf/pncconf/pncconf.glade:3620 -#: src/emc/usr_intf/pncconf/pncconf.glade:4501 -msgid "Use MPG " +#: src/emc/usr_intf/pncconf/pncconf.glade:8329 +msgid "Num of step generators: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2752 -#: src/emc/usr_intf/pncconf/pncconf.glade:3633 -#: src/emc/usr_intf/pncconf/pncconf.glade:4514 -msgid "use switches" +#: src/emc/usr_intf/pncconf/pncconf.glade:8340 +msgid "Board name" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2838 -#: src/emc/usr_intf/pncconf/pncconf.glade:3733 -#: src/emc/usr_intf/pncconf/pncconf.glade:4614 -msgid "ignore all-inputs false" +#: src/emc/usr_intf/pncconf/pncconf.glade:8346 +msgid "Num of Smart Serial Ports:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2853 -#: src/emc/usr_intf/pncconf/pncconf.glade:3748 -#: src/emc/usr_intf/pncconf/pncconf.glade:4629 -msgid "use graycode" +#: src/emc/usr_intf/pncconf/pncconf.glade:8393 +msgid "7i29 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2940 -#: src/emc/usr_intf/pncconf/pncconf.glade:3821 -#: src/emc/usr_intf/pncconf/pncconf.glade:4702 -msgid " abd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8402 +msgid "7i30 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:3555 -#: src/emc/usr_intf/pncconf/pncconf.glade:4436 -#: src/emc/usr_intf/pncconf/pncconf.glade:5317 -#, fuzzy -msgid "Increments" -msgstr "Pričítať" +#: src/emc/usr_intf/pncconf/pncconf.glade:8414 +msgid "7i33 daughter board" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:3589 -#, fuzzy -msgid "External Feed Override" -msgstr "Nastav prechod posunu" +#: src/emc/usr_intf/pncconf/pncconf.glade:8426 +msgid "7i40 daughter board" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:4470 -msgid "Max Velocity Override" +#: src/emc/usr_intf/pncconf/pncconf.glade:8438 +msgid "7i48 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5351 -#, fuzzy -msgid "External Spindle Override" -msgstr "Nastaviť zmenu vretena" +#: src/emc/usr_intf/pncconf/pncconf.glade:8453 +msgid "Sanity Checks" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5379 -#, fuzzy -msgid "GUI configuration" -msgstr "Moje konfigurácie" +#: src/emc/usr_intf/pncconf/pncconf.glade:8482 +msgid "Num of channels: " +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5398 -msgid "Frontend" +#: src/emc/usr_intf/pncconf/pncconf.glade:8494 +msgid "Num of resolvers:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5557 +#: src/emc/usr_intf/pncconf/pncconf.glade:8528 #, fuzzy msgid "" -"Commanded\n" -"Actual" -msgstr "Rozkaz zadaný" +"Configuration\n" +" Page" +msgstr "Nastavenie HAL" -#: src/emc/usr_intf/pncconf/pncconf.glade:5570 -#, fuzzy +#: src/emc/usr_intf/pncconf/pncconf.glade:8721 +#: src/emc/usr_intf/pncconf/pncconf.glade:8773 +#: src/emc/usr_intf/pncconf/pncconf.glade:9093 +#: src/emc/usr_intf/pncconf/pncconf.glade:9145 +#: src/emc/usr_intf/pncconf/pncconf.glade:9197 +#: src/emc/usr_intf/pncconf/pncconf.glade:9249 +#: src/emc/usr_intf/pncconf/pncconf.glade:9301 +#: src/emc/usr_intf/pncconf/pncconf.glade:9353 +#: src/emc/usr_intf/pncconf/pncconf.glade:9405 +#: src/emc/usr_intf/pncconf/pncconf.glade:9457 +#: src/emc/usr_intf/pncconf/pncconf.glade:9509 +#: src/emc/usr_intf/pncconf/pncconf.glade:9561 +#: src/emc/usr_intf/pncconf/pncconf.glade:10400 +#: src/emc/usr_intf/pncconf/pncconf.glade:10453 +#: src/emc/usr_intf/pncconf/pncconf.glade:10505 +#: src/emc/usr_intf/pncconf/pncconf.glade:10557 +#: src/emc/usr_intf/pncconf/pncconf.glade:11335 +#: src/emc/usr_intf/pncconf/pncconf.glade:11387 +#: src/emc/usr_intf/pncconf/pncconf.glade:12047 +#: src/emc/usr_intf/pncconf/pncconf.glade:12099 +#: src/emc/usr_intf/pncconf/pncconf.glade:12151 +#: src/emc/usr_intf/pncconf/pncconf.glade:12203 +#: src/emc/usr_intf/pncconf/pncconf.glade:13042 +#: src/emc/usr_intf/pncconf/pncconf.glade:13094 +#: src/emc/usr_intf/pncconf/pncconf.glade:13146 +#: src/emc/usr_intf/pncconf/pncconf.glade:13198 +#: src/emc/usr_intf/pncconf/pncconf.glade:13250 +#: src/emc/usr_intf/pncconf/pncconf.glade:13302 +#: src/emc/usr_intf/pncconf/pncconf.glade:13354 +#: src/emc/usr_intf/pncconf/pncconf.glade:13406 +#: src/emc/usr_intf/pncconf/pncconf.glade:13458 +#: src/emc/usr_intf/pncconf/pncconf.glade:13510 +#: src/emc/usr_intf/pncconf/pncconf.glade:14556 +#: src/emc/usr_intf/pncconf/pncconf.glade:14608 +#: src/emc/usr_intf/pncconf/pncconf.glade:14660 +#: src/emc/usr_intf/pncconf/pncconf.glade:14712 +#: src/emc/usr_intf/pncconf/pncconf.glade:15539 +#: src/emc/usr_intf/pncconf/pncconf.glade:15591 +#: src/emc/usr_intf/pncconf/pncconf.glade:15643 +#: src/emc/usr_intf/pncconf/pncconf.glade:15695 +#: src/emc/usr_intf/pncconf/pncconf.glade:15747 +#: src/emc/usr_intf/pncconf/pncconf.glade:15799 +#: src/emc/usr_intf/pncconf/pncconf.glade:15851 +#: src/emc/usr_intf/pncconf/pncconf.glade:15903 +#: src/emc/usr_intf/pncconf/pncconf.glade:15955 +#: src/emc/usr_intf/pncconf/pncconf.glade:16007 +#: src/emc/usr_intf/pncconf/pncconf.glade:16059 +#: src/emc/usr_intf/pncconf/pncconf.glade:16111 +#: src/emc/usr_intf/pncconf/pncconf.glade:16540 +#: src/emc/usr_intf/pncconf/pncconf.glade:16592 +#: src/emc/usr_intf/pncconf/pncconf.glade:17253 +#: src/emc/usr_intf/pncconf/pncconf.glade:17305 +#: src/emc/usr_intf/pncconf/pncconf.glade:17357 +#: src/emc/usr_intf/pncconf/pncconf.glade:18196 +#: src/emc/usr_intf/pncconf/pncconf.glade:18248 +#: src/emc/usr_intf/pncconf/pncconf.glade:18300 +#: src/emc/usr_intf/pncconf/pncconf.glade:18352 +#: src/emc/usr_intf/pncconf/pncconf.glade:18404 +#: src/emc/usr_intf/pncconf/pncconf.glade:18456 +#: src/emc/usr_intf/pncconf/pncconf.glade:18508 +#: src/emc/usr_intf/pncconf/pncconf.glade:18560 +#: src/emc/usr_intf/pncconf/pncconf.glade:18612 +#: src/emc/usr_intf/pncconf/pncconf.glade:18664 +#: src/emc/usr_intf/pncconf/pncconf.glade:18716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26612 +#: src/emc/usr_intf/pncconf/pncconf.glade:26664 +#: src/emc/usr_intf/pncconf/pncconf.glade:26716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26768 +#: src/emc/usr_intf/pncconf/pncconf.glade:26820 +#: src/emc/usr_intf/pncconf/pncconf.glade:26872 +#: src/emc/usr_intf/pncconf/pncconf.glade:26924 +#: src/emc/usr_intf/pncconf/pncconf.glade:26976 +#: src/emc/usr_intf/pncconf/pncconf.glade:27028 +#: src/emc/usr_intf/pncconf/pncconf.glade:27080 +#: src/emc/usr_intf/pncconf/pncconf.glade:27132 +#: src/emc/usr_intf/pncconf/pncconf.glade:27184 +#: src/emc/usr_intf/pncconf/pncconf.glade:28011 +#: src/emc/usr_intf/pncconf/pncconf.glade:28063 +#: src/emc/usr_intf/pncconf/pncconf.glade:28115 +#: src/emc/usr_intf/pncconf/pncconf.glade:28167 +#: src/emc/usr_intf/pncconf/pncconf.glade:29507 +#: src/emc/usr_intf/pncconf/pncconf.glade:29559 +#: src/emc/usr_intf/pncconf/pncconf.glade:29611 +#: src/emc/usr_intf/pncconf/pncconf.glade:29663 +#: src/emc/usr_intf/pncconf/pncconf.glade:30490 +#: src/emc/usr_intf/pncconf/pncconf.glade:30542 +#: src/emc/usr_intf/pncconf/pncconf.glade:30594 +#: src/emc/usr_intf/pncconf/pncconf.glade:30646 +#: src/emc/usr_intf/pncconf/pncconf.glade:30698 +#: src/emc/usr_intf/pncconf/pncconf.glade:30750 +#: src/emc/usr_intf/pncconf/pncconf.glade:30802 +#: src/emc/usr_intf/pncconf/pncconf.glade:30854 +#: src/emc/usr_intf/pncconf/pncconf.glade:30906 +#: src/emc/usr_intf/pncconf/pncconf.glade:30958 +#: src/emc/usr_intf/pncconf/pncconf.glade:31010 +#: src/emc/usr_intf/pncconf/pncconf.glade:31062 +#: src/emc/usr_intf/pncconf/pncconf.glade:31878 +#: src/emc/usr_intf/pncconf/pncconf.glade:31930 +#: src/emc/usr_intf/pncconf/pncconf.glade:31982 +#: src/emc/usr_intf/pncconf/pncconf.glade:32034 +#: src/emc/usr_intf/pncconf/pncconf.glade:32086 +#: src/emc/usr_intf/pncconf/pncconf.glade:32138 +#: src/emc/usr_intf/pncconf/pncconf.glade:32190 +#: src/emc/usr_intf/pncconf/pncconf.glade:32242 +#: src/emc/usr_intf/pncconf/pncconf.glade:32294 +#: src/emc/usr_intf/pncconf/pncconf.glade:32346 +#: src/emc/usr_intf/pncconf/pncconf.glade:32398 +#: src/emc/usr_intf/pncconf/pncconf.glade:32450 +#: src/emc/usr_intf/pncconf/pncconf.glade:33852 +#: src/emc/usr_intf/pncconf/pncconf.glade:33904 +#: src/emc/usr_intf/pncconf/pncconf.glade:33956 +#: src/emc/usr_intf/pncconf/pncconf.glade:34008 +#: src/emc/usr_intf/pncconf/pncconf.glade:34835 +#: src/emc/usr_intf/pncconf/pncconf.glade:34887 +#: src/emc/usr_intf/pncconf/pncconf.glade:34939 +#: src/emc/usr_intf/pncconf/pncconf.glade:34991 +#: src/emc/usr_intf/pncconf/pncconf.glade:35043 +#: src/emc/usr_intf/pncconf/pncconf.glade:35095 +#: src/emc/usr_intf/pncconf/pncconf.glade:35147 +#: src/emc/usr_intf/pncconf/pncconf.glade:35199 +#: src/emc/usr_intf/pncconf/pncconf.glade:35251 +#: src/emc/usr_intf/pncconf/pncconf.glade:35303 +#: src/emc/usr_intf/pncconf/pncconf.glade:35355 +#: src/emc/usr_intf/pncconf/pncconf.glade:35407 +#: src/emc/usr_intf/pncconf/pncconf.glade:36096 +#: src/emc/usr_intf/pncconf/pncconf.glade:36148 +#: src/emc/usr_intf/pncconf/pncconf.glade:36200 +#: src/emc/usr_intf/pncconf/pncconf.glade:36252 +#: src/emc/usr_intf/pncconf/pncconf.glade:36304 +#: src/emc/usr_intf/pncconf/pncconf.glade:36356 +#: src/emc/usr_intf/pncconf/pncconf.glade:36408 +#: src/emc/usr_intf/pncconf/pncconf.glade:36460 +#: src/emc/usr_intf/pncconf/pncconf.glade:36512 +#: src/emc/usr_intf/pncconf/pncconf.glade:36564 +#: src/emc/usr_intf/pncconf/pncconf.glade:36616 +#: src/emc/usr_intf/pncconf/pncconf.glade:36668 +#: src/emc/usr_intf/pncconf/pncconf.glade:37495 +#: src/emc/usr_intf/pncconf/pncconf.glade:37547 +#: src/emc/usr_intf/pncconf/pncconf.glade:37599 +#: src/emc/usr_intf/pncconf/pncconf.glade:37651 +#: src/emc/usr_intf/pncconf/pncconf.glade:39168 +#: src/emc/usr_intf/pncconf/pncconf.glade:39220 +#: src/emc/usr_intf/pncconf/pncconf.glade:39272 +#: src/emc/usr_intf/pncconf/pncconf.glade:39324 +#: src/emc/usr_intf/pncconf/pncconf.glade:39376 +#: src/emc/usr_intf/pncconf/pncconf.glade:39428 +#: src/emc/usr_intf/pncconf/pncconf.glade:39480 +#: src/emc/usr_intf/pncconf/pncconf.glade:39532 +#: src/emc/usr_intf/pncconf/pncconf.glade:39584 +#: src/emc/usr_intf/pncconf/pncconf.glade:39636 +#: src/emc/usr_intf/pncconf/pncconf.glade:39688 +#: src/emc/usr_intf/pncconf/pncconf.glade:39740 +#: src/emc/usr_intf/pncconf/pncconf.glade:40456 +#: src/emc/usr_intf/pncconf/pncconf.glade:40508 +#: src/emc/usr_intf/pncconf/pncconf.glade:40560 +#: src/emc/usr_intf/pncconf/pncconf.glade:40612 +#: src/emc/usr_intf/pncconf/pncconf.glade:40664 +#: src/emc/usr_intf/pncconf/pncconf.glade:40716 +#: src/emc/usr_intf/pncconf/pncconf.glade:40768 +#: src/emc/usr_intf/pncconf/pncconf.glade:40820 +#: src/emc/usr_intf/pncconf/pncconf.glade:40872 +#: src/emc/usr_intf/pncconf/pncconf.glade:40924 +#: src/emc/usr_intf/pncconf/pncconf.glade:40976 +#: src/emc/usr_intf/pncconf/pncconf.glade:41028 +#: src/emc/usr_intf/pncconf/pncconf.glade:41855 +#: src/emc/usr_intf/pncconf/pncconf.glade:41907 +#: src/emc/usr_intf/pncconf/pncconf.glade:41959 +#: src/emc/usr_intf/pncconf/pncconf.glade:42011 +#: src/emc/usr_intf/pncconf/pncconf.glade:43351 +#: src/emc/usr_intf/pncconf/pncconf.glade:43403 +#: src/emc/usr_intf/pncconf/pncconf.glade:43455 +#: src/emc/usr_intf/pncconf/pncconf.glade:43507 +#: src/emc/usr_intf/pncconf/pncconf.glade:44334 +#: src/emc/usr_intf/pncconf/pncconf.glade:44386 +#: src/emc/usr_intf/pncconf/pncconf.glade:44438 +#: src/emc/usr_intf/pncconf/pncconf.glade:44490 +#: src/emc/usr_intf/pncconf/pncconf.glade:44542 +#: src/emc/usr_intf/pncconf/pncconf.glade:44594 +#: src/emc/usr_intf/pncconf/pncconf.glade:44646 +#: src/emc/usr_intf/pncconf/pncconf.glade:44698 +#: src/emc/usr_intf/pncconf/pncconf.glade:44750 +#: src/emc/usr_intf/pncconf/pncconf.glade:44802 +#: src/emc/usr_intf/pncconf/pncconf.glade:44854 +#: src/emc/usr_intf/pncconf/pncconf.glade:44906 +#: src/emc/usr_intf/pncconf/pncconf.glade:45711 +#: src/emc/usr_intf/pncconf/pncconf.glade:45763 +#: src/emc/usr_intf/pncconf/pncconf.glade:45815 +#: src/emc/usr_intf/pncconf/pncconf.glade:45867 +#: src/emc/usr_intf/pncconf/pncconf.glade:45919 +#: src/emc/usr_intf/pncconf/pncconf.glade:45971 +#: src/emc/usr_intf/pncconf/pncconf.glade:46023 +#: src/emc/usr_intf/pncconf/pncconf.glade:46075 +#: src/emc/usr_intf/pncconf/pncconf.glade:46127 +#: src/emc/usr_intf/pncconf/pncconf.glade:46179 +#: src/emc/usr_intf/pncconf/pncconf.glade:46231 +#: src/emc/usr_intf/pncconf/pncconf.glade:46283 +#: src/emc/usr_intf/pncconf/pncconf.glade:47379 +#: src/emc/usr_intf/pncconf/pncconf.glade:47431 +#: src/emc/usr_intf/pncconf/pncconf.glade:47483 +#: src/emc/usr_intf/pncconf/pncconf.glade:47535 +#: src/emc/usr_intf/pncconf/pncconf.glade:47587 +#: src/emc/usr_intf/pncconf/pncconf.glade:47639 +#: src/emc/usr_intf/pncconf/pncconf.glade:47691 +#: src/emc/usr_intf/pncconf/pncconf.glade:47743 +#: src/emc/usr_intf/pncconf/pncconf.glade:47795 +#: src/emc/usr_intf/pncconf/pncconf.glade:47847 +#: src/emc/usr_intf/pncconf/pncconf.glade:47899 +#: src/emc/usr_intf/pncconf/pncconf.glade:47951 +#: src/emc/usr_intf/pncconf/pncconf.glade:48778 +#: src/emc/usr_intf/pncconf/pncconf.glade:48830 +#: src/emc/usr_intf/pncconf/pncconf.glade:48882 +#: src/emc/usr_intf/pncconf/pncconf.glade:48934 +#: src/emc/usr_intf/pncconf/pncconf.glade:50274 +#: src/emc/usr_intf/pncconf/pncconf.glade:50326 +#: src/emc/usr_intf/pncconf/pncconf.glade:50378 +#: src/emc/usr_intf/pncconf/pncconf.glade:50430 +#: src/emc/usr_intf/pncconf/pncconf.glade:51257 +#: src/emc/usr_intf/pncconf/pncconf.glade:51309 +#: src/emc/usr_intf/pncconf/pncconf.glade:51361 +#: src/emc/usr_intf/pncconf/pncconf.glade:51413 +#: src/emc/usr_intf/pncconf/pncconf.glade:51465 +#: src/emc/usr_intf/pncconf/pncconf.glade:51517 +#: src/emc/usr_intf/pncconf/pncconf.glade:51569 +#: src/emc/usr_intf/pncconf/pncconf.glade:51621 +#: src/emc/usr_intf/pncconf/pncconf.glade:51673 +#: src/emc/usr_intf/pncconf/pncconf.glade:51725 +#: src/emc/usr_intf/pncconf/pncconf.glade:51777 +#: src/emc/usr_intf/pncconf/pncconf.glade:51829 +#: src/emc/usr_intf/pncconf/pncconf.glade:52634 +#: src/emc/usr_intf/pncconf/pncconf.glade:52686 +#: src/emc/usr_intf/pncconf/pncconf.glade:52738 +#: src/emc/usr_intf/pncconf/pncconf.glade:52790 +#: src/emc/usr_intf/pncconf/pncconf.glade:52842 +#: src/emc/usr_intf/pncconf/pncconf.glade:52894 +#: src/emc/usr_intf/pncconf/pncconf.glade:52946 +#: src/emc/usr_intf/pncconf/pncconf.glade:52998 +#: src/emc/usr_intf/pncconf/pncconf.glade:53050 +#: src/emc/usr_intf/pncconf/pncconf.glade:53102 +#: src/emc/usr_intf/pncconf/pncconf.glade:53154 +#: src/emc/usr_intf/pncconf/pncconf.glade:53206 +#: src/emc/usr_intf/pncconf/pncconf.glade:54302 +#: src/emc/usr_intf/pncconf/pncconf.glade:54354 +#: src/emc/usr_intf/pncconf/pncconf.glade:54406 +#: src/emc/usr_intf/pncconf/pncconf.glade:54458 +#: src/emc/usr_intf/pncconf/pncconf.glade:54510 +#: src/emc/usr_intf/pncconf/pncconf.glade:54562 +#: src/emc/usr_intf/pncconf/pncconf.glade:54614 +#: src/emc/usr_intf/pncconf/pncconf.glade:54666 +#: src/emc/usr_intf/pncconf/pncconf.glade:54718 +#: src/emc/usr_intf/pncconf/pncconf.glade:54770 +#: src/emc/usr_intf/pncconf/pncconf.glade:54822 +#: src/emc/usr_intf/pncconf/pncconf.glade:54874 +#: src/emc/usr_intf/pncconf/pncconf.glade:55701 +#: src/emc/usr_intf/pncconf/pncconf.glade:55753 +#: src/emc/usr_intf/pncconf/pncconf.glade:55805 +#: src/emc/usr_intf/pncconf/pncconf.glade:55857 +#: src/emc/usr_intf/pncconf/pncconf.glade:57197 +#: src/emc/usr_intf/pncconf/pncconf.glade:57249 +#: src/emc/usr_intf/pncconf/pncconf.glade:57301 +#: src/emc/usr_intf/pncconf/pncconf.glade:57353 +#: src/emc/usr_intf/pncconf/pncconf.glade:58180 +#: src/emc/usr_intf/pncconf/pncconf.glade:58232 +#: src/emc/usr_intf/pncconf/pncconf.glade:58284 +#: src/emc/usr_intf/pncconf/pncconf.glade:58336 +#: src/emc/usr_intf/pncconf/pncconf.glade:58388 +#: src/emc/usr_intf/pncconf/pncconf.glade:58440 +#: src/emc/usr_intf/pncconf/pncconf.glade:58492 +#: src/emc/usr_intf/pncconf/pncconf.glade:58544 +#: src/emc/usr_intf/pncconf/pncconf.glade:58596 +#: src/emc/usr_intf/pncconf/pncconf.glade:58648 +#: src/emc/usr_intf/pncconf/pncconf.glade:58700 +#: src/emc/usr_intf/pncconf/pncconf.glade:58752 +#: src/emc/usr_intf/pncconf/pncconf.glade:59557 +#: src/emc/usr_intf/pncconf/pncconf.glade:59609 +#: src/emc/usr_intf/pncconf/pncconf.glade:59661 +#: src/emc/usr_intf/pncconf/pncconf.glade:59713 +#: src/emc/usr_intf/pncconf/pncconf.glade:59765 +#: src/emc/usr_intf/pncconf/pncconf.glade:59817 +#: src/emc/usr_intf/pncconf/pncconf.glade:59869 +#: src/emc/usr_intf/pncconf/pncconf.glade:59921 +#: src/emc/usr_intf/pncconf/pncconf.glade:59973 +#: src/emc/usr_intf/pncconf/pncconf.glade:60025 +#: src/emc/usr_intf/pncconf/pncconf.glade:60077 +#: src/emc/usr_intf/pncconf/pncconf.glade:60129 msgid "" -"Machine\n" -"Relative\n" -msgstr "pomerný" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5608 -#, fuzzy -msgid "Max Feed Override" -msgstr "Začať posun:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5667 -#, fuzzy -msgid "Min Spindle Override" -msgstr "Nastaviť zmenu vretena" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5691 -#, fuzzy -msgid "Max Spindle Override " -msgstr "Nastaviť zmenu vretena" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5702 -#, fuzzy -msgid "Position_feedback" -msgstr "Typ polohy" +"ESTOP IN\n" +"Spindle PPR\n" +"Spindle A \n" +"Spindle B \n" +"Home X \n" +"Home Y \n" +"Home Z\n" +"Home A\n" +"Minimum Limit + Home X \n" +"Minimum Limit + Home Y \n" +"Minimum Limit + Home Z \n" +"Minimum Limit + Home A\n" +"Maximum Limit + Home X \n" +"Maximum Limit + Home Y \n" +"Maximum Limit + Home Z \n" +"Maximum Limit + Home A\n" +"Both Limit + Home X \n" +"Both Limit + Home Y \n" +"Both Limit + Home Z \n" +"Both Limit + Home A\n" +"Minimum Limit X \n" +"Minimum Limit Y \n" +"Minimum Limit Z \n" +"Minimum Limit A\n" +"Maximum Limit X \n" +"Maximum Limit Y \n" +"Maximum Limit Z \n" +"Maximum Limit A\n" +"Both Limit X \n" +"Both Limit Y \n" +"Both Limit Z \n" +"Both Limit A\n" +"All limits\n" +"All home\n" +"Unused" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5713 +#: src/emc/usr_intf/pncconf/pncconf.glade:8825 +#: src/emc/usr_intf/pncconf/pncconf.glade:9081 +#: src/emc/usr_intf/pncconf/pncconf.glade:13563 +#: src/emc/usr_intf/pncconf/pncconf.glade:13818 +#: src/emc/usr_intf/pncconf/pncconf.glade:16164 +#: src/emc/usr_intf/pncconf/pncconf.glade:16410 +#: src/emc/usr_intf/pncconf/pncconf.glade:18769 +#: src/emc/usr_intf/pncconf/pncconf.glade:19024 +#: src/emc/usr_intf/pncconf/pncconf.glade:20571 +#: src/emc/usr_intf/pncconf/pncconf.glade:20820 +#: src/emc/usr_intf/pncconf/pncconf.glade:20949 +#: src/emc/usr_intf/pncconf/pncconf.glade:21199 +#: src/emc/usr_intf/pncconf/pncconf.glade:22745 +#: src/emc/usr_intf/pncconf/pncconf.glade:22995 +#: src/emc/usr_intf/pncconf/pncconf.glade:24541 +#: src/emc/usr_intf/pncconf/pncconf.glade:24791 +#: src/emc/usr_intf/pncconf/pncconf.glade:26353 +#: src/emc/usr_intf/pncconf/pncconf.glade:26600 +#: src/emc/usr_intf/pncconf/pncconf.glade:31115 +#: src/emc/usr_intf/pncconf/pncconf.glade:31361 +#: src/emc/usr_intf/pncconf/pncconf.glade:31621 +#: src/emc/usr_intf/pncconf/pncconf.glade:35460 +#: src/emc/usr_intf/pncconf/pncconf.glade:35706 +#: src/emc/usr_intf/pncconf/pncconf.glade:35837 +#: src/emc/usr_intf/pncconf/pncconf.glade:36084 +#: src/emc/usr_intf/pncconf/pncconf.glade:40037 +#: src/emc/usr_intf/pncconf/pncconf.glade:40197 +#: src/emc/usr_intf/pncconf/pncconf.glade:40444 +#: src/emc/usr_intf/pncconf/pncconf.glade:44959 +#: src/emc/usr_intf/pncconf/pncconf.glade:45205 +#: src/emc/usr_intf/pncconf/pncconf.glade:45454 +#: src/emc/usr_intf/pncconf/pncconf.glade:47120 +#: src/emc/usr_intf/pncconf/pncconf.glade:47367 +#: src/emc/usr_intf/pncconf/pncconf.glade:51882 +#: src/emc/usr_intf/pncconf/pncconf.glade:52128 +#: src/emc/usr_intf/pncconf/pncconf.glade:52377 +#: src/emc/usr_intf/pncconf/pncconf.glade:54043 +#: src/emc/usr_intf/pncconf/pncconf.glade:54290 +#: src/emc/usr_intf/pncconf/pncconf.glade:58805 +#: src/emc/usr_intf/pncconf/pncconf.glade:59051 +#: src/emc/usr_intf/pncconf/pncconf.glade:59300 #, fuzzy -msgid "Position_offset" +msgid "Pin Type" msgstr "Typ polohy" -#: src/emc/usr_intf/pncconf/pncconf.glade:5721 -msgid "General GUI Defaults" +#: src/emc/usr_intf/pncconf/pncconf.glade:8838 +#: src/emc/usr_intf/pncconf/pncconf.glade:8900 +#: src/emc/usr_intf/pncconf/pncconf.glade:13743 +#: src/emc/usr_intf/pncconf/pncconf.glade:13806 +#: src/emc/usr_intf/pncconf/pncconf.glade:16335 +#: src/emc/usr_intf/pncconf/pncconf.glade:16398 +#: src/emc/usr_intf/pncconf/pncconf.glade:18949 +#: src/emc/usr_intf/pncconf/pncconf.glade:19012 +#: src/emc/usr_intf/pncconf/pncconf.glade:20751 +#: src/emc/usr_intf/pncconf/pncconf.glade:20808 +#: src/emc/usr_intf/pncconf/pncconf.glade:20962 +#: src/emc/usr_intf/pncconf/pncconf.glade:21018 +#: src/emc/usr_intf/pncconf/pncconf.glade:22758 +#: src/emc/usr_intf/pncconf/pncconf.glade:22814 +#: src/emc/usr_intf/pncconf/pncconf.glade:24554 +#: src/emc/usr_intf/pncconf/pncconf.glade:24610 +#: src/emc/usr_intf/pncconf/pncconf.glade:26366 +#: src/emc/usr_intf/pncconf/pncconf.glade:26428 +#: src/emc/usr_intf/pncconf/pncconf.glade:31286 +#: src/emc/usr_intf/pncconf/pncconf.glade:31349 +#: src/emc/usr_intf/pncconf/pncconf.glade:31634 +#: src/emc/usr_intf/pncconf/pncconf.glade:35631 +#: src/emc/usr_intf/pncconf/pncconf.glade:35694 +#: src/emc/usr_intf/pncconf/pncconf.glade:35850 +#: src/emc/usr_intf/pncconf/pncconf.glade:35912 +#: src/emc/usr_intf/pncconf/pncconf.glade:40025 +#: src/emc/usr_intf/pncconf/pncconf.glade:40210 +#: src/emc/usr_intf/pncconf/pncconf.glade:40272 +#: src/emc/usr_intf/pncconf/pncconf.glade:45130 +#: src/emc/usr_intf/pncconf/pncconf.glade:45193 +#: src/emc/usr_intf/pncconf/pncconf.glade:45467 +#: src/emc/usr_intf/pncconf/pncconf.glade:47133 +#: src/emc/usr_intf/pncconf/pncconf.glade:47195 +#: src/emc/usr_intf/pncconf/pncconf.glade:52053 +#: src/emc/usr_intf/pncconf/pncconf.glade:52116 +#: src/emc/usr_intf/pncconf/pncconf.glade:52390 +#: src/emc/usr_intf/pncconf/pncconf.glade:54056 +#: src/emc/usr_intf/pncconf/pncconf.glade:54118 +#: src/emc/usr_intf/pncconf/pncconf.glade:58976 +#: src/emc/usr_intf/pncconf/pncconf.glade:59039 +#: src/emc/usr_intf/pncconf/pncconf.glade:59313 +msgid "Inv" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5808 -msgid "Force Axis to Maximize" +#: src/emc/usr_intf/pncconf/pncconf.glade:8867 +#: src/emc/usr_intf/pncconf/pncconf.glade:10731 +#: src/emc/usr_intf/pncconf/pncconf.glade:10751 +#: src/emc/usr_intf/pncconf/pncconf.glade:10771 +#: src/emc/usr_intf/pncconf/pncconf.glade:10791 +#: src/emc/usr_intf/pncconf/pncconf.glade:10811 +#: src/emc/usr_intf/pncconf/pncconf.glade:10831 +#: src/emc/usr_intf/pncconf/pncconf.glade:10851 +#: src/emc/usr_intf/pncconf/pncconf.glade:10871 +#: src/emc/usr_intf/pncconf/pncconf.glade:10891 +#: src/emc/usr_intf/pncconf/pncconf.glade:10911 +#: src/emc/usr_intf/pncconf/pncconf.glade:10931 +#: src/emc/usr_intf/pncconf/pncconf.glade:10951 +#: src/emc/usr_intf/pncconf/pncconf.glade:10971 +#: src/emc/usr_intf/pncconf/pncconf.glade:10991 +#: src/emc/usr_intf/pncconf/pncconf.glade:11011 +#: src/emc/usr_intf/pncconf/pncconf.glade:11031 +#: src/emc/usr_intf/pncconf/pncconf.glade:11051 +#: src/emc/usr_intf/pncconf/pncconf.glade:11071 +#: src/emc/usr_intf/pncconf/pncconf.glade:11091 +#: src/emc/usr_intf/pncconf/pncconf.glade:11111 +#: src/emc/usr_intf/pncconf/pncconf.glade:11131 +#: src/emc/usr_intf/pncconf/pncconf.glade:11151 +#: src/emc/usr_intf/pncconf/pncconf.glade:11171 +#: src/emc/usr_intf/pncconf/pncconf.glade:11465 +#: src/emc/usr_intf/pncconf/pncconf.glade:11485 +#: src/emc/usr_intf/pncconf/pncconf.glade:11505 +#: src/emc/usr_intf/pncconf/pncconf.glade:11525 +#: src/emc/usr_intf/pncconf/pncconf.glade:11545 +#: src/emc/usr_intf/pncconf/pncconf.glade:11565 +#: src/emc/usr_intf/pncconf/pncconf.glade:11585 +#: src/emc/usr_intf/pncconf/pncconf.glade:11605 +#: src/emc/usr_intf/pncconf/pncconf.glade:11625 +#: src/emc/usr_intf/pncconf/pncconf.glade:11645 +#: src/emc/usr_intf/pncconf/pncconf.glade:11665 +#: src/emc/usr_intf/pncconf/pncconf.glade:11685 +#: src/emc/usr_intf/pncconf/pncconf.glade:11705 +#: src/emc/usr_intf/pncconf/pncconf.glade:11725 +#: src/emc/usr_intf/pncconf/pncconf.glade:11745 +#: src/emc/usr_intf/pncconf/pncconf.glade:11765 +#: src/emc/usr_intf/pncconf/pncconf.glade:11785 +#: src/emc/usr_intf/pncconf/pncconf.glade:11805 +#: src/emc/usr_intf/pncconf/pncconf.glade:11825 +#: src/emc/usr_intf/pncconf/pncconf.glade:11845 +#: src/emc/usr_intf/pncconf/pncconf.glade:11865 +#: src/emc/usr_intf/pncconf/pncconf.glade:11885 +#: src/emc/usr_intf/pncconf/pncconf.glade:11905 +#: src/emc/usr_intf/pncconf/pncconf.glade:13768 +#: src/emc/usr_intf/pncconf/pncconf.glade:13974 +#: src/emc/usr_intf/pncconf/pncconf.glade:13994 +#: src/emc/usr_intf/pncconf/pncconf.glade:14014 +#: src/emc/usr_intf/pncconf/pncconf.glade:14034 +#: src/emc/usr_intf/pncconf/pncconf.glade:14054 +#: src/emc/usr_intf/pncconf/pncconf.glade:14074 +#: src/emc/usr_intf/pncconf/pncconf.glade:14094 +#: src/emc/usr_intf/pncconf/pncconf.glade:14114 +#: src/emc/usr_intf/pncconf/pncconf.glade:14134 +#: src/emc/usr_intf/pncconf/pncconf.glade:14154 +#: src/emc/usr_intf/pncconf/pncconf.glade:14174 +#: src/emc/usr_intf/pncconf/pncconf.glade:14194 +#: src/emc/usr_intf/pncconf/pncconf.glade:14214 +#: src/emc/usr_intf/pncconf/pncconf.glade:14234 +#: src/emc/usr_intf/pncconf/pncconf.glade:14254 +#: src/emc/usr_intf/pncconf/pncconf.glade:14274 +#: src/emc/usr_intf/pncconf/pncconf.glade:14294 +#: src/emc/usr_intf/pncconf/pncconf.glade:14314 +#: src/emc/usr_intf/pncconf/pncconf.glade:14334 +#: src/emc/usr_intf/pncconf/pncconf.glade:14354 +#: src/emc/usr_intf/pncconf/pncconf.glade:14374 +#: src/emc/usr_intf/pncconf/pncconf.glade:14394 +#: src/emc/usr_intf/pncconf/pncconf.glade:14414 +#: src/emc/usr_intf/pncconf/pncconf.glade:16360 +#: src/emc/usr_intf/pncconf/pncconf.glade:16670 +#: src/emc/usr_intf/pncconf/pncconf.glade:16690 +#: src/emc/usr_intf/pncconf/pncconf.glade:16710 +#: src/emc/usr_intf/pncconf/pncconf.glade:16730 +#: src/emc/usr_intf/pncconf/pncconf.glade:16750 +#: src/emc/usr_intf/pncconf/pncconf.glade:16770 +#: src/emc/usr_intf/pncconf/pncconf.glade:16790 +#: src/emc/usr_intf/pncconf/pncconf.glade:16810 +#: src/emc/usr_intf/pncconf/pncconf.glade:16830 +#: src/emc/usr_intf/pncconf/pncconf.glade:16850 +#: src/emc/usr_intf/pncconf/pncconf.glade:16870 +#: src/emc/usr_intf/pncconf/pncconf.glade:16890 +#: src/emc/usr_intf/pncconf/pncconf.glade:16910 +#: src/emc/usr_intf/pncconf/pncconf.glade:16930 +#: src/emc/usr_intf/pncconf/pncconf.glade:16950 +#: src/emc/usr_intf/pncconf/pncconf.glade:16970 +#: src/emc/usr_intf/pncconf/pncconf.glade:16990 +#: src/emc/usr_intf/pncconf/pncconf.glade:17010 +#: src/emc/usr_intf/pncconf/pncconf.glade:17030 +#: src/emc/usr_intf/pncconf/pncconf.glade:17050 +#: src/emc/usr_intf/pncconf/pncconf.glade:17070 +#: src/emc/usr_intf/pncconf/pncconf.glade:17090 +#: src/emc/usr_intf/pncconf/pncconf.glade:17110 +#: src/emc/usr_intf/pncconf/pncconf.glade:18974 +#: src/emc/usr_intf/pncconf/pncconf.glade:26395 +#: src/emc/usr_intf/pncconf/pncconf.glade:28311 +#: src/emc/usr_intf/pncconf/pncconf.glade:28331 +#: src/emc/usr_intf/pncconf/pncconf.glade:28351 +#: src/emc/usr_intf/pncconf/pncconf.glade:28371 +#: src/emc/usr_intf/pncconf/pncconf.glade:28391 +#: src/emc/usr_intf/pncconf/pncconf.glade:28411 +#: src/emc/usr_intf/pncconf/pncconf.glade:28431 +#: src/emc/usr_intf/pncconf/pncconf.glade:28451 +#: src/emc/usr_intf/pncconf/pncconf.glade:28471 +#: src/emc/usr_intf/pncconf/pncconf.glade:28491 +#: src/emc/usr_intf/pncconf/pncconf.glade:28511 +#: src/emc/usr_intf/pncconf/pncconf.glade:28531 +#: src/emc/usr_intf/pncconf/pncconf.glade:28551 +#: src/emc/usr_intf/pncconf/pncconf.glade:28571 +#: src/emc/usr_intf/pncconf/pncconf.glade:28591 +#: src/emc/usr_intf/pncconf/pncconf.glade:28611 +#: src/emc/usr_intf/pncconf/pncconf.glade:28631 +#: src/emc/usr_intf/pncconf/pncconf.glade:28651 +#: src/emc/usr_intf/pncconf/pncconf.glade:28671 +#: src/emc/usr_intf/pncconf/pncconf.glade:28691 +#: src/emc/usr_intf/pncconf/pncconf.glade:28711 +#: src/emc/usr_intf/pncconf/pncconf.glade:28731 +#: src/emc/usr_intf/pncconf/pncconf.glade:28751 +#: src/emc/usr_intf/pncconf/pncconf.glade:28942 +#: src/emc/usr_intf/pncconf/pncconf.glade:28962 +#: src/emc/usr_intf/pncconf/pncconf.glade:28982 +#: src/emc/usr_intf/pncconf/pncconf.glade:29002 +#: src/emc/usr_intf/pncconf/pncconf.glade:29022 +#: src/emc/usr_intf/pncconf/pncconf.glade:29042 +#: src/emc/usr_intf/pncconf/pncconf.glade:29062 +#: src/emc/usr_intf/pncconf/pncconf.glade:29082 +#: src/emc/usr_intf/pncconf/pncconf.glade:29102 +#: src/emc/usr_intf/pncconf/pncconf.glade:29122 +#: src/emc/usr_intf/pncconf/pncconf.glade:29142 +#: src/emc/usr_intf/pncconf/pncconf.glade:29162 +#: src/emc/usr_intf/pncconf/pncconf.glade:29182 +#: src/emc/usr_intf/pncconf/pncconf.glade:29202 +#: src/emc/usr_intf/pncconf/pncconf.glade:29222 +#: src/emc/usr_intf/pncconf/pncconf.glade:29242 +#: src/emc/usr_intf/pncconf/pncconf.glade:29262 +#: src/emc/usr_intf/pncconf/pncconf.glade:29282 +#: src/emc/usr_intf/pncconf/pncconf.glade:29302 +#: src/emc/usr_intf/pncconf/pncconf.glade:29322 +#: src/emc/usr_intf/pncconf/pncconf.glade:29342 +#: src/emc/usr_intf/pncconf/pncconf.glade:29362 +#: src/emc/usr_intf/pncconf/pncconf.glade:29382 +#: src/emc/usr_intf/pncconf/pncconf.glade:31311 +#: src/emc/usr_intf/pncconf/pncconf.glade:31663 +#: src/emc/usr_intf/pncconf/pncconf.glade:32881 +#: src/emc/usr_intf/pncconf/pncconf.glade:32901 +#: src/emc/usr_intf/pncconf/pncconf.glade:32921 +#: src/emc/usr_intf/pncconf/pncconf.glade:32941 +#: src/emc/usr_intf/pncconf/pncconf.glade:32961 +#: src/emc/usr_intf/pncconf/pncconf.glade:32981 +#: src/emc/usr_intf/pncconf/pncconf.glade:33001 +#: src/emc/usr_intf/pncconf/pncconf.glade:33021 +#: src/emc/usr_intf/pncconf/pncconf.glade:33041 +#: src/emc/usr_intf/pncconf/pncconf.glade:33061 +#: src/emc/usr_intf/pncconf/pncconf.glade:33081 +#: src/emc/usr_intf/pncconf/pncconf.glade:33300 +#: src/emc/usr_intf/pncconf/pncconf.glade:33320 +#: src/emc/usr_intf/pncconf/pncconf.glade:33340 +#: src/emc/usr_intf/pncconf/pncconf.glade:33360 +#: src/emc/usr_intf/pncconf/pncconf.glade:33380 +#: src/emc/usr_intf/pncconf/pncconf.glade:33400 +#: src/emc/usr_intf/pncconf/pncconf.glade:33420 +#: src/emc/usr_intf/pncconf/pncconf.glade:33440 +#: src/emc/usr_intf/pncconf/pncconf.glade:33460 +#: src/emc/usr_intf/pncconf/pncconf.glade:33480 +#: src/emc/usr_intf/pncconf/pncconf.glade:33500 +#: src/emc/usr_intf/pncconf/pncconf.glade:33520 +#: src/emc/usr_intf/pncconf/pncconf.glade:33540 +#: src/emc/usr_intf/pncconf/pncconf.glade:33560 +#: src/emc/usr_intf/pncconf/pncconf.glade:33580 +#: src/emc/usr_intf/pncconf/pncconf.glade:33600 +#: src/emc/usr_intf/pncconf/pncconf.glade:33620 +#: src/emc/usr_intf/pncconf/pncconf.glade:33640 +#: src/emc/usr_intf/pncconf/pncconf.glade:33660 +#: src/emc/usr_intf/pncconf/pncconf.glade:33680 +#: src/emc/usr_intf/pncconf/pncconf.glade:33700 +#: src/emc/usr_intf/pncconf/pncconf.glade:33720 +#: src/emc/usr_intf/pncconf/pncconf.glade:33740 +#: src/emc/usr_intf/pncconf/pncconf.glade:35656 +#: src/emc/usr_intf/pncconf/pncconf.glade:35879 +#: src/emc/usr_intf/pncconf/pncconf.glade:37808 +#: src/emc/usr_intf/pncconf/pncconf.glade:37828 +#: src/emc/usr_intf/pncconf/pncconf.glade:37848 +#: src/emc/usr_intf/pncconf/pncconf.glade:37868 +#: src/emc/usr_intf/pncconf/pncconf.glade:37888 +#: src/emc/usr_intf/pncconf/pncconf.glade:37908 +#: src/emc/usr_intf/pncconf/pncconf.glade:37928 +#: src/emc/usr_intf/pncconf/pncconf.glade:37948 +#: src/emc/usr_intf/pncconf/pncconf.glade:37968 +#: src/emc/usr_intf/pncconf/pncconf.glade:37988 +#: src/emc/usr_intf/pncconf/pncconf.glade:38008 +#: src/emc/usr_intf/pncconf/pncconf.glade:38028 +#: src/emc/usr_intf/pncconf/pncconf.glade:38048 +#: src/emc/usr_intf/pncconf/pncconf.glade:38068 +#: src/emc/usr_intf/pncconf/pncconf.glade:38088 +#: src/emc/usr_intf/pncconf/pncconf.glade:38108 +#: src/emc/usr_intf/pncconf/pncconf.glade:38128 +#: src/emc/usr_intf/pncconf/pncconf.glade:38148 +#: src/emc/usr_intf/pncconf/pncconf.glade:38168 +#: src/emc/usr_intf/pncconf/pncconf.glade:38188 +#: src/emc/usr_intf/pncconf/pncconf.glade:38208 +#: src/emc/usr_intf/pncconf/pncconf.glade:38228 +#: src/emc/usr_intf/pncconf/pncconf.glade:38248 +#: src/emc/usr_intf/pncconf/pncconf.glade:38557 +#: src/emc/usr_intf/pncconf/pncconf.glade:38577 +#: src/emc/usr_intf/pncconf/pncconf.glade:38597 +#: src/emc/usr_intf/pncconf/pncconf.glade:38617 +#: src/emc/usr_intf/pncconf/pncconf.glade:38637 +#: src/emc/usr_intf/pncconf/pncconf.glade:38657 +#: src/emc/usr_intf/pncconf/pncconf.glade:38677 +#: src/emc/usr_intf/pncconf/pncconf.glade:38697 +#: src/emc/usr_intf/pncconf/pncconf.glade:38717 +#: src/emc/usr_intf/pncconf/pncconf.glade:38737 +#: src/emc/usr_intf/pncconf/pncconf.glade:38757 +#: src/emc/usr_intf/pncconf/pncconf.glade:39987 +#: src/emc/usr_intf/pncconf/pncconf.glade:40239 +#: src/emc/usr_intf/pncconf/pncconf.glade:42155 +#: src/emc/usr_intf/pncconf/pncconf.glade:42175 +#: src/emc/usr_intf/pncconf/pncconf.glade:42195 +#: src/emc/usr_intf/pncconf/pncconf.glade:42215 +#: src/emc/usr_intf/pncconf/pncconf.glade:42235 +#: src/emc/usr_intf/pncconf/pncconf.glade:42255 +#: src/emc/usr_intf/pncconf/pncconf.glade:42275 +#: src/emc/usr_intf/pncconf/pncconf.glade:42295 +#: src/emc/usr_intf/pncconf/pncconf.glade:42315 +#: src/emc/usr_intf/pncconf/pncconf.glade:42335 +#: src/emc/usr_intf/pncconf/pncconf.glade:42355 +#: src/emc/usr_intf/pncconf/pncconf.glade:42375 +#: src/emc/usr_intf/pncconf/pncconf.glade:42395 +#: src/emc/usr_intf/pncconf/pncconf.glade:42415 +#: src/emc/usr_intf/pncconf/pncconf.glade:42435 +#: src/emc/usr_intf/pncconf/pncconf.glade:42455 +#: src/emc/usr_intf/pncconf/pncconf.glade:42475 +#: src/emc/usr_intf/pncconf/pncconf.glade:42495 +#: src/emc/usr_intf/pncconf/pncconf.glade:42515 +#: src/emc/usr_intf/pncconf/pncconf.glade:42535 +#: src/emc/usr_intf/pncconf/pncconf.glade:42555 +#: src/emc/usr_intf/pncconf/pncconf.glade:42575 +#: src/emc/usr_intf/pncconf/pncconf.glade:42595 +#: src/emc/usr_intf/pncconf/pncconf.glade:42786 +#: src/emc/usr_intf/pncconf/pncconf.glade:42806 +#: src/emc/usr_intf/pncconf/pncconf.glade:42826 +#: src/emc/usr_intf/pncconf/pncconf.glade:42846 +#: src/emc/usr_intf/pncconf/pncconf.glade:42866 +#: src/emc/usr_intf/pncconf/pncconf.glade:42886 +#: src/emc/usr_intf/pncconf/pncconf.glade:42906 +#: src/emc/usr_intf/pncconf/pncconf.glade:42926 +#: src/emc/usr_intf/pncconf/pncconf.glade:42946 +#: src/emc/usr_intf/pncconf/pncconf.glade:42966 +#: src/emc/usr_intf/pncconf/pncconf.glade:42986 +#: src/emc/usr_intf/pncconf/pncconf.glade:43006 +#: src/emc/usr_intf/pncconf/pncconf.glade:43026 +#: src/emc/usr_intf/pncconf/pncconf.glade:43046 +#: src/emc/usr_intf/pncconf/pncconf.glade:43066 +#: src/emc/usr_intf/pncconf/pncconf.glade:43086 +#: src/emc/usr_intf/pncconf/pncconf.glade:43106 +#: src/emc/usr_intf/pncconf/pncconf.glade:43126 +#: src/emc/usr_intf/pncconf/pncconf.glade:43146 +#: src/emc/usr_intf/pncconf/pncconf.glade:43166 +#: src/emc/usr_intf/pncconf/pncconf.glade:43186 +#: src/emc/usr_intf/pncconf/pncconf.glade:43206 +#: src/emc/usr_intf/pncconf/pncconf.glade:43226 +#: src/emc/usr_intf/pncconf/pncconf.glade:45155 +#: src/emc/usr_intf/pncconf/pncconf.glade:45496 +#: src/emc/usr_intf/pncconf/pncconf.glade:46726 +#: src/emc/usr_intf/pncconf/pncconf.glade:46746 +#: src/emc/usr_intf/pncconf/pncconf.glade:46766 +#: src/emc/usr_intf/pncconf/pncconf.glade:46786 +#: src/emc/usr_intf/pncconf/pncconf.glade:46806 +#: src/emc/usr_intf/pncconf/pncconf.glade:46826 +#: src/emc/usr_intf/pncconf/pncconf.glade:46846 +#: src/emc/usr_intf/pncconf/pncconf.glade:46866 +#: src/emc/usr_intf/pncconf/pncconf.glade:46886 +#: src/emc/usr_intf/pncconf/pncconf.glade:46906 +#: src/emc/usr_intf/pncconf/pncconf.glade:46926 +#: src/emc/usr_intf/pncconf/pncconf.glade:47162 +#: src/emc/usr_intf/pncconf/pncconf.glade:49078 +#: src/emc/usr_intf/pncconf/pncconf.glade:49098 +#: src/emc/usr_intf/pncconf/pncconf.glade:49118 +#: src/emc/usr_intf/pncconf/pncconf.glade:49138 +#: src/emc/usr_intf/pncconf/pncconf.glade:49158 +#: src/emc/usr_intf/pncconf/pncconf.glade:49178 +#: src/emc/usr_intf/pncconf/pncconf.glade:49198 +#: src/emc/usr_intf/pncconf/pncconf.glade:49218 +#: src/emc/usr_intf/pncconf/pncconf.glade:49238 +#: src/emc/usr_intf/pncconf/pncconf.glade:49258 +#: src/emc/usr_intf/pncconf/pncconf.glade:49278 +#: src/emc/usr_intf/pncconf/pncconf.glade:49298 +#: src/emc/usr_intf/pncconf/pncconf.glade:49318 +#: src/emc/usr_intf/pncconf/pncconf.glade:49338 +#: src/emc/usr_intf/pncconf/pncconf.glade:49358 +#: src/emc/usr_intf/pncconf/pncconf.glade:49378 +#: src/emc/usr_intf/pncconf/pncconf.glade:49398 +#: src/emc/usr_intf/pncconf/pncconf.glade:49418 +#: src/emc/usr_intf/pncconf/pncconf.glade:49438 +#: src/emc/usr_intf/pncconf/pncconf.glade:49458 +#: src/emc/usr_intf/pncconf/pncconf.glade:49478 +#: src/emc/usr_intf/pncconf/pncconf.glade:49498 +#: src/emc/usr_intf/pncconf/pncconf.glade:49518 +#: src/emc/usr_intf/pncconf/pncconf.glade:49709 +#: src/emc/usr_intf/pncconf/pncconf.glade:49729 +#: src/emc/usr_intf/pncconf/pncconf.glade:49749 +#: src/emc/usr_intf/pncconf/pncconf.glade:49769 +#: src/emc/usr_intf/pncconf/pncconf.glade:49789 +#: src/emc/usr_intf/pncconf/pncconf.glade:49809 +#: src/emc/usr_intf/pncconf/pncconf.glade:49829 +#: src/emc/usr_intf/pncconf/pncconf.glade:49849 +#: src/emc/usr_intf/pncconf/pncconf.glade:49869 +#: src/emc/usr_intf/pncconf/pncconf.glade:49889 +#: src/emc/usr_intf/pncconf/pncconf.glade:49909 +#: src/emc/usr_intf/pncconf/pncconf.glade:49929 +#: src/emc/usr_intf/pncconf/pncconf.glade:49949 +#: src/emc/usr_intf/pncconf/pncconf.glade:49969 +#: src/emc/usr_intf/pncconf/pncconf.glade:49989 +#: src/emc/usr_intf/pncconf/pncconf.glade:50009 +#: src/emc/usr_intf/pncconf/pncconf.glade:50029 +#: src/emc/usr_intf/pncconf/pncconf.glade:50049 +#: src/emc/usr_intf/pncconf/pncconf.glade:50069 +#: src/emc/usr_intf/pncconf/pncconf.glade:50089 +#: src/emc/usr_intf/pncconf/pncconf.glade:50109 +#: src/emc/usr_intf/pncconf/pncconf.glade:50129 +#: src/emc/usr_intf/pncconf/pncconf.glade:50149 +#: src/emc/usr_intf/pncconf/pncconf.glade:52078 +#: src/emc/usr_intf/pncconf/pncconf.glade:52419 +#: src/emc/usr_intf/pncconf/pncconf.glade:53649 +#: src/emc/usr_intf/pncconf/pncconf.glade:53669 +#: src/emc/usr_intf/pncconf/pncconf.glade:53689 +#: src/emc/usr_intf/pncconf/pncconf.glade:53709 +#: src/emc/usr_intf/pncconf/pncconf.glade:53729 +#: src/emc/usr_intf/pncconf/pncconf.glade:53749 +#: src/emc/usr_intf/pncconf/pncconf.glade:53769 +#: src/emc/usr_intf/pncconf/pncconf.glade:53789 +#: src/emc/usr_intf/pncconf/pncconf.glade:53809 +#: src/emc/usr_intf/pncconf/pncconf.glade:53829 +#: src/emc/usr_intf/pncconf/pncconf.glade:53849 +#: src/emc/usr_intf/pncconf/pncconf.glade:54085 +#: src/emc/usr_intf/pncconf/pncconf.glade:56001 +#: src/emc/usr_intf/pncconf/pncconf.glade:56021 +#: src/emc/usr_intf/pncconf/pncconf.glade:56041 +#: src/emc/usr_intf/pncconf/pncconf.glade:56061 +#: src/emc/usr_intf/pncconf/pncconf.glade:56081 +#: src/emc/usr_intf/pncconf/pncconf.glade:56101 +#: src/emc/usr_intf/pncconf/pncconf.glade:56121 +#: src/emc/usr_intf/pncconf/pncconf.glade:56141 +#: src/emc/usr_intf/pncconf/pncconf.glade:56161 +#: src/emc/usr_intf/pncconf/pncconf.glade:56181 +#: src/emc/usr_intf/pncconf/pncconf.glade:56201 +#: src/emc/usr_intf/pncconf/pncconf.glade:56221 +#: src/emc/usr_intf/pncconf/pncconf.glade:56241 +#: src/emc/usr_intf/pncconf/pncconf.glade:56261 +#: src/emc/usr_intf/pncconf/pncconf.glade:56281 +#: src/emc/usr_intf/pncconf/pncconf.glade:56301 +#: src/emc/usr_intf/pncconf/pncconf.glade:56321 +#: src/emc/usr_intf/pncconf/pncconf.glade:56341 +#: src/emc/usr_intf/pncconf/pncconf.glade:56361 +#: src/emc/usr_intf/pncconf/pncconf.glade:56381 +#: src/emc/usr_intf/pncconf/pncconf.glade:56401 +#: src/emc/usr_intf/pncconf/pncconf.glade:56421 +#: src/emc/usr_intf/pncconf/pncconf.glade:56441 +#: src/emc/usr_intf/pncconf/pncconf.glade:56632 +#: src/emc/usr_intf/pncconf/pncconf.glade:56652 +#: src/emc/usr_intf/pncconf/pncconf.glade:56672 +#: src/emc/usr_intf/pncconf/pncconf.glade:56692 +#: src/emc/usr_intf/pncconf/pncconf.glade:56712 +#: src/emc/usr_intf/pncconf/pncconf.glade:56732 +#: src/emc/usr_intf/pncconf/pncconf.glade:56752 +#: src/emc/usr_intf/pncconf/pncconf.glade:56772 +#: src/emc/usr_intf/pncconf/pncconf.glade:56792 +#: src/emc/usr_intf/pncconf/pncconf.glade:56812 +#: src/emc/usr_intf/pncconf/pncconf.glade:56832 +#: src/emc/usr_intf/pncconf/pncconf.glade:56852 +#: src/emc/usr_intf/pncconf/pncconf.glade:56872 +#: src/emc/usr_intf/pncconf/pncconf.glade:56892 +#: src/emc/usr_intf/pncconf/pncconf.glade:56912 +#: src/emc/usr_intf/pncconf/pncconf.glade:56932 +#: src/emc/usr_intf/pncconf/pncconf.glade:56952 +#: src/emc/usr_intf/pncconf/pncconf.glade:56972 +#: src/emc/usr_intf/pncconf/pncconf.glade:56992 +#: src/emc/usr_intf/pncconf/pncconf.glade:57012 +#: src/emc/usr_intf/pncconf/pncconf.glade:57032 +#: src/emc/usr_intf/pncconf/pncconf.glade:57052 +#: src/emc/usr_intf/pncconf/pncconf.glade:57072 +#: src/emc/usr_intf/pncconf/pncconf.glade:59001 +#: src/emc/usr_intf/pncconf/pncconf.glade:59342 +#: src/emc/usr_intf/pncconf/pncconf.glade:60572 +#: src/emc/usr_intf/pncconf/pncconf.glade:60592 +#: src/emc/usr_intf/pncconf/pncconf.glade:60612 +#: src/emc/usr_intf/pncconf/pncconf.glade:60632 +#: src/emc/usr_intf/pncconf/pncconf.glade:60652 +#: src/emc/usr_intf/pncconf/pncconf.glade:60672 +#: src/emc/usr_intf/pncconf/pncconf.glade:60692 +#: src/emc/usr_intf/pncconf/pncconf.glade:60712 +#: src/emc/usr_intf/pncconf/pncconf.glade:60732 +#: src/emc/usr_intf/pncconf/pncconf.glade:60752 +#: src/emc/usr_intf/pncconf/pncconf.glade:60772 +msgid "" +"GPIO Input\n" +"GPIO Output\n" +"GPIO O Drain\n" +"Encoder\n" +"PWM\n" +"StepGen\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5832 -#: src/emc/usr_intf/pncconf/pncconf.glade:6602 -#: src/emc/usr_intf/pncconf/pncconf.glade:6841 -#: src/emc/usr_intf/pncconf/pncconf.glade:7328 -msgid "H" +#: src/emc/usr_intf/pncconf/pncconf.glade:8913 +#: src/emc/usr_intf/pncconf/pncconf.glade:13730 +#: src/emc/usr_intf/pncconf/pncconf.glade:18936 +#: src/emc/usr_intf/pncconf/pncconf.glade:20738 +#: src/emc/usr_intf/pncconf/pncconf.glade:21031 +#: src/emc/usr_intf/pncconf/pncconf.glade:22827 +#: src/emc/usr_intf/pncconf/pncconf.glade:24623 +msgid " 1:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5866 -#: src/emc/usr_intf/pncconf/pncconf.glade:6568 -#: src/emc/usr_intf/pncconf/pncconf.glade:6875 -#: src/emc/usr_intf/pncconf/pncconf.glade:7294 -msgid "W" +#: src/emc/usr_intf/pncconf/pncconf.glade:8927 +#: src/emc/usr_intf/pncconf/pncconf.glade:13716 +#: src/emc/usr_intf/pncconf/pncconf.glade:18922 +#: src/emc/usr_intf/pncconf/pncconf.glade:20724 +#: src/emc/usr_intf/pncconf/pncconf.glade:21045 +#: src/emc/usr_intf/pncconf/pncconf.glade:22841 +#: src/emc/usr_intf/pncconf/pncconf.glade:24637 +msgid " 3:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5876 -#: src/emc/usr_intf/pncconf/pncconf.glade:6556 -#: src/emc/usr_intf/pncconf/pncconf.glade:6885 -#: src/emc/usr_intf/pncconf/pncconf.glade:7282 -msgid "X" +#: src/emc/usr_intf/pncconf/pncconf.glade:8941 +#: src/emc/usr_intf/pncconf/pncconf.glade:13702 +#: src/emc/usr_intf/pncconf/pncconf.glade:18908 +#: src/emc/usr_intf/pncconf/pncconf.glade:20710 +#: src/emc/usr_intf/pncconf/pncconf.glade:21059 +#: src/emc/usr_intf/pncconf/pncconf.glade:22855 +#: src/emc/usr_intf/pncconf/pncconf.glade:24651 +msgid " 5:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5914 -#: src/emc/usr_intf/pncconf/pncconf.glade:6519 -#: src/emc/usr_intf/pncconf/pncconf.glade:6923 -#: src/emc/usr_intf/pncconf/pncconf.glade:7244 -#, fuzzy -msgid "Position" -msgstr "Typ polohy" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5927 -#: src/emc/usr_intf/pncconf/pncconf.glade:6510 -#: src/emc/usr_intf/pncconf/pncconf.glade:6936 -#: src/emc/usr_intf/pncconf/pncconf.glade:7234 -msgid "size" +#: src/emc/usr_intf/pncconf/pncconf.glade:8955 +#: src/emc/usr_intf/pncconf/pncconf.glade:13688 +#: src/emc/usr_intf/pncconf/pncconf.glade:18894 +#: src/emc/usr_intf/pncconf/pncconf.glade:20696 +#: src/emc/usr_intf/pncconf/pncconf.glade:21073 +#: src/emc/usr_intf/pncconf/pncconf.glade:22869 +#: src/emc/usr_intf/pncconf/pncconf.glade:24665 +msgid " 7:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5942 -#: src/emc/usr_intf/pncconf/pncconf.glade:5952 -#: src/emc/usr_intf/pncconf/pncconf.glade:6158 -msgid "mm / min" +#: src/emc/usr_intf/pncconf/pncconf.glade:8969 +#: src/emc/usr_intf/pncconf/pncconf.glade:13674 +#: src/emc/usr_intf/pncconf/pncconf.glade:18880 +#: src/emc/usr_intf/pncconf/pncconf.glade:20682 +#: src/emc/usr_intf/pncconf/pncconf.glade:21087 +#: src/emc/usr_intf/pncconf/pncconf.glade:22883 +#: src/emc/usr_intf/pncconf/pncconf.glade:24679 +msgid " 9:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5975 -#: src/emc/usr_intf/pncconf/pncconf.glade:5985 -#: src/emc/usr_intf/pncconf/pncconf.glade:5997 -#, fuzzy -msgid "Deg / min" -msgstr "inch" - -#: src/emc/usr_intf/pncconf/pncconf.glade:6010 -msgid "xyzabc" +#: src/emc/usr_intf/pncconf/pncconf.glade:8983 +#: src/emc/usr_intf/pncconf/pncconf.glade:13660 +#: src/emc/usr_intf/pncconf/pncconf.glade:18866 +#: src/emc/usr_intf/pncconf/pncconf.glade:20668 +#: src/emc/usr_intf/pncconf/pncconf.glade:21101 +#: src/emc/usr_intf/pncconf/pncconf.glade:22897 +#: src/emc/usr_intf/pncconf/pncconf.glade:24693 +msgid "11:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6023 -msgid "Axis Geometry" +#: src/emc/usr_intf/pncconf/pncconf.glade:8997 +#: src/emc/usr_intf/pncconf/pncconf.glade:13646 +#: src/emc/usr_intf/pncconf/pncconf.glade:18852 +#: src/emc/usr_intf/pncconf/pncconf.glade:20654 +#: src/emc/usr_intf/pncconf/pncconf.glade:21115 +#: src/emc/usr_intf/pncconf/pncconf.glade:22911 +#: src/emc/usr_intf/pncconf/pncconf.glade:24707 +msgid "13:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6048 -msgid "Max Angular velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:9011 +#: src/emc/usr_intf/pncconf/pncconf.glade:13632 +#: src/emc/usr_intf/pncconf/pncconf.glade:18838 +#: src/emc/usr_intf/pncconf/pncconf.glade:20640 +#: src/emc/usr_intf/pncconf/pncconf.glade:21129 +#: src/emc/usr_intf/pncconf/pncconf.glade:22925 +#: src/emc/usr_intf/pncconf/pncconf.glade:24721 +msgid "15:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6061 -msgid "5mm 1mm .5mm .1mm .05mm .01mm .005mm" +#: src/emc/usr_intf/pncconf/pncconf.glade:9025 +#: src/emc/usr_intf/pncconf/pncconf.glade:13618 +#: src/emc/usr_intf/pncconf/pncconf.glade:18824 +#: src/emc/usr_intf/pncconf/pncconf.glade:20626 +#: src/emc/usr_intf/pncconf/pncconf.glade:21143 +#: src/emc/usr_intf/pncconf/pncconf.glade:22939 +#: src/emc/usr_intf/pncconf/pncconf.glade:24735 +msgid "17:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6074 -#, fuzzy -msgid "Increments " -msgstr "Pričítať" +#: src/emc/usr_intf/pncconf/pncconf.glade:9039 +#: src/emc/usr_intf/pncconf/pncconf.glade:13604 +#: src/emc/usr_intf/pncconf/pncconf.glade:18810 +#: src/emc/usr_intf/pncconf/pncconf.glade:20612 +#: src/emc/usr_intf/pncconf/pncconf.glade:21157 +#: src/emc/usr_intf/pncconf/pncconf.glade:22953 +#: src/emc/usr_intf/pncconf/pncconf.glade:24749 +msgid "19:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6099 -msgid "Min Angular velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:9053 +#: src/emc/usr_intf/pncconf/pncconf.glade:13590 +#: src/emc/usr_intf/pncconf/pncconf.glade:18796 +#: src/emc/usr_intf/pncconf/pncconf.glade:20598 +#: src/emc/usr_intf/pncconf/pncconf.glade:21171 +#: src/emc/usr_intf/pncconf/pncconf.glade:22967 +#: src/emc/usr_intf/pncconf/pncconf.glade:24763 +msgid "21:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6112 -msgid "gedit" +#: src/emc/usr_intf/pncconf/pncconf.glade:9067 +#: src/emc/usr_intf/pncconf/pncconf.glade:13576 +#: src/emc/usr_intf/pncconf/pncconf.glade:18782 +#: src/emc/usr_intf/pncconf/pncconf.glade:20584 +#: src/emc/usr_intf/pncconf/pncconf.glade:21185 +#: src/emc/usr_intf/pncconf/pncconf.glade:22981 +#: src/emc/usr_intf/pncconf/pncconf.glade:24777 +msgid "23:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6148 -msgid "Default Angular velocity " +#: src/emc/usr_intf/pncconf/pncconf.glade:9801 +#: src/emc/usr_intf/pncconf/pncconf.glade:12840 +#: src/emc/usr_intf/pncconf/pncconf.glade:17994 +#: src/emc/usr_intf/pncconf/pncconf.glade:20170 +#: src/emc/usr_intf/pncconf/pncconf.glade:21597 +#: src/emc/usr_intf/pncconf/pncconf.glade:23393 +#: src/emc/usr_intf/pncconf/pncconf.glade:25189 +msgid "47:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6211 -msgid "Max linear velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:9868 +#: src/emc/usr_intf/pncconf/pncconf.glade:12773 +#: src/emc/usr_intf/pncconf/pncconf.glade:17927 +#: src/emc/usr_intf/pncconf/pncconf.glade:20119 +#: src/emc/usr_intf/pncconf/pncconf.glade:21648 +#: src/emc/usr_intf/pncconf/pncconf.glade:23444 +#: src/emc/usr_intf/pncconf/pncconf.glade:25240 +msgid "45:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6222 -msgid "Min linear velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:9884 +#: src/emc/usr_intf/pncconf/pncconf.glade:12757 +#: src/emc/usr_intf/pncconf/pncconf.glade:17911 +#: src/emc/usr_intf/pncconf/pncconf.glade:20103 +#: src/emc/usr_intf/pncconf/pncconf.glade:21664 +#: src/emc/usr_intf/pncconf/pncconf.glade:23460 +#: src/emc/usr_intf/pncconf/pncconf.glade:25256 +msgid "43:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6233 -msgid "Default linear velocity " +#: src/emc/usr_intf/pncconf/pncconf.glade:9900 +#: src/emc/usr_intf/pncconf/pncconf.glade:12741 +#: src/emc/usr_intf/pncconf/pncconf.glade:17895 +#: src/emc/usr_intf/pncconf/pncconf.glade:20087 +#: src/emc/usr_intf/pncconf/pncconf.glade:21680 +#: src/emc/usr_intf/pncconf/pncconf.glade:23476 +#: src/emc/usr_intf/pncconf/pncconf.glade:25272 +msgid "41:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6241 -#, fuzzy -msgid "AXIS defaults" -msgstr "Použiť pôvodné" +#: src/emc/usr_intf/pncconf/pncconf.glade:9916 +#: src/emc/usr_intf/pncconf/pncconf.glade:12725 +#: src/emc/usr_intf/pncconf/pncconf.glade:17879 +#: src/emc/usr_intf/pncconf/pncconf.glade:20071 +#: src/emc/usr_intf/pncconf/pncconf.glade:21696 +#: src/emc/usr_intf/pncconf/pncconf.glade:23492 +#: src/emc/usr_intf/pncconf/pncconf.glade:25288 +msgid "39:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6352 -msgid "Error Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:9932 +#: src/emc/usr_intf/pncconf/pncconf.glade:12709 +#: src/emc/usr_intf/pncconf/pncconf.glade:17863 +#: src/emc/usr_intf/pncconf/pncconf.glade:20055 +#: src/emc/usr_intf/pncconf/pncconf.glade:21712 +#: src/emc/usr_intf/pncconf/pncconf.glade:23508 +#: src/emc/usr_intf/pncconf/pncconf.glade:25304 +msgid "37:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6365 -msgid "DTG Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:9948 +#: src/emc/usr_intf/pncconf/pncconf.glade:12693 +#: src/emc/usr_intf/pncconf/pncconf.glade:17847 +#: src/emc/usr_intf/pncconf/pncconf.glade:20039 +#: src/emc/usr_intf/pncconf/pncconf.glade:21728 +#: src/emc/usr_intf/pncconf/pncconf.glade:23524 +#: src/emc/usr_intf/pncconf/pncconf.glade:25320 +msgid "35:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6378 -#, fuzzy -msgid "Relative Textcolor" -msgstr "Relatívna pozícia" +#: src/emc/usr_intf/pncconf/pncconf.glade:9964 +#: src/emc/usr_intf/pncconf/pncconf.glade:12677 +#: src/emc/usr_intf/pncconf/pncconf.glade:17831 +#: src/emc/usr_intf/pncconf/pncconf.glade:20023 +#: src/emc/usr_intf/pncconf/pncconf.glade:21744 +#: src/emc/usr_intf/pncconf/pncconf.glade:23540 +#: src/emc/usr_intf/pncconf/pncconf.glade:25336 +msgid "33:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6391 -msgid "Absolute Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:10337 +#: src/emc/usr_intf/pncconf/pncconf.glade:12304 +#: src/emc/usr_intf/pncconf/pncconf.glade:17458 +#: src/emc/usr_intf/pncconf/pncconf.glade:19762 +#: src/emc/usr_intf/pncconf/pncconf.glade:22005 +#: src/emc/usr_intf/pncconf/pncconf.glade:23801 +#: src/emc/usr_intf/pncconf/pncconf.glade:25597 +msgid "25:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6454 -msgid "Absolute Text Color" +#: src/emc/usr_intf/pncconf/pncconf.glade:10353 +#: src/emc/usr_intf/pncconf/pncconf.glade:12288 +#: src/emc/usr_intf/pncconf/pncconf.glade:17442 +#: src/emc/usr_intf/pncconf/pncconf.glade:19746 +#: src/emc/usr_intf/pncconf/pncconf.glade:22021 +#: src/emc/usr_intf/pncconf/pncconf.glade:23817 +#: src/emc/usr_intf/pncconf/pncconf.glade:25613 +msgid "27:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6479 -#: src/emc/usr_intf/pncconf/pncconf.glade:7148 -msgid "GTK Theme" +#: src/emc/usr_intf/pncconf/pncconf.glade:10369 +#: src/emc/usr_intf/pncconf/pncconf.glade:12272 +#: src/emc/usr_intf/pncconf/pncconf.glade:17426 +#: src/emc/usr_intf/pncconf/pncconf.glade:19730 +#: src/emc/usr_intf/pncconf/pncconf.glade:22037 +#: src/emc/usr_intf/pncconf/pncconf.glade:23833 +#: src/emc/usr_intf/pncconf/pncconf.glade:25629 +msgid "29:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6491 -#: src/emc/usr_intf/pncconf/pncconf.glade:7158 -msgid "Follow System Theme\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:10385 +#: src/emc/usr_intf/pncconf/pncconf.glade:12256 +#: src/emc/usr_intf/pncconf/pncconf.glade:17410 +#: src/emc/usr_intf/pncconf/pncconf.glade:19714 +#: src/emc/usr_intf/pncconf/pncconf.glade:22053 +#: src/emc/usr_intf/pncconf/pncconf.glade:23849 +#: src/emc/usr_intf/pncconf/pncconf.glade:25645 +msgid "31:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6624 -msgid "Force Touchy to Maximize after positioning" +#: src/emc/usr_intf/pncconf/pncconf.glade:10677 +#: src/emc/usr_intf/pncconf/pncconf.glade:10689 +#: src/emc/usr_intf/pncconf/pncconf.glade:11955 +#: src/emc/usr_intf/pncconf/pncconf.glade:11967 +#: src/emc/usr_intf/pncconf/pncconf.glade:14464 +#: src/emc/usr_intf/pncconf/pncconf.glade:14476 +#: src/emc/usr_intf/pncconf/pncconf.glade:17161 +#: src/emc/usr_intf/pncconf/pncconf.glade:17173 +#: src/emc/usr_intf/pncconf/pncconf.glade:19567 +#: src/emc/usr_intf/pncconf/pncconf.glade:19579 +#: src/emc/usr_intf/pncconf/pncconf.glade:22190 +#: src/emc/usr_intf/pncconf/pncconf.glade:22202 +#: src/emc/usr_intf/pncconf/pncconf.glade:23986 +#: src/emc/usr_intf/pncconf/pncconf.glade:23998 +#: src/emc/usr_intf/pncconf/pncconf.glade:25782 +#: src/emc/usr_intf/pncconf/pncconf.glade:25794 +#: src/emc/usr_intf/pncconf/pncconf.glade:28287 +#: src/emc/usr_intf/pncconf/pncconf.glade:28299 +#: src/emc/usr_intf/pncconf/pncconf.glade:29415 +#: src/emc/usr_intf/pncconf/pncconf.glade:29427 +#: src/emc/usr_intf/pncconf/pncconf.glade:32869 +#: src/emc/usr_intf/pncconf/pncconf.glade:33760 +#: src/emc/usr_intf/pncconf/pncconf.glade:33772 +#: src/emc/usr_intf/pncconf/pncconf.glade:37771 +#: src/emc/usr_intf/pncconf/pncconf.glade:37783 +#: src/emc/usr_intf/pncconf/pncconf.glade:38777 +#: src/emc/usr_intf/pncconf/pncconf.glade:38789 +#: src/emc/usr_intf/pncconf/pncconf.glade:42131 +#: src/emc/usr_intf/pncconf/pncconf.glade:42143 +#: src/emc/usr_intf/pncconf/pncconf.glade:43259 +#: src/emc/usr_intf/pncconf/pncconf.glade:43271 +#: src/emc/usr_intf/pncconf/pncconf.glade:46702 +#: src/emc/usr_intf/pncconf/pncconf.glade:46714 +#: src/emc/usr_intf/pncconf/pncconf.glade:49054 +#: src/emc/usr_intf/pncconf/pncconf.glade:49066 +#: src/emc/usr_intf/pncconf/pncconf.glade:50182 +#: src/emc/usr_intf/pncconf/pncconf.glade:50194 +#: src/emc/usr_intf/pncconf/pncconf.glade:53625 +#: src/emc/usr_intf/pncconf/pncconf.glade:53637 +#: src/emc/usr_intf/pncconf/pncconf.glade:55977 +#: src/emc/usr_intf/pncconf/pncconf.glade:55989 +#: src/emc/usr_intf/pncconf/pncconf.glade:57105 +#: src/emc/usr_intf/pncconf/pncconf.glade:57117 +#: src/emc/usr_intf/pncconf/pncconf.glade:60548 +#: src/emc/usr_intf/pncconf/pncconf.glade:60560 +msgid "function" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6669 -msgid "GUI Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:10703 +#: src/emc/usr_intf/pncconf/pncconf.glade:11940 +#: src/emc/usr_intf/pncconf/pncconf.glade:14449 +#: src/emc/usr_intf/pncconf/pncconf.glade:17146 +#: src/emc/usr_intf/pncconf/pncconf.glade:19553 +#: src/emc/usr_intf/pncconf/pncconf.glade:22217 +#: src/emc/usr_intf/pncconf/pncconf.glade:24013 +#: src/emc/usr_intf/pncconf/pncconf.glade:25809 +msgid "Launch test panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6700 -msgid "Virtual Control Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:11192 +#: src/emc/usr_intf/pncconf/pncconf.glade:11204 +#: src/emc/usr_intf/pncconf/pncconf.glade:11440 +#: src/emc/usr_intf/pncconf/pncconf.glade:11454 +#: src/emc/usr_intf/pncconf/pncconf.glade:13949 +#: src/emc/usr_intf/pncconf/pncconf.glade:13963 +#: src/emc/usr_intf/pncconf/pncconf.glade:16645 +#: src/emc/usr_intf/pncconf/pncconf.glade:16659 +#: src/emc/usr_intf/pncconf/pncconf.glade:19190 +#: src/emc/usr_intf/pncconf/pncconf.glade:19204 +#: src/emc/usr_intf/pncconf/pncconf.glade:22567 +#: src/emc/usr_intf/pncconf/pncconf.glade:22579 +#: src/emc/usr_intf/pncconf/pncconf.glade:24363 +#: src/emc/usr_intf/pncconf/pncconf.glade:24375 +#: src/emc/usr_intf/pncconf/pncconf.glade:26159 +#: src/emc/usr_intf/pncconf/pncconf.glade:26171 +#: src/emc/usr_intf/pncconf/pncconf.glade:28772 +#: src/emc/usr_intf/pncconf/pncconf.glade:28784 +#: src/emc/usr_intf/pncconf/pncconf.glade:28917 +#: src/emc/usr_intf/pncconf/pncconf.glade:28931 +#: src/emc/usr_intf/pncconf/pncconf.glade:33102 +#: src/emc/usr_intf/pncconf/pncconf.glade:33275 +#: src/emc/usr_intf/pncconf/pncconf.glade:33289 +#: src/emc/usr_intf/pncconf/pncconf.glade:38269 +#: src/emc/usr_intf/pncconf/pncconf.glade:38281 +#: src/emc/usr_intf/pncconf/pncconf.glade:38532 +#: src/emc/usr_intf/pncconf/pncconf.glade:38546 +#: src/emc/usr_intf/pncconf/pncconf.glade:42616 +#: src/emc/usr_intf/pncconf/pncconf.glade:42628 +#: src/emc/usr_intf/pncconf/pncconf.glade:42761 +#: src/emc/usr_intf/pncconf/pncconf.glade:42775 +#: src/emc/usr_intf/pncconf/pncconf.glade:46947 +#: src/emc/usr_intf/pncconf/pncconf.glade:46959 +#: src/emc/usr_intf/pncconf/pncconf.glade:49539 +#: src/emc/usr_intf/pncconf/pncconf.glade:49551 +#: src/emc/usr_intf/pncconf/pncconf.glade:49684 +#: src/emc/usr_intf/pncconf/pncconf.glade:49698 +#: src/emc/usr_intf/pncconf/pncconf.glade:53870 +#: src/emc/usr_intf/pncconf/pncconf.glade:53882 +#: src/emc/usr_intf/pncconf/pncconf.glade:56462 +#: src/emc/usr_intf/pncconf/pncconf.glade:56474 +#: src/emc/usr_intf/pncconf/pncconf.glade:56607 +#: src/emc/usr_intf/pncconf/pncconf.glade:56621 +#: src/emc/usr_intf/pncconf/pncconf.glade:60793 +#: src/emc/usr_intf/pncconf/pncconf.glade:60805 +msgid "Num" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6775 -msgid "XYZ buttons (uses Halui)" +#: src/emc/usr_intf/pncconf/pncconf.glade:11222 +msgid "" +" I/O\n" +"Connector 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6946 -msgid "Geometry Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:13835 +msgid "" +" I/O\n" +" Connector 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7025 -msgid "Pyvcp Details" +#: src/emc/usr_intf/pncconf/pncconf.glade:16281 +#: src/emc/usr_intf/pncconf/pncconf.glade:16295 +#: src/emc/usr_intf/pncconf/pncconf.glade:16322 +#: src/emc/usr_intf/pncconf/pncconf.glade:26441 +#: src/emc/usr_intf/pncconf/pncconf.glade:26468 +#: src/emc/usr_intf/pncconf/pncconf.glade:26482 +#: src/emc/usr_intf/pncconf/pncconf.glade:31232 +#: src/emc/usr_intf/pncconf/pncconf.glade:31246 +#: src/emc/usr_intf/pncconf/pncconf.glade:31273 +#: src/emc/usr_intf/pncconf/pncconf.glade:31708 +#: src/emc/usr_intf/pncconf/pncconf.glade:31735 +#: src/emc/usr_intf/pncconf/pncconf.glade:31749 +#: src/emc/usr_intf/pncconf/pncconf.glade:35577 +#: src/emc/usr_intf/pncconf/pncconf.glade:35591 +#: src/emc/usr_intf/pncconf/pncconf.glade:35618 +#: src/emc/usr_intf/pncconf/pncconf.glade:35925 +#: src/emc/usr_intf/pncconf/pncconf.glade:35952 +#: src/emc/usr_intf/pncconf/pncconf.glade:35966 +#: src/emc/usr_intf/pncconf/pncconf.glade:39909 +#: src/emc/usr_intf/pncconf/pncconf.glade:39923 +#: src/emc/usr_intf/pncconf/pncconf.glade:39950 +#: src/emc/usr_intf/pncconf/pncconf.glade:40285 +#: src/emc/usr_intf/pncconf/pncconf.glade:40312 +#: src/emc/usr_intf/pncconf/pncconf.glade:40326 +#: src/emc/usr_intf/pncconf/pncconf.glade:45076 +#: src/emc/usr_intf/pncconf/pncconf.glade:45090 +#: src/emc/usr_intf/pncconf/pncconf.glade:45117 +#: src/emc/usr_intf/pncconf/pncconf.glade:45541 +#: src/emc/usr_intf/pncconf/pncconf.glade:45568 +#: src/emc/usr_intf/pncconf/pncconf.glade:45582 +#: src/emc/usr_intf/pncconf/pncconf.glade:47208 +#: src/emc/usr_intf/pncconf/pncconf.glade:47235 +#: src/emc/usr_intf/pncconf/pncconf.glade:47249 +#: src/emc/usr_intf/pncconf/pncconf.glade:51999 +#: src/emc/usr_intf/pncconf/pncconf.glade:52013 +#: src/emc/usr_intf/pncconf/pncconf.glade:52040 +#: src/emc/usr_intf/pncconf/pncconf.glade:52464 +#: src/emc/usr_intf/pncconf/pncconf.glade:52491 +#: src/emc/usr_intf/pncconf/pncconf.glade:52505 +#: src/emc/usr_intf/pncconf/pncconf.glade:54131 +#: src/emc/usr_intf/pncconf/pncconf.glade:54158 +#: src/emc/usr_intf/pncconf/pncconf.glade:54172 +#: src/emc/usr_intf/pncconf/pncconf.glade:58922 +#: src/emc/usr_intf/pncconf/pncconf.glade:58936 +#: src/emc/usr_intf/pncconf/pncconf.glade:58963 +#: src/emc/usr_intf/pncconf/pncconf.glade:59387 +#: src/emc/usr_intf/pncconf/pncconf.glade:59414 +#: src/emc/usr_intf/pncconf/pncconf.glade:59428 +msgid " " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7097 -msgid "Sample display " +#: src/emc/usr_intf/pncconf/pncconf.glade:16427 +msgid "" +" I/O\n" +" Connector 4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7172 -msgid "Force Maximize" +#: src/emc/usr_intf/pncconf/pncconf.glade:19041 +msgid "" +" I/O\n" +" Connector 5" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7186 -msgid "Center Tab Embeded" +#: src/emc/usr_intf/pncconf/pncconf.glade:20837 +msgid "" +" I/O\n" +"Connector 6" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7201 -msgid "Rightside Embeded" +#: src/emc/usr_intf/pncconf/pncconf.glade:22633 +msgid "" +" I/O\n" +"Connector 7" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7217 -msgid "Standalone Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:24429 +msgid "" +" I/O\n" +"Connector 8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7351 -msgid "Display Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:26225 +msgid "" +" I/O\n" +" Connector 9" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7401 -msgid "Max RPM" +#: src/emc/usr_intf/pncconf/pncconf.glade:31378 +#: src/emc/usr_intf/pncconf/pncconf.glade:38299 +#: src/emc/usr_intf/pncconf/pncconf.glade:45222 +#: src/emc/usr_intf/pncconf/pncconf.glade:52145 +#: src/emc/usr_intf/pncconf/pncconf.glade:59068 +msgid "page 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7414 -#, fuzzy -msgid "Spindle Speed Indicator" -msgstr "Zmena rýchlosti vretena:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:7426 -#, fuzzy -msgid "Spindle At Speed LED" -msgstr "Zmena rýchlosti vretena:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:7438 -msgid "Zero X Button" +#: src/emc/usr_intf/pncconf/pncconf.glade:33131 +#: src/emc/usr_intf/pncconf/pncconf.glade:40054 +#: src/emc/usr_intf/pncconf/pncconf.glade:46977 +#: src/emc/usr_intf/pncconf/pncconf.glade:53900 +#: src/emc/usr_intf/pncconf/pncconf.glade:60823 +msgid "page 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7450 -msgid "Zero Y Button" +#: src/emc/usr_intf/pncconf/pncconf.glade:33147 +msgid "Smart Serial 0" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7462 -msgid "Zero Z Button" +#: src/emc/usr_intf/pncconf/pncconf.glade:40070 +msgid "Smart Serial 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7474 -msgid "Zero A Button" +#: src/emc/usr_intf/pncconf/pncconf.glade:46993 +msgid "Smart Serial 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7486 -msgid "Requires Classicladder touch-off program" +#: src/emc/usr_intf/pncconf/pncconf.glade:53916 +msgid "Smart Serial 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7487 -msgid "Auto Z Touch Off Button" +#: src/emc/usr_intf/pncconf/pncconf.glade:60839 +msgid "Smart Serial 4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7500 -#, fuzzy -msgid "Sample Options" -msgstr "Príklady konfigurácií" - -#: src/emc/usr_intf/pncconf/pncconf.glade:7574 -msgid "Gladevcp Details" +#: src/emc/usr_intf/pncconf/pncconf.glade:60861 +msgid "First Parallel Port Setup" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7597 -msgid "Include custom GladeVCP GUI panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:60946 +msgid "Launch Test Panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7668 -msgid "Restore joint position after shutdown" +#: src/emc/usr_intf/pncconf/pncconf.glade:62374 +msgid "Inputs (Machine to PC):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7683 -msgid "Move spindle up before tool change" +#: src/emc/usr_intf/pncconf/pncconf.glade:62929 +msgid "Outputs (PC to Machine):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7696 -msgid "Leave spindle on during tool change" +#: src/emc/usr_intf/pncconf/pncconf.glade:62950 +msgid "X Axis Motor/Encoder Configuration" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7709 -msgid "Popup Toolchange Prompt" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63005 +#, fuzzy +msgid "Max Output" +msgstr "Vreteno vypni" -#: src/emc/usr_intf/pncconf/pncconf.glade:7723 -msgid "Require homing before MDI / Running" +#: src/emc/usr_intf/pncconf/pncconf.glade:63070 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7732 -msgid "Random position toolchanger " +#: src/emc/usr_intf/pncconf/pncconf.glade:63083 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7747 -msgid "Force individual manual homing" +#: src/emc/usr_intf/pncconf/pncconf.glade:63096 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF0" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7761 -msgid "Defaults and Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:63143 +msgid "Deadband" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7789 -msgid "Mesa0 I/O setup\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:63156 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Bias" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7809 -msgid "" -"Click on each page tab to configure signal names for each connector port.\n" -"\n" -"Press the button to make the tabbed pages\n" -"accept the changes.\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:63169 +msgid "P" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7998 -msgid "Num of channels: " -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63180 +#, fuzzy +msgid "I" +msgstr "Io port" -#: src/emc/usr_intf/pncconf/pncconf.glade:8036 -msgid "7i29 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:63193 +msgid "D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8045 -msgid "7i30 daughter board" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63258 +#, fuzzy +msgid "Servo Info" +msgstr "Informácie o nástroji" -#: src/emc/usr_intf/pncconf/pncconf.glade:8057 -msgid "7i33 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:63337 +msgid "3pwm Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8069 -msgid "7i40 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:63348 +msgid "3pwm Deadtime:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8081 -msgid "7i48 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:63361 +msgid "Quad Pulses / Rev:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8096 -msgid "Sanity Checks" +#: src/emc/usr_intf/pncconf/pncconf.glade:63438 +msgid "" +"Open Loop\n" +" Test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8137 -msgid "Num of Smart Serial Ports:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63462 +#, fuzzy +msgid "Analog Min Limit:" +msgstr "Vreteno vypni" -#: src/emc/usr_intf/pncconf/pncconf.glade:8148 -msgid "Board name" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63476 +#, fuzzy +msgid "Analog Max limit:" +msgstr "Vreteno rýchlejšie" -#: src/emc/usr_intf/pncconf/pncconf.glade:8155 -msgid "Num of step generators: " +#: src/emc/usr_intf/pncconf/pncconf.glade:63490 +msgid "Analog Max Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8166 -msgid "Num of pwm generators:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63554 +#, fuzzy +msgid "Output Info" +msgstr "Informácie o doplnku" -#: src/emc/usr_intf/pncconf/pncconf.glade:8177 -msgid "Num of encoders:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63603 +msgid "Step On-Time" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8294 -msgid "Watchdog timeout:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63616 +#, fuzzy +msgid "Step Space" +msgstr "Jedna medzera" -#: src/emc/usr_intf/pncconf/pncconf.glade:8305 -msgid "PDM base frequency:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63659 +msgid "Direction Hold" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8316 -msgid "PWM base frequency:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63672 +#, fuzzy +msgid "Direction Setup" +msgstr "Vytlačiť nastavenia" -#: src/emc/usr_intf/pncconf/pncconf.glade:8328 -msgid "" -"Accept components\n" -" Changes" +#: src/emc/usr_intf/pncconf/pncconf.glade:63715 +msgid "Driver Type:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8356 -msgid "Total number of pins:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63748 +msgid "Stepper Info" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8389 -msgid "Num of 3 pwm generators: " +#: src/emc/usr_intf/pncconf/pncconf.glade:63800 +msgid "No feedback" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8412 -msgid "SVST8_4" +#: src/emc/usr_intf/pncconf/pncconf.glade:63810 +msgid "Absolute Feedback" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8437 -msgid "Firmware:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63824 +#, fuzzy +msgid "Incremental Feedback" +msgstr "Pričítať" -#: src/emc/usr_intf/pncconf/pncconf.glade:8447 -msgid "Mesa parport address:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63838 +#, fuzzy +msgid "Incremental Encoder" +msgstr "Pričítať" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63850 +msgid "Hall sensors" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8482 -msgid "3PWM base frequency:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63862 +msgid "Fanuc Red Cap " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8504 +#: src/emc/usr_intf/pncconf/pncconf.glade:63874 #, fuzzy -msgid "" -"Configuration\n" -" Page" -msgstr "Nastavenie HAL" +msgid "Use encoder Index" +msgstr "Vreteno rýchlejšie" -#: src/emc/usr_intf/pncconf/pncconf.glade:8698 -#: src/emc/usr_intf/pncconf/pncconf.glade:8712 -#: src/emc/usr_intf/pncconf/pncconf.glade:13677 -#: src/emc/usr_intf/pncconf/pncconf.glade:13689 -#: src/emc/usr_intf/pncconf/pncconf.glade:16373 -#: src/emc/usr_intf/pncconf/pncconf.glade:16385 -#: src/emc/usr_intf/pncconf/pncconf.glade:18883 -#: src/emc/usr_intf/pncconf/pncconf.glade:18895 -#: src/emc/usr_intf/pncconf/pncconf.glade:20747 -#: src/emc/usr_intf/pncconf/pncconf.glade:20759 -#: src/emc/usr_intf/pncconf/pncconf.glade:20962 -#: src/emc/usr_intf/pncconf/pncconf.glade:20976 -#: src/emc/usr_intf/pncconf/pncconf.glade:22758 -#: src/emc/usr_intf/pncconf/pncconf.glade:22772 -#: src/emc/usr_intf/pncconf/pncconf.glade:24554 -#: src/emc/usr_intf/pncconf/pncconf.glade:24568 -#: src/emc/usr_intf/pncconf/pncconf.glade:26330 -#: src/emc/usr_intf/pncconf/pncconf.glade:26344 -#: src/emc/usr_intf/pncconf/pncconf.glade:31324 -#: src/emc/usr_intf/pncconf/pncconf.glade:31336 -#: src/emc/usr_intf/pncconf/pncconf.glade:31600 -#: src/emc/usr_intf/pncconf/pncconf.glade:35669 -#: src/emc/usr_intf/pncconf/pncconf.glade:35681 -#: src/emc/usr_intf/pncconf/pncconf.glade:35814 -#: src/emc/usr_intf/pncconf/pncconf.glade:35828 -#: src/emc/usr_intf/pncconf/pncconf.glade:40000 -#: src/emc/usr_intf/pncconf/pncconf.glade:40012 -#: src/emc/usr_intf/pncconf/pncconf.glade:40174 -#: src/emc/usr_intf/pncconf/pncconf.glade:40188 -#: src/emc/usr_intf/pncconf/pncconf.glade:45168 -#: src/emc/usr_intf/pncconf/pncconf.glade:45180 -#: src/emc/usr_intf/pncconf/pncconf.glade:45431 -#: src/emc/usr_intf/pncconf/pncconf.glade:45445 -#: src/emc/usr_intf/pncconf/pncconf.glade:47097 -#: src/emc/usr_intf/pncconf/pncconf.glade:47111 -#: src/emc/usr_intf/pncconf/pncconf.glade:52091 -#: src/emc/usr_intf/pncconf/pncconf.glade:52103 -#: src/emc/usr_intf/pncconf/pncconf.glade:52354 -#: src/emc/usr_intf/pncconf/pncconf.glade:52368 -msgid "Num" +#: src/emc/usr_intf/pncconf/pncconf.glade:63905 +msgid "Input Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8723 -#: src/emc/usr_intf/pncconf/pncconf.glade:8743 -#: src/emc/usr_intf/pncconf/pncconf.glade:8763 -#: src/emc/usr_intf/pncconf/pncconf.glade:8783 -#: src/emc/usr_intf/pncconf/pncconf.glade:8803 -#: src/emc/usr_intf/pncconf/pncconf.glade:8823 -#: src/emc/usr_intf/pncconf/pncconf.glade:8843 -#: src/emc/usr_intf/pncconf/pncconf.glade:8863 -#: src/emc/usr_intf/pncconf/pncconf.glade:8883 -#: src/emc/usr_intf/pncconf/pncconf.glade:8903 -#: src/emc/usr_intf/pncconf/pncconf.glade:8923 -#: src/emc/usr_intf/pncconf/pncconf.glade:8943 -#: src/emc/usr_intf/pncconf/pncconf.glade:8963 -#: src/emc/usr_intf/pncconf/pncconf.glade:8983 -#: src/emc/usr_intf/pncconf/pncconf.glade:9003 -#: src/emc/usr_intf/pncconf/pncconf.glade:9023 -#: src/emc/usr_intf/pncconf/pncconf.glade:9043 -#: src/emc/usr_intf/pncconf/pncconf.glade:9063 -#: src/emc/usr_intf/pncconf/pncconf.glade:9083 -#: src/emc/usr_intf/pncconf/pncconf.glade:9103 -#: src/emc/usr_intf/pncconf/pncconf.glade:9123 -#: src/emc/usr_intf/pncconf/pncconf.glade:9143 -#: src/emc/usr_intf/pncconf/pncconf.glade:9163 -#: src/emc/usr_intf/pncconf/pncconf.glade:11027 -#: src/emc/usr_intf/pncconf/pncconf.glade:11353 -#: src/emc/usr_intf/pncconf/pncconf.glade:13216 -#: src/emc/usr_intf/pncconf/pncconf.glade:13236 -#: src/emc/usr_intf/pncconf/pncconf.glade:13256 -#: src/emc/usr_intf/pncconf/pncconf.glade:13276 -#: src/emc/usr_intf/pncconf/pncconf.glade:13296 -#: src/emc/usr_intf/pncconf/pncconf.glade:13316 -#: src/emc/usr_intf/pncconf/pncconf.glade:13336 -#: src/emc/usr_intf/pncconf/pncconf.glade:13356 -#: src/emc/usr_intf/pncconf/pncconf.glade:13376 -#: src/emc/usr_intf/pncconf/pncconf.glade:13396 -#: src/emc/usr_intf/pncconf/pncconf.glade:13416 -#: src/emc/usr_intf/pncconf/pncconf.glade:13436 -#: src/emc/usr_intf/pncconf/pncconf.glade:13456 -#: src/emc/usr_intf/pncconf/pncconf.glade:13476 -#: src/emc/usr_intf/pncconf/pncconf.glade:13496 -#: src/emc/usr_intf/pncconf/pncconf.glade:13516 -#: src/emc/usr_intf/pncconf/pncconf.glade:13536 -#: src/emc/usr_intf/pncconf/pncconf.glade:13556 -#: src/emc/usr_intf/pncconf/pncconf.glade:13576 -#: src/emc/usr_intf/pncconf/pncconf.glade:13596 -#: src/emc/usr_intf/pncconf/pncconf.glade:13616 -#: src/emc/usr_intf/pncconf/pncconf.glade:13636 -#: src/emc/usr_intf/pncconf/pncconf.glade:13656 -#: src/emc/usr_intf/pncconf/pncconf.glade:13966 -#: src/emc/usr_intf/pncconf/pncconf.glade:15912 -#: src/emc/usr_intf/pncconf/pncconf.glade:15932 -#: src/emc/usr_intf/pncconf/pncconf.glade:15952 -#: src/emc/usr_intf/pncconf/pncconf.glade:15972 -#: src/emc/usr_intf/pncconf/pncconf.glade:15992 -#: src/emc/usr_intf/pncconf/pncconf.glade:16012 -#: src/emc/usr_intf/pncconf/pncconf.glade:16032 -#: src/emc/usr_intf/pncconf/pncconf.glade:16052 -#: src/emc/usr_intf/pncconf/pncconf.glade:16072 -#: src/emc/usr_intf/pncconf/pncconf.glade:16092 -#: src/emc/usr_intf/pncconf/pncconf.glade:16112 -#: src/emc/usr_intf/pncconf/pncconf.glade:16132 -#: src/emc/usr_intf/pncconf/pncconf.glade:16152 -#: src/emc/usr_intf/pncconf/pncconf.glade:16172 -#: src/emc/usr_intf/pncconf/pncconf.glade:16192 -#: src/emc/usr_intf/pncconf/pncconf.glade:16212 -#: src/emc/usr_intf/pncconf/pncconf.glade:16232 -#: src/emc/usr_intf/pncconf/pncconf.glade:16252 -#: src/emc/usr_intf/pncconf/pncconf.glade:16272 -#: src/emc/usr_intf/pncconf/pncconf.glade:16292 -#: src/emc/usr_intf/pncconf/pncconf.glade:16312 -#: src/emc/usr_intf/pncconf/pncconf.glade:16332 -#: src/emc/usr_intf/pncconf/pncconf.glade:16352 -#: src/emc/usr_intf/pncconf/pncconf.glade:16558 -#: src/emc/usr_intf/pncconf/pncconf.glade:18422 -#: src/emc/usr_intf/pncconf/pncconf.glade:18442 -#: src/emc/usr_intf/pncconf/pncconf.glade:18462 -#: src/emc/usr_intf/pncconf/pncconf.glade:18482 -#: src/emc/usr_intf/pncconf/pncconf.glade:18502 -#: src/emc/usr_intf/pncconf/pncconf.glade:18522 -#: src/emc/usr_intf/pncconf/pncconf.glade:18542 -#: src/emc/usr_intf/pncconf/pncconf.glade:18562 -#: src/emc/usr_intf/pncconf/pncconf.glade:18582 -#: src/emc/usr_intf/pncconf/pncconf.glade:18602 -#: src/emc/usr_intf/pncconf/pncconf.glade:18622 -#: src/emc/usr_intf/pncconf/pncconf.glade:18642 -#: src/emc/usr_intf/pncconf/pncconf.glade:18662 -#: src/emc/usr_intf/pncconf/pncconf.glade:18682 -#: src/emc/usr_intf/pncconf/pncconf.glade:18702 -#: src/emc/usr_intf/pncconf/pncconf.glade:18722 -#: src/emc/usr_intf/pncconf/pncconf.glade:18742 -#: src/emc/usr_intf/pncconf/pncconf.glade:18762 -#: src/emc/usr_intf/pncconf/pncconf.glade:18782 -#: src/emc/usr_intf/pncconf/pncconf.glade:18802 -#: src/emc/usr_intf/pncconf/pncconf.glade:18822 -#: src/emc/usr_intf/pncconf/pncconf.glade:18842 -#: src/emc/usr_intf/pncconf/pncconf.glade:18862 -#: src/emc/usr_intf/pncconf/pncconf.glade:26355 -#: src/emc/usr_intf/pncconf/pncconf.glade:26375 -#: src/emc/usr_intf/pncconf/pncconf.glade:26395 -#: src/emc/usr_intf/pncconf/pncconf.glade:26415 -#: src/emc/usr_intf/pncconf/pncconf.glade:26435 -#: src/emc/usr_intf/pncconf/pncconf.glade:26455 -#: src/emc/usr_intf/pncconf/pncconf.glade:26475 -#: src/emc/usr_intf/pncconf/pncconf.glade:26495 -#: src/emc/usr_intf/pncconf/pncconf.glade:26515 -#: src/emc/usr_intf/pncconf/pncconf.glade:26535 -#: src/emc/usr_intf/pncconf/pncconf.glade:26555 -#: src/emc/usr_intf/pncconf/pncconf.glade:26575 -#: src/emc/usr_intf/pncconf/pncconf.glade:26595 -#: src/emc/usr_intf/pncconf/pncconf.glade:26615 -#: src/emc/usr_intf/pncconf/pncconf.glade:26635 -#: src/emc/usr_intf/pncconf/pncconf.glade:26655 -#: src/emc/usr_intf/pncconf/pncconf.glade:26675 -#: src/emc/usr_intf/pncconf/pncconf.glade:26695 -#: src/emc/usr_intf/pncconf/pncconf.glade:26715 -#: src/emc/usr_intf/pncconf/pncconf.glade:26735 -#: src/emc/usr_intf/pncconf/pncconf.glade:26755 -#: src/emc/usr_intf/pncconf/pncconf.glade:26775 -#: src/emc/usr_intf/pncconf/pncconf.glade:26795 -#: src/emc/usr_intf/pncconf/pncconf.glade:28711 -#: src/emc/usr_intf/pncconf/pncconf.glade:28934 -#: src/emc/usr_intf/pncconf/pncconf.glade:30863 -#: src/emc/usr_intf/pncconf/pncconf.glade:30883 -#: src/emc/usr_intf/pncconf/pncconf.glade:30903 -#: src/emc/usr_intf/pncconf/pncconf.glade:30923 -#: src/emc/usr_intf/pncconf/pncconf.glade:30943 -#: src/emc/usr_intf/pncconf/pncconf.glade:30963 -#: src/emc/usr_intf/pncconf/pncconf.glade:30983 -#: src/emc/usr_intf/pncconf/pncconf.glade:31003 -#: src/emc/usr_intf/pncconf/pncconf.glade:31023 -#: src/emc/usr_intf/pncconf/pncconf.glade:31043 -#: src/emc/usr_intf/pncconf/pncconf.glade:31063 -#: src/emc/usr_intf/pncconf/pncconf.glade:31083 -#: src/emc/usr_intf/pncconf/pncconf.glade:31103 -#: src/emc/usr_intf/pncconf/pncconf.glade:31123 -#: src/emc/usr_intf/pncconf/pncconf.glade:31143 -#: src/emc/usr_intf/pncconf/pncconf.glade:31163 -#: src/emc/usr_intf/pncconf/pncconf.glade:31183 -#: src/emc/usr_intf/pncconf/pncconf.glade:31203 -#: src/emc/usr_intf/pncconf/pncconf.glade:31223 -#: src/emc/usr_intf/pncconf/pncconf.glade:31243 -#: src/emc/usr_intf/pncconf/pncconf.glade:31263 -#: src/emc/usr_intf/pncconf/pncconf.glade:31283 -#: src/emc/usr_intf/pncconf/pncconf.glade:31303 -#: src/emc/usr_intf/pncconf/pncconf.glade:31611 -#: src/emc/usr_intf/pncconf/pncconf.glade:31631 -#: src/emc/usr_intf/pncconf/pncconf.glade:31651 -#: src/emc/usr_intf/pncconf/pncconf.glade:31671 -#: src/emc/usr_intf/pncconf/pncconf.glade:31691 -#: src/emc/usr_intf/pncconf/pncconf.glade:31711 -#: src/emc/usr_intf/pncconf/pncconf.glade:31731 -#: src/emc/usr_intf/pncconf/pncconf.glade:31751 -#: src/emc/usr_intf/pncconf/pncconf.glade:31771 -#: src/emc/usr_intf/pncconf/pncconf.glade:31791 -#: src/emc/usr_intf/pncconf/pncconf.glade:31811 -#: src/emc/usr_intf/pncconf/pncconf.glade:33029 -#: src/emc/usr_intf/pncconf/pncconf.glade:33292 -#: src/emc/usr_intf/pncconf/pncconf.glade:35208 -#: src/emc/usr_intf/pncconf/pncconf.glade:35228 -#: src/emc/usr_intf/pncconf/pncconf.glade:35248 -#: src/emc/usr_intf/pncconf/pncconf.glade:35268 -#: src/emc/usr_intf/pncconf/pncconf.glade:35288 -#: src/emc/usr_intf/pncconf/pncconf.glade:35308 -#: src/emc/usr_intf/pncconf/pncconf.glade:35328 -#: src/emc/usr_intf/pncconf/pncconf.glade:35348 -#: src/emc/usr_intf/pncconf/pncconf.glade:35368 -#: src/emc/usr_intf/pncconf/pncconf.glade:35388 -#: src/emc/usr_intf/pncconf/pncconf.glade:35408 -#: src/emc/usr_intf/pncconf/pncconf.glade:35428 -#: src/emc/usr_intf/pncconf/pncconf.glade:35448 -#: src/emc/usr_intf/pncconf/pncconf.glade:35468 -#: src/emc/usr_intf/pncconf/pncconf.glade:35488 -#: src/emc/usr_intf/pncconf/pncconf.glade:35508 -#: src/emc/usr_intf/pncconf/pncconf.glade:35528 -#: src/emc/usr_intf/pncconf/pncconf.glade:35548 -#: src/emc/usr_intf/pncconf/pncconf.glade:35568 -#: src/emc/usr_intf/pncconf/pncconf.glade:35588 -#: src/emc/usr_intf/pncconf/pncconf.glade:35608 -#: src/emc/usr_intf/pncconf/pncconf.glade:35628 -#: src/emc/usr_intf/pncconf/pncconf.glade:35648 -#: src/emc/usr_intf/pncconf/pncconf.glade:35839 -#: src/emc/usr_intf/pncconf/pncconf.glade:35859 -#: src/emc/usr_intf/pncconf/pncconf.glade:35879 -#: src/emc/usr_intf/pncconf/pncconf.glade:35899 -#: src/emc/usr_intf/pncconf/pncconf.glade:35919 -#: src/emc/usr_intf/pncconf/pncconf.glade:35939 -#: src/emc/usr_intf/pncconf/pncconf.glade:35959 -#: src/emc/usr_intf/pncconf/pncconf.glade:35979 -#: src/emc/usr_intf/pncconf/pncconf.glade:35999 -#: src/emc/usr_intf/pncconf/pncconf.glade:36019 -#: src/emc/usr_intf/pncconf/pncconf.glade:36039 -#: src/emc/usr_intf/pncconf/pncconf.glade:36059 -#: src/emc/usr_intf/pncconf/pncconf.glade:36079 -#: src/emc/usr_intf/pncconf/pncconf.glade:36099 -#: src/emc/usr_intf/pncconf/pncconf.glade:36119 -#: src/emc/usr_intf/pncconf/pncconf.glade:36139 -#: src/emc/usr_intf/pncconf/pncconf.glade:36159 -#: src/emc/usr_intf/pncconf/pncconf.glade:36179 -#: src/emc/usr_intf/pncconf/pncconf.glade:36199 -#: src/emc/usr_intf/pncconf/pncconf.glade:36219 -#: src/emc/usr_intf/pncconf/pncconf.glade:36239 -#: src/emc/usr_intf/pncconf/pncconf.glade:36259 -#: src/emc/usr_intf/pncconf/pncconf.glade:36279 -#: src/emc/usr_intf/pncconf/pncconf.glade:38208 -#: src/emc/usr_intf/pncconf/pncconf.glade:38549 -#: src/emc/usr_intf/pncconf/pncconf.glade:39779 -#: src/emc/usr_intf/pncconf/pncconf.glade:39799 -#: src/emc/usr_intf/pncconf/pncconf.glade:39819 -#: src/emc/usr_intf/pncconf/pncconf.glade:39839 -#: src/emc/usr_intf/pncconf/pncconf.glade:39859 -#: src/emc/usr_intf/pncconf/pncconf.glade:39879 -#: src/emc/usr_intf/pncconf/pncconf.glade:39899 -#: src/emc/usr_intf/pncconf/pncconf.glade:39919 -#: src/emc/usr_intf/pncconf/pncconf.glade:39939 -#: src/emc/usr_intf/pncconf/pncconf.glade:39959 -#: src/emc/usr_intf/pncconf/pncconf.glade:39979 -#: src/emc/usr_intf/pncconf/pncconf.glade:40199 -#: src/emc/usr_intf/pncconf/pncconf.glade:40219 -#: src/emc/usr_intf/pncconf/pncconf.glade:40239 -#: src/emc/usr_intf/pncconf/pncconf.glade:40259 -#: src/emc/usr_intf/pncconf/pncconf.glade:40279 -#: src/emc/usr_intf/pncconf/pncconf.glade:40299 -#: src/emc/usr_intf/pncconf/pncconf.glade:40319 -#: src/emc/usr_intf/pncconf/pncconf.glade:40339 -#: src/emc/usr_intf/pncconf/pncconf.glade:40359 -#: src/emc/usr_intf/pncconf/pncconf.glade:40379 -#: src/emc/usr_intf/pncconf/pncconf.glade:40399 -#: src/emc/usr_intf/pncconf/pncconf.glade:40419 -#: src/emc/usr_intf/pncconf/pncconf.glade:40439 -#: src/emc/usr_intf/pncconf/pncconf.glade:40459 -#: src/emc/usr_intf/pncconf/pncconf.glade:40479 -#: src/emc/usr_intf/pncconf/pncconf.glade:40499 -#: src/emc/usr_intf/pncconf/pncconf.glade:40519 -#: src/emc/usr_intf/pncconf/pncconf.glade:40539 -#: src/emc/usr_intf/pncconf/pncconf.glade:40559 -#: src/emc/usr_intf/pncconf/pncconf.glade:40579 -#: src/emc/usr_intf/pncconf/pncconf.glade:40599 -#: src/emc/usr_intf/pncconf/pncconf.glade:40619 -#: src/emc/usr_intf/pncconf/pncconf.glade:40639 -#: src/emc/usr_intf/pncconf/pncconf.glade:42555 -#: src/emc/usr_intf/pncconf/pncconf.glade:42778 -#: src/emc/usr_intf/pncconf/pncconf.glade:44707 -#: src/emc/usr_intf/pncconf/pncconf.glade:44727 -#: src/emc/usr_intf/pncconf/pncconf.glade:44747 -#: src/emc/usr_intf/pncconf/pncconf.glade:44767 -#: src/emc/usr_intf/pncconf/pncconf.glade:44787 -#: src/emc/usr_intf/pncconf/pncconf.glade:44807 -#: src/emc/usr_intf/pncconf/pncconf.glade:44827 -#: src/emc/usr_intf/pncconf/pncconf.glade:44847 -#: src/emc/usr_intf/pncconf/pncconf.glade:44867 -#: src/emc/usr_intf/pncconf/pncconf.glade:44887 -#: src/emc/usr_intf/pncconf/pncconf.glade:44907 -#: src/emc/usr_intf/pncconf/pncconf.glade:44927 -#: src/emc/usr_intf/pncconf/pncconf.glade:44947 -#: src/emc/usr_intf/pncconf/pncconf.glade:44967 -#: src/emc/usr_intf/pncconf/pncconf.glade:44987 -#: src/emc/usr_intf/pncconf/pncconf.glade:45007 -#: src/emc/usr_intf/pncconf/pncconf.glade:45027 -#: src/emc/usr_intf/pncconf/pncconf.glade:45047 -#: src/emc/usr_intf/pncconf/pncconf.glade:45067 -#: src/emc/usr_intf/pncconf/pncconf.glade:45087 -#: src/emc/usr_intf/pncconf/pncconf.glade:45107 -#: src/emc/usr_intf/pncconf/pncconf.glade:45127 -#: src/emc/usr_intf/pncconf/pncconf.glade:45147 -#: src/emc/usr_intf/pncconf/pncconf.glade:45456 -#: src/emc/usr_intf/pncconf/pncconf.glade:45476 -#: src/emc/usr_intf/pncconf/pncconf.glade:45496 -#: src/emc/usr_intf/pncconf/pncconf.glade:45516 -#: src/emc/usr_intf/pncconf/pncconf.glade:45536 -#: src/emc/usr_intf/pncconf/pncconf.glade:45556 -#: src/emc/usr_intf/pncconf/pncconf.glade:45576 -#: src/emc/usr_intf/pncconf/pncconf.glade:45596 -#: src/emc/usr_intf/pncconf/pncconf.glade:45616 -#: src/emc/usr_intf/pncconf/pncconf.glade:45636 -#: src/emc/usr_intf/pncconf/pncconf.glade:45656 -#: src/emc/usr_intf/pncconf/pncconf.glade:46886 -#: src/emc/usr_intf/pncconf/pncconf.glade:47122 -#: src/emc/usr_intf/pncconf/pncconf.glade:47142 -#: src/emc/usr_intf/pncconf/pncconf.glade:47162 -#: src/emc/usr_intf/pncconf/pncconf.glade:47182 -#: src/emc/usr_intf/pncconf/pncconf.glade:47202 -#: src/emc/usr_intf/pncconf/pncconf.glade:47222 -#: src/emc/usr_intf/pncconf/pncconf.glade:47242 -#: src/emc/usr_intf/pncconf/pncconf.glade:47262 -#: src/emc/usr_intf/pncconf/pncconf.glade:47282 -#: src/emc/usr_intf/pncconf/pncconf.glade:47302 -#: src/emc/usr_intf/pncconf/pncconf.glade:47322 -#: src/emc/usr_intf/pncconf/pncconf.glade:47342 -#: src/emc/usr_intf/pncconf/pncconf.glade:47362 -#: src/emc/usr_intf/pncconf/pncconf.glade:47382 -#: src/emc/usr_intf/pncconf/pncconf.glade:47402 -#: src/emc/usr_intf/pncconf/pncconf.glade:47422 -#: src/emc/usr_intf/pncconf/pncconf.glade:47442 -#: src/emc/usr_intf/pncconf/pncconf.glade:47462 -#: src/emc/usr_intf/pncconf/pncconf.glade:47482 -#: src/emc/usr_intf/pncconf/pncconf.glade:47502 -#: src/emc/usr_intf/pncconf/pncconf.glade:47522 -#: src/emc/usr_intf/pncconf/pncconf.glade:47542 -#: src/emc/usr_intf/pncconf/pncconf.glade:47562 -#: src/emc/usr_intf/pncconf/pncconf.glade:49478 -#: src/emc/usr_intf/pncconf/pncconf.glade:49701 -#: src/emc/usr_intf/pncconf/pncconf.glade:51630 -#: src/emc/usr_intf/pncconf/pncconf.glade:51650 -#: src/emc/usr_intf/pncconf/pncconf.glade:51670 -#: src/emc/usr_intf/pncconf/pncconf.glade:51690 -#: src/emc/usr_intf/pncconf/pncconf.glade:51710 -#: src/emc/usr_intf/pncconf/pncconf.glade:51730 -#: src/emc/usr_intf/pncconf/pncconf.glade:51750 -#: src/emc/usr_intf/pncconf/pncconf.glade:51770 -#: src/emc/usr_intf/pncconf/pncconf.glade:51790 -#: src/emc/usr_intf/pncconf/pncconf.glade:51810 -#: src/emc/usr_intf/pncconf/pncconf.glade:51830 -#: src/emc/usr_intf/pncconf/pncconf.glade:51850 -#: src/emc/usr_intf/pncconf/pncconf.glade:51870 -#: src/emc/usr_intf/pncconf/pncconf.glade:51890 -#: src/emc/usr_intf/pncconf/pncconf.glade:51910 -#: src/emc/usr_intf/pncconf/pncconf.glade:51930 -#: src/emc/usr_intf/pncconf/pncconf.glade:51950 -#: src/emc/usr_intf/pncconf/pncconf.glade:51970 -#: src/emc/usr_intf/pncconf/pncconf.glade:51990 -#: src/emc/usr_intf/pncconf/pncconf.glade:52010 -#: src/emc/usr_intf/pncconf/pncconf.glade:52030 -#: src/emc/usr_intf/pncconf/pncconf.glade:52050 -#: src/emc/usr_intf/pncconf/pncconf.glade:52070 -#: src/emc/usr_intf/pncconf/pncconf.glade:52379 -#: src/emc/usr_intf/pncconf/pncconf.glade:52399 -#: src/emc/usr_intf/pncconf/pncconf.glade:52419 -#: src/emc/usr_intf/pncconf/pncconf.glade:52439 -#: src/emc/usr_intf/pncconf/pncconf.glade:52459 -#: src/emc/usr_intf/pncconf/pncconf.glade:52479 -#: src/emc/usr_intf/pncconf/pncconf.glade:52499 -#: src/emc/usr_intf/pncconf/pncconf.glade:52519 -#: src/emc/usr_intf/pncconf/pncconf.glade:52539 -#: src/emc/usr_intf/pncconf/pncconf.glade:52559 -#: src/emc/usr_intf/pncconf/pncconf.glade:52579 -#: src/emc/usr_intf/pncconf/pncconf.glade:53809 -msgid "" -"GPIO Input\n" -"GPIO Output\n" -"GPIO O Drain\n" -"Encoder\n" -"PWM\n" -"StepGen\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:63929 +msgid "Digital instead of PWM outputs" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9198 -#: src/emc/usr_intf/pncconf/pncconf.glade:13188 -#: src/emc/usr_intf/pncconf/pncconf.glade:15884 -#: src/emc/usr_intf/pncconf/pncconf.glade:18394 -#: src/emc/usr_intf/pncconf/pncconf.glade:20397 -#: src/emc/usr_intf/pncconf/pncconf.glade:21325 -#: src/emc/usr_intf/pncconf/pncconf.glade:23121 -#: src/emc/usr_intf/pncconf/pncconf.glade:24917 -msgid "Launch test panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:63938 +msgid "6 outputs instead of 3 " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9213 -#: src/emc/usr_intf/pncconf/pncconf.glade:9225 -#: src/emc/usr_intf/pncconf/pncconf.glade:13162 -#: src/emc/usr_intf/pncconf/pncconf.glade:13174 -#: src/emc/usr_intf/pncconf/pncconf.glade:15858 -#: src/emc/usr_intf/pncconf/pncconf.glade:15870 -#: src/emc/usr_intf/pncconf/pncconf.glade:18367 -#: src/emc/usr_intf/pncconf/pncconf.glade:18379 -#: src/emc/usr_intf/pncconf/pncconf.glade:20370 -#: src/emc/usr_intf/pncconf/pncconf.glade:20382 -#: src/emc/usr_intf/pncconf/pncconf.glade:21339 -#: src/emc/usr_intf/pncconf/pncconf.glade:21351 -#: src/emc/usr_intf/pncconf/pncconf.glade:23135 -#: src/emc/usr_intf/pncconf/pncconf.glade:23147 -#: src/emc/usr_intf/pncconf/pncconf.glade:24931 -#: src/emc/usr_intf/pncconf/pncconf.glade:24943 -#: src/emc/usr_intf/pncconf/pncconf.glade:26815 -#: src/emc/usr_intf/pncconf/pncconf.glade:26827 -#: src/emc/usr_intf/pncconf/pncconf.glade:30826 -#: src/emc/usr_intf/pncconf/pncconf.glade:30838 -#: src/emc/usr_intf/pncconf/pncconf.glade:31831 -#: src/emc/usr_intf/pncconf/pncconf.glade:35184 -#: src/emc/usr_intf/pncconf/pncconf.glade:35196 -#: src/emc/usr_intf/pncconf/pncconf.glade:36312 -#: src/emc/usr_intf/pncconf/pncconf.glade:36324 -#: src/emc/usr_intf/pncconf/pncconf.glade:39755 -#: src/emc/usr_intf/pncconf/pncconf.glade:39767 -#: src/emc/usr_intf/pncconf/pncconf.glade:40659 -#: src/emc/usr_intf/pncconf/pncconf.glade:40671 -#: src/emc/usr_intf/pncconf/pncconf.glade:44670 -#: src/emc/usr_intf/pncconf/pncconf.glade:44682 -#: src/emc/usr_intf/pncconf/pncconf.glade:45676 -#: src/emc/usr_intf/pncconf/pncconf.glade:45688 -#: src/emc/usr_intf/pncconf/pncconf.glade:47582 -#: src/emc/usr_intf/pncconf/pncconf.glade:47594 -#: src/emc/usr_intf/pncconf/pncconf.glade:51593 -#: src/emc/usr_intf/pncconf/pncconf.glade:51605 -#: src/emc/usr_intf/pncconf/pncconf.glade:52599 -#: src/emc/usr_intf/pncconf/pncconf.glade:52611 -msgid "function" +#: src/emc/usr_intf/pncconf/pncconf.glade:63950 +msgid "Force Trapezoid Mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9305 -#: src/emc/usr_intf/pncconf/pncconf.glade:9357 -#: src/emc/usr_intf/pncconf/pncconf.glade:9409 -#: src/emc/usr_intf/pncconf/pncconf.glade:9461 -#: src/emc/usr_intf/pncconf/pncconf.glade:10301 -#: src/emc/usr_intf/pncconf/pncconf.glade:10353 -#: src/emc/usr_intf/pncconf/pncconf.glade:10405 -#: src/emc/usr_intf/pncconf/pncconf.glade:10457 -#: src/emc/usr_intf/pncconf/pncconf.glade:10509 -#: src/emc/usr_intf/pncconf/pncconf.glade:10561 -#: src/emc/usr_intf/pncconf/pncconf.glade:10613 -#: src/emc/usr_intf/pncconf/pncconf.glade:10665 -#: src/emc/usr_intf/pncconf/pncconf.glade:10717 -#: src/emc/usr_intf/pncconf/pncconf.glade:10769 -#: src/emc/usr_intf/pncconf/pncconf.glade:11089 -#: src/emc/usr_intf/pncconf/pncconf.glade:11141 -#: src/emc/usr_intf/pncconf/pncconf.glade:11579 -#: src/emc/usr_intf/pncconf/pncconf.glade:11631 -#: src/emc/usr_intf/pncconf/pncconf.glade:11683 -#: src/emc/usr_intf/pncconf/pncconf.glade:11735 -#: src/emc/usr_intf/pncconf/pncconf.glade:11787 -#: src/emc/usr_intf/pncconf/pncconf.glade:11839 -#: src/emc/usr_intf/pncconf/pncconf.glade:11891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11943 -#: src/emc/usr_intf/pncconf/pncconf.glade:11995 -#: src/emc/usr_intf/pncconf/pncconf.glade:12047 -#: src/emc/usr_intf/pncconf/pncconf.glade:12886 -#: src/emc/usr_intf/pncconf/pncconf.glade:12938 -#: src/emc/usr_intf/pncconf/pncconf.glade:12990 -#: src/emc/usr_intf/pncconf/pncconf.glade:13042 -#: src/emc/usr_intf/pncconf/pncconf.glade:13702 -#: src/emc/usr_intf/pncconf/pncconf.glade:13754 -#: src/emc/usr_intf/pncconf/pncconf.glade:14183 -#: src/emc/usr_intf/pncconf/pncconf.glade:14235 -#: src/emc/usr_intf/pncconf/pncconf.glade:14287 -#: src/emc/usr_intf/pncconf/pncconf.glade:14339 -#: src/emc/usr_intf/pncconf/pncconf.glade:14391 -#: src/emc/usr_intf/pncconf/pncconf.glade:14443 -#: src/emc/usr_intf/pncconf/pncconf.glade:14495 -#: src/emc/usr_intf/pncconf/pncconf.glade:14547 -#: src/emc/usr_intf/pncconf/pncconf.glade:14599 -#: src/emc/usr_intf/pncconf/pncconf.glade:14651 -#: src/emc/usr_intf/pncconf/pncconf.glade:14703 -#: src/emc/usr_intf/pncconf/pncconf.glade:14755 -#: src/emc/usr_intf/pncconf/pncconf.glade:15582 -#: src/emc/usr_intf/pncconf/pncconf.glade:15634 -#: src/emc/usr_intf/pncconf/pncconf.glade:15686 -#: src/emc/usr_intf/pncconf/pncconf.glade:15738 -#: src/emc/usr_intf/pncconf/pncconf.glade:16784 -#: src/emc/usr_intf/pncconf/pncconf.glade:16836 -#: src/emc/usr_intf/pncconf/pncconf.glade:16888 -#: src/emc/usr_intf/pncconf/pncconf.glade:16940 -#: src/emc/usr_intf/pncconf/pncconf.glade:16992 -#: src/emc/usr_intf/pncconf/pncconf.glade:17044 -#: src/emc/usr_intf/pncconf/pncconf.glade:17096 -#: src/emc/usr_intf/pncconf/pncconf.glade:17148 -#: src/emc/usr_intf/pncconf/pncconf.glade:17200 -#: src/emc/usr_intf/pncconf/pncconf.glade:17252 -#: src/emc/usr_intf/pncconf/pncconf.glade:17304 -#: src/emc/usr_intf/pncconf/pncconf.glade:18143 -#: src/emc/usr_intf/pncconf/pncconf.glade:18195 -#: src/emc/usr_intf/pncconf/pncconf.glade:18247 -#: src/emc/usr_intf/pncconf/pncconf.glade:18908 -#: src/emc/usr_intf/pncconf/pncconf.glade:18960 -#: src/emc/usr_intf/pncconf/pncconf.glade:26907 -#: src/emc/usr_intf/pncconf/pncconf.glade:26959 -#: src/emc/usr_intf/pncconf/pncconf.glade:27011 -#: src/emc/usr_intf/pncconf/pncconf.glade:27063 -#: src/emc/usr_intf/pncconf/pncconf.glade:27890 -#: src/emc/usr_intf/pncconf/pncconf.glade:27942 -#: src/emc/usr_intf/pncconf/pncconf.glade:27994 -#: src/emc/usr_intf/pncconf/pncconf.glade:28046 -#: src/emc/usr_intf/pncconf/pncconf.glade:28098 -#: src/emc/usr_intf/pncconf/pncconf.glade:28150 -#: src/emc/usr_intf/pncconf/pncconf.glade:28202 -#: src/emc/usr_intf/pncconf/pncconf.glade:28254 -#: src/emc/usr_intf/pncconf/pncconf.glade:28306 -#: src/emc/usr_intf/pncconf/pncconf.glade:28358 -#: src/emc/usr_intf/pncconf/pncconf.glade:28410 -#: src/emc/usr_intf/pncconf/pncconf.glade:28462 -#: src/emc/usr_intf/pncconf/pncconf.glade:29151 -#: src/emc/usr_intf/pncconf/pncconf.glade:29203 -#: src/emc/usr_intf/pncconf/pncconf.glade:29255 -#: src/emc/usr_intf/pncconf/pncconf.glade:29307 -#: src/emc/usr_intf/pncconf/pncconf.glade:29359 -#: src/emc/usr_intf/pncconf/pncconf.glade:29411 -#: src/emc/usr_intf/pncconf/pncconf.glade:29463 -#: src/emc/usr_intf/pncconf/pncconf.glade:29515 -#: src/emc/usr_intf/pncconf/pncconf.glade:29567 -#: src/emc/usr_intf/pncconf/pncconf.glade:29619 -#: src/emc/usr_intf/pncconf/pncconf.glade:29671 -#: src/emc/usr_intf/pncconf/pncconf.glade:29723 -#: src/emc/usr_intf/pncconf/pncconf.glade:30550 -#: src/emc/usr_intf/pncconf/pncconf.glade:30602 -#: src/emc/usr_intf/pncconf/pncconf.glade:30654 -#: src/emc/usr_intf/pncconf/pncconf.glade:30706 -#: src/emc/usr_intf/pncconf/pncconf.glade:32210 -#: src/emc/usr_intf/pncconf/pncconf.glade:32262 -#: src/emc/usr_intf/pncconf/pncconf.glade:32314 -#: src/emc/usr_intf/pncconf/pncconf.glade:32366 -#: src/emc/usr_intf/pncconf/pncconf.glade:32418 -#: src/emc/usr_intf/pncconf/pncconf.glade:32470 -#: src/emc/usr_intf/pncconf/pncconf.glade:32522 -#: src/emc/usr_intf/pncconf/pncconf.glade:32574 -#: src/emc/usr_intf/pncconf/pncconf.glade:32626 -#: src/emc/usr_intf/pncconf/pncconf.glade:32678 -#: src/emc/usr_intf/pncconf/pncconf.glade:32730 -#: src/emc/usr_intf/pncconf/pncconf.glade:32782 -#: src/emc/usr_intf/pncconf/pncconf.glade:33509 -#: src/emc/usr_intf/pncconf/pncconf.glade:33561 -#: src/emc/usr_intf/pncconf/pncconf.glade:33613 -#: src/emc/usr_intf/pncconf/pncconf.glade:33665 -#: src/emc/usr_intf/pncconf/pncconf.glade:33717 -#: src/emc/usr_intf/pncconf/pncconf.glade:33769 -#: src/emc/usr_intf/pncconf/pncconf.glade:33821 -#: src/emc/usr_intf/pncconf/pncconf.glade:33873 -#: src/emc/usr_intf/pncconf/pncconf.glade:33925 -#: src/emc/usr_intf/pncconf/pncconf.glade:33977 -#: src/emc/usr_intf/pncconf/pncconf.glade:34029 -#: src/emc/usr_intf/pncconf/pncconf.glade:34081 -#: src/emc/usr_intf/pncconf/pncconf.glade:34908 -#: src/emc/usr_intf/pncconf/pncconf.glade:34960 -#: src/emc/usr_intf/pncconf/pncconf.glade:35012 -#: src/emc/usr_intf/pncconf/pncconf.glade:35064 -#: src/emc/usr_intf/pncconf/pncconf.glade:36404 -#: src/emc/usr_intf/pncconf/pncconf.glade:36456 -#: src/emc/usr_intf/pncconf/pncconf.glade:36508 -#: src/emc/usr_intf/pncconf/pncconf.glade:36560 -#: src/emc/usr_intf/pncconf/pncconf.glade:37387 -#: src/emc/usr_intf/pncconf/pncconf.glade:37439 -#: src/emc/usr_intf/pncconf/pncconf.glade:37491 -#: src/emc/usr_intf/pncconf/pncconf.glade:37543 -#: src/emc/usr_intf/pncconf/pncconf.glade:37595 -#: src/emc/usr_intf/pncconf/pncconf.glade:37647 -#: src/emc/usr_intf/pncconf/pncconf.glade:37699 -#: src/emc/usr_intf/pncconf/pncconf.glade:37751 -#: src/emc/usr_intf/pncconf/pncconf.glade:37803 -#: src/emc/usr_intf/pncconf/pncconf.glade:37855 -#: src/emc/usr_intf/pncconf/pncconf.glade:37907 -#: src/emc/usr_intf/pncconf/pncconf.glade:37959 -#: src/emc/usr_intf/pncconf/pncconf.glade:38764 -#: src/emc/usr_intf/pncconf/pncconf.glade:38816 -#: src/emc/usr_intf/pncconf/pncconf.glade:38868 -#: src/emc/usr_intf/pncconf/pncconf.glade:38920 -#: src/emc/usr_intf/pncconf/pncconf.glade:38972 -#: src/emc/usr_intf/pncconf/pncconf.glade:39024 -#: src/emc/usr_intf/pncconf/pncconf.glade:39076 -#: src/emc/usr_intf/pncconf/pncconf.glade:39128 -#: src/emc/usr_intf/pncconf/pncconf.glade:39180 -#: src/emc/usr_intf/pncconf/pncconf.glade:39232 -#: src/emc/usr_intf/pncconf/pncconf.glade:39284 -#: src/emc/usr_intf/pncconf/pncconf.glade:39336 -#: src/emc/usr_intf/pncconf/pncconf.glade:40751 -#: src/emc/usr_intf/pncconf/pncconf.glade:40803 -#: src/emc/usr_intf/pncconf/pncconf.glade:40855 -#: src/emc/usr_intf/pncconf/pncconf.glade:40907 -#: src/emc/usr_intf/pncconf/pncconf.glade:41734 -#: src/emc/usr_intf/pncconf/pncconf.glade:41786 -#: src/emc/usr_intf/pncconf/pncconf.glade:41838 -#: src/emc/usr_intf/pncconf/pncconf.glade:41890 -#: src/emc/usr_intf/pncconf/pncconf.glade:41942 -#: src/emc/usr_intf/pncconf/pncconf.glade:41994 -#: src/emc/usr_intf/pncconf/pncconf.glade:42046 -#: src/emc/usr_intf/pncconf/pncconf.glade:42098 -#: src/emc/usr_intf/pncconf/pncconf.glade:42150 -#: src/emc/usr_intf/pncconf/pncconf.glade:42202 -#: src/emc/usr_intf/pncconf/pncconf.glade:42254 -#: src/emc/usr_intf/pncconf/pncconf.glade:42306 -#: src/emc/usr_intf/pncconf/pncconf.glade:42995 -#: src/emc/usr_intf/pncconf/pncconf.glade:43047 -#: src/emc/usr_intf/pncconf/pncconf.glade:43099 -#: src/emc/usr_intf/pncconf/pncconf.glade:43151 -#: src/emc/usr_intf/pncconf/pncconf.glade:43203 -#: src/emc/usr_intf/pncconf/pncconf.glade:43255 -#: src/emc/usr_intf/pncconf/pncconf.glade:43307 -#: src/emc/usr_intf/pncconf/pncconf.glade:43359 -#: src/emc/usr_intf/pncconf/pncconf.glade:43411 -#: src/emc/usr_intf/pncconf/pncconf.glade:43463 -#: src/emc/usr_intf/pncconf/pncconf.glade:43515 -#: src/emc/usr_intf/pncconf/pncconf.glade:43567 -#: src/emc/usr_intf/pncconf/pncconf.glade:44394 -#: src/emc/usr_intf/pncconf/pncconf.glade:44446 -#: src/emc/usr_intf/pncconf/pncconf.glade:44498 -#: src/emc/usr_intf/pncconf/pncconf.glade:44550 -#: src/emc/usr_intf/pncconf/pncconf.glade:46067 -#: src/emc/usr_intf/pncconf/pncconf.glade:46119 -#: src/emc/usr_intf/pncconf/pncconf.glade:46171 -#: src/emc/usr_intf/pncconf/pncconf.glade:46223 -#: src/emc/usr_intf/pncconf/pncconf.glade:46275 -#: src/emc/usr_intf/pncconf/pncconf.glade:46327 -#: src/emc/usr_intf/pncconf/pncconf.glade:46379 -#: src/emc/usr_intf/pncconf/pncconf.glade:46431 -#: src/emc/usr_intf/pncconf/pncconf.glade:46483 -#: src/emc/usr_intf/pncconf/pncconf.glade:46535 -#: src/emc/usr_intf/pncconf/pncconf.glade:46587 -#: src/emc/usr_intf/pncconf/pncconf.glade:46639 -#: src/emc/usr_intf/pncconf/pncconf.glade:47674 -#: src/emc/usr_intf/pncconf/pncconf.glade:47726 -#: src/emc/usr_intf/pncconf/pncconf.glade:47778 -#: src/emc/usr_intf/pncconf/pncconf.glade:47830 -#: src/emc/usr_intf/pncconf/pncconf.glade:48657 -#: src/emc/usr_intf/pncconf/pncconf.glade:48709 -#: src/emc/usr_intf/pncconf/pncconf.glade:48761 -#: src/emc/usr_intf/pncconf/pncconf.glade:48813 -#: src/emc/usr_intf/pncconf/pncconf.glade:48865 -#: src/emc/usr_intf/pncconf/pncconf.glade:48917 -#: src/emc/usr_intf/pncconf/pncconf.glade:48969 -#: src/emc/usr_intf/pncconf/pncconf.glade:49021 -#: src/emc/usr_intf/pncconf/pncconf.glade:49073 -#: src/emc/usr_intf/pncconf/pncconf.glade:49125 -#: src/emc/usr_intf/pncconf/pncconf.glade:49177 -#: src/emc/usr_intf/pncconf/pncconf.glade:49229 -#: src/emc/usr_intf/pncconf/pncconf.glade:49918 -#: src/emc/usr_intf/pncconf/pncconf.glade:49970 -#: src/emc/usr_intf/pncconf/pncconf.glade:50022 -#: src/emc/usr_intf/pncconf/pncconf.glade:50074 -#: src/emc/usr_intf/pncconf/pncconf.glade:50126 -#: src/emc/usr_intf/pncconf/pncconf.glade:50178 -#: src/emc/usr_intf/pncconf/pncconf.glade:50230 -#: src/emc/usr_intf/pncconf/pncconf.glade:50282 -#: src/emc/usr_intf/pncconf/pncconf.glade:50334 -#: src/emc/usr_intf/pncconf/pncconf.glade:50386 -#: src/emc/usr_intf/pncconf/pncconf.glade:50438 -#: src/emc/usr_intf/pncconf/pncconf.glade:50490 -#: src/emc/usr_intf/pncconf/pncconf.glade:51317 -#: src/emc/usr_intf/pncconf/pncconf.glade:51369 -#: src/emc/usr_intf/pncconf/pncconf.glade:51421 -#: src/emc/usr_intf/pncconf/pncconf.glade:51473 -#: src/emc/usr_intf/pncconf/pncconf.glade:52990 -#: src/emc/usr_intf/pncconf/pncconf.glade:53042 -#: src/emc/usr_intf/pncconf/pncconf.glade:53094 -#: src/emc/usr_intf/pncconf/pncconf.glade:53146 -#: src/emc/usr_intf/pncconf/pncconf.glade:53198 -#: src/emc/usr_intf/pncconf/pncconf.glade:53250 -#: src/emc/usr_intf/pncconf/pncconf.glade:53302 -#: src/emc/usr_intf/pncconf/pncconf.glade:53354 -#: src/emc/usr_intf/pncconf/pncconf.glade:53406 -#: src/emc/usr_intf/pncconf/pncconf.glade:53458 -#: src/emc/usr_intf/pncconf/pncconf.glade:53510 -#: src/emc/usr_intf/pncconf/pncconf.glade:53562 -msgid "" -"ESTOP IN\n" -"Spindle PPR\n" -"Spindle A \n" -"Spindle B \n" -"Home X \n" -"Home Y \n" -"Home Z\n" -"Home A\n" -"Minimum Limit + Home X \n" -"Minimum Limit + Home Y \n" -"Minimum Limit + Home Z \n" -"Minimum Limit + Home A\n" -"Maximum Limit + Home X \n" -"Maximum Limit + Home Y \n" -"Maximum Limit + Home Z \n" -"Maximum Limit + Home A\n" -"Both Limit + Home X \n" -"Both Limit + Home Y \n" -"Both Limit + Home Z \n" -"Both Limit + Home A\n" -"Minimum Limit X \n" -"Minimum Limit Y \n" -"Minimum Limit Z \n" -"Minimum Limit A\n" -"Maximum Limit X \n" -"Maximum Limit Y \n" -"Maximum Limit Z \n" -"Maximum Limit A\n" -"Both Limit X \n" -"Both Limit Y \n" -"Both Limit Z \n" -"Both Limit A\n" -"All limits\n" -"All home\n" -"Unused" +#: src/emc/usr_intf/pncconf/pncconf.glade:63962 +msgid "Emulate feedback " +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63974 +msgid "Emulated Hall sensors" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63987 +msgid "Emulated Fanuc Red Cap" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9515 -#: src/emc/usr_intf/pncconf/pncconf.glade:12871 -#: src/emc/usr_intf/pncconf/pncconf.glade:18128 -#: src/emc/usr_intf/pncconf/pncconf.glade:20233 -#: src/emc/usr_intf/pncconf/pncconf.glade:21486 -#: src/emc/usr_intf/pncconf/pncconf.glade:23282 -#: src/emc/usr_intf/pncconf/pncconf.glade:25078 -msgid "31:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64014 +#, fuzzy +msgid "8i20 Max Current" +msgstr "Vystrihnúť" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64048 +msgid "Output Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9531 -#: src/emc/usr_intf/pncconf/pncconf.glade:12855 -#: src/emc/usr_intf/pncconf/pncconf.glade:18112 -#: src/emc/usr_intf/pncconf/pncconf.glade:20217 -#: src/emc/usr_intf/pncconf/pncconf.glade:21502 -#: src/emc/usr_intf/pncconf/pncconf.glade:23298 -#: src/emc/usr_intf/pncconf/pncconf.glade:25094 -msgid "29:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64103 +msgid "alignment current" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9547 -#: src/emc/usr_intf/pncconf/pncconf.glade:12839 -#: src/emc/usr_intf/pncconf/pncconf.glade:18096 -#: src/emc/usr_intf/pncconf/pncconf.glade:20201 -#: src/emc/usr_intf/pncconf/pncconf.glade:21518 -#: src/emc/usr_intf/pncconf/pncconf.glade:23314 -#: src/emc/usr_intf/pncconf/pncconf.glade:25110 -msgid "27:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64113 +msgid "lead angle" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9563 -#: src/emc/usr_intf/pncconf/pncconf.glade:12823 -#: src/emc/usr_intf/pncconf/pncconf.glade:18080 -#: src/emc/usr_intf/pncconf/pncconf.glade:20185 -#: src/emc/usr_intf/pncconf/pncconf.glade:21534 -#: src/emc/usr_intf/pncconf/pncconf.glade:23330 -#: src/emc/usr_intf/pncconf/pncconf.glade:25126 -msgid "25:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64213 +#, fuzzy +msgid "Reverse" +msgstr "Vreteno Dozadu" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64223 +msgid "Input-pattern" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9936 -#: src/emc/usr_intf/pncconf/pncconf.glade:12450 -#: src/emc/usr_intf/pncconf/pncconf.glade:17707 -#: src/emc/usr_intf/pncconf/pncconf.glade:19924 -#: src/emc/usr_intf/pncconf/pncconf.glade:21795 -#: src/emc/usr_intf/pncconf/pncconf.glade:23591 -#: src/emc/usr_intf/pncconf/pncconf.glade:25387 -msgid "33:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64233 +msgid "output-pattern" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9952 -#: src/emc/usr_intf/pncconf/pncconf.glade:12434 -#: src/emc/usr_intf/pncconf/pncconf.glade:17691 -#: src/emc/usr_intf/pncconf/pncconf.glade:19908 -#: src/emc/usr_intf/pncconf/pncconf.glade:21811 -#: src/emc/usr_intf/pncconf/pncconf.glade:23607 -#: src/emc/usr_intf/pncconf/pncconf.glade:25403 -msgid "35:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64243 +msgid "Drive-offset" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9968 -#: src/emc/usr_intf/pncconf/pncconf.glade:12418 -#: src/emc/usr_intf/pncconf/pncconf.glade:17675 -#: src/emc/usr_intf/pncconf/pncconf.glade:19892 -#: src/emc/usr_intf/pncconf/pncconf.glade:21827 -#: src/emc/usr_intf/pncconf/pncconf.glade:23623 -#: src/emc/usr_intf/pncconf/pncconf.glade:25419 -msgid "37:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64253 +msgid "Encoder-offset" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9984 -#: src/emc/usr_intf/pncconf/pncconf.glade:12402 -#: src/emc/usr_intf/pncconf/pncconf.glade:17659 -#: src/emc/usr_intf/pncconf/pncconf.glade:19876 -#: src/emc/usr_intf/pncconf/pncconf.glade:21843 -#: src/emc/usr_intf/pncconf/pncconf.glade:23639 -#: src/emc/usr_intf/pncconf/pncconf.glade:25435 -msgid "39:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64263 +msgid "Poles" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10000 -#: src/emc/usr_intf/pncconf/pncconf.glade:12386 -#: src/emc/usr_intf/pncconf/pncconf.glade:17643 -#: src/emc/usr_intf/pncconf/pncconf.glade:19860 -#: src/emc/usr_intf/pncconf/pncconf.glade:21859 -#: src/emc/usr_intf/pncconf/pncconf.glade:23655 -#: src/emc/usr_intf/pncconf/pncconf.glade:25451 -msgid "41:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64283 +#, fuzzy +msgid "Configuration" +msgstr "Nastavenie HAL" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64318 +msgid "Use BLDC Motor Commutation Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10016 -#: src/emc/usr_intf/pncconf/pncconf.glade:12370 -#: src/emc/usr_intf/pncconf/pncconf.glade:17627 -#: src/emc/usr_intf/pncconf/pncconf.glade:19844 -#: src/emc/usr_intf/pncconf/pncconf.glade:21875 -#: src/emc/usr_intf/pncconf/pncconf.glade:23671 -#: src/emc/usr_intf/pncconf/pncconf.glade:25467 -msgid "43:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64354 +msgid "Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10032 -#: src/emc/usr_intf/pncconf/pncconf.glade:12354 -#: src/emc/usr_intf/pncconf/pncconf.glade:17611 -#: src/emc/usr_intf/pncconf/pncconf.glade:19828 -#: src/emc/usr_intf/pncconf/pncconf.glade:21891 -#: src/emc/usr_intf/pncconf/pncconf.glade:23687 -#: src/emc/usr_intf/pncconf/pncconf.glade:25483 -msgid "45:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64375 +msgid "% " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10099 -#: src/emc/usr_intf/pncconf/pncconf.glade:12287 -#: src/emc/usr_intf/pncconf/pncconf.glade:17544 -#: src/emc/usr_intf/pncconf/pncconf.glade:19777 -#: src/emc/usr_intf/pncconf/pncconf.glade:21942 -#: src/emc/usr_intf/pncconf/pncconf.glade:23738 -#: src/emc/usr_intf/pncconf/pncconf.glade:25534 -msgid "47:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64394 +msgid "Range:" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64419 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "RPM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10822 -#: src/emc/usr_intf/pncconf/pncconf.glade:11077 -#: src/emc/usr_intf/pncconf/pncconf.glade:11311 -#: src/emc/usr_intf/pncconf/pncconf.glade:11567 -#: src/emc/usr_intf/pncconf/pncconf.glade:13924 -#: src/emc/usr_intf/pncconf/pncconf.glade:14171 -#: src/emc/usr_intf/pncconf/pncconf.glade:16516 -#: src/emc/usr_intf/pncconf/pncconf.glade:16772 -#: src/emc/usr_intf/pncconf/pncconf.glade:19129 -#: src/emc/usr_intf/pncconf/pncconf.glade:19379 -#: src/emc/usr_intf/pncconf/pncconf.glade:22343 -#: src/emc/usr_intf/pncconf/pncconf.glade:22592 -#: src/emc/usr_intf/pncconf/pncconf.glade:24139 -#: src/emc/usr_intf/pncconf/pncconf.glade:24388 -#: src/emc/usr_intf/pncconf/pncconf.glade:25935 -#: src/emc/usr_intf/pncconf/pncconf.glade:26184 -#: src/emc/usr_intf/pncconf/pncconf.glade:28515 -#: src/emc/usr_intf/pncconf/pncconf.glade:28761 -#: src/emc/usr_intf/pncconf/pncconf.glade:28892 -#: src/emc/usr_intf/pncconf/pncconf.glade:29139 -#: src/emc/usr_intf/pncconf/pncconf.glade:33079 -#: src/emc/usr_intf/pncconf/pncconf.glade:33250 -#: src/emc/usr_intf/pncconf/pncconf.glade:33497 -#: src/emc/usr_intf/pncconf/pncconf.glade:38012 -#: src/emc/usr_intf/pncconf/pncconf.glade:38258 -#: src/emc/usr_intf/pncconf/pncconf.glade:38507 -#: src/emc/usr_intf/pncconf/pncconf.glade:42359 -#: src/emc/usr_intf/pncconf/pncconf.glade:42605 -#: src/emc/usr_intf/pncconf/pncconf.glade:42736 -#: src/emc/usr_intf/pncconf/pncconf.glade:42983 -#: src/emc/usr_intf/pncconf/pncconf.glade:46936 -#: src/emc/usr_intf/pncconf/pncconf.glade:49282 -#: src/emc/usr_intf/pncconf/pncconf.glade:49528 -#: src/emc/usr_intf/pncconf/pncconf.glade:49659 -#: src/emc/usr_intf/pncconf/pncconf.glade:49906 -#: src/emc/usr_intf/pncconf/pncconf.glade:53859 +#: src/emc/usr_intf/pncconf/pncconf.glade:64439 #, fuzzy -msgid "Pin Type" -msgstr "Typ polohy" +msgid "Use Spindle-At-Speed" +msgstr "Vreteno vypni" -#: src/emc/usr_intf/pncconf/pncconf.glade:10835 -#: src/emc/usr_intf/pncconf/pncconf.glade:11553 -#: src/emc/usr_intf/pncconf/pncconf.glade:16758 -#: src/emc/usr_intf/pncconf/pncconf.glade:19365 -#: src/emc/usr_intf/pncconf/pncconf.glade:22356 -#: src/emc/usr_intf/pncconf/pncconf.glade:24152 -#: src/emc/usr_intf/pncconf/pncconf.glade:25948 -msgid "23:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64464 +#, fuzzy +msgid "Filter gain:" +msgstr "Testujem..." + +#: src/emc/usr_intf/pncconf/pncconf.glade:64499 +msgid "Spindle Display Filter Settings" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10849 -#: src/emc/usr_intf/pncconf/pncconf.glade:11539 -#: src/emc/usr_intf/pncconf/pncconf.glade:16744 -#: src/emc/usr_intf/pncconf/pncconf.glade:19351 -#: src/emc/usr_intf/pncconf/pncconf.glade:22370 -#: src/emc/usr_intf/pncconf/pncconf.glade:24166 -#: src/emc/usr_intf/pncconf/pncconf.glade:25962 -msgid "21:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64565 +msgid "Rapid Speed Following Error:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10863 -#: src/emc/usr_intf/pncconf/pncconf.glade:11525 -#: src/emc/usr_intf/pncconf/pncconf.glade:16730 -#: src/emc/usr_intf/pncconf/pncconf.glade:19337 -#: src/emc/usr_intf/pncconf/pncconf.glade:22384 -#: src/emc/usr_intf/pncconf/pncconf.glade:24180 -#: src/emc/usr_intf/pncconf/pncconf.glade:25976 -msgid "19:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64577 +msgid "Feed Speed Following Error:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10877 -#: src/emc/usr_intf/pncconf/pncconf.glade:11511 -#: src/emc/usr_intf/pncconf/pncconf.glade:16716 -#: src/emc/usr_intf/pncconf/pncconf.glade:19323 -#: src/emc/usr_intf/pncconf/pncconf.glade:22398 -#: src/emc/usr_intf/pncconf/pncconf.glade:24194 -#: src/emc/usr_intf/pncconf/pncconf.glade:25990 -msgid "17:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64591 +msgid "Invert Motor Direction" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11497 -#: src/emc/usr_intf/pncconf/pncconf.glade:16702 -#: src/emc/usr_intf/pncconf/pncconf.glade:19309 -#: src/emc/usr_intf/pncconf/pncconf.glade:22412 -#: src/emc/usr_intf/pncconf/pncconf.glade:24208 -#: src/emc/usr_intf/pncconf/pncconf.glade:26004 -msgid "15:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64606 +msgid "Invert Encoder Direction " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10905 -#: src/emc/usr_intf/pncconf/pncconf.glade:11483 -#: src/emc/usr_intf/pncconf/pncconf.glade:16688 -#: src/emc/usr_intf/pncconf/pncconf.glade:19295 -#: src/emc/usr_intf/pncconf/pncconf.glade:22426 -#: src/emc/usr_intf/pncconf/pncconf.glade:24222 -#: src/emc/usr_intf/pncconf/pncconf.glade:26018 -msgid "13:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64661 +#, fuzzy +msgid "Single Input Encoder" +msgstr "Vreteno Dozadu" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64776 +msgid "encoder Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10919 -#: src/emc/usr_intf/pncconf/pncconf.glade:11469 -#: src/emc/usr_intf/pncconf/pncconf.glade:16674 -#: src/emc/usr_intf/pncconf/pncconf.glade:19281 -#: src/emc/usr_intf/pncconf/pncconf.glade:22440 -#: src/emc/usr_intf/pncconf/pncconf.glade:24236 -#: src/emc/usr_intf/pncconf/pncconf.glade:26032 -msgid "11:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64801 +#, fuzzy +msgid "Stepper Scale:" +msgstr "Jedna medzera" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64831 +msgid "" +"Calculate\n" +"Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10933 -#: src/emc/usr_intf/pncconf/pncconf.glade:11455 -#: src/emc/usr_intf/pncconf/pncconf.glade:16660 -#: src/emc/usr_intf/pncconf/pncconf.glade:19267 -#: src/emc/usr_intf/pncconf/pncconf.glade:22454 -#: src/emc/usr_intf/pncconf/pncconf.glade:24250 -#: src/emc/usr_intf/pncconf/pncconf.glade:26046 -msgid " 9:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64901 +msgid "Test / Tune Axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10947 -#: src/emc/usr_intf/pncconf/pncconf.glade:11441 -#: src/emc/usr_intf/pncconf/pncconf.glade:16646 -#: src/emc/usr_intf/pncconf/pncconf.glade:19253 -#: src/emc/usr_intf/pncconf/pncconf.glade:22468 -#: src/emc/usr_intf/pncconf/pncconf.glade:24264 -#: src/emc/usr_intf/pncconf/pncconf.glade:26060 -msgid " 7:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64943 +#, fuzzy +msgid "X Axis Configuration" +msgstr "Nastavenie HAL" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65155 +msgid "" +"NO\n" +"YES" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10961 -#: src/emc/usr_intf/pncconf/pncconf.glade:11427 -#: src/emc/usr_intf/pncconf/pncconf.glade:16632 -#: src/emc/usr_intf/pncconf/pncconf.glade:19239 -#: src/emc/usr_intf/pncconf/pncconf.glade:22482 -#: src/emc/usr_intf/pncconf/pncconf.glade:24278 -#: src/emc/usr_intf/pncconf/pncconf.glade:26074 -msgid " 5:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65171 +msgid "Use Encoder Index For Home:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10975 -#: src/emc/usr_intf/pncconf/pncconf.glade:11413 -#: src/emc/usr_intf/pncconf/pncconf.glade:16618 -#: src/emc/usr_intf/pncconf/pncconf.glade:19225 -#: src/emc/usr_intf/pncconf/pncconf.glade:22496 -#: src/emc/usr_intf/pncconf/pncconf.glade:24292 -#: src/emc/usr_intf/pncconf/pncconf.glade:26088 -msgid " 3:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65212 +msgid "Home Final Velocity:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10989 -#: src/emc/usr_intf/pncconf/pncconf.glade:11399 -#: src/emc/usr_intf/pncconf/pncconf.glade:16604 -#: src/emc/usr_intf/pncconf/pncconf.glade:19211 -#: src/emc/usr_intf/pncconf/pncconf.glade:22510 -#: src/emc/usr_intf/pncconf/pncconf.glade:24306 -#: src/emc/usr_intf/pncconf/pncconf.glade:26102 -msgid " 1:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65222 +msgid "" +"Same\n" +"Opposite" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:11002 -#: src/emc/usr_intf/pncconf/pncconf.glade:11065 -#: src/emc/usr_intf/pncconf/pncconf.glade:11324 -#: src/emc/usr_intf/pncconf/pncconf.glade:11386 -#: src/emc/usr_intf/pncconf/pncconf.glade:13937 -#: src/emc/usr_intf/pncconf/pncconf.glade:13999 -#: src/emc/usr_intf/pncconf/pncconf.glade:16529 -#: src/emc/usr_intf/pncconf/pncconf.glade:16591 -#: src/emc/usr_intf/pncconf/pncconf.glade:19142 -#: src/emc/usr_intf/pncconf/pncconf.glade:19198 -#: src/emc/usr_intf/pncconf/pncconf.glade:22523 -#: src/emc/usr_intf/pncconf/pncconf.glade:22580 -#: src/emc/usr_intf/pncconf/pncconf.glade:24319 -#: src/emc/usr_intf/pncconf/pncconf.glade:24376 -#: src/emc/usr_intf/pncconf/pncconf.glade:26115 -#: src/emc/usr_intf/pncconf/pncconf.glade:26172 -#: src/emc/usr_intf/pncconf/pncconf.glade:28686 -#: src/emc/usr_intf/pncconf/pncconf.glade:28749 -#: src/emc/usr_intf/pncconf/pncconf.glade:28905 -#: src/emc/usr_intf/pncconf/pncconf.glade:28967 -#: src/emc/usr_intf/pncconf/pncconf.glade:33067 -#: src/emc/usr_intf/pncconf/pncconf.glade:33263 -#: src/emc/usr_intf/pncconf/pncconf.glade:33325 -#: src/emc/usr_intf/pncconf/pncconf.glade:38183 -#: src/emc/usr_intf/pncconf/pncconf.glade:38246 -#: src/emc/usr_intf/pncconf/pncconf.glade:38520 -#: src/emc/usr_intf/pncconf/pncconf.glade:42530 -#: src/emc/usr_intf/pncconf/pncconf.glade:42593 -#: src/emc/usr_intf/pncconf/pncconf.glade:42749 -#: src/emc/usr_intf/pncconf/pncconf.glade:42811 -#: src/emc/usr_intf/pncconf/pncconf.glade:46924 -#: src/emc/usr_intf/pncconf/pncconf.glade:49453 -#: src/emc/usr_intf/pncconf/pncconf.glade:49516 -#: src/emc/usr_intf/pncconf/pncconf.glade:49672 -#: src/emc/usr_intf/pncconf/pncconf.glade:49734 -#: src/emc/usr_intf/pncconf/pncconf.glade:53847 -msgid "Inv" +#: src/emc/usr_intf/pncconf/pncconf.glade:65238 +msgid "Home Latch Direction:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:11198 +#: src/emc/usr_intf/pncconf/pncconf.glade:65251 msgid "" -" I/O\n" -"Connector 2" +"Towards Negative limit\n" +"Towards Positive limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:13811 -msgid "" -" I/O\n" -" Connector 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65267 +msgid "Home Search Direction:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:14012 -#: src/emc/usr_intf/pncconf/pncconf.glade:14039 -#: src/emc/usr_intf/pncconf/pncconf.glade:14053 -#: src/emc/usr_intf/pncconf/pncconf.glade:28632 -#: src/emc/usr_intf/pncconf/pncconf.glade:28646 -#: src/emc/usr_intf/pncconf/pncconf.glade:28673 -#: src/emc/usr_intf/pncconf/pncconf.glade:28980 -#: src/emc/usr_intf/pncconf/pncconf.glade:29007 -#: src/emc/usr_intf/pncconf/pncconf.glade:29021 -#: src/emc/usr_intf/pncconf/pncconf.glade:32951 -#: src/emc/usr_intf/pncconf/pncconf.glade:32965 -#: src/emc/usr_intf/pncconf/pncconf.glade:32992 -#: src/emc/usr_intf/pncconf/pncconf.glade:33338 -#: src/emc/usr_intf/pncconf/pncconf.glade:33365 -#: src/emc/usr_intf/pncconf/pncconf.glade:33379 -#: src/emc/usr_intf/pncconf/pncconf.glade:38129 -#: src/emc/usr_intf/pncconf/pncconf.glade:38143 -#: src/emc/usr_intf/pncconf/pncconf.glade:38170 -#: src/emc/usr_intf/pncconf/pncconf.glade:38594 -#: src/emc/usr_intf/pncconf/pncconf.glade:38621 -#: src/emc/usr_intf/pncconf/pncconf.glade:38635 -#: src/emc/usr_intf/pncconf/pncconf.glade:42476 -#: src/emc/usr_intf/pncconf/pncconf.glade:42490 -#: src/emc/usr_intf/pncconf/pncconf.glade:42517 -#: src/emc/usr_intf/pncconf/pncconf.glade:42824 -#: src/emc/usr_intf/pncconf/pncconf.glade:42851 -#: src/emc/usr_intf/pncconf/pncconf.glade:42865 -#: src/emc/usr_intf/pncconf/pncconf.glade:46808 -#: src/emc/usr_intf/pncconf/pncconf.glade:46822 -#: src/emc/usr_intf/pncconf/pncconf.glade:46849 -#: src/emc/usr_intf/pncconf/pncconf.glade:49399 -#: src/emc/usr_intf/pncconf/pncconf.glade:49413 -#: src/emc/usr_intf/pncconf/pncconf.glade:49440 -#: src/emc/usr_intf/pncconf/pncconf.glade:49747 -#: src/emc/usr_intf/pncconf/pncconf.glade:49774 -#: src/emc/usr_intf/pncconf/pncconf.glade:49788 -#: src/emc/usr_intf/pncconf/pncconf.glade:53731 -#: src/emc/usr_intf/pncconf/pncconf.glade:53745 -#: src/emc/usr_intf/pncconf/pncconf.glade:53772 -msgid " " +#: src/emc/usr_intf/pncconf/pncconf.glade:65309 +msgid "Home latch Velocity:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:16403 -msgid "" -" I/O\n" -" Connector 4" +#: src/emc/usr_intf/pncconf/pncconf.glade:65334 +msgid "filename:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:19017 +#: src/emc/usr_intf/pncconf/pncconf.glade:65347 msgid "" -" I/O\n" -" Connector 5" +"Type 1\n" +"Type 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:20813 -msgid "" -" I/O\n" -"Connector 6" +#: src/emc/usr_intf/pncconf/pncconf.glade:65392 +msgid "Use Compensation File:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:22609 -msgid "" -" I/O\n" -"Connector 7" +#: src/emc/usr_intf/pncconf/pncconf.glade:65406 +msgid "Use Backlash Compensation:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:24405 -msgid "" -" I/O\n" -"Connector 8" +#: src/emc/usr_intf/pncconf/pncconf.glade:65433 +msgid "Home Position location (offset from machine zero Origin):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:26201 -msgid "" -" I/O\n" -" Connector 9" +#: src/emc/usr_intf/pncconf/pncconf.glade:65449 +msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:28775 -#: src/emc/usr_intf/pncconf/pncconf.glade:35696 -#: src/emc/usr_intf/pncconf/pncconf.glade:42619 -#: src/emc/usr_intf/pncconf/pncconf.glade:49542 -msgid "page 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65493 +msgid "Home Switch location (Offset from machine zero Origin):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:31354 -#: src/emc/usr_intf/pncconf/pncconf.glade:38275 -#: src/emc/usr_intf/pncconf/pncconf.glade:45198 -#: src/emc/usr_intf/pncconf/pncconf.glade:52121 -msgid "page 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65509 +msgid "Home Search Velocity:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:33107 -#: src/emc/usr_intf/pncconf/pncconf.glade:40030 -#: src/emc/usr_intf/pncconf/pncconf.glade:46953 -#: src/emc/usr_intf/pncconf/pncconf.glade:53876 -msgid "page 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65524 +msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:33123 -msgid "Smart Serial 0" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Advanced Options" +msgstr "Príklady konfigurácií" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 15" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:40046 -msgid "Smart Serial 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 14" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:46969 -msgid "Smart Serial 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 13" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53892 -msgid "Smart Serial 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 12" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53914 -msgid "First Parallel Port Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 11" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53998 -msgid "Outputs (PC to Machine):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 10" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:54552 -msgid "Inputs (Machine to PC):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 9" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:55977 -msgid "Launch Test Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56003 -msgid "X Axis Motor/Encoder Configuration" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 7" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56091 -msgid "D" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 6" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56104 -#, fuzzy -msgid "I" -msgstr "Io port" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 5" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56117 -msgid "P" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56128 -#: src/emc/usr_intf/pncconf/pncconf.glade:60917 -#: src/emc/usr_intf/pncconf/pncconf.glade:62202 -#: src/emc/usr_intf/pncconf/pncconf.glade:63103 -#: src/emc/usr_intf/pncconf/pncconf.glade:64388 -#: src/emc/usr_intf/pncconf/pncconf.glade:65265 -msgid "Bias" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56141 -msgid "Deadband" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56188 -#: src/emc/usr_intf/pncconf/pncconf.glade:61128 -#: src/emc/usr_intf/pncconf/pncconf.glade:61991 -#: src/emc/usr_intf/pncconf/pncconf.glade:63314 -#: src/emc/usr_intf/pncconf/pncconf.glade:64177 -#: src/emc/usr_intf/pncconf/pncconf.glade:65470 -msgid "FF0" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56201 -#: src/emc/usr_intf/pncconf/pncconf.glade:61118 -#: src/emc/usr_intf/pncconf/pncconf.glade:62001 -#: src/emc/usr_intf/pncconf/pncconf.glade:63304 -#: src/emc/usr_intf/pncconf/pncconf.glade:64187 -#: src/emc/usr_intf/pncconf/pncconf.glade:65460 -msgid "FF1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include Halui user interface component / commands" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56214 -#: src/emc/usr_intf/pncconf/pncconf.glade:61108 -#: src/emc/usr_intf/pncconf/pncconf.glade:62011 -#: src/emc/usr_intf/pncconf/pncconf.glade:63294 -#: src/emc/usr_intf/pncconf/pncconf.glade:64197 -#: src/emc/usr_intf/pncconf/pncconf.glade:65450 -msgid "FF2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Number of digital (bit) in pins:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56282 -#, fuzzy -msgid "Servo Info" -msgstr "Informácie o nástroji" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Number of digital (bit) out pins:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56362 -#, fuzzy -msgid "Spindle Max Output:" -msgstr "Vreteno vypni" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of Internal bit memory:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56412 -#, fuzzy -msgid "Spindle Max limit:" -msgstr "Vreteno rýchlejšie" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of Internal word memory:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56426 -#, fuzzy -msgid "Spindle Min Limit:" -msgstr "Vreteno vypni" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Setup number of external pins" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56456 -msgid "" -"Open Loop\n" -" Test" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Z Auto Touch off program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56557 -msgid "Quad Pulses / Rev:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "HAL Component Page" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56572 -msgid "Dac Max Output:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Add HAL components with this page." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56586 -msgid "Dac Output Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Component" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56599 -msgid "3pwm Deadtime:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "number of components" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56612 -msgid "3pwm Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "PID" +msgstr "RÝCHLY" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "scale" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mux16" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "lowpass" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Base Thread" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56626 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Servo Thread" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Output Info" -msgstr "Informácie o doplnku" +msgid "Load Command " +msgstr "Rozkaz číslo:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56691 -msgid "Driver Type:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Thread Speed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56735 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Direction Setup" -msgstr "Vytlačiť nastavenia" +msgid "Thread Command" +msgstr "Príkaz:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56748 -msgid "Direction Hold" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Custom Components Commands" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56791 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Step Space" -msgstr "Jedna medzera" +msgid "Machine configuration complete" +msgstr "Konfigurácia skopírovaná" -#: src/emc/usr_intf/pncconf/pncconf.glade:56804 -msgid "Step On-Time" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"All the necessary information has now been gathered. Click \"Apply\" to " +"write your configuration files to disk.\n" +"\n" +"If you are using the 5i25 card with daugther boards or are using SSerial " +"based daughter cards, the cards must be connected and/or field power " +"supplied to the 5i25 \n" +"for the HAL pins to be available. If the config is expecting the pins and " +"they are not there, linuxcnc will error.\n" +"If you experience lockups while running LinuxCNC, you will need to decrease " +"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC, first verify that you " +"entered the proper timings for your stepper drivers. If that does not fix " +"the problem, then run a more thorough latency test as described on the " +"linuxcnc.org wiki:\n" +" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" +"\n" +"If you experience the \"Unexpected Realtime Delay\" message, run a more " +"thorough latency test as described on the linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56820 -msgid "Stepper Info" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +" Motor Encoder Test\n" +"Warning limits switches \n" +" Will not be obeyed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56871 -msgid "No feedback" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Slow Dac Speed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56881 -msgid "Absolute Feedback" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Fast Dac Speed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56895 -#, fuzzy -msgid "Incremental Feedback" -msgstr "Pričítať" - -#: src/emc/usr_intf/pncconf/pncconf.glade:56909 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Incremental Encoder" -msgstr "Pričítať" +msgid "Dac Offset:" +msgstr "Nástrojový doplnok:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56921 -msgid "Hall sensors" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56933 -msgid "Fanuc Red Cap " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Reset Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56945 -#, fuzzy -msgid "Use encoder Index" -msgstr "Vreteno rýchlejšie" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Enable Amp" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56976 -msgid "Input Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Invert Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57000 -msgid "Digital instead of PWM outputs" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Invert Motor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57009 -msgid "6 outputs instead of 3 " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"±\n" +"+\n" +"-\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57021 -msgid "Force Trapezoid Mode" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Seconds" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57033 -msgid "Emulate feedback " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57045 -msgid "Emulated Hall sensors" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm/minute^2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57058 -msgid "Emulated Fanuc Red Cap" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm/minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57085 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "8i20 Max Current" +msgid "Current" msgstr "Vystrihnúť" -#: src/emc/usr_intf/pncconf/pncconf.glade:57119 -msgid "Output Options" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57153 -msgid "Poles" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "P:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57163 -msgid "Encoder-offset" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "I:" +msgstr "MDI:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57173 -msgid "Drive-offset" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "D:" +msgstr "MDI:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57183 -msgid "output-pattern" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Original" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57193 -msgid "Input-pattern" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "DeadBand" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57203 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Reverse" -msgstr "Vreteno Dozadu" +msgid "PID Tuning" +msgstr "Uložiť INI tunning" -#: src/emc/usr_intf/pncconf/pncconf.glade:57303 -msgid "lead angle" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Step Time:" +msgstr "Jedna medzera" -#: src/emc/usr_intf/pncconf/pncconf.glade:57313 -msgid "alignment current" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Step Space:" +msgstr "Jedna medzera" -#: src/emc/usr_intf/pncconf/pncconf.glade:57354 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Configuration" -msgstr "Nastavenie HAL" +msgid "Direction Hold:" +msgstr "Vytlačiť nastavenia" -#: src/emc/usr_intf/pncconf/pncconf.glade:57389 -msgid "Use Brushless Motor Control" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Direction Setup:" +msgstr "Vytlačiť nastavenia" -#: src/emc/usr_intf/pncconf/pncconf.glade:57425 -msgid "Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Timing" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57446 -msgid "% " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57466 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Use Spindle-At-Speed" +msgid "spindle" msgstr "Vreteno vypni" -#: src/emc/usr_intf/pncconf/pncconf.glade:57491 -#, fuzzy -msgid "Filter gain:" -msgstr "Testujem..." - -#: src/emc/usr_intf/pncconf/pncconf.glade:57526 -msgid "Spindle Display Filter Settings" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57577 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Single Input Encoder" -msgstr "Vreteno Dozadu" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57631 -msgid "Invert Encoder Direction " -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57646 -msgid "Invert Motor Direction" -msgstr "" +msgid "Help Page" +msgstr "Testovať" -#: src/emc/usr_intf/pncconf/pncconf.glade:57661 -msgid "Feed Speed Following Error:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"X axis:\n" +"Total Travel = 10\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = 0\n" +"Pos Travel Distance = Total Travel - neg travel distance = 10\n" +"Home Position = Origin to Home Position distance = 6\n" +"\n" +"Y axis:\n" +"Total Travel = 8\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = -8\n" +"Pos Travel Distance = Total Travel - neg travel distance = 0\n" +"Home Position = Origin to Home Position distance = 0\n" +"\n" +"Z axis:\n" +"Total Travel = 12\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = -12\n" +"Pos Travel Distance = Total Travel - neg travel distance = 0\n" +"Home Position = Origin to Home Position distance = 0\n" +"\n" +"Note that the direction indicators on the top right show \n" +"movement of the TOOL and on the actual machine,\n" +"often it is the table that actually moves. In that case the \n" +"directions are opposite of shown.\n" +"\n" +"Note this is an example, Many other combinations are \n" +"possible" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57675 -msgid "Rapid Speed Following Error:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Mill" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57715 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" -"Calculate\n" -"Scale" +"Total Travel = 4 + 6 = 10\n" +"Z Home Offset = Origin to Home Switch distance = 10\n" +"Z Neg Travel Distance = Origin to neg limit distance = 0\n" +"Z Pos Travel Distance = Total Travel - neg travel distance = 10\n" +"Z Home Position = Origin to Home Position distance = 4\n" +"\n" +"X axis would be similar but not shown fully for clarity.\n" +"This is just a sample reference other switch combinations are\n" +"possible." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57744 -#, fuzzy -msgid "Stepper Scale:" -msgstr "Jedna medzera" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57771 -msgid "encoder Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Lathe" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57928 -msgid "Test / Tune Axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Diagram" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58235 -msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Output" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58251 -msgid "Home Search Velocity:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"\t\t\t\tPNCconf - Point aNd Click CONFigurator\n" +"PNCconf is a configuration program for Linuxcnc.\n" +"It configures machines using Mesa I/O cards.\n" +"It configures servo,stepper or closed loop stepper machines.\n" +"It supports some of Mesa's sserial cards.\n" +"It will forever be a work in progress as Linuxcnc changes.\n" +"\n" +"Many thanks To:\n" +"Jeff Eppler - PNCconf is based on stepconf - Jeff's creation. Jeff also has " +"helped with techincal difficulties.\n" +"Big John T - John drew the original machine illustrations. Testing and " +"suggestions.\n" +"Peter Wallace - Technical questions on Mesa's I/O cards. Supplied sample " +"equipment to test with.\n" +"Andy Pugh - suggestions, questions answered and many pin name changes :) \n" +"Dave Armstrong - testing and suggestions expecially with resolvers.\n" +"Everyone who gave a bug report ! I cannot test everything thoughly enough so " +"reports help.\n" +"\n" +"Beta 1 version" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58266 -msgid "Home Switch location (Offset from machine zero Origin):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "TPI " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58310 -msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulley teeth (motor:Leadscrew):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58326 -msgid "Home Position location (offset from machine zero Origin):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Worm turn ratio (Input:Outputl)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58355 -msgid "Use Backlash Compensation:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Microstep Multiplication Factor:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58369 -msgid "Use Compensation File:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Leadscrew Metric Pitch" +msgstr "Nahradiť týmto:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58412 -msgid "" -"Type 1\n" -"Type 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motor steps per revolution:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58427 -msgid "filename:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Motor Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58455 -msgid "Home latch Velocity:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "TPI" +msgstr "RÝCHLY" -#: src/emc/usr_intf/pncconf/pncconf.glade:58494 -msgid "Home Search Direction:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "X 4 = Pulses/Rev" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58507 -msgid "" -"Towards Negative limit\n" -"Towards Positive limit" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder lines per revolution:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58523 -msgid "Home Latch Direction:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulley teeth (encoder:Leadscrew):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58552 -msgid "Home Final Velocity:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58591 -msgid "Use Encoder Index For Home:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58603 -msgid "" -"NO\n" -"YES" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "encoder pulses per unit:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58628 -#, fuzzy -msgid "Advanced Options" -msgstr "Príklady konfigurácií" - -#: src/emc/usr_intf/pncconf/pncconf.glade:58712 -msgid "Cmd 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "motor steps per unit:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58718 -msgid "Cmd 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Calculated Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58728 -msgid "Cmd 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / encoder pulse" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58738 -msgid "Cmd 4" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Resolution:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58748 -msgid "Cmd 5" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Distance to acheave max speed:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58874 -msgid "Cmd 6" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "sec" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58884 -msgid "Cmd 7" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Khz" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58896 -msgid "Cmd 8" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Calculated Axis SCALE:" +msgstr "Rýchlosť osi:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58908 -msgid "Cmd 9" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motor RPM at max speed:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58920 -msgid "Cmd 10" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "xmaxrpm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58990 -msgid "Cmd 11" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motion Data" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59000 -msgid "Cmd 12" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "gtk-cancel" +msgstr "ZrušiťAbbrechen" -#: src/emc/usr_intf/pncconf/pncconf.glade:59012 -msgid "Cmd 13" +#: src/emc/usr_intf/gscreen/gscreen.py:349 +#, python-format +msgid "adding import dir %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59024 -msgid "Cmd 14" +#: src/emc/usr_intf/gscreen/gscreen.py:355 +#, python-format +msgid "module '%s' imported OK" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59036 -msgid "Cmd 15" +#: src/emc/usr_intf/gscreen/gscreen.py:452 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Using CUSTOM glade file from %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59053 -msgid "Include Halui user interface component / commands" +#: src/emc/usr_intf/gscreen/gscreen.py:457 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Using SKIN glade file from %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59127 -msgid "Number of digital (bit) in pins:" +#: src/emc/usr_intf/gscreen/gscreen.py:460 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: using STOCK glade file from: %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59138 -msgid "Number of digital (bit) out pins:" +#: src/emc/usr_intf/gscreen/gscreen.py:466 +#, python-format +msgid "**** Gscreen GLADE ERROR: With main screen xml file: %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59308 -msgid "Setup number of external pins" +#: src/emc/usr_intf/gscreen/gscreen.py:471 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Screen 2 -Using CUSTOM glade file from %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59360 -msgid "Z Auto Touch off program" +#: src/emc/usr_intf/gscreen/gscreen.py:477 +#, python-format +msgid "**** Gscreen GLADE ERROR: With screen 2's xml file: %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59505 -msgid "HAL Component Page" +#: src/emc/usr_intf/gscreen/gscreen.py:479 +msgid "" +"\n" +"**** GSCREEN INFO: No Screen 2 glade file present" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59648 -msgid "lowpass" +#: src/emc/usr_intf/gscreen/gscreen.py:519 +msgid "No UNITS entry found in [TRAJ] or [AXIS_0] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59675 -msgid "mux16" +#: src/emc/usr_intf/gscreen/gscreen.py:532 +msgid "" +"*** Gscreen ERROR: Asking for a HAL component using a name that already " +"exists." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59702 -msgid "scale" +#: src/emc/usr_intf/gscreen/gscreen.py:585 +msgid "No default jog increments entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59728 -#, fuzzy -msgid "PID" -msgstr "RÝCHLY" - -#: src/emc/usr_intf/pncconf/pncconf.glade:59739 -msgid "number of components" +#: src/emc/usr_intf/gscreen/gscreen.py:598 +msgid "No default angular jog increments entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59767 -msgid "Component" +#: src/emc/usr_intf/gscreen/gscreen.py:607 +#, python-format +msgid "" +"No DEFAULT_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59794 -msgid "Add HAL components with this page." +#: src/emc/usr_intf/gscreen/gscreen.py:618 +#, python-format +msgid "" +"No MAX_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59844 -#, fuzzy -msgid "Thread Command" -msgstr "Príkaz:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:59854 -msgid "Thread Speed" +#: src/emc/usr_intf/gscreen/gscreen.py:625 +msgid "No MAX_VELOCITY found in [TRAJ] of the INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59906 -#, fuzzy -msgid "Load Command " -msgstr "Rozkaz číslo:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:59952 -msgid "Servo Thread" +#: src/emc/usr_intf/gscreen/gscreen.py:638 +#, python-format +msgid "" +"No DEFAULT_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59965 -msgid "Base Thread" +#: src/emc/usr_intf/gscreen/gscreen.py:649 +#, python-format +msgid "" +"No MAX_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59979 -msgid "Custom Components Commands" +#: src/emc/usr_intf/gscreen/gscreen.py:657 +msgid "No MAX_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60031 -msgid "" -" Motor Encoder Test\n" -"Warning limits switches \n" -" Will not be obeyed" +#: src/emc/usr_intf/gscreen/gscreen.py:663 +msgid "No MIN_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60067 -#: src/emc/usr_intf/pncconf/pncconf.glade:60766 -#: src/emc/usr_intf/pncconf/pncconf.glade:61859 -#: src/emc/usr_intf/pncconf/pncconf.glade:62952 -#: src/emc/usr_intf/pncconf/pncconf.glade:64045 -#: src/emc/usr_intf/pncconf/pncconf.glade:65025 -msgid "Invert Motor" +#: src/emc/usr_intf/gscreen/gscreen.py:669 +msgid "No MAX_FEED_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60083 -#: src/emc/usr_intf/pncconf/pncconf.glade:60782 -#: src/emc/usr_intf/pncconf/pncconf.glade:61875 -#: src/emc/usr_intf/pncconf/pncconf.glade:62968 -#: src/emc/usr_intf/pncconf/pncconf.glade:64061 -#: src/emc/usr_intf/pncconf/pncconf.glade:65040 -msgid "Invert Encoder" +#: src/emc/usr_intf/gscreen/gscreen.py:674 +msgid "This screen will be orientated for Lathe options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60100 -msgid "Enable Amp" +#: src/emc/usr_intf/gscreen/gscreen.py:727 +msgid "CYCLE_TIME in [DISPLAY] of INI file is missing: defaulting to 100ms" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60114 -msgid "Reset Encoder" +#: src/emc/usr_intf/gscreen/gscreen.py:730 +msgid "CYCLE_TIME in [DISPLAY] of INI file is too small: defaulting to 100ms" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60142 -msgid "Encoder Scale:" +#: src/emc/usr_intf/gscreen/gscreen.py:732 +#, python-format +msgid "timeout %d" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60153 -#, fuzzy -msgid "Dac Offset:" -msgstr "Nástrojový doplnok:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:60243 -msgid "Fast Dac Speed" +#: src/emc/usr_intf/gscreen/gscreen.py:1001 +msgid "" +"**** WARNING GSCREEN: could not understand the window geometry info in " +"hidden preference file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60258 -msgid "Slow Dac Speed" +#: src/emc/usr_intf/gscreen/gscreen.py:1089 +msgid "Control powered up and initialized" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60407 -#: src/emc/usr_intf/pncconf/pncconf.glade:61503 -#: src/emc/usr_intf/pncconf/pncconf.glade:62596 -#: src/emc/usr_intf/pncconf/pncconf.glade:63689 -#: src/emc/usr_intf/pncconf/pncconf.glade:64788 -msgid "mm/minute" +#: src/emc/usr_intf/gscreen/gscreen.py:1264 +msgid "Cycle start pressed in AUTO mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60441 -#: src/emc/usr_intf/pncconf/pncconf.glade:61536 -#: src/emc/usr_intf/pncconf/pncconf.glade:62629 -#: src/emc/usr_intf/pncconf/pncconf.glade:63722 -#: src/emc/usr_intf/pncconf/pncconf.glade:64821 -msgid "mm/minute^2" +#: src/emc/usr_intf/gscreen/gscreen.py:1267 +msgid "Cycle start pressed in MDI mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60550 -#: src/emc/usr_intf/pncconf/pncconf.glade:61644 -#: src/emc/usr_intf/pncconf/pncconf.glade:62737 -#: src/emc/usr_intf/pncconf/pncconf.glade:64930 -msgid "Enable" +#: src/emc/usr_intf/gscreen/gscreen.py:1290 +#, python-format +msgid "Please change to tool # %s, then click OK." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60600 -#: src/emc/usr_intf/pncconf/pncconf.glade:61693 -#: src/emc/usr_intf/pncconf/pncconf.glade:62786 -#: src/emc/usr_intf/pncconf/pncconf.glade:63879 -#: src/emc/usr_intf/pncconf/pncconf.glade:65139 -msgid "Seconds" +#: src/emc/usr_intf/gscreen/gscreen.py:1291 +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +#: src/emc/usr_intf/gscreen/gscreen.py:1789 +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2849 +msgid "INFO:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60907 -#: src/emc/usr_intf/pncconf/pncconf.glade:62212 -#: src/emc/usr_intf/pncconf/pncconf.glade:63093 -#: src/emc/usr_intf/pncconf/pncconf.glade:64398 -#: src/emc/usr_intf/pncconf/pncconf.glade:65255 -msgid "DeadBand" +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +msgid "Can't start spindle manually while MDI busy" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61089 -#: src/emc/usr_intf/pncconf/pncconf.glade:61380 -#: src/emc/usr_intf/pncconf/pncconf.glade:62030 -#: src/emc/usr_intf/pncconf/pncconf.glade:62401 -#: src/emc/usr_intf/pncconf/pncconf.glade:63275 -#: src/emc/usr_intf/pncconf/pncconf.glade:63562 -#: src/emc/usr_intf/pncconf/pncconf.glade:64216 -#: src/emc/usr_intf/pncconf/pncconf.glade:64587 -#: src/emc/usr_intf/pncconf/pncconf.glade:65431 -#: src/emc/usr_intf/pncconf/pncconf.glade:65718 -msgid "Original" +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +msgid "can't start spindle manually in Auto mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61138 -#: src/emc/usr_intf/pncconf/pncconf.glade:61981 -#: src/emc/usr_intf/pncconf/pncconf.glade:63324 -#: src/emc/usr_intf/pncconf/pncconf.glade:64167 -#: src/emc/usr_intf/pncconf/pncconf.glade:65480 -#, fuzzy -msgid "D:" -msgstr "MDI:" +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +msgid "No direction selected for spindle" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61148 -#: src/emc/usr_intf/pncconf/pncconf.glade:61971 -#: src/emc/usr_intf/pncconf/pncconf.glade:63334 -#: src/emc/usr_intf/pncconf/pncconf.glade:64157 -#: src/emc/usr_intf/pncconf/pncconf.glade:65490 +#: src/emc/usr_intf/gscreen/gscreen.py:1331 +#: src/emc/usr_intf/gscreen/gscreen.py:1333 #, fuzzy -msgid "I:" -msgstr "MDI:" +msgid "Spindle Speed Preset Entry" +msgstr "Zmena rýchlosti vretena:" -#: src/emc/usr_intf/pncconf/pncconf.glade:61158 -#: src/emc/usr_intf/pncconf/pncconf.glade:61961 -#: src/emc/usr_intf/pncconf/pncconf.glade:63344 -#: src/emc/usr_intf/pncconf/pncconf.glade:64147 -#: src/emc/usr_intf/pncconf/pncconf.glade:65500 -msgid "P:" +#: src/emc/usr_intf/gscreen/gscreen.py:1362 +#: src/emc/usr_intf/gscreen/gscreen.py:1367 +msgid "Manual Tool Index Entry" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61168 -#: src/emc/usr_intf/pncconf/pncconf.glade:61392 -#: src/emc/usr_intf/pncconf/pncconf.glade:61951 -#: src/emc/usr_intf/pncconf/pncconf.glade:62389 -#: src/emc/usr_intf/pncconf/pncconf.glade:63354 -#: src/emc/usr_intf/pncconf/pncconf.glade:63574 -#: src/emc/usr_intf/pncconf/pncconf.glade:64137 -#: src/emc/usr_intf/pncconf/pncconf.glade:64575 -#: src/emc/usr_intf/pncconf/pncconf.glade:65510 -#: src/emc/usr_intf/pncconf/pncconf.glade:65730 -#, fuzzy -msgid "Current" -msgstr "Vystrihnúť" +#: src/emc/usr_intf/gscreen/gscreen.py:1489 +msgid "Entry dialog" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61185 -#: src/emc/usr_intf/pncconf/pncconf.glade:62278 -#: src/emc/usr_intf/pncconf/pncconf.glade:63371 -#: src/emc/usr_intf/pncconf/pncconf.glade:64464 -#: src/emc/usr_intf/pncconf/pncconf.glade:65527 -#, fuzzy -msgid "PID Tuning" -msgstr "Uložiť INI tunning" +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +msgid "Classicladder realtime component not detected" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61370 -#: src/emc/usr_intf/pncconf/pncconf.glade:62413 -#: src/emc/usr_intf/pncconf/pncconf.glade:63552 -#: src/emc/usr_intf/pncconf/pncconf.glade:64599 -#: src/emc/usr_intf/pncconf/pncconf.glade:65708 -#, fuzzy -msgid "Direction Setup:" -msgstr "Vytlačiť nastavenia" +#: src/emc/usr_intf/gscreen/gscreen.py:1617 +msgid "ladder not available - is the realtime component loaded?" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61404 -#: src/emc/usr_intf/pncconf/pncconf.glade:62379 -#: src/emc/usr_intf/pncconf/pncconf.glade:63586 -#: src/emc/usr_intf/pncconf/pncconf.glade:64565 -#: src/emc/usr_intf/pncconf/pncconf.glade:65742 +#: src/emc/usr_intf/gscreen/gscreen.py:1691 #, fuzzy -msgid "Direction Hold:" -msgstr "Vytlačiť nastavenia" +msgid "Override Entry" +msgstr "Zmeniť limity" -#: src/emc/usr_intf/pncconf/pncconf.glade:61414 -#: src/emc/usr_intf/pncconf/pncconf.glade:62369 -#: src/emc/usr_intf/pncconf/pncconf.glade:63596 -#: src/emc/usr_intf/pncconf/pncconf.glade:64555 -#: src/emc/usr_intf/pncconf/pncconf.glade:65752 +#: src/emc/usr_intf/gscreen/gscreen.py:1719 #, fuzzy -msgid "Step Space:" -msgstr "Jedna medzera" +msgid "Machine powered on" +msgstr "Stroj zapnutý" -#: src/emc/usr_intf/pncconf/pncconf.glade:61424 -#: src/emc/usr_intf/pncconf/pncconf.glade:62359 -#: src/emc/usr_intf/pncconf/pncconf.glade:63606 -#: src/emc/usr_intf/pncconf/pncconf.glade:64545 -#: src/emc/usr_intf/pncconf/pncconf.glade:65762 +#: src/emc/usr_intf/gscreen/gscreen.py:1724 #, fuzzy -msgid "Step Time:" -msgstr "Jedna medzera" +msgid "Machine Estopped!" +msgstr "Pozícia stroja" -#: src/emc/usr_intf/pncconf/pncconf.glade:61439 -#: src/emc/usr_intf/pncconf/pncconf.glade:62528 -#: src/emc/usr_intf/pncconf/pncconf.glade:63621 -#: src/emc/usr_intf/pncconf/pncconf.glade:64714 -#: src/emc/usr_intf/pncconf/pncconf.glade:65777 -msgid "Step Timing" +#: src/emc/usr_intf/gscreen/gscreen.py:1727 +msgid "Calculator" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:63830 -msgid "enable" +#: src/emc/usr_intf/gscreen/gscreen.py:1857 +#, python-format +msgid "Axes %s are homed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65798 -#, fuzzy -msgid "spindle" -msgstr "Vreteno vypni" - -#: src/emc/usr_intf/pncconf/pncconf.glade:65881 -#, fuzzy -msgid "Help Page" -msgstr "Testovať" - -#: src/emc/usr_intf/pncconf/pncconf.glade:65911 -msgid "" -"X axis:\n" -"Total Travel = 10\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = 0\n" -"Pos Travel Distance = Total Travel - neg travel distance = 10\n" -"Home Position = Origin to Home Position distance = 6\n" -"\n" -"Y axis:\n" -"Total Travel = 8\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = -8\n" -"Pos Travel Distance = Total Travel - neg travel distance = 0\n" -"Home Position = Origin to Home Position distance = 0\n" -"\n" -"Z axis:\n" -"Total Travel = 12\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = -12\n" -"Pos Travel Distance = Total Travel - neg travel distance = 0\n" -"Home Position = Origin to Home Position distance = 0\n" -"\n" -"Note that the direction indicators on the top right show \n" -"movement of the TOOL and on the actual machine,\n" -"often it is the table that actually moves. In that case the \n" -"directions are opposite of shown.\n" -"\n" -"Note this is an example, Many other combinations are \n" -"possible" +#: src/emc/usr_intf/gscreen/gscreen.py:1864 +msgid "All the axes have been homed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65951 -msgid "Mill" +#: src/emc/usr_intf/gscreen/gscreen.py:1874 +#, python-format +msgid "There are unhomed axes: %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65970 -msgid "" -"Total Travel = 4 + 6 = 10\n" -"Z Home Offset = Origin to Home Switch distance = 10\n" -"Z Neg Travel Distance = Origin to neg limit distance = 0\n" -"Z Pos Travel Distance = Total Travel - neg travel distance = 10\n" -"Z Home Position = Origin to Home Position distance = 4\n" -"\n" -"X axis would be similar but not shown fully for clarity.\n" -"This is just a sample reference other switch combinations are\n" -"possible." -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:1879 +#, fuzzy, python-format +msgid "Program loaded: %s" +msgstr "Súbor programu je %s" -#: src/emc/usr_intf/pncconf/pncconf.glade:65994 -msgid "Lathe" +#: src/emc/usr_intf/gscreen/gscreen.py:1977 +#, fuzzy +msgid "Manual Spindle Control" +msgstr "Vreteno Pomalšie" + +#: src/emc/usr_intf/gscreen/gscreen.py:2034 +msgid "Keyboard" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66010 -msgid "Diagram" +#: src/emc/usr_intf/gscreen/gscreen.py:2067 +msgid "Error with launching 'Onboard' on-screen keyboard program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66043 -msgid "Output" +#: src/emc/usr_intf/gscreen/gscreen.py:2215 +#, python-format +msgid "**** GSCREEN INFO: Overriding internal signal call to %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66123 -msgid "Motor steps per revolution:" +#: src/emc/usr_intf/gscreen/gscreen.py:2643 +msgid " Zero Origin" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66173 -#: src/emc/usr_intf/pncconf/pncconf.glade:66459 +#: src/emc/usr_intf/gscreen/gscreen.py:2644 #, fuzzy -msgid "Leadscrew Metric Pitch" -msgstr "Nahradiť týmto:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:66186 -msgid "Microstep Multiplication Factor:" -msgstr "" +msgid "Offset Origin" +msgstr "Informácie o doplnku" -#: src/emc/usr_intf/pncconf/pncconf.glade:66199 -#: src/emc/usr_intf/pncconf/pncconf.glade:66481 -msgid "Worm turn ratio (Input:Outputl)" +#: src/emc/usr_intf/gscreen/gscreen.py:2659 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing text or type) " +"in INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66212 -msgid "Pulley teeth (motor:Leadscrew):" +#: src/emc/usr_intf/gscreen/gscreen.py:2661 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing pinname) in " +"INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66356 -msgid "TPI " +#: src/emc/usr_intf/gscreen/gscreen.py:2663 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing boldtext) in " +"INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66372 -msgid "Step Motor Scale" +#: src/emc/usr_intf/gscreen/gscreen.py:2667 +#, python-format +msgid "" +"**** Gscreen ERROR: invalid message type (%s)in INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66472 -msgid "Pulley teeth (encoder:Leadscrew):" +#: src/emc/usr_intf/gscreen/gscreen.py:2699 +msgid "Dialog error - Is the dialog handler missing from the handler file?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66537 -msgid "Encoder lines per revolution:" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:2701 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3540 +#, fuzzy +msgid "Manual Toolchange" +msgstr "Súbor nástrojov" -#: src/emc/usr_intf/pncconf/pncconf.glade:66547 -msgid "X 4 = Pulses/Rev" +#: src/emc/usr_intf/gscreen/gscreen.py:2703 +#: src/emc/usr_intf/gmoccapy/dialogs.py:94 +#: src/emc/usr_intf/gmoccapy/dialogs.py:107 +#: src/emc/usr_intf/gmoccapy/dialogs.py:119 +msgid "Operator Message" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66651 +#: src/emc/usr_intf/gscreen/gscreen.py:2737 +#: src/emc/usr_intf/gscreen/gscreen.py:2741 +#: src/emc/usr_intf/gmoccapy/dialogs.py:155 +#: src/emc/usr_intf/gmoccapy/dialogs.py:159 #, fuzzy -msgid "TPI" -msgstr "RÝCHLY" +msgid "Restart Entry" +msgstr "Reštartovať" -#: src/emc/usr_intf/pncconf/pncconf.glade:66667 -msgid "Encoder Scale" +#: src/emc/usr_intf/gscreen/gscreen.py:2752 +#: src/emc/usr_intf/gmoccapy/dialogs.py:173 +msgid "Enter" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66711 -msgid "motor steps per unit:" +#: src/emc/usr_intf/gscreen/gscreen.py:2774 +#, python-format +msgid "Ready to Restart program from line %d" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66721 -msgid "encoder pulses per unit:" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:2807 +#, fuzzy +msgid "Invalid embeded tab configuration" +msgstr "Príklady konfigurácií" -#: src/emc/usr_intf/pncconf/pncconf.glade:66756 -msgid " " +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +msgid "Can't jog multiple axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66770 -msgid "Calculated Scale" +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +msgid "No axis selected to jog" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66848 -msgid "xmaxrpm" +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +msgid "No axis selected to move" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66864 -msgid "RPM" +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +msgid "Can't home multiple axis - select HOME ALL instead" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66877 -msgid "Motor RPM at max speed:" +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +msgid "No axis selected to home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66921 -#, fuzzy -msgid "Calculated Axis SCALE:" -msgstr "Rýchlosť osi:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:66934 -msgid "Khz" +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +msgid "Can't unhome multiple axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66949 -msgid "sec" +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +msgid "No axis selected to unhome" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67049 -msgid "Distance to acheave max speed:" +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +msgid "No axis selected for origin zeroing" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67077 -msgid "Resolution:" +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +msgid "No axis selected for origin touch-off" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67105 -msgid "mm / encoder pulse" +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +msgid "Can't tool touch-off multiple axes" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67123 -msgid "Motion Data" +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +msgid "No axis selected for tool touch-off" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67151 +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#: src/emc/usr_intf/gscreen/gscreen.py:3375 #, fuzzy -msgid "gtk-cancel" -msgstr "ZrušiťAbbrechen" +msgid "Error Message" +msgstr "Chyba" -#: src/emc/task/emctaskmain.cc:467 src/emc/task/emctaskmain.cc:500 -#, c-format -msgid "%s exceeds +X limit" +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#, python-format +msgid "Tool editor error - is the %s editor available?" msgstr "" -#: src/emc/task/emctaskmain.cc:472 src/emc/task/emctaskmain.cc:505 -#, c-format -msgid "%s exceeds +Y limit" +#: src/emc/usr_intf/gscreen/gscreen.py:3377 +#: src/emc/usr_intf/gscreen/gscreen.py:3379 +msgid "Message" msgstr "" -#: src/emc/task/emctaskmain.cc:477 src/emc/task/emctaskmain.cc:510 -#, c-format -msgid "%s exceeds +Z limit" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:3409 +#, python-format +msgid "%d RPM" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:48 +#: src/emc/usr_intf/gscreen/gscreen.glade:59 +#: src/emc/usr_intf/gscreen/gscreen.glade:135 +#: src/emc/usr_intf/gscreen/gscreen.glade:176 +#: src/emc/usr_intf/gscreen/gscreen.glade:187 +#: src/emc/usr_intf/gscreen/gscreen.glade:264 +#: src/emc/usr_intf/gscreen/gscreen.glade:306 +#: src/emc/usr_intf/gscreen/gscreen.glade:317 +#: src/emc/usr_intf/gscreen/gscreen.glade:393 +#: src/emc/usr_intf/gscreen/gscreen.glade:434 +#: src/emc/usr_intf/gscreen/gscreen.glade:445 +#: src/emc/usr_intf/gscreen/gscreen.glade:521 +#: src/emc/usr_intf/gscreen/gscreen.glade:562 +#: src/emc/usr_intf/gscreen/gscreen.glade:573 +#: src/emc/usr_intf/gscreen/gscreen.glade:649 +#: src/emc/usr_intf/gscreen/gscreen.glade:690 +#: src/emc/usr_intf/gscreen/gscreen.glade:701 +#: src/emc/usr_intf/gscreen/gscreen.glade:777 +#: src/emc/usr_intf/gscreen/gscreen.glade:818 +#: src/emc/usr_intf/gscreen/gscreen.glade:829 +#: src/emc/usr_intf/gscreen/gscreen.glade:905 +#: src/emc/usr_intf/gscreen/gscreen.glade:946 +#: src/emc/usr_intf/gscreen/gscreen.glade:957 +#: src/emc/usr_intf/gscreen/gscreen.glade:1033 +#: src/emc/usr_intf/gscreen/gscreen.glade:1074 +#: src/emc/usr_intf/gscreen/gscreen.glade:1085 +#: src/emc/usr_intf/gscreen/gscreen.glade:1161 +msgid "0000.0000" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:73 +#: src/emc/usr_intf/gscreen/gscreen.glade:201 +#: src/emc/usr_intf/gscreen/gscreen.glade:331 +#: src/emc/usr_intf/gscreen/gscreen.glade:459 +#: src/emc/usr_intf/gscreen/gscreen.glade:587 +#: src/emc/usr_intf/gscreen/gscreen.glade:715 +#: src/emc/usr_intf/gscreen/gscreen.glade:843 +#: src/emc/usr_intf/gscreen/gscreen.glade:971 +#: src/emc/usr_intf/gscreen/gscreen.glade:1099 +msgid "REL" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:99 +#: src/emc/usr_intf/gscreen/gscreen.glade:227 +#: src/emc/usr_intf/gscreen/gscreen.glade:357 +#: src/emc/usr_intf/gscreen/gscreen.glade:485 +#: src/emc/usr_intf/gscreen/gscreen.glade:613 +#: src/emc/usr_intf/gscreen/gscreen.glade:741 +#: src/emc/usr_intf/gscreen/gscreen.glade:869 +#: src/emc/usr_intf/gscreen/gscreen.glade:997 +#: src/emc/usr_intf/gscreen/gscreen.glade:1125 +msgid "ABS" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:630 +msgid "B" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:758 +msgid "C" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:886 +#, fuzzy +msgid "U" +msgstr "Hore" -#: src/emc/task/emctaskmain.cc:482 src/emc/task/emctaskmain.cc:515 -#, c-format -msgid "%s exceeds -X limit" +#: src/emc/usr_intf/gscreen/gscreen.glade:1014 +msgid "V" msgstr "" -#: src/emc/task/emctaskmain.cc:487 src/emc/task/emctaskmain.cc:520 -#, c-format -msgid "%s exceeds -Y limit" +#: src/emc/usr_intf/gscreen/gscreen.glade:1298 +msgid "G code" msgstr "" -#: src/emc/task/emctaskmain.cc:492 src/emc/task/emctaskmain.cc:525 -#, c-format -msgid "%s exceeds -Z limit" +#: src/emc/usr_intf/gscreen/gscreen.glade:1392 +msgid "G Codes Active" msgstr "" -#: src/emc/task/emctaskmain.cc:853 -#, c-format -msgid "" -"command (%s) cannot be executed until the machine is out of E-stop and " -"turned on" +#: src/emc/usr_intf/gscreen/gscreen.glade:1451 +msgid "MV:100%" msgstr "" -#: src/emc/task/emctaskmain.cc:973 -#, c-format -msgid "can't do that (%s) in manual mode" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1470 +#, fuzzy +msgid " Mist" +msgstr "Fúkanie zapnuté" -#: src/emc/task/emctaskmain.cc:1072 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter idle" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1481 +#, fuzzy +msgid " Flood " +msgstr "Chladenie zapnuté" -#: src/emc/task/emctaskmain.cc:1132 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter reading" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1533 +#, fuzzy +msgid " At Speed " +msgstr "Zmena rýchlosti vretena:" -#: src/emc/task/emctaskmain.cc:1216 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter paused" +#: src/emc/usr_intf/gscreen/gscreen.glade:1546 +msgid " Jog mode" msgstr "" -#: src/emc/task/emctaskmain.cc:1278 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter waiting" +#: src/emc/usr_intf/gscreen/gscreen.glade:1600 +msgid "10 DPM" msgstr "" -#: src/emc/task/emctaskmain.cc:1370 -#, c-format -msgid "can't do that (%s) in MDI mode" +#: src/emc/usr_intf/gscreen/gscreen.glade:1616 +msgid "10 Ipm" msgstr "" -#: src/emc/task/emctaskmain.cc:2015 -msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" +#: src/emc/usr_intf/gscreen/gscreen.glade:1690 +#, fuzzy +msgid "Status" +msgstr "Príkaz:" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1715 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2510 +msgid "" +"Search\n" +" Text:" msgstr "" -#: src/emc/task/emctaskmain.cc:2084 -msgid "Can't issue MDI command when not homed" +#: src/emc/usr_intf/gscreen/gscreen.glade:1766 +#, fuzzy +msgid "Mode" +msgstr "Vreteno vypni" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1782 +msgid "Main Level" msgstr "" -#: src/emc/task/emctaskmain.cc:2089 -msgid "Must be in MDI mode to issue MDI command" +#: src/emc/usr_intf/gscreen/gscreen.glade:1823 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3678 +msgid "Themes" msgstr "" -#: src/emc/task/emctaskmain.cc:2151 -msgid "Can't run a program when not homed" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1847 +#, fuzzy +msgid "Relative Text Color" +msgstr "Relatívna pozícia" -#: src/emc/rs274ngc/interp_arc.cc:108 src/emc/rs274ngc/rs274ngc_return.hh:160 -msgid "Zero radius arc" +#: src/emc/usr_intf/gscreen/gscreen.glade:1895 +msgid "DTG Text Color" msgstr "" -#: src/emc/rs274ngc/interp_arc.cc:112 src/emc/rs274ngc/interp_arc.cc:279 -#, c-format -msgid "" -"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " -"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " -"rel_err=%.4f%%" +#: src/emc/usr_intf/gscreen/gscreen.glade:1916 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3710 +msgid "Warning Audio" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:90 -msgid "G4 not allowed with G2 or G3 because they both use P" +#: src/emc/usr_intf/gscreen/gscreen.glade:1926 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3723 +msgid "Alert Audio" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:93 -msgid "Line with G10 does not have L1, L10, L11, L2, or L20" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1947 +#, fuzzy +msgid "Grid Size" +msgstr "Veľkosť" -#: src/emc/rs274ngc/interp_check.cc:94 -msgid "P value not an integer with G10" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1986 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4119 +#, fuzzy +msgid "Starting RPM" +msgstr "Nastavenia" -#: src/emc/rs274ngc/interp_check.cc:95 -msgid "P value out of range (0-9) with G10 L2 or L20" +#: src/emc/usr_intf/gscreen/gscreen.glade:2015 +msgid "Metric\n" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:96 -msgid "P value out of range with G10 L1 or G10 L10" +#: src/emc/usr_intf/gscreen/gscreen.glade:2030 +msgid "" +" Display\n" +"Aux Screen" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:100 -msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2045 +#, fuzzy +msgid "" +"Diameter\n" +" Mode" +msgstr "Priemer:" -#: src/emc/rs274ngc/interp_check.cc:258 -msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2062 +#: src/emc/usr_intf/gscreen/gscreen.glade:3096 +#, fuzzy +msgid "" +" Show\n" +"Offsets" +msgstr "Ukázať Reštart" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2079 +#, fuzzy +msgid "" +"Show\n" +"DTG" +msgstr "Ukázať" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2096 +msgid "" +" Gscreen\n" +"Fullscreen" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:264 -msgid "E word with no G76, M66, M67 or M68 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2118 +msgid "" +" On M7 Use\n" +"Aux Coolant" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:269 -msgid "H word with no G43 or G76 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2131 +msgid "" +" On M8 Use\n" +"Aux Coolant" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:275 -msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2144 +msgid "Hide Pointer" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:281 -msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2156 +msgid "" +" Desktop\n" +"Notification" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:287 -msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2228 +#: src/emc/usr_intf/gscreen/gscreen.glade:2368 +#, fuzzy +msgid "Debug" +msgstr "Odstraňovanie chýb..." + +#: src/emc/usr_intf/gscreen/gscreen.glade:2263 +msgid "Alarm History" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:297 +#: src/emc/usr_intf/gscreen/gscreen.glade:2281 msgid "" -"L word with no G10, cutter compensation, canned cycle, digital/analog input, " -"or NURBS code" +" Launch\n" +"Halshow" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:309 +#: src/emc/usr_intf/gscreen/gscreen.glade:2293 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6449 +#, fuzzy +msgid "Calibration" +msgstr "Kalibrácia..." + +#: src/emc/usr_intf/gscreen/gscreen.glade:2304 +#, fuzzy +msgid "Halmeter" +msgstr "HAL-Meter" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2315 msgid "" -"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " -"M53 M62 M63 M64 M65 M66 or user M code to use it" +"linuxcnc\n" +" Status" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:314 -msgid "P value not an integer with M19 G2 or G3" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2327 +#, fuzzy +msgid "Halscope" +msgstr "HAL-Dosah" -#: src/emc/rs274ngc/interp_check.cc:316 -msgid "P value must be 0,1,or 2 with M19" +#: src/emc/usr_intf/gscreen/gscreen.glade:2338 +msgid "Ladder" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:318 -msgid "P value should be 1 or greater with G2 or G3" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2386 +#, fuzzy +msgid "Tooleditor" +msgstr "Editor" -#: src/emc/rs274ngc/interp_check.cc:326 +#: src/emc/usr_intf/gscreen/gscreen.glade:2404 +#, fuzzy msgid "" -"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " -"code that uses it" -msgstr "" +"Offset\n" +" Page" +msgstr "Offset hodnota" -#: src/emc/rs274ngc/interp_check.cc:336 -msgid "R value must be within 0..360 with M19" +#: src/emc/usr_intf/gscreen/gscreen.glade:2572 +#: src/emc/usr_intf/gscreen/gscreen.glade:2749 +#: src/emc/usr_intf/gscreen/gscreen.glade:3156 +msgid "\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:138 -msgid "You must specify both X and Y coordinates for Control Points" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2584 +#, fuzzy +msgid "Tool Setting" +msgstr "Nastavenia" -#: src/emc/rs274ngc/interp_convert.cc:141 -msgid "Can specify P without X and Y only for the first control point" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2648 +#, fuzzy +msgid "" +"Single\n" +" Step" +msgstr "Jedna medzera" -#: src/emc/rs274ngc/interp_convert.cc:144 -msgid "Must specify positive weight P for every Control Point" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2661 +#, fuzzy +msgid "" +"Run At\n" +" Line" +msgstr "Čas pohybu" -#: src/emc/rs274ngc/interp_convert.cc:147 -msgid "Cannot make a NURBS with 0 feedrate" +#: src/emc/usr_intf/gscreen/gscreen.glade:2673 +msgid "" +"Change \n" +" View" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:182 -msgid "Cannot use G5.3 without G5.2 first" +#: src/emc/usr_intf/gscreen/gscreen.glade:2760 +msgid "Homing\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:183 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:2781 +#, fuzzy msgid "" -"You must specify a number of control points at least equal to the order L = " -"%d" -msgstr "" +"Ignore\n" +"Limits" +msgstr "Všetky súbory" -#: src/emc/rs274ngc/interp_convert.cc:212 -msgid "Cannot convert spline with cutter radius compensation" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2810 +#, fuzzy +msgid "" +" Set\n" +"Override" +msgstr "Nastav prechod posunu" -#: src/emc/rs274ngc/interp_convert.cc:222 -msgid "Splines must be in the XY plane" +#: src/emc/usr_intf/gscreen/gscreen.glade:2824 +msgid "Graphics\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:227 -msgid "Splines may not have motion in Z, A, B, or C" +#: src/emc/usr_intf/gscreen/gscreen.glade:2838 +msgid "" +"Menu\n" +"Level" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:231 -msgid "Must specify both I and J with G5.1" +#: src/emc/usr_intf/gscreen/gscreen.glade:2851 +msgid "" +" Launch\n" +"Keyboard" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:250 -msgid "Must specify both I and J, or neither" +#: src/emc/usr_intf/gscreen/gscreen.glade:2868 +msgid "Select Buttons" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:261 -msgid "Must specify both P and Q with G5" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2955 +#, fuzzy +msgid "" +"Unhome \n" +" All" +msgstr "Uložiť všetky" -#: src/emc/rs274ngc/interp_convert.cc:362 +#: src/emc/usr_intf/gscreen/gscreen.glade:2967 +#, fuzzy msgid "" -"The move just after exiting cutter compensation mode must be straight, not " -"an arc" -msgstr "" +"Unhome\n" +" Axis" +msgstr "Domov" -#: src/emc/rs274ngc/interp_convert.cc:370 -msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" +#: src/emc/usr_intf/gscreen/gscreen.glade:2979 +#: src/emc/usr_intf/gscreen/gscreen.glade:3084 +msgid "" +"Toggle\n" +"Readout" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:382 -#: src/emc/rs274ngc/interp_convert.cc:4266 -msgid "Cannot feed with zero spindle speed in feed per rev mode" +#: src/emc/usr_intf/gscreen/gscreen.glade:3004 +msgid "" +"Jogging\n" +" Mode" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:393 -#: src/emc/rs274ngc/interp_convert.cc:399 -#: src/emc/rs274ngc/interp_convert.cc:408 -#: src/emc/rs274ngc/interp_convert.cc:414 -#: src/emc/rs274ngc/interp_convert.cc:423 -#: src/emc/rs274ngc/interp_convert.cc:429 -#, c-format -msgid "%c word missing in absolute center arc" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3016 +#, fuzzy +msgid "" +"coordinate\n" +" System" +msgstr "Okno Kontroly Systému Súradníc" -#: src/emc/rs274ngc/interp_convert.cc:649 +#: src/emc/usr_intf/gscreen/gscreen.glade:3060 msgid "" -"Radius of cutter compensation entry arc is not greater than the tool radius" +"Index\n" +" Tool" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:868 -#: src/emc/rs274ngc/interp_convert.cc:878 src/emc/rs274ngc/interp_queue.cc:592 +#: src/emc/usr_intf/gscreen/gscreen.glade:3072 +#, fuzzy msgid "" -"Arc move in concave corner cannot be reached by the tool without gouging" -msgstr "" +"Spindle\n" +"Controls" +msgstr "Priebežný" -#: src/emc/rs274ngc/interp_convert.cc:904 -msgid "Arc to arc motion is invalid because the arcs have the same center" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3195 +#, fuzzy +msgid "Open" +msgstr "Otvoriť..." -#: src/emc/rs274ngc/interp_convert.cc:907 +#: src/emc/usr_intf/gscreen/gscreen.glade:3205 +#, fuzzy msgid "" -"Arc to arc motion makes a corner the compensated tool can't fit in without " -"gouging" -msgstr "" +" Block\n" +"Delete" +msgstr "Vymazať" -#: src/emc/rs274ngc/interp_convert.cc:1036 -#: src/emc/rs274ngc/interp_convert.cc:1037 -#: src/emc/rs274ngc/interp_convert.cc:1038 -#: src/emc/rs274ngc/interp_convert.cc:3733 -#: src/emc/rs274ngc/interp_convert.cc:3736 -#: src/emc/rs274ngc/interp_convert.cc:3739 src/emc/rs274ngc/interp_find.cc:97 -#, c-format -msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3217 +#, fuzzy +msgid "" +"Optional\n" +" Stop" +msgstr "Možnosť prerušenia" -#: src/emc/rs274ngc/interp_convert.cc:1494 -msgid "Cannot change control mode with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3229 +msgid "" +" Full\n" +"View" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1607 -msgid "Cannot change coordinate systems with cutter radius compensation on" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3265 +#, fuzzy +msgid "" +"Next\n" +" Tab" +msgstr "Ďalšia hodnota" -#: src/emc/rs274ngc/interp_convert.cc:1851 -#, c-format -msgid "G%d.1 with no D word" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3285 +#, fuzzy +msgid "" +" Feed\n" +"Override" +msgstr "Začať posun:" -#: src/emc/rs274ngc/interp_convert.cc:1854 -#, c-format -msgid "G%d.1 with L word, but plane is not G18" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3298 +#, fuzzy +msgid "" +"Spindle\n" +"Override" +msgstr "Nastaviť zmenu vretena" -#: src/emc/rs274ngc/interp_convert.cc:1865 -#, c-format -msgid "G%d requires D word to be a whole number" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3311 +#, fuzzy +msgid "" +" Rapid\n" +"Override" +msgstr "Nastaviť zmenu vretena" -#: src/emc/rs274ngc/interp_convert.cc:1872 -#, c-format -msgid "G%d with lathe tool, but plane is not G18" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3332 +#, fuzzy +msgid "" +" Jog\n" +"Speed" +msgstr "Rýchlosť krokov" -#: src/emc/rs274ngc/interp_convert.cc:2271 -msgid "Cannot set reference point with cutter compensation in effect" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3345 +#, fuzzy +msgid "" +" Jog\n" +"Increments" +msgstr "Pričítať" -#: src/emc/rs274ngc/interp_convert.cc:2786 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:3361 msgid "" -"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" +"Adjust\n" +"Rotary" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2787 -#, c-format -msgid "BUG: restore from level %d !?" +#: src/emc/usr_intf/gscreen/gscreen.glade:3383 +msgid "" +"Change\n" +" View" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2788 -#, c-format -msgid "BUG: restore to level %d !?" +#: src/emc/usr_intf/gscreen/gscreen.glade:3431 +msgid "" +" Pan\n" +"Vertical" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2807 -#, c-format -msgid "M7x: restore_settings G20/G21 failed: '%s'" +#: src/emc/usr_intf/gscreen/gscreen.glade:3444 +msgid "" +" Pan\n" +"Horizontal" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2819 -#, c-format -msgid "M7x: restore_settings failed executing: '%s': %s" +#: src/emc/usr_intf/gscreen/gscreen.glade:3457 +msgid "" +" Rotate\n" +"Horiontal" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2885 -msgid "Cannot set motion output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3470 +msgid "" +" Rotate\n" +"Vertical" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2886 -msgid "No valid P word with M62" +#: src/emc/usr_intf/gscreen/gscreen.glade:3491 +msgid "" +"Search\n" +" Bwd" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2890 -msgid "Cannot set motion digital output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3503 +msgid "" +"Search\n" +" Fwd" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2891 -msgid "No valid P word with M63" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3561 +#, fuzzy +msgid "" +" Reload\n" +"Program" +msgstr "Program" -#: src/emc/rs274ngc/interp_convert.cc:2895 -#: src/emc/rs274ngc/interp_convert.cc:2900 -msgid "Cannot set auxiliary digital output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3604 +msgid "" +" Clear\n" +"status" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2896 -msgid "No valid P word with M64" +#: src/emc/usr_intf/gscreen/gscreen.glade:3634 +msgid "G54" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2901 -msgid "No valid P word with M65" +#: src/emc/usr_intf/gscreen/gscreen.glade:3650 +msgid "calc" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2931 -msgid "invalid P-word with M66" +#: src/emc/usr_intf/gscreen/gscreen.glade:3725 +msgid "test" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2946 -msgid "Cannot wait for digital input with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3728 +msgid "test2" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2958 -msgid "Cannot wait for analog input with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3778 +msgid "Data Entry" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2973 -msgid "Cannot set motion analog output with cutter radius compensation on" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3805 +#, fuzzy +msgid "Calculator Entry" +msgstr "Príkaz:" -#: src/emc/rs274ngc/interp_convert.cc:2974 -msgid "Invalid analog index with M67" +#: src/emc/usr_intf/gscreen/gscreen.glade:3894 +#, fuzzy +msgid "Program Restart" +msgstr "Ukázať Reštart" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3909 +msgid "" +"Highlighting the run-at-line with the\n" +"up / down buttons or entering the line\n" +"directly." msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2980 -msgid "Cannot set auxiliary analog output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3923 +msgid "" +"Line\n" +" Up" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2981 -msgid "Invalid analog index with M68" +#: src/emc/usr_intf/gscreen/gscreen.glade:3946 +msgid "" +" Line\n" +"Down" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3012 -msgid "Need non-negative Q-word to specify tool number with M61" +#: src/emc/usr_intf/gscreen/gscreen.glade:4028 +msgid "S 1000" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3087 -msgid "Q word with M19 requires a value > 0" +#: src/emc/usr_intf/gscreen/gscreen.glade:4098 +msgid " FWD" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3115 -msgid "Cannot restore context from invalid stack frame - missing M70/M73?" +#: src/emc/usr_intf/gscreen/gscreen.glade:4133 +msgid " REV" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3156 -#: src/emc/rs274ngc/interp_convert.cc:3173 -#: src/emc/rs274ngc/interp_convert.cc:3188 -#: src/emc/rs274ngc/interp_convert.cc:3202 -#: src/emc/rs274ngc/interp_convert.cc:3216 -msgid "Cannot enable overrides with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen2.glade:35 +msgid "screen 2" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3163 -#: src/emc/rs274ngc/interp_convert.cc:3178 -#: src/emc/rs274ngc/interp_convert.cc:3193 -#: src/emc/rs274ngc/interp_convert.cc:3207 -#: src/emc/rs274ngc/interp_convert.cc:3221 -msgid "Cannot disable overrides with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:403 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:884 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:923 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:934 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:949 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1099 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1102 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1156 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1163 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1166 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2148 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2157 +msgid "**** GMOCCAPY INFO ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3325 -#: src/emc/rs274ngc/interp_convert.cc:3326 -#: src/emc/rs274ngc/interp_convert.cc:3327 -#, c-format -msgid "Indexing axis %c can only be moved with G0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:404 +msgid "**** no valid probe config in INI File ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3334 -#: src/emc/rs274ngc/interp_convert.cc:3336 -#: src/emc/rs274ngc/interp_convert.cc:3338 -#, c-format -msgid "Indexing axis %c can only be moved alone" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:405 +msgid "**** disabled tool measurement ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3433 -msgid "Cannot probe with feed per rev mode" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:770 +msgid "**** GMOCCAPY ERROR : ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3481 -msgid "Cannot change retract mode with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:772 +#, python-format +msgid "" +"**** gmoccapy can only handle 4 axis, ****\n" +"**** but you have given %d through your INI file ****\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3515 -msgid "G10 L1 without offsets has no effect" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:774 +msgid "" +"**** gmoccapy will not start ****\n" +"\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3621 -msgid "Q number in G10 is not an integer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:786 +#, fuzzy, python-format +msgid "Home axis %s" +msgstr "Domov" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:885 +msgid "**** To many increments given in INI File for this screen ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3622 -msgid "Invalid tool orientation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:886 +msgid "**** Only the first 10 will be reachable through this screen ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3721 -msgid "I J words not allowed with G10 L2" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:924 +msgid "**** gmoccapy screen 2 found ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3742 -msgid "" -"Cannot change the active coordinate system with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:929 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1055 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1177 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1225 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1844 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2190 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2200 +msgid "**** GMOCCAPY ERROR ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3750 -msgid "R not allowed in G10 L20" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:930 +msgid "**** screen 2 GLADE ERROR: ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4323 -msgid "Spindle not turning in G33" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:935 +msgid "**** No gmoccapy2.glade file present ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4333 -msgid "Spindle not turning in G33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:950 +msgid "**** Invalid embeded tab configuration ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4376 -msgid "BUG: An axis incorrectly moved along with an indexer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:951 +msgid "**** No tabs will be added! ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4389 -msgid "BUG: trying to index incorrect axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:964 +msgid "ERROR, trying to initialize the user tabs or panaels, check for typos" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4481 -msgid "Cannot use G76 threading cycle with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1056 +msgid "**** Did not find a toolfile file in [EMCIO] TOOL_TABLE ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4484 -msgid "In G76, I must not be 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1100 +msgid "**** audio available! ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4486 -msgid "In G76, J must be greater than 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1103 +msgid "**** no audio available! ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4488 -msgid "In G76, K must be greater than J" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1104 +msgid "**** PYGST libray not installed? ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4631 -msgid "" -"Length of cutter compensation entry move is not greater than the tool radius" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1157 +msgid "**** virtual keyboard program found : " msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4850 -msgid "Zero degree inside corner is invalid for cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1164 +msgid "**** virtual keyboard program found : " msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4888 -#: src/emc/rs274ngc/interp_convert.cc:4896 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1167 msgid "" -"Arc to straight motion makes a corner the compensated tool can't fit in " -"without gouging" +"**** No virtual keyboard installed, we checked for and ." msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4980 -msgid "Cannot change tools with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1178 +msgid "**** Error with launching virtual keyboard," msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:5101 -msgid "Cannot change tool offset with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1179 +msgid "**** is onboard or matchbox-keyboard installed? ****" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:590 -#, c-format -msgid "" -"BUG: cutter compensation has generated an invalid arc with mismatched radii " -"r1 %f r2 %f\n" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1193 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1875 +msgid "interrupt running macro" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:612 -msgid "BUG: Unsupported plane in cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1226 +msgid "**** Did not find a parameter file in [RS274NGC] PARAMETER_FILE ****" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:622 -msgid "" -"Straight traverse in concave corner cannot be reached by the tool without " -"gouging" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1294 +msgid "Select the file you want to be loaded at program start" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:650 -#, c-format -msgid "BUG: Unsupported plane [%d] in cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1329 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1353 +#, python-format +msgid "**** GMOCCAPY ERROR **** /n Message type %s not suported" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:661 -msgid "" -"Straight feed in concave corner cannot be reached by the tool without gouging" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1462 +msgid "Unknown error type and no error text given" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:628 -msgid "Cannot feed with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1478 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1840 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1847 +msgid "Important Warning" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:629 -msgid "Cannot use inverse time feed with canned cycles" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1498 +msgid "ERROR : External ESTOP is set, could not change state!" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:630 -msgid "Cannot use canned cycles with cutter compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1511 +msgid "ERROR : Could not switch the machine on, is limit switch aktivated?" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:818 -msgid "G17 canned cycle is not possible on a machine without Z axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1730 +msgid "It is not possible to change to MDI Mode at the moment" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1004 -msgid "G17.1 canned cycle is not possible on a machine without W axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1754 +msgid "It is not possible to change to Auto Mode at the moment" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1220 -msgid "G19 canned cycle is not possible on a machine without X axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1838 +msgid "" +"\n" +"**** No subroutine folder or program prefix is given in the ini file **** \n" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1388 -msgid "G19.1 canned cycle is not possible on a machine without U axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1839 +msgid "**** so the corresponding file could not be found ****" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1613 -msgid "G18 canned cycle is not possible on a machine without Y axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1845 +#, python-format +msgid "" +"\n" +"**** File %s of the macro could not be found ****\n" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1780 -msgid "G18.1 canned cycle is not possible on a machine without V axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1846 +#, python-format +msgid "**** we searched in subdirectory %s ****" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:170 -msgid "Cannot use polar coordinates with G53" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1851 +msgid "Enter value:" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 -#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 -#: src/emc/rs274ngc/interp_find.cc:347 -msgid "Cannot specify X or Y words with polar coordinate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1852 +#, fuzzy, python-format +msgid "Set parameter %s to:" +msgstr "Načítať súbor parametra" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1854 +msgid "conversion error" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:272 -msgid "Must specify angle in polar coordinate if at the origin" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1855 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3610 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3634 +msgid "Conversion error !" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:338 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1856 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3299 msgid "" -"Incremental motion with polar coordinates is indeterminate when at the origin" +"Please enter only numerical values\n" +"Values have not been applied" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:348 -msgid "G91 motion with polar coordinates is indeterminate when at the origin" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2149 +#, python-brace-format +msgid "**** replaced {0} to {1} ****" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:720 -#, c-format -msgid "Requested tool %d not found in the tool table" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2158 +msgid "" +"\n" +"**** found more than 9 macros, only the first 9 will be used ****" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:154 -msgid "Cannot use polar coordinate on a machine lacking X or Y axes" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2191 +#, python-format +msgid "**** %s ****" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:155 -msgid "Cannot use polar coordinate except in G17 plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2201 +#, python-format +msgid "**** No widget named: %s to sensitize ****" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:156 -msgid "Cannot specify both polar coordinate and X word" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2366 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1561 +#, fuzzy +msgid "No tool description available" +msgstr "Nie sú dostupné žiadne detaily." -#: src/emc/rs274ngc/interp_internal.cc:157 -msgid "Cannot specify both polar coordinate and Y word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2591 +#, python-format +msgid "Halo, welcome to the test message %d" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:178 -#: src/emc/rs274ngc/interp_internal.cc:190 -#: src/emc/rs274ngc/interp_internal.cc:203 -msgid "Polar coordinates can only be used for motion" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2732 +msgid "Hal Pin is low, Access denied" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1143 src/emc/rs274ngc/interp_read.cc:1147 -#, c-format -msgid "Bad character '\\%03o' used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2734 +msgid "wrong code entered, Access denied" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1147 -#, c-format -msgid "Bad character '%c' used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2735 +msgid "Just to warn you" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1671 -msgid "Left bracket missing after 'while'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2810 +msgid "ERROR : No limit switch is active, ignore limits will not be set." msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1686 -msgid "Left bracket missing after 'repeat'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2850 +msgid "Classicladder real-time component not detected" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1701 -msgid "Left bracket missing after 'if'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2937 +msgid "Something went wrong, we have an unknown spindle widget" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1716 -msgid "Left bracket missing after 'elseif'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3046 +msgid "Do you really want to delete the MDI history?\n" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1919 -msgid "Cannot read current position with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3047 +msgid "this will not delete the MDI History file, but will\n" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1934 -#, fuzzy -msgid "Expected # reading parameter" -msgstr "Rozšíriť parametre" - -#: src/emc/rs274ngc/interp_read.cc:1936 -msgid "Expected ] reading bracketed parameter" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3048 +msgid "delete the listbox entries for this session" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2608 -#, c-format -msgid "bad number format (conversion failed) parsing '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3049 +msgid "Attention!!" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2609 -#, c-format -msgid "bad number format (trailing characters) parsing '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3076 +msgid "This button will show or hide the keyboard" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2699 -msgid "Calculation resulted in 'not a number'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3196 +#, python-format +msgid "Offset %s could not be set, because off unknown axis" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2701 -msgid "Calculation resulted in 'infinity'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3197 +msgid "Wrong offset setting!" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2994 -#, c-format -msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3202 +msgid "Enter value for diameter" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3106 -msgid "Multiple U words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3203 +#, fuzzy +msgid "Set diameter to:" +msgstr "Priemer:" -#: src/emc/rs274ngc/interp_read.cc:3122 -msgid "Multiple V words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3206 +msgid "Enter value for radius" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3138 -msgid "Multiple W words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3207 +#, fuzzy +msgid "Set radius to:" +msgstr "Hodnota osi:" -#: src/emc/rs274ngc/interp_o_word.cc:95 -#, c-format -msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3210 +#, fuzzy, python-format +msgid "Enter value for axis %s" +msgstr "Upravovací Súbor je %s" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3211 +#, fuzzy, python-format +msgid "Set axis %s to:" +msgstr "Hodnota osi:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3215 +msgid "Conversion error in btn_set_value" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:161 -#, fuzzy, c-format -msgid "Named parameter #<%s> not defined" -msgstr "Načítať súbor parametra" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3216 +msgid "Conversion error in btn_set_value!" +msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:191 -#, fuzzy, c-format -msgid "cant open ini file '%s'" -msgstr "Nie je možné otvoriť %s." +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3217 +msgid "Please enter only numerical values. Values have not been applied" +msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:208 -#, fuzzy, c-format -msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" -msgstr "Načítať súbor parametra" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3232 +msgid "" +"you did not selected a system to be changed to, so nothing will be changed" +msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:232 -#, c-format -msgid "fetch_hal_param: hal_init(%s): %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3640 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3654 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3658 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3673 +msgid "Important Warning!" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:233 -#, c-format -msgid "fetch_hal_param: hal_ready(): %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3284 +msgid "Enter the block height" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:370 -#, c-format -msgid "Internal error: Could not assign #<%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3285 +msgid "Block height measured from base table" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:378 -#, c-format -msgid "Cannot assign to read-only parameter #<%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3297 +msgid "Conversion error in btn_block_height" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:682 -#, c-format -msgid "BUG: lookup_named_param(%s): unhandled index=%fn" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3298 +msgid "Conversion error in btn_block_height!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_pre.cc:1269 src/emc/rs274ngc/rs274ngc_pre.cc:1344 -msgid "Queue is not empty after tool change" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3536 +msgid "Please remove the mounted tool and press OK when done" msgstr "" -#: src/emc/rs274ngc/rs274ngc_pre.cc:1648 -#, c-format -msgid "Unable to open parameter file: '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3539 +#, python-brace-format +msgid "" +"Please change to tool\n" +"\n" +"# {0:d} {1}\n" +"\n" +" then click OK." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:4 -msgid "A file is already open" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3549 +msgid "Tool Change has been aborted!\n" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:5 -msgid "All axes missing with g92" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3550 +msgid "The old tool will remain set!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:6 -msgid "All axes missing with motion code" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3570 +msgid "No or more than one tool selected in tool table" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:7 -msgid "Arc radius too small to reach end point" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3571 +msgid "Please select only one tool in the table" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:8 -msgid "Argument to acos out of range" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3573 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3580 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3589 +msgid "Warning Tool Touch off not possible!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:9 -msgid "Argument to asin out of range" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3577 +msgid "you can not touch of a tool, witch is not mounted in the spindle" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:10 -msgid "Attempt to divide by zero" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3578 +msgid "your selection has been reseted to the tool in spindle" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:11 -msgid "Attempt to raise negative to non integer power" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3586 +msgid "" +"Tool touch off is not possible with cutter radius compensation switched on!\n" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:12 -msgid "Bad format unsigned integer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3587 +msgid "Please emit an G40 before tool touch off" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:13 -msgid "Bad number format" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3597 +msgid "Real big error!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:14 -msgid "Bug bad g code modal group 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3598 +msgid "" +"You managed to come to a place that is not possible in on_btn_tool_touchoff" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:15 -msgid "Bug code not g0 or g1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3602 +#, python-format +msgid "Enter value for axis %s to set:" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:16 -msgid "Bug code not g17 g18 or g19" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3603 +#, python-brace-format +msgid "Set parameter of tool {0:d} and axis {1} to:" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:17 -msgid "Bug code not g20 or g21" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3608 +#, python-format +msgid "Conversion error because of wrong entry for touch off axis %s" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:18 -msgid "Bug code not g28 or g30" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3628 +msgid "Enter the tool number as integer " msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:19 -msgid "Bug code not g2 or g3" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3629 +#, fuzzy +msgid "Select the tool to change" +msgstr "Vyberte premennú pre zobrazenie." + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3631 +msgid "Conversion error because of wrong entry for tool number\n" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:20 -msgid "Bug code not g4 g10 g28 g30 g53 or g92 series" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3632 +msgid "enter only integer nummbers" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:21 -msgid "Bug code not g61 g61.1 or g64" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3657 +msgid "Selected tool is already in spindle, no change needed." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:22 -msgid "Bug code not g90 or g91" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3653 +msgid "" +"you selected no or more than one tool, the tool selection must be unique" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:23 -msgid "Bug code not g98 or g99" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3672 +msgid "Could not understand the entered tool number. Will not change anything" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:24 -msgid "Bug code not in g92 series" +#: src/emc/usr_intf/gmoccapy/dialogs.py:33 +#: src/emc/usr_intf/gmoccapy/dialogs.py:38 +msgid "Enter System Unlock Code" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:25 -msgid "Bug code not in range g54 to g593" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:26 -msgid "Bug code not m0 m1 m2 m30 m60" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter the value to set" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:27 -msgid "Bug distance mode not g90 or g91" +#: src/emc/usr_intf/gmoccapy/notification.py:205 +#, python-format +msgid "Error trying to delet the message with number %s" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:28 -msgid "Bug function should not have been called" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:409 +msgid "left rotate, middle move, right zoom" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:29 -msgid "Bug in tool radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:413 +msgid "left zoom, middle move, right rotate" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:30 -msgid "Bug plane not xy yz or xz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:417 +msgid "left move, middle rotate, right zoom" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:31 -msgid "Bug side not right or left" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:421 +msgid "left zoom, middle rotate, right move" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:32 -msgid "Bug unknown motion code" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:425 +msgid "left move, middle zoom, right rotate" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:33 -msgid "Bug unknown operation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:429 +msgid "left rotate, middle zoom, right move" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:34 -msgid "Cannot change axis offsets with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:526 +msgid "clear plot" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:35 -msgid "Cannot create backup file" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:585 +msgid "view perspective" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:36 -msgid "Cannot do g1 with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:608 +msgid "view along the X axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:37 -msgid "Cannot do zero repeats of cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:633 +msgid "view along the Y axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:38 -msgid "Cannot make arc with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:658 +msgid "view along the Z axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:39 -msgid "Cannot open backup file" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:685 +msgid "Show or hide tool path" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:40 -msgid "Cannot open variable file" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:708 +msgid "Show or hide dimensions" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:41 -msgid "Cannot probe with cutter radius comp on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:731 +msgid "" +"view along the Y axis from positive to negative as viewn for a back tool " +"lathe" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:42 -msgid "Cannot probe with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:791 +#, fuzzy +msgid "Offset Page" +msgstr "Offset hodnota" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:809 +#, fuzzy +msgid "Tooledit" +msgstr "Nástroje" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:831 +#, fuzzy +msgid "File Selection" +msgstr "Nastavenie HAL" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:869 +msgid "Toggle between metric and imperial units" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:43 -msgid "Cannot put a b in canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:887 +msgid "Switch DRO to DTG mode" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:44 -msgid "Cannot put a c in canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:905 +msgid "Toggle between machine and relative coordinates" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:45 -msgid "Cannot put an a in canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:928 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:946 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:963 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:980 +msgid "Klick to toggle through the DRO modes" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:46 -msgid "Cannot turn cutter radius comp on when on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1253 +#, fuzzy +msgid "Ignore limits" +msgstr "Zmeniť limity" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1321 +#, fuzzy +msgid "Jogging" +msgstr "Nastavenie HAL" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1430 +msgid "Information over the tool in spindle" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:47 -msgid "Cannot use axis values with g80" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1448 +#, fuzzy +msgid "Tool no." +msgstr "Informácie o nástroji" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1474 +#, fuzzy +msgid "Diameter" +msgstr "Priemer:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1503 +#, fuzzy +msgid "offset z" +msgstr "Doplnky" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1532 +#, fuzzy +msgid "offset x" +msgstr "Doplnky" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1580 +#, fuzzy +msgid "Tool information" +msgstr "Nastavenie HAL" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1592 +msgid "G and M code information as well as speed and feed" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:48 -msgid "Cannot use axis values without a g code that uses them" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1611 +#, fuzzy +msgid "active_mcodes_label" +msgstr "Aktívne G Kódy" -#: src/emc/rs274ngc/rs274ngc_return.hh:49 -msgid "Cannot use g28 or g30 with cutter radius comp" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1663 +#, fuzzy +msgid "active_gcodes_label" +msgstr "Aktívne G Kódy" -#: src/emc/rs274ngc/rs274ngc_return.hh:50 -msgid "Cannot use g53 incremental" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1717 +#, fuzzy +msgid "G-Code" +msgstr "Vreteno vypni" -#: src/emc/rs274ngc/rs274ngc_return.hh:51 -msgid "Cannot use g53 with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1730 +msgid "The name and location of the loaded program" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:52 -msgid "Cannot use two g codes that both use axis values" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1742 +#, fuzzy +msgid "No Program loaded" +msgstr "Súbor programu" -#: src/emc/rs274ngc/rs274ngc_return.hh:53 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1750 #, fuzzy -msgid "Command too long" -msgstr "Zadaná pozícia" +msgid "Program" +msgstr "Program" -#: src/emc/rs274ngc/rs274ngc_return.hh:54 -msgid "Current point same as end point of arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1800 +msgid "Vel." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:55 -msgid "Dwell time missing with g4" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1814 +msgid "Displays the current velocity" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:56 -msgid "Dwell time p word missing with g82" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1838 +msgid "adjust max vel of machine" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:57 -msgid "Dwell time p word missing with g86" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1854 +msgid "Max. Velocity" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:58 -msgid "Dwell time p word missing with g88" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1885 +msgid "Displayes the programmed feed rate" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:59 -msgid "Dwell time p word missing with g89" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1904 +#, fuzzy +msgid "reset feed override to 100 %" +msgstr "Nastav prechod posunu" -#: src/emc/rs274ngc/rs274ngc_return.hh:60 -msgid "Equal sign missing in parameter setting" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1922 +#, fuzzy +msgid "adjust feed override" +msgstr "Nastav prechod posunu:" -#: src/emc/rs274ngc/rs274ngc_return.hh:61 -msgid "F word missing with inverse time arc move" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1941 +#, fuzzy +msgid "Feed Override [%]" +msgstr "Nastav prechod posunu" -#: src/emc/rs274ngc/rs274ngc_return.hh:62 -msgid "F word missing with inverse time g1 move" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2034 +#, fuzzy +msgid "Cooling" +msgstr "Príkaz:" -#: src/emc/rs274ngc/rs274ngc_return.hh:63 -msgid "File ended with no percent sign" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2285 +#, fuzzy +msgid "Spindle [rpm]" +msgstr "Vreteno vypni" -#: src/emc/rs274ngc/rs274ngc_return.hh:64 -msgid "File ended with no percent sign or program end" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2377 +msgid "" +"Search\n" +" back" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:65 -msgid "File name too long" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2394 +msgid "" +"Search\n" +" fwd" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:66 -msgid "G code out of range" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2446 +#, fuzzy +msgid "" +"Replace\n" +" Text:" +msgstr "Nahradiť týmto:" -#: src/emc/rs274ngc/rs274ngc_return.hh:67 -msgid "I word given for arc in yz plane" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2456 +#, fuzzy +msgid "" +"Replace\n" +" All" +msgstr "Nahradiť všetky" -#: src/emc/rs274ngc/rs274ngc_return.hh:68 -msgid "I word missing with g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2470 +msgid "" +"Ignore\n" +" Case" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:69 -msgid "J word given for arc in xz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2616 +msgid "Start as fullscreen" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:70 -msgid "J word missing with g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2631 +msgid "Start maximized" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:71 -msgid "K word given for arc in xy plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2646 +msgid "Start as window" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:72 -msgid "K word missing with g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2670 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4426 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4943 +msgid "X Pos." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:73 -msgid "Left bracket missing after slash with atan" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2683 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4437 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4928 +msgid "Y Pos." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:74 -msgid "Left bracket missing after unary operation name" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2698 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4855 +msgid "Width" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:75 -msgid "M code greater than 199" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2713 +msgid "Height" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:76 -msgid "Mixed radius ijk format for arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2811 +msgid "hide cursor" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:77 -msgid "Multiple a words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2830 +#, fuzzy +msgid "Main Window" +msgstr "Vreteno vypni" -#: src/emc/rs274ngc/rs274ngc_return.hh:78 -msgid "Multiple b words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2857 +#, fuzzy +msgid "Show keyboard on offset" +msgstr "Ukázať Reštart" -#: src/emc/rs274ngc/rs274ngc_return.hh:79 -msgid "Multiple c words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2871 +msgid "Show keyboard on tooledit" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:80 -msgid "Multiple d words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2885 +msgid "Show keyboard on MDI" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:81 -msgid "Multiple f words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2899 +msgid "Show keyboard on EDIT" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:82 -msgid "Multiple h words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2913 +msgid "Show keyboard on load file" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:83 -msgid "Multiple i words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2931 +#, fuzzy +msgid "Keyboard" +msgstr "Príkaz:" -#: src/emc/rs274ngc/rs274ngc_return.hh:84 -msgid "Multiple j words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2959 +#, fuzzy +msgid "show preview" +msgstr "Vetvený Pohľad" -#: src/emc/rs274ngc/rs274ngc_return.hh:85 -msgid "Multiple k words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2973 +#, fuzzy +msgid "show offsets" +msgstr "Ukázať Reštart" -#: src/emc/rs274ngc/rs274ngc_return.hh:86 -msgid "Multiple l words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2991 +msgid "On Touch off" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:87 -msgid "Multiple p words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3005 +msgid "" +" Display \n" +"Aux Screen" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:88 -msgid "Multiple q words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3052 +#, fuzzy +msgid "Relative Color" +msgstr "Relatívna pozícia" -#: src/emc/rs274ngc/rs274ngc_return.hh:89 -msgid "Multiple r words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3079 +msgid "Absolute Color" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:90 -msgid "Multiple s words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3110 +msgid "DTG Color" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:91 -msgid "Multiple t words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3139 +msgid "Use Auto Units" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:92 -msgid "Multiple x words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3159 +msgid "Show the DRO Button" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:93 -msgid "Multiple y words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3190 +#, fuzzy +msgid "Homed color" +msgstr "Uložiť všetky" -#: src/emc/rs274ngc/rs274ngc_return.hh:94 -msgid "Multiple z words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3204 +#, fuzzy +msgid "Unhomed color" +msgstr "Uložiť všetky" -#: src/emc/rs274ngc/rs274ngc_return.hh:95 -msgid "Must use g0 or g1 with g53" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3299 +msgid "Digits" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:96 -msgid "Negative argument to sqrt" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3344 +msgid "" +"toggle DRO mode \n" +"clicking on the DRO" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:97 -msgid "Negative d word tool radius index used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3369 +msgid "DRO" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:98 -msgid "Negative f word used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3401 +msgid "Grid size" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:99 -msgid "Negative g code used" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3430 +#, fuzzy +msgid "Show DRO" +msgstr "Ukázať" -#: src/emc/rs274ngc/rs274ngc_return.hh:100 -msgid "Negative h word used" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3444 +#, fuzzy +msgid "Show offsets" +msgstr "Ukázať Reštart" -#: src/emc/rs274ngc/rs274ngc_return.hh:101 -msgid "Negative l word used" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3458 +#, fuzzy +msgid "Show DTG" +msgstr "Ukázať" -#: src/emc/rs274ngc/rs274ngc_return.hh:102 -msgid "Negative m code used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3483 +msgid "Mouse Button mode" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:103 -msgid "Negative or zero q value used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3512 +#, fuzzy +msgid "Preview" +msgstr "Vetvený Pohľad" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3565 +msgid "" +"current\n" +" file" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:104 -msgid "Negative p word used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3611 +msgid "File to load on start" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:105 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3638 #, fuzzy -msgid "Negative spindle speed used" -msgstr "Nastaviť zmenu rýchlosti vretena:" +msgid "Select user dir" +msgstr "Nastaviť rýchlosť krokov:" -#: src/emc/rs274ngc/rs274ngc_return.hh:106 -msgid "Negative tool id used" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3647 +#, fuzzy +msgid "Select jump to dir" +msgstr "Vyberte premennú pre zobrazenie." -#: src/emc/rs274ngc/rs274ngc_return.hh:107 -msgid "Nested comment found" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3767 +msgid "Themes and sound" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:108 -msgid "No characters found in reading real value" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3799 +msgid "Appearance" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:109 -msgid "Non integer value for integer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3833 +msgid "Scale max velocity" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:110 -msgid "Null missing after newline" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3846 +msgid "Scale jog velocity" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:111 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3861 #, fuzzy -msgid "Parameter file out of order" -msgstr "Súbor parametrov je %s" - -#: src/emc/rs274ngc/rs274ngc_return.hh:112 -msgid "Parameter number out of range" -msgstr "" +msgid "Scale feed override" +msgstr "Nastav prechod posunu:" -#: src/emc/rs274ngc/rs274ngc_return.hh:113 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3876 #, fuzzy -msgid "Parameter is readonly" -msgstr "Súbor parametrov" +msgid "Scale spindle override" +msgstr "Nastaviť zmenu vretena" -#: src/emc/rs274ngc/rs274ngc_return.hh:114 -msgid "Q word missing with g83" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3970 +msgid "Hardware MPG Scale" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:115 -msgid "Queue is not empty after probing" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3994 +msgid "Use keyboard shortcuts" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:116 -msgid "R clearance plane unspecified in cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4007 +msgid "Keyboard shortcuts" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:117 -msgid "R i j k words all missing for arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4034 +msgid "Use unlock code" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:118 -msgid "R less than x in cycle in yz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4050 +msgid "Do not use unlock code" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:119 -msgid "R less than y in cycle in xz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4066 +msgid "Use hal pin to unlock" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:120 -msgid "R less than z in cycle in xy plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4087 +msgid "Unlock settings" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:121 -msgid "R word with no g code that uses it" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4197 +#, fuzzy +msgid "Spindle bar min" +msgstr "Vreteno rýchlejšie" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4210 +#, fuzzy +msgid "Spindle bar max" +msgstr "Vreteno rýchlejšie" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4252 +msgid "Hide turtle Jog Button" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:122 -msgid "Slash missing after first atan argument" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4282 +msgid "Turtle jog Factor" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:123 -msgid "Spindle not turning clockwise in g84" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4318 +msgid "Turtle Jog" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:124 -msgid "Spindle not turning in g86" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4360 +msgid "Hardware" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:125 -msgid "Spindle not turning in g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4392 +msgid "Use auto tool measurement" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:126 -msgid "Spindle not turning in g88" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4450 +msgid "Probe Height" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:127 -msgid "Sscanf failed" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4485 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4498 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4527 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4556 +msgid "0.000" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:128 -msgid "Start point too close to probe point" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4514 +msgid "Z Pos." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:129 -msgid "Too many m codes on line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4543 +msgid "Max. Probe" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:130 -msgid "Pocket max too large" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4575 +#, fuzzy +msgid "Probe Informations" +msgstr "Nastavenie HAL" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4607 +msgid "Search Vel." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:131 -msgid "Tool radius not less than arc radius with comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4618 +msgid "Probe Vel." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:132 -msgid "Two g codes used from same modal group" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4674 +msgid "Probe velocitys" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:133 -msgid "Two m codes used from same modal group" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4688 +msgid "" +"No valid configuration\n" +"found in your INI file,\n" +"please take a look at \n" +"the WIKI to check how\n" +"to configure the settings." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:134 -#, c-format -msgid "Unable to open file <%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4708 +#, fuzzy +msgid "Tool Measurement" +msgstr "Príkaz:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4737 +msgid "" +"If the 4'th axis is used\n" +"for a tool changer, you\n" +"hide the DRO and\n" +"jog buttons." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:135 -msgid "Unclosed comment found" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4749 +msgid "Hide 4'th axis" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:136 -msgid "Unclosed expression" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4769 +#, fuzzy +msgid "Tool Changer" +msgstr "Príkaz:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4808 +msgid "Use frames" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:137 -msgid "Unknown g code used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4840 +msgid "max." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:138 -msgid "Unknown m code used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4992 +msgid "Launch test message" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:139 -msgid "Unknown operation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5011 +msgid "" +" gmoccapy message\n" +" behavior and appearance " msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:140 -msgid "Unknown operation name starting with a" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5049 +msgid "Do not use run from line" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:141 -msgid "Unknown operation name starting with m" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5065 +msgid "Use run from line" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:142 -msgid "Unknown operation name starting with o" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5086 +#, fuzzy +msgid "Run from line" +msgstr "Nastavenie HAL" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5119 +#, fuzzy +msgid "" +"Advanced\n" +" Settings" +msgstr "Príklady konfigurácií" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5157 +msgid "User tab 1" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:143 -msgid "Unknown operation name starting with x" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5171 +msgid "User tabs" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:144 -msgid "Unknown word starting with a" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5207 +msgid "Estop the machine" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:145 -msgid "Unknown word starting with c" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5229 +#, fuzzy +msgid "Turn the machine on/off" +msgstr "Stroj zapnutý" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5251 +msgid "enter manual mode to jog axis by hand or touch off" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:146 -msgid "Unknown word starting with e" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5271 +msgid "enter MDI mode to launch g-code commands" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:147 -msgid "Unknown word starting with f" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5290 +msgid "enter auto mode to run programs" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:148 -msgid "Unknown word starting with l" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5308 +msgid "Enter the settings page, the default code is \"123\"" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:149 -msgid "Unknown word starting with r" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5330 +#, fuzzy +msgid "show user tabs" +msgstr "Ukázať Reštart" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5381 +msgid "open homing button list" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:150 -msgid "Unknown word starting with s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5398 +msgid "open touch off button list" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:151 -msgid "Unknown word starting with t" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5427 +msgid "Open the tooleditor page" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:152 -msgid "Unknown word where unary operation could be" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5498 +msgid "make the preview as large as possible" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:153 -msgid "X and y words missing for arc in xy plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5515 +msgid "Close moccapy / leave the program" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:154 -msgid "X and z words missing for arc in xz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5577 +msgid "This button will show or hide the Keyboard" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:155 -msgid "X value unspecified in yz plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5620 +#, fuzzy +msgid "Load a new program" +msgstr "Program" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5637 +#, fuzzy +msgid "Run the loaded program" +msgstr "Program" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5654 +#, fuzzy +msgid "Stop the running program" +msgstr "Program" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5672 +#, fuzzy +msgid "Pause the running program" +msgstr "Program" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5680 +#, fuzzy +msgid "pause the running program" +msgstr "Program" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5698 +msgid "Run the loaded program step by step" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:156 -msgid "Y and z words missing for arc in yz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5715 +msgid "" +"run the program from a certain line, attention, that is dangerous, because " +"the previous lines will not checed!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:157 -msgid "Y value unspecified in xz plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5732 +msgid "" +"Machine or not the optional blocks of the program. If the button is pressed, " +"the optional blocks will not be machined. The button will indicate this by a " +"yellow background." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:158 -msgid "Z value unspecified in xy plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5757 +msgid "" +"Make optional stops or not. if an M1 is programed and the button is pressed " +"(is active) the programm will pause if it found a M1" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:159 -msgid "Zero or negative argument to ln" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5789 +msgid "Edit the loaded program" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:161 -msgid "K word missing with g33/g33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5837 +#, fuzzy +msgid "home all axis" +msgstr "Domov" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5873 +#, fuzzy +msgid "home x axis" +msgstr "Domov" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5897 +#, fuzzy +msgid "home y axis" +msgstr "Domov" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5929 +#, fuzzy +msgid "home z axis" +msgstr "Domov" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5987 +#, fuzzy +msgid "Unhome all axis" +msgstr "Uložiť všetky" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6023 +msgid "go back to main button list" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:162 -msgid "F word used with a g33/g33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6053 +msgid "" +" edit\n" +"offsets" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:163 -msgid "Unknown operation name starting with e" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6060 +#, fuzzy +msgid "Edit offsets" +msgstr "Ukázať Reštart" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6076 +msgid "touch off X / set X to 0" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:164 -msgid "Unknown operation name starting with n" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6100 +msgid "touch off Y / set Y to 0" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:165 -msgid "Unknown operation name starting with g" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6135 +msgid "touch off Z / set Z to 0" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:166 -msgid "Unknown operation name starting with l" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6155 +msgid "" +"zero\n" +"G92" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:167 -msgid "Too many subroutine parameters" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6161 +#, fuzzy +msgid "Zero all G92 offsets" +msgstr "Nula pre všetky G59.2" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6172 +msgid "" +" Block\n" +"Height" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:168 -msgid "Too many subroutine levels" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6192 +msgid "touch off X / set X to an desired value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:169 -msgid "Bug: call stack underrun" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6216 +msgid "touch off Y / set Y to an desired value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:170 -msgid "Unknown control command in o word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6251 +msgid "touch off Z / set Z to an desired value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:171 -msgid "Too many oword labels" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6270 +msgid "" +" set\n" +"selected" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:172 -msgid "Unknown oword number" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6277 +msgid "set the selected coordinate system to be the active one" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:173 -msgid "Nested subroutine definition" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6293 +msgid "Go back to main view" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:174 -msgid "Not in subroutine definition" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6324 +#, fuzzy +msgid "delete MDI" +msgstr "Vymazať" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6330 +msgid "delete MDI history" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:175 -msgid "File not open" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6380 +msgid "Cl.-ladder" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:176 -msgid "Need tool prepared -Txx- for toolchange" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6386 +msgid "Open classicladder" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:177 -msgid "Cannot change planes with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6397 +#, fuzzy +msgid "Hal-Scope" +msgstr "HAL-Dosah" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6403 +msgid "launch hal scope" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:178 -msgid "Cutter radius compensation allowed only in XY, XZ planes" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6420 +msgid "launch linuxcnc status" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:179 -msgid "P word missing with G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6437 +msgid "launch hal meter" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:180 -msgid "I J or K words missing with G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6455 +#, fuzzy +msgid "launch calibration" +msgstr "Kalibrácia..." + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6466 +msgid "Halshow" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:181 -msgid "Cannot move rotary axes with G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6472 +msgid "opens the show hal tool" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:182 -msgid "Multiple e words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6537 +msgid "save the file using the original name" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:183 -msgid "Named parameter not terminated" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6559 +msgid "save the file with a new name" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:184 -msgid "Out of memory" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6605 +msgid "clear the edit field and make a new file" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:185 -msgid "S word missing with G96" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6641 +msgid "Show or hide the virtual keyboard" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:186 -msgid "Queue is not empty after external input" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6665 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6879 +msgid "Go back to main button list" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:187 -msgid "Can't select analog input with wait type != immediate return" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6701 +msgid "delete selected tool or tools" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:188 -msgid "Zero timeout with wait type != immediate return" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6718 +#, fuzzy +msgid "add a new tool to tool table" +msgstr "Načítať tabuľku nástrojov" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6729 +msgid "Reload" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:189 -msgid "Invalid to select both a digital and an analog input with M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6735 +#, fuzzy +msgid "reload tool table from file" +msgstr "Načítať tabuľku nástrojov" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6746 +msgid "Apply" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:190 -msgid "Need to have either a valid P or a valid E word with M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6752 +msgid "" +"apply the changes you made, G43 will be excecuted only if it is active g-code" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:191 -msgid "Q word missing with g73" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6768 +#, fuzzy +msgid "Select a tool by number" +msgstr "Vyberte premennú pre zobrazenie." + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6790 +msgid "change tool with the command M61 Q?, no machine move will be done" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:192 -msgid "Digital input selected out of bounds" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6812 +msgid "change tool to the selected one" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:193 -msgid "Analog input selected out of bounds" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6824 +msgid "" +"touchoff\n" +" tool x" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:194 -msgid "W value unspecified in UV plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6832 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6863 +msgid "touch off the tool and set the value to the tool table" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:195 -msgid "U value unspecified in VW plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6855 +msgid "" +"touchoff\n" +" tool z" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:196 -msgid "V value unspecified in UW plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6915 +msgid "Move to your home directory" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:197 -msgid "R less than W in cycle in UV plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6932 +#, fuzzy +msgid "Move to parrent directory" +msgstr "EMC2 Pomocník nastavenia" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6961 +#, fuzzy +msgid "Select the previos file" +msgstr "Vyberte premennú pre zobrazenie." + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6979 +#, fuzzy +msgid "Select the next file" +msgstr "Vyberte premennú pre zobrazenie." + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6997 +msgid "Jump to user defined directory" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:198 -msgid "R less than U in cycle in VW plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7027 +msgid "select the highlighted file and return the path" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:199 -msgid "R less than V in cycle in UW plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7057 +msgid "Close without returning a file path" msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7075 +#, fuzzy +msgid "Load File" +msgstr "Súbor programu" + +#, fuzzy +#~ msgid "LinuxCNC Debug Level" +#~ msgstr "EMC2 Debug" + +#, fuzzy +#~ msgid " Parallel Port Settings" +#~ msgstr "Vytlačiť nastavenia" + +#, fuzzy +#~ msgid "Advanced Configuration Options" +#~ msgstr "Príklady konfigurácií" + +#, fuzzy +#~ msgid "Spindle Configuration" +#~ msgstr "Príklady konfigurácií" + #~ msgid "ERROR: must specify a path to search for configurations" #~ msgstr "CHYBA: Musíte uviesť cestu ku konfigurácii." @@ -13573,16 +17025,9 @@ msgstr "" #~ msgid "About TkEmc" #~ msgstr "O TkEmc" -#~ msgid "Diameter:" -#~ msgstr "Priemer:" - #~ msgid "Tools..." #~ msgstr "Nástroje..." -#, fuzzy -#~ msgid "Out" -#~ msgstr "Vystrihnúť" - #, fuzzy #~ msgid "Spindle PWM Enable" #~ msgstr "Vreteno Pomalšie" diff --git a/src/po/sr.po b/src/po/sr.po index bd321b7388..a1abbff717 100644 --- a/src/po/sr.po +++ b/src/po/sr.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: AXIS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-10 13:40-0600\n" +"POT-Creation-Date: 2019-02-20 07:49+0000\n" "PO-Revision-Date: 2008-04-27 13:20+0200\n" "Last-Translator: Bojin Marinkovic \n" "Language-Team: Serbian Translation \n" @@ -17,1056 +17,2693 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: src/hal/utils/meter.c:198 +#: src/emc/task/emctaskmain.cc:479 src/emc/task/emctaskmain.cc:512 +#, fuzzy, c-format +msgid "%s exceeds +X limit" +msgstr "Program prevazilazi granicne vrednosti masine" + +#: src/emc/task/emctaskmain.cc:484 src/emc/task/emctaskmain.cc:517 +#, fuzzy, c-format +msgid "%s exceeds +Y limit" +msgstr "Program prevazilazi granicne vrednosti masine" + +#: src/emc/task/emctaskmain.cc:489 src/emc/task/emctaskmain.cc:522 +#, fuzzy, c-format +msgid "%s exceeds +Z limit" +msgstr "Program prevazilazi granicne vrednosti masine" + +#: src/emc/task/emctaskmain.cc:494 src/emc/task/emctaskmain.cc:527 +#, fuzzy, c-format +msgid "%s exceeds -X limit" +msgstr "Program prevazilazi granicne vrednosti masine" + +#: src/emc/task/emctaskmain.cc:499 src/emc/task/emctaskmain.cc:532 +#, fuzzy, c-format +msgid "%s exceeds -Y limit" +msgstr "Program prevazilazi granicne vrednosti masine" + +#: src/emc/task/emctaskmain.cc:504 src/emc/task/emctaskmain.cc:537 +#, fuzzy, c-format +msgid "%s exceeds -Z limit" +msgstr "Program prevazilazi granicne vrednosti masine" + +#: src/emc/task/emctaskmain.cc:892 #, c-format -msgid "ERROR: '%s' is not a valid probe type\n" +msgid "" +"command (%s) cannot be executed until the machine is out of E-stop and " +"turned on" msgstr "" -#: src/hal/utils/meter.c:206 +#: src/emc/task/emctaskmain.cc:1013 #, c-format -msgid "ERROR: no pin/signal/parameter name\n" +msgid "can't do that (%s:%d) in manual mode" msgstr "" -#: src/hal/utils/meter.c:212 +#: src/emc/task/emctaskmain.cc:1113 #, c-format -msgid "" -"ERROR: -s option requires a probe type and a pin/signal/parameter name\n" +msgid "can't do that (%s) in auto mode with the interpreter idle" msgstr "" -#: src/hal/utils/meter.c:238 tcl/tklinuxcnc.tcl:764 -#, fuzzy -msgid "Hal Meter" -msgstr "H_AL-Metar..." - -#: src/hal/utils/meter.c:287 -msgid "_Select" +#: src/emc/task/emctaskmain.cc:1180 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter reading" msgstr "" -#: src/hal/utils/meter.c:288 -msgid "E_xit" +#: src/emc/task/emctaskmain.cc:1265 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter paused" msgstr "" -#: src/hal/utils/meter.c:336 src/hal/utils/meter.c:364 -msgid "Select Item to Probe" +#: src/emc/task/emctaskmain.cc:1334 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter waiting" msgstr "" -#: src/hal/utils/meter.c:640 -msgid " _Pins " +#: src/emc/task/emctaskmain.cc:1442 +#, c-format +msgid "can't do that (%s:%d) in MDI mode" msgstr "" -#: src/hal/utils/meter.c:641 -msgid " _Signals " +#: src/emc/task/emctaskmain.cc:2100 +msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" msgstr "" -#: src/hal/utils/meter.c:642 -msgid " Para_meters " +#: src/emc/task/emctaskmain.cc:2157 tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 +#: tcl/mini.tcl:1775 tcl/tklinuxcnc.tcl:451 +#, c-format, tcl-format +msgid "can't open %s" msgstr "" -#: src/hal/utils/meter.c:685 -msgid "_Close" +#: src/emc/task/emctaskmain.cc:2169 +msgid "Can't issue MDI command when not homed" msgstr "" -#: src/hal/utils/scope.c:126 -msgid "" -"Usage:\n" -" halscope [-h] [-i infile] [-o outfile] [num_samples]\n" +#: src/emc/task/emctaskmain.cc:2174 +msgid "Must be in MDI mode to issue MDI command" msgstr "" -#: src/hal/utils/scope.c:474 src/hal/utils/scope.c:501 -#, fuzzy -msgid "Open Configuration File:" -msgstr "Verzeichnis:" - -#: src/hal/utils/scope.c:535 -#, fuzzy -msgid "_Open Configuration..." -msgstr "Konfiguration der Spindel" - -#: src/hal/utils/scope.c:541 -#, fuzzy -msgid "_Save Configuration..." -msgstr "Konfiguration der Spindel" - -#: src/hal/utils/scope.c:550 -msgid "O_pen Data File..." +#: src/emc/task/emctaskmain.cc:2256 +msgid "Can't run a program when not homed" msgstr "" -#: src/hal/utils/scope.c:557 -msgid "S_ave Data File..." +#: src/emc/rs274ngc/interp_arc.cc:110 src/emc/rs274ngc/interp_arc.cc:284 +#, c-format +msgid "" +"Zero-radius arc: start=(%c%.4f,%c%.4f) center=(%c%.4f,%c%.4f) end=(%c%.4f,%c" +"%.4f) r1=%.4f r2=%.4f" msgstr "" -#: src/hal/utils/scope.c:566 share/axis/tcl/axis.tcl:93 -#, fuzzy -msgid "_Quit" -msgstr "_Odustani" - -#: src/hal/utils/scope.c:572 -msgid "_About Halscope" +#: src/emc/rs274ngc/interp_arc.cc:120 src/emc/rs274ngc/interp_arc.cc:292 +#, c-format +msgid "" +"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " +"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " +"rel_err=%.4f%%" msgstr "" -#: src/hal/utils/scope.c:578 share/axis/tcl/axis.tcl:435 -#, fuzzy -msgid "_File" -msgstr "_Datoteka" - -#: src/hal/utils/scope.c:582 share/axis/tcl/axis.tcl:447 -#, fuzzy -msgid "_Help" -msgstr "_Pomoc" - -#: src/hal/utils/scope.c:641 -msgid "HAL Oscilloscope" +#: src/emc/rs274ngc/interp_check.cc:90 +msgid "G4 not allowed with G2 or G3 because they both use P" msgstr "" -#: src/hal/utils/scope.c:669 -msgid "Horizontal" +#: src/emc/rs274ngc/interp_check.cc:93 +msgid "Line with G10 does not have L1, L10, L11, L2, or L20" msgstr "" -#: src/hal/utils/scope.c:677 -msgid "Selected Channel" +#: src/emc/rs274ngc/interp_check.cc:94 +msgid "P value not an integer with G10" msgstr "" -#: src/hal/utils/scope.c:683 -msgid "Run Mode" +#: src/emc/rs274ngc/interp_check.cc:95 +#, c-format +msgid "P value out of range (0-9) with G10 L%d" msgstr "" -#: src/hal/utils/scope.c:686 -msgid "Trigger" +#: src/emc/rs274ngc/interp_check.cc:96 +#, c-format +msgid "P value out of range with G10 L%d" msgstr "" -#: src/hal/utils/scope.c:692 -msgid "Vertical" +#: src/emc/rs274ngc/interp_check.cc:100 +msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." msgstr "" -#: src/hal/utils/scope.c:700 share/axis/tcl/axis.tcl:135 -#: share/axis/tcl/axis.tcl:1199 -#, fuzzy -msgid "Stop" -msgstr "_Korak po korak" - -#: src/hal/utils/scope.c:703 -msgid "Normal" +#: src/emc/rs274ngc/interp_check.cc:259 +msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" msgstr "" -#: src/hal/utils/scope.c:706 -#, fuzzy -msgid "Single" -msgstr "Duzina _koraka:" +#: src/emc/rs274ngc/interp_check.cc:265 +msgid "E word with no G76, M66, M67 or M68 to use it" +msgstr "" -#: src/hal/utils/scope.c:709 -msgid "Roll" +#: src/emc/rs274ngc/interp_check.cc:270 +msgid "H word with no G43 or G76 to use it" msgstr "" -#: src/hal/utils/scope_horiz.c:130 -#, fuzzy -msgid "Zoom" -msgstr "Uvecaj" +#: src/emc/rs274ngc/interp_check.cc:276 +msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" +msgstr "" -#: src/hal/utils/scope_horiz.c:131 -msgid " Pos " +#: src/emc/rs274ngc/interp_check.cc:282 +msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" msgstr "" -#: src/hal/utils/scope_horiz.c:164 -msgid "" -"----- Samples\n" -"at ---- KHz" +#: src/emc/rs274ngc/interp_check.cc:288 +msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" msgstr "" -#: src/hal/utils/scope_horiz.c:459 -msgid "Realtime component not loaded" +#: src/emc/rs274ngc/interp_check.cc:298 +msgid "" +"L word with no G10, cutter compensation, canned cycle, digital/analog input, " +"or NURBS code" msgstr "" -#: src/hal/utils/scope_horiz.c:460 +#: src/emc/rs274ngc/interp_check.cc:310 msgid "" -"HALSCOPE uses a realtime component called scope_rt'\n" -"to sample signals for display. It is not currently loaded\n" -"and attempting to load it automatically failed. More information\n" -"may be available in the terminal where halscope was started.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Load the component (using 'halcmd loadrt scope_rt'), then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " +"M53 M62 M63 M64 M65 M66 or user M code to use it" msgstr "" -#: src/hal/utils/scope_horiz.c:495 -msgid "Realtime function not linked" +#: src/emc/rs274ngc/interp_check.cc:315 +msgid "P value not an integer with M19 G2 or G3" msgstr "" -#: src/hal/utils/scope_horiz.c:496 -msgid "" -"The HALSCOPE realtime sampling function\n" -"must be called from a HAL thread in to\n" -"determine the sampling rate.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Select a thread name and multiplier then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +#: src/emc/rs274ngc/interp_check.cc:317 +msgid "P value must be 0,1,or 2 with M19" msgstr "" -#: src/hal/utils/scope_horiz.c:503 -msgid "Select Sample Rate" +#: src/emc/rs274ngc/interp_check.cc:319 +msgid "P value should be 1 or greater with G2 or G3" msgstr "" -#: src/hal/utils/scope_horiz.c:504 +#: src/emc/rs274ngc/interp_check.cc:327 msgid "" -"Select a thread name and multiplier then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " +"code that uses it" msgstr "" -#: src/hal/utils/scope_horiz.c:526 -msgid "Thread:" +#: src/emc/rs274ngc/interp_check.cc:337 +msgid "R value must be within 0..360 with M19" msgstr "" -#: src/hal/utils/scope_horiz.c:534 -#, fuzzy -msgid "Sample Period:" -msgstr "Min Base Period:" - -#: src/hal/utils/scope_horiz.c:542 -msgid "Sample Rate:" +#: src/emc/rs274ngc/interp_convert.cc:139 +msgid "You must specify both X and Y coordinates for Control Points" msgstr "" -#: src/hal/utils/scope_horiz.c:558 src/emc/usr_intf/touchy/mdi.py:78 -msgid "Thread" +#: src/emc/rs274ngc/interp_convert.cc:142 +msgid "Can specify P without X and Y only for the first control point" msgstr "" -#: src/hal/utils/scope_horiz.c:559 -msgid "Period" +#: src/emc/rs274ngc/interp_convert.cc:145 +msgid "Must specify positive weight P for every Control Point" msgstr "" -#: src/hal/utils/scope_horiz.c:619 -msgid "Multiplier:" +#: src/emc/rs274ngc/interp_convert.cc:148 +msgid "Cannot make a NURBS with 0 feedrate" msgstr "" -#: src/hal/utils/scope_horiz.c:636 -msgid "Record Length" +#: src/emc/rs274ngc/interp_convert.cc:183 +msgid "Cannot use G5.3 without G5.2 first" msgstr "" -#: src/hal/utils/scope_horiz.c:639 +#: src/emc/rs274ngc/interp_convert.cc:184 #, c-format -msgid "%5d samples (1 channel)" +msgid "" +"You must specify a number of control points at least equal to the order L = " +"%d" msgstr "" -#: src/hal/utils/scope_horiz.c:641 -#, c-format -msgid "%5d samples (2 channels)" +#: src/emc/rs274ngc/interp_convert.cc:213 +msgid "Cannot convert spline with cutter radius compensation" msgstr "" -#: src/hal/utils/scope_horiz.c:645 -#, c-format -msgid "%5d samples (4 channels)" +#: src/emc/rs274ngc/interp_convert.cc:223 +msgid "Splines must be in the XY plane" msgstr "" -#: src/hal/utils/scope_horiz.c:649 -#, c-format -msgid "%5d samples (8 channels)" +#: src/emc/rs274ngc/interp_convert.cc:228 +msgid "Splines may not have motion in Z, A, B, or C" msgstr "" -#: src/hal/utils/scope_horiz.c:653 -#, c-format -msgid "%5d samples (16 channels)" +#: src/emc/rs274ngc/interp_convert.cc:232 +msgid "Must specify both I and J with G5.1" msgstr "" -#: src/hal/utils/scope_horiz.c:708 src/hal/utils/scope_horiz.c:754 -#: src/hal/utils/scope_horiz.c:966 src/hal/utils/scope_vert.c:761 -#: src/hal/utils/scope_vert.c:853 tcl/bin/emccalib.tcl:227 -#: tcl/bin/genedit.tcl:180 tcl/bin/genedit.tcl:450 tcl/bin/halconfig.tcl:682 -#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:257 -#: tcl/bin/pickconfig.tcl:479 tcl/bin/pickconfig.tcl:506 tcl/mini.tcl:1456 -#: tcl/mini.tcl:2937 tcl/tklinuxcnc.tcl:160 tcl/tklinuxcnc.tcl:245 -#: tcl/tklinuxcnc.tcl:419 tcl/tklinuxcnc.tcl:1338 tcl/tklinuxcnc.tcl:1407 -#: tcl/tklinuxcnc.tcl:1438 tcl/tklinuxcnc.tcl:1469 tcl/tklinuxcnc.tcl:2017 -#: tcl/tklinuxcnc.tcl:2036 tcl/tklinuxcnc.tcl:2055 tcl/tklinuxcnc.tcl:2102 -#: src/emc/usr_intf/axis/scripts/axis.py:1077 -#: src/emc/usr_intf/axis/scripts/axis.py:1141 -#: src/emc/usr_intf/axis/scripts/axis.py:1458 -#: src/emc/usr_intf/axis/scripts/axis.py:2477 -#: src/emc/usr_intf/axis/scripts/axis.py:3336 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:718 -#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1720 -#: share/axis/tcl/axis.tcl:1757 -msgid "OK" -msgstr "OK" - -#: src/hal/utils/scope_horiz.c:713 src/hal/utils/scope_horiz.c:754 -#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 -#, fuzzy -msgid "Quit" -msgstr "_Odustani" +#: src/emc/rs274ngc/interp_convert.cc:251 +msgid "Must specify both I and J, or neither" +msgstr "" -#: src/hal/utils/scope_horiz.c:745 -msgid "Realtime thread(s) not running" +#: src/emc/rs274ngc/interp_convert.cc:262 +msgid "Must specify both P and Q with G5" msgstr "" -#: src/hal/utils/scope_horiz.c:746 +#: src/emc/rs274ngc/interp_convert.cc:363 msgid "" -"HALSCOPE uses code in a realtime HAL thread to sample\n" -"signals for display. The HAL thread(s) are not running.\n" -"Threads are usually started by the application you are\n" -"attempting to run, or you can use the 'halcmd start' command.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Start the threads, then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +"The move just after exiting cutter compensation mode must be straight, not " +"an arc" msgstr "" -#: src/hal/utils/scope_horiz.c:779 -msgid "Pick log file to write to:" +#: src/emc/rs274ngc/interp_convert.cc:371 +msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" msgstr "" -#: src/hal/utils/scope_horiz.c:962 -msgid "Not enough channels" +#: src/emc/rs274ngc/interp_convert.cc:383 +#: src/emc/rs274ngc/interp_convert.cc:4488 +msgid "Cannot feed with zero spindle speed in feed per rev mode" msgstr "" -#: src/hal/utils/scope_horiz.c:963 -msgid "" -"This record length cannot handle the channels\n" -"that are currently enabled. Pick a shorter\n" -"record length that supports more channels." +#: src/emc/rs274ngc/interp_convert.cc:394 +#: src/emc/rs274ngc/interp_convert.cc:400 +#: src/emc/rs274ngc/interp_convert.cc:409 +#: src/emc/rs274ngc/interp_convert.cc:415 +#: src/emc/rs274ngc/interp_convert.cc:424 +#: src/emc/rs274ngc/interp_convert.cc:430 +#, c-format +msgid "%c word missing in absolute center arc" msgstr "" -#: src/hal/utils/scope_horiz.c:1051 -#, c-format +#: src/emc/rs274ngc/interp_convert.cc:662 msgid "" -"%s\n" -"per div" +"Radius of cutter compensation entry arc is not greater than the tool radius" msgstr "" -#: src/hal/utils/scope_horiz.c:1066 -#, c-format +#: src/emc/rs274ngc/interp_convert.cc:882 +#: src/emc/rs274ngc/interp_convert.cc:892 src/emc/rs274ngc/interp_queue.cc:696 msgid "" -"%s samples\n" -"at %s" +"Arc move in concave corner cannot be reached by the tool without gouging" msgstr "" -#: src/hal/utils/scope_horiz.c:1170 -msgid "nSec" +#: src/emc/rs274ngc/interp_convert.cc:918 +msgid "Arc to arc motion is invalid because the arcs have the same center" msgstr "" -#: src/hal/utils/scope_horiz.c:1173 -msgid "uSec" +#: src/emc/rs274ngc/interp_convert.cc:921 +msgid "" +"Arc to arc motion makes a corner the compensated tool can't fit in without " +"gouging" msgstr "" -#: src/hal/utils/scope_horiz.c:1177 -msgid "mSec" +#: src/emc/rs274ngc/interp_convert.cc:1053 +#: src/emc/rs274ngc/interp_convert.cc:1057 +#: src/emc/rs274ngc/interp_convert.cc:1061 +#: src/emc/rs274ngc/interp_convert.cc:3945 +#: src/emc/rs274ngc/interp_convert.cc:3948 +#: src/emc/rs274ngc/interp_convert.cc:3951 src/emc/rs274ngc/interp_find.cc:97 +#, c-format +msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" msgstr "" -#: src/hal/utils/scope_horiz.c:1181 -#: src/emc/usr_intf/pncconf/pncconf.glade:1953 -#: src/emc/usr_intf/pncconf/pncconf.glade:2825 -#: src/emc/usr_intf/pncconf/pncconf.glade:3706 -#: src/emc/usr_intf/pncconf/pncconf.glade:4587 -#, fuzzy -msgid "Sec" -msgstr "Skundarni" - -#: src/hal/utils/scope_horiz.c:1198 -#: src/emc/usr_intf/stepconf/stepconf.glade:3664 -#: src/emc/usr_intf/stepconf/stepconf.glade:4040 -#: src/emc/usr_intf/pncconf/pncconf.glade:8268 -#: src/emc/usr_intf/pncconf/pncconf.glade:8281 -#: src/emc/usr_intf/pncconf/pncconf.glade:8458 -msgid "Hz" +#: src/emc/rs274ngc/interp_convert.cc:1563 +msgid "Cannot change control mode with cutter radius compensation on" msgstr "" -#: src/hal/utils/scope_horiz.c:1201 -msgid "KHz" +#: src/emc/rs274ngc/interp_convert.cc:1676 +msgid "Cannot change coordinate systems with cutter radius compensation on" msgstr "" -#: src/hal/utils/scope_horiz.c:1205 -msgid "Mhz" +#: src/emc/rs274ngc/interp_convert.cc:1920 +#, c-format +msgid "G%d.1 with no D word" msgstr "" -#: src/hal/utils/scope_vert.c:403 src/hal/utils/scope_vert.c:1258 -#, fuzzy, c-format -msgid "" -"Offset\n" -"%s" -msgstr "Test %s-ose" - -#: src/hal/utils/scope_vert.c:618 -msgid "Gain" +#: src/emc/rs274ngc/interp_convert.cc:1923 +#, c-format +msgid "G%d.1 with L word, but plane is not G18" msgstr "" -#: src/hal/utils/scope_vert.c:630 src/hal/utils/scope_trig.c:252 -msgid "Pos" +#: src/emc/rs274ngc/interp_convert.cc:1934 +#, c-format +msgid "G%d requires D word to be a whole number" msgstr "" -#: src/hal/utils/scope_vert.c:644 tcl/ngcgui_ttt.tcl:214 -#: src/emc/usr_intf/pncconf/pncconf.glade:57147 -msgid "Scale" +#: src/emc/rs274ngc/interp_convert.cc:1941 +#, c-format +msgid "G%d with lathe tool, but plane is not G18" msgstr "" -#: src/hal/utils/scope_vert.c:657 -msgid "Chan Off" +#: src/emc/rs274ngc/interp_convert.cc:2340 +msgid "Cannot set reference point with cutter compensation in effect" msgstr "" -#: src/hal/utils/scope_vert.c:713 -#, fuzzy -msgid "Set Offset" -msgstr "Test %s-ose" +#: src/emc/rs274ngc/interp_convert.cc:2859 +#, c-format +msgid "gen_restore G20/G21 failed: '%s'" +msgstr "" -#: src/hal/utils/scope_vert.c:714 +#: src/emc/rs274ngc/interp_convert.cc:2907 #, c-format msgid "" -"Set the vertical offset\n" -"for channel %d." +"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" msgstr "" -#: src/hal/utils/scope_vert.c:734 -msgid "AC Coupled" +#: src/emc/rs274ngc/interp_convert.cc:2908 +#, c-format +msgid "BUG: restore from level %d !?" msgstr "" -#: src/hal/utils/scope_vert.c:769 src/hal/utils/scope_vert.c:1171 -#: src/hal/utils/scope_trig.c:367 tcl/bin/emccalib.tcl:229 -#: tcl/bin/genedit.tcl:294 tcl/bin/halconfig.tcl:103 tcl/bin/halconfig.tcl:684 -#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:260 -#: tcl/bin/pickconfig.tcl:369 tcl/mini.tcl:1457 tcl/mini.tcl:2938 -#: tcl/mini.tcl:3110 tcl/tklinuxcnc.tcl:162 tcl/tklinuxcnc.tcl:213 -#: tcl/tklinuxcnc.tcl:420 tcl/tklinuxcnc.tcl:1339 tcl/tklinuxcnc.tcl:1408 -#: tcl/tklinuxcnc.tcl:1439 tcl/tklinuxcnc.tcl:1470 tcl/tklinuxcnc.tcl:2103 -#: src/emc/usr_intf/axis/scripts/axis.py:1404 -#: src/emc/usr_intf/axis/scripts/axis.py:1459 -#: src/emc/usr_intf/axis/scripts/axis.py:1646 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:720 -msgid "Cancel" -msgstr "Odustani" - -#: src/hal/utils/scope_vert.c:849 -#, fuzzy -msgid "Too many channels" -msgstr "Promena alata" - -#: src/hal/utils/scope_vert.c:850 -msgid "" -"You cannot add another channel.\n" -"\n" -"Either turn off one or more channels, or shorten\n" -"the record length to allow for more channels" +#: src/emc/rs274ngc/interp_convert.cc:2909 +#, c-format +msgid "BUG: restore to level %d !?" msgstr "" -#: src/hal/utils/scope_vert.c:1026 -msgid "Select Channel Source" +#: src/emc/rs274ngc/interp_convert.cc:2928 +#, c-format +msgid "M7x: restore_settings G20/G21 failed: '%s'" msgstr "" -#: src/hal/utils/scope_vert.c:1027 +#: src/emc/rs274ngc/interp_convert.cc:2946 #, c-format -msgid "" -"Select a pin, signal, or parameter\n" -"as the source for channel %d." +msgid "M7x: restore_settings failed executing: '%s': %s" msgstr "" -#: src/hal/utils/scope_vert.c:1059 -msgid "Pins" +#: src/emc/rs274ngc/interp_convert.cc:3005 +#, c-format +msgid "Failed to restore interp state on abort '%s': %s" msgstr "" -#: src/hal/utils/scope_vert.c:1060 -msgid "Signals" +#: src/emc/rs274ngc/interp_convert.cc:3069 +msgid "No valid P word with M62" msgstr "" -#: src/hal/utils/scope_vert.c:1061 -msgid "Parameters" +#: src/emc/rs274ngc/interp_convert.cc:3072 +msgid "No valid P word with M63" msgstr "" -#: src/hal/utils/scope_trig.c:110 -#, c-format -msgid "Falling" +#: src/emc/rs274ngc/interp_convert.cc:3075 +msgid "No valid P word with M64" msgstr "" -#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:275 -#, c-format -msgid "Rising" +#: src/emc/rs274ngc/interp_convert.cc:3078 +msgid "No valid P word with M65" msgstr "" -#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:283 -msgid "" -"Source\n" -"None" +#: src/emc/rs274ngc/interp_convert.cc:3111 +msgid "invalid P-word with M66" msgstr "" -#: src/hal/utils/scope_trig.c:124 -#, c-format -msgid "" -"Source\n" -"Chan %2d" +#: src/emc/rs274ngc/interp_convert.cc:3126 +msgid "Cannot wait for digital input with cutter radius compensation on" msgstr "" -#: src/hal/utils/scope_trig.c:199 tcl/tklinuxcnc.tcl:827 -#: src/emc/usr_intf/touchy/touchy.glade:2469 -msgid "Auto" +#: src/emc/rs274ngc/interp_convert.cc:3138 +msgid "Cannot wait for analog input with cutter radius compensation on" msgstr "" -#: src/hal/utils/scope_trig.c:201 -msgid "Force" +#: src/emc/rs274ngc/interp_convert.cc:3152 +msgid "Invalid analog index with M67" msgstr "" -#: src/hal/utils/scope_trig.c:235 src/hal/utils/scope_trig.c:269 -msgid "Level" +#: src/emc/rs274ngc/interp_convert.cc:3157 +msgid "Invalid analog index with M68" msgstr "" -#: src/hal/utils/scope_trig.c:303 -msgid "Trigger Source" +#: src/emc/rs274ngc/interp_convert.cc:3188 +msgid "Need non-negative Q-word to specify tool number with M61" msgstr "" -#: src/hal/utils/scope_trig.c:304 -msgid "Select a channel to use for triggering." +#: src/emc/rs274ngc/interp_convert.cc:3258 +msgid "Q word with M19 requires a value > 0" msgstr "" -#: src/hal/utils/scope_trig.c:327 -msgid "Chan" +#: src/emc/rs274ngc/interp_convert.cc:3286 +msgid "Cannot restore context from invalid stack frame - missing M70/M73?" msgstr "" -#: src/hal/utils/scope_trig.c:328 -msgid "Source" +#: src/emc/rs274ngc/interp_convert.cc:3327 +#: src/emc/rs274ngc/interp_convert.cc:3344 +#: src/emc/rs274ngc/interp_convert.cc:3359 +#: src/emc/rs274ngc/interp_convert.cc:3373 +#: src/emc/rs274ngc/interp_convert.cc:3387 +msgid "Cannot enable overrides with cutter radius compensation on" msgstr "" -#: src/emc/motion/control.c:261 -msgid "Unexpected realtime delay: check dmesg for details." +#: src/emc/rs274ngc/interp_convert.cc:3334 +#: src/emc/rs274ngc/interp_convert.cc:3349 +#: src/emc/rs274ngc/interp_convert.cc:3364 +#: src/emc/rs274ngc/interp_convert.cc:3378 +#: src/emc/rs274ngc/interp_convert.cc:3392 +msgid "Cannot disable overrides with cutter radius compensation on" msgstr "" -#: src/emc/motion/control.c:263 +#: src/emc/rs274ngc/interp_convert.cc:3506 +#: src/emc/rs274ngc/interp_convert.cc:3507 +#: src/emc/rs274ngc/interp_convert.cc:3508 #, c-format -msgid "" -"\n" -"In recent history there were\n" -"%ld, %ld, %ld, %ld, and %ld\n" -"elapsed clocks between calls to the motion controller.\n" +msgid "Indexing axis %c can only be moved with G0" msgstr "" -#: src/emc/motion/control.c:268 +#: src/emc/rs274ngc/interp_convert.cc:3515 +#: src/emc/rs274ngc/interp_convert.cc:3517 +#: src/emc/rs274ngc/interp_convert.cc:3519 #, c-format -msgid "" -"This time, there were %ld which is so anomalously\n" -"large that it probably signifies a problem with your\n" -"realtime configuration. For the rest of this run of\n" -"EMC, this message will be suppressed.\n" -"\n" +msgid "Indexing axis %c can only be moved alone" msgstr "" -#: src/emc/motion/control.c:384 -msgid "G38.4 move finished without breaking contact." +#: src/emc/rs274ngc/interp_convert.cc:3621 +msgid "Cannot probe with feed per rev mode" msgstr "" -#: src/emc/motion/control.c:387 -msgid "G38.2 move finished without making contact." +#: src/emc/rs274ngc/interp_convert.cc:3669 +msgid "Cannot change retract mode with cutter radius compensation on" msgstr "" -#: src/emc/motion/control.c:401 -msgid "Probe tripped during non-probe MDI command." +#: src/emc/rs274ngc/interp_convert.cc:3703 +msgid "G10 L1 without offsets has no effect" msgstr "" -#: src/emc/motion/control.c:429 -msgid "Probe tripped during homing motion." +#: src/emc/rs274ngc/interp_convert.cc:3809 +msgid "Q number in G10 is not an integer" msgstr "" -#: src/emc/motion/control.c:433 -msgid "Probe tripped during a jog." +#: src/emc/rs274ngc/interp_convert.cc:3810 +msgid "Invalid tool orientation" msgstr "" -#: src/emc/motion/control.c:578 -#, c-format -msgid "fault %d during orient in progress" +#: src/emc/rs274ngc/interp_convert.cc:3933 +msgid "I J words not allowed with G10 L2" msgstr "" -#: src/emc/motion/control.c:718 -msgid "motion stopped by enable input" +#: src/emc/rs274ngc/interp_convert.cc:3954 +msgid "" +"Cannot change the active coordinate system with cutter radius compensation on" msgstr "" -#: src/emc/motion/control.c:741 -#, c-format -msgid "joint %d on limit switch error" +#: src/emc/rs274ngc/interp_convert.cc:3962 +msgid "R not allowed in G10 L20" msgstr "" -#: src/emc/motion/control.c:753 -#, c-format -msgid "joint %d amplifier fault" +#: src/emc/rs274ngc/interp_convert.cc:4550 +msgid "Spindle not turning in G33" msgstr "" -#: src/emc/motion/control.c:762 -#, c-format -msgid "joint %d following error" +#: src/emc/rs274ngc/interp_convert.cc:4560 +msgid "Spindle not turning in G33.1" msgstr "" -#: src/emc/motion/control.c:1444 -#, c-format -msgid "Exceeded positive soft limit on joint %d" +#: src/emc/rs274ngc/interp_convert.cc:4603 +msgid "BUG: An axis incorrectly moved along with an indexer" msgstr "" -#: src/emc/motion/control.c:1449 -#, c-format -msgid "Exceeded negative soft limit on joint %d" +#: src/emc/rs274ngc/interp_convert.cc:4616 +msgid "BUG: trying to index incorrect axis" msgstr "" -#: src/emc/motion/command.c:159 -#, c-format -msgid "Can't jog invalid joint number %d." +#: src/emc/rs274ngc/interp_convert.cc:4708 +msgid "Cannot use G76 threading cycle with cutter radius compensation on" msgstr "" -#: src/emc/motion/command.c:163 -#, c-format -msgid "Can't jog joint %d further past max hard limit." +#: src/emc/rs274ngc/interp_convert.cc:4711 +msgid "In G76, I must not be 0" msgstr "" -#: src/emc/motion/command.c:168 -#, c-format -msgid "Can't jog joint %d further past min hard limit." +#: src/emc/rs274ngc/interp_convert.cc:4713 +msgid "In G76, J must be greater than 0" msgstr "" -#: src/emc/motion/command.c:174 -#, c-format -msgid "Can't jog joint %d further past max soft limit." +#: src/emc/rs274ngc/interp_convert.cc:4715 +msgid "In G76, K must be greater than J" msgstr "" -#: src/emc/motion/command.c:179 -#, c-format -msgid "Can't jog joint %d further past min soft limit." +#: src/emc/rs274ngc/interp_convert.cc:4858 +msgid "" +"Length of cutter compensation entry move is not greater than the tool radius" msgstr "" -#: src/emc/motion/command.c:237 -#, c-format -msgid "%s move on line %d would exceed joint %d's positive limit" +#: src/emc/rs274ngc/interp_convert.cc:5077 +msgid "Zero degree inside corner is invalid for cutter compensation" msgstr "" -#: src/emc/motion/command.c:240 -#, c-format -msgid "%s move in MDI would exceed joint %d's positive limit" +#: src/emc/rs274ngc/interp_convert.cc:5115 +#: src/emc/rs274ngc/interp_convert.cc:5123 +msgid "" +"Arc to straight motion makes a corner the compensated tool can't fit in " +"without gouging" msgstr "" -#: src/emc/motion/command.c:247 -#, c-format -msgid "%s move on line %d would exceed joint %d's negative limit" +#: src/emc/rs274ngc/interp_convert.cc:5207 +msgid "Cannot change tools with cutter radius compensation on" msgstr "" -#: src/emc/motion/command.c:250 +#: src/emc/rs274ngc/interp_convert.cc:5328 +msgid "Cannot change tool offset with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_queue.cc:694 #, c-format -msgid "%s move in MDI would exceed joint %d's negative limit" +msgid "" +"BUG: cutter compensation has generated an invalid arc with mismatched radii " +"r1 %f r2 %f\n" msgstr "" -#: src/emc/motion/command.c:500 -msgid "all joints must be homed before going into coordinated mode" +#: src/emc/rs274ngc/interp_queue.cc:716 +msgid "BUG: Unsupported plane in cutter compensation" msgstr "" -#: src/emc/motion/command.c:521 -msgid "all joints must be homed before going into teleop mode" +#: src/emc/rs274ngc/interp_queue.cc:729 +msgid "" +"Straight traverse in concave corner cannot be reached by the tool without " +"gouging" msgstr "" -#: src/emc/motion/command.c:675 src/emc/motion/command.c:741 -#: src/emc/motion/command.c:814 -msgid "Can't jog joint in coordinated mode." +#: src/emc/rs274ngc/interp_queue.cc:757 +#, c-format +msgid "BUG: Unsupported plane [%d] in cutter compensation" msgstr "" -#: src/emc/motion/command.c:680 src/emc/motion/command.c:746 -#: src/emc/motion/command.c:819 -msgid "Can't jog joint when not enabled." +#: src/emc/rs274ngc/interp_queue.cc:771 +msgid "" +"Straight feed in concave corner cannot be reached by the tool without gouging" msgstr "" -#: src/emc/motion/command.c:685 src/emc/motion/command.c:824 -msgid "Can't jog any joints while homing." +#: src/emc/rs274ngc/interp_cycles.cc:630 +msgid "Cannot feed with zero feed rate" msgstr "" -#: src/emc/motion/command.c:751 -msgid "Can't jog any joint while homing." +#: src/emc/rs274ngc/interp_cycles.cc:631 +msgid "Cannot use inverse time feed with canned cycles" msgstr "" -#: src/emc/motion/command.c:881 -msgid "need to be enabled, in coord mode for linear move" +#: src/emc/rs274ngc/interp_cycles.cc:632 +msgid "Cannot use canned cycles with cutter compensation on" msgstr "" -#: src/emc/motion/command.c:891 -msgid "can't do linear move with limits exceeded" +#: src/emc/rs274ngc/interp_cycles.cc:829 +msgid "G17 canned cycle is not possible on a machine without Z axis" msgstr "" -#: src/emc/motion/command.c:910 -msgid "can't add linear move" +#: src/emc/rs274ngc/interp_cycles.cc:1015 +msgid "G17.1 canned cycle is not possible on a machine without W axis" msgstr "" -#: src/emc/motion/command.c:930 -msgid "need to be enabled, in coord mode for circular move" +#: src/emc/rs274ngc/interp_cycles.cc:1231 +msgid "G19 canned cycle is not possible on a machine without X axis" msgstr "" -#: src/emc/motion/command.c:940 -msgid "can't do circular move with limits exceeded" +#: src/emc/rs274ngc/interp_cycles.cc:1399 +msgid "G19.1 canned cycle is not possible on a machine without U axis" msgstr "" -#: src/emc/motion/command.c:958 -msgid "can't add circular move" +#: src/emc/rs274ngc/interp_cycles.cc:1624 +msgid "G18 canned cycle is not possible on a machine without Y axis" msgstr "" -#: src/emc/motion/command.c:1048 -msgid "MOTION: can't STEP while already executing" +#: src/emc/rs274ngc/interp_cycles.cc:1791 +msgid "G18.1 canned cycle is not possible on a machine without V axis" msgstr "" -#: src/emc/motion/command.c:1140 -msgid "can't enable motion, enable input is false" +#: src/emc/rs274ngc/interp_find.cc:170 +msgid "Cannot use polar coordinates with G53" msgstr "" -#: src/emc/motion/command.c:1213 -msgid "must be in joint mode to home" +#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 +#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 +#: src/emc/rs274ngc/interp_find.cc:347 +msgid "Cannot specify X or Y words with polar coordinate" msgstr "" -#: src/emc/motion/command.c:1224 src/emc/motion/command.c:1235 -msgid "homing sequence already in progress" +#: src/emc/rs274ngc/interp_find.cc:272 +msgid "Must specify angle in polar coordinate if at the origin" msgstr "" -#: src/emc/motion/command.c:1233 -msgid "homing already in progress" +#: src/emc/rs274ngc/interp_find.cc:338 +msgid "" +"Incremental motion with polar coordinates is indeterminate when at the origin" msgstr "" -#: src/emc/motion/command.c:1263 -msgid "must be in joint mode or disabled to unhome" +#: src/emc/rs274ngc/interp_find.cc:348 +msgid "G91 motion with polar coordinates is indeterminate when at the origin" msgstr "" -#: src/emc/motion/command.c:1275 src/emc/motion/command.c:1298 +#: src/emc/rs274ngc/interp_find.cc:720 #, c-format -msgid "Cannot unhome while homing, joint %d" +msgid "Requested tool %d not found in the tool table" msgstr "" -#: src/emc/motion/command.c:1279 src/emc/motion/command.c:1302 -#, c-format -msgid "Cannot unhome while moving, joint %d" +#: src/emc/rs274ngc/interp_internal.cc:161 +msgid "Cannot use polar coordinate on a machine lacking X or Y axes" msgstr "" -#: src/emc/motion/command.c:1307 -#, c-format -msgid "Cannot unhome inactive joint %d" +#: src/emc/rs274ngc/interp_internal.cc:162 +msgid "Cannot use polar coordinate except in G17 plane" msgstr "" -#: src/emc/motion/command.c:1311 -#, c-format -msgid "Cannot unhome invalid joint %d (max %d)" +#: src/emc/rs274ngc/interp_internal.cc:163 +msgid "Cannot specify both polar coordinate and X word" msgstr "" -#: src/emc/motion/command.c:1338 -msgid "need to be enabled, in coord mode for probe move" +#: src/emc/rs274ngc/interp_internal.cc:164 +msgid "Cannot specify both polar coordinate and Y word" msgstr "" -#: src/emc/motion/command.c:1348 -msgid "can't do probe move with limits exceeded" +#: src/emc/rs274ngc/interp_internal.cc:185 +#: src/emc/rs274ngc/interp_internal.cc:199 +#: src/emc/rs274ngc/interp_internal.cc:214 +msgid "Polar coordinates can only be used for motion" msgstr "" -#: src/emc/motion/command.c:1362 -msgid "Probe is already clear when starting G38.4 or G38.5 move" +#: src/emc/rs274ngc/interp_read.cc:1150 src/emc/rs274ngc/interp_read.cc:1154 +#, c-format +msgid "Bad character '\\%03o' used" msgstr "" -#: src/emc/motion/command.c:1364 -msgid "Probe is already tripped when starting G38.2 or G38.3 move" +#: src/emc/rs274ngc/interp_read.cc:1154 +#, c-format +msgid "Bad character '%c' used" msgstr "" -#: src/emc/motion/command.c:1376 -msgid "can't add probe move" +#: src/emc/rs274ngc/interp_read.cc:1678 +msgid "Left bracket missing after 'while'" msgstr "" -#: src/emc/motion/command.c:1400 -msgid "need to be enabled, in coord mode for rigid tap move" +#: src/emc/rs274ngc/interp_read.cc:1693 +msgid "Left bracket missing after 'repeat'" msgstr "" -#: src/emc/motion/command.c:1410 -msgid "can't do rigid tap move with limits exceeded" +#: src/emc/rs274ngc/interp_read.cc:1708 +msgid "Left bracket missing after 'if'" msgstr "" -#: src/emc/motion/command.c:1421 -msgid "can't add rigid tap move" +#: src/emc/rs274ngc/interp_read.cc:1723 +msgid "Left bracket missing after 'elseif'" msgstr "" -#: src/emc/motion/command.c:1435 -msgid "need to be enabled, in teleop mode for teleop move" +#: src/emc/rs274ngc/interp_read.cc:1926 +msgid "Cannot read current position with cutter radius compensation on" msgstr "" -#: src/emc/motion/command.c:1605 -#, c-format -msgid "joint %d: too many compensation entries" +#: src/emc/rs274ngc/interp_read.cc:1941 +msgid "Expected # reading parameter" msgstr "" -#: src/emc/motion/command.c:1611 -#, c-format -msgid "joint %d: compensation values must increase" +#: src/emc/rs274ngc/interp_read.cc:1943 +msgid "Expected ] reading bracketed parameter" msgstr "" -#: src/emc/motion/command.c:1640 +#: src/emc/rs274ngc/interp_read.cc:2615 #, c-format -msgid "unrecognized command %d" +msgid "bad number format (conversion failed) parsing '%s'" msgstr "" -#: src/emc/motion/motion.c:185 -msgid "MOTION: hal_init() failed\n" +#: src/emc/rs274ngc/interp_read.cc:2616 +#, c-format +msgid "bad number format (trailing characters) parsing '%s'" msgstr "" -#: src/emc/motion/motion.c:190 -#, c-format -msgid "MOTION: num_joints is %d, must be between 1 and %d\n" +#: src/emc/rs274ngc/interp_read.cc:2706 +msgid "Calculation resulted in 'not a number'" msgstr "" -#: src/emc/motion/motion.c:197 -#, c-format -msgid "MOTION: num_dio is %d, must be between 1 and %d\n" +#: src/emc/rs274ngc/interp_read.cc:2708 +msgid "Calculation resulted in 'infinity'" msgstr "" -#: src/emc/motion/motion.c:204 +#: src/emc/rs274ngc/interp_read.cc:3001 #, c-format -msgid "MOTION: num_aio is %d, must be between 1 and %d\n" +msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" msgstr "" -#: src/emc/motion/motion.c:212 -msgid "MOTION: init_hal_io() failed\n" +#: src/emc/rs274ngc/interp_read.cc:3113 +msgid "Multiple U words on one line" msgstr "" -#: src/emc/motion/motion.c:221 -msgid "MOTION: init_comm_buffers() failed\n" +#: src/emc/rs274ngc/interp_read.cc:3129 +msgid "Multiple V words on one line" msgstr "" -#: src/emc/motion/motion.c:229 -msgid "MOTION: init_threads() failed\n" +#: src/emc/rs274ngc/interp_read.cc:3145 +msgid "Multiple W words on one line" msgstr "" -#: src/emc/motion/motion.c:254 +#: src/emc/rs274ngc/interp_o_word.cc:97 #, c-format -msgid "MOTION: hal_stop_threads() failed, returned %d\n" +msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" msgstr "" -#: src/emc/motion/motion.c:260 +#: src/emc/rs274ngc/interp_o_word.cc:722 #, c-format -msgid "MOTION: rtapi_shmem_delete() failed, returned %d\n" +msgid "%d: not in a subroutine definition: '%s'" msgstr "" -#: src/emc/motion/motion.c:266 +#: src/emc/rs274ngc/interp_o_word.cc:759 src/emc/rs274ngc/interp_o_word.cc:809 #, c-format -msgid "MOTION: hal_exit() failed, returned %d\n" +msgid "%d: duplicate O-word label: '%s' - defined in line %d" msgstr "" -#: src/emc/motion/motion.c:289 -msgid "MOTION: emcmot_hal_data malloc failed\n" +#: src/emc/rs274ngc/interp_o_word.cc:862 +#, c-format +msgid "%d: duplicate O-word label - already defined in line %d: '%s'" msgstr "" -#: src/emc/motion/motion.c:597 +#: src/emc/rs274ngc/interp_o_word.cc:886 src/emc/rs274ngc/interp_o_word.cc:944 +#: src/emc/rs274ngc/interp_o_word.cc:978 src/emc/rs274ngc/interp_o_word.cc:996 +#: src/emc/rs274ngc/interp_o_word.cc:1013 +#: src/emc/rs274ngc/interp_o_word.cc:1038 #, c-format -msgid "MOTION: joint %d pin/param export failed\n" +msgid "%d: undefined O-word label: '%s'" msgstr "" -#: src/emc/motion/homing.c:80 src/emc/motion/homing.c:748 +#: src/emc/rs274ngc/interp_o_word.cc:889 src/emc/rs274ngc/interp_o_word.cc:947 #, c-format -msgid "hit limit in home state %d" +msgid "%d: no matching 'if' label: '%s' (found '%s' in line %d)" msgstr "" -#: src/emc/motion/homing.c:90 +#: src/emc/rs274ngc/interp_o_word.cc:981 #, c-format -msgid "end of move in home state %d" +msgid "%d: no matching label: '%s' (found '%s' in line %d): '%s'" msgstr "" -#: src/emc/motion/homing.c:185 +#: src/emc/rs274ngc/interp_o_word.cc:999 src/emc/rs274ngc/interp_o_word.cc:1016 #, c-format -msgid "unknown state '%d' during homing sequence" +msgid "%d: no matching while/do label: '%s' (found '%s' in line %d)" msgstr "" -#: src/emc/motion/homing.c:246 -msgid "Cannot home while shared home switch is closed" +#: src/emc/rs274ngc/interp_o_word.cc:1042 +#, c-format +msgid "%d: no matching label: '%s' (found '%s' in line %d)" msgstr "" -#: src/emc/motion/homing.c:290 -msgid "" -"invalid homing config: non-zero LATCH_VEL needs either SEARCH_VEL or " -"USE_INDEX" +#: src/emc/rs274ngc/interp_namedparams.cc:166 +#, c-format +msgid "Named parameter #<%s> not defined" msgstr "" -#: src/emc/motion/homing.c:299 -msgid "invalid homing config: non-zero SEARCH_VEL needs LATCH_VEL" +#: src/emc/rs274ngc/interp_namedparams.cc:196 +#, c-format +msgid "cant open ini file '%s'" msgstr "" -#: src/emc/motion/homing.c:447 -msgid "Home switch inactive before start of backoff move" +#: src/emc/rs274ngc/interp_namedparams.cc:213 +#, c-format +msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" msgstr "" -#: src/emc/motion/homing.c:495 -msgid "Home switch active before start of latch move" +#: src/emc/rs274ngc/interp_namedparams.cc:237 +#, c-format +msgid "fetch_hal_param: hal_init(%s): %d" msgstr "" -#: src/emc/motion/homing.c:551 -msgid "Home switch inactive before start of latch move" +#: src/emc/rs274ngc/interp_namedparams.cc:238 +#, c-format +msgid "fetch_hal_param: hal_ready(): %d" msgstr "" -#: src/emc/motion/homing.c:797 +#: src/emc/rs274ngc/interp_namedparams.cc:419 #, c-format -msgid "unknown state '%d' during homing" +msgid "Internal error: Could not assign #<%s>" msgstr "" -#: tcl/bin/emccalib.tcl:80 -#, fuzzy -msgid "LinuxCNC Servo Axis Calibration" -msgstr "EMC2 konfiguracija masine" +#: src/emc/rs274ngc/interp_namedparams.cc:427 +#, c-format +msgid "Cannot assign to read-only parameter #<%s>" +msgstr "" -#: tcl/bin/emccalib.tcl:90 -msgid "Save To File" +#: src/emc/rs274ngc/interp_namedparams.cc:731 +#, c-format +msgid "BUG: lookup_named_param(%s): unhandled index=%fn" msgstr "" -#: tcl/bin/emccalib.tcl:106 tcl/bin/genedit.tcl:77 tcl/bin/halconfig.tcl:151 -#: tcl/bin/halshow.tcl:85 tcl/mini.tcl:2516 tcl/tklinuxcnc.tcl:719 -#: tcl/ngcgui.tcl:549 +#: src/emc/rs274ngc/rs274ngc_pre.cc:1407 src/emc/rs274ngc/rs274ngc_pre.cc:1482 #, fuzzy -msgid "File" -msgstr "_Datoteka" +msgid "Queue is not empty after tool change" +msgstr "_Prikazi upit za promenu alata" -#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:231 tcl/bin/halconfig.tcl:153 -#: tcl/mini.tcl:3558 src/emc/usr_intf/touchy/touchy.glade:2420 -msgid "Refresh" +#: src/emc/rs274ngc/rs274ngc_pre.cc:1786 +#, c-format +msgid "Unable to open parameter file: '%s'" msgstr "" -#: tcl/bin/emccalib.tcl:110 tcl/bin/genedit.tcl:82 tcl/bin/halconfig.tcl:155 -#: tcl/mini.tcl:2535 -msgid "Save" +#: src/emc/rs274ngc/rs274ngc_return.hh:19 +msgid "A file is already open" msgstr "" -#: tcl/bin/emccalib.tcl:159 tcl/bin/halconfig.tcl:623 -#, tcl-format -msgid "Tune %d" +#: src/emc/rs274ngc/rs274ngc_return.hh:21 +msgid "All axes missing with g52 or g92" msgstr "" -#: tcl/bin/emccalib.tcl:160 tcl/bin/halconfig.tcl:628 -#, fuzzy -msgid "INI Name" -msgstr "Naziv:" +#: src/emc/rs274ngc/rs274ngc_return.hh:22 +msgid "All axes missing with motion code" +msgstr "" -#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:629 -msgid "HAL's Value" +#: src/emc/rs274ngc/rs274ngc_return.hh:23 +msgid "Arc radius too small to reach end point" msgstr "" -#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:631 -msgid "Next Value" +#: src/emc/rs274ngc/rs274ngc_return.hh:24 +msgid "Argument to acos out of range" msgstr "" -#: tcl/bin/emccalib.tcl:225 tcl/bin/halconfig.tcl:680 -#: tcl/bin/halconfig.tcl:731 -msgid "Test" +#: src/emc/rs274ngc/rs274ngc_return.hh:25 +msgid "Argument to asin out of range" msgstr "" -#: tcl/bin/emccalib.tcl:358 tcl/bin/halconfig.tcl:883 -#, tcl-format -msgid "" -"The HAL parameter \n" -" %s \n" -" has changed. \n" -" Really quit?" +#: src/emc/rs274ngc/rs274ngc_return.hh:26 +msgid "Attempt to divide by zero" msgstr "" -#: tcl/bin/emccalib.tcl:383 tcl/bin/halconfig.tcl:1170 -msgid "" -"Not permitted to save here.\n" -"\n" -" You need to copy a configuration to your home directory and work there." +#: src/emc/rs274ngc/rs274ngc_return.hh:27 +msgid "Attempt to raise negative to non integer power" msgstr "" -#: tcl/bin/emccalib.tcl:457 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 -#: tcl/bin/pickconfig.tcl:544 tcl/bin/pickconfig.tcl:555 -#: tcl/scripts/Set_Coordinates.tcl:205 tcl/scripts/Set_Coordinates.tcl:228 -#, tcl-format -msgid "can't save %s" +#: src/emc/rs274ngc/rs274ngc_return.hh:28 +msgid "Bad format unsigned integer" msgstr "" -#: tcl/bin/emcdebug.tcl:166 tcl/bin/emcdebug.tcl:177 -msgid "LinuxCNC Debug" +#: src/emc/rs274ngc/rs274ngc_return.hh:29 +msgid "Bad number format" msgstr "" -#: tcl/bin/emcdebug.tcl:185 -msgid "Invalid INI file entries" +#: src/emc/rs274ngc/rs274ngc_return.hh:30 +msgid "Bug bad g code modal group 0" msgstr "" -#: tcl/bin/emcdebug.tcl:186 -#, fuzzy -msgid "Configuration information" -msgstr "Verzeichnis:" +#: src/emc/rs274ngc/rs274ngc_return.hh:31 +msgid "Bug code not g0 or g1" +msgstr "" -#: tcl/bin/emcdebug.tcl:187 -msgid "Use of defaults" +#: src/emc/rs274ngc/rs274ngc_return.hh:32 +msgid "Bug code not g17 g18 or g19" msgstr "" -#: tcl/bin/emcdebug.tcl:188 -#, fuzzy -msgid "Version information" -msgstr "Osnovne informacije o masini" +#: src/emc/rs274ngc/rs274ngc_return.hh:33 +msgid "Bug code not g20 or g21" +msgstr "" -#: tcl/bin/emcdebug.tcl:189 -msgid "Command issuing" +#: src/emc/rs274ngc/rs274ngc_return.hh:34 +msgid "Bug code not g28 or g30" msgstr "" -#: tcl/bin/emcdebug.tcl:190 -msgid "IO points" +#: src/emc/rs274ngc/rs274ngc_return.hh:35 +msgid "Bug code not g2 or g3" msgstr "" -#: tcl/bin/emcdebug.tcl:191 -msgid "NML" +#: src/emc/rs274ngc/rs274ngc_return.hh:37 +msgid "Bug code not g4 g10 g28 g30 g52 g53 or g92 series" msgstr "" -#: tcl/bin/emcdebug.tcl:192 -#, fuzzy -msgid "Motion time" -msgstr "Vreme:" +#: src/emc/rs274ngc/rs274ngc_return.hh:38 +msgid "Bug code not g61 g61.1 or g64" +msgstr "" -#: tcl/bin/emcdebug.tcl:193 src/emc/usr_intf/axis/scripts/debuglevel.py:42 -msgid "Interpreter" +#: src/emc/rs274ngc/rs274ngc_return.hh:39 +msgid "Bug code not g90 or g91" msgstr "" -#: tcl/bin/emcdebug.tcl:194 -msgid "RCS" +#: src/emc/rs274ngc/rs274ngc_return.hh:40 +msgid "Bug code not g98 or g99" msgstr "" -#: tcl/bin/emcdebug.tcl:195 -msgid "Trajectory level" +#: src/emc/rs274ngc/rs274ngc_return.hh:41 +msgid "Bug code not in g52 or g92 series" msgstr "" -#: tcl/bin/emcdebug.tcl:196 -msgid "Interpreter list" +#: src/emc/rs274ngc/rs274ngc_return.hh:42 +msgid "Bug code not in range g54 to g593" msgstr "" -#: tcl/bin/genedit.tcl:78 tcl/mini.tcl:2533 -msgid "New" +#: src/emc/rs274ngc/rs274ngc_return.hh:43 +msgid "Bug code not m0 m1 m2 m30 m60" msgstr "" -#: tcl/bin/genedit.tcl:80 tcl/mini.tcl:1667 tcl/mini.tcl:2534 -#: tcl/tklinuxcnc.tcl:720 tcl/tklinuxcnc.tcl:1657 -#, fuzzy -msgid "Open..." -msgstr "_Otvori..." +#: src/emc/rs274ngc/rs274ngc_return.hh:44 +msgid "Bug distance mode not g90 or g91" +msgstr "" -#: tcl/bin/genedit.tcl:84 tcl/mini.tcl:2536 -#, fuzzy -msgid "Save As..." -msgstr "_Snimi G-kod kao..." +#: src/emc/rs274ngc/rs274ngc_return.hh:45 +msgid "Bug function should not have been called" +msgstr "" -#: tcl/bin/genedit.tcl:87 tcl/bin/halconfig.tcl:165 tcl/bin/halshow.tcl:92 -#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1243 -#: tcl/ngcgui.tcl:3680 -msgid "Exit" +#: src/emc/rs274ngc/rs274ngc_return.hh:46 +msgid "Bug in tool radius comp" msgstr "" -#: tcl/bin/genedit.tcl:91 tcl/mini.tcl:2517 -#, fuzzy -msgid "Edit" -msgstr "_Uredi..." +#: src/emc/rs274ngc/rs274ngc_return.hh:47 +msgid "Bug plane not xy yz or xz" +msgstr "" -#: tcl/bin/genedit.tcl:92 tcl/mini.tcl:2543 -msgid "Cut" +#: src/emc/rs274ngc/rs274ngc_return.hh:48 +msgid "Bug side not right or left" msgstr "" -#: tcl/bin/genedit.tcl:94 tcl/mini.tcl:2544 -msgid "Copy" +#: src/emc/rs274ngc/rs274ngc_return.hh:49 +msgid "Bug unknown motion code" msgstr "" -#: tcl/bin/genedit.tcl:96 tcl/mini.tcl:2545 -#, fuzzy -msgid "Paste" -msgstr "_Pauza" +#: src/emc/rs274ngc/rs274ngc_return.hh:50 +msgid "Bug unknown operation" +msgstr "" -#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:68 -msgid "Select All" +#: src/emc/rs274ngc/rs274ngc_return.hh:51 +msgid "Cannot change axis offsets with cutter radius comp" msgstr "" -#: tcl/bin/genedit.tcl:104 tcl/bin/halconfig.tcl:192 tcl/mini.tcl:919 -#: tcl/mini.tcl:2519 tcl/tklinuxcnc.tcl:790 +#: src/emc/rs274ngc/rs274ngc_return.hh:52 +msgid "Cannot create backup file" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:53 +msgid "Cannot do g1 with zero feed rate" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:54 +msgid "Cannot do zero repeats of cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:55 +msgid "Cannot make arc with zero feed rate" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:56 +msgid "Cannot open backup file" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:57 +msgid "Cannot open variable file" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:58 +msgid "Cannot probe with cutter radius comp on" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:59 +msgid "Cannot probe with zero feed rate" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:60 +msgid "Cannot put a b in canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:61 +msgid "Cannot put a c in canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:62 +msgid "Cannot put an a in canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:63 +msgid "Cannot turn cutter radius comp on when on" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:64 +msgid "Cannot use axis values with g80" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:65 +msgid "Cannot use axis values without a g code that uses them" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:66 +msgid "Cannot use g28 or g30 with cutter radius comp" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:67 +msgid "Cannot use g53 incremental" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:68 +msgid "Cannot use g53 with cutter radius comp" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:69 +msgid "Cannot use two g codes that both use axis values" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:70 +#, fuzzy +msgid "Command too long" +msgstr "prikazi za_datu poziciju" + +#: src/emc/rs274ngc/rs274ngc_return.hh:71 +msgid "Current point same as end point of arc" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:72 +msgid "Dwell time missing with g4" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:73 +msgid "Dwell time p word missing with g82" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:74 +msgid "Dwell time p word missing with g86" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:75 +msgid "Dwell time p word missing with g88" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:76 +msgid "Dwell time p word missing with g89" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:77 +msgid "Equal sign missing in parameter setting" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:78 +msgid "F word missing with inverse time arc move" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:79 +msgid "F word missing with inverse time g1 move" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:80 +msgid "File ended with no percent sign" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:81 +msgid "File ended with no percent sign or program end" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:82 +msgid "File name too long" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:83 +msgid "G code out of range" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:84 +msgid "I word given for arc in yz plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:85 +msgid "I word missing with g87" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:86 +msgid "J word given for arc in xz plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:87 +msgid "J word missing with g87" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:88 +msgid "K word given for arc in xy plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:89 +msgid "K word missing with g87" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:90 +msgid "Left bracket missing after slash with atan" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:91 +msgid "Left bracket missing after unary operation name" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:92 +#, c-format +msgid "M code greater than 199: M%d" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:93 +msgid "Mixed radius ijk format for arc" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:94 +msgid "Multiple a words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:95 +msgid "Multiple b words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:96 +msgid "Multiple c words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:97 +msgid "Multiple d words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:98 +msgid "Multiple f words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:99 +msgid "Multiple h words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:100 +msgid "Multiple i words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:101 +msgid "Multiple j words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:102 +msgid "Multiple k words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:103 +msgid "Multiple l words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:104 +msgid "Multiple p words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:105 +msgid "Multiple q words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:106 +msgid "Multiple r words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:107 +msgid "Multiple s words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:108 +msgid "Multiple t words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:109 +msgid "Multiple x words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:110 +msgid "Multiple y words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:111 +msgid "Multiple z words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:112 +msgid "Must use g0 or g1 with g53" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:113 +msgid "Negative argument to sqrt" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:114 +msgid "Negative d word tool radius index used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:115 +msgid "Negative f word used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:116 +#, fuzzy +msgid "Negative g code used" +msgstr "Sacuvaj G-kod kao" + +#: src/emc/rs274ngc/rs274ngc_return.hh:117 +msgid "Negative h word used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:118 +msgid "Negative l word used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:119 +#, fuzzy +msgid "Negative m code used" +msgstr "Grad / Umdrehung" + +#: src/emc/rs274ngc/rs274ngc_return.hh:120 +msgid "Negative or zero q value used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:121 +msgid "Negative p word used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:122 +#, fuzzy +msgid "Negative spindle speed used" +msgstr "Prekoracenje brzine obr.motora:" + +#: src/emc/rs274ngc/rs274ngc_return.hh:123 +msgid "Negative tool id used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:124 +msgid "Nested comment found" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:125 +msgid "No characters found in reading real value" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:126 +msgid "Non integer value for integer" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:127 +msgid "Null missing after newline" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:128 +msgid "Parameter file out of order" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:129 +msgid "Parameter number out of range" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:130 +msgid "Parameter is readonly" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:131 +msgid "Q word missing with g83" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:132 +msgid "Queue is not empty after probing" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:133 +msgid "R clearance plane unspecified in cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:134 +msgid "R i j k words all missing for arc" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:135 +msgid "R less than x in cycle in yz plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:136 +msgid "R less than y in cycle in xz plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:137 +msgid "R less than z in cycle in xy plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:138 +msgid "R word with no g code that uses it" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:139 +msgid "Slash missing after first atan argument" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:140 +msgid "Spindle not turning clockwise in g84" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:141 +msgid "Spindle not turning in g86" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:142 +msgid "Spindle not turning in g87" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:143 +msgid "Spindle not turning in g88" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:144 +msgid "Sscanf failed" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:145 +msgid "Start point too close to probe point" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:146 +msgid "Too many m codes on line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:147 +msgid "Pocket max too large" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:148 +msgid "Tool radius not less than arc radius with comp" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:149 +msgid "Two g codes used from same modal group" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:150 +msgid "Two m codes used from same modal group" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:151 +#, c-format +msgid "Unable to open file <%s>" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:152 +msgid "Unclosed comment found" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:153 +#, fuzzy +msgid "Unclosed expression" +msgstr "Neupotrebljen" + +#: src/emc/rs274ngc/rs274ngc_return.hh:154 +#, fuzzy +msgid "Unknown g code used" +msgstr "Nepoznat alat%d" + +#: src/emc/rs274ngc/rs274ngc_return.hh:155 +#, fuzzy, c-format +msgid "Unknown m code used: M%d" +msgstr "Nepoznat alat%d" + +#: src/emc/rs274ngc/rs274ngc_return.hh:156 +#, fuzzy +msgid "Unknown operation" +msgstr "Nepoznat alat%d" + +#: src/emc/rs274ngc/rs274ngc_return.hh:157 +msgid "Unknown operation name starting with a" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:158 +msgid "Unknown operation name starting with m" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:159 +msgid "Unknown operation name starting with o" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:160 +msgid "Unknown operation name starting with x" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:161 +msgid "Unknown word starting with a" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:162 +msgid "Unknown word starting with c" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:163 +msgid "Unknown word starting with e" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:164 +msgid "Unknown word starting with f" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:165 +msgid "Unknown word starting with l" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:166 +msgid "Unknown word starting with r" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:167 +msgid "Unknown word starting with s" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:168 +msgid "Unknown word starting with t" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:169 +msgid "Unknown word where unary operation could be" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:170 +msgid "X and y words missing for arc in xy plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:171 +msgid "X and z words missing for arc in xz plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:172 +msgid "X value unspecified in yz plane canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:173 +msgid "Y and z words missing for arc in yz plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:174 +msgid "Y value unspecified in xz plane canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:175 +msgid "Z value unspecified in xy plane canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:176 +msgid "Zero or negative argument to ln" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:177 +msgid "Zero radius arc" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:178 +msgid "K word missing with g33/g33.1" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:179 +msgid "F word used with a g33/g33.1" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:180 +msgid "Unknown operation name starting with e" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:181 +msgid "Unknown operation name starting with n" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:182 +msgid "Unknown operation name starting with g" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:183 +msgid "Unknown operation name starting with l" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:184 +msgid "Too many subroutine parameters" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:185 +msgid "Too many subroutine levels" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:186 +msgid "Bug: call stack underrun" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:187 +msgid "Unknown control command in o word" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:188 +msgid "Too many oword labels" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:189 +#, fuzzy +msgid "Unknown oword number" +msgstr "Nepoznat alat%d" + +#: src/emc/rs274ngc/rs274ngc_return.hh:190 +msgid "Nested subroutine definition" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:191 +msgid "Not in subroutine definition" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:192 +msgid "File not open" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:193 +#, c-format +msgid "cannot reopen file %s - removed or renamed? (%s)" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:194 +#, fuzzy +msgid "Need tool prepared -Txx- for toolchange" +msgstr "_Prikazi upit za promenu alata" + +#: src/emc/rs274ngc/rs274ngc_return.hh:195 +msgid "Cannot change planes with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:196 +msgid "Cutter radius compensation allowed only in XY, XZ planes" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:197 +msgid "P word missing with G76" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:198 +msgid "I J or K words missing with G76" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:199 +msgid "Cannot move rotary axes with G76" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:200 +msgid "Multiple e words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:201 +msgid "Named parameter not terminated" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:202 +msgid "Out of memory" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:203 +msgid "S word missing with G96" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:204 +msgid "Queue is not empty after external input" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:205 +msgid "Can't select analog input with wait type != immediate return" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:206 +msgid "Zero timeout with wait type != immediate return" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:207 +msgid "Invalid to select both a digital and an analog input with M66" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:208 +msgid "Need to have either a valid P or a valid E word with M66" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:209 +msgid "Q word missing with g73" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:210 +msgid "Digital input selected out of bounds" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:211 +msgid "Analog input selected out of bounds" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:212 +msgid "W value unspecified in UV plane canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:213 +msgid "U value unspecified in VW plane canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:214 +msgid "V value unspecified in UW plane canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:215 +msgid "R less than W in cycle in UV plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:216 +msgid "R less than U in cycle in VW plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:217 +msgid "R less than V in cycle in UW plane" +msgstr "" + +#: src/hal/utils/meter.c:200 +#, c-format +msgid "ERROR: '%s' is not a valid probe type\n" +msgstr "" + +#: src/hal/utils/meter.c:208 +#, c-format +msgid "ERROR: no pin/signal/parameter name\n" +msgstr "" + +#: src/hal/utils/meter.c:214 +#, c-format +msgid "" +"ERROR: -s option requires a probe type and a pin/signal/parameter name\n" +msgstr "" + +#: src/hal/utils/meter.c:240 tcl/tklinuxcnc.tcl:764 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6431 +#, fuzzy +msgid "Hal Meter" +msgstr "H_AL-Metar..." + +#: src/hal/utils/meter.c:290 +msgid "_Select" +msgstr "" + +#: src/hal/utils/meter.c:291 +msgid "E_xit" +msgstr "" + +#: src/hal/utils/meter.c:339 src/hal/utils/meter.c:367 +msgid "Select Item to Probe" +msgstr "" + +#: src/hal/utils/meter.c:669 +msgid " _Pins " +msgstr "" + +#: src/hal/utils/meter.c:670 +msgid " _Signals " +msgstr "" + +#: src/hal/utils/meter.c:671 +msgid " Para_meters " +msgstr "" + +#: src/hal/utils/meter.c:714 +msgid "_Close" +msgstr "" + +#: src/hal/utils/scope.c:126 +msgid "" +"Usage:\n" +" halscope [-h] [-i infile] [-o outfile] [num_samples]\n" +msgstr "" + +#: src/hal/utils/scope.c:479 src/hal/utils/scope.c:506 +#, fuzzy +msgid "Open Configuration File:" +msgstr "Verzeichnis:" + +#: src/hal/utils/scope.c:540 +#, fuzzy +msgid "_Open Configuration..." +msgstr "Konfiguration der Spindel" + +#: src/hal/utils/scope.c:546 +#, fuzzy +msgid "_Save Configuration..." +msgstr "Konfiguration der Spindel" + +#: src/hal/utils/scope.c:555 +msgid "O_pen Data File..." +msgstr "" + +#: src/hal/utils/scope.c:562 +msgid "S_ave Data File..." +msgstr "" + +#: src/hal/utils/scope.c:571 share/axis/tcl/axis.tcl:96 +#, fuzzy +msgid "_Quit" +msgstr "_Odustani" + +#: src/hal/utils/scope.c:577 +msgid "_About Halscope" +msgstr "" + +#: src/hal/utils/scope.c:583 share/axis/tcl/axis.tcl:501 +#, fuzzy +msgid "_File" +msgstr "_Datoteka" + +#: src/hal/utils/scope.c:587 share/axis/tcl/axis.tcl:517 +#, fuzzy +msgid "_Help" +msgstr "_Pomoc" + +#: src/hal/utils/scope.c:646 +msgid "HAL Oscilloscope" +msgstr "" + +#: src/hal/utils/scope.c:674 +msgid "Horizontal" +msgstr "" + +#: src/hal/utils/scope.c:682 +msgid "Selected Channel" +msgstr "" + +#: src/hal/utils/scope.c:688 +msgid "Run Mode" +msgstr "" + +#: src/hal/utils/scope.c:691 +msgid "Trigger" +msgstr "" + +#: src/hal/utils/scope.c:697 +msgid "Vertical" +msgstr "" + +#: src/hal/utils/scope.c:705 share/axis/tcl/axis.tcl:138 +#: share/axis/tcl/axis.tcl:1269 src/emc/usr_intf/gscreen/gscreen.py:3416 +#: src/emc/usr_intf/gscreen/gscreen.py:3417 +#: src/emc/usr_intf/gscreen/gscreen.glade:2614 +#, fuzzy +msgid "Stop" +msgstr "_Korak po korak" + +#: src/hal/utils/scope.c:708 +msgid "Normal" +msgstr "" + +#: src/hal/utils/scope.c:711 +#, fuzzy +msgid "Single" +msgstr "Duzina _koraka:" + +#: src/hal/utils/scope.c:714 +msgid "Roll" +msgstr "" + +#: src/hal/utils/scope_horiz.c:130 src/emc/usr_intf/gscreen/gscreen.glade:3419 +#, fuzzy +msgid "Zoom" +msgstr "Uvecaj" + +#: src/hal/utils/scope_horiz.c:131 +msgid " Pos " +msgstr "" + +#: src/hal/utils/scope_horiz.c:164 +msgid "" +"----- Samples\n" +"at ---- KHz" +msgstr "" + +#: src/hal/utils/scope_horiz.c:464 +msgid "Realtime component not loaded" +msgstr "" + +#: src/hal/utils/scope_horiz.c:465 +msgid "" +"HALSCOPE uses a realtime component called scope_rt'\n" +"to sample signals for display. It is not currently loaded\n" +"and attempting to load it automatically failed. More information\n" +"may be available in the terminal where halscope was started.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Load the component (using 'halcmd loadrt scope_rt'), then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" +msgstr "" + +#: src/hal/utils/scope_horiz.c:536 +msgid "Realtime function not linked" +msgstr "" + +#: src/hal/utils/scope_horiz.c:537 +msgid "" +"The HALSCOPE realtime sampling function\n" +"must be called from a HAL thread in to\n" +"determine the sampling rate.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Select a thread name and multiplier then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" +msgstr "" + +#: src/hal/utils/scope_horiz.c:544 +msgid "Select Sample Rate" +msgstr "" + +#: src/hal/utils/scope_horiz.c:545 +msgid "" +"Select a thread name and multiplier then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" +msgstr "" + +#: src/hal/utils/scope_horiz.c:567 +msgid "Thread:" +msgstr "" + +#: src/hal/utils/scope_horiz.c:575 +#, fuzzy +msgid "Sample Period:" +msgstr "Min Base Period:" + +#: src/hal/utils/scope_horiz.c:583 +msgid "Sample Rate:" +msgstr "" + +#: src/hal/utils/scope_horiz.c:599 src/emc/usr_intf/touchy/mdi.py:79 +#: src/emc/usr_intf/gscreen/mdi.py:78 +msgid "Thread" +msgstr "" + +#: src/hal/utils/scope_horiz.c:600 +msgid "Period" +msgstr "" + +#: src/hal/utils/scope_horiz.c:638 +msgid "Multiplier:" +msgstr "" + +#: src/hal/utils/scope_horiz.c:655 +msgid "Record Length" +msgstr "" + +#: src/hal/utils/scope_horiz.c:658 +#, c-format +msgid "%5d samples (1 channel)" +msgstr "" + +#: src/hal/utils/scope_horiz.c:660 +#, c-format +msgid "%5d samples (2 channels)" +msgstr "" + +#: src/hal/utils/scope_horiz.c:664 +#, c-format +msgid "%5d samples (4 channels)" +msgstr "" + +#: src/hal/utils/scope_horiz.c:668 +#, c-format +msgid "%5d samples (8 channels)" +msgstr "" + +#: src/hal/utils/scope_horiz.c:672 +#, c-format +msgid "%5d samples (16 channels)" +msgstr "" + +#: src/hal/utils/scope_horiz.c:727 src/hal/utils/scope_horiz.c:773 +#: src/hal/utils/scope_horiz.c:985 src/hal/utils/scope_vert.c:771 +#: src/hal/utils/scope_vert.c:863 tcl/bin/emccalib.tcl:232 +#: tcl/bin/genedit.tcl:180 tcl/bin/genedit.tcl:450 tcl/bin/halconfig.tcl:682 +#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:387 +#: tcl/bin/pickconfig.tcl:749 tcl/bin/pickconfig.tcl:799 tcl/mini.tcl:1456 +#: tcl/mini.tcl:2937 tcl/tklinuxcnc.tcl:160 tcl/tklinuxcnc.tcl:245 +#: tcl/tklinuxcnc.tcl:419 tcl/tklinuxcnc.tcl:1338 tcl/tklinuxcnc.tcl:1407 +#: tcl/tklinuxcnc.tcl:1438 tcl/tklinuxcnc.tcl:1469 tcl/tklinuxcnc.tcl:2017 +#: tcl/tklinuxcnc.tcl:2036 tcl/tklinuxcnc.tcl:2055 tcl/tklinuxcnc.tcl:2102 +#: src/emc/usr_intf/axis/scripts/axis.py:1106 +#: src/emc/usr_intf/axis/scripts/axis.py:1173 +#: src/emc/usr_intf/axis/scripts/axis.py:1508 +#: src/emc/usr_intf/axis/scripts/axis.py:2672 +#: src/emc/usr_intf/axis/scripts/axis.py:3599 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:718 +#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1828 +#: share/axis/tcl/axis.tcl:1865 +msgid "OK" +msgstr "OK" + +#: src/hal/utils/scope_horiz.c:732 src/hal/utils/scope_horiz.c:773 +#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 tcl/tooledit.tcl:468 +#, fuzzy +msgid "Quit" +msgstr "_Odustani" + +#: src/hal/utils/scope_horiz.c:764 +msgid "Realtime thread(s) not running" +msgstr "" + +#: src/hal/utils/scope_horiz.c:765 +msgid "" +"HALSCOPE uses code in a realtime HAL thread to sample\n" +"signals for display. The HAL thread(s) are not running.\n" +"Threads are usually started by the application you are\n" +"attempting to run, or you can use the 'halcmd start' command.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Start the threads, then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" +msgstr "" + +#: src/hal/utils/scope_horiz.c:798 +msgid "Pick log file to write to:" +msgstr "" + +#: src/hal/utils/scope_horiz.c:981 +msgid "Not enough channels" +msgstr "" + +#: src/hal/utils/scope_horiz.c:982 +msgid "" +"This record length cannot handle the channels\n" +"that are currently enabled. Pick a shorter\n" +"record length that supports more channels." +msgstr "" + +#: src/hal/utils/scope_horiz.c:1070 +#, c-format +msgid "" +"%s\n" +"per div" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1085 +#, c-format +msgid "" +"%s samples\n" +"at %s" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1189 +msgid "nSec" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1192 +msgid "uSec" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1196 +msgid "mSec" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1200 src/emc/usr_intf/pncconf/pncconf.glade:2635 +#: src/emc/usr_intf/pncconf/pncconf.glade:3533 +#: src/emc/usr_intf/pncconf/pncconf.glade:4414 +#: src/emc/usr_intf/pncconf/pncconf.glade:5295 +#, fuzzy +msgid "Sec" +msgstr "Skundarni" + +#: src/hal/utils/scope_horiz.c:1217 src/emc/usr_intf/stepconf/spindle.glade:301 +#: src/emc/usr_intf/stepconf/axisx.glade:693 +#: src/emc/usr_intf/stepconf/axisy.glade:679 +#: src/emc/usr_intf/stepconf/axisz.glade:679 +#: src/emc/usr_intf/stepconf/axisa.glade:693 +#: src/emc/usr_intf/pncconf/pncconf.glade:8024 +#: src/emc/usr_intf/pncconf/pncconf.glade:8201 +#: src/emc/usr_intf/pncconf/pncconf.glade:8213 +msgid "Hz" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1220 +msgid "KHz" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1224 +msgid "Mhz" +msgstr "" + +#: src/hal/utils/scope_vert.c:413 src/hal/utils/scope_vert.c:1303 +#, fuzzy, c-format +msgid "" +"Offset\n" +"%s" +msgstr "Test %s-ose" + +#: src/hal/utils/scope_vert.c:628 +msgid "Gain" +msgstr "" + +#: src/hal/utils/scope_vert.c:640 src/hal/utils/scope_trig.c:272 +msgid "Pos" +msgstr "" + +#: src/hal/utils/scope_vert.c:654 tcl/ngcgui_ttt.tcl:214 +#: src/emc/usr_intf/pncconf/pncconf.glade:64273 +msgid "Scale" +msgstr "" + +#: src/hal/utils/scope_vert.c:667 +msgid "Chan Off" +msgstr "" + +#: src/hal/utils/scope_vert.c:723 +#, fuzzy +msgid "Set Offset" +msgstr "Test %s-ose" + +#: src/hal/utils/scope_vert.c:724 +#, c-format +msgid "" +"Set the vertical offset\n" +"for channel %d." +msgstr "" + +#: src/hal/utils/scope_vert.c:744 +msgid "AC Coupled" +msgstr "" + +#: src/hal/utils/scope_vert.c:779 src/hal/utils/scope_vert.c:1215 +#: src/hal/utils/scope_trig.c:387 tcl/bin/emccalib.tcl:234 +#: tcl/bin/genedit.tcl:294 tcl/bin/halconfig.tcl:103 tcl/bin/halconfig.tcl:684 +#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:390 +#: tcl/bin/pickconfig.tcl:567 tcl/mini.tcl:1457 tcl/mini.tcl:2938 +#: tcl/mini.tcl:3110 tcl/tklinuxcnc.tcl:162 tcl/tklinuxcnc.tcl:213 +#: tcl/tklinuxcnc.tcl:420 tcl/tklinuxcnc.tcl:1339 tcl/tklinuxcnc.tcl:1408 +#: tcl/tklinuxcnc.tcl:1439 tcl/tklinuxcnc.tcl:1470 tcl/tklinuxcnc.tcl:2103 +#: src/emc/usr_intf/axis/scripts/axis.py:1453 +#: src/emc/usr_intf/axis/scripts/axis.py:1509 +#: src/emc/usr_intf/axis/scripts/axis.py:1699 +#: src/emc/usr_intf/axis/scripts/axis.py:2108 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:720 +#: src/emc/usr_intf/stepconf/main_page.glade:467 +#: src/emc/usr_intf/gscreen/gscreen.glade:3986 +msgid "Cancel" +msgstr "Odustani" + +#: src/hal/utils/scope_vert.c:859 +#, fuzzy +msgid "Too many channels" +msgstr "Promena alata" + +#: src/hal/utils/scope_vert.c:860 +msgid "" +"You cannot add another channel.\n" +"\n" +"Either turn off one or more channels, or shorten\n" +"the record length to allow for more channels" +msgstr "" + +#: src/hal/utils/scope_vert.c:1074 +msgid "Select Channel Source" +msgstr "" + +#: src/hal/utils/scope_vert.c:1075 +#, c-format +msgid "" +"Select a pin, signal, or parameter\n" +"as the source for channel %d." +msgstr "" + +#: src/hal/utils/scope_vert.c:1107 +msgid "Pins" +msgstr "" + +#: src/hal/utils/scope_vert.c:1108 +msgid "Signals" +msgstr "" + +#: src/hal/utils/scope_vert.c:1109 +msgid "Parameters" +msgstr "" + +#: src/hal/utils/scope_trig.c:110 +#, c-format +msgid "Falling" +msgstr "" + +#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:295 +#, c-format +msgid "Rising" +msgstr "" + +#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:303 +msgid "" +"Source\n" +"None" +msgstr "" + +#: src/hal/utils/scope_trig.c:124 +#, c-format +msgid "" +"Source\n" +"Chan %2d" +msgstr "" + +#: src/hal/utils/scope_trig.c:219 tcl/tklinuxcnc.tcl:827 +#: src/emc/usr_intf/touchy/touchy.glade:2469 +msgid "Auto" +msgstr "" + +#: src/hal/utils/scope_trig.c:221 +msgid "Force" +msgstr "" + +#: src/hal/utils/scope_trig.c:255 src/hal/utils/scope_trig.c:289 +msgid "Level" +msgstr "" + +#: src/hal/utils/scope_trig.c:323 +msgid "Trigger Source" +msgstr "" + +#: src/hal/utils/scope_trig.c:324 +msgid "Select a channel to use for triggering." +msgstr "" + +#: src/hal/utils/scope_trig.c:347 +msgid "Chan" +msgstr "" + +#: src/hal/utils/scope_trig.c:348 +msgid "Source" +msgstr "" + +#: src/emc/motion/control.c:270 +msgid "Unexpected realtime delay: check dmesg for details." +msgstr "" + +#: src/emc/motion/control.c:272 +#, c-format +msgid "" +"\n" +"In recent history there were\n" +"%ld, %ld, %ld, %ld, and %ld\n" +"elapsed clocks between calls to the motion controller.\n" +msgstr "" + +#: src/emc/motion/control.c:277 +#, c-format +msgid "" +"This time, there were %ld which is so anomalously\n" +"large that it probably signifies a problem with your\n" +"realtime configuration. For the rest of this run of\n" +"EMC, this message will be suppressed.\n" +"\n" +msgstr "" + +#: src/emc/motion/control.c:394 +msgid "G38.4 move finished without breaking contact." +msgstr "" + +#: src/emc/motion/control.c:397 +msgid "G38.2 move finished without making contact." +msgstr "" + +#: src/emc/motion/control.c:412 +msgid "Probe tripped during non-probe MDI command." +msgstr "" + +#: src/emc/motion/control.c:440 +msgid "Probe tripped during homing motion." +msgstr "" + +#: src/emc/motion/control.c:444 +msgid "Probe tripped during a jog." +msgstr "" + +#: src/emc/motion/control.c:622 +msgid "can't add coordinated return move" +msgstr "" + +#: src/emc/motion/control.c:663 +msgid "can't add linear coordinated jog move" +msgstr "" + +#: src/emc/motion/control.c:817 +#, c-format +msgid "fault %d during orient in progress" +msgstr "" + +#: src/emc/motion/control.c:957 +msgid "motion stopped by enable input" +msgstr "" + +#: src/emc/motion/control.c:980 +#, c-format +msgid "joint %d on limit switch error" +msgstr "" + +#: src/emc/motion/control.c:992 +#, c-format +msgid "joint %d amplifier fault" +msgstr "" + +#: src/emc/motion/control.c:1001 +#, c-format +msgid "joint %d following error" +msgstr "" + +#: src/emc/motion/control.c:1687 +#, c-format +msgid "Exceeded positive soft limit on joint %d" +msgstr "" + +#: src/emc/motion/control.c:1692 +#, c-format +msgid "Exceeded negative soft limit on joint %d" +msgstr "" + +#: src/emc/motion/command.c:163 +#, c-format +msgid "Can't jog invalid joint number %d." +msgstr "" + +#: src/emc/motion/command.c:167 +#, c-format +msgid "Can't jog joint %d further past max hard limit." +msgstr "" + +#: src/emc/motion/command.c:172 +#, c-format +msgid "Can't jog joint %d further past min hard limit." +msgstr "" + +#: src/emc/motion/command.c:178 +#, c-format +msgid "Can't jog joint %d further past max soft limit." +msgstr "" + +#: src/emc/motion/command.c:183 +#, c-format +msgid "Can't jog joint %d further past min soft limit." +msgstr "" + +#: src/emc/motion/command.c:243 +#, c-format +msgid "%s move on line %d would exceed joint %d's positive limit" +msgstr "" + +#: src/emc/motion/command.c:250 +#, c-format +msgid "%s move on line %d would exceed joint %d's negative limit" +msgstr "" + +#: src/emc/motion/command.c:535 +msgid "all joints must be homed before going into coordinated mode" +msgstr "" + +#: src/emc/motion/command.c:556 +msgid "all joints must be homed before going into teleop mode" +msgstr "" + +#: src/emc/motion/command.c:710 src/emc/motion/command.c:776 +#: src/emc/motion/command.c:849 +msgid "Can't jog joint in coordinated mode." +msgstr "" + +#: src/emc/motion/command.c:715 src/emc/motion/command.c:781 +#: src/emc/motion/command.c:854 +msgid "Can't jog joint when not enabled." +msgstr "" + +#: src/emc/motion/command.c:720 src/emc/motion/command.c:859 +msgid "Can't jog any joints while homing." +msgstr "" + +#: src/emc/motion/command.c:786 +msgid "Can't jog any joint while homing." +msgstr "" + +#: src/emc/motion/command.c:918 +msgid "need to be enabled, in coord mode for linear move" +msgstr "" + +#: src/emc/motion/command.c:928 +msgid "can't do linear move with limits exceeded" +msgstr "" + +#: src/emc/motion/command.c:954 +#, c-format +msgid "can't add linear move at line %d, error code %d" +msgstr "" + +#: src/emc/motion/command.c:982 +msgid "need to be enabled, in coord mode for circular move" +msgstr "" + +#: src/emc/motion/command.c:993 +msgid "can't do circular move with limits exceeded" +msgstr "" + +#: src/emc/motion/command.c:1015 +#, c-format +msgid "can't add circular move at line %d, error code %d" +msgstr "" + +#: src/emc/motion/command.c:1114 +msgid "MOTION: can't STEP while jogging" +msgstr "" + +#: src/emc/motion/command.c:1117 +msgid "MOTION: can't STEP while in return move" +msgstr "" + +#: src/emc/motion/command.c:1127 +#, c-format +msgid "MOTION: STEP while in state %d" +msgstr "" + +#: src/emc/motion/command.c:1229 +msgid "can't enable motion, enable input is false" +msgstr "" + +#: src/emc/motion/command.c:1302 +msgid "must be in joint mode to home" +msgstr "" + +#: src/emc/motion/command.c:1313 src/emc/motion/command.c:1324 +msgid "homing sequence already in progress" +msgstr "" + +#: src/emc/motion/command.c:1322 +msgid "homing already in progress" +msgstr "" + +#: src/emc/motion/command.c:1352 +msgid "must be in joint mode or disabled to unhome" +msgstr "" + +#: src/emc/motion/command.c:1364 src/emc/motion/command.c:1387 +#, c-format +msgid "Cannot unhome while homing, joint %d" +msgstr "" + +#: src/emc/motion/command.c:1368 src/emc/motion/command.c:1391 +#, c-format +msgid "Cannot unhome while moving, joint %d" +msgstr "" + +#: src/emc/motion/command.c:1396 +#, c-format +msgid "Cannot unhome inactive joint %d" +msgstr "" + +#: src/emc/motion/command.c:1400 +#, c-format +msgid "Cannot unhome invalid joint %d (max %d)" +msgstr "" + +#: src/emc/motion/command.c:1427 +msgid "need to be enabled, in coord mode for probe move" +msgstr "" + +#: src/emc/motion/command.c:1437 +msgid "can't do probe move with limits exceeded" +msgstr "" + +#: src/emc/motion/command.c:1451 +msgid "Probe is already clear when starting G38.4 or G38.5 move" +msgstr "" + +#: src/emc/motion/command.c:1453 +msgid "Probe is already tripped when starting G38.2 or G38.3 move" +msgstr "" + +#: src/emc/motion/command.c:1473 +msgid "can't add probe move" +msgstr "" + +#: src/emc/motion/command.c:1498 +msgid "need to be enabled, in coord mode for rigid tap move" +msgstr "" + +#: src/emc/motion/command.c:1509 +msgid "can't do rigid tap move with limits exceeded" +msgstr "" + +#: src/emc/motion/command.c:1526 +msgid "can't add rigid tap move" +msgstr "" + +#: src/emc/motion/command.c:1541 +msgid "need to be enabled, in teleop mode for teleop move" +msgstr "" + +#: src/emc/motion/command.c:1710 +#, c-format +msgid "joint %d: too many compensation entries" +msgstr "" + +#: src/emc/motion/command.c:1716 +#, c-format +msgid "joint %d: compensation values must increase" +msgstr "" + +#: src/emc/motion/command.c:1745 +#, c-format +msgid "unrecognized command %d" +msgstr "" + +#: src/emc/motion/motion.c:212 +msgid "MOTION: hal_init() failed\n" +msgstr "" + +#: src/emc/motion/motion.c:217 +#, c-format +msgid "MOTION: num_joints is %d, must be between 1 and %d\n" +msgstr "" + +#: src/emc/motion/motion.c:224 +#, c-format +msgid "MOTION: num_dio is %d, must be between 1 and %d\n" +msgstr "" + +#: src/emc/motion/motion.c:231 +#, c-format +msgid "MOTION: num_aio is %d, must be between 1 and %d\n" +msgstr "" + +#: src/emc/motion/motion.c:239 +msgid "MOTION: init_hal_io() failed\n" +msgstr "" + +#: src/emc/motion/motion.c:248 +msgid "MOTION: init_comm_buffers() failed\n" +msgstr "" + +#: src/emc/motion/motion.c:256 +msgid "MOTION: init_threads() failed\n" +msgstr "" + +#: src/emc/motion/motion.c:281 +#, c-format +msgid "MOTION: hal_stop_threads() failed, returned %d\n" +msgstr "" + +#: src/emc/motion/motion.c:294 +#, c-format +msgid "MOTION: rtapi_shmem_delete() failed, returned %d\n" +msgstr "" + +#: src/emc/motion/motion.c:300 +#, c-format +msgid "MOTION: hal_exit() failed, returned %d\n" +msgstr "" + +#: src/emc/motion/motion.c:323 +msgid "MOTION: emcmot_hal_data malloc failed\n" +msgstr "" + +#: src/emc/motion/motion.c:331 +msgid "MOTION: joints malloc failed\n" +msgstr "" + +#: src/emc/motion/motion.c:695 +#, c-format +msgid "MOTION: joint %d pin/param export failed\n" +msgstr "" + +#: src/emc/motion/homing.c:80 src/emc/motion/homing.c:748 +#, c-format +msgid "hit limit in home state %d" +msgstr "" + +#: src/emc/motion/homing.c:90 +#, c-format +msgid "end of move in home state %d" +msgstr "" + +#: src/emc/motion/homing.c:185 +#, c-format +msgid "unknown state '%d' during homing sequence" +msgstr "" + +#: src/emc/motion/homing.c:246 +msgid "Cannot home while shared home switch is closed" +msgstr "" + +#: src/emc/motion/homing.c:290 +msgid "" +"invalid homing config: non-zero LATCH_VEL needs either SEARCH_VEL or " +"USE_INDEX" +msgstr "" + +#: src/emc/motion/homing.c:299 +msgid "invalid homing config: non-zero SEARCH_VEL needs LATCH_VEL" +msgstr "" + +#: src/emc/motion/homing.c:447 +msgid "Home switch inactive before start of backoff move" +msgstr "" + +#: src/emc/motion/homing.c:495 +msgid "Home switch active before start of latch move" +msgstr "" + +#: src/emc/motion/homing.c:551 +msgid "Home switch inactive before start of latch move" +msgstr "" + +#: src/emc/motion/homing.c:797 +#, c-format +msgid "unknown state '%d' during homing" +msgstr "" + +#: tcl/bin/emccalib.tcl:80 +#, fuzzy +msgid "Machinekit Servo Axis Calibration" +msgstr "EMC2 konfiguracija masine" + +#: tcl/bin/emccalib.tcl:90 +msgid "Save To File" +msgstr "" + +#: tcl/bin/emccalib.tcl:106 tcl/bin/genedit.tcl:77 tcl/bin/halconfig.tcl:151 +#: tcl/bin/halshow.tcl:85 tcl/mini.tcl:2516 tcl/tklinuxcnc.tcl:719 +#: tcl/ngcgui.tcl:489 +#, fuzzy +msgid "File" +msgstr "_Datoteka" + +#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:236 tcl/bin/halconfig.tcl:153 +#: tcl/mini.tcl:3558 src/emc/usr_intf/touchy/touchy.glade:2420 +msgid "Refresh" +msgstr "" + +#: tcl/bin/emccalib.tcl:110 tcl/bin/genedit.tcl:82 tcl/bin/halconfig.tcl:155 +#: tcl/mini.tcl:2535 src/emc/usr_intf/axis/scripts/axis.py:2107 +msgid "Save" +msgstr "" + +#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:623 +#, tcl-format +msgid "Tune %d" +msgstr "" + +#: tcl/bin/emccalib.tcl:162 tcl/bin/halconfig.tcl:628 +#, fuzzy +msgid "INI Name" +msgstr "Naziv:" + +#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:629 +msgid "HAL's Value" +msgstr "" + +#: tcl/bin/emccalib.tcl:165 tcl/bin/halconfig.tcl:631 +msgid "Next Value" +msgstr "" + +#: tcl/bin/emccalib.tcl:230 tcl/bin/halconfig.tcl:680 tcl/bin/halconfig.tcl:731 +msgid "Test" +msgstr "" + +#: tcl/bin/emccalib.tcl:388 tcl/bin/halconfig.tcl:883 +#, tcl-format +msgid "" +"The HAL parameter \n" +" %s \n" +" has changed. \n" +" Really quit?" +msgstr "" + +#: tcl/bin/emccalib.tcl:413 tcl/bin/halconfig.tcl:1170 +msgid "" +"Not permitted to save here.\n" +"\n" +" You need to copy a configuration to your home directory and work there." +msgstr "" + +#: tcl/bin/emccalib.tcl:487 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 +#: tcl/bin/pickconfig.tcl:843 tcl/bin/pickconfig.tcl:854 +#: tcl/scripts/Set_Coordinates.tcl:205 tcl/scripts/Set_Coordinates.tcl:228 +#, tcl-format +msgid "can't save %s" +msgstr "" + +#: tcl/bin/emcdebug.tcl:166 tcl/bin/emcdebug.tcl:177 +msgid "LinuxCNC Debug" +msgstr "" + +#: tcl/bin/emcdebug.tcl:185 +msgid "Invalid INI file entries" +msgstr "" + +#: tcl/bin/emcdebug.tcl:186 +#, fuzzy +msgid "Configuration information" +msgstr "Verzeichnis:" + +#: tcl/bin/emcdebug.tcl:187 +msgid "Use of defaults" +msgstr "" + +#: tcl/bin/emcdebug.tcl:188 +#, fuzzy +msgid "Version information" +msgstr "Osnovne informacije o masini" + +#: tcl/bin/emcdebug.tcl:189 +msgid "Command issuing" +msgstr "" + +#: tcl/bin/emcdebug.tcl:190 +msgid "IO points" +msgstr "" + +#: tcl/bin/emcdebug.tcl:191 +msgid "NML" +msgstr "" + +#: tcl/bin/emcdebug.tcl:192 +#, fuzzy +msgid "Motion time" +msgstr "Vreme:" + +#: tcl/bin/emcdebug.tcl:193 src/emc/usr_intf/axis/scripts/debuglevel.py:42 +msgid "Interpreter" +msgstr "" + +#: tcl/bin/emcdebug.tcl:194 +msgid "RCS" +msgstr "" + +#: tcl/bin/emcdebug.tcl:195 +msgid "Trajectory level" +msgstr "" + +#: tcl/bin/emcdebug.tcl:196 +msgid "Interpreter list" +msgstr "" + +#: tcl/bin/genedit.tcl:78 tcl/mini.tcl:2533 +msgid "New" +msgstr "" + +#: tcl/bin/genedit.tcl:80 tcl/mini.tcl:1667 tcl/mini.tcl:2534 +#: tcl/tklinuxcnc.tcl:720 tcl/tklinuxcnc.tcl:1657 +#, fuzzy +msgid "Open..." +msgstr "_Otvori..." + +#: tcl/bin/genedit.tcl:84 tcl/mini.tcl:2536 +#, fuzzy +msgid "Save As..." +msgstr "_Snimi G-kod kao..." + +#: tcl/bin/genedit.tcl:87 tcl/bin/halconfig.tcl:165 tcl/bin/halshow.tcl:92 +#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1322 +#: tcl/ngcgui.tcl:3832 +msgid "Exit" +msgstr "" + +#: tcl/bin/genedit.tcl:91 tcl/mini.tcl:2517 +#: src/emc/usr_intf/gscreen/gscreen.glade:2685 +#, fuzzy +msgid "Edit" +msgstr "_Uredi..." + +#: tcl/bin/genedit.tcl:92 tcl/mini.tcl:2543 +msgid "Cut" +msgstr "" + +#: tcl/bin/genedit.tcl:94 tcl/mini.tcl:2544 +msgid "Copy" +msgstr "" + +#: tcl/bin/genedit.tcl:96 tcl/mini.tcl:2545 +#, fuzzy +msgid "Paste" +msgstr "_Pauza" + +#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:73 +msgid "Select All" +msgstr "" + +#: tcl/bin/genedit.tcl:104 tcl/bin/halconfig.tcl:192 tcl/mini.tcl:919 +#: tcl/mini.tcl:2519 tcl/tklinuxcnc.tcl:790 +#: src/emc/usr_intf/stepconf/main_page.glade:445 #, fuzzy msgid "Help" msgstr "_Pomoc" @@ -1090,7 +2727,7 @@ msgid "Renumber File..." msgstr "" #: tcl/bin/genedit.tcl:140 tcl/mini.tcl:917 tcl/mini.tcl:2518 -#: tcl/tklinuxcnc.tcl:746 +#: tcl/tklinuxcnc.tcl:746 src/emc/usr_intf/gmoccapy/gmoccapy.glade:5135 msgid "Settings" msgstr "" @@ -1120,12 +2757,6 @@ msgid "" "GPL Version 2" msgstr "" -#: tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 tcl/mini.tcl:1775 -#: tcl/tklinuxcnc.tcl:451 src/emc/task/emctaskmain.cc:2072 -#, c-format, tcl-format -msgid "can't open %s" -msgstr "" - #: tcl/bin/genedit.tcl:267 tcl/mini.tcl:3090 #, fuzzy msgid "Find" @@ -1297,11 +2928,12 @@ msgid "Erase Watch" msgstr "" #: tcl/bin/halconfig.tcl:194 tcl/mini.tcl:840 tcl/mini.tcl:2785 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "About" msgstr "O programu AXIS" -#: tcl/bin/halconfig.tcl:196 +#: tcl/bin/halconfig.tcl:196 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2579 #, fuzzy msgid "Main" msgstr "apsolutna" @@ -1382,25 +3014,25 @@ msgstr "" msgid "Commands may be tested here but they will NOT be saved" msgstr "" -#: tcl/bin/pickconfig.tcl:50 +#: tcl/bin/pickconfig.tcl:96 msgid "" "Can't find the bwidget 1.7 package. There is a debian bwidget package; " "install \n" "it with sudo apt-get install bwidget." msgstr "" -#: tcl/bin/pickconfig.tcl:178 -msgid "No details available." -msgstr "" - -#: tcl/bin/pickconfig.tcl:194 +#: tcl/bin/pickconfig.tcl:154 #, fuzzy -msgid "LinuxCNC Configuration Selector" +msgid "Machinekit Configuration Selector" msgstr "Verzeichnis:" -#: tcl/bin/pickconfig.tcl:215 +#: tcl/bin/pickconfig.tcl:296 +msgid "No details available." +msgstr "" + +#: tcl/bin/pickconfig.tcl:343 msgid "" -"Welcome to LinuxCNC.\n" +"Welcome to MachineKit.\n" "\n" "Select a machine configuration from the list on the left.\n" "Details about the selected configuration will appear in the display on the " @@ -1408,61 +3040,61 @@ msgid "" "Click 'OK' to run the selected configuration" msgstr "" -#: tcl/bin/pickconfig.tcl:271 +#: tcl/bin/pickconfig.tcl:401 #, fuzzy msgid "My Configurations" msgstr "Konfiguracija X ose" -#: tcl/bin/pickconfig.tcl:274 +#: tcl/bin/pickconfig.tcl:405 #, fuzzy msgid "Sample Configurations" msgstr "Konfiguration der Spindel" -#: tcl/bin/pickconfig.tcl:332 +#: tcl/bin/pickconfig.tcl:530 #, tcl-format msgid "ERROR: no configurations found in path '%s'" msgstr "" -#: tcl/bin/pickconfig.tcl:369 +#: tcl/bin/pickconfig.tcl:567 #, fuzzy msgid "Copy Configuration?" msgstr "Konfiguration der Spindel" -#: tcl/bin/pickconfig.tcl:369 +#: tcl/bin/pickconfig.tcl:567 #, tcl-format msgid "" "Would you like to copy the %s configuration to your home directory so you " "can customize it?" msgstr "" -#: tcl/bin/pickconfig.tcl:369 +#: tcl/bin/pickconfig.tcl:567 #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:563 msgid "Yes" msgstr "Da" -#: tcl/bin/pickconfig.tcl:479 +#: tcl/bin/pickconfig.tcl:749 #, fuzzy msgid "Configuration Copied" msgstr "Verzeichnis:" -#: tcl/bin/pickconfig.tcl:479 +#: tcl/bin/pickconfig.tcl:749 #, tcl-format msgid "" "The configuration file has been copied to %s. Next time, choose this " -"location when starting LinuxCNC." +"location when starting MachineKit." msgstr "" -#: tcl/bin/pickconfig.tcl:506 +#: tcl/bin/pickconfig.tcl:799 msgid "Shortcut Created" msgstr "" -#: tcl/bin/pickconfig.tcl:506 +#: tcl/bin/pickconfig.tcl:799 msgid "" "A shortcut to this configuration file has been created on your desktop. You " "can use it to automatically launch this configuration." msgstr "" -#: tcl/bin/pickconfig.tcl:511 +#: tcl/bin/pickconfig.tcl:805 msgid "Create Desktop Shortcut" msgstr "" @@ -1555,7 +3187,7 @@ msgstr "" msgid "Backplot" msgstr "Crna" -#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:6125 +#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:5915 msgid "Editor" msgstr "" @@ -1737,7 +3369,7 @@ msgstr "" msgid "start override popup here" msgstr "" -#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1669 +#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1739 msgid "Feed Override:" msgstr "Prekoracenje posmaka:" @@ -1805,7 +3437,8 @@ msgid "increment" msgstr "Izaberi JOG inkrement" #: tcl/mini.tcl:1518 tcl/tklinuxcnc.tcl:602 tcl/tklinuxcnc.tcl:1249 -#: tcl/tklinuxcnc.tcl:1253 +#: tcl/tklinuxcnc.tcl:1253 src/emc/usr_intf/gscreen/gscreen.glade:1574 +#: src/emc/usr_intf/gscreen/gscreen.glade:1586 #, fuzzy msgid "continuous" msgstr "Neprekidan" @@ -1852,20 +3485,15 @@ msgid "MDI:" msgstr "" #: tcl/mini.tcl:1669 tcl/tklinuxcnc.tcl:1658 -#: src/emc/usr_intf/stepconf/stepconf.glade:4403 -#: src/emc/usr_intf/pncconf/pncconf.glade:60509 -#: src/emc/usr_intf/pncconf/pncconf.glade:61603 -#: src/emc/usr_intf/pncconf/pncconf.glade:62696 -#: src/emc/usr_intf/pncconf/pncconf.glade:63789 -#: src/emc/usr_intf/pncconf/pncconf.glade:64889 +#: src/emc/usr_intf/stepconf/main_page.glade:298 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2625 msgid "Run" msgstr "Ausführen" #: tcl/mini.tcl:1671 tcl/tklinuxcnc.tcl:1659 -#: src/emc/usr_intf/pncconf/pncconf.glade:60574 -#: src/emc/usr_intf/pncconf/pncconf.glade:61668 -#: src/emc/usr_intf/pncconf/pncconf.glade:62761 -#: src/emc/usr_intf/pncconf/pncconf.glade:63854 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2638 #, fuzzy msgid "Pause" msgstr "_Pauza" @@ -1888,7 +3516,7 @@ msgstr "" msgid "RESTART LINE" msgstr "" -#: tcl/mini.tcl:1699 +#: tcl/mini.tcl:1699 src/emc/usr_intf/stepconf/main_page.glade:531 #, fuzzy msgid "Back" msgstr "Crna" @@ -1897,24 +3525,23 @@ msgstr "Crna" msgid "Ahead" msgstr "" -#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1221 +#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1300 +#: src/emc/usr_intf/gscreen/gscreen.glade:3973 msgid "Restart" msgstr "" -#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 -#: tcl/tklinuxcnc.tcl:465 src/emc/usr_intf/axis/scripts/axis.py:1885 +#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 tcl/tklinuxcnc.tcl:465 +#: src/emc/usr_intf/axis/scripts/axis.py:2023 #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:754 msgid "All files" msgstr "Sve datoteke" -#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 -#: tcl/tklinuxcnc.tcl:466 +#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 tcl/tklinuxcnc.tcl:466 #, fuzzy msgid "Text files" msgstr "Sve datoteke" -#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 -#: tcl/tklinuxcnc.tcl:467 +#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 tcl/tklinuxcnc.tcl:467 #, fuzzy msgid "NC files" msgstr "Sve datoteke" @@ -2081,7 +3708,7 @@ msgstr "" msgid "Subtract" msgstr "" -#: tcl/mini.tcl:2344 +#: tcl/mini.tcl:2344 src/emc/usr_intf/gmoccapy/gmoccapy.glade:6712 msgid "Add" msgstr "" @@ -2133,16 +3760,19 @@ msgstr "" msgid "Save and Load" msgstr "" -#: tcl/mini.tcl:2540 +#: tcl/mini.tcl:2540 src/emc/usr_intf/gscreen/gscreen.glade:3515 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2363 #, fuzzy msgid "Undo" msgstr "Neupotrebljen" -#: tcl/mini.tcl:2541 +#: tcl/mini.tcl:2541 src/emc/usr_intf/gscreen/gscreen.glade:3526 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2411 msgid "Redo" msgstr "" -#: tcl/mini.tcl:2546 +#: tcl/mini.tcl:2546 tcl/tooledit.tcl:488 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6695 msgid "Delete" msgstr "" @@ -2216,16 +3846,18 @@ msgstr "_korak navojnog vretena:" msgid "Find Next" msgstr "" -#: tcl/mini.tcl:3112 +#: tcl/mini.tcl:3112 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2494 #, fuzzy msgid "Replace" msgstr "relativna" -#: tcl/mini.tcl:3120 +#: tcl/mini.tcl:3120 src/emc/usr_intf/gscreen/gscreen.py:2750 +#: src/emc/usr_intf/gmoccapy/dialogs.py:171 msgid "Up" msgstr "" -#: tcl/mini.tcl:3121 +#: tcl/mini.tcl:3121 src/emc/usr_intf/gscreen/gscreen.py:2754 +#: src/emc/usr_intf/gmoccapy/dialogs.py:175 #, fuzzy msgid "Down" msgstr "Gore, Dole" @@ -2274,7 +3906,7 @@ msgid "" "all the information below in your message." msgstr "" -#: tcl/show_errors.tcl:69 tcl/scripts/Set_Coordinates.tcl:103 +#: tcl/show_errors.tcl:74 tcl/scripts/Set_Coordinates.tcl:103 msgid "Close" msgstr "" @@ -2400,26 +4032,23 @@ msgstr "Jedinice" msgid "auto" msgstr "" -#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8512 +#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8873 msgid "inches" msgstr "" -#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1556 -#: src/emc/usr_intf/axis/scripts/axis.py:1726 +#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1609 +#: src/emc/usr_intf/axis/scripts/axis.py:1855 +#: src/emc/usr_intf/axis/scripts/axis.py:2386 #: src/emc/usr_intf/touchy/touchy.glade:3301 -#: src/emc/usr_intf/stepconf/stepconf.py:1685 -#: src/emc/usr_intf/stepconf/stepconf.py:2221 -#: src/emc/usr_intf/stepconf/stepconf.glade:4357 -#: src/emc/usr_intf/pncconf/pncconf.py:8508 -#: src/emc/usr_intf/pncconf/pncconf.glade:2229 -#: src/emc/usr_intf/pncconf/pncconf.glade:2394 -#: src/emc/usr_intf/pncconf/pncconf.glade:57616 -#: src/emc/usr_intf/pncconf/pncconf.glade:57688 -#: src/emc/usr_intf/pncconf/pncconf.glade:60646 -#: src/emc/usr_intf/pncconf/pncconf.glade:61739 -#: src/emc/usr_intf/pncconf/pncconf.glade:62832 -#: src/emc/usr_intf/pncconf/pncconf.glade:63925 -#: src/emc/usr_intf/pncconf/pncconf.glade:65091 +#: src/emc/usr_intf/stepconf/stepconf.py:1314 +#: src/emc/usr_intf/stepconf/pages.py:625 +#: src/emc/usr_intf/stepconf/main_page.glade:251 +#: src/emc/usr_intf/pncconf/pncconf.py:8869 +#: src/emc/usr_intf/pncconf/pncconf.glade:2195 +#: src/emc/usr_intf/pncconf/pncconf.glade:2362 +#: src/emc/usr_intf/pncconf/pncconf.glade:64552 +#: src/emc/usr_intf/pncconf/pncconf.glade:64621 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "mm" msgstr "mm" @@ -2461,7 +4090,7 @@ msgstr "" msgid "Machine on" msgstr "apsolutna" -#: tcl/tklinuxcnc.tcl:819 +#: tcl/tklinuxcnc.tcl:819 src/emc/usr_intf/gscreen/gscreen.glade:2452 #, fuzzy msgid "Machine off" msgstr "apsolutna" @@ -2620,10 +4249,11 @@ msgid "Set Font" msgstr "" #: tcl/tklinuxcnc.tcl:2079 tcl/ngcgui_ttt.tcl:283 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4827 msgid "Font" msgstr "" -#: tcl/tklinuxcnc.tcl:2086 +#: tcl/tklinuxcnc.tcl:2086 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3257 #, fuzzy msgid "Size" msgstr "Velicina:" @@ -2633,11 +4263,11 @@ msgstr "Velicina:" msgid "Style" msgstr "_Korak po korak" -#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:1916 +#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:2031 msgid "ESTOP" msgstr "E-STOP" -#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2840 share/axis/tcl/axis.tcl:1918 +#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2979 share/axis/tcl/axis.tcl:2033 msgid "ON" msgstr "UKLJUCEN" @@ -2687,1095 +4317,1430 @@ msgstr "" msgid "Write" msgstr "Bela" -#: tcl/ngcgui.tcl:467 +#: tcl/ngcgui.tcl:439 tcl/ngcgui.tcl:846 msgid "Need non-null file name" msgstr "" -#: tcl/ngcgui.tcl:543 +#: tcl/ngcgui.tcl:483 msgid "Disallowed use of ngcgui generated file as Subfile" msgstr "" -#: tcl/ngcgui.tcl:549 +#: tcl/ngcgui.tcl:489 msgid "" "marked (not_a_subfile)\n" "Not intended for use as a subfile" msgstr "" -#: tcl/ngcgui.tcl:564 -msgid "Multiple subroutines in file not allowed" +#: tcl/ngcgui.tcl:503 tcl/ngcgui.tcl:522 tcl/ngcgui.tcl:544 tcl/ngcgui.tcl:557 +#: tcl/ngcgui.tcl:577 tcl/ngcgui.tcl:682 +msgid "bogus" msgstr "" -#: tcl/ngcgui.tcl:573 tcl/ngcgui.tcl:595 tcl/ngcgui.tcl:608 tcl/ngcgui.tcl:650 -#: tcl/ngcgui.tcl:755 -msgid "bogus" +#: tcl/ngcgui.tcl:505 +msgid "can not include subroutines within ngcgui subfile" msgstr "" -#: tcl/ngcgui.tcl:575 +#: tcl/ngcgui.tcl:513 +msgid "Multiple subroutines in file not allowed" +msgstr "" + +#: tcl/ngcgui.tcl:524 msgid "sub label" msgstr "" -#: tcl/ngcgui.tcl:575 tcl/ngcgui.tcl:652 +#: tcl/ngcgui.tcl:524 tcl/ngcgui.tcl:579 msgid "does not match subroutine file name" msgstr "" -#: tcl/ngcgui.tcl:590 tcl/ngcgui.tcl:591 +#: tcl/ngcgui.tcl:539 tcl/ngcgui.tcl:540 msgid "ignoring M2 after endsub" msgstr "" -#: tcl/ngcgui.tcl:596 +#: tcl/ngcgui.tcl:545 msgid "file contains lines after subend" msgstr "" -#: tcl/ngcgui.tcl:609 +#: tcl/ngcgui.tcl:558 msgid "file contains lines before sub" msgstr "" -#: tcl/ngcgui.tcl:652 +#: tcl/ngcgui.tcl:579 msgid "endsub label" msgstr "" -#: tcl/ngcgui.tcl:757 +#: tcl/ngcgui.tcl:684 msgid "out of sequence positional parameter" msgstr "" -#: tcl/ngcgui.tcl:757 +#: tcl/ngcgui.tcl:684 msgid "expected" msgstr "" -#: tcl/ngcgui.tcl:817 -msgid "toomany" -msgstr "" - -#: tcl/ngcgui.tcl:868 +#: tcl/ngcgui.tcl:735 msgid "no sub found in file" msgstr "" -#: tcl/ngcgui.tcl:871 +#: tcl/ngcgui.tcl:738 msgid "no endsub found in file" msgstr "" -#: tcl/ngcgui.tcl:961 +#: tcl/ngcgui.tcl:801 +msgid "Cannot find gcmc executable" +msgstr "" + +#: tcl/ngcgui.tcl:802 +msgid "Please Install in path" +msgstr "" + +#: tcl/ngcgui.tcl:810 +msgid "not embedded, deriving outdir from:" +msgstr "" + +#: tcl/ngcgui.tcl:1038 #, fuzzy msgid "Choose Files" msgstr "Tip alata" -#: tcl/ngcgui.tcl:1100 +#: tcl/ngcgui.tcl:1178 #, fuzzy msgid "Controls" msgstr "Ctrl-M" -#: tcl/ngcgui.tcl:1109 +#: tcl/ngcgui.tcl:1187 msgid "Preamble" msgstr "" -#: tcl/ngcgui.tcl:1122 +#: tcl/ngcgui.tcl:1200 msgid "Subfile" msgstr "" -#: tcl/ngcgui.tcl:1134 +#: tcl/ngcgui.tcl:1212 msgid "Postamble" msgstr "" -#: tcl/ngcgui.tcl:1151 +#: tcl/ngcgui.tcl:1229 msgid "Retain values on Subfile read" msgstr "" -#: tcl/ngcgui.tcl:1159 +#: tcl/ngcgui.tcl:1237 msgid "Expand subroutine" msgstr "" -#: tcl/ngcgui.tcl:1168 tcl/ngcgui.tcl:2414 +#: tcl/ngcgui.tcl:1247 tcl/ngcgui.tcl:2571 msgid "Autosend" msgstr "" -#: tcl/ngcgui.tcl:1178 +#: tcl/ngcgui.tcl:1257 #, fuzzy msgid "Verbose ngcfile" msgstr "NC datoteke" -#: tcl/ngcgui.tcl:1188 tcl/ngcgui.tcl:2235 tcl/ngcgui.tcl:2259 -#: tcl/ngcgui.tcl:2289 +#: tcl/ngcgui.tcl:1267 tcl/ngcgui.tcl:2393 tcl/ngcgui.tcl:2416 +#: tcl/ngcgui.tcl:2446 msgid "Create Feature" msgstr "" -#: tcl/ngcgui.tcl:1194 tcl/ngcgui.tcl:2919 +#: tcl/ngcgui.tcl:1273 tcl/ngcgui.tcl:3058 #, fuzzy msgid "MakeFile" msgstr "_Datoteka" -#: tcl/ngcgui.tcl:1195 tcl/ngcgui.tcl:2916 +#: tcl/ngcgui.tcl:1274 tcl/ngcgui.tcl:3055 msgid "Finalize" msgstr "" -#: tcl/ngcgui.tcl:1212 +#: tcl/ngcgui.tcl:1291 msgid "Reread" msgstr "" -#: tcl/ngcgui.tcl:1231 +#: tcl/ngcgui.tcl:1310 msgid "SendFileToAxis" msgstr "" -#: tcl/ngcgui.tcl:1274 +#: tcl/ngcgui.tcl:1353 msgid "Unrecoverable problem" msgstr "" -#: tcl/ngcgui.tcl:1374 +#: tcl/ngcgui.tcl:1431 msgid "Postamble file" msgstr "" -#: tcl/ngcgui.tcl:1424 +#: tcl/ngcgui.tcl:1481 msgid "Subroutine file" msgstr "" -#: tcl/ngcgui.tcl:1482 +#: tcl/ngcgui.tcl:1545 msgid "Positional Parameters" msgstr "" -#: tcl/ngcgui.tcl:1587 -msgid "_Globals" -msgstr "" - -#: tcl/ngcgui.tcl:1690 +#: tcl/ngcgui.tcl:1694 msgid "No Subfile specified" msgstr "" -#: tcl/ngcgui.tcl:1692 +#: tcl/ngcgui.tcl:1696 msgid "No parameters yet" msgstr "" -#: tcl/ngcgui.tcl:1701 +#: tcl/ngcgui.tcl:1705 msgid "Missing value for parm" msgstr "" -#: tcl/ngcgui.tcl:1735 +#: tcl/ngcgui.tcl:1726 msgid "Output file" msgstr "" -#: tcl/ngcgui.tcl:1827 -msgid "Positional parameters for" -msgstr "" - -#: tcl/ngcgui.tcl:1835 -#, fuzzy -msgid "expanded file" -msgstr "Sve datoteke" - -#: tcl/ngcgui.tcl:1849 -msgid "call subroutine file" -msgstr "" - -#: tcl/ngcgui.tcl:1919 +#: tcl/ngcgui.tcl:1841 msgid "Multiple Tabs with Features" msgstr "" -#: tcl/ngcgui.tcl:1920 +#: tcl/ngcgui.tcl:1842 msgid "Finalize all Tabs?" msgstr "" -#: tcl/ngcgui.tcl:1920 +#: tcl/ngcgui.tcl:1842 msgid "Order" msgstr "" -#: tcl/ngcgui.tcl:1922 +#: tcl/ngcgui.tcl:1844 msgid "No, just this page" msgstr "" -#: tcl/ngcgui.tcl:1936 +#: tcl/ngcgui.tcl:1858 msgid "Axis is not responding" msgstr "" -#: tcl/ngcgui.tcl:1937 +#: tcl/ngcgui.tcl:1859 msgid "Error: " msgstr "" -#: tcl/ngcgui.tcl:1939 +#: tcl/ngcgui.tcl:1861 msgid "Autosend disabled, Ctrl-A toggles autosend" msgstr "" -#: tcl/ngcgui.tcl:1941 +#: tcl/ngcgui.tcl:1863 msgid "File saving enabled -- Finalize to save" msgstr "" -#: tcl/ngcgui.tcl:1957 +#: tcl/ngcgui.tcl:1879 msgid "Require .ngc suffix for filename" msgstr "" -#: tcl/ngcgui.tcl:1967 +#: tcl/ngcgui.tcl:1889 msgid "Disallowed overwrite of" msgstr "" -#: tcl/ngcgui.tcl:1986 +#: tcl/ngcgui.tcl:1913 msgid "FEATURE" msgstr "" -#: tcl/ngcgui.tcl:1993 +#: tcl/ngcgui.tcl:1920 msgid "feature line added" msgstr "" -#: tcl/ngcgui.tcl:2002 +#: tcl/ngcgui.tcl:1932 msgid "line added" msgstr "" -#: tcl/ngcgui.tcl:2002 +#: tcl/ngcgui.tcl:1932 msgid "activated" msgstr "" -#: tcl/ngcgui.tcl:2004 +#: tcl/ngcgui.tcl:1934 #, fuzzy msgid "restores" msgstr "_Zaustavi" -#: tcl/ngcgui.tcl:2041 +#: tcl/ngcgui.tcl:1973 msgid "NOTREACHED mode" msgstr "" -#: tcl/ngcgui.tcl:2236 +#: tcl/ngcgui.tcl:1989 +msgid "Positional parameters for" +msgstr "" + +#: tcl/ngcgui.tcl:1997 +#, fuzzy +msgid "expanded file" +msgstr "Sve datoteke" + +#: tcl/ngcgui.tcl:2011 +msgid "call subroutine file" +msgstr "" + +#: tcl/ngcgui.tcl:2394 msgid "Enter parms for 1st feature" msgstr "" -#: tcl/ngcgui.tcl:2243 +#: tcl/ngcgui.tcl:2401 #, fuzzy msgid "New Outfile" msgstr "Sve datoteke" -#: tcl/ngcgui.tcl:2245 +#: tcl/ngcgui.tcl:2403 msgid "Ready to make New Outfile" msgstr "" -#: tcl/ngcgui.tcl:2262 tcl/ngcgui.tcl:2295 +#: tcl/ngcgui.tcl:2419 tcl/ngcgui.tcl:2452 msgid "Enter parms for feature " msgstr "" -#: tcl/ngcgui.tcl:2282 +#: tcl/ngcgui.tcl:2439 msgid "feature" msgstr "" -#: tcl/ngcgui.tcl:2287 +#: tcl/ngcgui.tcl:2444 msgid "Create Next" msgstr "" -#: tcl/ngcgui.tcl:2292 +#: tcl/ngcgui.tcl:2449 msgid "Created feature " msgstr "" -#: tcl/ngcgui.tcl:2316 +#: tcl/ngcgui.tcl:2473 #, fuzzy msgid "option" msgstr "Pozicija:" -#: tcl/ngcgui.tcl:2327 +#: tcl/ngcgui.tcl:2484 msgid "Missing parameters" msgstr "" -#: tcl/ngcgui.tcl:2331 +#: tcl/ngcgui.tcl:2488 msgid "Parse Error" msgstr "" -#: tcl/ngcgui.tcl:2338 +#: tcl/ngcgui.tcl:2495 msgid "Null Preamble" msgstr "" -#: tcl/ngcgui.tcl:2343 +#: tcl/ngcgui.tcl:2500 msgid "Read Preamble" msgstr "" -#: tcl/ngcgui.tcl:2347 +#: tcl/ngcgui.tcl:2504 msgid "Preamble Error" msgstr "" -#: tcl/ngcgui.tcl:2352 +#: tcl/ngcgui.tcl:2509 msgid "Null Postamble" msgstr "" -#: tcl/ngcgui.tcl:2357 +#: tcl/ngcgui.tcl:2514 msgid "Read Postamble" msgstr "" -#: tcl/ngcgui.tcl:2361 +#: tcl/ngcgui.tcl:2518 msgid "Postamble Error" msgstr "" -#: tcl/ngcgui.tcl:2366 +#: tcl/ngcgui.tcl:2523 msgid "Read Subfile" msgstr "" -#: tcl/ngcgui.tcl:2371 +#: tcl/ngcgui.tcl:2528 #, fuzzy msgid "Write Error" msgstr "Bela" -#: tcl/ngcgui.tcl:2375 +#: tcl/ngcgui.tcl:2532 msgid "Outfile set" msgstr "" -#: tcl/ngcgui.tcl:2380 +#: tcl/ngcgui.tcl:2537 msgid "Finished" msgstr "" -#: tcl/ngcgui.tcl:2385 +#: tcl/ngcgui.tcl:2542 #, fuzzy msgid "Canceled" msgstr "Odustani" -#: tcl/ngcgui.tcl:2391 +#: tcl/ngcgui.tcl:2548 msgid "Sent" msgstr "" -#: tcl/ngcgui.tcl:2395 +#: tcl/ngcgui.tcl:2552 #, fuzzy msgid "SendFileToAxis failed" msgstr "Filtriranje neuspesno" -#: tcl/ngcgui.tcl:2399 +#: tcl/ngcgui.tcl:2556 msgid "Ctrl-k for Key bindings" msgstr "" -#: tcl/ngcgui.tcl:2403 +#: tcl/ngcgui.tcl:2560 msgid "Expand sub" msgstr "" -#: tcl/ngcgui.tcl:2407 +#: tcl/ngcgui.tcl:2564 msgid "Retain values" msgstr "" -#: tcl/ngcgui.tcl:2411 +#: tcl/ngcgui.tcl:2568 msgid "Verbose" msgstr "" -#: tcl/ngcgui.tcl:2417 +#: tcl/ngcgui.tcl:2574 msgid "Finalize Canceled" msgstr "" -#: tcl/ngcgui.tcl:2572 tcl/ngcgui.tcl:2728 +#: tcl/ngcgui.tcl:2711 tcl/ngcgui.tcl:2867 msgid "Dismiss" msgstr "" -#: tcl/ngcgui.tcl:2577 +#: tcl/ngcgui.tcl:2716 msgid "ngcgui Error" msgstr "" -#: tcl/ngcgui.tcl:2600 +#: tcl/ngcgui.tcl:2739 msgid "Declining support for tk send bug in ngcgui" msgstr "" -#: tcl/ngcgui.tcl:2601 +#: tcl/ngcgui.tcl:2740 msgid "You should upgrade linuxcnc to >= linuxcnc2.5" msgstr "" -#: tcl/ngcgui.tcl:2645 +#: tcl/ngcgui.tcl:2784 msgid "pre2.4_send_file_to_axis:error" msgstr "" -#: tcl/ngcgui.tcl:2839 share/axis/tcl/axis.tcl:1917 +#: tcl/ngcgui.tcl:2978 share/axis/tcl/axis.tcl:2032 #, fuzzy msgid "OFF" msgstr "ISKLJUCEN" -#: tcl/ngcgui.tcl:2842 +#: tcl/ngcgui.tcl:2981 #, fuzzy msgid "Toggle autosend" msgstr "Uklj. Isklj. Emulzija" -#: tcl/ngcgui.tcl:2843 tcl/ngcgui.tcl:3057 +#: tcl/ngcgui.tcl:2982 tcl/ngcgui.tcl:3189 msgid "Clear entries" msgstr "" -#: tcl/ngcgui.tcl:2844 +#: tcl/ngcgui.tcl:2983 msgid "Set entries to default values" msgstr "" -#: tcl/ngcgui.tcl:2845 tcl/ngcgui.tcl:2859 tcl/ngcgui.tcl:2861 +#: tcl/ngcgui.tcl:2984 tcl/ngcgui.tcl:2998 tcl/ngcgui.tcl:3000 msgid "Open editor specified by" msgstr "" -#: tcl/ngcgui.tcl:2846 +#: tcl/ngcgui.tcl:2985 msgid "on last outfile" msgstr "" -#: tcl/ngcgui.tcl:2847 +#: tcl/ngcgui.tcl:2986 msgid "toggle expand subroutines" msgstr "" -#: tcl/ngcgui.tcl:2848 +#: tcl/ngcgui.tcl:2987 msgid "Create feature" msgstr "" -#: tcl/ngcgui.tcl:2849 +#: tcl/ngcgui.tcl:2988 msgid "Finalize (AUTO send is" msgstr "" -#: tcl/ngcgui.tcl:2850 +#: tcl/ngcgui.tcl:2989 msgid "Show key bindings" msgstr "" -#: tcl/ngcgui.tcl:2851 +#: tcl/ngcgui.tcl:2990 msgid "Restart (cancel pending)" msgstr "" -#: tcl/ngcgui.tcl:2852 +#: tcl/ngcgui.tcl:2991 msgid "(re)Read Preamble" msgstr "" -#: tcl/ngcgui.tcl:2853 +#: tcl/ngcgui.tcl:2992 msgid "(re)Read Postamble" msgstr "" -#: tcl/ngcgui.tcl:2854 +#: tcl/ngcgui.tcl:2993 msgid "(re)Read Subfile" msgstr "" -#: tcl/ngcgui.tcl:2855 +#: tcl/ngcgui.tcl:2994 msgid "toggle retain values" msgstr "" -#: tcl/ngcgui.tcl:2856 +#: tcl/ngcgui.tcl:2995 msgid "toggle output file verbosity" msgstr "" -#: tcl/ngcgui.tcl:2857 +#: tcl/ngcgui.tcl:2996 #, fuzzy msgid "Show status" msgstr "_Prikazi rastojanja" -#: tcl/ngcgui.tcl:2858 +#: tcl/ngcgui.tcl:2997 msgid "Show full status (debug info)" msgstr "" -#: tcl/ngcgui.tcl:2860 +#: tcl/ngcgui.tcl:2999 #, fuzzy msgid "on current subfile" msgstr "Ponovo otvori tekucu datoteku [Ctrl-R]" -#: tcl/ngcgui.tcl:2862 +#: tcl/ngcgui.tcl:3001 msgid "on current preamble" msgstr "" -#: tcl/ngcgui.tcl:2865 +#: tcl/ngcgui.tcl:3004 msgid " Escape Return to Preview page" msgstr "" -#: tcl/ngcgui.tcl:2942 +#: tcl/ngcgui.tcl:3081 msgid "Editing requires setting for environmental variable VISUAL" msgstr "" -#: tcl/ngcgui.tcl:2943 +#: tcl/ngcgui.tcl:3082 msgid "Trying gedit" msgstr "" -#: tcl/ngcgui.tcl:2955 +#: tcl/ngcgui.tcl:3095 msgid "No file available for editing yet" msgstr "" -#: tcl/ngcgui.tcl:2964 tcl/ngcgui.tcl:2973 +#: tcl/ngcgui.tcl:3104 tcl/ngcgui.tcl:3113 msgid "No file available for editing" msgstr "" -#: tcl/ngcgui.tcl:2990 +#: tcl/ngcgui.tcl:3130 msgid "Status items" msgstr "" -#: tcl/ngcgui.tcl:3003 +#: tcl/ngcgui.tcl:3143 msgid "All-page opt items" msgstr "" -#: tcl/ngcgui.tcl:3009 +#: tcl/ngcgui.tcl:3149 msgid "any-items" msgstr "" -#: tcl/ngcgui.tcl:3046 +#: tcl/ngcgui.tcl:3182 msgid "Set defaults" msgstr "" -#: tcl/ngcgui.tcl:3125 +#: tcl/ngcgui.tcl:3257 msgid "not writable" msgstr "" -#: tcl/ngcgui.tcl:3263 tcl/ngcgui.tcl:3443 +#: tcl/ngcgui.tcl:3396 tcl/ngcgui.tcl:3577 msgid "new" msgstr "" -#: tcl/ngcgui.tcl:3288 +#: tcl/ngcgui.tcl:3422 msgid "Open a new Subfile" msgstr "" -#: tcl/ngcgui.tcl:3434 +#: tcl/ngcgui.tcl:3568 msgid "remove" msgstr "" -#: tcl/ngcgui.tcl:3456 tcl/ngcgui.tcl:3462 +#: tcl/ngcgui.tcl:3590 tcl/ngcgui.tcl:3596 msgid "move" msgstr "" -#: tcl/ngcgui.tcl:3561 src/emc/usr_intf/pncconf/pncconf.py:7022 -#: src/emc/usr_intf/pncconf/pncconf.py:7139 -#: src/emc/usr_intf/pncconf/pncconf.py:7306 +#: tcl/ngcgui.tcl:3704 src/emc/usr_intf/pncconf/pncconf.py:7374 +#: src/emc/usr_intf/pncconf/pncconf.py:7485 +#: src/emc/usr_intf/pncconf/pncconf.py:7650 msgid "Custom" msgstr "" -#: tcl/ngcgui.tcl:3587 +#: tcl/ngcgui.tcl:3730 msgid "Problem creating page" msgstr "" -#: tcl/ngcgui.tcl:3594 +#: tcl/ngcgui.tcl:3737 msgid "entrykeybindings not available" msgstr "" -#: tcl/ngcgui.tcl:3633 +#: tcl/ngcgui.tcl:3781 msgid "Found multiple matches for" msgstr "" -#: tcl/ngcgui.tcl:3634 +#: tcl/ngcgui.tcl:3782 msgid "using path" msgstr "" -#: tcl/ngcgui.tcl:3642 src/emc/usr_intf/axis/scripts/axis.py:2255 -#: src/emc/usr_intf/axis/scripts/axis.py:2268 +#: tcl/ngcgui.tcl:3790 src/emc/usr_intf/axis/scripts/axis.py:2440 +#: src/emc/usr_intf/axis/scripts/axis.py:2453 msgid "Warning" msgstr "" -#: tcl/ngcgui.tcl:3643 -msgid "File absolute path specifier conflicts with searchpath result" -msgstr "" +#: tcl/ngcgui.tcl:3791 +msgid "File absolute path specifier conflicts with searchpath result" +msgstr "" + +#: tcl/ngcgui.tcl:3792 +msgid "Absolute Specifier" +msgstr "" + +#: tcl/ngcgui.tcl:3793 +msgid "Using Search Result" +msgstr "" + +#: tcl/ngcgui.tcl:3798 +msgid "File not in Search Path" +msgstr "" + +#: tcl/ngcgui.tcl:3800 +msgid "Must be in search path" +msgstr "" + +#: tcl/ngcgui.tcl:3802 +msgid "(File found -- not in search path)" +msgstr "" + +#: tcl/ngcgui.tcl:3804 +#, fuzzy +msgid "Current directory" +msgstr "Verzeichnis:" + +#: tcl/ngcgui.tcl:3805 +msgid "Search path" +msgstr "" + +#: tcl/ngcgui.tcl:3815 +msgid "Check setting for" +msgstr "" + +#: tcl/ngcgui.tcl:3816 +#, fuzzy +msgid "in ini file" +msgstr "AXIS (nema datoteke)" + +#: tcl/ngcgui.tcl:3817 +msgid "(Restart required after fixing ini file)" +msgstr "" + +#: tcl/ngcgui.tcl:3832 +#, fuzzy +msgid "Try to Continue" +msgstr "Nastavi" + +#: tcl/ngcgui.tcl:3837 +#, fuzzy +msgid "Ngcgui Configuration File Not Found" +msgstr "Verzeichnis:" + +#: tcl/ngcgui.tcl:3917 +msgid "Missing Tcl Package Img" +msgstr "" + +#: tcl/ngcgui.tcl:3918 +msgid "Please install Img" +msgstr "" + +#: tcl/ngcgui.tcl:4122 +#, fuzzy +msgid "ini file" +msgstr "AXIS (nema datoteke)" + +#: tcl/ngcgui.tcl:4131 +msgid "not found" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:67 +msgid "found truetype-tracer v4 -OK" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:70 +msgid "Note truetype-tracer v4 is required" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:71 +msgid "Note: truetype-tracer v4 is required" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:81 +msgid "ngcgui_app.tcl must be loaded before" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:89 +msgid "Create a subroutine file from truetype-tracer (V4 reqd)" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:102 tcl/ngcgui_ttt.tcl:115 +#, fuzzy +msgid "problem with" +msgstr "_korak navojnog vretena:" + +#: tcl/ngcgui_ttt.tcl:106 +msgid "No entry for" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:109 +msgid "wrong version of truetype-tracer" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:125 +msgid "not writable, using" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:125 +msgid "and setting expandsub" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:161 +msgid "Text" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:171 +msgid "Linescale" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:177 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3583 +msgid "none" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:192 +msgid "Subdiv" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:199 +msgid "default" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:239 +msgid "Mode" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:247 +msgid "normal" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:248 +msgid "date" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:249 +#, fuzzy +msgid "fontname" +msgstr "Naziv:" + +#: tcl/ngcgui_ttt.tcl:262 +msgid "Switches" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:270 +#, fuzzy +msgid "Unicode" +msgstr "END" + +#: tcl/ngcgui_ttt.tcl:275 +msgid "Allow Rotation" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:295 +msgid "Make ngcgui-compatible subfile and new tab page" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:353 +msgid "Null text" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:384 +msgid "Using truetype-tracer default font" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:388 +#, fuzzy +msgid "no such file" +msgstr "AXIS (nema datoteke)" + +#: tcl/ngcgui_ttt.tcl:393 +msgid "file not readable" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:507 +msgid "Creating new tab page" +msgstr "" + +#: tcl/ngcgui_app.tcl:25 +msgid "" +"requires command inifindall\n" +"from axis.py (LinuxCNC 2.5) or" +msgstr "" + +#: tcl/ngcgui_app.tcl:55 +msgid "Substituting" +msgstr "" + +#: tcl/ngcgui_app.tcl:55 +msgid "for" +msgstr "" + +#: tcl/ngcgui_app.tcl:59 +msgid "not readable" +msgstr "" + +#: tcl/ngcgui_app.tcl:65 tcl/ngcgui_app.tcl:68 +msgid "Unexpected: multiple startups for ngcgui" +msgstr "" + +#: tcl/ngcgui_app.tcl:66 +msgid "LinuxCNC" +msgstr "" + +#: tcl/ngcgui_app.tcl:67 +msgid "for linuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" +msgstr "" + +#: tcl/ngcgui_app.tcl:86 +#, fuzzy +msgid "LinuxCNC version" +msgstr "EMC2 konfiguracija masine" + +#: tcl/ngcgui_app.tcl:87 +msgid "for LinuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" +msgstr "" + +#: tcl/tooledit.tcl:65 +msgid "Problem reading ~/.tooleditrc" +msgstr "" + +#: tcl/tooledit.tcl:82 +#, tcl-format +msgid "Note: Ignoring duplicate column name: %s" +msgstr "" + +#: tcl/tooledit.tcl:93 +#, fuzzy, tcl-format +msgid "Unknown column: %s" +msgstr "Nepoznat alat%d" + +#: tcl/tooledit.tcl:210 tcl/tooledit.tcl:213 tcl/tooledit.tcl:598 +#: tcl/tooledit.tcl:599 tcl/tooledit.tcl:1032 +msgid "NEW" +msgstr "" + +#: tcl/tooledit.tcl:232 +#, tcl-format +msgid "%s must be a number" +msgstr "" + +#: tcl/tooledit.tcl:241 +#, tcl-format +msgid "filename: <%s> not readable" +msgstr "" + +#: tcl/tooledit.tcl:245 +#, tcl-format +msgid "filename: <%s> not writable" +msgstr "" + +#: tcl/tooledit.tcl:250 +#, tcl-format +msgid "directory: <%s> not writable" +msgstr "" + +#: tcl/tooledit.tcl:294 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, value <%s> is not a number" +msgstr "" + +#: tcl/tooledit.tcl:300 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, expected integer not <%s>" +msgstr "" + +#: tcl/tooledit.tcl:316 +#, tcl-format +msgid "At linenumber %d, Unknown tag <%s>" +msgstr "" + +#: tcl/tooledit.tcl:399 +#, tcl-format +msgid "%s: Column sorting not available with tcl_version==%s" +msgstr "" + +#: tcl/tooledit.tcl:408 +#, fuzzy +msgid "tool" +msgstr "Nema alata" -#: tcl/ngcgui.tcl:3644 -msgid "Absolute Specifier" +#: tcl/tooledit.tcl:409 +msgid "poc" msgstr "" -#: tcl/ngcgui.tcl:3645 -msgid "Using Search Result" +#: tcl/tooledit.tcl:410 +msgid "diam" msgstr "" -#: tcl/ngcgui.tcl:3650 -msgid "File not in Search Path" +#: tcl/tooledit.tcl:411 +msgid "front" msgstr "" -#: tcl/ngcgui.tcl:3652 -msgid "Must be in search path" +#: tcl/tooledit.tcl:412 +msgid "back" msgstr "" -#: tcl/ngcgui.tcl:3654 -msgid "(File found -- not in search path)" +#: tcl/tooledit.tcl:413 +msgid "orien" msgstr "" -#: tcl/ngcgui.tcl:3656 +#: tcl/tooledit.tcl:414 #, fuzzy -msgid "Current directory" -msgstr "Verzeichnis:" +msgid "comment" +msgstr "Izaberi JOG inkrement" -#: tcl/ngcgui.tcl:3657 -msgid "Search path" +#: tcl/tooledit.tcl:444 +msgid "Del" msgstr "" -#: tcl/ngcgui.tcl:3663 -msgid "Check setting for" -msgstr "" +#: tcl/tooledit.tcl:473 +#, fuzzy +msgid "ReLoadTable" +msgstr "Po_novo ucitaj tabelu alata" -#: tcl/ngcgui.tcl:3664 +#: tcl/tooledit.tcl:478 #, fuzzy -msgid "in ini file" -msgstr "AXIS (nema datoteke)" +msgid "SaveFile" +msgstr "_Datoteka" -#: tcl/ngcgui.tcl:3665 -msgid "(Restart required after fixing ini file)" +#: tcl/tooledit.tcl:483 +msgid "ReRead" msgstr "" -#: tcl/ngcgui.tcl:3680 +#: tcl/tooledit.tcl:485 #, fuzzy -msgid "Try to Continue" -msgstr "Nastavi" +msgid "AddTool" +msgstr "Redosled alata:" -#: tcl/ngcgui.tcl:3685 -#, fuzzy -msgid "Ngcgui Configuration File Not Found" -msgstr "Verzeichnis:" +#: tcl/tooledit.tcl:535 +#, tcl-format +msgid "Opened %s" +msgstr "" -#: tcl/ngcgui.tcl:3765 -msgid "Missing Tcl Package Img" +#: tcl/tooledit.tcl:536 +#, tcl-format +msgid "Created %s" msgstr "" -#: tcl/ngcgui.tcl:3766 -msgid "Please install Img" +#: tcl/tooledit.tcl:537 +msgid "File updated" msgstr "" -#: tcl/ngcgui.tcl:3965 -#, fuzzy -msgid "ini file" -msgstr "AXIS (nema datoteke)" +#: tcl/tooledit.tcl:538 +msgid "File modified" +msgstr "" -#: tcl/ngcgui.tcl:3973 -msgid "not found" +#: tcl/tooledit.tcl:539 +msgid "File check errors" msgstr "" -#: tcl/ngcgui_ttt.tcl:67 -msgid "found truetype-tracer v4 -OK" +#: tcl/tooledit.tcl:540 +msgid "File checked" msgstr "" -#: tcl/ngcgui_ttt.tcl:70 -msgid "Note truetype-tracer v4 is required" +#: tcl/tooledit.tcl:541 +msgid "File items deleted" msgstr "" -#: tcl/ngcgui_ttt.tcl:71 -msgid "Note: truetype-tracer v4 is required" +#: tcl/tooledit.tcl:542 +msgid "Bogus lines in file ignored" msgstr "" -#: tcl/ngcgui_ttt.tcl:81 -msgid "ngcgui_app.tcl must be loaded before" +#: tcl/tooledit.tcl:543 +msgid "File errors -- Check Entries" msgstr "" -#: tcl/ngcgui_ttt.tcl:89 -msgid "Create a subroutine file from truetype-tracer (V4 reqd)" +#: tcl/tooledit.tcl:544 +msgid "Warning: File changed by another process" msgstr "" -#: tcl/ngcgui_ttt.tcl:102 tcl/ngcgui_ttt.tcl:115 +#: tcl/tooledit.tcl:545 +msgid "Warning: File deleted by another process" +msgstr "" + +#: tcl/tooledit.tcl:546 #, fuzzy -msgid "problem with" -msgstr "_korak navojnog vretena:" +msgid "Added Tool" +msgstr "Nema alata" -#: tcl/ngcgui_ttt.tcl:106 -msgid "No entry for" +#: tcl/tooledit.tcl:550 +#, tcl-format +msgid "Sorted by %s, increasing" msgstr "" -#: tcl/ngcgui_ttt.tcl:109 -msgid "wrong version of truetype-tracer" +#: tcl/tooledit.tcl:551 +#, tcl-format +msgid "Sorted by %s, decreasing" msgstr "" -#: tcl/ngcgui_ttt.tcl:125 -msgid "not writable, using" +#: tcl/tooledit.tcl:593 +msgid "Added" msgstr "" -#: tcl/ngcgui_ttt.tcl:125 -msgid "and setting expandsub" +#: tcl/tooledit.tcl:802 +#, tcl-format +msgid "Tool %s, Column %s, parameter %s is not a number" msgstr "" -#: tcl/ngcgui_ttt.tcl:161 -msgid "Text" +#: tcl/tooledit.tcl:811 +#, tcl-format +msgid "Tool %s, parameter %s must be nonnegative integer" msgstr "" -#: tcl/ngcgui_ttt.tcl:171 -msgid "Linescale" +#: tcl/tooledit.tcl:819 +#, tcl-format +msgid "Tool %s: must be 0..9 integer" msgstr "" -#: tcl/ngcgui_ttt.tcl:177 -msgid "none" +#: tcl/tooledit.tcl:826 +#, tcl-format +msgid "Tool %s: <%s> must be between -360 and 360" msgstr "" -#: tcl/ngcgui_ttt.tcl:192 -msgid "Subdiv" +#: tcl/tooledit.tcl:842 +#, tcl-format +msgid "Pocket <%s> specified multiple times" msgstr "" -#: tcl/ngcgui_ttt.tcl:199 -msgid "default" +#: tcl/tooledit.tcl:857 +#, tcl-format +msgid "Tool <%s> specified multiple times" msgstr "" -#: tcl/ngcgui_ttt.tcl:239 -msgid "Mode" +#: tcl/tooledit.tcl:902 +msgid "File Modified" msgstr "" -#: tcl/ngcgui_ttt.tcl:247 -msgid "normal" +#: tcl/tooledit.tcl:903 +msgid "Save Modifications to File?" msgstr "" -#: tcl/ngcgui_ttt.tcl:248 -msgid "date" +#: tcl/tooledit.tcl:930 +#, tcl-format +msgid "" +"Only these columns are currently used:\n" +"\n" +" %s" msgstr "" -#: tcl/ngcgui_ttt.tcl:249 -#, fuzzy -msgid "fontname" -msgstr "Naziv:" +#: tcl/tooledit.tcl:931 +msgid "Limit display to these columns by specifying" +msgstr "" -#: tcl/ngcgui_ttt.tcl:262 -msgid "Switches" +#: tcl/tooledit.tcl:933 +msgid "Format for ini file is" msgstr "" -#: tcl/ngcgui_ttt.tcl:270 -#, fuzzy -msgid "Unicode" -msgstr "END" +#: tcl/tooledit.tcl:935 +msgid "For standalone use, invoke as" +msgstr "" -#: tcl/ngcgui_ttt.tcl:275 -msgid "Allow Rotation" +#: tcl/tooledit.tcl:936 +msgid "tool_table_filename" msgstr "" -#: tcl/ngcgui_ttt.tcl:295 -msgid "Make ngcgui-compatible subfile and new tab page" +#: tcl/tooledit.tcl:956 +#, fuzzy, tcl-format +msgid "Created by %s" +msgstr "generisao %s" + +#: tcl/tooledit.tcl:957 +msgid "Saved geometry (updated on program termination)" msgstr "" -#: tcl/ngcgui_ttt.tcl:353 -msgid "Null text" +#: tcl/tooledit.tcl:980 +#, tcl-format +msgid "" +"%s: Axis inifile specifies multiple inifile items for: [EMCIO]TOOL_TABLE" msgstr "" -#: tcl/ngcgui_ttt.tcl:384 -msgid "Using truetype-tracer default font" +#: tcl/tooledit.tcl:981 +#, tcl-format +msgid "%s: Using: %s" msgstr "" -#: tcl/ngcgui_ttt.tcl:388 +#: tcl/tooledit.tcl:990 +#, tcl-format +msgid "" +"%s: Warning: Axis is running but the tool table file <%s> \n" +"differs from the standalone startup file <%s>" +msgstr "" + +#: tcl/tooledit.tcl:1004 +msgid "Must be On and Idle to reload tool table" +msgstr "" + +#: tcl/tooledit.tcl:1093 +msgid "Usage" +msgstr "" + +#: tcl/tooledit.tcl:1094 tcl/tooledit.tcl:1095 #, fuzzy -msgid "no such file" -msgstr "AXIS (nema datoteke)" +msgid "filename" +msgstr "Naziv:" -#: tcl/ngcgui_ttt.tcl:393 -msgid "file not readable" +#: tcl/tooledit.tcl:1096 +#, tcl-format +msgid "Allowed column_ names are: %s" msgstr "" -#: tcl/ngcgui_ttt.tcl:507 -msgid "Creating new tab page" +#: tcl/tooledit.tcl:1106 +msgid "Missing filename" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:148 +#: src/emc/usr_intf/axis/scripts/axis.py:183 msgid "Emergency stop" msgstr "E-STOP" -#: src/emc/usr_intf/axis/scripts/axis.py:149 +#: src/emc/usr_intf/axis/scripts/axis.py:184 msgid "Turn machine on" msgstr "Ukljuci masinu" -#: src/emc/usr_intf/axis/scripts/axis.py:151 +#: src/emc/usr_intf/axis/scripts/axis.py:186 msgid "Activate first axis" msgstr "Aktivna prva osa" -#: src/emc/usr_intf/axis/scripts/axis.py:152 +#: src/emc/usr_intf/axis/scripts/axis.py:187 msgid "Activate second axis" msgstr "Aktivna druga osa" -#: src/emc/usr_intf/axis/scripts/axis.py:153 +#: src/emc/usr_intf/axis/scripts/axis.py:188 msgid "Activate third axis" msgstr "Aktivna treca osa" -#: src/emc/usr_intf/axis/scripts/axis.py:154 +#: src/emc/usr_intf/axis/scripts/axis.py:189 msgid "Activate fourth axis" msgstr "Aktivna cetvrta osa" -#: src/emc/usr_intf/axis/scripts/axis.py:155 +#: src/emc/usr_intf/axis/scripts/axis.py:190 msgid "Activate fifth through ninth axis" msgstr "Aktivna peta-deveta osa" -#: src/emc/usr_intf/axis/scripts/axis.py:156 +#: src/emc/usr_intf/axis/scripts/axis.py:191 msgid "Set Feed Override from 0% to 100%" msgstr "Prekoracenje posmaka 0-100%" -#: src/emc/usr_intf/axis/scripts/axis.py:157 +#: src/emc/usr_intf/axis/scripts/axis.py:192 msgid ", and ." msgstr ",i ." -#: src/emc/usr_intf/axis/scripts/axis.py:157 +#: src/emc/usr_intf/axis/scripts/axis.py:192 msgid "Select jog speed" msgstr "Izaberi JOG brzinu" -#: src/emc/usr_intf/axis/scripts/axis.py:158 +#: src/emc/usr_intf/axis/scripts/axis.py:193 msgid "< and >" msgstr "< i >" -#: src/emc/usr_intf/axis/scripts/axis.py:158 +#: src/emc/usr_intf/axis/scripts/axis.py:193 msgid "Select angular jog speed" msgstr "Izaberi ugaonu JOG brzinu" -#: src/emc/usr_intf/axis/scripts/axis.py:159 +#: src/emc/usr_intf/axis/scripts/axis.py:194 msgid "I, Shift-I" msgstr "I, Shift-I" -#: src/emc/usr_intf/axis/scripts/axis.py:159 share/axis/tcl/axis.tcl:2356 +#: src/emc/usr_intf/axis/scripts/axis.py:194 share/axis/tcl/axis.tcl:2481 msgid "Select jog increment" msgstr "Izaberi JOG inkrement" -#: src/emc/usr_intf/axis/scripts/axis.py:160 +#: src/emc/usr_intf/axis/scripts/axis.py:195 msgid "Continuous jog" msgstr "Kontinualni JOG" -#: src/emc/usr_intf/axis/scripts/axis.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:479 +#: src/emc/usr_intf/axis/scripts/axis.py:196 +#: src/emc/usr_intf/pncconf/pncconf.py:408 msgid "Home" msgstr "Home" -#: src/emc/usr_intf/axis/scripts/axis.py:161 +#: src/emc/usr_intf/axis/scripts/axis.py:196 msgid "Send active axis home" msgstr "Pomeri aktivnu osu u HOME" -#: src/emc/usr_intf/axis/scripts/axis.py:162 +#: src/emc/usr_intf/axis/scripts/axis.py:197 msgid "Ctrl-Home" msgstr "Ctrl-Home" -#: src/emc/usr_intf/axis/scripts/axis.py:162 +#: src/emc/usr_intf/axis/scripts/axis.py:197 msgid "Home all axes" msgstr "Pomeri sve osu u HOME" -#: src/emc/usr_intf/axis/scripts/axis.py:163 +#: src/emc/usr_intf/axis/scripts/axis.py:198 msgid "Shift-Home" msgstr "Shift-Home" -#: src/emc/usr_intf/axis/scripts/axis.py:163 +#: src/emc/usr_intf/axis/scripts/axis.py:198 msgid "Zero G54 offset for active axis" msgstr "Nulti G54 ofset za sve aktivne ose" -#: src/emc/usr_intf/axis/scripts/axis.py:164 +#: src/emc/usr_intf/axis/scripts/axis.py:199 msgid "End" msgstr "END" -#: src/emc/usr_intf/axis/scripts/axis.py:164 +#: src/emc/usr_intf/axis/scripts/axis.py:199 msgid "Set G54 offset for active axis" msgstr "Postavi G54 ofset za aktivne ose" -#: src/emc/usr_intf/axis/scripts/axis.py:165 +#: src/emc/usr_intf/axis/scripts/axis.py:200 msgid "Jog active axis" msgstr "JOG aktivne ose" -#: src/emc/usr_intf/axis/scripts/axis.py:168 +#: src/emc/usr_intf/axis/scripts/axis.py:203 msgid "Left, Right" msgstr "Levo, Desno" -#: src/emc/usr_intf/axis/scripts/axis.py:168 +#: src/emc/usr_intf/axis/scripts/axis.py:203 msgid "Jog first axis" msgstr "JOG prva osa" -#: src/emc/usr_intf/axis/scripts/axis.py:169 +#: src/emc/usr_intf/axis/scripts/axis.py:204 msgid "Up, Down" msgstr "Gore, Dole" -#: src/emc/usr_intf/axis/scripts/axis.py:169 +#: src/emc/usr_intf/axis/scripts/axis.py:204 msgid "Jog second axis" msgstr "JOG druga osa" -#: src/emc/usr_intf/axis/scripts/axis.py:170 +#: src/emc/usr_intf/axis/scripts/axis.py:205 msgid "Pg Up, Pg Dn" msgstr "Pg-Up, Pg-Dn" -#: src/emc/usr_intf/axis/scripts/axis.py:170 +#: src/emc/usr_intf/axis/scripts/axis.py:205 msgid "Jog third axis" msgstr "JOG treca osa" -#: src/emc/usr_intf/axis/scripts/axis.py:171 +#: src/emc/usr_intf/axis/scripts/axis.py:206 msgid "Shift+above jogs" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:171 +#: src/emc/usr_intf/axis/scripts/axis.py:206 msgid "Jog at traverse speed" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:172 +#: src/emc/usr_intf/axis/scripts/axis.py:207 msgid "Jog fourth axis" msgstr "JOG cetvrta osa" -#: src/emc/usr_intf/axis/scripts/axis.py:175 +#: src/emc/usr_intf/axis/scripts/axis.py:210 msgid "Toggle between Drag and Rotate mode" msgstr "Izbor izmedju DRAG i ROTATE rezima" -#: src/emc/usr_intf/axis/scripts/axis.py:176 +#: src/emc/usr_intf/axis/scripts/axis.py:211 msgid "Left Button" msgstr "Levi taster" -#: src/emc/usr_intf/axis/scripts/axis.py:176 +#: src/emc/usr_intf/axis/scripts/axis.py:211 msgid "Pan, rotate or select line" msgstr "PAN, rotacija ili izbor linije" -#: src/emc/usr_intf/axis/scripts/axis.py:177 +#: src/emc/usr_intf/axis/scripts/axis.py:212 msgid "Shift+Left Button" msgstr "Shift+Levi taster" -#: src/emc/usr_intf/axis/scripts/axis.py:177 +#: src/emc/usr_intf/axis/scripts/axis.py:212 msgid "Rotate or pan" msgstr "Rotiacija ili PAN" -#: src/emc/usr_intf/axis/scripts/axis.py:178 +#: src/emc/usr_intf/axis/scripts/axis.py:213 msgid "Right Button" msgstr "Desni taster" -#: src/emc/usr_intf/axis/scripts/axis.py:178 -#: src/emc/usr_intf/axis/scripts/axis.py:180 -#: src/emc/usr_intf/axis/scripts/axis.py:181 +#: src/emc/usr_intf/axis/scripts/axis.py:213 +#: src/emc/usr_intf/axis/scripts/axis.py:215 +#: src/emc/usr_intf/axis/scripts/axis.py:216 msgid "Zoom view" msgstr "Uvecaj prikaz" -#: src/emc/usr_intf/axis/scripts/axis.py:179 +#: src/emc/usr_intf/axis/scripts/axis.py:214 msgid "Wheel Button" msgstr "Tocak misa" -#: src/emc/usr_intf/axis/scripts/axis.py:179 +#: src/emc/usr_intf/axis/scripts/axis.py:214 msgid "Rotate view" msgstr "Rotiraj prikaz" -#: src/emc/usr_intf/axis/scripts/axis.py:180 +#: src/emc/usr_intf/axis/scripts/axis.py:215 msgid "Rotate Wheel" msgstr "Rotiraj tocak" -#: src/emc/usr_intf/axis/scripts/axis.py:181 +#: src/emc/usr_intf/axis/scripts/axis.py:216 msgid "Control+Left Button" msgstr "Control+Levi taster" -#: src/emc/usr_intf/axis/scripts/axis.py:184 +#: src/emc/usr_intf/axis/scripts/axis.py:219 msgid "Manual control" msgstr "Manualna kontrola" -#: src/emc/usr_intf/axis/scripts/axis.py:185 +#: src/emc/usr_intf/axis/scripts/axis.py:220 msgid "Code entry (MDI)" msgstr "Unos programa (MDI)" -#: src/emc/usr_intf/axis/scripts/axis.py:186 +#: src/emc/usr_intf/axis/scripts/axis.py:221 msgid "Control-M" msgstr "Ctrl-M" -#: src/emc/usr_intf/axis/scripts/axis.py:186 +#: src/emc/usr_intf/axis/scripts/axis.py:221 msgid "Clear MDI history" msgstr "Obrisi MDI istoriju" -#: src/emc/usr_intf/axis/scripts/axis.py:187 +#: src/emc/usr_intf/axis/scripts/axis.py:222 msgid "Control-H" msgstr "Ctrl-H" -#: src/emc/usr_intf/axis/scripts/axis.py:187 +#: src/emc/usr_intf/axis/scripts/axis.py:222 msgid "Copy selected MDI history elements" msgstr "Kopiraj odabrabe elemente MDI istorije" -#: src/emc/usr_intf/axis/scripts/axis.py:188 +#: src/emc/usr_intf/axis/scripts/axis.py:223 msgid "to clipboard" msgstr "u klipbord" -#: src/emc/usr_intf/axis/scripts/axis.py:189 +#: src/emc/usr_intf/axis/scripts/axis.py:224 msgid "Control-Shift-H" msgstr "Ctrl-Shift-H" -#: src/emc/usr_intf/axis/scripts/axis.py:189 +#: src/emc/usr_intf/axis/scripts/axis.py:224 msgid "Paste clipboard to MDI history" msgstr "Zalepi klipbord u MDI istoriju" -#: src/emc/usr_intf/axis/scripts/axis.py:190 share/axis/tcl/axis.tcl:1113 +#: src/emc/usr_intf/axis/scripts/axis.py:225 share/axis/tcl/axis.tcl:1183 #: src/emc/usr_intf/touchy/touchy.glade:508 msgid "Override Limits" msgstr "Prekoraci ogranicenja" -#: src/emc/usr_intf/axis/scripts/axis.py:192 +#: src/emc/usr_intf/axis/scripts/axis.py:227 msgid "Open program" msgstr "Otvori program" -#: src/emc/usr_intf/axis/scripts/axis.py:193 +#: src/emc/usr_intf/axis/scripts/axis.py:228 msgid "Control-R" msgstr "Ctrl-R" -#: src/emc/usr_intf/axis/scripts/axis.py:193 +#: src/emc/usr_intf/axis/scripts/axis.py:228 msgid "Reload program" msgstr "Ponovo ucitaj program" -#: src/emc/usr_intf/axis/scripts/axis.py:194 +#: src/emc/usr_intf/axis/scripts/axis.py:229 msgid "Control-S" msgstr "Ctrl-S" -#: src/emc/usr_intf/axis/scripts/axis.py:194 +#: src/emc/usr_intf/axis/scripts/axis.py:229 msgid "Save g-code as" msgstr "Sacuvaj G-kod kao" -#: src/emc/usr_intf/axis/scripts/axis.py:195 +#: src/emc/usr_intf/axis/scripts/axis.py:230 msgid "Run program" msgstr "Pokreni program" -#: src/emc/usr_intf/axis/scripts/axis.py:196 +#: src/emc/usr_intf/axis/scripts/axis.py:231 msgid "Step program" msgstr "Izvrsenje programa korak-po-korak" -#: src/emc/usr_intf/axis/scripts/axis.py:197 +#: src/emc/usr_intf/axis/scripts/axis.py:232 msgid "Pause program" msgstr "Puziraj program" -#: src/emc/usr_intf/axis/scripts/axis.py:198 +#: src/emc/usr_intf/axis/scripts/axis.py:233 msgid "Resume program" msgstr "Nastavi izvrsenje programa" -#: src/emc/usr_intf/axis/scripts/axis.py:199 +#: src/emc/usr_intf/axis/scripts/axis.py:234 msgid "Stop running program, or" msgstr "Zaustavi izvrsenje programa ili" -#: src/emc/usr_intf/axis/scripts/axis.py:200 +#: src/emc/usr_intf/axis/scripts/axis.py:235 msgid "stop loading program preview" msgstr "zaustavu ucitavanje pregleda programa" -#: src/emc/usr_intf/axis/scripts/axis.py:202 +#: src/emc/usr_intf/axis/scripts/axis.py:237 msgid "Toggle mist" msgstr "Uklj. Isklj. vazduh" -#: src/emc/usr_intf/axis/scripts/axis.py:203 +#: src/emc/usr_intf/axis/scripts/axis.py:238 msgid "Toggle flood" msgstr "Uklj. Isklj. Emulzija" -#: src/emc/usr_intf/axis/scripts/axis.py:204 +#: src/emc/usr_intf/axis/scripts/axis.py:239 msgid "Spindle brake off" msgstr "Kocnica obr.mot.isklj." -#: src/emc/usr_intf/axis/scripts/axis.py:205 +#: src/emc/usr_intf/axis/scripts/axis.py:240 msgid "Shift-B" msgstr "Shift-B" -#: src/emc/usr_intf/axis/scripts/axis.py:205 +#: src/emc/usr_intf/axis/scripts/axis.py:240 msgid "Spindle brake on" msgstr "Kocnica obr.mot.uklj." -#: src/emc/usr_intf/axis/scripts/axis.py:206 +#: src/emc/usr_intf/axis/scripts/axis.py:241 msgid "Turn spindle clockwise" msgstr "Obr.mot. smer kazaljke" -#: src/emc/usr_intf/axis/scripts/axis.py:207 +#: src/emc/usr_intf/axis/scripts/axis.py:242 msgid "Turn spindle counterclockwise" msgstr "Obr.mot. suprotno od smera kazaljke" -#: src/emc/usr_intf/axis/scripts/axis.py:208 +#: src/emc/usr_intf/axis/scripts/axis.py:243 msgid "Turn spindle more slowly" msgstr "Obr.mot. usporenje" -#: src/emc/usr_intf/axis/scripts/axis.py:209 +#: src/emc/usr_intf/axis/scripts/axis.py:244 msgid "Turn spindle more quickly" msgstr "Obr.mot. ubrzanje" -#: src/emc/usr_intf/axis/scripts/axis.py:211 +#: src/emc/usr_intf/axis/scripts/axis.py:246 msgid "Control-K" msgstr "Ctrl-K" -#: src/emc/usr_intf/axis/scripts/axis.py:211 +#: src/emc/usr_intf/axis/scripts/axis.py:246 msgid "Clear live plot" msgstr "Obrisi prikaz" -#: src/emc/usr_intf/axis/scripts/axis.py:212 +#: src/emc/usr_intf/axis/scripts/axis.py:247 msgid "Cycle among preset views" msgstr "Izmena prikaza" -#: src/emc/usr_intf/axis/scripts/axis.py:213 +#: src/emc/usr_intf/axis/scripts/axis.py:248 #, fuzzy msgid "Cycle among preview, DRO, and user tabs" msgstr "Izmena prikaza" -#: src/emc/usr_intf/axis/scripts/axis.py:215 +#: src/emc/usr_intf/axis/scripts/axis.py:250 #, fuzzy msgid "Ctrl-Space" msgstr "Ctrl-S" -#: src/emc/usr_intf/axis/scripts/axis.py:215 +#: src/emc/usr_intf/axis/scripts/axis.py:250 msgid "Clear notifications" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:836 +#: src/emc/usr_intf/axis/scripts/axis.py:850 #, python-format msgid "Unknown tool %d" msgstr "Nepoznat alat%d" -#: src/emc/usr_intf/axis/scripts/axis.py:838 +#: src/emc/usr_intf/axis/scripts/axis.py:852 msgid "No tool" msgstr "Nema alata" -#: src/emc/usr_intf/axis/scripts/axis.py:840 +#: src/emc/usr_intf/axis/scripts/axis.py:854 #, fuzzy, python-format msgid "Tool %(tool)d, offset %(zo)g, diameter %(dia)g" msgstr "Alat%d, ofser %g, precnik %g" -#: src/emc/usr_intf/axis/scripts/axis.py:842 +#: src/emc/usr_intf/axis/scripts/axis.py:856 #, fuzzy, python-format msgid "Tool %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" msgstr "Alat %d, Zo %g, Xo %g, precnik %g" -#: src/emc/usr_intf/axis/scripts/axis.py:1013 +#: src/emc/usr_intf/axis/scripts/axis.py:1031 msgid "Filtering..." msgstr "Filtriranje..." -#: src/emc/usr_intf/axis/scripts/axis.py:1073 +#: src/emc/usr_intf/axis/scripts/axis.py:1102 msgid "Filter failed" msgstr "Filtriranje neuspesno" -#: src/emc/usr_intf/axis/scripts/axis.py:1074 +#: src/emc/usr_intf/axis/scripts/axis.py:1103 #, fuzzy, python-format msgid "" "The program %(program)r exited with code %(code)d. Any error messages it " @@ -3783,12 +5748,12 @@ msgid "" msgstr "" "Program %r obustavljen sa kodom %d. Poruke o gresci prikazane su ispod:" -#: src/emc/usr_intf/axis/scripts/axis.py:1139 +#: src/emc/usr_intf/axis/scripts/axis.py:1171 #, python-format msgid "G-Code error in %s" msgstr "G-kode greska in %s" -#: src/emc/usr_intf/axis/scripts/axis.py:1140 +#: src/emc/usr_intf/axis/scripts/axis.py:1172 #, fuzzy, python-format msgid "" "Near line %(seq)d of %(f)s:\n" @@ -3797,131 +5762,134 @@ msgstr "" "Najbliza linija %d u %s:\n" "%s" -#: src/emc/usr_intf/axis/scripts/axis.py:1292 -#: src/emc/usr_intf/axis/scripts/axis.py:2725 share/axis/tcl/axis.tcl:1092 -#: share/axis/tcl/axis.tcl:1094 share/axis/tcl/axis.tcl:2144 +#: src/emc/usr_intf/axis/scripts/axis.py:1341 +#: src/emc/usr_intf/axis/scripts/axis.py:2942 share/axis/tcl/axis.tcl:1162 +#: share/axis/tcl/axis.tcl:1164 share/axis/tcl/axis.tcl:2269 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:895 msgid "Continuous" msgstr "Neprekidan" -#: src/emc/usr_intf/axis/scripts/axis.py:1403 +#: src/emc/usr_intf/axis/scripts/axis.py:1452 msgid "Ok" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1546 +#: src/emc/usr_intf/axis/scripts/axis.py:1599 msgid "T Tool Table" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1557 -#: src/emc/usr_intf/axis/scripts/axis.py:1730 -#: src/emc/usr_intf/stepconf/stepconf.py:1691 -#: src/emc/usr_intf/stepconf/stepconf.py:2235 +#: src/emc/usr_intf/axis/scripts/axis.py:1610 +#: src/emc/usr_intf/axis/scripts/axis.py:1859 +#: src/emc/usr_intf/axis/scripts/axis.py:2387 +#: src/emc/usr_intf/stepconf/stepconf.py:1328 +#: src/emc/usr_intf/stepconf/pages.py:631 msgid "in" msgstr "in" -#: src/emc/usr_intf/axis/scripts/axis.py:1560 +#: src/emc/usr_intf/axis/scripts/axis.py:1613 msgid " radius" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1562 +#: src/emc/usr_intf/axis/scripts/axis.py:1615 msgid " diameter" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1563 +#: src/emc/usr_intf/axis/scripts/axis.py:1616 msgid "°" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1572 +#: src/emc/usr_intf/axis/scripts/axis.py:1625 msgid "Coordinate System:" msgstr "Koordinatni sistem:" -#: src/emc/usr_intf/axis/scripts/axis.py:1588 +#: src/emc/usr_intf/axis/scripts/axis.py:1641 msgid "fixture" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1589 +#: src/emc/usr_intf/axis/scripts/axis.py:1642 msgid "workpiece" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1605 +#: src/emc/usr_intf/axis/scripts/axis.py:1658 msgid "Name:" msgstr "Naziv:" -#: src/emc/usr_intf/axis/scripts/axis.py:1605 +#: src/emc/usr_intf/axis/scripts/axis.py:1658 msgid "Size:" msgstr "Velicina:" -#: src/emc/usr_intf/axis/scripts/axis.py:1606 +#: src/emc/usr_intf/axis/scripts/axis.py:1659 msgid "Tool order:" msgstr "Redosled alata:" -#: src/emc/usr_intf/axis/scripts/axis.py:1606 +#: src/emc/usr_intf/axis/scripts/axis.py:1659 msgid "Rapid distance:" msgstr "Duzina praznog hoda:" -#: src/emc/usr_intf/axis/scripts/axis.py:1607 +#: src/emc/usr_intf/axis/scripts/axis.py:1660 msgid "Feed distance:" msgstr "Radna duzina:" -#: src/emc/usr_intf/axis/scripts/axis.py:1607 +#: src/emc/usr_intf/axis/scripts/axis.py:1660 msgid "Total distance:" msgstr "Ukupna duzina:" -#: src/emc/usr_intf/axis/scripts/axis.py:1608 +#: src/emc/usr_intf/axis/scripts/axis.py:1661 msgid "Run time:" msgstr "Vreme:" -#: src/emc/usr_intf/axis/scripts/axis.py:1608 +#: src/emc/usr_intf/axis/scripts/axis.py:1661 msgid "X bounds:" msgstr "X-granice:" -#: src/emc/usr_intf/axis/scripts/axis.py:1609 +#: src/emc/usr_intf/axis/scripts/axis.py:1662 msgid "Y bounds:" msgstr "Y-granice:" -#: src/emc/usr_intf/axis/scripts/axis.py:1609 +#: src/emc/usr_intf/axis/scripts/axis.py:1662 msgid "Z bounds:" msgstr "Z-granice:" -#: src/emc/usr_intf/axis/scripts/axis.py:1610 +#: src/emc/usr_intf/axis/scripts/axis.py:1663 msgid "A bounds:" msgstr "A-granice:" -#: src/emc/usr_intf/axis/scripts/axis.py:1610 +#: src/emc/usr_intf/axis/scripts/axis.py:1663 msgid "B bounds:" msgstr "B-granice:" -#: src/emc/usr_intf/axis/scripts/axis.py:1611 +#: src/emc/usr_intf/axis/scripts/axis.py:1664 msgid "C bounds:" msgstr "C-granice:" -#: src/emc/usr_intf/axis/scripts/axis.py:1635 +#: src/emc/usr_intf/axis/scripts/axis.py:1688 #, python-format msgid "Program exceeds machine minimum on axis %s" msgstr "Program prevazilazi minimum masine po osi %s" -#: src/emc/usr_intf/axis/scripts/axis.py:1638 +#: src/emc/usr_intf/axis/scripts/axis.py:1691 #, python-format msgid "Program exceeds machine maximum on axis %s" msgstr "Program prevazilazi maksimum masine po osi %s" -#: src/emc/usr_intf/axis/scripts/axis.py:1643 +#: src/emc/usr_intf/axis/scripts/axis.py:1696 msgid "Program exceeds machine limits" msgstr "Program prevazilazi granicne vrednosti masine" -#: src/emc/usr_intf/axis/scripts/axis.py:1646 +#: src/emc/usr_intf/axis/scripts/axis.py:1699 msgid "Run Anyway" msgstr "Izvrsi bezuslovno" -#: src/emc/usr_intf/axis/scripts/axis.py:1708 +#: src/emc/usr_intf/axis/scripts/axis.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1581 msgid "No file loaded" msgstr "Datoteka nije ucitana" -#: src/emc/usr_intf/axis/scripts/axis.py:1716 +#: src/emc/usr_intf/axis/scripts/axis.py:1845 #, python-format msgid "generated from %s" msgstr "generisao %s" -#: src/emc/usr_intf/axis/scripts/axis.py:1722 +#: src/emc/usr_intf/axis/scripts/axis.py:1851 #, fuzzy, python-format msgid "" "%(size)s bytes\n" @@ -3930,127 +5898,148 @@ msgstr "" "%s bajta\n" "%s linija G-koda" -#: src/emc/usr_intf/axis/scripts/axis.py:1748 +#: src/emc/usr_intf/axis/scripts/axis.py:1877 #, python-format msgid "%.1f minutes" msgstr "%.1f min" -#: src/emc/usr_intf/axis/scripts/axis.py:1750 +#: src/emc/usr_intf/axis/scripts/axis.py:1879 #, python-format msgid "%d seconds" msgstr "%d s" -#: src/emc/usr_intf/axis/scripts/axis.py:1758 +#: src/emc/usr_intf/axis/scripts/axis.py:1887 #, fuzzy, python-format msgid "%(a)f to %(b)f = %(diff)f %(units)s" msgstr "%f do %f = %f %s" -#: src/emc/usr_intf/axis/scripts/axis.py:1759 +#: src/emc/usr_intf/axis/scripts/axis.py:1888 msgid "G-Code Properties" msgstr "G-kod osobine" -#: src/emc/usr_intf/axis/scripts/axis.py:1883 +#: src/emc/usr_intf/axis/scripts/axis.py:2021 msgid "All machinable files" msgstr "Sve izvrsne datoteke" -#: src/emc/usr_intf/axis/scripts/axis.py:1884 -#: src/emc/usr_intf/axis/scripts/axis.py:2464 +#: src/emc/usr_intf/axis/scripts/axis.py:2022 +#: src/emc/usr_intf/axis/scripts/axis.py:2659 msgid "rs274ngc files" msgstr "NC datoteke" -#: src/emc/usr_intf/axis/scripts/axis.py:1899 +#: src/emc/usr_intf/axis/scripts/axis.py:2037 msgid "axis cannot accept remote command while running" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2255 +#: src/emc/usr_intf/axis/scripts/axis.py:2098 +msgid "File not Writable:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2099 +msgid "" +"This file is not writable\n" +"You can Edit-readonly\n" +"\n" +"or\n" +"\n" +"Save it to your own directory\n" +"then open that saved, writable file" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2106 +msgid "Edit-readonly" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2440 msgid "Axis is already homed, are you sure you want to re-home?" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2268 +#: src/emc/usr_intf/axis/scripts/axis.py:2453 msgid "This axis is already homed, are you sure you want to re-home?" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2308 share/axis/tcl/axis.tcl:1108 +#: src/emc/usr_intf/axis/scripts/axis.py:2493 share/axis/tcl/axis.tcl:1178 msgid "Touch Off" msgstr "Iskljuceno" -#: src/emc/usr_intf/axis/scripts/axis.py:2309 +#: src/emc/usr_intf/axis/scripts/axis.py:2494 #, fuzzy, python-format msgid "Enter %s coordinate relative to %%s:" msgstr "Unesite %s-koordinate u odnosu na pripremak" -#: src/emc/usr_intf/axis/scripts/axis.py:2476 +#: src/emc/usr_intf/axis/scripts/axis.py:2671 msgid "Error saving file" msgstr "Greska pri snimanju datoteke" -#: src/emc/usr_intf/axis/scripts/axis.py:2859 +#: src/emc/usr_intf/axis/scripts/axis.py:3077 #: src/emc/usr_intf/touchy/touchy.glade:577 +#: src/emc/usr_intf/gscreen/gscreen.glade:2933 msgid "Home All" msgstr "HOME sve ose" -#: src/emc/usr_intf/axis/scripts/axis.py:2861 +#: src/emc/usr_intf/axis/scripts/axis.py:3079 msgid "Home all axes [Ctrl-Home]" msgstr "HOME sve ose [Ctrl-Home]" -#: src/emc/usr_intf/axis/scripts/axis.py:2864 +#: src/emc/usr_intf/axis/scripts/axis.py:3082 msgid "Home All Axes" msgstr "HOME sve ose" -#: src/emc/usr_intf/axis/scripts/axis.py:2871 +#: src/emc/usr_intf/axis/scripts/axis.py:3089 #, fuzzy msgid "Unhome All Axes" msgstr "HOME sve ose" -#: src/emc/usr_intf/axis/scripts/axis.py:2895 +#: src/emc/usr_intf/axis/scripts/axis.py:3113 #, python-format msgid "Home Axis _%s" msgstr "HOME _%s-osa" -#: src/emc/usr_intf/axis/scripts/axis.py:2897 +#: src/emc/usr_intf/axis/scripts/axis.py:3115 #, fuzzy, python-format msgid "Unhome Axis _%s" msgstr "HOME _%s-osa" -#: src/emc/usr_intf/axis/scripts/axis.py:3040 +#: src/emc/usr_intf/axis/scripts/axis.py:3282 msgid "Run from here" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:3335 +#: src/emc/usr_intf/axis/scripts/axis.py:3598 msgid "Error in ~/.axisrc" msgstr "Greska~/.axisrc" #: src/emc/usr_intf/axis/scripts/linuxcnctop.py:102 -msgid "LinuxCNC Status" -msgstr "" +#, fuzzy +msgid "Machinekit Status" +msgstr "_Jedinica mere:" #: src/emc/usr_intf/axis/scripts/linuxcnctop.py:118 #, fuzzy msgid "Copy All" msgstr "HOME sve ose" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:29 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 #, python-format msgid "Insert tool %d and click continue when ready" msgstr "stavite alat %d i kliknite Nastavi kada ste spremni" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:31 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:39 msgid "Remove the tool and click continue when ready" msgstr "Uklonite alat i kliknite na Nastavi kada ste spremni" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 -#: src/emc/usr_intf/touchy/mdi.py:49 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 +#: src/emc/usr_intf/touchy/mdi.py:49 src/emc/usr_intf/gscreen/mdi.py:49 msgid "Tool change" msgstr "Promena alata" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 msgid "Continue" msgstr "Nastavi" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:55 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:64 msgid "AXIS Manual Toolchanger" msgstr "AXIS manuelna promena alata" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:59 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:68 msgid "" "This window is part of the AXIS manual toolchanger. It is safe to close or " "iconify this window, or it will close automatically after a few seconds." @@ -4252,7 +6241,7 @@ msgstr "Dubina slike" #: src/emc/usr_intf/axis/scripts/debuglevel.py:22 #, fuzzy -msgid "LinuxCNC Debug Level" +msgid "Machinekit Debug Level" msgstr "_Debug Level..." #: src/emc/usr_intf/axis/scripts/debuglevel.py:23 @@ -4300,835 +6289,912 @@ msgstr "" msgid " * This option can only be enabled in the inifile" msgstr "" -#: share/axis/tcl/axis.tcl:49 +#: share/axis/tcl/axis.tcl:52 #, fuzzy msgid "_Open..." msgstr "_Otvori..." -#: share/axis/tcl/axis.tcl:53 +#: share/axis/tcl/axis.tcl:56 #, fuzzy msgid "Recent _Files" msgstr "Sve datoteke" -#: share/axis/tcl/axis.tcl:57 +#: share/axis/tcl/axis.tcl:60 #, fuzzy msgid "_Edit..." msgstr "_Uredi..." -#: share/axis/tcl/axis.tcl:60 +#: share/axis/tcl/axis.tcl:63 msgid "Ctrl-R" msgstr "Ctrl-R" -#: share/axis/tcl/axis.tcl:62 +#: share/axis/tcl/axis.tcl:65 msgid "_Reload" msgstr "_Ucitaj ponovo" -#: share/axis/tcl/axis.tcl:65 +#: share/axis/tcl/axis.tcl:68 #, fuzzy msgid "Ctrl-S" msgstr "Ctrl-R" -#: share/axis/tcl/axis.tcl:67 +#: share/axis/tcl/axis.tcl:70 #, fuzzy msgid "_Save gcode as..." msgstr "Sacuvaj G-kod kao" -#: share/axis/tcl/axis.tcl:71 +#: share/axis/tcl/axis.tcl:74 msgid "_Properties..." msgstr "Oso_bine..." -#: share/axis/tcl/axis.tcl:77 +#: share/axis/tcl/axis.tcl:80 msgid "Edit _tool table..." msgstr "_Uredi tabelu alata" -#: share/axis/tcl/axis.tcl:81 +#: share/axis/tcl/axis.tcl:84 #, fuzzy msgid "Reload tool ta_ble" msgstr "Po_novo ucitaj tabelu alata" -#: share/axis/tcl/axis.tcl:87 +#: share/axis/tcl/axis.tcl:90 #, fuzzy msgid "_Ladder Editor..." msgstr "_Ladder-Editor" -#: share/axis/tcl/axis.tcl:99 +#: share/axis/tcl/axis.tcl:102 msgid "Toggle _Emergency Stop" msgstr "_E-stop uklj. isklj." -#: share/axis/tcl/axis.tcl:104 +#: share/axis/tcl/axis.tcl:107 msgid "Toggle _Machine Power" msgstr "Ma_sina uklj./isklj." -#: share/axis/tcl/axis.tcl:111 +#: share/axis/tcl/axis.tcl:114 msgid "_Run program" msgstr "Pok_reni program" -#: share/axis/tcl/axis.tcl:115 +#: share/axis/tcl/axis.tcl:118 #, fuzzy msgid "Ru_n from selected line" msgstr "PAN, rotacija ili izbor linije" -#: share/axis/tcl/axis.tcl:120 +#: share/axis/tcl/axis.tcl:123 #, fuzzy msgid "S_tep" msgstr "_Korak po korak" -#: share/axis/tcl/axis.tcl:125 +#: share/axis/tcl/axis.tcl:128 #, fuzzy msgid "_Pause" msgstr "_Pauza" -#: share/axis/tcl/axis.tcl:130 +#: share/axis/tcl/axis.tcl:133 #, fuzzy msgid "Re_sume" msgstr "_Nastavi" -#: share/axis/tcl/axis.tcl:140 +#: share/axis/tcl/axis.tcl:143 msgid "Stop at M_1" msgstr "Zaustavi na M_1" -#: share/axis/tcl/axis.tcl:145 +#: share/axis/tcl/axis.tcl:148 msgid "Skip lines with '_/'" msgstr "Preskoci linije sa '_/'" -#: share/axis/tcl/axis.tcl:150 +#: share/axis/tcl/axis.tcl:153 msgid "Ctrl-M" msgstr "Ctrl-M" -#: share/axis/tcl/axis.tcl:152 +#: share/axis/tcl/axis.tcl:155 msgid "Clear MDI h_istory" msgstr "Obrisi MDI i_storiju" -#: share/axis/tcl/axis.tcl:154 +#: share/axis/tcl/axis.tcl:157 msgid "Ctrl-H" msgstr "Ctrl-H" -#: share/axis/tcl/axis.tcl:156 +#: share/axis/tcl/axis.tcl:159 msgid "Copy from MDI hist_ory" msgstr "Kopiraj iz MDI ist_orije" -#: share/axis/tcl/axis.tcl:158 +#: share/axis/tcl/axis.tcl:161 msgid "Ctrl-Shift-H" msgstr "Ctrl-Shift-H" -#: share/axis/tcl/axis.tcl:160 +#: share/axis/tcl/axis.tcl:163 msgid "Paste to MDI histor_y" msgstr "Zalepi na MDI istorij_u" -#: share/axis/tcl/axis.tcl:166 +#: share/axis/tcl/axis.tcl:169 msgid "_Calibration" msgstr "_Kalibracija" -#: share/axis/tcl/axis.tcl:170 +#: share/axis/tcl/axis.tcl:173 msgid "Show _Hal Configuration" msgstr "_Hal konfiguracija" -#: share/axis/tcl/axis.tcl:174 +#: share/axis/tcl/axis.tcl:177 #, fuzzy msgid "H_al Meter" msgstr "H_AL-Metar..." -#: share/axis/tcl/axis.tcl:178 +#: share/axis/tcl/axis.tcl:181 #, fuzzy msgid "Ha_l Scope" msgstr "HA_L-Scope..." -#: share/axis/tcl/axis.tcl:182 +#: share/axis/tcl/axis.tcl:185 #, fuzzy -msgid "Sho_w LinuxCNC Status" +msgid "Sho_w Machinekit Status" msgstr "EM_C-Status..." -#: share/axis/tcl/axis.tcl:186 +#: share/axis/tcl/axis.tcl:189 #, fuzzy msgid "Set _Debug Level" msgstr "_Debug Level..." -#: share/axis/tcl/axis.tcl:192 +#: share/axis/tcl/axis.tcl:195 #, fuzzy msgid "Homin_g" msgstr "Homin_g" -#: share/axis/tcl/axis.tcl:196 +#: share/axis/tcl/axis.tcl:199 msgid "_Unhoming" msgstr "" -#: share/axis/tcl/axis.tcl:200 +#: share/axis/tcl/axis.tcl:203 msgid "_Zero coordinate system" msgstr "_Nuliraj koord. sistem" -#: share/axis/tcl/axis.tcl:204 +#: share/axis/tcl/axis.tcl:207 msgid "P1 G5_4" msgstr "P1 G5_4" -#: share/axis/tcl/axis.tcl:208 +#: share/axis/tcl/axis.tcl:211 #, fuzzy msgid "P2 G5_5" msgstr "P1 G5_4" -#: share/axis/tcl/axis.tcl:212 +#: share/axis/tcl/axis.tcl:215 #, fuzzy msgid "P3 G5_6" msgstr "P1 G5_4" -#: share/axis/tcl/axis.tcl:216 +#: share/axis/tcl/axis.tcl:219 #, fuzzy msgid "P4 G5_7" msgstr "P1 G5_4" -#: share/axis/tcl/axis.tcl:220 +#: share/axis/tcl/axis.tcl:223 #, fuzzy msgid "P5 G5_8" msgstr "P1 G5_4" -#: share/axis/tcl/axis.tcl:224 +#: share/axis/tcl/axis.tcl:227 #, fuzzy msgid "P6 G5_9" msgstr "P1 G5_4" -#: share/axis/tcl/axis.tcl:228 +#: share/axis/tcl/axis.tcl:231 #, fuzzy msgid "P7 G59._1" msgstr "P1 G5_4" -#: share/axis/tcl/axis.tcl:232 +#: share/axis/tcl/axis.tcl:235 #, fuzzy msgid "P8 G59._2" msgstr "P1 G5_4" -#: share/axis/tcl/axis.tcl:236 +#: share/axis/tcl/axis.tcl:239 #, fuzzy msgid "P9 G59._3" msgstr "P1 G5_4" -#: share/axis/tcl/axis.tcl:240 +#: share/axis/tcl/axis.tcl:243 msgid "_G92" msgstr "" -#: share/axis/tcl/axis.tcl:248 +#: share/axis/tcl/axis.tcl:251 msgid "Tool touch off to wor_kpiece" msgstr "" -#: share/axis/tcl/axis.tcl:254 +#: share/axis/tcl/axis.tcl:257 msgid "Tool touch off to _fixture" msgstr "" -#: share/axis/tcl/axis.tcl:262 +#: share/axis/tcl/axis.tcl:265 msgid "_Top view" msgstr "_Prikaz odozgo" -#: share/axis/tcl/axis.tcl:269 +#: share/axis/tcl/axis.tcl:272 msgid "_Rotated Top view" msgstr "Rotirani p_rikaz odozgo" -#: share/axis/tcl/axis.tcl:276 +#: share/axis/tcl/axis.tcl:279 msgid "_Side view" msgstr "_Bocni prikaz" -#: share/axis/tcl/axis.tcl:283 +#: share/axis/tcl/axis.tcl:286 msgid "_Front view" msgstr "_Ceoni prikaz" -#: share/axis/tcl/axis.tcl:290 +#: share/axis/tcl/axis.tcl:293 msgid "_Perspective view" msgstr "_Perspektiva" -#: share/axis/tcl/axis.tcl:299 +#: share/axis/tcl/axis.tcl:302 msgid "Display _Inches" msgstr "_Inch" -#: share/axis/tcl/axis.tcl:306 +#: share/axis/tcl/axis.tcl:309 msgid "Display _MM" msgstr "_mm" -#: share/axis/tcl/axis.tcl:313 +#: share/axis/tcl/axis.tcl:316 msgid "S_how program" msgstr "P_rikazi program" -#: share/axis/tcl/axis.tcl:318 +#: share/axis/tcl/axis.tcl:321 #, fuzzy msgid "Show program r_apids" msgstr "P_rikazi program" -#: share/axis/tcl/axis.tcl:323 +#: share/axis/tcl/axis.tcl:326 #, fuzzy msgid "Alpha-_blend program" msgstr "Otvori program" -#: share/axis/tcl/axis.tcl:328 +#: share/axis/tcl/axis.tcl:331 msgid "Sho_w live plot" msgstr "Prikazi p_utanje alata" -#: share/axis/tcl/axis.tcl:333 +#: share/axis/tcl/axis.tcl:336 msgid "Show too_l" msgstr "_Prikazi alat" -#: share/axis/tcl/axis.tcl:338 +#: share/axis/tcl/axis.tcl:341 #, fuzzy msgid "Show e_xtents" msgstr "_Prikazi rastojanja" -#: share/axis/tcl/axis.tcl:343 +#: share/axis/tcl/axis.tcl:345 +msgid "_Grid" +msgstr "" + +#: share/axis/tcl/axis.tcl:350 #, fuzzy msgid "Show o_ffsets" msgstr "_Prikazi rastojanja" -#: share/axis/tcl/axis.tcl:348 +#: share/axis/tcl/axis.tcl:355 msgid "Sh_ow machine limits" msgstr "P_rikazi granicne vrednosti" -#: share/axis/tcl/axis.tcl:353 +#: share/axis/tcl/axis.tcl:360 msgid "Show v_elocity" msgstr "B_rzina" -#: share/axis/tcl/axis.tcl:358 +#: share/axis/tcl/axis.tcl:365 msgid "Show _distance to go" msgstr "P_reostalo rastojanje" -#: share/axis/tcl/axis.tcl:363 +#: share/axis/tcl/axis.tcl:370 #, fuzzy msgid "Large coordinate fo_nt" msgstr "_Nuliraj koord. sistem" -#: share/axis/tcl/axis.tcl:366 +#: share/axis/tcl/axis.tcl:373 msgid "Ctrl-K" msgstr "Ctrl-K" -#: share/axis/tcl/axis.tcl:368 +#: share/axis/tcl/axis.tcl:375 msgid "_Clear live plot" msgstr "Obrisi _prikaz" -#: share/axis/tcl/axis.tcl:377 +#: share/axis/tcl/axis.tcl:384 #, fuzzy msgid "Show commanded position" msgstr "prikazi za_datu poziciju" -#: share/axis/tcl/axis.tcl:384 -#, fuzzy -msgid "Show actual position" -msgstr "Prikazi _trenutnu poziciju" +#: share/axis/tcl/axis.tcl:391 +#, fuzzy +msgid "Show actual position" +msgstr "Prikazi _trenutnu poziciju" + +#: share/axis/tcl/axis.tcl:400 +#, fuzzy +msgid "Show machine position" +msgstr "Apsol_utna Pozicija" + +#: share/axis/tcl/axis.tcl:407 +#, fuzzy +msgid "Show relative position" +msgstr "Rela_tivna pozicija" + +#: share/axis/tcl/axis.tcl:416 +msgid "Joint mode" +msgstr "Joint rezim" + +#: share/axis/tcl/axis.tcl:423 +#, fuzzy +msgid "World mode" +msgstr "Joint rezim" + +#: share/axis/tcl/axis.tcl:431 +msgid "_Off" +msgstr "" + +#: share/axis/tcl/axis.tcl:437 +msgid "_Custom" +msgstr "" + +#: share/axis/tcl/axis.tcl:443 +msgid "User_0" +msgstr "" + +#: share/axis/tcl/axis.tcl:447 +msgid "User_1" +msgstr "" + +#: share/axis/tcl/axis.tcl:451 +msgid "User_2" +msgstr "" + +#: share/axis/tcl/axis.tcl:455 +msgid "User_3" +msgstr "" + +#: share/axis/tcl/axis.tcl:459 +msgid "User_4" +msgstr "" -#: share/axis/tcl/axis.tcl:393 -#, fuzzy -msgid "Show machine position" -msgstr "Apsol_utna Pozicija" +#: share/axis/tcl/axis.tcl:463 +msgid "User_5" +msgstr "" -#: share/axis/tcl/axis.tcl:400 -#, fuzzy -msgid "Show relative position" -msgstr "Rela_tivna pozicija" +#: share/axis/tcl/axis.tcl:467 +msgid "User_6" +msgstr "" -#: share/axis/tcl/axis.tcl:409 -msgid "Joint mode" -msgstr "Joint rezim" +#: share/axis/tcl/axis.tcl:471 +msgid "User_7" +msgstr "" -#: share/axis/tcl/axis.tcl:416 -#, fuzzy -msgid "World mode" -msgstr "Joint rezim" +#: share/axis/tcl/axis.tcl:475 +msgid "User_8" +msgstr "" + +#: share/axis/tcl/axis.tcl:479 +msgid "User_9" +msgstr "" -#: share/axis/tcl/axis.tcl:425 +#: share/axis/tcl/axis.tcl:491 msgid "_About AXIS" msgstr "_O programu..." -#: share/axis/tcl/axis.tcl:429 +#: share/axis/tcl/axis.tcl:495 msgid "Quick _Reference" msgstr "_Podsetnik..." -#: share/axis/tcl/axis.tcl:439 +#: share/axis/tcl/axis.tcl:505 #, fuzzy msgid "_Machine" msgstr "apsolutna" -#: share/axis/tcl/axis.tcl:443 +#: share/axis/tcl/axis.tcl:509 #, fuzzy msgid "_View" msgstr "P_rikaz" -#: share/axis/tcl/axis.tcl:456 +#: share/axis/tcl/axis.tcl:513 +msgid "_User" +msgstr "" + +#: share/axis/tcl/axis.tcl:526 msgid "Toggle Emergency Stop [F1]" msgstr "E-stop uklj./isklj. [F1]" -#: share/axis/tcl/axis.tcl:465 +#: share/axis/tcl/axis.tcl:535 msgid "Toggle Machine power [F2]" msgstr "Masina uklj./isklj. [F2]" -#: share/axis/tcl/axis.tcl:476 +#: share/axis/tcl/axis.tcl:546 msgid "Open G-Code file [O]" msgstr "Otvori G-kod [O]" -#: share/axis/tcl/axis.tcl:484 +#: share/axis/tcl/axis.tcl:554 msgid "Reopen current file [Control-R]" msgstr "Ponovo otvori tekucu datoteku [Ctrl-R]" -#: share/axis/tcl/axis.tcl:494 +#: share/axis/tcl/axis.tcl:564 msgid "Begin executing current file [R]" msgstr "Otpocni izvrsenje tekuce datoteke [R]" -#: share/axis/tcl/axis.tcl:502 +#: share/axis/tcl/axis.tcl:572 msgid "Execute next line [T]" msgstr "Izvrsi sledecu liniju [T]" -#: share/axis/tcl/axis.tcl:510 +#: share/axis/tcl/axis.tcl:580 msgid "Pause [P] / resume [S] execution" msgstr "Pauza [P] / Nastavi [N]" -#: share/axis/tcl/axis.tcl:518 +#: share/axis/tcl/axis.tcl:588 msgid "Stop program execution [ESC]" msgstr "Zaustavi izvrsenje programa [ESC]" -#: share/axis/tcl/axis.tcl:528 +#: share/axis/tcl/axis.tcl:598 #, fuzzy msgid "Toggle skip lines with '/' [Alt-M /]" msgstr "Preskoci linije sa '_/'" -#: share/axis/tcl/axis.tcl:535 +#: share/axis/tcl/axis.tcl:605 msgid "Toggle optional pause [Alt-M 1]" msgstr "" -#: share/axis/tcl/axis.tcl:544 +#: share/axis/tcl/axis.tcl:614 src/emc/usr_intf/gmoccapy/gmoccapy.glade:549 msgid "Zoom in" msgstr "Uvecaj" -#: share/axis/tcl/axis.tcl:552 +#: share/axis/tcl/axis.tcl:622 src/emc/usr_intf/gmoccapy/gmoccapy.glade:567 msgid "Zoom out" msgstr "Umanji" -#: share/axis/tcl/axis.tcl:560 +#: share/axis/tcl/axis.tcl:630 msgid "Top view" msgstr "Pogled odozgo" -#: share/axis/tcl/axis.tcl:568 +#: share/axis/tcl/axis.tcl:638 msgid "Rotated top view" msgstr "Rotirani pogled odozgo" -#: share/axis/tcl/axis.tcl:576 +#: share/axis/tcl/axis.tcl:646 msgid "Side view" msgstr "Bocni pogled" -#: share/axis/tcl/axis.tcl:584 +#: share/axis/tcl/axis.tcl:654 #, fuzzy msgid "Front view" msgstr "_Ceoni prikaz" -#: share/axis/tcl/axis.tcl:592 +#: share/axis/tcl/axis.tcl:662 msgid "Perspective view" msgstr "Perspektiva" -#: share/axis/tcl/axis.tcl:600 +#: share/axis/tcl/axis.tcl:670 msgid "Toggle between Drag and Rotate Mode [D]" msgstr "Izaberi pomeranje ili rotiranje (D)" -#: share/axis/tcl/axis.tcl:615 +#: share/axis/tcl/axis.tcl:685 msgid "Clear live plot [Ctrl-K]" msgstr "Obrisi prikaz [Ctrl-K]" -#: share/axis/tcl/axis.tcl:766 +#: share/axis/tcl/axis.tcl:836 msgid "Manual Control [F3]" msgstr "Manualna kontrola [F3]" -#: share/axis/tcl/axis.tcl:767 +#: share/axis/tcl/axis.tcl:837 msgid "MDI [F5]" msgstr "MDI [F5]" -#: share/axis/tcl/axis.tcl:781 share/axis/tcl/axis.tcl:2036 -#: share/axis/tcl/axis.tcl:2203 +#: share/axis/tcl/axis.tcl:851 share/axis/tcl/axis.tcl:2158 +#: share/axis/tcl/axis.tcl:2328 #, fuzzy msgid "Axis:" msgstr "Ose:" -#: share/axis/tcl/axis.tcl:1102 +#: share/axis/tcl/axis.tcl:1172 src/emc/usr_intf/gscreen/gscreen.glade:2944 msgid "Home Axis" msgstr "HOME" -#: share/axis/tcl/axis.tcl:1176 +#: share/axis/tcl/axis.tcl:1246 #, fuzzy msgid "Spindle:" msgstr "Obradni motor +" -#: share/axis/tcl/axis.tcl:1223 src/emc/usr_intf/touchy/touchy.glade:946 +#: share/axis/tcl/axis.tcl:1293 src/emc/usr_intf/touchy/touchy.glade:946 +#: src/emc/usr_intf/stepconf/main_page.glade:406 +#: src/emc/usr_intf/gscreen/gscreen.glade:4067 msgid "-" msgstr "-" -#: share/axis/tcl/axis.tcl:1237 +#: share/axis/tcl/axis.tcl:1307 src/emc/usr_intf/stepconf/main_page.glade:403 +#: src/emc/usr_intf/gscreen/gscreen.glade:4056 msgid "+" msgstr "+" -#: share/axis/tcl/axis.tcl:1242 +#: share/axis/tcl/axis.tcl:1312 #, fuzzy msgid "Brake" msgstr "Kocnica" -#: share/axis/tcl/axis.tcl:1289 +#: share/axis/tcl/axis.tcl:1359 msgid "Coolant:" msgstr "Hladjenje:" -#: share/axis/tcl/axis.tcl:1294 +#: share/axis/tcl/axis.tcl:1364 #, fuzzy msgid "Mist" msgstr "Kompr.vazduh" -#: share/axis/tcl/axis.tcl:1299 +#: share/axis/tcl/axis.tcl:1369 #, fuzzy msgid "Flood" msgstr "Emulzija" -#: share/axis/tcl/axis.tcl:1371 +#: share/axis/tcl/axis.tcl:1441 msgid "History:" msgstr "Istorija:" -#: share/axis/tcl/axis.tcl:1394 +#: share/axis/tcl/axis.tcl:1464 #, fuzzy msgid "MDI Command:" msgstr "zadata" -#: share/axis/tcl/axis.tcl:1403 +#: share/axis/tcl/axis.tcl:1473 msgid "Go" msgstr "Idi" -#: share/axis/tcl/axis.tcl:1409 +#: share/axis/tcl/axis.tcl:1479 #, fuzzy msgid "Active G-Codes:" msgstr "Aktivni G-kod:" -#: share/axis/tcl/axis.tcl:1487 +#: share/axis/tcl/axis.tcl:1557 src/emc/usr_intf/gmoccapy/gmoccapy.glade:771 #, fuzzy msgid "Preview" msgstr "Bocni pogled" -#: share/axis/tcl/axis.tcl:1488 +#: share/axis/tcl/axis.tcl:1558 msgid "DRO" msgstr "" -#: share/axis/tcl/axis.tcl:1575 share/axis/tcl/axis.tcl:1588 +#: share/axis/tcl/axis.tcl:1645 share/axis/tcl/axis.tcl:1658 #, fuzzy msgid "Jog Speed:" msgstr "JOG brzina:" -#: share/axis/tcl/axis.tcl:1600 +#: share/axis/tcl/axis.tcl:1670 #, fuzzy msgid "Max Velocity:" msgstr "Maksinalna _Brzina:" -#: share/axis/tcl/axis.tcl:1629 +#: share/axis/tcl/axis.tcl:1699 #, fuzzy msgid "Spindle Override:" msgstr "Prekoracenje brzine obr.motora:" -#: share/axis/tcl/axis.tcl:1631 share/axis/tcl/axis.tcl:1671 -#: src/emc/usr_intf/pncconf/pncconf.glade:3141 -#: src/emc/usr_intf/pncconf/pncconf.glade:3154 -#: src/emc/usr_intf/pncconf/pncconf.glade:3167 -#: src/emc/usr_intf/pncconf/pncconf.glade:3180 -#: src/emc/usr_intf/pncconf/pncconf.glade:3193 -#: src/emc/usr_intf/pncconf/pncconf.glade:3206 -#: src/emc/usr_intf/pncconf/pncconf.glade:3219 -#: src/emc/usr_intf/pncconf/pncconf.glade:3232 -#: src/emc/usr_intf/pncconf/pncconf.glade:3345 -#: src/emc/usr_intf/pncconf/pncconf.glade:3358 -#: src/emc/usr_intf/pncconf/pncconf.glade:3371 -#: src/emc/usr_intf/pncconf/pncconf.glade:3384 -#: src/emc/usr_intf/pncconf/pncconf.glade:3397 -#: src/emc/usr_intf/pncconf/pncconf.glade:3410 -#: src/emc/usr_intf/pncconf/pncconf.glade:3516 -#: src/emc/usr_intf/pncconf/pncconf.glade:3527 -#: src/emc/usr_intf/pncconf/pncconf.glade:4022 -#: src/emc/usr_intf/pncconf/pncconf.glade:4035 -#: src/emc/usr_intf/pncconf/pncconf.glade:4048 -#: src/emc/usr_intf/pncconf/pncconf.glade:4061 -#: src/emc/usr_intf/pncconf/pncconf.glade:4074 -#: src/emc/usr_intf/pncconf/pncconf.glade:4087 -#: src/emc/usr_intf/pncconf/pncconf.glade:4100 -#: src/emc/usr_intf/pncconf/pncconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:4226 -#: src/emc/usr_intf/pncconf/pncconf.glade:4239 -#: src/emc/usr_intf/pncconf/pncconf.glade:4252 -#: src/emc/usr_intf/pncconf/pncconf.glade:4265 -#: src/emc/usr_intf/pncconf/pncconf.glade:4278 -#: src/emc/usr_intf/pncconf/pncconf.glade:4291 -#: src/emc/usr_intf/pncconf/pncconf.glade:4397 -#: src/emc/usr_intf/pncconf/pncconf.glade:4408 -#: src/emc/usr_intf/pncconf/pncconf.glade:4903 -#: src/emc/usr_intf/pncconf/pncconf.glade:4916 -#: src/emc/usr_intf/pncconf/pncconf.glade:4929 -#: src/emc/usr_intf/pncconf/pncconf.glade:4942 -#: src/emc/usr_intf/pncconf/pncconf.glade:4955 -#: src/emc/usr_intf/pncconf/pncconf.glade:4968 -#: src/emc/usr_intf/pncconf/pncconf.glade:4981 -#: src/emc/usr_intf/pncconf/pncconf.glade:4994 -#: src/emc/usr_intf/pncconf/pncconf.glade:5107 -#: src/emc/usr_intf/pncconf/pncconf.glade:5120 -#: src/emc/usr_intf/pncconf/pncconf.glade:5133 -#: src/emc/usr_intf/pncconf/pncconf.glade:5146 -#: src/emc/usr_intf/pncconf/pncconf.glade:5159 -#: src/emc/usr_intf/pncconf/pncconf.glade:5172 -#: src/emc/usr_intf/pncconf/pncconf.glade:5278 -#: src/emc/usr_intf/pncconf/pncconf.glade:5289 -#: src/emc/usr_intf/pncconf/pncconf.glade:5582 +#: share/axis/tcl/axis.tcl:1701 share/axis/tcl/axis.tcl:1741 +#: share/axis/tcl/axis.tcl:1779 src/emc/usr_intf/pncconf/pncconf.glade:2834 +#: src/emc/usr_intf/pncconf/pncconf.glade:2845 +#: src/emc/usr_intf/pncconf/pncconf.glade:2949 +#: src/emc/usr_intf/pncconf/pncconf.glade:2962 +#: src/emc/usr_intf/pncconf/pncconf.glade:2975 +#: src/emc/usr_intf/pncconf/pncconf.glade:2988 +#: src/emc/usr_intf/pncconf/pncconf.glade:3001 +#: src/emc/usr_intf/pncconf/pncconf.glade:3014 +#: src/emc/usr_intf/pncconf/pncconf.glade:3127 +#: src/emc/usr_intf/pncconf/pncconf.glade:3140 +#: src/emc/usr_intf/pncconf/pncconf.glade:3153 +#: src/emc/usr_intf/pncconf/pncconf.glade:3166 +#: src/emc/usr_intf/pncconf/pncconf.glade:3179 +#: src/emc/usr_intf/pncconf/pncconf.glade:3192 +#: src/emc/usr_intf/pncconf/pncconf.glade:3205 +#: src/emc/usr_intf/pncconf/pncconf.glade:3218 +#: src/emc/usr_intf/pncconf/pncconf.glade:3715 +#: src/emc/usr_intf/pncconf/pncconf.glade:3726 +#: src/emc/usr_intf/pncconf/pncconf.glade:3830 +#: src/emc/usr_intf/pncconf/pncconf.glade:3843 +#: src/emc/usr_intf/pncconf/pncconf.glade:3856 +#: src/emc/usr_intf/pncconf/pncconf.glade:3869 +#: src/emc/usr_intf/pncconf/pncconf.glade:3882 +#: src/emc/usr_intf/pncconf/pncconf.glade:3895 +#: src/emc/usr_intf/pncconf/pncconf.glade:4008 +#: src/emc/usr_intf/pncconf/pncconf.glade:4021 +#: src/emc/usr_intf/pncconf/pncconf.glade:4034 +#: src/emc/usr_intf/pncconf/pncconf.glade:4047 +#: src/emc/usr_intf/pncconf/pncconf.glade:4060 +#: src/emc/usr_intf/pncconf/pncconf.glade:4073 +#: src/emc/usr_intf/pncconf/pncconf.glade:4086 +#: src/emc/usr_intf/pncconf/pncconf.glade:4099 +#: src/emc/usr_intf/pncconf/pncconf.glade:4596 +#: src/emc/usr_intf/pncconf/pncconf.glade:4607 +#: src/emc/usr_intf/pncconf/pncconf.glade:4711 +#: src/emc/usr_intf/pncconf/pncconf.glade:4724 +#: src/emc/usr_intf/pncconf/pncconf.glade:4737 +#: src/emc/usr_intf/pncconf/pncconf.glade:4750 +#: src/emc/usr_intf/pncconf/pncconf.glade:4763 +#: src/emc/usr_intf/pncconf/pncconf.glade:4776 +#: src/emc/usr_intf/pncconf/pncconf.glade:4889 +#: src/emc/usr_intf/pncconf/pncconf.glade:4902 +#: src/emc/usr_intf/pncconf/pncconf.glade:4915 +#: src/emc/usr_intf/pncconf/pncconf.glade:4928 +#: src/emc/usr_intf/pncconf/pncconf.glade:4941 +#: src/emc/usr_intf/pncconf/pncconf.glade:4954 +#: src/emc/usr_intf/pncconf/pncconf.glade:4967 +#: src/emc/usr_intf/pncconf/pncconf.glade:4980 #: src/emc/usr_intf/pncconf/pncconf.glade:5631 -#: src/emc/usr_intf/pncconf/pncconf.glade:5641 +#: src/emc/usr_intf/pncconf/pncconf.glade:5643 +#: src/emc/usr_intf/pncconf/pncconf.glade:5690 msgid "%" msgstr "%" -#: share/axis/tcl/axis.tcl:1711 +#: share/axis/tcl/axis.tcl:1777 +#, fuzzy +msgid "Rapid Override:" +msgstr "Prekoracenje brzine obr.motora:" + +#: share/axis/tcl/axis.tcl:1819 #, fuzzy msgid "" -"LinuxCNC/AXIS version $version\n" +"Machinekit/AXIS version $version\n" "\n" -"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff Epler and Chris " -"Radek.\n" +"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff " +"Epler and Chris Radek.\n" "\n" "This is free software, and you are welcome to redistribute it under certain " -"conditions. See the file COPYING, included with LinuxCNC.\n" +"conditions. See the file COPYING, included with Machinekit.\n" "\n" -"Visit the LinuxCNC web site: " +"Visit the Machinekit web site: " msgstr "" "LinuxCNC/AXIS Verzija $version\n" "\n" -"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff Epler i Chris Radek.\n" +"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff " +"Epler i Chris Radek.\n" "\n" "Koriscenje ovog programa je besplatno pod odredjenim uslovima. Za blize " -"informacije pogledajte datoteku COPYNG koja je sastavni deo programa LinuxCNC." -"Posetite LinuxCNC web prezentaciju\n" +"informacije pogledajte datoteku COPYNG koja je sastavni deo programa " +"LinuxCNC.Posetite LinuxCNC web prezentaciju\n" "Besuchen Sie die LinuxCNC-Webseite: " -#: share/axis/tcl/axis.tcl:1739 +#: share/axis/tcl/axis.tcl:1847 #, fuzzy msgid "About AXIS" msgstr "_O programu..." -#: share/axis/tcl/axis.tcl:1768 +#: share/axis/tcl/axis.tcl:1876 msgid "AXIS Quick Reference" msgstr "AXIS kratko uputstvo" -#: share/axis/tcl/axis.tcl:1903 -msgid "AXIS $::version on $::machine" +#: share/axis/tcl/axis.tcl:2017 +msgid "AXIS with MachineKit $::version on $::machine" msgstr "" -#: share/axis/tcl/axis.tcl:1905 +#: share/axis/tcl/axis.tcl:2019 #, fuzzy msgid "(no file)" msgstr "AXIS (nema datoteke)" -#: share/axis/tcl/axis.tcl:1976 share/axis/tcl/axis.tcl:1981 +#: share/axis/tcl/axis.tcl:2091 share/axis/tcl/axis.tcl:2096 #, fuzzy msgid "Position:" msgstr "Pozicija:" -#: share/axis/tcl/axis.tcl:1978 +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/gscreen/gscreen.py:3516 #, fuzzy msgid "Machine" msgstr "apsolutna" -#: share/axis/tcl/axis.tcl:1978 src/emc/usr_intf/touchy/touchy.glade:155 +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/touchy/touchy.glade:155 #, fuzzy msgid "Relative" msgstr "relativna" -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3329 +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3329 #, fuzzy msgid "Actual" msgstr "trenutna" -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3318 +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3318 #, fuzzy msgid "Commanded" msgstr "zadata" -#: share/axis/tcl/axis.tcl:2032 share/axis/tcl/axis.tcl:2203 +#: share/axis/tcl/axis.tcl:2154 share/axis/tcl/axis.tcl:2328 #, fuzzy msgid "Joint:" msgstr "Joint rezim" -#: share/axis/tcl/axis.tcl:2338 +#: share/axis/tcl/axis.tcl:2463 msgid "Turn spindle counterclockwise [F10]" msgstr "Smer obradnog motora - [F10]" -#: share/axis/tcl/axis.tcl:2339 +#: share/axis/tcl/axis.tcl:2464 msgid "Turn spindle clockwise [F9]" msgstr "Smer obradnog motora + [F9]" -#: share/axis/tcl/axis.tcl:2340 +#: share/axis/tcl/axis.tcl:2465 msgid "Stop spindle [F9/F10]" msgstr "Zaustavi obradni motor [F9/F10]" -#: share/axis/tcl/axis.tcl:2341 +#: share/axis/tcl/axis.tcl:2466 msgid "Turn spindle Faster [F12]" msgstr "Ubrzaj obradni motor [F12]" -#: share/axis/tcl/axis.tcl:2342 +#: share/axis/tcl/axis.tcl:2467 msgid "Turn spindle Slower [F11]" msgstr "Uspori obradni motor [F12]" -#: share/axis/tcl/axis.tcl:2343 +#: share/axis/tcl/axis.tcl:2468 msgid "Turn spindle brake on [Shift-B] or off [B]" msgstr "Ukljuci kocnicu [Shift-B] iskljuci kocnicu [B]" -#: share/axis/tcl/axis.tcl:2344 +#: share/axis/tcl/axis.tcl:2469 msgid "Turn flood on or off [F8]" msgstr "Emulzja uklj./isklj. [F8]" -#: share/axis/tcl/axis.tcl:2345 +#: share/axis/tcl/axis.tcl:2470 msgid "Turn mist on or off [F7]" msgstr "Komp.vazdug uklj./isklj. [F7]" -#: share/axis/tcl/axis.tcl:2346 +#: share/axis/tcl/axis.tcl:2471 msgid "Send active axis home [Home]" msgstr "Aktivna osa HOME [Home]" -#: share/axis/tcl/axis.tcl:2347 +#: share/axis/tcl/axis.tcl:2472 msgid "Set G54 offset for active axis [End]" msgstr "Postavi G54 za aktivne ose [End]" -#: share/axis/tcl/axis.tcl:2348 +#: share/axis/tcl/axis.tcl:2473 msgid "Activate axis [X]" msgstr "Aktiviraj osu [X]" -#: share/axis/tcl/axis.tcl:2349 +#: share/axis/tcl/axis.tcl:2474 msgid "Activate axis [Y]" msgstr "Aktiviraj osu [Y]" -#: share/axis/tcl/axis.tcl:2350 +#: share/axis/tcl/axis.tcl:2475 msgid "Activate axis [Z]" msgstr "Aktiviraj osu [Z]" -#: share/axis/tcl/axis.tcl:2351 +#: share/axis/tcl/axis.tcl:2476 msgid "Activate axis [A]" msgstr "Aktiviraj osu [A]" -#: share/axis/tcl/axis.tcl:2352 +#: share/axis/tcl/axis.tcl:2477 msgid "Activate axis [4]" msgstr "Aktiviraj osu [4]" -#: share/axis/tcl/axis.tcl:2353 +#: share/axis/tcl/axis.tcl:2478 msgid "Activate axis [5]" msgstr "Aktiviraj osu [5]" -#: share/axis/tcl/axis.tcl:2354 share/axis/tcl/axis.tcl:2355 +#: share/axis/tcl/axis.tcl:2479 share/axis/tcl/axis.tcl:2480 msgid "Jog selected axis" msgstr "JOG izabrane ose" -#: share/axis/tcl/axis.tcl:2357 +#: share/axis/tcl/axis.tcl:2482 msgid "Temporarily allow jogging outside machine limits [L]" msgstr "Privremeno omoguci JOG van granica masine [L]" -#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 +#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:47 msgid "Spindle CW" msgstr "Obradni motor +" -#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 +#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:48 msgid "Spindle CCW" msgstr "Obradni motor -" #: src/emc/usr_intf/touchy/mdi.py:50 #, fuzzy +msgid "Set tool number" +msgstr "_Nastavi" + +#: src/emc/usr_intf/touchy/mdi.py:51 src/emc/usr_intf/gscreen/mdi.py:50 +#, fuzzy msgid "Input control" msgstr "Manualna kontrola" -#: src/emc/usr_intf/touchy/mdi.py:53 src/emc/usr_intf/touchy/mdi.py:54 +#: src/emc/usr_intf/touchy/mdi.py:54 src/emc/usr_intf/touchy/mdi.py:55 +#: src/emc/usr_intf/gscreen/mdi.py:53 src/emc/usr_intf/gscreen/mdi.py:54 msgid "Straight rapid" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:55 src/emc/usr_intf/touchy/mdi.py:56 +#: src/emc/usr_intf/touchy/mdi.py:56 src/emc/usr_intf/touchy/mdi.py:57 +#: src/emc/usr_intf/gscreen/mdi.py:55 src/emc/usr_intf/gscreen/mdi.py:56 msgid "Straight feed" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:57 src/emc/usr_intf/touchy/mdi.py:58 +#: src/emc/usr_intf/touchy/mdi.py:58 src/emc/usr_intf/touchy/mdi.py:59 +#: src/emc/usr_intf/gscreen/mdi.py:57 src/emc/usr_intf/gscreen/mdi.py:58 msgid "Arc CW" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:59 src/emc/usr_intf/touchy/mdi.py:60 +#: src/emc/usr_intf/touchy/mdi.py:60 src/emc/usr_intf/touchy/mdi.py:61 +#: src/emc/usr_intf/gscreen/mdi.py:59 src/emc/usr_intf/gscreen/mdi.py:60 msgid "Arc CCW" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:61 src/emc/usr_intf/touchy/mdi.py:62 +#: src/emc/usr_intf/touchy/mdi.py:62 src/emc/usr_intf/touchy/mdi.py:63 +#: src/emc/usr_intf/gscreen/mdi.py:61 src/emc/usr_intf/gscreen/mdi.py:62 msgid "Dwell" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:63 +#: src/emc/usr_intf/touchy/mdi.py:64 src/emc/usr_intf/gscreen/mdi.py:63 #, fuzzy msgid "Setup" msgstr "EM_C-Status..." -#: src/emc/usr_intf/touchy/mdi.py:64 +#: src/emc/usr_intf/touchy/mdi.py:65 src/emc/usr_intf/gscreen/mdi.py:64 #, fuzzy msgid "Spindle synchronized feed" msgstr "Prekoracenje brzine obr.motora:" -#: src/emc/usr_intf/touchy/mdi.py:65 +#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:65 msgid "Rigid tap" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/touchy/mdi.py:67 -#: src/emc/usr_intf/touchy/mdi.py:68 src/emc/usr_intf/touchy/mdi.py:69 +#: src/emc/usr_intf/touchy/mdi.py:67 src/emc/usr_intf/touchy/mdi.py:68 +#: src/emc/usr_intf/touchy/mdi.py:69 src/emc/usr_intf/touchy/mdi.py:70 +#: src/emc/usr_intf/gscreen/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:67 +#: src/emc/usr_intf/gscreen/mdi.py:68 src/emc/usr_intf/gscreen/mdi.py:69 #, fuzzy msgid "Probe" msgstr "Sonda" -#: src/emc/usr_intf/touchy/mdi.py:70 +#: src/emc/usr_intf/touchy/mdi.py:71 src/emc/usr_intf/gscreen/mdi.py:70 msgid "Radius compensation left" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:71 +#: src/emc/usr_intf/touchy/mdi.py:72 src/emc/usr_intf/gscreen/mdi.py:71 msgid "Radius compensation right" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:72 +#: src/emc/usr_intf/touchy/mdi.py:73 src/emc/usr_intf/gscreen/mdi.py:72 msgid "Radius compensation left, immediate" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:73 +#: src/emc/usr_intf/touchy/mdi.py:74 src/emc/usr_intf/gscreen/mdi.py:73 msgid "Radius compensation right, immediate" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:74 +#: src/emc/usr_intf/touchy/mdi.py:75 src/emc/usr_intf/gscreen/mdi.py:74 msgid "Tool length offset" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:75 +#: src/emc/usr_intf/touchy/mdi.py:76 src/emc/usr_intf/gscreen/mdi.py:75 msgid "Tool length offset immediate" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:76 +#: src/emc/usr_intf/touchy/mdi.py:77 src/emc/usr_intf/gscreen/mdi.py:76 msgid "Motion in unoffset coordinates" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:77 +#: src/emc/usr_intf/touchy/mdi.py:78 src/emc/usr_intf/gscreen/mdi.py:77 #, fuzzy msgid "Continuous mode" msgstr "Kontinualni JOG" -#: src/emc/usr_intf/touchy/mdi.py:79 +#: src/emc/usr_intf/touchy/mdi.py:80 src/emc/usr_intf/gscreen/mdi.py:79 msgid "Drill" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:80 +#: src/emc/usr_intf/touchy/mdi.py:81 src/emc/usr_intf/gscreen/mdi.py:80 msgid "Drill with dwell" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:81 +#: src/emc/usr_intf/touchy/mdi.py:82 src/emc/usr_intf/gscreen/mdi.py:81 msgid "Peck drill" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:82 +#: src/emc/usr_intf/touchy/mdi.py:83 src/emc/usr_intf/gscreen/mdi.py:82 msgid "Chip-break drill" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:83 +#: src/emc/usr_intf/touchy/mdi.py:84 src/emc/usr_intf/gscreen/mdi.py:83 msgid "Bore" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:84 +#: src/emc/usr_intf/touchy/mdi.py:85 src/emc/usr_intf/gscreen/mdi.py:84 msgid "Bore with dwell" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:85 +#: src/emc/usr_intf/touchy/mdi.py:86 src/emc/usr_intf/gscreen/mdi.py:85 #, fuzzy msgid "Offset all coordinate systems" msgstr "_Nuliraj koord. sistem" -#: src/emc/usr_intf/touchy/mdi.py:86 +#: src/emc/usr_intf/touchy/mdi.py:87 src/emc/usr_intf/gscreen/mdi.py:86 msgid "CSS Mode" msgstr "" @@ -5149,7 +7215,7 @@ msgstr "" msgid "LinuxCNC/Touchy" msgstr "" -#. # Touchy is Copyright (c) 2009 Chris Radek # # Touchy 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 2 of the License, or # (at your option) any later version. # # Touchy 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. +#. # Touchy is Copyright (c) 2009 Chris Radek # # Touchy 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 2 of the License, or # (at your option) any later version. # # Touchy 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. #: src/emc/usr_intf/touchy/touchy.glade:11 msgid "window1" msgstr "" @@ -5187,11 +7253,20 @@ msgid "zd" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:131 +#: src/emc/usr_intf/gscreen/gscreen.glade:85 +#: src/emc/usr_intf/gscreen/gscreen.glade:213 +#: src/emc/usr_intf/gscreen/gscreen.glade:343 +#: src/emc/usr_intf/gscreen/gscreen.glade:471 +#: src/emc/usr_intf/gscreen/gscreen.glade:599 +#: src/emc/usr_intf/gscreen/gscreen.glade:727 +#: src/emc/usr_intf/gscreen/gscreen.glade:855 +#: src/emc/usr_intf/gscreen/gscreen.glade:983 +#: src/emc/usr_intf/gscreen/gscreen.glade:1111 msgid "DTG" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:143 -#: src/emc/usr_intf/pncconf/pncconf.glade:59755 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Absolute" msgstr "" @@ -5278,6 +7353,9 @@ msgid "Estop Reset" msgstr "_Nastavi" #: src/emc/usr_intf/touchy/touchy.glade:459 +#: src/emc/usr_intf/stepconf/pport1.glade:21 +#: src/emc/usr_intf/stepconf/pport2.glade:1409 +#: src/emc/usr_intf/gscreen/gscreen.glade:2442 #, fuzzy msgid "Estop" msgstr "_Zaustavi" @@ -5331,47 +7409,7 @@ msgid "." msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:963 -#: src/emc/usr_intf/pncconf/pncconf.glade:60883 -#: src/emc/usr_intf/pncconf/pncconf.glade:60895 -#: src/emc/usr_intf/pncconf/pncconf.glade:61017 -#: src/emc/usr_intf/pncconf/pncconf.glade:61029 -#: src/emc/usr_intf/pncconf/pncconf.glade:61041 -#: src/emc/usr_intf/pncconf/pncconf.glade:61053 -#: src/emc/usr_intf/pncconf/pncconf.glade:61065 -#: src/emc/usr_intf/pncconf/pncconf.glade:61077 -#: src/emc/usr_intf/pncconf/pncconf.glade:62040 -#: src/emc/usr_intf/pncconf/pncconf.glade:62052 -#: src/emc/usr_intf/pncconf/pncconf.glade:62064 -#: src/emc/usr_intf/pncconf/pncconf.glade:62076 -#: src/emc/usr_intf/pncconf/pncconf.glade:62088 -#: src/emc/usr_intf/pncconf/pncconf.glade:62100 -#: src/emc/usr_intf/pncconf/pncconf.glade:62222 -#: src/emc/usr_intf/pncconf/pncconf.glade:62234 -#: src/emc/usr_intf/pncconf/pncconf.glade:63069 -#: src/emc/usr_intf/pncconf/pncconf.glade:63081 -#: src/emc/usr_intf/pncconf/pncconf.glade:63203 -#: src/emc/usr_intf/pncconf/pncconf.glade:63215 -#: src/emc/usr_intf/pncconf/pncconf.glade:63227 -#: src/emc/usr_intf/pncconf/pncconf.glade:63239 -#: src/emc/usr_intf/pncconf/pncconf.glade:63251 -#: src/emc/usr_intf/pncconf/pncconf.glade:63263 -#: src/emc/usr_intf/pncconf/pncconf.glade:64226 -#: src/emc/usr_intf/pncconf/pncconf.glade:64238 -#: src/emc/usr_intf/pncconf/pncconf.glade:64250 -#: src/emc/usr_intf/pncconf/pncconf.glade:64262 -#: src/emc/usr_intf/pncconf/pncconf.glade:64274 -#: src/emc/usr_intf/pncconf/pncconf.glade:64286 -#: src/emc/usr_intf/pncconf/pncconf.glade:64408 -#: src/emc/usr_intf/pncconf/pncconf.glade:64420 -#: src/emc/usr_intf/pncconf/pncconf.glade:65231 -#: src/emc/usr_intf/pncconf/pncconf.glade:65243 -#: src/emc/usr_intf/pncconf/pncconf.glade:65359 -#: src/emc/usr_intf/pncconf/pncconf.glade:65371 -#: src/emc/usr_intf/pncconf/pncconf.glade:65383 -#: src/emc/usr_intf/pncconf/pncconf.glade:65395 -#: src/emc/usr_intf/pncconf/pncconf.glade:65407 -#: src/emc/usr_intf/pncconf/pncconf.glade:65419 -#: src/emc/usr_intf/pncconf/pncconf.glade:67091 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "0" msgstr "" @@ -5453,6 +7491,7 @@ msgid "label26" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:1539 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4226 #, fuzzy msgid "Spindle" msgstr "Index. sig. enkodera obr.mot." @@ -5502,12 +7541,8 @@ msgid "Distance:" msgstr "Radna duzina:" #: src/emc/usr_intf/touchy/touchy.glade:2526 -#: src/emc/usr_intf/stepconf/stepconf.glade:4148 -#: src/emc/usr_intf/pncconf/pncconf.glade:60476 -#: src/emc/usr_intf/pncconf/pncconf.glade:61571 -#: src/emc/usr_intf/pncconf/pncconf.glade:62664 -#: src/emc/usr_intf/pncconf/pncconf.glade:63757 -#: src/emc/usr_intf/pncconf/pncconf.glade:64856 +#: src/emc/usr_intf/stepconf/main_page.glade:23 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Velocity:" msgstr "Brzina:" @@ -5630,6 +7665,7 @@ msgid "" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:3009 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6414 msgid "Status" msgstr "" @@ -5689,6 +7725,8 @@ msgid "Display Options" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:3286 +#: src/emc/usr_intf/stepconf/base.glade:867 +#: src/emc/usr_intf/gscreen/gscreen.glade:3664 msgid "Inch" msgstr "" @@ -5732,14 +7770,17 @@ msgid "Program Options" msgstr "Homin_g" #: src/emc/usr_intf/touchy/touchy.glade:3531 +#: src/emc/usr_intf/gscreen/gscreen.glade:2200 msgid "Preferences" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:3567 +#: src/emc/usr_intf/gscreen/gscreen.glade:1425 msgid "FO: 100%" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:3582 +#: src/emc/usr_intf/gscreen/gscreen.glade:1437 msgid "SO: 100%" msgstr "" @@ -5751,424 +7792,562 @@ msgstr "" msgid "Jogging" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3637 +#: src/emc/usr_intf/touchy/touchy.glade:3624 +msgid "Start Point" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:3651 msgid ".01" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3650 +#: src/emc/usr_intf/touchy/touchy.glade:3664 msgid ".001" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3666 +#: src/emc/usr_intf/touchy/touchy.glade:3680 msgid ".0001" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3694 +#: src/emc/usr_intf/touchy/touchy.glade:3708 msgid " X " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3706 +#: src/emc/usr_intf/touchy/touchy.glade:3720 msgid " Y " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3721 +#: src/emc/usr_intf/touchy/touchy.glade:3735 msgid " Z " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3736 +#: src/emc/usr_intf/touchy/touchy.glade:3750 msgid " A " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3752 +#: src/emc/usr_intf/touchy/touchy.glade:3766 msgid " B " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3770 +#: src/emc/usr_intf/touchy/touchy.glade:3784 msgid " C " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3788 +#: src/emc/usr_intf/touchy/touchy.glade:3802 msgid " U " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3804 +#: src/emc/usr_intf/touchy/touchy.glade:3818 msgid " V " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3822 +#: src/emc/usr_intf/touchy/touchy.glade:3836 msgid " W " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3855 +#: src/emc/usr_intf/touchy/touchy.glade:3869 #, fuzzy msgid "Handwheel" msgstr "Homin_g" -#: src/emc/usr_intf/stepconf/stepconf.py:53 +#: src/emc/usr_intf/stepconf/stepconf.py:57 msgid "" "Stepconf encountered an error. The following information may be useful in " "troubleshooting:\n" "\n" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:70 -#: src/emc/usr_intf/pncconf/pncconf.py:133 +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#, fuzzy +msgid "Stepconf" +msgstr "_Korak po korak" + +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#: src/emc/usr_intf/stepconf/stepconf.py:217 +#: src/emc/usr_intf/stepconf/main_page.glade:557 +#: src/emc/usr_intf/gscreen/gscreen.py:3414 +#: src/emc/usr_intf/gscreen/gscreen.py:3415 +#: src/emc/usr_intf/gscreen/gscreen.glade:4043 +msgid "Start" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Base Information" +msgstr "Osnovne informacije o masini" + +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Parallel Port 1" +msgstr "Podesavanje paralelnog porta" + +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Parallel Port 2" +msgstr "Podesavanje paralelnog porta" + +#: src/emc/usr_intf/stepconf/stepconf.py:130 +#, fuzzy +msgid "Options" +msgstr "Pozicija:" + +#: src/emc/usr_intf/stepconf/stepconf.py:130 +#, fuzzy +msgid "Axis X" +msgstr "Ose:" + +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis Y" +msgstr "Ose:" + +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis Z" +msgstr "Ose:" + +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis A" +msgstr "Ose:" + +#: src/emc/usr_intf/stepconf/stepconf.py:132 +#: src/emc/usr_intf/pncconf/pncconf.py:378 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#, fuzzy +msgid "Spindle" +msgstr "Obradni motor +" + +#: src/emc/usr_intf/stepconf/stepconf.py:132 +msgid "Almost Done" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:136 +#: src/emc/usr_intf/pncconf/pncconf.py:135 msgid "Gecko 201" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:71 -#: src/emc/usr_intf/pncconf/pncconf.py:134 +#: src/emc/usr_intf/stepconf/stepconf.py:137 +#: src/emc/usr_intf/pncconf/pncconf.py:136 msgid "Gecko 202" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:72 -#: src/emc/usr_intf/pncconf/pncconf.py:135 +#: src/emc/usr_intf/stepconf/stepconf.py:138 +#: src/emc/usr_intf/pncconf/pncconf.py:137 msgid "Gecko 203v" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:73 -#: src/emc/usr_intf/pncconf/pncconf.py:136 +#: src/emc/usr_intf/stepconf/stepconf.py:139 +#: src/emc/usr_intf/pncconf/pncconf.py:138 msgid "Gecko 210" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:74 -#: src/emc/usr_intf/pncconf/pncconf.py:137 +#: src/emc/usr_intf/stepconf/stepconf.py:140 +#: src/emc/usr_intf/pncconf/pncconf.py:139 msgid "Gecko 212" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:75 -#: src/emc/usr_intf/pncconf/pncconf.py:138 +#: src/emc/usr_intf/stepconf/stepconf.py:141 +#: src/emc/usr_intf/pncconf/pncconf.py:140 msgid "Gecko 320" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:76 -#: src/emc/usr_intf/pncconf/pncconf.py:139 +#: src/emc/usr_intf/stepconf/stepconf.py:142 +#: src/emc/usr_intf/pncconf/pncconf.py:141 msgid "Gecko 540" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:77 -#: src/emc/usr_intf/pncconf/pncconf.py:140 +#: src/emc/usr_intf/stepconf/stepconf.py:143 +#: src/emc/usr_intf/pncconf/pncconf.py:142 msgid "L297" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:78 -#: src/emc/usr_intf/pncconf/pncconf.py:141 +#: src/emc/usr_intf/stepconf/stepconf.py:144 +#: src/emc/usr_intf/pncconf/pncconf.py:143 msgid "PMDX-150" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:79 -#: src/emc/usr_intf/pncconf/pncconf.py:142 +#: src/emc/usr_intf/stepconf/stepconf.py:145 +#: src/emc/usr_intf/stepconf/pport1.glade:32 +#: src/emc/usr_intf/pncconf/pncconf.py:144 #, fuzzy msgid "Sherline" msgstr "_Sherline" -#: src/emc/usr_intf/stepconf/stepconf.py:80 -#: src/emc/usr_intf/pncconf/pncconf.py:143 +#: src/emc/usr_intf/stepconf/stepconf.py:146 +#: src/emc/usr_intf/pncconf/pncconf.py:145 msgid "Xylotex 8S-3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:81 -#: src/emc/usr_intf/pncconf/pncconf.py:144 +#: src/emc/usr_intf/stepconf/stepconf.py:147 +#: src/emc/usr_intf/pncconf/pncconf.py:146 msgid "Parker-Compumotor oem750" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:82 -#: src/emc/usr_intf/pncconf/pncconf.py:145 +#: src/emc/usr_intf/stepconf/stepconf.py:148 +#: src/emc/usr_intf/pncconf/pncconf.py:147 msgid "JVL-SMD41 or 42" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:83 -#: src/emc/usr_intf/pncconf/pncconf.py:146 +#: src/emc/usr_intf/stepconf/stepconf.py:149 +#: src/emc/usr_intf/pncconf/pncconf.py:148 msgid "Hobbycnc Pro Chopper" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:84 -#: src/emc/usr_intf/pncconf/pncconf.py:147 -msgid "Keling 4030" +#: src/emc/usr_intf/stepconf/stepconf.py:150 +msgid "Kelling 4030" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:151 +msgid "Leadshine Series" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:153 +#: src/emc/usr_intf/stepconf/stepconf.py:190 msgid "X Step" msgstr "X korak" -#: src/emc/usr_intf/stepconf/stepconf.py:153 +#: src/emc/usr_intf/stepconf/stepconf.py:190 msgid "X Direction" msgstr "X smer" -#: src/emc/usr_intf/stepconf/stepconf.py:153 +#: src/emc/usr_intf/stepconf/stepconf.py:190 msgid "Y Step" msgstr "Y korak" -#: src/emc/usr_intf/stepconf/stepconf.py:153 +#: src/emc/usr_intf/stepconf/stepconf.py:190 msgid "Y Direction" msgstr "Y smer" -#: src/emc/usr_intf/stepconf/stepconf.py:154 +#: src/emc/usr_intf/stepconf/stepconf.py:191 msgid "Z Step" msgstr "Z korak" -#: src/emc/usr_intf/stepconf/stepconf.py:154 +#: src/emc/usr_intf/stepconf/stepconf.py:191 msgid "Z Direction" msgstr "Z smer" -#: src/emc/usr_intf/stepconf/stepconf.py:154 +#: src/emc/usr_intf/stepconf/stepconf.py:191 msgid "A Step" msgstr "A korak" -#: src/emc/usr_intf/stepconf/stepconf.py:154 +#: src/emc/usr_intf/stepconf/stepconf.py:191 msgid "A Direction" msgstr "A smer" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 #, fuzzy msgid "Spindle ON" msgstr "Obradni motor +" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:557 +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:488 msgid "Spindle PWM" msgstr "Obradni motor PWM" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 #, fuzzy msgid "Spindle Brake" msgstr "Kocnica obr.mot.uklj." -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 msgid "Coolant Mist" msgstr "Hladjenje Komp.vazduh" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 msgid "Coolant Flood" msgstr "Hladjenje Emulzija" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:370 msgid "ESTOP Out" msgstr "E-STOP Out" -#: src/emc/usr_intf/stepconf/stepconf.py:156 +#: src/emc/usr_intf/stepconf/stepconf.py:193 msgid "Amplifier Enable" msgstr "Pojacavac ukljucen" -#: src/emc/usr_intf/stepconf/stepconf.py:157 -#: src/emc/usr_intf/pncconf/pncconf.py:443 +#: src/emc/usr_intf/stepconf/stepconf.py:194 +#: src/emc/usr_intf/pncconf/pncconf.py:371 msgid "Charge Pump" msgstr "Charge Pump" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 msgid "Digital out 0" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 msgid "Digital out 1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 msgid "Digital out 2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 msgid "Digital out 3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:159 -#: src/emc/usr_intf/stepconf/stepconf.py:178 +#: src/emc/usr_intf/stepconf/stepconf.py:196 +#: src/emc/usr_intf/stepconf/stepconf.py:215 +#: src/emc/usr_intf/stepconf/pport1.glade:18 +#: src/emc/usr_intf/stepconf/pport2.glade:1406 +#: src/emc/usr_intf/stepconf/pport2.glade:1420 msgid "Unused" msgstr "Neupotrebljen" -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 msgid "ESTOP In" msgstr "E-STOP in" -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 msgid "Probe In" msgstr "Sonda" -#: src/emc/usr_intf/stepconf/stepconf.py:162 +#: src/emc/usr_intf/stepconf/stepconf.py:199 msgid "Spindle Index" msgstr "Index. sig. enkodera obr.mot." -#: src/emc/usr_intf/stepconf/stepconf.py:162 +#: src/emc/usr_intf/stepconf/stepconf.py:199 msgid "Spindle Phase A" msgstr "Obradni motor faza A" -#: src/emc/usr_intf/stepconf/stepconf.py:162 +#: src/emc/usr_intf/stepconf/stepconf.py:199 msgid "Spindle Phase B" msgstr "Obradni motor faza B" -#: src/emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/stepconf.py:200 msgid "Home X" msgstr "HOME X" -#: src/emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/stepconf.py:200 msgid "Home Y" msgstr "HOME Y" -#: src/emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/stepconf.py:200 msgid "Home Z" msgstr "HOME Z" -#: src/emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/stepconf.py:200 msgid "Home A" msgstr "HOME A" -#: src/emc/usr_intf/stepconf/stepconf.py:164 +#: src/emc/usr_intf/stepconf/stepconf.py:201 msgid "Minimum Limit + Home X" msgstr "Min. granic. + Home. X" -#: src/emc/usr_intf/stepconf/stepconf.py:164 +#: src/emc/usr_intf/stepconf/stepconf.py:201 msgid "Minimum Limit + Home Y" msgstr "Min. granic. + Home. Y" -#: src/emc/usr_intf/stepconf/stepconf.py:165 +#: src/emc/usr_intf/stepconf/stepconf.py:202 msgid "Minimum Limit + Home Z" msgstr "Min. granic. + Home. Z" -#: src/emc/usr_intf/stepconf/stepconf.py:165 +#: src/emc/usr_intf/stepconf/stepconf.py:202 msgid "Minimum Limit + Home A" msgstr "Min. granic. + Ref. A" -#: src/emc/usr_intf/stepconf/stepconf.py:166 +#: src/emc/usr_intf/stepconf/stepconf.py:203 msgid "Maximum Limit + Home X" msgstr "Max. granic. + Ref. X" -#: src/emc/usr_intf/stepconf/stepconf.py:166 +#: src/emc/usr_intf/stepconf/stepconf.py:203 msgid "Maximum Limit + Home Y" msgstr "Max. granic. + Ref. Y" -#: src/emc/usr_intf/stepconf/stepconf.py:167 +#: src/emc/usr_intf/stepconf/stepconf.py:204 msgid "Maximum Limit + Home Z" msgstr "Max. granic. + Ref. Z" -#: src/emc/usr_intf/stepconf/stepconf.py:167 +#: src/emc/usr_intf/stepconf/stepconf.py:204 msgid "Maximum Limit + Home A" msgstr "Max. granic. + Ref. A" -#: src/emc/usr_intf/stepconf/stepconf.py:168 +#: src/emc/usr_intf/stepconf/stepconf.py:205 msgid "Both Limit + Home X" msgstr "Oba. granic. + Ref. X" -#: src/emc/usr_intf/stepconf/stepconf.py:168 +#: src/emc/usr_intf/stepconf/stepconf.py:205 msgid "Both Limit + Home Y" msgstr "Oba granic. + Ref. Y" -#: src/emc/usr_intf/stepconf/stepconf.py:169 +#: src/emc/usr_intf/stepconf/stepconf.py:206 msgid "Both Limit + Home Z" msgstr "Oba granic. + Ref. Z" -#: src/emc/usr_intf/stepconf/stepconf.py:169 +#: src/emc/usr_intf/stepconf/stepconf.py:206 msgid "Both Limit + Home A" msgstr "Oba granic. + Ref. A" -#: src/emc/usr_intf/stepconf/stepconf.py:170 +#: src/emc/usr_intf/stepconf/stepconf.py:207 msgid "Minimum Limit X" msgstr "Minimum granic. X" -#: src/emc/usr_intf/stepconf/stepconf.py:170 +#: src/emc/usr_intf/stepconf/stepconf.py:207 msgid "Minimum Limit Y" msgstr "Minimum granic. Y" -#: src/emc/usr_intf/stepconf/stepconf.py:171 +#: src/emc/usr_intf/stepconf/stepconf.py:208 msgid "Minimum Limit Z" msgstr "Minimum granic. Z" -#: src/emc/usr_intf/stepconf/stepconf.py:171 +#: src/emc/usr_intf/stepconf/stepconf.py:208 msgid "Minimum Limit A" msgstr "Minimum granic. A" -#: src/emc/usr_intf/stepconf/stepconf.py:172 +#: src/emc/usr_intf/stepconf/stepconf.py:209 msgid "Maximum Limit X" msgstr "Maximum granic. X" -#: src/emc/usr_intf/stepconf/stepconf.py:172 +#: src/emc/usr_intf/stepconf/stepconf.py:209 msgid "Maximum Limit Y" msgstr "Maximum granic. Y" -#: src/emc/usr_intf/stepconf/stepconf.py:173 +#: src/emc/usr_intf/stepconf/stepconf.py:210 msgid "Maximum Limit Z" msgstr "Maximum granic. Z" -#: src/emc/usr_intf/stepconf/stepconf.py:173 +#: src/emc/usr_intf/stepconf/stepconf.py:210 msgid "Maximum Limit A" msgstr "Maximum granic. A" -#: src/emc/usr_intf/stepconf/stepconf.py:174 +#: src/emc/usr_intf/stepconf/stepconf.py:211 msgid "Both Limit X" msgstr "Oba granic. X" -#: src/emc/usr_intf/stepconf/stepconf.py:174 +#: src/emc/usr_intf/stepconf/stepconf.py:211 msgid "Both Limit Y" msgstr "Oba granic. Y" -#: src/emc/usr_intf/stepconf/stepconf.py:175 +#: src/emc/usr_intf/stepconf/stepconf.py:212 msgid "Both Limit Z" msgstr "Oba granic. Z" -#: src/emc/usr_intf/stepconf/stepconf.py:175 +#: src/emc/usr_intf/stepconf/stepconf.py:212 msgid "Both Limit A" msgstr "Oba granic. A" -#: src/emc/usr_intf/stepconf/stepconf.py:176 +#: src/emc/usr_intf/stepconf/stepconf.py:213 msgid "All limits" msgstr "Svi granicni prek." -#: src/emc/usr_intf/stepconf/stepconf.py:176 +#: src/emc/usr_intf/stepconf/stepconf.py:213 msgid "All home" msgstr "Sve Home" -#: src/emc/usr_intf/stepconf/stepconf.py:176 +#: src/emc/usr_intf/stepconf/stepconf.py:213 #, fuzzy msgid "All limits + homes" msgstr "Svi granicni prek." -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 msgid "Digital in 0" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 msgid "Digital in 1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 msgid "Digital in 2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 msgid "Digital in 3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:203 -msgid "my-mill" -msgstr "Moja-masina" +#: src/emc/usr_intf/stepconf/stepconf.py:218 +#, fuzzy +msgid "Forward" +msgstr "Prekoracenje brzine obr.motora:" -#: src/emc/usr_intf/stepconf/stepconf.py:215 -#: src/emc/usr_intf/stepconf/stepconf.py:217 -#: src/emc/usr_intf/pncconf/pncconf.py:983 -#: src/emc/usr_intf/pncconf/pncconf.py:985 -msgid "Enter Address" +#: src/emc/usr_intf/stepconf/stepconf.py:219 +msgid "Done" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:220 +msgid "" +"OK to replace existing custom ladder program?\n" +"Existing Custom.clp will be renamed custom_backup.clp.\n" +"Any existing file named -custom_backup.clp- will be lost. " +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:221 +#: src/emc/usr_intf/pncconf/pncconf.py:8163 +msgid "" +"You edited a ladder program and have selected a different program to copy to " +"your configuration file.\n" +"The edited program will be lost.\n" +"\n" +"Are you sure? " +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:222 +msgid "" +"You need to designate an E-stop input pin in the Parallel Port Setup page " +"for this program." +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:223 +msgid "" +"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" +"Existing custompanel.xml and custom_postgui.hal will be renamed " +"custompanel_backup.xml and postgui_backup.hal.\n" +"Any existing file named custompanel_backup.xml and custom_postgui.hal will " +"be lost. " +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:224 +msgid "Quit Stepconf and discard changes?" +msgstr "Maschinenkonfiguration beenden und Änderungen verwerfen?" + +#: src/emc/usr_intf/stepconf/stepconf.py:225 +msgid "" +"The configuration has been built and saved.\n" +"Do you want to quit?" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:226 +msgid "" +"You are using a simulated-realtime version of Machinekit, so testing / " +"tuning of hardware is unavailable." +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:227 +#, python-format +msgid "" +"You are using a realtime version of Machinekit but didn't load a realtime " +"kernel so testing / tuning of hardware is unavailable.\n" +"This is possibly because you updated the OS and it doesn't automatically " +"load the RTAI kernel anymore.\n" +"You are using the %(actual)s kernel.\n" +"You need to use kernel:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:375 +#: src/emc/usr_intf/stepconf/stepconf.py:246 +msgid "my-mill" +msgstr "Moja-masina" + +#: src/emc/usr_intf/stepconf/stepconf.py:585 #, python-format msgid "File %r was modified since it was written by stepconf" msgstr "Datoteka %r je izmenjena i izmene sacuvane u stepconf" -#: src/emc/usr_intf/stepconf/stepconf.py:378 +#: src/emc/usr_intf/stepconf/stepconf.py:588 msgid "" "Saving this configuration file will discard configuration changes made " "outside stepconf." @@ -6176,72 +8355,185 @@ msgstr "" "Cuvanjem ove konfiguracione datoteke bice izgubljeni parametri konfiguracije " "koji se ne cuvaju u datoteci stepconf" -#: src/emc/usr_intf/stepconf/stepconf.py:393 -#: src/emc/usr_intf/pncconf/pncconf.py:1356 +#: src/emc/usr_intf/stepconf/stepconf.py:603 +#: src/emc/usr_intf/pncconf/pncconf.py:1318 msgid "Continue? " msgstr "Nastavi?" -#: src/emc/usr_intf/stepconf/stepconf.py:394 -#: src/emc/usr_intf/pncconf/pncconf.py:1357 +#: src/emc/usr_intf/stepconf/stepconf.py:604 +#: src/emc/usr_intf/pncconf/pncconf.py:1319 msgid "yY" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:446 -#: src/emc/usr_intf/stepconf/stepconf.py:786 +#: src/emc/usr_intf/stepconf/stepconf.py:689 +#: src/emc/usr_intf/pncconf/pncconf.py:3591 +#, python-format +msgid "launch %s" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:693 +msgid "Desktop Launcher for Machinekit config made by Stepconf" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:860 +#: src/emc/usr_intf/stepconf/pages.py:145 +msgid "Other" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:1295 +#: src/emc/usr_intf/pncconf/pncconf.py:9302 #, python-format -msgid "# Generated by stepconf at %s" +msgid "%s Axis Test" +msgstr "Test %s-ose" + +#: src/emc/usr_intf/stepconf/stepconf.py:1298 +#: src/emc/usr_intf/stepconf/pages.py:617 +msgid "deg / s" +msgstr "Grad / s" + +#: src/emc/usr_intf/stepconf/stepconf.py:1299 +#: src/emc/usr_intf/stepconf/pages.py:618 +#, fuzzy +msgid "deg / s²" +msgstr "stepen / s²" + +#: src/emc/usr_intf/stepconf/stepconf.py:1300 +#: src/emc/usr_intf/stepconf/pages.py:619 +msgid "deg" +msgstr "stepen" + +#: src/emc/usr_intf/stepconf/stepconf.py:1312 +#: src/emc/usr_intf/stepconf/pages.py:623 +#: src/emc/usr_intf/stepconf/axisx.glade:629 +#: src/emc/usr_intf/stepconf/axisy.glade:615 +#: src/emc/usr_intf/stepconf/axisz.glade:615 +#: src/emc/usr_intf/stepconf/axisa.glade:629 +#: src/emc/usr_intf/pncconf/pncconf.glade:64717 +msgid "mm / s" +msgstr "mm/s" + +#: src/emc/usr_intf/stepconf/stepconf.py:1313 +#: src/emc/usr_intf/stepconf/pages.py:624 +#: src/emc/usr_intf/stepconf/axisx.glade:645 +#: src/emc/usr_intf/stepconf/axisy.glade:631 +#: src/emc/usr_intf/stepconf/axisz.glade:631 +#: src/emc/usr_intf/stepconf/axisa.glade:645 +#: src/emc/usr_intf/pncconf/pncconf.glade:64732 +msgid "mm / s²" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:1326 +#: src/emc/usr_intf/stepconf/pages.py:629 +msgid "in / s" +msgstr "in / s" + +#: src/emc/usr_intf/stepconf/stepconf.py:1327 +#: src/emc/usr_intf/stepconf/pages.py:630 +#, fuzzy +msgid "in / s²" +msgstr "in / s" + +#: src/emc/usr_intf/stepconf/pages.py:189 +#, fuzzy +msgid "Machinekit 'stepconf' configuration files" +msgstr ".stepconf Dateien" + +#: src/emc/usr_intf/stepconf/pages.py:190 +#: src/emc/usr_intf/pncconf/pncconf.py:4257 +msgid "Modify Existing Configuration" +msgstr "Bestehende Konfiguration bearbeiten" + +#: src/emc/usr_intf/stepconf/pages.py:616 +msgid "degree / rev" +msgstr "Grad / Umdrehung" + +#: src/emc/usr_intf/stepconf/pages.py:620 +msgid "Steps / deg" +msgstr "" + +#: src/emc/usr_intf/stepconf/pages.py:622 +#: src/emc/usr_intf/stepconf/axisx.glade:613 +#: src/emc/usr_intf/stepconf/axisy.glade:599 +#: src/emc/usr_intf/stepconf/axisz.glade:599 +#: src/emc/usr_intf/stepconf/axisa.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / rev" +msgstr "mm / obr." + +#: src/emc/usr_intf/stepconf/pages.py:626 +#: src/emc/usr_intf/stepconf/axisx.glade:15 +#: src/emc/usr_intf/stepconf/axisy.glade:15 +#: src/emc/usr_intf/stepconf/axisz.glade:15 +#: src/emc/usr_intf/stepconf/axisa.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Steps / mm" +msgstr "" + +#: src/emc/usr_intf/stepconf/pages.py:628 +msgid "rev / in" +msgstr "obr./in" + +#: src/emc/usr_intf/stepconf/pages.py:632 +#, fuzzy +msgid "Steps / in" +msgstr "obr./in" + +#: src/emc/usr_intf/stepconf/build_INI.py:45 +#: src/emc/usr_intf/stepconf/build_HAL.py:41 +#, fuzzy, python-format +msgid "# Generated by stepconf 1.1 at %s" msgstr "# Generisao stepconf %s" -#: src/emc/usr_intf/stepconf/stepconf.py:447 -#: src/emc/usr_intf/stepconf/stepconf.py:787 -#: src/emc/usr_intf/pncconf/pncconf.py:1366 -#: src/emc/usr_intf/pncconf/pncconf.py:2369 +#: src/emc/usr_intf/stepconf/build_INI.py:46 +#: src/emc/usr_intf/stepconf/build_HAL.py:42 +#: src/emc/usr_intf/pncconf/pncconf.py:1328 +#: src/emc/usr_intf/pncconf/pncconf.py:2422 msgid "# If you make changes to this file, they will be" msgstr "# Oko izmenite ovu datoteku, izmene ce biti" -#: src/emc/usr_intf/stepconf/stepconf.py:448 -#: src/emc/usr_intf/stepconf/stepconf.py:788 +#: src/emc/usr_intf/stepconf/build_INI.py:47 +#: src/emc/usr_intf/stepconf/build_HAL.py:43 msgid "# overwritten when you run stepconf again" msgstr "# prepisane pri sledecem pokretanju stepconf" -#: src/emc/usr_intf/stepconf/stepconf.py:516 +#: src/emc/usr_intf/stepconf/build_INI.py:126 msgid "# add halui MDI commands here (max 64) " msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:991 -#: src/emc/usr_intf/pncconf/pncconf.py:2991 +#: src/emc/usr_intf/stepconf/build_HAL.py:275 +#: src/emc/usr_intf/pncconf/pncconf.py:3131 msgid "# **** Setup for external estop ladder program -START ****" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:998 -#: src/emc/usr_intf/pncconf/pncconf.py:2998 +#: src/emc/usr_intf/stepconf/build_HAL.py:282 +#: src/emc/usr_intf/pncconf/pncconf.py:3138 msgid "# **** Setup for external estop ladder program -END ****" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1018 -#: src/emc/usr_intf/pncconf/pncconf.py:3025 +#: src/emc/usr_intf/stepconf/build_HAL.py:302 +#: src/emc/usr_intf/pncconf/pncconf.py:3165 msgid "" "# Load Classicladder with modbus master included (GUI must run for Modbus)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1021 -#: src/emc/usr_intf/pncconf/pncconf.py:3030 +#: src/emc/usr_intf/stepconf/build_HAL.py:305 +#: src/emc/usr_intf/pncconf/pncconf.py:3170 msgid "# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1031 -#: src/emc/usr_intf/pncconf/pncconf.py:3112 +#: src/emc/usr_intf/stepconf/build_HAL.py:315 +#: src/emc/usr_intf/pncconf/pncconf.py:3252 #, fuzzy msgid "Include your PyVCP panel here.\n" msgstr "Ukljucu korisnicki P_yVCP-panel" -#: src/emc/usr_intf/stepconf/stepconf.py:1040 -#: src/emc/usr_intf/stepconf/stepconf.py:1087 +#: src/emc/usr_intf/stepconf/build_HAL.py:324 +#: src/emc/usr_intf/stepconf/build_HAL.py:370 msgid "# Include your customized HAL commands here" msgstr "" "# Benutzerdefinierte HAL-Anweisungen können nachfolgend angegeben werden" -#: src/emc/usr_intf/stepconf/stepconf.py:1041 +#: src/emc/usr_intf/stepconf/build_HAL.py:325 #, fuzzy msgid "" "# The commands in this file are run after the AXIS GUI (including PyVCP " @@ -6251,247 +8543,258 @@ msgstr "" "ausgeführt.\n" "# Diese Datei wird nicht überschrieben, wenn stepconf erneut ausgeführt wird." -#: src/emc/usr_intf/stepconf/stepconf.py:1045 -#: src/emc/usr_intf/pncconf/pncconf.py:3140 +#: src/emc/usr_intf/stepconf/build_HAL.py:328 +#: src/emc/usr_intf/pncconf/pncconf.py:3280 msgid "# **** Setup of spindle speed display using pyvcp -START ****" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1047 +#: src/emc/usr_intf/stepconf/build_HAL.py:330 msgid "# **** Use ACTUAL spindle velocity from spindle encoder" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1048 -msgid "# **** spindle-velocity bounces around so we filter it with lowpass" +#: src/emc/usr_intf/stepconf/build_HAL.py:331 +msgid "" +"# **** spindle-velocity-feedback-rps bounces around so we filter it with " +"lowpass" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1049 +#: src/emc/usr_intf/stepconf/build_HAL.py:332 msgid "" -"# **** spindle-velocity is signed so we use absolute component to remove sign" +"# **** spindle-velocity-feedback-rps is signed so we use absolute component " +"to remove sign" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1050 +#: src/emc/usr_intf/stepconf/build_HAL.py:333 msgid "# **** ACTUAL velocity is in RPS not RPM so we scale it." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1059 +#: src/emc/usr_intf/stepconf/build_HAL.py:342 msgid "# **** set up spindle at speed indicator ****" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1072 +#: src/emc/usr_intf/stepconf/build_HAL.py:355 msgid "" "# **** Use COMMANDED spindle velocity from LinuxCNC because no spindle " "encoder was specified" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1073 -msgid "" -"# **** COMANDED velocity is signed so we use absolute component (abs.0) to " -"remove sign" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.py:1088 +#: src/emc/usr_intf/stepconf/build_HAL.py:371 msgid "# This file will not be overwritten when you run stepconf again" msgstr "" "# Diese Datei wird überschrieben, wenn stepconf erneut ausgeführt wird." -#: src/emc/usr_intf/stepconf/stepconf.py:1095 -#, python-format -msgid "Generated by stepconf at %s" -msgstr "Erstell durch stepconf am %s" - -#: src/emc/usr_intf/stepconf/stepconf.py:1166 -#: src/emc/usr_intf/pncconf/pncconf.py:3451 -#, python-format -msgid "launch %s" +#: src/emc/usr_intf/stepconf/build_HAL.py:412 +msgid "# This file sets up simulated limits/home/spindle encoder hardware." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1170 -msgid "Desktop Launcher for LinuxCNC config made by Stepconf" +#: src/emc/usr_intf/stepconf/build_HAL.py:413 +msgid "# This is a generated file do not edit." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1196 -#: src/emc/usr_intf/pncconf/pncconf.py:3700 -#, python-format -msgid "%s Axis Configuration" -msgstr "Konfiguration der %s-Achse" +#: src/emc/usr_intf/stepconf/main_page.glade:35 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Acceleration:" +msgstr "Ubrzanje:" -#: src/emc/usr_intf/stepconf/stepconf.py:1238 -#: src/emc/usr_intf/stepconf/stepconf.py:1337 -msgid "Other" -msgstr "" +#: src/emc/usr_intf/stepconf/main_page.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Jog:" +msgstr "Verfahren:" -#: src/emc/usr_intf/stepconf/stepconf.py:1249 -msgid "Quit Stepconf and discard changes?" -msgstr "Maschinenkonfiguration beenden und Änderungen verwerfen?" +#: src/emc/usr_intf/stepconf/main_page.glade:63 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Test Area:" +msgstr "Testbereich:" -#: src/emc/usr_intf/stepconf/stepconf.py:1280 -msgid "" -"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " -"of hardware is unavailable." +#: src/emc/usr_intf/stepconf/main_page.glade:97 +msgid "mm/s^2" +msgstr "mm/s²" + +#: src/emc/usr_intf/stepconf/main_page.glade:138 +msgid "mm/s" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1283 -msgid "" -"You are using a realtime version of LinuxCNC but didn't load a realtime " -"kernel so testing / tuning of hardware is unavailable.\n" -"This is possibly because you updated the OS and it doesn't automatically " -"load the RTAI kernel anymore.\n" +#: src/emc/usr_intf/stepconf/main_page.glade:400 +msgid "±" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1298 +#: src/emc/usr_intf/stepconf/main_page.glade:423 #, fuzzy -msgid "LinuxCNC 'stepconf' configuration files" -msgstr ".stepconf Dateien" - -#: src/emc/usr_intf/stepconf/stepconf.py:1299 -#: src/emc/usr_intf/pncconf/pncconf.py:4094 -msgid "Modify Existing Configuration" -msgstr "Bestehende Konfiguration bearbeiten" - -#: src/emc/usr_intf/stepconf/stepconf.py:1439 -msgid "" -"You need to designate an E-stop input pin in the Parallel Port Setup page " -"for this program." -msgstr "" +msgid "Stepconf -Stepper Configuration Wizard" +msgstr "LinuxCNC konfiguracija masine" -#: src/emc/usr_intf/stepconf/stepconf.py:1452 -msgid "" -"OK to replace existing custom ladder program?\n" -"Existing Custom.clp will be renamed custom_backup.clp.\n" -"Any existing file named -custom_backup.clp- will be lost. " +#: src/emc/usr_intf/stepconf/main_page.glade:503 +#: src/emc/usr_intf/pncconf/pncconf.glade:2054 +#: src/emc/usr_intf/pncconf/pncconf.glade:2067 +#: src/emc/usr_intf/pncconf/pncconf.glade:2080 +#: src/emc/usr_intf/pncconf/pncconf.glade:2093 +#: src/emc/usr_intf/pncconf/pncconf.glade:2106 +#: src/emc/usr_intf/pncconf/pncconf.glade:2119 +#: src/emc/usr_intf/pncconf/pncconf.glade:2132 +#: src/emc/usr_intf/pncconf/pncconf.glade:2145 +#: src/emc/usr_intf/pncconf/pncconf.glade:2156 +#: src/emc/usr_intf/pncconf/pncconf.glade:2169 +#: src/emc/usr_intf/pncconf/pncconf.glade:2182 +#: src/emc/usr_intf/pncconf/pncconf.glade:2528 +#: src/emc/usr_intf/pncconf/pncconf.glade:2541 +#: src/emc/usr_intf/pncconf/pncconf.glade:2554 +#: src/emc/usr_intf/pncconf/pncconf.glade:8104 +#: src/emc/usr_intf/pncconf/pncconf.glade:8139 +#: src/emc/usr_intf/pncconf/pncconf.glade:63377 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:1342 +#: src/emc/usr_intf/gscreen/gscreen.glade:1360 +#: src/emc/usr_intf/gscreen/gscreen.glade:1378 +msgid "label" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1457 -#: src/emc/usr_intf/pncconf/pncconf.py:7815 +#: src/emc/usr_intf/stepconf/main_page.glade:605 +#, fuzzy msgid "" -"You edited a ladder program and have selected a different program to copy to " -"your configuration file.\n" -"The edited program will be lost.\n" +"This program creates configuration files (.ini and .hal) for \"step and " +"direction\" milling machines and lathes connected to the PC parallel port.\n" "\n" -"Are you sure? " +"Stepconf requires a minimum 800 X 600 display resolution." msgstr "" +"Dieses Programm erstellt Konfigurationsdateien (.ini und .hal) für Fräs- und " +"Drehmaschinen mit »Schritt- und Richtung«-Schnittstelle, die über den " +"Druckeranschluss mit dem PC verbunden sind." -#: src/emc/usr_intf/stepconf/stepconf.py:1471 -msgid "" -"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" -"Existing custompanel.xml and custom_postgui.hal will be renamed " -"custompanel_backup.xml and postgui_backup.hal.\n" -"Any existing file named custompanel_backup.xml and custom_postgui.hal will " -"be lost. " +#: src/emc/usr_intf/stepconf/main_page.glade:628 +#: src/emc/usr_intf/pncconf/pncconf.glade:28799 +#: src/emc/usr_intf/pncconf/pncconf.glade:35720 +#: src/emc/usr_intf/pncconf/pncconf.glade:42643 +#: src/emc/usr_intf/pncconf/pncconf.glade:49566 +#: src/emc/usr_intf/pncconf/pncconf.glade:56489 +msgid "page 1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1676 -msgid "degree / rev" -msgstr "Grad / Umdrehung" +#: src/emc/usr_intf/stepconf/base.glade:18 +msgid "XYZ" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1677 -#: src/emc/usr_intf/stepconf/stepconf.py:2205 -msgid "deg / s" -msgstr "Grad / s" +#: src/emc/usr_intf/stepconf/base.glade:21 +msgid "XYZA" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1678 -#: src/emc/usr_intf/stepconf/stepconf.py:2206 +#: src/emc/usr_intf/stepconf/base.glade:24 #, fuzzy -msgid "deg / s²" -msgstr "stepen / s²" +msgid "XZ (Lathe)" +msgstr "" +"XYZ\n" +"XYZA\n" +"XZ (Drehmaschine)" -#: src/emc/usr_intf/stepconf/stepconf.py:1679 -#: src/emc/usr_intf/stepconf/stepconf.py:2207 -msgid "deg" -msgstr "stepen" +#: src/emc/usr_intf/stepconf/base.glade:79 +msgid "Step _Time:" +msgstr "_Vreme koraka:" -#: src/emc/usr_intf/stepconf/stepconf.py:1680 -msgid "Steps / deg" -msgstr "" +#: src/emc/usr_intf/stepconf/base.glade:113 +#: src/emc/usr_intf/stepconf/base.glade:165 +#: src/emc/usr_intf/stepconf/base.glade:219 +#: src/emc/usr_intf/stepconf/base.glade:271 +#: src/emc/usr_intf/stepconf/base.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:443 +#: src/emc/usr_intf/pncconf/pncconf.glade:8226 +msgid "ns" +msgstr "ns" -#: src/emc/usr_intf/stepconf/stepconf.py:1682 -#: src/emc/usr_intf/stepconf/stepconf.glade:3589 -#: src/emc/usr_intf/pncconf/pncconf.glade:66138 -#: src/emc/usr_intf/pncconf/pncconf.glade:66424 -msgid "mm / rev" -msgstr "mm / obr." +#: src/emc/usr_intf/stepconf/base.glade:127 +msgid "Step _Space:" +msgstr "Duzina _koraka:" -#: src/emc/usr_intf/stepconf/stepconf.py:1683 -#: src/emc/usr_intf/stepconf/stepconf.py:2219 -#: src/emc/usr_intf/stepconf/stepconf.glade:3604 -#: src/emc/usr_intf/pncconf/pncconf.glade:57828 -msgid "mm / s" -msgstr "mm/s" +#: src/emc/usr_intf/stepconf/base.glade:181 +msgid "Direction _Hold:" +msgstr "Smer:" -#: src/emc/usr_intf/stepconf/stepconf.py:1684 -#: src/emc/usr_intf/stepconf/stepconf.py:2220 -#: src/emc/usr_intf/stepconf/stepconf.glade:3619 -#: src/emc/usr_intf/pncconf/pncconf.glade:57813 -msgid "mm / s²" +#: src/emc/usr_intf/stepconf/base.glade:235 +msgid "_Direction Setup:" +msgstr "Zeit zwischen Richtungs_wechsel und Schritt:" + +#: src/emc/usr_intf/stepconf/base.glade:338 +msgid "Driver Timing Settings" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1686 -#: src/emc/usr_intf/stepconf/stepconf.glade:3075 -#: src/emc/usr_intf/pncconf/pncconf.glade:66888 -msgid "Steps / mm" +#: src/emc/usr_intf/stepconf/base.glade:351 +msgid "" +"_Test Base\n" +"Period Jitter " msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1688 -msgid "rev / in" -msgstr "obr./in" +#: src/emc/usr_intf/stepconf/base.glade:372 +msgid "Machine _Name:" +msgstr "_Ime masine:" -#: src/emc/usr_intf/stepconf/stepconf.py:1689 -#: src/emc/usr_intf/stepconf/stepconf.py:2233 -msgid "in / s" -msgstr "in / s" +#: src/emc/usr_intf/stepconf/base.glade:386 +msgid "_Axis configuration:" +msgstr "Konfiguracija _osa:" -#: src/emc/usr_intf/stepconf/stepconf.py:1690 -#: src/emc/usr_intf/stepconf/stepconf.py:2234 +#: src/emc/usr_intf/stepconf/base.glade:401 #, fuzzy -msgid "in / s²" -msgstr "in / s" +msgid "Reset Default machine _units:" +msgstr "_Jedinica mere:" -#: src/emc/usr_intf/stepconf/stepconf.py:1692 +#: src/emc/usr_intf/stepconf/base.glade:416 +#: src/emc/usr_intf/pncconf/pncconf.glade:245 +msgid "Configuration directory:" +msgstr "Verzeichnis:" + +#: src/emc/usr_intf/stepconf/base.glade:430 #, fuzzy -msgid "Steps / in" -msgstr "obr./in" +msgid "D_river type:" +msgstr "En_dstufe:" -#: src/emc/usr_intf/stepconf/stepconf.py:2202 -#: src/emc/usr_intf/pncconf/pncconf.py:8893 -#, python-format -msgid "%s Axis Test" -msgstr "Test %s-ose" +#: src/emc/usr_intf/stepconf/base.glade:545 +msgid "" +"Driver characteristics: (Multiply by 1000 for times specified in µs or " +"microseconds)" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:8 -#: src/emc/usr_intf/stepconf/stepconf.glade:21 -msgid "LinuxCNC Stepper Mill Configuration" -msgstr "LinuxCNC konfiguracija masine" +#: src/emc/usr_intf/stepconf/base.glade:573 +msgid "Base Period Maximum _Jitter:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:22 +#: src/emc/usr_intf/stepconf/base.glade:630 +msgid "One Parport" +msgstr "" + +#: src/emc/usr_intf/stepconf/base.glade:646 +msgid "Two Parports" +msgstr "" + +#: src/emc/usr_intf/stepconf/base.glade:663 #, fuzzy -msgid "" -"This program creates configuration files (.ini and .hal) for \"step and " -"direction\" milling machines and lathes connected to the PC parallel port.\n" -"\n" -"Stepconf requires a minimum 800 X 600 display resolution.\n" -"You may need to collapse the 'Driver Timing Settings' and \n" -"Parallel Port Settings' expanders." +msgid "Three Parports" +msgstr "Adresa paralelnog porta:" + +#: src/emc/usr_intf/stepconf/base.glade:698 +msgid "Min Base Period:" +msgstr "Min Base Period:" + +#: src/emc/usr_intf/stepconf/base.glade:735 +msgid "Max step rate:" +msgstr "Max step rate:" + +#: src/emc/usr_intf/stepconf/base.glade:870 +msgid "MM" msgstr "" -"Dieses Programm erstellt Konfigurationsdateien (.ini und .hal) für Fräs- und " -"Drehmaschinen mit »Schritt- und Richtung«-Schnittstelle, die über den " -"Druckeranschluss mit dem PC verbunden sind." -#: src/emc/usr_intf/stepconf/stepconf.glade:51 +#: src/emc/usr_intf/stepconf/start.glade:11 msgid "Create a _new configuration" msgstr "Kreiraj _novu konfiguraciju" -#: src/emc/usr_intf/stepconf/stepconf.glade:69 -#: src/emc/usr_intf/pncconf/pncconf.glade:70 +#: src/emc/usr_intf/stepconf/start.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:130 #, fuzzy msgid "Modify a configuration already created with this program" msgstr "_Modifikuj postojecu konfiguraciju " -#: src/emc/usr_intf/stepconf/stepconf.glade:87 -#: src/emc/usr_intf/pncconf/pncconf.glade:88 +#: src/emc/usr_intf/stepconf/start.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:118 msgid "Do you wish to:" msgstr "Da li zelite da:" -#: src/emc/usr_intf/stepconf/stepconf.glade:99 +#: src/emc/usr_intf/stepconf/start.glade:61 #: src/emc/usr_intf/pncconf/pncconf.glade:100 msgid "" "If you have made modifications to this configuration outside this program, " @@ -6500,584 +8803,568 @@ msgstr "" "Wenn die Konfiguration mit einem anderen Programm bearbeitet wurde, gehen " "diese Änderungen verloren." -#: src/emc/usr_intf/stepconf/stepconf.glade:116 +#: src/emc/usr_intf/stepconf/start.glade:76 msgid "Create a desktop _shortcut (symlink) to configuration files." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:133 +#: src/emc/usr_intf/stepconf/start.glade:93 msgid "Create a desktop _launcher to start LinuxCNC with this configuration." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:169 -#: src/emc/usr_intf/pncconf/pncconf.glade:175 -msgid "Basic machine information" -msgstr "Osnovne informacije o masini" +#: src/emc/usr_intf/stepconf/start.glade:124 +#, fuzzy +msgid "Create simulated hardware configuration." +msgstr "Kreiraj _novu konfiguraciju" -#: src/emc/usr_intf/stepconf/stepconf.glade:327 -msgid "Step _Time:" -msgstr "_Vreme koraka:" +#: src/emc/usr_intf/stepconf/pport1.glade:35 +#, fuzzy +msgid "Xylotex" +msgstr "_Xylotex" -#: src/emc/usr_intf/stepconf/stepconf.glade:356 -#: src/emc/usr_intf/stepconf/stepconf.glade:402 -#: src/emc/usr_intf/stepconf/stepconf.glade:449 -#: src/emc/usr_intf/stepconf/stepconf.glade:494 -#: src/emc/usr_intf/stepconf/stepconf.glade:909 -#: src/emc/usr_intf/pncconf/pncconf.glade:458 -#: src/emc/usr_intf/pncconf/pncconf.glade:8256 -msgid "ns" -msgstr "ns" +#: src/emc/usr_intf/stepconf/pport1.glade:38 +msgid "TB6560 3 axes" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:369 -msgid "Step _Space:" -msgstr "Duzina _koraka:" +#: src/emc/usr_intf/stepconf/pport1.glade:41 +msgid "TB6560 4 axes" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:417 -msgid "Direction _Hold:" -msgstr "Smer:" +#: src/emc/usr_intf/stepconf/pport1.glade:59 +#: src/emc/usr_intf/pncconf/pncconf.glade:62915 +msgid "Pin _1:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:464 -msgid "_Direction Setup:" -msgstr "Zeit zwischen Richtungs_wechsel und Schritt:" +#: src/emc/usr_intf/stepconf/pport1.glade:74 +#: src/emc/usr_intf/stepconf/pport2.glade:768 +#: src/emc/usr_intf/pncconf/pncconf.glade:61685 +#: src/emc/usr_intf/pncconf/pncconf.glade:62901 +msgid "Pin _2:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:512 -msgid "Driver Timing Settings" +#: src/emc/usr_intf/stepconf/pport1.glade:89 +#: src/emc/usr_intf/stepconf/pport2.glade:814 +#: src/emc/usr_intf/pncconf/pncconf.glade:61668 +#: src/emc/usr_intf/pncconf/pncconf.glade:62887 +msgid "Pin _3:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:538 -#, fuzzy -msgid "First Parport _Base Address:" -msgstr "Adresa paralelnog porta:" +#: src/emc/usr_intf/stepconf/pport1.glade:104 +#: src/emc/usr_intf/stepconf/pport2.glade:860 +#: src/emc/usr_intf/pncconf/pncconf.glade:61651 +#: src/emc/usr_intf/pncconf/pncconf.glade:62873 +msgid "Pin _4:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:564 -msgid " Out" +#: src/emc/usr_intf/stepconf/pport1.glade:119 +#: src/emc/usr_intf/stepconf/pport2.glade:906 +#: src/emc/usr_intf/pncconf/pncconf.glade:61634 +#: src/emc/usr_intf/pncconf/pncconf.glade:62859 +msgid "Pin _5:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:575 -#: src/emc/usr_intf/stepconf/stepconf.glade:591 -msgid "" -"Out\n" -"In" +#: src/emc/usr_intf/stepconf/pport1.glade:134 +#: src/emc/usr_intf/stepconf/pport2.glade:952 +#: src/emc/usr_intf/pncconf/pncconf.glade:61617 +#: src/emc/usr_intf/pncconf/pncconf.glade:62845 +msgid "Pin _6:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:633 -#, fuzzy -msgid "S_econd Parport Address:" -msgstr "Adresa paralelnog porta:" +#: src/emc/usr_intf/stepconf/pport1.glade:149 +#: src/emc/usr_intf/stepconf/pport2.glade:998 +#: src/emc/usr_intf/pncconf/pncconf.glade:61600 +#: src/emc/usr_intf/pncconf/pncconf.glade:62831 +msgid "Pin _7:" +msgstr "" + +#: src/emc/usr_intf/stepconf/pport1.glade:164 +#: src/emc/usr_intf/stepconf/pport2.glade:1044 +#: src/emc/usr_intf/pncconf/pncconf.glade:61583 +#: src/emc/usr_intf/pncconf/pncconf.glade:62817 +msgid "Pin _8:" +msgstr "" + +#: src/emc/usr_intf/stepconf/pport1.glade:179 +#: src/emc/usr_intf/stepconf/pport2.glade:1090 +#: src/emc/usr_intf/pncconf/pncconf.glade:61566 +#: src/emc/usr_intf/pncconf/pncconf.glade:62803 +msgid "Pin _9:" +msgstr "" + +#: src/emc/usr_intf/stepconf/pport1.glade:194 +#: src/emc/usr_intf/stepconf/pport2.glade:1137 +#: src/emc/usr_intf/pncconf/pncconf.glade:62789 +msgid "_Pin 14:" +msgstr "" + +#: src/emc/usr_intf/stepconf/pport1.glade:209 +#: src/emc/usr_intf/stepconf/pport2.glade:1185 +#: src/emc/usr_intf/pncconf/pncconf.glade:62775 +msgid "P_in 16:" +msgstr "" + +#: src/emc/usr_intf/stepconf/pport1.glade:224 +#: src/emc/usr_intf/stepconf/pport2.glade:1233 +#: src/emc/usr_intf/pncconf/pncconf.glade:62761 +msgid "Pi_n 17:" +msgstr "" + +#: src/emc/usr_intf/stepconf/pport1.glade:470 +#: src/emc/usr_intf/stepconf/pport2.glade:692 +msgid "Outputs (PC to Mill):" +msgstr "Izlazi (od PC racunra ka masini)" + +#: src/emc/usr_intf/stepconf/pport1.glade:483 +#: src/emc/usr_intf/stepconf/pport2.glade:427 +#: src/emc/usr_intf/pncconf/pncconf.glade:61701 +msgid "Pin 1_0:" +msgstr "" + +#: src/emc/usr_intf/stepconf/pport1.glade:500 +#: src/emc/usr_intf/stepconf/pport2.glade:475 +#: src/emc/usr_intf/pncconf/pncconf.glade:61717 +msgid "Pin 1_1:" +msgstr "" + +#: src/emc/usr_intf/stepconf/pport1.glade:517 +#: src/emc/usr_intf/stepconf/pport2.glade:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:61733 +msgid "Pin 1_2:" +msgstr "" + +#: src/emc/usr_intf/stepconf/pport1.glade:534 +#: src/emc/usr_intf/stepconf/pport2.glade:571 +#: src/emc/usr_intf/pncconf/pncconf.glade:61749 +msgid "Pin 1_3:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:650 +#: src/emc/usr_intf/stepconf/pport1.glade:551 +#: src/emc/usr_intf/stepconf/pport2.glade:619 +#: src/emc/usr_intf/pncconf/pncconf.glade:61765 +msgid "Pin 1_5:" +msgstr "" + +#: src/emc/usr_intf/stepconf/pport1.glade:590 +#: src/emc/usr_intf/stepconf/pport2.glade:16 +msgid "Inputs (Mill to PC):" +msgstr "Ulazi (od masine ka PC racunaru)" + +#: src/emc/usr_intf/stepconf/pport1.glade:618 +#: src/emc/usr_intf/stepconf/pport1.glade:632 +#: src/emc/usr_intf/stepconf/pport2.glade:29 +#: src/emc/usr_intf/stepconf/pport2.glade:702 +#: src/emc/usr_intf/pncconf/pncconf.glade:62335 +#: src/emc/usr_intf/pncconf/pncconf.glade:62348 +msgid "Invert" +msgstr "Invertovan" + +#: src/emc/usr_intf/stepconf/pport1.glade:1018 +msgid "Output pinout presets:" +msgstr "Izlazni pinovi:" + +#: src/emc/usr_intf/stepconf/pport1.glade:1096 #, fuzzy -msgid "T_hird Parport Address:" +msgid "Parport _Base Address:" msgstr "Adresa paralelnog porta:" -#: src/emc/usr_intf/stepconf/stepconf.glade:667 +#: src/emc/usr_intf/stepconf/pport1.glade:1132 #, fuzzy -msgid " Parallel Port Settings" -msgstr "Podesavanje paralelnog porta" +msgid "Preset" +msgstr "_Nastavi" -#: src/emc/usr_intf/stepconf/stepconf.glade:684 -msgid "" -"_Test Base\n" -"Period Jitter " +#: src/emc/usr_intf/stepconf/pport2.glade:47 +msgid "Pin 2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:703 -msgid "Machine _Name:" -msgstr "_Ime masine:" +#: src/emc/usr_intf/stepconf/pport2.glade:94 +msgid "Pin 3:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:716 -msgid "_Axis configuration:" -msgstr "Konfiguracija _osa:" +#: src/emc/usr_intf/stepconf/pport2.glade:141 +msgid "Pin 4:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:730 -msgid "Machine _units:" -msgstr "_Jedinica mere:" +#: src/emc/usr_intf/stepconf/pport2.glade:188 +msgid "Pin 5:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:744 -#: src/emc/usr_intf/pncconf/pncconf.glade:246 -msgid "Configuration directory:" -msgstr "Verzeichnis:" +#: src/emc/usr_intf/stepconf/pport2.glade:235 +msgid "Pin 6:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:757 -#, fuzzy -msgid "D_river type:" -msgstr "En_dstufe:" +#: src/emc/usr_intf/stepconf/pport2.glade:282 +msgid "Pin 7:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:785 -#: src/emc/usr_intf/pncconf/pncconf.glade:326 -msgid "" -"Inch\n" -"Millimeter" +#: src/emc/usr_intf/stepconf/pport2.glade:329 +msgid "Pin 8:" msgstr "" -"Inc\n" -"Millimetar" -#: src/emc/usr_intf/stepconf/stepconf.glade:800 -#: src/emc/usr_intf/pncconf/pncconf.glade:291 -msgid "" -"XYZ\n" -"XYZA\n" -"XZ (Lathe)" +#: src/emc/usr_intf/stepconf/pport2.glade:376 +msgid "Pin 9:" msgstr "" -"XYZ\n" -"XYZA\n" -"XZ (Drehmaschine)" -#: src/emc/usr_intf/stepconf/stepconf.glade:847 +#: src/emc/usr_intf/stepconf/pport2.glade:721 +msgid "Pin _1: " +msgstr "" + +#: src/emc/usr_intf/stepconf/pport2.glade:1431 #, fuzzy -msgid "" -"Driver characteristics: (Multiply by 1000 for times specified in µs or " -"microseconds)\n" -" Additional signal conditioning or isolation such as optocouplers " -"and RC filters\n" -" can impose timing constraints of their own, in addition to those of " -"the driver." +msgid "Out" +msgstr "Neupotrebljen" + +#: src/emc/usr_intf/stepconf/pport2.glade:1434 +#, fuzzy +msgid "In" +msgstr "Invertovan" + +#: src/emc/usr_intf/stepconf/spindle.glade:23 +#, fuzzy +msgid "Use spindle-at-speed:" +msgstr "Prekoracenje brzine obr.motora:" + +#: src/emc/usr_intf/stepconf/spindle.glade:64 +msgid "Speed display filter gain:" msgstr "" -"Einstellungen für Endstufe (alle Zeiten in Nanosekunden = 10^-9 s):\n" -"\n" -"Zusätzliche Signalverarbeitungsbausteine oder Maßnahmen zur galvanischen \n" -"Trennung, wie Optokoppler oder RC-Filter, können zusätzliche Zeit benötigen." -#: src/emc/usr_intf/stepconf/stepconf.glade:875 -msgid "Base Period Maximum _Jitter:" -msgstr "" +#: src/emc/usr_intf/stepconf/spindle.glade:99 +msgid "Calibration:" +msgstr "Kalibrierung:" + +#: src/emc/usr_intf/stepconf/spindle.glade:113 +#, fuzzy +msgid "_Speed 1:" +msgstr "Geschwindigkeit 1" + +#: src/emc/usr_intf/stepconf/spindle.glade:129 +#, fuzzy +msgid "_PWM 1:" +msgstr "PWM-Rate:" -#: src/emc/usr_intf/stepconf/stepconf.glade:924 -msgid "Max step rate:" -msgstr "Max step rate:" +#: src/emc/usr_intf/stepconf/spindle.glade:148 +#, fuzzy +msgid "S_peed 2:" +msgstr "Geschwindigkeit 2:" -#: src/emc/usr_intf/stepconf/stepconf.glade:940 -msgid "Min Base Period:" -msgstr "Min Base Period:" +#: src/emc/usr_intf/stepconf/spindle.glade:164 +#, fuzzy +msgid "P_WM 2:" +msgstr "PWM-Rate:" -#: src/emc/usr_intf/stepconf/stepconf.glade:956 +#: src/emc/usr_intf/stepconf/spindle.glade:183 #, fuzzy -msgid "" -"_Onscreen prompt for\n" -"tool change" -msgstr "_Prikazi upit za promenu alata" +msgid "PWM _Rate:" +msgstr "PWM-Rate:" -#: src/emc/usr_intf/stepconf/stepconf.glade:1015 +#: src/emc/usr_intf/stepconf/spindle.glade:285 #, fuzzy -msgid "Advanced Configuration Options" -msgstr "Maschinenkonfiguration komplett" +msgid "_Cycles per revolution:" +msgstr "Zyklen pro Umdrehung:" -#: src/emc/usr_intf/stepconf/stepconf.glade:1033 +#: src/emc/usr_intf/stepconf/spindle.glade:347 +msgid "Enter 0 Hz for \"PDM\" mode" +msgstr "Für den PDM-Modus 0Hz eingeben" + +#: src/emc/usr_intf/stepconf/spindle.glade:360 +msgid "Scale %" +msgstr "" + +#: src/emc/usr_intf/stepconf/options.glade:50 msgid "Include Halui user interface component" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1074 -#: src/emc/usr_intf/pncconf/pncconf.glade:6745 +#: src/emc/usr_intf/stepconf/options.glade:102 +#: src/emc/usr_intf/pncconf/pncconf.glade:6753 #, fuzzy msgid "Blank program" msgstr "Pokreni program" -#: src/emc/usr_intf/stepconf/stepconf.glade:1089 -#: src/emc/usr_intf/pncconf/pncconf.glade:6760 +#: src/emc/usr_intf/stepconf/options.glade:119 +#: src/emc/usr_intf/pncconf/pncconf.glade:6768 #, fuzzy msgid "Spindle speed display " msgstr "Prekoracenje brzine obr.motora:" -#: src/emc/usr_intf/stepconf/stepconf.glade:1105 -#: src/emc/usr_intf/stepconf/stepconf.glade:1543 -#: src/emc/usr_intf/pncconf/pncconf.glade:6791 -#: src/emc/usr_intf/pncconf/pncconf.glade:7112 -#: src/emc/usr_intf/pncconf/pncconf.glade:59393 +#: src/emc/usr_intf/stepconf/options.glade:136 +#: src/emc/usr_intf/stepconf/options.glade:671 +#: src/emc/usr_intf/pncconf/pncconf.glade:6799 +#: src/emc/usr_intf/pncconf/pncconf.glade:7120 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Existing custom program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1120 -#: src/emc/usr_intf/stepconf/stepconf.glade:1559 -#: src/emc/usr_intf/pncconf/pncconf.glade:6806 -#: src/emc/usr_intf/pncconf/pncconf.glade:59409 +#: src/emc/usr_intf/stepconf/options.glade:153 +#: src/emc/usr_intf/stepconf/options.glade:688 +#: src/emc/usr_intf/pncconf/pncconf.glade:6814 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Include connections to HAL" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1154 -#: src/emc/usr_intf/pncconf/pncconf.glade:6989 -#: src/emc/usr_intf/pncconf/pncconf.glade:7537 +#: src/emc/usr_intf/stepconf/options.glade:202 +#: src/emc/usr_intf/pncconf/pncconf.glade:6997 +#: src/emc/usr_intf/pncconf/pncconf.glade:7545 msgid "" "_Display\n" "sample\n" "panel" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1188 -#: src/emc/usr_intf/pncconf/pncconf.glade:7048 +#: src/emc/usr_intf/stepconf/options.glade:243 +#: src/emc/usr_intf/pncconf/pncconf.glade:7056 #, fuzzy msgid "Include custom PyVCP GUI panel" msgstr "Ukljucu korisnicki P_yVCP-panel" -#: src/emc/usr_intf/stepconf/stepconf.glade:1321 -#: src/emc/usr_intf/pncconf/pncconf.glade:59199 +#: src/emc/usr_intf/stepconf/options.glade:414 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid " Number of analog (float) out pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1335 -#: src/emc/usr_intf/pncconf/pncconf.glade:59184 +#: src/emc/usr_intf/stepconf/options.glade:429 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid " Number of analog (float) in pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1349 -#: src/emc/usr_intf/pncconf/pncconf.glade:59169 +#: src/emc/usr_intf/stepconf/options.glade:444 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid " Number of analog (s32) out pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1363 -#: src/emc/usr_intf/pncconf/pncconf.glade:59153 +#: src/emc/usr_intf/stepconf/options.glade:459 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid " Number of analog (s32) in pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1378 +#: src/emc/usr_intf/stepconf/options.glade:475 msgid "Number of digital out pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1403 +#: src/emc/usr_intf/stepconf/options.glade:506 msgid "Number of digital in pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1414 +#: src/emc/usr_intf/stepconf/options.glade:518 msgid "setup number of external pins" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1429 -#: src/emc/usr_intf/pncconf/pncconf.glade:59213 +#: src/emc/usr_intf/stepconf/options.glade:533 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Include modbus master support" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1500 -#: src/emc/usr_intf/pncconf/pncconf.glade:59333 +#: src/emc/usr_intf/stepconf/options.glade:625 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Blank ladder program" msgstr "Ponovo ucitaj program" -#: src/emc/usr_intf/stepconf/stepconf.glade:1513 -#: src/emc/usr_intf/pncconf/pncconf.glade:59346 +#: src/emc/usr_intf/stepconf/options.glade:638 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Estop ladder program" msgstr "zaustavu ucitavanje pregleda programa" -#: src/emc/usr_intf/stepconf/stepconf.glade:1527 -#: src/emc/usr_intf/pncconf/pncconf.glade:59377 +#: src/emc/usr_intf/stepconf/options.glade:654 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Serial modbus program" msgstr "Ponovo ucitaj program" -#: src/emc/usr_intf/stepconf/stepconf.glade:1592 -#: src/emc/usr_intf/pncconf/pncconf.glade:59443 +#: src/emc/usr_intf/stepconf/options.glade:740 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "" "Edit ladder\n" "program" msgstr "Ponovo ucitaj program" -#: src/emc/usr_intf/stepconf/stepconf.glade:1628 -#: src/emc/usr_intf/pncconf/pncconf.glade:59479 +#: src/emc/usr_intf/stepconf/options.glade:781 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Include _Classicladder PLC" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1653 -msgid "Parallel Port Setup" -msgstr "Podesavanje paralelnog porta" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1760 -#: src/emc/usr_intf/pncconf/pncconf.glade:54010 -msgid "Pin _1:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1774 -#: src/emc/usr_intf/pncconf/pncconf.glade:54024 -#: src/emc/usr_intf/pncconf/pncconf.glade:55239 -msgid "Pin _2:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1788 -#: src/emc/usr_intf/pncconf/pncconf.glade:54038 -#: src/emc/usr_intf/pncconf/pncconf.glade:55256 -msgid "Pin _3:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1802 -#: src/emc/usr_intf/pncconf/pncconf.glade:54052 -#: src/emc/usr_intf/pncconf/pncconf.glade:55273 -msgid "Pin _4:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1816 -#: src/emc/usr_intf/pncconf/pncconf.glade:54066 -#: src/emc/usr_intf/pncconf/pncconf.glade:55290 -msgid "Pin _5:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1830 -#: src/emc/usr_intf/pncconf/pncconf.glade:54080 -#: src/emc/usr_intf/pncconf/pncconf.glade:55307 -msgid "Pin _6:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1844 -#: src/emc/usr_intf/pncconf/pncconf.glade:54094 -#: src/emc/usr_intf/pncconf/pncconf.glade:55324 -msgid "Pin _7:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1858 -#: src/emc/usr_intf/pncconf/pncconf.glade:54108 -#: src/emc/usr_intf/pncconf/pncconf.glade:55341 -msgid "Pin _8:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1872 -#: src/emc/usr_intf/pncconf/pncconf.glade:54122 -#: src/emc/usr_intf/pncconf/pncconf.glade:55358 -msgid "Pin _9:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1886 -#: src/emc/usr_intf/pncconf/pncconf.glade:54136 -msgid "_Pin 14:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1900 -#: src/emc/usr_intf/pncconf/pncconf.glade:54150 -msgid "P_in 16:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1914 -#: src/emc/usr_intf/pncconf/pncconf.glade:54164 -msgid "Pi_n 17:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2258 -msgid "Outputs (PC to Mill):" -msgstr "Izlazi (od PC racunra ka masini)" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2270 -#: src/emc/usr_intf/pncconf/pncconf.glade:55222 -msgid "Pin 1_0:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2286 -#: src/emc/usr_intf/pncconf/pncconf.glade:55206 -msgid "Pin 1_1:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2302 -#: src/emc/usr_intf/pncconf/pncconf.glade:55190 -msgid "Pin 1_2:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2318 -#: src/emc/usr_intf/pncconf/pncconf.glade:55174 -msgid "Pin 1_3:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2334 -#: src/emc/usr_intf/pncconf/pncconf.glade:55158 -msgid "Pin 1_5:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2399 -msgid "Inputs (Mill to PC):" -msgstr "Ulazi (od masine ka PC racunaru)" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2425 -#: src/emc/usr_intf/stepconf/stepconf.glade:2438 -#: src/emc/usr_intf/pncconf/pncconf.glade:54578 -#: src/emc/usr_intf/pncconf/pncconf.glade:54591 -msgid "Invert" -msgstr "Invertovan" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2887 -msgid "_Sherline Outputs" -msgstr "_Sherline" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2905 -msgid "_Xylotex Outputs" -msgstr "_Xylotex" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2923 -msgid "Output pinout presets:" -msgstr "Izlazni pinovi:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3022 -#: src/emc/usr_intf/pncconf/pncconf.glade:57970 -msgid "X Axis Configuration" -msgstr "Konfiguracija X ose" +#: src/emc/usr_intf/stepconf/options.glade:802 +#, fuzzy +msgid "_Onscreen prompt for manual tool change" +msgstr "_Prikazi upit za promenu alata" -#: src/emc/usr_intf/stepconf/stepconf.glade:3090 +#: src/emc/usr_intf/stepconf/axisx.glade:31 +#: src/emc/usr_intf/stepconf/axisy.glade:31 +#: src/emc/usr_intf/stepconf/axisz.glade:31 +#: src/emc/usr_intf/stepconf/axisa.glade:45 msgid "_Motor steps per revolution:" msgstr "_Broj koraka po okretaju motora" -#: src/emc/usr_intf/stepconf/stepconf.glade:3103 +#: src/emc/usr_intf/stepconf/axisx.glade:45 +#: src/emc/usr_intf/stepconf/axisy.glade:44 +#: src/emc/usr_intf/stepconf/axisz.glade:44 +#: src/emc/usr_intf/stepconf/axisa.glade:58 #, fuzzy msgid "_Driver Microstepping:" msgstr "M_ikrostep drajvera" -#: src/emc/usr_intf/stepconf/stepconf.glade:3118 +#: src/emc/usr_intf/stepconf/axisx.glade:61 +#: src/emc/usr_intf/stepconf/axisy.glade:59 +#: src/emc/usr_intf/stepconf/axisz.glade:59 +#: src/emc/usr_intf/stepconf/axisa.glade:73 #, fuzzy msgid "_Pulley teeth (Motor:Leadscrew):" msgstr "_Odnos (motor:navojno vreteno):" -#: src/emc/usr_intf/stepconf/stepconf.glade:3133 +#: src/emc/usr_intf/stepconf/axisx.glade:77 +#: src/emc/usr_intf/stepconf/axisy.glade:74 +#: src/emc/usr_intf/stepconf/axisz.glade:74 +#: src/emc/usr_intf/stepconf/axisa.glade:88 msgid "_Leadscrew Pitch:" msgstr "_korak navojnog vretena:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3148 -#: src/emc/usr_intf/pncconf/pncconf.glade:57858 +#: src/emc/usr_intf/stepconf/axisx.glade:93 +#: src/emc/usr_intf/stepconf/axisy.glade:89 +#: src/emc/usr_intf/stepconf/axisz.glade:89 +#: src/emc/usr_intf/stepconf/axisa.glade:103 +#: src/emc/usr_intf/pncconf/pncconf.glade:64687 msgid "Maximum _Velocity:" msgstr "Maksinalna _Brzina:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3163 -#: src/emc/usr_intf/pncconf/pncconf.glade:57843 +#: src/emc/usr_intf/stepconf/axisx.glade:109 +#: src/emc/usr_intf/stepconf/axisy.glade:104 +#: src/emc/usr_intf/stepconf/axisz.glade:104 +#: src/emc/usr_intf/stepconf/axisa.glade:118 +#: src/emc/usr_intf/pncconf/pncconf.glade:64702 msgid "Maximum _Acceleration:" msgstr "Maksimalno _ubrzanje" -#: src/emc/usr_intf/stepconf/stepconf.glade:3178 -#: src/emc/usr_intf/pncconf/pncconf.glade:67063 +#: src/emc/usr_intf/stepconf/axisx.glade:125 +#: src/emc/usr_intf/stepconf/axisy.glade:119 +#: src/emc/usr_intf/stepconf/axisz.glade:119 +#: src/emc/usr_intf/stepconf/axisa.glade:133 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Time to accelerate to max speed:" msgstr "vreme do maksimalne brzine:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3193 +#: src/emc/usr_intf/stepconf/axisx.glade:141 +#: src/emc/usr_intf/stepconf/axisy.glade:134 +#: src/emc/usr_intf/stepconf/axisz.glade:134 +#: src/emc/usr_intf/stepconf/axisa.glade:148 msgid "Distance to accelerate to max speed:" msgstr "razdaljina do maksimalne brzine:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3292 -#: src/emc/usr_intf/pncconf/pncconf.glade:67036 +#: src/emc/usr_intf/stepconf/axisx.glade:271 +#: src/emc/usr_intf/stepconf/axisy.glade:263 +#: src/emc/usr_intf/stepconf/axisz.glade:263 +#: src/emc/usr_intf/stepconf/axisa.glade:277 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Pulse rate at max speed:" msgstr "Ucestanost pri maksimalnoj brzini:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3362 +#: src/emc/usr_intf/stepconf/axisx.glade:342 +#: src/emc/usr_intf/stepconf/axisy.glade:334 +#: src/emc/usr_intf/stepconf/axisz.glade:334 +#: src/emc/usr_intf/stepconf/axisa.glade:348 msgid "_Home location:" msgstr "_Referentna pozicija:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3377 +#: src/emc/usr_intf/stepconf/axisx.glade:358 +#: src/emc/usr_intf/stepconf/axisy.glade:349 +#: src/emc/usr_intf/stepconf/axisz.glade:349 +#: src/emc/usr_intf/stepconf/axisa.glade:363 msgid "Home _Switch location:" msgstr "Pozicija Referentnog _prekidaca:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3392 +#: src/emc/usr_intf/stepconf/axisx.glade:374 +#: src/emc/usr_intf/stepconf/axisy.glade:364 +#: src/emc/usr_intf/stepconf/axisz.glade:364 +#: src/emc/usr_intf/stepconf/axisa.glade:378 msgid "Home Sear_ch velocity:" msgstr "Brzina pri _trazenju referentne pozicije:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3407 +#: src/emc/usr_intf/stepconf/axisx.glade:390 +#: src/emc/usr_intf/stepconf/axisy.glade:379 +#: src/emc/usr_intf/stepconf/axisz.glade:379 +#: src/emc/usr_intf/stepconf/axisa.glade:393 msgid "Home La_tch direction:" msgstr "Pozija referentnog _Latch-a:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3420 -#: src/emc/usr_intf/pncconf/pncconf.glade:66232 -#: src/emc/usr_intf/pncconf/pncconf.glade:66274 -#: src/emc/usr_intf/pncconf/pncconf.glade:66505 -#: src/emc/usr_intf/pncconf/pncconf.glade:66570 +#: src/emc/usr_intf/stepconf/axisx.glade:404 +#: src/emc/usr_intf/stepconf/axisy.glade:393 +#: src/emc/usr_intf/stepconf/axisz.glade:393 +#: src/emc/usr_intf/stepconf/axisa.glade:407 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "_:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3437 -#: src/emc/usr_intf/pncconf/pncconf.glade:58536 -msgid "" -"Same\n" -"Opposite" -msgstr "" -"Isti\n" -"Suprotan" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3492 +#: src/emc/usr_intf/stepconf/axisx.glade:498 +#: src/emc/usr_intf/stepconf/axisy.glade:486 +#: src/emc/usr_intf/stepconf/axisz.glade:486 +#: src/emc/usr_intf/stepconf/axisa.glade:500 msgid "Tab_le travel:" msgstr "_Radne dimenzije:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3519 +#: src/emc/usr_intf/stepconf/axisx.glade:531 +#: src/emc/usr_intf/stepconf/axisy.glade:518 +#: src/emc/usr_intf/stepconf/axisz.glade:518 +#: src/emc/usr_intf/stepconf/axisa.glade:532 msgid "t_o" msgstr "_do" -#: src/emc/usr_intf/stepconf/stepconf.glade:3649 +#: src/emc/usr_intf/stepconf/axisx.glade:677 +#: src/emc/usr_intf/stepconf/axisy.glade:663 +#: src/emc/usr_intf/stepconf/axisz.glade:663 +#: src/emc/usr_intf/stepconf/axisa.glade:677 msgid "s" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3703 +#: src/emc/usr_intf/stepconf/axisx.glade:738 +#: src/emc/usr_intf/stepconf/axisy.glade:724 +#: src/emc/usr_intf/stepconf/axisz.glade:724 +#: src/emc/usr_intf/stepconf/axisa.glade:738 #, fuzzy msgid "T_est this axis" msgstr "Testiraj ovu osu" -#: src/emc/usr_intf/stepconf/stepconf.glade:3729 +#: src/emc/usr_intf/stepconf/axisx.glade:765 +#: src/emc/usr_intf/stepconf/axisy.glade:751 +#: src/emc/usr_intf/stepconf/axisz.glade:751 +#: src/emc/usr_intf/stepconf/axisa.glade:765 #, fuzzy msgid "Axis SCALE:" msgstr "Skala za osu" -#: src/emc/usr_intf/stepconf/stepconf.glade:3765 -msgid "Spindle Configuration" -msgstr "Konfiguration der Spindel" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3785 -#, fuzzy -msgid "Use spindle-at-speed:" -msgstr "Prekoracenje brzine obr.motora:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3841 -msgid "Speed display filter gain:" +#: src/emc/usr_intf/stepconf/axisx.glade:833 +#: src/emc/usr_intf/stepconf/axisy.glade:819 +#: src/emc/usr_intf/stepconf/axisz.glade:819 +#: src/emc/usr_intf/stepconf/axisa.glade:12 +msgid "Same" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3870 -msgid "Calibration:" -msgstr "Kalibrierung:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3883 -#, fuzzy -msgid "_Speed 1:" -msgstr "Geschwindigkeit 1" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3898 -#, fuzzy -msgid "_PWM 1:" -msgstr "PWM-Rate:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3916 +#: src/emc/usr_intf/stepconf/axisx.glade:836 +#: src/emc/usr_intf/stepconf/axisy.glade:822 +#: src/emc/usr_intf/stepconf/axisz.glade:822 +#: src/emc/usr_intf/stepconf/axisa.glade:15 #, fuzzy -msgid "S_peed 2:" -msgstr "Geschwindigkeit 2:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3931 -#, fuzzy -msgid "P_WM 2:" -msgstr "PWM-Rate:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3949 -#, fuzzy -msgid "PWM _Rate:" -msgstr "PWM-Rate:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4025 -#, fuzzy -msgid "_Cycles per revolution:" -msgstr "Zyklen pro Umdrehung:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4079 -msgid "Enter 0 Hz for \"PDM\" mode" -msgstr "Für den PDM-Modus 0Hz eingeben" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4091 -msgid "Scale %" +msgid "Opposite" msgstr "" +"Isti\n" +"Suprotan" -#: src/emc/usr_intf/stepconf/stepconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:60002 -msgid "Machine configuration complete" -msgstr "Maschinenkonfiguration komplett" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4114 -#: src/emc/usr_intf/pncconf/pncconf.glade:60003 +#: src/emc/usr_intf/stepconf/finished.glade:6 #, fuzzy msgid "" -"All the necessary information has now been gathered. Click \"Apply\" to " -"write your configuration files to disk.\n" -"If you experience lockups while running LinuxCNC, you will need to decrease " -"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" +"All the necessary information has now been gathered. \n" +"Click \"Done\" to write your configuration files to disk.\n" "\n" -"If you experience lost steps while running LinuxCNC, first verify that you " -"entered the proper timings for your stepper drivers. If that does not fix " -"the problem, then run a more thorough latency test as described on the " -"linuxcnc.org wiki:\n" +"If you experience lockups while running LinuxCNC:\n" +"-you will need to decrease the maximum velocity which will have the effect " +"of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC:\n" +"-first verify that you entered the proper timings for your stepper " +"drivers. \n" +"-then run a more thorough latency test as described on the linuxcnc.org " +"wiki.\n" " http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" "\n" -"If you experience the \"Unexpected Realtime Delay\" message, run a more " -"thorough latency test as described on the linuxcnc.org wiki: \n" +"If you experience the \"Unexpected Realtime Delay\" message:\n" +"-run a more thorough latency test as described on the linuxcnc.org wiki: \n" " http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" msgstr "" "Alle notwendigen Informationen wurden erfasst. Bestätigen Sie mit " @@ -7097,54 +9384,7 @@ msgstr "" "werden:\n" " http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting" -#: src/emc/usr_intf/stepconf/stepconf.glade:4160 -#: src/emc/usr_intf/pncconf/pncconf.glade:60462 -#: src/emc/usr_intf/pncconf/pncconf.glade:61557 -#: src/emc/usr_intf/pncconf/pncconf.glade:62650 -#: src/emc/usr_intf/pncconf/pncconf.glade:63743 -#: src/emc/usr_intf/pncconf/pncconf.glade:64842 -msgid "Acceleration:" -msgstr "Ubrzanje:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4174 -#: src/emc/usr_intf/pncconf/pncconf.glade:60231 -#: src/emc/usr_intf/pncconf/pncconf.glade:60695 -#: src/emc/usr_intf/pncconf/pncconf.glade:61788 -#: src/emc/usr_intf/pncconf/pncconf.glade:62881 -#: src/emc/usr_intf/pncconf/pncconf.glade:63974 -#: src/emc/usr_intf/pncconf/pncconf.glade:64954 -msgid "Jog:" -msgstr "Verfahren:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4188 -#: src/emc/usr_intf/pncconf/pncconf.glade:60681 -#: src/emc/usr_intf/pncconf/pncconf.glade:61774 -#: src/emc/usr_intf/pncconf/pncconf.glade:62867 -#: src/emc/usr_intf/pncconf/pncconf.glade:63960 -msgid "Test Area:" -msgstr "Testbereich:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4217 -msgid "mm/s^2" -msgstr "mm/s²" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4253 -msgid "mm/s" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4329 -#: src/emc/usr_intf/pncconf/pncconf.glade:60620 -#: src/emc/usr_intf/pncconf/pncconf.glade:61713 -#: src/emc/usr_intf/pncconf/pncconf.glade:62806 -#: src/emc/usr_intf/pncconf/pncconf.glade:63899 -#: src/emc/usr_intf/pncconf/pncconf.glade:65066 -msgid "" -"±\n" -"+\n" -"-\n" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.py:79 +#: src/emc/usr_intf/pncconf/pncconf.py:81 msgid "" "PNCconf encountered an error. The following information may be useful in " "troubleshooting:\n" @@ -7152,1242 +9392,1414 @@ msgid "" msgstr "" #: src/emc/usr_intf/pncconf/pncconf.py:149 +msgid "Keling 4030" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:151 msgid "Not Used" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:149 -#: src/emc/usr_intf/pncconf/pncconf.py:150 +#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:176 msgid "Dummy" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:150 +#: src/emc/usr_intf/pncconf/pncconf.py:152 msgid "8i20 Servo Drive" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:153 #, fuzzy msgid "POT Output" msgstr "Neupotrebljen" -#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:153 msgid "POT Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:153 #, fuzzy msgid "POT Direction" msgstr "X smer" -#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:154 msgid "GPIO Input" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:154 msgid "GPIO Output" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:154 msgid "GPIO O Drain" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 +#: src/emc/usr_intf/pncconf/pncconf.py:155 #, fuzzy msgid "Quad Encoder-A" msgstr "Neupotrebljen" -#: src/emc/usr_intf/pncconf/pncconf.py:153 +#: src/emc/usr_intf/pncconf/pncconf.py:155 #, fuzzy msgid "Quad Encoder-B" msgstr "Neupotrebljen" -#: src/emc/usr_intf/pncconf/pncconf.py:153 +#: src/emc/usr_intf/pncconf/pncconf.py:155 #, fuzzy msgid "Quad Encoder-I" msgstr "Neupotrebljen" -#: src/emc/usr_intf/pncconf/pncconf.py:153 +#: src/emc/usr_intf/pncconf/pncconf.py:155 #, fuzzy msgid "Quad Encoder-M" msgstr "Neupotrebljen" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 #, fuzzy msgid "Muxed Encoder 0" msgstr "Neupotrebljen" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 #, fuzzy msgid "Muxed Encoder 1" msgstr "Neupotrebljen" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 msgid "muxed enc" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 msgid "mux enc mask" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 msgid "mux select" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:155 +#: src/emc/usr_intf/pncconf/pncconf.py:157 #, fuzzy msgid "Resolver 0 Encoder" msgstr "Invertovana slika" -#: src/emc/usr_intf/pncconf/pncconf.py:155 +#: src/emc/usr_intf/pncconf/pncconf.py:157 #, fuzzy msgid "Resolver 1 Encoder" msgstr "Invertovana slika" -#: src/emc/usr_intf/pncconf/pncconf.py:155 +#: src/emc/usr_intf/pncconf/pncconf.py:157 #, fuzzy msgid "Resolver 2 Encoder" msgstr "Invertovana slika" -#: src/emc/usr_intf/pncconf/pncconf.py:156 +#: src/emc/usr_intf/pncconf/pncconf.py:158 #, fuzzy msgid "Resolver 3 Encoder" msgstr "Invertovana slika" -#: src/emc/usr_intf/pncconf/pncconf.py:156 +#: src/emc/usr_intf/pncconf/pncconf.py:158 #, fuzzy msgid "Resolver 4 Encoder" msgstr "Invertovana slika" -#: src/emc/usr_intf/pncconf/pncconf.py:156 +#: src/emc/usr_intf/pncconf/pncconf.py:158 #, fuzzy msgid "Resolver 5 Encoder" msgstr "Invertovana slika" -#: src/emc/usr_intf/pncconf/pncconf.py:157 +#: src/emc/usr_intf/pncconf/pncconf.py:159 #, fuzzy msgid "Step Gen-A" msgstr "X korak" -#: src/emc/usr_intf/pncconf/pncconf.py:157 +#: src/emc/usr_intf/pncconf/pncconf.py:159 msgid "Dir Gen-B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 +#: src/emc/usr_intf/pncconf/pncconf.py:159 msgid "Step/Dir Gen-C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 +#: src/emc/usr_intf/pncconf/pncconf.py:159 msgid "Step/Dir Gen-D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:158 +#: src/emc/usr_intf/pncconf/pncconf.py:160 msgid "Step/Dir Gen-E" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:158 +#: src/emc/usr_intf/pncconf/pncconf.py:160 msgid "Step/dir Gen-F" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 +#: src/emc/usr_intf/pncconf/pncconf.py:161 msgid "Pulse Width Gen-P" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 +#: src/emc/usr_intf/pncconf/pncconf.py:161 msgid "Pulse Width Gen-D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 +#: src/emc/usr_intf/pncconf/pncconf.py:161 msgid "Pulse Width Gen-E" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 +#: src/emc/usr_intf/pncconf/pncconf.py:162 msgid "Pulse Density Gen-P" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 +#: src/emc/usr_intf/pncconf/pncconf.py:162 msgid "Pulse Density Gen-D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 +#: src/emc/usr_intf/pncconf/pncconf.py:162 msgid "Pulse Density Gen-E" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 +#: src/emc/usr_intf/pncconf/pncconf.py:163 msgid "Up/Down Mode -Up" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 +#: src/emc/usr_intf/pncconf/pncconf.py:163 msgid "Up/Down Mode-Down" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 +#: src/emc/usr_intf/pncconf/pncconf.py:163 msgid "Up/Down Mode-Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 +#: src/emc/usr_intf/pncconf/pncconf.py:164 msgid "Motor Phase A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 +#: src/emc/usr_intf/pncconf/pncconf.py:164 msgid "Motor Phase B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 +#: src/emc/usr_intf/pncconf/pncconf.py:164 msgid "Motor Phase C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Phase A Not" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Phase B Not" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Phase C Not" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Fault" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:165 +#: src/emc/usr_intf/pncconf/pncconf.py:168 msgid "SMARTSERIAL-P0-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P0-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P0-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P1-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P1-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P1-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P2-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P2-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P2-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P3-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P3-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P3-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P4-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P4-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P4-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P5-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P5-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P5-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P6-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P6-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P6-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P7-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P7-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P7-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #1" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS0)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #2" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS2)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS3)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 I/O (SS0)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 Analog (SS1)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 I/O (SS3)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 Analog (SS4)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:176 +#, fuzzy +msgid "Analog Input" +msgstr "Manualna kontrola" + +#: src/emc/usr_intf/pncconf/pncconf.py:277 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +#, fuzzy +msgid "Axis Selection" +msgstr "A smer" + +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "" +"7i64-Input\n" +"P3 and P4" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "" +"7i64-Output\n" +"P2 and P5" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "7i64-Analog In" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P2" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P3" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB3" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB2" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:309 +msgid "" +"7i71-Output\n" +"TB3" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:309 +msgid "" +"7i71-Output\n" +"TB2" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-I/O\n" +"TB6" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-I/O\n" +"TB5" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:317 +#, fuzzy +msgid "" +"7i76-Analog Output\n" +"TB4" +msgstr "Neupotrebljen" + +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB8" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB7" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:325 +#, fuzzy +msgid "" +"7i77-Analog Output\n" +"TB5" +msgstr "Neupotrebljen" + +#: src/emc/usr_intf/pncconf/pncconf.py:333 +msgid "7i73-I/O\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:420 +#: src/emc/usr_intf/pncconf/pncconf.py:348 #, fuzzy msgid "Unused Unused" msgstr "Neupotrebljen" -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/pncconf/pncconf.py:370 #, fuzzy msgid "Machine Is Enabled" msgstr "_Ime masine:" -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/pncconf/pncconf.py:370 #, fuzzy msgid "X Amplifier Enable" msgstr "Pojacavac ukljucen" -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/pncconf/pncconf.py:370 #, fuzzy msgid "Y Amplifier Enable" msgstr "Pojacavac ukljucen" -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/pncconf/pncconf.py:370 #, fuzzy msgid "Z Amplifier Enable" msgstr "Pojacavac ukljucen" -#: src/emc/usr_intf/pncconf/pncconf.py:443 +#: src/emc/usr_intf/pncconf/pncconf.py:371 #, fuzzy msgid "A Amplifier Enable" msgstr "Pojacavac ukljucen" -#: src/emc/usr_intf/pncconf/pncconf.py:443 +#: src/emc/usr_intf/pncconf/pncconf.py:371 msgid "Force Pin True" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:450 +#: src/emc/usr_intf/pncconf/pncconf.py:378 #, fuzzy msgid "Unused Output" msgstr "Neupotrebljen" -#: src/emc/usr_intf/pncconf/pncconf.py:450 -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#, fuzzy -msgid "Spindle" -msgstr "Obradni motor +" - -#: src/emc/usr_intf/pncconf/pncconf.py:450 +#: src/emc/usr_intf/pncconf/pncconf.py:378 #, fuzzy msgid "Coolant" msgstr "Hladjenje:" -#: src/emc/usr_intf/pncconf/pncconf.py:451 +#: src/emc/usr_intf/pncconf/pncconf.py:379 #, fuzzy msgid "Control" msgstr "Ctrl-M" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:480 +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:409 msgid "Digital" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:481 +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:410 #, fuzzy msgid "X BLDC Control" msgstr "Ctrl-M" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 #, fuzzy msgid "Y BLDC Control" msgstr "Ctrl-M" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 #, fuzzy msgid "Z BLDC Control" msgstr "Ctrl-M" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 #, fuzzy msgid "A BLDC Control" msgstr "Ctrl-M" -#: src/emc/usr_intf/pncconf/pncconf.py:453 +#: src/emc/usr_intf/pncconf/pncconf.py:381 msgid " S BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:453 -#: src/emc/usr_intf/pncconf/pncconf.py:483 -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#: src/emc/usr_intf/pncconf/pncconf.py:585 -#: src/emc/usr_intf/pncconf/pncconf.py:588 -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.py:597 -#: src/emc/usr_intf/pncconf/pncconf.py:614 -#: src/emc/usr_intf/pncconf/pncconf.py:629 +#: src/emc/usr_intf/pncconf/pncconf.py:381 +#: src/emc/usr_intf/pncconf/pncconf.py:412 +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#: src/emc/usr_intf/pncconf/pncconf.py:516 +#: src/emc/usr_intf/pncconf/pncconf.py:519 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.py:528 +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#: src/emc/usr_intf/pncconf/pncconf.py:568 +#: src/emc/usr_intf/pncconf/pncconf.py:580 msgid "Custom Signals" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 #, fuzzy msgid "X Minimum Limit" msgstr "Minimum granic. X" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 #, fuzzy msgid "Y Minimum Limit" msgstr "Minimum granic. X" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 #, fuzzy msgid "Z Minimum Limit" msgstr "Minimum granic. X" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 #, fuzzy msgid "A Minimum Limit" msgstr "Minimum granic. X" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 #, fuzzy msgid "X Maximum Limit" msgstr "Maximum granic. X" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 #, fuzzy msgid "Y Maximum Limit" msgstr "Maximum granic. X" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 #, fuzzy msgid "Z Maximum Limit" msgstr "Maximum granic. X" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 #, fuzzy msgid "A Maximum Limit" msgstr "Maximum granic. X" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 #, fuzzy msgid "X Both Limit" msgstr "Oba granic. X" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 #, fuzzy msgid "Y Both Limit" msgstr "Oba granic. X" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 #, fuzzy msgid "Z Both Limit" msgstr "Oba granic. X" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 #, fuzzy msgid "A Both Limit" msgstr "Oba granic. X" -#: src/emc/usr_intf/pncconf/pncconf.py:458 -#: src/emc/usr_intf/pncconf/pncconf.py:546 +#: src/emc/usr_intf/pncconf/pncconf.py:386 +#: src/emc/usr_intf/pncconf/pncconf.py:477 #, fuzzy msgid "All Limits" msgstr "Svi granicni prek." -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:387 #, fuzzy msgid "X Home" msgstr "Home" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:387 #, fuzzy msgid "Y Home" msgstr "Home" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:387 #, fuzzy msgid "Z Home" msgstr "Home" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:387 #, fuzzy msgid "A Home" msgstr "Home" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:387 #, fuzzy msgid "All Home" msgstr "Sve Home" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 #, fuzzy msgid "X Minimum Limit + Home" msgstr "Min. granic. + Home. X" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 #, fuzzy msgid "Y Minimum Limit + Home" msgstr "Min. granic. + Home. X" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 #, fuzzy msgid "Z Minimum Limit + Home" msgstr "Min. granic. + Home. X" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 #, fuzzy msgid "A Minimum Limit + Home" msgstr "Min. granic. + Home. X" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 #, fuzzy msgid "X Maximum Limit + Home" msgstr "Max. granic. + Ref. X" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 #, fuzzy msgid "Y Maximum Limit + Home" msgstr "Max. granic. + Ref. X" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 #, fuzzy msgid "Z Maximum Limit + Home" msgstr "Max. granic. + Ref. X" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 #, fuzzy msgid "A Maximum Limit + Home" msgstr "Max. granic. + Ref. X" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 #, fuzzy msgid "X Both Limit + Home" msgstr "Oba. granic. + Ref. X" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 #, fuzzy msgid "Y Both Limit + Home" msgstr "Oba. granic. + Ref. X" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 #, fuzzy msgid "Z Both Limit + Home" msgstr "Oba. granic. + Ref. X" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 #, fuzzy msgid "A Both Limit + Home" msgstr "Oba. granic. + Ref. X" -#: src/emc/usr_intf/pncconf/pncconf.py:464 +#: src/emc/usr_intf/pncconf/pncconf.py:392 #, fuzzy msgid "Joint select A" msgstr "JOG izabrane ose" -#: src/emc/usr_intf/pncconf/pncconf.py:464 +#: src/emc/usr_intf/pncconf/pncconf.py:392 #, fuzzy msgid "Joint select B" msgstr "JOG izabrane ose" -#: src/emc/usr_intf/pncconf/pncconf.py:464 +#: src/emc/usr_intf/pncconf/pncconf.py:392 #, fuzzy msgid "Joint select C" msgstr "JOG izabrane ose" -#: src/emc/usr_intf/pncconf/pncconf.py:464 +#: src/emc/usr_intf/pncconf/pncconf.py:392 #, fuzzy msgid "Joint select D" msgstr "JOG izabrane ose" -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Jog incr A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Jog incr B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Jog incr C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Jog incr D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/pncconf/pncconf.py:393 #, fuzzy msgid "Feed Override incr A" msgstr "Prekoracenje posmaka:" -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/pncconf/pncconf.py:393 #, fuzzy msgid "Feed Override incr B" msgstr "Prekoracenje posmaka:" -#: src/emc/usr_intf/pncconf/pncconf.py:466 +#: src/emc/usr_intf/pncconf/pncconf.py:394 #, fuzzy msgid "Feed Override incr C" msgstr "Prekoracenje posmaka:" -#: src/emc/usr_intf/pncconf/pncconf.py:466 +#: src/emc/usr_intf/pncconf/pncconf.py:394 #, fuzzy msgid "Feed Override incr D" msgstr "Prekoracenje posmaka:" -#: src/emc/usr_intf/pncconf/pncconf.py:466 +#: src/emc/usr_intf/pncconf/pncconf.py:394 #, fuzzy msgid "Spindle Override incr A" msgstr "Prekoracenje brzine obr.motora:" -#: src/emc/usr_intf/pncconf/pncconf.py:466 +#: src/emc/usr_intf/pncconf/pncconf.py:394 #, fuzzy msgid "Spindle Override incr B" msgstr "Prekoracenje brzine obr.motora:" -#: src/emc/usr_intf/pncconf/pncconf.py:467 +#: src/emc/usr_intf/pncconf/pncconf.py:395 #, fuzzy msgid "Spindle Override incr C" msgstr "Prekoracenje brzine obr.motora:" -#: src/emc/usr_intf/pncconf/pncconf.py:467 +#: src/emc/usr_intf/pncconf/pncconf.py:395 #, fuzzy msgid "Spindle Override incr D" msgstr "Prekoracenje brzine obr.motora:" -#: src/emc/usr_intf/pncconf/pncconf.py:467 +#: src/emc/usr_intf/pncconf/pncconf.py:395 msgid "Max Vel Override incr A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:467 +#: src/emc/usr_intf/pncconf/pncconf.py:395 msgid "Max Vel Override incr B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:468 +#: src/emc/usr_intf/pncconf/pncconf.py:396 msgid "Max Vel Override incr C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:468 +#: src/emc/usr_intf/pncconf/pncconf.py:396 msgid "Max Vel Override incr D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:469 +#: src/emc/usr_intf/pncconf/pncconf.py:396 +#, fuzzy +msgid "Feed Override enable" +msgstr "Prekoracenje posmaka:" + +#: src/emc/usr_intf/pncconf/pncconf.py:396 +#, fuzzy +msgid "Spindle Override enable" +msgstr "Prekoracenje brzine obr.motora:" + +#: src/emc/usr_intf/pncconf/pncconf.py:397 +#, fuzzy +msgid "Max Vel Override enable" +msgstr "Prekoracenje posmaka:" + +#: src/emc/usr_intf/pncconf/pncconf.py:398 #, fuzzy msgid "Manual Spindle CW" msgstr "Obradni motor +" -#: src/emc/usr_intf/pncconf/pncconf.py:469 +#: src/emc/usr_intf/pncconf/pncconf.py:398 #, fuzzy msgid "Manual Spindle CCW" msgstr "Obradni motor -" -#: src/emc/usr_intf/pncconf/pncconf.py:469 +#: src/emc/usr_intf/pncconf/pncconf.py:398 #, fuzzy msgid "Manual Spindle Stop" msgstr "Index. sig. enkodera obr.mot." -#: src/emc/usr_intf/pncconf/pncconf.py:469 +#: src/emc/usr_intf/pncconf/pncconf.py:398 #, fuzzy msgid "Spindle Up-To-Speed" msgstr "Brzina obradnog motora (1/min)" -#: src/emc/usr_intf/pncconf/pncconf.py:470 +#: src/emc/usr_intf/pncconf/pncconf.py:399 msgid "Cycle Start" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:470 +#: src/emc/usr_intf/pncconf/pncconf.py:399 msgid "Abort" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:470 +#: src/emc/usr_intf/pncconf/pncconf.py:399 #, fuzzy msgid "Single Step" msgstr "Duzina _koraka:" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 msgid "Jog X +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 msgid "Jog X -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 msgid "Jog Y +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 msgid "Jog Y -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 msgid "Jog Z +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 msgid "Jog Z -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 msgid "Jog A +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 msgid "Jog A -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:478 +#: src/emc/usr_intf/pncconf/pncconf.py:407 #, fuzzy msgid "Jog button selected +" msgstr "JOG izabrane ose" -#: src/emc/usr_intf/pncconf/pncconf.py:478 +#: src/emc/usr_intf/pncconf/pncconf.py:407 #, fuzzy msgid "Jog button selected -" msgstr "JOG izabrane ose" -#: src/emc/usr_intf/pncconf/pncconf.py:479 +#: src/emc/usr_intf/pncconf/pncconf.py:408 #, fuzzy msgid "Unused Input" msgstr "Neupotrebljen" -#: src/emc/usr_intf/pncconf/pncconf.py:479 +#: src/emc/usr_intf/pncconf/pncconf.py:408 #, fuzzy msgid "Limits" msgstr "Svi granicni prek." -#: src/emc/usr_intf/pncconf/pncconf.py:479 +#: src/emc/usr_intf/pncconf/pncconf.py:408 msgid "Limts/Home Shared" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#, fuzzy -msgid "Axis Selection" -msgstr "A smer" - -#: src/emc/usr_intf/pncconf/pncconf.py:480 +#: src/emc/usr_intf/pncconf/pncconf.py:409 #, fuzzy msgid "Overrides" msgstr "Prekoraci ogranicenja" -#: src/emc/usr_intf/pncconf/pncconf.py:481 +#: src/emc/usr_intf/pncconf/pncconf.py:410 #, fuzzy msgid "Operation" msgstr "Ubrzanje:" -#: src/emc/usr_intf/pncconf/pncconf.py:481 +#: src/emc/usr_intf/pncconf/pncconf.py:410 #, fuzzy msgid "External Control" msgstr "Manualna kontrola" -#: src/emc/usr_intf/pncconf/pncconf.py:481 +#: src/emc/usr_intf/pncconf/pncconf.py:410 #, fuzzy msgid "Axis rapid" msgstr "Ose:" -#: src/emc/usr_intf/pncconf/pncconf.py:483 +#: src/emc/usr_intf/pncconf/pncconf.py:412 #, fuzzy msgid "S BLDC Control" msgstr "Ctrl-M" -#: src/emc/usr_intf/pncconf/pncconf.py:556 +#: src/emc/usr_intf/pncconf/pncconf.py:487 #, fuzzy msgid "Unused PWM Gen" msgstr "Neupotrebljen" -#: src/emc/usr_intf/pncconf/pncconf.py:556 +#: src/emc/usr_intf/pncconf/pncconf.py:487 #, fuzzy msgid "X Axis PWM" msgstr "Ose:" -#: src/emc/usr_intf/pncconf/pncconf.py:556 +#: src/emc/usr_intf/pncconf/pncconf.py:487 #, fuzzy msgid "Y Axis PWM" msgstr "Ose:" -#: src/emc/usr_intf/pncconf/pncconf.py:557 +#: src/emc/usr_intf/pncconf/pncconf.py:488 #, fuzzy msgid "Z Axis PWM" msgstr "Ose:" -#: src/emc/usr_intf/pncconf/pncconf.py:557 +#: src/emc/usr_intf/pncconf/pncconf.py:488 #, fuzzy msgid "A Axis PWM" msgstr "Ose:" -#: src/emc/usr_intf/pncconf/pncconf.py:581 +#: src/emc/usr_intf/pncconf/pncconf.py:512 #, fuzzy msgid "X Encoder" msgstr "END" -#: src/emc/usr_intf/pncconf/pncconf.py:581 +#: src/emc/usr_intf/pncconf/pncconf.py:512 #, fuzzy msgid "Y Encoder" msgstr "END" -#: src/emc/usr_intf/pncconf/pncconf.py:581 +#: src/emc/usr_intf/pncconf/pncconf.py:512 #, fuzzy msgid "Z Encoder" msgstr "END" -#: src/emc/usr_intf/pncconf/pncconf.py:581 +#: src/emc/usr_intf/pncconf/pncconf.py:512 #, fuzzy msgid "A Encoder" msgstr "END" -#: src/emc/usr_intf/pncconf/pncconf.py:581 +#: src/emc/usr_intf/pncconf/pncconf.py:512 #, fuzzy msgid "Spindle Encoder" msgstr "Obradni motor faza A" -#: src/emc/usr_intf/pncconf/pncconf.py:582 +#: src/emc/usr_intf/pncconf/pncconf.py:513 msgid "X Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 +#: src/emc/usr_intf/pncconf/pncconf.py:513 msgid "Y Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 +#: src/emc/usr_intf/pncconf/pncconf.py:513 msgid "Z Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 +#: src/emc/usr_intf/pncconf/pncconf.py:513 msgid "A Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 +#: src/emc/usr_intf/pncconf/pncconf.py:513 msgid "Multi Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:583 +#: src/emc/usr_intf/pncconf/pncconf.py:514 #, fuzzy msgid "Feed Override" msgstr "Prekoracenje posmaka:" -#: src/emc/usr_intf/pncconf/pncconf.py:583 +#: src/emc/usr_intf/pncconf/pncconf.py:514 #, fuzzy msgid "spindle Override" msgstr "Prekoracenje brzine obr.motora:" -#: src/emc/usr_intf/pncconf/pncconf.py:583 +#: src/emc/usr_intf/pncconf/pncconf.py:514 #, fuzzy msgid "Max Vel Override" msgstr "Prekoracenje posmaka:" -#: src/emc/usr_intf/pncconf/pncconf.py:584 +#: src/emc/usr_intf/pncconf/pncconf.py:515 #, fuzzy msgid "Unused Encoder" msgstr "Neupotrebljen" -#: src/emc/usr_intf/pncconf/pncconf.py:584 +#: src/emc/usr_intf/pncconf/pncconf.py:515 #, fuzzy msgid "Axis Encoder" msgstr "END" -#: src/emc/usr_intf/pncconf/pncconf.py:584 +#: src/emc/usr_intf/pncconf/pncconf.py:515 msgid "MPG Jog Controls" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:584 +#: src/emc/usr_intf/pncconf/pncconf.py:515 msgid "Override MPG control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 +#: src/emc/usr_intf/pncconf/pncconf.py:518 #, fuzzy msgid "Unused Resolver" msgstr "Neupotrebljen" -#: src/emc/usr_intf/pncconf/pncconf.py:587 +#: src/emc/usr_intf/pncconf/pncconf.py:518 msgid "X Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 +#: src/emc/usr_intf/pncconf/pncconf.py:518 msgid "Y Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 +#: src/emc/usr_intf/pncconf/pncconf.py:518 msgid "Z Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:588 +#: src/emc/usr_intf/pncconf/pncconf.py:519 msgid "A Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:588 +#: src/emc/usr_intf/pncconf/pncconf.py:519 msgid "S Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:592 +#: src/emc/usr_intf/pncconf/pncconf.py:523 #, fuzzy msgid "Unused 8I20" msgstr "Neupotrebljen" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:61457 +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "X Axis" msgstr "Ose:" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:62549 +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Y Axis" msgstr "Ose:" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:63642 +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Z Axis" msgstr "Ose:" -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.glade:64735 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "A Axis" msgstr "Ose:" -#: src/emc/usr_intf/pncconf/pncconf.py:597 +#: src/emc/usr_intf/pncconf/pncconf.py:528 #, fuzzy msgid "Unused Analog Output" msgstr "Neupotrebljen" -#: src/emc/usr_intf/pncconf/pncconf.py:597 +#: src/emc/usr_intf/pncconf/pncconf.py:528 #, fuzzy msgid "Spindle Output" msgstr "Obradni motor +" -#: src/emc/usr_intf/pncconf/pncconf.py:613 +#: src/emc/usr_intf/pncconf/pncconf.py:551 #, fuzzy msgid "Unused StepGen" msgstr "Neupotrebljen" -#: src/emc/usr_intf/pncconf/pncconf.py:613 +#: src/emc/usr_intf/pncconf/pncconf.py:551 #, fuzzy msgid "X Axis StepGen" msgstr "Neupotrebljen" -#: src/emc/usr_intf/pncconf/pncconf.py:613 +#: src/emc/usr_intf/pncconf/pncconf.py:551 #, fuzzy msgid "Y Axis StepGen" msgstr "Neupotrebljen" -#: src/emc/usr_intf/pncconf/pncconf.py:613 +#: src/emc/usr_intf/pncconf/pncconf.py:551 #, fuzzy msgid "Z Axis StepGen" msgstr "Neupotrebljen" -#: src/emc/usr_intf/pncconf/pncconf.py:614 +#: src/emc/usr_intf/pncconf/pncconf.py:552 +#, fuzzy +msgid "A Axis StepGen" +msgstr "Neupotrebljen" + +#: src/emc/usr_intf/pncconf/pncconf.py:552 +#, fuzzy +msgid "Spindle StepGen" +msgstr "Index. sig. enkodera obr.mot." + +#: src/emc/usr_intf/pncconf/pncconf.py:552 +#, fuzzy +msgid "X2 Tandem StepGen" +msgstr "Index. sig. enkodera obr.mot." + +#: src/emc/usr_intf/pncconf/pncconf.py:552 +#, fuzzy +msgid "Y2 Tandem StepGen" +msgstr "Index. sig. enkodera obr.mot." + +#: src/emc/usr_intf/pncconf/pncconf.py:553 #, fuzzy -msgid "A Axis StepGen" -msgstr "Neupotrebljen" +msgid "Z2 Tandem StepGen" +msgstr "Index. sig. enkodera obr.mot." -#: src/emc/usr_intf/pncconf/pncconf.py:614 +#: src/emc/usr_intf/pncconf/pncconf.py:553 #, fuzzy -msgid "Spindle StepGen" -msgstr "Index. sig. enkodera obr.mot." +msgid "Charge Pump StepGen" +msgstr "Charge Pump" -#: src/emc/usr_intf/pncconf/pncconf.py:628 +#: src/emc/usr_intf/pncconf/pncconf.py:567 #, fuzzy msgid "Unused TPPWM Gen" msgstr "Neupotrebljen" -#: src/emc/usr_intf/pncconf/pncconf.py:628 +#: src/emc/usr_intf/pncconf/pncconf.py:567 msgid "X Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:628 +#: src/emc/usr_intf/pncconf/pncconf.py:567 msgid "Y Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 +#: src/emc/usr_intf/pncconf/pncconf.py:568 msgid "Z Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 +#: src/emc/usr_intf/pncconf/pncconf.py:568 msgid "A Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 +#: src/emc/usr_intf/pncconf/pncconf.py:568 msgid "S Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -#: src/emc/usr_intf/pncconf/pncconf.py:6557 +#: src/emc/usr_intf/pncconf/pncconf.py:576 +#: src/emc/usr_intf/pncconf/pncconf.py:6882 #, fuzzy msgid "Unused Channel" msgstr "Neupotrebljen" -#: src/emc/usr_intf/pncconf/pncconf.py:636 +#: src/emc/usr_intf/pncconf/pncconf.py:576 #, fuzzy msgid "8i20 Amplifier Card" msgstr "Pojacavac ukljucen" -#: src/emc/usr_intf/pncconf/pncconf.py:636 +#: src/emc/usr_intf/pncconf/pncconf.py:576 msgid "7i64 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 +#: src/emc/usr_intf/pncconf/pncconf.py:576 msgid "7i69 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 +#: src/emc/usr_intf/pncconf/pncconf.py:577 msgid "7i70 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 +#: src/emc/usr_intf/pncconf/pncconf.py:577 msgid "7i71 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 +#: src/emc/usr_intf/pncconf/pncconf.py:577 msgid "7i76 Mode 0 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:722 +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i77 Mode 0 I/O Card" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:578 +msgid "7i73 Mode 1 Pendant Card" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:580 +#, fuzzy +msgid "Unused Analog In" +msgstr "Neupotrebljen" + +#: src/emc/usr_intf/pncconf/pncconf.py:676 #, fuzzy msgid "my_LinuxCNC_machine" msgstr "_Masina" -#: src/emc/usr_intf/pncconf/pncconf.py:1328 +#: src/emc/usr_intf/pncconf/pncconf.py:939 +#: src/emc/usr_intf/pncconf/pncconf.py:941 +msgid "Enter Address" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:1290 msgid "" "This configuration was saved with an earlier version of pncconf which may be " "incompatible.\n" @@ -8397,12 +10809,12 @@ msgid "" "version of PNConf - ask on the LinuxCNC forum - it may be possible.." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1334 +#: src/emc/usr_intf/pncconf/pncconf.py:1296 #, fuzzy, python-format msgid "File %r was modified since it was written by PNCconf" msgstr "Datoteka %r je izmenjena i izmene sacuvane u stepconf" -#: src/emc/usr_intf/pncconf/pncconf.py:1338 +#: src/emc/usr_intf/pncconf/pncconf.py:1300 #, fuzzy msgid "" "Saving this configuration file will discard configuration changes made " @@ -8411,141 +10823,130 @@ msgstr "" "Cuvanjem ove konfiguracione datoteke bice izgubljeni parametri konfiguracije " "koji se ne cuvaju u datoteci stepconf" -#: src/emc/usr_intf/pncconf/pncconf.py:1365 -#: src/emc/usr_intf/pncconf/pncconf.py:2368 +#: src/emc/usr_intf/pncconf/pncconf.py:1327 +#: src/emc/usr_intf/pncconf/pncconf.py:2421 #, fuzzy, python-format msgid "# Generated by PNCconf at %s" msgstr "# Generisao stepconf %s" -#: src/emc/usr_intf/pncconf/pncconf.py:1367 -#: src/emc/usr_intf/pncconf/pncconf.py:2370 +#: src/emc/usr_intf/pncconf/pncconf.py:1329 +#: src/emc/usr_intf/pncconf/pncconf.py:2423 #, fuzzy msgid "# overwritten when you run PNCconf again" msgstr "# prepisane pri sledecem pokretanju stepconf" -#: src/emc/usr_intf/pncconf/pncconf.py:2070 +#: src/emc/usr_intf/pncconf/pncconf.py:2134 msgid "# Use ACTUAL spindle velocity from spindle encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2071 +#: src/emc/usr_intf/pncconf/pncconf.py:2135 msgid "# spindle-velocity bounces around so we filter it with lowpass" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2072 +#: src/emc/usr_intf/pncconf/pncconf.py:2136 msgid "" "# spindle-velocity is signed so we use absolute component to remove sign" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2073 +#: src/emc/usr_intf/pncconf/pncconf.py:2137 msgid "# ACTUAL velocity is in RPS not RPM so we scale it." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2082 -msgid "" -"# Use COMMANDED spindle velocity from LinuxCNC because no spindle encoder " -"was specified" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.py:2083 -msgid "" -"# COMMANDED velocity is signed so we use absolute component to remove sign" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.py:2727 +#: src/emc/usr_intf/pncconf/pncconf.py:2821 msgid "# connect miscellaneous signals" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2730 +#: src/emc/usr_intf/pncconf/pncconf.py:2824 msgid "# ---HALUI signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2749 +#: src/emc/usr_intf/pncconf/pncconf.py:2843 msgid "# ---charge pump signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2753 +#: src/emc/usr_intf/pncconf/pncconf.py:2847 msgid "# ---coolant signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2758 +#: src/emc/usr_intf/pncconf/pncconf.py:2852 msgid "# ---probe signal---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2763 +#: src/emc/usr_intf/pncconf/pncconf.py:2857 msgid "# ---jog button signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2768 +#: src/emc/usr_intf/pncconf/pncconf.py:2862 msgid "# ---USB device jog button signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2803 -#: src/emc/usr_intf/pncconf/pncconf.py:2825 +#: src/emc/usr_intf/pncconf/pncconf.py:2903 +#: src/emc/usr_intf/pncconf/pncconf.py:2929 msgid "# ---mpg signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2971 +#: src/emc/usr_intf/pncconf/pncconf.py:3111 msgid "# ---motion control signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2976 +#: src/emc/usr_intf/pncconf/pncconf.py:3116 msgid "# ---digital in / out signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2986 +#: src/emc/usr_intf/pncconf/pncconf.py:3126 msgid "# ---estop signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3005 +#: src/emc/usr_intf/pncconf/pncconf.py:3145 msgid "# ---manual tool change signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3014 +#: src/emc/usr_intf/pncconf/pncconf.py:3154 msgid "# ---toolchange signals for custom tool changer---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3036 +#: src/emc/usr_intf/pncconf/pncconf.py:3176 msgid "# --- Classicladder signals for Z axis Auto touch off program---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3055 +#: src/emc/usr_intf/pncconf/pncconf.py:3195 msgid "# These files are loaded post gladeVCP, in the order they appear" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3069 -#: src/emc/usr_intf/pncconf/pncconf.py:3136 +#: src/emc/usr_intf/pncconf/pncconf.py:3209 +#: src/emc/usr_intf/pncconf/pncconf.py:3276 #, fuzzy msgid "# _DO NOT_ include your HAL commands here." msgstr "" "# Benutzerdefinierte HAL-Anweisungen können nachfolgend angegeben werden" -#: src/emc/usr_intf/pncconf/pncconf.py:3070 +#: src/emc/usr_intf/pncconf/pncconf.py:3210 msgid "# Put custom HAL commands in custom_gvcp.hal" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3073 +#: src/emc/usr_intf/pncconf/pncconf.py:3213 msgid "# **** Setup of spindle speed display using gladevcp ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3082 +#: src/emc/usr_intf/pncconf/pncconf.py:3222 msgid "# **** Setup GLADE MDI buttons ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3095 +#: src/emc/usr_intf/pncconf/pncconf.py:3235 msgid "" "# **** Z axis touch-off button - requires the touch-off classicladder " "program ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3125 +#: src/emc/usr_intf/pncconf/pncconf.py:3265 msgid "# These files are loaded post GUI, in the order they appear" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3137 +#: src/emc/usr_intf/pncconf/pncconf.py:3277 msgid "# Put custom HAL commands in custom_postgui.hal" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3138 +#: src/emc/usr_intf/pncconf/pncconf.py:3278 #, fuzzy msgid "# The commands in this file are run after the GUI loads" msgstr "" @@ -8553,111 +10954,116 @@ msgstr "" "ausgeführt.\n" "# Diese Datei wird nicht überschrieben, wenn stepconf erneut ausgeführt wird." -#: src/emc/usr_intf/pncconf/pncconf.py:3148 +#: src/emc/usr_intf/pncconf/pncconf.py:3288 msgid "# **** Setup of spindle speed display using pyvcp -END ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3160 +#: src/emc/usr_intf/pncconf/pncconf.py:3300 #, fuzzy msgid "# This file will not be overwritten when you run PNCconf again" msgstr "" "# Diese Datei wird überschrieben, wenn stepconf erneut ausgeführt wird." -#: src/emc/usr_intf/pncconf/pncconf.py:3166 +#: src/emc/usr_intf/pncconf/pncconf.py:3306 msgid "# These commands are required for Touchy GUI" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3218 +#: src/emc/usr_intf/pncconf/pncconf.py:3358 #, fuzzy, python-format msgid "Generated by PNCconf at %s" msgstr "Erstell durch stepconf am %s" -#: src/emc/usr_intf/pncconf/pncconf.py:3230 +#: src/emc/usr_intf/pncconf/pncconf.py:3370 msgid "configures LinuxCNC as:\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3231 +#: src/emc/usr_intf/pncconf/pncconf.py:3371 msgid "type CNC\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3232 +#: src/emc/usr_intf/pncconf/pncconf.py:3372 msgid "will be used as the frontend display" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3241 +#: src/emc/usr_intf/pncconf/pncconf.py:3381 msgid " connector" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3253 +#: src/emc/usr_intf/pncconf/pncconf.py:3393 msgid "invrt" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3262 +#: src/emc/usr_intf/pncconf/pncconf.py:3402 #, python-format msgid "%(name)s Parport" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3267 -#: src/emc/usr_intf/pncconf/pncconf.py:3275 +#: src/emc/usr_intf/pncconf/pncconf.py:3407 +#: src/emc/usr_intf/pncconf/pncconf.py:3415 msgid "-> inverted" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3269 +#: src/emc/usr_intf/pncconf/pncconf.py:3409 #, python-format msgid "pin# %(pinnum)d is connected to input signal:'%(data)s' %(mesag)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3277 +#: src/emc/usr_intf/pncconf/pncconf.py:3417 #, python-format msgid "pin# %(pinnum)d is connected to output signal:'%(data)s' %(mesag)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3455 +#: src/emc/usr_intf/pncconf/pncconf.py:3595 msgid "Desktop Launcher for LinuxCNC config made by PNCconf" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3725 +#: src/emc/usr_intf/pncconf/pncconf.py:3856 +#, python-format +msgid "%s Axis Configuration" +msgstr "Konfiguration der %s-Achse" + +#: src/emc/usr_intf/pncconf/pncconf.py:3881 #, fuzzy msgid "Spindle Motor/Encoder Configuration" msgstr "Konfiguracija X ose" -#: src/emc/usr_intf/pncconf/pncconf.py:3727 +#: src/emc/usr_intf/pncconf/pncconf.py:3883 #, fuzzy, python-format msgid "%s Axis Motor/Encoder Configuration" msgstr "Konfiguration der %s-Achse" -#: src/emc/usr_intf/pncconf/pncconf.py:3756 +#: src/emc/usr_intf/pncconf/pncconf.py:3912 #, fuzzy, python-format msgid "%s Parallel Port Setup" msgstr "Podesavanje paralelnog porta" -#: src/emc/usr_intf/pncconf/pncconf.py:3780 +#: src/emc/usr_intf/pncconf/pncconf.py:3936 #, python-format msgid "%s I/0 Setup" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4001 +#: src/emc/usr_intf/pncconf/pncconf.py:4162 #, fuzzy msgid "Quit PNCconfig and discard changes?" msgstr "Maschinenkonfiguration beenden und Änderungen verwerfen?" -#: src/emc/usr_intf/pncconf/pncconf.py:4042 -#: src/emc/usr_intf/pncconf/pncconf.glade:65849 +#: src/emc/usr_intf/pncconf/pncconf.py:4203 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Help Pages" msgstr "Dubina slike" -#: src/emc/usr_intf/pncconf/pncconf.py:4047 +#: src/emc/usr_intf/pncconf/pncconf.py:4208 msgid "Help page is unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4054 +#: src/emc/usr_intf/pncconf/pncconf.py:4218 msgid "" "You are using a simulated-realtime version of LinuxCNC, so testing / tuning " "of external hardware is unavailable." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4059 +#: src/emc/usr_intf/pncconf/pncconf.py:4223 #, python-format msgid "" "You are using a realtime version of LinuxCNC but didn't load a realtime " @@ -8667,112 +11073,105 @@ msgid "" " You are using the %(actual)s kernel instead of %(needed)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4079 -#, python-format -msgid "" -"You are have no hostmot2 firmware downloaded in folder:\n" -"%s\n" -"PNCconf will use sample firmware data\n" -"live testing will not be possible" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.py:4093 +#: src/emc/usr_intf/pncconf/pncconf.py:4256 #, fuzzy msgid "LinuxCNC 'PNCconf' configuration files" msgstr ".stepconf Dateien" -#: src/emc/usr_intf/pncconf/pncconf.py:4123 +#: src/emc/usr_intf/pncconf/pncconf.py:4286 msgid "" "It seems data in this file is from too old of a version of PNCConf to " "continue.\n" "." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4130 -#: src/emc/usr_intf/pncconf/pncconf.py:4228 +#: src/emc/usr_intf/pncconf/pncconf.py:4293 +#: src/emc/usr_intf/pncconf/pncconf.py:4391 #, fuzzy, python-format msgid "Point and click configuration - %s.pncconf " msgstr "EMC2 konfiguracija masine" -#: src/emc/usr_intf/pncconf/pncconf.py:4250 +#: src/emc/usr_intf/pncconf/pncconf.py:4413 msgid "" "You need to designate a parport and/or mesa I/O device before continuing." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4309 +#: src/emc/usr_intf/pncconf/pncconf.py:4481 msgid "" "You Have choosen to re-edit the current config, so you can not go to the new/" "modify page.\n" " Quit and reload PNCconf if you wish to build a new config." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4313 +#: src/emc/usr_intf/pncconf/pncconf.py:4485 msgid "" "If you can not go to the new/modify page your current data will be lost.\n" "Ok to reset data and start a new configuration?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4594 +#: src/emc/usr_intf/pncconf/pncconf.py:4811 msgid "USB device Info Search" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4608 +#: src/emc/usr_intf/pncconf/pncconf.py:4825 msgid "USB device page is unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4673 +#: src/emc/usr_intf/pncconf/pncconf.py:4890 msgid "Pin names are unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4695 +#: src/emc/usr_intf/pncconf/pncconf.py:4912 msgid "Device names are unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4698 +#: src/emc/usr_intf/pncconf/pncconf.py:4915 msgid "No Pncconf made device rules were found\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4822 +#: src/emc/usr_intf/pncconf/pncconf.py:5041 msgid "" "OK to replace existing glade panel ?\n" "It will be renamed and added to 'backups' folder.\n" -" Clicking 'existing custom program' will aviod this warning. " +" Clicking 'existing custom program' will avoid this warning, but if you " +"change related options later -such as spindle feedback- the HAL connection " +"will not update" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4827 +#: src/emc/usr_intf/pncconf/pncconf.py:5047 msgid "" "OK to replace existing custom pyvcp panel?\n" "Existing pyvcp-panel.xml will be renamed and added to 'backups' folder\n" "Clicking 'existing custom program' will aviod this warning. " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5250 +#: src/emc/usr_intf/pncconf/pncconf.py:5493 msgid "" "You need to configure the mesa0 page.\n" " Choose the board type, firmware, component amounts and press 'Accept " "component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5254 +#: src/emc/usr_intf/pncconf/pncconf.py:5497 msgid "" "The chosen Mesa0 board is different from the current displayed.\n" "please press 'Accept component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5297 +#: src/emc/usr_intf/pncconf/pncconf.py:5540 msgid "" "You need to configure the mesa1 page.\n" " Choose the board type, firmware, component amounts and press 'Accept " "component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5301 +#: src/emc/usr_intf/pncconf/pncconf.py:5544 msgid "" "The chosen Mesa1 board is different from the current displayed.\n" "please press 'Accept component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5315 +#: src/emc/usr_intf/pncconf/pncconf.py:5558 msgid "" "Do to technical reasons this test panel can be loaded only once without " "reloading pncconf.You also will not be able to do any other testing untill " @@ -8781,196 +11180,207 @@ msgid "" "Do you wish to continue the test?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6699 +#: src/emc/usr_intf/pncconf/pncconf.py:7042 #, fuzzy msgid "First Parallel Port set for OUTPUT" msgstr "Podesavanje paralelnog porta" -#: src/emc/usr_intf/pncconf/pncconf.py:6701 +#: src/emc/usr_intf/pncconf/pncconf.py:7044 #, fuzzy msgid "First Parallel Port set for INPUT" msgstr "Podesavanje paralelnog porta" -#: src/emc/usr_intf/pncconf/pncconf.py:6725 +#: src/emc/usr_intf/pncconf/pncconf.py:7068 msgid "Second Parallel Port set for OUTPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6727 +#: src/emc/usr_intf/pncconf/pncconf.py:7070 #, fuzzy msgid "Second Parallel Port set for INPUT" msgstr "Podesavanje paralelnog porta" -#: src/emc/usr_intf/pncconf/pncconf.py:6739 +#: src/emc/usr_intf/pncconf/pncconf.py:7082 #, fuzzy msgid "Third Parallel Port set for OUTPUT" msgstr "Podesavanje paralelnog porta" -#: src/emc/usr_intf/pncconf/pncconf.py:6741 +#: src/emc/usr_intf/pncconf/pncconf.py:7084 #, fuzzy msgid "Third Parallel Port set for INPUT" msgstr "Podesavanje paralelnog porta" -#: src/emc/usr_intf/pncconf/pncconf.py:6866 +#: src/emc/usr_intf/pncconf/pncconf.py:7210 msgid "You can not have both steppers and pwm signals for spindle control\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6870 +#: src/emc/usr_intf/pncconf/pncconf.py:7214 #, python-format msgid "You forgot to designate a stepper or pwm signal for axis %s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6873 +#: src/emc/usr_intf/pncconf/pncconf.py:7217 #, python-format msgid "You forgot to designate an encoder /resolver signal for axis %s servo\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6876 +#: src/emc/usr_intf/pncconf/pncconf.py:7220 #, python-format msgid "You forgot to designate a pwm signal or stepper signal for axis %s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6879 +#: src/emc/usr_intf/pncconf/pncconf.py:7223 #, python-format msgid "You can not have both steppers and pwm signals for axis %s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6887 +#: src/emc/usr_intf/pncconf/pncconf.py:7226 +#, python-format +msgid "" +"If using a tandem axis stepper, you must select a master stepgen for axis " +"%s\n" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:7235 msgid "Touchy require an external cycle start signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6890 +#: src/emc/usr_intf/pncconf/pncconf.py:7238 msgid "Touchy require an external abort signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6893 +#: src/emc/usr_intf/pncconf/pncconf.py:7241 msgid "Touchy require an external single-step signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6896 +#: src/emc/usr_intf/pncconf/pncconf.py:7244 msgid "" "Touchy require an external multi handwheel MPG encoder signal on the mesa " "page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6899 +#: src/emc/usr_intf/pncconf/pncconf.py:7247 msgid "" "Touchy require 'external mpg jogging' to be selected on the external control " "page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6902 +#: src/emc/usr_intf/pncconf/pncconf.py:7250 msgid "" "Touchy require the external mpg to be in 'shared mpg' mode on the external " "controls page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6905 +#: src/emc/usr_intf/pncconf/pncconf.py:7253 msgid "" "Touchy require selectable increments to be unchecked on the external " "controls page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6909 +#: src/emc/usr_intf/pncconf/pncconf.py:7257 msgid "" "The 7i29 daughter board requires PWM type generators and a PWM base " "frequency of 20 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6912 +#: src/emc/usr_intf/pncconf/pncconf.py:7260 msgid "" "The 7i30 daughter board requires PWM type generators and a PWM base " "frequency of 20 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6915 +#: src/emc/usr_intf/pncconf/pncconf.py:7263 msgid "" "The 7i33 daughter board requires PDM type generators and a PDM base " "frequency of 6 Mhz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6918 +#: src/emc/usr_intf/pncconf/pncconf.py:7266 msgid "" "The 7i40 daughter board requires PWM type generators and a PWM base " "frequency of 50 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6921 +#: src/emc/usr_intf/pncconf/pncconf.py:7269 msgid "" "The 7i48 daughter board requires UDM type generators and a PWM base " "frequency of 24 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7148 +#: src/emc/usr_intf/pncconf/pncconf.py:7494 msgid "Gearbox Reduction Ratio" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7151 +#: src/emc/usr_intf/pncconf/pncconf.py:7497 msgid "Reduction Ratio" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7154 +#: src/emc/usr_intf/pncconf/pncconf.py:7500 #, fuzzy msgid "Leadscrew Pitch" msgstr "_korak navojnog vretena:" -#: src/emc/usr_intf/pncconf/pncconf.py:7157 -#: src/emc/usr_intf/pncconf/pncconf.glade:66327 -#: src/emc/usr_intf/pncconf/pncconf.glade:66622 +#: src/emc/usr_intf/pncconf/pncconf.py:7503 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Leadscrew TPI" msgstr "_korak navojnog vretena:" -#: src/emc/usr_intf/pncconf/pncconf.py:7161 -#: src/emc/usr_intf/pncconf/pncconf.py:7162 +#: src/emc/usr_intf/pncconf/pncconf.py:7507 +#: src/emc/usr_intf/pncconf/pncconf.py:7508 msgid "(" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7163 -#: src/emc/usr_intf/pncconf/pncconf.py:7173 -#: src/emc/usr_intf/pncconf/pncconf.py:7174 -#: src/emc/usr_intf/pncconf/pncconf.py:7175 +#: src/emc/usr_intf/pncconf/pncconf.py:7509 +#: src/emc/usr_intf/pncconf/pncconf.py:7519 +#: src/emc/usr_intf/pncconf/pncconf.py:7520 +#: src/emc/usr_intf/pncconf/pncconf.py:7521 #, fuzzy msgid " / min" msgstr "mm/s" -#: src/emc/usr_intf/pncconf/pncconf.py:7164 +#: src/emc/usr_intf/pncconf/pncconf.py:7510 #, fuzzy msgid " / sec²" msgstr "mm/s" -#: src/emc/usr_intf/pncconf/pncconf.py:7167 +#: src/emc/usr_intf/pncconf/pncconf.py:7513 #, fuzzy msgid " / Step" msgstr "mm / obr." -#: src/emc/usr_intf/pncconf/pncconf.py:7168 +#: src/emc/usr_intf/pncconf/pncconf.py:7514 #, fuzzy msgid "Steps / " msgstr "obr./in" -#: src/emc/usr_intf/pncconf/pncconf.py:7170 +#: src/emc/usr_intf/pncconf/pncconf.py:7516 #, fuzzy msgid " / encoder pulse" msgstr "Grad / Umdrehung" -#: src/emc/usr_intf/pncconf/pncconf.py:7171 +#: src/emc/usr_intf/pncconf/pncconf.py:7517 #, fuzzy msgid "Encoder pulses / " msgstr "mm / obr." -#: src/emc/usr_intf/pncconf/pncconf.py:7482 +#: src/emc/usr_intf/pncconf/pncconf.py:7525 +#, fuzzy +msgid "Resolver Scale:" +msgstr "Duzina _koraka:" + +#: src/emc/usr_intf/pncconf/pncconf.py:7826 msgid "Axis Scale Calculation" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7785 +#: src/emc/usr_intf/pncconf/pncconf.py:8133 msgid "You need to designate an E-stop input pin for this ladder program." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7797 +#: src/emc/usr_intf/pncconf/pncconf.py:8145 msgid "You need to designate a probe input pin for this ladder program." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7808 +#: src/emc/usr_intf/pncconf/pncconf.py:8156 msgid "" "OK to replace existing custom ladder program?\n" "Existing Custom.clp will be renamed custom_backup.clp.\n" @@ -8978,87 +11388,87 @@ msgid "" "ladder program' will avoid this warning" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8019 +#: src/emc/usr_intf/pncconf/pncconf.py:8374 msgid "Do you wish to continue to edit this configuration." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8058 +#: src/emc/usr_intf/pncconf/pncconf.py:8413 msgid "PCI search page is unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8176 +#: src/emc/usr_intf/pncconf/pncconf.py:8532 msgid "" "You specified there is an existing gladefile, But there is not one in the " "machine-named folder.." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8495 +#: src/emc/usr_intf/pncconf/pncconf.py:8856 msgid "Servo tuning is not avaiable in PNCconf yet\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8500 +#: src/emc/usr_intf/pncconf/pncconf.py:8861 #, fuzzy msgid "degrees" msgstr "Grad / Umdrehung" -#: src/emc/usr_intf/pncconf/pncconf.py:8501 +#: src/emc/usr_intf/pncconf/pncconf.py:8862 #, fuzzy msgid "degrees / minute" msgstr "Grad / Umdrehung" -#: src/emc/usr_intf/pncconf/pncconf.py:8502 +#: src/emc/usr_intf/pncconf/pncconf.py:8863 #, fuzzy msgid "degrees / second²" msgstr "Grad / Umdrehung" -#: src/emc/usr_intf/pncconf/pncconf.py:8504 +#: src/emc/usr_intf/pncconf/pncconf.py:8865 #, fuzzy msgid "revolutions" msgstr "Zyklen pro Umdrehung:" -#: src/emc/usr_intf/pncconf/pncconf.py:8505 +#: src/emc/usr_intf/pncconf/pncconf.py:8866 msgid "rpm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8506 +#: src/emc/usr_intf/pncconf/pncconf.py:8867 #, fuzzy msgid "revs / second²" msgstr "Grad / Umdrehung" -#: src/emc/usr_intf/pncconf/pncconf.py:8509 -#: src/emc/usr_intf/pncconf/pncconf.glade:58295 -#: src/emc/usr_intf/pncconf/pncconf.glade:58479 -#: src/emc/usr_intf/pncconf/pncconf.glade:58576 +#: src/emc/usr_intf/pncconf/pncconf.py:8870 +#: src/emc/usr_intf/pncconf/pncconf.glade:65184 +#: src/emc/usr_intf/pncconf/pncconf.glade:65281 +#: src/emc/usr_intf/pncconf/pncconf.glade:65465 #, fuzzy msgid "mm / minute" msgstr "mm / obr." -#: src/emc/usr_intf/pncconf/pncconf.py:8510 +#: src/emc/usr_intf/pncconf/pncconf.py:8871 #, fuzzy msgid "mm / second²" msgstr "mm/s" -#: src/emc/usr_intf/pncconf/pncconf.py:8513 +#: src/emc/usr_intf/pncconf/pncconf.py:8874 msgid "inches / minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8514 +#: src/emc/usr_intf/pncconf/pncconf.py:8875 #, fuzzy msgid "inches / second²" msgstr "Grad / Umdrehung" -#: src/emc/usr_intf/pncconf/pncconf.py:8646 +#: src/emc/usr_intf/pncconf/pncconf.py:9031 #, fuzzy, python-format msgid "%s Axis Tune" msgstr "Test %s-ose" -#: src/emc/usr_intf/pncconf/pncconf.py:8810 +#: src/emc/usr_intf/pncconf/pncconf.py:9195 msgid "" " You must designate a ENCODER / RESOLVER signal and an ANALOG SPINDLE signal " "for this axis test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8814 +#: src/emc/usr_intf/pncconf/pncconf.py:9199 msgid "" " You must designate a ENCODER / RESOLVER signal and a PWM signal for this " "axis test" @@ -9081,4628 +11491,5734 @@ msgid "" " \tmachines" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:34 -msgid "Create or Edit" +#: src/emc/usr_intf/pncconf/pncconf.glade:34 +msgid "Create or Edit" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:66 +msgid "Create a desktop launcher to start LinuxCNC with this configuration." +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:83 +msgid "Create a desktop shortcut (symlink) to configuration files." +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:148 +#, fuzzy +msgid "Create a new configuration" +msgstr "Kreiraj _novu konfiguraciju" + +#: src/emc/usr_intf/pncconf/pncconf.glade:175 +msgid "Basic machine information" +msgstr "Osnovne informacije o masini" + +#: src/emc/usr_intf/pncconf/pncconf.glade:214 +#, fuzzy +msgid "Machine Name:" +msgstr "_Ime masine:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:280 +#, fuzzy +msgid "Axis configuration:" +msgstr "Konfiguracija _osa:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:295 +msgid "" +"XYZ\n" +"XYZA\n" +"XZ (Lathe)" +msgstr "" +"XYZ\n" +"XYZA\n" +"XZ (Drehmaschine)" + +#: src/emc/usr_intf/pncconf/pncconf.glade:322 +#, fuzzy +msgid "Machine units:" +msgstr "_Jedinica mere:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:337 +msgid "" +"Inch\n" +"Millimeter" +msgstr "" +"Inc\n" +"Millimetar" + +#: src/emc/usr_intf/pncconf/pncconf.glade:363 +msgid "Machine Basics" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:416 +msgid "Actual Servo Period: " +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:475 +msgid "Recommend servo period: 1000000" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:494 +msgid "" +" Test Base\n" +"Period Jitter " +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:519 +msgid "Computer Response Time" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:561 +msgid "Mesa0 PCI / Parport Card:" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:571 +msgid "Mesa1 PCI / Parport Card:" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:584 +#, fuzzy +msgid "First Parport Address:" +msgstr "Adresa paralelnog porta:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:597 +#, fuzzy +msgid "Second Parport Address:" +msgstr "Adresa paralelnog porta:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:612 +#, fuzzy +msgid "Third Parport Address:" +msgstr "Adresa paralelnog porta:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:635 +#: src/emc/usr_intf/pncconf/pncconf.glade:643 +msgid "" +"5i20\n" +"5i23\n" +"5i22" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:716 +#: src/emc/usr_intf/pncconf/pncconf.glade:728 +#: src/emc/usr_intf/pncconf/pncconf.glade:741 +msgid "" +"In\n" +"Out" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:804 +msgid "" +"Add-on PCI\n" +" Parport\n" +" Address \n" +" Search" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:829 +msgid "I/O Control Ports/ Boards" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:878 +#, fuzzy +msgid "Axis" +msgstr "Ose:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:893 +msgid "TKLinuxCNC" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:907 +#, fuzzy +msgid "Mini" +msgstr "in" + +#: src/emc/usr_intf/pncconf/pncconf.glade:921 +#: src/emc/usr_intf/pncconf/pncconf.glade:6656 +#, fuzzy +msgid "Touchy" +msgstr "Iskljuceno" + +#: src/emc/usr_intf/pncconf/pncconf.glade:938 +msgid "GUI frontend list" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:973 +#, fuzzy +msgid "External Controls" +msgstr "Manualna kontrola" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1014 +msgid "Add device rule" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1027 +#, fuzzy +msgid "Test device" +msgstr "Testbereich:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1041 +msgid "Search for device rules" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1062 +#, fuzzy +msgid "Device Name:" +msgstr "_Ime masine:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1125 +msgid "A +" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1135 +msgid "A -" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1169 +#: src/emc/usr_intf/pncconf/pncconf.glade:1181 +#: src/emc/usr_intf/pncconf/pncconf.glade:1191 +#: src/emc/usr_intf/pncconf/pncconf.glade:1246 +#: src/emc/usr_intf/pncconf/pncconf.glade:1759 +msgid "mm/min " +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1269 +msgid " ab)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1282 +#: src/emc/usr_intf/pncconf/pncconf.glade:2493 +#: src/emc/usr_intf/pncconf/pncconf.glade:2927 +#: src/emc/usr_intf/pncconf/pncconf.glade:3808 +#: src/emc/usr_intf/pncconf/pncconf.glade:4689 +#, fuzzy +msgid " b)" +msgstr "Homin_g" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1293 +#: src/emc/usr_intf/pncconf/pncconf.glade:2482 +#: src/emc/usr_intf/pncconf/pncconf.glade:2916 +#: src/emc/usr_intf/pncconf/pncconf.glade:3797 +#: src/emc/usr_intf/pncconf/pncconf.glade:4678 +#, fuzzy +msgid " a)" +msgstr "Homin_g" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1305 +#: src/emc/usr_intf/pncconf/pncconf.glade:2385 +#: src/emc/usr_intf/pncconf/pncconf.glade:2867 +#: src/emc/usr_intf/pncconf/pncconf.glade:3748 +#: src/emc/usr_intf/pncconf/pncconf.glade:4629 +#, fuzzy +msgid "default" +msgstr "Index. sig. enkodera obr.mot." + +#: src/emc/usr_intf/pncconf/pncconf.glade:1336 +#: src/emc/usr_intf/pncconf/pncconf.glade:1476 +#, fuzzy +msgid "Jog Speed select A" +msgstr "JOG brzina:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1348 +msgid "X +" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1354 +msgid "Y +" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1364 +msgid "Z +" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1374 +msgid "X -" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1384 +msgid "Y -" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1396 +msgid "Z -" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1500 +#, fuzzy +msgid "Digital Control" +msgstr "Manualna kontrola" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1593 +#: src/emc/usr_intf/gscreen/gscreen.glade:502 +msgid "A" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1603 +#: src/emc/usr_intf/gscreen/gscreen.glade:374 +msgid "Z" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1613 +#: src/emc/usr_intf/pncconf/pncconf.glade:6134 +#: src/emc/usr_intf/pncconf/pncconf.glade:6458 +#: src/emc/usr_intf/pncconf/pncconf.glade:6860 +#: src/emc/usr_intf/pncconf/pncconf.glade:7235 +#: src/emc/usr_intf/gscreen/gscreen.glade:244 +msgid "Y" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1623 +msgid "X " +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1631 +#, fuzzy +msgid "Analog Control" +msgstr "Manualna kontrola" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1657 +#: src/emc/usr_intf/pncconf/pncconf.glade:1788 +#: src/emc/usr_intf/pncconf/pncconf.glade:2698 +#: src/emc/usr_intf/pncconf/pncconf.glade:3579 +#: src/emc/usr_intf/pncconf/pncconf.glade:4460 +#: src/emc/usr_intf/pncconf/pncconf.glade:5341 +#: src/emc/usr_intf/pncconf/pncconf.glade:64300 +msgid "Details" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1675 +msgid "USB Joystick Jogging " +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1719 +msgid "shared buttons for all axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:52 +#: src/emc/usr_intf/pncconf/pncconf.glade:1732 #, fuzzy -msgid "Create a new configuration" -msgstr "Kreiraj _novu konfiguraciju" +msgid "buttons for each axis" +msgstr "JOG cetvrta osa" -#: src/emc/usr_intf/pncconf/pncconf.glade:118 -msgid "Create a desktop shortcut (symlink) to configuration files." +#: src/emc/usr_intf/pncconf/pncconf.glade:1806 +msgid "External Button Jogging" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:135 -msgid "Create a desktop launcher to start LinuxCNC with this configuration." +#: src/emc/usr_intf/pncconf/pncconf.glade:1847 +msgid "Shared MPG / selectable axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:214 +#: src/emc/usr_intf/pncconf/pncconf.glade:1860 #, fuzzy -msgid "Machine Name:" -msgstr "_Ime masine:" +msgid "Mpg per axis" +msgstr "JOG prva osa" -#: src/emc/usr_intf/pncconf/pncconf.glade:281 +#: src/emc/usr_intf/pncconf/pncconf.glade:1875 #, fuzzy -msgid "Axis configuration:" -msgstr "Konfiguracija _osa:" +msgid "selectable MPG increments" +msgstr "Izaberi JOG inkrement" -#: src/emc/usr_intf/pncconf/pncconf.glade:316 +#: src/emc/usr_intf/pncconf/pncconf.glade:1940 +#: src/emc/usr_intf/pncconf/pncconf.glade:3379 +#: src/emc/usr_intf/pncconf/pncconf.glade:4260 +#: src/emc/usr_intf/pncconf/pncconf.glade:5141 #, fuzzy -msgid "Machine units:" -msgstr "_Jedinica mere:" +msgid " d)" +msgstr "Homin_g" -#: src/emc/usr_intf/pncconf/pncconf.glade:355 -msgid "Machine Basics" +#: src/emc/usr_intf/pncconf/pncconf.glade:1952 +#: src/emc/usr_intf/pncconf/pncconf.glade:3340 +#: src/emc/usr_intf/pncconf/pncconf.glade:4221 +#: src/emc/usr_intf/pncconf/pncconf.glade:5102 +msgid " abcd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:405 -msgid "Recommend servo period: 1000000" +#: src/emc/usr_intf/pncconf/pncconf.glade:1965 +#: src/emc/usr_intf/pncconf/pncconf.glade:3353 +#: src/emc/usr_intf/pncconf/pncconf.glade:4234 +#: src/emc/usr_intf/pncconf/pncconf.glade:5115 +msgid " bcd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:431 -msgid "Actual Servo Period: " +#: src/emc/usr_intf/pncconf/pncconf.glade:1978 +#: src/emc/usr_intf/pncconf/pncconf.glade:3366 +#: src/emc/usr_intf/pncconf/pncconf.glade:4247 +#: src/emc/usr_intf/pncconf/pncconf.glade:5128 +msgid " acd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:486 -msgid "" -" Test Base\n" -"Period Jitter " +#: src/emc/usr_intf/pncconf/pncconf.glade:1991 +#: src/emc/usr_intf/pncconf/pncconf.glade:3430 +#: src/emc/usr_intf/pncconf/pncconf.glade:4311 +#: src/emc/usr_intf/pncconf/pncconf.glade:5192 +msgid " cd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:511 -msgid "Computer Response Time" +#: src/emc/usr_intf/pncconf/pncconf.glade:2004 +#: src/emc/usr_intf/pncconf/pncconf.glade:3404 +#: src/emc/usr_intf/pncconf/pncconf.glade:4285 +#: src/emc/usr_intf/pncconf/pncconf.glade:5166 +msgid " bd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:553 -msgid "Mesa0 PCI / Parport Card:" +#: src/emc/usr_intf/pncconf/pncconf.glade:2017 +#: src/emc/usr_intf/pncconf/pncconf.glade:3391 +#: src/emc/usr_intf/pncconf/pncconf.glade:4272 +#: src/emc/usr_intf/pncconf/pncconf.glade:5153 +msgid " ad)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:563 -msgid "Mesa1 PCI / Parport Card:" +#: src/emc/usr_intf/pncconf/pncconf.glade:2030 +#: src/emc/usr_intf/pncconf/pncconf.glade:2514 +#: src/emc/usr_intf/pncconf/pncconf.glade:3059 +#: src/emc/usr_intf/pncconf/pncconf.glade:3940 +#: src/emc/usr_intf/pncconf/pncconf.glade:4821 +msgid " abc)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:576 +#: src/emc/usr_intf/pncconf/pncconf.glade:2041 +#: src/emc/usr_intf/pncconf/pncconf.glade:3026 +#: src/emc/usr_intf/pncconf/pncconf.glade:3907 +#: src/emc/usr_intf/pncconf/pncconf.glade:4788 #, fuzzy -msgid "First Parport Address:" -msgstr "Adresa paralelnog porta:" +msgid " c)" +msgstr "Homin_g" + +#: src/emc/usr_intf/pncconf/pncconf.glade:2207 +#: src/emc/usr_intf/pncconf/pncconf.glade:3049 +#: src/emc/usr_intf/pncconf/pncconf.glade:3930 +#: src/emc/usr_intf/pncconf/pncconf.glade:4811 +msgid " bc)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:2217 +#: src/emc/usr_intf/pncconf/pncconf.glade:3038 +#: src/emc/usr_intf/pncconf/pncconf.glade:3919 +#: src/emc/usr_intf/pncconf/pncconf.glade:4800 +msgid " ac)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:2504 +#: src/emc/usr_intf/pncconf/pncconf.glade:2938 +#: src/emc/usr_intf/pncconf/pncconf.glade:3819 +#: src/emc/usr_intf/pncconf/pncconf.glade:4700 +msgid " ab)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:2577 +msgid "ignore all inputs false" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:2592 +msgid "use gray code" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:2607 +#: src/emc/usr_intf/pncconf/pncconf.glade:3489 +#: src/emc/usr_intf/pncconf/pncconf.glade:4356 +#: src/emc/usr_intf/pncconf/pncconf.glade:5237 +msgid "use debounce" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:589 +#: src/emc/usr_intf/pncconf/pncconf.glade:2658 +#: src/emc/usr_intf/pncconf/pncconf.glade:3453 +#: src/emc/usr_intf/pncconf/pncconf.glade:4334 +#: src/emc/usr_intf/pncconf/pncconf.glade:5215 #, fuzzy -msgid "Second Parport Address:" -msgstr "Adresa paralelnog porta:" +msgid "Mux options" +msgstr "Pozicija:" -#: src/emc/usr_intf/pncconf/pncconf.glade:604 +#: src/emc/usr_intf/pncconf/pncconf.glade:2672 #, fuzzy -msgid "Third Parport Address:" -msgstr "Adresa paralelnog porta:" +msgid "increments" +msgstr "Izaberi JOG inkrement" -#: src/emc/usr_intf/pncconf/pncconf.glade:627 -#: src/emc/usr_intf/pncconf/pncconf.glade:635 -msgid "" -"5i20\n" -"5i23\n" -"5i22" +#: src/emc/usr_intf/pncconf/pncconf.glade:2716 +msgid "External MPG Jogging" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:708 -#: src/emc/usr_intf/pncconf/pncconf.glade:720 -#: src/emc/usr_intf/pncconf/pncconf.glade:733 -msgid "" -"In\n" -"Out" +#: src/emc/usr_intf/pncconf/pncconf.glade:2747 +#: src/emc/usr_intf/pncconf/pncconf.glade:3628 +#: src/emc/usr_intf/pncconf/pncconf.glade:4509 +msgid "Use MPG " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:796 -msgid "" -"Add-on PCI\n" -" Parport\n" -" Address \n" -" Search" +#: src/emc/usr_intf/pncconf/pncconf.glade:2760 +#: src/emc/usr_intf/pncconf/pncconf.glade:3641 +#: src/emc/usr_intf/pncconf/pncconf.glade:4522 +msgid "use switches" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:821 -msgid "I/O Control Ports/ Boards" +#: src/emc/usr_intf/pncconf/pncconf.glade:3417 +#: src/emc/usr_intf/pncconf/pncconf.glade:4298 +#: src/emc/usr_intf/pncconf/pncconf.glade:5179 +msgid " abd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:870 +#: src/emc/usr_intf/pncconf/pncconf.glade:3504 +#: src/emc/usr_intf/pncconf/pncconf.glade:4371 +#: src/emc/usr_intf/pncconf/pncconf.glade:5252 #, fuzzy -msgid "Axis" -msgstr "Ose:" +msgid "use graycode" +msgstr "Neupotrebljen" -#: src/emc/usr_intf/pncconf/pncconf.glade:885 -msgid "TKLinuxCNC" +#: src/emc/usr_intf/pncconf/pncconf.glade:3519 +#: src/emc/usr_intf/pncconf/pncconf.glade:4386 +#: src/emc/usr_intf/pncconf/pncconf.glade:5267 +msgid "ignore all-inputs false" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:899 +#: src/emc/usr_intf/pncconf/pncconf.glade:3563 +#: src/emc/usr_intf/pncconf/pncconf.glade:4444 +#: src/emc/usr_intf/pncconf/pncconf.glade:5325 #, fuzzy -msgid "Mini" -msgstr "in" +msgid "Increments" +msgstr "Izaberi JOG inkrement" -#: src/emc/usr_intf/pncconf/pncconf.glade:913 -#: src/emc/usr_intf/pncconf/pncconf.glade:6648 +#: src/emc/usr_intf/pncconf/pncconf.glade:3597 #, fuzzy -msgid "Touchy" -msgstr "Iskljuceno" +msgid "External Feed Override" +msgstr "Prekoracenje posmaka:" -#: src/emc/usr_intf/pncconf/pncconf.glade:930 -msgid "GUI frontend list" +#: src/emc/usr_intf/pncconf/pncconf.glade:4478 +msgid "Max Velocity Override" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:965 +#: src/emc/usr_intf/pncconf/pncconf.glade:5359 #, fuzzy -msgid "External Controls" -msgstr "Manualna kontrola" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1006 -msgid "Add device rule" -msgstr "" +msgid "External Spindle Override" +msgstr "Prekoracenje brzine obr.motora:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1019 +#: src/emc/usr_intf/pncconf/pncconf.glade:5387 #, fuzzy -msgid "Test device" -msgstr "Testbereich:" +msgid "GUI configuration" +msgstr "Konfiguracija _osa:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1033 -msgid "Search for device rules" +#: src/emc/usr_intf/pncconf/pncconf.glade:5406 +msgid "Frontend" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1054 +#: src/emc/usr_intf/pncconf/pncconf.glade:5566 #, fuzzy -msgid "Device Name:" -msgstr "_Ime masine:" +msgid "Position_offset" +msgstr "Pozicija:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1117 -#: src/emc/usr_intf/pncconf/pncconf.glade:1255 +#: src/emc/usr_intf/pncconf/pncconf.glade:5573 #, fuzzy -msgid "Jog Speed select A" -msgstr "JOG brzina:" +msgid "Position_feedback" +msgstr "Pozicija:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1195 -msgid "Z -" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5584 +#, fuzzy +msgid "Max Spindle Override " +msgstr "Prekoracenje brzine obr.motora:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1207 -msgid "Y -" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5606 +#, fuzzy +msgid "Min Spindle Override" +msgstr "Prekoracenje brzine obr.motora:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1219 -msgid "X -" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5665 +#, fuzzy +msgid "Max Feed Override" +msgstr "Prekoracenje posmaka:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1229 -msgid "Z +" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5702 +#, fuzzy +msgid "" +"Machine\n" +"Relative\n" +msgstr "relativna" -#: src/emc/usr_intf/pncconf/pncconf.glade:1239 -msgid "Y +" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5714 +#, fuzzy +msgid "" +"Commanded\n" +"Actual" +msgstr "zadata" -#: src/emc/usr_intf/pncconf/pncconf.glade:1249 -msgid "X +" +#: src/emc/usr_intf/pncconf/pncconf.glade:5729 +msgid "General GUI Defaults" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1289 -#: src/emc/usr_intf/pncconf/pncconf.glade:2208 -#: src/emc/usr_intf/pncconf/pncconf.glade:3496 -#: src/emc/usr_intf/pncconf/pncconf.glade:4377 -#: src/emc/usr_intf/pncconf/pncconf.glade:5258 +#: src/emc/usr_intf/pncconf/pncconf.glade:5811 #, fuzzy -msgid "default" -msgstr "Index. sig. enkodera obr.mot." +msgid "Default linear velocity " +msgstr "Brzina pri _trazenju referentne pozicije:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1299 -#: src/emc/usr_intf/pncconf/pncconf.glade:2107 -#: src/emc/usr_intf/pncconf/pncconf.glade:3443 -#: src/emc/usr_intf/pncconf/pncconf.glade:4324 -#: src/emc/usr_intf/pncconf/pncconf.glade:5205 +#: src/emc/usr_intf/pncconf/pncconf.glade:5818 #, fuzzy -msgid " a)" -msgstr "Homin_g" +msgid "Min linear velocity" +msgstr "Brzina pri _trazenju referentne pozicije:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1311 -#: src/emc/usr_intf/pncconf/pncconf.glade:2096 -#: src/emc/usr_intf/pncconf/pncconf.glade:3432 -#: src/emc/usr_intf/pncconf/pncconf.glade:4313 -#: src/emc/usr_intf/pncconf/pncconf.glade:5194 +#: src/emc/usr_intf/pncconf/pncconf.glade:5829 #, fuzzy -msgid " b)" -msgstr "Homin_g" +msgid "Max linear velocity" +msgstr "Maksinalna _Brzina:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1322 -msgid " ab)" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5879 +#: src/emc/usr_intf/pncconf/pncconf.glade:6085 +#: src/emc/usr_intf/pncconf/pncconf.glade:6097 +#, fuzzy +msgid "mm / min" +msgstr "mm/s" -#: src/emc/usr_intf/pncconf/pncconf.glade:1348 -#: src/emc/usr_intf/pncconf/pncconf.glade:1401 -#: src/emc/usr_intf/pncconf/pncconf.glade:1413 -#: src/emc/usr_intf/pncconf/pncconf.glade:1423 -#: src/emc/usr_intf/pncconf/pncconf.glade:1751 -msgid "mm/min " +#: src/emc/usr_intf/pncconf/pncconf.glade:5892 +msgid "Default Angular velocity " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1456 -msgid "A -" +#: src/emc/usr_intf/pncconf/pncconf.glade:5926 +msgid "gedit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1468 -msgid "A +" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5939 +#, fuzzy +msgid "Min Angular velocity" +msgstr "Maksinalna _Brzina:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1492 +#: src/emc/usr_intf/pncconf/pncconf.glade:5966 #, fuzzy -msgid "Digital Control" -msgstr "Manualna kontrola" +msgid "Increments " +msgstr "Izaberi JOG inkrement" -#: src/emc/usr_intf/pncconf/pncconf.glade:1539 -msgid "X " +#: src/emc/usr_intf/pncconf/pncconf.glade:5977 +msgid "5mm 1mm .5mm .1mm .05mm .01mm .005mm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1545 -#: src/emc/usr_intf/pncconf/pncconf.glade:5901 -#: src/emc/usr_intf/pncconf/pncconf.glade:6531 -#: src/emc/usr_intf/pncconf/pncconf.glade:6910 -#: src/emc/usr_intf/pncconf/pncconf.glade:7257 -msgid "Y" +#: src/emc/usr_intf/pncconf/pncconf.glade:5990 +#, fuzzy +msgid "Max Angular velocity" +msgstr "Maksinalna _Brzina:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:6017 +msgid "Axis Geometry" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1555 -msgid "Z" +#: src/emc/usr_intf/pncconf/pncconf.glade:6028 +msgid "xyzabc" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1565 -msgid "A" +#: src/emc/usr_intf/pncconf/pncconf.glade:6040 +#: src/emc/usr_intf/pncconf/pncconf.glade:6052 +#: src/emc/usr_intf/pncconf/pncconf.glade:6064 +#, fuzzy +msgid "Deg / min" +msgstr "Grad / Umdrehung" + +#: src/emc/usr_intf/pncconf/pncconf.glade:6113 +#: src/emc/usr_intf/pncconf/pncconf.glade:6484 +#: src/emc/usr_intf/pncconf/pncconf.glade:6839 +#: src/emc/usr_intf/pncconf/pncconf.glade:7262 +msgid "size" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1623 +#: src/emc/usr_intf/pncconf/pncconf.glade:6122 +#: src/emc/usr_intf/pncconf/pncconf.glade:6471 +#: src/emc/usr_intf/pncconf/pncconf.glade:6848 +#: src/emc/usr_intf/pncconf/pncconf.glade:7248 #, fuzzy -msgid "Analog Control" -msgstr "Manualna kontrola" +msgid "Position" +msgstr "Pozicija:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1649 -#: src/emc/usr_intf/pncconf/pncconf.glade:1780 -#: src/emc/usr_intf/pncconf/pncconf.glade:2690 -#: src/emc/usr_intf/pncconf/pncconf.glade:3571 -#: src/emc/usr_intf/pncconf/pncconf.glade:4452 -#: src/emc/usr_intf/pncconf/pncconf.glade:5333 -#: src/emc/usr_intf/pncconf/pncconf.glade:57371 -msgid "Details" +#: src/emc/usr_intf/pncconf/pncconf.glade:6159 +#: src/emc/usr_intf/pncconf/pncconf.glade:6433 +#: src/emc/usr_intf/pncconf/pncconf.glade:6885 +#: src/emc/usr_intf/pncconf/pncconf.glade:7210 +#: src/emc/usr_intf/gscreen/gscreen.glade:116 +msgid "X" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1667 -msgid "USB Joystick Jogging " +#: src/emc/usr_intf/pncconf/pncconf.glade:6171 +#: src/emc/usr_intf/pncconf/pncconf.glade:6423 +#: src/emc/usr_intf/pncconf/pncconf.glade:6897 +#: src/emc/usr_intf/pncconf/pncconf.glade:7200 +#: src/emc/usr_intf/gscreen/gscreen.glade:1142 +msgid "W" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1711 -msgid "shared buttons for all axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:6205 +#: src/emc/usr_intf/pncconf/pncconf.glade:6389 +#: src/emc/usr_intf/pncconf/pncconf.glade:6931 +#: src/emc/usr_intf/pncconf/pncconf.glade:7166 +msgid "H" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1724 -#, fuzzy -msgid "buttons for each axis" -msgstr "JOG cetvrta osa" +#: src/emc/usr_intf/pncconf/pncconf.glade:6227 +msgid "Force Axis to Maximize" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1798 -msgid "External Button Jogging" +#: src/emc/usr_intf/pncconf/pncconf.glade:6249 +msgid "AXIS defaults" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1839 -msgid "Shared MPG / selectable axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:6365 +msgid "Force Touchy to Maximize after positioning" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1852 -#, fuzzy -msgid "Mpg per axis" -msgstr "JOG prva osa" +#: src/emc/usr_intf/pncconf/pncconf.glade:6501 +#: src/emc/usr_intf/pncconf/pncconf.glade:7333 +msgid "Follow System Theme\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1867 -#, fuzzy -msgid "selectable MPG increments" -msgstr "Izaberi JOG inkrement" +#: src/emc/usr_intf/pncconf/pncconf.glade:6514 +#: src/emc/usr_intf/pncconf/pncconf.glade:7347 +msgid "GTK Theme" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1932 -#: src/emc/usr_intf/pncconf/pncconf.glade:2907 -#: src/emc/usr_intf/pncconf/pncconf.glade:3788 -#: src/emc/usr_intf/pncconf/pncconf.glade:4669 -#, fuzzy -msgid "Mux options" -msgstr "Pozicija:" +#: src/emc/usr_intf/pncconf/pncconf.glade:6540 +#: src/emc/usr_intf/gscreen/gscreen.glade:1857 +msgid "Absolute Text Color" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1980 -#: src/emc/usr_intf/pncconf/pncconf.glade:2868 -#: src/emc/usr_intf/pncconf/pncconf.glade:3763 -#: src/emc/usr_intf/pncconf/pncconf.glade:4644 -msgid "use debounce" +#: src/emc/usr_intf/pncconf/pncconf.glade:6603 +msgid "Absolute Textcolor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1995 -msgid "use gray code" +#: src/emc/usr_intf/pncconf/pncconf.glade:6616 +#, fuzzy +msgid "Relative Textcolor" +msgstr "Rela_tivna pozicija" + +#: src/emc/usr_intf/pncconf/pncconf.glade:6629 +msgid "DTG Textcolor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2010 -msgid "ignore all inputs false" +#: src/emc/usr_intf/pncconf/pncconf.glade:6642 +msgid "Error Textcolor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2035 -#: src/emc/usr_intf/pncconf/pncconf.glade:2048 -#: src/emc/usr_intf/pncconf/pncconf.glade:2061 -#: src/emc/usr_intf/pncconf/pncconf.glade:2407 -#: src/emc/usr_intf/pncconf/pncconf.glade:2420 -#: src/emc/usr_intf/pncconf/pncconf.glade:2433 -#: src/emc/usr_intf/pncconf/pncconf.glade:2446 -#: src/emc/usr_intf/pncconf/pncconf.glade:2457 -#: src/emc/usr_intf/pncconf/pncconf.glade:2470 -#: src/emc/usr_intf/pncconf/pncconf.glade:2483 -#: src/emc/usr_intf/pncconf/pncconf.glade:2496 -#: src/emc/usr_intf/pncconf/pncconf.glade:2509 -#: src/emc/usr_intf/pncconf/pncconf.glade:2522 -#: src/emc/usr_intf/pncconf/pncconf.glade:2535 -#: src/emc/usr_intf/pncconf/pncconf.glade:8343 -#: src/emc/usr_intf/pncconf/pncconf.glade:8379 -#: src/emc/usr_intf/pncconf/pncconf.glade:56542 -#: src/emc/usr_intf/pncconf/pncconf.glade:61266 -#: src/emc/usr_intf/pncconf/pncconf.glade:61278 -#: src/emc/usr_intf/pncconf/pncconf.glade:61290 -#: src/emc/usr_intf/pncconf/pncconf.glade:61302 -#: src/emc/usr_intf/pncconf/pncconf.glade:62475 -#: src/emc/usr_intf/pncconf/pncconf.glade:62487 -#: src/emc/usr_intf/pncconf/pncconf.glade:62499 -#: src/emc/usr_intf/pncconf/pncconf.glade:62511 -#: src/emc/usr_intf/pncconf/pncconf.glade:63452 -#: src/emc/usr_intf/pncconf/pncconf.glade:63464 -#: src/emc/usr_intf/pncconf/pncconf.glade:63476 -#: src/emc/usr_intf/pncconf/pncconf.glade:63488 -#: src/emc/usr_intf/pncconf/pncconf.glade:64661 -#: src/emc/usr_intf/pncconf/pncconf.glade:64673 -#: src/emc/usr_intf/pncconf/pncconf.glade:64685 -#: src/emc/usr_intf/pncconf/pncconf.glade:64697 -#: src/emc/usr_intf/pncconf/pncconf.glade:65608 -#: src/emc/usr_intf/pncconf/pncconf.glade:65620 -#: src/emc/usr_intf/pncconf/pncconf.glade:65632 -#: src/emc/usr_intf/pncconf/pncconf.glade:65644 -msgid "label" +#: src/emc/usr_intf/pncconf/pncconf.glade:6677 +msgid "GUI Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2073 -#: src/emc/usr_intf/pncconf/pncconf.glade:2559 -#: src/emc/usr_intf/pncconf/pncconf.glade:3300 -#: src/emc/usr_intf/pncconf/pncconf.glade:4181 -#: src/emc/usr_intf/pncconf/pncconf.glade:5062 -msgid " abc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:6708 +msgid "Virtual Control Panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2086 -#: src/emc/usr_intf/pncconf/pncconf.glade:3422 -#: src/emc/usr_intf/pncconf/pncconf.glade:4303 -#: src/emc/usr_intf/pncconf/pncconf.glade:5184 -msgid " ab)" +#: src/emc/usr_intf/pncconf/pncconf.glade:6783 +msgid "XYZ buttons (uses Halui)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2372 -#: src/emc/usr_intf/pncconf/pncconf.glade:3321 -#: src/emc/usr_intf/pncconf/pncconf.glade:4202 -#: src/emc/usr_intf/pncconf/pncconf.glade:5083 -msgid " ac)" +#: src/emc/usr_intf/pncconf/pncconf.glade:6954 +msgid "Geometry Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2383 -#: src/emc/usr_intf/pncconf/pncconf.glade:3311 -#: src/emc/usr_intf/pncconf/pncconf.glade:4192 -#: src/emc/usr_intf/pncconf/pncconf.glade:5073 -msgid " bc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7033 +msgid "Pyvcp Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2547 -#: src/emc/usr_intf/pncconf/pncconf.glade:3332 -#: src/emc/usr_intf/pncconf/pncconf.glade:4213 -#: src/emc/usr_intf/pncconf/pncconf.glade:5094 -#, fuzzy -msgid " c)" -msgstr "Homin_g" - -#: src/emc/usr_intf/pncconf/pncconf.glade:2570 -#: src/emc/usr_intf/pncconf/pncconf.glade:2966 -#: src/emc/usr_intf/pncconf/pncconf.glade:3847 -#: src/emc/usr_intf/pncconf/pncconf.glade:4728 -msgid " ad)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7105 +msgid "Sample display " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2583 -#: src/emc/usr_intf/pncconf/pncconf.glade:2953 -#: src/emc/usr_intf/pncconf/pncconf.glade:3834 -#: src/emc/usr_intf/pncconf/pncconf.glade:4715 -msgid " bd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7272 +msgid "Standalone Panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2596 -#: src/emc/usr_intf/pncconf/pncconf.glade:2927 -#: src/emc/usr_intf/pncconf/pncconf.glade:3808 -#: src/emc/usr_intf/pncconf/pncconf.glade:4689 -msgid " cd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7289 +msgid "Rightside Embeded" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2609 -#: src/emc/usr_intf/pncconf/pncconf.glade:2991 -#: src/emc/usr_intf/pncconf/pncconf.glade:3872 -#: src/emc/usr_intf/pncconf/pncconf.glade:4753 -msgid " acd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7305 +msgid "Center Tab Embeded" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2622 -#: src/emc/usr_intf/pncconf/pncconf.glade:3004 -#: src/emc/usr_intf/pncconf/pncconf.glade:3885 -#: src/emc/usr_intf/pncconf/pncconf.glade:4766 -msgid " bcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7320 +msgid "Force Maximize" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2635 -#: src/emc/usr_intf/pncconf/pncconf.glade:3017 -#: src/emc/usr_intf/pncconf/pncconf.glade:3898 -#: src/emc/usr_intf/pncconf/pncconf.glade:4779 -msgid " abcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7359 +#, fuzzy +msgid "Display Options" +msgstr "_Inch" + +#: src/emc/usr_intf/pncconf/pncconf.glade:7409 +msgid "Max RPM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2648 -#: src/emc/usr_intf/pncconf/pncconf.glade:2979 -#: src/emc/usr_intf/pncconf/pncconf.glade:3860 -#: src/emc/usr_intf/pncconf/pncconf.glade:4741 +#: src/emc/usr_intf/pncconf/pncconf.glade:7422 #, fuzzy -msgid " d)" -msgstr "Homin_g" +msgid "Spindle Speed Indicator" +msgstr "Brzina obradnog motora (1/min)" -#: src/emc/usr_intf/pncconf/pncconf.glade:2664 +#: src/emc/usr_intf/pncconf/pncconf.glade:7434 #, fuzzy -msgid "increments" -msgstr "Izaberi JOG inkrement" +msgid "Spindle At Speed LED" +msgstr "Brzina obradnog motora (1/min)" -#: src/emc/usr_intf/pncconf/pncconf.glade:2708 -msgid "External MPG Jogging" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:7446 +#, fuzzy +msgid "Zero X Button" +msgstr "Levi taster" -#: src/emc/usr_intf/pncconf/pncconf.glade:2739 -#: src/emc/usr_intf/pncconf/pncconf.glade:3620 -#: src/emc/usr_intf/pncconf/pncconf.glade:4501 -msgid "Use MPG " -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:7458 +#, fuzzy +msgid "Zero Y Button" +msgstr "Levi taster" -#: src/emc/usr_intf/pncconf/pncconf.glade:2752 -#: src/emc/usr_intf/pncconf/pncconf.glade:3633 -#: src/emc/usr_intf/pncconf/pncconf.glade:4514 -msgid "use switches" +#: src/emc/usr_intf/pncconf/pncconf.glade:7470 +#, fuzzy +msgid "Zero Z Button" +msgstr "Levi taster" + +#: src/emc/usr_intf/pncconf/pncconf.glade:7482 +#, fuzzy +msgid "Zero A Button" +msgstr "Levi taster" + +#: src/emc/usr_intf/pncconf/pncconf.glade:7494 +msgid "Requires Classicladder touch-off program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2838 -#: src/emc/usr_intf/pncconf/pncconf.glade:3733 -#: src/emc/usr_intf/pncconf/pncconf.glade:4614 -msgid "ignore all-inputs false" +#: src/emc/usr_intf/pncconf/pncconf.glade:7495 +msgid "Auto Z Touch Off Button" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2853 -#: src/emc/usr_intf/pncconf/pncconf.glade:3748 -#: src/emc/usr_intf/pncconf/pncconf.glade:4629 +#: src/emc/usr_intf/pncconf/pncconf.glade:7508 #, fuzzy -msgid "use graycode" -msgstr "Neupotrebljen" +msgid "Sample Options" +msgstr "Konfiguration der Spindel" -#: src/emc/usr_intf/pncconf/pncconf.glade:2940 -#: src/emc/usr_intf/pncconf/pncconf.glade:3821 -#: src/emc/usr_intf/pncconf/pncconf.glade:4702 -msgid " abd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7582 +msgid "Gladevcp Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:3555 -#: src/emc/usr_intf/pncconf/pncconf.glade:4436 -#: src/emc/usr_intf/pncconf/pncconf.glade:5317 +#: src/emc/usr_intf/pncconf/pncconf.glade:7605 #, fuzzy -msgid "Increments" -msgstr "Izaberi JOG inkrement" +msgid "Include custom GladeVCP GUI panel" +msgstr "Ukljucu korisnicki P_yVCP-panel" -#: src/emc/usr_intf/pncconf/pncconf.glade:3589 -#, fuzzy -msgid "External Feed Override" -msgstr "Prekoracenje posmaka:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7676 +msgid "Force individual manual homing" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:4470 -msgid "Max Velocity Override" +#: src/emc/usr_intf/pncconf/pncconf.glade:7689 +msgid "Random position toolchanger " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5351 -#, fuzzy -msgid "External Spindle Override" -msgstr "Prekoracenje brzine obr.motora:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7704 +msgid "Require homing before MDI / Running" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5379 -#, fuzzy -msgid "GUI configuration" -msgstr "Konfiguracija _osa:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7713 +msgid "Popup Toolchange Prompt" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5398 -msgid "Frontend" +#: src/emc/usr_intf/pncconf/pncconf.glade:7727 +msgid "Leave spindle on during tool change" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5557 +#: src/emc/usr_intf/pncconf/pncconf.glade:7740 #, fuzzy -msgid "" -"Commanded\n" -"Actual" -msgstr "zadata" +msgid "Move spindle up before tool change" +msgstr "_Prikazi upit za promenu alata" -#: src/emc/usr_intf/pncconf/pncconf.glade:5570 -#, fuzzy -msgid "" -"Machine\n" -"Relative\n" -msgstr "relativna" +#: src/emc/usr_intf/pncconf/pncconf.glade:7753 +msgid "Restore joint position after shutdown" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5608 -#, fuzzy -msgid "Max Feed Override" -msgstr "Prekoracenje posmaka:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7769 +msgid "Defaults and Options" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5667 -#, fuzzy -msgid "Min Spindle Override" -msgstr "Prekoracenje brzine obr.motora:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7797 +msgid "Mesa0 I/O setup\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5691 -#, fuzzy -msgid "Max Spindle Override " -msgstr "Prekoracenje brzine obr.motora:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7817 +msgid "" +"Click on each page tab to configure signal names for each connector port.\n" +"\n" +"Press the button to make the tabbed pages\n" +"accept the changes.\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5702 -#, fuzzy -msgid "Position_feedback" -msgstr "Pozicija:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8001 +msgid "3PWM base frequency:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5713 +#: src/emc/usr_intf/pncconf/pncconf.glade:8036 #, fuzzy -msgid "Position_offset" -msgstr "Pozicija:" +msgid "Mesa parport address:" +msgstr "Adresa paralelnog porta:" -#: src/emc/usr_intf/pncconf/pncconf.glade:5721 -msgid "General GUI Defaults" +#: src/emc/usr_intf/pncconf/pncconf.glade:8047 +msgid "Firmware:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5808 -msgid "Force Axis to Maximize" +#: src/emc/usr_intf/pncconf/pncconf.glade:8069 +msgid "SVST8_4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5832 -#: src/emc/usr_intf/pncconf/pncconf.glade:6602 -#: src/emc/usr_intf/pncconf/pncconf.glade:6841 -#: src/emc/usr_intf/pncconf/pncconf.glade:7328 -msgid "H" +#: src/emc/usr_intf/pncconf/pncconf.glade:8094 +msgid "Num of 3 pwm generators: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5866 -#: src/emc/usr_intf/pncconf/pncconf.glade:6568 -#: src/emc/usr_intf/pncconf/pncconf.glade:6875 -#: src/emc/usr_intf/pncconf/pncconf.glade:7294 -msgid "W" +#: src/emc/usr_intf/pncconf/pncconf.glade:8128 +msgid "Total number of pins:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5876 -#: src/emc/usr_intf/pncconf/pncconf.glade:6556 -#: src/emc/usr_intf/pncconf/pncconf.glade:6885 -#: src/emc/usr_intf/pncconf/pncconf.glade:7282 -msgid "X" +#: src/emc/usr_intf/pncconf/pncconf.glade:8153 +msgid "" +"Accept components\n" +" Changes" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5914 -#: src/emc/usr_intf/pncconf/pncconf.glade:6519 -#: src/emc/usr_intf/pncconf/pncconf.glade:6923 -#: src/emc/usr_intf/pncconf/pncconf.glade:7244 -#, fuzzy -msgid "Position" -msgstr "Pozicija:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8168 +msgid "PWM base frequency:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5927 -#: src/emc/usr_intf/pncconf/pncconf.glade:6510 -#: src/emc/usr_intf/pncconf/pncconf.glade:6936 -#: src/emc/usr_intf/pncconf/pncconf.glade:7234 -msgid "size" +#: src/emc/usr_intf/pncconf/pncconf.glade:8179 +msgid "PDM base frequency:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5942 -#: src/emc/usr_intf/pncconf/pncconf.glade:5952 -#: src/emc/usr_intf/pncconf/pncconf.glade:6158 -#, fuzzy -msgid "mm / min" -msgstr "mm/s" +#: src/emc/usr_intf/pncconf/pncconf.glade:8190 +msgid "Watchdog timeout:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5975 -#: src/emc/usr_intf/pncconf/pncconf.glade:5985 -#: src/emc/usr_intf/pncconf/pncconf.glade:5997 -#, fuzzy -msgid "Deg / min" -msgstr "Grad / Umdrehung" +#: src/emc/usr_intf/pncconf/pncconf.glade:8307 +msgid "Num of encoders:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6010 -msgid "xyzabc" +#: src/emc/usr_intf/pncconf/pncconf.glade:8318 +msgid "Num of pwm generators:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6023 -msgid "Axis Geometry" +#: src/emc/usr_intf/pncconf/pncconf.glade:8329 +msgid "Num of step generators: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6048 +#: src/emc/usr_intf/pncconf/pncconf.glade:8340 #, fuzzy -msgid "Max Angular velocity" -msgstr "Maksinalna _Brzina:" +msgid "Board name" +msgstr "World-rezim" -#: src/emc/usr_intf/pncconf/pncconf.glade:6061 -msgid "5mm 1mm .5mm .1mm .05mm .01mm .005mm" +#: src/emc/usr_intf/pncconf/pncconf.glade:8346 +msgid "Num of Smart Serial Ports:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6074 -#, fuzzy -msgid "Increments " -msgstr "Izaberi JOG inkrement" +#: src/emc/usr_intf/pncconf/pncconf.glade:8393 +msgid "7i29 daughter board" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6099 -#, fuzzy -msgid "Min Angular velocity" -msgstr "Maksinalna _Brzina:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8402 +msgid "7i30 daughter board" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6112 -msgid "gedit" +#: src/emc/usr_intf/pncconf/pncconf.glade:8414 +msgid "7i33 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6148 -msgid "Default Angular velocity " +#: src/emc/usr_intf/pncconf/pncconf.glade:8426 +msgid "7i40 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6211 -#, fuzzy -msgid "Max linear velocity" -msgstr "Maksinalna _Brzina:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8438 +msgid "7i48 daughter board" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6222 -#, fuzzy -msgid "Min linear velocity" -msgstr "Brzina pri _trazenju referentne pozicije:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8453 +msgid "Sanity Checks" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6233 -#, fuzzy -msgid "Default linear velocity " -msgstr "Brzina pri _trazenju referentne pozicije:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8482 +msgid "Num of channels: " +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6241 -msgid "AXIS defaults" +#: src/emc/usr_intf/pncconf/pncconf.glade:8494 +msgid "Num of resolvers:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6352 -msgid "Error Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:8528 +#, fuzzy +msgid "" +"Configuration\n" +" Page" +msgstr "Konfiguracija X ose" + +#: src/emc/usr_intf/pncconf/pncconf.glade:8721 +#: src/emc/usr_intf/pncconf/pncconf.glade:8773 +#: src/emc/usr_intf/pncconf/pncconf.glade:9093 +#: src/emc/usr_intf/pncconf/pncconf.glade:9145 +#: src/emc/usr_intf/pncconf/pncconf.glade:9197 +#: src/emc/usr_intf/pncconf/pncconf.glade:9249 +#: src/emc/usr_intf/pncconf/pncconf.glade:9301 +#: src/emc/usr_intf/pncconf/pncconf.glade:9353 +#: src/emc/usr_intf/pncconf/pncconf.glade:9405 +#: src/emc/usr_intf/pncconf/pncconf.glade:9457 +#: src/emc/usr_intf/pncconf/pncconf.glade:9509 +#: src/emc/usr_intf/pncconf/pncconf.glade:9561 +#: src/emc/usr_intf/pncconf/pncconf.glade:10400 +#: src/emc/usr_intf/pncconf/pncconf.glade:10453 +#: src/emc/usr_intf/pncconf/pncconf.glade:10505 +#: src/emc/usr_intf/pncconf/pncconf.glade:10557 +#: src/emc/usr_intf/pncconf/pncconf.glade:11335 +#: src/emc/usr_intf/pncconf/pncconf.glade:11387 +#: src/emc/usr_intf/pncconf/pncconf.glade:12047 +#: src/emc/usr_intf/pncconf/pncconf.glade:12099 +#: src/emc/usr_intf/pncconf/pncconf.glade:12151 +#: src/emc/usr_intf/pncconf/pncconf.glade:12203 +#: src/emc/usr_intf/pncconf/pncconf.glade:13042 +#: src/emc/usr_intf/pncconf/pncconf.glade:13094 +#: src/emc/usr_intf/pncconf/pncconf.glade:13146 +#: src/emc/usr_intf/pncconf/pncconf.glade:13198 +#: src/emc/usr_intf/pncconf/pncconf.glade:13250 +#: src/emc/usr_intf/pncconf/pncconf.glade:13302 +#: src/emc/usr_intf/pncconf/pncconf.glade:13354 +#: src/emc/usr_intf/pncconf/pncconf.glade:13406 +#: src/emc/usr_intf/pncconf/pncconf.glade:13458 +#: src/emc/usr_intf/pncconf/pncconf.glade:13510 +#: src/emc/usr_intf/pncconf/pncconf.glade:14556 +#: src/emc/usr_intf/pncconf/pncconf.glade:14608 +#: src/emc/usr_intf/pncconf/pncconf.glade:14660 +#: src/emc/usr_intf/pncconf/pncconf.glade:14712 +#: src/emc/usr_intf/pncconf/pncconf.glade:15539 +#: src/emc/usr_intf/pncconf/pncconf.glade:15591 +#: src/emc/usr_intf/pncconf/pncconf.glade:15643 +#: src/emc/usr_intf/pncconf/pncconf.glade:15695 +#: src/emc/usr_intf/pncconf/pncconf.glade:15747 +#: src/emc/usr_intf/pncconf/pncconf.glade:15799 +#: src/emc/usr_intf/pncconf/pncconf.glade:15851 +#: src/emc/usr_intf/pncconf/pncconf.glade:15903 +#: src/emc/usr_intf/pncconf/pncconf.glade:15955 +#: src/emc/usr_intf/pncconf/pncconf.glade:16007 +#: src/emc/usr_intf/pncconf/pncconf.glade:16059 +#: src/emc/usr_intf/pncconf/pncconf.glade:16111 +#: src/emc/usr_intf/pncconf/pncconf.glade:16540 +#: src/emc/usr_intf/pncconf/pncconf.glade:16592 +#: src/emc/usr_intf/pncconf/pncconf.glade:17253 +#: src/emc/usr_intf/pncconf/pncconf.glade:17305 +#: src/emc/usr_intf/pncconf/pncconf.glade:17357 +#: src/emc/usr_intf/pncconf/pncconf.glade:18196 +#: src/emc/usr_intf/pncconf/pncconf.glade:18248 +#: src/emc/usr_intf/pncconf/pncconf.glade:18300 +#: src/emc/usr_intf/pncconf/pncconf.glade:18352 +#: src/emc/usr_intf/pncconf/pncconf.glade:18404 +#: src/emc/usr_intf/pncconf/pncconf.glade:18456 +#: src/emc/usr_intf/pncconf/pncconf.glade:18508 +#: src/emc/usr_intf/pncconf/pncconf.glade:18560 +#: src/emc/usr_intf/pncconf/pncconf.glade:18612 +#: src/emc/usr_intf/pncconf/pncconf.glade:18664 +#: src/emc/usr_intf/pncconf/pncconf.glade:18716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26612 +#: src/emc/usr_intf/pncconf/pncconf.glade:26664 +#: src/emc/usr_intf/pncconf/pncconf.glade:26716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26768 +#: src/emc/usr_intf/pncconf/pncconf.glade:26820 +#: src/emc/usr_intf/pncconf/pncconf.glade:26872 +#: src/emc/usr_intf/pncconf/pncconf.glade:26924 +#: src/emc/usr_intf/pncconf/pncconf.glade:26976 +#: src/emc/usr_intf/pncconf/pncconf.glade:27028 +#: src/emc/usr_intf/pncconf/pncconf.glade:27080 +#: src/emc/usr_intf/pncconf/pncconf.glade:27132 +#: src/emc/usr_intf/pncconf/pncconf.glade:27184 +#: src/emc/usr_intf/pncconf/pncconf.glade:28011 +#: src/emc/usr_intf/pncconf/pncconf.glade:28063 +#: src/emc/usr_intf/pncconf/pncconf.glade:28115 +#: src/emc/usr_intf/pncconf/pncconf.glade:28167 +#: src/emc/usr_intf/pncconf/pncconf.glade:29507 +#: src/emc/usr_intf/pncconf/pncconf.glade:29559 +#: src/emc/usr_intf/pncconf/pncconf.glade:29611 +#: src/emc/usr_intf/pncconf/pncconf.glade:29663 +#: src/emc/usr_intf/pncconf/pncconf.glade:30490 +#: src/emc/usr_intf/pncconf/pncconf.glade:30542 +#: src/emc/usr_intf/pncconf/pncconf.glade:30594 +#: src/emc/usr_intf/pncconf/pncconf.glade:30646 +#: src/emc/usr_intf/pncconf/pncconf.glade:30698 +#: src/emc/usr_intf/pncconf/pncconf.glade:30750 +#: src/emc/usr_intf/pncconf/pncconf.glade:30802 +#: src/emc/usr_intf/pncconf/pncconf.glade:30854 +#: src/emc/usr_intf/pncconf/pncconf.glade:30906 +#: src/emc/usr_intf/pncconf/pncconf.glade:30958 +#: src/emc/usr_intf/pncconf/pncconf.glade:31010 +#: src/emc/usr_intf/pncconf/pncconf.glade:31062 +#: src/emc/usr_intf/pncconf/pncconf.glade:31878 +#: src/emc/usr_intf/pncconf/pncconf.glade:31930 +#: src/emc/usr_intf/pncconf/pncconf.glade:31982 +#: src/emc/usr_intf/pncconf/pncconf.glade:32034 +#: src/emc/usr_intf/pncconf/pncconf.glade:32086 +#: src/emc/usr_intf/pncconf/pncconf.glade:32138 +#: src/emc/usr_intf/pncconf/pncconf.glade:32190 +#: src/emc/usr_intf/pncconf/pncconf.glade:32242 +#: src/emc/usr_intf/pncconf/pncconf.glade:32294 +#: src/emc/usr_intf/pncconf/pncconf.glade:32346 +#: src/emc/usr_intf/pncconf/pncconf.glade:32398 +#: src/emc/usr_intf/pncconf/pncconf.glade:32450 +#: src/emc/usr_intf/pncconf/pncconf.glade:33852 +#: src/emc/usr_intf/pncconf/pncconf.glade:33904 +#: src/emc/usr_intf/pncconf/pncconf.glade:33956 +#: src/emc/usr_intf/pncconf/pncconf.glade:34008 +#: src/emc/usr_intf/pncconf/pncconf.glade:34835 +#: src/emc/usr_intf/pncconf/pncconf.glade:34887 +#: src/emc/usr_intf/pncconf/pncconf.glade:34939 +#: src/emc/usr_intf/pncconf/pncconf.glade:34991 +#: src/emc/usr_intf/pncconf/pncconf.glade:35043 +#: src/emc/usr_intf/pncconf/pncconf.glade:35095 +#: src/emc/usr_intf/pncconf/pncconf.glade:35147 +#: src/emc/usr_intf/pncconf/pncconf.glade:35199 +#: src/emc/usr_intf/pncconf/pncconf.glade:35251 +#: src/emc/usr_intf/pncconf/pncconf.glade:35303 +#: src/emc/usr_intf/pncconf/pncconf.glade:35355 +#: src/emc/usr_intf/pncconf/pncconf.glade:35407 +#: src/emc/usr_intf/pncconf/pncconf.glade:36096 +#: src/emc/usr_intf/pncconf/pncconf.glade:36148 +#: src/emc/usr_intf/pncconf/pncconf.glade:36200 +#: src/emc/usr_intf/pncconf/pncconf.glade:36252 +#: src/emc/usr_intf/pncconf/pncconf.glade:36304 +#: src/emc/usr_intf/pncconf/pncconf.glade:36356 +#: src/emc/usr_intf/pncconf/pncconf.glade:36408 +#: src/emc/usr_intf/pncconf/pncconf.glade:36460 +#: src/emc/usr_intf/pncconf/pncconf.glade:36512 +#: src/emc/usr_intf/pncconf/pncconf.glade:36564 +#: src/emc/usr_intf/pncconf/pncconf.glade:36616 +#: src/emc/usr_intf/pncconf/pncconf.glade:36668 +#: src/emc/usr_intf/pncconf/pncconf.glade:37495 +#: src/emc/usr_intf/pncconf/pncconf.glade:37547 +#: src/emc/usr_intf/pncconf/pncconf.glade:37599 +#: src/emc/usr_intf/pncconf/pncconf.glade:37651 +#: src/emc/usr_intf/pncconf/pncconf.glade:39168 +#: src/emc/usr_intf/pncconf/pncconf.glade:39220 +#: src/emc/usr_intf/pncconf/pncconf.glade:39272 +#: src/emc/usr_intf/pncconf/pncconf.glade:39324 +#: src/emc/usr_intf/pncconf/pncconf.glade:39376 +#: src/emc/usr_intf/pncconf/pncconf.glade:39428 +#: src/emc/usr_intf/pncconf/pncconf.glade:39480 +#: src/emc/usr_intf/pncconf/pncconf.glade:39532 +#: src/emc/usr_intf/pncconf/pncconf.glade:39584 +#: src/emc/usr_intf/pncconf/pncconf.glade:39636 +#: src/emc/usr_intf/pncconf/pncconf.glade:39688 +#: src/emc/usr_intf/pncconf/pncconf.glade:39740 +#: src/emc/usr_intf/pncconf/pncconf.glade:40456 +#: src/emc/usr_intf/pncconf/pncconf.glade:40508 +#: src/emc/usr_intf/pncconf/pncconf.glade:40560 +#: src/emc/usr_intf/pncconf/pncconf.glade:40612 +#: src/emc/usr_intf/pncconf/pncconf.glade:40664 +#: src/emc/usr_intf/pncconf/pncconf.glade:40716 +#: src/emc/usr_intf/pncconf/pncconf.glade:40768 +#: src/emc/usr_intf/pncconf/pncconf.glade:40820 +#: src/emc/usr_intf/pncconf/pncconf.glade:40872 +#: src/emc/usr_intf/pncconf/pncconf.glade:40924 +#: src/emc/usr_intf/pncconf/pncconf.glade:40976 +#: src/emc/usr_intf/pncconf/pncconf.glade:41028 +#: src/emc/usr_intf/pncconf/pncconf.glade:41855 +#: src/emc/usr_intf/pncconf/pncconf.glade:41907 +#: src/emc/usr_intf/pncconf/pncconf.glade:41959 +#: src/emc/usr_intf/pncconf/pncconf.glade:42011 +#: src/emc/usr_intf/pncconf/pncconf.glade:43351 +#: src/emc/usr_intf/pncconf/pncconf.glade:43403 +#: src/emc/usr_intf/pncconf/pncconf.glade:43455 +#: src/emc/usr_intf/pncconf/pncconf.glade:43507 +#: src/emc/usr_intf/pncconf/pncconf.glade:44334 +#: src/emc/usr_intf/pncconf/pncconf.glade:44386 +#: src/emc/usr_intf/pncconf/pncconf.glade:44438 +#: src/emc/usr_intf/pncconf/pncconf.glade:44490 +#: src/emc/usr_intf/pncconf/pncconf.glade:44542 +#: src/emc/usr_intf/pncconf/pncconf.glade:44594 +#: src/emc/usr_intf/pncconf/pncconf.glade:44646 +#: src/emc/usr_intf/pncconf/pncconf.glade:44698 +#: src/emc/usr_intf/pncconf/pncconf.glade:44750 +#: src/emc/usr_intf/pncconf/pncconf.glade:44802 +#: src/emc/usr_intf/pncconf/pncconf.glade:44854 +#: src/emc/usr_intf/pncconf/pncconf.glade:44906 +#: src/emc/usr_intf/pncconf/pncconf.glade:45711 +#: src/emc/usr_intf/pncconf/pncconf.glade:45763 +#: src/emc/usr_intf/pncconf/pncconf.glade:45815 +#: src/emc/usr_intf/pncconf/pncconf.glade:45867 +#: src/emc/usr_intf/pncconf/pncconf.glade:45919 +#: src/emc/usr_intf/pncconf/pncconf.glade:45971 +#: src/emc/usr_intf/pncconf/pncconf.glade:46023 +#: src/emc/usr_intf/pncconf/pncconf.glade:46075 +#: src/emc/usr_intf/pncconf/pncconf.glade:46127 +#: src/emc/usr_intf/pncconf/pncconf.glade:46179 +#: src/emc/usr_intf/pncconf/pncconf.glade:46231 +#: src/emc/usr_intf/pncconf/pncconf.glade:46283 +#: src/emc/usr_intf/pncconf/pncconf.glade:47379 +#: src/emc/usr_intf/pncconf/pncconf.glade:47431 +#: src/emc/usr_intf/pncconf/pncconf.glade:47483 +#: src/emc/usr_intf/pncconf/pncconf.glade:47535 +#: src/emc/usr_intf/pncconf/pncconf.glade:47587 +#: src/emc/usr_intf/pncconf/pncconf.glade:47639 +#: src/emc/usr_intf/pncconf/pncconf.glade:47691 +#: src/emc/usr_intf/pncconf/pncconf.glade:47743 +#: src/emc/usr_intf/pncconf/pncconf.glade:47795 +#: src/emc/usr_intf/pncconf/pncconf.glade:47847 +#: src/emc/usr_intf/pncconf/pncconf.glade:47899 +#: src/emc/usr_intf/pncconf/pncconf.glade:47951 +#: src/emc/usr_intf/pncconf/pncconf.glade:48778 +#: src/emc/usr_intf/pncconf/pncconf.glade:48830 +#: src/emc/usr_intf/pncconf/pncconf.glade:48882 +#: src/emc/usr_intf/pncconf/pncconf.glade:48934 +#: src/emc/usr_intf/pncconf/pncconf.glade:50274 +#: src/emc/usr_intf/pncconf/pncconf.glade:50326 +#: src/emc/usr_intf/pncconf/pncconf.glade:50378 +#: src/emc/usr_intf/pncconf/pncconf.glade:50430 +#: src/emc/usr_intf/pncconf/pncconf.glade:51257 +#: src/emc/usr_intf/pncconf/pncconf.glade:51309 +#: src/emc/usr_intf/pncconf/pncconf.glade:51361 +#: src/emc/usr_intf/pncconf/pncconf.glade:51413 +#: src/emc/usr_intf/pncconf/pncconf.glade:51465 +#: src/emc/usr_intf/pncconf/pncconf.glade:51517 +#: src/emc/usr_intf/pncconf/pncconf.glade:51569 +#: src/emc/usr_intf/pncconf/pncconf.glade:51621 +#: src/emc/usr_intf/pncconf/pncconf.glade:51673 +#: src/emc/usr_intf/pncconf/pncconf.glade:51725 +#: src/emc/usr_intf/pncconf/pncconf.glade:51777 +#: src/emc/usr_intf/pncconf/pncconf.glade:51829 +#: src/emc/usr_intf/pncconf/pncconf.glade:52634 +#: src/emc/usr_intf/pncconf/pncconf.glade:52686 +#: src/emc/usr_intf/pncconf/pncconf.glade:52738 +#: src/emc/usr_intf/pncconf/pncconf.glade:52790 +#: src/emc/usr_intf/pncconf/pncconf.glade:52842 +#: src/emc/usr_intf/pncconf/pncconf.glade:52894 +#: src/emc/usr_intf/pncconf/pncconf.glade:52946 +#: src/emc/usr_intf/pncconf/pncconf.glade:52998 +#: src/emc/usr_intf/pncconf/pncconf.glade:53050 +#: src/emc/usr_intf/pncconf/pncconf.glade:53102 +#: src/emc/usr_intf/pncconf/pncconf.glade:53154 +#: src/emc/usr_intf/pncconf/pncconf.glade:53206 +#: src/emc/usr_intf/pncconf/pncconf.glade:54302 +#: src/emc/usr_intf/pncconf/pncconf.glade:54354 +#: src/emc/usr_intf/pncconf/pncconf.glade:54406 +#: src/emc/usr_intf/pncconf/pncconf.glade:54458 +#: src/emc/usr_intf/pncconf/pncconf.glade:54510 +#: src/emc/usr_intf/pncconf/pncconf.glade:54562 +#: src/emc/usr_intf/pncconf/pncconf.glade:54614 +#: src/emc/usr_intf/pncconf/pncconf.glade:54666 +#: src/emc/usr_intf/pncconf/pncconf.glade:54718 +#: src/emc/usr_intf/pncconf/pncconf.glade:54770 +#: src/emc/usr_intf/pncconf/pncconf.glade:54822 +#: src/emc/usr_intf/pncconf/pncconf.glade:54874 +#: src/emc/usr_intf/pncconf/pncconf.glade:55701 +#: src/emc/usr_intf/pncconf/pncconf.glade:55753 +#: src/emc/usr_intf/pncconf/pncconf.glade:55805 +#: src/emc/usr_intf/pncconf/pncconf.glade:55857 +#: src/emc/usr_intf/pncconf/pncconf.glade:57197 +#: src/emc/usr_intf/pncconf/pncconf.glade:57249 +#: src/emc/usr_intf/pncconf/pncconf.glade:57301 +#: src/emc/usr_intf/pncconf/pncconf.glade:57353 +#: src/emc/usr_intf/pncconf/pncconf.glade:58180 +#: src/emc/usr_intf/pncconf/pncconf.glade:58232 +#: src/emc/usr_intf/pncconf/pncconf.glade:58284 +#: src/emc/usr_intf/pncconf/pncconf.glade:58336 +#: src/emc/usr_intf/pncconf/pncconf.glade:58388 +#: src/emc/usr_intf/pncconf/pncconf.glade:58440 +#: src/emc/usr_intf/pncconf/pncconf.glade:58492 +#: src/emc/usr_intf/pncconf/pncconf.glade:58544 +#: src/emc/usr_intf/pncconf/pncconf.glade:58596 +#: src/emc/usr_intf/pncconf/pncconf.glade:58648 +#: src/emc/usr_intf/pncconf/pncconf.glade:58700 +#: src/emc/usr_intf/pncconf/pncconf.glade:58752 +#: src/emc/usr_intf/pncconf/pncconf.glade:59557 +#: src/emc/usr_intf/pncconf/pncconf.glade:59609 +#: src/emc/usr_intf/pncconf/pncconf.glade:59661 +#: src/emc/usr_intf/pncconf/pncconf.glade:59713 +#: src/emc/usr_intf/pncconf/pncconf.glade:59765 +#: src/emc/usr_intf/pncconf/pncconf.glade:59817 +#: src/emc/usr_intf/pncconf/pncconf.glade:59869 +#: src/emc/usr_intf/pncconf/pncconf.glade:59921 +#: src/emc/usr_intf/pncconf/pncconf.glade:59973 +#: src/emc/usr_intf/pncconf/pncconf.glade:60025 +#: src/emc/usr_intf/pncconf/pncconf.glade:60077 +#: src/emc/usr_intf/pncconf/pncconf.glade:60129 +msgid "" +"ESTOP IN\n" +"Spindle PPR\n" +"Spindle A \n" +"Spindle B \n" +"Home X \n" +"Home Y \n" +"Home Z\n" +"Home A\n" +"Minimum Limit + Home X \n" +"Minimum Limit + Home Y \n" +"Minimum Limit + Home Z \n" +"Minimum Limit + Home A\n" +"Maximum Limit + Home X \n" +"Maximum Limit + Home Y \n" +"Maximum Limit + Home Z \n" +"Maximum Limit + Home A\n" +"Both Limit + Home X \n" +"Both Limit + Home Y \n" +"Both Limit + Home Z \n" +"Both Limit + Home A\n" +"Minimum Limit X \n" +"Minimum Limit Y \n" +"Minimum Limit Z \n" +"Minimum Limit A\n" +"Maximum Limit X \n" +"Maximum Limit Y \n" +"Maximum Limit Z \n" +"Maximum Limit A\n" +"Both Limit X \n" +"Both Limit Y \n" +"Both Limit Z \n" +"Both Limit A\n" +"All limits\n" +"All home\n" +"Unused" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6365 -msgid "DTG Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:8825 +#: src/emc/usr_intf/pncconf/pncconf.glade:9081 +#: src/emc/usr_intf/pncconf/pncconf.glade:13563 +#: src/emc/usr_intf/pncconf/pncconf.glade:13818 +#: src/emc/usr_intf/pncconf/pncconf.glade:16164 +#: src/emc/usr_intf/pncconf/pncconf.glade:16410 +#: src/emc/usr_intf/pncconf/pncconf.glade:18769 +#: src/emc/usr_intf/pncconf/pncconf.glade:19024 +#: src/emc/usr_intf/pncconf/pncconf.glade:20571 +#: src/emc/usr_intf/pncconf/pncconf.glade:20820 +#: src/emc/usr_intf/pncconf/pncconf.glade:20949 +#: src/emc/usr_intf/pncconf/pncconf.glade:21199 +#: src/emc/usr_intf/pncconf/pncconf.glade:22745 +#: src/emc/usr_intf/pncconf/pncconf.glade:22995 +#: src/emc/usr_intf/pncconf/pncconf.glade:24541 +#: src/emc/usr_intf/pncconf/pncconf.glade:24791 +#: src/emc/usr_intf/pncconf/pncconf.glade:26353 +#: src/emc/usr_intf/pncconf/pncconf.glade:26600 +#: src/emc/usr_intf/pncconf/pncconf.glade:31115 +#: src/emc/usr_intf/pncconf/pncconf.glade:31361 +#: src/emc/usr_intf/pncconf/pncconf.glade:31621 +#: src/emc/usr_intf/pncconf/pncconf.glade:35460 +#: src/emc/usr_intf/pncconf/pncconf.glade:35706 +#: src/emc/usr_intf/pncconf/pncconf.glade:35837 +#: src/emc/usr_intf/pncconf/pncconf.glade:36084 +#: src/emc/usr_intf/pncconf/pncconf.glade:40037 +#: src/emc/usr_intf/pncconf/pncconf.glade:40197 +#: src/emc/usr_intf/pncconf/pncconf.glade:40444 +#: src/emc/usr_intf/pncconf/pncconf.glade:44959 +#: src/emc/usr_intf/pncconf/pncconf.glade:45205 +#: src/emc/usr_intf/pncconf/pncconf.glade:45454 +#: src/emc/usr_intf/pncconf/pncconf.glade:47120 +#: src/emc/usr_intf/pncconf/pncconf.glade:47367 +#: src/emc/usr_intf/pncconf/pncconf.glade:51882 +#: src/emc/usr_intf/pncconf/pncconf.glade:52128 +#: src/emc/usr_intf/pncconf/pncconf.glade:52377 +#: src/emc/usr_intf/pncconf/pncconf.glade:54043 +#: src/emc/usr_intf/pncconf/pncconf.glade:54290 +#: src/emc/usr_intf/pncconf/pncconf.glade:58805 +#: src/emc/usr_intf/pncconf/pncconf.glade:59051 +#: src/emc/usr_intf/pncconf/pncconf.glade:59300 +msgid "Pin Type" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6378 +#: src/emc/usr_intf/pncconf/pncconf.glade:8838 +#: src/emc/usr_intf/pncconf/pncconf.glade:8900 +#: src/emc/usr_intf/pncconf/pncconf.glade:13743 +#: src/emc/usr_intf/pncconf/pncconf.glade:13806 +#: src/emc/usr_intf/pncconf/pncconf.glade:16335 +#: src/emc/usr_intf/pncconf/pncconf.glade:16398 +#: src/emc/usr_intf/pncconf/pncconf.glade:18949 +#: src/emc/usr_intf/pncconf/pncconf.glade:19012 +#: src/emc/usr_intf/pncconf/pncconf.glade:20751 +#: src/emc/usr_intf/pncconf/pncconf.glade:20808 +#: src/emc/usr_intf/pncconf/pncconf.glade:20962 +#: src/emc/usr_intf/pncconf/pncconf.glade:21018 +#: src/emc/usr_intf/pncconf/pncconf.glade:22758 +#: src/emc/usr_intf/pncconf/pncconf.glade:22814 +#: src/emc/usr_intf/pncconf/pncconf.glade:24554 +#: src/emc/usr_intf/pncconf/pncconf.glade:24610 +#: src/emc/usr_intf/pncconf/pncconf.glade:26366 +#: src/emc/usr_intf/pncconf/pncconf.glade:26428 +#: src/emc/usr_intf/pncconf/pncconf.glade:31286 +#: src/emc/usr_intf/pncconf/pncconf.glade:31349 +#: src/emc/usr_intf/pncconf/pncconf.glade:31634 +#: src/emc/usr_intf/pncconf/pncconf.glade:35631 +#: src/emc/usr_intf/pncconf/pncconf.glade:35694 +#: src/emc/usr_intf/pncconf/pncconf.glade:35850 +#: src/emc/usr_intf/pncconf/pncconf.glade:35912 +#: src/emc/usr_intf/pncconf/pncconf.glade:40025 +#: src/emc/usr_intf/pncconf/pncconf.glade:40210 +#: src/emc/usr_intf/pncconf/pncconf.glade:40272 +#: src/emc/usr_intf/pncconf/pncconf.glade:45130 +#: src/emc/usr_intf/pncconf/pncconf.glade:45193 +#: src/emc/usr_intf/pncconf/pncconf.glade:45467 +#: src/emc/usr_intf/pncconf/pncconf.glade:47133 +#: src/emc/usr_intf/pncconf/pncconf.glade:47195 +#: src/emc/usr_intf/pncconf/pncconf.glade:52053 +#: src/emc/usr_intf/pncconf/pncconf.glade:52116 +#: src/emc/usr_intf/pncconf/pncconf.glade:52390 +#: src/emc/usr_intf/pncconf/pncconf.glade:54056 +#: src/emc/usr_intf/pncconf/pncconf.glade:54118 +#: src/emc/usr_intf/pncconf/pncconf.glade:58976 +#: src/emc/usr_intf/pncconf/pncconf.glade:59039 +#: src/emc/usr_intf/pncconf/pncconf.glade:59313 #, fuzzy -msgid "Relative Textcolor" -msgstr "Rela_tivna pozicija" - -#: src/emc/usr_intf/pncconf/pncconf.glade:6391 -msgid "Absolute Textcolor" -msgstr "" +msgid "Inv" +msgstr "Invertovan" -#: src/emc/usr_intf/pncconf/pncconf.glade:6454 -msgid "Absolute Text Color" +#: src/emc/usr_intf/pncconf/pncconf.glade:8867 +#: src/emc/usr_intf/pncconf/pncconf.glade:10731 +#: src/emc/usr_intf/pncconf/pncconf.glade:10751 +#: src/emc/usr_intf/pncconf/pncconf.glade:10771 +#: src/emc/usr_intf/pncconf/pncconf.glade:10791 +#: src/emc/usr_intf/pncconf/pncconf.glade:10811 +#: src/emc/usr_intf/pncconf/pncconf.glade:10831 +#: src/emc/usr_intf/pncconf/pncconf.glade:10851 +#: src/emc/usr_intf/pncconf/pncconf.glade:10871 +#: src/emc/usr_intf/pncconf/pncconf.glade:10891 +#: src/emc/usr_intf/pncconf/pncconf.glade:10911 +#: src/emc/usr_intf/pncconf/pncconf.glade:10931 +#: src/emc/usr_intf/pncconf/pncconf.glade:10951 +#: src/emc/usr_intf/pncconf/pncconf.glade:10971 +#: src/emc/usr_intf/pncconf/pncconf.glade:10991 +#: src/emc/usr_intf/pncconf/pncconf.glade:11011 +#: src/emc/usr_intf/pncconf/pncconf.glade:11031 +#: src/emc/usr_intf/pncconf/pncconf.glade:11051 +#: src/emc/usr_intf/pncconf/pncconf.glade:11071 +#: src/emc/usr_intf/pncconf/pncconf.glade:11091 +#: src/emc/usr_intf/pncconf/pncconf.glade:11111 +#: src/emc/usr_intf/pncconf/pncconf.glade:11131 +#: src/emc/usr_intf/pncconf/pncconf.glade:11151 +#: src/emc/usr_intf/pncconf/pncconf.glade:11171 +#: src/emc/usr_intf/pncconf/pncconf.glade:11465 +#: src/emc/usr_intf/pncconf/pncconf.glade:11485 +#: src/emc/usr_intf/pncconf/pncconf.glade:11505 +#: src/emc/usr_intf/pncconf/pncconf.glade:11525 +#: src/emc/usr_intf/pncconf/pncconf.glade:11545 +#: src/emc/usr_intf/pncconf/pncconf.glade:11565 +#: src/emc/usr_intf/pncconf/pncconf.glade:11585 +#: src/emc/usr_intf/pncconf/pncconf.glade:11605 +#: src/emc/usr_intf/pncconf/pncconf.glade:11625 +#: src/emc/usr_intf/pncconf/pncconf.glade:11645 +#: src/emc/usr_intf/pncconf/pncconf.glade:11665 +#: src/emc/usr_intf/pncconf/pncconf.glade:11685 +#: src/emc/usr_intf/pncconf/pncconf.glade:11705 +#: src/emc/usr_intf/pncconf/pncconf.glade:11725 +#: src/emc/usr_intf/pncconf/pncconf.glade:11745 +#: src/emc/usr_intf/pncconf/pncconf.glade:11765 +#: src/emc/usr_intf/pncconf/pncconf.glade:11785 +#: src/emc/usr_intf/pncconf/pncconf.glade:11805 +#: src/emc/usr_intf/pncconf/pncconf.glade:11825 +#: src/emc/usr_intf/pncconf/pncconf.glade:11845 +#: src/emc/usr_intf/pncconf/pncconf.glade:11865 +#: src/emc/usr_intf/pncconf/pncconf.glade:11885 +#: src/emc/usr_intf/pncconf/pncconf.glade:11905 +#: src/emc/usr_intf/pncconf/pncconf.glade:13768 +#: src/emc/usr_intf/pncconf/pncconf.glade:13974 +#: src/emc/usr_intf/pncconf/pncconf.glade:13994 +#: src/emc/usr_intf/pncconf/pncconf.glade:14014 +#: src/emc/usr_intf/pncconf/pncconf.glade:14034 +#: src/emc/usr_intf/pncconf/pncconf.glade:14054 +#: src/emc/usr_intf/pncconf/pncconf.glade:14074 +#: src/emc/usr_intf/pncconf/pncconf.glade:14094 +#: src/emc/usr_intf/pncconf/pncconf.glade:14114 +#: src/emc/usr_intf/pncconf/pncconf.glade:14134 +#: src/emc/usr_intf/pncconf/pncconf.glade:14154 +#: src/emc/usr_intf/pncconf/pncconf.glade:14174 +#: src/emc/usr_intf/pncconf/pncconf.glade:14194 +#: src/emc/usr_intf/pncconf/pncconf.glade:14214 +#: src/emc/usr_intf/pncconf/pncconf.glade:14234 +#: src/emc/usr_intf/pncconf/pncconf.glade:14254 +#: src/emc/usr_intf/pncconf/pncconf.glade:14274 +#: src/emc/usr_intf/pncconf/pncconf.glade:14294 +#: src/emc/usr_intf/pncconf/pncconf.glade:14314 +#: src/emc/usr_intf/pncconf/pncconf.glade:14334 +#: src/emc/usr_intf/pncconf/pncconf.glade:14354 +#: src/emc/usr_intf/pncconf/pncconf.glade:14374 +#: src/emc/usr_intf/pncconf/pncconf.glade:14394 +#: src/emc/usr_intf/pncconf/pncconf.glade:14414 +#: src/emc/usr_intf/pncconf/pncconf.glade:16360 +#: src/emc/usr_intf/pncconf/pncconf.glade:16670 +#: src/emc/usr_intf/pncconf/pncconf.glade:16690 +#: src/emc/usr_intf/pncconf/pncconf.glade:16710 +#: src/emc/usr_intf/pncconf/pncconf.glade:16730 +#: src/emc/usr_intf/pncconf/pncconf.glade:16750 +#: src/emc/usr_intf/pncconf/pncconf.glade:16770 +#: src/emc/usr_intf/pncconf/pncconf.glade:16790 +#: src/emc/usr_intf/pncconf/pncconf.glade:16810 +#: src/emc/usr_intf/pncconf/pncconf.glade:16830 +#: src/emc/usr_intf/pncconf/pncconf.glade:16850 +#: src/emc/usr_intf/pncconf/pncconf.glade:16870 +#: src/emc/usr_intf/pncconf/pncconf.glade:16890 +#: src/emc/usr_intf/pncconf/pncconf.glade:16910 +#: src/emc/usr_intf/pncconf/pncconf.glade:16930 +#: src/emc/usr_intf/pncconf/pncconf.glade:16950 +#: src/emc/usr_intf/pncconf/pncconf.glade:16970 +#: src/emc/usr_intf/pncconf/pncconf.glade:16990 +#: src/emc/usr_intf/pncconf/pncconf.glade:17010 +#: src/emc/usr_intf/pncconf/pncconf.glade:17030 +#: src/emc/usr_intf/pncconf/pncconf.glade:17050 +#: src/emc/usr_intf/pncconf/pncconf.glade:17070 +#: src/emc/usr_intf/pncconf/pncconf.glade:17090 +#: src/emc/usr_intf/pncconf/pncconf.glade:17110 +#: src/emc/usr_intf/pncconf/pncconf.glade:18974 +#: src/emc/usr_intf/pncconf/pncconf.glade:26395 +#: src/emc/usr_intf/pncconf/pncconf.glade:28311 +#: src/emc/usr_intf/pncconf/pncconf.glade:28331 +#: src/emc/usr_intf/pncconf/pncconf.glade:28351 +#: src/emc/usr_intf/pncconf/pncconf.glade:28371 +#: src/emc/usr_intf/pncconf/pncconf.glade:28391 +#: src/emc/usr_intf/pncconf/pncconf.glade:28411 +#: src/emc/usr_intf/pncconf/pncconf.glade:28431 +#: src/emc/usr_intf/pncconf/pncconf.glade:28451 +#: src/emc/usr_intf/pncconf/pncconf.glade:28471 +#: src/emc/usr_intf/pncconf/pncconf.glade:28491 +#: src/emc/usr_intf/pncconf/pncconf.glade:28511 +#: src/emc/usr_intf/pncconf/pncconf.glade:28531 +#: src/emc/usr_intf/pncconf/pncconf.glade:28551 +#: src/emc/usr_intf/pncconf/pncconf.glade:28571 +#: src/emc/usr_intf/pncconf/pncconf.glade:28591 +#: src/emc/usr_intf/pncconf/pncconf.glade:28611 +#: src/emc/usr_intf/pncconf/pncconf.glade:28631 +#: src/emc/usr_intf/pncconf/pncconf.glade:28651 +#: src/emc/usr_intf/pncconf/pncconf.glade:28671 +#: src/emc/usr_intf/pncconf/pncconf.glade:28691 +#: src/emc/usr_intf/pncconf/pncconf.glade:28711 +#: src/emc/usr_intf/pncconf/pncconf.glade:28731 +#: src/emc/usr_intf/pncconf/pncconf.glade:28751 +#: src/emc/usr_intf/pncconf/pncconf.glade:28942 +#: src/emc/usr_intf/pncconf/pncconf.glade:28962 +#: src/emc/usr_intf/pncconf/pncconf.glade:28982 +#: src/emc/usr_intf/pncconf/pncconf.glade:29002 +#: src/emc/usr_intf/pncconf/pncconf.glade:29022 +#: src/emc/usr_intf/pncconf/pncconf.glade:29042 +#: src/emc/usr_intf/pncconf/pncconf.glade:29062 +#: src/emc/usr_intf/pncconf/pncconf.glade:29082 +#: src/emc/usr_intf/pncconf/pncconf.glade:29102 +#: src/emc/usr_intf/pncconf/pncconf.glade:29122 +#: src/emc/usr_intf/pncconf/pncconf.glade:29142 +#: src/emc/usr_intf/pncconf/pncconf.glade:29162 +#: src/emc/usr_intf/pncconf/pncconf.glade:29182 +#: src/emc/usr_intf/pncconf/pncconf.glade:29202 +#: src/emc/usr_intf/pncconf/pncconf.glade:29222 +#: src/emc/usr_intf/pncconf/pncconf.glade:29242 +#: src/emc/usr_intf/pncconf/pncconf.glade:29262 +#: src/emc/usr_intf/pncconf/pncconf.glade:29282 +#: src/emc/usr_intf/pncconf/pncconf.glade:29302 +#: src/emc/usr_intf/pncconf/pncconf.glade:29322 +#: src/emc/usr_intf/pncconf/pncconf.glade:29342 +#: src/emc/usr_intf/pncconf/pncconf.glade:29362 +#: src/emc/usr_intf/pncconf/pncconf.glade:29382 +#: src/emc/usr_intf/pncconf/pncconf.glade:31311 +#: src/emc/usr_intf/pncconf/pncconf.glade:31663 +#: src/emc/usr_intf/pncconf/pncconf.glade:32881 +#: src/emc/usr_intf/pncconf/pncconf.glade:32901 +#: src/emc/usr_intf/pncconf/pncconf.glade:32921 +#: src/emc/usr_intf/pncconf/pncconf.glade:32941 +#: src/emc/usr_intf/pncconf/pncconf.glade:32961 +#: src/emc/usr_intf/pncconf/pncconf.glade:32981 +#: src/emc/usr_intf/pncconf/pncconf.glade:33001 +#: src/emc/usr_intf/pncconf/pncconf.glade:33021 +#: src/emc/usr_intf/pncconf/pncconf.glade:33041 +#: src/emc/usr_intf/pncconf/pncconf.glade:33061 +#: src/emc/usr_intf/pncconf/pncconf.glade:33081 +#: src/emc/usr_intf/pncconf/pncconf.glade:33300 +#: src/emc/usr_intf/pncconf/pncconf.glade:33320 +#: src/emc/usr_intf/pncconf/pncconf.glade:33340 +#: src/emc/usr_intf/pncconf/pncconf.glade:33360 +#: src/emc/usr_intf/pncconf/pncconf.glade:33380 +#: src/emc/usr_intf/pncconf/pncconf.glade:33400 +#: src/emc/usr_intf/pncconf/pncconf.glade:33420 +#: src/emc/usr_intf/pncconf/pncconf.glade:33440 +#: src/emc/usr_intf/pncconf/pncconf.glade:33460 +#: src/emc/usr_intf/pncconf/pncconf.glade:33480 +#: src/emc/usr_intf/pncconf/pncconf.glade:33500 +#: src/emc/usr_intf/pncconf/pncconf.glade:33520 +#: src/emc/usr_intf/pncconf/pncconf.glade:33540 +#: src/emc/usr_intf/pncconf/pncconf.glade:33560 +#: src/emc/usr_intf/pncconf/pncconf.glade:33580 +#: src/emc/usr_intf/pncconf/pncconf.glade:33600 +#: src/emc/usr_intf/pncconf/pncconf.glade:33620 +#: src/emc/usr_intf/pncconf/pncconf.glade:33640 +#: src/emc/usr_intf/pncconf/pncconf.glade:33660 +#: src/emc/usr_intf/pncconf/pncconf.glade:33680 +#: src/emc/usr_intf/pncconf/pncconf.glade:33700 +#: src/emc/usr_intf/pncconf/pncconf.glade:33720 +#: src/emc/usr_intf/pncconf/pncconf.glade:33740 +#: src/emc/usr_intf/pncconf/pncconf.glade:35656 +#: src/emc/usr_intf/pncconf/pncconf.glade:35879 +#: src/emc/usr_intf/pncconf/pncconf.glade:37808 +#: src/emc/usr_intf/pncconf/pncconf.glade:37828 +#: src/emc/usr_intf/pncconf/pncconf.glade:37848 +#: src/emc/usr_intf/pncconf/pncconf.glade:37868 +#: src/emc/usr_intf/pncconf/pncconf.glade:37888 +#: src/emc/usr_intf/pncconf/pncconf.glade:37908 +#: src/emc/usr_intf/pncconf/pncconf.glade:37928 +#: src/emc/usr_intf/pncconf/pncconf.glade:37948 +#: src/emc/usr_intf/pncconf/pncconf.glade:37968 +#: src/emc/usr_intf/pncconf/pncconf.glade:37988 +#: src/emc/usr_intf/pncconf/pncconf.glade:38008 +#: src/emc/usr_intf/pncconf/pncconf.glade:38028 +#: src/emc/usr_intf/pncconf/pncconf.glade:38048 +#: src/emc/usr_intf/pncconf/pncconf.glade:38068 +#: src/emc/usr_intf/pncconf/pncconf.glade:38088 +#: src/emc/usr_intf/pncconf/pncconf.glade:38108 +#: src/emc/usr_intf/pncconf/pncconf.glade:38128 +#: src/emc/usr_intf/pncconf/pncconf.glade:38148 +#: src/emc/usr_intf/pncconf/pncconf.glade:38168 +#: src/emc/usr_intf/pncconf/pncconf.glade:38188 +#: src/emc/usr_intf/pncconf/pncconf.glade:38208 +#: src/emc/usr_intf/pncconf/pncconf.glade:38228 +#: src/emc/usr_intf/pncconf/pncconf.glade:38248 +#: src/emc/usr_intf/pncconf/pncconf.glade:38557 +#: src/emc/usr_intf/pncconf/pncconf.glade:38577 +#: src/emc/usr_intf/pncconf/pncconf.glade:38597 +#: src/emc/usr_intf/pncconf/pncconf.glade:38617 +#: src/emc/usr_intf/pncconf/pncconf.glade:38637 +#: src/emc/usr_intf/pncconf/pncconf.glade:38657 +#: src/emc/usr_intf/pncconf/pncconf.glade:38677 +#: src/emc/usr_intf/pncconf/pncconf.glade:38697 +#: src/emc/usr_intf/pncconf/pncconf.glade:38717 +#: src/emc/usr_intf/pncconf/pncconf.glade:38737 +#: src/emc/usr_intf/pncconf/pncconf.glade:38757 +#: src/emc/usr_intf/pncconf/pncconf.glade:39987 +#: src/emc/usr_intf/pncconf/pncconf.glade:40239 +#: src/emc/usr_intf/pncconf/pncconf.glade:42155 +#: src/emc/usr_intf/pncconf/pncconf.glade:42175 +#: src/emc/usr_intf/pncconf/pncconf.glade:42195 +#: src/emc/usr_intf/pncconf/pncconf.glade:42215 +#: src/emc/usr_intf/pncconf/pncconf.glade:42235 +#: src/emc/usr_intf/pncconf/pncconf.glade:42255 +#: src/emc/usr_intf/pncconf/pncconf.glade:42275 +#: src/emc/usr_intf/pncconf/pncconf.glade:42295 +#: src/emc/usr_intf/pncconf/pncconf.glade:42315 +#: src/emc/usr_intf/pncconf/pncconf.glade:42335 +#: src/emc/usr_intf/pncconf/pncconf.glade:42355 +#: src/emc/usr_intf/pncconf/pncconf.glade:42375 +#: src/emc/usr_intf/pncconf/pncconf.glade:42395 +#: src/emc/usr_intf/pncconf/pncconf.glade:42415 +#: src/emc/usr_intf/pncconf/pncconf.glade:42435 +#: src/emc/usr_intf/pncconf/pncconf.glade:42455 +#: src/emc/usr_intf/pncconf/pncconf.glade:42475 +#: src/emc/usr_intf/pncconf/pncconf.glade:42495 +#: src/emc/usr_intf/pncconf/pncconf.glade:42515 +#: src/emc/usr_intf/pncconf/pncconf.glade:42535 +#: src/emc/usr_intf/pncconf/pncconf.glade:42555 +#: src/emc/usr_intf/pncconf/pncconf.glade:42575 +#: src/emc/usr_intf/pncconf/pncconf.glade:42595 +#: src/emc/usr_intf/pncconf/pncconf.glade:42786 +#: src/emc/usr_intf/pncconf/pncconf.glade:42806 +#: src/emc/usr_intf/pncconf/pncconf.glade:42826 +#: src/emc/usr_intf/pncconf/pncconf.glade:42846 +#: src/emc/usr_intf/pncconf/pncconf.glade:42866 +#: src/emc/usr_intf/pncconf/pncconf.glade:42886 +#: src/emc/usr_intf/pncconf/pncconf.glade:42906 +#: src/emc/usr_intf/pncconf/pncconf.glade:42926 +#: src/emc/usr_intf/pncconf/pncconf.glade:42946 +#: src/emc/usr_intf/pncconf/pncconf.glade:42966 +#: src/emc/usr_intf/pncconf/pncconf.glade:42986 +#: src/emc/usr_intf/pncconf/pncconf.glade:43006 +#: src/emc/usr_intf/pncconf/pncconf.glade:43026 +#: src/emc/usr_intf/pncconf/pncconf.glade:43046 +#: src/emc/usr_intf/pncconf/pncconf.glade:43066 +#: src/emc/usr_intf/pncconf/pncconf.glade:43086 +#: src/emc/usr_intf/pncconf/pncconf.glade:43106 +#: src/emc/usr_intf/pncconf/pncconf.glade:43126 +#: src/emc/usr_intf/pncconf/pncconf.glade:43146 +#: src/emc/usr_intf/pncconf/pncconf.glade:43166 +#: src/emc/usr_intf/pncconf/pncconf.glade:43186 +#: src/emc/usr_intf/pncconf/pncconf.glade:43206 +#: src/emc/usr_intf/pncconf/pncconf.glade:43226 +#: src/emc/usr_intf/pncconf/pncconf.glade:45155 +#: src/emc/usr_intf/pncconf/pncconf.glade:45496 +#: src/emc/usr_intf/pncconf/pncconf.glade:46726 +#: src/emc/usr_intf/pncconf/pncconf.glade:46746 +#: src/emc/usr_intf/pncconf/pncconf.glade:46766 +#: src/emc/usr_intf/pncconf/pncconf.glade:46786 +#: src/emc/usr_intf/pncconf/pncconf.glade:46806 +#: src/emc/usr_intf/pncconf/pncconf.glade:46826 +#: src/emc/usr_intf/pncconf/pncconf.glade:46846 +#: src/emc/usr_intf/pncconf/pncconf.glade:46866 +#: src/emc/usr_intf/pncconf/pncconf.glade:46886 +#: src/emc/usr_intf/pncconf/pncconf.glade:46906 +#: src/emc/usr_intf/pncconf/pncconf.glade:46926 +#: src/emc/usr_intf/pncconf/pncconf.glade:47162 +#: src/emc/usr_intf/pncconf/pncconf.glade:49078 +#: src/emc/usr_intf/pncconf/pncconf.glade:49098 +#: src/emc/usr_intf/pncconf/pncconf.glade:49118 +#: src/emc/usr_intf/pncconf/pncconf.glade:49138 +#: src/emc/usr_intf/pncconf/pncconf.glade:49158 +#: src/emc/usr_intf/pncconf/pncconf.glade:49178 +#: src/emc/usr_intf/pncconf/pncconf.glade:49198 +#: src/emc/usr_intf/pncconf/pncconf.glade:49218 +#: src/emc/usr_intf/pncconf/pncconf.glade:49238 +#: src/emc/usr_intf/pncconf/pncconf.glade:49258 +#: src/emc/usr_intf/pncconf/pncconf.glade:49278 +#: src/emc/usr_intf/pncconf/pncconf.glade:49298 +#: src/emc/usr_intf/pncconf/pncconf.glade:49318 +#: src/emc/usr_intf/pncconf/pncconf.glade:49338 +#: src/emc/usr_intf/pncconf/pncconf.glade:49358 +#: src/emc/usr_intf/pncconf/pncconf.glade:49378 +#: src/emc/usr_intf/pncconf/pncconf.glade:49398 +#: src/emc/usr_intf/pncconf/pncconf.glade:49418 +#: src/emc/usr_intf/pncconf/pncconf.glade:49438 +#: src/emc/usr_intf/pncconf/pncconf.glade:49458 +#: src/emc/usr_intf/pncconf/pncconf.glade:49478 +#: src/emc/usr_intf/pncconf/pncconf.glade:49498 +#: src/emc/usr_intf/pncconf/pncconf.glade:49518 +#: src/emc/usr_intf/pncconf/pncconf.glade:49709 +#: src/emc/usr_intf/pncconf/pncconf.glade:49729 +#: src/emc/usr_intf/pncconf/pncconf.glade:49749 +#: src/emc/usr_intf/pncconf/pncconf.glade:49769 +#: src/emc/usr_intf/pncconf/pncconf.glade:49789 +#: src/emc/usr_intf/pncconf/pncconf.glade:49809 +#: src/emc/usr_intf/pncconf/pncconf.glade:49829 +#: src/emc/usr_intf/pncconf/pncconf.glade:49849 +#: src/emc/usr_intf/pncconf/pncconf.glade:49869 +#: src/emc/usr_intf/pncconf/pncconf.glade:49889 +#: src/emc/usr_intf/pncconf/pncconf.glade:49909 +#: src/emc/usr_intf/pncconf/pncconf.glade:49929 +#: src/emc/usr_intf/pncconf/pncconf.glade:49949 +#: src/emc/usr_intf/pncconf/pncconf.glade:49969 +#: src/emc/usr_intf/pncconf/pncconf.glade:49989 +#: src/emc/usr_intf/pncconf/pncconf.glade:50009 +#: src/emc/usr_intf/pncconf/pncconf.glade:50029 +#: src/emc/usr_intf/pncconf/pncconf.glade:50049 +#: src/emc/usr_intf/pncconf/pncconf.glade:50069 +#: src/emc/usr_intf/pncconf/pncconf.glade:50089 +#: src/emc/usr_intf/pncconf/pncconf.glade:50109 +#: src/emc/usr_intf/pncconf/pncconf.glade:50129 +#: src/emc/usr_intf/pncconf/pncconf.glade:50149 +#: src/emc/usr_intf/pncconf/pncconf.glade:52078 +#: src/emc/usr_intf/pncconf/pncconf.glade:52419 +#: src/emc/usr_intf/pncconf/pncconf.glade:53649 +#: src/emc/usr_intf/pncconf/pncconf.glade:53669 +#: src/emc/usr_intf/pncconf/pncconf.glade:53689 +#: src/emc/usr_intf/pncconf/pncconf.glade:53709 +#: src/emc/usr_intf/pncconf/pncconf.glade:53729 +#: src/emc/usr_intf/pncconf/pncconf.glade:53749 +#: src/emc/usr_intf/pncconf/pncconf.glade:53769 +#: src/emc/usr_intf/pncconf/pncconf.glade:53789 +#: src/emc/usr_intf/pncconf/pncconf.glade:53809 +#: src/emc/usr_intf/pncconf/pncconf.glade:53829 +#: src/emc/usr_intf/pncconf/pncconf.glade:53849 +#: src/emc/usr_intf/pncconf/pncconf.glade:54085 +#: src/emc/usr_intf/pncconf/pncconf.glade:56001 +#: src/emc/usr_intf/pncconf/pncconf.glade:56021 +#: src/emc/usr_intf/pncconf/pncconf.glade:56041 +#: src/emc/usr_intf/pncconf/pncconf.glade:56061 +#: src/emc/usr_intf/pncconf/pncconf.glade:56081 +#: src/emc/usr_intf/pncconf/pncconf.glade:56101 +#: src/emc/usr_intf/pncconf/pncconf.glade:56121 +#: src/emc/usr_intf/pncconf/pncconf.glade:56141 +#: src/emc/usr_intf/pncconf/pncconf.glade:56161 +#: src/emc/usr_intf/pncconf/pncconf.glade:56181 +#: src/emc/usr_intf/pncconf/pncconf.glade:56201 +#: src/emc/usr_intf/pncconf/pncconf.glade:56221 +#: src/emc/usr_intf/pncconf/pncconf.glade:56241 +#: src/emc/usr_intf/pncconf/pncconf.glade:56261 +#: src/emc/usr_intf/pncconf/pncconf.glade:56281 +#: src/emc/usr_intf/pncconf/pncconf.glade:56301 +#: src/emc/usr_intf/pncconf/pncconf.glade:56321 +#: src/emc/usr_intf/pncconf/pncconf.glade:56341 +#: src/emc/usr_intf/pncconf/pncconf.glade:56361 +#: src/emc/usr_intf/pncconf/pncconf.glade:56381 +#: src/emc/usr_intf/pncconf/pncconf.glade:56401 +#: src/emc/usr_intf/pncconf/pncconf.glade:56421 +#: src/emc/usr_intf/pncconf/pncconf.glade:56441 +#: src/emc/usr_intf/pncconf/pncconf.glade:56632 +#: src/emc/usr_intf/pncconf/pncconf.glade:56652 +#: src/emc/usr_intf/pncconf/pncconf.glade:56672 +#: src/emc/usr_intf/pncconf/pncconf.glade:56692 +#: src/emc/usr_intf/pncconf/pncconf.glade:56712 +#: src/emc/usr_intf/pncconf/pncconf.glade:56732 +#: src/emc/usr_intf/pncconf/pncconf.glade:56752 +#: src/emc/usr_intf/pncconf/pncconf.glade:56772 +#: src/emc/usr_intf/pncconf/pncconf.glade:56792 +#: src/emc/usr_intf/pncconf/pncconf.glade:56812 +#: src/emc/usr_intf/pncconf/pncconf.glade:56832 +#: src/emc/usr_intf/pncconf/pncconf.glade:56852 +#: src/emc/usr_intf/pncconf/pncconf.glade:56872 +#: src/emc/usr_intf/pncconf/pncconf.glade:56892 +#: src/emc/usr_intf/pncconf/pncconf.glade:56912 +#: src/emc/usr_intf/pncconf/pncconf.glade:56932 +#: src/emc/usr_intf/pncconf/pncconf.glade:56952 +#: src/emc/usr_intf/pncconf/pncconf.glade:56972 +#: src/emc/usr_intf/pncconf/pncconf.glade:56992 +#: src/emc/usr_intf/pncconf/pncconf.glade:57012 +#: src/emc/usr_intf/pncconf/pncconf.glade:57032 +#: src/emc/usr_intf/pncconf/pncconf.glade:57052 +#: src/emc/usr_intf/pncconf/pncconf.glade:57072 +#: src/emc/usr_intf/pncconf/pncconf.glade:59001 +#: src/emc/usr_intf/pncconf/pncconf.glade:59342 +#: src/emc/usr_intf/pncconf/pncconf.glade:60572 +#: src/emc/usr_intf/pncconf/pncconf.glade:60592 +#: src/emc/usr_intf/pncconf/pncconf.glade:60612 +#: src/emc/usr_intf/pncconf/pncconf.glade:60632 +#: src/emc/usr_intf/pncconf/pncconf.glade:60652 +#: src/emc/usr_intf/pncconf/pncconf.glade:60672 +#: src/emc/usr_intf/pncconf/pncconf.glade:60692 +#: src/emc/usr_intf/pncconf/pncconf.glade:60712 +#: src/emc/usr_intf/pncconf/pncconf.glade:60732 +#: src/emc/usr_intf/pncconf/pncconf.glade:60752 +#: src/emc/usr_intf/pncconf/pncconf.glade:60772 +msgid "" +"GPIO Input\n" +"GPIO Output\n" +"GPIO O Drain\n" +"Encoder\n" +"PWM\n" +"StepGen\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6479 -#: src/emc/usr_intf/pncconf/pncconf.glade:7148 -msgid "GTK Theme" +#: src/emc/usr_intf/pncconf/pncconf.glade:8913 +#: src/emc/usr_intf/pncconf/pncconf.glade:13730 +#: src/emc/usr_intf/pncconf/pncconf.glade:18936 +#: src/emc/usr_intf/pncconf/pncconf.glade:20738 +#: src/emc/usr_intf/pncconf/pncconf.glade:21031 +#: src/emc/usr_intf/pncconf/pncconf.glade:22827 +#: src/emc/usr_intf/pncconf/pncconf.glade:24623 +msgid " 1:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6491 -#: src/emc/usr_intf/pncconf/pncconf.glade:7158 -msgid "Follow System Theme\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:8927 +#: src/emc/usr_intf/pncconf/pncconf.glade:13716 +#: src/emc/usr_intf/pncconf/pncconf.glade:18922 +#: src/emc/usr_intf/pncconf/pncconf.glade:20724 +#: src/emc/usr_intf/pncconf/pncconf.glade:21045 +#: src/emc/usr_intf/pncconf/pncconf.glade:22841 +#: src/emc/usr_intf/pncconf/pncconf.glade:24637 +msgid " 3:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6624 -msgid "Force Touchy to Maximize after positioning" +#: src/emc/usr_intf/pncconf/pncconf.glade:8941 +#: src/emc/usr_intf/pncconf/pncconf.glade:13702 +#: src/emc/usr_intf/pncconf/pncconf.glade:18908 +#: src/emc/usr_intf/pncconf/pncconf.glade:20710 +#: src/emc/usr_intf/pncconf/pncconf.glade:21059 +#: src/emc/usr_intf/pncconf/pncconf.glade:22855 +#: src/emc/usr_intf/pncconf/pncconf.glade:24651 +msgid " 5:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6669 -msgid "GUI Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:8955 +#: src/emc/usr_intf/pncconf/pncconf.glade:13688 +#: src/emc/usr_intf/pncconf/pncconf.glade:18894 +#: src/emc/usr_intf/pncconf/pncconf.glade:20696 +#: src/emc/usr_intf/pncconf/pncconf.glade:21073 +#: src/emc/usr_intf/pncconf/pncconf.glade:22869 +#: src/emc/usr_intf/pncconf/pncconf.glade:24665 +msgid " 7:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6700 -msgid "Virtual Control Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:8969 +#: src/emc/usr_intf/pncconf/pncconf.glade:13674 +#: src/emc/usr_intf/pncconf/pncconf.glade:18880 +#: src/emc/usr_intf/pncconf/pncconf.glade:20682 +#: src/emc/usr_intf/pncconf/pncconf.glade:21087 +#: src/emc/usr_intf/pncconf/pncconf.glade:22883 +#: src/emc/usr_intf/pncconf/pncconf.glade:24679 +msgid " 9:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6775 -msgid "XYZ buttons (uses Halui)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8983 +#: src/emc/usr_intf/pncconf/pncconf.glade:13660 +#: src/emc/usr_intf/pncconf/pncconf.glade:18866 +#: src/emc/usr_intf/pncconf/pncconf.glade:20668 +#: src/emc/usr_intf/pncconf/pncconf.glade:21101 +#: src/emc/usr_intf/pncconf/pncconf.glade:22897 +#: src/emc/usr_intf/pncconf/pncconf.glade:24693 +msgid "11:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6946 -msgid "Geometry Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:8997 +#: src/emc/usr_intf/pncconf/pncconf.glade:13646 +#: src/emc/usr_intf/pncconf/pncconf.glade:18852 +#: src/emc/usr_intf/pncconf/pncconf.glade:20654 +#: src/emc/usr_intf/pncconf/pncconf.glade:21115 +#: src/emc/usr_intf/pncconf/pncconf.glade:22911 +#: src/emc/usr_intf/pncconf/pncconf.glade:24707 +msgid "13:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7025 -msgid "Pyvcp Details" +#: src/emc/usr_intf/pncconf/pncconf.glade:9011 +#: src/emc/usr_intf/pncconf/pncconf.glade:13632 +#: src/emc/usr_intf/pncconf/pncconf.glade:18838 +#: src/emc/usr_intf/pncconf/pncconf.glade:20640 +#: src/emc/usr_intf/pncconf/pncconf.glade:21129 +#: src/emc/usr_intf/pncconf/pncconf.glade:22925 +#: src/emc/usr_intf/pncconf/pncconf.glade:24721 +msgid "15:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7097 -msgid "Sample display " +#: src/emc/usr_intf/pncconf/pncconf.glade:9025 +#: src/emc/usr_intf/pncconf/pncconf.glade:13618 +#: src/emc/usr_intf/pncconf/pncconf.glade:18824 +#: src/emc/usr_intf/pncconf/pncconf.glade:20626 +#: src/emc/usr_intf/pncconf/pncconf.glade:21143 +#: src/emc/usr_intf/pncconf/pncconf.glade:22939 +#: src/emc/usr_intf/pncconf/pncconf.glade:24735 +msgid "17:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7172 -msgid "Force Maximize" +#: src/emc/usr_intf/pncconf/pncconf.glade:9039 +#: src/emc/usr_intf/pncconf/pncconf.glade:13604 +#: src/emc/usr_intf/pncconf/pncconf.glade:18810 +#: src/emc/usr_intf/pncconf/pncconf.glade:20612 +#: src/emc/usr_intf/pncconf/pncconf.glade:21157 +#: src/emc/usr_intf/pncconf/pncconf.glade:22953 +#: src/emc/usr_intf/pncconf/pncconf.glade:24749 +msgid "19:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7186 -msgid "Center Tab Embeded" +#: src/emc/usr_intf/pncconf/pncconf.glade:9053 +#: src/emc/usr_intf/pncconf/pncconf.glade:13590 +#: src/emc/usr_intf/pncconf/pncconf.glade:18796 +#: src/emc/usr_intf/pncconf/pncconf.glade:20598 +#: src/emc/usr_intf/pncconf/pncconf.glade:21171 +#: src/emc/usr_intf/pncconf/pncconf.glade:22967 +#: src/emc/usr_intf/pncconf/pncconf.glade:24763 +msgid "21:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7201 -msgid "Rightside Embeded" +#: src/emc/usr_intf/pncconf/pncconf.glade:9067 +#: src/emc/usr_intf/pncconf/pncconf.glade:13576 +#: src/emc/usr_intf/pncconf/pncconf.glade:18782 +#: src/emc/usr_intf/pncconf/pncconf.glade:20584 +#: src/emc/usr_intf/pncconf/pncconf.glade:21185 +#: src/emc/usr_intf/pncconf/pncconf.glade:22981 +#: src/emc/usr_intf/pncconf/pncconf.glade:24777 +msgid "23:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7217 -msgid "Standalone Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:9801 +#: src/emc/usr_intf/pncconf/pncconf.glade:12840 +#: src/emc/usr_intf/pncconf/pncconf.glade:17994 +#: src/emc/usr_intf/pncconf/pncconf.glade:20170 +#: src/emc/usr_intf/pncconf/pncconf.glade:21597 +#: src/emc/usr_intf/pncconf/pncconf.glade:23393 +#: src/emc/usr_intf/pncconf/pncconf.glade:25189 +msgid "47:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7351 -#, fuzzy -msgid "Display Options" -msgstr "_Inch" - -#: src/emc/usr_intf/pncconf/pncconf.glade:7401 -msgid "Max RPM" +#: src/emc/usr_intf/pncconf/pncconf.glade:9868 +#: src/emc/usr_intf/pncconf/pncconf.glade:12773 +#: src/emc/usr_intf/pncconf/pncconf.glade:17927 +#: src/emc/usr_intf/pncconf/pncconf.glade:20119 +#: src/emc/usr_intf/pncconf/pncconf.glade:21648 +#: src/emc/usr_intf/pncconf/pncconf.glade:23444 +#: src/emc/usr_intf/pncconf/pncconf.glade:25240 +msgid "45:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7414 -#, fuzzy -msgid "Spindle Speed Indicator" -msgstr "Brzina obradnog motora (1/min)" - -#: src/emc/usr_intf/pncconf/pncconf.glade:7426 -#, fuzzy -msgid "Spindle At Speed LED" -msgstr "Brzina obradnog motora (1/min)" - -#: src/emc/usr_intf/pncconf/pncconf.glade:7438 -#, fuzzy -msgid "Zero X Button" -msgstr "Levi taster" - -#: src/emc/usr_intf/pncconf/pncconf.glade:7450 -#, fuzzy -msgid "Zero Y Button" -msgstr "Levi taster" - -#: src/emc/usr_intf/pncconf/pncconf.glade:7462 -#, fuzzy -msgid "Zero Z Button" -msgstr "Levi taster" - -#: src/emc/usr_intf/pncconf/pncconf.glade:7474 -#, fuzzy -msgid "Zero A Button" -msgstr "Levi taster" - -#: src/emc/usr_intf/pncconf/pncconf.glade:7486 -msgid "Requires Classicladder touch-off program" +#: src/emc/usr_intf/pncconf/pncconf.glade:9884 +#: src/emc/usr_intf/pncconf/pncconf.glade:12757 +#: src/emc/usr_intf/pncconf/pncconf.glade:17911 +#: src/emc/usr_intf/pncconf/pncconf.glade:20103 +#: src/emc/usr_intf/pncconf/pncconf.glade:21664 +#: src/emc/usr_intf/pncconf/pncconf.glade:23460 +#: src/emc/usr_intf/pncconf/pncconf.glade:25256 +msgid "43:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7487 -msgid "Auto Z Touch Off Button" +#: src/emc/usr_intf/pncconf/pncconf.glade:9900 +#: src/emc/usr_intf/pncconf/pncconf.glade:12741 +#: src/emc/usr_intf/pncconf/pncconf.glade:17895 +#: src/emc/usr_intf/pncconf/pncconf.glade:20087 +#: src/emc/usr_intf/pncconf/pncconf.glade:21680 +#: src/emc/usr_intf/pncconf/pncconf.glade:23476 +#: src/emc/usr_intf/pncconf/pncconf.glade:25272 +msgid "41:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7500 -#, fuzzy -msgid "Sample Options" -msgstr "Konfiguration der Spindel" - -#: src/emc/usr_intf/pncconf/pncconf.glade:7574 -msgid "Gladevcp Details" +#: src/emc/usr_intf/pncconf/pncconf.glade:9916 +#: src/emc/usr_intf/pncconf/pncconf.glade:12725 +#: src/emc/usr_intf/pncconf/pncconf.glade:17879 +#: src/emc/usr_intf/pncconf/pncconf.glade:20071 +#: src/emc/usr_intf/pncconf/pncconf.glade:21696 +#: src/emc/usr_intf/pncconf/pncconf.glade:23492 +#: src/emc/usr_intf/pncconf/pncconf.glade:25288 +msgid "39:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7597 -#, fuzzy -msgid "Include custom GladeVCP GUI panel" -msgstr "Ukljucu korisnicki P_yVCP-panel" - -#: src/emc/usr_intf/pncconf/pncconf.glade:7668 -msgid "Restore joint position after shutdown" +#: src/emc/usr_intf/pncconf/pncconf.glade:9932 +#: src/emc/usr_intf/pncconf/pncconf.glade:12709 +#: src/emc/usr_intf/pncconf/pncconf.glade:17863 +#: src/emc/usr_intf/pncconf/pncconf.glade:20055 +#: src/emc/usr_intf/pncconf/pncconf.glade:21712 +#: src/emc/usr_intf/pncconf/pncconf.glade:23508 +#: src/emc/usr_intf/pncconf/pncconf.glade:25304 +msgid "37:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7683 -#, fuzzy -msgid "Move spindle up before tool change" -msgstr "_Prikazi upit za promenu alata" - -#: src/emc/usr_intf/pncconf/pncconf.glade:7696 -msgid "Leave spindle on during tool change" +#: src/emc/usr_intf/pncconf/pncconf.glade:9948 +#: src/emc/usr_intf/pncconf/pncconf.glade:12693 +#: src/emc/usr_intf/pncconf/pncconf.glade:17847 +#: src/emc/usr_intf/pncconf/pncconf.glade:20039 +#: src/emc/usr_intf/pncconf/pncconf.glade:21728 +#: src/emc/usr_intf/pncconf/pncconf.glade:23524 +#: src/emc/usr_intf/pncconf/pncconf.glade:25320 +msgid "35:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7709 -msgid "Popup Toolchange Prompt" +#: src/emc/usr_intf/pncconf/pncconf.glade:9964 +#: src/emc/usr_intf/pncconf/pncconf.glade:12677 +#: src/emc/usr_intf/pncconf/pncconf.glade:17831 +#: src/emc/usr_intf/pncconf/pncconf.glade:20023 +#: src/emc/usr_intf/pncconf/pncconf.glade:21744 +#: src/emc/usr_intf/pncconf/pncconf.glade:23540 +#: src/emc/usr_intf/pncconf/pncconf.glade:25336 +msgid "33:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7723 -msgid "Require homing before MDI / Running" +#: src/emc/usr_intf/pncconf/pncconf.glade:10337 +#: src/emc/usr_intf/pncconf/pncconf.glade:12304 +#: src/emc/usr_intf/pncconf/pncconf.glade:17458 +#: src/emc/usr_intf/pncconf/pncconf.glade:19762 +#: src/emc/usr_intf/pncconf/pncconf.glade:22005 +#: src/emc/usr_intf/pncconf/pncconf.glade:23801 +#: src/emc/usr_intf/pncconf/pncconf.glade:25597 +msgid "25:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7732 -msgid "Random position toolchanger " +#: src/emc/usr_intf/pncconf/pncconf.glade:10353 +#: src/emc/usr_intf/pncconf/pncconf.glade:12288 +#: src/emc/usr_intf/pncconf/pncconf.glade:17442 +#: src/emc/usr_intf/pncconf/pncconf.glade:19746 +#: src/emc/usr_intf/pncconf/pncconf.glade:22021 +#: src/emc/usr_intf/pncconf/pncconf.glade:23817 +#: src/emc/usr_intf/pncconf/pncconf.glade:25613 +msgid "27:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7747 -msgid "Force individual manual homing" +#: src/emc/usr_intf/pncconf/pncconf.glade:10369 +#: src/emc/usr_intf/pncconf/pncconf.glade:12272 +#: src/emc/usr_intf/pncconf/pncconf.glade:17426 +#: src/emc/usr_intf/pncconf/pncconf.glade:19730 +#: src/emc/usr_intf/pncconf/pncconf.glade:22037 +#: src/emc/usr_intf/pncconf/pncconf.glade:23833 +#: src/emc/usr_intf/pncconf/pncconf.glade:25629 +msgid "29:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7761 -msgid "Defaults and Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:10385 +#: src/emc/usr_intf/pncconf/pncconf.glade:12256 +#: src/emc/usr_intf/pncconf/pncconf.glade:17410 +#: src/emc/usr_intf/pncconf/pncconf.glade:19714 +#: src/emc/usr_intf/pncconf/pncconf.glade:22053 +#: src/emc/usr_intf/pncconf/pncconf.glade:23849 +#: src/emc/usr_intf/pncconf/pncconf.glade:25645 +msgid "31:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7789 -msgid "Mesa0 I/O setup\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:10677 +#: src/emc/usr_intf/pncconf/pncconf.glade:10689 +#: src/emc/usr_intf/pncconf/pncconf.glade:11955 +#: src/emc/usr_intf/pncconf/pncconf.glade:11967 +#: src/emc/usr_intf/pncconf/pncconf.glade:14464 +#: src/emc/usr_intf/pncconf/pncconf.glade:14476 +#: src/emc/usr_intf/pncconf/pncconf.glade:17161 +#: src/emc/usr_intf/pncconf/pncconf.glade:17173 +#: src/emc/usr_intf/pncconf/pncconf.glade:19567 +#: src/emc/usr_intf/pncconf/pncconf.glade:19579 +#: src/emc/usr_intf/pncconf/pncconf.glade:22190 +#: src/emc/usr_intf/pncconf/pncconf.glade:22202 +#: src/emc/usr_intf/pncconf/pncconf.glade:23986 +#: src/emc/usr_intf/pncconf/pncconf.glade:23998 +#: src/emc/usr_intf/pncconf/pncconf.glade:25782 +#: src/emc/usr_intf/pncconf/pncconf.glade:25794 +#: src/emc/usr_intf/pncconf/pncconf.glade:28287 +#: src/emc/usr_intf/pncconf/pncconf.glade:28299 +#: src/emc/usr_intf/pncconf/pncconf.glade:29415 +#: src/emc/usr_intf/pncconf/pncconf.glade:29427 +#: src/emc/usr_intf/pncconf/pncconf.glade:32869 +#: src/emc/usr_intf/pncconf/pncconf.glade:33760 +#: src/emc/usr_intf/pncconf/pncconf.glade:33772 +#: src/emc/usr_intf/pncconf/pncconf.glade:37771 +#: src/emc/usr_intf/pncconf/pncconf.glade:37783 +#: src/emc/usr_intf/pncconf/pncconf.glade:38777 +#: src/emc/usr_intf/pncconf/pncconf.glade:38789 +#: src/emc/usr_intf/pncconf/pncconf.glade:42131 +#: src/emc/usr_intf/pncconf/pncconf.glade:42143 +#: src/emc/usr_intf/pncconf/pncconf.glade:43259 +#: src/emc/usr_intf/pncconf/pncconf.glade:43271 +#: src/emc/usr_intf/pncconf/pncconf.glade:46702 +#: src/emc/usr_intf/pncconf/pncconf.glade:46714 +#: src/emc/usr_intf/pncconf/pncconf.glade:49054 +#: src/emc/usr_intf/pncconf/pncconf.glade:49066 +#: src/emc/usr_intf/pncconf/pncconf.glade:50182 +#: src/emc/usr_intf/pncconf/pncconf.glade:50194 +#: src/emc/usr_intf/pncconf/pncconf.glade:53625 +#: src/emc/usr_intf/pncconf/pncconf.glade:53637 +#: src/emc/usr_intf/pncconf/pncconf.glade:55977 +#: src/emc/usr_intf/pncconf/pncconf.glade:55989 +#: src/emc/usr_intf/pncconf/pncconf.glade:57105 +#: src/emc/usr_intf/pncconf/pncconf.glade:57117 +#: src/emc/usr_intf/pncconf/pncconf.glade:60548 +#: src/emc/usr_intf/pncconf/pncconf.glade:60560 +msgid "function" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7809 -msgid "" -"Click on each page tab to configure signal names for each connector port.\n" -"\n" -"Press the button to make the tabbed pages\n" -"accept the changes.\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:10703 +#: src/emc/usr_intf/pncconf/pncconf.glade:11940 +#: src/emc/usr_intf/pncconf/pncconf.glade:14449 +#: src/emc/usr_intf/pncconf/pncconf.glade:17146 +#: src/emc/usr_intf/pncconf/pncconf.glade:19553 +#: src/emc/usr_intf/pncconf/pncconf.glade:22217 +#: src/emc/usr_intf/pncconf/pncconf.glade:24013 +#: src/emc/usr_intf/pncconf/pncconf.glade:25809 +#, fuzzy +msgid "Launch test panel" +msgstr "Rezultat _Latency testa:" -#: src/emc/usr_intf/pncconf/pncconf.glade:7998 -msgid "Num of channels: " +#: src/emc/usr_intf/pncconf/pncconf.glade:11192 +#: src/emc/usr_intf/pncconf/pncconf.glade:11204 +#: src/emc/usr_intf/pncconf/pncconf.glade:11440 +#: src/emc/usr_intf/pncconf/pncconf.glade:11454 +#: src/emc/usr_intf/pncconf/pncconf.glade:13949 +#: src/emc/usr_intf/pncconf/pncconf.glade:13963 +#: src/emc/usr_intf/pncconf/pncconf.glade:16645 +#: src/emc/usr_intf/pncconf/pncconf.glade:16659 +#: src/emc/usr_intf/pncconf/pncconf.glade:19190 +#: src/emc/usr_intf/pncconf/pncconf.glade:19204 +#: src/emc/usr_intf/pncconf/pncconf.glade:22567 +#: src/emc/usr_intf/pncconf/pncconf.glade:22579 +#: src/emc/usr_intf/pncconf/pncconf.glade:24363 +#: src/emc/usr_intf/pncconf/pncconf.glade:24375 +#: src/emc/usr_intf/pncconf/pncconf.glade:26159 +#: src/emc/usr_intf/pncconf/pncconf.glade:26171 +#: src/emc/usr_intf/pncconf/pncconf.glade:28772 +#: src/emc/usr_intf/pncconf/pncconf.glade:28784 +#: src/emc/usr_intf/pncconf/pncconf.glade:28917 +#: src/emc/usr_intf/pncconf/pncconf.glade:28931 +#: src/emc/usr_intf/pncconf/pncconf.glade:33102 +#: src/emc/usr_intf/pncconf/pncconf.glade:33275 +#: src/emc/usr_intf/pncconf/pncconf.glade:33289 +#: src/emc/usr_intf/pncconf/pncconf.glade:38269 +#: src/emc/usr_intf/pncconf/pncconf.glade:38281 +#: src/emc/usr_intf/pncconf/pncconf.glade:38532 +#: src/emc/usr_intf/pncconf/pncconf.glade:38546 +#: src/emc/usr_intf/pncconf/pncconf.glade:42616 +#: src/emc/usr_intf/pncconf/pncconf.glade:42628 +#: src/emc/usr_intf/pncconf/pncconf.glade:42761 +#: src/emc/usr_intf/pncconf/pncconf.glade:42775 +#: src/emc/usr_intf/pncconf/pncconf.glade:46947 +#: src/emc/usr_intf/pncconf/pncconf.glade:46959 +#: src/emc/usr_intf/pncconf/pncconf.glade:49539 +#: src/emc/usr_intf/pncconf/pncconf.glade:49551 +#: src/emc/usr_intf/pncconf/pncconf.glade:49684 +#: src/emc/usr_intf/pncconf/pncconf.glade:49698 +#: src/emc/usr_intf/pncconf/pncconf.glade:53870 +#: src/emc/usr_intf/pncconf/pncconf.glade:53882 +#: src/emc/usr_intf/pncconf/pncconf.glade:56462 +#: src/emc/usr_intf/pncconf/pncconf.glade:56474 +#: src/emc/usr_intf/pncconf/pncconf.glade:56607 +#: src/emc/usr_intf/pncconf/pncconf.glade:56621 +#: src/emc/usr_intf/pncconf/pncconf.glade:60793 +#: src/emc/usr_intf/pncconf/pncconf.glade:60805 +msgid "Num" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8036 -msgid "7i29 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:11222 +msgid "" +" I/O\n" +"Connector 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8045 -msgid "7i30 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:13835 +msgid "" +" I/O\n" +" Connector 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8057 -msgid "7i33 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:16281 +#: src/emc/usr_intf/pncconf/pncconf.glade:16295 +#: src/emc/usr_intf/pncconf/pncconf.glade:16322 +#: src/emc/usr_intf/pncconf/pncconf.glade:26441 +#: src/emc/usr_intf/pncconf/pncconf.glade:26468 +#: src/emc/usr_intf/pncconf/pncconf.glade:26482 +#: src/emc/usr_intf/pncconf/pncconf.glade:31232 +#: src/emc/usr_intf/pncconf/pncconf.glade:31246 +#: src/emc/usr_intf/pncconf/pncconf.glade:31273 +#: src/emc/usr_intf/pncconf/pncconf.glade:31708 +#: src/emc/usr_intf/pncconf/pncconf.glade:31735 +#: src/emc/usr_intf/pncconf/pncconf.glade:31749 +#: src/emc/usr_intf/pncconf/pncconf.glade:35577 +#: src/emc/usr_intf/pncconf/pncconf.glade:35591 +#: src/emc/usr_intf/pncconf/pncconf.glade:35618 +#: src/emc/usr_intf/pncconf/pncconf.glade:35925 +#: src/emc/usr_intf/pncconf/pncconf.glade:35952 +#: src/emc/usr_intf/pncconf/pncconf.glade:35966 +#: src/emc/usr_intf/pncconf/pncconf.glade:39909 +#: src/emc/usr_intf/pncconf/pncconf.glade:39923 +#: src/emc/usr_intf/pncconf/pncconf.glade:39950 +#: src/emc/usr_intf/pncconf/pncconf.glade:40285 +#: src/emc/usr_intf/pncconf/pncconf.glade:40312 +#: src/emc/usr_intf/pncconf/pncconf.glade:40326 +#: src/emc/usr_intf/pncconf/pncconf.glade:45076 +#: src/emc/usr_intf/pncconf/pncconf.glade:45090 +#: src/emc/usr_intf/pncconf/pncconf.glade:45117 +#: src/emc/usr_intf/pncconf/pncconf.glade:45541 +#: src/emc/usr_intf/pncconf/pncconf.glade:45568 +#: src/emc/usr_intf/pncconf/pncconf.glade:45582 +#: src/emc/usr_intf/pncconf/pncconf.glade:47208 +#: src/emc/usr_intf/pncconf/pncconf.glade:47235 +#: src/emc/usr_intf/pncconf/pncconf.glade:47249 +#: src/emc/usr_intf/pncconf/pncconf.glade:51999 +#: src/emc/usr_intf/pncconf/pncconf.glade:52013 +#: src/emc/usr_intf/pncconf/pncconf.glade:52040 +#: src/emc/usr_intf/pncconf/pncconf.glade:52464 +#: src/emc/usr_intf/pncconf/pncconf.glade:52491 +#: src/emc/usr_intf/pncconf/pncconf.glade:52505 +#: src/emc/usr_intf/pncconf/pncconf.glade:54131 +#: src/emc/usr_intf/pncconf/pncconf.glade:54158 +#: src/emc/usr_intf/pncconf/pncconf.glade:54172 +#: src/emc/usr_intf/pncconf/pncconf.glade:58922 +#: src/emc/usr_intf/pncconf/pncconf.glade:58936 +#: src/emc/usr_intf/pncconf/pncconf.glade:58963 +#: src/emc/usr_intf/pncconf/pncconf.glade:59387 +#: src/emc/usr_intf/pncconf/pncconf.glade:59414 +#: src/emc/usr_intf/pncconf/pncconf.glade:59428 +msgid " " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8069 -msgid "7i40 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:16427 +msgid "" +" I/O\n" +" Connector 4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8081 -msgid "7i48 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:19041 +msgid "" +" I/O\n" +" Connector 5" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8096 -msgid "Sanity Checks" +#: src/emc/usr_intf/pncconf/pncconf.glade:20837 +msgid "" +" I/O\n" +"Connector 6" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8137 -msgid "Num of Smart Serial Ports:" +#: src/emc/usr_intf/pncconf/pncconf.glade:22633 +msgid "" +" I/O\n" +"Connector 7" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8148 -#, fuzzy -msgid "Board name" -msgstr "World-rezim" - -#: src/emc/usr_intf/pncconf/pncconf.glade:8155 -msgid "Num of step generators: " +#: src/emc/usr_intf/pncconf/pncconf.glade:24429 +msgid "" +" I/O\n" +"Connector 8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8166 -msgid "Num of pwm generators:" +#: src/emc/usr_intf/pncconf/pncconf.glade:26225 +msgid "" +" I/O\n" +" Connector 9" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8177 -msgid "Num of encoders:" +#: src/emc/usr_intf/pncconf/pncconf.glade:31378 +#: src/emc/usr_intf/pncconf/pncconf.glade:38299 +#: src/emc/usr_intf/pncconf/pncconf.glade:45222 +#: src/emc/usr_intf/pncconf/pncconf.glade:52145 +#: src/emc/usr_intf/pncconf/pncconf.glade:59068 +msgid "page 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8294 -msgid "Watchdog timeout:" +#: src/emc/usr_intf/pncconf/pncconf.glade:33131 +#: src/emc/usr_intf/pncconf/pncconf.glade:40054 +#: src/emc/usr_intf/pncconf/pncconf.glade:46977 +#: src/emc/usr_intf/pncconf/pncconf.glade:53900 +#: src/emc/usr_intf/pncconf/pncconf.glade:60823 +msgid "page 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8305 -msgid "PDM base frequency:" +#: src/emc/usr_intf/pncconf/pncconf.glade:33147 +msgid "Smart Serial 0" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8316 -msgid "PWM base frequency:" +#: src/emc/usr_intf/pncconf/pncconf.glade:40070 +msgid "Smart Serial 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8328 -msgid "" -"Accept components\n" -" Changes" +#: src/emc/usr_intf/pncconf/pncconf.glade:46993 +msgid "Smart Serial 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8356 -msgid "Total number of pins:" +#: src/emc/usr_intf/pncconf/pncconf.glade:53916 +msgid "Smart Serial 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8389 -msgid "Num of 3 pwm generators: " +#: src/emc/usr_intf/pncconf/pncconf.glade:60839 +msgid "Smart Serial 4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8412 -msgid "SVST8_4" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:60861 +#, fuzzy +msgid "First Parallel Port Setup" +msgstr "Podesavanje paralelnog porta" -#: src/emc/usr_intf/pncconf/pncconf.glade:8437 -msgid "Firmware:" +#: src/emc/usr_intf/pncconf/pncconf.glade:60946 +msgid "Launch Test Panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8447 +#: src/emc/usr_intf/pncconf/pncconf.glade:62374 #, fuzzy -msgid "Mesa parport address:" -msgstr "Adresa paralelnog porta:" +msgid "Inputs (Machine to PC):" +msgstr "Ulazi (od masine ka PC racunaru)" -#: src/emc/usr_intf/pncconf/pncconf.glade:8482 -msgid "3PWM base frequency:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:62929 +#, fuzzy +msgid "Outputs (PC to Machine):" +msgstr "Izlazi (od PC racunra ka masini)" -#: src/emc/usr_intf/pncconf/pncconf.glade:8504 +#: src/emc/usr_intf/pncconf/pncconf.glade:62950 #, fuzzy -msgid "" -"Configuration\n" -" Page" +msgid "X Axis Motor/Encoder Configuration" msgstr "Konfiguracija X ose" -#: src/emc/usr_intf/pncconf/pncconf.glade:8698 -#: src/emc/usr_intf/pncconf/pncconf.glade:8712 -#: src/emc/usr_intf/pncconf/pncconf.glade:13677 -#: src/emc/usr_intf/pncconf/pncconf.glade:13689 -#: src/emc/usr_intf/pncconf/pncconf.glade:16373 -#: src/emc/usr_intf/pncconf/pncconf.glade:16385 -#: src/emc/usr_intf/pncconf/pncconf.glade:18883 -#: src/emc/usr_intf/pncconf/pncconf.glade:18895 -#: src/emc/usr_intf/pncconf/pncconf.glade:20747 -#: src/emc/usr_intf/pncconf/pncconf.glade:20759 -#: src/emc/usr_intf/pncconf/pncconf.glade:20962 -#: src/emc/usr_intf/pncconf/pncconf.glade:20976 -#: src/emc/usr_intf/pncconf/pncconf.glade:22758 -#: src/emc/usr_intf/pncconf/pncconf.glade:22772 -#: src/emc/usr_intf/pncconf/pncconf.glade:24554 -#: src/emc/usr_intf/pncconf/pncconf.glade:24568 -#: src/emc/usr_intf/pncconf/pncconf.glade:26330 -#: src/emc/usr_intf/pncconf/pncconf.glade:26344 -#: src/emc/usr_intf/pncconf/pncconf.glade:31324 -#: src/emc/usr_intf/pncconf/pncconf.glade:31336 -#: src/emc/usr_intf/pncconf/pncconf.glade:31600 -#: src/emc/usr_intf/pncconf/pncconf.glade:35669 -#: src/emc/usr_intf/pncconf/pncconf.glade:35681 -#: src/emc/usr_intf/pncconf/pncconf.glade:35814 -#: src/emc/usr_intf/pncconf/pncconf.glade:35828 -#: src/emc/usr_intf/pncconf/pncconf.glade:40000 -#: src/emc/usr_intf/pncconf/pncconf.glade:40012 -#: src/emc/usr_intf/pncconf/pncconf.glade:40174 -#: src/emc/usr_intf/pncconf/pncconf.glade:40188 -#: src/emc/usr_intf/pncconf/pncconf.glade:45168 -#: src/emc/usr_intf/pncconf/pncconf.glade:45180 -#: src/emc/usr_intf/pncconf/pncconf.glade:45431 -#: src/emc/usr_intf/pncconf/pncconf.glade:45445 -#: src/emc/usr_intf/pncconf/pncconf.glade:47097 -#: src/emc/usr_intf/pncconf/pncconf.glade:47111 -#: src/emc/usr_intf/pncconf/pncconf.glade:52091 -#: src/emc/usr_intf/pncconf/pncconf.glade:52103 -#: src/emc/usr_intf/pncconf/pncconf.glade:52354 -#: src/emc/usr_intf/pncconf/pncconf.glade:52368 -msgid "Num" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63005 +#, fuzzy +msgid "Max Output" +msgstr "Neupotrebljen" -#: src/emc/usr_intf/pncconf/pncconf.glade:8723 -#: src/emc/usr_intf/pncconf/pncconf.glade:8743 -#: src/emc/usr_intf/pncconf/pncconf.glade:8763 -#: src/emc/usr_intf/pncconf/pncconf.glade:8783 -#: src/emc/usr_intf/pncconf/pncconf.glade:8803 -#: src/emc/usr_intf/pncconf/pncconf.glade:8823 -#: src/emc/usr_intf/pncconf/pncconf.glade:8843 -#: src/emc/usr_intf/pncconf/pncconf.glade:8863 -#: src/emc/usr_intf/pncconf/pncconf.glade:8883 -#: src/emc/usr_intf/pncconf/pncconf.glade:8903 -#: src/emc/usr_intf/pncconf/pncconf.glade:8923 -#: src/emc/usr_intf/pncconf/pncconf.glade:8943 -#: src/emc/usr_intf/pncconf/pncconf.glade:8963 -#: src/emc/usr_intf/pncconf/pncconf.glade:8983 -#: src/emc/usr_intf/pncconf/pncconf.glade:9003 -#: src/emc/usr_intf/pncconf/pncconf.glade:9023 -#: src/emc/usr_intf/pncconf/pncconf.glade:9043 -#: src/emc/usr_intf/pncconf/pncconf.glade:9063 -#: src/emc/usr_intf/pncconf/pncconf.glade:9083 -#: src/emc/usr_intf/pncconf/pncconf.glade:9103 -#: src/emc/usr_intf/pncconf/pncconf.glade:9123 -#: src/emc/usr_intf/pncconf/pncconf.glade:9143 -#: src/emc/usr_intf/pncconf/pncconf.glade:9163 -#: src/emc/usr_intf/pncconf/pncconf.glade:11027 -#: src/emc/usr_intf/pncconf/pncconf.glade:11353 -#: src/emc/usr_intf/pncconf/pncconf.glade:13216 -#: src/emc/usr_intf/pncconf/pncconf.glade:13236 -#: src/emc/usr_intf/pncconf/pncconf.glade:13256 -#: src/emc/usr_intf/pncconf/pncconf.glade:13276 -#: src/emc/usr_intf/pncconf/pncconf.glade:13296 -#: src/emc/usr_intf/pncconf/pncconf.glade:13316 -#: src/emc/usr_intf/pncconf/pncconf.glade:13336 -#: src/emc/usr_intf/pncconf/pncconf.glade:13356 -#: src/emc/usr_intf/pncconf/pncconf.glade:13376 -#: src/emc/usr_intf/pncconf/pncconf.glade:13396 -#: src/emc/usr_intf/pncconf/pncconf.glade:13416 -#: src/emc/usr_intf/pncconf/pncconf.glade:13436 -#: src/emc/usr_intf/pncconf/pncconf.glade:13456 -#: src/emc/usr_intf/pncconf/pncconf.glade:13476 -#: src/emc/usr_intf/pncconf/pncconf.glade:13496 -#: src/emc/usr_intf/pncconf/pncconf.glade:13516 -#: src/emc/usr_intf/pncconf/pncconf.glade:13536 -#: src/emc/usr_intf/pncconf/pncconf.glade:13556 -#: src/emc/usr_intf/pncconf/pncconf.glade:13576 -#: src/emc/usr_intf/pncconf/pncconf.glade:13596 -#: src/emc/usr_intf/pncconf/pncconf.glade:13616 -#: src/emc/usr_intf/pncconf/pncconf.glade:13636 -#: src/emc/usr_intf/pncconf/pncconf.glade:13656 -#: src/emc/usr_intf/pncconf/pncconf.glade:13966 -#: src/emc/usr_intf/pncconf/pncconf.glade:15912 -#: src/emc/usr_intf/pncconf/pncconf.glade:15932 -#: src/emc/usr_intf/pncconf/pncconf.glade:15952 -#: src/emc/usr_intf/pncconf/pncconf.glade:15972 -#: src/emc/usr_intf/pncconf/pncconf.glade:15992 -#: src/emc/usr_intf/pncconf/pncconf.glade:16012 -#: src/emc/usr_intf/pncconf/pncconf.glade:16032 -#: src/emc/usr_intf/pncconf/pncconf.glade:16052 -#: src/emc/usr_intf/pncconf/pncconf.glade:16072 -#: src/emc/usr_intf/pncconf/pncconf.glade:16092 -#: src/emc/usr_intf/pncconf/pncconf.glade:16112 -#: src/emc/usr_intf/pncconf/pncconf.glade:16132 -#: src/emc/usr_intf/pncconf/pncconf.glade:16152 -#: src/emc/usr_intf/pncconf/pncconf.glade:16172 -#: src/emc/usr_intf/pncconf/pncconf.glade:16192 -#: src/emc/usr_intf/pncconf/pncconf.glade:16212 -#: src/emc/usr_intf/pncconf/pncconf.glade:16232 -#: src/emc/usr_intf/pncconf/pncconf.glade:16252 -#: src/emc/usr_intf/pncconf/pncconf.glade:16272 -#: src/emc/usr_intf/pncconf/pncconf.glade:16292 -#: src/emc/usr_intf/pncconf/pncconf.glade:16312 -#: src/emc/usr_intf/pncconf/pncconf.glade:16332 -#: src/emc/usr_intf/pncconf/pncconf.glade:16352 -#: src/emc/usr_intf/pncconf/pncconf.glade:16558 -#: src/emc/usr_intf/pncconf/pncconf.glade:18422 -#: src/emc/usr_intf/pncconf/pncconf.glade:18442 -#: src/emc/usr_intf/pncconf/pncconf.glade:18462 -#: src/emc/usr_intf/pncconf/pncconf.glade:18482 -#: src/emc/usr_intf/pncconf/pncconf.glade:18502 -#: src/emc/usr_intf/pncconf/pncconf.glade:18522 -#: src/emc/usr_intf/pncconf/pncconf.glade:18542 -#: src/emc/usr_intf/pncconf/pncconf.glade:18562 -#: src/emc/usr_intf/pncconf/pncconf.glade:18582 -#: src/emc/usr_intf/pncconf/pncconf.glade:18602 -#: src/emc/usr_intf/pncconf/pncconf.glade:18622 -#: src/emc/usr_intf/pncconf/pncconf.glade:18642 -#: src/emc/usr_intf/pncconf/pncconf.glade:18662 -#: src/emc/usr_intf/pncconf/pncconf.glade:18682 -#: src/emc/usr_intf/pncconf/pncconf.glade:18702 -#: src/emc/usr_intf/pncconf/pncconf.glade:18722 -#: src/emc/usr_intf/pncconf/pncconf.glade:18742 -#: src/emc/usr_intf/pncconf/pncconf.glade:18762 -#: src/emc/usr_intf/pncconf/pncconf.glade:18782 -#: src/emc/usr_intf/pncconf/pncconf.glade:18802 -#: src/emc/usr_intf/pncconf/pncconf.glade:18822 -#: src/emc/usr_intf/pncconf/pncconf.glade:18842 -#: src/emc/usr_intf/pncconf/pncconf.glade:18862 -#: src/emc/usr_intf/pncconf/pncconf.glade:26355 -#: src/emc/usr_intf/pncconf/pncconf.glade:26375 -#: src/emc/usr_intf/pncconf/pncconf.glade:26395 -#: src/emc/usr_intf/pncconf/pncconf.glade:26415 -#: src/emc/usr_intf/pncconf/pncconf.glade:26435 -#: src/emc/usr_intf/pncconf/pncconf.glade:26455 -#: src/emc/usr_intf/pncconf/pncconf.glade:26475 -#: src/emc/usr_intf/pncconf/pncconf.glade:26495 -#: src/emc/usr_intf/pncconf/pncconf.glade:26515 -#: src/emc/usr_intf/pncconf/pncconf.glade:26535 -#: src/emc/usr_intf/pncconf/pncconf.glade:26555 -#: src/emc/usr_intf/pncconf/pncconf.glade:26575 -#: src/emc/usr_intf/pncconf/pncconf.glade:26595 -#: src/emc/usr_intf/pncconf/pncconf.glade:26615 -#: src/emc/usr_intf/pncconf/pncconf.glade:26635 -#: src/emc/usr_intf/pncconf/pncconf.glade:26655 -#: src/emc/usr_intf/pncconf/pncconf.glade:26675 -#: src/emc/usr_intf/pncconf/pncconf.glade:26695 -#: src/emc/usr_intf/pncconf/pncconf.glade:26715 -#: src/emc/usr_intf/pncconf/pncconf.glade:26735 -#: src/emc/usr_intf/pncconf/pncconf.glade:26755 -#: src/emc/usr_intf/pncconf/pncconf.glade:26775 -#: src/emc/usr_intf/pncconf/pncconf.glade:26795 -#: src/emc/usr_intf/pncconf/pncconf.glade:28711 -#: src/emc/usr_intf/pncconf/pncconf.glade:28934 -#: src/emc/usr_intf/pncconf/pncconf.glade:30863 -#: src/emc/usr_intf/pncconf/pncconf.glade:30883 -#: src/emc/usr_intf/pncconf/pncconf.glade:30903 -#: src/emc/usr_intf/pncconf/pncconf.glade:30923 -#: src/emc/usr_intf/pncconf/pncconf.glade:30943 -#: src/emc/usr_intf/pncconf/pncconf.glade:30963 -#: src/emc/usr_intf/pncconf/pncconf.glade:30983 -#: src/emc/usr_intf/pncconf/pncconf.glade:31003 -#: src/emc/usr_intf/pncconf/pncconf.glade:31023 -#: src/emc/usr_intf/pncconf/pncconf.glade:31043 -#: src/emc/usr_intf/pncconf/pncconf.glade:31063 -#: src/emc/usr_intf/pncconf/pncconf.glade:31083 -#: src/emc/usr_intf/pncconf/pncconf.glade:31103 -#: src/emc/usr_intf/pncconf/pncconf.glade:31123 -#: src/emc/usr_intf/pncconf/pncconf.glade:31143 -#: src/emc/usr_intf/pncconf/pncconf.glade:31163 -#: src/emc/usr_intf/pncconf/pncconf.glade:31183 -#: src/emc/usr_intf/pncconf/pncconf.glade:31203 -#: src/emc/usr_intf/pncconf/pncconf.glade:31223 -#: src/emc/usr_intf/pncconf/pncconf.glade:31243 -#: src/emc/usr_intf/pncconf/pncconf.glade:31263 -#: src/emc/usr_intf/pncconf/pncconf.glade:31283 -#: src/emc/usr_intf/pncconf/pncconf.glade:31303 -#: src/emc/usr_intf/pncconf/pncconf.glade:31611 -#: src/emc/usr_intf/pncconf/pncconf.glade:31631 -#: src/emc/usr_intf/pncconf/pncconf.glade:31651 -#: src/emc/usr_intf/pncconf/pncconf.glade:31671 -#: src/emc/usr_intf/pncconf/pncconf.glade:31691 -#: src/emc/usr_intf/pncconf/pncconf.glade:31711 -#: src/emc/usr_intf/pncconf/pncconf.glade:31731 -#: src/emc/usr_intf/pncconf/pncconf.glade:31751 -#: src/emc/usr_intf/pncconf/pncconf.glade:31771 -#: src/emc/usr_intf/pncconf/pncconf.glade:31791 -#: src/emc/usr_intf/pncconf/pncconf.glade:31811 -#: src/emc/usr_intf/pncconf/pncconf.glade:33029 -#: src/emc/usr_intf/pncconf/pncconf.glade:33292 -#: src/emc/usr_intf/pncconf/pncconf.glade:35208 -#: src/emc/usr_intf/pncconf/pncconf.glade:35228 -#: src/emc/usr_intf/pncconf/pncconf.glade:35248 -#: src/emc/usr_intf/pncconf/pncconf.glade:35268 -#: src/emc/usr_intf/pncconf/pncconf.glade:35288 -#: src/emc/usr_intf/pncconf/pncconf.glade:35308 -#: src/emc/usr_intf/pncconf/pncconf.glade:35328 -#: src/emc/usr_intf/pncconf/pncconf.glade:35348 -#: src/emc/usr_intf/pncconf/pncconf.glade:35368 -#: src/emc/usr_intf/pncconf/pncconf.glade:35388 -#: src/emc/usr_intf/pncconf/pncconf.glade:35408 -#: src/emc/usr_intf/pncconf/pncconf.glade:35428 -#: src/emc/usr_intf/pncconf/pncconf.glade:35448 -#: src/emc/usr_intf/pncconf/pncconf.glade:35468 -#: src/emc/usr_intf/pncconf/pncconf.glade:35488 -#: src/emc/usr_intf/pncconf/pncconf.glade:35508 -#: src/emc/usr_intf/pncconf/pncconf.glade:35528 -#: src/emc/usr_intf/pncconf/pncconf.glade:35548 -#: src/emc/usr_intf/pncconf/pncconf.glade:35568 -#: src/emc/usr_intf/pncconf/pncconf.glade:35588 -#: src/emc/usr_intf/pncconf/pncconf.glade:35608 -#: src/emc/usr_intf/pncconf/pncconf.glade:35628 -#: src/emc/usr_intf/pncconf/pncconf.glade:35648 -#: src/emc/usr_intf/pncconf/pncconf.glade:35839 -#: src/emc/usr_intf/pncconf/pncconf.glade:35859 -#: src/emc/usr_intf/pncconf/pncconf.glade:35879 -#: src/emc/usr_intf/pncconf/pncconf.glade:35899 -#: src/emc/usr_intf/pncconf/pncconf.glade:35919 -#: src/emc/usr_intf/pncconf/pncconf.glade:35939 -#: src/emc/usr_intf/pncconf/pncconf.glade:35959 -#: src/emc/usr_intf/pncconf/pncconf.glade:35979 -#: src/emc/usr_intf/pncconf/pncconf.glade:35999 -#: src/emc/usr_intf/pncconf/pncconf.glade:36019 -#: src/emc/usr_intf/pncconf/pncconf.glade:36039 -#: src/emc/usr_intf/pncconf/pncconf.glade:36059 -#: src/emc/usr_intf/pncconf/pncconf.glade:36079 -#: src/emc/usr_intf/pncconf/pncconf.glade:36099 -#: src/emc/usr_intf/pncconf/pncconf.glade:36119 -#: src/emc/usr_intf/pncconf/pncconf.glade:36139 -#: src/emc/usr_intf/pncconf/pncconf.glade:36159 -#: src/emc/usr_intf/pncconf/pncconf.glade:36179 -#: src/emc/usr_intf/pncconf/pncconf.glade:36199 -#: src/emc/usr_intf/pncconf/pncconf.glade:36219 -#: src/emc/usr_intf/pncconf/pncconf.glade:36239 -#: src/emc/usr_intf/pncconf/pncconf.glade:36259 -#: src/emc/usr_intf/pncconf/pncconf.glade:36279 -#: src/emc/usr_intf/pncconf/pncconf.glade:38208 -#: src/emc/usr_intf/pncconf/pncconf.glade:38549 -#: src/emc/usr_intf/pncconf/pncconf.glade:39779 -#: src/emc/usr_intf/pncconf/pncconf.glade:39799 -#: src/emc/usr_intf/pncconf/pncconf.glade:39819 -#: src/emc/usr_intf/pncconf/pncconf.glade:39839 -#: src/emc/usr_intf/pncconf/pncconf.glade:39859 -#: src/emc/usr_intf/pncconf/pncconf.glade:39879 -#: src/emc/usr_intf/pncconf/pncconf.glade:39899 -#: src/emc/usr_intf/pncconf/pncconf.glade:39919 -#: src/emc/usr_intf/pncconf/pncconf.glade:39939 -#: src/emc/usr_intf/pncconf/pncconf.glade:39959 -#: src/emc/usr_intf/pncconf/pncconf.glade:39979 -#: src/emc/usr_intf/pncconf/pncconf.glade:40199 -#: src/emc/usr_intf/pncconf/pncconf.glade:40219 -#: src/emc/usr_intf/pncconf/pncconf.glade:40239 -#: src/emc/usr_intf/pncconf/pncconf.glade:40259 -#: src/emc/usr_intf/pncconf/pncconf.glade:40279 -#: src/emc/usr_intf/pncconf/pncconf.glade:40299 -#: src/emc/usr_intf/pncconf/pncconf.glade:40319 -#: src/emc/usr_intf/pncconf/pncconf.glade:40339 -#: src/emc/usr_intf/pncconf/pncconf.glade:40359 -#: src/emc/usr_intf/pncconf/pncconf.glade:40379 -#: src/emc/usr_intf/pncconf/pncconf.glade:40399 -#: src/emc/usr_intf/pncconf/pncconf.glade:40419 -#: src/emc/usr_intf/pncconf/pncconf.glade:40439 -#: src/emc/usr_intf/pncconf/pncconf.glade:40459 -#: src/emc/usr_intf/pncconf/pncconf.glade:40479 -#: src/emc/usr_intf/pncconf/pncconf.glade:40499 -#: src/emc/usr_intf/pncconf/pncconf.glade:40519 -#: src/emc/usr_intf/pncconf/pncconf.glade:40539 -#: src/emc/usr_intf/pncconf/pncconf.glade:40559 -#: src/emc/usr_intf/pncconf/pncconf.glade:40579 -#: src/emc/usr_intf/pncconf/pncconf.glade:40599 -#: src/emc/usr_intf/pncconf/pncconf.glade:40619 -#: src/emc/usr_intf/pncconf/pncconf.glade:40639 -#: src/emc/usr_intf/pncconf/pncconf.glade:42555 -#: src/emc/usr_intf/pncconf/pncconf.glade:42778 -#: src/emc/usr_intf/pncconf/pncconf.glade:44707 -#: src/emc/usr_intf/pncconf/pncconf.glade:44727 -#: src/emc/usr_intf/pncconf/pncconf.glade:44747 -#: src/emc/usr_intf/pncconf/pncconf.glade:44767 -#: src/emc/usr_intf/pncconf/pncconf.glade:44787 -#: src/emc/usr_intf/pncconf/pncconf.glade:44807 -#: src/emc/usr_intf/pncconf/pncconf.glade:44827 -#: src/emc/usr_intf/pncconf/pncconf.glade:44847 -#: src/emc/usr_intf/pncconf/pncconf.glade:44867 -#: src/emc/usr_intf/pncconf/pncconf.glade:44887 -#: src/emc/usr_intf/pncconf/pncconf.glade:44907 -#: src/emc/usr_intf/pncconf/pncconf.glade:44927 -#: src/emc/usr_intf/pncconf/pncconf.glade:44947 -#: src/emc/usr_intf/pncconf/pncconf.glade:44967 -#: src/emc/usr_intf/pncconf/pncconf.glade:44987 -#: src/emc/usr_intf/pncconf/pncconf.glade:45007 -#: src/emc/usr_intf/pncconf/pncconf.glade:45027 -#: src/emc/usr_intf/pncconf/pncconf.glade:45047 -#: src/emc/usr_intf/pncconf/pncconf.glade:45067 -#: src/emc/usr_intf/pncconf/pncconf.glade:45087 -#: src/emc/usr_intf/pncconf/pncconf.glade:45107 -#: src/emc/usr_intf/pncconf/pncconf.glade:45127 -#: src/emc/usr_intf/pncconf/pncconf.glade:45147 -#: src/emc/usr_intf/pncconf/pncconf.glade:45456 -#: src/emc/usr_intf/pncconf/pncconf.glade:45476 -#: src/emc/usr_intf/pncconf/pncconf.glade:45496 -#: src/emc/usr_intf/pncconf/pncconf.glade:45516 -#: src/emc/usr_intf/pncconf/pncconf.glade:45536 -#: src/emc/usr_intf/pncconf/pncconf.glade:45556 -#: src/emc/usr_intf/pncconf/pncconf.glade:45576 -#: src/emc/usr_intf/pncconf/pncconf.glade:45596 -#: src/emc/usr_intf/pncconf/pncconf.glade:45616 -#: src/emc/usr_intf/pncconf/pncconf.glade:45636 -#: src/emc/usr_intf/pncconf/pncconf.glade:45656 -#: src/emc/usr_intf/pncconf/pncconf.glade:46886 -#: src/emc/usr_intf/pncconf/pncconf.glade:47122 -#: src/emc/usr_intf/pncconf/pncconf.glade:47142 -#: src/emc/usr_intf/pncconf/pncconf.glade:47162 -#: src/emc/usr_intf/pncconf/pncconf.glade:47182 -#: src/emc/usr_intf/pncconf/pncconf.glade:47202 -#: src/emc/usr_intf/pncconf/pncconf.glade:47222 -#: src/emc/usr_intf/pncconf/pncconf.glade:47242 -#: src/emc/usr_intf/pncconf/pncconf.glade:47262 -#: src/emc/usr_intf/pncconf/pncconf.glade:47282 -#: src/emc/usr_intf/pncconf/pncconf.glade:47302 -#: src/emc/usr_intf/pncconf/pncconf.glade:47322 -#: src/emc/usr_intf/pncconf/pncconf.glade:47342 -#: src/emc/usr_intf/pncconf/pncconf.glade:47362 -#: src/emc/usr_intf/pncconf/pncconf.glade:47382 -#: src/emc/usr_intf/pncconf/pncconf.glade:47402 -#: src/emc/usr_intf/pncconf/pncconf.glade:47422 -#: src/emc/usr_intf/pncconf/pncconf.glade:47442 -#: src/emc/usr_intf/pncconf/pncconf.glade:47462 -#: src/emc/usr_intf/pncconf/pncconf.glade:47482 -#: src/emc/usr_intf/pncconf/pncconf.glade:47502 -#: src/emc/usr_intf/pncconf/pncconf.glade:47522 -#: src/emc/usr_intf/pncconf/pncconf.glade:47542 -#: src/emc/usr_intf/pncconf/pncconf.glade:47562 -#: src/emc/usr_intf/pncconf/pncconf.glade:49478 -#: src/emc/usr_intf/pncconf/pncconf.glade:49701 -#: src/emc/usr_intf/pncconf/pncconf.glade:51630 -#: src/emc/usr_intf/pncconf/pncconf.glade:51650 -#: src/emc/usr_intf/pncconf/pncconf.glade:51670 -#: src/emc/usr_intf/pncconf/pncconf.glade:51690 -#: src/emc/usr_intf/pncconf/pncconf.glade:51710 -#: src/emc/usr_intf/pncconf/pncconf.glade:51730 -#: src/emc/usr_intf/pncconf/pncconf.glade:51750 -#: src/emc/usr_intf/pncconf/pncconf.glade:51770 -#: src/emc/usr_intf/pncconf/pncconf.glade:51790 -#: src/emc/usr_intf/pncconf/pncconf.glade:51810 -#: src/emc/usr_intf/pncconf/pncconf.glade:51830 -#: src/emc/usr_intf/pncconf/pncconf.glade:51850 -#: src/emc/usr_intf/pncconf/pncconf.glade:51870 -#: src/emc/usr_intf/pncconf/pncconf.glade:51890 -#: src/emc/usr_intf/pncconf/pncconf.glade:51910 -#: src/emc/usr_intf/pncconf/pncconf.glade:51930 -#: src/emc/usr_intf/pncconf/pncconf.glade:51950 -#: src/emc/usr_intf/pncconf/pncconf.glade:51970 -#: src/emc/usr_intf/pncconf/pncconf.glade:51990 -#: src/emc/usr_intf/pncconf/pncconf.glade:52010 -#: src/emc/usr_intf/pncconf/pncconf.glade:52030 -#: src/emc/usr_intf/pncconf/pncconf.glade:52050 -#: src/emc/usr_intf/pncconf/pncconf.glade:52070 -#: src/emc/usr_intf/pncconf/pncconf.glade:52379 -#: src/emc/usr_intf/pncconf/pncconf.glade:52399 -#: src/emc/usr_intf/pncconf/pncconf.glade:52419 -#: src/emc/usr_intf/pncconf/pncconf.glade:52439 -#: src/emc/usr_intf/pncconf/pncconf.glade:52459 -#: src/emc/usr_intf/pncconf/pncconf.glade:52479 -#: src/emc/usr_intf/pncconf/pncconf.glade:52499 -#: src/emc/usr_intf/pncconf/pncconf.glade:52519 -#: src/emc/usr_intf/pncconf/pncconf.glade:52539 -#: src/emc/usr_intf/pncconf/pncconf.glade:52559 -#: src/emc/usr_intf/pncconf/pncconf.glade:52579 -#: src/emc/usr_intf/pncconf/pncconf.glade:53809 -msgid "" -"GPIO Input\n" -"GPIO Output\n" -"GPIO O Drain\n" -"Encoder\n" -"PWM\n" -"StepGen\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63070 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "FF2" +msgstr "ISKLJUCEN" -#: src/emc/usr_intf/pncconf/pncconf.glade:9198 -#: src/emc/usr_intf/pncconf/pncconf.glade:13188 -#: src/emc/usr_intf/pncconf/pncconf.glade:15884 -#: src/emc/usr_intf/pncconf/pncconf.glade:18394 -#: src/emc/usr_intf/pncconf/pncconf.glade:20397 -#: src/emc/usr_intf/pncconf/pncconf.glade:21325 -#: src/emc/usr_intf/pncconf/pncconf.glade:23121 -#: src/emc/usr_intf/pncconf/pncconf.glade:24917 +#: src/emc/usr_intf/pncconf/pncconf.glade:63083 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Launch test panel" -msgstr "Rezultat _Latency testa:" +msgid "FF1" +msgstr "ISKLJUCEN" -#: src/emc/usr_intf/pncconf/pncconf.glade:9213 -#: src/emc/usr_intf/pncconf/pncconf.glade:9225 -#: src/emc/usr_intf/pncconf/pncconf.glade:13162 -#: src/emc/usr_intf/pncconf/pncconf.glade:13174 -#: src/emc/usr_intf/pncconf/pncconf.glade:15858 -#: src/emc/usr_intf/pncconf/pncconf.glade:15870 -#: src/emc/usr_intf/pncconf/pncconf.glade:18367 -#: src/emc/usr_intf/pncconf/pncconf.glade:18379 -#: src/emc/usr_intf/pncconf/pncconf.glade:20370 -#: src/emc/usr_intf/pncconf/pncconf.glade:20382 -#: src/emc/usr_intf/pncconf/pncconf.glade:21339 -#: src/emc/usr_intf/pncconf/pncconf.glade:21351 -#: src/emc/usr_intf/pncconf/pncconf.glade:23135 -#: src/emc/usr_intf/pncconf/pncconf.glade:23147 -#: src/emc/usr_intf/pncconf/pncconf.glade:24931 -#: src/emc/usr_intf/pncconf/pncconf.glade:24943 -#: src/emc/usr_intf/pncconf/pncconf.glade:26815 -#: src/emc/usr_intf/pncconf/pncconf.glade:26827 -#: src/emc/usr_intf/pncconf/pncconf.glade:30826 -#: src/emc/usr_intf/pncconf/pncconf.glade:30838 -#: src/emc/usr_intf/pncconf/pncconf.glade:31831 -#: src/emc/usr_intf/pncconf/pncconf.glade:35184 -#: src/emc/usr_intf/pncconf/pncconf.glade:35196 -#: src/emc/usr_intf/pncconf/pncconf.glade:36312 -#: src/emc/usr_intf/pncconf/pncconf.glade:36324 -#: src/emc/usr_intf/pncconf/pncconf.glade:39755 -#: src/emc/usr_intf/pncconf/pncconf.glade:39767 -#: src/emc/usr_intf/pncconf/pncconf.glade:40659 -#: src/emc/usr_intf/pncconf/pncconf.glade:40671 -#: src/emc/usr_intf/pncconf/pncconf.glade:44670 -#: src/emc/usr_intf/pncconf/pncconf.glade:44682 -#: src/emc/usr_intf/pncconf/pncconf.glade:45676 -#: src/emc/usr_intf/pncconf/pncconf.glade:45688 -#: src/emc/usr_intf/pncconf/pncconf.glade:47582 -#: src/emc/usr_intf/pncconf/pncconf.glade:47594 -#: src/emc/usr_intf/pncconf/pncconf.glade:51593 -#: src/emc/usr_intf/pncconf/pncconf.glade:51605 -#: src/emc/usr_intf/pncconf/pncconf.glade:52599 -#: src/emc/usr_intf/pncconf/pncconf.glade:52611 -msgid "function" +#: src/emc/usr_intf/pncconf/pncconf.glade:63096 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "FF0" +msgstr "ISKLJUCEN" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63143 +msgid "Deadband" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9305 -#: src/emc/usr_intf/pncconf/pncconf.glade:9357 -#: src/emc/usr_intf/pncconf/pncconf.glade:9409 -#: src/emc/usr_intf/pncconf/pncconf.glade:9461 -#: src/emc/usr_intf/pncconf/pncconf.glade:10301 -#: src/emc/usr_intf/pncconf/pncconf.glade:10353 -#: src/emc/usr_intf/pncconf/pncconf.glade:10405 -#: src/emc/usr_intf/pncconf/pncconf.glade:10457 -#: src/emc/usr_intf/pncconf/pncconf.glade:10509 -#: src/emc/usr_intf/pncconf/pncconf.glade:10561 -#: src/emc/usr_intf/pncconf/pncconf.glade:10613 -#: src/emc/usr_intf/pncconf/pncconf.glade:10665 -#: src/emc/usr_intf/pncconf/pncconf.glade:10717 -#: src/emc/usr_intf/pncconf/pncconf.glade:10769 -#: src/emc/usr_intf/pncconf/pncconf.glade:11089 -#: src/emc/usr_intf/pncconf/pncconf.glade:11141 -#: src/emc/usr_intf/pncconf/pncconf.glade:11579 -#: src/emc/usr_intf/pncconf/pncconf.glade:11631 -#: src/emc/usr_intf/pncconf/pncconf.glade:11683 -#: src/emc/usr_intf/pncconf/pncconf.glade:11735 -#: src/emc/usr_intf/pncconf/pncconf.glade:11787 -#: src/emc/usr_intf/pncconf/pncconf.glade:11839 -#: src/emc/usr_intf/pncconf/pncconf.glade:11891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11943 -#: src/emc/usr_intf/pncconf/pncconf.glade:11995 -#: src/emc/usr_intf/pncconf/pncconf.glade:12047 -#: src/emc/usr_intf/pncconf/pncconf.glade:12886 -#: src/emc/usr_intf/pncconf/pncconf.glade:12938 -#: src/emc/usr_intf/pncconf/pncconf.glade:12990 -#: src/emc/usr_intf/pncconf/pncconf.glade:13042 -#: src/emc/usr_intf/pncconf/pncconf.glade:13702 -#: src/emc/usr_intf/pncconf/pncconf.glade:13754 -#: src/emc/usr_intf/pncconf/pncconf.glade:14183 -#: src/emc/usr_intf/pncconf/pncconf.glade:14235 -#: src/emc/usr_intf/pncconf/pncconf.glade:14287 -#: src/emc/usr_intf/pncconf/pncconf.glade:14339 -#: src/emc/usr_intf/pncconf/pncconf.glade:14391 -#: src/emc/usr_intf/pncconf/pncconf.glade:14443 -#: src/emc/usr_intf/pncconf/pncconf.glade:14495 -#: src/emc/usr_intf/pncconf/pncconf.glade:14547 -#: src/emc/usr_intf/pncconf/pncconf.glade:14599 -#: src/emc/usr_intf/pncconf/pncconf.glade:14651 -#: src/emc/usr_intf/pncconf/pncconf.glade:14703 -#: src/emc/usr_intf/pncconf/pncconf.glade:14755 -#: src/emc/usr_intf/pncconf/pncconf.glade:15582 -#: src/emc/usr_intf/pncconf/pncconf.glade:15634 -#: src/emc/usr_intf/pncconf/pncconf.glade:15686 -#: src/emc/usr_intf/pncconf/pncconf.glade:15738 -#: src/emc/usr_intf/pncconf/pncconf.glade:16784 -#: src/emc/usr_intf/pncconf/pncconf.glade:16836 -#: src/emc/usr_intf/pncconf/pncconf.glade:16888 -#: src/emc/usr_intf/pncconf/pncconf.glade:16940 -#: src/emc/usr_intf/pncconf/pncconf.glade:16992 -#: src/emc/usr_intf/pncconf/pncconf.glade:17044 -#: src/emc/usr_intf/pncconf/pncconf.glade:17096 -#: src/emc/usr_intf/pncconf/pncconf.glade:17148 -#: src/emc/usr_intf/pncconf/pncconf.glade:17200 -#: src/emc/usr_intf/pncconf/pncconf.glade:17252 -#: src/emc/usr_intf/pncconf/pncconf.glade:17304 -#: src/emc/usr_intf/pncconf/pncconf.glade:18143 -#: src/emc/usr_intf/pncconf/pncconf.glade:18195 -#: src/emc/usr_intf/pncconf/pncconf.glade:18247 -#: src/emc/usr_intf/pncconf/pncconf.glade:18908 -#: src/emc/usr_intf/pncconf/pncconf.glade:18960 -#: src/emc/usr_intf/pncconf/pncconf.glade:26907 -#: src/emc/usr_intf/pncconf/pncconf.glade:26959 -#: src/emc/usr_intf/pncconf/pncconf.glade:27011 -#: src/emc/usr_intf/pncconf/pncconf.glade:27063 -#: src/emc/usr_intf/pncconf/pncconf.glade:27890 -#: src/emc/usr_intf/pncconf/pncconf.glade:27942 -#: src/emc/usr_intf/pncconf/pncconf.glade:27994 -#: src/emc/usr_intf/pncconf/pncconf.glade:28046 -#: src/emc/usr_intf/pncconf/pncconf.glade:28098 -#: src/emc/usr_intf/pncconf/pncconf.glade:28150 -#: src/emc/usr_intf/pncconf/pncconf.glade:28202 -#: src/emc/usr_intf/pncconf/pncconf.glade:28254 -#: src/emc/usr_intf/pncconf/pncconf.glade:28306 -#: src/emc/usr_intf/pncconf/pncconf.glade:28358 -#: src/emc/usr_intf/pncconf/pncconf.glade:28410 -#: src/emc/usr_intf/pncconf/pncconf.glade:28462 -#: src/emc/usr_intf/pncconf/pncconf.glade:29151 -#: src/emc/usr_intf/pncconf/pncconf.glade:29203 -#: src/emc/usr_intf/pncconf/pncconf.glade:29255 -#: src/emc/usr_intf/pncconf/pncconf.glade:29307 -#: src/emc/usr_intf/pncconf/pncconf.glade:29359 -#: src/emc/usr_intf/pncconf/pncconf.glade:29411 -#: src/emc/usr_intf/pncconf/pncconf.glade:29463 -#: src/emc/usr_intf/pncconf/pncconf.glade:29515 -#: src/emc/usr_intf/pncconf/pncconf.glade:29567 -#: src/emc/usr_intf/pncconf/pncconf.glade:29619 -#: src/emc/usr_intf/pncconf/pncconf.glade:29671 -#: src/emc/usr_intf/pncconf/pncconf.glade:29723 -#: src/emc/usr_intf/pncconf/pncconf.glade:30550 -#: src/emc/usr_intf/pncconf/pncconf.glade:30602 -#: src/emc/usr_intf/pncconf/pncconf.glade:30654 -#: src/emc/usr_intf/pncconf/pncconf.glade:30706 -#: src/emc/usr_intf/pncconf/pncconf.glade:32210 -#: src/emc/usr_intf/pncconf/pncconf.glade:32262 -#: src/emc/usr_intf/pncconf/pncconf.glade:32314 -#: src/emc/usr_intf/pncconf/pncconf.glade:32366 -#: src/emc/usr_intf/pncconf/pncconf.glade:32418 -#: src/emc/usr_intf/pncconf/pncconf.glade:32470 -#: src/emc/usr_intf/pncconf/pncconf.glade:32522 -#: src/emc/usr_intf/pncconf/pncconf.glade:32574 -#: src/emc/usr_intf/pncconf/pncconf.glade:32626 -#: src/emc/usr_intf/pncconf/pncconf.glade:32678 -#: src/emc/usr_intf/pncconf/pncconf.glade:32730 -#: src/emc/usr_intf/pncconf/pncconf.glade:32782 -#: src/emc/usr_intf/pncconf/pncconf.glade:33509 -#: src/emc/usr_intf/pncconf/pncconf.glade:33561 -#: src/emc/usr_intf/pncconf/pncconf.glade:33613 -#: src/emc/usr_intf/pncconf/pncconf.glade:33665 -#: src/emc/usr_intf/pncconf/pncconf.glade:33717 -#: src/emc/usr_intf/pncconf/pncconf.glade:33769 -#: src/emc/usr_intf/pncconf/pncconf.glade:33821 -#: src/emc/usr_intf/pncconf/pncconf.glade:33873 -#: src/emc/usr_intf/pncconf/pncconf.glade:33925 -#: src/emc/usr_intf/pncconf/pncconf.glade:33977 -#: src/emc/usr_intf/pncconf/pncconf.glade:34029 -#: src/emc/usr_intf/pncconf/pncconf.glade:34081 -#: src/emc/usr_intf/pncconf/pncconf.glade:34908 -#: src/emc/usr_intf/pncconf/pncconf.glade:34960 -#: src/emc/usr_intf/pncconf/pncconf.glade:35012 -#: src/emc/usr_intf/pncconf/pncconf.glade:35064 -#: src/emc/usr_intf/pncconf/pncconf.glade:36404 -#: src/emc/usr_intf/pncconf/pncconf.glade:36456 -#: src/emc/usr_intf/pncconf/pncconf.glade:36508 -#: src/emc/usr_intf/pncconf/pncconf.glade:36560 -#: src/emc/usr_intf/pncconf/pncconf.glade:37387 -#: src/emc/usr_intf/pncconf/pncconf.glade:37439 -#: src/emc/usr_intf/pncconf/pncconf.glade:37491 -#: src/emc/usr_intf/pncconf/pncconf.glade:37543 -#: src/emc/usr_intf/pncconf/pncconf.glade:37595 -#: src/emc/usr_intf/pncconf/pncconf.glade:37647 -#: src/emc/usr_intf/pncconf/pncconf.glade:37699 -#: src/emc/usr_intf/pncconf/pncconf.glade:37751 -#: src/emc/usr_intf/pncconf/pncconf.glade:37803 -#: src/emc/usr_intf/pncconf/pncconf.glade:37855 -#: src/emc/usr_intf/pncconf/pncconf.glade:37907 -#: src/emc/usr_intf/pncconf/pncconf.glade:37959 -#: src/emc/usr_intf/pncconf/pncconf.glade:38764 -#: src/emc/usr_intf/pncconf/pncconf.glade:38816 -#: src/emc/usr_intf/pncconf/pncconf.glade:38868 -#: src/emc/usr_intf/pncconf/pncconf.glade:38920 -#: src/emc/usr_intf/pncconf/pncconf.glade:38972 -#: src/emc/usr_intf/pncconf/pncconf.glade:39024 -#: src/emc/usr_intf/pncconf/pncconf.glade:39076 -#: src/emc/usr_intf/pncconf/pncconf.glade:39128 -#: src/emc/usr_intf/pncconf/pncconf.glade:39180 -#: src/emc/usr_intf/pncconf/pncconf.glade:39232 -#: src/emc/usr_intf/pncconf/pncconf.glade:39284 -#: src/emc/usr_intf/pncconf/pncconf.glade:39336 -#: src/emc/usr_intf/pncconf/pncconf.glade:40751 -#: src/emc/usr_intf/pncconf/pncconf.glade:40803 -#: src/emc/usr_intf/pncconf/pncconf.glade:40855 -#: src/emc/usr_intf/pncconf/pncconf.glade:40907 -#: src/emc/usr_intf/pncconf/pncconf.glade:41734 -#: src/emc/usr_intf/pncconf/pncconf.glade:41786 -#: src/emc/usr_intf/pncconf/pncconf.glade:41838 -#: src/emc/usr_intf/pncconf/pncconf.glade:41890 -#: src/emc/usr_intf/pncconf/pncconf.glade:41942 -#: src/emc/usr_intf/pncconf/pncconf.glade:41994 -#: src/emc/usr_intf/pncconf/pncconf.glade:42046 -#: src/emc/usr_intf/pncconf/pncconf.glade:42098 -#: src/emc/usr_intf/pncconf/pncconf.glade:42150 -#: src/emc/usr_intf/pncconf/pncconf.glade:42202 -#: src/emc/usr_intf/pncconf/pncconf.glade:42254 -#: src/emc/usr_intf/pncconf/pncconf.glade:42306 -#: src/emc/usr_intf/pncconf/pncconf.glade:42995 -#: src/emc/usr_intf/pncconf/pncconf.glade:43047 -#: src/emc/usr_intf/pncconf/pncconf.glade:43099 -#: src/emc/usr_intf/pncconf/pncconf.glade:43151 -#: src/emc/usr_intf/pncconf/pncconf.glade:43203 -#: src/emc/usr_intf/pncconf/pncconf.glade:43255 -#: src/emc/usr_intf/pncconf/pncconf.glade:43307 -#: src/emc/usr_intf/pncconf/pncconf.glade:43359 -#: src/emc/usr_intf/pncconf/pncconf.glade:43411 -#: src/emc/usr_intf/pncconf/pncconf.glade:43463 -#: src/emc/usr_intf/pncconf/pncconf.glade:43515 -#: src/emc/usr_intf/pncconf/pncconf.glade:43567 -#: src/emc/usr_intf/pncconf/pncconf.glade:44394 -#: src/emc/usr_intf/pncconf/pncconf.glade:44446 -#: src/emc/usr_intf/pncconf/pncconf.glade:44498 -#: src/emc/usr_intf/pncconf/pncconf.glade:44550 -#: src/emc/usr_intf/pncconf/pncconf.glade:46067 -#: src/emc/usr_intf/pncconf/pncconf.glade:46119 -#: src/emc/usr_intf/pncconf/pncconf.glade:46171 -#: src/emc/usr_intf/pncconf/pncconf.glade:46223 -#: src/emc/usr_intf/pncconf/pncconf.glade:46275 -#: src/emc/usr_intf/pncconf/pncconf.glade:46327 -#: src/emc/usr_intf/pncconf/pncconf.glade:46379 -#: src/emc/usr_intf/pncconf/pncconf.glade:46431 -#: src/emc/usr_intf/pncconf/pncconf.glade:46483 -#: src/emc/usr_intf/pncconf/pncconf.glade:46535 -#: src/emc/usr_intf/pncconf/pncconf.glade:46587 -#: src/emc/usr_intf/pncconf/pncconf.glade:46639 -#: src/emc/usr_intf/pncconf/pncconf.glade:47674 -#: src/emc/usr_intf/pncconf/pncconf.glade:47726 -#: src/emc/usr_intf/pncconf/pncconf.glade:47778 -#: src/emc/usr_intf/pncconf/pncconf.glade:47830 -#: src/emc/usr_intf/pncconf/pncconf.glade:48657 -#: src/emc/usr_intf/pncconf/pncconf.glade:48709 -#: src/emc/usr_intf/pncconf/pncconf.glade:48761 -#: src/emc/usr_intf/pncconf/pncconf.glade:48813 -#: src/emc/usr_intf/pncconf/pncconf.glade:48865 -#: src/emc/usr_intf/pncconf/pncconf.glade:48917 -#: src/emc/usr_intf/pncconf/pncconf.glade:48969 -#: src/emc/usr_intf/pncconf/pncconf.glade:49021 -#: src/emc/usr_intf/pncconf/pncconf.glade:49073 -#: src/emc/usr_intf/pncconf/pncconf.glade:49125 -#: src/emc/usr_intf/pncconf/pncconf.glade:49177 -#: src/emc/usr_intf/pncconf/pncconf.glade:49229 -#: src/emc/usr_intf/pncconf/pncconf.glade:49918 -#: src/emc/usr_intf/pncconf/pncconf.glade:49970 -#: src/emc/usr_intf/pncconf/pncconf.glade:50022 -#: src/emc/usr_intf/pncconf/pncconf.glade:50074 -#: src/emc/usr_intf/pncconf/pncconf.glade:50126 -#: src/emc/usr_intf/pncconf/pncconf.glade:50178 -#: src/emc/usr_intf/pncconf/pncconf.glade:50230 -#: src/emc/usr_intf/pncconf/pncconf.glade:50282 -#: src/emc/usr_intf/pncconf/pncconf.glade:50334 -#: src/emc/usr_intf/pncconf/pncconf.glade:50386 -#: src/emc/usr_intf/pncconf/pncconf.glade:50438 -#: src/emc/usr_intf/pncconf/pncconf.glade:50490 -#: src/emc/usr_intf/pncconf/pncconf.glade:51317 -#: src/emc/usr_intf/pncconf/pncconf.glade:51369 -#: src/emc/usr_intf/pncconf/pncconf.glade:51421 -#: src/emc/usr_intf/pncconf/pncconf.glade:51473 -#: src/emc/usr_intf/pncconf/pncconf.glade:52990 -#: src/emc/usr_intf/pncconf/pncconf.glade:53042 -#: src/emc/usr_intf/pncconf/pncconf.glade:53094 -#: src/emc/usr_intf/pncconf/pncconf.glade:53146 -#: src/emc/usr_intf/pncconf/pncconf.glade:53198 -#: src/emc/usr_intf/pncconf/pncconf.glade:53250 -#: src/emc/usr_intf/pncconf/pncconf.glade:53302 -#: src/emc/usr_intf/pncconf/pncconf.glade:53354 -#: src/emc/usr_intf/pncconf/pncconf.glade:53406 -#: src/emc/usr_intf/pncconf/pncconf.glade:53458 -#: src/emc/usr_intf/pncconf/pncconf.glade:53510 -#: src/emc/usr_intf/pncconf/pncconf.glade:53562 -msgid "" -"ESTOP IN\n" -"Spindle PPR\n" -"Spindle A \n" -"Spindle B \n" -"Home X \n" -"Home Y \n" -"Home Z\n" -"Home A\n" -"Minimum Limit + Home X \n" -"Minimum Limit + Home Y \n" -"Minimum Limit + Home Z \n" -"Minimum Limit + Home A\n" -"Maximum Limit + Home X \n" -"Maximum Limit + Home Y \n" -"Maximum Limit + Home Z \n" -"Maximum Limit + Home A\n" -"Both Limit + Home X \n" -"Both Limit + Home Y \n" -"Both Limit + Home Z \n" -"Both Limit + Home A\n" -"Minimum Limit X \n" -"Minimum Limit Y \n" -"Minimum Limit Z \n" -"Minimum Limit A\n" -"Maximum Limit X \n" -"Maximum Limit Y \n" -"Maximum Limit Z \n" -"Maximum Limit A\n" -"Both Limit X \n" -"Both Limit Y \n" -"Both Limit Z \n" -"Both Limit A\n" -"All limits\n" -"All home\n" -"Unused" +#: src/emc/usr_intf/pncconf/pncconf.glade:63156 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Bias" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9515 -#: src/emc/usr_intf/pncconf/pncconf.glade:12871 -#: src/emc/usr_intf/pncconf/pncconf.glade:18128 -#: src/emc/usr_intf/pncconf/pncconf.glade:20233 -#: src/emc/usr_intf/pncconf/pncconf.glade:21486 -#: src/emc/usr_intf/pncconf/pncconf.glade:23282 -#: src/emc/usr_intf/pncconf/pncconf.glade:25078 -msgid "31:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63169 +msgid "P" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9531 -#: src/emc/usr_intf/pncconf/pncconf.glade:12855 -#: src/emc/usr_intf/pncconf/pncconf.glade:18112 -#: src/emc/usr_intf/pncconf/pncconf.glade:20217 -#: src/emc/usr_intf/pncconf/pncconf.glade:21502 -#: src/emc/usr_intf/pncconf/pncconf.glade:23298 -#: src/emc/usr_intf/pncconf/pncconf.glade:25094 -msgid "29:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63180 +msgid "I" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9547 -#: src/emc/usr_intf/pncconf/pncconf.glade:12839 -#: src/emc/usr_intf/pncconf/pncconf.glade:18096 -#: src/emc/usr_intf/pncconf/pncconf.glade:20201 -#: src/emc/usr_intf/pncconf/pncconf.glade:21518 -#: src/emc/usr_intf/pncconf/pncconf.glade:23314 -#: src/emc/usr_intf/pncconf/pncconf.glade:25110 -msgid "27:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63193 +msgid "D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9563 -#: src/emc/usr_intf/pncconf/pncconf.glade:12823 -#: src/emc/usr_intf/pncconf/pncconf.glade:18080 -#: src/emc/usr_intf/pncconf/pncconf.glade:20185 -#: src/emc/usr_intf/pncconf/pncconf.glade:21534 -#: src/emc/usr_intf/pncconf/pncconf.glade:23330 -#: src/emc/usr_intf/pncconf/pncconf.glade:25126 -msgid "25:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63258 +msgid "Servo Info" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9936 -#: src/emc/usr_intf/pncconf/pncconf.glade:12450 -#: src/emc/usr_intf/pncconf/pncconf.glade:17707 -#: src/emc/usr_intf/pncconf/pncconf.glade:19924 -#: src/emc/usr_intf/pncconf/pncconf.glade:21795 -#: src/emc/usr_intf/pncconf/pncconf.glade:23591 -#: src/emc/usr_intf/pncconf/pncconf.glade:25387 -msgid "33:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63337 +msgid "3pwm Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9952 -#: src/emc/usr_intf/pncconf/pncconf.glade:12434 -#: src/emc/usr_intf/pncconf/pncconf.glade:17691 -#: src/emc/usr_intf/pncconf/pncconf.glade:19908 -#: src/emc/usr_intf/pncconf/pncconf.glade:21811 -#: src/emc/usr_intf/pncconf/pncconf.glade:23607 -#: src/emc/usr_intf/pncconf/pncconf.glade:25403 -msgid "35:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63348 +msgid "3pwm Deadtime:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9968 -#: src/emc/usr_intf/pncconf/pncconf.glade:12418 -#: src/emc/usr_intf/pncconf/pncconf.glade:17675 -#: src/emc/usr_intf/pncconf/pncconf.glade:19892 -#: src/emc/usr_intf/pncconf/pncconf.glade:21827 -#: src/emc/usr_intf/pncconf/pncconf.glade:23623 -#: src/emc/usr_intf/pncconf/pncconf.glade:25419 -msgid "37:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63361 +#, fuzzy +msgid "Quad Pulses / Rev:" +msgstr "mm / obr." + +#: src/emc/usr_intf/pncconf/pncconf.glade:63438 +msgid "" +"Open Loop\n" +" Test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9984 -#: src/emc/usr_intf/pncconf/pncconf.glade:12402 -#: src/emc/usr_intf/pncconf/pncconf.glade:17659 -#: src/emc/usr_intf/pncconf/pncconf.glade:19876 -#: src/emc/usr_intf/pncconf/pncconf.glade:21843 -#: src/emc/usr_intf/pncconf/pncconf.glade:23639 -#: src/emc/usr_intf/pncconf/pncconf.glade:25435 -msgid "39:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63462 +#, fuzzy +msgid "Analog Min Limit:" +msgstr "Obradni motor PWM" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63476 +#, fuzzy +msgid "Analog Max limit:" +msgstr "Obradni motor faza B" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63490 +msgid "Analog Max Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10000 -#: src/emc/usr_intf/pncconf/pncconf.glade:12386 -#: src/emc/usr_intf/pncconf/pncconf.glade:17643 -#: src/emc/usr_intf/pncconf/pncconf.glade:19860 -#: src/emc/usr_intf/pncconf/pncconf.glade:21859 -#: src/emc/usr_intf/pncconf/pncconf.glade:23655 -#: src/emc/usr_intf/pncconf/pncconf.glade:25451 -msgid "41:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63554 +msgid "Output Info" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10016 -#: src/emc/usr_intf/pncconf/pncconf.glade:12370 -#: src/emc/usr_intf/pncconf/pncconf.glade:17627 -#: src/emc/usr_intf/pncconf/pncconf.glade:19844 -#: src/emc/usr_intf/pncconf/pncconf.glade:21875 -#: src/emc/usr_intf/pncconf/pncconf.glade:23671 -#: src/emc/usr_intf/pncconf/pncconf.glade:25467 -msgid "43:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63603 +#, fuzzy +msgid "Step On-Time" +msgstr "_Vreme koraka:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63616 +#, fuzzy +msgid "Step Space" +msgstr "Duzina _koraka:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63659 +#, fuzzy +msgid "Direction Hold" +msgstr "Smer:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63672 +#, fuzzy +msgid "Direction Setup" +msgstr "Zeit zwischen Richtungs_wechsel und Schritt:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63715 +#, fuzzy +msgid "Driver Type:" +msgstr "En_dstufe:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63748 +msgid "Stepper Info" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10032 -#: src/emc/usr_intf/pncconf/pncconf.glade:12354 -#: src/emc/usr_intf/pncconf/pncconf.glade:17611 -#: src/emc/usr_intf/pncconf/pncconf.glade:19828 -#: src/emc/usr_intf/pncconf/pncconf.glade:21891 -#: src/emc/usr_intf/pncconf/pncconf.glade:23687 -#: src/emc/usr_intf/pncconf/pncconf.glade:25483 -msgid "45:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63800 +msgid "No feedback" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10099 -#: src/emc/usr_intf/pncconf/pncconf.glade:12287 -#: src/emc/usr_intf/pncconf/pncconf.glade:17544 -#: src/emc/usr_intf/pncconf/pncconf.glade:19777 -#: src/emc/usr_intf/pncconf/pncconf.glade:21942 -#: src/emc/usr_intf/pncconf/pncconf.glade:23738 -#: src/emc/usr_intf/pncconf/pncconf.glade:25534 -msgid "47:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63810 +msgid "Absolute Feedback" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10822 -#: src/emc/usr_intf/pncconf/pncconf.glade:11077 -#: src/emc/usr_intf/pncconf/pncconf.glade:11311 -#: src/emc/usr_intf/pncconf/pncconf.glade:11567 -#: src/emc/usr_intf/pncconf/pncconf.glade:13924 -#: src/emc/usr_intf/pncconf/pncconf.glade:14171 -#: src/emc/usr_intf/pncconf/pncconf.glade:16516 -#: src/emc/usr_intf/pncconf/pncconf.glade:16772 -#: src/emc/usr_intf/pncconf/pncconf.glade:19129 -#: src/emc/usr_intf/pncconf/pncconf.glade:19379 -#: src/emc/usr_intf/pncconf/pncconf.glade:22343 -#: src/emc/usr_intf/pncconf/pncconf.glade:22592 -#: src/emc/usr_intf/pncconf/pncconf.glade:24139 -#: src/emc/usr_intf/pncconf/pncconf.glade:24388 -#: src/emc/usr_intf/pncconf/pncconf.glade:25935 -#: src/emc/usr_intf/pncconf/pncconf.glade:26184 -#: src/emc/usr_intf/pncconf/pncconf.glade:28515 -#: src/emc/usr_intf/pncconf/pncconf.glade:28761 -#: src/emc/usr_intf/pncconf/pncconf.glade:28892 -#: src/emc/usr_intf/pncconf/pncconf.glade:29139 -#: src/emc/usr_intf/pncconf/pncconf.glade:33079 -#: src/emc/usr_intf/pncconf/pncconf.glade:33250 -#: src/emc/usr_intf/pncconf/pncconf.glade:33497 -#: src/emc/usr_intf/pncconf/pncconf.glade:38012 -#: src/emc/usr_intf/pncconf/pncconf.glade:38258 -#: src/emc/usr_intf/pncconf/pncconf.glade:38507 -#: src/emc/usr_intf/pncconf/pncconf.glade:42359 -#: src/emc/usr_intf/pncconf/pncconf.glade:42605 -#: src/emc/usr_intf/pncconf/pncconf.glade:42736 -#: src/emc/usr_intf/pncconf/pncconf.glade:42983 -#: src/emc/usr_intf/pncconf/pncconf.glade:46936 -#: src/emc/usr_intf/pncconf/pncconf.glade:49282 -#: src/emc/usr_intf/pncconf/pncconf.glade:49528 -#: src/emc/usr_intf/pncconf/pncconf.glade:49659 -#: src/emc/usr_intf/pncconf/pncconf.glade:49906 -#: src/emc/usr_intf/pncconf/pncconf.glade:53859 -msgid "Pin Type" +#: src/emc/usr_intf/pncconf/pncconf.glade:63824 +msgid "Incremental Feedback" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10835 -#: src/emc/usr_intf/pncconf/pncconf.glade:11553 -#: src/emc/usr_intf/pncconf/pncconf.glade:16758 -#: src/emc/usr_intf/pncconf/pncconf.glade:19365 -#: src/emc/usr_intf/pncconf/pncconf.glade:22356 -#: src/emc/usr_intf/pncconf/pncconf.glade:24152 -#: src/emc/usr_intf/pncconf/pncconf.glade:25948 -msgid "23:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63838 +#, fuzzy +msgid "Incremental Encoder" +msgstr "Invertovana slika" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63850 +msgid "Hall sensors" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10849 -#: src/emc/usr_intf/pncconf/pncconf.glade:11539 -#: src/emc/usr_intf/pncconf/pncconf.glade:16744 -#: src/emc/usr_intf/pncconf/pncconf.glade:19351 -#: src/emc/usr_intf/pncconf/pncconf.glade:22370 -#: src/emc/usr_intf/pncconf/pncconf.glade:24166 -#: src/emc/usr_intf/pncconf/pncconf.glade:25962 -msgid "21:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63862 +msgid "Fanuc Red Cap " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10863 -#: src/emc/usr_intf/pncconf/pncconf.glade:11525 -#: src/emc/usr_intf/pncconf/pncconf.glade:16730 -#: src/emc/usr_intf/pncconf/pncconf.glade:19337 -#: src/emc/usr_intf/pncconf/pncconf.glade:22384 -#: src/emc/usr_intf/pncconf/pncconf.glade:24180 -#: src/emc/usr_intf/pncconf/pncconf.glade:25976 -msgid "19:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63874 +#, fuzzy +msgid "Use encoder Index" +msgstr "Neupotrebljen" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63905 +msgid "Input Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10877 -#: src/emc/usr_intf/pncconf/pncconf.glade:11511 -#: src/emc/usr_intf/pncconf/pncconf.glade:16716 -#: src/emc/usr_intf/pncconf/pncconf.glade:19323 -#: src/emc/usr_intf/pncconf/pncconf.glade:22398 -#: src/emc/usr_intf/pncconf/pncconf.glade:24194 -#: src/emc/usr_intf/pncconf/pncconf.glade:25990 -msgid "17:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63929 +msgid "Digital instead of PWM outputs" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11497 -#: src/emc/usr_intf/pncconf/pncconf.glade:16702 -#: src/emc/usr_intf/pncconf/pncconf.glade:19309 -#: src/emc/usr_intf/pncconf/pncconf.glade:22412 -#: src/emc/usr_intf/pncconf/pncconf.glade:24208 -#: src/emc/usr_intf/pncconf/pncconf.glade:26004 -msgid "15:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63938 +msgid "6 outputs instead of 3 " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10905 -#: src/emc/usr_intf/pncconf/pncconf.glade:11483 -#: src/emc/usr_intf/pncconf/pncconf.glade:16688 -#: src/emc/usr_intf/pncconf/pncconf.glade:19295 -#: src/emc/usr_intf/pncconf/pncconf.glade:22426 -#: src/emc/usr_intf/pncconf/pncconf.glade:24222 -#: src/emc/usr_intf/pncconf/pncconf.glade:26018 -msgid "13:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63950 +msgid "Force Trapezoid Mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10919 -#: src/emc/usr_intf/pncconf/pncconf.glade:11469 -#: src/emc/usr_intf/pncconf/pncconf.glade:16674 -#: src/emc/usr_intf/pncconf/pncconf.glade:19281 -#: src/emc/usr_intf/pncconf/pncconf.glade:22440 -#: src/emc/usr_intf/pncconf/pncconf.glade:24236 -#: src/emc/usr_intf/pncconf/pncconf.glade:26032 -msgid "11:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63962 +msgid "Emulate feedback " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10933 -#: src/emc/usr_intf/pncconf/pncconf.glade:11455 -#: src/emc/usr_intf/pncconf/pncconf.glade:16660 -#: src/emc/usr_intf/pncconf/pncconf.glade:19267 -#: src/emc/usr_intf/pncconf/pncconf.glade:22454 -#: src/emc/usr_intf/pncconf/pncconf.glade:24250 -#: src/emc/usr_intf/pncconf/pncconf.glade:26046 -msgid " 9:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63974 +msgid "Emulated Hall sensors" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10947 -#: src/emc/usr_intf/pncconf/pncconf.glade:11441 -#: src/emc/usr_intf/pncconf/pncconf.glade:16646 -#: src/emc/usr_intf/pncconf/pncconf.glade:19253 -#: src/emc/usr_intf/pncconf/pncconf.glade:22468 -#: src/emc/usr_intf/pncconf/pncconf.glade:24264 -#: src/emc/usr_intf/pncconf/pncconf.glade:26060 -msgid " 7:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63987 +msgid "Emulated Fanuc Red Cap" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10961 -#: src/emc/usr_intf/pncconf/pncconf.glade:11427 -#: src/emc/usr_intf/pncconf/pncconf.glade:16632 -#: src/emc/usr_intf/pncconf/pncconf.glade:19239 -#: src/emc/usr_intf/pncconf/pncconf.glade:22482 -#: src/emc/usr_intf/pncconf/pncconf.glade:24278 -#: src/emc/usr_intf/pncconf/pncconf.glade:26074 -msgid " 5:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64014 +msgid "8i20 Max Current" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10975 -#: src/emc/usr_intf/pncconf/pncconf.glade:11413 -#: src/emc/usr_intf/pncconf/pncconf.glade:16618 -#: src/emc/usr_intf/pncconf/pncconf.glade:19225 -#: src/emc/usr_intf/pncconf/pncconf.glade:22496 -#: src/emc/usr_intf/pncconf/pncconf.glade:24292 -#: src/emc/usr_intf/pncconf/pncconf.glade:26088 -msgid " 3:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64048 +msgid "Output Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10989 -#: src/emc/usr_intf/pncconf/pncconf.glade:11399 -#: src/emc/usr_intf/pncconf/pncconf.glade:16604 -#: src/emc/usr_intf/pncconf/pncconf.glade:19211 -#: src/emc/usr_intf/pncconf/pncconf.glade:22510 -#: src/emc/usr_intf/pncconf/pncconf.glade:24306 -#: src/emc/usr_intf/pncconf/pncconf.glade:26102 -msgid " 1:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64103 +msgid "alignment current" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64113 +msgid "lead angle" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:11002 -#: src/emc/usr_intf/pncconf/pncconf.glade:11065 -#: src/emc/usr_intf/pncconf/pncconf.glade:11324 -#: src/emc/usr_intf/pncconf/pncconf.glade:11386 -#: src/emc/usr_intf/pncconf/pncconf.glade:13937 -#: src/emc/usr_intf/pncconf/pncconf.glade:13999 -#: src/emc/usr_intf/pncconf/pncconf.glade:16529 -#: src/emc/usr_intf/pncconf/pncconf.glade:16591 -#: src/emc/usr_intf/pncconf/pncconf.glade:19142 -#: src/emc/usr_intf/pncconf/pncconf.glade:19198 -#: src/emc/usr_intf/pncconf/pncconf.glade:22523 -#: src/emc/usr_intf/pncconf/pncconf.glade:22580 -#: src/emc/usr_intf/pncconf/pncconf.glade:24319 -#: src/emc/usr_intf/pncconf/pncconf.glade:24376 -#: src/emc/usr_intf/pncconf/pncconf.glade:26115 -#: src/emc/usr_intf/pncconf/pncconf.glade:26172 -#: src/emc/usr_intf/pncconf/pncconf.glade:28686 -#: src/emc/usr_intf/pncconf/pncconf.glade:28749 -#: src/emc/usr_intf/pncconf/pncconf.glade:28905 -#: src/emc/usr_intf/pncconf/pncconf.glade:28967 -#: src/emc/usr_intf/pncconf/pncconf.glade:33067 -#: src/emc/usr_intf/pncconf/pncconf.glade:33263 -#: src/emc/usr_intf/pncconf/pncconf.glade:33325 -#: src/emc/usr_intf/pncconf/pncconf.glade:38183 -#: src/emc/usr_intf/pncconf/pncconf.glade:38246 -#: src/emc/usr_intf/pncconf/pncconf.glade:38520 -#: src/emc/usr_intf/pncconf/pncconf.glade:42530 -#: src/emc/usr_intf/pncconf/pncconf.glade:42593 -#: src/emc/usr_intf/pncconf/pncconf.glade:42749 -#: src/emc/usr_intf/pncconf/pncconf.glade:42811 -#: src/emc/usr_intf/pncconf/pncconf.glade:46924 -#: src/emc/usr_intf/pncconf/pncconf.glade:49453 -#: src/emc/usr_intf/pncconf/pncconf.glade:49516 -#: src/emc/usr_intf/pncconf/pncconf.glade:49672 -#: src/emc/usr_intf/pncconf/pncconf.glade:49734 -#: src/emc/usr_intf/pncconf/pncconf.glade:53847 +#: src/emc/usr_intf/pncconf/pncconf.glade:64213 #, fuzzy -msgid "Inv" -msgstr "Invertovan" +msgid "Reverse" +msgstr "Prekoracenje brzine obr.motora:" -#: src/emc/usr_intf/pncconf/pncconf.glade:11198 -msgid "" -" I/O\n" -"Connector 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:64223 +msgid "Input-pattern" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:13811 -msgid "" -" I/O\n" -" Connector 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:64233 +msgid "output-pattern" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:14012 -#: src/emc/usr_intf/pncconf/pncconf.glade:14039 -#: src/emc/usr_intf/pncconf/pncconf.glade:14053 -#: src/emc/usr_intf/pncconf/pncconf.glade:28632 -#: src/emc/usr_intf/pncconf/pncconf.glade:28646 -#: src/emc/usr_intf/pncconf/pncconf.glade:28673 -#: src/emc/usr_intf/pncconf/pncconf.glade:28980 -#: src/emc/usr_intf/pncconf/pncconf.glade:29007 -#: src/emc/usr_intf/pncconf/pncconf.glade:29021 -#: src/emc/usr_intf/pncconf/pncconf.glade:32951 -#: src/emc/usr_intf/pncconf/pncconf.glade:32965 -#: src/emc/usr_intf/pncconf/pncconf.glade:32992 -#: src/emc/usr_intf/pncconf/pncconf.glade:33338 -#: src/emc/usr_intf/pncconf/pncconf.glade:33365 -#: src/emc/usr_intf/pncconf/pncconf.glade:33379 -#: src/emc/usr_intf/pncconf/pncconf.glade:38129 -#: src/emc/usr_intf/pncconf/pncconf.glade:38143 -#: src/emc/usr_intf/pncconf/pncconf.glade:38170 -#: src/emc/usr_intf/pncconf/pncconf.glade:38594 -#: src/emc/usr_intf/pncconf/pncconf.glade:38621 -#: src/emc/usr_intf/pncconf/pncconf.glade:38635 -#: src/emc/usr_intf/pncconf/pncconf.glade:42476 -#: src/emc/usr_intf/pncconf/pncconf.glade:42490 -#: src/emc/usr_intf/pncconf/pncconf.glade:42517 -#: src/emc/usr_intf/pncconf/pncconf.glade:42824 -#: src/emc/usr_intf/pncconf/pncconf.glade:42851 -#: src/emc/usr_intf/pncconf/pncconf.glade:42865 -#: src/emc/usr_intf/pncconf/pncconf.glade:46808 -#: src/emc/usr_intf/pncconf/pncconf.glade:46822 -#: src/emc/usr_intf/pncconf/pncconf.glade:46849 -#: src/emc/usr_intf/pncconf/pncconf.glade:49399 -#: src/emc/usr_intf/pncconf/pncconf.glade:49413 -#: src/emc/usr_intf/pncconf/pncconf.glade:49440 -#: src/emc/usr_intf/pncconf/pncconf.glade:49747 -#: src/emc/usr_intf/pncconf/pncconf.glade:49774 -#: src/emc/usr_intf/pncconf/pncconf.glade:49788 -#: src/emc/usr_intf/pncconf/pncconf.glade:53731 -#: src/emc/usr_intf/pncconf/pncconf.glade:53745 -#: src/emc/usr_intf/pncconf/pncconf.glade:53772 -msgid " " +#: src/emc/usr_intf/pncconf/pncconf.glade:64243 +msgid "Drive-offset" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:16403 -msgid "" -" I/O\n" -" Connector 4" +#: src/emc/usr_intf/pncconf/pncconf.glade:64253 +#, fuzzy +msgid "Encoder-offset" +msgstr "END" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64263 +msgid "Poles" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:19017 -msgid "" -" I/O\n" -" Connector 5" +#: src/emc/usr_intf/pncconf/pncconf.glade:64283 +#, fuzzy +msgid "Configuration" +msgstr "Konfiguracija X ose" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64318 +msgid "Use BLDC Motor Commutation Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:20813 -msgid "" -" I/O\n" -"Connector 6" +#: src/emc/usr_intf/pncconf/pncconf.glade:64354 +msgid "Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:22609 -msgid "" -" I/O\n" -"Connector 7" +#: src/emc/usr_intf/pncconf/pncconf.glade:64375 +#, fuzzy +msgid "% " +msgstr "%" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64394 +msgid "Range:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:24405 -msgid "" -" I/O\n" -"Connector 8" +#: src/emc/usr_intf/pncconf/pncconf.glade:64419 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "RPM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:26201 -msgid "" -" I/O\n" -" Connector 9" +#: src/emc/usr_intf/pncconf/pncconf.glade:64439 +#, fuzzy +msgid "Use Spindle-At-Speed" +msgstr "Index. sig. enkodera obr.mot." + +#: src/emc/usr_intf/pncconf/pncconf.glade:64464 +#, fuzzy +msgid "Filter gain:" +msgstr "Filtriranje neuspesno" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64499 +msgid "Spindle Display Filter Settings" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:28775 -#: src/emc/usr_intf/pncconf/pncconf.glade:35696 -#: src/emc/usr_intf/pncconf/pncconf.glade:42619 -#: src/emc/usr_intf/pncconf/pncconf.glade:49542 -msgid "page 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:64565 +msgid "Rapid Speed Following Error:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:31354 -#: src/emc/usr_intf/pncconf/pncconf.glade:38275 -#: src/emc/usr_intf/pncconf/pncconf.glade:45198 -#: src/emc/usr_intf/pncconf/pncconf.glade:52121 -msgid "page 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:64577 +msgid "Feed Speed Following Error:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:33107 -#: src/emc/usr_intf/pncconf/pncconf.glade:40030 -#: src/emc/usr_intf/pncconf/pncconf.glade:46953 -#: src/emc/usr_intf/pncconf/pncconf.glade:53876 -msgid "page 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:64591 +#, fuzzy +msgid "Invert Motor Direction" +msgstr "Skeniranje Pravac" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64606 +msgid "Invert Encoder Direction " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:33123 -msgid "Smart Serial 0" +#: src/emc/usr_intf/pncconf/pncconf.glade:64661 +#, fuzzy +msgid "Single Input Encoder" +msgstr "Invertovana slika" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64776 +msgid "encoder Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:40046 -msgid "Smart Serial 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:64801 +#, fuzzy +msgid "Stepper Scale:" +msgstr "Duzina _koraka:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64831 +msgid "" +"Calculate\n" +"Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:46969 -msgid "Smart Serial 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:64901 +#, fuzzy +msgid "Test / Tune Axis" +msgstr "Testiraj ovu osu" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64943 +msgid "X Axis Configuration" +msgstr "Konfiguracija X ose" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65155 +msgid "" +"NO\n" +"YES" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53892 -msgid "Smart Serial 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65171 +msgid "Use Encoder Index For Home:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53914 +#: src/emc/usr_intf/pncconf/pncconf.glade:65212 #, fuzzy -msgid "First Parallel Port Setup" -msgstr "Podesavanje paralelnog porta" +msgid "Home Final Velocity:" +msgstr "Brzina pri _trazenju referentne pozicije:" -#: src/emc/usr_intf/pncconf/pncconf.glade:53998 -#, fuzzy -msgid "Outputs (PC to Machine):" -msgstr "Izlazi (od PC racunra ka masini)" +#: src/emc/usr_intf/pncconf/pncconf.glade:65222 +msgid "" +"Same\n" +"Opposite" +msgstr "" +"Isti\n" +"Suprotan" -#: src/emc/usr_intf/pncconf/pncconf.glade:54552 +#: src/emc/usr_intf/pncconf/pncconf.glade:65238 #, fuzzy -msgid "Inputs (Machine to PC):" -msgstr "Ulazi (od masine ka PC racunaru)" +msgid "Home Latch Direction:" +msgstr "Pozija referentnog _Latch-a:" -#: src/emc/usr_intf/pncconf/pncconf.glade:55977 -msgid "Launch Test Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:65251 +msgid "" +"Towards Negative limit\n" +"Towards Positive limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56003 +#: src/emc/usr_intf/pncconf/pncconf.glade:65267 #, fuzzy -msgid "X Axis Motor/Encoder Configuration" -msgstr "Konfiguracija X ose" +msgid "Home Search Direction:" +msgstr "Pozija referentnog _Latch-a:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56091 -msgid "D" +#: src/emc/usr_intf/pncconf/pncconf.glade:65309 +#, fuzzy +msgid "Home latch Velocity:" +msgstr "Brzina pri _trazenju referentne pozicije:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65334 +msgid "filename:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56104 -msgid "I" +#: src/emc/usr_intf/pncconf/pncconf.glade:65347 +msgid "" +"Type 1\n" +"Type 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56117 -msgid "P" +#: src/emc/usr_intf/pncconf/pncconf.glade:65392 +msgid "Use Compensation File:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56128 -#: src/emc/usr_intf/pncconf/pncconf.glade:60917 -#: src/emc/usr_intf/pncconf/pncconf.glade:62202 -#: src/emc/usr_intf/pncconf/pncconf.glade:63103 -#: src/emc/usr_intf/pncconf/pncconf.glade:64388 -#: src/emc/usr_intf/pncconf/pncconf.glade:65265 -msgid "Bias" +#: src/emc/usr_intf/pncconf/pncconf.glade:65406 +msgid "Use Backlash Compensation:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56141 -msgid "Deadband" +#: src/emc/usr_intf/pncconf/pncconf.glade:65433 +msgid "Home Position location (offset from machine zero Origin):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56188 -#: src/emc/usr_intf/pncconf/pncconf.glade:61128 -#: src/emc/usr_intf/pncconf/pncconf.glade:61991 -#: src/emc/usr_intf/pncconf/pncconf.glade:63314 -#: src/emc/usr_intf/pncconf/pncconf.glade:64177 -#: src/emc/usr_intf/pncconf/pncconf.glade:65470 -#, fuzzy -msgid "FF0" -msgstr "ISKLJUCEN" +#: src/emc/usr_intf/pncconf/pncconf.glade:65449 +msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56201 -#: src/emc/usr_intf/pncconf/pncconf.glade:61118 -#: src/emc/usr_intf/pncconf/pncconf.glade:62001 -#: src/emc/usr_intf/pncconf/pncconf.glade:63304 -#: src/emc/usr_intf/pncconf/pncconf.glade:64187 -#: src/emc/usr_intf/pncconf/pncconf.glade:65460 -#, fuzzy -msgid "FF1" -msgstr "ISKLJUCEN" +#: src/emc/usr_intf/pncconf/pncconf.glade:65493 +msgid "Home Switch location (Offset from machine zero Origin):" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56214 -#: src/emc/usr_intf/pncconf/pncconf.glade:61108 -#: src/emc/usr_intf/pncconf/pncconf.glade:62011 -#: src/emc/usr_intf/pncconf/pncconf.glade:63294 -#: src/emc/usr_intf/pncconf/pncconf.glade:64197 -#: src/emc/usr_intf/pncconf/pncconf.glade:65450 +#: src/emc/usr_intf/pncconf/pncconf.glade:65509 #, fuzzy -msgid "FF2" -msgstr "ISKLJUCEN" +msgid "Home Search Velocity:" +msgstr "Brzina pri _trazenju referentne pozicije:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56282 -msgid "Servo Info" +#: src/emc/usr_intf/pncconf/pncconf.glade:65524 +msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56362 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Spindle Max Output:" -msgstr "Obradni motor +" +msgid "Advanced Options" +msgstr "Maschinenkonfiguration komplett" -#: src/emc/usr_intf/pncconf/pncconf.glade:56412 -#, fuzzy -msgid "Spindle Max limit:" -msgstr "Obradni motor faza B" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 15" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56426 -#, fuzzy -msgid "Spindle Min Limit:" -msgstr "Obradni motor PWM" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 14" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56456 -msgid "" -"Open Loop\n" -" Test" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 13" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56557 -#, fuzzy -msgid "Quad Pulses / Rev:" -msgstr "mm / obr." +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 12" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56572 -msgid "Dac Max Output:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 11" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56586 -msgid "Dac Output Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 10" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56599 -msgid "3pwm Deadtime:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 9" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56612 -msgid "3pwm Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56626 -msgid "Output Info" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 7" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56691 -#, fuzzy -msgid "Driver Type:" -msgstr "En_dstufe:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 6" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56735 -#, fuzzy -msgid "Direction Setup" -msgstr "Zeit zwischen Richtungs_wechsel und Schritt:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 5" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56748 -#, fuzzy -msgid "Direction Hold" -msgstr "Smer:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 4" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56791 -#, fuzzy -msgid "Step Space" -msgstr "Duzina _koraka:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 3" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56804 -#, fuzzy -msgid "Step On-Time" -msgstr "_Vreme koraka:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 2" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56820 -msgid "Stepper Info" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56871 -msgid "No feedback" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include Halui user interface component / commands" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56881 -msgid "Absolute Feedback" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Number of digital (bit) in pins:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56895 -msgid "Incremental Feedback" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Number of digital (bit) out pins:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56909 -#, fuzzy -msgid "Incremental Encoder" -msgstr "Invertovana slika" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of Internal bit memory:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56921 -msgid "Hall sensors" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of Internal word memory:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56933 -msgid "Fanuc Red Cap " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Setup number of external pins" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56945 -#, fuzzy -msgid "Use encoder Index" -msgstr "Neupotrebljen" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Z Auto Touch off program" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56976 -msgid "Input Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "HAL Component Page" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57000 -msgid "Digital instead of PWM outputs" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Add HAL components with this page." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57009 -msgid "6 outputs instead of 3 " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Component" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57021 -msgid "Force Trapezoid Mode" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "number of components" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57033 -msgid "Emulate feedback " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "PID" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57045 -msgid "Emulated Hall sensors" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57058 -msgid "Emulated Fanuc Red Cap" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mux16" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57085 -msgid "8i20 Max Current" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "lowpass" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57119 -msgid "Output Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Base Thread" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57153 -msgid "Poles" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Servo Thread" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57163 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Encoder-offset" -msgstr "END" +msgid "Load Command " +msgstr "zadata" -#: src/emc/usr_intf/pncconf/pncconf.glade:57173 -msgid "Drive-offset" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Thread Speed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57183 -msgid "output-pattern" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Thread Command" +msgstr "zadata" -#: src/emc/usr_intf/pncconf/pncconf.glade:57193 -msgid "Input-pattern" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Custom Components Commands" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57203 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Machine configuration complete" +msgstr "Maschinenkonfiguration komplett" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Reverse" -msgstr "Prekoracenje brzine obr.motora:" +msgid "" +"All the necessary information has now been gathered. Click \"Apply\" to " +"write your configuration files to disk.\n" +"\n" +"If you are using the 5i25 card with daugther boards or are using SSerial " +"based daughter cards, the cards must be connected and/or field power " +"supplied to the 5i25 \n" +"for the HAL pins to be available. If the config is expecting the pins and " +"they are not there, linuxcnc will error.\n" +"If you experience lockups while running LinuxCNC, you will need to decrease " +"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC, first verify that you " +"entered the proper timings for your stepper drivers. If that does not fix " +"the problem, then run a more thorough latency test as described on the " +"linuxcnc.org wiki:\n" +" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" +"\n" +"If you experience the \"Unexpected Realtime Delay\" message, run a more " +"thorough latency test as described on the linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" +msgstr "" +"Alle notwendigen Informationen wurden erfasst. Bestätigen Sie mit " +"»Anwenden«, um die Konfiguration zu speichern.\n" +"Falls EMC2 nicht mehr reagieren sollte, verkleinern Sie die maximale " +"Geschwindigkeit, was die Zeit für einen Systemtakt (BASE_PERIOD) " +"vergrößert.\n" +"\n" +"Falls Sie Schrittverluste bemerken sollten, überprüfen Sie zuerst die " +"Zeiteinstellungen für ihre Endstufe. Wird das Problem hierdurch nicht " +"behoben, dann führen bitte weiter Maßnahmen durch, wie sie im EMC2-Wiki " +"beschrieben werden:\n" +" http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting\n" +"\n" +"Falls Sie die Fehlermeldung »Unexpected Realtime Delay« erhalten, dann " +"führen bitte weiter Maßnahmen durch, wie sie im EMC2-Wiki beschrieben " +"werden:\n" +" http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting" -#: src/emc/usr_intf/pncconf/pncconf.glade:57303 -msgid "lead angle" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +" Motor Encoder Test\n" +"Warning limits switches \n" +" Will not be obeyed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57313 -msgid "alignment current" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Slow Dac Speed" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Fast Dac Speed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57354 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Configuration" -msgstr "Konfiguracija X ose" +msgid "Dac Offset:" +msgstr "Test %s-ose" -#: src/emc/usr_intf/pncconf/pncconf.glade:57389 -msgid "Use Brushless Motor Control" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Encoder Scale:" +msgstr "END" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Reset Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57425 -msgid "Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Enable Amp" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57446 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "% " -msgstr "%" +msgid "Invert Encoder" +msgstr "Invertovana slika" -#: src/emc/usr_intf/pncconf/pncconf.glade:57466 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Use Spindle-At-Speed" -msgstr "Index. sig. enkodera obr.mot." +msgid "Invert Motor" +msgstr "Invertovan" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"±\n" +"+\n" +"-\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57491 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Filter gain:" -msgstr "Filtriranje neuspesno" +msgid "Seconds" +msgstr "Skundarni" -#: src/emc/usr_intf/pncconf/pncconf.glade:57526 -msgid "Spindle Display Filter Settings" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57577 -#, fuzzy -msgid "Single Input Encoder" -msgstr "Invertovana slika" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm/minute^2" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57631 -msgid "Invert Encoder Direction " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm/minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57646 -#, fuzzy -msgid "Invert Motor Direction" -msgstr "Skeniranje Pravac" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Current" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "P:" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "I:" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "D:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57661 -msgid "Feed Speed Following Error:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Original" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57675 -msgid "Rapid Speed Following Error:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "DeadBand" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57715 -msgid "" -"Calculate\n" -"Scale" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "PID Tuning" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57744 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Stepper Scale:" +msgid "Step Time:" +msgstr "_Vreme koraka:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Step Space:" msgstr "Duzina _koraka:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57771 -msgid "encoder Scale:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Direction Hold:" +msgstr "Smer:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57928 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Test / Tune Axis" -msgstr "Testiraj ovu osu" +msgid "Direction Setup:" +msgstr "Zeit zwischen Richtungs_wechsel und Schritt:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58235 -msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Step Timing" +msgstr "_Vreme koraka:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58251 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Home Search Velocity:" -msgstr "Brzina pri _trazenju referentne pozicije:" +msgid "spindle" +msgstr "Obradni motor +" -#: src/emc/usr_intf/pncconf/pncconf.glade:58266 -msgid "Home Switch location (Offset from machine zero Origin):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Help Page" +msgstr "Testbereich:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"X axis:\n" +"Total Travel = 10\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = 0\n" +"Pos Travel Distance = Total Travel - neg travel distance = 10\n" +"Home Position = Origin to Home Position distance = 6\n" +"\n" +"Y axis:\n" +"Total Travel = 8\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = -8\n" +"Pos Travel Distance = Total Travel - neg travel distance = 0\n" +"Home Position = Origin to Home Position distance = 0\n" +"\n" +"Z axis:\n" +"Total Travel = 12\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = -12\n" +"Pos Travel Distance = Total Travel - neg travel distance = 0\n" +"Home Position = Origin to Home Position distance = 0\n" +"\n" +"Note that the direction indicators on the top right show \n" +"movement of the TOOL and on the actual machine,\n" +"often it is the table that actually moves. In that case the \n" +"directions are opposite of shown.\n" +"\n" +"Note this is an example, Many other combinations are \n" +"possible" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58310 -msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Mill" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58326 -msgid "Home Position location (offset from machine zero Origin):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"Total Travel = 4 + 6 = 10\n" +"Z Home Offset = Origin to Home Switch distance = 10\n" +"Z Neg Travel Distance = Origin to neg limit distance = 0\n" +"Z Pos Travel Distance = Total Travel - neg travel distance = 10\n" +"Z Home Position = Origin to Home Position distance = 4\n" +"\n" +"X axis would be similar but not shown fully for clarity.\n" +"This is just a sample reference other switch combinations are\n" +"possible." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58355 -msgid "Use Backlash Compensation:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Lathe" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58369 -msgid "Use Compensation File:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Diagram" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58412 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Output" +msgstr "Neupotrebljen" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" -"Type 1\n" -"Type 2" +"\t\t\t\tPNCconf - Point aNd Click CONFigurator\n" +"PNCconf is a configuration program for Linuxcnc.\n" +"It configures machines using Mesa I/O cards.\n" +"It configures servo,stepper or closed loop stepper machines.\n" +"It supports some of Mesa's sserial cards.\n" +"It will forever be a work in progress as Linuxcnc changes.\n" +"\n" +"Many thanks To:\n" +"Jeff Eppler - PNCconf is based on stepconf - Jeff's creation. Jeff also has " +"helped with techincal difficulties.\n" +"Big John T - John drew the original machine illustrations. Testing and " +"suggestions.\n" +"Peter Wallace - Technical questions on Mesa's I/O cards. Supplied sample " +"equipment to test with.\n" +"Andy Pugh - suggestions, questions answered and many pin name changes :) \n" +"Dave Armstrong - testing and suggestions expecially with resolvers.\n" +"Everyone who gave a bug report ! I cannot test everything thoughly enough so " +"reports help.\n" +"\n" +"Beta 1 version" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58427 -msgid "filename:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "TPI " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58455 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Home latch Velocity:" -msgstr "Brzina pri _trazenju referentne pozicije:" +msgid "Pulley teeth (motor:Leadscrew):" +msgstr "_Odnos (motor:navojno vreteno):" -#: src/emc/usr_intf/pncconf/pncconf.glade:58494 -#, fuzzy -msgid "Home Search Direction:" -msgstr "Pozija referentnog _Latch-a:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Worm turn ratio (Input:Outputl)" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58507 -msgid "" -"Towards Negative limit\n" -"Towards Positive limit" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Microstep Multiplication Factor:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Home Latch Direction:" -msgstr "Pozija referentnog _Latch-a:" +msgid "Leadscrew Metric Pitch" +msgstr "_korak navojnog vretena:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58552 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Home Final Velocity:" -msgstr "Brzina pri _trazenju referentne pozicije:" +msgid "Motor steps per revolution:" +msgstr "_Broj koraka po okretaju motora" -#: src/emc/usr_intf/pncconf/pncconf.glade:58591 -msgid "Use Encoder Index For Home:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Motor Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58603 -msgid "" -"NO\n" -"YES" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "TPI" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "X 4 = Pulses/Rev" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58628 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Advanced Options" -msgstr "Maschinenkonfiguration komplett" +msgid "Encoder lines per revolution:" +msgstr "Zyklen pro Umdrehung:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58712 -msgid "Cmd 1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Pulley teeth (encoder:Leadscrew):" +msgstr "_Odnos (motor:navojno vreteno):" -#: src/emc/usr_intf/pncconf/pncconf.glade:58718 -msgid "Cmd 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58728 -msgid "Cmd 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58738 -msgid "Cmd 4" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "encoder pulses per unit:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58748 -msgid "Cmd 5" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "motor steps per unit:" +msgstr "_Broj koraka po okretaju motora" -#: src/emc/usr_intf/pncconf/pncconf.glade:58874 -msgid "Cmd 6" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Calculated Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58884 -msgid "Cmd 7" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / encoder pulse" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58896 -msgid "Cmd 8" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Resolution:" +msgstr "Zyklen pro Umdrehung:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58908 -msgid "Cmd 9" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Distance to acheave max speed:" +msgstr "razdaljina do maksimalne brzine:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58920 -msgid "Cmd 10" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "sec" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58990 -msgid "Cmd 11" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Khz" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59000 -msgid "Cmd 12" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Calculated Axis SCALE:" +msgstr "Skala za osu" -#: src/emc/usr_intf/pncconf/pncconf.glade:59012 -msgid "Cmd 13" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Motor RPM at max speed:" +msgstr "Ucestanost pri maksimalnoj brzini:" -#: src/emc/usr_intf/pncconf/pncconf.glade:59024 -msgid "Cmd 14" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "xmaxrpm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59036 -msgid "Cmd 15" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Motion Data" +msgstr "Homin_g" -#: src/emc/usr_intf/pncconf/pncconf.glade:59053 -msgid "Include Halui user interface component / commands" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "gtk-cancel" +msgstr "Odustani" -#: src/emc/usr_intf/pncconf/pncconf.glade:59127 -msgid "Number of digital (bit) in pins:" +#: src/emc/usr_intf/gscreen/gscreen.py:349 +#, python-format +msgid "adding import dir %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59138 -msgid "Number of digital (bit) out pins:" +#: src/emc/usr_intf/gscreen/gscreen.py:355 +#, python-format +msgid "module '%s' imported OK" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59308 -msgid "Setup number of external pins" +#: src/emc/usr_intf/gscreen/gscreen.py:452 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Using CUSTOM glade file from %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59360 -msgid "Z Auto Touch off program" +#: src/emc/usr_intf/gscreen/gscreen.py:457 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Using SKIN glade file from %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59505 -msgid "HAL Component Page" +#: src/emc/usr_intf/gscreen/gscreen.py:460 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: using STOCK glade file from: %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59648 -msgid "lowpass" +#: src/emc/usr_intf/gscreen/gscreen.py:466 +#, python-format +msgid "**** Gscreen GLADE ERROR: With main screen xml file: %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59675 -msgid "mux16" +#: src/emc/usr_intf/gscreen/gscreen.py:471 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Screen 2 -Using CUSTOM glade file from %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59702 -msgid "scale" +#: src/emc/usr_intf/gscreen/gscreen.py:477 +#, python-format +msgid "**** Gscreen GLADE ERROR: With screen 2's xml file: %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59728 -msgid "PID" +#: src/emc/usr_intf/gscreen/gscreen.py:479 +msgid "" +"\n" +"**** GSCREEN INFO: No Screen 2 glade file present" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59739 -msgid "number of components" +#: src/emc/usr_intf/gscreen/gscreen.py:519 +msgid "No UNITS entry found in [TRAJ] or [AXIS_0] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59767 -msgid "Component" +#: src/emc/usr_intf/gscreen/gscreen.py:532 +msgid "" +"*** Gscreen ERROR: Asking for a HAL component using a name that already " +"exists." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59794 -msgid "Add HAL components with this page." +#: src/emc/usr_intf/gscreen/gscreen.py:585 +msgid "No default jog increments entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59844 -#, fuzzy -msgid "Thread Command" -msgstr "zadata" - -#: src/emc/usr_intf/pncconf/pncconf.glade:59854 -msgid "Thread Speed" +#: src/emc/usr_intf/gscreen/gscreen.py:598 +msgid "No default angular jog increments entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59906 -#, fuzzy -msgid "Load Command " -msgstr "zadata" - -#: src/emc/usr_intf/pncconf/pncconf.glade:59952 -msgid "Servo Thread" +#: src/emc/usr_intf/gscreen/gscreen.py:607 +#, python-format +msgid "" +"No DEFAULT_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59965 -msgid "Base Thread" +#: src/emc/usr_intf/gscreen/gscreen.py:618 +#, python-format +msgid "" +"No MAX_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59979 -msgid "Custom Components Commands" +#: src/emc/usr_intf/gscreen/gscreen.py:625 +msgid "No MAX_VELOCITY found in [TRAJ] of the INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60031 +#: src/emc/usr_intf/gscreen/gscreen.py:638 +#, python-format msgid "" -" Motor Encoder Test\n" -"Warning limits switches \n" -" Will not be obeyed" +"No DEFAULT_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60067 -#: src/emc/usr_intf/pncconf/pncconf.glade:60766 -#: src/emc/usr_intf/pncconf/pncconf.glade:61859 -#: src/emc/usr_intf/pncconf/pncconf.glade:62952 -#: src/emc/usr_intf/pncconf/pncconf.glade:64045 -#: src/emc/usr_intf/pncconf/pncconf.glade:65025 -#, fuzzy -msgid "Invert Motor" -msgstr "Invertovan" - -#: src/emc/usr_intf/pncconf/pncconf.glade:60083 -#: src/emc/usr_intf/pncconf/pncconf.glade:60782 -#: src/emc/usr_intf/pncconf/pncconf.glade:61875 -#: src/emc/usr_intf/pncconf/pncconf.glade:62968 -#: src/emc/usr_intf/pncconf/pncconf.glade:64061 -#: src/emc/usr_intf/pncconf/pncconf.glade:65040 -#, fuzzy -msgid "Invert Encoder" -msgstr "Invertovana slika" - -#: src/emc/usr_intf/pncconf/pncconf.glade:60100 -msgid "Enable Amp" +#: src/emc/usr_intf/gscreen/gscreen.py:649 +#, python-format +msgid "" +"No MAX_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60114 -msgid "Reset Encoder" +#: src/emc/usr_intf/gscreen/gscreen.py:657 +msgid "No MAX_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60142 -#, fuzzy -msgid "Encoder Scale:" -msgstr "END" - -#: src/emc/usr_intf/pncconf/pncconf.glade:60153 -#, fuzzy -msgid "Dac Offset:" -msgstr "Test %s-ose" +#: src/emc/usr_intf/gscreen/gscreen.py:663 +msgid "No MIN_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60243 -msgid "Fast Dac Speed" +#: src/emc/usr_intf/gscreen/gscreen.py:669 +msgid "No MAX_FEED_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60258 -msgid "Slow Dac Speed" +#: src/emc/usr_intf/gscreen/gscreen.py:674 +msgid "This screen will be orientated for Lathe options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60407 -#: src/emc/usr_intf/pncconf/pncconf.glade:61503 -#: src/emc/usr_intf/pncconf/pncconf.glade:62596 -#: src/emc/usr_intf/pncconf/pncconf.glade:63689 -#: src/emc/usr_intf/pncconf/pncconf.glade:64788 -msgid "mm/minute" +#: src/emc/usr_intf/gscreen/gscreen.py:727 +msgid "CYCLE_TIME in [DISPLAY] of INI file is missing: defaulting to 100ms" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60441 -#: src/emc/usr_intf/pncconf/pncconf.glade:61536 -#: src/emc/usr_intf/pncconf/pncconf.glade:62629 -#: src/emc/usr_intf/pncconf/pncconf.glade:63722 -#: src/emc/usr_intf/pncconf/pncconf.glade:64821 -msgid "mm/minute^2" +#: src/emc/usr_intf/gscreen/gscreen.py:730 +msgid "CYCLE_TIME in [DISPLAY] of INI file is too small: defaulting to 100ms" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60550 -#: src/emc/usr_intf/pncconf/pncconf.glade:61644 -#: src/emc/usr_intf/pncconf/pncconf.glade:62737 -#: src/emc/usr_intf/pncconf/pncconf.glade:64930 -msgid "Enable" +#: src/emc/usr_intf/gscreen/gscreen.py:732 +#, python-format +msgid "timeout %d" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60600 -#: src/emc/usr_intf/pncconf/pncconf.glade:61693 -#: src/emc/usr_intf/pncconf/pncconf.glade:62786 -#: src/emc/usr_intf/pncconf/pncconf.glade:63879 -#: src/emc/usr_intf/pncconf/pncconf.glade:65139 -#, fuzzy -msgid "Seconds" -msgstr "Skundarni" +#: src/emc/usr_intf/gscreen/gscreen.py:1001 +msgid "" +"**** WARNING GSCREEN: could not understand the window geometry info in " +"hidden preference file" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60907 -#: src/emc/usr_intf/pncconf/pncconf.glade:62212 -#: src/emc/usr_intf/pncconf/pncconf.glade:63093 -#: src/emc/usr_intf/pncconf/pncconf.glade:64398 -#: src/emc/usr_intf/pncconf/pncconf.glade:65255 -msgid "DeadBand" +#: src/emc/usr_intf/gscreen/gscreen.py:1089 +msgid "Control powered up and initialized" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61089 -#: src/emc/usr_intf/pncconf/pncconf.glade:61380 -#: src/emc/usr_intf/pncconf/pncconf.glade:62030 -#: src/emc/usr_intf/pncconf/pncconf.glade:62401 -#: src/emc/usr_intf/pncconf/pncconf.glade:63275 -#: src/emc/usr_intf/pncconf/pncconf.glade:63562 -#: src/emc/usr_intf/pncconf/pncconf.glade:64216 -#: src/emc/usr_intf/pncconf/pncconf.glade:64587 -#: src/emc/usr_intf/pncconf/pncconf.glade:65431 -#: src/emc/usr_intf/pncconf/pncconf.glade:65718 -msgid "Original" +#: src/emc/usr_intf/gscreen/gscreen.py:1264 +msgid "Cycle start pressed in AUTO mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61138 -#: src/emc/usr_intf/pncconf/pncconf.glade:61981 -#: src/emc/usr_intf/pncconf/pncconf.glade:63324 -#: src/emc/usr_intf/pncconf/pncconf.glade:64167 -#: src/emc/usr_intf/pncconf/pncconf.glade:65480 -msgid "D:" +#: src/emc/usr_intf/gscreen/gscreen.py:1267 +msgid "Cycle start pressed in MDI mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61148 -#: src/emc/usr_intf/pncconf/pncconf.glade:61971 -#: src/emc/usr_intf/pncconf/pncconf.glade:63334 -#: src/emc/usr_intf/pncconf/pncconf.glade:64157 -#: src/emc/usr_intf/pncconf/pncconf.glade:65490 -msgid "I:" +#: src/emc/usr_intf/gscreen/gscreen.py:1290 +#, python-format +msgid "Please change to tool # %s, then click OK." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61158 -#: src/emc/usr_intf/pncconf/pncconf.glade:61961 -#: src/emc/usr_intf/pncconf/pncconf.glade:63344 -#: src/emc/usr_intf/pncconf/pncconf.glade:64147 -#: src/emc/usr_intf/pncconf/pncconf.glade:65500 -msgid "P:" +#: src/emc/usr_intf/gscreen/gscreen.py:1291 +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +#: src/emc/usr_intf/gscreen/gscreen.py:1789 +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2849 +msgid "INFO:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61168 -#: src/emc/usr_intf/pncconf/pncconf.glade:61392 -#: src/emc/usr_intf/pncconf/pncconf.glade:61951 -#: src/emc/usr_intf/pncconf/pncconf.glade:62389 -#: src/emc/usr_intf/pncconf/pncconf.glade:63354 -#: src/emc/usr_intf/pncconf/pncconf.glade:63574 -#: src/emc/usr_intf/pncconf/pncconf.glade:64137 -#: src/emc/usr_intf/pncconf/pncconf.glade:64575 -#: src/emc/usr_intf/pncconf/pncconf.glade:65510 -#: src/emc/usr_intf/pncconf/pncconf.glade:65730 -msgid "Current" +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +msgid "Can't start spindle manually while MDI busy" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61185 -#: src/emc/usr_intf/pncconf/pncconf.glade:62278 -#: src/emc/usr_intf/pncconf/pncconf.glade:63371 -#: src/emc/usr_intf/pncconf/pncconf.glade:64464 -#: src/emc/usr_intf/pncconf/pncconf.glade:65527 -msgid "PID Tuning" +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +msgid "can't start spindle manually in Auto mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61370 -#: src/emc/usr_intf/pncconf/pncconf.glade:62413 -#: src/emc/usr_intf/pncconf/pncconf.glade:63552 -#: src/emc/usr_intf/pncconf/pncconf.glade:64599 -#: src/emc/usr_intf/pncconf/pncconf.glade:65708 -#, fuzzy -msgid "Direction Setup:" -msgstr "Zeit zwischen Richtungs_wechsel und Schritt:" +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +msgid "No direction selected for spindle" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61404 -#: src/emc/usr_intf/pncconf/pncconf.glade:62379 -#: src/emc/usr_intf/pncconf/pncconf.glade:63586 -#: src/emc/usr_intf/pncconf/pncconf.glade:64565 -#: src/emc/usr_intf/pncconf/pncconf.glade:65742 +#: src/emc/usr_intf/gscreen/gscreen.py:1331 +#: src/emc/usr_intf/gscreen/gscreen.py:1333 #, fuzzy -msgid "Direction Hold:" -msgstr "Smer:" +msgid "Spindle Speed Preset Entry" +msgstr "Brzina obradnog motora (1/min)" -#: src/emc/usr_intf/pncconf/pncconf.glade:61414 -#: src/emc/usr_intf/pncconf/pncconf.glade:62369 -#: src/emc/usr_intf/pncconf/pncconf.glade:63596 -#: src/emc/usr_intf/pncconf/pncconf.glade:64555 -#: src/emc/usr_intf/pncconf/pncconf.glade:65752 +#: src/emc/usr_intf/gscreen/gscreen.py:1362 +#: src/emc/usr_intf/gscreen/gscreen.py:1367 #, fuzzy -msgid "Step Space:" -msgstr "Duzina _koraka:" +msgid "Manual Tool Index Entry" +msgstr "AXIS manuelna promena alata" -#: src/emc/usr_intf/pncconf/pncconf.glade:61424 -#: src/emc/usr_intf/pncconf/pncconf.glade:62359 -#: src/emc/usr_intf/pncconf/pncconf.glade:63606 -#: src/emc/usr_intf/pncconf/pncconf.glade:64545 -#: src/emc/usr_intf/pncconf/pncconf.glade:65762 -#, fuzzy -msgid "Step Time:" -msgstr "_Vreme koraka:" +#: src/emc/usr_intf/gscreen/gscreen.py:1489 +msgid "Entry dialog" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61439 -#: src/emc/usr_intf/pncconf/pncconf.glade:62528 -#: src/emc/usr_intf/pncconf/pncconf.glade:63621 -#: src/emc/usr_intf/pncconf/pncconf.glade:64714 -#: src/emc/usr_intf/pncconf/pncconf.glade:65777 -#, fuzzy -msgid "Step Timing" -msgstr "_Vreme koraka:" +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +msgid "Classicladder realtime component not detected" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:63830 -msgid "enable" +#: src/emc/usr_intf/gscreen/gscreen.py:1617 +msgid "ladder not available - is the realtime component loaded?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65798 +#: src/emc/usr_intf/gscreen/gscreen.py:1691 #, fuzzy -msgid "spindle" -msgstr "Obradni motor +" +msgid "Override Entry" +msgstr "Prekoraci ogranicenja" -#: src/emc/usr_intf/pncconf/pncconf.glade:65881 +#: src/emc/usr_intf/gscreen/gscreen.py:1719 #, fuzzy -msgid "Help Page" -msgstr "Testbereich:" +msgid "Machine powered on" +msgstr "apsolutna" -#: src/emc/usr_intf/pncconf/pncconf.glade:65911 -msgid "" -"X axis:\n" -"Total Travel = 10\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = 0\n" -"Pos Travel Distance = Total Travel - neg travel distance = 10\n" -"Home Position = Origin to Home Position distance = 6\n" -"\n" -"Y axis:\n" -"Total Travel = 8\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = -8\n" -"Pos Travel Distance = Total Travel - neg travel distance = 0\n" -"Home Position = Origin to Home Position distance = 0\n" -"\n" -"Z axis:\n" -"Total Travel = 12\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = -12\n" -"Pos Travel Distance = Total Travel - neg travel distance = 0\n" -"Home Position = Origin to Home Position distance = 0\n" -"\n" -"Note that the direction indicators on the top right show \n" -"movement of the TOOL and on the actual machine,\n" -"often it is the table that actually moves. In that case the \n" -"directions are opposite of shown.\n" -"\n" -"Note this is an example, Many other combinations are \n" -"possible" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:1724 +#, fuzzy +msgid "Machine Estopped!" +msgstr "Apsol_utna Pozicija" -#: src/emc/usr_intf/pncconf/pncconf.glade:65951 -msgid "Mill" +#: src/emc/usr_intf/gscreen/gscreen.py:1727 +msgid "Calculator" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65970 -msgid "" -"Total Travel = 4 + 6 = 10\n" -"Z Home Offset = Origin to Home Switch distance = 10\n" -"Z Neg Travel Distance = Origin to neg limit distance = 0\n" -"Z Pos Travel Distance = Total Travel - neg travel distance = 10\n" -"Z Home Position = Origin to Home Position distance = 4\n" -"\n" -"X axis would be similar but not shown fully for clarity.\n" -"This is just a sample reference other switch combinations are\n" -"possible." +#: src/emc/usr_intf/gscreen/gscreen.py:1857 +#, python-format +msgid "Axes %s are homed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65994 -msgid "Lathe" +#: src/emc/usr_intf/gscreen/gscreen.py:1864 +msgid "All the axes have been homed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66010 -msgid "Diagram" +#: src/emc/usr_intf/gscreen/gscreen.py:1874 +#, python-format +msgid "There are unhomed axes: %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66043 -#, fuzzy -msgid "Output" -msgstr "Neupotrebljen" +#: src/emc/usr_intf/gscreen/gscreen.py:1879 +#, fuzzy, python-format +msgid "Program loaded: %s" +msgstr "Puziraj program" -#: src/emc/usr_intf/pncconf/pncconf.glade:66123 +#: src/emc/usr_intf/gscreen/gscreen.py:1977 #, fuzzy -msgid "Motor steps per revolution:" -msgstr "_Broj koraka po okretaju motora" +msgid "Manual Spindle Control" +msgstr "Index. sig. enkodera obr.mot." -#: src/emc/usr_intf/pncconf/pncconf.glade:66173 -#: src/emc/usr_intf/pncconf/pncconf.glade:66459 -#, fuzzy -msgid "Leadscrew Metric Pitch" -msgstr "_korak navojnog vretena:" +#: src/emc/usr_intf/gscreen/gscreen.py:2034 +msgid "Keyboard" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66186 -msgid "Microstep Multiplication Factor:" +#: src/emc/usr_intf/gscreen/gscreen.py:2067 +msgid "Error with launching 'Onboard' on-screen keyboard program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66199 -#: src/emc/usr_intf/pncconf/pncconf.glade:66481 -msgid "Worm turn ratio (Input:Outputl)" +#: src/emc/usr_intf/gscreen/gscreen.py:2215 +#, python-format +msgid "**** GSCREEN INFO: Overriding internal signal call to %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66212 -#, fuzzy -msgid "Pulley teeth (motor:Leadscrew):" -msgstr "_Odnos (motor:navojno vreteno):" +#: src/emc/usr_intf/gscreen/gscreen.py:2643 +msgid " Zero Origin" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66356 -msgid "TPI " +#: src/emc/usr_intf/gscreen/gscreen.py:2644 +msgid "Offset Origin" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66372 -msgid "Step Motor Scale" +#: src/emc/usr_intf/gscreen/gscreen.py:2659 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing text or type) " +"in INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66472 -#, fuzzy -msgid "Pulley teeth (encoder:Leadscrew):" -msgstr "_Odnos (motor:navojno vreteno):" +#: src/emc/usr_intf/gscreen/gscreen.py:2661 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing pinname) in " +"INI File [DISPLAY] section" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:2663 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing boldtext) in " +"INI File [DISPLAY] section" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:2667 +#, python-format +msgid "" +"**** Gscreen ERROR: invalid message type (%s)in INI File [DISPLAY] section" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:2699 +msgid "Dialog error - Is the dialog handler missing from the handler file?" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66537 +#: src/emc/usr_intf/gscreen/gscreen.py:2701 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3540 #, fuzzy -msgid "Encoder lines per revolution:" -msgstr "Zyklen pro Umdrehung:" +msgid "Manual Toolchange" +msgstr "AXIS manuelna promena alata" -#: src/emc/usr_intf/pncconf/pncconf.glade:66547 -msgid "X 4 = Pulses/Rev" +#: src/emc/usr_intf/gscreen/gscreen.py:2703 +#: src/emc/usr_intf/gmoccapy/dialogs.py:94 +#: src/emc/usr_intf/gmoccapy/dialogs.py:107 +#: src/emc/usr_intf/gmoccapy/dialogs.py:119 +msgid "Operator Message" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66651 -msgid "TPI" +#: src/emc/usr_intf/gscreen/gscreen.py:2737 +#: src/emc/usr_intf/gscreen/gscreen.py:2741 +#: src/emc/usr_intf/gmoccapy/dialogs.py:155 +#: src/emc/usr_intf/gmoccapy/dialogs.py:159 +msgid "Restart Entry" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66667 -msgid "Encoder Scale" +#: src/emc/usr_intf/gscreen/gscreen.py:2752 +#: src/emc/usr_intf/gmoccapy/dialogs.py:173 +msgid "Enter" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:2774 +#, python-format +msgid "Ready to Restart program from line %d" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66711 +#: src/emc/usr_intf/gscreen/gscreen.py:2807 #, fuzzy -msgid "motor steps per unit:" -msgstr "_Broj koraka po okretaju motora" +msgid "Invalid embeded tab configuration" +msgstr "ukljuci korisnicku _HAL konfiguraciju" -#: src/emc/usr_intf/pncconf/pncconf.glade:66721 -msgid "encoder pulses per unit:" +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +msgid "Can't jog multiple axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66756 -msgid " " +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +msgid "No axis selected to jog" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66770 -msgid "Calculated Scale" +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +msgid "No axis selected to move" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66848 -msgid "xmaxrpm" +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +msgid "Can't home multiple axis - select HOME ALL instead" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66864 -msgid "RPM" +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +msgid "No axis selected to home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66877 -#, fuzzy -msgid "Motor RPM at max speed:" -msgstr "Ucestanost pri maksimalnoj brzini:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:66921 -#, fuzzy -msgid "Calculated Axis SCALE:" -msgstr "Skala za osu" +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +msgid "Can't unhome multiple axis" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66934 -msgid "Khz" +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +msgid "No axis selected to unhome" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66949 -msgid "sec" +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +msgid "No axis selected for origin zeroing" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67049 -#, fuzzy -msgid "Distance to acheave max speed:" -msgstr "razdaljina do maksimalne brzine:" +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +msgid "No axis selected for origin touch-off" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67077 -#, fuzzy -msgid "Resolution:" -msgstr "Zyklen pro Umdrehung:" +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +msgid "Can't tool touch-off multiple axes" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67105 -msgid "mm / encoder pulse" +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +msgid "No axis selected for tool touch-off" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67123 +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#: src/emc/usr_intf/gscreen/gscreen.py:3375 #, fuzzy -msgid "Motion Data" -msgstr "Homin_g" +msgid "Error Message" +msgstr "Greska pri snimanju datoteke" + +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#, python-format +msgid "Tool editor error - is the %s editor available?" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67151 +#: src/emc/usr_intf/gscreen/gscreen.py:3377 +#: src/emc/usr_intf/gscreen/gscreen.py:3379 #, fuzzy -msgid "gtk-cancel" -msgstr "Odustani" +msgid "Message" +msgstr "AXIS poruka" -#: src/emc/task/emctaskmain.cc:467 src/emc/task/emctaskmain.cc:500 -#, fuzzy, c-format -msgid "%s exceeds +X limit" -msgstr "Program prevazilazi granicne vrednosti masine" +#: src/emc/usr_intf/gscreen/gscreen.py:3409 +#, python-format +msgid "%d RPM" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:48 +#: src/emc/usr_intf/gscreen/gscreen.glade:59 +#: src/emc/usr_intf/gscreen/gscreen.glade:135 +#: src/emc/usr_intf/gscreen/gscreen.glade:176 +#: src/emc/usr_intf/gscreen/gscreen.glade:187 +#: src/emc/usr_intf/gscreen/gscreen.glade:264 +#: src/emc/usr_intf/gscreen/gscreen.glade:306 +#: src/emc/usr_intf/gscreen/gscreen.glade:317 +#: src/emc/usr_intf/gscreen/gscreen.glade:393 +#: src/emc/usr_intf/gscreen/gscreen.glade:434 +#: src/emc/usr_intf/gscreen/gscreen.glade:445 +#: src/emc/usr_intf/gscreen/gscreen.glade:521 +#: src/emc/usr_intf/gscreen/gscreen.glade:562 +#: src/emc/usr_intf/gscreen/gscreen.glade:573 +#: src/emc/usr_intf/gscreen/gscreen.glade:649 +#: src/emc/usr_intf/gscreen/gscreen.glade:690 +#: src/emc/usr_intf/gscreen/gscreen.glade:701 +#: src/emc/usr_intf/gscreen/gscreen.glade:777 +#: src/emc/usr_intf/gscreen/gscreen.glade:818 +#: src/emc/usr_intf/gscreen/gscreen.glade:829 +#: src/emc/usr_intf/gscreen/gscreen.glade:905 +#: src/emc/usr_intf/gscreen/gscreen.glade:946 +#: src/emc/usr_intf/gscreen/gscreen.glade:957 +#: src/emc/usr_intf/gscreen/gscreen.glade:1033 +#: src/emc/usr_intf/gscreen/gscreen.glade:1074 +#: src/emc/usr_intf/gscreen/gscreen.glade:1085 +#: src/emc/usr_intf/gscreen/gscreen.glade:1161 +msgid "0000.0000" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:73 +#: src/emc/usr_intf/gscreen/gscreen.glade:201 +#: src/emc/usr_intf/gscreen/gscreen.glade:331 +#: src/emc/usr_intf/gscreen/gscreen.glade:459 +#: src/emc/usr_intf/gscreen/gscreen.glade:587 +#: src/emc/usr_intf/gscreen/gscreen.glade:715 +#: src/emc/usr_intf/gscreen/gscreen.glade:843 +#: src/emc/usr_intf/gscreen/gscreen.glade:971 +#: src/emc/usr_intf/gscreen/gscreen.glade:1099 +msgid "REL" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:99 +#: src/emc/usr_intf/gscreen/gscreen.glade:227 +#: src/emc/usr_intf/gscreen/gscreen.glade:357 +#: src/emc/usr_intf/gscreen/gscreen.glade:485 +#: src/emc/usr_intf/gscreen/gscreen.glade:613 +#: src/emc/usr_intf/gscreen/gscreen.glade:741 +#: src/emc/usr_intf/gscreen/gscreen.glade:869 +#: src/emc/usr_intf/gscreen/gscreen.glade:997 +#: src/emc/usr_intf/gscreen/gscreen.glade:1125 +msgid "ABS" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:630 +msgid "B" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:758 +msgid "C" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:886 +msgid "U" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1014 +msgid "V" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1298 +#, fuzzy +msgid "G code" +msgstr "END" -#: src/emc/task/emctaskmain.cc:472 src/emc/task/emctaskmain.cc:505 -#, fuzzy, c-format -msgid "%s exceeds +Y limit" -msgstr "Program prevazilazi granicne vrednosti masine" +#: src/emc/usr_intf/gscreen/gscreen.glade:1392 +msgid "G Codes Active" +msgstr "" -#: src/emc/task/emctaskmain.cc:477 src/emc/task/emctaskmain.cc:510 -#, fuzzy, c-format -msgid "%s exceeds +Z limit" -msgstr "Program prevazilazi granicne vrednosti masine" +#: src/emc/usr_intf/gscreen/gscreen.glade:1451 +msgid "MV:100%" +msgstr "" -#: src/emc/task/emctaskmain.cc:482 src/emc/task/emctaskmain.cc:515 -#, fuzzy, c-format -msgid "%s exceeds -X limit" -msgstr "Program prevazilazi granicne vrednosti masine" +#: src/emc/usr_intf/gscreen/gscreen.glade:1470 +#, fuzzy +msgid " Mist" +msgstr "Kompr.vazduh" -#: src/emc/task/emctaskmain.cc:487 src/emc/task/emctaskmain.cc:520 -#, fuzzy, c-format -msgid "%s exceeds -Y limit" -msgstr "Program prevazilazi granicne vrednosti masine" +#: src/emc/usr_intf/gscreen/gscreen.glade:1481 +#, fuzzy +msgid " Flood " +msgstr "Emulzija" -#: src/emc/task/emctaskmain.cc:492 src/emc/task/emctaskmain.cc:525 -#, fuzzy, c-format -msgid "%s exceeds -Z limit" -msgstr "Program prevazilazi granicne vrednosti masine" +#: src/emc/usr_intf/gscreen/gscreen.glade:1533 +#, fuzzy +msgid " At Speed " +msgstr "Brzina obradnog motora (1/min)" -#: src/emc/task/emctaskmain.cc:853 -#, c-format -msgid "" -"command (%s) cannot be executed until the machine is out of E-stop and " -"turned on" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1546 +#, fuzzy +msgid " Jog mode" +msgstr "Joint rezim" -#: src/emc/task/emctaskmain.cc:973 -#, c-format -msgid "can't do that (%s) in manual mode" +#: src/emc/usr_intf/gscreen/gscreen.glade:1600 +msgid "10 DPM" msgstr "" -#: src/emc/task/emctaskmain.cc:1072 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter idle" +#: src/emc/usr_intf/gscreen/gscreen.glade:1616 +msgid "10 Ipm" msgstr "" -#: src/emc/task/emctaskmain.cc:1132 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter reading" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1690 +#, fuzzy +msgid "Status" +msgstr "Homin_g" -#: src/emc/task/emctaskmain.cc:1216 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter paused" +#: src/emc/usr_intf/gscreen/gscreen.glade:1715 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2510 +msgid "" +"Search\n" +" Text:" msgstr "" -#: src/emc/task/emctaskmain.cc:1278 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter waiting" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1766 +#, fuzzy +msgid "Mode" +msgstr "Homin_g" -#: src/emc/task/emctaskmain.cc:1370 -#, c-format -msgid "can't do that (%s) in MDI mode" +#: src/emc/usr_intf/gscreen/gscreen.glade:1782 +msgid "Main Level" msgstr "" -#: src/emc/task/emctaskmain.cc:2015 -msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" +#: src/emc/usr_intf/gscreen/gscreen.glade:1823 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3678 +msgid "Themes" msgstr "" -#: src/emc/task/emctaskmain.cc:2084 -msgid "Can't issue MDI command when not homed" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1847 +#, fuzzy +msgid "Relative Text Color" +msgstr "Rela_tivna pozicija" -#: src/emc/task/emctaskmain.cc:2089 -msgid "Must be in MDI mode to issue MDI command" +#: src/emc/usr_intf/gscreen/gscreen.glade:1895 +msgid "DTG Text Color" msgstr "" -#: src/emc/task/emctaskmain.cc:2151 -msgid "Can't run a program when not homed" +#: src/emc/usr_intf/gscreen/gscreen.glade:1916 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3710 +msgid "Warning Audio" msgstr "" -#: src/emc/rs274ngc/interp_arc.cc:108 src/emc/rs274ngc/rs274ngc_return.hh:160 -msgid "Zero radius arc" +#: src/emc/usr_intf/gscreen/gscreen.glade:1926 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3723 +msgid "Alert Audio" msgstr "" -#: src/emc/rs274ngc/interp_arc.cc:112 src/emc/rs274ngc/interp_arc.cc:279 -#, c-format -msgid "" -"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " -"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " -"rel_err=%.4f%%" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1947 +#, fuzzy +msgid "Grid Size" +msgstr "Velicina:" -#: src/emc/rs274ngc/interp_check.cc:90 -msgid "G4 not allowed with G2 or G3 because they both use P" +#: src/emc/usr_intf/gscreen/gscreen.glade:1986 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4119 +msgid "Starting RPM" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:93 -msgid "Line with G10 does not have L1, L10, L11, L2, or L20" +#: src/emc/usr_intf/gscreen/gscreen.glade:2015 +msgid "Metric\n" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:94 -msgid "P value not an integer with G10" +#: src/emc/usr_intf/gscreen/gscreen.glade:2030 +msgid "" +" Display\n" +"Aux Screen" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:95 -msgid "P value out of range (0-9) with G10 L2 or L20" +#: src/emc/usr_intf/gscreen/gscreen.glade:2045 +msgid "" +"Diameter\n" +" Mode" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:96 -msgid "P value out of range with G10 L1 or G10 L10" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2062 +#: src/emc/usr_intf/gscreen/gscreen.glade:3096 +#, fuzzy +msgid "" +" Show\n" +"Offsets" +msgstr "_Prikazi rastojanja" -#: src/emc/rs274ngc/interp_check.cc:100 -msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." +#: src/emc/usr_intf/gscreen/gscreen.glade:2079 +msgid "" +"Show\n" +"DTG" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:258 -msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2096 +msgid "" +" Gscreen\n" +"Fullscreen" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:264 -msgid "E word with no G76, M66, M67 or M68 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2118 +msgid "" +" On M7 Use\n" +"Aux Coolant" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:269 -msgid "H word with no G43 or G76 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2131 +msgid "" +" On M8 Use\n" +"Aux Coolant" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:275 -msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2144 +msgid "Hide Pointer" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:281 -msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2156 +msgid "" +" Desktop\n" +"Notification" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:287 -msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2228 +#: src/emc/usr_intf/gscreen/gscreen.glade:2368 +msgid "Debug" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:297 +#: src/emc/usr_intf/gscreen/gscreen.glade:2263 +#, fuzzy +msgid "Alarm History" +msgstr "Istorija:" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2281 msgid "" -"L word with no G10, cutter compensation, canned cycle, digital/analog input, " -"or NURBS code" +" Launch\n" +"Halshow" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:309 +#: src/emc/usr_intf/gscreen/gscreen.glade:2293 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6449 +#, fuzzy +msgid "Calibration" +msgstr "_Kalibracija" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2304 +#, fuzzy +msgid "Halmeter" +msgstr "H_AL-Metar..." + +#: src/emc/usr_intf/gscreen/gscreen.glade:2315 msgid "" -"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " -"M53 M62 M63 M64 M65 M66 or user M code to use it" +"linuxcnc\n" +" Status" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:314 -msgid "P value not an integer with M19 G2 or G3" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2327 +#, fuzzy +msgid "Halscope" +msgstr "HA_L-Scope..." -#: src/emc/rs274ngc/interp_check.cc:316 -msgid "P value must be 0,1,or 2 with M19" +#: src/emc/usr_intf/gscreen/gscreen.glade:2338 +msgid "Ladder" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:318 -msgid "P value should be 1 or greater with G2 or G3" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2386 +#, fuzzy +msgid "Tooleditor" +msgstr "_Ladder-Editor" -#: src/emc/rs274ngc/interp_check.cc:326 +#: src/emc/usr_intf/gscreen/gscreen.glade:2404 +#, fuzzy msgid "" -"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " -"code that uses it" -msgstr "" +"Offset\n" +" Page" +msgstr "Test %s-ose" -#: src/emc/rs274ngc/interp_check.cc:336 -msgid "R value must be within 0..360 with M19" +#: src/emc/usr_intf/gscreen/gscreen.glade:2572 +#: src/emc/usr_intf/gscreen/gscreen.glade:2749 +#: src/emc/usr_intf/gscreen/gscreen.glade:3156 +msgid "\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:138 -msgid "You must specify both X and Y coordinates for Control Points" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2584 +#, fuzzy +msgid "Tool Setting" +msgstr "Homin_g" -#: src/emc/rs274ngc/interp_convert.cc:141 -msgid "Can specify P without X and Y only for the first control point" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2648 +#, fuzzy +msgid "" +"Single\n" +" Step" +msgstr "Duzina _koraka:" -#: src/emc/rs274ngc/interp_convert.cc:144 -msgid "Must specify positive weight P for every Control Point" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2661 +#, fuzzy +msgid "" +"Run At\n" +" Line" +msgstr "Vreme:" -#: src/emc/rs274ngc/interp_convert.cc:147 -msgid "Cannot make a NURBS with 0 feedrate" +#: src/emc/usr_intf/gscreen/gscreen.glade:2673 +msgid "" +"Change \n" +" View" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:182 -msgid "Cannot use G5.3 without G5.2 first" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2760 +#, fuzzy +msgid "Homing\n" +msgstr "Homin_g" -#: src/emc/rs274ngc/interp_convert.cc:183 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:2781 +#, fuzzy msgid "" -"You must specify a number of control points at least equal to the order L = " -"%d" -msgstr "" +"Ignore\n" +"Limits" +msgstr "Svi granicni prek." -#: src/emc/rs274ngc/interp_convert.cc:212 -msgid "Cannot convert spline with cutter radius compensation" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2810 +#, fuzzy +msgid "" +" Set\n" +"Override" +msgstr "Prekoracenje posmaka:" -#: src/emc/rs274ngc/interp_convert.cc:222 -msgid "Splines must be in the XY plane" +#: src/emc/usr_intf/gscreen/gscreen.glade:2824 +msgid "Graphics\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:227 -msgid "Splines may not have motion in Z, A, B, or C" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2838 +#, fuzzy +msgid "" +"Menu\n" +"Level" +msgstr "_Debug Level..." -#: src/emc/rs274ngc/interp_convert.cc:231 -msgid "Must specify both I and J with G5.1" +#: src/emc/usr_intf/gscreen/gscreen.glade:2851 +msgid "" +" Launch\n" +"Keyboard" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:250 -msgid "Must specify both I and J, or neither" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2868 +#, fuzzy +msgid "Select Buttons" +msgstr "Homin_g" -#: src/emc/rs274ngc/interp_convert.cc:261 -msgid "Must specify both P and Q with G5" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2955 +#, fuzzy +msgid "" +"Unhome \n" +" All" +msgstr "HOME sve ose" -#: src/emc/rs274ngc/interp_convert.cc:362 +#: src/emc/usr_intf/gscreen/gscreen.glade:2967 +#, fuzzy msgid "" -"The move just after exiting cutter compensation mode must be straight, not " -"an arc" -msgstr "" +"Unhome\n" +" Axis" +msgstr "HOME _%s-osa" -#: src/emc/rs274ngc/interp_convert.cc:370 -msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2979 +#: src/emc/usr_intf/gscreen/gscreen.glade:3084 +#, fuzzy +msgid "" +"Toggle\n" +"Readout" +msgstr "Uklj. Isklj. Emulzija" -#: src/emc/rs274ngc/interp_convert.cc:382 -#: src/emc/rs274ngc/interp_convert.cc:4266 -msgid "Cannot feed with zero spindle speed in feed per rev mode" +#: src/emc/usr_intf/gscreen/gscreen.glade:3004 +msgid "" +"Jogging\n" +" Mode" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:393 -#: src/emc/rs274ngc/interp_convert.cc:399 -#: src/emc/rs274ngc/interp_convert.cc:408 -#: src/emc/rs274ngc/interp_convert.cc:414 -#: src/emc/rs274ngc/interp_convert.cc:423 -#: src/emc/rs274ngc/interp_convert.cc:429 -#, c-format -msgid "%c word missing in absolute center arc" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3016 +#, fuzzy +msgid "" +"coordinate\n" +" System" +msgstr "Koordinatni sistem:" -#: src/emc/rs274ngc/interp_convert.cc:649 +#: src/emc/usr_intf/gscreen/gscreen.glade:3060 msgid "" -"Radius of cutter compensation entry arc is not greater than the tool radius" +"Index\n" +" Tool" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:868 -#: src/emc/rs274ngc/interp_convert.cc:878 src/emc/rs274ngc/interp_queue.cc:592 +#: src/emc/usr_intf/gscreen/gscreen.glade:3072 +#, fuzzy msgid "" -"Arc move in concave corner cannot be reached by the tool without gouging" -msgstr "" +"Spindle\n" +"Controls" +msgstr "Ctrl-M" -#: src/emc/rs274ngc/interp_convert.cc:904 -msgid "Arc to arc motion is invalid because the arcs have the same center" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3195 +#, fuzzy +msgid "Open" +msgstr "_Otvori..." -#: src/emc/rs274ngc/interp_convert.cc:907 +#: src/emc/usr_intf/gscreen/gscreen.glade:3205 msgid "" -"Arc to arc motion makes a corner the compensated tool can't fit in without " -"gouging" +" Block\n" +"Delete" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1036 -#: src/emc/rs274ngc/interp_convert.cc:1037 -#: src/emc/rs274ngc/interp_convert.cc:1038 -#: src/emc/rs274ngc/interp_convert.cc:3733 -#: src/emc/rs274ngc/interp_convert.cc:3736 -#: src/emc/rs274ngc/interp_convert.cc:3739 src/emc/rs274ngc/interp_find.cc:97 -#, c-format -msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" +#: src/emc/usr_intf/gscreen/gscreen.glade:3217 +msgid "" +"Optional\n" +" Stop" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1494 -msgid "Cannot change control mode with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3229 +msgid "" +" Full\n" +"View" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1607 -msgid "Cannot change coordinate systems with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3265 +msgid "" +"Next\n" +" Tab" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1851 -#, c-format -msgid "G%d.1 with no D word" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3285 +#, fuzzy +msgid "" +" Feed\n" +"Override" +msgstr "Prekoracenje posmaka:" -#: src/emc/rs274ngc/interp_convert.cc:1854 -#, c-format -msgid "G%d.1 with L word, but plane is not G18" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3298 +#, fuzzy +msgid "" +"Spindle\n" +"Override" +msgstr "Prekoracenje brzine obr.motora:" -#: src/emc/rs274ngc/interp_convert.cc:1865 -#, c-format -msgid "G%d requires D word to be a whole number" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3311 +#, fuzzy +msgid "" +" Rapid\n" +"Override" +msgstr "Prekoracenje brzine obr.motora:" -#: src/emc/rs274ngc/interp_convert.cc:1872 -#, c-format -msgid "G%d with lathe tool, but plane is not G18" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3332 +#, fuzzy +msgid "" +" Jog\n" +"Speed" +msgstr "JOG brzina:" -#: src/emc/rs274ngc/interp_convert.cc:2271 -msgid "Cannot set reference point with cutter compensation in effect" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3345 +#, fuzzy +msgid "" +" Jog\n" +"Increments" +msgstr "Izaberi JOG inkrement" -#: src/emc/rs274ngc/interp_convert.cc:2786 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:3361 msgid "" -"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" +"Adjust\n" +"Rotary" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2787 -#, c-format -msgid "BUG: restore from level %d !?" +#: src/emc/usr_intf/gscreen/gscreen.glade:3383 +msgid "" +"Change\n" +" View" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2788 -#, c-format -msgid "BUG: restore to level %d !?" +#: src/emc/usr_intf/gscreen/gscreen.glade:3431 +msgid "" +" Pan\n" +"Vertical" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2807 -#, c-format -msgid "M7x: restore_settings G20/G21 failed: '%s'" +#: src/emc/usr_intf/gscreen/gscreen.glade:3444 +msgid "" +" Pan\n" +"Horizontal" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2819 -#, c-format -msgid "M7x: restore_settings failed executing: '%s': %s" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3457 +#, fuzzy +msgid "" +" Rotate\n" +"Horiontal" +msgstr "_Referentna pozicija:" -#: src/emc/rs274ngc/interp_convert.cc:2885 -msgid "Cannot set motion output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3470 +msgid "" +" Rotate\n" +"Vertical" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2886 -msgid "No valid P word with M62" +#: src/emc/usr_intf/gscreen/gscreen.glade:3491 +msgid "" +"Search\n" +" Bwd" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2890 -msgid "Cannot set motion digital output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3503 +msgid "" +"Search\n" +" Fwd" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2891 -msgid "No valid P word with M63" +#: src/emc/usr_intf/gscreen/gscreen.glade:3561 +#, fuzzy +msgid "" +" Reload\n" +"Program" +msgstr "Ponovo ucitaj program" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3604 +msgid "" +" Clear\n" +"status" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2895 -#: src/emc/rs274ngc/interp_convert.cc:2900 -msgid "Cannot set auxiliary digital output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3634 +msgid "G54" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2896 -msgid "No valid P word with M64" +#: src/emc/usr_intf/gscreen/gscreen.glade:3650 +msgid "calc" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2901 -msgid "No valid P word with M65" +#: src/emc/usr_intf/gscreen/gscreen.glade:3725 +msgid "test" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2931 -msgid "invalid P-word with M66" +#: src/emc/usr_intf/gscreen/gscreen.glade:3728 +msgid "test2" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2946 -msgid "Cannot wait for digital input with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3778 +msgid "Data Entry" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2958 -msgid "Cannot wait for analog input with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3805 +#, fuzzy +msgid "Calculator Entry" +msgstr "Homin_g" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3894 +#, fuzzy +msgid "Program Restart" +msgstr "_Prikazi rastojanja" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3909 +msgid "" +"Highlighting the run-at-line with the\n" +"up / down buttons or entering the line\n" +"directly." msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2973 -msgid "Cannot set motion analog output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3923 +msgid "" +"Line\n" +" Up" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2974 -msgid "Invalid analog index with M67" +#: src/emc/usr_intf/gscreen/gscreen.glade:3946 +msgid "" +" Line\n" +"Down" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2980 -msgid "Cannot set auxiliary analog output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:4028 +msgid "S 1000" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2981 -msgid "Invalid analog index with M68" +#: src/emc/usr_intf/gscreen/gscreen.glade:4098 +msgid " FWD" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3012 -msgid "Need non-negative Q-word to specify tool number with M61" +#: src/emc/usr_intf/gscreen/gscreen.glade:4133 +msgid " REV" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3087 -msgid "Q word with M19 requires a value > 0" +#: src/emc/usr_intf/gscreen/gscreen2.glade:35 +msgid "screen 2" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3115 -msgid "Cannot restore context from invalid stack frame - missing M70/M73?" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:403 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:884 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:923 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:934 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:949 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1099 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1102 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1156 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1163 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1166 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2148 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2157 +msgid "**** GMOCCAPY INFO ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3156 -#: src/emc/rs274ngc/interp_convert.cc:3173 -#: src/emc/rs274ngc/interp_convert.cc:3188 -#: src/emc/rs274ngc/interp_convert.cc:3202 -#: src/emc/rs274ngc/interp_convert.cc:3216 -msgid "Cannot enable overrides with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:404 +msgid "**** no valid probe config in INI File ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3163 -#: src/emc/rs274ngc/interp_convert.cc:3178 -#: src/emc/rs274ngc/interp_convert.cc:3193 -#: src/emc/rs274ngc/interp_convert.cc:3207 -#: src/emc/rs274ngc/interp_convert.cc:3221 -msgid "Cannot disable overrides with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:405 +msgid "**** disabled tool measurement ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3325 -#: src/emc/rs274ngc/interp_convert.cc:3326 -#: src/emc/rs274ngc/interp_convert.cc:3327 -#, c-format -msgid "Indexing axis %c can only be moved with G0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:770 +msgid "**** GMOCCAPY ERROR : ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3334 -#: src/emc/rs274ngc/interp_convert.cc:3336 -#: src/emc/rs274ngc/interp_convert.cc:3338 -#, c-format -msgid "Indexing axis %c can only be moved alone" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:772 +#, python-format +msgid "" +"**** gmoccapy can only handle 4 axis, ****\n" +"**** but you have given %d through your INI file ****\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3433 -msgid "Cannot probe with feed per rev mode" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:774 +msgid "" +"**** gmoccapy will not start ****\n" +"\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3481 -msgid "Cannot change retract mode with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:786 +#, fuzzy, python-format +msgid "Home axis %s" +msgstr "HOME _%s-osa" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:885 +msgid "**** To many increments given in INI File for this screen ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3515 -msgid "G10 L1 without offsets has no effect" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:886 +msgid "**** Only the first 10 will be reachable through this screen ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3621 -msgid "Q number in G10 is not an integer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:924 +msgid "**** gmoccapy screen 2 found ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3622 -msgid "Invalid tool orientation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:929 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1055 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1177 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1225 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1844 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2190 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2200 +msgid "**** GMOCCAPY ERROR ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3721 -msgid "I J words not allowed with G10 L2" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:930 +msgid "**** screen 2 GLADE ERROR: ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3742 -msgid "" -"Cannot change the active coordinate system with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:935 +msgid "**** No gmoccapy2.glade file present ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3750 -msgid "R not allowed in G10 L20" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:950 +msgid "**** Invalid embeded tab configuration ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4323 -msgid "Spindle not turning in G33" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:951 +msgid "**** No tabs will be added! ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4333 -msgid "Spindle not turning in G33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:964 +msgid "ERROR, trying to initialize the user tabs or panaels, check for typos" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4376 -msgid "BUG: An axis incorrectly moved along with an indexer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1056 +msgid "**** Did not find a toolfile file in [EMCIO] TOOL_TABLE ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4389 -msgid "BUG: trying to index incorrect axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1100 +msgid "**** audio available! ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4481 -msgid "Cannot use G76 threading cycle with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1103 +msgid "**** no audio available! ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4484 -msgid "In G76, I must not be 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1104 +msgid "**** PYGST libray not installed? ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4486 -msgid "In G76, J must be greater than 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1157 +msgid "**** virtual keyboard program found : " msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4488 -msgid "In G76, K must be greater than J" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1164 +msgid "**** virtual keyboard program found : " msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4631 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1167 msgid "" -"Length of cutter compensation entry move is not greater than the tool radius" +"**** No virtual keyboard installed, we checked for and ." msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4850 -msgid "Zero degree inside corner is invalid for cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1178 +msgid "**** Error with launching virtual keyboard," msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4888 -#: src/emc/rs274ngc/interp_convert.cc:4896 -msgid "" -"Arc to straight motion makes a corner the compensated tool can't fit in " -"without gouging" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1179 +msgid "**** is onboard or matchbox-keyboard installed? ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4980 -msgid "Cannot change tools with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1193 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1875 +msgid "interrupt running macro" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:5101 -msgid "Cannot change tool offset with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1226 +msgid "**** Did not find a parameter file in [RS274NGC] PARAMETER_FILE ****" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:590 -#, c-format -msgid "" -"BUG: cutter compensation has generated an invalid arc with mismatched radii " -"r1 %f r2 %f\n" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1294 +msgid "Select the file you want to be loaded at program start" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:612 -msgid "BUG: Unsupported plane in cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1329 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1353 +#, python-format +msgid "**** GMOCCAPY ERROR **** /n Message type %s not suported" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:622 -msgid "" -"Straight traverse in concave corner cannot be reached by the tool without " -"gouging" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1462 +msgid "Unknown error type and no error text given" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:650 -#, c-format -msgid "BUG: Unsupported plane [%d] in cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1478 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1840 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1847 +msgid "Important Warning" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1498 +msgid "ERROR : External ESTOP is set, could not change state!" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:661 -msgid "" -"Straight feed in concave corner cannot be reached by the tool without gouging" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1511 +msgid "ERROR : Could not switch the machine on, is limit switch aktivated?" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:628 -msgid "Cannot feed with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1730 +msgid "It is not possible to change to MDI Mode at the moment" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:629 -msgid "Cannot use inverse time feed with canned cycles" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1754 +msgid "It is not possible to change to Auto Mode at the moment" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:630 -msgid "Cannot use canned cycles with cutter compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1838 +msgid "" +"\n" +"**** No subroutine folder or program prefix is given in the ini file **** \n" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:818 -msgid "G17 canned cycle is not possible on a machine without Z axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1839 +msgid "**** so the corresponding file could not be found ****" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1004 -msgid "G17.1 canned cycle is not possible on a machine without W axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1845 +#, python-format +msgid "" +"\n" +"**** File %s of the macro could not be found ****\n" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1220 -msgid "G19 canned cycle is not possible on a machine without X axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1846 +#, python-format +msgid "**** we searched in subdirectory %s ****" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1388 -msgid "G19.1 canned cycle is not possible on a machine without U axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1851 +msgid "Enter value:" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1613 -msgid "G18 canned cycle is not possible on a machine without Y axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1852 +#, python-format +msgid "Set parameter %s to:" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1780 -msgid "G18.1 canned cycle is not possible on a machine without V axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1854 +msgid "conversion error" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:170 -msgid "Cannot use polar coordinates with G53" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1855 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3610 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3634 +msgid "Conversion error !" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 -#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 -#: src/emc/rs274ngc/interp_find.cc:347 -msgid "Cannot specify X or Y words with polar coordinate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1856 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3299 +msgid "" +"Please enter only numerical values\n" +"Values have not been applied" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:272 -msgid "Must specify angle in polar coordinate if at the origin" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2149 +#, python-brace-format +msgid "**** replaced {0} to {1} ****" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:338 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2158 msgid "" -"Incremental motion with polar coordinates is indeterminate when at the origin" +"\n" +"**** found more than 9 macros, only the first 9 will be used ****" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:348 -msgid "G91 motion with polar coordinates is indeterminate when at the origin" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2191 +#, python-format +msgid "**** %s ****" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:720 -#, c-format -msgid "Requested tool %d not found in the tool table" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2201 +#, python-format +msgid "**** No widget named: %s to sensitize ****" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:154 -msgid "Cannot use polar coordinate on a machine lacking X or Y axes" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2366 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1561 +msgid "No tool description available" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:155 -msgid "Cannot use polar coordinate except in G17 plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2591 +#, python-format +msgid "Halo, welcome to the test message %d" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:156 -msgid "Cannot specify both polar coordinate and X word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2732 +msgid "Hal Pin is low, Access denied" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:157 -msgid "Cannot specify both polar coordinate and Y word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2734 +msgid "wrong code entered, Access denied" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:178 -#: src/emc/rs274ngc/interp_internal.cc:190 -#: src/emc/rs274ngc/interp_internal.cc:203 -msgid "Polar coordinates can only be used for motion" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2735 +msgid "Just to warn you" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1143 src/emc/rs274ngc/interp_read.cc:1147 -#, c-format -msgid "Bad character '\\%03o' used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2810 +msgid "ERROR : No limit switch is active, ignore limits will not be set." msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1147 -#, c-format -msgid "Bad character '%c' used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2850 +msgid "Classicladder real-time component not detected" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1671 -msgid "Left bracket missing after 'while'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2937 +msgid "Something went wrong, we have an unknown spindle widget" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1686 -msgid "Left bracket missing after 'repeat'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3046 +msgid "Do you really want to delete the MDI history?\n" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1701 -msgid "Left bracket missing after 'if'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3047 +msgid "this will not delete the MDI History file, but will\n" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1716 -msgid "Left bracket missing after 'elseif'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3048 +msgid "delete the listbox entries for this session" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1919 -msgid "Cannot read current position with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3049 +msgid "Attention!!" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1934 -msgid "Expected # reading parameter" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3076 +msgid "This button will show or hide the keyboard" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1936 -msgid "Expected ] reading bracketed parameter" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3196 +#, python-format +msgid "Offset %s could not be set, because off unknown axis" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2608 -#, c-format -msgid "bad number format (conversion failed) parsing '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3197 +msgid "Wrong offset setting!" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2609 -#, c-format -msgid "bad number format (trailing characters) parsing '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3202 +msgid "Enter value for diameter" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2699 -msgid "Calculation resulted in 'not a number'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3203 +msgid "Set diameter to:" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2701 -msgid "Calculation resulted in 'infinity'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3206 +msgid "Enter value for radius" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2994 -#, c-format -msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3207 +msgid "Set radius to:" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3106 -msgid "Multiple U words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3210 +#, fuzzy, python-format +msgid "Enter value for axis %s" +msgstr "Aktivna cetvrta osa" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3211 +#, python-format +msgid "Set axis %s to:" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3122 -msgid "Multiple V words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3215 +msgid "Conversion error in btn_set_value" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3138 -msgid "Multiple W words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3216 +msgid "Conversion error in btn_set_value!" msgstr "" -#: src/emc/rs274ngc/interp_o_word.cc:95 -#, c-format -msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3217 +msgid "Please enter only numerical values. Values have not been applied" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:161 -#, c-format -msgid "Named parameter #<%s> not defined" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3232 +msgid "" +"you did not selected a system to be changed to, so nothing will be changed" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:191 -#, c-format -msgid "cant open ini file '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3640 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3654 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3658 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3673 +msgid "Important Warning!" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:208 -#, c-format -msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3284 +msgid "Enter the block height" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:232 -#, c-format -msgid "fetch_hal_param: hal_init(%s): %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3285 +msgid "Block height measured from base table" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:233 -#, c-format -msgid "fetch_hal_param: hal_ready(): %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3297 +msgid "Conversion error in btn_block_height" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:370 -#, c-format -msgid "Internal error: Could not assign #<%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3298 +msgid "Conversion error in btn_block_height!" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:378 -#, c-format -msgid "Cannot assign to read-only parameter #<%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3536 +msgid "Please remove the mounted tool and press OK when done" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:682 -#, c-format -msgid "BUG: lookup_named_param(%s): unhandled index=%fn" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3539 +#, python-brace-format +msgid "" +"Please change to tool\n" +"\n" +"# {0:d} {1}\n" +"\n" +" then click OK." msgstr "" -#: src/emc/rs274ngc/rs274ngc_pre.cc:1269 src/emc/rs274ngc/rs274ngc_pre.cc:1344 -#, fuzzy -msgid "Queue is not empty after tool change" -msgstr "_Prikazi upit za promenu alata" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3549 +msgid "Tool Change has been aborted!\n" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_pre.cc:1648 -#, c-format -msgid "Unable to open parameter file: '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3550 +msgid "The old tool will remain set!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:4 -msgid "A file is already open" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3570 +msgid "No or more than one tool selected in tool table" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:5 -msgid "All axes missing with g92" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3571 +msgid "Please select only one tool in the table" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:6 -msgid "All axes missing with motion code" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3573 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3580 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3589 +msgid "Warning Tool Touch off not possible!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:7 -msgid "Arc radius too small to reach end point" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3577 +msgid "you can not touch of a tool, witch is not mounted in the spindle" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:8 -msgid "Argument to acos out of range" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3578 +msgid "your selection has been reseted to the tool in spindle" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:9 -msgid "Argument to asin out of range" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3586 +msgid "" +"Tool touch off is not possible with cutter radius compensation switched on!\n" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:10 -msgid "Attempt to divide by zero" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3587 +msgid "Please emit an G40 before tool touch off" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:11 -msgid "Attempt to raise negative to non integer power" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3597 +msgid "Real big error!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:12 -msgid "Bad format unsigned integer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3598 +msgid "" +"You managed to come to a place that is not possible in on_btn_tool_touchoff" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:13 -msgid "Bad number format" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3602 +#, python-format +msgid "Enter value for axis %s to set:" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:14 -msgid "Bug bad g code modal group 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3603 +#, python-brace-format +msgid "Set parameter of tool {0:d} and axis {1} to:" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:15 -msgid "Bug code not g0 or g1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3608 +#, python-format +msgid "Conversion error because of wrong entry for touch off axis %s" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:16 -msgid "Bug code not g17 g18 or g19" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3628 +msgid "Enter the tool number as integer " msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:17 -msgid "Bug code not g20 or g21" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3629 +msgid "Select the tool to change" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:18 -msgid "Bug code not g28 or g30" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3631 +msgid "Conversion error because of wrong entry for tool number\n" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:19 -msgid "Bug code not g2 or g3" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3632 +msgid "enter only integer nummbers" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:20 -msgid "Bug code not g4 g10 g28 g30 g53 or g92 series" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3657 +msgid "Selected tool is already in spindle, no change needed." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:21 -msgid "Bug code not g61 g61.1 or g64" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3653 +msgid "" +"you selected no or more than one tool, the tool selection must be unique" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:22 -msgid "Bug code not g90 or g91" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3672 +msgid "Could not understand the entered tool number. Will not change anything" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:23 -msgid "Bug code not g98 or g99" +#: src/emc/usr_intf/gmoccapy/dialogs.py:33 +#: src/emc/usr_intf/gmoccapy/dialogs.py:38 +msgid "Enter System Unlock Code" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:24 -msgid "Bug code not in g92 series" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:25 -msgid "Bug code not in range g54 to g593" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter the value to set" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:26 -msgid "Bug code not m0 m1 m2 m30 m60" +#: src/emc/usr_intf/gmoccapy/notification.py:205 +#, python-format +msgid "Error trying to delet the message with number %s" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:27 -msgid "Bug distance mode not g90 or g91" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:409 +msgid "left rotate, middle move, right zoom" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:28 -msgid "Bug function should not have been called" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:413 +msgid "left zoom, middle move, right rotate" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:29 -msgid "Bug in tool radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:417 +msgid "left move, middle rotate, right zoom" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:30 -msgid "Bug plane not xy yz or xz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:421 +msgid "left zoom, middle rotate, right move" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:31 -msgid "Bug side not right or left" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:425 +msgid "left move, middle zoom, right rotate" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:32 -msgid "Bug unknown motion code" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:429 +msgid "left rotate, middle zoom, right move" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:33 -msgid "Bug unknown operation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:526 +#, fuzzy +msgid "clear plot" +msgstr "Obrisi prikaz" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:585 +#, fuzzy +msgid "view perspective" +msgstr "Perspektiva" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:608 +msgid "view along the X axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:34 -msgid "Cannot change axis offsets with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:633 +msgid "view along the Y axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:35 -msgid "Cannot create backup file" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:658 +msgid "view along the Z axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:36 -msgid "Cannot do g1 with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:685 +msgid "Show or hide tool path" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:37 -msgid "Cannot do zero repeats of cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:708 +msgid "Show or hide dimensions" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:38 -msgid "Cannot make arc with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:731 +msgid "" +"view along the Y axis from positive to negative as viewn for a back tool " +"lathe" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:39 -msgid "Cannot open backup file" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:791 +#, fuzzy +msgid "Offset Page" +msgstr "Test %s-ose" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:809 +#, fuzzy +msgid "Tooledit" +msgstr "Redosled alata:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:831 +#, fuzzy +msgid "File Selection" +msgstr "A smer" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:869 +#, fuzzy +msgid "Toggle between metric and imperial units" +msgstr "Izbor izmedju DRAG i ROTATE rezima" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:887 +msgid "Switch DRO to DTG mode" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:40 -msgid "Cannot open variable file" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:905 +#, fuzzy +msgid "Toggle between machine and relative coordinates" +msgstr "Izbor izmedju DRAG i ROTATE rezima" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:928 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:946 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:963 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:980 +msgid "Klick to toggle through the DRO modes" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:41 -msgid "Cannot probe with cutter radius comp on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1253 +#, fuzzy +msgid "Ignore limits" +msgstr "Prekoraci ogranicenja" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1321 +#, fuzzy +msgid "Jogging" +msgstr "Homin_g" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1430 +msgid "Information over the tool in spindle" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:42 -msgid "Cannot probe with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1448 +#, fuzzy +msgid "Tool no." +msgstr "Promena alata" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1474 +msgid "Diameter" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:43 -msgid "Cannot put a b in canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1503 +msgid "offset z" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:44 -msgid "Cannot put a c in canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1532 +msgid "offset x" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:45 -msgid "Cannot put an a in canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1580 +#, fuzzy +msgid "Tool information" +msgstr "Konfiguracija X ose" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1592 +msgid "G and M code information as well as speed and feed" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:46 -msgid "Cannot turn cutter radius comp on when on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1611 +#, fuzzy +msgid "active_mcodes_label" +msgstr "Aktivni G-kod:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1663 +#, fuzzy +msgid "active_gcodes_label" +msgstr "Aktivni G-kod:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1717 +#, fuzzy +msgid "G-Code" +msgstr "Homin_g" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1730 +msgid "The name and location of the loaded program" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:47 -msgid "Cannot use axis values with g80" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1742 +#, fuzzy +msgid "No Program loaded" +msgstr "Datoteka nije ucitana" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1750 +#, fuzzy +msgid "Program" +msgstr "Homin_g" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1800 +msgid "Vel." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:48 -msgid "Cannot use axis values without a g code that uses them" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1814 +msgid "Displays the current velocity" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:49 -msgid "Cannot use g28 or g30 with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1838 +msgid "adjust max vel of machine" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:50 -msgid "Cannot use g53 incremental" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1854 +#, fuzzy +msgid "Max. Velocity" +msgstr "Maksinalna _Brzina:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1885 +msgid "Displayes the programmed feed rate" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:51 -msgid "Cannot use g53 with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1904 +#, fuzzy +msgid "reset feed override to 100 %" +msgstr "Prekoracenje posmaka 0-100%" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1922 +#, fuzzy +msgid "adjust feed override" +msgstr "Prekoracenje posmaka:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1941 +#, fuzzy +msgid "Feed Override [%]" +msgstr "Prekoracenje posmaka:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2034 +#, fuzzy +msgid "Cooling" +msgstr "Homin_g" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2285 +#, fuzzy +msgid "Spindle [rpm]" +msgstr "Index. sig. enkodera obr.mot." + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2377 +msgid "" +"Search\n" +" back" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:52 -msgid "Cannot use two g codes that both use axis values" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2394 +msgid "" +"Search\n" +" fwd" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:53 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2446 +#, fuzzy +msgid "" +"Replace\n" +" Text:" +msgstr "_korak navojnog vretena:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2456 #, fuzzy -msgid "Command too long" -msgstr "prikazi za_datu poziciju" +msgid "" +"Replace\n" +" All" +msgstr "relativna" -#: src/emc/rs274ngc/rs274ngc_return.hh:54 -msgid "Current point same as end point of arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2470 +msgid "" +"Ignore\n" +" Case" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:55 -msgid "Dwell time missing with g4" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2616 +msgid "Start as fullscreen" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:56 -msgid "Dwell time p word missing with g82" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2631 +msgid "Start maximized" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:57 -msgid "Dwell time p word missing with g86" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2646 +msgid "Start as window" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:58 -msgid "Dwell time p word missing with g88" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2670 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4426 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4943 +msgid "X Pos." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:59 -msgid "Dwell time p word missing with g89" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2683 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4437 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4928 +msgid "Y Pos." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:60 -msgid "Equal sign missing in parameter setting" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2698 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4855 +msgid "Width" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:61 -msgid "F word missing with inverse time arc move" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2713 +msgid "Height" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:62 -msgid "F word missing with inverse time g1 move" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2811 +msgid "hide cursor" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:63 -msgid "File ended with no percent sign" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2830 +#, fuzzy +msgid "Main Window" +msgstr "Homin_g" -#: src/emc/rs274ngc/rs274ngc_return.hh:64 -msgid "File ended with no percent sign or program end" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2857 +#, fuzzy +msgid "Show keyboard on offset" +msgstr "_Prikazi rastojanja" -#: src/emc/rs274ngc/rs274ngc_return.hh:65 -msgid "File name too long" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2871 +msgid "Show keyboard on tooledit" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:66 -msgid "G code out of range" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2885 +msgid "Show keyboard on MDI" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:67 -msgid "I word given for arc in yz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2899 +msgid "Show keyboard on EDIT" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:68 -msgid "I word missing with g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2913 +msgid "Show keyboard on load file" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:69 -msgid "J word given for arc in xz plane" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2931 +#, fuzzy +msgid "Keyboard" +msgstr "Homin_g" -#: src/emc/rs274ngc/rs274ngc_return.hh:70 -msgid "J word missing with g87" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2959 +#, fuzzy +msgid "show preview" +msgstr "Bocni pogled" -#: src/emc/rs274ngc/rs274ngc_return.hh:71 -msgid "K word given for arc in xy plane" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2973 +#, fuzzy +msgid "show offsets" +msgstr "_Prikazi rastojanja" -#: src/emc/rs274ngc/rs274ngc_return.hh:72 -msgid "K word missing with g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2991 +msgid "On Touch off" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:73 -msgid "Left bracket missing after slash with atan" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3005 +msgid "" +" Display \n" +"Aux Screen" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:74 -msgid "Left bracket missing after unary operation name" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3052 +#, fuzzy +msgid "Relative Color" +msgstr "Rela_tivna pozicija" -#: src/emc/rs274ngc/rs274ngc_return.hh:75 -msgid "M code greater than 199" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3079 +msgid "Absolute Color" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:76 -msgid "Mixed radius ijk format for arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3110 +msgid "DTG Color" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:77 -msgid "Multiple a words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3139 +msgid "Use Auto Units" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:78 -msgid "Multiple b words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3159 +#, fuzzy +msgid "Show the DRO Button" +msgstr "Shift+Levi taster" -#: src/emc/rs274ngc/rs274ngc_return.hh:79 -msgid "Multiple c words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3190 +#, fuzzy +msgid "Homed color" +msgstr "HOME sve ose" -#: src/emc/rs274ngc/rs274ngc_return.hh:80 -msgid "Multiple d words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3204 +#, fuzzy +msgid "Unhomed color" +msgstr "HOME sve ose" -#: src/emc/rs274ngc/rs274ngc_return.hh:81 -msgid "Multiple f words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3299 +msgid "Digits" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:82 -msgid "Multiple h words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3344 +msgid "" +"toggle DRO mode \n" +"clicking on the DRO" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:83 -msgid "Multiple i words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3369 +#, fuzzy +msgid "DRO" +msgstr "Homin_g" -#: src/emc/rs274ngc/rs274ngc_return.hh:84 -msgid "Multiple j words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3401 +msgid "Grid size" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:85 -msgid "Multiple k words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3430 +#, fuzzy +msgid "Show DRO" +msgstr "_Prikazi rastojanja" -#: src/emc/rs274ngc/rs274ngc_return.hh:86 -msgid "Multiple l words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3444 +#, fuzzy +msgid "Show offsets" +msgstr "_Prikazi rastojanja" -#: src/emc/rs274ngc/rs274ngc_return.hh:87 -msgid "Multiple p words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3458 +msgid "Show DTG" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:88 -msgid "Multiple q words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3483 +#, fuzzy +msgid "Mouse Button mode" +msgstr "Homin_g" -#: src/emc/rs274ngc/rs274ngc_return.hh:89 -msgid "Multiple r words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3512 +#, fuzzy +msgid "Preview" +msgstr "Homin_g" -#: src/emc/rs274ngc/rs274ngc_return.hh:90 -msgid "Multiple s words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3565 +#, fuzzy +msgid "" +"current\n" +" file" +msgstr "Ponovo otvori tekucu datoteku [Ctrl-R]" -#: src/emc/rs274ngc/rs274ngc_return.hh:91 -msgid "Multiple t words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3611 +msgid "File to load on start" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:92 -msgid "Multiple x words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3638 +#, fuzzy +msgid "Select user dir" +msgstr "Izaberi JOG brzinu" -#: src/emc/rs274ngc/rs274ngc_return.hh:93 -msgid "Multiple y words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3647 +msgid "Select jump to dir" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:94 -msgid "Multiple z words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3767 +msgid "Themes and sound" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:95 -msgid "Must use g0 or g1 with g53" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3799 +msgid "Appearance" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:96 -msgid "Negative argument to sqrt" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3833 +#, fuzzy +msgid "Scale max velocity" +msgstr "Maksinalna _Brzina:" -#: src/emc/rs274ngc/rs274ngc_return.hh:97 -msgid "Negative d word tool radius index used" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3846 +#, fuzzy +msgid "Scale jog velocity" +msgstr "B_rzina" -#: src/emc/rs274ngc/rs274ngc_return.hh:98 -msgid "Negative f word used" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3861 +#, fuzzy +msgid "Scale feed override" +msgstr "Prekoracenje posmaka:" -#: src/emc/rs274ngc/rs274ngc_return.hh:99 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3876 #, fuzzy -msgid "Negative g code used" -msgstr "Sacuvaj G-kod kao" +msgid "Scale spindle override" +msgstr "Prekoracenje brzine obr.motora:" -#: src/emc/rs274ngc/rs274ngc_return.hh:100 -msgid "Negative h word used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3970 +#, fuzzy +msgid "Hardware MPG Scale" +msgstr "Homin_g" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3994 +msgid "Use keyboard shortcuts" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:101 -msgid "Negative l word used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4007 +msgid "Keyboard shortcuts" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:102 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4034 #, fuzzy -msgid "Negative m code used" -msgstr "Grad / Umdrehung" +msgid "Use unlock code" +msgstr "Neupotrebljen" -#: src/emc/rs274ngc/rs274ngc_return.hh:103 -msgid "Negative or zero q value used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4050 +msgid "Do not use unlock code" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:104 -msgid "Negative p word used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4066 +msgid "Use hal pin to unlock" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:105 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4087 #, fuzzy -msgid "Negative spindle speed used" -msgstr "Prekoracenje brzine obr.motora:" +msgid "Unlock settings" +msgstr "Homin_g" -#: src/emc/rs274ngc/rs274ngc_return.hh:106 -msgid "Negative tool id used" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4197 +#, fuzzy +msgid "Spindle bar min" +msgstr "Kocnica obr.mot.uklj." -#: src/emc/rs274ngc/rs274ngc_return.hh:107 -msgid "Nested comment found" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4210 +#, fuzzy +msgid "Spindle bar max" +msgstr "Kocnica obr.mot.uklj." -#: src/emc/rs274ngc/rs274ngc_return.hh:108 -msgid "No characters found in reading real value" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4252 +msgid "Hide turtle Jog Button" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:109 -msgid "Non integer value for integer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4282 +msgid "Turtle jog Factor" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:110 -msgid "Null missing after newline" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4318 +#, fuzzy +msgid "Turtle Jog" +msgstr "Homin_g" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4360 +msgid "Hardware" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:111 -msgid "Parameter file out of order" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4392 +msgid "Use auto tool measurement" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:112 -msgid "Parameter number out of range" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4450 +#, fuzzy +msgid "Probe Height" +msgstr "Sonda" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4485 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4498 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4527 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4556 +msgid "0.000" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:113 -msgid "Parameter is readonly" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4514 +msgid "Z Pos." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:114 -msgid "Q word missing with g83" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4543 +#, fuzzy +msgid "Max. Probe" +msgstr "Sonda" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4575 +#, fuzzy +msgid "Probe Informations" +msgstr "Homin_g" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4607 +#, fuzzy +msgid "Search Vel." +msgstr "Brzina pri _trazenju referentne pozicije:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4618 +#, fuzzy +msgid "Probe Vel." +msgstr "Sonda" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4674 +msgid "Probe velocitys" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:115 -msgid "Queue is not empty after probing" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4688 +msgid "" +"No valid configuration\n" +"found in your INI file,\n" +"please take a look at \n" +"the WIKI to check how\n" +"to configure the settings." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:116 -msgid "R clearance plane unspecified in cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4708 +#, fuzzy +msgid "Tool Measurement" +msgstr "Homin_g" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4737 +msgid "" +"If the 4'th axis is used\n" +"for a tool changer, you\n" +"hide the DRO and\n" +"jog buttons." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:117 -msgid "R i j k words all missing for arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4749 +#, fuzzy +msgid "Hide 4'th axis" +msgstr "Testiraj ovu osu" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4769 +#, fuzzy +msgid "Tool Changer" +msgstr "Homin_g" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4808 +msgid "Use frames" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:118 -msgid "R less than x in cycle in yz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4840 +msgid "max." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:119 -msgid "R less than y in cycle in xz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4992 +#, fuzzy +msgid "Launch test message" +msgstr "Rezultat _Latency testa:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5011 +msgid "" +" gmoccapy message\n" +" behavior and appearance " msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:120 -msgid "R less than z in cycle in xy plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5049 +msgid "Do not use run from line" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:121 -msgid "R word with no g code that uses it" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5065 +#, fuzzy +msgid "Use run from line" +msgstr "PAN, rotacija ili izbor linije" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5086 +#, fuzzy +msgid "Run from line" +msgstr "Homin_g" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5119 +#, fuzzy +msgid "" +"Advanced\n" +" Settings" +msgstr "Maschinenkonfiguration komplett" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5157 +msgid "User tab 1" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:122 -msgid "Slash missing after first atan argument" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5171 +msgid "User tabs" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:123 -msgid "Spindle not turning clockwise in g84" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5207 +msgid "Estop the machine" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:124 -msgid "Spindle not turning in g86" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5229 +#, fuzzy +msgid "Turn the machine on/off" +msgstr "Ukljuci masinu" -#: src/emc/rs274ngc/rs274ngc_return.hh:125 -msgid "Spindle not turning in g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5251 +msgid "enter manual mode to jog axis by hand or touch off" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:126 -msgid "Spindle not turning in g88" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5271 +msgid "enter MDI mode to launch g-code commands" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:127 -msgid "Sscanf failed" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5290 +#, fuzzy +msgid "enter auto mode to run programs" +msgstr "Ponovo ucitaj program" -#: src/emc/rs274ngc/rs274ngc_return.hh:128 -msgid "Start point too close to probe point" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5308 +msgid "Enter the settings page, the default code is \"123\"" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:129 -msgid "Too many m codes on line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5330 +#, fuzzy +msgid "show user tabs" +msgstr "_Prikazi rastojanja" -#: src/emc/rs274ngc/rs274ngc_return.hh:130 -msgid "Pocket max too large" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5381 +msgid "open homing button list" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:131 -msgid "Tool radius not less than arc radius with comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5398 +msgid "open touch off button list" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:132 -msgid "Two g codes used from same modal group" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5427 +msgid "Open the tooleditor page" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:133 -msgid "Two m codes used from same modal group" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5498 +msgid "make the preview as large as possible" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:134 -#, c-format -msgid "Unable to open file <%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5515 +msgid "Close moccapy / leave the program" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:135 -msgid "Unclosed comment found" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5577 +msgid "This button will show or hide the Keyboard" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:136 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5620 #, fuzzy -msgid "Unclosed expression" -msgstr "Neupotrebljen" +msgid "Load a new program" +msgstr "Ponovo ucitaj program" -#: src/emc/rs274ngc/rs274ngc_return.hh:137 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5637 #, fuzzy -msgid "Unknown g code used" -msgstr "Nepoznat alat%d" +msgid "Run the loaded program" +msgstr "Ponovo ucitaj program" -#: src/emc/rs274ngc/rs274ngc_return.hh:138 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5654 #, fuzzy -msgid "Unknown m code used" -msgstr "Nepoznat alat%d" +msgid "Stop the running program" +msgstr "Zaustavi izvrsenje programa ili" -#: src/emc/rs274ngc/rs274ngc_return.hh:139 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5672 #, fuzzy -msgid "Unknown operation" -msgstr "Nepoznat alat%d" - -#: src/emc/rs274ngc/rs274ngc_return.hh:140 -msgid "Unknown operation name starting with a" -msgstr "" +msgid "Pause the running program" +msgstr "Zaustavi izvrsenje programa ili" -#: src/emc/rs274ngc/rs274ngc_return.hh:141 -msgid "Unknown operation name starting with m" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5680 +#, fuzzy +msgid "pause the running program" +msgstr "Zaustavi izvrsenje programa ili" -#: src/emc/rs274ngc/rs274ngc_return.hh:142 -msgid "Unknown operation name starting with o" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5698 +msgid "Run the loaded program step by step" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:143 -msgid "Unknown operation name starting with x" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5715 +msgid "" +"run the program from a certain line, attention, that is dangerous, because " +"the previous lines will not checed!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:144 -msgid "Unknown word starting with a" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5732 +msgid "" +"Machine or not the optional blocks of the program. If the button is pressed, " +"the optional blocks will not be machined. The button will indicate this by a " +"yellow background." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:145 -msgid "Unknown word starting with c" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5757 +msgid "" +"Make optional stops or not. if an M1 is programed and the button is pressed " +"(is active) the programm will pause if it found a M1" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:146 -msgid "Unknown word starting with e" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5789 +#, fuzzy +msgid "Edit the loaded program" +msgstr "Ponovo ucitaj program" -#: src/emc/rs274ngc/rs274ngc_return.hh:147 -msgid "Unknown word starting with f" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5837 +#, fuzzy +msgid "home all axis" +msgstr "Pomeri sve osu u HOME" -#: src/emc/rs274ngc/rs274ngc_return.hh:148 -msgid "Unknown word starting with l" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5873 +#, fuzzy +msgid "home x axis" +msgstr "HOME" -#: src/emc/rs274ngc/rs274ngc_return.hh:149 -msgid "Unknown word starting with r" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5897 +#, fuzzy +msgid "home y axis" +msgstr "HOME" -#: src/emc/rs274ngc/rs274ngc_return.hh:150 -msgid "Unknown word starting with s" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5929 +#, fuzzy +msgid "home z axis" +msgstr "HOME" -#: src/emc/rs274ngc/rs274ngc_return.hh:151 -msgid "Unknown word starting with t" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5987 +#, fuzzy +msgid "Unhome all axis" +msgstr "HOME sve ose" -#: src/emc/rs274ngc/rs274ngc_return.hh:152 -msgid "Unknown word where unary operation could be" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6023 +msgid "go back to main button list" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:153 -msgid "X and y words missing for arc in xy plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6053 +msgid "" +" edit\n" +"offsets" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:154 -msgid "X and z words missing for arc in xz plane" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6060 +#, fuzzy +msgid "Edit offsets" +msgstr "_Prikazi rastojanja" -#: src/emc/rs274ngc/rs274ngc_return.hh:155 -msgid "X value unspecified in yz plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6076 +msgid "touch off X / set X to 0" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:156 -msgid "Y and z words missing for arc in yz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6100 +msgid "touch off Y / set Y to 0" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:157 -msgid "Y value unspecified in xz plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6135 +msgid "touch off Z / set Z to 0" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:158 -msgid "Z value unspecified in xy plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6155 +msgid "" +"zero\n" +"G92" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:159 -msgid "Zero or negative argument to ln" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6161 +msgid "Zero all G92 offsets" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:161 -msgid "K word missing with g33/g33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6172 +msgid "" +" Block\n" +"Height" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:162 -msgid "F word used with a g33/g33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6192 +msgid "touch off X / set X to an desired value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:163 -msgid "Unknown operation name starting with e" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6216 +msgid "touch off Y / set Y to an desired value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:164 -msgid "Unknown operation name starting with n" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6251 +msgid "touch off Z / set Z to an desired value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:165 -msgid "Unknown operation name starting with g" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6270 +msgid "" +" set\n" +"selected" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:166 -msgid "Unknown operation name starting with l" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6277 +msgid "set the selected coordinate system to be the active one" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:167 -msgid "Too many subroutine parameters" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6293 +msgid "Go back to main view" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:168 -msgid "Too many subroutine levels" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6324 +msgid "delete MDI" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:169 -msgid "Bug: call stack underrun" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6330 +#, fuzzy +msgid "delete MDI history" +msgstr "Obrisi MDI istoriju" -#: src/emc/rs274ngc/rs274ngc_return.hh:170 -msgid "Unknown control command in o word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6380 +msgid "Cl.-ladder" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:171 -msgid "Too many oword labels" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6386 +msgid "Open classicladder" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:172 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6397 #, fuzzy -msgid "Unknown oword number" -msgstr "Nepoznat alat%d" +msgid "Hal-Scope" +msgstr "HA_L-Scope..." -#: src/emc/rs274ngc/rs274ngc_return.hh:173 -msgid "Nested subroutine definition" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6403 +msgid "launch hal scope" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:174 -msgid "Not in subroutine definition" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6420 +msgid "launch linuxcnc status" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:175 -msgid "File not open" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6437 +msgid "launch hal meter" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:176 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6455 #, fuzzy -msgid "Need tool prepared -Txx- for toolchange" -msgstr "_Prikazi upit za promenu alata" +msgid "launch calibration" +msgstr "_Kalibracija" -#: src/emc/rs274ngc/rs274ngc_return.hh:177 -msgid "Cannot change planes with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6466 +msgid "Halshow" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:178 -msgid "Cutter radius compensation allowed only in XY, XZ planes" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6472 +msgid "opens the show hal tool" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:179 -msgid "P word missing with G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6537 +msgid "save the file using the original name" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:180 -msgid "I J or K words missing with G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6559 +msgid "save the file with a new name" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:181 -msgid "Cannot move rotary axes with G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6605 +msgid "clear the edit field and make a new file" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:182 -msgid "Multiple e words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6641 +msgid "Show or hide the virtual keyboard" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:183 -msgid "Named parameter not terminated" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6665 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6879 +msgid "Go back to main button list" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:184 -msgid "Out of memory" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6701 +msgid "delete selected tool or tools" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:185 -msgid "S word missing with G96" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6718 +#, fuzzy +msgid "add a new tool to tool table" +msgstr "Po_novo ucitaj tabelu alata" -#: src/emc/rs274ngc/rs274ngc_return.hh:186 -msgid "Queue is not empty after external input" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6729 +#, fuzzy +msgid "Reload" +msgstr "_Ucitaj ponovo" -#: src/emc/rs274ngc/rs274ngc_return.hh:187 -msgid "Can't select analog input with wait type != immediate return" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6735 +#, fuzzy +msgid "reload tool table from file" +msgstr "Po_novo ucitaj tabelu alata" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6746 +msgid "Apply" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:188 -msgid "Zero timeout with wait type != immediate return" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6752 +msgid "" +"apply the changes you made, G43 will be excecuted only if it is active g-code" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:189 -msgid "Invalid to select both a digital and an analog input with M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6768 +msgid "Select a tool by number" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:190 -msgid "Need to have either a valid P or a valid E word with M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6790 +msgid "change tool with the command M61 Q?, no machine move will be done" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:191 -msgid "Q word missing with g73" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6812 +msgid "change tool to the selected one" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:192 -msgid "Digital input selected out of bounds" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6824 +msgid "" +"touchoff\n" +" tool x" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:193 -msgid "Analog input selected out of bounds" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6832 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6863 +msgid "touch off the tool and set the value to the tool table" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:194 -msgid "W value unspecified in UV plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6855 +msgid "" +"touchoff\n" +" tool z" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:195 -msgid "U value unspecified in VW plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6915 +msgid "Move to your home directory" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:196 -msgid "V value unspecified in UW plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6932 +#, fuzzy +msgid "Move to parrent directory" +msgstr "Verzeichnis:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6961 +msgid "Select the previos file" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:197 -msgid "R less than W in cycle in UV plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6979 +#, fuzzy +msgid "Select the next file" +msgstr "Slede_ca linija" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6997 +msgid "Jump to user defined directory" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:198 -msgid "R less than U in cycle in VW plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7027 +msgid "select the highlighted file and return the path" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:199 -msgid "R less than V in cycle in UW plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7057 +msgid "Close without returning a file path" msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7075 +#, fuzzy +msgid "Load File" +msgstr "Tip alata" + +#, fuzzy +#~ msgid "LinuxCNC Debug Level" +#~ msgstr "_Debug Level..." + +#~ msgid "Generated by stepconf at %s" +#~ msgstr "Erstell durch stepconf am %s" + +#, fuzzy +#~ msgid "S_econd Parport Address:" +#~ msgstr "Adresa paralelnog porta:" + +#, fuzzy +#~ msgid "T_hird Parport Address:" +#~ msgstr "Adresa paralelnog porta:" + +#, fuzzy +#~ msgid " Parallel Port Settings" +#~ msgstr "Podesavanje paralelnog porta" + +#, fuzzy +#~ msgid "" +#~ "Driver characteristics: (Multiply by 1000 for times specified in µs or " +#~ "microseconds)\n" +#~ " Additional signal conditioning or isolation such as optocouplers " +#~ "and RC filters\n" +#~ " can impose timing constraints of their own, in addition to those " +#~ "of the driver." +#~ msgstr "" +#~ "Einstellungen für Endstufe (alle Zeiten in Nanosekunden = 10^-9 s):\n" +#~ "\n" +#~ "Zusätzliche Signalverarbeitungsbausteine oder Maßnahmen zur " +#~ "galvanischen \n" +#~ "Trennung, wie Optokoppler oder RC-Filter, können zusätzliche Zeit " +#~ "benötigen." + +#, fuzzy +#~ msgid "Advanced Configuration Options" +#~ msgstr "Maschinenkonfiguration komplett" + +#~ msgid "_Sherline Outputs" +#~ msgstr "_Sherline" + +#~ msgid "Spindle Configuration" +#~ msgstr "Konfiguration der Spindel" + +#, fuzzy +#~ msgid "Spindle Max Output:" +#~ msgstr "Obradni motor +" + #, fuzzy #~ msgid "No" #~ msgstr "bez" @@ -13847,12 +17363,6 @@ msgstr "" #~ msgid "AXIS error" #~ msgstr "AXIS greska" -#~ msgid "AXIS Message" -#~ msgstr "AXIS poruka" - -#~ msgid "Set _next line" -#~ msgstr "Slede_ca linija" - #~ msgid "" #~ "Include your PyVCP panel here.\n" #~ "The contents of this file will not be overwritten when you run stepconf " @@ -13876,8 +17386,5 @@ msgstr "" #~ "Xylotex\n" #~ "Andere" -#~ msgid "Include custom _HAL configuration" -#~ msgstr "ukljuci korisnicku _HAL konfiguraciju" - #~ msgid "mm / s^2\t" #~ msgstr "mm / s²\t" diff --git a/src/po/sv.po b/src/po/sv.po index 4f9d747443..d162111d17 100644 --- a/src/po/sv.po +++ b/src/po/sv.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-10 13:40-0600\n" +"POT-Creation-Date: 2019-02-20 07:49+0000\n" "PO-Revision-Date: 2006-04-12 21:33+0200\n" "Last-Translator: Jonathan Lock \n" "Language-Team: Swedish \n" @@ -19,13442 +19,16848 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: src/hal/utils/meter.c:198 +#: src/emc/task/emctaskmain.cc:479 src/emc/task/emctaskmain.cc:512 +#, fuzzy, c-format +msgid "%s exceeds +X limit" +msgstr "Program överskrider maskinens begränsningar" + +#: src/emc/task/emctaskmain.cc:484 src/emc/task/emctaskmain.cc:517 +#, fuzzy, c-format +msgid "%s exceeds +Y limit" +msgstr "Program överskrider maskinens begränsningar" + +#: src/emc/task/emctaskmain.cc:489 src/emc/task/emctaskmain.cc:522 +#, fuzzy, c-format +msgid "%s exceeds +Z limit" +msgstr "Program överskrider maskinens begränsningar" + +#: src/emc/task/emctaskmain.cc:494 src/emc/task/emctaskmain.cc:527 +#, fuzzy, c-format +msgid "%s exceeds -X limit" +msgstr "Program överskrider maskinens begränsningar" + +#: src/emc/task/emctaskmain.cc:499 src/emc/task/emctaskmain.cc:532 +#, fuzzy, c-format +msgid "%s exceeds -Y limit" +msgstr "Program överskrider maskinens begränsningar" + +#: src/emc/task/emctaskmain.cc:504 src/emc/task/emctaskmain.cc:537 +#, fuzzy, c-format +msgid "%s exceeds -Z limit" +msgstr "Program överskrider maskinens begränsningar" + +#: src/emc/task/emctaskmain.cc:892 #, c-format -msgid "ERROR: '%s' is not a valid probe type\n" +msgid "" +"command (%s) cannot be executed until the machine is out of E-stop and " +"turned on" msgstr "" -#: src/hal/utils/meter.c:206 +#: src/emc/task/emctaskmain.cc:1013 #, c-format -msgid "ERROR: no pin/signal/parameter name\n" +msgid "can't do that (%s:%d) in manual mode" msgstr "" -#: src/hal/utils/meter.c:212 +#: src/emc/task/emctaskmain.cc:1113 #, c-format -msgid "" -"ERROR: -s option requires a probe type and a pin/signal/parameter name\n" +msgid "can't do that (%s) in auto mode with the interpreter idle" msgstr "" -#: src/hal/utils/meter.c:238 tcl/tklinuxcnc.tcl:764 -msgid "Hal Meter" +#: src/emc/task/emctaskmain.cc:1180 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter reading" msgstr "" -#: src/hal/utils/meter.c:287 -msgid "_Select" +#: src/emc/task/emctaskmain.cc:1265 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter paused" msgstr "" -#: src/hal/utils/meter.c:288 -msgid "E_xit" +#: src/emc/task/emctaskmain.cc:1334 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter waiting" msgstr "" -#: src/hal/utils/meter.c:336 src/hal/utils/meter.c:364 -msgid "Select Item to Probe" +#: src/emc/task/emctaskmain.cc:1442 +#, c-format +msgid "can't do that (%s:%d) in MDI mode" msgstr "" -#: src/hal/utils/meter.c:640 -msgid " _Pins " +#: src/emc/task/emctaskmain.cc:2100 +msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" msgstr "" -#: src/hal/utils/meter.c:641 -msgid " _Signals " +#: src/emc/task/emctaskmain.cc:2157 tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 +#: tcl/mini.tcl:1775 tcl/tklinuxcnc.tcl:451 +#, c-format, tcl-format +msgid "can't open %s" msgstr "" -#: src/hal/utils/meter.c:642 -msgid " Para_meters " +#: src/emc/task/emctaskmain.cc:2169 +msgid "Can't issue MDI command when not homed" msgstr "" -#: src/hal/utils/meter.c:685 -msgid "_Close" +#: src/emc/task/emctaskmain.cc:2174 +msgid "Must be in MDI mode to issue MDI command" msgstr "" -#: src/hal/utils/scope.c:126 -msgid "" -"Usage:\n" -" halscope [-h] [-i infile] [-o outfile] [num_samples]\n" +#: src/emc/task/emctaskmain.cc:2256 +msgid "Can't run a program when not homed" msgstr "" -#: src/hal/utils/scope.c:474 src/hal/utils/scope.c:501 -#, fuzzy -msgid "Open Configuration File:" -msgstr "Hal _configuration" - -#: src/hal/utils/scope.c:535 -#, fuzzy -msgid "_Open Configuration..." -msgstr "Hal _configuration" - -#: src/hal/utils/scope.c:541 -#, fuzzy -msgid "_Save Configuration..." -msgstr "Hal _configuration" - -#: src/hal/utils/scope.c:550 -msgid "O_pen Data File..." +#: src/emc/rs274ngc/interp_arc.cc:110 src/emc/rs274ngc/interp_arc.cc:284 +#, c-format +msgid "" +"Zero-radius arc: start=(%c%.4f,%c%.4f) center=(%c%.4f,%c%.4f) end=(%c%.4f,%c" +"%.4f) r1=%.4f r2=%.4f" msgstr "" -#: src/hal/utils/scope.c:557 -msgid "S_ave Data File..." +#: src/emc/rs274ngc/interp_arc.cc:120 src/emc/rs274ngc/interp_arc.cc:292 +#, c-format +msgid "" +"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " +"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " +"rel_err=%.4f%%" msgstr "" -#: src/hal/utils/scope.c:566 share/axis/tcl/axis.tcl:93 -#, fuzzy -msgid "_Quit" -msgstr "_Avsluta" - -#: src/hal/utils/scope.c:572 -msgid "_About Halscope" +#: src/emc/rs274ngc/interp_check.cc:90 +msgid "G4 not allowed with G2 or G3 because they both use P" msgstr "" -#: src/hal/utils/scope.c:578 share/axis/tcl/axis.tcl:435 -#, fuzzy -msgid "_File" -msgstr "_Fil" - -#: src/hal/utils/scope.c:582 share/axis/tcl/axis.tcl:447 -#, fuzzy -msgid "_Help" -msgstr "_Hjälp" - -#: src/hal/utils/scope.c:641 -msgid "HAL Oscilloscope" +#: src/emc/rs274ngc/interp_check.cc:93 +msgid "Line with G10 does not have L1, L10, L11, L2, or L20" msgstr "" -#: src/hal/utils/scope.c:669 -msgid "Horizontal" +#: src/emc/rs274ngc/interp_check.cc:94 +msgid "P value not an integer with G10" msgstr "" -#: src/hal/utils/scope.c:677 -msgid "Selected Channel" +#: src/emc/rs274ngc/interp_check.cc:95 +#, c-format +msgid "P value out of range (0-9) with G10 L%d" msgstr "" -#: src/hal/utils/scope.c:683 -msgid "Run Mode" +#: src/emc/rs274ngc/interp_check.cc:96 +#, c-format +msgid "P value out of range with G10 L%d" msgstr "" -#: src/hal/utils/scope.c:686 -msgid "Trigger" +#: src/emc/rs274ngc/interp_check.cc:100 +msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." msgstr "" -#: src/hal/utils/scope.c:692 -msgid "Vertical" +#: src/emc/rs274ngc/interp_check.cc:259 +msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" msgstr "" -#: src/hal/utils/scope.c:700 share/axis/tcl/axis.tcl:135 -#: share/axis/tcl/axis.tcl:1199 -#, fuzzy -msgid "Stop" -msgstr "Av_bryt" - -#: src/hal/utils/scope.c:703 -msgid "Normal" +#: src/emc/rs274ngc/interp_check.cc:265 +msgid "E word with no G76, M66, M67 or M68 to use it" msgstr "" -#: src/hal/utils/scope.c:706 -msgid "Single" +#: src/emc/rs274ngc/interp_check.cc:270 +msgid "H word with no G43 or G76 to use it" msgstr "" -#: src/hal/utils/scope.c:709 -msgid "Roll" +#: src/emc/rs274ngc/interp_check.cc:276 +msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" msgstr "" -#: src/hal/utils/scope_horiz.c:130 -#, fuzzy -msgid "Zoom" -msgstr "Zooma in [+]" - -#: src/hal/utils/scope_horiz.c:131 -msgid " Pos " +#: src/emc/rs274ngc/interp_check.cc:282 +msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" msgstr "" -#: src/hal/utils/scope_horiz.c:164 -msgid "" -"----- Samples\n" -"at ---- KHz" +#: src/emc/rs274ngc/interp_check.cc:288 +msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" msgstr "" -#: src/hal/utils/scope_horiz.c:459 -msgid "Realtime component not loaded" +#: src/emc/rs274ngc/interp_check.cc:298 +msgid "" +"L word with no G10, cutter compensation, canned cycle, digital/analog input, " +"or NURBS code" msgstr "" -#: src/hal/utils/scope_horiz.c:460 +#: src/emc/rs274ngc/interp_check.cc:310 msgid "" -"HALSCOPE uses a realtime component called scope_rt'\n" -"to sample signals for display. It is not currently loaded\n" -"and attempting to load it automatically failed. More information\n" -"may be available in the terminal where halscope was started.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Load the component (using 'halcmd loadrt scope_rt'), then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " +"M53 M62 M63 M64 M65 M66 or user M code to use it" msgstr "" -#: src/hal/utils/scope_horiz.c:495 -msgid "Realtime function not linked" +#: src/emc/rs274ngc/interp_check.cc:315 +msgid "P value not an integer with M19 G2 or G3" msgstr "" -#: src/hal/utils/scope_horiz.c:496 -msgid "" -"The HALSCOPE realtime sampling function\n" -"must be called from a HAL thread in to\n" -"determine the sampling rate.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Select a thread name and multiplier then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +#: src/emc/rs274ngc/interp_check.cc:317 +msgid "P value must be 0,1,or 2 with M19" msgstr "" -#: src/hal/utils/scope_horiz.c:503 -msgid "Select Sample Rate" +#: src/emc/rs274ngc/interp_check.cc:319 +msgid "P value should be 1 or greater with G2 or G3" msgstr "" -#: src/hal/utils/scope_horiz.c:504 +#: src/emc/rs274ngc/interp_check.cc:327 msgid "" -"Select a thread name and multiplier then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" -msgstr "" - -#: src/hal/utils/scope_horiz.c:526 -msgid "Thread:" +"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " +"code that uses it" msgstr "" -#: src/hal/utils/scope_horiz.c:534 -msgid "Sample Period:" +#: src/emc/rs274ngc/interp_check.cc:337 +msgid "R value must be within 0..360 with M19" msgstr "" -#: src/hal/utils/scope_horiz.c:542 -msgid "Sample Rate:" +#: src/emc/rs274ngc/interp_convert.cc:139 +msgid "You must specify both X and Y coordinates for Control Points" msgstr "" -#: src/hal/utils/scope_horiz.c:558 src/emc/usr_intf/touchy/mdi.py:78 -msgid "Thread" +#: src/emc/rs274ngc/interp_convert.cc:142 +msgid "Can specify P without X and Y only for the first control point" msgstr "" -#: src/hal/utils/scope_horiz.c:559 -msgid "Period" +#: src/emc/rs274ngc/interp_convert.cc:145 +msgid "Must specify positive weight P for every Control Point" msgstr "" -#: src/hal/utils/scope_horiz.c:619 -msgid "Multiplier:" +#: src/emc/rs274ngc/interp_convert.cc:148 +msgid "Cannot make a NURBS with 0 feedrate" msgstr "" -#: src/hal/utils/scope_horiz.c:636 -msgid "Record Length" +#: src/emc/rs274ngc/interp_convert.cc:183 +msgid "Cannot use G5.3 without G5.2 first" msgstr "" -#: src/hal/utils/scope_horiz.c:639 +#: src/emc/rs274ngc/interp_convert.cc:184 #, c-format -msgid "%5d samples (1 channel)" +msgid "" +"You must specify a number of control points at least equal to the order L = " +"%d" msgstr "" -#: src/hal/utils/scope_horiz.c:641 -#, c-format -msgid "%5d samples (2 channels)" +#: src/emc/rs274ngc/interp_convert.cc:213 +msgid "Cannot convert spline with cutter radius compensation" msgstr "" -#: src/hal/utils/scope_horiz.c:645 -#, c-format -msgid "%5d samples (4 channels)" +#: src/emc/rs274ngc/interp_convert.cc:223 +msgid "Splines must be in the XY plane" msgstr "" -#: src/hal/utils/scope_horiz.c:649 -#, c-format -msgid "%5d samples (8 channels)" +#: src/emc/rs274ngc/interp_convert.cc:228 +msgid "Splines may not have motion in Z, A, B, or C" msgstr "" -#: src/hal/utils/scope_horiz.c:653 -#, c-format -msgid "%5d samples (16 channels)" +#: src/emc/rs274ngc/interp_convert.cc:232 +msgid "Must specify both I and J with G5.1" msgstr "" -# ***: ../scripts/axis.py:624 ../scripts/axis.py:632 ../scripts/axis.py:931 -#: src/hal/utils/scope_horiz.c:708 src/hal/utils/scope_horiz.c:754 -#: src/hal/utils/scope_horiz.c:966 src/hal/utils/scope_vert.c:761 -#: src/hal/utils/scope_vert.c:853 tcl/bin/emccalib.tcl:227 -#: tcl/bin/genedit.tcl:180 tcl/bin/genedit.tcl:450 tcl/bin/halconfig.tcl:682 -#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:257 -#: tcl/bin/pickconfig.tcl:479 tcl/bin/pickconfig.tcl:506 tcl/mini.tcl:1456 -#: tcl/mini.tcl:2937 tcl/tklinuxcnc.tcl:160 tcl/tklinuxcnc.tcl:245 -#: tcl/tklinuxcnc.tcl:419 tcl/tklinuxcnc.tcl:1338 tcl/tklinuxcnc.tcl:1407 -#: tcl/tklinuxcnc.tcl:1438 tcl/tklinuxcnc.tcl:1469 tcl/tklinuxcnc.tcl:2017 -#: tcl/tklinuxcnc.tcl:2036 tcl/tklinuxcnc.tcl:2055 tcl/tklinuxcnc.tcl:2102 -#: src/emc/usr_intf/axis/scripts/axis.py:1077 -#: src/emc/usr_intf/axis/scripts/axis.py:1141 -#: src/emc/usr_intf/axis/scripts/axis.py:1458 -#: src/emc/usr_intf/axis/scripts/axis.py:2477 -#: src/emc/usr_intf/axis/scripts/axis.py:3336 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:718 -#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1720 -#: share/axis/tcl/axis.tcl:1757 -msgid "OK" +#: src/emc/rs274ngc/interp_convert.cc:251 +msgid "Must specify both I and J, or neither" msgstr "" -#: src/hal/utils/scope_horiz.c:713 src/hal/utils/scope_horiz.c:754 -#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 -#, fuzzy -msgid "Quit" -msgstr "_Avsluta" - -#: src/hal/utils/scope_horiz.c:745 -msgid "Realtime thread(s) not running" +#: src/emc/rs274ngc/interp_convert.cc:262 +msgid "Must specify both P and Q with G5" msgstr "" -#: src/hal/utils/scope_horiz.c:746 +#: src/emc/rs274ngc/interp_convert.cc:363 msgid "" -"HALSCOPE uses code in a realtime HAL thread to sample\n" -"signals for display. The HAL thread(s) are not running.\n" -"Threads are usually started by the application you are\n" -"attempting to run, or you can use the 'halcmd start' command.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Start the threads, then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +"The move just after exiting cutter compensation mode must be straight, not " +"an arc" msgstr "" -#: src/hal/utils/scope_horiz.c:779 -msgid "Pick log file to write to:" +#: src/emc/rs274ngc/interp_convert.cc:371 +msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" msgstr "" -#: src/hal/utils/scope_horiz.c:962 -msgid "Not enough channels" +#: src/emc/rs274ngc/interp_convert.cc:383 +#: src/emc/rs274ngc/interp_convert.cc:4488 +msgid "Cannot feed with zero spindle speed in feed per rev mode" msgstr "" -#: src/hal/utils/scope_horiz.c:963 -msgid "" -"This record length cannot handle the channels\n" -"that are currently enabled. Pick a shorter\n" -"record length that supports more channels." +#: src/emc/rs274ngc/interp_convert.cc:394 +#: src/emc/rs274ngc/interp_convert.cc:400 +#: src/emc/rs274ngc/interp_convert.cc:409 +#: src/emc/rs274ngc/interp_convert.cc:415 +#: src/emc/rs274ngc/interp_convert.cc:424 +#: src/emc/rs274ngc/interp_convert.cc:430 +#, c-format +msgid "%c word missing in absolute center arc" msgstr "" -#: src/hal/utils/scope_horiz.c:1051 -#, c-format +#: src/emc/rs274ngc/interp_convert.cc:662 msgid "" -"%s\n" -"per div" +"Radius of cutter compensation entry arc is not greater than the tool radius" msgstr "" -#: src/hal/utils/scope_horiz.c:1066 -#, c-format +#: src/emc/rs274ngc/interp_convert.cc:882 +#: src/emc/rs274ngc/interp_convert.cc:892 src/emc/rs274ngc/interp_queue.cc:696 msgid "" -"%s samples\n" -"at %s" +"Arc move in concave corner cannot be reached by the tool without gouging" msgstr "" -#: src/hal/utils/scope_horiz.c:1170 -msgid "nSec" +#: src/emc/rs274ngc/interp_convert.cc:918 +msgid "Arc to arc motion is invalid because the arcs have the same center" msgstr "" -#: src/hal/utils/scope_horiz.c:1173 -msgid "uSec" +#: src/emc/rs274ngc/interp_convert.cc:921 +msgid "" +"Arc to arc motion makes a corner the compensated tool can't fit in without " +"gouging" msgstr "" -#: src/hal/utils/scope_horiz.c:1177 -msgid "mSec" +#: src/emc/rs274ngc/interp_convert.cc:1053 +#: src/emc/rs274ngc/interp_convert.cc:1057 +#: src/emc/rs274ngc/interp_convert.cc:1061 +#: src/emc/rs274ngc/interp_convert.cc:3945 +#: src/emc/rs274ngc/interp_convert.cc:3948 +#: src/emc/rs274ngc/interp_convert.cc:3951 src/emc/rs274ngc/interp_find.cc:97 +#, c-format +msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" msgstr "" -#: src/hal/utils/scope_horiz.c:1181 -#: src/emc/usr_intf/pncconf/pncconf.glade:1953 -#: src/emc/usr_intf/pncconf/pncconf.glade:2825 -#: src/emc/usr_intf/pncconf/pncconf.glade:3706 -#: src/emc/usr_intf/pncconf/pncconf.glade:4587 -msgid "Sec" +#: src/emc/rs274ngc/interp_convert.cc:1563 +msgid "Cannot change control mode with cutter radius compensation on" msgstr "" -#: src/hal/utils/scope_horiz.c:1198 -#: src/emc/usr_intf/stepconf/stepconf.glade:3664 -#: src/emc/usr_intf/stepconf/stepconf.glade:4040 -#: src/emc/usr_intf/pncconf/pncconf.glade:8268 -#: src/emc/usr_intf/pncconf/pncconf.glade:8281 -#: src/emc/usr_intf/pncconf/pncconf.glade:8458 -msgid "Hz" +#: src/emc/rs274ngc/interp_convert.cc:1676 +msgid "Cannot change coordinate systems with cutter radius compensation on" msgstr "" -#: src/hal/utils/scope_horiz.c:1201 -msgid "KHz" +#: src/emc/rs274ngc/interp_convert.cc:1920 +#, c-format +msgid "G%d.1 with no D word" msgstr "" -#: src/hal/utils/scope_horiz.c:1205 -msgid "Mhz" +#: src/emc/rs274ngc/interp_convert.cc:1923 +#, c-format +msgid "G%d.1 with L word, but plane is not G18" msgstr "" -#: src/hal/utils/scope_vert.c:403 src/hal/utils/scope_vert.c:1258 -#, fuzzy, c-format -msgid "" -"Offset\n" -"%s" -msgstr "Försjutning" - -#: src/hal/utils/scope_vert.c:618 -msgid "Gain" +#: src/emc/rs274ngc/interp_convert.cc:1934 +#, c-format +msgid "G%d requires D word to be a whole number" msgstr "" -#: src/hal/utils/scope_vert.c:630 src/hal/utils/scope_trig.c:252 -msgid "Pos" +#: src/emc/rs274ngc/interp_convert.cc:1941 +#, c-format +msgid "G%d with lathe tool, but plane is not G18" msgstr "" -#: src/hal/utils/scope_vert.c:644 tcl/ngcgui_ttt.tcl:214 -#: src/emc/usr_intf/pncconf/pncconf.glade:57147 -msgid "Scale" +#: src/emc/rs274ngc/interp_convert.cc:2340 +msgid "Cannot set reference point with cutter compensation in effect" msgstr "" -#: src/hal/utils/scope_vert.c:657 -msgid "Chan Off" +#: src/emc/rs274ngc/interp_convert.cc:2859 +#, c-format +msgid "gen_restore G20/G21 failed: '%s'" msgstr "" -#: src/hal/utils/scope_vert.c:713 -#, fuzzy -msgid "Set Offset" -msgstr "Försjutning" - -#: src/hal/utils/scope_vert.c:714 +#: src/emc/rs274ngc/interp_convert.cc:2907 #, c-format msgid "" -"Set the vertical offset\n" -"for channel %d." +"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" msgstr "" -#: src/hal/utils/scope_vert.c:734 -msgid "AC Coupled" +#: src/emc/rs274ngc/interp_convert.cc:2908 +#, c-format +msgid "BUG: restore from level %d !?" msgstr "" -#: src/hal/utils/scope_vert.c:769 src/hal/utils/scope_vert.c:1171 -#: src/hal/utils/scope_trig.c:367 tcl/bin/emccalib.tcl:229 -#: tcl/bin/genedit.tcl:294 tcl/bin/halconfig.tcl:103 tcl/bin/halconfig.tcl:684 -#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:260 -#: tcl/bin/pickconfig.tcl:369 tcl/mini.tcl:1457 tcl/mini.tcl:2938 -#: tcl/mini.tcl:3110 tcl/tklinuxcnc.tcl:162 tcl/tklinuxcnc.tcl:213 -#: tcl/tklinuxcnc.tcl:420 tcl/tklinuxcnc.tcl:1339 tcl/tklinuxcnc.tcl:1408 -#: tcl/tklinuxcnc.tcl:1439 tcl/tklinuxcnc.tcl:1470 tcl/tklinuxcnc.tcl:2103 -#: src/emc/usr_intf/axis/scripts/axis.py:1404 -#: src/emc/usr_intf/axis/scripts/axis.py:1459 -#: src/emc/usr_intf/axis/scripts/axis.py:1646 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:720 -msgid "Cancel" -msgstr "Avbryt" - -#: src/hal/utils/scope_vert.c:849 -msgid "Too many channels" +#: src/emc/rs274ngc/interp_convert.cc:2909 +#, c-format +msgid "BUG: restore to level %d !?" msgstr "" -#: src/hal/utils/scope_vert.c:850 -msgid "" -"You cannot add another channel.\n" -"\n" -"Either turn off one or more channels, or shorten\n" -"the record length to allow for more channels" +#: src/emc/rs274ngc/interp_convert.cc:2928 +#, c-format +msgid "M7x: restore_settings G20/G21 failed: '%s'" msgstr "" -#: src/hal/utils/scope_vert.c:1026 -msgid "Select Channel Source" +#: src/emc/rs274ngc/interp_convert.cc:2946 +#, c-format +msgid "M7x: restore_settings failed executing: '%s': %s" msgstr "" -#: src/hal/utils/scope_vert.c:1027 +#: src/emc/rs274ngc/interp_convert.cc:3005 #, c-format -msgid "" -"Select a pin, signal, or parameter\n" -"as the source for channel %d." +msgid "Failed to restore interp state on abort '%s': %s" msgstr "" -#: src/hal/utils/scope_vert.c:1059 -msgid "Pins" +#: src/emc/rs274ngc/interp_convert.cc:3069 +msgid "No valid P word with M62" msgstr "" -#: src/hal/utils/scope_vert.c:1060 -msgid "Signals" +#: src/emc/rs274ngc/interp_convert.cc:3072 +msgid "No valid P word with M63" msgstr "" -#: src/hal/utils/scope_vert.c:1061 -msgid "Parameters" +#: src/emc/rs274ngc/interp_convert.cc:3075 +msgid "No valid P word with M64" msgstr "" -#: src/hal/utils/scope_trig.c:110 -#, c-format -msgid "Falling" +#: src/emc/rs274ngc/interp_convert.cc:3078 +msgid "No valid P word with M65" msgstr "" -#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:275 -#, c-format -msgid "Rising" +#: src/emc/rs274ngc/interp_convert.cc:3111 +msgid "invalid P-word with M66" msgstr "" -#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:283 -msgid "" -"Source\n" -"None" +#: src/emc/rs274ngc/interp_convert.cc:3126 +msgid "Cannot wait for digital input with cutter radius compensation on" msgstr "" -#: src/hal/utils/scope_trig.c:124 -#, c-format -msgid "" -"Source\n" -"Chan %2d" +#: src/emc/rs274ngc/interp_convert.cc:3138 +msgid "Cannot wait for analog input with cutter radius compensation on" msgstr "" -#: src/hal/utils/scope_trig.c:199 tcl/tklinuxcnc.tcl:827 -#: src/emc/usr_intf/touchy/touchy.glade:2469 -msgid "Auto" +#: src/emc/rs274ngc/interp_convert.cc:3152 +msgid "Invalid analog index with M67" msgstr "" -#: src/hal/utils/scope_trig.c:201 -msgid "Force" +#: src/emc/rs274ngc/interp_convert.cc:3157 +msgid "Invalid analog index with M68" msgstr "" -#: src/hal/utils/scope_trig.c:235 src/hal/utils/scope_trig.c:269 -msgid "Level" +#: src/emc/rs274ngc/interp_convert.cc:3188 +msgid "Need non-negative Q-word to specify tool number with M61" msgstr "" -#: src/hal/utils/scope_trig.c:303 -msgid "Trigger Source" +#: src/emc/rs274ngc/interp_convert.cc:3258 +msgid "Q word with M19 requires a value > 0" msgstr "" -#: src/hal/utils/scope_trig.c:304 -msgid "Select a channel to use for triggering." +#: src/emc/rs274ngc/interp_convert.cc:3286 +msgid "Cannot restore context from invalid stack frame - missing M70/M73?" msgstr "" -#: src/hal/utils/scope_trig.c:327 -msgid "Chan" +#: src/emc/rs274ngc/interp_convert.cc:3327 +#: src/emc/rs274ngc/interp_convert.cc:3344 +#: src/emc/rs274ngc/interp_convert.cc:3359 +#: src/emc/rs274ngc/interp_convert.cc:3373 +#: src/emc/rs274ngc/interp_convert.cc:3387 +msgid "Cannot enable overrides with cutter radius compensation on" msgstr "" -#: src/hal/utils/scope_trig.c:328 -msgid "Source" +#: src/emc/rs274ngc/interp_convert.cc:3334 +#: src/emc/rs274ngc/interp_convert.cc:3349 +#: src/emc/rs274ngc/interp_convert.cc:3364 +#: src/emc/rs274ngc/interp_convert.cc:3378 +#: src/emc/rs274ngc/interp_convert.cc:3392 +msgid "Cannot disable overrides with cutter radius compensation on" msgstr "" -#: src/emc/motion/control.c:261 -msgid "Unexpected realtime delay: check dmesg for details." +#: src/emc/rs274ngc/interp_convert.cc:3506 +#: src/emc/rs274ngc/interp_convert.cc:3507 +#: src/emc/rs274ngc/interp_convert.cc:3508 +#, c-format +msgid "Indexing axis %c can only be moved with G0" msgstr "" -#: src/emc/motion/control.c:263 +#: src/emc/rs274ngc/interp_convert.cc:3515 +#: src/emc/rs274ngc/interp_convert.cc:3517 +#: src/emc/rs274ngc/interp_convert.cc:3519 #, c-format -msgid "" -"\n" -"In recent history there were\n" -"%ld, %ld, %ld, %ld, and %ld\n" -"elapsed clocks between calls to the motion controller.\n" +msgid "Indexing axis %c can only be moved alone" msgstr "" -#: src/emc/motion/control.c:268 -#, c-format -msgid "" -"This time, there were %ld which is so anomalously\n" -"large that it probably signifies a problem with your\n" -"realtime configuration. For the rest of this run of\n" -"EMC, this message will be suppressed.\n" -"\n" +#: src/emc/rs274ngc/interp_convert.cc:3621 +msgid "Cannot probe with feed per rev mode" msgstr "" -#: src/emc/motion/control.c:384 -msgid "G38.4 move finished without breaking contact." +#: src/emc/rs274ngc/interp_convert.cc:3669 +msgid "Cannot change retract mode with cutter radius compensation on" msgstr "" -#: src/emc/motion/control.c:387 -msgid "G38.2 move finished without making contact." +#: src/emc/rs274ngc/interp_convert.cc:3703 +msgid "G10 L1 without offsets has no effect" msgstr "" -#: src/emc/motion/control.c:401 -msgid "Probe tripped during non-probe MDI command." +#: src/emc/rs274ngc/interp_convert.cc:3809 +msgid "Q number in G10 is not an integer" msgstr "" -#: src/emc/motion/control.c:429 -msgid "Probe tripped during homing motion." +#: src/emc/rs274ngc/interp_convert.cc:3810 +msgid "Invalid tool orientation" msgstr "" -#: src/emc/motion/control.c:433 -msgid "Probe tripped during a jog." +#: src/emc/rs274ngc/interp_convert.cc:3933 +msgid "I J words not allowed with G10 L2" msgstr "" -#: src/emc/motion/control.c:578 -#, c-format -msgid "fault %d during orient in progress" +#: src/emc/rs274ngc/interp_convert.cc:3954 +msgid "" +"Cannot change the active coordinate system with cutter radius compensation on" msgstr "" -#: src/emc/motion/control.c:718 -msgid "motion stopped by enable input" +#: src/emc/rs274ngc/interp_convert.cc:3962 +msgid "R not allowed in G10 L20" msgstr "" -#: src/emc/motion/control.c:741 -#, c-format -msgid "joint %d on limit switch error" +#: src/emc/rs274ngc/interp_convert.cc:4550 +msgid "Spindle not turning in G33" msgstr "" -#: src/emc/motion/control.c:753 -#, c-format -msgid "joint %d amplifier fault" +#: src/emc/rs274ngc/interp_convert.cc:4560 +msgid "Spindle not turning in G33.1" msgstr "" -#: src/emc/motion/control.c:762 -#, c-format -msgid "joint %d following error" +#: src/emc/rs274ngc/interp_convert.cc:4603 +msgid "BUG: An axis incorrectly moved along with an indexer" msgstr "" -#: src/emc/motion/control.c:1444 -#, c-format -msgid "Exceeded positive soft limit on joint %d" +#: src/emc/rs274ngc/interp_convert.cc:4616 +msgid "BUG: trying to index incorrect axis" msgstr "" -#: src/emc/motion/control.c:1449 -#, c-format -msgid "Exceeded negative soft limit on joint %d" +#: src/emc/rs274ngc/interp_convert.cc:4708 +msgid "Cannot use G76 threading cycle with cutter radius compensation on" msgstr "" -#: src/emc/motion/command.c:159 -#, c-format -msgid "Can't jog invalid joint number %d." +#: src/emc/rs274ngc/interp_convert.cc:4711 +msgid "In G76, I must not be 0" msgstr "" -#: src/emc/motion/command.c:163 -#, c-format -msgid "Can't jog joint %d further past max hard limit." +#: src/emc/rs274ngc/interp_convert.cc:4713 +msgid "In G76, J must be greater than 0" msgstr "" -#: src/emc/motion/command.c:168 -#, c-format -msgid "Can't jog joint %d further past min hard limit." +#: src/emc/rs274ngc/interp_convert.cc:4715 +msgid "In G76, K must be greater than J" msgstr "" -#: src/emc/motion/command.c:174 -#, c-format -msgid "Can't jog joint %d further past max soft limit." +#: src/emc/rs274ngc/interp_convert.cc:4858 +msgid "" +"Length of cutter compensation entry move is not greater than the tool radius" msgstr "" -#: src/emc/motion/command.c:179 -#, c-format -msgid "Can't jog joint %d further past min soft limit." +#: src/emc/rs274ngc/interp_convert.cc:5077 +msgid "Zero degree inside corner is invalid for cutter compensation" msgstr "" -#: src/emc/motion/command.c:237 -#, c-format -msgid "%s move on line %d would exceed joint %d's positive limit" +#: src/emc/rs274ngc/interp_convert.cc:5115 +#: src/emc/rs274ngc/interp_convert.cc:5123 +msgid "" +"Arc to straight motion makes a corner the compensated tool can't fit in " +"without gouging" msgstr "" -#: src/emc/motion/command.c:240 -#, c-format -msgid "%s move in MDI would exceed joint %d's positive limit" +#: src/emc/rs274ngc/interp_convert.cc:5207 +msgid "Cannot change tools with cutter radius compensation on" msgstr "" -#: src/emc/motion/command.c:247 -#, c-format -msgid "%s move on line %d would exceed joint %d's negative limit" +#: src/emc/rs274ngc/interp_convert.cc:5328 +msgid "Cannot change tool offset with cutter radius compensation on" msgstr "" -#: src/emc/motion/command.c:250 +#: src/emc/rs274ngc/interp_queue.cc:694 #, c-format -msgid "%s move in MDI would exceed joint %d's negative limit" +msgid "" +"BUG: cutter compensation has generated an invalid arc with mismatched radii " +"r1 %f r2 %f\n" msgstr "" -#: src/emc/motion/command.c:500 -msgid "all joints must be homed before going into coordinated mode" +#: src/emc/rs274ngc/interp_queue.cc:716 +msgid "BUG: Unsupported plane in cutter compensation" msgstr "" -#: src/emc/motion/command.c:521 -msgid "all joints must be homed before going into teleop mode" +#: src/emc/rs274ngc/interp_queue.cc:729 +msgid "" +"Straight traverse in concave corner cannot be reached by the tool without " +"gouging" msgstr "" -#: src/emc/motion/command.c:675 src/emc/motion/command.c:741 -#: src/emc/motion/command.c:814 -msgid "Can't jog joint in coordinated mode." +#: src/emc/rs274ngc/interp_queue.cc:757 +#, c-format +msgid "BUG: Unsupported plane [%d] in cutter compensation" msgstr "" -#: src/emc/motion/command.c:680 src/emc/motion/command.c:746 -#: src/emc/motion/command.c:819 -msgid "Can't jog joint when not enabled." +#: src/emc/rs274ngc/interp_queue.cc:771 +msgid "" +"Straight feed in concave corner cannot be reached by the tool without gouging" msgstr "" -#: src/emc/motion/command.c:685 src/emc/motion/command.c:824 -msgid "Can't jog any joints while homing." +#: src/emc/rs274ngc/interp_cycles.cc:630 +msgid "Cannot feed with zero feed rate" msgstr "" -#: src/emc/motion/command.c:751 -msgid "Can't jog any joint while homing." +#: src/emc/rs274ngc/interp_cycles.cc:631 +msgid "Cannot use inverse time feed with canned cycles" msgstr "" -#: src/emc/motion/command.c:881 -msgid "need to be enabled, in coord mode for linear move" +#: src/emc/rs274ngc/interp_cycles.cc:632 +msgid "Cannot use canned cycles with cutter compensation on" msgstr "" -#: src/emc/motion/command.c:891 -msgid "can't do linear move with limits exceeded" +#: src/emc/rs274ngc/interp_cycles.cc:829 +msgid "G17 canned cycle is not possible on a machine without Z axis" msgstr "" -#: src/emc/motion/command.c:910 -msgid "can't add linear move" +#: src/emc/rs274ngc/interp_cycles.cc:1015 +msgid "G17.1 canned cycle is not possible on a machine without W axis" msgstr "" -#: src/emc/motion/command.c:930 -msgid "need to be enabled, in coord mode for circular move" +#: src/emc/rs274ngc/interp_cycles.cc:1231 +msgid "G19 canned cycle is not possible on a machine without X axis" msgstr "" -#: src/emc/motion/command.c:940 -msgid "can't do circular move with limits exceeded" +#: src/emc/rs274ngc/interp_cycles.cc:1399 +msgid "G19.1 canned cycle is not possible on a machine without U axis" msgstr "" -#: src/emc/motion/command.c:958 -msgid "can't add circular move" +#: src/emc/rs274ngc/interp_cycles.cc:1624 +msgid "G18 canned cycle is not possible on a machine without Y axis" msgstr "" -#: src/emc/motion/command.c:1048 -msgid "MOTION: can't STEP while already executing" +#: src/emc/rs274ngc/interp_cycles.cc:1791 +msgid "G18.1 canned cycle is not possible on a machine without V axis" msgstr "" -#: src/emc/motion/command.c:1140 -msgid "can't enable motion, enable input is false" +#: src/emc/rs274ngc/interp_find.cc:170 +msgid "Cannot use polar coordinates with G53" msgstr "" -#: src/emc/motion/command.c:1213 -msgid "must be in joint mode to home" +#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 +#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 +#: src/emc/rs274ngc/interp_find.cc:347 +msgid "Cannot specify X or Y words with polar coordinate" msgstr "" -#: src/emc/motion/command.c:1224 src/emc/motion/command.c:1235 -msgid "homing sequence already in progress" +#: src/emc/rs274ngc/interp_find.cc:272 +msgid "Must specify angle in polar coordinate if at the origin" msgstr "" -#: src/emc/motion/command.c:1233 -msgid "homing already in progress" +#: src/emc/rs274ngc/interp_find.cc:338 +msgid "" +"Incremental motion with polar coordinates is indeterminate when at the origin" msgstr "" -#: src/emc/motion/command.c:1263 -msgid "must be in joint mode or disabled to unhome" +#: src/emc/rs274ngc/interp_find.cc:348 +msgid "G91 motion with polar coordinates is indeterminate when at the origin" msgstr "" -#: src/emc/motion/command.c:1275 src/emc/motion/command.c:1298 +#: src/emc/rs274ngc/interp_find.cc:720 #, c-format -msgid "Cannot unhome while homing, joint %d" +msgid "Requested tool %d not found in the tool table" msgstr "" -#: src/emc/motion/command.c:1279 src/emc/motion/command.c:1302 -#, c-format -msgid "Cannot unhome while moving, joint %d" +#: src/emc/rs274ngc/interp_internal.cc:161 +msgid "Cannot use polar coordinate on a machine lacking X or Y axes" msgstr "" -#: src/emc/motion/command.c:1307 -#, c-format -msgid "Cannot unhome inactive joint %d" +#: src/emc/rs274ngc/interp_internal.cc:162 +msgid "Cannot use polar coordinate except in G17 plane" msgstr "" -#: src/emc/motion/command.c:1311 -#, c-format -msgid "Cannot unhome invalid joint %d (max %d)" +#: src/emc/rs274ngc/interp_internal.cc:163 +msgid "Cannot specify both polar coordinate and X word" msgstr "" -#: src/emc/motion/command.c:1338 -msgid "need to be enabled, in coord mode for probe move" +#: src/emc/rs274ngc/interp_internal.cc:164 +msgid "Cannot specify both polar coordinate and Y word" msgstr "" -#: src/emc/motion/command.c:1348 -msgid "can't do probe move with limits exceeded" +#: src/emc/rs274ngc/interp_internal.cc:185 +#: src/emc/rs274ngc/interp_internal.cc:199 +#: src/emc/rs274ngc/interp_internal.cc:214 +msgid "Polar coordinates can only be used for motion" msgstr "" -#: src/emc/motion/command.c:1362 -msgid "Probe is already clear when starting G38.4 or G38.5 move" +#: src/emc/rs274ngc/interp_read.cc:1150 src/emc/rs274ngc/interp_read.cc:1154 +#, c-format +msgid "Bad character '\\%03o' used" msgstr "" -#: src/emc/motion/command.c:1364 -msgid "Probe is already tripped when starting G38.2 or G38.3 move" +#: src/emc/rs274ngc/interp_read.cc:1154 +#, c-format +msgid "Bad character '%c' used" msgstr "" -#: src/emc/motion/command.c:1376 -msgid "can't add probe move" +#: src/emc/rs274ngc/interp_read.cc:1678 +msgid "Left bracket missing after 'while'" msgstr "" -#: src/emc/motion/command.c:1400 -msgid "need to be enabled, in coord mode for rigid tap move" +#: src/emc/rs274ngc/interp_read.cc:1693 +msgid "Left bracket missing after 'repeat'" msgstr "" -#: src/emc/motion/command.c:1410 -msgid "can't do rigid tap move with limits exceeded" +#: src/emc/rs274ngc/interp_read.cc:1708 +msgid "Left bracket missing after 'if'" msgstr "" -#: src/emc/motion/command.c:1421 -msgid "can't add rigid tap move" +#: src/emc/rs274ngc/interp_read.cc:1723 +msgid "Left bracket missing after 'elseif'" msgstr "" -#: src/emc/motion/command.c:1435 -msgid "need to be enabled, in teleop mode for teleop move" +#: src/emc/rs274ngc/interp_read.cc:1926 +msgid "Cannot read current position with cutter radius compensation on" msgstr "" -#: src/emc/motion/command.c:1605 -#, c-format -msgid "joint %d: too many compensation entries" +#: src/emc/rs274ngc/interp_read.cc:1941 +msgid "Expected # reading parameter" msgstr "" -#: src/emc/motion/command.c:1611 -#, c-format -msgid "joint %d: compensation values must increase" +#: src/emc/rs274ngc/interp_read.cc:1943 +msgid "Expected ] reading bracketed parameter" msgstr "" -#: src/emc/motion/command.c:1640 +#: src/emc/rs274ngc/interp_read.cc:2615 #, c-format -msgid "unrecognized command %d" +msgid "bad number format (conversion failed) parsing '%s'" msgstr "" -#: src/emc/motion/motion.c:185 -msgid "MOTION: hal_init() failed\n" +#: src/emc/rs274ngc/interp_read.cc:2616 +#, c-format +msgid "bad number format (trailing characters) parsing '%s'" msgstr "" -#: src/emc/motion/motion.c:190 -#, c-format -msgid "MOTION: num_joints is %d, must be between 1 and %d\n" +#: src/emc/rs274ngc/interp_read.cc:2706 +msgid "Calculation resulted in 'not a number'" msgstr "" -#: src/emc/motion/motion.c:197 -#, c-format -msgid "MOTION: num_dio is %d, must be between 1 and %d\n" +#: src/emc/rs274ngc/interp_read.cc:2708 +msgid "Calculation resulted in 'infinity'" msgstr "" -#: src/emc/motion/motion.c:204 +#: src/emc/rs274ngc/interp_read.cc:3001 #, c-format -msgid "MOTION: num_aio is %d, must be between 1 and %d\n" +msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" msgstr "" -#: src/emc/motion/motion.c:212 -msgid "MOTION: init_hal_io() failed\n" +#: src/emc/rs274ngc/interp_read.cc:3113 +msgid "Multiple U words on one line" msgstr "" -#: src/emc/motion/motion.c:221 -msgid "MOTION: init_comm_buffers() failed\n" +#: src/emc/rs274ngc/interp_read.cc:3129 +msgid "Multiple V words on one line" msgstr "" -#: src/emc/motion/motion.c:229 -msgid "MOTION: init_threads() failed\n" +#: src/emc/rs274ngc/interp_read.cc:3145 +msgid "Multiple W words on one line" msgstr "" -#: src/emc/motion/motion.c:254 +#: src/emc/rs274ngc/interp_o_word.cc:97 #, c-format -msgid "MOTION: hal_stop_threads() failed, returned %d\n" +msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" msgstr "" -#: src/emc/motion/motion.c:260 +#: src/emc/rs274ngc/interp_o_word.cc:722 #, c-format -msgid "MOTION: rtapi_shmem_delete() failed, returned %d\n" +msgid "%d: not in a subroutine definition: '%s'" msgstr "" -#: src/emc/motion/motion.c:266 +#: src/emc/rs274ngc/interp_o_word.cc:759 src/emc/rs274ngc/interp_o_word.cc:809 #, c-format -msgid "MOTION: hal_exit() failed, returned %d\n" +msgid "%d: duplicate O-word label: '%s' - defined in line %d" msgstr "" -#: src/emc/motion/motion.c:289 -msgid "MOTION: emcmot_hal_data malloc failed\n" +#: src/emc/rs274ngc/interp_o_word.cc:862 +#, c-format +msgid "%d: duplicate O-word label - already defined in line %d: '%s'" msgstr "" -#: src/emc/motion/motion.c:597 +#: src/emc/rs274ngc/interp_o_word.cc:886 src/emc/rs274ngc/interp_o_word.cc:944 +#: src/emc/rs274ngc/interp_o_word.cc:978 src/emc/rs274ngc/interp_o_word.cc:996 +#: src/emc/rs274ngc/interp_o_word.cc:1013 +#: src/emc/rs274ngc/interp_o_word.cc:1038 #, c-format -msgid "MOTION: joint %d pin/param export failed\n" +msgid "%d: undefined O-word label: '%s'" msgstr "" -#: src/emc/motion/homing.c:80 src/emc/motion/homing.c:748 +#: src/emc/rs274ngc/interp_o_word.cc:889 src/emc/rs274ngc/interp_o_word.cc:947 #, c-format -msgid "hit limit in home state %d" +msgid "%d: no matching 'if' label: '%s' (found '%s' in line %d)" msgstr "" -#: src/emc/motion/homing.c:90 +#: src/emc/rs274ngc/interp_o_word.cc:981 #, c-format -msgid "end of move in home state %d" +msgid "%d: no matching label: '%s' (found '%s' in line %d): '%s'" msgstr "" -#: src/emc/motion/homing.c:185 +#: src/emc/rs274ngc/interp_o_word.cc:999 src/emc/rs274ngc/interp_o_word.cc:1016 #, c-format -msgid "unknown state '%d' during homing sequence" +msgid "%d: no matching while/do label: '%s' (found '%s' in line %d)" msgstr "" -#: src/emc/motion/homing.c:246 -msgid "Cannot home while shared home switch is closed" +#: src/emc/rs274ngc/interp_o_word.cc:1042 +#, c-format +msgid "%d: no matching label: '%s' (found '%s' in line %d)" msgstr "" -#: src/emc/motion/homing.c:290 -msgid "" -"invalid homing config: non-zero LATCH_VEL needs either SEARCH_VEL or " -"USE_INDEX" +#: src/emc/rs274ngc/interp_namedparams.cc:166 +#, c-format +msgid "Named parameter #<%s> not defined" msgstr "" -#: src/emc/motion/homing.c:299 -msgid "invalid homing config: non-zero SEARCH_VEL needs LATCH_VEL" +#: src/emc/rs274ngc/interp_namedparams.cc:196 +#, c-format +msgid "cant open ini file '%s'" msgstr "" -#: src/emc/motion/homing.c:447 -msgid "Home switch inactive before start of backoff move" +#: src/emc/rs274ngc/interp_namedparams.cc:213 +#, c-format +msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" msgstr "" -#: src/emc/motion/homing.c:495 -msgid "Home switch active before start of latch move" +#: src/emc/rs274ngc/interp_namedparams.cc:237 +#, c-format +msgid "fetch_hal_param: hal_init(%s): %d" msgstr "" -#: src/emc/motion/homing.c:551 -msgid "Home switch inactive before start of latch move" +#: src/emc/rs274ngc/interp_namedparams.cc:238 +#, c-format +msgid "fetch_hal_param: hal_ready(): %d" msgstr "" -#: src/emc/motion/homing.c:797 +#: src/emc/rs274ngc/interp_namedparams.cc:419 #, c-format -msgid "unknown state '%d' during homing" +msgid "Internal error: Could not assign #<%s>" msgstr "" -#: tcl/bin/emccalib.tcl:80 -msgid "LinuxCNC Servo Axis Calibration" +#: src/emc/rs274ngc/interp_namedparams.cc:427 +#, c-format +msgid "Cannot assign to read-only parameter #<%s>" msgstr "" -#: tcl/bin/emccalib.tcl:90 -msgid "Save To File" +#: src/emc/rs274ngc/interp_namedparams.cc:731 +#, c-format +msgid "BUG: lookup_named_param(%s): unhandled index=%fn" msgstr "" -#: tcl/bin/emccalib.tcl:106 tcl/bin/genedit.tcl:77 tcl/bin/halconfig.tcl:151 -#: tcl/bin/halshow.tcl:85 tcl/mini.tcl:2516 tcl/tklinuxcnc.tcl:719 -#: tcl/ngcgui.tcl:549 -#, fuzzy -msgid "File" -msgstr "_Fil" - -#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:231 tcl/bin/halconfig.tcl:153 -#: tcl/mini.tcl:3558 src/emc/usr_intf/touchy/touchy.glade:2420 -msgid "Refresh" +#: src/emc/rs274ngc/rs274ngc_pre.cc:1407 src/emc/rs274ngc/rs274ngc_pre.cc:1482 +msgid "Queue is not empty after tool change" msgstr "" -#: tcl/bin/emccalib.tcl:110 tcl/bin/genedit.tcl:82 tcl/bin/halconfig.tcl:155 -#: tcl/mini.tcl:2535 -msgid "Save" +#: src/emc/rs274ngc/rs274ngc_pre.cc:1786 +#, c-format +msgid "Unable to open parameter file: '%s'" msgstr "" -#: tcl/bin/emccalib.tcl:159 tcl/bin/halconfig.tcl:623 -#, tcl-format -msgid "Tune %d" +#: src/emc/rs274ngc/rs274ngc_return.hh:19 +msgid "A file is already open" msgstr "" -#: tcl/bin/emccalib.tcl:160 tcl/bin/halconfig.tcl:628 -msgid "INI Name" +#: src/emc/rs274ngc/rs274ngc_return.hh:21 +msgid "All axes missing with g52 or g92" msgstr "" -#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:629 -msgid "HAL's Value" +#: src/emc/rs274ngc/rs274ngc_return.hh:22 +msgid "All axes missing with motion code" msgstr "" -#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:631 -msgid "Next Value" +#: src/emc/rs274ngc/rs274ngc_return.hh:23 +msgid "Arc radius too small to reach end point" msgstr "" -#: tcl/bin/emccalib.tcl:225 tcl/bin/halconfig.tcl:680 -#: tcl/bin/halconfig.tcl:731 -msgid "Test" +#: src/emc/rs274ngc/rs274ngc_return.hh:24 +msgid "Argument to acos out of range" msgstr "" -#: tcl/bin/emccalib.tcl:358 tcl/bin/halconfig.tcl:883 -#, tcl-format -msgid "" -"The HAL parameter \n" -" %s \n" -" has changed. \n" -" Really quit?" +#: src/emc/rs274ngc/rs274ngc_return.hh:25 +msgid "Argument to asin out of range" msgstr "" -#: tcl/bin/emccalib.tcl:383 tcl/bin/halconfig.tcl:1170 -msgid "" -"Not permitted to save here.\n" -"\n" -" You need to copy a configuration to your home directory and work there." +#: src/emc/rs274ngc/rs274ngc_return.hh:26 +msgid "Attempt to divide by zero" msgstr "" -#: tcl/bin/emccalib.tcl:457 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 -#: tcl/bin/pickconfig.tcl:544 tcl/bin/pickconfig.tcl:555 -#: tcl/scripts/Set_Coordinates.tcl:205 tcl/scripts/Set_Coordinates.tcl:228 -#, tcl-format -msgid "can't save %s" +#: src/emc/rs274ngc/rs274ngc_return.hh:27 +msgid "Attempt to raise negative to non integer power" msgstr "" -#: tcl/bin/emcdebug.tcl:166 tcl/bin/emcdebug.tcl:177 -msgid "LinuxCNC Debug" +#: src/emc/rs274ngc/rs274ngc_return.hh:28 +msgid "Bad format unsigned integer" msgstr "" -#: tcl/bin/emcdebug.tcl:185 -msgid "Invalid INI file entries" +#: src/emc/rs274ngc/rs274ngc_return.hh:29 +msgid "Bad number format" msgstr "" -#: tcl/bin/emcdebug.tcl:186 -#, fuzzy -msgid "Configuration information" -msgstr "Hal _configuration" - -#: tcl/bin/emcdebug.tcl:187 -msgid "Use of defaults" +#: src/emc/rs274ngc/rs274ngc_return.hh:30 +msgid "Bug bad g code modal group 0" msgstr "" -#: tcl/bin/emcdebug.tcl:188 -msgid "Version information" +#: src/emc/rs274ngc/rs274ngc_return.hh:31 +msgid "Bug code not g0 or g1" msgstr "" -#: tcl/bin/emcdebug.tcl:189 -msgid "Command issuing" +#: src/emc/rs274ngc/rs274ngc_return.hh:32 +msgid "Bug code not g17 g18 or g19" msgstr "" -#: tcl/bin/emcdebug.tcl:190 -msgid "IO points" +#: src/emc/rs274ngc/rs274ngc_return.hh:33 +msgid "Bug code not g20 or g21" msgstr "" -#: tcl/bin/emcdebug.tcl:191 -msgid "NML" +#: src/emc/rs274ngc/rs274ngc_return.hh:34 +msgid "Bug code not g28 or g30" msgstr "" -#: tcl/bin/emcdebug.tcl:192 -msgid "Motion time" +#: src/emc/rs274ngc/rs274ngc_return.hh:35 +msgid "Bug code not g2 or g3" msgstr "" -#: tcl/bin/emcdebug.tcl:193 src/emc/usr_intf/axis/scripts/debuglevel.py:42 -msgid "Interpreter" +#: src/emc/rs274ngc/rs274ngc_return.hh:37 +msgid "Bug code not g4 g10 g28 g30 g52 g53 or g92 series" msgstr "" -#: tcl/bin/emcdebug.tcl:194 -msgid "RCS" +#: src/emc/rs274ngc/rs274ngc_return.hh:38 +msgid "Bug code not g61 g61.1 or g64" msgstr "" -#: tcl/bin/emcdebug.tcl:195 -msgid "Trajectory level" +#: src/emc/rs274ngc/rs274ngc_return.hh:39 +msgid "Bug code not g90 or g91" msgstr "" -#: tcl/bin/emcdebug.tcl:196 -msgid "Interpreter list" +#: src/emc/rs274ngc/rs274ngc_return.hh:40 +msgid "Bug code not g98 or g99" msgstr "" -#: tcl/bin/genedit.tcl:78 tcl/mini.tcl:2533 -msgid "New" +#: src/emc/rs274ngc/rs274ngc_return.hh:41 +msgid "Bug code not in g52 or g92 series" msgstr "" -#: tcl/bin/genedit.tcl:80 tcl/mini.tcl:1667 tcl/mini.tcl:2534 -#: tcl/tklinuxcnc.tcl:720 tcl/tklinuxcnc.tcl:1657 -#, fuzzy -msgid "Open..." -msgstr "_Öppna" - -#: tcl/bin/genedit.tcl:84 tcl/mini.tcl:2536 -msgid "Save As..." +#: src/emc/rs274ngc/rs274ngc_return.hh:42 +msgid "Bug code not in range g54 to g593" msgstr "" -#: tcl/bin/genedit.tcl:87 tcl/bin/halconfig.tcl:165 tcl/bin/halshow.tcl:92 -#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1243 -#: tcl/ngcgui.tcl:3680 -#, fuzzy -msgid "Exit" -msgstr "_Redigera" - -#: tcl/bin/genedit.tcl:91 tcl/mini.tcl:2517 -#, fuzzy -msgid "Edit" -msgstr "_Redigera" - -#: tcl/bin/genedit.tcl:92 tcl/mini.tcl:2543 -msgid "Cut" +#: src/emc/rs274ngc/rs274ngc_return.hh:43 +msgid "Bug code not m0 m1 m2 m30 m60" msgstr "" -#: tcl/bin/genedit.tcl:94 tcl/mini.tcl:2544 -#, fuzzy -msgid "Copy" -msgstr "_Kopiera" - -#: tcl/bin/genedit.tcl:96 tcl/mini.tcl:2545 -#, fuzzy -msgid "Paste" -msgstr "_Pausa" - -#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:68 -msgid "Select All" +#: src/emc/rs274ngc/rs274ngc_return.hh:44 +msgid "Bug distance mode not g90 or g91" msgstr "" -#: tcl/bin/genedit.tcl:104 tcl/bin/halconfig.tcl:192 tcl/mini.tcl:919 -#: tcl/mini.tcl:2519 tcl/tklinuxcnc.tcl:790 -#, fuzzy -msgid "Help" -msgstr "_Hjälp" +#: src/emc/rs274ngc/rs274ngc_return.hh:45 +msgid "Bug function should not have been called" +msgstr "" -#: tcl/bin/genedit.tcl:105 tcl/mini.tcl:1011 tcl/mini.tcl:2559 -#: tcl/tklinuxcnc.tcl:796 -msgid "About..." +#: src/emc/rs274ngc/rs274ngc_return.hh:46 +msgid "Bug in tool radius comp" msgstr "" -#: tcl/bin/genedit.tcl:130 -msgid "Save and Reload" +#: src/emc/rs274ngc/rs274ngc_return.hh:47 +msgid "Bug plane not xy yz or xz" msgstr "" -#: tcl/bin/genedit.tcl:133 tcl/mini.tcl:2550 -msgid "Find..." +#: src/emc/rs274ngc/rs274ngc_return.hh:48 +msgid "Bug side not right or left" msgstr "" -#: tcl/bin/genedit.tcl:135 tcl/mini.tcl:2552 -msgid "Renumber File..." +#: src/emc/rs274ngc/rs274ngc_return.hh:49 +msgid "Bug unknown motion code" msgstr "" -#: tcl/bin/genedit.tcl:140 tcl/mini.tcl:917 tcl/mini.tcl:2518 -#: tcl/tklinuxcnc.tcl:746 -msgid "Settings" +#: src/emc/rs274ngc/rs274ngc_return.hh:50 +msgid "Bug unknown operation" msgstr "" -#: tcl/bin/genedit.tcl:141 tcl/mini.tcl:2554 -msgid "No Numbering" +#: src/emc/rs274ngc/rs274ngc_return.hh:51 +msgid "Cannot change axis offsets with cutter radius comp" msgstr "" -#: tcl/bin/genedit.tcl:144 tcl/mini.tcl:2556 -msgid "Line Numbering..." +#: src/emc/rs274ngc/rs274ngc_return.hh:52 +msgid "Cannot create backup file" msgstr "" -#: tcl/bin/genedit.tcl:150 tcl/tklinuxcnc.tcl:768 -msgid "Scripts" +#: src/emc/rs274ngc/rs274ngc_return.hh:53 +msgid "Cannot do g1 with zero feed rate" msgstr "" -#: tcl/bin/genedit.tcl:177 -msgid "About TkEditor" +#: src/emc/rs274ngc/rs274ngc_return.hh:54 +msgid "Cannot do zero repeats of cycle" msgstr "" -#: tcl/bin/genedit.tcl:179 -msgid "" -"TkEditor\n" -"\n" -"Simple Tcl/Tk Text Editor\n" -"\n" -"GPL Version 2" +#: src/emc/rs274ngc/rs274ngc_return.hh:55 +msgid "Cannot make arc with zero feed rate" msgstr "" -#: tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 tcl/mini.tcl:1775 -#: tcl/tklinuxcnc.tcl:451 src/emc/task/emctaskmain.cc:2072 -#, c-format, tcl-format -msgid "can't open %s" +#: src/emc/rs274ngc/rs274ngc_return.hh:56 +msgid "Cannot open backup file" msgstr "" -#: tcl/bin/genedit.tcl:267 tcl/mini.tcl:3090 -msgid "Find" +#: src/emc/rs274ngc/rs274ngc_return.hh:57 +msgid "Cannot open variable file" msgstr "" -#: tcl/bin/genedit.tcl:270 -#, fuzzy -msgid "Find:" -msgstr "Spindel:" +#: src/emc/rs274ngc/rs274ngc_return.hh:58 +msgid "Cannot probe with cutter radius comp on" +msgstr "" -#: tcl/bin/genedit.tcl:276 -msgid "Replace:" +#: src/emc/rs274ngc/rs274ngc_return.hh:59 +msgid "Cannot probe with zero feed rate" msgstr "" -#: tcl/bin/genedit.tcl:282 -msgid "Find All" +#: src/emc/rs274ngc/rs274ngc_return.hh:60 +msgid "Cannot put a b in canned cycle" msgstr "" -#: tcl/bin/genedit.tcl:285 tcl/mini.tcl:3113 -msgid "Replace All" +#: src/emc/rs274ngc/rs274ngc_return.hh:61 +msgid "Cannot put a c in canned cycle" msgstr "" -#: tcl/bin/genedit.tcl:288 -msgid "Skip This" +#: src/emc/rs274ngc/rs274ngc_return.hh:62 +msgid "Cannot put an a in canned cycle" msgstr "" -#: tcl/bin/genedit.tcl:291 -msgid "Replace This" +#: src/emc/rs274ngc/rs274ngc_return.hh:63 +msgid "Cannot turn cutter radius comp on when on" msgstr "" -#: tcl/bin/genedit.tcl:297 -msgid "Clear" +#: src/emc/rs274ngc/rs274ngc_return.hh:64 +msgid "Cannot use axis values with g80" msgstr "" -#: tcl/bin/genedit.tcl:422 tcl/mini.tcl:2640 -msgid "Set Line Numbering" +#: src/emc/rs274ngc/rs274ngc_return.hh:65 +msgid "Cannot use axis values without a g code that uses them" msgstr "" -#: tcl/bin/genedit.tcl:424 tcl/mini.tcl:2644 -msgid "Increment" +#: src/emc/rs274ngc/rs274ngc_return.hh:66 +msgid "Cannot use g28 or g30 with cutter radius comp" msgstr "" -#: tcl/bin/genedit.tcl:426 tcl/mini.tcl:2646 -msgid "One" +#: src/emc/rs274ngc/rs274ngc_return.hh:67 +msgid "Cannot use g53 incremental" msgstr "" -#: tcl/bin/genedit.tcl:429 tcl/mini.tcl:2648 -msgid "Two" +#: src/emc/rs274ngc/rs274ngc_return.hh:68 +msgid "Cannot use g53 with cutter radius comp" msgstr "" -#: tcl/bin/genedit.tcl:432 tcl/mini.tcl:2650 +#: src/emc/rs274ngc/rs274ngc_return.hh:69 +msgid "Cannot use two g codes that both use axis values" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:70 #, fuzzy -msgid "Five" -msgstr "_Fil" +msgid "Command too long" +msgstr "MDI-Kommando:" -#: tcl/bin/genedit.tcl:435 tcl/mini.tcl:2652 -msgid "Ten" +#: src/emc/rs274ngc/rs274ngc_return.hh:71 +msgid "Current point same as end point of arc" msgstr "" -#: tcl/bin/genedit.tcl:439 tcl/mini.tcl:2654 -msgid "Space" +#: src/emc/rs274ngc/rs274ngc_return.hh:72 +msgid "Dwell time missing with g4" msgstr "" -#: tcl/bin/genedit.tcl:441 tcl/mini.tcl:2656 -msgid "Single Space" +#: src/emc/rs274ngc/rs274ngc_return.hh:73 +msgid "Dwell time p word missing with g82" msgstr "" -#: tcl/bin/genedit.tcl:444 tcl/mini.tcl:2658 -msgid "Double Space" +#: src/emc/rs274ngc/rs274ngc_return.hh:74 +msgid "Dwell time p word missing with g86" msgstr "" -#: tcl/bin/genedit.tcl:447 tcl/mini.tcl:2660 -msgid "Tab Space" +#: src/emc/rs274ngc/rs274ngc_return.hh:75 +msgid "Dwell time p word missing with g88" msgstr "" -#: tcl/bin/genedit.tcl:453 -msgid "Next Number:" +#: src/emc/rs274ngc/rs274ngc_return.hh:76 +msgid "Dwell time p word missing with g89" msgstr "" -#: tcl/bin/genedit.tcl:474 tcl/mini.tcl:2668 -#, fuzzy -msgid "Renumber" -msgstr "_Förtsätt" - -#: tcl/bin/halconfig.tcl:88 tcl/bin/halshow.tcl:33 -#, fuzzy -msgid "HAL Configuration" -msgstr "Hal _configuration" - -#: tcl/bin/halconfig.tcl:103 -msgid "Would you like to save your configuration before you exit?" +#: src/emc/rs274ngc/rs274ngc_return.hh:77 +msgid "Equal sign missing in parameter setting" msgstr "" -#: tcl/bin/halconfig.tcl:103 -msgid "Save All" +#: src/emc/rs274ngc/rs274ngc_return.hh:78 +msgid "F word missing with inverse time arc move" msgstr "" -#: tcl/bin/halconfig.tcl:103 -msgid "Save Tune" +#: src/emc/rs274ngc/rs274ngc_return.hh:79 +msgid "F word missing with inverse time g1 move" msgstr "" -#: tcl/bin/halconfig.tcl:103 -msgid "Save as Netlist" +#: src/emc/rs274ngc/rs274ngc_return.hh:80 +msgid "File ended with no percent sign" msgstr "" -#: tcl/bin/halconfig.tcl:103 -#, fuzzy -msgid "Don't Save" -msgstr "Vy framifrån" - -#: tcl/bin/halconfig.tcl:132 -msgid "Show" +#: src/emc/rs274ngc/rs274ngc_return.hh:81 +msgid "File ended with no percent sign or program end" msgstr "" -#: tcl/bin/halconfig.tcl:133 -msgid "Watch" +#: src/emc/rs274ngc/rs274ngc_return.hh:82 +msgid "File name too long" msgstr "" -#: tcl/bin/halconfig.tcl:134 -msgid "Modify" +#: src/emc/rs274ngc/rs274ngc_return.hh:83 +msgid "G code out of range" msgstr "" -#: tcl/bin/halconfig.tcl:157 -msgid "Save INI Tuning" +#: src/emc/rs274ngc/rs274ngc_return.hh:84 +msgid "I word given for arc in yz plane" msgstr "" -#: tcl/bin/halconfig.tcl:159 -msgid "Save HAL Ini" +#: src/emc/rs274ngc/rs274ngc_return.hh:85 +msgid "I word missing with g87" msgstr "" -#: tcl/bin/halconfig.tcl:161 -msgid "Save HAL Net" +#: src/emc/rs274ngc/rs274ngc_return.hh:86 +msgid "J word given for arc in xz plane" msgstr "" -#: tcl/bin/halconfig.tcl:163 -msgid "Save and Exit" +#: src/emc/rs274ngc/rs274ngc_return.hh:87 +msgid "J word missing with g87" msgstr "" -#: tcl/bin/halconfig.tcl:168 tcl/mini.tcl:916 tcl/tklinuxcnc.tcl:739 -#, fuzzy -msgid "View" -msgstr "V_y" - -#: tcl/bin/halconfig.tcl:170 tcl/bin/halshow.tcl:104 -msgid "Expand Tree" +#: src/emc/rs274ngc/rs274ngc_return.hh:88 +msgid "K word given for arc in xy plane" msgstr "" -#: tcl/bin/halconfig.tcl:172 tcl/bin/halshow.tcl:106 -msgid "Collapse Tree" +#: src/emc/rs274ngc/rs274ngc_return.hh:89 +msgid "K word missing with g87" msgstr "" -#: tcl/bin/halconfig.tcl:175 tcl/bin/halshow.tcl:109 -msgid "Expand Pins" +#: src/emc/rs274ngc/rs274ngc_return.hh:90 +msgid "Left bracket missing after slash with atan" msgstr "" -#: tcl/bin/halconfig.tcl:177 tcl/bin/halshow.tcl:111 -msgid "Expand Parameters" +#: src/emc/rs274ngc/rs274ngc_return.hh:91 +msgid "Left bracket missing after unary operation name" msgstr "" -#: tcl/bin/halconfig.tcl:179 tcl/bin/halshow.tcl:113 -msgid "Expand Signals" +#: src/emc/rs274ngc/rs274ngc_return.hh:92 +#, c-format +msgid "M code greater than 199: M%d" msgstr "" -#: tcl/bin/halconfig.tcl:182 tcl/bin/halshow.tcl:116 -msgid "Erase Watch" +#: src/emc/rs274ngc/rs274ngc_return.hh:93 +msgid "Mixed radius ijk format for arc" msgstr "" -#: tcl/bin/halconfig.tcl:194 tcl/mini.tcl:840 tcl/mini.tcl:2785 -#, fuzzy -msgid "About" -msgstr "Om AXIS" - -# ***: ../tcl/axis.tcl:1512 -#: tcl/bin/halconfig.tcl:196 -#, fuzzy -msgid "Main" -msgstr "Maskin" - -#: tcl/bin/halconfig.tcl:476 -msgid "Enter HAL command :" +#: src/emc/rs274ngc/rs274ngc_return.hh:94 +msgid "Multiple a words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:479 tcl/bin/halconfig.tcl:528 tcl/bin/halshow.tcl:354 -msgid "Execute" +#: src/emc/rs274ngc/rs274ngc_return.hh:95 +msgid "Multiple b words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:943 tcl/bin/halshow.tcl:405 -msgid "Select a node to show." +#: src/emc/rs274ngc/rs274ngc_return.hh:96 +msgid "Multiple c words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:968 tcl/bin/halshow.tcl:429 -msgid "<-- Select a Leaf. Click on its name." +#: src/emc/rs274ngc/rs274ngc_return.hh:97 +msgid "Multiple d words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:1085 tcl/bin/halconfig.tcl:1095 -#: tcl/bin/halconfig.tcl:1102 tcl/bin/halconfig.tcl:1109 -#: tcl/bin/halconfig.tcl:1116 -#, tcl-format -msgid "Click a highlighted entry where %s should go." +#: src/emc/rs274ngc/rs274ngc_return.hh:98 +msgid "Multiple f words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:1092 -msgid "Nothing to be done for parameters here. Try the tuning page" +#: src/emc/rs274ngc/rs274ngc_return.hh:99 +msgid "Multiple h words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:1124 -#, tcl-format -msgid "%s is not a leaf, try again" +#: src/emc/rs274ngc/rs274ngc_return.hh:100 +msgid "Multiple i words on one line" msgstr "" -#: tcl/bin/halconfig.tcl:1281 -msgid "" -"Copyright Raymond E Henry. 2006\n" -"License: GPL Version 2\n" -"\n" -"Halconfig is an LinuxCNC configuration tool. It requires that you have " -"started an instance of linuxcnc.\n" -"\n" -"This script carries no warranty or liability for its use to the extent " -"allowed by law." +#: src/emc/rs274ngc/rs274ngc_return.hh:101 +msgid "Multiple j words on one line" msgstr "" -#: tcl/bin/halshow.tcl:69 -msgid " SHOW " +#: src/emc/rs274ngc/rs274ngc_return.hh:102 +msgid "Multiple k words on one line" msgstr "" -#: tcl/bin/halshow.tcl:70 -msgid " WATCH " +#: src/emc/rs274ngc/rs274ngc_return.hh:103 +msgid "Multiple l words on one line" msgstr "" -#: tcl/bin/halshow.tcl:90 -msgid "Load Watch List" +#: src/emc/rs274ngc/rs274ngc_return.hh:104 +msgid "Multiple p words on one line" msgstr "" -#: tcl/bin/halshow.tcl:102 -msgid "Tree View" +#: src/emc/rs274ngc/rs274ngc_return.hh:105 +msgid "Multiple q words on one line" msgstr "" -#: tcl/bin/halshow.tcl:349 -msgid "Test HAL command :" +#: src/emc/rs274ngc/rs274ngc_return.hh:106 +msgid "Multiple r words on one line" msgstr "" -#: tcl/bin/halshow.tcl:544 -msgid "Load a watch list" +#: src/emc/rs274ngc/rs274ngc_return.hh:107 +msgid "Multiple s words on one line" msgstr "" -#: tcl/bin/halshow.tcl:567 -msgid "Save current watch list" +#: src/emc/rs274ngc/rs274ngc_return.hh:108 +msgid "Multiple t words on one line" msgstr "" -#: tcl/bin/halshow.tcl:581 -msgid "Commands may be tested here but they will NOT be saved" +#: src/emc/rs274ngc/rs274ngc_return.hh:109 +msgid "Multiple x words on one line" msgstr "" -#: tcl/bin/pickconfig.tcl:50 -msgid "" -"Can't find the bwidget 1.7 package. There is a debian bwidget package; " -"install \n" -"it with sudo apt-get install bwidget." +#: src/emc/rs274ngc/rs274ngc_return.hh:110 +msgid "Multiple y words on one line" msgstr "" -#: tcl/bin/pickconfig.tcl:178 -msgid "No details available." +#: src/emc/rs274ngc/rs274ngc_return.hh:111 +msgid "Multiple z words on one line" msgstr "" -#: tcl/bin/pickconfig.tcl:194 -#, fuzzy -msgid "LinuxCNC Configuration Selector" -msgstr "Hal _configuration" - -#: tcl/bin/pickconfig.tcl:215 -msgid "" -"Welcome to LinuxCNC.\n" -"\n" -"Select a machine configuration from the list on the left.\n" -"Details about the selected configuration will appear in the display on the " -"right.\n" -"Click 'OK' to run the selected configuration" +#: src/emc/rs274ngc/rs274ngc_return.hh:112 +msgid "Must use g0 or g1 with g53" msgstr "" -#: tcl/bin/pickconfig.tcl:271 -#, fuzzy -msgid "My Configurations" -msgstr "Hal _configuration" - -#: tcl/bin/pickconfig.tcl:274 -#, fuzzy -msgid "Sample Configurations" -msgstr "Hal _configuration" - -#: tcl/bin/pickconfig.tcl:332 -#, tcl-format -msgid "ERROR: no configurations found in path '%s'" +#: src/emc/rs274ngc/rs274ngc_return.hh:113 +msgid "Negative argument to sqrt" msgstr "" -#: tcl/bin/pickconfig.tcl:369 -#, fuzzy -msgid "Copy Configuration?" -msgstr "Hal _configuration" - -#: tcl/bin/pickconfig.tcl:369 -#, tcl-format -msgid "" -"Would you like to copy the %s configuration to your home directory so you " -"can customize it?" +#: src/emc/rs274ngc/rs274ngc_return.hh:114 +msgid "Negative d word tool radius index used" msgstr "" -#: tcl/bin/pickconfig.tcl:369 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:563 -msgid "Yes" +#: src/emc/rs274ngc/rs274ngc_return.hh:115 +msgid "Negative f word used" msgstr "" -#: tcl/bin/pickconfig.tcl:479 -#, fuzzy -msgid "Configuration Copied" -msgstr "Hal _configuration" - -#: tcl/bin/pickconfig.tcl:479 -#, tcl-format -msgid "" -"The configuration file has been copied to %s. Next time, choose this " -"location when starting LinuxCNC." +#: src/emc/rs274ngc/rs274ngc_return.hh:116 +msgid "Negative g code used" msgstr "" -#: tcl/bin/pickconfig.tcl:506 -msgid "Shortcut Created" +#: src/emc/rs274ngc/rs274ngc_return.hh:117 +msgid "Negative h word used" msgstr "" -#: tcl/bin/pickconfig.tcl:506 -msgid "" -"A shortcut to this configuration file has been created on your desktop. You " -"can use it to automatically launch this configuration." +#: src/emc/rs274ngc/rs274ngc_return.hh:118 +msgid "Negative l word used" msgstr "" -#: tcl/bin/pickconfig.tcl:511 -msgid "Create Desktop Shortcut" +#: src/emc/rs274ngc/rs274ngc_return.hh:119 +msgid "Negative m code used" msgstr "" -#: tcl/bin/tkbackplot.tcl:110 -msgid "TkLinuxCNC BackPlot" +#: src/emc/rs274ngc/rs274ngc_return.hh:120 +msgid "Negative or zero q value used" msgstr "" -# ***: ../tcl/axis.tcl:1470 -#: tcl/bin/tkbackplot.tcl:125 -#, fuzzy -msgid "SETUP" -msgstr "#Nödstopp?" +#: src/emc/rs274ngc/rs274ngc_return.hh:121 +msgid "Negative p word used" +msgstr "" -# ***: ../tcl/axis.tcl:1471 -#: tcl/bin/tkbackplot.tcl:127 +#: src/emc/rs274ngc/rs274ngc_return.hh:122 #, fuzzy -msgid "RESET" -msgstr "#Återställ Nödstopp" +msgid "Negative spindle speed used" +msgstr "Matnings överjusterning (%): #guessing again" -#: tcl/bin/tkbackplot.tcl:129 -msgid "CANCEL" +#: src/emc/rs274ngc/rs274ngc_return.hh:123 +msgid "Negative tool id used" msgstr "" -#: tcl/bin/tkbackplot.tcl:250 -msgid "AXIS" +#: src/emc/rs274ngc/rs274ngc_return.hh:124 +msgid "Nested comment found" msgstr "" -#: tcl/bin/tkbackplot.tcl:251 -msgid "OFFSET" +#: src/emc/rs274ngc/rs274ngc_return.hh:125 +msgid "No characters found in reading real value" msgstr "" -#: tcl/bin/tkbackplot.tcl:252 -msgid "ANGLE" +#: src/emc/rs274ngc/rs274ngc_return.hh:126 +msgid "Non integer value for integer" msgstr "" -#: tcl/bin/tkbackplot.tcl:253 -msgid "DIRECTION" +#: src/emc/rs274ngc/rs274ngc_return.hh:127 +msgid "Null missing after newline" msgstr "" -#: tcl/bin/tkbackplot.tcl:270 -msgid "SIZE :" +#: src/emc/rs274ngc/rs274ngc_return.hh:128 +msgid "Parameter file out of order" msgstr "" -#: tcl/mini.tcl:490 -#, tcl-format -msgid "JOG %s +" +#: src/emc/rs274ngc/rs274ngc_return.hh:129 +msgid "Parameter number out of range" msgstr "" -#: tcl/mini.tcl:491 -#, tcl-format -msgid "JOG %s -" +#: src/emc/rs274ngc/rs274ngc_return.hh:130 +msgid "Parameter is readonly" msgstr "" -#: tcl/mini.tcl:492 -#, tcl-format -msgid "" -"%s\n" -"\n" -"Z\n" -"E\n" -"R\n" -"O" +#: src/emc/rs274ngc/rs274ngc_return.hh:131 +msgid "Q word missing with g83" msgstr "" -#: tcl/mini.tcl:840 -msgid "" -"TkMini \n" -"\n" -"Tcl/Tk GUI for Enhanced Machine Controller\n" -"\n" -"GPL Copyright 2003 \n" -"Ray Henry \n" -"\n" -" 3D backplotter by Paul Corner \n" -" \n" -"This software comes with ABSOLUTELY NO GUARANTEE! \n" -"For details see the copyright.html file in this directory." +#: src/emc/rs274ngc/rs274ngc_return.hh:132 +msgid "Queue is not empty after probing" msgstr "" -#: tcl/mini.tcl:915 -#, fuzzy -msgid "Program" -msgstr "Pro_gram" - -#: tcl/mini.tcl:918 -msgid "Info" +#: src/emc/rs274ngc/rs274ngc_return.hh:133 +msgid "R clearance plane unspecified in cycle" msgstr "" -#: tcl/mini.tcl:923 -msgid "Backplot" +#: src/emc/rs274ngc/rs274ngc_return.hh:134 +msgid "R i j k words all missing for arc" msgstr "" -#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:6125 -#, fuzzy -msgid "Editor" -msgstr "_Redigera" +#: src/emc/rs274ngc/rs274ngc_return.hh:135 +msgid "R less than x in cycle in yz plane" +msgstr "" -#: tcl/mini.tcl:927 -#, fuzzy -msgid "Offsets" -msgstr "Försjutning" +#: src/emc/rs274ngc/rs274ngc_return.hh:136 +msgid "R less than y in cycle in xz plane" +msgstr "" -#: tcl/mini.tcl:929 -msgid "Tools" +#: src/emc/rs274ngc/rs274ngc_return.hh:137 +msgid "R less than z in cycle in xy plane" msgstr "" -#: tcl/mini.tcl:951 tcl/mini.tcl:3565 tcl/tklinuxcnc.tcl:732 -#, fuzzy -msgid "Reset" -msgstr "_Förtsätt" +#: src/emc/rs274ngc/rs274ngc_return.hh:138 +msgid "R word with no g code that uses it" +msgstr "" -# ***: ../tcl/axis.tcl:1514 -#: tcl/mini.tcl:960 -#, fuzzy -msgid "Position Type" -msgstr "Position:" +#: src/emc/rs274ngc/rs274ngc_return.hh:139 +msgid "Slash missing after first atan argument" +msgstr "" -#: tcl/mini.tcl:962 -msgid "Tool Info" +#: src/emc/rs274ngc/rs274ngc_return.hh:140 +msgid "Spindle not turning clockwise in g84" msgstr "" -#: tcl/mini.tcl:964 -#, fuzzy -msgid "Offset Info" -msgstr "Försjutning" +#: src/emc/rs274ngc/rs274ngc_return.hh:141 +msgid "Spindle not turning in g86" +msgstr "" -#: tcl/mini.tcl:967 -msgid "Show Restart" +#: src/emc/rs274ngc/rs274ngc_return.hh:142 +msgid "Spindle not turning in g87" msgstr "" -#: tcl/mini.tcl:968 -msgid "Hide Restart" +#: src/emc/rs274ngc/rs274ngc_return.hh:143 +msgid "Spindle not turning in g88" msgstr "" -#: tcl/mini.tcl:970 -msgid "Show Split Right" +#: src/emc/rs274ngc/rs274ngc_return.hh:144 +msgid "Sscanf failed" msgstr "" -#: tcl/mini.tcl:972 -msgid "Show Mode Full" +#: src/emc/rs274ngc/rs274ngc_return.hh:145 +msgid "Start point too close to probe point" msgstr "" -#: tcl/mini.tcl:974 -msgid "Show Popin Full" +#: src/emc/rs274ngc/rs274ngc_return.hh:146 +msgid "Too many m codes on line" msgstr "" -# ***: ../tcl/axis.tcl:1514 -#: tcl/mini.tcl:978 -#, fuzzy -msgid "Actual Position" -msgstr "Position:" +#: src/emc/rs274ngc/rs274ngc_return.hh:147 +msgid "Pocket max too large" +msgstr "" -#: tcl/mini.tcl:980 -msgid "Commanded Position" +#: src/emc/rs274ngc/rs274ngc_return.hh:148 +msgid "Tool radius not less than arc radius with comp" msgstr "" -# ***: ../tcl/axis.tcl:1514 -#: tcl/mini.tcl:983 -#, fuzzy -msgid "Machine Position" -msgstr "Position:" +#: src/emc/rs274ngc/rs274ngc_return.hh:149 +msgid "Two g codes used from same modal group" +msgstr "" -# ***: ../tcl/axis.tcl:1514 -#: tcl/mini.tcl:985 -#, fuzzy -msgid "Relative Position" -msgstr "Position:" +#: src/emc/rs274ngc/rs274ngc_return.hh:150 +msgid "Two m codes used from same modal group" +msgstr "" -#: tcl/mini.tcl:988 tcl/tklinuxcnc.tcl:747 -msgid "Calibration..." +#: src/emc/rs274ngc/rs274ngc_return.hh:151 +#, c-format +msgid "Unable to open file <%s>" msgstr "" -#: tcl/mini.tcl:990 -msgid "HAL Show..." +#: src/emc/rs274ngc/rs274ngc_return.hh:152 +msgid "Unclosed comment found" msgstr "" -#: tcl/mini.tcl:992 -msgid "HAL Config..." +#: src/emc/rs274ngc/rs274ngc_return.hh:153 +msgid "Unclosed expression" msgstr "" -#: tcl/mini.tcl:997 +#: src/emc/rs274ngc/rs274ngc_return.hh:154 #, fuzzy -msgid "Program File" -msgstr "Pro_gram" +msgid "Unknown g code used" +msgstr "Okänt verktyg %d" -#: tcl/mini.tcl:998 -#, fuzzy, tcl-format -msgid "Program file is %s" -msgstr "Program_filer %r misslyckades" +#: src/emc/rs274ngc/rs274ngc_return.hh:155 +#, fuzzy, c-format +msgid "Unknown m code used: M%d" +msgstr "Okänt verktyg %d" -#: tcl/mini.tcl:999 -msgid "Editor File" -msgstr "" +#: src/emc/rs274ngc/rs274ngc_return.hh:156 +#, fuzzy +msgid "Unknown operation" +msgstr "Okänt fel %s" -#: tcl/mini.tcl:1000 -#, tcl-format -msgid "Editor file is %s" +#: src/emc/rs274ngc/rs274ngc_return.hh:157 +msgid "Unknown operation name starting with a" msgstr "" -#: tcl/mini.tcl:1001 -msgid "Parameter File" +#: src/emc/rs274ngc/rs274ngc_return.hh:158 +msgid "Unknown operation name starting with m" msgstr "" -#: tcl/mini.tcl:1002 -#, tcl-format -msgid "Parameter file is %s" +#: src/emc/rs274ngc/rs274ngc_return.hh:159 +msgid "Unknown operation name starting with o" msgstr "" -#: tcl/mini.tcl:1003 -msgid "Tool File" +#: src/emc/rs274ngc/rs274ngc_return.hh:160 +msgid "Unknown operation name starting with x" msgstr "" -#: tcl/mini.tcl:1004 -#, tcl-format -msgid "Tool file is %s" +#: src/emc/rs274ngc/rs274ngc_return.hh:161 +msgid "Unknown word starting with a" msgstr "" -#: tcl/mini.tcl:1006 -#, fuzzy -msgid "Active G Codes" -msgstr "Aktiva G-Koder" - -#: tcl/mini.tcl:1007 -#, tcl-format -msgid "" -"Active codes include; \n" -"%s" +#: src/emc/rs274ngc/rs274ngc_return.hh:162 +msgid "Unknown word starting with c" msgstr "" -#: tcl/mini.tcl:1010 tcl/mini.tcl:2558 tcl/tklinuxcnc.tcl:791 -#, fuzzy -msgid "Help..." -msgstr "_Hjälp" - -#: tcl/mini.tcl:1027 tcl/tklinuxcnc.tcl:890 -msgid "ABORT" +#: src/emc/rs274ngc/rs274ngc_return.hh:163 +msgid "Unknown word starting with e" msgstr "" -#: tcl/mini.tcl:1038 tcl/mini.tcl:2048 -msgid "CONTINUE" +#: src/emc/rs274ngc/rs274ngc_return.hh:164 +msgid "Unknown word starting with f" msgstr "" -#: tcl/mini.tcl:1044 tcl/tklinuxcnc.tcl:828 tcl/tklinuxcnc.tcl:2248 -#: src/emc/usr_intf/touchy/touchy.glade:1264 -msgid "MDI" +#: src/emc/rs274ngc/rs274ngc_return.hh:165 +msgid "Unknown word starting with l" msgstr "" -#: tcl/mini.tcl:1048 tcl/tklinuxcnc.tcl:2239 -msgid "AUTO" +#: src/emc/rs274ngc/rs274ngc_return.hh:166 +msgid "Unknown word starting with r" msgstr "" -#: tcl/mini.tcl:1052 tcl/mini.tcl:1812 tcl/tklinuxcnc.tcl:2141 -#: tcl/tklinuxcnc.tcl:2261 -msgid "MANUAL" +#: src/emc/rs274ngc/rs274ngc_return.hh:167 +msgid "Unknown word starting with s" msgstr "" -#: tcl/mini.tcl:1106 -msgid "Tool #:" +#: src/emc/rs274ngc/rs274ngc_return.hh:168 +msgid "Unknown word starting with t" msgstr "" -#: tcl/mini.tcl:1108 -msgid "Length :" +#: src/emc/rs274ngc/rs274ngc_return.hh:169 +msgid "Unknown word where unary operation could be" msgstr "" -#: tcl/mini.tcl:1119 -#, fuzzy -msgid "Work Offsets: " -msgstr "Försjutning" - -#: tcl/mini.tcl:1121 -msgid "start offsets popup here" +#: src/emc/rs274ngc/rs274ngc_return.hh:170 +msgid "X and y words missing for arc in xy plane" msgstr "" -#: tcl/mini.tcl:1165 -msgid "start override popup here" +#: src/emc/rs274ngc/rs274ngc_return.hh:171 +msgid "X and z words missing for arc in xz plane" msgstr "" -#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1669 -#, fuzzy -msgid "Feed Override:" -msgstr "Matnings överjusterning (%): #guessing again" - -#: tcl/mini.tcl:1180 -msgid "-- MESSAGES --" +#: src/emc/rs274ngc/rs274ngc_return.hh:172 +msgid "X value unspecified in yz plane canned cycle" msgstr "" -#: tcl/mini.tcl:1230 -msgid "toggleView's not doin nothin yet" +#: src/emc/rs274ngc/rs274ngc_return.hh:173 +msgid "Y and z words missing for arc in yz plane" msgstr "" -#: tcl/mini.tcl:1282 -msgid "Can't set zero with a tool offset active so I issued G49 to cancel it." +#: src/emc/rs274ngc/rs274ngc_return.hh:174 +msgid "Y value unspecified in xz plane canned cycle" msgstr "" -#: tcl/mini.tcl:1346 -#, tcl-format -msgid "Can't update the var file while machine is in auto and %s." +#: src/emc/rs274ngc/rs274ngc_return.hh:175 +msgid "Z value unspecified in xy plane canned cycle" msgstr "" -#: tcl/mini.tcl:1400 tcl/tklinuxcnc.tcl:1227 -#, fuzzy -msgid "override limits" -msgstr "Ignorera Ändlägen" +#: src/emc/rs274ngc/rs274ngc_return.hh:176 +msgid "Zero or negative argument to ln" +msgstr "" -#: tcl/mini.tcl:1405 tcl/tklinuxcnc.tcl:1263 -#, fuzzy -msgid "home" -msgstr "Hemmaläge" +#: src/emc/rs274ngc/rs274ngc_return.hh:177 +msgid "Zero radius arc" +msgstr "" -#: tcl/mini.tcl:1426 -msgid "DEFAULT" +#: src/emc/rs274ngc/rs274ngc_return.hh:178 +msgid "K word missing with g33/g33.1" msgstr "" -#: tcl/mini.tcl:1427 -msgid "Speed:" +#: src/emc/rs274ngc/rs274ngc_return.hh:179 +msgid "F word used with a g33/g33.1" msgstr "" -#: tcl/mini.tcl:1430 -msgid "RAPID" +#: src/emc/rs274ngc/rs274ngc_return.hh:180 +msgid "Unknown operation name starting with e" msgstr "" -#: tcl/mini.tcl:1447 tcl/tklinuxcnc.tcl:1391 -msgid "Set Jog Speed" +#: src/emc/rs274ngc/rs274ngc_return.hh:181 +msgid "Unknown operation name starting with n" msgstr "" -#: tcl/mini.tcl:1453 tcl/tklinuxcnc.tcl:1404 -msgid "Set jog speed:" +#: src/emc/rs274ngc/rs274ngc_return.hh:182 +msgid "Unknown operation name starting with g" msgstr "" -#: tcl/mini.tcl:1511 -msgid "JOG X +" +#: src/emc/rs274ngc/rs274ngc_return.hh:183 +msgid "Unknown operation name starting with l" msgstr "" -#: tcl/mini.tcl:1512 -msgid "JOG X -" +#: src/emc/rs274ngc/rs274ngc_return.hh:184 +msgid "Too many subroutine parameters" msgstr "" -#: tcl/mini.tcl:1516 -msgid "increment" +#: src/emc/rs274ngc/rs274ngc_return.hh:185 +msgid "Too many subroutine levels" msgstr "" -#: tcl/mini.tcl:1518 tcl/tklinuxcnc.tcl:602 tcl/tklinuxcnc.tcl:1249 -#: tcl/tklinuxcnc.tcl:1253 -msgid "continuous" +#: src/emc/rs274ngc/rs274ngc_return.hh:186 +msgid "Bug: call stack underrun" msgstr "" -#: tcl/mini.tcl:1520 -msgid "" -"A\n" -"L\n" -"L\n" -"\n" -"Z\n" -"E\n" -"R\n" -"O" +#: src/emc/rs274ngc/rs274ngc_return.hh:187 +msgid "Unknown control command in o word" msgstr "" -#: tcl/mini.tcl:1588 src/emc/usr_intf/touchy/touchy.glade:1422 -#, fuzzy -msgid "Spindle Forward" -msgstr "Spindelbroms på" +#: src/emc/rs274ngc/rs274ngc_return.hh:188 +msgid "Too many oword labels" +msgstr "" -#: tcl/mini.tcl:1589 src/emc/usr_intf/touchy/touchy.glade:1433 +#: src/emc/rs274ngc/rs274ngc_return.hh:189 #, fuzzy -msgid "Spindle Reverse" -msgstr "Spindelbroms på" +msgid "Unknown oword number" +msgstr "Okänt verktyg %d" -#: tcl/mini.tcl:1590 tcl/tklinuxcnc.tcl:871 -#, fuzzy -msgid "Spindle off" -msgstr "Spindelbroms av" +#: src/emc/rs274ngc/rs274ngc_return.hh:190 +msgid "Nested subroutine definition" +msgstr "" -#: tcl/mini.tcl:1592 src/emc/usr_intf/touchy/touchy.glade:1479 -#, fuzzy -msgid "Spindle Slower" -msgstr "Spindel:" +#: src/emc/rs274ngc/rs274ngc_return.hh:191 +msgid "Not in subroutine definition" +msgstr "" -#: tcl/mini.tcl:1596 src/emc/usr_intf/touchy/touchy.glade:1464 -#, fuzzy -msgid "Spindle Faster" -msgstr "Spindelbroms på" +#: src/emc/rs274ngc/rs274ngc_return.hh:192 +msgid "File not open" +msgstr "" -#: tcl/mini.tcl:1632 tcl/tklinuxcnc.tcl:1620 -msgid "MDI:" +#: src/emc/rs274ngc/rs274ngc_return.hh:193 +#, c-format +msgid "cannot reopen file %s - removed or renamed? (%s)" msgstr "" -#: tcl/mini.tcl:1669 tcl/tklinuxcnc.tcl:1658 -#: src/emc/usr_intf/stepconf/stepconf.glade:4403 -#: src/emc/usr_intf/pncconf/pncconf.glade:60509 -#: src/emc/usr_intf/pncconf/pncconf.glade:61603 -#: src/emc/usr_intf/pncconf/pncconf.glade:62696 -#: src/emc/usr_intf/pncconf/pncconf.glade:63789 -#: src/emc/usr_intf/pncconf/pncconf.glade:64889 -msgid "Run" +#: src/emc/rs274ngc/rs274ngc_return.hh:194 +msgid "Need tool prepared -Txx- for toolchange" msgstr "" -#: tcl/mini.tcl:1671 tcl/tklinuxcnc.tcl:1659 -#: src/emc/usr_intf/pncconf/pncconf.glade:60574 -#: src/emc/usr_intf/pncconf/pncconf.glade:61668 -#: src/emc/usr_intf/pncconf/pncconf.glade:62761 -#: src/emc/usr_intf/pncconf/pncconf.glade:63854 -#, fuzzy -msgid "Pause" -msgstr "_Pausa" - -#: tcl/mini.tcl:1673 tcl/tklinuxcnc.tcl:1660 -#, fuzzy -msgid "Resume" -msgstr "_Förtsätt" - -#: tcl/mini.tcl:1675 tcl/tklinuxcnc.tcl:1661 -#, fuzzy -msgid "Step" -msgstr "Stanna #Guessing again" - -#: tcl/mini.tcl:1677 tcl/tklinuxcnc.tcl:1662 -msgid "Verify" +#: src/emc/rs274ngc/rs274ngc_return.hh:195 +msgid "Cannot change planes with cutter radius compensation on" msgstr "" -#: tcl/mini.tcl:1698 -msgid "RESTART LINE" +#: src/emc/rs274ngc/rs274ngc_return.hh:196 +msgid "Cutter radius compensation allowed only in XY, XZ planes" msgstr "" -#: tcl/mini.tcl:1699 -#, fuzzy -msgid "Back" -msgstr "Broms" - -#: tcl/mini.tcl:1700 -msgid "Ahead" +#: src/emc/rs274ngc/rs274ngc_return.hh:197 +msgid "P word missing with G76" msgstr "" -#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1221 -msgid "Restart" +#: src/emc/rs274ngc/rs274ngc_return.hh:198 +msgid "I J or K words missing with G76" msgstr "" -#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 -#: tcl/tklinuxcnc.tcl:465 src/emc/usr_intf/axis/scripts/axis.py:1885 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:754 -msgid "All files" +#: src/emc/rs274ngc/rs274ngc_return.hh:199 +msgid "Cannot move rotary axes with G76" msgstr "" -#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 -#: tcl/tklinuxcnc.tcl:466 -msgid "Text files" +#: src/emc/rs274ngc/rs274ngc_return.hh:200 +msgid "Multiple e words on one line" msgstr "" -#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 -#: tcl/tklinuxcnc.tcl:467 -msgid "NC files" +#: src/emc/rs274ngc/rs274ngc_return.hh:201 +msgid "Named parameter not terminated" msgstr "" -#: tcl/mini.tcl:1753 -msgid "" -"The interpreter is running. \n" -" Pressing OK will abort and load the new program" +#: src/emc/rs274ngc/rs274ngc_return.hh:202 +msgid "Out of memory" msgstr "" -# ***: ../tcl/axis.tcl:1470 -#: tcl/mini.tcl:1886 -#, fuzzy -msgid "ESTOPPED" -msgstr "#Nödstopp?" - -# ***: ../tcl/axis.tcl:1471 -#: tcl/mini.tcl:1889 -#, fuzzy -msgid "ESTOP PUSH" -msgstr "#Återställ Nödstopp" - -# ***: ../tcl/axis.tcl:1471 -#: tcl/mini.tcl:1892 tcl/tklinuxcnc.tcl:2233 -msgid "ESTOP RESET" -msgstr "#Återställ Nödstopp" +#: src/emc/rs274ngc/rs274ngc_return.hh:203 +msgid "S word missing with G96" +msgstr "" -#: tcl/mini.tcl:1897 tcl/tklinuxcnc.tcl:2298 -msgid "SPINDLE FORWARD" +#: src/emc/rs274ngc/rs274ngc_return.hh:204 +msgid "Queue is not empty after external input" msgstr "" -#: tcl/mini.tcl:1899 tcl/tklinuxcnc.tcl:2300 -msgid "SPINDLE REVERSE" +#: src/emc/rs274ngc/rs274ngc_return.hh:205 +msgid "Can't select analog input with wait type != immediate return" msgstr "" -#: tcl/mini.tcl:1901 tcl/tklinuxcnc.tcl:2302 -msgid "SPINDLE OFF" +#: src/emc/rs274ngc/rs274ngc_return.hh:206 +msgid "Zero timeout with wait type != immediate return" msgstr "" -#: tcl/mini.tcl:1903 tcl/tklinuxcnc.tcl:2304 -msgid "SPINDLE INCREASE" +#: src/emc/rs274ngc/rs274ngc_return.hh:207 +msgid "Invalid to select both a digital and an analog input with M66" msgstr "" -#: tcl/mini.tcl:1905 tcl/tklinuxcnc.tcl:2306 -msgid "SPINDLE DECREASE" +#: src/emc/rs274ngc/rs274ngc_return.hh:208 +msgid "Need to have either a valid P or a valid E word with M66" msgstr "" -#: tcl/mini.tcl:1907 tcl/tklinuxcnc.tcl:2308 -msgid "SPINDLE ?" +#: src/emc/rs274ngc/rs274ngc_return.hh:209 +msgid "Q word missing with g73" msgstr "" -#: tcl/mini.tcl:1911 tcl/tklinuxcnc.tcl:2312 -msgid "BRAKE ON" +#: src/emc/rs274ngc/rs274ngc_return.hh:210 +msgid "Digital input selected out of bounds" msgstr "" -#: tcl/mini.tcl:1913 tcl/tklinuxcnc.tcl:2314 -msgid "BRAKE OFF" +#: src/emc/rs274ngc/rs274ngc_return.hh:211 +msgid "Analog input selected out of bounds" msgstr "" -#: tcl/mini.tcl:1915 tcl/tklinuxcnc.tcl:2316 -msgid "BRAKE ?" +#: src/emc/rs274ngc/rs274ngc_return.hh:212 +msgid "W value unspecified in UV plane canned cycle" msgstr "" -#: tcl/mini.tcl:1919 tcl/tklinuxcnc.tcl:2274 -msgid "MIST ON" +#: src/emc/rs274ngc/rs274ngc_return.hh:213 +msgid "U value unspecified in VW plane canned cycle" msgstr "" -#: tcl/mini.tcl:1921 tcl/tklinuxcnc.tcl:2276 -msgid "MIST OFF" +#: src/emc/rs274ngc/rs274ngc_return.hh:214 +msgid "V value unspecified in UW plane canned cycle" msgstr "" -#: tcl/mini.tcl:1923 tcl/tklinuxcnc.tcl:2278 -msgid "MIST ?" +#: src/emc/rs274ngc/rs274ngc_return.hh:215 +msgid "R less than W in cycle in UV plane" msgstr "" -#: tcl/mini.tcl:1927 tcl/tklinuxcnc.tcl:2282 -msgid "FLOOD ON" +#: src/emc/rs274ngc/rs274ngc_return.hh:216 +msgid "R less than U in cycle in VW plane" msgstr "" -#: tcl/mini.tcl:1929 tcl/tklinuxcnc.tcl:2284 -msgid "FLOOD OFF" +#: src/emc/rs274ngc/rs274ngc_return.hh:217 +msgid "R less than V in cycle in UW plane" msgstr "" -#: tcl/mini.tcl:1931 tcl/tklinuxcnc.tcl:2286 -msgid "FLOOD ?" +#: src/hal/utils/meter.c:200 +#, c-format +msgid "ERROR: '%s' is not a valid probe type\n" msgstr "" -#: tcl/mini.tcl:2052 -msgid "FEEDHOLD" +#: src/hal/utils/meter.c:208 +#, c-format +msgid "ERROR: no pin/signal/parameter name\n" msgstr "" -#: tcl/mini.tcl:2124 +#: src/hal/utils/meter.c:214 +#, c-format msgid "" -"TOOL SETUP \n" -" Click or tab to edit. Press enter to return to keyboard machine control." +"ERROR: -s option requires a probe type and a pin/signal/parameter name\n" msgstr "" -#: tcl/mini.tcl:2130 -msgid " TOOL NUMBER " +#: src/hal/utils/meter.c:240 tcl/tklinuxcnc.tcl:764 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6431 +msgid "Hal Meter" msgstr "" -#: tcl/mini.tcl:2131 -msgid " LENGTH " +#: src/hal/utils/meter.c:290 +msgid "_Select" msgstr "" -#: tcl/mini.tcl:2132 -msgid " DIAMETER " +#: src/hal/utils/meter.c:291 +msgid "E_xit" msgstr "" -#: tcl/mini.tcl:2133 -msgid " COMMENT " +#: src/hal/utils/meter.c:339 src/hal/utils/meter.c:367 +msgid "Select Item to Probe" msgstr "" -#: tcl/mini.tcl:2188 -msgid "Add Extra Tool" +#: src/hal/utils/meter.c:669 +msgid " _Pins " msgstr "" -#: tcl/mini.tcl:2189 -msgid "Remove Last Tool" +#: src/hal/utils/meter.c:670 +msgid " _Signals " msgstr "" -#: tcl/mini.tcl:2217 tcl/mini.tcl:2253 -#, tcl-format -msgid "Can't update the tool file while machine is in auto and %s." +#: src/hal/utils/meter.c:671 +msgid " Para_meters " msgstr "" -#: tcl/mini.tcl:2229 -msgid "This is not a good number." +#: src/hal/utils/meter.c:714 +msgid "_Close" msgstr "" -#: tcl/mini.tcl:2293 +#: src/hal/utils/scope.c:126 msgid "" -"COORDINATE SYSTEM SETUP \n" -"\n" -" Click value to edit with keyboard. Press enter to return to keyboard " -"control of machine. \n" -" " +"Usage:\n" +" halscope [-h] [-i infile] [-o outfile] [num_samples]\n" msgstr "" -#: tcl/mini.tcl:2320 tcl/scripts/Set_Coordinates.tcl:80 +#: src/hal/utils/scope.c:479 src/hal/utils/scope.c:506 #, fuzzy -msgid "Axis " -msgstr "Axel:" - -#: tcl/mini.tcl:2321 -msgid "Value " -msgstr "" - -#: tcl/mini.tcl:2326 tcl/scripts/Set_Coordinates.tcl:91 -msgid "Teach" -msgstr "" +msgid "Open Configuration File:" +msgstr "Hal _configuration" -#: tcl/mini.tcl:2334 -msgid "Write And Load File " -msgstr "" +#: src/hal/utils/scope.c:540 +#, fuzzy +msgid "_Open Configuration..." +msgstr "Hal _configuration" -#: tcl/mini.tcl:2336 -msgid "Offset By Radius" -msgstr "" +#: src/hal/utils/scope.c:546 +#, fuzzy +msgid "_Save Configuration..." +msgstr "Hal _configuration" -#: tcl/mini.tcl:2337 -msgid "Offset By Length" +#: src/hal/utils/scope.c:555 +msgid "O_pen Data File..." msgstr "" -#: tcl/mini.tcl:2342 -msgid "Subtract" +#: src/hal/utils/scope.c:562 +msgid "S_ave Data File..." msgstr "" -#: tcl/mini.tcl:2344 -msgid "Add" -msgstr "" +#: src/hal/utils/scope.c:571 share/axis/tcl/axis.tcl:96 +#, fuzzy +msgid "_Quit" +msgstr "_Avsluta" -#: tcl/mini.tcl:2366 -msgid "Zero All G54" +#: src/hal/utils/scope.c:577 +msgid "_About Halscope" msgstr "" -#: tcl/mini.tcl:2367 -msgid "Zero All G55" -msgstr "" +#: src/hal/utils/scope.c:583 share/axis/tcl/axis.tcl:501 +#, fuzzy +msgid "_File" +msgstr "_Fil" -#: tcl/mini.tcl:2368 -msgid "Zero All G56" -msgstr "" +#: src/hal/utils/scope.c:587 share/axis/tcl/axis.tcl:517 +#, fuzzy +msgid "_Help" +msgstr "_Hjälp" -#: tcl/mini.tcl:2369 -msgid "Zero All G57" +#: src/hal/utils/scope.c:646 +msgid "HAL Oscilloscope" msgstr "" -#: tcl/mini.tcl:2370 -msgid "Zero All G58" +#: src/hal/utils/scope.c:674 +msgid "Horizontal" msgstr "" -#: tcl/mini.tcl:2371 -msgid "Zero All G59" +#: src/hal/utils/scope.c:682 +msgid "Selected Channel" msgstr "" -#: tcl/mini.tcl:2372 -msgid "Zero All G59.1" +#: src/hal/utils/scope.c:688 +msgid "Run Mode" msgstr "" -#: tcl/mini.tcl:2373 -msgid "Zero All G59.2" +#: src/hal/utils/scope.c:691 +msgid "Trigger" msgstr "" -#: tcl/mini.tcl:2374 -msgid "Zero All G59.3" +#: src/hal/utils/scope.c:697 +msgid "Vertical" msgstr "" -#: tcl/mini.tcl:2375 -msgid "Zero All ????" -msgstr "" +#: src/hal/utils/scope.c:705 share/axis/tcl/axis.tcl:138 +#: share/axis/tcl/axis.tcl:1269 src/emc/usr_intf/gscreen/gscreen.py:3416 +#: src/emc/usr_intf/gscreen/gscreen.py:3417 +#: src/emc/usr_intf/gscreen/gscreen.glade:2614 +#, fuzzy +msgid "Stop" +msgstr "Av_bryt" -#: tcl/mini.tcl:2493 -msgid "Modified..." +#: src/hal/utils/scope.c:708 +msgid "Normal" msgstr "" -#: tcl/mini.tcl:2538 -msgid "Save and Load" +#: src/hal/utils/scope.c:711 +msgid "Single" msgstr "" -#: tcl/mini.tcl:2540 -msgid "Undo" +#: src/hal/utils/scope.c:714 +msgid "Roll" msgstr "" -#: tcl/mini.tcl:2541 -msgid "Redo" -msgstr "" +#: src/hal/utils/scope_horiz.c:130 src/emc/usr_intf/gscreen/gscreen.glade:3419 +#, fuzzy +msgid "Zoom" +msgstr "Zooma in [+]" -#: tcl/mini.tcl:2546 -msgid "Delete" +#: src/hal/utils/scope_horiz.c:131 +msgid " Pos " msgstr "" -#: tcl/mini.tcl:2551 -msgid "Replace..." +#: src/hal/utils/scope_horiz.c:164 +msgid "" +"----- Samples\n" +"at ---- KHz" msgstr "" -#: tcl/mini.tcl:2664 -msgid "Next Number: " +#: src/hal/utils/scope_horiz.c:464 +msgid "Realtime component not loaded" msgstr "" -#: tcl/mini.tcl:2765 -msgid "Basic Help" -msgstr "" - -#: tcl/mini.tcl:2765 +#: src/hal/utils/scope_horiz.c:465 msgid "" -"This is a simple ASCII editor like many others.\n" +"HALSCOPE uses a realtime component called scope_rt'\n" +"to sample signals for display. It is not currently loaded\n" +"and attempting to load it automatically failed. More information\n" +"may be available in the terminal where halscope was started.\n" "\n" -"Ctrl+O Open\n" -"Ctrl+S Save\n" -"Ctrl+Z Undo\n" -"Ctrl+Y Redo\n" -"Ctrl+X Cut\n" -"Ctrl+C Copy\n" -"Ctrl+V Paste\n" -"Del Delete\n" -"Ctrl+A Select All\n" +"Please do one of the following:\n" "\n" -"Ctrl+F Find\n" -"Ctrl+R Replace " +"Load the component (using 'halcmd loadrt scope_rt'), then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" msgstr "" -#: tcl/mini.tcl:2785 -msgid "" -"tknotepad by Joseph Acosta. \n" -"\n" -" Modified for EMC by: Paul Corner " +#: src/hal/utils/scope_horiz.c:536 +msgid "Realtime function not linked" msgstr "" -#: tcl/mini.tcl:2793 +#: src/hal/utils/scope_horiz.c:537 msgid "" -"The contents of this file may have changed, do you wish to to save your " -"changes?" +"The HALSCOPE realtime sampling function\n" +"must be called from a HAL thread in to\n" +"determine the sampling rate.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Select a thread name and multiplier then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" msgstr "" -#: tcl/mini.tcl:2794 -msgid "New Confirm?" +#: src/hal/utils/scope_horiz.c:544 +msgid "Select Sample Rate" msgstr "" -#: tcl/mini.tcl:2928 -msgid "Print Setup" +#: src/hal/utils/scope_horiz.c:545 +msgid "" +"Select a thread name and multiplier then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" msgstr "" -#: tcl/mini.tcl:2932 -#, fuzzy -msgid "Print Command: " -msgstr "MDI-Kommando:" - -#: tcl/mini.tcl:3095 -msgid "Find what:" +#: src/hal/utils/scope_horiz.c:567 +msgid "Thread:" msgstr "" -#: tcl/mini.tcl:3101 -msgid "Replace with:" +#: src/hal/utils/scope_horiz.c:575 +msgid "Sample Period:" msgstr "" -#: tcl/mini.tcl:3109 -msgid "Find Next" +#: src/hal/utils/scope_horiz.c:583 +msgid "Sample Rate:" msgstr "" -#: tcl/mini.tcl:3112 -msgid "Replace" +#: src/hal/utils/scope_horiz.c:599 src/emc/usr_intf/touchy/mdi.py:79 +#: src/emc/usr_intf/gscreen/mdi.py:78 +msgid "Thread" msgstr "" -#: tcl/mini.tcl:3120 -msgid "Up" +#: src/hal/utils/scope_horiz.c:600 +msgid "Period" msgstr "" -#: tcl/mini.tcl:3121 -msgid "Down" +#: src/hal/utils/scope_horiz.c:638 +msgid "Multiplier:" msgstr "" -#: tcl/mini.tcl:3124 -msgid "Match case" +#: src/hal/utils/scope_horiz.c:655 +msgid "Record Length" msgstr "" -#: tcl/mini.tcl:3569 -msgid "rot-x" +#: src/hal/utils/scope_horiz.c:658 +#, c-format +msgid "%5d samples (1 channel)" msgstr "" -#: tcl/mini.tcl:3579 -msgid "rot-y" +#: src/hal/utils/scope_horiz.c:660 +#, c-format +msgid "%5d samples (2 channels)" msgstr "" -#: tcl/mini.tcl:3589 -msgid "rot-z" +#: src/hal/utils/scope_horiz.c:664 +#, c-format +msgid "%5d samples (4 channels)" msgstr "" -#: tcl/mini.tcl:3599 -msgid "zoom" +#: src/hal/utils/scope_horiz.c:668 +#, c-format +msgid "%5d samples (8 channels)" msgstr "" -# ***: ../tcl/axis.tcl:1470 -#: tcl/mini.tcl:3655 -#, fuzzy -msgid "TEST" -msgstr "#Nödstopp?" +#: src/hal/utils/scope_horiz.c:672 +#, c-format +msgid "%5d samples (16 channels)" +msgstr "" -#: tcl/mini.tcl:3699 -msgid "Hide Setup" +# ***: ../scripts/axis.py:624 ../scripts/axis.py:632 ../scripts/axis.py:931 +#: src/hal/utils/scope_horiz.c:727 src/hal/utils/scope_horiz.c:773 +#: src/hal/utils/scope_horiz.c:985 src/hal/utils/scope_vert.c:771 +#: src/hal/utils/scope_vert.c:863 tcl/bin/emccalib.tcl:232 +#: tcl/bin/genedit.tcl:180 tcl/bin/genedit.tcl:450 tcl/bin/halconfig.tcl:682 +#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:387 +#: tcl/bin/pickconfig.tcl:749 tcl/bin/pickconfig.tcl:799 tcl/mini.tcl:1456 +#: tcl/mini.tcl:2937 tcl/tklinuxcnc.tcl:160 tcl/tklinuxcnc.tcl:245 +#: tcl/tklinuxcnc.tcl:419 tcl/tklinuxcnc.tcl:1338 tcl/tklinuxcnc.tcl:1407 +#: tcl/tklinuxcnc.tcl:1438 tcl/tklinuxcnc.tcl:1469 tcl/tklinuxcnc.tcl:2017 +#: tcl/tklinuxcnc.tcl:2036 tcl/tklinuxcnc.tcl:2055 tcl/tklinuxcnc.tcl:2102 +#: src/emc/usr_intf/axis/scripts/axis.py:1106 +#: src/emc/usr_intf/axis/scripts/axis.py:1173 +#: src/emc/usr_intf/axis/scripts/axis.py:1508 +#: src/emc/usr_intf/axis/scripts/axis.py:2672 +#: src/emc/usr_intf/axis/scripts/axis.py:3599 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:718 +#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1828 +#: share/axis/tcl/axis.tcl:1865 +msgid "OK" msgstr "" -#: tcl/mini.tcl:3703 +#: src/hal/utils/scope_horiz.c:732 src/hal/utils/scope_horiz.c:773 +#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 tcl/tooledit.tcl:468 #, fuzzy -msgid "Show Setup" -msgstr "Visa EMC Status" +msgid "Quit" +msgstr "_Avsluta" -#: tcl/show_errors.tcl:41 -msgid "LinuxCNC Errors" +#: src/hal/utils/scope_horiz.c:764 +msgid "Realtime thread(s) not running" msgstr "" -#: tcl/show_errors.tcl:44 +#: src/hal/utils/scope_horiz.c:765 msgid "" -"LinuxCNC terminated with an error. When reporting problems, please include " -"all the information below in your message." +"HALSCOPE uses code in a realtime HAL thread to sample\n" +"signals for display. The HAL thread(s) are not running.\n" +"Threads are usually started by the application you are\n" +"attempting to run, or you can use the 'halcmd start' command.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Start the threads, then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" msgstr "" -#: tcl/show_errors.tcl:69 tcl/scripts/Set_Coordinates.tcl:103 -msgid "Close" +#: src/hal/utils/scope_horiz.c:798 +msgid "Pick log file to write to:" msgstr "" -#: tcl/tklinuxcnc.tcl:154 tcl/tklinuxcnc.tcl:181 -msgid "Set Run Mark" +#: src/hal/utils/scope_horiz.c:981 +msgid "Not enough channels" msgstr "" -#: tcl/tklinuxcnc.tcl:156 -#, tcl-format -msgid "Set run mark at line %s?" +#: src/hal/utils/scope_horiz.c:982 +msgid "" +"This record length cannot handle the channels\n" +"that are currently enabled. Pick a shorter\n" +"record length that supports more channels." msgstr "" -#: tcl/tklinuxcnc.tcl:176 tcl/tklinuxcnc.tcl:204 -msgid "untitled" +#: src/hal/utils/scope_horiz.c:1070 +#, c-format +msgid "" +"%s\n" +"per div" msgstr "" -#: tcl/tklinuxcnc.tcl:212 -msgid "Load Parameter File" +#: src/hal/utils/scope_horiz.c:1085 +#, c-format +msgid "" +"%s samples\n" +"at %s" msgstr "" -#: tcl/tklinuxcnc.tcl:261 -msgid "LinuxCNC Diagnostics" +#: src/hal/utils/scope_horiz.c:1189 +msgid "nSec" msgstr "" -#: tcl/tklinuxcnc.tcl:263 -msgid "Task" +#: src/hal/utils/scope_horiz.c:1192 +msgid "uSec" msgstr "" -#: tcl/tklinuxcnc.tcl:265 tcl/tklinuxcnc.tcl:288 tcl/tklinuxcnc.tcl:311 -msgid "Heartbeat:" +#: src/hal/utils/scope_horiz.c:1196 +msgid "mSec" msgstr "" -#: tcl/tklinuxcnc.tcl:268 tcl/tklinuxcnc.tcl:291 tcl/tklinuxcnc.tcl:314 -#, fuzzy -msgid "Command:" -msgstr "MDI-Kommando:" +#: src/hal/utils/scope_horiz.c:1200 src/emc/usr_intf/pncconf/pncconf.glade:2635 +#: src/emc/usr_intf/pncconf/pncconf.glade:3533 +#: src/emc/usr_intf/pncconf/pncconf.glade:4414 +#: src/emc/usr_intf/pncconf/pncconf.glade:5295 +msgid "Sec" +msgstr "" -#: tcl/tklinuxcnc.tcl:271 tcl/tklinuxcnc.tcl:294 tcl/tklinuxcnc.tcl:317 -#, fuzzy -msgid "Command #:" -msgstr "MDI-Kommando:" +#: src/hal/utils/scope_horiz.c:1217 src/emc/usr_intf/stepconf/spindle.glade:301 +#: src/emc/usr_intf/stepconf/axisx.glade:693 +#: src/emc/usr_intf/stepconf/axisy.glade:679 +#: src/emc/usr_intf/stepconf/axisz.glade:679 +#: src/emc/usr_intf/stepconf/axisa.glade:693 +#: src/emc/usr_intf/pncconf/pncconf.glade:8024 +#: src/emc/usr_intf/pncconf/pncconf.glade:8201 +#: src/emc/usr_intf/pncconf/pncconf.glade:8213 +msgid "Hz" +msgstr "" -#: tcl/tklinuxcnc.tcl:274 tcl/tklinuxcnc.tcl:297 tcl/tklinuxcnc.tcl:320 -msgid "Status:" +#: src/hal/utils/scope_horiz.c:1220 +msgid "KHz" msgstr "" -#: tcl/tklinuxcnc.tcl:286 -msgid "Io" +#: src/hal/utils/scope_horiz.c:1224 +msgid "Mhz" msgstr "" -# ***: ../tcl/axis.tcl:1514 -#: tcl/tklinuxcnc.tcl:309 -#, fuzzy -msgid "Motion" -msgstr "Position:" +#: src/hal/utils/scope_vert.c:413 src/hal/utils/scope_vert.c:1303 +#, fuzzy, c-format +msgid "" +"Offset\n" +"%s" +msgstr "Försjutning" -#: tcl/tklinuxcnc.tcl:350 -msgid "About TkLinuxCNC" +#: src/hal/utils/scope_vert.c:628 +msgid "Gain" msgstr "" -#: tcl/tklinuxcnc.tcl:351 -msgid "" -"TkLinuxcnc\n" -"\n" -"Tcl/Tk GUI for LinuxCNC\n" -"\n" -"GPL Version 2 (2012)" +#: src/hal/utils/scope_vert.c:640 src/hal/utils/scope_trig.c:272 +msgid "Pos" msgstr "" -#: tcl/tklinuxcnc.tcl:399 -msgid "Set Tool Offset" +#: src/hal/utils/scope_vert.c:654 tcl/ngcgui_ttt.tcl:214 +#: src/emc/usr_intf/pncconf/pncconf.glade:64273 +msgid "Scale" msgstr "" -#: tcl/tklinuxcnc.tcl:404 tcl/tklinuxcnc.tcl:905 -#, fuzzy -msgid "Tool:" -msgstr "Kylvätska:" +#: src/hal/utils/scope_vert.c:667 +msgid "Chan Off" +msgstr "" -#: tcl/tklinuxcnc.tcl:722 +#: src/hal/utils/scope_vert.c:723 #, fuzzy -msgid "Edit..." -msgstr "_Redigera" +msgid "Set Offset" +msgstr "Försjutning" -#: tcl/tklinuxcnc.tcl:727 -msgid "Tool Table Editor..." +#: src/hal/utils/scope_vert.c:724 +#, c-format +msgid "" +"Set the vertical offset\n" +"for channel %d." msgstr "" -#: tcl/tklinuxcnc.tcl:730 src/emc/usr_intf/touchy/touchy.glade:1383 -msgid "Reload Tool Table" +#: src/hal/utils/scope_vert.c:744 +msgid "AC Coupled" msgstr "" -#: tcl/tklinuxcnc.tcl:740 -msgid "Offsets and Variables..." +#: src/hal/utils/scope_vert.c:779 src/hal/utils/scope_vert.c:1215 +#: src/hal/utils/scope_trig.c:387 tcl/bin/emccalib.tcl:234 +#: tcl/bin/genedit.tcl:294 tcl/bin/halconfig.tcl:103 tcl/bin/halconfig.tcl:684 +#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:390 +#: tcl/bin/pickconfig.tcl:567 tcl/mini.tcl:1457 tcl/mini.tcl:2938 +#: tcl/mini.tcl:3110 tcl/tklinuxcnc.tcl:162 tcl/tklinuxcnc.tcl:213 +#: tcl/tklinuxcnc.tcl:420 tcl/tklinuxcnc.tcl:1339 tcl/tklinuxcnc.tcl:1408 +#: tcl/tklinuxcnc.tcl:1439 tcl/tklinuxcnc.tcl:1470 tcl/tklinuxcnc.tcl:2103 +#: src/emc/usr_intf/axis/scripts/axis.py:1453 +#: src/emc/usr_intf/axis/scripts/axis.py:1509 +#: src/emc/usr_intf/axis/scripts/axis.py:1699 +#: src/emc/usr_intf/axis/scripts/axis.py:2108 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:720 +#: src/emc/usr_intf/stepconf/main_page.glade:467 +#: src/emc/usr_intf/gscreen/gscreen.glade:3986 +msgid "Cancel" +msgstr "Avbryt" + +#: src/hal/utils/scope_vert.c:859 +msgid "Too many channels" msgstr "" -#: tcl/tklinuxcnc.tcl:741 -msgid "Diagnostics..." +#: src/hal/utils/scope_vert.c:860 +msgid "" +"You cannot add another channel.\n" +"\n" +"Either turn off one or more channels, or shorten\n" +"the record length to allow for more channels" msgstr "" -#: tcl/tklinuxcnc.tcl:742 -msgid "Backplot..." +#: src/hal/utils/scope_vert.c:1074 +msgid "Select Channel Source" msgstr "" -#: tcl/tklinuxcnc.tcl:748 -msgid "Testing..." +#: src/hal/utils/scope_vert.c:1075 +#, c-format +msgid "" +"Select a pin, signal, or parameter\n" +"as the source for channel %d." msgstr "" -#: tcl/tklinuxcnc.tcl:749 -msgid "Debug..." +#: src/hal/utils/scope_vert.c:1107 +msgid "Pins" msgstr "" -#: tcl/tklinuxcnc.tcl:750 -msgid "Font..." +#: src/hal/utils/scope_vert.c:1108 +msgid "Signals" msgstr "" -#: tcl/tklinuxcnc.tcl:754 src/emc/usr_intf/axis/scripts/image-to-gcode.py:665 -msgid "Units" +#: src/hal/utils/scope_vert.c:1109 +msgid "Parameters" msgstr "" -#: tcl/tklinuxcnc.tcl:755 -msgid "auto" +#: src/hal/utils/scope_trig.c:110 +#, c-format +msgid "Falling" msgstr "" -#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8512 -msgid "inches" +#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:295 +#, c-format +msgid "Rising" msgstr "" -#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1556 -#: src/emc/usr_intf/axis/scripts/axis.py:1726 -#: src/emc/usr_intf/touchy/touchy.glade:3301 -#: src/emc/usr_intf/stepconf/stepconf.py:1685 -#: src/emc/usr_intf/stepconf/stepconf.py:2221 -#: src/emc/usr_intf/stepconf/stepconf.glade:4357 -#: src/emc/usr_intf/pncconf/pncconf.py:8508 -#: src/emc/usr_intf/pncconf/pncconf.glade:2229 -#: src/emc/usr_intf/pncconf/pncconf.glade:2394 -#: src/emc/usr_intf/pncconf/pncconf.glade:57616 -#: src/emc/usr_intf/pncconf/pncconf.glade:57688 -#: src/emc/usr_intf/pncconf/pncconf.glade:60646 -#: src/emc/usr_intf/pncconf/pncconf.glade:61739 -#: src/emc/usr_intf/pncconf/pncconf.glade:62832 -#: src/emc/usr_intf/pncconf/pncconf.glade:63925 -#: src/emc/usr_intf/pncconf/pncconf.glade:65091 -msgid "mm" +#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:303 +msgid "" +"Source\n" +"None" msgstr "" -#: tcl/tklinuxcnc.tcl:758 -msgid "cm" +#: src/hal/utils/scope_trig.c:124 +#, c-format +msgid "" +"Source\n" +"Chan %2d" msgstr "" -#: tcl/tklinuxcnc.tcl:762 -msgid "Utilities" +#: src/hal/utils/scope_trig.c:219 tcl/tklinuxcnc.tcl:827 +#: src/emc/usr_intf/touchy/touchy.glade:2469 +msgid "Auto" msgstr "" -#: tcl/tklinuxcnc.tcl:763 -msgid "Hal Scope" +#: src/hal/utils/scope_trig.c:221 +msgid "Force" msgstr "" -#: tcl/tklinuxcnc.tcl:785 -msgid "HAL Show" +#: src/hal/utils/scope_trig.c:255 src/hal/utils/scope_trig.c:289 +msgid "Level" msgstr "" -#: tcl/tklinuxcnc.tcl:786 -msgid "HAL Config" +#: src/hal/utils/scope_trig.c:323 +msgid "Trigger Source" msgstr "" -#: tcl/tklinuxcnc.tcl:792 -msgid "Balloon help" +#: src/hal/utils/scope_trig.c:324 +msgid "Select a channel to use for triggering." msgstr "" -#: tcl/tklinuxcnc.tcl:815 -msgid "Estop on" +#: src/hal/utils/scope_trig.c:347 +msgid "Chan" msgstr "" -#: tcl/tklinuxcnc.tcl:816 -msgid "Estop off" +#: src/hal/utils/scope_trig.c:348 +msgid "Source" msgstr "" -# ***: ../tcl/axis.tcl:1512 -#: tcl/tklinuxcnc.tcl:818 -#, fuzzy -msgid "Machine on" -msgstr "Maskin" - -# ***: ../tcl/axis.tcl:1512 -#: tcl/tklinuxcnc.tcl:819 -#, fuzzy -msgid "Machine off" -msgstr "Maskin" +#: src/emc/motion/control.c:270 +msgid "Unexpected realtime delay: check dmesg for details." +msgstr "" -#: tcl/tklinuxcnc.tcl:826 src/emc/usr_intf/touchy/touchy.glade:1561 -#, fuzzy -msgid "Manual" -msgstr "Manuell kontroll" +#: src/emc/motion/control.c:272 +#, c-format +msgid "" +"\n" +"In recent history there were\n" +"%ld, %ld, %ld, %ld, and %ld\n" +"elapsed clocks between calls to the motion controller.\n" +msgstr "" -#: tcl/tklinuxcnc.tcl:835 -msgid "Mist on" +#: src/emc/motion/control.c:277 +#, c-format +msgid "" +"This time, there were %ld which is so anomalously\n" +"large that it probably signifies a problem with your\n" +"realtime configuration. For the rest of this run of\n" +"EMC, this message will be suppressed.\n" +"\n" msgstr "" -#: tcl/tklinuxcnc.tcl:836 -msgid "Mist off" +#: src/emc/motion/control.c:394 +msgid "G38.4 move finished without breaking contact." msgstr "" -#: tcl/tklinuxcnc.tcl:843 -msgid "Flood on" +#: src/emc/motion/control.c:397 +msgid "G38.2 move finished without making contact." msgstr "" -#: tcl/tklinuxcnc.tcl:844 -msgid "Flood off" +#: src/emc/motion/control.c:412 +msgid "Probe tripped during non-probe MDI command." msgstr "" -#: tcl/tklinuxcnc.tcl:851 -msgid "Lube on" +#: src/emc/motion/control.c:440 +msgid "Probe tripped during homing motion." msgstr "" -#: tcl/tklinuxcnc.tcl:852 -msgid "Lube off" +#: src/emc/motion/control.c:444 +msgid "Probe tripped during a jog." msgstr "" -#: tcl/tklinuxcnc.tcl:869 -#, fuzzy -msgid "Spindle forward" -msgstr "Spindelbroms på" +#: src/emc/motion/control.c:622 +msgid "can't add coordinated return move" +msgstr "" -#: tcl/tklinuxcnc.tcl:870 -#, fuzzy -msgid "Spindle reverse" -msgstr "Spindelbroms på" +#: src/emc/motion/control.c:663 +msgid "can't add linear coordinated jog move" +msgstr "" -#: tcl/tklinuxcnc.tcl:885 -#, fuzzy -msgid "Brake on" -msgstr "Broms" +#: src/emc/motion/control.c:817 +#, c-format +msgid "fault %d during orient in progress" +msgstr "" -#: tcl/tklinuxcnc.tcl:886 -#, fuzzy -msgid "Brake off" -msgstr "Broms" +#: src/emc/motion/control.c:957 +msgid "motion stopped by enable input" +msgstr "" -#: tcl/tklinuxcnc.tcl:907 -#, fuzzy -msgid "Offset:" -msgstr "Försjutning" +#: src/emc/motion/control.c:980 +#, c-format +msgid "joint %d on limit switch error" +msgstr "" -#: tcl/tklinuxcnc.tcl:913 -#, fuzzy -msgid "Work Offsets:" -msgstr "Försjutning" +#: src/emc/motion/control.c:992 +#, c-format +msgid "joint %d amplifier fault" +msgstr "" -#: tcl/tklinuxcnc.tcl:1233 -msgid "relative" +#: src/emc/motion/control.c:1001 +#, c-format +msgid "joint %d following error" msgstr "" -# ***: ../tcl/axis.tcl:1512 -#: tcl/tklinuxcnc.tcl:1234 -#, fuzzy -msgid "machine" -msgstr "Maskin" +#: src/emc/motion/control.c:1687 +#, c-format +msgid "Exceeded positive soft limit on joint %d" +msgstr "" -#: tcl/tklinuxcnc.tcl:1236 -msgid "actual" +#: src/emc/motion/control.c:1692 +#, c-format +msgid "Exceeded negative soft limit on joint %d" msgstr "" -#: tcl/tklinuxcnc.tcl:1237 -msgid "commanded" +#: src/emc/motion/command.c:163 +#, c-format +msgid "Can't jog invalid joint number %d." msgstr "" -#: tcl/tklinuxcnc.tcl:1239 -msgid "joint" +#: src/emc/motion/command.c:167 +#, c-format +msgid "Can't jog joint %d further past max hard limit." msgstr "" -#: tcl/tklinuxcnc.tcl:1240 -msgid "world" +#: src/emc/motion/command.c:172 +#, c-format +msgid "Can't jog joint %d further past min hard limit." msgstr "" -#: tcl/tklinuxcnc.tcl:1333 -#, fuzzy -msgid "Axis Offset" -msgstr "Försjutning" +#: src/emc/motion/command.c:178 +#, c-format +msgid "Can't jog joint %d further past max soft limit." +msgstr "" -#: tcl/tklinuxcnc.tcl:1335 -msgid "Set axis value:" +#: src/emc/motion/command.c:183 +#, c-format +msgid "Can't jog joint %d further past min soft limit." msgstr "" -#: tcl/tklinuxcnc.tcl:1429 -#, fuzzy -msgid "Set Feed Override" -msgstr "Matnings överjusterning (%): #guessing again" +#: src/emc/motion/command.c:243 +#, c-format +msgid "%s move on line %d would exceed joint %d's positive limit" +msgstr "" -#: tcl/tklinuxcnc.tcl:1435 -#, fuzzy -msgid "Set feed override:" -msgstr "Matnings överjusterning (%): #guessing again" +#: src/emc/motion/command.c:250 +#, c-format +msgid "%s move on line %d would exceed joint %d's negative limit" +msgstr "" -#: tcl/tklinuxcnc.tcl:1460 -msgid "Set Spindle Override" +#: src/emc/motion/command.c:535 +msgid "all joints must be homed before going into coordinated mode" msgstr "" -#: tcl/tklinuxcnc.tcl:1466 -msgid "Set spindle speed override:" +#: src/emc/motion/command.c:556 +msgid "all joints must be homed before going into teleop mode" msgstr "" -#: tcl/tklinuxcnc.tcl:1521 -msgid "Linear Jog Speed" +#: src/emc/motion/command.c:710 src/emc/motion/command.c:776 +#: src/emc/motion/command.c:849 +msgid "Can't jog joint in coordinated mode." msgstr "" -#: tcl/tklinuxcnc.tcl:1552 -msgid "Angular Jog Speed (deg)/min:" +#: src/emc/motion/command.c:715 src/emc/motion/command.c:781 +#: src/emc/motion/command.c:854 +msgid "Can't jog joint when not enabled." msgstr "" -#: tcl/tklinuxcnc.tcl:1596 -#, fuzzy -msgid "Spindle speed Override:" -msgstr "Matnings överjusterning (%): #guessing again" +#: src/emc/motion/command.c:720 src/emc/motion/command.c:859 +msgid "Can't jog any joints while homing." +msgstr "" -#: tcl/tklinuxcnc.tcl:1642 -#, fuzzy -msgid "Program: " -msgstr "Pro_gram" +#: src/emc/motion/command.c:786 +msgid "Can't jog any joint while homing." +msgstr "" -#: tcl/tklinuxcnc.tcl:1647 -msgid " - Status: " +#: src/emc/motion/command.c:918 +msgid "need to be enabled, in coord mode for linear move" msgstr "" -#: tcl/tklinuxcnc.tcl:1663 -msgid "Optional Stop" +#: src/emc/motion/command.c:928 +msgid "can't do linear move with limits exceeded" msgstr "" -#: tcl/tklinuxcnc.tcl:2010 -msgid "Error" +#: src/emc/motion/command.c:954 +#, c-format +msgid "can't add linear move at line %d, error code %d" msgstr "" -#: tcl/tklinuxcnc.tcl:2070 tcl/ngcgui_ttt.tcl:46 -msgid "Set Font" +#: src/emc/motion/command.c:982 +msgid "need to be enabled, in coord mode for circular move" msgstr "" -#: tcl/tklinuxcnc.tcl:2079 tcl/ngcgui_ttt.tcl:283 -msgid "Font" +#: src/emc/motion/command.c:993 +msgid "can't do circular move with limits exceeded" msgstr "" -#: tcl/tklinuxcnc.tcl:2086 -msgid "Size" +#: src/emc/motion/command.c:1015 +#, c-format +msgid "can't add circular move at line %d, error code %d" msgstr "" -#: tcl/tklinuxcnc.tcl:2093 -msgid "Style" +#: src/emc/motion/command.c:1114 +msgid "MOTION: can't STEP while jogging" msgstr "" -# ***: ../tcl/axis.tcl:1470 -#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:1916 -msgid "ESTOP" -msgstr "#Nödstopp?" +#: src/emc/motion/command.c:1117 +msgid "MOTION: can't STEP while in return move" +msgstr "" -# ***: ../tcl/axis.tcl:1472 -#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2840 share/axis/tcl/axis.tcl:1918 -msgid "ON" +#: src/emc/motion/command.c:1127 +#, c-format +msgid "MOTION: STEP while in state %d" msgstr "" -#: tcl/tklinuxcnc.tcl:2290 -msgid "LUBE ON" +#: src/emc/motion/command.c:1229 +msgid "can't enable motion, enable input is false" msgstr "" -#: tcl/tklinuxcnc.tcl:2292 -msgid "LUBE OFF" +#: src/emc/motion/command.c:1302 +msgid "must be in joint mode to home" msgstr "" -#: tcl/tklinuxcnc.tcl:2294 -msgid "LUBE ?" +#: src/emc/motion/command.c:1313 src/emc/motion/command.c:1324 +msgid "homing sequence already in progress" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:23 -msgid "LinuxCNC Set Coordinate" +#: src/emc/motion/command.c:1322 +msgid "homing already in progress" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:26 -msgid "Coordinate System Control Window" +#: src/emc/motion/command.c:1352 +msgid "must be in joint mode or disabled to unhome" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:81 -msgid "Var # " +#: src/emc/motion/command.c:1364 src/emc/motion/command.c:1387 +#, c-format +msgid "Cannot unhome while homing, joint %d" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:82 -#, fuzzy -msgid "Offset Value " -msgstr "Försjutning" - -#: tcl/scripts/Set_Coordinates.tcl:83 -msgid "What to Teach" +#: src/emc/motion/command.c:1368 src/emc/motion/command.c:1391 +#, c-format +msgid "Cannot unhome while moving, joint %d" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:101 -msgid "Set Old" +#: src/emc/motion/command.c:1396 +#, c-format +msgid "Cannot unhome inactive joint %d" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:102 -msgid "Set Zero" +#: src/emc/motion/command.c:1400 +#, c-format +msgid "Cannot unhome invalid joint %d (max %d)" msgstr "" -#: tcl/scripts/Set_Coordinates.tcl:104 -msgid "Write" +#: src/emc/motion/command.c:1427 +msgid "need to be enabled, in coord mode for probe move" msgstr "" -#: tcl/ngcgui.tcl:467 -msgid "Need non-null file name" +#: src/emc/motion/command.c:1437 +msgid "can't do probe move with limits exceeded" msgstr "" -#: tcl/ngcgui.tcl:543 -msgid "Disallowed use of ngcgui generated file as Subfile" +#: src/emc/motion/command.c:1451 +msgid "Probe is already clear when starting G38.4 or G38.5 move" msgstr "" -#: tcl/ngcgui.tcl:549 -msgid "" -"marked (not_a_subfile)\n" -"Not intended for use as a subfile" +#: src/emc/motion/command.c:1453 +msgid "Probe is already tripped when starting G38.2 or G38.3 move" msgstr "" -#: tcl/ngcgui.tcl:564 -msgid "Multiple subroutines in file not allowed" +#: src/emc/motion/command.c:1473 +msgid "can't add probe move" msgstr "" -#: tcl/ngcgui.tcl:573 tcl/ngcgui.tcl:595 tcl/ngcgui.tcl:608 tcl/ngcgui.tcl:650 -#: tcl/ngcgui.tcl:755 -msgid "bogus" +#: src/emc/motion/command.c:1498 +msgid "need to be enabled, in coord mode for rigid tap move" msgstr "" -#: tcl/ngcgui.tcl:575 -msgid "sub label" +#: src/emc/motion/command.c:1509 +msgid "can't do rigid tap move with limits exceeded" msgstr "" -#: tcl/ngcgui.tcl:575 tcl/ngcgui.tcl:652 -msgid "does not match subroutine file name" +#: src/emc/motion/command.c:1526 +msgid "can't add rigid tap move" msgstr "" -#: tcl/ngcgui.tcl:590 tcl/ngcgui.tcl:591 -msgid "ignoring M2 after endsub" +#: src/emc/motion/command.c:1541 +msgid "need to be enabled, in teleop mode for teleop move" msgstr "" -#: tcl/ngcgui.tcl:596 -msgid "file contains lines after subend" +#: src/emc/motion/command.c:1710 +#, c-format +msgid "joint %d: too many compensation entries" msgstr "" -#: tcl/ngcgui.tcl:609 -msgid "file contains lines before sub" +#: src/emc/motion/command.c:1716 +#, c-format +msgid "joint %d: compensation values must increase" msgstr "" -#: tcl/ngcgui.tcl:652 -msgid "endsub label" +#: src/emc/motion/command.c:1745 +#, c-format +msgid "unrecognized command %d" msgstr "" -#: tcl/ngcgui.tcl:757 -msgid "out of sequence positional parameter" +#: src/emc/motion/motion.c:212 +msgid "MOTION: hal_init() failed\n" msgstr "" -#: tcl/ngcgui.tcl:757 -msgid "expected" +#: src/emc/motion/motion.c:217 +#, c-format +msgid "MOTION: num_joints is %d, must be between 1 and %d\n" msgstr "" -#: tcl/ngcgui.tcl:817 -msgid "toomany" +#: src/emc/motion/motion.c:224 +#, c-format +msgid "MOTION: num_dio is %d, must be between 1 and %d\n" msgstr "" -#: tcl/ngcgui.tcl:868 -msgid "no sub found in file" +#: src/emc/motion/motion.c:231 +#, c-format +msgid "MOTION: num_aio is %d, must be between 1 and %d\n" msgstr "" -#: tcl/ngcgui.tcl:871 -msgid "no endsub found in file" +#: src/emc/motion/motion.c:239 +msgid "MOTION: init_hal_io() failed\n" msgstr "" -#: tcl/ngcgui.tcl:961 -msgid "Choose Files" +#: src/emc/motion/motion.c:248 +msgid "MOTION: init_comm_buffers() failed\n" msgstr "" -#: tcl/ngcgui.tcl:1100 -msgid "Controls" +#: src/emc/motion/motion.c:256 +msgid "MOTION: init_threads() failed\n" msgstr "" -#: tcl/ngcgui.tcl:1109 -msgid "Preamble" +#: src/emc/motion/motion.c:281 +#, c-format +msgid "MOTION: hal_stop_threads() failed, returned %d\n" msgstr "" -#: tcl/ngcgui.tcl:1122 -msgid "Subfile" +#: src/emc/motion/motion.c:294 +#, c-format +msgid "MOTION: rtapi_shmem_delete() failed, returned %d\n" msgstr "" -#: tcl/ngcgui.tcl:1134 -msgid "Postamble" +#: src/emc/motion/motion.c:300 +#, c-format +msgid "MOTION: hal_exit() failed, returned %d\n" msgstr "" -#: tcl/ngcgui.tcl:1151 -msgid "Retain values on Subfile read" +#: src/emc/motion/motion.c:323 +msgid "MOTION: emcmot_hal_data malloc failed\n" msgstr "" -#: tcl/ngcgui.tcl:1159 -msgid "Expand subroutine" +#: src/emc/motion/motion.c:331 +msgid "MOTION: joints malloc failed\n" msgstr "" -#: tcl/ngcgui.tcl:1168 tcl/ngcgui.tcl:2414 -msgid "Autosend" +#: src/emc/motion/motion.c:695 +#, c-format +msgid "MOTION: joint %d pin/param export failed\n" msgstr "" -#: tcl/ngcgui.tcl:1178 -msgid "Verbose ngcfile" +#: src/emc/motion/homing.c:80 src/emc/motion/homing.c:748 +#, c-format +msgid "hit limit in home state %d" msgstr "" -#: tcl/ngcgui.tcl:1188 tcl/ngcgui.tcl:2235 tcl/ngcgui.tcl:2259 -#: tcl/ngcgui.tcl:2289 -msgid "Create Feature" +#: src/emc/motion/homing.c:90 +#, c-format +msgid "end of move in home state %d" msgstr "" -#: tcl/ngcgui.tcl:1194 tcl/ngcgui.tcl:2919 -#, fuzzy -msgid "MakeFile" -msgstr "_Fil" - -#: tcl/ngcgui.tcl:1195 tcl/ngcgui.tcl:2916 -msgid "Finalize" +#: src/emc/motion/homing.c:185 +#, c-format +msgid "unknown state '%d' during homing sequence" msgstr "" -#: tcl/ngcgui.tcl:1212 -msgid "Reread" +#: src/emc/motion/homing.c:246 +msgid "Cannot home while shared home switch is closed" msgstr "" -#: tcl/ngcgui.tcl:1231 -msgid "SendFileToAxis" +#: src/emc/motion/homing.c:290 +msgid "" +"invalid homing config: non-zero LATCH_VEL needs either SEARCH_VEL or " +"USE_INDEX" msgstr "" -#: tcl/ngcgui.tcl:1274 -msgid "Unrecoverable problem" +#: src/emc/motion/homing.c:299 +msgid "invalid homing config: non-zero SEARCH_VEL needs LATCH_VEL" msgstr "" -#: tcl/ngcgui.tcl:1374 -msgid "Postamble file" +#: src/emc/motion/homing.c:447 +msgid "Home switch inactive before start of backoff move" msgstr "" -#: tcl/ngcgui.tcl:1424 -msgid "Subroutine file" +#: src/emc/motion/homing.c:495 +msgid "Home switch active before start of latch move" msgstr "" -#: tcl/ngcgui.tcl:1482 -msgid "Positional Parameters" +#: src/emc/motion/homing.c:551 +msgid "Home switch inactive before start of latch move" msgstr "" -#: tcl/ngcgui.tcl:1587 -msgid "_Globals" +#: src/emc/motion/homing.c:797 +#, c-format +msgid "unknown state '%d' during homing" msgstr "" -#: tcl/ngcgui.tcl:1690 -msgid "No Subfile specified" -msgstr "" +# ***: ../tcl/axis.tcl:1514 +#: tcl/bin/emccalib.tcl:80 +#, fuzzy +msgid "Machinekit Servo Axis Calibration" +msgstr "Position:" -#: tcl/ngcgui.tcl:1692 -msgid "No parameters yet" +#: tcl/bin/emccalib.tcl:90 +msgid "Save To File" msgstr "" -#: tcl/ngcgui.tcl:1701 -msgid "Missing value for parm" -msgstr "" +#: tcl/bin/emccalib.tcl:106 tcl/bin/genedit.tcl:77 tcl/bin/halconfig.tcl:151 +#: tcl/bin/halshow.tcl:85 tcl/mini.tcl:2516 tcl/tklinuxcnc.tcl:719 +#: tcl/ngcgui.tcl:489 +#, fuzzy +msgid "File" +msgstr "_Fil" -#: tcl/ngcgui.tcl:1735 -msgid "Output file" +#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:236 tcl/bin/halconfig.tcl:153 +#: tcl/mini.tcl:3558 src/emc/usr_intf/touchy/touchy.glade:2420 +msgid "Refresh" msgstr "" -#: tcl/ngcgui.tcl:1827 -msgid "Positional parameters for" +#: tcl/bin/emccalib.tcl:110 tcl/bin/genedit.tcl:82 tcl/bin/halconfig.tcl:155 +#: tcl/mini.tcl:2535 src/emc/usr_intf/axis/scripts/axis.py:2107 +msgid "Save" msgstr "" -#: tcl/ngcgui.tcl:1835 -msgid "expanded file" +#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:623 +#, tcl-format +msgid "Tune %d" msgstr "" -#: tcl/ngcgui.tcl:1849 -msgid "call subroutine file" +#: tcl/bin/emccalib.tcl:162 tcl/bin/halconfig.tcl:628 +msgid "INI Name" msgstr "" -#: tcl/ngcgui.tcl:1919 -msgid "Multiple Tabs with Features" +#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:629 +msgid "HAL's Value" msgstr "" -#: tcl/ngcgui.tcl:1920 -msgid "Finalize all Tabs?" +#: tcl/bin/emccalib.tcl:165 tcl/bin/halconfig.tcl:631 +msgid "Next Value" msgstr "" -#: tcl/ngcgui.tcl:1920 -msgid "Order" +#: tcl/bin/emccalib.tcl:230 tcl/bin/halconfig.tcl:680 tcl/bin/halconfig.tcl:731 +msgid "Test" msgstr "" -#: tcl/ngcgui.tcl:1922 -msgid "No, just this page" +#: tcl/bin/emccalib.tcl:388 tcl/bin/halconfig.tcl:883 +#, tcl-format +msgid "" +"The HAL parameter \n" +" %s \n" +" has changed. \n" +" Really quit?" msgstr "" -#: tcl/ngcgui.tcl:1936 -msgid "Axis is not responding" +#: tcl/bin/emccalib.tcl:413 tcl/bin/halconfig.tcl:1170 +msgid "" +"Not permitted to save here.\n" +"\n" +" You need to copy a configuration to your home directory and work there." msgstr "" -#: tcl/ngcgui.tcl:1937 -msgid "Error: " +#: tcl/bin/emccalib.tcl:487 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 +#: tcl/bin/pickconfig.tcl:843 tcl/bin/pickconfig.tcl:854 +#: tcl/scripts/Set_Coordinates.tcl:205 tcl/scripts/Set_Coordinates.tcl:228 +#, tcl-format +msgid "can't save %s" msgstr "" -#: tcl/ngcgui.tcl:1939 -msgid "Autosend disabled, Ctrl-A toggles autosend" +#: tcl/bin/emcdebug.tcl:166 tcl/bin/emcdebug.tcl:177 +msgid "LinuxCNC Debug" msgstr "" -#: tcl/ngcgui.tcl:1941 -msgid "File saving enabled -- Finalize to save" +#: tcl/bin/emcdebug.tcl:185 +msgid "Invalid INI file entries" msgstr "" -#: tcl/ngcgui.tcl:1957 -msgid "Require .ngc suffix for filename" -msgstr "" +#: tcl/bin/emcdebug.tcl:186 +#, fuzzy +msgid "Configuration information" +msgstr "Hal _configuration" -#: tcl/ngcgui.tcl:1967 -msgid "Disallowed overwrite of" +#: tcl/bin/emcdebug.tcl:187 +msgid "Use of defaults" msgstr "" -#: tcl/ngcgui.tcl:1986 -msgid "FEATURE" +#: tcl/bin/emcdebug.tcl:188 +msgid "Version information" msgstr "" -#: tcl/ngcgui.tcl:1993 -msgid "feature line added" +#: tcl/bin/emcdebug.tcl:189 +msgid "Command issuing" msgstr "" -#: tcl/ngcgui.tcl:2002 -msgid "line added" +#: tcl/bin/emcdebug.tcl:190 +msgid "IO points" msgstr "" -#: tcl/ngcgui.tcl:2002 -msgid "activated" +#: tcl/bin/emcdebug.tcl:191 +msgid "NML" msgstr "" -#: tcl/ngcgui.tcl:2004 -#, fuzzy -msgid "restores" -msgstr "Stanna #Guessing again" - -#: tcl/ngcgui.tcl:2041 -msgid "NOTREACHED mode" +#: tcl/bin/emcdebug.tcl:192 +msgid "Motion time" msgstr "" -#: tcl/ngcgui.tcl:2236 -msgid "Enter parms for 1st feature" +#: tcl/bin/emcdebug.tcl:193 src/emc/usr_intf/axis/scripts/debuglevel.py:42 +msgid "Interpreter" msgstr "" -#: tcl/ngcgui.tcl:2243 -msgid "New Outfile" +#: tcl/bin/emcdebug.tcl:194 +msgid "RCS" msgstr "" -#: tcl/ngcgui.tcl:2245 -msgid "Ready to make New Outfile" +#: tcl/bin/emcdebug.tcl:195 +msgid "Trajectory level" msgstr "" -#: tcl/ngcgui.tcl:2262 tcl/ngcgui.tcl:2295 -msgid "Enter parms for feature " +#: tcl/bin/emcdebug.tcl:196 +msgid "Interpreter list" msgstr "" -#: tcl/ngcgui.tcl:2282 -msgid "feature" +#: tcl/bin/genedit.tcl:78 tcl/mini.tcl:2533 +msgid "New" msgstr "" -#: tcl/ngcgui.tcl:2287 -msgid "Create Next" -msgstr "" +#: tcl/bin/genedit.tcl:80 tcl/mini.tcl:1667 tcl/mini.tcl:2534 +#: tcl/tklinuxcnc.tcl:720 tcl/tklinuxcnc.tcl:1657 +#, fuzzy +msgid "Open..." +msgstr "_Öppna" -#: tcl/ngcgui.tcl:2292 -msgid "Created feature " +#: tcl/bin/genedit.tcl:84 tcl/mini.tcl:2536 +msgid "Save As..." msgstr "" -# ***: ../tcl/axis.tcl:1514 -#: tcl/ngcgui.tcl:2316 +#: tcl/bin/genedit.tcl:87 tcl/bin/halconfig.tcl:165 tcl/bin/halshow.tcl:92 +#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1322 +#: tcl/ngcgui.tcl:3832 #, fuzzy -msgid "option" -msgstr "Position:" - -#: tcl/ngcgui.tcl:2327 -msgid "Missing parameters" -msgstr "" +msgid "Exit" +msgstr "_Redigera" -#: tcl/ngcgui.tcl:2331 -msgid "Parse Error" -msgstr "" +#: tcl/bin/genedit.tcl:91 tcl/mini.tcl:2517 +#: src/emc/usr_intf/gscreen/gscreen.glade:2685 +#, fuzzy +msgid "Edit" +msgstr "_Redigera" -#: tcl/ngcgui.tcl:2338 -msgid "Null Preamble" +#: tcl/bin/genedit.tcl:92 tcl/mini.tcl:2543 +msgid "Cut" msgstr "" -#: tcl/ngcgui.tcl:2343 -msgid "Read Preamble" -msgstr "" +#: tcl/bin/genedit.tcl:94 tcl/mini.tcl:2544 +#, fuzzy +msgid "Copy" +msgstr "_Kopiera" -#: tcl/ngcgui.tcl:2347 -msgid "Preamble Error" -msgstr "" +#: tcl/bin/genedit.tcl:96 tcl/mini.tcl:2545 +#, fuzzy +msgid "Paste" +msgstr "_Pausa" -#: tcl/ngcgui.tcl:2352 -msgid "Null Postamble" +#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:73 +msgid "Select All" msgstr "" -#: tcl/ngcgui.tcl:2357 -msgid "Read Postamble" -msgstr "" +#: tcl/bin/genedit.tcl:104 tcl/bin/halconfig.tcl:192 tcl/mini.tcl:919 +#: tcl/mini.tcl:2519 tcl/tklinuxcnc.tcl:790 +#: src/emc/usr_intf/stepconf/main_page.glade:445 +#, fuzzy +msgid "Help" +msgstr "_Hjälp" -#: tcl/ngcgui.tcl:2361 -msgid "Postamble Error" +#: tcl/bin/genedit.tcl:105 tcl/mini.tcl:1011 tcl/mini.tcl:2559 +#: tcl/tklinuxcnc.tcl:796 +msgid "About..." msgstr "" -#: tcl/ngcgui.tcl:2366 -msgid "Read Subfile" +#: tcl/bin/genedit.tcl:130 +msgid "Save and Reload" msgstr "" -#: tcl/ngcgui.tcl:2371 -msgid "Write Error" +#: tcl/bin/genedit.tcl:133 tcl/mini.tcl:2550 +msgid "Find..." msgstr "" -#: tcl/ngcgui.tcl:2375 -msgid "Outfile set" +#: tcl/bin/genedit.tcl:135 tcl/mini.tcl:2552 +msgid "Renumber File..." msgstr "" -#: tcl/ngcgui.tcl:2380 -msgid "Finished" +#: tcl/bin/genedit.tcl:140 tcl/mini.tcl:917 tcl/mini.tcl:2518 +#: tcl/tklinuxcnc.tcl:746 src/emc/usr_intf/gmoccapy/gmoccapy.glade:5135 +msgid "Settings" msgstr "" -#: tcl/ngcgui.tcl:2385 -#, fuzzy -msgid "Canceled" -msgstr "Avbryt" - -#: tcl/ngcgui.tcl:2391 -msgid "Sent" +#: tcl/bin/genedit.tcl:141 tcl/mini.tcl:2554 +msgid "No Numbering" msgstr "" -#: tcl/ngcgui.tcl:2395 -#, fuzzy -msgid "SendFileToAxis failed" -msgstr "Program_filer %r misslyckades" - -#: tcl/ngcgui.tcl:2399 -msgid "Ctrl-k for Key bindings" +#: tcl/bin/genedit.tcl:144 tcl/mini.tcl:2556 +msgid "Line Numbering..." msgstr "" -#: tcl/ngcgui.tcl:2403 -msgid "Expand sub" +#: tcl/bin/genedit.tcl:150 tcl/tklinuxcnc.tcl:768 +msgid "Scripts" msgstr "" -#: tcl/ngcgui.tcl:2407 -msgid "Retain values" +#: tcl/bin/genedit.tcl:177 +msgid "About TkEditor" msgstr "" -#: tcl/ngcgui.tcl:2411 -msgid "Verbose" +#: tcl/bin/genedit.tcl:179 +msgid "" +"TkEditor\n" +"\n" +"Simple Tcl/Tk Text Editor\n" +"\n" +"GPL Version 2" msgstr "" -#: tcl/ngcgui.tcl:2417 -msgid "Finalize Canceled" +#: tcl/bin/genedit.tcl:267 tcl/mini.tcl:3090 +msgid "Find" msgstr "" -#: tcl/ngcgui.tcl:2572 tcl/ngcgui.tcl:2728 -msgid "Dismiss" -msgstr "" +#: tcl/bin/genedit.tcl:270 +#, fuzzy +msgid "Find:" +msgstr "Spindel:" -#: tcl/ngcgui.tcl:2577 -msgid "ngcgui Error" +#: tcl/bin/genedit.tcl:276 +msgid "Replace:" msgstr "" -#: tcl/ngcgui.tcl:2600 -msgid "Declining support for tk send bug in ngcgui" +#: tcl/bin/genedit.tcl:282 +msgid "Find All" msgstr "" -#: tcl/ngcgui.tcl:2601 -msgid "You should upgrade linuxcnc to >= linuxcnc2.5" +#: tcl/bin/genedit.tcl:285 tcl/mini.tcl:3113 +msgid "Replace All" msgstr "" -#: tcl/ngcgui.tcl:2645 -msgid "pre2.4_send_file_to_axis:error" +#: tcl/bin/genedit.tcl:288 +msgid "Skip This" msgstr "" -#: tcl/ngcgui.tcl:2839 share/axis/tcl/axis.tcl:1917 -msgid "OFF" +#: tcl/bin/genedit.tcl:291 +msgid "Replace This" msgstr "" -#: tcl/ngcgui.tcl:2842 -msgid "Toggle autosend" +#: tcl/bin/genedit.tcl:297 +msgid "Clear" msgstr "" -#: tcl/ngcgui.tcl:2843 tcl/ngcgui.tcl:3057 -msgid "Clear entries" +#: tcl/bin/genedit.tcl:422 tcl/mini.tcl:2640 +msgid "Set Line Numbering" msgstr "" -#: tcl/ngcgui.tcl:2844 -msgid "Set entries to default values" +#: tcl/bin/genedit.tcl:424 tcl/mini.tcl:2644 +msgid "Increment" msgstr "" -#: tcl/ngcgui.tcl:2845 tcl/ngcgui.tcl:2859 tcl/ngcgui.tcl:2861 -msgid "Open editor specified by" +#: tcl/bin/genedit.tcl:426 tcl/mini.tcl:2646 +msgid "One" msgstr "" -#: tcl/ngcgui.tcl:2846 -msgid "on last outfile" +#: tcl/bin/genedit.tcl:429 tcl/mini.tcl:2648 +msgid "Two" msgstr "" -#: tcl/ngcgui.tcl:2847 -msgid "toggle expand subroutines" -msgstr "" +#: tcl/bin/genedit.tcl:432 tcl/mini.tcl:2650 +#, fuzzy +msgid "Five" +msgstr "_Fil" -#: tcl/ngcgui.tcl:2848 -msgid "Create feature" +#: tcl/bin/genedit.tcl:435 tcl/mini.tcl:2652 +msgid "Ten" msgstr "" -#: tcl/ngcgui.tcl:2849 -msgid "Finalize (AUTO send is" +#: tcl/bin/genedit.tcl:439 tcl/mini.tcl:2654 +msgid "Space" msgstr "" -#: tcl/ngcgui.tcl:2850 -msgid "Show key bindings" +#: tcl/bin/genedit.tcl:441 tcl/mini.tcl:2656 +msgid "Single Space" msgstr "" -#: tcl/ngcgui.tcl:2851 -msgid "Restart (cancel pending)" +#: tcl/bin/genedit.tcl:444 tcl/mini.tcl:2658 +msgid "Double Space" msgstr "" -#: tcl/ngcgui.tcl:2852 -msgid "(re)Read Preamble" +#: tcl/bin/genedit.tcl:447 tcl/mini.tcl:2660 +msgid "Tab Space" msgstr "" -#: tcl/ngcgui.tcl:2853 -msgid "(re)Read Postamble" +#: tcl/bin/genedit.tcl:453 +msgid "Next Number:" msgstr "" -#: tcl/ngcgui.tcl:2854 -msgid "(re)Read Subfile" -msgstr "" +#: tcl/bin/genedit.tcl:474 tcl/mini.tcl:2668 +#, fuzzy +msgid "Renumber" +msgstr "_Förtsätt" -#: tcl/ngcgui.tcl:2855 -msgid "toggle retain values" +#: tcl/bin/halconfig.tcl:88 tcl/bin/halshow.tcl:33 +#, fuzzy +msgid "HAL Configuration" +msgstr "Hal _configuration" + +#: tcl/bin/halconfig.tcl:103 +msgid "Would you like to save your configuration before you exit?" msgstr "" -#: tcl/ngcgui.tcl:2856 -msgid "toggle output file verbosity" +#: tcl/bin/halconfig.tcl:103 +msgid "Save All" msgstr "" -#: tcl/ngcgui.tcl:2857 -#, fuzzy -msgid "Show status" -msgstr "Visa EM_C Status" +#: tcl/bin/halconfig.tcl:103 +msgid "Save Tune" +msgstr "" -#: tcl/ngcgui.tcl:2858 -msgid "Show full status (debug info)" +#: tcl/bin/halconfig.tcl:103 +msgid "Save as Netlist" msgstr "" -#: tcl/ngcgui.tcl:2860 +#: tcl/bin/halconfig.tcl:103 #, fuzzy -msgid "on current subfile" -msgstr "Öppna om nuvarande fil [Control-R]" +msgid "Don't Save" +msgstr "Vy framifrån" -#: tcl/ngcgui.tcl:2862 -msgid "on current preamble" +#: tcl/bin/halconfig.tcl:132 +msgid "Show" msgstr "" -#: tcl/ngcgui.tcl:2865 -msgid " Escape Return to Preview page" +#: tcl/bin/halconfig.tcl:133 +msgid "Watch" msgstr "" -#: tcl/ngcgui.tcl:2942 -msgid "Editing requires setting for environmental variable VISUAL" +#: tcl/bin/halconfig.tcl:134 +msgid "Modify" msgstr "" -#: tcl/ngcgui.tcl:2943 -msgid "Trying gedit" +#: tcl/bin/halconfig.tcl:157 +msgid "Save INI Tuning" msgstr "" -#: tcl/ngcgui.tcl:2955 -msgid "No file available for editing yet" +#: tcl/bin/halconfig.tcl:159 +msgid "Save HAL Ini" msgstr "" -#: tcl/ngcgui.tcl:2964 tcl/ngcgui.tcl:2973 -msgid "No file available for editing" +#: tcl/bin/halconfig.tcl:161 +msgid "Save HAL Net" msgstr "" -#: tcl/ngcgui.tcl:2990 -msgid "Status items" +#: tcl/bin/halconfig.tcl:163 +msgid "Save and Exit" msgstr "" -#: tcl/ngcgui.tcl:3003 -msgid "All-page opt items" -msgstr "" +#: tcl/bin/halconfig.tcl:168 tcl/mini.tcl:916 tcl/tklinuxcnc.tcl:739 +#, fuzzy +msgid "View" +msgstr "V_y" -#: tcl/ngcgui.tcl:3009 -msgid "any-items" +#: tcl/bin/halconfig.tcl:170 tcl/bin/halshow.tcl:104 +msgid "Expand Tree" msgstr "" -#: tcl/ngcgui.tcl:3046 -msgid "Set defaults" +#: tcl/bin/halconfig.tcl:172 tcl/bin/halshow.tcl:106 +msgid "Collapse Tree" msgstr "" -#: tcl/ngcgui.tcl:3125 -msgid "not writable" +#: tcl/bin/halconfig.tcl:175 tcl/bin/halshow.tcl:109 +msgid "Expand Pins" msgstr "" -#: tcl/ngcgui.tcl:3263 tcl/ngcgui.tcl:3443 -msgid "new" +#: tcl/bin/halconfig.tcl:177 tcl/bin/halshow.tcl:111 +msgid "Expand Parameters" msgstr "" -#: tcl/ngcgui.tcl:3288 -msgid "Open a new Subfile" +#: tcl/bin/halconfig.tcl:179 tcl/bin/halshow.tcl:113 +msgid "Expand Signals" msgstr "" -#: tcl/ngcgui.tcl:3434 -msgid "remove" +#: tcl/bin/halconfig.tcl:182 tcl/bin/halshow.tcl:116 +msgid "Erase Watch" msgstr "" -#: tcl/ngcgui.tcl:3456 tcl/ngcgui.tcl:3462 -msgid "move" -msgstr "" +#: tcl/bin/halconfig.tcl:194 tcl/mini.tcl:840 tcl/mini.tcl:2785 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "About" +msgstr "Om AXIS" -#: tcl/ngcgui.tcl:3561 src/emc/usr_intf/pncconf/pncconf.py:7022 -#: src/emc/usr_intf/pncconf/pncconf.py:7139 -#: src/emc/usr_intf/pncconf/pncconf.py:7306 -msgid "Custom" -msgstr "" +# ***: ../tcl/axis.tcl:1512 +#: tcl/bin/halconfig.tcl:196 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2579 +#, fuzzy +msgid "Main" +msgstr "Maskin" -#: tcl/ngcgui.tcl:3587 -msgid "Problem creating page" +#: tcl/bin/halconfig.tcl:476 +msgid "Enter HAL command :" msgstr "" -#: tcl/ngcgui.tcl:3594 -msgid "entrykeybindings not available" +#: tcl/bin/halconfig.tcl:479 tcl/bin/halconfig.tcl:528 tcl/bin/halshow.tcl:354 +msgid "Execute" msgstr "" -#: tcl/ngcgui.tcl:3633 -msgid "Found multiple matches for" +#: tcl/bin/halconfig.tcl:943 tcl/bin/halshow.tcl:405 +msgid "Select a node to show." msgstr "" -#: tcl/ngcgui.tcl:3634 -msgid "using path" +#: tcl/bin/halconfig.tcl:968 tcl/bin/halshow.tcl:429 +msgid "<-- Select a Leaf. Click on its name." msgstr "" -#: tcl/ngcgui.tcl:3642 src/emc/usr_intf/axis/scripts/axis.py:2255 -#: src/emc/usr_intf/axis/scripts/axis.py:2268 -msgid "Warning" +#: tcl/bin/halconfig.tcl:1085 tcl/bin/halconfig.tcl:1095 +#: tcl/bin/halconfig.tcl:1102 tcl/bin/halconfig.tcl:1109 +#: tcl/bin/halconfig.tcl:1116 +#, tcl-format +msgid "Click a highlighted entry where %s should go." msgstr "" -#: tcl/ngcgui.tcl:3643 -msgid "File absolute path specifier conflicts with searchpath result" +#: tcl/bin/halconfig.tcl:1092 +msgid "Nothing to be done for parameters here. Try the tuning page" msgstr "" -#: tcl/ngcgui.tcl:3644 -msgid "Absolute Specifier" +#: tcl/bin/halconfig.tcl:1124 +#, tcl-format +msgid "%s is not a leaf, try again" msgstr "" -#: tcl/ngcgui.tcl:3645 -msgid "Using Search Result" +#: tcl/bin/halconfig.tcl:1281 +msgid "" +"Copyright Raymond E Henry. 2006\n" +"License: GPL Version 2\n" +"\n" +"Halconfig is an LinuxCNC configuration tool. It requires that you have " +"started an instance of linuxcnc.\n" +"\n" +"This script carries no warranty or liability for its use to the extent " +"allowed by law." msgstr "" -#: tcl/ngcgui.tcl:3650 -msgid "File not in Search Path" +#: tcl/bin/halshow.tcl:69 +msgid " SHOW " msgstr "" -#: tcl/ngcgui.tcl:3652 -msgid "Must be in search path" +#: tcl/bin/halshow.tcl:70 +msgid " WATCH " msgstr "" -#: tcl/ngcgui.tcl:3654 -msgid "(File found -- not in search path)" +#: tcl/bin/halshow.tcl:90 +msgid "Load Watch List" msgstr "" -#: tcl/ngcgui.tcl:3656 -#, fuzzy -msgid "Current directory" -msgstr "Hal _configuration" +#: tcl/bin/halshow.tcl:102 +msgid "Tree View" +msgstr "" -#: tcl/ngcgui.tcl:3657 -msgid "Search path" +#: tcl/bin/halshow.tcl:349 +msgid "Test HAL command :" msgstr "" -#: tcl/ngcgui.tcl:3663 -msgid "Check setting for" +#: tcl/bin/halshow.tcl:544 +msgid "Load a watch list" msgstr "" -#: tcl/ngcgui.tcl:3664 -#, fuzzy -msgid "in ini file" -msgstr "AXIS (Ingen fil)" +#: tcl/bin/halshow.tcl:567 +msgid "Save current watch list" +msgstr "" -#: tcl/ngcgui.tcl:3665 -msgid "(Restart required after fixing ini file)" +#: tcl/bin/halshow.tcl:581 +msgid "Commands may be tested here but they will NOT be saved" msgstr "" -#: tcl/ngcgui.tcl:3680 -msgid "Try to Continue" +#: tcl/bin/pickconfig.tcl:96 +msgid "" +"Can't find the bwidget 1.7 package. There is a debian bwidget package; " +"install \n" +"it with sudo apt-get install bwidget." msgstr "" -#: tcl/ngcgui.tcl:3685 +#: tcl/bin/pickconfig.tcl:154 #, fuzzy -msgid "Ngcgui Configuration File Not Found" +msgid "Machinekit Configuration Selector" msgstr "Hal _configuration" -#: tcl/ngcgui.tcl:3765 -msgid "Missing Tcl Package Img" +#: tcl/bin/pickconfig.tcl:296 +msgid "No details available." msgstr "" -#: tcl/ngcgui.tcl:3766 -msgid "Please install Img" +#: tcl/bin/pickconfig.tcl:343 +msgid "" +"Welcome to MachineKit.\n" +"\n" +"Select a machine configuration from the list on the left.\n" +"Details about the selected configuration will appear in the display on the " +"right.\n" +"Click 'OK' to run the selected configuration" msgstr "" -#: tcl/ngcgui.tcl:3965 +#: tcl/bin/pickconfig.tcl:401 #, fuzzy -msgid "ini file" -msgstr "AXIS (Ingen fil)" +msgid "My Configurations" +msgstr "Hal _configuration" -#: tcl/ngcgui.tcl:3973 -msgid "not found" -msgstr "" +#: tcl/bin/pickconfig.tcl:405 +#, fuzzy +msgid "Sample Configurations" +msgstr "Hal _configuration" -#: tcl/ngcgui_ttt.tcl:67 -msgid "found truetype-tracer v4 -OK" +#: tcl/bin/pickconfig.tcl:530 +#, tcl-format +msgid "ERROR: no configurations found in path '%s'" msgstr "" -#: tcl/ngcgui_ttt.tcl:70 -msgid "Note truetype-tracer v4 is required" -msgstr "" +#: tcl/bin/pickconfig.tcl:567 +#, fuzzy +msgid "Copy Configuration?" +msgstr "Hal _configuration" -#: tcl/ngcgui_ttt.tcl:71 -msgid "Note: truetype-tracer v4 is required" +#: tcl/bin/pickconfig.tcl:567 +#, tcl-format +msgid "" +"Would you like to copy the %s configuration to your home directory so you " +"can customize it?" msgstr "" -#: tcl/ngcgui_ttt.tcl:81 -msgid "ngcgui_app.tcl must be loaded before" +#: tcl/bin/pickconfig.tcl:567 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:563 +msgid "Yes" msgstr "" -#: tcl/ngcgui_ttt.tcl:89 -msgid "Create a subroutine file from truetype-tracer (V4 reqd)" -msgstr "" +#: tcl/bin/pickconfig.tcl:749 +#, fuzzy +msgid "Configuration Copied" +msgstr "Hal _configuration" -#: tcl/ngcgui_ttt.tcl:102 tcl/ngcgui_ttt.tcl:115 -msgid "problem with" +#: tcl/bin/pickconfig.tcl:749 +#, tcl-format +msgid "" +"The configuration file has been copied to %s. Next time, choose this " +"location when starting MachineKit." msgstr "" -#: tcl/ngcgui_ttt.tcl:106 -msgid "No entry for" +#: tcl/bin/pickconfig.tcl:799 +msgid "Shortcut Created" msgstr "" -#: tcl/ngcgui_ttt.tcl:109 -msgid "wrong version of truetype-tracer" +#: tcl/bin/pickconfig.tcl:799 +msgid "" +"A shortcut to this configuration file has been created on your desktop. You " +"can use it to automatically launch this configuration." msgstr "" -#: tcl/ngcgui_ttt.tcl:125 -msgid "not writable, using" +#: tcl/bin/pickconfig.tcl:805 +msgid "Create Desktop Shortcut" msgstr "" -#: tcl/ngcgui_ttt.tcl:125 -msgid "and setting expandsub" +#: tcl/bin/tkbackplot.tcl:110 +msgid "TkLinuxCNC BackPlot" msgstr "" -#: tcl/ngcgui_ttt.tcl:161 -msgid "Text" -msgstr "" +# ***: ../tcl/axis.tcl:1470 +#: tcl/bin/tkbackplot.tcl:125 +#, fuzzy +msgid "SETUP" +msgstr "#Nödstopp?" -#: tcl/ngcgui_ttt.tcl:171 -msgid "Linescale" -msgstr "" +# ***: ../tcl/axis.tcl:1471 +#: tcl/bin/tkbackplot.tcl:127 +#, fuzzy +msgid "RESET" +msgstr "#Återställ Nödstopp" -#: tcl/ngcgui_ttt.tcl:177 -msgid "none" +#: tcl/bin/tkbackplot.tcl:129 +msgid "CANCEL" msgstr "" -#: tcl/ngcgui_ttt.tcl:192 -msgid "Subdiv" +#: tcl/bin/tkbackplot.tcl:250 +msgid "AXIS" msgstr "" -#: tcl/ngcgui_ttt.tcl:199 -msgid "default" +#: tcl/bin/tkbackplot.tcl:251 +msgid "OFFSET" msgstr "" -#: tcl/ngcgui_ttt.tcl:239 -msgid "Mode" +#: tcl/bin/tkbackplot.tcl:252 +msgid "ANGLE" msgstr "" -#: tcl/ngcgui_ttt.tcl:247 -msgid "normal" +#: tcl/bin/tkbackplot.tcl:253 +msgid "DIRECTION" msgstr "" -#: tcl/ngcgui_ttt.tcl:248 -msgid "date" +#: tcl/bin/tkbackplot.tcl:270 +msgid "SIZE :" msgstr "" -#: tcl/ngcgui_ttt.tcl:249 -msgid "fontname" +#: tcl/mini.tcl:490 +#, tcl-format +msgid "JOG %s +" msgstr "" -#: tcl/ngcgui_ttt.tcl:262 -msgid "Switches" +#: tcl/mini.tcl:491 +#, tcl-format +msgid "JOG %s -" msgstr "" -#: tcl/ngcgui_ttt.tcl:270 -msgid "Unicode" +#: tcl/mini.tcl:492 +#, tcl-format +msgid "" +"%s\n" +"\n" +"Z\n" +"E\n" +"R\n" +"O" msgstr "" -#: tcl/ngcgui_ttt.tcl:275 -msgid "Allow Rotation" +#: tcl/mini.tcl:840 +msgid "" +"TkMini \n" +"\n" +"Tcl/Tk GUI for Enhanced Machine Controller\n" +"\n" +"GPL Copyright 2003 \n" +"Ray Henry \n" +"\n" +" 3D backplotter by Paul Corner \n" +" \n" +"This software comes with ABSOLUTELY NO GUARANTEE! \n" +"For details see the copyright.html file in this directory." msgstr "" -#: tcl/ngcgui_ttt.tcl:295 -msgid "Make ngcgui-compatible subfile and new tab page" -msgstr "" +#: tcl/mini.tcl:915 +#, fuzzy +msgid "Program" +msgstr "Pro_gram" -#: tcl/ngcgui_ttt.tcl:353 -msgid "Null text" +#: tcl/mini.tcl:918 +msgid "Info" msgstr "" -#: tcl/ngcgui_ttt.tcl:384 -msgid "Using truetype-tracer default font" +#: tcl/mini.tcl:923 +msgid "Backplot" msgstr "" -#: tcl/ngcgui_ttt.tcl:388 +#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:5915 #, fuzzy -msgid "no such file" -msgstr "AXIS (Ingen fil)" +msgid "Editor" +msgstr "_Redigera" -#: tcl/ngcgui_ttt.tcl:393 -msgid "file not readable" -msgstr "" +#: tcl/mini.tcl:927 +#, fuzzy +msgid "Offsets" +msgstr "Försjutning" -#: tcl/ngcgui_ttt.tcl:507 -msgid "Creating new tab page" +#: tcl/mini.tcl:929 +msgid "Tools" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:148 -msgid "Emergency stop" -msgstr "Nödstopp" - -#: src/emc/usr_intf/axis/scripts/axis.py:149 -msgid "Turn machine on" -msgstr "Starta maskin" - -#: src/emc/usr_intf/axis/scripts/axis.py:151 -msgid "Activate first axis" -msgstr "Aktivera första axeln" - -#: src/emc/usr_intf/axis/scripts/axis.py:152 -msgid "Activate second axis" -msgstr "Aktivera andra axeln" - -#: src/emc/usr_intf/axis/scripts/axis.py:153 -msgid "Activate third axis" -msgstr "Aktivera tredje axeln" - -#: src/emc/usr_intf/axis/scripts/axis.py:154 -msgid "Activate fourth axis" -msgstr "Aktivera fjärde axeln" +#: tcl/mini.tcl:951 tcl/mini.tcl:3565 tcl/tklinuxcnc.tcl:732 +#, fuzzy +msgid "Reset" +msgstr "_Förtsätt" -#: src/emc/usr_intf/axis/scripts/axis.py:155 +# ***: ../tcl/axis.tcl:1514 +#: tcl/mini.tcl:960 #, fuzzy -msgid "Activate fifth through ninth axis" -msgstr "Aktivera femte axeln" +msgid "Position Type" +msgstr "Position:" -#: src/emc/usr_intf/axis/scripts/axis.py:156 -msgid "Set Feed Override from 0% to 100%" +#: tcl/mini.tcl:962 +msgid "Tool Info" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:157 -msgid ", and ." -msgstr "" +#: tcl/mini.tcl:964 +#, fuzzy +msgid "Offset Info" +msgstr "Försjutning" -#: src/emc/usr_intf/axis/scripts/axis.py:157 -msgid "Select jog speed" +#: tcl/mini.tcl:967 +msgid "Show Restart" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:158 -msgid "< and >" +#: tcl/mini.tcl:968 +msgid "Hide Restart" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:158 -msgid "Select angular jog speed" +#: tcl/mini.tcl:970 +msgid "Show Split Right" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:159 -msgid "I, Shift-I" +#: tcl/mini.tcl:972 +msgid "Show Mode Full" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:159 share/axis/tcl/axis.tcl:2356 -msgid "Select jog increment" +#: tcl/mini.tcl:974 +msgid "Show Popin Full" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:160 -msgid "Continuous jog" +# ***: ../tcl/axis.tcl:1514 +#: tcl/mini.tcl:978 +#, fuzzy +msgid "Actual Position" +msgstr "Position:" + +#: tcl/mini.tcl:980 +msgid "Commanded Position" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:479 -msgid "Home" -msgstr "Hemmaläge" - -#: src/emc/usr_intf/axis/scripts/axis.py:161 -msgid "Send active axis home" -msgstr "Flytta vald axel till hemmaläge" +# ***: ../tcl/axis.tcl:1514 +#: tcl/mini.tcl:983 +#, fuzzy +msgid "Machine Position" +msgstr "Position:" -#: src/emc/usr_intf/axis/scripts/axis.py:162 +# ***: ../tcl/axis.tcl:1514 +#: tcl/mini.tcl:985 #, fuzzy -msgid "Ctrl-Home" -msgstr "Hemmaläge" +msgid "Relative Position" +msgstr "Position:" -#: src/emc/usr_intf/axis/scripts/axis.py:162 -msgid "Home all axes" +#: tcl/mini.tcl:988 tcl/tklinuxcnc.tcl:747 +msgid "Calibration..." msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:163 -msgid "Shift-Home" +#: tcl/mini.tcl:990 +msgid "HAL Show..." msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:163 -#, fuzzy -msgid "Zero G54 offset for active axis" -msgstr "Använd nuvarande läge som G54 förskutning för vald axel" - -#: src/emc/usr_intf/axis/scripts/axis.py:164 -msgid "End" +#: tcl/mini.tcl:992 +msgid "HAL Config..." msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:164 -msgid "Set G54 offset for active axis" -msgstr "Använd nuvarande läge som G54 förskutning för vald axel" - -#: src/emc/usr_intf/axis/scripts/axis.py:165 +#: tcl/mini.tcl:997 #, fuzzy -msgid "Jog active axis" -msgstr "Flytta vald axel till hemmaläge" +msgid "Program File" +msgstr "Pro_gram" -#: src/emc/usr_intf/axis/scripts/axis.py:168 -msgid "Left, Right" +#: tcl/mini.tcl:998 +#, fuzzy, tcl-format +msgid "Program file is %s" +msgstr "Program_filer %r misslyckades" + +#: tcl/mini.tcl:999 +msgid "Editor File" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:168 -msgid "Jog first axis" +#: tcl/mini.tcl:1000 +#, tcl-format +msgid "Editor file is %s" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:169 -msgid "Up, Down" +#: tcl/mini.tcl:1001 +msgid "Parameter File" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:169 -msgid "Jog second axis" +#: tcl/mini.tcl:1002 +#, tcl-format +msgid "Parameter file is %s" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:170 -msgid "Pg Up, Pg Dn" +#: tcl/mini.tcl:1003 +msgid "Tool File" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:170 -msgid "Jog third axis" +#: tcl/mini.tcl:1004 +#, tcl-format +msgid "Tool file is %s" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:171 -msgid "Shift+above jogs" +#: tcl/mini.tcl:1006 +#, fuzzy +msgid "Active G Codes" +msgstr "Aktiva G-Koder" + +#: tcl/mini.tcl:1007 +#, tcl-format +msgid "" +"Active codes include; \n" +"%s" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:171 -msgid "Jog at traverse speed" +#: tcl/mini.tcl:1010 tcl/mini.tcl:2558 tcl/tklinuxcnc.tcl:791 +#, fuzzy +msgid "Help..." +msgstr "_Hjälp" + +#: tcl/mini.tcl:1027 tcl/tklinuxcnc.tcl:890 +msgid "ABORT" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:172 -msgid "Jog fourth axis" +#: tcl/mini.tcl:1038 tcl/mini.tcl:2048 +msgid "CONTINUE" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:175 -msgid "Toggle between Drag and Rotate mode" +#: tcl/mini.tcl:1044 tcl/tklinuxcnc.tcl:828 tcl/tklinuxcnc.tcl:2248 +#: src/emc/usr_intf/touchy/touchy.glade:1264 +msgid "MDI" msgstr "" -# ***: ../scripts/axis.py:104 -#: src/emc/usr_intf/axis/scripts/axis.py:176 -msgid "Left Button" +#: tcl/mini.tcl:1048 tcl/tklinuxcnc.tcl:2239 +msgid "AUTO" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:176 -msgid "Pan, rotate or select line" +#: tcl/mini.tcl:1052 tcl/mini.tcl:1812 tcl/tklinuxcnc.tcl:2141 +#: tcl/tklinuxcnc.tcl:2261 +msgid "MANUAL" msgstr "" -# ***: ../scripts/axis.py:105 -#: src/emc/usr_intf/axis/scripts/axis.py:177 -msgid "Shift+Left Button" +#: tcl/mini.tcl:1106 +msgid "Tool #:" +msgstr "" + +#: tcl/mini.tcl:1108 +msgid "Length :" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:177 +#: tcl/mini.tcl:1119 #, fuzzy -msgid "Rotate or pan" -msgstr "_Roterad vy ovanifrån" +msgid "Work Offsets: " +msgstr "Försjutning" -# ***: ../scripts/axis.py:106 -#: src/emc/usr_intf/axis/scripts/axis.py:178 -msgid "Right Button" +#: tcl/mini.tcl:1121 +msgid "start offsets popup here" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:178 -#: src/emc/usr_intf/axis/scripts/axis.py:180 -#: src/emc/usr_intf/axis/scripts/axis.py:181 -msgid "Zoom view" -msgstr "Zooma vy" +#: tcl/mini.tcl:1165 +msgid "start override popup here" +msgstr "" -# ***: ../scripts/axis.py:107 -#: src/emc/usr_intf/axis/scripts/axis.py:179 -msgid "Wheel Button" -msgstr "Scrollhjulsknapp" +#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1739 +#, fuzzy +msgid "Feed Override:" +msgstr "Matnings överjusterning (%): #guessing again" -#: src/emc/usr_intf/axis/scripts/axis.py:179 -msgid "Rotate view" -msgstr "Rotera vy" +#: tcl/mini.tcl:1180 +msgid "-- MESSAGES --" +msgstr "" -# ***: ../scripts/axis.py:108 -#: src/emc/usr_intf/axis/scripts/axis.py:180 -msgid "Rotate Wheel" +#: tcl/mini.tcl:1230 +msgid "toggleView's not doin nothin yet" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:181 -msgid "Control+Left Button" +#: tcl/mini.tcl:1282 +msgid "Can't set zero with a tool offset active so I issued G49 to cancel it." msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:184 -msgid "Manual control" -msgstr "Manuell kontroll" +#: tcl/mini.tcl:1346 +#, tcl-format +msgid "Can't update the var file while machine is in auto and %s." +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:185 -msgid "Code entry (MDI)" -msgstr "Kod inmatning (MDI)" +#: tcl/mini.tcl:1400 tcl/tklinuxcnc.tcl:1227 +#, fuzzy +msgid "override limits" +msgstr "Ignorera Ändlägen" -#: src/emc/usr_intf/axis/scripts/axis.py:186 -msgid "Control-M" -msgstr "" +#: tcl/mini.tcl:1405 tcl/tklinuxcnc.tcl:1263 +#, fuzzy +msgid "home" +msgstr "Hemmaläge" -#: src/emc/usr_intf/axis/scripts/axis.py:186 -msgid "Clear MDI history" +#: tcl/mini.tcl:1426 +msgid "DEFAULT" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:187 -msgid "Control-H" +#: tcl/mini.tcl:1427 +msgid "Speed:" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:187 -msgid "Copy selected MDI history elements" +#: tcl/mini.tcl:1430 +msgid "RAPID" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:188 -msgid "to clipboard" +#: tcl/mini.tcl:1447 tcl/tklinuxcnc.tcl:1391 +msgid "Set Jog Speed" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:189 -msgid "Control-Shift-H" +#: tcl/mini.tcl:1453 tcl/tklinuxcnc.tcl:1404 +msgid "Set jog speed:" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:189 -msgid "Paste clipboard to MDI history" +#: tcl/mini.tcl:1511 +msgid "JOG X +" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:190 share/axis/tcl/axis.tcl:1113 -#: src/emc/usr_intf/touchy/touchy.glade:508 -msgid "Override Limits" -msgstr "Ignorera Ändlägen" - -#: src/emc/usr_intf/axis/scripts/axis.py:192 -msgid "Open program" -msgstr "Öppna program" - -#: src/emc/usr_intf/axis/scripts/axis.py:193 -msgid "Control-R" +#: tcl/mini.tcl:1512 +msgid "JOG X -" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:193 -#, fuzzy -msgid "Reload program" -msgstr "Kör program" +#: tcl/mini.tcl:1516 +msgid "increment" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:194 -msgid "Control-S" +#: tcl/mini.tcl:1518 tcl/tklinuxcnc.tcl:602 tcl/tklinuxcnc.tcl:1249 +#: tcl/tklinuxcnc.tcl:1253 src/emc/usr_intf/gscreen/gscreen.glade:1574 +#: src/emc/usr_intf/gscreen/gscreen.glade:1586 +msgid "continuous" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:194 -msgid "Save g-code as" +#: tcl/mini.tcl:1520 +msgid "" +"A\n" +"L\n" +"L\n" +"\n" +"Z\n" +"E\n" +"R\n" +"O" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:195 -msgid "Run program" -msgstr "Kör program" +#: tcl/mini.tcl:1588 src/emc/usr_intf/touchy/touchy.glade:1422 +#, fuzzy +msgid "Spindle Forward" +msgstr "Spindelbroms på" -#: src/emc/usr_intf/axis/scripts/axis.py:196 -msgid "Step program" -msgstr "Blockvis körning av program" +#: tcl/mini.tcl:1589 src/emc/usr_intf/touchy/touchy.glade:1433 +#, fuzzy +msgid "Spindle Reverse" +msgstr "Spindelbroms på" -#: src/emc/usr_intf/axis/scripts/axis.py:197 -msgid "Pause program" -msgstr "Pausa program" +#: tcl/mini.tcl:1590 tcl/tklinuxcnc.tcl:871 +#, fuzzy +msgid "Spindle off" +msgstr "Spindelbroms av" -#: src/emc/usr_intf/axis/scripts/axis.py:198 -msgid "Resume program" -msgstr "Fortsätt program" +#: tcl/mini.tcl:1592 src/emc/usr_intf/touchy/touchy.glade:1479 +#, fuzzy +msgid "Spindle Slower" +msgstr "Spindel:" -#: src/emc/usr_intf/axis/scripts/axis.py:199 +#: tcl/mini.tcl:1596 src/emc/usr_intf/touchy/touchy.glade:1464 #, fuzzy -msgid "Stop running program, or" -msgstr "Avbryt program" +msgid "Spindle Faster" +msgstr "Spindelbroms på" -#: src/emc/usr_intf/axis/scripts/axis.py:200 -msgid "stop loading program preview" +#: tcl/mini.tcl:1632 tcl/tklinuxcnc.tcl:1620 +msgid "MDI:" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:202 -msgid "Toggle mist" -msgstr "" - -#: src/emc/usr_intf/axis/scripts/axis.py:203 -msgid "Toggle flood" -msgstr "" - -#: src/emc/usr_intf/axis/scripts/axis.py:204 -msgid "Spindle brake off" -msgstr "Spindelbroms av" - -#: src/emc/usr_intf/axis/scripts/axis.py:205 -msgid "Shift-B" +#: tcl/mini.tcl:1669 tcl/tklinuxcnc.tcl:1658 +#: src/emc/usr_intf/stepconf/main_page.glade:298 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2625 +msgid "Run" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:205 -msgid "Spindle brake on" -msgstr "Spindelbroms på" - -#: src/emc/usr_intf/axis/scripts/axis.py:206 -msgid "Turn spindle clockwise" -msgstr "Spindel på medurs" +#: tcl/mini.tcl:1671 tcl/tklinuxcnc.tcl:1659 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2638 +#, fuzzy +msgid "Pause" +msgstr "_Pausa" -#: src/emc/usr_intf/axis/scripts/axis.py:207 -msgid "Turn spindle counterclockwise" -msgstr "Spindel på moturs" +#: tcl/mini.tcl:1673 tcl/tklinuxcnc.tcl:1660 +#, fuzzy +msgid "Resume" +msgstr "_Förtsätt" -#: src/emc/usr_intf/axis/scripts/axis.py:208 -msgid "Turn spindle more slowly" -msgstr "Spindel på lågt varvtal" +#: tcl/mini.tcl:1675 tcl/tklinuxcnc.tcl:1661 +#, fuzzy +msgid "Step" +msgstr "Stanna #Guessing again" -# ***: ../scripts/axis.py:130 -#: src/emc/usr_intf/axis/scripts/axis.py:209 -msgid "Turn spindle more quickly" +#: tcl/mini.tcl:1677 tcl/tklinuxcnc.tcl:1662 +msgid "Verify" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:211 -msgid "Control-K" +#: tcl/mini.tcl:1698 +msgid "RESTART LINE" msgstr "" -# ***: ../scripts/axis.py:132 -#: src/emc/usr_intf/axis/scripts/axis.py:211 -msgid "Clear live plot" -msgstr "" +#: tcl/mini.tcl:1699 src/emc/usr_intf/stepconf/main_page.glade:531 +#, fuzzy +msgid "Back" +msgstr "Broms" -# ***: ../scripts/axis.py:133 -#: src/emc/usr_intf/axis/scripts/axis.py:212 -msgid "Cycle among preset views" +#: tcl/mini.tcl:1700 +msgid "Ahead" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:213 -msgid "Cycle among preview, DRO, and user tabs" +#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1300 +#: src/emc/usr_intf/gscreen/gscreen.glade:3973 +msgid "Restart" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:215 -msgid "Ctrl-Space" +#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 tcl/tklinuxcnc.tcl:465 +#: src/emc/usr_intf/axis/scripts/axis.py:2023 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:754 +msgid "All files" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:215 -msgid "Clear notifications" +#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 tcl/tklinuxcnc.tcl:466 +msgid "Text files" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:836 -#, python-format -msgid "Unknown tool %d" -msgstr "Okänt verktyg %d" - -#: src/emc/usr_intf/axis/scripts/axis.py:838 -msgid "No tool" -msgstr "Inget verktyg" - -#: src/emc/usr_intf/axis/scripts/axis.py:840 -#, fuzzy, python-format -msgid "Tool %(tool)d, offset %(zo)g, diameter %(dia)g" -msgstr "Verktyg %d, förskutning %g, diameter %g" - -#: src/emc/usr_intf/axis/scripts/axis.py:842 -#, python-format -msgid "Tool %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" +#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 tcl/tklinuxcnc.tcl:467 +msgid "NC files" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1013 -msgid "Filtering..." +#: tcl/mini.tcl:1753 +msgid "" +"The interpreter is running. \n" +" Pressing OK will abort and load the new program" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1073 +# ***: ../tcl/axis.tcl:1470 +#: tcl/mini.tcl:1886 #, fuzzy -msgid "Filter failed" -msgstr "Program_filer %r misslyckades" +msgid "ESTOPPED" +msgstr "#Nödstopp?" -#: src/emc/usr_intf/axis/scripts/axis.py:1074 -#, python-format -msgid "" -"The program %(program)r exited with code %(code)d. Any error messages it " -"produced are shown below:" -msgstr "" +# ***: ../tcl/axis.tcl:1471 +#: tcl/mini.tcl:1889 +#, fuzzy +msgid "ESTOP PUSH" +msgstr "#Återställ Nödstopp" -#: src/emc/usr_intf/axis/scripts/axis.py:1139 -#, python-format -msgid "G-Code error in %s" -msgstr "G-Kod fel i %s" +# ***: ../tcl/axis.tcl:1471 +#: tcl/mini.tcl:1892 tcl/tklinuxcnc.tcl:2233 +msgid "ESTOP RESET" +msgstr "#Återställ Nödstopp" -#: src/emc/usr_intf/axis/scripts/axis.py:1140 -#, python-format -msgid "" -"Near line %(seq)d of %(f)s:\n" -"%(error_str)s" +#: tcl/mini.tcl:1897 tcl/tklinuxcnc.tcl:2298 +msgid "SPINDLE FORWARD" msgstr "" -# ***: ../scripts/axis.py:1083 ../scripts/axis.py:1088 ../scripts/axis.py:1562 -#: src/emc/usr_intf/axis/scripts/axis.py:1292 -#: src/emc/usr_intf/axis/scripts/axis.py:2725 share/axis/tcl/axis.tcl:1092 -#: share/axis/tcl/axis.tcl:1094 share/axis/tcl/axis.tcl:2144 -msgid "Continuous" +#: tcl/mini.tcl:1899 tcl/tklinuxcnc.tcl:2300 +msgid "SPINDLE REVERSE" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1403 -msgid "Ok" +#: tcl/mini.tcl:1901 tcl/tklinuxcnc.tcl:2302 +msgid "SPINDLE OFF" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1546 -msgid "T Tool Table" +#: tcl/mini.tcl:1903 tcl/tklinuxcnc.tcl:2304 +msgid "SPINDLE INCREASE" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1557 -#: src/emc/usr_intf/axis/scripts/axis.py:1730 -#: src/emc/usr_intf/stepconf/stepconf.py:1691 -#: src/emc/usr_intf/stepconf/stepconf.py:2235 -msgid "in" +#: tcl/mini.tcl:1905 tcl/tklinuxcnc.tcl:2306 +msgid "SPINDLE DECREASE" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1560 -msgid " radius" +#: tcl/mini.tcl:1907 tcl/tklinuxcnc.tcl:2308 +msgid "SPINDLE ?" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1562 -msgid " diameter" +#: tcl/mini.tcl:1911 tcl/tklinuxcnc.tcl:2312 +msgid "BRAKE ON" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1563 -msgid "°" +#: tcl/mini.tcl:1913 tcl/tklinuxcnc.tcl:2314 +msgid "BRAKE OFF" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1572 -msgid "Coordinate System:" +#: tcl/mini.tcl:1915 tcl/tklinuxcnc.tcl:2316 +msgid "BRAKE ?" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1588 -msgid "fixture" +#: tcl/mini.tcl:1919 tcl/tklinuxcnc.tcl:2274 +msgid "MIST ON" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1589 -msgid "workpiece" +#: tcl/mini.tcl:1921 tcl/tklinuxcnc.tcl:2276 +msgid "MIST OFF" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1605 -msgid "Name:" +#: tcl/mini.tcl:1923 tcl/tklinuxcnc.tcl:2278 +msgid "MIST ?" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1605 -#, fuzzy -msgid "Size:" -msgstr "Spindel:" - -#: src/emc/usr_intf/axis/scripts/axis.py:1606 -msgid "Tool order:" +#: tcl/mini.tcl:1927 tcl/tklinuxcnc.tcl:2282 +msgid "FLOOD ON" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1606 -msgid "Rapid distance:" +#: tcl/mini.tcl:1929 tcl/tklinuxcnc.tcl:2284 +msgid "FLOOD OFF" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1607 -msgid "Feed distance:" +#: tcl/mini.tcl:1931 tcl/tklinuxcnc.tcl:2286 +msgid "FLOOD ?" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1607 -msgid "Total distance:" +#: tcl/mini.tcl:2052 +msgid "FEEDHOLD" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1608 -msgid "Run time:" +#: tcl/mini.tcl:2124 +msgid "" +"TOOL SETUP \n" +" Click or tab to edit. Press enter to return to keyboard machine control." msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1608 -msgid "X bounds:" +#: tcl/mini.tcl:2130 +msgid " TOOL NUMBER " msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1609 -msgid "Y bounds:" +#: tcl/mini.tcl:2131 +msgid " LENGTH " msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1609 -msgid "Z bounds:" +#: tcl/mini.tcl:2132 +msgid " DIAMETER " msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1610 -msgid "A bounds:" +#: tcl/mini.tcl:2133 +msgid " COMMENT " msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1610 -msgid "B bounds:" +#: tcl/mini.tcl:2188 +msgid "Add Extra Tool" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1611 -msgid "C bounds:" +#: tcl/mini.tcl:2189 +msgid "Remove Last Tool" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1635 -#, python-format -msgid "Program exceeds machine minimum on axis %s" -msgstr "Program överskrider maskinens undre gräns på axeln %s" - -#: src/emc/usr_intf/axis/scripts/axis.py:1638 -#, python-format -msgid "Program exceeds machine maximum on axis %s" -msgstr "Program överskrider maskinens övre gräns på axeln %s" - -#: src/emc/usr_intf/axis/scripts/axis.py:1643 -msgid "Program exceeds machine limits" -msgstr "Program överskrider maskinens begränsningar" - -#: src/emc/usr_intf/axis/scripts/axis.py:1646 -msgid "Run Anyway" -msgstr "Kör ändå" - -#: src/emc/usr_intf/axis/scripts/axis.py:1708 -msgid "No file loaded" +#: tcl/mini.tcl:2217 tcl/mini.tcl:2253 +#, tcl-format +msgid "Can't update the tool file while machine is in auto and %s." msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1716 -#, python-format -msgid "generated from %s" +#: tcl/mini.tcl:2229 +msgid "This is not a good number." msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1722 -#, python-format +#: tcl/mini.tcl:2293 msgid "" -"%(size)s bytes\n" -"%(lines)s gcode lines" +"COORDINATE SYSTEM SETUP \n" +"\n" +" Click value to edit with keyboard. Press enter to return to keyboard " +"control of machine. \n" +" " msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1748 -#, python-format -msgid "%.1f minutes" -msgstr "" +#: tcl/mini.tcl:2320 tcl/scripts/Set_Coordinates.tcl:80 +#, fuzzy +msgid "Axis " +msgstr "Axel:" -#: src/emc/usr_intf/axis/scripts/axis.py:1750 -#, python-format -msgid "%d seconds" +#: tcl/mini.tcl:2321 +msgid "Value " msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1758 -#, python-format -msgid "%(a)f to %(b)f = %(diff)f %(units)s" +#: tcl/mini.tcl:2326 tcl/scripts/Set_Coordinates.tcl:91 +msgid "Teach" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1759 -#, fuzzy -msgid "G-Code Properties" -msgstr "G-Kod fel i %s" +#: tcl/mini.tcl:2334 +msgid "Write And Load File " +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1883 -msgid "All machinable files" +#: tcl/mini.tcl:2336 +msgid "Offset By Radius" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1884 -#: src/emc/usr_intf/axis/scripts/axis.py:2464 -msgid "rs274ngc files" +#: tcl/mini.tcl:2337 +msgid "Offset By Length" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1899 -msgid "axis cannot accept remote command while running" +#: tcl/mini.tcl:2342 +msgid "Subtract" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2255 -msgid "Axis is already homed, are you sure you want to re-home?" +#: tcl/mini.tcl:2344 src/emc/usr_intf/gmoccapy/gmoccapy.glade:6712 +msgid "Add" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2268 -msgid "This axis is already homed, are you sure you want to re-home?" +#: tcl/mini.tcl:2366 +msgid "Zero All G54" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2308 share/axis/tcl/axis.tcl:1108 -msgid "Touch Off" -msgstr "" - -#: src/emc/usr_intf/axis/scripts/axis.py:2309 -#, python-format -msgid "Enter %s coordinate relative to %%s:" -msgstr "" - -#: src/emc/usr_intf/axis/scripts/axis.py:2476 -msgid "Error saving file" +#: tcl/mini.tcl:2367 +msgid "Zero All G55" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2859 -#: src/emc/usr_intf/touchy/touchy.glade:577 -#, fuzzy -msgid "Home All" -msgstr "Hemmaläge" - -#: src/emc/usr_intf/axis/scripts/axis.py:2861 -msgid "Home all axes [Ctrl-Home]" +#: tcl/mini.tcl:2368 +msgid "Zero All G56" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2864 -msgid "Home All Axes" +#: tcl/mini.tcl:2369 +msgid "Zero All G57" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2871 -msgid "Unhome All Axes" +#: tcl/mini.tcl:2370 +msgid "Zero All G58" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2895 -#, python-format -msgid "Home Axis _%s" +#: tcl/mini.tcl:2371 +msgid "Zero All G59" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2897 -#, python-format -msgid "Unhome Axis _%s" +#: tcl/mini.tcl:2372 +msgid "Zero All G59.1" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:3040 -msgid "Run from here" +#: tcl/mini.tcl:2373 +msgid "Zero All G59.2" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:3335 -msgid "Error in ~/.axisrc" +#: tcl/mini.tcl:2374 +msgid "Zero All G59.3" msgstr "" -#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:102 -msgid "LinuxCNC Status" +#: tcl/mini.tcl:2375 +msgid "Zero All ????" msgstr "" -#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:118 -#, fuzzy -msgid "Copy All" -msgstr "_Kopiera" - -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:29 -#, python-format -msgid "Insert tool %d and click continue when ready" +#: tcl/mini.tcl:2493 +msgid "Modified..." msgstr "" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:31 -msgid "Remove the tool and click continue when ready" +#: tcl/mini.tcl:2538 +msgid "Save and Load" msgstr "" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 -#: src/emc/usr_intf/touchy/mdi.py:49 -msgid "Tool change" +#: tcl/mini.tcl:2540 src/emc/usr_intf/gscreen/gscreen.glade:3515 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2363 +msgid "Undo" msgstr "" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 -msgid "Continue" +#: tcl/mini.tcl:2541 src/emc/usr_intf/gscreen/gscreen.glade:3526 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2411 +msgid "Redo" msgstr "" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:55 -msgid "AXIS Manual Toolchanger" +#: tcl/mini.tcl:2546 tcl/tooledit.tcl:488 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6695 +msgid "Delete" msgstr "" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:59 -msgid "" -"This window is part of the AXIS manual toolchanger. It is safe to close or " -"iconify this window, or it will close automatically after a few seconds." +#: tcl/mini.tcl:2551 +msgid "Replace..." msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:507 -#, python-format -msgid "%s: Image to gcode" +#: tcl/mini.tcl:2664 +msgid "Next Number: " msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:508 -msgid "Image to gcode" +#: tcl/mini.tcl:2765 +msgid "Basic Help" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:518 -#, python-format +#: tcl/mini.tcl:2765 msgid "" -"Image size: %(w)d x %(h)d pixels\n" -"Minimum pixel value: %(min)d\n" -"Maximum pixel value: %(max)d" +"This is a simple ASCII editor like many others.\n" +"\n" +"Ctrl+O Open\n" +"Ctrl+S Save\n" +"Ctrl+Z Undo\n" +"Ctrl+Y Redo\n" +"Ctrl+X Cut\n" +"Ctrl+C Copy\n" +"Ctrl+V Paste\n" +"Del Delete\n" +"Ctrl+A Select All\n" +"\n" +"Ctrl+F Find\n" +"Ctrl+R Replace " msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 -msgid "G20 (in)" +#: tcl/mini.tcl:2785 +msgid "" +"tknotepad by Joseph Acosta. \n" +"\n" +" Modified for EMC by: Paul Corner " msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 -msgid "G21 (mm)" +#: tcl/mini.tcl:2793 +msgid "" +"The contents of this file may have changed, do you wish to to save your " +"changes?" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 -#: src/emc/usr_intf/touchy/emc_interface.py:417 -msgid "None" +#: tcl/mini.tcl:2794 +msgid "New Confirm?" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 -msgid "White" +#: tcl/mini.tcl:2928 +msgid "Print Setup" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +#: tcl/mini.tcl:2932 #, fuzzy -msgid "Black" -msgstr "Broms" +msgid "Print Command: " +msgstr "MDI-Kommando:" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Rows" +#: tcl/mini.tcl:3095 +msgid "Find what:" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Columns" +#: tcl/mini.tcl:3101 +msgid "Replace with:" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Rows then Columns" +#: tcl/mini.tcl:3109 +msgid "Find Next" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Columns then Rows" +#: tcl/mini.tcl:3112 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2494 +msgid "Replace" msgstr "" -# ***: ../tcl/axis.tcl:1514 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -#, fuzzy -msgid "Positive" -msgstr "Position:" - -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Negative" +#: tcl/mini.tcl:3120 src/emc/usr_intf/gscreen/gscreen.py:2750 +#: src/emc/usr_intf/gmoccapy/dialogs.py:171 +msgid "Up" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Alternating" +#: tcl/mini.tcl:3121 src/emc/usr_intf/gscreen/gscreen.py:2754 +#: src/emc/usr_intf/gmoccapy/dialogs.py:175 +msgid "Down" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Up Milling" +#: tcl/mini.tcl:3124 +msgid "Match case" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Down Milling" +#: tcl/mini.tcl:3569 +msgid "rot-x" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "Ball End" +#: tcl/mini.tcl:3579 +msgid "rot-y" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "Flat End" +#: tcl/mini.tcl:3589 +msgid "rot-z" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "30 Degree" +#: tcl/mini.tcl:3599 +msgid "zoom" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "45 Degree" -msgstr "" +# ***: ../tcl/axis.tcl:1470 +#: tcl/mini.tcl:3655 +#, fuzzy +msgid "TEST" +msgstr "#Nödstopp?" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "60 Degree" +#: tcl/mini.tcl:3699 +msgid "Hide Setup" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 -msgid "Secondary" -msgstr "" +#: tcl/mini.tcl:3703 +#, fuzzy +msgid "Show Setup" +msgstr "Visa EMC Status" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 -msgid "Full" +#: tcl/show_errors.tcl:41 +msgid "LinuxCNC Errors" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:654 -msgid "Invert Image" +#: tcl/show_errors.tcl:44 +msgid "" +"LinuxCNC terminated with an error. When reporting problems, please include " +"all the information below in your message." msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:655 -msgid "Normalize Image" +#: tcl/show_errors.tcl:74 tcl/scripts/Set_Coordinates.tcl:103 +msgid "Close" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:656 -msgid "Extend Image Border" +#: tcl/tklinuxcnc.tcl:154 tcl/tklinuxcnc.tcl:181 +msgid "Set Run Mark" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:657 -msgid "Pixel Size (Units)" +#: tcl/tklinuxcnc.tcl:156 +#, tcl-format +msgid "Set run mark at line %s?" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:658 -msgid "Depth (units)" +#: tcl/tklinuxcnc.tcl:176 tcl/tklinuxcnc.tcl:204 +msgid "untitled" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:659 -msgid "Tolerance (units)" +#: tcl/tklinuxcnc.tcl:212 +msgid "Load Parameter File" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:660 -msgid "Stepover (pixels)" +#: tcl/tklinuxcnc.tcl:261 +msgid "LinuxCNC Diagnostics" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:661 -msgid "Tool Diameter (units)" +#: tcl/tklinuxcnc.tcl:263 +msgid "Task" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:662 -msgid "Tool Type" +#: tcl/tklinuxcnc.tcl:265 tcl/tklinuxcnc.tcl:288 tcl/tklinuxcnc.tcl:311 +msgid "Heartbeat:" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:663 -msgid "Feed Rate (units per minute)" -msgstr "" +#: tcl/tklinuxcnc.tcl:268 tcl/tklinuxcnc.tcl:291 tcl/tklinuxcnc.tcl:314 +#, fuzzy +msgid "Command:" +msgstr "MDI-Kommando:" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:664 -msgid "Plunge Feed Rate (units per minute)" -msgstr "" +#: tcl/tklinuxcnc.tcl:271 tcl/tklinuxcnc.tcl:294 tcl/tklinuxcnc.tcl:317 +#, fuzzy +msgid "Command #:" +msgstr "MDI-Kommando:" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:666 -msgid "Safety Height (units)" +#: tcl/tklinuxcnc.tcl:274 tcl/tklinuxcnc.tcl:297 tcl/tklinuxcnc.tcl:320 +msgid "Status:" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:667 -msgid "Scan Pattern" +#: tcl/tklinuxcnc.tcl:286 +msgid "Io" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:668 -msgid "Scan Direction" -msgstr "" +# ***: ../tcl/axis.tcl:1514 +#: tcl/tklinuxcnc.tcl:309 +#, fuzzy +msgid "Motion" +msgstr "Position:" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:669 -msgid "Lace Bounding" +#: tcl/tklinuxcnc.tcl:350 +msgid "About TkLinuxCNC" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:670 -msgid "Contact Angle (degrees)" +#: tcl/tklinuxcnc.tcl:351 +msgid "" +"TkLinuxcnc\n" +"\n" +"Tcl/Tk GUI for LinuxCNC\n" +"\n" +"GPL Version 2 (2012)" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:671 -msgid "Spindle Speed (RPM)" +#: tcl/tklinuxcnc.tcl:399 +msgid "Set Tool Offset" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:672 -msgid "Roughing offset (units, 0=no roughing)" +#: tcl/tklinuxcnc.tcl:404 tcl/tklinuxcnc.tcl:905 +#, fuzzy +msgid "Tool:" +msgstr "Kylvätska:" + +#: tcl/tklinuxcnc.tcl:722 +#, fuzzy +msgid "Edit..." +msgstr "_Redigera" + +#: tcl/tklinuxcnc.tcl:727 +msgid "Tool Table Editor..." msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:673 -msgid "Roughing depth per pass (units)" +#: tcl/tklinuxcnc.tcl:730 src/emc/usr_intf/touchy/touchy.glade:1383 +msgid "Reload Tool Table" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:740 -msgid "image-to-gcode: User pressed cancel" +#: tcl/tklinuxcnc.tcl:740 +msgid "Offsets and Variables..." msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:753 -msgid "Depth images" +#: tcl/tklinuxcnc.tcl:741 +msgid "Diagnostics..." msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:22 -msgid "LinuxCNC Debug Level" +#: tcl/tklinuxcnc.tcl:742 +msgid "Backplot..." msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:23 -msgid "debuglevel" +#: tcl/tklinuxcnc.tcl:748 +msgid "Testing..." msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:36 -#, fuzzy -msgid "Configuration *" -msgstr "Hal _configuration" +#: tcl/tklinuxcnc.tcl:749 +msgid "Debug..." +msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:37 -msgid "Version Numbers *" +#: tcl/tklinuxcnc.tcl:750 +msgid "Font..." msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:38 -msgid "NML *" +#: tcl/tklinuxcnc.tcl:754 src/emc/usr_intf/axis/scripts/image-to-gcode.py:665 +msgid "Units" msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:39 -msgid "RCS *" +#: tcl/tklinuxcnc.tcl:755 +msgid "auto" msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:40 -msgid "Task Issue" +#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8873 +msgid "inches" msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:41 -msgid "Motion Time" +#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1609 +#: src/emc/usr_intf/axis/scripts/axis.py:1855 +#: src/emc/usr_intf/axis/scripts/axis.py:2386 +#: src/emc/usr_intf/touchy/touchy.glade:3301 +#: src/emc/usr_intf/stepconf/stepconf.py:1314 +#: src/emc/usr_intf/stepconf/pages.py:625 +#: src/emc/usr_intf/stepconf/main_page.glade:251 +#: src/emc/usr_intf/pncconf/pncconf.py:8869 +#: src/emc/usr_intf/pncconf/pncconf.glade:2195 +#: src/emc/usr_intf/pncconf/pncconf.glade:2362 +#: src/emc/usr_intf/pncconf/pncconf.glade:64552 +#: src/emc/usr_intf/pncconf/pncconf.glade:64621 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm" msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:43 -msgid "Interpreter List" +#: tcl/tklinuxcnc.tcl:758 +msgid "cm" msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:47 -#, python-format -msgid "" -"Inifile setting for this debug level:\n" -"[EMC]DEBUG=0x%08x" +#: tcl/tklinuxcnc.tcl:762 +msgid "Utilities" msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:81 -msgid " * This option can only be enabled in the inifile" +#: tcl/tklinuxcnc.tcl:763 +msgid "Hal Scope" msgstr "" -#: share/axis/tcl/axis.tcl:49 -#, fuzzy -msgid "_Open..." -msgstr "_Öppna" +#: tcl/tklinuxcnc.tcl:785 +msgid "HAL Show" +msgstr "" -#: share/axis/tcl/axis.tcl:53 -msgid "Recent _Files" +#: tcl/tklinuxcnc.tcl:786 +msgid "HAL Config" msgstr "" -#: share/axis/tcl/axis.tcl:57 -#, fuzzy -msgid "_Edit..." -msgstr "_Redigera" +#: tcl/tklinuxcnc.tcl:792 +msgid "Balloon help" +msgstr "" -#: share/axis/tcl/axis.tcl:60 -#, fuzzy -msgid "Ctrl-R" -msgstr "Hemmaläge" +#: tcl/tklinuxcnc.tcl:815 +msgid "Estop on" +msgstr "" -#: share/axis/tcl/axis.tcl:62 -msgid "_Reload" -msgstr "_Ladda om" +#: tcl/tklinuxcnc.tcl:816 +msgid "Estop off" +msgstr "" -#: share/axis/tcl/axis.tcl:65 +# ***: ../tcl/axis.tcl:1512 +#: tcl/tklinuxcnc.tcl:818 #, fuzzy -msgid "Ctrl-S" -msgstr "Hemmaläge" +msgid "Machine on" +msgstr "Maskin" -#: share/axis/tcl/axis.tcl:67 -msgid "_Save gcode as..." -msgstr "" +# ***: ../tcl/axis.tcl:1512 +#: tcl/tklinuxcnc.tcl:819 src/emc/usr_intf/gscreen/gscreen.glade:2452 +#, fuzzy +msgid "Machine off" +msgstr "Maskin" -#: share/axis/tcl/axis.tcl:71 +#: tcl/tklinuxcnc.tcl:826 src/emc/usr_intf/touchy/touchy.glade:1561 #, fuzzy -msgid "_Properties..." -msgstr "G-Kod fel i %s" +msgid "Manual" +msgstr "Manuell kontroll" -#: share/axis/tcl/axis.tcl:77 -msgid "Edit _tool table..." +#: tcl/tklinuxcnc.tcl:835 +msgid "Mist on" msgstr "" -#: share/axis/tcl/axis.tcl:81 -msgid "Reload tool ta_ble" +#: tcl/tklinuxcnc.tcl:836 +msgid "Mist off" msgstr "" -#: share/axis/tcl/axis.tcl:87 -msgid "_Ladder Editor..." +#: tcl/tklinuxcnc.tcl:843 +msgid "Flood on" msgstr "" -#: share/axis/tcl/axis.tcl:99 -msgid "Toggle _Emergency Stop" -msgstr "Nödstopp på/av" - -#: share/axis/tcl/axis.tcl:104 -msgid "Toggle _Machine Power" -msgstr "Maskin kraft på/av" +#: tcl/tklinuxcnc.tcl:844 +msgid "Flood off" +msgstr "" -#: share/axis/tcl/axis.tcl:111 -msgid "_Run program" -msgstr "_Kör program" +#: tcl/tklinuxcnc.tcl:851 +msgid "Lube on" +msgstr "" -#: share/axis/tcl/axis.tcl:115 -msgid "Ru_n from selected line" +#: tcl/tklinuxcnc.tcl:852 +msgid "Lube off" msgstr "" -#: share/axis/tcl/axis.tcl:120 +#: tcl/tklinuxcnc.tcl:869 #, fuzzy -msgid "S_tep" -msgstr "Stanna #Guessing again" +msgid "Spindle forward" +msgstr "Spindelbroms på" -#: share/axis/tcl/axis.tcl:125 +#: tcl/tklinuxcnc.tcl:870 #, fuzzy -msgid "_Pause" -msgstr "_Pausa" +msgid "Spindle reverse" +msgstr "Spindelbroms på" -#: share/axis/tcl/axis.tcl:130 +#: tcl/tklinuxcnc.tcl:885 #, fuzzy -msgid "Re_sume" -msgstr "_Förtsätt" +msgid "Brake on" +msgstr "Broms" -#: share/axis/tcl/axis.tcl:140 -msgid "Stop at M_1" -msgstr "" +#: tcl/tklinuxcnc.tcl:886 +#, fuzzy +msgid "Brake off" +msgstr "Broms" -#: share/axis/tcl/axis.tcl:145 -msgid "Skip lines with '_/'" -msgstr "" +#: tcl/tklinuxcnc.tcl:907 +#, fuzzy +msgid "Offset:" +msgstr "Försjutning" -#: share/axis/tcl/axis.tcl:150 +#: tcl/tklinuxcnc.tcl:913 #, fuzzy -msgid "Ctrl-M" -msgstr "Hemmaläge" +msgid "Work Offsets:" +msgstr "Försjutning" -#: share/axis/tcl/axis.tcl:152 -msgid "Clear MDI h_istory" +#: tcl/tklinuxcnc.tcl:1233 +msgid "relative" msgstr "" -#: share/axis/tcl/axis.tcl:154 +# ***: ../tcl/axis.tcl:1512 +#: tcl/tklinuxcnc.tcl:1234 #, fuzzy -msgid "Ctrl-H" -msgstr "Hemmaläge" +msgid "machine" +msgstr "Maskin" -#: share/axis/tcl/axis.tcl:156 -msgid "Copy from MDI hist_ory" +#: tcl/tklinuxcnc.tcl:1236 +msgid "actual" msgstr "" -#: share/axis/tcl/axis.tcl:158 -msgid "Ctrl-Shift-H" +#: tcl/tklinuxcnc.tcl:1237 +msgid "commanded" msgstr "" -#: share/axis/tcl/axis.tcl:160 -msgid "Paste to MDI histor_y" +#: tcl/tklinuxcnc.tcl:1239 +msgid "joint" msgstr "" -#: share/axis/tcl/axis.tcl:166 -#, fuzzy -msgid "_Calibration" -msgstr "Hal _configuration" +#: tcl/tklinuxcnc.tcl:1240 +msgid "world" +msgstr "" -#: share/axis/tcl/axis.tcl:170 +#: tcl/tklinuxcnc.tcl:1333 #, fuzzy -msgid "Show _Hal Configuration" -msgstr "Hal _configuration" - -#: share/axis/tcl/axis.tcl:174 -msgid "H_al Meter" -msgstr "" +msgid "Axis Offset" +msgstr "Försjutning" -#: share/axis/tcl/axis.tcl:178 -msgid "Ha_l Scope" +#: tcl/tklinuxcnc.tcl:1335 +msgid "Set axis value:" msgstr "" -#: share/axis/tcl/axis.tcl:182 +#: tcl/tklinuxcnc.tcl:1429 #, fuzzy -msgid "Sho_w LinuxCNC Status" -msgstr "Visa EM_C Status" +msgid "Set Feed Override" +msgstr "Matnings överjusterning (%): #guessing again" -#: share/axis/tcl/axis.tcl:186 -msgid "Set _Debug Level" -msgstr "" +#: tcl/tklinuxcnc.tcl:1435 +#, fuzzy +msgid "Set feed override:" +msgstr "Matnings överjusterning (%): #guessing again" -#: share/axis/tcl/axis.tcl:192 -msgid "Homin_g" +#: tcl/tklinuxcnc.tcl:1460 +msgid "Set Spindle Override" msgstr "" -#: share/axis/tcl/axis.tcl:196 -msgid "_Unhoming" +#: tcl/tklinuxcnc.tcl:1466 +msgid "Set spindle speed override:" msgstr "" -#: share/axis/tcl/axis.tcl:200 -msgid "_Zero coordinate system" +#: tcl/tklinuxcnc.tcl:1521 +msgid "Linear Jog Speed" msgstr "" -#: share/axis/tcl/axis.tcl:204 -msgid "P1 G5_4" +#: tcl/tklinuxcnc.tcl:1552 +msgid "Angular Jog Speed (deg)/min:" msgstr "" -#: share/axis/tcl/axis.tcl:208 -msgid "P2 G5_5" -msgstr "" +#: tcl/tklinuxcnc.tcl:1596 +#, fuzzy +msgid "Spindle speed Override:" +msgstr "Matnings överjusterning (%): #guessing again" -#: share/axis/tcl/axis.tcl:212 -msgid "P3 G5_6" -msgstr "" +#: tcl/tklinuxcnc.tcl:1642 +#, fuzzy +msgid "Program: " +msgstr "Pro_gram" -#: share/axis/tcl/axis.tcl:216 -msgid "P4 G5_7" +#: tcl/tklinuxcnc.tcl:1647 +msgid " - Status: " msgstr "" -#: share/axis/tcl/axis.tcl:220 -msgid "P5 G5_8" +#: tcl/tklinuxcnc.tcl:1663 +msgid "Optional Stop" msgstr "" -#: share/axis/tcl/axis.tcl:224 -msgid "P6 G5_9" +#: tcl/tklinuxcnc.tcl:2010 +msgid "Error" msgstr "" -#: share/axis/tcl/axis.tcl:228 -msgid "P7 G59._1" +#: tcl/tklinuxcnc.tcl:2070 tcl/ngcgui_ttt.tcl:46 +msgid "Set Font" msgstr "" -#: share/axis/tcl/axis.tcl:232 -msgid "P8 G59._2" +#: tcl/tklinuxcnc.tcl:2079 tcl/ngcgui_ttt.tcl:283 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4827 +msgid "Font" msgstr "" -#: share/axis/tcl/axis.tcl:236 -msgid "P9 G59._3" +#: tcl/tklinuxcnc.tcl:2086 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3257 +msgid "Size" msgstr "" -#: share/axis/tcl/axis.tcl:240 -msgid "_G92" +#: tcl/tklinuxcnc.tcl:2093 +msgid "Style" msgstr "" -#: share/axis/tcl/axis.tcl:248 -msgid "Tool touch off to wor_kpiece" -msgstr "" +# ***: ../tcl/axis.tcl:1470 +#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:2031 +msgid "ESTOP" +msgstr "#Nödstopp?" -#: share/axis/tcl/axis.tcl:254 -msgid "Tool touch off to _fixture" +# ***: ../tcl/axis.tcl:1472 +#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2979 share/axis/tcl/axis.tcl:2033 +msgid "ON" msgstr "" -#: share/axis/tcl/axis.tcl:262 -msgid "_Top view" -msgstr "Vy_ovanifrån" - -#: share/axis/tcl/axis.tcl:269 -#, fuzzy -msgid "_Rotated Top view" -msgstr "Rotera vy" - -#: share/axis/tcl/axis.tcl:276 -msgid "_Side view" -msgstr "Vy ifrån _sidan" - -#: share/axis/tcl/axis.tcl:283 -msgid "_Front view" -msgstr "Vy _framifrån" +#: tcl/tklinuxcnc.tcl:2290 +msgid "LUBE ON" +msgstr "" -#: share/axis/tcl/axis.tcl:290 -msgid "_Perspective view" +#: tcl/tklinuxcnc.tcl:2292 +msgid "LUBE OFF" msgstr "" -#: share/axis/tcl/axis.tcl:299 -msgid "Display _Inches" -msgstr "Använd _tum" +#: tcl/tklinuxcnc.tcl:2294 +msgid "LUBE ?" +msgstr "" -#: share/axis/tcl/axis.tcl:306 -msgid "Display _MM" -msgstr "Använd _MM" +#: tcl/scripts/Set_Coordinates.tcl:23 +msgid "LinuxCNC Set Coordinate" +msgstr "" -#: share/axis/tcl/axis.tcl:313 -msgid "S_how program" -msgstr "Visa _program" +#: tcl/scripts/Set_Coordinates.tcl:26 +msgid "Coordinate System Control Window" +msgstr "" -#: share/axis/tcl/axis.tcl:318 -#, fuzzy -msgid "Show program r_apids" -msgstr "Visa _program" +#: tcl/scripts/Set_Coordinates.tcl:81 +msgid "Var # " +msgstr "" -#: share/axis/tcl/axis.tcl:323 +#: tcl/scripts/Set_Coordinates.tcl:82 #, fuzzy -msgid "Alpha-_blend program" -msgstr "Öppna program" +msgid "Offset Value " +msgstr "Försjutning" -#: share/axis/tcl/axis.tcl:328 -msgid "Sho_w live plot" +#: tcl/scripts/Set_Coordinates.tcl:83 +msgid "What to Teach" msgstr "" -#: share/axis/tcl/axis.tcl:333 -msgid "Show too_l" -msgstr "Visa v_erktyg" - -#: share/axis/tcl/axis.tcl:338 -#, fuzzy -msgid "Show e_xtents" -msgstr "Visa EM_C Status" - -#: share/axis/tcl/axis.tcl:343 -#, fuzzy -msgid "Show o_ffsets" -msgstr "Visa EM_C Status" +#: tcl/scripts/Set_Coordinates.tcl:101 +msgid "Set Old" +msgstr "" -#: share/axis/tcl/axis.tcl:348 -#, fuzzy -msgid "Sh_ow machine limits" -msgstr "Program överskrider maskinens begränsningar" +#: tcl/scripts/Set_Coordinates.tcl:102 +msgid "Set Zero" +msgstr "" -#: share/axis/tcl/axis.tcl:353 -msgid "Show v_elocity" +#: tcl/scripts/Set_Coordinates.tcl:104 +msgid "Write" msgstr "" -#: share/axis/tcl/axis.tcl:358 -msgid "Show _distance to go" +#: tcl/ngcgui.tcl:439 tcl/ngcgui.tcl:846 +msgid "Need non-null file name" msgstr "" -#: share/axis/tcl/axis.tcl:363 -msgid "Large coordinate fo_nt" +#: tcl/ngcgui.tcl:483 +msgid "Disallowed use of ngcgui generated file as Subfile" msgstr "" -#: share/axis/tcl/axis.tcl:366 -#, fuzzy -msgid "Ctrl-K" -msgstr "Hemmaläge" +#: tcl/ngcgui.tcl:489 +msgid "" +"marked (not_a_subfile)\n" +"Not intended for use as a subfile" +msgstr "" -#: share/axis/tcl/axis.tcl:368 -msgid "_Clear live plot" +#: tcl/ngcgui.tcl:503 tcl/ngcgui.tcl:522 tcl/ngcgui.tcl:544 tcl/ngcgui.tcl:557 +#: tcl/ngcgui.tcl:577 tcl/ngcgui.tcl:682 +msgid "bogus" msgstr "" -#: share/axis/tcl/axis.tcl:377 -msgid "Show commanded position" +#: tcl/ngcgui.tcl:505 +msgid "can not include subroutines within ngcgui subfile" msgstr "" -# ***: ../tcl/axis.tcl:1514 -#: share/axis/tcl/axis.tcl:384 -#, fuzzy -msgid "Show actual position" -msgstr "Position:" +#: tcl/ngcgui.tcl:513 +msgid "Multiple subroutines in file not allowed" +msgstr "" -# ***: ../tcl/axis.tcl:1514 -#: share/axis/tcl/axis.tcl:393 -#, fuzzy -msgid "Show machine position" -msgstr "Position:" +#: tcl/ngcgui.tcl:524 +msgid "sub label" +msgstr "" -# ***: ../tcl/axis.tcl:1514 -#: share/axis/tcl/axis.tcl:400 -#, fuzzy -msgid "Show relative position" -msgstr "Position:" +#: tcl/ngcgui.tcl:524 tcl/ngcgui.tcl:579 +msgid "does not match subroutine file name" +msgstr "" -#: share/axis/tcl/axis.tcl:409 -msgid "Joint mode" +#: tcl/ngcgui.tcl:539 tcl/ngcgui.tcl:540 +msgid "ignoring M2 after endsub" msgstr "" -#: share/axis/tcl/axis.tcl:416 -msgid "World mode" +#: tcl/ngcgui.tcl:545 +msgid "file contains lines after subend" msgstr "" -#: share/axis/tcl/axis.tcl:425 -msgid "_About AXIS" -msgstr "_Om AXIS" +#: tcl/ngcgui.tcl:558 +msgid "file contains lines before sub" +msgstr "" -#: share/axis/tcl/axis.tcl:429 -msgid "Quick _Reference" -msgstr "_Snabbguide" +#: tcl/ngcgui.tcl:579 +msgid "endsub label" +msgstr "" -# ***: ../tcl/axis.tcl:1512 -#: share/axis/tcl/axis.tcl:439 -#, fuzzy -msgid "_Machine" -msgstr "Maskin" +#: tcl/ngcgui.tcl:684 +msgid "out of sequence positional parameter" +msgstr "" -#: share/axis/tcl/axis.tcl:443 -#, fuzzy -msgid "_View" -msgstr "V_y" +#: tcl/ngcgui.tcl:684 +msgid "expected" +msgstr "" -#: share/axis/tcl/axis.tcl:456 -msgid "Toggle Emergency Stop [F1]" -msgstr "Nödstopp på/av [F1]" +#: tcl/ngcgui.tcl:735 +msgid "no sub found in file" +msgstr "" -#: share/axis/tcl/axis.tcl:465 -#, fuzzy -msgid "Toggle Machine power [F2]" -msgstr "Maskin kraft på/av [F2]" +#: tcl/ngcgui.tcl:738 +msgid "no endsub found in file" +msgstr "" -#: share/axis/tcl/axis.tcl:476 -msgid "Open G-Code file [O]" -msgstr "Öppna G-Kod fil [O]" +#: tcl/ngcgui.tcl:801 +msgid "Cannot find gcmc executable" +msgstr "" -#: share/axis/tcl/axis.tcl:484 -msgid "Reopen current file [Control-R]" -msgstr "Öppna om nuvarande fil [Control-R]" +#: tcl/ngcgui.tcl:802 +msgid "Please Install in path" +msgstr "" -#: share/axis/tcl/axis.tcl:494 -msgid "Begin executing current file [R]" -msgstr "Kör nuvarande fil [R] #only sort of ok" +#: tcl/ngcgui.tcl:810 +msgid "not embedded, deriving outdir from:" +msgstr "" -#: share/axis/tcl/axis.tcl:502 -msgid "Execute next line [T]" +#: tcl/ngcgui.tcl:1038 +msgid "Choose Files" msgstr "" -#: share/axis/tcl/axis.tcl:510 -msgid "Pause [P] / resume [S] execution" +#: tcl/ngcgui.tcl:1178 +msgid "Controls" msgstr "" -#: share/axis/tcl/axis.tcl:518 -msgid "Stop program execution [ESC]" +#: tcl/ngcgui.tcl:1187 +msgid "Preamble" msgstr "" -#: share/axis/tcl/axis.tcl:528 -msgid "Toggle skip lines with '/' [Alt-M /]" +#: tcl/ngcgui.tcl:1200 +msgid "Subfile" msgstr "" -#: share/axis/tcl/axis.tcl:535 -msgid "Toggle optional pause [Alt-M 1]" +#: tcl/ngcgui.tcl:1212 +msgid "Postamble" msgstr "" -#: share/axis/tcl/axis.tcl:544 -#, fuzzy -msgid "Zoom in" -msgstr "Zooma in [+]" +#: tcl/ngcgui.tcl:1229 +msgid "Retain values on Subfile read" +msgstr "" -#: share/axis/tcl/axis.tcl:552 -#, fuzzy -msgid "Zoom out" -msgstr "Zooma ut [-]" +#: tcl/ngcgui.tcl:1237 +msgid "Expand subroutine" +msgstr "" -#: share/axis/tcl/axis.tcl:560 -msgid "Top view" -msgstr "Vy ovanifrån" +#: tcl/ngcgui.tcl:1247 tcl/ngcgui.tcl:2571 +msgid "Autosend" +msgstr "" -#: share/axis/tcl/axis.tcl:568 -#, fuzzy -msgid "Rotated top view" -msgstr "Rotera vy" +#: tcl/ngcgui.tcl:1257 +msgid "Verbose ngcfile" +msgstr "" -#: share/axis/tcl/axis.tcl:576 -msgid "Side view" -msgstr "Vy ifrån sidan" +#: tcl/ngcgui.tcl:1267 tcl/ngcgui.tcl:2393 tcl/ngcgui.tcl:2416 +#: tcl/ngcgui.tcl:2446 +msgid "Create Feature" +msgstr "" -#: share/axis/tcl/axis.tcl:584 +#: tcl/ngcgui.tcl:1273 tcl/ngcgui.tcl:3058 #, fuzzy -msgid "Front view" -msgstr "Vy _framifrån" +msgid "MakeFile" +msgstr "_Fil" -#: share/axis/tcl/axis.tcl:592 -msgid "Perspective view" +#: tcl/ngcgui.tcl:1274 tcl/ngcgui.tcl:3055 +msgid "Finalize" msgstr "" -#: share/axis/tcl/axis.tcl:600 -msgid "Toggle between Drag and Rotate Mode [D]" +#: tcl/ngcgui.tcl:1291 +msgid "Reread" msgstr "" -#: share/axis/tcl/axis.tcl:615 -msgid "Clear live plot [Ctrl-K]" +#: tcl/ngcgui.tcl:1310 +msgid "SendFileToAxis" msgstr "" -#: share/axis/tcl/axis.tcl:766 -msgid "Manual Control [F3]" -msgstr "Manuell Kontroll [F3]" - -#: share/axis/tcl/axis.tcl:767 -msgid "MDI [F5]" +#: tcl/ngcgui.tcl:1353 +msgid "Unrecoverable problem" msgstr "" -#: share/axis/tcl/axis.tcl:781 share/axis/tcl/axis.tcl:2036 -#: share/axis/tcl/axis.tcl:2203 -#, fuzzy -msgid "Axis:" -msgstr "Axel:" +#: tcl/ngcgui.tcl:1431 +msgid "Postamble file" +msgstr "" -#: share/axis/tcl/axis.tcl:1102 -#, fuzzy -msgid "Home Axis" -msgstr "Hemmaläge" +#: tcl/ngcgui.tcl:1481 +msgid "Subroutine file" +msgstr "" -#: share/axis/tcl/axis.tcl:1176 -#, fuzzy -msgid "Spindle:" -msgstr "Spindel:" +#: tcl/ngcgui.tcl:1545 +msgid "Positional Parameters" +msgstr "" -#: share/axis/tcl/axis.tcl:1223 src/emc/usr_intf/touchy/touchy.glade:946 -msgid "-" +#: tcl/ngcgui.tcl:1694 +msgid "No Subfile specified" msgstr "" -#: share/axis/tcl/axis.tcl:1237 -msgid "+" +#: tcl/ngcgui.tcl:1696 +msgid "No parameters yet" msgstr "" -#: share/axis/tcl/axis.tcl:1242 -#, fuzzy -msgid "Brake" -msgstr "Broms" +#: tcl/ngcgui.tcl:1705 +msgid "Missing value for parm" +msgstr "" -#: share/axis/tcl/axis.tcl:1289 -#, fuzzy -msgid "Coolant:" -msgstr "Kylvätska:" +#: tcl/ngcgui.tcl:1726 +msgid "Output file" +msgstr "" -#: share/axis/tcl/axis.tcl:1294 -msgid "Mist" +#: tcl/ngcgui.tcl:1841 +msgid "Multiple Tabs with Features" msgstr "" -#: share/axis/tcl/axis.tcl:1299 -msgid "Flood" +#: tcl/ngcgui.tcl:1842 +msgid "Finalize all Tabs?" msgstr "" -# ***: ../tcl/axis.tcl:1050 -#: share/axis/tcl/axis.tcl:1371 -msgid "History:" -msgstr "Historia" +#: tcl/ngcgui.tcl:1842 +msgid "Order" +msgstr "" -#: share/axis/tcl/axis.tcl:1394 -#, fuzzy -msgid "MDI Command:" -msgstr "MDI-Kommando:" +#: tcl/ngcgui.tcl:1844 +msgid "No, just this page" +msgstr "" -#: share/axis/tcl/axis.tcl:1403 -msgid "Go" +#: tcl/ngcgui.tcl:1858 +msgid "Axis is not responding" msgstr "" -#: share/axis/tcl/axis.tcl:1409 -#, fuzzy -msgid "Active G-Codes:" -msgstr "Aktiva G-Koder" +#: tcl/ngcgui.tcl:1859 +msgid "Error: " +msgstr "" -#: share/axis/tcl/axis.tcl:1487 -#, fuzzy -msgid "Preview" -msgstr "Vy ifrån sidan" +#: tcl/ngcgui.tcl:1861 +msgid "Autosend disabled, Ctrl-A toggles autosend" +msgstr "" -#: share/axis/tcl/axis.tcl:1488 -msgid "DRO" +#: tcl/ngcgui.tcl:1863 +msgid "File saving enabled -- Finalize to save" msgstr "" -#: share/axis/tcl/axis.tcl:1575 share/axis/tcl/axis.tcl:1588 -msgid "Jog Speed:" +#: tcl/ngcgui.tcl:1879 +msgid "Require .ngc suffix for filename" msgstr "" -#: share/axis/tcl/axis.tcl:1600 -msgid "Max Velocity:" +#: tcl/ngcgui.tcl:1889 +msgid "Disallowed overwrite of" msgstr "" -#: share/axis/tcl/axis.tcl:1629 -#, fuzzy -msgid "Spindle Override:" -msgstr "Matnings överjusterning (%): #guessing again" +#: tcl/ngcgui.tcl:1913 +msgid "FEATURE" +msgstr "" -#: share/axis/tcl/axis.tcl:1631 share/axis/tcl/axis.tcl:1671 -#: src/emc/usr_intf/pncconf/pncconf.glade:3141 -#: src/emc/usr_intf/pncconf/pncconf.glade:3154 -#: src/emc/usr_intf/pncconf/pncconf.glade:3167 -#: src/emc/usr_intf/pncconf/pncconf.glade:3180 -#: src/emc/usr_intf/pncconf/pncconf.glade:3193 -#: src/emc/usr_intf/pncconf/pncconf.glade:3206 -#: src/emc/usr_intf/pncconf/pncconf.glade:3219 -#: src/emc/usr_intf/pncconf/pncconf.glade:3232 -#: src/emc/usr_intf/pncconf/pncconf.glade:3345 -#: src/emc/usr_intf/pncconf/pncconf.glade:3358 -#: src/emc/usr_intf/pncconf/pncconf.glade:3371 -#: src/emc/usr_intf/pncconf/pncconf.glade:3384 -#: src/emc/usr_intf/pncconf/pncconf.glade:3397 -#: src/emc/usr_intf/pncconf/pncconf.glade:3410 -#: src/emc/usr_intf/pncconf/pncconf.glade:3516 -#: src/emc/usr_intf/pncconf/pncconf.glade:3527 -#: src/emc/usr_intf/pncconf/pncconf.glade:4022 -#: src/emc/usr_intf/pncconf/pncconf.glade:4035 -#: src/emc/usr_intf/pncconf/pncconf.glade:4048 -#: src/emc/usr_intf/pncconf/pncconf.glade:4061 -#: src/emc/usr_intf/pncconf/pncconf.glade:4074 -#: src/emc/usr_intf/pncconf/pncconf.glade:4087 -#: src/emc/usr_intf/pncconf/pncconf.glade:4100 -#: src/emc/usr_intf/pncconf/pncconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:4226 -#: src/emc/usr_intf/pncconf/pncconf.glade:4239 -#: src/emc/usr_intf/pncconf/pncconf.glade:4252 -#: src/emc/usr_intf/pncconf/pncconf.glade:4265 -#: src/emc/usr_intf/pncconf/pncconf.glade:4278 -#: src/emc/usr_intf/pncconf/pncconf.glade:4291 -#: src/emc/usr_intf/pncconf/pncconf.glade:4397 -#: src/emc/usr_intf/pncconf/pncconf.glade:4408 -#: src/emc/usr_intf/pncconf/pncconf.glade:4903 -#: src/emc/usr_intf/pncconf/pncconf.glade:4916 -#: src/emc/usr_intf/pncconf/pncconf.glade:4929 -#: src/emc/usr_intf/pncconf/pncconf.glade:4942 -#: src/emc/usr_intf/pncconf/pncconf.glade:4955 -#: src/emc/usr_intf/pncconf/pncconf.glade:4968 -#: src/emc/usr_intf/pncconf/pncconf.glade:4981 -#: src/emc/usr_intf/pncconf/pncconf.glade:4994 -#: src/emc/usr_intf/pncconf/pncconf.glade:5107 -#: src/emc/usr_intf/pncconf/pncconf.glade:5120 -#: src/emc/usr_intf/pncconf/pncconf.glade:5133 -#: src/emc/usr_intf/pncconf/pncconf.glade:5146 -#: src/emc/usr_intf/pncconf/pncconf.glade:5159 -#: src/emc/usr_intf/pncconf/pncconf.glade:5172 -#: src/emc/usr_intf/pncconf/pncconf.glade:5278 -#: src/emc/usr_intf/pncconf/pncconf.glade:5289 -#: src/emc/usr_intf/pncconf/pncconf.glade:5582 -#: src/emc/usr_intf/pncconf/pncconf.glade:5631 -#: src/emc/usr_intf/pncconf/pncconf.glade:5641 -msgid "%" +#: tcl/ngcgui.tcl:1920 +msgid "feature line added" msgstr "" -#: share/axis/tcl/axis.tcl:1711 -msgid "" -"LinuxCNC/AXIS version $version\n" -"\n" -"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff Epler and Chris " -"Radek.\n" -"\n" -"This is free software, and you are welcome to redistribute it under certain " -"conditions. See the file COPYING, included with LinuxCNC.\n" -"\n" -"Visit the LinuxCNC web site: " +#: tcl/ngcgui.tcl:1932 +msgid "line added" +msgstr "" + +#: tcl/ngcgui.tcl:1932 +msgid "activated" msgstr "" -#: share/axis/tcl/axis.tcl:1739 +#: tcl/ngcgui.tcl:1934 #, fuzzy -msgid "About AXIS" -msgstr "_Om AXIS" +msgid "restores" +msgstr "Stanna #Guessing again" -#: share/axis/tcl/axis.tcl:1768 -msgid "AXIS Quick Reference" -msgstr "AXIS Snabbguide" +#: tcl/ngcgui.tcl:1973 +msgid "NOTREACHED mode" +msgstr "" -#: share/axis/tcl/axis.tcl:1903 -msgid "AXIS $::version on $::machine" +#: tcl/ngcgui.tcl:1989 +msgid "Positional parameters for" msgstr "" -#: share/axis/tcl/axis.tcl:1905 -#, fuzzy -msgid "(no file)" -msgstr "AXIS (Ingen fil)" +#: tcl/ngcgui.tcl:1997 +msgid "expanded file" +msgstr "" -# ***: ../tcl/axis.tcl:1514 -#: share/axis/tcl/axis.tcl:1976 share/axis/tcl/axis.tcl:1981 -#, fuzzy -msgid "Position:" -msgstr "Position:" +#: tcl/ngcgui.tcl:2011 +msgid "call subroutine file" +msgstr "" -# ***: ../tcl/axis.tcl:1512 -#: share/axis/tcl/axis.tcl:1978 -#, fuzzy -msgid "Machine" -msgstr "Maskin" +#: tcl/ngcgui.tcl:2394 +msgid "Enter parms for 1st feature" +msgstr "" + +#: tcl/ngcgui.tcl:2401 +msgid "New Outfile" +msgstr "" + +#: tcl/ngcgui.tcl:2403 +msgid "Ready to make New Outfile" +msgstr "" + +#: tcl/ngcgui.tcl:2419 tcl/ngcgui.tcl:2452 +msgid "Enter parms for feature " +msgstr "" + +#: tcl/ngcgui.tcl:2439 +msgid "feature" +msgstr "" + +#: tcl/ngcgui.tcl:2444 +msgid "Create Next" +msgstr "" + +#: tcl/ngcgui.tcl:2449 +msgid "Created feature " +msgstr "" # ***: ../tcl/axis.tcl:1514 -#: share/axis/tcl/axis.tcl:1978 src/emc/usr_intf/touchy/touchy.glade:155 +#: tcl/ngcgui.tcl:2473 #, fuzzy -msgid "Relative" +msgid "option" msgstr "Position:" -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3329 -msgid "Actual" +#: tcl/ngcgui.tcl:2484 +msgid "Missing parameters" msgstr "" -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3318 -#, fuzzy -msgid "Commanded" -msgstr "MDI-Kommando:" +#: tcl/ngcgui.tcl:2488 +msgid "Parse Error" +msgstr "" -#: share/axis/tcl/axis.tcl:2032 share/axis/tcl/axis.tcl:2203 -msgid "Joint:" +#: tcl/ngcgui.tcl:2495 +msgid "Null Preamble" msgstr "" -#: share/axis/tcl/axis.tcl:2338 -msgid "Turn spindle counterclockwise [F10]" -msgstr "Kör spindel moturs [F10]" +#: tcl/ngcgui.tcl:2500 +msgid "Read Preamble" +msgstr "" -#: share/axis/tcl/axis.tcl:2339 -msgid "Turn spindle clockwise [F9]" -msgstr "Kör spindel medurs [F9]" +#: tcl/ngcgui.tcl:2504 +msgid "Preamble Error" +msgstr "" -#: share/axis/tcl/axis.tcl:2340 -msgid "Stop spindle [F9/F10]" -msgstr "Stanna spindel [F9/F10]" +#: tcl/ngcgui.tcl:2509 +msgid "Null Postamble" +msgstr "" -#: share/axis/tcl/axis.tcl:2341 -#, fuzzy -msgid "Turn spindle Faster [F12]" -msgstr "Kör spindel medurs [F9]" +#: tcl/ngcgui.tcl:2514 +msgid "Read Postamble" +msgstr "" -#: share/axis/tcl/axis.tcl:2342 -#, fuzzy -msgid "Turn spindle Slower [F11]" -msgstr "Kör spindel medurs [F9]" +#: tcl/ngcgui.tcl:2518 +msgid "Postamble Error" +msgstr "" -#: share/axis/tcl/axis.tcl:2343 -msgid "Turn spindle brake on [Shift-B] or off [B]" +#: tcl/ngcgui.tcl:2523 +msgid "Read Subfile" msgstr "" -#: share/axis/tcl/axis.tcl:2344 -msgid "Turn flood on or off [F8]" +#: tcl/ngcgui.tcl:2528 +msgid "Write Error" msgstr "" -#: share/axis/tcl/axis.tcl:2345 -msgid "Turn mist on or off [F7]" +#: tcl/ngcgui.tcl:2532 +msgid "Outfile set" msgstr "" -#: share/axis/tcl/axis.tcl:2346 +#: tcl/ngcgui.tcl:2537 +msgid "Finished" +msgstr "" + +#: tcl/ngcgui.tcl:2542 #, fuzzy -msgid "Send active axis home [Home]" -msgstr "Flytta vald axel till hemmaläge" +msgid "Canceled" +msgstr "Avbryt" + +#: tcl/ngcgui.tcl:2548 +msgid "Sent" +msgstr "" -#: share/axis/tcl/axis.tcl:2347 +#: tcl/ngcgui.tcl:2552 #, fuzzy -msgid "Set G54 offset for active axis [End]" -msgstr "Använd nuvarande läge som G54 förskutning för vald axel" +msgid "SendFileToAxis failed" +msgstr "Program_filer %r misslyckades" -#: share/axis/tcl/axis.tcl:2348 -msgid "Activate axis [X]" -msgstr "Aktivera axel [X]" +#: tcl/ngcgui.tcl:2556 +msgid "Ctrl-k for Key bindings" +msgstr "" -#: share/axis/tcl/axis.tcl:2349 -msgid "Activate axis [Y]" -msgstr "Aktivera axel [Y]" +#: tcl/ngcgui.tcl:2560 +msgid "Expand sub" +msgstr "" -#: share/axis/tcl/axis.tcl:2350 -msgid "Activate axis [Z]" -msgstr "Aktivera axel [Z]" +#: tcl/ngcgui.tcl:2564 +msgid "Retain values" +msgstr "" -#: share/axis/tcl/axis.tcl:2351 -msgid "Activate axis [A]" -msgstr "Aktivera axel [A]" +#: tcl/ngcgui.tcl:2568 +msgid "Verbose" +msgstr "" -#: share/axis/tcl/axis.tcl:2352 -msgid "Activate axis [4]" -msgstr "Aktivera axel [4]" +#: tcl/ngcgui.tcl:2574 +msgid "Finalize Canceled" +msgstr "" -#: share/axis/tcl/axis.tcl:2353 -msgid "Activate axis [5]" -msgstr "Aktivera axel [5]" +#: tcl/ngcgui.tcl:2711 tcl/ngcgui.tcl:2867 +msgid "Dismiss" +msgstr "" -#: share/axis/tcl/axis.tcl:2354 share/axis/tcl/axis.tcl:2355 -#, fuzzy -msgid "Jog selected axis" -msgstr "Flytta vald axel till hemmaläge" +#: tcl/ngcgui.tcl:2716 +msgid "ngcgui Error" +msgstr "" -#: share/axis/tcl/axis.tcl:2357 -msgid "Temporarily allow jogging outside machine limits [L]" +#: tcl/ngcgui.tcl:2739 +msgid "Declining support for tk send bug in ngcgui" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -#, fuzzy -msgid "Spindle CW" -msgstr "Spindel:" +#: tcl/ngcgui.tcl:2740 +msgid "You should upgrade linuxcnc to >= linuxcnc2.5" +msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -#, fuzzy -msgid "Spindle CCW" -msgstr "Spindel:" +#: tcl/ngcgui.tcl:2784 +msgid "pre2.4_send_file_to_axis:error" +msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:50 -#, fuzzy -msgid "Input control" -msgstr "Manuell kontroll" +#: tcl/ngcgui.tcl:2978 share/axis/tcl/axis.tcl:2032 +msgid "OFF" +msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:53 src/emc/usr_intf/touchy/mdi.py:54 -msgid "Straight rapid" +#: tcl/ngcgui.tcl:2981 +msgid "Toggle autosend" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:55 src/emc/usr_intf/touchy/mdi.py:56 -msgid "Straight feed" +#: tcl/ngcgui.tcl:2982 tcl/ngcgui.tcl:3189 +msgid "Clear entries" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:57 src/emc/usr_intf/touchy/mdi.py:58 -msgid "Arc CW" +#: tcl/ngcgui.tcl:2983 +msgid "Set entries to default values" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:59 src/emc/usr_intf/touchy/mdi.py:60 -msgid "Arc CCW" +#: tcl/ngcgui.tcl:2984 tcl/ngcgui.tcl:2998 tcl/ngcgui.tcl:3000 +msgid "Open editor specified by" +msgstr "" + +#: tcl/ngcgui.tcl:2985 +msgid "on last outfile" +msgstr "" + +#: tcl/ngcgui.tcl:2986 +msgid "toggle expand subroutines" +msgstr "" + +#: tcl/ngcgui.tcl:2987 +msgid "Create feature" +msgstr "" + +#: tcl/ngcgui.tcl:2988 +msgid "Finalize (AUTO send is" +msgstr "" + +#: tcl/ngcgui.tcl:2989 +msgid "Show key bindings" +msgstr "" + +#: tcl/ngcgui.tcl:2990 +msgid "Restart (cancel pending)" +msgstr "" + +#: tcl/ngcgui.tcl:2991 +msgid "(re)Read Preamble" +msgstr "" + +#: tcl/ngcgui.tcl:2992 +msgid "(re)Read Postamble" +msgstr "" + +#: tcl/ngcgui.tcl:2993 +msgid "(re)Read Subfile" +msgstr "" + +#: tcl/ngcgui.tcl:2994 +msgid "toggle retain values" +msgstr "" + +#: tcl/ngcgui.tcl:2995 +msgid "toggle output file verbosity" +msgstr "" + +#: tcl/ngcgui.tcl:2996 +#, fuzzy +msgid "Show status" +msgstr "Visa EM_C Status" + +#: tcl/ngcgui.tcl:2997 +msgid "Show full status (debug info)" +msgstr "" + +#: tcl/ngcgui.tcl:2999 +#, fuzzy +msgid "on current subfile" +msgstr "Öppna om nuvarande fil [Control-R]" + +#: tcl/ngcgui.tcl:3001 +msgid "on current preamble" +msgstr "" + +#: tcl/ngcgui.tcl:3004 +msgid " Escape Return to Preview page" +msgstr "" + +#: tcl/ngcgui.tcl:3081 +msgid "Editing requires setting for environmental variable VISUAL" +msgstr "" + +#: tcl/ngcgui.tcl:3082 +msgid "Trying gedit" +msgstr "" + +#: tcl/ngcgui.tcl:3095 +msgid "No file available for editing yet" +msgstr "" + +#: tcl/ngcgui.tcl:3104 tcl/ngcgui.tcl:3113 +msgid "No file available for editing" +msgstr "" + +#: tcl/ngcgui.tcl:3130 +msgid "Status items" +msgstr "" + +#: tcl/ngcgui.tcl:3143 +msgid "All-page opt items" +msgstr "" + +#: tcl/ngcgui.tcl:3149 +msgid "any-items" +msgstr "" + +#: tcl/ngcgui.tcl:3182 +msgid "Set defaults" +msgstr "" + +#: tcl/ngcgui.tcl:3257 +msgid "not writable" +msgstr "" + +#: tcl/ngcgui.tcl:3396 tcl/ngcgui.tcl:3577 +msgid "new" +msgstr "" + +#: tcl/ngcgui.tcl:3422 +msgid "Open a new Subfile" +msgstr "" + +#: tcl/ngcgui.tcl:3568 +msgid "remove" +msgstr "" + +#: tcl/ngcgui.tcl:3590 tcl/ngcgui.tcl:3596 +msgid "move" +msgstr "" + +#: tcl/ngcgui.tcl:3704 src/emc/usr_intf/pncconf/pncconf.py:7374 +#: src/emc/usr_intf/pncconf/pncconf.py:7485 +#: src/emc/usr_intf/pncconf/pncconf.py:7650 +msgid "Custom" +msgstr "" + +#: tcl/ngcgui.tcl:3730 +msgid "Problem creating page" +msgstr "" + +#: tcl/ngcgui.tcl:3737 +msgid "entrykeybindings not available" +msgstr "" + +#: tcl/ngcgui.tcl:3781 +msgid "Found multiple matches for" +msgstr "" + +#: tcl/ngcgui.tcl:3782 +msgid "using path" +msgstr "" + +#: tcl/ngcgui.tcl:3790 src/emc/usr_intf/axis/scripts/axis.py:2440 +#: src/emc/usr_intf/axis/scripts/axis.py:2453 +msgid "Warning" +msgstr "" + +#: tcl/ngcgui.tcl:3791 +msgid "File absolute path specifier conflicts with searchpath result" +msgstr "" + +#: tcl/ngcgui.tcl:3792 +msgid "Absolute Specifier" +msgstr "" + +#: tcl/ngcgui.tcl:3793 +msgid "Using Search Result" +msgstr "" + +#: tcl/ngcgui.tcl:3798 +msgid "File not in Search Path" +msgstr "" + +#: tcl/ngcgui.tcl:3800 +msgid "Must be in search path" +msgstr "" + +#: tcl/ngcgui.tcl:3802 +msgid "(File found -- not in search path)" +msgstr "" + +#: tcl/ngcgui.tcl:3804 +#, fuzzy +msgid "Current directory" +msgstr "Hal _configuration" + +#: tcl/ngcgui.tcl:3805 +msgid "Search path" +msgstr "" + +#: tcl/ngcgui.tcl:3815 +msgid "Check setting for" +msgstr "" + +#: tcl/ngcgui.tcl:3816 +#, fuzzy +msgid "in ini file" +msgstr "AXIS (Ingen fil)" + +#: tcl/ngcgui.tcl:3817 +msgid "(Restart required after fixing ini file)" +msgstr "" + +#: tcl/ngcgui.tcl:3832 +msgid "Try to Continue" +msgstr "" + +#: tcl/ngcgui.tcl:3837 +#, fuzzy +msgid "Ngcgui Configuration File Not Found" +msgstr "Hal _configuration" + +#: tcl/ngcgui.tcl:3917 +msgid "Missing Tcl Package Img" +msgstr "" + +#: tcl/ngcgui.tcl:3918 +msgid "Please install Img" +msgstr "" + +#: tcl/ngcgui.tcl:4122 +#, fuzzy +msgid "ini file" +msgstr "AXIS (Ingen fil)" + +#: tcl/ngcgui.tcl:4131 +msgid "not found" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:67 +msgid "found truetype-tracer v4 -OK" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:70 +msgid "Note truetype-tracer v4 is required" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:71 +msgid "Note: truetype-tracer v4 is required" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:81 +msgid "ngcgui_app.tcl must be loaded before" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:89 +msgid "Create a subroutine file from truetype-tracer (V4 reqd)" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:102 tcl/ngcgui_ttt.tcl:115 +msgid "problem with" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:106 +msgid "No entry for" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:109 +msgid "wrong version of truetype-tracer" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:125 +msgid "not writable, using" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:125 +msgid "and setting expandsub" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:161 +msgid "Text" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:171 +msgid "Linescale" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:177 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3583 +msgid "none" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:192 +msgid "Subdiv" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:199 +msgid "default" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:239 +msgid "Mode" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:247 +msgid "normal" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:248 +msgid "date" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:249 +msgid "fontname" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:262 +msgid "Switches" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:270 +msgid "Unicode" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:275 +msgid "Allow Rotation" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:295 +msgid "Make ngcgui-compatible subfile and new tab page" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:353 +msgid "Null text" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:384 +msgid "Using truetype-tracer default font" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:388 +#, fuzzy +msgid "no such file" +msgstr "AXIS (Ingen fil)" + +#: tcl/ngcgui_ttt.tcl:393 +msgid "file not readable" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:507 +msgid "Creating new tab page" +msgstr "" + +#: tcl/ngcgui_app.tcl:25 +msgid "" +"requires command inifindall\n" +"from axis.py (LinuxCNC 2.5) or" +msgstr "" + +#: tcl/ngcgui_app.tcl:55 +msgid "Substituting" +msgstr "" + +#: tcl/ngcgui_app.tcl:55 +msgid "for" +msgstr "" + +#: tcl/ngcgui_app.tcl:59 +msgid "not readable" +msgstr "" + +#: tcl/ngcgui_app.tcl:65 tcl/ngcgui_app.tcl:68 +msgid "Unexpected: multiple startups for ngcgui" +msgstr "" + +#: tcl/ngcgui_app.tcl:66 +msgid "LinuxCNC" +msgstr "" + +#: tcl/ngcgui_app.tcl:67 +msgid "for linuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" +msgstr "" + +#: tcl/ngcgui_app.tcl:86 +msgid "LinuxCNC version" +msgstr "" + +#: tcl/ngcgui_app.tcl:87 +msgid "for LinuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" +msgstr "" + +#: tcl/tooledit.tcl:65 +msgid "Problem reading ~/.tooleditrc" +msgstr "" + +#: tcl/tooledit.tcl:82 +#, tcl-format +msgid "Note: Ignoring duplicate column name: %s" +msgstr "" + +#: tcl/tooledit.tcl:93 +#, fuzzy, tcl-format +msgid "Unknown column: %s" +msgstr "Okänt verktyg %d" + +#: tcl/tooledit.tcl:210 tcl/tooledit.tcl:213 tcl/tooledit.tcl:598 +#: tcl/tooledit.tcl:599 tcl/tooledit.tcl:1032 +msgid "NEW" +msgstr "" + +#: tcl/tooledit.tcl:232 +#, tcl-format +msgid "%s must be a number" +msgstr "" + +#: tcl/tooledit.tcl:241 +#, tcl-format +msgid "filename: <%s> not readable" +msgstr "" + +#: tcl/tooledit.tcl:245 +#, tcl-format +msgid "filename: <%s> not writable" +msgstr "" + +#: tcl/tooledit.tcl:250 +#, tcl-format +msgid "directory: <%s> not writable" +msgstr "" + +#: tcl/tooledit.tcl:294 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, value <%s> is not a number" +msgstr "" + +#: tcl/tooledit.tcl:300 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, expected integer not <%s>" +msgstr "" + +#: tcl/tooledit.tcl:316 +#, tcl-format +msgid "At linenumber %d, Unknown tag <%s>" +msgstr "" + +#: tcl/tooledit.tcl:399 +#, tcl-format +msgid "%s: Column sorting not available with tcl_version==%s" +msgstr "" + +#: tcl/tooledit.tcl:408 +#, fuzzy +msgid "tool" +msgstr "Inget verktyg" + +#: tcl/tooledit.tcl:409 +msgid "poc" +msgstr "" + +#: tcl/tooledit.tcl:410 +msgid "diam" +msgstr "" + +#: tcl/tooledit.tcl:411 +msgid "front" +msgstr "" + +#: tcl/tooledit.tcl:412 +msgid "back" +msgstr "" + +#: tcl/tooledit.tcl:413 +msgid "orien" +msgstr "" + +#: tcl/tooledit.tcl:414 +msgid "comment" +msgstr "" + +#: tcl/tooledit.tcl:444 +msgid "Del" +msgstr "" + +#: tcl/tooledit.tcl:473 +msgid "ReLoadTable" +msgstr "" + +#: tcl/tooledit.tcl:478 +#, fuzzy +msgid "SaveFile" +msgstr "_Fil" + +#: tcl/tooledit.tcl:483 +msgid "ReRead" +msgstr "" + +#: tcl/tooledit.tcl:485 +#, fuzzy +msgid "AddTool" +msgstr "Kylvätska:" + +#: tcl/tooledit.tcl:535 +#, tcl-format +msgid "Opened %s" +msgstr "" + +#: tcl/tooledit.tcl:536 +#, tcl-format +msgid "Created %s" +msgstr "" + +#: tcl/tooledit.tcl:537 +msgid "File updated" +msgstr "" + +#: tcl/tooledit.tcl:538 +msgid "File modified" +msgstr "" + +#: tcl/tooledit.tcl:539 +msgid "File check errors" +msgstr "" + +#: tcl/tooledit.tcl:540 +msgid "File checked" +msgstr "" + +#: tcl/tooledit.tcl:541 +msgid "File items deleted" +msgstr "" + +#: tcl/tooledit.tcl:542 +msgid "Bogus lines in file ignored" +msgstr "" + +#: tcl/tooledit.tcl:543 +msgid "File errors -- Check Entries" +msgstr "" + +#: tcl/tooledit.tcl:544 +msgid "Warning: File changed by another process" +msgstr "" + +#: tcl/tooledit.tcl:545 +msgid "Warning: File deleted by another process" +msgstr "" + +#: tcl/tooledit.tcl:546 +#, fuzzy +msgid "Added Tool" +msgstr "Inget verktyg" + +#: tcl/tooledit.tcl:550 +#, tcl-format +msgid "Sorted by %s, increasing" +msgstr "" + +#: tcl/tooledit.tcl:551 +#, tcl-format +msgid "Sorted by %s, decreasing" +msgstr "" + +#: tcl/tooledit.tcl:593 +msgid "Added" +msgstr "" + +#: tcl/tooledit.tcl:802 +#, tcl-format +msgid "Tool %s, Column %s, parameter %s is not a number" +msgstr "" + +#: tcl/tooledit.tcl:811 +#, tcl-format +msgid "Tool %s, parameter %s must be nonnegative integer" +msgstr "" + +#: tcl/tooledit.tcl:819 +#, tcl-format +msgid "Tool %s: must be 0..9 integer" +msgstr "" + +#: tcl/tooledit.tcl:826 +#, tcl-format +msgid "Tool %s: <%s> must be between -360 and 360" +msgstr "" + +#: tcl/tooledit.tcl:842 +#, tcl-format +msgid "Pocket <%s> specified multiple times" +msgstr "" + +#: tcl/tooledit.tcl:857 +#, tcl-format +msgid "Tool <%s> specified multiple times" +msgstr "" + +#: tcl/tooledit.tcl:902 +msgid "File Modified" +msgstr "" + +#: tcl/tooledit.tcl:903 +msgid "Save Modifications to File?" +msgstr "" + +#: tcl/tooledit.tcl:930 +#, tcl-format +msgid "" +"Only these columns are currently used:\n" +"\n" +" %s" +msgstr "" + +#: tcl/tooledit.tcl:931 +msgid "Limit display to these columns by specifying" +msgstr "" + +#: tcl/tooledit.tcl:933 +msgid "Format for ini file is" +msgstr "" + +#: tcl/tooledit.tcl:935 +msgid "For standalone use, invoke as" +msgstr "" + +#: tcl/tooledit.tcl:936 +msgid "tool_table_filename" +msgstr "" + +#: tcl/tooledit.tcl:956 +#, tcl-format +msgid "Created by %s" +msgstr "" + +#: tcl/tooledit.tcl:957 +msgid "Saved geometry (updated on program termination)" +msgstr "" + +#: tcl/tooledit.tcl:980 +#, tcl-format +msgid "" +"%s: Axis inifile specifies multiple inifile items for: [EMCIO]TOOL_TABLE" +msgstr "" + +#: tcl/tooledit.tcl:981 +#, tcl-format +msgid "%s: Using: %s" +msgstr "" + +#: tcl/tooledit.tcl:990 +#, tcl-format +msgid "" +"%s: Warning: Axis is running but the tool table file <%s> \n" +"differs from the standalone startup file <%s>" +msgstr "" + +#: tcl/tooledit.tcl:1004 +msgid "Must be On and Idle to reload tool table" +msgstr "" + +#: tcl/tooledit.tcl:1093 +msgid "Usage" +msgstr "" + +#: tcl/tooledit.tcl:1094 tcl/tooledit.tcl:1095 +msgid "filename" +msgstr "" + +#: tcl/tooledit.tcl:1096 +#, tcl-format +msgid "Allowed column_ names are: %s" +msgstr "" + +#: tcl/tooledit.tcl:1106 +msgid "Missing filename" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:183 +msgid "Emergency stop" +msgstr "Nödstopp" + +#: src/emc/usr_intf/axis/scripts/axis.py:184 +msgid "Turn machine on" +msgstr "Starta maskin" + +#: src/emc/usr_intf/axis/scripts/axis.py:186 +msgid "Activate first axis" +msgstr "Aktivera första axeln" + +#: src/emc/usr_intf/axis/scripts/axis.py:187 +msgid "Activate second axis" +msgstr "Aktivera andra axeln" + +#: src/emc/usr_intf/axis/scripts/axis.py:188 +msgid "Activate third axis" +msgstr "Aktivera tredje axeln" + +#: src/emc/usr_intf/axis/scripts/axis.py:189 +msgid "Activate fourth axis" +msgstr "Aktivera fjärde axeln" + +#: src/emc/usr_intf/axis/scripts/axis.py:190 +#, fuzzy +msgid "Activate fifth through ninth axis" +msgstr "Aktivera femte axeln" + +#: src/emc/usr_intf/axis/scripts/axis.py:191 +msgid "Set Feed Override from 0% to 100%" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:192 +msgid ", and ." +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:192 +msgid "Select jog speed" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:193 +msgid "< and >" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:193 +msgid "Select angular jog speed" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:194 +msgid "I, Shift-I" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:194 share/axis/tcl/axis.tcl:2481 +msgid "Select jog increment" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:195 +msgid "Continuous jog" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:196 +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Home" +msgstr "Hemmaläge" + +#: src/emc/usr_intf/axis/scripts/axis.py:196 +msgid "Send active axis home" +msgstr "Flytta vald axel till hemmaläge" + +#: src/emc/usr_intf/axis/scripts/axis.py:197 +#, fuzzy +msgid "Ctrl-Home" +msgstr "Hemmaläge" + +#: src/emc/usr_intf/axis/scripts/axis.py:197 +msgid "Home all axes" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:198 +msgid "Shift-Home" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:198 +#, fuzzy +msgid "Zero G54 offset for active axis" +msgstr "Använd nuvarande läge som G54 förskutning för vald axel" + +#: src/emc/usr_intf/axis/scripts/axis.py:199 +msgid "End" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:199 +msgid "Set G54 offset for active axis" +msgstr "Använd nuvarande läge som G54 förskutning för vald axel" + +#: src/emc/usr_intf/axis/scripts/axis.py:200 +#, fuzzy +msgid "Jog active axis" +msgstr "Flytta vald axel till hemmaläge" + +#: src/emc/usr_intf/axis/scripts/axis.py:203 +msgid "Left, Right" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:203 +msgid "Jog first axis" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:204 +msgid "Up, Down" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:204 +msgid "Jog second axis" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:205 +msgid "Pg Up, Pg Dn" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:205 +msgid "Jog third axis" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:206 +msgid "Shift+above jogs" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:206 +msgid "Jog at traverse speed" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:207 +msgid "Jog fourth axis" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:210 +msgid "Toggle between Drag and Rotate mode" +msgstr "" + +# ***: ../scripts/axis.py:104 +#: src/emc/usr_intf/axis/scripts/axis.py:211 +msgid "Left Button" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:211 +msgid "Pan, rotate or select line" +msgstr "" + +# ***: ../scripts/axis.py:105 +#: src/emc/usr_intf/axis/scripts/axis.py:212 +msgid "Shift+Left Button" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:212 +#, fuzzy +msgid "Rotate or pan" +msgstr "_Roterad vy ovanifrån" + +# ***: ../scripts/axis.py:106 +#: src/emc/usr_intf/axis/scripts/axis.py:213 +msgid "Right Button" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:213 +#: src/emc/usr_intf/axis/scripts/axis.py:215 +#: src/emc/usr_intf/axis/scripts/axis.py:216 +msgid "Zoom view" +msgstr "Zooma vy" + +# ***: ../scripts/axis.py:107 +#: src/emc/usr_intf/axis/scripts/axis.py:214 +msgid "Wheel Button" +msgstr "Scrollhjulsknapp" + +#: src/emc/usr_intf/axis/scripts/axis.py:214 +msgid "Rotate view" +msgstr "Rotera vy" + +# ***: ../scripts/axis.py:108 +#: src/emc/usr_intf/axis/scripts/axis.py:215 +msgid "Rotate Wheel" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:216 +msgid "Control+Left Button" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:219 +msgid "Manual control" +msgstr "Manuell kontroll" + +#: src/emc/usr_intf/axis/scripts/axis.py:220 +msgid "Code entry (MDI)" +msgstr "Kod inmatning (MDI)" + +#: src/emc/usr_intf/axis/scripts/axis.py:221 +msgid "Control-M" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:221 +msgid "Clear MDI history" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:222 +msgid "Control-H" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:222 +msgid "Copy selected MDI history elements" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:223 +msgid "to clipboard" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:224 +msgid "Control-Shift-H" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:224 +msgid "Paste clipboard to MDI history" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:225 share/axis/tcl/axis.tcl:1183 +#: src/emc/usr_intf/touchy/touchy.glade:508 +msgid "Override Limits" +msgstr "Ignorera Ändlägen" + +#: src/emc/usr_intf/axis/scripts/axis.py:227 +msgid "Open program" +msgstr "Öppna program" + +#: src/emc/usr_intf/axis/scripts/axis.py:228 +msgid "Control-R" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:228 +#, fuzzy +msgid "Reload program" +msgstr "Kör program" + +#: src/emc/usr_intf/axis/scripts/axis.py:229 +msgid "Control-S" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:229 +msgid "Save g-code as" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:230 +msgid "Run program" +msgstr "Kör program" + +#: src/emc/usr_intf/axis/scripts/axis.py:231 +msgid "Step program" +msgstr "Blockvis körning av program" + +#: src/emc/usr_intf/axis/scripts/axis.py:232 +msgid "Pause program" +msgstr "Pausa program" + +#: src/emc/usr_intf/axis/scripts/axis.py:233 +msgid "Resume program" +msgstr "Fortsätt program" + +#: src/emc/usr_intf/axis/scripts/axis.py:234 +#, fuzzy +msgid "Stop running program, or" +msgstr "Avbryt program" + +#: src/emc/usr_intf/axis/scripts/axis.py:235 +msgid "stop loading program preview" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:237 +msgid "Toggle mist" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:238 +msgid "Toggle flood" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:239 +msgid "Spindle brake off" +msgstr "Spindelbroms av" + +#: src/emc/usr_intf/axis/scripts/axis.py:240 +msgid "Shift-B" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:240 +msgid "Spindle brake on" +msgstr "Spindelbroms på" + +#: src/emc/usr_intf/axis/scripts/axis.py:241 +msgid "Turn spindle clockwise" +msgstr "Spindel på medurs" + +#: src/emc/usr_intf/axis/scripts/axis.py:242 +msgid "Turn spindle counterclockwise" +msgstr "Spindel på moturs" + +#: src/emc/usr_intf/axis/scripts/axis.py:243 +msgid "Turn spindle more slowly" +msgstr "Spindel på lågt varvtal" + +# ***: ../scripts/axis.py:130 +#: src/emc/usr_intf/axis/scripts/axis.py:244 +msgid "Turn spindle more quickly" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:246 +msgid "Control-K" +msgstr "" + +# ***: ../scripts/axis.py:132 +#: src/emc/usr_intf/axis/scripts/axis.py:246 +msgid "Clear live plot" +msgstr "" + +# ***: ../scripts/axis.py:133 +#: src/emc/usr_intf/axis/scripts/axis.py:247 +msgid "Cycle among preset views" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:248 +msgid "Cycle among preview, DRO, and user tabs" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:250 +msgid "Ctrl-Space" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:250 +msgid "Clear notifications" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:850 +#, python-format +msgid "Unknown tool %d" +msgstr "Okänt verktyg %d" + +#: src/emc/usr_intf/axis/scripts/axis.py:852 +msgid "No tool" +msgstr "Inget verktyg" + +#: src/emc/usr_intf/axis/scripts/axis.py:854 +#, fuzzy, python-format +msgid "Tool %(tool)d, offset %(zo)g, diameter %(dia)g" +msgstr "Verktyg %d, förskutning %g, diameter %g" + +#: src/emc/usr_intf/axis/scripts/axis.py:856 +#, python-format +msgid "Tool %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1031 +msgid "Filtering..." +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1102 +#, fuzzy +msgid "Filter failed" +msgstr "Program_filer %r misslyckades" + +#: src/emc/usr_intf/axis/scripts/axis.py:1103 +#, python-format +msgid "" +"The program %(program)r exited with code %(code)d. Any error messages it " +"produced are shown below:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1171 +#, python-format +msgid "G-Code error in %s" +msgstr "G-Kod fel i %s" + +#: src/emc/usr_intf/axis/scripts/axis.py:1172 +#, python-format +msgid "" +"Near line %(seq)d of %(f)s:\n" +"%(error_str)s" +msgstr "" + +# ***: ../scripts/axis.py:1083 ../scripts/axis.py:1088 ../scripts/axis.py:1562 +#: src/emc/usr_intf/axis/scripts/axis.py:1341 +#: src/emc/usr_intf/axis/scripts/axis.py:2942 share/axis/tcl/axis.tcl:1162 +#: share/axis/tcl/axis.tcl:1164 share/axis/tcl/axis.tcl:2269 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:895 +msgid "Continuous" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1452 +msgid "Ok" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1599 +msgid "T Tool Table" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1610 +#: src/emc/usr_intf/axis/scripts/axis.py:1859 +#: src/emc/usr_intf/axis/scripts/axis.py:2387 +#: src/emc/usr_intf/stepconf/stepconf.py:1328 +#: src/emc/usr_intf/stepconf/pages.py:631 +msgid "in" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1613 +msgid " radius" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1615 +msgid " diameter" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1616 +msgid "°" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1625 +msgid "Coordinate System:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1641 +msgid "fixture" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1642 +msgid "workpiece" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1658 +msgid "Name:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1658 +#, fuzzy +msgid "Size:" +msgstr "Spindel:" + +#: src/emc/usr_intf/axis/scripts/axis.py:1659 +msgid "Tool order:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1659 +msgid "Rapid distance:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1660 +msgid "Feed distance:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1660 +msgid "Total distance:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1661 +msgid "Run time:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1661 +msgid "X bounds:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1662 +msgid "Y bounds:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1662 +msgid "Z bounds:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1663 +msgid "A bounds:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1663 +msgid "B bounds:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1664 +msgid "C bounds:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1688 +#, python-format +msgid "Program exceeds machine minimum on axis %s" +msgstr "Program överskrider maskinens undre gräns på axeln %s" + +#: src/emc/usr_intf/axis/scripts/axis.py:1691 +#, python-format +msgid "Program exceeds machine maximum on axis %s" +msgstr "Program överskrider maskinens övre gräns på axeln %s" + +#: src/emc/usr_intf/axis/scripts/axis.py:1696 +msgid "Program exceeds machine limits" +msgstr "Program överskrider maskinens begränsningar" + +#: src/emc/usr_intf/axis/scripts/axis.py:1699 +msgid "Run Anyway" +msgstr "Kör ändå" + +#: src/emc/usr_intf/axis/scripts/axis.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1581 +msgid "No file loaded" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1845 +#, python-format +msgid "generated from %s" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1851 +#, python-format +msgid "" +"%(size)s bytes\n" +"%(lines)s gcode lines" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1877 +#, python-format +msgid "%.1f minutes" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1879 +#, python-format +msgid "%d seconds" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1887 +#, python-format +msgid "%(a)f to %(b)f = %(diff)f %(units)s" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:1888 +#, fuzzy +msgid "G-Code Properties" +msgstr "G-Kod fel i %s" + +#: src/emc/usr_intf/axis/scripts/axis.py:2021 +msgid "All machinable files" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2022 +#: src/emc/usr_intf/axis/scripts/axis.py:2659 +msgid "rs274ngc files" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2037 +msgid "axis cannot accept remote command while running" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2098 +msgid "File not Writable:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2099 +msgid "" +"This file is not writable\n" +"You can Edit-readonly\n" +"\n" +"or\n" +"\n" +"Save it to your own directory\n" +"then open that saved, writable file" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2106 +msgid "Edit-readonly" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2440 +msgid "Axis is already homed, are you sure you want to re-home?" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2453 +msgid "This axis is already homed, are you sure you want to re-home?" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2493 share/axis/tcl/axis.tcl:1178 +msgid "Touch Off" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2494 +#, python-format +msgid "Enter %s coordinate relative to %%s:" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2671 +msgid "Error saving file" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:3077 +#: src/emc/usr_intf/touchy/touchy.glade:577 +#: src/emc/usr_intf/gscreen/gscreen.glade:2933 +#, fuzzy +msgid "Home All" +msgstr "Hemmaläge" + +#: src/emc/usr_intf/axis/scripts/axis.py:3079 +msgid "Home all axes [Ctrl-Home]" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:3082 +msgid "Home All Axes" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:3089 +msgid "Unhome All Axes" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:3113 +#, python-format +msgid "Home Axis _%s" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:3115 +#, python-format +msgid "Unhome Axis _%s" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:3282 +msgid "Run from here" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:3598 +msgid "Error in ~/.axisrc" +msgstr "" + +# ***: ../tcl/axis.tcl:1512 +#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:102 +#, fuzzy +msgid "Machinekit Status" +msgstr "Maskin" + +#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:118 +#, fuzzy +msgid "Copy All" +msgstr "_Kopiera" + +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 +#, python-format +msgid "Insert tool %d and click continue when ready" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:39 +msgid "Remove the tool and click continue when ready" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 +#: src/emc/usr_intf/touchy/mdi.py:49 src/emc/usr_intf/gscreen/mdi.py:49 +msgid "Tool change" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 +msgid "Continue" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:64 +msgid "AXIS Manual Toolchanger" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:68 +msgid "" +"This window is part of the AXIS manual toolchanger. It is safe to close or " +"iconify this window, or it will close automatically after a few seconds." +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:507 +#, python-format +msgid "%s: Image to gcode" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:508 +msgid "Image to gcode" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:518 +#, python-format +msgid "" +"Image size: %(w)d x %(h)d pixels\n" +"Minimum pixel value: %(min)d\n" +"Maximum pixel value: %(max)d" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 +msgid "G20 (in)" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 +msgid "G21 (mm)" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 +#: src/emc/usr_intf/touchy/emc_interface.py:417 +msgid "None" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +msgid "White" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +#, fuzzy +msgid "Black" +msgstr "Broms" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Rows" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Columns" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Rows then Columns" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Columns then Rows" +msgstr "" + +# ***: ../tcl/axis.tcl:1514 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +#, fuzzy +msgid "Positive" +msgstr "Position:" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Negative" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Alternating" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Up Milling" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Down Milling" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "Ball End" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "Flat End" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "30 Degree" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "45 Degree" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "60 Degree" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 +msgid "Secondary" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 +msgid "Full" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:654 +msgid "Invert Image" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:655 +msgid "Normalize Image" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:656 +msgid "Extend Image Border" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:657 +msgid "Pixel Size (Units)" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:658 +msgid "Depth (units)" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:659 +msgid "Tolerance (units)" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:660 +msgid "Stepover (pixels)" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:661 +msgid "Tool Diameter (units)" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:662 +msgid "Tool Type" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:663 +msgid "Feed Rate (units per minute)" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:664 +msgid "Plunge Feed Rate (units per minute)" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:666 +msgid "Safety Height (units)" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:667 +msgid "Scan Pattern" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:668 +msgid "Scan Direction" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:669 +msgid "Lace Bounding" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:670 +msgid "Contact Angle (degrees)" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:671 +msgid "Spindle Speed (RPM)" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:672 +msgid "Roughing offset (units, 0=no roughing)" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:673 +msgid "Roughing depth per pass (units)" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:740 +msgid "image-to-gcode: User pressed cancel" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:753 +msgid "Depth images" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:22 +msgid "Machinekit Debug Level" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:23 +msgid "debuglevel" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:36 +#, fuzzy +msgid "Configuration *" +msgstr "Hal _configuration" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:37 +msgid "Version Numbers *" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:38 +msgid "NML *" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:39 +msgid "RCS *" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:40 +msgid "Task Issue" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:41 +msgid "Motion Time" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:43 +msgid "Interpreter List" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:47 +#, python-format +msgid "" +"Inifile setting for this debug level:\n" +"[EMC]DEBUG=0x%08x" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/debuglevel.py:81 +msgid " * This option can only be enabled in the inifile" +msgstr "" + +#: share/axis/tcl/axis.tcl:52 +#, fuzzy +msgid "_Open..." +msgstr "_Öppna" + +#: share/axis/tcl/axis.tcl:56 +msgid "Recent _Files" +msgstr "" + +#: share/axis/tcl/axis.tcl:60 +#, fuzzy +msgid "_Edit..." +msgstr "_Redigera" + +#: share/axis/tcl/axis.tcl:63 +#, fuzzy +msgid "Ctrl-R" +msgstr "Hemmaläge" + +#: share/axis/tcl/axis.tcl:65 +msgid "_Reload" +msgstr "_Ladda om" + +#: share/axis/tcl/axis.tcl:68 +#, fuzzy +msgid "Ctrl-S" +msgstr "Hemmaläge" + +#: share/axis/tcl/axis.tcl:70 +msgid "_Save gcode as..." +msgstr "" + +#: share/axis/tcl/axis.tcl:74 +#, fuzzy +msgid "_Properties..." +msgstr "G-Kod fel i %s" + +#: share/axis/tcl/axis.tcl:80 +msgid "Edit _tool table..." +msgstr "" + +#: share/axis/tcl/axis.tcl:84 +msgid "Reload tool ta_ble" +msgstr "" + +#: share/axis/tcl/axis.tcl:90 +msgid "_Ladder Editor..." +msgstr "" + +#: share/axis/tcl/axis.tcl:102 +msgid "Toggle _Emergency Stop" +msgstr "Nödstopp på/av" + +#: share/axis/tcl/axis.tcl:107 +msgid "Toggle _Machine Power" +msgstr "Maskin kraft på/av" + +#: share/axis/tcl/axis.tcl:114 +msgid "_Run program" +msgstr "_Kör program" + +#: share/axis/tcl/axis.tcl:118 +msgid "Ru_n from selected line" +msgstr "" + +#: share/axis/tcl/axis.tcl:123 +#, fuzzy +msgid "S_tep" +msgstr "Stanna #Guessing again" + +#: share/axis/tcl/axis.tcl:128 +#, fuzzy +msgid "_Pause" +msgstr "_Pausa" + +#: share/axis/tcl/axis.tcl:133 +#, fuzzy +msgid "Re_sume" +msgstr "_Förtsätt" + +#: share/axis/tcl/axis.tcl:143 +msgid "Stop at M_1" +msgstr "" + +#: share/axis/tcl/axis.tcl:148 +msgid "Skip lines with '_/'" +msgstr "" + +#: share/axis/tcl/axis.tcl:153 +#, fuzzy +msgid "Ctrl-M" +msgstr "Hemmaläge" + +#: share/axis/tcl/axis.tcl:155 +msgid "Clear MDI h_istory" +msgstr "" + +#: share/axis/tcl/axis.tcl:157 +#, fuzzy +msgid "Ctrl-H" +msgstr "Hemmaläge" + +#: share/axis/tcl/axis.tcl:159 +msgid "Copy from MDI hist_ory" +msgstr "" + +#: share/axis/tcl/axis.tcl:161 +msgid "Ctrl-Shift-H" +msgstr "" + +#: share/axis/tcl/axis.tcl:163 +msgid "Paste to MDI histor_y" +msgstr "" + +#: share/axis/tcl/axis.tcl:169 +#, fuzzy +msgid "_Calibration" +msgstr "Hal _configuration" + +#: share/axis/tcl/axis.tcl:173 +#, fuzzy +msgid "Show _Hal Configuration" +msgstr "Hal _configuration" + +#: share/axis/tcl/axis.tcl:177 +msgid "H_al Meter" +msgstr "" + +#: share/axis/tcl/axis.tcl:181 +msgid "Ha_l Scope" +msgstr "" + +#: share/axis/tcl/axis.tcl:185 +#, fuzzy +msgid "Sho_w Machinekit Status" +msgstr "Visa EM_C Status" + +#: share/axis/tcl/axis.tcl:189 +msgid "Set _Debug Level" +msgstr "" + +#: share/axis/tcl/axis.tcl:195 +msgid "Homin_g" +msgstr "" + +#: share/axis/tcl/axis.tcl:199 +msgid "_Unhoming" +msgstr "" + +#: share/axis/tcl/axis.tcl:203 +msgid "_Zero coordinate system" +msgstr "" + +#: share/axis/tcl/axis.tcl:207 +msgid "P1 G5_4" +msgstr "" + +#: share/axis/tcl/axis.tcl:211 +msgid "P2 G5_5" +msgstr "" + +#: share/axis/tcl/axis.tcl:215 +msgid "P3 G5_6" +msgstr "" + +#: share/axis/tcl/axis.tcl:219 +msgid "P4 G5_7" +msgstr "" + +#: share/axis/tcl/axis.tcl:223 +msgid "P5 G5_8" +msgstr "" + +#: share/axis/tcl/axis.tcl:227 +msgid "P6 G5_9" +msgstr "" + +#: share/axis/tcl/axis.tcl:231 +msgid "P7 G59._1" +msgstr "" + +#: share/axis/tcl/axis.tcl:235 +msgid "P8 G59._2" +msgstr "" + +#: share/axis/tcl/axis.tcl:239 +msgid "P9 G59._3" +msgstr "" + +#: share/axis/tcl/axis.tcl:243 +msgid "_G92" +msgstr "" + +#: share/axis/tcl/axis.tcl:251 +msgid "Tool touch off to wor_kpiece" +msgstr "" + +#: share/axis/tcl/axis.tcl:257 +msgid "Tool touch off to _fixture" +msgstr "" + +#: share/axis/tcl/axis.tcl:265 +msgid "_Top view" +msgstr "Vy_ovanifrån" + +#: share/axis/tcl/axis.tcl:272 +#, fuzzy +msgid "_Rotated Top view" +msgstr "Rotera vy" + +#: share/axis/tcl/axis.tcl:279 +msgid "_Side view" +msgstr "Vy ifrån _sidan" + +#: share/axis/tcl/axis.tcl:286 +msgid "_Front view" +msgstr "Vy _framifrån" + +#: share/axis/tcl/axis.tcl:293 +msgid "_Perspective view" +msgstr "" + +#: share/axis/tcl/axis.tcl:302 +msgid "Display _Inches" +msgstr "Använd _tum" + +#: share/axis/tcl/axis.tcl:309 +msgid "Display _MM" +msgstr "Använd _MM" + +#: share/axis/tcl/axis.tcl:316 +msgid "S_how program" +msgstr "Visa _program" + +#: share/axis/tcl/axis.tcl:321 +#, fuzzy +msgid "Show program r_apids" +msgstr "Visa _program" + +#: share/axis/tcl/axis.tcl:326 +#, fuzzy +msgid "Alpha-_blend program" +msgstr "Öppna program" + +#: share/axis/tcl/axis.tcl:331 +msgid "Sho_w live plot" +msgstr "" + +#: share/axis/tcl/axis.tcl:336 +msgid "Show too_l" +msgstr "Visa v_erktyg" + +#: share/axis/tcl/axis.tcl:341 +#, fuzzy +msgid "Show e_xtents" +msgstr "Visa EM_C Status" + +#: share/axis/tcl/axis.tcl:345 +msgid "_Grid" +msgstr "" + +#: share/axis/tcl/axis.tcl:350 +#, fuzzy +msgid "Show o_ffsets" +msgstr "Visa EM_C Status" + +#: share/axis/tcl/axis.tcl:355 +#, fuzzy +msgid "Sh_ow machine limits" +msgstr "Program överskrider maskinens begränsningar" + +#: share/axis/tcl/axis.tcl:360 +msgid "Show v_elocity" +msgstr "" + +#: share/axis/tcl/axis.tcl:365 +msgid "Show _distance to go" +msgstr "" + +#: share/axis/tcl/axis.tcl:370 +msgid "Large coordinate fo_nt" +msgstr "" + +#: share/axis/tcl/axis.tcl:373 +#, fuzzy +msgid "Ctrl-K" +msgstr "Hemmaläge" + +#: share/axis/tcl/axis.tcl:375 +msgid "_Clear live plot" +msgstr "" + +#: share/axis/tcl/axis.tcl:384 +msgid "Show commanded position" +msgstr "" + +# ***: ../tcl/axis.tcl:1514 +#: share/axis/tcl/axis.tcl:391 +#, fuzzy +msgid "Show actual position" +msgstr "Position:" + +# ***: ../tcl/axis.tcl:1514 +#: share/axis/tcl/axis.tcl:400 +#, fuzzy +msgid "Show machine position" +msgstr "Position:" + +# ***: ../tcl/axis.tcl:1514 +#: share/axis/tcl/axis.tcl:407 +#, fuzzy +msgid "Show relative position" +msgstr "Position:" + +#: share/axis/tcl/axis.tcl:416 +msgid "Joint mode" +msgstr "" + +#: share/axis/tcl/axis.tcl:423 +msgid "World mode" +msgstr "" + +#: share/axis/tcl/axis.tcl:431 +msgid "_Off" +msgstr "" + +#: share/axis/tcl/axis.tcl:437 +msgid "_Custom" +msgstr "" + +#: share/axis/tcl/axis.tcl:443 +msgid "User_0" +msgstr "" + +#: share/axis/tcl/axis.tcl:447 +msgid "User_1" +msgstr "" + +#: share/axis/tcl/axis.tcl:451 +msgid "User_2" +msgstr "" + +#: share/axis/tcl/axis.tcl:455 +msgid "User_3" +msgstr "" + +#: share/axis/tcl/axis.tcl:459 +msgid "User_4" +msgstr "" + +#: share/axis/tcl/axis.tcl:463 +msgid "User_5" +msgstr "" + +#: share/axis/tcl/axis.tcl:467 +msgid "User_6" +msgstr "" + +#: share/axis/tcl/axis.tcl:471 +msgid "User_7" +msgstr "" + +#: share/axis/tcl/axis.tcl:475 +msgid "User_8" +msgstr "" + +#: share/axis/tcl/axis.tcl:479 +msgid "User_9" +msgstr "" + +#: share/axis/tcl/axis.tcl:491 +msgid "_About AXIS" +msgstr "_Om AXIS" + +#: share/axis/tcl/axis.tcl:495 +msgid "Quick _Reference" +msgstr "_Snabbguide" + +# ***: ../tcl/axis.tcl:1512 +#: share/axis/tcl/axis.tcl:505 +#, fuzzy +msgid "_Machine" +msgstr "Maskin" + +#: share/axis/tcl/axis.tcl:509 +#, fuzzy +msgid "_View" +msgstr "V_y" + +#: share/axis/tcl/axis.tcl:513 +msgid "_User" +msgstr "" + +#: share/axis/tcl/axis.tcl:526 +msgid "Toggle Emergency Stop [F1]" +msgstr "Nödstopp på/av [F1]" + +#: share/axis/tcl/axis.tcl:535 +#, fuzzy +msgid "Toggle Machine power [F2]" +msgstr "Maskin kraft på/av [F2]" + +#: share/axis/tcl/axis.tcl:546 +msgid "Open G-Code file [O]" +msgstr "Öppna G-Kod fil [O]" + +#: share/axis/tcl/axis.tcl:554 +msgid "Reopen current file [Control-R]" +msgstr "Öppna om nuvarande fil [Control-R]" + +#: share/axis/tcl/axis.tcl:564 +msgid "Begin executing current file [R]" +msgstr "Kör nuvarande fil [R] #only sort of ok" + +#: share/axis/tcl/axis.tcl:572 +msgid "Execute next line [T]" +msgstr "" + +#: share/axis/tcl/axis.tcl:580 +msgid "Pause [P] / resume [S] execution" +msgstr "" + +#: share/axis/tcl/axis.tcl:588 +msgid "Stop program execution [ESC]" +msgstr "" + +#: share/axis/tcl/axis.tcl:598 +msgid "Toggle skip lines with '/' [Alt-M /]" +msgstr "" + +#: share/axis/tcl/axis.tcl:605 +msgid "Toggle optional pause [Alt-M 1]" +msgstr "" + +#: share/axis/tcl/axis.tcl:614 src/emc/usr_intf/gmoccapy/gmoccapy.glade:549 +#, fuzzy +msgid "Zoom in" +msgstr "Zooma in [+]" + +#: share/axis/tcl/axis.tcl:622 src/emc/usr_intf/gmoccapy/gmoccapy.glade:567 +#, fuzzy +msgid "Zoom out" +msgstr "Zooma ut [-]" + +#: share/axis/tcl/axis.tcl:630 +msgid "Top view" +msgstr "Vy ovanifrån" + +#: share/axis/tcl/axis.tcl:638 +#, fuzzy +msgid "Rotated top view" +msgstr "Rotera vy" + +#: share/axis/tcl/axis.tcl:646 +msgid "Side view" +msgstr "Vy ifrån sidan" + +#: share/axis/tcl/axis.tcl:654 +#, fuzzy +msgid "Front view" +msgstr "Vy _framifrån" + +#: share/axis/tcl/axis.tcl:662 +msgid "Perspective view" +msgstr "" + +#: share/axis/tcl/axis.tcl:670 +msgid "Toggle between Drag and Rotate Mode [D]" +msgstr "" + +#: share/axis/tcl/axis.tcl:685 +msgid "Clear live plot [Ctrl-K]" +msgstr "" + +#: share/axis/tcl/axis.tcl:836 +msgid "Manual Control [F3]" +msgstr "Manuell Kontroll [F3]" + +#: share/axis/tcl/axis.tcl:837 +msgid "MDI [F5]" +msgstr "" + +#: share/axis/tcl/axis.tcl:851 share/axis/tcl/axis.tcl:2158 +#: share/axis/tcl/axis.tcl:2328 +#, fuzzy +msgid "Axis:" +msgstr "Axel:" + +#: share/axis/tcl/axis.tcl:1172 src/emc/usr_intf/gscreen/gscreen.glade:2944 +#, fuzzy +msgid "Home Axis" +msgstr "Hemmaläge" + +#: share/axis/tcl/axis.tcl:1246 +#, fuzzy +msgid "Spindle:" +msgstr "Spindel:" + +#: share/axis/tcl/axis.tcl:1293 src/emc/usr_intf/touchy/touchy.glade:946 +#: src/emc/usr_intf/stepconf/main_page.glade:406 +#: src/emc/usr_intf/gscreen/gscreen.glade:4067 +msgid "-" +msgstr "" + +#: share/axis/tcl/axis.tcl:1307 src/emc/usr_intf/stepconf/main_page.glade:403 +#: src/emc/usr_intf/gscreen/gscreen.glade:4056 +msgid "+" +msgstr "" + +#: share/axis/tcl/axis.tcl:1312 +#, fuzzy +msgid "Brake" +msgstr "Broms" + +#: share/axis/tcl/axis.tcl:1359 +#, fuzzy +msgid "Coolant:" +msgstr "Kylvätska:" + +#: share/axis/tcl/axis.tcl:1364 +msgid "Mist" +msgstr "" + +#: share/axis/tcl/axis.tcl:1369 +msgid "Flood" +msgstr "" + +# ***: ../tcl/axis.tcl:1050 +#: share/axis/tcl/axis.tcl:1441 +msgid "History:" +msgstr "Historia" + +#: share/axis/tcl/axis.tcl:1464 +#, fuzzy +msgid "MDI Command:" +msgstr "MDI-Kommando:" + +#: share/axis/tcl/axis.tcl:1473 +msgid "Go" +msgstr "" + +#: share/axis/tcl/axis.tcl:1479 +#, fuzzy +msgid "Active G-Codes:" +msgstr "Aktiva G-Koder" + +#: share/axis/tcl/axis.tcl:1557 src/emc/usr_intf/gmoccapy/gmoccapy.glade:771 +#, fuzzy +msgid "Preview" +msgstr "Vy ifrån sidan" + +#: share/axis/tcl/axis.tcl:1558 +msgid "DRO" +msgstr "" + +#: share/axis/tcl/axis.tcl:1645 share/axis/tcl/axis.tcl:1658 +msgid "Jog Speed:" +msgstr "" + +#: share/axis/tcl/axis.tcl:1670 +msgid "Max Velocity:" +msgstr "" + +#: share/axis/tcl/axis.tcl:1699 +#, fuzzy +msgid "Spindle Override:" +msgstr "Matnings överjusterning (%): #guessing again" + +#: share/axis/tcl/axis.tcl:1701 share/axis/tcl/axis.tcl:1741 +#: share/axis/tcl/axis.tcl:1779 src/emc/usr_intf/pncconf/pncconf.glade:2834 +#: src/emc/usr_intf/pncconf/pncconf.glade:2845 +#: src/emc/usr_intf/pncconf/pncconf.glade:2949 +#: src/emc/usr_intf/pncconf/pncconf.glade:2962 +#: src/emc/usr_intf/pncconf/pncconf.glade:2975 +#: src/emc/usr_intf/pncconf/pncconf.glade:2988 +#: src/emc/usr_intf/pncconf/pncconf.glade:3001 +#: src/emc/usr_intf/pncconf/pncconf.glade:3014 +#: src/emc/usr_intf/pncconf/pncconf.glade:3127 +#: src/emc/usr_intf/pncconf/pncconf.glade:3140 +#: src/emc/usr_intf/pncconf/pncconf.glade:3153 +#: src/emc/usr_intf/pncconf/pncconf.glade:3166 +#: src/emc/usr_intf/pncconf/pncconf.glade:3179 +#: src/emc/usr_intf/pncconf/pncconf.glade:3192 +#: src/emc/usr_intf/pncconf/pncconf.glade:3205 +#: src/emc/usr_intf/pncconf/pncconf.glade:3218 +#: src/emc/usr_intf/pncconf/pncconf.glade:3715 +#: src/emc/usr_intf/pncconf/pncconf.glade:3726 +#: src/emc/usr_intf/pncconf/pncconf.glade:3830 +#: src/emc/usr_intf/pncconf/pncconf.glade:3843 +#: src/emc/usr_intf/pncconf/pncconf.glade:3856 +#: src/emc/usr_intf/pncconf/pncconf.glade:3869 +#: src/emc/usr_intf/pncconf/pncconf.glade:3882 +#: src/emc/usr_intf/pncconf/pncconf.glade:3895 +#: src/emc/usr_intf/pncconf/pncconf.glade:4008 +#: src/emc/usr_intf/pncconf/pncconf.glade:4021 +#: src/emc/usr_intf/pncconf/pncconf.glade:4034 +#: src/emc/usr_intf/pncconf/pncconf.glade:4047 +#: src/emc/usr_intf/pncconf/pncconf.glade:4060 +#: src/emc/usr_intf/pncconf/pncconf.glade:4073 +#: src/emc/usr_intf/pncconf/pncconf.glade:4086 +#: src/emc/usr_intf/pncconf/pncconf.glade:4099 +#: src/emc/usr_intf/pncconf/pncconf.glade:4596 +#: src/emc/usr_intf/pncconf/pncconf.glade:4607 +#: src/emc/usr_intf/pncconf/pncconf.glade:4711 +#: src/emc/usr_intf/pncconf/pncconf.glade:4724 +#: src/emc/usr_intf/pncconf/pncconf.glade:4737 +#: src/emc/usr_intf/pncconf/pncconf.glade:4750 +#: src/emc/usr_intf/pncconf/pncconf.glade:4763 +#: src/emc/usr_intf/pncconf/pncconf.glade:4776 +#: src/emc/usr_intf/pncconf/pncconf.glade:4889 +#: src/emc/usr_intf/pncconf/pncconf.glade:4902 +#: src/emc/usr_intf/pncconf/pncconf.glade:4915 +#: src/emc/usr_intf/pncconf/pncconf.glade:4928 +#: src/emc/usr_intf/pncconf/pncconf.glade:4941 +#: src/emc/usr_intf/pncconf/pncconf.glade:4954 +#: src/emc/usr_intf/pncconf/pncconf.glade:4967 +#: src/emc/usr_intf/pncconf/pncconf.glade:4980 +#: src/emc/usr_intf/pncconf/pncconf.glade:5631 +#: src/emc/usr_intf/pncconf/pncconf.glade:5643 +#: src/emc/usr_intf/pncconf/pncconf.glade:5690 +msgid "%" +msgstr "" + +#: share/axis/tcl/axis.tcl:1777 +#, fuzzy +msgid "Rapid Override:" +msgstr "Matnings överjusterning (%): #guessing again" + +#: share/axis/tcl/axis.tcl:1819 +msgid "" +"Machinekit/AXIS version $version\n" +"\n" +"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff " +"Epler and Chris Radek.\n" +"\n" +"This is free software, and you are welcome to redistribute it under certain " +"conditions. See the file COPYING, included with Machinekit.\n" +"\n" +"Visit the Machinekit web site: " +msgstr "" + +#: share/axis/tcl/axis.tcl:1847 +#, fuzzy +msgid "About AXIS" +msgstr "_Om AXIS" + +#: share/axis/tcl/axis.tcl:1876 +msgid "AXIS Quick Reference" +msgstr "AXIS Snabbguide" + +#: share/axis/tcl/axis.tcl:2017 +msgid "AXIS with MachineKit $::version on $::machine" +msgstr "" + +#: share/axis/tcl/axis.tcl:2019 +#, fuzzy +msgid "(no file)" +msgstr "AXIS (Ingen fil)" + +# ***: ../tcl/axis.tcl:1514 +#: share/axis/tcl/axis.tcl:2091 share/axis/tcl/axis.tcl:2096 +#, fuzzy +msgid "Position:" +msgstr "Position:" + +# ***: ../tcl/axis.tcl:1512 +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/gscreen/gscreen.py:3516 +#, fuzzy +msgid "Machine" +msgstr "Maskin" + +# ***: ../tcl/axis.tcl:1514 +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/touchy/touchy.glade:155 +#, fuzzy +msgid "Relative" +msgstr "Position:" + +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3329 +msgid "Actual" +msgstr "" + +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3318 +#, fuzzy +msgid "Commanded" +msgstr "MDI-Kommando:" + +#: share/axis/tcl/axis.tcl:2154 share/axis/tcl/axis.tcl:2328 +msgid "Joint:" +msgstr "" + +#: share/axis/tcl/axis.tcl:2463 +msgid "Turn spindle counterclockwise [F10]" +msgstr "Kör spindel moturs [F10]" + +#: share/axis/tcl/axis.tcl:2464 +msgid "Turn spindle clockwise [F9]" +msgstr "Kör spindel medurs [F9]" + +#: share/axis/tcl/axis.tcl:2465 +msgid "Stop spindle [F9/F10]" +msgstr "Stanna spindel [F9/F10]" + +#: share/axis/tcl/axis.tcl:2466 +#, fuzzy +msgid "Turn spindle Faster [F12]" +msgstr "Kör spindel medurs [F9]" + +#: share/axis/tcl/axis.tcl:2467 +#, fuzzy +msgid "Turn spindle Slower [F11]" +msgstr "Kör spindel medurs [F9]" + +#: share/axis/tcl/axis.tcl:2468 +msgid "Turn spindle brake on [Shift-B] or off [B]" +msgstr "" + +#: share/axis/tcl/axis.tcl:2469 +msgid "Turn flood on or off [F8]" +msgstr "" + +#: share/axis/tcl/axis.tcl:2470 +msgid "Turn mist on or off [F7]" +msgstr "" + +#: share/axis/tcl/axis.tcl:2471 +#, fuzzy +msgid "Send active axis home [Home]" +msgstr "Flytta vald axel till hemmaläge" + +#: share/axis/tcl/axis.tcl:2472 +#, fuzzy +msgid "Set G54 offset for active axis [End]" +msgstr "Använd nuvarande läge som G54 förskutning för vald axel" + +#: share/axis/tcl/axis.tcl:2473 +msgid "Activate axis [X]" +msgstr "Aktivera axel [X]" + +#: share/axis/tcl/axis.tcl:2474 +msgid "Activate axis [Y]" +msgstr "Aktivera axel [Y]" + +#: share/axis/tcl/axis.tcl:2475 +msgid "Activate axis [Z]" +msgstr "Aktivera axel [Z]" + +#: share/axis/tcl/axis.tcl:2476 +msgid "Activate axis [A]" +msgstr "Aktivera axel [A]" + +#: share/axis/tcl/axis.tcl:2477 +msgid "Activate axis [4]" +msgstr "Aktivera axel [4]" + +#: share/axis/tcl/axis.tcl:2478 +msgid "Activate axis [5]" +msgstr "Aktivera axel [5]" + +#: share/axis/tcl/axis.tcl:2479 share/axis/tcl/axis.tcl:2480 +#, fuzzy +msgid "Jog selected axis" +msgstr "Flytta vald axel till hemmaläge" + +#: share/axis/tcl/axis.tcl:2482 +msgid "Temporarily allow jogging outside machine limits [L]" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:47 +#, fuzzy +msgid "Spindle CW" +msgstr "Spindel:" + +#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:48 +#, fuzzy +msgid "Spindle CCW" +msgstr "Spindel:" + +#: src/emc/usr_intf/touchy/mdi.py:50 +#, fuzzy +msgid "Set tool number" +msgstr "_Förtsätt" + +#: src/emc/usr_intf/touchy/mdi.py:51 src/emc/usr_intf/gscreen/mdi.py:50 +#, fuzzy +msgid "Input control" +msgstr "Manuell kontroll" + +#: src/emc/usr_intf/touchy/mdi.py:54 src/emc/usr_intf/touchy/mdi.py:55 +#: src/emc/usr_intf/gscreen/mdi.py:53 src/emc/usr_intf/gscreen/mdi.py:54 +msgid "Straight rapid" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:56 src/emc/usr_intf/touchy/mdi.py:57 +#: src/emc/usr_intf/gscreen/mdi.py:55 src/emc/usr_intf/gscreen/mdi.py:56 +msgid "Straight feed" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:58 src/emc/usr_intf/touchy/mdi.py:59 +#: src/emc/usr_intf/gscreen/mdi.py:57 src/emc/usr_intf/gscreen/mdi.py:58 +msgid "Arc CW" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:60 src/emc/usr_intf/touchy/mdi.py:61 +#: src/emc/usr_intf/gscreen/mdi.py:59 src/emc/usr_intf/gscreen/mdi.py:60 +msgid "Arc CCW" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:62 src/emc/usr_intf/touchy/mdi.py:63 +#: src/emc/usr_intf/gscreen/mdi.py:61 src/emc/usr_intf/gscreen/mdi.py:62 +msgid "Dwell" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:64 src/emc/usr_intf/gscreen/mdi.py:63 +#, fuzzy +msgid "Setup" +msgstr "Visa EMC Status" + +#: src/emc/usr_intf/touchy/mdi.py:65 src/emc/usr_intf/gscreen/mdi.py:64 +#, fuzzy +msgid "Spindle synchronized feed" +msgstr "Spindelbroms på" + +#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:65 +msgid "Rigid tap" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:67 src/emc/usr_intf/touchy/mdi.py:68 +#: src/emc/usr_intf/touchy/mdi.py:69 src/emc/usr_intf/touchy/mdi.py:70 +#: src/emc/usr_intf/gscreen/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:67 +#: src/emc/usr_intf/gscreen/mdi.py:68 src/emc/usr_intf/gscreen/mdi.py:69 +msgid "Probe" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:71 src/emc/usr_intf/gscreen/mdi.py:70 +msgid "Radius compensation left" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:72 src/emc/usr_intf/gscreen/mdi.py:71 +msgid "Radius compensation right" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:73 src/emc/usr_intf/gscreen/mdi.py:72 +msgid "Radius compensation left, immediate" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:74 src/emc/usr_intf/gscreen/mdi.py:73 +msgid "Radius compensation right, immediate" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:75 src/emc/usr_intf/gscreen/mdi.py:74 +msgid "Tool length offset" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:76 src/emc/usr_intf/gscreen/mdi.py:75 +msgid "Tool length offset immediate" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:77 src/emc/usr_intf/gscreen/mdi.py:76 +msgid "Motion in unoffset coordinates" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:78 src/emc/usr_intf/gscreen/mdi.py:77 +msgid "Continuous mode" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:80 src/emc/usr_intf/gscreen/mdi.py:79 +msgid "Drill" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:81 src/emc/usr_intf/gscreen/mdi.py:80 +msgid "Drill with dwell" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:82 src/emc/usr_intf/gscreen/mdi.py:81 +msgid "Peck drill" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:83 src/emc/usr_intf/gscreen/mdi.py:82 +msgid "Chip-break drill" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:84 src/emc/usr_intf/gscreen/mdi.py:83 +msgid "Bore" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:85 src/emc/usr_intf/gscreen/mdi.py:84 +msgid "Bore with dwell" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:86 src/emc/usr_intf/gscreen/mdi.py:85 +msgid "Offset all coordinate systems" +msgstr "" + +#: src/emc/usr_intf/touchy/mdi.py:87 src/emc/usr_intf/gscreen/mdi.py:86 +msgid "CSS Mode" +msgstr "" + +#: src/emc/usr_intf/touchy/emc_interface.py:410 +msgid "CCW" +msgstr "" + +#: src/emc/usr_intf/touchy/emc_interface.py:410 +#, fuzzy +msgid "Stopped" +msgstr "Av_bryt" + +#: src/emc/usr_intf/touchy/emc_interface.py:410 +msgid "CW" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:7 +msgid "LinuxCNC/Touchy" +msgstr "" + +#. # Touchy is Copyright (c) 2009 Chris Radek # # Touchy 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 2 of the License, or # (at your option) any later version. # # Touchy 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. +#: src/emc/usr_intf/touchy/touchy.glade:11 +msgid "window1" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:31 +msgid "xa" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:44 +msgid "xd" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:57 +msgid "yr" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:68 +msgid "ya" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:81 +msgid "yd" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:94 +msgid "zr" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:105 +msgid "za" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:118 +msgid "zd" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:131 +#: src/emc/usr_intf/gscreen/gscreen.glade:85 +#: src/emc/usr_intf/gscreen/gscreen.glade:213 +#: src/emc/usr_intf/gscreen/gscreen.glade:343 +#: src/emc/usr_intf/gscreen/gscreen.glade:471 +#: src/emc/usr_intf/gscreen/gscreen.glade:599 +#: src/emc/usr_intf/gscreen/gscreen.glade:727 +#: src/emc/usr_intf/gscreen/gscreen.glade:855 +#: src/emc/usr_intf/gscreen/gscreen.glade:983 +#: src/emc/usr_intf/gscreen/gscreen.glade:1111 +msgid "DTG" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:143 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Absolute" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:165 +msgid "xr" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:176 +msgid "ar" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:188 +msgid "br" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:200 +msgid "cr" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:212 +msgid "ur" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:224 +msgid "vr" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:236 +msgid "wr" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:248 +msgid "aa" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:262 +msgid "ba" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:276 +msgid "ca" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:290 +msgid "ua" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:304 +msgid "va" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:318 +msgid "wa" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:332 +msgid "ad" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:346 +msgid "bd" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:360 +msgid "cd" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:374 +msgid "ud" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:388 +msgid "vd" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:402 +msgid "wd" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:448 +#, fuzzy +msgid "Estop Reset" +msgstr "_Förtsätt" + +#: src/emc/usr_intf/touchy/touchy.glade:459 +#: src/emc/usr_intf/stepconf/pport1.glade:21 +#: src/emc/usr_intf/stepconf/pport2.glade:1409 +#: src/emc/usr_intf/gscreen/gscreen.glade:2442 +#, fuzzy +msgid "Estop" +msgstr "Stanna #Guessing again" + +# ***: ../tcl/axis.tcl:1512 +#: src/emc/usr_intf/touchy/touchy.glade:475 +#, fuzzy +msgid "Machine On" +msgstr "Maskin" + +# ***: ../tcl/axis.tcl:1512 +#: src/emc/usr_intf/touchy/touchy.glade:490 +#, fuzzy +msgid "Machine Off" +msgstr "Maskin" + +#: src/emc/usr_intf/touchy/touchy.glade:531 +msgid "Power" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:562 +#, fuzzy +msgid "Unhome All" +msgstr "Hemmaläge" + +#: src/emc/usr_intf/touchy/touchy.glade:588 +#, fuzzy +msgid "Home Selected" +msgstr "Flytta vald axel till hemmaläge" + +#: src/emc/usr_intf/touchy/touchy.glade:603 +msgid "Unhome Selected" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:625 +msgid "Homing" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:644 +msgid "Startup" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:727 +msgid "G" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:929 +msgid "." +msgstr "" + +# ***: ../tcl/axis.tcl:1235 +#: src/emc/usr_intf/touchy/touchy.glade:963 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "0" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:980 +msgid "3" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:997 +msgid "2" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:1014 +msgid "1" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:1031 +msgid "6" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:1048 +msgid "5" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:1065 +msgid "4" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:1082 +msgid "9" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:1097 +msgid "8" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:1112 +msgid "7" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:1297 +msgid "Flood On" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:1308 +msgid "Flood Off" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:1324 +msgid "Mist On" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:1339 +#, fuzzy +msgid "Mist Off" +msgstr "Försjutning" + +#: src/emc/usr_intf/touchy/touchy.glade:1362 +#, fuzzy +msgid "Coolant" +msgstr "Kylvätska:" + +#: src/emc/usr_intf/touchy/touchy.glade:1448 +#, fuzzy +msgid "Spindle Off" +msgstr "Spindelbroms av" + +#: src/emc/usr_intf/touchy/touchy.glade:1501 +#: src/emc/usr_intf/touchy/touchy.glade:2578 +#, fuzzy +msgid "Spindle speed:" +msgstr "Matnings överjusterning (%): #guessing again" + +#: src/emc/usr_intf/touchy/touchy.glade:1513 +#: src/emc/usr_intf/touchy/touchy.glade:2707 +msgid "label26" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:1539 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4226 +#, fuzzy +msgid "Spindle" +msgstr "Spindel:" + +#: src/emc/usr_intf/touchy/touchy.glade:1597 +msgid "file.ngc" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:1812 +#: src/emc/usr_intf/touchy/touchy.glade:2017 +#: src/emc/usr_intf/touchy/touchy.glade:2037 +#: src/emc/usr_intf/touchy/touchy.glade:2057 +#: src/emc/usr_intf/touchy/touchy.glade:2077 +#: src/emc/usr_intf/touchy/touchy.glade:2097 +#: src/emc/usr_intf/touchy/touchy.glade:2117 +#: src/emc/usr_intf/touchy/touchy.glade:2137 +#: src/emc/usr_intf/touchy/touchy.glade:2157 +#: src/emc/usr_intf/touchy/touchy.glade:2177 +msgid "M2" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2244 +#: src/emc/usr_intf/touchy/touchy.glade:2374 +msgid "Page" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2308 +msgid "Start Point" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2452 +msgid "Loaded File" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2488 +msgid "Loaded file:" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2499 +msgid "Interpreted line:" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2513 +msgid "Distance:" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2526 +#: src/emc/usr_intf/stepconf/main_page.glade:23 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Velocity:" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2539 +msgid "Delay:" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2552 +msgid "On limit switch:" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2565 +#, fuzzy +msgid "Spindle direction:" +msgstr "Spindelbroms på" + +#: src/emc/usr_intf/touchy/touchy.glade:2591 +#, fuzzy +msgid "Loaded tool:" +msgstr "Inget verktyg" + +#: src/emc/usr_intf/touchy/touchy.glade:2604 +#: src/emc/usr_intf/touchy/touchy.glade:2955 +msgid "label19" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2617 +msgid "label20" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2632 +#: src/emc/usr_intf/touchy/touchy.glade:2779 +#: src/emc/usr_intf/touchy/touchy.glade:2808 +#: src/emc/usr_intf/touchy/touchy.glade:2912 +#: src/emc/usr_intf/touchy/touchy.glade:2927 +msgid "label21" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2647 +msgid "label22" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2662 +msgid "label23" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2677 +msgid "label24" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2692 +msgid "label25" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2722 +msgid "label27" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2737 +msgid "Prepped tool:" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2750 +msgid "label28" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2765 +msgid "Running line:" +msgstr "" + +# ***: ../tcl/axis.tcl:1514 +#: src/emc/usr_intf/touchy/touchy.glade:2794 +#, fuzzy +msgid "XY Rotation:" +msgstr "Position:" + +#: src/emc/usr_intf/touchy/touchy.glade:2823 +msgid "Tool length:" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2836 +msgid "label52" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:2851 +msgid "" +"G1 G2 G3\n" +"M1 M2 M3\n" +"F1 S1" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:61 src/emc/usr_intf/touchy/mdi.py:62 -msgid "Dwell" -msgstr "" +#: src/emc/usr_intf/touchy/touchy.glade:2870 +#, fuzzy +msgid "Active codes:" +msgstr "Aktiva G-Koder" -#: src/emc/usr_intf/touchy/mdi.py:63 +#: src/emc/usr_intf/touchy/touchy.glade:2883 #, fuzzy -msgid "Setup" -msgstr "Visa EMC Status" +msgid "G5x Offset:" +msgstr "Försjutning" -#: src/emc/usr_intf/touchy/mdi.py:64 +#: src/emc/usr_intf/touchy/touchy.glade:2898 #, fuzzy -msgid "Spindle synchronized feed" -msgstr "Spindelbroms på" +msgid "G92 Offset:" +msgstr "Försjutning" -#: src/emc/usr_intf/touchy/mdi.py:65 -msgid "Rigid tap" +#: src/emc/usr_intf/touchy/touchy.glade:2942 +msgid "Loaded file lines:" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/touchy/mdi.py:67 -#: src/emc/usr_intf/touchy/mdi.py:68 src/emc/usr_intf/touchy/mdi.py:69 -msgid "Probe" +#: src/emc/usr_intf/touchy/touchy.glade:2971 +msgid "Pockets:" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:70 -msgid "Radius compensation left" +#: src/emc/usr_intf/touchy/touchy.glade:2984 +msgid "" +"1\n" +"2\n" +"3" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:71 -msgid "Radius compensation right" +#: src/emc/usr_intf/touchy/touchy.glade:3009 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6414 +msgid "Status" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:72 -msgid "Radius compensation left, immediate" +#: src/emc/usr_intf/touchy/touchy.glade:3038 +msgid "Control Font:" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:73 -msgid "Radius compensation right, immediate" +#: src/emc/usr_intf/touchy/touchy.glade:3050 +msgid "DRO Font:" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:74 -msgid "Tool length offset" +#: src/emc/usr_intf/touchy/touchy.glade:3064 +msgid "Error Font:" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:75 -msgid "Tool length offset immediate" +#: src/emc/usr_intf/touchy/touchy.glade:3081 +msgid "ControlFont" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:76 -msgid "Motion in unoffset coordinates" +#: src/emc/usr_intf/touchy/touchy.glade:3100 +msgid "DRO Font" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:77 -msgid "Continuous mode" +#: src/emc/usr_intf/touchy/touchy.glade:3121 +msgid "Error Font" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:79 -msgid "Drill" +#: src/emc/usr_intf/touchy/touchy.glade:3139 +msgid "Listing Font:" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:80 -msgid "Drill with dwell" +#: src/emc/usr_intf/touchy/touchy.glade:3156 +msgid "Listing Font" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:81 -msgid "Peck drill" +#: src/emc/usr_intf/touchy/touchy.glade:3176 +msgid "Hide pointer" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:82 -msgid "Chip-break drill" -msgstr "" +#: src/emc/usr_intf/touchy/touchy.glade:3187 +#, fuzzy +msgid "Show pointer" +msgstr "Visa _program" -#: src/emc/usr_intf/touchy/mdi.py:83 -msgid "Bore" +#: src/emc/usr_intf/touchy/touchy.glade:3214 +msgid "Theme:" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:84 -msgid "Bore with dwell" +#: src/emc/usr_intf/touchy/touchy.glade:3228 +msgid "default\n" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:85 -msgid "Offset all coordinate systems" +#: src/emc/usr_intf/touchy/touchy.glade:3252 +msgid "Display Options" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:86 -msgid "CSS Mode" +#: src/emc/usr_intf/touchy/touchy.glade:3286 +#: src/emc/usr_intf/stepconf/base.glade:867 +#: src/emc/usr_intf/gscreen/gscreen.glade:3664 +msgid "Inch" msgstr "" -#: src/emc/usr_intf/touchy/emc_interface.py:410 -msgid "CCW" +#: src/emc/usr_intf/touchy/touchy.glade:3349 +msgid "Position Readout" msgstr "" -#: src/emc/usr_intf/touchy/emc_interface.py:410 -#, fuzzy -msgid "Stopped" -msgstr "Av_bryt" - -#: src/emc/usr_intf/touchy/emc_interface.py:410 -msgid "CW" +#: src/emc/usr_intf/touchy/touchy.glade:3379 +msgid "Workpiece" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:7 -msgid "LinuxCNC/Touchy" +#: src/emc/usr_intf/touchy/touchy.glade:3390 +msgid "Fixture" msgstr "" -#. # Touchy is Copyright (c) 2009 Chris Radek # # Touchy 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 2 of the License, or # (at your option) any later version. # # Touchy 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. -#: src/emc/usr_intf/touchy/touchy.glade:11 -msgid "window1" +#: src/emc/usr_intf/touchy/touchy.glade:3410 +msgid "Tool Setting" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:31 -msgid "xa" +#: src/emc/usr_intf/touchy/touchy.glade:3441 +msgid "Delete / lines" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:44 -msgid "xd" +#: src/emc/usr_intf/touchy/touchy.glade:3456 +msgid "Keep / lines" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:57 -msgid "yr" -msgstr "" +#: src/emc/usr_intf/touchy/touchy.glade:3473 +#, fuzzy +msgid "Pause on M1" +msgstr "_Pausa" -#: src/emc/usr_intf/touchy/touchy.glade:68 -msgid "ya" +#: src/emc/usr_intf/touchy/touchy.glade:3484 +msgid "Ignore M1" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:81 -msgid "yd" +#: src/emc/usr_intf/touchy/touchy.glade:3504 +msgid "Program Options" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:94 -msgid "zr" +#: src/emc/usr_intf/touchy/touchy.glade:3531 +#: src/emc/usr_intf/gscreen/gscreen.glade:2200 +msgid "Preferences" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:105 -msgid "za" +#: src/emc/usr_intf/touchy/touchy.glade:3567 +#: src/emc/usr_intf/gscreen/gscreen.glade:1425 +msgid "FO: 100%" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:118 -msgid "zd" +#: src/emc/usr_intf/touchy/touchy.glade:3582 +#: src/emc/usr_intf/gscreen/gscreen.glade:1437 +msgid "SO: 100%" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:131 -msgid "DTG" +#: src/emc/usr_intf/touchy/touchy.glade:3596 +msgid "MV: 100" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:143 -#: src/emc/usr_intf/pncconf/pncconf.glade:59755 -msgid "Absolute" +#: src/emc/usr_intf/touchy/touchy.glade:3610 +msgid "Jogging" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:165 -msgid "xr" +#: src/emc/usr_intf/touchy/touchy.glade:3624 +msgid "Start Point" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:176 -msgid "ar" +#: src/emc/usr_intf/touchy/touchy.glade:3651 +msgid ".01" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:188 -msgid "br" +#: src/emc/usr_intf/touchy/touchy.glade:3664 +msgid ".001" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:200 -msgid "cr" +#: src/emc/usr_intf/touchy/touchy.glade:3680 +msgid ".0001" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:212 -msgid "ur" +#: src/emc/usr_intf/touchy/touchy.glade:3708 +msgid " X " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:224 -msgid "vr" +#: src/emc/usr_intf/touchy/touchy.glade:3720 +msgid " Y " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:236 -msgid "wr" +#: src/emc/usr_intf/touchy/touchy.glade:3735 +msgid " Z " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:248 -msgid "aa" +#: src/emc/usr_intf/touchy/touchy.glade:3750 +msgid " A " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:262 -msgid "ba" +#: src/emc/usr_intf/touchy/touchy.glade:3766 +msgid " B " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:276 -msgid "ca" +#: src/emc/usr_intf/touchy/touchy.glade:3784 +msgid " C " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:290 -msgid "ua" +#: src/emc/usr_intf/touchy/touchy.glade:3802 +msgid " U " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:304 -msgid "va" +#: src/emc/usr_intf/touchy/touchy.glade:3818 +msgid " V " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:318 -msgid "wa" +#: src/emc/usr_intf/touchy/touchy.glade:3836 +msgid " W " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:332 -msgid "ad" +#: src/emc/usr_intf/touchy/touchy.glade:3869 +msgid "Handwheel" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:346 -msgid "bd" +#: src/emc/usr_intf/stepconf/stepconf.py:57 +msgid "" +"Stepconf encountered an error. The following information may be useful in " +"troubleshooting:\n" +"\n" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:360 -msgid "cd" +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#, fuzzy +msgid "Stepconf" +msgstr "Stanna #Guessing again" + +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#: src/emc/usr_intf/stepconf/stepconf.py:217 +#: src/emc/usr_intf/stepconf/main_page.glade:557 +#: src/emc/usr_intf/gscreen/gscreen.py:3414 +#: src/emc/usr_intf/gscreen/gscreen.py:3415 +#: src/emc/usr_intf/gscreen/gscreen.glade:4043 +msgid "Start" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:374 -msgid "ud" +#: src/emc/usr_intf/stepconf/stepconf.py:129 +msgid "Base Information" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:388 -msgid "vd" +#: src/emc/usr_intf/stepconf/stepconf.py:129 +msgid "Parallel Port 1" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:402 -msgid "wd" +#: src/emc/usr_intf/stepconf/stepconf.py:129 +msgid "Parallel Port 2" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:448 +# ***: ../tcl/axis.tcl:1514 +#: src/emc/usr_intf/stepconf/stepconf.py:130 #, fuzzy -msgid "Estop Reset" -msgstr "_Förtsätt" +msgid "Options" +msgstr "Position:" -#: src/emc/usr_intf/touchy/touchy.glade:459 +#: src/emc/usr_intf/stepconf/stepconf.py:130 #, fuzzy -msgid "Estop" -msgstr "Stanna #Guessing again" +msgid "Axis X" +msgstr "Axel:" -# ***: ../tcl/axis.tcl:1512 -#: src/emc/usr_intf/touchy/touchy.glade:475 +#: src/emc/usr_intf/stepconf/stepconf.py:131 #, fuzzy -msgid "Machine On" -msgstr "Maskin" +msgid "Axis Y" +msgstr "Axel:" -# ***: ../tcl/axis.tcl:1512 -#: src/emc/usr_intf/touchy/touchy.glade:490 +#: src/emc/usr_intf/stepconf/stepconf.py:131 #, fuzzy -msgid "Machine Off" -msgstr "Maskin" - -#: src/emc/usr_intf/touchy/touchy.glade:531 -msgid "Power" -msgstr "" +msgid "Axis Z" +msgstr "Axel:" -#: src/emc/usr_intf/touchy/touchy.glade:562 +#: src/emc/usr_intf/stepconf/stepconf.py:131 #, fuzzy -msgid "Unhome All" -msgstr "Hemmaläge" +msgid "Axis A" +msgstr "Axel:" -#: src/emc/usr_intf/touchy/touchy.glade:588 +#: src/emc/usr_intf/stepconf/stepconf.py:132 +#: src/emc/usr_intf/pncconf/pncconf.py:378 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +#: src/emc/usr_intf/pncconf/pncconf.py:524 #, fuzzy -msgid "Home Selected" -msgstr "Flytta vald axel till hemmaläge" +msgid "Spindle" +msgstr "Spindel:" -#: src/emc/usr_intf/touchy/touchy.glade:603 -msgid "Unhome Selected" +#: src/emc/usr_intf/stepconf/stepconf.py:132 +msgid "Almost Done" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:625 -msgid "Homing" +#: src/emc/usr_intf/stepconf/stepconf.py:136 +#: src/emc/usr_intf/pncconf/pncconf.py:135 +msgid "Gecko 201" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:644 -msgid "Startup" +#: src/emc/usr_intf/stepconf/stepconf.py:137 +#: src/emc/usr_intf/pncconf/pncconf.py:136 +msgid "Gecko 202" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:727 -msgid "G" +#: src/emc/usr_intf/stepconf/stepconf.py:138 +#: src/emc/usr_intf/pncconf/pncconf.py:137 +msgid "Gecko 203v" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:139 +#: src/emc/usr_intf/pncconf/pncconf.py:138 +msgid "Gecko 210" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:140 +#: src/emc/usr_intf/pncconf/pncconf.py:139 +msgid "Gecko 212" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:141 +#: src/emc/usr_intf/pncconf/pncconf.py:140 +msgid "Gecko 320" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:929 -msgid "." +#: src/emc/usr_intf/stepconf/stepconf.py:142 +#: src/emc/usr_intf/pncconf/pncconf.py:141 +msgid "Gecko 540" msgstr "" -# ***: ../tcl/axis.tcl:1235 -#: src/emc/usr_intf/touchy/touchy.glade:963 -#: src/emc/usr_intf/pncconf/pncconf.glade:60883 -#: src/emc/usr_intf/pncconf/pncconf.glade:60895 -#: src/emc/usr_intf/pncconf/pncconf.glade:61017 -#: src/emc/usr_intf/pncconf/pncconf.glade:61029 -#: src/emc/usr_intf/pncconf/pncconf.glade:61041 -#: src/emc/usr_intf/pncconf/pncconf.glade:61053 -#: src/emc/usr_intf/pncconf/pncconf.glade:61065 -#: src/emc/usr_intf/pncconf/pncconf.glade:61077 -#: src/emc/usr_intf/pncconf/pncconf.glade:62040 -#: src/emc/usr_intf/pncconf/pncconf.glade:62052 -#: src/emc/usr_intf/pncconf/pncconf.glade:62064 -#: src/emc/usr_intf/pncconf/pncconf.glade:62076 -#: src/emc/usr_intf/pncconf/pncconf.glade:62088 -#: src/emc/usr_intf/pncconf/pncconf.glade:62100 -#: src/emc/usr_intf/pncconf/pncconf.glade:62222 -#: src/emc/usr_intf/pncconf/pncconf.glade:62234 -#: src/emc/usr_intf/pncconf/pncconf.glade:63069 -#: src/emc/usr_intf/pncconf/pncconf.glade:63081 -#: src/emc/usr_intf/pncconf/pncconf.glade:63203 -#: src/emc/usr_intf/pncconf/pncconf.glade:63215 -#: src/emc/usr_intf/pncconf/pncconf.glade:63227 -#: src/emc/usr_intf/pncconf/pncconf.glade:63239 -#: src/emc/usr_intf/pncconf/pncconf.glade:63251 -#: src/emc/usr_intf/pncconf/pncconf.glade:63263 -#: src/emc/usr_intf/pncconf/pncconf.glade:64226 -#: src/emc/usr_intf/pncconf/pncconf.glade:64238 -#: src/emc/usr_intf/pncconf/pncconf.glade:64250 -#: src/emc/usr_intf/pncconf/pncconf.glade:64262 -#: src/emc/usr_intf/pncconf/pncconf.glade:64274 -#: src/emc/usr_intf/pncconf/pncconf.glade:64286 -#: src/emc/usr_intf/pncconf/pncconf.glade:64408 -#: src/emc/usr_intf/pncconf/pncconf.glade:64420 -#: src/emc/usr_intf/pncconf/pncconf.glade:65231 -#: src/emc/usr_intf/pncconf/pncconf.glade:65243 -#: src/emc/usr_intf/pncconf/pncconf.glade:65359 -#: src/emc/usr_intf/pncconf/pncconf.glade:65371 -#: src/emc/usr_intf/pncconf/pncconf.glade:65383 -#: src/emc/usr_intf/pncconf/pncconf.glade:65395 -#: src/emc/usr_intf/pncconf/pncconf.glade:65407 -#: src/emc/usr_intf/pncconf/pncconf.glade:65419 -#: src/emc/usr_intf/pncconf/pncconf.glade:67091 -msgid "0" +#: src/emc/usr_intf/stepconf/stepconf.py:143 +#: src/emc/usr_intf/pncconf/pncconf.py:142 +msgid "L297" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:980 -msgid "3" +#: src/emc/usr_intf/stepconf/stepconf.py:144 +#: src/emc/usr_intf/pncconf/pncconf.py:143 +msgid "PMDX-150" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:997 -msgid "2" +#: src/emc/usr_intf/stepconf/stepconf.py:145 +#: src/emc/usr_intf/stepconf/pport1.glade:32 +#: src/emc/usr_intf/pncconf/pncconf.py:144 +msgid "Sherline" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1014 -msgid "1" +#: src/emc/usr_intf/stepconf/stepconf.py:146 +#: src/emc/usr_intf/pncconf/pncconf.py:145 +msgid "Xylotex 8S-3" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1031 -msgid "6" +#: src/emc/usr_intf/stepconf/stepconf.py:147 +#: src/emc/usr_intf/pncconf/pncconf.py:146 +msgid "Parker-Compumotor oem750" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1048 -msgid "5" +#: src/emc/usr_intf/stepconf/stepconf.py:148 +#: src/emc/usr_intf/pncconf/pncconf.py:147 +msgid "JVL-SMD41 or 42" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1065 -msgid "4" +#: src/emc/usr_intf/stepconf/stepconf.py:149 +#: src/emc/usr_intf/pncconf/pncconf.py:148 +msgid "Hobbycnc Pro Chopper" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1082 -msgid "9" +#: src/emc/usr_intf/stepconf/stepconf.py:150 +msgid "Kelling 4030" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1097 -msgid "8" +#: src/emc/usr_intf/stepconf/stepconf.py:151 +msgid "Leadshine Series" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1112 -msgid "7" +#: src/emc/usr_intf/stepconf/stepconf.py:190 +#, fuzzy +msgid "X Step" +msgstr "Stanna #Guessing again" + +#: src/emc/usr_intf/stepconf/stepconf.py:190 +msgid "X Direction" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1297 -msgid "Flood On" +#: src/emc/usr_intf/stepconf/stepconf.py:190 +#, fuzzy +msgid "Y Step" +msgstr "Stanna #Guessing again" + +#: src/emc/usr_intf/stepconf/stepconf.py:190 +msgid "Y Direction" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1308 -msgid "Flood Off" +#: src/emc/usr_intf/stepconf/stepconf.py:191 +#, fuzzy +msgid "Z Step" +msgstr "Stanna #Guessing again" + +#: src/emc/usr_intf/stepconf/stepconf.py:191 +msgid "Z Direction" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1324 -msgid "Mist On" +#: src/emc/usr_intf/stepconf/stepconf.py:191 +#, fuzzy +msgid "A Step" +msgstr "Stanna #Guessing again" + +#: src/emc/usr_intf/stepconf/stepconf.py:191 +msgid "A Direction" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1339 +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 #, fuzzy -msgid "Mist Off" -msgstr "Försjutning" +msgid "Spindle ON" +msgstr "Spindel:" -#: src/emc/usr_intf/touchy/touchy.glade:1362 +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:488 #, fuzzy -msgid "Coolant" -msgstr "Kylvätska:" +msgid "Spindle PWM" +msgstr "Spindel:" -#: src/emc/usr_intf/touchy/touchy.glade:1448 +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 #, fuzzy -msgid "Spindle Off" -msgstr "Spindelbroms av" +msgid "Spindle Brake" +msgstr "Spindelbroms på" -#: src/emc/usr_intf/touchy/touchy.glade:1501 -#: src/emc/usr_intf/touchy/touchy.glade:2578 +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 #, fuzzy -msgid "Spindle speed:" -msgstr "Matnings överjusterning (%): #guessing again" +msgid "Coolant Mist" +msgstr "Kylvätska:" -#: src/emc/usr_intf/touchy/touchy.glade:1513 -#: src/emc/usr_intf/touchy/touchy.glade:2707 -msgid "label26" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 +#, fuzzy +msgid "Coolant Flood" +msgstr "Kylvätska:" -#: src/emc/usr_intf/touchy/touchy.glade:1539 +# ***: ../tcl/axis.tcl:1470 +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:370 #, fuzzy -msgid "Spindle" -msgstr "Spindel:" +msgid "ESTOP Out" +msgstr "#Nödstopp?" -#: src/emc/usr_intf/touchy/touchy.glade:1597 -msgid "file.ngc" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +msgid "Amplifier Enable" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1812 -#: src/emc/usr_intf/touchy/touchy.glade:2017 -#: src/emc/usr_intf/touchy/touchy.glade:2037 -#: src/emc/usr_intf/touchy/touchy.glade:2057 -#: src/emc/usr_intf/touchy/touchy.glade:2077 -#: src/emc/usr_intf/touchy/touchy.glade:2097 -#: src/emc/usr_intf/touchy/touchy.glade:2117 -#: src/emc/usr_intf/touchy/touchy.glade:2137 -#: src/emc/usr_intf/touchy/touchy.glade:2157 -#: src/emc/usr_intf/touchy/touchy.glade:2177 -msgid "M2" +#: src/emc/usr_intf/stepconf/stepconf.py:194 +#: src/emc/usr_intf/pncconf/pncconf.py:371 +msgid "Charge Pump" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2244 -#: src/emc/usr_intf/touchy/touchy.glade:2374 -msgid "Page" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 0" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2308 -msgid "Start Point" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 1" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2452 -msgid "Loaded File" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 2" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2488 -msgid "Loaded file:" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 3" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2499 -msgid "Interpreted line:" +#: src/emc/usr_intf/stepconf/stepconf.py:196 +#: src/emc/usr_intf/stepconf/stepconf.py:215 +#: src/emc/usr_intf/stepconf/pport1.glade:18 +#: src/emc/usr_intf/stepconf/pport2.glade:1406 +#: src/emc/usr_intf/stepconf/pport2.glade:1420 +msgid "Unused" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2513 -msgid "Distance:" -msgstr "" +# ***: ../tcl/axis.tcl:1470 +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 +#, fuzzy +msgid "ESTOP In" +msgstr "#Nödstopp?" -#: src/emc/usr_intf/touchy/touchy.glade:2526 -#: src/emc/usr_intf/stepconf/stepconf.glade:4148 -#: src/emc/usr_intf/pncconf/pncconf.glade:60476 -#: src/emc/usr_intf/pncconf/pncconf.glade:61571 -#: src/emc/usr_intf/pncconf/pncconf.glade:62664 -#: src/emc/usr_intf/pncconf/pncconf.glade:63757 -#: src/emc/usr_intf/pncconf/pncconf.glade:64856 -msgid "Velocity:" +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 +msgid "Probe In" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2539 -msgid "Delay:" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:199 +#, fuzzy +msgid "Spindle Index" +msgstr "Spindel:" -#: src/emc/usr_intf/touchy/touchy.glade:2552 -msgid "On limit switch:" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:199 +#, fuzzy +msgid "Spindle Phase A" +msgstr "Spindelbroms på" -#: src/emc/usr_intf/touchy/touchy.glade:2565 +#: src/emc/usr_intf/stepconf/stepconf.py:199 #, fuzzy -msgid "Spindle direction:" +msgid "Spindle Phase B" msgstr "Spindelbroms på" -#: src/emc/usr_intf/touchy/touchy.glade:2591 +#: src/emc/usr_intf/stepconf/stepconf.py:200 #, fuzzy -msgid "Loaded tool:" -msgstr "Inget verktyg" +msgid "Home X" +msgstr "Hemmaläge" -#: src/emc/usr_intf/touchy/touchy.glade:2604 -#: src/emc/usr_intf/touchy/touchy.glade:2955 -msgid "label19" +#: src/emc/usr_intf/stepconf/stepconf.py:200 +#, fuzzy +msgid "Home Y" +msgstr "Hemmaläge" + +#: src/emc/usr_intf/stepconf/stepconf.py:200 +#, fuzzy +msgid "Home Z" +msgstr "Hemmaläge" + +#: src/emc/usr_intf/stepconf/stepconf.py:200 +#, fuzzy +msgid "Home A" +msgstr "Hemmaläge" + +#: src/emc/usr_intf/stepconf/stepconf.py:201 +msgid "Minimum Limit + Home X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2617 -msgid "label20" +#: src/emc/usr_intf/stepconf/stepconf.py:201 +msgid "Minimum Limit + Home Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2632 -#: src/emc/usr_intf/touchy/touchy.glade:2779 -#: src/emc/usr_intf/touchy/touchy.glade:2808 -#: src/emc/usr_intf/touchy/touchy.glade:2912 -#: src/emc/usr_intf/touchy/touchy.glade:2927 -msgid "label21" +#: src/emc/usr_intf/stepconf/stepconf.py:202 +msgid "Minimum Limit + Home Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2647 -msgid "label22" +#: src/emc/usr_intf/stepconf/stepconf.py:202 +msgid "Minimum Limit + Home A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2662 -msgid "label23" +#: src/emc/usr_intf/stepconf/stepconf.py:203 +msgid "Maximum Limit + Home X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2677 -msgid "label24" +#: src/emc/usr_intf/stepconf/stepconf.py:203 +msgid "Maximum Limit + Home Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2692 -msgid "label25" +#: src/emc/usr_intf/stepconf/stepconf.py:204 +msgid "Maximum Limit + Home Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2722 -msgid "label27" +#: src/emc/usr_intf/stepconf/stepconf.py:204 +msgid "Maximum Limit + Home A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2737 -msgid "Prepped tool:" +#: src/emc/usr_intf/stepconf/stepconf.py:205 +msgid "Both Limit + Home X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2750 -msgid "label28" +#: src/emc/usr_intf/stepconf/stepconf.py:205 +msgid "Both Limit + Home Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2765 -msgid "Running line:" +#: src/emc/usr_intf/stepconf/stepconf.py:206 +msgid "Both Limit + Home Z" msgstr "" -# ***: ../tcl/axis.tcl:1514 -#: src/emc/usr_intf/touchy/touchy.glade:2794 -#, fuzzy -msgid "XY Rotation:" -msgstr "Position:" +#: src/emc/usr_intf/stepconf/stepconf.py:206 +msgid "Both Limit + Home A" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2823 -msgid "Tool length:" +#: src/emc/usr_intf/stepconf/stepconf.py:207 +msgid "Minimum Limit X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2836 -msgid "label52" +#: src/emc/usr_intf/stepconf/stepconf.py:207 +msgid "Minimum Limit Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2851 -msgid "" -"G1 G2 G3\n" -"M1 M2 M3\n" -"F1 S1" +#: src/emc/usr_intf/stepconf/stepconf.py:208 +msgid "Minimum Limit Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2870 -#, fuzzy -msgid "Active codes:" -msgstr "Aktiva G-Koder" +#: src/emc/usr_intf/stepconf/stepconf.py:208 +msgid "Minimum Limit A" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2883 -#, fuzzy -msgid "G5x Offset:" -msgstr "Försjutning" +#: src/emc/usr_intf/stepconf/stepconf.py:209 +msgid "Maximum Limit X" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2898 -#, fuzzy -msgid "G92 Offset:" -msgstr "Försjutning" +#: src/emc/usr_intf/stepconf/stepconf.py:209 +msgid "Maximum Limit Y" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2942 -msgid "Loaded file lines:" +#: src/emc/usr_intf/stepconf/stepconf.py:210 +msgid "Maximum Limit Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2971 -msgid "Pockets:" +#: src/emc/usr_intf/stepconf/stepconf.py:210 +msgid "Maximum Limit A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2984 -msgid "" -"1\n" -"2\n" -"3" +#: src/emc/usr_intf/stepconf/stepconf.py:211 +msgid "Both Limit X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3009 -msgid "Status" +#: src/emc/usr_intf/stepconf/stepconf.py:211 +msgid "Both Limit Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3038 -msgid "Control Font:" +#: src/emc/usr_intf/stepconf/stepconf.py:212 +msgid "Both Limit Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3050 -msgid "DRO Font:" +#: src/emc/usr_intf/stepconf/stepconf.py:212 +msgid "Both Limit A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3064 -msgid "Error Font:" +#: src/emc/usr_intf/stepconf/stepconf.py:213 +msgid "All limits" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3081 -msgid "ControlFont" +#: src/emc/usr_intf/stepconf/stepconf.py:213 +msgid "All home" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3100 -msgid "DRO Font" +#: src/emc/usr_intf/stepconf/stepconf.py:213 +msgid "All limits + homes" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3121 -msgid "Error Font" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 0" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3139 -msgid "Listing Font:" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 1" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3156 -msgid "Listing Font" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 2" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3176 -msgid "Hide pointer" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 3" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3187 +#: src/emc/usr_intf/stepconf/stepconf.py:218 #, fuzzy -msgid "Show pointer" -msgstr "Visa _program" +msgid "Forward" +msgstr "Spindelbroms på" -#: src/emc/usr_intf/touchy/touchy.glade:3214 -msgid "Theme:" +#: src/emc/usr_intf/stepconf/stepconf.py:219 +msgid "Done" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3228 -msgid "default\n" +#: src/emc/usr_intf/stepconf/stepconf.py:220 +msgid "" +"OK to replace existing custom ladder program?\n" +"Existing Custom.clp will be renamed custom_backup.clp.\n" +"Any existing file named -custom_backup.clp- will be lost. " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3252 -msgid "Display Options" +#: src/emc/usr_intf/stepconf/stepconf.py:221 +#: src/emc/usr_intf/pncconf/pncconf.py:8163 +msgid "" +"You edited a ladder program and have selected a different program to copy to " +"your configuration file.\n" +"The edited program will be lost.\n" +"\n" +"Are you sure? " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3286 -msgid "Inch" +#: src/emc/usr_intf/stepconf/stepconf.py:222 +msgid "" +"You need to designate an E-stop input pin in the Parallel Port Setup page " +"for this program." msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3349 -msgid "Position Readout" +#: src/emc/usr_intf/stepconf/stepconf.py:223 +msgid "" +"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" +"Existing custompanel.xml and custom_postgui.hal will be renamed " +"custompanel_backup.xml and postgui_backup.hal.\n" +"Any existing file named custompanel_backup.xml and custom_postgui.hal will " +"be lost. " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3379 -msgid "Workpiece" +#: src/emc/usr_intf/stepconf/stepconf.py:224 +msgid "Quit Stepconf and discard changes?" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3390 -msgid "Fixture" +#: src/emc/usr_intf/stepconf/stepconf.py:225 +msgid "" +"The configuration has been built and saved.\n" +"Do you want to quit?" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3410 -msgid "Tool Setting" +#: src/emc/usr_intf/stepconf/stepconf.py:226 +msgid "" +"You are using a simulated-realtime version of Machinekit, so testing / " +"tuning of hardware is unavailable." msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3441 -msgid "Delete / lines" +#: src/emc/usr_intf/stepconf/stepconf.py:227 +#, python-format +msgid "" +"You are using a realtime version of Machinekit but didn't load a realtime " +"kernel so testing / tuning of hardware is unavailable.\n" +"This is possibly because you updated the OS and it doesn't automatically " +"load the RTAI kernel anymore.\n" +"You are using the %(actual)s kernel.\n" +"You need to use kernel:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3456 -msgid "Keep / lines" +#: src/emc/usr_intf/stepconf/stepconf.py:246 +msgid "my-mill" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3473 -#, fuzzy -msgid "Pause on M1" -msgstr "_Pausa" +#: src/emc/usr_intf/stepconf/stepconf.py:585 +#, python-format +msgid "File %r was modified since it was written by stepconf" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3484 -msgid "Ignore M1" +#: src/emc/usr_intf/stepconf/stepconf.py:588 +msgid "" +"Saving this configuration file will discard configuration changes made " +"outside stepconf." msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3504 -msgid "Program Options" +#: src/emc/usr_intf/stepconf/stepconf.py:603 +#: src/emc/usr_intf/pncconf/pncconf.py:1318 +msgid "Continue? " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3531 -msgid "Preferences" +#: src/emc/usr_intf/stepconf/stepconf.py:604 +#: src/emc/usr_intf/pncconf/pncconf.py:1319 +msgid "yY" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3567 -msgid "FO: 100%" +#: src/emc/usr_intf/stepconf/stepconf.py:689 +#: src/emc/usr_intf/pncconf/pncconf.py:3591 +#, python-format +msgid "launch %s" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3582 -msgid "SO: 100%" +#: src/emc/usr_intf/stepconf/stepconf.py:693 +msgid "Desktop Launcher for Machinekit config made by Stepconf" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3596 -msgid "MV: 100" +#: src/emc/usr_intf/stepconf/stepconf.py:860 +#: src/emc/usr_intf/stepconf/pages.py:145 +msgid "Other" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3610 -msgid "Jogging" +#: src/emc/usr_intf/stepconf/stepconf.py:1295 +#: src/emc/usr_intf/pncconf/pncconf.py:9302 +#, python-format +msgid "%s Axis Test" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3637 -msgid ".01" +#: src/emc/usr_intf/stepconf/stepconf.py:1298 +#: src/emc/usr_intf/stepconf/pages.py:617 +msgid "deg / s" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3650 -msgid ".001" +#: src/emc/usr_intf/stepconf/stepconf.py:1299 +#: src/emc/usr_intf/stepconf/pages.py:618 +msgid "deg / s²" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3666 -msgid ".0001" +#: src/emc/usr_intf/stepconf/stepconf.py:1300 +#: src/emc/usr_intf/stepconf/pages.py:619 +msgid "deg" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3694 -msgid " X " +#: src/emc/usr_intf/stepconf/stepconf.py:1312 +#: src/emc/usr_intf/stepconf/pages.py:623 +#: src/emc/usr_intf/stepconf/axisx.glade:629 +#: src/emc/usr_intf/stepconf/axisy.glade:615 +#: src/emc/usr_intf/stepconf/axisz.glade:615 +#: src/emc/usr_intf/stepconf/axisa.glade:629 +#: src/emc/usr_intf/pncconf/pncconf.glade:64717 +msgid "mm / s" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3706 -msgid " Y " +#: src/emc/usr_intf/stepconf/stepconf.py:1313 +#: src/emc/usr_intf/stepconf/pages.py:624 +#: src/emc/usr_intf/stepconf/axisx.glade:645 +#: src/emc/usr_intf/stepconf/axisy.glade:631 +#: src/emc/usr_intf/stepconf/axisz.glade:631 +#: src/emc/usr_intf/stepconf/axisa.glade:645 +#: src/emc/usr_intf/pncconf/pncconf.glade:64732 +msgid "mm / s²" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3721 -msgid " Z " +#: src/emc/usr_intf/stepconf/stepconf.py:1326 +#: src/emc/usr_intf/stepconf/pages.py:629 +msgid "in / s" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3736 -msgid " A " +#: src/emc/usr_intf/stepconf/stepconf.py:1327 +#: src/emc/usr_intf/stepconf/pages.py:630 +msgid "in / s²" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3752 -msgid " B " +#: src/emc/usr_intf/stepconf/pages.py:189 +msgid "Machinekit 'stepconf' configuration files" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3770 -msgid " C " +#: src/emc/usr_intf/stepconf/pages.py:190 +#: src/emc/usr_intf/pncconf/pncconf.py:4257 +msgid "Modify Existing Configuration" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3788 -msgid " U " +#: src/emc/usr_intf/stepconf/pages.py:616 +msgid "degree / rev" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3804 -msgid " V " +#: src/emc/usr_intf/stepconf/pages.py:620 +msgid "Steps / deg" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3822 -msgid " W " +#: src/emc/usr_intf/stepconf/pages.py:622 +#: src/emc/usr_intf/stepconf/axisx.glade:613 +#: src/emc/usr_intf/stepconf/axisy.glade:599 +#: src/emc/usr_intf/stepconf/axisz.glade:599 +#: src/emc/usr_intf/stepconf/axisa.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / rev" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3855 -msgid "Handwheel" +#: src/emc/usr_intf/stepconf/pages.py:626 +#: src/emc/usr_intf/stepconf/axisx.glade:15 +#: src/emc/usr_intf/stepconf/axisy.glade:15 +#: src/emc/usr_intf/stepconf/axisz.glade:15 +#: src/emc/usr_intf/stepconf/axisa.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Steps / mm" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:53 -msgid "" -"Stepconf encountered an error. The following information may be useful in " -"troubleshooting:\n" -"\n" +#: src/emc/usr_intf/stepconf/pages.py:628 +msgid "rev / in" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:70 -#: src/emc/usr_intf/pncconf/pncconf.py:133 -msgid "Gecko 201" +#: src/emc/usr_intf/stepconf/pages.py:632 +msgid "Steps / in" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:71 -#: src/emc/usr_intf/pncconf/pncconf.py:134 -msgid "Gecko 202" +#: src/emc/usr_intf/stepconf/build_INI.py:45 +#: src/emc/usr_intf/stepconf/build_HAL.py:41 +#, python-format +msgid "# Generated by stepconf 1.1 at %s" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:72 -#: src/emc/usr_intf/pncconf/pncconf.py:135 -msgid "Gecko 203v" +#: src/emc/usr_intf/stepconf/build_INI.py:46 +#: src/emc/usr_intf/stepconf/build_HAL.py:42 +#: src/emc/usr_intf/pncconf/pncconf.py:1328 +#: src/emc/usr_intf/pncconf/pncconf.py:2422 +msgid "# If you make changes to this file, they will be" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:73 -#: src/emc/usr_intf/pncconf/pncconf.py:136 -msgid "Gecko 210" +#: src/emc/usr_intf/stepconf/build_INI.py:47 +#: src/emc/usr_intf/stepconf/build_HAL.py:43 +msgid "# overwritten when you run stepconf again" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:74 -#: src/emc/usr_intf/pncconf/pncconf.py:137 -msgid "Gecko 212" +#: src/emc/usr_intf/stepconf/build_INI.py:126 +msgid "# add halui MDI commands here (max 64) " msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:75 -#: src/emc/usr_intf/pncconf/pncconf.py:138 -msgid "Gecko 320" +#: src/emc/usr_intf/stepconf/build_HAL.py:275 +#: src/emc/usr_intf/pncconf/pncconf.py:3131 +msgid "# **** Setup for external estop ladder program -START ****" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:76 -#: src/emc/usr_intf/pncconf/pncconf.py:139 -msgid "Gecko 540" +#: src/emc/usr_intf/stepconf/build_HAL.py:282 +#: src/emc/usr_intf/pncconf/pncconf.py:3138 +msgid "# **** Setup for external estop ladder program -END ****" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:77 -#: src/emc/usr_intf/pncconf/pncconf.py:140 -msgid "L297" +#: src/emc/usr_intf/stepconf/build_HAL.py:302 +#: src/emc/usr_intf/pncconf/pncconf.py:3165 +msgid "" +"# Load Classicladder with modbus master included (GUI must run for Modbus)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:78 -#: src/emc/usr_intf/pncconf/pncconf.py:141 -msgid "PMDX-150" +#: src/emc/usr_intf/stepconf/build_HAL.py:305 +#: src/emc/usr_intf/pncconf/pncconf.py:3170 +msgid "# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:79 -#: src/emc/usr_intf/pncconf/pncconf.py:142 -msgid "Sherline" +#: src/emc/usr_intf/stepconf/build_HAL.py:315 +#: src/emc/usr_intf/pncconf/pncconf.py:3252 +msgid "Include your PyVCP panel here.\n" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:80 -#: src/emc/usr_intf/pncconf/pncconf.py:143 -msgid "Xylotex 8S-3" +#: src/emc/usr_intf/stepconf/build_HAL.py:324 +#: src/emc/usr_intf/stepconf/build_HAL.py:370 +msgid "# Include your customized HAL commands here" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:81 -#: src/emc/usr_intf/pncconf/pncconf.py:144 -msgid "Parker-Compumotor oem750" +#: src/emc/usr_intf/stepconf/build_HAL.py:325 +msgid "" +"# The commands in this file are run after the AXIS GUI (including PyVCP " +"panel) starts" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:82 -#: src/emc/usr_intf/pncconf/pncconf.py:145 -msgid "JVL-SMD41 or 42" +#: src/emc/usr_intf/stepconf/build_HAL.py:328 +#: src/emc/usr_intf/pncconf/pncconf.py:3280 +msgid "# **** Setup of spindle speed display using pyvcp -START ****" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:83 -#: src/emc/usr_intf/pncconf/pncconf.py:146 -msgid "Hobbycnc Pro Chopper" +#: src/emc/usr_intf/stepconf/build_HAL.py:330 +msgid "# **** Use ACTUAL spindle velocity from spindle encoder" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:84 -#: src/emc/usr_intf/pncconf/pncconf.py:147 -msgid "Keling 4030" +#: src/emc/usr_intf/stepconf/build_HAL.py:331 +msgid "" +"# **** spindle-velocity-feedback-rps bounces around so we filter it with " +"lowpass" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -#, fuzzy -msgid "X Step" -msgstr "Stanna #Guessing again" +#: src/emc/usr_intf/stepconf/build_HAL.py:332 +msgid "" +"# **** spindle-velocity-feedback-rps is signed so we use absolute component " +"to remove sign" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -msgid "X Direction" +#: src/emc/usr_intf/stepconf/build_HAL.py:333 +msgid "# **** ACTUAL velocity is in RPS not RPM so we scale it." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -#, fuzzy -msgid "Y Step" -msgstr "Stanna #Guessing again" +#: src/emc/usr_intf/stepconf/build_HAL.py:342 +msgid "# **** set up spindle at speed indicator ****" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -msgid "Y Direction" +#: src/emc/usr_intf/stepconf/build_HAL.py:355 +msgid "" +"# **** Use COMMANDED spindle velocity from LinuxCNC because no spindle " +"encoder was specified" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -#, fuzzy -msgid "Z Step" -msgstr "Stanna #Guessing again" +#: src/emc/usr_intf/stepconf/build_HAL.py:371 +msgid "# This file will not be overwritten when you run stepconf again" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -msgid "Z Direction" +#: src/emc/usr_intf/stepconf/build_HAL.py:412 +msgid "# This file sets up simulated limits/home/spindle encoder hardware." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -#, fuzzy -msgid "A Step" -msgstr "Stanna #Guessing again" +#: src/emc/usr_intf/stepconf/build_HAL.py:413 +msgid "# This is a generated file do not edit." +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -msgid "A Direction" +#: src/emc/usr_intf/stepconf/main_page.glade:35 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Acceleration:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -#, fuzzy -msgid "Spindle ON" -msgstr "Spindel:" +#: src/emc/usr_intf/stepconf/main_page.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Jog:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#, fuzzy -msgid "Spindle PWM" -msgstr "Spindel:" +#: src/emc/usr_intf/stepconf/main_page.glade:63 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Test Area:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -#, fuzzy -msgid "Spindle Brake" -msgstr "Spindelbroms på" +#: src/emc/usr_intf/stepconf/main_page.glade:97 +msgid "mm/s^2" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 -#, fuzzy -msgid "Coolant Mist" -msgstr "Kylvätska:" +#: src/emc/usr_intf/stepconf/main_page.glade:138 +msgid "mm/s" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 -#, fuzzy -msgid "Coolant Flood" -msgstr "Kylvätska:" +#: src/emc/usr_intf/stepconf/main_page.glade:400 +msgid "±" +msgstr "" -# ***: ../tcl/axis.tcl:1470 -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/stepconf/main_page.glade:423 #, fuzzy -msgid "ESTOP Out" -msgstr "#Nödstopp?" +msgid "Stepconf -Stepper Configuration Wizard" +msgstr "Hal _configuration" + +#: src/emc/usr_intf/stepconf/main_page.glade:503 +#: src/emc/usr_intf/pncconf/pncconf.glade:2054 +#: src/emc/usr_intf/pncconf/pncconf.glade:2067 +#: src/emc/usr_intf/pncconf/pncconf.glade:2080 +#: src/emc/usr_intf/pncconf/pncconf.glade:2093 +#: src/emc/usr_intf/pncconf/pncconf.glade:2106 +#: src/emc/usr_intf/pncconf/pncconf.glade:2119 +#: src/emc/usr_intf/pncconf/pncconf.glade:2132 +#: src/emc/usr_intf/pncconf/pncconf.glade:2145 +#: src/emc/usr_intf/pncconf/pncconf.glade:2156 +#: src/emc/usr_intf/pncconf/pncconf.glade:2169 +#: src/emc/usr_intf/pncconf/pncconf.glade:2182 +#: src/emc/usr_intf/pncconf/pncconf.glade:2528 +#: src/emc/usr_intf/pncconf/pncconf.glade:2541 +#: src/emc/usr_intf/pncconf/pncconf.glade:2554 +#: src/emc/usr_intf/pncconf/pncconf.glade:8104 +#: src/emc/usr_intf/pncconf/pncconf.glade:8139 +#: src/emc/usr_intf/pncconf/pncconf.glade:63377 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:1342 +#: src/emc/usr_intf/gscreen/gscreen.glade:1360 +#: src/emc/usr_intf/gscreen/gscreen.glade:1378 +msgid "label" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -msgid "Amplifier Enable" +#: src/emc/usr_intf/stepconf/main_page.glade:605 +msgid "" +"This program creates configuration files (.ini and .hal) for \"step and " +"direction\" milling machines and lathes connected to the PC parallel port.\n" +"\n" +"Stepconf requires a minimum 800 X 600 display resolution." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:157 -#: src/emc/usr_intf/pncconf/pncconf.py:443 -msgid "Charge Pump" +#: src/emc/usr_intf/stepconf/main_page.glade:628 +#: src/emc/usr_intf/pncconf/pncconf.glade:28799 +#: src/emc/usr_intf/pncconf/pncconf.glade:35720 +#: src/emc/usr_intf/pncconf/pncconf.glade:42643 +#: src/emc/usr_intf/pncconf/pncconf.glade:49566 +#: src/emc/usr_intf/pncconf/pncconf.glade:56489 +msgid "page 1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 0" +#: src/emc/usr_intf/stepconf/base.glade:18 +msgid "XYZ" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 1" +#: src/emc/usr_intf/stepconf/base.glade:21 +msgid "XYZA" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 2" +#: src/emc/usr_intf/stepconf/base.glade:24 +msgid "XZ (Lathe)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 3" +#: src/emc/usr_intf/stepconf/base.glade:79 +msgid "Step _Time:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:159 -#: src/emc/usr_intf/stepconf/stepconf.py:178 -msgid "Unused" +#: src/emc/usr_intf/stepconf/base.glade:113 +#: src/emc/usr_intf/stepconf/base.glade:165 +#: src/emc/usr_intf/stepconf/base.glade:219 +#: src/emc/usr_intf/stepconf/base.glade:271 +#: src/emc/usr_intf/stepconf/base.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:443 +#: src/emc/usr_intf/pncconf/pncconf.glade:8226 +msgid "ns" msgstr "" -# ***: ../tcl/axis.tcl:1470 -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 -#, fuzzy -msgid "ESTOP In" -msgstr "#Nödstopp?" +#: src/emc/usr_intf/stepconf/base.glade:127 +msgid "Step _Space:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 -msgid "Probe In" +#: src/emc/usr_intf/stepconf/base.glade:181 +msgid "Direction _Hold:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:162 -#, fuzzy -msgid "Spindle Index" -msgstr "Spindel:" +#: src/emc/usr_intf/stepconf/base.glade:235 +msgid "_Direction Setup:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:162 -#, fuzzy -msgid "Spindle Phase A" -msgstr "Spindelbroms på" +#: src/emc/usr_intf/stepconf/base.glade:338 +msgid "Driver Timing Settings" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:162 -#, fuzzy -msgid "Spindle Phase B" -msgstr "Spindelbroms på" +#: src/emc/usr_intf/stepconf/base.glade:351 +msgid "" +"_Test Base\n" +"Period Jitter " +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:163 +# ***: ../tcl/axis.tcl:1512 +#: src/emc/usr_intf/stepconf/base.glade:372 #, fuzzy -msgid "Home X" -msgstr "Hemmaläge" +msgid "Machine _Name:" +msgstr "Maskin" -#: src/emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/base.glade:386 #, fuzzy -msgid "Home Y" -msgstr "Hemmaläge" +msgid "_Axis configuration:" +msgstr "Hal _configuration" -#: src/emc/usr_intf/stepconf/stepconf.py:163 +# ***: ../tcl/axis.tcl:1512 +#: src/emc/usr_intf/stepconf/base.glade:401 #, fuzzy -msgid "Home Z" -msgstr "Hemmaläge" +msgid "Reset Default machine _units:" +msgstr "Maskin" -#: src/emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/base.glade:416 +#: src/emc/usr_intf/pncconf/pncconf.glade:245 #, fuzzy -msgid "Home A" -msgstr "Hemmaläge" - -#: src/emc/usr_intf/stepconf/stepconf.py:164 -msgid "Minimum Limit + Home X" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.py:164 -msgid "Minimum Limit + Home Y" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.py:165 -msgid "Minimum Limit + Home Z" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.py:165 -msgid "Minimum Limit + Home A" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.py:166 -msgid "Maximum Limit + Home X" -msgstr "" +msgid "Configuration directory:" +msgstr "Hal _configuration" -#: src/emc/usr_intf/stepconf/stepconf.py:166 -msgid "Maximum Limit + Home Y" +#: src/emc/usr_intf/stepconf/base.glade:430 +msgid "D_river type:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:167 -msgid "Maximum Limit + Home Z" +#: src/emc/usr_intf/stepconf/base.glade:545 +msgid "" +"Driver characteristics: (Multiply by 1000 for times specified in µs or " +"microseconds)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:167 -msgid "Maximum Limit + Home A" +#: src/emc/usr_intf/stepconf/base.glade:573 +msgid "Base Period Maximum _Jitter:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:168 -msgid "Both Limit + Home X" +#: src/emc/usr_intf/stepconf/base.glade:630 +msgid "One Parport" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:168 -msgid "Both Limit + Home Y" +#: src/emc/usr_intf/stepconf/base.glade:646 +msgid "Two Parports" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:169 -msgid "Both Limit + Home Z" +#: src/emc/usr_intf/stepconf/base.glade:663 +msgid "Three Parports" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:169 -msgid "Both Limit + Home A" +#: src/emc/usr_intf/stepconf/base.glade:698 +msgid "Min Base Period:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:170 -msgid "Minimum Limit X" +#: src/emc/usr_intf/stepconf/base.glade:735 +msgid "Max step rate:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:170 -msgid "Minimum Limit Y" +#: src/emc/usr_intf/stepconf/base.glade:870 +msgid "MM" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:171 -msgid "Minimum Limit Z" -msgstr "" +#: src/emc/usr_intf/stepconf/start.glade:11 +#, fuzzy +msgid "Create a _new configuration" +msgstr "Hal _configuration" -#: src/emc/usr_intf/stepconf/stepconf.py:171 -msgid "Minimum Limit A" +#: src/emc/usr_intf/stepconf/start.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:130 +msgid "Modify a configuration already created with this program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:172 -msgid "Maximum Limit X" +#: src/emc/usr_intf/stepconf/start.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:118 +msgid "Do you wish to:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:172 -msgid "Maximum Limit Y" +#: src/emc/usr_intf/stepconf/start.glade:61 +#: src/emc/usr_intf/pncconf/pncconf.glade:100 +msgid "" +"If you have made modifications to this configuration outside this program, " +"they will be lost when you select \"Modify a configuration\"" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:173 -msgid "Maximum Limit Z" +#: src/emc/usr_intf/stepconf/start.glade:76 +msgid "Create a desktop _shortcut (symlink) to configuration files." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:173 -msgid "Maximum Limit A" +#: src/emc/usr_intf/stepconf/start.glade:93 +msgid "Create a desktop _launcher to start LinuxCNC with this configuration." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:174 -msgid "Both Limit X" -msgstr "" +#: src/emc/usr_intf/stepconf/start.glade:124 +#, fuzzy +msgid "Create simulated hardware configuration." +msgstr "Hal _configuration" -#: src/emc/usr_intf/stepconf/stepconf.py:174 -msgid "Both Limit Y" +#: src/emc/usr_intf/stepconf/pport1.glade:35 +msgid "Xylotex" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:175 -msgid "Both Limit Z" +#: src/emc/usr_intf/stepconf/pport1.glade:38 +msgid "TB6560 3 axes" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:175 -msgid "Both Limit A" +#: src/emc/usr_intf/stepconf/pport1.glade:41 +msgid "TB6560 4 axes" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:176 -msgid "All limits" +#: src/emc/usr_intf/stepconf/pport1.glade:59 +#: src/emc/usr_intf/pncconf/pncconf.glade:62915 +msgid "Pin _1:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:176 -msgid "All home" +#: src/emc/usr_intf/stepconf/pport1.glade:74 +#: src/emc/usr_intf/stepconf/pport2.glade:768 +#: src/emc/usr_intf/pncconf/pncconf.glade:61685 +#: src/emc/usr_intf/pncconf/pncconf.glade:62901 +msgid "Pin _2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:176 -msgid "All limits + homes" +#: src/emc/usr_intf/stepconf/pport1.glade:89 +#: src/emc/usr_intf/stepconf/pport2.glade:814 +#: src/emc/usr_intf/pncconf/pncconf.glade:61668 +#: src/emc/usr_intf/pncconf/pncconf.glade:62887 +msgid "Pin _3:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 0" +#: src/emc/usr_intf/stepconf/pport1.glade:104 +#: src/emc/usr_intf/stepconf/pport2.glade:860 +#: src/emc/usr_intf/pncconf/pncconf.glade:61651 +#: src/emc/usr_intf/pncconf/pncconf.glade:62873 +msgid "Pin _4:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 1" +#: src/emc/usr_intf/stepconf/pport1.glade:119 +#: src/emc/usr_intf/stepconf/pport2.glade:906 +#: src/emc/usr_intf/pncconf/pncconf.glade:61634 +#: src/emc/usr_intf/pncconf/pncconf.glade:62859 +msgid "Pin _5:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 2" +#: src/emc/usr_intf/stepconf/pport1.glade:134 +#: src/emc/usr_intf/stepconf/pport2.glade:952 +#: src/emc/usr_intf/pncconf/pncconf.glade:61617 +#: src/emc/usr_intf/pncconf/pncconf.glade:62845 +msgid "Pin _6:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 3" +#: src/emc/usr_intf/stepconf/pport1.glade:149 +#: src/emc/usr_intf/stepconf/pport2.glade:998 +#: src/emc/usr_intf/pncconf/pncconf.glade:61600 +#: src/emc/usr_intf/pncconf/pncconf.glade:62831 +msgid "Pin _7:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:203 -msgid "my-mill" +#: src/emc/usr_intf/stepconf/pport1.glade:164 +#: src/emc/usr_intf/stepconf/pport2.glade:1044 +#: src/emc/usr_intf/pncconf/pncconf.glade:61583 +#: src/emc/usr_intf/pncconf/pncconf.glade:62817 +msgid "Pin _8:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:215 -#: src/emc/usr_intf/stepconf/stepconf.py:217 -#: src/emc/usr_intf/pncconf/pncconf.py:983 -#: src/emc/usr_intf/pncconf/pncconf.py:985 -msgid "Enter Address" +#: src/emc/usr_intf/stepconf/pport1.glade:179 +#: src/emc/usr_intf/stepconf/pport2.glade:1090 +#: src/emc/usr_intf/pncconf/pncconf.glade:61566 +#: src/emc/usr_intf/pncconf/pncconf.glade:62803 +msgid "Pin _9:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:375 -#, python-format -msgid "File %r was modified since it was written by stepconf" +#: src/emc/usr_intf/stepconf/pport1.glade:194 +#: src/emc/usr_intf/stepconf/pport2.glade:1137 +#: src/emc/usr_intf/pncconf/pncconf.glade:62789 +msgid "_Pin 14:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:378 -msgid "" -"Saving this configuration file will discard configuration changes made " -"outside stepconf." +#: src/emc/usr_intf/stepconf/pport1.glade:209 +#: src/emc/usr_intf/stepconf/pport2.glade:1185 +#: src/emc/usr_intf/pncconf/pncconf.glade:62775 +msgid "P_in 16:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:393 -#: src/emc/usr_intf/pncconf/pncconf.py:1356 -msgid "Continue? " +#: src/emc/usr_intf/stepconf/pport1.glade:224 +#: src/emc/usr_intf/stepconf/pport2.glade:1233 +#: src/emc/usr_intf/pncconf/pncconf.glade:62761 +msgid "Pi_n 17:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:394 -#: src/emc/usr_intf/pncconf/pncconf.py:1357 -msgid "yY" +#: src/emc/usr_intf/stepconf/pport1.glade:470 +#: src/emc/usr_intf/stepconf/pport2.glade:692 +msgid "Outputs (PC to Mill):" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:446 -#: src/emc/usr_intf/stepconf/stepconf.py:786 -#, python-format -msgid "# Generated by stepconf at %s" +#: src/emc/usr_intf/stepconf/pport1.glade:483 +#: src/emc/usr_intf/stepconf/pport2.glade:427 +#: src/emc/usr_intf/pncconf/pncconf.glade:61701 +msgid "Pin 1_0:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:447 -#: src/emc/usr_intf/stepconf/stepconf.py:787 -#: src/emc/usr_intf/pncconf/pncconf.py:1366 -#: src/emc/usr_intf/pncconf/pncconf.py:2369 -msgid "# If you make changes to this file, they will be" +#: src/emc/usr_intf/stepconf/pport1.glade:500 +#: src/emc/usr_intf/stepconf/pport2.glade:475 +#: src/emc/usr_intf/pncconf/pncconf.glade:61717 +msgid "Pin 1_1:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:448 -#: src/emc/usr_intf/stepconf/stepconf.py:788 -msgid "# overwritten when you run stepconf again" +#: src/emc/usr_intf/stepconf/pport1.glade:517 +#: src/emc/usr_intf/stepconf/pport2.glade:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:61733 +msgid "Pin 1_2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:516 -msgid "# add halui MDI commands here (max 64) " +#: src/emc/usr_intf/stepconf/pport1.glade:534 +#: src/emc/usr_intf/stepconf/pport2.glade:571 +#: src/emc/usr_intf/pncconf/pncconf.glade:61749 +msgid "Pin 1_3:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:991 -#: src/emc/usr_intf/pncconf/pncconf.py:2991 -msgid "# **** Setup for external estop ladder program -START ****" +#: src/emc/usr_intf/stepconf/pport1.glade:551 +#: src/emc/usr_intf/stepconf/pport2.glade:619 +#: src/emc/usr_intf/pncconf/pncconf.glade:61765 +msgid "Pin 1_5:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:998 -#: src/emc/usr_intf/pncconf/pncconf.py:2998 -msgid "# **** Setup for external estop ladder program -END ****" +#: src/emc/usr_intf/stepconf/pport1.glade:590 +#: src/emc/usr_intf/stepconf/pport2.glade:16 +msgid "Inputs (Mill to PC):" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1018 -#: src/emc/usr_intf/pncconf/pncconf.py:3025 -msgid "" -"# Load Classicladder with modbus master included (GUI must run for Modbus)" +#: src/emc/usr_intf/stepconf/pport1.glade:618 +#: src/emc/usr_intf/stepconf/pport1.glade:632 +#: src/emc/usr_intf/stepconf/pport2.glade:29 +#: src/emc/usr_intf/stepconf/pport2.glade:702 +#: src/emc/usr_intf/pncconf/pncconf.glade:62335 +#: src/emc/usr_intf/pncconf/pncconf.glade:62348 +msgid "Invert" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1021 -#: src/emc/usr_intf/pncconf/pncconf.py:3030 -msgid "# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI" +#: src/emc/usr_intf/stepconf/pport1.glade:1018 +msgid "Output pinout presets:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1031 -#: src/emc/usr_intf/pncconf/pncconf.py:3112 -msgid "Include your PyVCP panel here.\n" +#: src/emc/usr_intf/stepconf/pport1.glade:1096 +msgid "Parport _Base Address:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1040 -#: src/emc/usr_intf/stepconf/stepconf.py:1087 -msgid "# Include your customized HAL commands here" -msgstr "" +#: src/emc/usr_intf/stepconf/pport1.glade:1132 +#, fuzzy +msgid "Preset" +msgstr "_Förtsätt" -#: src/emc/usr_intf/stepconf/stepconf.py:1041 -msgid "" -"# The commands in this file are run after the AXIS GUI (including PyVCP " -"panel) starts" +#: src/emc/usr_intf/stepconf/pport2.glade:47 +msgid "Pin 2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1045 -#: src/emc/usr_intf/pncconf/pncconf.py:3140 -msgid "# **** Setup of spindle speed display using pyvcp -START ****" +#: src/emc/usr_intf/stepconf/pport2.glade:94 +msgid "Pin 3:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1047 -msgid "# **** Use ACTUAL spindle velocity from spindle encoder" +#: src/emc/usr_intf/stepconf/pport2.glade:141 +msgid "Pin 4:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1048 -msgid "# **** spindle-velocity bounces around so we filter it with lowpass" +#: src/emc/usr_intf/stepconf/pport2.glade:188 +msgid "Pin 5:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1049 -msgid "" -"# **** spindle-velocity is signed so we use absolute component to remove sign" +#: src/emc/usr_intf/stepconf/pport2.glade:235 +msgid "Pin 6:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1050 -msgid "# **** ACTUAL velocity is in RPS not RPM so we scale it." +#: src/emc/usr_intf/stepconf/pport2.glade:282 +msgid "Pin 7:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1059 -msgid "# **** set up spindle at speed indicator ****" +#: src/emc/usr_intf/stepconf/pport2.glade:329 +msgid "Pin 8:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1072 -msgid "" -"# **** Use COMMANDED spindle velocity from LinuxCNC because no spindle " -"encoder was specified" +#: src/emc/usr_intf/stepconf/pport2.glade:376 +msgid "Pin 9:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1073 -msgid "" -"# **** COMANDED velocity is signed so we use absolute component (abs.0) to " -"remove sign" +#: src/emc/usr_intf/stepconf/pport2.glade:721 +msgid "Pin _1: " msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1088 -msgid "# This file will not be overwritten when you run stepconf again" +#: src/emc/usr_intf/stepconf/pport2.glade:1431 +msgid "Out" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1095 -#, python-format -msgid "Generated by stepconf at %s" +#: src/emc/usr_intf/stepconf/pport2.glade:1434 +msgid "In" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1166 -#: src/emc/usr_intf/pncconf/pncconf.py:3451 -#, python-format -msgid "launch %s" +#: src/emc/usr_intf/stepconf/spindle.glade:23 +msgid "Use spindle-at-speed:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1170 -msgid "Desktop Launcher for LinuxCNC config made by Stepconf" +#: src/emc/usr_intf/stepconf/spindle.glade:64 +msgid "Speed display filter gain:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1196 -#: src/emc/usr_intf/pncconf/pncconf.py:3700 -#, fuzzy, python-format -msgid "%s Axis Configuration" +#: src/emc/usr_intf/stepconf/spindle.glade:99 +#, fuzzy +msgid "Calibration:" msgstr "Hal _configuration" -#: src/emc/usr_intf/stepconf/stepconf.py:1238 -#: src/emc/usr_intf/stepconf/stepconf.py:1337 -msgid "Other" +#: src/emc/usr_intf/stepconf/spindle.glade:113 +msgid "_Speed 1:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1249 -msgid "Quit Stepconf and discard changes?" +#: src/emc/usr_intf/stepconf/spindle.glade:129 +msgid "_PWM 1:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1280 -msgid "" -"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " -"of hardware is unavailable." +#: src/emc/usr_intf/stepconf/spindle.glade:148 +msgid "S_peed 2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1283 -msgid "" -"You are using a realtime version of LinuxCNC but didn't load a realtime " -"kernel so testing / tuning of hardware is unavailable.\n" -"This is possibly because you updated the OS and it doesn't automatically " -"load the RTAI kernel anymore.\n" +#: src/emc/usr_intf/stepconf/spindle.glade:164 +msgid "P_WM 2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1298 -msgid "LinuxCNC 'stepconf' configuration files" +#: src/emc/usr_intf/stepconf/spindle.glade:183 +msgid "PWM _Rate:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1299 -#: src/emc/usr_intf/pncconf/pncconf.py:4094 -msgid "Modify Existing Configuration" +#: src/emc/usr_intf/stepconf/spindle.glade:285 +msgid "_Cycles per revolution:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1439 -msgid "" -"You need to designate an E-stop input pin in the Parallel Port Setup page " -"for this program." +#: src/emc/usr_intf/stepconf/spindle.glade:347 +msgid "Enter 0 Hz for \"PDM\" mode" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1452 -msgid "" -"OK to replace existing custom ladder program?\n" -"Existing Custom.clp will be renamed custom_backup.clp.\n" -"Any existing file named -custom_backup.clp- will be lost. " +#: src/emc/usr_intf/stepconf/spindle.glade:360 +msgid "Scale %" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1457 -#: src/emc/usr_intf/pncconf/pncconf.py:7815 -msgid "" -"You edited a ladder program and have selected a different program to copy to " -"your configuration file.\n" -"The edited program will be lost.\n" -"\n" -"Are you sure? " +#: src/emc/usr_intf/stepconf/options.glade:50 +msgid "Include Halui user interface component" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1471 -msgid "" -"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" -"Existing custompanel.xml and custom_postgui.hal will be renamed " -"custompanel_backup.xml and postgui_backup.hal.\n" -"Any existing file named custompanel_backup.xml and custom_postgui.hal will " -"be lost. " -msgstr "" +#: src/emc/usr_intf/stepconf/options.glade:102 +#: src/emc/usr_intf/pncconf/pncconf.glade:6753 +#, fuzzy +msgid "Blank program" +msgstr "Kör program" -#: src/emc/usr_intf/stepconf/stepconf.py:1676 -msgid "degree / rev" -msgstr "" +#: src/emc/usr_intf/stepconf/options.glade:119 +#: src/emc/usr_intf/pncconf/pncconf.glade:6768 +#, fuzzy +msgid "Spindle speed display " +msgstr "Matnings överjusterning (%): #guessing again" -#: src/emc/usr_intf/stepconf/stepconf.py:1677 -#: src/emc/usr_intf/stepconf/stepconf.py:2205 -msgid "deg / s" +#: src/emc/usr_intf/stepconf/options.glade:136 +#: src/emc/usr_intf/stepconf/options.glade:671 +#: src/emc/usr_intf/pncconf/pncconf.glade:6799 +#: src/emc/usr_intf/pncconf/pncconf.glade:7120 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Existing custom program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1678 -#: src/emc/usr_intf/stepconf/stepconf.py:2206 -msgid "deg / s²" +#: src/emc/usr_intf/stepconf/options.glade:153 +#: src/emc/usr_intf/stepconf/options.glade:688 +#: src/emc/usr_intf/pncconf/pncconf.glade:6814 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include connections to HAL" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1679 -#: src/emc/usr_intf/stepconf/stepconf.py:2207 -msgid "deg" +#: src/emc/usr_intf/stepconf/options.glade:202 +#: src/emc/usr_intf/pncconf/pncconf.glade:6997 +#: src/emc/usr_intf/pncconf/pncconf.glade:7545 +msgid "" +"_Display\n" +"sample\n" +"panel" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1680 -msgid "Steps / deg" +#: src/emc/usr_intf/stepconf/options.glade:243 +#: src/emc/usr_intf/pncconf/pncconf.glade:7056 +msgid "Include custom PyVCP GUI panel" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1682 -#: src/emc/usr_intf/stepconf/stepconf.glade:3589 -#: src/emc/usr_intf/pncconf/pncconf.glade:66138 -#: src/emc/usr_intf/pncconf/pncconf.glade:66424 -msgid "mm / rev" +#: src/emc/usr_intf/stepconf/options.glade:414 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (float) out pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1683 -#: src/emc/usr_intf/stepconf/stepconf.py:2219 -#: src/emc/usr_intf/stepconf/stepconf.glade:3604 -#: src/emc/usr_intf/pncconf/pncconf.glade:57828 -msgid "mm / s" +#: src/emc/usr_intf/stepconf/options.glade:429 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (float) in pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1684 -#: src/emc/usr_intf/stepconf/stepconf.py:2220 -#: src/emc/usr_intf/stepconf/stepconf.glade:3619 -#: src/emc/usr_intf/pncconf/pncconf.glade:57813 -msgid "mm / s²" +#: src/emc/usr_intf/stepconf/options.glade:444 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (s32) out pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1686 -#: src/emc/usr_intf/stepconf/stepconf.glade:3075 -#: src/emc/usr_intf/pncconf/pncconf.glade:66888 -msgid "Steps / mm" +#: src/emc/usr_intf/stepconf/options.glade:459 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (s32) in pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1688 -msgid "rev / in" +#: src/emc/usr_intf/stepconf/options.glade:475 +msgid "Number of digital out pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1689 -#: src/emc/usr_intf/stepconf/stepconf.py:2233 -msgid "in / s" +#: src/emc/usr_intf/stepconf/options.glade:506 +msgid "Number of digital in pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1690 -#: src/emc/usr_intf/stepconf/stepconf.py:2234 -msgid "in / s²" +#: src/emc/usr_intf/stepconf/options.glade:518 +msgid "setup number of external pins" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1692 -msgid "Steps / in" +#: src/emc/usr_intf/stepconf/options.glade:533 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include modbus master support" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:2202 -#: src/emc/usr_intf/pncconf/pncconf.py:8893 -#, python-format -msgid "%s Axis Test" -msgstr "" +#: src/emc/usr_intf/stepconf/options.glade:625 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Blank ladder program" +msgstr "Pausa program" -#: src/emc/usr_intf/stepconf/stepconf.glade:8 -#: src/emc/usr_intf/stepconf/stepconf.glade:21 +#: src/emc/usr_intf/stepconf/options.glade:638 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "LinuxCNC Stepper Mill Configuration" -msgstr "Hal _configuration" +msgid "Estop ladder program" +msgstr "Avbryt program" + +#: src/emc/usr_intf/stepconf/options.glade:654 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Serial modbus program" +msgstr "Pausa program" -#: src/emc/usr_intf/stepconf/stepconf.glade:22 +#: src/emc/usr_intf/stepconf/options.glade:740 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" -"This program creates configuration files (.ini and .hal) for \"step and " -"direction\" milling machines and lathes connected to the PC parallel port.\n" -"\n" -"Stepconf requires a minimum 800 X 600 display resolution.\n" -"You may need to collapse the 'Driver Timing Settings' and \n" -"Parallel Port Settings' expanders." +"Edit ladder\n" +"program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:51 -#, fuzzy -msgid "Create a _new configuration" -msgstr "Hal _configuration" - -#: src/emc/usr_intf/stepconf/stepconf.glade:69 -#: src/emc/usr_intf/pncconf/pncconf.glade:70 -msgid "Modify a configuration already created with this program" +#: src/emc/usr_intf/stepconf/options.glade:781 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include _Classicladder PLC" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:87 -#: src/emc/usr_intf/pncconf/pncconf.glade:88 -msgid "Do you wish to:" +#: src/emc/usr_intf/stepconf/options.glade:802 +msgid "_Onscreen prompt for manual tool change" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:99 -#: src/emc/usr_intf/pncconf/pncconf.glade:100 -msgid "" -"If you have made modifications to this configuration outside this program, " -"they will be lost when you select \"Modify a configuration\"" +#: src/emc/usr_intf/stepconf/axisx.glade:31 +#: src/emc/usr_intf/stepconf/axisy.glade:31 +#: src/emc/usr_intf/stepconf/axisz.glade:31 +#: src/emc/usr_intf/stepconf/axisa.glade:45 +msgid "_Motor steps per revolution:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:116 -msgid "Create a desktop _shortcut (symlink) to configuration files." +#: src/emc/usr_intf/stepconf/axisx.glade:45 +#: src/emc/usr_intf/stepconf/axisy.glade:44 +#: src/emc/usr_intf/stepconf/axisz.glade:44 +#: src/emc/usr_intf/stepconf/axisa.glade:58 +msgid "_Driver Microstepping:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:133 -msgid "Create a desktop _launcher to start LinuxCNC with this configuration." +#: src/emc/usr_intf/stepconf/axisx.glade:61 +#: src/emc/usr_intf/stepconf/axisy.glade:59 +#: src/emc/usr_intf/stepconf/axisz.glade:59 +#: src/emc/usr_intf/stepconf/axisa.glade:73 +msgid "_Pulley teeth (Motor:Leadscrew):" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:169 -#: src/emc/usr_intf/pncconf/pncconf.glade:175 -msgid "Basic machine information" +#: src/emc/usr_intf/stepconf/axisx.glade:77 +#: src/emc/usr_intf/stepconf/axisy.glade:74 +#: src/emc/usr_intf/stepconf/axisz.glade:74 +#: src/emc/usr_intf/stepconf/axisa.glade:88 +msgid "_Leadscrew Pitch:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:327 -msgid "Step _Time:" +#: src/emc/usr_intf/stepconf/axisx.glade:93 +#: src/emc/usr_intf/stepconf/axisy.glade:89 +#: src/emc/usr_intf/stepconf/axisz.glade:89 +#: src/emc/usr_intf/stepconf/axisa.glade:103 +#: src/emc/usr_intf/pncconf/pncconf.glade:64687 +msgid "Maximum _Velocity:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:356 -#: src/emc/usr_intf/stepconf/stepconf.glade:402 -#: src/emc/usr_intf/stepconf/stepconf.glade:449 -#: src/emc/usr_intf/stepconf/stepconf.glade:494 -#: src/emc/usr_intf/stepconf/stepconf.glade:909 -#: src/emc/usr_intf/pncconf/pncconf.glade:458 -#: src/emc/usr_intf/pncconf/pncconf.glade:8256 -msgid "ns" +#: src/emc/usr_intf/stepconf/axisx.glade:109 +#: src/emc/usr_intf/stepconf/axisy.glade:104 +#: src/emc/usr_intf/stepconf/axisz.glade:104 +#: src/emc/usr_intf/stepconf/axisa.glade:118 +#: src/emc/usr_intf/pncconf/pncconf.glade:64702 +msgid "Maximum _Acceleration:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:369 -msgid "Step _Space:" +#: src/emc/usr_intf/stepconf/axisx.glade:125 +#: src/emc/usr_intf/stepconf/axisy.glade:119 +#: src/emc/usr_intf/stepconf/axisz.glade:119 +#: src/emc/usr_intf/stepconf/axisa.glade:133 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Time to accelerate to max speed:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:417 -msgid "Direction _Hold:" +#: src/emc/usr_intf/stepconf/axisx.glade:141 +#: src/emc/usr_intf/stepconf/axisy.glade:134 +#: src/emc/usr_intf/stepconf/axisz.glade:134 +#: src/emc/usr_intf/stepconf/axisa.glade:148 +msgid "Distance to accelerate to max speed:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:464 -msgid "_Direction Setup:" +#: src/emc/usr_intf/stepconf/axisx.glade:271 +#: src/emc/usr_intf/stepconf/axisy.glade:263 +#: src/emc/usr_intf/stepconf/axisz.glade:263 +#: src/emc/usr_intf/stepconf/axisa.glade:277 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulse rate at max speed:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:512 -msgid "Driver Timing Settings" +#: src/emc/usr_intf/stepconf/axisx.glade:342 +#: src/emc/usr_intf/stepconf/axisy.glade:334 +#: src/emc/usr_intf/stepconf/axisz.glade:334 +#: src/emc/usr_intf/stepconf/axisa.glade:348 +msgid "_Home location:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:538 -msgid "First Parport _Base Address:" +#: src/emc/usr_intf/stepconf/axisx.glade:358 +#: src/emc/usr_intf/stepconf/axisy.glade:349 +#: src/emc/usr_intf/stepconf/axisz.glade:349 +#: src/emc/usr_intf/stepconf/axisa.glade:363 +msgid "Home _Switch location:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:564 -msgid " Out" +#: src/emc/usr_intf/stepconf/axisx.glade:374 +#: src/emc/usr_intf/stepconf/axisy.glade:364 +#: src/emc/usr_intf/stepconf/axisz.glade:364 +#: src/emc/usr_intf/stepconf/axisa.glade:378 +msgid "Home Sear_ch velocity:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:575 -#: src/emc/usr_intf/stepconf/stepconf.glade:591 -msgid "" -"Out\n" -"In" +#: src/emc/usr_intf/stepconf/axisx.glade:390 +#: src/emc/usr_intf/stepconf/axisy.glade:379 +#: src/emc/usr_intf/stepconf/axisz.glade:379 +#: src/emc/usr_intf/stepconf/axisa.glade:393 +msgid "Home La_tch direction:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:633 -msgid "S_econd Parport Address:" +#: src/emc/usr_intf/stepconf/axisx.glade:404 +#: src/emc/usr_intf/stepconf/axisy.glade:393 +#: src/emc/usr_intf/stepconf/axisz.glade:393 +#: src/emc/usr_intf/stepconf/axisa.glade:407 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "_:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:650 -msgid "T_hird Parport Address:" +#: src/emc/usr_intf/stepconf/axisx.glade:498 +#: src/emc/usr_intf/stepconf/axisy.glade:486 +#: src/emc/usr_intf/stepconf/axisz.glade:486 +#: src/emc/usr_intf/stepconf/axisa.glade:500 +msgid "Tab_le travel:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:667 -msgid " Parallel Port Settings" +#: src/emc/usr_intf/stepconf/axisx.glade:531 +#: src/emc/usr_intf/stepconf/axisy.glade:518 +#: src/emc/usr_intf/stepconf/axisz.glade:518 +#: src/emc/usr_intf/stepconf/axisa.glade:532 +msgid "t_o" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:684 -msgid "" -"_Test Base\n" -"Period Jitter " +#: src/emc/usr_intf/stepconf/axisx.glade:677 +#: src/emc/usr_intf/stepconf/axisy.glade:663 +#: src/emc/usr_intf/stepconf/axisz.glade:663 +#: src/emc/usr_intf/stepconf/axisa.glade:677 +msgid "s" msgstr "" -# ***: ../tcl/axis.tcl:1512 -#: src/emc/usr_intf/stepconf/stepconf.glade:703 -#, fuzzy -msgid "Machine _Name:" -msgstr "Maskin" +#: src/emc/usr_intf/stepconf/axisx.glade:738 +#: src/emc/usr_intf/stepconf/axisy.glade:724 +#: src/emc/usr_intf/stepconf/axisz.glade:724 +#: src/emc/usr_intf/stepconf/axisa.glade:738 +msgid "T_est this axis" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:716 +#: src/emc/usr_intf/stepconf/axisx.glade:765 +#: src/emc/usr_intf/stepconf/axisy.glade:751 +#: src/emc/usr_intf/stepconf/axisz.glade:751 +#: src/emc/usr_intf/stepconf/axisa.glade:765 #, fuzzy -msgid "_Axis configuration:" -msgstr "Hal _configuration" +msgid "Axis SCALE:" +msgstr "Axel:" -# ***: ../tcl/axis.tcl:1512 -#: src/emc/usr_intf/stepconf/stepconf.glade:730 -#, fuzzy -msgid "Machine _units:" -msgstr "Maskin" +#: src/emc/usr_intf/stepconf/axisx.glade:833 +#: src/emc/usr_intf/stepconf/axisy.glade:819 +#: src/emc/usr_intf/stepconf/axisz.glade:819 +#: src/emc/usr_intf/stepconf/axisa.glade:12 +msgid "Same" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:744 -#: src/emc/usr_intf/pncconf/pncconf.glade:246 +# ***: ../tcl/axis.tcl:1514 +#: src/emc/usr_intf/stepconf/axisx.glade:836 +#: src/emc/usr_intf/stepconf/axisy.glade:822 +#: src/emc/usr_intf/stepconf/axisz.glade:822 +#: src/emc/usr_intf/stepconf/axisa.glade:15 #, fuzzy -msgid "Configuration directory:" -msgstr "Hal _configuration" +msgid "Opposite" +msgstr "Position:" -#: src/emc/usr_intf/stepconf/stepconf.glade:757 -msgid "D_river type:" +#: src/emc/usr_intf/stepconf/finished.glade:6 +msgid "" +"All the necessary information has now been gathered. \n" +"Click \"Done\" to write your configuration files to disk.\n" +"\n" +"If you experience lockups while running LinuxCNC:\n" +"-you will need to decrease the maximum velocity which will have the effect " +"of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC:\n" +"-first verify that you entered the proper timings for your stepper " +"drivers. \n" +"-then run a more thorough latency test as described on the linuxcnc.org " +"wiki.\n" +" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" +"\n" +"If you experience the \"Unexpected Realtime Delay\" message:\n" +"-run a more thorough latency test as described on the linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:785 -#: src/emc/usr_intf/pncconf/pncconf.glade:326 +#: src/emc/usr_intf/pncconf/pncconf.py:81 msgid "" -"Inch\n" -"Millimeter" +"PNCconf encountered an error. The following information may be useful in " +"troubleshooting:\n" +"\n" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:800 -#: src/emc/usr_intf/pncconf/pncconf.glade:291 -msgid "" -"XYZ\n" -"XYZA\n" -"XZ (Lathe)" +#: src/emc/usr_intf/pncconf/pncconf.py:149 +msgid "Keling 4030" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:847 -msgid "" -"Driver characteristics: (Multiply by 1000 for times specified in µs or " -"microseconds)\n" -" Additional signal conditioning or isolation such as optocouplers " -"and RC filters\n" -" can impose timing constraints of their own, in addition to those of " -"the driver." +#: src/emc/usr_intf/pncconf/pncconf.py:151 +msgid "Not Used" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:875 -msgid "Base Period Maximum _Jitter:" +#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:176 +msgid "Dummy" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:924 -msgid "Max step rate:" +#: src/emc/usr_intf/pncconf/pncconf.py:152 +msgid "8i20 Servo Drive" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:940 -msgid "Min Base Period:" +#: src/emc/usr_intf/pncconf/pncconf.py:153 +msgid "POT Output" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:956 -msgid "" -"_Onscreen prompt for\n" -"tool change" +#: src/emc/usr_intf/pncconf/pncconf.py:153 +msgid "POT Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1015 +#: src/emc/usr_intf/pncconf/pncconf.py:153 #, fuzzy -msgid "Advanced Configuration Options" -msgstr "Hal _configuration" +msgid "POT Direction" +msgstr "Spindelbroms på" -#: src/emc/usr_intf/stepconf/stepconf.glade:1033 -msgid "Include Halui user interface component" +#: src/emc/usr_intf/pncconf/pncconf.py:154 +msgid "GPIO Input" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1074 -#: src/emc/usr_intf/pncconf/pncconf.glade:6745 -#, fuzzy -msgid "Blank program" -msgstr "Kör program" +#: src/emc/usr_intf/pncconf/pncconf.py:154 +msgid "GPIO Output" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1089 -#: src/emc/usr_intf/pncconf/pncconf.glade:6760 -#, fuzzy -msgid "Spindle speed display " -msgstr "Matnings överjusterning (%): #guessing again" +#: src/emc/usr_intf/pncconf/pncconf.py:154 +msgid "GPIO O Drain" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1105 -#: src/emc/usr_intf/stepconf/stepconf.glade:1543 -#: src/emc/usr_intf/pncconf/pncconf.glade:6791 -#: src/emc/usr_intf/pncconf/pncconf.glade:7112 -#: src/emc/usr_intf/pncconf/pncconf.glade:59393 -msgid "Existing custom program" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-A" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1120 -#: src/emc/usr_intf/stepconf/stepconf.glade:1559 -#: src/emc/usr_intf/pncconf/pncconf.glade:6806 -#: src/emc/usr_intf/pncconf/pncconf.glade:59409 -msgid "Include connections to HAL" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-B" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1154 -#: src/emc/usr_intf/pncconf/pncconf.glade:6989 -#: src/emc/usr_intf/pncconf/pncconf.glade:7537 -msgid "" -"_Display\n" -"sample\n" -"panel" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-I" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1188 -#: src/emc/usr_intf/pncconf/pncconf.glade:7048 -msgid "Include custom PyVCP GUI panel" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-M" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1321 -#: src/emc/usr_intf/pncconf/pncconf.glade:59199 -msgid " Number of analog (float) out pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "Muxed Encoder 0" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1335 -#: src/emc/usr_intf/pncconf/pncconf.glade:59184 -msgid " Number of analog (float) in pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "Muxed Encoder 1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1349 -#: src/emc/usr_intf/pncconf/pncconf.glade:59169 -msgid " Number of analog (s32) out pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "muxed enc" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1363 -#: src/emc/usr_intf/pncconf/pncconf.glade:59153 -msgid " Number of analog (s32) in pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "mux enc mask" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1378 -msgid "Number of digital out pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "mux select" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1403 -msgid "Number of digital in pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:157 +msgid "Resolver 0 Encoder" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1414 -msgid "setup number of external pins" +#: src/emc/usr_intf/pncconf/pncconf.py:157 +msgid "Resolver 1 Encoder" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1429 -#: src/emc/usr_intf/pncconf/pncconf.glade:59213 -msgid "Include modbus master support" +#: src/emc/usr_intf/pncconf/pncconf.py:157 +msgid "Resolver 2 Encoder" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1500 -#: src/emc/usr_intf/pncconf/pncconf.glade:59333 -#, fuzzy -msgid "Blank ladder program" -msgstr "Pausa program" +#: src/emc/usr_intf/pncconf/pncconf.py:158 +msgid "Resolver 3 Encoder" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1513 -#: src/emc/usr_intf/pncconf/pncconf.glade:59346 -#, fuzzy -msgid "Estop ladder program" -msgstr "Avbryt program" +#: src/emc/usr_intf/pncconf/pncconf.py:158 +msgid "Resolver 4 Encoder" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:158 +msgid "Resolver 5 Encoder" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1527 -#: src/emc/usr_intf/pncconf/pncconf.glade:59377 +#: src/emc/usr_intf/pncconf/pncconf.py:159 #, fuzzy -msgid "Serial modbus program" -msgstr "Pausa program" +msgid "Step Gen-A" +msgstr "Blockvis körning av program" -#: src/emc/usr_intf/stepconf/stepconf.glade:1592 -#: src/emc/usr_intf/pncconf/pncconf.glade:59443 -msgid "" -"Edit ladder\n" -"program" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Dir Gen-B" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1628 -#: src/emc/usr_intf/pncconf/pncconf.glade:59479 -msgid "Include _Classicladder PLC" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Step/Dir Gen-C" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1653 -msgid "Parallel Port Setup" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Step/Dir Gen-D" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1760 -#: src/emc/usr_intf/pncconf/pncconf.glade:54010 -msgid "Pin _1:" +#: src/emc/usr_intf/pncconf/pncconf.py:160 +msgid "Step/Dir Gen-E" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1774 -#: src/emc/usr_intf/pncconf/pncconf.glade:54024 -#: src/emc/usr_intf/pncconf/pncconf.glade:55239 -msgid "Pin _2:" +#: src/emc/usr_intf/pncconf/pncconf.py:160 +msgid "Step/dir Gen-F" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:161 +msgid "Pulse Width Gen-P" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:161 +msgid "Pulse Width Gen-D" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:161 +msgid "Pulse Width Gen-E" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:162 +msgid "Pulse Density Gen-P" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:162 +msgid "Pulse Density Gen-D" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:162 +msgid "Pulse Density Gen-E" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:163 +msgid "Up/Down Mode -Up" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:163 +msgid "Up/Down Mode-Down" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1788 -#: src/emc/usr_intf/pncconf/pncconf.glade:54038 -#: src/emc/usr_intf/pncconf/pncconf.glade:55256 -msgid "Pin _3:" +#: src/emc/usr_intf/pncconf/pncconf.py:163 +msgid "Up/Down Mode-Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1802 -#: src/emc/usr_intf/pncconf/pncconf.glade:54052 -#: src/emc/usr_intf/pncconf/pncconf.glade:55273 -msgid "Pin _4:" +#: src/emc/usr_intf/pncconf/pncconf.py:164 +msgid "Motor Phase A" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1816 -#: src/emc/usr_intf/pncconf/pncconf.glade:54066 -#: src/emc/usr_intf/pncconf/pncconf.glade:55290 -msgid "Pin _5:" +#: src/emc/usr_intf/pncconf/pncconf.py:164 +msgid "Motor Phase B" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1830 -#: src/emc/usr_intf/pncconf/pncconf.glade:54080 -#: src/emc/usr_intf/pncconf/pncconf.glade:55307 -msgid "Pin _6:" +#: src/emc/usr_intf/pncconf/pncconf.py:164 +msgid "Motor Phase C" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1844 -#: src/emc/usr_intf/pncconf/pncconf.glade:54094 -#: src/emc/usr_intf/pncconf/pncconf.glade:55324 -msgid "Pin _7:" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Phase A Not" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1858 -#: src/emc/usr_intf/pncconf/pncconf.glade:54108 -#: src/emc/usr_intf/pncconf/pncconf.glade:55341 -msgid "Pin _8:" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Phase B Not" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1872 -#: src/emc/usr_intf/pncconf/pncconf.glade:54122 -#: src/emc/usr_intf/pncconf/pncconf.glade:55358 -msgid "Pin _9:" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Phase C Not" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1886 -#: src/emc/usr_intf/pncconf/pncconf.glade:54136 -msgid "_Pin 14:" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1900 -#: src/emc/usr_intf/pncconf/pncconf.glade:54150 -msgid "P_in 16:" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Fault" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1914 -#: src/emc/usr_intf/pncconf/pncconf.glade:54164 -msgid "Pi_n 17:" +#: src/emc/usr_intf/pncconf/pncconf.py:168 +msgid "SMARTSERIAL-P0-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2258 -msgid "Outputs (PC to Mill):" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P0-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2270 -#: src/emc/usr_intf/pncconf/pncconf.glade:55222 -msgid "Pin 1_0:" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P0-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2286 -#: src/emc/usr_intf/pncconf/pncconf.glade:55206 -msgid "Pin 1_1:" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2302 -#: src/emc/usr_intf/pncconf/pncconf.glade:55190 -msgid "Pin 1_2:" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2318 -#: src/emc/usr_intf/pncconf/pncconf.glade:55174 -msgid "Pin 1_3:" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2334 -#: src/emc/usr_intf/pncconf/pncconf.glade:55158 -msgid "Pin 1_5:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2399 -msgid "Inputs (Mill to PC):" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2425 -#: src/emc/usr_intf/stepconf/stepconf.glade:2438 -#: src/emc/usr_intf/pncconf/pncconf.glade:54578 -#: src/emc/usr_intf/pncconf/pncconf.glade:54591 -msgid "Invert" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2887 -msgid "_Sherline Outputs" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2905 -msgid "_Xylotex Outputs" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2923 -msgid "Output pinout presets:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3022 -#: src/emc/usr_intf/pncconf/pncconf.glade:57970 -#, fuzzy -msgid "X Axis Configuration" -msgstr "Hal _configuration" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3090 -msgid "_Motor steps per revolution:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3103 -msgid "_Driver Microstepping:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3118 -msgid "_Pulley teeth (Motor:Leadscrew):" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3133 -msgid "_Leadscrew Pitch:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3148 -#: src/emc/usr_intf/pncconf/pncconf.glade:57858 -msgid "Maximum _Velocity:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3163 -#: src/emc/usr_intf/pncconf/pncconf.glade:57843 -msgid "Maximum _Acceleration:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3178 -#: src/emc/usr_intf/pncconf/pncconf.glade:67063 -msgid "Time to accelerate to max speed:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3193 -msgid "Distance to accelerate to max speed:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3292 -#: src/emc/usr_intf/pncconf/pncconf.glade:67036 -msgid "Pulse rate at max speed:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3362 -msgid "_Home location:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3377 -msgid "Home _Switch location:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3392 -msgid "Home Sear_ch velocity:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3407 -msgid "Home La_tch direction:" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS0)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3420 -#: src/emc/usr_intf/pncconf/pncconf.glade:66232 -#: src/emc/usr_intf/pncconf/pncconf.glade:66274 -#: src/emc/usr_intf/pncconf/pncconf.glade:66505 -#: src/emc/usr_intf/pncconf/pncconf.glade:66570 -msgid "_:" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS2)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3437 -#: src/emc/usr_intf/pncconf/pncconf.glade:58536 -msgid "" -"Same\n" -"Opposite" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS3)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3492 -msgid "Tab_le travel:" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 I/O (SS0)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3519 -msgid "t_o" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 Analog (SS1)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3649 -msgid "s" +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 I/O (SS3)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3703 -msgid "T_est this axis" +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 Analog (SS4)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3729 +#: src/emc/usr_intf/pncconf/pncconf.py:176 #, fuzzy -msgid "Axis SCALE:" -msgstr "Axel:" +msgid "Analog Input" +msgstr "Manuell kontroll" -#: src/emc/usr_intf/stepconf/stepconf.glade:3765 +#: src/emc/usr_intf/pncconf/pncconf.py:277 +#: src/emc/usr_intf/pncconf/pncconf.py:409 #, fuzzy -msgid "Spindle Configuration" +msgid "Axis Selection" msgstr "Hal _configuration" -#: src/emc/usr_intf/stepconf/stepconf.glade:3785 -msgid "Use spindle-at-speed:" +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "" +"7i64-Input\n" +"P3 and P4" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3841 -msgid "Speed display filter gain:" +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "" +"7i64-Output\n" +"P2 and P5" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3870 -#, fuzzy -msgid "Calibration:" -msgstr "Hal _configuration" +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "7i64-Analog In" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3883 -msgid "_Speed 1:" +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3898 -msgid "_PWM 1:" +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3916 -msgid "S_peed 2:" +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3931 -msgid "P_WM 2:" +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3949 -msgid "PWM _Rate:" +#: src/emc/usr_intf/pncconf/pncconf.py:309 +msgid "" +"7i71-Output\n" +"TB3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4025 -msgid "_Cycles per revolution:" +#: src/emc/usr_intf/pncconf/pncconf.py:309 +msgid "" +"7i71-Output\n" +"TB2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4079 -msgid "Enter 0 Hz for \"PDM\" mode" +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-I/O\n" +"TB6" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4091 -msgid "Scale %" +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-I/O\n" +"TB5" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:60002 -msgid "Machine configuration complete" +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-Analog Output\n" +"TB4" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4114 -#: src/emc/usr_intf/pncconf/pncconf.glade:60003 +#: src/emc/usr_intf/pncconf/pncconf.py:325 msgid "" -"All the necessary information has now been gathered. Click \"Apply\" to " -"write your configuration files to disk.\n" -"If you experience lockups while running LinuxCNC, you will need to decrease " -"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" -"\n" -"If you experience lost steps while running LinuxCNC, first verify that you " -"entered the proper timings for your stepper drivers. If that does not fix " -"the problem, then run a more thorough latency test as described on the " -"linuxcnc.org wiki:\n" -" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" -"\n" -"If you experience the \"Unexpected Realtime Delay\" message, run a more " -"thorough latency test as described on the linuxcnc.org wiki: \n" -" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" +"7i77-I/O\n" +"TB8" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4160 -#: src/emc/usr_intf/pncconf/pncconf.glade:60462 -#: src/emc/usr_intf/pncconf/pncconf.glade:61557 -#: src/emc/usr_intf/pncconf/pncconf.glade:62650 -#: src/emc/usr_intf/pncconf/pncconf.glade:63743 -#: src/emc/usr_intf/pncconf/pncconf.glade:64842 -msgid "Acceleration:" +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB7" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4174 -#: src/emc/usr_intf/pncconf/pncconf.glade:60231 -#: src/emc/usr_intf/pncconf/pncconf.glade:60695 -#: src/emc/usr_intf/pncconf/pncconf.glade:61788 -#: src/emc/usr_intf/pncconf/pncconf.glade:62881 -#: src/emc/usr_intf/pncconf/pncconf.glade:63974 -#: src/emc/usr_intf/pncconf/pncconf.glade:64954 -msgid "Jog:" +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-Analog Output\n" +"TB5" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4188 -#: src/emc/usr_intf/pncconf/pncconf.glade:60681 -#: src/emc/usr_intf/pncconf/pncconf.glade:61774 -#: src/emc/usr_intf/pncconf/pncconf.glade:62867 -#: src/emc/usr_intf/pncconf/pncconf.glade:63960 -msgid "Test Area:" +#: src/emc/usr_intf/pncconf/pncconf.py:333 +msgid "7i73-I/O\n" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4217 -msgid "mm/s^2" +#: src/emc/usr_intf/pncconf/pncconf.py:348 +msgid "Unused Unused" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4253 -msgid "mm/s" +# ***: ../tcl/axis.tcl:1512 +#: src/emc/usr_intf/pncconf/pncconf.py:370 +#, fuzzy +msgid "Machine Is Enabled" +msgstr "Maskin" + +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "X Amplifier Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4329 -#: src/emc/usr_intf/pncconf/pncconf.glade:60620 -#: src/emc/usr_intf/pncconf/pncconf.glade:61713 -#: src/emc/usr_intf/pncconf/pncconf.glade:62806 -#: src/emc/usr_intf/pncconf/pncconf.glade:63899 -#: src/emc/usr_intf/pncconf/pncconf.glade:65066 -msgid "" -"±\n" -"+\n" -"-\n" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "Y Amplifier Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:79 -msgid "" -"PNCconf encountered an error. The following information may be useful in " -"troubleshooting:\n" -"\n" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "Z Amplifier Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:149 -msgid "Not Used" +#: src/emc/usr_intf/pncconf/pncconf.py:371 +msgid "A Amplifier Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:149 -#: src/emc/usr_intf/pncconf/pncconf.py:150 -msgid "Dummy" +#: src/emc/usr_intf/pncconf/pncconf.py:371 +msgid "Force Pin True" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:150 -msgid "8i20 Servo Drive" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:151 -msgid "POT Output" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:151 -msgid "POT Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:151 -#, fuzzy -msgid "POT Direction" -msgstr "Spindelbroms på" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C1" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:152 -msgid "GPIO Input" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:152 -msgid "GPIO Output" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:152 -msgid "GPIO O Drain" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-A" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-B" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-I" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-M" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "Muxed Encoder 0" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "Muxed Encoder 1" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "muxed enc" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "mux enc mask" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "mux select" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:155 -msgid "Resolver 0 Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:155 -msgid "Resolver 1 Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:155 -msgid "Resolver 2 Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:156 -msgid "Resolver 3 Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:156 -msgid "Resolver 4 Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:156 -msgid "Resolver 5 Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -#, fuzzy -msgid "Step Gen-A" -msgstr "Blockvis körning av program" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A HALL 2" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -msgid "Dir Gen-B" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -msgid "Step/Dir Gen-C" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -msgid "Step/Dir Gen-D" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C2" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:158 -msgid "Step/Dir Gen-E" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:158 -msgid "Step/dir Gen-F" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 -msgid "Pulse Width Gen-P" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 -msgid "Pulse Width Gen-D" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 -msgid "Pulse Width Gen-E" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 -msgid "Pulse Density Gen-P" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 -msgid "Pulse Density Gen-D" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 -msgid "Pulse Density Gen-E" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 -msgid "Up/Down Mode -Up" +#: src/emc/usr_intf/pncconf/pncconf.py:378 +msgid "Unused Output" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 -msgid "Up/Down Mode-Down" +#: src/emc/usr_intf/pncconf/pncconf.py:378 +#, fuzzy +msgid "Coolant" +msgstr "Kylvätska:" + +#: src/emc/usr_intf/pncconf/pncconf.py:379 +msgid "Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 -msgid "Up/Down Mode-Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +msgid "Digital" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 -msgid "Motor Phase A" +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:410 +msgid "X BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 -msgid "Motor Phase B" +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 +msgid "Y BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 -msgid "Motor Phase C" +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 +msgid "Z BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Phase A Not" +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 +msgid "A BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Phase B Not" +#: src/emc/usr_intf/pncconf/pncconf.py:381 +msgid " S BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Phase C Not" +#: src/emc/usr_intf/pncconf/pncconf.py:381 +#: src/emc/usr_intf/pncconf/pncconf.py:412 +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#: src/emc/usr_intf/pncconf/pncconf.py:516 +#: src/emc/usr_intf/pncconf/pncconf.py:519 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.py:528 +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#: src/emc/usr_intf/pncconf/pncconf.py:568 +#: src/emc/usr_intf/pncconf/pncconf.py:580 +msgid "Custom Signals" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 +msgid "X Minimum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Fault" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 +msgid "Y Minimum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:165 -msgid "SMARTSERIAL-P0-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 +msgid "Z Minimum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P0-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 +msgid "A Minimum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P0-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 +msgid "X Maximum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 +msgid "Y Maximum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 +msgid "Z Maximum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 +msgid "A Maximum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 +msgid "X Both Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 +msgid "Y Both Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 +msgid "Z Both Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 +msgid "A Both Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:386 +#: src/emc/usr_intf/pncconf/pncconf.py:477 +msgid "All Limits" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:387 +#, fuzzy +msgid "X Home" +msgstr "Hemmaläge" + +#: src/emc/usr_intf/pncconf/pncconf.py:387 +#, fuzzy +msgid "Y Home" +msgstr "Hemmaläge" + +#: src/emc/usr_intf/pncconf/pncconf.py:387 +#, fuzzy +msgid "Z Home" +msgstr "Hemmaläge" + +#: src/emc/usr_intf/pncconf/pncconf.py:387 +#, fuzzy +msgid "A Home" +msgstr "Hemmaläge" + +#: src/emc/usr_intf/pncconf/pncconf.py:387 +#, fuzzy +msgid "All Home" +msgstr "Hemmaläge" + +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 +msgid "X Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 +msgid "Y Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 +msgid "Z Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 +msgid "A Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 +msgid "X Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 +msgid "Y Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 +msgid "Z Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 +msgid "A Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 +msgid "X Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 +msgid "Y Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 +msgid "Z Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 +msgid "A Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:392 +#, fuzzy +msgid "Joint select A" +msgstr "Flytta vald axel till hemmaläge" + +#: src/emc/usr_intf/pncconf/pncconf.py:392 +#, fuzzy +msgid "Joint select B" +msgstr "Flytta vald axel till hemmaläge" + +#: src/emc/usr_intf/pncconf/pncconf.py:392 +#, fuzzy +msgid "Joint select C" +msgstr "Flytta vald axel till hemmaläge" + +#: src/emc/usr_intf/pncconf/pncconf.py:392 +#, fuzzy +msgid "Joint select D" +msgstr "Flytta vald axel till hemmaläge" + +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #1" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #2" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:420 -msgid "Unused Unused" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr D" msgstr "" -# ***: ../tcl/axis.tcl:1512 -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/pncconf/pncconf.py:393 #, fuzzy -msgid "Machine Is Enabled" -msgstr "Maskin" +msgid "Feed Override incr A" +msgstr "Matnings överjusterning (%): #guessing again" -#: src/emc/usr_intf/pncconf/pncconf.py:442 -msgid "X Amplifier Enable" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +#, fuzzy +msgid "Feed Override incr B" +msgstr "Matnings överjusterning (%): #guessing again" -#: src/emc/usr_intf/pncconf/pncconf.py:442 -msgid "Y Amplifier Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:394 +#, fuzzy +msgid "Feed Override incr C" +msgstr "Matnings överjusterning (%): #guessing again" + +#: src/emc/usr_intf/pncconf/pncconf.py:394 +#, fuzzy +msgid "Feed Override incr D" +msgstr "Matnings överjusterning (%): #guessing again" + +#: src/emc/usr_intf/pncconf/pncconf.py:394 +#, fuzzy +msgid "Spindle Override incr A" +msgstr "Matnings överjusterning (%): #guessing again" + +#: src/emc/usr_intf/pncconf/pncconf.py:394 +#, fuzzy +msgid "Spindle Override incr B" +msgstr "Matnings överjusterning (%): #guessing again" + +#: src/emc/usr_intf/pncconf/pncconf.py:395 +#, fuzzy +msgid "Spindle Override incr C" +msgstr "Matnings överjusterning (%): #guessing again" + +#: src/emc/usr_intf/pncconf/pncconf.py:395 +#, fuzzy +msgid "Spindle Override incr D" +msgstr "Matnings överjusterning (%): #guessing again" + +#: src/emc/usr_intf/pncconf/pncconf.py:395 +msgid "Max Vel Override incr A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:442 -msgid "Z Amplifier Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:395 +msgid "Max Vel Override incr B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:443 -msgid "A Amplifier Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:396 +msgid "Max Vel Override incr C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:443 -msgid "Force Pin True" +#: src/emc/usr_intf/pncconf/pncconf.py:396 +msgid "Max Vel Override incr D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:396 +#, fuzzy +msgid "Feed Override enable" +msgstr "Matnings överjusterning (%): #guessing again" + +#: src/emc/usr_intf/pncconf/pncconf.py:396 +#, fuzzy +msgid "Spindle Override enable" +msgstr "Matnings överjusterning (%): #guessing again" + +#: src/emc/usr_intf/pncconf/pncconf.py:397 +#, fuzzy +msgid "Max Vel Override enable" +msgstr "Matnings överjusterning (%): #guessing again" + +#: src/emc/usr_intf/pncconf/pncconf.py:398 +#, fuzzy +msgid "Manual Spindle CW" +msgstr "Spindel:" + +#: src/emc/usr_intf/pncconf/pncconf.py:398 +#, fuzzy +msgid "Manual Spindle CCW" +msgstr "Spindel:" + +#: src/emc/usr_intf/pncconf/pncconf.py:398 +#, fuzzy +msgid "Manual Spindle Stop" +msgstr "Spindel:" + +#: src/emc/usr_intf/pncconf/pncconf.py:398 +#, fuzzy +msgid "Spindle Up-To-Speed" +msgstr "Spindel:" + +#: src/emc/usr_intf/pncconf/pncconf.py:399 +msgid "Cycle Start" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:399 +msgid "Abort" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X HALL 3" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:399 +#, fuzzy +msgid "Single Step" +msgstr "Spindel:" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 +msgid "Jog X +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 +msgid "Jog X -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 +msgid "Jog Y +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 +msgid "Jog Y -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 +msgid "Jog Z +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 +msgid "Jog Z -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 +msgid "Jog A +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 +msgid "Jog A -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C2" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:407 +#, fuzzy +msgid "Jog button selected +" +msgstr "Flytta vald axel till hemmaläge" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C4" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:407 +#, fuzzy +msgid "Jog button selected -" +msgstr "Flytta vald axel till hemmaläge" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Unused Input" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Limits" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Limts/Home Shared" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z HALL 3" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:409 +#, fuzzy +msgid "Overrides" +msgstr "Ignorera Ändlägen" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:410 +#, fuzzy +msgid "Operation" +msgstr "Okänt fel %s" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C2" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:410 +#, fuzzy +msgid "External Control" +msgstr "Manuell kontroll" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C4" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:410 +#, fuzzy +msgid "Axis rapid" +msgstr "Axel:" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:412 +msgid "S BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:487 +msgid "Unused PWM Gen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A HALL 2" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:487 +#, fuzzy +msgid "X Axis PWM" +msgstr "Axel:" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A HALL 3" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:487 +#, fuzzy +msgid "Y Axis PWM" +msgstr "Axel:" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C1" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#, fuzzy +msgid "Z Axis PWM" +msgstr "Axel:" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C2" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#, fuzzy +msgid "A Axis PWM" +msgstr "Axel:" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +msgid "X Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +msgid "Y Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +msgid "Z Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +msgid "A Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S HALL 3" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +#, fuzzy +msgid "Spindle Encoder" +msgstr "Spindel:" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "X Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "Y Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "Z Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "A Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:450 -msgid "Unused Output" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "Multi Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:450 -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#: src/emc/usr_intf/pncconf/pncconf.py:593 +#: src/emc/usr_intf/pncconf/pncconf.py:514 #, fuzzy -msgid "Spindle" -msgstr "Spindel:" +msgid "Feed Override" +msgstr "Matnings överjusterning (%): #guessing again" -#: src/emc/usr_intf/pncconf/pncconf.py:450 +#: src/emc/usr_intf/pncconf/pncconf.py:514 #, fuzzy -msgid "Coolant" -msgstr "Kylvätska:" +msgid "spindle Override" +msgstr "Matnings överjusterning (%): #guessing again" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -msgid "Control" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:514 +#, fuzzy +msgid "Max Vel Override" +msgstr "Matnings överjusterning (%): #guessing again" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:480 -msgid "Digital" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "Unused Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:481 -msgid "X BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "Axis Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 -msgid "Y BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "MPG Jog Controls" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 -msgid "Z BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "Override MPG control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 -msgid "A BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "Unused Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:453 -msgid " S BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "X Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:453 -#: src/emc/usr_intf/pncconf/pncconf.py:483 -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#: src/emc/usr_intf/pncconf/pncconf.py:585 -#: src/emc/usr_intf/pncconf/pncconf.py:588 -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.py:597 -#: src/emc/usr_intf/pncconf/pncconf.py:614 -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "Custom Signals" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "Y Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 -msgid "X Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "Z Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 -msgid "Y Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:519 +msgid "A Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 -msgid "Z Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:519 +msgid "S Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 -msgid "A Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +msgid "Unused 8I20" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 -msgid "X Maximum Limit" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "X Axis" +msgstr "Axel:" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 -msgid "Y Maximum Limit" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Y Axis" +msgstr "Axel:" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 -msgid "Z Maximum Limit" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Z Axis" +msgstr "Axel:" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 -msgid "A Maximum Limit" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "A Axis" +msgstr "Axel:" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 -msgid "X Both Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:528 +msgid "Unused Analog Output" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 -msgid "Y Both Limit" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:528 +#, fuzzy +msgid "Spindle Output" +msgstr "Spindel:" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 -msgid "Z Both Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:551 +msgid "Unused StepGen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 -msgid "A Both Limit" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:551 +#, fuzzy +msgid "X Axis StepGen" +msgstr "Axel:" -#: src/emc/usr_intf/pncconf/pncconf.py:458 -#: src/emc/usr_intf/pncconf/pncconf.py:546 -msgid "All Limits" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:551 +#, fuzzy +msgid "Y Axis StepGen" +msgstr "Axel:" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:551 #, fuzzy -msgid "X Home" -msgstr "Hemmaläge" +msgid "Z Axis StepGen" +msgstr "Axel:" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:552 #, fuzzy -msgid "Y Home" -msgstr "Hemmaläge" +msgid "A Axis StepGen" +msgstr "Axel:" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:552 #, fuzzy -msgid "Z Home" -msgstr "Hemmaläge" +msgid "Spindle StepGen" +msgstr "Spindel:" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:552 #, fuzzy -msgid "A Home" -msgstr "Hemmaläge" +msgid "X2 Tandem StepGen" +msgstr "Spindel:" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:552 #, fuzzy -msgid "All Home" -msgstr "Hemmaläge" +msgid "Y2 Tandem StepGen" +msgstr "Spindel:" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 -msgid "X Minimum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#, fuzzy +msgid "Z2 Tandem StepGen" +msgstr "Spindel:" + +#: src/emc/usr_intf/pncconf/pncconf.py:553 +msgid "Charge Pump StepGen" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:567 +msgid "Unused TPPWM Gen" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:567 +msgid "X Axis BL Driver" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:567 +msgid "Y Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 -msgid "Y Minimum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:568 +msgid "Z Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 -msgid "Z Minimum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:568 +msgid "A Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 -msgid "A Minimum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:568 +msgid "S Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 -msgid "X Maximum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +#: src/emc/usr_intf/pncconf/pncconf.py:6882 +msgid "Unused Channel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 -msgid "Y Maximum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +msgid "8i20 Amplifier Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 -msgid "Z Maximum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +msgid "7i64 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 -msgid "A Maximum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +msgid "7i69 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 -msgid "X Both Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i70 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 -msgid "Y Both Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i71 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 -msgid "Z Both Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i76 Mode 0 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 -msgid "A Both Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i77 Mode 0 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -#, fuzzy -msgid "Joint select A" -msgstr "Flytta vald axel till hemmaläge" +#: src/emc/usr_intf/pncconf/pncconf.py:578 +msgid "7i73 Mode 1 Pendant Card" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -#, fuzzy -msgid "Joint select B" -msgstr "Flytta vald axel till hemmaläge" +#: src/emc/usr_intf/pncconf/pncconf.py:580 +msgid "Unused Analog In" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:464 +# ***: ../tcl/axis.tcl:1512 +#: src/emc/usr_intf/pncconf/pncconf.py:676 #, fuzzy -msgid "Joint select C" -msgstr "Flytta vald axel till hemmaläge" +msgid "my_LinuxCNC_machine" +msgstr "Maskin" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -#, fuzzy -msgid "Joint select D" -msgstr "Flytta vald axel till hemmaläge" +#: src/emc/usr_intf/pncconf/pncconf.py:939 +#: src/emc/usr_intf/pncconf/pncconf.py:941 +msgid "Enter Address" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr A" +#: src/emc/usr_intf/pncconf/pncconf.py:1290 +msgid "" +"This configuration was saved with an earlier version of pncconf which may be " +"incompatible.\n" +"If it doesn't plainly cause an error, you still may want to save it with " +"another name and check it. Safer to start from scratch.\n" +"If you have a REALLY large config that you wish to convert to this newer " +"version of PNConf - ask on the LinuxCNC forum - it may be possible.." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr B" +#: src/emc/usr_intf/pncconf/pncconf.py:1296 +#, python-format +msgid "File %r was modified since it was written by PNCconf" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr C" +#: src/emc/usr_intf/pncconf/pncconf.py:1300 +msgid "" +"Saving this configuration file will discard configuration changes made " +"outside PNCconf." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr D" +#: src/emc/usr_intf/pncconf/pncconf.py:1327 +#: src/emc/usr_intf/pncconf/pncconf.py:2421 +#, python-format +msgid "# Generated by PNCconf at %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -#, fuzzy -msgid "Feed Override incr A" -msgstr "Matnings överjusterning (%): #guessing again" +#: src/emc/usr_intf/pncconf/pncconf.py:1329 +#: src/emc/usr_intf/pncconf/pncconf.py:2423 +msgid "# overwritten when you run PNCconf again" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -#, fuzzy -msgid "Feed Override incr B" -msgstr "Matnings överjusterning (%): #guessing again" +#: src/emc/usr_intf/pncconf/pncconf.py:2134 +msgid "# Use ACTUAL spindle velocity from spindle encoder" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#, fuzzy -msgid "Feed Override incr C" -msgstr "Matnings överjusterning (%): #guessing again" +#: src/emc/usr_intf/pncconf/pncconf.py:2135 +msgid "# spindle-velocity bounces around so we filter it with lowpass" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#, fuzzy -msgid "Feed Override incr D" -msgstr "Matnings överjusterning (%): #guessing again" +#: src/emc/usr_intf/pncconf/pncconf.py:2136 +msgid "" +"# spindle-velocity is signed so we use absolute component to remove sign" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#, fuzzy -msgid "Spindle Override incr A" -msgstr "Matnings överjusterning (%): #guessing again" +#: src/emc/usr_intf/pncconf/pncconf.py:2137 +msgid "# ACTUAL velocity is in RPS not RPM so we scale it." +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:466 -#, fuzzy -msgid "Spindle Override incr B" -msgstr "Matnings överjusterning (%): #guessing again" +#: src/emc/usr_intf/pncconf/pncconf.py:2821 +msgid "# connect miscellaneous signals" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -#, fuzzy -msgid "Spindle Override incr C" -msgstr "Matnings överjusterning (%): #guessing again" +#: src/emc/usr_intf/pncconf/pncconf.py:2824 +msgid "# ---HALUI signals---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -#, fuzzy -msgid "Spindle Override incr D" -msgstr "Matnings överjusterning (%): #guessing again" +#: src/emc/usr_intf/pncconf/pncconf.py:2843 +msgid "# ---charge pump signals---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -msgid "Max Vel Override incr A" +#: src/emc/usr_intf/pncconf/pncconf.py:2847 +msgid "# ---coolant signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -msgid "Max Vel Override incr B" +#: src/emc/usr_intf/pncconf/pncconf.py:2852 +msgid "# ---probe signal---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:468 -msgid "Max Vel Override incr C" +#: src/emc/usr_intf/pncconf/pncconf.py:2857 +msgid "# ---jog button signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:468 -msgid "Max Vel Override incr D" +#: src/emc/usr_intf/pncconf/pncconf.py:2862 +msgid "# ---USB device jog button signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#, fuzzy -msgid "Manual Spindle CW" -msgstr "Spindel:" +#: src/emc/usr_intf/pncconf/pncconf.py:2903 +#: src/emc/usr_intf/pncconf/pncconf.py:2929 +msgid "# ---mpg signals---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#, fuzzy -msgid "Manual Spindle CCW" -msgstr "Spindel:" +#: src/emc/usr_intf/pncconf/pncconf.py:3111 +msgid "# ---motion control signals---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#, fuzzy -msgid "Manual Spindle Stop" -msgstr "Spindel:" +#: src/emc/usr_intf/pncconf/pncconf.py:3116 +msgid "# ---digital in / out signals---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:469 -#, fuzzy -msgid "Spindle Up-To-Speed" -msgstr "Spindel:" +#: src/emc/usr_intf/pncconf/pncconf.py:3126 +msgid "# ---estop signals---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:470 -msgid "Cycle Start" +#: src/emc/usr_intf/pncconf/pncconf.py:3145 +msgid "# ---manual tool change signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:470 -msgid "Abort" +#: src/emc/usr_intf/pncconf/pncconf.py:3154 +msgid "# ---toolchange signals for custom tool changer---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:470 -#, fuzzy -msgid "Single Step" -msgstr "Spindel:" +#: src/emc/usr_intf/pncconf/pncconf.py:3176 +msgid "# --- Classicladder signals for Z axis Auto touch off program---" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 -msgid "Jog X +" +#: src/emc/usr_intf/pncconf/pncconf.py:3195 +msgid "# These files are loaded post gladeVCP, in the order they appear" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 -msgid "Jog X -" +#: src/emc/usr_intf/pncconf/pncconf.py:3209 +#: src/emc/usr_intf/pncconf/pncconf.py:3276 +msgid "# _DO NOT_ include your HAL commands here." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 -msgid "Jog Y +" +#: src/emc/usr_intf/pncconf/pncconf.py:3210 +msgid "# Put custom HAL commands in custom_gvcp.hal" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 -msgid "Jog Y -" +#: src/emc/usr_intf/pncconf/pncconf.py:3213 +msgid "# **** Setup of spindle speed display using gladevcp ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 -msgid "Jog Z +" +#: src/emc/usr_intf/pncconf/pncconf.py:3222 +msgid "# **** Setup GLADE MDI buttons ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 -msgid "Jog Z -" +#: src/emc/usr_intf/pncconf/pncconf.py:3235 +msgid "" +"# **** Z axis touch-off button - requires the touch-off classicladder " +"program ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 -msgid "Jog A +" +#: src/emc/usr_intf/pncconf/pncconf.py:3265 +msgid "# These files are loaded post GUI, in the order they appear" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 -msgid "Jog A -" +#: src/emc/usr_intf/pncconf/pncconf.py:3277 +msgid "# Put custom HAL commands in custom_postgui.hal" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:478 -#, fuzzy -msgid "Jog button selected +" -msgstr "Flytta vald axel till hemmaläge" +#: src/emc/usr_intf/pncconf/pncconf.py:3278 +msgid "# The commands in this file are run after the GUI loads" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:478 -#, fuzzy -msgid "Jog button selected -" -msgstr "Flytta vald axel till hemmaläge" +#: src/emc/usr_intf/pncconf/pncconf.py:3288 +msgid "# **** Setup of spindle speed display using pyvcp -END ****" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:479 -msgid "Unused Input" +#: src/emc/usr_intf/pncconf/pncconf.py:3300 +msgid "# This file will not be overwritten when you run PNCconf again" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:479 -msgid "Limits" +#: src/emc/usr_intf/pncconf/pncconf.py:3306 +msgid "# These commands are required for Touchy GUI" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:479 -msgid "Limts/Home Shared" +#: src/emc/usr_intf/pncconf/pncconf.py:3358 +#, python-format +msgid "Generated by PNCconf at %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#, fuzzy -msgid "Axis Selection" -msgstr "Hal _configuration" +#: src/emc/usr_intf/pncconf/pncconf.py:3370 +msgid "configures LinuxCNC as:\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#, fuzzy -msgid "Overrides" -msgstr "Ignorera Ändlägen" +#: src/emc/usr_intf/pncconf/pncconf.py:3371 +msgid "type CNC\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:481 -#, fuzzy -msgid "Operation" -msgstr "Okänt fel %s" +#: src/emc/usr_intf/pncconf/pncconf.py:3372 +msgid "will be used as the frontend display" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:481 -#, fuzzy -msgid "External Control" -msgstr "Manuell kontroll" +#: src/emc/usr_intf/pncconf/pncconf.py:3381 +msgid " connector" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:481 -#, fuzzy -msgid "Axis rapid" -msgstr "Axel:" +#: src/emc/usr_intf/pncconf/pncconf.py:3393 +msgid "invrt" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:483 -msgid "S BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:3402 +#, python-format +msgid "%(name)s Parport" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:556 -msgid "Unused PWM Gen" +#: src/emc/usr_intf/pncconf/pncconf.py:3407 +#: src/emc/usr_intf/pncconf/pncconf.py:3415 +msgid "-> inverted" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:556 -#, fuzzy -msgid "X Axis PWM" -msgstr "Axel:" +#: src/emc/usr_intf/pncconf/pncconf.py:3409 +#, python-format +msgid "pin# %(pinnum)d is connected to input signal:'%(data)s' %(mesag)s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:556 -#, fuzzy -msgid "Y Axis PWM" -msgstr "Axel:" +#: src/emc/usr_intf/pncconf/pncconf.py:3417 +#, python-format +msgid "pin# %(pinnum)d is connected to output signal:'%(data)s' %(mesag)s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#, fuzzy -msgid "Z Axis PWM" -msgstr "Axel:" +#: src/emc/usr_intf/pncconf/pncconf.py:3595 +msgid "Desktop Launcher for LinuxCNC config made by PNCconf" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:3856 +#, fuzzy, python-format +msgid "%s Axis Configuration" +msgstr "Hal _configuration" -#: src/emc/usr_intf/pncconf/pncconf.py:557 +#: src/emc/usr_intf/pncconf/pncconf.py:3881 #, fuzzy -msgid "A Axis PWM" -msgstr "Axel:" +msgid "Spindle Motor/Encoder Configuration" +msgstr "Hal _configuration" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -msgid "X Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:3883 +#, python-format +msgid "%s Axis Motor/Encoder Configuration" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -msgid "Y Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:3912 +#, python-format +msgid "%s Parallel Port Setup" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -msgid "Z Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:3936 +#, python-format +msgid "%s I/0 Setup" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -msgid "A Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:4162 +msgid "Quit PNCconfig and discard changes?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -#, fuzzy -msgid "Spindle Encoder" -msgstr "Spindel:" - -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "X Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:4203 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Help Pages" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "Y Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:4208 +msgid "Help page is unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "Z Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:4218 +msgid "" +"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " +"of external hardware is unavailable." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "A Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:4223 +#, python-format +msgid "" +"You are using a realtime version of LinuxCNC but didn't load a realtime " +"kernel so testing / tuning of external hardware is unavailable.\n" +" This is probably because you updated the OS and it doesn't load the RTAI " +"kernel anymore\n" +" You are using the %(actual)s kernel instead of %(needed)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "Multi Hand Wheel" +#: src/emc/usr_intf/pncconf/pncconf.py:4256 +msgid "LinuxCNC 'PNCconf' configuration files" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:583 -#, fuzzy -msgid "Feed Override" -msgstr "Matnings överjusterning (%): #guessing again" +#: src/emc/usr_intf/pncconf/pncconf.py:4286 +msgid "" +"It seems data in this file is from too old of a version of PNCConf to " +"continue.\n" +"." +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:583 -#, fuzzy -msgid "spindle Override" -msgstr "Matnings överjusterning (%): #guessing again" +#: src/emc/usr_intf/pncconf/pncconf.py:4293 +#: src/emc/usr_intf/pncconf/pncconf.py:4391 +#, python-format +msgid "Point and click configuration - %s.pncconf " +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:583 -#, fuzzy -msgid "Max Vel Override" -msgstr "Matnings överjusterning (%): #guessing again" +#: src/emc/usr_intf/pncconf/pncconf.py:4413 +msgid "" +"You need to designate a parport and/or mesa I/O device before continuing." +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "Unused Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:4481 +msgid "" +"You Have choosen to re-edit the current config, so you can not go to the new/" +"modify page.\n" +" Quit and reload PNCconf if you wish to build a new config." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "Axis Encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:4485 +msgid "" +"If you can not go to the new/modify page your current data will be lost.\n" +"Ok to reset data and start a new configuration?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "MPG Jog Controls" +#: src/emc/usr_intf/pncconf/pncconf.py:4811 +msgid "USB device Info Search" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "Override MPG control" +#: src/emc/usr_intf/pncconf/pncconf.py:4825 +msgid "USB device page is unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "Unused Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:4890 +msgid "Pin names are unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "X Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:4912 +msgid "Device names are unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "Y Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:4915 +msgid "No Pncconf made device rules were found\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "Z Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:5041 +msgid "" +"OK to replace existing glade panel ?\n" +"It will be renamed and added to 'backups' folder.\n" +" Clicking 'existing custom program' will avoid this warning, but if you " +"change related options later -such as spindle feedback- the HAL connection " +"will not update" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:588 -msgid "A Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:5047 +msgid "" +"OK to replace existing custom pyvcp panel?\n" +"Existing pyvcp-panel.xml will be renamed and added to 'backups' folder\n" +"Clicking 'existing custom program' will aviod this warning. " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:588 -msgid "S Resolver" +#: src/emc/usr_intf/pncconf/pncconf.py:5493 +msgid "" +"You need to configure the mesa0 page.\n" +" Choose the board type, firmware, component amounts and press 'Accept " +"component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -msgid "Unused 8I20" +#: src/emc/usr_intf/pncconf/pncconf.py:5497 +msgid "" +"The chosen Mesa0 board is different from the current displayed.\n" +"please press 'Accept component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:61457 -#, fuzzy -msgid "X Axis" -msgstr "Axel:" +#: src/emc/usr_intf/pncconf/pncconf.py:5540 +msgid "" +"You need to configure the mesa1 page.\n" +" Choose the board type, firmware, component amounts and press 'Accept " +"component changes' button'" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:62549 -#, fuzzy -msgid "Y Axis" -msgstr "Axel:" +#: src/emc/usr_intf/pncconf/pncconf.py:5544 +msgid "" +"The chosen Mesa1 board is different from the current displayed.\n" +"please press 'Accept component changes' button'" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:63642 -#, fuzzy -msgid "Z Axis" -msgstr "Axel:" +#: src/emc/usr_intf/pncconf/pncconf.py:5558 +msgid "" +"Do to technical reasons this test panel can be loaded only once without " +"reloading pncconf.You also will not be able to do any other testing untill " +"you reload pncconf and quite possibly open a terminal and type 'halrun -U' I " +"hesitate to even allow it's use but at times it's very useful.\n" +"Do you wish to continue the test?" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.glade:64735 -#, fuzzy -msgid "A Axis" -msgstr "Axel:" +#: src/emc/usr_intf/pncconf/pncconf.py:7042 +msgid "First Parallel Port set for OUTPUT" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:597 -msgid "Unused Analog Output" +#: src/emc/usr_intf/pncconf/pncconf.py:7044 +msgid "First Parallel Port set for INPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:597 -#, fuzzy -msgid "Spindle Output" -msgstr "Spindel:" +#: src/emc/usr_intf/pncconf/pncconf.py:7068 +msgid "Second Parallel Port set for OUTPUT" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:613 -msgid "Unused StepGen" +#: src/emc/usr_intf/pncconf/pncconf.py:7070 +msgid "Second Parallel Port set for INPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:613 -#, fuzzy -msgid "X Axis StepGen" -msgstr "Axel:" +#: src/emc/usr_intf/pncconf/pncconf.py:7082 +msgid "Third Parallel Port set for OUTPUT" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:613 -#, fuzzy -msgid "Y Axis StepGen" -msgstr "Axel:" +#: src/emc/usr_intf/pncconf/pncconf.py:7084 +msgid "Third Parallel Port set for INPUT" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:613 -#, fuzzy -msgid "Z Axis StepGen" -msgstr "Axel:" +#: src/emc/usr_intf/pncconf/pncconf.py:7210 +msgid "You can not have both steppers and pwm signals for spindle control\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:614 -#, fuzzy -msgid "A Axis StepGen" -msgstr "Axel:" +#: src/emc/usr_intf/pncconf/pncconf.py:7214 +#, python-format +msgid "You forgot to designate a stepper or pwm signal for axis %s\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:614 -#, fuzzy -msgid "Spindle StepGen" -msgstr "Spindel:" +#: src/emc/usr_intf/pncconf/pncconf.py:7217 +#, python-format +msgid "You forgot to designate an encoder /resolver signal for axis %s servo\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:628 -msgid "Unused TPPWM Gen" +#: src/emc/usr_intf/pncconf/pncconf.py:7220 +#, python-format +msgid "You forgot to designate a pwm signal or stepper signal for axis %s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:628 -msgid "X Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:7223 +#, python-format +msgid "You can not have both steppers and pwm signals for axis %s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:628 -msgid "Y Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:7226 +#, python-format +msgid "" +"If using a tandem axis stepper, you must select a master stepgen for axis " +"%s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "Z Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:7235 +msgid "Touchy require an external cycle start signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "A Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:7238 +msgid "Touchy require an external abort signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "S Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.py:7241 +msgid "Touchy require an external single-step signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -#: src/emc/usr_intf/pncconf/pncconf.py:6557 -msgid "Unused Channel" +#: src/emc/usr_intf/pncconf/pncconf.py:7244 +msgid "" +"Touchy require an external multi handwheel MPG encoder signal on the mesa " +"page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -msgid "8i20 Amplifier Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7247 +msgid "" +"Touchy require 'external mpg jogging' to be selected on the external control " +"page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -msgid "7i64 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7250 +msgid "" +"Touchy require the external mpg to be in 'shared mpg' mode on the external " +"controls page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -msgid "7i69 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7253 +msgid "" +"Touchy require selectable increments to be unchecked on the external " +"controls page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 -msgid "7i70 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7257 +msgid "" +"The 7i29 daughter board requires PWM type generators and a PWM base " +"frequency of 20 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 -msgid "7i71 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7260 +msgid "" +"The 7i30 daughter board requires PWM type generators and a PWM base " +"frequency of 20 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 -msgid "7i76 Mode 0 I/O Card" +#: src/emc/usr_intf/pncconf/pncconf.py:7263 +msgid "" +"The 7i33 daughter board requires PDM type generators and a PDM base " +"frequency of 6 Mhz\n" msgstr "" -# ***: ../tcl/axis.tcl:1512 -#: src/emc/usr_intf/pncconf/pncconf.py:722 -#, fuzzy -msgid "my_LinuxCNC_machine" -msgstr "Maskin" +#: src/emc/usr_intf/pncconf/pncconf.py:7266 +msgid "" +"The 7i40 daughter board requires PWM type generators and a PWM base " +"frequency of 50 khz\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1328 +#: src/emc/usr_intf/pncconf/pncconf.py:7269 msgid "" -"This configuration was saved with an earlier version of pncconf which may be " -"incompatible.\n" -"If it doesn't plainly cause an error, you still may want to save it with " -"another name and check it. Safer to start from scratch.\n" -"If you have a REALLY large config that you wish to convert to this newer " -"version of PNConf - ask on the LinuxCNC forum - it may be possible.." +"The 7i48 daughter board requires UDM type generators and a PWM base " +"frequency of 24 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1334 -#, python-format -msgid "File %r was modified since it was written by PNCconf" +#: src/emc/usr_intf/pncconf/pncconf.py:7494 +msgid "Gearbox Reduction Ratio" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1338 -msgid "" -"Saving this configuration file will discard configuration changes made " -"outside PNCconf." +#: src/emc/usr_intf/pncconf/pncconf.py:7497 +msgid "Reduction Ratio" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1365 -#: src/emc/usr_intf/pncconf/pncconf.py:2368 -#, python-format -msgid "# Generated by PNCconf at %s" +#: src/emc/usr_intf/pncconf/pncconf.py:7500 +msgid "Leadscrew Pitch" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1367 -#: src/emc/usr_intf/pncconf/pncconf.py:2370 -msgid "# overwritten when you run PNCconf again" +#: src/emc/usr_intf/pncconf/pncconf.py:7503 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Leadscrew TPI" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2070 -msgid "# Use ACTUAL spindle velocity from spindle encoder" +#: src/emc/usr_intf/pncconf/pncconf.py:7507 +#: src/emc/usr_intf/pncconf/pncconf.py:7508 +msgid "(" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2071 -msgid "# spindle-velocity bounces around so we filter it with lowpass" +#: src/emc/usr_intf/pncconf/pncconf.py:7509 +#: src/emc/usr_intf/pncconf/pncconf.py:7519 +#: src/emc/usr_intf/pncconf/pncconf.py:7520 +#: src/emc/usr_intf/pncconf/pncconf.py:7521 +msgid " / min" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:7510 +msgid " / sec²" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2072 -msgid "" -"# spindle-velocity is signed so we use absolute component to remove sign" +#: src/emc/usr_intf/pncconf/pncconf.py:7513 +#, fuzzy +msgid " / Step" +msgstr "Stanna #Guessing again" + +#: src/emc/usr_intf/pncconf/pncconf.py:7514 +#, fuzzy +msgid "Steps / " +msgstr "Stanna #Guessing again" + +#: src/emc/usr_intf/pncconf/pncconf.py:7516 +msgid " / encoder pulse" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2073 -msgid "# ACTUAL velocity is in RPS not RPM so we scale it." +#: src/emc/usr_intf/pncconf/pncconf.py:7517 +msgid "Encoder pulses / " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2082 -msgid "" -"# Use COMMANDED spindle velocity from LinuxCNC because no spindle encoder " -"was specified" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:7525 +#, fuzzy +msgid "Resolver Scale:" +msgstr "Blockvis körning av program" -#: src/emc/usr_intf/pncconf/pncconf.py:2083 -msgid "" -"# COMMANDED velocity is signed so we use absolute component to remove sign" +#: src/emc/usr_intf/pncconf/pncconf.py:7826 +msgid "Axis Scale Calculation" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2727 -msgid "# connect miscellaneous signals" +#: src/emc/usr_intf/pncconf/pncconf.py:8133 +msgid "You need to designate an E-stop input pin for this ladder program." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2730 -msgid "# ---HALUI signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:8145 +msgid "You need to designate a probe input pin for this ladder program." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2749 -msgid "# ---charge pump signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:8156 +msgid "" +"OK to replace existing custom ladder program?\n" +"Existing Custom.clp will be renamed custom_backup.clp.\n" +"Any existing file named -custom_backup.clp- will be lost.Selecting 'existing " +"ladder program' will avoid this warning" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2753 -msgid "# ---coolant signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:8374 +msgid "Do you wish to continue to edit this configuration." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2758 -msgid "# ---probe signal---" +#: src/emc/usr_intf/pncconf/pncconf.py:8413 +msgid "PCI search page is unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2763 -msgid "# ---jog button signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:8532 +msgid "" +"You specified there is an existing gladefile, But there is not one in the " +"machine-named folder.." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2768 -msgid "# ---USB device jog button signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:8856 +msgid "Servo tuning is not avaiable in PNCconf yet\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2803 -#: src/emc/usr_intf/pncconf/pncconf.py:2825 -msgid "# ---mpg signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:8861 +msgid "degrees" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2971 -msgid "# ---motion control signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:8862 +msgid "degrees / minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2976 -msgid "# ---digital in / out signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:8863 +msgid "degrees / second²" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2986 -msgid "# ---estop signals---" -msgstr "" +# ***: ../tcl/axis.tcl:1514 +#: src/emc/usr_intf/pncconf/pncconf.py:8865 +#, fuzzy +msgid "revolutions" +msgstr "Position:" -#: src/emc/usr_intf/pncconf/pncconf.py:3005 -msgid "# ---manual tool change signals---" +#: src/emc/usr_intf/pncconf/pncconf.py:8866 +msgid "rpm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3014 -msgid "# ---toolchange signals for custom tool changer---" +#: src/emc/usr_intf/pncconf/pncconf.py:8867 +msgid "revs / second²" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3036 -msgid "# --- Classicladder signals for Z axis Auto touch off program---" +#: src/emc/usr_intf/pncconf/pncconf.py:8870 +#: src/emc/usr_intf/pncconf/pncconf.glade:65184 +#: src/emc/usr_intf/pncconf/pncconf.glade:65281 +#: src/emc/usr_intf/pncconf/pncconf.glade:65465 +msgid "mm / minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3055 -msgid "# These files are loaded post gladeVCP, in the order they appear" +#: src/emc/usr_intf/pncconf/pncconf.py:8871 +msgid "mm / second²" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3069 -#: src/emc/usr_intf/pncconf/pncconf.py:3136 -msgid "# _DO NOT_ include your HAL commands here." +#: src/emc/usr_intf/pncconf/pncconf.py:8874 +msgid "inches / minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3070 -msgid "# Put custom HAL commands in custom_gvcp.hal" +#: src/emc/usr_intf/pncconf/pncconf.py:8875 +msgid "inches / second²" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3073 -msgid "# **** Setup of spindle speed display using gladevcp ****" +#: src/emc/usr_intf/pncconf/pncconf.py:9031 +#, python-format +msgid "%s Axis Tune" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3082 -msgid "# **** Setup GLADE MDI buttons ****" +#: src/emc/usr_intf/pncconf/pncconf.py:9195 +msgid "" +" You must designate a ENCODER / RESOLVER signal and an ANALOG SPINDLE signal " +"for this axis test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3095 +#: src/emc/usr_intf/pncconf/pncconf.py:9199 msgid "" -"# **** Z axis touch-off button - requires the touch-off classicladder " -"program ****" +" You must designate a ENCODER / RESOLVER signal and a PWM signal for this " +"axis test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3125 -msgid "# These files are loaded post GUI, in the order they appear" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:8 +#, fuzzy +msgid "LinuxCNC Point And Click Configuration" +msgstr "Hal _configuration" -#: src/emc/usr_intf/pncconf/pncconf.py:3137 -msgid "# Put custom HAL commands in custom_postgui.hal" +#: src/emc/usr_intf/pncconf/pncconf.glade:23 +msgid "LinuxCNC Configuration Wizard Beta 1 Version" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3138 -msgid "# The commands in this file are run after the GUI loads" +#: src/emc/usr_intf/pncconf/pncconf.glade:24 +msgid "" +"\tThis program creates configuration \n" +" files for \"Closed Loop Servo\" \n" +"\t \t and hardware stepper\n" +" \tmachines" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3148 -msgid "# **** Setup of spindle speed display using pyvcp -END ****" +#: src/emc/usr_intf/pncconf/pncconf.glade:34 +msgid "Create or Edit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3160 -msgid "# This file will not be overwritten when you run PNCconf again" +#: src/emc/usr_intf/pncconf/pncconf.glade:66 +msgid "Create a desktop launcher to start LinuxCNC with this configuration." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3166 -msgid "# These commands are required for Touchy GUI" +#: src/emc/usr_intf/pncconf/pncconf.glade:83 +msgid "Create a desktop shortcut (symlink) to configuration files." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3218 -#, python-format -msgid "Generated by PNCconf at %s" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:148 +#, fuzzy +msgid "Create a new configuration" +msgstr "Hal _configuration" -#: src/emc/usr_intf/pncconf/pncconf.py:3230 -msgid "configures LinuxCNC as:\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:175 +msgid "Basic machine information" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3231 -msgid "type CNC\n" -msgstr "" +# ***: ../tcl/axis.tcl:1512 +#: src/emc/usr_intf/pncconf/pncconf.glade:214 +#, fuzzy +msgid "Machine Name:" +msgstr "Maskin" -#: src/emc/usr_intf/pncconf/pncconf.py:3232 -msgid "will be used as the frontend display" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:280 +#, fuzzy +msgid "Axis configuration:" +msgstr "Hal _configuration" -#: src/emc/usr_intf/pncconf/pncconf.py:3241 -msgid " connector" +#: src/emc/usr_intf/pncconf/pncconf.glade:295 +msgid "" +"XYZ\n" +"XYZA\n" +"XZ (Lathe)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3253 -msgid "invrt" -msgstr "" +# ***: ../tcl/axis.tcl:1512 +#: src/emc/usr_intf/pncconf/pncconf.glade:322 +#, fuzzy +msgid "Machine units:" +msgstr "Maskin" -#: src/emc/usr_intf/pncconf/pncconf.py:3262 -#, python-format -msgid "%(name)s Parport" +#: src/emc/usr_intf/pncconf/pncconf.glade:337 +msgid "" +"Inch\n" +"Millimeter" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3267 -#: src/emc/usr_intf/pncconf/pncconf.py:3275 -msgid "-> inverted" +#: src/emc/usr_intf/pncconf/pncconf.glade:363 +msgid "Machine Basics" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3269 -#, python-format -msgid "pin# %(pinnum)d is connected to input signal:'%(data)s' %(mesag)s" +#: src/emc/usr_intf/pncconf/pncconf.glade:416 +msgid "Actual Servo Period: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3277 -#, python-format -msgid "pin# %(pinnum)d is connected to output signal:'%(data)s' %(mesag)s" +#: src/emc/usr_intf/pncconf/pncconf.glade:475 +msgid "Recommend servo period: 1000000" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3455 -msgid "Desktop Launcher for LinuxCNC config made by PNCconf" +#: src/emc/usr_intf/pncconf/pncconf.glade:494 +msgid "" +" Test Base\n" +"Period Jitter " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3725 -#, fuzzy -msgid "Spindle Motor/Encoder Configuration" -msgstr "Hal _configuration" - -#: src/emc/usr_intf/pncconf/pncconf.py:3727 -#, python-format -msgid "%s Axis Motor/Encoder Configuration" +#: src/emc/usr_intf/pncconf/pncconf.glade:519 +msgid "Computer Response Time" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3756 -#, python-format -msgid "%s Parallel Port Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:561 +msgid "Mesa0 PCI / Parport Card:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3780 -#, python-format -msgid "%s I/0 Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:571 +msgid "Mesa1 PCI / Parport Card:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4001 -msgid "Quit PNCconfig and discard changes?" +#: src/emc/usr_intf/pncconf/pncconf.glade:584 +msgid "First Parport Address:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4042 -#: src/emc/usr_intf/pncconf/pncconf.glade:65849 -msgid "Help Pages" +#: src/emc/usr_intf/pncconf/pncconf.glade:597 +msgid "Second Parport Address:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4047 -msgid "Help page is unavailable\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:612 +msgid "Third Parport Address:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4054 +#: src/emc/usr_intf/pncconf/pncconf.glade:635 +#: src/emc/usr_intf/pncconf/pncconf.glade:643 msgid "" -"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " -"of external hardware is unavailable." +"5i20\n" +"5i23\n" +"5i22" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4059 -#, python-format +#: src/emc/usr_intf/pncconf/pncconf.glade:716 +#: src/emc/usr_intf/pncconf/pncconf.glade:728 +#: src/emc/usr_intf/pncconf/pncconf.glade:741 msgid "" -"You are using a realtime version of LinuxCNC but didn't load a realtime " -"kernel so testing / tuning of external hardware is unavailable.\n" -" This is probably because you updated the OS and it doesn't load the RTAI " -"kernel anymore\n" -" You are using the %(actual)s kernel instead of %(needed)s" +"In\n" +"Out" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4079 -#, python-format +#: src/emc/usr_intf/pncconf/pncconf.glade:804 msgid "" -"You are have no hostmot2 firmware downloaded in folder:\n" -"%s\n" -"PNCconf will use sample firmware data\n" -"live testing will not be possible" +"Add-on PCI\n" +" Parport\n" +" Address \n" +" Search" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4093 -msgid "LinuxCNC 'PNCconf' configuration files" +#: src/emc/usr_intf/pncconf/pncconf.glade:829 +msgid "I/O Control Ports/ Boards" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4123 -msgid "" -"It seems data in this file is from too old of a version of PNCConf to " -"continue.\n" -"." +#: src/emc/usr_intf/pncconf/pncconf.glade:878 +#, fuzzy +msgid "Axis" +msgstr "Axel:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:893 +msgid "TKLinuxCNC" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4130 -#: src/emc/usr_intf/pncconf/pncconf.py:4228 -#, python-format -msgid "Point and click configuration - %s.pncconf " +#: src/emc/usr_intf/pncconf/pncconf.glade:907 +msgid "Mini" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4250 -msgid "" -"You need to designate a parport and/or mesa I/O device before continuing." +#: src/emc/usr_intf/pncconf/pncconf.glade:921 +#: src/emc/usr_intf/pncconf/pncconf.glade:6656 +msgid "Touchy" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4309 -msgid "" -"You Have choosen to re-edit the current config, so you can not go to the new/" -"modify page.\n" -" Quit and reload PNCconf if you wish to build a new config." +#: src/emc/usr_intf/pncconf/pncconf.glade:938 +msgid "GUI frontend list" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4313 -msgid "" -"If you can not go to the new/modify page your current data will be lost.\n" -"Ok to reset data and start a new configuration?" +#: src/emc/usr_intf/pncconf/pncconf.glade:973 +#, fuzzy +msgid "External Controls" +msgstr "Manuell kontroll" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1014 +msgid "Add device rule" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4594 -msgid "USB device Info Search" +#: src/emc/usr_intf/pncconf/pncconf.glade:1027 +msgid "Test device" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4608 -msgid "USB device page is unavailable\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1041 +msgid "Search for device rules" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4673 -msgid "Pin names are unavailable\n" +# ***: ../tcl/axis.tcl:1512 +#: src/emc/usr_intf/pncconf/pncconf.glade:1062 +#, fuzzy +msgid "Device Name:" +msgstr "Maskin" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1125 +msgid "A +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4695 -msgid "Device names are unavailable\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1135 +msgid "A -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4698 -msgid "No Pncconf made device rules were found\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1169 +#: src/emc/usr_intf/pncconf/pncconf.glade:1181 +#: src/emc/usr_intf/pncconf/pncconf.glade:1191 +#: src/emc/usr_intf/pncconf/pncconf.glade:1246 +#: src/emc/usr_intf/pncconf/pncconf.glade:1759 +msgid "mm/min " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4822 -msgid "" -"OK to replace existing glade panel ?\n" -"It will be renamed and added to 'backups' folder.\n" -" Clicking 'existing custom program' will aviod this warning. " +#: src/emc/usr_intf/pncconf/pncconf.glade:1269 +msgid " ab)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4827 -msgid "" -"OK to replace existing custom pyvcp panel?\n" -"Existing pyvcp-panel.xml will be renamed and added to 'backups' folder\n" -"Clicking 'existing custom program' will aviod this warning. " +#: src/emc/usr_intf/pncconf/pncconf.glade:1282 +#: src/emc/usr_intf/pncconf/pncconf.glade:2493 +#: src/emc/usr_intf/pncconf/pncconf.glade:2927 +#: src/emc/usr_intf/pncconf/pncconf.glade:3808 +#: src/emc/usr_intf/pncconf/pncconf.glade:4689 +msgid " b)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5250 -msgid "" -"You need to configure the mesa0 page.\n" -" Choose the board type, firmware, component amounts and press 'Accept " -"component changes' button'" +#: src/emc/usr_intf/pncconf/pncconf.glade:1293 +#: src/emc/usr_intf/pncconf/pncconf.glade:2482 +#: src/emc/usr_intf/pncconf/pncconf.glade:2916 +#: src/emc/usr_intf/pncconf/pncconf.glade:3797 +#: src/emc/usr_intf/pncconf/pncconf.glade:4678 +msgid " a)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5254 -msgid "" -"The chosen Mesa0 board is different from the current displayed.\n" -"please press 'Accept component changes' button'" +#: src/emc/usr_intf/pncconf/pncconf.glade:1305 +#: src/emc/usr_intf/pncconf/pncconf.glade:2385 +#: src/emc/usr_intf/pncconf/pncconf.glade:2867 +#: src/emc/usr_intf/pncconf/pncconf.glade:3748 +#: src/emc/usr_intf/pncconf/pncconf.glade:4629 +msgid "default" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1336 +#: src/emc/usr_intf/pncconf/pncconf.glade:1476 +#, fuzzy +msgid "Jog Speed select A" +msgstr "Flytta vald axel till hemmaläge" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1348 +msgid "X +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5297 -msgid "" -"You need to configure the mesa1 page.\n" -" Choose the board type, firmware, component amounts and press 'Accept " -"component changes' button'" +#: src/emc/usr_intf/pncconf/pncconf.glade:1354 +msgid "Y +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5301 -msgid "" -"The chosen Mesa1 board is different from the current displayed.\n" -"please press 'Accept component changes' button'" +#: src/emc/usr_intf/pncconf/pncconf.glade:1364 +msgid "Z +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5315 -msgid "" -"Do to technical reasons this test panel can be loaded only once without " -"reloading pncconf.You also will not be able to do any other testing untill " -"you reload pncconf and quite possibly open a terminal and type 'halrun -U' I " -"hesitate to even allow it's use but at times it's very useful.\n" -"Do you wish to continue the test?" +#: src/emc/usr_intf/pncconf/pncconf.glade:1374 +msgid "X -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6699 -msgid "First Parallel Port set for OUTPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:1384 +msgid "Y -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6701 -msgid "First Parallel Port set for INPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:1396 +msgid "Z -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6725 -msgid "Second Parallel Port set for OUTPUT" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1500 +#, fuzzy +msgid "Digital Control" +msgstr "Manuell kontroll" -#: src/emc/usr_intf/pncconf/pncconf.py:6727 -msgid "Second Parallel Port set for INPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:1593 +#: src/emc/usr_intf/gscreen/gscreen.glade:502 +msgid "A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6739 -msgid "Third Parallel Port set for OUTPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:1603 +#: src/emc/usr_intf/gscreen/gscreen.glade:374 +msgid "Z" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6741 -msgid "Third Parallel Port set for INPUT" +#: src/emc/usr_intf/pncconf/pncconf.glade:1613 +#: src/emc/usr_intf/pncconf/pncconf.glade:6134 +#: src/emc/usr_intf/pncconf/pncconf.glade:6458 +#: src/emc/usr_intf/pncconf/pncconf.glade:6860 +#: src/emc/usr_intf/pncconf/pncconf.glade:7235 +#: src/emc/usr_intf/gscreen/gscreen.glade:244 +msgid "Y" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6866 -msgid "You can not have both steppers and pwm signals for spindle control\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1623 +msgid "X " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6870 -#, python-format -msgid "You forgot to designate a stepper or pwm signal for axis %s\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1631 +#, fuzzy +msgid "Analog Control" +msgstr "Manuell kontroll" -#: src/emc/usr_intf/pncconf/pncconf.py:6873 -#, python-format -msgid "You forgot to designate an encoder /resolver signal for axis %s servo\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1657 +#: src/emc/usr_intf/pncconf/pncconf.glade:1788 +#: src/emc/usr_intf/pncconf/pncconf.glade:2698 +#: src/emc/usr_intf/pncconf/pncconf.glade:3579 +#: src/emc/usr_intf/pncconf/pncconf.glade:4460 +#: src/emc/usr_intf/pncconf/pncconf.glade:5341 +#: src/emc/usr_intf/pncconf/pncconf.glade:64300 +msgid "Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6876 -#, python-format -msgid "You forgot to designate a pwm signal or stepper signal for axis %s\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1675 +msgid "USB Joystick Jogging " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6879 -#, python-format -msgid "You can not have both steppers and pwm signals for axis %s\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1719 +msgid "shared buttons for all axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6887 -msgid "Touchy require an external cycle start signal\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1732 +msgid "buttons for each axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6890 -msgid "Touchy require an external abort signal\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1806 +msgid "External Button Jogging" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6893 -msgid "Touchy require an external single-step signal\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1847 +msgid "Shared MPG / selectable axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6896 -msgid "" -"Touchy require an external multi handwheel MPG encoder signal on the mesa " -"page\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1860 +msgid "Mpg per axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6899 -msgid "" -"Touchy require 'external mpg jogging' to be selected on the external control " -"page\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1875 +msgid "selectable MPG increments" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6902 -msgid "" -"Touchy require the external mpg to be in 'shared mpg' mode on the external " -"controls page\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1940 +#: src/emc/usr_intf/pncconf/pncconf.glade:3379 +#: src/emc/usr_intf/pncconf/pncconf.glade:4260 +#: src/emc/usr_intf/pncconf/pncconf.glade:5141 +msgid " d)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6905 -msgid "" -"Touchy require selectable increments to be unchecked on the external " -"controls page\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1952 +#: src/emc/usr_intf/pncconf/pncconf.glade:3340 +#: src/emc/usr_intf/pncconf/pncconf.glade:4221 +#: src/emc/usr_intf/pncconf/pncconf.glade:5102 +msgid " abcd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6909 -msgid "" -"The 7i29 daughter board requires PWM type generators and a PWM base " -"frequency of 20 khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1965 +#: src/emc/usr_intf/pncconf/pncconf.glade:3353 +#: src/emc/usr_intf/pncconf/pncconf.glade:4234 +#: src/emc/usr_intf/pncconf/pncconf.glade:5115 +msgid " bcd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6912 -msgid "" -"The 7i30 daughter board requires PWM type generators and a PWM base " -"frequency of 20 khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1978 +#: src/emc/usr_intf/pncconf/pncconf.glade:3366 +#: src/emc/usr_intf/pncconf/pncconf.glade:4247 +#: src/emc/usr_intf/pncconf/pncconf.glade:5128 +msgid " acd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6915 -msgid "" -"The 7i33 daughter board requires PDM type generators and a PDM base " -"frequency of 6 Mhz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:1991 +#: src/emc/usr_intf/pncconf/pncconf.glade:3430 +#: src/emc/usr_intf/pncconf/pncconf.glade:4311 +#: src/emc/usr_intf/pncconf/pncconf.glade:5192 +msgid " cd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6918 -msgid "" -"The 7i40 daughter board requires PWM type generators and a PWM base " -"frequency of 50 khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2004 +#: src/emc/usr_intf/pncconf/pncconf.glade:3404 +#: src/emc/usr_intf/pncconf/pncconf.glade:4285 +#: src/emc/usr_intf/pncconf/pncconf.glade:5166 +msgid " bd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6921 -msgid "" -"The 7i48 daughter board requires UDM type generators and a PWM base " -"frequency of 24 khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2017 +#: src/emc/usr_intf/pncconf/pncconf.glade:3391 +#: src/emc/usr_intf/pncconf/pncconf.glade:4272 +#: src/emc/usr_intf/pncconf/pncconf.glade:5153 +msgid " ad)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7148 -msgid "Gearbox Reduction Ratio" +#: src/emc/usr_intf/pncconf/pncconf.glade:2030 +#: src/emc/usr_intf/pncconf/pncconf.glade:2514 +#: src/emc/usr_intf/pncconf/pncconf.glade:3059 +#: src/emc/usr_intf/pncconf/pncconf.glade:3940 +#: src/emc/usr_intf/pncconf/pncconf.glade:4821 +msgid " abc)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7151 -msgid "Reduction Ratio" +#: src/emc/usr_intf/pncconf/pncconf.glade:2041 +#: src/emc/usr_intf/pncconf/pncconf.glade:3026 +#: src/emc/usr_intf/pncconf/pncconf.glade:3907 +#: src/emc/usr_intf/pncconf/pncconf.glade:4788 +msgid " c)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7154 -msgid "Leadscrew Pitch" +#: src/emc/usr_intf/pncconf/pncconf.glade:2207 +#: src/emc/usr_intf/pncconf/pncconf.glade:3049 +#: src/emc/usr_intf/pncconf/pncconf.glade:3930 +#: src/emc/usr_intf/pncconf/pncconf.glade:4811 +msgid " bc)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7157 -#: src/emc/usr_intf/pncconf/pncconf.glade:66327 -#: src/emc/usr_intf/pncconf/pncconf.glade:66622 -msgid "Leadscrew TPI" +#: src/emc/usr_intf/pncconf/pncconf.glade:2217 +#: src/emc/usr_intf/pncconf/pncconf.glade:3038 +#: src/emc/usr_intf/pncconf/pncconf.glade:3919 +#: src/emc/usr_intf/pncconf/pncconf.glade:4800 +msgid " ac)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7161 -#: src/emc/usr_intf/pncconf/pncconf.py:7162 -msgid "(" +#: src/emc/usr_intf/pncconf/pncconf.glade:2504 +#: src/emc/usr_intf/pncconf/pncconf.glade:2938 +#: src/emc/usr_intf/pncconf/pncconf.glade:3819 +#: src/emc/usr_intf/pncconf/pncconf.glade:4700 +msgid " ab)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7163 -#: src/emc/usr_intf/pncconf/pncconf.py:7173 -#: src/emc/usr_intf/pncconf/pncconf.py:7174 -#: src/emc/usr_intf/pncconf/pncconf.py:7175 -msgid " / min" +#: src/emc/usr_intf/pncconf/pncconf.glade:2577 +msgid "ignore all inputs false" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7164 -msgid " / sec²" +#: src/emc/usr_intf/pncconf/pncconf.glade:2592 +msgid "use gray code" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7167 -#, fuzzy -msgid " / Step" -msgstr "Stanna #Guessing again" +#: src/emc/usr_intf/pncconf/pncconf.glade:2607 +#: src/emc/usr_intf/pncconf/pncconf.glade:3489 +#: src/emc/usr_intf/pncconf/pncconf.glade:4356 +#: src/emc/usr_intf/pncconf/pncconf.glade:5237 +msgid "use debounce" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7168 +# ***: ../tcl/axis.tcl:1514 +#: src/emc/usr_intf/pncconf/pncconf.glade:2658 +#: src/emc/usr_intf/pncconf/pncconf.glade:3453 +#: src/emc/usr_intf/pncconf/pncconf.glade:4334 +#: src/emc/usr_intf/pncconf/pncconf.glade:5215 #, fuzzy -msgid "Steps / " -msgstr "Stanna #Guessing again" +msgid "Mux options" +msgstr "Position:" -#: src/emc/usr_intf/pncconf/pncconf.py:7170 -msgid " / encoder pulse" +#: src/emc/usr_intf/pncconf/pncconf.glade:2672 +msgid "increments" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7171 -msgid "Encoder pulses / " +#: src/emc/usr_intf/pncconf/pncconf.glade:2716 +msgid "External MPG Jogging" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7482 -msgid "Axis Scale Calculation" +#: src/emc/usr_intf/pncconf/pncconf.glade:2747 +#: src/emc/usr_intf/pncconf/pncconf.glade:3628 +#: src/emc/usr_intf/pncconf/pncconf.glade:4509 +msgid "Use MPG " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7785 -msgid "You need to designate an E-stop input pin for this ladder program." +#: src/emc/usr_intf/pncconf/pncconf.glade:2760 +#: src/emc/usr_intf/pncconf/pncconf.glade:3641 +#: src/emc/usr_intf/pncconf/pncconf.glade:4522 +msgid "use switches" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7797 -msgid "You need to designate a probe input pin for this ladder program." +#: src/emc/usr_intf/pncconf/pncconf.glade:3417 +#: src/emc/usr_intf/pncconf/pncconf.glade:4298 +#: src/emc/usr_intf/pncconf/pncconf.glade:5179 +msgid " abd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7808 -msgid "" -"OK to replace existing custom ladder program?\n" -"Existing Custom.clp will be renamed custom_backup.clp.\n" -"Any existing file named -custom_backup.clp- will be lost.Selecting 'existing " -"ladder program' will avoid this warning" +#: src/emc/usr_intf/pncconf/pncconf.glade:3504 +#: src/emc/usr_intf/pncconf/pncconf.glade:4371 +#: src/emc/usr_intf/pncconf/pncconf.glade:5252 +msgid "use graycode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8019 -msgid "Do you wish to continue to edit this configuration." +#: src/emc/usr_intf/pncconf/pncconf.glade:3519 +#: src/emc/usr_intf/pncconf/pncconf.glade:4386 +#: src/emc/usr_intf/pncconf/pncconf.glade:5267 +msgid "ignore all-inputs false" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8058 -msgid "PCI search page is unavailable\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:3563 +#: src/emc/usr_intf/pncconf/pncconf.glade:4444 +#: src/emc/usr_intf/pncconf/pncconf.glade:5325 +msgid "Increments" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8176 -msgid "" -"You specified there is an existing gladefile, But there is not one in the " -"machine-named folder.." -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:3597 +#, fuzzy +msgid "External Feed Override" +msgstr "Matnings överjusterning (%): #guessing again" -#: src/emc/usr_intf/pncconf/pncconf.py:8495 -msgid "Servo tuning is not avaiable in PNCconf yet\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:4478 +msgid "Max Velocity Override" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8500 -msgid "degrees" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5359 +#, fuzzy +msgid "External Spindle Override" +msgstr "Matnings överjusterning (%): #guessing again" -#: src/emc/usr_intf/pncconf/pncconf.py:8501 -msgid "degrees / minute" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5387 +#, fuzzy +msgid "GUI configuration" +msgstr "Hal _configuration" -#: src/emc/usr_intf/pncconf/pncconf.py:8502 -msgid "degrees / second²" +#: src/emc/usr_intf/pncconf/pncconf.glade:5406 +msgid "Frontend" msgstr "" # ***: ../tcl/axis.tcl:1514 -#: src/emc/usr_intf/pncconf/pncconf.py:8504 +#: src/emc/usr_intf/pncconf/pncconf.glade:5566 #, fuzzy -msgid "revolutions" +msgid "Position_offset" msgstr "Position:" -#: src/emc/usr_intf/pncconf/pncconf.py:8505 -msgid "rpm" -msgstr "" +# ***: ../tcl/axis.tcl:1514 +#: src/emc/usr_intf/pncconf/pncconf.glade:5573 +#, fuzzy +msgid "Position_feedback" +msgstr "Position:" -#: src/emc/usr_intf/pncconf/pncconf.py:8506 -msgid "revs / second²" +#: src/emc/usr_intf/pncconf/pncconf.glade:5584 +#, fuzzy +msgid "Max Spindle Override " +msgstr "Matnings överjusterning (%): #guessing again" + +#: src/emc/usr_intf/pncconf/pncconf.glade:5606 +#, fuzzy +msgid "Min Spindle Override" +msgstr "Matnings överjusterning (%): #guessing again" + +#: src/emc/usr_intf/pncconf/pncconf.glade:5665 +#, fuzzy +msgid "Max Feed Override" +msgstr "Matnings överjusterning (%): #guessing again" + +# ***: ../tcl/axis.tcl:1514 +#: src/emc/usr_intf/pncconf/pncconf.glade:5702 +#, fuzzy +msgid "" +"Machine\n" +"Relative\n" +msgstr "Position:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:5714 +#, fuzzy +msgid "" +"Commanded\n" +"Actual" +msgstr "MDI-Kommando:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:5729 +msgid "General GUI Defaults" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8509 -#: src/emc/usr_intf/pncconf/pncconf.glade:58295 -#: src/emc/usr_intf/pncconf/pncconf.glade:58479 -#: src/emc/usr_intf/pncconf/pncconf.glade:58576 -msgid "mm / minute" +#: src/emc/usr_intf/pncconf/pncconf.glade:5811 +msgid "Default linear velocity " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8510 -msgid "mm / second²" +#: src/emc/usr_intf/pncconf/pncconf.glade:5818 +msgid "Min linear velocity" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8513 -msgid "inches / minute" +#: src/emc/usr_intf/pncconf/pncconf.glade:5829 +msgid "Max linear velocity" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8514 -msgid "inches / second²" +#: src/emc/usr_intf/pncconf/pncconf.glade:5879 +#: src/emc/usr_intf/pncconf/pncconf.glade:6085 +#: src/emc/usr_intf/pncconf/pncconf.glade:6097 +msgid "mm / min" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8646 -#, python-format -msgid "%s Axis Tune" +#: src/emc/usr_intf/pncconf/pncconf.glade:5892 +msgid "Default Angular velocity " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8810 -msgid "" -" You must designate a ENCODER / RESOLVER signal and an ANALOG SPINDLE signal " -"for this axis test" +#: src/emc/usr_intf/pncconf/pncconf.glade:5926 +msgid "gedit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8814 -msgid "" -" You must designate a ENCODER / RESOLVER signal and a PWM signal for this " -"axis test" +#: src/emc/usr_intf/pncconf/pncconf.glade:5939 +msgid "Min Angular velocity" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8 -#, fuzzy -msgid "LinuxCNC Point And Click Configuration" -msgstr "Hal _configuration" +#: src/emc/usr_intf/pncconf/pncconf.glade:5966 +msgid "Increments " +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:23 -msgid "LinuxCNC Configuration Wizard Beta 1 Version" +#: src/emc/usr_intf/pncconf/pncconf.glade:5977 +msgid "5mm 1mm .5mm .1mm .05mm .01mm .005mm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:24 -msgid "" -"\tThis program creates configuration \n" -" files for \"Closed Loop Servo\" \n" -"\t \t and hardware stepper\n" -" \tmachines" +#: src/emc/usr_intf/pncconf/pncconf.glade:5990 +msgid "Max Angular velocity" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:34 -msgid "Create or Edit" +#: src/emc/usr_intf/pncconf/pncconf.glade:6017 +msgid "Axis Geometry" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:52 -#, fuzzy -msgid "Create a new configuration" -msgstr "Hal _configuration" +#: src/emc/usr_intf/pncconf/pncconf.glade:6028 +msgid "xyzabc" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:118 -msgid "Create a desktop shortcut (symlink) to configuration files." +#: src/emc/usr_intf/pncconf/pncconf.glade:6040 +#: src/emc/usr_intf/pncconf/pncconf.glade:6052 +#: src/emc/usr_intf/pncconf/pncconf.glade:6064 +msgid "Deg / min" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:135 -msgid "Create a desktop launcher to start LinuxCNC with this configuration." +#: src/emc/usr_intf/pncconf/pncconf.glade:6113 +#: src/emc/usr_intf/pncconf/pncconf.glade:6484 +#: src/emc/usr_intf/pncconf/pncconf.glade:6839 +#: src/emc/usr_intf/pncconf/pncconf.glade:7262 +msgid "size" msgstr "" -# ***: ../tcl/axis.tcl:1512 -#: src/emc/usr_intf/pncconf/pncconf.glade:214 +# ***: ../tcl/axis.tcl:1514 +#: src/emc/usr_intf/pncconf/pncconf.glade:6122 +#: src/emc/usr_intf/pncconf/pncconf.glade:6471 +#: src/emc/usr_intf/pncconf/pncconf.glade:6848 +#: src/emc/usr_intf/pncconf/pncconf.glade:7248 #, fuzzy -msgid "Machine Name:" -msgstr "Maskin" +msgid "Position" +msgstr "Position:" -#: src/emc/usr_intf/pncconf/pncconf.glade:281 -#, fuzzy -msgid "Axis configuration:" -msgstr "Hal _configuration" +#: src/emc/usr_intf/pncconf/pncconf.glade:6159 +#: src/emc/usr_intf/pncconf/pncconf.glade:6433 +#: src/emc/usr_intf/pncconf/pncconf.glade:6885 +#: src/emc/usr_intf/pncconf/pncconf.glade:7210 +#: src/emc/usr_intf/gscreen/gscreen.glade:116 +msgid "X" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:6171 +#: src/emc/usr_intf/pncconf/pncconf.glade:6423 +#: src/emc/usr_intf/pncconf/pncconf.glade:6897 +#: src/emc/usr_intf/pncconf/pncconf.glade:7200 +#: src/emc/usr_intf/gscreen/gscreen.glade:1142 +msgid "W" +msgstr "" -# ***: ../tcl/axis.tcl:1512 -#: src/emc/usr_intf/pncconf/pncconf.glade:316 -#, fuzzy -msgid "Machine units:" -msgstr "Maskin" +#: src/emc/usr_intf/pncconf/pncconf.glade:6205 +#: src/emc/usr_intf/pncconf/pncconf.glade:6389 +#: src/emc/usr_intf/pncconf/pncconf.glade:6931 +#: src/emc/usr_intf/pncconf/pncconf.glade:7166 +msgid "H" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:355 -msgid "Machine Basics" +#: src/emc/usr_intf/pncconf/pncconf.glade:6227 +msgid "Force Axis to Maximize" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:405 -msgid "Recommend servo period: 1000000" +#: src/emc/usr_intf/pncconf/pncconf.glade:6249 +msgid "AXIS defaults" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:431 -msgid "Actual Servo Period: " +#: src/emc/usr_intf/pncconf/pncconf.glade:6365 +msgid "Force Touchy to Maximize after positioning" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:486 -msgid "" -" Test Base\n" -"Period Jitter " +#: src/emc/usr_intf/pncconf/pncconf.glade:6501 +#: src/emc/usr_intf/pncconf/pncconf.glade:7333 +msgid "Follow System Theme\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:511 -msgid "Computer Response Time" +#: src/emc/usr_intf/pncconf/pncconf.glade:6514 +#: src/emc/usr_intf/pncconf/pncconf.glade:7347 +msgid "GTK Theme" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:553 -msgid "Mesa0 PCI / Parport Card:" +#: src/emc/usr_intf/pncconf/pncconf.glade:6540 +#: src/emc/usr_intf/gscreen/gscreen.glade:1857 +msgid "Absolute Text Color" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:563 -msgid "Mesa1 PCI / Parport Card:" +#: src/emc/usr_intf/pncconf/pncconf.glade:6603 +msgid "Absolute Textcolor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:576 -msgid "First Parport Address:" +# ***: ../tcl/axis.tcl:1514 +#: src/emc/usr_intf/pncconf/pncconf.glade:6616 +#, fuzzy +msgid "Relative Textcolor" +msgstr "Position:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:6629 +msgid "DTG Textcolor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:589 -msgid "Second Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.glade:6642 +msgid "Error Textcolor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:604 -msgid "Third Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.glade:6677 +msgid "GUI Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:627 -#: src/emc/usr_intf/pncconf/pncconf.glade:635 -msgid "" -"5i20\n" -"5i23\n" -"5i22" +#: src/emc/usr_intf/pncconf/pncconf.glade:6708 +msgid "Virtual Control Panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:708 -#: src/emc/usr_intf/pncconf/pncconf.glade:720 -#: src/emc/usr_intf/pncconf/pncconf.glade:733 -msgid "" -"In\n" -"Out" +#: src/emc/usr_intf/pncconf/pncconf.glade:6783 +msgid "XYZ buttons (uses Halui)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:796 -msgid "" -"Add-on PCI\n" -" Parport\n" -" Address \n" -" Search" +#: src/emc/usr_intf/pncconf/pncconf.glade:6954 +msgid "Geometry Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:821 -msgid "I/O Control Ports/ Boards" +#: src/emc/usr_intf/pncconf/pncconf.glade:7033 +msgid "Pyvcp Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:870 -#, fuzzy -msgid "Axis" -msgstr "Axel:" +#: src/emc/usr_intf/pncconf/pncconf.glade:7105 +msgid "Sample display " +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:885 -msgid "TKLinuxCNC" +#: src/emc/usr_intf/pncconf/pncconf.glade:7272 +msgid "Standalone Panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:899 -msgid "Mini" +#: src/emc/usr_intf/pncconf/pncconf.glade:7289 +msgid "Rightside Embeded" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:913 -#: src/emc/usr_intf/pncconf/pncconf.glade:6648 -msgid "Touchy" +#: src/emc/usr_intf/pncconf/pncconf.glade:7305 +msgid "Center Tab Embeded" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:930 -msgid "GUI frontend list" +#: src/emc/usr_intf/pncconf/pncconf.glade:7320 +msgid "Force Maximize" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:965 +#: src/emc/usr_intf/pncconf/pncconf.glade:7359 #, fuzzy -msgid "External Controls" -msgstr "Manuell kontroll" +msgid "Display Options" +msgstr "Använd _tum" -#: src/emc/usr_intf/pncconf/pncconf.glade:1006 -msgid "Add device rule" +#: src/emc/usr_intf/pncconf/pncconf.glade:7409 +msgid "Max RPM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1019 -msgid "Test device" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:7422 +#, fuzzy +msgid "Spindle Speed Indicator" +msgstr "Spindel:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1033 -msgid "Search for device rules" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:7434 +#, fuzzy +msgid "Spindle At Speed LED" +msgstr "Matnings överjusterning (%): #guessing again" -# ***: ../tcl/axis.tcl:1512 -#: src/emc/usr_intf/pncconf/pncconf.glade:1054 +# ***: ../scripts/axis.py:107 +#: src/emc/usr_intf/pncconf/pncconf.glade:7446 #, fuzzy -msgid "Device Name:" -msgstr "Maskin" +msgid "Zero X Button" +msgstr "Scrollhjulsknapp" -#: src/emc/usr_intf/pncconf/pncconf.glade:1117 -#: src/emc/usr_intf/pncconf/pncconf.glade:1255 +# ***: ../scripts/axis.py:107 +#: src/emc/usr_intf/pncconf/pncconf.glade:7458 #, fuzzy -msgid "Jog Speed select A" -msgstr "Flytta vald axel till hemmaläge" +msgid "Zero Y Button" +msgstr "Scrollhjulsknapp" -#: src/emc/usr_intf/pncconf/pncconf.glade:1195 -msgid "Z -" -msgstr "" +# ***: ../scripts/axis.py:107 +#: src/emc/usr_intf/pncconf/pncconf.glade:7470 +#, fuzzy +msgid "Zero Z Button" +msgstr "Scrollhjulsknapp" -#: src/emc/usr_intf/pncconf/pncconf.glade:1207 -msgid "Y -" -msgstr "" +# ***: ../scripts/axis.py:107 +#: src/emc/usr_intf/pncconf/pncconf.glade:7482 +#, fuzzy +msgid "Zero A Button" +msgstr "Scrollhjulsknapp" -#: src/emc/usr_intf/pncconf/pncconf.glade:1219 -msgid "X -" +#: src/emc/usr_intf/pncconf/pncconf.glade:7494 +msgid "Requires Classicladder touch-off program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1229 -msgid "Z +" +#: src/emc/usr_intf/pncconf/pncconf.glade:7495 +msgid "Auto Z Touch Off Button" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1239 -msgid "Y +" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:7508 +#, fuzzy +msgid "Sample Options" +msgstr "Hal _configuration" -#: src/emc/usr_intf/pncconf/pncconf.glade:1249 -msgid "X +" +#: src/emc/usr_intf/pncconf/pncconf.glade:7582 +msgid "Gladevcp Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1289 -#: src/emc/usr_intf/pncconf/pncconf.glade:2208 -#: src/emc/usr_intf/pncconf/pncconf.glade:3496 -#: src/emc/usr_intf/pncconf/pncconf.glade:4377 -#: src/emc/usr_intf/pncconf/pncconf.glade:5258 -msgid "default" +#: src/emc/usr_intf/pncconf/pncconf.glade:7605 +msgid "Include custom GladeVCP GUI panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1299 -#: src/emc/usr_intf/pncconf/pncconf.glade:2107 -#: src/emc/usr_intf/pncconf/pncconf.glade:3443 -#: src/emc/usr_intf/pncconf/pncconf.glade:4324 -#: src/emc/usr_intf/pncconf/pncconf.glade:5205 -msgid " a)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7676 +msgid "Force individual manual homing" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1311 -#: src/emc/usr_intf/pncconf/pncconf.glade:2096 -#: src/emc/usr_intf/pncconf/pncconf.glade:3432 -#: src/emc/usr_intf/pncconf/pncconf.glade:4313 -#: src/emc/usr_intf/pncconf/pncconf.glade:5194 -msgid " b)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7689 +msgid "Random position toolchanger " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1322 -msgid " ab)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7704 +msgid "Require homing before MDI / Running" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1348 -#: src/emc/usr_intf/pncconf/pncconf.glade:1401 -#: src/emc/usr_intf/pncconf/pncconf.glade:1413 -#: src/emc/usr_intf/pncconf/pncconf.glade:1423 -#: src/emc/usr_intf/pncconf/pncconf.glade:1751 -msgid "mm/min " +#: src/emc/usr_intf/pncconf/pncconf.glade:7713 +msgid "Popup Toolchange Prompt" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1456 -msgid "A -" +#: src/emc/usr_intf/pncconf/pncconf.glade:7727 +msgid "Leave spindle on during tool change" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1468 -msgid "A +" +#: src/emc/usr_intf/pncconf/pncconf.glade:7740 +msgid "Move spindle up before tool change" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1492 -#, fuzzy -msgid "Digital Control" -msgstr "Manuell kontroll" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1539 -msgid "X " +#: src/emc/usr_intf/pncconf/pncconf.glade:7753 +msgid "Restore joint position after shutdown" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1545 -#: src/emc/usr_intf/pncconf/pncconf.glade:5901 -#: src/emc/usr_intf/pncconf/pncconf.glade:6531 -#: src/emc/usr_intf/pncconf/pncconf.glade:6910 -#: src/emc/usr_intf/pncconf/pncconf.glade:7257 -msgid "Y" +#: src/emc/usr_intf/pncconf/pncconf.glade:7769 +msgid "Defaults and Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1555 -msgid "Z" +#: src/emc/usr_intf/pncconf/pncconf.glade:7797 +msgid "Mesa0 I/O setup\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1565 -msgid "A" +#: src/emc/usr_intf/pncconf/pncconf.glade:7817 +msgid "" +"Click on each page tab to configure signal names for each connector port.\n" +"\n" +"Press the button to make the tabbed pages\n" +"accept the changes.\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1623 -#, fuzzy -msgid "Analog Control" -msgstr "Manuell kontroll" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1649 -#: src/emc/usr_intf/pncconf/pncconf.glade:1780 -#: src/emc/usr_intf/pncconf/pncconf.glade:2690 -#: src/emc/usr_intf/pncconf/pncconf.glade:3571 -#: src/emc/usr_intf/pncconf/pncconf.glade:4452 -#: src/emc/usr_intf/pncconf/pncconf.glade:5333 -#: src/emc/usr_intf/pncconf/pncconf.glade:57371 -msgid "Details" +#: src/emc/usr_intf/pncconf/pncconf.glade:8001 +msgid "3PWM base frequency:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1667 -msgid "USB Joystick Jogging " +#: src/emc/usr_intf/pncconf/pncconf.glade:8036 +msgid "Mesa parport address:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1711 -msgid "shared buttons for all axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:8047 +msgid "Firmware:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1724 -msgid "buttons for each axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:8069 +msgid "SVST8_4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1798 -msgid "External Button Jogging" +#: src/emc/usr_intf/pncconf/pncconf.glade:8094 +msgid "Num of 3 pwm generators: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1839 -msgid "Shared MPG / selectable axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:8128 +msgid "Total number of pins:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1852 -msgid "Mpg per axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:8153 +msgid "" +"Accept components\n" +" Changes" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1867 -msgid "selectable MPG increments" +#: src/emc/usr_intf/pncconf/pncconf.glade:8168 +msgid "PWM base frequency:" msgstr "" -# ***: ../tcl/axis.tcl:1514 -#: src/emc/usr_intf/pncconf/pncconf.glade:1932 -#: src/emc/usr_intf/pncconf/pncconf.glade:2907 -#: src/emc/usr_intf/pncconf/pncconf.glade:3788 -#: src/emc/usr_intf/pncconf/pncconf.glade:4669 -#, fuzzy -msgid "Mux options" -msgstr "Position:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1980 -#: src/emc/usr_intf/pncconf/pncconf.glade:2868 -#: src/emc/usr_intf/pncconf/pncconf.glade:3763 -#: src/emc/usr_intf/pncconf/pncconf.glade:4644 -msgid "use debounce" +#: src/emc/usr_intf/pncconf/pncconf.glade:8179 +msgid "PDM base frequency:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1995 -msgid "use gray code" +#: src/emc/usr_intf/pncconf/pncconf.glade:8190 +msgid "Watchdog timeout:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2010 -msgid "ignore all inputs false" +#: src/emc/usr_intf/pncconf/pncconf.glade:8307 +msgid "Num of encoders:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2035 -#: src/emc/usr_intf/pncconf/pncconf.glade:2048 -#: src/emc/usr_intf/pncconf/pncconf.glade:2061 -#: src/emc/usr_intf/pncconf/pncconf.glade:2407 -#: src/emc/usr_intf/pncconf/pncconf.glade:2420 -#: src/emc/usr_intf/pncconf/pncconf.glade:2433 -#: src/emc/usr_intf/pncconf/pncconf.glade:2446 -#: src/emc/usr_intf/pncconf/pncconf.glade:2457 -#: src/emc/usr_intf/pncconf/pncconf.glade:2470 -#: src/emc/usr_intf/pncconf/pncconf.glade:2483 -#: src/emc/usr_intf/pncconf/pncconf.glade:2496 -#: src/emc/usr_intf/pncconf/pncconf.glade:2509 -#: src/emc/usr_intf/pncconf/pncconf.glade:2522 -#: src/emc/usr_intf/pncconf/pncconf.glade:2535 -#: src/emc/usr_intf/pncconf/pncconf.glade:8343 -#: src/emc/usr_intf/pncconf/pncconf.glade:8379 -#: src/emc/usr_intf/pncconf/pncconf.glade:56542 -#: src/emc/usr_intf/pncconf/pncconf.glade:61266 -#: src/emc/usr_intf/pncconf/pncconf.glade:61278 -#: src/emc/usr_intf/pncconf/pncconf.glade:61290 -#: src/emc/usr_intf/pncconf/pncconf.glade:61302 -#: src/emc/usr_intf/pncconf/pncconf.glade:62475 -#: src/emc/usr_intf/pncconf/pncconf.glade:62487 -#: src/emc/usr_intf/pncconf/pncconf.glade:62499 -#: src/emc/usr_intf/pncconf/pncconf.glade:62511 -#: src/emc/usr_intf/pncconf/pncconf.glade:63452 -#: src/emc/usr_intf/pncconf/pncconf.glade:63464 -#: src/emc/usr_intf/pncconf/pncconf.glade:63476 -#: src/emc/usr_intf/pncconf/pncconf.glade:63488 -#: src/emc/usr_intf/pncconf/pncconf.glade:64661 -#: src/emc/usr_intf/pncconf/pncconf.glade:64673 -#: src/emc/usr_intf/pncconf/pncconf.glade:64685 -#: src/emc/usr_intf/pncconf/pncconf.glade:64697 -#: src/emc/usr_intf/pncconf/pncconf.glade:65608 -#: src/emc/usr_intf/pncconf/pncconf.glade:65620 -#: src/emc/usr_intf/pncconf/pncconf.glade:65632 -#: src/emc/usr_intf/pncconf/pncconf.glade:65644 -msgid "label" +#: src/emc/usr_intf/pncconf/pncconf.glade:8318 +msgid "Num of pwm generators:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2073 -#: src/emc/usr_intf/pncconf/pncconf.glade:2559 -#: src/emc/usr_intf/pncconf/pncconf.glade:3300 -#: src/emc/usr_intf/pncconf/pncconf.glade:4181 -#: src/emc/usr_intf/pncconf/pncconf.glade:5062 -msgid " abc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8329 +msgid "Num of step generators: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2086 -#: src/emc/usr_intf/pncconf/pncconf.glade:3422 -#: src/emc/usr_intf/pncconf/pncconf.glade:4303 -#: src/emc/usr_intf/pncconf/pncconf.glade:5184 -msgid " ab)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8340 +msgid "Board name" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2372 -#: src/emc/usr_intf/pncconf/pncconf.glade:3321 -#: src/emc/usr_intf/pncconf/pncconf.glade:4202 -#: src/emc/usr_intf/pncconf/pncconf.glade:5083 -msgid " ac)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8346 +msgid "Num of Smart Serial Ports:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2383 -#: src/emc/usr_intf/pncconf/pncconf.glade:3311 -#: src/emc/usr_intf/pncconf/pncconf.glade:4192 -#: src/emc/usr_intf/pncconf/pncconf.glade:5073 -msgid " bc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8393 +msgid "7i29 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2547 -#: src/emc/usr_intf/pncconf/pncconf.glade:3332 -#: src/emc/usr_intf/pncconf/pncconf.glade:4213 -#: src/emc/usr_intf/pncconf/pncconf.glade:5094 -msgid " c)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8402 +msgid "7i30 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2570 -#: src/emc/usr_intf/pncconf/pncconf.glade:2966 -#: src/emc/usr_intf/pncconf/pncconf.glade:3847 -#: src/emc/usr_intf/pncconf/pncconf.glade:4728 -msgid " ad)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8414 +msgid "7i33 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2583 -#: src/emc/usr_intf/pncconf/pncconf.glade:2953 -#: src/emc/usr_intf/pncconf/pncconf.glade:3834 -#: src/emc/usr_intf/pncconf/pncconf.glade:4715 -msgid " bd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8426 +msgid "7i40 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2596 -#: src/emc/usr_intf/pncconf/pncconf.glade:2927 -#: src/emc/usr_intf/pncconf/pncconf.glade:3808 -#: src/emc/usr_intf/pncconf/pncconf.glade:4689 -msgid " cd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8438 +msgid "7i48 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2609 -#: src/emc/usr_intf/pncconf/pncconf.glade:2991 -#: src/emc/usr_intf/pncconf/pncconf.glade:3872 -#: src/emc/usr_intf/pncconf/pncconf.glade:4753 -msgid " acd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8453 +msgid "Sanity Checks" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2622 -#: src/emc/usr_intf/pncconf/pncconf.glade:3004 -#: src/emc/usr_intf/pncconf/pncconf.glade:3885 -#: src/emc/usr_intf/pncconf/pncconf.glade:4766 -msgid " bcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8482 +msgid "Num of channels: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2635 -#: src/emc/usr_intf/pncconf/pncconf.glade:3017 -#: src/emc/usr_intf/pncconf/pncconf.glade:3898 -#: src/emc/usr_intf/pncconf/pncconf.glade:4779 -msgid " abcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8494 +msgid "Num of resolvers:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2648 -#: src/emc/usr_intf/pncconf/pncconf.glade:2979 -#: src/emc/usr_intf/pncconf/pncconf.glade:3860 -#: src/emc/usr_intf/pncconf/pncconf.glade:4741 -msgid " d)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8528 +#, fuzzy +msgid "" +"Configuration\n" +" Page" +msgstr "Hal _configuration" + +#: src/emc/usr_intf/pncconf/pncconf.glade:8721 +#: src/emc/usr_intf/pncconf/pncconf.glade:8773 +#: src/emc/usr_intf/pncconf/pncconf.glade:9093 +#: src/emc/usr_intf/pncconf/pncconf.glade:9145 +#: src/emc/usr_intf/pncconf/pncconf.glade:9197 +#: src/emc/usr_intf/pncconf/pncconf.glade:9249 +#: src/emc/usr_intf/pncconf/pncconf.glade:9301 +#: src/emc/usr_intf/pncconf/pncconf.glade:9353 +#: src/emc/usr_intf/pncconf/pncconf.glade:9405 +#: src/emc/usr_intf/pncconf/pncconf.glade:9457 +#: src/emc/usr_intf/pncconf/pncconf.glade:9509 +#: src/emc/usr_intf/pncconf/pncconf.glade:9561 +#: src/emc/usr_intf/pncconf/pncconf.glade:10400 +#: src/emc/usr_intf/pncconf/pncconf.glade:10453 +#: src/emc/usr_intf/pncconf/pncconf.glade:10505 +#: src/emc/usr_intf/pncconf/pncconf.glade:10557 +#: src/emc/usr_intf/pncconf/pncconf.glade:11335 +#: src/emc/usr_intf/pncconf/pncconf.glade:11387 +#: src/emc/usr_intf/pncconf/pncconf.glade:12047 +#: src/emc/usr_intf/pncconf/pncconf.glade:12099 +#: src/emc/usr_intf/pncconf/pncconf.glade:12151 +#: src/emc/usr_intf/pncconf/pncconf.glade:12203 +#: src/emc/usr_intf/pncconf/pncconf.glade:13042 +#: src/emc/usr_intf/pncconf/pncconf.glade:13094 +#: src/emc/usr_intf/pncconf/pncconf.glade:13146 +#: src/emc/usr_intf/pncconf/pncconf.glade:13198 +#: src/emc/usr_intf/pncconf/pncconf.glade:13250 +#: src/emc/usr_intf/pncconf/pncconf.glade:13302 +#: src/emc/usr_intf/pncconf/pncconf.glade:13354 +#: src/emc/usr_intf/pncconf/pncconf.glade:13406 +#: src/emc/usr_intf/pncconf/pncconf.glade:13458 +#: src/emc/usr_intf/pncconf/pncconf.glade:13510 +#: src/emc/usr_intf/pncconf/pncconf.glade:14556 +#: src/emc/usr_intf/pncconf/pncconf.glade:14608 +#: src/emc/usr_intf/pncconf/pncconf.glade:14660 +#: src/emc/usr_intf/pncconf/pncconf.glade:14712 +#: src/emc/usr_intf/pncconf/pncconf.glade:15539 +#: src/emc/usr_intf/pncconf/pncconf.glade:15591 +#: src/emc/usr_intf/pncconf/pncconf.glade:15643 +#: src/emc/usr_intf/pncconf/pncconf.glade:15695 +#: src/emc/usr_intf/pncconf/pncconf.glade:15747 +#: src/emc/usr_intf/pncconf/pncconf.glade:15799 +#: src/emc/usr_intf/pncconf/pncconf.glade:15851 +#: src/emc/usr_intf/pncconf/pncconf.glade:15903 +#: src/emc/usr_intf/pncconf/pncconf.glade:15955 +#: src/emc/usr_intf/pncconf/pncconf.glade:16007 +#: src/emc/usr_intf/pncconf/pncconf.glade:16059 +#: src/emc/usr_intf/pncconf/pncconf.glade:16111 +#: src/emc/usr_intf/pncconf/pncconf.glade:16540 +#: src/emc/usr_intf/pncconf/pncconf.glade:16592 +#: src/emc/usr_intf/pncconf/pncconf.glade:17253 +#: src/emc/usr_intf/pncconf/pncconf.glade:17305 +#: src/emc/usr_intf/pncconf/pncconf.glade:17357 +#: src/emc/usr_intf/pncconf/pncconf.glade:18196 +#: src/emc/usr_intf/pncconf/pncconf.glade:18248 +#: src/emc/usr_intf/pncconf/pncconf.glade:18300 +#: src/emc/usr_intf/pncconf/pncconf.glade:18352 +#: src/emc/usr_intf/pncconf/pncconf.glade:18404 +#: src/emc/usr_intf/pncconf/pncconf.glade:18456 +#: src/emc/usr_intf/pncconf/pncconf.glade:18508 +#: src/emc/usr_intf/pncconf/pncconf.glade:18560 +#: src/emc/usr_intf/pncconf/pncconf.glade:18612 +#: src/emc/usr_intf/pncconf/pncconf.glade:18664 +#: src/emc/usr_intf/pncconf/pncconf.glade:18716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26612 +#: src/emc/usr_intf/pncconf/pncconf.glade:26664 +#: src/emc/usr_intf/pncconf/pncconf.glade:26716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26768 +#: src/emc/usr_intf/pncconf/pncconf.glade:26820 +#: src/emc/usr_intf/pncconf/pncconf.glade:26872 +#: src/emc/usr_intf/pncconf/pncconf.glade:26924 +#: src/emc/usr_intf/pncconf/pncconf.glade:26976 +#: src/emc/usr_intf/pncconf/pncconf.glade:27028 +#: src/emc/usr_intf/pncconf/pncconf.glade:27080 +#: src/emc/usr_intf/pncconf/pncconf.glade:27132 +#: src/emc/usr_intf/pncconf/pncconf.glade:27184 +#: src/emc/usr_intf/pncconf/pncconf.glade:28011 +#: src/emc/usr_intf/pncconf/pncconf.glade:28063 +#: src/emc/usr_intf/pncconf/pncconf.glade:28115 +#: src/emc/usr_intf/pncconf/pncconf.glade:28167 +#: src/emc/usr_intf/pncconf/pncconf.glade:29507 +#: src/emc/usr_intf/pncconf/pncconf.glade:29559 +#: src/emc/usr_intf/pncconf/pncconf.glade:29611 +#: src/emc/usr_intf/pncconf/pncconf.glade:29663 +#: src/emc/usr_intf/pncconf/pncconf.glade:30490 +#: src/emc/usr_intf/pncconf/pncconf.glade:30542 +#: src/emc/usr_intf/pncconf/pncconf.glade:30594 +#: src/emc/usr_intf/pncconf/pncconf.glade:30646 +#: src/emc/usr_intf/pncconf/pncconf.glade:30698 +#: src/emc/usr_intf/pncconf/pncconf.glade:30750 +#: src/emc/usr_intf/pncconf/pncconf.glade:30802 +#: src/emc/usr_intf/pncconf/pncconf.glade:30854 +#: src/emc/usr_intf/pncconf/pncconf.glade:30906 +#: src/emc/usr_intf/pncconf/pncconf.glade:30958 +#: src/emc/usr_intf/pncconf/pncconf.glade:31010 +#: src/emc/usr_intf/pncconf/pncconf.glade:31062 +#: src/emc/usr_intf/pncconf/pncconf.glade:31878 +#: src/emc/usr_intf/pncconf/pncconf.glade:31930 +#: src/emc/usr_intf/pncconf/pncconf.glade:31982 +#: src/emc/usr_intf/pncconf/pncconf.glade:32034 +#: src/emc/usr_intf/pncconf/pncconf.glade:32086 +#: src/emc/usr_intf/pncconf/pncconf.glade:32138 +#: src/emc/usr_intf/pncconf/pncconf.glade:32190 +#: src/emc/usr_intf/pncconf/pncconf.glade:32242 +#: src/emc/usr_intf/pncconf/pncconf.glade:32294 +#: src/emc/usr_intf/pncconf/pncconf.glade:32346 +#: src/emc/usr_intf/pncconf/pncconf.glade:32398 +#: src/emc/usr_intf/pncconf/pncconf.glade:32450 +#: src/emc/usr_intf/pncconf/pncconf.glade:33852 +#: src/emc/usr_intf/pncconf/pncconf.glade:33904 +#: src/emc/usr_intf/pncconf/pncconf.glade:33956 +#: src/emc/usr_intf/pncconf/pncconf.glade:34008 +#: src/emc/usr_intf/pncconf/pncconf.glade:34835 +#: src/emc/usr_intf/pncconf/pncconf.glade:34887 +#: src/emc/usr_intf/pncconf/pncconf.glade:34939 +#: src/emc/usr_intf/pncconf/pncconf.glade:34991 +#: src/emc/usr_intf/pncconf/pncconf.glade:35043 +#: src/emc/usr_intf/pncconf/pncconf.glade:35095 +#: src/emc/usr_intf/pncconf/pncconf.glade:35147 +#: src/emc/usr_intf/pncconf/pncconf.glade:35199 +#: src/emc/usr_intf/pncconf/pncconf.glade:35251 +#: src/emc/usr_intf/pncconf/pncconf.glade:35303 +#: src/emc/usr_intf/pncconf/pncconf.glade:35355 +#: src/emc/usr_intf/pncconf/pncconf.glade:35407 +#: src/emc/usr_intf/pncconf/pncconf.glade:36096 +#: src/emc/usr_intf/pncconf/pncconf.glade:36148 +#: src/emc/usr_intf/pncconf/pncconf.glade:36200 +#: src/emc/usr_intf/pncconf/pncconf.glade:36252 +#: src/emc/usr_intf/pncconf/pncconf.glade:36304 +#: src/emc/usr_intf/pncconf/pncconf.glade:36356 +#: src/emc/usr_intf/pncconf/pncconf.glade:36408 +#: src/emc/usr_intf/pncconf/pncconf.glade:36460 +#: src/emc/usr_intf/pncconf/pncconf.glade:36512 +#: src/emc/usr_intf/pncconf/pncconf.glade:36564 +#: src/emc/usr_intf/pncconf/pncconf.glade:36616 +#: src/emc/usr_intf/pncconf/pncconf.glade:36668 +#: src/emc/usr_intf/pncconf/pncconf.glade:37495 +#: src/emc/usr_intf/pncconf/pncconf.glade:37547 +#: src/emc/usr_intf/pncconf/pncconf.glade:37599 +#: src/emc/usr_intf/pncconf/pncconf.glade:37651 +#: src/emc/usr_intf/pncconf/pncconf.glade:39168 +#: src/emc/usr_intf/pncconf/pncconf.glade:39220 +#: src/emc/usr_intf/pncconf/pncconf.glade:39272 +#: src/emc/usr_intf/pncconf/pncconf.glade:39324 +#: src/emc/usr_intf/pncconf/pncconf.glade:39376 +#: src/emc/usr_intf/pncconf/pncconf.glade:39428 +#: src/emc/usr_intf/pncconf/pncconf.glade:39480 +#: src/emc/usr_intf/pncconf/pncconf.glade:39532 +#: src/emc/usr_intf/pncconf/pncconf.glade:39584 +#: src/emc/usr_intf/pncconf/pncconf.glade:39636 +#: src/emc/usr_intf/pncconf/pncconf.glade:39688 +#: src/emc/usr_intf/pncconf/pncconf.glade:39740 +#: src/emc/usr_intf/pncconf/pncconf.glade:40456 +#: src/emc/usr_intf/pncconf/pncconf.glade:40508 +#: src/emc/usr_intf/pncconf/pncconf.glade:40560 +#: src/emc/usr_intf/pncconf/pncconf.glade:40612 +#: src/emc/usr_intf/pncconf/pncconf.glade:40664 +#: src/emc/usr_intf/pncconf/pncconf.glade:40716 +#: src/emc/usr_intf/pncconf/pncconf.glade:40768 +#: src/emc/usr_intf/pncconf/pncconf.glade:40820 +#: src/emc/usr_intf/pncconf/pncconf.glade:40872 +#: src/emc/usr_intf/pncconf/pncconf.glade:40924 +#: src/emc/usr_intf/pncconf/pncconf.glade:40976 +#: src/emc/usr_intf/pncconf/pncconf.glade:41028 +#: src/emc/usr_intf/pncconf/pncconf.glade:41855 +#: src/emc/usr_intf/pncconf/pncconf.glade:41907 +#: src/emc/usr_intf/pncconf/pncconf.glade:41959 +#: src/emc/usr_intf/pncconf/pncconf.glade:42011 +#: src/emc/usr_intf/pncconf/pncconf.glade:43351 +#: src/emc/usr_intf/pncconf/pncconf.glade:43403 +#: src/emc/usr_intf/pncconf/pncconf.glade:43455 +#: src/emc/usr_intf/pncconf/pncconf.glade:43507 +#: src/emc/usr_intf/pncconf/pncconf.glade:44334 +#: src/emc/usr_intf/pncconf/pncconf.glade:44386 +#: src/emc/usr_intf/pncconf/pncconf.glade:44438 +#: src/emc/usr_intf/pncconf/pncconf.glade:44490 +#: src/emc/usr_intf/pncconf/pncconf.glade:44542 +#: src/emc/usr_intf/pncconf/pncconf.glade:44594 +#: src/emc/usr_intf/pncconf/pncconf.glade:44646 +#: src/emc/usr_intf/pncconf/pncconf.glade:44698 +#: src/emc/usr_intf/pncconf/pncconf.glade:44750 +#: src/emc/usr_intf/pncconf/pncconf.glade:44802 +#: src/emc/usr_intf/pncconf/pncconf.glade:44854 +#: src/emc/usr_intf/pncconf/pncconf.glade:44906 +#: src/emc/usr_intf/pncconf/pncconf.glade:45711 +#: src/emc/usr_intf/pncconf/pncconf.glade:45763 +#: src/emc/usr_intf/pncconf/pncconf.glade:45815 +#: src/emc/usr_intf/pncconf/pncconf.glade:45867 +#: src/emc/usr_intf/pncconf/pncconf.glade:45919 +#: src/emc/usr_intf/pncconf/pncconf.glade:45971 +#: src/emc/usr_intf/pncconf/pncconf.glade:46023 +#: src/emc/usr_intf/pncconf/pncconf.glade:46075 +#: src/emc/usr_intf/pncconf/pncconf.glade:46127 +#: src/emc/usr_intf/pncconf/pncconf.glade:46179 +#: src/emc/usr_intf/pncconf/pncconf.glade:46231 +#: src/emc/usr_intf/pncconf/pncconf.glade:46283 +#: src/emc/usr_intf/pncconf/pncconf.glade:47379 +#: src/emc/usr_intf/pncconf/pncconf.glade:47431 +#: src/emc/usr_intf/pncconf/pncconf.glade:47483 +#: src/emc/usr_intf/pncconf/pncconf.glade:47535 +#: src/emc/usr_intf/pncconf/pncconf.glade:47587 +#: src/emc/usr_intf/pncconf/pncconf.glade:47639 +#: src/emc/usr_intf/pncconf/pncconf.glade:47691 +#: src/emc/usr_intf/pncconf/pncconf.glade:47743 +#: src/emc/usr_intf/pncconf/pncconf.glade:47795 +#: src/emc/usr_intf/pncconf/pncconf.glade:47847 +#: src/emc/usr_intf/pncconf/pncconf.glade:47899 +#: src/emc/usr_intf/pncconf/pncconf.glade:47951 +#: src/emc/usr_intf/pncconf/pncconf.glade:48778 +#: src/emc/usr_intf/pncconf/pncconf.glade:48830 +#: src/emc/usr_intf/pncconf/pncconf.glade:48882 +#: src/emc/usr_intf/pncconf/pncconf.glade:48934 +#: src/emc/usr_intf/pncconf/pncconf.glade:50274 +#: src/emc/usr_intf/pncconf/pncconf.glade:50326 +#: src/emc/usr_intf/pncconf/pncconf.glade:50378 +#: src/emc/usr_intf/pncconf/pncconf.glade:50430 +#: src/emc/usr_intf/pncconf/pncconf.glade:51257 +#: src/emc/usr_intf/pncconf/pncconf.glade:51309 +#: src/emc/usr_intf/pncconf/pncconf.glade:51361 +#: src/emc/usr_intf/pncconf/pncconf.glade:51413 +#: src/emc/usr_intf/pncconf/pncconf.glade:51465 +#: src/emc/usr_intf/pncconf/pncconf.glade:51517 +#: src/emc/usr_intf/pncconf/pncconf.glade:51569 +#: src/emc/usr_intf/pncconf/pncconf.glade:51621 +#: src/emc/usr_intf/pncconf/pncconf.glade:51673 +#: src/emc/usr_intf/pncconf/pncconf.glade:51725 +#: src/emc/usr_intf/pncconf/pncconf.glade:51777 +#: src/emc/usr_intf/pncconf/pncconf.glade:51829 +#: src/emc/usr_intf/pncconf/pncconf.glade:52634 +#: src/emc/usr_intf/pncconf/pncconf.glade:52686 +#: src/emc/usr_intf/pncconf/pncconf.glade:52738 +#: src/emc/usr_intf/pncconf/pncconf.glade:52790 +#: src/emc/usr_intf/pncconf/pncconf.glade:52842 +#: src/emc/usr_intf/pncconf/pncconf.glade:52894 +#: src/emc/usr_intf/pncconf/pncconf.glade:52946 +#: src/emc/usr_intf/pncconf/pncconf.glade:52998 +#: src/emc/usr_intf/pncconf/pncconf.glade:53050 +#: src/emc/usr_intf/pncconf/pncconf.glade:53102 +#: src/emc/usr_intf/pncconf/pncconf.glade:53154 +#: src/emc/usr_intf/pncconf/pncconf.glade:53206 +#: src/emc/usr_intf/pncconf/pncconf.glade:54302 +#: src/emc/usr_intf/pncconf/pncconf.glade:54354 +#: src/emc/usr_intf/pncconf/pncconf.glade:54406 +#: src/emc/usr_intf/pncconf/pncconf.glade:54458 +#: src/emc/usr_intf/pncconf/pncconf.glade:54510 +#: src/emc/usr_intf/pncconf/pncconf.glade:54562 +#: src/emc/usr_intf/pncconf/pncconf.glade:54614 +#: src/emc/usr_intf/pncconf/pncconf.glade:54666 +#: src/emc/usr_intf/pncconf/pncconf.glade:54718 +#: src/emc/usr_intf/pncconf/pncconf.glade:54770 +#: src/emc/usr_intf/pncconf/pncconf.glade:54822 +#: src/emc/usr_intf/pncconf/pncconf.glade:54874 +#: src/emc/usr_intf/pncconf/pncconf.glade:55701 +#: src/emc/usr_intf/pncconf/pncconf.glade:55753 +#: src/emc/usr_intf/pncconf/pncconf.glade:55805 +#: src/emc/usr_intf/pncconf/pncconf.glade:55857 +#: src/emc/usr_intf/pncconf/pncconf.glade:57197 +#: src/emc/usr_intf/pncconf/pncconf.glade:57249 +#: src/emc/usr_intf/pncconf/pncconf.glade:57301 +#: src/emc/usr_intf/pncconf/pncconf.glade:57353 +#: src/emc/usr_intf/pncconf/pncconf.glade:58180 +#: src/emc/usr_intf/pncconf/pncconf.glade:58232 +#: src/emc/usr_intf/pncconf/pncconf.glade:58284 +#: src/emc/usr_intf/pncconf/pncconf.glade:58336 +#: src/emc/usr_intf/pncconf/pncconf.glade:58388 +#: src/emc/usr_intf/pncconf/pncconf.glade:58440 +#: src/emc/usr_intf/pncconf/pncconf.glade:58492 +#: src/emc/usr_intf/pncconf/pncconf.glade:58544 +#: src/emc/usr_intf/pncconf/pncconf.glade:58596 +#: src/emc/usr_intf/pncconf/pncconf.glade:58648 +#: src/emc/usr_intf/pncconf/pncconf.glade:58700 +#: src/emc/usr_intf/pncconf/pncconf.glade:58752 +#: src/emc/usr_intf/pncconf/pncconf.glade:59557 +#: src/emc/usr_intf/pncconf/pncconf.glade:59609 +#: src/emc/usr_intf/pncconf/pncconf.glade:59661 +#: src/emc/usr_intf/pncconf/pncconf.glade:59713 +#: src/emc/usr_intf/pncconf/pncconf.glade:59765 +#: src/emc/usr_intf/pncconf/pncconf.glade:59817 +#: src/emc/usr_intf/pncconf/pncconf.glade:59869 +#: src/emc/usr_intf/pncconf/pncconf.glade:59921 +#: src/emc/usr_intf/pncconf/pncconf.glade:59973 +#: src/emc/usr_intf/pncconf/pncconf.glade:60025 +#: src/emc/usr_intf/pncconf/pncconf.glade:60077 +#: src/emc/usr_intf/pncconf/pncconf.glade:60129 +msgid "" +"ESTOP IN\n" +"Spindle PPR\n" +"Spindle A \n" +"Spindle B \n" +"Home X \n" +"Home Y \n" +"Home Z\n" +"Home A\n" +"Minimum Limit + Home X \n" +"Minimum Limit + Home Y \n" +"Minimum Limit + Home Z \n" +"Minimum Limit + Home A\n" +"Maximum Limit + Home X \n" +"Maximum Limit + Home Y \n" +"Maximum Limit + Home Z \n" +"Maximum Limit + Home A\n" +"Both Limit + Home X \n" +"Both Limit + Home Y \n" +"Both Limit + Home Z \n" +"Both Limit + Home A\n" +"Minimum Limit X \n" +"Minimum Limit Y \n" +"Minimum Limit Z \n" +"Minimum Limit A\n" +"Maximum Limit X \n" +"Maximum Limit Y \n" +"Maximum Limit Z \n" +"Maximum Limit A\n" +"Both Limit X \n" +"Both Limit Y \n" +"Both Limit Z \n" +"Both Limit A\n" +"All limits\n" +"All home\n" +"Unused" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2664 -msgid "increments" +#: src/emc/usr_intf/pncconf/pncconf.glade:8825 +#: src/emc/usr_intf/pncconf/pncconf.glade:9081 +#: src/emc/usr_intf/pncconf/pncconf.glade:13563 +#: src/emc/usr_intf/pncconf/pncconf.glade:13818 +#: src/emc/usr_intf/pncconf/pncconf.glade:16164 +#: src/emc/usr_intf/pncconf/pncconf.glade:16410 +#: src/emc/usr_intf/pncconf/pncconf.glade:18769 +#: src/emc/usr_intf/pncconf/pncconf.glade:19024 +#: src/emc/usr_intf/pncconf/pncconf.glade:20571 +#: src/emc/usr_intf/pncconf/pncconf.glade:20820 +#: src/emc/usr_intf/pncconf/pncconf.glade:20949 +#: src/emc/usr_intf/pncconf/pncconf.glade:21199 +#: src/emc/usr_intf/pncconf/pncconf.glade:22745 +#: src/emc/usr_intf/pncconf/pncconf.glade:22995 +#: src/emc/usr_intf/pncconf/pncconf.glade:24541 +#: src/emc/usr_intf/pncconf/pncconf.glade:24791 +#: src/emc/usr_intf/pncconf/pncconf.glade:26353 +#: src/emc/usr_intf/pncconf/pncconf.glade:26600 +#: src/emc/usr_intf/pncconf/pncconf.glade:31115 +#: src/emc/usr_intf/pncconf/pncconf.glade:31361 +#: src/emc/usr_intf/pncconf/pncconf.glade:31621 +#: src/emc/usr_intf/pncconf/pncconf.glade:35460 +#: src/emc/usr_intf/pncconf/pncconf.glade:35706 +#: src/emc/usr_intf/pncconf/pncconf.glade:35837 +#: src/emc/usr_intf/pncconf/pncconf.glade:36084 +#: src/emc/usr_intf/pncconf/pncconf.glade:40037 +#: src/emc/usr_intf/pncconf/pncconf.glade:40197 +#: src/emc/usr_intf/pncconf/pncconf.glade:40444 +#: src/emc/usr_intf/pncconf/pncconf.glade:44959 +#: src/emc/usr_intf/pncconf/pncconf.glade:45205 +#: src/emc/usr_intf/pncconf/pncconf.glade:45454 +#: src/emc/usr_intf/pncconf/pncconf.glade:47120 +#: src/emc/usr_intf/pncconf/pncconf.glade:47367 +#: src/emc/usr_intf/pncconf/pncconf.glade:51882 +#: src/emc/usr_intf/pncconf/pncconf.glade:52128 +#: src/emc/usr_intf/pncconf/pncconf.glade:52377 +#: src/emc/usr_intf/pncconf/pncconf.glade:54043 +#: src/emc/usr_intf/pncconf/pncconf.glade:54290 +#: src/emc/usr_intf/pncconf/pncconf.glade:58805 +#: src/emc/usr_intf/pncconf/pncconf.glade:59051 +#: src/emc/usr_intf/pncconf/pncconf.glade:59300 +msgid "Pin Type" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2708 -msgid "External MPG Jogging" +#: src/emc/usr_intf/pncconf/pncconf.glade:8838 +#: src/emc/usr_intf/pncconf/pncconf.glade:8900 +#: src/emc/usr_intf/pncconf/pncconf.glade:13743 +#: src/emc/usr_intf/pncconf/pncconf.glade:13806 +#: src/emc/usr_intf/pncconf/pncconf.glade:16335 +#: src/emc/usr_intf/pncconf/pncconf.glade:16398 +#: src/emc/usr_intf/pncconf/pncconf.glade:18949 +#: src/emc/usr_intf/pncconf/pncconf.glade:19012 +#: src/emc/usr_intf/pncconf/pncconf.glade:20751 +#: src/emc/usr_intf/pncconf/pncconf.glade:20808 +#: src/emc/usr_intf/pncconf/pncconf.glade:20962 +#: src/emc/usr_intf/pncconf/pncconf.glade:21018 +#: src/emc/usr_intf/pncconf/pncconf.glade:22758 +#: src/emc/usr_intf/pncconf/pncconf.glade:22814 +#: src/emc/usr_intf/pncconf/pncconf.glade:24554 +#: src/emc/usr_intf/pncconf/pncconf.glade:24610 +#: src/emc/usr_intf/pncconf/pncconf.glade:26366 +#: src/emc/usr_intf/pncconf/pncconf.glade:26428 +#: src/emc/usr_intf/pncconf/pncconf.glade:31286 +#: src/emc/usr_intf/pncconf/pncconf.glade:31349 +#: src/emc/usr_intf/pncconf/pncconf.glade:31634 +#: src/emc/usr_intf/pncconf/pncconf.glade:35631 +#: src/emc/usr_intf/pncconf/pncconf.glade:35694 +#: src/emc/usr_intf/pncconf/pncconf.glade:35850 +#: src/emc/usr_intf/pncconf/pncconf.glade:35912 +#: src/emc/usr_intf/pncconf/pncconf.glade:40025 +#: src/emc/usr_intf/pncconf/pncconf.glade:40210 +#: src/emc/usr_intf/pncconf/pncconf.glade:40272 +#: src/emc/usr_intf/pncconf/pncconf.glade:45130 +#: src/emc/usr_intf/pncconf/pncconf.glade:45193 +#: src/emc/usr_intf/pncconf/pncconf.glade:45467 +#: src/emc/usr_intf/pncconf/pncconf.glade:47133 +#: src/emc/usr_intf/pncconf/pncconf.glade:47195 +#: src/emc/usr_intf/pncconf/pncconf.glade:52053 +#: src/emc/usr_intf/pncconf/pncconf.glade:52116 +#: src/emc/usr_intf/pncconf/pncconf.glade:52390 +#: src/emc/usr_intf/pncconf/pncconf.glade:54056 +#: src/emc/usr_intf/pncconf/pncconf.glade:54118 +#: src/emc/usr_intf/pncconf/pncconf.glade:58976 +#: src/emc/usr_intf/pncconf/pncconf.glade:59039 +#: src/emc/usr_intf/pncconf/pncconf.glade:59313 +msgid "Inv" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2739 -#: src/emc/usr_intf/pncconf/pncconf.glade:3620 -#: src/emc/usr_intf/pncconf/pncconf.glade:4501 -msgid "Use MPG " +#: src/emc/usr_intf/pncconf/pncconf.glade:8867 +#: src/emc/usr_intf/pncconf/pncconf.glade:10731 +#: src/emc/usr_intf/pncconf/pncconf.glade:10751 +#: src/emc/usr_intf/pncconf/pncconf.glade:10771 +#: src/emc/usr_intf/pncconf/pncconf.glade:10791 +#: src/emc/usr_intf/pncconf/pncconf.glade:10811 +#: src/emc/usr_intf/pncconf/pncconf.glade:10831 +#: src/emc/usr_intf/pncconf/pncconf.glade:10851 +#: src/emc/usr_intf/pncconf/pncconf.glade:10871 +#: src/emc/usr_intf/pncconf/pncconf.glade:10891 +#: src/emc/usr_intf/pncconf/pncconf.glade:10911 +#: src/emc/usr_intf/pncconf/pncconf.glade:10931 +#: src/emc/usr_intf/pncconf/pncconf.glade:10951 +#: src/emc/usr_intf/pncconf/pncconf.glade:10971 +#: src/emc/usr_intf/pncconf/pncconf.glade:10991 +#: src/emc/usr_intf/pncconf/pncconf.glade:11011 +#: src/emc/usr_intf/pncconf/pncconf.glade:11031 +#: src/emc/usr_intf/pncconf/pncconf.glade:11051 +#: src/emc/usr_intf/pncconf/pncconf.glade:11071 +#: src/emc/usr_intf/pncconf/pncconf.glade:11091 +#: src/emc/usr_intf/pncconf/pncconf.glade:11111 +#: src/emc/usr_intf/pncconf/pncconf.glade:11131 +#: src/emc/usr_intf/pncconf/pncconf.glade:11151 +#: src/emc/usr_intf/pncconf/pncconf.glade:11171 +#: src/emc/usr_intf/pncconf/pncconf.glade:11465 +#: src/emc/usr_intf/pncconf/pncconf.glade:11485 +#: src/emc/usr_intf/pncconf/pncconf.glade:11505 +#: src/emc/usr_intf/pncconf/pncconf.glade:11525 +#: src/emc/usr_intf/pncconf/pncconf.glade:11545 +#: src/emc/usr_intf/pncconf/pncconf.glade:11565 +#: src/emc/usr_intf/pncconf/pncconf.glade:11585 +#: src/emc/usr_intf/pncconf/pncconf.glade:11605 +#: src/emc/usr_intf/pncconf/pncconf.glade:11625 +#: src/emc/usr_intf/pncconf/pncconf.glade:11645 +#: src/emc/usr_intf/pncconf/pncconf.glade:11665 +#: src/emc/usr_intf/pncconf/pncconf.glade:11685 +#: src/emc/usr_intf/pncconf/pncconf.glade:11705 +#: src/emc/usr_intf/pncconf/pncconf.glade:11725 +#: src/emc/usr_intf/pncconf/pncconf.glade:11745 +#: src/emc/usr_intf/pncconf/pncconf.glade:11765 +#: src/emc/usr_intf/pncconf/pncconf.glade:11785 +#: src/emc/usr_intf/pncconf/pncconf.glade:11805 +#: src/emc/usr_intf/pncconf/pncconf.glade:11825 +#: src/emc/usr_intf/pncconf/pncconf.glade:11845 +#: src/emc/usr_intf/pncconf/pncconf.glade:11865 +#: src/emc/usr_intf/pncconf/pncconf.glade:11885 +#: src/emc/usr_intf/pncconf/pncconf.glade:11905 +#: src/emc/usr_intf/pncconf/pncconf.glade:13768 +#: src/emc/usr_intf/pncconf/pncconf.glade:13974 +#: src/emc/usr_intf/pncconf/pncconf.glade:13994 +#: src/emc/usr_intf/pncconf/pncconf.glade:14014 +#: src/emc/usr_intf/pncconf/pncconf.glade:14034 +#: src/emc/usr_intf/pncconf/pncconf.glade:14054 +#: src/emc/usr_intf/pncconf/pncconf.glade:14074 +#: src/emc/usr_intf/pncconf/pncconf.glade:14094 +#: src/emc/usr_intf/pncconf/pncconf.glade:14114 +#: src/emc/usr_intf/pncconf/pncconf.glade:14134 +#: src/emc/usr_intf/pncconf/pncconf.glade:14154 +#: src/emc/usr_intf/pncconf/pncconf.glade:14174 +#: src/emc/usr_intf/pncconf/pncconf.glade:14194 +#: src/emc/usr_intf/pncconf/pncconf.glade:14214 +#: src/emc/usr_intf/pncconf/pncconf.glade:14234 +#: src/emc/usr_intf/pncconf/pncconf.glade:14254 +#: src/emc/usr_intf/pncconf/pncconf.glade:14274 +#: src/emc/usr_intf/pncconf/pncconf.glade:14294 +#: src/emc/usr_intf/pncconf/pncconf.glade:14314 +#: src/emc/usr_intf/pncconf/pncconf.glade:14334 +#: src/emc/usr_intf/pncconf/pncconf.glade:14354 +#: src/emc/usr_intf/pncconf/pncconf.glade:14374 +#: src/emc/usr_intf/pncconf/pncconf.glade:14394 +#: src/emc/usr_intf/pncconf/pncconf.glade:14414 +#: src/emc/usr_intf/pncconf/pncconf.glade:16360 +#: src/emc/usr_intf/pncconf/pncconf.glade:16670 +#: src/emc/usr_intf/pncconf/pncconf.glade:16690 +#: src/emc/usr_intf/pncconf/pncconf.glade:16710 +#: src/emc/usr_intf/pncconf/pncconf.glade:16730 +#: src/emc/usr_intf/pncconf/pncconf.glade:16750 +#: src/emc/usr_intf/pncconf/pncconf.glade:16770 +#: src/emc/usr_intf/pncconf/pncconf.glade:16790 +#: src/emc/usr_intf/pncconf/pncconf.glade:16810 +#: src/emc/usr_intf/pncconf/pncconf.glade:16830 +#: src/emc/usr_intf/pncconf/pncconf.glade:16850 +#: src/emc/usr_intf/pncconf/pncconf.glade:16870 +#: src/emc/usr_intf/pncconf/pncconf.glade:16890 +#: src/emc/usr_intf/pncconf/pncconf.glade:16910 +#: src/emc/usr_intf/pncconf/pncconf.glade:16930 +#: src/emc/usr_intf/pncconf/pncconf.glade:16950 +#: src/emc/usr_intf/pncconf/pncconf.glade:16970 +#: src/emc/usr_intf/pncconf/pncconf.glade:16990 +#: src/emc/usr_intf/pncconf/pncconf.glade:17010 +#: src/emc/usr_intf/pncconf/pncconf.glade:17030 +#: src/emc/usr_intf/pncconf/pncconf.glade:17050 +#: src/emc/usr_intf/pncconf/pncconf.glade:17070 +#: src/emc/usr_intf/pncconf/pncconf.glade:17090 +#: src/emc/usr_intf/pncconf/pncconf.glade:17110 +#: src/emc/usr_intf/pncconf/pncconf.glade:18974 +#: src/emc/usr_intf/pncconf/pncconf.glade:26395 +#: src/emc/usr_intf/pncconf/pncconf.glade:28311 +#: src/emc/usr_intf/pncconf/pncconf.glade:28331 +#: src/emc/usr_intf/pncconf/pncconf.glade:28351 +#: src/emc/usr_intf/pncconf/pncconf.glade:28371 +#: src/emc/usr_intf/pncconf/pncconf.glade:28391 +#: src/emc/usr_intf/pncconf/pncconf.glade:28411 +#: src/emc/usr_intf/pncconf/pncconf.glade:28431 +#: src/emc/usr_intf/pncconf/pncconf.glade:28451 +#: src/emc/usr_intf/pncconf/pncconf.glade:28471 +#: src/emc/usr_intf/pncconf/pncconf.glade:28491 +#: src/emc/usr_intf/pncconf/pncconf.glade:28511 +#: src/emc/usr_intf/pncconf/pncconf.glade:28531 +#: src/emc/usr_intf/pncconf/pncconf.glade:28551 +#: src/emc/usr_intf/pncconf/pncconf.glade:28571 +#: src/emc/usr_intf/pncconf/pncconf.glade:28591 +#: src/emc/usr_intf/pncconf/pncconf.glade:28611 +#: src/emc/usr_intf/pncconf/pncconf.glade:28631 +#: src/emc/usr_intf/pncconf/pncconf.glade:28651 +#: src/emc/usr_intf/pncconf/pncconf.glade:28671 +#: src/emc/usr_intf/pncconf/pncconf.glade:28691 +#: src/emc/usr_intf/pncconf/pncconf.glade:28711 +#: src/emc/usr_intf/pncconf/pncconf.glade:28731 +#: src/emc/usr_intf/pncconf/pncconf.glade:28751 +#: src/emc/usr_intf/pncconf/pncconf.glade:28942 +#: src/emc/usr_intf/pncconf/pncconf.glade:28962 +#: src/emc/usr_intf/pncconf/pncconf.glade:28982 +#: src/emc/usr_intf/pncconf/pncconf.glade:29002 +#: src/emc/usr_intf/pncconf/pncconf.glade:29022 +#: src/emc/usr_intf/pncconf/pncconf.glade:29042 +#: src/emc/usr_intf/pncconf/pncconf.glade:29062 +#: src/emc/usr_intf/pncconf/pncconf.glade:29082 +#: src/emc/usr_intf/pncconf/pncconf.glade:29102 +#: src/emc/usr_intf/pncconf/pncconf.glade:29122 +#: src/emc/usr_intf/pncconf/pncconf.glade:29142 +#: src/emc/usr_intf/pncconf/pncconf.glade:29162 +#: src/emc/usr_intf/pncconf/pncconf.glade:29182 +#: src/emc/usr_intf/pncconf/pncconf.glade:29202 +#: src/emc/usr_intf/pncconf/pncconf.glade:29222 +#: src/emc/usr_intf/pncconf/pncconf.glade:29242 +#: src/emc/usr_intf/pncconf/pncconf.glade:29262 +#: src/emc/usr_intf/pncconf/pncconf.glade:29282 +#: src/emc/usr_intf/pncconf/pncconf.glade:29302 +#: src/emc/usr_intf/pncconf/pncconf.glade:29322 +#: src/emc/usr_intf/pncconf/pncconf.glade:29342 +#: src/emc/usr_intf/pncconf/pncconf.glade:29362 +#: src/emc/usr_intf/pncconf/pncconf.glade:29382 +#: src/emc/usr_intf/pncconf/pncconf.glade:31311 +#: src/emc/usr_intf/pncconf/pncconf.glade:31663 +#: src/emc/usr_intf/pncconf/pncconf.glade:32881 +#: src/emc/usr_intf/pncconf/pncconf.glade:32901 +#: src/emc/usr_intf/pncconf/pncconf.glade:32921 +#: src/emc/usr_intf/pncconf/pncconf.glade:32941 +#: src/emc/usr_intf/pncconf/pncconf.glade:32961 +#: src/emc/usr_intf/pncconf/pncconf.glade:32981 +#: src/emc/usr_intf/pncconf/pncconf.glade:33001 +#: src/emc/usr_intf/pncconf/pncconf.glade:33021 +#: src/emc/usr_intf/pncconf/pncconf.glade:33041 +#: src/emc/usr_intf/pncconf/pncconf.glade:33061 +#: src/emc/usr_intf/pncconf/pncconf.glade:33081 +#: src/emc/usr_intf/pncconf/pncconf.glade:33300 +#: src/emc/usr_intf/pncconf/pncconf.glade:33320 +#: src/emc/usr_intf/pncconf/pncconf.glade:33340 +#: src/emc/usr_intf/pncconf/pncconf.glade:33360 +#: src/emc/usr_intf/pncconf/pncconf.glade:33380 +#: src/emc/usr_intf/pncconf/pncconf.glade:33400 +#: src/emc/usr_intf/pncconf/pncconf.glade:33420 +#: src/emc/usr_intf/pncconf/pncconf.glade:33440 +#: src/emc/usr_intf/pncconf/pncconf.glade:33460 +#: src/emc/usr_intf/pncconf/pncconf.glade:33480 +#: src/emc/usr_intf/pncconf/pncconf.glade:33500 +#: src/emc/usr_intf/pncconf/pncconf.glade:33520 +#: src/emc/usr_intf/pncconf/pncconf.glade:33540 +#: src/emc/usr_intf/pncconf/pncconf.glade:33560 +#: src/emc/usr_intf/pncconf/pncconf.glade:33580 +#: src/emc/usr_intf/pncconf/pncconf.glade:33600 +#: src/emc/usr_intf/pncconf/pncconf.glade:33620 +#: src/emc/usr_intf/pncconf/pncconf.glade:33640 +#: src/emc/usr_intf/pncconf/pncconf.glade:33660 +#: src/emc/usr_intf/pncconf/pncconf.glade:33680 +#: src/emc/usr_intf/pncconf/pncconf.glade:33700 +#: src/emc/usr_intf/pncconf/pncconf.glade:33720 +#: src/emc/usr_intf/pncconf/pncconf.glade:33740 +#: src/emc/usr_intf/pncconf/pncconf.glade:35656 +#: src/emc/usr_intf/pncconf/pncconf.glade:35879 +#: src/emc/usr_intf/pncconf/pncconf.glade:37808 +#: src/emc/usr_intf/pncconf/pncconf.glade:37828 +#: src/emc/usr_intf/pncconf/pncconf.glade:37848 +#: src/emc/usr_intf/pncconf/pncconf.glade:37868 +#: src/emc/usr_intf/pncconf/pncconf.glade:37888 +#: src/emc/usr_intf/pncconf/pncconf.glade:37908 +#: src/emc/usr_intf/pncconf/pncconf.glade:37928 +#: src/emc/usr_intf/pncconf/pncconf.glade:37948 +#: src/emc/usr_intf/pncconf/pncconf.glade:37968 +#: src/emc/usr_intf/pncconf/pncconf.glade:37988 +#: src/emc/usr_intf/pncconf/pncconf.glade:38008 +#: src/emc/usr_intf/pncconf/pncconf.glade:38028 +#: src/emc/usr_intf/pncconf/pncconf.glade:38048 +#: src/emc/usr_intf/pncconf/pncconf.glade:38068 +#: src/emc/usr_intf/pncconf/pncconf.glade:38088 +#: src/emc/usr_intf/pncconf/pncconf.glade:38108 +#: src/emc/usr_intf/pncconf/pncconf.glade:38128 +#: src/emc/usr_intf/pncconf/pncconf.glade:38148 +#: src/emc/usr_intf/pncconf/pncconf.glade:38168 +#: src/emc/usr_intf/pncconf/pncconf.glade:38188 +#: src/emc/usr_intf/pncconf/pncconf.glade:38208 +#: src/emc/usr_intf/pncconf/pncconf.glade:38228 +#: src/emc/usr_intf/pncconf/pncconf.glade:38248 +#: src/emc/usr_intf/pncconf/pncconf.glade:38557 +#: src/emc/usr_intf/pncconf/pncconf.glade:38577 +#: src/emc/usr_intf/pncconf/pncconf.glade:38597 +#: src/emc/usr_intf/pncconf/pncconf.glade:38617 +#: src/emc/usr_intf/pncconf/pncconf.glade:38637 +#: src/emc/usr_intf/pncconf/pncconf.glade:38657 +#: src/emc/usr_intf/pncconf/pncconf.glade:38677 +#: src/emc/usr_intf/pncconf/pncconf.glade:38697 +#: src/emc/usr_intf/pncconf/pncconf.glade:38717 +#: src/emc/usr_intf/pncconf/pncconf.glade:38737 +#: src/emc/usr_intf/pncconf/pncconf.glade:38757 +#: src/emc/usr_intf/pncconf/pncconf.glade:39987 +#: src/emc/usr_intf/pncconf/pncconf.glade:40239 +#: src/emc/usr_intf/pncconf/pncconf.glade:42155 +#: src/emc/usr_intf/pncconf/pncconf.glade:42175 +#: src/emc/usr_intf/pncconf/pncconf.glade:42195 +#: src/emc/usr_intf/pncconf/pncconf.glade:42215 +#: src/emc/usr_intf/pncconf/pncconf.glade:42235 +#: src/emc/usr_intf/pncconf/pncconf.glade:42255 +#: src/emc/usr_intf/pncconf/pncconf.glade:42275 +#: src/emc/usr_intf/pncconf/pncconf.glade:42295 +#: src/emc/usr_intf/pncconf/pncconf.glade:42315 +#: src/emc/usr_intf/pncconf/pncconf.glade:42335 +#: src/emc/usr_intf/pncconf/pncconf.glade:42355 +#: src/emc/usr_intf/pncconf/pncconf.glade:42375 +#: src/emc/usr_intf/pncconf/pncconf.glade:42395 +#: src/emc/usr_intf/pncconf/pncconf.glade:42415 +#: src/emc/usr_intf/pncconf/pncconf.glade:42435 +#: src/emc/usr_intf/pncconf/pncconf.glade:42455 +#: src/emc/usr_intf/pncconf/pncconf.glade:42475 +#: src/emc/usr_intf/pncconf/pncconf.glade:42495 +#: src/emc/usr_intf/pncconf/pncconf.glade:42515 +#: src/emc/usr_intf/pncconf/pncconf.glade:42535 +#: src/emc/usr_intf/pncconf/pncconf.glade:42555 +#: src/emc/usr_intf/pncconf/pncconf.glade:42575 +#: src/emc/usr_intf/pncconf/pncconf.glade:42595 +#: src/emc/usr_intf/pncconf/pncconf.glade:42786 +#: src/emc/usr_intf/pncconf/pncconf.glade:42806 +#: src/emc/usr_intf/pncconf/pncconf.glade:42826 +#: src/emc/usr_intf/pncconf/pncconf.glade:42846 +#: src/emc/usr_intf/pncconf/pncconf.glade:42866 +#: src/emc/usr_intf/pncconf/pncconf.glade:42886 +#: src/emc/usr_intf/pncconf/pncconf.glade:42906 +#: src/emc/usr_intf/pncconf/pncconf.glade:42926 +#: src/emc/usr_intf/pncconf/pncconf.glade:42946 +#: src/emc/usr_intf/pncconf/pncconf.glade:42966 +#: src/emc/usr_intf/pncconf/pncconf.glade:42986 +#: src/emc/usr_intf/pncconf/pncconf.glade:43006 +#: src/emc/usr_intf/pncconf/pncconf.glade:43026 +#: src/emc/usr_intf/pncconf/pncconf.glade:43046 +#: src/emc/usr_intf/pncconf/pncconf.glade:43066 +#: src/emc/usr_intf/pncconf/pncconf.glade:43086 +#: src/emc/usr_intf/pncconf/pncconf.glade:43106 +#: src/emc/usr_intf/pncconf/pncconf.glade:43126 +#: src/emc/usr_intf/pncconf/pncconf.glade:43146 +#: src/emc/usr_intf/pncconf/pncconf.glade:43166 +#: src/emc/usr_intf/pncconf/pncconf.glade:43186 +#: src/emc/usr_intf/pncconf/pncconf.glade:43206 +#: src/emc/usr_intf/pncconf/pncconf.glade:43226 +#: src/emc/usr_intf/pncconf/pncconf.glade:45155 +#: src/emc/usr_intf/pncconf/pncconf.glade:45496 +#: src/emc/usr_intf/pncconf/pncconf.glade:46726 +#: src/emc/usr_intf/pncconf/pncconf.glade:46746 +#: src/emc/usr_intf/pncconf/pncconf.glade:46766 +#: src/emc/usr_intf/pncconf/pncconf.glade:46786 +#: src/emc/usr_intf/pncconf/pncconf.glade:46806 +#: src/emc/usr_intf/pncconf/pncconf.glade:46826 +#: src/emc/usr_intf/pncconf/pncconf.glade:46846 +#: src/emc/usr_intf/pncconf/pncconf.glade:46866 +#: src/emc/usr_intf/pncconf/pncconf.glade:46886 +#: src/emc/usr_intf/pncconf/pncconf.glade:46906 +#: src/emc/usr_intf/pncconf/pncconf.glade:46926 +#: src/emc/usr_intf/pncconf/pncconf.glade:47162 +#: src/emc/usr_intf/pncconf/pncconf.glade:49078 +#: src/emc/usr_intf/pncconf/pncconf.glade:49098 +#: src/emc/usr_intf/pncconf/pncconf.glade:49118 +#: src/emc/usr_intf/pncconf/pncconf.glade:49138 +#: src/emc/usr_intf/pncconf/pncconf.glade:49158 +#: src/emc/usr_intf/pncconf/pncconf.glade:49178 +#: src/emc/usr_intf/pncconf/pncconf.glade:49198 +#: src/emc/usr_intf/pncconf/pncconf.glade:49218 +#: src/emc/usr_intf/pncconf/pncconf.glade:49238 +#: src/emc/usr_intf/pncconf/pncconf.glade:49258 +#: src/emc/usr_intf/pncconf/pncconf.glade:49278 +#: src/emc/usr_intf/pncconf/pncconf.glade:49298 +#: src/emc/usr_intf/pncconf/pncconf.glade:49318 +#: src/emc/usr_intf/pncconf/pncconf.glade:49338 +#: src/emc/usr_intf/pncconf/pncconf.glade:49358 +#: src/emc/usr_intf/pncconf/pncconf.glade:49378 +#: src/emc/usr_intf/pncconf/pncconf.glade:49398 +#: src/emc/usr_intf/pncconf/pncconf.glade:49418 +#: src/emc/usr_intf/pncconf/pncconf.glade:49438 +#: src/emc/usr_intf/pncconf/pncconf.glade:49458 +#: src/emc/usr_intf/pncconf/pncconf.glade:49478 +#: src/emc/usr_intf/pncconf/pncconf.glade:49498 +#: src/emc/usr_intf/pncconf/pncconf.glade:49518 +#: src/emc/usr_intf/pncconf/pncconf.glade:49709 +#: src/emc/usr_intf/pncconf/pncconf.glade:49729 +#: src/emc/usr_intf/pncconf/pncconf.glade:49749 +#: src/emc/usr_intf/pncconf/pncconf.glade:49769 +#: src/emc/usr_intf/pncconf/pncconf.glade:49789 +#: src/emc/usr_intf/pncconf/pncconf.glade:49809 +#: src/emc/usr_intf/pncconf/pncconf.glade:49829 +#: src/emc/usr_intf/pncconf/pncconf.glade:49849 +#: src/emc/usr_intf/pncconf/pncconf.glade:49869 +#: src/emc/usr_intf/pncconf/pncconf.glade:49889 +#: src/emc/usr_intf/pncconf/pncconf.glade:49909 +#: src/emc/usr_intf/pncconf/pncconf.glade:49929 +#: src/emc/usr_intf/pncconf/pncconf.glade:49949 +#: src/emc/usr_intf/pncconf/pncconf.glade:49969 +#: src/emc/usr_intf/pncconf/pncconf.glade:49989 +#: src/emc/usr_intf/pncconf/pncconf.glade:50009 +#: src/emc/usr_intf/pncconf/pncconf.glade:50029 +#: src/emc/usr_intf/pncconf/pncconf.glade:50049 +#: src/emc/usr_intf/pncconf/pncconf.glade:50069 +#: src/emc/usr_intf/pncconf/pncconf.glade:50089 +#: src/emc/usr_intf/pncconf/pncconf.glade:50109 +#: src/emc/usr_intf/pncconf/pncconf.glade:50129 +#: src/emc/usr_intf/pncconf/pncconf.glade:50149 +#: src/emc/usr_intf/pncconf/pncconf.glade:52078 +#: src/emc/usr_intf/pncconf/pncconf.glade:52419 +#: src/emc/usr_intf/pncconf/pncconf.glade:53649 +#: src/emc/usr_intf/pncconf/pncconf.glade:53669 +#: src/emc/usr_intf/pncconf/pncconf.glade:53689 +#: src/emc/usr_intf/pncconf/pncconf.glade:53709 +#: src/emc/usr_intf/pncconf/pncconf.glade:53729 +#: src/emc/usr_intf/pncconf/pncconf.glade:53749 +#: src/emc/usr_intf/pncconf/pncconf.glade:53769 +#: src/emc/usr_intf/pncconf/pncconf.glade:53789 +#: src/emc/usr_intf/pncconf/pncconf.glade:53809 +#: src/emc/usr_intf/pncconf/pncconf.glade:53829 +#: src/emc/usr_intf/pncconf/pncconf.glade:53849 +#: src/emc/usr_intf/pncconf/pncconf.glade:54085 +#: src/emc/usr_intf/pncconf/pncconf.glade:56001 +#: src/emc/usr_intf/pncconf/pncconf.glade:56021 +#: src/emc/usr_intf/pncconf/pncconf.glade:56041 +#: src/emc/usr_intf/pncconf/pncconf.glade:56061 +#: src/emc/usr_intf/pncconf/pncconf.glade:56081 +#: src/emc/usr_intf/pncconf/pncconf.glade:56101 +#: src/emc/usr_intf/pncconf/pncconf.glade:56121 +#: src/emc/usr_intf/pncconf/pncconf.glade:56141 +#: src/emc/usr_intf/pncconf/pncconf.glade:56161 +#: src/emc/usr_intf/pncconf/pncconf.glade:56181 +#: src/emc/usr_intf/pncconf/pncconf.glade:56201 +#: src/emc/usr_intf/pncconf/pncconf.glade:56221 +#: src/emc/usr_intf/pncconf/pncconf.glade:56241 +#: src/emc/usr_intf/pncconf/pncconf.glade:56261 +#: src/emc/usr_intf/pncconf/pncconf.glade:56281 +#: src/emc/usr_intf/pncconf/pncconf.glade:56301 +#: src/emc/usr_intf/pncconf/pncconf.glade:56321 +#: src/emc/usr_intf/pncconf/pncconf.glade:56341 +#: src/emc/usr_intf/pncconf/pncconf.glade:56361 +#: src/emc/usr_intf/pncconf/pncconf.glade:56381 +#: src/emc/usr_intf/pncconf/pncconf.glade:56401 +#: src/emc/usr_intf/pncconf/pncconf.glade:56421 +#: src/emc/usr_intf/pncconf/pncconf.glade:56441 +#: src/emc/usr_intf/pncconf/pncconf.glade:56632 +#: src/emc/usr_intf/pncconf/pncconf.glade:56652 +#: src/emc/usr_intf/pncconf/pncconf.glade:56672 +#: src/emc/usr_intf/pncconf/pncconf.glade:56692 +#: src/emc/usr_intf/pncconf/pncconf.glade:56712 +#: src/emc/usr_intf/pncconf/pncconf.glade:56732 +#: src/emc/usr_intf/pncconf/pncconf.glade:56752 +#: src/emc/usr_intf/pncconf/pncconf.glade:56772 +#: src/emc/usr_intf/pncconf/pncconf.glade:56792 +#: src/emc/usr_intf/pncconf/pncconf.glade:56812 +#: src/emc/usr_intf/pncconf/pncconf.glade:56832 +#: src/emc/usr_intf/pncconf/pncconf.glade:56852 +#: src/emc/usr_intf/pncconf/pncconf.glade:56872 +#: src/emc/usr_intf/pncconf/pncconf.glade:56892 +#: src/emc/usr_intf/pncconf/pncconf.glade:56912 +#: src/emc/usr_intf/pncconf/pncconf.glade:56932 +#: src/emc/usr_intf/pncconf/pncconf.glade:56952 +#: src/emc/usr_intf/pncconf/pncconf.glade:56972 +#: src/emc/usr_intf/pncconf/pncconf.glade:56992 +#: src/emc/usr_intf/pncconf/pncconf.glade:57012 +#: src/emc/usr_intf/pncconf/pncconf.glade:57032 +#: src/emc/usr_intf/pncconf/pncconf.glade:57052 +#: src/emc/usr_intf/pncconf/pncconf.glade:57072 +#: src/emc/usr_intf/pncconf/pncconf.glade:59001 +#: src/emc/usr_intf/pncconf/pncconf.glade:59342 +#: src/emc/usr_intf/pncconf/pncconf.glade:60572 +#: src/emc/usr_intf/pncconf/pncconf.glade:60592 +#: src/emc/usr_intf/pncconf/pncconf.glade:60612 +#: src/emc/usr_intf/pncconf/pncconf.glade:60632 +#: src/emc/usr_intf/pncconf/pncconf.glade:60652 +#: src/emc/usr_intf/pncconf/pncconf.glade:60672 +#: src/emc/usr_intf/pncconf/pncconf.glade:60692 +#: src/emc/usr_intf/pncconf/pncconf.glade:60712 +#: src/emc/usr_intf/pncconf/pncconf.glade:60732 +#: src/emc/usr_intf/pncconf/pncconf.glade:60752 +#: src/emc/usr_intf/pncconf/pncconf.glade:60772 +msgid "" +"GPIO Input\n" +"GPIO Output\n" +"GPIO O Drain\n" +"Encoder\n" +"PWM\n" +"StepGen\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2752 -#: src/emc/usr_intf/pncconf/pncconf.glade:3633 -#: src/emc/usr_intf/pncconf/pncconf.glade:4514 -msgid "use switches" +#: src/emc/usr_intf/pncconf/pncconf.glade:8913 +#: src/emc/usr_intf/pncconf/pncconf.glade:13730 +#: src/emc/usr_intf/pncconf/pncconf.glade:18936 +#: src/emc/usr_intf/pncconf/pncconf.glade:20738 +#: src/emc/usr_intf/pncconf/pncconf.glade:21031 +#: src/emc/usr_intf/pncconf/pncconf.glade:22827 +#: src/emc/usr_intf/pncconf/pncconf.glade:24623 +msgid " 1:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2838 -#: src/emc/usr_intf/pncconf/pncconf.glade:3733 -#: src/emc/usr_intf/pncconf/pncconf.glade:4614 -msgid "ignore all-inputs false" +#: src/emc/usr_intf/pncconf/pncconf.glade:8927 +#: src/emc/usr_intf/pncconf/pncconf.glade:13716 +#: src/emc/usr_intf/pncconf/pncconf.glade:18922 +#: src/emc/usr_intf/pncconf/pncconf.glade:20724 +#: src/emc/usr_intf/pncconf/pncconf.glade:21045 +#: src/emc/usr_intf/pncconf/pncconf.glade:22841 +#: src/emc/usr_intf/pncconf/pncconf.glade:24637 +msgid " 3:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2853 -#: src/emc/usr_intf/pncconf/pncconf.glade:3748 -#: src/emc/usr_intf/pncconf/pncconf.glade:4629 -msgid "use graycode" +#: src/emc/usr_intf/pncconf/pncconf.glade:8941 +#: src/emc/usr_intf/pncconf/pncconf.glade:13702 +#: src/emc/usr_intf/pncconf/pncconf.glade:18908 +#: src/emc/usr_intf/pncconf/pncconf.glade:20710 +#: src/emc/usr_intf/pncconf/pncconf.glade:21059 +#: src/emc/usr_intf/pncconf/pncconf.glade:22855 +#: src/emc/usr_intf/pncconf/pncconf.glade:24651 +msgid " 5:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2940 -#: src/emc/usr_intf/pncconf/pncconf.glade:3821 -#: src/emc/usr_intf/pncconf/pncconf.glade:4702 -msgid " abd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8955 +#: src/emc/usr_intf/pncconf/pncconf.glade:13688 +#: src/emc/usr_intf/pncconf/pncconf.glade:18894 +#: src/emc/usr_intf/pncconf/pncconf.glade:20696 +#: src/emc/usr_intf/pncconf/pncconf.glade:21073 +#: src/emc/usr_intf/pncconf/pncconf.glade:22869 +#: src/emc/usr_intf/pncconf/pncconf.glade:24665 +msgid " 7:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:3555 -#: src/emc/usr_intf/pncconf/pncconf.glade:4436 -#: src/emc/usr_intf/pncconf/pncconf.glade:5317 -msgid "Increments" +#: src/emc/usr_intf/pncconf/pncconf.glade:8969 +#: src/emc/usr_intf/pncconf/pncconf.glade:13674 +#: src/emc/usr_intf/pncconf/pncconf.glade:18880 +#: src/emc/usr_intf/pncconf/pncconf.glade:20682 +#: src/emc/usr_intf/pncconf/pncconf.glade:21087 +#: src/emc/usr_intf/pncconf/pncconf.glade:22883 +#: src/emc/usr_intf/pncconf/pncconf.glade:24679 +msgid " 9:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:3589 -#, fuzzy -msgid "External Feed Override" -msgstr "Matnings överjusterning (%): #guessing again" - -#: src/emc/usr_intf/pncconf/pncconf.glade:4470 -msgid "Max Velocity Override" +#: src/emc/usr_intf/pncconf/pncconf.glade:8983 +#: src/emc/usr_intf/pncconf/pncconf.glade:13660 +#: src/emc/usr_intf/pncconf/pncconf.glade:18866 +#: src/emc/usr_intf/pncconf/pncconf.glade:20668 +#: src/emc/usr_intf/pncconf/pncconf.glade:21101 +#: src/emc/usr_intf/pncconf/pncconf.glade:22897 +#: src/emc/usr_intf/pncconf/pncconf.glade:24693 +msgid "11:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5351 -#, fuzzy -msgid "External Spindle Override" -msgstr "Matnings överjusterning (%): #guessing again" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5379 -#, fuzzy -msgid "GUI configuration" -msgstr "Hal _configuration" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5398 -msgid "Frontend" +#: src/emc/usr_intf/pncconf/pncconf.glade:8997 +#: src/emc/usr_intf/pncconf/pncconf.glade:13646 +#: src/emc/usr_intf/pncconf/pncconf.glade:18852 +#: src/emc/usr_intf/pncconf/pncconf.glade:20654 +#: src/emc/usr_intf/pncconf/pncconf.glade:21115 +#: src/emc/usr_intf/pncconf/pncconf.glade:22911 +#: src/emc/usr_intf/pncconf/pncconf.glade:24707 +msgid "13:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5557 -#, fuzzy -msgid "" -"Commanded\n" -"Actual" -msgstr "MDI-Kommando:" - -# ***: ../tcl/axis.tcl:1514 -#: src/emc/usr_intf/pncconf/pncconf.glade:5570 -#, fuzzy -msgid "" -"Machine\n" -"Relative\n" -msgstr "Position:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5608 -#, fuzzy -msgid "Max Feed Override" -msgstr "Matnings överjusterning (%): #guessing again" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5667 -#, fuzzy -msgid "Min Spindle Override" -msgstr "Matnings överjusterning (%): #guessing again" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5691 -#, fuzzy -msgid "Max Spindle Override " -msgstr "Matnings överjusterning (%): #guessing again" - -# ***: ../tcl/axis.tcl:1514 -#: src/emc/usr_intf/pncconf/pncconf.glade:5702 -#, fuzzy -msgid "Position_feedback" -msgstr "Position:" - -# ***: ../tcl/axis.tcl:1514 -#: src/emc/usr_intf/pncconf/pncconf.glade:5713 -#, fuzzy -msgid "Position_offset" -msgstr "Position:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5721 -msgid "General GUI Defaults" +#: src/emc/usr_intf/pncconf/pncconf.glade:9011 +#: src/emc/usr_intf/pncconf/pncconf.glade:13632 +#: src/emc/usr_intf/pncconf/pncconf.glade:18838 +#: src/emc/usr_intf/pncconf/pncconf.glade:20640 +#: src/emc/usr_intf/pncconf/pncconf.glade:21129 +#: src/emc/usr_intf/pncconf/pncconf.glade:22925 +#: src/emc/usr_intf/pncconf/pncconf.glade:24721 +msgid "15:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5808 -msgid "Force Axis to Maximize" +#: src/emc/usr_intf/pncconf/pncconf.glade:9025 +#: src/emc/usr_intf/pncconf/pncconf.glade:13618 +#: src/emc/usr_intf/pncconf/pncconf.glade:18824 +#: src/emc/usr_intf/pncconf/pncconf.glade:20626 +#: src/emc/usr_intf/pncconf/pncconf.glade:21143 +#: src/emc/usr_intf/pncconf/pncconf.glade:22939 +#: src/emc/usr_intf/pncconf/pncconf.glade:24735 +msgid "17:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5832 -#: src/emc/usr_intf/pncconf/pncconf.glade:6602 -#: src/emc/usr_intf/pncconf/pncconf.glade:6841 -#: src/emc/usr_intf/pncconf/pncconf.glade:7328 -msgid "H" +#: src/emc/usr_intf/pncconf/pncconf.glade:9039 +#: src/emc/usr_intf/pncconf/pncconf.glade:13604 +#: src/emc/usr_intf/pncconf/pncconf.glade:18810 +#: src/emc/usr_intf/pncconf/pncconf.glade:20612 +#: src/emc/usr_intf/pncconf/pncconf.glade:21157 +#: src/emc/usr_intf/pncconf/pncconf.glade:22953 +#: src/emc/usr_intf/pncconf/pncconf.glade:24749 +msgid "19:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5866 -#: src/emc/usr_intf/pncconf/pncconf.glade:6568 -#: src/emc/usr_intf/pncconf/pncconf.glade:6875 -#: src/emc/usr_intf/pncconf/pncconf.glade:7294 -msgid "W" +#: src/emc/usr_intf/pncconf/pncconf.glade:9053 +#: src/emc/usr_intf/pncconf/pncconf.glade:13590 +#: src/emc/usr_intf/pncconf/pncconf.glade:18796 +#: src/emc/usr_intf/pncconf/pncconf.glade:20598 +#: src/emc/usr_intf/pncconf/pncconf.glade:21171 +#: src/emc/usr_intf/pncconf/pncconf.glade:22967 +#: src/emc/usr_intf/pncconf/pncconf.glade:24763 +msgid "21:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5876 -#: src/emc/usr_intf/pncconf/pncconf.glade:6556 -#: src/emc/usr_intf/pncconf/pncconf.glade:6885 -#: src/emc/usr_intf/pncconf/pncconf.glade:7282 -msgid "X" +#: src/emc/usr_intf/pncconf/pncconf.glade:9067 +#: src/emc/usr_intf/pncconf/pncconf.glade:13576 +#: src/emc/usr_intf/pncconf/pncconf.glade:18782 +#: src/emc/usr_intf/pncconf/pncconf.glade:20584 +#: src/emc/usr_intf/pncconf/pncconf.glade:21185 +#: src/emc/usr_intf/pncconf/pncconf.glade:22981 +#: src/emc/usr_intf/pncconf/pncconf.glade:24777 +msgid "23:" msgstr "" -# ***: ../tcl/axis.tcl:1514 -#: src/emc/usr_intf/pncconf/pncconf.glade:5914 -#: src/emc/usr_intf/pncconf/pncconf.glade:6519 -#: src/emc/usr_intf/pncconf/pncconf.glade:6923 -#: src/emc/usr_intf/pncconf/pncconf.glade:7244 -#, fuzzy -msgid "Position" -msgstr "Position:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9801 +#: src/emc/usr_intf/pncconf/pncconf.glade:12840 +#: src/emc/usr_intf/pncconf/pncconf.glade:17994 +#: src/emc/usr_intf/pncconf/pncconf.glade:20170 +#: src/emc/usr_intf/pncconf/pncconf.glade:21597 +#: src/emc/usr_intf/pncconf/pncconf.glade:23393 +#: src/emc/usr_intf/pncconf/pncconf.glade:25189 +msgid "47:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5927 -#: src/emc/usr_intf/pncconf/pncconf.glade:6510 -#: src/emc/usr_intf/pncconf/pncconf.glade:6936 -#: src/emc/usr_intf/pncconf/pncconf.glade:7234 -msgid "size" +#: src/emc/usr_intf/pncconf/pncconf.glade:9868 +#: src/emc/usr_intf/pncconf/pncconf.glade:12773 +#: src/emc/usr_intf/pncconf/pncconf.glade:17927 +#: src/emc/usr_intf/pncconf/pncconf.glade:20119 +#: src/emc/usr_intf/pncconf/pncconf.glade:21648 +#: src/emc/usr_intf/pncconf/pncconf.glade:23444 +#: src/emc/usr_intf/pncconf/pncconf.glade:25240 +msgid "45:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5942 -#: src/emc/usr_intf/pncconf/pncconf.glade:5952 -#: src/emc/usr_intf/pncconf/pncconf.glade:6158 -msgid "mm / min" +#: src/emc/usr_intf/pncconf/pncconf.glade:9884 +#: src/emc/usr_intf/pncconf/pncconf.glade:12757 +#: src/emc/usr_intf/pncconf/pncconf.glade:17911 +#: src/emc/usr_intf/pncconf/pncconf.glade:20103 +#: src/emc/usr_intf/pncconf/pncconf.glade:21664 +#: src/emc/usr_intf/pncconf/pncconf.glade:23460 +#: src/emc/usr_intf/pncconf/pncconf.glade:25256 +msgid "43:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5975 -#: src/emc/usr_intf/pncconf/pncconf.glade:5985 -#: src/emc/usr_intf/pncconf/pncconf.glade:5997 -msgid "Deg / min" +#: src/emc/usr_intf/pncconf/pncconf.glade:9900 +#: src/emc/usr_intf/pncconf/pncconf.glade:12741 +#: src/emc/usr_intf/pncconf/pncconf.glade:17895 +#: src/emc/usr_intf/pncconf/pncconf.glade:20087 +#: src/emc/usr_intf/pncconf/pncconf.glade:21680 +#: src/emc/usr_intf/pncconf/pncconf.glade:23476 +#: src/emc/usr_intf/pncconf/pncconf.glade:25272 +msgid "41:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6010 -msgid "xyzabc" +#: src/emc/usr_intf/pncconf/pncconf.glade:9916 +#: src/emc/usr_intf/pncconf/pncconf.glade:12725 +#: src/emc/usr_intf/pncconf/pncconf.glade:17879 +#: src/emc/usr_intf/pncconf/pncconf.glade:20071 +#: src/emc/usr_intf/pncconf/pncconf.glade:21696 +#: src/emc/usr_intf/pncconf/pncconf.glade:23492 +#: src/emc/usr_intf/pncconf/pncconf.glade:25288 +msgid "39:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6023 -msgid "Axis Geometry" +#: src/emc/usr_intf/pncconf/pncconf.glade:9932 +#: src/emc/usr_intf/pncconf/pncconf.glade:12709 +#: src/emc/usr_intf/pncconf/pncconf.glade:17863 +#: src/emc/usr_intf/pncconf/pncconf.glade:20055 +#: src/emc/usr_intf/pncconf/pncconf.glade:21712 +#: src/emc/usr_intf/pncconf/pncconf.glade:23508 +#: src/emc/usr_intf/pncconf/pncconf.glade:25304 +msgid "37:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6048 -msgid "Max Angular velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:9948 +#: src/emc/usr_intf/pncconf/pncconf.glade:12693 +#: src/emc/usr_intf/pncconf/pncconf.glade:17847 +#: src/emc/usr_intf/pncconf/pncconf.glade:20039 +#: src/emc/usr_intf/pncconf/pncconf.glade:21728 +#: src/emc/usr_intf/pncconf/pncconf.glade:23524 +#: src/emc/usr_intf/pncconf/pncconf.glade:25320 +msgid "35:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6061 -msgid "5mm 1mm .5mm .1mm .05mm .01mm .005mm" +#: src/emc/usr_intf/pncconf/pncconf.glade:9964 +#: src/emc/usr_intf/pncconf/pncconf.glade:12677 +#: src/emc/usr_intf/pncconf/pncconf.glade:17831 +#: src/emc/usr_intf/pncconf/pncconf.glade:20023 +#: src/emc/usr_intf/pncconf/pncconf.glade:21744 +#: src/emc/usr_intf/pncconf/pncconf.glade:23540 +#: src/emc/usr_intf/pncconf/pncconf.glade:25336 +msgid "33:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6074 -msgid "Increments " +#: src/emc/usr_intf/pncconf/pncconf.glade:10337 +#: src/emc/usr_intf/pncconf/pncconf.glade:12304 +#: src/emc/usr_intf/pncconf/pncconf.glade:17458 +#: src/emc/usr_intf/pncconf/pncconf.glade:19762 +#: src/emc/usr_intf/pncconf/pncconf.glade:22005 +#: src/emc/usr_intf/pncconf/pncconf.glade:23801 +#: src/emc/usr_intf/pncconf/pncconf.glade:25597 +msgid "25:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6099 -msgid "Min Angular velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:10353 +#: src/emc/usr_intf/pncconf/pncconf.glade:12288 +#: src/emc/usr_intf/pncconf/pncconf.glade:17442 +#: src/emc/usr_intf/pncconf/pncconf.glade:19746 +#: src/emc/usr_intf/pncconf/pncconf.glade:22021 +#: src/emc/usr_intf/pncconf/pncconf.glade:23817 +#: src/emc/usr_intf/pncconf/pncconf.glade:25613 +msgid "27:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6112 -msgid "gedit" +#: src/emc/usr_intf/pncconf/pncconf.glade:10369 +#: src/emc/usr_intf/pncconf/pncconf.glade:12272 +#: src/emc/usr_intf/pncconf/pncconf.glade:17426 +#: src/emc/usr_intf/pncconf/pncconf.glade:19730 +#: src/emc/usr_intf/pncconf/pncconf.glade:22037 +#: src/emc/usr_intf/pncconf/pncconf.glade:23833 +#: src/emc/usr_intf/pncconf/pncconf.glade:25629 +msgid "29:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6148 -msgid "Default Angular velocity " +#: src/emc/usr_intf/pncconf/pncconf.glade:10385 +#: src/emc/usr_intf/pncconf/pncconf.glade:12256 +#: src/emc/usr_intf/pncconf/pncconf.glade:17410 +#: src/emc/usr_intf/pncconf/pncconf.glade:19714 +#: src/emc/usr_intf/pncconf/pncconf.glade:22053 +#: src/emc/usr_intf/pncconf/pncconf.glade:23849 +#: src/emc/usr_intf/pncconf/pncconf.glade:25645 +msgid "31:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6211 -msgid "Max linear velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:10677 +#: src/emc/usr_intf/pncconf/pncconf.glade:10689 +#: src/emc/usr_intf/pncconf/pncconf.glade:11955 +#: src/emc/usr_intf/pncconf/pncconf.glade:11967 +#: src/emc/usr_intf/pncconf/pncconf.glade:14464 +#: src/emc/usr_intf/pncconf/pncconf.glade:14476 +#: src/emc/usr_intf/pncconf/pncconf.glade:17161 +#: src/emc/usr_intf/pncconf/pncconf.glade:17173 +#: src/emc/usr_intf/pncconf/pncconf.glade:19567 +#: src/emc/usr_intf/pncconf/pncconf.glade:19579 +#: src/emc/usr_intf/pncconf/pncconf.glade:22190 +#: src/emc/usr_intf/pncconf/pncconf.glade:22202 +#: src/emc/usr_intf/pncconf/pncconf.glade:23986 +#: src/emc/usr_intf/pncconf/pncconf.glade:23998 +#: src/emc/usr_intf/pncconf/pncconf.glade:25782 +#: src/emc/usr_intf/pncconf/pncconf.glade:25794 +#: src/emc/usr_intf/pncconf/pncconf.glade:28287 +#: src/emc/usr_intf/pncconf/pncconf.glade:28299 +#: src/emc/usr_intf/pncconf/pncconf.glade:29415 +#: src/emc/usr_intf/pncconf/pncconf.glade:29427 +#: src/emc/usr_intf/pncconf/pncconf.glade:32869 +#: src/emc/usr_intf/pncconf/pncconf.glade:33760 +#: src/emc/usr_intf/pncconf/pncconf.glade:33772 +#: src/emc/usr_intf/pncconf/pncconf.glade:37771 +#: src/emc/usr_intf/pncconf/pncconf.glade:37783 +#: src/emc/usr_intf/pncconf/pncconf.glade:38777 +#: src/emc/usr_intf/pncconf/pncconf.glade:38789 +#: src/emc/usr_intf/pncconf/pncconf.glade:42131 +#: src/emc/usr_intf/pncconf/pncconf.glade:42143 +#: src/emc/usr_intf/pncconf/pncconf.glade:43259 +#: src/emc/usr_intf/pncconf/pncconf.glade:43271 +#: src/emc/usr_intf/pncconf/pncconf.glade:46702 +#: src/emc/usr_intf/pncconf/pncconf.glade:46714 +#: src/emc/usr_intf/pncconf/pncconf.glade:49054 +#: src/emc/usr_intf/pncconf/pncconf.glade:49066 +#: src/emc/usr_intf/pncconf/pncconf.glade:50182 +#: src/emc/usr_intf/pncconf/pncconf.glade:50194 +#: src/emc/usr_intf/pncconf/pncconf.glade:53625 +#: src/emc/usr_intf/pncconf/pncconf.glade:53637 +#: src/emc/usr_intf/pncconf/pncconf.glade:55977 +#: src/emc/usr_intf/pncconf/pncconf.glade:55989 +#: src/emc/usr_intf/pncconf/pncconf.glade:57105 +#: src/emc/usr_intf/pncconf/pncconf.glade:57117 +#: src/emc/usr_intf/pncconf/pncconf.glade:60548 +#: src/emc/usr_intf/pncconf/pncconf.glade:60560 +msgid "function" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6222 -msgid "Min linear velocity" +#: src/emc/usr_intf/pncconf/pncconf.glade:10703 +#: src/emc/usr_intf/pncconf/pncconf.glade:11940 +#: src/emc/usr_intf/pncconf/pncconf.glade:14449 +#: src/emc/usr_intf/pncconf/pncconf.glade:17146 +#: src/emc/usr_intf/pncconf/pncconf.glade:19553 +#: src/emc/usr_intf/pncconf/pncconf.glade:22217 +#: src/emc/usr_intf/pncconf/pncconf.glade:24013 +#: src/emc/usr_intf/pncconf/pncconf.glade:25809 +msgid "Launch test panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6233 -msgid "Default linear velocity " +#: src/emc/usr_intf/pncconf/pncconf.glade:11192 +#: src/emc/usr_intf/pncconf/pncconf.glade:11204 +#: src/emc/usr_intf/pncconf/pncconf.glade:11440 +#: src/emc/usr_intf/pncconf/pncconf.glade:11454 +#: src/emc/usr_intf/pncconf/pncconf.glade:13949 +#: src/emc/usr_intf/pncconf/pncconf.glade:13963 +#: src/emc/usr_intf/pncconf/pncconf.glade:16645 +#: src/emc/usr_intf/pncconf/pncconf.glade:16659 +#: src/emc/usr_intf/pncconf/pncconf.glade:19190 +#: src/emc/usr_intf/pncconf/pncconf.glade:19204 +#: src/emc/usr_intf/pncconf/pncconf.glade:22567 +#: src/emc/usr_intf/pncconf/pncconf.glade:22579 +#: src/emc/usr_intf/pncconf/pncconf.glade:24363 +#: src/emc/usr_intf/pncconf/pncconf.glade:24375 +#: src/emc/usr_intf/pncconf/pncconf.glade:26159 +#: src/emc/usr_intf/pncconf/pncconf.glade:26171 +#: src/emc/usr_intf/pncconf/pncconf.glade:28772 +#: src/emc/usr_intf/pncconf/pncconf.glade:28784 +#: src/emc/usr_intf/pncconf/pncconf.glade:28917 +#: src/emc/usr_intf/pncconf/pncconf.glade:28931 +#: src/emc/usr_intf/pncconf/pncconf.glade:33102 +#: src/emc/usr_intf/pncconf/pncconf.glade:33275 +#: src/emc/usr_intf/pncconf/pncconf.glade:33289 +#: src/emc/usr_intf/pncconf/pncconf.glade:38269 +#: src/emc/usr_intf/pncconf/pncconf.glade:38281 +#: src/emc/usr_intf/pncconf/pncconf.glade:38532 +#: src/emc/usr_intf/pncconf/pncconf.glade:38546 +#: src/emc/usr_intf/pncconf/pncconf.glade:42616 +#: src/emc/usr_intf/pncconf/pncconf.glade:42628 +#: src/emc/usr_intf/pncconf/pncconf.glade:42761 +#: src/emc/usr_intf/pncconf/pncconf.glade:42775 +#: src/emc/usr_intf/pncconf/pncconf.glade:46947 +#: src/emc/usr_intf/pncconf/pncconf.glade:46959 +#: src/emc/usr_intf/pncconf/pncconf.glade:49539 +#: src/emc/usr_intf/pncconf/pncconf.glade:49551 +#: src/emc/usr_intf/pncconf/pncconf.glade:49684 +#: src/emc/usr_intf/pncconf/pncconf.glade:49698 +#: src/emc/usr_intf/pncconf/pncconf.glade:53870 +#: src/emc/usr_intf/pncconf/pncconf.glade:53882 +#: src/emc/usr_intf/pncconf/pncconf.glade:56462 +#: src/emc/usr_intf/pncconf/pncconf.glade:56474 +#: src/emc/usr_intf/pncconf/pncconf.glade:56607 +#: src/emc/usr_intf/pncconf/pncconf.glade:56621 +#: src/emc/usr_intf/pncconf/pncconf.glade:60793 +#: src/emc/usr_intf/pncconf/pncconf.glade:60805 +msgid "Num" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6241 -msgid "AXIS defaults" +#: src/emc/usr_intf/pncconf/pncconf.glade:11222 +msgid "" +" I/O\n" +"Connector 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6352 -msgid "Error Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:13835 +msgid "" +" I/O\n" +" Connector 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6365 -msgid "DTG Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:16281 +#: src/emc/usr_intf/pncconf/pncconf.glade:16295 +#: src/emc/usr_intf/pncconf/pncconf.glade:16322 +#: src/emc/usr_intf/pncconf/pncconf.glade:26441 +#: src/emc/usr_intf/pncconf/pncconf.glade:26468 +#: src/emc/usr_intf/pncconf/pncconf.glade:26482 +#: src/emc/usr_intf/pncconf/pncconf.glade:31232 +#: src/emc/usr_intf/pncconf/pncconf.glade:31246 +#: src/emc/usr_intf/pncconf/pncconf.glade:31273 +#: src/emc/usr_intf/pncconf/pncconf.glade:31708 +#: src/emc/usr_intf/pncconf/pncconf.glade:31735 +#: src/emc/usr_intf/pncconf/pncconf.glade:31749 +#: src/emc/usr_intf/pncconf/pncconf.glade:35577 +#: src/emc/usr_intf/pncconf/pncconf.glade:35591 +#: src/emc/usr_intf/pncconf/pncconf.glade:35618 +#: src/emc/usr_intf/pncconf/pncconf.glade:35925 +#: src/emc/usr_intf/pncconf/pncconf.glade:35952 +#: src/emc/usr_intf/pncconf/pncconf.glade:35966 +#: src/emc/usr_intf/pncconf/pncconf.glade:39909 +#: src/emc/usr_intf/pncconf/pncconf.glade:39923 +#: src/emc/usr_intf/pncconf/pncconf.glade:39950 +#: src/emc/usr_intf/pncconf/pncconf.glade:40285 +#: src/emc/usr_intf/pncconf/pncconf.glade:40312 +#: src/emc/usr_intf/pncconf/pncconf.glade:40326 +#: src/emc/usr_intf/pncconf/pncconf.glade:45076 +#: src/emc/usr_intf/pncconf/pncconf.glade:45090 +#: src/emc/usr_intf/pncconf/pncconf.glade:45117 +#: src/emc/usr_intf/pncconf/pncconf.glade:45541 +#: src/emc/usr_intf/pncconf/pncconf.glade:45568 +#: src/emc/usr_intf/pncconf/pncconf.glade:45582 +#: src/emc/usr_intf/pncconf/pncconf.glade:47208 +#: src/emc/usr_intf/pncconf/pncconf.glade:47235 +#: src/emc/usr_intf/pncconf/pncconf.glade:47249 +#: src/emc/usr_intf/pncconf/pncconf.glade:51999 +#: src/emc/usr_intf/pncconf/pncconf.glade:52013 +#: src/emc/usr_intf/pncconf/pncconf.glade:52040 +#: src/emc/usr_intf/pncconf/pncconf.glade:52464 +#: src/emc/usr_intf/pncconf/pncconf.glade:52491 +#: src/emc/usr_intf/pncconf/pncconf.glade:52505 +#: src/emc/usr_intf/pncconf/pncconf.glade:54131 +#: src/emc/usr_intf/pncconf/pncconf.glade:54158 +#: src/emc/usr_intf/pncconf/pncconf.glade:54172 +#: src/emc/usr_intf/pncconf/pncconf.glade:58922 +#: src/emc/usr_intf/pncconf/pncconf.glade:58936 +#: src/emc/usr_intf/pncconf/pncconf.glade:58963 +#: src/emc/usr_intf/pncconf/pncconf.glade:59387 +#: src/emc/usr_intf/pncconf/pncconf.glade:59414 +#: src/emc/usr_intf/pncconf/pncconf.glade:59428 +msgid " " msgstr "" -# ***: ../tcl/axis.tcl:1514 -#: src/emc/usr_intf/pncconf/pncconf.glade:6378 -#, fuzzy -msgid "Relative Textcolor" -msgstr "Position:" +#: src/emc/usr_intf/pncconf/pncconf.glade:16427 +msgid "" +" I/O\n" +" Connector 4" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6391 -msgid "Absolute Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:19041 +msgid "" +" I/O\n" +" Connector 5" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6454 -msgid "Absolute Text Color" +#: src/emc/usr_intf/pncconf/pncconf.glade:20837 +msgid "" +" I/O\n" +"Connector 6" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6479 -#: src/emc/usr_intf/pncconf/pncconf.glade:7148 -msgid "GTK Theme" +#: src/emc/usr_intf/pncconf/pncconf.glade:22633 +msgid "" +" I/O\n" +"Connector 7" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6491 -#: src/emc/usr_intf/pncconf/pncconf.glade:7158 -msgid "Follow System Theme\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:24429 +msgid "" +" I/O\n" +"Connector 8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6624 -msgid "Force Touchy to Maximize after positioning" +#: src/emc/usr_intf/pncconf/pncconf.glade:26225 +msgid "" +" I/O\n" +" Connector 9" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6669 -msgid "GUI Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:31378 +#: src/emc/usr_intf/pncconf/pncconf.glade:38299 +#: src/emc/usr_intf/pncconf/pncconf.glade:45222 +#: src/emc/usr_intf/pncconf/pncconf.glade:52145 +#: src/emc/usr_intf/pncconf/pncconf.glade:59068 +msgid "page 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6700 -msgid "Virtual Control Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:33131 +#: src/emc/usr_intf/pncconf/pncconf.glade:40054 +#: src/emc/usr_intf/pncconf/pncconf.glade:46977 +#: src/emc/usr_intf/pncconf/pncconf.glade:53900 +#: src/emc/usr_intf/pncconf/pncconf.glade:60823 +msgid "page 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6775 -msgid "XYZ buttons (uses Halui)" +#: src/emc/usr_intf/pncconf/pncconf.glade:33147 +msgid "Smart Serial 0" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6946 -msgid "Geometry Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:40070 +msgid "Smart Serial 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7025 -msgid "Pyvcp Details" +#: src/emc/usr_intf/pncconf/pncconf.glade:46993 +msgid "Smart Serial 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7097 -msgid "Sample display " +#: src/emc/usr_intf/pncconf/pncconf.glade:53916 +msgid "Smart Serial 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7172 -msgid "Force Maximize" +#: src/emc/usr_intf/pncconf/pncconf.glade:60839 +msgid "Smart Serial 4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7186 -msgid "Center Tab Embeded" +#: src/emc/usr_intf/pncconf/pncconf.glade:60861 +msgid "First Parallel Port Setup" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7201 -msgid "Rightside Embeded" +#: src/emc/usr_intf/pncconf/pncconf.glade:60946 +msgid "Launch Test Panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7217 -msgid "Standalone Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:62374 +msgid "Inputs (Machine to PC):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7351 -#, fuzzy -msgid "Display Options" -msgstr "Använd _tum" +#: src/emc/usr_intf/pncconf/pncconf.glade:62929 +msgid "Outputs (PC to Machine):" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7401 -msgid "Max RPM" +#: src/emc/usr_intf/pncconf/pncconf.glade:62950 +msgid "X Axis Motor/Encoder Configuration" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7414 +#: src/emc/usr_intf/pncconf/pncconf.glade:63005 #, fuzzy -msgid "Spindle Speed Indicator" +msgid "Max Output" msgstr "Spindel:" -#: src/emc/usr_intf/pncconf/pncconf.glade:7426 -#, fuzzy -msgid "Spindle At Speed LED" -msgstr "Matnings överjusterning (%): #guessing again" - -# ***: ../scripts/axis.py:107 -#: src/emc/usr_intf/pncconf/pncconf.glade:7438 -#, fuzzy -msgid "Zero X Button" -msgstr "Scrollhjulsknapp" - -# ***: ../scripts/axis.py:107 -#: src/emc/usr_intf/pncconf/pncconf.glade:7450 -#, fuzzy -msgid "Zero Y Button" -msgstr "Scrollhjulsknapp" - -# ***: ../scripts/axis.py:107 -#: src/emc/usr_intf/pncconf/pncconf.glade:7462 -#, fuzzy -msgid "Zero Z Button" -msgstr "Scrollhjulsknapp" - -# ***: ../scripts/axis.py:107 -#: src/emc/usr_intf/pncconf/pncconf.glade:7474 -#, fuzzy -msgid "Zero A Button" -msgstr "Scrollhjulsknapp" - -#: src/emc/usr_intf/pncconf/pncconf.glade:7486 -msgid "Requires Classicladder touch-off program" +#: src/emc/usr_intf/pncconf/pncconf.glade:63070 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7487 -msgid "Auto Z Touch Off Button" +#: src/emc/usr_intf/pncconf/pncconf.glade:63083 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7500 -#, fuzzy -msgid "Sample Options" -msgstr "Hal _configuration" - -#: src/emc/usr_intf/pncconf/pncconf.glade:7574 -msgid "Gladevcp Details" +#: src/emc/usr_intf/pncconf/pncconf.glade:63096 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF0" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7597 -msgid "Include custom GladeVCP GUI panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:63143 +msgid "Deadband" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7668 -msgid "Restore joint position after shutdown" +#: src/emc/usr_intf/pncconf/pncconf.glade:63156 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Bias" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7683 -msgid "Move spindle up before tool change" +#: src/emc/usr_intf/pncconf/pncconf.glade:63169 +msgid "P" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7696 -msgid "Leave spindle on during tool change" +#: src/emc/usr_intf/pncconf/pncconf.glade:63180 +msgid "I" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7709 -msgid "Popup Toolchange Prompt" +#: src/emc/usr_intf/pncconf/pncconf.glade:63193 +msgid "D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7723 -msgid "Require homing before MDI / Running" +#: src/emc/usr_intf/pncconf/pncconf.glade:63258 +msgid "Servo Info" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7732 -msgid "Random position toolchanger " +#: src/emc/usr_intf/pncconf/pncconf.glade:63337 +msgid "3pwm Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7747 -msgid "Force individual manual homing" +#: src/emc/usr_intf/pncconf/pncconf.glade:63348 +msgid "3pwm Deadtime:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7761 -msgid "Defaults and Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:63361 +msgid "Quad Pulses / Rev:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7789 -msgid "Mesa0 I/O setup\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:63438 +msgid "" +"Open Loop\n" +" Test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7809 -msgid "" -"Click on each page tab to configure signal names for each connector port.\n" -"\n" -"Press the button to make the tabbed pages\n" -"accept the changes.\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:63462 +#, fuzzy +msgid "Analog Min Limit:" +msgstr "Spindel:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63476 +#, fuzzy +msgid "Analog Max limit:" +msgstr "Spindelbroms på" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63490 +msgid "Analog Max Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7998 -msgid "Num of channels: " +#: src/emc/usr_intf/pncconf/pncconf.glade:63554 +#, fuzzy +msgid "Output Info" +msgstr "Försjutning" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63603 +msgid "Step On-Time" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8036 -msgid "7i29 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:63616 +#, fuzzy +msgid "Step Space" +msgstr "Blockvis körning av program" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63659 +msgid "Direction Hold" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8045 -msgid "7i30 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:63672 +msgid "Direction Setup" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8057 -msgid "7i33 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:63715 +msgid "Driver Type:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8069 -msgid "7i40 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:63748 +msgid "Stepper Info" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8081 -msgid "7i48 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:63800 +msgid "No feedback" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8096 -msgid "Sanity Checks" +#: src/emc/usr_intf/pncconf/pncconf.glade:63810 +msgid "Absolute Feedback" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8137 -msgid "Num of Smart Serial Ports:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63824 +msgid "Incremental Feedback" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8148 -msgid "Board name" +#: src/emc/usr_intf/pncconf/pncconf.glade:63838 +msgid "Incremental Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8155 -msgid "Num of step generators: " +#: src/emc/usr_intf/pncconf/pncconf.glade:63850 +msgid "Hall sensors" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8166 -msgid "Num of pwm generators:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63862 +msgid "Fanuc Red Cap " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8177 -msgid "Num of encoders:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63874 +#, fuzzy +msgid "Use encoder Index" +msgstr "Spindel:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63905 +msgid "Input Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8294 -msgid "Watchdog timeout:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63929 +msgid "Digital instead of PWM outputs" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8305 -msgid "PDM base frequency:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63938 +msgid "6 outputs instead of 3 " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8316 -msgid "PWM base frequency:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63950 +msgid "Force Trapezoid Mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8328 -msgid "" -"Accept components\n" -" Changes" +#: src/emc/usr_intf/pncconf/pncconf.glade:63962 +msgid "Emulate feedback " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8356 -msgid "Total number of pins:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63974 +msgid "Emulated Hall sensors" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8389 -msgid "Num of 3 pwm generators: " +#: src/emc/usr_intf/pncconf/pncconf.glade:63987 +msgid "Emulated Fanuc Red Cap" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8412 -msgid "SVST8_4" +#: src/emc/usr_intf/pncconf/pncconf.glade:64014 +msgid "8i20 Max Current" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8437 -msgid "Firmware:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64048 +msgid "Output Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8447 -msgid "Mesa parport address:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64103 +msgid "alignment current" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8482 -msgid "3PWM base frequency:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64113 +msgid "lead angle" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8504 +#: src/emc/usr_intf/pncconf/pncconf.glade:64213 #, fuzzy -msgid "" -"Configuration\n" -" Page" -msgstr "Hal _configuration" - -#: src/emc/usr_intf/pncconf/pncconf.glade:8698 -#: src/emc/usr_intf/pncconf/pncconf.glade:8712 -#: src/emc/usr_intf/pncconf/pncconf.glade:13677 -#: src/emc/usr_intf/pncconf/pncconf.glade:13689 -#: src/emc/usr_intf/pncconf/pncconf.glade:16373 -#: src/emc/usr_intf/pncconf/pncconf.glade:16385 -#: src/emc/usr_intf/pncconf/pncconf.glade:18883 -#: src/emc/usr_intf/pncconf/pncconf.glade:18895 -#: src/emc/usr_intf/pncconf/pncconf.glade:20747 -#: src/emc/usr_intf/pncconf/pncconf.glade:20759 -#: src/emc/usr_intf/pncconf/pncconf.glade:20962 -#: src/emc/usr_intf/pncconf/pncconf.glade:20976 -#: src/emc/usr_intf/pncconf/pncconf.glade:22758 -#: src/emc/usr_intf/pncconf/pncconf.glade:22772 -#: src/emc/usr_intf/pncconf/pncconf.glade:24554 -#: src/emc/usr_intf/pncconf/pncconf.glade:24568 -#: src/emc/usr_intf/pncconf/pncconf.glade:26330 -#: src/emc/usr_intf/pncconf/pncconf.glade:26344 -#: src/emc/usr_intf/pncconf/pncconf.glade:31324 -#: src/emc/usr_intf/pncconf/pncconf.glade:31336 -#: src/emc/usr_intf/pncconf/pncconf.glade:31600 -#: src/emc/usr_intf/pncconf/pncconf.glade:35669 -#: src/emc/usr_intf/pncconf/pncconf.glade:35681 -#: src/emc/usr_intf/pncconf/pncconf.glade:35814 -#: src/emc/usr_intf/pncconf/pncconf.glade:35828 -#: src/emc/usr_intf/pncconf/pncconf.glade:40000 -#: src/emc/usr_intf/pncconf/pncconf.glade:40012 -#: src/emc/usr_intf/pncconf/pncconf.glade:40174 -#: src/emc/usr_intf/pncconf/pncconf.glade:40188 -#: src/emc/usr_intf/pncconf/pncconf.glade:45168 -#: src/emc/usr_intf/pncconf/pncconf.glade:45180 -#: src/emc/usr_intf/pncconf/pncconf.glade:45431 -#: src/emc/usr_intf/pncconf/pncconf.glade:45445 -#: src/emc/usr_intf/pncconf/pncconf.glade:47097 -#: src/emc/usr_intf/pncconf/pncconf.glade:47111 -#: src/emc/usr_intf/pncconf/pncconf.glade:52091 -#: src/emc/usr_intf/pncconf/pncconf.glade:52103 -#: src/emc/usr_intf/pncconf/pncconf.glade:52354 -#: src/emc/usr_intf/pncconf/pncconf.glade:52368 -msgid "Num" -msgstr "" +msgid "Reverse" +msgstr "Spindelbroms på" -#: src/emc/usr_intf/pncconf/pncconf.glade:8723 -#: src/emc/usr_intf/pncconf/pncconf.glade:8743 -#: src/emc/usr_intf/pncconf/pncconf.glade:8763 -#: src/emc/usr_intf/pncconf/pncconf.glade:8783 -#: src/emc/usr_intf/pncconf/pncconf.glade:8803 -#: src/emc/usr_intf/pncconf/pncconf.glade:8823 -#: src/emc/usr_intf/pncconf/pncconf.glade:8843 -#: src/emc/usr_intf/pncconf/pncconf.glade:8863 -#: src/emc/usr_intf/pncconf/pncconf.glade:8883 -#: src/emc/usr_intf/pncconf/pncconf.glade:8903 -#: src/emc/usr_intf/pncconf/pncconf.glade:8923 -#: src/emc/usr_intf/pncconf/pncconf.glade:8943 -#: src/emc/usr_intf/pncconf/pncconf.glade:8963 -#: src/emc/usr_intf/pncconf/pncconf.glade:8983 -#: src/emc/usr_intf/pncconf/pncconf.glade:9003 -#: src/emc/usr_intf/pncconf/pncconf.glade:9023 -#: src/emc/usr_intf/pncconf/pncconf.glade:9043 -#: src/emc/usr_intf/pncconf/pncconf.glade:9063 -#: src/emc/usr_intf/pncconf/pncconf.glade:9083 -#: src/emc/usr_intf/pncconf/pncconf.glade:9103 -#: src/emc/usr_intf/pncconf/pncconf.glade:9123 -#: src/emc/usr_intf/pncconf/pncconf.glade:9143 -#: src/emc/usr_intf/pncconf/pncconf.glade:9163 -#: src/emc/usr_intf/pncconf/pncconf.glade:11027 -#: src/emc/usr_intf/pncconf/pncconf.glade:11353 -#: src/emc/usr_intf/pncconf/pncconf.glade:13216 -#: src/emc/usr_intf/pncconf/pncconf.glade:13236 -#: src/emc/usr_intf/pncconf/pncconf.glade:13256 -#: src/emc/usr_intf/pncconf/pncconf.glade:13276 -#: src/emc/usr_intf/pncconf/pncconf.glade:13296 -#: src/emc/usr_intf/pncconf/pncconf.glade:13316 -#: src/emc/usr_intf/pncconf/pncconf.glade:13336 -#: src/emc/usr_intf/pncconf/pncconf.glade:13356 -#: src/emc/usr_intf/pncconf/pncconf.glade:13376 -#: src/emc/usr_intf/pncconf/pncconf.glade:13396 -#: src/emc/usr_intf/pncconf/pncconf.glade:13416 -#: src/emc/usr_intf/pncconf/pncconf.glade:13436 -#: src/emc/usr_intf/pncconf/pncconf.glade:13456 -#: src/emc/usr_intf/pncconf/pncconf.glade:13476 -#: src/emc/usr_intf/pncconf/pncconf.glade:13496 -#: src/emc/usr_intf/pncconf/pncconf.glade:13516 -#: src/emc/usr_intf/pncconf/pncconf.glade:13536 -#: src/emc/usr_intf/pncconf/pncconf.glade:13556 -#: src/emc/usr_intf/pncconf/pncconf.glade:13576 -#: src/emc/usr_intf/pncconf/pncconf.glade:13596 -#: src/emc/usr_intf/pncconf/pncconf.glade:13616 -#: src/emc/usr_intf/pncconf/pncconf.glade:13636 -#: src/emc/usr_intf/pncconf/pncconf.glade:13656 -#: src/emc/usr_intf/pncconf/pncconf.glade:13966 -#: src/emc/usr_intf/pncconf/pncconf.glade:15912 -#: src/emc/usr_intf/pncconf/pncconf.glade:15932 -#: src/emc/usr_intf/pncconf/pncconf.glade:15952 -#: src/emc/usr_intf/pncconf/pncconf.glade:15972 -#: src/emc/usr_intf/pncconf/pncconf.glade:15992 -#: src/emc/usr_intf/pncconf/pncconf.glade:16012 -#: src/emc/usr_intf/pncconf/pncconf.glade:16032 -#: src/emc/usr_intf/pncconf/pncconf.glade:16052 -#: src/emc/usr_intf/pncconf/pncconf.glade:16072 -#: src/emc/usr_intf/pncconf/pncconf.glade:16092 -#: src/emc/usr_intf/pncconf/pncconf.glade:16112 -#: src/emc/usr_intf/pncconf/pncconf.glade:16132 -#: src/emc/usr_intf/pncconf/pncconf.glade:16152 -#: src/emc/usr_intf/pncconf/pncconf.glade:16172 -#: src/emc/usr_intf/pncconf/pncconf.glade:16192 -#: src/emc/usr_intf/pncconf/pncconf.glade:16212 -#: src/emc/usr_intf/pncconf/pncconf.glade:16232 -#: src/emc/usr_intf/pncconf/pncconf.glade:16252 -#: src/emc/usr_intf/pncconf/pncconf.glade:16272 -#: src/emc/usr_intf/pncconf/pncconf.glade:16292 -#: src/emc/usr_intf/pncconf/pncconf.glade:16312 -#: src/emc/usr_intf/pncconf/pncconf.glade:16332 -#: src/emc/usr_intf/pncconf/pncconf.glade:16352 -#: src/emc/usr_intf/pncconf/pncconf.glade:16558 -#: src/emc/usr_intf/pncconf/pncconf.glade:18422 -#: src/emc/usr_intf/pncconf/pncconf.glade:18442 -#: src/emc/usr_intf/pncconf/pncconf.glade:18462 -#: src/emc/usr_intf/pncconf/pncconf.glade:18482 -#: src/emc/usr_intf/pncconf/pncconf.glade:18502 -#: src/emc/usr_intf/pncconf/pncconf.glade:18522 -#: src/emc/usr_intf/pncconf/pncconf.glade:18542 -#: src/emc/usr_intf/pncconf/pncconf.glade:18562 -#: src/emc/usr_intf/pncconf/pncconf.glade:18582 -#: src/emc/usr_intf/pncconf/pncconf.glade:18602 -#: src/emc/usr_intf/pncconf/pncconf.glade:18622 -#: src/emc/usr_intf/pncconf/pncconf.glade:18642 -#: src/emc/usr_intf/pncconf/pncconf.glade:18662 -#: src/emc/usr_intf/pncconf/pncconf.glade:18682 -#: src/emc/usr_intf/pncconf/pncconf.glade:18702 -#: src/emc/usr_intf/pncconf/pncconf.glade:18722 -#: src/emc/usr_intf/pncconf/pncconf.glade:18742 -#: src/emc/usr_intf/pncconf/pncconf.glade:18762 -#: src/emc/usr_intf/pncconf/pncconf.glade:18782 -#: src/emc/usr_intf/pncconf/pncconf.glade:18802 -#: src/emc/usr_intf/pncconf/pncconf.glade:18822 -#: src/emc/usr_intf/pncconf/pncconf.glade:18842 -#: src/emc/usr_intf/pncconf/pncconf.glade:18862 -#: src/emc/usr_intf/pncconf/pncconf.glade:26355 -#: src/emc/usr_intf/pncconf/pncconf.glade:26375 -#: src/emc/usr_intf/pncconf/pncconf.glade:26395 -#: src/emc/usr_intf/pncconf/pncconf.glade:26415 -#: src/emc/usr_intf/pncconf/pncconf.glade:26435 -#: src/emc/usr_intf/pncconf/pncconf.glade:26455 -#: src/emc/usr_intf/pncconf/pncconf.glade:26475 -#: src/emc/usr_intf/pncconf/pncconf.glade:26495 -#: src/emc/usr_intf/pncconf/pncconf.glade:26515 -#: src/emc/usr_intf/pncconf/pncconf.glade:26535 -#: src/emc/usr_intf/pncconf/pncconf.glade:26555 -#: src/emc/usr_intf/pncconf/pncconf.glade:26575 -#: src/emc/usr_intf/pncconf/pncconf.glade:26595 -#: src/emc/usr_intf/pncconf/pncconf.glade:26615 -#: src/emc/usr_intf/pncconf/pncconf.glade:26635 -#: src/emc/usr_intf/pncconf/pncconf.glade:26655 -#: src/emc/usr_intf/pncconf/pncconf.glade:26675 -#: src/emc/usr_intf/pncconf/pncconf.glade:26695 -#: src/emc/usr_intf/pncconf/pncconf.glade:26715 -#: src/emc/usr_intf/pncconf/pncconf.glade:26735 -#: src/emc/usr_intf/pncconf/pncconf.glade:26755 -#: src/emc/usr_intf/pncconf/pncconf.glade:26775 -#: src/emc/usr_intf/pncconf/pncconf.glade:26795 -#: src/emc/usr_intf/pncconf/pncconf.glade:28711 -#: src/emc/usr_intf/pncconf/pncconf.glade:28934 -#: src/emc/usr_intf/pncconf/pncconf.glade:30863 -#: src/emc/usr_intf/pncconf/pncconf.glade:30883 -#: src/emc/usr_intf/pncconf/pncconf.glade:30903 -#: src/emc/usr_intf/pncconf/pncconf.glade:30923 -#: src/emc/usr_intf/pncconf/pncconf.glade:30943 -#: src/emc/usr_intf/pncconf/pncconf.glade:30963 -#: src/emc/usr_intf/pncconf/pncconf.glade:30983 -#: src/emc/usr_intf/pncconf/pncconf.glade:31003 -#: src/emc/usr_intf/pncconf/pncconf.glade:31023 -#: src/emc/usr_intf/pncconf/pncconf.glade:31043 -#: src/emc/usr_intf/pncconf/pncconf.glade:31063 -#: src/emc/usr_intf/pncconf/pncconf.glade:31083 -#: src/emc/usr_intf/pncconf/pncconf.glade:31103 -#: src/emc/usr_intf/pncconf/pncconf.glade:31123 -#: src/emc/usr_intf/pncconf/pncconf.glade:31143 -#: src/emc/usr_intf/pncconf/pncconf.glade:31163 -#: src/emc/usr_intf/pncconf/pncconf.glade:31183 -#: src/emc/usr_intf/pncconf/pncconf.glade:31203 -#: src/emc/usr_intf/pncconf/pncconf.glade:31223 -#: src/emc/usr_intf/pncconf/pncconf.glade:31243 -#: src/emc/usr_intf/pncconf/pncconf.glade:31263 -#: src/emc/usr_intf/pncconf/pncconf.glade:31283 -#: src/emc/usr_intf/pncconf/pncconf.glade:31303 -#: src/emc/usr_intf/pncconf/pncconf.glade:31611 -#: src/emc/usr_intf/pncconf/pncconf.glade:31631 -#: src/emc/usr_intf/pncconf/pncconf.glade:31651 -#: src/emc/usr_intf/pncconf/pncconf.glade:31671 -#: src/emc/usr_intf/pncconf/pncconf.glade:31691 -#: src/emc/usr_intf/pncconf/pncconf.glade:31711 -#: src/emc/usr_intf/pncconf/pncconf.glade:31731 -#: src/emc/usr_intf/pncconf/pncconf.glade:31751 -#: src/emc/usr_intf/pncconf/pncconf.glade:31771 -#: src/emc/usr_intf/pncconf/pncconf.glade:31791 -#: src/emc/usr_intf/pncconf/pncconf.glade:31811 -#: src/emc/usr_intf/pncconf/pncconf.glade:33029 -#: src/emc/usr_intf/pncconf/pncconf.glade:33292 -#: src/emc/usr_intf/pncconf/pncconf.glade:35208 -#: src/emc/usr_intf/pncconf/pncconf.glade:35228 -#: src/emc/usr_intf/pncconf/pncconf.glade:35248 -#: src/emc/usr_intf/pncconf/pncconf.glade:35268 -#: src/emc/usr_intf/pncconf/pncconf.glade:35288 -#: src/emc/usr_intf/pncconf/pncconf.glade:35308 -#: src/emc/usr_intf/pncconf/pncconf.glade:35328 -#: src/emc/usr_intf/pncconf/pncconf.glade:35348 -#: src/emc/usr_intf/pncconf/pncconf.glade:35368 -#: src/emc/usr_intf/pncconf/pncconf.glade:35388 -#: src/emc/usr_intf/pncconf/pncconf.glade:35408 -#: src/emc/usr_intf/pncconf/pncconf.glade:35428 -#: src/emc/usr_intf/pncconf/pncconf.glade:35448 -#: src/emc/usr_intf/pncconf/pncconf.glade:35468 -#: src/emc/usr_intf/pncconf/pncconf.glade:35488 -#: src/emc/usr_intf/pncconf/pncconf.glade:35508 -#: src/emc/usr_intf/pncconf/pncconf.glade:35528 -#: src/emc/usr_intf/pncconf/pncconf.glade:35548 -#: src/emc/usr_intf/pncconf/pncconf.glade:35568 -#: src/emc/usr_intf/pncconf/pncconf.glade:35588 -#: src/emc/usr_intf/pncconf/pncconf.glade:35608 -#: src/emc/usr_intf/pncconf/pncconf.glade:35628 -#: src/emc/usr_intf/pncconf/pncconf.glade:35648 -#: src/emc/usr_intf/pncconf/pncconf.glade:35839 -#: src/emc/usr_intf/pncconf/pncconf.glade:35859 -#: src/emc/usr_intf/pncconf/pncconf.glade:35879 -#: src/emc/usr_intf/pncconf/pncconf.glade:35899 -#: src/emc/usr_intf/pncconf/pncconf.glade:35919 -#: src/emc/usr_intf/pncconf/pncconf.glade:35939 -#: src/emc/usr_intf/pncconf/pncconf.glade:35959 -#: src/emc/usr_intf/pncconf/pncconf.glade:35979 -#: src/emc/usr_intf/pncconf/pncconf.glade:35999 -#: src/emc/usr_intf/pncconf/pncconf.glade:36019 -#: src/emc/usr_intf/pncconf/pncconf.glade:36039 -#: src/emc/usr_intf/pncconf/pncconf.glade:36059 -#: src/emc/usr_intf/pncconf/pncconf.glade:36079 -#: src/emc/usr_intf/pncconf/pncconf.glade:36099 -#: src/emc/usr_intf/pncconf/pncconf.glade:36119 -#: src/emc/usr_intf/pncconf/pncconf.glade:36139 -#: src/emc/usr_intf/pncconf/pncconf.glade:36159 -#: src/emc/usr_intf/pncconf/pncconf.glade:36179 -#: src/emc/usr_intf/pncconf/pncconf.glade:36199 -#: src/emc/usr_intf/pncconf/pncconf.glade:36219 -#: src/emc/usr_intf/pncconf/pncconf.glade:36239 -#: src/emc/usr_intf/pncconf/pncconf.glade:36259 -#: src/emc/usr_intf/pncconf/pncconf.glade:36279 -#: src/emc/usr_intf/pncconf/pncconf.glade:38208 -#: src/emc/usr_intf/pncconf/pncconf.glade:38549 -#: src/emc/usr_intf/pncconf/pncconf.glade:39779 -#: src/emc/usr_intf/pncconf/pncconf.glade:39799 -#: src/emc/usr_intf/pncconf/pncconf.glade:39819 -#: src/emc/usr_intf/pncconf/pncconf.glade:39839 -#: src/emc/usr_intf/pncconf/pncconf.glade:39859 -#: src/emc/usr_intf/pncconf/pncconf.glade:39879 -#: src/emc/usr_intf/pncconf/pncconf.glade:39899 -#: src/emc/usr_intf/pncconf/pncconf.glade:39919 -#: src/emc/usr_intf/pncconf/pncconf.glade:39939 -#: src/emc/usr_intf/pncconf/pncconf.glade:39959 -#: src/emc/usr_intf/pncconf/pncconf.glade:39979 -#: src/emc/usr_intf/pncconf/pncconf.glade:40199 -#: src/emc/usr_intf/pncconf/pncconf.glade:40219 -#: src/emc/usr_intf/pncconf/pncconf.glade:40239 -#: src/emc/usr_intf/pncconf/pncconf.glade:40259 -#: src/emc/usr_intf/pncconf/pncconf.glade:40279 -#: src/emc/usr_intf/pncconf/pncconf.glade:40299 -#: src/emc/usr_intf/pncconf/pncconf.glade:40319 -#: src/emc/usr_intf/pncconf/pncconf.glade:40339 -#: src/emc/usr_intf/pncconf/pncconf.glade:40359 -#: src/emc/usr_intf/pncconf/pncconf.glade:40379 -#: src/emc/usr_intf/pncconf/pncconf.glade:40399 -#: src/emc/usr_intf/pncconf/pncconf.glade:40419 -#: src/emc/usr_intf/pncconf/pncconf.glade:40439 -#: src/emc/usr_intf/pncconf/pncconf.glade:40459 -#: src/emc/usr_intf/pncconf/pncconf.glade:40479 -#: src/emc/usr_intf/pncconf/pncconf.glade:40499 -#: src/emc/usr_intf/pncconf/pncconf.glade:40519 -#: src/emc/usr_intf/pncconf/pncconf.glade:40539 -#: src/emc/usr_intf/pncconf/pncconf.glade:40559 -#: src/emc/usr_intf/pncconf/pncconf.glade:40579 -#: src/emc/usr_intf/pncconf/pncconf.glade:40599 -#: src/emc/usr_intf/pncconf/pncconf.glade:40619 -#: src/emc/usr_intf/pncconf/pncconf.glade:40639 -#: src/emc/usr_intf/pncconf/pncconf.glade:42555 -#: src/emc/usr_intf/pncconf/pncconf.glade:42778 -#: src/emc/usr_intf/pncconf/pncconf.glade:44707 -#: src/emc/usr_intf/pncconf/pncconf.glade:44727 -#: src/emc/usr_intf/pncconf/pncconf.glade:44747 -#: src/emc/usr_intf/pncconf/pncconf.glade:44767 -#: src/emc/usr_intf/pncconf/pncconf.glade:44787 -#: src/emc/usr_intf/pncconf/pncconf.glade:44807 -#: src/emc/usr_intf/pncconf/pncconf.glade:44827 -#: src/emc/usr_intf/pncconf/pncconf.glade:44847 -#: src/emc/usr_intf/pncconf/pncconf.glade:44867 -#: src/emc/usr_intf/pncconf/pncconf.glade:44887 -#: src/emc/usr_intf/pncconf/pncconf.glade:44907 -#: src/emc/usr_intf/pncconf/pncconf.glade:44927 -#: src/emc/usr_intf/pncconf/pncconf.glade:44947 -#: src/emc/usr_intf/pncconf/pncconf.glade:44967 -#: src/emc/usr_intf/pncconf/pncconf.glade:44987 -#: src/emc/usr_intf/pncconf/pncconf.glade:45007 -#: src/emc/usr_intf/pncconf/pncconf.glade:45027 -#: src/emc/usr_intf/pncconf/pncconf.glade:45047 -#: src/emc/usr_intf/pncconf/pncconf.glade:45067 -#: src/emc/usr_intf/pncconf/pncconf.glade:45087 -#: src/emc/usr_intf/pncconf/pncconf.glade:45107 -#: src/emc/usr_intf/pncconf/pncconf.glade:45127 -#: src/emc/usr_intf/pncconf/pncconf.glade:45147 -#: src/emc/usr_intf/pncconf/pncconf.glade:45456 -#: src/emc/usr_intf/pncconf/pncconf.glade:45476 -#: src/emc/usr_intf/pncconf/pncconf.glade:45496 -#: src/emc/usr_intf/pncconf/pncconf.glade:45516 -#: src/emc/usr_intf/pncconf/pncconf.glade:45536 -#: src/emc/usr_intf/pncconf/pncconf.glade:45556 -#: src/emc/usr_intf/pncconf/pncconf.glade:45576 -#: src/emc/usr_intf/pncconf/pncconf.glade:45596 -#: src/emc/usr_intf/pncconf/pncconf.glade:45616 -#: src/emc/usr_intf/pncconf/pncconf.glade:45636 -#: src/emc/usr_intf/pncconf/pncconf.glade:45656 -#: src/emc/usr_intf/pncconf/pncconf.glade:46886 -#: src/emc/usr_intf/pncconf/pncconf.glade:47122 -#: src/emc/usr_intf/pncconf/pncconf.glade:47142 -#: src/emc/usr_intf/pncconf/pncconf.glade:47162 -#: src/emc/usr_intf/pncconf/pncconf.glade:47182 -#: src/emc/usr_intf/pncconf/pncconf.glade:47202 -#: src/emc/usr_intf/pncconf/pncconf.glade:47222 -#: src/emc/usr_intf/pncconf/pncconf.glade:47242 -#: src/emc/usr_intf/pncconf/pncconf.glade:47262 -#: src/emc/usr_intf/pncconf/pncconf.glade:47282 -#: src/emc/usr_intf/pncconf/pncconf.glade:47302 -#: src/emc/usr_intf/pncconf/pncconf.glade:47322 -#: src/emc/usr_intf/pncconf/pncconf.glade:47342 -#: src/emc/usr_intf/pncconf/pncconf.glade:47362 -#: src/emc/usr_intf/pncconf/pncconf.glade:47382 -#: src/emc/usr_intf/pncconf/pncconf.glade:47402 -#: src/emc/usr_intf/pncconf/pncconf.glade:47422 -#: src/emc/usr_intf/pncconf/pncconf.glade:47442 -#: src/emc/usr_intf/pncconf/pncconf.glade:47462 -#: src/emc/usr_intf/pncconf/pncconf.glade:47482 -#: src/emc/usr_intf/pncconf/pncconf.glade:47502 -#: src/emc/usr_intf/pncconf/pncconf.glade:47522 -#: src/emc/usr_intf/pncconf/pncconf.glade:47542 -#: src/emc/usr_intf/pncconf/pncconf.glade:47562 -#: src/emc/usr_intf/pncconf/pncconf.glade:49478 -#: src/emc/usr_intf/pncconf/pncconf.glade:49701 -#: src/emc/usr_intf/pncconf/pncconf.glade:51630 -#: src/emc/usr_intf/pncconf/pncconf.glade:51650 -#: src/emc/usr_intf/pncconf/pncconf.glade:51670 -#: src/emc/usr_intf/pncconf/pncconf.glade:51690 -#: src/emc/usr_intf/pncconf/pncconf.glade:51710 -#: src/emc/usr_intf/pncconf/pncconf.glade:51730 -#: src/emc/usr_intf/pncconf/pncconf.glade:51750 -#: src/emc/usr_intf/pncconf/pncconf.glade:51770 -#: src/emc/usr_intf/pncconf/pncconf.glade:51790 -#: src/emc/usr_intf/pncconf/pncconf.glade:51810 -#: src/emc/usr_intf/pncconf/pncconf.glade:51830 -#: src/emc/usr_intf/pncconf/pncconf.glade:51850 -#: src/emc/usr_intf/pncconf/pncconf.glade:51870 -#: src/emc/usr_intf/pncconf/pncconf.glade:51890 -#: src/emc/usr_intf/pncconf/pncconf.glade:51910 -#: src/emc/usr_intf/pncconf/pncconf.glade:51930 -#: src/emc/usr_intf/pncconf/pncconf.glade:51950 -#: src/emc/usr_intf/pncconf/pncconf.glade:51970 -#: src/emc/usr_intf/pncconf/pncconf.glade:51990 -#: src/emc/usr_intf/pncconf/pncconf.glade:52010 -#: src/emc/usr_intf/pncconf/pncconf.glade:52030 -#: src/emc/usr_intf/pncconf/pncconf.glade:52050 -#: src/emc/usr_intf/pncconf/pncconf.glade:52070 -#: src/emc/usr_intf/pncconf/pncconf.glade:52379 -#: src/emc/usr_intf/pncconf/pncconf.glade:52399 -#: src/emc/usr_intf/pncconf/pncconf.glade:52419 -#: src/emc/usr_intf/pncconf/pncconf.glade:52439 -#: src/emc/usr_intf/pncconf/pncconf.glade:52459 -#: src/emc/usr_intf/pncconf/pncconf.glade:52479 -#: src/emc/usr_intf/pncconf/pncconf.glade:52499 -#: src/emc/usr_intf/pncconf/pncconf.glade:52519 -#: src/emc/usr_intf/pncconf/pncconf.glade:52539 -#: src/emc/usr_intf/pncconf/pncconf.glade:52559 -#: src/emc/usr_intf/pncconf/pncconf.glade:52579 -#: src/emc/usr_intf/pncconf/pncconf.glade:53809 -msgid "" -"GPIO Input\n" -"GPIO Output\n" -"GPIO O Drain\n" -"Encoder\n" -"PWM\n" -"StepGen\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:64223 +msgid "Input-pattern" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9198 -#: src/emc/usr_intf/pncconf/pncconf.glade:13188 -#: src/emc/usr_intf/pncconf/pncconf.glade:15884 -#: src/emc/usr_intf/pncconf/pncconf.glade:18394 -#: src/emc/usr_intf/pncconf/pncconf.glade:20397 -#: src/emc/usr_intf/pncconf/pncconf.glade:21325 -#: src/emc/usr_intf/pncconf/pncconf.glade:23121 -#: src/emc/usr_intf/pncconf/pncconf.glade:24917 -msgid "Launch test panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:64233 +msgid "output-pattern" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9213 -#: src/emc/usr_intf/pncconf/pncconf.glade:9225 -#: src/emc/usr_intf/pncconf/pncconf.glade:13162 -#: src/emc/usr_intf/pncconf/pncconf.glade:13174 -#: src/emc/usr_intf/pncconf/pncconf.glade:15858 -#: src/emc/usr_intf/pncconf/pncconf.glade:15870 -#: src/emc/usr_intf/pncconf/pncconf.glade:18367 -#: src/emc/usr_intf/pncconf/pncconf.glade:18379 -#: src/emc/usr_intf/pncconf/pncconf.glade:20370 -#: src/emc/usr_intf/pncconf/pncconf.glade:20382 -#: src/emc/usr_intf/pncconf/pncconf.glade:21339 -#: src/emc/usr_intf/pncconf/pncconf.glade:21351 -#: src/emc/usr_intf/pncconf/pncconf.glade:23135 -#: src/emc/usr_intf/pncconf/pncconf.glade:23147 -#: src/emc/usr_intf/pncconf/pncconf.glade:24931 -#: src/emc/usr_intf/pncconf/pncconf.glade:24943 -#: src/emc/usr_intf/pncconf/pncconf.glade:26815 -#: src/emc/usr_intf/pncconf/pncconf.glade:26827 -#: src/emc/usr_intf/pncconf/pncconf.glade:30826 -#: src/emc/usr_intf/pncconf/pncconf.glade:30838 -#: src/emc/usr_intf/pncconf/pncconf.glade:31831 -#: src/emc/usr_intf/pncconf/pncconf.glade:35184 -#: src/emc/usr_intf/pncconf/pncconf.glade:35196 -#: src/emc/usr_intf/pncconf/pncconf.glade:36312 -#: src/emc/usr_intf/pncconf/pncconf.glade:36324 -#: src/emc/usr_intf/pncconf/pncconf.glade:39755 -#: src/emc/usr_intf/pncconf/pncconf.glade:39767 -#: src/emc/usr_intf/pncconf/pncconf.glade:40659 -#: src/emc/usr_intf/pncconf/pncconf.glade:40671 -#: src/emc/usr_intf/pncconf/pncconf.glade:44670 -#: src/emc/usr_intf/pncconf/pncconf.glade:44682 -#: src/emc/usr_intf/pncconf/pncconf.glade:45676 -#: src/emc/usr_intf/pncconf/pncconf.glade:45688 -#: src/emc/usr_intf/pncconf/pncconf.glade:47582 -#: src/emc/usr_intf/pncconf/pncconf.glade:47594 -#: src/emc/usr_intf/pncconf/pncconf.glade:51593 -#: src/emc/usr_intf/pncconf/pncconf.glade:51605 -#: src/emc/usr_intf/pncconf/pncconf.glade:52599 -#: src/emc/usr_intf/pncconf/pncconf.glade:52611 -msgid "function" +#: src/emc/usr_intf/pncconf/pncconf.glade:64243 +msgid "Drive-offset" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9305 -#: src/emc/usr_intf/pncconf/pncconf.glade:9357 -#: src/emc/usr_intf/pncconf/pncconf.glade:9409 -#: src/emc/usr_intf/pncconf/pncconf.glade:9461 -#: src/emc/usr_intf/pncconf/pncconf.glade:10301 -#: src/emc/usr_intf/pncconf/pncconf.glade:10353 -#: src/emc/usr_intf/pncconf/pncconf.glade:10405 -#: src/emc/usr_intf/pncconf/pncconf.glade:10457 -#: src/emc/usr_intf/pncconf/pncconf.glade:10509 -#: src/emc/usr_intf/pncconf/pncconf.glade:10561 -#: src/emc/usr_intf/pncconf/pncconf.glade:10613 -#: src/emc/usr_intf/pncconf/pncconf.glade:10665 -#: src/emc/usr_intf/pncconf/pncconf.glade:10717 -#: src/emc/usr_intf/pncconf/pncconf.glade:10769 -#: src/emc/usr_intf/pncconf/pncconf.glade:11089 -#: src/emc/usr_intf/pncconf/pncconf.glade:11141 -#: src/emc/usr_intf/pncconf/pncconf.glade:11579 -#: src/emc/usr_intf/pncconf/pncconf.glade:11631 -#: src/emc/usr_intf/pncconf/pncconf.glade:11683 -#: src/emc/usr_intf/pncconf/pncconf.glade:11735 -#: src/emc/usr_intf/pncconf/pncconf.glade:11787 -#: src/emc/usr_intf/pncconf/pncconf.glade:11839 -#: src/emc/usr_intf/pncconf/pncconf.glade:11891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11943 -#: src/emc/usr_intf/pncconf/pncconf.glade:11995 -#: src/emc/usr_intf/pncconf/pncconf.glade:12047 -#: src/emc/usr_intf/pncconf/pncconf.glade:12886 -#: src/emc/usr_intf/pncconf/pncconf.glade:12938 -#: src/emc/usr_intf/pncconf/pncconf.glade:12990 -#: src/emc/usr_intf/pncconf/pncconf.glade:13042 -#: src/emc/usr_intf/pncconf/pncconf.glade:13702 -#: src/emc/usr_intf/pncconf/pncconf.glade:13754 -#: src/emc/usr_intf/pncconf/pncconf.glade:14183 -#: src/emc/usr_intf/pncconf/pncconf.glade:14235 -#: src/emc/usr_intf/pncconf/pncconf.glade:14287 -#: src/emc/usr_intf/pncconf/pncconf.glade:14339 -#: src/emc/usr_intf/pncconf/pncconf.glade:14391 -#: src/emc/usr_intf/pncconf/pncconf.glade:14443 -#: src/emc/usr_intf/pncconf/pncconf.glade:14495 -#: src/emc/usr_intf/pncconf/pncconf.glade:14547 -#: src/emc/usr_intf/pncconf/pncconf.glade:14599 -#: src/emc/usr_intf/pncconf/pncconf.glade:14651 -#: src/emc/usr_intf/pncconf/pncconf.glade:14703 -#: src/emc/usr_intf/pncconf/pncconf.glade:14755 -#: src/emc/usr_intf/pncconf/pncconf.glade:15582 -#: src/emc/usr_intf/pncconf/pncconf.glade:15634 -#: src/emc/usr_intf/pncconf/pncconf.glade:15686 -#: src/emc/usr_intf/pncconf/pncconf.glade:15738 -#: src/emc/usr_intf/pncconf/pncconf.glade:16784 -#: src/emc/usr_intf/pncconf/pncconf.glade:16836 -#: src/emc/usr_intf/pncconf/pncconf.glade:16888 -#: src/emc/usr_intf/pncconf/pncconf.glade:16940 -#: src/emc/usr_intf/pncconf/pncconf.glade:16992 -#: src/emc/usr_intf/pncconf/pncconf.glade:17044 -#: src/emc/usr_intf/pncconf/pncconf.glade:17096 -#: src/emc/usr_intf/pncconf/pncconf.glade:17148 -#: src/emc/usr_intf/pncconf/pncconf.glade:17200 -#: src/emc/usr_intf/pncconf/pncconf.glade:17252 -#: src/emc/usr_intf/pncconf/pncconf.glade:17304 -#: src/emc/usr_intf/pncconf/pncconf.glade:18143 -#: src/emc/usr_intf/pncconf/pncconf.glade:18195 -#: src/emc/usr_intf/pncconf/pncconf.glade:18247 -#: src/emc/usr_intf/pncconf/pncconf.glade:18908 -#: src/emc/usr_intf/pncconf/pncconf.glade:18960 -#: src/emc/usr_intf/pncconf/pncconf.glade:26907 -#: src/emc/usr_intf/pncconf/pncconf.glade:26959 -#: src/emc/usr_intf/pncconf/pncconf.glade:27011 -#: src/emc/usr_intf/pncconf/pncconf.glade:27063 -#: src/emc/usr_intf/pncconf/pncconf.glade:27890 -#: src/emc/usr_intf/pncconf/pncconf.glade:27942 -#: src/emc/usr_intf/pncconf/pncconf.glade:27994 -#: src/emc/usr_intf/pncconf/pncconf.glade:28046 -#: src/emc/usr_intf/pncconf/pncconf.glade:28098 -#: src/emc/usr_intf/pncconf/pncconf.glade:28150 -#: src/emc/usr_intf/pncconf/pncconf.glade:28202 -#: src/emc/usr_intf/pncconf/pncconf.glade:28254 -#: src/emc/usr_intf/pncconf/pncconf.glade:28306 -#: src/emc/usr_intf/pncconf/pncconf.glade:28358 -#: src/emc/usr_intf/pncconf/pncconf.glade:28410 -#: src/emc/usr_intf/pncconf/pncconf.glade:28462 -#: src/emc/usr_intf/pncconf/pncconf.glade:29151 -#: src/emc/usr_intf/pncconf/pncconf.glade:29203 -#: src/emc/usr_intf/pncconf/pncconf.glade:29255 -#: src/emc/usr_intf/pncconf/pncconf.glade:29307 -#: src/emc/usr_intf/pncconf/pncconf.glade:29359 -#: src/emc/usr_intf/pncconf/pncconf.glade:29411 -#: src/emc/usr_intf/pncconf/pncconf.glade:29463 -#: src/emc/usr_intf/pncconf/pncconf.glade:29515 -#: src/emc/usr_intf/pncconf/pncconf.glade:29567 -#: src/emc/usr_intf/pncconf/pncconf.glade:29619 -#: src/emc/usr_intf/pncconf/pncconf.glade:29671 -#: src/emc/usr_intf/pncconf/pncconf.glade:29723 -#: src/emc/usr_intf/pncconf/pncconf.glade:30550 -#: src/emc/usr_intf/pncconf/pncconf.glade:30602 -#: src/emc/usr_intf/pncconf/pncconf.glade:30654 -#: src/emc/usr_intf/pncconf/pncconf.glade:30706 -#: src/emc/usr_intf/pncconf/pncconf.glade:32210 -#: src/emc/usr_intf/pncconf/pncconf.glade:32262 -#: src/emc/usr_intf/pncconf/pncconf.glade:32314 -#: src/emc/usr_intf/pncconf/pncconf.glade:32366 -#: src/emc/usr_intf/pncconf/pncconf.glade:32418 -#: src/emc/usr_intf/pncconf/pncconf.glade:32470 -#: src/emc/usr_intf/pncconf/pncconf.glade:32522 -#: src/emc/usr_intf/pncconf/pncconf.glade:32574 -#: src/emc/usr_intf/pncconf/pncconf.glade:32626 -#: src/emc/usr_intf/pncconf/pncconf.glade:32678 -#: src/emc/usr_intf/pncconf/pncconf.glade:32730 -#: src/emc/usr_intf/pncconf/pncconf.glade:32782 -#: src/emc/usr_intf/pncconf/pncconf.glade:33509 -#: src/emc/usr_intf/pncconf/pncconf.glade:33561 -#: src/emc/usr_intf/pncconf/pncconf.glade:33613 -#: src/emc/usr_intf/pncconf/pncconf.glade:33665 -#: src/emc/usr_intf/pncconf/pncconf.glade:33717 -#: src/emc/usr_intf/pncconf/pncconf.glade:33769 -#: src/emc/usr_intf/pncconf/pncconf.glade:33821 -#: src/emc/usr_intf/pncconf/pncconf.glade:33873 -#: src/emc/usr_intf/pncconf/pncconf.glade:33925 -#: src/emc/usr_intf/pncconf/pncconf.glade:33977 -#: src/emc/usr_intf/pncconf/pncconf.glade:34029 -#: src/emc/usr_intf/pncconf/pncconf.glade:34081 -#: src/emc/usr_intf/pncconf/pncconf.glade:34908 -#: src/emc/usr_intf/pncconf/pncconf.glade:34960 -#: src/emc/usr_intf/pncconf/pncconf.glade:35012 -#: src/emc/usr_intf/pncconf/pncconf.glade:35064 -#: src/emc/usr_intf/pncconf/pncconf.glade:36404 -#: src/emc/usr_intf/pncconf/pncconf.glade:36456 -#: src/emc/usr_intf/pncconf/pncconf.glade:36508 -#: src/emc/usr_intf/pncconf/pncconf.glade:36560 -#: src/emc/usr_intf/pncconf/pncconf.glade:37387 -#: src/emc/usr_intf/pncconf/pncconf.glade:37439 -#: src/emc/usr_intf/pncconf/pncconf.glade:37491 -#: src/emc/usr_intf/pncconf/pncconf.glade:37543 -#: src/emc/usr_intf/pncconf/pncconf.glade:37595 -#: src/emc/usr_intf/pncconf/pncconf.glade:37647 -#: src/emc/usr_intf/pncconf/pncconf.glade:37699 -#: src/emc/usr_intf/pncconf/pncconf.glade:37751 -#: src/emc/usr_intf/pncconf/pncconf.glade:37803 -#: src/emc/usr_intf/pncconf/pncconf.glade:37855 -#: src/emc/usr_intf/pncconf/pncconf.glade:37907 -#: src/emc/usr_intf/pncconf/pncconf.glade:37959 -#: src/emc/usr_intf/pncconf/pncconf.glade:38764 -#: src/emc/usr_intf/pncconf/pncconf.glade:38816 -#: src/emc/usr_intf/pncconf/pncconf.glade:38868 -#: src/emc/usr_intf/pncconf/pncconf.glade:38920 -#: src/emc/usr_intf/pncconf/pncconf.glade:38972 -#: src/emc/usr_intf/pncconf/pncconf.glade:39024 -#: src/emc/usr_intf/pncconf/pncconf.glade:39076 -#: src/emc/usr_intf/pncconf/pncconf.glade:39128 -#: src/emc/usr_intf/pncconf/pncconf.glade:39180 -#: src/emc/usr_intf/pncconf/pncconf.glade:39232 -#: src/emc/usr_intf/pncconf/pncconf.glade:39284 -#: src/emc/usr_intf/pncconf/pncconf.glade:39336 -#: src/emc/usr_intf/pncconf/pncconf.glade:40751 -#: src/emc/usr_intf/pncconf/pncconf.glade:40803 -#: src/emc/usr_intf/pncconf/pncconf.glade:40855 -#: src/emc/usr_intf/pncconf/pncconf.glade:40907 -#: src/emc/usr_intf/pncconf/pncconf.glade:41734 -#: src/emc/usr_intf/pncconf/pncconf.glade:41786 -#: src/emc/usr_intf/pncconf/pncconf.glade:41838 -#: src/emc/usr_intf/pncconf/pncconf.glade:41890 -#: src/emc/usr_intf/pncconf/pncconf.glade:41942 -#: src/emc/usr_intf/pncconf/pncconf.glade:41994 -#: src/emc/usr_intf/pncconf/pncconf.glade:42046 -#: src/emc/usr_intf/pncconf/pncconf.glade:42098 -#: src/emc/usr_intf/pncconf/pncconf.glade:42150 -#: src/emc/usr_intf/pncconf/pncconf.glade:42202 -#: src/emc/usr_intf/pncconf/pncconf.glade:42254 -#: src/emc/usr_intf/pncconf/pncconf.glade:42306 -#: src/emc/usr_intf/pncconf/pncconf.glade:42995 -#: src/emc/usr_intf/pncconf/pncconf.glade:43047 -#: src/emc/usr_intf/pncconf/pncconf.glade:43099 -#: src/emc/usr_intf/pncconf/pncconf.glade:43151 -#: src/emc/usr_intf/pncconf/pncconf.glade:43203 -#: src/emc/usr_intf/pncconf/pncconf.glade:43255 -#: src/emc/usr_intf/pncconf/pncconf.glade:43307 -#: src/emc/usr_intf/pncconf/pncconf.glade:43359 -#: src/emc/usr_intf/pncconf/pncconf.glade:43411 -#: src/emc/usr_intf/pncconf/pncconf.glade:43463 -#: src/emc/usr_intf/pncconf/pncconf.glade:43515 -#: src/emc/usr_intf/pncconf/pncconf.glade:43567 -#: src/emc/usr_intf/pncconf/pncconf.glade:44394 -#: src/emc/usr_intf/pncconf/pncconf.glade:44446 -#: src/emc/usr_intf/pncconf/pncconf.glade:44498 -#: src/emc/usr_intf/pncconf/pncconf.glade:44550 -#: src/emc/usr_intf/pncconf/pncconf.glade:46067 -#: src/emc/usr_intf/pncconf/pncconf.glade:46119 -#: src/emc/usr_intf/pncconf/pncconf.glade:46171 -#: src/emc/usr_intf/pncconf/pncconf.glade:46223 -#: src/emc/usr_intf/pncconf/pncconf.glade:46275 -#: src/emc/usr_intf/pncconf/pncconf.glade:46327 -#: src/emc/usr_intf/pncconf/pncconf.glade:46379 -#: src/emc/usr_intf/pncconf/pncconf.glade:46431 -#: src/emc/usr_intf/pncconf/pncconf.glade:46483 -#: src/emc/usr_intf/pncconf/pncconf.glade:46535 -#: src/emc/usr_intf/pncconf/pncconf.glade:46587 -#: src/emc/usr_intf/pncconf/pncconf.glade:46639 -#: src/emc/usr_intf/pncconf/pncconf.glade:47674 -#: src/emc/usr_intf/pncconf/pncconf.glade:47726 -#: src/emc/usr_intf/pncconf/pncconf.glade:47778 -#: src/emc/usr_intf/pncconf/pncconf.glade:47830 -#: src/emc/usr_intf/pncconf/pncconf.glade:48657 -#: src/emc/usr_intf/pncconf/pncconf.glade:48709 -#: src/emc/usr_intf/pncconf/pncconf.glade:48761 -#: src/emc/usr_intf/pncconf/pncconf.glade:48813 -#: src/emc/usr_intf/pncconf/pncconf.glade:48865 -#: src/emc/usr_intf/pncconf/pncconf.glade:48917 -#: src/emc/usr_intf/pncconf/pncconf.glade:48969 -#: src/emc/usr_intf/pncconf/pncconf.glade:49021 -#: src/emc/usr_intf/pncconf/pncconf.glade:49073 -#: src/emc/usr_intf/pncconf/pncconf.glade:49125 -#: src/emc/usr_intf/pncconf/pncconf.glade:49177 -#: src/emc/usr_intf/pncconf/pncconf.glade:49229 -#: src/emc/usr_intf/pncconf/pncconf.glade:49918 -#: src/emc/usr_intf/pncconf/pncconf.glade:49970 -#: src/emc/usr_intf/pncconf/pncconf.glade:50022 -#: src/emc/usr_intf/pncconf/pncconf.glade:50074 -#: src/emc/usr_intf/pncconf/pncconf.glade:50126 -#: src/emc/usr_intf/pncconf/pncconf.glade:50178 -#: src/emc/usr_intf/pncconf/pncconf.glade:50230 -#: src/emc/usr_intf/pncconf/pncconf.glade:50282 -#: src/emc/usr_intf/pncconf/pncconf.glade:50334 -#: src/emc/usr_intf/pncconf/pncconf.glade:50386 -#: src/emc/usr_intf/pncconf/pncconf.glade:50438 -#: src/emc/usr_intf/pncconf/pncconf.glade:50490 -#: src/emc/usr_intf/pncconf/pncconf.glade:51317 -#: src/emc/usr_intf/pncconf/pncconf.glade:51369 -#: src/emc/usr_intf/pncconf/pncconf.glade:51421 -#: src/emc/usr_intf/pncconf/pncconf.glade:51473 -#: src/emc/usr_intf/pncconf/pncconf.glade:52990 -#: src/emc/usr_intf/pncconf/pncconf.glade:53042 -#: src/emc/usr_intf/pncconf/pncconf.glade:53094 -#: src/emc/usr_intf/pncconf/pncconf.glade:53146 -#: src/emc/usr_intf/pncconf/pncconf.glade:53198 -#: src/emc/usr_intf/pncconf/pncconf.glade:53250 -#: src/emc/usr_intf/pncconf/pncconf.glade:53302 -#: src/emc/usr_intf/pncconf/pncconf.glade:53354 -#: src/emc/usr_intf/pncconf/pncconf.glade:53406 -#: src/emc/usr_intf/pncconf/pncconf.glade:53458 -#: src/emc/usr_intf/pncconf/pncconf.glade:53510 -#: src/emc/usr_intf/pncconf/pncconf.glade:53562 -msgid "" -"ESTOP IN\n" -"Spindle PPR\n" -"Spindle A \n" -"Spindle B \n" -"Home X \n" -"Home Y \n" -"Home Z\n" -"Home A\n" -"Minimum Limit + Home X \n" -"Minimum Limit + Home Y \n" -"Minimum Limit + Home Z \n" -"Minimum Limit + Home A\n" -"Maximum Limit + Home X \n" -"Maximum Limit + Home Y \n" -"Maximum Limit + Home Z \n" -"Maximum Limit + Home A\n" -"Both Limit + Home X \n" -"Both Limit + Home Y \n" -"Both Limit + Home Z \n" -"Both Limit + Home A\n" -"Minimum Limit X \n" -"Minimum Limit Y \n" -"Minimum Limit Z \n" -"Minimum Limit A\n" -"Maximum Limit X \n" -"Maximum Limit Y \n" -"Maximum Limit Z \n" -"Maximum Limit A\n" -"Both Limit X \n" -"Both Limit Y \n" -"Both Limit Z \n" -"Both Limit A\n" -"All limits\n" -"All home\n" -"Unused" +#: src/emc/usr_intf/pncconf/pncconf.glade:64253 +msgid "Encoder-offset" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9515 -#: src/emc/usr_intf/pncconf/pncconf.glade:12871 -#: src/emc/usr_intf/pncconf/pncconf.glade:18128 -#: src/emc/usr_intf/pncconf/pncconf.glade:20233 -#: src/emc/usr_intf/pncconf/pncconf.glade:21486 -#: src/emc/usr_intf/pncconf/pncconf.glade:23282 -#: src/emc/usr_intf/pncconf/pncconf.glade:25078 -msgid "31:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64263 +msgid "Poles" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9531 -#: src/emc/usr_intf/pncconf/pncconf.glade:12855 -#: src/emc/usr_intf/pncconf/pncconf.glade:18112 -#: src/emc/usr_intf/pncconf/pncconf.glade:20217 -#: src/emc/usr_intf/pncconf/pncconf.glade:21502 -#: src/emc/usr_intf/pncconf/pncconf.glade:23298 -#: src/emc/usr_intf/pncconf/pncconf.glade:25094 -msgid "29:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64283 +#, fuzzy +msgid "Configuration" +msgstr "Hal _configuration" -#: src/emc/usr_intf/pncconf/pncconf.glade:9547 -#: src/emc/usr_intf/pncconf/pncconf.glade:12839 -#: src/emc/usr_intf/pncconf/pncconf.glade:18096 -#: src/emc/usr_intf/pncconf/pncconf.glade:20201 -#: src/emc/usr_intf/pncconf/pncconf.glade:21518 -#: src/emc/usr_intf/pncconf/pncconf.glade:23314 -#: src/emc/usr_intf/pncconf/pncconf.glade:25110 -msgid "27:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64318 +msgid "Use BLDC Motor Commutation Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9563 -#: src/emc/usr_intf/pncconf/pncconf.glade:12823 -#: src/emc/usr_intf/pncconf/pncconf.glade:18080 -#: src/emc/usr_intf/pncconf/pncconf.glade:20185 -#: src/emc/usr_intf/pncconf/pncconf.glade:21534 -#: src/emc/usr_intf/pncconf/pncconf.glade:23330 -#: src/emc/usr_intf/pncconf/pncconf.glade:25126 -msgid "25:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64354 +msgid "Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9936 -#: src/emc/usr_intf/pncconf/pncconf.glade:12450 -#: src/emc/usr_intf/pncconf/pncconf.glade:17707 -#: src/emc/usr_intf/pncconf/pncconf.glade:19924 -#: src/emc/usr_intf/pncconf/pncconf.glade:21795 -#: src/emc/usr_intf/pncconf/pncconf.glade:23591 -#: src/emc/usr_intf/pncconf/pncconf.glade:25387 -msgid "33:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64375 +msgid "% " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9952 -#: src/emc/usr_intf/pncconf/pncconf.glade:12434 -#: src/emc/usr_intf/pncconf/pncconf.glade:17691 -#: src/emc/usr_intf/pncconf/pncconf.glade:19908 -#: src/emc/usr_intf/pncconf/pncconf.glade:21811 -#: src/emc/usr_intf/pncconf/pncconf.glade:23607 -#: src/emc/usr_intf/pncconf/pncconf.glade:25403 -msgid "35:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64394 +msgid "Range:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9968 -#: src/emc/usr_intf/pncconf/pncconf.glade:12418 -#: src/emc/usr_intf/pncconf/pncconf.glade:17675 -#: src/emc/usr_intf/pncconf/pncconf.glade:19892 -#: src/emc/usr_intf/pncconf/pncconf.glade:21827 -#: src/emc/usr_intf/pncconf/pncconf.glade:23623 -#: src/emc/usr_intf/pncconf/pncconf.glade:25419 -msgid "37:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64419 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "RPM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9984 -#: src/emc/usr_intf/pncconf/pncconf.glade:12402 -#: src/emc/usr_intf/pncconf/pncconf.glade:17659 -#: src/emc/usr_intf/pncconf/pncconf.glade:19876 -#: src/emc/usr_intf/pncconf/pncconf.glade:21843 -#: src/emc/usr_intf/pncconf/pncconf.glade:23639 -#: src/emc/usr_intf/pncconf/pncconf.glade:25435 -msgid "39:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64439 +msgid "Use Spindle-At-Speed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10000 -#: src/emc/usr_intf/pncconf/pncconf.glade:12386 -#: src/emc/usr_intf/pncconf/pncconf.glade:17643 -#: src/emc/usr_intf/pncconf/pncconf.glade:19860 -#: src/emc/usr_intf/pncconf/pncconf.glade:21859 -#: src/emc/usr_intf/pncconf/pncconf.glade:23655 -#: src/emc/usr_intf/pncconf/pncconf.glade:25451 -msgid "41:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64464 +#, fuzzy +msgid "Filter gain:" +msgstr "Program_filer %r misslyckades" -#: src/emc/usr_intf/pncconf/pncconf.glade:10016 -#: src/emc/usr_intf/pncconf/pncconf.glade:12370 -#: src/emc/usr_intf/pncconf/pncconf.glade:17627 -#: src/emc/usr_intf/pncconf/pncconf.glade:19844 -#: src/emc/usr_intf/pncconf/pncconf.glade:21875 -#: src/emc/usr_intf/pncconf/pncconf.glade:23671 -#: src/emc/usr_intf/pncconf/pncconf.glade:25467 -msgid "43:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64499 +msgid "Spindle Display Filter Settings" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10032 -#: src/emc/usr_intf/pncconf/pncconf.glade:12354 -#: src/emc/usr_intf/pncconf/pncconf.glade:17611 -#: src/emc/usr_intf/pncconf/pncconf.glade:19828 -#: src/emc/usr_intf/pncconf/pncconf.glade:21891 -#: src/emc/usr_intf/pncconf/pncconf.glade:23687 -#: src/emc/usr_intf/pncconf/pncconf.glade:25483 -msgid "45:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64565 +msgid "Rapid Speed Following Error:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10099 -#: src/emc/usr_intf/pncconf/pncconf.glade:12287 -#: src/emc/usr_intf/pncconf/pncconf.glade:17544 -#: src/emc/usr_intf/pncconf/pncconf.glade:19777 -#: src/emc/usr_intf/pncconf/pncconf.glade:21942 -#: src/emc/usr_intf/pncconf/pncconf.glade:23738 -#: src/emc/usr_intf/pncconf/pncconf.glade:25534 -msgid "47:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64577 +msgid "Feed Speed Following Error:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10822 -#: src/emc/usr_intf/pncconf/pncconf.glade:11077 -#: src/emc/usr_intf/pncconf/pncconf.glade:11311 -#: src/emc/usr_intf/pncconf/pncconf.glade:11567 -#: src/emc/usr_intf/pncconf/pncconf.glade:13924 -#: src/emc/usr_intf/pncconf/pncconf.glade:14171 -#: src/emc/usr_intf/pncconf/pncconf.glade:16516 -#: src/emc/usr_intf/pncconf/pncconf.glade:16772 -#: src/emc/usr_intf/pncconf/pncconf.glade:19129 -#: src/emc/usr_intf/pncconf/pncconf.glade:19379 -#: src/emc/usr_intf/pncconf/pncconf.glade:22343 -#: src/emc/usr_intf/pncconf/pncconf.glade:22592 -#: src/emc/usr_intf/pncconf/pncconf.glade:24139 -#: src/emc/usr_intf/pncconf/pncconf.glade:24388 -#: src/emc/usr_intf/pncconf/pncconf.glade:25935 -#: src/emc/usr_intf/pncconf/pncconf.glade:26184 -#: src/emc/usr_intf/pncconf/pncconf.glade:28515 -#: src/emc/usr_intf/pncconf/pncconf.glade:28761 -#: src/emc/usr_intf/pncconf/pncconf.glade:28892 -#: src/emc/usr_intf/pncconf/pncconf.glade:29139 -#: src/emc/usr_intf/pncconf/pncconf.glade:33079 -#: src/emc/usr_intf/pncconf/pncconf.glade:33250 -#: src/emc/usr_intf/pncconf/pncconf.glade:33497 -#: src/emc/usr_intf/pncconf/pncconf.glade:38012 -#: src/emc/usr_intf/pncconf/pncconf.glade:38258 -#: src/emc/usr_intf/pncconf/pncconf.glade:38507 -#: src/emc/usr_intf/pncconf/pncconf.glade:42359 -#: src/emc/usr_intf/pncconf/pncconf.glade:42605 -#: src/emc/usr_intf/pncconf/pncconf.glade:42736 -#: src/emc/usr_intf/pncconf/pncconf.glade:42983 -#: src/emc/usr_intf/pncconf/pncconf.glade:46936 -#: src/emc/usr_intf/pncconf/pncconf.glade:49282 -#: src/emc/usr_intf/pncconf/pncconf.glade:49528 -#: src/emc/usr_intf/pncconf/pncconf.glade:49659 -#: src/emc/usr_intf/pncconf/pncconf.glade:49906 -#: src/emc/usr_intf/pncconf/pncconf.glade:53859 -msgid "Pin Type" +#: src/emc/usr_intf/pncconf/pncconf.glade:64591 +msgid "Invert Motor Direction" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10835 -#: src/emc/usr_intf/pncconf/pncconf.glade:11553 -#: src/emc/usr_intf/pncconf/pncconf.glade:16758 -#: src/emc/usr_intf/pncconf/pncconf.glade:19365 -#: src/emc/usr_intf/pncconf/pncconf.glade:22356 -#: src/emc/usr_intf/pncconf/pncconf.glade:24152 -#: src/emc/usr_intf/pncconf/pncconf.glade:25948 -msgid "23:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64606 +msgid "Invert Encoder Direction " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10849 -#: src/emc/usr_intf/pncconf/pncconf.glade:11539 -#: src/emc/usr_intf/pncconf/pncconf.glade:16744 -#: src/emc/usr_intf/pncconf/pncconf.glade:19351 -#: src/emc/usr_intf/pncconf/pncconf.glade:22370 -#: src/emc/usr_intf/pncconf/pncconf.glade:24166 -#: src/emc/usr_intf/pncconf/pncconf.glade:25962 -msgid "21:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64661 +#, fuzzy +msgid "Single Input Encoder" +msgstr "Spindel:" -#: src/emc/usr_intf/pncconf/pncconf.glade:10863 -#: src/emc/usr_intf/pncconf/pncconf.glade:11525 -#: src/emc/usr_intf/pncconf/pncconf.glade:16730 -#: src/emc/usr_intf/pncconf/pncconf.glade:19337 -#: src/emc/usr_intf/pncconf/pncconf.glade:22384 -#: src/emc/usr_intf/pncconf/pncconf.glade:24180 -#: src/emc/usr_intf/pncconf/pncconf.glade:25976 -msgid "19:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64776 +msgid "encoder Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10877 -#: src/emc/usr_intf/pncconf/pncconf.glade:11511 -#: src/emc/usr_intf/pncconf/pncconf.glade:16716 -#: src/emc/usr_intf/pncconf/pncconf.glade:19323 -#: src/emc/usr_intf/pncconf/pncconf.glade:22398 -#: src/emc/usr_intf/pncconf/pncconf.glade:24194 -#: src/emc/usr_intf/pncconf/pncconf.glade:25990 -msgid "17:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64801 +#, fuzzy +msgid "Stepper Scale:" +msgstr "Blockvis körning av program" -#: src/emc/usr_intf/pncconf/pncconf.glade:10891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11497 -#: src/emc/usr_intf/pncconf/pncconf.glade:16702 -#: src/emc/usr_intf/pncconf/pncconf.glade:19309 -#: src/emc/usr_intf/pncconf/pncconf.glade:22412 -#: src/emc/usr_intf/pncconf/pncconf.glade:24208 -#: src/emc/usr_intf/pncconf/pncconf.glade:26004 -msgid "15:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64831 +msgid "" +"Calculate\n" +"Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10905 -#: src/emc/usr_intf/pncconf/pncconf.glade:11483 -#: src/emc/usr_intf/pncconf/pncconf.glade:16688 -#: src/emc/usr_intf/pncconf/pncconf.glade:19295 -#: src/emc/usr_intf/pncconf/pncconf.glade:22426 -#: src/emc/usr_intf/pncconf/pncconf.glade:24222 -#: src/emc/usr_intf/pncconf/pncconf.glade:26018 -msgid "13:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64901 +msgid "Test / Tune Axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10919 -#: src/emc/usr_intf/pncconf/pncconf.glade:11469 -#: src/emc/usr_intf/pncconf/pncconf.glade:16674 -#: src/emc/usr_intf/pncconf/pncconf.glade:19281 -#: src/emc/usr_intf/pncconf/pncconf.glade:22440 -#: src/emc/usr_intf/pncconf/pncconf.glade:24236 -#: src/emc/usr_intf/pncconf/pncconf.glade:26032 -msgid "11:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64943 +#, fuzzy +msgid "X Axis Configuration" +msgstr "Hal _configuration" -#: src/emc/usr_intf/pncconf/pncconf.glade:10933 -#: src/emc/usr_intf/pncconf/pncconf.glade:11455 -#: src/emc/usr_intf/pncconf/pncconf.glade:16660 -#: src/emc/usr_intf/pncconf/pncconf.glade:19267 -#: src/emc/usr_intf/pncconf/pncconf.glade:22454 -#: src/emc/usr_intf/pncconf/pncconf.glade:24250 -#: src/emc/usr_intf/pncconf/pncconf.glade:26046 -msgid " 9:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65155 +msgid "" +"NO\n" +"YES" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10947 -#: src/emc/usr_intf/pncconf/pncconf.glade:11441 -#: src/emc/usr_intf/pncconf/pncconf.glade:16646 -#: src/emc/usr_intf/pncconf/pncconf.glade:19253 -#: src/emc/usr_intf/pncconf/pncconf.glade:22468 -#: src/emc/usr_intf/pncconf/pncconf.glade:24264 -#: src/emc/usr_intf/pncconf/pncconf.glade:26060 -msgid " 7:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65171 +msgid "Use Encoder Index For Home:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10961 -#: src/emc/usr_intf/pncconf/pncconf.glade:11427 -#: src/emc/usr_intf/pncconf/pncconf.glade:16632 -#: src/emc/usr_intf/pncconf/pncconf.glade:19239 -#: src/emc/usr_intf/pncconf/pncconf.glade:22482 -#: src/emc/usr_intf/pncconf/pncconf.glade:24278 -#: src/emc/usr_intf/pncconf/pncconf.glade:26074 -msgid " 5:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65212 +msgid "Home Final Velocity:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10975 -#: src/emc/usr_intf/pncconf/pncconf.glade:11413 -#: src/emc/usr_intf/pncconf/pncconf.glade:16618 -#: src/emc/usr_intf/pncconf/pncconf.glade:19225 -#: src/emc/usr_intf/pncconf/pncconf.glade:22496 -#: src/emc/usr_intf/pncconf/pncconf.glade:24292 -#: src/emc/usr_intf/pncconf/pncconf.glade:26088 -msgid " 3:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65222 +msgid "" +"Same\n" +"Opposite" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10989 -#: src/emc/usr_intf/pncconf/pncconf.glade:11399 -#: src/emc/usr_intf/pncconf/pncconf.glade:16604 -#: src/emc/usr_intf/pncconf/pncconf.glade:19211 -#: src/emc/usr_intf/pncconf/pncconf.glade:22510 -#: src/emc/usr_intf/pncconf/pncconf.glade:24306 -#: src/emc/usr_intf/pncconf/pncconf.glade:26102 -msgid " 1:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65238 +msgid "Home Latch Direction:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:11002 -#: src/emc/usr_intf/pncconf/pncconf.glade:11065 -#: src/emc/usr_intf/pncconf/pncconf.glade:11324 -#: src/emc/usr_intf/pncconf/pncconf.glade:11386 -#: src/emc/usr_intf/pncconf/pncconf.glade:13937 -#: src/emc/usr_intf/pncconf/pncconf.glade:13999 -#: src/emc/usr_intf/pncconf/pncconf.glade:16529 -#: src/emc/usr_intf/pncconf/pncconf.glade:16591 -#: src/emc/usr_intf/pncconf/pncconf.glade:19142 -#: src/emc/usr_intf/pncconf/pncconf.glade:19198 -#: src/emc/usr_intf/pncconf/pncconf.glade:22523 -#: src/emc/usr_intf/pncconf/pncconf.glade:22580 -#: src/emc/usr_intf/pncconf/pncconf.glade:24319 -#: src/emc/usr_intf/pncconf/pncconf.glade:24376 -#: src/emc/usr_intf/pncconf/pncconf.glade:26115 -#: src/emc/usr_intf/pncconf/pncconf.glade:26172 -#: src/emc/usr_intf/pncconf/pncconf.glade:28686 -#: src/emc/usr_intf/pncconf/pncconf.glade:28749 -#: src/emc/usr_intf/pncconf/pncconf.glade:28905 -#: src/emc/usr_intf/pncconf/pncconf.glade:28967 -#: src/emc/usr_intf/pncconf/pncconf.glade:33067 -#: src/emc/usr_intf/pncconf/pncconf.glade:33263 -#: src/emc/usr_intf/pncconf/pncconf.glade:33325 -#: src/emc/usr_intf/pncconf/pncconf.glade:38183 -#: src/emc/usr_intf/pncconf/pncconf.glade:38246 -#: src/emc/usr_intf/pncconf/pncconf.glade:38520 -#: src/emc/usr_intf/pncconf/pncconf.glade:42530 -#: src/emc/usr_intf/pncconf/pncconf.glade:42593 -#: src/emc/usr_intf/pncconf/pncconf.glade:42749 -#: src/emc/usr_intf/pncconf/pncconf.glade:42811 -#: src/emc/usr_intf/pncconf/pncconf.glade:46924 -#: src/emc/usr_intf/pncconf/pncconf.glade:49453 -#: src/emc/usr_intf/pncconf/pncconf.glade:49516 -#: src/emc/usr_intf/pncconf/pncconf.glade:49672 -#: src/emc/usr_intf/pncconf/pncconf.glade:49734 -#: src/emc/usr_intf/pncconf/pncconf.glade:53847 -msgid "Inv" +#: src/emc/usr_intf/pncconf/pncconf.glade:65251 +msgid "" +"Towards Negative limit\n" +"Towards Positive limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:11198 -msgid "" -" I/O\n" -"Connector 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65267 +msgid "Home Search Direction:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:13811 -msgid "" -" I/O\n" -" Connector 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65309 +msgid "Home latch Velocity:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:14012 -#: src/emc/usr_intf/pncconf/pncconf.glade:14039 -#: src/emc/usr_intf/pncconf/pncconf.glade:14053 -#: src/emc/usr_intf/pncconf/pncconf.glade:28632 -#: src/emc/usr_intf/pncconf/pncconf.glade:28646 -#: src/emc/usr_intf/pncconf/pncconf.glade:28673 -#: src/emc/usr_intf/pncconf/pncconf.glade:28980 -#: src/emc/usr_intf/pncconf/pncconf.glade:29007 -#: src/emc/usr_intf/pncconf/pncconf.glade:29021 -#: src/emc/usr_intf/pncconf/pncconf.glade:32951 -#: src/emc/usr_intf/pncconf/pncconf.glade:32965 -#: src/emc/usr_intf/pncconf/pncconf.glade:32992 -#: src/emc/usr_intf/pncconf/pncconf.glade:33338 -#: src/emc/usr_intf/pncconf/pncconf.glade:33365 -#: src/emc/usr_intf/pncconf/pncconf.glade:33379 -#: src/emc/usr_intf/pncconf/pncconf.glade:38129 -#: src/emc/usr_intf/pncconf/pncconf.glade:38143 -#: src/emc/usr_intf/pncconf/pncconf.glade:38170 -#: src/emc/usr_intf/pncconf/pncconf.glade:38594 -#: src/emc/usr_intf/pncconf/pncconf.glade:38621 -#: src/emc/usr_intf/pncconf/pncconf.glade:38635 -#: src/emc/usr_intf/pncconf/pncconf.glade:42476 -#: src/emc/usr_intf/pncconf/pncconf.glade:42490 -#: src/emc/usr_intf/pncconf/pncconf.glade:42517 -#: src/emc/usr_intf/pncconf/pncconf.glade:42824 -#: src/emc/usr_intf/pncconf/pncconf.glade:42851 -#: src/emc/usr_intf/pncconf/pncconf.glade:42865 -#: src/emc/usr_intf/pncconf/pncconf.glade:46808 -#: src/emc/usr_intf/pncconf/pncconf.glade:46822 -#: src/emc/usr_intf/pncconf/pncconf.glade:46849 -#: src/emc/usr_intf/pncconf/pncconf.glade:49399 -#: src/emc/usr_intf/pncconf/pncconf.glade:49413 -#: src/emc/usr_intf/pncconf/pncconf.glade:49440 -#: src/emc/usr_intf/pncconf/pncconf.glade:49747 -#: src/emc/usr_intf/pncconf/pncconf.glade:49774 -#: src/emc/usr_intf/pncconf/pncconf.glade:49788 -#: src/emc/usr_intf/pncconf/pncconf.glade:53731 -#: src/emc/usr_intf/pncconf/pncconf.glade:53745 -#: src/emc/usr_intf/pncconf/pncconf.glade:53772 -msgid " " +#: src/emc/usr_intf/pncconf/pncconf.glade:65334 +msgid "filename:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:16403 +#: src/emc/usr_intf/pncconf/pncconf.glade:65347 msgid "" -" I/O\n" -" Connector 4" +"Type 1\n" +"Type 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:19017 -msgid "" -" I/O\n" -" Connector 5" +#: src/emc/usr_intf/pncconf/pncconf.glade:65392 +msgid "Use Compensation File:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:20813 -msgid "" -" I/O\n" -"Connector 6" +#: src/emc/usr_intf/pncconf/pncconf.glade:65406 +msgid "Use Backlash Compensation:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:22609 -msgid "" -" I/O\n" -"Connector 7" +#: src/emc/usr_intf/pncconf/pncconf.glade:65433 +msgid "Home Position location (offset from machine zero Origin):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:24405 -msgid "" -" I/O\n" -"Connector 8" +#: src/emc/usr_intf/pncconf/pncconf.glade:65449 +msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:26201 -msgid "" -" I/O\n" -" Connector 9" +#: src/emc/usr_intf/pncconf/pncconf.glade:65493 +msgid "Home Switch location (Offset from machine zero Origin):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:28775 -#: src/emc/usr_intf/pncconf/pncconf.glade:35696 -#: src/emc/usr_intf/pncconf/pncconf.glade:42619 -#: src/emc/usr_intf/pncconf/pncconf.glade:49542 -msgid "page 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65509 +msgid "Home Search Velocity:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:31354 -#: src/emc/usr_intf/pncconf/pncconf.glade:38275 -#: src/emc/usr_intf/pncconf/pncconf.glade:45198 -#: src/emc/usr_intf/pncconf/pncconf.glade:52121 -msgid "page 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65524 +msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:33107 -#: src/emc/usr_intf/pncconf/pncconf.glade:40030 -#: src/emc/usr_intf/pncconf/pncconf.glade:46953 -#: src/emc/usr_intf/pncconf/pncconf.glade:53876 -msgid "page 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Advanced Options" +msgstr "Hal _configuration" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 15" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:33123 -msgid "Smart Serial 0" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 14" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:40046 -msgid "Smart Serial 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 13" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:46969 -msgid "Smart Serial 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 12" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53892 -msgid "Smart Serial 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 11" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53914 -msgid "First Parallel Port Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 10" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53998 -msgid "Outputs (PC to Machine):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 9" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:54552 -msgid "Inputs (Machine to PC):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:55977 -msgid "Launch Test Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 7" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56003 -msgid "X Axis Motor/Encoder Configuration" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 6" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56091 -msgid "D" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 5" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56104 -msgid "I" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56117 -msgid "P" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56128 -#: src/emc/usr_intf/pncconf/pncconf.glade:60917 -#: src/emc/usr_intf/pncconf/pncconf.glade:62202 -#: src/emc/usr_intf/pncconf/pncconf.glade:63103 -#: src/emc/usr_intf/pncconf/pncconf.glade:64388 -#: src/emc/usr_intf/pncconf/pncconf.glade:65265 -msgid "Bias" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56141 -msgid "Deadband" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56188 -#: src/emc/usr_intf/pncconf/pncconf.glade:61128 -#: src/emc/usr_intf/pncconf/pncconf.glade:61991 -#: src/emc/usr_intf/pncconf/pncconf.glade:63314 -#: src/emc/usr_intf/pncconf/pncconf.glade:64177 -#: src/emc/usr_intf/pncconf/pncconf.glade:65470 -msgid "FF0" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include Halui user interface component / commands" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56201 -#: src/emc/usr_intf/pncconf/pncconf.glade:61118 -#: src/emc/usr_intf/pncconf/pncconf.glade:62001 -#: src/emc/usr_intf/pncconf/pncconf.glade:63304 -#: src/emc/usr_intf/pncconf/pncconf.glade:64187 -#: src/emc/usr_intf/pncconf/pncconf.glade:65460 -msgid "FF1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Number of digital (bit) in pins:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56214 -#: src/emc/usr_intf/pncconf/pncconf.glade:61108 -#: src/emc/usr_intf/pncconf/pncconf.glade:62011 -#: src/emc/usr_intf/pncconf/pncconf.glade:63294 -#: src/emc/usr_intf/pncconf/pncconf.glade:64197 -#: src/emc/usr_intf/pncconf/pncconf.glade:65450 -msgid "FF2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Number of digital (bit) out pins:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56282 -msgid "Servo Info" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of Internal bit memory:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56362 -#, fuzzy -msgid "Spindle Max Output:" -msgstr "Spindel:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of Internal word memory:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56412 -#, fuzzy -msgid "Spindle Max limit:" -msgstr "Spindelbroms på" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Setup number of external pins" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56426 -#, fuzzy -msgid "Spindle Min Limit:" -msgstr "Spindel:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Z Auto Touch off program" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56456 -msgid "" -"Open Loop\n" -" Test" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "HAL Component Page" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56557 -msgid "Quad Pulses / Rev:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Add HAL components with this page." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56572 -msgid "Dac Max Output:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Component" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56586 -msgid "Dac Output Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "number of components" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56599 -msgid "3pwm Deadtime:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "PID" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56612 -msgid "3pwm Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56626 -#, fuzzy -msgid "Output Info" -msgstr "Försjutning" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mux16" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56691 -msgid "Driver Type:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "lowpass" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56735 -msgid "Direction Setup" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Base Thread" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56748 -msgid "Direction Hold" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Servo Thread" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56791 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Step Space" -msgstr "Blockvis körning av program" +msgid "Load Command " +msgstr "MDI-Kommando:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56804 -msgid "Step On-Time" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Thread Speed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56820 -msgid "Stepper Info" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Thread Command" +msgstr "MDI-Kommando:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56871 -msgid "No feedback" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Custom Components Commands" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56881 -msgid "Absolute Feedback" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Machine configuration complete" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56895 -msgid "Incremental Feedback" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"All the necessary information has now been gathered. Click \"Apply\" to " +"write your configuration files to disk.\n" +"\n" +"If you are using the 5i25 card with daugther boards or are using SSerial " +"based daughter cards, the cards must be connected and/or field power " +"supplied to the 5i25 \n" +"for the HAL pins to be available. If the config is expecting the pins and " +"they are not there, linuxcnc will error.\n" +"If you experience lockups while running LinuxCNC, you will need to decrease " +"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC, first verify that you " +"entered the proper timings for your stepper drivers. If that does not fix " +"the problem, then run a more thorough latency test as described on the " +"linuxcnc.org wiki:\n" +" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" +"\n" +"If you experience the \"Unexpected Realtime Delay\" message, run a more " +"thorough latency test as described on the linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56909 -msgid "Incremental Encoder" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +" Motor Encoder Test\n" +"Warning limits switches \n" +" Will not be obeyed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56921 -msgid "Hall sensors" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Slow Dac Speed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56933 -msgid "Fanuc Red Cap " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Fast Dac Speed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56945 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Use encoder Index" -msgstr "Spindel:" +msgid "Dac Offset:" +msgstr "Försjutning" -#: src/emc/usr_intf/pncconf/pncconf.glade:56976 -msgid "Input Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57000 -msgid "Digital instead of PWM outputs" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Reset Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57009 -msgid "6 outputs instead of 3 " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Enable Amp" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57021 -msgid "Force Trapezoid Mode" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Invert Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57033 -msgid "Emulate feedback " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Invert Motor" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57045 -msgid "Emulated Hall sensors" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"±\n" +"+\n" +"-\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57058 -msgid "Emulated Fanuc Red Cap" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Seconds" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57085 -msgid "8i20 Max Current" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57119 -msgid "Output Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm/minute^2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57153 -msgid "Poles" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm/minute" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57163 -msgid "Encoder-offset" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Current" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57173 -msgid "Drive-offset" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "P:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57183 -msgid "output-pattern" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "I:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57193 -msgid "Input-pattern" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "D:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57203 -#, fuzzy -msgid "Reverse" -msgstr "Spindelbroms på" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Original" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57303 -msgid "lead angle" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "DeadBand" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57313 -msgid "alignment current" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "PID Tuning" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57354 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Configuration" -msgstr "Hal _configuration" +msgid "Step Time:" +msgstr "Blockvis körning av program" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Step Space:" +msgstr "Blockvis körning av program" -#: src/emc/usr_intf/pncconf/pncconf.glade:57389 -msgid "Use Brushless Motor Control" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Direction Hold:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57425 -msgid "Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Direction Setup:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57446 -msgid "% " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Timing" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57466 -msgid "Use Spindle-At-Speed" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57491 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Filter gain:" -msgstr "Program_filer %r misslyckades" +msgid "spindle" +msgstr "Spindel:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57526 -msgid "Spindle Display Filter Settings" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Help Page" +msgstr "_Hjälp" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"X axis:\n" +"Total Travel = 10\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = 0\n" +"Pos Travel Distance = Total Travel - neg travel distance = 10\n" +"Home Position = Origin to Home Position distance = 6\n" +"\n" +"Y axis:\n" +"Total Travel = 8\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = -8\n" +"Pos Travel Distance = Total Travel - neg travel distance = 0\n" +"Home Position = Origin to Home Position distance = 0\n" +"\n" +"Z axis:\n" +"Total Travel = 12\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = -12\n" +"Pos Travel Distance = Total Travel - neg travel distance = 0\n" +"Home Position = Origin to Home Position distance = 0\n" +"\n" +"Note that the direction indicators on the top right show \n" +"movement of the TOOL and on the actual machine,\n" +"often it is the table that actually moves. In that case the \n" +"directions are opposite of shown.\n" +"\n" +"Note this is an example, Many other combinations are \n" +"possible" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57577 -#, fuzzy -msgid "Single Input Encoder" -msgstr "Spindel:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Mill" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57631 -msgid "Invert Encoder Direction " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"Total Travel = 4 + 6 = 10\n" +"Z Home Offset = Origin to Home Switch distance = 10\n" +"Z Neg Travel Distance = Origin to neg limit distance = 0\n" +"Z Pos Travel Distance = Total Travel - neg travel distance = 10\n" +"Z Home Position = Origin to Home Position distance = 4\n" +"\n" +"X axis would be similar but not shown fully for clarity.\n" +"This is just a sample reference other switch combinations are\n" +"possible." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57646 -msgid "Invert Motor Direction" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Lathe" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57661 -msgid "Feed Speed Following Error:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Diagram" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57675 -msgid "Rapid Speed Following Error:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Output" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57715 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" -"Calculate\n" -"Scale" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57744 -#, fuzzy -msgid "Stepper Scale:" -msgstr "Blockvis körning av program" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57771 -msgid "encoder Scale:" +"\t\t\t\tPNCconf - Point aNd Click CONFigurator\n" +"PNCconf is a configuration program for Linuxcnc.\n" +"It configures machines using Mesa I/O cards.\n" +"It configures servo,stepper or closed loop stepper machines.\n" +"It supports some of Mesa's sserial cards.\n" +"It will forever be a work in progress as Linuxcnc changes.\n" +"\n" +"Many thanks To:\n" +"Jeff Eppler - PNCconf is based on stepconf - Jeff's creation. Jeff also has " +"helped with techincal difficulties.\n" +"Big John T - John drew the original machine illustrations. Testing and " +"suggestions.\n" +"Peter Wallace - Technical questions on Mesa's I/O cards. Supplied sample " +"equipment to test with.\n" +"Andy Pugh - suggestions, questions answered and many pin name changes :) \n" +"Dave Armstrong - testing and suggestions expecially with resolvers.\n" +"Everyone who gave a bug report ! I cannot test everything thoughly enough so " +"reports help.\n" +"\n" +"Beta 1 version" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57928 -msgid "Test / Tune Axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "TPI " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58235 -msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulley teeth (motor:Leadscrew):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58251 -msgid "Home Search Velocity:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Worm turn ratio (Input:Outputl)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58266 -msgid "Home Switch location (Offset from machine zero Origin):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Microstep Multiplication Factor:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58310 -msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Leadscrew Metric Pitch" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58326 -msgid "Home Position location (offset from machine zero Origin):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motor steps per revolution:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58355 -msgid "Use Backlash Compensation:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Motor Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58369 -msgid "Use Compensation File:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "TPI" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58412 -msgid "" -"Type 1\n" -"Type 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "X 4 = Pulses/Rev" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58427 -msgid "filename:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder lines per revolution:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58455 -msgid "Home latch Velocity:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulley teeth (encoder:Leadscrew):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58494 -msgid "Home Search Direction:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58507 -msgid "" -"Towards Negative limit\n" -"Towards Positive limit" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58523 -msgid "Home Latch Direction:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "encoder pulses per unit:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58552 -msgid "Home Final Velocity:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "motor steps per unit:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58591 -msgid "Use Encoder Index For Home:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Calculated Scale" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58603 -msgid "" -"NO\n" -"YES" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / encoder pulse" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58628 +# ***: ../tcl/axis.tcl:1514 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Advanced Options" -msgstr "Hal _configuration" +msgid "Resolution:" +msgstr "Position:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58712 -msgid "Cmd 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Distance to acheave max speed:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58718 -msgid "Cmd 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "sec" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58728 -msgid "Cmd 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Khz" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58738 -msgid "Cmd 4" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Calculated Axis SCALE:" +msgstr "Axel:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58748 -msgid "Cmd 5" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motor RPM at max speed:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58874 -msgid "Cmd 6" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "xmaxrpm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58884 -msgid "Cmd 7" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motion Data" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58896 -msgid "Cmd 8" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "gtk-cancel" +msgstr "Avbryt" -#: src/emc/usr_intf/pncconf/pncconf.glade:58908 -msgid "Cmd 9" +#: src/emc/usr_intf/gscreen/gscreen.py:349 +#, python-format +msgid "adding import dir %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58920 -msgid "Cmd 10" +#: src/emc/usr_intf/gscreen/gscreen.py:355 +#, python-format +msgid "module '%s' imported OK" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58990 -msgid "Cmd 11" +#: src/emc/usr_intf/gscreen/gscreen.py:452 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Using CUSTOM glade file from %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59000 -msgid "Cmd 12" +#: src/emc/usr_intf/gscreen/gscreen.py:457 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Using SKIN glade file from %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59012 -msgid "Cmd 13" +#: src/emc/usr_intf/gscreen/gscreen.py:460 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: using STOCK glade file from: %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59024 -msgid "Cmd 14" +#: src/emc/usr_intf/gscreen/gscreen.py:466 +#, python-format +msgid "**** Gscreen GLADE ERROR: With main screen xml file: %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59036 -msgid "Cmd 15" +#: src/emc/usr_intf/gscreen/gscreen.py:471 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Screen 2 -Using CUSTOM glade file from %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59053 -msgid "Include Halui user interface component / commands" +#: src/emc/usr_intf/gscreen/gscreen.py:477 +#, python-format +msgid "**** Gscreen GLADE ERROR: With screen 2's xml file: %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59127 -msgid "Number of digital (bit) in pins:" +#: src/emc/usr_intf/gscreen/gscreen.py:479 +msgid "" +"\n" +"**** GSCREEN INFO: No Screen 2 glade file present" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59138 -msgid "Number of digital (bit) out pins:" +#: src/emc/usr_intf/gscreen/gscreen.py:519 +msgid "No UNITS entry found in [TRAJ] or [AXIS_0] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59308 -msgid "Setup number of external pins" +#: src/emc/usr_intf/gscreen/gscreen.py:532 +msgid "" +"*** Gscreen ERROR: Asking for a HAL component using a name that already " +"exists." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59360 -msgid "Z Auto Touch off program" +#: src/emc/usr_intf/gscreen/gscreen.py:585 +msgid "No default jog increments entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59505 -msgid "HAL Component Page" +#: src/emc/usr_intf/gscreen/gscreen.py:598 +msgid "No default angular jog increments entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59648 -msgid "lowpass" +#: src/emc/usr_intf/gscreen/gscreen.py:607 +#, python-format +msgid "" +"No DEFAULT_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59675 -msgid "mux16" +#: src/emc/usr_intf/gscreen/gscreen.py:618 +#, python-format +msgid "" +"No MAX_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59702 -msgid "scale" +#: src/emc/usr_intf/gscreen/gscreen.py:625 +msgid "No MAX_VELOCITY found in [TRAJ] of the INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59728 -msgid "PID" +#: src/emc/usr_intf/gscreen/gscreen.py:638 +#, python-format +msgid "" +"No DEFAULT_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59739 -msgid "number of components" +#: src/emc/usr_intf/gscreen/gscreen.py:649 +#, python-format +msgid "" +"No MAX_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59767 -msgid "Component" +#: src/emc/usr_intf/gscreen/gscreen.py:657 +msgid "No MAX_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59794 -msgid "Add HAL components with this page." +#: src/emc/usr_intf/gscreen/gscreen.py:663 +msgid "No MIN_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59844 -#, fuzzy -msgid "Thread Command" -msgstr "MDI-Kommando:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:59854 -msgid "Thread Speed" +#: src/emc/usr_intf/gscreen/gscreen.py:669 +msgid "No MAX_FEED_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59906 -#, fuzzy -msgid "Load Command " -msgstr "MDI-Kommando:" +#: src/emc/usr_intf/gscreen/gscreen.py:674 +msgid "This screen will be orientated for Lathe options" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59952 -msgid "Servo Thread" +#: src/emc/usr_intf/gscreen/gscreen.py:727 +msgid "CYCLE_TIME in [DISPLAY] of INI file is missing: defaulting to 100ms" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59965 -msgid "Base Thread" +#: src/emc/usr_intf/gscreen/gscreen.py:730 +msgid "CYCLE_TIME in [DISPLAY] of INI file is too small: defaulting to 100ms" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59979 -msgid "Custom Components Commands" +#: src/emc/usr_intf/gscreen/gscreen.py:732 +#, python-format +msgid "timeout %d" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60031 +#: src/emc/usr_intf/gscreen/gscreen.py:1001 msgid "" -" Motor Encoder Test\n" -"Warning limits switches \n" -" Will not be obeyed" +"**** WARNING GSCREEN: could not understand the window geometry info in " +"hidden preference file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60067 -#: src/emc/usr_intf/pncconf/pncconf.glade:60766 -#: src/emc/usr_intf/pncconf/pncconf.glade:61859 -#: src/emc/usr_intf/pncconf/pncconf.glade:62952 -#: src/emc/usr_intf/pncconf/pncconf.glade:64045 -#: src/emc/usr_intf/pncconf/pncconf.glade:65025 -msgid "Invert Motor" +#: src/emc/usr_intf/gscreen/gscreen.py:1089 +msgid "Control powered up and initialized" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60083 -#: src/emc/usr_intf/pncconf/pncconf.glade:60782 -#: src/emc/usr_intf/pncconf/pncconf.glade:61875 -#: src/emc/usr_intf/pncconf/pncconf.glade:62968 -#: src/emc/usr_intf/pncconf/pncconf.glade:64061 -#: src/emc/usr_intf/pncconf/pncconf.glade:65040 -msgid "Invert Encoder" +#: src/emc/usr_intf/gscreen/gscreen.py:1264 +msgid "Cycle start pressed in AUTO mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60100 -msgid "Enable Amp" +#: src/emc/usr_intf/gscreen/gscreen.py:1267 +msgid "Cycle start pressed in MDI mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60114 -msgid "Reset Encoder" +#: src/emc/usr_intf/gscreen/gscreen.py:1290 +#, python-format +msgid "Please change to tool # %s, then click OK." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60142 -msgid "Encoder Scale:" +#: src/emc/usr_intf/gscreen/gscreen.py:1291 +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +#: src/emc/usr_intf/gscreen/gscreen.py:1789 +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2849 +msgid "INFO:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60153 -#, fuzzy -msgid "Dac Offset:" -msgstr "Försjutning" - -#: src/emc/usr_intf/pncconf/pncconf.glade:60243 -msgid "Fast Dac Speed" +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +msgid "Can't start spindle manually while MDI busy" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60258 -msgid "Slow Dac Speed" +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +msgid "can't start spindle manually in Auto mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60407 -#: src/emc/usr_intf/pncconf/pncconf.glade:61503 -#: src/emc/usr_intf/pncconf/pncconf.glade:62596 -#: src/emc/usr_intf/pncconf/pncconf.glade:63689 -#: src/emc/usr_intf/pncconf/pncconf.glade:64788 -msgid "mm/minute" +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +msgid "No direction selected for spindle" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60441 -#: src/emc/usr_intf/pncconf/pncconf.glade:61536 -#: src/emc/usr_intf/pncconf/pncconf.glade:62629 -#: src/emc/usr_intf/pncconf/pncconf.glade:63722 -#: src/emc/usr_intf/pncconf/pncconf.glade:64821 -msgid "mm/minute^2" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:1331 +#: src/emc/usr_intf/gscreen/gscreen.py:1333 +#, fuzzy +msgid "Spindle Speed Preset Entry" +msgstr "Spindel:" -#: src/emc/usr_intf/pncconf/pncconf.glade:60550 -#: src/emc/usr_intf/pncconf/pncconf.glade:61644 -#: src/emc/usr_intf/pncconf/pncconf.glade:62737 -#: src/emc/usr_intf/pncconf/pncconf.glade:64930 -msgid "Enable" +#: src/emc/usr_intf/gscreen/gscreen.py:1362 +#: src/emc/usr_intf/gscreen/gscreen.py:1367 +msgid "Manual Tool Index Entry" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60600 -#: src/emc/usr_intf/pncconf/pncconf.glade:61693 -#: src/emc/usr_intf/pncconf/pncconf.glade:62786 -#: src/emc/usr_intf/pncconf/pncconf.glade:63879 -#: src/emc/usr_intf/pncconf/pncconf.glade:65139 -msgid "Seconds" +#: src/emc/usr_intf/gscreen/gscreen.py:1489 +msgid "Entry dialog" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60907 -#: src/emc/usr_intf/pncconf/pncconf.glade:62212 -#: src/emc/usr_intf/pncconf/pncconf.glade:63093 -#: src/emc/usr_intf/pncconf/pncconf.glade:64398 -#: src/emc/usr_intf/pncconf/pncconf.glade:65255 -msgid "DeadBand" +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +msgid "Classicladder realtime component not detected" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61089 -#: src/emc/usr_intf/pncconf/pncconf.glade:61380 -#: src/emc/usr_intf/pncconf/pncconf.glade:62030 -#: src/emc/usr_intf/pncconf/pncconf.glade:62401 -#: src/emc/usr_intf/pncconf/pncconf.glade:63275 -#: src/emc/usr_intf/pncconf/pncconf.glade:63562 -#: src/emc/usr_intf/pncconf/pncconf.glade:64216 -#: src/emc/usr_intf/pncconf/pncconf.glade:64587 -#: src/emc/usr_intf/pncconf/pncconf.glade:65431 -#: src/emc/usr_intf/pncconf/pncconf.glade:65718 -msgid "Original" +#: src/emc/usr_intf/gscreen/gscreen.py:1617 +msgid "ladder not available - is the realtime component loaded?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61138 -#: src/emc/usr_intf/pncconf/pncconf.glade:61981 -#: src/emc/usr_intf/pncconf/pncconf.glade:63324 -#: src/emc/usr_intf/pncconf/pncconf.glade:64167 -#: src/emc/usr_intf/pncconf/pncconf.glade:65480 -msgid "D:" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:1691 +#, fuzzy +msgid "Override Entry" +msgstr "Ignorera Ändlägen" -#: src/emc/usr_intf/pncconf/pncconf.glade:61148 -#: src/emc/usr_intf/pncconf/pncconf.glade:61971 -#: src/emc/usr_intf/pncconf/pncconf.glade:63334 -#: src/emc/usr_intf/pncconf/pncconf.glade:64157 -#: src/emc/usr_intf/pncconf/pncconf.glade:65490 -msgid "I:" -msgstr "" +# ***: ../tcl/axis.tcl:1512 +#: src/emc/usr_intf/gscreen/gscreen.py:1719 +#, fuzzy +msgid "Machine powered on" +msgstr "Maskin" -#: src/emc/usr_intf/pncconf/pncconf.glade:61158 -#: src/emc/usr_intf/pncconf/pncconf.glade:61961 -#: src/emc/usr_intf/pncconf/pncconf.glade:63344 -#: src/emc/usr_intf/pncconf/pncconf.glade:64147 -#: src/emc/usr_intf/pncconf/pncconf.glade:65500 -msgid "P:" -msgstr "" +# ***: ../tcl/axis.tcl:1514 +#: src/emc/usr_intf/gscreen/gscreen.py:1724 +#, fuzzy +msgid "Machine Estopped!" +msgstr "Position:" -#: src/emc/usr_intf/pncconf/pncconf.glade:61168 -#: src/emc/usr_intf/pncconf/pncconf.glade:61392 -#: src/emc/usr_intf/pncconf/pncconf.glade:61951 -#: src/emc/usr_intf/pncconf/pncconf.glade:62389 -#: src/emc/usr_intf/pncconf/pncconf.glade:63354 -#: src/emc/usr_intf/pncconf/pncconf.glade:63574 -#: src/emc/usr_intf/pncconf/pncconf.glade:64137 -#: src/emc/usr_intf/pncconf/pncconf.glade:64575 -#: src/emc/usr_intf/pncconf/pncconf.glade:65510 -#: src/emc/usr_intf/pncconf/pncconf.glade:65730 -msgid "Current" +#: src/emc/usr_intf/gscreen/gscreen.py:1727 +msgid "Calculator" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61185 -#: src/emc/usr_intf/pncconf/pncconf.glade:62278 -#: src/emc/usr_intf/pncconf/pncconf.glade:63371 -#: src/emc/usr_intf/pncconf/pncconf.glade:64464 -#: src/emc/usr_intf/pncconf/pncconf.glade:65527 -msgid "PID Tuning" +#: src/emc/usr_intf/gscreen/gscreen.py:1857 +#, python-format +msgid "Axes %s are homed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61370 -#: src/emc/usr_intf/pncconf/pncconf.glade:62413 -#: src/emc/usr_intf/pncconf/pncconf.glade:63552 -#: src/emc/usr_intf/pncconf/pncconf.glade:64599 -#: src/emc/usr_intf/pncconf/pncconf.glade:65708 -msgid "Direction Setup:" +#: src/emc/usr_intf/gscreen/gscreen.py:1864 +msgid "All the axes have been homed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61404 -#: src/emc/usr_intf/pncconf/pncconf.glade:62379 -#: src/emc/usr_intf/pncconf/pncconf.glade:63586 -#: src/emc/usr_intf/pncconf/pncconf.glade:64565 -#: src/emc/usr_intf/pncconf/pncconf.glade:65742 -msgid "Direction Hold:" +#: src/emc/usr_intf/gscreen/gscreen.py:1874 +#, python-format +msgid "There are unhomed axes: %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61414 -#: src/emc/usr_intf/pncconf/pncconf.glade:62369 -#: src/emc/usr_intf/pncconf/pncconf.glade:63596 -#: src/emc/usr_intf/pncconf/pncconf.glade:64555 -#: src/emc/usr_intf/pncconf/pncconf.glade:65752 -#, fuzzy -msgid "Step Space:" -msgstr "Blockvis körning av program" +#: src/emc/usr_intf/gscreen/gscreen.py:1879 +#, fuzzy, python-format +msgid "Program loaded: %s" +msgstr "Program_filer %r misslyckades" -#: src/emc/usr_intf/pncconf/pncconf.glade:61424 -#: src/emc/usr_intf/pncconf/pncconf.glade:62359 -#: src/emc/usr_intf/pncconf/pncconf.glade:63606 -#: src/emc/usr_intf/pncconf/pncconf.glade:64545 -#: src/emc/usr_intf/pncconf/pncconf.glade:65762 +#: src/emc/usr_intf/gscreen/gscreen.py:1977 #, fuzzy -msgid "Step Time:" -msgstr "Blockvis körning av program" +msgid "Manual Spindle Control" +msgstr "Spindel:" -#: src/emc/usr_intf/pncconf/pncconf.glade:61439 -#: src/emc/usr_intf/pncconf/pncconf.glade:62528 -#: src/emc/usr_intf/pncconf/pncconf.glade:63621 -#: src/emc/usr_intf/pncconf/pncconf.glade:64714 -#: src/emc/usr_intf/pncconf/pncconf.glade:65777 -msgid "Step Timing" +#: src/emc/usr_intf/gscreen/gscreen.py:2034 +msgid "Keyboard" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:63830 -msgid "enable" +#: src/emc/usr_intf/gscreen/gscreen.py:2067 +msgid "Error with launching 'Onboard' on-screen keyboard program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65798 -#, fuzzy -msgid "spindle" -msgstr "Spindel:" +#: src/emc/usr_intf/gscreen/gscreen.py:2215 +#, python-format +msgid "**** GSCREEN INFO: Overriding internal signal call to %s" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:2643 +msgid " Zero Origin" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65881 +#: src/emc/usr_intf/gscreen/gscreen.py:2644 #, fuzzy -msgid "Help Page" -msgstr "_Hjälp" +msgid "Offset Origin" +msgstr "Försjutning" -#: src/emc/usr_intf/pncconf/pncconf.glade:65911 +#: src/emc/usr_intf/gscreen/gscreen.py:2659 msgid "" -"X axis:\n" -"Total Travel = 10\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = 0\n" -"Pos Travel Distance = Total Travel - neg travel distance = 10\n" -"Home Position = Origin to Home Position distance = 6\n" -"\n" -"Y axis:\n" -"Total Travel = 8\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = -8\n" -"Pos Travel Distance = Total Travel - neg travel distance = 0\n" -"Home Position = Origin to Home Position distance = 0\n" -"\n" -"Z axis:\n" -"Total Travel = 12\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = -12\n" -"Pos Travel Distance = Total Travel - neg travel distance = 0\n" -"Home Position = Origin to Home Position distance = 0\n" -"\n" -"Note that the direction indicators on the top right show \n" -"movement of the TOOL and on the actual machine,\n" -"often it is the table that actually moves. In that case the \n" -"directions are opposite of shown.\n" -"\n" -"Note this is an example, Many other combinations are \n" -"possible" +"**** Gscreen ERROR: Invalid message configuration (missing text or type) " +"in INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65951 -msgid "Mill" +#: src/emc/usr_intf/gscreen/gscreen.py:2661 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing pinname) in " +"INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65970 -msgid "" -"Total Travel = 4 + 6 = 10\n" -"Z Home Offset = Origin to Home Switch distance = 10\n" -"Z Neg Travel Distance = Origin to neg limit distance = 0\n" -"Z Pos Travel Distance = Total Travel - neg travel distance = 10\n" -"Z Home Position = Origin to Home Position distance = 4\n" -"\n" -"X axis would be similar but not shown fully for clarity.\n" -"This is just a sample reference other switch combinations are\n" -"possible." +#: src/emc/usr_intf/gscreen/gscreen.py:2663 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing boldtext) in " +"INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65994 -msgid "Lathe" +#: src/emc/usr_intf/gscreen/gscreen.py:2667 +#, python-format +msgid "" +"**** Gscreen ERROR: invalid message type (%s)in INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66010 -msgid "Diagram" +#: src/emc/usr_intf/gscreen/gscreen.py:2699 +msgid "Dialog error - Is the dialog handler missing from the handler file?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66043 -msgid "Output" +#: src/emc/usr_intf/gscreen/gscreen.py:2701 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3540 +#, fuzzy +msgid "Manual Toolchange" +msgstr "Manuell kontroll" + +#: src/emc/usr_intf/gscreen/gscreen.py:2703 +#: src/emc/usr_intf/gmoccapy/dialogs.py:94 +#: src/emc/usr_intf/gmoccapy/dialogs.py:107 +#: src/emc/usr_intf/gmoccapy/dialogs.py:119 +msgid "Operator Message" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66123 -msgid "Motor steps per revolution:" +#: src/emc/usr_intf/gscreen/gscreen.py:2737 +#: src/emc/usr_intf/gscreen/gscreen.py:2741 +#: src/emc/usr_intf/gmoccapy/dialogs.py:155 +#: src/emc/usr_intf/gmoccapy/dialogs.py:159 +msgid "Restart Entry" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66173 -#: src/emc/usr_intf/pncconf/pncconf.glade:66459 -msgid "Leadscrew Metric Pitch" +#: src/emc/usr_intf/gscreen/gscreen.py:2752 +#: src/emc/usr_intf/gmoccapy/dialogs.py:173 +msgid "Enter" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66186 -msgid "Microstep Multiplication Factor:" +#: src/emc/usr_intf/gscreen/gscreen.py:2774 +#, python-format +msgid "Ready to Restart program from line %d" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66199 -#: src/emc/usr_intf/pncconf/pncconf.glade:66481 -msgid "Worm turn ratio (Input:Outputl)" +#: src/emc/usr_intf/gscreen/gscreen.py:2807 +#, fuzzy +msgid "Invalid embeded tab configuration" +msgstr "Hal _configuration" + +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +msgid "Can't jog multiple axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66212 -msgid "Pulley teeth (motor:Leadscrew):" +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +msgid "No axis selected to jog" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66356 -msgid "TPI " +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +msgid "No axis selected to move" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66372 -msgid "Step Motor Scale" +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +msgid "Can't home multiple axis - select HOME ALL instead" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66472 -msgid "Pulley teeth (encoder:Leadscrew):" +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +msgid "No axis selected to home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66537 -msgid "Encoder lines per revolution:" +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +msgid "Can't unhome multiple axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66547 -msgid "X 4 = Pulses/Rev" +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +msgid "No axis selected to unhome" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66651 -msgid "TPI" +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +msgid "No axis selected for origin zeroing" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66667 -msgid "Encoder Scale" +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +msgid "No axis selected for origin touch-off" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66711 -msgid "motor steps per unit:" +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +msgid "Can't tool touch-off multiple axes" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66721 -msgid "encoder pulses per unit:" +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +msgid "No axis selected for tool touch-off" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66756 -msgid " " +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#: src/emc/usr_intf/gscreen/gscreen.py:3375 +msgid "Error Message" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66770 -msgid "Calculated Scale" +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#, python-format +msgid "Tool editor error - is the %s editor available?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66848 -msgid "xmaxrpm" +#: src/emc/usr_intf/gscreen/gscreen.py:3377 +#: src/emc/usr_intf/gscreen/gscreen.py:3379 +msgid "Message" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66864 -msgid "RPM" +#: src/emc/usr_intf/gscreen/gscreen.py:3409 +#, python-format +msgid "%d RPM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66877 -msgid "Motor RPM at max speed:" +#: src/emc/usr_intf/gscreen/gscreen.glade:48 +#: src/emc/usr_intf/gscreen/gscreen.glade:59 +#: src/emc/usr_intf/gscreen/gscreen.glade:135 +#: src/emc/usr_intf/gscreen/gscreen.glade:176 +#: src/emc/usr_intf/gscreen/gscreen.glade:187 +#: src/emc/usr_intf/gscreen/gscreen.glade:264 +#: src/emc/usr_intf/gscreen/gscreen.glade:306 +#: src/emc/usr_intf/gscreen/gscreen.glade:317 +#: src/emc/usr_intf/gscreen/gscreen.glade:393 +#: src/emc/usr_intf/gscreen/gscreen.glade:434 +#: src/emc/usr_intf/gscreen/gscreen.glade:445 +#: src/emc/usr_intf/gscreen/gscreen.glade:521 +#: src/emc/usr_intf/gscreen/gscreen.glade:562 +#: src/emc/usr_intf/gscreen/gscreen.glade:573 +#: src/emc/usr_intf/gscreen/gscreen.glade:649 +#: src/emc/usr_intf/gscreen/gscreen.glade:690 +#: src/emc/usr_intf/gscreen/gscreen.glade:701 +#: src/emc/usr_intf/gscreen/gscreen.glade:777 +#: src/emc/usr_intf/gscreen/gscreen.glade:818 +#: src/emc/usr_intf/gscreen/gscreen.glade:829 +#: src/emc/usr_intf/gscreen/gscreen.glade:905 +#: src/emc/usr_intf/gscreen/gscreen.glade:946 +#: src/emc/usr_intf/gscreen/gscreen.glade:957 +#: src/emc/usr_intf/gscreen/gscreen.glade:1033 +#: src/emc/usr_intf/gscreen/gscreen.glade:1074 +#: src/emc/usr_intf/gscreen/gscreen.glade:1085 +#: src/emc/usr_intf/gscreen/gscreen.glade:1161 +msgid "0000.0000" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66921 -#, fuzzy -msgid "Calculated Axis SCALE:" -msgstr "Axel:" +#: src/emc/usr_intf/gscreen/gscreen.glade:73 +#: src/emc/usr_intf/gscreen/gscreen.glade:201 +#: src/emc/usr_intf/gscreen/gscreen.glade:331 +#: src/emc/usr_intf/gscreen/gscreen.glade:459 +#: src/emc/usr_intf/gscreen/gscreen.glade:587 +#: src/emc/usr_intf/gscreen/gscreen.glade:715 +#: src/emc/usr_intf/gscreen/gscreen.glade:843 +#: src/emc/usr_intf/gscreen/gscreen.glade:971 +#: src/emc/usr_intf/gscreen/gscreen.glade:1099 +msgid "REL" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66934 -msgid "Khz" +#: src/emc/usr_intf/gscreen/gscreen.glade:99 +#: src/emc/usr_intf/gscreen/gscreen.glade:227 +#: src/emc/usr_intf/gscreen/gscreen.glade:357 +#: src/emc/usr_intf/gscreen/gscreen.glade:485 +#: src/emc/usr_intf/gscreen/gscreen.glade:613 +#: src/emc/usr_intf/gscreen/gscreen.glade:741 +#: src/emc/usr_intf/gscreen/gscreen.glade:869 +#: src/emc/usr_intf/gscreen/gscreen.glade:997 +#: src/emc/usr_intf/gscreen/gscreen.glade:1125 +msgid "ABS" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66949 -msgid "sec" +#: src/emc/usr_intf/gscreen/gscreen.glade:630 +msgid "B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67049 -msgid "Distance to acheave max speed:" +#: src/emc/usr_intf/gscreen/gscreen.glade:758 +msgid "C" msgstr "" -# ***: ../tcl/axis.tcl:1514 -#: src/emc/usr_intf/pncconf/pncconf.glade:67077 -#, fuzzy -msgid "Resolution:" -msgstr "Position:" +#: src/emc/usr_intf/gscreen/gscreen.glade:886 +msgid "U" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67105 -msgid "mm / encoder pulse" +#: src/emc/usr_intf/gscreen/gscreen.glade:1014 +msgid "V" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67123 -msgid "Motion Data" +#: src/emc/usr_intf/gscreen/gscreen.glade:1298 +msgid "G code" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67151 +#: src/emc/usr_intf/gscreen/gscreen.glade:1392 +msgid "G Codes Active" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1451 +msgid "MV:100%" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1470 #, fuzzy -msgid "gtk-cancel" -msgstr "Avbryt" +msgid " Mist" +msgstr "Försjutning" -#: src/emc/task/emctaskmain.cc:467 src/emc/task/emctaskmain.cc:500 -#, fuzzy, c-format -msgid "%s exceeds +X limit" -msgstr "Program överskrider maskinens begränsningar" +#: src/emc/usr_intf/gscreen/gscreen.glade:1481 +#, fuzzy +msgid " Flood " +msgstr "Kylvätska:" -#: src/emc/task/emctaskmain.cc:472 src/emc/task/emctaskmain.cc:505 -#, fuzzy, c-format -msgid "%s exceeds +Y limit" -msgstr "Program överskrider maskinens begränsningar" +#: src/emc/usr_intf/gscreen/gscreen.glade:1533 +#, fuzzy +msgid " At Speed " +msgstr "Matnings överjusterning (%): #guessing again" -#: src/emc/task/emctaskmain.cc:477 src/emc/task/emctaskmain.cc:510 -#, fuzzy, c-format -msgid "%s exceeds +Z limit" -msgstr "Program överskrider maskinens begränsningar" +#: src/emc/usr_intf/gscreen/gscreen.glade:1546 +msgid " Jog mode" +msgstr "" -#: src/emc/task/emctaskmain.cc:482 src/emc/task/emctaskmain.cc:515 -#, fuzzy, c-format -msgid "%s exceeds -X limit" -msgstr "Program överskrider maskinens begränsningar" +#: src/emc/usr_intf/gscreen/gscreen.glade:1600 +msgid "10 DPM" +msgstr "" -#: src/emc/task/emctaskmain.cc:487 src/emc/task/emctaskmain.cc:520 -#, fuzzy, c-format -msgid "%s exceeds -Y limit" -msgstr "Program överskrider maskinens begränsningar" +#: src/emc/usr_intf/gscreen/gscreen.glade:1616 +msgid "10 Ipm" +msgstr "" -#: src/emc/task/emctaskmain.cc:492 src/emc/task/emctaskmain.cc:525 -#, fuzzy, c-format -msgid "%s exceeds -Z limit" -msgstr "Program överskrider maskinens begränsningar" +#: src/emc/usr_intf/gscreen/gscreen.glade:1690 +#, fuzzy +msgid "Status" +msgstr "Kylvätska:" -#: src/emc/task/emctaskmain.cc:853 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:1715 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2510 msgid "" -"command (%s) cannot be executed until the machine is out of E-stop and " -"turned on" +"Search\n" +" Text:" msgstr "" -#: src/emc/task/emctaskmain.cc:973 -#, c-format -msgid "can't do that (%s) in manual mode" +#: src/emc/usr_intf/gscreen/gscreen.glade:1766 +#, fuzzy +msgid "Mode" +msgstr "Spindel:" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1782 +msgid "Main Level" msgstr "" -#: src/emc/task/emctaskmain.cc:1072 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter idle" +#: src/emc/usr_intf/gscreen/gscreen.glade:1823 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3678 +msgid "Themes" msgstr "" -#: src/emc/task/emctaskmain.cc:1132 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter reading" +# ***: ../tcl/axis.tcl:1514 +#: src/emc/usr_intf/gscreen/gscreen.glade:1847 +#, fuzzy +msgid "Relative Text Color" +msgstr "Position:" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1895 +msgid "DTG Text Color" msgstr "" -#: src/emc/task/emctaskmain.cc:1216 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter paused" +#: src/emc/usr_intf/gscreen/gscreen.glade:1916 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3710 +msgid "Warning Audio" msgstr "" -#: src/emc/task/emctaskmain.cc:1278 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter waiting" +#: src/emc/usr_intf/gscreen/gscreen.glade:1926 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3723 +msgid "Alert Audio" msgstr "" -#: src/emc/task/emctaskmain.cc:1370 -#, c-format -msgid "can't do that (%s) in MDI mode" +#: src/emc/usr_intf/gscreen/gscreen.glade:1947 +msgid "Grid Size" msgstr "" -#: src/emc/task/emctaskmain.cc:2015 -msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" +#: src/emc/usr_intf/gscreen/gscreen.glade:1986 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4119 +msgid "Starting RPM" msgstr "" -#: src/emc/task/emctaskmain.cc:2084 -msgid "Can't issue MDI command when not homed" +#: src/emc/usr_intf/gscreen/gscreen.glade:2015 +msgid "Metric\n" msgstr "" -#: src/emc/task/emctaskmain.cc:2089 -msgid "Must be in MDI mode to issue MDI command" +#: src/emc/usr_intf/gscreen/gscreen.glade:2030 +msgid "" +" Display\n" +"Aux Screen" msgstr "" -#: src/emc/task/emctaskmain.cc:2151 -msgid "Can't run a program when not homed" +#: src/emc/usr_intf/gscreen/gscreen.glade:2045 +msgid "" +"Diameter\n" +" Mode" msgstr "" -#: src/emc/rs274ngc/interp_arc.cc:108 src/emc/rs274ngc/rs274ngc_return.hh:160 -msgid "Zero radius arc" +#: src/emc/usr_intf/gscreen/gscreen.glade:2062 +#: src/emc/usr_intf/gscreen/gscreen.glade:3096 +#, fuzzy +msgid "" +" Show\n" +"Offsets" +msgstr "Visa EM_C Status" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2079 +msgid "" +"Show\n" +"DTG" msgstr "" -#: src/emc/rs274ngc/interp_arc.cc:112 src/emc/rs274ngc/interp_arc.cc:279 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:2096 msgid "" -"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " -"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " -"rel_err=%.4f%%" +" Gscreen\n" +"Fullscreen" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:90 -msgid "G4 not allowed with G2 or G3 because they both use P" +#: src/emc/usr_intf/gscreen/gscreen.glade:2118 +msgid "" +" On M7 Use\n" +"Aux Coolant" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:93 -msgid "Line with G10 does not have L1, L10, L11, L2, or L20" +#: src/emc/usr_intf/gscreen/gscreen.glade:2131 +msgid "" +" On M8 Use\n" +"Aux Coolant" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:94 -msgid "P value not an integer with G10" +#: src/emc/usr_intf/gscreen/gscreen.glade:2144 +msgid "Hide Pointer" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:95 -msgid "P value out of range (0-9) with G10 L2 or L20" +#: src/emc/usr_intf/gscreen/gscreen.glade:2156 +msgid "" +" Desktop\n" +"Notification" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:96 -msgid "P value out of range with G10 L1 or G10 L10" +#: src/emc/usr_intf/gscreen/gscreen.glade:2228 +#: src/emc/usr_intf/gscreen/gscreen.glade:2368 +msgid "Debug" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:100 -msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." +# ***: ../tcl/axis.tcl:1050 +#: src/emc/usr_intf/gscreen/gscreen.glade:2263 +#, fuzzy +msgid "Alarm History" +msgstr "Historia" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2281 +msgid "" +" Launch\n" +"Halshow" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:258 -msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2293 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6449 +#, fuzzy +msgid "Calibration" +msgstr "Hal _configuration" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2304 +msgid "Halmeter" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:264 -msgid "E word with no G76, M66, M67 or M68 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2315 +msgid "" +"linuxcnc\n" +" Status" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:269 -msgid "H word with no G43 or G76 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2327 +msgid "Halscope" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:275 -msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2338 +msgid "Ladder" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:281 -msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2386 +#, fuzzy +msgid "Tooleditor" +msgstr "_Redigera" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2404 +#, fuzzy +msgid "" +"Offset\n" +" Page" +msgstr "Försjutning" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2572 +#: src/emc/usr_intf/gscreen/gscreen.glade:2749 +#: src/emc/usr_intf/gscreen/gscreen.glade:3156 +msgid "\n" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:287 -msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2584 +msgid "Tool Setting" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:297 +#: src/emc/usr_intf/gscreen/gscreen.glade:2648 +#, fuzzy msgid "" -"L word with no G10, cutter compensation, canned cycle, digital/analog input, " -"or NURBS code" -msgstr "" +"Single\n" +" Step" +msgstr "Spindel:" -#: src/emc/rs274ngc/interp_check.cc:309 +#: src/emc/usr_intf/gscreen/gscreen.glade:2661 msgid "" -"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " -"M53 M62 M63 M64 M65 M66 or user M code to use it" +"Run At\n" +" Line" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:314 -msgid "P value not an integer with M19 G2 or G3" +#: src/emc/usr_intf/gscreen/gscreen.glade:2673 +msgid "" +"Change \n" +" View" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:316 -msgid "P value must be 0,1,or 2 with M19" +#: src/emc/usr_intf/gscreen/gscreen.glade:2760 +msgid "Homing\n" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:318 -msgid "P value should be 1 or greater with G2 or G3" +#: src/emc/usr_intf/gscreen/gscreen.glade:2781 +msgid "" +"Ignore\n" +"Limits" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:326 +#: src/emc/usr_intf/gscreen/gscreen.glade:2810 +#, fuzzy msgid "" -"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " -"code that uses it" -msgstr "" +" Set\n" +"Override" +msgstr "Matnings överjusterning (%): #guessing again" -#: src/emc/rs274ngc/interp_check.cc:336 -msgid "R value must be within 0..360 with M19" +#: src/emc/usr_intf/gscreen/gscreen.glade:2824 +msgid "Graphics\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:138 -msgid "You must specify both X and Y coordinates for Control Points" +#: src/emc/usr_intf/gscreen/gscreen.glade:2838 +msgid "" +"Menu\n" +"Level" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:141 -msgid "Can specify P without X and Y only for the first control point" +#: src/emc/usr_intf/gscreen/gscreen.glade:2851 +msgid "" +" Launch\n" +"Keyboard" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:144 -msgid "Must specify positive weight P for every Control Point" +#: src/emc/usr_intf/gscreen/gscreen.glade:2868 +msgid "Select Buttons" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:147 -msgid "Cannot make a NURBS with 0 feedrate" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2955 +#, fuzzy +msgid "" +"Unhome \n" +" All" +msgstr "Hemmaläge" -#: src/emc/rs274ngc/interp_convert.cc:182 -msgid "Cannot use G5.3 without G5.2 first" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2967 +#, fuzzy +msgid "" +"Unhome\n" +" Axis" +msgstr "Hemmaläge" -#: src/emc/rs274ngc/interp_convert.cc:183 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:2979 +#: src/emc/usr_intf/gscreen/gscreen.glade:3084 msgid "" -"You must specify a number of control points at least equal to the order L = " -"%d" +"Toggle\n" +"Readout" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:212 -msgid "Cannot convert spline with cutter radius compensation" +#: src/emc/usr_intf/gscreen/gscreen.glade:3004 +msgid "" +"Jogging\n" +" Mode" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:222 -msgid "Splines must be in the XY plane" +#: src/emc/usr_intf/gscreen/gscreen.glade:3016 +msgid "" +"coordinate\n" +" System" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:227 -msgid "Splines may not have motion in Z, A, B, or C" +#: src/emc/usr_intf/gscreen/gscreen.glade:3060 +msgid "" +"Index\n" +" Tool" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:231 -msgid "Must specify both I and J with G5.1" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3072 +#, fuzzy +msgid "" +"Spindle\n" +"Controls" +msgstr "Hal _configuration" -#: src/emc/rs274ngc/interp_convert.cc:250 -msgid "Must specify both I and J, or neither" +#: src/emc/usr_intf/gscreen/gscreen.glade:3195 +#, fuzzy +msgid "Open" +msgstr "_Öppna" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3205 +msgid "" +" Block\n" +"Delete" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:261 -msgid "Must specify both P and Q with G5" +#: src/emc/usr_intf/gscreen/gscreen.glade:3217 +msgid "" +"Optional\n" +" Stop" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:362 +#: src/emc/usr_intf/gscreen/gscreen.glade:3229 msgid "" -"The move just after exiting cutter compensation mode must be straight, not " -"an arc" +" Full\n" +"View" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:370 -msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" +#: src/emc/usr_intf/gscreen/gscreen.glade:3265 +msgid "" +"Next\n" +" Tab" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:382 -#: src/emc/rs274ngc/interp_convert.cc:4266 -msgid "Cannot feed with zero spindle speed in feed per rev mode" +#: src/emc/usr_intf/gscreen/gscreen.glade:3285 +#, fuzzy +msgid "" +" Feed\n" +"Override" +msgstr "Matnings överjusterning (%): #guessing again" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3298 +#, fuzzy +msgid "" +"Spindle\n" +"Override" +msgstr "Matnings överjusterning (%): #guessing again" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3311 +#, fuzzy +msgid "" +" Rapid\n" +"Override" +msgstr "Matnings överjusterning (%): #guessing again" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3332 +msgid "" +" Jog\n" +"Speed" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:393 -#: src/emc/rs274ngc/interp_convert.cc:399 -#: src/emc/rs274ngc/interp_convert.cc:408 -#: src/emc/rs274ngc/interp_convert.cc:414 -#: src/emc/rs274ngc/interp_convert.cc:423 -#: src/emc/rs274ngc/interp_convert.cc:429 -#, c-format -msgid "%c word missing in absolute center arc" +#: src/emc/usr_intf/gscreen/gscreen.glade:3345 +msgid "" +" Jog\n" +"Increments" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:649 +#: src/emc/usr_intf/gscreen/gscreen.glade:3361 msgid "" -"Radius of cutter compensation entry arc is not greater than the tool radius" +"Adjust\n" +"Rotary" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:868 -#: src/emc/rs274ngc/interp_convert.cc:878 src/emc/rs274ngc/interp_queue.cc:592 +#: src/emc/usr_intf/gscreen/gscreen.glade:3383 msgid "" -"Arc move in concave corner cannot be reached by the tool without gouging" +"Change\n" +" View" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:904 -msgid "Arc to arc motion is invalid because the arcs have the same center" +#: src/emc/usr_intf/gscreen/gscreen.glade:3431 +msgid "" +" Pan\n" +"Vertical" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:907 +#: src/emc/usr_intf/gscreen/gscreen.glade:3444 msgid "" -"Arc to arc motion makes a corner the compensated tool can't fit in without " -"gouging" +" Pan\n" +"Horizontal" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1036 -#: src/emc/rs274ngc/interp_convert.cc:1037 -#: src/emc/rs274ngc/interp_convert.cc:1038 -#: src/emc/rs274ngc/interp_convert.cc:3733 -#: src/emc/rs274ngc/interp_convert.cc:3736 -#: src/emc/rs274ngc/interp_convert.cc:3739 src/emc/rs274ngc/interp_find.cc:97 -#, c-format -msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" +# ***: ../tcl/axis.tcl:1514 +#: src/emc/usr_intf/gscreen/gscreen.glade:3457 +#, fuzzy +msgid "" +" Rotate\n" +"Horiontal" +msgstr "Position:" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3470 +msgid "" +" Rotate\n" +"Vertical" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1494 -msgid "Cannot change control mode with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3491 +msgid "" +"Search\n" +" Bwd" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1607 -msgid "Cannot change coordinate systems with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3503 +msgid "" +"Search\n" +" Fwd" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1851 -#, c-format -msgid "G%d.1 with no D word" +#: src/emc/usr_intf/gscreen/gscreen.glade:3561 +#, fuzzy +msgid "" +" Reload\n" +"Program" +msgstr "Kör program" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3604 +msgid "" +" Clear\n" +"status" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3634 +msgid "G54" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1854 -#, c-format -msgid "G%d.1 with L word, but plane is not G18" +#: src/emc/usr_intf/gscreen/gscreen.glade:3650 +msgid "calc" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1865 -#, c-format -msgid "G%d requires D word to be a whole number" +#: src/emc/usr_intf/gscreen/gscreen.glade:3725 +msgid "test" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1872 -#, c-format -msgid "G%d with lathe tool, but plane is not G18" +#: src/emc/usr_intf/gscreen/gscreen.glade:3728 +msgid "test2" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2271 -msgid "Cannot set reference point with cutter compensation in effect" +#: src/emc/usr_intf/gscreen/gscreen.glade:3778 +msgid "Data Entry" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2786 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:3805 +#, fuzzy +msgid "Calculator Entry" +msgstr "Kylvätska:" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3894 +#, fuzzy +msgid "Program Restart" +msgstr "Pro_gram" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3909 msgid "" -"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" +"Highlighting the run-at-line with the\n" +"up / down buttons or entering the line\n" +"directly." msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2787 -#, c-format -msgid "BUG: restore from level %d !?" +#: src/emc/usr_intf/gscreen/gscreen.glade:3923 +msgid "" +"Line\n" +" Up" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2788 -#, c-format -msgid "BUG: restore to level %d !?" +#: src/emc/usr_intf/gscreen/gscreen.glade:3946 +msgid "" +" Line\n" +"Down" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2807 -#, c-format -msgid "M7x: restore_settings G20/G21 failed: '%s'" +#: src/emc/usr_intf/gscreen/gscreen.glade:4028 +msgid "S 1000" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2819 -#, c-format -msgid "M7x: restore_settings failed executing: '%s': %s" +#: src/emc/usr_intf/gscreen/gscreen.glade:4098 +msgid " FWD" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2885 -msgid "Cannot set motion output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:4133 +msgid " REV" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2886 -msgid "No valid P word with M62" +#: src/emc/usr_intf/gscreen/gscreen2.glade:35 +msgid "screen 2" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2890 -msgid "Cannot set motion digital output with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:403 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:884 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:923 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:934 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:949 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1099 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1102 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1156 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1163 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1166 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2148 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2157 +msgid "**** GMOCCAPY INFO ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2891 -msgid "No valid P word with M63" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:404 +msgid "**** no valid probe config in INI File ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2895 -#: src/emc/rs274ngc/interp_convert.cc:2900 -msgid "Cannot set auxiliary digital output with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:405 +msgid "**** disabled tool measurement ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2896 -msgid "No valid P word with M64" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:770 +msgid "**** GMOCCAPY ERROR : ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2901 -msgid "No valid P word with M65" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:772 +#, python-format +msgid "" +"**** gmoccapy can only handle 4 axis, ****\n" +"**** but you have given %d through your INI file ****\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2931 -msgid "invalid P-word with M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:774 +msgid "" +"**** gmoccapy will not start ****\n" +"\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2946 -msgid "Cannot wait for digital input with cutter radius compensation on" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:786 +#, fuzzy, python-format +msgid "Home axis %s" +msgstr "Hemmaläge" -#: src/emc/rs274ngc/interp_convert.cc:2958 -msgid "Cannot wait for analog input with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:885 +msgid "**** To many increments given in INI File for this screen ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2973 -msgid "Cannot set motion analog output with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:886 +msgid "**** Only the first 10 will be reachable through this screen ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2974 -msgid "Invalid analog index with M67" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:924 +msgid "**** gmoccapy screen 2 found ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2980 -msgid "Cannot set auxiliary analog output with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:929 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1055 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1177 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1225 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1844 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2190 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2200 +msgid "**** GMOCCAPY ERROR ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2981 -msgid "Invalid analog index with M68" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:930 +msgid "**** screen 2 GLADE ERROR: ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3012 -msgid "Need non-negative Q-word to specify tool number with M61" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:935 +msgid "**** No gmoccapy2.glade file present ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3087 -msgid "Q word with M19 requires a value > 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:950 +msgid "**** Invalid embeded tab configuration ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3115 -msgid "Cannot restore context from invalid stack frame - missing M70/M73?" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:951 +msgid "**** No tabs will be added! ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3156 -#: src/emc/rs274ngc/interp_convert.cc:3173 -#: src/emc/rs274ngc/interp_convert.cc:3188 -#: src/emc/rs274ngc/interp_convert.cc:3202 -#: src/emc/rs274ngc/interp_convert.cc:3216 -msgid "Cannot enable overrides with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:964 +msgid "ERROR, trying to initialize the user tabs or panaels, check for typos" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3163 -#: src/emc/rs274ngc/interp_convert.cc:3178 -#: src/emc/rs274ngc/interp_convert.cc:3193 -#: src/emc/rs274ngc/interp_convert.cc:3207 -#: src/emc/rs274ngc/interp_convert.cc:3221 -msgid "Cannot disable overrides with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1056 +msgid "**** Did not find a toolfile file in [EMCIO] TOOL_TABLE ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3325 -#: src/emc/rs274ngc/interp_convert.cc:3326 -#: src/emc/rs274ngc/interp_convert.cc:3327 -#, c-format -msgid "Indexing axis %c can only be moved with G0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1100 +msgid "**** audio available! ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3334 -#: src/emc/rs274ngc/interp_convert.cc:3336 -#: src/emc/rs274ngc/interp_convert.cc:3338 -#, c-format -msgid "Indexing axis %c can only be moved alone" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1103 +msgid "**** no audio available! ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3433 -msgid "Cannot probe with feed per rev mode" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1104 +msgid "**** PYGST libray not installed? ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3481 -msgid "Cannot change retract mode with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1157 +msgid "**** virtual keyboard program found : " msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3515 -msgid "G10 L1 without offsets has no effect" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1164 +msgid "**** virtual keyboard program found : " msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3621 -msgid "Q number in G10 is not an integer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1167 +msgid "" +"**** No virtual keyboard installed, we checked for and ." msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3622 -msgid "Invalid tool orientation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1178 +msgid "**** Error with launching virtual keyboard," msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3721 -msgid "I J words not allowed with G10 L2" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1179 +msgid "**** is onboard or matchbox-keyboard installed? ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3742 -msgid "" -"Cannot change the active coordinate system with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1193 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1875 +msgid "interrupt running macro" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3750 -msgid "R not allowed in G10 L20" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1226 +msgid "**** Did not find a parameter file in [RS274NGC] PARAMETER_FILE ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4323 -msgid "Spindle not turning in G33" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1294 +msgid "Select the file you want to be loaded at program start" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4333 -msgid "Spindle not turning in G33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1329 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1353 +#, python-format +msgid "**** GMOCCAPY ERROR **** /n Message type %s not suported" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4376 -msgid "BUG: An axis incorrectly moved along with an indexer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1462 +msgid "Unknown error type and no error text given" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4389 -msgid "BUG: trying to index incorrect axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1478 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1840 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1847 +msgid "Important Warning" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4481 -msgid "Cannot use G76 threading cycle with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1498 +msgid "ERROR : External ESTOP is set, could not change state!" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4484 -msgid "In G76, I must not be 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1511 +msgid "ERROR : Could not switch the machine on, is limit switch aktivated?" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4486 -msgid "In G76, J must be greater than 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1730 +msgid "It is not possible to change to MDI Mode at the moment" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4488 -msgid "In G76, K must be greater than J" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1754 +msgid "It is not possible to change to Auto Mode at the moment" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4631 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1838 msgid "" -"Length of cutter compensation entry move is not greater than the tool radius" +"\n" +"**** No subroutine folder or program prefix is given in the ini file **** \n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4850 -msgid "Zero degree inside corner is invalid for cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1839 +msgid "**** so the corresponding file could not be found ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4888 -#: src/emc/rs274ngc/interp_convert.cc:4896 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1845 +#, python-format msgid "" -"Arc to straight motion makes a corner the compensated tool can't fit in " -"without gouging" +"\n" +"**** File %s of the macro could not be found ****\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4980 -msgid "Cannot change tools with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1846 +#, python-format +msgid "**** we searched in subdirectory %s ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:5101 -msgid "Cannot change tool offset with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1851 +msgid "Enter value:" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:590 -#, c-format -msgid "" -"BUG: cutter compensation has generated an invalid arc with mismatched radii " -"r1 %f r2 %f\n" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1852 +#, python-format +msgid "Set parameter %s to:" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:612 -msgid "BUG: Unsupported plane in cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1854 +msgid "conversion error" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1855 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3610 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3634 +msgid "Conversion error !" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:622 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1856 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3299 msgid "" -"Straight traverse in concave corner cannot be reached by the tool without " -"gouging" +"Please enter only numerical values\n" +"Values have not been applied" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:650 -#, c-format -msgid "BUG: Unsupported plane [%d] in cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2149 +#, python-brace-format +msgid "**** replaced {0} to {1} ****" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:661 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2158 msgid "" -"Straight feed in concave corner cannot be reached by the tool without gouging" +"\n" +"**** found more than 9 macros, only the first 9 will be used ****" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:628 -msgid "Cannot feed with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2191 +#, python-format +msgid "**** %s ****" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:629 -msgid "Cannot use inverse time feed with canned cycles" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2201 +#, python-format +msgid "**** No widget named: %s to sensitize ****" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:630 -msgid "Cannot use canned cycles with cutter compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2366 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1561 +msgid "No tool description available" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:818 -msgid "G17 canned cycle is not possible on a machine without Z axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2591 +#, python-format +msgid "Halo, welcome to the test message %d" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1004 -msgid "G17.1 canned cycle is not possible on a machine without W axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2732 +msgid "Hal Pin is low, Access denied" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1220 -msgid "G19 canned cycle is not possible on a machine without X axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2734 +msgid "wrong code entered, Access denied" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1388 -msgid "G19.1 canned cycle is not possible on a machine without U axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2735 +msgid "Just to warn you" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1613 -msgid "G18 canned cycle is not possible on a machine without Y axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2810 +msgid "ERROR : No limit switch is active, ignore limits will not be set." msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1780 -msgid "G18.1 canned cycle is not possible on a machine without V axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2850 +msgid "Classicladder real-time component not detected" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:170 -msgid "Cannot use polar coordinates with G53" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2937 +msgid "Something went wrong, we have an unknown spindle widget" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 -#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 -#: src/emc/rs274ngc/interp_find.cc:347 -msgid "Cannot specify X or Y words with polar coordinate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3046 +msgid "Do you really want to delete the MDI history?\n" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:272 -msgid "Must specify angle in polar coordinate if at the origin" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3047 +msgid "this will not delete the MDI History file, but will\n" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:338 -msgid "" -"Incremental motion with polar coordinates is indeterminate when at the origin" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3048 +msgid "delete the listbox entries for this session" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:348 -msgid "G91 motion with polar coordinates is indeterminate when at the origin" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3049 +msgid "Attention!!" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:720 -#, c-format -msgid "Requested tool %d not found in the tool table" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3076 +msgid "This button will show or hide the keyboard" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:154 -msgid "Cannot use polar coordinate on a machine lacking X or Y axes" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3196 +#, python-format +msgid "Offset %s could not be set, because off unknown axis" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:155 -msgid "Cannot use polar coordinate except in G17 plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3197 +msgid "Wrong offset setting!" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:156 -msgid "Cannot specify both polar coordinate and X word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3202 +msgid "Enter value for diameter" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:157 -msgid "Cannot specify both polar coordinate and Y word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3203 +msgid "Set diameter to:" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:178 -#: src/emc/rs274ngc/interp_internal.cc:190 -#: src/emc/rs274ngc/interp_internal.cc:203 -msgid "Polar coordinates can only be used for motion" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3206 +msgid "Enter value for radius" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1143 src/emc/rs274ngc/interp_read.cc:1147 -#, c-format -msgid "Bad character '\\%03o' used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3207 +msgid "Set radius to:" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1147 -#, c-format -msgid "Bad character '%c' used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3210 +#, fuzzy, python-format +msgid "Enter value for axis %s" +msgstr "Aktivera fjärde axeln" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3211 +#, python-format +msgid "Set axis %s to:" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1671 -msgid "Left bracket missing after 'while'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3215 +msgid "Conversion error in btn_set_value" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1686 -msgid "Left bracket missing after 'repeat'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3216 +msgid "Conversion error in btn_set_value!" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1701 -msgid "Left bracket missing after 'if'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3217 +msgid "Please enter only numerical values. Values have not been applied" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1716 -msgid "Left bracket missing after 'elseif'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3232 +msgid "" +"you did not selected a system to be changed to, so nothing will be changed" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1919 -msgid "Cannot read current position with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3640 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3654 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3658 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3673 +msgid "Important Warning!" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1934 -msgid "Expected # reading parameter" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3284 +msgid "Enter the block height" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1936 -msgid "Expected ] reading bracketed parameter" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3285 +msgid "Block height measured from base table" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2608 -#, c-format -msgid "bad number format (conversion failed) parsing '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3297 +msgid "Conversion error in btn_block_height" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2609 -#, c-format -msgid "bad number format (trailing characters) parsing '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3298 +msgid "Conversion error in btn_block_height!" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2699 -msgid "Calculation resulted in 'not a number'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3536 +msgid "Please remove the mounted tool and press OK when done" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2701 -msgid "Calculation resulted in 'infinity'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3539 +#, python-brace-format +msgid "" +"Please change to tool\n" +"\n" +"# {0:d} {1}\n" +"\n" +" then click OK." msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2994 -#, c-format -msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3549 +msgid "Tool Change has been aborted!\n" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3106 -msgid "Multiple U words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3550 +msgid "The old tool will remain set!" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3122 -msgid "Multiple V words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3570 +msgid "No or more than one tool selected in tool table" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3138 -msgid "Multiple W words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3571 +msgid "Please select only one tool in the table" msgstr "" -#: src/emc/rs274ngc/interp_o_word.cc:95 -#, c-format -msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3573 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3580 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3589 +msgid "Warning Tool Touch off not possible!" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:161 -#, c-format -msgid "Named parameter #<%s> not defined" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3577 +msgid "you can not touch of a tool, witch is not mounted in the spindle" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:191 -#, c-format -msgid "cant open ini file '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3578 +msgid "your selection has been reseted to the tool in spindle" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:208 -#, c-format -msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3586 +msgid "" +"Tool touch off is not possible with cutter radius compensation switched on!\n" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:232 -#, c-format -msgid "fetch_hal_param: hal_init(%s): %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3587 +msgid "Please emit an G40 before tool touch off" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:233 -#, c-format -msgid "fetch_hal_param: hal_ready(): %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3597 +msgid "Real big error!" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:370 -#, c-format -msgid "Internal error: Could not assign #<%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3598 +msgid "" +"You managed to come to a place that is not possible in on_btn_tool_touchoff" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:378 -#, c-format -msgid "Cannot assign to read-only parameter #<%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3602 +#, python-format +msgid "Enter value for axis %s to set:" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:682 -#, c-format -msgid "BUG: lookup_named_param(%s): unhandled index=%fn" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3603 +#, python-brace-format +msgid "Set parameter of tool {0:d} and axis {1} to:" msgstr "" -#: src/emc/rs274ngc/rs274ngc_pre.cc:1269 src/emc/rs274ngc/rs274ngc_pre.cc:1344 -msgid "Queue is not empty after tool change" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3608 +#, python-format +msgid "Conversion error because of wrong entry for touch off axis %s" msgstr "" -#: src/emc/rs274ngc/rs274ngc_pre.cc:1648 -#, c-format -msgid "Unable to open parameter file: '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3628 +msgid "Enter the tool number as integer " msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:4 -msgid "A file is already open" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3629 +msgid "Select the tool to change" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:5 -msgid "All axes missing with g92" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3631 +msgid "Conversion error because of wrong entry for tool number\n" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:6 -msgid "All axes missing with motion code" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3632 +msgid "enter only integer nummbers" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:7 -msgid "Arc radius too small to reach end point" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3657 +msgid "Selected tool is already in spindle, no change needed." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:8 -msgid "Argument to acos out of range" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3653 +msgid "" +"you selected no or more than one tool, the tool selection must be unique" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:9 -msgid "Argument to asin out of range" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3672 +msgid "Could not understand the entered tool number. Will not change anything" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:10 -msgid "Attempt to divide by zero" +#: src/emc/usr_intf/gmoccapy/dialogs.py:33 +#: src/emc/usr_intf/gmoccapy/dialogs.py:38 +msgid "Enter System Unlock Code" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:11 -msgid "Attempt to raise negative to non integer power" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:12 -msgid "Bad format unsigned integer" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter the value to set" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:13 -msgid "Bad number format" +#: src/emc/usr_intf/gmoccapy/notification.py:205 +#, python-format +msgid "Error trying to delet the message with number %s" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:14 -msgid "Bug bad g code modal group 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:409 +msgid "left rotate, middle move, right zoom" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:15 -msgid "Bug code not g0 or g1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:413 +msgid "left zoom, middle move, right rotate" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:16 -msgid "Bug code not g17 g18 or g19" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:417 +msgid "left move, middle rotate, right zoom" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:17 -msgid "Bug code not g20 or g21" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:421 +msgid "left zoom, middle rotate, right move" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:18 -msgid "Bug code not g28 or g30" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:425 +msgid "left move, middle zoom, right rotate" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:19 -msgid "Bug code not g2 or g3" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:429 +msgid "left rotate, middle zoom, right move" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:20 -msgid "Bug code not g4 g10 g28 g30 g53 or g92 series" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:526 +msgid "clear plot" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:21 -msgid "Bug code not g61 g61.1 or g64" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:585 +msgid "view perspective" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:22 -msgid "Bug code not g90 or g91" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:608 +msgid "view along the X axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:23 -msgid "Bug code not g98 or g99" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:633 +msgid "view along the Y axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:24 -msgid "Bug code not in g92 series" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:658 +msgid "view along the Z axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:25 -msgid "Bug code not in range g54 to g593" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:685 +msgid "Show or hide tool path" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:26 -msgid "Bug code not m0 m1 m2 m30 m60" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:708 +msgid "Show or hide dimensions" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:27 -msgid "Bug distance mode not g90 or g91" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:731 +msgid "" +"view along the Y axis from positive to negative as viewn for a back tool " +"lathe" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:28 -msgid "Bug function should not have been called" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:791 +#, fuzzy +msgid "Offset Page" +msgstr "Försjutning" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:809 +#, fuzzy +msgid "Tooledit" +msgstr "Kylvätska:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:831 +#, fuzzy +msgid "File Selection" +msgstr "Hal _configuration" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:869 +msgid "Toggle between metric and imperial units" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:29 -msgid "Bug in tool radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:887 +msgid "Switch DRO to DTG mode" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:30 -msgid "Bug plane not xy yz or xz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:905 +msgid "Toggle between machine and relative coordinates" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:31 -msgid "Bug side not right or left" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:928 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:946 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:963 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:980 +msgid "Klick to toggle through the DRO modes" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:32 -msgid "Bug unknown motion code" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1253 +#, fuzzy +msgid "Ignore limits" +msgstr "Ignorera Ändlägen" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1321 +#, fuzzy +msgid "Jogging" +msgstr "Hal _configuration" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1430 +msgid "Information over the tool in spindle" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:33 -msgid "Bug unknown operation" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1448 +#, fuzzy +msgid "Tool no." +msgstr "Kylvätska:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1474 +msgid "Diameter" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1503 +#, fuzzy +msgid "offset z" +msgstr "Försjutning" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1532 +#, fuzzy +msgid "offset x" +msgstr "Försjutning" -#: src/emc/rs274ngc/rs274ngc_return.hh:34 -msgid "Cannot change axis offsets with cutter radius comp" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1580 +#, fuzzy +msgid "Tool information" +msgstr "Hal _configuration" -#: src/emc/rs274ngc/rs274ngc_return.hh:35 -msgid "Cannot create backup file" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1592 +msgid "G and M code information as well as speed and feed" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:36 -msgid "Cannot do g1 with zero feed rate" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1611 +#, fuzzy +msgid "active_mcodes_label" +msgstr "Aktiva G-Koder" -#: src/emc/rs274ngc/rs274ngc_return.hh:37 -msgid "Cannot do zero repeats of cycle" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1663 +#, fuzzy +msgid "active_gcodes_label" +msgstr "Aktiva G-Koder" -#: src/emc/rs274ngc/rs274ngc_return.hh:38 -msgid "Cannot make arc with zero feed rate" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1717 +#, fuzzy +msgid "G-Code" +msgstr "Spindel:" -#: src/emc/rs274ngc/rs274ngc_return.hh:39 -msgid "Cannot open backup file" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1730 +msgid "The name and location of the loaded program" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:40 -msgid "Cannot open variable file" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1742 +#, fuzzy +msgid "No Program loaded" +msgstr "Pro_gram" -#: src/emc/rs274ngc/rs274ngc_return.hh:41 -msgid "Cannot probe with cutter radius comp on" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1750 +#, fuzzy +msgid "Program" +msgstr "Pro_gram" -#: src/emc/rs274ngc/rs274ngc_return.hh:42 -msgid "Cannot probe with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1800 +msgid "Vel." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:43 -msgid "Cannot put a b in canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1814 +msgid "Displays the current velocity" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:44 -msgid "Cannot put a c in canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1838 +msgid "adjust max vel of machine" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:45 -msgid "Cannot put an a in canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1854 +msgid "Max. Velocity" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:46 -msgid "Cannot turn cutter radius comp on when on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1885 +msgid "Displayes the programmed feed rate" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:47 -msgid "Cannot use axis values with g80" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1904 +#, fuzzy +msgid "reset feed override to 100 %" +msgstr "Matnings överjusterning (%): #guessing again" -#: src/emc/rs274ngc/rs274ngc_return.hh:48 -msgid "Cannot use axis values without a g code that uses them" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1922 +#, fuzzy +msgid "adjust feed override" +msgstr "Matnings överjusterning (%): #guessing again" -#: src/emc/rs274ngc/rs274ngc_return.hh:49 -msgid "Cannot use g28 or g30 with cutter radius comp" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1941 +#, fuzzy +msgid "Feed Override [%]" +msgstr "Matnings överjusterning (%): #guessing again" -#: src/emc/rs274ngc/rs274ngc_return.hh:50 -msgid "Cannot use g53 incremental" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2034 +#, fuzzy +msgid "Cooling" +msgstr "Kylvätska:" -#: src/emc/rs274ngc/rs274ngc_return.hh:51 -msgid "Cannot use g53 with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2285 +#, fuzzy +msgid "Spindle [rpm]" +msgstr "Spindel:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2377 +msgid "" +"Search\n" +" back" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:52 -msgid "Cannot use two g codes that both use axis values" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2394 +msgid "" +"Search\n" +" fwd" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:53 +# ***: ../tcl/axis.tcl:1514 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2446 #, fuzzy -msgid "Command too long" -msgstr "MDI-Kommando:" +msgid "" +"Replace\n" +" Text:" +msgstr "Position:" -#: src/emc/rs274ngc/rs274ngc_return.hh:54 -msgid "Current point same as end point of arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2456 +msgid "" +"Replace\n" +" All" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:55 -msgid "Dwell time missing with g4" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2470 +msgid "" +"Ignore\n" +" Case" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:56 -msgid "Dwell time p word missing with g82" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2616 +msgid "Start as fullscreen" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:57 -msgid "Dwell time p word missing with g86" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2631 +msgid "Start maximized" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:58 -msgid "Dwell time p word missing with g88" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2646 +msgid "Start as window" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:59 -msgid "Dwell time p word missing with g89" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2670 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4426 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4943 +msgid "X Pos." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:60 -msgid "Equal sign missing in parameter setting" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2683 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4437 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4928 +msgid "Y Pos." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:61 -msgid "F word missing with inverse time arc move" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2698 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4855 +msgid "Width" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:62 -msgid "F word missing with inverse time g1 move" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2713 +msgid "Height" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:63 -msgid "File ended with no percent sign" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2811 +msgid "hide cursor" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:64 -msgid "File ended with no percent sign or program end" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2830 +#, fuzzy +msgid "Main Window" +msgstr "Spindel:" -#: src/emc/rs274ngc/rs274ngc_return.hh:65 -msgid "File name too long" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2857 +#, fuzzy +msgid "Show keyboard on offset" +msgstr "Visa EM_C Status" -#: src/emc/rs274ngc/rs274ngc_return.hh:66 -msgid "G code out of range" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2871 +msgid "Show keyboard on tooledit" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:67 -msgid "I word given for arc in yz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2885 +msgid "Show keyboard on MDI" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:68 -msgid "I word missing with g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2899 +msgid "Show keyboard on EDIT" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:69 -msgid "J word given for arc in xz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2913 +msgid "Show keyboard on load file" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:70 -msgid "J word missing with g87" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2931 +#, fuzzy +msgid "Keyboard" +msgstr "Kylvätska:" -#: src/emc/rs274ngc/rs274ngc_return.hh:71 -msgid "K word given for arc in xy plane" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2959 +#, fuzzy +msgid "show preview" +msgstr "Vy ifrån sidan" -#: src/emc/rs274ngc/rs274ngc_return.hh:72 -msgid "K word missing with g87" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2973 +#, fuzzy +msgid "show offsets" +msgstr "Visa EM_C Status" -#: src/emc/rs274ngc/rs274ngc_return.hh:73 -msgid "Left bracket missing after slash with atan" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2991 +msgid "On Touch off" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:74 -msgid "Left bracket missing after unary operation name" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3005 +msgid "" +" Display \n" +"Aux Screen" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:75 -msgid "M code greater than 199" -msgstr "" +# ***: ../tcl/axis.tcl:1514 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3052 +#, fuzzy +msgid "Relative Color" +msgstr "Position:" -#: src/emc/rs274ngc/rs274ngc_return.hh:76 -msgid "Mixed radius ijk format for arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3079 +msgid "Absolute Color" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:77 -msgid "Multiple a words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3110 +msgid "DTG Color" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:78 -msgid "Multiple b words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3139 +msgid "Use Auto Units" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:79 -msgid "Multiple c words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3159 +msgid "Show the DRO Button" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:80 -msgid "Multiple d words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3190 +#, fuzzy +msgid "Homed color" +msgstr "Hemmaläge" -#: src/emc/rs274ngc/rs274ngc_return.hh:81 -msgid "Multiple f words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3204 +#, fuzzy +msgid "Unhomed color" +msgstr "Hemmaläge" -#: src/emc/rs274ngc/rs274ngc_return.hh:82 -msgid "Multiple h words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3299 +msgid "Digits" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:83 -msgid "Multiple i words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3344 +msgid "" +"toggle DRO mode \n" +"clicking on the DRO" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:84 -msgid "Multiple j words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3369 +msgid "DRO" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:85 -msgid "Multiple k words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3401 +msgid "Grid size" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:86 -msgid "Multiple l words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3430 +msgid "Show DRO" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:87 -msgid "Multiple p words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3444 +#, fuzzy +msgid "Show offsets" +msgstr "Visa EM_C Status" -#: src/emc/rs274ngc/rs274ngc_return.hh:88 -msgid "Multiple q words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3458 +msgid "Show DTG" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:89 -msgid "Multiple r words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3483 +msgid "Mouse Button mode" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:90 -msgid "Multiple s words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3512 +#, fuzzy +msgid "Preview" +msgstr "Vy ifrån sidan" -#: src/emc/rs274ngc/rs274ngc_return.hh:91 -msgid "Multiple t words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3565 +#, fuzzy +msgid "" +"current\n" +" file" +msgstr "Öppna om nuvarande fil [Control-R]" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3611 +msgid "File to load on start" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:92 -msgid "Multiple x words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3638 +msgid "Select user dir" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:93 -msgid "Multiple y words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3647 +msgid "Select jump to dir" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:94 -msgid "Multiple z words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3767 +msgid "Themes and sound" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:95 -msgid "Must use g0 or g1 with g53" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3799 +msgid "Appearance" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:96 -msgid "Negative argument to sqrt" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3833 +msgid "Scale max velocity" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:97 -msgid "Negative d word tool radius index used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3846 +msgid "Scale jog velocity" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:98 -msgid "Negative f word used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3861 +#, fuzzy +msgid "Scale feed override" +msgstr "Matnings överjusterning (%): #guessing again" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3876 +#, fuzzy +msgid "Scale spindle override" +msgstr "Matnings överjusterning (%): #guessing again" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3970 +msgid "Hardware MPG Scale" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:99 -msgid "Negative g code used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3994 +msgid "Use keyboard shortcuts" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:100 -msgid "Negative h word used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4007 +msgid "Keyboard shortcuts" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:101 -msgid "Negative l word used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4034 +msgid "Use unlock code" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:102 -msgid "Negative m code used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4050 +msgid "Do not use unlock code" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:103 -msgid "Negative or zero q value used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4066 +msgid "Use hal pin to unlock" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:104 -msgid "Negative p word used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4087 +msgid "Unlock settings" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:105 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4197 #, fuzzy -msgid "Negative spindle speed used" -msgstr "Matnings överjusterning (%): #guessing again" +msgid "Spindle bar min" +msgstr "Spindelbroms på" -#: src/emc/rs274ngc/rs274ngc_return.hh:106 -msgid "Negative tool id used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4210 +#, fuzzy +msgid "Spindle bar max" +msgstr "Spindelbroms på" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4252 +msgid "Hide turtle Jog Button" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:107 -msgid "Nested comment found" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4282 +msgid "Turtle jog Factor" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:108 -msgid "No characters found in reading real value" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4318 +msgid "Turtle Jog" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:109 -msgid "Non integer value for integer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4360 +msgid "Hardware" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:110 -msgid "Null missing after newline" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4392 +msgid "Use auto tool measurement" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:111 -msgid "Parameter file out of order" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4450 +msgid "Probe Height" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:112 -msgid "Parameter number out of range" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4485 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4498 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4527 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4556 +msgid "0.000" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:113 -msgid "Parameter is readonly" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4514 +msgid "Z Pos." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:114 -msgid "Q word missing with g83" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4543 +msgid "Max. Probe" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4575 +#, fuzzy +msgid "Probe Informations" +msgstr "Hal _configuration" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4607 +msgid "Search Vel." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:115 -msgid "Queue is not empty after probing" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4618 +msgid "Probe Vel." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:116 -msgid "R clearance plane unspecified in cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4674 +msgid "Probe velocitys" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:117 -msgid "R i j k words all missing for arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4688 +msgid "" +"No valid configuration\n" +"found in your INI file,\n" +"please take a look at \n" +"the WIKI to check how\n" +"to configure the settings." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:118 -msgid "R less than x in cycle in yz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4708 +#, fuzzy +msgid "Tool Measurement" +msgstr "Kylvätska:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4737 +msgid "" +"If the 4'th axis is used\n" +"for a tool changer, you\n" +"hide the DRO and\n" +"jog buttons." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:119 -msgid "R less than y in cycle in xz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4749 +#, fuzzy +msgid "Hide 4'th axis" +msgstr "Aktivera sjätte axeln" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4769 +#, fuzzy +msgid "Tool Changer" +msgstr "Kylvätska:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4808 +msgid "Use frames" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:120 -msgid "R less than z in cycle in xy plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4840 +msgid "max." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:121 -msgid "R word with no g code that uses it" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4992 +msgid "Launch test message" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:122 -msgid "Slash missing after first atan argument" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5011 +msgid "" +" gmoccapy message\n" +" behavior and appearance " msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:123 -msgid "Spindle not turning clockwise in g84" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5049 +msgid "Do not use run from line" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:124 -msgid "Spindle not turning in g86" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5065 +msgid "Use run from line" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:125 -msgid "Spindle not turning in g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5086 +#, fuzzy +msgid "Run from line" +msgstr "Hal _configuration" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5119 +#, fuzzy +msgid "" +"Advanced\n" +" Settings" +msgstr "Hal _configuration" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5157 +msgid "User tab 1" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:126 -msgid "Spindle not turning in g88" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5171 +msgid "User tabs" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:127 -msgid "Sscanf failed" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5207 +msgid "Estop the machine" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:128 -msgid "Start point too close to probe point" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5229 +#, fuzzy +msgid "Turn the machine on/off" +msgstr "Starta maskin" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5251 +msgid "enter manual mode to jog axis by hand or touch off" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:129 -msgid "Too many m codes on line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5271 +msgid "enter MDI mode to launch g-code commands" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:130 -msgid "Pocket max too large" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5290 +#, fuzzy +msgid "enter auto mode to run programs" +msgstr "Pausa program" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5308 +msgid "Enter the settings page, the default code is \"123\"" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:131 -msgid "Tool radius not less than arc radius with comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5330 +#, fuzzy +msgid "show user tabs" +msgstr "Visa EM_C Status" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5381 +msgid "open homing button list" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:132 -msgid "Two g codes used from same modal group" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5398 +msgid "open touch off button list" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:133 -msgid "Two m codes used from same modal group" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5427 +msgid "Open the tooleditor page" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:134 -#, c-format -msgid "Unable to open file <%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5498 +msgid "make the preview as large as possible" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:135 -msgid "Unclosed comment found" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5515 +msgid "Close moccapy / leave the program" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:136 -msgid "Unclosed expression" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5577 +msgid "This button will show or hide the Keyboard" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:137 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5620 #, fuzzy -msgid "Unknown g code used" -msgstr "Okänt verktyg %d" +msgid "Load a new program" +msgstr "Kör program" -#: src/emc/rs274ngc/rs274ngc_return.hh:138 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5637 #, fuzzy -msgid "Unknown m code used" -msgstr "Okänt verktyg %d" +msgid "Run the loaded program" +msgstr "Kör program" -#: src/emc/rs274ngc/rs274ngc_return.hh:139 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5654 #, fuzzy -msgid "Unknown operation" -msgstr "Okänt fel %s" +msgid "Stop the running program" +msgstr "Avbryt program" -#: src/emc/rs274ngc/rs274ngc_return.hh:140 -msgid "Unknown operation name starting with a" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5672 +#, fuzzy +msgid "Pause the running program" +msgstr "Avbryt program" -#: src/emc/rs274ngc/rs274ngc_return.hh:141 -msgid "Unknown operation name starting with m" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5680 +#, fuzzy +msgid "pause the running program" +msgstr "Avbryt program" -#: src/emc/rs274ngc/rs274ngc_return.hh:142 -msgid "Unknown operation name starting with o" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5698 +msgid "Run the loaded program step by step" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:143 -msgid "Unknown operation name starting with x" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5715 +msgid "" +"run the program from a certain line, attention, that is dangerous, because " +"the previous lines will not checed!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:144 -msgid "Unknown word starting with a" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5732 +msgid "" +"Machine or not the optional blocks of the program. If the button is pressed, " +"the optional blocks will not be machined. The button will indicate this by a " +"yellow background." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:145 -msgid "Unknown word starting with c" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5757 +msgid "" +"Make optional stops or not. if an M1 is programed and the button is pressed " +"(is active) the programm will pause if it found a M1" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:146 -msgid "Unknown word starting with e" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5789 +#, fuzzy +msgid "Edit the loaded program" +msgstr "Kör program" -#: src/emc/rs274ngc/rs274ngc_return.hh:147 -msgid "Unknown word starting with f" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5837 +#, fuzzy +msgid "home all axis" +msgstr "Hemmaläge" -#: src/emc/rs274ngc/rs274ngc_return.hh:148 -msgid "Unknown word starting with l" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5873 +#, fuzzy +msgid "home x axis" +msgstr "Hemmaläge" -#: src/emc/rs274ngc/rs274ngc_return.hh:149 -msgid "Unknown word starting with r" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5897 +#, fuzzy +msgid "home y axis" +msgstr "Hemmaläge" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5929 +#, fuzzy +msgid "home z axis" +msgstr "Hemmaläge" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5987 +#, fuzzy +msgid "Unhome all axis" +msgstr "Hemmaläge" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6023 +msgid "go back to main button list" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:150 -msgid "Unknown word starting with s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6053 +msgid "" +" edit\n" +"offsets" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:151 -msgid "Unknown word starting with t" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6060 +#, fuzzy +msgid "Edit offsets" +msgstr "Visa EM_C Status" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6076 +msgid "touch off X / set X to 0" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:152 -msgid "Unknown word where unary operation could be" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6100 +msgid "touch off Y / set Y to 0" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:153 -msgid "X and y words missing for arc in xy plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6135 +msgid "touch off Z / set Z to 0" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:154 -msgid "X and z words missing for arc in xz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6155 +msgid "" +"zero\n" +"G92" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:155 -msgid "X value unspecified in yz plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6161 +msgid "Zero all G92 offsets" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:156 -msgid "Y and z words missing for arc in yz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6172 +msgid "" +" Block\n" +"Height" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:157 -msgid "Y value unspecified in xz plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6192 +msgid "touch off X / set X to an desired value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:158 -msgid "Z value unspecified in xy plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6216 +msgid "touch off Y / set Y to an desired value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:159 -msgid "Zero or negative argument to ln" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6251 +msgid "touch off Z / set Z to an desired value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:161 -msgid "K word missing with g33/g33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6270 +msgid "" +" set\n" +"selected" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:162 -msgid "F word used with a g33/g33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6277 +msgid "set the selected coordinate system to be the active one" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:163 -msgid "Unknown operation name starting with e" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6293 +msgid "Go back to main view" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:164 -msgid "Unknown operation name starting with n" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6324 +msgid "delete MDI" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:165 -msgid "Unknown operation name starting with g" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6330 +msgid "delete MDI history" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:166 -msgid "Unknown operation name starting with l" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6380 +msgid "Cl.-ladder" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:167 -msgid "Too many subroutine parameters" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6386 +msgid "Open classicladder" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:168 -msgid "Too many subroutine levels" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6397 +msgid "Hal-Scope" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:169 -msgid "Bug: call stack underrun" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6403 +msgid "launch hal scope" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:170 -msgid "Unknown control command in o word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6420 +msgid "launch linuxcnc status" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:171 -msgid "Too many oword labels" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6437 +msgid "launch hal meter" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:172 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6455 #, fuzzy -msgid "Unknown oword number" -msgstr "Okänt verktyg %d" +msgid "launch calibration" +msgstr "Hal _configuration" -#: src/emc/rs274ngc/rs274ngc_return.hh:173 -msgid "Nested subroutine definition" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6466 +msgid "Halshow" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:174 -msgid "Not in subroutine definition" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6472 +msgid "opens the show hal tool" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:175 -msgid "File not open" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6537 +msgid "save the file using the original name" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:176 -msgid "Need tool prepared -Txx- for toolchange" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6559 +msgid "save the file with a new name" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:177 -msgid "Cannot change planes with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6605 +msgid "clear the edit field and make a new file" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:178 -msgid "Cutter radius compensation allowed only in XY, XZ planes" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6641 +msgid "Show or hide the virtual keyboard" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:179 -msgid "P word missing with G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6665 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6879 +msgid "Go back to main button list" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:180 -msgid "I J or K words missing with G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6701 +msgid "delete selected tool or tools" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:181 -msgid "Cannot move rotary axes with G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6718 +msgid "add a new tool to tool table" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:182 -msgid "Multiple e words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6729 +#, fuzzy +msgid "Reload" +msgstr "_Ladda om" -#: src/emc/rs274ngc/rs274ngc_return.hh:183 -msgid "Named parameter not terminated" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6735 +msgid "reload tool table from file" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:184 -msgid "Out of memory" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6746 +msgid "Apply" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:185 -msgid "S word missing with G96" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6752 +msgid "" +"apply the changes you made, G43 will be excecuted only if it is active g-code" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:186 -msgid "Queue is not empty after external input" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6768 +msgid "Select a tool by number" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:187 -msgid "Can't select analog input with wait type != immediate return" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6790 +msgid "change tool with the command M61 Q?, no machine move will be done" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:188 -msgid "Zero timeout with wait type != immediate return" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6812 +msgid "change tool to the selected one" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:189 -msgid "Invalid to select both a digital and an analog input with M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6824 +msgid "" +"touchoff\n" +" tool x" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:190 -msgid "Need to have either a valid P or a valid E word with M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6832 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6863 +msgid "touch off the tool and set the value to the tool table" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:191 -msgid "Q word missing with g73" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6855 +msgid "" +"touchoff\n" +" tool z" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:192 -msgid "Digital input selected out of bounds" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6915 +msgid "Move to your home directory" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:193 -msgid "Analog input selected out of bounds" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6932 +#, fuzzy +msgid "Move to parrent directory" +msgstr "Hal _configuration" -#: src/emc/rs274ngc/rs274ngc_return.hh:194 -msgid "W value unspecified in UV plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6961 +msgid "Select the previos file" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:195 -msgid "U value unspecified in VW plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6979 +msgid "Select the next file" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:196 -msgid "V value unspecified in UW plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6997 +msgid "Jump to user defined directory" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:197 -msgid "R less than W in cycle in UV plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7027 +msgid "select the highlighted file and return the path" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:198 -msgid "R less than U in cycle in VW plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7057 +msgid "Close without returning a file path" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:199 -msgid "R less than V in cycle in UW plane" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7075 +#, fuzzy +msgid "Load File" +msgstr "Pro_gram" + +#, fuzzy +#~ msgid "Advanced Configuration Options" +#~ msgstr "Hal _configuration" #, fuzzy #~ msgid "EMC2 Servo Configuration" @@ -13468,9 +16874,6 @@ msgstr "" #~ msgid "Step generator" #~ msgstr "Blockvis körning av program" -#~ msgid "Activate sixth axis" -#~ msgstr "Aktivera sjätte axeln" - # ***: ../scripts/axis.py:624 ../scripts/axis.py:632 #~ msgid "AXIS error" #~ msgstr "AXIS fel" diff --git a/src/po/zh_CN.po b/src/po/zh_CN.po index 04a5faaca8..ee632c23c7 100644 --- a/src/po/zh_CN.po +++ b/src/po/zh_CN.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: LinuxCNC EMC2.2.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-10 13:40-0600\n" +"POT-Creation-Date: 2019-02-20 07:49+0000\n" "PO-Revision-Date: 2008-04-04 20:33+0800\n" "Last-Translator: gnix_oag \n" "Language-Team: gnix_oag \n" @@ -18,57 +18,1692 @@ msgstr "" "X-Poedit-Country: CHINA\n" "X-Poedit-SourceCharset: utf-8\n" -#: src/hal/utils/meter.c:198 +#: src/emc/task/emctaskmain.cc:479 src/emc/task/emctaskmain.cc:512 +#, fuzzy, c-format +msgid "%s exceeds +X limit" +msgstr "程序超出机床极限。" + +#: src/emc/task/emctaskmain.cc:484 src/emc/task/emctaskmain.cc:517 +#, fuzzy, c-format +msgid "%s exceeds +Y limit" +msgstr "程序超出机床极限。" + +#: src/emc/task/emctaskmain.cc:489 src/emc/task/emctaskmain.cc:522 +#, fuzzy, c-format +msgid "%s exceeds +Z limit" +msgstr "程序超出机床极限。" + +#: src/emc/task/emctaskmain.cc:494 src/emc/task/emctaskmain.cc:527 +#, fuzzy, c-format +msgid "%s exceeds -X limit" +msgstr "程序超出机床极限。" + +#: src/emc/task/emctaskmain.cc:499 src/emc/task/emctaskmain.cc:532 +#, fuzzy, c-format +msgid "%s exceeds -Y limit" +msgstr "程序超出机床极限。" + +#: src/emc/task/emctaskmain.cc:504 src/emc/task/emctaskmain.cc:537 +#, fuzzy, c-format +msgid "%s exceeds -Z limit" +msgstr "程序超出机床极限。" + +#: src/emc/task/emctaskmain.cc:892 +#, c-format +msgid "" +"command (%s) cannot be executed until the machine is out of E-stop and " +"turned on" +msgstr "" + +#: src/emc/task/emctaskmain.cc:1013 +#, c-format +msgid "can't do that (%s:%d) in manual mode" +msgstr "" + +#: src/emc/task/emctaskmain.cc:1113 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter idle" +msgstr "" + +#: src/emc/task/emctaskmain.cc:1180 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter reading" +msgstr "" + +#: src/emc/task/emctaskmain.cc:1265 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter paused" +msgstr "" + +#: src/emc/task/emctaskmain.cc:1334 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter waiting" +msgstr "" + +#: src/emc/task/emctaskmain.cc:1442 +#, c-format +msgid "can't do that (%s:%d) in MDI mode" +msgstr "" + +#: src/emc/task/emctaskmain.cc:2100 +msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" +msgstr "" + +#: src/emc/task/emctaskmain.cc:2157 tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 +#: tcl/mini.tcl:1775 tcl/tklinuxcnc.tcl:451 +#, fuzzy, c-format, tcl-format +msgid "can't open %s" +msgstr "无法打开%1" + +#: src/emc/task/emctaskmain.cc:2169 +msgid "Can't issue MDI command when not homed" +msgstr "" + +#: src/emc/task/emctaskmain.cc:2174 +msgid "Must be in MDI mode to issue MDI command" +msgstr "" + +#: src/emc/task/emctaskmain.cc:2256 +msgid "Can't run a program when not homed" +msgstr "" + +#: src/emc/rs274ngc/interp_arc.cc:110 src/emc/rs274ngc/interp_arc.cc:284 +#, c-format +msgid "" +"Zero-radius arc: start=(%c%.4f,%c%.4f) center=(%c%.4f,%c%.4f) end=(%c%.4f,%c" +"%.4f) r1=%.4f r2=%.4f" +msgstr "" + +#: src/emc/rs274ngc/interp_arc.cc:120 src/emc/rs274ngc/interp_arc.cc:292 +#, c-format +msgid "" +"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " +"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " +"rel_err=%.4f%%" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:90 +msgid "G4 not allowed with G2 or G3 because they both use P" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:93 +msgid "Line with G10 does not have L1, L10, L11, L2, or L20" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:94 +msgid "P value not an integer with G10" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:95 +#, c-format +msgid "P value out of range (0-9) with G10 L%d" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:96 +#, c-format +msgid "P value out of range with G10 L%d" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:100 +msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:259 +msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:265 +msgid "E word with no G76, M66, M67 or M68 to use it" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:270 +msgid "H word with no G43 or G76 to use it" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:276 +msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:282 +msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:288 +msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:298 +msgid "" +"L word with no G10, cutter compensation, canned cycle, digital/analog input, " +"or NURBS code" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:310 +msgid "" +"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " +"M53 M62 M63 M64 M65 M66 or user M code to use it" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:315 +msgid "P value not an integer with M19 G2 or G3" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:317 +msgid "P value must be 0,1,or 2 with M19" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:319 +msgid "P value should be 1 or greater with G2 or G3" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:327 +msgid "" +"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " +"code that uses it" +msgstr "" + +#: src/emc/rs274ngc/interp_check.cc:337 +msgid "R value must be within 0..360 with M19" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:139 +msgid "You must specify both X and Y coordinates for Control Points" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:142 +msgid "Can specify P without X and Y only for the first control point" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:145 +msgid "Must specify positive weight P for every Control Point" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:148 +msgid "Cannot make a NURBS with 0 feedrate" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:183 +msgid "Cannot use G5.3 without G5.2 first" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:184 +#, c-format +msgid "" +"You must specify a number of control points at least equal to the order L = " +"%d" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:213 +msgid "Cannot convert spline with cutter radius compensation" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:223 +msgid "Splines must be in the XY plane" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:228 +msgid "Splines may not have motion in Z, A, B, or C" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:232 +msgid "Must specify both I and J with G5.1" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:251 +msgid "Must specify both I and J, or neither" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:262 +msgid "Must specify both P and Q with G5" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:363 +msgid "" +"The move just after exiting cutter compensation mode must be straight, not " +"an arc" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:371 +msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:383 +#: src/emc/rs274ngc/interp_convert.cc:4488 +msgid "Cannot feed with zero spindle speed in feed per rev mode" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:394 +#: src/emc/rs274ngc/interp_convert.cc:400 +#: src/emc/rs274ngc/interp_convert.cc:409 +#: src/emc/rs274ngc/interp_convert.cc:415 +#: src/emc/rs274ngc/interp_convert.cc:424 +#: src/emc/rs274ngc/interp_convert.cc:430 +#, c-format +msgid "%c word missing in absolute center arc" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:662 +msgid "" +"Radius of cutter compensation entry arc is not greater than the tool radius" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:882 +#: src/emc/rs274ngc/interp_convert.cc:892 src/emc/rs274ngc/interp_queue.cc:696 +msgid "" +"Arc move in concave corner cannot be reached by the tool without gouging" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:918 +msgid "Arc to arc motion is invalid because the arcs have the same center" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:921 +msgid "" +"Arc to arc motion makes a corner the compensated tool can't fit in without " +"gouging" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:1053 +#: src/emc/rs274ngc/interp_convert.cc:1057 +#: src/emc/rs274ngc/interp_convert.cc:1061 +#: src/emc/rs274ngc/interp_convert.cc:3945 +#: src/emc/rs274ngc/interp_convert.cc:3948 +#: src/emc/rs274ngc/interp_convert.cc:3951 src/emc/rs274ngc/interp_find.cc:97 +#, c-format +msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:1563 +msgid "Cannot change control mode with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:1676 +msgid "Cannot change coordinate systems with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:1920 +#, c-format +msgid "G%d.1 with no D word" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:1923 +#, c-format +msgid "G%d.1 with L word, but plane is not G18" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:1934 +#, c-format +msgid "G%d requires D word to be a whole number" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:1941 +#, c-format +msgid "G%d with lathe tool, but plane is not G18" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:2340 +msgid "Cannot set reference point with cutter compensation in effect" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:2859 +#, c-format +msgid "gen_restore G20/G21 failed: '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:2907 +#, c-format +msgid "" +"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:2908 +#, c-format +msgid "BUG: restore from level %d !?" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:2909 +#, c-format +msgid "BUG: restore to level %d !?" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:2928 +#, c-format +msgid "M7x: restore_settings G20/G21 failed: '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:2946 +#, c-format +msgid "M7x: restore_settings failed executing: '%s': %s" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3005 +#, c-format +msgid "Failed to restore interp state on abort '%s': %s" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3069 +msgid "No valid P word with M62" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3072 +msgid "No valid P word with M63" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3075 +msgid "No valid P word with M64" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3078 +msgid "No valid P word with M65" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3111 +msgid "invalid P-word with M66" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3126 +msgid "Cannot wait for digital input with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3138 +msgid "Cannot wait for analog input with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3152 +msgid "Invalid analog index with M67" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3157 +msgid "Invalid analog index with M68" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3188 +msgid "Need non-negative Q-word to specify tool number with M61" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3258 +msgid "Q word with M19 requires a value > 0" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3286 +msgid "Cannot restore context from invalid stack frame - missing M70/M73?" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3327 +#: src/emc/rs274ngc/interp_convert.cc:3344 +#: src/emc/rs274ngc/interp_convert.cc:3359 +#: src/emc/rs274ngc/interp_convert.cc:3373 +#: src/emc/rs274ngc/interp_convert.cc:3387 +msgid "Cannot enable overrides with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3334 +#: src/emc/rs274ngc/interp_convert.cc:3349 +#: src/emc/rs274ngc/interp_convert.cc:3364 +#: src/emc/rs274ngc/interp_convert.cc:3378 +#: src/emc/rs274ngc/interp_convert.cc:3392 +msgid "Cannot disable overrides with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3506 +#: src/emc/rs274ngc/interp_convert.cc:3507 +#: src/emc/rs274ngc/interp_convert.cc:3508 +#, c-format +msgid "Indexing axis %c can only be moved with G0" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3515 +#: src/emc/rs274ngc/interp_convert.cc:3517 +#: src/emc/rs274ngc/interp_convert.cc:3519 +#, c-format +msgid "Indexing axis %c can only be moved alone" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3621 +msgid "Cannot probe with feed per rev mode" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3669 +msgid "Cannot change retract mode with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3703 +msgid "G10 L1 without offsets has no effect" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3809 +msgid "Q number in G10 is not an integer" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3810 +msgid "Invalid tool orientation" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3933 +msgid "I J words not allowed with G10 L2" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3954 +msgid "" +"Cannot change the active coordinate system with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3962 +msgid "R not allowed in G10 L20" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4550 +msgid "Spindle not turning in G33" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4560 +msgid "Spindle not turning in G33.1" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4603 +msgid "BUG: An axis incorrectly moved along with an indexer" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4616 +msgid "BUG: trying to index incorrect axis" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4708 +msgid "Cannot use G76 threading cycle with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4711 +msgid "In G76, I must not be 0" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4713 +msgid "In G76, J must be greater than 0" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4715 +msgid "In G76, K must be greater than J" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:4858 +msgid "" +"Length of cutter compensation entry move is not greater than the tool radius" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:5077 +msgid "Zero degree inside corner is invalid for cutter compensation" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:5115 +#: src/emc/rs274ngc/interp_convert.cc:5123 +msgid "" +"Arc to straight motion makes a corner the compensated tool can't fit in " +"without gouging" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:5207 +msgid "Cannot change tools with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:5328 +msgid "Cannot change tool offset with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_queue.cc:694 +#, c-format +msgid "" +"BUG: cutter compensation has generated an invalid arc with mismatched radii " +"r1 %f r2 %f\n" +msgstr "" + +#: src/emc/rs274ngc/interp_queue.cc:716 +msgid "BUG: Unsupported plane in cutter compensation" +msgstr "" + +#: src/emc/rs274ngc/interp_queue.cc:729 +msgid "" +"Straight traverse in concave corner cannot be reached by the tool without " +"gouging" +msgstr "" + +#: src/emc/rs274ngc/interp_queue.cc:757 +#, c-format +msgid "BUG: Unsupported plane [%d] in cutter compensation" +msgstr "" + +#: src/emc/rs274ngc/interp_queue.cc:771 +msgid "" +"Straight feed in concave corner cannot be reached by the tool without gouging" +msgstr "" + +#: src/emc/rs274ngc/interp_cycles.cc:630 +msgid "Cannot feed with zero feed rate" +msgstr "" + +#: src/emc/rs274ngc/interp_cycles.cc:631 +msgid "Cannot use inverse time feed with canned cycles" +msgstr "" + +#: src/emc/rs274ngc/interp_cycles.cc:632 +msgid "Cannot use canned cycles with cutter compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_cycles.cc:829 +msgid "G17 canned cycle is not possible on a machine without Z axis" +msgstr "" + +#: src/emc/rs274ngc/interp_cycles.cc:1015 +msgid "G17.1 canned cycle is not possible on a machine without W axis" +msgstr "" + +#: src/emc/rs274ngc/interp_cycles.cc:1231 +msgid "G19 canned cycle is not possible on a machine without X axis" +msgstr "" + +#: src/emc/rs274ngc/interp_cycles.cc:1399 +msgid "G19.1 canned cycle is not possible on a machine without U axis" +msgstr "" + +#: src/emc/rs274ngc/interp_cycles.cc:1624 +msgid "G18 canned cycle is not possible on a machine without Y axis" +msgstr "" + +#: src/emc/rs274ngc/interp_cycles.cc:1791 +msgid "G18.1 canned cycle is not possible on a machine without V axis" +msgstr "" + +#: src/emc/rs274ngc/interp_find.cc:170 +msgid "Cannot use polar coordinates with G53" +msgstr "" + +#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 +#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 +#: src/emc/rs274ngc/interp_find.cc:347 +msgid "Cannot specify X or Y words with polar coordinate" +msgstr "" + +#: src/emc/rs274ngc/interp_find.cc:272 +msgid "Must specify angle in polar coordinate if at the origin" +msgstr "" + +#: src/emc/rs274ngc/interp_find.cc:338 +msgid "" +"Incremental motion with polar coordinates is indeterminate when at the origin" +msgstr "" + +#: src/emc/rs274ngc/interp_find.cc:348 +msgid "G91 motion with polar coordinates is indeterminate when at the origin" +msgstr "" + +#: src/emc/rs274ngc/interp_find.cc:720 +#, c-format +msgid "Requested tool %d not found in the tool table" +msgstr "" + +#: src/emc/rs274ngc/interp_internal.cc:161 +msgid "Cannot use polar coordinate on a machine lacking X or Y axes" +msgstr "" + +#: src/emc/rs274ngc/interp_internal.cc:162 +msgid "Cannot use polar coordinate except in G17 plane" +msgstr "" + +#: src/emc/rs274ngc/interp_internal.cc:163 +msgid "Cannot specify both polar coordinate and X word" +msgstr "" + +#: src/emc/rs274ngc/interp_internal.cc:164 +msgid "Cannot specify both polar coordinate and Y word" +msgstr "" + +#: src/emc/rs274ngc/interp_internal.cc:185 +#: src/emc/rs274ngc/interp_internal.cc:199 +#: src/emc/rs274ngc/interp_internal.cc:214 +msgid "Polar coordinates can only be used for motion" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1150 src/emc/rs274ngc/interp_read.cc:1154 +#, c-format +msgid "Bad character '\\%03o' used" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1154 +#, c-format +msgid "Bad character '%c' used" +msgstr "使用了错误字元 '%c'" + +#: src/emc/rs274ngc/interp_read.cc:1678 +msgid "Left bracket missing after 'while'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1693 +msgid "Left bracket missing after 'repeat'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1708 +msgid "Left bracket missing after 'if'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1723 +msgid "Left bracket missing after 'elseif'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1926 +msgid "Cannot read current position with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1941 +#, fuzzy +msgid "Expected # reading parameter" +msgstr "参数" + +#: src/emc/rs274ngc/interp_read.cc:1943 +msgid "Expected ] reading bracketed parameter" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:2615 +#, c-format +msgid "bad number format (conversion failed) parsing '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:2616 +#, c-format +msgid "bad number format (trailing characters) parsing '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:2706 +msgid "Calculation resulted in 'not a number'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:2708 +msgid "Calculation resulted in 'infinity'" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:3001 +#, c-format +msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:3113 +msgid "Multiple U words on one line" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:3129 +msgid "Multiple V words on one line" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:3145 +msgid "Multiple W words on one line" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:97 +#, c-format +msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:722 +#, c-format +msgid "%d: not in a subroutine definition: '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:759 src/emc/rs274ngc/interp_o_word.cc:809 +#, c-format +msgid "%d: duplicate O-word label: '%s' - defined in line %d" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:862 +#, c-format +msgid "%d: duplicate O-word label - already defined in line %d: '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:886 src/emc/rs274ngc/interp_o_word.cc:944 +#: src/emc/rs274ngc/interp_o_word.cc:978 src/emc/rs274ngc/interp_o_word.cc:996 +#: src/emc/rs274ngc/interp_o_word.cc:1013 +#: src/emc/rs274ngc/interp_o_word.cc:1038 +#, c-format +msgid "%d: undefined O-word label: '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:889 src/emc/rs274ngc/interp_o_word.cc:947 +#, c-format +msgid "%d: no matching 'if' label: '%s' (found '%s' in line %d)" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:981 +#, c-format +msgid "%d: no matching label: '%s' (found '%s' in line %d): '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:999 src/emc/rs274ngc/interp_o_word.cc:1016 +#, c-format +msgid "%d: no matching while/do label: '%s' (found '%s' in line %d)" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:1042 +#, c-format +msgid "%d: no matching label: '%s' (found '%s' in line %d)" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:166 +#, fuzzy, c-format +msgid "Named parameter #<%s> not defined" +msgstr "参数" + +#: src/emc/rs274ngc/interp_namedparams.cc:196 +#, fuzzy, c-format +msgid "cant open ini file '%s'" +msgstr "" +"打开文件“%s”出错:\n" +"%s" + +#: src/emc/rs274ngc/interp_namedparams.cc:213 +#, fuzzy, c-format +msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" +msgstr "参数" + +#: src/emc/rs274ngc/interp_namedparams.cc:237 +#, c-format +msgid "fetch_hal_param: hal_init(%s): %d" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:238 +#, c-format +msgid "fetch_hal_param: hal_ready(): %d" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:419 +#, c-format +msgid "Internal error: Could not assign #<%s>" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:427 +#, c-format +msgid "Cannot assign to read-only parameter #<%s>" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:731 +#, c-format +msgid "BUG: lookup_named_param(%s): unhandled index=%fn" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_pre.cc:1407 src/emc/rs274ngc/rs274ngc_pre.cc:1482 +#, fuzzy +msgid "Queue is not empty after tool change" +msgstr "在屏幕上提示换刀" + +#: src/emc/rs274ngc/rs274ngc_pre.cc:1786 +#, fuzzy, c-format +msgid "Unable to open parameter file: '%s'" +msgstr "无法打开临时文件。" + +#: src/emc/rs274ngc/rs274ngc_return.hh:19 +#, fuzzy +msgid "A file is already open" +msgstr "文件 %1 已经存在" + +#: src/emc/rs274ngc/rs274ngc_return.hh:21 +msgid "All axes missing with g52 or g92" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:22 +msgid "All axes missing with motion code" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:23 +msgid "Arc radius too small to reach end point" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:24 +msgid "Argument to acos out of range" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:25 +msgid "Argument to asin out of range" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:26 +msgid "Attempt to divide by zero" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:27 +msgid "Attempt to raise negative to non integer power" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:28 +msgid "Bad format unsigned integer" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:29 +#, fuzzy +msgid "Bad number format" +msgstr "视频格式:" + +#: src/emc/rs274ngc/rs274ngc_return.hh:30 +msgid "Bug bad g code modal group 0" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:31 +msgid "Bug code not g0 or g1" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:32 +msgid "Bug code not g17 g18 or g19" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:33 +msgid "Bug code not g20 or g21" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:34 +msgid "Bug code not g28 or g30" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:35 +msgid "Bug code not g2 or g3" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:37 +msgid "Bug code not g4 g10 g28 g30 g52 g53 or g92 series" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:38 +msgid "Bug code not g61 g61.1 or g64" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:39 +msgid "Bug code not g90 or g91" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:40 +msgid "Bug code not g98 or g99" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:41 +msgid "Bug code not in g52 or g92 series" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:42 +msgid "Bug code not in range g54 to g593" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:43 +msgid "Bug code not m0 m1 m2 m30 m60" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:44 +msgid "Bug distance mode not g90 or g91" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:45 +msgid "Bug function should not have been called" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:46 +msgid "Bug in tool radius comp" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:47 +msgid "Bug plane not xy yz or xz" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:48 +msgid "Bug side not right or left" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:49 +msgid "Bug unknown motion code" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:50 +#, fuzzy +msgid "Bug unknown operation" +msgstr "未知类型" + +#: src/emc/rs274ngc/rs274ngc_return.hh:51 +msgid "Cannot change axis offsets with cutter radius comp" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:52 +#, fuzzy +msgid "Cannot create backup file" +msgstr "无法创建备份文件。" + +#: src/emc/rs274ngc/rs274ngc_return.hh:53 +msgid "Cannot do g1 with zero feed rate" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:54 +msgid "Cannot do zero repeats of cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:55 +msgid "Cannot make arc with zero feed rate" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:56 +#, fuzzy +msgid "Cannot open backup file" +msgstr "无法创建备份文件。" + +#: src/emc/rs274ngc/rs274ngc_return.hh:57 +msgid "Cannot open variable file" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:58 +msgid "Cannot probe with cutter radius comp on" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:59 +msgid "Cannot probe with zero feed rate" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:60 +msgid "Cannot put a b in canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:61 +msgid "Cannot put a c in canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:62 +msgid "Cannot put an a in canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:63 +msgid "Cannot turn cutter radius comp on when on" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:64 +msgid "Cannot use axis values with g80" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:65 +msgid "Cannot use axis values without a g code that uses them" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:66 +msgid "Cannot use g28 or g30 with cutter radius comp" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:67 +msgid "Cannot use g53 incremental" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:68 +msgid "Cannot use g53 with cutter radius comp" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:69 +msgid "Cannot use two g codes that both use axis values" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:70 +#, fuzzy +msgid "Command too long" +msgstr "显示指令位置" + +#: src/emc/rs274ngc/rs274ngc_return.hh:71 +msgid "Current point same as end point of arc" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:72 +msgid "Dwell time missing with g4" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:73 +msgid "Dwell time p word missing with g82" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:74 +msgid "Dwell time p word missing with g86" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:75 +msgid "Dwell time p word missing with g88" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:76 +msgid "Dwell time p word missing with g89" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:77 +msgid "Equal sign missing in parameter setting" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:78 +msgid "F word missing with inverse time arc move" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:79 +msgid "F word missing with inverse time g1 move" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:80 +msgid "File ended with no percent sign" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:81 +msgid "File ended with no percent sign or program end" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:82 +#, fuzzy +msgid "File name too long" +msgstr "要打开的文件" + +#: src/emc/rs274ngc/rs274ngc_return.hh:83 +#, fuzzy +msgid "G code out of range" +msgstr "跳至页" + +#: src/emc/rs274ngc/rs274ngc_return.hh:84 +msgid "I word given for arc in yz plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:85 +msgid "I word missing with g87" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:86 +msgid "J word given for arc in xz plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:87 +msgid "J word missing with g87" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:88 +msgid "K word given for arc in xy plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:89 +msgid "K word missing with g87" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:90 +msgid "Left bracket missing after slash with atan" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:91 +msgid "Left bracket missing after unary operation name" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:92 +#, fuzzy, c-format +msgid "M code greater than 199: M%d" +msgstr "中灰尘" + +#: src/emc/rs274ngc/rs274ngc_return.hh:93 +msgid "Mixed radius ijk format for arc" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:94 +msgid "Multiple a words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:95 +msgid "Multiple b words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:96 +msgid "Multiple c words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:97 +msgid "Multiple d words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:98 +msgid "Multiple f words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:99 +msgid "Multiple h words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:100 +#, fuzzy +msgid "Multiple i words on one line" +msgstr "不将一个单词拆在两行(_S)" + +#: src/emc/rs274ngc/rs274ngc_return.hh:101 +msgid "Multiple j words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:102 +msgid "Multiple k words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:103 +msgid "Multiple l words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:104 +msgid "Multiple p words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:105 +msgid "Multiple q words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:106 +msgid "Multiple r words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:107 +msgid "Multiple s words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:108 +#, fuzzy +msgid "Multiple t words on one line" +msgstr "不将一个单词拆在两行(_S)" + +#: src/emc/rs274ngc/rs274ngc_return.hh:109 +msgid "Multiple x words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:110 +msgid "Multiple y words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:111 +msgid "Multiple z words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:112 +msgid "Must use g0 or g1 with g53" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:113 +msgid "Negative argument to sqrt" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:114 +msgid "Negative d word tool radius index used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:115 +msgid "Negative f word used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:116 +#, fuzzy +msgid "Negative g code used" +msgstr "文件另存为" + +#: src/emc/rs274ngc/rs274ngc_return.hh:117 +msgid "Negative h word used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:118 +msgid "Negative l word used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:119 +#, fuzzy +msgid "Negative m code used" +msgstr "度/次" + +#: src/emc/rs274ngc/rs274ngc_return.hh:120 +msgid "Negative or zero q value used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:121 +msgid "Negative p word used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:122 +#, fuzzy +msgid "Negative spindle speed used" +msgstr "主轴倍率:" + +#: src/emc/rs274ngc/rs274ngc_return.hh:123 +msgid "Negative tool id used" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:124 +msgid "Nested comment found" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:125 +msgid "No characters found in reading real value" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:126 +msgid "Non integer value for integer" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:127 +msgid "Null missing after newline" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:128 +#, fuzzy +msgid "Parameter file out of order" +msgstr "参数设置" + +#: src/emc/rs274ngc/rs274ngc_return.hh:129 +msgid "Parameter number out of range" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:130 +#, fuzzy +msgid "Parameter is readonly" +msgstr "参数" + +#: src/emc/rs274ngc/rs274ngc_return.hh:131 +msgid "Q word missing with g83" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:132 +msgid "Queue is not empty after probing" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:133 +msgid "R clearance plane unspecified in cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:134 +msgid "R i j k words all missing for arc" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:135 +msgid "R less than x in cycle in yz plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:136 +msgid "R less than y in cycle in xz plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:137 +msgid "R less than z in cycle in xy plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:138 +msgid "R word with no g code that uses it" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:139 +msgid "Slash missing after first atan argument" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:140 +msgid "Spindle not turning clockwise in g84" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:141 +msgid "Spindle not turning in g86" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:142 +msgid "Spindle not turning in g87" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:143 +msgid "Spindle not turning in g88" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:144 +#, fuzzy +msgid "Sscanf failed" +msgstr "保存失败。" + +#: src/emc/rs274ngc/rs274ngc_return.hh:145 +msgid "Start point too close to probe point" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:146 +msgid "Too many m codes on line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:147 +#, fuzzy +msgid "Pocket max too large" +msgstr "停靠工具栏" + +#: src/emc/rs274ngc/rs274ngc_return.hh:148 +msgid "Tool radius not less than arc radius with comp" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:149 +msgid "Two g codes used from same modal group" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:150 +msgid "Two m codes used from same modal group" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:151 +#, fuzzy, c-format +msgid "Unable to open file <%s>" +msgstr "无法打开文件。" + +#: src/emc/rs274ngc/rs274ngc_return.hh:152 +#, fuzzy +msgid "Unclosed comment found" +msgstr "未找到文件" + +#: src/emc/rs274ngc/rs274ngc_return.hh:153 +#, fuzzy +msgid "Unclosed expression" +msgstr "正则表达式(&X)" + +#: src/emc/rs274ngc/rs274ngc_return.hh:154 +#, fuzzy +msgid "Unknown g code used" +msgstr "未定义刀具 %d 号" + +#: src/emc/rs274ngc/rs274ngc_return.hh:155 +#, fuzzy, c-format +msgid "Unknown m code used: M%d" +msgstr "未定义刀具 %d 号" + +#: src/emc/rs274ngc/rs274ngc_return.hh:156 +#, fuzzy +msgid "Unknown operation" +msgstr "未知错误" + +#: src/emc/rs274ngc/rs274ngc_return.hh:157 +msgid "Unknown operation name starting with a" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:158 +msgid "Unknown operation name starting with m" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:159 +msgid "Unknown operation name starting with o" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:160 +msgid "Unknown operation name starting with x" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:161 +msgid "Unknown word starting with a" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:162 +msgid "Unknown word starting with c" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:163 +msgid "Unknown word starting with e" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:164 +msgid "Unknown word starting with f" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:165 +msgid "Unknown word starting with l" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:166 +msgid "Unknown word starting with r" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:167 +msgid "Unknown word starting with s" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:168 +msgid "Unknown word starting with t" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:169 +msgid "Unknown word where unary operation could be" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:170 +msgid "X and y words missing for arc in xy plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:171 +msgid "X and z words missing for arc in xz plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:172 +msgid "X value unspecified in yz plane canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:173 +msgid "Y and z words missing for arc in yz plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:174 +msgid "Y value unspecified in xz plane canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:175 +msgid "Z value unspecified in xy plane canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:176 +msgid "Zero or negative argument to ln" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:177 +#, fuzzy +msgid "Zero radius arc" +msgstr "内圈半径:" + +#: src/emc/rs274ngc/rs274ngc_return.hh:178 +msgid "K word missing with g33/g33.1" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:179 +msgid "F word used with a g33/g33.1" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:180 +msgid "Unknown operation name starting with e" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:181 +msgid "Unknown operation name starting with n" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:182 +msgid "Unknown operation name starting with g" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:183 +msgid "Unknown operation name starting with l" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:184 +msgid "Too many subroutine parameters" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:185 +msgid "Too many subroutine levels" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:186 +msgid "Bug: call stack underrun" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:187 +msgid "Unknown control command in o word" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:188 +msgid "Too many oword labels" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:189 +#, fuzzy +msgid "Unknown oword number" +msgstr "未定义刀具 %d 号" + +#: src/emc/rs274ngc/rs274ngc_return.hh:190 +msgid "Nested subroutine definition" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:191 +msgid "Not in subroutine definition" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:192 +#, fuzzy +msgid "File not open" +msgstr "要打开的文件" + +#: src/emc/rs274ngc/rs274ngc_return.hh:193 +#, c-format +msgid "cannot reopen file %s - removed or renamed? (%s)" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:194 +#, fuzzy +msgid "Need tool prepared -Txx- for toolchange" +msgstr "在屏幕上提示换刀" + +#: src/emc/rs274ngc/rs274ngc_return.hh:195 +msgid "Cannot change planes with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:196 +msgid "Cutter radius compensation allowed only in XY, XZ planes" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:197 +msgid "P word missing with G76" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:198 +msgid "I J or K words missing with G76" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:199 +msgid "Cannot move rotary axes with G76" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:200 +msgid "Multiple e words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:201 +msgid "Named parameter not terminated" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:202 +msgid "Out of memory" +msgstr "内存溢出" + +#: src/emc/rs274ngc/rs274ngc_return.hh:203 +msgid "S word missing with G96" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:204 +msgid "Queue is not empty after external input" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:205 +msgid "Can't select analog input with wait type != immediate return" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:206 +msgid "Zero timeout with wait type != immediate return" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:207 +msgid "Invalid to select both a digital and an analog input with M66" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:208 +msgid "Need to have either a valid P or a valid E word with M66" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:209 +msgid "Q word missing with g73" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:210 +msgid "Digital input selected out of bounds" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:211 +msgid "Analog input selected out of bounds" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:212 +msgid "W value unspecified in UV plane canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:213 +msgid "U value unspecified in VW plane canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:214 +msgid "V value unspecified in UW plane canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:215 +msgid "R less than W in cycle in UV plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:216 +msgid "R less than U in cycle in VW plane" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:217 +msgid "R less than V in cycle in UW plane" +msgstr "" + +#: src/hal/utils/meter.c:200 #, c-format msgid "ERROR: '%s' is not a valid probe type\n" msgstr "" -#: src/hal/utils/meter.c:206 +#: src/hal/utils/meter.c:208 #, c-format msgid "ERROR: no pin/signal/parameter name\n" msgstr "" -#: src/hal/utils/meter.c:212 +#: src/hal/utils/meter.c:214 #, c-format msgid "" "ERROR: -s option requires a probe type and a pin/signal/parameter name\n" msgstr "" -#: src/hal/utils/meter.c:238 tcl/tklinuxcnc.tcl:764 +#: src/hal/utils/meter.c:240 tcl/tklinuxcnc.tcl:764 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6431 #, fuzzy msgid "Hal Meter" msgstr "H_al Meter" -#: src/hal/utils/meter.c:287 +#: src/hal/utils/meter.c:290 #, fuzzy msgid "_Select" msgstr "选择" -#: src/hal/utils/meter.c:288 +#: src/hal/utils/meter.c:291 msgid "E_xit" msgstr "退出(_X)" -#: src/hal/utils/meter.c:336 src/hal/utils/meter.c:364 +#: src/hal/utils/meter.c:339 src/hal/utils/meter.c:367 #, fuzzy msgid "Select Item to Probe" msgstr "选择模式" -#: src/hal/utils/meter.c:640 +#: src/hal/utils/meter.c:669 #, fuzzy msgid " _Pins " msgstr "_Pin 14:" -#: src/hal/utils/meter.c:641 +#: src/hal/utils/meter.c:670 #, fuzzy msgid " _Signals " msgstr "信号" -#: src/hal/utils/meter.c:642 +#: src/hal/utils/meter.c:671 #, fuzzy msgid " Para_meters " msgstr "参数(&P):" -#: src/hal/utils/meter.c:685 +#: src/hal/utils/meter.c:714 #, fuzzy msgid "_Close" msgstr "关闭(_C)" @@ -79,95 +1714,97 @@ msgid "" " halscope [-h] [-i infile] [-o outfile] [num_samples]\n" msgstr "" -#: src/hal/utils/scope.c:474 src/hal/utils/scope.c:501 +#: src/hal/utils/scope.c:479 src/hal/utils/scope.c:506 #, fuzzy msgid "Open Configuration File:" msgstr "配置:" -#: src/hal/utils/scope.c:535 +#: src/hal/utils/scope.c:540 #, fuzzy msgid "_Open Configuration..." msgstr "主轴配置" -#: src/hal/utils/scope.c:541 +#: src/hal/utils/scope.c:546 #, fuzzy msgid "_Save Configuration..." msgstr "主轴配置" -#: src/hal/utils/scope.c:550 +#: src/hal/utils/scope.c:555 #, fuzzy msgid "O_pen Data File..." msgstr "打开文件" -#: src/hal/utils/scope.c:557 +#: src/hal/utils/scope.c:562 #, fuzzy msgid "S_ave Data File..." msgstr "保存文件" -#: src/hal/utils/scope.c:566 share/axis/tcl/axis.tcl:93 +#: src/hal/utils/scope.c:571 share/axis/tcl/axis.tcl:96 msgid "_Quit" msgstr "退出(_Q)" -#: src/hal/utils/scope.c:572 +#: src/hal/utils/scope.c:577 msgid "_About Halscope" msgstr "" -#: src/hal/utils/scope.c:578 share/axis/tcl/axis.tcl:435 +#: src/hal/utils/scope.c:583 share/axis/tcl/axis.tcl:501 msgid "_File" msgstr "文件(_F)" -#: src/hal/utils/scope.c:582 share/axis/tcl/axis.tcl:447 +#: src/hal/utils/scope.c:587 share/axis/tcl/axis.tcl:517 msgid "_Help" msgstr "帮助(_H)" -#: src/hal/utils/scope.c:641 +#: src/hal/utils/scope.c:646 msgid "HAL Oscilloscope" msgstr "" -#: src/hal/utils/scope.c:669 +#: src/hal/utils/scope.c:674 #, fuzzy msgid "Horizontal" msgstr "水平:" -#: src/hal/utils/scope.c:677 +#: src/hal/utils/scope.c:682 #, fuzzy msgid "Selected Channel" msgstr "全选" -#: src/hal/utils/scope.c:683 +#: src/hal/utils/scope.c:688 #, fuzzy msgid "Run Mode" msgstr "MDI 模式" -#: src/hal/utils/scope.c:686 +#: src/hal/utils/scope.c:691 #, fuzzy msgid "Trigger" msgstr "触发器" -#: src/hal/utils/scope.c:692 +#: src/hal/utils/scope.c:697 msgid "Vertical" msgstr "垂直" -#: src/hal/utils/scope.c:700 share/axis/tcl/axis.tcl:135 -#: share/axis/tcl/axis.tcl:1199 +#: src/hal/utils/scope.c:705 share/axis/tcl/axis.tcl:138 +#: share/axis/tcl/axis.tcl:1269 src/emc/usr_intf/gscreen/gscreen.py:3416 +#: src/emc/usr_intf/gscreen/gscreen.py:3417 +#: src/emc/usr_intf/gscreen/gscreen.glade:2614 msgid "Stop" msgstr "停止" -#: src/hal/utils/scope.c:703 +#: src/hal/utils/scope.c:708 msgid "Normal" msgstr "正常" -#: src/hal/utils/scope.c:706 +#: src/hal/utils/scope.c:711 #, fuzzy msgid "Single" msgstr "角度" -#: src/hal/utils/scope.c:709 +#: src/hal/utils/scope.c:714 #, fuzzy msgid "Roll" msgstr " 掷 ! " -#: src/hal/utils/scope_horiz.c:130 +#: src/hal/utils/scope_horiz.c:130 src/emc/usr_intf/gscreen/gscreen.glade:3419 #, fuzzy msgid "Zoom" msgstr "放大" @@ -182,11 +1819,11 @@ msgid "" "at ---- KHz" msgstr "" -#: src/hal/utils/scope_horiz.c:459 +#: src/hal/utils/scope_horiz.c:464 msgid "Realtime component not loaded" msgstr "" -#: src/hal/utils/scope_horiz.c:460 +#: src/hal/utils/scope_horiz.c:465 msgid "" "HALSCOPE uses a realtime component called scope_rt'\n" "to sample signals for display. It is not currently loaded\n" @@ -200,11 +1837,11 @@ msgid "" "Click 'Quit' to exit HALSCOPE" msgstr "" -#: src/hal/utils/scope_horiz.c:495 +#: src/hal/utils/scope_horiz.c:536 msgid "Realtime function not linked" msgstr "" -#: src/hal/utils/scope_horiz.c:496 +#: src/hal/utils/scope_horiz.c:537 msgid "" "The HALSCOPE realtime sampling function\n" "must be called from a HAL thread in to\n" @@ -217,108 +1854,109 @@ msgid "" "Click 'Quit' to exit HALSCOPE" msgstr "" -#: src/hal/utils/scope_horiz.c:503 +#: src/hal/utils/scope_horiz.c:544 #, fuzzy msgid "Select Sample Rate" msgstr "选择日期" -#: src/hal/utils/scope_horiz.c:504 +#: src/hal/utils/scope_horiz.c:545 msgid "" "Select a thread name and multiplier then click 'OK'\n" "or\n" "Click 'Quit' to exit HALSCOPE" msgstr "" -#: src/hal/utils/scope_horiz.c:526 +#: src/hal/utils/scope_horiz.c:567 #, fuzzy msgid "Thread:" msgstr "阈值:" -#: src/hal/utils/scope_horiz.c:534 +#: src/hal/utils/scope_horiz.c:575 #, fuzzy msgid "Sample Period:" msgstr "采样率:" -#: src/hal/utils/scope_horiz.c:542 +#: src/hal/utils/scope_horiz.c:583 #, fuzzy msgid "Sample Rate:" msgstr "采样率:" -#: src/hal/utils/scope_horiz.c:558 src/emc/usr_intf/touchy/mdi.py:78 +#: src/hal/utils/scope_horiz.c:599 src/emc/usr_intf/touchy/mdi.py:79 +#: src/emc/usr_intf/gscreen/mdi.py:78 #, fuzzy msgid "Thread" msgstr "阈值:" -#: src/hal/utils/scope_horiz.c:559 +#: src/hal/utils/scope_horiz.c:600 msgid "Period" msgstr "周期" -#: src/hal/utils/scope_horiz.c:619 +#: src/hal/utils/scope_horiz.c:638 #, fuzzy msgid "Multiplier:" msgstr "多人游戏分数" -#: src/hal/utils/scope_horiz.c:636 +#: src/hal/utils/scope_horiz.c:655 #, fuzzy msgid "Record Length" msgstr "录音" -#: src/hal/utils/scope_horiz.c:639 +#: src/hal/utils/scope_horiz.c:658 #, c-format msgid "%5d samples (1 channel)" msgstr "" -#: src/hal/utils/scope_horiz.c:641 +#: src/hal/utils/scope_horiz.c:660 #, c-format msgid "%5d samples (2 channels)" msgstr "" -#: src/hal/utils/scope_horiz.c:645 +#: src/hal/utils/scope_horiz.c:664 #, c-format msgid "%5d samples (4 channels)" msgstr "" -#: src/hal/utils/scope_horiz.c:649 +#: src/hal/utils/scope_horiz.c:668 #, c-format msgid "%5d samples (8 channels)" msgstr "" -#: src/hal/utils/scope_horiz.c:653 +#: src/hal/utils/scope_horiz.c:672 #, c-format msgid "%5d samples (16 channels)" msgstr "" -#: src/hal/utils/scope_horiz.c:708 src/hal/utils/scope_horiz.c:754 -#: src/hal/utils/scope_horiz.c:966 src/hal/utils/scope_vert.c:761 -#: src/hal/utils/scope_vert.c:853 tcl/bin/emccalib.tcl:227 +#: src/hal/utils/scope_horiz.c:727 src/hal/utils/scope_horiz.c:773 +#: src/hal/utils/scope_horiz.c:985 src/hal/utils/scope_vert.c:771 +#: src/hal/utils/scope_vert.c:863 tcl/bin/emccalib.tcl:232 #: tcl/bin/genedit.tcl:180 tcl/bin/genedit.tcl:450 tcl/bin/halconfig.tcl:682 -#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:257 -#: tcl/bin/pickconfig.tcl:479 tcl/bin/pickconfig.tcl:506 tcl/mini.tcl:1456 +#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:387 +#: tcl/bin/pickconfig.tcl:749 tcl/bin/pickconfig.tcl:799 tcl/mini.tcl:1456 #: tcl/mini.tcl:2937 tcl/tklinuxcnc.tcl:160 tcl/tklinuxcnc.tcl:245 #: tcl/tklinuxcnc.tcl:419 tcl/tklinuxcnc.tcl:1338 tcl/tklinuxcnc.tcl:1407 #: tcl/tklinuxcnc.tcl:1438 tcl/tklinuxcnc.tcl:1469 tcl/tklinuxcnc.tcl:2017 #: tcl/tklinuxcnc.tcl:2036 tcl/tklinuxcnc.tcl:2055 tcl/tklinuxcnc.tcl:2102 -#: src/emc/usr_intf/axis/scripts/axis.py:1077 -#: src/emc/usr_intf/axis/scripts/axis.py:1141 -#: src/emc/usr_intf/axis/scripts/axis.py:1458 -#: src/emc/usr_intf/axis/scripts/axis.py:2477 -#: src/emc/usr_intf/axis/scripts/axis.py:3336 +#: src/emc/usr_intf/axis/scripts/axis.py:1106 +#: src/emc/usr_intf/axis/scripts/axis.py:1173 +#: src/emc/usr_intf/axis/scripts/axis.py:1508 +#: src/emc/usr_intf/axis/scripts/axis.py:2672 +#: src/emc/usr_intf/axis/scripts/axis.py:3599 #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:718 -#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1720 -#: share/axis/tcl/axis.tcl:1757 +#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1828 +#: share/axis/tcl/axis.tcl:1865 msgid "OK" msgstr "确定" -#: src/hal/utils/scope_horiz.c:713 src/hal/utils/scope_horiz.c:754 -#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 +#: src/hal/utils/scope_horiz.c:732 src/hal/utils/scope_horiz.c:773 +#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 tcl/tooledit.tcl:468 msgid "Quit" msgstr "退出" -#: src/hal/utils/scope_horiz.c:745 +#: src/hal/utils/scope_horiz.c:764 msgid "Realtime thread(s) not running" msgstr "" -#: src/hal/utils/scope_horiz.c:746 +#: src/hal/utils/scope_horiz.c:765 msgid "" "HALSCOPE uses code in a realtime HAL thread to sample\n" "signals for display. The HAL thread(s) are not running.\n" @@ -332,137 +1970,141 @@ msgid "" "Click 'Quit' to exit HALSCOPE" msgstr "" -#: src/hal/utils/scope_horiz.c:779 +#: src/hal/utils/scope_horiz.c:798 msgid "Pick log file to write to:" msgstr "" -#: src/hal/utils/scope_horiz.c:962 +#: src/hal/utils/scope_horiz.c:981 msgid "Not enough channels" msgstr "" -#: src/hal/utils/scope_horiz.c:963 +#: src/hal/utils/scope_horiz.c:982 msgid "" "This record length cannot handle the channels\n" "that are currently enabled. Pick a shorter\n" "record length that supports more channels." msgstr "" -#: src/hal/utils/scope_horiz.c:1051 +#: src/hal/utils/scope_horiz.c:1070 #, c-format msgid "" "%s\n" "per div" msgstr "" -#: src/hal/utils/scope_horiz.c:1066 +#: src/hal/utils/scope_horiz.c:1085 #, fuzzy, c-format msgid "" "%s samples\n" "at %s" msgstr "样本" -#: src/hal/utils/scope_horiz.c:1170 +#: src/hal/utils/scope_horiz.c:1189 msgid "nSec" msgstr "" -#: src/hal/utils/scope_horiz.c:1173 +#: src/hal/utils/scope_horiz.c:1192 msgid "uSec" msgstr "" -#: src/hal/utils/scope_horiz.c:1177 +#: src/hal/utils/scope_horiz.c:1196 msgid "mSec" msgstr "" -#: src/hal/utils/scope_horiz.c:1181 -#: src/emc/usr_intf/pncconf/pncconf.glade:1953 -#: src/emc/usr_intf/pncconf/pncconf.glade:2825 -#: src/emc/usr_intf/pncconf/pncconf.glade:3706 -#: src/emc/usr_intf/pncconf/pncconf.glade:4587 +#: src/hal/utils/scope_horiz.c:1200 src/emc/usr_intf/pncconf/pncconf.glade:2635 +#: src/emc/usr_intf/pncconf/pncconf.glade:3533 +#: src/emc/usr_intf/pncconf/pncconf.glade:4414 +#: src/emc/usr_intf/pncconf/pncconf.glade:5295 #, fuzzy msgid "Sec" msgstr "秒" -#: src/hal/utils/scope_horiz.c:1198 -#: src/emc/usr_intf/stepconf/stepconf.glade:3664 -#: src/emc/usr_intf/stepconf/stepconf.glade:4040 -#: src/emc/usr_intf/pncconf/pncconf.glade:8268 -#: src/emc/usr_intf/pncconf/pncconf.glade:8281 -#: src/emc/usr_intf/pncconf/pncconf.glade:8458 +#: src/hal/utils/scope_horiz.c:1217 src/emc/usr_intf/stepconf/spindle.glade:301 +#: src/emc/usr_intf/stepconf/axisx.glade:693 +#: src/emc/usr_intf/stepconf/axisy.glade:679 +#: src/emc/usr_intf/stepconf/axisz.glade:679 +#: src/emc/usr_intf/stepconf/axisa.glade:693 +#: src/emc/usr_intf/pncconf/pncconf.glade:8024 +#: src/emc/usr_intf/pncconf/pncconf.glade:8201 +#: src/emc/usr_intf/pncconf/pncconf.glade:8213 msgid "Hz" msgstr "Hz" -#: src/hal/utils/scope_horiz.c:1201 +#: src/hal/utils/scope_horiz.c:1220 #, fuzzy msgid "KHz" msgstr "Hz" -#: src/hal/utils/scope_horiz.c:1205 +#: src/hal/utils/scope_horiz.c:1224 msgid "Mhz" msgstr "" -#: src/hal/utils/scope_vert.c:403 src/hal/utils/scope_vert.c:1258 +#: src/hal/utils/scope_vert.c:413 src/hal/utils/scope_vert.c:1303 #, fuzzy, c-format msgid "" "Offset\n" "%s" msgstr "偏移:%s" -#: src/hal/utils/scope_vert.c:618 +#: src/hal/utils/scope_vert.c:628 msgid "Gain" msgstr "" -#: src/hal/utils/scope_vert.c:630 src/hal/utils/scope_trig.c:252 +#: src/hal/utils/scope_vert.c:640 src/hal/utils/scope_trig.c:272 #, fuzzy msgid "Pos" msgstr "波兰语" -#: src/hal/utils/scope_vert.c:644 tcl/ngcgui_ttt.tcl:214 -#: src/emc/usr_intf/pncconf/pncconf.glade:57147 +#: src/hal/utils/scope_vert.c:654 tcl/ngcgui_ttt.tcl:214 +#: src/emc/usr_intf/pncconf/pncconf.glade:64273 #, fuzzy msgid "Scale" msgstr "比例" -#: src/hal/utils/scope_vert.c:657 +#: src/hal/utils/scope_vert.c:667 msgid "Chan Off" msgstr "" -#: src/hal/utils/scope_vert.c:713 +#: src/hal/utils/scope_vert.c:723 #, fuzzy msgid "Set Offset" msgstr "偏移:%s" -#: src/hal/utils/scope_vert.c:714 +#: src/hal/utils/scope_vert.c:724 #, c-format msgid "" "Set the vertical offset\n" "for channel %d." msgstr "" -#: src/hal/utils/scope_vert.c:734 +#: src/hal/utils/scope_vert.c:744 msgid "AC Coupled" msgstr "" -#: src/hal/utils/scope_vert.c:769 src/hal/utils/scope_vert.c:1171 -#: src/hal/utils/scope_trig.c:367 tcl/bin/emccalib.tcl:229 +#: src/hal/utils/scope_vert.c:779 src/hal/utils/scope_vert.c:1215 +#: src/hal/utils/scope_trig.c:387 tcl/bin/emccalib.tcl:234 #: tcl/bin/genedit.tcl:294 tcl/bin/halconfig.tcl:103 tcl/bin/halconfig.tcl:684 -#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:260 -#: tcl/bin/pickconfig.tcl:369 tcl/mini.tcl:1457 tcl/mini.tcl:2938 +#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:390 +#: tcl/bin/pickconfig.tcl:567 tcl/mini.tcl:1457 tcl/mini.tcl:2938 #: tcl/mini.tcl:3110 tcl/tklinuxcnc.tcl:162 tcl/tklinuxcnc.tcl:213 #: tcl/tklinuxcnc.tcl:420 tcl/tklinuxcnc.tcl:1339 tcl/tklinuxcnc.tcl:1408 #: tcl/tklinuxcnc.tcl:1439 tcl/tklinuxcnc.tcl:1470 tcl/tklinuxcnc.tcl:2103 -#: src/emc/usr_intf/axis/scripts/axis.py:1404 -#: src/emc/usr_intf/axis/scripts/axis.py:1459 -#: src/emc/usr_intf/axis/scripts/axis.py:1646 +#: src/emc/usr_intf/axis/scripts/axis.py:1453 +#: src/emc/usr_intf/axis/scripts/axis.py:1509 +#: src/emc/usr_intf/axis/scripts/axis.py:1699 +#: src/emc/usr_intf/axis/scripts/axis.py:2108 #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:720 +#: src/emc/usr_intf/stepconf/main_page.glade:467 +#: src/emc/usr_intf/gscreen/gscreen.glade:3986 msgid "Cancel" msgstr "取消" -#: src/hal/utils/scope_vert.c:849 +#: src/hal/utils/scope_vert.c:859 #, fuzzy msgid "Too many channels" msgstr "换刀" -#: src/hal/utils/scope_vert.c:850 +#: src/hal/utils/scope_vert.c:860 msgid "" "You cannot add another channel.\n" "\n" @@ -470,28 +2112,28 @@ msgid "" "the record length to allow for more channels" msgstr "" -#: src/hal/utils/scope_vert.c:1026 +#: src/hal/utils/scope_vert.c:1074 #, fuzzy msgid "Select Channel Source" msgstr "选择类别..." -#: src/hal/utils/scope_vert.c:1027 +#: src/hal/utils/scope_vert.c:1075 #, c-format msgid "" "Select a pin, signal, or parameter\n" "as the source for channel %d." msgstr "" -#: src/hal/utils/scope_vert.c:1059 +#: src/hal/utils/scope_vert.c:1107 msgid "Pins" msgstr "" -#: src/hal/utils/scope_vert.c:1060 +#: src/hal/utils/scope_vert.c:1108 #, fuzzy msgid "Signals" msgstr "信号" -#: src/hal/utils/scope_vert.c:1061 +#: src/hal/utils/scope_vert.c:1109 #, fuzzy msgid "Parameters" msgstr "参数(&P):" @@ -501,12 +2143,12 @@ msgstr "参数(&P):" msgid "Falling" msgstr "采样" -#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:275 +#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:295 #, fuzzy, c-format msgid "Rising" msgstr "正在分析" -#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:283 +#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:303 #, fuzzy msgid "" "Source\n" @@ -520,43 +2162,43 @@ msgid "" "Chan %2d" msgstr "" -#: src/hal/utils/scope_trig.c:199 tcl/tklinuxcnc.tcl:827 +#: src/hal/utils/scope_trig.c:219 tcl/tklinuxcnc.tcl:827 #: src/emc/usr_intf/touchy/touchy.glade:2469 msgid "Auto" msgstr "自动" -#: src/hal/utils/scope_trig.c:201 +#: src/hal/utils/scope_trig.c:221 msgid "Force" msgstr "" -#: src/hal/utils/scope_trig.c:235 src/hal/utils/scope_trig.c:269 +#: src/hal/utils/scope_trig.c:255 src/hal/utils/scope_trig.c:289 #, fuzzy msgid "Level" msgstr "级别:" -#: src/hal/utils/scope_trig.c:303 +#: src/hal/utils/scope_trig.c:323 #, fuzzy msgid "Trigger Source" msgstr "查看源文件(_V)" -#: src/hal/utils/scope_trig.c:304 +#: src/hal/utils/scope_trig.c:324 msgid "Select a channel to use for triggering." msgstr "" -#: src/hal/utils/scope_trig.c:327 +#: src/hal/utils/scope_trig.c:347 #, fuzzy msgid "Chan" msgstr "更改" -#: src/hal/utils/scope_trig.c:328 +#: src/hal/utils/scope_trig.c:348 msgid "Source" msgstr "源" -#: src/emc/motion/control.c:261 +#: src/emc/motion/control.c:270 msgid "Unexpected realtime delay: check dmesg for details." msgstr "" -#: src/emc/motion/control.c:263 +#: src/emc/motion/control.c:272 #, c-format msgid "" "\n" @@ -565,7 +2207,7 @@ msgid "" "elapsed clocks between calls to the motion controller.\n" msgstr "" -#: src/emc/motion/control.c:268 +#: src/emc/motion/control.c:277 #, c-format msgid "" "This time, there were %ld which is so anomalously\n" @@ -575,301 +2217,314 @@ msgid "" "\n" msgstr "" -#: src/emc/motion/control.c:384 +#: src/emc/motion/control.c:394 msgid "G38.4 move finished without breaking contact." msgstr "" -#: src/emc/motion/control.c:387 +#: src/emc/motion/control.c:397 msgid "G38.2 move finished without making contact." msgstr "" -#: src/emc/motion/control.c:401 +#: src/emc/motion/control.c:412 msgid "Probe tripped during non-probe MDI command." msgstr "" -#: src/emc/motion/control.c:429 +#: src/emc/motion/control.c:440 msgid "Probe tripped during homing motion." msgstr "" -#: src/emc/motion/control.c:433 +#: src/emc/motion/control.c:444 msgid "Probe tripped during a jog." msgstr "" -#: src/emc/motion/control.c:578 +#: src/emc/motion/control.c:622 +msgid "can't add coordinated return move" +msgstr "" + +#: src/emc/motion/control.c:663 +msgid "can't add linear coordinated jog move" +msgstr "" + +#: src/emc/motion/control.c:817 #, c-format msgid "fault %d during orient in progress" msgstr "" -#: src/emc/motion/control.c:718 +#: src/emc/motion/control.c:957 msgid "motion stopped by enable input" msgstr "" -#: src/emc/motion/control.c:741 +#: src/emc/motion/control.c:980 #, c-format msgid "joint %d on limit switch error" msgstr "" -#: src/emc/motion/control.c:753 +#: src/emc/motion/control.c:992 #, c-format msgid "joint %d amplifier fault" msgstr "" -#: src/emc/motion/control.c:762 +#: src/emc/motion/control.c:1001 #, c-format msgid "joint %d following error" msgstr "" -#: src/emc/motion/control.c:1444 +#: src/emc/motion/control.c:1687 #, c-format msgid "Exceeded positive soft limit on joint %d" msgstr "" -#: src/emc/motion/control.c:1449 +#: src/emc/motion/control.c:1692 #, c-format msgid "Exceeded negative soft limit on joint %d" msgstr "" -#: src/emc/motion/command.c:159 +#: src/emc/motion/command.c:163 #, c-format msgid "Can't jog invalid joint number %d." msgstr "" -#: src/emc/motion/command.c:163 +#: src/emc/motion/command.c:167 #, c-format msgid "Can't jog joint %d further past max hard limit." msgstr "" -#: src/emc/motion/command.c:168 +#: src/emc/motion/command.c:172 #, c-format msgid "Can't jog joint %d further past min hard limit." msgstr "" -#: src/emc/motion/command.c:174 +#: src/emc/motion/command.c:178 #, c-format msgid "Can't jog joint %d further past max soft limit." msgstr "" -#: src/emc/motion/command.c:179 +#: src/emc/motion/command.c:183 #, c-format msgid "Can't jog joint %d further past min soft limit." msgstr "" -#: src/emc/motion/command.c:237 +#: src/emc/motion/command.c:243 #, c-format msgid "%s move on line %d would exceed joint %d's positive limit" msgstr "" -#: src/emc/motion/command.c:240 -#, c-format -msgid "%s move in MDI would exceed joint %d's positive limit" -msgstr "" - -#: src/emc/motion/command.c:247 -#, c-format -msgid "%s move on line %d would exceed joint %d's negative limit" -msgstr "" - #: src/emc/motion/command.c:250 #, c-format -msgid "%s move in MDI would exceed joint %d's negative limit" +msgid "%s move on line %d would exceed joint %d's negative limit" msgstr "" -#: src/emc/motion/command.c:500 +#: src/emc/motion/command.c:535 msgid "all joints must be homed before going into coordinated mode" msgstr "" -#: src/emc/motion/command.c:521 +#: src/emc/motion/command.c:556 msgid "all joints must be homed before going into teleop mode" msgstr "" -#: src/emc/motion/command.c:675 src/emc/motion/command.c:741 -#: src/emc/motion/command.c:814 +#: src/emc/motion/command.c:710 src/emc/motion/command.c:776 +#: src/emc/motion/command.c:849 msgid "Can't jog joint in coordinated mode." msgstr "" -#: src/emc/motion/command.c:680 src/emc/motion/command.c:746 -#: src/emc/motion/command.c:819 +#: src/emc/motion/command.c:715 src/emc/motion/command.c:781 +#: src/emc/motion/command.c:854 msgid "Can't jog joint when not enabled." msgstr "" -#: src/emc/motion/command.c:685 src/emc/motion/command.c:824 +#: src/emc/motion/command.c:720 src/emc/motion/command.c:859 msgid "Can't jog any joints while homing." msgstr "" -#: src/emc/motion/command.c:751 +#: src/emc/motion/command.c:786 msgid "Can't jog any joint while homing." msgstr "" -#: src/emc/motion/command.c:881 +#: src/emc/motion/command.c:918 msgid "need to be enabled, in coord mode for linear move" msgstr "" -#: src/emc/motion/command.c:891 +#: src/emc/motion/command.c:928 msgid "can't do linear move with limits exceeded" msgstr "" -#: src/emc/motion/command.c:910 -msgid "can't add linear move" +#: src/emc/motion/command.c:954 +#, c-format +msgid "can't add linear move at line %d, error code %d" msgstr "" -#: src/emc/motion/command.c:930 +#: src/emc/motion/command.c:982 msgid "need to be enabled, in coord mode for circular move" msgstr "" -#: src/emc/motion/command.c:940 +#: src/emc/motion/command.c:993 msgid "can't do circular move with limits exceeded" msgstr "" -#: src/emc/motion/command.c:958 -msgid "can't add circular move" +#: src/emc/motion/command.c:1015 +#, c-format +msgid "can't add circular move at line %d, error code %d" +msgstr "" + +#: src/emc/motion/command.c:1114 +msgid "MOTION: can't STEP while jogging" +msgstr "" + +#: src/emc/motion/command.c:1117 +msgid "MOTION: can't STEP while in return move" msgstr "" -#: src/emc/motion/command.c:1048 -msgid "MOTION: can't STEP while already executing" +#: src/emc/motion/command.c:1127 +#, c-format +msgid "MOTION: STEP while in state %d" msgstr "" -#: src/emc/motion/command.c:1140 +#: src/emc/motion/command.c:1229 msgid "can't enable motion, enable input is false" msgstr "" -#: src/emc/motion/command.c:1213 +#: src/emc/motion/command.c:1302 msgid "must be in joint mode to home" msgstr "" -#: src/emc/motion/command.c:1224 src/emc/motion/command.c:1235 +#: src/emc/motion/command.c:1313 src/emc/motion/command.c:1324 msgid "homing sequence already in progress" msgstr "" -#: src/emc/motion/command.c:1233 +#: src/emc/motion/command.c:1322 msgid "homing already in progress" msgstr "" -#: src/emc/motion/command.c:1263 +#: src/emc/motion/command.c:1352 msgid "must be in joint mode or disabled to unhome" msgstr "" -#: src/emc/motion/command.c:1275 src/emc/motion/command.c:1298 +#: src/emc/motion/command.c:1364 src/emc/motion/command.c:1387 #, c-format msgid "Cannot unhome while homing, joint %d" msgstr "" -#: src/emc/motion/command.c:1279 src/emc/motion/command.c:1302 +#: src/emc/motion/command.c:1368 src/emc/motion/command.c:1391 #, c-format msgid "Cannot unhome while moving, joint %d" msgstr "" -#: src/emc/motion/command.c:1307 +#: src/emc/motion/command.c:1396 #, c-format msgid "Cannot unhome inactive joint %d" msgstr "" -#: src/emc/motion/command.c:1311 +#: src/emc/motion/command.c:1400 #, c-format msgid "Cannot unhome invalid joint %d (max %d)" msgstr "" -#: src/emc/motion/command.c:1338 +#: src/emc/motion/command.c:1427 msgid "need to be enabled, in coord mode for probe move" msgstr "" -#: src/emc/motion/command.c:1348 +#: src/emc/motion/command.c:1437 msgid "can't do probe move with limits exceeded" msgstr "" -#: src/emc/motion/command.c:1362 +#: src/emc/motion/command.c:1451 msgid "Probe is already clear when starting G38.4 or G38.5 move" msgstr "" -#: src/emc/motion/command.c:1364 +#: src/emc/motion/command.c:1453 msgid "Probe is already tripped when starting G38.2 or G38.3 move" msgstr "" -#: src/emc/motion/command.c:1376 +#: src/emc/motion/command.c:1473 msgid "can't add probe move" msgstr "" -#: src/emc/motion/command.c:1400 +#: src/emc/motion/command.c:1498 msgid "need to be enabled, in coord mode for rigid tap move" msgstr "" -#: src/emc/motion/command.c:1410 +#: src/emc/motion/command.c:1509 msgid "can't do rigid tap move with limits exceeded" msgstr "" -#: src/emc/motion/command.c:1421 +#: src/emc/motion/command.c:1526 msgid "can't add rigid tap move" msgstr "" -#: src/emc/motion/command.c:1435 +#: src/emc/motion/command.c:1541 msgid "need to be enabled, in teleop mode for teleop move" msgstr "" -#: src/emc/motion/command.c:1605 +#: src/emc/motion/command.c:1710 #, c-format msgid "joint %d: too many compensation entries" msgstr "" -#: src/emc/motion/command.c:1611 +#: src/emc/motion/command.c:1716 #, c-format msgid "joint %d: compensation values must increase" msgstr "" -#: src/emc/motion/command.c:1640 +#: src/emc/motion/command.c:1745 #, c-format msgid "unrecognized command %d" msgstr "" -#: src/emc/motion/motion.c:185 +#: src/emc/motion/motion.c:212 msgid "MOTION: hal_init() failed\n" msgstr "" -#: src/emc/motion/motion.c:190 +#: src/emc/motion/motion.c:217 #, c-format msgid "MOTION: num_joints is %d, must be between 1 and %d\n" msgstr "" -#: src/emc/motion/motion.c:197 +#: src/emc/motion/motion.c:224 #, c-format msgid "MOTION: num_dio is %d, must be between 1 and %d\n" msgstr "" -#: src/emc/motion/motion.c:204 +#: src/emc/motion/motion.c:231 #, c-format msgid "MOTION: num_aio is %d, must be between 1 and %d\n" msgstr "" -#: src/emc/motion/motion.c:212 +#: src/emc/motion/motion.c:239 msgid "MOTION: init_hal_io() failed\n" msgstr "" -#: src/emc/motion/motion.c:221 +#: src/emc/motion/motion.c:248 msgid "MOTION: init_comm_buffers() failed\n" msgstr "" -#: src/emc/motion/motion.c:229 +#: src/emc/motion/motion.c:256 msgid "MOTION: init_threads() failed\n" msgstr "" -#: src/emc/motion/motion.c:254 +#: src/emc/motion/motion.c:281 #, c-format msgid "MOTION: hal_stop_threads() failed, returned %d\n" msgstr "" -#: src/emc/motion/motion.c:260 +#: src/emc/motion/motion.c:294 #, c-format msgid "MOTION: rtapi_shmem_delete() failed, returned %d\n" msgstr "" -#: src/emc/motion/motion.c:266 +#: src/emc/motion/motion.c:300 #, c-format msgid "MOTION: hal_exit() failed, returned %d\n" msgstr "" -#: src/emc/motion/motion.c:289 +#: src/emc/motion/motion.c:323 msgid "MOTION: emcmot_hal_data malloc failed\n" msgstr "" -#: src/emc/motion/motion.c:597 +#: src/emc/motion/motion.c:331 +msgid "MOTION: joints malloc failed\n" +msgstr "" + +#: src/emc/motion/motion.c:695 #, c-format msgid "MOTION: joint %d pin/param export failed\n" msgstr "" @@ -922,7 +2577,7 @@ msgstr "" #: tcl/bin/emccalib.tcl:80 #, fuzzy -msgid "LinuxCNC Servo Axis Calibration" +msgid "Machinekit Servo Axis Calibration" msgstr "EMC2 步进Mill配置" #: tcl/bin/emccalib.tcl:90 @@ -932,47 +2587,46 @@ msgstr "保存文件" #: tcl/bin/emccalib.tcl:106 tcl/bin/genedit.tcl:77 tcl/bin/halconfig.tcl:151 #: tcl/bin/halshow.tcl:85 tcl/mini.tcl:2516 tcl/tklinuxcnc.tcl:719 -#: tcl/ngcgui.tcl:549 +#: tcl/ngcgui.tcl:489 msgid "File" msgstr "文件" -#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:231 tcl/bin/halconfig.tcl:153 +#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:236 tcl/bin/halconfig.tcl:153 #: tcl/mini.tcl:3558 src/emc/usr_intf/touchy/touchy.glade:2420 msgid "Refresh" msgstr "刷新" #: tcl/bin/emccalib.tcl:110 tcl/bin/genedit.tcl:82 tcl/bin/halconfig.tcl:155 -#: tcl/mini.tcl:2535 +#: tcl/mini.tcl:2535 src/emc/usr_intf/axis/scripts/axis.py:2107 msgid "Save" msgstr "保存" -#: tcl/bin/emccalib.tcl:159 tcl/bin/halconfig.tcl:623 +#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:623 #, tcl-format msgid "Tune %d" msgstr "" -#: tcl/bin/emccalib.tcl:160 tcl/bin/halconfig.tcl:628 +#: tcl/bin/emccalib.tcl:162 tcl/bin/halconfig.tcl:628 #, fuzzy msgid "INI Name" msgstr "无名称" -#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:629 +#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:629 #, fuzzy msgid "HAL's Value" msgstr "值" -#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:631 +#: tcl/bin/emccalib.tcl:165 tcl/bin/halconfig.tcl:631 #, fuzzy msgid "Next Value" msgstr "值" -#: tcl/bin/emccalib.tcl:225 tcl/bin/halconfig.tcl:680 -#: tcl/bin/halconfig.tcl:731 +#: tcl/bin/emccalib.tcl:230 tcl/bin/halconfig.tcl:680 tcl/bin/halconfig.tcl:731 #, fuzzy msgid "Test" msgstr "测试(_T)" -#: tcl/bin/emccalib.tcl:358 tcl/bin/halconfig.tcl:883 +#: tcl/bin/emccalib.tcl:388 tcl/bin/halconfig.tcl:883 #, tcl-format msgid "" "The HAL parameter \n" @@ -981,15 +2635,15 @@ msgid "" " Really quit?" msgstr "" -#: tcl/bin/emccalib.tcl:383 tcl/bin/halconfig.tcl:1170 +#: tcl/bin/emccalib.tcl:413 tcl/bin/halconfig.tcl:1170 msgid "" "Not permitted to save here.\n" "\n" " You need to copy a configuration to your home directory and work there." msgstr "" -#: tcl/bin/emccalib.tcl:457 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 -#: tcl/bin/pickconfig.tcl:544 tcl/bin/pickconfig.tcl:555 +#: tcl/bin/emccalib.tcl:487 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 +#: tcl/bin/pickconfig.tcl:843 tcl/bin/pickconfig.tcl:854 #: tcl/scripts/Set_Coordinates.tcl:205 tcl/scripts/Set_Coordinates.tcl:228 #, fuzzy, tcl-format msgid "can't save %s" @@ -1071,12 +2725,13 @@ msgid "Save As..." msgstr "另存为..." #: tcl/bin/genedit.tcl:87 tcl/bin/halconfig.tcl:165 tcl/bin/halshow.tcl:92 -#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1243 -#: tcl/ngcgui.tcl:3680 +#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1322 +#: tcl/ngcgui.tcl:3832 msgid "Exit" msgstr "退出" #: tcl/bin/genedit.tcl:91 tcl/mini.tcl:2517 +#: src/emc/usr_intf/gscreen/gscreen.glade:2685 #, fuzzy msgid "Edit" msgstr "编辑(_E)" @@ -1093,12 +2748,13 @@ msgstr "复制" msgid "Paste" msgstr "粘贴" -#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:68 +#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:73 msgid "Select All" msgstr "全选" #: tcl/bin/genedit.tcl:104 tcl/bin/halconfig.tcl:192 tcl/mini.tcl:919 #: tcl/mini.tcl:2519 tcl/tklinuxcnc.tcl:790 +#: src/emc/usr_intf/stepconf/main_page.glade:445 msgid "Help" msgstr "帮助" @@ -1124,7 +2780,7 @@ msgid "Renumber File..." msgstr "重命名过滤器" #: tcl/bin/genedit.tcl:140 tcl/mini.tcl:917 tcl/mini.tcl:2518 -#: tcl/tklinuxcnc.tcl:746 +#: tcl/tklinuxcnc.tcl:746 src/emc/usr_intf/gmoccapy/gmoccapy.glade:5135 msgid "Settings" msgstr "设置" @@ -1156,12 +2812,6 @@ msgid "" "GPL Version 2" msgstr "" -#: tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 tcl/mini.tcl:1775 -#: tcl/tklinuxcnc.tcl:451 src/emc/task/emctaskmain.cc:2072 -#, fuzzy, c-format, tcl-format -msgid "can't open %s" -msgstr "无法打开%1" - #: tcl/bin/genedit.tcl:267 tcl/mini.tcl:3090 msgid "Find" msgstr "查找" @@ -1351,10 +3001,11 @@ msgid "Erase Watch" msgstr "擦除" #: tcl/bin/halconfig.tcl:194 tcl/mini.tcl:840 tcl/mini.tcl:2785 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "About" msgstr "关于" -#: tcl/bin/halconfig.tcl:196 +#: tcl/bin/halconfig.tcl:196 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2579 #, fuzzy msgid "Main" msgstr "马里" @@ -1441,26 +3092,26 @@ msgstr "保存当前文件" msgid "Commands may be tested here but they will NOT be saved" msgstr "" -#: tcl/bin/pickconfig.tcl:50 +#: tcl/bin/pickconfig.tcl:96 msgid "" "Can't find the bwidget 1.7 package. There is a debian bwidget package; " "install \n" "it with sudo apt-get install bwidget." msgstr "" -#: tcl/bin/pickconfig.tcl:178 +#: tcl/bin/pickconfig.tcl:154 #, fuzzy -msgid "No details available." -msgstr "没有可用的描述" +msgid "Machinekit Configuration Selector" +msgstr "配置目录" -#: tcl/bin/pickconfig.tcl:194 +#: tcl/bin/pickconfig.tcl:296 #, fuzzy -msgid "LinuxCNC Configuration Selector" -msgstr "配置目录" +msgid "No details available." +msgstr "没有可用的描述" -#: tcl/bin/pickconfig.tcl:215 +#: tcl/bin/pickconfig.tcl:343 msgid "" -"Welcome to LinuxCNC.\n" +"Welcome to MachineKit.\n" "\n" "Select a machine configuration from the list on the left.\n" "Details about the selected configuration will appear in the display on the " @@ -1468,62 +3119,62 @@ msgid "" "Click 'OK' to run the selected configuration" msgstr "" -#: tcl/bin/pickconfig.tcl:271 +#: tcl/bin/pickconfig.tcl:401 #, fuzzy msgid "My Configurations" msgstr "配置" -#: tcl/bin/pickconfig.tcl:274 +#: tcl/bin/pickconfig.tcl:405 #, fuzzy msgid "Sample Configurations" msgstr "主轴配置" -#: tcl/bin/pickconfig.tcl:332 +#: tcl/bin/pickconfig.tcl:530 #, tcl-format msgid "ERROR: no configurations found in path '%s'" msgstr "" -#: tcl/bin/pickconfig.tcl:369 +#: tcl/bin/pickconfig.tcl:567 #, fuzzy msgid "Copy Configuration?" msgstr "配置" -#: tcl/bin/pickconfig.tcl:369 +#: tcl/bin/pickconfig.tcl:567 #, tcl-format msgid "" "Would you like to copy the %s configuration to your home directory so you " "can customize it?" msgstr "" -#: tcl/bin/pickconfig.tcl:369 +#: tcl/bin/pickconfig.tcl:567 #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:563 msgid "Yes" msgstr "是" -#: tcl/bin/pickconfig.tcl:479 +#: tcl/bin/pickconfig.tcl:749 #, fuzzy msgid "Configuration Copied" msgstr "配置" -#: tcl/bin/pickconfig.tcl:479 +#: tcl/bin/pickconfig.tcl:749 #, tcl-format msgid "" "The configuration file has been copied to %s. Next time, choose this " -"location when starting LinuxCNC." +"location when starting MachineKit." msgstr "" -#: tcl/bin/pickconfig.tcl:506 +#: tcl/bin/pickconfig.tcl:799 #, fuzzy msgid "Shortcut Created" msgstr "快捷键配置" -#: tcl/bin/pickconfig.tcl:506 +#: tcl/bin/pickconfig.tcl:799 msgid "" "A shortcut to this configuration file has been created on your desktop. You " "can use it to automatically launch this configuration." msgstr "" -#: tcl/bin/pickconfig.tcl:511 +#: tcl/bin/pickconfig.tcl:805 msgid "Create Desktop Shortcut" msgstr "" @@ -1616,7 +3267,7 @@ msgstr "信息" msgid "Backplot" msgstr "后退" -#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:6125 +#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:5915 msgid "Editor" msgstr "编辑器" @@ -1810,7 +3461,7 @@ msgstr "" msgid "start override popup here" msgstr "" -#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1669 +#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1739 msgid "Feed Override:" msgstr "进给倍率:" @@ -1879,7 +3530,8 @@ msgid "increment" msgstr "放置" #: tcl/mini.tcl:1518 tcl/tklinuxcnc.tcl:602 tcl/tklinuxcnc.tcl:1249 -#: tcl/tklinuxcnc.tcl:1253 +#: tcl/tklinuxcnc.tcl:1253 src/emc/usr_intf/gscreen/gscreen.glade:1574 +#: src/emc/usr_intf/gscreen/gscreen.glade:1586 #, fuzzy msgid "continuous" msgstr "连续" @@ -1926,20 +3578,15 @@ msgid "MDI:" msgstr "" #: tcl/mini.tcl:1669 tcl/tklinuxcnc.tcl:1658 -#: src/emc/usr_intf/stepconf/stepconf.glade:4403 -#: src/emc/usr_intf/pncconf/pncconf.glade:60509 -#: src/emc/usr_intf/pncconf/pncconf.glade:61603 -#: src/emc/usr_intf/pncconf/pncconf.glade:62696 -#: src/emc/usr_intf/pncconf/pncconf.glade:63789 -#: src/emc/usr_intf/pncconf/pncconf.glade:64889 +#: src/emc/usr_intf/stepconf/main_page.glade:298 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2625 msgid "Run" msgstr "运行" #: tcl/mini.tcl:1671 tcl/tklinuxcnc.tcl:1659 -#: src/emc/usr_intf/pncconf/pncconf.glade:60574 -#: src/emc/usr_intf/pncconf/pncconf.glade:61668 -#: src/emc/usr_intf/pncconf/pncconf.glade:62761 -#: src/emc/usr_intf/pncconf/pncconf.glade:63854 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2638 #, fuzzy msgid "Pause" msgstr "已暂停" @@ -1962,7 +3609,7 @@ msgstr "校验" msgid "RESTART LINE" msgstr "" -#: tcl/mini.tcl:1699 +#: tcl/mini.tcl:1699 src/emc/usr_intf/stepconf/main_page.glade:531 msgid "Back" msgstr "后退" @@ -1971,24 +3618,23 @@ msgstr "后退" msgid "Ahead" msgstr "乍得" -#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1221 +#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1300 +#: src/emc/usr_intf/gscreen/gscreen.glade:3973 msgid "Restart" msgstr "重新开始" -#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 -#: tcl/tklinuxcnc.tcl:465 src/emc/usr_intf/axis/scripts/axis.py:1885 +#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 tcl/tklinuxcnc.tcl:465 +#: src/emc/usr_intf/axis/scripts/axis.py:2023 #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:754 msgid "All files" msgstr "所有文件" -#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 -#: tcl/tklinuxcnc.tcl:466 +#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 tcl/tklinuxcnc.tcl:466 #, fuzzy msgid "Text files" msgstr "牌" -#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 -#: tcl/tklinuxcnc.tcl:467 +#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 tcl/tklinuxcnc.tcl:467 #, fuzzy msgid "NC files" msgstr "新建文件" @@ -2161,7 +3807,7 @@ msgstr "" msgid "Subtract" msgstr "主题" -#: tcl/mini.tcl:2344 +#: tcl/mini.tcl:2344 src/emc/usr_intf/gmoccapy/gmoccapy.glade:6712 #, fuzzy msgid "Add" msgstr "添加(_A)" @@ -2215,15 +3861,18 @@ msgstr "修改日期:" msgid "Save and Load" msgstr "" -#: tcl/mini.tcl:2540 +#: tcl/mini.tcl:2540 src/emc/usr_intf/gscreen/gscreen.glade:3515 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2363 msgid "Undo" msgstr "撤消" -#: tcl/mini.tcl:2541 +#: tcl/mini.tcl:2541 src/emc/usr_intf/gscreen/gscreen.glade:3526 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2411 msgid "Redo" msgstr "重做" -#: tcl/mini.tcl:2546 +#: tcl/mini.tcl:2546 tcl/tooledit.tcl:488 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6695 msgid "Delete" msgstr "删除" @@ -2302,15 +3951,17 @@ msgstr "替换为(&R):" msgid "Find Next" msgstr "查找下一个" -#: tcl/mini.tcl:3112 +#: tcl/mini.tcl:3112 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2494 msgid "Replace" msgstr "替换" -#: tcl/mini.tcl:3120 +#: tcl/mini.tcl:3120 src/emc/usr_intf/gscreen/gscreen.py:2750 +#: src/emc/usr_intf/gmoccapy/dialogs.py:171 msgid "Up" msgstr "向上一级" -#: tcl/mini.tcl:3121 +#: tcl/mini.tcl:3121 src/emc/usr_intf/gscreen/gscreen.py:2754 +#: src/emc/usr_intf/gmoccapy/dialogs.py:175 #, fuzzy msgid "Down" msgstr "完成" @@ -2365,7 +4016,7 @@ msgid "" "all the information below in your message." msgstr "" -#: tcl/show_errors.tcl:69 tcl/scripts/Set_Coordinates.tcl:103 +#: tcl/show_errors.tcl:74 tcl/scripts/Set_Coordinates.tcl:103 #, fuzzy msgid "Close" msgstr "关闭(_C)" @@ -2499,27 +4150,24 @@ msgstr "单位" msgid "auto" msgstr "自动" -#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8512 +#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8873 #, fuzzy msgid "inches" msgstr "行" -#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1556 -#: src/emc/usr_intf/axis/scripts/axis.py:1726 +#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1609 +#: src/emc/usr_intf/axis/scripts/axis.py:1855 +#: src/emc/usr_intf/axis/scripts/axis.py:2386 #: src/emc/usr_intf/touchy/touchy.glade:3301 -#: src/emc/usr_intf/stepconf/stepconf.py:1685 -#: src/emc/usr_intf/stepconf/stepconf.py:2221 -#: src/emc/usr_intf/stepconf/stepconf.glade:4357 -#: src/emc/usr_intf/pncconf/pncconf.py:8508 -#: src/emc/usr_intf/pncconf/pncconf.glade:2229 -#: src/emc/usr_intf/pncconf/pncconf.glade:2394 -#: src/emc/usr_intf/pncconf/pncconf.glade:57616 -#: src/emc/usr_intf/pncconf/pncconf.glade:57688 -#: src/emc/usr_intf/pncconf/pncconf.glade:60646 -#: src/emc/usr_intf/pncconf/pncconf.glade:61739 -#: src/emc/usr_intf/pncconf/pncconf.glade:62832 -#: src/emc/usr_intf/pncconf/pncconf.glade:63925 -#: src/emc/usr_intf/pncconf/pncconf.glade:65091 +#: src/emc/usr_intf/stepconf/stepconf.py:1314 +#: src/emc/usr_intf/stepconf/pages.py:625 +#: src/emc/usr_intf/stepconf/main_page.glade:251 +#: src/emc/usr_intf/pncconf/pncconf.py:8869 +#: src/emc/usr_intf/pncconf/pncconf.glade:2195 +#: src/emc/usr_intf/pncconf/pncconf.glade:2362 +#: src/emc/usr_intf/pncconf/pncconf.glade:64552 +#: src/emc/usr_intf/pncconf/pncconf.glade:64621 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "mm" msgstr "毫米" @@ -2563,7 +4211,7 @@ msgstr "" msgid "Machine on" msgstr "机床" -#: tcl/tklinuxcnc.tcl:819 +#: tcl/tklinuxcnc.tcl:819 src/emc/usr_intf/gscreen/gscreen.glade:2452 #, fuzzy msgid "Machine off" msgstr "机床" @@ -2730,10 +4378,11 @@ msgid "Set Font" msgstr "选择字体" #: tcl/tklinuxcnc.tcl:2079 tcl/ngcgui_ttt.tcl:283 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4827 msgid "Font" msgstr "字体" -#: tcl/tklinuxcnc.tcl:2086 +#: tcl/tklinuxcnc.tcl:2086 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3257 msgid "Size" msgstr "大小" @@ -2741,11 +4390,11 @@ msgstr "大小" msgid "Style" msgstr "样式" -#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:1916 +#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:2031 msgid "ESTOP" msgstr "急停" -#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2840 share/axis/tcl/axis.tcl:1918 +#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2979 share/axis/tcl/axis.tcl:2033 msgid "ON" msgstr "电源开" @@ -2799,1152 +4448,1508 @@ msgstr "立体声" msgid "Write" msgstr "写入(_W)" -#: tcl/ngcgui.tcl:467 +#: tcl/ngcgui.tcl:439 tcl/ngcgui.tcl:846 msgid "Need non-null file name" msgstr "" -#: tcl/ngcgui.tcl:543 +#: tcl/ngcgui.tcl:483 msgid "Disallowed use of ngcgui generated file as Subfile" msgstr "" -#: tcl/ngcgui.tcl:549 +#: tcl/ngcgui.tcl:489 msgid "" "marked (not_a_subfile)\n" "Not intended for use as a subfile" msgstr "" -#: tcl/ngcgui.tcl:564 -msgid "Multiple subroutines in file not allowed" +#: tcl/ngcgui.tcl:503 tcl/ngcgui.tcl:522 tcl/ngcgui.tcl:544 tcl/ngcgui.tcl:557 +#: tcl/ngcgui.tcl:577 tcl/ngcgui.tcl:682 +msgid "bogus" msgstr "" -#: tcl/ngcgui.tcl:573 tcl/ngcgui.tcl:595 tcl/ngcgui.tcl:608 tcl/ngcgui.tcl:650 -#: tcl/ngcgui.tcl:755 -msgid "bogus" +#: tcl/ngcgui.tcl:505 +msgid "can not include subroutines within ngcgui subfile" +msgstr "" + +#: tcl/ngcgui.tcl:513 +msgid "Multiple subroutines in file not allowed" msgstr "" -#: tcl/ngcgui.tcl:575 +#: tcl/ngcgui.tcl:524 #, fuzzy msgid "sub label" msgstr "标签:" -#: tcl/ngcgui.tcl:575 tcl/ngcgui.tcl:652 +#: tcl/ngcgui.tcl:524 tcl/ngcgui.tcl:579 msgid "does not match subroutine file name" msgstr "" -#: tcl/ngcgui.tcl:590 tcl/ngcgui.tcl:591 +#: tcl/ngcgui.tcl:539 tcl/ngcgui.tcl:540 msgid "ignoring M2 after endsub" msgstr "" -#: tcl/ngcgui.tcl:596 +#: tcl/ngcgui.tcl:545 msgid "file contains lines after subend" msgstr "" -#: tcl/ngcgui.tcl:609 +#: tcl/ngcgui.tcl:558 msgid "file contains lines before sub" msgstr "" -#: tcl/ngcgui.tcl:652 +#: tcl/ngcgui.tcl:579 msgid "endsub label" msgstr "" -#: tcl/ngcgui.tcl:757 +#: tcl/ngcgui.tcl:684 msgid "out of sequence positional parameter" msgstr "" -#: tcl/ngcgui.tcl:757 +#: tcl/ngcgui.tcl:684 #, fuzzy msgid "expected" msgstr "已选中:" -#: tcl/ngcgui.tcl:817 -msgid "toomany" -msgstr "" - -#: tcl/ngcgui.tcl:868 +#: tcl/ngcgui.tcl:735 msgid "no sub found in file" msgstr "" -#: tcl/ngcgui.tcl:871 +#: tcl/ngcgui.tcl:738 msgid "no endsub found in file" msgstr "" -#: tcl/ngcgui.tcl:961 +#: tcl/ngcgui.tcl:801 +msgid "Cannot find gcmc executable" +msgstr "" + +#: tcl/ngcgui.tcl:802 +#, fuzzy +msgid "Please Install in path" +msgstr "请选择图片。" + +#: tcl/ngcgui.tcl:810 +msgid "not embedded, deriving outdir from:" +msgstr "" + +#: tcl/ngcgui.tcl:1038 #, fuzzy msgid "Choose Files" msgstr "日志文件" -#: tcl/ngcgui.tcl:1100 +#: tcl/ngcgui.tcl:1178 #, fuzzy msgid "Controls" msgstr "Ctrl-M" -#: tcl/ngcgui.tcl:1109 +#: tcl/ngcgui.tcl:1187 msgid "Preamble" msgstr "" -#: tcl/ngcgui.tcl:1122 +#: tcl/ngcgui.tcl:1200 #, fuzzy msgid "Subfile" msgstr "文件" -#: tcl/ngcgui.tcl:1134 +#: tcl/ngcgui.tcl:1212 msgid "Postamble" msgstr "" -#: tcl/ngcgui.tcl:1151 +#: tcl/ngcgui.tcl:1229 msgid "Retain values on Subfile read" msgstr "" -#: tcl/ngcgui.tcl:1159 +#: tcl/ngcgui.tcl:1237 #, fuzzy msgid "Expand subroutine" msgstr "扩张的" -#: tcl/ngcgui.tcl:1168 tcl/ngcgui.tcl:2414 +#: tcl/ngcgui.tcl:1247 tcl/ngcgui.tcl:2571 #, fuzzy msgid "Autosend" msgstr "自动保存" -#: tcl/ngcgui.tcl:1178 +#: tcl/ngcgui.tcl:1257 #, fuzzy msgid "Verbose ngcfile" msgstr "rs274ngc 格式" -#: tcl/ngcgui.tcl:1188 tcl/ngcgui.tcl:2235 tcl/ngcgui.tcl:2259 -#: tcl/ngcgui.tcl:2289 +#: tcl/ngcgui.tcl:1267 tcl/ngcgui.tcl:2393 tcl/ngcgui.tcl:2416 +#: tcl/ngcgui.tcl:2446 #, fuzzy msgid "Create Feature" msgstr "新建" -#: tcl/ngcgui.tcl:1194 tcl/ngcgui.tcl:2919 +#: tcl/ngcgui.tcl:1273 tcl/ngcgui.tcl:3058 #, fuzzy msgid "MakeFile" msgstr "文件" -#: tcl/ngcgui.tcl:1195 tcl/ngcgui.tcl:2916 +#: tcl/ngcgui.tcl:1274 tcl/ngcgui.tcl:3055 msgid "Finalize" msgstr "" -#: tcl/ngcgui.tcl:1212 +#: tcl/ngcgui.tcl:1291 msgid "Reread" msgstr "" -#: tcl/ngcgui.tcl:1231 +#: tcl/ngcgui.tcl:1310 msgid "SendFileToAxis" msgstr "" -#: tcl/ngcgui.tcl:1274 +#: tcl/ngcgui.tcl:1353 msgid "Unrecoverable problem" msgstr "" -#: tcl/ngcgui.tcl:1374 +#: tcl/ngcgui.tcl:1431 #, fuzzy msgid "Postamble file" msgstr "本地文件" -#: tcl/ngcgui.tcl:1424 +#: tcl/ngcgui.tcl:1481 #, fuzzy msgid "Subroutine file" msgstr "源文件(&F):" -#: tcl/ngcgui.tcl:1482 +#: tcl/ngcgui.tcl:1545 #, fuzzy msgid "Positional Parameters" msgstr "参数" -#: tcl/ngcgui.tcl:1587 -#, fuzzy -msgid "_Globals" -msgstr "全局变量" - -#: tcl/ngcgui.tcl:1690 +#: tcl/ngcgui.tcl:1694 #, fuzzy msgid "No Subfile specified" msgstr "没有指定名称" -#: tcl/ngcgui.tcl:1692 +#: tcl/ngcgui.tcl:1696 #, fuzzy msgid "No parameters yet" msgstr "参数" -#: tcl/ngcgui.tcl:1701 +#: tcl/ngcgui.tcl:1705 msgid "Missing value for parm" msgstr "" -#: tcl/ngcgui.tcl:1735 +#: tcl/ngcgui.tcl:1726 msgid "Output file" -msgstr "输出文件" - -#: tcl/ngcgui.tcl:1827 -msgid "Positional parameters for" -msgstr "" - -#: tcl/ngcgui.tcl:1835 -#, fuzzy -msgid "expanded file" -msgstr "添加文件" - -#: tcl/ngcgui.tcl:1849 -msgid "call subroutine file" -msgstr "" +msgstr "输出文件" -#: tcl/ngcgui.tcl:1919 +#: tcl/ngcgui.tcl:1841 msgid "Multiple Tabs with Features" msgstr "" -#: tcl/ngcgui.tcl:1920 +#: tcl/ngcgui.tcl:1842 msgid "Finalize all Tabs?" msgstr "" -#: tcl/ngcgui.tcl:1920 +#: tcl/ngcgui.tcl:1842 #, fuzzy msgid "Order" msgstr "边框" -#: tcl/ngcgui.tcl:1922 +#: tcl/ngcgui.tcl:1844 msgid "No, just this page" msgstr "" -#: tcl/ngcgui.tcl:1936 +#: tcl/ngcgui.tcl:1858 msgid "Axis is not responding" msgstr "" -#: tcl/ngcgui.tcl:1937 +#: tcl/ngcgui.tcl:1859 msgid "Error: " msgstr "错误:" -#: tcl/ngcgui.tcl:1939 +#: tcl/ngcgui.tcl:1861 msgid "Autosend disabled, Ctrl-A toggles autosend" msgstr "" -#: tcl/ngcgui.tcl:1941 +#: tcl/ngcgui.tcl:1863 msgid "File saving enabled -- Finalize to save" msgstr "" -#: tcl/ngcgui.tcl:1957 +#: tcl/ngcgui.tcl:1879 msgid "Require .ngc suffix for filename" msgstr "" -#: tcl/ngcgui.tcl:1967 +#: tcl/ngcgui.tcl:1889 msgid "Disallowed overwrite of" msgstr "" -#: tcl/ngcgui.tcl:1986 +#: tcl/ngcgui.tcl:1913 msgid "FEATURE" msgstr "" -#: tcl/ngcgui.tcl:1993 +#: tcl/ngcgui.tcl:1920 msgid "feature line added" msgstr "" -#: tcl/ngcgui.tcl:2002 +#: tcl/ngcgui.tcl:1932 msgid "line added" msgstr "" -#: tcl/ngcgui.tcl:2002 +#: tcl/ngcgui.tcl:1932 #, fuzzy msgid "activated" msgstr "激活" -#: tcl/ngcgui.tcl:2004 +#: tcl/ngcgui.tcl:1934 #, fuzzy msgid "restores" msgstr "最高分(&S)" -#: tcl/ngcgui.tcl:2041 +#: tcl/ngcgui.tcl:1973 msgid "NOTREACHED mode" msgstr "" -#: tcl/ngcgui.tcl:2236 +#: tcl/ngcgui.tcl:1989 +msgid "Positional parameters for" +msgstr "" + +#: tcl/ngcgui.tcl:1997 +#, fuzzy +msgid "expanded file" +msgstr "添加文件" + +#: tcl/ngcgui.tcl:2011 +msgid "call subroutine file" +msgstr "" + +#: tcl/ngcgui.tcl:2394 msgid "Enter parms for 1st feature" msgstr "" -#: tcl/ngcgui.tcl:2243 +#: tcl/ngcgui.tcl:2401 #, fuzzy msgid "New Outfile" msgstr "新配置文件" -#: tcl/ngcgui.tcl:2245 +#: tcl/ngcgui.tcl:2403 #, fuzzy msgid "Ready to make New Outfile" msgstr "创建新文件" -#: tcl/ngcgui.tcl:2262 tcl/ngcgui.tcl:2295 +#: tcl/ngcgui.tcl:2419 tcl/ngcgui.tcl:2452 msgid "Enter parms for feature " msgstr "" -#: tcl/ngcgui.tcl:2282 +#: tcl/ngcgui.tcl:2439 #, fuzzy msgid "feature" msgstr "纹理" -#: tcl/ngcgui.tcl:2287 +#: tcl/ngcgui.tcl:2444 #, fuzzy msgid "Create Next" msgstr "新建" -#: tcl/ngcgui.tcl:2292 +#: tcl/ngcgui.tcl:2449 #, fuzzy msgid "Created feature " msgstr "创建日期" -#: tcl/ngcgui.tcl:2316 +#: tcl/ngcgui.tcl:2473 #, fuzzy msgid "option" msgstr "选项" -#: tcl/ngcgui.tcl:2327 +#: tcl/ngcgui.tcl:2484 #, fuzzy msgid "Missing parameters" msgstr "缺少参数。" -#: tcl/ngcgui.tcl:2331 +#: tcl/ngcgui.tcl:2488 #, fuzzy msgid "Parse Error" msgstr "文件错误" -#: tcl/ngcgui.tcl:2338 +#: tcl/ngcgui.tcl:2495 #, fuzzy msgid "Null Preamble" msgstr "全名" -#: tcl/ngcgui.tcl:2343 +#: tcl/ngcgui.tcl:2500 msgid "Read Preamble" msgstr "" -#: tcl/ngcgui.tcl:2347 +#: tcl/ngcgui.tcl:2504 #, fuzzy msgid "Preamble Error" msgstr "文件错误" -#: tcl/ngcgui.tcl:2352 +#: tcl/ngcgui.tcl:2509 #, fuzzy msgid "Null Postamble" msgstr "全名" -#: tcl/ngcgui.tcl:2357 +#: tcl/ngcgui.tcl:2514 msgid "Read Postamble" msgstr "" -#: tcl/ngcgui.tcl:2361 +#: tcl/ngcgui.tcl:2518 #, fuzzy msgid "Postamble Error" msgstr "文件错误" -#: tcl/ngcgui.tcl:2366 +#: tcl/ngcgui.tcl:2523 #, fuzzy msgid "Read Subfile" msgstr "打开文件" -#: tcl/ngcgui.tcl:2371 +#: tcl/ngcgui.tcl:2528 #, fuzzy msgid "Write Error" msgstr "文件错误" -#: tcl/ngcgui.tcl:2375 +#: tcl/ngcgui.tcl:2532 #, fuzzy msgid "Outfile set" msgstr "输出文件" -#: tcl/ngcgui.tcl:2380 +#: tcl/ngcgui.tcl:2537 msgid "Finished" msgstr "已完成" -#: tcl/ngcgui.tcl:2385 +#: tcl/ngcgui.tcl:2542 msgid "Canceled" msgstr "已取消" -#: tcl/ngcgui.tcl:2391 +#: tcl/ngcgui.tcl:2548 msgid "Sent" msgstr "已发送" -#: tcl/ngcgui.tcl:2395 +#: tcl/ngcgui.tcl:2552 #, fuzzy msgid "SendFileToAxis failed" msgstr "已启用过滤器" -#: tcl/ngcgui.tcl:2399 +#: tcl/ngcgui.tcl:2556 msgid "Ctrl-k for Key bindings" msgstr "" -#: tcl/ngcgui.tcl:2403 +#: tcl/ngcgui.tcl:2560 #, fuzzy msgid "Expand sub" msgstr "全部展开(_X)" -#: tcl/ngcgui.tcl:2407 +#: tcl/ngcgui.tcl:2564 #, fuzzy msgid "Retain values" msgstr "获取光标值" -#: tcl/ngcgui.tcl:2411 +#: tcl/ngcgui.tcl:2568 msgid "Verbose" msgstr "" -#: tcl/ngcgui.tcl:2417 +#: tcl/ngcgui.tcl:2574 #, fuzzy msgid "Finalize Canceled" msgstr "已取消" -#: tcl/ngcgui.tcl:2572 tcl/ngcgui.tcl:2728 +#: tcl/ngcgui.tcl:2711 tcl/ngcgui.tcl:2867 msgid "Dismiss" msgstr "" -#: tcl/ngcgui.tcl:2577 +#: tcl/ngcgui.tcl:2716 #, fuzzy msgid "ngcgui Error" msgstr "KScript 错误" -#: tcl/ngcgui.tcl:2600 +#: tcl/ngcgui.tcl:2739 msgid "Declining support for tk send bug in ngcgui" msgstr "" -#: tcl/ngcgui.tcl:2601 +#: tcl/ngcgui.tcl:2740 msgid "You should upgrade linuxcnc to >= linuxcnc2.5" msgstr "" -#: tcl/ngcgui.tcl:2645 +#: tcl/ngcgui.tcl:2784 msgid "pre2.4_send_file_to_axis:error" msgstr "" -#: tcl/ngcgui.tcl:2839 share/axis/tcl/axis.tcl:1917 +#: tcl/ngcgui.tcl:2978 share/axis/tcl/axis.tcl:2032 #, fuzzy msgid "OFF" msgstr "电源关" -#: tcl/ngcgui.tcl:2842 +#: tcl/ngcgui.tcl:2981 #, fuzzy msgid "Toggle autosend" msgstr "反转标志" -#: tcl/ngcgui.tcl:2843 tcl/ngcgui.tcl:3057 +#: tcl/ngcgui.tcl:2982 tcl/ngcgui.tcl:3189 #, fuzzy msgid "Clear entries" msgstr "清空列表(&L)" -#: tcl/ngcgui.tcl:2844 +#: tcl/ngcgui.tcl:2983 msgid "Set entries to default values" msgstr "" -#: tcl/ngcgui.tcl:2845 tcl/ngcgui.tcl:2859 tcl/ngcgui.tcl:2861 +#: tcl/ngcgui.tcl:2984 tcl/ngcgui.tcl:2998 tcl/ngcgui.tcl:3000 msgid "Open editor specified by" msgstr "" -#: tcl/ngcgui.tcl:2846 +#: tcl/ngcgui.tcl:2985 #, fuzzy msgid "on last outfile" msgstr "恢复最后使用的过滤器(&I)" -#: tcl/ngcgui.tcl:2847 +#: tcl/ngcgui.tcl:2986 msgid "toggle expand subroutines" msgstr "" -#: tcl/ngcgui.tcl:2848 +#: tcl/ngcgui.tcl:2987 #, fuzzy msgid "Create feature" msgstr "新建" -#: tcl/ngcgui.tcl:2849 +#: tcl/ngcgui.tcl:2988 msgid "Finalize (AUTO send is" msgstr "" -#: tcl/ngcgui.tcl:2850 +#: tcl/ngcgui.tcl:2989 msgid "Show key bindings" msgstr "" -#: tcl/ngcgui.tcl:2851 +#: tcl/ngcgui.tcl:2990 msgid "Restart (cancel pending)" msgstr "" -#: tcl/ngcgui.tcl:2852 +#: tcl/ngcgui.tcl:2991 msgid "(re)Read Preamble" msgstr "" -#: tcl/ngcgui.tcl:2853 +#: tcl/ngcgui.tcl:2992 msgid "(re)Read Postamble" msgstr "" -#: tcl/ngcgui.tcl:2854 +#: tcl/ngcgui.tcl:2993 msgid "(re)Read Subfile" msgstr "" -#: tcl/ngcgui.tcl:2855 +#: tcl/ngcgui.tcl:2994 #, fuzzy msgid "toggle retain values" msgstr "建议合适的值" -#: tcl/ngcgui.tcl:2856 +#: tcl/ngcgui.tcl:2995 msgid "toggle output file verbosity" msgstr "" -#: tcl/ngcgui.tcl:2857 +#: tcl/ngcgui.tcl:2996 #, fuzzy msgid "Show status" msgstr "显示状态栏" -#: tcl/ngcgui.tcl:2858 +#: tcl/ngcgui.tcl:2997 msgid "Show full status (debug info)" msgstr "" -#: tcl/ngcgui.tcl:2860 +#: tcl/ngcgui.tcl:2999 #, fuzzy msgid "on current subfile" msgstr "关闭当前文件" -#: tcl/ngcgui.tcl:2862 +#: tcl/ngcgui.tcl:3001 #, fuzzy msgid "on current preamble" msgstr "关闭当前文件" -#: tcl/ngcgui.tcl:2865 +#: tcl/ngcgui.tcl:3004 msgid " Escape Return to Preview page" msgstr "" -#: tcl/ngcgui.tcl:2942 +#: tcl/ngcgui.tcl:3081 msgid "Editing requires setting for environmental variable VISUAL" msgstr "" -#: tcl/ngcgui.tcl:2943 +#: tcl/ngcgui.tcl:3082 msgid "Trying gedit" msgstr "" -#: tcl/ngcgui.tcl:2955 +#: tcl/ngcgui.tcl:3095 msgid "No file available for editing yet" msgstr "" -#: tcl/ngcgui.tcl:2964 tcl/ngcgui.tcl:2973 +#: tcl/ngcgui.tcl:3104 tcl/ngcgui.tcl:3113 #, fuzzy msgid "No file available for editing" msgstr "没有可用的描述" -#: tcl/ngcgui.tcl:2990 +#: tcl/ngcgui.tcl:3130 #, fuzzy msgid "Status items" msgstr "统计" -#: tcl/ngcgui.tcl:3003 +#: tcl/ngcgui.tcl:3143 msgid "All-page opt items" msgstr "" -#: tcl/ngcgui.tcl:3009 +#: tcl/ngcgui.tcl:3149 msgid "any-items" msgstr "" -#: tcl/ngcgui.tcl:3046 +#: tcl/ngcgui.tcl:3182 #, fuzzy msgid "Set defaults" msgstr "设为默认" -#: tcl/ngcgui.tcl:3125 +#: tcl/ngcgui.tcl:3257 msgid "not writable" msgstr "" -#: tcl/ngcgui.tcl:3263 tcl/ngcgui.tcl:3443 +#: tcl/ngcgui.tcl:3396 tcl/ngcgui.tcl:3577 #, fuzzy msgid "new" msgstr "新建" -#: tcl/ngcgui.tcl:3288 +#: tcl/ngcgui.tcl:3422 #, fuzzy msgid "Open a new Subfile" msgstr "打开文件" -#: tcl/ngcgui.tcl:3434 +#: tcl/ngcgui.tcl:3568 #, fuzzy msgid "remove" msgstr "删除" -#: tcl/ngcgui.tcl:3456 tcl/ngcgui.tcl:3462 +#: tcl/ngcgui.tcl:3590 tcl/ngcgui.tcl:3596 #, fuzzy msgid "move" msgstr "删除" -#: tcl/ngcgui.tcl:3561 src/emc/usr_intf/pncconf/pncconf.py:7022 -#: src/emc/usr_intf/pncconf/pncconf.py:7139 -#: src/emc/usr_intf/pncconf/pncconf.py:7306 +#: tcl/ngcgui.tcl:3704 src/emc/usr_intf/pncconf/pncconf.py:7374 +#: src/emc/usr_intf/pncconf/pncconf.py:7485 +#: src/emc/usr_intf/pncconf/pncconf.py:7650 msgid "Custom" msgstr "自定义" -#: tcl/ngcgui.tcl:3587 +#: tcl/ngcgui.tcl:3730 #, fuzzy msgid "Problem creating page" msgstr "正在准备页面..." -#: tcl/ngcgui.tcl:3594 +#: tcl/ngcgui.tcl:3737 msgid "entrykeybindings not available" msgstr "" -#: tcl/ngcgui.tcl:3633 +#: tcl/ngcgui.tcl:3781 msgid "Found multiple matches for" msgstr "" -#: tcl/ngcgui.tcl:3634 +#: tcl/ngcgui.tcl:3782 msgid "using path" msgstr "" -#: tcl/ngcgui.tcl:3642 src/emc/usr_intf/axis/scripts/axis.py:2255 -#: src/emc/usr_intf/axis/scripts/axis.py:2268 +#: tcl/ngcgui.tcl:3790 src/emc/usr_intf/axis/scripts/axis.py:2440 +#: src/emc/usr_intf/axis/scripts/axis.py:2453 msgid "Warning" msgstr "警告" -#: tcl/ngcgui.tcl:3643 +#: tcl/ngcgui.tcl:3791 msgid "File absolute path specifier conflicts with searchpath result" msgstr "" -#: tcl/ngcgui.tcl:3644 +#: tcl/ngcgui.tcl:3792 +#, fuzzy +msgid "Absolute Specifier" +msgstr "没有指定名称" + +#: tcl/ngcgui.tcl:3793 +msgid "Using Search Result" +msgstr "" + +#: tcl/ngcgui.tcl:3798 +msgid "File not in Search Path" +msgstr "" + +#: tcl/ngcgui.tcl:3800 +msgid "Must be in search path" +msgstr "" + +#: tcl/ngcgui.tcl:3802 +msgid "(File found -- not in search path)" +msgstr "" + +#: tcl/ngcgui.tcl:3804 +#, fuzzy +msgid "Current directory" +msgstr "工程目录" + +#: tcl/ngcgui.tcl:3805 +#, fuzzy +msgid "Search path" +msgstr "搜索" + +#: tcl/ngcgui.tcl:3815 +#, fuzzy +msgid "Check setting for" +msgstr "拼写检查" + +#: tcl/ngcgui.tcl:3816 +#, fuzzy +msgid "in ini file" +msgstr "打开文件" + +#: tcl/ngcgui.tcl:3817 +msgid "(Restart required after fixing ini file)" +msgstr "" + +#: tcl/ngcgui.tcl:3832 +#, fuzzy +msgid "Try to Continue" +msgstr "继续" + +#: tcl/ngcgui.tcl:3837 +#, fuzzy +msgid "Ngcgui Configuration File Not Found" +msgstr "配置目录" + +#: tcl/ngcgui.tcl:3917 +msgid "Missing Tcl Package Img" +msgstr "" + +#: tcl/ngcgui.tcl:3918 +#, fuzzy +msgid "Please install Img" +msgstr "请选择图片。" + +#: tcl/ngcgui.tcl:4122 +#, fuzzy +msgid "ini file" +msgstr "日志文件:" + +#: tcl/ngcgui.tcl:4131 +#, fuzzy +msgid "not found" +msgstr "插件未找到" + +#: tcl/ngcgui_ttt.tcl:67 +msgid "found truetype-tracer v4 -OK" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:70 +msgid "Note truetype-tracer v4 is required" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:71 +msgid "Note: truetype-tracer v4 is required" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:81 +msgid "ngcgui_app.tcl must be loaded before" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:89 +msgid "Create a subroutine file from truetype-tracer (V4 reqd)" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:102 tcl/ngcgui_ttt.tcl:115 +#, fuzzy +msgid "problem with" +msgstr "替换为(&R):" + +#: tcl/ngcgui_ttt.tcl:106 +#, fuzzy +msgid "No entry for" +msgstr "无错误" + +#: tcl/ngcgui_ttt.tcl:109 +msgid "wrong version of truetype-tracer" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:125 +msgid "not writable, using" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:125 +msgid "and setting expandsub" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:161 +msgid "Text" +msgstr "文字" + +#: tcl/ngcgui_ttt.tcl:171 +#, fuzzy +msgid "Linescale" +msgstr "转义" + +#: tcl/ngcgui_ttt.tcl:177 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3583 +msgid "none" +msgstr "无" + +#: tcl/ngcgui_ttt.tcl:192 +msgid "Subdiv" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:199 +#, fuzzy +msgid "default" +msgstr "默认" + +#: tcl/ngcgui_ttt.tcl:239 +#, fuzzy +msgid "Mode" +msgstr "模式:" + +#: tcl/ngcgui_ttt.tcl:247 +#, fuzzy +msgid "normal" +msgstr "正常" + +#: tcl/ngcgui_ttt.tcl:248 +#, fuzzy +msgid "date" +msgstr "更新" + +#: tcl/ngcgui_ttt.tcl:249 +#, fuzzy +msgid "fontname" +msgstr "主机名" + +#: tcl/ngcgui_ttt.tcl:262 +#, fuzzy +msgid "Switches" +msgstr "行" + +#: tcl/ngcgui_ttt.tcl:270 +#, fuzzy +msgid "Unicode" +msgstr "统一码" + +#: tcl/ngcgui_ttt.tcl:275 +#, fuzzy +msgid "Allow Rotation" +msgstr "旋转:" + +#: tcl/ngcgui_ttt.tcl:295 +msgid "Make ngcgui-compatible subfile and new tab page" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:353 +msgid "Null text" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:384 +msgid "Using truetype-tracer default font" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:388 +#, fuzzy +msgid "no such file" +msgstr "日志文件:" + +#: tcl/ngcgui_ttt.tcl:393 +#, fuzzy +msgid "file not readable" +msgstr "要打开的文件" + +#: tcl/ngcgui_ttt.tcl:507 +msgid "Creating new tab page" +msgstr "" + +#: tcl/ngcgui_app.tcl:25 +msgid "" +"requires command inifindall\n" +"from axis.py (LinuxCNC 2.5) or" +msgstr "" + +#: tcl/ngcgui_app.tcl:55 +#, fuzzy +msgid "Substituting" +msgstr "子章节" + +#: tcl/ngcgui_app.tcl:55 +#, fuzzy +msgid "for" +msgstr "单词" + +#: tcl/ngcgui_app.tcl:59 +#, fuzzy +msgid "not readable" +msgstr "要打开的文件" + +#: tcl/ngcgui_app.tcl:65 tcl/ngcgui_app.tcl:68 +msgid "Unexpected: multiple startups for ngcgui" +msgstr "" + +#: tcl/ngcgui_app.tcl:66 +#, fuzzy +msgid "LinuxCNC" +msgstr "调试" + +#: tcl/ngcgui_app.tcl:67 +msgid "for linuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" +msgstr "" + +#: tcl/ngcgui_app.tcl:86 +#, fuzzy +msgid "LinuxCNC version" +msgstr "错误" + +#: tcl/ngcgui_app.tcl:87 +msgid "for LinuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" +msgstr "" + +#: tcl/tooledit.tcl:65 +#, fuzzy +msgid "Problem reading ~/.tooleditrc" +msgstr "正在准备页面..." + +#: tcl/tooledit.tcl:82 +#, tcl-format +msgid "Note: Ignoring duplicate column name: %s" +msgstr "" + +#: tcl/tooledit.tcl:93 +#, fuzzy, tcl-format +msgid "Unknown column: %s" +msgstr "未定义刀具 %d 号" + +#: tcl/tooledit.tcl:210 tcl/tooledit.tcl:213 tcl/tooledit.tcl:598 +#: tcl/tooledit.tcl:599 tcl/tooledit.tcl:1032 +msgid "NEW" +msgstr "" + +#: tcl/tooledit.tcl:232 +#, tcl-format +msgid "%s must be a number" +msgstr "" + +#: tcl/tooledit.tcl:241 +#, fuzzy, tcl-format +msgid "filename: <%s> not readable" +msgstr "要打开的文件" + +#: tcl/tooledit.tcl:245 +#, fuzzy, tcl-format +msgid "filename: <%s> not writable" +msgstr "要打开的文件" + +#: tcl/tooledit.tcl:250 +#, tcl-format +msgid "directory: <%s> not writable" +msgstr "" + +#: tcl/tooledit.tcl:294 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, value <%s> is not a number" +msgstr "" + +#: tcl/tooledit.tcl:300 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, expected integer not <%s>" +msgstr "" + +#: tcl/tooledit.tcl:316 +#, tcl-format +msgid "At linenumber %d, Unknown tag <%s>" +msgstr "" + +#: tcl/tooledit.tcl:399 +#, tcl-format +msgid "%s: Column sorting not available with tcl_version==%s" +msgstr "" + +#: tcl/tooledit.tcl:408 #, fuzzy -msgid "Absolute Specifier" -msgstr "没有指定名称" +msgid "tool" +msgstr "无刀具" -#: tcl/ngcgui.tcl:3645 -msgid "Using Search Result" -msgstr "" +#: tcl/tooledit.tcl:409 +#, fuzzy +msgid "poc" +msgstr "项目" -#: tcl/ngcgui.tcl:3650 -msgid "File not in Search Path" -msgstr "" +#: tcl/tooledit.tcl:410 +#, fuzzy +msgid "diam" +msgstr "参数" -#: tcl/ngcgui.tcl:3652 -msgid "Must be in search path" +#: tcl/tooledit.tcl:411 +msgid "front" msgstr "" -#: tcl/ngcgui.tcl:3654 -msgid "(File found -- not in search path)" -msgstr "" +#: tcl/tooledit.tcl:412 +#, fuzzy +msgid "back" +msgstr "后退" -#: tcl/ngcgui.tcl:3656 +#: tcl/tooledit.tcl:413 #, fuzzy -msgid "Current directory" -msgstr "工程目录" +msgid "orien" +msgstr "朋友" -#: tcl/ngcgui.tcl:3657 +#: tcl/tooledit.tcl:414 #, fuzzy -msgid "Search path" -msgstr "搜索" +msgid "comment" +msgstr "注释" -#: tcl/ngcgui.tcl:3663 +#: tcl/tooledit.tcl:444 #, fuzzy -msgid "Check setting for" -msgstr "拼写检查" +msgid "Del" +msgstr "删除" -#: tcl/ngcgui.tcl:3664 +#: tcl/tooledit.tcl:473 #, fuzzy -msgid "in ini file" -msgstr "打开文件" +msgid "ReLoadTable" +msgstr "重载刀具表(_B)" -#: tcl/ngcgui.tcl:3665 -msgid "(Restart required after fixing ini file)" -msgstr "" +#: tcl/tooledit.tcl:478 +#, fuzzy +msgid "SaveFile" +msgstr "保存文件" -#: tcl/ngcgui.tcl:3680 +#: tcl/tooledit.tcl:483 #, fuzzy -msgid "Try to Continue" -msgstr "继续" +msgid "ReRead" +msgstr "读取(_R)" -#: tcl/ngcgui.tcl:3685 +#: tcl/tooledit.tcl:485 #, fuzzy -msgid "Ngcgui Configuration File Not Found" -msgstr "配置目录" +msgid "AddTool" +msgstr "工具" -#: tcl/ngcgui.tcl:3765 -msgid "Missing Tcl Package Img" -msgstr "" +#: tcl/tooledit.tcl:535 +#, fuzzy, tcl-format +msgid "Opened %s" +msgstr "打开" + +#: tcl/tooledit.tcl:536 +#, fuzzy, tcl-format +msgid "Created %s" +msgstr "创建" -#: tcl/ngcgui.tcl:3766 +#: tcl/tooledit.tcl:537 #, fuzzy -msgid "Please install Img" -msgstr "请选择图片。" +msgid "File updated" +msgstr "文件名" -#: tcl/ngcgui.tcl:3965 +#: tcl/tooledit.tcl:538 #, fuzzy -msgid "ini file" -msgstr "日志文件:" +msgid "File modified" +msgstr "已修改" -#: tcl/ngcgui.tcl:3973 +#: tcl/tooledit.tcl:539 #, fuzzy -msgid "not found" -msgstr "插件未找到" +msgid "File check errors" +msgstr "一般错误" -#: tcl/ngcgui_ttt.tcl:67 -msgid "found truetype-tracer v4 -OK" +#: tcl/tooledit.tcl:540 +#, fuzzy +msgid "File checked" +msgstr "拼写检查器" + +#: tcl/tooledit.tcl:541 +msgid "File items deleted" msgstr "" -#: tcl/ngcgui_ttt.tcl:70 -msgid "Note truetype-tracer v4 is required" +#: tcl/tooledit.tcl:542 +msgid "Bogus lines in file ignored" msgstr "" -#: tcl/ngcgui_ttt.tcl:71 -msgid "Note: truetype-tracer v4 is required" +#: tcl/tooledit.tcl:543 +msgid "File errors -- Check Entries" msgstr "" -#: tcl/ngcgui_ttt.tcl:81 -msgid "ngcgui_app.tcl must be loaded before" +#: tcl/tooledit.tcl:544 +msgid "Warning: File changed by another process" msgstr "" -#: tcl/ngcgui_ttt.tcl:89 -msgid "Create a subroutine file from truetype-tracer (V4 reqd)" +#: tcl/tooledit.tcl:545 +msgid "Warning: File deleted by another process" msgstr "" -#: tcl/ngcgui_ttt.tcl:102 tcl/ngcgui_ttt.tcl:115 +#: tcl/tooledit.tcl:546 #, fuzzy -msgid "problem with" -msgstr "替换为(&R):" +msgid "Added Tool" +msgstr "外部工具" -#: tcl/ngcgui_ttt.tcl:106 -#, fuzzy -msgid "No entry for" -msgstr "无错误" +#: tcl/tooledit.tcl:550 +#, tcl-format +msgid "Sorted by %s, increasing" +msgstr "" -#: tcl/ngcgui_ttt.tcl:109 -msgid "wrong version of truetype-tracer" +#: tcl/tooledit.tcl:551 +#, tcl-format +msgid "Sorted by %s, decreasing" msgstr "" -#: tcl/ngcgui_ttt.tcl:125 -msgid "not writable, using" +#: tcl/tooledit.tcl:593 +msgid "Added" msgstr "" -#: tcl/ngcgui_ttt.tcl:125 -msgid "and setting expandsub" +#: tcl/tooledit.tcl:802 +#, tcl-format +msgid "Tool %s, Column %s, parameter %s is not a number" msgstr "" -#: tcl/ngcgui_ttt.tcl:161 -msgid "Text" -msgstr "文字" +#: tcl/tooledit.tcl:811 +#, tcl-format +msgid "Tool %s, parameter %s must be nonnegative integer" +msgstr "" -#: tcl/ngcgui_ttt.tcl:171 -#, fuzzy -msgid "Linescale" -msgstr "转义" +#: tcl/tooledit.tcl:819 +#, tcl-format +msgid "Tool %s: must be 0..9 integer" +msgstr "" -#: tcl/ngcgui_ttt.tcl:177 -msgid "none" -msgstr "无" +#: tcl/tooledit.tcl:826 +#, tcl-format +msgid "Tool %s: <%s> must be between -360 and 360" +msgstr "" -#: tcl/ngcgui_ttt.tcl:192 -msgid "Subdiv" +#: tcl/tooledit.tcl:842 +#, tcl-format +msgid "Pocket <%s> specified multiple times" msgstr "" -#: tcl/ngcgui_ttt.tcl:199 -#, fuzzy -msgid "default" -msgstr "默认" +#: tcl/tooledit.tcl:857 +#, tcl-format +msgid "Tool <%s> specified multiple times" +msgstr "" -#: tcl/ngcgui_ttt.tcl:239 +#: tcl/tooledit.tcl:902 #, fuzzy -msgid "Mode" -msgstr "模式:" +msgid "File Modified" +msgstr "修改日期" -#: tcl/ngcgui_ttt.tcl:247 -#, fuzzy -msgid "normal" -msgstr "正常" +#: tcl/tooledit.tcl:903 +msgid "Save Modifications to File?" +msgstr "" -#: tcl/ngcgui_ttt.tcl:248 -#, fuzzy -msgid "date" -msgstr "更新" +#: tcl/tooledit.tcl:930 +#, tcl-format +msgid "" +"Only these columns are currently used:\n" +"\n" +" %s" +msgstr "" -#: tcl/ngcgui_ttt.tcl:249 -#, fuzzy -msgid "fontname" -msgstr "主机名" +#: tcl/tooledit.tcl:931 +msgid "Limit display to these columns by specifying" +msgstr "" -#: tcl/ngcgui_ttt.tcl:262 +#: tcl/tooledit.tcl:933 #, fuzzy -msgid "Switches" -msgstr "行" +msgid "Format for ini file is" +msgstr "" +"打开文件“%s”出错:\n" +"%s" -#: tcl/ngcgui_ttt.tcl:270 -#, fuzzy -msgid "Unicode" -msgstr "统一码" +#: tcl/tooledit.tcl:935 +msgid "For standalone use, invoke as" +msgstr "" -#: tcl/ngcgui_ttt.tcl:275 +#: tcl/tooledit.tcl:936 #, fuzzy -msgid "Allow Rotation" -msgstr "旋转:" +msgid "tool_table_filename" +msgstr "本地文件" -#: tcl/ngcgui_ttt.tcl:295 -msgid "Make ngcgui-compatible subfile and new tab page" +#: tcl/tooledit.tcl:956 +#, fuzzy, tcl-format +msgid "Created by %s" +msgstr "创建" + +#: tcl/tooledit.tcl:957 +msgid "Saved geometry (updated on program termination)" msgstr "" -#: tcl/ngcgui_ttt.tcl:353 -msgid "Null text" +#: tcl/tooledit.tcl:980 +#, tcl-format +msgid "" +"%s: Axis inifile specifies multiple inifile items for: [EMCIO]TOOL_TABLE" msgstr "" -#: tcl/ngcgui_ttt.tcl:384 -msgid "Using truetype-tracer default font" +#: tcl/tooledit.tcl:981 +#, tcl-format +msgid "%s: Using: %s" msgstr "" -#: tcl/ngcgui_ttt.tcl:388 -#, fuzzy -msgid "no such file" -msgstr "日志文件:" +#: tcl/tooledit.tcl:990 +#, tcl-format +msgid "" +"%s: Warning: Axis is running but the tool table file <%s> \n" +"differs from the standalone startup file <%s>" +msgstr "" -#: tcl/ngcgui_ttt.tcl:393 +#: tcl/tooledit.tcl:1004 +msgid "Must be On and Idle to reload tool table" +msgstr "" + +#: tcl/tooledit.tcl:1093 +msgid "Usage" +msgstr "" + +#: tcl/tooledit.tcl:1094 tcl/tooledit.tcl:1095 #, fuzzy -msgid "file not readable" -msgstr "要打开的文件" +msgid "filename" +msgstr "文件名:" -#: tcl/ngcgui_ttt.tcl:507 -msgid "Creating new tab page" +#: tcl/tooledit.tcl:1096 +#, tcl-format +msgid "Allowed column_ names are: %s" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:148 +#: tcl/tooledit.tcl:1106 +#, fuzzy +msgid "Missing filename" +msgstr "缺少参数。" + +#: src/emc/usr_intf/axis/scripts/axis.py:183 msgid "Emergency stop" msgstr "急停" -#: src/emc/usr_intf/axis/scripts/axis.py:149 +#: src/emc/usr_intf/axis/scripts/axis.py:184 msgid "Turn machine on" msgstr "开机" -#: src/emc/usr_intf/axis/scripts/axis.py:151 +#: src/emc/usr_intf/axis/scripts/axis.py:186 msgid "Activate first axis" msgstr "激活第一轴" -#: src/emc/usr_intf/axis/scripts/axis.py:152 +#: src/emc/usr_intf/axis/scripts/axis.py:187 msgid "Activate second axis" msgstr "激活第二轴" -#: src/emc/usr_intf/axis/scripts/axis.py:153 +#: src/emc/usr_intf/axis/scripts/axis.py:188 msgid "Activate third axis" msgstr "激活第三轴" -#: src/emc/usr_intf/axis/scripts/axis.py:154 +#: src/emc/usr_intf/axis/scripts/axis.py:189 msgid "Activate fourth axis" msgstr "激活第四轴" -#: src/emc/usr_intf/axis/scripts/axis.py:155 +#: src/emc/usr_intf/axis/scripts/axis.py:190 msgid "Activate fifth through ninth axis" msgstr "Activate fifth through ninth axis" -#: src/emc/usr_intf/axis/scripts/axis.py:156 +#: src/emc/usr_intf/axis/scripts/axis.py:191 msgid "Set Feed Override from 0% to 100%" msgstr "设置进给倍率 0%-100%" -#: src/emc/usr_intf/axis/scripts/axis.py:157 +#: src/emc/usr_intf/axis/scripts/axis.py:192 msgid ", and ." msgstr ", 和 ." -#: src/emc/usr_intf/axis/scripts/axis.py:157 +#: src/emc/usr_intf/axis/scripts/axis.py:192 msgid "Select jog speed" msgstr "选择手动速度" -#: src/emc/usr_intf/axis/scripts/axis.py:158 +#: src/emc/usr_intf/axis/scripts/axis.py:193 msgid "< and >" msgstr "< 和 >" -#: src/emc/usr_intf/axis/scripts/axis.py:158 +#: src/emc/usr_intf/axis/scripts/axis.py:193 msgid "Select angular jog speed" msgstr "选择手动角速度" -#: src/emc/usr_intf/axis/scripts/axis.py:159 +#: src/emc/usr_intf/axis/scripts/axis.py:194 msgid "I, Shift-I" msgstr "I, Shift-I" -#: src/emc/usr_intf/axis/scripts/axis.py:159 share/axis/tcl/axis.tcl:2356 +#: src/emc/usr_intf/axis/scripts/axis.py:194 share/axis/tcl/axis.tcl:2481 msgid "Select jog increment" msgstr "选择手动加速度" -#: src/emc/usr_intf/axis/scripts/axis.py:160 +#: src/emc/usr_intf/axis/scripts/axis.py:195 msgid "Continuous jog" msgstr "连续" -#: src/emc/usr_intf/axis/scripts/axis.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:479 +#: src/emc/usr_intf/axis/scripts/axis.py:196 +#: src/emc/usr_intf/pncconf/pncconf.py:408 msgid "Home" msgstr "零点" -#: src/emc/usr_intf/axis/scripts/axis.py:161 +#: src/emc/usr_intf/axis/scripts/axis.py:196 msgid "Send active axis home" msgstr "激活轴回零" -#: src/emc/usr_intf/axis/scripts/axis.py:162 +#: src/emc/usr_intf/axis/scripts/axis.py:197 msgid "Ctrl-Home" msgstr "Ctrl+Home" -#: src/emc/usr_intf/axis/scripts/axis.py:162 +#: src/emc/usr_intf/axis/scripts/axis.py:197 msgid "Home all axes" msgstr "回零" -#: src/emc/usr_intf/axis/scripts/axis.py:163 +#: src/emc/usr_intf/axis/scripts/axis.py:198 msgid "Shift-Home" msgstr "Shift-Home" -#: src/emc/usr_intf/axis/scripts/axis.py:163 +#: src/emc/usr_intf/axis/scripts/axis.py:198 msgid "Zero G54 offset for active axis" msgstr "Zero G54 offset for active axis" -#: src/emc/usr_intf/axis/scripts/axis.py:164 +#: src/emc/usr_intf/axis/scripts/axis.py:199 msgid "End" msgstr "End" -#: src/emc/usr_intf/axis/scripts/axis.py:164 +#: src/emc/usr_intf/axis/scripts/axis.py:199 msgid "Set G54 offset for active axis" msgstr "Set G54 offset for active axis" -#: src/emc/usr_intf/axis/scripts/axis.py:165 +#: src/emc/usr_intf/axis/scripts/axis.py:200 msgid "Jog active axis" msgstr "激活轴" -#: src/emc/usr_intf/axis/scripts/axis.py:168 +#: src/emc/usr_intf/axis/scripts/axis.py:203 msgid "Left, Right" msgstr "Left,Riht" -#: src/emc/usr_intf/axis/scripts/axis.py:168 +#: src/emc/usr_intf/axis/scripts/axis.py:203 msgid "Jog first axis" msgstr "第一轴" -#: src/emc/usr_intf/axis/scripts/axis.py:169 +#: src/emc/usr_intf/axis/scripts/axis.py:204 msgid "Up, Down" msgstr "Up,Down" -#: src/emc/usr_intf/axis/scripts/axis.py:169 +#: src/emc/usr_intf/axis/scripts/axis.py:204 msgid "Jog second axis" msgstr "第二轴" -#: src/emc/usr_intf/axis/scripts/axis.py:170 +#: src/emc/usr_intf/axis/scripts/axis.py:205 msgid "Pg Up, Pg Dn" msgstr "Pg Up, Pg Dn" -#: src/emc/usr_intf/axis/scripts/axis.py:170 +#: src/emc/usr_intf/axis/scripts/axis.py:205 msgid "Jog third axis" msgstr "Jog third axis" -#: src/emc/usr_intf/axis/scripts/axis.py:171 +#: src/emc/usr_intf/axis/scripts/axis.py:206 msgid "Shift+above jogs" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:171 +#: src/emc/usr_intf/axis/scripts/axis.py:206 msgid "Jog at traverse speed" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:172 +#: src/emc/usr_intf/axis/scripts/axis.py:207 msgid "Jog fourth axis" msgstr "Jog fourth axis" -#: src/emc/usr_intf/axis/scripts/axis.py:175 +#: src/emc/usr_intf/axis/scripts/axis.py:210 msgid "Toggle between Drag and Rotate mode" msgstr "平移/旋转" -#: src/emc/usr_intf/axis/scripts/axis.py:176 +#: src/emc/usr_intf/axis/scripts/axis.py:211 msgid "Left Button" msgstr "左击" -#: src/emc/usr_intf/axis/scripts/axis.py:176 +#: src/emc/usr_intf/axis/scripts/axis.py:211 msgid "Pan, rotate or select line" msgstr "平移/旋转选区" -#: src/emc/usr_intf/axis/scripts/axis.py:177 +#: src/emc/usr_intf/axis/scripts/axis.py:212 msgid "Shift+Left Button" msgstr "Shift+左击" -#: src/emc/usr_intf/axis/scripts/axis.py:177 +#: src/emc/usr_intf/axis/scripts/axis.py:212 msgid "Rotate or pan" msgstr "旋转/平移" -#: src/emc/usr_intf/axis/scripts/axis.py:178 +#: src/emc/usr_intf/axis/scripts/axis.py:213 msgid "Right Button" msgstr "右击" -#: src/emc/usr_intf/axis/scripts/axis.py:178 -#: src/emc/usr_intf/axis/scripts/axis.py:180 -#: src/emc/usr_intf/axis/scripts/axis.py:181 +#: src/emc/usr_intf/axis/scripts/axis.py:213 +#: src/emc/usr_intf/axis/scripts/axis.py:215 +#: src/emc/usr_intf/axis/scripts/axis.py:216 msgid "Zoom view" msgstr "缩放视图" -#: src/emc/usr_intf/axis/scripts/axis.py:179 +#: src/emc/usr_intf/axis/scripts/axis.py:214 msgid "Wheel Button" msgstr "滚轮" -#: src/emc/usr_intf/axis/scripts/axis.py:179 +#: src/emc/usr_intf/axis/scripts/axis.py:214 msgid "Rotate view" msgstr "旋转视图" -#: src/emc/usr_intf/axis/scripts/axis.py:180 +#: src/emc/usr_intf/axis/scripts/axis.py:215 msgid "Rotate Wheel" msgstr "转动滚轮" -#: src/emc/usr_intf/axis/scripts/axis.py:181 +#: src/emc/usr_intf/axis/scripts/axis.py:216 msgid "Control+Left Button" msgstr "Ctrl+左键" -#: src/emc/usr_intf/axis/scripts/axis.py:184 +#: src/emc/usr_intf/axis/scripts/axis.py:219 msgid "Manual control" msgstr "手动控制" -#: src/emc/usr_intf/axis/scripts/axis.py:185 +#: src/emc/usr_intf/axis/scripts/axis.py:220 msgid "Code entry (MDI)" msgstr "代码输入(MDI)" -#: src/emc/usr_intf/axis/scripts/axis.py:186 +#: src/emc/usr_intf/axis/scripts/axis.py:221 msgid "Control-M" msgstr "Ctrl-M" -#: src/emc/usr_intf/axis/scripts/axis.py:186 +#: src/emc/usr_intf/axis/scripts/axis.py:221 msgid "Clear MDI history" msgstr "清除 MDI 历史" -#: src/emc/usr_intf/axis/scripts/axis.py:187 +#: src/emc/usr_intf/axis/scripts/axis.py:222 msgid "Control-H" msgstr "Control-H" -#: src/emc/usr_intf/axis/scripts/axis.py:187 +#: src/emc/usr_intf/axis/scripts/axis.py:222 msgid "Copy selected MDI history elements" msgstr "复制选中的 MID 记录" -#: src/emc/usr_intf/axis/scripts/axis.py:188 +#: src/emc/usr_intf/axis/scripts/axis.py:223 msgid "to clipboard" msgstr "复制到剪贴板" -#: src/emc/usr_intf/axis/scripts/axis.py:189 +#: src/emc/usr_intf/axis/scripts/axis.py:224 msgid "Control-Shift-H" msgstr "Ctrl+Shift+H" -#: src/emc/usr_intf/axis/scripts/axis.py:189 +#: src/emc/usr_intf/axis/scripts/axis.py:224 msgid "Paste clipboard to MDI history" msgstr "粘贴" -#: src/emc/usr_intf/axis/scripts/axis.py:190 share/axis/tcl/axis.tcl:1113 +#: src/emc/usr_intf/axis/scripts/axis.py:225 share/axis/tcl/axis.tcl:1183 #: src/emc/usr_intf/touchy/touchy.glade:508 msgid "Override Limits" msgstr "超程" -#: src/emc/usr_intf/axis/scripts/axis.py:192 +#: src/emc/usr_intf/axis/scripts/axis.py:227 msgid "Open program" msgstr "打开程序:" -#: src/emc/usr_intf/axis/scripts/axis.py:193 +#: src/emc/usr_intf/axis/scripts/axis.py:228 msgid "Control-R" msgstr "Ctrl+R" -#: src/emc/usr_intf/axis/scripts/axis.py:193 +#: src/emc/usr_intf/axis/scripts/axis.py:228 msgid "Reload program" msgstr "重新启动程序" -#: src/emc/usr_intf/axis/scripts/axis.py:194 +#: src/emc/usr_intf/axis/scripts/axis.py:229 msgid "Control-S" msgstr "Ctrl+S" -#: src/emc/usr_intf/axis/scripts/axis.py:194 +#: src/emc/usr_intf/axis/scripts/axis.py:229 msgid "Save g-code as" msgstr "文件另存为" -#: src/emc/usr_intf/axis/scripts/axis.py:195 +#: src/emc/usr_intf/axis/scripts/axis.py:230 msgid "Run program" msgstr "循环启动" -#: src/emc/usr_intf/axis/scripts/axis.py:196 +#: src/emc/usr_intf/axis/scripts/axis.py:231 msgid "Step program" msgstr "停止" -#: src/emc/usr_intf/axis/scripts/axis.py:197 +#: src/emc/usr_intf/axis/scripts/axis.py:232 msgid "Pause program" msgstr "暂停" -#: src/emc/usr_intf/axis/scripts/axis.py:198 +#: src/emc/usr_intf/axis/scripts/axis.py:233 msgid "Resume program" msgstr "恢复" -#: src/emc/usr_intf/axis/scripts/axis.py:199 +#: src/emc/usr_intf/axis/scripts/axis.py:234 msgid "Stop running program, or" msgstr "停止" -#: src/emc/usr_intf/axis/scripts/axis.py:200 +#: src/emc/usr_intf/axis/scripts/axis.py:235 msgid "stop loading program preview" msgstr "停止预览路径" -#: src/emc/usr_intf/axis/scripts/axis.py:202 +#: src/emc/usr_intf/axis/scripts/axis.py:237 msgid "Toggle mist" msgstr "切换状态" -#: src/emc/usr_intf/axis/scripts/axis.py:203 +#: src/emc/usr_intf/axis/scripts/axis.py:238 msgid "Toggle flood" msgstr "反转标志" -#: src/emc/usr_intf/axis/scripts/axis.py:204 +#: src/emc/usr_intf/axis/scripts/axis.py:239 msgid "Spindle brake off" msgstr "Spindle brake off" -#: src/emc/usr_intf/axis/scripts/axis.py:205 +#: src/emc/usr_intf/axis/scripts/axis.py:240 msgid "Shift-B" msgstr "Shift+B" -#: src/emc/usr_intf/axis/scripts/axis.py:205 +#: src/emc/usr_intf/axis/scripts/axis.py:240 msgid "Spindle brake on" msgstr "Spindle brake on" -#: src/emc/usr_intf/axis/scripts/axis.py:206 +#: src/emc/usr_intf/axis/scripts/axis.py:241 msgid "Turn spindle clockwise" msgstr "顺时针转动" -#: src/emc/usr_intf/axis/scripts/axis.py:207 +#: src/emc/usr_intf/axis/scripts/axis.py:242 msgid "Turn spindle counterclockwise" msgstr "逆时针转动" -#: src/emc/usr_intf/axis/scripts/axis.py:208 +#: src/emc/usr_intf/axis/scripts/axis.py:243 msgid "Turn spindle more slowly" msgstr "Turn spindle more slowly" -#: src/emc/usr_intf/axis/scripts/axis.py:209 +#: src/emc/usr_intf/axis/scripts/axis.py:244 msgid "Turn spindle more quickly" msgstr "Turn spindle more quickly" -#: src/emc/usr_intf/axis/scripts/axis.py:211 +#: src/emc/usr_intf/axis/scripts/axis.py:246 msgid "Control-K" msgstr "Ctrl+K" -#: src/emc/usr_intf/axis/scripts/axis.py:211 +#: src/emc/usr_intf/axis/scripts/axis.py:246 msgid "Clear live plot" msgstr "清除走刀轨迹" -#: src/emc/usr_intf/axis/scripts/axis.py:212 +#: src/emc/usr_intf/axis/scripts/axis.py:247 msgid "Cycle among preset views" msgstr "Cycle among preset views" -#: src/emc/usr_intf/axis/scripts/axis.py:213 +#: src/emc/usr_intf/axis/scripts/axis.py:248 #, fuzzy msgid "Cycle among preview, DRO, and user tabs" msgstr "Cycle among preset views" -#: src/emc/usr_intf/axis/scripts/axis.py:215 +#: src/emc/usr_intf/axis/scripts/axis.py:250 #, fuzzy msgid "Ctrl-Space" msgstr "Ctrl+S" -#: src/emc/usr_intf/axis/scripts/axis.py:215 +#: src/emc/usr_intf/axis/scripts/axis.py:250 #, fuzzy msgid "Clear notifications" msgstr "默认标识" -#: src/emc/usr_intf/axis/scripts/axis.py:836 +#: src/emc/usr_intf/axis/scripts/axis.py:850 #, python-format msgid "Unknown tool %d" msgstr "未定义刀具 %d 号" -#: src/emc/usr_intf/axis/scripts/axis.py:838 +#: src/emc/usr_intf/axis/scripts/axis.py:852 msgid "No tool" msgstr "无刀具" -#: src/emc/usr_intf/axis/scripts/axis.py:840 +#: src/emc/usr_intf/axis/scripts/axis.py:854 #, python-format msgid "Tool %(tool)d, offset %(zo)g, diameter %(dia)g" msgstr "%(tool)d 号刀, 刀长 %(zo)g, 直径 %(dia)g" -#: src/emc/usr_intf/axis/scripts/axis.py:842 +#: src/emc/usr_intf/axis/scripts/axis.py:856 #, python-format msgid "Tool %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" msgstr "Tool %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" -#: src/emc/usr_intf/axis/scripts/axis.py:1013 +#: src/emc/usr_intf/axis/scripts/axis.py:1031 msgid "Filtering..." msgstr "正在过滤 %1..." -#: src/emc/usr_intf/axis/scripts/axis.py:1073 +#: src/emc/usr_intf/axis/scripts/axis.py:1102 msgid "Filter failed" msgstr "已启用过滤器" -#: src/emc/usr_intf/axis/scripts/axis.py:1074 +#: src/emc/usr_intf/axis/scripts/axis.py:1103 #, python-format msgid "" "The program %(program)r exited with code %(code)d. Any error messages it " @@ -3953,12 +5958,12 @@ msgstr "" "The program %(program)r exited with code %(code)d. Any error messages it " "produced are shown below:" -#: src/emc/usr_intf/axis/scripts/axis.py:1139 +#: src/emc/usr_intf/axis/scripts/axis.py:1171 #, python-format msgid "G-Code error in %s" msgstr "%s G-Code 错误" -#: src/emc/usr_intf/axis/scripts/axis.py:1140 +#: src/emc/usr_intf/axis/scripts/axis.py:1172 #, python-format msgid "" "Near line %(seq)d of %(f)s:\n" @@ -3967,134 +5972,137 @@ msgstr "" "Near line %(seq)d of %(f)s:\n" "%(error_str)s" -#: src/emc/usr_intf/axis/scripts/axis.py:1292 -#: src/emc/usr_intf/axis/scripts/axis.py:2725 share/axis/tcl/axis.tcl:1092 -#: share/axis/tcl/axis.tcl:1094 share/axis/tcl/axis.tcl:2144 +#: src/emc/usr_intf/axis/scripts/axis.py:1341 +#: src/emc/usr_intf/axis/scripts/axis.py:2942 share/axis/tcl/axis.tcl:1162 +#: share/axis/tcl/axis.tcl:1164 share/axis/tcl/axis.tcl:2269 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:895 msgid "Continuous" msgstr "连续" -#: src/emc/usr_intf/axis/scripts/axis.py:1403 +#: src/emc/usr_intf/axis/scripts/axis.py:1452 msgid "Ok" msgstr "确定" -#: src/emc/usr_intf/axis/scripts/axis.py:1546 +#: src/emc/usr_intf/axis/scripts/axis.py:1599 msgid "T Tool Table" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1557 -#: src/emc/usr_intf/axis/scripts/axis.py:1730 -#: src/emc/usr_intf/stepconf/stepconf.py:1691 -#: src/emc/usr_intf/stepconf/stepconf.py:2235 +#: src/emc/usr_intf/axis/scripts/axis.py:1610 +#: src/emc/usr_intf/axis/scripts/axis.py:1859 +#: src/emc/usr_intf/axis/scripts/axis.py:2387 +#: src/emc/usr_intf/stepconf/stepconf.py:1328 +#: src/emc/usr_intf/stepconf/pages.py:631 msgid "in" msgstr "英寸" -#: src/emc/usr_intf/axis/scripts/axis.py:1560 +#: src/emc/usr_intf/axis/scripts/axis.py:1613 #, fuzzy msgid " radius" msgstr "内圈半径:" -#: src/emc/usr_intf/axis/scripts/axis.py:1562 +#: src/emc/usr_intf/axis/scripts/axis.py:1615 #, fuzzy msgid " diameter" msgstr "参数" -#: src/emc/usr_intf/axis/scripts/axis.py:1563 +#: src/emc/usr_intf/axis/scripts/axis.py:1616 msgid "°" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1572 +#: src/emc/usr_intf/axis/scripts/axis.py:1625 msgid "Coordinate System:" msgstr "坐标系:" -#: src/emc/usr_intf/axis/scripts/axis.py:1588 +#: src/emc/usr_intf/axis/scripts/axis.py:1641 #, fuzzy msgid "fixture" msgstr "纹理" -#: src/emc/usr_intf/axis/scripts/axis.py:1589 +#: src/emc/usr_intf/axis/scripts/axis.py:1642 msgid "workpiece" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1605 +#: src/emc/usr_intf/axis/scripts/axis.py:1658 msgid "Name:" msgstr "名称:" -#: src/emc/usr_intf/axis/scripts/axis.py:1605 +#: src/emc/usr_intf/axis/scripts/axis.py:1658 msgid "Size:" msgstr "大小:" -#: src/emc/usr_intf/axis/scripts/axis.py:1606 +#: src/emc/usr_intf/axis/scripts/axis.py:1659 msgid "Tool order:" msgstr "刀具顺序" -#: src/emc/usr_intf/axis/scripts/axis.py:1606 +#: src/emc/usr_intf/axis/scripts/axis.py:1659 msgid "Rapid distance:" msgstr "快速移动:" -#: src/emc/usr_intf/axis/scripts/axis.py:1607 +#: src/emc/usr_intf/axis/scripts/axis.py:1660 msgid "Feed distance:" msgstr "慢速移动:" -#: src/emc/usr_intf/axis/scripts/axis.py:1607 +#: src/emc/usr_intf/axis/scripts/axis.py:1660 msgid "Total distance:" msgstr "消逝距离:" -#: src/emc/usr_intf/axis/scripts/axis.py:1608 +#: src/emc/usr_intf/axis/scripts/axis.py:1661 msgid "Run time:" msgstr "运行时间:" -#: src/emc/usr_intf/axis/scripts/axis.py:1608 +#: src/emc/usr_intf/axis/scripts/axis.py:1661 msgid "X bounds:" msgstr "X 极限:" -#: src/emc/usr_intf/axis/scripts/axis.py:1609 +#: src/emc/usr_intf/axis/scripts/axis.py:1662 msgid "Y bounds:" msgstr "Y 极限:" -#: src/emc/usr_intf/axis/scripts/axis.py:1609 +#: src/emc/usr_intf/axis/scripts/axis.py:1662 msgid "Z bounds:" msgstr "Z 极限:" -#: src/emc/usr_intf/axis/scripts/axis.py:1610 +#: src/emc/usr_intf/axis/scripts/axis.py:1663 msgid "A bounds:" msgstr "A 极限:" -#: src/emc/usr_intf/axis/scripts/axis.py:1610 +#: src/emc/usr_intf/axis/scripts/axis.py:1663 msgid "B bounds:" msgstr "B 极限:" -#: src/emc/usr_intf/axis/scripts/axis.py:1611 +#: src/emc/usr_intf/axis/scripts/axis.py:1664 msgid "C bounds:" msgstr "C 极限:" -#: src/emc/usr_intf/axis/scripts/axis.py:1635 +#: src/emc/usr_intf/axis/scripts/axis.py:1688 #, python-format msgid "Program exceeds machine minimum on axis %s" msgstr "Program exceeds machine minimum on axis %s" -#: src/emc/usr_intf/axis/scripts/axis.py:1638 +#: src/emc/usr_intf/axis/scripts/axis.py:1691 #, python-format msgid "Program exceeds machine maximum on axis %s" msgstr "Program exceeds machine maximum on axis %s" -#: src/emc/usr_intf/axis/scripts/axis.py:1643 +#: src/emc/usr_intf/axis/scripts/axis.py:1696 msgid "Program exceeds machine limits" msgstr "程序超出机床极限。" -#: src/emc/usr_intf/axis/scripts/axis.py:1646 +#: src/emc/usr_intf/axis/scripts/axis.py:1699 msgid "Run Anyway" msgstr "继续运行" -#: src/emc/usr_intf/axis/scripts/axis.py:1708 +#: src/emc/usr_intf/axis/scripts/axis.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1581 msgid "No file loaded" msgstr "没有载入文件" -#: src/emc/usr_intf/axis/scripts/axis.py:1716 +#: src/emc/usr_intf/axis/scripts/axis.py:1845 #, python-format msgid "generated from %s" msgstr "从 %s 来的消息" -#: src/emc/usr_intf/axis/scripts/axis.py:1722 +#: src/emc/usr_intf/axis/scripts/axis.py:1851 #, python-format msgid "" "%(size)s bytes\n" @@ -4103,127 +6111,148 @@ msgstr "" "%(size)s bytes\n" "%(lines)s gcode lines" -#: src/emc/usr_intf/axis/scripts/axis.py:1748 +#: src/emc/usr_intf/axis/scripts/axis.py:1877 #, python-format msgid "%.1f minutes" msgstr "%.1f 分钟" -#: src/emc/usr_intf/axis/scripts/axis.py:1750 +#: src/emc/usr_intf/axis/scripts/axis.py:1879 #, python-format msgid "%d seconds" msgstr "%d 秒" -#: src/emc/usr_intf/axis/scripts/axis.py:1758 +#: src/emc/usr_intf/axis/scripts/axis.py:1887 #, python-format msgid "%(a)f to %(b)f = %(diff)f %(units)s" msgstr "%(a)f to %(b)f = %(diff)f %(units)s" -#: src/emc/usr_intf/axis/scripts/axis.py:1759 +#: src/emc/usr_intf/axis/scripts/axis.py:1888 msgid "G-Code Properties" msgstr "G-Code 属性" -#: src/emc/usr_intf/axis/scripts/axis.py:1883 +#: src/emc/usr_intf/axis/scripts/axis.py:2021 msgid "All machinable files" msgstr "所有加工文件" -#: src/emc/usr_intf/axis/scripts/axis.py:1884 -#: src/emc/usr_intf/axis/scripts/axis.py:2464 +#: src/emc/usr_intf/axis/scripts/axis.py:2022 +#: src/emc/usr_intf/axis/scripts/axis.py:2659 msgid "rs274ngc files" msgstr "rs274ngc 格式" -#: src/emc/usr_intf/axis/scripts/axis.py:1899 +#: src/emc/usr_intf/axis/scripts/axis.py:2037 msgid "axis cannot accept remote command while running" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2255 +#: src/emc/usr_intf/axis/scripts/axis.py:2098 +#, fuzzy +msgid "File not Writable:" +msgstr "要打开的文件" + +#: src/emc/usr_intf/axis/scripts/axis.py:2099 +msgid "" +"This file is not writable\n" +"You can Edit-readonly\n" +"\n" +"or\n" +"\n" +"Save it to your own directory\n" +"then open that saved, writable file" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2106 +msgid "Edit-readonly" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2440 msgid "Axis is already homed, are you sure you want to re-home?" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2268 +#: src/emc/usr_intf/axis/scripts/axis.py:2453 msgid "This axis is already homed, are you sure you want to re-home?" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2308 share/axis/tcl/axis.tcl:1108 +#: src/emc/usr_intf/axis/scripts/axis.py:2493 share/axis/tcl/axis.tcl:1178 msgid "Touch Off" msgstr "对刀" -#: src/emc/usr_intf/axis/scripts/axis.py:2309 +#: src/emc/usr_intf/axis/scripts/axis.py:2494 #, fuzzy, python-format msgid "Enter %s coordinate relative to %%s:" msgstr "输入刀具在工件坐标系中的 %s 坐标" -#: src/emc/usr_intf/axis/scripts/axis.py:2476 +#: src/emc/usr_intf/axis/scripts/axis.py:2671 msgid "Error saving file" msgstr "保存文件时发生错误" -#: src/emc/usr_intf/axis/scripts/axis.py:2859 +#: src/emc/usr_intf/axis/scripts/axis.py:3077 #: src/emc/usr_intf/touchy/touchy.glade:577 +#: src/emc/usr_intf/gscreen/gscreen.glade:2933 msgid "Home All" msgstr "回零" -#: src/emc/usr_intf/axis/scripts/axis.py:2861 +#: src/emc/usr_intf/axis/scripts/axis.py:3079 msgid "Home all axes [Ctrl-Home]" msgstr "回零[Ctrl+Home]" -#: src/emc/usr_intf/axis/scripts/axis.py:2864 +#: src/emc/usr_intf/axis/scripts/axis.py:3082 msgid "Home All Axes" msgstr "已回零" -#: src/emc/usr_intf/axis/scripts/axis.py:2871 +#: src/emc/usr_intf/axis/scripts/axis.py:3089 msgid "Unhome All Axes" msgstr "未回零" -#: src/emc/usr_intf/axis/scripts/axis.py:2895 +#: src/emc/usr_intf/axis/scripts/axis.py:3113 #, python-format msgid "Home Axis _%s" msgstr "回零 _%s" -#: src/emc/usr_intf/axis/scripts/axis.py:2897 +#: src/emc/usr_intf/axis/scripts/axis.py:3115 #, python-format msgid "Unhome Axis _%s" msgstr "Unhome Axis _%s" -#: src/emc/usr_intf/axis/scripts/axis.py:3040 +#: src/emc/usr_intf/axis/scripts/axis.py:3282 msgid "Run from here" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:3335 +#: src/emc/usr_intf/axis/scripts/axis.py:3598 msgid "Error in ~/.axisrc" msgstr "~/.axisrc 错误" #: src/emc/usr_intf/axis/scripts/linuxcnctop.py:102 #, fuzzy -msgid "LinuxCNC Status" -msgstr "CVS 状态" +msgid "Machinekit Status" +msgstr "机床单位:" #: src/emc/usr_intf/axis/scripts/linuxcnctop.py:118 #, fuzzy msgid "Copy All" msgstr "复制 CD" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:29 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 #, python-format msgid "Insert tool %d and click continue when ready" msgstr "单击[继续]换 %d 号刀" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:31 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:39 msgid "Remove the tool and click continue when ready" msgstr "单击[继续]移除刀具" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 -#: src/emc/usr_intf/touchy/mdi.py:49 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 +#: src/emc/usr_intf/touchy/mdi.py:49 src/emc/usr_intf/gscreen/mdi.py:49 msgid "Tool change" msgstr "换刀" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 msgid "Continue" msgstr "继续" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:55 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:64 msgid "AXIS Manual Toolchanger" msgstr "手动换刀" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:59 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:68 msgid "" "This window is part of the AXIS manual toolchanger. It is safe to close or " "iconify this window, or it will close automatically after a few seconds." @@ -4422,7 +6451,7 @@ msgstr "Depth images" #: src/emc/usr_intf/axis/scripts/debuglevel.py:22 #, fuzzy -msgid "LinuxCNC Debug Level" +msgid "Machinekit Debug Level" msgstr "设置调试级别" #: src/emc/usr_intf/axis/scripts/debuglevel.py:23 @@ -4470,814 +6499,904 @@ msgstr "" msgid " * This option can only be enabled in the inifile" msgstr "" -#: share/axis/tcl/axis.tcl:49 +#: share/axis/tcl/axis.tcl:52 msgid "_Open..." msgstr "打开(_O)..." -#: share/axis/tcl/axis.tcl:53 +#: share/axis/tcl/axis.tcl:56 #, fuzzy msgid "Recent _Files" msgstr "选中的文件" -#: share/axis/tcl/axis.tcl:57 +#: share/axis/tcl/axis.tcl:60 #, fuzzy msgid "_Edit..." msgstr "编辑(_E)..." -#: share/axis/tcl/axis.tcl:60 +#: share/axis/tcl/axis.tcl:63 msgid "Ctrl-R" msgstr "Ctrl+R" -#: share/axis/tcl/axis.tcl:62 +#: share/axis/tcl/axis.tcl:65 msgid "_Reload" msgstr "重新载入(_R)" -#: share/axis/tcl/axis.tcl:65 +#: share/axis/tcl/axis.tcl:68 #, fuzzy msgid "Ctrl-S" msgstr "Ctrl+R" -#: share/axis/tcl/axis.tcl:67 +#: share/axis/tcl/axis.tcl:70 msgid "_Save gcode as..." msgstr "文件另存为(_S).." -#: share/axis/tcl/axis.tcl:71 +#: share/axis/tcl/axis.tcl:74 msgid "_Properties..." msgstr "属性(_P)..." -#: share/axis/tcl/axis.tcl:77 +#: share/axis/tcl/axis.tcl:80 msgid "Edit _tool table..." msgstr "编辑刀具表(_T)..." -#: share/axis/tcl/axis.tcl:81 +#: share/axis/tcl/axis.tcl:84 #, fuzzy msgid "Reload tool ta_ble" msgstr "重载刀具表(_B)" -#: share/axis/tcl/axis.tcl:87 +#: share/axis/tcl/axis.tcl:90 msgid "_Ladder Editor..." msgstr "梯形图编辑器(_L)..." -#: share/axis/tcl/axis.tcl:99 +#: share/axis/tcl/axis.tcl:102 msgid "Toggle _Emergency Stop" msgstr "急停(_E)" -#: share/axis/tcl/axis.tcl:104 +#: share/axis/tcl/axis.tcl:107 msgid "Toggle _Machine Power" msgstr "电源(_M)" -#: share/axis/tcl/axis.tcl:111 +#: share/axis/tcl/axis.tcl:114 msgid "_Run program" msgstr "运行(_R)" -#: share/axis/tcl/axis.tcl:115 +#: share/axis/tcl/axis.tcl:118 #, fuzzy msgid "Ru_n from selected line" msgstr "平移/旋转选区" -#: share/axis/tcl/axis.tcl:120 +#: share/axis/tcl/axis.tcl:123 #, fuzzy msgid "S_tep" msgstr "下一段(_T)" -#: share/axis/tcl/axis.tcl:125 +#: share/axis/tcl/axis.tcl:128 msgid "_Pause" msgstr "暂停(_P)" -#: share/axis/tcl/axis.tcl:130 +#: share/axis/tcl/axis.tcl:133 #, fuzzy msgid "Re_sume" msgstr "恢复(_S)" -#: share/axis/tcl/axis.tcl:140 +#: share/axis/tcl/axis.tcl:143 msgid "Stop at M_1" msgstr "选择停 M_1" -#: share/axis/tcl/axis.tcl:145 +#: share/axis/tcl/axis.tcl:148 msgid "Skip lines with '_/'" msgstr "跳段 '_/'" -#: share/axis/tcl/axis.tcl:150 +#: share/axis/tcl/axis.tcl:153 msgid "Ctrl-M" msgstr "Ctrl+M" -#: share/axis/tcl/axis.tcl:152 +#: share/axis/tcl/axis.tcl:155 msgid "Clear MDI h_istory" msgstr "清除 MDI 历史(_I)" -#: share/axis/tcl/axis.tcl:154 +#: share/axis/tcl/axis.tcl:157 msgid "Ctrl-H" msgstr "Ctrl-H" -#: share/axis/tcl/axis.tcl:156 +#: share/axis/tcl/axis.tcl:159 msgid "Copy from MDI hist_ory" msgstr "复制 MDI 记录(_O)" -#: share/axis/tcl/axis.tcl:158 +#: share/axis/tcl/axis.tcl:161 msgid "Ctrl-Shift-H" msgstr "Ctrl+Shift+H" -#: share/axis/tcl/axis.tcl:160 +#: share/axis/tcl/axis.tcl:163 msgid "Paste to MDI histor_y" msgstr "粘贴 MDI 记录(_Y)" -#: share/axis/tcl/axis.tcl:166 +#: share/axis/tcl/axis.tcl:169 msgid "_Calibration" msgstr "校准(C)" -#: share/axis/tcl/axis.tcl:170 +#: share/axis/tcl/axis.tcl:173 msgid "Show _Hal Configuration" msgstr "显示 _Hal 配置" -#: share/axis/tcl/axis.tcl:174 +#: share/axis/tcl/axis.tcl:177 #, fuzzy msgid "H_al Meter" msgstr "H_al Meter" -#: share/axis/tcl/axis.tcl:178 +#: share/axis/tcl/axis.tcl:181 #, fuzzy msgid "Ha_l Scope" msgstr "Ha_l Scope" -#: share/axis/tcl/axis.tcl:182 +#: share/axis/tcl/axis.tcl:185 #, fuzzy -msgid "Sho_w LinuxCNC Status" +msgid "Sho_w Machinekit Status" msgstr "显示 EMC 状态" -#: share/axis/tcl/axis.tcl:186 +#: share/axis/tcl/axis.tcl:189 #, fuzzy msgid "Set _Debug Level" msgstr "设置调试级别" -#: share/axis/tcl/axis.tcl:192 +#: share/axis/tcl/axis.tcl:195 msgid "Homin_g" msgstr "Ha_l Scope" -#: share/axis/tcl/axis.tcl:196 +#: share/axis/tcl/axis.tcl:199 msgid "_Unhoming" msgstr "_Unhoming" -#: share/axis/tcl/axis.tcl:200 +#: share/axis/tcl/axis.tcl:203 msgid "_Zero coordinate system" msgstr "坐标系(_Z)" -#: share/axis/tcl/axis.tcl:204 +#: share/axis/tcl/axis.tcl:207 msgid "P1 G5_4" msgstr "P1 G5_4" -#: share/axis/tcl/axis.tcl:208 +#: share/axis/tcl/axis.tcl:211 msgid "P2 G5_5" msgstr "P2 G5_5" -#: share/axis/tcl/axis.tcl:212 +#: share/axis/tcl/axis.tcl:215 msgid "P3 G5_6" msgstr "P3 G5_6" -#: share/axis/tcl/axis.tcl:216 +#: share/axis/tcl/axis.tcl:219 msgid "P4 G5_7" msgstr "P4 G5_7" -#: share/axis/tcl/axis.tcl:220 +#: share/axis/tcl/axis.tcl:223 msgid "P5 G5_8" msgstr "P5 G5_8" -#: share/axis/tcl/axis.tcl:224 +#: share/axis/tcl/axis.tcl:227 msgid "P6 G5_9" msgstr "P6 G5_9" -#: share/axis/tcl/axis.tcl:228 +#: share/axis/tcl/axis.tcl:231 msgid "P7 G59._1" msgstr "P7 G59._1" -#: share/axis/tcl/axis.tcl:232 +#: share/axis/tcl/axis.tcl:235 msgid "P8 G59._2" msgstr "P8 G59._2" -#: share/axis/tcl/axis.tcl:236 +#: share/axis/tcl/axis.tcl:239 msgid "P9 G59._3" msgstr "P9 G59._3" -#: share/axis/tcl/axis.tcl:240 +#: share/axis/tcl/axis.tcl:243 msgid "_G92" msgstr "_G92" -#: share/axis/tcl/axis.tcl:248 +#: share/axis/tcl/axis.tcl:251 msgid "Tool touch off to wor_kpiece" msgstr "" -#: share/axis/tcl/axis.tcl:254 +#: share/axis/tcl/axis.tcl:257 msgid "Tool touch off to _fixture" msgstr "" -#: share/axis/tcl/axis.tcl:262 +#: share/axis/tcl/axis.tcl:265 msgid "_Top view" msgstr "顶视图XY(_T)" -#: share/axis/tcl/axis.tcl:269 +#: share/axis/tcl/axis.tcl:272 msgid "_Rotated Top view" msgstr "顶视图YX(_R)" -#: share/axis/tcl/axis.tcl:276 +#: share/axis/tcl/axis.tcl:279 msgid "_Side view" msgstr "右视图(_S)" -#: share/axis/tcl/axis.tcl:283 +#: share/axis/tcl/axis.tcl:286 msgid "_Front view" msgstr "前视图(_F)" -#: share/axis/tcl/axis.tcl:290 +#: share/axis/tcl/axis.tcl:293 msgid "_Perspective view" msgstr "轴测图(_P)" -#: share/axis/tcl/axis.tcl:299 +#: share/axis/tcl/axis.tcl:302 msgid "Display _Inches" msgstr "显示英寸(_I)" -#: share/axis/tcl/axis.tcl:306 +#: share/axis/tcl/axis.tcl:309 msgid "Display _MM" msgstr "显示毫米(_M)" -#: share/axis/tcl/axis.tcl:313 +#: share/axis/tcl/axis.tcl:316 msgid "S_how program" msgstr "显示加工路径[_S]" -#: share/axis/tcl/axis.tcl:318 +#: share/axis/tcl/axis.tcl:321 #, fuzzy msgid "Show program r_apids" msgstr "显示加工路径[_S]" -#: share/axis/tcl/axis.tcl:323 +#: share/axis/tcl/axis.tcl:326 #, fuzzy msgid "Alpha-_blend program" msgstr "打开程序:" -#: share/axis/tcl/axis.tcl:328 +#: share/axis/tcl/axis.tcl:331 msgid "Sho_w live plot" msgstr "显示走刀轨迹(_W)" -#: share/axis/tcl/axis.tcl:333 +#: share/axis/tcl/axis.tcl:336 msgid "Show too_l" msgstr "显示刀具(_l)" -#: share/axis/tcl/axis.tcl:338 +#: share/axis/tcl/axis.tcl:341 msgid "Show e_xtents" msgstr "显示加工范围(_E)" -#: share/axis/tcl/axis.tcl:343 +#: share/axis/tcl/axis.tcl:345 +#, fuzzy +msgid "_Grid" +msgstr "网格" + +#: share/axis/tcl/axis.tcl:350 #, fuzzy msgid "Show o_ffsets" msgstr "显示偏移值列" -#: share/axis/tcl/axis.tcl:348 +#: share/axis/tcl/axis.tcl:355 msgid "Sh_ow machine limits" msgstr "显示机床边界(_O)" -#: share/axis/tcl/axis.tcl:353 +#: share/axis/tcl/axis.tcl:360 msgid "Show v_elocity" msgstr "显示速度(_E)" -#: share/axis/tcl/axis.tcl:358 +#: share/axis/tcl/axis.tcl:365 msgid "Show _distance to go" msgstr "显示目标距离(_D)" -#: share/axis/tcl/axis.tcl:363 +#: share/axis/tcl/axis.tcl:370 #, fuzzy msgid "Large coordinate fo_nt" msgstr "坐标系(_Z)" -#: share/axis/tcl/axis.tcl:366 +#: share/axis/tcl/axis.tcl:373 msgid "Ctrl-K" msgstr "Ctrl+K" -#: share/axis/tcl/axis.tcl:368 +#: share/axis/tcl/axis.tcl:375 msgid "_Clear live plot" msgstr "清除走刀轨迹(_C)" -#: share/axis/tcl/axis.tcl:377 +#: share/axis/tcl/axis.tcl:384 #, fuzzy msgid "Show commanded position" msgstr "显示机床坐标" -#: share/axis/tcl/axis.tcl:384 +#: share/axis/tcl/axis.tcl:391 #, fuzzy msgid "Show actual position" msgstr "显示机床坐标" -#: share/axis/tcl/axis.tcl:393 +#: share/axis/tcl/axis.tcl:400 msgid "Show machine position" msgstr "显示机床坐标" -#: share/axis/tcl/axis.tcl:400 +#: share/axis/tcl/axis.tcl:407 #, fuzzy msgid "Show relative position" msgstr "显示机床坐标" -#: share/axis/tcl/axis.tcl:409 +#: share/axis/tcl/axis.tcl:416 msgid "Joint mode" msgstr "混合模式" -#: share/axis/tcl/axis.tcl:416 +#: share/axis/tcl/axis.tcl:423 msgid "World mode" msgstr "世界方式" -#: share/axis/tcl/axis.tcl:425 +#: share/axis/tcl/axis.tcl:431 +msgid "_Off" +msgstr "" + +#: share/axis/tcl/axis.tcl:437 +#, fuzzy +msgid "_Custom" +msgstr "自定义" + +#: share/axis/tcl/axis.tcl:443 +#, fuzzy +msgid "User_0" +msgstr "用户" + +#: share/axis/tcl/axis.tcl:447 +#, fuzzy +msgid "User_1" +msgstr "用户" + +#: share/axis/tcl/axis.tcl:451 +#, fuzzy +msgid "User_2" +msgstr "用户" + +#: share/axis/tcl/axis.tcl:455 +#, fuzzy +msgid "User_3" +msgstr "用户" + +#: share/axis/tcl/axis.tcl:459 +#, fuzzy +msgid "User_4" +msgstr "用户" + +#: share/axis/tcl/axis.tcl:463 +#, fuzzy +msgid "User_5" +msgstr "用户" + +#: share/axis/tcl/axis.tcl:467 +#, fuzzy +msgid "User_6" +msgstr "用户" + +#: share/axis/tcl/axis.tcl:471 +#, fuzzy +msgid "User_7" +msgstr "用户" + +#: share/axis/tcl/axis.tcl:475 +#, fuzzy +msgid "User_8" +msgstr "用户" + +#: share/axis/tcl/axis.tcl:479 +#, fuzzy +msgid "User_9" +msgstr "用户" + +#: share/axis/tcl/axis.tcl:491 msgid "_About AXIS" msgstr "关于(_A)" -#: share/axis/tcl/axis.tcl:429 +#: share/axis/tcl/axis.tcl:495 msgid "Quick _Reference" msgstr "快捷键(_R)" -#: share/axis/tcl/axis.tcl:439 +#: share/axis/tcl/axis.tcl:505 #, fuzzy msgid "_Machine" msgstr "机床" -#: share/axis/tcl/axis.tcl:443 +#: share/axis/tcl/axis.tcl:509 msgid "_View" msgstr "视图(_V)" -#: share/axis/tcl/axis.tcl:456 +#: share/axis/tcl/axis.tcl:513 +#, fuzzy +msgid "_User" +msgstr "用户(_U):" + +#: share/axis/tcl/axis.tcl:526 msgid "Toggle Emergency Stop [F1]" msgstr "急停 [F1]" -#: share/axis/tcl/axis.tcl:465 +#: share/axis/tcl/axis.tcl:535 msgid "Toggle Machine power [F2]" msgstr "电源[F2]" -#: share/axis/tcl/axis.tcl:476 +#: share/axis/tcl/axis.tcl:546 msgid "Open G-Code file [O]" msgstr "打开[O]" -#: share/axis/tcl/axis.tcl:484 +#: share/axis/tcl/axis.tcl:554 msgid "Reopen current file [Control-R]" msgstr "重载[Ctrl+R]" -#: share/axis/tcl/axis.tcl:494 +#: share/axis/tcl/axis.tcl:564 msgid "Begin executing current file [R]" msgstr "运行[R]" -#: share/axis/tcl/axis.tcl:502 +#: share/axis/tcl/axis.tcl:572 msgid "Execute next line [T]" msgstr "下一段[T]" -#: share/axis/tcl/axis.tcl:510 +#: share/axis/tcl/axis.tcl:580 msgid "Pause [P] / resume [S] execution" msgstr "暂停[P]/恢复[S]" -#: share/axis/tcl/axis.tcl:518 +#: share/axis/tcl/axis.tcl:588 msgid "Stop program execution [ESC]" msgstr "停止[ESC]" -#: share/axis/tcl/axis.tcl:528 +#: share/axis/tcl/axis.tcl:598 #, fuzzy msgid "Toggle skip lines with '/' [Alt-M /]" msgstr "跳段 '_/'" -#: share/axis/tcl/axis.tcl:535 +#: share/axis/tcl/axis.tcl:605 msgid "Toggle optional pause [Alt-M 1]" msgstr "" -#: share/axis/tcl/axis.tcl:544 +#: share/axis/tcl/axis.tcl:614 src/emc/usr_intf/gmoccapy/gmoccapy.glade:549 msgid "Zoom in" msgstr "放大" -#: share/axis/tcl/axis.tcl:552 +#: share/axis/tcl/axis.tcl:622 src/emc/usr_intf/gmoccapy/gmoccapy.glade:567 msgid "Zoom out" msgstr "缩小" -#: share/axis/tcl/axis.tcl:560 +#: share/axis/tcl/axis.tcl:630 msgid "Top view" msgstr "顶视图XY" -#: share/axis/tcl/axis.tcl:568 +#: share/axis/tcl/axis.tcl:638 msgid "Rotated top view" msgstr "顶视图YX" -#: share/axis/tcl/axis.tcl:576 +#: share/axis/tcl/axis.tcl:646 msgid "Side view" msgstr "右视图" -#: share/axis/tcl/axis.tcl:584 +#: share/axis/tcl/axis.tcl:654 msgid "Front view" msgstr "前视图" -#: share/axis/tcl/axis.tcl:592 +#: share/axis/tcl/axis.tcl:662 msgid "Perspective view" msgstr "轴测图" -#: share/axis/tcl/axis.tcl:600 +#: share/axis/tcl/axis.tcl:670 msgid "Toggle between Drag and Rotate Mode [D]" msgstr "平移/旋转[D]" -#: share/axis/tcl/axis.tcl:615 +#: share/axis/tcl/axis.tcl:685 msgid "Clear live plot [Ctrl-K]" msgstr "清除走刀轨迹[Ctrl+K]" -#: share/axis/tcl/axis.tcl:766 +#: share/axis/tcl/axis.tcl:836 msgid "Manual Control [F3]" msgstr "手动控制[F3]" -#: share/axis/tcl/axis.tcl:767 +#: share/axis/tcl/axis.tcl:837 msgid "MDI [F5]" msgstr "MDI [F5]" -#: share/axis/tcl/axis.tcl:781 share/axis/tcl/axis.tcl:2036 -#: share/axis/tcl/axis.tcl:2203 +#: share/axis/tcl/axis.tcl:851 share/axis/tcl/axis.tcl:2158 +#: share/axis/tcl/axis.tcl:2328 #, fuzzy msgid "Axis:" msgstr "轴:" -#: share/axis/tcl/axis.tcl:1102 +#: share/axis/tcl/axis.tcl:1172 src/emc/usr_intf/gscreen/gscreen.glade:2944 msgid "Home Axis" msgstr "轴回零" -#: share/axis/tcl/axis.tcl:1176 +#: share/axis/tcl/axis.tcl:1246 msgid "Spindle:" msgstr "主轴:" -#: share/axis/tcl/axis.tcl:1223 src/emc/usr_intf/touchy/touchy.glade:946 +#: share/axis/tcl/axis.tcl:1293 src/emc/usr_intf/touchy/touchy.glade:946 +#: src/emc/usr_intf/stepconf/main_page.glade:406 +#: src/emc/usr_intf/gscreen/gscreen.glade:4067 msgid "-" msgstr "-" -#: share/axis/tcl/axis.tcl:1237 +#: share/axis/tcl/axis.tcl:1307 src/emc/usr_intf/stepconf/main_page.glade:403 +#: src/emc/usr_intf/gscreen/gscreen.glade:4056 msgid "+" msgstr "+" -#: share/axis/tcl/axis.tcl:1242 +#: share/axis/tcl/axis.tcl:1312 #, fuzzy msgid "Brake" msgstr "刹车" -#: share/axis/tcl/axis.tcl:1289 +#: share/axis/tcl/axis.tcl:1359 msgid "Coolant:" msgstr "冷却" -#: share/axis/tcl/axis.tcl:1294 +#: share/axis/tcl/axis.tcl:1364 #, fuzzy msgid "Mist" msgstr "列表" -#: share/axis/tcl/axis.tcl:1299 +#: share/axis/tcl/axis.tcl:1369 #, fuzzy msgid "Flood" msgstr "Flood" -#: share/axis/tcl/axis.tcl:1371 +#: share/axis/tcl/axis.tcl:1441 msgid "History:" msgstr "历史:" -#: share/axis/tcl/axis.tcl:1394 +#: share/axis/tcl/axis.tcl:1464 msgid "MDI Command:" msgstr "MDI 命令:" -#: share/axis/tcl/axis.tcl:1403 +#: share/axis/tcl/axis.tcl:1473 msgid "Go" msgstr "执行" -#: share/axis/tcl/axis.tcl:1409 +#: share/axis/tcl/axis.tcl:1479 #, fuzzy msgid "Active G-Codes:" msgstr "激活的G指令:" -#: share/axis/tcl/axis.tcl:1487 +#: share/axis/tcl/axis.tcl:1557 src/emc/usr_intf/gmoccapy/gmoccapy.glade:771 msgid "Preview" msgstr "预览" -#: share/axis/tcl/axis.tcl:1488 +#: share/axis/tcl/axis.tcl:1558 msgid "DRO" msgstr "" -#: share/axis/tcl/axis.tcl:1575 share/axis/tcl/axis.tcl:1588 +#: share/axis/tcl/axis.tcl:1645 share/axis/tcl/axis.tcl:1658 #, fuzzy msgid "Jog Speed:" msgstr "手动速度:" -#: share/axis/tcl/axis.tcl:1600 +#: share/axis/tcl/axis.tcl:1670 #, fuzzy msgid "Max Velocity:" msgstr "最大速度(_V):" -#: share/axis/tcl/axis.tcl:1629 +#: share/axis/tcl/axis.tcl:1699 #, fuzzy msgid "Spindle Override:" msgstr "主轴倍率:" -#: share/axis/tcl/axis.tcl:1631 share/axis/tcl/axis.tcl:1671 -#: src/emc/usr_intf/pncconf/pncconf.glade:3141 -#: src/emc/usr_intf/pncconf/pncconf.glade:3154 -#: src/emc/usr_intf/pncconf/pncconf.glade:3167 -#: src/emc/usr_intf/pncconf/pncconf.glade:3180 -#: src/emc/usr_intf/pncconf/pncconf.glade:3193 -#: src/emc/usr_intf/pncconf/pncconf.glade:3206 -#: src/emc/usr_intf/pncconf/pncconf.glade:3219 -#: src/emc/usr_intf/pncconf/pncconf.glade:3232 -#: src/emc/usr_intf/pncconf/pncconf.glade:3345 -#: src/emc/usr_intf/pncconf/pncconf.glade:3358 -#: src/emc/usr_intf/pncconf/pncconf.glade:3371 -#: src/emc/usr_intf/pncconf/pncconf.glade:3384 -#: src/emc/usr_intf/pncconf/pncconf.glade:3397 -#: src/emc/usr_intf/pncconf/pncconf.glade:3410 -#: src/emc/usr_intf/pncconf/pncconf.glade:3516 -#: src/emc/usr_intf/pncconf/pncconf.glade:3527 -#: src/emc/usr_intf/pncconf/pncconf.glade:4022 -#: src/emc/usr_intf/pncconf/pncconf.glade:4035 -#: src/emc/usr_intf/pncconf/pncconf.glade:4048 -#: src/emc/usr_intf/pncconf/pncconf.glade:4061 -#: src/emc/usr_intf/pncconf/pncconf.glade:4074 -#: src/emc/usr_intf/pncconf/pncconf.glade:4087 -#: src/emc/usr_intf/pncconf/pncconf.glade:4100 -#: src/emc/usr_intf/pncconf/pncconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:4226 -#: src/emc/usr_intf/pncconf/pncconf.glade:4239 -#: src/emc/usr_intf/pncconf/pncconf.glade:4252 -#: src/emc/usr_intf/pncconf/pncconf.glade:4265 -#: src/emc/usr_intf/pncconf/pncconf.glade:4278 -#: src/emc/usr_intf/pncconf/pncconf.glade:4291 -#: src/emc/usr_intf/pncconf/pncconf.glade:4397 -#: src/emc/usr_intf/pncconf/pncconf.glade:4408 -#: src/emc/usr_intf/pncconf/pncconf.glade:4903 -#: src/emc/usr_intf/pncconf/pncconf.glade:4916 -#: src/emc/usr_intf/pncconf/pncconf.glade:4929 -#: src/emc/usr_intf/pncconf/pncconf.glade:4942 -#: src/emc/usr_intf/pncconf/pncconf.glade:4955 -#: src/emc/usr_intf/pncconf/pncconf.glade:4968 -#: src/emc/usr_intf/pncconf/pncconf.glade:4981 -#: src/emc/usr_intf/pncconf/pncconf.glade:4994 -#: src/emc/usr_intf/pncconf/pncconf.glade:5107 -#: src/emc/usr_intf/pncconf/pncconf.glade:5120 -#: src/emc/usr_intf/pncconf/pncconf.glade:5133 -#: src/emc/usr_intf/pncconf/pncconf.glade:5146 -#: src/emc/usr_intf/pncconf/pncconf.glade:5159 -#: src/emc/usr_intf/pncconf/pncconf.glade:5172 -#: src/emc/usr_intf/pncconf/pncconf.glade:5278 -#: src/emc/usr_intf/pncconf/pncconf.glade:5289 -#: src/emc/usr_intf/pncconf/pncconf.glade:5582 +#: share/axis/tcl/axis.tcl:1701 share/axis/tcl/axis.tcl:1741 +#: share/axis/tcl/axis.tcl:1779 src/emc/usr_intf/pncconf/pncconf.glade:2834 +#: src/emc/usr_intf/pncconf/pncconf.glade:2845 +#: src/emc/usr_intf/pncconf/pncconf.glade:2949 +#: src/emc/usr_intf/pncconf/pncconf.glade:2962 +#: src/emc/usr_intf/pncconf/pncconf.glade:2975 +#: src/emc/usr_intf/pncconf/pncconf.glade:2988 +#: src/emc/usr_intf/pncconf/pncconf.glade:3001 +#: src/emc/usr_intf/pncconf/pncconf.glade:3014 +#: src/emc/usr_intf/pncconf/pncconf.glade:3127 +#: src/emc/usr_intf/pncconf/pncconf.glade:3140 +#: src/emc/usr_intf/pncconf/pncconf.glade:3153 +#: src/emc/usr_intf/pncconf/pncconf.glade:3166 +#: src/emc/usr_intf/pncconf/pncconf.glade:3179 +#: src/emc/usr_intf/pncconf/pncconf.glade:3192 +#: src/emc/usr_intf/pncconf/pncconf.glade:3205 +#: src/emc/usr_intf/pncconf/pncconf.glade:3218 +#: src/emc/usr_intf/pncconf/pncconf.glade:3715 +#: src/emc/usr_intf/pncconf/pncconf.glade:3726 +#: src/emc/usr_intf/pncconf/pncconf.glade:3830 +#: src/emc/usr_intf/pncconf/pncconf.glade:3843 +#: src/emc/usr_intf/pncconf/pncconf.glade:3856 +#: src/emc/usr_intf/pncconf/pncconf.glade:3869 +#: src/emc/usr_intf/pncconf/pncconf.glade:3882 +#: src/emc/usr_intf/pncconf/pncconf.glade:3895 +#: src/emc/usr_intf/pncconf/pncconf.glade:4008 +#: src/emc/usr_intf/pncconf/pncconf.glade:4021 +#: src/emc/usr_intf/pncconf/pncconf.glade:4034 +#: src/emc/usr_intf/pncconf/pncconf.glade:4047 +#: src/emc/usr_intf/pncconf/pncconf.glade:4060 +#: src/emc/usr_intf/pncconf/pncconf.glade:4073 +#: src/emc/usr_intf/pncconf/pncconf.glade:4086 +#: src/emc/usr_intf/pncconf/pncconf.glade:4099 +#: src/emc/usr_intf/pncconf/pncconf.glade:4596 +#: src/emc/usr_intf/pncconf/pncconf.glade:4607 +#: src/emc/usr_intf/pncconf/pncconf.glade:4711 +#: src/emc/usr_intf/pncconf/pncconf.glade:4724 +#: src/emc/usr_intf/pncconf/pncconf.glade:4737 +#: src/emc/usr_intf/pncconf/pncconf.glade:4750 +#: src/emc/usr_intf/pncconf/pncconf.glade:4763 +#: src/emc/usr_intf/pncconf/pncconf.glade:4776 +#: src/emc/usr_intf/pncconf/pncconf.glade:4889 +#: src/emc/usr_intf/pncconf/pncconf.glade:4902 +#: src/emc/usr_intf/pncconf/pncconf.glade:4915 +#: src/emc/usr_intf/pncconf/pncconf.glade:4928 +#: src/emc/usr_intf/pncconf/pncconf.glade:4941 +#: src/emc/usr_intf/pncconf/pncconf.glade:4954 +#: src/emc/usr_intf/pncconf/pncconf.glade:4967 +#: src/emc/usr_intf/pncconf/pncconf.glade:4980 #: src/emc/usr_intf/pncconf/pncconf.glade:5631 -#: src/emc/usr_intf/pncconf/pncconf.glade:5641 +#: src/emc/usr_intf/pncconf/pncconf.glade:5643 +#: src/emc/usr_intf/pncconf/pncconf.glade:5690 msgid "%" msgstr "%" -#: share/axis/tcl/axis.tcl:1711 +#: share/axis/tcl/axis.tcl:1777 +#, fuzzy +msgid "Rapid Override:" +msgstr "主轴倍率:" + +#: share/axis/tcl/axis.tcl:1819 #, fuzzy msgid "" -"LinuxCNC/AXIS version $version\n" +"Machinekit/AXIS version $version\n" "\n" -"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff Epler and Chris " -"Radek.\n" +"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff " +"Epler and Chris Radek.\n" "\n" "This is free software, and you are welcome to redistribute it under certain " -"conditions. See the file COPYING, included with LinuxCNC.\n" +"conditions. See the file COPYING, included with Machinekit.\n" "\n" -"Visit the LinuxCNC web site: " +"Visit the Machinekit web site: " msgstr "" "LinuxCNC/AXIS 版本 $version\n" "\n" -"版权 (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff Epler 和 Chris Radek. \n" +"版权 (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff Epler 和 " +"Chris Radek. \n" "\n" "这是一个自由软件,我们欢迎你重新分发本软件,请看在LinuxCNC中的许可协议。\n" "\n" "请浏览LinuxCNC网站:" -#: share/axis/tcl/axis.tcl:1739 +#: share/axis/tcl/axis.tcl:1847 msgid "About AXIS" msgstr "轴" -#: share/axis/tcl/axis.tcl:1768 +#: share/axis/tcl/axis.tcl:1876 msgid "AXIS Quick Reference" msgstr "轴快速回参考点" -#: share/axis/tcl/axis.tcl:1903 -msgid "AXIS $::version on $::machine" +#: share/axis/tcl/axis.tcl:2017 +msgid "AXIS with MachineKit $::version on $::machine" msgstr "" -#: share/axis/tcl/axis.tcl:1905 +#: share/axis/tcl/axis.tcl:2019 #, fuzzy msgid "(no file)" msgstr "日志文件:" -#: share/axis/tcl/axis.tcl:1976 share/axis/tcl/axis.tcl:1981 +#: share/axis/tcl/axis.tcl:2091 share/axis/tcl/axis.tcl:2096 msgid "Position:" msgstr "坐标" -#: share/axis/tcl/axis.tcl:1978 +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/gscreen/gscreen.py:3516 #, fuzzy msgid "Machine" msgstr "机床" -#: share/axis/tcl/axis.tcl:1978 src/emc/usr_intf/touchy/touchy.glade:155 +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/touchy/touchy.glade:155 #, fuzzy msgid "Relative" msgstr "工件" -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3329 +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3329 #, fuzzy msgid "Actual" msgstr "实际" -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3318 +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3318 #, fuzzy msgid "Commanded" msgstr "指令" -#: share/axis/tcl/axis.tcl:2032 share/axis/tcl/axis.tcl:2203 +#: share/axis/tcl/axis.tcl:2154 share/axis/tcl/axis.tcl:2328 #, fuzzy msgid "Joint:" msgstr "提示" -#: share/axis/tcl/axis.tcl:2338 +#: share/axis/tcl/axis.tcl:2463 msgid "Turn spindle counterclockwise [F10]" msgstr "反转" -#: share/axis/tcl/axis.tcl:2339 +#: share/axis/tcl/axis.tcl:2464 msgid "Turn spindle clockwise [F9]" msgstr "主轴正转[F9]" -#: share/axis/tcl/axis.tcl:2340 +#: share/axis/tcl/axis.tcl:2465 msgid "Stop spindle [F9/F10]" msgstr "主轴停" -#: share/axis/tcl/axis.tcl:2341 +#: share/axis/tcl/axis.tcl:2466 msgid "Turn spindle Faster [F12]" msgstr "主轴加速[F12]" -#: share/axis/tcl/axis.tcl:2342 +#: share/axis/tcl/axis.tcl:2467 msgid "Turn spindle Slower [F11]" msgstr "主轴减速[F11]" -#: share/axis/tcl/axis.tcl:2343 +#: share/axis/tcl/axis.tcl:2468 msgid "Turn spindle brake on [Shift-B] or off [B]" msgstr "Turn spindle brake on [Shift-B] or off [B]" -#: share/axis/tcl/axis.tcl:2344 +#: share/axis/tcl/axis.tcl:2469 msgid "Turn flood on or off [F8]" msgstr "流状开/关 [F8]" -#: share/axis/tcl/axis.tcl:2345 +#: share/axis/tcl/axis.tcl:2470 msgid "Turn mist on or off [F7]" msgstr "雾化开/关[F7]" -#: share/axis/tcl/axis.tcl:2346 +#: share/axis/tcl/axis.tcl:2471 msgid "Send active axis home [Home]" msgstr "Send active axis home [Home]" -#: share/axis/tcl/axis.tcl:2347 +#: share/axis/tcl/axis.tcl:2472 msgid "Set G54 offset for active axis [End]" msgstr "设置 G54 偏制" -#: share/axis/tcl/axis.tcl:2348 +#: share/axis/tcl/axis.tcl:2473 msgid "Activate axis [X]" msgstr "激活X轴" -#: share/axis/tcl/axis.tcl:2349 +#: share/axis/tcl/axis.tcl:2474 msgid "Activate axis [Y]" msgstr "激活Y轴" -#: share/axis/tcl/axis.tcl:2350 +#: share/axis/tcl/axis.tcl:2475 msgid "Activate axis [Z]" msgstr "激活Z轴" -#: share/axis/tcl/axis.tcl:2351 +#: share/axis/tcl/axis.tcl:2476 msgid "Activate axis [A]" msgstr "激活A轴" -#: share/axis/tcl/axis.tcl:2352 +#: share/axis/tcl/axis.tcl:2477 msgid "Activate axis [4]" msgstr "激活第4轴" -#: share/axis/tcl/axis.tcl:2353 +#: share/axis/tcl/axis.tcl:2478 msgid "Activate axis [5]" msgstr "激活第5轴" -#: share/axis/tcl/axis.tcl:2354 share/axis/tcl/axis.tcl:2355 +#: share/axis/tcl/axis.tcl:2479 share/axis/tcl/axis.tcl:2480 msgid "Jog selected axis" msgstr "手动轴" -#: share/axis/tcl/axis.tcl:2357 +#: share/axis/tcl/axis.tcl:2482 msgid "Temporarily allow jogging outside machine limits [L]" msgstr "Temporarily allow jogging outside machine limits [L]" -#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 +#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:47 msgid "Spindle CW" msgstr "主轴正转" -#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 +#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:48 msgid "Spindle CCW" msgstr "主轴反转" #: src/emc/usr_intf/touchy/mdi.py:50 #, fuzzy +msgid "Set tool number" +msgstr "显示行号" + +#: src/emc/usr_intf/touchy/mdi.py:51 src/emc/usr_intf/gscreen/mdi.py:50 +#, fuzzy msgid "Input control" msgstr "手动控制" -#: src/emc/usr_intf/touchy/mdi.py:53 src/emc/usr_intf/touchy/mdi.py:54 +#: src/emc/usr_intf/touchy/mdi.py:54 src/emc/usr_intf/touchy/mdi.py:55 +#: src/emc/usr_intf/gscreen/mdi.py:53 src/emc/usr_intf/gscreen/mdi.py:54 msgid "Straight rapid" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:55 src/emc/usr_intf/touchy/mdi.py:56 +#: src/emc/usr_intf/touchy/mdi.py:56 src/emc/usr_intf/touchy/mdi.py:57 +#: src/emc/usr_intf/gscreen/mdi.py:55 src/emc/usr_intf/gscreen/mdi.py:56 msgid "Straight feed" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:57 src/emc/usr_intf/touchy/mdi.py:58 +#: src/emc/usr_intf/touchy/mdi.py:58 src/emc/usr_intf/touchy/mdi.py:59 +#: src/emc/usr_intf/gscreen/mdi.py:57 src/emc/usr_intf/gscreen/mdi.py:58 msgid "Arc CW" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:59 src/emc/usr_intf/touchy/mdi.py:60 +#: src/emc/usr_intf/touchy/mdi.py:60 src/emc/usr_intf/touchy/mdi.py:61 +#: src/emc/usr_intf/gscreen/mdi.py:59 src/emc/usr_intf/gscreen/mdi.py:60 msgid "Arc CCW" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:61 src/emc/usr_intf/touchy/mdi.py:62 +#: src/emc/usr_intf/touchy/mdi.py:62 src/emc/usr_intf/touchy/mdi.py:63 +#: src/emc/usr_intf/gscreen/mdi.py:61 src/emc/usr_intf/gscreen/mdi.py:62 msgid "Dwell" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:63 +#: src/emc/usr_intf/touchy/mdi.py:64 src/emc/usr_intf/gscreen/mdi.py:63 msgid "Setup" msgstr "设置" -#: src/emc/usr_intf/touchy/mdi.py:64 +#: src/emc/usr_intf/touchy/mdi.py:65 src/emc/usr_intf/gscreen/mdi.py:64 #, fuzzy msgid "Spindle synchronized feed" msgstr "同步" -#: src/emc/usr_intf/touchy/mdi.py:65 +#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:65 msgid "Rigid tap" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/touchy/mdi.py:67 -#: src/emc/usr_intf/touchy/mdi.py:68 src/emc/usr_intf/touchy/mdi.py:69 +#: src/emc/usr_intf/touchy/mdi.py:67 src/emc/usr_intf/touchy/mdi.py:68 +#: src/emc/usr_intf/touchy/mdi.py:69 src/emc/usr_intf/touchy/mdi.py:70 +#: src/emc/usr_intf/gscreen/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:67 +#: src/emc/usr_intf/gscreen/mdi.py:68 src/emc/usr_intf/gscreen/mdi.py:69 #, fuzzy msgid "Probe" msgstr "探测" -#: src/emc/usr_intf/touchy/mdi.py:70 +#: src/emc/usr_intf/touchy/mdi.py:71 src/emc/usr_intf/gscreen/mdi.py:70 #, fuzzy msgid "Radius compensation left" msgstr "操作失败。" -#: src/emc/usr_intf/touchy/mdi.py:71 +#: src/emc/usr_intf/touchy/mdi.py:72 src/emc/usr_intf/gscreen/mdi.py:71 #, fuzzy msgid "Radius compensation right" msgstr "操作失败。" -#: src/emc/usr_intf/touchy/mdi.py:72 +#: src/emc/usr_intf/touchy/mdi.py:73 src/emc/usr_intf/gscreen/mdi.py:72 msgid "Radius compensation left, immediate" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:73 +#: src/emc/usr_intf/touchy/mdi.py:74 src/emc/usr_intf/gscreen/mdi.py:73 msgid "Radius compensation right, immediate" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:74 +#: src/emc/usr_intf/touchy/mdi.py:75 src/emc/usr_intf/gscreen/mdi.py:74 msgid "Tool length offset" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:75 +#: src/emc/usr_intf/touchy/mdi.py:76 src/emc/usr_intf/gscreen/mdi.py:75 msgid "Tool length offset immediate" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:76 +#: src/emc/usr_intf/touchy/mdi.py:77 src/emc/usr_intf/gscreen/mdi.py:76 msgid "Motion in unoffset coordinates" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:77 +#: src/emc/usr_intf/touchy/mdi.py:78 src/emc/usr_intf/gscreen/mdi.py:77 #, fuzzy msgid "Continuous mode" msgstr "连续" -#: src/emc/usr_intf/touchy/mdi.py:79 +#: src/emc/usr_intf/touchy/mdi.py:80 src/emc/usr_intf/gscreen/mdi.py:79 #, fuzzy msgid "Drill" msgstr "西里尔文" -#: src/emc/usr_intf/touchy/mdi.py:80 +#: src/emc/usr_intf/touchy/mdi.py:81 src/emc/usr_intf/gscreen/mdi.py:80 msgid "Drill with dwell" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:81 +#: src/emc/usr_intf/touchy/mdi.py:82 src/emc/usr_intf/gscreen/mdi.py:81 msgid "Peck drill" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:82 +#: src/emc/usr_intf/touchy/mdi.py:83 src/emc/usr_intf/gscreen/mdi.py:82 msgid "Chip-break drill" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:83 +#: src/emc/usr_intf/touchy/mdi.py:84 src/emc/usr_intf/gscreen/mdi.py:83 msgid "Bore" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:84 +#: src/emc/usr_intf/touchy/mdi.py:85 src/emc/usr_intf/gscreen/mdi.py:84 #, fuzzy msgid "Bore with dwell" msgstr "有风烟霞" -#: src/emc/usr_intf/touchy/mdi.py:85 +#: src/emc/usr_intf/touchy/mdi.py:86 src/emc/usr_intf/gscreen/mdi.py:85 #, fuzzy msgid "Offset all coordinate systems" msgstr "坐标系(_Z)" -#: src/emc/usr_intf/touchy/mdi.py:86 +#: src/emc/usr_intf/touchy/mdi.py:87 src/emc/usr_intf/gscreen/mdi.py:86 #, fuzzy msgid "CSS Mode" msgstr "MDI 模式" @@ -5298,7 +7417,7 @@ msgstr "" msgid "LinuxCNC/Touchy" msgstr "" -#. # Touchy is Copyright (c) 2009 Chris Radek # # Touchy 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 2 of the License, or # (at your option) any later version. # # Touchy 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. +#. # Touchy is Copyright (c) 2009 Chris Radek # # Touchy 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 2 of the License, or # (at your option) any later version. # # Touchy 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. #: src/emc/usr_intf/touchy/touchy.glade:11 #, fuzzy msgid "window1" @@ -5339,11 +7458,20 @@ msgid "zd" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:131 +#: src/emc/usr_intf/gscreen/gscreen.glade:85 +#: src/emc/usr_intf/gscreen/gscreen.glade:213 +#: src/emc/usr_intf/gscreen/gscreen.glade:343 +#: src/emc/usr_intf/gscreen/gscreen.glade:471 +#: src/emc/usr_intf/gscreen/gscreen.glade:599 +#: src/emc/usr_intf/gscreen/gscreen.glade:727 +#: src/emc/usr_intf/gscreen/gscreen.glade:855 +#: src/emc/usr_intf/gscreen/gscreen.glade:983 +#: src/emc/usr_intf/gscreen/gscreen.glade:1111 msgid "DTG" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:143 -#: src/emc/usr_intf/pncconf/pncconf.glade:59755 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Absolute" msgstr "" @@ -5438,6 +7566,9 @@ msgid "Estop Reset" msgstr "爱沙尼亚" #: src/emc/usr_intf/touchy/touchy.glade:459 +#: src/emc/usr_intf/stepconf/pport1.glade:21 +#: src/emc/usr_intf/stepconf/pport2.glade:1409 +#: src/emc/usr_intf/gscreen/gscreen.glade:2442 #, fuzzy msgid "Estop" msgstr "莱索托" @@ -5491,47 +7622,7 @@ msgid "." msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:963 -#: src/emc/usr_intf/pncconf/pncconf.glade:60883 -#: src/emc/usr_intf/pncconf/pncconf.glade:60895 -#: src/emc/usr_intf/pncconf/pncconf.glade:61017 -#: src/emc/usr_intf/pncconf/pncconf.glade:61029 -#: src/emc/usr_intf/pncconf/pncconf.glade:61041 -#: src/emc/usr_intf/pncconf/pncconf.glade:61053 -#: src/emc/usr_intf/pncconf/pncconf.glade:61065 -#: src/emc/usr_intf/pncconf/pncconf.glade:61077 -#: src/emc/usr_intf/pncconf/pncconf.glade:62040 -#: src/emc/usr_intf/pncconf/pncconf.glade:62052 -#: src/emc/usr_intf/pncconf/pncconf.glade:62064 -#: src/emc/usr_intf/pncconf/pncconf.glade:62076 -#: src/emc/usr_intf/pncconf/pncconf.glade:62088 -#: src/emc/usr_intf/pncconf/pncconf.glade:62100 -#: src/emc/usr_intf/pncconf/pncconf.glade:62222 -#: src/emc/usr_intf/pncconf/pncconf.glade:62234 -#: src/emc/usr_intf/pncconf/pncconf.glade:63069 -#: src/emc/usr_intf/pncconf/pncconf.glade:63081 -#: src/emc/usr_intf/pncconf/pncconf.glade:63203 -#: src/emc/usr_intf/pncconf/pncconf.glade:63215 -#: src/emc/usr_intf/pncconf/pncconf.glade:63227 -#: src/emc/usr_intf/pncconf/pncconf.glade:63239 -#: src/emc/usr_intf/pncconf/pncconf.glade:63251 -#: src/emc/usr_intf/pncconf/pncconf.glade:63263 -#: src/emc/usr_intf/pncconf/pncconf.glade:64226 -#: src/emc/usr_intf/pncconf/pncconf.glade:64238 -#: src/emc/usr_intf/pncconf/pncconf.glade:64250 -#: src/emc/usr_intf/pncconf/pncconf.glade:64262 -#: src/emc/usr_intf/pncconf/pncconf.glade:64274 -#: src/emc/usr_intf/pncconf/pncconf.glade:64286 -#: src/emc/usr_intf/pncconf/pncconf.glade:64408 -#: src/emc/usr_intf/pncconf/pncconf.glade:64420 -#: src/emc/usr_intf/pncconf/pncconf.glade:65231 -#: src/emc/usr_intf/pncconf/pncconf.glade:65243 -#: src/emc/usr_intf/pncconf/pncconf.glade:65359 -#: src/emc/usr_intf/pncconf/pncconf.glade:65371 -#: src/emc/usr_intf/pncconf/pncconf.glade:65383 -#: src/emc/usr_intf/pncconf/pncconf.glade:65395 -#: src/emc/usr_intf/pncconf/pncconf.glade:65407 -#: src/emc/usr_intf/pncconf/pncconf.glade:65419 -#: src/emc/usr_intf/pncconf/pncconf.glade:67091 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "0" msgstr "" @@ -5614,6 +7705,7 @@ msgid "label26" msgstr "标签:" #: src/emc/usr_intf/touchy/touchy.glade:1539 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4226 #, fuzzy msgid "Spindle" msgstr "Spindle Index" @@ -5668,12 +7760,8 @@ msgid "Distance:" msgstr "慢速移动:" #: src/emc/usr_intf/touchy/touchy.glade:2526 -#: src/emc/usr_intf/stepconf/stepconf.glade:4148 -#: src/emc/usr_intf/pncconf/pncconf.glade:60476 -#: src/emc/usr_intf/pncconf/pncconf.glade:61571 -#: src/emc/usr_intf/pncconf/pncconf.glade:62664 -#: src/emc/usr_intf/pncconf/pncconf.glade:63757 -#: src/emc/usr_intf/pncconf/pncconf.glade:64856 +#: src/emc/usr_intf/stepconf/main_page.glade:23 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Velocity:" msgstr "速度:" @@ -5808,6 +7896,7 @@ msgid "" msgstr "标签" #: src/emc/usr_intf/touchy/touchy.glade:3009 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6414 #, fuzzy msgid "Status" msgstr "状态" @@ -5876,6 +7965,8 @@ msgid "Display Options" msgstr "描述" #: src/emc/usr_intf/touchy/touchy.glade:3286 +#: src/emc/usr_intf/stepconf/base.glade:867 +#: src/emc/usr_intf/gscreen/gscreen.glade:3664 msgid "Inch" msgstr "" @@ -5924,14 +8015,17 @@ msgid "Program Options" msgstr "位置:" #: src/emc/usr_intf/touchy/touchy.glade:3531 +#: src/emc/usr_intf/gscreen/gscreen.glade:2200 msgid "Preferences" msgstr "首选项" #: src/emc/usr_intf/touchy/touchy.glade:3567 +#: src/emc/usr_intf/gscreen/gscreen.glade:1425 msgid "FO: 100%" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:3582 +#: src/emc/usr_intf/gscreen/gscreen.glade:1437 msgid "SO: 100%" msgstr "" @@ -5943,493 +8037,749 @@ msgstr "" msgid "Jogging" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3637 +#: src/emc/usr_intf/touchy/touchy.glade:3624 +#, fuzzy +msgid "Start Point" +msgstr "正在启动" + +#: src/emc/usr_intf/touchy/touchy.glade:3651 msgid ".01" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3650 +#: src/emc/usr_intf/touchy/touchy.glade:3664 msgid ".001" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3666 +#: src/emc/usr_intf/touchy/touchy.glade:3680 msgid ".0001" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3694 +#: src/emc/usr_intf/touchy/touchy.glade:3708 msgid " X " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3706 +#: src/emc/usr_intf/touchy/touchy.glade:3720 msgid " Y " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3721 +#: src/emc/usr_intf/touchy/touchy.glade:3735 msgid " Z " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3736 +#: src/emc/usr_intf/touchy/touchy.glade:3750 msgid " A " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3752 +#: src/emc/usr_intf/touchy/touchy.glade:3766 msgid " B " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3770 +#: src/emc/usr_intf/touchy/touchy.glade:3784 msgid " C " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3788 +#: src/emc/usr_intf/touchy/touchy.glade:3802 msgid " U " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3804 +#: src/emc/usr_intf/touchy/touchy.glade:3818 msgid " V " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3822 +#: src/emc/usr_intf/touchy/touchy.glade:3836 msgid " W " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3855 +#: src/emc/usr_intf/touchy/touchy.glade:3869 #, fuzzy msgid "Handwheel" msgstr "名称:" -#: src/emc/usr_intf/stepconf/stepconf.py:53 +#: src/emc/usr_intf/stepconf/stepconf.py:57 msgid "" "Stepconf encountered an error. The following information may be useful in " "troubleshooting:\n" "\n" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:70 -#: src/emc/usr_intf/pncconf/pncconf.py:133 +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#, fuzzy +msgid "Stepconf" +msgstr "下一段(_T)" + +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#: src/emc/usr_intf/stepconf/stepconf.py:217 +#: src/emc/usr_intf/stepconf/main_page.glade:557 +#: src/emc/usr_intf/gscreen/gscreen.py:3414 +#: src/emc/usr_intf/gscreen/gscreen.py:3415 +#: src/emc/usr_intf/gscreen/gscreen.glade:4043 +#, fuzzy +msgid "Start" +msgstr "初始角度:" + +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Base Information" +msgstr "系统信息" + +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Parallel Port 1" +msgstr "并口设置" + +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Parallel Port 2" +msgstr "并口设置" + +#: src/emc/usr_intf/stepconf/stepconf.py:130 +#, fuzzy +msgid "Options" +msgstr "选项(_P)" + +#: src/emc/usr_intf/stepconf/stepconf.py:130 +#, fuzzy +msgid "Axis X" +msgstr "轴:" + +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis Y" +msgstr "轴:" + +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis Z" +msgstr "轴:" + +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis A" +msgstr "轴:" + +#: src/emc/usr_intf/stepconf/stepconf.py:132 +#: src/emc/usr_intf/pncconf/pncconf.py:378 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#, fuzzy +msgid "Spindle" +msgstr "主轴:" + +#: src/emc/usr_intf/stepconf/stepconf.py:132 +msgid "Almost Done" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:136 +#: src/emc/usr_intf/pncconf/pncconf.py:135 msgid "Gecko 201" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:71 -#: src/emc/usr_intf/pncconf/pncconf.py:134 +#: src/emc/usr_intf/stepconf/stepconf.py:137 +#: src/emc/usr_intf/pncconf/pncconf.py:136 msgid "Gecko 202" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:72 -#: src/emc/usr_intf/pncconf/pncconf.py:135 +#: src/emc/usr_intf/stepconf/stepconf.py:138 +#: src/emc/usr_intf/pncconf/pncconf.py:137 msgid "Gecko 203v" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:73 -#: src/emc/usr_intf/pncconf/pncconf.py:136 +#: src/emc/usr_intf/stepconf/stepconf.py:139 +#: src/emc/usr_intf/pncconf/pncconf.py:138 msgid "Gecko 210" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:74 -#: src/emc/usr_intf/pncconf/pncconf.py:137 +#: src/emc/usr_intf/stepconf/stepconf.py:140 +#: src/emc/usr_intf/pncconf/pncconf.py:139 msgid "Gecko 212" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:75 -#: src/emc/usr_intf/pncconf/pncconf.py:138 +#: src/emc/usr_intf/stepconf/stepconf.py:141 +#: src/emc/usr_intf/pncconf/pncconf.py:140 msgid "Gecko 320" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:76 -#: src/emc/usr_intf/pncconf/pncconf.py:139 +#: src/emc/usr_intf/stepconf/stepconf.py:142 +#: src/emc/usr_intf/pncconf/pncconf.py:141 msgid "Gecko 540" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:77 -#: src/emc/usr_intf/pncconf/pncconf.py:140 +#: src/emc/usr_intf/stepconf/stepconf.py:143 +#: src/emc/usr_intf/pncconf/pncconf.py:142 msgid "L297" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:78 -#: src/emc/usr_intf/pncconf/pncconf.py:141 +#: src/emc/usr_intf/stepconf/stepconf.py:144 +#: src/emc/usr_intf/pncconf/pncconf.py:143 msgid "PMDX-150" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:79 -#: src/emc/usr_intf/pncconf/pncconf.py:142 +#: src/emc/usr_intf/stepconf/stepconf.py:145 +#: src/emc/usr_intf/stepconf/pport1.glade:32 +#: src/emc/usr_intf/pncconf/pncconf.py:144 #, fuzzy msgid "Sherline" msgstr "下划线" -#: src/emc/usr_intf/stepconf/stepconf.py:80 -#: src/emc/usr_intf/pncconf/pncconf.py:143 +#: src/emc/usr_intf/stepconf/stepconf.py:146 +#: src/emc/usr_intf/pncconf/pncconf.py:145 msgid "Xylotex 8S-3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:81 -#: src/emc/usr_intf/pncconf/pncconf.py:144 +#: src/emc/usr_intf/stepconf/stepconf.py:147 +#: src/emc/usr_intf/pncconf/pncconf.py:146 msgid "Parker-Compumotor oem750" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:82 -#: src/emc/usr_intf/pncconf/pncconf.py:145 +#: src/emc/usr_intf/stepconf/stepconf.py:148 +#: src/emc/usr_intf/pncconf/pncconf.py:147 msgid "JVL-SMD41 or 42" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:83 -#: src/emc/usr_intf/pncconf/pncconf.py:146 +#: src/emc/usr_intf/stepconf/stepconf.py:149 +#: src/emc/usr_intf/pncconf/pncconf.py:148 msgid "Hobbycnc Pro Chopper" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:84 -#: src/emc/usr_intf/pncconf/pncconf.py:147 -msgid "Keling 4030" +#: src/emc/usr_intf/stepconf/stepconf.py:150 +msgid "Kelling 4030" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:153 +#: src/emc/usr_intf/stepconf/stepconf.py:151 +#, fuzzy +msgid "Leadshine Series" +msgstr "商务服务" + +#: src/emc/usr_intf/stepconf/stepconf.py:190 msgid "X Step" msgstr "X 步进" -#: src/emc/usr_intf/stepconf/stepconf.py:153 +#: src/emc/usr_intf/stepconf/stepconf.py:190 msgid "X Direction" msgstr "X 方向" -#: src/emc/usr_intf/stepconf/stepconf.py:153 +#: src/emc/usr_intf/stepconf/stepconf.py:190 msgid "Y Step" msgstr "Y 步进" -#: src/emc/usr_intf/stepconf/stepconf.py:153 +#: src/emc/usr_intf/stepconf/stepconf.py:190 msgid "Y Direction" msgstr "Y 方向" -#: src/emc/usr_intf/stepconf/stepconf.py:154 +#: src/emc/usr_intf/stepconf/stepconf.py:191 msgid "Z Step" msgstr "Z 步进" -#: src/emc/usr_intf/stepconf/stepconf.py:154 +#: src/emc/usr_intf/stepconf/stepconf.py:191 msgid "Z Direction" msgstr "Z 方向" -#: src/emc/usr_intf/stepconf/stepconf.py:154 +#: src/emc/usr_intf/stepconf/stepconf.py:191 msgid "A Step" msgstr "A 步进" -#: src/emc/usr_intf/stepconf/stepconf.py:154 +#: src/emc/usr_intf/stepconf/stepconf.py:191 msgid "A Direction" msgstr "A 方向" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 msgid "Spindle ON" msgstr "主轴启动" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:557 +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:488 msgid "Spindle PWM" msgstr "PWM 主轴" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 msgid "Spindle Brake" msgstr "主轴停" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 msgid "Coolant Mist" msgstr "雾状切削液" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 msgid "Coolant Flood" msgstr "冷却液" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:370 msgid "ESTOP Out" msgstr "ESTOP Out" -#: src/emc/usr_intf/stepconf/stepconf.py:156 +#: src/emc/usr_intf/stepconf/stepconf.py:193 msgid "Amplifier Enable" msgstr "启动放大器" -#: src/emc/usr_intf/stepconf/stepconf.py:157 -#: src/emc/usr_intf/pncconf/pncconf.py:443 +#: src/emc/usr_intf/stepconf/stepconf.py:194 +#: src/emc/usr_intf/pncconf/pncconf.py:371 msgid "Charge Pump" msgstr "Charge Pump" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 msgid "Digital out 0" msgstr "Digital out 0" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 msgid "Digital out 1" msgstr "Digital out 1" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 msgid "Digital out 2" msgstr "Digital out 2" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 msgid "Digital out 3" msgstr "Digital out 3" -#: src/emc/usr_intf/stepconf/stepconf.py:159 -#: src/emc/usr_intf/stepconf/stepconf.py:178 +#: src/emc/usr_intf/stepconf/stepconf.py:196 +#: src/emc/usr_intf/stepconf/stepconf.py:215 +#: src/emc/usr_intf/stepconf/pport1.glade:18 +#: src/emc/usr_intf/stepconf/pport2.glade:1406 +#: src/emc/usr_intf/stepconf/pport2.glade:1420 msgid "Unused" msgstr "未使用" -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 msgid "ESTOP In" msgstr "ESTOP In" -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 msgid "Probe In" msgstr "探测" -#: src/emc/usr_intf/stepconf/stepconf.py:162 +#: src/emc/usr_intf/stepconf/stepconf.py:199 msgid "Spindle Index" msgstr "Spindle Index" -#: src/emc/usr_intf/stepconf/stepconf.py:162 +#: src/emc/usr_intf/stepconf/stepconf.py:199 msgid "Spindle Phase A" msgstr "Spindle Phase A" -#: src/emc/usr_intf/stepconf/stepconf.py:162 +#: src/emc/usr_intf/stepconf/stepconf.py:199 msgid "Spindle Phase B" msgstr "Spindle Phase B" -#: src/emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/stepconf.py:200 msgid "Home X" msgstr "X 零点" -#: src/emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/stepconf.py:200 msgid "Home Y" msgstr "Y 零点" -#: src/emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/stepconf.py:200 msgid "Home Z" msgstr "Z 零点" -#: src/emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/stepconf.py:200 msgid "Home A" msgstr "A 零点" -#: src/emc/usr_intf/stepconf/stepconf.py:164 +#: src/emc/usr_intf/stepconf/stepconf.py:201 msgid "Minimum Limit + Home X" msgstr "Minimum Limit + Home X" -#: src/emc/usr_intf/stepconf/stepconf.py:164 +#: src/emc/usr_intf/stepconf/stepconf.py:201 msgid "Minimum Limit + Home Y" msgstr "Minimum Limit + Home Y" -#: src/emc/usr_intf/stepconf/stepconf.py:165 +#: src/emc/usr_intf/stepconf/stepconf.py:202 msgid "Minimum Limit + Home Z" msgstr "Minimum Limit + Home Z" -#: src/emc/usr_intf/stepconf/stepconf.py:165 +#: src/emc/usr_intf/stepconf/stepconf.py:202 msgid "Minimum Limit + Home A" msgstr "Minimum Limit + Home A" -#: src/emc/usr_intf/stepconf/stepconf.py:166 +#: src/emc/usr_intf/stepconf/stepconf.py:203 msgid "Maximum Limit + Home X" msgstr "Maximum Limit + Home X" -#: src/emc/usr_intf/stepconf/stepconf.py:166 +#: src/emc/usr_intf/stepconf/stepconf.py:203 msgid "Maximum Limit + Home Y" msgstr "Maximum Limit + Home Y" -#: src/emc/usr_intf/stepconf/stepconf.py:167 +#: src/emc/usr_intf/stepconf/stepconf.py:204 msgid "Maximum Limit + Home Z" msgstr "Maximum Limit + Home Z" -#: src/emc/usr_intf/stepconf/stepconf.py:167 +#: src/emc/usr_intf/stepconf/stepconf.py:204 msgid "Maximum Limit + Home A" msgstr "Maximum Limit + Home A" -#: src/emc/usr_intf/stepconf/stepconf.py:168 +#: src/emc/usr_intf/stepconf/stepconf.py:205 msgid "Both Limit + Home X" msgstr "Both Limit + Home X" -#: src/emc/usr_intf/stepconf/stepconf.py:168 +#: src/emc/usr_intf/stepconf/stepconf.py:205 msgid "Both Limit + Home Y" msgstr "Both Limit + Home Y" -#: src/emc/usr_intf/stepconf/stepconf.py:169 +#: src/emc/usr_intf/stepconf/stepconf.py:206 msgid "Both Limit + Home Z" msgstr "Both Limit + Home Z" -#: src/emc/usr_intf/stepconf/stepconf.py:169 +#: src/emc/usr_intf/stepconf/stepconf.py:206 msgid "Both Limit + Home A" msgstr "Both Limit + Home A" -#: src/emc/usr_intf/stepconf/stepconf.py:170 +#: src/emc/usr_intf/stepconf/stepconf.py:207 msgid "Minimum Limit X" msgstr "X 最小值" -#: src/emc/usr_intf/stepconf/stepconf.py:170 +#: src/emc/usr_intf/stepconf/stepconf.py:207 msgid "Minimum Limit Y" msgstr "Y 最小值" -#: src/emc/usr_intf/stepconf/stepconf.py:171 +#: src/emc/usr_intf/stepconf/stepconf.py:208 msgid "Minimum Limit Z" msgstr "Z 最小值" -#: src/emc/usr_intf/stepconf/stepconf.py:171 +#: src/emc/usr_intf/stepconf/stepconf.py:208 msgid "Minimum Limit A" msgstr "A 最小值" -#: src/emc/usr_intf/stepconf/stepconf.py:172 +#: src/emc/usr_intf/stepconf/stepconf.py:209 msgid "Maximum Limit X" msgstr "X 最大值" -#: src/emc/usr_intf/stepconf/stepconf.py:172 +#: src/emc/usr_intf/stepconf/stepconf.py:209 msgid "Maximum Limit Y" msgstr "Y 最大值" -#: src/emc/usr_intf/stepconf/stepconf.py:173 +#: src/emc/usr_intf/stepconf/stepconf.py:210 msgid "Maximum Limit Z" msgstr "Z 最大值" -#: src/emc/usr_intf/stepconf/stepconf.py:173 +#: src/emc/usr_intf/stepconf/stepconf.py:210 msgid "Maximum Limit A" msgstr "A 最大值" -#: src/emc/usr_intf/stepconf/stepconf.py:174 +#: src/emc/usr_intf/stepconf/stepconf.py:211 msgid "Both Limit X" msgstr "X 极限" -#: src/emc/usr_intf/stepconf/stepconf.py:174 +#: src/emc/usr_intf/stepconf/stepconf.py:211 msgid "Both Limit Y" msgstr "Y 轴极限" -#: src/emc/usr_intf/stepconf/stepconf.py:175 +#: src/emc/usr_intf/stepconf/stepconf.py:212 msgid "Both Limit Z" msgstr "Z 轴极限" -#: src/emc/usr_intf/stepconf/stepconf.py:175 +#: src/emc/usr_intf/stepconf/stepconf.py:212 msgid "Both Limit A" msgstr "A 轴极限" -#: src/emc/usr_intf/stepconf/stepconf.py:176 +#: src/emc/usr_intf/stepconf/stepconf.py:213 msgid "All limits" msgstr "极限" -#: src/emc/usr_intf/stepconf/stepconf.py:176 +#: src/emc/usr_intf/stepconf/stepconf.py:213 msgid "All home" msgstr "回零" -#: src/emc/usr_intf/stepconf/stepconf.py:176 +#: src/emc/usr_intf/stepconf/stepconf.py:213 #, fuzzy msgid "All limits + homes" msgstr "极限" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 msgid "Digital in 0" msgstr "Digital in 0" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 msgid "Digital in 1" msgstr "Digital in 1" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 msgid "Digital in 2" msgstr "Digital in 2" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 msgid "Digital in 3" msgstr "Digital in 3" -#: src/emc/usr_intf/stepconf/stepconf.py:203 -msgid "my-mill" -msgstr "my-mill" +#: src/emc/usr_intf/stepconf/stepconf.py:218 +#, fuzzy +msgid "Forward" +msgstr "转发(_O)" -#: src/emc/usr_intf/stepconf/stepconf.py:215 -#: src/emc/usr_intf/stepconf/stepconf.py:217 -#: src/emc/usr_intf/pncconf/pncconf.py:983 -#: src/emc/usr_intf/pncconf/pncconf.py:985 +#: src/emc/usr_intf/stepconf/stepconf.py:219 +msgid "Done" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:220 +msgid "" +"OK to replace existing custom ladder program?\n" +"Existing Custom.clp will be renamed custom_backup.clp.\n" +"Any existing file named -custom_backup.clp- will be lost. " +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:221 +#: src/emc/usr_intf/pncconf/pncconf.py:8163 +msgid "" +"You edited a ladder program and have selected a different program to copy to " +"your configuration file.\n" +"The edited program will be lost.\n" +"\n" +"Are you sure? " +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:222 +msgid "" +"You need to designate an E-stop input pin in the Parallel Port Setup page " +"for this program." +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:223 +msgid "" +"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" +"Existing custompanel.xml and custom_postgui.hal will be renamed " +"custompanel_backup.xml and postgui_backup.hal.\n" +"Any existing file named custompanel_backup.xml and custom_postgui.hal will " +"be lost. " +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:224 +msgid "Quit Stepconf and discard changes?" +msgstr "Quit Stepconf and discard changes?" + +#: src/emc/usr_intf/stepconf/stepconf.py:225 #, fuzzy -msgid "Enter Address" -msgstr "地址" +msgid "" +"The configuration has been built and saved.\n" +"Do you want to quit?" +msgstr "" +"文档“%1”已经被修改。\n" +"您要保存吗?" + +#: src/emc/usr_intf/stepconf/stepconf.py:226 +msgid "" +"You are using a simulated-realtime version of Machinekit, so testing / " +"tuning of hardware is unavailable." +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:227 +#, python-format +msgid "" +"You are using a realtime version of Machinekit but didn't load a realtime " +"kernel so testing / tuning of hardware is unavailable.\n" +"This is possibly because you updated the OS and it doesn't automatically " +"load the RTAI kernel anymore.\n" +"You are using the %(actual)s kernel.\n" +"You need to use kernel:" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:246 +msgid "my-mill" +msgstr "my-mill" -#: src/emc/usr_intf/stepconf/stepconf.py:375 +#: src/emc/usr_intf/stepconf/stepconf.py:585 #, python-format msgid "File %r was modified since it was written by stepconf" msgstr "File %r was modified since it was written by stepconf" -#: src/emc/usr_intf/stepconf/stepconf.py:378 +#: src/emc/usr_intf/stepconf/stepconf.py:588 msgid "" "Saving this configuration file will discard configuration changes made " "outside stepconf." msgstr "按下该按钮将放弃在这个对话框中所做的修改" -#: src/emc/usr_intf/stepconf/stepconf.py:393 -#: src/emc/usr_intf/pncconf/pncconf.py:1356 +#: src/emc/usr_intf/stepconf/stepconf.py:603 +#: src/emc/usr_intf/pncconf/pncconf.py:1318 msgid "Continue? " msgstr "继续?" -#: src/emc/usr_intf/stepconf/stepconf.py:394 -#: src/emc/usr_intf/pncconf/pncconf.py:1357 +#: src/emc/usr_intf/stepconf/stepconf.py:604 +#: src/emc/usr_intf/pncconf/pncconf.py:1319 msgid "yY" msgstr "yY" -#: src/emc/usr_intf/stepconf/stepconf.py:446 -#: src/emc/usr_intf/stepconf/stepconf.py:786 +#: src/emc/usr_intf/stepconf/stepconf.py:689 +#: src/emc/usr_intf/pncconf/pncconf.py:3591 +#, fuzzy, python-format +msgid "launch %s" +msgstr "替换 %s" + +#: src/emc/usr_intf/stepconf/stepconf.py:693 +msgid "Desktop Launcher for Machinekit config made by Stepconf" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:860 +#: src/emc/usr_intf/stepconf/pages.py:145 +msgid "Other" +msgstr "其它" + +#: src/emc/usr_intf/stepconf/stepconf.py:1295 +#: src/emc/usr_intf/pncconf/pncconf.py:9302 #, python-format -msgid "# Generated by stepconf at %s" +msgid "%s Axis Test" +msgstr "%s 轴测试" + +#: src/emc/usr_intf/stepconf/stepconf.py:1298 +#: src/emc/usr_intf/stepconf/pages.py:617 +msgid "deg / s" +msgstr "deg / s" + +#: src/emc/usr_intf/stepconf/stepconf.py:1299 +#: src/emc/usr_intf/stepconf/pages.py:618 +#, fuzzy +msgid "deg / s²" +msgstr "deg / s²" + +#: src/emc/usr_intf/stepconf/stepconf.py:1300 +#: src/emc/usr_intf/stepconf/pages.py:619 +msgid "deg" +msgstr "度" + +#: src/emc/usr_intf/stepconf/stepconf.py:1312 +#: src/emc/usr_intf/stepconf/pages.py:623 +#: src/emc/usr_intf/stepconf/axisx.glade:629 +#: src/emc/usr_intf/stepconf/axisy.glade:615 +#: src/emc/usr_intf/stepconf/axisz.glade:615 +#: src/emc/usr_intf/stepconf/axisa.glade:629 +#: src/emc/usr_intf/pncconf/pncconf.glade:64717 +msgid "mm / s" +msgstr "毫米/秒" + +#: src/emc/usr_intf/stepconf/stepconf.py:1313 +#: src/emc/usr_intf/stepconf/pages.py:624 +#: src/emc/usr_intf/stepconf/axisx.glade:645 +#: src/emc/usr_intf/stepconf/axisy.glade:631 +#: src/emc/usr_intf/stepconf/axisz.glade:631 +#: src/emc/usr_intf/stepconf/axisa.glade:645 +#: src/emc/usr_intf/pncconf/pncconf.glade:64732 +msgid "mm / s²" +msgstr "mm / s²" + +#: src/emc/usr_intf/stepconf/stepconf.py:1326 +#: src/emc/usr_intf/stepconf/pages.py:629 +msgid "in / s" +msgstr "英寸/秒" + +#: src/emc/usr_intf/stepconf/stepconf.py:1327 +#: src/emc/usr_intf/stepconf/pages.py:630 +#, fuzzy +msgid "in / s²" +msgstr "in / s²" + +#: src/emc/usr_intf/stepconf/pages.py:189 +#, fuzzy +msgid "Machinekit 'stepconf' configuration files" +msgstr "EMC2 'stepconf' 配置文件" + +#: src/emc/usr_intf/stepconf/pages.py:190 +#: src/emc/usr_intf/pncconf/pncconf.py:4257 +msgid "Modify Existing Configuration" +msgstr "修改已有的置配" + +#: src/emc/usr_intf/stepconf/pages.py:616 +msgid "degree / rev" +msgstr "度/次" + +#: src/emc/usr_intf/stepconf/pages.py:620 +msgid "Steps / deg" +msgstr "" + +#: src/emc/usr_intf/stepconf/pages.py:622 +#: src/emc/usr_intf/stepconf/axisx.glade:613 +#: src/emc/usr_intf/stepconf/axisy.glade:599 +#: src/emc/usr_intf/stepconf/axisz.glade:599 +#: src/emc/usr_intf/stepconf/axisa.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / rev" +msgstr "mm / rev" + +#: src/emc/usr_intf/stepconf/pages.py:626 +#: src/emc/usr_intf/stepconf/axisx.glade:15 +#: src/emc/usr_intf/stepconf/axisy.glade:15 +#: src/emc/usr_intf/stepconf/axisz.glade:15 +#: src/emc/usr_intf/stepconf/axisa.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Steps / mm" +msgstr "" + +#: src/emc/usr_intf/stepconf/pages.py:628 +msgid "rev / in" +msgstr "rev / in" + +#: src/emc/usr_intf/stepconf/pages.py:632 +#, fuzzy +msgid "Steps / in" +msgstr "rev / in" + +#: src/emc/usr_intf/stepconf/build_INI.py:45 +#: src/emc/usr_intf/stepconf/build_HAL.py:41 +#, fuzzy, python-format +msgid "# Generated by stepconf 1.1 at %s" msgstr "# Generated by stepconf at %s" -#: src/emc/usr_intf/stepconf/stepconf.py:447 -#: src/emc/usr_intf/stepconf/stepconf.py:787 -#: src/emc/usr_intf/pncconf/pncconf.py:1366 -#: src/emc/usr_intf/pncconf/pncconf.py:2369 +#: src/emc/usr_intf/stepconf/build_INI.py:46 +#: src/emc/usr_intf/stepconf/build_HAL.py:42 +#: src/emc/usr_intf/pncconf/pncconf.py:1328 +#: src/emc/usr_intf/pncconf/pncconf.py:2422 msgid "# If you make changes to this file, they will be" msgstr "# If you make changes to this file, they will be" -#: src/emc/usr_intf/stepconf/stepconf.py:448 -#: src/emc/usr_intf/stepconf/stepconf.py:788 +#: src/emc/usr_intf/stepconf/build_INI.py:47 +#: src/emc/usr_intf/stepconf/build_HAL.py:43 msgid "# overwritten when you run stepconf again" msgstr "# overwritten when you run stepconf again" -#: src/emc/usr_intf/stepconf/stepconf.py:516 +#: src/emc/usr_intf/stepconf/build_INI.py:126 msgid "# add halui MDI commands here (max 64) " msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:991 -#: src/emc/usr_intf/pncconf/pncconf.py:2991 +#: src/emc/usr_intf/stepconf/build_HAL.py:275 +#: src/emc/usr_intf/pncconf/pncconf.py:3131 msgid "# **** Setup for external estop ladder program -START ****" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:998 -#: src/emc/usr_intf/pncconf/pncconf.py:2998 +#: src/emc/usr_intf/stepconf/build_HAL.py:282 +#: src/emc/usr_intf/pncconf/pncconf.py:3138 msgid "# **** Setup for external estop ladder program -END ****" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1018 -#: src/emc/usr_intf/pncconf/pncconf.py:3025 +#: src/emc/usr_intf/stepconf/build_HAL.py:302 +#: src/emc/usr_intf/pncconf/pncconf.py:3165 msgid "" "# Load Classicladder with modbus master included (GUI must run for Modbus)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1021 -#: src/emc/usr_intf/pncconf/pncconf.py:3030 +#: src/emc/usr_intf/stepconf/build_HAL.py:305 +#: src/emc/usr_intf/pncconf/pncconf.py:3170 msgid "# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1031 -#: src/emc/usr_intf/pncconf/pncconf.py:3112 +#: src/emc/usr_intf/stepconf/build_HAL.py:315 +#: src/emc/usr_intf/pncconf/pncconf.py:3252 #, fuzzy msgid "Include your PyVCP panel here.\n" msgstr "Include custom Py_VCP Panel" -#: src/emc/usr_intf/stepconf/stepconf.py:1040 -#: src/emc/usr_intf/stepconf/stepconf.py:1087 +#: src/emc/usr_intf/stepconf/build_HAL.py:324 +#: src/emc/usr_intf/stepconf/build_HAL.py:370 msgid "# Include your customized HAL commands here" msgstr "#在此插入您自定义的 HAL 命令" -#: src/emc/usr_intf/stepconf/stepconf.py:1041 +#: src/emc/usr_intf/stepconf/build_HAL.py:325 #, fuzzy msgid "" "# The commands in this file are run after the AXIS GUI (including PyVCP " @@ -6440,246 +8790,259 @@ msgstr "" "# starts\n" "# This file will not be overwritten when you run stepconf again" -#: src/emc/usr_intf/stepconf/stepconf.py:1045 -#: src/emc/usr_intf/pncconf/pncconf.py:3140 +#: src/emc/usr_intf/stepconf/build_HAL.py:328 +#: src/emc/usr_intf/pncconf/pncconf.py:3280 msgid "# **** Setup of spindle speed display using pyvcp -START ****" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1047 +#: src/emc/usr_intf/stepconf/build_HAL.py:330 msgid "# **** Use ACTUAL spindle velocity from spindle encoder" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1048 -msgid "# **** spindle-velocity bounces around so we filter it with lowpass" +#: src/emc/usr_intf/stepconf/build_HAL.py:331 +msgid "" +"# **** spindle-velocity-feedback-rps bounces around so we filter it with " +"lowpass" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1049 +#: src/emc/usr_intf/stepconf/build_HAL.py:332 msgid "" -"# **** spindle-velocity is signed so we use absolute component to remove sign" +"# **** spindle-velocity-feedback-rps is signed so we use absolute component " +"to remove sign" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1050 +#: src/emc/usr_intf/stepconf/build_HAL.py:333 msgid "# **** ACTUAL velocity is in RPS not RPM so we scale it." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1059 +#: src/emc/usr_intf/stepconf/build_HAL.py:342 msgid "# **** set up spindle at speed indicator ****" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1072 +#: src/emc/usr_intf/stepconf/build_HAL.py:355 msgid "" "# **** Use COMMANDED spindle velocity from LinuxCNC because no spindle " "encoder was specified" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1073 -msgid "" -"# **** COMANDED velocity is signed so we use absolute component (abs.0) to " -"remove sign" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.py:1088 +#: src/emc/usr_intf/stepconf/build_HAL.py:371 msgid "# This file will not be overwritten when you run stepconf again" msgstr "# This file will not be overwritten when you run stepconf again" -#: src/emc/usr_intf/stepconf/stepconf.py:1095 -#, python-format -msgid "Generated by stepconf at %s" -msgstr "Generated by stepconf at %s" - -#: src/emc/usr_intf/stepconf/stepconf.py:1166 -#: src/emc/usr_intf/pncconf/pncconf.py:3451 -#, fuzzy, python-format -msgid "launch %s" -msgstr "替换 %s" +#: src/emc/usr_intf/stepconf/build_HAL.py:412 +msgid "# This file sets up simulated limits/home/spindle encoder hardware." +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1170 -msgid "Desktop Launcher for LinuxCNC config made by Stepconf" +#: src/emc/usr_intf/stepconf/build_HAL.py:413 +msgid "# This is a generated file do not edit." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1196 -#: src/emc/usr_intf/pncconf/pncconf.py:3700 -#, python-format -msgid "%s Axis Configuration" -msgstr "%s 轴配置" +#: src/emc/usr_intf/stepconf/main_page.glade:35 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Acceleration:" +msgstr "加速:" + +#: src/emc/usr_intf/stepconf/main_page.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Jog:" +msgstr "手动:" -#: src/emc/usr_intf/stepconf/stepconf.py:1238 -#: src/emc/usr_intf/stepconf/stepconf.py:1337 -msgid "Other" -msgstr "其它" +#: src/emc/usr_intf/stepconf/main_page.glade:63 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Test Area:" +msgstr "测试区域:" -#: src/emc/usr_intf/stepconf/stepconf.py:1249 -msgid "Quit Stepconf and discard changes?" -msgstr "Quit Stepconf and discard changes?" +#: src/emc/usr_intf/stepconf/main_page.glade:97 +msgid "mm/s^2" +msgstr "毫米/秒^2" -#: src/emc/usr_intf/stepconf/stepconf.py:1280 -msgid "" -"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " -"of hardware is unavailable." -msgstr "" +#: src/emc/usr_intf/stepconf/main_page.glade:138 +msgid "mm/s" +msgstr "毫米/秒" -#: src/emc/usr_intf/stepconf/stepconf.py:1283 -msgid "" -"You are using a realtime version of LinuxCNC but didn't load a realtime " -"kernel so testing / tuning of hardware is unavailable.\n" -"This is possibly because you updated the OS and it doesn't automatically " -"load the RTAI kernel anymore.\n" +#: src/emc/usr_intf/stepconf/main_page.glade:400 +msgid "±" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1298 +#: src/emc/usr_intf/stepconf/main_page.glade:423 #, fuzzy -msgid "LinuxCNC 'stepconf' configuration files" -msgstr "EMC2 'stepconf' 配置文件" +msgid "Stepconf -Stepper Configuration Wizard" +msgstr "EMC2 步进Mill配置" -#: src/emc/usr_intf/stepconf/stepconf.py:1299 -#: src/emc/usr_intf/pncconf/pncconf.py:4094 -msgid "Modify Existing Configuration" -msgstr "修改已有的置配" +#: src/emc/usr_intf/stepconf/main_page.glade:503 +#: src/emc/usr_intf/pncconf/pncconf.glade:2054 +#: src/emc/usr_intf/pncconf/pncconf.glade:2067 +#: src/emc/usr_intf/pncconf/pncconf.glade:2080 +#: src/emc/usr_intf/pncconf/pncconf.glade:2093 +#: src/emc/usr_intf/pncconf/pncconf.glade:2106 +#: src/emc/usr_intf/pncconf/pncconf.glade:2119 +#: src/emc/usr_intf/pncconf/pncconf.glade:2132 +#: src/emc/usr_intf/pncconf/pncconf.glade:2145 +#: src/emc/usr_intf/pncconf/pncconf.glade:2156 +#: src/emc/usr_intf/pncconf/pncconf.glade:2169 +#: src/emc/usr_intf/pncconf/pncconf.glade:2182 +#: src/emc/usr_intf/pncconf/pncconf.glade:2528 +#: src/emc/usr_intf/pncconf/pncconf.glade:2541 +#: src/emc/usr_intf/pncconf/pncconf.glade:2554 +#: src/emc/usr_intf/pncconf/pncconf.glade:8104 +#: src/emc/usr_intf/pncconf/pncconf.glade:8139 +#: src/emc/usr_intf/pncconf/pncconf.glade:63377 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:1342 +#: src/emc/usr_intf/gscreen/gscreen.glade:1360 +#: src/emc/usr_intf/gscreen/gscreen.glade:1378 +#, fuzzy +msgid "label" +msgstr "标签:" -#: src/emc/usr_intf/stepconf/stepconf.py:1439 +#: src/emc/usr_intf/stepconf/main_page.glade:605 +#, fuzzy msgid "" -"You need to designate an E-stop input pin in the Parallel Port Setup page " -"for this program." +"This program creates configuration files (.ini and .hal) for \"step and " +"direction\" milling machines and lathes connected to the PC parallel port.\n" +"\n" +"Stepconf requires a minimum 800 X 600 display resolution." msgstr "" +"This program creates configuration files (.ini and .hal) for \"step and " +"direction\" milling machines and lathes connected to the PC parallel port." -#: src/emc/usr_intf/stepconf/stepconf.py:1452 -msgid "" -"OK to replace existing custom ladder program?\n" -"Existing Custom.clp will be renamed custom_backup.clp.\n" -"Any existing file named -custom_backup.clp- will be lost. " +#: src/emc/usr_intf/stepconf/main_page.glade:628 +#: src/emc/usr_intf/pncconf/pncconf.glade:28799 +#: src/emc/usr_intf/pncconf/pncconf.glade:35720 +#: src/emc/usr_intf/pncconf/pncconf.glade:42643 +#: src/emc/usr_intf/pncconf/pncconf.glade:49566 +#: src/emc/usr_intf/pncconf/pncconf.glade:56489 +#, fuzzy +msgid "page 1" +msgstr "页 %1" + +#: src/emc/usr_intf/stepconf/base.glade:18 +msgid "XYZ" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1457 -#: src/emc/usr_intf/pncconf/pncconf.py:7815 -msgid "" -"You edited a ladder program and have selected a different program to copy to " -"your configuration file.\n" -"The edited program will be lost.\n" -"\n" -"Are you sure? " +#: src/emc/usr_intf/stepconf/base.glade:21 +msgid "XYZA" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1471 -msgid "" -"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" -"Existing custompanel.xml and custom_postgui.hal will be renamed " -"custompanel_backup.xml and postgui_backup.hal.\n" -"Any existing file named custompanel_backup.xml and custom_postgui.hal will " -"be lost. " +#: src/emc/usr_intf/stepconf/base.glade:24 +#, fuzzy +msgid "XZ (Lathe)" msgstr "" +"XYZ\n" +"XYZA\n" +"XZ (车床)" -#: src/emc/usr_intf/stepconf/stepconf.py:1676 -msgid "degree / rev" -msgstr "度/次" +#: src/emc/usr_intf/stepconf/base.glade:79 +msgid "Step _Time:" +msgstr "单步次数:" -#: src/emc/usr_intf/stepconf/stepconf.py:1677 -#: src/emc/usr_intf/stepconf/stepconf.py:2205 -msgid "deg / s" -msgstr "deg / s" +#: src/emc/usr_intf/stepconf/base.glade:113 +#: src/emc/usr_intf/stepconf/base.glade:165 +#: src/emc/usr_intf/stepconf/base.glade:219 +#: src/emc/usr_intf/stepconf/base.glade:271 +#: src/emc/usr_intf/stepconf/base.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:443 +#: src/emc/usr_intf/pncconf/pncconf.glade:8226 +msgid "ns" +msgstr "ns" -#: src/emc/usr_intf/stepconf/stepconf.py:1678 -#: src/emc/usr_intf/stepconf/stepconf.py:2206 -#, fuzzy -msgid "deg / s²" -msgstr "deg / s²" +#: src/emc/usr_intf/stepconf/base.glade:127 +msgid "Step _Space:" +msgstr "单步大小:" -#: src/emc/usr_intf/stepconf/stepconf.py:1679 -#: src/emc/usr_intf/stepconf/stepconf.py:2207 -msgid "deg" -msgstr "度" +#: src/emc/usr_intf/stepconf/base.glade:181 +msgid "Direction _Hold:" +msgstr "方向:" -#: src/emc/usr_intf/stepconf/stepconf.py:1680 -msgid "Steps / deg" +#: src/emc/usr_intf/stepconf/base.glade:235 +msgid "_Direction Setup:" +msgstr "方向:" + +#: src/emc/usr_intf/stepconf/base.glade:338 +#, fuzzy +msgid "Driver Timing Settings" +msgstr "服务器设置" + +#: src/emc/usr_intf/stepconf/base.glade:351 +msgid "" +"_Test Base\n" +"Period Jitter " msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1682 -#: src/emc/usr_intf/stepconf/stepconf.glade:3589 -#: src/emc/usr_intf/pncconf/pncconf.glade:66138 -#: src/emc/usr_intf/pncconf/pncconf.glade:66424 -msgid "mm / rev" -msgstr "mm / rev" +#: src/emc/usr_intf/stepconf/base.glade:372 +msgid "Machine _Name:" +msgstr "机床名称:" -#: src/emc/usr_intf/stepconf/stepconf.py:1683 -#: src/emc/usr_intf/stepconf/stepconf.py:2219 -#: src/emc/usr_intf/stepconf/stepconf.glade:3604 -#: src/emc/usr_intf/pncconf/pncconf.glade:57828 -msgid "mm / s" -msgstr "毫米/秒" +#: src/emc/usr_intf/stepconf/base.glade:386 +msgid "_Axis configuration:" +msgstr "轴配置" -#: src/emc/usr_intf/stepconf/stepconf.py:1684 -#: src/emc/usr_intf/stepconf/stepconf.py:2220 -#: src/emc/usr_intf/stepconf/stepconf.glade:3619 -#: src/emc/usr_intf/pncconf/pncconf.glade:57813 -msgid "mm / s²" -msgstr "mm / s²" +#: src/emc/usr_intf/stepconf/base.glade:401 +#, fuzzy +msgid "Reset Default machine _units:" +msgstr "机床单位:" -#: src/emc/usr_intf/stepconf/stepconf.py:1686 -#: src/emc/usr_intf/stepconf/stepconf.glade:3075 -#: src/emc/usr_intf/pncconf/pncconf.glade:66888 -msgid "Steps / mm" +#: src/emc/usr_intf/stepconf/base.glade:416 +#: src/emc/usr_intf/pncconf/pncconf.glade:245 +msgid "Configuration directory:" +msgstr "配置目录" + +#: src/emc/usr_intf/stepconf/base.glade:430 +#, fuzzy +msgid "D_river type:" +msgstr "设备类型" + +#: src/emc/usr_intf/stepconf/base.glade:545 +msgid "" +"Driver characteristics: (Multiply by 1000 for times specified in µs or " +"microseconds)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1688 -msgid "rev / in" -msgstr "rev / in" +#: src/emc/usr_intf/stepconf/base.glade:573 +msgid "Base Period Maximum _Jitter:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1689 -#: src/emc/usr_intf/stepconf/stepconf.py:2233 -msgid "in / s" -msgstr "英寸/秒" +#: src/emc/usr_intf/stepconf/base.glade:630 +msgid "One Parport" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1690 -#: src/emc/usr_intf/stepconf/stepconf.py:2234 -#, fuzzy -msgid "in / s²" -msgstr "in / s²" +#: src/emc/usr_intf/stepconf/base.glade:646 +msgid "Two Parports" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1692 +#: src/emc/usr_intf/stepconf/base.glade:663 #, fuzzy -msgid "Steps / in" -msgstr "rev / in" +msgid "Three Parports" +msgstr "Parport Base Address:" -#: src/emc/usr_intf/stepconf/stepconf.py:2202 -#: src/emc/usr_intf/pncconf/pncconf.py:8893 -#, python-format -msgid "%s Axis Test" -msgstr "%s 轴测试" +#: src/emc/usr_intf/stepconf/base.glade:698 +msgid "Min Base Period:" +msgstr "Min Base Period:" -#: src/emc/usr_intf/stepconf/stepconf.glade:8 -#: src/emc/usr_intf/stepconf/stepconf.glade:21 -#, fuzzy -msgid "LinuxCNC Stepper Mill Configuration" -msgstr "EMC2 步进Mill配置" +#: src/emc/usr_intf/stepconf/base.glade:735 +msgid "Max step rate:" +msgstr "最大步进倍率:" -#: src/emc/usr_intf/stepconf/stepconf.glade:22 -#, fuzzy -msgid "" -"This program creates configuration files (.ini and .hal) for \"step and " -"direction\" milling machines and lathes connected to the PC parallel port.\n" -"\n" -"Stepconf requires a minimum 800 X 600 display resolution.\n" -"You may need to collapse the 'Driver Timing Settings' and \n" -"Parallel Port Settings' expanders." +#: src/emc/usr_intf/stepconf/base.glade:870 +msgid "MM" msgstr "" -"This program creates configuration files (.ini and .hal) for \"step and " -"direction\" milling machines and lathes connected to the PC parallel port." -#: src/emc/usr_intf/stepconf/stepconf.glade:51 +#: src/emc/usr_intf/stepconf/start.glade:11 msgid "Create a _new configuration" msgstr "创建新配置" -#: src/emc/usr_intf/stepconf/stepconf.glade:69 -#: src/emc/usr_intf/pncconf/pncconf.glade:70 +#: src/emc/usr_intf/stepconf/start.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:130 #, fuzzy msgid "Modify a configuration already created with this program" msgstr "_Modify a configuration already created with this program" -#: src/emc/usr_intf/stepconf/stepconf.glade:87 -#: src/emc/usr_intf/pncconf/pncconf.glade:88 +#: src/emc/usr_intf/stepconf/start.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:118 msgid "Do you wish to:" msgstr "您想:" -#: src/emc/usr_intf/stepconf/stepconf.glade:99 +#: src/emc/usr_intf/stepconf/start.glade:61 #: src/emc/usr_intf/pncconf/pncconf.glade:100 msgid "" "If you have made modifications to this configuration outside this program, " @@ -6688,591 +9051,582 @@ msgstr "" "If you have made modifications to this configuration outside this program, " "they will be lost when you select \"Modify a configuration\"" -#: src/emc/usr_intf/stepconf/stepconf.glade:116 +#: src/emc/usr_intf/stepconf/start.glade:76 msgid "Create a desktop _shortcut (symlink) to configuration files." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:133 +#: src/emc/usr_intf/stepconf/start.glade:93 msgid "Create a desktop _launcher to start LinuxCNC with this configuration." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:169 -#: src/emc/usr_intf/pncconf/pncconf.glade:175 -msgid "Basic machine information" -msgstr "机床基本信息" +#: src/emc/usr_intf/stepconf/start.glade:124 +#, fuzzy +msgid "Create simulated hardware configuration." +msgstr "创建新配置" -#: src/emc/usr_intf/stepconf/stepconf.glade:327 -msgid "Step _Time:" -msgstr "单步次数:" +#: src/emc/usr_intf/stepconf/pport1.glade:35 +#, fuzzy +msgid "Xylotex" +msgstr "_Xylotex Outputs" -#: src/emc/usr_intf/stepconf/stepconf.glade:356 -#: src/emc/usr_intf/stepconf/stepconf.glade:402 -#: src/emc/usr_intf/stepconf/stepconf.glade:449 -#: src/emc/usr_intf/stepconf/stepconf.glade:494 -#: src/emc/usr_intf/stepconf/stepconf.glade:909 -#: src/emc/usr_intf/pncconf/pncconf.glade:458 -#: src/emc/usr_intf/pncconf/pncconf.glade:8256 -msgid "ns" -msgstr "ns" +#: src/emc/usr_intf/stepconf/pport1.glade:38 +msgid "TB6560 3 axes" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:369 -msgid "Step _Space:" -msgstr "单步大小:" +#: src/emc/usr_intf/stepconf/pport1.glade:41 +msgid "TB6560 4 axes" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:417 -msgid "Direction _Hold:" -msgstr "方向:" +#: src/emc/usr_intf/stepconf/pport1.glade:59 +#: src/emc/usr_intf/pncconf/pncconf.glade:62915 +msgid "Pin _1:" +msgstr "Pin _1:" -#: src/emc/usr_intf/stepconf/stepconf.glade:464 -msgid "_Direction Setup:" -msgstr "方向:" +#: src/emc/usr_intf/stepconf/pport1.glade:74 +#: src/emc/usr_intf/stepconf/pport2.glade:768 +#: src/emc/usr_intf/pncconf/pncconf.glade:61685 +#: src/emc/usr_intf/pncconf/pncconf.glade:62901 +msgid "Pin _2:" +msgstr "Pin _2:" -#: src/emc/usr_intf/stepconf/stepconf.glade:512 -#, fuzzy -msgid "Driver Timing Settings" -msgstr "服务器设置" +#: src/emc/usr_intf/stepconf/pport1.glade:89 +#: src/emc/usr_intf/stepconf/pport2.glade:814 +#: src/emc/usr_intf/pncconf/pncconf.glade:61668 +#: src/emc/usr_intf/pncconf/pncconf.glade:62887 +msgid "Pin _3:" +msgstr "Pin _3:" + +#: src/emc/usr_intf/stepconf/pport1.glade:104 +#: src/emc/usr_intf/stepconf/pport2.glade:860 +#: src/emc/usr_intf/pncconf/pncconf.glade:61651 +#: src/emc/usr_intf/pncconf/pncconf.glade:62873 +msgid "Pin _4:" +msgstr "Pin _4:" + +#: src/emc/usr_intf/stepconf/pport1.glade:119 +#: src/emc/usr_intf/stepconf/pport2.glade:906 +#: src/emc/usr_intf/pncconf/pncconf.glade:61634 +#: src/emc/usr_intf/pncconf/pncconf.glade:62859 +msgid "Pin _5:" +msgstr "Pin _5:" + +#: src/emc/usr_intf/stepconf/pport1.glade:134 +#: src/emc/usr_intf/stepconf/pport2.glade:952 +#: src/emc/usr_intf/pncconf/pncconf.glade:61617 +#: src/emc/usr_intf/pncconf/pncconf.glade:62845 +msgid "Pin _6:" +msgstr "Pin _6:" + +#: src/emc/usr_intf/stepconf/pport1.glade:149 +#: src/emc/usr_intf/stepconf/pport2.glade:998 +#: src/emc/usr_intf/pncconf/pncconf.glade:61600 +#: src/emc/usr_intf/pncconf/pncconf.glade:62831 +msgid "Pin _7:" +msgstr "Pin _7:" + +#: src/emc/usr_intf/stepconf/pport1.glade:164 +#: src/emc/usr_intf/stepconf/pport2.glade:1044 +#: src/emc/usr_intf/pncconf/pncconf.glade:61583 +#: src/emc/usr_intf/pncconf/pncconf.glade:62817 +msgid "Pin _8:" +msgstr "Pin _8:" + +#: src/emc/usr_intf/stepconf/pport1.glade:179 +#: src/emc/usr_intf/stepconf/pport2.glade:1090 +#: src/emc/usr_intf/pncconf/pncconf.glade:61566 +#: src/emc/usr_intf/pncconf/pncconf.glade:62803 +msgid "Pin _9:" +msgstr "Pin _9:" + +#: src/emc/usr_intf/stepconf/pport1.glade:194 +#: src/emc/usr_intf/stepconf/pport2.glade:1137 +#: src/emc/usr_intf/pncconf/pncconf.glade:62789 +msgid "_Pin 14:" +msgstr "_Pin 14:" -#: src/emc/usr_intf/stepconf/stepconf.glade:538 +#: src/emc/usr_intf/stepconf/pport1.glade:209 +#: src/emc/usr_intf/stepconf/pport2.glade:1185 +#: src/emc/usr_intf/pncconf/pncconf.glade:62775 +msgid "P_in 16:" +msgstr "P_in 16:" + +#: src/emc/usr_intf/stepconf/pport1.glade:224 +#: src/emc/usr_intf/stepconf/pport2.glade:1233 +#: src/emc/usr_intf/pncconf/pncconf.glade:62761 +msgid "Pi_n 17:" +msgstr "Pi_n 17:" + +#: src/emc/usr_intf/stepconf/pport1.glade:470 +#: src/emc/usr_intf/stepconf/pport2.glade:692 +msgid "Outputs (PC to Mill):" +msgstr "输出 (PC to Mill):" + +#: src/emc/usr_intf/stepconf/pport1.glade:483 +#: src/emc/usr_intf/stepconf/pport2.glade:427 +#: src/emc/usr_intf/pncconf/pncconf.glade:61701 +msgid "Pin 1_0:" +msgstr "Pin 1_0:" + +#: src/emc/usr_intf/stepconf/pport1.glade:500 +#: src/emc/usr_intf/stepconf/pport2.glade:475 +#: src/emc/usr_intf/pncconf/pncconf.glade:61717 +msgid "Pin 1_1:" +msgstr "Pin 1_1:" + +#: src/emc/usr_intf/stepconf/pport1.glade:517 +#: src/emc/usr_intf/stepconf/pport2.glade:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:61733 +msgid "Pin 1_2:" +msgstr "Pin 1_2:" + +#: src/emc/usr_intf/stepconf/pport1.glade:534 +#: src/emc/usr_intf/stepconf/pport2.glade:571 +#: src/emc/usr_intf/pncconf/pncconf.glade:61749 +msgid "Pin 1_3:" +msgstr "Pin 1_3:" + +#: src/emc/usr_intf/stepconf/pport1.glade:551 +#: src/emc/usr_intf/stepconf/pport2.glade:619 +#: src/emc/usr_intf/pncconf/pncconf.glade:61765 +msgid "Pin 1_5:" +msgstr "Pin 1_5:" + +#: src/emc/usr_intf/stepconf/pport1.glade:590 +#: src/emc/usr_intf/stepconf/pport2.glade:16 +msgid "Inputs (Mill to PC):" +msgstr "输入(Mill to PC):" + +#: src/emc/usr_intf/stepconf/pport1.glade:618 +#: src/emc/usr_intf/stepconf/pport1.glade:632 +#: src/emc/usr_intf/stepconf/pport2.glade:29 +#: src/emc/usr_intf/stepconf/pport2.glade:702 +#: src/emc/usr_intf/pncconf/pncconf.glade:62335 +#: src/emc/usr_intf/pncconf/pncconf.glade:62348 +msgid "Invert" +msgstr "反转" + +#: src/emc/usr_intf/stepconf/pport1.glade:1018 +msgid "Output pinout presets:" +msgstr "Output pinout presets:" + +#: src/emc/usr_intf/stepconf/pport1.glade:1096 #, fuzzy -msgid "First Parport _Base Address:" +msgid "Parport _Base Address:" msgstr "Parport Base Address:" -#: src/emc/usr_intf/stepconf/stepconf.glade:564 -msgid " Out" -msgstr "" +#: src/emc/usr_intf/stepconf/pport1.glade:1132 +#, fuzzy +msgid "Preset" +msgstr "重置" -#: src/emc/usr_intf/stepconf/stepconf.glade:575 -#: src/emc/usr_intf/stepconf/stepconf.glade:591 -msgid "" -"Out\n" -"In" -msgstr "" +#: src/emc/usr_intf/stepconf/pport2.glade:47 +#, fuzzy +msgid "Pin 2:" +msgstr "Pin _2:" -#: src/emc/usr_intf/stepconf/stepconf.glade:633 +#: src/emc/usr_intf/stepconf/pport2.glade:94 #, fuzzy -msgid "S_econd Parport Address:" -msgstr "Parport Base Address:" +msgid "Pin 3:" +msgstr "Pin _3:" -#: src/emc/usr_intf/stepconf/stepconf.glade:650 +#: src/emc/usr_intf/stepconf/pport2.glade:141 #, fuzzy -msgid "T_hird Parport Address:" -msgstr "Parport Base Address:" +msgid "Pin 4:" +msgstr "Pin _4:" -#: src/emc/usr_intf/stepconf/stepconf.glade:667 +#: src/emc/usr_intf/stepconf/pport2.glade:188 #, fuzzy -msgid " Parallel Port Settings" -msgstr "并口设置" +msgid "Pin 5:" +msgstr "Pin _5:" -#: src/emc/usr_intf/stepconf/stepconf.glade:684 -msgid "" -"_Test Base\n" -"Period Jitter " -msgstr "" +#: src/emc/usr_intf/stepconf/pport2.glade:235 +#, fuzzy +msgid "Pin 6:" +msgstr "Pin _6:" -#: src/emc/usr_intf/stepconf/stepconf.glade:703 -msgid "Machine _Name:" -msgstr "机床名称:" +#: src/emc/usr_intf/stepconf/pport2.glade:282 +#, fuzzy +msgid "Pin 7:" +msgstr "Pin _7:" -#: src/emc/usr_intf/stepconf/stepconf.glade:716 -msgid "_Axis configuration:" -msgstr "轴配置" +#: src/emc/usr_intf/stepconf/pport2.glade:329 +#, fuzzy +msgid "Pin 8:" +msgstr "Pin _8:" + +#: src/emc/usr_intf/stepconf/pport2.glade:376 +#, fuzzy +msgid "Pin 9:" +msgstr "Pin _9:" -#: src/emc/usr_intf/stepconf/stepconf.glade:730 -msgid "Machine _units:" -msgstr "机床单位:" +#: src/emc/usr_intf/stepconf/pport2.glade:721 +#, fuzzy +msgid "Pin _1: " +msgstr "Pin _1:" -#: src/emc/usr_intf/stepconf/stepconf.glade:744 -#: src/emc/usr_intf/pncconf/pncconf.glade:246 -msgid "Configuration directory:" -msgstr "配置目录" +#: src/emc/usr_intf/stepconf/pport2.glade:1431 +#, fuzzy +msgid "Out" +msgstr "输出:" -#: src/emc/usr_intf/stepconf/stepconf.glade:757 +#: src/emc/usr_intf/stepconf/pport2.glade:1434 #, fuzzy -msgid "D_river type:" -msgstr "设备类型" +msgid "In" +msgstr "反转" -#: src/emc/usr_intf/stepconf/stepconf.glade:785 -#: src/emc/usr_intf/pncconf/pncconf.glade:326 -msgid "" -"Inch\n" -"Millimeter" -msgstr "英制\n公制" +#: src/emc/usr_intf/stepconf/spindle.glade:23 +#, fuzzy +msgid "Use spindle-at-speed:" +msgstr "主轴倍率:" -#: src/emc/usr_intf/stepconf/stepconf.glade:800 -#: src/emc/usr_intf/pncconf/pncconf.glade:291 -msgid "" -"XYZ\n" -"XYZA\n" -"XZ (Lathe)" +#: src/emc/usr_intf/stepconf/spindle.glade:64 +msgid "Speed display filter gain:" msgstr "" -"XYZ\n" -"XYZA\n" -"XZ (车床)" -#: src/emc/usr_intf/stepconf/stepconf.glade:847 +#: src/emc/usr_intf/stepconf/spindle.glade:99 +msgid "Calibration:" +msgstr "校准:" + +#: src/emc/usr_intf/stepconf/spindle.glade:113 #, fuzzy -msgid "" -"Driver characteristics: (Multiply by 1000 for times specified in µs or " -"microseconds)\n" -" Additional signal conditioning or isolation such as optocouplers " -"and RC filters\n" -" can impose timing constraints of their own, in addition to those of " -"the driver." -msgstr "" -"Driver characteristics: (Multiply by 1000 for times specified in µs or " -"microseconds)\n" -"\n" -"Additional signal conditioning or isolation such as optocouplers and RC " -"filters\n" -"can impose timing constraints of their own, in addition to those of the " -"driver." +msgid "_Speed 1:" +msgstr "速度 1:" -#: src/emc/usr_intf/stepconf/stepconf.glade:875 -msgid "Base Period Maximum _Jitter:" -msgstr "" +#: src/emc/usr_intf/stepconf/spindle.glade:129 +#, fuzzy +msgid "_PWM 1:" +msgstr "PWM 1:" -#: src/emc/usr_intf/stepconf/stepconf.glade:924 -msgid "Max step rate:" -msgstr "最大步进倍率:" +#: src/emc/usr_intf/stepconf/spindle.glade:148 +#, fuzzy +msgid "S_peed 2:" +msgstr "速度 2:" -#: src/emc/usr_intf/stepconf/stepconf.glade:940 -msgid "Min Base Period:" -msgstr "Min Base Period:" +#: src/emc/usr_intf/stepconf/spindle.glade:164 +#, fuzzy +msgid "P_WM 2:" +msgstr "PWM 2:" -#: src/emc/usr_intf/stepconf/stepconf.glade:956 +#: src/emc/usr_intf/stepconf/spindle.glade:183 #, fuzzy -msgid "" -"_Onscreen prompt for\n" -"tool change" -msgstr "在屏幕上提示换刀" +msgid "PWM _Rate:" +msgstr "PWM 率:" -#: src/emc/usr_intf/stepconf/stepconf.glade:1015 +#: src/emc/usr_intf/stepconf/spindle.glade:285 #, fuzzy -msgid "Advanced Configuration Options" -msgstr "高级选项" +msgid "_Cycles per revolution:" +msgstr "旋转柱面:" -#: src/emc/usr_intf/stepconf/stepconf.glade:1033 +#: src/emc/usr_intf/stepconf/spindle.glade:347 +msgid "Enter 0 Hz for \"PDM\" mode" +msgstr "输入 0 Hz \"PDM\" 方式" + +#: src/emc/usr_intf/stepconf/spindle.glade:360 +#, fuzzy +msgid "Scale %" +msgstr "比例" + +#: src/emc/usr_intf/stepconf/options.glade:50 msgid "Include Halui user interface component" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1074 -#: src/emc/usr_intf/pncconf/pncconf.glade:6745 +#: src/emc/usr_intf/stepconf/options.glade:102 +#: src/emc/usr_intf/pncconf/pncconf.glade:6753 #, fuzzy msgid "Blank program" msgstr "循环启动" -#: src/emc/usr_intf/stepconf/stepconf.glade:1089 -#: src/emc/usr_intf/pncconf/pncconf.glade:6760 +#: src/emc/usr_intf/stepconf/options.glade:119 +#: src/emc/usr_intf/pncconf/pncconf.glade:6768 #, fuzzy msgid "Spindle speed display " msgstr "主轴倍率:" -#: src/emc/usr_intf/stepconf/stepconf.glade:1105 -#: src/emc/usr_intf/stepconf/stepconf.glade:1543 -#: src/emc/usr_intf/pncconf/pncconf.glade:6791 -#: src/emc/usr_intf/pncconf/pncconf.glade:7112 -#: src/emc/usr_intf/pncconf/pncconf.glade:59393 +#: src/emc/usr_intf/stepconf/options.glade:136 +#: src/emc/usr_intf/stepconf/options.glade:671 +#: src/emc/usr_intf/pncconf/pncconf.glade:6799 +#: src/emc/usr_intf/pncconf/pncconf.glade:7120 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Existing custom program" msgstr "退出该程序" -#: src/emc/usr_intf/stepconf/stepconf.glade:1120 -#: src/emc/usr_intf/stepconf/stepconf.glade:1559 -#: src/emc/usr_intf/pncconf/pncconf.glade:6806 -#: src/emc/usr_intf/pncconf/pncconf.glade:59409 +#: src/emc/usr_intf/stepconf/options.glade:153 +#: src/emc/usr_intf/stepconf/options.glade:688 +#: src/emc/usr_intf/pncconf/pncconf.glade:6814 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Include connections to HAL" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1154 -#: src/emc/usr_intf/pncconf/pncconf.glade:6989 -#: src/emc/usr_intf/pncconf/pncconf.glade:7537 +#: src/emc/usr_intf/stepconf/options.glade:202 +#: src/emc/usr_intf/pncconf/pncconf.glade:6997 +#: src/emc/usr_intf/pncconf/pncconf.glade:7545 msgid "" "_Display\n" "sample\n" "panel" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1188 -#: src/emc/usr_intf/pncconf/pncconf.glade:7048 +#: src/emc/usr_intf/stepconf/options.glade:243 +#: src/emc/usr_intf/pncconf/pncconf.glade:7056 #, fuzzy msgid "Include custom PyVCP GUI panel" msgstr "Include custom Py_VCP Panel" -#: src/emc/usr_intf/stepconf/stepconf.glade:1321 -#: src/emc/usr_intf/pncconf/pncconf.glade:59199 +#: src/emc/usr_intf/stepconf/options.glade:414 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid " Number of analog (float) out pins:" msgstr "列数:" -#: src/emc/usr_intf/stepconf/stepconf.glade:1335 -#: src/emc/usr_intf/pncconf/pncconf.glade:59184 +#: src/emc/usr_intf/stepconf/options.glade:429 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid " Number of analog (float) in pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1349 -#: src/emc/usr_intf/pncconf/pncconf.glade:59169 +#: src/emc/usr_intf/stepconf/options.glade:444 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid " Number of analog (s32) out pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1363 -#: src/emc/usr_intf/pncconf/pncconf.glade:59153 +#: src/emc/usr_intf/stepconf/options.glade:459 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid " Number of analog (s32) in pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1378 +#: src/emc/usr_intf/stepconf/options.glade:475 #, fuzzy msgid "Number of digital out pins:" msgstr "列数:" -#: src/emc/usr_intf/stepconf/stepconf.glade:1403 +#: src/emc/usr_intf/stepconf/options.glade:506 #, fuzzy msgid "Number of digital in pins:" msgstr "地雷数量:" -#: src/emc/usr_intf/stepconf/stepconf.glade:1414 +#: src/emc/usr_intf/stepconf/options.glade:518 #, fuzzy msgid "setup number of external pins" msgstr "地雷数量:" -#: src/emc/usr_intf/stepconf/stepconf.glade:1429 -#: src/emc/usr_intf/pncconf/pncconf.glade:59213 +#: src/emc/usr_intf/stepconf/options.glade:533 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Include modbus master support" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1500 -#: src/emc/usr_intf/pncconf/pncconf.glade:59333 +#: src/emc/usr_intf/stepconf/options.glade:625 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Blank ladder program" msgstr "重新启动程序" -#: src/emc/usr_intf/stepconf/stepconf.glade:1513 -#: src/emc/usr_intf/pncconf/pncconf.glade:59346 +#: src/emc/usr_intf/stepconf/options.glade:638 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Estop ladder program" msgstr "退出该程序" -#: src/emc/usr_intf/stepconf/stepconf.glade:1527 -#: src/emc/usr_intf/pncconf/pncconf.glade:59377 +#: src/emc/usr_intf/stepconf/options.glade:654 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Serial modbus program" msgstr "重新启动程序" -#: src/emc/usr_intf/stepconf/stepconf.glade:1592 -#: src/emc/usr_intf/pncconf/pncconf.glade:59443 +#: src/emc/usr_intf/stepconf/options.glade:740 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "" "Edit ladder\n" "program" msgstr "退出该程序" -#: src/emc/usr_intf/stepconf/stepconf.glade:1628 -#: src/emc/usr_intf/pncconf/pncconf.glade:59479 +#: src/emc/usr_intf/stepconf/options.glade:781 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Include _Classicladder PLC" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1653 -msgid "Parallel Port Setup" -msgstr "并口设置" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1760 -#: src/emc/usr_intf/pncconf/pncconf.glade:54010 -msgid "Pin _1:" -msgstr "Pin _1:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1774 -#: src/emc/usr_intf/pncconf/pncconf.glade:54024 -#: src/emc/usr_intf/pncconf/pncconf.glade:55239 -msgid "Pin _2:" -msgstr "Pin _2:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1788 -#: src/emc/usr_intf/pncconf/pncconf.glade:54038 -#: src/emc/usr_intf/pncconf/pncconf.glade:55256 -msgid "Pin _3:" -msgstr "Pin _3:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1802 -#: src/emc/usr_intf/pncconf/pncconf.glade:54052 -#: src/emc/usr_intf/pncconf/pncconf.glade:55273 -msgid "Pin _4:" -msgstr "Pin _4:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1816 -#: src/emc/usr_intf/pncconf/pncconf.glade:54066 -#: src/emc/usr_intf/pncconf/pncconf.glade:55290 -msgid "Pin _5:" -msgstr "Pin _5:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1830 -#: src/emc/usr_intf/pncconf/pncconf.glade:54080 -#: src/emc/usr_intf/pncconf/pncconf.glade:55307 -msgid "Pin _6:" -msgstr "Pin _6:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1844 -#: src/emc/usr_intf/pncconf/pncconf.glade:54094 -#: src/emc/usr_intf/pncconf/pncconf.glade:55324 -msgid "Pin _7:" -msgstr "Pin _7:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1858 -#: src/emc/usr_intf/pncconf/pncconf.glade:54108 -#: src/emc/usr_intf/pncconf/pncconf.glade:55341 -msgid "Pin _8:" -msgstr "Pin _8:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1872 -#: src/emc/usr_intf/pncconf/pncconf.glade:54122 -#: src/emc/usr_intf/pncconf/pncconf.glade:55358 -msgid "Pin _9:" -msgstr "Pin _9:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1886 -#: src/emc/usr_intf/pncconf/pncconf.glade:54136 -msgid "_Pin 14:" -msgstr "_Pin 14:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1900 -#: src/emc/usr_intf/pncconf/pncconf.glade:54150 -msgid "P_in 16:" -msgstr "P_in 16:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:1914 -#: src/emc/usr_intf/pncconf/pncconf.glade:54164 -msgid "Pi_n 17:" -msgstr "Pi_n 17:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2258 -msgid "Outputs (PC to Mill):" -msgstr "输出 (PC to Mill):" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2270 -#: src/emc/usr_intf/pncconf/pncconf.glade:55222 -msgid "Pin 1_0:" -msgstr "Pin 1_0:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2286 -#: src/emc/usr_intf/pncconf/pncconf.glade:55206 -msgid "Pin 1_1:" -msgstr "Pin 1_1:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2302 -#: src/emc/usr_intf/pncconf/pncconf.glade:55190 -msgid "Pin 1_2:" -msgstr "Pin 1_2:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2318 -#: src/emc/usr_intf/pncconf/pncconf.glade:55174 -msgid "Pin 1_3:" -msgstr "Pin 1_3:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2334 -#: src/emc/usr_intf/pncconf/pncconf.glade:55158 -msgid "Pin 1_5:" -msgstr "Pin 1_5:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2399 -msgid "Inputs (Mill to PC):" -msgstr "输入(Mill to PC):" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2425 -#: src/emc/usr_intf/stepconf/stepconf.glade:2438 -#: src/emc/usr_intf/pncconf/pncconf.glade:54578 -#: src/emc/usr_intf/pncconf/pncconf.glade:54591 -msgid "Invert" -msgstr "反转" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2887 -msgid "_Sherline Outputs" -msgstr "_Sherline Outputs" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2905 -msgid "_Xylotex Outputs" -msgstr "_Xylotex Outputs" - -#: src/emc/usr_intf/stepconf/stepconf.glade:2923 -msgid "Output pinout presets:" -msgstr "Output pinout presets:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3022 -#: src/emc/usr_intf/pncconf/pncconf.glade:57970 -msgid "X Axis Configuration" -msgstr "X 轴配置" +#: src/emc/usr_intf/stepconf/options.glade:802 +#, fuzzy +msgid "_Onscreen prompt for manual tool change" +msgstr "在屏幕上提示换刀" -#: src/emc/usr_intf/stepconf/stepconf.glade:3090 +#: src/emc/usr_intf/stepconf/axisx.glade:31 +#: src/emc/usr_intf/stepconf/axisy.glade:31 +#: src/emc/usr_intf/stepconf/axisz.glade:31 +#: src/emc/usr_intf/stepconf/axisa.glade:45 msgid "_Motor steps per revolution:" msgstr "_Motor steps per revolution:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3103 +#: src/emc/usr_intf/stepconf/axisx.glade:45 +#: src/emc/usr_intf/stepconf/axisy.glade:44 +#: src/emc/usr_intf/stepconf/axisz.glade:44 +#: src/emc/usr_intf/stepconf/axisa.glade:58 #, fuzzy msgid "_Driver Microstepping:" msgstr "脉冲当量(_D)" -#: src/emc/usr_intf/stepconf/stepconf.glade:3118 +#: src/emc/usr_intf/stepconf/axisx.glade:61 +#: src/emc/usr_intf/stepconf/axisy.glade:59 +#: src/emc/usr_intf/stepconf/axisz.glade:59 +#: src/emc/usr_intf/stepconf/axisa.glade:73 msgid "_Pulley teeth (Motor:Leadscrew):" msgstr "_Pulley teeth (Motor:Leadscrew):" -#: src/emc/usr_intf/stepconf/stepconf.glade:3133 +#: src/emc/usr_intf/stepconf/axisx.glade:77 +#: src/emc/usr_intf/stepconf/axisy.glade:74 +#: src/emc/usr_intf/stepconf/axisz.glade:74 +#: src/emc/usr_intf/stepconf/axisa.glade:88 msgid "_Leadscrew Pitch:" msgstr "丝杆螺距(_L):" -#: src/emc/usr_intf/stepconf/stepconf.glade:3148 -#: src/emc/usr_intf/pncconf/pncconf.glade:57858 +#: src/emc/usr_intf/stepconf/axisx.glade:93 +#: src/emc/usr_intf/stepconf/axisy.glade:89 +#: src/emc/usr_intf/stepconf/axisz.glade:89 +#: src/emc/usr_intf/stepconf/axisa.glade:103 +#: src/emc/usr_intf/pncconf/pncconf.glade:64687 msgid "Maximum _Velocity:" msgstr "最大速度(_V):" -#: src/emc/usr_intf/stepconf/stepconf.glade:3163 -#: src/emc/usr_intf/pncconf/pncconf.glade:57843 +#: src/emc/usr_intf/stepconf/axisx.glade:109 +#: src/emc/usr_intf/stepconf/axisy.glade:104 +#: src/emc/usr_intf/stepconf/axisz.glade:104 +#: src/emc/usr_intf/stepconf/axisa.glade:118 +#: src/emc/usr_intf/pncconf/pncconf.glade:64702 msgid "Maximum _Acceleration:" msgstr "最大加速度(_A)" -#: src/emc/usr_intf/stepconf/stepconf.glade:3178 -#: src/emc/usr_intf/pncconf/pncconf.glade:67063 +#: src/emc/usr_intf/stepconf/axisx.glade:125 +#: src/emc/usr_intf/stepconf/axisy.glade:119 +#: src/emc/usr_intf/stepconf/axisz.glade:119 +#: src/emc/usr_intf/stepconf/axisa.glade:133 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Time to accelerate to max speed:" msgstr "加速到最高速度的时间(_L):" -#: src/emc/usr_intf/stepconf/stepconf.glade:3193 +#: src/emc/usr_intf/stepconf/axisx.glade:141 +#: src/emc/usr_intf/stepconf/axisy.glade:134 +#: src/emc/usr_intf/stepconf/axisz.glade:134 +#: src/emc/usr_intf/stepconf/axisa.glade:148 msgid "Distance to accelerate to max speed:" msgstr "加速到最高速度的时间(_L):" -#: src/emc/usr_intf/stepconf/stepconf.glade:3292 -#: src/emc/usr_intf/pncconf/pncconf.glade:67036 +#: src/emc/usr_intf/stepconf/axisx.glade:271 +#: src/emc/usr_intf/stepconf/axisy.glade:263 +#: src/emc/usr_intf/stepconf/axisz.glade:263 +#: src/emc/usr_intf/stepconf/axisa.glade:277 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Pulse rate at max speed:" msgstr "加速到最高速度的时间(_L):" -#: src/emc/usr_intf/stepconf/stepconf.glade:3362 +#: src/emc/usr_intf/stepconf/axisx.glade:342 +#: src/emc/usr_intf/stepconf/axisy.glade:334 +#: src/emc/usr_intf/stepconf/axisz.glade:334 +#: src/emc/usr_intf/stepconf/axisa.glade:348 msgid "_Home location:" msgstr "_Home location:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3377 +#: src/emc/usr_intf/stepconf/axisx.glade:358 +#: src/emc/usr_intf/stepconf/axisy.glade:349 +#: src/emc/usr_intf/stepconf/axisz.glade:349 +#: src/emc/usr_intf/stepconf/axisa.glade:363 msgid "Home _Switch location:" msgstr "Home _Switch location:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3392 +#: src/emc/usr_intf/stepconf/axisx.glade:374 +#: src/emc/usr_intf/stepconf/axisy.glade:364 +#: src/emc/usr_intf/stepconf/axisz.glade:364 +#: src/emc/usr_intf/stepconf/axisa.glade:378 msgid "Home Sear_ch velocity:" msgstr "找零速度:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3407 +#: src/emc/usr_intf/stepconf/axisx.glade:390 +#: src/emc/usr_intf/stepconf/axisy.glade:379 +#: src/emc/usr_intf/stepconf/axisz.glade:379 +#: src/emc/usr_intf/stepconf/axisa.glade:393 msgid "Home La_tch direction:" msgstr "回零方向:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3420 -#: src/emc/usr_intf/pncconf/pncconf.glade:66232 -#: src/emc/usr_intf/pncconf/pncconf.glade:66274 -#: src/emc/usr_intf/pncconf/pncconf.glade:66505 -#: src/emc/usr_intf/pncconf/pncconf.glade:66570 +#: src/emc/usr_intf/stepconf/axisx.glade:404 +#: src/emc/usr_intf/stepconf/axisy.glade:393 +#: src/emc/usr_intf/stepconf/axisz.glade:393 +#: src/emc/usr_intf/stepconf/axisa.glade:407 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "_:" msgstr "_:" -#: src/emc/usr_intf/stepconf/stepconf.glade:3437 -#: src/emc/usr_intf/pncconf/pncconf.glade:58536 -msgid "" -"Same\n" -"Opposite" -msgstr "" -"相同\n" -"相对" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3492 +#: src/emc/usr_intf/stepconf/axisx.glade:498 +#: src/emc/usr_intf/stepconf/axisy.glade:486 +#: src/emc/usr_intf/stepconf/axisz.glade:486 +#: src/emc/usr_intf/stepconf/axisa.glade:500 msgid "Tab_le travel:" msgstr "移动工作台(_L):" -#: src/emc/usr_intf/stepconf/stepconf.glade:3519 +#: src/emc/usr_intf/stepconf/axisx.glade:531 +#: src/emc/usr_intf/stepconf/axisy.glade:518 +#: src/emc/usr_intf/stepconf/axisz.glade:518 +#: src/emc/usr_intf/stepconf/axisa.glade:532 msgid "t_o" msgstr "到(_O)" -#: src/emc/usr_intf/stepconf/stepconf.glade:3649 +#: src/emc/usr_intf/stepconf/axisx.glade:677 +#: src/emc/usr_intf/stepconf/axisy.glade:663 +#: src/emc/usr_intf/stepconf/axisz.glade:663 +#: src/emc/usr_intf/stepconf/axisa.glade:677 msgid "s" msgstr "s" -#: src/emc/usr_intf/stepconf/stepconf.glade:3703 +#: src/emc/usr_intf/stepconf/axisx.glade:738 +#: src/emc/usr_intf/stepconf/axisy.glade:724 +#: src/emc/usr_intf/stepconf/axisz.glade:724 +#: src/emc/usr_intf/stepconf/axisa.glade:738 #, fuzzy msgid "T_est this axis" msgstr "测试本轴" -#: src/emc/usr_intf/stepconf/stepconf.glade:3729 +#: src/emc/usr_intf/stepconf/axisx.glade:765 +#: src/emc/usr_intf/stepconf/axisy.glade:751 +#: src/emc/usr_intf/stepconf/axisz.glade:751 +#: src/emc/usr_intf/stepconf/axisa.glade:765 #, fuzzy msgid "Axis SCALE:" msgstr "比例" -#: src/emc/usr_intf/stepconf/stepconf.glade:3765 -msgid "Spindle Configuration" -msgstr "主轴配置" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3785 -#, fuzzy -msgid "Use spindle-at-speed:" -msgstr "主轴倍率:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3841 -msgid "Speed display filter gain:" +#: src/emc/usr_intf/stepconf/axisx.glade:833 +#: src/emc/usr_intf/stepconf/axisy.glade:819 +#: src/emc/usr_intf/stepconf/axisz.glade:819 +#: src/emc/usr_intf/stepconf/axisa.glade:12 +msgid "Same" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3870 -msgid "Calibration:" -msgstr "校准:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3883 -#, fuzzy -msgid "_Speed 1:" -msgstr "速度 1:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3898 -#, fuzzy -msgid "_PWM 1:" -msgstr "PWM 1:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3916 +#: src/emc/usr_intf/stepconf/axisx.glade:836 +#: src/emc/usr_intf/stepconf/axisy.glade:822 +#: src/emc/usr_intf/stepconf/axisz.glade:822 +#: src/emc/usr_intf/stepconf/axisa.glade:15 #, fuzzy -msgid "S_peed 2:" -msgstr "速度 2:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3931 -#, fuzzy -msgid "P_WM 2:" -msgstr "PWM 2:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3949 -#, fuzzy -msgid "PWM _Rate:" -msgstr "PWM 率:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4025 -#, fuzzy -msgid "_Cycles per revolution:" -msgstr "旋转柱面:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4079 -msgid "Enter 0 Hz for \"PDM\" mode" -msgstr "输入 0 Hz \"PDM\" 方式" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4091 -#, fuzzy -msgid "Scale %" -msgstr "比例" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:60002 -msgid "Machine configuration complete" -msgstr "机床配置完成" +msgid "Opposite" +msgstr "" +"相同\n" +"相对" -#: src/emc/usr_intf/stepconf/stepconf.glade:4114 -#: src/emc/usr_intf/pncconf/pncconf.glade:60003 +#: src/emc/usr_intf/stepconf/finished.glade:6 #, fuzzy msgid "" -"All the necessary information has now been gathered. Click \"Apply\" to " -"write your configuration files to disk.\n" -"If you experience lockups while running LinuxCNC, you will need to decrease " -"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" +"All the necessary information has now been gathered. \n" +"Click \"Done\" to write your configuration files to disk.\n" "\n" -"If you experience lost steps while running LinuxCNC, first verify that you " -"entered the proper timings for your stepper drivers. If that does not fix " -"the problem, then run a more thorough latency test as described on the " -"linuxcnc.org wiki:\n" +"If you experience lockups while running LinuxCNC:\n" +"-you will need to decrease the maximum velocity which will have the effect " +"of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC:\n" +"-first verify that you entered the proper timings for your stepper " +"drivers. \n" +"-then run a more thorough latency test as described on the linuxcnc.org " +"wiki.\n" " http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" "\n" -"If you experience the \"Unexpected Realtime Delay\" message, run a more " -"thorough latency test as described on the linuxcnc.org wiki: \n" +"If you experience the \"Unexpected Realtime Delay\" message:\n" +"-run a more thorough latency test as described on the linuxcnc.org wiki: \n" " http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" msgstr "" "All the necessary information has now been gathered. Click \"Apply\" to " @@ -7290,57 +9644,7 @@ msgstr "" "thorough latency test as described on the linuxcnc.org wiki: \n" " http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting" -#: src/emc/usr_intf/stepconf/stepconf.glade:4160 -#: src/emc/usr_intf/pncconf/pncconf.glade:60462 -#: src/emc/usr_intf/pncconf/pncconf.glade:61557 -#: src/emc/usr_intf/pncconf/pncconf.glade:62650 -#: src/emc/usr_intf/pncconf/pncconf.glade:63743 -#: src/emc/usr_intf/pncconf/pncconf.glade:64842 -msgid "Acceleration:" -msgstr "加速:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4174 -#: src/emc/usr_intf/pncconf/pncconf.glade:60231 -#: src/emc/usr_intf/pncconf/pncconf.glade:60695 -#: src/emc/usr_intf/pncconf/pncconf.glade:61788 -#: src/emc/usr_intf/pncconf/pncconf.glade:62881 -#: src/emc/usr_intf/pncconf/pncconf.glade:63974 -#: src/emc/usr_intf/pncconf/pncconf.glade:64954 -msgid "Jog:" -msgstr "手动:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4188 -#: src/emc/usr_intf/pncconf/pncconf.glade:60681 -#: src/emc/usr_intf/pncconf/pncconf.glade:61774 -#: src/emc/usr_intf/pncconf/pncconf.glade:62867 -#: src/emc/usr_intf/pncconf/pncconf.glade:63960 -msgid "Test Area:" -msgstr "测试区域:" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4217 -msgid "mm/s^2" -msgstr "毫米/秒^2" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4253 -msgid "mm/s" -msgstr "毫米/秒" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4329 -#: src/emc/usr_intf/pncconf/pncconf.glade:60620 -#: src/emc/usr_intf/pncconf/pncconf.glade:61713 -#: src/emc/usr_intf/pncconf/pncconf.glade:62806 -#: src/emc/usr_intf/pncconf/pncconf.glade:63899 -#: src/emc/usr_intf/pncconf/pncconf.glade:65066 -msgid "" -"±\n" -"+\n" -"-\n" -msgstr "" -"±\n" -"+\n" -"-\n" - -#: src/emc/usr_intf/pncconf/pncconf.py:79 +#: src/emc/usr_intf/pncconf/pncconf.py:81 msgid "" "PNCconf encountered an error. The following information may be useful in " "troubleshooting:\n" @@ -7348,1260 +9652,1433 @@ msgid "" msgstr "" #: src/emc/usr_intf/pncconf/pncconf.py:149 +msgid "Keling 4030" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:151 msgid "Not Used" msgstr "未使用" -#: src/emc/usr_intf/pncconf/pncconf.py:149 -#: src/emc/usr_intf/pncconf/pncconf.py:150 +#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:176 msgid "Dummy" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:150 +#: src/emc/usr_intf/pncconf/pncconf.py:152 msgid "8i20 Servo Drive" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:153 #, fuzzy msgid "POT Output" msgstr "输出" -#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:153 #, fuzzy msgid "POT Enable" msgstr "启用" -#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:153 #, fuzzy msgid "POT Direction" msgstr "X 方向" -#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:154 #, fuzzy msgid "GPIO Input" msgstr "输入" -#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:154 #, fuzzy msgid "GPIO Output" msgstr "输出" -#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:154 msgid "GPIO O Drain" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 +#: src/emc/usr_intf/pncconf/pncconf.py:155 #, fuzzy msgid "Quad Encoder-A" msgstr "未使用" -#: src/emc/usr_intf/pncconf/pncconf.py:153 +#: src/emc/usr_intf/pncconf/pncconf.py:155 #, fuzzy msgid "Quad Encoder-B" msgstr "未使用" -#: src/emc/usr_intf/pncconf/pncconf.py:153 +#: src/emc/usr_intf/pncconf/pncconf.py:155 #, fuzzy msgid "Quad Encoder-I" msgstr "未使用" -#: src/emc/usr_intf/pncconf/pncconf.py:153 +#: src/emc/usr_intf/pncconf/pncconf.py:155 #, fuzzy msgid "Quad Encoder-M" msgstr "未使用" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 #, fuzzy msgid "Muxed Encoder 0" msgstr "未使用" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 #, fuzzy msgid "Muxed Encoder 1" msgstr "未使用" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 msgid "muxed enc" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 msgid "mux enc mask" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 #, fuzzy msgid "mux select" msgstr "选择" -#: src/emc/usr_intf/pncconf/pncconf.py:155 +#: src/emc/usr_intf/pncconf/pncconf.py:157 #, fuzzy msgid "Resolver 0 Encoder" msgstr "竖笛" -#: src/emc/usr_intf/pncconf/pncconf.py:155 +#: src/emc/usr_intf/pncconf/pncconf.py:157 #, fuzzy msgid "Resolver 1 Encoder" msgstr "竖笛" -#: src/emc/usr_intf/pncconf/pncconf.py:155 +#: src/emc/usr_intf/pncconf/pncconf.py:157 #, fuzzy msgid "Resolver 2 Encoder" msgstr "竖笛" -#: src/emc/usr_intf/pncconf/pncconf.py:156 +#: src/emc/usr_intf/pncconf/pncconf.py:158 #, fuzzy msgid "Resolver 3 Encoder" msgstr "竖笛" -#: src/emc/usr_intf/pncconf/pncconf.py:156 +#: src/emc/usr_intf/pncconf/pncconf.py:158 #, fuzzy msgid "Resolver 4 Encoder" msgstr "竖笛" -#: src/emc/usr_intf/pncconf/pncconf.py:156 +#: src/emc/usr_intf/pncconf/pncconf.py:158 #, fuzzy msgid "Resolver 5 Encoder" msgstr "竖笛" -#: src/emc/usr_intf/pncconf/pncconf.py:157 +#: src/emc/usr_intf/pncconf/pncconf.py:159 #, fuzzy msgid "Step Gen-A" msgstr "X 步进" -#: src/emc/usr_intf/pncconf/pncconf.py:157 +#: src/emc/usr_intf/pncconf/pncconf.py:159 msgid "Dir Gen-B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 +#: src/emc/usr_intf/pncconf/pncconf.py:159 msgid "Step/Dir Gen-C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 +#: src/emc/usr_intf/pncconf/pncconf.py:159 msgid "Step/Dir Gen-D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:158 +#: src/emc/usr_intf/pncconf/pncconf.py:160 msgid "Step/Dir Gen-E" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:158 +#: src/emc/usr_intf/pncconf/pncconf.py:160 msgid "Step/dir Gen-F" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 +#: src/emc/usr_intf/pncconf/pncconf.py:161 msgid "Pulse Width Gen-P" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 +#: src/emc/usr_intf/pncconf/pncconf.py:161 msgid "Pulse Width Gen-D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 +#: src/emc/usr_intf/pncconf/pncconf.py:161 msgid "Pulse Width Gen-E" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 +#: src/emc/usr_intf/pncconf/pncconf.py:162 msgid "Pulse Density Gen-P" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 +#: src/emc/usr_intf/pncconf/pncconf.py:162 msgid "Pulse Density Gen-D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 +#: src/emc/usr_intf/pncconf/pncconf.py:162 msgid "Pulse Density Gen-E" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 +#: src/emc/usr_intf/pncconf/pncconf.py:163 msgid "Up/Down Mode -Up" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 +#: src/emc/usr_intf/pncconf/pncconf.py:163 msgid "Up/Down Mode-Down" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 +#: src/emc/usr_intf/pncconf/pncconf.py:163 msgid "Up/Down Mode-Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 +#: src/emc/usr_intf/pncconf/pncconf.py:164 msgid "Motor Phase A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 +#: src/emc/usr_intf/pncconf/pncconf.py:164 msgid "Motor Phase B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 +#: src/emc/usr_intf/pncconf/pncconf.py:164 msgid "Motor Phase C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Phase A Not" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Phase B Not" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Phase C Not" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 #, fuzzy msgid "Motor Enable" msgstr "启用" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Fault" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:165 +#: src/emc/usr_intf/pncconf/pncconf.py:168 msgid "SMARTSERIAL-P0-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P0-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P0-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P1-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P1-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P1-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P2-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P2-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P2-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P3-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P3-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P3-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P4-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P4-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P4-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P5-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P5-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P5-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P6-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P6-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P6-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P7-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P7-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P7-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #1" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS0)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #2" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS2)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS3)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 I/O (SS0)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 Analog (SS1)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 I/O (SS3)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 Analog (SS4)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:176 +#, fuzzy +msgid "Analog Input" +msgstr "手动控制" + +#: src/emc/usr_intf/pncconf/pncconf.py:277 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +#, fuzzy +msgid "Axis Selection" +msgstr "选中内容" + +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "" +"7i64-Input\n" +"P3 and P4" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "" +"7i64-Output\n" +"P2 and P5" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "7i64-Analog In" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P2" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P3" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB3" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB2" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:309 +msgid "" +"7i71-Output\n" +"TB3" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:309 +msgid "" +"7i71-Output\n" +"TB2" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-I/O\n" +"TB6" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-I/O\n" +"TB5" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:317 +#, fuzzy +msgid "" +"7i76-Analog Output\n" +"TB4" +msgstr "输出" + +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB8" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB7" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:325 +#, fuzzy +msgid "" +"7i77-Analog Output\n" +"TB5" +msgstr "输出" + +#: src/emc/usr_intf/pncconf/pncconf.py:333 +msgid "7i73-I/O\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:420 +#: src/emc/usr_intf/pncconf/pncconf.py:348 #, fuzzy msgid "Unused Unused" msgstr "未使用" -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/pncconf/pncconf.py:370 #, fuzzy msgid "Machine Is Enabled" msgstr "机床名称:" -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/pncconf/pncconf.py:370 #, fuzzy msgid "X Amplifier Enable" msgstr "启动放大器" -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/pncconf/pncconf.py:370 #, fuzzy msgid "Y Amplifier Enable" msgstr "启动放大器" -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/pncconf/pncconf.py:370 #, fuzzy msgid "Z Amplifier Enable" msgstr "启动放大器" -#: src/emc/usr_intf/pncconf/pncconf.py:443 +#: src/emc/usr_intf/pncconf/pncconf.py:371 #, fuzzy msgid "A Amplifier Enable" msgstr "启动放大器" -#: src/emc/usr_intf/pncconf/pncconf.py:443 +#: src/emc/usr_intf/pncconf/pncconf.py:371 msgid "Force Pin True" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 #, fuzzy msgid "S HALL 1" msgstr "另存为" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 #, fuzzy msgid "S HALL 2" msgstr "另存为" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 #, fuzzy msgid "S HALL 3" msgstr "另存为" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:450 +#: src/emc/usr_intf/pncconf/pncconf.py:378 #, fuzzy msgid "Unused Output" msgstr "输出" -#: src/emc/usr_intf/pncconf/pncconf.py:450 -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#, fuzzy -msgid "Spindle" -msgstr "主轴:" - -#: src/emc/usr_intf/pncconf/pncconf.py:450 +#: src/emc/usr_intf/pncconf/pncconf.py:378 #, fuzzy msgid "Coolant" msgstr "冷却" -#: src/emc/usr_intf/pncconf/pncconf.py:451 +#: src/emc/usr_intf/pncconf/pncconf.py:379 #, fuzzy msgid "Control" msgstr "Ctrl-M" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:480 +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:409 #, fuzzy msgid "Digital" msgstr "Digital in 3" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:481 +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:410 #, fuzzy msgid "X BLDC Control" msgstr "用户界面控件" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 #, fuzzy msgid "Y BLDC Control" msgstr "用户界面控件" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 #, fuzzy msgid "Z BLDC Control" msgstr "用户界面控件" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 #, fuzzy msgid "A BLDC Control" msgstr "用户界面控件" -#: src/emc/usr_intf/pncconf/pncconf.py:453 +#: src/emc/usr_intf/pncconf/pncconf.py:381 #, fuzzy msgid " S BLDC Control" msgstr "用户界面控件" -#: src/emc/usr_intf/pncconf/pncconf.py:453 -#: src/emc/usr_intf/pncconf/pncconf.py:483 -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#: src/emc/usr_intf/pncconf/pncconf.py:585 -#: src/emc/usr_intf/pncconf/pncconf.py:588 -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.py:597 -#: src/emc/usr_intf/pncconf/pncconf.py:614 -#: src/emc/usr_intf/pncconf/pncconf.py:629 +#: src/emc/usr_intf/pncconf/pncconf.py:381 +#: src/emc/usr_intf/pncconf/pncconf.py:412 +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#: src/emc/usr_intf/pncconf/pncconf.py:516 +#: src/emc/usr_intf/pncconf/pncconf.py:519 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.py:528 +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#: src/emc/usr_intf/pncconf/pncconf.py:568 +#: src/emc/usr_intf/pncconf/pncconf.py:580 #, fuzzy msgid "Custom Signals" msgstr "定制规则" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 #, fuzzy msgid "X Minimum Limit" msgstr "X 最小值" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 #, fuzzy msgid "Y Minimum Limit" msgstr "X 最小值" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 #, fuzzy msgid "Z Minimum Limit" msgstr "X 最小值" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 #, fuzzy msgid "A Minimum Limit" msgstr "X 最小值" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 #, fuzzy msgid "X Maximum Limit" msgstr "X 最大值" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 #, fuzzy msgid "Y Maximum Limit" msgstr "X 最大值" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 #, fuzzy msgid "Z Maximum Limit" msgstr "X 最大值" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 #, fuzzy msgid "A Maximum Limit" msgstr "X 最大值" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 #, fuzzy msgid "X Both Limit" msgstr "X 极限" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 #, fuzzy msgid "Y Both Limit" msgstr "X 极限" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 #, fuzzy msgid "Z Both Limit" msgstr "X 极限" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 #, fuzzy msgid "A Both Limit" msgstr "X 极限" -#: src/emc/usr_intf/pncconf/pncconf.py:458 -#: src/emc/usr_intf/pncconf/pncconf.py:546 +#: src/emc/usr_intf/pncconf/pncconf.py:386 +#: src/emc/usr_intf/pncconf/pncconf.py:477 #, fuzzy msgid "All Limits" msgstr "极限" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:387 #, fuzzy msgid "X Home" msgstr "零点" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:387 #, fuzzy msgid "Y Home" msgstr "零点" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:387 #, fuzzy msgid "Z Home" msgstr "零点" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:387 #, fuzzy msgid "A Home" msgstr "零点" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:387 #, fuzzy msgid "All Home" msgstr "回零" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 #, fuzzy msgid "X Minimum Limit + Home" msgstr "Minimum Limit + Home X" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 #, fuzzy msgid "Y Minimum Limit + Home" msgstr "Minimum Limit + Home X" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 #, fuzzy msgid "Z Minimum Limit + Home" msgstr "Minimum Limit + Home X" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 #, fuzzy msgid "A Minimum Limit + Home" msgstr "Minimum Limit + Home X" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 #, fuzzy msgid "X Maximum Limit + Home" msgstr "Maximum Limit + Home X" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 #, fuzzy msgid "Y Maximum Limit + Home" msgstr "Maximum Limit + Home X" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 #, fuzzy msgid "Z Maximum Limit + Home" msgstr "Maximum Limit + Home X" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 #, fuzzy msgid "A Maximum Limit + Home" msgstr "Maximum Limit + Home X" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 #, fuzzy msgid "X Both Limit + Home" msgstr "Both Limit + Home X" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 #, fuzzy msgid "Y Both Limit + Home" msgstr "Both Limit + Home X" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 #, fuzzy msgid "Z Both Limit + Home" msgstr "Both Limit + Home X" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 #, fuzzy msgid "A Both Limit + Home" msgstr "Both Limit + Home X" -#: src/emc/usr_intf/pncconf/pncconf.py:464 +#: src/emc/usr_intf/pncconf/pncconf.py:392 #, fuzzy msgid "Joint select A" msgstr "手动轴" -#: src/emc/usr_intf/pncconf/pncconf.py:464 +#: src/emc/usr_intf/pncconf/pncconf.py:392 #, fuzzy msgid "Joint select B" msgstr "手动轴" -#: src/emc/usr_intf/pncconf/pncconf.py:464 +#: src/emc/usr_intf/pncconf/pncconf.py:392 #, fuzzy msgid "Joint select C" msgstr "手动轴" -#: src/emc/usr_intf/pncconf/pncconf.py:464 +#: src/emc/usr_intf/pncconf/pncconf.py:392 #, fuzzy msgid "Joint select D" msgstr "手动轴" -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Jog incr A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Jog incr B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Jog incr C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Jog incr D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/pncconf/pncconf.py:393 #, fuzzy msgid "Feed Override incr A" msgstr "进给倍率:" -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/pncconf/pncconf.py:393 #, fuzzy msgid "Feed Override incr B" msgstr "进给倍率:" -#: src/emc/usr_intf/pncconf/pncconf.py:466 +#: src/emc/usr_intf/pncconf/pncconf.py:394 #, fuzzy msgid "Feed Override incr C" msgstr "进给倍率:" -#: src/emc/usr_intf/pncconf/pncconf.py:466 +#: src/emc/usr_intf/pncconf/pncconf.py:394 #, fuzzy msgid "Feed Override incr D" msgstr "进给倍率:" -#: src/emc/usr_intf/pncconf/pncconf.py:466 +#: src/emc/usr_intf/pncconf/pncconf.py:394 #, fuzzy msgid "Spindle Override incr A" msgstr "主轴倍率:" -#: src/emc/usr_intf/pncconf/pncconf.py:466 +#: src/emc/usr_intf/pncconf/pncconf.py:394 #, fuzzy msgid "Spindle Override incr B" msgstr "主轴倍率:" -#: src/emc/usr_intf/pncconf/pncconf.py:467 +#: src/emc/usr_intf/pncconf/pncconf.py:395 #, fuzzy msgid "Spindle Override incr C" msgstr "主轴倍率:" -#: src/emc/usr_intf/pncconf/pncconf.py:467 +#: src/emc/usr_intf/pncconf/pncconf.py:395 #, fuzzy msgid "Spindle Override incr D" msgstr "主轴倍率:" -#: src/emc/usr_intf/pncconf/pncconf.py:467 +#: src/emc/usr_intf/pncconf/pncconf.py:395 msgid "Max Vel Override incr A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:467 +#: src/emc/usr_intf/pncconf/pncconf.py:395 msgid "Max Vel Override incr B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:468 +#: src/emc/usr_intf/pncconf/pncconf.py:396 msgid "Max Vel Override incr C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:468 +#: src/emc/usr_intf/pncconf/pncconf.py:396 msgid "Max Vel Override incr D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:469 +#: src/emc/usr_intf/pncconf/pncconf.py:396 +#, fuzzy +msgid "Feed Override enable" +msgstr "进给倍率:" + +#: src/emc/usr_intf/pncconf/pncconf.py:396 +#, fuzzy +msgid "Spindle Override enable" +msgstr "主轴倍率:" + +#: src/emc/usr_intf/pncconf/pncconf.py:397 +#, fuzzy +msgid "Max Vel Override enable" +msgstr "进给倍率:" + +#: src/emc/usr_intf/pncconf/pncconf.py:398 #, fuzzy msgid "Manual Spindle CW" msgstr "主轴正转" -#: src/emc/usr_intf/pncconf/pncconf.py:469 +#: src/emc/usr_intf/pncconf/pncconf.py:398 #, fuzzy msgid "Manual Spindle CCW" msgstr "主轴反转" -#: src/emc/usr_intf/pncconf/pncconf.py:469 +#: src/emc/usr_intf/pncconf/pncconf.py:398 #, fuzzy msgid "Manual Spindle Stop" msgstr "Spindle Index" -#: src/emc/usr_intf/pncconf/pncconf.py:469 +#: src/emc/usr_intf/pncconf/pncconf.py:398 #, fuzzy msgid "Spindle Up-To-Speed" msgstr "主轴转速(RPM)" -#: src/emc/usr_intf/pncconf/pncconf.py:470 +#: src/emc/usr_intf/pncconf/pncconf.py:399 #, fuzzy msgid "Cycle Start" msgstr "快速开始" -#: src/emc/usr_intf/pncconf/pncconf.py:470 +#: src/emc/usr_intf/pncconf/pncconf.py:399 msgid "Abort" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:470 +#: src/emc/usr_intf/pncconf/pncconf.py:399 #, fuzzy msgid "Single Step" msgstr "单步大小:" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 msgid "Jog X +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 msgid "Jog X -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 msgid "Jog Y +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 msgid "Jog Y -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 msgid "Jog Z +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 msgid "Jog Z -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 msgid "Jog A +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 msgid "Jog A -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:478 +#: src/emc/usr_intf/pncconf/pncconf.py:407 #, fuzzy msgid "Jog button selected +" msgstr "手动轴" -#: src/emc/usr_intf/pncconf/pncconf.py:478 +#: src/emc/usr_intf/pncconf/pncconf.py:407 #, fuzzy msgid "Jog button selected -" msgstr "手动轴" -#: src/emc/usr_intf/pncconf/pncconf.py:479 +#: src/emc/usr_intf/pncconf/pncconf.py:408 #, fuzzy msgid "Unused Input" msgstr "未使用" -#: src/emc/usr_intf/pncconf/pncconf.py:479 +#: src/emc/usr_intf/pncconf/pncconf.py:408 #, fuzzy msgid "Limits" msgstr "极限" -#: src/emc/usr_intf/pncconf/pncconf.py:479 +#: src/emc/usr_intf/pncconf/pncconf.py:408 msgid "Limts/Home Shared" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#, fuzzy -msgid "Axis Selection" -msgstr "选中内容" - -#: src/emc/usr_intf/pncconf/pncconf.py:480 +#: src/emc/usr_intf/pncconf/pncconf.py:409 #, fuzzy msgid "Overrides" msgstr "超程" -#: src/emc/usr_intf/pncconf/pncconf.py:481 +#: src/emc/usr_intf/pncconf/pncconf.py:410 #, fuzzy msgid "Operation" msgstr "选项" -#: src/emc/usr_intf/pncconf/pncconf.py:481 +#: src/emc/usr_intf/pncconf/pncconf.py:410 #, fuzzy msgid "External Control" msgstr "外部程序" -#: src/emc/usr_intf/pncconf/pncconf.py:481 +#: src/emc/usr_intf/pncconf/pncconf.py:410 #, fuzzy msgid "Axis rapid" msgstr "轴:" -#: src/emc/usr_intf/pncconf/pncconf.py:483 +#: src/emc/usr_intf/pncconf/pncconf.py:412 #, fuzzy msgid "S BLDC Control" msgstr "用户界面控件" -#: src/emc/usr_intf/pncconf/pncconf.py:556 +#: src/emc/usr_intf/pncconf/pncconf.py:487 #, fuzzy msgid "Unused PWM Gen" msgstr "未使用" -#: src/emc/usr_intf/pncconf/pncconf.py:556 +#: src/emc/usr_intf/pncconf/pncconf.py:487 #, fuzzy msgid "X Axis PWM" msgstr "X 轴:" -#: src/emc/usr_intf/pncconf/pncconf.py:556 +#: src/emc/usr_intf/pncconf/pncconf.py:487 #, fuzzy msgid "Y Axis PWM" msgstr "轴:" -#: src/emc/usr_intf/pncconf/pncconf.py:557 +#: src/emc/usr_intf/pncconf/pncconf.py:488 #, fuzzy msgid "Z Axis PWM" msgstr "轴:" -#: src/emc/usr_intf/pncconf/pncconf.py:557 +#: src/emc/usr_intf/pncconf/pncconf.py:488 #, fuzzy msgid "A Axis PWM" msgstr "轴:" -#: src/emc/usr_intf/pncconf/pncconf.py:581 +#: src/emc/usr_intf/pncconf/pncconf.py:512 #, fuzzy msgid "X Encoder" msgstr "统一码" -#: src/emc/usr_intf/pncconf/pncconf.py:581 +#: src/emc/usr_intf/pncconf/pncconf.py:512 #, fuzzy msgid "Y Encoder" msgstr "统一码" -#: src/emc/usr_intf/pncconf/pncconf.py:581 +#: src/emc/usr_intf/pncconf/pncconf.py:512 #, fuzzy msgid "Z Encoder" msgstr "统一码" -#: src/emc/usr_intf/pncconf/pncconf.py:581 +#: src/emc/usr_intf/pncconf/pncconf.py:512 #, fuzzy msgid "A Encoder" msgstr "统一码" -#: src/emc/usr_intf/pncconf/pncconf.py:581 +#: src/emc/usr_intf/pncconf/pncconf.py:512 #, fuzzy msgid "Spindle Encoder" msgstr "Spindle Phase A" -#: src/emc/usr_intf/pncconf/pncconf.py:582 +#: src/emc/usr_intf/pncconf/pncconf.py:513 #, fuzzy msgid "X Hand Wheel" msgstr "外观" -#: src/emc/usr_intf/pncconf/pncconf.py:582 +#: src/emc/usr_intf/pncconf/pncconf.py:513 #, fuzzy msgid "Y Hand Wheel" msgstr "外观" -#: src/emc/usr_intf/pncconf/pncconf.py:582 +#: src/emc/usr_intf/pncconf/pncconf.py:513 #, fuzzy msgid "Z Hand Wheel" msgstr "外观" -#: src/emc/usr_intf/pncconf/pncconf.py:582 +#: src/emc/usr_intf/pncconf/pncconf.py:513 #, fuzzy msgid "A Hand Wheel" msgstr "外观" -#: src/emc/usr_intf/pncconf/pncconf.py:582 +#: src/emc/usr_intf/pncconf/pncconf.py:513 msgid "Multi Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:583 +#: src/emc/usr_intf/pncconf/pncconf.py:514 #, fuzzy msgid "Feed Override" msgstr "进给倍率:" -#: src/emc/usr_intf/pncconf/pncconf.py:583 +#: src/emc/usr_intf/pncconf/pncconf.py:514 #, fuzzy msgid "spindle Override" msgstr "主轴倍率:" -#: src/emc/usr_intf/pncconf/pncconf.py:583 +#: src/emc/usr_intf/pncconf/pncconf.py:514 #, fuzzy msgid "Max Vel Override" msgstr "进给倍率:" -#: src/emc/usr_intf/pncconf/pncconf.py:584 +#: src/emc/usr_intf/pncconf/pncconf.py:515 #, fuzzy msgid "Unused Encoder" msgstr "未使用" -#: src/emc/usr_intf/pncconf/pncconf.py:584 +#: src/emc/usr_intf/pncconf/pncconf.py:515 #, fuzzy msgid "Axis Encoder" msgstr "统一码" -#: src/emc/usr_intf/pncconf/pncconf.py:584 +#: src/emc/usr_intf/pncconf/pncconf.py:515 #, fuzzy msgid "MPG Jog Controls" msgstr "用户界面控件" -#: src/emc/usr_intf/pncconf/pncconf.py:584 +#: src/emc/usr_intf/pncconf/pncconf.py:515 msgid "Override MPG control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 +#: src/emc/usr_intf/pncconf/pncconf.py:518 #, fuzzy msgid "Unused Resolver" msgstr "未使用" -#: src/emc/usr_intf/pncconf/pncconf.py:587 +#: src/emc/usr_intf/pncconf/pncconf.py:518 msgid "X Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 +#: src/emc/usr_intf/pncconf/pncconf.py:518 msgid "Y Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 +#: src/emc/usr_intf/pncconf/pncconf.py:518 msgid "Z Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:588 +#: src/emc/usr_intf/pncconf/pncconf.py:519 msgid "A Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:588 +#: src/emc/usr_intf/pncconf/pncconf.py:519 msgid "S Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:592 +#: src/emc/usr_intf/pncconf/pncconf.py:523 #, fuzzy msgid "Unused 8I20" msgstr "未使用" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:61457 +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "X Axis" msgstr "X 轴:" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:62549 +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Y Axis" msgstr "轴:" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:63642 +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Z Axis" msgstr "轴:" -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.glade:64735 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "A Axis" msgstr "轴:" -#: src/emc/usr_intf/pncconf/pncconf.py:597 +#: src/emc/usr_intf/pncconf/pncconf.py:528 #, fuzzy msgid "Unused Analog Output" msgstr "输出" -#: src/emc/usr_intf/pncconf/pncconf.py:597 +#: src/emc/usr_intf/pncconf/pncconf.py:528 #, fuzzy msgid "Spindle Output" msgstr "主轴启动" -#: src/emc/usr_intf/pncconf/pncconf.py:613 +#: src/emc/usr_intf/pncconf/pncconf.py:551 #, fuzzy msgid "Unused StepGen" msgstr "未使用" -#: src/emc/usr_intf/pncconf/pncconf.py:613 +#: src/emc/usr_intf/pncconf/pncconf.py:551 #, fuzzy msgid "X Axis StepGen" msgstr "未使用" -#: src/emc/usr_intf/pncconf/pncconf.py:613 +#: src/emc/usr_intf/pncconf/pncconf.py:551 #, fuzzy msgid "Y Axis StepGen" msgstr "未使用" -#: src/emc/usr_intf/pncconf/pncconf.py:613 +#: src/emc/usr_intf/pncconf/pncconf.py:551 #, fuzzy msgid "Z Axis StepGen" msgstr "未使用" -#: src/emc/usr_intf/pncconf/pncconf.py:614 +#: src/emc/usr_intf/pncconf/pncconf.py:552 #, fuzzy msgid "A Axis StepGen" msgstr "未使用" -#: src/emc/usr_intf/pncconf/pncconf.py:614 +#: src/emc/usr_intf/pncconf/pncconf.py:552 #, fuzzy msgid "Spindle StepGen" msgstr "Spindle Index" -#: src/emc/usr_intf/pncconf/pncconf.py:628 +#: src/emc/usr_intf/pncconf/pncconf.py:552 +#, fuzzy +msgid "X2 Tandem StepGen" +msgstr "Spindle Index" + +#: src/emc/usr_intf/pncconf/pncconf.py:552 +#, fuzzy +msgid "Y2 Tandem StepGen" +msgstr "Spindle Index" + +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#, fuzzy +msgid "Z2 Tandem StepGen" +msgstr "Spindle Index" + +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#, fuzzy +msgid "Charge Pump StepGen" +msgstr "Charge Pump" + +#: src/emc/usr_intf/pncconf/pncconf.py:567 #, fuzzy msgid "Unused TPPWM Gen" msgstr "未使用" -#: src/emc/usr_intf/pncconf/pncconf.py:628 +#: src/emc/usr_intf/pncconf/pncconf.py:567 msgid "X Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:628 +#: src/emc/usr_intf/pncconf/pncconf.py:567 msgid "Y Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 +#: src/emc/usr_intf/pncconf/pncconf.py:568 #, fuzzy msgid "Z Axis BL Driver" msgstr "Zip 驱动器" -#: src/emc/usr_intf/pncconf/pncconf.py:629 +#: src/emc/usr_intf/pncconf/pncconf.py:568 msgid "A Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 +#: src/emc/usr_intf/pncconf/pncconf.py:568 msgid "S Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -#: src/emc/usr_intf/pncconf/pncconf.py:6557 +#: src/emc/usr_intf/pncconf/pncconf.py:576 +#: src/emc/usr_intf/pncconf/pncconf.py:6882 #, fuzzy msgid "Unused Channel" msgstr "双声道" -#: src/emc/usr_intf/pncconf/pncconf.py:636 +#: src/emc/usr_intf/pncconf/pncconf.py:576 #, fuzzy msgid "8i20 Amplifier Card" msgstr "启动放大器" -#: src/emc/usr_intf/pncconf/pncconf.py:636 +#: src/emc/usr_intf/pncconf/pncconf.py:576 msgid "7i64 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 +#: src/emc/usr_intf/pncconf/pncconf.py:576 msgid "7i69 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 +#: src/emc/usr_intf/pncconf/pncconf.py:577 msgid "7i70 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 +#: src/emc/usr_intf/pncconf/pncconf.py:577 msgid "7i71 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 +#: src/emc/usr_intf/pncconf/pncconf.py:577 msgid "7i76 Mode 0 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:722 +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i77 Mode 0 I/O Card" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:578 +msgid "7i73 Mode 1 Pendant Card" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:580 +#, fuzzy +msgid "Unused Analog In" +msgstr "输出" + +#: src/emc/usr_intf/pncconf/pncconf.py:676 #, fuzzy msgid "my_LinuxCNC_machine" msgstr "机床(_M)" -#: src/emc/usr_intf/pncconf/pncconf.py:1328 +#: src/emc/usr_intf/pncconf/pncconf.py:939 +#: src/emc/usr_intf/pncconf/pncconf.py:941 +#, fuzzy +msgid "Enter Address" +msgstr "地址" + +#: src/emc/usr_intf/pncconf/pncconf.py:1290 msgid "" "This configuration was saved with an earlier version of pncconf which may be " "incompatible.\n" @@ -8611,152 +11088,141 @@ msgid "" "version of PNConf - ask on the LinuxCNC forum - it may be possible.." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1334 +#: src/emc/usr_intf/pncconf/pncconf.py:1296 #, fuzzy, python-format msgid "File %r was modified since it was written by PNCconf" msgstr "File %r was modified since it was written by stepconf" -#: src/emc/usr_intf/pncconf/pncconf.py:1338 +#: src/emc/usr_intf/pncconf/pncconf.py:1300 #, fuzzy msgid "" "Saving this configuration file will discard configuration changes made " "outside PNCconf." msgstr "按下该按钮将放弃在这个对话框中所做的修改" -#: src/emc/usr_intf/pncconf/pncconf.py:1365 -#: src/emc/usr_intf/pncconf/pncconf.py:2368 +#: src/emc/usr_intf/pncconf/pncconf.py:1327 +#: src/emc/usr_intf/pncconf/pncconf.py:2421 #, fuzzy, python-format msgid "# Generated by PNCconf at %s" msgstr "# Generated by stepconf at %s" -#: src/emc/usr_intf/pncconf/pncconf.py:1367 -#: src/emc/usr_intf/pncconf/pncconf.py:2370 +#: src/emc/usr_intf/pncconf/pncconf.py:1329 +#: src/emc/usr_intf/pncconf/pncconf.py:2423 #, fuzzy msgid "# overwritten when you run PNCconf again" msgstr "# overwritten when you run stepconf again" -#: src/emc/usr_intf/pncconf/pncconf.py:2070 +#: src/emc/usr_intf/pncconf/pncconf.py:2134 msgid "# Use ACTUAL spindle velocity from spindle encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2071 +#: src/emc/usr_intf/pncconf/pncconf.py:2135 msgid "# spindle-velocity bounces around so we filter it with lowpass" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2072 +#: src/emc/usr_intf/pncconf/pncconf.py:2136 msgid "" "# spindle-velocity is signed so we use absolute component to remove sign" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2073 +#: src/emc/usr_intf/pncconf/pncconf.py:2137 msgid "# ACTUAL velocity is in RPS not RPM so we scale it." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2082 -msgid "" -"# Use COMMANDED spindle velocity from LinuxCNC because no spindle encoder " -"was specified" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.py:2083 -msgid "" -"# COMMANDED velocity is signed so we use absolute component to remove sign" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.py:2727 +#: src/emc/usr_intf/pncconf/pncconf.py:2821 msgid "# connect miscellaneous signals" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2730 +#: src/emc/usr_intf/pncconf/pncconf.py:2824 msgid "# ---HALUI signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2749 +#: src/emc/usr_intf/pncconf/pncconf.py:2843 msgid "# ---charge pump signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2753 +#: src/emc/usr_intf/pncconf/pncconf.py:2847 msgid "# ---coolant signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2758 +#: src/emc/usr_intf/pncconf/pncconf.py:2852 msgid "# ---probe signal---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2763 +#: src/emc/usr_intf/pncconf/pncconf.py:2857 msgid "# ---jog button signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2768 +#: src/emc/usr_intf/pncconf/pncconf.py:2862 msgid "# ---USB device jog button signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2803 -#: src/emc/usr_intf/pncconf/pncconf.py:2825 +#: src/emc/usr_intf/pncconf/pncconf.py:2903 +#: src/emc/usr_intf/pncconf/pncconf.py:2929 msgid "# ---mpg signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2971 +#: src/emc/usr_intf/pncconf/pncconf.py:3111 msgid "# ---motion control signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2976 +#: src/emc/usr_intf/pncconf/pncconf.py:3116 msgid "# ---digital in / out signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2986 +#: src/emc/usr_intf/pncconf/pncconf.py:3126 msgid "# ---estop signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3005 +#: src/emc/usr_intf/pncconf/pncconf.py:3145 msgid "# ---manual tool change signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3014 +#: src/emc/usr_intf/pncconf/pncconf.py:3154 msgid "# ---toolchange signals for custom tool changer---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3036 +#: src/emc/usr_intf/pncconf/pncconf.py:3176 msgid "# --- Classicladder signals for Z axis Auto touch off program---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3055 +#: src/emc/usr_intf/pncconf/pncconf.py:3195 msgid "# These files are loaded post gladeVCP, in the order they appear" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3069 -#: src/emc/usr_intf/pncconf/pncconf.py:3136 +#: src/emc/usr_intf/pncconf/pncconf.py:3209 +#: src/emc/usr_intf/pncconf/pncconf.py:3276 #, fuzzy msgid "# _DO NOT_ include your HAL commands here." msgstr "#在此插入您自定义的 HAL 命令" -#: src/emc/usr_intf/pncconf/pncconf.py:3070 +#: src/emc/usr_intf/pncconf/pncconf.py:3210 msgid "# Put custom HAL commands in custom_gvcp.hal" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3073 +#: src/emc/usr_intf/pncconf/pncconf.py:3213 msgid "# **** Setup of spindle speed display using gladevcp ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3082 +#: src/emc/usr_intf/pncconf/pncconf.py:3222 msgid "# **** Setup GLADE MDI buttons ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3095 +#: src/emc/usr_intf/pncconf/pncconf.py:3235 msgid "" "# **** Z axis touch-off button - requires the touch-off classicladder " "program ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3125 +#: src/emc/usr_intf/pncconf/pncconf.py:3265 msgid "# These files are loaded post GUI, in the order they appear" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3137 +#: src/emc/usr_intf/pncconf/pncconf.py:3277 msgid "# Put custom HAL commands in custom_postgui.hal" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3138 +#: src/emc/usr_intf/pncconf/pncconf.py:3278 #, fuzzy msgid "# The commands in this file are run after the GUI loads" msgstr "" @@ -8765,112 +11231,117 @@ msgstr "" "# starts\n" "# This file will not be overwritten when you run stepconf again" -#: src/emc/usr_intf/pncconf/pncconf.py:3148 +#: src/emc/usr_intf/pncconf/pncconf.py:3288 msgid "# **** Setup of spindle speed display using pyvcp -END ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3160 +#: src/emc/usr_intf/pncconf/pncconf.py:3300 #, fuzzy msgid "# This file will not be overwritten when you run PNCconf again" msgstr "# This file will not be overwritten when you run stepconf again" -#: src/emc/usr_intf/pncconf/pncconf.py:3166 +#: src/emc/usr_intf/pncconf/pncconf.py:3306 msgid "# These commands are required for Touchy GUI" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3218 +#: src/emc/usr_intf/pncconf/pncconf.py:3358 #, fuzzy, python-format msgid "Generated by PNCconf at %s" msgstr "Generated by stepconf at %s" -#: src/emc/usr_intf/pncconf/pncconf.py:3230 +#: src/emc/usr_intf/pncconf/pncconf.py:3370 msgid "configures LinuxCNC as:\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3231 +#: src/emc/usr_intf/pncconf/pncconf.py:3371 msgid "type CNC\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3232 +#: src/emc/usr_intf/pncconf/pncconf.py:3372 msgid "will be used as the frontend display" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3241 +#: src/emc/usr_intf/pncconf/pncconf.py:3381 #, fuzzy msgid " connector" msgstr "连接" -#: src/emc/usr_intf/pncconf/pncconf.py:3253 +#: src/emc/usr_intf/pncconf/pncconf.py:3393 msgid "invrt" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3262 +#: src/emc/usr_intf/pncconf/pncconf.py:3402 #, python-format msgid "%(name)s Parport" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3267 -#: src/emc/usr_intf/pncconf/pncconf.py:3275 +#: src/emc/usr_intf/pncconf/pncconf.py:3407 +#: src/emc/usr_intf/pncconf/pncconf.py:3415 msgid "-> inverted" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3269 +#: src/emc/usr_intf/pncconf/pncconf.py:3409 #, python-format msgid "pin# %(pinnum)d is connected to input signal:'%(data)s' %(mesag)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3277 +#: src/emc/usr_intf/pncconf/pncconf.py:3417 #, python-format msgid "pin# %(pinnum)d is connected to output signal:'%(data)s' %(mesag)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3455 +#: src/emc/usr_intf/pncconf/pncconf.py:3595 msgid "Desktop Launcher for LinuxCNC config made by PNCconf" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3725 +#: src/emc/usr_intf/pncconf/pncconf.py:3856 +#, python-format +msgid "%s Axis Configuration" +msgstr "%s 轴配置" + +#: src/emc/usr_intf/pncconf/pncconf.py:3881 #, fuzzy msgid "Spindle Motor/Encoder Configuration" msgstr "X 轴配置" -#: src/emc/usr_intf/pncconf/pncconf.py:3727 +#: src/emc/usr_intf/pncconf/pncconf.py:3883 #, fuzzy, python-format msgid "%s Axis Motor/Encoder Configuration" msgstr "%s 轴配置" -#: src/emc/usr_intf/pncconf/pncconf.py:3756 +#: src/emc/usr_intf/pncconf/pncconf.py:3912 #, fuzzy, python-format msgid "%s Parallel Port Setup" msgstr "并口设置" -#: src/emc/usr_intf/pncconf/pncconf.py:3780 +#: src/emc/usr_intf/pncconf/pncconf.py:3936 #, python-format msgid "%s I/0 Setup" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4001 +#: src/emc/usr_intf/pncconf/pncconf.py:4162 #, fuzzy msgid "Quit PNCconfig and discard changes?" msgstr "Quit Stepconf and discard changes?" -#: src/emc/usr_intf/pncconf/pncconf.py:4042 -#: src/emc/usr_intf/pncconf/pncconf.glade:65849 +#: src/emc/usr_intf/pncconf/pncconf.py:4203 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Help Pages" msgstr "Depth images" -#: src/emc/usr_intf/pncconf/pncconf.py:4047 +#: src/emc/usr_intf/pncconf/pncconf.py:4208 #, fuzzy msgid "Help page is unavailable\n" msgstr "没有可用的描述" -#: src/emc/usr_intf/pncconf/pncconf.py:4054 +#: src/emc/usr_intf/pncconf/pncconf.py:4218 msgid "" "You are using a simulated-realtime version of LinuxCNC, so testing / tuning " "of external hardware is unavailable." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4059 +#: src/emc/usr_intf/pncconf/pncconf.py:4223 #, python-format msgid "" "You are using a realtime version of LinuxCNC but didn't load a realtime " @@ -8880,113 +11351,106 @@ msgid "" " You are using the %(actual)s kernel instead of %(needed)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4079 -#, python-format -msgid "" -"You are have no hostmot2 firmware downloaded in folder:\n" -"%s\n" -"PNCconf will use sample firmware data\n" -"live testing will not be possible" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.py:4093 +#: src/emc/usr_intf/pncconf/pncconf.py:4256 #, fuzzy msgid "LinuxCNC 'PNCconf' configuration files" msgstr "EMC2 'stepconf' 配置文件" -#: src/emc/usr_intf/pncconf/pncconf.py:4123 +#: src/emc/usr_intf/pncconf/pncconf.py:4286 msgid "" "It seems data in this file is from too old of a version of PNCConf to " "continue.\n" "." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4130 -#: src/emc/usr_intf/pncconf/pncconf.py:4228 +#: src/emc/usr_intf/pncconf/pncconf.py:4293 +#: src/emc/usr_intf/pncconf/pncconf.py:4391 #, fuzzy, python-format msgid "Point and click configuration - %s.pncconf " msgstr "EMC2 步进Mill配置" -#: src/emc/usr_intf/pncconf/pncconf.py:4250 +#: src/emc/usr_intf/pncconf/pncconf.py:4413 msgid "" "You need to designate a parport and/or mesa I/O device before continuing." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4309 +#: src/emc/usr_intf/pncconf/pncconf.py:4481 msgid "" "You Have choosen to re-edit the current config, so you can not go to the new/" "modify page.\n" " Quit and reload PNCconf if you wish to build a new config." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4313 +#: src/emc/usr_intf/pncconf/pncconf.py:4485 msgid "" "If you can not go to the new/modify page your current data will be lost.\n" "Ok to reset data and start a new configuration?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4594 +#: src/emc/usr_intf/pncconf/pncconf.py:4811 msgid "USB device Info Search" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4608 +#: src/emc/usr_intf/pncconf/pncconf.py:4825 #, fuzzy msgid "USB device page is unavailable\n" msgstr "没有可用的描述" -#: src/emc/usr_intf/pncconf/pncconf.py:4673 +#: src/emc/usr_intf/pncconf/pncconf.py:4890 msgid "Pin names are unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4695 +#: src/emc/usr_intf/pncconf/pncconf.py:4912 msgid "Device names are unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4698 +#: src/emc/usr_intf/pncconf/pncconf.py:4915 msgid "No Pncconf made device rules were found\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4822 +#: src/emc/usr_intf/pncconf/pncconf.py:5041 msgid "" "OK to replace existing glade panel ?\n" "It will be renamed and added to 'backups' folder.\n" -" Clicking 'existing custom program' will aviod this warning. " +" Clicking 'existing custom program' will avoid this warning, but if you " +"change related options later -such as spindle feedback- the HAL connection " +"will not update" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4827 +#: src/emc/usr_intf/pncconf/pncconf.py:5047 msgid "" "OK to replace existing custom pyvcp panel?\n" "Existing pyvcp-panel.xml will be renamed and added to 'backups' folder\n" "Clicking 'existing custom program' will aviod this warning. " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5250 +#: src/emc/usr_intf/pncconf/pncconf.py:5493 msgid "" "You need to configure the mesa0 page.\n" " Choose the board type, firmware, component amounts and press 'Accept " "component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5254 +#: src/emc/usr_intf/pncconf/pncconf.py:5497 msgid "" "The chosen Mesa0 board is different from the current displayed.\n" "please press 'Accept component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5297 +#: src/emc/usr_intf/pncconf/pncconf.py:5540 msgid "" "You need to configure the mesa1 page.\n" " Choose the board type, firmware, component amounts and press 'Accept " "component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5301 +#: src/emc/usr_intf/pncconf/pncconf.py:5544 msgid "" "The chosen Mesa1 board is different from the current displayed.\n" "please press 'Accept component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5315 +#: src/emc/usr_intf/pncconf/pncconf.py:5558 msgid "" "Do to technical reasons this test panel can be loaded only once without " "reloading pncconf.You also will not be able to do any other testing untill " @@ -8995,199 +11459,210 @@ msgid "" "Do you wish to continue the test?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6699 +#: src/emc/usr_intf/pncconf/pncconf.py:7042 #, fuzzy msgid "First Parallel Port set for OUTPUT" msgstr "并口设置" -#: src/emc/usr_intf/pncconf/pncconf.py:6701 +#: src/emc/usr_intf/pncconf/pncconf.py:7044 #, fuzzy msgid "First Parallel Port set for INPUT" msgstr "并口设置" -#: src/emc/usr_intf/pncconf/pncconf.py:6725 +#: src/emc/usr_intf/pncconf/pncconf.py:7068 msgid "Second Parallel Port set for OUTPUT" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6727 +#: src/emc/usr_intf/pncconf/pncconf.py:7070 #, fuzzy msgid "Second Parallel Port set for INPUT" msgstr "并口设置" -#: src/emc/usr_intf/pncconf/pncconf.py:6739 +#: src/emc/usr_intf/pncconf/pncconf.py:7082 #, fuzzy msgid "Third Parallel Port set for OUTPUT" msgstr "并口设置" -#: src/emc/usr_intf/pncconf/pncconf.py:6741 +#: src/emc/usr_intf/pncconf/pncconf.py:7084 #, fuzzy msgid "Third Parallel Port set for INPUT" msgstr "并口设置" -#: src/emc/usr_intf/pncconf/pncconf.py:6866 +#: src/emc/usr_intf/pncconf/pncconf.py:7210 msgid "You can not have both steppers and pwm signals for spindle control\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6870 +#: src/emc/usr_intf/pncconf/pncconf.py:7214 #, python-format msgid "You forgot to designate a stepper or pwm signal for axis %s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6873 +#: src/emc/usr_intf/pncconf/pncconf.py:7217 #, python-format msgid "You forgot to designate an encoder /resolver signal for axis %s servo\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6876 +#: src/emc/usr_intf/pncconf/pncconf.py:7220 #, python-format msgid "You forgot to designate a pwm signal or stepper signal for axis %s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6879 +#: src/emc/usr_intf/pncconf/pncconf.py:7223 #, python-format msgid "You can not have both steppers and pwm signals for axis %s\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6887 +#: src/emc/usr_intf/pncconf/pncconf.py:7226 +#, python-format +msgid "" +"If using a tandem axis stepper, you must select a master stepgen for axis " +"%s\n" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:7235 msgid "Touchy require an external cycle start signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6890 +#: src/emc/usr_intf/pncconf/pncconf.py:7238 msgid "Touchy require an external abort signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6893 +#: src/emc/usr_intf/pncconf/pncconf.py:7241 msgid "Touchy require an external single-step signal\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6896 +#: src/emc/usr_intf/pncconf/pncconf.py:7244 msgid "" "Touchy require an external multi handwheel MPG encoder signal on the mesa " "page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6899 +#: src/emc/usr_intf/pncconf/pncconf.py:7247 msgid "" "Touchy require 'external mpg jogging' to be selected on the external control " "page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6902 +#: src/emc/usr_intf/pncconf/pncconf.py:7250 msgid "" "Touchy require the external mpg to be in 'shared mpg' mode on the external " "controls page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6905 +#: src/emc/usr_intf/pncconf/pncconf.py:7253 msgid "" "Touchy require selectable increments to be unchecked on the external " "controls page\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6909 +#: src/emc/usr_intf/pncconf/pncconf.py:7257 msgid "" "The 7i29 daughter board requires PWM type generators and a PWM base " "frequency of 20 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6912 +#: src/emc/usr_intf/pncconf/pncconf.py:7260 msgid "" "The 7i30 daughter board requires PWM type generators and a PWM base " "frequency of 20 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6915 +#: src/emc/usr_intf/pncconf/pncconf.py:7263 msgid "" "The 7i33 daughter board requires PDM type generators and a PDM base " "frequency of 6 Mhz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6918 +#: src/emc/usr_intf/pncconf/pncconf.py:7266 msgid "" "The 7i40 daughter board requires PWM type generators and a PWM base " "frequency of 50 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6921 +#: src/emc/usr_intf/pncconf/pncconf.py:7269 msgid "" "The 7i48 daughter board requires UDM type generators and a PWM base " "frequency of 24 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7148 +#: src/emc/usr_intf/pncconf/pncconf.py:7494 #, fuzzy msgid "Gearbox Reduction Ratio" msgstr "目标" -#: src/emc/usr_intf/pncconf/pncconf.py:7151 +#: src/emc/usr_intf/pncconf/pncconf.py:7497 #, fuzzy msgid "Reduction Ratio" msgstr "目标" -#: src/emc/usr_intf/pncconf/pncconf.py:7154 +#: src/emc/usr_intf/pncconf/pncconf.py:7500 #, fuzzy msgid "Leadscrew Pitch" msgstr "丝杆螺距(_L):" -#: src/emc/usr_intf/pncconf/pncconf.py:7157 -#: src/emc/usr_intf/pncconf/pncconf.glade:66327 -#: src/emc/usr_intf/pncconf/pncconf.glade:66622 +#: src/emc/usr_intf/pncconf/pncconf.py:7503 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Leadscrew TPI" msgstr "丝杆螺距(_L):" -#: src/emc/usr_intf/pncconf/pncconf.py:7161 -#: src/emc/usr_intf/pncconf/pncconf.py:7162 +#: src/emc/usr_intf/pncconf/pncconf.py:7507 +#: src/emc/usr_intf/pncconf/pncconf.py:7508 msgid "(" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7163 -#: src/emc/usr_intf/pncconf/pncconf.py:7173 -#: src/emc/usr_intf/pncconf/pncconf.py:7174 -#: src/emc/usr_intf/pncconf/pncconf.py:7175 +#: src/emc/usr_intf/pncconf/pncconf.py:7509 +#: src/emc/usr_intf/pncconf/pncconf.py:7519 +#: src/emc/usr_intf/pncconf/pncconf.py:7520 +#: src/emc/usr_intf/pncconf/pncconf.py:7521 #, fuzzy msgid " / min" msgstr "毫米/秒" -#: src/emc/usr_intf/pncconf/pncconf.py:7164 +#: src/emc/usr_intf/pncconf/pncconf.py:7510 #, fuzzy msgid " / sec²" msgstr "mm / s²" -#: src/emc/usr_intf/pncconf/pncconf.py:7167 +#: src/emc/usr_intf/pncconf/pncconf.py:7513 #, fuzzy msgid " / Step" msgstr "mm / rev" -#: src/emc/usr_intf/pncconf/pncconf.py:7168 +#: src/emc/usr_intf/pncconf/pncconf.py:7514 #, fuzzy msgid "Steps / " msgstr "rev / in" -#: src/emc/usr_intf/pncconf/pncconf.py:7170 +#: src/emc/usr_intf/pncconf/pncconf.py:7516 #, fuzzy msgid " / encoder pulse" msgstr "度/次" -#: src/emc/usr_intf/pncconf/pncconf.py:7171 +#: src/emc/usr_intf/pncconf/pncconf.py:7517 #, fuzzy msgid "Encoder pulses / " msgstr "给文本加下划线" -#: src/emc/usr_intf/pncconf/pncconf.py:7482 +#: src/emc/usr_intf/pncconf/pncconf.py:7525 +#, fuzzy +msgid "Resolver Scale:" +msgstr "单步大小:" + +#: src/emc/usr_intf/pncconf/pncconf.py:7826 #, fuzzy msgid "Axis Scale Calculation" msgstr "退出应用程序" -#: src/emc/usr_intf/pncconf/pncconf.py:7785 +#: src/emc/usr_intf/pncconf/pncconf.py:8133 msgid "You need to designate an E-stop input pin for this ladder program." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7797 +#: src/emc/usr_intf/pncconf/pncconf.py:8145 msgid "You need to designate a probe input pin for this ladder program." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7808 +#: src/emc/usr_intf/pncconf/pncconf.py:8156 msgid "" "OK to replace existing custom ladder program?\n" "Existing Custom.clp will be renamed custom_backup.clp.\n" @@ -9195,88 +11670,88 @@ msgid "" "ladder program' will avoid this warning" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8019 +#: src/emc/usr_intf/pncconf/pncconf.py:8374 msgid "Do you wish to continue to edit this configuration." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8058 +#: src/emc/usr_intf/pncconf/pncconf.py:8413 msgid "PCI search page is unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8176 +#: src/emc/usr_intf/pncconf/pncconf.py:8532 msgid "" "You specified there is an existing gladefile, But there is not one in the " "machine-named folder.." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8495 +#: src/emc/usr_intf/pncconf/pncconf.py:8856 msgid "Servo tuning is not avaiable in PNCconf yet\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8500 +#: src/emc/usr_intf/pncconf/pncconf.py:8861 #, fuzzy msgid "degrees" msgstr "绿" -#: src/emc/usr_intf/pncconf/pncconf.py:8501 +#: src/emc/usr_intf/pncconf/pncconf.py:8862 #, fuzzy msgid "degrees / minute" msgstr "度/次" -#: src/emc/usr_intf/pncconf/pncconf.py:8502 +#: src/emc/usr_intf/pncconf/pncconf.py:8863 #, fuzzy msgid "degrees / second²" msgstr "度/次" -#: src/emc/usr_intf/pncconf/pncconf.py:8504 +#: src/emc/usr_intf/pncconf/pncconf.py:8865 #, fuzzy msgid "revolutions" msgstr "分辨率" -#: src/emc/usr_intf/pncconf/pncconf.py:8505 +#: src/emc/usr_intf/pncconf/pncconf.py:8866 msgid "rpm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8506 +#: src/emc/usr_intf/pncconf/pncconf.py:8867 #, fuzzy msgid "revs / second²" msgstr "度/次" -#: src/emc/usr_intf/pncconf/pncconf.py:8509 -#: src/emc/usr_intf/pncconf/pncconf.glade:58295 -#: src/emc/usr_intf/pncconf/pncconf.glade:58479 -#: src/emc/usr_intf/pncconf/pncconf.glade:58576 +#: src/emc/usr_intf/pncconf/pncconf.py:8870 +#: src/emc/usr_intf/pncconf/pncconf.glade:65184 +#: src/emc/usr_intf/pncconf/pncconf.glade:65281 +#: src/emc/usr_intf/pncconf/pncconf.glade:65465 #, fuzzy msgid "mm / minute" msgstr "1 分钟" -#: src/emc/usr_intf/pncconf/pncconf.py:8510 +#: src/emc/usr_intf/pncconf/pncconf.py:8871 #, fuzzy msgid "mm / second²" msgstr "mm / s²" -#: src/emc/usr_intf/pncconf/pncconf.py:8513 +#: src/emc/usr_intf/pncconf/pncconf.py:8874 #, fuzzy msgid "inches / minute" msgstr "1 分钟" -#: src/emc/usr_intf/pncconf/pncconf.py:8514 +#: src/emc/usr_intf/pncconf/pncconf.py:8875 #, fuzzy msgid "inches / second²" msgstr "in / s²" -#: src/emc/usr_intf/pncconf/pncconf.py:8646 +#: src/emc/usr_intf/pncconf/pncconf.py:9031 #, fuzzy, python-format msgid "%s Axis Tune" msgstr "%s 轴测试" -#: src/emc/usr_intf/pncconf/pncconf.py:8810 +#: src/emc/usr_intf/pncconf/pncconf.py:9195 msgid "" " You must designate a ENCODER / RESOLVER signal and an ANALOG SPINDLE signal " "for this axis test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8814 +#: src/emc/usr_intf/pncconf/pncconf.py:9199 msgid "" " You must designate a ENCODER / RESOLVER signal and a PWM signal for this " "axis test" @@ -9304,98 +11779,120 @@ msgstr "" msgid "Create or Edit" msgstr "创建项目" -#: src/emc/usr_intf/pncconf/pncconf.glade:52 -#, fuzzy -msgid "Create a new configuration" -msgstr "创建新配置" +#: src/emc/usr_intf/pncconf/pncconf.glade:66 +msgid "Create a desktop launcher to start LinuxCNC with this configuration." +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:118 +#: src/emc/usr_intf/pncconf/pncconf.glade:83 msgid "Create a desktop shortcut (symlink) to configuration files." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:135 -msgid "Create a desktop launcher to start LinuxCNC with this configuration." -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:148 +#, fuzzy +msgid "Create a new configuration" +msgstr "创建新配置" + +#: src/emc/usr_intf/pncconf/pncconf.glade:175 +msgid "Basic machine information" +msgstr "机床基本信息" #: src/emc/usr_intf/pncconf/pncconf.glade:214 #, fuzzy msgid "Machine Name:" msgstr "机床名称:" -#: src/emc/usr_intf/pncconf/pncconf.glade:281 +#: src/emc/usr_intf/pncconf/pncconf.glade:280 #, fuzzy msgid "Axis configuration:" msgstr "轴配置" -#: src/emc/usr_intf/pncconf/pncconf.glade:316 +#: src/emc/usr_intf/pncconf/pncconf.glade:295 +msgid "" +"XYZ\n" +"XYZA\n" +"XZ (Lathe)" +msgstr "" +"XYZ\n" +"XYZA\n" +"XZ (车床)" + +#: src/emc/usr_intf/pncconf/pncconf.glade:322 #, fuzzy msgid "Machine units:" msgstr "机床单位:" -#: src/emc/usr_intf/pncconf/pncconf.glade:355 +#: src/emc/usr_intf/pncconf/pncconf.glade:337 +msgid "" +"Inch\n" +"Millimeter" +msgstr "" +"英制\n" +"公制" + +#: src/emc/usr_intf/pncconf/pncconf.glade:363 #, fuzzy msgid "Machine Basics" msgstr "行号" -#: src/emc/usr_intf/pncconf/pncconf.glade:405 -msgid "Recommend servo period: 1000000" +#: src/emc/usr_intf/pncconf/pncconf.glade:416 +msgid "Actual Servo Period: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:431 -msgid "Actual Servo Period: " +#: src/emc/usr_intf/pncconf/pncconf.glade:475 +msgid "Recommend servo period: 1000000" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:486 +#: src/emc/usr_intf/pncconf/pncconf.glade:494 msgid "" " Test Base\n" "Period Jitter " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:511 +#: src/emc/usr_intf/pncconf/pncconf.glade:519 msgid "Computer Response Time" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:553 +#: src/emc/usr_intf/pncconf/pncconf.glade:561 msgid "Mesa0 PCI / Parport Card:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:563 +#: src/emc/usr_intf/pncconf/pncconf.glade:571 msgid "Mesa1 PCI / Parport Card:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:576 +#: src/emc/usr_intf/pncconf/pncconf.glade:584 #, fuzzy msgid "First Parport Address:" msgstr "Parport Base Address:" -#: src/emc/usr_intf/pncconf/pncconf.glade:589 +#: src/emc/usr_intf/pncconf/pncconf.glade:597 #, fuzzy msgid "Second Parport Address:" msgstr "Parport Base Address:" -#: src/emc/usr_intf/pncconf/pncconf.glade:604 +#: src/emc/usr_intf/pncconf/pncconf.glade:612 #, fuzzy msgid "Third Parport Address:" msgstr "Parport Base Address:" -#: src/emc/usr_intf/pncconf/pncconf.glade:627 #: src/emc/usr_intf/pncconf/pncconf.glade:635 +#: src/emc/usr_intf/pncconf/pncconf.glade:643 msgid "" "5i20\n" "5i23\n" "5i22" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:708 -#: src/emc/usr_intf/pncconf/pncconf.glade:720 -#: src/emc/usr_intf/pncconf/pncconf.glade:733 +#: src/emc/usr_intf/pncconf/pncconf.glade:716 +#: src/emc/usr_intf/pncconf/pncconf.glade:728 +#: src/emc/usr_intf/pncconf/pncconf.glade:741 #, fuzzy msgid "" "In\n" "Out" msgstr "输入" -#: src/emc/usr_intf/pncconf/pncconf.glade:796 +#: src/emc/usr_intf/pncconf/pncconf.glade:804 msgid "" "Add-on PCI\n" " Parport\n" @@ -9403,776 +11900,741 @@ msgid "" " Search" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:821 +#: src/emc/usr_intf/pncconf/pncconf.glade:829 msgid "I/O Control Ports/ Boards" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:870 +#: src/emc/usr_intf/pncconf/pncconf.glade:878 #, fuzzy msgid "Axis" msgstr "轴:" -#: src/emc/usr_intf/pncconf/pncconf.glade:885 +#: src/emc/usr_intf/pncconf/pncconf.glade:893 msgid "TKLinuxCNC" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:899 +#: src/emc/usr_intf/pncconf/pncconf.glade:907 #, fuzzy msgid "Mini" msgstr "最小:" -#: src/emc/usr_intf/pncconf/pncconf.glade:913 -#: src/emc/usr_intf/pncconf/pncconf.glade:6648 +#: src/emc/usr_intf/pncconf/pncconf.glade:921 +#: src/emc/usr_intf/pncconf/pncconf.glade:6656 #, fuzzy msgid "Touchy" msgstr "对刀" -#: src/emc/usr_intf/pncconf/pncconf.glade:930 +#: src/emc/usr_intf/pncconf/pncconf.glade:938 #, fuzzy msgid "GUI frontend list" msgstr "字体" -#: src/emc/usr_intf/pncconf/pncconf.glade:965 +#: src/emc/usr_intf/pncconf/pncconf.glade:973 #, fuzzy msgid "External Controls" msgstr "外部程序" -#: src/emc/usr_intf/pncconf/pncconf.glade:1006 +#: src/emc/usr_intf/pncconf/pncconf.glade:1014 #, fuzzy msgid "Add device rule" msgstr "添加服务" -#: src/emc/usr_intf/pncconf/pncconf.glade:1019 +#: src/emc/usr_intf/pncconf/pncconf.glade:1027 #, fuzzy msgid "Test device" msgstr "游戏杆设备:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1033 +#: src/emc/usr_intf/pncconf/pncconf.glade:1041 #, fuzzy msgid "Search for device rules" msgstr "搜索文件" -#: src/emc/usr_intf/pncconf/pncconf.glade:1054 +#: src/emc/usr_intf/pncconf/pncconf.glade:1062 #, fuzzy msgid "Device Name:" msgstr "设备路径:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1117 -#: src/emc/usr_intf/pncconf/pncconf.glade:1255 -#, fuzzy -msgid "Jog Speed select A" -msgstr "手动速度:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1195 -msgid "Z -" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1207 -msgid "Y -" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1219 -msgid "X -" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1229 -msgid "Z +" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1239 -msgid "Y +" +#: src/emc/usr_intf/pncconf/pncconf.glade:1125 +msgid "A +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1249 -msgid "X +" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1135 +#, fuzzy +msgid "A -" +msgstr "添加 ->" -#: src/emc/usr_intf/pncconf/pncconf.glade:1289 -#: src/emc/usr_intf/pncconf/pncconf.glade:2208 -#: src/emc/usr_intf/pncconf/pncconf.glade:3496 -#: src/emc/usr_intf/pncconf/pncconf.glade:4377 -#: src/emc/usr_intf/pncconf/pncconf.glade:5258 +#: src/emc/usr_intf/pncconf/pncconf.glade:1169 +#: src/emc/usr_intf/pncconf/pncconf.glade:1181 +#: src/emc/usr_intf/pncconf/pncconf.glade:1191 +#: src/emc/usr_intf/pncconf/pncconf.glade:1246 +#: src/emc/usr_intf/pncconf/pncconf.glade:1759 #, fuzzy -msgid "default" -msgstr "界面" +msgid "mm/min " +msgstr "分" -#: src/emc/usr_intf/pncconf/pncconf.glade:1299 -#: src/emc/usr_intf/pncconf/pncconf.glade:2107 -#: src/emc/usr_intf/pncconf/pncconf.glade:3443 -#: src/emc/usr_intf/pncconf/pncconf.glade:4324 -#: src/emc/usr_intf/pncconf/pncconf.glade:5205 +#: src/emc/usr_intf/pncconf/pncconf.glade:1269 #, fuzzy -msgid " a)" +msgid " ab)" msgstr "标签" -#: src/emc/usr_intf/pncconf/pncconf.glade:1311 -#: src/emc/usr_intf/pncconf/pncconf.glade:2096 -#: src/emc/usr_intf/pncconf/pncconf.glade:3432 -#: src/emc/usr_intf/pncconf/pncconf.glade:4313 -#: src/emc/usr_intf/pncconf/pncconf.glade:5194 +#: src/emc/usr_intf/pncconf/pncconf.glade:1282 +#: src/emc/usr_intf/pncconf/pncconf.glade:2493 +#: src/emc/usr_intf/pncconf/pncconf.glade:2927 +#: src/emc/usr_intf/pncconf/pncconf.glade:3808 +#: src/emc/usr_intf/pncconf/pncconf.glade:4689 #, fuzzy msgid " b)" msgstr "标签" -#: src/emc/usr_intf/pncconf/pncconf.glade:1322 +#: src/emc/usr_intf/pncconf/pncconf.glade:1293 +#: src/emc/usr_intf/pncconf/pncconf.glade:2482 +#: src/emc/usr_intf/pncconf/pncconf.glade:2916 +#: src/emc/usr_intf/pncconf/pncconf.glade:3797 +#: src/emc/usr_intf/pncconf/pncconf.glade:4678 #, fuzzy -msgid " ab)" +msgid " a)" msgstr "标签" -#: src/emc/usr_intf/pncconf/pncconf.glade:1348 -#: src/emc/usr_intf/pncconf/pncconf.glade:1401 -#: src/emc/usr_intf/pncconf/pncconf.glade:1413 -#: src/emc/usr_intf/pncconf/pncconf.glade:1423 -#: src/emc/usr_intf/pncconf/pncconf.glade:1751 +#: src/emc/usr_intf/pncconf/pncconf.glade:1305 +#: src/emc/usr_intf/pncconf/pncconf.glade:2385 +#: src/emc/usr_intf/pncconf/pncconf.glade:2867 +#: src/emc/usr_intf/pncconf/pncconf.glade:3748 +#: src/emc/usr_intf/pncconf/pncconf.glade:4629 #, fuzzy -msgid "mm/min " -msgstr "分" +msgid "default" +msgstr "界面" -#: src/emc/usr_intf/pncconf/pncconf.glade:1456 +#: src/emc/usr_intf/pncconf/pncconf.glade:1336 +#: src/emc/usr_intf/pncconf/pncconf.glade:1476 #, fuzzy -msgid "A -" -msgstr "添加 ->" +msgid "Jog Speed select A" +msgstr "手动速度:" -#: src/emc/usr_intf/pncconf/pncconf.glade:1468 -msgid "A +" +#: src/emc/usr_intf/pncconf/pncconf.glade:1348 +msgid "X +" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1354 +msgid "Y +" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1364 +msgid "Z +" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1374 +msgid "X -" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1384 +msgid "Y -" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1396 +msgid "Z -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1492 +#: src/emc/usr_intf/pncconf/pncconf.glade:1500 #, fuzzy msgid "Digital Control" msgstr "Digital out 0" -#: src/emc/usr_intf/pncconf/pncconf.glade:1539 -#, fuzzy -msgid "X " -msgstr "X" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1545 -#: src/emc/usr_intf/pncconf/pncconf.glade:5901 -#: src/emc/usr_intf/pncconf/pncconf.glade:6531 -#: src/emc/usr_intf/pncconf/pncconf.glade:6910 -#: src/emc/usr_intf/pncconf/pncconf.glade:7257 -#, fuzzy -msgid "Y" -msgstr "yY" +#: src/emc/usr_intf/pncconf/pncconf.glade:1593 +#: src/emc/usr_intf/gscreen/gscreen.glade:502 +msgid "A" +msgstr "A" -#: src/emc/usr_intf/pncconf/pncconf.glade:1555 +#: src/emc/usr_intf/pncconf/pncconf.glade:1603 +#: src/emc/usr_intf/gscreen/gscreen.glade:374 msgid "Z" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1565 -msgid "A" -msgstr "A" +#: src/emc/usr_intf/pncconf/pncconf.glade:1613 +#: src/emc/usr_intf/pncconf/pncconf.glade:6134 +#: src/emc/usr_intf/pncconf/pncconf.glade:6458 +#: src/emc/usr_intf/pncconf/pncconf.glade:6860 +#: src/emc/usr_intf/pncconf/pncconf.glade:7235 +#: src/emc/usr_intf/gscreen/gscreen.glade:244 +#, fuzzy +msgid "Y" +msgstr "yY" #: src/emc/usr_intf/pncconf/pncconf.glade:1623 #, fuzzy +msgid "X " +msgstr "X" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1631 +#, fuzzy msgid "Analog Control" msgstr "手动控制" -#: src/emc/usr_intf/pncconf/pncconf.glade:1649 -#: src/emc/usr_intf/pncconf/pncconf.glade:1780 -#: src/emc/usr_intf/pncconf/pncconf.glade:2690 -#: src/emc/usr_intf/pncconf/pncconf.glade:3571 -#: src/emc/usr_intf/pncconf/pncconf.glade:4452 -#: src/emc/usr_intf/pncconf/pncconf.glade:5333 -#: src/emc/usr_intf/pncconf/pncconf.glade:57371 +#: src/emc/usr_intf/pncconf/pncconf.glade:1657 +#: src/emc/usr_intf/pncconf/pncconf.glade:1788 +#: src/emc/usr_intf/pncconf/pncconf.glade:2698 +#: src/emc/usr_intf/pncconf/pncconf.glade:3579 +#: src/emc/usr_intf/pncconf/pncconf.glade:4460 +#: src/emc/usr_intf/pncconf/pncconf.glade:5341 +#: src/emc/usr_intf/pncconf/pncconf.glade:64300 #, fuzzy msgid "Details" msgstr "细节(_D)" -#: src/emc/usr_intf/pncconf/pncconf.glade:1667 +#: src/emc/usr_intf/pncconf/pncconf.glade:1675 msgid "USB Joystick Jogging " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1711 +#: src/emc/usr_intf/pncconf/pncconf.glade:1719 msgid "shared buttons for all axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1724 +#: src/emc/usr_intf/pncconf/pncconf.glade:1732 #, fuzzy msgid "buttons for each axis" msgstr "Jog fourth axis" -#: src/emc/usr_intf/pncconf/pncconf.glade:1798 +#: src/emc/usr_intf/pncconf/pncconf.glade:1806 msgid "External Button Jogging" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1839 +#: src/emc/usr_intf/pncconf/pncconf.glade:1847 msgid "Shared MPG / selectable axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1852 +#: src/emc/usr_intf/pncconf/pncconf.glade:1860 #, fuzzy msgid "Mpg per axis" msgstr "第一轴" -#: src/emc/usr_intf/pncconf/pncconf.glade:1867 +#: src/emc/usr_intf/pncconf/pncconf.glade:1875 #, fuzzy msgid "selectable MPG increments" msgstr "选择手动加速度" -#: src/emc/usr_intf/pncconf/pncconf.glade:1932 -#: src/emc/usr_intf/pncconf/pncconf.glade:2907 -#: src/emc/usr_intf/pncconf/pncconf.glade:3788 -#: src/emc/usr_intf/pncconf/pncconf.glade:4669 +#: src/emc/usr_intf/pncconf/pncconf.glade:1940 +#: src/emc/usr_intf/pncconf/pncconf.glade:3379 +#: src/emc/usr_intf/pncconf/pncconf.glade:4260 +#: src/emc/usr_intf/pncconf/pncconf.glade:5141 #, fuzzy -msgid "Mux options" -msgstr "其它选项" +msgid " d)" +msgstr "标签" -#: src/emc/usr_intf/pncconf/pncconf.glade:1980 -#: src/emc/usr_intf/pncconf/pncconf.glade:2868 -#: src/emc/usr_intf/pncconf/pncconf.glade:3763 -#: src/emc/usr_intf/pncconf/pncconf.glade:4644 -msgid "use debounce" +#: src/emc/usr_intf/pncconf/pncconf.glade:1952 +#: src/emc/usr_intf/pncconf/pncconf.glade:3340 +#: src/emc/usr_intf/pncconf/pncconf.glade:4221 +#: src/emc/usr_intf/pncconf/pncconf.glade:5102 +msgid " abcd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1995 -msgid "use gray code" +#: src/emc/usr_intf/pncconf/pncconf.glade:1965 +#: src/emc/usr_intf/pncconf/pncconf.glade:3353 +#: src/emc/usr_intf/pncconf/pncconf.glade:4234 +#: src/emc/usr_intf/pncconf/pncconf.glade:5115 +msgid " bcd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2010 -msgid "ignore all inputs false" +#: src/emc/usr_intf/pncconf/pncconf.glade:1978 +#: src/emc/usr_intf/pncconf/pncconf.glade:3366 +#: src/emc/usr_intf/pncconf/pncconf.glade:4247 +#: src/emc/usr_intf/pncconf/pncconf.glade:5128 +msgid " acd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2035 -#: src/emc/usr_intf/pncconf/pncconf.glade:2048 -#: src/emc/usr_intf/pncconf/pncconf.glade:2061 -#: src/emc/usr_intf/pncconf/pncconf.glade:2407 -#: src/emc/usr_intf/pncconf/pncconf.glade:2420 -#: src/emc/usr_intf/pncconf/pncconf.glade:2433 -#: src/emc/usr_intf/pncconf/pncconf.glade:2446 -#: src/emc/usr_intf/pncconf/pncconf.glade:2457 -#: src/emc/usr_intf/pncconf/pncconf.glade:2470 -#: src/emc/usr_intf/pncconf/pncconf.glade:2483 -#: src/emc/usr_intf/pncconf/pncconf.glade:2496 -#: src/emc/usr_intf/pncconf/pncconf.glade:2509 -#: src/emc/usr_intf/pncconf/pncconf.glade:2522 -#: src/emc/usr_intf/pncconf/pncconf.glade:2535 -#: src/emc/usr_intf/pncconf/pncconf.glade:8343 -#: src/emc/usr_intf/pncconf/pncconf.glade:8379 -#: src/emc/usr_intf/pncconf/pncconf.glade:56542 -#: src/emc/usr_intf/pncconf/pncconf.glade:61266 -#: src/emc/usr_intf/pncconf/pncconf.glade:61278 -#: src/emc/usr_intf/pncconf/pncconf.glade:61290 -#: src/emc/usr_intf/pncconf/pncconf.glade:61302 -#: src/emc/usr_intf/pncconf/pncconf.glade:62475 -#: src/emc/usr_intf/pncconf/pncconf.glade:62487 -#: src/emc/usr_intf/pncconf/pncconf.glade:62499 -#: src/emc/usr_intf/pncconf/pncconf.glade:62511 -#: src/emc/usr_intf/pncconf/pncconf.glade:63452 -#: src/emc/usr_intf/pncconf/pncconf.glade:63464 -#: src/emc/usr_intf/pncconf/pncconf.glade:63476 -#: src/emc/usr_intf/pncconf/pncconf.glade:63488 -#: src/emc/usr_intf/pncconf/pncconf.glade:64661 -#: src/emc/usr_intf/pncconf/pncconf.glade:64673 -#: src/emc/usr_intf/pncconf/pncconf.glade:64685 -#: src/emc/usr_intf/pncconf/pncconf.glade:64697 -#: src/emc/usr_intf/pncconf/pncconf.glade:65608 -#: src/emc/usr_intf/pncconf/pncconf.glade:65620 -#: src/emc/usr_intf/pncconf/pncconf.glade:65632 -#: src/emc/usr_intf/pncconf/pncconf.glade:65644 -#, fuzzy -msgid "label" -msgstr "标签:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:2073 -#: src/emc/usr_intf/pncconf/pncconf.glade:2559 -#: src/emc/usr_intf/pncconf/pncconf.glade:3300 -#: src/emc/usr_intf/pncconf/pncconf.glade:4181 -#: src/emc/usr_intf/pncconf/pncconf.glade:5062 -msgid " abc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:1991 +#: src/emc/usr_intf/pncconf/pncconf.glade:3430 +#: src/emc/usr_intf/pncconf/pncconf.glade:4311 +#: src/emc/usr_intf/pncconf/pncconf.glade:5192 +msgid " cd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2086 -#: src/emc/usr_intf/pncconf/pncconf.glade:3422 -#: src/emc/usr_intf/pncconf/pncconf.glade:4303 -#: src/emc/usr_intf/pncconf/pncconf.glade:5184 -msgid " ab)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2004 +#: src/emc/usr_intf/pncconf/pncconf.glade:3404 +#: src/emc/usr_intf/pncconf/pncconf.glade:4285 +#: src/emc/usr_intf/pncconf/pncconf.glade:5166 +msgid " bd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2372 -#: src/emc/usr_intf/pncconf/pncconf.glade:3321 -#: src/emc/usr_intf/pncconf/pncconf.glade:4202 -#: src/emc/usr_intf/pncconf/pncconf.glade:5083 -msgid " ac)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2017 +#: src/emc/usr_intf/pncconf/pncconf.glade:3391 +#: src/emc/usr_intf/pncconf/pncconf.glade:4272 +#: src/emc/usr_intf/pncconf/pncconf.glade:5153 +msgid " ad)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2383 -#: src/emc/usr_intf/pncconf/pncconf.glade:3311 -#: src/emc/usr_intf/pncconf/pncconf.glade:4192 -#: src/emc/usr_intf/pncconf/pncconf.glade:5073 -msgid " bc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2030 +#: src/emc/usr_intf/pncconf/pncconf.glade:2514 +#: src/emc/usr_intf/pncconf/pncconf.glade:3059 +#: src/emc/usr_intf/pncconf/pncconf.glade:3940 +#: src/emc/usr_intf/pncconf/pncconf.glade:4821 +msgid " abc)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2547 -#: src/emc/usr_intf/pncconf/pncconf.glade:3332 -#: src/emc/usr_intf/pncconf/pncconf.glade:4213 -#: src/emc/usr_intf/pncconf/pncconf.glade:5094 +#: src/emc/usr_intf/pncconf/pncconf.glade:2041 +#: src/emc/usr_intf/pncconf/pncconf.glade:3026 +#: src/emc/usr_intf/pncconf/pncconf.glade:3907 +#: src/emc/usr_intf/pncconf/pncconf.glade:4788 #, fuzzy msgid " c)" msgstr "标签" -#: src/emc/usr_intf/pncconf/pncconf.glade:2570 -#: src/emc/usr_intf/pncconf/pncconf.glade:2966 -#: src/emc/usr_intf/pncconf/pncconf.glade:3847 -#: src/emc/usr_intf/pncconf/pncconf.glade:4728 -msgid " ad)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2207 +#: src/emc/usr_intf/pncconf/pncconf.glade:3049 +#: src/emc/usr_intf/pncconf/pncconf.glade:3930 +#: src/emc/usr_intf/pncconf/pncconf.glade:4811 +msgid " bc)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2583 -#: src/emc/usr_intf/pncconf/pncconf.glade:2953 -#: src/emc/usr_intf/pncconf/pncconf.glade:3834 -#: src/emc/usr_intf/pncconf/pncconf.glade:4715 -msgid " bd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2217 +#: src/emc/usr_intf/pncconf/pncconf.glade:3038 +#: src/emc/usr_intf/pncconf/pncconf.glade:3919 +#: src/emc/usr_intf/pncconf/pncconf.glade:4800 +msgid " ac)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2596 -#: src/emc/usr_intf/pncconf/pncconf.glade:2927 -#: src/emc/usr_intf/pncconf/pncconf.glade:3808 -#: src/emc/usr_intf/pncconf/pncconf.glade:4689 -msgid " cd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2504 +#: src/emc/usr_intf/pncconf/pncconf.glade:2938 +#: src/emc/usr_intf/pncconf/pncconf.glade:3819 +#: src/emc/usr_intf/pncconf/pncconf.glade:4700 +msgid " ab)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2609 -#: src/emc/usr_intf/pncconf/pncconf.glade:2991 -#: src/emc/usr_intf/pncconf/pncconf.glade:3872 -#: src/emc/usr_intf/pncconf/pncconf.glade:4753 -msgid " acd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2577 +msgid "ignore all inputs false" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2622 -#: src/emc/usr_intf/pncconf/pncconf.glade:3004 -#: src/emc/usr_intf/pncconf/pncconf.glade:3885 -#: src/emc/usr_intf/pncconf/pncconf.glade:4766 -msgid " bcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2592 +msgid "use gray code" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2635 -#: src/emc/usr_intf/pncconf/pncconf.glade:3017 -#: src/emc/usr_intf/pncconf/pncconf.glade:3898 -#: src/emc/usr_intf/pncconf/pncconf.glade:4779 -msgid " abcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:2607 +#: src/emc/usr_intf/pncconf/pncconf.glade:3489 +#: src/emc/usr_intf/pncconf/pncconf.glade:4356 +#: src/emc/usr_intf/pncconf/pncconf.glade:5237 +msgid "use debounce" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2648 -#: src/emc/usr_intf/pncconf/pncconf.glade:2979 -#: src/emc/usr_intf/pncconf/pncconf.glade:3860 -#: src/emc/usr_intf/pncconf/pncconf.glade:4741 +#: src/emc/usr_intf/pncconf/pncconf.glade:2658 +#: src/emc/usr_intf/pncconf/pncconf.glade:3453 +#: src/emc/usr_intf/pncconf/pncconf.glade:4334 +#: src/emc/usr_intf/pncconf/pncconf.glade:5215 #, fuzzy -msgid " d)" -msgstr "标签" +msgid "Mux options" +msgstr "其它选项" -#: src/emc/usr_intf/pncconf/pncconf.glade:2664 +#: src/emc/usr_intf/pncconf/pncconf.glade:2672 #, fuzzy msgid "increments" msgstr "放置" -#: src/emc/usr_intf/pncconf/pncconf.glade:2708 +#: src/emc/usr_intf/pncconf/pncconf.glade:2716 msgid "External MPG Jogging" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2739 -#: src/emc/usr_intf/pncconf/pncconf.glade:3620 -#: src/emc/usr_intf/pncconf/pncconf.glade:4501 +#: src/emc/usr_intf/pncconf/pncconf.glade:2747 +#: src/emc/usr_intf/pncconf/pncconf.glade:3628 +#: src/emc/usr_intf/pncconf/pncconf.glade:4509 msgid "Use MPG " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2752 -#: src/emc/usr_intf/pncconf/pncconf.glade:3633 -#: src/emc/usr_intf/pncconf/pncconf.glade:4514 +#: src/emc/usr_intf/pncconf/pncconf.glade:2760 +#: src/emc/usr_intf/pncconf/pncconf.glade:3641 +#: src/emc/usr_intf/pncconf/pncconf.glade:4522 msgid "use switches" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2838 -#: src/emc/usr_intf/pncconf/pncconf.glade:3733 -#: src/emc/usr_intf/pncconf/pncconf.glade:4614 -msgid "ignore all-inputs false" +#: src/emc/usr_intf/pncconf/pncconf.glade:3417 +#: src/emc/usr_intf/pncconf/pncconf.glade:4298 +#: src/emc/usr_intf/pncconf/pncconf.glade:5179 +msgid " abd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2853 -#: src/emc/usr_intf/pncconf/pncconf.glade:3748 -#: src/emc/usr_intf/pncconf/pncconf.glade:4629 +#: src/emc/usr_intf/pncconf/pncconf.glade:3504 +#: src/emc/usr_intf/pncconf/pncconf.glade:4371 +#: src/emc/usr_intf/pncconf/pncconf.glade:5252 #, fuzzy msgid "use graycode" msgstr "未使用" -#: src/emc/usr_intf/pncconf/pncconf.glade:2940 -#: src/emc/usr_intf/pncconf/pncconf.glade:3821 -#: src/emc/usr_intf/pncconf/pncconf.glade:4702 -msgid " abd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:3519 +#: src/emc/usr_intf/pncconf/pncconf.glade:4386 +#: src/emc/usr_intf/pncconf/pncconf.glade:5267 +msgid "ignore all-inputs false" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:3555 -#: src/emc/usr_intf/pncconf/pncconf.glade:4436 -#: src/emc/usr_intf/pncconf/pncconf.glade:5317 +#: src/emc/usr_intf/pncconf/pncconf.glade:3563 +#: src/emc/usr_intf/pncconf/pncconf.glade:4444 +#: src/emc/usr_intf/pncconf/pncconf.glade:5325 #, fuzzy msgid "Increments" msgstr "增加" -#: src/emc/usr_intf/pncconf/pncconf.glade:3589 +#: src/emc/usr_intf/pncconf/pncconf.glade:3597 #, fuzzy msgid "External Feed Override" msgstr "进给倍率:" -#: src/emc/usr_intf/pncconf/pncconf.glade:4470 +#: src/emc/usr_intf/pncconf/pncconf.glade:4478 msgid "Max Velocity Override" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5351 +#: src/emc/usr_intf/pncconf/pncconf.glade:5359 #, fuzzy msgid "External Spindle Override" msgstr "主轴倍率:" -#: src/emc/usr_intf/pncconf/pncconf.glade:5379 +#: src/emc/usr_intf/pncconf/pncconf.glade:5387 #, fuzzy msgid "GUI configuration" msgstr "配置" -#: src/emc/usr_intf/pncconf/pncconf.glade:5398 +#: src/emc/usr_intf/pncconf/pncconf.glade:5406 #, fuzzy msgid "Frontend" msgstr "字体" -#: src/emc/usr_intf/pncconf/pncconf.glade:5557 +#: src/emc/usr_intf/pncconf/pncconf.glade:5566 #, fuzzy -msgid "" -"Commanded\n" -"Actual" -msgstr "指令" +msgid "Position_offset" +msgstr "坐标" -#: src/emc/usr_intf/pncconf/pncconf.glade:5570 +#: src/emc/usr_intf/pncconf/pncconf.glade:5573 #, fuzzy -msgid "" -"Machine\n" -"Relative\n" -msgstr "工件" +msgid "Position_feedback" +msgstr "坐标" -#: src/emc/usr_intf/pncconf/pncconf.glade:5608 +#: src/emc/usr_intf/pncconf/pncconf.glade:5584 #, fuzzy -msgid "Max Feed Override" -msgstr "进给倍率:" +msgid "Max Spindle Override " +msgstr "主轴倍率:" -#: src/emc/usr_intf/pncconf/pncconf.glade:5667 +#: src/emc/usr_intf/pncconf/pncconf.glade:5606 #, fuzzy msgid "Min Spindle Override" msgstr "主轴倍率:" -#: src/emc/usr_intf/pncconf/pncconf.glade:5691 +#: src/emc/usr_intf/pncconf/pncconf.glade:5665 #, fuzzy -msgid "Max Spindle Override " -msgstr "主轴倍率:" +msgid "Max Feed Override" +msgstr "进给倍率:" #: src/emc/usr_intf/pncconf/pncconf.glade:5702 #, fuzzy -msgid "Position_feedback" -msgstr "坐标" +msgid "" +"Machine\n" +"Relative\n" +msgstr "工件" -#: src/emc/usr_intf/pncconf/pncconf.glade:5713 +#: src/emc/usr_intf/pncconf/pncconf.glade:5714 #, fuzzy -msgid "Position_offset" -msgstr "坐标" +msgid "" +"Commanded\n" +"Actual" +msgstr "指令" -#: src/emc/usr_intf/pncconf/pncconf.glade:5721 +#: src/emc/usr_intf/pncconf/pncconf.glade:5729 msgid "General GUI Defaults" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5808 -msgid "Force Axis to Maximize" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5832 -#: src/emc/usr_intf/pncconf/pncconf.glade:6602 -#: src/emc/usr_intf/pncconf/pncconf.glade:6841 -#: src/emc/usr_intf/pncconf/pncconf.glade:7328 +#: src/emc/usr_intf/pncconf/pncconf.glade:5811 #, fuzzy -msgid "H" -msgstr "Hz" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5866 -#: src/emc/usr_intf/pncconf/pncconf.glade:6568 -#: src/emc/usr_intf/pncconf/pncconf.glade:6875 -#: src/emc/usr_intf/pncconf/pncconf.glade:7294 -msgid "W" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5876 -#: src/emc/usr_intf/pncconf/pncconf.glade:6556 -#: src/emc/usr_intf/pncconf/pncconf.glade:6885 -#: src/emc/usr_intf/pncconf/pncconf.glade:7282 -msgid "X" -msgstr "X" +msgid "Default linear velocity " +msgstr "找零速度:" -#: src/emc/usr_intf/pncconf/pncconf.glade:5914 -#: src/emc/usr_intf/pncconf/pncconf.glade:6519 -#: src/emc/usr_intf/pncconf/pncconf.glade:6923 -#: src/emc/usr_intf/pncconf/pncconf.glade:7244 +#: src/emc/usr_intf/pncconf/pncconf.glade:5818 #, fuzzy -msgid "Position" -msgstr "坐标" +msgid "Min linear velocity" +msgstr "找零速度:" -#: src/emc/usr_intf/pncconf/pncconf.glade:5927 -#: src/emc/usr_intf/pncconf/pncconf.glade:6510 -#: src/emc/usr_intf/pncconf/pncconf.glade:6936 -#: src/emc/usr_intf/pncconf/pncconf.glade:7234 +#: src/emc/usr_intf/pncconf/pncconf.glade:5829 #, fuzzy -msgid "size" -msgstr "改变大小" +msgid "Max linear velocity" +msgstr "最大速度(_V):" -#: src/emc/usr_intf/pncconf/pncconf.glade:5942 -#: src/emc/usr_intf/pncconf/pncconf.glade:5952 -#: src/emc/usr_intf/pncconf/pncconf.glade:6158 +#: src/emc/usr_intf/pncconf/pncconf.glade:5879 +#: src/emc/usr_intf/pncconf/pncconf.glade:6085 +#: src/emc/usr_intf/pncconf/pncconf.glade:6097 #, fuzzy msgid "mm / min" msgstr "毫米/秒" -#: src/emc/usr_intf/pncconf/pncconf.glade:5975 -#: src/emc/usr_intf/pncconf/pncconf.glade:5985 -#: src/emc/usr_intf/pncconf/pncconf.glade:5997 -#, fuzzy -msgid "Deg / min" -msgstr "度/次" +#: src/emc/usr_intf/pncconf/pncconf.glade:5892 +msgid "Default Angular velocity " +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6010 -msgid "xyzabc" +#: src/emc/usr_intf/pncconf/pncconf.glade:5926 +msgid "gedit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6023 +#: src/emc/usr_intf/pncconf/pncconf.glade:5939 #, fuzzy -msgid "Axis Geometry" -msgstr "几何特性" +msgid "Min Angular velocity" +msgstr "最大速度(_V):" -#: src/emc/usr_intf/pncconf/pncconf.glade:6048 +#: src/emc/usr_intf/pncconf/pncconf.glade:5966 #, fuzzy -msgid "Max Angular velocity" -msgstr "最大速度(_V):" +msgid "Increments " +msgstr "增加" -#: src/emc/usr_intf/pncconf/pncconf.glade:6061 +#: src/emc/usr_intf/pncconf/pncconf.glade:5977 msgid "5mm 1mm .5mm .1mm .05mm .01mm .005mm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6074 +#: src/emc/usr_intf/pncconf/pncconf.glade:5990 #, fuzzy -msgid "Increments " -msgstr "增加" +msgid "Max Angular velocity" +msgstr "最大速度(_V):" -#: src/emc/usr_intf/pncconf/pncconf.glade:6099 +#: src/emc/usr_intf/pncconf/pncconf.glade:6017 #, fuzzy -msgid "Min Angular velocity" -msgstr "最大速度(_V):" +msgid "Axis Geometry" +msgstr "几何特性" -#: src/emc/usr_intf/pncconf/pncconf.glade:6112 -msgid "gedit" +#: src/emc/usr_intf/pncconf/pncconf.glade:6028 +msgid "xyzabc" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6148 -msgid "Default Angular velocity " -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:6040 +#: src/emc/usr_intf/pncconf/pncconf.glade:6052 +#: src/emc/usr_intf/pncconf/pncconf.glade:6064 +#, fuzzy +msgid "Deg / min" +msgstr "度/次" -#: src/emc/usr_intf/pncconf/pncconf.glade:6211 +#: src/emc/usr_intf/pncconf/pncconf.glade:6113 +#: src/emc/usr_intf/pncconf/pncconf.glade:6484 +#: src/emc/usr_intf/pncconf/pncconf.glade:6839 +#: src/emc/usr_intf/pncconf/pncconf.glade:7262 #, fuzzy -msgid "Max linear velocity" -msgstr "最大速度(_V):" +msgid "size" +msgstr "改变大小" -#: src/emc/usr_intf/pncconf/pncconf.glade:6222 +#: src/emc/usr_intf/pncconf/pncconf.glade:6122 +#: src/emc/usr_intf/pncconf/pncconf.glade:6471 +#: src/emc/usr_intf/pncconf/pncconf.glade:6848 +#: src/emc/usr_intf/pncconf/pncconf.glade:7248 #, fuzzy -msgid "Min linear velocity" -msgstr "找零速度:" +msgid "Position" +msgstr "坐标" + +#: src/emc/usr_intf/pncconf/pncconf.glade:6159 +#: src/emc/usr_intf/pncconf/pncconf.glade:6433 +#: src/emc/usr_intf/pncconf/pncconf.glade:6885 +#: src/emc/usr_intf/pncconf/pncconf.glade:7210 +#: src/emc/usr_intf/gscreen/gscreen.glade:116 +msgid "X" +msgstr "X" + +#: src/emc/usr_intf/pncconf/pncconf.glade:6171 +#: src/emc/usr_intf/pncconf/pncconf.glade:6423 +#: src/emc/usr_intf/pncconf/pncconf.glade:6897 +#: src/emc/usr_intf/pncconf/pncconf.glade:7200 +#: src/emc/usr_intf/gscreen/gscreen.glade:1142 +msgid "W" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6233 +#: src/emc/usr_intf/pncconf/pncconf.glade:6205 +#: src/emc/usr_intf/pncconf/pncconf.glade:6389 +#: src/emc/usr_intf/pncconf/pncconf.glade:6931 +#: src/emc/usr_intf/pncconf/pncconf.glade:7166 #, fuzzy -msgid "Default linear velocity " -msgstr "找零速度:" +msgid "H" +msgstr "Hz" -#: src/emc/usr_intf/pncconf/pncconf.glade:6241 +#: src/emc/usr_intf/pncconf/pncconf.glade:6227 +msgid "Force Axis to Maximize" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:6249 #, fuzzy msgid "AXIS defaults" msgstr "默认值" -#: src/emc/usr_intf/pncconf/pncconf.glade:6352 -#, fuzzy -msgid "Error Textcolor" -msgstr "文字颜色(&T):" - #: src/emc/usr_intf/pncconf/pncconf.glade:6365 +msgid "Force Touchy to Maximize after positioning" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:6501 +#: src/emc/usr_intf/pncconf/pncconf.glade:7333 +msgid "Follow System Theme\n" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:6514 +#: src/emc/usr_intf/pncconf/pncconf.glade:7347 #, fuzzy -msgid "DTG Textcolor" -msgstr "文字颜色(&T):" +msgid "GTK Theme" +msgstr "主题" -#: src/emc/usr_intf/pncconf/pncconf.glade:6378 +#: src/emc/usr_intf/pncconf/pncconf.glade:6540 +#: src/emc/usr_intf/gscreen/gscreen.glade:1857 #, fuzzy -msgid "Relative Textcolor" -msgstr "显示工件坐标" +msgid "Absolute Text Color" +msgstr "文字颜色" -#: src/emc/usr_intf/pncconf/pncconf.glade:6391 +#: src/emc/usr_intf/pncconf/pncconf.glade:6603 #, fuzzy msgid "Absolute Textcolor" msgstr "文字颜色(&T):" -#: src/emc/usr_intf/pncconf/pncconf.glade:6454 +#: src/emc/usr_intf/pncconf/pncconf.glade:6616 #, fuzzy -msgid "Absolute Text Color" -msgstr "文字颜色" +msgid "Relative Textcolor" +msgstr "显示工件坐标" -#: src/emc/usr_intf/pncconf/pncconf.glade:6479 -#: src/emc/usr_intf/pncconf/pncconf.glade:7148 +#: src/emc/usr_intf/pncconf/pncconf.glade:6629 #, fuzzy -msgid "GTK Theme" -msgstr "主题" - -#: src/emc/usr_intf/pncconf/pncconf.glade:6491 -#: src/emc/usr_intf/pncconf/pncconf.glade:7158 -msgid "Follow System Theme\n" -msgstr "" +msgid "DTG Textcolor" +msgstr "文字颜色(&T):" -#: src/emc/usr_intf/pncconf/pncconf.glade:6624 -msgid "Force Touchy to Maximize after positioning" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:6642 +#, fuzzy +msgid "Error Textcolor" +msgstr "文字颜色(&T):" -#: src/emc/usr_intf/pncconf/pncconf.glade:6669 +#: src/emc/usr_intf/pncconf/pncconf.glade:6677 #, fuzzy msgid "GUI Options" msgstr "选项(&P)" -#: src/emc/usr_intf/pncconf/pncconf.glade:6700 +#: src/emc/usr_intf/pncconf/pncconf.glade:6708 #, fuzzy msgid "Virtual Control Panel" msgstr "类型" -#: src/emc/usr_intf/pncconf/pncconf.glade:6775 +#: src/emc/usr_intf/pncconf/pncconf.glade:6783 msgid "XYZ buttons (uses Halui)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6946 +#: src/emc/usr_intf/pncconf/pncconf.glade:6954 #, fuzzy msgid "Geometry Options" msgstr "常规选项" -#: src/emc/usr_intf/pncconf/pncconf.glade:7025 +#: src/emc/usr_intf/pncconf/pncconf.glade:7033 #, fuzzy msgid "Pyvcp Details" msgstr "细节(_D)" -#: src/emc/usr_intf/pncconf/pncconf.glade:7097 +#: src/emc/usr_intf/pncconf/pncconf.glade:7105 #, fuzzy msgid "Sample display " msgstr "时间显示" -#: src/emc/usr_intf/pncconf/pncconf.glade:7172 -msgid "Force Maximize" +#: src/emc/usr_intf/pncconf/pncconf.glade:7272 +msgid "Standalone Panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7186 -msgid "Center Tab Embeded" +#: src/emc/usr_intf/pncconf/pncconf.glade:7289 +msgid "Rightside Embeded" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7201 -msgid "Rightside Embeded" +#: src/emc/usr_intf/pncconf/pncconf.glade:7305 +msgid "Center Tab Embeded" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7217 -msgid "Standalone Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:7320 +msgid "Force Maximize" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7351 +#: src/emc/usr_intf/pncconf/pncconf.glade:7359 #, fuzzy msgid "Display Options" msgstr "显示设置" -#: src/emc/usr_intf/pncconf/pncconf.glade:7401 +#: src/emc/usr_intf/pncconf/pncconf.glade:7409 msgid "Max RPM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7414 +#: src/emc/usr_intf/pncconf/pncconf.glade:7422 #, fuzzy msgid "Spindle Speed Indicator" msgstr "主轴转速(RPM)" -#: src/emc/usr_intf/pncconf/pncconf.glade:7426 +#: src/emc/usr_intf/pncconf/pncconf.glade:7434 #, fuzzy msgid "Spindle At Speed LED" msgstr "主轴转速(RPM)" -#: src/emc/usr_intf/pncconf/pncconf.glade:7438 +#: src/emc/usr_intf/pncconf/pncconf.glade:7446 #, fuzzy msgid "Zero X Button" msgstr "左击" -#: src/emc/usr_intf/pncconf/pncconf.glade:7450 +#: src/emc/usr_intf/pncconf/pncconf.glade:7458 #, fuzzy msgid "Zero Y Button" msgstr "左击" -#: src/emc/usr_intf/pncconf/pncconf.glade:7462 +#: src/emc/usr_intf/pncconf/pncconf.glade:7470 #, fuzzy msgid "Zero Z Button" msgstr "左击" -#: src/emc/usr_intf/pncconf/pncconf.glade:7474 +#: src/emc/usr_intf/pncconf/pncconf.glade:7482 #, fuzzy msgid "Zero A Button" msgstr "左击" -#: src/emc/usr_intf/pncconf/pncconf.glade:7486 +#: src/emc/usr_intf/pncconf/pncconf.glade:7494 msgid "Requires Classicladder touch-off program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7487 +#: src/emc/usr_intf/pncconf/pncconf.glade:7495 msgid "Auto Z Touch Off Button" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7500 +#: src/emc/usr_intf/pncconf/pncconf.glade:7508 #, fuzzy msgid "Sample Options" msgstr "保存选项" -#: src/emc/usr_intf/pncconf/pncconf.glade:7574 +#: src/emc/usr_intf/pncconf/pncconf.glade:7582 msgid "Gladevcp Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7597 +#: src/emc/usr_intf/pncconf/pncconf.glade:7605 #, fuzzy msgid "Include custom GladeVCP GUI panel" msgstr "Include custom Py_VCP Panel" -#: src/emc/usr_intf/pncconf/pncconf.glade:7668 -msgid "Restore joint position after shutdown" +#: src/emc/usr_intf/pncconf/pncconf.glade:7676 +msgid "Force individual manual homing" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7683 -#, fuzzy -msgid "Move spindle up before tool change" -msgstr "在屏幕上提示换刀" +#: src/emc/usr_intf/pncconf/pncconf.glade:7689 +msgid "Random position toolchanger " +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7696 -msgid "Leave spindle on during tool change" +#: src/emc/usr_intf/pncconf/pncconf.glade:7704 +msgid "Require homing before MDI / Running" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7709 +#: src/emc/usr_intf/pncconf/pncconf.glade:7713 msgid "Popup Toolchange Prompt" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7723 -msgid "Require homing before MDI / Running" +#: src/emc/usr_intf/pncconf/pncconf.glade:7727 +msgid "Leave spindle on during tool change" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7732 -msgid "Random position toolchanger " -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:7740 +#, fuzzy +msgid "Move spindle up before tool change" +msgstr "在屏幕上提示换刀" -#: src/emc/usr_intf/pncconf/pncconf.glade:7747 -msgid "Force individual manual homing" +#: src/emc/usr_intf/pncconf/pncconf.glade:7753 +msgid "Restore joint position after shutdown" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7761 +#: src/emc/usr_intf/pncconf/pncconf.glade:7769 #, fuzzy msgid "Defaults and Options" msgstr "描述" -#: src/emc/usr_intf/pncconf/pncconf.glade:7789 +#: src/emc/usr_intf/pncconf/pncconf.glade:7797 msgid "Mesa0 I/O setup\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7809 +#: src/emc/usr_intf/pncconf/pncconf.glade:7817 msgid "" "Click on each page tab to configure signal names for each connector port.\n" "\n" @@ -10180,795 +12642,402 @@ msgid "" "accept the changes.\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7998 -#, fuzzy -msgid "Num of channels: " -msgstr "颜色数:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:8036 -msgid "7i29 daughter board" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:8045 -msgid "7i30 daughter board" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:8057 -msgid "7i33 daughter board" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:8069 -msgid "7i40 daughter board" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:8081 -msgid "7i48 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:8001 +msgid "3PWM base frequency:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8096 -#, fuzzy -msgid "Sanity Checks" -msgstr "界面" - -#: src/emc/usr_intf/pncconf/pncconf.glade:8137 +#: src/emc/usr_intf/pncconf/pncconf.glade:8036 #, fuzzy -msgid "Num of Smart Serial Ports:" -msgstr "地雷数量:" +msgid "Mesa parport address:" +msgstr "Parport Base Address:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8148 +#: src/emc/usr_intf/pncconf/pncconf.glade:8047 #, fuzzy -msgid "Board name" -msgstr "无名称" +msgid "Firmware:" +msgstr "固件" -#: src/emc/usr_intf/pncconf/pncconf.glade:8155 -msgid "Num of step generators: " +#: src/emc/usr_intf/pncconf/pncconf.glade:8069 +msgid "SVST8_4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8166 +#: src/emc/usr_intf/pncconf/pncconf.glade:8094 #, fuzzy -msgid "Num of pwm generators:" +msgid "Num of 3 pwm generators: " msgstr "地雷数量:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8177 +#: src/emc/usr_intf/pncconf/pncconf.glade:8128 #, fuzzy -msgid "Num of encoders:" -msgstr "颜色数:" +msgid "Total number of pins:" +msgstr "玩家数量:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8294 -msgid "Watchdog timeout:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8153 +msgid "" +"Accept components\n" +" Changes" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8305 -msgid "PDM base frequency:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8168 +msgid "PWM base frequency:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8316 -msgid "PWM base frequency:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8179 +msgid "PDM base frequency:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8328 -msgid "" -"Accept components\n" -" Changes" +#: src/emc/usr_intf/pncconf/pncconf.glade:8190 +msgid "Watchdog timeout:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8356 +#: src/emc/usr_intf/pncconf/pncconf.glade:8307 #, fuzzy -msgid "Total number of pins:" -msgstr "玩家数量:" +msgid "Num of encoders:" +msgstr "颜色数:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8389 +#: src/emc/usr_intf/pncconf/pncconf.glade:8318 #, fuzzy -msgid "Num of 3 pwm generators: " +msgid "Num of pwm generators:" msgstr "地雷数量:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8412 -msgid "SVST8_4" +#: src/emc/usr_intf/pncconf/pncconf.glade:8329 +msgid "Num of step generators: " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8437 -#, fuzzy -msgid "Firmware:" -msgstr "固件" - -#: src/emc/usr_intf/pncconf/pncconf.glade:8447 +#: src/emc/usr_intf/pncconf/pncconf.glade:8340 #, fuzzy -msgid "Mesa parport address:" -msgstr "Parport Base Address:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:8482 -msgid "3PWM base frequency:" -msgstr "" +msgid "Board name" +msgstr "无名称" -#: src/emc/usr_intf/pncconf/pncconf.glade:8504 +#: src/emc/usr_intf/pncconf/pncconf.glade:8346 #, fuzzy -msgid "" -"Configuration\n" -" Page" -msgstr "配置" - -#: src/emc/usr_intf/pncconf/pncconf.glade:8698 -#: src/emc/usr_intf/pncconf/pncconf.glade:8712 -#: src/emc/usr_intf/pncconf/pncconf.glade:13677 -#: src/emc/usr_intf/pncconf/pncconf.glade:13689 -#: src/emc/usr_intf/pncconf/pncconf.glade:16373 -#: src/emc/usr_intf/pncconf/pncconf.glade:16385 -#: src/emc/usr_intf/pncconf/pncconf.glade:18883 -#: src/emc/usr_intf/pncconf/pncconf.glade:18895 -#: src/emc/usr_intf/pncconf/pncconf.glade:20747 -#: src/emc/usr_intf/pncconf/pncconf.glade:20759 -#: src/emc/usr_intf/pncconf/pncconf.glade:20962 -#: src/emc/usr_intf/pncconf/pncconf.glade:20976 -#: src/emc/usr_intf/pncconf/pncconf.glade:22758 -#: src/emc/usr_intf/pncconf/pncconf.glade:22772 -#: src/emc/usr_intf/pncconf/pncconf.glade:24554 -#: src/emc/usr_intf/pncconf/pncconf.glade:24568 -#: src/emc/usr_intf/pncconf/pncconf.glade:26330 -#: src/emc/usr_intf/pncconf/pncconf.glade:26344 -#: src/emc/usr_intf/pncconf/pncconf.glade:31324 -#: src/emc/usr_intf/pncconf/pncconf.glade:31336 -#: src/emc/usr_intf/pncconf/pncconf.glade:31600 -#: src/emc/usr_intf/pncconf/pncconf.glade:35669 -#: src/emc/usr_intf/pncconf/pncconf.glade:35681 -#: src/emc/usr_intf/pncconf/pncconf.glade:35814 -#: src/emc/usr_intf/pncconf/pncconf.glade:35828 -#: src/emc/usr_intf/pncconf/pncconf.glade:40000 -#: src/emc/usr_intf/pncconf/pncconf.glade:40012 -#: src/emc/usr_intf/pncconf/pncconf.glade:40174 -#: src/emc/usr_intf/pncconf/pncconf.glade:40188 -#: src/emc/usr_intf/pncconf/pncconf.glade:45168 -#: src/emc/usr_intf/pncconf/pncconf.glade:45180 -#: src/emc/usr_intf/pncconf/pncconf.glade:45431 -#: src/emc/usr_intf/pncconf/pncconf.glade:45445 -#: src/emc/usr_intf/pncconf/pncconf.glade:47097 -#: src/emc/usr_intf/pncconf/pncconf.glade:47111 -#: src/emc/usr_intf/pncconf/pncconf.glade:52091 -#: src/emc/usr_intf/pncconf/pncconf.glade:52103 -#: src/emc/usr_intf/pncconf/pncconf.glade:52354 -#: src/emc/usr_intf/pncconf/pncconf.glade:52368 -msgid "Num" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:8723 -#: src/emc/usr_intf/pncconf/pncconf.glade:8743 -#: src/emc/usr_intf/pncconf/pncconf.glade:8763 -#: src/emc/usr_intf/pncconf/pncconf.glade:8783 -#: src/emc/usr_intf/pncconf/pncconf.glade:8803 -#: src/emc/usr_intf/pncconf/pncconf.glade:8823 -#: src/emc/usr_intf/pncconf/pncconf.glade:8843 -#: src/emc/usr_intf/pncconf/pncconf.glade:8863 -#: src/emc/usr_intf/pncconf/pncconf.glade:8883 -#: src/emc/usr_intf/pncconf/pncconf.glade:8903 -#: src/emc/usr_intf/pncconf/pncconf.glade:8923 -#: src/emc/usr_intf/pncconf/pncconf.glade:8943 -#: src/emc/usr_intf/pncconf/pncconf.glade:8963 -#: src/emc/usr_intf/pncconf/pncconf.glade:8983 -#: src/emc/usr_intf/pncconf/pncconf.glade:9003 -#: src/emc/usr_intf/pncconf/pncconf.glade:9023 -#: src/emc/usr_intf/pncconf/pncconf.glade:9043 -#: src/emc/usr_intf/pncconf/pncconf.glade:9063 -#: src/emc/usr_intf/pncconf/pncconf.glade:9083 -#: src/emc/usr_intf/pncconf/pncconf.glade:9103 -#: src/emc/usr_intf/pncconf/pncconf.glade:9123 -#: src/emc/usr_intf/pncconf/pncconf.glade:9143 -#: src/emc/usr_intf/pncconf/pncconf.glade:9163 -#: src/emc/usr_intf/pncconf/pncconf.glade:11027 -#: src/emc/usr_intf/pncconf/pncconf.glade:11353 -#: src/emc/usr_intf/pncconf/pncconf.glade:13216 -#: src/emc/usr_intf/pncconf/pncconf.glade:13236 -#: src/emc/usr_intf/pncconf/pncconf.glade:13256 -#: src/emc/usr_intf/pncconf/pncconf.glade:13276 -#: src/emc/usr_intf/pncconf/pncconf.glade:13296 -#: src/emc/usr_intf/pncconf/pncconf.glade:13316 -#: src/emc/usr_intf/pncconf/pncconf.glade:13336 -#: src/emc/usr_intf/pncconf/pncconf.glade:13356 -#: src/emc/usr_intf/pncconf/pncconf.glade:13376 -#: src/emc/usr_intf/pncconf/pncconf.glade:13396 -#: src/emc/usr_intf/pncconf/pncconf.glade:13416 -#: src/emc/usr_intf/pncconf/pncconf.glade:13436 -#: src/emc/usr_intf/pncconf/pncconf.glade:13456 -#: src/emc/usr_intf/pncconf/pncconf.glade:13476 -#: src/emc/usr_intf/pncconf/pncconf.glade:13496 -#: src/emc/usr_intf/pncconf/pncconf.glade:13516 -#: src/emc/usr_intf/pncconf/pncconf.glade:13536 -#: src/emc/usr_intf/pncconf/pncconf.glade:13556 -#: src/emc/usr_intf/pncconf/pncconf.glade:13576 -#: src/emc/usr_intf/pncconf/pncconf.glade:13596 -#: src/emc/usr_intf/pncconf/pncconf.glade:13616 -#: src/emc/usr_intf/pncconf/pncconf.glade:13636 -#: src/emc/usr_intf/pncconf/pncconf.glade:13656 -#: src/emc/usr_intf/pncconf/pncconf.glade:13966 -#: src/emc/usr_intf/pncconf/pncconf.glade:15912 -#: src/emc/usr_intf/pncconf/pncconf.glade:15932 -#: src/emc/usr_intf/pncconf/pncconf.glade:15952 -#: src/emc/usr_intf/pncconf/pncconf.glade:15972 -#: src/emc/usr_intf/pncconf/pncconf.glade:15992 -#: src/emc/usr_intf/pncconf/pncconf.glade:16012 -#: src/emc/usr_intf/pncconf/pncconf.glade:16032 -#: src/emc/usr_intf/pncconf/pncconf.glade:16052 -#: src/emc/usr_intf/pncconf/pncconf.glade:16072 -#: src/emc/usr_intf/pncconf/pncconf.glade:16092 -#: src/emc/usr_intf/pncconf/pncconf.glade:16112 -#: src/emc/usr_intf/pncconf/pncconf.glade:16132 -#: src/emc/usr_intf/pncconf/pncconf.glade:16152 -#: src/emc/usr_intf/pncconf/pncconf.glade:16172 -#: src/emc/usr_intf/pncconf/pncconf.glade:16192 -#: src/emc/usr_intf/pncconf/pncconf.glade:16212 -#: src/emc/usr_intf/pncconf/pncconf.glade:16232 -#: src/emc/usr_intf/pncconf/pncconf.glade:16252 -#: src/emc/usr_intf/pncconf/pncconf.glade:16272 -#: src/emc/usr_intf/pncconf/pncconf.glade:16292 -#: src/emc/usr_intf/pncconf/pncconf.glade:16312 -#: src/emc/usr_intf/pncconf/pncconf.glade:16332 -#: src/emc/usr_intf/pncconf/pncconf.glade:16352 -#: src/emc/usr_intf/pncconf/pncconf.glade:16558 -#: src/emc/usr_intf/pncconf/pncconf.glade:18422 -#: src/emc/usr_intf/pncconf/pncconf.glade:18442 -#: src/emc/usr_intf/pncconf/pncconf.glade:18462 -#: src/emc/usr_intf/pncconf/pncconf.glade:18482 -#: src/emc/usr_intf/pncconf/pncconf.glade:18502 -#: src/emc/usr_intf/pncconf/pncconf.glade:18522 -#: src/emc/usr_intf/pncconf/pncconf.glade:18542 -#: src/emc/usr_intf/pncconf/pncconf.glade:18562 -#: src/emc/usr_intf/pncconf/pncconf.glade:18582 -#: src/emc/usr_intf/pncconf/pncconf.glade:18602 -#: src/emc/usr_intf/pncconf/pncconf.glade:18622 -#: src/emc/usr_intf/pncconf/pncconf.glade:18642 -#: src/emc/usr_intf/pncconf/pncconf.glade:18662 -#: src/emc/usr_intf/pncconf/pncconf.glade:18682 -#: src/emc/usr_intf/pncconf/pncconf.glade:18702 -#: src/emc/usr_intf/pncconf/pncconf.glade:18722 -#: src/emc/usr_intf/pncconf/pncconf.glade:18742 -#: src/emc/usr_intf/pncconf/pncconf.glade:18762 -#: src/emc/usr_intf/pncconf/pncconf.glade:18782 -#: src/emc/usr_intf/pncconf/pncconf.glade:18802 -#: src/emc/usr_intf/pncconf/pncconf.glade:18822 -#: src/emc/usr_intf/pncconf/pncconf.glade:18842 -#: src/emc/usr_intf/pncconf/pncconf.glade:18862 -#: src/emc/usr_intf/pncconf/pncconf.glade:26355 -#: src/emc/usr_intf/pncconf/pncconf.glade:26375 -#: src/emc/usr_intf/pncconf/pncconf.glade:26395 -#: src/emc/usr_intf/pncconf/pncconf.glade:26415 -#: src/emc/usr_intf/pncconf/pncconf.glade:26435 -#: src/emc/usr_intf/pncconf/pncconf.glade:26455 -#: src/emc/usr_intf/pncconf/pncconf.glade:26475 -#: src/emc/usr_intf/pncconf/pncconf.glade:26495 -#: src/emc/usr_intf/pncconf/pncconf.glade:26515 -#: src/emc/usr_intf/pncconf/pncconf.glade:26535 -#: src/emc/usr_intf/pncconf/pncconf.glade:26555 -#: src/emc/usr_intf/pncconf/pncconf.glade:26575 -#: src/emc/usr_intf/pncconf/pncconf.glade:26595 -#: src/emc/usr_intf/pncconf/pncconf.glade:26615 -#: src/emc/usr_intf/pncconf/pncconf.glade:26635 -#: src/emc/usr_intf/pncconf/pncconf.glade:26655 -#: src/emc/usr_intf/pncconf/pncconf.glade:26675 -#: src/emc/usr_intf/pncconf/pncconf.glade:26695 -#: src/emc/usr_intf/pncconf/pncconf.glade:26715 -#: src/emc/usr_intf/pncconf/pncconf.glade:26735 -#: src/emc/usr_intf/pncconf/pncconf.glade:26755 -#: src/emc/usr_intf/pncconf/pncconf.glade:26775 -#: src/emc/usr_intf/pncconf/pncconf.glade:26795 -#: src/emc/usr_intf/pncconf/pncconf.glade:28711 -#: src/emc/usr_intf/pncconf/pncconf.glade:28934 -#: src/emc/usr_intf/pncconf/pncconf.glade:30863 -#: src/emc/usr_intf/pncconf/pncconf.glade:30883 -#: src/emc/usr_intf/pncconf/pncconf.glade:30903 -#: src/emc/usr_intf/pncconf/pncconf.glade:30923 -#: src/emc/usr_intf/pncconf/pncconf.glade:30943 -#: src/emc/usr_intf/pncconf/pncconf.glade:30963 -#: src/emc/usr_intf/pncconf/pncconf.glade:30983 -#: src/emc/usr_intf/pncconf/pncconf.glade:31003 -#: src/emc/usr_intf/pncconf/pncconf.glade:31023 -#: src/emc/usr_intf/pncconf/pncconf.glade:31043 -#: src/emc/usr_intf/pncconf/pncconf.glade:31063 -#: src/emc/usr_intf/pncconf/pncconf.glade:31083 -#: src/emc/usr_intf/pncconf/pncconf.glade:31103 -#: src/emc/usr_intf/pncconf/pncconf.glade:31123 -#: src/emc/usr_intf/pncconf/pncconf.glade:31143 -#: src/emc/usr_intf/pncconf/pncconf.glade:31163 -#: src/emc/usr_intf/pncconf/pncconf.glade:31183 -#: src/emc/usr_intf/pncconf/pncconf.glade:31203 -#: src/emc/usr_intf/pncconf/pncconf.glade:31223 -#: src/emc/usr_intf/pncconf/pncconf.glade:31243 -#: src/emc/usr_intf/pncconf/pncconf.glade:31263 -#: src/emc/usr_intf/pncconf/pncconf.glade:31283 -#: src/emc/usr_intf/pncconf/pncconf.glade:31303 -#: src/emc/usr_intf/pncconf/pncconf.glade:31611 -#: src/emc/usr_intf/pncconf/pncconf.glade:31631 -#: src/emc/usr_intf/pncconf/pncconf.glade:31651 -#: src/emc/usr_intf/pncconf/pncconf.glade:31671 -#: src/emc/usr_intf/pncconf/pncconf.glade:31691 -#: src/emc/usr_intf/pncconf/pncconf.glade:31711 -#: src/emc/usr_intf/pncconf/pncconf.glade:31731 -#: src/emc/usr_intf/pncconf/pncconf.glade:31751 -#: src/emc/usr_intf/pncconf/pncconf.glade:31771 -#: src/emc/usr_intf/pncconf/pncconf.glade:31791 -#: src/emc/usr_intf/pncconf/pncconf.glade:31811 -#: src/emc/usr_intf/pncconf/pncconf.glade:33029 -#: src/emc/usr_intf/pncconf/pncconf.glade:33292 -#: src/emc/usr_intf/pncconf/pncconf.glade:35208 -#: src/emc/usr_intf/pncconf/pncconf.glade:35228 -#: src/emc/usr_intf/pncconf/pncconf.glade:35248 -#: src/emc/usr_intf/pncconf/pncconf.glade:35268 -#: src/emc/usr_intf/pncconf/pncconf.glade:35288 -#: src/emc/usr_intf/pncconf/pncconf.glade:35308 -#: src/emc/usr_intf/pncconf/pncconf.glade:35328 -#: src/emc/usr_intf/pncconf/pncconf.glade:35348 -#: src/emc/usr_intf/pncconf/pncconf.glade:35368 -#: src/emc/usr_intf/pncconf/pncconf.glade:35388 -#: src/emc/usr_intf/pncconf/pncconf.glade:35408 -#: src/emc/usr_intf/pncconf/pncconf.glade:35428 -#: src/emc/usr_intf/pncconf/pncconf.glade:35448 -#: src/emc/usr_intf/pncconf/pncconf.glade:35468 -#: src/emc/usr_intf/pncconf/pncconf.glade:35488 -#: src/emc/usr_intf/pncconf/pncconf.glade:35508 -#: src/emc/usr_intf/pncconf/pncconf.glade:35528 -#: src/emc/usr_intf/pncconf/pncconf.glade:35548 -#: src/emc/usr_intf/pncconf/pncconf.glade:35568 -#: src/emc/usr_intf/pncconf/pncconf.glade:35588 -#: src/emc/usr_intf/pncconf/pncconf.glade:35608 -#: src/emc/usr_intf/pncconf/pncconf.glade:35628 -#: src/emc/usr_intf/pncconf/pncconf.glade:35648 -#: src/emc/usr_intf/pncconf/pncconf.glade:35839 -#: src/emc/usr_intf/pncconf/pncconf.glade:35859 -#: src/emc/usr_intf/pncconf/pncconf.glade:35879 -#: src/emc/usr_intf/pncconf/pncconf.glade:35899 -#: src/emc/usr_intf/pncconf/pncconf.glade:35919 -#: src/emc/usr_intf/pncconf/pncconf.glade:35939 -#: src/emc/usr_intf/pncconf/pncconf.glade:35959 -#: src/emc/usr_intf/pncconf/pncconf.glade:35979 -#: src/emc/usr_intf/pncconf/pncconf.glade:35999 -#: src/emc/usr_intf/pncconf/pncconf.glade:36019 -#: src/emc/usr_intf/pncconf/pncconf.glade:36039 -#: src/emc/usr_intf/pncconf/pncconf.glade:36059 -#: src/emc/usr_intf/pncconf/pncconf.glade:36079 -#: src/emc/usr_intf/pncconf/pncconf.glade:36099 -#: src/emc/usr_intf/pncconf/pncconf.glade:36119 -#: src/emc/usr_intf/pncconf/pncconf.glade:36139 -#: src/emc/usr_intf/pncconf/pncconf.glade:36159 -#: src/emc/usr_intf/pncconf/pncconf.glade:36179 -#: src/emc/usr_intf/pncconf/pncconf.glade:36199 -#: src/emc/usr_intf/pncconf/pncconf.glade:36219 -#: src/emc/usr_intf/pncconf/pncconf.glade:36239 -#: src/emc/usr_intf/pncconf/pncconf.glade:36259 -#: src/emc/usr_intf/pncconf/pncconf.glade:36279 -#: src/emc/usr_intf/pncconf/pncconf.glade:38208 -#: src/emc/usr_intf/pncconf/pncconf.glade:38549 -#: src/emc/usr_intf/pncconf/pncconf.glade:39779 -#: src/emc/usr_intf/pncconf/pncconf.glade:39799 -#: src/emc/usr_intf/pncconf/pncconf.glade:39819 -#: src/emc/usr_intf/pncconf/pncconf.glade:39839 -#: src/emc/usr_intf/pncconf/pncconf.glade:39859 -#: src/emc/usr_intf/pncconf/pncconf.glade:39879 -#: src/emc/usr_intf/pncconf/pncconf.glade:39899 -#: src/emc/usr_intf/pncconf/pncconf.glade:39919 -#: src/emc/usr_intf/pncconf/pncconf.glade:39939 -#: src/emc/usr_intf/pncconf/pncconf.glade:39959 -#: src/emc/usr_intf/pncconf/pncconf.glade:39979 -#: src/emc/usr_intf/pncconf/pncconf.glade:40199 -#: src/emc/usr_intf/pncconf/pncconf.glade:40219 -#: src/emc/usr_intf/pncconf/pncconf.glade:40239 -#: src/emc/usr_intf/pncconf/pncconf.glade:40259 -#: src/emc/usr_intf/pncconf/pncconf.glade:40279 -#: src/emc/usr_intf/pncconf/pncconf.glade:40299 -#: src/emc/usr_intf/pncconf/pncconf.glade:40319 -#: src/emc/usr_intf/pncconf/pncconf.glade:40339 -#: src/emc/usr_intf/pncconf/pncconf.glade:40359 -#: src/emc/usr_intf/pncconf/pncconf.glade:40379 -#: src/emc/usr_intf/pncconf/pncconf.glade:40399 -#: src/emc/usr_intf/pncconf/pncconf.glade:40419 -#: src/emc/usr_intf/pncconf/pncconf.glade:40439 -#: src/emc/usr_intf/pncconf/pncconf.glade:40459 -#: src/emc/usr_intf/pncconf/pncconf.glade:40479 -#: src/emc/usr_intf/pncconf/pncconf.glade:40499 -#: src/emc/usr_intf/pncconf/pncconf.glade:40519 -#: src/emc/usr_intf/pncconf/pncconf.glade:40539 -#: src/emc/usr_intf/pncconf/pncconf.glade:40559 -#: src/emc/usr_intf/pncconf/pncconf.glade:40579 -#: src/emc/usr_intf/pncconf/pncconf.glade:40599 -#: src/emc/usr_intf/pncconf/pncconf.glade:40619 -#: src/emc/usr_intf/pncconf/pncconf.glade:40639 -#: src/emc/usr_intf/pncconf/pncconf.glade:42555 -#: src/emc/usr_intf/pncconf/pncconf.glade:42778 -#: src/emc/usr_intf/pncconf/pncconf.glade:44707 -#: src/emc/usr_intf/pncconf/pncconf.glade:44727 -#: src/emc/usr_intf/pncconf/pncconf.glade:44747 -#: src/emc/usr_intf/pncconf/pncconf.glade:44767 -#: src/emc/usr_intf/pncconf/pncconf.glade:44787 -#: src/emc/usr_intf/pncconf/pncconf.glade:44807 -#: src/emc/usr_intf/pncconf/pncconf.glade:44827 -#: src/emc/usr_intf/pncconf/pncconf.glade:44847 -#: src/emc/usr_intf/pncconf/pncconf.glade:44867 -#: src/emc/usr_intf/pncconf/pncconf.glade:44887 -#: src/emc/usr_intf/pncconf/pncconf.glade:44907 -#: src/emc/usr_intf/pncconf/pncconf.glade:44927 -#: src/emc/usr_intf/pncconf/pncconf.glade:44947 -#: src/emc/usr_intf/pncconf/pncconf.glade:44967 -#: src/emc/usr_intf/pncconf/pncconf.glade:44987 -#: src/emc/usr_intf/pncconf/pncconf.glade:45007 -#: src/emc/usr_intf/pncconf/pncconf.glade:45027 -#: src/emc/usr_intf/pncconf/pncconf.glade:45047 -#: src/emc/usr_intf/pncconf/pncconf.glade:45067 -#: src/emc/usr_intf/pncconf/pncconf.glade:45087 -#: src/emc/usr_intf/pncconf/pncconf.glade:45107 -#: src/emc/usr_intf/pncconf/pncconf.glade:45127 -#: src/emc/usr_intf/pncconf/pncconf.glade:45147 -#: src/emc/usr_intf/pncconf/pncconf.glade:45456 -#: src/emc/usr_intf/pncconf/pncconf.glade:45476 -#: src/emc/usr_intf/pncconf/pncconf.glade:45496 -#: src/emc/usr_intf/pncconf/pncconf.glade:45516 -#: src/emc/usr_intf/pncconf/pncconf.glade:45536 -#: src/emc/usr_intf/pncconf/pncconf.glade:45556 -#: src/emc/usr_intf/pncconf/pncconf.glade:45576 -#: src/emc/usr_intf/pncconf/pncconf.glade:45596 -#: src/emc/usr_intf/pncconf/pncconf.glade:45616 -#: src/emc/usr_intf/pncconf/pncconf.glade:45636 -#: src/emc/usr_intf/pncconf/pncconf.glade:45656 -#: src/emc/usr_intf/pncconf/pncconf.glade:46886 -#: src/emc/usr_intf/pncconf/pncconf.glade:47122 -#: src/emc/usr_intf/pncconf/pncconf.glade:47142 -#: src/emc/usr_intf/pncconf/pncconf.glade:47162 -#: src/emc/usr_intf/pncconf/pncconf.glade:47182 -#: src/emc/usr_intf/pncconf/pncconf.glade:47202 -#: src/emc/usr_intf/pncconf/pncconf.glade:47222 -#: src/emc/usr_intf/pncconf/pncconf.glade:47242 -#: src/emc/usr_intf/pncconf/pncconf.glade:47262 -#: src/emc/usr_intf/pncconf/pncconf.glade:47282 -#: src/emc/usr_intf/pncconf/pncconf.glade:47302 -#: src/emc/usr_intf/pncconf/pncconf.glade:47322 -#: src/emc/usr_intf/pncconf/pncconf.glade:47342 -#: src/emc/usr_intf/pncconf/pncconf.glade:47362 -#: src/emc/usr_intf/pncconf/pncconf.glade:47382 -#: src/emc/usr_intf/pncconf/pncconf.glade:47402 -#: src/emc/usr_intf/pncconf/pncconf.glade:47422 -#: src/emc/usr_intf/pncconf/pncconf.glade:47442 -#: src/emc/usr_intf/pncconf/pncconf.glade:47462 -#: src/emc/usr_intf/pncconf/pncconf.glade:47482 -#: src/emc/usr_intf/pncconf/pncconf.glade:47502 -#: src/emc/usr_intf/pncconf/pncconf.glade:47522 -#: src/emc/usr_intf/pncconf/pncconf.glade:47542 -#: src/emc/usr_intf/pncconf/pncconf.glade:47562 -#: src/emc/usr_intf/pncconf/pncconf.glade:49478 -#: src/emc/usr_intf/pncconf/pncconf.glade:49701 -#: src/emc/usr_intf/pncconf/pncconf.glade:51630 -#: src/emc/usr_intf/pncconf/pncconf.glade:51650 -#: src/emc/usr_intf/pncconf/pncconf.glade:51670 -#: src/emc/usr_intf/pncconf/pncconf.glade:51690 -#: src/emc/usr_intf/pncconf/pncconf.glade:51710 -#: src/emc/usr_intf/pncconf/pncconf.glade:51730 -#: src/emc/usr_intf/pncconf/pncconf.glade:51750 -#: src/emc/usr_intf/pncconf/pncconf.glade:51770 -#: src/emc/usr_intf/pncconf/pncconf.glade:51790 -#: src/emc/usr_intf/pncconf/pncconf.glade:51810 -#: src/emc/usr_intf/pncconf/pncconf.glade:51830 -#: src/emc/usr_intf/pncconf/pncconf.glade:51850 -#: src/emc/usr_intf/pncconf/pncconf.glade:51870 -#: src/emc/usr_intf/pncconf/pncconf.glade:51890 -#: src/emc/usr_intf/pncconf/pncconf.glade:51910 -#: src/emc/usr_intf/pncconf/pncconf.glade:51930 -#: src/emc/usr_intf/pncconf/pncconf.glade:51950 -#: src/emc/usr_intf/pncconf/pncconf.glade:51970 -#: src/emc/usr_intf/pncconf/pncconf.glade:51990 -#: src/emc/usr_intf/pncconf/pncconf.glade:52010 -#: src/emc/usr_intf/pncconf/pncconf.glade:52030 -#: src/emc/usr_intf/pncconf/pncconf.glade:52050 -#: src/emc/usr_intf/pncconf/pncconf.glade:52070 -#: src/emc/usr_intf/pncconf/pncconf.glade:52379 -#: src/emc/usr_intf/pncconf/pncconf.glade:52399 -#: src/emc/usr_intf/pncconf/pncconf.glade:52419 -#: src/emc/usr_intf/pncconf/pncconf.glade:52439 -#: src/emc/usr_intf/pncconf/pncconf.glade:52459 -#: src/emc/usr_intf/pncconf/pncconf.glade:52479 -#: src/emc/usr_intf/pncconf/pncconf.glade:52499 -#: src/emc/usr_intf/pncconf/pncconf.glade:52519 -#: src/emc/usr_intf/pncconf/pncconf.glade:52539 -#: src/emc/usr_intf/pncconf/pncconf.glade:52559 -#: src/emc/usr_intf/pncconf/pncconf.glade:52579 -#: src/emc/usr_intf/pncconf/pncconf.glade:53809 -msgid "" -"GPIO Input\n" -"GPIO Output\n" -"GPIO O Drain\n" -"Encoder\n" -"PWM\n" -"StepGen\n" +msgid "Num of Smart Serial Ports:" +msgstr "地雷数量:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:8393 +msgid "7i29 daughter board" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:8402 +msgid "7i30 daughter board" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:8414 +msgid "7i33 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9198 -#: src/emc/usr_intf/pncconf/pncconf.glade:13188 -#: src/emc/usr_intf/pncconf/pncconf.glade:15884 -#: src/emc/usr_intf/pncconf/pncconf.glade:18394 -#: src/emc/usr_intf/pncconf/pncconf.glade:20397 -#: src/emc/usr_intf/pncconf/pncconf.glade:21325 -#: src/emc/usr_intf/pncconf/pncconf.glade:23121 -#: src/emc/usr_intf/pncconf/pncconf.glade:24917 +#: src/emc/usr_intf/pncconf/pncconf.glade:8426 +msgid "7i40 daughter board" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:8438 +msgid "7i48 daughter board" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:8453 #, fuzzy -msgid "Launch test panel" -msgstr "_Latency test result:" +msgid "Sanity Checks" +msgstr "界面" -#: src/emc/usr_intf/pncconf/pncconf.glade:9213 -#: src/emc/usr_intf/pncconf/pncconf.glade:9225 -#: src/emc/usr_intf/pncconf/pncconf.glade:13162 -#: src/emc/usr_intf/pncconf/pncconf.glade:13174 -#: src/emc/usr_intf/pncconf/pncconf.glade:15858 -#: src/emc/usr_intf/pncconf/pncconf.glade:15870 -#: src/emc/usr_intf/pncconf/pncconf.glade:18367 -#: src/emc/usr_intf/pncconf/pncconf.glade:18379 -#: src/emc/usr_intf/pncconf/pncconf.glade:20370 -#: src/emc/usr_intf/pncconf/pncconf.glade:20382 -#: src/emc/usr_intf/pncconf/pncconf.glade:21339 -#: src/emc/usr_intf/pncconf/pncconf.glade:21351 -#: src/emc/usr_intf/pncconf/pncconf.glade:23135 -#: src/emc/usr_intf/pncconf/pncconf.glade:23147 -#: src/emc/usr_intf/pncconf/pncconf.glade:24931 -#: src/emc/usr_intf/pncconf/pncconf.glade:24943 -#: src/emc/usr_intf/pncconf/pncconf.glade:26815 -#: src/emc/usr_intf/pncconf/pncconf.glade:26827 -#: src/emc/usr_intf/pncconf/pncconf.glade:30826 -#: src/emc/usr_intf/pncconf/pncconf.glade:30838 -#: src/emc/usr_intf/pncconf/pncconf.glade:31831 -#: src/emc/usr_intf/pncconf/pncconf.glade:35184 -#: src/emc/usr_intf/pncconf/pncconf.glade:35196 -#: src/emc/usr_intf/pncconf/pncconf.glade:36312 -#: src/emc/usr_intf/pncconf/pncconf.glade:36324 -#: src/emc/usr_intf/pncconf/pncconf.glade:39755 -#: src/emc/usr_intf/pncconf/pncconf.glade:39767 -#: src/emc/usr_intf/pncconf/pncconf.glade:40659 -#: src/emc/usr_intf/pncconf/pncconf.glade:40671 -#: src/emc/usr_intf/pncconf/pncconf.glade:44670 -#: src/emc/usr_intf/pncconf/pncconf.glade:44682 -#: src/emc/usr_intf/pncconf/pncconf.glade:45676 -#: src/emc/usr_intf/pncconf/pncconf.glade:45688 -#: src/emc/usr_intf/pncconf/pncconf.glade:47582 -#: src/emc/usr_intf/pncconf/pncconf.glade:47594 -#: src/emc/usr_intf/pncconf/pncconf.glade:51593 -#: src/emc/usr_intf/pncconf/pncconf.glade:51605 -#: src/emc/usr_intf/pncconf/pncconf.glade:52599 -#: src/emc/usr_intf/pncconf/pncconf.glade:52611 +#: src/emc/usr_intf/pncconf/pncconf.glade:8482 #, fuzzy -msgid "function" -msgstr "函数" +msgid "Num of channels: " +msgstr "颜色数:" -#: src/emc/usr_intf/pncconf/pncconf.glade:9305 -#: src/emc/usr_intf/pncconf/pncconf.glade:9357 -#: src/emc/usr_intf/pncconf/pncconf.glade:9409 -#: src/emc/usr_intf/pncconf/pncconf.glade:9461 -#: src/emc/usr_intf/pncconf/pncconf.glade:10301 -#: src/emc/usr_intf/pncconf/pncconf.glade:10353 -#: src/emc/usr_intf/pncconf/pncconf.glade:10405 -#: src/emc/usr_intf/pncconf/pncconf.glade:10457 -#: src/emc/usr_intf/pncconf/pncconf.glade:10509 -#: src/emc/usr_intf/pncconf/pncconf.glade:10561 -#: src/emc/usr_intf/pncconf/pncconf.glade:10613 -#: src/emc/usr_intf/pncconf/pncconf.glade:10665 -#: src/emc/usr_intf/pncconf/pncconf.glade:10717 -#: src/emc/usr_intf/pncconf/pncconf.glade:10769 -#: src/emc/usr_intf/pncconf/pncconf.glade:11089 -#: src/emc/usr_intf/pncconf/pncconf.glade:11141 -#: src/emc/usr_intf/pncconf/pncconf.glade:11579 -#: src/emc/usr_intf/pncconf/pncconf.glade:11631 -#: src/emc/usr_intf/pncconf/pncconf.glade:11683 -#: src/emc/usr_intf/pncconf/pncconf.glade:11735 -#: src/emc/usr_intf/pncconf/pncconf.glade:11787 -#: src/emc/usr_intf/pncconf/pncconf.glade:11839 -#: src/emc/usr_intf/pncconf/pncconf.glade:11891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11943 -#: src/emc/usr_intf/pncconf/pncconf.glade:11995 +#: src/emc/usr_intf/pncconf/pncconf.glade:8494 +#, fuzzy +msgid "Num of resolvers:" +msgstr "颜色数:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:8528 +#, fuzzy +msgid "" +"Configuration\n" +" Page" +msgstr "配置" + +#: src/emc/usr_intf/pncconf/pncconf.glade:8721 +#: src/emc/usr_intf/pncconf/pncconf.glade:8773 +#: src/emc/usr_intf/pncconf/pncconf.glade:9093 +#: src/emc/usr_intf/pncconf/pncconf.glade:9145 +#: src/emc/usr_intf/pncconf/pncconf.glade:9197 +#: src/emc/usr_intf/pncconf/pncconf.glade:9249 +#: src/emc/usr_intf/pncconf/pncconf.glade:9301 +#: src/emc/usr_intf/pncconf/pncconf.glade:9353 +#: src/emc/usr_intf/pncconf/pncconf.glade:9405 +#: src/emc/usr_intf/pncconf/pncconf.glade:9457 +#: src/emc/usr_intf/pncconf/pncconf.glade:9509 +#: src/emc/usr_intf/pncconf/pncconf.glade:9561 +#: src/emc/usr_intf/pncconf/pncconf.glade:10400 +#: src/emc/usr_intf/pncconf/pncconf.glade:10453 +#: src/emc/usr_intf/pncconf/pncconf.glade:10505 +#: src/emc/usr_intf/pncconf/pncconf.glade:10557 +#: src/emc/usr_intf/pncconf/pncconf.glade:11335 +#: src/emc/usr_intf/pncconf/pncconf.glade:11387 #: src/emc/usr_intf/pncconf/pncconf.glade:12047 -#: src/emc/usr_intf/pncconf/pncconf.glade:12886 -#: src/emc/usr_intf/pncconf/pncconf.glade:12938 -#: src/emc/usr_intf/pncconf/pncconf.glade:12990 +#: src/emc/usr_intf/pncconf/pncconf.glade:12099 +#: src/emc/usr_intf/pncconf/pncconf.glade:12151 +#: src/emc/usr_intf/pncconf/pncconf.glade:12203 #: src/emc/usr_intf/pncconf/pncconf.glade:13042 -#: src/emc/usr_intf/pncconf/pncconf.glade:13702 -#: src/emc/usr_intf/pncconf/pncconf.glade:13754 -#: src/emc/usr_intf/pncconf/pncconf.glade:14183 -#: src/emc/usr_intf/pncconf/pncconf.glade:14235 -#: src/emc/usr_intf/pncconf/pncconf.glade:14287 -#: src/emc/usr_intf/pncconf/pncconf.glade:14339 -#: src/emc/usr_intf/pncconf/pncconf.glade:14391 -#: src/emc/usr_intf/pncconf/pncconf.glade:14443 -#: src/emc/usr_intf/pncconf/pncconf.glade:14495 -#: src/emc/usr_intf/pncconf/pncconf.glade:14547 -#: src/emc/usr_intf/pncconf/pncconf.glade:14599 -#: src/emc/usr_intf/pncconf/pncconf.glade:14651 -#: src/emc/usr_intf/pncconf/pncconf.glade:14703 -#: src/emc/usr_intf/pncconf/pncconf.glade:14755 -#: src/emc/usr_intf/pncconf/pncconf.glade:15582 -#: src/emc/usr_intf/pncconf/pncconf.glade:15634 -#: src/emc/usr_intf/pncconf/pncconf.glade:15686 -#: src/emc/usr_intf/pncconf/pncconf.glade:15738 -#: src/emc/usr_intf/pncconf/pncconf.glade:16784 -#: src/emc/usr_intf/pncconf/pncconf.glade:16836 -#: src/emc/usr_intf/pncconf/pncconf.glade:16888 -#: src/emc/usr_intf/pncconf/pncconf.glade:16940 -#: src/emc/usr_intf/pncconf/pncconf.glade:16992 -#: src/emc/usr_intf/pncconf/pncconf.glade:17044 -#: src/emc/usr_intf/pncconf/pncconf.glade:17096 -#: src/emc/usr_intf/pncconf/pncconf.glade:17148 -#: src/emc/usr_intf/pncconf/pncconf.glade:17200 -#: src/emc/usr_intf/pncconf/pncconf.glade:17252 -#: src/emc/usr_intf/pncconf/pncconf.glade:17304 -#: src/emc/usr_intf/pncconf/pncconf.glade:18143 -#: src/emc/usr_intf/pncconf/pncconf.glade:18195 -#: src/emc/usr_intf/pncconf/pncconf.glade:18247 -#: src/emc/usr_intf/pncconf/pncconf.glade:18908 -#: src/emc/usr_intf/pncconf/pncconf.glade:18960 -#: src/emc/usr_intf/pncconf/pncconf.glade:26907 -#: src/emc/usr_intf/pncconf/pncconf.glade:26959 -#: src/emc/usr_intf/pncconf/pncconf.glade:27011 -#: src/emc/usr_intf/pncconf/pncconf.glade:27063 -#: src/emc/usr_intf/pncconf/pncconf.glade:27890 -#: src/emc/usr_intf/pncconf/pncconf.glade:27942 -#: src/emc/usr_intf/pncconf/pncconf.glade:27994 -#: src/emc/usr_intf/pncconf/pncconf.glade:28046 -#: src/emc/usr_intf/pncconf/pncconf.glade:28098 -#: src/emc/usr_intf/pncconf/pncconf.glade:28150 -#: src/emc/usr_intf/pncconf/pncconf.glade:28202 -#: src/emc/usr_intf/pncconf/pncconf.glade:28254 -#: src/emc/usr_intf/pncconf/pncconf.glade:28306 -#: src/emc/usr_intf/pncconf/pncconf.glade:28358 -#: src/emc/usr_intf/pncconf/pncconf.glade:28410 -#: src/emc/usr_intf/pncconf/pncconf.glade:28462 -#: src/emc/usr_intf/pncconf/pncconf.glade:29151 -#: src/emc/usr_intf/pncconf/pncconf.glade:29203 -#: src/emc/usr_intf/pncconf/pncconf.glade:29255 -#: src/emc/usr_intf/pncconf/pncconf.glade:29307 -#: src/emc/usr_intf/pncconf/pncconf.glade:29359 -#: src/emc/usr_intf/pncconf/pncconf.glade:29411 -#: src/emc/usr_intf/pncconf/pncconf.glade:29463 -#: src/emc/usr_intf/pncconf/pncconf.glade:29515 -#: src/emc/usr_intf/pncconf/pncconf.glade:29567 -#: src/emc/usr_intf/pncconf/pncconf.glade:29619 -#: src/emc/usr_intf/pncconf/pncconf.glade:29671 -#: src/emc/usr_intf/pncconf/pncconf.glade:29723 -#: src/emc/usr_intf/pncconf/pncconf.glade:30550 -#: src/emc/usr_intf/pncconf/pncconf.glade:30602 -#: src/emc/usr_intf/pncconf/pncconf.glade:30654 -#: src/emc/usr_intf/pncconf/pncconf.glade:30706 -#: src/emc/usr_intf/pncconf/pncconf.glade:32210 -#: src/emc/usr_intf/pncconf/pncconf.glade:32262 -#: src/emc/usr_intf/pncconf/pncconf.glade:32314 -#: src/emc/usr_intf/pncconf/pncconf.glade:32366 -#: src/emc/usr_intf/pncconf/pncconf.glade:32418 -#: src/emc/usr_intf/pncconf/pncconf.glade:32470 -#: src/emc/usr_intf/pncconf/pncconf.glade:32522 -#: src/emc/usr_intf/pncconf/pncconf.glade:32574 -#: src/emc/usr_intf/pncconf/pncconf.glade:32626 -#: src/emc/usr_intf/pncconf/pncconf.glade:32678 -#: src/emc/usr_intf/pncconf/pncconf.glade:32730 -#: src/emc/usr_intf/pncconf/pncconf.glade:32782 -#: src/emc/usr_intf/pncconf/pncconf.glade:33509 -#: src/emc/usr_intf/pncconf/pncconf.glade:33561 -#: src/emc/usr_intf/pncconf/pncconf.glade:33613 -#: src/emc/usr_intf/pncconf/pncconf.glade:33665 -#: src/emc/usr_intf/pncconf/pncconf.glade:33717 -#: src/emc/usr_intf/pncconf/pncconf.glade:33769 -#: src/emc/usr_intf/pncconf/pncconf.glade:33821 -#: src/emc/usr_intf/pncconf/pncconf.glade:33873 -#: src/emc/usr_intf/pncconf/pncconf.glade:33925 -#: src/emc/usr_intf/pncconf/pncconf.glade:33977 -#: src/emc/usr_intf/pncconf/pncconf.glade:34029 -#: src/emc/usr_intf/pncconf/pncconf.glade:34081 -#: src/emc/usr_intf/pncconf/pncconf.glade:34908 -#: src/emc/usr_intf/pncconf/pncconf.glade:34960 -#: src/emc/usr_intf/pncconf/pncconf.glade:35012 -#: src/emc/usr_intf/pncconf/pncconf.glade:35064 -#: src/emc/usr_intf/pncconf/pncconf.glade:36404 -#: src/emc/usr_intf/pncconf/pncconf.glade:36456 -#: src/emc/usr_intf/pncconf/pncconf.glade:36508 -#: src/emc/usr_intf/pncconf/pncconf.glade:36560 -#: src/emc/usr_intf/pncconf/pncconf.glade:37387 -#: src/emc/usr_intf/pncconf/pncconf.glade:37439 -#: src/emc/usr_intf/pncconf/pncconf.glade:37491 -#: src/emc/usr_intf/pncconf/pncconf.glade:37543 -#: src/emc/usr_intf/pncconf/pncconf.glade:37595 -#: src/emc/usr_intf/pncconf/pncconf.glade:37647 -#: src/emc/usr_intf/pncconf/pncconf.glade:37699 -#: src/emc/usr_intf/pncconf/pncconf.glade:37751 -#: src/emc/usr_intf/pncconf/pncconf.glade:37803 -#: src/emc/usr_intf/pncconf/pncconf.glade:37855 -#: src/emc/usr_intf/pncconf/pncconf.glade:37907 -#: src/emc/usr_intf/pncconf/pncconf.glade:37959 -#: src/emc/usr_intf/pncconf/pncconf.glade:38764 -#: src/emc/usr_intf/pncconf/pncconf.glade:38816 -#: src/emc/usr_intf/pncconf/pncconf.glade:38868 -#: src/emc/usr_intf/pncconf/pncconf.glade:38920 -#: src/emc/usr_intf/pncconf/pncconf.glade:38972 -#: src/emc/usr_intf/pncconf/pncconf.glade:39024 -#: src/emc/usr_intf/pncconf/pncconf.glade:39076 -#: src/emc/usr_intf/pncconf/pncconf.glade:39128 -#: src/emc/usr_intf/pncconf/pncconf.glade:39180 -#: src/emc/usr_intf/pncconf/pncconf.glade:39232 -#: src/emc/usr_intf/pncconf/pncconf.glade:39284 -#: src/emc/usr_intf/pncconf/pncconf.glade:39336 -#: src/emc/usr_intf/pncconf/pncconf.glade:40751 -#: src/emc/usr_intf/pncconf/pncconf.glade:40803 -#: src/emc/usr_intf/pncconf/pncconf.glade:40855 -#: src/emc/usr_intf/pncconf/pncconf.glade:40907 -#: src/emc/usr_intf/pncconf/pncconf.glade:41734 -#: src/emc/usr_intf/pncconf/pncconf.glade:41786 -#: src/emc/usr_intf/pncconf/pncconf.glade:41838 -#: src/emc/usr_intf/pncconf/pncconf.glade:41890 -#: src/emc/usr_intf/pncconf/pncconf.glade:41942 -#: src/emc/usr_intf/pncconf/pncconf.glade:41994 -#: src/emc/usr_intf/pncconf/pncconf.glade:42046 -#: src/emc/usr_intf/pncconf/pncconf.glade:42098 -#: src/emc/usr_intf/pncconf/pncconf.glade:42150 -#: src/emc/usr_intf/pncconf/pncconf.glade:42202 -#: src/emc/usr_intf/pncconf/pncconf.glade:42254 -#: src/emc/usr_intf/pncconf/pncconf.glade:42306 -#: src/emc/usr_intf/pncconf/pncconf.glade:42995 -#: src/emc/usr_intf/pncconf/pncconf.glade:43047 -#: src/emc/usr_intf/pncconf/pncconf.glade:43099 -#: src/emc/usr_intf/pncconf/pncconf.glade:43151 -#: src/emc/usr_intf/pncconf/pncconf.glade:43203 -#: src/emc/usr_intf/pncconf/pncconf.glade:43255 -#: src/emc/usr_intf/pncconf/pncconf.glade:43307 -#: src/emc/usr_intf/pncconf/pncconf.glade:43359 -#: src/emc/usr_intf/pncconf/pncconf.glade:43411 -#: src/emc/usr_intf/pncconf/pncconf.glade:43463 -#: src/emc/usr_intf/pncconf/pncconf.glade:43515 -#: src/emc/usr_intf/pncconf/pncconf.glade:43567 -#: src/emc/usr_intf/pncconf/pncconf.glade:44394 -#: src/emc/usr_intf/pncconf/pncconf.glade:44446 -#: src/emc/usr_intf/pncconf/pncconf.glade:44498 -#: src/emc/usr_intf/pncconf/pncconf.glade:44550 -#: src/emc/usr_intf/pncconf/pncconf.glade:46067 -#: src/emc/usr_intf/pncconf/pncconf.glade:46119 -#: src/emc/usr_intf/pncconf/pncconf.glade:46171 -#: src/emc/usr_intf/pncconf/pncconf.glade:46223 -#: src/emc/usr_intf/pncconf/pncconf.glade:46275 -#: src/emc/usr_intf/pncconf/pncconf.glade:46327 -#: src/emc/usr_intf/pncconf/pncconf.glade:46379 -#: src/emc/usr_intf/pncconf/pncconf.glade:46431 -#: src/emc/usr_intf/pncconf/pncconf.glade:46483 -#: src/emc/usr_intf/pncconf/pncconf.glade:46535 -#: src/emc/usr_intf/pncconf/pncconf.glade:46587 -#: src/emc/usr_intf/pncconf/pncconf.glade:46639 -#: src/emc/usr_intf/pncconf/pncconf.glade:47674 -#: src/emc/usr_intf/pncconf/pncconf.glade:47726 -#: src/emc/usr_intf/pncconf/pncconf.glade:47778 -#: src/emc/usr_intf/pncconf/pncconf.glade:47830 -#: src/emc/usr_intf/pncconf/pncconf.glade:48657 -#: src/emc/usr_intf/pncconf/pncconf.glade:48709 -#: src/emc/usr_intf/pncconf/pncconf.glade:48761 -#: src/emc/usr_intf/pncconf/pncconf.glade:48813 -#: src/emc/usr_intf/pncconf/pncconf.glade:48865 -#: src/emc/usr_intf/pncconf/pncconf.glade:48917 -#: src/emc/usr_intf/pncconf/pncconf.glade:48969 -#: src/emc/usr_intf/pncconf/pncconf.glade:49021 -#: src/emc/usr_intf/pncconf/pncconf.glade:49073 -#: src/emc/usr_intf/pncconf/pncconf.glade:49125 -#: src/emc/usr_intf/pncconf/pncconf.glade:49177 -#: src/emc/usr_intf/pncconf/pncconf.glade:49229 -#: src/emc/usr_intf/pncconf/pncconf.glade:49918 -#: src/emc/usr_intf/pncconf/pncconf.glade:49970 -#: src/emc/usr_intf/pncconf/pncconf.glade:50022 -#: src/emc/usr_intf/pncconf/pncconf.glade:50074 -#: src/emc/usr_intf/pncconf/pncconf.glade:50126 -#: src/emc/usr_intf/pncconf/pncconf.glade:50178 -#: src/emc/usr_intf/pncconf/pncconf.glade:50230 -#: src/emc/usr_intf/pncconf/pncconf.glade:50282 -#: src/emc/usr_intf/pncconf/pncconf.glade:50334 -#: src/emc/usr_intf/pncconf/pncconf.glade:50386 -#: src/emc/usr_intf/pncconf/pncconf.glade:50438 -#: src/emc/usr_intf/pncconf/pncconf.glade:50490 -#: src/emc/usr_intf/pncconf/pncconf.glade:51317 -#: src/emc/usr_intf/pncconf/pncconf.glade:51369 -#: src/emc/usr_intf/pncconf/pncconf.glade:51421 -#: src/emc/usr_intf/pncconf/pncconf.glade:51473 -#: src/emc/usr_intf/pncconf/pncconf.glade:52990 -#: src/emc/usr_intf/pncconf/pncconf.glade:53042 -#: src/emc/usr_intf/pncconf/pncconf.glade:53094 -#: src/emc/usr_intf/pncconf/pncconf.glade:53146 -#: src/emc/usr_intf/pncconf/pncconf.glade:53198 -#: src/emc/usr_intf/pncconf/pncconf.glade:53250 -#: src/emc/usr_intf/pncconf/pncconf.glade:53302 -#: src/emc/usr_intf/pncconf/pncconf.glade:53354 -#: src/emc/usr_intf/pncconf/pncconf.glade:53406 -#: src/emc/usr_intf/pncconf/pncconf.glade:53458 -#: src/emc/usr_intf/pncconf/pncconf.glade:53510 -#: src/emc/usr_intf/pncconf/pncconf.glade:53562 +#: src/emc/usr_intf/pncconf/pncconf.glade:13094 +#: src/emc/usr_intf/pncconf/pncconf.glade:13146 +#: src/emc/usr_intf/pncconf/pncconf.glade:13198 +#: src/emc/usr_intf/pncconf/pncconf.glade:13250 +#: src/emc/usr_intf/pncconf/pncconf.glade:13302 +#: src/emc/usr_intf/pncconf/pncconf.glade:13354 +#: src/emc/usr_intf/pncconf/pncconf.glade:13406 +#: src/emc/usr_intf/pncconf/pncconf.glade:13458 +#: src/emc/usr_intf/pncconf/pncconf.glade:13510 +#: src/emc/usr_intf/pncconf/pncconf.glade:14556 +#: src/emc/usr_intf/pncconf/pncconf.glade:14608 +#: src/emc/usr_intf/pncconf/pncconf.glade:14660 +#: src/emc/usr_intf/pncconf/pncconf.glade:14712 +#: src/emc/usr_intf/pncconf/pncconf.glade:15539 +#: src/emc/usr_intf/pncconf/pncconf.glade:15591 +#: src/emc/usr_intf/pncconf/pncconf.glade:15643 +#: src/emc/usr_intf/pncconf/pncconf.glade:15695 +#: src/emc/usr_intf/pncconf/pncconf.glade:15747 +#: src/emc/usr_intf/pncconf/pncconf.glade:15799 +#: src/emc/usr_intf/pncconf/pncconf.glade:15851 +#: src/emc/usr_intf/pncconf/pncconf.glade:15903 +#: src/emc/usr_intf/pncconf/pncconf.glade:15955 +#: src/emc/usr_intf/pncconf/pncconf.glade:16007 +#: src/emc/usr_intf/pncconf/pncconf.glade:16059 +#: src/emc/usr_intf/pncconf/pncconf.glade:16111 +#: src/emc/usr_intf/pncconf/pncconf.glade:16540 +#: src/emc/usr_intf/pncconf/pncconf.glade:16592 +#: src/emc/usr_intf/pncconf/pncconf.glade:17253 +#: src/emc/usr_intf/pncconf/pncconf.glade:17305 +#: src/emc/usr_intf/pncconf/pncconf.glade:17357 +#: src/emc/usr_intf/pncconf/pncconf.glade:18196 +#: src/emc/usr_intf/pncconf/pncconf.glade:18248 +#: src/emc/usr_intf/pncconf/pncconf.glade:18300 +#: src/emc/usr_intf/pncconf/pncconf.glade:18352 +#: src/emc/usr_intf/pncconf/pncconf.glade:18404 +#: src/emc/usr_intf/pncconf/pncconf.glade:18456 +#: src/emc/usr_intf/pncconf/pncconf.glade:18508 +#: src/emc/usr_intf/pncconf/pncconf.glade:18560 +#: src/emc/usr_intf/pncconf/pncconf.glade:18612 +#: src/emc/usr_intf/pncconf/pncconf.glade:18664 +#: src/emc/usr_intf/pncconf/pncconf.glade:18716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26612 +#: src/emc/usr_intf/pncconf/pncconf.glade:26664 +#: src/emc/usr_intf/pncconf/pncconf.glade:26716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26768 +#: src/emc/usr_intf/pncconf/pncconf.glade:26820 +#: src/emc/usr_intf/pncconf/pncconf.glade:26872 +#: src/emc/usr_intf/pncconf/pncconf.glade:26924 +#: src/emc/usr_intf/pncconf/pncconf.glade:26976 +#: src/emc/usr_intf/pncconf/pncconf.glade:27028 +#: src/emc/usr_intf/pncconf/pncconf.glade:27080 +#: src/emc/usr_intf/pncconf/pncconf.glade:27132 +#: src/emc/usr_intf/pncconf/pncconf.glade:27184 +#: src/emc/usr_intf/pncconf/pncconf.glade:28011 +#: src/emc/usr_intf/pncconf/pncconf.glade:28063 +#: src/emc/usr_intf/pncconf/pncconf.glade:28115 +#: src/emc/usr_intf/pncconf/pncconf.glade:28167 +#: src/emc/usr_intf/pncconf/pncconf.glade:29507 +#: src/emc/usr_intf/pncconf/pncconf.glade:29559 +#: src/emc/usr_intf/pncconf/pncconf.glade:29611 +#: src/emc/usr_intf/pncconf/pncconf.glade:29663 +#: src/emc/usr_intf/pncconf/pncconf.glade:30490 +#: src/emc/usr_intf/pncconf/pncconf.glade:30542 +#: src/emc/usr_intf/pncconf/pncconf.glade:30594 +#: src/emc/usr_intf/pncconf/pncconf.glade:30646 +#: src/emc/usr_intf/pncconf/pncconf.glade:30698 +#: src/emc/usr_intf/pncconf/pncconf.glade:30750 +#: src/emc/usr_intf/pncconf/pncconf.glade:30802 +#: src/emc/usr_intf/pncconf/pncconf.glade:30854 +#: src/emc/usr_intf/pncconf/pncconf.glade:30906 +#: src/emc/usr_intf/pncconf/pncconf.glade:30958 +#: src/emc/usr_intf/pncconf/pncconf.glade:31010 +#: src/emc/usr_intf/pncconf/pncconf.glade:31062 +#: src/emc/usr_intf/pncconf/pncconf.glade:31878 +#: src/emc/usr_intf/pncconf/pncconf.glade:31930 +#: src/emc/usr_intf/pncconf/pncconf.glade:31982 +#: src/emc/usr_intf/pncconf/pncconf.glade:32034 +#: src/emc/usr_intf/pncconf/pncconf.glade:32086 +#: src/emc/usr_intf/pncconf/pncconf.glade:32138 +#: src/emc/usr_intf/pncconf/pncconf.glade:32190 +#: src/emc/usr_intf/pncconf/pncconf.glade:32242 +#: src/emc/usr_intf/pncconf/pncconf.glade:32294 +#: src/emc/usr_intf/pncconf/pncconf.glade:32346 +#: src/emc/usr_intf/pncconf/pncconf.glade:32398 +#: src/emc/usr_intf/pncconf/pncconf.glade:32450 +#: src/emc/usr_intf/pncconf/pncconf.glade:33852 +#: src/emc/usr_intf/pncconf/pncconf.glade:33904 +#: src/emc/usr_intf/pncconf/pncconf.glade:33956 +#: src/emc/usr_intf/pncconf/pncconf.glade:34008 +#: src/emc/usr_intf/pncconf/pncconf.glade:34835 +#: src/emc/usr_intf/pncconf/pncconf.glade:34887 +#: src/emc/usr_intf/pncconf/pncconf.glade:34939 +#: src/emc/usr_intf/pncconf/pncconf.glade:34991 +#: src/emc/usr_intf/pncconf/pncconf.glade:35043 +#: src/emc/usr_intf/pncconf/pncconf.glade:35095 +#: src/emc/usr_intf/pncconf/pncconf.glade:35147 +#: src/emc/usr_intf/pncconf/pncconf.glade:35199 +#: src/emc/usr_intf/pncconf/pncconf.glade:35251 +#: src/emc/usr_intf/pncconf/pncconf.glade:35303 +#: src/emc/usr_intf/pncconf/pncconf.glade:35355 +#: src/emc/usr_intf/pncconf/pncconf.glade:35407 +#: src/emc/usr_intf/pncconf/pncconf.glade:36096 +#: src/emc/usr_intf/pncconf/pncconf.glade:36148 +#: src/emc/usr_intf/pncconf/pncconf.glade:36200 +#: src/emc/usr_intf/pncconf/pncconf.glade:36252 +#: src/emc/usr_intf/pncconf/pncconf.glade:36304 +#: src/emc/usr_intf/pncconf/pncconf.glade:36356 +#: src/emc/usr_intf/pncconf/pncconf.glade:36408 +#: src/emc/usr_intf/pncconf/pncconf.glade:36460 +#: src/emc/usr_intf/pncconf/pncconf.glade:36512 +#: src/emc/usr_intf/pncconf/pncconf.glade:36564 +#: src/emc/usr_intf/pncconf/pncconf.glade:36616 +#: src/emc/usr_intf/pncconf/pncconf.glade:36668 +#: src/emc/usr_intf/pncconf/pncconf.glade:37495 +#: src/emc/usr_intf/pncconf/pncconf.glade:37547 +#: src/emc/usr_intf/pncconf/pncconf.glade:37599 +#: src/emc/usr_intf/pncconf/pncconf.glade:37651 +#: src/emc/usr_intf/pncconf/pncconf.glade:39168 +#: src/emc/usr_intf/pncconf/pncconf.glade:39220 +#: src/emc/usr_intf/pncconf/pncconf.glade:39272 +#: src/emc/usr_intf/pncconf/pncconf.glade:39324 +#: src/emc/usr_intf/pncconf/pncconf.glade:39376 +#: src/emc/usr_intf/pncconf/pncconf.glade:39428 +#: src/emc/usr_intf/pncconf/pncconf.glade:39480 +#: src/emc/usr_intf/pncconf/pncconf.glade:39532 +#: src/emc/usr_intf/pncconf/pncconf.glade:39584 +#: src/emc/usr_intf/pncconf/pncconf.glade:39636 +#: src/emc/usr_intf/pncconf/pncconf.glade:39688 +#: src/emc/usr_intf/pncconf/pncconf.glade:39740 +#: src/emc/usr_intf/pncconf/pncconf.glade:40456 +#: src/emc/usr_intf/pncconf/pncconf.glade:40508 +#: src/emc/usr_intf/pncconf/pncconf.glade:40560 +#: src/emc/usr_intf/pncconf/pncconf.glade:40612 +#: src/emc/usr_intf/pncconf/pncconf.glade:40664 +#: src/emc/usr_intf/pncconf/pncconf.glade:40716 +#: src/emc/usr_intf/pncconf/pncconf.glade:40768 +#: src/emc/usr_intf/pncconf/pncconf.glade:40820 +#: src/emc/usr_intf/pncconf/pncconf.glade:40872 +#: src/emc/usr_intf/pncconf/pncconf.glade:40924 +#: src/emc/usr_intf/pncconf/pncconf.glade:40976 +#: src/emc/usr_intf/pncconf/pncconf.glade:41028 +#: src/emc/usr_intf/pncconf/pncconf.glade:41855 +#: src/emc/usr_intf/pncconf/pncconf.glade:41907 +#: src/emc/usr_intf/pncconf/pncconf.glade:41959 +#: src/emc/usr_intf/pncconf/pncconf.glade:42011 +#: src/emc/usr_intf/pncconf/pncconf.glade:43351 +#: src/emc/usr_intf/pncconf/pncconf.glade:43403 +#: src/emc/usr_intf/pncconf/pncconf.glade:43455 +#: src/emc/usr_intf/pncconf/pncconf.glade:43507 +#: src/emc/usr_intf/pncconf/pncconf.glade:44334 +#: src/emc/usr_intf/pncconf/pncconf.glade:44386 +#: src/emc/usr_intf/pncconf/pncconf.glade:44438 +#: src/emc/usr_intf/pncconf/pncconf.glade:44490 +#: src/emc/usr_intf/pncconf/pncconf.glade:44542 +#: src/emc/usr_intf/pncconf/pncconf.glade:44594 +#: src/emc/usr_intf/pncconf/pncconf.glade:44646 +#: src/emc/usr_intf/pncconf/pncconf.glade:44698 +#: src/emc/usr_intf/pncconf/pncconf.glade:44750 +#: src/emc/usr_intf/pncconf/pncconf.glade:44802 +#: src/emc/usr_intf/pncconf/pncconf.glade:44854 +#: src/emc/usr_intf/pncconf/pncconf.glade:44906 +#: src/emc/usr_intf/pncconf/pncconf.glade:45711 +#: src/emc/usr_intf/pncconf/pncconf.glade:45763 +#: src/emc/usr_intf/pncconf/pncconf.glade:45815 +#: src/emc/usr_intf/pncconf/pncconf.glade:45867 +#: src/emc/usr_intf/pncconf/pncconf.glade:45919 +#: src/emc/usr_intf/pncconf/pncconf.glade:45971 +#: src/emc/usr_intf/pncconf/pncconf.glade:46023 +#: src/emc/usr_intf/pncconf/pncconf.glade:46075 +#: src/emc/usr_intf/pncconf/pncconf.glade:46127 +#: src/emc/usr_intf/pncconf/pncconf.glade:46179 +#: src/emc/usr_intf/pncconf/pncconf.glade:46231 +#: src/emc/usr_intf/pncconf/pncconf.glade:46283 +#: src/emc/usr_intf/pncconf/pncconf.glade:47379 +#: src/emc/usr_intf/pncconf/pncconf.glade:47431 +#: src/emc/usr_intf/pncconf/pncconf.glade:47483 +#: src/emc/usr_intf/pncconf/pncconf.glade:47535 +#: src/emc/usr_intf/pncconf/pncconf.glade:47587 +#: src/emc/usr_intf/pncconf/pncconf.glade:47639 +#: src/emc/usr_intf/pncconf/pncconf.glade:47691 +#: src/emc/usr_intf/pncconf/pncconf.glade:47743 +#: src/emc/usr_intf/pncconf/pncconf.glade:47795 +#: src/emc/usr_intf/pncconf/pncconf.glade:47847 +#: src/emc/usr_intf/pncconf/pncconf.glade:47899 +#: src/emc/usr_intf/pncconf/pncconf.glade:47951 +#: src/emc/usr_intf/pncconf/pncconf.glade:48778 +#: src/emc/usr_intf/pncconf/pncconf.glade:48830 +#: src/emc/usr_intf/pncconf/pncconf.glade:48882 +#: src/emc/usr_intf/pncconf/pncconf.glade:48934 +#: src/emc/usr_intf/pncconf/pncconf.glade:50274 +#: src/emc/usr_intf/pncconf/pncconf.glade:50326 +#: src/emc/usr_intf/pncconf/pncconf.glade:50378 +#: src/emc/usr_intf/pncconf/pncconf.glade:50430 +#: src/emc/usr_intf/pncconf/pncconf.glade:51257 +#: src/emc/usr_intf/pncconf/pncconf.glade:51309 +#: src/emc/usr_intf/pncconf/pncconf.glade:51361 +#: src/emc/usr_intf/pncconf/pncconf.glade:51413 +#: src/emc/usr_intf/pncconf/pncconf.glade:51465 +#: src/emc/usr_intf/pncconf/pncconf.glade:51517 +#: src/emc/usr_intf/pncconf/pncconf.glade:51569 +#: src/emc/usr_intf/pncconf/pncconf.glade:51621 +#: src/emc/usr_intf/pncconf/pncconf.glade:51673 +#: src/emc/usr_intf/pncconf/pncconf.glade:51725 +#: src/emc/usr_intf/pncconf/pncconf.glade:51777 +#: src/emc/usr_intf/pncconf/pncconf.glade:51829 +#: src/emc/usr_intf/pncconf/pncconf.glade:52634 +#: src/emc/usr_intf/pncconf/pncconf.glade:52686 +#: src/emc/usr_intf/pncconf/pncconf.glade:52738 +#: src/emc/usr_intf/pncconf/pncconf.glade:52790 +#: src/emc/usr_intf/pncconf/pncconf.glade:52842 +#: src/emc/usr_intf/pncconf/pncconf.glade:52894 +#: src/emc/usr_intf/pncconf/pncconf.glade:52946 +#: src/emc/usr_intf/pncconf/pncconf.glade:52998 +#: src/emc/usr_intf/pncconf/pncconf.glade:53050 +#: src/emc/usr_intf/pncconf/pncconf.glade:53102 +#: src/emc/usr_intf/pncconf/pncconf.glade:53154 +#: src/emc/usr_intf/pncconf/pncconf.glade:53206 +#: src/emc/usr_intf/pncconf/pncconf.glade:54302 +#: src/emc/usr_intf/pncconf/pncconf.glade:54354 +#: src/emc/usr_intf/pncconf/pncconf.glade:54406 +#: src/emc/usr_intf/pncconf/pncconf.glade:54458 +#: src/emc/usr_intf/pncconf/pncconf.glade:54510 +#: src/emc/usr_intf/pncconf/pncconf.glade:54562 +#: src/emc/usr_intf/pncconf/pncconf.glade:54614 +#: src/emc/usr_intf/pncconf/pncconf.glade:54666 +#: src/emc/usr_intf/pncconf/pncconf.glade:54718 +#: src/emc/usr_intf/pncconf/pncconf.glade:54770 +#: src/emc/usr_intf/pncconf/pncconf.glade:54822 +#: src/emc/usr_intf/pncconf/pncconf.glade:54874 +#: src/emc/usr_intf/pncconf/pncconf.glade:55701 +#: src/emc/usr_intf/pncconf/pncconf.glade:55753 +#: src/emc/usr_intf/pncconf/pncconf.glade:55805 +#: src/emc/usr_intf/pncconf/pncconf.glade:55857 +#: src/emc/usr_intf/pncconf/pncconf.glade:57197 +#: src/emc/usr_intf/pncconf/pncconf.glade:57249 +#: src/emc/usr_intf/pncconf/pncconf.glade:57301 +#: src/emc/usr_intf/pncconf/pncconf.glade:57353 +#: src/emc/usr_intf/pncconf/pncconf.glade:58180 +#: src/emc/usr_intf/pncconf/pncconf.glade:58232 +#: src/emc/usr_intf/pncconf/pncconf.glade:58284 +#: src/emc/usr_intf/pncconf/pncconf.glade:58336 +#: src/emc/usr_intf/pncconf/pncconf.glade:58388 +#: src/emc/usr_intf/pncconf/pncconf.glade:58440 +#: src/emc/usr_intf/pncconf/pncconf.glade:58492 +#: src/emc/usr_intf/pncconf/pncconf.glade:58544 +#: src/emc/usr_intf/pncconf/pncconf.glade:58596 +#: src/emc/usr_intf/pncconf/pncconf.glade:58648 +#: src/emc/usr_intf/pncconf/pncconf.glade:58700 +#: src/emc/usr_intf/pncconf/pncconf.glade:58752 +#: src/emc/usr_intf/pncconf/pncconf.glade:59557 +#: src/emc/usr_intf/pncconf/pncconf.glade:59609 +#: src/emc/usr_intf/pncconf/pncconf.glade:59661 +#: src/emc/usr_intf/pncconf/pncconf.glade:59713 +#: src/emc/usr_intf/pncconf/pncconf.glade:59765 +#: src/emc/usr_intf/pncconf/pncconf.glade:59817 +#: src/emc/usr_intf/pncconf/pncconf.glade:59869 +#: src/emc/usr_intf/pncconf/pncconf.glade:59921 +#: src/emc/usr_intf/pncconf/pncconf.glade:59973 +#: src/emc/usr_intf/pncconf/pncconf.glade:60025 +#: src/emc/usr_intf/pncconf/pncconf.glade:60077 +#: src/emc/usr_intf/pncconf/pncconf.glade:60129 msgid "" "ESTOP IN\n" "Spindle PPR\n" @@ -11007,1257 +13076,1767 @@ msgid "" "Unused" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9515 -#: src/emc/usr_intf/pncconf/pncconf.glade:12871 -#: src/emc/usr_intf/pncconf/pncconf.glade:18128 -#: src/emc/usr_intf/pncconf/pncconf.glade:20233 -#: src/emc/usr_intf/pncconf/pncconf.glade:21486 -#: src/emc/usr_intf/pncconf/pncconf.glade:23282 -#: src/emc/usr_intf/pncconf/pncconf.glade:25078 -msgid "31:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8825 +#: src/emc/usr_intf/pncconf/pncconf.glade:9081 +#: src/emc/usr_intf/pncconf/pncconf.glade:13563 +#: src/emc/usr_intf/pncconf/pncconf.glade:13818 +#: src/emc/usr_intf/pncconf/pncconf.glade:16164 +#: src/emc/usr_intf/pncconf/pncconf.glade:16410 +#: src/emc/usr_intf/pncconf/pncconf.glade:18769 +#: src/emc/usr_intf/pncconf/pncconf.glade:19024 +#: src/emc/usr_intf/pncconf/pncconf.glade:20571 +#: src/emc/usr_intf/pncconf/pncconf.glade:20820 +#: src/emc/usr_intf/pncconf/pncconf.glade:20949 +#: src/emc/usr_intf/pncconf/pncconf.glade:21199 +#: src/emc/usr_intf/pncconf/pncconf.glade:22745 +#: src/emc/usr_intf/pncconf/pncconf.glade:22995 +#: src/emc/usr_intf/pncconf/pncconf.glade:24541 +#: src/emc/usr_intf/pncconf/pncconf.glade:24791 +#: src/emc/usr_intf/pncconf/pncconf.glade:26353 +#: src/emc/usr_intf/pncconf/pncconf.glade:26600 +#: src/emc/usr_intf/pncconf/pncconf.glade:31115 +#: src/emc/usr_intf/pncconf/pncconf.glade:31361 +#: src/emc/usr_intf/pncconf/pncconf.glade:31621 +#: src/emc/usr_intf/pncconf/pncconf.glade:35460 +#: src/emc/usr_intf/pncconf/pncconf.glade:35706 +#: src/emc/usr_intf/pncconf/pncconf.glade:35837 +#: src/emc/usr_intf/pncconf/pncconf.glade:36084 +#: src/emc/usr_intf/pncconf/pncconf.glade:40037 +#: src/emc/usr_intf/pncconf/pncconf.glade:40197 +#: src/emc/usr_intf/pncconf/pncconf.glade:40444 +#: src/emc/usr_intf/pncconf/pncconf.glade:44959 +#: src/emc/usr_intf/pncconf/pncconf.glade:45205 +#: src/emc/usr_intf/pncconf/pncconf.glade:45454 +#: src/emc/usr_intf/pncconf/pncconf.glade:47120 +#: src/emc/usr_intf/pncconf/pncconf.glade:47367 +#: src/emc/usr_intf/pncconf/pncconf.glade:51882 +#: src/emc/usr_intf/pncconf/pncconf.glade:52128 +#: src/emc/usr_intf/pncconf/pncconf.glade:52377 +#: src/emc/usr_intf/pncconf/pncconf.glade:54043 +#: src/emc/usr_intf/pncconf/pncconf.glade:54290 +#: src/emc/usr_intf/pncconf/pncconf.glade:58805 +#: src/emc/usr_intf/pncconf/pncconf.glade:59051 +#: src/emc/usr_intf/pncconf/pncconf.glade:59300 +#, fuzzy +msgid "Pin Type" +msgstr "动作类型" + +#: src/emc/usr_intf/pncconf/pncconf.glade:8838 +#: src/emc/usr_intf/pncconf/pncconf.glade:8900 +#: src/emc/usr_intf/pncconf/pncconf.glade:13743 +#: src/emc/usr_intf/pncconf/pncconf.glade:13806 +#: src/emc/usr_intf/pncconf/pncconf.glade:16335 +#: src/emc/usr_intf/pncconf/pncconf.glade:16398 +#: src/emc/usr_intf/pncconf/pncconf.glade:18949 +#: src/emc/usr_intf/pncconf/pncconf.glade:19012 +#: src/emc/usr_intf/pncconf/pncconf.glade:20751 +#: src/emc/usr_intf/pncconf/pncconf.glade:20808 +#: src/emc/usr_intf/pncconf/pncconf.glade:20962 +#: src/emc/usr_intf/pncconf/pncconf.glade:21018 +#: src/emc/usr_intf/pncconf/pncconf.glade:22758 +#: src/emc/usr_intf/pncconf/pncconf.glade:22814 +#: src/emc/usr_intf/pncconf/pncconf.glade:24554 +#: src/emc/usr_intf/pncconf/pncconf.glade:24610 +#: src/emc/usr_intf/pncconf/pncconf.glade:26366 +#: src/emc/usr_intf/pncconf/pncconf.glade:26428 +#: src/emc/usr_intf/pncconf/pncconf.glade:31286 +#: src/emc/usr_intf/pncconf/pncconf.glade:31349 +#: src/emc/usr_intf/pncconf/pncconf.glade:31634 +#: src/emc/usr_intf/pncconf/pncconf.glade:35631 +#: src/emc/usr_intf/pncconf/pncconf.glade:35694 +#: src/emc/usr_intf/pncconf/pncconf.glade:35850 +#: src/emc/usr_intf/pncconf/pncconf.glade:35912 +#: src/emc/usr_intf/pncconf/pncconf.glade:40025 +#: src/emc/usr_intf/pncconf/pncconf.glade:40210 +#: src/emc/usr_intf/pncconf/pncconf.glade:40272 +#: src/emc/usr_intf/pncconf/pncconf.glade:45130 +#: src/emc/usr_intf/pncconf/pncconf.glade:45193 +#: src/emc/usr_intf/pncconf/pncconf.glade:45467 +#: src/emc/usr_intf/pncconf/pncconf.glade:47133 +#: src/emc/usr_intf/pncconf/pncconf.glade:47195 +#: src/emc/usr_intf/pncconf/pncconf.glade:52053 +#: src/emc/usr_intf/pncconf/pncconf.glade:52116 +#: src/emc/usr_intf/pncconf/pncconf.glade:52390 +#: src/emc/usr_intf/pncconf/pncconf.glade:54056 +#: src/emc/usr_intf/pncconf/pncconf.glade:54118 +#: src/emc/usr_intf/pncconf/pncconf.glade:58976 +#: src/emc/usr_intf/pncconf/pncconf.glade:59039 +#: src/emc/usr_intf/pncconf/pncconf.glade:59313 +#, fuzzy +msgid "Inv" +msgstr "反转" + +#: src/emc/usr_intf/pncconf/pncconf.glade:8867 +#: src/emc/usr_intf/pncconf/pncconf.glade:10731 +#: src/emc/usr_intf/pncconf/pncconf.glade:10751 +#: src/emc/usr_intf/pncconf/pncconf.glade:10771 +#: src/emc/usr_intf/pncconf/pncconf.glade:10791 +#: src/emc/usr_intf/pncconf/pncconf.glade:10811 +#: src/emc/usr_intf/pncconf/pncconf.glade:10831 +#: src/emc/usr_intf/pncconf/pncconf.glade:10851 +#: src/emc/usr_intf/pncconf/pncconf.glade:10871 +#: src/emc/usr_intf/pncconf/pncconf.glade:10891 +#: src/emc/usr_intf/pncconf/pncconf.glade:10911 +#: src/emc/usr_intf/pncconf/pncconf.glade:10931 +#: src/emc/usr_intf/pncconf/pncconf.glade:10951 +#: src/emc/usr_intf/pncconf/pncconf.glade:10971 +#: src/emc/usr_intf/pncconf/pncconf.glade:10991 +#: src/emc/usr_intf/pncconf/pncconf.glade:11011 +#: src/emc/usr_intf/pncconf/pncconf.glade:11031 +#: src/emc/usr_intf/pncconf/pncconf.glade:11051 +#: src/emc/usr_intf/pncconf/pncconf.glade:11071 +#: src/emc/usr_intf/pncconf/pncconf.glade:11091 +#: src/emc/usr_intf/pncconf/pncconf.glade:11111 +#: src/emc/usr_intf/pncconf/pncconf.glade:11131 +#: src/emc/usr_intf/pncconf/pncconf.glade:11151 +#: src/emc/usr_intf/pncconf/pncconf.glade:11171 +#: src/emc/usr_intf/pncconf/pncconf.glade:11465 +#: src/emc/usr_intf/pncconf/pncconf.glade:11485 +#: src/emc/usr_intf/pncconf/pncconf.glade:11505 +#: src/emc/usr_intf/pncconf/pncconf.glade:11525 +#: src/emc/usr_intf/pncconf/pncconf.glade:11545 +#: src/emc/usr_intf/pncconf/pncconf.glade:11565 +#: src/emc/usr_intf/pncconf/pncconf.glade:11585 +#: src/emc/usr_intf/pncconf/pncconf.glade:11605 +#: src/emc/usr_intf/pncconf/pncconf.glade:11625 +#: src/emc/usr_intf/pncconf/pncconf.glade:11645 +#: src/emc/usr_intf/pncconf/pncconf.glade:11665 +#: src/emc/usr_intf/pncconf/pncconf.glade:11685 +#: src/emc/usr_intf/pncconf/pncconf.glade:11705 +#: src/emc/usr_intf/pncconf/pncconf.glade:11725 +#: src/emc/usr_intf/pncconf/pncconf.glade:11745 +#: src/emc/usr_intf/pncconf/pncconf.glade:11765 +#: src/emc/usr_intf/pncconf/pncconf.glade:11785 +#: src/emc/usr_intf/pncconf/pncconf.glade:11805 +#: src/emc/usr_intf/pncconf/pncconf.glade:11825 +#: src/emc/usr_intf/pncconf/pncconf.glade:11845 +#: src/emc/usr_intf/pncconf/pncconf.glade:11865 +#: src/emc/usr_intf/pncconf/pncconf.glade:11885 +#: src/emc/usr_intf/pncconf/pncconf.glade:11905 +#: src/emc/usr_intf/pncconf/pncconf.glade:13768 +#: src/emc/usr_intf/pncconf/pncconf.glade:13974 +#: src/emc/usr_intf/pncconf/pncconf.glade:13994 +#: src/emc/usr_intf/pncconf/pncconf.glade:14014 +#: src/emc/usr_intf/pncconf/pncconf.glade:14034 +#: src/emc/usr_intf/pncconf/pncconf.glade:14054 +#: src/emc/usr_intf/pncconf/pncconf.glade:14074 +#: src/emc/usr_intf/pncconf/pncconf.glade:14094 +#: src/emc/usr_intf/pncconf/pncconf.glade:14114 +#: src/emc/usr_intf/pncconf/pncconf.glade:14134 +#: src/emc/usr_intf/pncconf/pncconf.glade:14154 +#: src/emc/usr_intf/pncconf/pncconf.glade:14174 +#: src/emc/usr_intf/pncconf/pncconf.glade:14194 +#: src/emc/usr_intf/pncconf/pncconf.glade:14214 +#: src/emc/usr_intf/pncconf/pncconf.glade:14234 +#: src/emc/usr_intf/pncconf/pncconf.glade:14254 +#: src/emc/usr_intf/pncconf/pncconf.glade:14274 +#: src/emc/usr_intf/pncconf/pncconf.glade:14294 +#: src/emc/usr_intf/pncconf/pncconf.glade:14314 +#: src/emc/usr_intf/pncconf/pncconf.glade:14334 +#: src/emc/usr_intf/pncconf/pncconf.glade:14354 +#: src/emc/usr_intf/pncconf/pncconf.glade:14374 +#: src/emc/usr_intf/pncconf/pncconf.glade:14394 +#: src/emc/usr_intf/pncconf/pncconf.glade:14414 +#: src/emc/usr_intf/pncconf/pncconf.glade:16360 +#: src/emc/usr_intf/pncconf/pncconf.glade:16670 +#: src/emc/usr_intf/pncconf/pncconf.glade:16690 +#: src/emc/usr_intf/pncconf/pncconf.glade:16710 +#: src/emc/usr_intf/pncconf/pncconf.glade:16730 +#: src/emc/usr_intf/pncconf/pncconf.glade:16750 +#: src/emc/usr_intf/pncconf/pncconf.glade:16770 +#: src/emc/usr_intf/pncconf/pncconf.glade:16790 +#: src/emc/usr_intf/pncconf/pncconf.glade:16810 +#: src/emc/usr_intf/pncconf/pncconf.glade:16830 +#: src/emc/usr_intf/pncconf/pncconf.glade:16850 +#: src/emc/usr_intf/pncconf/pncconf.glade:16870 +#: src/emc/usr_intf/pncconf/pncconf.glade:16890 +#: src/emc/usr_intf/pncconf/pncconf.glade:16910 +#: src/emc/usr_intf/pncconf/pncconf.glade:16930 +#: src/emc/usr_intf/pncconf/pncconf.glade:16950 +#: src/emc/usr_intf/pncconf/pncconf.glade:16970 +#: src/emc/usr_intf/pncconf/pncconf.glade:16990 +#: src/emc/usr_intf/pncconf/pncconf.glade:17010 +#: src/emc/usr_intf/pncconf/pncconf.glade:17030 +#: src/emc/usr_intf/pncconf/pncconf.glade:17050 +#: src/emc/usr_intf/pncconf/pncconf.glade:17070 +#: src/emc/usr_intf/pncconf/pncconf.glade:17090 +#: src/emc/usr_intf/pncconf/pncconf.glade:17110 +#: src/emc/usr_intf/pncconf/pncconf.glade:18974 +#: src/emc/usr_intf/pncconf/pncconf.glade:26395 +#: src/emc/usr_intf/pncconf/pncconf.glade:28311 +#: src/emc/usr_intf/pncconf/pncconf.glade:28331 +#: src/emc/usr_intf/pncconf/pncconf.glade:28351 +#: src/emc/usr_intf/pncconf/pncconf.glade:28371 +#: src/emc/usr_intf/pncconf/pncconf.glade:28391 +#: src/emc/usr_intf/pncconf/pncconf.glade:28411 +#: src/emc/usr_intf/pncconf/pncconf.glade:28431 +#: src/emc/usr_intf/pncconf/pncconf.glade:28451 +#: src/emc/usr_intf/pncconf/pncconf.glade:28471 +#: src/emc/usr_intf/pncconf/pncconf.glade:28491 +#: src/emc/usr_intf/pncconf/pncconf.glade:28511 +#: src/emc/usr_intf/pncconf/pncconf.glade:28531 +#: src/emc/usr_intf/pncconf/pncconf.glade:28551 +#: src/emc/usr_intf/pncconf/pncconf.glade:28571 +#: src/emc/usr_intf/pncconf/pncconf.glade:28591 +#: src/emc/usr_intf/pncconf/pncconf.glade:28611 +#: src/emc/usr_intf/pncconf/pncconf.glade:28631 +#: src/emc/usr_intf/pncconf/pncconf.glade:28651 +#: src/emc/usr_intf/pncconf/pncconf.glade:28671 +#: src/emc/usr_intf/pncconf/pncconf.glade:28691 +#: src/emc/usr_intf/pncconf/pncconf.glade:28711 +#: src/emc/usr_intf/pncconf/pncconf.glade:28731 +#: src/emc/usr_intf/pncconf/pncconf.glade:28751 +#: src/emc/usr_intf/pncconf/pncconf.glade:28942 +#: src/emc/usr_intf/pncconf/pncconf.glade:28962 +#: src/emc/usr_intf/pncconf/pncconf.glade:28982 +#: src/emc/usr_intf/pncconf/pncconf.glade:29002 +#: src/emc/usr_intf/pncconf/pncconf.glade:29022 +#: src/emc/usr_intf/pncconf/pncconf.glade:29042 +#: src/emc/usr_intf/pncconf/pncconf.glade:29062 +#: src/emc/usr_intf/pncconf/pncconf.glade:29082 +#: src/emc/usr_intf/pncconf/pncconf.glade:29102 +#: src/emc/usr_intf/pncconf/pncconf.glade:29122 +#: src/emc/usr_intf/pncconf/pncconf.glade:29142 +#: src/emc/usr_intf/pncconf/pncconf.glade:29162 +#: src/emc/usr_intf/pncconf/pncconf.glade:29182 +#: src/emc/usr_intf/pncconf/pncconf.glade:29202 +#: src/emc/usr_intf/pncconf/pncconf.glade:29222 +#: src/emc/usr_intf/pncconf/pncconf.glade:29242 +#: src/emc/usr_intf/pncconf/pncconf.glade:29262 +#: src/emc/usr_intf/pncconf/pncconf.glade:29282 +#: src/emc/usr_intf/pncconf/pncconf.glade:29302 +#: src/emc/usr_intf/pncconf/pncconf.glade:29322 +#: src/emc/usr_intf/pncconf/pncconf.glade:29342 +#: src/emc/usr_intf/pncconf/pncconf.glade:29362 +#: src/emc/usr_intf/pncconf/pncconf.glade:29382 +#: src/emc/usr_intf/pncconf/pncconf.glade:31311 +#: src/emc/usr_intf/pncconf/pncconf.glade:31663 +#: src/emc/usr_intf/pncconf/pncconf.glade:32881 +#: src/emc/usr_intf/pncconf/pncconf.glade:32901 +#: src/emc/usr_intf/pncconf/pncconf.glade:32921 +#: src/emc/usr_intf/pncconf/pncconf.glade:32941 +#: src/emc/usr_intf/pncconf/pncconf.glade:32961 +#: src/emc/usr_intf/pncconf/pncconf.glade:32981 +#: src/emc/usr_intf/pncconf/pncconf.glade:33001 +#: src/emc/usr_intf/pncconf/pncconf.glade:33021 +#: src/emc/usr_intf/pncconf/pncconf.glade:33041 +#: src/emc/usr_intf/pncconf/pncconf.glade:33061 +#: src/emc/usr_intf/pncconf/pncconf.glade:33081 +#: src/emc/usr_intf/pncconf/pncconf.glade:33300 +#: src/emc/usr_intf/pncconf/pncconf.glade:33320 +#: src/emc/usr_intf/pncconf/pncconf.glade:33340 +#: src/emc/usr_intf/pncconf/pncconf.glade:33360 +#: src/emc/usr_intf/pncconf/pncconf.glade:33380 +#: src/emc/usr_intf/pncconf/pncconf.glade:33400 +#: src/emc/usr_intf/pncconf/pncconf.glade:33420 +#: src/emc/usr_intf/pncconf/pncconf.glade:33440 +#: src/emc/usr_intf/pncconf/pncconf.glade:33460 +#: src/emc/usr_intf/pncconf/pncconf.glade:33480 +#: src/emc/usr_intf/pncconf/pncconf.glade:33500 +#: src/emc/usr_intf/pncconf/pncconf.glade:33520 +#: src/emc/usr_intf/pncconf/pncconf.glade:33540 +#: src/emc/usr_intf/pncconf/pncconf.glade:33560 +#: src/emc/usr_intf/pncconf/pncconf.glade:33580 +#: src/emc/usr_intf/pncconf/pncconf.glade:33600 +#: src/emc/usr_intf/pncconf/pncconf.glade:33620 +#: src/emc/usr_intf/pncconf/pncconf.glade:33640 +#: src/emc/usr_intf/pncconf/pncconf.glade:33660 +#: src/emc/usr_intf/pncconf/pncconf.glade:33680 +#: src/emc/usr_intf/pncconf/pncconf.glade:33700 +#: src/emc/usr_intf/pncconf/pncconf.glade:33720 +#: src/emc/usr_intf/pncconf/pncconf.glade:33740 +#: src/emc/usr_intf/pncconf/pncconf.glade:35656 +#: src/emc/usr_intf/pncconf/pncconf.glade:35879 +#: src/emc/usr_intf/pncconf/pncconf.glade:37808 +#: src/emc/usr_intf/pncconf/pncconf.glade:37828 +#: src/emc/usr_intf/pncconf/pncconf.glade:37848 +#: src/emc/usr_intf/pncconf/pncconf.glade:37868 +#: src/emc/usr_intf/pncconf/pncconf.glade:37888 +#: src/emc/usr_intf/pncconf/pncconf.glade:37908 +#: src/emc/usr_intf/pncconf/pncconf.glade:37928 +#: src/emc/usr_intf/pncconf/pncconf.glade:37948 +#: src/emc/usr_intf/pncconf/pncconf.glade:37968 +#: src/emc/usr_intf/pncconf/pncconf.glade:37988 +#: src/emc/usr_intf/pncconf/pncconf.glade:38008 +#: src/emc/usr_intf/pncconf/pncconf.glade:38028 +#: src/emc/usr_intf/pncconf/pncconf.glade:38048 +#: src/emc/usr_intf/pncconf/pncconf.glade:38068 +#: src/emc/usr_intf/pncconf/pncconf.glade:38088 +#: src/emc/usr_intf/pncconf/pncconf.glade:38108 +#: src/emc/usr_intf/pncconf/pncconf.glade:38128 +#: src/emc/usr_intf/pncconf/pncconf.glade:38148 +#: src/emc/usr_intf/pncconf/pncconf.glade:38168 +#: src/emc/usr_intf/pncconf/pncconf.glade:38188 +#: src/emc/usr_intf/pncconf/pncconf.glade:38208 +#: src/emc/usr_intf/pncconf/pncconf.glade:38228 +#: src/emc/usr_intf/pncconf/pncconf.glade:38248 +#: src/emc/usr_intf/pncconf/pncconf.glade:38557 +#: src/emc/usr_intf/pncconf/pncconf.glade:38577 +#: src/emc/usr_intf/pncconf/pncconf.glade:38597 +#: src/emc/usr_intf/pncconf/pncconf.glade:38617 +#: src/emc/usr_intf/pncconf/pncconf.glade:38637 +#: src/emc/usr_intf/pncconf/pncconf.glade:38657 +#: src/emc/usr_intf/pncconf/pncconf.glade:38677 +#: src/emc/usr_intf/pncconf/pncconf.glade:38697 +#: src/emc/usr_intf/pncconf/pncconf.glade:38717 +#: src/emc/usr_intf/pncconf/pncconf.glade:38737 +#: src/emc/usr_intf/pncconf/pncconf.glade:38757 +#: src/emc/usr_intf/pncconf/pncconf.glade:39987 +#: src/emc/usr_intf/pncconf/pncconf.glade:40239 +#: src/emc/usr_intf/pncconf/pncconf.glade:42155 +#: src/emc/usr_intf/pncconf/pncconf.glade:42175 +#: src/emc/usr_intf/pncconf/pncconf.glade:42195 +#: src/emc/usr_intf/pncconf/pncconf.glade:42215 +#: src/emc/usr_intf/pncconf/pncconf.glade:42235 +#: src/emc/usr_intf/pncconf/pncconf.glade:42255 +#: src/emc/usr_intf/pncconf/pncconf.glade:42275 +#: src/emc/usr_intf/pncconf/pncconf.glade:42295 +#: src/emc/usr_intf/pncconf/pncconf.glade:42315 +#: src/emc/usr_intf/pncconf/pncconf.glade:42335 +#: src/emc/usr_intf/pncconf/pncconf.glade:42355 +#: src/emc/usr_intf/pncconf/pncconf.glade:42375 +#: src/emc/usr_intf/pncconf/pncconf.glade:42395 +#: src/emc/usr_intf/pncconf/pncconf.glade:42415 +#: src/emc/usr_intf/pncconf/pncconf.glade:42435 +#: src/emc/usr_intf/pncconf/pncconf.glade:42455 +#: src/emc/usr_intf/pncconf/pncconf.glade:42475 +#: src/emc/usr_intf/pncconf/pncconf.glade:42495 +#: src/emc/usr_intf/pncconf/pncconf.glade:42515 +#: src/emc/usr_intf/pncconf/pncconf.glade:42535 +#: src/emc/usr_intf/pncconf/pncconf.glade:42555 +#: src/emc/usr_intf/pncconf/pncconf.glade:42575 +#: src/emc/usr_intf/pncconf/pncconf.glade:42595 +#: src/emc/usr_intf/pncconf/pncconf.glade:42786 +#: src/emc/usr_intf/pncconf/pncconf.glade:42806 +#: src/emc/usr_intf/pncconf/pncconf.glade:42826 +#: src/emc/usr_intf/pncconf/pncconf.glade:42846 +#: src/emc/usr_intf/pncconf/pncconf.glade:42866 +#: src/emc/usr_intf/pncconf/pncconf.glade:42886 +#: src/emc/usr_intf/pncconf/pncconf.glade:42906 +#: src/emc/usr_intf/pncconf/pncconf.glade:42926 +#: src/emc/usr_intf/pncconf/pncconf.glade:42946 +#: src/emc/usr_intf/pncconf/pncconf.glade:42966 +#: src/emc/usr_intf/pncconf/pncconf.glade:42986 +#: src/emc/usr_intf/pncconf/pncconf.glade:43006 +#: src/emc/usr_intf/pncconf/pncconf.glade:43026 +#: src/emc/usr_intf/pncconf/pncconf.glade:43046 +#: src/emc/usr_intf/pncconf/pncconf.glade:43066 +#: src/emc/usr_intf/pncconf/pncconf.glade:43086 +#: src/emc/usr_intf/pncconf/pncconf.glade:43106 +#: src/emc/usr_intf/pncconf/pncconf.glade:43126 +#: src/emc/usr_intf/pncconf/pncconf.glade:43146 +#: src/emc/usr_intf/pncconf/pncconf.glade:43166 +#: src/emc/usr_intf/pncconf/pncconf.glade:43186 +#: src/emc/usr_intf/pncconf/pncconf.glade:43206 +#: src/emc/usr_intf/pncconf/pncconf.glade:43226 +#: src/emc/usr_intf/pncconf/pncconf.glade:45155 +#: src/emc/usr_intf/pncconf/pncconf.glade:45496 +#: src/emc/usr_intf/pncconf/pncconf.glade:46726 +#: src/emc/usr_intf/pncconf/pncconf.glade:46746 +#: src/emc/usr_intf/pncconf/pncconf.glade:46766 +#: src/emc/usr_intf/pncconf/pncconf.glade:46786 +#: src/emc/usr_intf/pncconf/pncconf.glade:46806 +#: src/emc/usr_intf/pncconf/pncconf.glade:46826 +#: src/emc/usr_intf/pncconf/pncconf.glade:46846 +#: src/emc/usr_intf/pncconf/pncconf.glade:46866 +#: src/emc/usr_intf/pncconf/pncconf.glade:46886 +#: src/emc/usr_intf/pncconf/pncconf.glade:46906 +#: src/emc/usr_intf/pncconf/pncconf.glade:46926 +#: src/emc/usr_intf/pncconf/pncconf.glade:47162 +#: src/emc/usr_intf/pncconf/pncconf.glade:49078 +#: src/emc/usr_intf/pncconf/pncconf.glade:49098 +#: src/emc/usr_intf/pncconf/pncconf.glade:49118 +#: src/emc/usr_intf/pncconf/pncconf.glade:49138 +#: src/emc/usr_intf/pncconf/pncconf.glade:49158 +#: src/emc/usr_intf/pncconf/pncconf.glade:49178 +#: src/emc/usr_intf/pncconf/pncconf.glade:49198 +#: src/emc/usr_intf/pncconf/pncconf.glade:49218 +#: src/emc/usr_intf/pncconf/pncconf.glade:49238 +#: src/emc/usr_intf/pncconf/pncconf.glade:49258 +#: src/emc/usr_intf/pncconf/pncconf.glade:49278 +#: src/emc/usr_intf/pncconf/pncconf.glade:49298 +#: src/emc/usr_intf/pncconf/pncconf.glade:49318 +#: src/emc/usr_intf/pncconf/pncconf.glade:49338 +#: src/emc/usr_intf/pncconf/pncconf.glade:49358 +#: src/emc/usr_intf/pncconf/pncconf.glade:49378 +#: src/emc/usr_intf/pncconf/pncconf.glade:49398 +#: src/emc/usr_intf/pncconf/pncconf.glade:49418 +#: src/emc/usr_intf/pncconf/pncconf.glade:49438 +#: src/emc/usr_intf/pncconf/pncconf.glade:49458 +#: src/emc/usr_intf/pncconf/pncconf.glade:49478 +#: src/emc/usr_intf/pncconf/pncconf.glade:49498 +#: src/emc/usr_intf/pncconf/pncconf.glade:49518 +#: src/emc/usr_intf/pncconf/pncconf.glade:49709 +#: src/emc/usr_intf/pncconf/pncconf.glade:49729 +#: src/emc/usr_intf/pncconf/pncconf.glade:49749 +#: src/emc/usr_intf/pncconf/pncconf.glade:49769 +#: src/emc/usr_intf/pncconf/pncconf.glade:49789 +#: src/emc/usr_intf/pncconf/pncconf.glade:49809 +#: src/emc/usr_intf/pncconf/pncconf.glade:49829 +#: src/emc/usr_intf/pncconf/pncconf.glade:49849 +#: src/emc/usr_intf/pncconf/pncconf.glade:49869 +#: src/emc/usr_intf/pncconf/pncconf.glade:49889 +#: src/emc/usr_intf/pncconf/pncconf.glade:49909 +#: src/emc/usr_intf/pncconf/pncconf.glade:49929 +#: src/emc/usr_intf/pncconf/pncconf.glade:49949 +#: src/emc/usr_intf/pncconf/pncconf.glade:49969 +#: src/emc/usr_intf/pncconf/pncconf.glade:49989 +#: src/emc/usr_intf/pncconf/pncconf.glade:50009 +#: src/emc/usr_intf/pncconf/pncconf.glade:50029 +#: src/emc/usr_intf/pncconf/pncconf.glade:50049 +#: src/emc/usr_intf/pncconf/pncconf.glade:50069 +#: src/emc/usr_intf/pncconf/pncconf.glade:50089 +#: src/emc/usr_intf/pncconf/pncconf.glade:50109 +#: src/emc/usr_intf/pncconf/pncconf.glade:50129 +#: src/emc/usr_intf/pncconf/pncconf.glade:50149 +#: src/emc/usr_intf/pncconf/pncconf.glade:52078 +#: src/emc/usr_intf/pncconf/pncconf.glade:52419 +#: src/emc/usr_intf/pncconf/pncconf.glade:53649 +#: src/emc/usr_intf/pncconf/pncconf.glade:53669 +#: src/emc/usr_intf/pncconf/pncconf.glade:53689 +#: src/emc/usr_intf/pncconf/pncconf.glade:53709 +#: src/emc/usr_intf/pncconf/pncconf.glade:53729 +#: src/emc/usr_intf/pncconf/pncconf.glade:53749 +#: src/emc/usr_intf/pncconf/pncconf.glade:53769 +#: src/emc/usr_intf/pncconf/pncconf.glade:53789 +#: src/emc/usr_intf/pncconf/pncconf.glade:53809 +#: src/emc/usr_intf/pncconf/pncconf.glade:53829 +#: src/emc/usr_intf/pncconf/pncconf.glade:53849 +#: src/emc/usr_intf/pncconf/pncconf.glade:54085 +#: src/emc/usr_intf/pncconf/pncconf.glade:56001 +#: src/emc/usr_intf/pncconf/pncconf.glade:56021 +#: src/emc/usr_intf/pncconf/pncconf.glade:56041 +#: src/emc/usr_intf/pncconf/pncconf.glade:56061 +#: src/emc/usr_intf/pncconf/pncconf.glade:56081 +#: src/emc/usr_intf/pncconf/pncconf.glade:56101 +#: src/emc/usr_intf/pncconf/pncconf.glade:56121 +#: src/emc/usr_intf/pncconf/pncconf.glade:56141 +#: src/emc/usr_intf/pncconf/pncconf.glade:56161 +#: src/emc/usr_intf/pncconf/pncconf.glade:56181 +#: src/emc/usr_intf/pncconf/pncconf.glade:56201 +#: src/emc/usr_intf/pncconf/pncconf.glade:56221 +#: src/emc/usr_intf/pncconf/pncconf.glade:56241 +#: src/emc/usr_intf/pncconf/pncconf.glade:56261 +#: src/emc/usr_intf/pncconf/pncconf.glade:56281 +#: src/emc/usr_intf/pncconf/pncconf.glade:56301 +#: src/emc/usr_intf/pncconf/pncconf.glade:56321 +#: src/emc/usr_intf/pncconf/pncconf.glade:56341 +#: src/emc/usr_intf/pncconf/pncconf.glade:56361 +#: src/emc/usr_intf/pncconf/pncconf.glade:56381 +#: src/emc/usr_intf/pncconf/pncconf.glade:56401 +#: src/emc/usr_intf/pncconf/pncconf.glade:56421 +#: src/emc/usr_intf/pncconf/pncconf.glade:56441 +#: src/emc/usr_intf/pncconf/pncconf.glade:56632 +#: src/emc/usr_intf/pncconf/pncconf.glade:56652 +#: src/emc/usr_intf/pncconf/pncconf.glade:56672 +#: src/emc/usr_intf/pncconf/pncconf.glade:56692 +#: src/emc/usr_intf/pncconf/pncconf.glade:56712 +#: src/emc/usr_intf/pncconf/pncconf.glade:56732 +#: src/emc/usr_intf/pncconf/pncconf.glade:56752 +#: src/emc/usr_intf/pncconf/pncconf.glade:56772 +#: src/emc/usr_intf/pncconf/pncconf.glade:56792 +#: src/emc/usr_intf/pncconf/pncconf.glade:56812 +#: src/emc/usr_intf/pncconf/pncconf.glade:56832 +#: src/emc/usr_intf/pncconf/pncconf.glade:56852 +#: src/emc/usr_intf/pncconf/pncconf.glade:56872 +#: src/emc/usr_intf/pncconf/pncconf.glade:56892 +#: src/emc/usr_intf/pncconf/pncconf.glade:56912 +#: src/emc/usr_intf/pncconf/pncconf.glade:56932 +#: src/emc/usr_intf/pncconf/pncconf.glade:56952 +#: src/emc/usr_intf/pncconf/pncconf.glade:56972 +#: src/emc/usr_intf/pncconf/pncconf.glade:56992 +#: src/emc/usr_intf/pncconf/pncconf.glade:57012 +#: src/emc/usr_intf/pncconf/pncconf.glade:57032 +#: src/emc/usr_intf/pncconf/pncconf.glade:57052 +#: src/emc/usr_intf/pncconf/pncconf.glade:57072 +#: src/emc/usr_intf/pncconf/pncconf.glade:59001 +#: src/emc/usr_intf/pncconf/pncconf.glade:59342 +#: src/emc/usr_intf/pncconf/pncconf.glade:60572 +#: src/emc/usr_intf/pncconf/pncconf.glade:60592 +#: src/emc/usr_intf/pncconf/pncconf.glade:60612 +#: src/emc/usr_intf/pncconf/pncconf.glade:60632 +#: src/emc/usr_intf/pncconf/pncconf.glade:60652 +#: src/emc/usr_intf/pncconf/pncconf.glade:60672 +#: src/emc/usr_intf/pncconf/pncconf.glade:60692 +#: src/emc/usr_intf/pncconf/pncconf.glade:60712 +#: src/emc/usr_intf/pncconf/pncconf.glade:60732 +#: src/emc/usr_intf/pncconf/pncconf.glade:60752 +#: src/emc/usr_intf/pncconf/pncconf.glade:60772 +msgid "" +"GPIO Input\n" +"GPIO Output\n" +"GPIO O Drain\n" +"Encoder\n" +"PWM\n" +"StepGen\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9531 -#: src/emc/usr_intf/pncconf/pncconf.glade:12855 -#: src/emc/usr_intf/pncconf/pncconf.glade:18112 -#: src/emc/usr_intf/pncconf/pncconf.glade:20217 -#: src/emc/usr_intf/pncconf/pncconf.glade:21502 -#: src/emc/usr_intf/pncconf/pncconf.glade:23298 -#: src/emc/usr_intf/pncconf/pncconf.glade:25094 -msgid "29:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8913 +#: src/emc/usr_intf/pncconf/pncconf.glade:13730 +#: src/emc/usr_intf/pncconf/pncconf.glade:18936 +#: src/emc/usr_intf/pncconf/pncconf.glade:20738 +#: src/emc/usr_intf/pncconf/pncconf.glade:21031 +#: src/emc/usr_intf/pncconf/pncconf.glade:22827 +#: src/emc/usr_intf/pncconf/pncconf.glade:24623 +#, fuzzy +msgid " 1:" +msgstr "PWM 1:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:8927 +#: src/emc/usr_intf/pncconf/pncconf.glade:13716 +#: src/emc/usr_intf/pncconf/pncconf.glade:18922 +#: src/emc/usr_intf/pncconf/pncconf.glade:20724 +#: src/emc/usr_intf/pncconf/pncconf.glade:21045 +#: src/emc/usr_intf/pncconf/pncconf.glade:22841 +#: src/emc/usr_intf/pncconf/pncconf.glade:24637 +msgid " 3:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9547 -#: src/emc/usr_intf/pncconf/pncconf.glade:12839 -#: src/emc/usr_intf/pncconf/pncconf.glade:18096 -#: src/emc/usr_intf/pncconf/pncconf.glade:20201 -#: src/emc/usr_intf/pncconf/pncconf.glade:21518 -#: src/emc/usr_intf/pncconf/pncconf.glade:23314 -#: src/emc/usr_intf/pncconf/pncconf.glade:25110 -msgid "27:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8941 +#: src/emc/usr_intf/pncconf/pncconf.glade:13702 +#: src/emc/usr_intf/pncconf/pncconf.glade:18908 +#: src/emc/usr_intf/pncconf/pncconf.glade:20710 +#: src/emc/usr_intf/pncconf/pncconf.glade:21059 +#: src/emc/usr_intf/pncconf/pncconf.glade:22855 +#: src/emc/usr_intf/pncconf/pncconf.glade:24651 +msgid " 5:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9563 -#: src/emc/usr_intf/pncconf/pncconf.glade:12823 -#: src/emc/usr_intf/pncconf/pncconf.glade:18080 -#: src/emc/usr_intf/pncconf/pncconf.glade:20185 -#: src/emc/usr_intf/pncconf/pncconf.glade:21534 -#: src/emc/usr_intf/pncconf/pncconf.glade:23330 -#: src/emc/usr_intf/pncconf/pncconf.glade:25126 -msgid "25:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8955 +#: src/emc/usr_intf/pncconf/pncconf.glade:13688 +#: src/emc/usr_intf/pncconf/pncconf.glade:18894 +#: src/emc/usr_intf/pncconf/pncconf.glade:20696 +#: src/emc/usr_intf/pncconf/pncconf.glade:21073 +#: src/emc/usr_intf/pncconf/pncconf.glade:22869 +#: src/emc/usr_intf/pncconf/pncconf.glade:24665 +msgid " 7:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9936 -#: src/emc/usr_intf/pncconf/pncconf.glade:12450 -#: src/emc/usr_intf/pncconf/pncconf.glade:17707 -#: src/emc/usr_intf/pncconf/pncconf.glade:19924 -#: src/emc/usr_intf/pncconf/pncconf.glade:21795 -#: src/emc/usr_intf/pncconf/pncconf.glade:23591 -#: src/emc/usr_intf/pncconf/pncconf.glade:25387 -msgid "33:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8969 +#: src/emc/usr_intf/pncconf/pncconf.glade:13674 +#: src/emc/usr_intf/pncconf/pncconf.glade:18880 +#: src/emc/usr_intf/pncconf/pncconf.glade:20682 +#: src/emc/usr_intf/pncconf/pncconf.glade:21087 +#: src/emc/usr_intf/pncconf/pncconf.glade:22883 +#: src/emc/usr_intf/pncconf/pncconf.glade:24679 +msgid " 9:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9952 -#: src/emc/usr_intf/pncconf/pncconf.glade:12434 -#: src/emc/usr_intf/pncconf/pncconf.glade:17691 -#: src/emc/usr_intf/pncconf/pncconf.glade:19908 -#: src/emc/usr_intf/pncconf/pncconf.glade:21811 -#: src/emc/usr_intf/pncconf/pncconf.glade:23607 -#: src/emc/usr_intf/pncconf/pncconf.glade:25403 -msgid "35:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8983 +#: src/emc/usr_intf/pncconf/pncconf.glade:13660 +#: src/emc/usr_intf/pncconf/pncconf.glade:18866 +#: src/emc/usr_intf/pncconf/pncconf.glade:20668 +#: src/emc/usr_intf/pncconf/pncconf.glade:21101 +#: src/emc/usr_intf/pncconf/pncconf.glade:22897 +#: src/emc/usr_intf/pncconf/pncconf.glade:24693 +msgid "11:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9968 -#: src/emc/usr_intf/pncconf/pncconf.glade:12418 -#: src/emc/usr_intf/pncconf/pncconf.glade:17675 -#: src/emc/usr_intf/pncconf/pncconf.glade:19892 -#: src/emc/usr_intf/pncconf/pncconf.glade:21827 -#: src/emc/usr_intf/pncconf/pncconf.glade:23623 -#: src/emc/usr_intf/pncconf/pncconf.glade:25419 -msgid "37:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8997 +#: src/emc/usr_intf/pncconf/pncconf.glade:13646 +#: src/emc/usr_intf/pncconf/pncconf.glade:18852 +#: src/emc/usr_intf/pncconf/pncconf.glade:20654 +#: src/emc/usr_intf/pncconf/pncconf.glade:21115 +#: src/emc/usr_intf/pncconf/pncconf.glade:22911 +#: src/emc/usr_intf/pncconf/pncconf.glade:24707 +msgid "13:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9984 -#: src/emc/usr_intf/pncconf/pncconf.glade:12402 -#: src/emc/usr_intf/pncconf/pncconf.glade:17659 -#: src/emc/usr_intf/pncconf/pncconf.glade:19876 -#: src/emc/usr_intf/pncconf/pncconf.glade:21843 -#: src/emc/usr_intf/pncconf/pncconf.glade:23639 -#: src/emc/usr_intf/pncconf/pncconf.glade:25435 -msgid "39:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9011 +#: src/emc/usr_intf/pncconf/pncconf.glade:13632 +#: src/emc/usr_intf/pncconf/pncconf.glade:18838 +#: src/emc/usr_intf/pncconf/pncconf.glade:20640 +#: src/emc/usr_intf/pncconf/pncconf.glade:21129 +#: src/emc/usr_intf/pncconf/pncconf.glade:22925 +#: src/emc/usr_intf/pncconf/pncconf.glade:24721 +msgid "15:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10000 -#: src/emc/usr_intf/pncconf/pncconf.glade:12386 -#: src/emc/usr_intf/pncconf/pncconf.glade:17643 -#: src/emc/usr_intf/pncconf/pncconf.glade:19860 -#: src/emc/usr_intf/pncconf/pncconf.glade:21859 -#: src/emc/usr_intf/pncconf/pncconf.glade:23655 -#: src/emc/usr_intf/pncconf/pncconf.glade:25451 -msgid "41:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9025 +#: src/emc/usr_intf/pncconf/pncconf.glade:13618 +#: src/emc/usr_intf/pncconf/pncconf.glade:18824 +#: src/emc/usr_intf/pncconf/pncconf.glade:20626 +#: src/emc/usr_intf/pncconf/pncconf.glade:21143 +#: src/emc/usr_intf/pncconf/pncconf.glade:22939 +#: src/emc/usr_intf/pncconf/pncconf.glade:24735 +msgid "17:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10016 -#: src/emc/usr_intf/pncconf/pncconf.glade:12370 -#: src/emc/usr_intf/pncconf/pncconf.glade:17627 -#: src/emc/usr_intf/pncconf/pncconf.glade:19844 -#: src/emc/usr_intf/pncconf/pncconf.glade:21875 -#: src/emc/usr_intf/pncconf/pncconf.glade:23671 -#: src/emc/usr_intf/pncconf/pncconf.glade:25467 -msgid "43:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9039 +#: src/emc/usr_intf/pncconf/pncconf.glade:13604 +#: src/emc/usr_intf/pncconf/pncconf.glade:18810 +#: src/emc/usr_intf/pncconf/pncconf.glade:20612 +#: src/emc/usr_intf/pncconf/pncconf.glade:21157 +#: src/emc/usr_intf/pncconf/pncconf.glade:22953 +#: src/emc/usr_intf/pncconf/pncconf.glade:24749 +msgid "19:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10032 -#: src/emc/usr_intf/pncconf/pncconf.glade:12354 -#: src/emc/usr_intf/pncconf/pncconf.glade:17611 -#: src/emc/usr_intf/pncconf/pncconf.glade:19828 -#: src/emc/usr_intf/pncconf/pncconf.glade:21891 -#: src/emc/usr_intf/pncconf/pncconf.glade:23687 -#: src/emc/usr_intf/pncconf/pncconf.glade:25483 -msgid "45:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9053 +#: src/emc/usr_intf/pncconf/pncconf.glade:13590 +#: src/emc/usr_intf/pncconf/pncconf.glade:18796 +#: src/emc/usr_intf/pncconf/pncconf.glade:20598 +#: src/emc/usr_intf/pncconf/pncconf.glade:21171 +#: src/emc/usr_intf/pncconf/pncconf.glade:22967 +#: src/emc/usr_intf/pncconf/pncconf.glade:24763 +msgid "21:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10099 -#: src/emc/usr_intf/pncconf/pncconf.glade:12287 -#: src/emc/usr_intf/pncconf/pncconf.glade:17544 -#: src/emc/usr_intf/pncconf/pncconf.glade:19777 -#: src/emc/usr_intf/pncconf/pncconf.glade:21942 -#: src/emc/usr_intf/pncconf/pncconf.glade:23738 -#: src/emc/usr_intf/pncconf/pncconf.glade:25534 -msgid "47:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9067 +#: src/emc/usr_intf/pncconf/pncconf.glade:13576 +#: src/emc/usr_intf/pncconf/pncconf.glade:18782 +#: src/emc/usr_intf/pncconf/pncconf.glade:20584 +#: src/emc/usr_intf/pncconf/pncconf.glade:21185 +#: src/emc/usr_intf/pncconf/pncconf.glade:22981 +#: src/emc/usr_intf/pncconf/pncconf.glade:24777 +msgid "23:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10822 -#: src/emc/usr_intf/pncconf/pncconf.glade:11077 -#: src/emc/usr_intf/pncconf/pncconf.glade:11311 -#: src/emc/usr_intf/pncconf/pncconf.glade:11567 -#: src/emc/usr_intf/pncconf/pncconf.glade:13924 -#: src/emc/usr_intf/pncconf/pncconf.glade:14171 -#: src/emc/usr_intf/pncconf/pncconf.glade:16516 -#: src/emc/usr_intf/pncconf/pncconf.glade:16772 -#: src/emc/usr_intf/pncconf/pncconf.glade:19129 -#: src/emc/usr_intf/pncconf/pncconf.glade:19379 -#: src/emc/usr_intf/pncconf/pncconf.glade:22343 -#: src/emc/usr_intf/pncconf/pncconf.glade:22592 -#: src/emc/usr_intf/pncconf/pncconf.glade:24139 -#: src/emc/usr_intf/pncconf/pncconf.glade:24388 -#: src/emc/usr_intf/pncconf/pncconf.glade:25935 -#: src/emc/usr_intf/pncconf/pncconf.glade:26184 -#: src/emc/usr_intf/pncconf/pncconf.glade:28515 -#: src/emc/usr_intf/pncconf/pncconf.glade:28761 -#: src/emc/usr_intf/pncconf/pncconf.glade:28892 -#: src/emc/usr_intf/pncconf/pncconf.glade:29139 -#: src/emc/usr_intf/pncconf/pncconf.glade:33079 -#: src/emc/usr_intf/pncconf/pncconf.glade:33250 -#: src/emc/usr_intf/pncconf/pncconf.glade:33497 -#: src/emc/usr_intf/pncconf/pncconf.glade:38012 -#: src/emc/usr_intf/pncconf/pncconf.glade:38258 -#: src/emc/usr_intf/pncconf/pncconf.glade:38507 -#: src/emc/usr_intf/pncconf/pncconf.glade:42359 -#: src/emc/usr_intf/pncconf/pncconf.glade:42605 -#: src/emc/usr_intf/pncconf/pncconf.glade:42736 -#: src/emc/usr_intf/pncconf/pncconf.glade:42983 -#: src/emc/usr_intf/pncconf/pncconf.glade:46936 -#: src/emc/usr_intf/pncconf/pncconf.glade:49282 -#: src/emc/usr_intf/pncconf/pncconf.glade:49528 -#: src/emc/usr_intf/pncconf/pncconf.glade:49659 -#: src/emc/usr_intf/pncconf/pncconf.glade:49906 -#: src/emc/usr_intf/pncconf/pncconf.glade:53859 -#, fuzzy -msgid "Pin Type" -msgstr "动作类型" +#: src/emc/usr_intf/pncconf/pncconf.glade:9801 +#: src/emc/usr_intf/pncconf/pncconf.glade:12840 +#: src/emc/usr_intf/pncconf/pncconf.glade:17994 +#: src/emc/usr_intf/pncconf/pncconf.glade:20170 +#: src/emc/usr_intf/pncconf/pncconf.glade:21597 +#: src/emc/usr_intf/pncconf/pncconf.glade:23393 +#: src/emc/usr_intf/pncconf/pncconf.glade:25189 +msgid "47:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10835 -#: src/emc/usr_intf/pncconf/pncconf.glade:11553 -#: src/emc/usr_intf/pncconf/pncconf.glade:16758 -#: src/emc/usr_intf/pncconf/pncconf.glade:19365 -#: src/emc/usr_intf/pncconf/pncconf.glade:22356 -#: src/emc/usr_intf/pncconf/pncconf.glade:24152 -#: src/emc/usr_intf/pncconf/pncconf.glade:25948 -msgid "23:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9868 +#: src/emc/usr_intf/pncconf/pncconf.glade:12773 +#: src/emc/usr_intf/pncconf/pncconf.glade:17927 +#: src/emc/usr_intf/pncconf/pncconf.glade:20119 +#: src/emc/usr_intf/pncconf/pncconf.glade:21648 +#: src/emc/usr_intf/pncconf/pncconf.glade:23444 +#: src/emc/usr_intf/pncconf/pncconf.glade:25240 +msgid "45:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10849 -#: src/emc/usr_intf/pncconf/pncconf.glade:11539 -#: src/emc/usr_intf/pncconf/pncconf.glade:16744 -#: src/emc/usr_intf/pncconf/pncconf.glade:19351 -#: src/emc/usr_intf/pncconf/pncconf.glade:22370 -#: src/emc/usr_intf/pncconf/pncconf.glade:24166 -#: src/emc/usr_intf/pncconf/pncconf.glade:25962 -msgid "21:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9884 +#: src/emc/usr_intf/pncconf/pncconf.glade:12757 +#: src/emc/usr_intf/pncconf/pncconf.glade:17911 +#: src/emc/usr_intf/pncconf/pncconf.glade:20103 +#: src/emc/usr_intf/pncconf/pncconf.glade:21664 +#: src/emc/usr_intf/pncconf/pncconf.glade:23460 +#: src/emc/usr_intf/pncconf/pncconf.glade:25256 +msgid "43:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10863 -#: src/emc/usr_intf/pncconf/pncconf.glade:11525 -#: src/emc/usr_intf/pncconf/pncconf.glade:16730 -#: src/emc/usr_intf/pncconf/pncconf.glade:19337 -#: src/emc/usr_intf/pncconf/pncconf.glade:22384 -#: src/emc/usr_intf/pncconf/pncconf.glade:24180 -#: src/emc/usr_intf/pncconf/pncconf.glade:25976 -msgid "19:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9900 +#: src/emc/usr_intf/pncconf/pncconf.glade:12741 +#: src/emc/usr_intf/pncconf/pncconf.glade:17895 +#: src/emc/usr_intf/pncconf/pncconf.glade:20087 +#: src/emc/usr_intf/pncconf/pncconf.glade:21680 +#: src/emc/usr_intf/pncconf/pncconf.glade:23476 +#: src/emc/usr_intf/pncconf/pncconf.glade:25272 +msgid "41:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10877 -#: src/emc/usr_intf/pncconf/pncconf.glade:11511 -#: src/emc/usr_intf/pncconf/pncconf.glade:16716 -#: src/emc/usr_intf/pncconf/pncconf.glade:19323 -#: src/emc/usr_intf/pncconf/pncconf.glade:22398 -#: src/emc/usr_intf/pncconf/pncconf.glade:24194 -#: src/emc/usr_intf/pncconf/pncconf.glade:25990 -msgid "17:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9916 +#: src/emc/usr_intf/pncconf/pncconf.glade:12725 +#: src/emc/usr_intf/pncconf/pncconf.glade:17879 +#: src/emc/usr_intf/pncconf/pncconf.glade:20071 +#: src/emc/usr_intf/pncconf/pncconf.glade:21696 +#: src/emc/usr_intf/pncconf/pncconf.glade:23492 +#: src/emc/usr_intf/pncconf/pncconf.glade:25288 +msgid "39:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11497 -#: src/emc/usr_intf/pncconf/pncconf.glade:16702 -#: src/emc/usr_intf/pncconf/pncconf.glade:19309 -#: src/emc/usr_intf/pncconf/pncconf.glade:22412 -#: src/emc/usr_intf/pncconf/pncconf.glade:24208 -#: src/emc/usr_intf/pncconf/pncconf.glade:26004 -msgid "15:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9932 +#: src/emc/usr_intf/pncconf/pncconf.glade:12709 +#: src/emc/usr_intf/pncconf/pncconf.glade:17863 +#: src/emc/usr_intf/pncconf/pncconf.glade:20055 +#: src/emc/usr_intf/pncconf/pncconf.glade:21712 +#: src/emc/usr_intf/pncconf/pncconf.glade:23508 +#: src/emc/usr_intf/pncconf/pncconf.glade:25304 +msgid "37:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10905 -#: src/emc/usr_intf/pncconf/pncconf.glade:11483 -#: src/emc/usr_intf/pncconf/pncconf.glade:16688 -#: src/emc/usr_intf/pncconf/pncconf.glade:19295 -#: src/emc/usr_intf/pncconf/pncconf.glade:22426 -#: src/emc/usr_intf/pncconf/pncconf.glade:24222 -#: src/emc/usr_intf/pncconf/pncconf.glade:26018 -msgid "13:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9948 +#: src/emc/usr_intf/pncconf/pncconf.glade:12693 +#: src/emc/usr_intf/pncconf/pncconf.glade:17847 +#: src/emc/usr_intf/pncconf/pncconf.glade:20039 +#: src/emc/usr_intf/pncconf/pncconf.glade:21728 +#: src/emc/usr_intf/pncconf/pncconf.glade:23524 +#: src/emc/usr_intf/pncconf/pncconf.glade:25320 +msgid "35:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10919 -#: src/emc/usr_intf/pncconf/pncconf.glade:11469 -#: src/emc/usr_intf/pncconf/pncconf.glade:16674 -#: src/emc/usr_intf/pncconf/pncconf.glade:19281 -#: src/emc/usr_intf/pncconf/pncconf.glade:22440 -#: src/emc/usr_intf/pncconf/pncconf.glade:24236 -#: src/emc/usr_intf/pncconf/pncconf.glade:26032 -msgid "11:" +#: src/emc/usr_intf/pncconf/pncconf.glade:9964 +#: src/emc/usr_intf/pncconf/pncconf.glade:12677 +#: src/emc/usr_intf/pncconf/pncconf.glade:17831 +#: src/emc/usr_intf/pncconf/pncconf.glade:20023 +#: src/emc/usr_intf/pncconf/pncconf.glade:21744 +#: src/emc/usr_intf/pncconf/pncconf.glade:23540 +#: src/emc/usr_intf/pncconf/pncconf.glade:25336 +msgid "33:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10933 -#: src/emc/usr_intf/pncconf/pncconf.glade:11455 -#: src/emc/usr_intf/pncconf/pncconf.glade:16660 -#: src/emc/usr_intf/pncconf/pncconf.glade:19267 -#: src/emc/usr_intf/pncconf/pncconf.glade:22454 -#: src/emc/usr_intf/pncconf/pncconf.glade:24250 -#: src/emc/usr_intf/pncconf/pncconf.glade:26046 -msgid " 9:" +#: src/emc/usr_intf/pncconf/pncconf.glade:10337 +#: src/emc/usr_intf/pncconf/pncconf.glade:12304 +#: src/emc/usr_intf/pncconf/pncconf.glade:17458 +#: src/emc/usr_intf/pncconf/pncconf.glade:19762 +#: src/emc/usr_intf/pncconf/pncconf.glade:22005 +#: src/emc/usr_intf/pncconf/pncconf.glade:23801 +#: src/emc/usr_intf/pncconf/pncconf.glade:25597 +msgid "25:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10947 -#: src/emc/usr_intf/pncconf/pncconf.glade:11441 -#: src/emc/usr_intf/pncconf/pncconf.glade:16646 -#: src/emc/usr_intf/pncconf/pncconf.glade:19253 -#: src/emc/usr_intf/pncconf/pncconf.glade:22468 -#: src/emc/usr_intf/pncconf/pncconf.glade:24264 -#: src/emc/usr_intf/pncconf/pncconf.glade:26060 -msgid " 7:" +#: src/emc/usr_intf/pncconf/pncconf.glade:10353 +#: src/emc/usr_intf/pncconf/pncconf.glade:12288 +#: src/emc/usr_intf/pncconf/pncconf.glade:17442 +#: src/emc/usr_intf/pncconf/pncconf.glade:19746 +#: src/emc/usr_intf/pncconf/pncconf.glade:22021 +#: src/emc/usr_intf/pncconf/pncconf.glade:23817 +#: src/emc/usr_intf/pncconf/pncconf.glade:25613 +msgid "27:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10961 -#: src/emc/usr_intf/pncconf/pncconf.glade:11427 -#: src/emc/usr_intf/pncconf/pncconf.glade:16632 -#: src/emc/usr_intf/pncconf/pncconf.glade:19239 -#: src/emc/usr_intf/pncconf/pncconf.glade:22482 -#: src/emc/usr_intf/pncconf/pncconf.glade:24278 -#: src/emc/usr_intf/pncconf/pncconf.glade:26074 -msgid " 5:" +#: src/emc/usr_intf/pncconf/pncconf.glade:10369 +#: src/emc/usr_intf/pncconf/pncconf.glade:12272 +#: src/emc/usr_intf/pncconf/pncconf.glade:17426 +#: src/emc/usr_intf/pncconf/pncconf.glade:19730 +#: src/emc/usr_intf/pncconf/pncconf.glade:22037 +#: src/emc/usr_intf/pncconf/pncconf.glade:23833 +#: src/emc/usr_intf/pncconf/pncconf.glade:25629 +msgid "29:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10975 -#: src/emc/usr_intf/pncconf/pncconf.glade:11413 -#: src/emc/usr_intf/pncconf/pncconf.glade:16618 -#: src/emc/usr_intf/pncconf/pncconf.glade:19225 -#: src/emc/usr_intf/pncconf/pncconf.glade:22496 -#: src/emc/usr_intf/pncconf/pncconf.glade:24292 -#: src/emc/usr_intf/pncconf/pncconf.glade:26088 -msgid " 3:" +#: src/emc/usr_intf/pncconf/pncconf.glade:10385 +#: src/emc/usr_intf/pncconf/pncconf.glade:12256 +#: src/emc/usr_intf/pncconf/pncconf.glade:17410 +#: src/emc/usr_intf/pncconf/pncconf.glade:19714 +#: src/emc/usr_intf/pncconf/pncconf.glade:22053 +#: src/emc/usr_intf/pncconf/pncconf.glade:23849 +#: src/emc/usr_intf/pncconf/pncconf.glade:25645 +msgid "31:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10989 -#: src/emc/usr_intf/pncconf/pncconf.glade:11399 -#: src/emc/usr_intf/pncconf/pncconf.glade:16604 -#: src/emc/usr_intf/pncconf/pncconf.glade:19211 -#: src/emc/usr_intf/pncconf/pncconf.glade:22510 -#: src/emc/usr_intf/pncconf/pncconf.glade:24306 -#: src/emc/usr_intf/pncconf/pncconf.glade:26102 +#: src/emc/usr_intf/pncconf/pncconf.glade:10677 +#: src/emc/usr_intf/pncconf/pncconf.glade:10689 +#: src/emc/usr_intf/pncconf/pncconf.glade:11955 +#: src/emc/usr_intf/pncconf/pncconf.glade:11967 +#: src/emc/usr_intf/pncconf/pncconf.glade:14464 +#: src/emc/usr_intf/pncconf/pncconf.glade:14476 +#: src/emc/usr_intf/pncconf/pncconf.glade:17161 +#: src/emc/usr_intf/pncconf/pncconf.glade:17173 +#: src/emc/usr_intf/pncconf/pncconf.glade:19567 +#: src/emc/usr_intf/pncconf/pncconf.glade:19579 +#: src/emc/usr_intf/pncconf/pncconf.glade:22190 +#: src/emc/usr_intf/pncconf/pncconf.glade:22202 +#: src/emc/usr_intf/pncconf/pncconf.glade:23986 +#: src/emc/usr_intf/pncconf/pncconf.glade:23998 +#: src/emc/usr_intf/pncconf/pncconf.glade:25782 +#: src/emc/usr_intf/pncconf/pncconf.glade:25794 +#: src/emc/usr_intf/pncconf/pncconf.glade:28287 +#: src/emc/usr_intf/pncconf/pncconf.glade:28299 +#: src/emc/usr_intf/pncconf/pncconf.glade:29415 +#: src/emc/usr_intf/pncconf/pncconf.glade:29427 +#: src/emc/usr_intf/pncconf/pncconf.glade:32869 +#: src/emc/usr_intf/pncconf/pncconf.glade:33760 +#: src/emc/usr_intf/pncconf/pncconf.glade:33772 +#: src/emc/usr_intf/pncconf/pncconf.glade:37771 +#: src/emc/usr_intf/pncconf/pncconf.glade:37783 +#: src/emc/usr_intf/pncconf/pncconf.glade:38777 +#: src/emc/usr_intf/pncconf/pncconf.glade:38789 +#: src/emc/usr_intf/pncconf/pncconf.glade:42131 +#: src/emc/usr_intf/pncconf/pncconf.glade:42143 +#: src/emc/usr_intf/pncconf/pncconf.glade:43259 +#: src/emc/usr_intf/pncconf/pncconf.glade:43271 +#: src/emc/usr_intf/pncconf/pncconf.glade:46702 +#: src/emc/usr_intf/pncconf/pncconf.glade:46714 +#: src/emc/usr_intf/pncconf/pncconf.glade:49054 +#: src/emc/usr_intf/pncconf/pncconf.glade:49066 +#: src/emc/usr_intf/pncconf/pncconf.glade:50182 +#: src/emc/usr_intf/pncconf/pncconf.glade:50194 +#: src/emc/usr_intf/pncconf/pncconf.glade:53625 +#: src/emc/usr_intf/pncconf/pncconf.glade:53637 +#: src/emc/usr_intf/pncconf/pncconf.glade:55977 +#: src/emc/usr_intf/pncconf/pncconf.glade:55989 +#: src/emc/usr_intf/pncconf/pncconf.glade:57105 +#: src/emc/usr_intf/pncconf/pncconf.glade:57117 +#: src/emc/usr_intf/pncconf/pncconf.glade:60548 +#: src/emc/usr_intf/pncconf/pncconf.glade:60560 #, fuzzy -msgid " 1:" -msgstr "PWM 1:" +msgid "function" +msgstr "函数" -#: src/emc/usr_intf/pncconf/pncconf.glade:11002 -#: src/emc/usr_intf/pncconf/pncconf.glade:11065 -#: src/emc/usr_intf/pncconf/pncconf.glade:11324 -#: src/emc/usr_intf/pncconf/pncconf.glade:11386 -#: src/emc/usr_intf/pncconf/pncconf.glade:13937 -#: src/emc/usr_intf/pncconf/pncconf.glade:13999 -#: src/emc/usr_intf/pncconf/pncconf.glade:16529 -#: src/emc/usr_intf/pncconf/pncconf.glade:16591 -#: src/emc/usr_intf/pncconf/pncconf.glade:19142 -#: src/emc/usr_intf/pncconf/pncconf.glade:19198 -#: src/emc/usr_intf/pncconf/pncconf.glade:22523 -#: src/emc/usr_intf/pncconf/pncconf.glade:22580 -#: src/emc/usr_intf/pncconf/pncconf.glade:24319 -#: src/emc/usr_intf/pncconf/pncconf.glade:24376 -#: src/emc/usr_intf/pncconf/pncconf.glade:26115 -#: src/emc/usr_intf/pncconf/pncconf.glade:26172 -#: src/emc/usr_intf/pncconf/pncconf.glade:28686 -#: src/emc/usr_intf/pncconf/pncconf.glade:28749 -#: src/emc/usr_intf/pncconf/pncconf.glade:28905 -#: src/emc/usr_intf/pncconf/pncconf.glade:28967 -#: src/emc/usr_intf/pncconf/pncconf.glade:33067 -#: src/emc/usr_intf/pncconf/pncconf.glade:33263 -#: src/emc/usr_intf/pncconf/pncconf.glade:33325 -#: src/emc/usr_intf/pncconf/pncconf.glade:38183 -#: src/emc/usr_intf/pncconf/pncconf.glade:38246 -#: src/emc/usr_intf/pncconf/pncconf.glade:38520 -#: src/emc/usr_intf/pncconf/pncconf.glade:42530 -#: src/emc/usr_intf/pncconf/pncconf.glade:42593 -#: src/emc/usr_intf/pncconf/pncconf.glade:42749 -#: src/emc/usr_intf/pncconf/pncconf.glade:42811 -#: src/emc/usr_intf/pncconf/pncconf.glade:46924 -#: src/emc/usr_intf/pncconf/pncconf.glade:49453 -#: src/emc/usr_intf/pncconf/pncconf.glade:49516 -#: src/emc/usr_intf/pncconf/pncconf.glade:49672 -#: src/emc/usr_intf/pncconf/pncconf.glade:49734 -#: src/emc/usr_intf/pncconf/pncconf.glade:53847 +#: src/emc/usr_intf/pncconf/pncconf.glade:10703 +#: src/emc/usr_intf/pncconf/pncconf.glade:11940 +#: src/emc/usr_intf/pncconf/pncconf.glade:14449 +#: src/emc/usr_intf/pncconf/pncconf.glade:17146 +#: src/emc/usr_intf/pncconf/pncconf.glade:19553 +#: src/emc/usr_intf/pncconf/pncconf.glade:22217 +#: src/emc/usr_intf/pncconf/pncconf.glade:24013 +#: src/emc/usr_intf/pncconf/pncconf.glade:25809 #, fuzzy -msgid "Inv" -msgstr "反转" +msgid "Launch test panel" +msgstr "_Latency test result:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:11192 +#: src/emc/usr_intf/pncconf/pncconf.glade:11204 +#: src/emc/usr_intf/pncconf/pncconf.glade:11440 +#: src/emc/usr_intf/pncconf/pncconf.glade:11454 +#: src/emc/usr_intf/pncconf/pncconf.glade:13949 +#: src/emc/usr_intf/pncconf/pncconf.glade:13963 +#: src/emc/usr_intf/pncconf/pncconf.glade:16645 +#: src/emc/usr_intf/pncconf/pncconf.glade:16659 +#: src/emc/usr_intf/pncconf/pncconf.glade:19190 +#: src/emc/usr_intf/pncconf/pncconf.glade:19204 +#: src/emc/usr_intf/pncconf/pncconf.glade:22567 +#: src/emc/usr_intf/pncconf/pncconf.glade:22579 +#: src/emc/usr_intf/pncconf/pncconf.glade:24363 +#: src/emc/usr_intf/pncconf/pncconf.glade:24375 +#: src/emc/usr_intf/pncconf/pncconf.glade:26159 +#: src/emc/usr_intf/pncconf/pncconf.glade:26171 +#: src/emc/usr_intf/pncconf/pncconf.glade:28772 +#: src/emc/usr_intf/pncconf/pncconf.glade:28784 +#: src/emc/usr_intf/pncconf/pncconf.glade:28917 +#: src/emc/usr_intf/pncconf/pncconf.glade:28931 +#: src/emc/usr_intf/pncconf/pncconf.glade:33102 +#: src/emc/usr_intf/pncconf/pncconf.glade:33275 +#: src/emc/usr_intf/pncconf/pncconf.glade:33289 +#: src/emc/usr_intf/pncconf/pncconf.glade:38269 +#: src/emc/usr_intf/pncconf/pncconf.glade:38281 +#: src/emc/usr_intf/pncconf/pncconf.glade:38532 +#: src/emc/usr_intf/pncconf/pncconf.glade:38546 +#: src/emc/usr_intf/pncconf/pncconf.glade:42616 +#: src/emc/usr_intf/pncconf/pncconf.glade:42628 +#: src/emc/usr_intf/pncconf/pncconf.glade:42761 +#: src/emc/usr_intf/pncconf/pncconf.glade:42775 +#: src/emc/usr_intf/pncconf/pncconf.glade:46947 +#: src/emc/usr_intf/pncconf/pncconf.glade:46959 +#: src/emc/usr_intf/pncconf/pncconf.glade:49539 +#: src/emc/usr_intf/pncconf/pncconf.glade:49551 +#: src/emc/usr_intf/pncconf/pncconf.glade:49684 +#: src/emc/usr_intf/pncconf/pncconf.glade:49698 +#: src/emc/usr_intf/pncconf/pncconf.glade:53870 +#: src/emc/usr_intf/pncconf/pncconf.glade:53882 +#: src/emc/usr_intf/pncconf/pncconf.glade:56462 +#: src/emc/usr_intf/pncconf/pncconf.glade:56474 +#: src/emc/usr_intf/pncconf/pncconf.glade:56607 +#: src/emc/usr_intf/pncconf/pncconf.glade:56621 +#: src/emc/usr_intf/pncconf/pncconf.glade:60793 +#: src/emc/usr_intf/pncconf/pncconf.glade:60805 +msgid "Num" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:11198 +#: src/emc/usr_intf/pncconf/pncconf.glade:11222 msgid "" " I/O\n" "Connector 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:13811 +#: src/emc/usr_intf/pncconf/pncconf.glade:13835 msgid "" " I/O\n" " Connector 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:14012 -#: src/emc/usr_intf/pncconf/pncconf.glade:14039 -#: src/emc/usr_intf/pncconf/pncconf.glade:14053 -#: src/emc/usr_intf/pncconf/pncconf.glade:28632 -#: src/emc/usr_intf/pncconf/pncconf.glade:28646 -#: src/emc/usr_intf/pncconf/pncconf.glade:28673 -#: src/emc/usr_intf/pncconf/pncconf.glade:28980 -#: src/emc/usr_intf/pncconf/pncconf.glade:29007 -#: src/emc/usr_intf/pncconf/pncconf.glade:29021 -#: src/emc/usr_intf/pncconf/pncconf.glade:32951 -#: src/emc/usr_intf/pncconf/pncconf.glade:32965 -#: src/emc/usr_intf/pncconf/pncconf.glade:32992 -#: src/emc/usr_intf/pncconf/pncconf.glade:33338 -#: src/emc/usr_intf/pncconf/pncconf.glade:33365 -#: src/emc/usr_intf/pncconf/pncconf.glade:33379 -#: src/emc/usr_intf/pncconf/pncconf.glade:38129 -#: src/emc/usr_intf/pncconf/pncconf.glade:38143 -#: src/emc/usr_intf/pncconf/pncconf.glade:38170 -#: src/emc/usr_intf/pncconf/pncconf.glade:38594 -#: src/emc/usr_intf/pncconf/pncconf.glade:38621 -#: src/emc/usr_intf/pncconf/pncconf.glade:38635 -#: src/emc/usr_intf/pncconf/pncconf.glade:42476 -#: src/emc/usr_intf/pncconf/pncconf.glade:42490 -#: src/emc/usr_intf/pncconf/pncconf.glade:42517 -#: src/emc/usr_intf/pncconf/pncconf.glade:42824 -#: src/emc/usr_intf/pncconf/pncconf.glade:42851 -#: src/emc/usr_intf/pncconf/pncconf.glade:42865 -#: src/emc/usr_intf/pncconf/pncconf.glade:46808 -#: src/emc/usr_intf/pncconf/pncconf.glade:46822 -#: src/emc/usr_intf/pncconf/pncconf.glade:46849 -#: src/emc/usr_intf/pncconf/pncconf.glade:49399 -#: src/emc/usr_intf/pncconf/pncconf.glade:49413 -#: src/emc/usr_intf/pncconf/pncconf.glade:49440 -#: src/emc/usr_intf/pncconf/pncconf.glade:49747 -#: src/emc/usr_intf/pncconf/pncconf.glade:49774 -#: src/emc/usr_intf/pncconf/pncconf.glade:49788 -#: src/emc/usr_intf/pncconf/pncconf.glade:53731 -#: src/emc/usr_intf/pncconf/pncconf.glade:53745 -#: src/emc/usr_intf/pncconf/pncconf.glade:53772 +#: src/emc/usr_intf/pncconf/pncconf.glade:16281 +#: src/emc/usr_intf/pncconf/pncconf.glade:16295 +#: src/emc/usr_intf/pncconf/pncconf.glade:16322 +#: src/emc/usr_intf/pncconf/pncconf.glade:26441 +#: src/emc/usr_intf/pncconf/pncconf.glade:26468 +#: src/emc/usr_intf/pncconf/pncconf.glade:26482 +#: src/emc/usr_intf/pncconf/pncconf.glade:31232 +#: src/emc/usr_intf/pncconf/pncconf.glade:31246 +#: src/emc/usr_intf/pncconf/pncconf.glade:31273 +#: src/emc/usr_intf/pncconf/pncconf.glade:31708 +#: src/emc/usr_intf/pncconf/pncconf.glade:31735 +#: src/emc/usr_intf/pncconf/pncconf.glade:31749 +#: src/emc/usr_intf/pncconf/pncconf.glade:35577 +#: src/emc/usr_intf/pncconf/pncconf.glade:35591 +#: src/emc/usr_intf/pncconf/pncconf.glade:35618 +#: src/emc/usr_intf/pncconf/pncconf.glade:35925 +#: src/emc/usr_intf/pncconf/pncconf.glade:35952 +#: src/emc/usr_intf/pncconf/pncconf.glade:35966 +#: src/emc/usr_intf/pncconf/pncconf.glade:39909 +#: src/emc/usr_intf/pncconf/pncconf.glade:39923 +#: src/emc/usr_intf/pncconf/pncconf.glade:39950 +#: src/emc/usr_intf/pncconf/pncconf.glade:40285 +#: src/emc/usr_intf/pncconf/pncconf.glade:40312 +#: src/emc/usr_intf/pncconf/pncconf.glade:40326 +#: src/emc/usr_intf/pncconf/pncconf.glade:45076 +#: src/emc/usr_intf/pncconf/pncconf.glade:45090 +#: src/emc/usr_intf/pncconf/pncconf.glade:45117 +#: src/emc/usr_intf/pncconf/pncconf.glade:45541 +#: src/emc/usr_intf/pncconf/pncconf.glade:45568 +#: src/emc/usr_intf/pncconf/pncconf.glade:45582 +#: src/emc/usr_intf/pncconf/pncconf.glade:47208 +#: src/emc/usr_intf/pncconf/pncconf.glade:47235 +#: src/emc/usr_intf/pncconf/pncconf.glade:47249 +#: src/emc/usr_intf/pncconf/pncconf.glade:51999 +#: src/emc/usr_intf/pncconf/pncconf.glade:52013 +#: src/emc/usr_intf/pncconf/pncconf.glade:52040 +#: src/emc/usr_intf/pncconf/pncconf.glade:52464 +#: src/emc/usr_intf/pncconf/pncconf.glade:52491 +#: src/emc/usr_intf/pncconf/pncconf.glade:52505 +#: src/emc/usr_intf/pncconf/pncconf.glade:54131 +#: src/emc/usr_intf/pncconf/pncconf.glade:54158 +#: src/emc/usr_intf/pncconf/pncconf.glade:54172 +#: src/emc/usr_intf/pncconf/pncconf.glade:58922 +#: src/emc/usr_intf/pncconf/pncconf.glade:58936 +#: src/emc/usr_intf/pncconf/pncconf.glade:58963 +#: src/emc/usr_intf/pncconf/pncconf.glade:59387 +#: src/emc/usr_intf/pncconf/pncconf.glade:59414 +#: src/emc/usr_intf/pncconf/pncconf.glade:59428 msgid " " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:16403 +#: src/emc/usr_intf/pncconf/pncconf.glade:16427 msgid "" " I/O\n" " Connector 4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:19017 +#: src/emc/usr_intf/pncconf/pncconf.glade:19041 msgid "" " I/O\n" " Connector 5" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:20813 +#: src/emc/usr_intf/pncconf/pncconf.glade:20837 msgid "" " I/O\n" "Connector 6" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:22609 +#: src/emc/usr_intf/pncconf/pncconf.glade:22633 msgid "" " I/O\n" "Connector 7" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:24405 +#: src/emc/usr_intf/pncconf/pncconf.glade:24429 msgid "" " I/O\n" "Connector 8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:26201 +#: src/emc/usr_intf/pncconf/pncconf.glade:26225 msgid "" " I/O\n" " Connector 9" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:28775 -#: src/emc/usr_intf/pncconf/pncconf.glade:35696 -#: src/emc/usr_intf/pncconf/pncconf.glade:42619 -#: src/emc/usr_intf/pncconf/pncconf.glade:49542 -#, fuzzy -msgid "page 1" -msgstr "页 %1" - -#: src/emc/usr_intf/pncconf/pncconf.glade:31354 -#: src/emc/usr_intf/pncconf/pncconf.glade:38275 -#: src/emc/usr_intf/pncconf/pncconf.glade:45198 -#: src/emc/usr_intf/pncconf/pncconf.glade:52121 +#: src/emc/usr_intf/pncconf/pncconf.glade:31378 +#: src/emc/usr_intf/pncconf/pncconf.glade:38299 +#: src/emc/usr_intf/pncconf/pncconf.glade:45222 +#: src/emc/usr_intf/pncconf/pncconf.glade:52145 +#: src/emc/usr_intf/pncconf/pncconf.glade:59068 #, fuzzy msgid "page 2" msgstr "页 %1" -#: src/emc/usr_intf/pncconf/pncconf.glade:33107 -#: src/emc/usr_intf/pncconf/pncconf.glade:40030 -#: src/emc/usr_intf/pncconf/pncconf.glade:46953 -#: src/emc/usr_intf/pncconf/pncconf.glade:53876 +#: src/emc/usr_intf/pncconf/pncconf.glade:33131 +#: src/emc/usr_intf/pncconf/pncconf.glade:40054 +#: src/emc/usr_intf/pncconf/pncconf.glade:46977 +#: src/emc/usr_intf/pncconf/pncconf.glade:53900 +#: src/emc/usr_intf/pncconf/pncconf.glade:60823 #, fuzzy msgid "page 3" msgstr "页 %1" -#: src/emc/usr_intf/pncconf/pncconf.glade:33123 +#: src/emc/usr_intf/pncconf/pncconf.glade:33147 msgid "Smart Serial 0" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:40046 +#: src/emc/usr_intf/pncconf/pncconf.glade:40070 msgid "Smart Serial 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:46969 +#: src/emc/usr_intf/pncconf/pncconf.glade:46993 msgid "Smart Serial 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53892 +#: src/emc/usr_intf/pncconf/pncconf.glade:53916 msgid "Smart Serial 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53914 +#: src/emc/usr_intf/pncconf/pncconf.glade:60839 +#, fuzzy +msgid "Smart Serial 4" +msgstr "地雷数量:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:60861 #, fuzzy msgid "First Parallel Port Setup" msgstr "并口设置" -#: src/emc/usr_intf/pncconf/pncconf.glade:53998 -#, fuzzy -msgid "Outputs (PC to Machine):" -msgstr "输出 (PC to Mill):" +#: src/emc/usr_intf/pncconf/pncconf.glade:60946 +msgid "Launch Test Panel" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:54552 +#: src/emc/usr_intf/pncconf/pncconf.glade:62374 #, fuzzy msgid "Inputs (Machine to PC):" msgstr "输入(Mill to PC):" -#: src/emc/usr_intf/pncconf/pncconf.glade:55977 -msgid "Launch Test Panel" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:62929 +#, fuzzy +msgid "Outputs (PC to Machine):" +msgstr "输出 (PC to Mill):" -#: src/emc/usr_intf/pncconf/pncconf.glade:56003 +#: src/emc/usr_intf/pncconf/pncconf.glade:62950 #, fuzzy msgid "X Axis Motor/Encoder Configuration" msgstr "X 轴配置" -#: src/emc/usr_intf/pncconf/pncconf.glade:56091 -msgid "D" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:56104 -msgid "I" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:56117 -msgid "P" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:56128 -#: src/emc/usr_intf/pncconf/pncconf.glade:60917 -#: src/emc/usr_intf/pncconf/pncconf.glade:62202 -#: src/emc/usr_intf/pncconf/pncconf.glade:63103 -#: src/emc/usr_intf/pncconf/pncconf.glade:64388 -#: src/emc/usr_intf/pncconf/pncconf.glade:65265 +#: src/emc/usr_intf/pncconf/pncconf.glade:63005 #, fuzzy -msgid "Bias" -msgstr "是" - -#: src/emc/usr_intf/pncconf/pncconf.glade:56141 -msgid "Deadband" -msgstr "" +msgid "Max Output" +msgstr "输出:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56188 -#: src/emc/usr_intf/pncconf/pncconf.glade:61128 -#: src/emc/usr_intf/pncconf/pncconf.glade:61991 -#: src/emc/usr_intf/pncconf/pncconf.glade:63314 -#: src/emc/usr_intf/pncconf/pncconf.glade:64177 -#: src/emc/usr_intf/pncconf/pncconf.glade:65470 +#: src/emc/usr_intf/pncconf/pncconf.glade:63070 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "FF0" +msgid "FF2" msgstr "电源关" -#: src/emc/usr_intf/pncconf/pncconf.glade:56201 -#: src/emc/usr_intf/pncconf/pncconf.glade:61118 -#: src/emc/usr_intf/pncconf/pncconf.glade:62001 -#: src/emc/usr_intf/pncconf/pncconf.glade:63304 -#: src/emc/usr_intf/pncconf/pncconf.glade:64187 -#: src/emc/usr_intf/pncconf/pncconf.glade:65460 +#: src/emc/usr_intf/pncconf/pncconf.glade:63083 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "FF1" msgstr "电源关" -#: src/emc/usr_intf/pncconf/pncconf.glade:56214 -#: src/emc/usr_intf/pncconf/pncconf.glade:61108 -#: src/emc/usr_intf/pncconf/pncconf.glade:62011 -#: src/emc/usr_intf/pncconf/pncconf.glade:63294 -#: src/emc/usr_intf/pncconf/pncconf.glade:64197 -#: src/emc/usr_intf/pncconf/pncconf.glade:65450 +#: src/emc/usr_intf/pncconf/pncconf.glade:63096 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "FF2" +msgid "FF0" msgstr "电源关" -#: src/emc/usr_intf/pncconf/pncconf.glade:56282 +#: src/emc/usr_intf/pncconf/pncconf.glade:63143 +msgid "Deadband" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63156 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Bias" +msgstr "是" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63169 +msgid "P" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63180 +msgid "I" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63193 +msgid "D" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63258 #, fuzzy msgid "Servo Info" msgstr "用户信息" -#: src/emc/usr_intf/pncconf/pncconf.glade:56362 -#, fuzzy -msgid "Spindle Max Output:" -msgstr "输出:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63337 +msgid "3pwm Scale:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56412 -#, fuzzy -msgid "Spindle Max limit:" -msgstr "Spindle Phase B" +#: src/emc/usr_intf/pncconf/pncconf.glade:63348 +msgid "3pwm Deadtime:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56426 +#: src/emc/usr_intf/pncconf/pncconf.glade:63361 #, fuzzy -msgid "Spindle Min Limit:" -msgstr "PWM 主轴" +msgid "Quad Pulses / Rev:" +msgstr "mm / rev" -#: src/emc/usr_intf/pncconf/pncconf.glade:56456 +#: src/emc/usr_intf/pncconf/pncconf.glade:63438 msgid "" "Open Loop\n" " Test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56557 -#, fuzzy -msgid "Quad Pulses / Rev:" -msgstr "mm / rev" - -#: src/emc/usr_intf/pncconf/pncconf.glade:56572 +#: src/emc/usr_intf/pncconf/pncconf.glade:63462 #, fuzzy -msgid "Dac Max Output:" -msgstr "输出:" +msgid "Analog Min Limit:" +msgstr "PWM 主轴" -#: src/emc/usr_intf/pncconf/pncconf.glade:56586 +#: src/emc/usr_intf/pncconf/pncconf.glade:63476 #, fuzzy -msgid "Dac Output Scale:" -msgstr "输出文件:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:56599 -msgid "3pwm Deadtime:" -msgstr "" +msgid "Analog Max limit:" +msgstr "Spindle Phase B" -#: src/emc/usr_intf/pncconf/pncconf.glade:56612 -msgid "3pwm Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63490 +msgid "Analog Max Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56626 +#: src/emc/usr_intf/pncconf/pncconf.glade:63554 #, fuzzy msgid "Output Info" msgstr "输出文件" -#: src/emc/usr_intf/pncconf/pncconf.glade:56691 +#: src/emc/usr_intf/pncconf/pncconf.glade:63603 #, fuzzy -msgid "Driver Type:" -msgstr "设备类型" +msgid "Step On-Time" +msgstr "单步次数:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56735 +#: src/emc/usr_intf/pncconf/pncconf.glade:63616 #, fuzzy -msgid "Direction Setup" -msgstr "方向:" +msgid "Step Space" +msgstr "单步大小:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56748 +#: src/emc/usr_intf/pncconf/pncconf.glade:63659 #, fuzzy msgid "Direction Hold" msgstr "方向:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56791 +#: src/emc/usr_intf/pncconf/pncconf.glade:63672 #, fuzzy -msgid "Step Space" -msgstr "单步大小:" +msgid "Direction Setup" +msgstr "方向:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56804 +#: src/emc/usr_intf/pncconf/pncconf.glade:63715 #, fuzzy -msgid "Step On-Time" -msgstr "单步次数:" +msgid "Driver Type:" +msgstr "设备类型" -#: src/emc/usr_intf/pncconf/pncconf.glade:56820 +#: src/emc/usr_intf/pncconf/pncconf.glade:63748 #, fuzzy msgid "Stepper Info" msgstr "用户信息" -#: src/emc/usr_intf/pncconf/pncconf.glade:56871 +#: src/emc/usr_intf/pncconf/pncconf.glade:63800 #, fuzzy msgid "No feedback" msgstr "反馈" -#: src/emc/usr_intf/pncconf/pncconf.glade:56881 +#: src/emc/usr_intf/pncconf/pncconf.glade:63810 #, fuzzy msgid "Absolute Feedback" msgstr "反馈" -#: src/emc/usr_intf/pncconf/pncconf.glade:56895 +#: src/emc/usr_intf/pncconf/pncconf.glade:63824 #, fuzzy msgid "Incremental Feedback" msgstr "增加" -#: src/emc/usr_intf/pncconf/pncconf.glade:56909 +#: src/emc/usr_intf/pncconf/pncconf.glade:63838 #, fuzzy msgid "Incremental Encoder" msgstr "屏幕反转(&N)" -#: src/emc/usr_intf/pncconf/pncconf.glade:56921 +#: src/emc/usr_intf/pncconf/pncconf.glade:63850 #, fuzzy msgid "Hall sensors" msgstr "有风沙暴" -#: src/emc/usr_intf/pncconf/pncconf.glade:56933 +#: src/emc/usr_intf/pncconf/pncconf.glade:63862 msgid "Fanuc Red Cap " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56945 +#: src/emc/usr_intf/pncconf/pncconf.glade:63874 #, fuzzy msgid "Use encoder Index" msgstr "未使用" -#: src/emc/usr_intf/pncconf/pncconf.glade:56976 +#: src/emc/usr_intf/pncconf/pncconf.glade:63905 #, fuzzy msgid "Input Options" msgstr "方向" -#: src/emc/usr_intf/pncconf/pncconf.glade:57000 +#: src/emc/usr_intf/pncconf/pncconf.glade:63929 msgid "Digital instead of PWM outputs" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57009 +#: src/emc/usr_intf/pncconf/pncconf.glade:63938 msgid "6 outputs instead of 3 " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57021 +#: src/emc/usr_intf/pncconf/pncconf.glade:63950 msgid "Force Trapezoid Mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57033 +#: src/emc/usr_intf/pncconf/pncconf.glade:63962 msgid "Emulate feedback " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57045 +#: src/emc/usr_intf/pncconf/pncconf.glade:63974 msgid "Emulated Hall sensors" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57058 +#: src/emc/usr_intf/pncconf/pncconf.glade:63987 msgid "Emulated Fanuc Red Cap" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57085 +#: src/emc/usr_intf/pncconf/pncconf.glade:64014 #, fuzzy msgid "8i20 Max Current" msgstr "货币" -#: src/emc/usr_intf/pncconf/pncconf.glade:57119 +#: src/emc/usr_intf/pncconf/pncconf.glade:64048 #, fuzzy msgid "Output Options" msgstr "方向" -#: src/emc/usr_intf/pncconf/pncconf.glade:57153 -msgid "Poles" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57163 +#: src/emc/usr_intf/pncconf/pncconf.glade:64103 #, fuzzy -msgid "Encoder-offset" -msgstr "统一码" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57173 -msgid "Drive-offset" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57183 -msgid "output-pattern" -msgstr "" +msgid "alignment current" +msgstr "对齐" -#: src/emc/usr_intf/pncconf/pncconf.glade:57193 -#, fuzzy -msgid "Input-pattern" -msgstr "图案" +#: src/emc/usr_intf/pncconf/pncconf.glade:64113 +#, fuzzy +msgid "lead angle" +msgstr "矩形" -#: src/emc/usr_intf/pncconf/pncconf.glade:57203 +#: src/emc/usr_intf/pncconf/pncconf.glade:64213 #, fuzzy msgid "Reverse" msgstr "还原" -#: src/emc/usr_intf/pncconf/pncconf.glade:57303 +#: src/emc/usr_intf/pncconf/pncconf.glade:64223 #, fuzzy -msgid "lead angle" -msgstr "矩形" +msgid "Input-pattern" +msgstr "图案" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64233 +msgid "output-pattern" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64243 +msgid "Drive-offset" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57313 +#: src/emc/usr_intf/pncconf/pncconf.glade:64253 #, fuzzy -msgid "alignment current" -msgstr "对齐" +msgid "Encoder-offset" +msgstr "统一码" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64263 +msgid "Poles" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57354 +#: src/emc/usr_intf/pncconf/pncconf.glade:64283 #, fuzzy msgid "Configuration" msgstr "配置:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57389 -msgid "Use Brushless Motor Control" +#: src/emc/usr_intf/pncconf/pncconf.glade:64318 +msgid "Use BLDC Motor Commutation Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57425 +#: src/emc/usr_intf/pncconf/pncconf.glade:64354 #, fuzzy msgid "Scale:" msgstr "比例" -#: src/emc/usr_intf/pncconf/pncconf.glade:57446 +#: src/emc/usr_intf/pncconf/pncconf.glade:64375 #, fuzzy msgid "% " msgstr "%" -#: src/emc/usr_intf/pncconf/pncconf.glade:57466 +#: src/emc/usr_intf/pncconf/pncconf.glade:64394 +msgid "Range:" +msgstr "范围:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64419 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "RPM" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64439 #, fuzzy msgid "Use Spindle-At-Speed" msgstr "Spindle Index" -#: src/emc/usr_intf/pncconf/pncconf.glade:57491 +#: src/emc/usr_intf/pncconf/pncconf.glade:64464 #, fuzzy msgid "Filter gain:" msgstr "过滤(&F)" -#: src/emc/usr_intf/pncconf/pncconf.glade:57526 +#: src/emc/usr_intf/pncconf/pncconf.glade:64499 msgid "Spindle Display Filter Settings" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57577 -#, fuzzy -msgid "Single Input Encoder" -msgstr "屏幕反转(&N)" +#: src/emc/usr_intf/pncconf/pncconf.glade:64565 +msgid "Rapid Speed Following Error:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57631 -msgid "Invert Encoder Direction " +#: src/emc/usr_intf/pncconf/pncconf.glade:64577 +msgid "Feed Speed Following Error:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57646 +#: src/emc/usr_intf/pncconf/pncconf.glade:64591 #, fuzzy msgid "Invert Motor Direction" msgstr "扫描方向" -#: src/emc/usr_intf/pncconf/pncconf.glade:57661 -msgid "Feed Speed Following Error:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64606 +msgid "Invert Encoder Direction " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57675 -msgid "Rapid Speed Following Error:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64661 +#, fuzzy +msgid "Single Input Encoder" +msgstr "屏幕反转(&N)" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64776 +msgid "encoder Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57715 +#: src/emc/usr_intf/pncconf/pncconf.glade:64801 +#, fuzzy +msgid "Stepper Scale:" +msgstr "单步大小:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64831 #, fuzzy msgid "" "Calculate\n" "Scale" msgstr "计算" -#: src/emc/usr_intf/pncconf/pncconf.glade:57744 -#, fuzzy -msgid "Stepper Scale:" -msgstr "单步大小:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57771 -msgid "encoder Scale:" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57928 +#: src/emc/usr_intf/pncconf/pncconf.glade:64901 #, fuzzy msgid "Test / Tune Axis" msgstr "测试本轴" -#: src/emc/usr_intf/pncconf/pncconf.glade:58235 -msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:58251 -#, fuzzy -msgid "Home Search Velocity:" -msgstr "找零速度:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64943 +msgid "X Axis Configuration" +msgstr "X 轴配置" -#: src/emc/usr_intf/pncconf/pncconf.glade:58266 -msgid "Home Switch location (Offset from machine zero Origin):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65155 +msgid "" +"NO\n" +"YES" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58310 -msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " +#: src/emc/usr_intf/pncconf/pncconf.glade:65171 +msgid "Use Encoder Index For Home:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58326 -msgid "Home Position location (offset from machine zero Origin):" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65212 +#, fuzzy +msgid "Home Final Velocity:" +msgstr "找零速度:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58355 -msgid "Use Backlash Compensation:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65222 +msgid "" +"Same\n" +"Opposite" msgstr "" +"相同\n" +"相对" -#: src/emc/usr_intf/pncconf/pncconf.glade:58369 +#: src/emc/usr_intf/pncconf/pncconf.glade:65238 #, fuzzy -msgid "Use Compensation File:" -msgstr "操作失败。" +msgid "Home Latch Direction:" +msgstr "回零方向:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58412 +#: src/emc/usr_intf/pncconf/pncconf.glade:65251 msgid "" -"Type 1\n" -"Type 2" +"Towards Negative limit\n" +"Towards Positive limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58427 +#: src/emc/usr_intf/pncconf/pncconf.glade:65267 #, fuzzy -msgid "filename:" -msgstr "文件名:" +msgid "Home Search Direction:" +msgstr "回零方向:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58455 +#: src/emc/usr_intf/pncconf/pncconf.glade:65309 #, fuzzy msgid "Home latch Velocity:" msgstr "找零速度:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58494 +#: src/emc/usr_intf/pncconf/pncconf.glade:65334 #, fuzzy -msgid "Home Search Direction:" -msgstr "回零方向:" +msgid "filename:" +msgstr "文件名:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58507 +#: src/emc/usr_intf/pncconf/pncconf.glade:65347 msgid "" -"Towards Negative limit\n" -"Towards Positive limit" +"Type 1\n" +"Type 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58523 -#, fuzzy -msgid "Home Latch Direction:" -msgstr "回零方向:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:58552 +#: src/emc/usr_intf/pncconf/pncconf.glade:65392 #, fuzzy -msgid "Home Final Velocity:" -msgstr "找零速度:" +msgid "Use Compensation File:" +msgstr "操作失败。" -#: src/emc/usr_intf/pncconf/pncconf.glade:58591 -msgid "Use Encoder Index For Home:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65406 +msgid "Use Backlash Compensation:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58603 -msgid "" -"NO\n" -"YES" +#: src/emc/usr_intf/pncconf/pncconf.glade:65433 +msgid "Home Position location (offset from machine zero Origin):" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58628 -#, fuzzy -msgid "Advanced Options" -msgstr "高级选项" +#: src/emc/usr_intf/pncconf/pncconf.glade:65449 +msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58712 -#, fuzzy -msgid "Cmd 1" -msgstr "自定义 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65493 +msgid "Home Switch location (Offset from machine zero Origin):" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58718 +#: src/emc/usr_intf/pncconf/pncconf.glade:65509 #, fuzzy -msgid "Cmd 2" -msgstr "自定义 2" +msgid "Home Search Velocity:" +msgstr "找零速度:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58728 -#, fuzzy -msgid "Cmd 3" -msgstr "自定义 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65524 +msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58738 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Cmd 4" -msgstr "自定义 4" +msgid "Advanced Options" +msgstr "高级选项" -#: src/emc/usr_intf/pncconf/pncconf.glade:58748 -msgid "Cmd 5" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 15" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58874 -msgid "Cmd 6" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 14" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58884 -msgid "Cmd 7" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 13" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58896 -msgid "Cmd 8" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 12" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58908 -msgid "Cmd 9" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 11" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58920 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Cmd 10" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58990 -msgid "Cmd 11" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 9" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59000 -msgid "Cmd 12" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59012 -msgid "Cmd 13" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 7" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59024 -msgid "Cmd 14" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 6" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59036 -msgid "Cmd 15" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 5" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59053 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Cmd 4" +msgstr "自定义 4" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Cmd 3" +msgstr "自定义 3" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Cmd 2" +msgstr "自定义 2" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Cmd 1" +msgstr "自定义 1" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Include Halui user interface component / commands" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59127 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Number of digital (bit) in pins:" msgstr "地雷数量:" -#: src/emc/usr_intf/pncconf/pncconf.glade:59138 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Number of digital (bit) out pins:" msgstr "列数:" -#: src/emc/usr_intf/pncconf/pncconf.glade:59308 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid " Number of Internal bit memory:" +msgstr "列数:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of Internal word memory:" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Setup number of external pins" msgstr "地雷数量:" -#: src/emc/usr_intf/pncconf/pncconf.glade:59360 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Z Auto Touch off program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59505 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "HAL Component Page" msgstr "组件" -#: src/emc/usr_intf/pncconf/pncconf.glade:59648 -msgid "lowpass" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Add HAL components with this page." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59675 -msgid "mux16" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Component" +msgstr "字体" -#: src/emc/usr_intf/pncconf/pncconf.glade:59702 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "scale" -msgstr "转义" +msgid "number of components" +msgstr "对手数量:" -#: src/emc/usr_intf/pncconf/pncconf.glade:59728 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "PID" msgstr "PID" -#: src/emc/usr_intf/pncconf/pncconf.glade:59739 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "number of components" -msgstr "对手数量:" +msgid "scale" +msgstr "转义" -#: src/emc/usr_intf/pncconf/pncconf.glade:59767 -#, fuzzy -msgid "Component" -msgstr "字体" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mux16" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59794 -msgid "Add HAL components with this page." +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "lowpass" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59844 -#, fuzzy -msgid "Thread Command" -msgstr "删除命令" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Base Thread" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59854 -msgid "Thread Speed" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Servo Thread" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59906 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Load Command " msgstr "命令(&D):" -#: src/emc/usr_intf/pncconf/pncconf.glade:59952 -msgid "Servo Thread" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Thread Speed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59965 -msgid "Base Thread" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Thread Command" +msgstr "删除命令" -#: src/emc/usr_intf/pncconf/pncconf.glade:59979 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Custom Components Commands" msgstr "字体" -#: src/emc/usr_intf/pncconf/pncconf.glade:60031 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Machine configuration complete" +msgstr "机床配置完成" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "" +"All the necessary information has now been gathered. Click \"Apply\" to " +"write your configuration files to disk.\n" +"\n" +"If you are using the 5i25 card with daugther boards or are using SSerial " +"based daughter cards, the cards must be connected and/or field power " +"supplied to the 5i25 \n" +"for the HAL pins to be available. If the config is expecting the pins and " +"they are not there, linuxcnc will error.\n" +"If you experience lockups while running LinuxCNC, you will need to decrease " +"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC, first verify that you " +"entered the proper timings for your stepper drivers. If that does not fix " +"the problem, then run a more thorough latency test as described on the " +"linuxcnc.org wiki:\n" +" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" +"\n" +"If you experience the \"Unexpected Realtime Delay\" message, run a more " +"thorough latency test as described on the linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" +msgstr "" +"All the necessary information has now been gathered. Click \"Apply\" to " +"write your configuration files to disk.\n" +"If you experience lockups while running emc, you will need to decrease the " +"maximum velocity which will have the effect of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running emc, first verify that you " +"entered the proper timings for your stepper drivers. If that does not fix " +"the problem, then run a more thorough latency test as described on the " +"linuxcnc.org wiki:\n" +" http;//wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting\n" +"\n" +"If you experience the \"Unexpected Realtime Delay\" message, run a more " +"thorough latency test as described on the linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?TroubleShooting" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" " Motor Encoder Test\n" "Warning limits switches \n" " Will not be obeyed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60067 -#: src/emc/usr_intf/pncconf/pncconf.glade:60766 -#: src/emc/usr_intf/pncconf/pncconf.glade:61859 -#: src/emc/usr_intf/pncconf/pncconf.glade:62952 -#: src/emc/usr_intf/pncconf/pncconf.glade:64045 -#: src/emc/usr_intf/pncconf/pncconf.glade:65025 -#, fuzzy -msgid "Invert Motor" -msgstr "插入点" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Slow Dac Speed" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Fast Dac Speed" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60083 -#: src/emc/usr_intf/pncconf/pncconf.glade:60782 -#: src/emc/usr_intf/pncconf/pncconf.glade:61875 -#: src/emc/usr_intf/pncconf/pncconf.glade:62968 -#: src/emc/usr_intf/pncconf/pncconf.glade:64061 -#: src/emc/usr_intf/pncconf/pncconf.glade:65040 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Invert Encoder" -msgstr "屏幕反转(&N)" +msgid "Dac Offset:" +msgstr "偏移:%s" -#: src/emc/usr_intf/pncconf/pncconf.glade:60100 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Enable Amp" -msgstr "已启用" +msgid "Encoder Scale:" +msgstr "统一码" -#: src/emc/usr_intf/pncconf/pncconf.glade:60114 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Reset Encoder" msgstr "竖笛" -#: src/emc/usr_intf/pncconf/pncconf.glade:60142 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Encoder Scale:" -msgstr "统一码" +msgid "Enable Amp" +msgstr "已启用" -#: src/emc/usr_intf/pncconf/pncconf.glade:60153 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Dac Offset:" -msgstr "偏移:%s" +msgid "Invert Encoder" +msgstr "屏幕反转(&N)" -#: src/emc/usr_intf/pncconf/pncconf.glade:60243 -msgid "Fast Dac Speed" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Invert Motor" +msgstr "插入点" -#: src/emc/usr_intf/pncconf/pncconf.glade:60258 -msgid "Slow Dac Speed" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"±\n" +"+\n" +"-\n" msgstr "" +"±\n" +"+\n" +"-\n" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Seconds" +msgstr "秒" -#: src/emc/usr_intf/pncconf/pncconf.glade:60407 -#: src/emc/usr_intf/pncconf/pncconf.glade:61503 -#: src/emc/usr_intf/pncconf/pncconf.glade:62596 -#: src/emc/usr_intf/pncconf/pncconf.glade:63689 -#: src/emc/usr_intf/pncconf/pncconf.glade:64788 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "mm/minute" -msgstr "分" +msgid "Enable" +msgstr "已启用" -#: src/emc/usr_intf/pncconf/pncconf.glade:60441 -#: src/emc/usr_intf/pncconf/pncconf.glade:61536 -#: src/emc/usr_intf/pncconf/pncconf.glade:62629 -#: src/emc/usr_intf/pncconf/pncconf.glade:63722 -#: src/emc/usr_intf/pncconf/pncconf.glade:64821 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "mm/minute^2" msgstr "分" -#: src/emc/usr_intf/pncconf/pncconf.glade:60550 -#: src/emc/usr_intf/pncconf/pncconf.glade:61644 -#: src/emc/usr_intf/pncconf/pncconf.glade:62737 -#: src/emc/usr_intf/pncconf/pncconf.glade:64930 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Enable" -msgstr "已启用" +msgid "mm/minute" +msgstr "分" -#: src/emc/usr_intf/pncconf/pncconf.glade:60600 -#: src/emc/usr_intf/pncconf/pncconf.glade:61693 -#: src/emc/usr_intf/pncconf/pncconf.glade:62786 -#: src/emc/usr_intf/pncconf/pncconf.glade:63879 -#: src/emc/usr_intf/pncconf/pncconf.glade:65139 -msgid "Seconds" -msgstr "秒" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Current" +msgstr "货币" -#: src/emc/usr_intf/pncconf/pncconf.glade:60907 -#: src/emc/usr_intf/pncconf/pncconf.glade:62212 -#: src/emc/usr_intf/pncconf/pncconf.glade:63093 -#: src/emc/usr_intf/pncconf/pncconf.glade:64398 -#: src/emc/usr_intf/pncconf/pncconf.glade:65255 -msgid "DeadBand" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "P:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61089 -#: src/emc/usr_intf/pncconf/pncconf.glade:61380 -#: src/emc/usr_intf/pncconf/pncconf.glade:62030 -#: src/emc/usr_intf/pncconf/pncconf.glade:62401 -#: src/emc/usr_intf/pncconf/pncconf.glade:63275 -#: src/emc/usr_intf/pncconf/pncconf.glade:63562 -#: src/emc/usr_intf/pncconf/pncconf.glade:64216 -#: src/emc/usr_intf/pncconf/pncconf.glade:64587 -#: src/emc/usr_intf/pncconf/pncconf.glade:65431 -#: src/emc/usr_intf/pncconf/pncconf.glade:65718 -msgid "Original" -msgstr "原始" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "I:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61138 -#: src/emc/usr_intf/pncconf/pncconf.glade:61981 -#: src/emc/usr_intf/pncconf/pncconf.glade:63324 -#: src/emc/usr_intf/pncconf/pncconf.glade:64167 -#: src/emc/usr_intf/pncconf/pncconf.glade:65480 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "D:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61148 -#: src/emc/usr_intf/pncconf/pncconf.glade:61971 -#: src/emc/usr_intf/pncconf/pncconf.glade:63334 -#: src/emc/usr_intf/pncconf/pncconf.glade:64157 -#: src/emc/usr_intf/pncconf/pncconf.glade:65490 -msgid "I:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Original" +msgstr "原始" -#: src/emc/usr_intf/pncconf/pncconf.glade:61158 -#: src/emc/usr_intf/pncconf/pncconf.glade:61961 -#: src/emc/usr_intf/pncconf/pncconf.glade:63344 -#: src/emc/usr_intf/pncconf/pncconf.glade:64147 -#: src/emc/usr_intf/pncconf/pncconf.glade:65500 -msgid "P:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "DeadBand" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61168 -#: src/emc/usr_intf/pncconf/pncconf.glade:61392 -#: src/emc/usr_intf/pncconf/pncconf.glade:61951 -#: src/emc/usr_intf/pncconf/pncconf.glade:62389 -#: src/emc/usr_intf/pncconf/pncconf.glade:63354 -#: src/emc/usr_intf/pncconf/pncconf.glade:63574 -#: src/emc/usr_intf/pncconf/pncconf.glade:64137 -#: src/emc/usr_intf/pncconf/pncconf.glade:64575 -#: src/emc/usr_intf/pncconf/pncconf.glade:65510 -#: src/emc/usr_intf/pncconf/pncconf.glade:65730 -#, fuzzy -msgid "Current" -msgstr "货币" - -#: src/emc/usr_intf/pncconf/pncconf.glade:61185 -#: src/emc/usr_intf/pncconf/pncconf.glade:62278 -#: src/emc/usr_intf/pncconf/pncconf.glade:63371 -#: src/emc/usr_intf/pncconf/pncconf.glade:64464 -#: src/emc/usr_intf/pncconf/pncconf.glade:65527 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "PID Tuning" msgstr "方向" -#: src/emc/usr_intf/pncconf/pncconf.glade:61370 -#: src/emc/usr_intf/pncconf/pncconf.glade:62413 -#: src/emc/usr_intf/pncconf/pncconf.glade:63552 -#: src/emc/usr_intf/pncconf/pncconf.glade:64599 -#: src/emc/usr_intf/pncconf/pncconf.glade:65708 -#, fuzzy -msgid "Direction Setup:" -msgstr "方向:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:61404 -#: src/emc/usr_intf/pncconf/pncconf.glade:62379 -#: src/emc/usr_intf/pncconf/pncconf.glade:63586 -#: src/emc/usr_intf/pncconf/pncconf.glade:64565 -#: src/emc/usr_intf/pncconf/pncconf.glade:65742 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Direction Hold:" -msgstr "方向:" +msgid "Step Time:" +msgstr "单步次数:" -#: src/emc/usr_intf/pncconf/pncconf.glade:61414 -#: src/emc/usr_intf/pncconf/pncconf.glade:62369 -#: src/emc/usr_intf/pncconf/pncconf.glade:63596 -#: src/emc/usr_intf/pncconf/pncconf.glade:64555 -#: src/emc/usr_intf/pncconf/pncconf.glade:65752 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Step Space:" msgstr "单步大小:" -#: src/emc/usr_intf/pncconf/pncconf.glade:61424 -#: src/emc/usr_intf/pncconf/pncconf.glade:62359 -#: src/emc/usr_intf/pncconf/pncconf.glade:63606 -#: src/emc/usr_intf/pncconf/pncconf.glade:64545 -#: src/emc/usr_intf/pncconf/pncconf.glade:65762 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Step Time:" -msgstr "单步次数:" +msgid "Direction Hold:" +msgstr "方向:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Direction Setup:" +msgstr "方向:" -#: src/emc/usr_intf/pncconf/pncconf.glade:61439 -#: src/emc/usr_intf/pncconf/pncconf.glade:62528 -#: src/emc/usr_intf/pncconf/pncconf.glade:63621 -#: src/emc/usr_intf/pncconf/pncconf.glade:64714 -#: src/emc/usr_intf/pncconf/pncconf.glade:65777 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Step Timing" msgstr "单步次数:" -#: src/emc/usr_intf/pncconf/pncconf.glade:63830 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "enable" msgstr "已启用" -#: src/emc/usr_intf/pncconf/pncconf.glade:65798 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "spindle" msgstr "主轴:" -#: src/emc/usr_intf/pncconf/pncconf.glade:65881 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy msgid "Help Page" msgstr "第一页" -#: src/emc/usr_intf/pncconf/pncconf.glade:65911 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" "X axis:\n" "Total Travel = 10\n" @@ -12289,1743 +14868,2824 @@ msgid "" "possible" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65951 -msgid "Mill" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Mill" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"Total Travel = 4 + 6 = 10\n" +"Z Home Offset = Origin to Home Switch distance = 10\n" +"Z Neg Travel Distance = Origin to neg limit distance = 0\n" +"Z Pos Travel Distance = Total Travel - neg travel distance = 10\n" +"Z Home Position = Origin to Home Position distance = 4\n" +"\n" +"X axis would be similar but not shown fully for clarity.\n" +"This is just a sample reference other switch combinations are\n" +"possible." +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Lathe" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Diagram" +msgstr "对角线" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Output" +msgstr "输出(&O)" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"\t\t\t\tPNCconf - Point aNd Click CONFigurator\n" +"PNCconf is a configuration program for Linuxcnc.\n" +"It configures machines using Mesa I/O cards.\n" +"It configures servo,stepper or closed loop stepper machines.\n" +"It supports some of Mesa's sserial cards.\n" +"It will forever be a work in progress as Linuxcnc changes.\n" +"\n" +"Many thanks To:\n" +"Jeff Eppler - PNCconf is based on stepconf - Jeff's creation. Jeff also has " +"helped with techincal difficulties.\n" +"Big John T - John drew the original machine illustrations. Testing and " +"suggestions.\n" +"Peter Wallace - Technical questions on Mesa's I/O cards. Supplied sample " +"equipment to test with.\n" +"Andy Pugh - suggestions, questions answered and many pin name changes :) \n" +"Dave Armstrong - testing and suggestions expecially with resolvers.\n" +"Everyone who gave a bug report ! I cannot test everything thoughly enough so " +"reports help.\n" +"\n" +"Beta 1 version" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "TPI " +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Pulley teeth (motor:Leadscrew):" +msgstr "_Pulley teeth (Motor:Leadscrew):" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Worm turn ratio (Input:Outputl)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Microstep Multiplication Factor:" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Leadscrew Metric Pitch" +msgstr "丝杆螺距(_L):" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Motor steps per revolution:" +msgstr "_Motor steps per revolution:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Step Motor Scale" +msgstr "界面" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "TPI" +msgstr "PID" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "X 4 = Pulses/Rev" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Encoder lines per revolution:" +msgstr "旋转柱面:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Pulley teeth (encoder:Leadscrew):" +msgstr "_Pulley teeth (Motor:Leadscrew):" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Encoder Scale" +msgstr "界面" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " " +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "encoder pulses per unit:" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "motor steps per unit:" +msgstr "_Motor steps per revolution:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Calculated Scale" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / encoder pulse" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Resolution:" +msgstr "分辨率:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Distance to acheave max speed:" +msgstr "加速到最高速度的时间(_L):" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "sec" +msgstr "秒" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Khz" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Calculated Axis SCALE:" +msgstr "比例" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Motor RPM at max speed:" +msgstr "加速到最高速度的时间(_L):" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "xmaxrpm" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Motion Data" +msgstr "位置:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "gtk-cancel" +msgstr "取消" + +#: src/emc/usr_intf/gscreen/gscreen.py:349 +#, python-format +msgid "adding import dir %s" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:355 +#, python-format +msgid "module '%s' imported OK" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:452 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Using CUSTOM glade file from %s ****" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:457 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Using SKIN glade file from %s ****" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:460 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: using STOCK glade file from: %s ****" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:466 +#, python-format +msgid "**** Gscreen GLADE ERROR: With main screen xml file: %s" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:471 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Screen 2 -Using CUSTOM glade file from %s ****" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:477 +#, python-format +msgid "**** Gscreen GLADE ERROR: With screen 2's xml file: %s" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:479 +msgid "" +"\n" +"**** GSCREEN INFO: No Screen 2 glade file present" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:519 +msgid "No UNITS entry found in [TRAJ] or [AXIS_0] of INI file" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:532 +msgid "" +"*** Gscreen ERROR: Asking for a HAL component using a name that already " +"exists." +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:585 +msgid "No default jog increments entry found in [DISPLAY] of INI file" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:598 +msgid "No default angular jog increments entry found in [DISPLAY] of INI file" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:607 +#, python-format +msgid "" +"No DEFAULT_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:618 +#, python-format +msgid "" +"No MAX_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:625 +msgid "No MAX_VELOCITY found in [TRAJ] of the INI file" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:638 +#, python-format +msgid "" +"No DEFAULT_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65970 +#: src/emc/usr_intf/gscreen/gscreen.py:649 +#, python-format msgid "" -"Total Travel = 4 + 6 = 10\n" -"Z Home Offset = Origin to Home Switch distance = 10\n" -"Z Neg Travel Distance = Origin to neg limit distance = 0\n" -"Z Pos Travel Distance = Total Travel - neg travel distance = 10\n" -"Z Home Position = Origin to Home Position distance = 4\n" -"\n" -"X axis would be similar but not shown fully for clarity.\n" -"This is just a sample reference other switch combinations are\n" -"possible." +"No MAX_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65994 -msgid "Lathe" +#: src/emc/usr_intf/gscreen/gscreen.py:657 +msgid "No MAX_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66010 -#, fuzzy -msgid "Diagram" -msgstr "对角线" +#: src/emc/usr_intf/gscreen/gscreen.py:663 +msgid "No MIN_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66043 -#, fuzzy -msgid "Output" -msgstr "输出(&O)" +#: src/emc/usr_intf/gscreen/gscreen.py:669 +msgid "No MAX_FEED_OVERRIDE entry found in [DISPLAY] of INI file" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66123 -#, fuzzy -msgid "Motor steps per revolution:" -msgstr "_Motor steps per revolution:" +#: src/emc/usr_intf/gscreen/gscreen.py:674 +msgid "This screen will be orientated for Lathe options" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66173 -#: src/emc/usr_intf/pncconf/pncconf.glade:66459 -#, fuzzy -msgid "Leadscrew Metric Pitch" -msgstr "丝杆螺距(_L):" +#: src/emc/usr_intf/gscreen/gscreen.py:727 +msgid "CYCLE_TIME in [DISPLAY] of INI file is missing: defaulting to 100ms" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66186 -msgid "Microstep Multiplication Factor:" +#: src/emc/usr_intf/gscreen/gscreen.py:730 +msgid "CYCLE_TIME in [DISPLAY] of INI file is too small: defaulting to 100ms" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66199 -#: src/emc/usr_intf/pncconf/pncconf.glade:66481 -msgid "Worm turn ratio (Input:Outputl)" +#: src/emc/usr_intf/gscreen/gscreen.py:732 +#, python-format +msgid "timeout %d" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66212 -#, fuzzy -msgid "Pulley teeth (motor:Leadscrew):" -msgstr "_Pulley teeth (Motor:Leadscrew):" +#: src/emc/usr_intf/gscreen/gscreen.py:1001 +msgid "" +"**** WARNING GSCREEN: could not understand the window geometry info in " +"hidden preference file" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66356 -msgid "TPI " +#: src/emc/usr_intf/gscreen/gscreen.py:1089 +msgid "Control powered up and initialized" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1264 +msgid "Cycle start pressed in AUTO mode" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1267 +msgid "Cycle start pressed in MDI mode" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1290 +#, python-format +msgid "Please change to tool # %s, then click OK." +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1291 +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +#: src/emc/usr_intf/gscreen/gscreen.py:1789 +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2849 +msgid "INFO:" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +msgid "Can't start spindle manually while MDI busy" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +msgid "can't start spindle manually in Auto mode" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +msgid "No direction selected for spindle" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66372 +#: src/emc/usr_intf/gscreen/gscreen.py:1331 +#: src/emc/usr_intf/gscreen/gscreen.py:1333 #, fuzzy -msgid "Step Motor Scale" -msgstr "界面" +msgid "Spindle Speed Preset Entry" +msgstr "主轴转速(RPM)" -#: src/emc/usr_intf/pncconf/pncconf.glade:66472 +#: src/emc/usr_intf/gscreen/gscreen.py:1362 +#: src/emc/usr_intf/gscreen/gscreen.py:1367 #, fuzzy -msgid "Pulley teeth (encoder:Leadscrew):" -msgstr "_Pulley teeth (Motor:Leadscrew):" +msgid "Manual Tool Index Entry" +msgstr "手动换刀" + +#: src/emc/usr_intf/gscreen/gscreen.py:1489 +msgid "Entry dialog" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66537 +#: src/emc/usr_intf/gscreen/gscreen.py:1616 #, fuzzy -msgid "Encoder lines per revolution:" -msgstr "旋转柱面:" +msgid "Classicladder realtime component not detected" +msgstr "高级选项" -#: src/emc/usr_intf/pncconf/pncconf.glade:66547 -msgid "X 4 = Pulses/Rev" +#: src/emc/usr_intf/gscreen/gscreen.py:1617 +msgid "ladder not available - is the realtime component loaded?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66651 +#: src/emc/usr_intf/gscreen/gscreen.py:1691 #, fuzzy -msgid "TPI" -msgstr "PID" +msgid "Override Entry" +msgstr "超程" -#: src/emc/usr_intf/pncconf/pncconf.glade:66667 +#: src/emc/usr_intf/gscreen/gscreen.py:1719 #, fuzzy -msgid "Encoder Scale" -msgstr "界面" +msgid "Machine powered on" +msgstr "机床" -#: src/emc/usr_intf/pncconf/pncconf.glade:66711 +#: src/emc/usr_intf/gscreen/gscreen.py:1724 #, fuzzy -msgid "motor steps per unit:" -msgstr "_Motor steps per revolution:" +msgid "Machine Estopped!" +msgstr "边距位置" -#: src/emc/usr_intf/pncconf/pncconf.glade:66721 -msgid "encoder pulses per unit:" +#: src/emc/usr_intf/gscreen/gscreen.py:1727 +msgid "Calculator" +msgstr "计算器" + +#: src/emc/usr_intf/gscreen/gscreen.py:1857 +#, python-format +msgid "Axes %s are homed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66756 -msgid " " +#: src/emc/usr_intf/gscreen/gscreen.py:1864 +msgid "All the axes have been homed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66770 -msgid "Calculated Scale" +#: src/emc/usr_intf/gscreen/gscreen.py:1874 +#, python-format +msgid "There are unhomed axes: %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66848 -msgid "xmaxrpm" +#: src/emc/usr_intf/gscreen/gscreen.py:1879 +#, fuzzy, python-format +msgid "Program loaded: %s" +msgstr "读取文件“%s”出错:%s" + +#: src/emc/usr_intf/gscreen/gscreen.py:1977 +#, fuzzy +msgid "Manual Spindle Control" +msgstr "Spindle Index" + +#: src/emc/usr_intf/gscreen/gscreen.py:2034 +msgid "Keyboard" +msgstr "键盘" + +#: src/emc/usr_intf/gscreen/gscreen.py:2067 +msgid "Error with launching 'Onboard' on-screen keyboard program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66864 -msgid "RPM" +#: src/emc/usr_intf/gscreen/gscreen.py:2215 +#, python-format +msgid "**** GSCREEN INFO: Overriding internal signal call to %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66877 +#: src/emc/usr_intf/gscreen/gscreen.py:2643 #, fuzzy -msgid "Motor RPM at max speed:" -msgstr "加速到最高速度的时间(_L):" +msgid " Zero Origin" +msgstr "原始" -#: src/emc/usr_intf/pncconf/pncconf.glade:66921 +#: src/emc/usr_intf/gscreen/gscreen.py:2644 #, fuzzy -msgid "Calculated Axis SCALE:" -msgstr "比例" +msgid "Offset Origin" +msgstr "用户信息" -#: src/emc/usr_intf/pncconf/pncconf.glade:66934 -msgid "Khz" +#: src/emc/usr_intf/gscreen/gscreen.py:2659 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing text or type) " +"in INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66949 -msgid "sec" -msgstr "秒" +#: src/emc/usr_intf/gscreen/gscreen.py:2661 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing pinname) in " +"INI File [DISPLAY] section" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67049 -#, fuzzy -msgid "Distance to acheave max speed:" -msgstr "加速到最高速度的时间(_L):" +#: src/emc/usr_intf/gscreen/gscreen.py:2663 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing boldtext) in " +"INI File [DISPLAY] section" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67077 -msgid "Resolution:" -msgstr "分辨率:" +#: src/emc/usr_intf/gscreen/gscreen.py:2667 +#, python-format +msgid "" +"**** Gscreen ERROR: invalid message type (%s)in INI File [DISPLAY] section" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67105 -msgid "mm / encoder pulse" +#: src/emc/usr_intf/gscreen/gscreen.py:2699 +msgid "Dialog error - Is the dialog handler missing from the handler file?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67123 +#: src/emc/usr_intf/gscreen/gscreen.py:2701 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3540 #, fuzzy -msgid "Motion Data" -msgstr "位置:" +msgid "Manual Toolchange" +msgstr "手动换刀" -#: src/emc/usr_intf/pncconf/pncconf.glade:67151 +#: src/emc/usr_intf/gscreen/gscreen.py:2703 +#: src/emc/usr_intf/gmoccapy/dialogs.py:94 +#: src/emc/usr_intf/gmoccapy/dialogs.py:107 +#: src/emc/usr_intf/gmoccapy/dialogs.py:119 #, fuzzy -msgid "gtk-cancel" -msgstr "取消" +msgid "Operator Message" +msgstr "错误消息" -#: src/emc/task/emctaskmain.cc:467 src/emc/task/emctaskmain.cc:500 -#, fuzzy, c-format -msgid "%s exceeds +X limit" -msgstr "程序超出机床极限。" +#: src/emc/usr_intf/gscreen/gscreen.py:2737 +#: src/emc/usr_intf/gscreen/gscreen.py:2741 +#: src/emc/usr_intf/gmoccapy/dialogs.py:155 +#: src/emc/usr_intf/gmoccapy/dialogs.py:159 +#, fuzzy +msgid "Restart Entry" +msgstr "重新开始" -#: src/emc/task/emctaskmain.cc:472 src/emc/task/emctaskmain.cc:505 -#, fuzzy, c-format -msgid "%s exceeds +Y limit" -msgstr "程序超出机床极限。" +#: src/emc/usr_intf/gscreen/gscreen.py:2752 +#: src/emc/usr_intf/gmoccapy/dialogs.py:173 +#, fuzzy +msgid "Enter" +msgstr "中" -#: src/emc/task/emctaskmain.cc:477 src/emc/task/emctaskmain.cc:510 -#, fuzzy, c-format -msgid "%s exceeds +Z limit" -msgstr "程序超出机床极限。" +#: src/emc/usr_intf/gscreen/gscreen.py:2774 +#, python-format +msgid "Ready to Restart program from line %d" +msgstr "" -#: src/emc/task/emctaskmain.cc:482 src/emc/task/emctaskmain.cc:515 -#, fuzzy, c-format -msgid "%s exceeds -X limit" -msgstr "程序超出机床极限。" +#: src/emc/usr_intf/gscreen/gscreen.py:2807 +#, fuzzy +msgid "Invalid embeded tab configuration" +msgstr "包含制定的 HAL 配置(_H)" -#: src/emc/task/emctaskmain.cc:487 src/emc/task/emctaskmain.cc:520 -#, fuzzy, c-format -msgid "%s exceeds -Y limit" -msgstr "程序超出机床极限。" +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +msgid "Can't jog multiple axis" +msgstr "" -#: src/emc/task/emctaskmain.cc:492 src/emc/task/emctaskmain.cc:525 -#, fuzzy, c-format -msgid "%s exceeds -Z limit" -msgstr "程序超出机床极限。" +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +#, fuzzy +msgid "No axis selected to jog" +msgstr "没有选择音轨" -#: src/emc/task/emctaskmain.cc:853 -#, c-format -msgid "" -"command (%s) cannot be executed until the machine is out of E-stop and " -"turned on" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +#, fuzzy +msgid "No axis selected to move" +msgstr "没有选择音轨" -#: src/emc/task/emctaskmain.cc:973 -#, c-format -msgid "can't do that (%s) in manual mode" +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +msgid "Can't home multiple axis - select HOME ALL instead" msgstr "" -#: src/emc/task/emctaskmain.cc:1072 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter idle" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +#, fuzzy +msgid "No axis selected to home" +msgstr "没有选择音轨" -#: src/emc/task/emctaskmain.cc:1132 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter reading" +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +msgid "Can't unhome multiple axis" msgstr "" -#: src/emc/task/emctaskmain.cc:1216 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter paused" +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +msgid "No axis selected to unhome" msgstr "" -#: src/emc/task/emctaskmain.cc:1278 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter waiting" +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +msgid "No axis selected for origin zeroing" msgstr "" -#: src/emc/task/emctaskmain.cc:1370 -#, c-format -msgid "can't do that (%s) in MDI mode" +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +msgid "No axis selected for origin touch-off" msgstr "" -#: src/emc/task/emctaskmain.cc:2015 -msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +msgid "Can't tool touch-off multiple axes" msgstr "" -#: src/emc/task/emctaskmain.cc:2084 -msgid "Can't issue MDI command when not homed" +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +msgid "No axis selected for tool touch-off" msgstr "" -#: src/emc/task/emctaskmain.cc:2089 -msgid "Must be in MDI mode to issue MDI command" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#: src/emc/usr_intf/gscreen/gscreen.py:3375 +#, fuzzy +msgid "Error Message" +msgstr "错误消息" -#: src/emc/task/emctaskmain.cc:2151 -msgid "Can't run a program when not homed" +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#, python-format +msgid "Tool editor error - is the %s editor available?" msgstr "" -#: src/emc/rs274ngc/interp_arc.cc:108 src/emc/rs274ngc/rs274ngc_return.hh:160 +#: src/emc/usr_intf/gscreen/gscreen.py:3377 +#: src/emc/usr_intf/gscreen/gscreen.py:3379 #, fuzzy -msgid "Zero radius arc" -msgstr "内圈半径:" +msgid "Message" +msgstr "信息(&M):" -#: src/emc/rs274ngc/interp_arc.cc:112 src/emc/rs274ngc/interp_arc.cc:279 -#, c-format -msgid "" -"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " -"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " -"rel_err=%.4f%%" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:3409 +#, python-format +msgid "%d RPM" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:48 +#: src/emc/usr_intf/gscreen/gscreen.glade:59 +#: src/emc/usr_intf/gscreen/gscreen.glade:135 +#: src/emc/usr_intf/gscreen/gscreen.glade:176 +#: src/emc/usr_intf/gscreen/gscreen.glade:187 +#: src/emc/usr_intf/gscreen/gscreen.glade:264 +#: src/emc/usr_intf/gscreen/gscreen.glade:306 +#: src/emc/usr_intf/gscreen/gscreen.glade:317 +#: src/emc/usr_intf/gscreen/gscreen.glade:393 +#: src/emc/usr_intf/gscreen/gscreen.glade:434 +#: src/emc/usr_intf/gscreen/gscreen.glade:445 +#: src/emc/usr_intf/gscreen/gscreen.glade:521 +#: src/emc/usr_intf/gscreen/gscreen.glade:562 +#: src/emc/usr_intf/gscreen/gscreen.glade:573 +#: src/emc/usr_intf/gscreen/gscreen.glade:649 +#: src/emc/usr_intf/gscreen/gscreen.glade:690 +#: src/emc/usr_intf/gscreen/gscreen.glade:701 +#: src/emc/usr_intf/gscreen/gscreen.glade:777 +#: src/emc/usr_intf/gscreen/gscreen.glade:818 +#: src/emc/usr_intf/gscreen/gscreen.glade:829 +#: src/emc/usr_intf/gscreen/gscreen.glade:905 +#: src/emc/usr_intf/gscreen/gscreen.glade:946 +#: src/emc/usr_intf/gscreen/gscreen.glade:957 +#: src/emc/usr_intf/gscreen/gscreen.glade:1033 +#: src/emc/usr_intf/gscreen/gscreen.glade:1074 +#: src/emc/usr_intf/gscreen/gscreen.glade:1085 +#: src/emc/usr_intf/gscreen/gscreen.glade:1161 +msgid "0000.0000" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:73 +#: src/emc/usr_intf/gscreen/gscreen.glade:201 +#: src/emc/usr_intf/gscreen/gscreen.glade:331 +#: src/emc/usr_intf/gscreen/gscreen.glade:459 +#: src/emc/usr_intf/gscreen/gscreen.glade:587 +#: src/emc/usr_intf/gscreen/gscreen.glade:715 +#: src/emc/usr_intf/gscreen/gscreen.glade:843 +#: src/emc/usr_intf/gscreen/gscreen.glade:971 +#: src/emc/usr_intf/gscreen/gscreen.glade:1099 +#, fuzzy +msgid "REL" +msgstr "URL" + +#: src/emc/usr_intf/gscreen/gscreen.glade:99 +#: src/emc/usr_intf/gscreen/gscreen.glade:227 +#: src/emc/usr_intf/gscreen/gscreen.glade:357 +#: src/emc/usr_intf/gscreen/gscreen.glade:485 +#: src/emc/usr_intf/gscreen/gscreen.glade:613 +#: src/emc/usr_intf/gscreen/gscreen.glade:741 +#: src/emc/usr_intf/gscreen/gscreen.glade:869 +#: src/emc/usr_intf/gscreen/gscreen.glade:997 +#: src/emc/usr_intf/gscreen/gscreen.glade:1125 +msgid "ABS" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:630 +#, fuzzy +msgid "B" +msgstr "蓝(_B)" + +#: src/emc/usr_intf/gscreen/gscreen.glade:758 +#, fuzzy +msgid "C" +msgstr "青(_C)" + +#: src/emc/usr_intf/gscreen/gscreen.glade:886 +#, fuzzy +msgid "U" +msgstr "向上一级" -#: src/emc/rs274ngc/interp_check.cc:90 -msgid "G4 not allowed with G2 or G3 because they both use P" +#: src/emc/usr_intf/gscreen/gscreen.glade:1014 +msgid "V" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:93 -msgid "Line with G10 does not have L1, L10, L11, L2, or L20" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1298 +#, fuzzy +msgid "G code" +msgstr "统一码" -#: src/emc/rs274ngc/interp_check.cc:94 -msgid "P value not an integer with G10" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1392 +#, fuzzy +msgid "G Codes Active" +msgstr "位置:" -#: src/emc/rs274ngc/interp_check.cc:95 -msgid "P value out of range (0-9) with G10 L2 or L20" +#: src/emc/usr_intf/gscreen/gscreen.glade:1451 +msgid "MV:100%" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:96 -msgid "P value out of range with G10 L1 or G10 L10" +#: src/emc/usr_intf/gscreen/gscreen.glade:1470 +#, fuzzy +msgid " Mist" +msgstr "列表" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1481 +#, fuzzy +msgid " Flood " +msgstr "Flood" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1533 +#, fuzzy +msgid " At Speed " +msgstr "主轴转速(RPM)" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1546 +#, fuzzy +msgid " Jog mode" +msgstr "混合模式" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1600 +msgid "10 DPM" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:100 -msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." +#: src/emc/usr_intf/gscreen/gscreen.glade:1616 +msgid "10 Ipm" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:258 -msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:1690 +#, fuzzy +msgid "Status" +msgstr "标签" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1715 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2510 +#, fuzzy +msgid "" +"Search\n" +" Text:" +msgstr "按名字搜索" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1766 +#, fuzzy +msgid "Mode" +msgstr "字体" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1782 +#, fuzzy +msgid "Main Level" +msgstr "起始级别:" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1823 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3678 +#, fuzzy +msgid "Themes" +msgstr "主题" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1847 +#, fuzzy +msgid "Relative Text Color" +msgstr "显示工件坐标" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1895 +#, fuzzy +msgid "DTG Text Color" +msgstr "文字颜色(&T):" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1916 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3710 +#, fuzzy +msgid "Warning Audio" +msgstr "警告" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1926 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3723 +msgid "Alert Audio" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:264 -msgid "E word with no G76, M66, M67 or M68 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:1947 +#, fuzzy +msgid "Grid Size" +msgstr "边框大小" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1986 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4119 +#, fuzzy +msgid "Starting RPM" +msgstr "正在启动" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2015 +msgid "Metric\n" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:269 -msgid "H word with no G43 or G76 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2030 +msgid "" +" Display\n" +"Aux Screen" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:275 -msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2045 +#, fuzzy +msgid "" +"Diameter\n" +" Mode" +msgstr "日期:" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2062 +#: src/emc/usr_intf/gscreen/gscreen.glade:3096 +#, fuzzy +msgid "" +" Show\n" +"Offsets" +msgstr "显示偏移值列" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2079 +#, fuzzy +msgid "" +"Show\n" +"DTG" +msgstr "显示" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2096 +#, fuzzy +msgid "" +" Gscreen\n" +"Fullscreen" +msgstr "全屏(&F)" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2118 +msgid "" +" On M7 Use\n" +"Aux Coolant" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:281 -msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2131 +msgid "" +" On M8 Use\n" +"Aux Coolant" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:287 -msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2144 +msgid "Hide Pointer" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:297 +#: src/emc/usr_intf/gscreen/gscreen.glade:2156 msgid "" -"L word with no G10, cutter compensation, canned cycle, digital/analog input, " -"or NURBS code" +" Desktop\n" +"Notification" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:309 +#: src/emc/usr_intf/gscreen/gscreen.glade:2228 +#: src/emc/usr_intf/gscreen/gscreen.glade:2368 +#, fuzzy +msgid "Debug" +msgstr "调试" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2263 +#, fuzzy +msgid "Alarm History" +msgstr "清空历史(_C)" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2281 msgid "" -"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " -"M53 M62 M63 M64 M65 M66 or user M code to use it" +" Launch\n" +"Halshow" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:314 -msgid "P value not an integer with M19 G2 or G3" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2293 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6449 +#, fuzzy +msgid "Calibration" +msgstr "校准(C)" -#: src/emc/rs274ngc/interp_check.cc:316 -msgid "P value must be 0,1,or 2 with M19" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2304 +#, fuzzy +msgid "Halmeter" +msgstr "H_al Meter" -#: src/emc/rs274ngc/interp_check.cc:318 -msgid "P value should be 1 or greater with G2 or G3" +#: src/emc/usr_intf/gscreen/gscreen.glade:2315 +#, fuzzy +msgid "" +"linuxcnc\n" +" Status" +msgstr "CVS 状态" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2327 +#, fuzzy +msgid "Halscope" +msgstr "Ha_l Scope" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2338 +msgid "Ladder" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:326 +#: src/emc/usr_intf/gscreen/gscreen.glade:2386 +#, fuzzy +msgid "Tooleditor" +msgstr "表编辑器" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2404 +#, fuzzy msgid "" -"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " -"code that uses it" -msgstr "" +"Offset\n" +" Page" +msgstr "偏移:%s" -#: src/emc/rs274ngc/interp_check.cc:336 -msgid "R value must be within 0..360 with M19" +#: src/emc/usr_intf/gscreen/gscreen.glade:2572 +#: src/emc/usr_intf/gscreen/gscreen.glade:2749 +#: src/emc/usr_intf/gscreen/gscreen.glade:3156 +msgid "\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:138 -msgid "You must specify both X and Y coordinates for Control Points" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2584 +#, fuzzy +msgid "Tool Setting" +msgstr "字体" -#: src/emc/rs274ngc/interp_convert.cc:141 -msgid "Can specify P without X and Y only for the first control point" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2648 +#, fuzzy +msgid "" +"Single\n" +" Step" +msgstr "单步大小:" -#: src/emc/rs274ngc/interp_convert.cc:144 -msgid "Must specify positive weight P for every Control Point" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2661 +#, fuzzy +msgid "" +"Run At\n" +" Line" +msgstr "运行时间:" -#: src/emc/rs274ngc/interp_convert.cc:147 -msgid "Cannot make a NURBS with 0 feedrate" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2673 +#, fuzzy +msgid "" +"Change \n" +" View" +msgstr "改动集" -#: src/emc/rs274ngc/interp_convert.cc:182 -msgid "Cannot use G5.3 without G5.2 first" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2760 +#, fuzzy +msgid "Homing\n" +msgstr "Ha_l Scope" -#: src/emc/rs274ngc/interp_convert.cc:183 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:2781 +#, fuzzy msgid "" -"You must specify a number of control points at least equal to the order L = " -"%d" -msgstr "" +"Ignore\n" +"Limits" +msgstr "极限" -#: src/emc/rs274ngc/interp_convert.cc:212 -msgid "Cannot convert spline with cutter radius compensation" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2810 +#, fuzzy +msgid "" +" Set\n" +"Override" +msgstr "进给倍率:" -#: src/emc/rs274ngc/interp_convert.cc:222 -msgid "Splines must be in the XY plane" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2824 +#, fuzzy +msgid "Graphics\n" +msgstr "图形:" -#: src/emc/rs274ngc/interp_convert.cc:227 -msgid "Splines may not have motion in Z, A, B, or C" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2838 +#, fuzzy +msgid "" +"Menu\n" +"Level" +msgstr "级别:" -#: src/emc/rs274ngc/interp_convert.cc:231 -msgid "Must specify both I and J with G5.1" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2851 +#, fuzzy +msgid "" +" Launch\n" +"Keyboard" +msgstr "键盘" -#: src/emc/rs274ngc/interp_convert.cc:250 -msgid "Must specify both I and J, or neither" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2868 +#, fuzzy +msgid "Select Buttons" +msgstr "方向" -#: src/emc/rs274ngc/interp_convert.cc:261 -msgid "Must specify both P and Q with G5" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2955 +#, fuzzy +msgid "" +"Unhome \n" +" All" +msgstr "未回零" -#: src/emc/rs274ngc/interp_convert.cc:362 +#: src/emc/usr_intf/gscreen/gscreen.glade:2967 +#, fuzzy msgid "" -"The move just after exiting cutter compensation mode must be straight, not " -"an arc" -msgstr "" +"Unhome\n" +" Axis" +msgstr "Unhome Axis _%s" -#: src/emc/rs274ngc/interp_convert.cc:370 -msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2979 +#: src/emc/usr_intf/gscreen/gscreen.glade:3084 +#, fuzzy +msgid "" +"Toggle\n" +"Readout" +msgstr "反转标志" -#: src/emc/rs274ngc/interp_convert.cc:382 -#: src/emc/rs274ngc/interp_convert.cc:4266 -msgid "Cannot feed with zero spindle speed in feed per rev mode" +#: src/emc/usr_intf/gscreen/gscreen.glade:3004 +msgid "" +"Jogging\n" +" Mode" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:393 -#: src/emc/rs274ngc/interp_convert.cc:399 -#: src/emc/rs274ngc/interp_convert.cc:408 -#: src/emc/rs274ngc/interp_convert.cc:414 -#: src/emc/rs274ngc/interp_convert.cc:423 -#: src/emc/rs274ngc/interp_convert.cc:429 -#, c-format -msgid "%c word missing in absolute center arc" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3016 +#, fuzzy +msgid "" +"coordinate\n" +" System" +msgstr "坐标系:" -#: src/emc/rs274ngc/interp_convert.cc:649 +#: src/emc/usr_intf/gscreen/gscreen.glade:3060 +#, fuzzy msgid "" -"Radius of cutter compensation entry arc is not greater than the tool radius" -msgstr "" +"Index\n" +" Tool" +msgstr "只有文字" -#: src/emc/rs274ngc/interp_convert.cc:868 -#: src/emc/rs274ngc/interp_convert.cc:878 src/emc/rs274ngc/interp_queue.cc:592 +#: src/emc/usr_intf/gscreen/gscreen.glade:3072 +#, fuzzy msgid "" -"Arc move in concave corner cannot be reached by the tool without gouging" -msgstr "" +"Spindle\n" +"Controls" +msgstr "Ctrl-M" -#: src/emc/rs274ngc/interp_convert.cc:904 -msgid "Arc to arc motion is invalid because the arcs have the same center" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3195 +msgid "Open" +msgstr "打开" -#: src/emc/rs274ngc/interp_convert.cc:907 +#: src/emc/usr_intf/gscreen/gscreen.glade:3205 +#, fuzzy msgid "" -"Arc to arc motion makes a corner the compensated tool can't fit in without " -"gouging" -msgstr "" +" Block\n" +"Delete" +msgstr "删除" -#: src/emc/rs274ngc/interp_convert.cc:1036 -#: src/emc/rs274ngc/interp_convert.cc:1037 -#: src/emc/rs274ngc/interp_convert.cc:1038 -#: src/emc/rs274ngc/interp_convert.cc:3733 -#: src/emc/rs274ngc/interp_convert.cc:3736 -#: src/emc/rs274ngc/interp_convert.cc:3739 src/emc/rs274ngc/interp_find.cc:97 -#, c-format -msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3217 +#, fuzzy +msgid "" +"Optional\n" +" Stop" +msgstr "可选信息" -#: src/emc/rs274ngc/interp_convert.cc:1494 -msgid "Cannot change control mode with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3229 +msgid "" +" Full\n" +"View" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1607 -msgid "Cannot change coordinate systems with cutter radius compensation on" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3265 +#, fuzzy +msgid "" +"Next\n" +" Tab" +msgstr "下一年" -#: src/emc/rs274ngc/interp_convert.cc:1851 -#, c-format -msgid "G%d.1 with no D word" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3285 +#, fuzzy +msgid "" +" Feed\n" +"Override" +msgstr "进给倍率:" -#: src/emc/rs274ngc/interp_convert.cc:1854 -#, c-format -msgid "G%d.1 with L word, but plane is not G18" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3298 +#, fuzzy +msgid "" +"Spindle\n" +"Override" +msgstr "主轴倍率:" -#: src/emc/rs274ngc/interp_convert.cc:1865 -#, c-format -msgid "G%d requires D word to be a whole number" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3311 +#, fuzzy +msgid "" +" Rapid\n" +"Override" +msgstr "主轴倍率:" -#: src/emc/rs274ngc/interp_convert.cc:1872 -#, c-format -msgid "G%d with lathe tool, but plane is not G18" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3332 +#, fuzzy +msgid "" +" Jog\n" +"Speed" +msgstr "手动速度:" -#: src/emc/rs274ngc/interp_convert.cc:2271 -msgid "Cannot set reference point with cutter compensation in effect" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3345 +#, fuzzy +msgid "" +" Jog\n" +"Increments" +msgstr "增加" -#: src/emc/rs274ngc/interp_convert.cc:2786 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:3361 msgid "" -"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" +"Adjust\n" +"Rotary" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2787 -#, c-format -msgid "BUG: restore from level %d !?" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3383 +#, fuzzy +msgid "" +"Change\n" +" View" +msgstr "改动集" -#: src/emc/rs274ngc/interp_convert.cc:2788 -#, c-format -msgid "BUG: restore to level %d !?" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3431 +#, fuzzy +msgid "" +" Pan\n" +"Vertical" +msgstr "垂直" -#: src/emc/rs274ngc/interp_convert.cc:2807 -#, c-format -msgid "M7x: restore_settings G20/G21 failed: '%s'" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3444 +#, fuzzy +msgid "" +" Pan\n" +"Horizontal" +msgstr "水平:" -#: src/emc/rs274ngc/interp_convert.cc:2819 -#, c-format -msgid "M7x: restore_settings failed executing: '%s': %s" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3457 +#, fuzzy +msgid "" +" Rotate\n" +"Horiontal" +msgstr "水平:" -#: src/emc/rs274ngc/interp_convert.cc:2885 -msgid "Cannot set motion output with cutter radius compensation on" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3470 +#, fuzzy +msgid "" +" Rotate\n" +"Vertical" +msgstr "垂直" -#: src/emc/rs274ngc/interp_convert.cc:2886 -msgid "No valid P word with M62" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3491 +#, fuzzy +msgid "" +"Search\n" +" Bwd" +msgstr "向前搜索" -#: src/emc/rs274ngc/interp_convert.cc:2890 -msgid "Cannot set motion digital output with cutter radius compensation on" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3503 +#, fuzzy +msgid "" +"Search\n" +" Fwd" +msgstr "向前搜索" -#: src/emc/rs274ngc/interp_convert.cc:2891 -msgid "No valid P word with M63" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3561 +#, fuzzy +msgid "" +" Reload\n" +"Program" +msgstr "重新启动程序" -#: src/emc/rs274ngc/interp_convert.cc:2895 -#: src/emc/rs274ngc/interp_convert.cc:2900 -msgid "Cannot set auxiliary digital output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3604 +msgid "" +" Clear\n" +"status" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2896 -msgid "No valid P word with M64" +#: src/emc/usr_intf/gscreen/gscreen.glade:3634 +msgid "G54" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2901 -msgid "No valid P word with M65" +#: src/emc/usr_intf/gscreen/gscreen.glade:3650 +msgid "calc" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2931 -msgid "invalid P-word with M66" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3725 +#, fuzzy +msgid "test" +msgstr "最新的" -#: src/emc/rs274ngc/interp_convert.cc:2946 -msgid "Cannot wait for digital input with cutter radius compensation on" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3728 +#, fuzzy +msgid "test2" +msgstr "最新的" -#: src/emc/rs274ngc/interp_convert.cc:2958 -msgid "Cannot wait for analog input with cutter radius compensation on" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3778 +#, fuzzy +msgid "Data Entry" +msgstr "数据类型" -#: src/emc/rs274ngc/interp_convert.cc:2973 -msgid "Cannot set motion analog output with cutter radius compensation on" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3805 +#, fuzzy +msgid "Calculator Entry" +msgstr "字体" -#: src/emc/rs274ngc/interp_convert.cc:2974 -msgid "Invalid analog index with M67" +#: src/emc/usr_intf/gscreen/gscreen.glade:3894 +#, fuzzy +msgid "Program Restart" +msgstr "重新开始" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3909 +msgid "" +"Highlighting the run-at-line with the\n" +"up / down buttons or entering the line\n" +"directly." msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2980 -msgid "Cannot set auxiliary analog output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3923 +#, fuzzy +msgid "" +"Line\n" +" Up" +msgstr "艺术线条" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3946 +msgid "" +" Line\n" +"Down" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2981 -msgid "Invalid analog index with M68" +#: src/emc/usr_intf/gscreen/gscreen.glade:4028 +msgid "S 1000" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3012 -msgid "Need non-negative Q-word to specify tool number with M61" +#: src/emc/usr_intf/gscreen/gscreen.glade:4098 +msgid " FWD" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3087 -msgid "Q word with M19 requires a value > 0" +#: src/emc/usr_intf/gscreen/gscreen.glade:4133 +msgid " REV" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3115 -msgid "Cannot restore context from invalid stack frame - missing M70/M73?" +#: src/emc/usr_intf/gscreen/gscreen2.glade:35 +#, fuzzy +msgid "screen 2" +msgstr "全屏(&F)" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:403 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:884 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:923 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:934 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:949 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1099 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1102 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1156 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1163 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1166 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2148 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2157 +msgid "**** GMOCCAPY INFO ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3156 -#: src/emc/rs274ngc/interp_convert.cc:3173 -#: src/emc/rs274ngc/interp_convert.cc:3188 -#: src/emc/rs274ngc/interp_convert.cc:3202 -#: src/emc/rs274ngc/interp_convert.cc:3216 -msgid "Cannot enable overrides with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:404 +msgid "**** no valid probe config in INI File ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3163 -#: src/emc/rs274ngc/interp_convert.cc:3178 -#: src/emc/rs274ngc/interp_convert.cc:3193 -#: src/emc/rs274ngc/interp_convert.cc:3207 -#: src/emc/rs274ngc/interp_convert.cc:3221 -msgid "Cannot disable overrides with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:405 +msgid "**** disabled tool measurement ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3325 -#: src/emc/rs274ngc/interp_convert.cc:3326 -#: src/emc/rs274ngc/interp_convert.cc:3327 -#, c-format -msgid "Indexing axis %c can only be moved with G0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:770 +msgid "**** GMOCCAPY ERROR : ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3334 -#: src/emc/rs274ngc/interp_convert.cc:3336 -#: src/emc/rs274ngc/interp_convert.cc:3338 -#, c-format -msgid "Indexing axis %c can only be moved alone" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:772 +#, python-format +msgid "" +"**** gmoccapy can only handle 4 axis, ****\n" +"**** but you have given %d through your INI file ****\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3433 -msgid "Cannot probe with feed per rev mode" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:774 +msgid "" +"**** gmoccapy will not start ****\n" +"\n" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3481 -msgid "Cannot change retract mode with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:786 +#, fuzzy, python-format +msgid "Home axis %s" +msgstr "回零 _%s" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:885 +msgid "**** To many increments given in INI File for this screen ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3515 -msgid "G10 L1 without offsets has no effect" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:886 +msgid "**** Only the first 10 will be reachable through this screen ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3621 -msgid "Q number in G10 is not an integer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:924 +msgid "**** gmoccapy screen 2 found ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3622 -msgid "Invalid tool orientation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:929 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1055 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1177 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1225 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1844 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2190 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2200 +msgid "**** GMOCCAPY ERROR ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3721 -msgid "I J words not allowed with G10 L2" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:930 +msgid "**** screen 2 GLADE ERROR: ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3742 -msgid "" -"Cannot change the active coordinate system with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:935 +msgid "**** No gmoccapy2.glade file present ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3750 -msgid "R not allowed in G10 L20" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:950 +msgid "**** Invalid embeded tab configuration ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4323 -msgid "Spindle not turning in G33" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:951 +msgid "**** No tabs will be added! ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4333 -msgid "Spindle not turning in G33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:964 +msgid "ERROR, trying to initialize the user tabs or panaels, check for typos" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4376 -msgid "BUG: An axis incorrectly moved along with an indexer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1056 +msgid "**** Did not find a toolfile file in [EMCIO] TOOL_TABLE ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4389 -msgid "BUG: trying to index incorrect axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1100 +msgid "**** audio available! ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4481 -msgid "Cannot use G76 threading cycle with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1103 +msgid "**** no audio available! ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4484 -msgid "In G76, I must not be 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1104 +msgid "**** PYGST libray not installed? ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4486 -msgid "In G76, J must be greater than 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1157 +msgid "**** virtual keyboard program found : " msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4488 -msgid "In G76, K must be greater than J" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1164 +msgid "**** virtual keyboard program found : " msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4631 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1167 msgid "" -"Length of cutter compensation entry move is not greater than the tool radius" +"**** No virtual keyboard installed, we checked for and ." msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4850 -msgid "Zero degree inside corner is invalid for cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1178 +msgid "**** Error with launching virtual keyboard," msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4888 -#: src/emc/rs274ngc/interp_convert.cc:4896 -msgid "" -"Arc to straight motion makes a corner the compensated tool can't fit in " -"without gouging" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1179 +msgid "**** is onboard or matchbox-keyboard installed? ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4980 -msgid "Cannot change tools with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1193 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1875 +msgid "interrupt running macro" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:5101 -msgid "Cannot change tool offset with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1226 +msgid "**** Did not find a parameter file in [RS274NGC] PARAMETER_FILE ****" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:590 -#, c-format -msgid "" -"BUG: cutter compensation has generated an invalid arc with mismatched radii " -"r1 %f r2 %f\n" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1294 +msgid "Select the file you want to be loaded at program start" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:612 -msgid "BUG: Unsupported plane in cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1329 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1353 +#, python-format +msgid "**** GMOCCAPY ERROR **** /n Message type %s not suported" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:622 -msgid "" -"Straight traverse in concave corner cannot be reached by the tool without " -"gouging" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1462 +msgid "Unknown error type and no error text given" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:650 -#, c-format -msgid "BUG: Unsupported plane [%d] in cutter compensation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1478 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1840 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1847 +msgid "Important Warning" msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:661 -msgid "" -"Straight feed in concave corner cannot be reached by the tool without gouging" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1498 +msgid "ERROR : External ESTOP is set, could not change state!" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:628 -msgid "Cannot feed with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1511 +msgid "ERROR : Could not switch the machine on, is limit switch aktivated?" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:629 -msgid "Cannot use inverse time feed with canned cycles" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1730 +msgid "It is not possible to change to MDI Mode at the moment" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:630 -msgid "Cannot use canned cycles with cutter compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1754 +msgid "It is not possible to change to Auto Mode at the moment" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:818 -msgid "G17 canned cycle is not possible on a machine without Z axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1838 +msgid "" +"\n" +"**** No subroutine folder or program prefix is given in the ini file **** \n" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1004 -msgid "G17.1 canned cycle is not possible on a machine without W axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1839 +msgid "**** so the corresponding file could not be found ****" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1220 -msgid "G19 canned cycle is not possible on a machine without X axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1845 +#, python-format +msgid "" +"\n" +"**** File %s of the macro could not be found ****\n" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1388 -msgid "G19.1 canned cycle is not possible on a machine without U axis" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1846 +#, python-format +msgid "**** we searched in subdirectory %s ****" msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1613 -msgid "G18 canned cycle is not possible on a machine without Y axis" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1851 +#, fuzzy +msgid "Enter value:" +msgstr "内置" -#: src/emc/rs274ngc/interp_cycles.cc:1780 -msgid "G18.1 canned cycle is not possible on a machine without V axis" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1852 +#, fuzzy, python-format +msgid "Set parameter %s to:" +msgstr "参数" -#: src/emc/rs274ngc/interp_find.cc:170 -msgid "Cannot use polar coordinates with G53" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1854 +#, fuzzy +msgid "conversion error" +msgstr "一般错误" -#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 -#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 -#: src/emc/rs274ngc/interp_find.cc:347 -msgid "Cannot specify X or Y words with polar coordinate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1855 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3610 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3634 +#, fuzzy +msgid "Conversion error !" +msgstr "一般错误" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1856 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3299 +msgid "" +"Please enter only numerical values\n" +"Values have not been applied" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:272 -msgid "Must specify angle in polar coordinate if at the origin" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2149 +#, python-brace-format +msgid "**** replaced {0} to {1} ****" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:338 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2158 msgid "" -"Incremental motion with polar coordinates is indeterminate when at the origin" +"\n" +"**** found more than 9 macros, only the first 9 will be used ****" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:348 -msgid "G91 motion with polar coordinates is indeterminate when at the origin" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2191 +#, python-format +msgid "**** %s ****" msgstr "" -#: src/emc/rs274ngc/interp_find.cc:720 -#, c-format -msgid "Requested tool %d not found in the tool table" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2201 +#, python-format +msgid "**** No widget named: %s to sensitize ****" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:154 -msgid "Cannot use polar coordinate on a machine lacking X or Y axes" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2366 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1561 +#, fuzzy +msgid "No tool description available" +msgstr "没有可用的描述" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2591 +#, python-format +msgid "Halo, welcome to the test message %d" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:155 -msgid "Cannot use polar coordinate except in G17 plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2732 +msgid "Hal Pin is low, Access denied" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:156 -msgid "Cannot specify both polar coordinate and X word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2734 +msgid "wrong code entered, Access denied" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:157 -msgid "Cannot specify both polar coordinate and Y word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2735 +msgid "Just to warn you" msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:178 -#: src/emc/rs274ngc/interp_internal.cc:190 -#: src/emc/rs274ngc/interp_internal.cc:203 -msgid "Polar coordinates can only be used for motion" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2810 +msgid "ERROR : No limit switch is active, ignore limits will not be set." msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1143 src/emc/rs274ngc/interp_read.cc:1147 -#, c-format -msgid "Bad character '\\%03o' used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2850 +msgid "Classicladder real-time component not detected" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1147 -#, c-format -msgid "Bad character '%c' used" -msgstr "使用了错误字元 '%c'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2937 +msgid "Something went wrong, we have an unknown spindle widget" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1671 -msgid "Left bracket missing after 'while'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3046 +#, fuzzy +msgid "Do you really want to delete the MDI history?\n" +msgstr "您确实要删除这些文件吗?" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3047 +msgid "this will not delete the MDI History file, but will\n" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1686 -msgid "Left bracket missing after 'repeat'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3048 +msgid "delete the listbox entries for this session" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1701 -msgid "Left bracket missing after 'if'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3049 +#, fuzzy +msgid "Attention!!" +msgstr "身份验证" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3076 +msgid "This button will show or hide the keyboard" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1716 -msgid "Left bracket missing after 'elseif'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3196 +#, python-format +msgid "Offset %s could not be set, because off unknown axis" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1919 -msgid "Cannot read current position with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3197 +msgid "Wrong offset setting!" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3202 +msgid "Enter value for diameter" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1934 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3203 #, fuzzy -msgid "Expected # reading parameter" +msgid "Set diameter to:" msgstr "参数" -#: src/emc/rs274ngc/interp_read.cc:1936 -msgid "Expected ] reading bracketed parameter" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3206 +msgid "Enter value for radius" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2608 -#, c-format -msgid "bad number format (conversion failed) parsing '%s'" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3207 +#, fuzzy +msgid "Set radius to:" +msgstr "内圈半径:" -#: src/emc/rs274ngc/interp_read.cc:2609 -#, c-format -msgid "bad number format (trailing characters) parsing '%s'" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3210 +#, fuzzy, python-format +msgid "Enter value for axis %s" +msgstr "激活第四轴" -#: src/emc/rs274ngc/interp_read.cc:2699 -msgid "Calculation resulted in 'not a number'" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3211 +#, fuzzy, python-format +msgid "Set axis %s to:" +msgstr "获取光标值" -#: src/emc/rs274ngc/interp_read.cc:2701 -msgid "Calculation resulted in 'infinity'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3215 +msgid "Conversion error in btn_set_value" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2994 -#, c-format -msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3216 +msgid "Conversion error in btn_set_value!" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3106 -msgid "Multiple U words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3217 +msgid "Please enter only numerical values. Values have not been applied" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3122 -msgid "Multiple V words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3232 +msgid "" +"you did not selected a system to be changed to, so nothing will be changed" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3138 -msgid "Multiple W words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3640 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3654 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3658 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3673 +msgid "Important Warning!" msgstr "" -#: src/emc/rs274ngc/interp_o_word.cc:95 -#, c-format -msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3284 +msgid "Enter the block height" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:161 -#, fuzzy, c-format -msgid "Named parameter #<%s> not defined" -msgstr "参数" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3285 +msgid "Block height measured from base table" +msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:191 -#, fuzzy, c-format -msgid "cant open ini file '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3297 +msgid "Conversion error in btn_block_height" msgstr "" -"打开文件“%s”出错:\n" -"%s" -#: src/emc/rs274ngc/interp_namedparams.cc:208 -#, fuzzy, c-format -msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" -msgstr "参数" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3298 +msgid "Conversion error in btn_block_height!" +msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:232 -#, c-format -msgid "fetch_hal_param: hal_init(%s): %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3536 +msgid "Please remove the mounted tool and press OK when done" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:233 -#, c-format -msgid "fetch_hal_param: hal_ready(): %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3539 +#, python-brace-format +msgid "" +"Please change to tool\n" +"\n" +"# {0:d} {1}\n" +"\n" +" then click OK." msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:370 -#, c-format -msgid "Internal error: Could not assign #<%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3549 +msgid "Tool Change has been aborted!\n" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:378 -#, c-format -msgid "Cannot assign to read-only parameter #<%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3550 +msgid "The old tool will remain set!" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:682 -#, c-format -msgid "BUG: lookup_named_param(%s): unhandled index=%fn" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3570 +msgid "No or more than one tool selected in tool table" msgstr "" -#: src/emc/rs274ngc/rs274ngc_pre.cc:1269 src/emc/rs274ngc/rs274ngc_pre.cc:1344 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3571 #, fuzzy -msgid "Queue is not empty after tool change" -msgstr "在屏幕上提示换刀" +msgid "Please select only one tool in the table" +msgstr "请选择新资源的类型:" -#: src/emc/rs274ngc/rs274ngc_pre.cc:1648 -#, fuzzy, c-format -msgid "Unable to open parameter file: '%s'" -msgstr "无法打开临时文件。" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3573 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3580 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3589 +msgid "Warning Tool Touch off not possible!" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:4 -#, fuzzy -msgid "A file is already open" -msgstr "文件 %1 已经存在" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3577 +msgid "you can not touch of a tool, witch is not mounted in the spindle" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:5 -msgid "All axes missing with g92" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3578 +msgid "your selection has been reseted to the tool in spindle" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:6 -msgid "All axes missing with motion code" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3586 +msgid "" +"Tool touch off is not possible with cutter radius compensation switched on!\n" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:7 -msgid "Arc radius too small to reach end point" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3587 +msgid "Please emit an G40 before tool touch off" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:8 -msgid "Argument to acos out of range" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3597 +msgid "Real big error!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:9 -msgid "Argument to asin out of range" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3598 +msgid "" +"You managed to come to a place that is not possible in on_btn_tool_touchoff" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:10 -msgid "Attempt to divide by zero" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3602 +#, python-format +msgid "Enter value for axis %s to set:" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:11 -msgid "Attempt to raise negative to non integer power" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3603 +#, python-brace-format +msgid "Set parameter of tool {0:d} and axis {1} to:" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:12 -msgid "Bad format unsigned integer" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3608 +#, python-format +msgid "Conversion error because of wrong entry for touch off axis %s" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:13 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3628 +msgid "Enter the tool number as integer " +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3629 #, fuzzy -msgid "Bad number format" -msgstr "视频格式:" +msgid "Select the tool to change" +msgstr "选择模式" -#: src/emc/rs274ngc/rs274ngc_return.hh:14 -msgid "Bug bad g code modal group 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3631 +msgid "Conversion error because of wrong entry for tool number\n" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:15 -msgid "Bug code not g0 or g1" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3632 +#, fuzzy +msgid "enter only integer nummbers" +msgstr "打印行号(_L)" -#: src/emc/rs274ngc/rs274ngc_return.hh:16 -msgid "Bug code not g17 g18 or g19" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3657 +msgid "Selected tool is already in spindle, no change needed." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:17 -msgid "Bug code not g20 or g21" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3653 +msgid "" +"you selected no or more than one tool, the tool selection must be unique" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:18 -msgid "Bug code not g28 or g30" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3672 +msgid "Could not understand the entered tool number. Will not change anything" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:19 -msgid "Bug code not g2 or g3" +#: src/emc/usr_intf/gmoccapy/dialogs.py:33 +#: src/emc/usr_intf/gmoccapy/dialogs.py:38 +msgid "Enter System Unlock Code" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:20 -msgid "Bug code not g4 g10 g28 g30 g53 or g92 series" -msgstr "" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +#, fuzzy +msgid "Enter value" +msgstr "内置" -#: src/emc/rs274ngc/rs274ngc_return.hh:21 -msgid "Bug code not g61 g61.1 or g64" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter the value to set" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:22 -msgid "Bug code not g90 or g91" +#: src/emc/usr_intf/gmoccapy/notification.py:205 +#, python-format +msgid "Error trying to delet the message with number %s" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:23 -msgid "Bug code not g98 or g99" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:409 +msgid "left rotate, middle move, right zoom" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:24 -msgid "Bug code not in g92 series" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:413 +msgid "left zoom, middle move, right rotate" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:25 -msgid "Bug code not in range g54 to g593" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:417 +msgid "left move, middle rotate, right zoom" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:26 -msgid "Bug code not m0 m1 m2 m30 m60" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:421 +msgid "left zoom, middle rotate, right move" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:27 -msgid "Bug distance mode not g90 or g91" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:425 +msgid "left move, middle zoom, right rotate" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:28 -msgid "Bug function should not have been called" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:429 +msgid "left rotate, middle zoom, right move" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:29 -msgid "Bug in tool radius comp" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:526 +#, fuzzy +msgid "clear plot" +msgstr "清除走刀轨迹" -#: src/emc/rs274ngc/rs274ngc_return.hh:30 -msgid "Bug plane not xy yz or xz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:585 +#, fuzzy +msgid "view perspective" +msgstr "轴测图" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:608 +msgid "view along the X axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:31 -msgid "Bug side not right or left" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:633 +msgid "view along the Y axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:32 -msgid "Bug unknown motion code" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:658 +msgid "view along the Z axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:33 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:685 #, fuzzy -msgid "Bug unknown operation" -msgstr "未知类型" +msgid "Show or hide tool path" +msgstr "显示查看工具栏" -#: src/emc/rs274ngc/rs274ngc_return.hh:34 -msgid "Cannot change axis offsets with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:708 +#, fuzzy +msgid "Show or hide dimensions" +msgstr "显示隐藏文件" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:731 +msgid "" +"view along the Y axis from positive to negative as viewn for a back tool " +"lathe" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:35 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:791 #, fuzzy -msgid "Cannot create backup file" -msgstr "无法创建备份文件。" +msgid "Offset Page" +msgstr "偏移:%s" -#: src/emc/rs274ngc/rs274ngc_return.hh:36 -msgid "Cannot do g1 with zero feed rate" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:809 +#, fuzzy +msgid "Tooledit" +msgstr "/工具(T)/文本" -#: src/emc/rs274ngc/rs274ngc_return.hh:37 -msgid "Cannot do zero repeats of cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:831 +#, fuzzy +msgid "File Selection" +msgstr "选中内容" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:869 +#, fuzzy +msgid "Toggle between metric and imperial units" +msgstr "平移/旋转" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:887 +msgid "Switch DRO to DTG mode" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:38 -msgid "Cannot make arc with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:905 +#, fuzzy +msgid "Toggle between machine and relative coordinates" +msgstr "平移/旋转" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:928 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:946 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:963 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:980 +msgid "Klick to toggle through the DRO modes" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:39 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1253 +#, fuzzy +msgid "Ignore limits" +msgstr "超程" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1321 #, fuzzy -msgid "Cannot open backup file" -msgstr "无法创建备份文件。" +msgid "Jogging" +msgstr "字体" -#: src/emc/rs274ngc/rs274ngc_return.hh:40 -msgid "Cannot open variable file" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1430 +msgid "Information over the tool in spindle" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:41 -msgid "Cannot probe with cutter radius comp on" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1448 +#, fuzzy +msgid "Tool no." +msgstr "文件信息" -#: src/emc/rs274ngc/rs274ngc_return.hh:42 -msgid "Cannot probe with zero feed rate" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1474 +#, fuzzy +msgid "Diameter" +msgstr "日期:" -#: src/emc/rs274ngc/rs274ngc_return.hh:43 -msgid "Cannot put a b in canned cycle" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1503 +#, fuzzy +msgid "offset z" +msgstr "偏移:%s" -#: src/emc/rs274ngc/rs274ngc_return.hh:44 -msgid "Cannot put a c in canned cycle" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1532 +#, fuzzy +msgid "offset x" +msgstr "偏移:%s" -#: src/emc/rs274ngc/rs274ngc_return.hh:45 -msgid "Cannot put an a in canned cycle" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1580 +#, fuzzy +msgid "Tool information" +msgstr "配置:" -#: src/emc/rs274ngc/rs274ngc_return.hh:46 -msgid "Cannot turn cutter radius comp on when on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1592 +msgid "G and M code information as well as speed and feed" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:47 -msgid "Cannot use axis values with g80" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1611 +#, fuzzy +msgid "active_mcodes_label" +msgstr "激活的G指令:" -#: src/emc/rs274ngc/rs274ngc_return.hh:48 -msgid "Cannot use axis values without a g code that uses them" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1663 +#, fuzzy +msgid "active_gcodes_label" +msgstr "激活的G指令:" -#: src/emc/rs274ngc/rs274ngc_return.hh:49 -msgid "Cannot use g28 or g30 with cutter radius comp" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1717 +#, fuzzy +msgid "G-Code" +msgstr "字体" -#: src/emc/rs274ngc/rs274ngc_return.hh:50 -msgid "Cannot use g53 incremental" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1730 +#, fuzzy +msgid "The name and location of the loaded program" +msgstr "程序的名字" -#: src/emc/rs274ngc/rs274ngc_return.hh:51 -msgid "Cannot use g53 with cutter radius comp" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1742 +#, fuzzy +msgid "No Program loaded" +msgstr "程序" -#: src/emc/rs274ngc/rs274ngc_return.hh:52 -msgid "Cannot use two g codes that both use axis values" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1750 +#, fuzzy +msgid "Program" +msgstr "位置:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1800 +msgid "Vel." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:53 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1814 #, fuzzy -msgid "Command too long" -msgstr "显示指令位置" +msgid "Displays the current velocity" +msgstr "关闭当前标签" -#: src/emc/rs274ngc/rs274ngc_return.hh:54 -msgid "Current point same as end point of arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1838 +msgid "adjust max vel of machine" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:55 -msgid "Dwell time missing with g4" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1854 +#, fuzzy +msgid "Max. Velocity" +msgstr "最大速度(_V):" -#: src/emc/rs274ngc/rs274ngc_return.hh:56 -msgid "Dwell time p word missing with g82" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1885 +msgid "Displayes the programmed feed rate" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:57 -msgid "Dwell time p word missing with g86" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1904 +#, fuzzy +msgid "reset feed override to 100 %" +msgstr "设置进给倍率 0%-100%" -#: src/emc/rs274ngc/rs274ngc_return.hh:58 -msgid "Dwell time p word missing with g88" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1922 +#, fuzzy +msgid "adjust feed override" +msgstr "进给倍率:" -#: src/emc/rs274ngc/rs274ngc_return.hh:59 -msgid "Dwell time p word missing with g89" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1941 +#, fuzzy +msgid "Feed Override [%]" +msgstr "进给倍率:" -#: src/emc/rs274ngc/rs274ngc_return.hh:60 -msgid "Equal sign missing in parameter setting" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2034 +#, fuzzy +msgid "Cooling" +msgstr "字体" -#: src/emc/rs274ngc/rs274ngc_return.hh:61 -msgid "F word missing with inverse time arc move" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2285 +#, fuzzy +msgid "Spindle [rpm]" +msgstr "Spindle Index" -#: src/emc/rs274ngc/rs274ngc_return.hh:62 -msgid "F word missing with inverse time g1 move" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2377 +#, fuzzy +msgid "" +"Search\n" +" back" +msgstr "搜索" -#: src/emc/rs274ngc/rs274ngc_return.hh:63 -msgid "File ended with no percent sign" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2394 +#, fuzzy +msgid "" +"Search\n" +" fwd" +msgstr "向前搜索" -#: src/emc/rs274ngc/rs274ngc_return.hh:64 -msgid "File ended with no percent sign or program end" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2446 +#, fuzzy +msgid "" +"Replace\n" +" Text:" +msgstr "替换的文本(&R):" -#: src/emc/rs274ngc/rs274ngc_return.hh:65 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2456 #, fuzzy -msgid "File name too long" -msgstr "要打开的文件" +msgid "" +"Replace\n" +" All" +msgstr "全部替换" -#: src/emc/rs274ngc/rs274ngc_return.hh:66 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2470 #, fuzzy -msgid "G code out of range" -msgstr "跳至页" +msgid "" +"Ignore\n" +" Case" +msgstr "忽略大小写" -#: src/emc/rs274ngc/rs274ngc_return.hh:67 -msgid "I word given for arc in yz plane" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2616 +#, fuzzy +msgid "Start as fullscreen" +msgstr "全屏(&F)" -#: src/emc/rs274ngc/rs274ngc_return.hh:68 -msgid "I word missing with g87" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2631 +#, fuzzy +msgid "Start maximized" +msgstr "起始时间:" -#: src/emc/rs274ngc/rs274ngc_return.hh:69 -msgid "J word given for arc in xz plane" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2646 +#, fuzzy +msgid "Start as window" +msgstr "创建新窗口" -#: src/emc/rs274ngc/rs274ngc_return.hh:70 -msgid "J word missing with g87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2670 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4426 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4943 +msgid "X Pos." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:71 -msgid "K word given for arc in xy plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2683 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4437 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4928 +msgid "Y Pos." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:72 -msgid "K word missing with g87" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2698 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4855 +msgid "Width" +msgstr "宽度" -#: src/emc/rs274ngc/rs274ngc_return.hh:73 -msgid "Left bracket missing after slash with atan" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2713 +msgid "Height" +msgstr "高度" -#: src/emc/rs274ngc/rs274ngc_return.hh:74 -msgid "Left bracket missing after unary operation name" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2811 +msgid "hide cursor" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:75 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2830 #, fuzzy -msgid "M code greater than 199" -msgstr "中灰尘" +msgid "Main Window" +msgstr "主窗口" -#: src/emc/rs274ngc/rs274ngc_return.hh:76 -msgid "Mixed radius ijk format for arc" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2857 +#, fuzzy +msgid "Show keyboard on offset" +msgstr "显示偏移值列" -#: src/emc/rs274ngc/rs274ngc_return.hh:77 -msgid "Multiple a words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2871 +msgid "Show keyboard on tooledit" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:78 -msgid "Multiple b words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2885 +msgid "Show keyboard on MDI" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:79 -msgid "Multiple c words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2899 +msgid "Show keyboard on EDIT" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:80 -msgid "Multiple d words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2913 +msgid "Show keyboard on load file" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:81 -msgid "Multiple f words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2931 +#, fuzzy +msgid "Keyboard" +msgstr "键盘" -#: src/emc/rs274ngc/rs274ngc_return.hh:82 -msgid "Multiple h words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2959 +#, fuzzy +msgid "show preview" +msgstr "打印预览" -#: src/emc/rs274ngc/rs274ngc_return.hh:83 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2973 #, fuzzy -msgid "Multiple i words on one line" -msgstr "不将一个单词拆在两行(_S)" +msgid "show offsets" +msgstr "显示偏移值列" -#: src/emc/rs274ngc/rs274ngc_return.hh:84 -msgid "Multiple j words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2991 +msgid "On Touch off" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:85 -msgid "Multiple k words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3005 +msgid "" +" Display \n" +"Aux Screen" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:86 -msgid "Multiple l words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3052 +#, fuzzy +msgid "Relative Color" +msgstr "显示工件坐标" -#: src/emc/rs274ngc/rs274ngc_return.hh:87 -msgid "Multiple p words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3079 +#, fuzzy +msgid "Absolute Color" +msgstr "文字颜色" -#: src/emc/rs274ngc/rs274ngc_return.hh:88 -msgid "Multiple q words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3110 +#, fuzzy +msgid "DTG Color" +msgstr "文字颜色(&T):" -#: src/emc/rs274ngc/rs274ngc_return.hh:89 -msgid "Multiple r words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3139 +msgid "Use Auto Units" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:90 -msgid "Multiple s words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3159 +#, fuzzy +msgid "Show the DRO Button" +msgstr "Shift+左击" -#: src/emc/rs274ngc/rs274ngc_return.hh:91 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3190 #, fuzzy -msgid "Multiple t words on one line" -msgstr "不将一个单词拆在两行(_S)" +msgid "Homed color" +msgstr "主文件夹" -#: src/emc/rs274ngc/rs274ngc_return.hh:92 -msgid "Multiple x words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3204 +#, fuzzy +msgid "Unhomed color" +msgstr "未回零" -#: src/emc/rs274ngc/rs274ngc_return.hh:93 -msgid "Multiple y words on one line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3299 +#, fuzzy +msgid "Digits" +msgstr "数字:" -#: src/emc/rs274ngc/rs274ngc_return.hh:94 -msgid "Multiple z words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3344 +msgid "" +"toggle DRO mode \n" +"clicking on the DRO" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:95 -msgid "Must use g0 or g1 with g53" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3369 +#, fuzzy +msgid "DRO" +msgstr "标签" -#: src/emc/rs274ngc/rs274ngc_return.hh:96 -msgid "Negative argument to sqrt" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3401 +#, fuzzy +msgid "Grid size" +msgstr "改变大小" -#: src/emc/rs274ngc/rs274ngc_return.hh:97 -msgid "Negative d word tool radius index used" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3430 +#, fuzzy +msgid "Show DRO" +msgstr "显示 %1" -#: src/emc/rs274ngc/rs274ngc_return.hh:98 -msgid "Negative f word used" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3444 +#, fuzzy +msgid "Show offsets" +msgstr "显示偏移值列" -#: src/emc/rs274ngc/rs274ngc_return.hh:99 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3458 #, fuzzy -msgid "Negative g code used" -msgstr "文件另存为" +msgid "Show DTG" +msgstr "显示网格" -#: src/emc/rs274ngc/rs274ngc_return.hh:100 -msgid "Negative h word used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3483 +#, fuzzy +msgid "Mouse Button mode" +msgstr "位置:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3512 +#, fuzzy +msgid "Preview" +msgstr "名称(_N)" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3565 +#, fuzzy +msgid "" +"current\n" +" file" +msgstr "当前文件" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3611 +msgid "File to load on start" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:101 -msgid "Negative l word used" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3638 +#, fuzzy +msgid "Select user dir" +msgstr "选择情节:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3647 +#, fuzzy +msgid "Select jump to dir" +msgstr "选择模式" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3767 +#, fuzzy +msgid "Themes and sound" +msgstr "描述" -#: src/emc/rs274ngc/rs274ngc_return.hh:102 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3799 +msgid "Appearance" +msgstr "外观" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3833 #, fuzzy -msgid "Negative m code used" -msgstr "度/次" +msgid "Scale max velocity" +msgstr "最大速度(_V):" -#: src/emc/rs274ngc/rs274ngc_return.hh:103 -msgid "Negative or zero q value used" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3846 +#, fuzzy +msgid "Scale jog velocity" +msgstr "显示速度(_E)" -#: src/emc/rs274ngc/rs274ngc_return.hh:104 -msgid "Negative p word used" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3861 +#, fuzzy +msgid "Scale feed override" +msgstr "进给倍率:" -#: src/emc/rs274ngc/rs274ngc_return.hh:105 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3876 #, fuzzy -msgid "Negative spindle speed used" +msgid "Scale spindle override" msgstr "主轴倍率:" -#: src/emc/rs274ngc/rs274ngc_return.hh:106 -msgid "Negative tool id used" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3970 +#, fuzzy +msgid "Hardware MPG Scale" +msgstr "界面" -#: src/emc/rs274ngc/rs274ngc_return.hh:107 -msgid "Nested comment found" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3994 +#, fuzzy +msgid "Use keyboard shortcuts" +msgstr "快捷键" -#: src/emc/rs274ngc/rs274ngc_return.hh:108 -msgid "No characters found in reading real value" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4007 +#, fuzzy +msgid "Keyboard shortcuts" +msgstr "快捷键" -#: src/emc/rs274ngc/rs274ngc_return.hh:109 -msgid "Non integer value for integer" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4034 +#, fuzzy +msgid "Use unlock code" +msgstr "未使用" -#: src/emc/rs274ngc/rs274ngc_return.hh:110 -msgid "Null missing after newline" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4050 +#, fuzzy +msgid "Do not use unlock code" +msgstr "无法翻译源码" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4066 +msgid "Use hal pin to unlock" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:111 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4087 #, fuzzy -msgid "Parameter file out of order" -msgstr "参数设置" +msgid "Unlock settings" +msgstr "字体" -#: src/emc/rs274ngc/rs274ngc_return.hh:112 -msgid "Parameter number out of range" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4197 +#, fuzzy +msgid "Spindle bar min" +msgstr "Spindle brake on" -#: src/emc/rs274ngc/rs274ngc_return.hh:113 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4210 #, fuzzy -msgid "Parameter is readonly" -msgstr "参数" +msgid "Spindle bar max" +msgstr "主轴停" -#: src/emc/rs274ngc/rs274ngc_return.hh:114 -msgid "Q word missing with g83" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4252 +msgid "Hide turtle Jog Button" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:115 -msgid "Queue is not empty after probing" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4282 +msgid "Turtle jog Factor" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:116 -msgid "R clearance plane unspecified in cycle" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4318 +#, fuzzy +msgid "Turtle Jog" +msgstr "字体" -#: src/emc/rs274ngc/rs274ngc_return.hh:117 -msgid "R i j k words all missing for arc" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4360 +#, fuzzy +msgid "Hardware" +msgstr "粗口摇滚(Hardcore)" -#: src/emc/rs274ngc/rs274ngc_return.hh:118 -msgid "R less than x in cycle in yz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4392 +msgid "Use auto tool measurement" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:119 -msgid "R less than y in cycle in xz plane" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4450 +#, fuzzy +msgid "Probe Height" +msgstr "预览高度" -#: src/emc/rs274ngc/rs274ngc_return.hh:120 -msgid "R less than z in cycle in xy plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4485 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4498 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4527 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4556 +msgid "0.000" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:121 -msgid "R word with no g code that uses it" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4514 +msgid "Z Pos." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:122 -msgid "Slash missing after first atan argument" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4543 +#, fuzzy +msgid "Max. Probe" +msgstr "探测" -#: src/emc/rs274ngc/rs274ngc_return.hh:123 -msgid "Spindle not turning clockwise in g84" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4575 +#, fuzzy +msgid "Probe Informations" +msgstr "项目信息" -#: src/emc/rs274ngc/rs274ngc_return.hh:124 -msgid "Spindle not turning in g86" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4607 +#, fuzzy +msgid "Search Vel." +msgstr "搜索(&E)" -#: src/emc/rs274ngc/rs274ngc_return.hh:125 -msgid "Spindle not turning in g87" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4618 +#, fuzzy +msgid "Probe Vel." +msgstr "探测" -#: src/emc/rs274ngc/rs274ngc_return.hh:126 -msgid "Spindle not turning in g88" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4674 +#, fuzzy +msgid "Probe velocitys" +msgstr "字体" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4688 +msgid "" +"No valid configuration\n" +"found in your INI file,\n" +"please take a look at \n" +"the WIKI to check how\n" +"to configure the settings." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:127 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4708 #, fuzzy -msgid "Sscanf failed" -msgstr "保存失败。" +msgid "Tool Measurement" +msgstr "字体" -#: src/emc/rs274ngc/rs274ngc_return.hh:128 -msgid "Start point too close to probe point" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4737 +msgid "" +"If the 4'th axis is used\n" +"for a tool changer, you\n" +"hide the DRO and\n" +"jog buttons." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:129 -msgid "Too many m codes on line" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4749 +#, fuzzy +msgid "Hide 4'th axis" +msgstr "测试本轴" -#: src/emc/rs274ngc/rs274ngc_return.hh:130 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4769 #, fuzzy -msgid "Pocket max too large" -msgstr "停靠工具栏" +msgid "Tool Changer" +msgstr "字体" -#: src/emc/rs274ngc/rs274ngc_return.hh:131 -msgid "Tool radius not less than arc radius with comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4808 +msgid "Use frames" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:132 -msgid "Two g codes used from same modal group" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4840 +msgid "max." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:133 -msgid "Two m codes used from same modal group" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4992 +#, fuzzy +msgid "Launch test message" +msgstr "_Latency test result:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5011 +msgid "" +" gmoccapy message\n" +" behavior and appearance " msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:134 -#, fuzzy, c-format -msgid "Unable to open file <%s>" -msgstr "无法打开文件。" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5049 +msgid "Do not use run from line" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:135 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5065 #, fuzzy -msgid "Unclosed comment found" -msgstr "未找到文件" +msgid "Use run from line" +msgstr "平移/旋转选区" -#: src/emc/rs274ngc/rs274ngc_return.hh:136 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5086 #, fuzzy -msgid "Unclosed expression" -msgstr "正则表达式(&X)" +msgid "Run from line" +msgstr "字体" -#: src/emc/rs274ngc/rs274ngc_return.hh:137 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5119 #, fuzzy -msgid "Unknown g code used" -msgstr "未定义刀具 %d 号" +msgid "" +"Advanced\n" +" Settings" +msgstr "高级设置" -#: src/emc/rs274ngc/rs274ngc_return.hh:138 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5157 #, fuzzy -msgid "Unknown m code used" -msgstr "未定义刀具 %d 号" +msgid "User tab 1" +msgstr "用户名" -#: src/emc/rs274ngc/rs274ngc_return.hh:139 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5171 #, fuzzy -msgid "Unknown operation" -msgstr "未知错误" +msgid "User tabs" +msgstr "用户名" -#: src/emc/rs274ngc/rs274ngc_return.hh:140 -msgid "Unknown operation name starting with a" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5207 +msgid "Estop the machine" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:141 -msgid "Unknown operation name starting with m" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5229 +#, fuzzy +msgid "Turn the machine on/off" +msgstr "开机" -#: src/emc/rs274ngc/rs274ngc_return.hh:142 -msgid "Unknown operation name starting with o" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5251 +msgid "enter manual mode to jog axis by hand or touch off" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:143 -msgid "Unknown operation name starting with x" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5271 +msgid "enter MDI mode to launch g-code commands" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:144 -msgid "Unknown word starting with a" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5290 +#, fuzzy +msgid "enter auto mode to run programs" +msgstr "重新启动程序" -#: src/emc/rs274ngc/rs274ngc_return.hh:145 -msgid "Unknown word starting with c" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5308 +msgid "Enter the settings page, the default code is \"123\"" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:146 -msgid "Unknown word starting with e" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5330 +#, fuzzy +msgid "show user tabs" +msgstr "显示状态栏" -#: src/emc/rs274ngc/rs274ngc_return.hh:147 -msgid "Unknown word starting with f" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5381 +msgid "open homing button list" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:148 -msgid "Unknown word starting with l" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5398 +msgid "open touch off button list" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:149 -msgid "Unknown word starting with r" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5427 +msgid "Open the tooleditor page" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:150 -msgid "Unknown word starting with s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5498 +msgid "make the preview as large as possible" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:151 -msgid "Unknown word starting with t" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5515 +msgid "Close moccapy / leave the program" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:152 -msgid "Unknown word where unary operation could be" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5577 +msgid "This button will show or hide the Keyboard" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:153 -msgid "X and y words missing for arc in xy plane" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5620 +#, fuzzy +msgid "Load a new program" +msgstr "重新启动程序" -#: src/emc/rs274ngc/rs274ngc_return.hh:154 -msgid "X and z words missing for arc in xz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5637 +#, fuzzy +msgid "Run the loaded program" +msgstr "重新启动程序" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5654 +#, fuzzy +msgid "Stop the running program" +msgstr "停止" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5672 +#, fuzzy +msgid "Pause the running program" +msgstr "停止" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5680 +#, fuzzy +msgid "pause the running program" +msgstr "停止" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5698 +msgid "Run the loaded program step by step" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:155 -msgid "X value unspecified in yz plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5715 +msgid "" +"run the program from a certain line, attention, that is dangerous, because " +"the previous lines will not checed!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:156 -msgid "Y and z words missing for arc in yz plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5732 +msgid "" +"Machine or not the optional blocks of the program. If the button is pressed, " +"the optional blocks will not be machined. The button will indicate this by a " +"yellow background." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:157 -msgid "Y value unspecified in xz plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5757 +msgid "" +"Make optional stops or not. if an M1 is programed and the button is pressed " +"(is active) the programm will pause if it found a M1" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:158 -msgid "Z value unspecified in xy plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5789 +#, fuzzy +msgid "Edit the loaded program" +msgstr "退出该程序" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5837 +#, fuzzy +msgid "home all axis" +msgstr "回零" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5873 +#, fuzzy +msgid "home x axis" +msgstr "轴回零" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5897 +#, fuzzy +msgid "home y axis" +msgstr "轴回零" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5929 +#, fuzzy +msgid "home z axis" +msgstr "轴回零" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5987 +#, fuzzy +msgid "Unhome all axis" +msgstr "未回零" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6023 +msgid "go back to main button list" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:159 -msgid "Zero or negative argument to ln" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6053 +msgid "" +" edit\n" +"offsets" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:161 -msgid "K word missing with g33/g33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6060 +#, fuzzy +msgid "Edit offsets" +msgstr "显示偏移值列" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6076 +msgid "touch off X / set X to 0" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:162 -msgid "F word used with a g33/g33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6100 +msgid "touch off Y / set Y to 0" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:163 -msgid "Unknown operation name starting with e" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6135 +msgid "touch off Z / set Z to 0" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:164 -msgid "Unknown operation name starting with n" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6155 +msgid "" +"zero\n" +"G92" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:165 -msgid "Unknown operation name starting with g" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6161 +msgid "Zero all G92 offsets" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:166 -msgid "Unknown operation name starting with l" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6172 +#, fuzzy +msgid "" +" Block\n" +"Height" +msgstr "高度" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6192 +msgid "touch off X / set X to an desired value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:167 -msgid "Too many subroutine parameters" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6216 +msgid "touch off Y / set Y to an desired value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:168 -msgid "Too many subroutine levels" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6251 +msgid "touch off Z / set Z to an desired value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:169 -msgid "Bug: call stack underrun" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6270 +msgid "" +" set\n" +"selected" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:170 -msgid "Unknown control command in o word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6277 +msgid "set the selected coordinate system to be the active one" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:171 -msgid "Too many oword labels" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6293 +msgid "Go back to main view" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:172 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6324 #, fuzzy -msgid "Unknown oword number" -msgstr "未定义刀具 %d 号" +msgid "delete MDI" +msgstr "删除 %1" -#: src/emc/rs274ngc/rs274ngc_return.hh:173 -msgid "Nested subroutine definition" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6330 +#, fuzzy +msgid "delete MDI history" +msgstr "清除 MDI 历史" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6380 +msgid "Cl.-ladder" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:174 -msgid "Not in subroutine definition" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6386 +msgid "Open classicladder" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:175 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6397 #, fuzzy -msgid "File not open" -msgstr "要打开的文件" +msgid "Hal-Scope" +msgstr "Ha_l Scope" -#: src/emc/rs274ngc/rs274ngc_return.hh:176 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6403 #, fuzzy -msgid "Need tool prepared -Txx- for toolchange" -msgstr "在屏幕上提示换刀" +msgid "launch hal scope" +msgstr "替换 %s" -#: src/emc/rs274ngc/rs274ngc_return.hh:177 -msgid "Cannot change planes with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6420 +msgid "launch linuxcnc status" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:178 -msgid "Cutter radius compensation allowed only in XY, XZ planes" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6437 +msgid "launch hal meter" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:179 -msgid "P word missing with G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6455 +#, fuzzy +msgid "launch calibration" +msgstr "校准(C)" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6466 +msgid "Halshow" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:180 -msgid "I J or K words missing with G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6472 +msgid "opens the show hal tool" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:181 -msgid "Cannot move rotary axes with G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6537 +#, fuzzy +msgid "save the file using the original name" +msgstr "用不同的名称保存当前文件" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6559 +#, fuzzy +msgid "save the file with a new name" +msgstr "用不同的名称保存当前文件" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6605 +msgid "clear the edit field and make a new file" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:182 -msgid "Multiple e words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6641 +msgid "Show or hide the virtual keyboard" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:183 -msgid "Named parameter not terminated" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6665 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6879 +msgid "Go back to main button list" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:184 -msgid "Out of memory" -msgstr "内存溢出" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6701 +#, fuzzy +msgid "delete selected tool or tools" +msgstr "删除选中的文本" -#: src/emc/rs274ngc/rs274ngc_return.hh:185 -msgid "S word missing with G96" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6718 +#, fuzzy +msgid "add a new tool to tool table" +msgstr "重载刀具表(_B)" -#: src/emc/rs274ngc/rs274ngc_return.hh:186 -msgid "Queue is not empty after external input" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6729 +msgid "Reload" +msgstr "重新装入" -#: src/emc/rs274ngc/rs274ngc_return.hh:187 -msgid "Can't select analog input with wait type != immediate return" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6735 +#, fuzzy +msgid "reload tool table from file" +msgstr "重载刀具表(_B)" -#: src/emc/rs274ngc/rs274ngc_return.hh:188 -msgid "Zero timeout with wait type != immediate return" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6746 +#, fuzzy +msgid "Apply" +msgstr "小程序" -#: src/emc/rs274ngc/rs274ngc_return.hh:189 -msgid "Invalid to select both a digital and an analog input with M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6752 +msgid "" +"apply the changes you made, G43 will be excecuted only if it is active g-code" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:190 -msgid "Need to have either a valid P or a valid E word with M66" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6768 +#, fuzzy +msgid "Select a tool by number" +msgstr "选择文件夹" -#: src/emc/rs274ngc/rs274ngc_return.hh:191 -msgid "Q word missing with g73" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6790 +msgid "change tool with the command M61 Q?, no machine move will be done" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:192 -msgid "Digital input selected out of bounds" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6812 +#, fuzzy +msgid "change tool to the selected one" +msgstr "选中字体的名称" -#: src/emc/rs274ngc/rs274ngc_return.hh:193 -msgid "Analog input selected out of bounds" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6824 +msgid "" +"touchoff\n" +" tool x" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:194 -msgid "W value unspecified in UV plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6832 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6863 +msgid "touch off the tool and set the value to the tool table" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:195 -msgid "U value unspecified in VW plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6855 +msgid "" +"touchoff\n" +" tool z" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:196 -msgid "V value unspecified in UW plane canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6915 +msgid "Move to your home directory" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:197 -msgid "R less than W in cycle in UV plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6932 +#, fuzzy +msgid "Move to parrent directory" +msgstr "工程目录" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6961 +#, fuzzy +msgid "Select the previos file" +msgstr "选择文件" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6979 +#, fuzzy +msgid "Select the next file" +msgstr "选择文件" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6997 +msgid "Jump to user defined directory" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:198 -msgid "R less than U in cycle in VW plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7027 +msgid "select the highlighted file and return the path" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:199 -msgid "R less than V in cycle in UW plane" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7057 +msgid "Close without returning a file path" msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7075 +#, fuzzy +msgid "Load File" +msgstr "本地文件" + +#, fuzzy +#~ msgid "_Globals" +#~ msgstr "全局变量" + +#, fuzzy +#~ msgid "LinuxCNC Debug Level" +#~ msgstr "设置调试级别" + +#~ msgid "Generated by stepconf at %s" +#~ msgstr "Generated by stepconf at %s" + +#, fuzzy +#~ msgid "S_econd Parport Address:" +#~ msgstr "Parport Base Address:" + +#, fuzzy +#~ msgid "T_hird Parport Address:" +#~ msgstr "Parport Base Address:" + +#, fuzzy +#~ msgid " Parallel Port Settings" +#~ msgstr "并口设置" + +#, fuzzy +#~ msgid "" +#~ "Driver characteristics: (Multiply by 1000 for times specified in µs or " +#~ "microseconds)\n" +#~ " Additional signal conditioning or isolation such as optocouplers " +#~ "and RC filters\n" +#~ " can impose timing constraints of their own, in addition to those " +#~ "of the driver." +#~ msgstr "" +#~ "Driver characteristics: (Multiply by 1000 for times specified in µs or " +#~ "microseconds)\n" +#~ "\n" +#~ "Additional signal conditioning or isolation such as optocouplers and RC " +#~ "filters\n" +#~ "can impose timing constraints of their own, in addition to those of the " +#~ "driver." + +#, fuzzy +#~ msgid "Advanced Configuration Options" +#~ msgstr "高级选项" + +#~ msgid "_Sherline Outputs" +#~ msgstr "_Sherline Outputs" + +#~ msgid "Spindle Configuration" +#~ msgstr "主轴配置" + +#, fuzzy +#~ msgid "Spindle Max Output:" +#~ msgstr "输出:" + +#, fuzzy +#~ msgid "Dac Output Scale:" +#~ msgstr "输出文件:" + #~ msgid "No" #~ msgstr "否" @@ -14036,10 +17696,6 @@ msgstr "" #~ msgid "Length:" #~ msgstr "长度:" -#, fuzzy -#~ msgid "Diameter:" -#~ msgstr "日期:" - #, fuzzy #~ msgid "Tools..." #~ msgstr "工具栏(_T)..." @@ -14048,10 +17704,6 @@ msgstr "" #~ msgid "mm / s²" #~ msgstr "mm / s²" -#, fuzzy -#~ msgid "Out" -#~ msgstr "输出:" - #, fuzzy #~ msgid "Pyvcp Example Options" #~ msgstr "文件选项" @@ -14196,10 +17848,6 @@ msgstr "" #~ msgid "Switch only" #~ msgstr "开关级别:" -#, fuzzy -#~ msgid "Index only" -#~ msgstr "只有文字" - #, fuzzy #~ msgid "TKemc" #~ msgstr "主题" @@ -14251,14 +17899,6 @@ msgstr "" #~ msgid "Speed 1:" #~ msgstr "速度 1:" -#, fuzzy -#~ msgid "Advanced realtime components" -#~ msgstr "高级选项" - -#, fuzzy -#~ msgid "or" -#~ msgstr "单词" - #, fuzzy #~ msgid "Step generator" #~ msgstr "分隔符" @@ -14271,10 +17911,6 @@ msgstr "" #~ msgid "Cannot use b word" #~ msgstr "无法翻译源码" -#, fuzzy -#~ msgid "Cannot use c word" -#~ msgstr "无法翻译源码" - #, fuzzy #~ msgid "Required parameter missing" #~ msgstr "必需的信息" @@ -14317,9 +17953,6 @@ msgstr "" #~ msgid "Test Now" #~ msgstr "测试" -#~ msgid "Include custom _HAL configuration" -#~ msgstr "包含制定的 HAL 配置(_H)" - #~ msgid "mm / s^2\t" #~ msgstr "mm / s^2\t" @@ -14540,9 +18173,6 @@ msgstr "" #~ msgid "&Format:" #~ msgstr "格式(&F):" -#~ msgid "&Fullscreen" -#~ msgstr "全屏(&F)" - #~ msgid "&General" #~ msgstr "常规(&G)" @@ -14618,9 +18248,6 @@ msgstr "" #~ msgid "&Menu" #~ msgstr "菜单(&M)" -#~ msgid "&Message:" -#~ msgstr "信息(&M):" - #~ msgid "&Modify..." #~ msgstr "修改(&M)..." @@ -14717,9 +18344,6 @@ msgstr "" #~ msgid "&Replace" #~ msgstr "替换(&R)" -#~ msgid "&Replacement text:" -#~ msgstr "替换的文本(&R):" - #~ msgid "&Report Bug..." #~ msgstr "报告错误(&R)..." @@ -14906,9 +18530,6 @@ msgstr "" #~ msgid "/Tools/Magnify" #~ msgstr "/工具(T)/放大镜" -#~ msgid "/Tools/Text" -#~ msgstr "/工具(T)/文本" - #~ msgid "/View/sep1" #~ msgstr "/查看(V)/sep1" @@ -15146,9 +18767,6 @@ msgstr "" #~ msgid "Advanced Linux Sound Architecture" #~ msgstr "高级 Linux 声音架构" -#~ msgid "Advanced Settings" -#~ msgstr "高级设置" - #~ msgid "Affected news sources" #~ msgstr "受影响的新闻源" @@ -15306,15 +18924,9 @@ msgstr "" #~ msgid "App ID" #~ msgstr "应用程序 ID" -#~ msgid "Appearance" -#~ msgstr "外观" - #~ msgid "Append" #~ msgstr "追加" -#~ msgid "Applet" -#~ msgstr "小程序" - #~ msgid "Applets" #~ msgstr "小程序" @@ -15445,9 +19057,6 @@ msgstr "" #~ msgid "Austria" #~ msgstr "奥地利" -#~ msgid "Authentication" -#~ msgstr "身份验证" - #~ msgid "Authentication Required" #~ msgstr "需要验证" @@ -15697,9 +19306,6 @@ msgstr "" #~ msgid "Bookmarks" #~ msgstr "书签" -#~ msgid "Border Size" -#~ msgstr "边框大小" - #~ msgid "Bosnia and Herzegovina" #~ msgstr "波斯尼亚和黑塞哥维那" @@ -15820,9 +19426,6 @@ msgstr "" #~ msgid "Burundi" #~ msgstr "布隆迪" -#~ msgid "Business Services" -#~ msgstr "商务服务" - #~ msgid "By Date" #~ msgstr "按日期" @@ -15868,9 +19471,6 @@ msgstr "" #~ msgid "Cache" #~ msgstr "高速缓存" -#~ msgid "Calculator" -#~ msgstr "计算器" - #~ msgid "Calendar" #~ msgstr "日历" @@ -15992,9 +19592,6 @@ msgstr "" #~ msgid "Change Label" #~ msgstr "更改标签" -#~ msgid "Change set" -#~ msgstr "改动集" - #~ msgid "Channel Name:" #~ msgstr "通道名字:" @@ -16143,9 +19740,6 @@ msgstr "" #~ msgid "Close project" #~ msgstr "关闭工程" -#~ msgid "Close the current tab" -#~ msgstr "关闭当前标签" - #~ msgid "Close this window" #~ msgstr "关闭此窗口" @@ -16227,9 +19821,6 @@ msgstr "" #~ msgid "Command to execute" #~ msgstr "要执行的命令" -#~ msgid "Comment" -#~ msgstr "注释" - #~ msgid "Comment:" #~ msgstr "注释:" @@ -16445,9 +20036,6 @@ msgstr "" #~ msgid "Covariance" #~ msgstr "协方差" -#~ msgid "Create" -#~ msgstr "创建" - #~ msgid "Create New Bookmark Folder" #~ msgstr "新建书签文件夹" @@ -16457,9 +20045,6 @@ msgstr "" #~ msgid "Create a new project" #~ msgstr "创建新项目" -#~ msgid "Create a new window" -#~ msgstr "创建新窗口" - #~ msgid "Create and edit images or photographs" #~ msgstr "创建和编辑图像或照片" @@ -16499,9 +20084,6 @@ msgstr "" #~ msgid "Cumulative" #~ msgstr "累积的" -#~ msgid "Current File" -#~ msgstr "当前文件" - #~ msgid "Current session managed programs" #~ msgstr "目前会话管理的程序" @@ -16601,9 +20183,6 @@ msgstr "" #~ msgid "Darkwave" #~ msgstr "黑暗浪潮/阴暗乐派(Darkwave)" -#~ msgid "Data Type" -#~ msgstr "数据类型" - #~ msgid "Database" #~ msgstr "数据库" @@ -16622,9 +20201,6 @@ msgstr "" #~ msgid "Date" #~ msgstr "日期" -#~ msgid "Date Modified" -#~ msgstr "修改日期" - #~ msgid "Date Range" #~ msgstr "日期范围" @@ -16676,9 +20252,6 @@ msgstr "" #~ msgid "Delay between rolls" #~ msgstr "每次投掷之间的延迟" -#~ msgid "Delete %1" -#~ msgstr "删除 %1" - #~ msgid "Delete Bookmark" #~ msgstr "删除书签" @@ -16694,9 +20267,6 @@ msgstr "" #~ msgid "Delete node" #~ msgstr "删除节点" -#~ msgid "Delete the selected text" -#~ msgstr "删除选中的文本" - #~ msgid "Denmark" #~ msgstr "丹麦" @@ -16754,9 +20324,6 @@ msgstr "" #~ msgid "Diff file" #~ msgstr "Diff 文件" -#~ msgid "Digits:" -#~ msgstr "数字:" - #~ msgid "Dimensions:" #~ msgstr "尺寸:" @@ -16793,9 +20360,6 @@ msgstr "" #~ msgid "Djibouti" #~ msgstr "吉布提" -#~ msgid "Do you really want to delete these files?" -#~ msgstr "您确实要删除这些文件吗?" - #~ msgid "Do you want to restart Proklam to load current configurations ?" #~ msgstr "您要重新启动以便载入当前配置吗?" @@ -17057,9 +20621,6 @@ msgstr "" #~ msgid "Eritrea" #~ msgstr "厄立特里亚" -#~ msgid "Error Messages" -#~ msgstr "错误消息" - #~ msgid "Error on database insert." #~ msgstr "在插入记录时发生错误。" @@ -17190,9 +20751,6 @@ msgstr "" #~ msgid "FTP proxy port" #~ msgstr "FTP 代理端口" -#~ msgid "F_orward" -#~ msgstr "转发(_O)" - #~ msgid "Factor:" #~ msgstr "因子:" @@ -17258,9 +20816,6 @@ msgstr "" #~ msgid "File Format" #~ msgstr "文件格式" -#~ msgid "File Name" -#~ msgstr "文件名" - #~ msgid "File System" #~ msgstr "文件系统" @@ -17540,9 +21095,6 @@ msgstr "" #~ msgid "French-Canadian 105-key" #~ msgstr "加拿大法语 105 键" -#~ msgid "Friend" -#~ msgstr "朋友" - #~ msgid "Friends" #~ msgstr "好友" @@ -17665,9 +21217,6 @@ msgstr "" #~ msgid "Generating" #~ msgstr "正在生成" -#~ msgid "Generic error" -#~ msgstr "一般错误" - #~ msgid "GenericName=A KDE KPart Application" #~ msgstr "GenericName=KDE KPart 应用程序" @@ -17764,9 +21313,6 @@ msgstr "" #~ msgid "Go To" #~ msgstr "转到" -#~ msgid "Go back" -#~ msgstr "后退" - #~ msgid "Go forward" #~ msgstr "前进" @@ -17788,9 +21334,6 @@ msgstr "" #~ msgid "Graphics menu" #~ msgstr "图形菜单" -#~ msgid "Graphics:" -#~ msgstr "图形:" - #~ msgid "Gravity" #~ msgstr "重力" @@ -17830,9 +21373,6 @@ msgstr "" #~ msgid "Grenada" #~ msgstr "格林纳达" -#~ msgid "Grid" -#~ msgstr "网格" - #~ msgid "Group" #~ msgstr "组" @@ -17908,9 +21448,6 @@ msgstr "" #~ msgid "Handshake" #~ msgstr "握手" -#~ msgid "Hardcore" -#~ msgstr "粗口摇滚(Hardcore)" - #~ msgid "Hashes" #~ msgstr "乱码<复数>" @@ -17965,9 +21502,6 @@ msgstr "" #~ msgid "Hebrew xkb keymap" #~ msgstr "希伯来语 xkb 键盘映射" -#~ msgid "Height" -#~ msgstr "高度" - #~ msgid "Height of grid" #~ msgstr "网格高度" @@ -18031,9 +21565,6 @@ msgstr "" #~ msgid "Hobbyists Org." #~ msgstr "业余爱好者组织" -#~ msgid "Home Folder" -#~ msgstr "主文件夹" - #~ msgid "Home Phone" #~ msgstr "家庭电话" @@ -18195,9 +21726,6 @@ msgstr "" #~ msgid "Identifier" #~ msgstr "标识符" -#~ msgid "Ignore case" -#~ msgstr "忽略大小写" - #~ msgid "Image" #~ msgstr "图像" @@ -18318,9 +21846,6 @@ msgstr "" #~ msgid "Interlaced" #~ msgstr "隔行扫描" -#~ msgid "Internal" -#~ msgstr "内置" - #~ msgid "Internal GIMP procedure" #~ msgstr "内部 GIMP 过程" @@ -18496,15 +22021,9 @@ msgstr "" #~ msgid "Key:" #~ msgstr "键:" -#~ msgid "Keyboard" -#~ msgstr "键盘" - #~ msgid "Keyboard Bell" #~ msgstr "键盘响铃" -#~ msgid "Keyboard Shortcuts" -#~ msgstr "快捷键" - #~ msgid "Keyword/Expression" #~ msgstr "关键字/表达式" @@ -18582,9 +22101,6 @@ msgstr "" #~ msgid "Last name:" #~ msgstr "姓:" -#~ msgid "Latest" -#~ msgstr "最新的" - #~ msgid "Latin1" #~ msgstr "拉丁1" @@ -18669,9 +22185,6 @@ msgstr "" #~ msgid "Lighten Only" #~ msgstr "仅变亮" -#~ msgid "Line art" -#~ msgstr "艺术线条" - #~ msgid "Line style:" #~ msgstr "线型:" @@ -18840,9 +22353,6 @@ msgstr "" #~ msgid "Mailbox" #~ msgstr "邮箱" -#~ msgid "Main Window" -#~ msgstr "主窗口" - #~ msgid "Main toolbar" #~ msgstr "主工具栏" @@ -19176,9 +22686,6 @@ msgstr "" #~ msgid "Name of the news source" #~ msgstr "新闻源的名称" -#~ msgid "Name of the selected font" -#~ msgstr "选中字体的名称" - #~ msgid "Name: " #~ msgstr "名称:" @@ -19542,9 +23049,6 @@ msgstr "" #~ msgid "Next window" #~ msgstr "下一个窗口" -#~ msgid "Next year" -#~ msgstr "下一年" - #~ msgid "Nicaragua" #~ msgstr "尼加拉瓜" @@ -19575,9 +23079,6 @@ msgstr "" #~ msgid "No Color Dithering" #~ msgstr "无颜色抖动" -#~ msgid "No Tracks Selected" -#~ msgstr "没有选择音轨" - #~ msgid "No autosave" #~ msgstr "不自动保存" @@ -19668,9 +23169,6 @@ msgstr "" #~ msgid "O&ffline" #~ msgstr "离线(&F)" -#~ msgid "O_ptions" -#~ msgstr "选项(_P)" - #~ msgid "Object" #~ msgstr "对象" @@ -19707,9 +23205,6 @@ msgstr "" #~ msgid "Opacity:" #~ msgstr "不透明度:" -#~ msgid "Open" -#~ msgstr "打开" - #~ msgid "Open &Recent Project..." #~ msgstr "打开最近的工程(&R)..." @@ -20073,9 +23568,6 @@ msgstr "" #~ msgid "Please enter the code for the custom language:" #~ msgstr "请输入自定义语言的代码:" -#~ msgid "Please select type of the new resource:" -#~ msgstr "请选择新资源的类型:" - #~ msgid "Plugin" #~ msgstr "插件" @@ -20212,9 +23704,6 @@ msgstr "" #~ msgid "Press this button to remove the selected filter from the list." #~ msgstr "点击此按钮会从列表中删除所选的过滤器" -#~ msgid "Preview Height" -#~ msgstr "预览高度" - #~ msgid "Preview Width" #~ msgstr "预览宽度" @@ -20251,12 +23740,6 @@ msgstr "" #~ msgid "Print Screenshot" #~ msgstr "打印屏幕抓图" -#~ msgid "Print _line numbers" -#~ msgstr "打印行号(_L)" - -#~ msgid "Print preview" -#~ msgstr "打印预览" - #~ msgid "Print the current document" #~ msgstr "打印当前文档" @@ -20313,9 +23796,6 @@ msgstr "" #~ msgid "Project Configuration" #~ msgstr "工程配置" -#~ msgid "Project Information" -#~ msgstr "项目信息" - #~ msgid "Project Properties" #~ msgstr "项目属性" @@ -20418,9 +23898,6 @@ msgstr "" #~ msgid "Random play" #~ msgstr "随机播放" -#~ msgid "Range:" -#~ msgstr "范围:" - #~ msgid "Ranges" #~ msgstr "范围" @@ -20529,9 +24006,6 @@ msgstr "" #~ msgid "Reloa&d" #~ msgstr "重新装入(&D)" -#~ msgid "Reload" -#~ msgstr "重新装入" - #~ msgid "Remaining:" #~ msgstr "剩下:" @@ -20776,9 +24250,6 @@ msgstr "" #~ msgid "Rwanda" #~ msgstr "卢旺达" -#~ msgid "S&earch" -#~ msgstr "搜索(&E)" - #~ msgid "S&elected actions:" #~ msgstr "选用的动作(&E):" @@ -20854,9 +24325,6 @@ msgstr "" #~ msgid "Save as:" #~ msgstr "另存为:" -#~ msgid "Save the current file with a different name" -#~ msgstr "用不同的名称保存当前文件" - #~ msgid "Saved" #~ msgstr "已保存" @@ -20959,15 +24427,9 @@ msgstr "" #~ msgid "Search Domains" #~ msgstr "查找域" -#~ msgid "Search Forward" -#~ msgstr "向前搜索" - #~ msgid "Search again for the same string" #~ msgstr "再次搜索相同的字符串" -#~ msgid "Search by Name" -#~ msgstr "按名字搜索" - #~ msgid "Search for a string" #~ msgstr "搜索字符串" @@ -21013,9 +24475,6 @@ msgstr "" #~ msgid "Select File" #~ msgstr "选择文件" -#~ msgid "Select Folder" -#~ msgstr "选择文件夹" - #~ msgid "Select Font..." #~ msgstr "选择字体..." @@ -21076,18 +24535,12 @@ msgstr "" #~ msgid "Select dice to re-roll, press Roll!, or select score slot." #~ msgstr "选择要重掷的骰子,按“掷!”,或者选择积分槽。" -#~ msgid "Select file" -#~ msgstr "选择文件" - #~ msgid "Select font" #~ msgstr "选择字体" #~ msgid "Select player:" #~ msgstr "选择玩家:" -#~ msgid "Select scenario:" -#~ msgstr "选择情节:" - #~ msgid "Select the date from a calendar" #~ msgstr "从日历中选择日期" @@ -21250,9 +24703,6 @@ msgstr "" #~ msgid "Shortcut" #~ msgstr "快捷键" -#~ msgid "Show %1" -#~ msgstr "显示 %1" - #~ msgid "Show &Page List" #~ msgstr "显示页面列表(&P)" @@ -21265,9 +24715,6 @@ msgstr "" #~ msgid "Show Email Addresses" #~ msgstr "显示电子邮件地址" -#~ msgid "Show Grid" -#~ msgstr "显示网格" - #~ msgid "Show Postal Addresses" #~ msgstr "显示邮政编码" @@ -21277,9 +24724,6 @@ msgstr "" #~ msgid "Show Tooltips" #~ msgstr "显示工具提示" -#~ msgid "Show View Toolbar" -#~ msgstr "显示查看工具栏" - #~ msgid "Show Web Pages (URLs)" #~ msgstr "显示网页(URL)" @@ -21292,9 +24736,6 @@ msgstr "" #~ msgid "Show _Tool Bar" #~ msgstr "显示工具栏(_T)" -#~ msgid "Show hidden files" -#~ msgstr "显示隐藏文件" - #~ msgid "Show high scores and exit" #~ msgstr "显示高得分者并退出" @@ -21304,9 +24745,6 @@ msgstr "" #~ msgid "Show icons in the scrolling text" #~ msgstr "在滚动文本中显示图标" -#~ msgid "Show line numbers" -#~ msgstr "显示行号" - #~ msgid "Show log" #~ msgstr "显示日志" @@ -21536,9 +24974,6 @@ msgstr "" #~ msgid "Spell Checking" #~ msgstr "拼写检查" -#~ msgid "Spell checker" -#~ msgstr "拼写检查器" - #~ msgid "Spellcheck" #~ msgstr "拼写检查" @@ -21575,9 +25010,6 @@ msgstr "" #~ msgid "Start Alarm Client at Login" #~ msgstr "登录时自动运行定时客户程序" -#~ msgid "Start Time" -#~ msgstr "起始时间:" - #~ msgid "Start a new game" #~ msgstr "开始新游戏" @@ -21593,15 +25025,6 @@ msgstr "" #~ msgid "Start with default programs" #~ msgstr "用默认程序启动" -#~ msgid "Start:" -#~ msgstr "初始角度:" - -#~ msgid "Starting" -#~ msgstr "正在启动" - -#~ msgid "Starting Level:" -#~ msgstr "起始级别:" - #~ msgid "Stat mem cleared" #~ msgstr "统计记忆已清除" @@ -21650,9 +25073,6 @@ msgstr "" #~ msgid "Subscript" #~ msgstr "下标" -#~ msgid "Subsection" -#~ msgstr "子章节" - #~ msgid "Success" #~ msgstr "成功" @@ -21746,9 +25166,6 @@ msgstr "" #~ msgid "System" #~ msgstr "系统" -#~ msgid "System Information" -#~ msgstr "系统信息" - #~ msgid "System Tools" #~ msgstr "系统工具" @@ -21910,13 +25327,6 @@ msgstr "" #~ "/tmp/orbit-%s 目录并非当前用户 %s 所有。\n" #~ "请更正改目录的所有权。" -#~ msgid "" -#~ "The document \"%1\" has been modified.\n" -#~ "Do you want to save it?" -#~ msgstr "" -#~ "文档“%1”已经被修改。\n" -#~ "您要保存吗?" - #~ msgid "" #~ "The file\n" #~ "%1\n" @@ -21950,9 +25360,6 @@ msgstr "" #~ msgid "The menu of options" #~ msgstr "选项菜单" -#~ msgid "The name of the program" -#~ msgstr "程序的名字" - #~ msgid "The offset must be a positive integer value!" #~ msgstr "偏移值必须是一个正整数!" @@ -22300,9 +25707,6 @@ msgstr "" #~ msgid "URI currently displayed" #~ msgstr "目前显示的 URI" -#~ msgid "URL" -#~ msgstr "URL" - #~ msgid "URL:" #~ msgstr "URL:" @@ -22528,9 +25932,6 @@ msgstr "" #~ msgid "Use the names defined in the list of news sources" #~ msgstr "使用新闻来源列表中定义的名字" -#~ msgid "User" -#~ msgstr "用户" - #~ msgid "User Defined" #~ msgstr "用户定义" @@ -22540,9 +25941,6 @@ msgstr "" #~ msgid "User information" #~ msgstr "用户信息" -#~ msgid "User name" -#~ msgstr "用户名" - #~ msgid "User: " #~ msgstr "用户名:" @@ -22739,9 +26137,6 @@ msgstr "" #~ msgid "Widget name" #~ msgstr "部件名称" -#~ msgid "Width" -#~ msgstr "宽度" - #~ msgid "Width of grid" #~ msgstr "网格宽度" @@ -22919,9 +26314,6 @@ msgstr "" #~ msgid "_Author:" #~ msgstr "作者(_A):" -#~ msgid "_B" -#~ msgstr "蓝(_B)" - #~ msgid "_Background color:" #~ msgstr "背景颜色(_B):" @@ -22952,18 +26344,12 @@ msgstr "" #~ msgid "_Bytes" #~ msgstr "字节(_B)" -#~ msgid "_C" -#~ msgstr "青(_C)" - #~ msgid "_Cancel" #~ msgstr "取消(_C)" #~ msgid "_Category" #~ msgstr "类别(_C)" -#~ msgid "_Clear History" -#~ msgstr "清空历史(_C)" - #~ msgid "_Copy Link Address" #~ msgstr "复制链接地址(_C)" @@ -23228,9 +26614,6 @@ msgstr "" #~ msgid "_Randomize" #~ msgstr "随机产生(_R)" -#~ msgid "_Read" -#~ msgstr "读取(_R)" - #~ msgid "_Redo" #~ msgstr "重做(_R)" @@ -23336,9 +26719,6 @@ msgstr "" #~ msgid "_Update interval:" #~ msgstr "更新间隔(_U):" -#~ msgid "_User:" -#~ msgstr "用户(_U):" - #~ msgid "_Vertical" #~ msgstr "垂直(_V)" @@ -23384,9 +26764,6 @@ msgstr "" #~ msgid "brown gold" #~ msgstr "金褐" -#~ msgid "center" -#~ msgstr "中" - #~ msgid "char cell" #~ msgstr "字符单元格" @@ -23531,9 +26908,6 @@ msgstr "" #~ msgid "milliseconds" #~ msgstr "毫秒" -#~ msgid "modified" -#~ msgstr "已修改" - #~ msgid "month(s)" #~ msgstr "月" @@ -23573,9 +26947,6 @@ msgstr "" #~ msgid "private" #~ msgstr "私有" -#~ msgid "project" -#~ msgstr "项目" - #~ msgid "protected" #~ msgstr "被保护" diff --git a/src/po/zh_HK.po b/src/po/zh_HK.po index 1058396924..bf7df40394 100644 --- a/src/po/zh_HK.po +++ b/src/po/zh_HK.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-10 13:39-0600\n" +"POT-Creation-Date: 2019-02-20 07:49+0000\n" "PO-Revision-Date: 2012-03-11 12:55+0200\n" "Last-Translator: k.t. chan \n" "Language-Team: LANGUAGE \n" @@ -18,292 +18,1907 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 0.5\n" -#: src/hal/utils/meter.c:198 +#: src/emc/task/emctaskmain.cc:479 src/emc/task/emctaskmain.cc:512 #, c-format -msgid "ERROR: '%s' is not a valid probe type\n" -msgstr "故障: '%s' 不是有效的探查類型\n" +msgid "%s exceeds +X limit" +msgstr "%s 超過 +X 極限" -#: src/hal/utils/meter.c:206 +#: src/emc/task/emctaskmain.cc:484 src/emc/task/emctaskmain.cc:517 #, c-format -msgid "ERROR: no pin/signal/parameter name\n" -msgstr "故障: 沒有 針腳/信號/參數 名字\n" +msgid "%s exceeds +Y limit" +msgstr "%s 超過 +Y 極限" -#: src/hal/utils/meter.c:212 +#: src/emc/task/emctaskmain.cc:489 src/emc/task/emctaskmain.cc:522 #, c-format -msgid "" -"ERROR: -s option requires a probe type and a pin/signal/parameter name\n" -msgstr "故障: -s 選項需要一個探頭類型和 針/信號​​/參數 名稱\n" +msgid "%s exceeds +Z limit" +msgstr "%s 超過 +Z 極限" -#: src/hal/utils/meter.c:238 tcl/tklinuxcnc.tcl:764 -msgid "Hal Meter" -msgstr "HAL 儀表" +#: src/emc/task/emctaskmain.cc:494 src/emc/task/emctaskmain.cc:527 +#, c-format +msgid "%s exceeds -X limit" +msgstr "%s 超過 -X 極限" -#: src/hal/utils/meter.c:287 -msgid "_Select" -msgstr "選擇(_S)" +#: src/emc/task/emctaskmain.cc:499 src/emc/task/emctaskmain.cc:532 +#, c-format +msgid "%s exceeds -Y limit" +msgstr "%s 超過 -Y 極限" -#: src/hal/utils/meter.c:288 -msgid "E_xit" -msgstr "退出(_x)" +#: src/emc/task/emctaskmain.cc:504 src/emc/task/emctaskmain.cc:537 +#, c-format +msgid "%s exceeds -Z limit" +msgstr "%s 超過 -Z 極限" -#: src/hal/utils/meter.c:336 src/hal/utils/meter.c:364 -msgid "Select Item to Probe" -msgstr "選擇項目 以探測" +#: src/emc/task/emctaskmain.cc:892 +#, c-format +msgid "" +"command (%s) cannot be executed until the machine is out of E-stop and " +"turned on" +msgstr "命令 (%s) 不能執行 直到機器 離開 急停 並開動" -#: src/hal/utils/meter.c:640 -msgid " _Pins " -msgstr " 針(_P) " +#: src/emc/task/emctaskmain.cc:1013 +#, fuzzy, c-format +msgid "can't do that (%s:%d) in manual mode" +msgstr "不能做到這一點(%s)在手動模式" -#: src/hal/utils/meter.c:641 -msgid " _Signals " -msgstr " 信號​​(_S) " +#: src/emc/task/emctaskmain.cc:1113 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter idle" +msgstr "不能做到這一點(%s)在自動模式與翻譯空閒" -#: src/hal/utils/meter.c:642 -msgid " Para_meters " -msgstr " 參數(_m) " +#: src/emc/task/emctaskmain.cc:1180 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter reading" +msgstr "不能做到這一點(%s)在自動模式與翻譯閱讀" -#: src/hal/utils/meter.c:685 -msgid "_Close" -msgstr " 關閉(_C) " +#: src/emc/task/emctaskmain.cc:1265 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter paused" +msgstr "不能做到這一點(%s)在自動模式與翻譯暫停" -#: src/hal/utils/scope.c:126 -msgid "" -"Usage:\n" -" halscope [-h] [-i infile] [-o outfile] [num_samples]\n" -msgstr "" -"用法:\n" -" hal示波器 [-h][-i 文件入][-o 文件出][數字_樣本]\n" +#: src/emc/task/emctaskmain.cc:1334 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter waiting" +msgstr "不能做到這一點(%s)在自動模式與翻譯等待" -#: src/hal/utils/scope.c:474 src/hal/utils/scope.c:501 -msgid "Open Configuration File:" -msgstr "打開配置文件:" +#: src/emc/task/emctaskmain.cc:1442 +#, fuzzy, c-format +msgid "can't do that (%s:%d) in MDI mode" +msgstr "不能做到這一點(%s)在MDI模式" -#: src/hal/utils/scope.c:535 -msgid "_Open Configuration..." -msgstr "打開配置(_O)..." +#: src/emc/task/emctaskmain.cc:2100 +msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" +msgstr "無法切換模式,而模式是AUTO和解釋是沒有閒著" -#: src/hal/utils/scope.c:541 -msgid "_Save Configuration..." -msgstr "保存配置(_S)...." +#: src/emc/task/emctaskmain.cc:2157 tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 +#: tcl/mini.tcl:1775 tcl/tklinuxcnc.tcl:451 +#, c-format, tcl-format +msgid "can't open %s" +msgstr "不能打開 %s" -#: src/hal/utils/scope.c:550 -msgid "O_pen Data File..." -msgstr "打開數據文件(_p)..." +#: src/emc/task/emctaskmain.cc:2169 +msgid "Can't issue MDI command when not homed" +msgstr "不能發出 MDI命令當沒有歸零" -#: src/hal/utils/scope.c:557 -msgid "S_ave Data File..." -msgstr "保存數據文件(_a)..." +#: src/emc/task/emctaskmain.cc:2174 +msgid "Must be in MDI mode to issue MDI command" +msgstr "必須在MDI模式下發出 MDI命令" -#: src/hal/utils/scope.c:566 share/axis/tcl/axis.tcl:93 -msgid "_Quit" -msgstr "退出(_Q)" +#: src/emc/task/emctaskmain.cc:2256 +msgid "Can't run a program when not homed" +msgstr "不能運行程序,當沒有歸零" -#: src/hal/utils/scope.c:572 -msgid "_About Halscope" -msgstr "關於 Halscope(_A)" +#: src/emc/rs274ngc/interp_arc.cc:110 src/emc/rs274ngc/interp_arc.cc:284 +#, c-format +msgid "" +"Zero-radius arc: start=(%c%.4f,%c%.4f) center=(%c%.4f,%c%.4f) end=(%c%.4f,%c" +"%.4f) r1=%.4f r2=%.4f" +msgstr "" -#: src/hal/utils/scope.c:578 share/axis/tcl/axis.tcl:435 -msgid "_File" -msgstr "文件(_F)" +#: src/emc/rs274ngc/interp_arc.cc:120 src/emc/rs274ngc/interp_arc.cc:292 +#, c-format +msgid "" +"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " +"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " +"rel_err=%.4f%%" +msgstr "" -#: src/hal/utils/scope.c:582 share/axis/tcl/axis.tcl:447 -msgid "_Help" -msgstr "求助(_H)" +#: src/emc/rs274ngc/interp_check.cc:90 +msgid "G4 not allowed with G2 or G3 because they both use P" +msgstr "G4 不准 和 G2 或 G3使用,因為它們都使用 P" -#: src/hal/utils/scope.c:641 -msgid "HAL Oscilloscope" -msgstr "HAL示波器" +#: src/emc/rs274ngc/interp_check.cc:93 +msgid "Line with G10 does not have L1, L10, L11, L2, or L20" +msgstr "" -#: src/hal/utils/scope.c:669 -msgid "Horizontal" -msgstr "水平" +#: src/emc/rs274ngc/interp_check.cc:94 +msgid "P value not an integer with G10" +msgstr "P值不是整數使用 G10" -#: src/hal/utils/scope.c:677 -msgid "Selected Channel" -msgstr "選擇通道" +#: src/emc/rs274ngc/interp_check.cc:95 +#, fuzzy, c-format +msgid "P value out of range (0-9) with G10 L%d" +msgstr "P值超出範圍(0-9)與 G10 L2或L20" -#: src/hal/utils/scope.c:683 -msgid "Run Mode" -msgstr "運行模式" +#: src/emc/rs274ngc/interp_check.cc:96 +#, fuzzy, c-format +msgid "P value out of range with G10 L%d" +msgstr "P值超出範圍使用 G10 L1或G10 L10" -#: src/hal/utils/scope.c:686 -msgid "Trigger" -msgstr "觸發" +#: src/emc/rs274ngc/interp_check.cc:100 +msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." +msgstr "G5.2和G5.3之間代碼,只有更多的G5.2代碼是允許的." -#: src/hal/utils/scope.c:692 -msgid "Vertical" -msgstr "垂直" +#: src/emc/rs274ngc/interp_check.cc:259 +msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" +msgstr "D 字無 G41,G41.1,G42,G42.1,或G96使用它" -#: src/hal/utils/scope.c:700 share/axis/tcl/axis.tcl:135 -#: share/axis/tcl/axis.tcl:1199 -msgid "Stop" -msgstr "停" +#: src/emc/rs274ngc/interp_check.cc:265 +msgid "E word with no G76, M66, M67 or M68 to use it" +msgstr "E字無 G76,M66,M67或M68使用它" -#: src/hal/utils/scope.c:703 -msgid "Normal" -msgstr "正常" +#: src/emc/rs274ngc/interp_check.cc:270 +msgid "H word with no G43 or G76 to use it" +msgstr "H字沒有 G43或G76使用它" -#: src/hal/utils/scope.c:706 -msgid "Single" -msgstr "單" +#: src/emc/rs274ngc/interp_check.cc:276 +msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" +msgstr "I字 沒有 G2,G3,G5,G5.1,G10,G76或G87使用它" -#: src/hal/utils/scope.c:709 -msgid "Roll" -msgstr "翻滾" +#: src/emc/rs274ngc/interp_check.cc:282 +msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" +msgstr "J字 沒有 G2,G3,G5,G5.1,G10,G76或G87使用它" -#: src/hal/utils/scope_horiz.c:130 -msgid "Zoom" -msgstr "縮放" +#: src/emc/rs274ngc/interp_check.cc:288 +msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" +msgstr "K字 沒有 G2,G3,G33,G33.1,G76或G87使用它" -#: src/hal/utils/scope_horiz.c:131 -msgid " Pos " -msgstr "位置" +#: src/emc/rs274ngc/interp_check.cc:298 +msgid "" +"L word with no G10, cutter compensation, canned cycle, digital/analog input, " +"or NURBS code" +msgstr "L字無 G10,刀具補償,固定循環,數字/模擬輸入, 或 NURBS 代碼" -#: src/hal/utils/scope_horiz.c:164 +#: src/emc/rs274ngc/interp_check.cc:310 msgid "" -"----- Samples\n" -"at ---- KHz" +"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " +"M53 M62 M63 M64 M65 M66 or user M code to use it" msgstr "" -"-----選樣\n" -"於 ---- KHz" +"P字G2 G3 G4沒有 G5 G10 G64 G76 G82 G86 G88 G5.2 G89或M50 M51 M52 M53 M62 M63 " +"M64 M65 M66或用戶的M代碼使用它" -#: src/hal/utils/scope_horiz.c:459 -msgid "Realtime component not loaded" -msgstr "實時元件沒有加載" +#: src/emc/rs274ngc/interp_check.cc:315 +#, fuzzy +msgid "P value not an integer with M19 G2 or G3" +msgstr "P值不是整數使用 G2或G3" -#: src/hal/utils/scope_horiz.c:460 -msgid "" -"HALSCOPE uses a realtime component called scope_rt'\n" -"to sample signals for display. It is not currently loaded\n" -"and attempting to load it automatically failed. More information\n" -"may be available in the terminal where halscope was started.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Load the component (using 'halcmd loadrt scope_rt'), then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +#: src/emc/rs274ngc/interp_check.cc:317 +msgid "P value must be 0,1,or 2 with M19" msgstr "" -#: src/hal/utils/scope_horiz.c:495 -msgid "Realtime function not linked" -msgstr "實時功能沒有鏈接" +#: src/emc/rs274ngc/interp_check.cc:319 +msgid "P value should be 1 or greater with G2 or G3" +msgstr "P值應為 1或更大的G2或G3" -#: src/hal/utils/scope_horiz.c:496 +#: src/emc/rs274ngc/interp_check.cc:327 +#, fuzzy msgid "" -"The HALSCOPE realtime sampling function\n" -"must be called from a HAL thread in to\n" -"determine the sampling rate.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Select a thread name and multiplier then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " +"code that uses it" msgstr "" +"Q字,沒有 G5,G10,G64,G73,G76,G83,M66,M67,M68或用戶 M代碼 使用它" -#: src/hal/utils/scope_horiz.c:503 -msgid "Select Sample Rate" -msgstr "選擇採樣率" - -#: src/hal/utils/scope_horiz.c:504 -msgid "" -"Select a thread name and multiplier then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +#: src/emc/rs274ngc/interp_check.cc:337 +msgid "R value must be within 0..360 with M19" msgstr "" -"選擇一個線程的名稱和倍增然後點擊 'OK'\n" -"或\n" -"點擊 '退出' 以離開 HAL示波器" -#: src/hal/utils/scope_horiz.c:526 -msgid "Thread:" -msgstr "線程:" +#: src/emc/rs274ngc/interp_convert.cc:139 +msgid "You must specify both X and Y coordinates for Control Points" +msgstr "您必須指定X和Y坐標對控制點" -#: src/hal/utils/scope_horiz.c:534 -msgid "Sample Period:" -msgstr "採樣 時段:" +#: src/emc/rs274ngc/interp_convert.cc:142 +msgid "Can specify P without X and Y only for the first control point" +msgstr "可以指定P沒有 X和Y只對第一個控制點" -#: src/hal/utils/scope_horiz.c:542 -msgid "Sample Rate:" -msgstr "採樣率:" +#: src/emc/rs274ngc/interp_convert.cc:145 +msgid "Must specify positive weight P for every Control Point" +msgstr "必須指定積極重量P為每一個控制點" -#: src/hal/utils/scope_horiz.c:558 src/emc/usr_intf/touchy/mdi.py:78 -msgid "Thread" -msgstr "線程" +#: src/emc/rs274ngc/interp_convert.cc:148 +msgid "Cannot make a NURBS with 0 feedrate" +msgstr "不能作出NURBS使用進給速度0" -#: src/hal/utils/scope_horiz.c:559 -msgid "Period" -msgstr "期段" +#: src/emc/rs274ngc/interp_convert.cc:183 +msgid "Cannot use G5.3 without G5.2 first" +msgstr "不能使用 G5.3沒有 G5.2先行" -#: src/hal/utils/scope_horiz.c:619 -msgid "Multiplier:" -msgstr "倍增:" +#: src/emc/rs274ngc/interp_convert.cc:184 +#, c-format +msgid "" +"You must specify a number of control points at least equal to the order L = " +"%d" +msgstr "您必須指定一個數字控制點至少等於順序L =%d" -#: src/hal/utils/scope_horiz.c:636 -msgid "Record Length" -msgstr "記錄長度" +#: src/emc/rs274ngc/interp_convert.cc:213 +msgid "Cannot convert spline with cutter radius compensation" +msgstr "無法轉換 樣條曲線 有刀具半徑補償" -#: src/hal/utils/scope_horiz.c:639 -#, c-format -msgid "%5d samples (1 channel)" -msgstr "%5d 樣品(1通道)" +#: src/emc/rs274ngc/interp_convert.cc:223 +msgid "Splines must be in the XY plane" +msgstr "樣條曲線必須在XY平面" -#: src/hal/utils/scope_horiz.c:641 -#, c-format -msgid "%5d samples (2 channels)" -msgstr "%5d 樣品 (2通道)" +#: src/emc/rs274ngc/interp_convert.cc:228 +msgid "Splines may not have motion in Z, A, B, or C" +msgstr "樣條曲線 無法 有動作 在 Z,A,B 或 C" -#: src/hal/utils/scope_horiz.c:645 -#, c-format -msgid "%5d samples (4 channels)" -msgstr "%5d 樣品 (4通道)" +#: src/emc/rs274ngc/interp_convert.cc:232 +msgid "Must specify both I and J with G5.1" +msgstr "必須同時指定I和J使用 G5.1" -#: src/hal/utils/scope_horiz.c:649 +#: src/emc/rs274ngc/interp_convert.cc:251 +msgid "Must specify both I and J, or neither" +msgstr "必須同時指定 I和J,或者兩者都不要" + +#: src/emc/rs274ngc/interp_convert.cc:262 +msgid "Must specify both P and Q with G5" +msgstr "必須同時指定P和Q使用 G5" + +#: src/emc/rs274ngc/interp_convert.cc:363 +msgid "" +"The move just after exiting cutter compensation mode must be straight, not " +"an arc" +msgstr "移動只是在退出刀具補償模式必須是直的,而不是一個弧" + +#: src/emc/rs274ngc/interp_convert.cc:371 +msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:383 +#: src/emc/rs274ngc/interp_convert.cc:4488 +msgid "Cannot feed with zero spindle speed in feed per rev mode" +msgstr "不能進給 用 零速度主軸 在 進給每轉 模式下" + +#: src/emc/rs274ngc/interp_convert.cc:394 +#: src/emc/rs274ngc/interp_convert.cc:400 +#: src/emc/rs274ngc/interp_convert.cc:409 +#: src/emc/rs274ngc/interp_convert.cc:415 +#: src/emc/rs274ngc/interp_convert.cc:424 +#: src/emc/rs274ngc/interp_convert.cc:430 +#, c-format +msgid "%c word missing in absolute center arc" +msgstr "%c 字中 缺少 在 絕對的中心弧" + +#: src/emc/rs274ngc/interp_convert.cc:662 +msgid "" +"Radius of cutter compensation entry arc is not greater than the tool radius" +msgstr "刀具半徑補償進入弧不大於刀具半徑" + +#: src/emc/rs274ngc/interp_convert.cc:882 +#: src/emc/rs274ngc/interp_convert.cc:892 src/emc/rs274ngc/interp_queue.cc:696 +msgid "" +"Arc move in concave corner cannot be reached by the tool without gouging" +msgstr "弧移動無法到達凹角 使用該工具 而沒有刨削槽" + +#: src/emc/rs274ngc/interp_convert.cc:918 +msgid "Arc to arc motion is invalid because the arcs have the same center" +msgstr "弧至弧移動是無效的,因為有相同的弧中心" + +#: src/emc/rs274ngc/interp_convert.cc:921 +msgid "" +"Arc to arc motion makes a corner the compensated tool can't fit in without " +"gouging" +msgstr "弧至弧運動 做一個角落 補償工具 不適合 有刨削槽" + +#: src/emc/rs274ngc/interp_convert.cc:1053 +#: src/emc/rs274ngc/interp_convert.cc:1057 +#: src/emc/rs274ngc/interp_convert.cc:1061 +#: src/emc/rs274ngc/interp_convert.cc:3945 +#: src/emc/rs274ngc/interp_convert.cc:3948 +#: src/emc/rs274ngc/interp_convert.cc:3951 src/emc/rs274ngc/interp_find.cc:97 +#, c-format +msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" +msgstr "無效的絕對位置 %5.2f 給包裹 旋轉軸 %c" + +#: src/emc/rs274ngc/interp_convert.cc:1563 +msgid "Cannot change control mode with cutter radius compensation on" +msgstr "不能改變控制模式 當 使用刀具半徑補償" + +#: src/emc/rs274ngc/interp_convert.cc:1676 +msgid "Cannot change coordinate systems with cutter radius compensation on" +msgstr "不能改變坐標系 當 使用刀具半徑補償" + +#: src/emc/rs274ngc/interp_convert.cc:1920 +#, c-format +msgid "G%d.1 with no D word" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:1923 +#, c-format +msgid "G%d.1 with L word, but plane is not G18" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:1934 +#, c-format +msgid "G%d requires D word to be a whole number" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:1941 +#, c-format +msgid "G%d with lathe tool, but plane is not G18" +msgstr "G%d 與車刀,但平面不是 G18" + +#: src/emc/rs274ngc/interp_convert.cc:2340 +msgid "Cannot set reference point with cutter compensation in effect" +msgstr "無法設置 參考點 當 使用刀具補償" + +#: src/emc/rs274ngc/interp_convert.cc:2859 +#, c-format +msgid "gen_restore G20/G21 failed: '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:2907 +#, c-format +msgid "" +"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:2908 +#, c-format +msgid "BUG: restore from level %d !?" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:2909 +#, c-format +msgid "BUG: restore to level %d !?" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:2928 +#, c-format +msgid "M7x: restore_settings G20/G21 failed: '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:2946 +#, c-format +msgid "M7x: restore_settings failed executing: '%s': %s" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3005 +#, c-format +msgid "Failed to restore interp state on abort '%s': %s" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3069 +msgid "No valid P word with M62" +msgstr "沒有有效的P字使用 M62" + +#: src/emc/rs274ngc/interp_convert.cc:3072 +msgid "No valid P word with M63" +msgstr "沒有有效的P字使用 M62" + +#: src/emc/rs274ngc/interp_convert.cc:3075 +msgid "No valid P word with M64" +msgstr "沒有有效的P字使用 M64" + +#: src/emc/rs274ngc/interp_convert.cc:3078 +msgid "No valid P word with M65" +msgstr "沒有有效的P字使用 M65" + +#: src/emc/rs274ngc/interp_convert.cc:3111 +msgid "invalid P-word with M66" +msgstr "沒有有效的P字使用 M66" + +#: src/emc/rs274ngc/interp_convert.cc:3126 +msgid "Cannot wait for digital input with cutter radius compensation on" +msgstr "不能等待數碼輸入當刀具半徑補償在使用" + +#: src/emc/rs274ngc/interp_convert.cc:3138 +msgid "Cannot wait for analog input with cutter radius compensation on" +msgstr "不能等待模擬輸入當刀具半徑補償在使用" + +#: src/emc/rs274ngc/interp_convert.cc:3152 +msgid "Invalid analog index with M67" +msgstr "無效的模擬指標使用 M67" + +#: src/emc/rs274ngc/interp_convert.cc:3157 +msgid "Invalid analog index with M68" +msgstr "無效的模擬指標使用 M68" + +#: src/emc/rs274ngc/interp_convert.cc:3188 +#, fuzzy +msgid "Need non-negative Q-word to specify tool number with M61" +msgstr "需要正的 Q-字 指定刀具號 當使用M61" + +#: src/emc/rs274ngc/interp_convert.cc:3258 +msgid "Q word with M19 requires a value > 0" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3286 +msgid "Cannot restore context from invalid stack frame - missing M70/M73?" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3327 +#: src/emc/rs274ngc/interp_convert.cc:3344 +#: src/emc/rs274ngc/interp_convert.cc:3359 +#: src/emc/rs274ngc/interp_convert.cc:3373 +#: src/emc/rs274ngc/interp_convert.cc:3387 +msgid "Cannot enable overrides with cutter radius compensation on" +msgstr "無法啟用超速 當刀具半徑補償在使用" + +#: src/emc/rs274ngc/interp_convert.cc:3334 +#: src/emc/rs274ngc/interp_convert.cc:3349 +#: src/emc/rs274ngc/interp_convert.cc:3364 +#: src/emc/rs274ngc/interp_convert.cc:3378 +#: src/emc/rs274ngc/interp_convert.cc:3392 +msgid "Cannot disable overrides with cutter radius compensation on" +msgstr "無法禁用超速 當刀具半徑補償在使用" + +#: src/emc/rs274ngc/interp_convert.cc:3506 +#: src/emc/rs274ngc/interp_convert.cc:3507 +#: src/emc/rs274ngc/interp_convert.cc:3508 +#, c-format +msgid "Indexing axis %c can only be moved with G0" +msgstr "指標軸 %c 只能 用 G0 移動" + +#: src/emc/rs274ngc/interp_convert.cc:3515 +#: src/emc/rs274ngc/interp_convert.cc:3517 +#: src/emc/rs274ngc/interp_convert.cc:3519 +#, c-format +msgid "Indexing axis %c can only be moved alone" +msgstr "指標軸 %c 只能單獨移動 " + +#: src/emc/rs274ngc/interp_convert.cc:3621 +msgid "Cannot probe with feed per rev mode" +msgstr "無法 探測 使用 進給每轉 模式" + +#: src/emc/rs274ngc/interp_convert.cc:3669 +msgid "Cannot change retract mode with cutter radius compensation on" +msgstr "不能改變回縮模式當刀具半徑補償在使用" + +#: src/emc/rs274ngc/interp_convert.cc:3703 +msgid "G10 L1 without offsets has no effect" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3809 +msgid "Q number in G10 is not an integer" +msgstr "Q 編號在 G10 是不是整數" + +#: src/emc/rs274ngc/interp_convert.cc:3810 +msgid "Invalid tool orientation" +msgstr "無效的刀具定位" + +#: src/emc/rs274ngc/interp_convert.cc:3933 +msgid "I J words not allowed with G10 L2" +msgstr "" + +#: src/emc/rs274ngc/interp_convert.cc:3954 +msgid "" +"Cannot change the active coordinate system with cutter radius compensation on" +msgstr "不能改變激活的坐標系當刀具半徑補償在使用" + +#: src/emc/rs274ngc/interp_convert.cc:3962 +msgid "R not allowed in G10 L20" +msgstr "R 不容許在 G10 L20" + +#: src/emc/rs274ngc/interp_convert.cc:4550 +msgid "Spindle not turning in G33" +msgstr "在 G33 主軸不轉動" + +#: src/emc/rs274ngc/interp_convert.cc:4560 +msgid "Spindle not turning in G33.1" +msgstr "在 G33.1 主軸不轉動" + +#: src/emc/rs274ngc/interp_convert.cc:4603 +msgid "BUG: An axis incorrectly moved along with an indexer" +msgstr "BUG: 一軸錯誤地和索引器一起移動" + +#: src/emc/rs274ngc/interp_convert.cc:4616 +msgid "BUG: trying to index incorrect axis" +msgstr "BUG: 試圖指標不正確軸" + +#: src/emc/rs274ngc/interp_convert.cc:4708 +msgid "Cannot use G76 threading cycle with cutter radius compensation on" +msgstr "不能使用G76螺紋週期當刀具半徑補償在使用" + +#: src/emc/rs274ngc/interp_convert.cc:4711 +msgid "In G76, I must not be 0" +msgstr "在 G76,I 不能為 0" + +#: src/emc/rs274ngc/interp_convert.cc:4713 +msgid "In G76, J must be greater than 0" +msgstr "在 G76,J 必須大於 0" + +#: src/emc/rs274ngc/interp_convert.cc:4715 +msgid "In G76, K must be greater than J" +msgstr "在 G76,K 必須大於 J" + +#: src/emc/rs274ngc/interp_convert.cc:4858 +msgid "" +"Length of cutter compensation entry move is not greater than the tool radius" +msgstr "刀具長度補償 進入移動 不大於刀具半徑" + +#: src/emc/rs274ngc/interp_convert.cc:5077 +msgid "Zero degree inside corner is invalid for cutter compensation" +msgstr "零度內角 是無效的刀具補償" + +#: src/emc/rs274ngc/interp_convert.cc:5115 +#: src/emc/rs274ngc/interp_convert.cc:5123 +msgid "" +"Arc to straight motion makes a corner the compensated tool can't fit in " +"without gouging" +msgstr "弧到直線運動做的角,補償工具不適合會做成刨削槽" + +#: src/emc/rs274ngc/interp_convert.cc:5207 +msgid "Cannot change tools with cutter radius compensation on" +msgstr "不能更改工具,刀具半徑補償在使用" + +#: src/emc/rs274ngc/interp_convert.cc:5328 +msgid "Cannot change tool offset with cutter radius compensation on" +msgstr "不能改變刀具補償當刀具半徑補償在使用" + +#: src/emc/rs274ngc/interp_queue.cc:694 +#, c-format +msgid "" +"BUG: cutter compensation has generated an invalid arc with mismatched radii " +"r1 %f r2 %f\n" +msgstr "BUG: 刀具補償產生了一個無效的圓弧半徑不匹配的 r1 %f r2 %f\n" + +#: src/emc/rs274ngc/interp_queue.cc:716 +msgid "BUG: Unsupported plane in cutter compensation" +msgstr "BUG: 不支持的平面刀具補償" + +#: src/emc/rs274ngc/interp_queue.cc:729 +msgid "" +"Straight traverse in concave corner cannot be reached by the tool without " +"gouging" +msgstr "直導線在凹角不能達到,會做成刨削槽" + +#: src/emc/rs274ngc/interp_queue.cc:757 +#, c-format +msgid "BUG: Unsupported plane [%d] in cutter compensation" +msgstr "BUG: 不支持的平面 [%d] 中的刀具補償" + +#: src/emc/rs274ngc/interp_queue.cc:771 +msgid "" +"Straight feed in concave corner cannot be reached by the tool without gouging" +msgstr "在凹角直進給不能達到,會做成刨削槽" + +#: src/emc/rs274ngc/interp_cycles.cc:630 +msgid "Cannot feed with zero feed rate" +msgstr "不能進給當進給速率為零" + +#: src/emc/rs274ngc/interp_cycles.cc:631 +msgid "Cannot use inverse time feed with canned cycles" +msgstr "不能用反時限進給 當使用固定循環" + +#: src/emc/rs274ngc/interp_cycles.cc:632 +msgid "Cannot use canned cycles with cutter compensation on" +msgstr "不能用固定循環當刀具補償在使用中" + +#: src/emc/rs274ngc/interp_cycles.cc:829 +msgid "G17 canned cycle is not possible on a machine without Z axis" +msgstr "G17 固定循環是不可能的,機器上沒有 Z 軸" + +#: src/emc/rs274ngc/interp_cycles.cc:1015 +msgid "G17.1 canned cycle is not possible on a machine without W axis" +msgstr "G17.1 固定循環是不可能的機器上沒有 W 軸" + +#: src/emc/rs274ngc/interp_cycles.cc:1231 +msgid "G19 canned cycle is not possible on a machine without X axis" +msgstr "G19 固定循環是不可能的機器上沒有 X 軸" + +#: src/emc/rs274ngc/interp_cycles.cc:1399 +msgid "G19.1 canned cycle is not possible on a machine without U axis" +msgstr "G19.1 固定循環是不可能的機器上沒有 U 軸" + +#: src/emc/rs274ngc/interp_cycles.cc:1624 +msgid "G18 canned cycle is not possible on a machine without Y axis" +msgstr "G18 固定循環是不可能的機器上沒有 Y 軸" + +#: src/emc/rs274ngc/interp_cycles.cc:1791 +msgid "G18.1 canned cycle is not possible on a machine without V axis" +msgstr "G18.1 固定循環是不可能的機器上沒有 V 軸" + +#: src/emc/rs274ngc/interp_find.cc:170 +msgid "Cannot use polar coordinates with G53" +msgstr "不能用極坐標使用 G53" + +#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 +#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 +#: src/emc/rs274ngc/interp_find.cc:347 +msgid "Cannot specify X or Y words with polar coordinate" +msgstr "無法指定X或Y字當使用極坐標" + +#: src/emc/rs274ngc/interp_find.cc:272 +msgid "Must specify angle in polar coordinate if at the origin" +msgstr "必須指定角度在極坐標如過在原點" + +#: src/emc/rs274ngc/interp_find.cc:338 +msgid "" +"Incremental motion with polar coordinates is indeterminate when at the origin" +msgstr "增量運動使用極坐標是不確定的,當在原點" + +#: src/emc/rs274ngc/interp_find.cc:348 +msgid "G91 motion with polar coordinates is indeterminate when at the origin" +msgstr "G91運動使用極坐標是不確定的,當在原點" + +#: src/emc/rs274ngc/interp_find.cc:720 +#, c-format +msgid "Requested tool %d not found in the tool table" +msgstr "請求工具 %d 刀具表找不到" + +#: src/emc/rs274ngc/interp_internal.cc:161 +msgid "Cannot use polar coordinate on a machine lacking X or Y axes" +msgstr "不能用極坐標的機器上沒有 X或Y軸" + +#: src/emc/rs274ngc/interp_internal.cc:162 +msgid "Cannot use polar coordinate except in G17 plane" +msgstr "不能使用極坐標除在G17平面" + +#: src/emc/rs274ngc/interp_internal.cc:163 +msgid "Cannot specify both polar coordinate and X word" +msgstr "不能同時指定極坐標和 X 字" + +#: src/emc/rs274ngc/interp_internal.cc:164 +msgid "Cannot specify both polar coordinate and Y word" +msgstr "不能同時指定極坐標和 Y 字" + +#: src/emc/rs274ngc/interp_internal.cc:185 +#: src/emc/rs274ngc/interp_internal.cc:199 +#: src/emc/rs274ngc/interp_internal.cc:214 +msgid "Polar coordinates can only be used for motion" +msgstr "極坐標只能用於運動" + +#: src/emc/rs274ngc/interp_read.cc:1150 src/emc/rs274ngc/interp_read.cc:1154 +#, c-format +msgid "Bad character '\\%03o' used" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1154 +#, c-format +msgid "Bad character '%c' used" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1678 +msgid "Left bracket missing after 'while'" +msgstr "'while' 後丟失左括號" + +#: src/emc/rs274ngc/interp_read.cc:1693 +msgid "Left bracket missing after 'repeat'" +msgstr "'repeat' 後丟失左括號" + +#: src/emc/rs274ngc/interp_read.cc:1708 +msgid "Left bracket missing after 'if'" +msgstr "'if' 後丟失左括號" + +#: src/emc/rs274ngc/interp_read.cc:1723 +msgid "Left bracket missing after 'elseif'" +msgstr "'elseif' 後丟失左括號" + +#: src/emc/rs274ngc/interp_read.cc:1926 +msgid "Cannot read current position with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1941 +msgid "Expected # reading parameter" +msgstr "預計 # 讀參數" + +#: src/emc/rs274ngc/interp_read.cc:1943 +msgid "Expected ] reading bracketed parameter" +msgstr "預期 ] 讀方括號內的參數" + +#: src/emc/rs274ngc/interp_read.cc:2615 +#, c-format +msgid "bad number format (conversion failed) parsing '%s'" +msgstr "不良數字格式 (轉換失敗) 解析 '%s'" + +#: src/emc/rs274ngc/interp_read.cc:2616 +#, c-format +msgid "bad number format (trailing characters) parsing '%s'" +msgstr "不良數字格式 (尾隨字符) 解析 '%s'" + +#: src/emc/rs274ngc/interp_read.cc:2706 +msgid "Calculation resulted in 'not a number'" +msgstr "計算結果 'not a number'" + +#: src/emc/rs274ngc/interp_read.cc:2708 +msgid "Calculation resulted in 'infinity'" +msgstr "計算結果 'infinity'" + +#: src/emc/rs274ngc/interp_read.cc:3001 +#, c-format +msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:3113 +msgid "Multiple U words on one line" +msgstr "多個 U 字在一行" + +#: src/emc/rs274ngc/interp_read.cc:3129 +msgid "Multiple V words on one line" +msgstr "多個 V 字在一行" + +#: src/emc/rs274ngc/interp_read.cc:3145 +msgid "Multiple W words on one line" +msgstr "多個 W 字在一行" + +#: src/emc/rs274ngc/interp_o_word.cc:97 +#, c-format +msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:722 +#, fuzzy, c-format +msgid "%d: not in a subroutine definition: '%s'" +msgstr "未在子程序定義" + +#: src/emc/rs274ngc/interp_o_word.cc:759 src/emc/rs274ngc/interp_o_word.cc:809 +#, c-format +msgid "%d: duplicate O-word label: '%s' - defined in line %d" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:862 +#, c-format +msgid "%d: duplicate O-word label - already defined in line %d: '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:886 src/emc/rs274ngc/interp_o_word.cc:944 +#: src/emc/rs274ngc/interp_o_word.cc:978 src/emc/rs274ngc/interp_o_word.cc:996 +#: src/emc/rs274ngc/interp_o_word.cc:1013 +#: src/emc/rs274ngc/interp_o_word.cc:1038 +#, c-format +msgid "%d: undefined O-word label: '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:889 src/emc/rs274ngc/interp_o_word.cc:947 +#, c-format +msgid "%d: no matching 'if' label: '%s' (found '%s' in line %d)" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:981 +#, c-format +msgid "%d: no matching label: '%s' (found '%s' in line %d): '%s'" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:999 src/emc/rs274ngc/interp_o_word.cc:1016 +#, c-format +msgid "%d: no matching while/do label: '%s' (found '%s' in line %d)" +msgstr "" + +#: src/emc/rs274ngc/interp_o_word.cc:1042 +#, c-format +msgid "%d: no matching label: '%s' (found '%s' in line %d)" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:166 +#, c-format +msgid "Named parameter #<%s> not defined" +msgstr "命名參數 #<%s> 沒有定義" + +#: src/emc/rs274ngc/interp_namedparams.cc:196 +#, fuzzy, c-format +msgid "cant open ini file '%s'" +msgstr "不能打開 %s" + +#: src/emc/rs274ngc/interp_namedparams.cc:213 +#, fuzzy, c-format +msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" +msgstr "命名參數 #<%s> 沒有定義" + +#: src/emc/rs274ngc/interp_namedparams.cc:237 +#, c-format +msgid "fetch_hal_param: hal_init(%s): %d" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:238 +#, c-format +msgid "fetch_hal_param: hal_ready(): %d" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:419 +#, c-format +msgid "Internal error: Could not assign #<%s>" +msgstr "內部錯誤:無法指派 #<%S>" + +#: src/emc/rs274ngc/interp_namedparams.cc:427 +#, c-format +msgid "Cannot assign to read-only parameter #<%s>" +msgstr "" + +#: src/emc/rs274ngc/interp_namedparams.cc:731 +#, c-format +msgid "BUG: lookup_named_param(%s): unhandled index=%fn" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_pre.cc:1407 src/emc/rs274ngc/rs274ngc_pre.cc:1482 +msgid "Queue is not empty after tool change" +msgstr "換刀後隊列不空" + +#: src/emc/rs274ngc/rs274ngc_pre.cc:1786 +#, c-format +msgid "Unable to open parameter file: '%s'" +msgstr "無法打開參數文件: '%s'" + +#: src/emc/rs274ngc/rs274ngc_return.hh:19 +msgid "A file is already open" +msgstr "一個文件已經打開" + +#: src/emc/rs274ngc/rs274ngc_return.hh:21 +#, fuzzy +msgid "All axes missing with g52 or g92" +msgstr "所有軸缺少使用 G92" + +#: src/emc/rs274ngc/rs274ngc_return.hh:22 +msgid "All axes missing with motion code" +msgstr "所有軸缺少運動代碼" + +#: src/emc/rs274ngc/rs274ngc_return.hh:23 +msgid "Arc radius too small to reach end point" +msgstr "圓弧半徑太小,無法達到終點" + +#: src/emc/rs274ngc/rs274ngc_return.hh:24 +msgid "Argument to acos out of range" +msgstr "acos 參數超出範圍" + +#: src/emc/rs274ngc/rs274ngc_return.hh:25 +msgid "Argument to asin out of range" +msgstr "asin 參數超出範圍" + +#: src/emc/rs274ngc/rs274ngc_return.hh:26 +msgid "Attempt to divide by zero" +msgstr "嘗試除以零" + +#: src/emc/rs274ngc/rs274ngc_return.hh:27 +msgid "Attempt to raise negative to non integer power" +msgstr "試圖提高負對非整數冪" + +#: src/emc/rs274ngc/rs274ngc_return.hh:28 +msgid "Bad format unsigned integer" +msgstr "壞格式無符號整數" + +#: src/emc/rs274ngc/rs274ngc_return.hh:29 +msgid "Bad number format" +msgstr "錯誤的數字格式" + +#: src/emc/rs274ngc/rs274ngc_return.hh:30 +msgid "Bug bad g code modal group 0" +msgstr "錯誤: 不良 g 代碼模式組 0" + +#: src/emc/rs274ngc/rs274ngc_return.hh:31 +msgid "Bug code not g0 or g1" +msgstr "錯誤: 代碼不 g0 或 g1" + +#: src/emc/rs274ngc/rs274ngc_return.hh:32 +msgid "Bug code not g17 g18 or g19" +msgstr "錯誤: 代碼不是 g17 g18或 g19" + +#: src/emc/rs274ngc/rs274ngc_return.hh:33 +msgid "Bug code not g20 or g21" +msgstr "錯誤: 代碼不是 g20 或 g21" + +#: src/emc/rs274ngc/rs274ngc_return.hh:34 +msgid "Bug code not g28 or g30" +msgstr "錯誤: 代碼不是 g28 或g30" + +#: src/emc/rs274ngc/rs274ngc_return.hh:35 +msgid "Bug code not g2 or g3" +msgstr "錯誤: 代碼不是 g2 或 g3" + +#: src/emc/rs274ngc/rs274ngc_return.hh:37 +#, fuzzy +msgid "Bug code not g4 g10 g28 g30 g52 g53 or g92 series" +msgstr "錯誤: 代碼 g10 g28 g30 不是 g4 g53 或 g92系列" + +#: src/emc/rs274ngc/rs274ngc_return.hh:38 +msgid "Bug code not g61 g61.1 or g64" +msgstr "錯誤: 代碼不是 g61或 g64 g61.1" + +#: src/emc/rs274ngc/rs274ngc_return.hh:39 +msgid "Bug code not g90 or g91" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:40 +msgid "Bug code not g98 or g99" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:41 +#, fuzzy +msgid "Bug code not in g52 or g92 series" +msgstr "錯誤: 代碼 g10 g28 g30 不是 g4 g53 或 g92系列" + +#: src/emc/rs274ngc/rs274ngc_return.hh:42 +msgid "Bug code not in range g54 to g593" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:43 +msgid "Bug code not m0 m1 m2 m30 m60" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:44 +msgid "Bug distance mode not g90 or g91" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:45 +msgid "Bug function should not have been called" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:46 +msgid "Bug in tool radius comp" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:47 +msgid "Bug plane not xy yz or xz" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:48 +msgid "Bug side not right or left" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:49 +msgid "Bug unknown motion code" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:50 +msgid "Bug unknown operation" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:51 +msgid "Cannot change axis offsets with cutter radius comp" +msgstr "軸向的偏置" + +#: src/emc/rs274ngc/rs274ngc_return.hh:52 +msgid "Cannot create backup file" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:53 +msgid "Cannot do g1 with zero feed rate" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:54 +msgid "Cannot do zero repeats of cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:55 +msgid "Cannot make arc with zero feed rate" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:56 +msgid "Cannot open backup file" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:57 +msgid "Cannot open variable file" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:58 +msgid "Cannot probe with cutter radius comp on" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:59 +msgid "Cannot probe with zero feed rate" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:60 +msgid "Cannot put a b in canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:61 +msgid "Cannot put a c in canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:62 +msgid "Cannot put an a in canned cycle" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:63 +msgid "Cannot turn cutter radius comp on when on" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:64 +msgid "Cannot use axis values with g80" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:65 +msgid "Cannot use axis values without a g code that uses them" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:66 +msgid "Cannot use g28 or g30 with cutter radius comp" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:67 +msgid "Cannot use g53 incremental" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:68 +msgid "Cannot use g53 with cutter radius comp" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:69 +msgid "Cannot use two g codes that both use axis values" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:70 +msgid "Command too long" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:71 +msgid "Current point same as end point of arc" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:72 +msgid "Dwell time missing with g4" +msgstr "停留時間缺少使用 G4 " + +#: src/emc/rs274ngc/rs274ngc_return.hh:73 +msgid "Dwell time p word missing with g82" +msgstr "停留時間 P字樣缺少使用 G82" + +#: src/emc/rs274ngc/rs274ngc_return.hh:74 +msgid "Dwell time p word missing with g86" +msgstr "停留時間 P字樣缺少使用 G86" + +#: src/emc/rs274ngc/rs274ngc_return.hh:75 +msgid "Dwell time p word missing with g88" +msgstr "停留時間 P字樣缺少使用 G88" + +#: src/emc/rs274ngc/rs274ngc_return.hh:76 +msgid "Dwell time p word missing with g89" +msgstr "停留時間 P字樣缺少使用 G89" + +#: src/emc/rs274ngc/rs274ngc_return.hh:77 +msgid "Equal sign missing in parameter setting" +msgstr "參數 設置 缺少 等號" + +#: src/emc/rs274ngc/rs274ngc_return.hh:78 +msgid "F word missing with inverse time arc move" +msgstr "反時限 圓弧 移動 缺少 F字" + +#: src/emc/rs274ngc/rs274ngc_return.hh:79 +msgid "F word missing with inverse time g1 move" +msgstr "反時限 G1 移動 缺少 F字" + +#: src/emc/rs274ngc/rs274ngc_return.hh:80 +msgid "File ended with no percent sign" +msgstr "文件結束時沒有%符號" + +#: src/emc/rs274ngc/rs274ngc_return.hh:81 +msgid "File ended with no percent sign or program end" +msgstr "文件結束時沒有%或程序結束" + +#: src/emc/rs274ngc/rs274ngc_return.hh:82 +msgid "File name too long" +msgstr "文件名太長" + +#: src/emc/rs274ngc/rs274ngc_return.hh:83 +msgid "G code out of range" +msgstr "G代碼超出範圍" + +#: src/emc/rs274ngc/rs274ngc_return.hh:84 +msgid "I word given for arc in yz plane" +msgstr "I字給予弧YZ平面" + +#: src/emc/rs274ngc/rs274ngc_return.hh:85 +msgid "I word missing with g87" +msgstr "G87 缺少 I字" + +#: src/emc/rs274ngc/rs274ngc_return.hh:86 +#, fuzzy +msgid "J word given for arc in xz plane" +msgstr "I字給予弧YZ平面" + +#: src/emc/rs274ngc/rs274ngc_return.hh:87 +msgid "J word missing with g87" +msgstr "J字缺少使用 G87" + +#: src/emc/rs274ngc/rs274ngc_return.hh:88 +msgid "K word given for arc in xy plane" +msgstr "K字給予弧XY平面" + +#: src/emc/rs274ngc/rs274ngc_return.hh:89 +msgid "K word missing with g87" +msgstr "K字缺少使用 G87" + +#: src/emc/rs274ngc/rs274ngc_return.hh:90 +msgid "Left bracket missing after slash with atan" +msgstr "左括號後丟失斜線使用 atan" + +#: src/emc/rs274ngc/rs274ngc_return.hh:91 +msgid "Left bracket missing after unary operation name" +msgstr "左括號後丟失一元運算操作的名稱" + +#: src/emc/rs274ngc/rs274ngc_return.hh:92 +#, fuzzy, c-format +msgid "M code greater than 199: M%d" +msgstr "M代碼大於199" + +#: src/emc/rs274ngc/rs274ngc_return.hh:93 +msgid "Mixed radius ijk format for arc" +msgstr "混合半徑 ijk 格式圓弧" + +#: src/emc/rs274ngc/rs274ngc_return.hh:94 +msgid "Multiple a words on one line" +msgstr "多個 a字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:95 +msgid "Multiple b words on one line" +msgstr "多個 b字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:96 +msgid "Multiple c words on one line" +msgstr "多個 c字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:97 +msgid "Multiple d words on one line" +msgstr "多個 d字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:98 +msgid "Multiple f words on one line" +msgstr "多個 f字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:99 +msgid "Multiple h words on one line" +msgstr "多個 h字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:100 +msgid "Multiple i words on one line" +msgstr "多個 i字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:101 +msgid "Multiple j words on one line" +msgstr "多個 j字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:102 +msgid "Multiple k words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:103 +msgid "Multiple l words on one line" +msgstr "多個 l字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:104 +msgid "Multiple p words on one line" +msgstr "多個 p字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:105 +msgid "Multiple q words on one line" +msgstr "多個 q字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:106 +msgid "Multiple r words on one line" +msgstr "多個 r字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:107 +msgid "Multiple s words on one line" +msgstr "多個 s字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:108 +msgid "Multiple t words on one line" +msgstr "多個 t字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:109 +msgid "Multiple x words on one line" +msgstr "多個 x字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:110 +msgid "Multiple y words on one line" +msgstr "多個 y字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:111 +msgid "Multiple z words on one line" +msgstr "多個 z字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:112 +msgid "Must use g0 or g1 with g53" +msgstr "必須使用G0或G1使用 G53" + +#: src/emc/rs274ngc/rs274ngc_return.hh:113 +msgid "Negative argument to sqrt" +msgstr "負值參數 sqrt" + +#: src/emc/rs274ngc/rs274ngc_return.hh:114 +msgid "Negative d word tool radius index used" +msgstr "負值 D字刀具半徑在使用指數" + +#: src/emc/rs274ngc/rs274ngc_return.hh:115 +msgid "Negative f word used" +msgstr "代碼中使用負值" + +#: src/emc/rs274ngc/rs274ngc_return.hh:116 +msgid "Negative g code used" +msgstr "代碼中使用負值g" + +#: src/emc/rs274ngc/rs274ngc_return.hh:117 +msgid "Negative h word used" +msgstr "代碼中使用負值h" + +#: src/emc/rs274ngc/rs274ngc_return.hh:118 +msgid "Negative l word used" +msgstr "代碼中使用負值l" + +#: src/emc/rs274ngc/rs274ngc_return.hh:119 +msgid "Negative m code used" +msgstr "代碼中使用負值m" + +#: src/emc/rs274ngc/rs274ngc_return.hh:120 +msgid "Negative or zero q value used" +msgstr "負值或零在使用q值" + +#: src/emc/rs274ngc/rs274ngc_return.hh:121 +msgid "Negative p word used" +msgstr "負 P 字在使用" + +#: src/emc/rs274ngc/rs274ngc_return.hh:122 +msgid "Negative spindle speed used" +msgstr "在使用主軸轉速負值" + +#: src/emc/rs274ngc/rs274ngc_return.hh:123 +msgid "Negative tool id used" +msgstr "負ID的刀具" + +#: src/emc/rs274ngc/rs274ngc_return.hh:124 +msgid "Nested comment found" +msgstr "找到巢狀評論" + +#: src/emc/rs274ngc/rs274ngc_return.hh:125 +msgid "No characters found in reading real value" +msgstr "無字找到在閱讀真正的價值" + +#: src/emc/rs274ngc/rs274ngc_return.hh:126 +msgid "Non integer value for integer" +msgstr "非整數值對整數" + +#: src/emc/rs274ngc/rs274ngc_return.hh:127 +msgid "Null missing after newline" +msgstr "空後丟失換行符" + +#: src/emc/rs274ngc/rs274ngc_return.hh:128 +msgid "Parameter file out of order" +msgstr "參數文件不按順序" + +#: src/emc/rs274ngc/rs274ngc_return.hh:129 +msgid "Parameter number out of range" +msgstr "參數號超出範圍" + +#: src/emc/rs274ngc/rs274ngc_return.hh:130 +msgid "Parameter is readonly" +msgstr "參數是只讀" + +#: src/emc/rs274ngc/rs274ngc_return.hh:131 +msgid "Q word missing with g83" +msgstr "Q缺少字使用 G83" + +#: src/emc/rs274ngc/rs274ngc_return.hh:132 +msgid "Queue is not empty after probing" +msgstr "隊列不是空的在探測後" + +#: src/emc/rs274ngc/rs274ngc_return.hh:133 +msgid "R clearance plane unspecified in cycle" +msgstr "R間隙平面未指定的週期" + +#: src/emc/rs274ngc/rs274ngc_return.hh:134 +msgid "R i j k words all missing for arc" +msgstr "R i j k 字 都缺少的弧" + +#: src/emc/rs274ngc/rs274ngc_return.hh:135 +msgid "R less than x in cycle in yz plane" +msgstr "R小於 x的週期在 XZ平面" + +#: src/emc/rs274ngc/rs274ngc_return.hh:136 +msgid "R less than y in cycle in xz plane" +msgstr "R小於 Y的週期在 XZ平面" + +#: src/emc/rs274ngc/rs274ngc_return.hh:137 +msgid "R less than z in cycle in xy plane" +msgstr "R小於 z的週期在xy平面" + +#: src/emc/rs274ngc/rs274ngc_return.hh:138 +msgid "R word with no g code that uses it" +msgstr "R字沒有G代碼使用它的" + +#: src/emc/rs274ngc/rs274ngc_return.hh:139 +msgid "Slash missing after first atan argument" +msgstr "反斜杠缺少在首次atan說法" + +#: src/emc/rs274ngc/rs274ngc_return.hh:140 +msgid "Spindle not turning clockwise in g84" +msgstr "主軸不轉順時針 G84" + +#: src/emc/rs274ngc/rs274ngc_return.hh:141 +msgid "Spindle not turning in g86" +msgstr "在G86主軸不轉" + +#: src/emc/rs274ngc/rs274ngc_return.hh:142 +msgid "Spindle not turning in g87" +msgstr "在G87主軸不轉" + +#: src/emc/rs274ngc/rs274ngc_return.hh:143 +msgid "Spindle not turning in g88" +msgstr "在G88主軸不轉" + +#: src/emc/rs274ngc/rs274ngc_return.hh:144 +msgid "Sscanf failed" +msgstr "sscanf函數失敗" + +#: src/emc/rs274ngc/rs274ngc_return.hh:145 +msgid "Start point too close to probe point" +msgstr "起點過於接近探測點" + +#: src/emc/rs274ngc/rs274ngc_return.hh:146 +msgid "Too many m codes on line" +msgstr "太多的M代碼在線" + +#: src/emc/rs274ngc/rs274ngc_return.hh:147 +msgid "Pocket max too large" +msgstr "型腔最大值過大" + +#: src/emc/rs274ngc/rs274ngc_return.hh:148 +msgid "Tool radius not less than arc radius with comp" +msgstr "刀具半徑不小於圓弧半徑使用補償" + +#: src/emc/rs274ngc/rs274ngc_return.hh:149 +msgid "Two g codes used from same modal group" +msgstr "兩個 G 代碼用於從同一模式組" + +#: src/emc/rs274ngc/rs274ngc_return.hh:150 +msgid "Two m codes used from same modal group" +msgstr "兩個 M 代碼在使用同一 模式組" + +#: src/emc/rs274ngc/rs274ngc_return.hh:151 +#, c-format +msgid "Unable to open file <%s>" +msgstr "無法打開文件 <%s>" + +#: src/emc/rs274ngc/rs274ngc_return.hh:152 +msgid "Unclosed comment found" +msgstr "未封閉的評論發現" + +#: src/emc/rs274ngc/rs274ngc_return.hh:153 +msgid "Unclosed expression" +msgstr "未封閉表達式" + +#: src/emc/rs274ngc/rs274ngc_return.hh:154 +msgid "Unknown g code used" +msgstr "未知的G代碼在使用" + +#: src/emc/rs274ngc/rs274ngc_return.hh:155 +#, fuzzy, c-format +msgid "Unknown m code used: M%d" +msgstr "未知的M代碼在使用" + +#: src/emc/rs274ngc/rs274ngc_return.hh:156 +msgid "Unknown operation" +msgstr "未知操作" + +#: src/emc/rs274ngc/rs274ngc_return.hh:157 +msgid "Unknown operation name starting with a" +msgstr "未知操作名稱開始帶 a" + +#: src/emc/rs274ngc/rs274ngc_return.hh:158 +msgid "Unknown operation name starting with m" +msgstr "未知操作名稱開始帶 m" + +#: src/emc/rs274ngc/rs274ngc_return.hh:159 +msgid "Unknown operation name starting with o" +msgstr "未知操作名稱開始帶 o" + +#: src/emc/rs274ngc/rs274ngc_return.hh:160 +msgid "Unknown operation name starting with x" +msgstr "未知操作名稱開始帶 x" + +#: src/emc/rs274ngc/rs274ngc_return.hh:161 +msgid "Unknown word starting with a" +msgstr "未知字開始帶 a" + +#: src/emc/rs274ngc/rs274ngc_return.hh:162 +msgid "Unknown word starting with c" +msgstr "未知字開始帶 c" + +#: src/emc/rs274ngc/rs274ngc_return.hh:163 +msgid "Unknown word starting with e" +msgstr "未知字開始帶 " + +#: src/emc/rs274ngc/rs274ngc_return.hh:164 +msgid "Unknown word starting with f" +msgstr "未知字開始帶 f" + +#: src/emc/rs274ngc/rs274ngc_return.hh:165 +msgid "Unknown word starting with l" +msgstr "未知字開始帶 l" + +#: src/emc/rs274ngc/rs274ngc_return.hh:166 +msgid "Unknown word starting with r" +msgstr "未知字開始帶 r" + +#: src/emc/rs274ngc/rs274ngc_return.hh:167 +msgid "Unknown word starting with s" +msgstr "未知字開始帶 s" + +#: src/emc/rs274ngc/rs274ngc_return.hh:168 +msgid "Unknown word starting with t" +msgstr "未知字開始帶 t" + +#: src/emc/rs274ngc/rs274ngc_return.hh:169 +msgid "Unknown word where unary operation could be" +msgstr "未知的字可在一元運算" + +#: src/emc/rs274ngc/rs274ngc_return.hh:170 +msgid "X and y words missing for arc in xy plane" +msgstr "X和Y字缺少的弧XY平面" + +#: src/emc/rs274ngc/rs274ngc_return.hh:171 +msgid "X and z words missing for arc in xz plane" +msgstr "X和Z字缺少的弧XZ平面" + +#: src/emc/rs274ngc/rs274ngc_return.hh:172 +msgid "X value unspecified in yz plane canned cycle" +msgstr "X值未指定在yz平面固定循環" + +#: src/emc/rs274ngc/rs274ngc_return.hh:173 +msgid "Y and z words missing for arc in yz plane" +msgstr "Y和Z字缺少的弧的YZ平面" + +#: src/emc/rs274ngc/rs274ngc_return.hh:174 +msgid "Y value unspecified in xz plane canned cycle" +msgstr "Y值未指定的在XZ平面固定循環" + +#: src/emc/rs274ngc/rs274ngc_return.hh:175 +msgid "Z value unspecified in xy plane canned cycle" +msgstr "Z值未指定在XY平面固定循環" + +#: src/emc/rs274ngc/rs274ngc_return.hh:176 +msgid "Zero or negative argument to ln" +msgstr "零或負參數 ln" + +#: src/emc/rs274ngc/rs274ngc_return.hh:177 +msgid "Zero radius arc" +msgstr "零半徑弧" + +#: src/emc/rs274ngc/rs274ngc_return.hh:178 +msgid "K word missing with g33/g33.1" +msgstr "K字缺少用 g33/g33.1" + +#: src/emc/rs274ngc/rs274ngc_return.hh:179 +msgid "F word used with a g33/g33.1" +msgstr "F字用了g33/g33.1" + +#: src/emc/rs274ngc/rs274ngc_return.hh:180 +msgid "Unknown operation name starting with e" +msgstr "未知操作名稱開始與 e" + +#: src/emc/rs274ngc/rs274ngc_return.hh:181 +msgid "Unknown operation name starting with n" +msgstr "未知操作名稱開始與 n" + +#: src/emc/rs274ngc/rs274ngc_return.hh:182 +msgid "Unknown operation name starting with g" +msgstr "未知操作名稱開始與 g" + +#: src/emc/rs274ngc/rs274ngc_return.hh:183 +msgid "Unknown operation name starting with l" +msgstr "未知操作名稱開始與 l" + +#: src/emc/rs274ngc/rs274ngc_return.hh:184 +msgid "Too many subroutine parameters" +msgstr "太多的子程序參數" + +#: src/emc/rs274ngc/rs274ngc_return.hh:185 +msgid "Too many subroutine levels" +msgstr "太多的子程序層面" + +#: src/emc/rs274ngc/rs274ngc_return.hh:186 +msgid "Bug: call stack underrun" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:187 +msgid "Unknown control command in o word" +msgstr "未知控制命令在O字" + +#: src/emc/rs274ngc/rs274ngc_return.hh:188 +msgid "Too many oword labels" +msgstr "太多oword標籤" + +#: src/emc/rs274ngc/rs274ngc_return.hh:189 +msgid "Unknown oword number" +msgstr "未知oword號" + +#: src/emc/rs274ngc/rs274ngc_return.hh:190 +msgid "Nested subroutine definition" +msgstr "巢狀子程序定義" + +#: src/emc/rs274ngc/rs274ngc_return.hh:191 +msgid "Not in subroutine definition" +msgstr "未在子程序定義" + +#: src/emc/rs274ngc/rs274ngc_return.hh:192 +msgid "File not open" +msgstr "文件未打開" + +#: src/emc/rs274ngc/rs274ngc_return.hh:193 +#, c-format +msgid "cannot reopen file %s - removed or renamed? (%s)" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:194 +msgid "Need tool prepared -Txx- for toolchange" +msgstr "需要準備刀具 -TXX- 供換刀" + +#: src/emc/rs274ngc/rs274ngc_return.hh:195 +msgid "Cannot change planes with cutter radius compensation on" +msgstr "無法改變平面用了刀具半徑補償" + +#: src/emc/rs274ngc/rs274ngc_return.hh:196 +msgid "Cutter radius compensation allowed only in XY, XZ planes" +msgstr "刀具半徑補償只允許在XY,XZ平面" + +#: src/emc/rs274ngc/rs274ngc_return.hh:197 +msgid "P word missing with G76" +msgstr "P字缺少的 G76" + +#: src/emc/rs274ngc/rs274ngc_return.hh:198 +msgid "I J or K words missing with G76" +msgstr "I J或K字缺失的 G76" + +#: src/emc/rs274ngc/rs274ngc_return.hh:199 +msgid "Cannot move rotary axes with G76" +msgstr "無法移動旋轉軸使用 G76" + +#: src/emc/rs274ngc/rs274ngc_return.hh:200 +msgid "Multiple e words on one line" +msgstr "多個 e字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:201 +msgid "Named parameter not terminated" +msgstr "命名參數沒有端接" + +#: src/emc/rs274ngc/rs274ngc_return.hh:202 +msgid "Out of memory" +msgstr "內存不足" + +#: src/emc/rs274ngc/rs274ngc_return.hh:203 +msgid "S word missing with G96" +msgstr "S字缺少的 G96" + +#: src/emc/rs274ngc/rs274ngc_return.hh:204 +msgid "Queue is not empty after external input" +msgstr "外部輸入後隊列不為空" + +#: src/emc/rs274ngc/rs274ngc_return.hh:205 +msgid "Can't select analog input with wait type != immediate return" +msgstr "無法選擇模擬輸入的等待類型!=立即返回" + +#: src/emc/rs274ngc/rs274ngc_return.hh:206 +msgid "Zero timeout with wait type != immediate return" +msgstr "零超時的等待類型!=立即返回" + +#: src/emc/rs274ngc/rs274ngc_return.hh:207 +msgid "Invalid to select both a digital and an analog input with M66" +msgstr "無效的同時選擇一個數字和模擬輸入用 M66" + +#: src/emc/rs274ngc/rs274ngc_return.hh:208 +msgid "Need to have either a valid P or a valid E word with M66" +msgstr "需要有一張有效的P或一個有效的E字與 M66" + +#: src/emc/rs274ngc/rs274ngc_return.hh:209 +msgid "Q word missing with g73" +msgstr "Q缺少字與 G73" + +#: src/emc/rs274ngc/rs274ngc_return.hh:210 +msgid "Digital input selected out of bounds" +msgstr "數字輸入選擇超出界限" + +#: src/emc/rs274ngc/rs274ngc_return.hh:211 +msgid "Analog input selected out of bounds" +msgstr "模擬輸入選擇超出界限" + +#: src/emc/rs274ngc/rs274ngc_return.hh:212 +msgid "W value unspecified in UV plane canned cycle" +msgstr "W值不明在UV平面固定循環" + +#: src/emc/rs274ngc/rs274ngc_return.hh:213 +msgid "U value unspecified in VW plane canned cycle" +msgstr "U值不確定的VW平面固定循環" + +#: src/emc/rs274ngc/rs274ngc_return.hh:214 +msgid "V value unspecified in UW plane canned cycle" +msgstr "V值未指定在UW平面固定循環" + +#: src/emc/rs274ngc/rs274ngc_return.hh:215 +msgid "R less than W in cycle in UV plane" +msgstr "R小於 W在週期 UV平面" + +#: src/emc/rs274ngc/rs274ngc_return.hh:216 +msgid "R less than U in cycle in VW plane" +msgstr "R小於 U在週期VW平面" + +#: src/emc/rs274ngc/rs274ngc_return.hh:217 +msgid "R less than V in cycle in UW plane" +msgstr "R小於 V的週期在UW平面" + +#: src/hal/utils/meter.c:200 +#, c-format +msgid "ERROR: '%s' is not a valid probe type\n" +msgstr "故障: '%s' 不是有效的探查類型\n" + +#: src/hal/utils/meter.c:208 +#, c-format +msgid "ERROR: no pin/signal/parameter name\n" +msgstr "故障: 沒有 針腳/信號/參數 名字\n" + +#: src/hal/utils/meter.c:214 +#, c-format +msgid "" +"ERROR: -s option requires a probe type and a pin/signal/parameter name\n" +msgstr "故障: -s 選項需要一個探頭類型和 針/信號​​/參數 名稱\n" + +#: src/hal/utils/meter.c:240 tcl/tklinuxcnc.tcl:764 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6431 +msgid "Hal Meter" +msgstr "HAL 儀表" + +#: src/hal/utils/meter.c:290 +msgid "_Select" +msgstr "選擇(_S)" + +#: src/hal/utils/meter.c:291 +msgid "E_xit" +msgstr "退出(_x)" + +#: src/hal/utils/meter.c:339 src/hal/utils/meter.c:367 +msgid "Select Item to Probe" +msgstr "選擇項目 以探測" + +#: src/hal/utils/meter.c:669 +msgid " _Pins " +msgstr " 針(_P) " + +#: src/hal/utils/meter.c:670 +msgid " _Signals " +msgstr " 信號​​(_S) " + +#: src/hal/utils/meter.c:671 +msgid " Para_meters " +msgstr " 參數(_m) " + +#: src/hal/utils/meter.c:714 +msgid "_Close" +msgstr " 關閉(_C) " + +#: src/hal/utils/scope.c:126 +msgid "" +"Usage:\n" +" halscope [-h] [-i infile] [-o outfile] [num_samples]\n" +msgstr "" +"用法:\n" +" hal示波器 [-h][-i 文件入][-o 文件出][數字_樣本]\n" + +#: src/hal/utils/scope.c:479 src/hal/utils/scope.c:506 +msgid "Open Configuration File:" +msgstr "打開配置文件:" + +#: src/hal/utils/scope.c:540 +msgid "_Open Configuration..." +msgstr "打開配置(_O)..." + +#: src/hal/utils/scope.c:546 +msgid "_Save Configuration..." +msgstr "保存配置(_S)...." + +#: src/hal/utils/scope.c:555 +msgid "O_pen Data File..." +msgstr "打開數據文件(_p)..." + +#: src/hal/utils/scope.c:562 +msgid "S_ave Data File..." +msgstr "保存數據文件(_a)..." + +#: src/hal/utils/scope.c:571 share/axis/tcl/axis.tcl:96 +msgid "_Quit" +msgstr "退出(_Q)" + +#: src/hal/utils/scope.c:577 +msgid "_About Halscope" +msgstr "關於 Halscope(_A)" + +#: src/hal/utils/scope.c:583 share/axis/tcl/axis.tcl:501 +msgid "_File" +msgstr "文件(_F)" + +#: src/hal/utils/scope.c:587 share/axis/tcl/axis.tcl:517 +msgid "_Help" +msgstr "求助(_H)" + +#: src/hal/utils/scope.c:646 +msgid "HAL Oscilloscope" +msgstr "HAL示波器" + +#: src/hal/utils/scope.c:674 +msgid "Horizontal" +msgstr "水平" + +#: src/hal/utils/scope.c:682 +msgid "Selected Channel" +msgstr "選擇通道" + +#: src/hal/utils/scope.c:688 +msgid "Run Mode" +msgstr "運行模式" + +#: src/hal/utils/scope.c:691 +msgid "Trigger" +msgstr "觸發" + +#: src/hal/utils/scope.c:697 +msgid "Vertical" +msgstr "垂直" + +#: src/hal/utils/scope.c:705 share/axis/tcl/axis.tcl:138 +#: share/axis/tcl/axis.tcl:1269 src/emc/usr_intf/gscreen/gscreen.py:3416 +#: src/emc/usr_intf/gscreen/gscreen.py:3417 +#: src/emc/usr_intf/gscreen/gscreen.glade:2614 +msgid "Stop" +msgstr "停" + +#: src/hal/utils/scope.c:708 +msgid "Normal" +msgstr "正常" + +#: src/hal/utils/scope.c:711 +msgid "Single" +msgstr "單" + +#: src/hal/utils/scope.c:714 +msgid "Roll" +msgstr "翻滾" + +#: src/hal/utils/scope_horiz.c:130 src/emc/usr_intf/gscreen/gscreen.glade:3419 +msgid "Zoom" +msgstr "縮放" + +#: src/hal/utils/scope_horiz.c:131 +msgid " Pos " +msgstr "位置" + +#: src/hal/utils/scope_horiz.c:164 +msgid "" +"----- Samples\n" +"at ---- KHz" +msgstr "" +"-----選樣\n" +"於 ---- KHz" + +#: src/hal/utils/scope_horiz.c:464 +msgid "Realtime component not loaded" +msgstr "實時元件沒有加載" + +#: src/hal/utils/scope_horiz.c:465 +msgid "" +"HALSCOPE uses a realtime component called scope_rt'\n" +"to sample signals for display. It is not currently loaded\n" +"and attempting to load it automatically failed. More information\n" +"may be available in the terminal where halscope was started.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Load the component (using 'halcmd loadrt scope_rt'), then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" +msgstr "" + +#: src/hal/utils/scope_horiz.c:536 +msgid "Realtime function not linked" +msgstr "實時功能沒有鏈接" + +#: src/hal/utils/scope_horiz.c:537 +msgid "" +"The HALSCOPE realtime sampling function\n" +"must be called from a HAL thread in to\n" +"determine the sampling rate.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Select a thread name and multiplier then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" +msgstr "" + +#: src/hal/utils/scope_horiz.c:544 +msgid "Select Sample Rate" +msgstr "選擇採樣率" + +#: src/hal/utils/scope_horiz.c:545 +msgid "" +"Select a thread name and multiplier then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" +msgstr "" +"選擇一個線程的名稱和倍增然後點擊 'OK'\n" +"或\n" +"點擊 '退出' 以離開 HAL示波器" + +#: src/hal/utils/scope_horiz.c:567 +msgid "Thread:" +msgstr "線程:" + +#: src/hal/utils/scope_horiz.c:575 +msgid "Sample Period:" +msgstr "採樣 時段:" + +#: src/hal/utils/scope_horiz.c:583 +msgid "Sample Rate:" +msgstr "採樣率:" + +#: src/hal/utils/scope_horiz.c:599 src/emc/usr_intf/touchy/mdi.py:79 +#: src/emc/usr_intf/gscreen/mdi.py:78 +msgid "Thread" +msgstr "線程" + +#: src/hal/utils/scope_horiz.c:600 +msgid "Period" +msgstr "期段" + +#: src/hal/utils/scope_horiz.c:638 +msgid "Multiplier:" +msgstr "倍增:" + +#: src/hal/utils/scope_horiz.c:655 +msgid "Record Length" +msgstr "記錄長度" + +#: src/hal/utils/scope_horiz.c:658 +#, c-format +msgid "%5d samples (1 channel)" +msgstr "%5d 樣品(1通道)" + +#: src/hal/utils/scope_horiz.c:660 +#, c-format +msgid "%5d samples (2 channels)" +msgstr "%5d 樣品 (2通道)" + +#: src/hal/utils/scope_horiz.c:664 +#, c-format +msgid "%5d samples (4 channels)" +msgstr "%5d 樣品 (4通道)" + +#: src/hal/utils/scope_horiz.c:668 #, c-format msgid "%5d samples (8 channels)" msgstr "%5d 樣品 (8通道)" -#: src/hal/utils/scope_horiz.c:653 +#: src/hal/utils/scope_horiz.c:672 #, c-format msgid "%5d samples (16 channels)" msgstr "%5d 樣品 (16通道)" -#: src/hal/utils/scope_horiz.c:708 src/hal/utils/scope_horiz.c:754 -#: src/hal/utils/scope_horiz.c:966 src/hal/utils/scope_vert.c:761 -#: src/hal/utils/scope_vert.c:853 tcl/bin/emccalib.tcl:227 +#: src/hal/utils/scope_horiz.c:727 src/hal/utils/scope_horiz.c:773 +#: src/hal/utils/scope_horiz.c:985 src/hal/utils/scope_vert.c:771 +#: src/hal/utils/scope_vert.c:863 tcl/bin/emccalib.tcl:232 #: tcl/bin/genedit.tcl:180 tcl/bin/genedit.tcl:450 tcl/bin/halconfig.tcl:682 -#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:257 -#: tcl/bin/pickconfig.tcl:479 tcl/bin/pickconfig.tcl:506 tcl/mini.tcl:1456 +#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:387 +#: tcl/bin/pickconfig.tcl:749 tcl/bin/pickconfig.tcl:799 tcl/mini.tcl:1456 #: tcl/mini.tcl:2937 tcl/tklinuxcnc.tcl:160 tcl/tklinuxcnc.tcl:245 #: tcl/tklinuxcnc.tcl:419 tcl/tklinuxcnc.tcl:1338 tcl/tklinuxcnc.tcl:1407 #: tcl/tklinuxcnc.tcl:1438 tcl/tklinuxcnc.tcl:1469 tcl/tklinuxcnc.tcl:2017 #: tcl/tklinuxcnc.tcl:2036 tcl/tklinuxcnc.tcl:2055 tcl/tklinuxcnc.tcl:2102 -#: src/emc/usr_intf/axis/scripts/axis.py:1069 -#: src/emc/usr_intf/axis/scripts/axis.py:1129 -#: src/emc/usr_intf/axis/scripts/axis.py:1445 -#: src/emc/usr_intf/axis/scripts/axis.py:2464 -#: src/emc/usr_intf/axis/scripts/axis.py:3320 +#: src/emc/usr_intf/axis/scripts/axis.py:1106 +#: src/emc/usr_intf/axis/scripts/axis.py:1173 +#: src/emc/usr_intf/axis/scripts/axis.py:1508 +#: src/emc/usr_intf/axis/scripts/axis.py:2672 +#: src/emc/usr_intf/axis/scripts/axis.py:3599 #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:718 -#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1720 -#: share/axis/tcl/axis.tcl:1757 src/emc/usr_intf/axis/scripts/axis.py:1077 -#: src/emc/usr_intf/axis/scripts/axis.py:1141 -#: src/emc/usr_intf/axis/scripts/axis.py:1458 -#: src/emc/usr_intf/axis/scripts/axis.py:2477 -#: src/emc/usr_intf/axis/scripts/axis.py:3336 +#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1828 +#: share/axis/tcl/axis.tcl:1865 msgid "OK" msgstr "可以" -#: src/hal/utils/scope_horiz.c:713 src/hal/utils/scope_horiz.c:754 -#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 +#: src/hal/utils/scope_horiz.c:732 src/hal/utils/scope_horiz.c:773 +#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 tcl/tooledit.tcl:468 msgid "Quit" msgstr "退出" -#: src/hal/utils/scope_horiz.c:745 +#: src/hal/utils/scope_horiz.c:764 msgid "Realtime thread(s) not running" msgstr "實時線程沒有運行" -#: src/hal/utils/scope_horiz.c:746 +#: src/hal/utils/scope_horiz.c:765 msgid "" "HALSCOPE uses code in a realtime HAL thread to sample\n" "signals for display. The HAL thread(s) are not running.\n" @@ -317,15 +1932,15 @@ msgid "" "Click 'Quit' to exit HALSCOPE" msgstr "" -#: src/hal/utils/scope_horiz.c:779 +#: src/hal/utils/scope_horiz.c:798 msgid "Pick log file to write to:" msgstr "選擇日誌文件寫入:" -#: src/hal/utils/scope_horiz.c:962 +#: src/hal/utils/scope_horiz.c:981 msgid "Not enough channels" msgstr "沒有足夠的通道" -#: src/hal/utils/scope_horiz.c:963 +#: src/hal/utils/scope_horiz.c:982 msgid "" "This record length cannot handle the channels\n" "that are currently enabled. Pick a shorter\n" @@ -335,7 +1950,7 @@ msgstr "" "選擇一個較短的記錄長度\n" "支持更多的頻道." -#: src/hal/utils/scope_horiz.c:1051 +#: src/hal/utils/scope_horiz.c:1070 #, c-format msgid "" "%s\n" @@ -344,7 +1959,7 @@ msgstr "" "%s\n" "每分度" -#: src/hal/utils/scope_horiz.c:1066 +#: src/hal/utils/scope_horiz.c:1085 #, c-format msgid "" "%s samples\n" @@ -353,44 +1968,45 @@ msgstr "" "%s 樣本\n" "在 %s" -#: src/hal/utils/scope_horiz.c:1170 +#: src/hal/utils/scope_horiz.c:1189 msgid "nSec" msgstr "納秒" -#: src/hal/utils/scope_horiz.c:1173 +#: src/hal/utils/scope_horiz.c:1192 msgid "uSec" msgstr "微秒" -#: src/hal/utils/scope_horiz.c:1177 +#: src/hal/utils/scope_horiz.c:1196 msgid "mSec" msgstr "毫秒" -#: src/hal/utils/scope_horiz.c:1181 -#: src/emc/usr_intf/pncconf/pncconf.glade:1953 -#: src/emc/usr_intf/pncconf/pncconf.glade:2825 -#: src/emc/usr_intf/pncconf/pncconf.glade:3706 -#: src/emc/usr_intf/pncconf/pncconf.glade:4587 +#: src/hal/utils/scope_horiz.c:1200 src/emc/usr_intf/pncconf/pncconf.glade:2635 +#: src/emc/usr_intf/pncconf/pncconf.glade:3533 +#: src/emc/usr_intf/pncconf/pncconf.glade:4414 +#: src/emc/usr_intf/pncconf/pncconf.glade:5295 msgid "Sec" msgstr "秒" -#: src/hal/utils/scope_horiz.c:1198 -#: src/emc/usr_intf/stepconf/stepconf.glade:3664 -#: src/emc/usr_intf/stepconf/stepconf.glade:4040 -#: src/emc/usr_intf/pncconf/pncconf.glade:8268 -#: src/emc/usr_intf/pncconf/pncconf.glade:8281 -#: src/emc/usr_intf/pncconf/pncconf.glade:8458 +#: src/hal/utils/scope_horiz.c:1217 src/emc/usr_intf/stepconf/spindle.glade:301 +#: src/emc/usr_intf/stepconf/axisx.glade:693 +#: src/emc/usr_intf/stepconf/axisy.glade:679 +#: src/emc/usr_intf/stepconf/axisz.glade:679 +#: src/emc/usr_intf/stepconf/axisa.glade:693 +#: src/emc/usr_intf/pncconf/pncconf.glade:8024 +#: src/emc/usr_intf/pncconf/pncconf.glade:8201 +#: src/emc/usr_intf/pncconf/pncconf.glade:8213 msgid "Hz" msgstr "赫茲" -#: src/hal/utils/scope_horiz.c:1201 +#: src/hal/utils/scope_horiz.c:1220 msgid "KHz" msgstr "千赫" -#: src/hal/utils/scope_horiz.c:1205 +#: src/hal/utils/scope_horiz.c:1224 msgid "Mhz" msgstr "兆赫" -#: src/hal/utils/scope_vert.c:403 src/hal/utils/scope_vert.c:1258 +#: src/hal/utils/scope_vert.c:413 src/hal/utils/scope_vert.c:1303 #, c-format msgid "" "Offset\n" @@ -399,28 +2015,28 @@ msgstr "" "偏移\n" "%s" -#: src/hal/utils/scope_vert.c:618 +#: src/hal/utils/scope_vert.c:628 msgid "Gain" msgstr "增益" -#: src/hal/utils/scope_vert.c:630 src/hal/utils/scope_trig.c:252 +#: src/hal/utils/scope_vert.c:640 src/hal/utils/scope_trig.c:272 msgid "Pos" msgstr "定位" -#: src/hal/utils/scope_vert.c:644 tcl/ngcgui_ttt.tcl:214 -#: src/emc/usr_intf/pncconf/pncconf.glade:57147 +#: src/hal/utils/scope_vert.c:654 tcl/ngcgui_ttt.tcl:214 +#: src/emc/usr_intf/pncconf/pncconf.glade:64273 msgid "Scale" msgstr "尺度" -#: src/hal/utils/scope_vert.c:657 +#: src/hal/utils/scope_vert.c:667 msgid "Chan Off" msgstr "通道 關" -#: src/hal/utils/scope_vert.c:713 +#: src/hal/utils/scope_vert.c:723 msgid "Set Offset" msgstr "設置偏移" -#: src/hal/utils/scope_vert.c:714 +#: src/hal/utils/scope_vert.c:724 #, c-format msgid "" "Set the vertical offset\n" @@ -429,33 +2045,33 @@ msgstr "" "設置垂直偏移量\n" "對通道 %d." -#: src/hal/utils/scope_vert.c:734 +#: src/hal/utils/scope_vert.c:744 msgid "AC Coupled" msgstr "交流耦合" -#: src/hal/utils/scope_vert.c:769 src/hal/utils/scope_vert.c:1171 -#: src/hal/utils/scope_trig.c:367 tcl/bin/emccalib.tcl:229 +#: src/hal/utils/scope_vert.c:779 src/hal/utils/scope_vert.c:1215 +#: src/hal/utils/scope_trig.c:387 tcl/bin/emccalib.tcl:234 #: tcl/bin/genedit.tcl:294 tcl/bin/halconfig.tcl:103 tcl/bin/halconfig.tcl:684 -#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:260 -#: tcl/bin/pickconfig.tcl:369 tcl/mini.tcl:1457 tcl/mini.tcl:2938 +#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:390 +#: tcl/bin/pickconfig.tcl:567 tcl/mini.tcl:1457 tcl/mini.tcl:2938 #: tcl/mini.tcl:3110 tcl/tklinuxcnc.tcl:162 tcl/tklinuxcnc.tcl:213 #: tcl/tklinuxcnc.tcl:420 tcl/tklinuxcnc.tcl:1339 tcl/tklinuxcnc.tcl:1408 #: tcl/tklinuxcnc.tcl:1439 tcl/tklinuxcnc.tcl:1470 tcl/tklinuxcnc.tcl:2103 -#: src/emc/usr_intf/axis/scripts/axis.py:1391 -#: src/emc/usr_intf/axis/scripts/axis.py:1446 -#: src/emc/usr_intf/axis/scripts/axis.py:1633 +#: src/emc/usr_intf/axis/scripts/axis.py:1453 +#: src/emc/usr_intf/axis/scripts/axis.py:1509 +#: src/emc/usr_intf/axis/scripts/axis.py:1699 +#: src/emc/usr_intf/axis/scripts/axis.py:2108 #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:720 -#: src/emc/usr_intf/axis/scripts/axis.py:1404 -#: src/emc/usr_intf/axis/scripts/axis.py:1459 -#: src/emc/usr_intf/axis/scripts/axis.py:1646 +#: src/emc/usr_intf/stepconf/main_page.glade:467 +#: src/emc/usr_intf/gscreen/gscreen.glade:3986 msgid "Cancel" msgstr "取消" -#: src/hal/utils/scope_vert.c:849 +#: src/hal/utils/scope_vert.c:859 msgid "Too many channels" msgstr "太多的通道" -#: src/hal/utils/scope_vert.c:850 +#: src/hal/utils/scope_vert.c:860 msgid "" "You cannot add another channel.\n" "\n" @@ -467,11 +2083,11 @@ msgstr "" "要么關閉一個或多個通道,或縮短的記錄長度,\n" "以便有更多的通道" -#: src/hal/utils/scope_vert.c:1026 +#: src/hal/utils/scope_vert.c:1074 msgid "Select Channel Source" msgstr "選擇通道來源" -#: src/hal/utils/scope_vert.c:1027 +#: src/hal/utils/scope_vert.c:1075 #, c-format msgid "" "Select a pin, signal, or parameter\n" @@ -480,15 +2096,15 @@ msgstr "" "選擇一個 針,信號或參數\n" "作為源通道 %d." -#: src/hal/utils/scope_vert.c:1059 +#: src/hal/utils/scope_vert.c:1107 msgid "Pins" msgstr "針" -#: src/hal/utils/scope_vert.c:1060 +#: src/hal/utils/scope_vert.c:1108 msgid "Signals" msgstr "信號" -#: src/hal/utils/scope_vert.c:1061 +#: src/hal/utils/scope_vert.c:1109 msgid "Parameters" msgstr "參數" @@ -497,12 +2113,12 @@ msgstr "參數" msgid "Falling" msgstr "下降" -#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:275 +#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:295 #, c-format msgid "Rising" msgstr "上升" -#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:283 +#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:303 msgid "" "Source\n" "None" @@ -519,40 +2135,40 @@ msgstr "" "來源\n" "通道 %2d" -#: src/hal/utils/scope_trig.c:199 tcl/tklinuxcnc.tcl:827 +#: src/hal/utils/scope_trig.c:219 tcl/tklinuxcnc.tcl:827 #: src/emc/usr_intf/touchy/touchy.glade:2469 msgid "Auto" msgstr "自動" -#: src/hal/utils/scope_trig.c:201 +#: src/hal/utils/scope_trig.c:221 msgid "Force" msgstr "強制" -#: src/hal/utils/scope_trig.c:235 src/hal/utils/scope_trig.c:269 +#: src/hal/utils/scope_trig.c:255 src/hal/utils/scope_trig.c:289 msgid "Level" msgstr "等級" -#: src/hal/utils/scope_trig.c:303 +#: src/hal/utils/scope_trig.c:323 msgid "Trigger Source" msgstr "觸發源" -#: src/hal/utils/scope_trig.c:304 +#: src/hal/utils/scope_trig.c:324 msgid "Select a channel to use for triggering." msgstr "選擇一個通道用於觸發" -#: src/hal/utils/scope_trig.c:327 +#: src/hal/utils/scope_trig.c:347 msgid "Chan" msgstr "通道" -#: src/hal/utils/scope_trig.c:328 +#: src/hal/utils/scope_trig.c:348 msgid "Source" msgstr "來源" -#: src/emc/motion/control.c:261 +#: src/emc/motion/control.c:270 msgid "Unexpected realtime delay: check dmesg for details." msgstr "意外的實時延遲:檢查 dmesg 的詳細信息." -#: src/emc/motion/control.c:263 +#: src/emc/motion/control.c:272 #, c-format msgid "" "\n" @@ -565,7 +2181,7 @@ msgstr "" "%ld, %ld, %ld, %ld 和 %ld\n" "在呼叫運動控制器之間的持續時間\n" -#: src/emc/motion/control.c:268 +#: src/emc/motion/control.c:277 #, c-format msgid "" "This time, there were %ld which is so anomalously\n" @@ -575,296 +2191,318 @@ msgid "" "\n" msgstr "" -#: src/emc/motion/control.c:384 +#: src/emc/motion/control.c:394 msgid "G38.4 move finished without breaking contact." msgstr "G38.4 移動完成後不阻斷接觸." -#: src/emc/motion/control.c:387 +#: src/emc/motion/control.c:397 msgid "G38.2 move finished without making contact." msgstr "G38.2 移動完成後不作出接觸." -#: src/emc/motion/control.c:401 +#: src/emc/motion/control.c:412 msgid "Probe tripped during non-probe MDI command." msgstr "探頭跳閘在非探測 MDI 命令." -#: src/emc/motion/control.c:429 +#: src/emc/motion/control.c:440 msgid "Probe tripped during homing motion." msgstr "探頭跳閘在歸零運動." -#: src/emc/motion/control.c:433 +#: src/emc/motion/control.c:444 msgid "Probe tripped during a jog." msgstr "探頭跳閘當正在慢步." -#: src/emc/motion/control.c:697 src/emc/motion/control.c:718 +#: src/emc/motion/control.c:622 +#, fuzzy +msgid "can't add coordinated return move" +msgstr "不能 加入 環形的 移動" + +#: src/emc/motion/control.c:663 +#, fuzzy +msgid "can't add linear coordinated jog move" +msgstr "不能 加入 直線 移動" + +#: src/emc/motion/control.c:817 +#, c-format +msgid "fault %d during orient in progress" +msgstr "故障 %d 在進行取向時" + +#: src/emc/motion/control.c:957 msgid "motion stopped by enable input" msgstr "運動停止因有 允許 輸入" -#: src/emc/motion/control.c:720 src/emc/motion/control.c:741 +#: src/emc/motion/control.c:980 #, c-format msgid "joint %d on limit switch error" msgstr "Joint %d 在限位開關 故障" -#: src/emc/motion/control.c:732 src/emc/motion/control.c:753 +#: src/emc/motion/control.c:992 #, c-format msgid "joint %d amplifier fault" msgstr "Joint %d 放大器故障" -#: src/emc/motion/control.c:741 src/emc/motion/control.c:762 +#: src/emc/motion/control.c:1001 #, c-format msgid "joint %d following error" msgstr "Joint %d 跟隨 故障" -#: src/emc/motion/control.c:1423 src/emc/motion/control.c:1444 +#: src/emc/motion/control.c:1687 #, c-format msgid "Exceeded positive soft limit on joint %d" msgstr "超出 正 軟極限在 Joint %d" -#: src/emc/motion/control.c:1428 src/emc/motion/control.c:1449 +#: src/emc/motion/control.c:1692 #, c-format msgid "Exceeded negative soft limit on joint %d" msgstr "超出 負 軟限制在 Joint %d" -#: src/emc/motion/command.c:159 +#: src/emc/motion/command.c:163 #, c-format msgid "Can't jog invalid joint number %d." msgstr "不能 慢步 無效的 Joint 號碼 %d." -#: src/emc/motion/command.c:163 +#: src/emc/motion/command.c:167 #, c-format msgid "Can't jog joint %d further past max hard limit." msgstr "不能 慢步 Joint %d 超過 最大 的 硬 極限." -#: src/emc/motion/command.c:168 +#: src/emc/motion/command.c:172 #, c-format msgid "Can't jog joint %d further past min hard limit." msgstr "不能 慢步 Joint %d 超過 最小 的 硬 極限." -#: src/emc/motion/command.c:174 +#: src/emc/motion/command.c:178 #, c-format msgid "Can't jog joint %d further past max soft limit." msgstr "不能 慢步 Joint %d 超過 最大 的 軟 極限" -#: src/emc/motion/command.c:179 +#: src/emc/motion/command.c:183 #, c-format msgid "Can't jog joint %d further past min soft limit." msgstr "不能 慢步 Joint %d 超過 最小 的 軟 極限" -#: src/emc/motion/command.c:237 +#: src/emc/motion/command.c:243 #, c-format msgid "%s move on line %d would exceed joint %d's positive limit" msgstr "%s 在線 %d 移動 將超過 Joint %d 的 正 極限" -#: src/emc/motion/command.c:240 -#, c-format -msgid "%s move in MDI would exceed joint %d's positive limit" -msgstr "%s 在 MDI 移動 將超過 joint %d 的 正 極限" - -#: src/emc/motion/command.c:247 +#: src/emc/motion/command.c:250 #, c-format msgid "%s move on line %d would exceed joint %d's negative limit" msgstr "%s 在線 %d 移動 將超過 Joint %d 的 負 極限" -#: src/emc/motion/command.c:250 -#, c-format -msgid "%s move in MDI would exceed joint %d's negative limit" -msgstr "%s 在 MDI 移動 將超過 joint %d 的 負 極限" - -#: src/emc/motion/command.c:500 +#: src/emc/motion/command.c:535 msgid "all joints must be homed before going into coordinated mode" msgstr "所有 joint 一定 要在 零點 才能 進入 坐標 模式" -#: src/emc/motion/command.c:521 +#: src/emc/motion/command.c:556 msgid "all joints must be homed before going into teleop mode" msgstr "所有 Joint 一定 要在 零點 才能 進入 遠程操作 模式" -#: src/emc/motion/command.c:675 src/emc/motion/command.c:741 -#: src/emc/motion/command.c:814 +#: src/emc/motion/command.c:710 src/emc/motion/command.c:776 +#: src/emc/motion/command.c:849 msgid "Can't jog joint in coordinated mode." msgstr "不能 慢步 joint 在 坐標 模式" -#: src/emc/motion/command.c:680 src/emc/motion/command.c:746 -#: src/emc/motion/command.c:819 +#: src/emc/motion/command.c:715 src/emc/motion/command.c:781 +#: src/emc/motion/command.c:854 msgid "Can't jog joint when not enabled." msgstr "不能 慢步 Joint 未有 允許 " -#: src/emc/motion/command.c:685 src/emc/motion/command.c:824 +#: src/emc/motion/command.c:720 src/emc/motion/command.c:859 msgid "Can't jog any joints while homing." msgstr "不能 慢步 Joint 當 在 歸零 時" -#: src/emc/motion/command.c:751 +#: src/emc/motion/command.c:786 msgid "Can't jog any joint while homing." msgstr "不能 慢步 Joint 當 在 歸零 時" -#: src/emc/motion/command.c:881 +#: src/emc/motion/command.c:918 msgid "need to be enabled, in coord mode for linear move" msgstr "要有 允許 才能在 坐標 模式 作直線移動" -#: src/emc/motion/command.c:891 +#: src/emc/motion/command.c:928 msgid "can't do linear move with limits exceeded" msgstr "不能 加入 直線 移動 當 超出 極限" -#: src/emc/motion/command.c:910 -msgid "can't add linear move" -msgstr "不能 加入 直線 移動" +#: src/emc/motion/command.c:954 +#, fuzzy, c-format +msgid "can't add linear move at line %d, error code %d" +msgstr "不能 加入 直線 移動 當 超出 極限" -#: src/emc/motion/command.c:930 +#: src/emc/motion/command.c:982 msgid "need to be enabled, in coord mode for circular move" msgstr "需要允許才能 作 坐標模式 的環形移動" -#: src/emc/motion/command.c:940 +#: src/emc/motion/command.c:993 msgid "can't do circular move with limits exceeded" msgstr "不能作 環形的 移動 當 超出 極限" -#: src/emc/motion/command.c:958 -msgid "can't add circular move" -msgstr "不能 加入 環形的 移動" +#: src/emc/motion/command.c:1015 +#, fuzzy, c-format +msgid "can't add circular move at line %d, error code %d" +msgstr "不能作 環形的 移動 當 超出 極限" + +#: src/emc/motion/command.c:1114 +#, fuzzy +msgid "MOTION: can't STEP while jogging" +msgstr "動作: 不能 STEP 當 已 在 執行 " -#: src/emc/motion/command.c:1048 -msgid "MOTION: can't STEP while already executing" +#: src/emc/motion/command.c:1117 +#, fuzzy +msgid "MOTION: can't STEP while in return move" +msgstr "動作: 不能 STEP 當 已 在 執行 " + +#: src/emc/motion/command.c:1127 +#, fuzzy, c-format +msgid "MOTION: STEP while in state %d" msgstr "動作: 不能 STEP 當 已 在 執行 " -#: src/emc/motion/command.c:1140 +#: src/emc/motion/command.c:1229 msgid "can't enable motion, enable input is false" msgstr "不能 允許 的動作, 允許 輸入 是 偽 " -#: src/emc/motion/command.c:1213 +#: src/emc/motion/command.c:1302 msgid "must be in joint mode to home" msgstr "一定 要在 Joint 模式 才能 歸零 " -#: src/emc/motion/command.c:1224 src/emc/motion/command.c:1235 +#: src/emc/motion/command.c:1313 src/emc/motion/command.c:1324 msgid "homing sequence already in progress" msgstr "歸零 序列 已在 進行中" -#: src/emc/motion/command.c:1233 +#: src/emc/motion/command.c:1322 msgid "homing already in progress" msgstr "歸零 已在 進行中" -#: src/emc/motion/command.c:1263 +#: src/emc/motion/command.c:1352 msgid "must be in joint mode or disabled to unhome" msgstr "一定 要在 Joint 模式 或 不允許 才 可以 離零" -#: src/emc/motion/command.c:1275 src/emc/motion/command.c:1298 +#: src/emc/motion/command.c:1364 src/emc/motion/command.c:1387 #, c-format msgid "Cannot unhome while homing, joint %d" msgstr "不能 離零 當 在 歸零中, Joint %d" -#: src/emc/motion/command.c:1279 src/emc/motion/command.c:1302 +#: src/emc/motion/command.c:1368 src/emc/motion/command.c:1391 #, c-format msgid "Cannot unhome while moving, joint %d" msgstr "不能 離零 當 在 移動 中, Joint %d " -#: src/emc/motion/command.c:1307 +#: src/emc/motion/command.c:1396 #, c-format msgid "Cannot unhome inactive joint %d" msgstr "不能 離零 未激活的 Joint %d" -#: src/emc/motion/command.c:1311 +#: src/emc/motion/command.c:1400 #, c-format msgid "Cannot unhome invalid joint %d (max %d)" msgstr "不能 離零 無效的 Joint %d (max %d) " -#: src/emc/motion/command.c:1338 +#: src/emc/motion/command.c:1427 msgid "need to be enabled, in coord mode for probe move" msgstr "需要允許,以坐標模式 移動探頭 " -#: src/emc/motion/command.c:1348 +#: src/emc/motion/command.c:1437 msgid "can't do probe move with limits exceeded" msgstr "不能做探頭移動當有超限" -#: src/emc/motion/command.c:1362 +#: src/emc/motion/command.c:1451 msgid "Probe is already clear when starting G38.4 or G38.5 move" msgstr "探測已經清徐當啟動 G38.4或G38.5 移動" -#: src/emc/motion/command.c:1364 +#: src/emc/motion/command.c:1453 msgid "Probe is already tripped when starting G38.2 or G38.3 move" msgstr "探測已經被脫扣當起動G38.2 或G38.3 移動" -#: src/emc/motion/command.c:1376 +#: src/emc/motion/command.c:1473 msgid "can't add probe move" msgstr "不能添加探測移動" -#: src/emc/motion/command.c:1400 +#: src/emc/motion/command.c:1498 msgid "need to be enabled, in coord mode for rigid tap move" msgstr "在坐標模式做剛性攻絲移動,需要啟動指令" -#: src/emc/motion/command.c:1410 +#: src/emc/motion/command.c:1509 msgid "can't do rigid tap move with limits exceeded" msgstr "不能做剛性攻絲移動當超過極限" -#: src/emc/motion/command.c:1421 +#: src/emc/motion/command.c:1526 msgid "can't add rigid tap move" msgstr "不能添加剛性攻絲移動" -#: src/emc/motion/command.c:1435 +#: src/emc/motion/command.c:1541 msgid "need to be enabled, in teleop mode for teleop move" msgstr "需要激活遠程操作模式,才可作遠程運移動" -#: src/emc/motion/command.c:1556 src/emc/motion/command.c:1605 +#: src/emc/motion/command.c:1710 #, c-format msgid "joint %d: too many compensation entries" msgstr "joint %d: 太多的補償條目" -#: src/emc/motion/command.c:1562 src/emc/motion/command.c:1611 +#: src/emc/motion/command.c:1716 #, c-format msgid "joint %d: compensation values must increase" msgstr "joint %d: 補償值必須增加" -#: src/emc/motion/command.c:1591 +#: src/emc/motion/command.c:1745 #, c-format msgid "unrecognized command %d" msgstr "無法識別的命令 %d" -#: src/emc/motion/motion.c:185 +#: src/emc/motion/motion.c:212 msgid "MOTION: hal_init() failed\n" msgstr "" -#: src/emc/motion/motion.c:190 +#: src/emc/motion/motion.c:217 #, c-format msgid "MOTION: num_joints is %d, must be between 1 and %d\n" msgstr "" -#: src/emc/motion/motion.c:197 +#: src/emc/motion/motion.c:224 #, c-format msgid "MOTION: num_dio is %d, must be between 1 and %d\n" msgstr "" -#: src/emc/motion/motion.c:204 +#: src/emc/motion/motion.c:231 #, c-format msgid "MOTION: num_aio is %d, must be between 1 and %d\n" msgstr "" -#: src/emc/motion/motion.c:212 +#: src/emc/motion/motion.c:239 msgid "MOTION: init_hal_io() failed\n" msgstr "" -#: src/emc/motion/motion.c:221 +#: src/emc/motion/motion.c:248 msgid "MOTION: init_comm_buffers() failed\n" msgstr "" -#: src/emc/motion/motion.c:229 +#: src/emc/motion/motion.c:256 msgid "MOTION: init_threads() failed\n" msgstr "" -#: src/emc/motion/motion.c:254 +#: src/emc/motion/motion.c:281 #, c-format msgid "MOTION: hal_stop_threads() failed, returned %d\n" msgstr "" -#: src/emc/motion/motion.c:260 +#: src/emc/motion/motion.c:294 #, c-format msgid "MOTION: rtapi_shmem_delete() failed, returned %d\n" msgstr "" -#: src/emc/motion/motion.c:266 +#: src/emc/motion/motion.c:300 #, c-format msgid "MOTION: hal_exit() failed, returned %d\n" msgstr "" -#: src/emc/motion/motion.c:289 +#: src/emc/motion/motion.c:323 msgid "MOTION: emcmot_hal_data malloc failed\n" msgstr "" -#: src/emc/motion/motion.c:585 src/emc/motion/motion.c:597 +#: src/emc/motion/motion.c:331 +msgid "MOTION: joints malloc failed\n" +msgstr "" + +#: src/emc/motion/motion.c:695 #, c-format msgid "MOTION: joint %d pin/param export failed\n" msgstr "" @@ -916,7 +2554,8 @@ msgid "unknown state '%d' during homing" msgstr "" #: tcl/bin/emccalib.tcl:80 -msgid "LinuxCNC Servo Axis Calibration" +#, fuzzy +msgid "Machinekit Servo Axis Calibration" msgstr "Linuxcnc 伺服軸 校準" #: tcl/bin/emccalib.tcl:90 @@ -924,44 +2563,43 @@ msgid "Save To File" msgstr "保存到文件" #: tcl/bin/emccalib.tcl:106 tcl/bin/genedit.tcl:77 tcl/bin/halconfig.tcl:151 -#: tcl/bin/halshow.tcl:86 tcl/mini.tcl:2516 tcl/tklinuxcnc.tcl:719 -#: tcl/ngcgui.tcl:549 tcl/bin/halshow.tcl:85 +#: tcl/bin/halshow.tcl:85 tcl/mini.tcl:2516 tcl/tklinuxcnc.tcl:719 +#: tcl/ngcgui.tcl:489 msgid "File" msgstr "文件" -#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:231 tcl/bin/halconfig.tcl:153 +#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:236 tcl/bin/halconfig.tcl:153 #: tcl/mini.tcl:3558 src/emc/usr_intf/touchy/touchy.glade:2420 msgid "Refresh" msgstr "刷新" #: tcl/bin/emccalib.tcl:110 tcl/bin/genedit.tcl:82 tcl/bin/halconfig.tcl:155 -#: tcl/mini.tcl:2535 +#: tcl/mini.tcl:2535 src/emc/usr_intf/axis/scripts/axis.py:2107 msgid "Save" msgstr "保存" -#: tcl/bin/emccalib.tcl:159 tcl/bin/halconfig.tcl:623 +#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:623 #, tcl-format msgid "Tune %d" msgstr "微調 %d" -#: tcl/bin/emccalib.tcl:160 tcl/bin/halconfig.tcl:628 +#: tcl/bin/emccalib.tcl:162 tcl/bin/halconfig.tcl:628 msgid "INI Name" msgstr "INI 名字" -#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:629 +#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:629 msgid "HAL's Value" msgstr "HAL 之數值" -#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:631 +#: tcl/bin/emccalib.tcl:165 tcl/bin/halconfig.tcl:631 msgid "Next Value" msgstr "下一個數值" -#: tcl/bin/emccalib.tcl:225 tcl/bin/halconfig.tcl:680 -#: tcl/bin/halconfig.tcl:731 +#: tcl/bin/emccalib.tcl:230 tcl/bin/halconfig.tcl:680 tcl/bin/halconfig.tcl:731 msgid "Test" msgstr "測試" -#: tcl/bin/emccalib.tcl:358 tcl/bin/halconfig.tcl:883 +#: tcl/bin/emccalib.tcl:388 tcl/bin/halconfig.tcl:883 #, tcl-format msgid "" "The HAL parameter \n" @@ -974,7 +2612,7 @@ msgstr "" " 已經改變. \n" " 真的退出?" -#: tcl/bin/emccalib.tcl:383 tcl/bin/halconfig.tcl:1170 +#: tcl/bin/emccalib.tcl:413 tcl/bin/halconfig.tcl:1170 msgid "" "Not permitted to save here.\n" "\n" @@ -984,8 +2622,8 @@ msgstr "" "\n" " 你需要複製配置到你的主頁裡工作. " -#: tcl/bin/emccalib.tcl:457 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 -#: tcl/bin/pickconfig.tcl:544 tcl/bin/pickconfig.tcl:555 +#: tcl/bin/emccalib.tcl:487 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 +#: tcl/bin/pickconfig.tcl:843 tcl/bin/pickconfig.tcl:854 #: tcl/scripts/Set_Coordinates.tcl:205 tcl/scripts/Set_Coordinates.tcl:228 #, tcl-format msgid "can't save %s" @@ -1056,13 +2694,14 @@ msgstr "打開..." msgid "Save As..." msgstr "另存為..." -#: tcl/bin/genedit.tcl:87 tcl/bin/halconfig.tcl:165 tcl/bin/halshow.tcl:93 -#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1243 -#: tcl/ngcgui.tcl:3680 tcl/bin/halshow.tcl:92 +#: tcl/bin/genedit.tcl:87 tcl/bin/halconfig.tcl:165 tcl/bin/halshow.tcl:92 +#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1322 +#: tcl/ngcgui.tcl:3832 msgid "Exit" msgstr "退出" #: tcl/bin/genedit.tcl:91 tcl/mini.tcl:2517 +#: src/emc/usr_intf/gscreen/gscreen.glade:2685 msgid "Edit" msgstr "修訂" @@ -1078,12 +2717,13 @@ msgstr "複製" msgid "Paste" msgstr "貼上" -#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:68 +#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:73 msgid "Select All" msgstr "全選" #: tcl/bin/genedit.tcl:104 tcl/bin/halconfig.tcl:192 tcl/mini.tcl:919 #: tcl/mini.tcl:2519 tcl/tklinuxcnc.tcl:790 +#: src/emc/usr_intf/stepconf/main_page.glade:445 msgid "Help" msgstr "求助" @@ -1105,7 +2745,7 @@ msgid "Renumber File..." msgstr "重新編號文件..." #: tcl/bin/genedit.tcl:140 tcl/mini.tcl:917 tcl/mini.tcl:2518 -#: tcl/tklinuxcnc.tcl:746 +#: tcl/tklinuxcnc.tcl:746 src/emc/usr_intf/gmoccapy/gmoccapy.glade:5135 msgid "Settings" msgstr "設定" @@ -1134,13 +2774,6 @@ msgid "" "GPL Version 2" msgstr "" -#: tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 tcl/mini.tcl:1775 -#: tcl/tklinuxcnc.tcl:451 src/emc/task/emctaskmain.cc:2000 -#: src/emc/task/emctaskmain.cc:2072 -#, c-format, tcl-format -msgid "can't open %s" -msgstr "不能打開 %s" - #: tcl/bin/genedit.tcl:267 tcl/mini.tcl:3090 msgid "Find" msgstr "" @@ -1277,35 +2910,36 @@ msgstr "保存 及 退出" msgid "View" msgstr "觀看" -#: tcl/bin/halconfig.tcl:170 tcl/bin/halshow.tcl:105 tcl/bin/halshow.tcl:104 +#: tcl/bin/halconfig.tcl:170 tcl/bin/halshow.tcl:104 msgid "Expand Tree" msgstr "樹狀 擴張" -#: tcl/bin/halconfig.tcl:172 tcl/bin/halshow.tcl:107 tcl/bin/halshow.tcl:106 +#: tcl/bin/halconfig.tcl:172 tcl/bin/halshow.tcl:106 msgid "Collapse Tree" msgstr "樹狀 收縮" -#: tcl/bin/halconfig.tcl:175 tcl/bin/halshow.tcl:110 tcl/bin/halshow.tcl:109 +#: tcl/bin/halconfig.tcl:175 tcl/bin/halshow.tcl:109 msgid "Expand Pins" msgstr "展開 針" -#: tcl/bin/halconfig.tcl:177 tcl/bin/halshow.tcl:112 tcl/bin/halshow.tcl:111 +#: tcl/bin/halconfig.tcl:177 tcl/bin/halshow.tcl:111 msgid "Expand Parameters" msgstr "展開 參數" -#: tcl/bin/halconfig.tcl:179 tcl/bin/halshow.tcl:114 tcl/bin/halshow.tcl:113 +#: tcl/bin/halconfig.tcl:179 tcl/bin/halshow.tcl:113 msgid "Expand Signals" msgstr "展開 信號" -#: tcl/bin/halconfig.tcl:182 tcl/bin/halshow.tcl:117 tcl/bin/halshow.tcl:116 +#: tcl/bin/halconfig.tcl:182 tcl/bin/halshow.tcl:116 msgid "Erase Watch" msgstr "清徐 監視" #: tcl/bin/halconfig.tcl:194 tcl/mini.tcl:840 tcl/mini.tcl:2785 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "About" msgstr "關于" -#: tcl/bin/halconfig.tcl:196 +#: tcl/bin/halconfig.tcl:196 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2579 msgid "Main" msgstr "主頁" @@ -1313,16 +2947,15 @@ msgstr "主頁" msgid "Enter HAL command :" msgstr "输入 HAL 指令 :" -#: tcl/bin/halconfig.tcl:479 tcl/bin/halconfig.tcl:528 tcl/bin/halshow.tcl:357 -#: tcl/bin/halshow.tcl:354 +#: tcl/bin/halconfig.tcl:479 tcl/bin/halconfig.tcl:528 tcl/bin/halshow.tcl:354 msgid "Execute" msgstr "執行" -#: tcl/bin/halconfig.tcl:943 tcl/bin/halshow.tcl:413 tcl/bin/halshow.tcl:405 +#: tcl/bin/halconfig.tcl:943 tcl/bin/halshow.tcl:405 msgid "Select a node to show." msgstr "選定要展示的節點." -#: tcl/bin/halconfig.tcl:968 tcl/bin/halshow.tcl:438 tcl/bin/halshow.tcl:429 +#: tcl/bin/halconfig.tcl:968 tcl/bin/halshow.tcl:429 msgid "<-- Select a Leaf. Click on its name." msgstr "<-- 選定一葉. 點擊它的名字." @@ -1354,56 +2987,57 @@ msgid "" "allowed by law." msgstr "" -#: tcl/bin/halshow.tcl:70 tcl/bin/halshow.tcl:69 +#: tcl/bin/halshow.tcl:69 msgid " SHOW " msgstr "展示" -#: tcl/bin/halshow.tcl:71 tcl/bin/halshow.tcl:70 +#: tcl/bin/halshow.tcl:70 msgid " WATCH " msgstr "監視 " -#: tcl/bin/halshow.tcl:91 tcl/bin/halshow.tcl:90 +#: tcl/bin/halshow.tcl:90 msgid "Load Watch List" msgstr "加載觀察名單" -#: tcl/bin/halshow.tcl:103 tcl/bin/halshow.tcl:102 +#: tcl/bin/halshow.tcl:102 msgid "Tree View" msgstr "樹狀觀看" -#: tcl/bin/halshow.tcl:354 tcl/bin/halshow.tcl:349 +#: tcl/bin/halshow.tcl:349 msgid "Test HAL command :" msgstr "測試 HAL 指令 :" -#: tcl/bin/halshow.tcl:556 tcl/bin/halshow.tcl:544 +#: tcl/bin/halshow.tcl:544 msgid "Load a watch list" msgstr "加載觀察名單" -#: tcl/bin/halshow.tcl:579 tcl/bin/halshow.tcl:567 +#: tcl/bin/halshow.tcl:567 msgid "Save current watch list" msgstr "保存當前觀察名單" -#: tcl/bin/halshow.tcl:593 tcl/bin/halshow.tcl:581 +#: tcl/bin/halshow.tcl:581 msgid "Commands may be tested here but they will NOT be saved" msgstr "指令可以在這兒測試但不會被保存" -#: tcl/bin/pickconfig.tcl:50 +#: tcl/bin/pickconfig.tcl:96 msgid "" "Can't find the bwidget 1.7 package. There is a debian bwidget package; " "install \n" "it with sudo apt-get install bwidget." msgstr "" -#: tcl/bin/pickconfig.tcl:178 +#: tcl/bin/pickconfig.tcl:154 +#, fuzzy +msgid "Machinekit Configuration Selector" +msgstr "Linuxcnc 配置文件選擇器" + +#: tcl/bin/pickconfig.tcl:296 msgid "No details available." msgstr "" -#: tcl/bin/pickconfig.tcl:194 -msgid "LinuxCNC Configuration Selector" -msgstr "Linuxcnc 配置文件選擇器" - -#: tcl/bin/pickconfig.tcl:215 +#: tcl/bin/pickconfig.tcl:343 msgid "" -"Welcome to LinuxCNC.\n" +"Welcome to MachineKit.\n" "\n" "Select a machine configuration from the list on the left.\n" "Details about the selected configuration will appear in the display on the " @@ -1411,57 +3045,57 @@ msgid "" "Click 'OK' to run the selected configuration" msgstr "" -#: tcl/bin/pickconfig.tcl:271 +#: tcl/bin/pickconfig.tcl:401 msgid "My Configurations" msgstr "我的配置" -#: tcl/bin/pickconfig.tcl:274 +#: tcl/bin/pickconfig.tcl:405 msgid "Sample Configurations" msgstr "樣辦配置" -#: tcl/bin/pickconfig.tcl:332 +#: tcl/bin/pickconfig.tcl:530 #, tcl-format msgid "ERROR: no configurations found in path '%s'" msgstr "故障: 沒有配置文件在路徑 '%s'" -#: tcl/bin/pickconfig.tcl:369 +#: tcl/bin/pickconfig.tcl:567 msgid "Copy Configuration?" msgstr "復制配置文件?" -#: tcl/bin/pickconfig.tcl:369 +#: tcl/bin/pickconfig.tcl:567 #, tcl-format msgid "" "Would you like to copy the %s configuration to your home directory so you " "can customize it?" msgstr "你要 復制 配置文件 %s 去 你的 主頁讓 你 自定義它?" -#: tcl/bin/pickconfig.tcl:369 +#: tcl/bin/pickconfig.tcl:567 #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:563 msgid "Yes" msgstr "是" -#: tcl/bin/pickconfig.tcl:479 +#: tcl/bin/pickconfig.tcl:749 msgid "Configuration Copied" msgstr "複制 配置 文件" -#: tcl/bin/pickconfig.tcl:479 -#, tcl-format +#: tcl/bin/pickconfig.tcl:749 +#, fuzzy, tcl-format msgid "" "The configuration file has been copied to %s. Next time, choose this " -"location when starting LinuxCNC." +"location when starting MachineKit." msgstr "配置 文件 被複制 到 %s. 再打開 Linuxcnc 時,先 選 那裡." -#: tcl/bin/pickconfig.tcl:506 +#: tcl/bin/pickconfig.tcl:799 msgid "Shortcut Created" msgstr "創建 捷徑" -#: tcl/bin/pickconfig.tcl:506 +#: tcl/bin/pickconfig.tcl:799 msgid "" "A shortcut to this configuration file has been created on your desktop. You " "can use it to automatically launch this configuration." msgstr "配置文件的捷徑創建在你的桌面.可以用它來起動這種配置." -#: tcl/bin/pickconfig.tcl:511 +#: tcl/bin/pickconfig.tcl:805 msgid "Create Desktop Shortcut" msgstr "創建 桌面 捷徑" @@ -1549,7 +3183,7 @@ msgstr "訊息" msgid "Backplot" msgstr "路徑模擬" -#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:6125 +#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:5915 msgid "Editor" msgstr "編輯器" @@ -1720,7 +3354,7 @@ msgstr "在這裡 彈出 偏移 窗口" msgid "start override popup here" msgstr "啟動 超速 彈出 在這裡" -#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1669 +#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1739 msgid "Feed Override:" msgstr "進給 超速:" @@ -1782,7 +3416,8 @@ msgid "increment" msgstr "增量" #: tcl/mini.tcl:1518 tcl/tklinuxcnc.tcl:602 tcl/tklinuxcnc.tcl:1249 -#: tcl/tklinuxcnc.tcl:1253 +#: tcl/tklinuxcnc.tcl:1253 src/emc/usr_intf/gscreen/gscreen.glade:1574 +#: src/emc/usr_intf/gscreen/gscreen.glade:1586 msgid "continuous" msgstr "持續" @@ -1823,20 +3458,15 @@ msgid "MDI:" msgstr "" #: tcl/mini.tcl:1669 tcl/tklinuxcnc.tcl:1658 -#: src/emc/usr_intf/stepconf/stepconf.glade:4403 -#: src/emc/usr_intf/pncconf/pncconf.glade:60509 -#: src/emc/usr_intf/pncconf/pncconf.glade:61603 -#: src/emc/usr_intf/pncconf/pncconf.glade:62696 -#: src/emc/usr_intf/pncconf/pncconf.glade:63789 -#: src/emc/usr_intf/pncconf/pncconf.glade:64889 +#: src/emc/usr_intf/stepconf/main_page.glade:298 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2625 msgid "Run" msgstr "運行" #: tcl/mini.tcl:1671 tcl/tklinuxcnc.tcl:1659 -#: src/emc/usr_intf/pncconf/pncconf.glade:60574 -#: src/emc/usr_intf/pncconf/pncconf.glade:61668 -#: src/emc/usr_intf/pncconf/pncconf.glade:62761 -#: src/emc/usr_intf/pncconf/pncconf.glade:63854 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2638 msgid "Pause" msgstr "暫停" @@ -1856,7 +3486,7 @@ msgstr "校驗" msgid "RESTART LINE" msgstr "重新 起動 行號" -#: tcl/mini.tcl:1699 +#: tcl/mini.tcl:1699 src/emc/usr_intf/stepconf/main_page.glade:531 msgid "Back" msgstr "向後" @@ -1864,24 +3494,22 @@ msgstr "向後" msgid "Ahead" msgstr "向前" -#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1221 +#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1300 +#: src/emc/usr_intf/gscreen/gscreen.glade:3973 msgid "Restart" msgstr "重新 起動" -#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 -#: tcl/tklinuxcnc.tcl:465 src/emc/usr_intf/axis/scripts/axis.py:1872 +#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 tcl/tklinuxcnc.tcl:465 +#: src/emc/usr_intf/axis/scripts/axis.py:2023 #: src/emc/usr_intf/axis/scripts/image-to-gcode.py:754 -#: src/emc/usr_intf/axis/scripts/axis.py:1885 msgid "All files" msgstr "所有文件" -#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 -#: tcl/tklinuxcnc.tcl:466 +#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 tcl/tklinuxcnc.tcl:466 msgid "Text files" msgstr "文字 文件" -#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 -#: tcl/tklinuxcnc.tcl:467 +#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 tcl/tklinuxcnc.tcl:467 msgid "NC files" msgstr "數控 文件" @@ -2050,7 +3678,7 @@ msgstr "長度 偏移量" msgid "Subtract" msgstr "減去" -#: tcl/mini.tcl:2344 +#: tcl/mini.tcl:2344 src/emc/usr_intf/gmoccapy/gmoccapy.glade:6712 msgid "Add" msgstr "添加" @@ -2102,15 +3730,18 @@ msgstr "修改..." msgid "Save and Load" msgstr "保存 和 加載" -#: tcl/mini.tcl:2540 +#: tcl/mini.tcl:2540 src/emc/usr_intf/gscreen/gscreen.glade:3515 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2363 msgid "Undo" msgstr "復原" -#: tcl/mini.tcl:2541 +#: tcl/mini.tcl:2541 src/emc/usr_intf/gscreen/gscreen.glade:3526 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2411 msgid "Redo" msgstr "重做" -#: tcl/mini.tcl:2546 +#: tcl/mini.tcl:2546 tcl/tooledit.tcl:488 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6695 msgid "Delete" msgstr "刪除" @@ -2181,15 +3812,17 @@ msgstr "替換:" msgid "Find Next" msgstr "找 下一個" -#: tcl/mini.tcl:3112 +#: tcl/mini.tcl:3112 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2494 msgid "Replace" msgstr "替換" -#: tcl/mini.tcl:3120 +#: tcl/mini.tcl:3120 src/emc/usr_intf/gscreen/gscreen.py:2750 +#: src/emc/usr_intf/gmoccapy/dialogs.py:171 msgid "Up" msgstr "向上" -#: tcl/mini.tcl:3121 +#: tcl/mini.tcl:3121 src/emc/usr_intf/gscreen/gscreen.py:2754 +#: src/emc/usr_intf/gmoccapy/dialogs.py:175 msgid "Down" msgstr "向下" @@ -2235,7 +3868,7 @@ msgid "" "all the information below in your message." msgstr "LinuxCNC 因故障 結束. 如要 報告問題, 請包括下面 的所有信息 在您的 消息" -#: tcl/show_errors.tcl:69 tcl/scripts/Set_Coordinates.tcl:103 +#: tcl/show_errors.tcl:74 tcl/scripts/Set_Coordinates.tcl:103 msgid "Close" msgstr "結束" @@ -2353,28 +3986,23 @@ msgstr "單位" msgid "auto" msgstr "自動" -#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8512 +#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8873 msgid "inches" msgstr "英寸" -#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1543 -#: src/emc/usr_intf/axis/scripts/axis.py:1713 +#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1609 +#: src/emc/usr_intf/axis/scripts/axis.py:1855 +#: src/emc/usr_intf/axis/scripts/axis.py:2386 #: src/emc/usr_intf/touchy/touchy.glade:3301 -#: src/emc/usr_intf/stepconf/stepconf.py:1685 -#: src/emc/usr_intf/stepconf/stepconf.py:2221 -#: src/emc/usr_intf/stepconf/stepconf.glade:4357 -#: src/emc/usr_intf/pncconf/pncconf.py:8508 -#: src/emc/usr_intf/pncconf/pncconf.glade:2229 -#: src/emc/usr_intf/pncconf/pncconf.glade:2394 -#: src/emc/usr_intf/pncconf/pncconf.glade:57616 -#: src/emc/usr_intf/pncconf/pncconf.glade:57688 -#: src/emc/usr_intf/pncconf/pncconf.glade:60646 -#: src/emc/usr_intf/pncconf/pncconf.glade:61739 -#: src/emc/usr_intf/pncconf/pncconf.glade:62832 -#: src/emc/usr_intf/pncconf/pncconf.glade:63925 -#: src/emc/usr_intf/pncconf/pncconf.glade:65091 -#: src/emc/usr_intf/axis/scripts/axis.py:1556 -#: src/emc/usr_intf/axis/scripts/axis.py:1726 +#: src/emc/usr_intf/stepconf/stepconf.py:1314 +#: src/emc/usr_intf/stepconf/pages.py:625 +#: src/emc/usr_intf/stepconf/main_page.glade:251 +#: src/emc/usr_intf/pncconf/pncconf.py:8869 +#: src/emc/usr_intf/pncconf/pncconf.glade:2195 +#: src/emc/usr_intf/pncconf/pncconf.glade:2362 +#: src/emc/usr_intf/pncconf/pncconf.glade:64552 +#: src/emc/usr_intf/pncconf/pncconf.glade:64621 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "mm" msgstr "毫米" @@ -2414,7 +4042,7 @@ msgstr "急停 關" msgid "Machine on" msgstr "開机" -#: tcl/tklinuxcnc.tcl:819 +#: tcl/tklinuxcnc.tcl:819 src/emc/usr_intf/gscreen/gscreen.glade:2452 msgid "Machine off" msgstr "關机" @@ -2551,10 +4179,11 @@ msgid "Set Font" msgstr "字體 設為" #: tcl/tklinuxcnc.tcl:2079 tcl/ngcgui_ttt.tcl:283 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4827 msgid "Font" msgstr "字體" -#: tcl/tklinuxcnc.tcl:2086 +#: tcl/tklinuxcnc.tcl:2086 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3257 msgid "Size" msgstr "大小" @@ -2562,11 +4191,11 @@ msgstr "大小" msgid "Style" msgstr "式樣" -#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:1916 +#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:2031 msgid "ESTOP" msgstr "急停" -#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2840 share/axis/tcl/axis.tcl:1918 +#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2979 share/axis/tcl/axis.tcl:2033 msgid "ON" msgstr "開" @@ -2614,1524 +4243,1746 @@ msgstr "設定 零" msgid "Write" msgstr "寫" -#: tcl/ngcgui.tcl:467 +#: tcl/ngcgui.tcl:439 tcl/ngcgui.tcl:846 msgid "Need non-null file name" msgstr "" -#: tcl/ngcgui.tcl:543 +#: tcl/ngcgui.tcl:483 msgid "Disallowed use of ngcgui generated file as Subfile" msgstr "" -#: tcl/ngcgui.tcl:549 +#: tcl/ngcgui.tcl:489 msgid "" "marked (not_a_subfile)\n" "Not intended for use as a subfile" msgstr "" -#: tcl/ngcgui.tcl:564 -msgid "Multiple subroutines in file not allowed" +#: tcl/ngcgui.tcl:503 tcl/ngcgui.tcl:522 tcl/ngcgui.tcl:544 tcl/ngcgui.tcl:557 +#: tcl/ngcgui.tcl:577 tcl/ngcgui.tcl:682 +msgid "bogus" msgstr "" -#: tcl/ngcgui.tcl:573 tcl/ngcgui.tcl:595 tcl/ngcgui.tcl:608 tcl/ngcgui.tcl:650 -#: tcl/ngcgui.tcl:755 -msgid "bogus" +#: tcl/ngcgui.tcl:505 +msgid "can not include subroutines within ngcgui subfile" +msgstr "" + +#: tcl/ngcgui.tcl:513 +msgid "Multiple subroutines in file not allowed" msgstr "" -#: tcl/ngcgui.tcl:575 +#: tcl/ngcgui.tcl:524 msgid "sub label" msgstr "子標籤" -#: tcl/ngcgui.tcl:575 tcl/ngcgui.tcl:652 +#: tcl/ngcgui.tcl:524 tcl/ngcgui.tcl:579 msgid "does not match subroutine file name" msgstr "不匹配的子程序文件名" -#: tcl/ngcgui.tcl:590 tcl/ngcgui.tcl:591 +#: tcl/ngcgui.tcl:539 tcl/ngcgui.tcl:540 msgid "ignoring M2 after endsub" msgstr "" -#: tcl/ngcgui.tcl:596 +#: tcl/ngcgui.tcl:545 msgid "file contains lines after subend" msgstr "" -#: tcl/ngcgui.tcl:609 +#: tcl/ngcgui.tcl:558 msgid "file contains lines before sub" msgstr "" -#: tcl/ngcgui.tcl:652 +#: tcl/ngcgui.tcl:579 msgid "endsub label" msgstr "" -#: tcl/ngcgui.tcl:757 +#: tcl/ngcgui.tcl:684 msgid "out of sequence positional parameter" msgstr "" -#: tcl/ngcgui.tcl:757 +#: tcl/ngcgui.tcl:684 msgid "expected" msgstr "" -#: tcl/ngcgui.tcl:817 -msgid "toomany" -msgstr "" - -#: tcl/ngcgui.tcl:868 +#: tcl/ngcgui.tcl:735 msgid "no sub found in file" msgstr "" -#: tcl/ngcgui.tcl:871 +#: tcl/ngcgui.tcl:738 msgid "no endsub found in file" msgstr "" -#: tcl/ngcgui.tcl:961 +#: tcl/ngcgui.tcl:801 +msgid "Cannot find gcmc executable" +msgstr "" + +#: tcl/ngcgui.tcl:802 +msgid "Please Install in path" +msgstr "" + +#: tcl/ngcgui.tcl:810 +msgid "not embedded, deriving outdir from:" +msgstr "" + +#: tcl/ngcgui.tcl:1038 msgid "Choose Files" msgstr "選擇文件" -#: tcl/ngcgui.tcl:1100 +#: tcl/ngcgui.tcl:1178 msgid "Controls" msgstr "操控" -#: tcl/ngcgui.tcl:1109 +#: tcl/ngcgui.tcl:1187 msgid "Preamble" msgstr "" -#: tcl/ngcgui.tcl:1122 +#: tcl/ngcgui.tcl:1200 msgid "Subfile" msgstr "" -#: tcl/ngcgui.tcl:1134 +#: tcl/ngcgui.tcl:1212 msgid "Postamble" msgstr "" -#: tcl/ngcgui.tcl:1151 +#: tcl/ngcgui.tcl:1229 msgid "Retain values on Subfile read" msgstr "" -#: tcl/ngcgui.tcl:1159 +#: tcl/ngcgui.tcl:1237 #, fuzzy msgid "Expand subroutine" msgstr "樹狀 擴張" -#: tcl/ngcgui.tcl:1168 tcl/ngcgui.tcl:2414 +#: tcl/ngcgui.tcl:1247 tcl/ngcgui.tcl:2571 #, fuzzy msgid "Autosend" msgstr "自動" -#: tcl/ngcgui.tcl:1178 +#: tcl/ngcgui.tcl:1257 msgid "Verbose ngcfile" msgstr "詳細查看ngc文件" -#: tcl/ngcgui.tcl:1188 tcl/ngcgui.tcl:2235 tcl/ngcgui.tcl:2259 -#: tcl/ngcgui.tcl:2289 +#: tcl/ngcgui.tcl:1267 tcl/ngcgui.tcl:2393 tcl/ngcgui.tcl:2416 +#: tcl/ngcgui.tcl:2446 msgid "Create Feature" msgstr "" -#: tcl/ngcgui.tcl:1194 tcl/ngcgui.tcl:2919 +#: tcl/ngcgui.tcl:1273 tcl/ngcgui.tcl:3058 msgid "MakeFile" msgstr "Make文件" -#: tcl/ngcgui.tcl:1195 tcl/ngcgui.tcl:2916 +#: tcl/ngcgui.tcl:1274 tcl/ngcgui.tcl:3055 msgid "Finalize" msgstr "" -#: tcl/ngcgui.tcl:1212 +#: tcl/ngcgui.tcl:1291 msgid "Reread" msgstr "再讀" -#: tcl/ngcgui.tcl:1231 +#: tcl/ngcgui.tcl:1310 msgid "SendFileToAxis" msgstr "" -#: tcl/ngcgui.tcl:1274 +#: tcl/ngcgui.tcl:1353 msgid "Unrecoverable problem" msgstr "" -#: tcl/ngcgui.tcl:1374 +#: tcl/ngcgui.tcl:1431 msgid "Postamble file" msgstr "" -#: tcl/ngcgui.tcl:1424 +#: tcl/ngcgui.tcl:1481 msgid "Subroutine file" msgstr "" -#: tcl/ngcgui.tcl:1482 +#: tcl/ngcgui.tcl:1545 msgid "Positional Parameters" -msgstr "位置參數" - -#: tcl/ngcgui.tcl:1587 -msgid "_Globals" -msgstr "" +msgstr "位置參數" -#: tcl/ngcgui.tcl:1690 +#: tcl/ngcgui.tcl:1694 msgid "No Subfile specified" msgstr "" -#: tcl/ngcgui.tcl:1692 +#: tcl/ngcgui.tcl:1696 msgid "No parameters yet" msgstr "還沒有任何參數" -#: tcl/ngcgui.tcl:1701 +#: tcl/ngcgui.tcl:1705 msgid "Missing value for parm" msgstr "" -#: tcl/ngcgui.tcl:1735 +#: tcl/ngcgui.tcl:1726 msgid "Output file" msgstr "輸出文件" -#: tcl/ngcgui.tcl:1827 -msgid "Positional parameters for" -msgstr "" - -#: tcl/ngcgui.tcl:1835 -#, fuzzy -msgid "expanded file" -msgstr "文字 文件" - -#: tcl/ngcgui.tcl:1849 -#, fuzzy -msgid "call subroutine file" -msgstr "太多的子程序層面" - -#: tcl/ngcgui.tcl:1919 +#: tcl/ngcgui.tcl:1841 msgid "Multiple Tabs with Features" msgstr "" -#: tcl/ngcgui.tcl:1920 +#: tcl/ngcgui.tcl:1842 msgid "Finalize all Tabs?" msgstr "" -#: tcl/ngcgui.tcl:1920 +#: tcl/ngcgui.tcl:1842 msgid "Order" msgstr "" -#: tcl/ngcgui.tcl:1922 +#: tcl/ngcgui.tcl:1844 msgid "No, just this page" msgstr "" -#: tcl/ngcgui.tcl:1936 +#: tcl/ngcgui.tcl:1858 msgid "Axis is not responding" msgstr "" -#: tcl/ngcgui.tcl:1937 +#: tcl/ngcgui.tcl:1859 #, fuzzy msgid "Error: " msgstr "故障" -#: tcl/ngcgui.tcl:1939 +#: tcl/ngcgui.tcl:1861 msgid "Autosend disabled, Ctrl-A toggles autosend" msgstr "" -#: tcl/ngcgui.tcl:1941 +#: tcl/ngcgui.tcl:1863 msgid "File saving enabled -- Finalize to save" msgstr "" -#: tcl/ngcgui.tcl:1957 +#: tcl/ngcgui.tcl:1879 msgid "Require .ngc suffix for filename" msgstr "" -#: tcl/ngcgui.tcl:1967 +#: tcl/ngcgui.tcl:1889 msgid "Disallowed overwrite of" msgstr "" -#: tcl/ngcgui.tcl:1986 +#: tcl/ngcgui.tcl:1913 msgid "FEATURE" msgstr "" -#: tcl/ngcgui.tcl:1993 +#: tcl/ngcgui.tcl:1920 msgid "feature line added" msgstr "" -#: tcl/ngcgui.tcl:2002 +#: tcl/ngcgui.tcl:1932 msgid "line added" msgstr "" -#: tcl/ngcgui.tcl:2002 +#: tcl/ngcgui.tcl:1932 msgid "activated" msgstr "" -#: tcl/ngcgui.tcl:2004 +#: tcl/ngcgui.tcl:1934 msgid "restores" msgstr "" -#: tcl/ngcgui.tcl:2041 +#: tcl/ngcgui.tcl:1973 msgid "NOTREACHED mode" msgstr "" -#: tcl/ngcgui.tcl:2236 +#: tcl/ngcgui.tcl:1989 +msgid "Positional parameters for" +msgstr "" + +#: tcl/ngcgui.tcl:1997 +#, fuzzy +msgid "expanded file" +msgstr "文字 文件" + +#: tcl/ngcgui.tcl:2011 +#, fuzzy +msgid "call subroutine file" +msgstr "太多的子程序層面" + +#: tcl/ngcgui.tcl:2394 msgid "Enter parms for 1st feature" msgstr "" -#: tcl/ngcgui.tcl:2243 +#: tcl/ngcgui.tcl:2401 #, fuzzy msgid "New Outfile" msgstr "數控 文件" -#: tcl/ngcgui.tcl:2245 +#: tcl/ngcgui.tcl:2403 msgid "Ready to make New Outfile" msgstr "" -#: tcl/ngcgui.tcl:2262 tcl/ngcgui.tcl:2295 +#: tcl/ngcgui.tcl:2419 tcl/ngcgui.tcl:2452 msgid "Enter parms for feature " msgstr "" -#: tcl/ngcgui.tcl:2282 +#: tcl/ngcgui.tcl:2439 #, fuzzy msgid "feature" msgstr "夾具" -#: tcl/ngcgui.tcl:2287 +#: tcl/ngcgui.tcl:2444 #, fuzzy msgid "Create Next" msgstr "創建 或 修改" -#: tcl/ngcgui.tcl:2292 +#: tcl/ngcgui.tcl:2449 #, fuzzy msgid "Created feature " msgstr "創建 或 修改" -#: tcl/ngcgui.tcl:2316 +#: tcl/ngcgui.tcl:2473 #, fuzzy msgid "option" msgstr "動作" -#: tcl/ngcgui.tcl:2327 +#: tcl/ngcgui.tcl:2484 #, fuzzy msgid "Missing parameters" msgstr " 參數(_m) " -#: tcl/ngcgui.tcl:2331 +#: tcl/ngcgui.tcl:2488 #, fuzzy msgid "Parse Error" msgstr "故障" -#: tcl/ngcgui.tcl:2338 +#: tcl/ngcgui.tcl:2495 msgid "Null Preamble" msgstr "" -#: tcl/ngcgui.tcl:2343 +#: tcl/ngcgui.tcl:2500 #, fuzzy msgid "Read Preamble" msgstr "超前角" -#: tcl/ngcgui.tcl:2347 +#: tcl/ngcgui.tcl:2504 msgid "Preamble Error" msgstr "" -#: tcl/ngcgui.tcl:2352 +#: tcl/ngcgui.tcl:2509 msgid "Null Postamble" msgstr "" -#: tcl/ngcgui.tcl:2357 +#: tcl/ngcgui.tcl:2514 msgid "Read Postamble" msgstr "" -#: tcl/ngcgui.tcl:2361 +#: tcl/ngcgui.tcl:2518 msgid "Postamble Error" msgstr "" -#: tcl/ngcgui.tcl:2366 +#: tcl/ngcgui.tcl:2523 msgid "Read Subfile" msgstr "" -#: tcl/ngcgui.tcl:2371 +#: tcl/ngcgui.tcl:2528 #, fuzzy msgid "Write Error" msgstr "故障" -#: tcl/ngcgui.tcl:2375 +#: tcl/ngcgui.tcl:2532 msgid "Outfile set" msgstr "" -#: tcl/ngcgui.tcl:2380 +#: tcl/ngcgui.tcl:2537 msgid "Finished" msgstr "" -#: tcl/ngcgui.tcl:2385 +#: tcl/ngcgui.tcl:2542 #, fuzzy msgid "Canceled" msgstr "取消" -#: tcl/ngcgui.tcl:2391 +#: tcl/ngcgui.tcl:2548 msgid "Sent" msgstr "" -#: tcl/ngcgui.tcl:2395 +#: tcl/ngcgui.tcl:2552 #, fuzzy msgid "SendFileToAxis failed" msgstr "篩選 失敗" -#: tcl/ngcgui.tcl:2399 +#: tcl/ngcgui.tcl:2556 msgid "Ctrl-k for Key bindings" msgstr "" -#: tcl/ngcgui.tcl:2403 +#: tcl/ngcgui.tcl:2560 #, fuzzy msgid "Expand sub" msgstr "展開 針" -#: tcl/ngcgui.tcl:2407 +#: tcl/ngcgui.tcl:2564 #, fuzzy msgid "Retain values" msgstr "設定軸 偏移量:" -#: tcl/ngcgui.tcl:2411 +#: tcl/ngcgui.tcl:2568 msgid "Verbose" msgstr "" -#: tcl/ngcgui.tcl:2417 +#: tcl/ngcgui.tcl:2574 msgid "Finalize Canceled" msgstr "" -#: tcl/ngcgui.tcl:2572 tcl/ngcgui.tcl:2728 +#: tcl/ngcgui.tcl:2711 tcl/ngcgui.tcl:2867 msgid "Dismiss" msgstr "" -#: tcl/ngcgui.tcl:2577 +#: tcl/ngcgui.tcl:2716 msgid "ngcgui Error" msgstr "" -#: tcl/ngcgui.tcl:2600 +#: tcl/ngcgui.tcl:2739 msgid "Declining support for tk send bug in ngcgui" msgstr "" -#: tcl/ngcgui.tcl:2601 +#: tcl/ngcgui.tcl:2740 msgid "You should upgrade linuxcnc to >= linuxcnc2.5" msgstr "" -#: tcl/ngcgui.tcl:2645 +#: tcl/ngcgui.tcl:2784 msgid "pre2.4_send_file_to_axis:error" msgstr "" -#: tcl/ngcgui.tcl:2839 share/axis/tcl/axis.tcl:1917 +#: tcl/ngcgui.tcl:2978 share/axis/tcl/axis.tcl:2032 msgid "OFF" msgstr "" -#: tcl/ngcgui.tcl:2842 +#: tcl/ngcgui.tcl:2981 #, fuzzy msgid "Toggle autosend" msgstr "切換 淹浸" -#: tcl/ngcgui.tcl:2843 tcl/ngcgui.tcl:3057 +#: tcl/ngcgui.tcl:2982 tcl/ngcgui.tcl:3189 #, fuzzy msgid "Clear entries" msgstr "清除 通報" -#: tcl/ngcgui.tcl:2844 +#: tcl/ngcgui.tcl:2983 msgid "Set entries to default values" msgstr "" -#: tcl/ngcgui.tcl:2845 tcl/ngcgui.tcl:2859 tcl/ngcgui.tcl:2861 +#: tcl/ngcgui.tcl:2984 tcl/ngcgui.tcl:2998 tcl/ngcgui.tcl:3000 msgid "Open editor specified by" msgstr "" -#: tcl/ngcgui.tcl:2846 +#: tcl/ngcgui.tcl:2985 msgid "on last outfile" msgstr "" -#: tcl/ngcgui.tcl:2847 +#: tcl/ngcgui.tcl:2986 #, fuzzy msgid "toggle expand subroutines" msgstr "太多的子程序層面" -#: tcl/ngcgui.tcl:2848 +#: tcl/ngcgui.tcl:2987 msgid "Create feature" msgstr "" -#: tcl/ngcgui.tcl:2849 +#: tcl/ngcgui.tcl:2988 msgid "Finalize (AUTO send is" msgstr "" -#: tcl/ngcgui.tcl:2850 +#: tcl/ngcgui.tcl:2989 msgid "Show key bindings" msgstr "" -#: tcl/ngcgui.tcl:2851 +#: tcl/ngcgui.tcl:2990 msgid "Restart (cancel pending)" msgstr "" -#: tcl/ngcgui.tcl:2852 +#: tcl/ngcgui.tcl:2991 msgid "(re)Read Preamble" msgstr "" -#: tcl/ngcgui.tcl:2853 +#: tcl/ngcgui.tcl:2992 msgid "(re)Read Postamble" msgstr "" -#: tcl/ngcgui.tcl:2854 +#: tcl/ngcgui.tcl:2993 msgid "(re)Read Subfile" msgstr "" -#: tcl/ngcgui.tcl:2855 +#: tcl/ngcgui.tcl:2994 msgid "toggle retain values" msgstr "" -#: tcl/ngcgui.tcl:2856 +#: tcl/ngcgui.tcl:2995 msgid "toggle output file verbosity" msgstr "" -#: tcl/ngcgui.tcl:2857 +#: tcl/ngcgui.tcl:2996 #, fuzzy msgid "Show status" msgstr "顯示重開" -#: tcl/ngcgui.tcl:2858 +#: tcl/ngcgui.tcl:2997 msgid "Show full status (debug info)" msgstr "" -#: tcl/ngcgui.tcl:2860 +#: tcl/ngcgui.tcl:2999 #, fuzzy msgid "on current subfile" msgstr "重新打開 當前 文件 [Control-R]" -#: tcl/ngcgui.tcl:2862 +#: tcl/ngcgui.tcl:3001 msgid "on current preamble" msgstr "" -#: tcl/ngcgui.tcl:2865 +#: tcl/ngcgui.tcl:3004 msgid " Escape Return to Preview page" msgstr "" -#: tcl/ngcgui.tcl:2942 +#: tcl/ngcgui.tcl:3081 msgid "Editing requires setting for environmental variable VISUAL" msgstr "" -#: tcl/ngcgui.tcl:2943 +#: tcl/ngcgui.tcl:3082 msgid "Trying gedit" msgstr "" -#: tcl/ngcgui.tcl:2955 +#: tcl/ngcgui.tcl:3095 #, fuzzy msgid "No file available for editing yet" msgstr "非整數值對整數" -#: tcl/ngcgui.tcl:2964 tcl/ngcgui.tcl:2973 +#: tcl/ngcgui.tcl:3104 tcl/ngcgui.tcl:3113 #, fuzzy msgid "No file available for editing" msgstr "非整數值對整數" -#: tcl/ngcgui.tcl:2990 +#: tcl/ngcgui.tcl:3130 #, fuzzy msgid "Status items" msgstr "狀況" -#: tcl/ngcgui.tcl:3003 +#: tcl/ngcgui.tcl:3143 msgid "All-page opt items" msgstr "" -#: tcl/ngcgui.tcl:3009 +#: tcl/ngcgui.tcl:3149 msgid "any-items" msgstr "" -#: tcl/ngcgui.tcl:3046 +#: tcl/ngcgui.tcl:3182 +#, fuzzy +msgid "Set defaults" +msgstr "AXIS 預 置 值" + +#: tcl/ngcgui.tcl:3257 +msgid "not writable" +msgstr "" + +#: tcl/ngcgui.tcl:3396 tcl/ngcgui.tcl:3577 +#, fuzzy +msgid "new" +msgstr "新" + +#: tcl/ngcgui.tcl:3422 +msgid "Open a new Subfile" +msgstr "" + +#: tcl/ngcgui.tcl:3568 +msgid "remove" +msgstr "" + +#: tcl/ngcgui.tcl:3590 tcl/ngcgui.tcl:3596 +msgid "move" +msgstr "" + +#: tcl/ngcgui.tcl:3704 src/emc/usr_intf/pncconf/pncconf.py:7374 +#: src/emc/usr_intf/pncconf/pncconf.py:7485 +#: src/emc/usr_intf/pncconf/pncconf.py:7650 +msgid "Custom" +msgstr "自訂" + +#: tcl/ngcgui.tcl:3730 +msgid "Problem creating page" +msgstr "" + +#: tcl/ngcgui.tcl:3737 +msgid "entrykeybindings not available" +msgstr "" + +#: tcl/ngcgui.tcl:3781 +msgid "Found multiple matches for" +msgstr "" + +#: tcl/ngcgui.tcl:3782 +msgid "using path" +msgstr "" + +#: tcl/ngcgui.tcl:3790 src/emc/usr_intf/axis/scripts/axis.py:2440 +#: src/emc/usr_intf/axis/scripts/axis.py:2453 +msgid "Warning" +msgstr "警告" + +#: tcl/ngcgui.tcl:3791 +msgid "File absolute path specifier conflicts with searchpath result" +msgstr "" + +#: tcl/ngcgui.tcl:3792 +#, fuzzy +msgid "Absolute Specifier" +msgstr "絕對反饋" + +#: tcl/ngcgui.tcl:3793 +msgid "Using Search Result" +msgstr "" + +#: tcl/ngcgui.tcl:3798 +msgid "File not in Search Path" +msgstr "" + +#: tcl/ngcgui.tcl:3800 +msgid "Must be in search path" +msgstr "" + +#: tcl/ngcgui.tcl:3802 +msgid "(File found -- not in search path)" +msgstr "" + +#: tcl/ngcgui.tcl:3804 +msgid "Current directory" +msgstr "" + +#: tcl/ngcgui.tcl:3805 +msgid "Search path" +msgstr "" + +#: tcl/ngcgui.tcl:3815 +msgid "Check setting for" +msgstr "" + +#: tcl/ngcgui.tcl:3816 +#, fuzzy +msgid "in ini file" +msgstr "(無文件)" + +#: tcl/ngcgui.tcl:3817 +msgid "(Restart required after fixing ini file)" +msgstr "" + +#: tcl/ngcgui.tcl:3832 +#, fuzzy +msgid "Try to Continue" +msgstr "繼續" + +#: tcl/ngcgui.tcl:3837 +#, fuzzy +msgid "Ngcgui Configuration File Not Found" +msgstr "打開配置文件:" + +#: tcl/ngcgui.tcl:3917 +msgid "Missing Tcl Package Img" +msgstr "" + +#: tcl/ngcgui.tcl:3918 +msgid "Please install Img" +msgstr "" + +#: tcl/ngcgui.tcl:4122 +#, fuzzy +msgid "ini file" +msgstr "(無文件)" + +#: tcl/ngcgui.tcl:4131 +msgid "not found" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:67 +msgid "found truetype-tracer v4 -OK" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:70 +msgid "Note truetype-tracer v4 is required" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:71 +msgid "Note: truetype-tracer v4 is required" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:81 +msgid "ngcgui_app.tcl must be loaded before" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:89 +msgid "Create a subroutine file from truetype-tracer (V4 reqd)" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:102 tcl/ngcgui_ttt.tcl:115 +#, fuzzy +msgid "problem with" +msgstr "替換:" + +#: tcl/ngcgui_ttt.tcl:106 +msgid "No entry for" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:109 +msgid "wrong version of truetype-tracer" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:125 +msgid "not writable, using" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:125 +msgid "and setting expandsub" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:161 +msgid "Text" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:171 +#, fuzzy +msgid "Linescale" +msgstr "比例" + +#: tcl/ngcgui_ttt.tcl:177 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3583 +msgid "none" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:192 +msgid "Subdiv" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:199 +#, fuzzy +msgid "default" +msgstr "AXIS 預 置 值" + +#: tcl/ngcgui_ttt.tcl:239 +#, fuzzy +msgid "Mode" +msgstr "運行模式" + +#: tcl/ngcgui_ttt.tcl:247 +#, fuzzy +msgid "normal" +msgstr "正常" + +#: tcl/ngcgui_ttt.tcl:248 +msgid "date" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:249 +msgid "fontname" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:262 +#, fuzzy +msgid "Switches" +msgstr "英寸" + +#: tcl/ngcgui_ttt.tcl:270 +msgid "Unicode" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:275 +msgid "Allow Rotation" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:295 +msgid "Make ngcgui-compatible subfile and new tab page" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:353 +msgid "Null text" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:384 +msgid "Using truetype-tracer default font" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:388 +#, fuzzy +msgid "no such file" +msgstr "(無文件)" + +#: tcl/ngcgui_ttt.tcl:393 +#, fuzzy +msgid "file not readable" +msgstr "文件未打開" + +#: tcl/ngcgui_ttt.tcl:507 +msgid "Creating new tab page" +msgstr "" + +#: tcl/ngcgui_app.tcl:25 +msgid "" +"requires command inifindall\n" +"from axis.py (LinuxCNC 2.5) or" +msgstr "" + +#: tcl/ngcgui_app.tcl:55 +#, fuzzy +msgid "Substituting" +msgstr "設定" + +#: tcl/ngcgui_app.tcl:55 +msgid "for" +msgstr "" + +#: tcl/ngcgui_app.tcl:59 +#, fuzzy +msgid "not readable" +msgstr "文件未打開" + +#: tcl/ngcgui_app.tcl:65 tcl/ngcgui_app.tcl:68 +msgid "Unexpected: multiple startups for ngcgui" +msgstr "" + +#: tcl/ngcgui_app.tcl:66 #, fuzzy -msgid "Set defaults" -msgstr "AXIS 預 置 值" +msgid "LinuxCNC" +msgstr "Linuxcnc 排錯" -#: tcl/ngcgui.tcl:3125 -msgid "not writable" +#: tcl/ngcgui_app.tcl:67 +msgid "for linuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" msgstr "" -#: tcl/ngcgui.tcl:3263 tcl/ngcgui.tcl:3443 +#: tcl/ngcgui_app.tcl:86 #, fuzzy -msgid "new" -msgstr "新" +msgid "LinuxCNC version" +msgstr "LinuxCNC 故障" -#: tcl/ngcgui.tcl:3288 -msgid "Open a new Subfile" +#: tcl/ngcgui_app.tcl:87 +msgid "for LinuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" msgstr "" -#: tcl/ngcgui.tcl:3434 -msgid "remove" +#: tcl/tooledit.tcl:65 +msgid "Problem reading ~/.tooleditrc" msgstr "" -#: tcl/ngcgui.tcl:3456 tcl/ngcgui.tcl:3462 -msgid "move" +#: tcl/tooledit.tcl:82 +#, tcl-format +msgid "Note: Ignoring duplicate column name: %s" msgstr "" -#: tcl/ngcgui.tcl:3561 src/emc/usr_intf/pncconf/pncconf.py:7022 -#: src/emc/usr_intf/pncconf/pncconf.py:7139 -#: src/emc/usr_intf/pncconf/pncconf.py:7306 -msgid "Custom" -msgstr "自訂" +#: tcl/tooledit.tcl:93 +#, fuzzy, tcl-format +msgid "Unknown column: %s" +msgstr "未知的刀具 %d" -#: tcl/ngcgui.tcl:3587 -msgid "Problem creating page" +#: tcl/tooledit.tcl:210 tcl/tooledit.tcl:213 tcl/tooledit.tcl:598 +#: tcl/tooledit.tcl:599 tcl/tooledit.tcl:1032 +msgid "NEW" msgstr "" -#: tcl/ngcgui.tcl:3594 -msgid "entrykeybindings not available" +#: tcl/tooledit.tcl:232 +#, tcl-format +msgid "%s must be a number" msgstr "" -#: tcl/ngcgui.tcl:3633 -msgid "Found multiple matches for" +#: tcl/tooledit.tcl:241 +#, fuzzy, tcl-format +msgid "filename: <%s> not readable" +msgstr "文件未打開" + +#: tcl/tooledit.tcl:245 +#, fuzzy, tcl-format +msgid "filename: <%s> not writable" +msgstr "文件未打開" + +#: tcl/tooledit.tcl:250 +#, tcl-format +msgid "directory: <%s> not writable" msgstr "" -#: tcl/ngcgui.tcl:3634 -msgid "using path" +#: tcl/tooledit.tcl:294 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, value <%s> is not a number" msgstr "" -#: tcl/ngcgui.tcl:3642 src/emc/usr_intf/axis/scripts/axis.py:2242 -#: src/emc/usr_intf/axis/scripts/axis.py:2255 -#: src/emc/usr_intf/axis/scripts/axis.py:2268 -msgid "Warning" -msgstr "警告" +#: tcl/tooledit.tcl:300 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, expected integer not <%s>" +msgstr "" -#: tcl/ngcgui.tcl:3643 -msgid "File absolute path specifier conflicts with searchpath result" +#: tcl/tooledit.tcl:316 +#, tcl-format +msgid "At linenumber %d, Unknown tag <%s>" +msgstr "" + +#: tcl/tooledit.tcl:399 +#, tcl-format +msgid "%s: Column sorting not available with tcl_version==%s" msgstr "" -#: tcl/ngcgui.tcl:3644 +#: tcl/tooledit.tcl:408 #, fuzzy -msgid "Absolute Specifier" -msgstr "絕對反饋" +msgid "tool" +msgstr "沒有刀具" -#: tcl/ngcgui.tcl:3645 -msgid "Using Search Result" +#: tcl/tooledit.tcl:409 +msgid "poc" msgstr "" -#: tcl/ngcgui.tcl:3650 -msgid "File not in Search Path" -msgstr "" +#: tcl/tooledit.tcl:410 +#, fuzzy +msgid "diam" +msgstr " 直徑" -#: tcl/ngcgui.tcl:3652 -msgid "Must be in search path" +#: tcl/tooledit.tcl:411 +msgid "front" msgstr "" -#: tcl/ngcgui.tcl:3654 -msgid "(File found -- not in search path)" +#: tcl/tooledit.tcl:412 +msgid "back" msgstr "" -#: tcl/ngcgui.tcl:3656 -msgid "Current directory" +#: tcl/tooledit.tcl:413 +msgid "orien" msgstr "" -#: tcl/ngcgui.tcl:3657 -msgid "Search path" -msgstr "" +#: tcl/tooledit.tcl:414 +#, fuzzy +msgid "comment" +msgstr "增量" -#: tcl/ngcgui.tcl:3663 -msgid "Check setting for" -msgstr "" +#: tcl/tooledit.tcl:444 +#, fuzzy +msgid "Del" +msgstr "刪除" -#: tcl/ngcgui.tcl:3664 +#: tcl/tooledit.tcl:473 #, fuzzy -msgid "in ini file" -msgstr "(無文件)" +msgid "ReLoadTable" +msgstr "重新 載入 刀具表" -#: tcl/ngcgui.tcl:3665 -msgid "(Restart required after fixing ini file)" +#: tcl/tooledit.tcl:478 +#, fuzzy +msgid "SaveFile" +msgstr "保存到文件" + +#: tcl/tooledit.tcl:483 +msgid "ReRead" msgstr "" -#: tcl/ngcgui.tcl:3680 +#: tcl/tooledit.tcl:485 #, fuzzy -msgid "Try to Continue" -msgstr "繼續" +msgid "AddTool" +msgstr "刀具" -#: tcl/ngcgui.tcl:3685 -#, fuzzy -msgid "Ngcgui Configuration File Not Found" -msgstr "打開配置文件:" +#: tcl/tooledit.tcl:535 +#, tcl-format +msgid "Opened %s" +msgstr "" -#: tcl/ngcgui.tcl:3765 -msgid "Missing Tcl Package Img" +#: tcl/tooledit.tcl:536 +#, fuzzy, tcl-format +msgid "Created %s" +msgstr "創建 或 修改" + +#: tcl/tooledit.tcl:537 +msgid "File updated" msgstr "" -#: tcl/ngcgui.tcl:3766 -msgid "Please install Img" +#: tcl/tooledit.tcl:538 +msgid "File modified" msgstr "" -#: tcl/ngcgui.tcl:3965 -#, fuzzy -msgid "ini file" -msgstr "(無文件)" +#: tcl/tooledit.tcl:539 +msgid "File check errors" +msgstr "" -#: tcl/ngcgui.tcl:3973 -msgid "not found" +#: tcl/tooledit.tcl:540 +msgid "File checked" msgstr "" -#: tcl/ngcgui_ttt.tcl:67 -msgid "found truetype-tracer v4 -OK" +#: tcl/tooledit.tcl:541 +msgid "File items deleted" msgstr "" -#: tcl/ngcgui_ttt.tcl:70 -msgid "Note truetype-tracer v4 is required" +#: tcl/tooledit.tcl:542 +msgid "Bogus lines in file ignored" msgstr "" -#: tcl/ngcgui_ttt.tcl:71 -msgid "Note: truetype-tracer v4 is required" +#: tcl/tooledit.tcl:543 +msgid "File errors -- Check Entries" msgstr "" -#: tcl/ngcgui_ttt.tcl:81 -msgid "ngcgui_app.tcl must be loaded before" +#: tcl/tooledit.tcl:544 +msgid "Warning: File changed by another process" msgstr "" -#: tcl/ngcgui_ttt.tcl:89 -msgid "Create a subroutine file from truetype-tracer (V4 reqd)" +#: tcl/tooledit.tcl:545 +msgid "Warning: File deleted by another process" msgstr "" -#: tcl/ngcgui_ttt.tcl:102 tcl/ngcgui_ttt.tcl:115 +#: tcl/tooledit.tcl:546 #, fuzzy -msgid "problem with" -msgstr "替換:" +msgid "Added Tool" +msgstr "加 額外 刀具" -#: tcl/ngcgui_ttt.tcl:106 -msgid "No entry for" +#: tcl/tooledit.tcl:550 +#, tcl-format +msgid "Sorted by %s, increasing" msgstr "" -#: tcl/ngcgui_ttt.tcl:109 -msgid "wrong version of truetype-tracer" +#: tcl/tooledit.tcl:551 +#, tcl-format +msgid "Sorted by %s, decreasing" msgstr "" -#: tcl/ngcgui_ttt.tcl:125 -msgid "not writable, using" +#: tcl/tooledit.tcl:593 +msgid "Added" msgstr "" -#: tcl/ngcgui_ttt.tcl:125 -msgid "and setting expandsub" +#: tcl/tooledit.tcl:802 +#, tcl-format +msgid "Tool %s, Column %s, parameter %s is not a number" msgstr "" -#: tcl/ngcgui_ttt.tcl:161 -msgid "Text" +#: tcl/tooledit.tcl:811 +#, tcl-format +msgid "Tool %s, parameter %s must be nonnegative integer" msgstr "" -#: tcl/ngcgui_ttt.tcl:171 -#, fuzzy -msgid "Linescale" -msgstr "比例" +#: tcl/tooledit.tcl:819 +#, tcl-format +msgid "Tool %s: must be 0..9 integer" +msgstr "" -#: tcl/ngcgui_ttt.tcl:177 -msgid "none" +#: tcl/tooledit.tcl:826 +#, tcl-format +msgid "Tool %s: <%s> must be between -360 and 360" msgstr "" -#: tcl/ngcgui_ttt.tcl:192 -msgid "Subdiv" +#: tcl/tooledit.tcl:842 +#, tcl-format +msgid "Pocket <%s> specified multiple times" msgstr "" -#: tcl/ngcgui_ttt.tcl:199 -#, fuzzy -msgid "default" -msgstr "AXIS 預 置 值" +#: tcl/tooledit.tcl:857 +#, tcl-format +msgid "Tool <%s> specified multiple times" +msgstr "" -#: tcl/ngcgui_ttt.tcl:239 +#: tcl/tooledit.tcl:902 #, fuzzy -msgid "Mode" -msgstr "運行模式" +msgid "File Modified" +msgstr "修改..." -#: tcl/ngcgui_ttt.tcl:247 -#, fuzzy -msgid "normal" -msgstr "正常" +#: tcl/tooledit.tcl:903 +msgid "Save Modifications to File?" +msgstr "" -#: tcl/ngcgui_ttt.tcl:248 -msgid "date" +#: tcl/tooledit.tcl:930 +#, tcl-format +msgid "" +"Only these columns are currently used:\n" +"\n" +" %s" msgstr "" -#: tcl/ngcgui_ttt.tcl:249 -msgid "fontname" +#: tcl/tooledit.tcl:931 +msgid "Limit display to these columns by specifying" msgstr "" -#: tcl/ngcgui_ttt.tcl:262 +#: tcl/tooledit.tcl:933 #, fuzzy -msgid "Switches" -msgstr "英寸" +msgid "Format for ini file is" +msgstr "不能打開 %s" -#: tcl/ngcgui_ttt.tcl:270 -msgid "Unicode" +#: tcl/tooledit.tcl:935 +msgid "For standalone use, invoke as" msgstr "" -#: tcl/ngcgui_ttt.tcl:275 -msgid "Allow Rotation" +#: tcl/tooledit.tcl:936 +msgid "tool_table_filename" msgstr "" -#: tcl/ngcgui_ttt.tcl:295 -msgid "Make ngcgui-compatible subfile and new tab page" +#: tcl/tooledit.tcl:956 +#, fuzzy, tcl-format +msgid "Created by %s" +msgstr "創建 或 修改" + +#: tcl/tooledit.tcl:957 +msgid "Saved geometry (updated on program termination)" msgstr "" -#: tcl/ngcgui_ttt.tcl:353 -msgid "Null text" +#: tcl/tooledit.tcl:980 +#, tcl-format +msgid "" +"%s: Axis inifile specifies multiple inifile items for: [EMCIO]TOOL_TABLE" msgstr "" -#: tcl/ngcgui_ttt.tcl:384 -msgid "Using truetype-tracer default font" +#: tcl/tooledit.tcl:981 +#, tcl-format +msgid "%s: Using: %s" msgstr "" -#: tcl/ngcgui_ttt.tcl:388 -#, fuzzy -msgid "no such file" -msgstr "(無文件)" +#: tcl/tooledit.tcl:990 +#, tcl-format +msgid "" +"%s: Warning: Axis is running but the tool table file <%s> \n" +"differs from the standalone startup file <%s>" +msgstr "" -#: tcl/ngcgui_ttt.tcl:393 +#: tcl/tooledit.tcl:1004 +msgid "Must be On and Idle to reload tool table" +msgstr "" + +#: tcl/tooledit.tcl:1093 +msgid "Usage" +msgstr "" + +#: tcl/tooledit.tcl:1094 tcl/tooledit.tcl:1095 #, fuzzy -msgid "file not readable" -msgstr "文件未打開" +msgid "filename" +msgstr "文件名:" -#: tcl/ngcgui_ttt.tcl:507 -msgid "Creating new tab page" +#: tcl/tooledit.tcl:1096 +#, tcl-format +msgid "Allowed column_ names are: %s" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:144 -#: src/emc/usr_intf/axis/scripts/axis.py:148 +#: tcl/tooledit.tcl:1106 +#, fuzzy +msgid "Missing filename" +msgstr " 參數(_m) " + +#: src/emc/usr_intf/axis/scripts/axis.py:183 msgid "Emergency stop" msgstr "緊急 停止" -#: src/emc/usr_intf/axis/scripts/axis.py:145 -#: src/emc/usr_intf/axis/scripts/axis.py:149 +#: src/emc/usr_intf/axis/scripts/axis.py:184 msgid "Turn machine on" msgstr "開動 機器" -#: src/emc/usr_intf/axis/scripts/axis.py:147 -#: src/emc/usr_intf/axis/scripts/axis.py:151 +#: src/emc/usr_intf/axis/scripts/axis.py:186 msgid "Activate first axis" msgstr "激活 第一軸" -#: src/emc/usr_intf/axis/scripts/axis.py:148 -#: src/emc/usr_intf/axis/scripts/axis.py:152 +#: src/emc/usr_intf/axis/scripts/axis.py:187 msgid "Activate second axis" msgstr "激活 第二軸" -#: src/emc/usr_intf/axis/scripts/axis.py:149 -#: src/emc/usr_intf/axis/scripts/axis.py:153 +#: src/emc/usr_intf/axis/scripts/axis.py:188 msgid "Activate third axis" msgstr "激活 第三軸" -#: src/emc/usr_intf/axis/scripts/axis.py:150 -#: src/emc/usr_intf/axis/scripts/axis.py:154 +#: src/emc/usr_intf/axis/scripts/axis.py:189 msgid "Activate fourth axis" msgstr "激活 第四軸" -#: src/emc/usr_intf/axis/scripts/axis.py:151 -#: src/emc/usr_intf/axis/scripts/axis.py:155 +#: src/emc/usr_intf/axis/scripts/axis.py:190 msgid "Activate fifth through ninth axis" msgstr "激活 第五軸 到 第九軸" -#: src/emc/usr_intf/axis/scripts/axis.py:152 -#: src/emc/usr_intf/axis/scripts/axis.py:156 +#: src/emc/usr_intf/axis/scripts/axis.py:191 msgid "Set Feed Override from 0% to 100%" msgstr "進給 超速設為從 0% 至 100%" -#: src/emc/usr_intf/axis/scripts/axis.py:153 -#: src/emc/usr_intf/axis/scripts/axis.py:157 +#: src/emc/usr_intf/axis/scripts/axis.py:192 msgid ", and ." msgstr ", 和 ." -#: src/emc/usr_intf/axis/scripts/axis.py:153 -#: src/emc/usr_intf/axis/scripts/axis.py:157 +#: src/emc/usr_intf/axis/scripts/axis.py:192 msgid "Select jog speed" msgstr "選擇 慢步 速度" -#: src/emc/usr_intf/axis/scripts/axis.py:154 -#: src/emc/usr_intf/axis/scripts/axis.py:158 +#: src/emc/usr_intf/axis/scripts/axis.py:193 msgid "< and >" msgstr "< 和 >" -#: src/emc/usr_intf/axis/scripts/axis.py:154 -#: src/emc/usr_intf/axis/scripts/axis.py:158 +#: src/emc/usr_intf/axis/scripts/axis.py:193 msgid "Select angular jog speed" msgstr "選擇 角 慢步 速度" -#: src/emc/usr_intf/axis/scripts/axis.py:155 -#: src/emc/usr_intf/axis/scripts/axis.py:159 +#: src/emc/usr_intf/axis/scripts/axis.py:194 msgid "I, Shift-I" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:155 share/axis/tcl/axis.tcl:2356 -#: src/emc/usr_intf/axis/scripts/axis.py:159 +#: src/emc/usr_intf/axis/scripts/axis.py:194 share/axis/tcl/axis.tcl:2481 msgid "Select jog increment" msgstr "選擇 慢步 增量" -#: src/emc/usr_intf/axis/scripts/axis.py:156 -#: src/emc/usr_intf/axis/scripts/axis.py:160 +#: src/emc/usr_intf/axis/scripts/axis.py:195 msgid "Continuous jog" msgstr "連續 慢步" -#: src/emc/usr_intf/axis/scripts/axis.py:157 -#: src/emc/usr_intf/pncconf/pncconf.py:479 -#: src/emc/usr_intf/axis/scripts/axis.py:161 +#: src/emc/usr_intf/axis/scripts/axis.py:196 +#: src/emc/usr_intf/pncconf/pncconf.py:408 msgid "Home" msgstr "零點" -#: src/emc/usr_intf/axis/scripts/axis.py:157 -#: src/emc/usr_intf/axis/scripts/axis.py:161 +#: src/emc/usr_intf/axis/scripts/axis.py:196 msgid "Send active axis home" msgstr "送 活躍軸 回零點" -#: src/emc/usr_intf/axis/scripts/axis.py:158 -#: src/emc/usr_intf/axis/scripts/axis.py:162 +#: src/emc/usr_intf/axis/scripts/axis.py:197 msgid "Ctrl-Home" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:158 -#: src/emc/usr_intf/axis/scripts/axis.py:162 +#: src/emc/usr_intf/axis/scripts/axis.py:197 msgid "Home all axes" msgstr "所有軸 回零點" -#: src/emc/usr_intf/axis/scripts/axis.py:159 -#: src/emc/usr_intf/axis/scripts/axis.py:163 +#: src/emc/usr_intf/axis/scripts/axis.py:198 msgid "Shift-Home" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:159 -#: src/emc/usr_intf/axis/scripts/axis.py:163 +#: src/emc/usr_intf/axis/scripts/axis.py:198 msgid "Zero G54 offset for active axis" msgstr "置零 G54 偏置 對於 活躍 的軸" -#: src/emc/usr_intf/axis/scripts/axis.py:160 -#: src/emc/usr_intf/axis/scripts/axis.py:164 +#: src/emc/usr_intf/axis/scripts/axis.py:199 msgid "End" msgstr "終止" -#: src/emc/usr_intf/axis/scripts/axis.py:160 -#: src/emc/usr_intf/axis/scripts/axis.py:164 +#: src/emc/usr_intf/axis/scripts/axis.py:199 msgid "Set G54 offset for active axis" msgstr "設 G54 偏置 對於 活躍 的軸" -#: src/emc/usr_intf/axis/scripts/axis.py:161 -#: src/emc/usr_intf/axis/scripts/axis.py:165 +#: src/emc/usr_intf/axis/scripts/axis.py:200 msgid "Jog active axis" msgstr "慢步 活躍的 軸" -#: src/emc/usr_intf/axis/scripts/axis.py:164 -#: src/emc/usr_intf/axis/scripts/axis.py:168 +#: src/emc/usr_intf/axis/scripts/axis.py:203 msgid "Left, Right" msgstr "左,右" -#: src/emc/usr_intf/axis/scripts/axis.py:164 -#: src/emc/usr_intf/axis/scripts/axis.py:168 +#: src/emc/usr_intf/axis/scripts/axis.py:203 msgid "Jog first axis" msgstr "慢步 第一軸" -#: src/emc/usr_intf/axis/scripts/axis.py:165 -#: src/emc/usr_intf/axis/scripts/axis.py:169 +#: src/emc/usr_intf/axis/scripts/axis.py:204 msgid "Up, Down" msgstr "上,下" -#: src/emc/usr_intf/axis/scripts/axis.py:165 -#: src/emc/usr_intf/axis/scripts/axis.py:169 +#: src/emc/usr_intf/axis/scripts/axis.py:204 msgid "Jog second axis" msgstr "慢步 第二軸" -#: src/emc/usr_intf/axis/scripts/axis.py:166 -#: src/emc/usr_intf/axis/scripts/axis.py:170 +#: src/emc/usr_intf/axis/scripts/axis.py:205 msgid "Pg Up, Pg Dn" msgstr "頁向上, 頁向下" -#: src/emc/usr_intf/axis/scripts/axis.py:166 -#: src/emc/usr_intf/axis/scripts/axis.py:170 +#: src/emc/usr_intf/axis/scripts/axis.py:205 msgid "Jog third axis" msgstr "慢步 第三軸" -#: src/emc/usr_intf/axis/scripts/axis.py:167 -#: src/emc/usr_intf/axis/scripts/axis.py:171 +#: src/emc/usr_intf/axis/scripts/axis.py:206 msgid "Shift+above jogs" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:167 -#: src/emc/usr_intf/axis/scripts/axis.py:171 +#: src/emc/usr_intf/axis/scripts/axis.py:206 msgid "Jog at traverse speed" msgstr "慢步 橫過速度" -#: src/emc/usr_intf/axis/scripts/axis.py:168 -#: src/emc/usr_intf/axis/scripts/axis.py:172 +#: src/emc/usr_intf/axis/scripts/axis.py:207 msgid "Jog fourth axis" msgstr "慢步 第四軸" -#: src/emc/usr_intf/axis/scripts/axis.py:171 -#: src/emc/usr_intf/axis/scripts/axis.py:175 +#: src/emc/usr_intf/axis/scripts/axis.py:210 msgid "Toggle between Drag and Rotate mode" msgstr "切換 拖動 和 旋轉 模式" -#: src/emc/usr_intf/axis/scripts/axis.py:172 -#: src/emc/usr_intf/axis/scripts/axis.py:176 +#: src/emc/usr_intf/axis/scripts/axis.py:211 msgid "Left Button" msgstr "左 按鈕" -#: src/emc/usr_intf/axis/scripts/axis.py:172 -#: src/emc/usr_intf/axis/scripts/axis.py:176 +#: src/emc/usr_intf/axis/scripts/axis.py:211 msgid "Pan, rotate or select line" msgstr "平移,旋轉 或 行選擇" -#: src/emc/usr_intf/axis/scripts/axis.py:173 -#: src/emc/usr_intf/axis/scripts/axis.py:177 +#: src/emc/usr_intf/axis/scripts/axis.py:212 msgid "Shift+Left Button" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:173 -#: src/emc/usr_intf/axis/scripts/axis.py:177 +#: src/emc/usr_intf/axis/scripts/axis.py:212 msgid "Rotate or pan" msgstr "旋轉 或 平移" -#: src/emc/usr_intf/axis/scripts/axis.py:174 -#: src/emc/usr_intf/axis/scripts/axis.py:178 +#: src/emc/usr_intf/axis/scripts/axis.py:213 msgid "Right Button" msgstr "右按鈕" -#: src/emc/usr_intf/axis/scripts/axis.py:174 -#: src/emc/usr_intf/axis/scripts/axis.py:176 -#: src/emc/usr_intf/axis/scripts/axis.py:177 -#: src/emc/usr_intf/axis/scripts/axis.py:178 -#: src/emc/usr_intf/axis/scripts/axis.py:180 -#: src/emc/usr_intf/axis/scripts/axis.py:181 +#: src/emc/usr_intf/axis/scripts/axis.py:213 +#: src/emc/usr_intf/axis/scripts/axis.py:215 +#: src/emc/usr_intf/axis/scripts/axis.py:216 msgid "Zoom view" msgstr "縮放 視圖" -#: src/emc/usr_intf/axis/scripts/axis.py:175 -#: src/emc/usr_intf/axis/scripts/axis.py:179 +#: src/emc/usr_intf/axis/scripts/axis.py:214 msgid "Wheel Button" msgstr "滾輪 按鍵" -#: src/emc/usr_intf/axis/scripts/axis.py:175 -#: src/emc/usr_intf/axis/scripts/axis.py:179 +#: src/emc/usr_intf/axis/scripts/axis.py:214 msgid "Rotate view" msgstr "旋轉 視圖" -#: src/emc/usr_intf/axis/scripts/axis.py:176 -#: src/emc/usr_intf/axis/scripts/axis.py:180 +#: src/emc/usr_intf/axis/scripts/axis.py:215 msgid "Rotate Wheel" msgstr "旋轉 滾輪" -#: src/emc/usr_intf/axis/scripts/axis.py:177 -#: src/emc/usr_intf/axis/scripts/axis.py:181 +#: src/emc/usr_intf/axis/scripts/axis.py:216 msgid "Control+Left Button" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:180 -#: src/emc/usr_intf/axis/scripts/axis.py:184 +#: src/emc/usr_intf/axis/scripts/axis.py:219 msgid "Manual control" msgstr "手動 控制" -#: src/emc/usr_intf/axis/scripts/axis.py:181 -#: src/emc/usr_intf/axis/scripts/axis.py:185 +#: src/emc/usr_intf/axis/scripts/axis.py:220 msgid "Code entry (MDI)" msgstr "代碼輸入 (MDI)" -#: src/emc/usr_intf/axis/scripts/axis.py:182 -#: src/emc/usr_intf/axis/scripts/axis.py:186 +#: src/emc/usr_intf/axis/scripts/axis.py:221 msgid "Control-M" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:182 -#: src/emc/usr_intf/axis/scripts/axis.py:186 +#: src/emc/usr_intf/axis/scripts/axis.py:221 msgid "Clear MDI history" msgstr "清除 MDI 歷史" -#: src/emc/usr_intf/axis/scripts/axis.py:183 -#: src/emc/usr_intf/axis/scripts/axis.py:187 +#: src/emc/usr_intf/axis/scripts/axis.py:222 msgid "Control-H" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:183 -#: src/emc/usr_intf/axis/scripts/axis.py:187 +#: src/emc/usr_intf/axis/scripts/axis.py:222 msgid "Copy selected MDI history elements" msgstr "複製 選定的 MDI 歷史 元件" -#: src/emc/usr_intf/axis/scripts/axis.py:184 -#: src/emc/usr_intf/axis/scripts/axis.py:188 +#: src/emc/usr_intf/axis/scripts/axis.py:223 msgid "to clipboard" msgstr "到 剪貼板" -#: src/emc/usr_intf/axis/scripts/axis.py:185 -#: src/emc/usr_intf/axis/scripts/axis.py:189 +#: src/emc/usr_intf/axis/scripts/axis.py:224 msgid "Control-Shift-H" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:185 -#: src/emc/usr_intf/axis/scripts/axis.py:189 +#: src/emc/usr_intf/axis/scripts/axis.py:224 msgid "Paste clipboard to MDI history" msgstr "剪貼板 貼入到 MDI 歷史" -#: src/emc/usr_intf/axis/scripts/axis.py:186 share/axis/tcl/axis.tcl:1113 +#: src/emc/usr_intf/axis/scripts/axis.py:225 share/axis/tcl/axis.tcl:1183 #: src/emc/usr_intf/touchy/touchy.glade:508 -#: src/emc/usr_intf/axis/scripts/axis.py:190 msgid "Override Limits" msgstr "超速 極限" -#: src/emc/usr_intf/axis/scripts/axis.py:188 -#: src/emc/usr_intf/axis/scripts/axis.py:192 +#: src/emc/usr_intf/axis/scripts/axis.py:227 msgid "Open program" msgstr "打開 程序" -#: src/emc/usr_intf/axis/scripts/axis.py:189 -#: src/emc/usr_intf/axis/scripts/axis.py:193 +#: src/emc/usr_intf/axis/scripts/axis.py:228 msgid "Control-R" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:189 -#: src/emc/usr_intf/axis/scripts/axis.py:193 +#: src/emc/usr_intf/axis/scripts/axis.py:228 msgid "Reload program" msgstr "重裝 程序" -#: src/emc/usr_intf/axis/scripts/axis.py:190 -#: src/emc/usr_intf/axis/scripts/axis.py:194 +#: src/emc/usr_intf/axis/scripts/axis.py:229 msgid "Control-S" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:190 -#: src/emc/usr_intf/axis/scripts/axis.py:194 +#: src/emc/usr_intf/axis/scripts/axis.py:229 msgid "Save g-code as" msgstr "另存 G-代碼 為" -#: src/emc/usr_intf/axis/scripts/axis.py:191 -#: src/emc/usr_intf/axis/scripts/axis.py:195 +#: src/emc/usr_intf/axis/scripts/axis.py:230 msgid "Run program" msgstr "程序 啟動" -#: src/emc/usr_intf/axis/scripts/axis.py:192 -#: src/emc/usr_intf/axis/scripts/axis.py:196 +#: src/emc/usr_intf/axis/scripts/axis.py:231 msgid "Step program" msgstr "步進 程序" -#: src/emc/usr_intf/axis/scripts/axis.py:193 -#: src/emc/usr_intf/axis/scripts/axis.py:197 +#: src/emc/usr_intf/axis/scripts/axis.py:232 msgid "Pause program" msgstr "暂停 程序" -#: src/emc/usr_intf/axis/scripts/axis.py:194 -#: src/emc/usr_intf/axis/scripts/axis.py:198 +#: src/emc/usr_intf/axis/scripts/axis.py:233 msgid "Resume program" msgstr "恢复 程序" -#: src/emc/usr_intf/axis/scripts/axis.py:195 -#: src/emc/usr_intf/axis/scripts/axis.py:199 +#: src/emc/usr_intf/axis/scripts/axis.py:234 msgid "Stop running program, or" msgstr "停止 正在 運行 的程序, 或" -#: src/emc/usr_intf/axis/scripts/axis.py:196 -#: src/emc/usr_intf/axis/scripts/axis.py:200 +#: src/emc/usr_intf/axis/scripts/axis.py:235 msgid "stop loading program preview" msgstr "停止 載入 程序 預覽" -#: src/emc/usr_intf/axis/scripts/axis.py:198 -#: src/emc/usr_intf/axis/scripts/axis.py:202 +#: src/emc/usr_intf/axis/scripts/axis.py:237 msgid "Toggle mist" msgstr "切換 噴霧" - -#: src/emc/usr_intf/axis/scripts/axis.py:199 -#: src/emc/usr_intf/axis/scripts/axis.py:203 + +#: src/emc/usr_intf/axis/scripts/axis.py:238 msgid "Toggle flood" msgstr "切換 淹浸" -#: src/emc/usr_intf/axis/scripts/axis.py:200 -#: src/emc/usr_intf/axis/scripts/axis.py:204 +#: src/emc/usr_intf/axis/scripts/axis.py:239 msgid "Spindle brake off" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:201 -#: src/emc/usr_intf/axis/scripts/axis.py:205 +#: src/emc/usr_intf/axis/scripts/axis.py:240 msgid "Shift-B" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:201 -#: src/emc/usr_intf/axis/scripts/axis.py:205 +#: src/emc/usr_intf/axis/scripts/axis.py:240 msgid "Spindle brake on" msgstr "主軸 剎車 開" -#: src/emc/usr_intf/axis/scripts/axis.py:202 -#: src/emc/usr_intf/axis/scripts/axis.py:206 +#: src/emc/usr_intf/axis/scripts/axis.py:241 msgid "Turn spindle clockwise" msgstr "開動 主軸 順時針 方向" -#: src/emc/usr_intf/axis/scripts/axis.py:203 -#: src/emc/usr_intf/axis/scripts/axis.py:207 +#: src/emc/usr_intf/axis/scripts/axis.py:242 msgid "Turn spindle counterclockwise" msgstr "開動 主軸 反時針 方向" -#: src/emc/usr_intf/axis/scripts/axis.py:204 -#: src/emc/usr_intf/axis/scripts/axis.py:208 +#: src/emc/usr_intf/axis/scripts/axis.py:243 msgid "Turn spindle more slowly" msgstr "開動 主軸 速度 比較慢" -#: src/emc/usr_intf/axis/scripts/axis.py:205 -#: src/emc/usr_intf/axis/scripts/axis.py:209 +#: src/emc/usr_intf/axis/scripts/axis.py:244 msgid "Turn spindle more quickly" msgstr "開動 主軸 速度 更快" -#: src/emc/usr_intf/axis/scripts/axis.py:207 -#: src/emc/usr_intf/axis/scripts/axis.py:211 +#: src/emc/usr_intf/axis/scripts/axis.py:246 msgid "Control-K" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:207 -#: src/emc/usr_intf/axis/scripts/axis.py:211 +#: src/emc/usr_intf/axis/scripts/axis.py:246 msgid "Clear live plot" msgstr "清除 現場 繪圖" -#: src/emc/usr_intf/axis/scripts/axis.py:208 -#: src/emc/usr_intf/axis/scripts/axis.py:212 +#: src/emc/usr_intf/axis/scripts/axis.py:247 msgid "Cycle among preset views" msgstr "循環 在預設 視圖 之間" -#: src/emc/usr_intf/axis/scripts/axis.py:209 -#: src/emc/usr_intf/axis/scripts/axis.py:213 +#: src/emc/usr_intf/axis/scripts/axis.py:248 msgid "Cycle among preview, DRO, and user tabs" msgstr "循環 在 視圖 之間, DRO, 和 用戶 標籤" -#: src/emc/usr_intf/axis/scripts/axis.py:211 -#: src/emc/usr_intf/axis/scripts/axis.py:215 +#: src/emc/usr_intf/axis/scripts/axis.py:250 msgid "Ctrl-Space" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:211 -#: src/emc/usr_intf/axis/scripts/axis.py:215 +#: src/emc/usr_intf/axis/scripts/axis.py:250 msgid "Clear notifications" msgstr "清除 通報" -#: src/emc/usr_intf/axis/scripts/axis.py:828 -#: src/emc/usr_intf/axis/scripts/axis.py:836 +#: src/emc/usr_intf/axis/scripts/axis.py:850 #, python-format msgid "Unknown tool %d" msgstr "未知的刀具 %d" -#: src/emc/usr_intf/axis/scripts/axis.py:830 -#: src/emc/usr_intf/axis/scripts/axis.py:838 +#: src/emc/usr_intf/axis/scripts/axis.py:852 msgid "No tool" msgstr "沒有刀具" -#: src/emc/usr_intf/axis/scripts/axis.py:832 -#: src/emc/usr_intf/axis/scripts/axis.py:840 +#: src/emc/usr_intf/axis/scripts/axis.py:854 #, python-format msgid "Tool %(tool)d, offset %(zo)g, diameter %(dia)g" msgstr "刀具 %(tool)d, 偏移 %(zo)g, 直徑 %(dia)g" -#: src/emc/usr_intf/axis/scripts/axis.py:834 -#: src/emc/usr_intf/axis/scripts/axis.py:842 +#: src/emc/usr_intf/axis/scripts/axis.py:856 #, python-format msgid "Tool %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" msgstr "刀具 %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" -#: src/emc/usr_intf/axis/scripts/axis.py:1005 -#: src/emc/usr_intf/axis/scripts/axis.py:1013 +#: src/emc/usr_intf/axis/scripts/axis.py:1031 msgid "Filtering..." msgstr "篩選...." -#: src/emc/usr_intf/axis/scripts/axis.py:1065 -#: src/emc/usr_intf/axis/scripts/axis.py:1073 +#: src/emc/usr_intf/axis/scripts/axis.py:1102 msgid "Filter failed" msgstr "篩選 失敗" -#: src/emc/usr_intf/axis/scripts/axis.py:1066 -#: src/emc/usr_intf/axis/scripts/axis.py:1074 +#: src/emc/usr_intf/axis/scripts/axis.py:1103 #, python-format msgid "" "The program %(program)r exited with code %(code)d. Any error messages it " "produced are shown below:" msgstr "該程序 %(program)r 退出 的 程式碼 %(code)d. 所有 錯誤信息 產生 如下:" -#: src/emc/usr_intf/axis/scripts/axis.py:1127 -#: src/emc/usr_intf/axis/scripts/axis.py:1139 +#: src/emc/usr_intf/axis/scripts/axis.py:1171 #, python-format msgid "G-Code error in %s" msgstr "G 代碼 錯誤 在 %s" -#: src/emc/usr_intf/axis/scripts/axis.py:1128 -#: src/emc/usr_intf/axis/scripts/axis.py:1140 +#: src/emc/usr_intf/axis/scripts/axis.py:1172 #, python-format msgid "" "Near line %(seq)d of %(f)s:\n" "%(error_str)s" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1279 -#: src/emc/usr_intf/axis/scripts/axis.py:2712 share/axis/tcl/axis.tcl:1092 -#: share/axis/tcl/axis.tcl:1094 share/axis/tcl/axis.tcl:2144 -#: src/emc/usr_intf/axis/scripts/axis.py:1292 -#: src/emc/usr_intf/axis/scripts/axis.py:2725 +#: src/emc/usr_intf/axis/scripts/axis.py:1341 +#: src/emc/usr_intf/axis/scripts/axis.py:2942 share/axis/tcl/axis.tcl:1162 +#: share/axis/tcl/axis.tcl:1164 share/axis/tcl/axis.tcl:2269 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:895 msgid "Continuous" msgstr "連續" -#: src/emc/usr_intf/axis/scripts/axis.py:1390 -#: src/emc/usr_intf/axis/scripts/axis.py:1403 +#: src/emc/usr_intf/axis/scripts/axis.py:1452 msgid "Ok" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1533 -#: src/emc/usr_intf/axis/scripts/axis.py:1546 +#: src/emc/usr_intf/axis/scripts/axis.py:1599 msgid "T Tool Table" msgstr "T 刀具表" -#: src/emc/usr_intf/axis/scripts/axis.py:1544 -#: src/emc/usr_intf/axis/scripts/axis.py:1717 -#: src/emc/usr_intf/stepconf/stepconf.py:1691 -#: src/emc/usr_intf/stepconf/stepconf.py:2235 -#: src/emc/usr_intf/axis/scripts/axis.py:1557 -#: src/emc/usr_intf/axis/scripts/axis.py:1730 +#: src/emc/usr_intf/axis/scripts/axis.py:1610 +#: src/emc/usr_intf/axis/scripts/axis.py:1859 +#: src/emc/usr_intf/axis/scripts/axis.py:2387 +#: src/emc/usr_intf/stepconf/stepconf.py:1328 +#: src/emc/usr_intf/stepconf/pages.py:631 msgid "in" msgstr "英寸" -#: src/emc/usr_intf/axis/scripts/axis.py:1547 -#: src/emc/usr_intf/axis/scripts/axis.py:1560 +#: src/emc/usr_intf/axis/scripts/axis.py:1613 msgid " radius" msgstr " 半徑" -#: src/emc/usr_intf/axis/scripts/axis.py:1549 -#: src/emc/usr_intf/axis/scripts/axis.py:1562 +#: src/emc/usr_intf/axis/scripts/axis.py:1615 msgid " diameter" msgstr " 直徑" -#: src/emc/usr_intf/axis/scripts/axis.py:1550 -#: src/emc/usr_intf/axis/scripts/axis.py:1563 +#: src/emc/usr_intf/axis/scripts/axis.py:1616 msgid "°" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1559 -#: src/emc/usr_intf/axis/scripts/axis.py:1572 +#: src/emc/usr_intf/axis/scripts/axis.py:1625 msgid "Coordinate System:" msgstr "坐標系:" -#: src/emc/usr_intf/axis/scripts/axis.py:1575 -#: src/emc/usr_intf/axis/scripts/axis.py:1588 +#: src/emc/usr_intf/axis/scripts/axis.py:1641 msgid "fixture" msgstr "夾具" -#: src/emc/usr_intf/axis/scripts/axis.py:1576 -#: src/emc/usr_intf/axis/scripts/axis.py:1589 +#: src/emc/usr_intf/axis/scripts/axis.py:1642 msgid "workpiece" msgstr "工件" -#: src/emc/usr_intf/axis/scripts/axis.py:1592 -#: src/emc/usr_intf/axis/scripts/axis.py:1605 +#: src/emc/usr_intf/axis/scripts/axis.py:1658 msgid "Name:" msgstr "名稱:" -#: src/emc/usr_intf/axis/scripts/axis.py:1592 -#: src/emc/usr_intf/axis/scripts/axis.py:1605 +#: src/emc/usr_intf/axis/scripts/axis.py:1658 msgid "Size:" msgstr "尺寸:" -#: src/emc/usr_intf/axis/scripts/axis.py:1593 -#: src/emc/usr_intf/axis/scripts/axis.py:1606 +#: src/emc/usr_intf/axis/scripts/axis.py:1659 msgid "Tool order:" msgstr "刀具秩序:" -#: src/emc/usr_intf/axis/scripts/axis.py:1593 -#: src/emc/usr_intf/axis/scripts/axis.py:1606 +#: src/emc/usr_intf/axis/scripts/axis.py:1659 msgid "Rapid distance:" msgstr "快速的距離:" -#: src/emc/usr_intf/axis/scripts/axis.py:1594 -#: src/emc/usr_intf/axis/scripts/axis.py:1607 +#: src/emc/usr_intf/axis/scripts/axis.py:1660 msgid "Feed distance:" msgstr "進給距離:" -#: src/emc/usr_intf/axis/scripts/axis.py:1594 -#: src/emc/usr_intf/axis/scripts/axis.py:1607 +#: src/emc/usr_intf/axis/scripts/axis.py:1660 msgid "Total distance:" msgstr "總距離:" -#: src/emc/usr_intf/axis/scripts/axis.py:1595 -#: src/emc/usr_intf/axis/scripts/axis.py:1608 +#: src/emc/usr_intf/axis/scripts/axis.py:1661 msgid "Run time:" msgstr "運行時間:" -#: src/emc/usr_intf/axis/scripts/axis.py:1595 -#: src/emc/usr_intf/axis/scripts/axis.py:1608 +#: src/emc/usr_intf/axis/scripts/axis.py:1661 msgid "X bounds:" msgstr "X 範圍:" -#: src/emc/usr_intf/axis/scripts/axis.py:1596 -#: src/emc/usr_intf/axis/scripts/axis.py:1609 +#: src/emc/usr_intf/axis/scripts/axis.py:1662 msgid "Y bounds:" msgstr "Y 範圍:" -#: src/emc/usr_intf/axis/scripts/axis.py:1596 -#: src/emc/usr_intf/axis/scripts/axis.py:1609 +#: src/emc/usr_intf/axis/scripts/axis.py:1662 msgid "Z bounds:" msgstr "Z 範圍:" -#: src/emc/usr_intf/axis/scripts/axis.py:1597 -#: src/emc/usr_intf/axis/scripts/axis.py:1610 +#: src/emc/usr_intf/axis/scripts/axis.py:1663 msgid "A bounds:" msgstr "A 範圍:" -#: src/emc/usr_intf/axis/scripts/axis.py:1597 -#: src/emc/usr_intf/axis/scripts/axis.py:1610 +#: src/emc/usr_intf/axis/scripts/axis.py:1663 msgid "B bounds:" msgstr "B 範圍:" -#: src/emc/usr_intf/axis/scripts/axis.py:1598 -#: src/emc/usr_intf/axis/scripts/axis.py:1611 +#: src/emc/usr_intf/axis/scripts/axis.py:1664 msgid "C bounds:" msgstr "C 範圍:" -#: src/emc/usr_intf/axis/scripts/axis.py:1622 -#: src/emc/usr_intf/axis/scripts/axis.py:1635 +#: src/emc/usr_intf/axis/scripts/axis.py:1688 #, python-format msgid "Program exceeds machine minimum on axis %s" msgstr "程序 超出 机床 最低 限度 在 軸 %s" -#: src/emc/usr_intf/axis/scripts/axis.py:1625 -#: src/emc/usr_intf/axis/scripts/axis.py:1638 +#: src/emc/usr_intf/axis/scripts/axis.py:1691 #, python-format msgid "Program exceeds machine maximum on axis %s" msgstr "程序 超出 机床 最高 限度 在 軸 %s" -#: src/emc/usr_intf/axis/scripts/axis.py:1630 -#: src/emc/usr_intf/axis/scripts/axis.py:1643 +#: src/emc/usr_intf/axis/scripts/axis.py:1696 msgid "Program exceeds machine limits" msgstr "程序 超出 机床 極限" -#: src/emc/usr_intf/axis/scripts/axis.py:1633 -#: src/emc/usr_intf/axis/scripts/axis.py:1646 +#: src/emc/usr_intf/axis/scripts/axis.py:1699 msgid "Run Anyway" msgstr "運行 無論如何" -#: src/emc/usr_intf/axis/scripts/axis.py:1695 -#: src/emc/usr_intf/axis/scripts/axis.py:1708 +#: src/emc/usr_intf/axis/scripts/axis.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1581 msgid "No file loaded" msgstr "沒有 文件 加載" -#: src/emc/usr_intf/axis/scripts/axis.py:1703 -#: src/emc/usr_intf/axis/scripts/axis.py:1716 +#: src/emc/usr_intf/axis/scripts/axis.py:1845 #, python-format msgid "generated from %s" msgstr "產生 於 %s" -#: src/emc/usr_intf/axis/scripts/axis.py:1709 -#: src/emc/usr_intf/axis/scripts/axis.py:1722 +#: src/emc/usr_intf/axis/scripts/axis.py:1851 #, python-format msgid "" "%(size)s bytes\n" "%(lines)s gcode lines" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1735 -#: src/emc/usr_intf/axis/scripts/axis.py:1748 +#: src/emc/usr_intf/axis/scripts/axis.py:1877 #, python-format msgid "%.1f minutes" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1737 -#: src/emc/usr_intf/axis/scripts/axis.py:1750 +#: src/emc/usr_intf/axis/scripts/axis.py:1879 #, python-format msgid "%d seconds" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1745 -#: src/emc/usr_intf/axis/scripts/axis.py:1758 +#: src/emc/usr_intf/axis/scripts/axis.py:1887 #, python-format msgid "%(a)f to %(b)f = %(diff)f %(units)s" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1746 -#: src/emc/usr_intf/axis/scripts/axis.py:1759 +#: src/emc/usr_intf/axis/scripts/axis.py:1888 msgid "G-Code Properties" msgstr "G 代碼 性質" -#: src/emc/usr_intf/axis/scripts/axis.py:1870 -#: src/emc/usr_intf/axis/scripts/axis.py:1883 +#: src/emc/usr_intf/axis/scripts/axis.py:2021 msgid "All machinable files" msgstr "所有 可 加工 文件" -#: src/emc/usr_intf/axis/scripts/axis.py:1871 -#: src/emc/usr_intf/axis/scripts/axis.py:2451 -#: src/emc/usr_intf/axis/scripts/axis.py:1884 -#: src/emc/usr_intf/axis/scripts/axis.py:2464 +#: src/emc/usr_intf/axis/scripts/axis.py:2022 +#: src/emc/usr_intf/axis/scripts/axis.py:2659 msgid "rs274ngc files" msgstr "rs274ngc 文件" -#: src/emc/usr_intf/axis/scripts/axis.py:1886 -#: src/emc/usr_intf/axis/scripts/axis.py:1899 +#: src/emc/usr_intf/axis/scripts/axis.py:2037 msgid "axis cannot accept remote command while running" msgstr "軸 不能接受 遠程 指令 在 運行時" -#: src/emc/usr_intf/axis/scripts/axis.py:2242 -#: src/emc/usr_intf/axis/scripts/axis.py:2255 +#: src/emc/usr_intf/axis/scripts/axis.py:2098 +#, fuzzy +msgid "File not Writable:" +msgstr "文件未打開" + +#: src/emc/usr_intf/axis/scripts/axis.py:2099 +msgid "" +"This file is not writable\n" +"You can Edit-readonly\n" +"\n" +"or\n" +"\n" +"Save it to your own directory\n" +"then open that saved, writable file" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2106 +msgid "Edit-readonly" +msgstr "" + +#: src/emc/usr_intf/axis/scripts/axis.py:2440 msgid "Axis is already homed, are you sure you want to re-home?" msgstr "軸 已經 在零,你一定要 重新 再 歸零?" -#: src/emc/usr_intf/axis/scripts/axis.py:2255 -#: src/emc/usr_intf/axis/scripts/axis.py:2268 +#: src/emc/usr_intf/axis/scripts/axis.py:2453 msgid "This axis is already homed, are you sure you want to re-home?" msgstr "這軸 已經 在零,你一定要 重新 再 歸零?" -#: src/emc/usr_intf/axis/scripts/axis.py:2295 share/axis/tcl/axis.tcl:1108 -#: src/emc/usr_intf/axis/scripts/axis.py:2308 +#: src/emc/usr_intf/axis/scripts/axis.py:2493 share/axis/tcl/axis.tcl:1178 msgid "Touch Off" msgstr "對刀" -#: src/emc/usr_intf/axis/scripts/axis.py:2296 -#: src/emc/usr_intf/axis/scripts/axis.py:2309 +#: src/emc/usr_intf/axis/scripts/axis.py:2494 #, python-format msgid "Enter %s coordinate relative to %%s:" msgstr "輸入 %s 坐標相對於 %%s:" -#: src/emc/usr_intf/axis/scripts/axis.py:2463 -#: src/emc/usr_intf/axis/scripts/axis.py:2476 +#: src/emc/usr_intf/axis/scripts/axis.py:2671 msgid "Error saving file" msgstr "保存 文件 時出錯" -#: src/emc/usr_intf/axis/scripts/axis.py:2845 +#: src/emc/usr_intf/axis/scripts/axis.py:3077 #: src/emc/usr_intf/touchy/touchy.glade:577 -#: src/emc/usr_intf/axis/scripts/axis.py:2859 +#: src/emc/usr_intf/gscreen/gscreen.glade:2933 msgid "Home All" msgstr "全部 歸零" -#: src/emc/usr_intf/axis/scripts/axis.py:2847 -#: src/emc/usr_intf/axis/scripts/axis.py:2861 +#: src/emc/usr_intf/axis/scripts/axis.py:3079 msgid "Home all axes [Ctrl-Home]" msgstr "所有軸 歸零 [Ctrl-Home]" -#: src/emc/usr_intf/axis/scripts/axis.py:2850 -#: src/emc/usr_intf/axis/scripts/axis.py:2864 +#: src/emc/usr_intf/axis/scripts/axis.py:3082 msgid "Home All Axes" msgstr "所有軸 歸零" -#: src/emc/usr_intf/axis/scripts/axis.py:2855 -#: src/emc/usr_intf/axis/scripts/axis.py:2871 +#: src/emc/usr_intf/axis/scripts/axis.py:3089 msgid "Unhome All Axes" msgstr "所有軸 離零" -#: src/emc/usr_intf/axis/scripts/axis.py:2879 -#: src/emc/usr_intf/axis/scripts/axis.py:2895 +#: src/emc/usr_intf/axis/scripts/axis.py:3113 #, python-format msgid "Home Axis _%s" msgstr "歸零 軸 _%s" -#: src/emc/usr_intf/axis/scripts/axis.py:2881 -#: src/emc/usr_intf/axis/scripts/axis.py:2897 +#: src/emc/usr_intf/axis/scripts/axis.py:3115 #, python-format msgid "Unhome Axis _%s" msgstr "離零 軸 _%s" -#: src/emc/usr_intf/axis/scripts/axis.py:3024 -#: src/emc/usr_intf/axis/scripts/axis.py:3040 +#: src/emc/usr_intf/axis/scripts/axis.py:3282 msgid "Run from here" msgstr "從 這裡 運行" -#: src/emc/usr_intf/axis/scripts/axis.py:3319 -#: src/emc/usr_intf/axis/scripts/axis.py:3335 +#: src/emc/usr_intf/axis/scripts/axis.py:3598 msgid "Error in ~/.axisrc" msgstr "錯誤 joi ~/.axisrc" #: src/emc/usr_intf/axis/scripts/linuxcnctop.py:102 #, fuzzy -msgid "LinuxCNC Status" -msgstr "EMC 狀態" +msgid "Machinekit Status" +msgstr "機器 單元:" #: src/emc/usr_intf/axis/scripts/linuxcnctop.py:118 msgid "Copy All" msgstr "全部 複製" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:29 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 #, python-format msgid "Insert tool %d and click continue when ready" msgstr "插入 刀具 %d 準備 好後 點擊 繼續" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:31 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:39 msgid "Remove the tool and click continue when ready" msgstr "移除 刀具 準備 好後 點擊 繼續" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 -#: src/emc/usr_intf/touchy/mdi.py:49 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 +#: src/emc/usr_intf/touchy/mdi.py:49 src/emc/usr_intf/gscreen/mdi.py:49 msgid "Tool change" msgstr "換刀" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 msgid "Continue" msgstr "繼續" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:55 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:64 msgid "AXIS Manual Toolchanger" msgstr "AXIS 手動 換刀" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:59 +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:68 msgid "" "This window is part of the AXIS manual toolchanger. It is safe to close or " "iconify this window, or it will close automatically after a few seconds." @@ -4328,8 +6179,8 @@ msgstr "深度 圖像" #: src/emc/usr_intf/axis/scripts/debuglevel.py:22 #, fuzzy -msgid "LinuxCNC Debug Level" -msgstr "EMC2 偵錯層級" +msgid "Machinekit Debug Level" +msgstr "設置偵錯層級(_D)" #: src/emc/usr_intf/axis/scripts/debuglevel.py:23 msgid "debuglevel" @@ -4376,764 +6227,841 @@ msgstr "" msgid " * This option can only be enabled in the inifile" msgstr " *這個 選項 只能在 ini 文件 啟用" -#: share/axis/tcl/axis.tcl:49 +#: share/axis/tcl/axis.tcl:52 msgid "_Open..." msgstr "打開(_O)" -#: share/axis/tcl/axis.tcl:53 +#: share/axis/tcl/axis.tcl:56 msgid "Recent _Files" msgstr "最近打開的文件(_F)" -#: share/axis/tcl/axis.tcl:57 +#: share/axis/tcl/axis.tcl:60 msgid "_Edit..." msgstr "編輯(_E)..." -#: share/axis/tcl/axis.tcl:60 +#: share/axis/tcl/axis.tcl:63 msgid "Ctrl-R" msgstr "" -#: share/axis/tcl/axis.tcl:62 +#: share/axis/tcl/axis.tcl:65 msgid "_Reload" msgstr "重新載入(_R)" -#: share/axis/tcl/axis.tcl:65 +#: share/axis/tcl/axis.tcl:68 msgid "Ctrl-S" msgstr "" -#: share/axis/tcl/axis.tcl:67 +#: share/axis/tcl/axis.tcl:70 msgid "_Save gcode as..." msgstr "保存G代碼為(_S)..." -#: share/axis/tcl/axis.tcl:71 +#: share/axis/tcl/axis.tcl:74 msgid "_Properties..." msgstr "屬性(_P)......" -#: share/axis/tcl/axis.tcl:77 +#: share/axis/tcl/axis.tcl:80 msgid "Edit _tool table..." msgstr "編輯刀具表(_t)...." -#: share/axis/tcl/axis.tcl:81 +#: share/axis/tcl/axis.tcl:84 msgid "Reload tool ta_ble" msgstr "重新載入刀具表(_b)" -#: share/axis/tcl/axis.tcl:87 +#: share/axis/tcl/axis.tcl:90 msgid "_Ladder Editor..." msgstr "梯形圖編輯器(_L)...." -#: share/axis/tcl/axis.tcl:99 +#: share/axis/tcl/axis.tcl:102 msgid "Toggle _Emergency Stop" msgstr "切換緊急停止(_E).." -#: share/axis/tcl/axis.tcl:104 +#: share/axis/tcl/axis.tcl:107 msgid "Toggle _Machine Power" msgstr "切換設備電源(_M).." -#: share/axis/tcl/axis.tcl:111 +#: share/axis/tcl/axis.tcl:114 msgid "_Run program" msgstr "運行程序(_R)" -#: share/axis/tcl/axis.tcl:115 +#: share/axis/tcl/axis.tcl:118 msgid "Ru_n from selected line" msgstr "運行選定的行(_n)" -#: share/axis/tcl/axis.tcl:120 +#: share/axis/tcl/axis.tcl:123 msgid "S_tep" msgstr "步伐(_t)" -#: share/axis/tcl/axis.tcl:125 +#: share/axis/tcl/axis.tcl:128 msgid "_Pause" msgstr "暫停(_P)" -#: share/axis/tcl/axis.tcl:130 +#: share/axis/tcl/axis.tcl:133 msgid "Re_sume" msgstr "恢復(_s)" -#: share/axis/tcl/axis.tcl:140 +#: share/axis/tcl/axis.tcl:143 msgid "Stop at M_1" msgstr "停止在 M_1" -#: share/axis/tcl/axis.tcl:145 +#: share/axis/tcl/axis.tcl:148 msgid "Skip lines with '_/'" msgstr "略過 行 以 '_/'" -#: share/axis/tcl/axis.tcl:150 +#: share/axis/tcl/axis.tcl:153 msgid "Ctrl-M" msgstr "" -#: share/axis/tcl/axis.tcl:152 +#: share/axis/tcl/axis.tcl:155 msgid "Clear MDI h_istory" msgstr "清除 MDI 歷史(_i)" -#: share/axis/tcl/axis.tcl:154 +#: share/axis/tcl/axis.tcl:157 msgid "Ctrl-H" msgstr "" -#: share/axis/tcl/axis.tcl:156 +#: share/axis/tcl/axis.tcl:159 msgid "Copy from MDI hist_ory" msgstr "從 MDI 歷史複製(_o)" -#: share/axis/tcl/axis.tcl:158 +#: share/axis/tcl/axis.tcl:161 msgid "Ctrl-Shift-H" msgstr "" -#: share/axis/tcl/axis.tcl:160 +#: share/axis/tcl/axis.tcl:163 msgid "Paste to MDI histor_y" msgstr "粘貼到MDI歷史(_y)" -#: share/axis/tcl/axis.tcl:166 +#: share/axis/tcl/axis.tcl:169 msgid "_Calibration" msgstr "校準(_C)" -#: share/axis/tcl/axis.tcl:170 +#: share/axis/tcl/axis.tcl:173 msgid "Show _Hal Configuration" msgstr "顯示 HA L配置" -#: share/axis/tcl/axis.tcl:174 +#: share/axis/tcl/axis.tcl:177 msgid "H_al Meter" msgstr "HAL 儀表(_a)" -#: share/axis/tcl/axis.tcl:178 +#: share/axis/tcl/axis.tcl:181 msgid "Ha_l Scope" msgstr "HAL 示波器(_l)" -#: share/axis/tcl/axis.tcl:182 +#: share/axis/tcl/axis.tcl:185 #, fuzzy -msgid "Sho_w LinuxCNC Status" +msgid "Sho_w Machinekit Status" msgstr "顯示 EMC 現狀(_w)" -#: share/axis/tcl/axis.tcl:186 +#: share/axis/tcl/axis.tcl:189 msgid "Set _Debug Level" msgstr "設置偵錯層級(_D)" -#: share/axis/tcl/axis.tcl:192 +#: share/axis/tcl/axis.tcl:195 msgid "Homin_g" msgstr "歸零(_g)" -#: share/axis/tcl/axis.tcl:196 +#: share/axis/tcl/axis.tcl:199 msgid "_Unhoming" msgstr "離零(_U)" -#: share/axis/tcl/axis.tcl:200 +#: share/axis/tcl/axis.tcl:203 msgid "_Zero coordinate system" msgstr "坐標系統為零(_Z)" -#: share/axis/tcl/axis.tcl:204 +#: share/axis/tcl/axis.tcl:207 msgid "P1 G5_4" msgstr "" -#: share/axis/tcl/axis.tcl:208 +#: share/axis/tcl/axis.tcl:211 msgid "P2 G5_5" msgstr "" -#: share/axis/tcl/axis.tcl:212 +#: share/axis/tcl/axis.tcl:215 msgid "P3 G5_6" msgstr "" -#: share/axis/tcl/axis.tcl:216 +#: share/axis/tcl/axis.tcl:219 msgid "P4 G5_7" msgstr "" -#: share/axis/tcl/axis.tcl:220 +#: share/axis/tcl/axis.tcl:223 msgid "P5 G5_8" msgstr "" -#: share/axis/tcl/axis.tcl:224 +#: share/axis/tcl/axis.tcl:227 msgid "P6 G5_9" msgstr "" -#: share/axis/tcl/axis.tcl:228 +#: share/axis/tcl/axis.tcl:231 msgid "P7 G59._1" msgstr "" -#: share/axis/tcl/axis.tcl:232 +#: share/axis/tcl/axis.tcl:235 msgid "P8 G59._2" msgstr "" -#: share/axis/tcl/axis.tcl:236 +#: share/axis/tcl/axis.tcl:239 msgid "P9 G59._3" msgstr "" -#: share/axis/tcl/axis.tcl:240 +#: share/axis/tcl/axis.tcl:243 msgid "_G92" msgstr "" -#: share/axis/tcl/axis.tcl:248 +#: share/axis/tcl/axis.tcl:251 msgid "Tool touch off to wor_kpiece" msgstr "刀具 對 工件 對刀(_k)" -#: share/axis/tcl/axis.tcl:254 +#: share/axis/tcl/axis.tcl:257 msgid "Tool touch off to _fixture" msgstr "刀具 對 夾具 對刀(_f)" -#: share/axis/tcl/axis.tcl:262 +#: share/axis/tcl/axis.tcl:265 msgid "_Top view" msgstr "頂 視圖(_T)" -#: share/axis/tcl/axis.tcl:269 +#: share/axis/tcl/axis.tcl:272 msgid "_Rotated Top view" msgstr "旋轉的 頂 視圖(_R)" -#: share/axis/tcl/axis.tcl:276 +#: share/axis/tcl/axis.tcl:279 msgid "_Side view" msgstr "側面 視圖(_S)" -#: share/axis/tcl/axis.tcl:283 +#: share/axis/tcl/axis.tcl:286 msgid "_Front view" msgstr "正面 視圖(_F)" -#: share/axis/tcl/axis.tcl:290 +#: share/axis/tcl/axis.tcl:293 msgid "_Perspective view" msgstr "透視 視圖(_P)" -#: share/axis/tcl/axis.tcl:299 +#: share/axis/tcl/axis.tcl:302 msgid "Display _Inches" msgstr "顯示英寸(_I)" -#: share/axis/tcl/axis.tcl:306 +#: share/axis/tcl/axis.tcl:309 msgid "Display _MM" msgstr "顯示 MM(_M)" -#: share/axis/tcl/axis.tcl:313 +#: share/axis/tcl/axis.tcl:316 msgid "S_how program" msgstr "顯示程序(_h)" -#: share/axis/tcl/axis.tcl:318 +#: share/axis/tcl/axis.tcl:321 msgid "Show program r_apids" msgstr "顯示程序快速(_a)" -#: share/axis/tcl/axis.tcl:323 +#: share/axis/tcl/axis.tcl:326 msgid "Alpha-_blend program" msgstr "Alpha融合程序(_b)" -#: share/axis/tcl/axis.tcl:328 +#: share/axis/tcl/axis.tcl:331 msgid "Sho_w live plot" msgstr "顯示 現場 繪圖(_w)" -#: share/axis/tcl/axis.tcl:333 +#: share/axis/tcl/axis.tcl:336 msgid "Show too_l" msgstr "顯示 刀具(_l)" -#: share/axis/tcl/axis.tcl:338 +#: share/axis/tcl/axis.tcl:341 msgid "Show e_xtents" msgstr "顯示 擴展(_x)" -#: share/axis/tcl/axis.tcl:343 +#: share/axis/tcl/axis.tcl:345 +msgid "_Grid" +msgstr "" + +#: share/axis/tcl/axis.tcl:350 msgid "Show o_ffsets" msgstr "顯示 偏移量(_f)" -#: share/axis/tcl/axis.tcl:348 +#: share/axis/tcl/axis.tcl:355 msgid "Sh_ow machine limits" msgstr "顯示 機器 極限(_o)" -#: share/axis/tcl/axis.tcl:353 +#: share/axis/tcl/axis.tcl:360 msgid "Show v_elocity" msgstr "顯示 速率(_e)" -#: share/axis/tcl/axis.tcl:358 +#: share/axis/tcl/axis.tcl:365 msgid "Show _distance to go" msgstr "顯示 往前 距離(_d)" -#: share/axis/tcl/axis.tcl:363 +#: share/axis/tcl/axis.tcl:370 msgid "Large coordinate fo_nt" msgstr "大坐標的字體(_n)" -#: share/axis/tcl/axis.tcl:366 +#: share/axis/tcl/axis.tcl:373 msgid "Ctrl-K" msgstr "" -#: share/axis/tcl/axis.tcl:368 +#: share/axis/tcl/axis.tcl:375 msgid "_Clear live plot" msgstr "清除 現場 繪圖(_C)" -#: share/axis/tcl/axis.tcl:377 +#: share/axis/tcl/axis.tcl:384 msgid "Show commanded position" msgstr "顯示 命令的 位置" -#: share/axis/tcl/axis.tcl:384 +#: share/axis/tcl/axis.tcl:391 msgid "Show actual position" msgstr "顯示 實際 位置" -#: share/axis/tcl/axis.tcl:393 +#: share/axis/tcl/axis.tcl:400 msgid "Show machine position" msgstr "顯示 機床 位置" -#: share/axis/tcl/axis.tcl:400 +#: share/axis/tcl/axis.tcl:407 msgid "Show relative position" msgstr "顯示 相對 位置" -#: share/axis/tcl/axis.tcl:409 +#: share/axis/tcl/axis.tcl:416 msgid "Joint mode" msgstr "Joint 模式" -#: share/axis/tcl/axis.tcl:416 +#: share/axis/tcl/axis.tcl:423 msgid "World mode" msgstr "World 模式" -#: share/axis/tcl/axis.tcl:425 +#: share/axis/tcl/axis.tcl:431 +msgid "_Off" +msgstr "" + +#: share/axis/tcl/axis.tcl:437 +#, fuzzy +msgid "_Custom" +msgstr "自訂" + +#: share/axis/tcl/axis.tcl:443 +msgid "User_0" +msgstr "" + +#: share/axis/tcl/axis.tcl:447 +msgid "User_1" +msgstr "" + +#: share/axis/tcl/axis.tcl:451 +msgid "User_2" +msgstr "" + +#: share/axis/tcl/axis.tcl:455 +msgid "User_3" +msgstr "" + +#: share/axis/tcl/axis.tcl:459 +msgid "User_4" +msgstr "" + +#: share/axis/tcl/axis.tcl:463 +msgid "User_5" +msgstr "" + +#: share/axis/tcl/axis.tcl:467 +msgid "User_6" +msgstr "" + +#: share/axis/tcl/axis.tcl:471 +msgid "User_7" +msgstr "" + +#: share/axis/tcl/axis.tcl:475 +msgid "User_8" +msgstr "" + +#: share/axis/tcl/axis.tcl:479 +msgid "User_9" +msgstr "" + +#: share/axis/tcl/axis.tcl:491 msgid "_About AXIS" msgstr "About AXIS(_A)" -#: share/axis/tcl/axis.tcl:429 +#: share/axis/tcl/axis.tcl:495 msgid "Quick _Reference" msgstr "快速 參考手冊(_R)" -#: share/axis/tcl/axis.tcl:439 +#: share/axis/tcl/axis.tcl:505 msgid "_Machine" msgstr "機器(_M)" -#: share/axis/tcl/axis.tcl:443 +#: share/axis/tcl/axis.tcl:509 msgid "_View" msgstr "視圖(_V)" -#: share/axis/tcl/axis.tcl:456 +#: share/axis/tcl/axis.tcl:513 +msgid "_User" +msgstr "" + +#: share/axis/tcl/axis.tcl:526 msgid "Toggle Emergency Stop [F1]" msgstr "切換緊急停止 [F1]" -#: share/axis/tcl/axis.tcl:465 +#: share/axis/tcl/axis.tcl:535 msgid "Toggle Machine power [F2]" msgstr "切換設備電源 [F2]" -#: share/axis/tcl/axis.tcl:476 +#: share/axis/tcl/axis.tcl:546 msgid "Open G-Code file [O]" msgstr "打開 G-代碼 文件 [O]" -#: share/axis/tcl/axis.tcl:484 +#: share/axis/tcl/axis.tcl:554 msgid "Reopen current file [Control-R]" msgstr "重新打開 當前 文件 [Control-R]" -#: share/axis/tcl/axis.tcl:494 +#: share/axis/tcl/axis.tcl:564 msgid "Begin executing current file [R]" msgstr "開始 執行 前的檔案 [R]" -#: share/axis/tcl/axis.tcl:502 +#: share/axis/tcl/axis.tcl:572 msgid "Execute next line [T]" msgstr "執行 下一行 [T]" -#: share/axis/tcl/axis.tcl:510 +#: share/axis/tcl/axis.tcl:580 msgid "Pause [P] / resume [S] execution" msgstr "暫停 [P] / 恢復 [S] 執行" -#: share/axis/tcl/axis.tcl:518 +#: share/axis/tcl/axis.tcl:588 msgid "Stop program execution [ESC]" msgstr "停止 程序 執行 [ESC]" -#: share/axis/tcl/axis.tcl:528 +#: share/axis/tcl/axis.tcl:598 msgid "Toggle skip lines with '/' [Alt-M /]" msgstr "切換 跳 行 用 '/' [Alt-M /]" -#: share/axis/tcl/axis.tcl:535 +#: share/axis/tcl/axis.tcl:605 msgid "Toggle optional pause [Alt-M 1]" msgstr "切換 任擇 停頓 [Alt-M 1]" -#: share/axis/tcl/axis.tcl:544 +#: share/axis/tcl/axis.tcl:614 src/emc/usr_intf/gmoccapy/gmoccapy.glade:549 msgid "Zoom in" msgstr "放大" -#: share/axis/tcl/axis.tcl:552 +#: share/axis/tcl/axis.tcl:622 src/emc/usr_intf/gmoccapy/gmoccapy.glade:567 msgid "Zoom out" msgstr "縮小" -#: share/axis/tcl/axis.tcl:560 +#: share/axis/tcl/axis.tcl:630 msgid "Top view" msgstr "頂 視圖" -#: share/axis/tcl/axis.tcl:568 +#: share/axis/tcl/axis.tcl:638 msgid "Rotated top view" msgstr "旋轉的 頂 視圖" -#: share/axis/tcl/axis.tcl:576 +#: share/axis/tcl/axis.tcl:646 msgid "Side view" msgstr "側面 視圖" -#: share/axis/tcl/axis.tcl:584 +#: share/axis/tcl/axis.tcl:654 msgid "Front view" msgstr "正面 視圖" -#: share/axis/tcl/axis.tcl:592 +#: share/axis/tcl/axis.tcl:662 msgid "Perspective view" msgstr "透視 視圖" -#: share/axis/tcl/axis.tcl:600 +#: share/axis/tcl/axis.tcl:670 msgid "Toggle between Drag and Rotate Mode [D]" msgstr "切換 拖動 和 旋轉模式 之間 [D]" -#: share/axis/tcl/axis.tcl:615 +#: share/axis/tcl/axis.tcl:685 msgid "Clear live plot [Ctrl-K]" msgstr "清徐 在跑的 繪圖 [Ctrl-K]" -#: share/axis/tcl/axis.tcl:766 +#: share/axis/tcl/axis.tcl:836 msgid "Manual Control [F3]" msgstr "手動 控制 [F3]" -#: share/axis/tcl/axis.tcl:767 +#: share/axis/tcl/axis.tcl:837 msgid "MDI [F5]" msgstr "" -#: share/axis/tcl/axis.tcl:781 share/axis/tcl/axis.tcl:2036 -#: share/axis/tcl/axis.tcl:2203 +#: share/axis/tcl/axis.tcl:851 share/axis/tcl/axis.tcl:2158 +#: share/axis/tcl/axis.tcl:2328 msgid "Axis:" msgstr "軸:" -#: share/axis/tcl/axis.tcl:1102 +#: share/axis/tcl/axis.tcl:1172 src/emc/usr_intf/gscreen/gscreen.glade:2944 msgid "Home Axis" msgstr "軸回零" -#: share/axis/tcl/axis.tcl:1176 +#: share/axis/tcl/axis.tcl:1246 msgid "Spindle:" msgstr "主軸" -#: share/axis/tcl/axis.tcl:1223 src/emc/usr_intf/touchy/touchy.glade:946 +#: share/axis/tcl/axis.tcl:1293 src/emc/usr_intf/touchy/touchy.glade:946 +#: src/emc/usr_intf/stepconf/main_page.glade:406 +#: src/emc/usr_intf/gscreen/gscreen.glade:4067 msgid "-" msgstr "" -#: share/axis/tcl/axis.tcl:1237 +#: share/axis/tcl/axis.tcl:1307 src/emc/usr_intf/stepconf/main_page.glade:403 +#: src/emc/usr_intf/gscreen/gscreen.glade:4056 msgid "+" msgstr "" -#: share/axis/tcl/axis.tcl:1242 +#: share/axis/tcl/axis.tcl:1312 msgid "Brake" msgstr "剎車" -#: share/axis/tcl/axis.tcl:1289 +#: share/axis/tcl/axis.tcl:1359 msgid "Coolant:" msgstr "冷卻液:" -#: share/axis/tcl/axis.tcl:1294 +#: share/axis/tcl/axis.tcl:1364 msgid "Mist" msgstr "霧噴" -#: share/axis/tcl/axis.tcl:1299 +#: share/axis/tcl/axis.tcl:1369 msgid "Flood" msgstr "淹浸" -#: share/axis/tcl/axis.tcl:1371 +#: share/axis/tcl/axis.tcl:1441 msgid "History:" msgstr "歷史:" -#: share/axis/tcl/axis.tcl:1394 +#: share/axis/tcl/axis.tcl:1464 msgid "MDI Command:" msgstr "MDI 指令:" -#: share/axis/tcl/axis.tcl:1403 +#: share/axis/tcl/axis.tcl:1473 msgid "Go" msgstr "前往" -#: share/axis/tcl/axis.tcl:1409 +#: share/axis/tcl/axis.tcl:1479 msgid "Active G-Codes:" msgstr "主動 G-代碼:" -#: share/axis/tcl/axis.tcl:1487 +#: share/axis/tcl/axis.tcl:1557 src/emc/usr_intf/gmoccapy/gmoccapy.glade:771 msgid "Preview" msgstr "預演" -#: share/axis/tcl/axis.tcl:1488 +#: share/axis/tcl/axis.tcl:1558 msgid "DRO" msgstr "" -#: share/axis/tcl/axis.tcl:1575 share/axis/tcl/axis.tcl:1588 +#: share/axis/tcl/axis.tcl:1645 share/axis/tcl/axis.tcl:1658 msgid "Jog Speed:" msgstr "慢步速率:" -#: share/axis/tcl/axis.tcl:1600 +#: share/axis/tcl/axis.tcl:1670 msgid "Max Velocity:" msgstr "最大速率:" -#: share/axis/tcl/axis.tcl:1629 +#: share/axis/tcl/axis.tcl:1699 msgid "Spindle Override:" msgstr "設定主軸超速:" -#: share/axis/tcl/axis.tcl:1631 share/axis/tcl/axis.tcl:1671 -#: src/emc/usr_intf/pncconf/pncconf.glade:3141 -#: src/emc/usr_intf/pncconf/pncconf.glade:3154 -#: src/emc/usr_intf/pncconf/pncconf.glade:3167 -#: src/emc/usr_intf/pncconf/pncconf.glade:3180 -#: src/emc/usr_intf/pncconf/pncconf.glade:3193 -#: src/emc/usr_intf/pncconf/pncconf.glade:3206 -#: src/emc/usr_intf/pncconf/pncconf.glade:3219 -#: src/emc/usr_intf/pncconf/pncconf.glade:3232 -#: src/emc/usr_intf/pncconf/pncconf.glade:3345 -#: src/emc/usr_intf/pncconf/pncconf.glade:3358 -#: src/emc/usr_intf/pncconf/pncconf.glade:3371 -#: src/emc/usr_intf/pncconf/pncconf.glade:3384 -#: src/emc/usr_intf/pncconf/pncconf.glade:3397 -#: src/emc/usr_intf/pncconf/pncconf.glade:3410 -#: src/emc/usr_intf/pncconf/pncconf.glade:3516 -#: src/emc/usr_intf/pncconf/pncconf.glade:3527 -#: src/emc/usr_intf/pncconf/pncconf.glade:4022 -#: src/emc/usr_intf/pncconf/pncconf.glade:4035 -#: src/emc/usr_intf/pncconf/pncconf.glade:4048 -#: src/emc/usr_intf/pncconf/pncconf.glade:4061 -#: src/emc/usr_intf/pncconf/pncconf.glade:4074 -#: src/emc/usr_intf/pncconf/pncconf.glade:4087 -#: src/emc/usr_intf/pncconf/pncconf.glade:4100 -#: src/emc/usr_intf/pncconf/pncconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:4226 -#: src/emc/usr_intf/pncconf/pncconf.glade:4239 -#: src/emc/usr_intf/pncconf/pncconf.glade:4252 -#: src/emc/usr_intf/pncconf/pncconf.glade:4265 -#: src/emc/usr_intf/pncconf/pncconf.glade:4278 -#: src/emc/usr_intf/pncconf/pncconf.glade:4291 -#: src/emc/usr_intf/pncconf/pncconf.glade:4397 -#: src/emc/usr_intf/pncconf/pncconf.glade:4408 -#: src/emc/usr_intf/pncconf/pncconf.glade:4903 -#: src/emc/usr_intf/pncconf/pncconf.glade:4916 -#: src/emc/usr_intf/pncconf/pncconf.glade:4929 -#: src/emc/usr_intf/pncconf/pncconf.glade:4942 -#: src/emc/usr_intf/pncconf/pncconf.glade:4955 -#: src/emc/usr_intf/pncconf/pncconf.glade:4968 -#: src/emc/usr_intf/pncconf/pncconf.glade:4981 -#: src/emc/usr_intf/pncconf/pncconf.glade:4994 -#: src/emc/usr_intf/pncconf/pncconf.glade:5107 -#: src/emc/usr_intf/pncconf/pncconf.glade:5120 -#: src/emc/usr_intf/pncconf/pncconf.glade:5133 -#: src/emc/usr_intf/pncconf/pncconf.glade:5146 -#: src/emc/usr_intf/pncconf/pncconf.glade:5159 -#: src/emc/usr_intf/pncconf/pncconf.glade:5172 -#: src/emc/usr_intf/pncconf/pncconf.glade:5278 -#: src/emc/usr_intf/pncconf/pncconf.glade:5289 -#: src/emc/usr_intf/pncconf/pncconf.glade:5582 +#: share/axis/tcl/axis.tcl:1701 share/axis/tcl/axis.tcl:1741 +#: share/axis/tcl/axis.tcl:1779 src/emc/usr_intf/pncconf/pncconf.glade:2834 +#: src/emc/usr_intf/pncconf/pncconf.glade:2845 +#: src/emc/usr_intf/pncconf/pncconf.glade:2949 +#: src/emc/usr_intf/pncconf/pncconf.glade:2962 +#: src/emc/usr_intf/pncconf/pncconf.glade:2975 +#: src/emc/usr_intf/pncconf/pncconf.glade:2988 +#: src/emc/usr_intf/pncconf/pncconf.glade:3001 +#: src/emc/usr_intf/pncconf/pncconf.glade:3014 +#: src/emc/usr_intf/pncconf/pncconf.glade:3127 +#: src/emc/usr_intf/pncconf/pncconf.glade:3140 +#: src/emc/usr_intf/pncconf/pncconf.glade:3153 +#: src/emc/usr_intf/pncconf/pncconf.glade:3166 +#: src/emc/usr_intf/pncconf/pncconf.glade:3179 +#: src/emc/usr_intf/pncconf/pncconf.glade:3192 +#: src/emc/usr_intf/pncconf/pncconf.glade:3205 +#: src/emc/usr_intf/pncconf/pncconf.glade:3218 +#: src/emc/usr_intf/pncconf/pncconf.glade:3715 +#: src/emc/usr_intf/pncconf/pncconf.glade:3726 +#: src/emc/usr_intf/pncconf/pncconf.glade:3830 +#: src/emc/usr_intf/pncconf/pncconf.glade:3843 +#: src/emc/usr_intf/pncconf/pncconf.glade:3856 +#: src/emc/usr_intf/pncconf/pncconf.glade:3869 +#: src/emc/usr_intf/pncconf/pncconf.glade:3882 +#: src/emc/usr_intf/pncconf/pncconf.glade:3895 +#: src/emc/usr_intf/pncconf/pncconf.glade:4008 +#: src/emc/usr_intf/pncconf/pncconf.glade:4021 +#: src/emc/usr_intf/pncconf/pncconf.glade:4034 +#: src/emc/usr_intf/pncconf/pncconf.glade:4047 +#: src/emc/usr_intf/pncconf/pncconf.glade:4060 +#: src/emc/usr_intf/pncconf/pncconf.glade:4073 +#: src/emc/usr_intf/pncconf/pncconf.glade:4086 +#: src/emc/usr_intf/pncconf/pncconf.glade:4099 +#: src/emc/usr_intf/pncconf/pncconf.glade:4596 +#: src/emc/usr_intf/pncconf/pncconf.glade:4607 +#: src/emc/usr_intf/pncconf/pncconf.glade:4711 +#: src/emc/usr_intf/pncconf/pncconf.glade:4724 +#: src/emc/usr_intf/pncconf/pncconf.glade:4737 +#: src/emc/usr_intf/pncconf/pncconf.glade:4750 +#: src/emc/usr_intf/pncconf/pncconf.glade:4763 +#: src/emc/usr_intf/pncconf/pncconf.glade:4776 +#: src/emc/usr_intf/pncconf/pncconf.glade:4889 +#: src/emc/usr_intf/pncconf/pncconf.glade:4902 +#: src/emc/usr_intf/pncconf/pncconf.glade:4915 +#: src/emc/usr_intf/pncconf/pncconf.glade:4928 +#: src/emc/usr_intf/pncconf/pncconf.glade:4941 +#: src/emc/usr_intf/pncconf/pncconf.glade:4954 +#: src/emc/usr_intf/pncconf/pncconf.glade:4967 +#: src/emc/usr_intf/pncconf/pncconf.glade:4980 #: src/emc/usr_intf/pncconf/pncconf.glade:5631 -#: src/emc/usr_intf/pncconf/pncconf.glade:5641 +#: src/emc/usr_intf/pncconf/pncconf.glade:5643 +#: src/emc/usr_intf/pncconf/pncconf.glade:5690 msgid "%" msgstr "" -#: share/axis/tcl/axis.tcl:1711 +#: share/axis/tcl/axis.tcl:1777 +#, fuzzy +msgid "Rapid Override:" +msgstr "設定主軸超速:" + +#: share/axis/tcl/axis.tcl:1819 msgid "" -"LinuxCNC/AXIS version $version\n" +"Machinekit/AXIS version $version\n" "\n" "Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff " "Epler and Chris Radek.\n" "\n" "This is free software, and you are welcome to redistribute it under certain " -"conditions. See the file COPYING, included with LinuxCNC.\n" +"conditions. See the file COPYING, included with Machinekit.\n" "\n" -"Visit the LinuxCNC web site: " +"Visit the Machinekit web site: " msgstr "" -#: share/axis/tcl/axis.tcl:1739 +#: share/axis/tcl/axis.tcl:1847 msgid "About AXIS" msgstr "關於 AXIS" -#: share/axis/tcl/axis.tcl:1768 +#: share/axis/tcl/axis.tcl:1876 msgid "AXIS Quick Reference" msgstr "AXIS快速參考" -#: share/axis/tcl/axis.tcl:1903 -msgid "AXIS $::version on $::machine" +#: share/axis/tcl/axis.tcl:2017 +msgid "AXIS with MachineKit $::version on $::machine" msgstr "" -#: share/axis/tcl/axis.tcl:1905 +#: share/axis/tcl/axis.tcl:2019 msgid "(no file)" msgstr "(無文件)" -#: share/axis/tcl/axis.tcl:1976 share/axis/tcl/axis.tcl:1981 +#: share/axis/tcl/axis.tcl:2091 share/axis/tcl/axis.tcl:2096 msgid "Position:" msgstr "位置:" -#: share/axis/tcl/axis.tcl:1978 +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/gscreen/gscreen.py:3516 msgid "Machine" msgstr "" -#: share/axis/tcl/axis.tcl:1978 src/emc/usr_intf/touchy/touchy.glade:155 +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/touchy/touchy.glade:155 msgid "Relative" msgstr "相對" -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3329 +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3329 msgid "Actual" msgstr "實際" -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3318 +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3318 msgid "Commanded" msgstr "指揮" -#: share/axis/tcl/axis.tcl:2032 share/axis/tcl/axis.tcl:2203 +#: share/axis/tcl/axis.tcl:2154 share/axis/tcl/axis.tcl:2328 msgid "Joint:" msgstr "" -#: share/axis/tcl/axis.tcl:2338 +#: share/axis/tcl/axis.tcl:2463 msgid "Turn spindle counterclockwise [F10]" msgstr "" -#: share/axis/tcl/axis.tcl:2339 +#: share/axis/tcl/axis.tcl:2464 msgid "Turn spindle clockwise [F9]" msgstr "" -#: share/axis/tcl/axis.tcl:2340 +#: share/axis/tcl/axis.tcl:2465 msgid "Stop spindle [F9/F10]" msgstr "" -#: share/axis/tcl/axis.tcl:2341 +#: share/axis/tcl/axis.tcl:2466 msgid "Turn spindle Faster [F12]" msgstr "" -#: share/axis/tcl/axis.tcl:2342 +#: share/axis/tcl/axis.tcl:2467 msgid "Turn spindle Slower [F11]" msgstr "" -#: share/axis/tcl/axis.tcl:2343 +#: share/axis/tcl/axis.tcl:2468 msgid "Turn spindle brake on [Shift-B] or off [B]" msgstr "" -#: share/axis/tcl/axis.tcl:2344 +#: share/axis/tcl/axis.tcl:2469 msgid "Turn flood on or off [F8]" msgstr "開啟 或 關閉 浸淹 [F8]" -#: share/axis/tcl/axis.tcl:2345 +#: share/axis/tcl/axis.tcl:2470 msgid "Turn mist on or off [F7]" msgstr "開啟 或 關閉 霧噴 [F7]" -#: share/axis/tcl/axis.tcl:2346 +#: share/axis/tcl/axis.tcl:2471 msgid "Send active axis home [Home]" msgstr "送 活躍 軸 歸零 [Home]" -#: share/axis/tcl/axis.tcl:2347 +#: share/axis/tcl/axis.tcl:2472 msgid "Set G54 offset for active axis [End]" msgstr "設定 G54 偏移 給 活動軸 [End]" -#: share/axis/tcl/axis.tcl:2348 +#: share/axis/tcl/axis.tcl:2473 msgid "Activate axis [X]" msgstr "激活軸 [X]" -#: share/axis/tcl/axis.tcl:2349 +#: share/axis/tcl/axis.tcl:2474 msgid "Activate axis [Y]" msgstr "激活軸 [Y]" -#: share/axis/tcl/axis.tcl:2350 +#: share/axis/tcl/axis.tcl:2475 msgid "Activate axis [Z]" msgstr "激活軸 [Z]" -#: share/axis/tcl/axis.tcl:2351 +#: share/axis/tcl/axis.tcl:2476 msgid "Activate axis [A]" msgstr "激活軸 [A]" -#: share/axis/tcl/axis.tcl:2352 +#: share/axis/tcl/axis.tcl:2477 msgid "Activate axis [4]" msgstr "激活軸 [4]" -#: share/axis/tcl/axis.tcl:2353 +#: share/axis/tcl/axis.tcl:2478 msgid "Activate axis [5]" msgstr "激活軸 [5]" -#: share/axis/tcl/axis.tcl:2354 share/axis/tcl/axis.tcl:2355 +#: share/axis/tcl/axis.tcl:2479 share/axis/tcl/axis.tcl:2480 msgid "Jog selected axis" msgstr "慢步 選定 的軸" -#: share/axis/tcl/axis.tcl:2357 +#: share/axis/tcl/axis.tcl:2482 msgid "Temporarily allow jogging outside machine limits [L]" msgstr "暫時 讓 機器 在 極限外 慢步 [L]" -#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 +#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:47 msgid "Spindle CW" msgstr "主軸 順時針" -#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 +#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:48 msgid "Spindle CCW" msgstr "主軸 逆時針" #: src/emc/usr_intf/touchy/mdi.py:50 +#, fuzzy +msgid "Set tool number" +msgstr "記下" + +#: src/emc/usr_intf/touchy/mdi.py:51 src/emc/usr_intf/gscreen/mdi.py:50 msgid "Input control" msgstr "輸入 控制" -#: src/emc/usr_intf/touchy/mdi.py:53 src/emc/usr_intf/touchy/mdi.py:54 +#: src/emc/usr_intf/touchy/mdi.py:54 src/emc/usr_intf/touchy/mdi.py:55 +#: src/emc/usr_intf/gscreen/mdi.py:53 src/emc/usr_intf/gscreen/mdi.py:54 msgid "Straight rapid" msgstr "直 快速" -#: src/emc/usr_intf/touchy/mdi.py:55 src/emc/usr_intf/touchy/mdi.py:56 +#: src/emc/usr_intf/touchy/mdi.py:56 src/emc/usr_intf/touchy/mdi.py:57 +#: src/emc/usr_intf/gscreen/mdi.py:55 src/emc/usr_intf/gscreen/mdi.py:56 msgid "Straight feed" msgstr "直 進給" -#: src/emc/usr_intf/touchy/mdi.py:57 src/emc/usr_intf/touchy/mdi.py:58 +#: src/emc/usr_intf/touchy/mdi.py:58 src/emc/usr_intf/touchy/mdi.py:59 +#: src/emc/usr_intf/gscreen/mdi.py:57 src/emc/usr_intf/gscreen/mdi.py:58 msgid "Arc CW" msgstr "弧 順時針" -#: src/emc/usr_intf/touchy/mdi.py:59 src/emc/usr_intf/touchy/mdi.py:60 +#: src/emc/usr_intf/touchy/mdi.py:60 src/emc/usr_intf/touchy/mdi.py:61 +#: src/emc/usr_intf/gscreen/mdi.py:59 src/emc/usr_intf/gscreen/mdi.py:60 msgid "Arc CCW" msgstr "弧 反時針" -#: src/emc/usr_intf/touchy/mdi.py:61 src/emc/usr_intf/touchy/mdi.py:62 +#: src/emc/usr_intf/touchy/mdi.py:62 src/emc/usr_intf/touchy/mdi.py:63 +#: src/emc/usr_intf/gscreen/mdi.py:61 src/emc/usr_intf/gscreen/mdi.py:62 msgid "Dwell" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:63 +#: src/emc/usr_intf/touchy/mdi.py:64 src/emc/usr_intf/gscreen/mdi.py:63 msgid "Setup" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:64 +#: src/emc/usr_intf/touchy/mdi.py:65 src/emc/usr_intf/gscreen/mdi.py:64 msgid "Spindle synchronized feed" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:65 +#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:65 msgid "Rigid tap" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/touchy/mdi.py:67 -#: src/emc/usr_intf/touchy/mdi.py:68 src/emc/usr_intf/touchy/mdi.py:69 +#: src/emc/usr_intf/touchy/mdi.py:67 src/emc/usr_intf/touchy/mdi.py:68 +#: src/emc/usr_intf/touchy/mdi.py:69 src/emc/usr_intf/touchy/mdi.py:70 +#: src/emc/usr_intf/gscreen/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:67 +#: src/emc/usr_intf/gscreen/mdi.py:68 src/emc/usr_intf/gscreen/mdi.py:69 msgid "Probe" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:70 +#: src/emc/usr_intf/touchy/mdi.py:71 src/emc/usr_intf/gscreen/mdi.py:70 msgid "Radius compensation left" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:71 +#: src/emc/usr_intf/touchy/mdi.py:72 src/emc/usr_intf/gscreen/mdi.py:71 msgid "Radius compensation right" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:72 +#: src/emc/usr_intf/touchy/mdi.py:73 src/emc/usr_intf/gscreen/mdi.py:72 msgid "Radius compensation left, immediate" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:73 +#: src/emc/usr_intf/touchy/mdi.py:74 src/emc/usr_intf/gscreen/mdi.py:73 msgid "Radius compensation right, immediate" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:74 +#: src/emc/usr_intf/touchy/mdi.py:75 src/emc/usr_intf/gscreen/mdi.py:74 msgid "Tool length offset" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:75 +#: src/emc/usr_intf/touchy/mdi.py:76 src/emc/usr_intf/gscreen/mdi.py:75 msgid "Tool length offset immediate" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:76 +#: src/emc/usr_intf/touchy/mdi.py:77 src/emc/usr_intf/gscreen/mdi.py:76 msgid "Motion in unoffset coordinates" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:77 +#: src/emc/usr_intf/touchy/mdi.py:78 src/emc/usr_intf/gscreen/mdi.py:77 msgid "Continuous mode" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:79 +#: src/emc/usr_intf/touchy/mdi.py:80 src/emc/usr_intf/gscreen/mdi.py:79 msgid "Drill" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:80 +#: src/emc/usr_intf/touchy/mdi.py:81 src/emc/usr_intf/gscreen/mdi.py:80 msgid "Drill with dwell" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:81 +#: src/emc/usr_intf/touchy/mdi.py:82 src/emc/usr_intf/gscreen/mdi.py:81 msgid "Peck drill" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:82 +#: src/emc/usr_intf/touchy/mdi.py:83 src/emc/usr_intf/gscreen/mdi.py:82 msgid "Chip-break drill" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:83 +#: src/emc/usr_intf/touchy/mdi.py:84 src/emc/usr_intf/gscreen/mdi.py:83 msgid "Bore" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:84 +#: src/emc/usr_intf/touchy/mdi.py:85 src/emc/usr_intf/gscreen/mdi.py:84 msgid "Bore with dwell" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:85 +#: src/emc/usr_intf/touchy/mdi.py:86 src/emc/usr_intf/gscreen/mdi.py:85 msgid "Offset all coordinate systems" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:86 +#: src/emc/usr_intf/touchy/mdi.py:87 src/emc/usr_intf/gscreen/mdi.py:86 msgid "CSS Mode" msgstr "" @@ -5153,7 +7081,7 @@ msgstr "" msgid "LinuxCNC/Touchy" msgstr "" -#. # Touchy is Copyright (c) 2009 Chris Radek # # Touchy 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 2 of the License, or # (at your option) any later version. # # Touchy 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. +#. # Touchy is Copyright (c) 2009 Chris Radek # # Touchy 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 2 of the License, or # (at your option) any later version. # # Touchy 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. #: src/emc/usr_intf/touchy/touchy.glade:11 msgid "window1" msgstr "" @@ -5191,11 +7119,20 @@ msgid "zd" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:131 +#: src/emc/usr_intf/gscreen/gscreen.glade:85 +#: src/emc/usr_intf/gscreen/gscreen.glade:213 +#: src/emc/usr_intf/gscreen/gscreen.glade:343 +#: src/emc/usr_intf/gscreen/gscreen.glade:471 +#: src/emc/usr_intf/gscreen/gscreen.glade:599 +#: src/emc/usr_intf/gscreen/gscreen.glade:727 +#: src/emc/usr_intf/gscreen/gscreen.glade:855 +#: src/emc/usr_intf/gscreen/gscreen.glade:983 +#: src/emc/usr_intf/gscreen/gscreen.glade:1111 msgid "DTG" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:143 -#: src/emc/usr_intf/pncconf/pncconf.glade:59755 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Absolute" msgstr "" @@ -5280,6 +7217,9 @@ msgid "Estop Reset" msgstr "Estop復位" #: src/emc/usr_intf/touchy/touchy.glade:459 +#: src/emc/usr_intf/stepconf/pport1.glade:21 +#: src/emc/usr_intf/stepconf/pport2.glade:1409 +#: src/emc/usr_intf/gscreen/gscreen.glade:2442 msgid "Estop" msgstr "" @@ -5324,47 +7264,7 @@ msgid "." msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:963 -#: src/emc/usr_intf/pncconf/pncconf.glade:60883 -#: src/emc/usr_intf/pncconf/pncconf.glade:60895 -#: src/emc/usr_intf/pncconf/pncconf.glade:61017 -#: src/emc/usr_intf/pncconf/pncconf.glade:61029 -#: src/emc/usr_intf/pncconf/pncconf.glade:61041 -#: src/emc/usr_intf/pncconf/pncconf.glade:61053 -#: src/emc/usr_intf/pncconf/pncconf.glade:61065 -#: src/emc/usr_intf/pncconf/pncconf.glade:61077 -#: src/emc/usr_intf/pncconf/pncconf.glade:62040 -#: src/emc/usr_intf/pncconf/pncconf.glade:62052 -#: src/emc/usr_intf/pncconf/pncconf.glade:62064 -#: src/emc/usr_intf/pncconf/pncconf.glade:62076 -#: src/emc/usr_intf/pncconf/pncconf.glade:62088 -#: src/emc/usr_intf/pncconf/pncconf.glade:62100 -#: src/emc/usr_intf/pncconf/pncconf.glade:62222 -#: src/emc/usr_intf/pncconf/pncconf.glade:62234 -#: src/emc/usr_intf/pncconf/pncconf.glade:63069 -#: src/emc/usr_intf/pncconf/pncconf.glade:63081 -#: src/emc/usr_intf/pncconf/pncconf.glade:63203 -#: src/emc/usr_intf/pncconf/pncconf.glade:63215 -#: src/emc/usr_intf/pncconf/pncconf.glade:63227 -#: src/emc/usr_intf/pncconf/pncconf.glade:63239 -#: src/emc/usr_intf/pncconf/pncconf.glade:63251 -#: src/emc/usr_intf/pncconf/pncconf.glade:63263 -#: src/emc/usr_intf/pncconf/pncconf.glade:64226 -#: src/emc/usr_intf/pncconf/pncconf.glade:64238 -#: src/emc/usr_intf/pncconf/pncconf.glade:64250 -#: src/emc/usr_intf/pncconf/pncconf.glade:64262 -#: src/emc/usr_intf/pncconf/pncconf.glade:64274 -#: src/emc/usr_intf/pncconf/pncconf.glade:64286 -#: src/emc/usr_intf/pncconf/pncconf.glade:64408 -#: src/emc/usr_intf/pncconf/pncconf.glade:64420 -#: src/emc/usr_intf/pncconf/pncconf.glade:65231 -#: src/emc/usr_intf/pncconf/pncconf.glade:65243 -#: src/emc/usr_intf/pncconf/pncconf.glade:65359 -#: src/emc/usr_intf/pncconf/pncconf.glade:65371 -#: src/emc/usr_intf/pncconf/pncconf.glade:65383 -#: src/emc/usr_intf/pncconf/pncconf.glade:65395 -#: src/emc/usr_intf/pncconf/pncconf.glade:65407 -#: src/emc/usr_intf/pncconf/pncconf.glade:65419 -#: src/emc/usr_intf/pncconf/pncconf.glade:67091 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "0" msgstr "" @@ -5439,6 +7339,7 @@ msgid "label26" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:1539 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4226 msgid "Spindle" msgstr "主軸" @@ -5485,12 +7386,8 @@ msgid "Distance:" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:2526 -#: src/emc/usr_intf/stepconf/stepconf.glade:4148 -#: src/emc/usr_intf/pncconf/pncconf.glade:60476 -#: src/emc/usr_intf/pncconf/pncconf.glade:61571 -#: src/emc/usr_intf/pncconf/pncconf.glade:62664 -#: src/emc/usr_intf/pncconf/pncconf.glade:63757 -#: src/emc/usr_intf/pncconf/pncconf.glade:64856 +#: src/emc/usr_intf/stepconf/main_page.glade:23 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Velocity:" msgstr "" @@ -5606,6 +7503,7 @@ msgid "" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:3009 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6414 msgid "Status" msgstr "" @@ -5663,6 +7561,8 @@ msgid "Display Options" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:3286 +#: src/emc/usr_intf/stepconf/base.glade:867 +#: src/emc/usr_intf/gscreen/gscreen.glade:3664 msgid "Inch" msgstr "" @@ -5703,14 +7603,17 @@ msgid "Program Options" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:3531 +#: src/emc/usr_intf/gscreen/gscreen.glade:2200 msgid "Preferences" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:3567 +#: src/emc/usr_intf/gscreen/gscreen.glade:1425 msgid "FO: 100%" msgstr "" #: src/emc/usr_intf/touchy/touchy.glade:3582 +#: src/emc/usr_intf/gscreen/gscreen.glade:1437 msgid "SO: 100%" msgstr "" @@ -5722,1324 +7625,1532 @@ msgstr "" msgid "Jogging" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3637 +#: src/emc/usr_intf/touchy/touchy.glade:3624 +msgid "Start Point" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:3651 msgid ".01" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3650 +#: src/emc/usr_intf/touchy/touchy.glade:3664 msgid ".001" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3666 +#: src/emc/usr_intf/touchy/touchy.glade:3680 msgid ".0001" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3694 +#: src/emc/usr_intf/touchy/touchy.glade:3708 msgid " X " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3706 +#: src/emc/usr_intf/touchy/touchy.glade:3720 msgid " Y " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3721 +#: src/emc/usr_intf/touchy/touchy.glade:3735 msgid " Z " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3736 +#: src/emc/usr_intf/touchy/touchy.glade:3750 msgid " A " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3752 +#: src/emc/usr_intf/touchy/touchy.glade:3766 msgid " B " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3770 +#: src/emc/usr_intf/touchy/touchy.glade:3784 msgid " C " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3788 +#: src/emc/usr_intf/touchy/touchy.glade:3802 msgid " U " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3804 +#: src/emc/usr_intf/touchy/touchy.glade:3818 msgid " V " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3822 +#: src/emc/usr_intf/touchy/touchy.glade:3836 msgid " W " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3855 +#: src/emc/usr_intf/touchy/touchy.glade:3869 msgid "Handwheel" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:53 +#: src/emc/usr_intf/stepconf/stepconf.py:57 msgid "" "Stepconf encountered an error. The following information may be useful in " "troubleshooting:\n" "\n" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:70 -#: src/emc/usr_intf/pncconf/pncconf.py:133 +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#, fuzzy +msgid "Stepconf" +msgstr "步進" + +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#: src/emc/usr_intf/stepconf/stepconf.py:217 +#: src/emc/usr_intf/stepconf/main_page.glade:557 +#: src/emc/usr_intf/gscreen/gscreen.py:3414 +#: src/emc/usr_intf/gscreen/gscreen.py:3415 +#: src/emc/usr_intf/gscreen/gscreen.glade:4043 +#, fuzzy +msgid "Start" +msgstr "啟動" + +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Base Information" +msgstr "版本訊息" + +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Parallel Port 1" +msgstr "第一並行端口設置" + +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Parallel Port 2" +msgstr "第一並行端口設置" + +#: src/emc/usr_intf/stepconf/stepconf.py:130 +#, fuzzy +msgid "Options" +msgstr "GUI 的選項 " + +#: src/emc/usr_intf/stepconf/stepconf.py:130 +#, fuzzy +msgid "Axis X" +msgstr "軸 " + +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis Y" +msgstr "軸 " + +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis Z" +msgstr "軸 " + +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis A" +msgstr "軸 " + +#: src/emc/usr_intf/stepconf/stepconf.py:132 +#: src/emc/usr_intf/pncconf/pncconf.py:378 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +msgid "Spindle" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:132 +msgid "Almost Done" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:136 +#: src/emc/usr_intf/pncconf/pncconf.py:135 msgid "Gecko 201" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:71 -#: src/emc/usr_intf/pncconf/pncconf.py:134 +#: src/emc/usr_intf/stepconf/stepconf.py:137 +#: src/emc/usr_intf/pncconf/pncconf.py:136 msgid "Gecko 202" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:72 -#: src/emc/usr_intf/pncconf/pncconf.py:135 +#: src/emc/usr_intf/stepconf/stepconf.py:138 +#: src/emc/usr_intf/pncconf/pncconf.py:137 msgid "Gecko 203v" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:73 -#: src/emc/usr_intf/pncconf/pncconf.py:136 +#: src/emc/usr_intf/stepconf/stepconf.py:139 +#: src/emc/usr_intf/pncconf/pncconf.py:138 msgid "Gecko 210" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:74 -#: src/emc/usr_intf/pncconf/pncconf.py:137 +#: src/emc/usr_intf/stepconf/stepconf.py:140 +#: src/emc/usr_intf/pncconf/pncconf.py:139 msgid "Gecko 212" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:75 -#: src/emc/usr_intf/pncconf/pncconf.py:138 +#: src/emc/usr_intf/stepconf/stepconf.py:141 +#: src/emc/usr_intf/pncconf/pncconf.py:140 msgid "Gecko 320" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:76 -#: src/emc/usr_intf/pncconf/pncconf.py:139 +#: src/emc/usr_intf/stepconf/stepconf.py:142 +#: src/emc/usr_intf/pncconf/pncconf.py:141 msgid "Gecko 540" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:77 -#: src/emc/usr_intf/pncconf/pncconf.py:140 +#: src/emc/usr_intf/stepconf/stepconf.py:143 +#: src/emc/usr_intf/pncconf/pncconf.py:142 msgid "L297" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:78 -#: src/emc/usr_intf/pncconf/pncconf.py:141 +#: src/emc/usr_intf/stepconf/stepconf.py:144 +#: src/emc/usr_intf/pncconf/pncconf.py:143 msgid "PMDX-150" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:79 -#: src/emc/usr_intf/pncconf/pncconf.py:142 +#: src/emc/usr_intf/stepconf/stepconf.py:145 +#: src/emc/usr_intf/stepconf/pport1.glade:32 +#: src/emc/usr_intf/pncconf/pncconf.py:144 msgid "Sherline" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:80 -#: src/emc/usr_intf/pncconf/pncconf.py:143 +#: src/emc/usr_intf/stepconf/stepconf.py:146 +#: src/emc/usr_intf/pncconf/pncconf.py:145 msgid "Xylotex 8S-3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:81 -#: src/emc/usr_intf/pncconf/pncconf.py:144 +#: src/emc/usr_intf/stepconf/stepconf.py:147 +#: src/emc/usr_intf/pncconf/pncconf.py:146 msgid "Parker-Compumotor oem750" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:82 -#: src/emc/usr_intf/pncconf/pncconf.py:145 +#: src/emc/usr_intf/stepconf/stepconf.py:148 +#: src/emc/usr_intf/pncconf/pncconf.py:147 msgid "JVL-SMD41 or 42" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:83 -#: src/emc/usr_intf/pncconf/pncconf.py:146 +#: src/emc/usr_intf/stepconf/stepconf.py:149 +#: src/emc/usr_intf/pncconf/pncconf.py:148 msgid "Hobbycnc Pro Chopper" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:84 -#: src/emc/usr_intf/pncconf/pncconf.py:147 -msgid "Keling 4030" +#: src/emc/usr_intf/stepconf/stepconf.py:150 +msgid "Kelling 4030" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:153 +#: src/emc/usr_intf/stepconf/stepconf.py:151 +msgid "Leadshine Series" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:190 msgid "X Step" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:153 +#: src/emc/usr_intf/stepconf/stepconf.py:190 msgid "X Direction" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:153 +#: src/emc/usr_intf/stepconf/stepconf.py:190 msgid "Y Step" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:153 +#: src/emc/usr_intf/stepconf/stepconf.py:190 msgid "Y Direction" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:154 +#: src/emc/usr_intf/stepconf/stepconf.py:191 msgid "Z Step" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:154 +#: src/emc/usr_intf/stepconf/stepconf.py:191 msgid "Z Direction" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:154 +#: src/emc/usr_intf/stepconf/stepconf.py:191 msgid "A Step" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:154 +#: src/emc/usr_intf/stepconf/stepconf.py:191 msgid "A Direction" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 msgid "Spindle ON" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:557 +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:488 msgid "Spindle PWM" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 msgid "Spindle Brake" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 msgid "Coolant Mist" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 msgid "Coolant Flood" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:370 msgid "ESTOP Out" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:156 +#: src/emc/usr_intf/stepconf/stepconf.py:193 msgid "Amplifier Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:157 -#: src/emc/usr_intf/pncconf/pncconf.py:443 +#: src/emc/usr_intf/stepconf/stepconf.py:194 +#: src/emc/usr_intf/pncconf/pncconf.py:371 msgid "Charge Pump" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 msgid "Digital out 0" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 msgid "Digital out 1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 msgid "Digital out 2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 msgid "Digital out 3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:159 -#: src/emc/usr_intf/stepconf/stepconf.py:178 +#: src/emc/usr_intf/stepconf/stepconf.py:196 +#: src/emc/usr_intf/stepconf/stepconf.py:215 +#: src/emc/usr_intf/stepconf/pport1.glade:18 +#: src/emc/usr_intf/stepconf/pport2.glade:1406 +#: src/emc/usr_intf/stepconf/pport2.glade:1420 msgid "Unused" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 msgid "ESTOP In" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 msgid "Probe In" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:162 +#: src/emc/usr_intf/stepconf/stepconf.py:199 msgid "Spindle Index" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:162 +#: src/emc/usr_intf/stepconf/stepconf.py:199 msgid "Spindle Phase A" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:162 +#: src/emc/usr_intf/stepconf/stepconf.py:199 msgid "Spindle Phase B" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/stepconf.py:200 msgid "Home X" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/stepconf.py:200 msgid "Home Y" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/stepconf.py:200 msgid "Home Z" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:163 +#: src/emc/usr_intf/stepconf/stepconf.py:200 msgid "Home A" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:164 +#: src/emc/usr_intf/stepconf/stepconf.py:201 msgid "Minimum Limit + Home X" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:164 +#: src/emc/usr_intf/stepconf/stepconf.py:201 msgid "Minimum Limit + Home Y" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:165 +#: src/emc/usr_intf/stepconf/stepconf.py:202 msgid "Minimum Limit + Home Z" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:165 +#: src/emc/usr_intf/stepconf/stepconf.py:202 msgid "Minimum Limit + Home A" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:166 +#: src/emc/usr_intf/stepconf/stepconf.py:203 msgid "Maximum Limit + Home X" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:166 +#: src/emc/usr_intf/stepconf/stepconf.py:203 msgid "Maximum Limit + Home Y" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:167 +#: src/emc/usr_intf/stepconf/stepconf.py:204 msgid "Maximum Limit + Home Z" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:167 +#: src/emc/usr_intf/stepconf/stepconf.py:204 msgid "Maximum Limit + Home A" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:168 +#: src/emc/usr_intf/stepconf/stepconf.py:205 msgid "Both Limit + Home X" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:168 +#: src/emc/usr_intf/stepconf/stepconf.py:205 msgid "Both Limit + Home Y" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:169 -msgid "Both Limit + Home Z" +#: src/emc/usr_intf/stepconf/stepconf.py:206 +msgid "Both Limit + Home Z" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:206 +msgid "Both Limit + Home A" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:207 +msgid "Minimum Limit X" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:207 +msgid "Minimum Limit Y" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:208 +msgid "Minimum Limit Z" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:208 +msgid "Minimum Limit A" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:209 +msgid "Maximum Limit X" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:209 +msgid "Maximum Limit Y" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:210 +msgid "Maximum Limit Z" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:210 +msgid "Maximum Limit A" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:211 +msgid "Both Limit X" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:211 +msgid "Both Limit Y" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:212 +msgid "Both Limit Z" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:212 +msgid "Both Limit A" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:213 +msgid "All limits" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:213 +msgid "All home" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:213 +msgid "All limits + homes" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 0" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 1" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 2" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 3" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:218 +#, fuzzy +msgid "Forward" +msgstr "主軸 前轉" + +#: src/emc/usr_intf/stepconf/stepconf.py:219 +msgid "Done" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:220 +msgid "" +"OK to replace existing custom ladder program?\n" +"Existing Custom.clp will be renamed custom_backup.clp.\n" +"Any existing file named -custom_backup.clp- will be lost. " +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:221 +#: src/emc/usr_intf/pncconf/pncconf.py:8163 +msgid "" +"You edited a ladder program and have selected a different program to copy to " +"your configuration file.\n" +"The edited program will be lost.\n" +"\n" +"Are you sure? " +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:222 +msgid "" +"You need to designate an E-stop input pin in the Parallel Port Setup page " +"for this program." +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:223 +msgid "" +"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" +"Existing custompanel.xml and custom_postgui.hal will be renamed " +"custompanel_backup.xml and postgui_backup.hal.\n" +"Any existing file named custompanel_backup.xml and custom_postgui.hal will " +"be lost. " +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:224 +msgid "Quit Stepconf and discard changes?" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:169 -msgid "Both Limit + Home A" +#: src/emc/usr_intf/stepconf/stepconf.py:225 +msgid "" +"The configuration has been built and saved.\n" +"Do you want to quit?" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:170 -msgid "Minimum Limit X" +#: src/emc/usr_intf/stepconf/stepconf.py:226 +msgid "" +"You are using a simulated-realtime version of Machinekit, so testing / " +"tuning of hardware is unavailable." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:170 -msgid "Minimum Limit Y" +#: src/emc/usr_intf/stepconf/stepconf.py:227 +#, python-format +msgid "" +"You are using a realtime version of Machinekit but didn't load a realtime " +"kernel so testing / tuning of hardware is unavailable.\n" +"This is possibly because you updated the OS and it doesn't automatically " +"load the RTAI kernel anymore.\n" +"You are using the %(actual)s kernel.\n" +"You need to use kernel:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:171 -msgid "Minimum Limit Z" +#: src/emc/usr_intf/stepconf/stepconf.py:246 +msgid "my-mill" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:171 -msgid "Minimum Limit A" +#: src/emc/usr_intf/stepconf/stepconf.py:585 +#, python-format +msgid "File %r was modified since it was written by stepconf" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:172 -msgid "Maximum Limit X" +#: src/emc/usr_intf/stepconf/stepconf.py:588 +msgid "" +"Saving this configuration file will discard configuration changes made " +"outside stepconf." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:172 -msgid "Maximum Limit Y" +#: src/emc/usr_intf/stepconf/stepconf.py:603 +#: src/emc/usr_intf/pncconf/pncconf.py:1318 +msgid "Continue? " msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:173 -msgid "Maximum Limit Z" +#: src/emc/usr_intf/stepconf/stepconf.py:604 +#: src/emc/usr_intf/pncconf/pncconf.py:1319 +msgid "yY" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:173 -msgid "Maximum Limit A" +#: src/emc/usr_intf/stepconf/stepconf.py:689 +#: src/emc/usr_intf/pncconf/pncconf.py:3591 +#, python-format +msgid "launch %s" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:174 -msgid "Both Limit X" -msgstr "" +#: src/emc/usr_intf/stepconf/stepconf.py:693 +#, fuzzy +msgid "Desktop Launcher for Machinekit config made by Stepconf" +msgstr "創建一個桌面 啟動器 啟動 LinuxCNC 與 此配置." -#: src/emc/usr_intf/stepconf/stepconf.py:174 -msgid "Both Limit Y" +#: src/emc/usr_intf/stepconf/stepconf.py:860 +#: src/emc/usr_intf/stepconf/pages.py:145 +msgid "Other" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:175 -msgid "Both Limit Z" +#: src/emc/usr_intf/stepconf/stepconf.py:1295 +#: src/emc/usr_intf/pncconf/pncconf.py:9302 +#, python-format +msgid "%s Axis Test" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:175 -msgid "Both Limit A" +#: src/emc/usr_intf/stepconf/stepconf.py:1298 +#: src/emc/usr_intf/stepconf/pages.py:617 +msgid "deg / s" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:176 -msgid "All limits" +#: src/emc/usr_intf/stepconf/stepconf.py:1299 +#: src/emc/usr_intf/stepconf/pages.py:618 +msgid "deg / s²" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:176 -msgid "All home" +#: src/emc/usr_intf/stepconf/stepconf.py:1300 +#: src/emc/usr_intf/stepconf/pages.py:619 +msgid "deg" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:176 -msgid "All limits + homes" +#: src/emc/usr_intf/stepconf/stepconf.py:1312 +#: src/emc/usr_intf/stepconf/pages.py:623 +#: src/emc/usr_intf/stepconf/axisx.glade:629 +#: src/emc/usr_intf/stepconf/axisy.glade:615 +#: src/emc/usr_intf/stepconf/axisz.glade:615 +#: src/emc/usr_intf/stepconf/axisa.glade:629 +#: src/emc/usr_intf/pncconf/pncconf.glade:64717 +msgid "mm / s" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 0" +#: src/emc/usr_intf/stepconf/stepconf.py:1313 +#: src/emc/usr_intf/stepconf/pages.py:624 +#: src/emc/usr_intf/stepconf/axisx.glade:645 +#: src/emc/usr_intf/stepconf/axisy.glade:631 +#: src/emc/usr_intf/stepconf/axisz.glade:631 +#: src/emc/usr_intf/stepconf/axisa.glade:645 +#: src/emc/usr_intf/pncconf/pncconf.glade:64732 +msgid "mm / s²" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 1" +#: src/emc/usr_intf/stepconf/stepconf.py:1326 +#: src/emc/usr_intf/stepconf/pages.py:629 +msgid "in / s" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 2" +#: src/emc/usr_intf/stepconf/stepconf.py:1327 +#: src/emc/usr_intf/stepconf/pages.py:630 +msgid "in / s²" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 3" +#: src/emc/usr_intf/stepconf/pages.py:189 +#, fuzzy +msgid "Machinekit 'stepconf' configuration files" +msgstr "打開配置文件:" + +#: src/emc/usr_intf/stepconf/pages.py:190 +#: src/emc/usr_intf/pncconf/pncconf.py:4257 +msgid "Modify Existing Configuration" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:203 -msgid "my-mill" +#: src/emc/usr_intf/stepconf/pages.py:616 +msgid "degree / rev" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:215 -#: src/emc/usr_intf/stepconf/stepconf.py:217 -#: src/emc/usr_intf/pncconf/pncconf.py:983 -#: src/emc/usr_intf/pncconf/pncconf.py:985 -msgid "Enter Address" +#: src/emc/usr_intf/stepconf/pages.py:620 +msgid "Steps / deg" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:375 -#, python-format -msgid "File %r was modified since it was written by stepconf" +#: src/emc/usr_intf/stepconf/pages.py:622 +#: src/emc/usr_intf/stepconf/axisx.glade:613 +#: src/emc/usr_intf/stepconf/axisy.glade:599 +#: src/emc/usr_intf/stepconf/axisz.glade:599 +#: src/emc/usr_intf/stepconf/axisa.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / rev" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:378 -msgid "" -"Saving this configuration file will discard configuration changes made " -"outside stepconf." +#: src/emc/usr_intf/stepconf/pages.py:626 +#: src/emc/usr_intf/stepconf/axisx.glade:15 +#: src/emc/usr_intf/stepconf/axisy.glade:15 +#: src/emc/usr_intf/stepconf/axisz.glade:15 +#: src/emc/usr_intf/stepconf/axisa.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Steps / mm" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:393 -#: src/emc/usr_intf/pncconf/pncconf.py:1356 -msgid "Continue? " +#: src/emc/usr_intf/stepconf/pages.py:628 +msgid "rev / in" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:394 -#: src/emc/usr_intf/pncconf/pncconf.py:1357 -msgid "yY" +#: src/emc/usr_intf/stepconf/pages.py:632 +msgid "Steps / in" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:446 -#: src/emc/usr_intf/stepconf/stepconf.py:786 +#: src/emc/usr_intf/stepconf/build_INI.py:45 +#: src/emc/usr_intf/stepconf/build_HAL.py:41 #, python-format -msgid "# Generated by stepconf at %s" +msgid "# Generated by stepconf 1.1 at %s" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:447 -#: src/emc/usr_intf/stepconf/stepconf.py:787 -#: src/emc/usr_intf/pncconf/pncconf.py:1366 -#: src/emc/usr_intf/pncconf/pncconf.py:2369 +#: src/emc/usr_intf/stepconf/build_INI.py:46 +#: src/emc/usr_intf/stepconf/build_HAL.py:42 +#: src/emc/usr_intf/pncconf/pncconf.py:1328 +#: src/emc/usr_intf/pncconf/pncconf.py:2422 msgid "# If you make changes to this file, they will be" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:448 -#: src/emc/usr_intf/stepconf/stepconf.py:788 +#: src/emc/usr_intf/stepconf/build_INI.py:47 +#: src/emc/usr_intf/stepconf/build_HAL.py:43 msgid "# overwritten when you run stepconf again" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:516 +#: src/emc/usr_intf/stepconf/build_INI.py:126 msgid "# add halui MDI commands here (max 64) " msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:991 -#: src/emc/usr_intf/pncconf/pncconf.py:2991 +#: src/emc/usr_intf/stepconf/build_HAL.py:275 +#: src/emc/usr_intf/pncconf/pncconf.py:3131 msgid "# **** Setup for external estop ladder program -START ****" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:998 -#: src/emc/usr_intf/pncconf/pncconf.py:2998 +#: src/emc/usr_intf/stepconf/build_HAL.py:282 +#: src/emc/usr_intf/pncconf/pncconf.py:3138 msgid "# **** Setup for external estop ladder program -END ****" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1018 -#: src/emc/usr_intf/pncconf/pncconf.py:3025 +#: src/emc/usr_intf/stepconf/build_HAL.py:302 +#: src/emc/usr_intf/pncconf/pncconf.py:3165 msgid "" "# Load Classicladder with modbus master included (GUI must run for Modbus)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1021 -#: src/emc/usr_intf/pncconf/pncconf.py:3030 +#: src/emc/usr_intf/stepconf/build_HAL.py:305 +#: src/emc/usr_intf/pncconf/pncconf.py:3170 msgid "# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1031 -#: src/emc/usr_intf/pncconf/pncconf.py:3112 +#: src/emc/usr_intf/stepconf/build_HAL.py:315 +#: src/emc/usr_intf/pncconf/pncconf.py:3252 msgid "Include your PyVCP panel here.\n" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1040 -#: src/emc/usr_intf/stepconf/stepconf.py:1087 +#: src/emc/usr_intf/stepconf/build_HAL.py:324 +#: src/emc/usr_intf/stepconf/build_HAL.py:370 msgid "# Include your customized HAL commands here" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1041 +#: src/emc/usr_intf/stepconf/build_HAL.py:325 msgid "" "# The commands in this file are run after the AXIS GUI (including PyVCP " "panel) starts" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1045 -#: src/emc/usr_intf/pncconf/pncconf.py:3140 +#: src/emc/usr_intf/stepconf/build_HAL.py:328 +#: src/emc/usr_intf/pncconf/pncconf.py:3280 msgid "# **** Setup of spindle speed display using pyvcp -START ****" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1047 +#: src/emc/usr_intf/stepconf/build_HAL.py:330 msgid "# **** Use ACTUAL spindle velocity from spindle encoder" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1048 -msgid "# **** spindle-velocity bounces around so we filter it with lowpass" +#: src/emc/usr_intf/stepconf/build_HAL.py:331 +msgid "" +"# **** spindle-velocity-feedback-rps bounces around so we filter it with " +"lowpass" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1049 +#: src/emc/usr_intf/stepconf/build_HAL.py:332 msgid "" -"# **** spindle-velocity is signed so we use absolute component to remove sign" +"# **** spindle-velocity-feedback-rps is signed so we use absolute component " +"to remove sign" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1050 +#: src/emc/usr_intf/stepconf/build_HAL.py:333 msgid "# **** ACTUAL velocity is in RPS not RPM so we scale it." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1059 +#: src/emc/usr_intf/stepconf/build_HAL.py:342 msgid "# **** set up spindle at speed indicator ****" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1072 +#: src/emc/usr_intf/stepconf/build_HAL.py:355 msgid "" "# **** Use COMMANDED spindle velocity from LinuxCNC because no spindle " "encoder was specified" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1073 -msgid "" -"# **** COMANDED velocity is signed so we use absolute component (abs.0) to " -"remove sign" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.py:1088 +#: src/emc/usr_intf/stepconf/build_HAL.py:371 msgid "# This file will not be overwritten when you run stepconf again" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1095 -#, python-format -msgid "Generated by stepconf at %s" +#: src/emc/usr_intf/stepconf/build_HAL.py:412 +msgid "# This file sets up simulated limits/home/spindle encoder hardware." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1166 -#: src/emc/usr_intf/pncconf/pncconf.py:3451 -#, python-format -msgid "launch %s" +#: src/emc/usr_intf/stepconf/build_HAL.py:413 +msgid "# This is a generated file do not edit." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1170 -#, fuzzy -msgid "Desktop Launcher for LinuxCNC config made by Stepconf" -msgstr "創建一個桌面 啟動器 啟動 LinuxCNC 與 此配置." +#: src/emc/usr_intf/stepconf/main_page.glade:35 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Acceleration:" +msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1196 -#: src/emc/usr_intf/pncconf/pncconf.py:3700 -#, python-format -msgid "%s Axis Configuration" +#: src/emc/usr_intf/stepconf/main_page.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Jog:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1238 -#: src/emc/usr_intf/stepconf/stepconf.py:1337 -msgid "Other" +#: src/emc/usr_intf/stepconf/main_page.glade:63 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Test Area:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1249 -msgid "Quit Stepconf and discard changes?" +#: src/emc/usr_intf/stepconf/main_page.glade:97 +msgid "mm/s^2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1280 -msgid "" -"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " -"of hardware is unavailable." +#: src/emc/usr_intf/stepconf/main_page.glade:138 +msgid "mm/s" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1283 -msgid "" -"You are using a realtime version of LinuxCNC but didn't load a realtime " -"kernel so testing / tuning of hardware is unavailable.\n" -"This is possibly because you updated the OS and it doesn't automatically " -"load the RTAI kernel anymore.\n" +#: src/emc/usr_intf/stepconf/main_page.glade:400 +msgid "±" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1298 +#: src/emc/usr_intf/stepconf/main_page.glade:423 #, fuzzy -msgid "LinuxCNC 'stepconf' configuration files" -msgstr "打開配置文件:" +msgid "Stepconf -Stepper Configuration Wizard" +msgstr "樣辦配置" -#: src/emc/usr_intf/stepconf/stepconf.py:1299 -#: src/emc/usr_intf/pncconf/pncconf.py:4094 -msgid "Modify Existing Configuration" -msgstr "" +#: src/emc/usr_intf/stepconf/main_page.glade:503 +#: src/emc/usr_intf/pncconf/pncconf.glade:2054 +#: src/emc/usr_intf/pncconf/pncconf.glade:2067 +#: src/emc/usr_intf/pncconf/pncconf.glade:2080 +#: src/emc/usr_intf/pncconf/pncconf.glade:2093 +#: src/emc/usr_intf/pncconf/pncconf.glade:2106 +#: src/emc/usr_intf/pncconf/pncconf.glade:2119 +#: src/emc/usr_intf/pncconf/pncconf.glade:2132 +#: src/emc/usr_intf/pncconf/pncconf.glade:2145 +#: src/emc/usr_intf/pncconf/pncconf.glade:2156 +#: src/emc/usr_intf/pncconf/pncconf.glade:2169 +#: src/emc/usr_intf/pncconf/pncconf.glade:2182 +#: src/emc/usr_intf/pncconf/pncconf.glade:2528 +#: src/emc/usr_intf/pncconf/pncconf.glade:2541 +#: src/emc/usr_intf/pncconf/pncconf.glade:2554 +#: src/emc/usr_intf/pncconf/pncconf.glade:8104 +#: src/emc/usr_intf/pncconf/pncconf.glade:8139 +#: src/emc/usr_intf/pncconf/pncconf.glade:63377 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:1342 +#: src/emc/usr_intf/gscreen/gscreen.glade:1360 +#: src/emc/usr_intf/gscreen/gscreen.glade:1378 +msgid "label" +msgstr "標 籤" -#: src/emc/usr_intf/stepconf/stepconf.py:1439 +#: src/emc/usr_intf/stepconf/main_page.glade:605 msgid "" -"You need to designate an E-stop input pin in the Parallel Port Setup page " -"for this program." +"This program creates configuration files (.ini and .hal) for \"step and " +"direction\" milling machines and lathes connected to the PC parallel port.\n" +"\n" +"Stepconf requires a minimum 800 X 600 display resolution." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1452 -msgid "" -"OK to replace existing custom ladder program?\n" -"Existing Custom.clp will be renamed custom_backup.clp.\n" -"Any existing file named -custom_backup.clp- will be lost. " +#: src/emc/usr_intf/stepconf/main_page.glade:628 +#: src/emc/usr_intf/pncconf/pncconf.glade:28799 +#: src/emc/usr_intf/pncconf/pncconf.glade:35720 +#: src/emc/usr_intf/pncconf/pncconf.glade:42643 +#: src/emc/usr_intf/pncconf/pncconf.glade:49566 +#: src/emc/usr_intf/pncconf/pncconf.glade:56489 +msgid "page 1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1457 -#: src/emc/usr_intf/pncconf/pncconf.py:7815 -msgid "" -"You edited a ladder program and have selected a different program to copy to " -"your configuration file.\n" -"The edited program will be lost.\n" -"\n" -"Are you sure? " +#: src/emc/usr_intf/stepconf/base.glade:18 +msgid "XYZ" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1471 -msgid "" -"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" -"Existing custompanel.xml and custom_postgui.hal will be renamed " -"custompanel_backup.xml and postgui_backup.hal.\n" -"Any existing file named custompanel_backup.xml and custom_postgui.hal will " -"be lost. " +#: src/emc/usr_intf/stepconf/base.glade:21 +msgid "XYZA" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1676 -msgid "degree / rev" +#: src/emc/usr_intf/stepconf/base.glade:24 +msgid "XZ (Lathe)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1677 -#: src/emc/usr_intf/stepconf/stepconf.py:2205 -msgid "deg / s" +#: src/emc/usr_intf/stepconf/base.glade:79 +msgid "Step _Time:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1678 -#: src/emc/usr_intf/stepconf/stepconf.py:2206 -msgid "deg / s²" +#: src/emc/usr_intf/stepconf/base.glade:113 +#: src/emc/usr_intf/stepconf/base.glade:165 +#: src/emc/usr_intf/stepconf/base.glade:219 +#: src/emc/usr_intf/stepconf/base.glade:271 +#: src/emc/usr_intf/stepconf/base.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:443 +#: src/emc/usr_intf/pncconf/pncconf.glade:8226 +msgid "ns" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1679 -#: src/emc/usr_intf/stepconf/stepconf.py:2207 -msgid "deg" +#: src/emc/usr_intf/stepconf/base.glade:127 +msgid "Step _Space:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1680 -msgid "Steps / deg" +#: src/emc/usr_intf/stepconf/base.glade:181 +msgid "Direction _Hold:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1682 -#: src/emc/usr_intf/stepconf/stepconf.glade:3589 -#: src/emc/usr_intf/pncconf/pncconf.glade:66138 -#: src/emc/usr_intf/pncconf/pncconf.glade:66424 -msgid "mm / rev" +#: src/emc/usr_intf/stepconf/base.glade:235 +msgid "_Direction Setup:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1683 -#: src/emc/usr_intf/stepconf/stepconf.py:2219 -#: src/emc/usr_intf/stepconf/stepconf.glade:3604 -#: src/emc/usr_intf/pncconf/pncconf.glade:57828 -msgid "mm / s" +#: src/emc/usr_intf/stepconf/base.glade:338 +msgid "Driver Timing Settings" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1684 -#: src/emc/usr_intf/stepconf/stepconf.py:2220 -#: src/emc/usr_intf/stepconf/stepconf.glade:3619 -#: src/emc/usr_intf/pncconf/pncconf.glade:57813 -msgid "mm / s²" +#: src/emc/usr_intf/stepconf/base.glade:351 +msgid "" +"_Test Base\n" +"Period Jitter " msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1686 -#: src/emc/usr_intf/stepconf/stepconf.glade:3075 -#: src/emc/usr_intf/pncconf/pncconf.glade:66888 -msgid "Steps / mm" +#: src/emc/usr_intf/stepconf/base.glade:372 +msgid "Machine _Name:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1688 -msgid "rev / in" +#: src/emc/usr_intf/stepconf/base.glade:386 +msgid "_Axis configuration:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1689 -#: src/emc/usr_intf/stepconf/stepconf.py:2233 -msgid "in / s" +#: src/emc/usr_intf/stepconf/base.glade:401 +#, fuzzy +msgid "Reset Default machine _units:" +msgstr "機器 單元:" + +#: src/emc/usr_intf/stepconf/base.glade:416 +#: src/emc/usr_intf/pncconf/pncconf.glade:245 +msgid "Configuration directory:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1690 -#: src/emc/usr_intf/stepconf/stepconf.py:2234 -msgid "in / s²" +#: src/emc/usr_intf/stepconf/base.glade:430 +msgid "D_river type:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1692 -msgid "Steps / in" +#: src/emc/usr_intf/stepconf/base.glade:545 +msgid "" +"Driver characteristics: (Multiply by 1000 for times specified in µs or " +"microseconds)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:2202 -#: src/emc/usr_intf/pncconf/pncconf.py:8893 -#, python-format -msgid "%s Axis Test" +#: src/emc/usr_intf/stepconf/base.glade:573 +msgid "Base Period Maximum _Jitter:" +msgstr "" + +#: src/emc/usr_intf/stepconf/base.glade:630 +msgid "One Parport" +msgstr "" + +#: src/emc/usr_intf/stepconf/base.glade:646 +msgid "Two Parports" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:8 -#: src/emc/usr_intf/stepconf/stepconf.glade:21 +#: src/emc/usr_intf/stepconf/base.glade:663 #, fuzzy -msgid "LinuxCNC Stepper Mill Configuration" -msgstr "樣辦配置" +msgid "Three Parports" +msgstr "第三個並行埠地址:" -#: src/emc/usr_intf/stepconf/stepconf.glade:22 -msgid "" -"This program creates configuration files (.ini and .hal) for \"step and " -"direction\" milling machines and lathes connected to the PC parallel port.\n" -"\n" -"Stepconf requires a minimum 800 X 600 display resolution.\n" -"You may need to collapse the 'Driver Timing Settings' and \n" -"Parallel Port Settings' expanders." +#: src/emc/usr_intf/stepconf/base.glade:698 +msgid "Min Base Period:" +msgstr "" + +#: src/emc/usr_intf/stepconf/base.glade:735 +msgid "Max step rate:" +msgstr "" + +#: src/emc/usr_intf/stepconf/base.glade:870 +msgid "MM" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:51 +#: src/emc/usr_intf/stepconf/start.glade:11 msgid "Create a _new configuration" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:69 -#: src/emc/usr_intf/pncconf/pncconf.glade:70 +#: src/emc/usr_intf/stepconf/start.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:130 msgid "Modify a configuration already created with this program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:87 -#: src/emc/usr_intf/pncconf/pncconf.glade:88 +#: src/emc/usr_intf/stepconf/start.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:118 msgid "Do you wish to:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:99 +#: src/emc/usr_intf/stepconf/start.glade:61 #: src/emc/usr_intf/pncconf/pncconf.glade:100 msgid "" "If you have made modifications to this configuration outside this program, " "they will be lost when you select \"Modify a configuration\"" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:116 +#: src/emc/usr_intf/stepconf/start.glade:76 msgid "Create a desktop _shortcut (symlink) to configuration files." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:133 +#: src/emc/usr_intf/stepconf/start.glade:93 msgid "Create a desktop _launcher to start LinuxCNC with this configuration." msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:169 -#: src/emc/usr_intf/pncconf/pncconf.glade:175 -msgid "Basic machine information" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:327 -msgid "Step _Time:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:356 -#: src/emc/usr_intf/stepconf/stepconf.glade:402 -#: src/emc/usr_intf/stepconf/stepconf.glade:449 -#: src/emc/usr_intf/stepconf/stepconf.glade:494 -#: src/emc/usr_intf/stepconf/stepconf.glade:909 -#: src/emc/usr_intf/pncconf/pncconf.glade:458 -#: src/emc/usr_intf/pncconf/pncconf.glade:8256 -msgid "ns" -msgstr "" +#: src/emc/usr_intf/stepconf/start.glade:124 +#, fuzzy +msgid "Create simulated hardware configuration." +msgstr "創建一個新的配置" -#: src/emc/usr_intf/stepconf/stepconf.glade:369 -msgid "Step _Space:" +#: src/emc/usr_intf/stepconf/pport1.glade:35 +msgid "Xylotex" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:417 -msgid "Direction _Hold:" +#: src/emc/usr_intf/stepconf/pport1.glade:38 +msgid "TB6560 3 axes" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:464 -msgid "_Direction Setup:" +#: src/emc/usr_intf/stepconf/pport1.glade:41 +msgid "TB6560 4 axes" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:512 -msgid "Driver Timing Settings" +#: src/emc/usr_intf/stepconf/pport1.glade:59 +#: src/emc/usr_intf/pncconf/pncconf.glade:62915 +msgid "Pin _1:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:538 -msgid "First Parport _Base Address:" +#: src/emc/usr_intf/stepconf/pport1.glade:74 +#: src/emc/usr_intf/stepconf/pport2.glade:768 +#: src/emc/usr_intf/pncconf/pncconf.glade:61685 +#: src/emc/usr_intf/pncconf/pncconf.glade:62901 +msgid "Pin _2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:564 -msgid " Out" +#: src/emc/usr_intf/stepconf/pport1.glade:89 +#: src/emc/usr_intf/stepconf/pport2.glade:814 +#: src/emc/usr_intf/pncconf/pncconf.glade:61668 +#: src/emc/usr_intf/pncconf/pncconf.glade:62887 +msgid "Pin _3:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:575 -#: src/emc/usr_intf/stepconf/stepconf.glade:591 -msgid "" -"Out\n" -"In" +#: src/emc/usr_intf/stepconf/pport1.glade:104 +#: src/emc/usr_intf/stepconf/pport2.glade:860 +#: src/emc/usr_intf/pncconf/pncconf.glade:61651 +#: src/emc/usr_intf/pncconf/pncconf.glade:62873 +msgid "Pin _4:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:633 -msgid "S_econd Parport Address:" +#: src/emc/usr_intf/stepconf/pport1.glade:119 +#: src/emc/usr_intf/stepconf/pport2.glade:906 +#: src/emc/usr_intf/pncconf/pncconf.glade:61634 +#: src/emc/usr_intf/pncconf/pncconf.glade:62859 +msgid "Pin _5:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:650 -msgid "T_hird Parport Address:" +#: src/emc/usr_intf/stepconf/pport1.glade:134 +#: src/emc/usr_intf/stepconf/pport2.glade:952 +#: src/emc/usr_intf/pncconf/pncconf.glade:61617 +#: src/emc/usr_intf/pncconf/pncconf.glade:62845 +msgid "Pin _6:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:667 -msgid " Parallel Port Settings" +#: src/emc/usr_intf/stepconf/pport1.glade:149 +#: src/emc/usr_intf/stepconf/pport2.glade:998 +#: src/emc/usr_intf/pncconf/pncconf.glade:61600 +#: src/emc/usr_intf/pncconf/pncconf.glade:62831 +msgid "Pin _7:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:684 -msgid "" -"_Test Base\n" -"Period Jitter " +#: src/emc/usr_intf/stepconf/pport1.glade:164 +#: src/emc/usr_intf/stepconf/pport2.glade:1044 +#: src/emc/usr_intf/pncconf/pncconf.glade:61583 +#: src/emc/usr_intf/pncconf/pncconf.glade:62817 +msgid "Pin _8:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:703 -msgid "Machine _Name:" +#: src/emc/usr_intf/stepconf/pport1.glade:179 +#: src/emc/usr_intf/stepconf/pport2.glade:1090 +#: src/emc/usr_intf/pncconf/pncconf.glade:61566 +#: src/emc/usr_intf/pncconf/pncconf.glade:62803 +msgid "Pin _9:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:716 -msgid "_Axis configuration:" +#: src/emc/usr_intf/stepconf/pport1.glade:194 +#: src/emc/usr_intf/stepconf/pport2.glade:1137 +#: src/emc/usr_intf/pncconf/pncconf.glade:62789 +msgid "_Pin 14:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:730 -msgid "Machine _units:" +#: src/emc/usr_intf/stepconf/pport1.glade:209 +#: src/emc/usr_intf/stepconf/pport2.glade:1185 +#: src/emc/usr_intf/pncconf/pncconf.glade:62775 +msgid "P_in 16:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:744 -#: src/emc/usr_intf/pncconf/pncconf.glade:246 -msgid "Configuration directory:" +#: src/emc/usr_intf/stepconf/pport1.glade:224 +#: src/emc/usr_intf/stepconf/pport2.glade:1233 +#: src/emc/usr_intf/pncconf/pncconf.glade:62761 +msgid "Pi_n 17:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:757 -msgid "D_river type:" +#: src/emc/usr_intf/stepconf/pport1.glade:470 +#: src/emc/usr_intf/stepconf/pport2.glade:692 +msgid "Outputs (PC to Mill):" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:785 -#: src/emc/usr_intf/pncconf/pncconf.glade:326 -msgid "" -"Inch\n" -"Millimeter" +#: src/emc/usr_intf/stepconf/pport1.glade:483 +#: src/emc/usr_intf/stepconf/pport2.glade:427 +#: src/emc/usr_intf/pncconf/pncconf.glade:61701 +msgid "Pin 1_0:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:800 -#: src/emc/usr_intf/pncconf/pncconf.glade:291 -msgid "" -"XYZ\n" -"XYZA\n" -"XZ (Lathe)" +#: src/emc/usr_intf/stepconf/pport1.glade:500 +#: src/emc/usr_intf/stepconf/pport2.glade:475 +#: src/emc/usr_intf/pncconf/pncconf.glade:61717 +msgid "Pin 1_1:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:847 -msgid "" -"Driver characteristics: (Multiply by 1000 for times specified in µs or " -"microseconds)\n" -" Additional signal conditioning or isolation such as optocouplers " -"and RC filters\n" -" can impose timing constraints of their own, in addition to those of " -"the driver." +#: src/emc/usr_intf/stepconf/pport1.glade:517 +#: src/emc/usr_intf/stepconf/pport2.glade:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:61733 +msgid "Pin 1_2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:875 -msgid "Base Period Maximum _Jitter:" +#: src/emc/usr_intf/stepconf/pport1.glade:534 +#: src/emc/usr_intf/stepconf/pport2.glade:571 +#: src/emc/usr_intf/pncconf/pncconf.glade:61749 +msgid "Pin 1_3:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:924 -msgid "Max step rate:" +#: src/emc/usr_intf/stepconf/pport1.glade:551 +#: src/emc/usr_intf/stepconf/pport2.glade:619 +#: src/emc/usr_intf/pncconf/pncconf.glade:61765 +msgid "Pin 1_5:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:940 -msgid "Min Base Period:" +#: src/emc/usr_intf/stepconf/pport1.glade:590 +#: src/emc/usr_intf/stepconf/pport2.glade:16 +msgid "Inputs (Mill to PC):" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:956 -msgid "" -"_Onscreen prompt for\n" -"tool change" +#: src/emc/usr_intf/stepconf/pport1.glade:618 +#: src/emc/usr_intf/stepconf/pport1.glade:632 +#: src/emc/usr_intf/stepconf/pport2.glade:29 +#: src/emc/usr_intf/stepconf/pport2.glade:702 +#: src/emc/usr_intf/pncconf/pncconf.glade:62335 +#: src/emc/usr_intf/pncconf/pncconf.glade:62348 +msgid "Invert" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1015 -msgid "Advanced Configuration Options" +#: src/emc/usr_intf/stepconf/pport1.glade:1018 +msgid "Output pinout presets:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1033 -msgid "Include Halui user interface component" -msgstr "" +#: src/emc/usr_intf/stepconf/pport1.glade:1096 +#, fuzzy +msgid "Parport _Base Address:" +msgstr "第一個並行埠地址:" -#: src/emc/usr_intf/stepconf/stepconf.glade:1074 -#: src/emc/usr_intf/pncconf/pncconf.glade:6745 -msgid "Blank program" -msgstr "" +#: src/emc/usr_intf/stepconf/pport1.glade:1132 +#, fuzzy +msgid "Preset" +msgstr "重置" -#: src/emc/usr_intf/stepconf/stepconf.glade:1089 -#: src/emc/usr_intf/pncconf/pncconf.glade:6760 -msgid "Spindle speed display " +#: src/emc/usr_intf/stepconf/pport2.glade:47 +msgid "Pin 2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1105 -#: src/emc/usr_intf/stepconf/stepconf.glade:1543 -#: src/emc/usr_intf/pncconf/pncconf.glade:6791 -#: src/emc/usr_intf/pncconf/pncconf.glade:7112 -#: src/emc/usr_intf/pncconf/pncconf.glade:59393 -msgid "Existing custom program" +#: src/emc/usr_intf/stepconf/pport2.glade:94 +msgid "Pin 3:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1120 -#: src/emc/usr_intf/stepconf/stepconf.glade:1559 -#: src/emc/usr_intf/pncconf/pncconf.glade:6806 -#: src/emc/usr_intf/pncconf/pncconf.glade:59409 -msgid "Include connections to HAL" +#: src/emc/usr_intf/stepconf/pport2.glade:141 +msgid "Pin 4:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1154 -#: src/emc/usr_intf/pncconf/pncconf.glade:6989 -#: src/emc/usr_intf/pncconf/pncconf.glade:7537 -msgid "" -"_Display\n" -"sample\n" -"panel" +#: src/emc/usr_intf/stepconf/pport2.glade:188 +msgid "Pin 5:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1188 -#: src/emc/usr_intf/pncconf/pncconf.glade:7048 -msgid "Include custom PyVCP GUI panel" +#: src/emc/usr_intf/stepconf/pport2.glade:235 +msgid "Pin 6:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1321 -#: src/emc/usr_intf/pncconf/pncconf.glade:59199 -msgid " Number of analog (float) out pins:" +#: src/emc/usr_intf/stepconf/pport2.glade:282 +msgid "Pin 7:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1335 -#: src/emc/usr_intf/pncconf/pncconf.glade:59184 -msgid " Number of analog (float) in pins:" +#: src/emc/usr_intf/stepconf/pport2.glade:329 +msgid "Pin 8:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1349 -#: src/emc/usr_intf/pncconf/pncconf.glade:59169 -msgid " Number of analog (s32) out pins:" +#: src/emc/usr_intf/stepconf/pport2.glade:376 +msgid "Pin 9:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1363 -#: src/emc/usr_intf/pncconf/pncconf.glade:59153 -msgid " Number of analog (s32) in pins:" +#: src/emc/usr_intf/stepconf/pport2.glade:721 +msgid "Pin _1: " msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1378 -msgid "Number of digital out pins:" -msgstr "" +#: src/emc/usr_intf/stepconf/pport2.glade:1431 +#, fuzzy +msgid "Out" +msgstr "切割" -#: src/emc/usr_intf/stepconf/stepconf.glade:1403 -msgid "Number of digital in pins:" -msgstr "" +#: src/emc/usr_intf/stepconf/pport2.glade:1434 +#, fuzzy +msgid "In" +msgstr "反轉" -#: src/emc/usr_intf/stepconf/stepconf.glade:1414 -msgid "setup number of external pins" +#: src/emc/usr_intf/stepconf/spindle.glade:23 +msgid "Use spindle-at-speed:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1429 -#: src/emc/usr_intf/pncconf/pncconf.glade:59213 -msgid "Include modbus master support" +#: src/emc/usr_intf/stepconf/spindle.glade:64 +msgid "Speed display filter gain:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1500 -#: src/emc/usr_intf/pncconf/pncconf.glade:59333 -msgid "Blank ladder program" +#: src/emc/usr_intf/stepconf/spindle.glade:99 +msgid "Calibration:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1513 -#: src/emc/usr_intf/pncconf/pncconf.glade:59346 -msgid "Estop ladder program" +#: src/emc/usr_intf/stepconf/spindle.glade:113 +msgid "_Speed 1:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1527 -#: src/emc/usr_intf/pncconf/pncconf.glade:59377 -msgid "Serial modbus program" +#: src/emc/usr_intf/stepconf/spindle.glade:129 +msgid "_PWM 1:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1592 -#: src/emc/usr_intf/pncconf/pncconf.glade:59443 -msgid "" -"Edit ladder\n" -"program" +#: src/emc/usr_intf/stepconf/spindle.glade:148 +msgid "S_peed 2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1628 -#: src/emc/usr_intf/pncconf/pncconf.glade:59479 -msgid "Include _Classicladder PLC" +#: src/emc/usr_intf/stepconf/spindle.glade:164 +msgid "P_WM 2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1653 -msgid "Parallel Port Setup" +#: src/emc/usr_intf/stepconf/spindle.glade:183 +msgid "PWM _Rate:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1760 -#: src/emc/usr_intf/pncconf/pncconf.glade:54010 -msgid "Pin _1:" +#: src/emc/usr_intf/stepconf/spindle.glade:285 +msgid "_Cycles per revolution:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1774 -#: src/emc/usr_intf/pncconf/pncconf.glade:54024 -#: src/emc/usr_intf/pncconf/pncconf.glade:55239 -msgid "Pin _2:" +#: src/emc/usr_intf/stepconf/spindle.glade:347 +msgid "Enter 0 Hz for \"PDM\" mode" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1788 -#: src/emc/usr_intf/pncconf/pncconf.glade:54038 -#: src/emc/usr_intf/pncconf/pncconf.glade:55256 -msgid "Pin _3:" +#: src/emc/usr_intf/stepconf/spindle.glade:360 +msgid "Scale %" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1802 -#: src/emc/usr_intf/pncconf/pncconf.glade:54052 -#: src/emc/usr_intf/pncconf/pncconf.glade:55273 -msgid "Pin _4:" +#: src/emc/usr_intf/stepconf/options.glade:50 +msgid "Include Halui user interface component" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1816 -#: src/emc/usr_intf/pncconf/pncconf.glade:54066 -#: src/emc/usr_intf/pncconf/pncconf.glade:55290 -msgid "Pin _5:" +#: src/emc/usr_intf/stepconf/options.glade:102 +#: src/emc/usr_intf/pncconf/pncconf.glade:6753 +msgid "Blank program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1830 -#: src/emc/usr_intf/pncconf/pncconf.glade:54080 -#: src/emc/usr_intf/pncconf/pncconf.glade:55307 -msgid "Pin _6:" +#: src/emc/usr_intf/stepconf/options.glade:119 +#: src/emc/usr_intf/pncconf/pncconf.glade:6768 +msgid "Spindle speed display " msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1844 -#: src/emc/usr_intf/pncconf/pncconf.glade:54094 -#: src/emc/usr_intf/pncconf/pncconf.glade:55324 -msgid "Pin _7:" +#: src/emc/usr_intf/stepconf/options.glade:136 +#: src/emc/usr_intf/stepconf/options.glade:671 +#: src/emc/usr_intf/pncconf/pncconf.glade:6799 +#: src/emc/usr_intf/pncconf/pncconf.glade:7120 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Existing custom program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1858 -#: src/emc/usr_intf/pncconf/pncconf.glade:54108 -#: src/emc/usr_intf/pncconf/pncconf.glade:55341 -msgid "Pin _8:" +#: src/emc/usr_intf/stepconf/options.glade:153 +#: src/emc/usr_intf/stepconf/options.glade:688 +#: src/emc/usr_intf/pncconf/pncconf.glade:6814 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include connections to HAL" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1872 -#: src/emc/usr_intf/pncconf/pncconf.glade:54122 -#: src/emc/usr_intf/pncconf/pncconf.glade:55358 -msgid "Pin _9:" +#: src/emc/usr_intf/stepconf/options.glade:202 +#: src/emc/usr_intf/pncconf/pncconf.glade:6997 +#: src/emc/usr_intf/pncconf/pncconf.glade:7545 +msgid "" +"_Display\n" +"sample\n" +"panel" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1886 -#: src/emc/usr_intf/pncconf/pncconf.glade:54136 -msgid "_Pin 14:" +#: src/emc/usr_intf/stepconf/options.glade:243 +#: src/emc/usr_intf/pncconf/pncconf.glade:7056 +msgid "Include custom PyVCP GUI panel" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1900 -#: src/emc/usr_intf/pncconf/pncconf.glade:54150 -msgid "P_in 16:" +#: src/emc/usr_intf/stepconf/options.glade:414 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (float) out pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1914 -#: src/emc/usr_intf/pncconf/pncconf.glade:54164 -msgid "Pi_n 17:" +#: src/emc/usr_intf/stepconf/options.glade:429 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (float) in pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2258 -msgid "Outputs (PC to Mill):" +#: src/emc/usr_intf/stepconf/options.glade:444 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (s32) out pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2270 -#: src/emc/usr_intf/pncconf/pncconf.glade:55222 -msgid "Pin 1_0:" +#: src/emc/usr_intf/stepconf/options.glade:459 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (s32) in pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2286 -#: src/emc/usr_intf/pncconf/pncconf.glade:55206 -msgid "Pin 1_1:" +#: src/emc/usr_intf/stepconf/options.glade:475 +msgid "Number of digital out pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2302 -#: src/emc/usr_intf/pncconf/pncconf.glade:55190 -msgid "Pin 1_2:" +#: src/emc/usr_intf/stepconf/options.glade:506 +msgid "Number of digital in pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2318 -#: src/emc/usr_intf/pncconf/pncconf.glade:55174 -msgid "Pin 1_3:" +#: src/emc/usr_intf/stepconf/options.glade:518 +msgid "setup number of external pins" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2334 -#: src/emc/usr_intf/pncconf/pncconf.glade:55158 -msgid "Pin 1_5:" +#: src/emc/usr_intf/stepconf/options.glade:533 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include modbus master support" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2399 -msgid "Inputs (Mill to PC):" +#: src/emc/usr_intf/stepconf/options.glade:625 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Blank ladder program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2425 -#: src/emc/usr_intf/stepconf/stepconf.glade:2438 -#: src/emc/usr_intf/pncconf/pncconf.glade:54578 -#: src/emc/usr_intf/pncconf/pncconf.glade:54591 -msgid "Invert" +#: src/emc/usr_intf/stepconf/options.glade:638 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Estop ladder program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2887 -msgid "_Sherline Outputs" +#: src/emc/usr_intf/stepconf/options.glade:654 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Serial modbus program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2905 -msgid "_Xylotex Outputs" +#: src/emc/usr_intf/stepconf/options.glade:740 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"Edit ladder\n" +"program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2923 -msgid "Output pinout presets:" +#: src/emc/usr_intf/stepconf/options.glade:781 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include _Classicladder PLC" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3022 -#: src/emc/usr_intf/pncconf/pncconf.glade:57970 -msgid "X Axis Configuration" +#: src/emc/usr_intf/stepconf/options.glade:802 +msgid "_Onscreen prompt for manual tool change" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3090 +#: src/emc/usr_intf/stepconf/axisx.glade:31 +#: src/emc/usr_intf/stepconf/axisy.glade:31 +#: src/emc/usr_intf/stepconf/axisz.glade:31 +#: src/emc/usr_intf/stepconf/axisa.glade:45 msgid "_Motor steps per revolution:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3103 +#: src/emc/usr_intf/stepconf/axisx.glade:45 +#: src/emc/usr_intf/stepconf/axisy.glade:44 +#: src/emc/usr_intf/stepconf/axisz.glade:44 +#: src/emc/usr_intf/stepconf/axisa.glade:58 msgid "_Driver Microstepping:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3118 +#: src/emc/usr_intf/stepconf/axisx.glade:61 +#: src/emc/usr_intf/stepconf/axisy.glade:59 +#: src/emc/usr_intf/stepconf/axisz.glade:59 +#: src/emc/usr_intf/stepconf/axisa.glade:73 msgid "_Pulley teeth (Motor:Leadscrew):" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3133 +#: src/emc/usr_intf/stepconf/axisx.glade:77 +#: src/emc/usr_intf/stepconf/axisy.glade:74 +#: src/emc/usr_intf/stepconf/axisz.glade:74 +#: src/emc/usr_intf/stepconf/axisa.glade:88 msgid "_Leadscrew Pitch:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3148 -#: src/emc/usr_intf/pncconf/pncconf.glade:57858 +#: src/emc/usr_intf/stepconf/axisx.glade:93 +#: src/emc/usr_intf/stepconf/axisy.glade:89 +#: src/emc/usr_intf/stepconf/axisz.glade:89 +#: src/emc/usr_intf/stepconf/axisa.glade:103 +#: src/emc/usr_intf/pncconf/pncconf.glade:64687 msgid "Maximum _Velocity:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3163 -#: src/emc/usr_intf/pncconf/pncconf.glade:57843 +#: src/emc/usr_intf/stepconf/axisx.glade:109 +#: src/emc/usr_intf/stepconf/axisy.glade:104 +#: src/emc/usr_intf/stepconf/axisz.glade:104 +#: src/emc/usr_intf/stepconf/axisa.glade:118 +#: src/emc/usr_intf/pncconf/pncconf.glade:64702 msgid "Maximum _Acceleration:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3178 -#: src/emc/usr_intf/pncconf/pncconf.glade:67063 +#: src/emc/usr_intf/stepconf/axisx.glade:125 +#: src/emc/usr_intf/stepconf/axisy.glade:119 +#: src/emc/usr_intf/stepconf/axisz.glade:119 +#: src/emc/usr_intf/stepconf/axisa.glade:133 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Time to accelerate to max speed:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3193 +#: src/emc/usr_intf/stepconf/axisx.glade:141 +#: src/emc/usr_intf/stepconf/axisy.glade:134 +#: src/emc/usr_intf/stepconf/axisz.glade:134 +#: src/emc/usr_intf/stepconf/axisa.glade:148 msgid "Distance to accelerate to max speed:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3292 -#: src/emc/usr_intf/pncconf/pncconf.glade:67036 +#: src/emc/usr_intf/stepconf/axisx.glade:271 +#: src/emc/usr_intf/stepconf/axisy.glade:263 +#: src/emc/usr_intf/stepconf/axisz.glade:263 +#: src/emc/usr_intf/stepconf/axisa.glade:277 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Pulse rate at max speed:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3362 +#: src/emc/usr_intf/stepconf/axisx.glade:342 +#: src/emc/usr_intf/stepconf/axisy.glade:334 +#: src/emc/usr_intf/stepconf/axisz.glade:334 +#: src/emc/usr_intf/stepconf/axisa.glade:348 msgid "_Home location:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3377 +#: src/emc/usr_intf/stepconf/axisx.glade:358 +#: src/emc/usr_intf/stepconf/axisy.glade:349 +#: src/emc/usr_intf/stepconf/axisz.glade:349 +#: src/emc/usr_intf/stepconf/axisa.glade:363 msgid "Home _Switch location:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3392 +#: src/emc/usr_intf/stepconf/axisx.glade:374 +#: src/emc/usr_intf/stepconf/axisy.glade:364 +#: src/emc/usr_intf/stepconf/axisz.glade:364 +#: src/emc/usr_intf/stepconf/axisa.glade:378 msgid "Home Sear_ch velocity:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3407 +#: src/emc/usr_intf/stepconf/axisx.glade:390 +#: src/emc/usr_intf/stepconf/axisy.glade:379 +#: src/emc/usr_intf/stepconf/axisz.glade:379 +#: src/emc/usr_intf/stepconf/axisa.glade:393 msgid "Home La_tch direction:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3420 -#: src/emc/usr_intf/pncconf/pncconf.glade:66232 -#: src/emc/usr_intf/pncconf/pncconf.glade:66274 -#: src/emc/usr_intf/pncconf/pncconf.glade:66505 -#: src/emc/usr_intf/pncconf/pncconf.glade:66570 +#: src/emc/usr_intf/stepconf/axisx.glade:404 +#: src/emc/usr_intf/stepconf/axisy.glade:393 +#: src/emc/usr_intf/stepconf/axisz.glade:393 +#: src/emc/usr_intf/stepconf/axisa.glade:407 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "_:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3437 -#: src/emc/usr_intf/pncconf/pncconf.glade:58536 -msgid "" -"Same\n" -"Opposite" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3492 +#: src/emc/usr_intf/stepconf/axisx.glade:498 +#: src/emc/usr_intf/stepconf/axisy.glade:486 +#: src/emc/usr_intf/stepconf/axisz.glade:486 +#: src/emc/usr_intf/stepconf/axisa.glade:500 msgid "Tab_le travel:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3519 +#: src/emc/usr_intf/stepconf/axisx.glade:531 +#: src/emc/usr_intf/stepconf/axisy.glade:518 +#: src/emc/usr_intf/stepconf/axisz.glade:518 +#: src/emc/usr_intf/stepconf/axisa.glade:532 msgid "t_o" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3649 +#: src/emc/usr_intf/stepconf/axisx.glade:677 +#: src/emc/usr_intf/stepconf/axisy.glade:663 +#: src/emc/usr_intf/stepconf/axisz.glade:663 +#: src/emc/usr_intf/stepconf/axisa.glade:677 msgid "s" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3703 +#: src/emc/usr_intf/stepconf/axisx.glade:738 +#: src/emc/usr_intf/stepconf/axisy.glade:724 +#: src/emc/usr_intf/stepconf/axisz.glade:724 +#: src/emc/usr_intf/stepconf/axisa.glade:738 msgid "T_est this axis" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3729 +#: src/emc/usr_intf/stepconf/axisx.glade:765 +#: src/emc/usr_intf/stepconf/axisy.glade:751 +#: src/emc/usr_intf/stepconf/axisz.glade:751 +#: src/emc/usr_intf/stepconf/axisa.glade:765 msgid "Axis SCALE:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3765 -msgid "Spindle Configuration" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3785 -msgid "Use spindle-at-speed:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3841 -msgid "Speed display filter gain:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3870 -msgid "Calibration:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3883 -msgid "_Speed 1:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3898 -msgid "_PWM 1:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3916 -msgid "S_peed 2:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3931 -msgid "P_WM 2:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:3949 -msgid "PWM _Rate:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4025 -msgid "_Cycles per revolution:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4079 -msgid "Enter 0 Hz for \"PDM\" mode" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4091 -msgid "Scale %" +#: src/emc/usr_intf/stepconf/axisx.glade:833 +#: src/emc/usr_intf/stepconf/axisy.glade:819 +#: src/emc/usr_intf/stepconf/axisz.glade:819 +#: src/emc/usr_intf/stepconf/axisa.glade:12 +msgid "Same" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:60002 -msgid "Machine configuration complete" -msgstr "" +#: src/emc/usr_intf/stepconf/axisx.glade:836 +#: src/emc/usr_intf/stepconf/axisy.glade:822 +#: src/emc/usr_intf/stepconf/axisz.glade:822 +#: src/emc/usr_intf/stepconf/axisa.glade:15 +#, fuzzy +msgid "Opposite" +msgstr "正" -#: src/emc/usr_intf/stepconf/stepconf.glade:4114 -#: src/emc/usr_intf/pncconf/pncconf.glade:60003 +#: src/emc/usr_intf/stepconf/finished.glade:6 msgid "" -"All the necessary information has now been gathered. Click \"Apply\" to " -"write your configuration files to disk.\n" -"If you experience lockups while running LinuxCNC, you will need to decrease " -"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" +"All the necessary information has now been gathered. \n" +"Click \"Done\" to write your configuration files to disk.\n" "\n" -"If you experience lost steps while running LinuxCNC, first verify that you " -"entered the proper timings for your stepper drivers. If that does not fix " -"the problem, then run a more thorough latency test as described on the " -"linuxcnc.org wiki:\n" +"If you experience lockups while running LinuxCNC:\n" +"-you will need to decrease the maximum velocity which will have the effect " +"of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC:\n" +"-first verify that you entered the proper timings for your stepper " +"drivers. \n" +"-then run a more thorough latency test as described on the linuxcnc.org " +"wiki.\n" " http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" "\n" -"If you experience the \"Unexpected Realtime Delay\" message, run a more " -"thorough latency test as described on the linuxcnc.org wiki: \n" +"If you experience the \"Unexpected Realtime Delay\" message:\n" +"-run a more thorough latency test as described on the linuxcnc.org wiki: \n" " http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4160 -#: src/emc/usr_intf/pncconf/pncconf.glade:60462 -#: src/emc/usr_intf/pncconf/pncconf.glade:61557 -#: src/emc/usr_intf/pncconf/pncconf.glade:62650 -#: src/emc/usr_intf/pncconf/pncconf.glade:63743 -#: src/emc/usr_intf/pncconf/pncconf.glade:64842 -msgid "Acceleration:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4174 -#: src/emc/usr_intf/pncconf/pncconf.glade:60231 -#: src/emc/usr_intf/pncconf/pncconf.glade:60695 -#: src/emc/usr_intf/pncconf/pncconf.glade:61788 -#: src/emc/usr_intf/pncconf/pncconf.glade:62881 -#: src/emc/usr_intf/pncconf/pncconf.glade:63974 -#: src/emc/usr_intf/pncconf/pncconf.glade:64954 -msgid "Jog:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4188 -#: src/emc/usr_intf/pncconf/pncconf.glade:60681 -#: src/emc/usr_intf/pncconf/pncconf.glade:61774 -#: src/emc/usr_intf/pncconf/pncconf.glade:62867 -#: src/emc/usr_intf/pncconf/pncconf.glade:63960 -msgid "Test Area:" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4217 -msgid "mm/s^2" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4253 -msgid "mm/s" -msgstr "" - -#: src/emc/usr_intf/stepconf/stepconf.glade:4329 -#: src/emc/usr_intf/pncconf/pncconf.glade:60620 -#: src/emc/usr_intf/pncconf/pncconf.glade:61713 -#: src/emc/usr_intf/pncconf/pncconf.glade:62806 -#: src/emc/usr_intf/pncconf/pncconf.glade:63899 -#: src/emc/usr_intf/pncconf/pncconf.glade:65066 -msgid "" -"±\n" -"+\n" -"-\n" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.py:79 +#: src/emc/usr_intf/pncconf/pncconf.py:81 msgid "" "PNCconf encountered an error. The following information may be useful in " "troubleshooting:\n" @@ -7047,1145 +9158,1315 @@ msgid "" msgstr "" #: src/emc/usr_intf/pncconf/pncconf.py:149 +msgid "Keling 4030" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:151 msgid "Not Used" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:149 -#: src/emc/usr_intf/pncconf/pncconf.py:150 +#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:176 msgid "Dummy" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:150 +#: src/emc/usr_intf/pncconf/pncconf.py:152 msgid "8i20 Servo Drive" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:153 #, fuzzy msgid "POT Output" msgstr "輸出" -#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:153 #, fuzzy msgid "POT Enable" msgstr "啟用" -#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:153 #, fuzzy msgid "POT Direction" msgstr "掃描方向" -#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:154 msgid "GPIO Input" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:154 msgid "GPIO Output" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:154 msgid "GPIO O Drain" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 +#: src/emc/usr_intf/pncconf/pncconf.py:155 msgid "Quad Encoder-A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 +#: src/emc/usr_intf/pncconf/pncconf.py:155 msgid "Quad Encoder-B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 +#: src/emc/usr_intf/pncconf/pncconf.py:155 msgid "Quad Encoder-I" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 +#: src/emc/usr_intf/pncconf/pncconf.py:155 msgid "Quad Encoder-M" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 #, fuzzy msgid "Muxed Encoder 0" msgstr "未使用的編碼器" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 #, fuzzy msgid "Muxed Encoder 1" msgstr "未使用的編碼器" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 msgid "muxed enc" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 msgid "mux enc mask" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:156 #, fuzzy msgid "mux select" msgstr "選擇歸零" -#: src/emc/usr_intf/pncconf/pncconf.py:155 +#: src/emc/usr_intf/pncconf/pncconf.py:157 #, fuzzy msgid "Resolver 0 Encoder" msgstr "復位編碼器" -#: src/emc/usr_intf/pncconf/pncconf.py:155 +#: src/emc/usr_intf/pncconf/pncconf.py:157 #, fuzzy msgid "Resolver 1 Encoder" msgstr "復位編碼器" -#: src/emc/usr_intf/pncconf/pncconf.py:155 +#: src/emc/usr_intf/pncconf/pncconf.py:157 #, fuzzy msgid "Resolver 2 Encoder" msgstr "復位編碼器" -#: src/emc/usr_intf/pncconf/pncconf.py:156 +#: src/emc/usr_intf/pncconf/pncconf.py:158 #, fuzzy msgid "Resolver 3 Encoder" msgstr "復位編碼器" -#: src/emc/usr_intf/pncconf/pncconf.py:156 +#: src/emc/usr_intf/pncconf/pncconf.py:158 #, fuzzy msgid "Resolver 4 Encoder" msgstr "復位編碼器" -#: src/emc/usr_intf/pncconf/pncconf.py:156 +#: src/emc/usr_intf/pncconf/pncconf.py:158 #, fuzzy msgid "Resolver 5 Encoder" msgstr "復位編碼器" -#: src/emc/usr_intf/pncconf/pncconf.py:157 +#: src/emc/usr_intf/pncconf/pncconf.py:159 msgid "Step Gen-A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 +#: src/emc/usr_intf/pncconf/pncconf.py:159 msgid "Dir Gen-B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 +#: src/emc/usr_intf/pncconf/pncconf.py:159 msgid "Step/Dir Gen-C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:157 +#: src/emc/usr_intf/pncconf/pncconf.py:159 msgid "Step/Dir Gen-D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:158 +#: src/emc/usr_intf/pncconf/pncconf.py:160 msgid "Step/Dir Gen-E" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:158 +#: src/emc/usr_intf/pncconf/pncconf.py:160 msgid "Step/dir Gen-F" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 +#: src/emc/usr_intf/pncconf/pncconf.py:161 msgid "Pulse Width Gen-P" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 +#: src/emc/usr_intf/pncconf/pncconf.py:161 msgid "Pulse Width Gen-D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 +#: src/emc/usr_intf/pncconf/pncconf.py:161 msgid "Pulse Width Gen-E" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 +#: src/emc/usr_intf/pncconf/pncconf.py:162 msgid "Pulse Density Gen-P" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 +#: src/emc/usr_intf/pncconf/pncconf.py:162 msgid "Pulse Density Gen-D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 +#: src/emc/usr_intf/pncconf/pncconf.py:162 msgid "Pulse Density Gen-E" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 +#: src/emc/usr_intf/pncconf/pncconf.py:163 msgid "Up/Down Mode -Up" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 +#: src/emc/usr_intf/pncconf/pncconf.py:163 msgid "Up/Down Mode-Down" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 +#: src/emc/usr_intf/pncconf/pncconf.py:163 msgid "Up/Down Mode-Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 +#: src/emc/usr_intf/pncconf/pncconf.py:164 msgid "Motor Phase A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 +#: src/emc/usr_intf/pncconf/pncconf.py:164 msgid "Motor Phase B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 +#: src/emc/usr_intf/pncconf/pncconf.py:164 msgid "Motor Phase C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Phase A Not" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Phase B Not" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Phase C Not" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 +#: src/emc/usr_intf/pncconf/pncconf.py:165 msgid "Motor Fault" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:165 +#: src/emc/usr_intf/pncconf/pncconf.py:168 msgid "SMARTSERIAL-P0-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P0-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P0-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P1-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P1-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 +#: src/emc/usr_intf/pncconf/pncconf.py:169 msgid "SMARTSERIAL-P1-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P2-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P2-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P2-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P3-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P3-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 +#: src/emc/usr_intf/pncconf/pncconf.py:170 msgid "SMARTSERIAL-P3-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P4-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P4-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P4-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P5-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P5-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 +#: src/emc/usr_intf/pncconf/pncconf.py:171 msgid "SMARTSERIAL-P5-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P6-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P6-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P6-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P7-TX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P7-RX" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 +#: src/emc/usr_intf/pncconf/pncconf.py:172 msgid "SMARTSERIAL-P7-EN" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #1" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS0)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #2" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS2)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS3)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 I/O (SS0)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 Analog (SS1)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 I/O (SS3)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 Analog (SS4)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:176 +#, fuzzy +msgid "Analog Input" +msgstr "模擬控制" + +#: src/emc/usr_intf/pncconf/pncconf.py:277 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +msgid "Axis Selection" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "" +"7i64-Input\n" +"P3 and P4" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "" +"7i64-Output\n" +"P2 and P5" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "7i64-Analog In" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P2" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P3" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB3" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB2" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:309 +msgid "" +"7i71-Output\n" +"TB3" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:309 +msgid "" +"7i71-Output\n" +"TB2" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-I/O\n" +"TB6" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-I/O\n" +"TB5" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-Analog Output\n" +"TB4" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:420 +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB7" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-Analog Output\n" +"TB5" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:333 +msgid "7i73-I/O\n" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:348 #, fuzzy msgid "Unused Unused" msgstr "未使用的編碼器" -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/pncconf/pncconf.py:370 #, fuzzy msgid "Machine Is Enabled" msgstr "機器 名稱:" -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/pncconf/pncconf.py:370 msgid "X Amplifier Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/pncconf/pncconf.py:370 msgid "Y Amplifier Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/pncconf/pncconf.py:370 msgid "Z Amplifier Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:443 +#: src/emc/usr_intf/pncconf/pncconf.py:371 msgid "A Amplifier Enable" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:443 +#: src/emc/usr_intf/pncconf/pncconf.py:371 msgid "Force Pin True" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 msgid "X Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 msgid "Y Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 msgid "Z Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 msgid "A Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S HALL 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S HALL 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S HALL 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S Gray C1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S Gray C2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S Gray C4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 msgid "S Gray C8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:450 +#: src/emc/usr_intf/pncconf/pncconf.py:378 msgid "Unused Output" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:450 -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#: src/emc/usr_intf/pncconf/pncconf.py:593 -msgid "Spindle" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.py:450 +#: src/emc/usr_intf/pncconf/pncconf.py:378 msgid "Coolant" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:451 +#: src/emc/usr_intf/pncconf/pncconf.py:379 msgid "Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:480 +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:409 msgid "Digital" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:481 +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:410 msgid "X BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 msgid "Y BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 msgid "Z BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 msgid "A BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:453 +#: src/emc/usr_intf/pncconf/pncconf.py:381 msgid " S BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:453 -#: src/emc/usr_intf/pncconf/pncconf.py:483 -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#: src/emc/usr_intf/pncconf/pncconf.py:585 -#: src/emc/usr_intf/pncconf/pncconf.py:588 -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.py:597 -#: src/emc/usr_intf/pncconf/pncconf.py:614 -#: src/emc/usr_intf/pncconf/pncconf.py:629 +#: src/emc/usr_intf/pncconf/pncconf.py:381 +#: src/emc/usr_intf/pncconf/pncconf.py:412 +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#: src/emc/usr_intf/pncconf/pncconf.py:516 +#: src/emc/usr_intf/pncconf/pncconf.py:519 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.py:528 +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#: src/emc/usr_intf/pncconf/pncconf.py:568 +#: src/emc/usr_intf/pncconf/pncconf.py:580 msgid "Custom Signals" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 msgid "X Minimum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 msgid "Y Minimum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 msgid "Z Minimum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 msgid "A Minimum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 msgid "X Maximum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 msgid "Y Maximum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 msgid "Z Maximum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 msgid "A Maximum Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 msgid "X Both Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 msgid "Y Both Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 msgid "Z Both Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 msgid "A Both Limit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:458 -#: src/emc/usr_intf/pncconf/pncconf.py:546 +#: src/emc/usr_intf/pncconf/pncconf.py:386 +#: src/emc/usr_intf/pncconf/pncconf.py:477 msgid "All Limits" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:387 msgid "X Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:387 msgid "Y Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:387 msgid "Z Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:387 msgid "A Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:459 +#: src/emc/usr_intf/pncconf/pncconf.py:387 msgid "All Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 msgid "X Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 msgid "Y Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 msgid "Z Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 msgid "A Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 msgid "X Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 msgid "Y Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 msgid "Z Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 msgid "A Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 msgid "X Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 msgid "Y Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 msgid "Z Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 msgid "A Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:464 +#: src/emc/usr_intf/pncconf/pncconf.py:392 msgid "Joint select A" msgstr "關節 選 A" -#: src/emc/usr_intf/pncconf/pncconf.py:464 +#: src/emc/usr_intf/pncconf/pncconf.py:392 msgid "Joint select B" msgstr "Joint 選 B" -#: src/emc/usr_intf/pncconf/pncconf.py:464 +#: src/emc/usr_intf/pncconf/pncconf.py:392 msgid "Joint select C" msgstr "Joint 選 C" -#: src/emc/usr_intf/pncconf/pncconf.py:464 +#: src/emc/usr_intf/pncconf/pncconf.py:392 msgid "Joint select D" msgstr "Joint 選 D" -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Jog incr A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Jog incr B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Jog incr C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Jog incr D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Feed Override incr A" msgstr "進給超速 遞增 A " -#: src/emc/usr_intf/pncconf/pncconf.py:465 +#: src/emc/usr_intf/pncconf/pncconf.py:393 msgid "Feed Override incr B" msgstr "進給超速 遞增 B" -#: src/emc/usr_intf/pncconf/pncconf.py:466 +#: src/emc/usr_intf/pncconf/pncconf.py:394 msgid "Feed Override incr C" msgstr "進給超速 遞增 C" -#: src/emc/usr_intf/pncconf/pncconf.py:466 +#: src/emc/usr_intf/pncconf/pncconf.py:394 msgid "Feed Override incr D" msgstr "進給超速 遞增 D" -#: src/emc/usr_intf/pncconf/pncconf.py:466 +#: src/emc/usr_intf/pncconf/pncconf.py:394 msgid "Spindle Override incr A" msgstr "主軸超速 遞增 A" -#: src/emc/usr_intf/pncconf/pncconf.py:466 +#: src/emc/usr_intf/pncconf/pncconf.py:394 msgid "Spindle Override incr B" msgstr "主軸超速 遞增 B" -#: src/emc/usr_intf/pncconf/pncconf.py:467 +#: src/emc/usr_intf/pncconf/pncconf.py:395 msgid "Spindle Override incr C" msgstr "主軸超速 遞增 C" -#: src/emc/usr_intf/pncconf/pncconf.py:467 +#: src/emc/usr_intf/pncconf/pncconf.py:395 msgid "Spindle Override incr D" msgstr "主軸超速 遞增 D" -#: src/emc/usr_intf/pncconf/pncconf.py:467 +#: src/emc/usr_intf/pncconf/pncconf.py:395 #, fuzzy msgid "Max Vel Override incr A" msgstr "進給超速 遞增 A " -#: src/emc/usr_intf/pncconf/pncconf.py:467 +#: src/emc/usr_intf/pncconf/pncconf.py:395 #, fuzzy msgid "Max Vel Override incr B" msgstr "進給超速 遞增 B" -#: src/emc/usr_intf/pncconf/pncconf.py:468 +#: src/emc/usr_intf/pncconf/pncconf.py:396 #, fuzzy msgid "Max Vel Override incr C" msgstr "進給超速 遞增 C" -#: src/emc/usr_intf/pncconf/pncconf.py:468 +#: src/emc/usr_intf/pncconf/pncconf.py:396 #, fuzzy msgid "Max Vel Override incr D" msgstr "進給超速 遞增 D" -#: src/emc/usr_intf/pncconf/pncconf.py:469 +#: src/emc/usr_intf/pncconf/pncconf.py:396 +#, fuzzy +msgid "Feed Override enable" +msgstr "進給 超速" + +#: src/emc/usr_intf/pncconf/pncconf.py:396 +#, fuzzy +msgid "Spindle Override enable" +msgstr "設定主軸超速:" + +#: src/emc/usr_intf/pncconf/pncconf.py:397 +#, fuzzy +msgid "Max Vel Override enable" +msgstr "最大 進給 超越" + +#: src/emc/usr_intf/pncconf/pncconf.py:398 msgid "Manual Spindle CW" msgstr "手動 主軸 CW" -#: src/emc/usr_intf/pncconf/pncconf.py:469 +#: src/emc/usr_intf/pncconf/pncconf.py:398 msgid "Manual Spindle CCW" msgstr "手動 主軸 CCW" -#: src/emc/usr_intf/pncconf/pncconf.py:469 +#: src/emc/usr_intf/pncconf/pncconf.py:398 msgid "Manual Spindle Stop" msgstr "手動 主軸 停" -#: src/emc/usr_intf/pncconf/pncconf.py:469 +#: src/emc/usr_intf/pncconf/pncconf.py:398 msgid "Spindle Up-To-Speed" msgstr "主軸 達速" -#: src/emc/usr_intf/pncconf/pncconf.py:470 +#: src/emc/usr_intf/pncconf/pncconf.py:399 msgid "Cycle Start" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:470 +#: src/emc/usr_intf/pncconf/pncconf.py:399 msgid "Abort" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:470 +#: src/emc/usr_intf/pncconf/pncconf.py:399 msgid "Single Step" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 msgid "Jog X +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 msgid "Jog X -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 msgid "Jog Y +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 msgid "Jog Y -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 msgid "Jog Z +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 msgid "Jog Z -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 msgid "Jog A +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 msgid "Jog A -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:478 +#: src/emc/usr_intf/pncconf/pncconf.py:407 msgid "Jog button selected +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:478 +#: src/emc/usr_intf/pncconf/pncconf.py:407 msgid "Jog button selected -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:479 +#: src/emc/usr_intf/pncconf/pncconf.py:408 msgid "Unused Input" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:479 +#: src/emc/usr_intf/pncconf/pncconf.py:408 msgid "Limits" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:479 +#: src/emc/usr_intf/pncconf/pncconf.py:408 msgid "Limts/Home Shared" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:480 -msgid "Axis Selection" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.py:480 +#: src/emc/usr_intf/pncconf/pncconf.py:409 msgid "Overrides" msgstr "超速" -#: src/emc/usr_intf/pncconf/pncconf.py:481 +#: src/emc/usr_intf/pncconf/pncconf.py:410 msgid "Operation" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:481 +#: src/emc/usr_intf/pncconf/pncconf.py:410 msgid "External Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:481 +#: src/emc/usr_intf/pncconf/pncconf.py:410 msgid "Axis rapid" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:483 +#: src/emc/usr_intf/pncconf/pncconf.py:412 msgid "S BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:556 +#: src/emc/usr_intf/pncconf/pncconf.py:487 msgid "Unused PWM Gen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:556 +#: src/emc/usr_intf/pncconf/pncconf.py:487 msgid "X Axis PWM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:556 +#: src/emc/usr_intf/pncconf/pncconf.py:487 msgid "Y Axis PWM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:557 +#: src/emc/usr_intf/pncconf/pncconf.py:488 msgid "Z Axis PWM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:557 +#: src/emc/usr_intf/pncconf/pncconf.py:488 msgid "A Axis PWM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 +#: src/emc/usr_intf/pncconf/pncconf.py:512 msgid "X Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 +#: src/emc/usr_intf/pncconf/pncconf.py:512 msgid "Y Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 +#: src/emc/usr_intf/pncconf/pncconf.py:512 msgid "Z Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 +#: src/emc/usr_intf/pncconf/pncconf.py:512 msgid "A Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:581 +#: src/emc/usr_intf/pncconf/pncconf.py:512 msgid "Spindle Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 +#: src/emc/usr_intf/pncconf/pncconf.py:513 msgid "X Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 +#: src/emc/usr_intf/pncconf/pncconf.py:513 msgid "Y Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 +#: src/emc/usr_intf/pncconf/pncconf.py:513 msgid "Z Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 +#: src/emc/usr_intf/pncconf/pncconf.py:513 msgid "A Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:582 +#: src/emc/usr_intf/pncconf/pncconf.py:513 msgid "Multi Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:583 +#: src/emc/usr_intf/pncconf/pncconf.py:514 msgid "Feed Override" msgstr "進給 超速" -#: src/emc/usr_intf/pncconf/pncconf.py:583 +#: src/emc/usr_intf/pncconf/pncconf.py:514 msgid "spindle Override" msgstr "主軸 超越" -#: src/emc/usr_intf/pncconf/pncconf.py:583 +#: src/emc/usr_intf/pncconf/pncconf.py:514 #, fuzzy msgid "Max Vel Override" msgstr "最大 進給 超越" -#: src/emc/usr_intf/pncconf/pncconf.py:584 +#: src/emc/usr_intf/pncconf/pncconf.py:515 msgid "Unused Encoder" msgstr "未使用的編碼器" -#: src/emc/usr_intf/pncconf/pncconf.py:584 +#: src/emc/usr_intf/pncconf/pncconf.py:515 msgid "Axis Encoder" msgstr "軸編碼器" -#: src/emc/usr_intf/pncconf/pncconf.py:584 +#: src/emc/usr_intf/pncconf/pncconf.py:515 msgid "MPG Jog Controls" msgstr "MPG 慢步 操控" -#: src/emc/usr_intf/pncconf/pncconf.py:584 +#: src/emc/usr_intf/pncconf/pncconf.py:515 msgid "Override MPG control" msgstr "超速 MPG 操控" -#: src/emc/usr_intf/pncconf/pncconf.py:587 +#: src/emc/usr_intf/pncconf/pncconf.py:518 #, fuzzy msgid "Unused Resolver" msgstr "未使用的編碼器" -#: src/emc/usr_intf/pncconf/pncconf.py:587 +#: src/emc/usr_intf/pncconf/pncconf.py:518 msgid "X Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 +#: src/emc/usr_intf/pncconf/pncconf.py:518 msgid "Y Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 +#: src/emc/usr_intf/pncconf/pncconf.py:518 msgid "Z Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:588 +#: src/emc/usr_intf/pncconf/pncconf.py:519 msgid "A Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:588 +#: src/emc/usr_intf/pncconf/pncconf.py:519 msgid "S Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:592 +#: src/emc/usr_intf/pncconf/pncconf.py:523 msgid "Unused 8I20" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:61457 +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "X Axis" msgstr "X 軸" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:62549 +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Y Axis" msgstr "Y 軸" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:63642 +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Z Axis" msgstr "Z 軸" -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.glade:64735 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "A Axis" msgstr "A 軸" -#: src/emc/usr_intf/pncconf/pncconf.py:597 +#: src/emc/usr_intf/pncconf/pncconf.py:528 msgid "Unused Analog Output" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:597 +#: src/emc/usr_intf/pncconf/pncconf.py:528 #, fuzzy msgid "Spindle Output" msgstr "主軸 關" -#: src/emc/usr_intf/pncconf/pncconf.py:613 +#: src/emc/usr_intf/pncconf/pncconf.py:551 msgid "Unused StepGen" msgstr "未使用的 步進產生器" -#: src/emc/usr_intf/pncconf/pncconf.py:613 +#: src/emc/usr_intf/pncconf/pncconf.py:551 msgid "X Axis StepGen" msgstr "X 軸 步進產生器" -#: src/emc/usr_intf/pncconf/pncconf.py:613 +#: src/emc/usr_intf/pncconf/pncconf.py:551 msgid "Y Axis StepGen" msgstr "Y 軸 步進產生器" -#: src/emc/usr_intf/pncconf/pncconf.py:613 +#: src/emc/usr_intf/pncconf/pncconf.py:551 msgid "Z Axis StepGen" msgstr "Z 軸 步進產生器" -#: src/emc/usr_intf/pncconf/pncconf.py:614 +#: src/emc/usr_intf/pncconf/pncconf.py:552 msgid "A Axis StepGen" msgstr "A 軸 步進產生器" -#: src/emc/usr_intf/pncconf/pncconf.py:614 +#: src/emc/usr_intf/pncconf/pncconf.py:552 msgid "Spindle StepGen" msgstr "主 軸 步進產生器" -#: src/emc/usr_intf/pncconf/pncconf.py:628 +#: src/emc/usr_intf/pncconf/pncconf.py:552 +#, fuzzy +msgid "X2 Tandem StepGen" +msgstr "主 軸 步進產生器" + +#: src/emc/usr_intf/pncconf/pncconf.py:552 +#, fuzzy +msgid "Y2 Tandem StepGen" +msgstr "主 軸 步進產生器" + +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#, fuzzy +msgid "Z2 Tandem StepGen" +msgstr "主 軸 步進產生器" + +#: src/emc/usr_intf/pncconf/pncconf.py:553 +msgid "Charge Pump StepGen" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:567 msgid "Unused TPPWM Gen" msgstr "未使用的 TPPWM 產生器" -#: src/emc/usr_intf/pncconf/pncconf.py:628 +#: src/emc/usr_intf/pncconf/pncconf.py:567 msgid "X Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:628 +#: src/emc/usr_intf/pncconf/pncconf.py:567 msgid "Y Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 +#: src/emc/usr_intf/pncconf/pncconf.py:568 msgid "Z Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 +#: src/emc/usr_intf/pncconf/pncconf.py:568 msgid "A Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 +#: src/emc/usr_intf/pncconf/pncconf.py:568 msgid "S Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -#: src/emc/usr_intf/pncconf/pncconf.py:6557 +#: src/emc/usr_intf/pncconf/pncconf.py:576 +#: src/emc/usr_intf/pncconf/pncconf.py:6882 #, fuzzy msgid "Unused Channel" msgstr "選擇通道" -#: src/emc/usr_intf/pncconf/pncconf.py:636 +#: src/emc/usr_intf/pncconf/pncconf.py:576 msgid "8i20 Amplifier Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 +#: src/emc/usr_intf/pncconf/pncconf.py:576 msgid "7i64 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 +#: src/emc/usr_intf/pncconf/pncconf.py:576 msgid "7i69 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 +#: src/emc/usr_intf/pncconf/pncconf.py:577 msgid "7i70 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 +#: src/emc/usr_intf/pncconf/pncconf.py:577 msgid "7i71 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:637 +#: src/emc/usr_intf/pncconf/pncconf.py:577 msgid "7i76 Mode 0 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:722 +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i77 Mode 0 I/O Card" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:578 +msgid "7i73 Mode 1 Pendant Card" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:580 +#, fuzzy +msgid "Unused Analog In" +msgstr "未使用的編碼器" + +#: src/emc/usr_intf/pncconf/pncconf.py:676 msgid "my_LinuxCNC_machine" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1328 +#: src/emc/usr_intf/pncconf/pncconf.py:939 +#: src/emc/usr_intf/pncconf/pncconf.py:941 +msgid "Enter Address" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:1290 msgid "" "This configuration was saved with an earlier version of pncconf which may be " "incompatible.\n" @@ -8195,253 +10476,247 @@ msgid "" "version of PNConf - ask on the LinuxCNC forum - it may be possible.." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1334 +#: src/emc/usr_intf/pncconf/pncconf.py:1296 #, python-format msgid "File %r was modified since it was written by PNCconf" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1338 +#: src/emc/usr_intf/pncconf/pncconf.py:1300 msgid "" "Saving this configuration file will discard configuration changes made " "outside PNCconf." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1365 -#: src/emc/usr_intf/pncconf/pncconf.py:2368 +#: src/emc/usr_intf/pncconf/pncconf.py:1327 +#: src/emc/usr_intf/pncconf/pncconf.py:2421 #, python-format msgid "# Generated by PNCconf at %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1367 -#: src/emc/usr_intf/pncconf/pncconf.py:2370 +#: src/emc/usr_intf/pncconf/pncconf.py:1329 +#: src/emc/usr_intf/pncconf/pncconf.py:2423 msgid "# overwritten when you run PNCconf again" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2070 +#: src/emc/usr_intf/pncconf/pncconf.py:2134 msgid "# Use ACTUAL spindle velocity from spindle encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2071 +#: src/emc/usr_intf/pncconf/pncconf.py:2135 msgid "# spindle-velocity bounces around so we filter it with lowpass" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2072 +#: src/emc/usr_intf/pncconf/pncconf.py:2136 msgid "" "# spindle-velocity is signed so we use absolute component to remove sign" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2073 +#: src/emc/usr_intf/pncconf/pncconf.py:2137 msgid "# ACTUAL velocity is in RPS not RPM so we scale it." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2082 -msgid "" -"# Use COMMANDED spindle velocity from LinuxCNC because no spindle encoder " -"was specified" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.py:2083 -msgid "" -"# COMMANDED velocity is signed so we use absolute component to remove sign" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.py:2727 +#: src/emc/usr_intf/pncconf/pncconf.py:2821 msgid "# connect miscellaneous signals" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2730 +#: src/emc/usr_intf/pncconf/pncconf.py:2824 msgid "# ---HALUI signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2749 +#: src/emc/usr_intf/pncconf/pncconf.py:2843 msgid "# ---charge pump signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2753 +#: src/emc/usr_intf/pncconf/pncconf.py:2847 msgid "# ---coolant signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2758 +#: src/emc/usr_intf/pncconf/pncconf.py:2852 msgid "# ---probe signal---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2763 +#: src/emc/usr_intf/pncconf/pncconf.py:2857 msgid "# ---jog button signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2768 +#: src/emc/usr_intf/pncconf/pncconf.py:2862 msgid "# ---USB device jog button signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2803 -#: src/emc/usr_intf/pncconf/pncconf.py:2825 +#: src/emc/usr_intf/pncconf/pncconf.py:2903 +#: src/emc/usr_intf/pncconf/pncconf.py:2929 msgid "# ---mpg signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2971 +#: src/emc/usr_intf/pncconf/pncconf.py:3111 msgid "# ---motion control signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2976 +#: src/emc/usr_intf/pncconf/pncconf.py:3116 msgid "# ---digital in / out signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2986 +#: src/emc/usr_intf/pncconf/pncconf.py:3126 msgid "# ---estop signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3005 +#: src/emc/usr_intf/pncconf/pncconf.py:3145 msgid "# ---manual tool change signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3014 +#: src/emc/usr_intf/pncconf/pncconf.py:3154 msgid "# ---toolchange signals for custom tool changer---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3036 +#: src/emc/usr_intf/pncconf/pncconf.py:3176 msgid "# --- Classicladder signals for Z axis Auto touch off program---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3055 +#: src/emc/usr_intf/pncconf/pncconf.py:3195 msgid "# These files are loaded post gladeVCP, in the order they appear" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3069 -#: src/emc/usr_intf/pncconf/pncconf.py:3136 +#: src/emc/usr_intf/pncconf/pncconf.py:3209 +#: src/emc/usr_intf/pncconf/pncconf.py:3276 msgid "# _DO NOT_ include your HAL commands here." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3070 +#: src/emc/usr_intf/pncconf/pncconf.py:3210 msgid "# Put custom HAL commands in custom_gvcp.hal" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3073 +#: src/emc/usr_intf/pncconf/pncconf.py:3213 msgid "# **** Setup of spindle speed display using gladevcp ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3082 +#: src/emc/usr_intf/pncconf/pncconf.py:3222 msgid "# **** Setup GLADE MDI buttons ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3095 +#: src/emc/usr_intf/pncconf/pncconf.py:3235 msgid "" "# **** Z axis touch-off button - requires the touch-off classicladder " "program ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3125 +#: src/emc/usr_intf/pncconf/pncconf.py:3265 msgid "# These files are loaded post GUI, in the order they appear" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3137 +#: src/emc/usr_intf/pncconf/pncconf.py:3277 msgid "# Put custom HAL commands in custom_postgui.hal" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3138 +#: src/emc/usr_intf/pncconf/pncconf.py:3278 msgid "# The commands in this file are run after the GUI loads" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3148 +#: src/emc/usr_intf/pncconf/pncconf.py:3288 msgid "# **** Setup of spindle speed display using pyvcp -END ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3160 +#: src/emc/usr_intf/pncconf/pncconf.py:3300 msgid "# This file will not be overwritten when you run PNCconf again" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3166 +#: src/emc/usr_intf/pncconf/pncconf.py:3306 msgid "# These commands are required for Touchy GUI" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3218 +#: src/emc/usr_intf/pncconf/pncconf.py:3358 #, python-format msgid "Generated by PNCconf at %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3230 +#: src/emc/usr_intf/pncconf/pncconf.py:3370 msgid "configures LinuxCNC as:\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3231 +#: src/emc/usr_intf/pncconf/pncconf.py:3371 msgid "type CNC\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3232 +#: src/emc/usr_intf/pncconf/pncconf.py:3372 msgid "will be used as the frontend display" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3241 +#: src/emc/usr_intf/pncconf/pncconf.py:3381 msgid " connector" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3253 +#: src/emc/usr_intf/pncconf/pncconf.py:3393 msgid "invrt" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3262 +#: src/emc/usr_intf/pncconf/pncconf.py:3402 #, python-format msgid "%(name)s Parport" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3267 -#: src/emc/usr_intf/pncconf/pncconf.py:3275 +#: src/emc/usr_intf/pncconf/pncconf.py:3407 +#: src/emc/usr_intf/pncconf/pncconf.py:3415 msgid "-> inverted" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3269 +#: src/emc/usr_intf/pncconf/pncconf.py:3409 #, python-format msgid "pin# %(pinnum)d is connected to input signal:'%(data)s' %(mesag)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3277 +#: src/emc/usr_intf/pncconf/pncconf.py:3417 #, python-format msgid "pin# %(pinnum)d is connected to output signal:'%(data)s' %(mesag)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3455 +#: src/emc/usr_intf/pncconf/pncconf.py:3595 #, fuzzy msgid "Desktop Launcher for LinuxCNC config made by PNCconf" msgstr "創建一個桌面 啟動器 啟動 LinuxCNC 與 此配置." -#: src/emc/usr_intf/pncconf/pncconf.py:3725 +#: src/emc/usr_intf/pncconf/pncconf.py:3856 +#, python-format +msgid "%s Axis Configuration" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:3881 msgid "Spindle Motor/Encoder Configuration" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3727 +#: src/emc/usr_intf/pncconf/pncconf.py:3883 #, python-format msgid "%s Axis Motor/Encoder Configuration" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3756 +#: src/emc/usr_intf/pncconf/pncconf.py:3912 #, python-format msgid "%s Parallel Port Setup" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3780 +#: src/emc/usr_intf/pncconf/pncconf.py:3936 #, python-format msgid "%s I/0 Setup" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4001 +#: src/emc/usr_intf/pncconf/pncconf.py:4162 msgid "Quit PNCconfig and discard changes?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4042 -#: src/emc/usr_intf/pncconf/pncconf.glade:65849 +#: src/emc/usr_intf/pncconf/pncconf.py:4203 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Help Pages" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4047 +#: src/emc/usr_intf/pncconf/pncconf.py:4208 msgid "Help page is unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4054 +#: src/emc/usr_intf/pncconf/pncconf.py:4218 msgid "" "You are using a simulated-realtime version of LinuxCNC, so testing / tuning " "of external hardware is unavailable." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4059 +#: src/emc/usr_intf/pncconf/pncconf.py:4223 #, python-format msgid "" "You are using a realtime version of LinuxCNC but didn't load a realtime " @@ -8451,99 +10726,92 @@ msgid "" " You are using the %(actual)s kernel instead of %(needed)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4079 -#, python-format -msgid "" -"You are have no hostmot2 firmware downloaded in folder:\n" -"%s\n" -"PNCconf will use sample firmware data\n" -"live testing will not be possible" -msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.py:4093 +#: src/emc/usr_intf/pncconf/pncconf.py:4256 #, fuzzy msgid "LinuxCNC 'PNCconf' configuration files" msgstr "打開配置文件:" -#: src/emc/usr_intf/pncconf/pncconf.py:4123 +#: src/emc/usr_intf/pncconf/pncconf.py:4286 msgid "" "It seems data in this file is from too old of a version of PNCConf to " "continue.\n" "." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4130 -#: src/emc/usr_intf/pncconf/pncconf.py:4228 +#: src/emc/usr_intf/pncconf/pncconf.py:4293 +#: src/emc/usr_intf/pncconf/pncconf.py:4391 #, python-format msgid "Point and click configuration - %s.pncconf " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4250 +#: src/emc/usr_intf/pncconf/pncconf.py:4413 msgid "" "You need to designate a parport and/or mesa I/O device before continuing." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4309 +#: src/emc/usr_intf/pncconf/pncconf.py:4481 msgid "" "You Have choosen to re-edit the current config, so you can not go to the new/" "modify page.\n" " Quit and reload PNCconf if you wish to build a new config." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4313 +#: src/emc/usr_intf/pncconf/pncconf.py:4485 msgid "" "If you can not go to the new/modify page your current data will be lost.\n" "Ok to reset data and start a new configuration?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4594 +#: src/emc/usr_intf/pncconf/pncconf.py:4811 msgid "USB device Info Search" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4608 +#: src/emc/usr_intf/pncconf/pncconf.py:4825 msgid "USB device page is unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4673 +#: src/emc/usr_intf/pncconf/pncconf.py:4890 msgid "Pin names are unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4695 +#: src/emc/usr_intf/pncconf/pncconf.py:4912 msgid "Device names are unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4698 +#: src/emc/usr_intf/pncconf/pncconf.py:4915 msgid "No Pncconf made device rules were found\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4822 +#: src/emc/usr_intf/pncconf/pncconf.py:5041 msgid "" "OK to replace existing glade panel ?\n" "It will be renamed and added to 'backups' folder.\n" -" Clicking 'existing custom program' will aviod this warning. " +" Clicking 'existing custom program' will avoid this warning, but if you " +"change related options later -such as spindle feedback- the HAL connection " +"will not update" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4827 +#: src/emc/usr_intf/pncconf/pncconf.py:5047 msgid "" "OK to replace existing custom pyvcp panel?\n" "Existing pyvcp-panel.xml will be renamed and added to 'backups' folder\n" "Clicking 'existing custom program' will aviod this warning. " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5250 +#: src/emc/usr_intf/pncconf/pncconf.py:5493 msgid "" "You need to configure the mesa0 page.\n" " Choose the board type, firmware, component amounts and press 'Accept " "component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5254 +#: src/emc/usr_intf/pncconf/pncconf.py:5497 msgid "" "The chosen Mesa0 board is different from the current displayed.\n" "please press 'Accept component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5297 +#: src/emc/usr_intf/pncconf/pncconf.py:5540 msgid "" "You need to configure the mesa1 page.\n" " Choose the board type, firmware, component amounts and press 'Accept " @@ -8552,7 +10820,7 @@ msgstr "" "您需要配置mesa1頁. \n" "選擇板型,固件組件 數量,並按下 '接受 組件更改' 按鈕" -#: src/emc/usr_intf/pncconf/pncconf.py:5301 +#: src/emc/usr_intf/pncconf/pncconf.py:5544 #, fuzzy msgid "" "The chosen Mesa1 board is different from the current displayed.\n" @@ -8561,7 +10829,7 @@ msgstr "" "所選擇的Mesa1板不同於當前顯示.\n" "請按 '接受組件 更改' 按鈕" -#: src/emc/usr_intf/pncconf/pncconf.py:5315 +#: src/emc/usr_intf/pncconf/pncconf.py:5558 msgid "" "Do to technical reasons this test panel can be loaded only once without " "reloading pncconf.You also will not be able to do any other testing untill " @@ -8570,190 +10838,201 @@ msgid "" "Do you wish to continue the test?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6699 +#: src/emc/usr_intf/pncconf/pncconf.py:7042 msgid "First Parallel Port set for OUTPUT" msgstr "第一 並行 端口 設置 為輸出" -#: src/emc/usr_intf/pncconf/pncconf.py:6701 +#: src/emc/usr_intf/pncconf/pncconf.py:7044 msgid "First Parallel Port set for INPUT" msgstr "第一 並行 端口 設置 為輸入" -#: src/emc/usr_intf/pncconf/pncconf.py:6725 +#: src/emc/usr_intf/pncconf/pncconf.py:7068 msgid "Second Parallel Port set for OUTPUT" msgstr "第二 並行 端口 設置 為輸出" -#: src/emc/usr_intf/pncconf/pncconf.py:6727 +#: src/emc/usr_intf/pncconf/pncconf.py:7070 msgid "Second Parallel Port set for INPUT" msgstr "第二 並行 端口 設置 為輸入" -#: src/emc/usr_intf/pncconf/pncconf.py:6739 +#: src/emc/usr_intf/pncconf/pncconf.py:7082 msgid "Third Parallel Port set for OUTPUT" msgstr "第三 並行 端口 設置 為輸出" -#: src/emc/usr_intf/pncconf/pncconf.py:6741 +#: src/emc/usr_intf/pncconf/pncconf.py:7084 msgid "Third Parallel Port set for INPUT" msgstr "第三 並行 端口 設置 為輸入" -#: src/emc/usr_intf/pncconf/pncconf.py:6866 +#: src/emc/usr_intf/pncconf/pncconf.py:7210 msgid "You can not have both steppers and pwm signals for spindle control\n" msgstr "你不能 同時 擁有 步進電機 和 PWM信號 給主軸控制\n" -#: src/emc/usr_intf/pncconf/pncconf.py:6870 +#: src/emc/usr_intf/pncconf/pncconf.py:7214 #, python-format msgid "You forgot to designate a stepper or pwm signal for axis %s\n" msgstr "你忘了 指定 步進電機 或 PWM 信號 給軸 %s\n" -#: src/emc/usr_intf/pncconf/pncconf.py:6873 +#: src/emc/usr_intf/pncconf/pncconf.py:7217 #, fuzzy, python-format msgid "You forgot to designate an encoder /resolver signal for axis %s servo\n" msgstr "你忘了 指定 編碼器 信號 給軸 %s 伺服\n" -#: src/emc/usr_intf/pncconf/pncconf.py:6876 +#: src/emc/usr_intf/pncconf/pncconf.py:7220 #, python-format msgid "You forgot to designate a pwm signal or stepper signal for axis %s\n" msgstr "你忘了 指定 一個 PWM 信號 或步進信號 給軸 %s\n" -#: src/emc/usr_intf/pncconf/pncconf.py:6879 +#: src/emc/usr_intf/pncconf/pncconf.py:7223 #, python-format msgid "You can not have both steppers and pwm signals for axis %s\n" msgstr "你 不能 擁有 同時 用 步進電機 和PWM信號 的軸 %s\n" -#: src/emc/usr_intf/pncconf/pncconf.py:6887 +#: src/emc/usr_intf/pncconf/pncconf.py:7226 +#, python-format +msgid "" +"If using a tandem axis stepper, you must select a master stepgen for axis " +"%s\n" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:7235 msgid "Touchy require an external cycle start signal\n" msgstr "Touchy 需要 外部 循環 啟動 信號\n" -#: src/emc/usr_intf/pncconf/pncconf.py:6890 +#: src/emc/usr_intf/pncconf/pncconf.py:7238 msgid "Touchy require an external abort signal\n" msgstr "Touchy 需要 一個 外部 中斷 信號\n" -#: src/emc/usr_intf/pncconf/pncconf.py:6893 +#: src/emc/usr_intf/pncconf/pncconf.py:7241 msgid "Touchy require an external single-step signal\n" msgstr "Touchy 需要 一個 外部 單步信號\n" -#: src/emc/usr_intf/pncconf/pncconf.py:6896 +#: src/emc/usr_intf/pncconf/pncconf.py:7244 msgid "" "Touchy require an external multi handwheel MPG encoder signal on the mesa " "page\n" msgstr "Touchy 需要 外部 多手輪 MPG 編碼器 信號 在 mesa 頁面\n" -#: src/emc/usr_intf/pncconf/pncconf.py:6899 +#: src/emc/usr_intf/pncconf/pncconf.py:7247 msgid "" "Touchy require 'external mpg jogging' to be selected on the external control " "page\n" msgstr "Touchy 要求“外部MPG慢步”被選中的外部控制 頁面\n" -#: src/emc/usr_intf/pncconf/pncconf.py:6902 +#: src/emc/usr_intf/pncconf/pncconf.py:7250 msgid "" "Touchy require the external mpg to be in 'shared mpg' mode on the external " "controls page\n" msgstr "Touchy 要求外部MPG將在“共享MPG”模式對外部 控制 頁面\n" -#: src/emc/usr_intf/pncconf/pncconf.py:6905 +#: src/emc/usr_intf/pncconf/pncconf.py:7253 msgid "" "Touchy require selectable increments to be unchecked on the external " "controls page\n" msgstr "Touchy 需要 可選擇 增量 將未選中 的外部 控制 頁面\n" -#: src/emc/usr_intf/pncconf/pncconf.py:6909 +#: src/emc/usr_intf/pncconf/pncconf.py:7257 msgid "" "The 7i29 daughter board requires PWM type generators and a PWM base " "frequency of 20 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6912 +#: src/emc/usr_intf/pncconf/pncconf.py:7260 msgid "" "The 7i30 daughter board requires PWM type generators and a PWM base " "frequency of 20 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6915 +#: src/emc/usr_intf/pncconf/pncconf.py:7263 msgid "" "The 7i33 daughter board requires PDM type generators and a PDM base " "frequency of 6 Mhz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6918 +#: src/emc/usr_intf/pncconf/pncconf.py:7266 msgid "" "The 7i40 daughter board requires PWM type generators and a PWM base " "frequency of 50 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6921 +#: src/emc/usr_intf/pncconf/pncconf.py:7269 msgid "" "The 7i48 daughter board requires UDM type generators and a PWM base " "frequency of 24 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7148 +#: src/emc/usr_intf/pncconf/pncconf.py:7494 msgid "Gearbox Reduction Ratio" msgstr "齒輪箱 減速比" -#: src/emc/usr_intf/pncconf/pncconf.py:7151 +#: src/emc/usr_intf/pncconf/pncconf.py:7497 msgid "Reduction Ratio" msgstr "減速比" -#: src/emc/usr_intf/pncconf/pncconf.py:7154 +#: src/emc/usr_intf/pncconf/pncconf.py:7500 msgid "Leadscrew Pitch" msgstr "丝杆 螺距" -#: src/emc/usr_intf/pncconf/pncconf.py:7157 -#: src/emc/usr_intf/pncconf/pncconf.glade:66327 -#: src/emc/usr_intf/pncconf/pncconf.glade:66622 +#: src/emc/usr_intf/pncconf/pncconf.py:7503 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "Leadscrew TPI" msgstr "丝杆 TPI" -#: src/emc/usr_intf/pncconf/pncconf.py:7161 -#: src/emc/usr_intf/pncconf/pncconf.py:7162 +#: src/emc/usr_intf/pncconf/pncconf.py:7507 +#: src/emc/usr_intf/pncconf/pncconf.py:7508 msgid "(" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7163 -#: src/emc/usr_intf/pncconf/pncconf.py:7173 -#: src/emc/usr_intf/pncconf/pncconf.py:7174 -#: src/emc/usr_intf/pncconf/pncconf.py:7175 +#: src/emc/usr_intf/pncconf/pncconf.py:7509 +#: src/emc/usr_intf/pncconf/pncconf.py:7519 +#: src/emc/usr_intf/pncconf/pncconf.py:7520 +#: src/emc/usr_intf/pncconf/pncconf.py:7521 #, fuzzy msgid " / min" msgstr "毫米 / 分鐘" -#: src/emc/usr_intf/pncconf/pncconf.py:7164 +#: src/emc/usr_intf/pncconf/pncconf.py:7510 #, fuzzy msgid " / sec²" msgstr "毫米 / 秒²" -#: src/emc/usr_intf/pncconf/pncconf.py:7167 +#: src/emc/usr_intf/pncconf/pncconf.py:7513 #, fuzzy msgid " / Step" msgstr "毫米 / 步" -#: src/emc/usr_intf/pncconf/pncconf.py:7168 +#: src/emc/usr_intf/pncconf/pncconf.py:7514 #, fuzzy msgid "Steps / " msgstr "步 / 英寸" -#: src/emc/usr_intf/pncconf/pncconf.py:7170 +#: src/emc/usr_intf/pncconf/pncconf.py:7516 #, fuzzy msgid " / encoder pulse" msgstr "毫米 / 編碼器脈衝 " -#: src/emc/usr_intf/pncconf/pncconf.py:7171 +#: src/emc/usr_intf/pncconf/pncconf.py:7517 #, fuzzy msgid "Encoder pulses / " msgstr "編碼器 脈衝 / 毫米" -#: src/emc/usr_intf/pncconf/pncconf.py:7482 +#: src/emc/usr_intf/pncconf/pncconf.py:7525 +#, fuzzy +msgid "Resolver Scale:" +msgstr "編碼器比例" + +#: src/emc/usr_intf/pncconf/pncconf.py:7826 msgid "Axis Scale Calculation" msgstr "Axis 比例計算" -#: src/emc/usr_intf/pncconf/pncconf.py:7785 +#: src/emc/usr_intf/pncconf/pncconf.py:8133 msgid "You need to designate an E-stop input pin for this ladder program." msgstr "你需要指定一個 E-stop 輸入 端子 給這個梯形邏輯方案." -#: src/emc/usr_intf/pncconf/pncconf.py:7797 +#: src/emc/usr_intf/pncconf/pncconf.py:8145 #, fuzzy msgid "You need to designate a probe input pin for this ladder program." msgstr "你需要指定一個 E-stop 輸入 端子 給這個梯形邏輯方案." -#: src/emc/usr_intf/pncconf/pncconf.py:7808 +#: src/emc/usr_intf/pncconf/pncconf.py:8156 #, fuzzy msgid "" "OK to replace existing custom ladder program?\n" @@ -8765,81 +11044,81 @@ msgstr "" "現有 Custom.clp將改名custom_backup.clp.(_b)\n" "任何現有的 文件命名 -custom_backup.clp- 將會丟失." -#: src/emc/usr_intf/pncconf/pncconf.py:8019 +#: src/emc/usr_intf/pncconf/pncconf.py:8374 msgid "Do you wish to continue to edit this configuration." msgstr "你是否想 繼續 編輯 此配置." -#: src/emc/usr_intf/pncconf/pncconf.py:8058 +#: src/emc/usr_intf/pncconf/pncconf.py:8413 msgid "PCI search page is unavailable\n" msgstr "PCI 搜索頁面 無法使用\n" -#: src/emc/usr_intf/pncconf/pncconf.py:8176 +#: src/emc/usr_intf/pncconf/pncconf.py:8532 msgid "" "You specified there is an existing gladefile, But there is not one in the " "machine-named folder.." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8495 +#: src/emc/usr_intf/pncconf/pncconf.py:8856 #, fuzzy msgid "Servo tuning is not avaiable in PNCconf yet\n" msgstr "伺服 調整 還沒有完成 / 在工作\n" -#: src/emc/usr_intf/pncconf/pncconf.py:8500 +#: src/emc/usr_intf/pncconf/pncconf.py:8861 msgid "degrees" msgstr "度" -#: src/emc/usr_intf/pncconf/pncconf.py:8501 +#: src/emc/usr_intf/pncconf/pncconf.py:8862 msgid "degrees / minute" msgstr "度 / 分鐘" -#: src/emc/usr_intf/pncconf/pncconf.py:8502 +#: src/emc/usr_intf/pncconf/pncconf.py:8863 msgid "degrees / second²" msgstr "度 / 秒²" -#: src/emc/usr_intf/pncconf/pncconf.py:8504 +#: src/emc/usr_intf/pncconf/pncconf.py:8865 msgid "revolutions" msgstr "轉" -#: src/emc/usr_intf/pncconf/pncconf.py:8505 +#: src/emc/usr_intf/pncconf/pncconf.py:8866 msgid "rpm" msgstr "轉速" -#: src/emc/usr_intf/pncconf/pncconf.py:8506 +#: src/emc/usr_intf/pncconf/pncconf.py:8867 msgid "revs / second²" msgstr "轉速 / 秒²" -#: src/emc/usr_intf/pncconf/pncconf.py:8509 -#: src/emc/usr_intf/pncconf/pncconf.glade:58295 -#: src/emc/usr_intf/pncconf/pncconf.glade:58479 -#: src/emc/usr_intf/pncconf/pncconf.glade:58576 +#: src/emc/usr_intf/pncconf/pncconf.py:8870 +#: src/emc/usr_intf/pncconf/pncconf.glade:65184 +#: src/emc/usr_intf/pncconf/pncconf.glade:65281 +#: src/emc/usr_intf/pncconf/pncconf.glade:65465 msgid "mm / minute" msgstr "毫米 / 分鐘" -#: src/emc/usr_intf/pncconf/pncconf.py:8510 +#: src/emc/usr_intf/pncconf/pncconf.py:8871 msgid "mm / second²" msgstr "毫米 / 秒²" -#: src/emc/usr_intf/pncconf/pncconf.py:8513 +#: src/emc/usr_intf/pncconf/pncconf.py:8874 msgid "inches / minute" msgstr "英寸 / 分鐘" -#: src/emc/usr_intf/pncconf/pncconf.py:8514 +#: src/emc/usr_intf/pncconf/pncconf.py:8875 msgid "inches / second²" msgstr "英寸 / 秒²" -#: src/emc/usr_intf/pncconf/pncconf.py:8646 +#: src/emc/usr_intf/pncconf/pncconf.py:9031 #, python-format msgid "%s Axis Tune" msgstr "%s 軸 調整" -#: src/emc/usr_intf/pncconf/pncconf.py:8810 +#: src/emc/usr_intf/pncconf/pncconf.py:9195 #, fuzzy msgid "" " You must designate a ENCODER / RESOLVER signal and an ANALOG SPINDLE signal " "for this axis test" msgstr "您必須指定 一個 編碼器 信號 和 PWM 信號 給此軸測試" -#: src/emc/usr_intf/pncconf/pncconf.py:8814 +#: src/emc/usr_intf/pncconf/pncconf.py:9199 #, fuzzy msgid "" " You must designate a ENCODER / RESOLVER signal and a PWM signal for this " @@ -8872,43 +11151,60 @@ msgstr "" msgid "Create or Edit" msgstr "創建 或 修改" -#: src/emc/usr_intf/pncconf/pncconf.glade:52 -msgid "Create a new configuration" -msgstr "創建一個新的配置" +#: src/emc/usr_intf/pncconf/pncconf.glade:66 +msgid "Create a desktop launcher to start LinuxCNC with this configuration." +msgstr "創建一個桌面 啟動器 啟動 LinuxCNC 與 此配置." -#: src/emc/usr_intf/pncconf/pncconf.glade:118 +#: src/emc/usr_intf/pncconf/pncconf.glade:83 msgid "Create a desktop shortcut (symlink) to configuration files." msgstr "創建一個桌面 快捷方式(鏈接)的 配置文件." -#: src/emc/usr_intf/pncconf/pncconf.glade:135 -msgid "Create a desktop launcher to start LinuxCNC with this configuration." -msgstr "創建一個桌面 啟動器 啟動 LinuxCNC 與 此配置." +#: src/emc/usr_intf/pncconf/pncconf.glade:148 +msgid "Create a new configuration" +msgstr "創建一個新的配置" + +#: src/emc/usr_intf/pncconf/pncconf.glade:175 +msgid "Basic machine information" +msgstr "" #: src/emc/usr_intf/pncconf/pncconf.glade:214 msgid "Machine Name:" msgstr "機器 名稱:" -#: src/emc/usr_intf/pncconf/pncconf.glade:281 +#: src/emc/usr_intf/pncconf/pncconf.glade:280 msgid "Axis configuration:" msgstr "軸的 配置:" -#: src/emc/usr_intf/pncconf/pncconf.glade:316 +#: src/emc/usr_intf/pncconf/pncconf.glade:295 +msgid "" +"XYZ\n" +"XYZA\n" +"XZ (Lathe)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:322 msgid "Machine units:" msgstr "機器 單元:" -#: src/emc/usr_intf/pncconf/pncconf.glade:355 +#: src/emc/usr_intf/pncconf/pncconf.glade:337 +msgid "" +"Inch\n" +"Millimeter" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:363 msgid "Machine Basics" msgstr "機器 基本" -#: src/emc/usr_intf/pncconf/pncconf.glade:405 -msgid "Recommend servo period: 1000000" -msgstr "推薦伺服週期: 10000000" - -#: src/emc/usr_intf/pncconf/pncconf.glade:431 +#: src/emc/usr_intf/pncconf/pncconf.glade:416 msgid "Actual Servo Period: " msgstr "實際伺服週期: " -#: src/emc/usr_intf/pncconf/pncconf.glade:486 +#: src/emc/usr_intf/pncconf/pncconf.glade:475 +msgid "Recommend servo period: 1000000" +msgstr "推薦伺服週期: 10000000" + +#: src/emc/usr_intf/pncconf/pncconf.glade:494 msgid "" " Test Base\n" "Period Jitter " @@ -8916,47 +11212,47 @@ msgstr "" " 檢測基本\n" "週期抖動 " -#: src/emc/usr_intf/pncconf/pncconf.glade:511 +#: src/emc/usr_intf/pncconf/pncconf.glade:519 msgid "Computer Response Time" msgstr "電腦響應時間" -#: src/emc/usr_intf/pncconf/pncconf.glade:553 +#: src/emc/usr_intf/pncconf/pncconf.glade:561 msgid "Mesa0 PCI / Parport Card:" msgstr "Mesa0 PCI /並口卡:" -#: src/emc/usr_intf/pncconf/pncconf.glade:563 +#: src/emc/usr_intf/pncconf/pncconf.glade:571 msgid "Mesa1 PCI / Parport Card:" msgstr "Mesa1 PCI /並口卡:" -#: src/emc/usr_intf/pncconf/pncconf.glade:576 +#: src/emc/usr_intf/pncconf/pncconf.glade:584 msgid "First Parport Address:" msgstr "第一個並行埠地址:" -#: src/emc/usr_intf/pncconf/pncconf.glade:589 +#: src/emc/usr_intf/pncconf/pncconf.glade:597 msgid "Second Parport Address:" msgstr "第二個並行埠地址:" -#: src/emc/usr_intf/pncconf/pncconf.glade:604 +#: src/emc/usr_intf/pncconf/pncconf.glade:612 msgid "Third Parport Address:" msgstr "第三個並行埠地址:" -#: src/emc/usr_intf/pncconf/pncconf.glade:627 #: src/emc/usr_intf/pncconf/pncconf.glade:635 +#: src/emc/usr_intf/pncconf/pncconf.glade:643 msgid "" "5i20\n" "5i23\n" "5i22" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:708 -#: src/emc/usr_intf/pncconf/pncconf.glade:720 -#: src/emc/usr_intf/pncconf/pncconf.glade:733 +#: src/emc/usr_intf/pncconf/pncconf.glade:716 +#: src/emc/usr_intf/pncconf/pncconf.glade:728 +#: src/emc/usr_intf/pncconf/pncconf.glade:741 msgid "" "In\n" "Out" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:796 +#: src/emc/usr_intf/pncconf/pncconf.glade:804 msgid "" "Add-on PCI\n" " Parport\n" @@ -8964,4598 +11260,5545 @@ msgid "" " Search" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:821 +#: src/emc/usr_intf/pncconf/pncconf.glade:829 msgid "I/O Control Ports/ Boards" msgstr "I/O 控制 端口/板" -#: src/emc/usr_intf/pncconf/pncconf.glade:870 +#: src/emc/usr_intf/pncconf/pncconf.glade:878 msgid "Axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:885 +#: src/emc/usr_intf/pncconf/pncconf.glade:893 msgid "TKLinuxCNC" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:899 +#: src/emc/usr_intf/pncconf/pncconf.glade:907 msgid "Mini" msgstr "迷你" -#: src/emc/usr_intf/pncconf/pncconf.glade:913 -#: src/emc/usr_intf/pncconf/pncconf.glade:6648 +#: src/emc/usr_intf/pncconf/pncconf.glade:921 +#: src/emc/usr_intf/pncconf/pncconf.glade:6656 msgid "Touchy" msgstr "敏感的" -#: src/emc/usr_intf/pncconf/pncconf.glade:930 +#: src/emc/usr_intf/pncconf/pncconf.glade:938 msgid "GUI frontend list" msgstr "GUI前台列表" -#: src/emc/usr_intf/pncconf/pncconf.glade:965 +#: src/emc/usr_intf/pncconf/pncconf.glade:973 msgid "External Controls" msgstr "外部控制" -#: src/emc/usr_intf/pncconf/pncconf.glade:1006 +#: src/emc/usr_intf/pncconf/pncconf.glade:1014 msgid "Add device rule" msgstr "新增設備規則" -#: src/emc/usr_intf/pncconf/pncconf.glade:1019 +#: src/emc/usr_intf/pncconf/pncconf.glade:1027 msgid "Test device" msgstr "測試設備" -#: src/emc/usr_intf/pncconf/pncconf.glade:1033 -msgid "Search for device rules" -msgstr "搜尋設備規則" +#: src/emc/usr_intf/pncconf/pncconf.glade:1041 +msgid "Search for device rules" +msgstr "搜尋設備規則" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1062 +msgid "Device Name:" +msgstr "設備名稱:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1125 +msgid "A +" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1135 +msgid "A -" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1169 +#: src/emc/usr_intf/pncconf/pncconf.glade:1181 +#: src/emc/usr_intf/pncconf/pncconf.glade:1191 +#: src/emc/usr_intf/pncconf/pncconf.glade:1246 +#: src/emc/usr_intf/pncconf/pncconf.glade:1759 +msgid "mm/min " +msgstr "mm/分" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1269 +msgid " ab)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1282 +#: src/emc/usr_intf/pncconf/pncconf.glade:2493 +#: src/emc/usr_intf/pncconf/pncconf.glade:2927 +#: src/emc/usr_intf/pncconf/pncconf.glade:3808 +#: src/emc/usr_intf/pncconf/pncconf.glade:4689 +msgid " b)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1293 +#: src/emc/usr_intf/pncconf/pncconf.glade:2482 +#: src/emc/usr_intf/pncconf/pncconf.glade:2916 +#: src/emc/usr_intf/pncconf/pncconf.glade:3797 +#: src/emc/usr_intf/pncconf/pncconf.glade:4678 +msgid " a)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1305 +#: src/emc/usr_intf/pncconf/pncconf.glade:2385 +#: src/emc/usr_intf/pncconf/pncconf.glade:2867 +#: src/emc/usr_intf/pncconf/pncconf.glade:3748 +#: src/emc/usr_intf/pncconf/pncconf.glade:4629 +msgid "default" +msgstr "預設" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1336 +#: src/emc/usr_intf/pncconf/pncconf.glade:1476 +msgid "Jog Speed select A" +msgstr "慢步速度選擇 A" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1348 +msgid "X +" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1354 +msgid "Y +" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1364 +msgid "Z +" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1374 +msgid "X -" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1384 +msgid "Y -" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1396 +msgid "Z -" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1500 +msgid "Digital Control" +msgstr "數字控制" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1593 +#: src/emc/usr_intf/gscreen/gscreen.glade:502 +msgid "A" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1603 +#: src/emc/usr_intf/gscreen/gscreen.glade:374 +msgid "Z" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1613 +#: src/emc/usr_intf/pncconf/pncconf.glade:6134 +#: src/emc/usr_intf/pncconf/pncconf.glade:6458 +#: src/emc/usr_intf/pncconf/pncconf.glade:6860 +#: src/emc/usr_intf/pncconf/pncconf.glade:7235 +#: src/emc/usr_intf/gscreen/gscreen.glade:244 +msgid "Y" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1623 +msgid "X " +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1631 +msgid "Analog Control" +msgstr "模擬控制" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1657 +#: src/emc/usr_intf/pncconf/pncconf.glade:1788 +#: src/emc/usr_intf/pncconf/pncconf.glade:2698 +#: src/emc/usr_intf/pncconf/pncconf.glade:3579 +#: src/emc/usr_intf/pncconf/pncconf.glade:4460 +#: src/emc/usr_intf/pncconf/pncconf.glade:5341 +#: src/emc/usr_intf/pncconf/pncconf.glade:64300 +msgid "Details" +msgstr "詳情" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1675 +msgid "USB Joystick Jogging " +msgstr "USB搖桿慢步" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1719 +msgid "shared buttons for all axis" +msgstr "所有軸共享按鈕" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1732 +msgid "buttons for each axis" +msgstr "每個軸 的 按鈕" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1806 +msgid "External Button Jogging" +msgstr "外部 按鈕 慢步" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1847 +msgid "Shared MPG / selectable axis" +msgstr "共享 MPG / 可選軸" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1860 +msgid "Mpg per axis" +msgstr "Mpg 每 個軸" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1875 +msgid "selectable MPG increments" +msgstr "選擇  MPG  增量" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1940 +#: src/emc/usr_intf/pncconf/pncconf.glade:3379 +#: src/emc/usr_intf/pncconf/pncconf.glade:4260 +#: src/emc/usr_intf/pncconf/pncconf.glade:5141 +msgid " d)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1952 +#: src/emc/usr_intf/pncconf/pncconf.glade:3340 +#: src/emc/usr_intf/pncconf/pncconf.glade:4221 +#: src/emc/usr_intf/pncconf/pncconf.glade:5102 +msgid " abcd)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1965 +#: src/emc/usr_intf/pncconf/pncconf.glade:3353 +#: src/emc/usr_intf/pncconf/pncconf.glade:4234 +#: src/emc/usr_intf/pncconf/pncconf.glade:5115 +msgid " bcd)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1978 +#: src/emc/usr_intf/pncconf/pncconf.glade:3366 +#: src/emc/usr_intf/pncconf/pncconf.glade:4247 +#: src/emc/usr_intf/pncconf/pncconf.glade:5128 +msgid " acd)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:1991 +#: src/emc/usr_intf/pncconf/pncconf.glade:3430 +#: src/emc/usr_intf/pncconf/pncconf.glade:4311 +#: src/emc/usr_intf/pncconf/pncconf.glade:5192 +msgid " cd)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:2004 +#: src/emc/usr_intf/pncconf/pncconf.glade:3404 +#: src/emc/usr_intf/pncconf/pncconf.glade:4285 +#: src/emc/usr_intf/pncconf/pncconf.glade:5166 +msgid " bd)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:2017 +#: src/emc/usr_intf/pncconf/pncconf.glade:3391 +#: src/emc/usr_intf/pncconf/pncconf.glade:4272 +#: src/emc/usr_intf/pncconf/pncconf.glade:5153 +msgid " ad)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:2030 +#: src/emc/usr_intf/pncconf/pncconf.glade:2514 +#: src/emc/usr_intf/pncconf/pncconf.glade:3059 +#: src/emc/usr_intf/pncconf/pncconf.glade:3940 +#: src/emc/usr_intf/pncconf/pncconf.glade:4821 +msgid " abc)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:2041 +#: src/emc/usr_intf/pncconf/pncconf.glade:3026 +#: src/emc/usr_intf/pncconf/pncconf.glade:3907 +#: src/emc/usr_intf/pncconf/pncconf.glade:4788 +msgid " c)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:2207 +#: src/emc/usr_intf/pncconf/pncconf.glade:3049 +#: src/emc/usr_intf/pncconf/pncconf.glade:3930 +#: src/emc/usr_intf/pncconf/pncconf.glade:4811 +msgid " bc)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:2217 +#: src/emc/usr_intf/pncconf/pncconf.glade:3038 +#: src/emc/usr_intf/pncconf/pncconf.glade:3919 +#: src/emc/usr_intf/pncconf/pncconf.glade:4800 +msgid " ac)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:2504 +#: src/emc/usr_intf/pncconf/pncconf.glade:2938 +#: src/emc/usr_intf/pncconf/pncconf.glade:3819 +#: src/emc/usr_intf/pncconf/pncconf.glade:4700 +msgid " ab)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:2577 +msgid "ignore all inputs false" +msgstr "忽略 所有輸入 偽" + +#: src/emc/usr_intf/pncconf/pncconf.glade:2592 +msgid "use gray code" +msgstr "用 gray code" + +#: src/emc/usr_intf/pncconf/pncconf.glade:2607 +#: src/emc/usr_intf/pncconf/pncconf.glade:3489 +#: src/emc/usr_intf/pncconf/pncconf.glade:4356 +#: src/emc/usr_intf/pncconf/pncconf.glade:5237 +msgid "use debounce" +msgstr "用 防抖動" + +#: src/emc/usr_intf/pncconf/pncconf.glade:2658 +#: src/emc/usr_intf/pncconf/pncconf.glade:3453 +#: src/emc/usr_intf/pncconf/pncconf.glade:4334 +#: src/emc/usr_intf/pncconf/pncconf.glade:5215 +msgid "Mux options" +msgstr "MUX 的選項" + +#: src/emc/usr_intf/pncconf/pncconf.glade:2672 +msgid "increments" +msgstr " 增 量 " + +#: src/emc/usr_intf/pncconf/pncconf.glade:2716 +msgid "External MPG Jogging" +msgstr "外部 MPG 慢步" + +#: src/emc/usr_intf/pncconf/pncconf.glade:2747 +#: src/emc/usr_intf/pncconf/pncconf.glade:3628 +#: src/emc/usr_intf/pncconf/pncconf.glade:4509 +msgid "Use MPG " +msgstr "使用 MPG" + +#: src/emc/usr_intf/pncconf/pncconf.glade:2760 +#: src/emc/usr_intf/pncconf/pncconf.glade:3641 +#: src/emc/usr_intf/pncconf/pncconf.glade:4522 +msgid "use switches" +msgstr " 使用 開關 " + +#: src/emc/usr_intf/pncconf/pncconf.glade:3417 +#: src/emc/usr_intf/pncconf/pncconf.glade:4298 +#: src/emc/usr_intf/pncconf/pncconf.glade:5179 +msgid " abd)" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:3504 +#: src/emc/usr_intf/pncconf/pncconf.glade:4371 +#: src/emc/usr_intf/pncconf/pncconf.glade:5252 +msgid "use graycode" +msgstr "用 graycode" + +#: src/emc/usr_intf/pncconf/pncconf.glade:3519 +#: src/emc/usr_intf/pncconf/pncconf.glade:4386 +#: src/emc/usr_intf/pncconf/pncconf.glade:5267 +msgid "ignore all-inputs false" +msgstr " 忽略 所有輸入 偽 " + +#: src/emc/usr_intf/pncconf/pncconf.glade:3563 +#: src/emc/usr_intf/pncconf/pncconf.glade:4444 +#: src/emc/usr_intf/pncconf/pncconf.glade:5325 +msgid "Increments" +msgstr " 增 量 " + +#: src/emc/usr_intf/pncconf/pncconf.glade:3597 +msgid "External Feed Override" +msgstr "外部 進給 超速" + +#: src/emc/usr_intf/pncconf/pncconf.glade:4478 +#, fuzzy +msgid "Max Velocity Override" +msgstr "外部 進給 超速" + +#: src/emc/usr_intf/pncconf/pncconf.glade:5359 +msgid "External Spindle Override" +msgstr "外部 主軸 超速" + +#: src/emc/usr_intf/pncconf/pncconf.glade:5387 +msgid "GUI configuration" +msgstr "GUI 配 置 " + +#: src/emc/usr_intf/pncconf/pncconf.glade:5406 +msgid "Frontend" +msgstr " 前 台 " + +#: src/emc/usr_intf/pncconf/pncconf.glade:5566 +msgid "Position_offset" +msgstr "位置 偏移量 (_o)" + +#: src/emc/usr_intf/pncconf/pncconf.glade:5573 +msgid "Position_feedback" +msgstr "定 位 反 饋 (_f)" + +#: src/emc/usr_intf/pncconf/pncconf.glade:5584 +msgid "Max Spindle Override " +msgstr "設定 主軸超速" + +#: src/emc/usr_intf/pncconf/pncconf.glade:5606 +msgid "Min Spindle Override" +msgstr "最小 主軸超速" + +#: src/emc/usr_intf/pncconf/pncconf.glade:5665 +msgid "Max Feed Override" +msgstr "最大 進給 超越" + +#: src/emc/usr_intf/pncconf/pncconf.glade:5702 +msgid "" +"Machine\n" +"Relative\n" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:5714 +msgid "" +"Commanded\n" +"Actual" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:5729 +msgid "General GUI Defaults" +msgstr "一 般 GUI 預 設 值" + +#: src/emc/usr_intf/pncconf/pncconf.glade:5811 +msgid "Default linear velocity " +msgstr " 線 性 速 度 預 置 值 " + +#: src/emc/usr_intf/pncconf/pncconf.glade:5818 +msgid "Min linear velocity" +msgstr "最 小 線 性 速 度 " + +#: src/emc/usr_intf/pncconf/pncconf.glade:5829 +msgid "Max linear velocity" +msgstr "最 大 線 性 速 度" -#: src/emc/usr_intf/pncconf/pncconf.glade:1054 -msgid "Device Name:" -msgstr "設備名稱:" +#: src/emc/usr_intf/pncconf/pncconf.glade:5879 +#: src/emc/usr_intf/pncconf/pncconf.glade:6085 +#: src/emc/usr_intf/pncconf/pncconf.glade:6097 +msgid "mm / min" +msgstr "毫米 / 分鐘" -#: src/emc/usr_intf/pncconf/pncconf.glade:1117 -#: src/emc/usr_intf/pncconf/pncconf.glade:1255 -msgid "Jog Speed select A" -msgstr "慢步速度選擇 A" +#: src/emc/usr_intf/pncconf/pncconf.glade:5892 +msgid "Default Angular velocity " +msgstr " 角 速 度 預 置 值  " -#: src/emc/usr_intf/pncconf/pncconf.glade:1195 -msgid "Z -" +#: src/emc/usr_intf/pncconf/pncconf.glade:5926 +msgid "gedit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1207 -msgid "Y -" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5939 +msgid "Min Angular velocity" +msgstr "最 小 角 速 度" -#: src/emc/usr_intf/pncconf/pncconf.glade:1219 -msgid "X -" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5966 +msgid "Increments " +msgstr " 增 量 " -#: src/emc/usr_intf/pncconf/pncconf.glade:1229 -msgid "Z +" +#: src/emc/usr_intf/pncconf/pncconf.glade:5977 +msgid "5mm 1mm .5mm .1mm .05mm .01mm .005mm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1239 -msgid "Y +" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5990 +msgid "Max Angular velocity" +msgstr "最 大 角 速 度" -#: src/emc/usr_intf/pncconf/pncconf.glade:1249 -msgid "X +" +#: src/emc/usr_intf/pncconf/pncconf.glade:6017 +#, fuzzy +msgid "Axis Geometry" +msgstr "幾  何" + +#: src/emc/usr_intf/pncconf/pncconf.glade:6028 +msgid "xyzabc" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1289 -#: src/emc/usr_intf/pncconf/pncconf.glade:2208 -#: src/emc/usr_intf/pncconf/pncconf.glade:3496 -#: src/emc/usr_intf/pncconf/pncconf.glade:4377 -#: src/emc/usr_intf/pncconf/pncconf.glade:5258 -msgid "default" -msgstr "預設" +#: src/emc/usr_intf/pncconf/pncconf.glade:6040 +#: src/emc/usr_intf/pncconf/pncconf.glade:6052 +#: src/emc/usr_intf/pncconf/pncconf.glade:6064 +msgid "Deg / min" +msgstr "角度 / 分" -#: src/emc/usr_intf/pncconf/pncconf.glade:1299 -#: src/emc/usr_intf/pncconf/pncconf.glade:2107 -#: src/emc/usr_intf/pncconf/pncconf.glade:3443 -#: src/emc/usr_intf/pncconf/pncconf.glade:4324 -#: src/emc/usr_intf/pncconf/pncconf.glade:5205 -msgid " a)" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:6113 +#: src/emc/usr_intf/pncconf/pncconf.glade:6484 +#: src/emc/usr_intf/pncconf/pncconf.glade:6839 +#: src/emc/usr_intf/pncconf/pncconf.glade:7262 +msgid "size" +msgstr "大小" -#: src/emc/usr_intf/pncconf/pncconf.glade:1311 -#: src/emc/usr_intf/pncconf/pncconf.glade:2096 -#: src/emc/usr_intf/pncconf/pncconf.glade:3432 -#: src/emc/usr_intf/pncconf/pncconf.glade:4313 -#: src/emc/usr_intf/pncconf/pncconf.glade:5194 -msgid " b)" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:6122 +#: src/emc/usr_intf/pncconf/pncconf.glade:6471 +#: src/emc/usr_intf/pncconf/pncconf.glade:6848 +#: src/emc/usr_intf/pncconf/pncconf.glade:7248 +msgid "Position" +msgstr "位置" -#: src/emc/usr_intf/pncconf/pncconf.glade:1322 -msgid " ab)" +#: src/emc/usr_intf/pncconf/pncconf.glade:6159 +#: src/emc/usr_intf/pncconf/pncconf.glade:6433 +#: src/emc/usr_intf/pncconf/pncconf.glade:6885 +#: src/emc/usr_intf/pncconf/pncconf.glade:7210 +#: src/emc/usr_intf/gscreen/gscreen.glade:116 +msgid "X" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1348 -#: src/emc/usr_intf/pncconf/pncconf.glade:1401 -#: src/emc/usr_intf/pncconf/pncconf.glade:1413 -#: src/emc/usr_intf/pncconf/pncconf.glade:1423 -#: src/emc/usr_intf/pncconf/pncconf.glade:1751 -msgid "mm/min " -msgstr "mm/分" +#: src/emc/usr_intf/pncconf/pncconf.glade:6171 +#: src/emc/usr_intf/pncconf/pncconf.glade:6423 +#: src/emc/usr_intf/pncconf/pncconf.glade:6897 +#: src/emc/usr_intf/pncconf/pncconf.glade:7200 +#: src/emc/usr_intf/gscreen/gscreen.glade:1142 +msgid "W" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1456 -msgid "A -" +#: src/emc/usr_intf/pncconf/pncconf.glade:6205 +#: src/emc/usr_intf/pncconf/pncconf.glade:6389 +#: src/emc/usr_intf/pncconf/pncconf.glade:6931 +#: src/emc/usr_intf/pncconf/pncconf.glade:7166 +msgid "H" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1468 -msgid "A +" +#: src/emc/usr_intf/pncconf/pncconf.glade:6227 +msgid "Force Axis to Maximize" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1492 -msgid "Digital Control" -msgstr "數字控制" +#: src/emc/usr_intf/pncconf/pncconf.glade:6249 +msgid "AXIS defaults" +msgstr "AXIS 預 置 值" -#: src/emc/usr_intf/pncconf/pncconf.glade:1539 -msgid "X " +#: src/emc/usr_intf/pncconf/pncconf.glade:6365 +msgid "Force Touchy to Maximize after positioning" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1545 -#: src/emc/usr_intf/pncconf/pncconf.glade:5901 -#: src/emc/usr_intf/pncconf/pncconf.glade:6531 -#: src/emc/usr_intf/pncconf/pncconf.glade:6910 -#: src/emc/usr_intf/pncconf/pncconf.glade:7257 -msgid "Y" +#: src/emc/usr_intf/pncconf/pncconf.glade:6501 +#: src/emc/usr_intf/pncconf/pncconf.glade:7333 +msgid "Follow System Theme\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1555 -msgid "Z" +#: src/emc/usr_intf/pncconf/pncconf.glade:6514 +#: src/emc/usr_intf/pncconf/pncconf.glade:7347 +msgid "GTK Theme" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1565 -msgid "A" +#: src/emc/usr_intf/pncconf/pncconf.glade:6540 +#: src/emc/usr_intf/gscreen/gscreen.glade:1857 +msgid "Absolute Text Color" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1623 -msgid "Analog Control" -msgstr "模擬控制" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1649 -#: src/emc/usr_intf/pncconf/pncconf.glade:1780 -#: src/emc/usr_intf/pncconf/pncconf.glade:2690 -#: src/emc/usr_intf/pncconf/pncconf.glade:3571 -#: src/emc/usr_intf/pncconf/pncconf.glade:4452 -#: src/emc/usr_intf/pncconf/pncconf.glade:5333 -#: src/emc/usr_intf/pncconf/pncconf.glade:57371 -msgid "Details" -msgstr "詳情" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1667 -msgid "USB Joystick Jogging " -msgstr "USB搖桿慢步" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1711 -msgid "shared buttons for all axis" -msgstr "所有軸共享按鈕" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1724 -msgid "buttons for each axis" -msgstr "每個軸 的 按鈕" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1798 -msgid "External Button Jogging" -msgstr "外部 按鈕 慢步" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1839 -msgid "Shared MPG / selectable axis" -msgstr "共享 MPG / 可選軸" +#: src/emc/usr_intf/pncconf/pncconf.glade:6603 +#, fuzzy +msgid "Absolute Textcolor" +msgstr "絕對反饋" -#: src/emc/usr_intf/pncconf/pncconf.glade:1852 -msgid "Mpg per axis" -msgstr "Mpg 每 個軸" +#: src/emc/usr_intf/pncconf/pncconf.glade:6616 +#, fuzzy +msgid "Relative Textcolor" +msgstr "相對位置" -#: src/emc/usr_intf/pncconf/pncconf.glade:1867 -msgid "selectable MPG increments" -msgstr "選擇  MPG  增量" +#: src/emc/usr_intf/pncconf/pncconf.glade:6629 +msgid "DTG Textcolor" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1932 -#: src/emc/usr_intf/pncconf/pncconf.glade:2907 -#: src/emc/usr_intf/pncconf/pncconf.glade:3788 -#: src/emc/usr_intf/pncconf/pncconf.glade:4669 -msgid "Mux options" -msgstr "MUX 的選項" +#: src/emc/usr_intf/pncconf/pncconf.glade:6642 +msgid "Error Textcolor" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1980 -#: src/emc/usr_intf/pncconf/pncconf.glade:2868 -#: src/emc/usr_intf/pncconf/pncconf.glade:3763 -#: src/emc/usr_intf/pncconf/pncconf.glade:4644 -msgid "use debounce" -msgstr "用 防抖動" +#: src/emc/usr_intf/pncconf/pncconf.glade:6677 +msgid "GUI Options" +msgstr "GUI 的選項 " -#: src/emc/usr_intf/pncconf/pncconf.glade:1995 -msgid "use gray code" -msgstr "用 gray code" +#: src/emc/usr_intf/pncconf/pncconf.glade:6708 +msgid "Virtual Control Panel" +msgstr " 虛 擬 控 制 面 板 " -#: src/emc/usr_intf/pncconf/pncconf.glade:2010 -msgid "ignore all inputs false" -msgstr "忽略 所有輸入 偽" +#: src/emc/usr_intf/pncconf/pncconf.glade:6783 +msgid "XYZ buttons (uses Halui)" +msgstr "XYZ 按鍵 (用 Halui)" -#: src/emc/usr_intf/pncconf/pncconf.glade:2035 -#: src/emc/usr_intf/pncconf/pncconf.glade:2048 -#: src/emc/usr_intf/pncconf/pncconf.glade:2061 -#: src/emc/usr_intf/pncconf/pncconf.glade:2407 -#: src/emc/usr_intf/pncconf/pncconf.glade:2420 -#: src/emc/usr_intf/pncconf/pncconf.glade:2433 -#: src/emc/usr_intf/pncconf/pncconf.glade:2446 -#: src/emc/usr_intf/pncconf/pncconf.glade:2457 -#: src/emc/usr_intf/pncconf/pncconf.glade:2470 -#: src/emc/usr_intf/pncconf/pncconf.glade:2483 -#: src/emc/usr_intf/pncconf/pncconf.glade:2496 -#: src/emc/usr_intf/pncconf/pncconf.glade:2509 -#: src/emc/usr_intf/pncconf/pncconf.glade:2522 -#: src/emc/usr_intf/pncconf/pncconf.glade:2535 -#: src/emc/usr_intf/pncconf/pncconf.glade:8343 -#: src/emc/usr_intf/pncconf/pncconf.glade:8379 -#: src/emc/usr_intf/pncconf/pncconf.glade:56542 -#: src/emc/usr_intf/pncconf/pncconf.glade:61266 -#: src/emc/usr_intf/pncconf/pncconf.glade:61278 -#: src/emc/usr_intf/pncconf/pncconf.glade:61290 -#: src/emc/usr_intf/pncconf/pncconf.glade:61302 -#: src/emc/usr_intf/pncconf/pncconf.glade:62475 -#: src/emc/usr_intf/pncconf/pncconf.glade:62487 -#: src/emc/usr_intf/pncconf/pncconf.glade:62499 -#: src/emc/usr_intf/pncconf/pncconf.glade:62511 -#: src/emc/usr_intf/pncconf/pncconf.glade:63452 -#: src/emc/usr_intf/pncconf/pncconf.glade:63464 -#: src/emc/usr_intf/pncconf/pncconf.glade:63476 -#: src/emc/usr_intf/pncconf/pncconf.glade:63488 -#: src/emc/usr_intf/pncconf/pncconf.glade:64661 -#: src/emc/usr_intf/pncconf/pncconf.glade:64673 -#: src/emc/usr_intf/pncconf/pncconf.glade:64685 -#: src/emc/usr_intf/pncconf/pncconf.glade:64697 -#: src/emc/usr_intf/pncconf/pncconf.glade:65608 -#: src/emc/usr_intf/pncconf/pncconf.glade:65620 -#: src/emc/usr_intf/pncconf/pncconf.glade:65632 -#: src/emc/usr_intf/pncconf/pncconf.glade:65644 -msgid "label" -msgstr "標 籤" +#: src/emc/usr_intf/pncconf/pncconf.glade:6954 +msgid "Geometry Options" +msgstr "幾何 的選項" -#: src/emc/usr_intf/pncconf/pncconf.glade:2073 -#: src/emc/usr_intf/pncconf/pncconf.glade:2559 -#: src/emc/usr_intf/pncconf/pncconf.glade:3300 -#: src/emc/usr_intf/pncconf/pncconf.glade:4181 -#: src/emc/usr_intf/pncconf/pncconf.glade:5062 -msgid " abc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7033 +msgid "Pyvcp Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2086 -#: src/emc/usr_intf/pncconf/pncconf.glade:3422 -#: src/emc/usr_intf/pncconf/pncconf.glade:4303 -#: src/emc/usr_intf/pncconf/pncconf.glade:5184 -msgid " ab)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7105 +msgid "Sample display " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2372 -#: src/emc/usr_intf/pncconf/pncconf.glade:3321 -#: src/emc/usr_intf/pncconf/pncconf.glade:4202 -#: src/emc/usr_intf/pncconf/pncconf.glade:5083 -msgid " ac)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7272 +msgid "Standalone Panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2383 -#: src/emc/usr_intf/pncconf/pncconf.glade:3311 -#: src/emc/usr_intf/pncconf/pncconf.glade:4192 -#: src/emc/usr_intf/pncconf/pncconf.glade:5073 -msgid " bc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7289 +msgid "Rightside Embeded" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2547 -#: src/emc/usr_intf/pncconf/pncconf.glade:3332 -#: src/emc/usr_intf/pncconf/pncconf.glade:4213 -#: src/emc/usr_intf/pncconf/pncconf.glade:5094 -msgid " c)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7305 +msgid "Center Tab Embeded" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2570 -#: src/emc/usr_intf/pncconf/pncconf.glade:2966 -#: src/emc/usr_intf/pncconf/pncconf.glade:3847 -#: src/emc/usr_intf/pncconf/pncconf.glade:4728 -msgid " ad)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7320 +msgid "Force Maximize" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2583 -#: src/emc/usr_intf/pncconf/pncconf.glade:2953 -#: src/emc/usr_intf/pncconf/pncconf.glade:3834 -#: src/emc/usr_intf/pncconf/pncconf.glade:4715 -msgid " bd)" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:7359 +#, fuzzy +msgid "Display Options" +msgstr "顯示英寸(_I)" -#: src/emc/usr_intf/pncconf/pncconf.glade:2596 -#: src/emc/usr_intf/pncconf/pncconf.glade:2927 -#: src/emc/usr_intf/pncconf/pncconf.glade:3808 -#: src/emc/usr_intf/pncconf/pncconf.glade:4689 -msgid " cd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:7409 +msgid "Max RPM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2609 -#: src/emc/usr_intf/pncconf/pncconf.glade:2991 -#: src/emc/usr_intf/pncconf/pncconf.glade:3872 -#: src/emc/usr_intf/pncconf/pncconf.glade:4753 -msgid " acd)" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:7422 +#, fuzzy +msgid "Spindle Speed Indicator" +msgstr "主軸 轉速(RPM)" -#: src/emc/usr_intf/pncconf/pncconf.glade:2622 -#: src/emc/usr_intf/pncconf/pncconf.glade:3004 -#: src/emc/usr_intf/pncconf/pncconf.glade:3885 -#: src/emc/usr_intf/pncconf/pncconf.glade:4766 -msgid " bcd)" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:7434 +#, fuzzy +msgid "Spindle At Speed LED" +msgstr "主軸 轉速(RPM)" -#: src/emc/usr_intf/pncconf/pncconf.glade:2635 -#: src/emc/usr_intf/pncconf/pncconf.glade:3017 -#: src/emc/usr_intf/pncconf/pncconf.glade:3898 -#: src/emc/usr_intf/pncconf/pncconf.glade:4779 -msgid " abcd)" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:7446 +#, fuzzy +msgid "Zero X Button" +msgstr "左 按鈕" -#: src/emc/usr_intf/pncconf/pncconf.glade:2648 -#: src/emc/usr_intf/pncconf/pncconf.glade:2979 -#: src/emc/usr_intf/pncconf/pncconf.glade:3860 -#: src/emc/usr_intf/pncconf/pncconf.glade:4741 -msgid " d)" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:7458 +#, fuzzy +msgid "Zero Y Button" +msgstr "左 按鈕" -#: src/emc/usr_intf/pncconf/pncconf.glade:2664 -msgid "increments" -msgstr " 增 量 " +#: src/emc/usr_intf/pncconf/pncconf.glade:7470 +#, fuzzy +msgid "Zero Z Button" +msgstr "左 按鈕" -#: src/emc/usr_intf/pncconf/pncconf.glade:2708 -msgid "External MPG Jogging" -msgstr "外部 MPG 慢步" +#: src/emc/usr_intf/pncconf/pncconf.glade:7482 +#, fuzzy +msgid "Zero A Button" +msgstr "左 按鈕" -#: src/emc/usr_intf/pncconf/pncconf.glade:2739 -#: src/emc/usr_intf/pncconf/pncconf.glade:3620 -#: src/emc/usr_intf/pncconf/pncconf.glade:4501 -msgid "Use MPG " -msgstr "使用 MPG" +#: src/emc/usr_intf/pncconf/pncconf.glade:7494 +msgid "Requires Classicladder touch-off program" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2752 -#: src/emc/usr_intf/pncconf/pncconf.glade:3633 -#: src/emc/usr_intf/pncconf/pncconf.glade:4514 -msgid "use switches" -msgstr " 使用 開關 " +#: src/emc/usr_intf/pncconf/pncconf.glade:7495 +msgid "Auto Z Touch Off Button" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2838 -#: src/emc/usr_intf/pncconf/pncconf.glade:3733 -#: src/emc/usr_intf/pncconf/pncconf.glade:4614 -msgid "ignore all-inputs false" -msgstr " 忽略 所有輸入 偽 " +#: src/emc/usr_intf/pncconf/pncconf.glade:7508 +#, fuzzy +msgid "Sample Options" +msgstr "樣辦配置" -#: src/emc/usr_intf/pncconf/pncconf.glade:2853 -#: src/emc/usr_intf/pncconf/pncconf.glade:3748 -#: src/emc/usr_intf/pncconf/pncconf.glade:4629 -msgid "use graycode" -msgstr "用 graycode" +#: src/emc/usr_intf/pncconf/pncconf.glade:7582 +msgid "Gladevcp Details" +msgstr "GladeVCP 詳情" -#: src/emc/usr_intf/pncconf/pncconf.glade:2940 -#: src/emc/usr_intf/pncconf/pncconf.glade:3821 -#: src/emc/usr_intf/pncconf/pncconf.glade:4702 -msgid " abd)" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:7605 +msgid "Include custom GladeVCP GUI panel" +msgstr "包括自訂 GladeVCP GUI面板" -#: src/emc/usr_intf/pncconf/pncconf.glade:3555 -#: src/emc/usr_intf/pncconf/pncconf.glade:4436 -#: src/emc/usr_intf/pncconf/pncconf.glade:5317 -msgid "Increments" -msgstr " 增 量 " +#: src/emc/usr_intf/pncconf/pncconf.glade:7676 +msgid "Force individual manual homing" +msgstr "實施 個別 手動 回零" -#: src/emc/usr_intf/pncconf/pncconf.glade:3589 -msgid "External Feed Override" -msgstr "外部 進給 超速" +#: src/emc/usr_intf/pncconf/pncconf.glade:7689 +msgid "Random position toolchanger " +msgstr "隨機 位置 換刀 " -#: src/emc/usr_intf/pncconf/pncconf.glade:4470 -#, fuzzy -msgid "Max Velocity Override" -msgstr "外部 進給 超速" +#: src/emc/usr_intf/pncconf/pncconf.glade:7704 +msgid "Require homing before MDI / Running" +msgstr "需要先 回零 才 可以 MDI / Running" -#: src/emc/usr_intf/pncconf/pncconf.glade:5351 -msgid "External Spindle Override" -msgstr "外部 主軸 超速" +#: src/emc/usr_intf/pncconf/pncconf.glade:7713 +msgid "Popup Toolchange Prompt" +msgstr "彈出窗口提示換刀" -#: src/emc/usr_intf/pncconf/pncconf.glade:5379 -msgid "GUI configuration" -msgstr "GUI 配 置 " +#: src/emc/usr_intf/pncconf/pncconf.glade:7727 +msgid "Leave spindle on during tool change" +msgstr "換刀 期間 保留主軸 轉動" -#: src/emc/usr_intf/pncconf/pncconf.glade:5398 -msgid "Frontend" -msgstr " 前 台 " +#: src/emc/usr_intf/pncconf/pncconf.glade:7740 +msgid "Move spindle up before tool change" +msgstr "換刀 之前 向上 移動 主軸" -#: src/emc/usr_intf/pncconf/pncconf.glade:5557 -msgid "" -"Commanded\n" -"Actual" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:7753 +msgid "Restore joint position after shutdown" +msgstr "停機後 恢復 Joint 的位置" -#: src/emc/usr_intf/pncconf/pncconf.glade:5570 -msgid "" -"Machine\n" -"Relative\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:7769 +msgid "Defaults and Options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5608 -msgid "Max Feed Override" -msgstr "最大 進給 超越" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5667 -msgid "Min Spindle Override" -msgstr "最小 主軸超速" +#: src/emc/usr_intf/pncconf/pncconf.glade:7797 +msgid "Mesa0 I/O setup\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5691 -msgid "Max Spindle Override " -msgstr "設定 主軸超速" +#: src/emc/usr_intf/pncconf/pncconf.glade:7817 +msgid "" +"Click on each page tab to configure signal names for each connector port.\n" +"\n" +"Press the button to make the tabbed pages\n" +"accept the changes.\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5702 -msgid "Position_feedback" -msgstr "定 位 反 饋 (_f)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8001 +msgid "3PWM base frequency:" +msgstr "3PWM 基頻:" -#: src/emc/usr_intf/pncconf/pncconf.glade:5713 -msgid "Position_offset" -msgstr "位置 偏移量 (_o)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8036 +msgid "Mesa parport address:" +msgstr "Mesa 並行端口 地址: " -#: src/emc/usr_intf/pncconf/pncconf.glade:5721 -msgid "General GUI Defaults" -msgstr "一 般 GUI 預 設 值" +#: src/emc/usr_intf/pncconf/pncconf.glade:8047 +msgid "Firmware:" +msgstr "固件:" -#: src/emc/usr_intf/pncconf/pncconf.glade:5808 -msgid "Force Axis to Maximize" +#: src/emc/usr_intf/pncconf/pncconf.glade:8069 +msgid "SVST8_4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5832 -#: src/emc/usr_intf/pncconf/pncconf.glade:6602 -#: src/emc/usr_intf/pncconf/pncconf.glade:6841 -#: src/emc/usr_intf/pncconf/pncconf.glade:7328 -msgid "H" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:8094 +msgid "Num of 3 pwm generators: " +msgstr "PWM 產生器" -#: src/emc/usr_intf/pncconf/pncconf.glade:5866 -#: src/emc/usr_intf/pncconf/pncconf.glade:6568 -#: src/emc/usr_intf/pncconf/pncconf.glade:6875 -#: src/emc/usr_intf/pncconf/pncconf.glade:7294 -msgid "W" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:8128 +msgid "Total number of pins:" +msgstr "腳的 總數:" -#: src/emc/usr_intf/pncconf/pncconf.glade:5876 -#: src/emc/usr_intf/pncconf/pncconf.glade:6556 -#: src/emc/usr_intf/pncconf/pncconf.glade:6885 -#: src/emc/usr_intf/pncconf/pncconf.glade:7282 -msgid "X" +#: src/emc/usr_intf/pncconf/pncconf.glade:8153 +msgid "" +"Accept components\n" +" Changes" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5914 -#: src/emc/usr_intf/pncconf/pncconf.glade:6519 -#: src/emc/usr_intf/pncconf/pncconf.glade:6923 -#: src/emc/usr_intf/pncconf/pncconf.glade:7244 -msgid "Position" -msgstr "位置" +#: src/emc/usr_intf/pncconf/pncconf.glade:8168 +msgid "PWM base frequency:" +msgstr "PWM 基頻:" -#: src/emc/usr_intf/pncconf/pncconf.glade:5927 -#: src/emc/usr_intf/pncconf/pncconf.glade:6510 -#: src/emc/usr_intf/pncconf/pncconf.glade:6936 -#: src/emc/usr_intf/pncconf/pncconf.glade:7234 -msgid "size" -msgstr "大小" +#: src/emc/usr_intf/pncconf/pncconf.glade:8179 +msgid "PDM base frequency:" +msgstr "PDM 基頻:" -#: src/emc/usr_intf/pncconf/pncconf.glade:5942 -#: src/emc/usr_intf/pncconf/pncconf.glade:5952 -#: src/emc/usr_intf/pncconf/pncconf.glade:6158 -msgid "mm / min" -msgstr "毫米 / 分鐘" +#: src/emc/usr_intf/pncconf/pncconf.glade:8190 +msgid "Watchdog timeout:" +msgstr "監視程序超時:" -#: src/emc/usr_intf/pncconf/pncconf.glade:5975 -#: src/emc/usr_intf/pncconf/pncconf.glade:5985 -#: src/emc/usr_intf/pncconf/pncconf.glade:5997 -msgid "Deg / min" -msgstr "角度 / 分" +#: src/emc/usr_intf/pncconf/pncconf.glade:8307 +msgid "Num of encoders:" +msgstr "編碼器 的數目:" -#: src/emc/usr_intf/pncconf/pncconf.glade:6010 -msgid "xyzabc" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:8318 +msgid "Num of pwm generators:" +msgstr "PWM 產生器 的數目:" -#: src/emc/usr_intf/pncconf/pncconf.glade:6023 -#, fuzzy -msgid "Axis Geometry" -msgstr "幾  何" +#: src/emc/usr_intf/pncconf/pncconf.glade:8329 +msgid "Num of step generators: " +msgstr "步進 產生器 的數目:" -#: src/emc/usr_intf/pncconf/pncconf.glade:6048 -msgid "Max Angular velocity" -msgstr "最 大 角 速 度" +#: src/emc/usr_intf/pncconf/pncconf.glade:8340 +msgid "Board name" +msgstr "線路板 名字" -#: src/emc/usr_intf/pncconf/pncconf.glade:6061 -msgid "5mm 1mm .5mm .1mm .05mm .01mm .005mm" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:8346 +#, fuzzy +msgid "Num of Smart Serial Ports:" +msgstr "PWM 產生器 的數目:" -#: src/emc/usr_intf/pncconf/pncconf.glade:6074 -msgid "Increments " -msgstr " 增 量 " +#: src/emc/usr_intf/pncconf/pncconf.glade:8393 +msgid "7i29 daughter board" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6099 -msgid "Min Angular velocity" -msgstr "最 小 角 速 度" +#: src/emc/usr_intf/pncconf/pncconf.glade:8402 +msgid "7i30 daughter board" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6112 -msgid "gedit" +#: src/emc/usr_intf/pncconf/pncconf.glade:8414 +msgid "7i33 daughter board" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6148 -msgid "Default Angular velocity " -msgstr " 角 速 度 預 置 值  " +#: src/emc/usr_intf/pncconf/pncconf.glade:8426 +msgid "7i40 daughter board" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6211 -msgid "Max linear velocity" -msgstr "最 大 線 性 速 度" +#: src/emc/usr_intf/pncconf/pncconf.glade:8438 +msgid "7i48 daughter board" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6222 -msgid "Min linear velocity" -msgstr "最 小 線 性 速 度 " +#: src/emc/usr_intf/pncconf/pncconf.glade:8453 +msgid "Sanity Checks" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6233 -msgid "Default linear velocity " -msgstr " 線 性 速 度 預 置 值 " +#: src/emc/usr_intf/pncconf/pncconf.glade:8482 +#, fuzzy +msgid "Num of channels: " +msgstr "沒有足夠的通道" -#: src/emc/usr_intf/pncconf/pncconf.glade:6241 -msgid "AXIS defaults" -msgstr "AXIS 預 置 值" +#: src/emc/usr_intf/pncconf/pncconf.glade:8494 +#, fuzzy +msgid "Num of resolvers:" +msgstr "編碼器 的數目:" -#: src/emc/usr_intf/pncconf/pncconf.glade:6352 -msgid "Error Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:8528 +msgid "" +"Configuration\n" +" Page" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6365 -msgid "DTG Textcolor" +#: src/emc/usr_intf/pncconf/pncconf.glade:8721 +#: src/emc/usr_intf/pncconf/pncconf.glade:8773 +#: src/emc/usr_intf/pncconf/pncconf.glade:9093 +#: src/emc/usr_intf/pncconf/pncconf.glade:9145 +#: src/emc/usr_intf/pncconf/pncconf.glade:9197 +#: src/emc/usr_intf/pncconf/pncconf.glade:9249 +#: src/emc/usr_intf/pncconf/pncconf.glade:9301 +#: src/emc/usr_intf/pncconf/pncconf.glade:9353 +#: src/emc/usr_intf/pncconf/pncconf.glade:9405 +#: src/emc/usr_intf/pncconf/pncconf.glade:9457 +#: src/emc/usr_intf/pncconf/pncconf.glade:9509 +#: src/emc/usr_intf/pncconf/pncconf.glade:9561 +#: src/emc/usr_intf/pncconf/pncconf.glade:10400 +#: src/emc/usr_intf/pncconf/pncconf.glade:10453 +#: src/emc/usr_intf/pncconf/pncconf.glade:10505 +#: src/emc/usr_intf/pncconf/pncconf.glade:10557 +#: src/emc/usr_intf/pncconf/pncconf.glade:11335 +#: src/emc/usr_intf/pncconf/pncconf.glade:11387 +#: src/emc/usr_intf/pncconf/pncconf.glade:12047 +#: src/emc/usr_intf/pncconf/pncconf.glade:12099 +#: src/emc/usr_intf/pncconf/pncconf.glade:12151 +#: src/emc/usr_intf/pncconf/pncconf.glade:12203 +#: src/emc/usr_intf/pncconf/pncconf.glade:13042 +#: src/emc/usr_intf/pncconf/pncconf.glade:13094 +#: src/emc/usr_intf/pncconf/pncconf.glade:13146 +#: src/emc/usr_intf/pncconf/pncconf.glade:13198 +#: src/emc/usr_intf/pncconf/pncconf.glade:13250 +#: src/emc/usr_intf/pncconf/pncconf.glade:13302 +#: src/emc/usr_intf/pncconf/pncconf.glade:13354 +#: src/emc/usr_intf/pncconf/pncconf.glade:13406 +#: src/emc/usr_intf/pncconf/pncconf.glade:13458 +#: src/emc/usr_intf/pncconf/pncconf.glade:13510 +#: src/emc/usr_intf/pncconf/pncconf.glade:14556 +#: src/emc/usr_intf/pncconf/pncconf.glade:14608 +#: src/emc/usr_intf/pncconf/pncconf.glade:14660 +#: src/emc/usr_intf/pncconf/pncconf.glade:14712 +#: src/emc/usr_intf/pncconf/pncconf.glade:15539 +#: src/emc/usr_intf/pncconf/pncconf.glade:15591 +#: src/emc/usr_intf/pncconf/pncconf.glade:15643 +#: src/emc/usr_intf/pncconf/pncconf.glade:15695 +#: src/emc/usr_intf/pncconf/pncconf.glade:15747 +#: src/emc/usr_intf/pncconf/pncconf.glade:15799 +#: src/emc/usr_intf/pncconf/pncconf.glade:15851 +#: src/emc/usr_intf/pncconf/pncconf.glade:15903 +#: src/emc/usr_intf/pncconf/pncconf.glade:15955 +#: src/emc/usr_intf/pncconf/pncconf.glade:16007 +#: src/emc/usr_intf/pncconf/pncconf.glade:16059 +#: src/emc/usr_intf/pncconf/pncconf.glade:16111 +#: src/emc/usr_intf/pncconf/pncconf.glade:16540 +#: src/emc/usr_intf/pncconf/pncconf.glade:16592 +#: src/emc/usr_intf/pncconf/pncconf.glade:17253 +#: src/emc/usr_intf/pncconf/pncconf.glade:17305 +#: src/emc/usr_intf/pncconf/pncconf.glade:17357 +#: src/emc/usr_intf/pncconf/pncconf.glade:18196 +#: src/emc/usr_intf/pncconf/pncconf.glade:18248 +#: src/emc/usr_intf/pncconf/pncconf.glade:18300 +#: src/emc/usr_intf/pncconf/pncconf.glade:18352 +#: src/emc/usr_intf/pncconf/pncconf.glade:18404 +#: src/emc/usr_intf/pncconf/pncconf.glade:18456 +#: src/emc/usr_intf/pncconf/pncconf.glade:18508 +#: src/emc/usr_intf/pncconf/pncconf.glade:18560 +#: src/emc/usr_intf/pncconf/pncconf.glade:18612 +#: src/emc/usr_intf/pncconf/pncconf.glade:18664 +#: src/emc/usr_intf/pncconf/pncconf.glade:18716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26612 +#: src/emc/usr_intf/pncconf/pncconf.glade:26664 +#: src/emc/usr_intf/pncconf/pncconf.glade:26716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26768 +#: src/emc/usr_intf/pncconf/pncconf.glade:26820 +#: src/emc/usr_intf/pncconf/pncconf.glade:26872 +#: src/emc/usr_intf/pncconf/pncconf.glade:26924 +#: src/emc/usr_intf/pncconf/pncconf.glade:26976 +#: src/emc/usr_intf/pncconf/pncconf.glade:27028 +#: src/emc/usr_intf/pncconf/pncconf.glade:27080 +#: src/emc/usr_intf/pncconf/pncconf.glade:27132 +#: src/emc/usr_intf/pncconf/pncconf.glade:27184 +#: src/emc/usr_intf/pncconf/pncconf.glade:28011 +#: src/emc/usr_intf/pncconf/pncconf.glade:28063 +#: src/emc/usr_intf/pncconf/pncconf.glade:28115 +#: src/emc/usr_intf/pncconf/pncconf.glade:28167 +#: src/emc/usr_intf/pncconf/pncconf.glade:29507 +#: src/emc/usr_intf/pncconf/pncconf.glade:29559 +#: src/emc/usr_intf/pncconf/pncconf.glade:29611 +#: src/emc/usr_intf/pncconf/pncconf.glade:29663 +#: src/emc/usr_intf/pncconf/pncconf.glade:30490 +#: src/emc/usr_intf/pncconf/pncconf.glade:30542 +#: src/emc/usr_intf/pncconf/pncconf.glade:30594 +#: src/emc/usr_intf/pncconf/pncconf.glade:30646 +#: src/emc/usr_intf/pncconf/pncconf.glade:30698 +#: src/emc/usr_intf/pncconf/pncconf.glade:30750 +#: src/emc/usr_intf/pncconf/pncconf.glade:30802 +#: src/emc/usr_intf/pncconf/pncconf.glade:30854 +#: src/emc/usr_intf/pncconf/pncconf.glade:30906 +#: src/emc/usr_intf/pncconf/pncconf.glade:30958 +#: src/emc/usr_intf/pncconf/pncconf.glade:31010 +#: src/emc/usr_intf/pncconf/pncconf.glade:31062 +#: src/emc/usr_intf/pncconf/pncconf.glade:31878 +#: src/emc/usr_intf/pncconf/pncconf.glade:31930 +#: src/emc/usr_intf/pncconf/pncconf.glade:31982 +#: src/emc/usr_intf/pncconf/pncconf.glade:32034 +#: src/emc/usr_intf/pncconf/pncconf.glade:32086 +#: src/emc/usr_intf/pncconf/pncconf.glade:32138 +#: src/emc/usr_intf/pncconf/pncconf.glade:32190 +#: src/emc/usr_intf/pncconf/pncconf.glade:32242 +#: src/emc/usr_intf/pncconf/pncconf.glade:32294 +#: src/emc/usr_intf/pncconf/pncconf.glade:32346 +#: src/emc/usr_intf/pncconf/pncconf.glade:32398 +#: src/emc/usr_intf/pncconf/pncconf.glade:32450 +#: src/emc/usr_intf/pncconf/pncconf.glade:33852 +#: src/emc/usr_intf/pncconf/pncconf.glade:33904 +#: src/emc/usr_intf/pncconf/pncconf.glade:33956 +#: src/emc/usr_intf/pncconf/pncconf.glade:34008 +#: src/emc/usr_intf/pncconf/pncconf.glade:34835 +#: src/emc/usr_intf/pncconf/pncconf.glade:34887 +#: src/emc/usr_intf/pncconf/pncconf.glade:34939 +#: src/emc/usr_intf/pncconf/pncconf.glade:34991 +#: src/emc/usr_intf/pncconf/pncconf.glade:35043 +#: src/emc/usr_intf/pncconf/pncconf.glade:35095 +#: src/emc/usr_intf/pncconf/pncconf.glade:35147 +#: src/emc/usr_intf/pncconf/pncconf.glade:35199 +#: src/emc/usr_intf/pncconf/pncconf.glade:35251 +#: src/emc/usr_intf/pncconf/pncconf.glade:35303 +#: src/emc/usr_intf/pncconf/pncconf.glade:35355 +#: src/emc/usr_intf/pncconf/pncconf.glade:35407 +#: src/emc/usr_intf/pncconf/pncconf.glade:36096 +#: src/emc/usr_intf/pncconf/pncconf.glade:36148 +#: src/emc/usr_intf/pncconf/pncconf.glade:36200 +#: src/emc/usr_intf/pncconf/pncconf.glade:36252 +#: src/emc/usr_intf/pncconf/pncconf.glade:36304 +#: src/emc/usr_intf/pncconf/pncconf.glade:36356 +#: src/emc/usr_intf/pncconf/pncconf.glade:36408 +#: src/emc/usr_intf/pncconf/pncconf.glade:36460 +#: src/emc/usr_intf/pncconf/pncconf.glade:36512 +#: src/emc/usr_intf/pncconf/pncconf.glade:36564 +#: src/emc/usr_intf/pncconf/pncconf.glade:36616 +#: src/emc/usr_intf/pncconf/pncconf.glade:36668 +#: src/emc/usr_intf/pncconf/pncconf.glade:37495 +#: src/emc/usr_intf/pncconf/pncconf.glade:37547 +#: src/emc/usr_intf/pncconf/pncconf.glade:37599 +#: src/emc/usr_intf/pncconf/pncconf.glade:37651 +#: src/emc/usr_intf/pncconf/pncconf.glade:39168 +#: src/emc/usr_intf/pncconf/pncconf.glade:39220 +#: src/emc/usr_intf/pncconf/pncconf.glade:39272 +#: src/emc/usr_intf/pncconf/pncconf.glade:39324 +#: src/emc/usr_intf/pncconf/pncconf.glade:39376 +#: src/emc/usr_intf/pncconf/pncconf.glade:39428 +#: src/emc/usr_intf/pncconf/pncconf.glade:39480 +#: src/emc/usr_intf/pncconf/pncconf.glade:39532 +#: src/emc/usr_intf/pncconf/pncconf.glade:39584 +#: src/emc/usr_intf/pncconf/pncconf.glade:39636 +#: src/emc/usr_intf/pncconf/pncconf.glade:39688 +#: src/emc/usr_intf/pncconf/pncconf.glade:39740 +#: src/emc/usr_intf/pncconf/pncconf.glade:40456 +#: src/emc/usr_intf/pncconf/pncconf.glade:40508 +#: src/emc/usr_intf/pncconf/pncconf.glade:40560 +#: src/emc/usr_intf/pncconf/pncconf.glade:40612 +#: src/emc/usr_intf/pncconf/pncconf.glade:40664 +#: src/emc/usr_intf/pncconf/pncconf.glade:40716 +#: src/emc/usr_intf/pncconf/pncconf.glade:40768 +#: src/emc/usr_intf/pncconf/pncconf.glade:40820 +#: src/emc/usr_intf/pncconf/pncconf.glade:40872 +#: src/emc/usr_intf/pncconf/pncconf.glade:40924 +#: src/emc/usr_intf/pncconf/pncconf.glade:40976 +#: src/emc/usr_intf/pncconf/pncconf.glade:41028 +#: src/emc/usr_intf/pncconf/pncconf.glade:41855 +#: src/emc/usr_intf/pncconf/pncconf.glade:41907 +#: src/emc/usr_intf/pncconf/pncconf.glade:41959 +#: src/emc/usr_intf/pncconf/pncconf.glade:42011 +#: src/emc/usr_intf/pncconf/pncconf.glade:43351 +#: src/emc/usr_intf/pncconf/pncconf.glade:43403 +#: src/emc/usr_intf/pncconf/pncconf.glade:43455 +#: src/emc/usr_intf/pncconf/pncconf.glade:43507 +#: src/emc/usr_intf/pncconf/pncconf.glade:44334 +#: src/emc/usr_intf/pncconf/pncconf.glade:44386 +#: src/emc/usr_intf/pncconf/pncconf.glade:44438 +#: src/emc/usr_intf/pncconf/pncconf.glade:44490 +#: src/emc/usr_intf/pncconf/pncconf.glade:44542 +#: src/emc/usr_intf/pncconf/pncconf.glade:44594 +#: src/emc/usr_intf/pncconf/pncconf.glade:44646 +#: src/emc/usr_intf/pncconf/pncconf.glade:44698 +#: src/emc/usr_intf/pncconf/pncconf.glade:44750 +#: src/emc/usr_intf/pncconf/pncconf.glade:44802 +#: src/emc/usr_intf/pncconf/pncconf.glade:44854 +#: src/emc/usr_intf/pncconf/pncconf.glade:44906 +#: src/emc/usr_intf/pncconf/pncconf.glade:45711 +#: src/emc/usr_intf/pncconf/pncconf.glade:45763 +#: src/emc/usr_intf/pncconf/pncconf.glade:45815 +#: src/emc/usr_intf/pncconf/pncconf.glade:45867 +#: src/emc/usr_intf/pncconf/pncconf.glade:45919 +#: src/emc/usr_intf/pncconf/pncconf.glade:45971 +#: src/emc/usr_intf/pncconf/pncconf.glade:46023 +#: src/emc/usr_intf/pncconf/pncconf.glade:46075 +#: src/emc/usr_intf/pncconf/pncconf.glade:46127 +#: src/emc/usr_intf/pncconf/pncconf.glade:46179 +#: src/emc/usr_intf/pncconf/pncconf.glade:46231 +#: src/emc/usr_intf/pncconf/pncconf.glade:46283 +#: src/emc/usr_intf/pncconf/pncconf.glade:47379 +#: src/emc/usr_intf/pncconf/pncconf.glade:47431 +#: src/emc/usr_intf/pncconf/pncconf.glade:47483 +#: src/emc/usr_intf/pncconf/pncconf.glade:47535 +#: src/emc/usr_intf/pncconf/pncconf.glade:47587 +#: src/emc/usr_intf/pncconf/pncconf.glade:47639 +#: src/emc/usr_intf/pncconf/pncconf.glade:47691 +#: src/emc/usr_intf/pncconf/pncconf.glade:47743 +#: src/emc/usr_intf/pncconf/pncconf.glade:47795 +#: src/emc/usr_intf/pncconf/pncconf.glade:47847 +#: src/emc/usr_intf/pncconf/pncconf.glade:47899 +#: src/emc/usr_intf/pncconf/pncconf.glade:47951 +#: src/emc/usr_intf/pncconf/pncconf.glade:48778 +#: src/emc/usr_intf/pncconf/pncconf.glade:48830 +#: src/emc/usr_intf/pncconf/pncconf.glade:48882 +#: src/emc/usr_intf/pncconf/pncconf.glade:48934 +#: src/emc/usr_intf/pncconf/pncconf.glade:50274 +#: src/emc/usr_intf/pncconf/pncconf.glade:50326 +#: src/emc/usr_intf/pncconf/pncconf.glade:50378 +#: src/emc/usr_intf/pncconf/pncconf.glade:50430 +#: src/emc/usr_intf/pncconf/pncconf.glade:51257 +#: src/emc/usr_intf/pncconf/pncconf.glade:51309 +#: src/emc/usr_intf/pncconf/pncconf.glade:51361 +#: src/emc/usr_intf/pncconf/pncconf.glade:51413 +#: src/emc/usr_intf/pncconf/pncconf.glade:51465 +#: src/emc/usr_intf/pncconf/pncconf.glade:51517 +#: src/emc/usr_intf/pncconf/pncconf.glade:51569 +#: src/emc/usr_intf/pncconf/pncconf.glade:51621 +#: src/emc/usr_intf/pncconf/pncconf.glade:51673 +#: src/emc/usr_intf/pncconf/pncconf.glade:51725 +#: src/emc/usr_intf/pncconf/pncconf.glade:51777 +#: src/emc/usr_intf/pncconf/pncconf.glade:51829 +#: src/emc/usr_intf/pncconf/pncconf.glade:52634 +#: src/emc/usr_intf/pncconf/pncconf.glade:52686 +#: src/emc/usr_intf/pncconf/pncconf.glade:52738 +#: src/emc/usr_intf/pncconf/pncconf.glade:52790 +#: src/emc/usr_intf/pncconf/pncconf.glade:52842 +#: src/emc/usr_intf/pncconf/pncconf.glade:52894 +#: src/emc/usr_intf/pncconf/pncconf.glade:52946 +#: src/emc/usr_intf/pncconf/pncconf.glade:52998 +#: src/emc/usr_intf/pncconf/pncconf.glade:53050 +#: src/emc/usr_intf/pncconf/pncconf.glade:53102 +#: src/emc/usr_intf/pncconf/pncconf.glade:53154 +#: src/emc/usr_intf/pncconf/pncconf.glade:53206 +#: src/emc/usr_intf/pncconf/pncconf.glade:54302 +#: src/emc/usr_intf/pncconf/pncconf.glade:54354 +#: src/emc/usr_intf/pncconf/pncconf.glade:54406 +#: src/emc/usr_intf/pncconf/pncconf.glade:54458 +#: src/emc/usr_intf/pncconf/pncconf.glade:54510 +#: src/emc/usr_intf/pncconf/pncconf.glade:54562 +#: src/emc/usr_intf/pncconf/pncconf.glade:54614 +#: src/emc/usr_intf/pncconf/pncconf.glade:54666 +#: src/emc/usr_intf/pncconf/pncconf.glade:54718 +#: src/emc/usr_intf/pncconf/pncconf.glade:54770 +#: src/emc/usr_intf/pncconf/pncconf.glade:54822 +#: src/emc/usr_intf/pncconf/pncconf.glade:54874 +#: src/emc/usr_intf/pncconf/pncconf.glade:55701 +#: src/emc/usr_intf/pncconf/pncconf.glade:55753 +#: src/emc/usr_intf/pncconf/pncconf.glade:55805 +#: src/emc/usr_intf/pncconf/pncconf.glade:55857 +#: src/emc/usr_intf/pncconf/pncconf.glade:57197 +#: src/emc/usr_intf/pncconf/pncconf.glade:57249 +#: src/emc/usr_intf/pncconf/pncconf.glade:57301 +#: src/emc/usr_intf/pncconf/pncconf.glade:57353 +#: src/emc/usr_intf/pncconf/pncconf.glade:58180 +#: src/emc/usr_intf/pncconf/pncconf.glade:58232 +#: src/emc/usr_intf/pncconf/pncconf.glade:58284 +#: src/emc/usr_intf/pncconf/pncconf.glade:58336 +#: src/emc/usr_intf/pncconf/pncconf.glade:58388 +#: src/emc/usr_intf/pncconf/pncconf.glade:58440 +#: src/emc/usr_intf/pncconf/pncconf.glade:58492 +#: src/emc/usr_intf/pncconf/pncconf.glade:58544 +#: src/emc/usr_intf/pncconf/pncconf.glade:58596 +#: src/emc/usr_intf/pncconf/pncconf.glade:58648 +#: src/emc/usr_intf/pncconf/pncconf.glade:58700 +#: src/emc/usr_intf/pncconf/pncconf.glade:58752 +#: src/emc/usr_intf/pncconf/pncconf.glade:59557 +#: src/emc/usr_intf/pncconf/pncconf.glade:59609 +#: src/emc/usr_intf/pncconf/pncconf.glade:59661 +#: src/emc/usr_intf/pncconf/pncconf.glade:59713 +#: src/emc/usr_intf/pncconf/pncconf.glade:59765 +#: src/emc/usr_intf/pncconf/pncconf.glade:59817 +#: src/emc/usr_intf/pncconf/pncconf.glade:59869 +#: src/emc/usr_intf/pncconf/pncconf.glade:59921 +#: src/emc/usr_intf/pncconf/pncconf.glade:59973 +#: src/emc/usr_intf/pncconf/pncconf.glade:60025 +#: src/emc/usr_intf/pncconf/pncconf.glade:60077 +#: src/emc/usr_intf/pncconf/pncconf.glade:60129 +msgid "" +"ESTOP IN\n" +"Spindle PPR\n" +"Spindle A \n" +"Spindle B \n" +"Home X \n" +"Home Y \n" +"Home Z\n" +"Home A\n" +"Minimum Limit + Home X \n" +"Minimum Limit + Home Y \n" +"Minimum Limit + Home Z \n" +"Minimum Limit + Home A\n" +"Maximum Limit + Home X \n" +"Maximum Limit + Home Y \n" +"Maximum Limit + Home Z \n" +"Maximum Limit + Home A\n" +"Both Limit + Home X \n" +"Both Limit + Home Y \n" +"Both Limit + Home Z \n" +"Both Limit + Home A\n" +"Minimum Limit X \n" +"Minimum Limit Y \n" +"Minimum Limit Z \n" +"Minimum Limit A\n" +"Maximum Limit X \n" +"Maximum Limit Y \n" +"Maximum Limit Z \n" +"Maximum Limit A\n" +"Both Limit X \n" +"Both Limit Y \n" +"Both Limit Z \n" +"Both Limit A\n" +"All limits\n" +"All home\n" +"Unused" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6378 -#, fuzzy -msgid "Relative Textcolor" -msgstr "相對位置" +#: src/emc/usr_intf/pncconf/pncconf.glade:8825 +#: src/emc/usr_intf/pncconf/pncconf.glade:9081 +#: src/emc/usr_intf/pncconf/pncconf.glade:13563 +#: src/emc/usr_intf/pncconf/pncconf.glade:13818 +#: src/emc/usr_intf/pncconf/pncconf.glade:16164 +#: src/emc/usr_intf/pncconf/pncconf.glade:16410 +#: src/emc/usr_intf/pncconf/pncconf.glade:18769 +#: src/emc/usr_intf/pncconf/pncconf.glade:19024 +#: src/emc/usr_intf/pncconf/pncconf.glade:20571 +#: src/emc/usr_intf/pncconf/pncconf.glade:20820 +#: src/emc/usr_intf/pncconf/pncconf.glade:20949 +#: src/emc/usr_intf/pncconf/pncconf.glade:21199 +#: src/emc/usr_intf/pncconf/pncconf.glade:22745 +#: src/emc/usr_intf/pncconf/pncconf.glade:22995 +#: src/emc/usr_intf/pncconf/pncconf.glade:24541 +#: src/emc/usr_intf/pncconf/pncconf.glade:24791 +#: src/emc/usr_intf/pncconf/pncconf.glade:26353 +#: src/emc/usr_intf/pncconf/pncconf.glade:26600 +#: src/emc/usr_intf/pncconf/pncconf.glade:31115 +#: src/emc/usr_intf/pncconf/pncconf.glade:31361 +#: src/emc/usr_intf/pncconf/pncconf.glade:31621 +#: src/emc/usr_intf/pncconf/pncconf.glade:35460 +#: src/emc/usr_intf/pncconf/pncconf.glade:35706 +#: src/emc/usr_intf/pncconf/pncconf.glade:35837 +#: src/emc/usr_intf/pncconf/pncconf.glade:36084 +#: src/emc/usr_intf/pncconf/pncconf.glade:40037 +#: src/emc/usr_intf/pncconf/pncconf.glade:40197 +#: src/emc/usr_intf/pncconf/pncconf.glade:40444 +#: src/emc/usr_intf/pncconf/pncconf.glade:44959 +#: src/emc/usr_intf/pncconf/pncconf.glade:45205 +#: src/emc/usr_intf/pncconf/pncconf.glade:45454 +#: src/emc/usr_intf/pncconf/pncconf.glade:47120 +#: src/emc/usr_intf/pncconf/pncconf.glade:47367 +#: src/emc/usr_intf/pncconf/pncconf.glade:51882 +#: src/emc/usr_intf/pncconf/pncconf.glade:52128 +#: src/emc/usr_intf/pncconf/pncconf.glade:52377 +#: src/emc/usr_intf/pncconf/pncconf.glade:54043 +#: src/emc/usr_intf/pncconf/pncconf.glade:54290 +#: src/emc/usr_intf/pncconf/pncconf.glade:58805 +#: src/emc/usr_intf/pncconf/pncconf.glade:59051 +#: src/emc/usr_intf/pncconf/pncconf.glade:59300 +msgid "Pin Type" +msgstr "接腳類型" -#: src/emc/usr_intf/pncconf/pncconf.glade:6391 -#, fuzzy -msgid "Absolute Textcolor" -msgstr "絕對反饋" +#: src/emc/usr_intf/pncconf/pncconf.glade:8838 +#: src/emc/usr_intf/pncconf/pncconf.glade:8900 +#: src/emc/usr_intf/pncconf/pncconf.glade:13743 +#: src/emc/usr_intf/pncconf/pncconf.glade:13806 +#: src/emc/usr_intf/pncconf/pncconf.glade:16335 +#: src/emc/usr_intf/pncconf/pncconf.glade:16398 +#: src/emc/usr_intf/pncconf/pncconf.glade:18949 +#: src/emc/usr_intf/pncconf/pncconf.glade:19012 +#: src/emc/usr_intf/pncconf/pncconf.glade:20751 +#: src/emc/usr_intf/pncconf/pncconf.glade:20808 +#: src/emc/usr_intf/pncconf/pncconf.glade:20962 +#: src/emc/usr_intf/pncconf/pncconf.glade:21018 +#: src/emc/usr_intf/pncconf/pncconf.glade:22758 +#: src/emc/usr_intf/pncconf/pncconf.glade:22814 +#: src/emc/usr_intf/pncconf/pncconf.glade:24554 +#: src/emc/usr_intf/pncconf/pncconf.glade:24610 +#: src/emc/usr_intf/pncconf/pncconf.glade:26366 +#: src/emc/usr_intf/pncconf/pncconf.glade:26428 +#: src/emc/usr_intf/pncconf/pncconf.glade:31286 +#: src/emc/usr_intf/pncconf/pncconf.glade:31349 +#: src/emc/usr_intf/pncconf/pncconf.glade:31634 +#: src/emc/usr_intf/pncconf/pncconf.glade:35631 +#: src/emc/usr_intf/pncconf/pncconf.glade:35694 +#: src/emc/usr_intf/pncconf/pncconf.glade:35850 +#: src/emc/usr_intf/pncconf/pncconf.glade:35912 +#: src/emc/usr_intf/pncconf/pncconf.glade:40025 +#: src/emc/usr_intf/pncconf/pncconf.glade:40210 +#: src/emc/usr_intf/pncconf/pncconf.glade:40272 +#: src/emc/usr_intf/pncconf/pncconf.glade:45130 +#: src/emc/usr_intf/pncconf/pncconf.glade:45193 +#: src/emc/usr_intf/pncconf/pncconf.glade:45467 +#: src/emc/usr_intf/pncconf/pncconf.glade:47133 +#: src/emc/usr_intf/pncconf/pncconf.glade:47195 +#: src/emc/usr_intf/pncconf/pncconf.glade:52053 +#: src/emc/usr_intf/pncconf/pncconf.glade:52116 +#: src/emc/usr_intf/pncconf/pncconf.glade:52390 +#: src/emc/usr_intf/pncconf/pncconf.glade:54056 +#: src/emc/usr_intf/pncconf/pncconf.glade:54118 +#: src/emc/usr_intf/pncconf/pncconf.glade:58976 +#: src/emc/usr_intf/pncconf/pncconf.glade:59039 +#: src/emc/usr_intf/pncconf/pncconf.glade:59313 +msgid "Inv" +msgstr "反轉" -#: src/emc/usr_intf/pncconf/pncconf.glade:6454 -msgid "Absolute Text Color" +#: src/emc/usr_intf/pncconf/pncconf.glade:8867 +#: src/emc/usr_intf/pncconf/pncconf.glade:10731 +#: src/emc/usr_intf/pncconf/pncconf.glade:10751 +#: src/emc/usr_intf/pncconf/pncconf.glade:10771 +#: src/emc/usr_intf/pncconf/pncconf.glade:10791 +#: src/emc/usr_intf/pncconf/pncconf.glade:10811 +#: src/emc/usr_intf/pncconf/pncconf.glade:10831 +#: src/emc/usr_intf/pncconf/pncconf.glade:10851 +#: src/emc/usr_intf/pncconf/pncconf.glade:10871 +#: src/emc/usr_intf/pncconf/pncconf.glade:10891 +#: src/emc/usr_intf/pncconf/pncconf.glade:10911 +#: src/emc/usr_intf/pncconf/pncconf.glade:10931 +#: src/emc/usr_intf/pncconf/pncconf.glade:10951 +#: src/emc/usr_intf/pncconf/pncconf.glade:10971 +#: src/emc/usr_intf/pncconf/pncconf.glade:10991 +#: src/emc/usr_intf/pncconf/pncconf.glade:11011 +#: src/emc/usr_intf/pncconf/pncconf.glade:11031 +#: src/emc/usr_intf/pncconf/pncconf.glade:11051 +#: src/emc/usr_intf/pncconf/pncconf.glade:11071 +#: src/emc/usr_intf/pncconf/pncconf.glade:11091 +#: src/emc/usr_intf/pncconf/pncconf.glade:11111 +#: src/emc/usr_intf/pncconf/pncconf.glade:11131 +#: src/emc/usr_intf/pncconf/pncconf.glade:11151 +#: src/emc/usr_intf/pncconf/pncconf.glade:11171 +#: src/emc/usr_intf/pncconf/pncconf.glade:11465 +#: src/emc/usr_intf/pncconf/pncconf.glade:11485 +#: src/emc/usr_intf/pncconf/pncconf.glade:11505 +#: src/emc/usr_intf/pncconf/pncconf.glade:11525 +#: src/emc/usr_intf/pncconf/pncconf.glade:11545 +#: src/emc/usr_intf/pncconf/pncconf.glade:11565 +#: src/emc/usr_intf/pncconf/pncconf.glade:11585 +#: src/emc/usr_intf/pncconf/pncconf.glade:11605 +#: src/emc/usr_intf/pncconf/pncconf.glade:11625 +#: src/emc/usr_intf/pncconf/pncconf.glade:11645 +#: src/emc/usr_intf/pncconf/pncconf.glade:11665 +#: src/emc/usr_intf/pncconf/pncconf.glade:11685 +#: src/emc/usr_intf/pncconf/pncconf.glade:11705 +#: src/emc/usr_intf/pncconf/pncconf.glade:11725 +#: src/emc/usr_intf/pncconf/pncconf.glade:11745 +#: src/emc/usr_intf/pncconf/pncconf.glade:11765 +#: src/emc/usr_intf/pncconf/pncconf.glade:11785 +#: src/emc/usr_intf/pncconf/pncconf.glade:11805 +#: src/emc/usr_intf/pncconf/pncconf.glade:11825 +#: src/emc/usr_intf/pncconf/pncconf.glade:11845 +#: src/emc/usr_intf/pncconf/pncconf.glade:11865 +#: src/emc/usr_intf/pncconf/pncconf.glade:11885 +#: src/emc/usr_intf/pncconf/pncconf.glade:11905 +#: src/emc/usr_intf/pncconf/pncconf.glade:13768 +#: src/emc/usr_intf/pncconf/pncconf.glade:13974 +#: src/emc/usr_intf/pncconf/pncconf.glade:13994 +#: src/emc/usr_intf/pncconf/pncconf.glade:14014 +#: src/emc/usr_intf/pncconf/pncconf.glade:14034 +#: src/emc/usr_intf/pncconf/pncconf.glade:14054 +#: src/emc/usr_intf/pncconf/pncconf.glade:14074 +#: src/emc/usr_intf/pncconf/pncconf.glade:14094 +#: src/emc/usr_intf/pncconf/pncconf.glade:14114 +#: src/emc/usr_intf/pncconf/pncconf.glade:14134 +#: src/emc/usr_intf/pncconf/pncconf.glade:14154 +#: src/emc/usr_intf/pncconf/pncconf.glade:14174 +#: src/emc/usr_intf/pncconf/pncconf.glade:14194 +#: src/emc/usr_intf/pncconf/pncconf.glade:14214 +#: src/emc/usr_intf/pncconf/pncconf.glade:14234 +#: src/emc/usr_intf/pncconf/pncconf.glade:14254 +#: src/emc/usr_intf/pncconf/pncconf.glade:14274 +#: src/emc/usr_intf/pncconf/pncconf.glade:14294 +#: src/emc/usr_intf/pncconf/pncconf.glade:14314 +#: src/emc/usr_intf/pncconf/pncconf.glade:14334 +#: src/emc/usr_intf/pncconf/pncconf.glade:14354 +#: src/emc/usr_intf/pncconf/pncconf.glade:14374 +#: src/emc/usr_intf/pncconf/pncconf.glade:14394 +#: src/emc/usr_intf/pncconf/pncconf.glade:14414 +#: src/emc/usr_intf/pncconf/pncconf.glade:16360 +#: src/emc/usr_intf/pncconf/pncconf.glade:16670 +#: src/emc/usr_intf/pncconf/pncconf.glade:16690 +#: src/emc/usr_intf/pncconf/pncconf.glade:16710 +#: src/emc/usr_intf/pncconf/pncconf.glade:16730 +#: src/emc/usr_intf/pncconf/pncconf.glade:16750 +#: src/emc/usr_intf/pncconf/pncconf.glade:16770 +#: src/emc/usr_intf/pncconf/pncconf.glade:16790 +#: src/emc/usr_intf/pncconf/pncconf.glade:16810 +#: src/emc/usr_intf/pncconf/pncconf.glade:16830 +#: src/emc/usr_intf/pncconf/pncconf.glade:16850 +#: src/emc/usr_intf/pncconf/pncconf.glade:16870 +#: src/emc/usr_intf/pncconf/pncconf.glade:16890 +#: src/emc/usr_intf/pncconf/pncconf.glade:16910 +#: src/emc/usr_intf/pncconf/pncconf.glade:16930 +#: src/emc/usr_intf/pncconf/pncconf.glade:16950 +#: src/emc/usr_intf/pncconf/pncconf.glade:16970 +#: src/emc/usr_intf/pncconf/pncconf.glade:16990 +#: src/emc/usr_intf/pncconf/pncconf.glade:17010 +#: src/emc/usr_intf/pncconf/pncconf.glade:17030 +#: src/emc/usr_intf/pncconf/pncconf.glade:17050 +#: src/emc/usr_intf/pncconf/pncconf.glade:17070 +#: src/emc/usr_intf/pncconf/pncconf.glade:17090 +#: src/emc/usr_intf/pncconf/pncconf.glade:17110 +#: src/emc/usr_intf/pncconf/pncconf.glade:18974 +#: src/emc/usr_intf/pncconf/pncconf.glade:26395 +#: src/emc/usr_intf/pncconf/pncconf.glade:28311 +#: src/emc/usr_intf/pncconf/pncconf.glade:28331 +#: src/emc/usr_intf/pncconf/pncconf.glade:28351 +#: src/emc/usr_intf/pncconf/pncconf.glade:28371 +#: src/emc/usr_intf/pncconf/pncconf.glade:28391 +#: src/emc/usr_intf/pncconf/pncconf.glade:28411 +#: src/emc/usr_intf/pncconf/pncconf.glade:28431 +#: src/emc/usr_intf/pncconf/pncconf.glade:28451 +#: src/emc/usr_intf/pncconf/pncconf.glade:28471 +#: src/emc/usr_intf/pncconf/pncconf.glade:28491 +#: src/emc/usr_intf/pncconf/pncconf.glade:28511 +#: src/emc/usr_intf/pncconf/pncconf.glade:28531 +#: src/emc/usr_intf/pncconf/pncconf.glade:28551 +#: src/emc/usr_intf/pncconf/pncconf.glade:28571 +#: src/emc/usr_intf/pncconf/pncconf.glade:28591 +#: src/emc/usr_intf/pncconf/pncconf.glade:28611 +#: src/emc/usr_intf/pncconf/pncconf.glade:28631 +#: src/emc/usr_intf/pncconf/pncconf.glade:28651 +#: src/emc/usr_intf/pncconf/pncconf.glade:28671 +#: src/emc/usr_intf/pncconf/pncconf.glade:28691 +#: src/emc/usr_intf/pncconf/pncconf.glade:28711 +#: src/emc/usr_intf/pncconf/pncconf.glade:28731 +#: src/emc/usr_intf/pncconf/pncconf.glade:28751 +#: src/emc/usr_intf/pncconf/pncconf.glade:28942 +#: src/emc/usr_intf/pncconf/pncconf.glade:28962 +#: src/emc/usr_intf/pncconf/pncconf.glade:28982 +#: src/emc/usr_intf/pncconf/pncconf.glade:29002 +#: src/emc/usr_intf/pncconf/pncconf.glade:29022 +#: src/emc/usr_intf/pncconf/pncconf.glade:29042 +#: src/emc/usr_intf/pncconf/pncconf.glade:29062 +#: src/emc/usr_intf/pncconf/pncconf.glade:29082 +#: src/emc/usr_intf/pncconf/pncconf.glade:29102 +#: src/emc/usr_intf/pncconf/pncconf.glade:29122 +#: src/emc/usr_intf/pncconf/pncconf.glade:29142 +#: src/emc/usr_intf/pncconf/pncconf.glade:29162 +#: src/emc/usr_intf/pncconf/pncconf.glade:29182 +#: src/emc/usr_intf/pncconf/pncconf.glade:29202 +#: src/emc/usr_intf/pncconf/pncconf.glade:29222 +#: src/emc/usr_intf/pncconf/pncconf.glade:29242 +#: src/emc/usr_intf/pncconf/pncconf.glade:29262 +#: src/emc/usr_intf/pncconf/pncconf.glade:29282 +#: src/emc/usr_intf/pncconf/pncconf.glade:29302 +#: src/emc/usr_intf/pncconf/pncconf.glade:29322 +#: src/emc/usr_intf/pncconf/pncconf.glade:29342 +#: src/emc/usr_intf/pncconf/pncconf.glade:29362 +#: src/emc/usr_intf/pncconf/pncconf.glade:29382 +#: src/emc/usr_intf/pncconf/pncconf.glade:31311 +#: src/emc/usr_intf/pncconf/pncconf.glade:31663 +#: src/emc/usr_intf/pncconf/pncconf.glade:32881 +#: src/emc/usr_intf/pncconf/pncconf.glade:32901 +#: src/emc/usr_intf/pncconf/pncconf.glade:32921 +#: src/emc/usr_intf/pncconf/pncconf.glade:32941 +#: src/emc/usr_intf/pncconf/pncconf.glade:32961 +#: src/emc/usr_intf/pncconf/pncconf.glade:32981 +#: src/emc/usr_intf/pncconf/pncconf.glade:33001 +#: src/emc/usr_intf/pncconf/pncconf.glade:33021 +#: src/emc/usr_intf/pncconf/pncconf.glade:33041 +#: src/emc/usr_intf/pncconf/pncconf.glade:33061 +#: src/emc/usr_intf/pncconf/pncconf.glade:33081 +#: src/emc/usr_intf/pncconf/pncconf.glade:33300 +#: src/emc/usr_intf/pncconf/pncconf.glade:33320 +#: src/emc/usr_intf/pncconf/pncconf.glade:33340 +#: src/emc/usr_intf/pncconf/pncconf.glade:33360 +#: src/emc/usr_intf/pncconf/pncconf.glade:33380 +#: src/emc/usr_intf/pncconf/pncconf.glade:33400 +#: src/emc/usr_intf/pncconf/pncconf.glade:33420 +#: src/emc/usr_intf/pncconf/pncconf.glade:33440 +#: src/emc/usr_intf/pncconf/pncconf.glade:33460 +#: src/emc/usr_intf/pncconf/pncconf.glade:33480 +#: src/emc/usr_intf/pncconf/pncconf.glade:33500 +#: src/emc/usr_intf/pncconf/pncconf.glade:33520 +#: src/emc/usr_intf/pncconf/pncconf.glade:33540 +#: src/emc/usr_intf/pncconf/pncconf.glade:33560 +#: src/emc/usr_intf/pncconf/pncconf.glade:33580 +#: src/emc/usr_intf/pncconf/pncconf.glade:33600 +#: src/emc/usr_intf/pncconf/pncconf.glade:33620 +#: src/emc/usr_intf/pncconf/pncconf.glade:33640 +#: src/emc/usr_intf/pncconf/pncconf.glade:33660 +#: src/emc/usr_intf/pncconf/pncconf.glade:33680 +#: src/emc/usr_intf/pncconf/pncconf.glade:33700 +#: src/emc/usr_intf/pncconf/pncconf.glade:33720 +#: src/emc/usr_intf/pncconf/pncconf.glade:33740 +#: src/emc/usr_intf/pncconf/pncconf.glade:35656 +#: src/emc/usr_intf/pncconf/pncconf.glade:35879 +#: src/emc/usr_intf/pncconf/pncconf.glade:37808 +#: src/emc/usr_intf/pncconf/pncconf.glade:37828 +#: src/emc/usr_intf/pncconf/pncconf.glade:37848 +#: src/emc/usr_intf/pncconf/pncconf.glade:37868 +#: src/emc/usr_intf/pncconf/pncconf.glade:37888 +#: src/emc/usr_intf/pncconf/pncconf.glade:37908 +#: src/emc/usr_intf/pncconf/pncconf.glade:37928 +#: src/emc/usr_intf/pncconf/pncconf.glade:37948 +#: src/emc/usr_intf/pncconf/pncconf.glade:37968 +#: src/emc/usr_intf/pncconf/pncconf.glade:37988 +#: src/emc/usr_intf/pncconf/pncconf.glade:38008 +#: src/emc/usr_intf/pncconf/pncconf.glade:38028 +#: src/emc/usr_intf/pncconf/pncconf.glade:38048 +#: src/emc/usr_intf/pncconf/pncconf.glade:38068 +#: src/emc/usr_intf/pncconf/pncconf.glade:38088 +#: src/emc/usr_intf/pncconf/pncconf.glade:38108 +#: src/emc/usr_intf/pncconf/pncconf.glade:38128 +#: src/emc/usr_intf/pncconf/pncconf.glade:38148 +#: src/emc/usr_intf/pncconf/pncconf.glade:38168 +#: src/emc/usr_intf/pncconf/pncconf.glade:38188 +#: src/emc/usr_intf/pncconf/pncconf.glade:38208 +#: src/emc/usr_intf/pncconf/pncconf.glade:38228 +#: src/emc/usr_intf/pncconf/pncconf.glade:38248 +#: src/emc/usr_intf/pncconf/pncconf.glade:38557 +#: src/emc/usr_intf/pncconf/pncconf.glade:38577 +#: src/emc/usr_intf/pncconf/pncconf.glade:38597 +#: src/emc/usr_intf/pncconf/pncconf.glade:38617 +#: src/emc/usr_intf/pncconf/pncconf.glade:38637 +#: src/emc/usr_intf/pncconf/pncconf.glade:38657 +#: src/emc/usr_intf/pncconf/pncconf.glade:38677 +#: src/emc/usr_intf/pncconf/pncconf.glade:38697 +#: src/emc/usr_intf/pncconf/pncconf.glade:38717 +#: src/emc/usr_intf/pncconf/pncconf.glade:38737 +#: src/emc/usr_intf/pncconf/pncconf.glade:38757 +#: src/emc/usr_intf/pncconf/pncconf.glade:39987 +#: src/emc/usr_intf/pncconf/pncconf.glade:40239 +#: src/emc/usr_intf/pncconf/pncconf.glade:42155 +#: src/emc/usr_intf/pncconf/pncconf.glade:42175 +#: src/emc/usr_intf/pncconf/pncconf.glade:42195 +#: src/emc/usr_intf/pncconf/pncconf.glade:42215 +#: src/emc/usr_intf/pncconf/pncconf.glade:42235 +#: src/emc/usr_intf/pncconf/pncconf.glade:42255 +#: src/emc/usr_intf/pncconf/pncconf.glade:42275 +#: src/emc/usr_intf/pncconf/pncconf.glade:42295 +#: src/emc/usr_intf/pncconf/pncconf.glade:42315 +#: src/emc/usr_intf/pncconf/pncconf.glade:42335 +#: src/emc/usr_intf/pncconf/pncconf.glade:42355 +#: src/emc/usr_intf/pncconf/pncconf.glade:42375 +#: src/emc/usr_intf/pncconf/pncconf.glade:42395 +#: src/emc/usr_intf/pncconf/pncconf.glade:42415 +#: src/emc/usr_intf/pncconf/pncconf.glade:42435 +#: src/emc/usr_intf/pncconf/pncconf.glade:42455 +#: src/emc/usr_intf/pncconf/pncconf.glade:42475 +#: src/emc/usr_intf/pncconf/pncconf.glade:42495 +#: src/emc/usr_intf/pncconf/pncconf.glade:42515 +#: src/emc/usr_intf/pncconf/pncconf.glade:42535 +#: src/emc/usr_intf/pncconf/pncconf.glade:42555 +#: src/emc/usr_intf/pncconf/pncconf.glade:42575 +#: src/emc/usr_intf/pncconf/pncconf.glade:42595 +#: src/emc/usr_intf/pncconf/pncconf.glade:42786 +#: src/emc/usr_intf/pncconf/pncconf.glade:42806 +#: src/emc/usr_intf/pncconf/pncconf.glade:42826 +#: src/emc/usr_intf/pncconf/pncconf.glade:42846 +#: src/emc/usr_intf/pncconf/pncconf.glade:42866 +#: src/emc/usr_intf/pncconf/pncconf.glade:42886 +#: src/emc/usr_intf/pncconf/pncconf.glade:42906 +#: src/emc/usr_intf/pncconf/pncconf.glade:42926 +#: src/emc/usr_intf/pncconf/pncconf.glade:42946 +#: src/emc/usr_intf/pncconf/pncconf.glade:42966 +#: src/emc/usr_intf/pncconf/pncconf.glade:42986 +#: src/emc/usr_intf/pncconf/pncconf.glade:43006 +#: src/emc/usr_intf/pncconf/pncconf.glade:43026 +#: src/emc/usr_intf/pncconf/pncconf.glade:43046 +#: src/emc/usr_intf/pncconf/pncconf.glade:43066 +#: src/emc/usr_intf/pncconf/pncconf.glade:43086 +#: src/emc/usr_intf/pncconf/pncconf.glade:43106 +#: src/emc/usr_intf/pncconf/pncconf.glade:43126 +#: src/emc/usr_intf/pncconf/pncconf.glade:43146 +#: src/emc/usr_intf/pncconf/pncconf.glade:43166 +#: src/emc/usr_intf/pncconf/pncconf.glade:43186 +#: src/emc/usr_intf/pncconf/pncconf.glade:43206 +#: src/emc/usr_intf/pncconf/pncconf.glade:43226 +#: src/emc/usr_intf/pncconf/pncconf.glade:45155 +#: src/emc/usr_intf/pncconf/pncconf.glade:45496 +#: src/emc/usr_intf/pncconf/pncconf.glade:46726 +#: src/emc/usr_intf/pncconf/pncconf.glade:46746 +#: src/emc/usr_intf/pncconf/pncconf.glade:46766 +#: src/emc/usr_intf/pncconf/pncconf.glade:46786 +#: src/emc/usr_intf/pncconf/pncconf.glade:46806 +#: src/emc/usr_intf/pncconf/pncconf.glade:46826 +#: src/emc/usr_intf/pncconf/pncconf.glade:46846 +#: src/emc/usr_intf/pncconf/pncconf.glade:46866 +#: src/emc/usr_intf/pncconf/pncconf.glade:46886 +#: src/emc/usr_intf/pncconf/pncconf.glade:46906 +#: src/emc/usr_intf/pncconf/pncconf.glade:46926 +#: src/emc/usr_intf/pncconf/pncconf.glade:47162 +#: src/emc/usr_intf/pncconf/pncconf.glade:49078 +#: src/emc/usr_intf/pncconf/pncconf.glade:49098 +#: src/emc/usr_intf/pncconf/pncconf.glade:49118 +#: src/emc/usr_intf/pncconf/pncconf.glade:49138 +#: src/emc/usr_intf/pncconf/pncconf.glade:49158 +#: src/emc/usr_intf/pncconf/pncconf.glade:49178 +#: src/emc/usr_intf/pncconf/pncconf.glade:49198 +#: src/emc/usr_intf/pncconf/pncconf.glade:49218 +#: src/emc/usr_intf/pncconf/pncconf.glade:49238 +#: src/emc/usr_intf/pncconf/pncconf.glade:49258 +#: src/emc/usr_intf/pncconf/pncconf.glade:49278 +#: src/emc/usr_intf/pncconf/pncconf.glade:49298 +#: src/emc/usr_intf/pncconf/pncconf.glade:49318 +#: src/emc/usr_intf/pncconf/pncconf.glade:49338 +#: src/emc/usr_intf/pncconf/pncconf.glade:49358 +#: src/emc/usr_intf/pncconf/pncconf.glade:49378 +#: src/emc/usr_intf/pncconf/pncconf.glade:49398 +#: src/emc/usr_intf/pncconf/pncconf.glade:49418 +#: src/emc/usr_intf/pncconf/pncconf.glade:49438 +#: src/emc/usr_intf/pncconf/pncconf.glade:49458 +#: src/emc/usr_intf/pncconf/pncconf.glade:49478 +#: src/emc/usr_intf/pncconf/pncconf.glade:49498 +#: src/emc/usr_intf/pncconf/pncconf.glade:49518 +#: src/emc/usr_intf/pncconf/pncconf.glade:49709 +#: src/emc/usr_intf/pncconf/pncconf.glade:49729 +#: src/emc/usr_intf/pncconf/pncconf.glade:49749 +#: src/emc/usr_intf/pncconf/pncconf.glade:49769 +#: src/emc/usr_intf/pncconf/pncconf.glade:49789 +#: src/emc/usr_intf/pncconf/pncconf.glade:49809 +#: src/emc/usr_intf/pncconf/pncconf.glade:49829 +#: src/emc/usr_intf/pncconf/pncconf.glade:49849 +#: src/emc/usr_intf/pncconf/pncconf.glade:49869 +#: src/emc/usr_intf/pncconf/pncconf.glade:49889 +#: src/emc/usr_intf/pncconf/pncconf.glade:49909 +#: src/emc/usr_intf/pncconf/pncconf.glade:49929 +#: src/emc/usr_intf/pncconf/pncconf.glade:49949 +#: src/emc/usr_intf/pncconf/pncconf.glade:49969 +#: src/emc/usr_intf/pncconf/pncconf.glade:49989 +#: src/emc/usr_intf/pncconf/pncconf.glade:50009 +#: src/emc/usr_intf/pncconf/pncconf.glade:50029 +#: src/emc/usr_intf/pncconf/pncconf.glade:50049 +#: src/emc/usr_intf/pncconf/pncconf.glade:50069 +#: src/emc/usr_intf/pncconf/pncconf.glade:50089 +#: src/emc/usr_intf/pncconf/pncconf.glade:50109 +#: src/emc/usr_intf/pncconf/pncconf.glade:50129 +#: src/emc/usr_intf/pncconf/pncconf.glade:50149 +#: src/emc/usr_intf/pncconf/pncconf.glade:52078 +#: src/emc/usr_intf/pncconf/pncconf.glade:52419 +#: src/emc/usr_intf/pncconf/pncconf.glade:53649 +#: src/emc/usr_intf/pncconf/pncconf.glade:53669 +#: src/emc/usr_intf/pncconf/pncconf.glade:53689 +#: src/emc/usr_intf/pncconf/pncconf.glade:53709 +#: src/emc/usr_intf/pncconf/pncconf.glade:53729 +#: src/emc/usr_intf/pncconf/pncconf.glade:53749 +#: src/emc/usr_intf/pncconf/pncconf.glade:53769 +#: src/emc/usr_intf/pncconf/pncconf.glade:53789 +#: src/emc/usr_intf/pncconf/pncconf.glade:53809 +#: src/emc/usr_intf/pncconf/pncconf.glade:53829 +#: src/emc/usr_intf/pncconf/pncconf.glade:53849 +#: src/emc/usr_intf/pncconf/pncconf.glade:54085 +#: src/emc/usr_intf/pncconf/pncconf.glade:56001 +#: src/emc/usr_intf/pncconf/pncconf.glade:56021 +#: src/emc/usr_intf/pncconf/pncconf.glade:56041 +#: src/emc/usr_intf/pncconf/pncconf.glade:56061 +#: src/emc/usr_intf/pncconf/pncconf.glade:56081 +#: src/emc/usr_intf/pncconf/pncconf.glade:56101 +#: src/emc/usr_intf/pncconf/pncconf.glade:56121 +#: src/emc/usr_intf/pncconf/pncconf.glade:56141 +#: src/emc/usr_intf/pncconf/pncconf.glade:56161 +#: src/emc/usr_intf/pncconf/pncconf.glade:56181 +#: src/emc/usr_intf/pncconf/pncconf.glade:56201 +#: src/emc/usr_intf/pncconf/pncconf.glade:56221 +#: src/emc/usr_intf/pncconf/pncconf.glade:56241 +#: src/emc/usr_intf/pncconf/pncconf.glade:56261 +#: src/emc/usr_intf/pncconf/pncconf.glade:56281 +#: src/emc/usr_intf/pncconf/pncconf.glade:56301 +#: src/emc/usr_intf/pncconf/pncconf.glade:56321 +#: src/emc/usr_intf/pncconf/pncconf.glade:56341 +#: src/emc/usr_intf/pncconf/pncconf.glade:56361 +#: src/emc/usr_intf/pncconf/pncconf.glade:56381 +#: src/emc/usr_intf/pncconf/pncconf.glade:56401 +#: src/emc/usr_intf/pncconf/pncconf.glade:56421 +#: src/emc/usr_intf/pncconf/pncconf.glade:56441 +#: src/emc/usr_intf/pncconf/pncconf.glade:56632 +#: src/emc/usr_intf/pncconf/pncconf.glade:56652 +#: src/emc/usr_intf/pncconf/pncconf.glade:56672 +#: src/emc/usr_intf/pncconf/pncconf.glade:56692 +#: src/emc/usr_intf/pncconf/pncconf.glade:56712 +#: src/emc/usr_intf/pncconf/pncconf.glade:56732 +#: src/emc/usr_intf/pncconf/pncconf.glade:56752 +#: src/emc/usr_intf/pncconf/pncconf.glade:56772 +#: src/emc/usr_intf/pncconf/pncconf.glade:56792 +#: src/emc/usr_intf/pncconf/pncconf.glade:56812 +#: src/emc/usr_intf/pncconf/pncconf.glade:56832 +#: src/emc/usr_intf/pncconf/pncconf.glade:56852 +#: src/emc/usr_intf/pncconf/pncconf.glade:56872 +#: src/emc/usr_intf/pncconf/pncconf.glade:56892 +#: src/emc/usr_intf/pncconf/pncconf.glade:56912 +#: src/emc/usr_intf/pncconf/pncconf.glade:56932 +#: src/emc/usr_intf/pncconf/pncconf.glade:56952 +#: src/emc/usr_intf/pncconf/pncconf.glade:56972 +#: src/emc/usr_intf/pncconf/pncconf.glade:56992 +#: src/emc/usr_intf/pncconf/pncconf.glade:57012 +#: src/emc/usr_intf/pncconf/pncconf.glade:57032 +#: src/emc/usr_intf/pncconf/pncconf.glade:57052 +#: src/emc/usr_intf/pncconf/pncconf.glade:57072 +#: src/emc/usr_intf/pncconf/pncconf.glade:59001 +#: src/emc/usr_intf/pncconf/pncconf.glade:59342 +#: src/emc/usr_intf/pncconf/pncconf.glade:60572 +#: src/emc/usr_intf/pncconf/pncconf.glade:60592 +#: src/emc/usr_intf/pncconf/pncconf.glade:60612 +#: src/emc/usr_intf/pncconf/pncconf.glade:60632 +#: src/emc/usr_intf/pncconf/pncconf.glade:60652 +#: src/emc/usr_intf/pncconf/pncconf.glade:60672 +#: src/emc/usr_intf/pncconf/pncconf.glade:60692 +#: src/emc/usr_intf/pncconf/pncconf.glade:60712 +#: src/emc/usr_intf/pncconf/pncconf.glade:60732 +#: src/emc/usr_intf/pncconf/pncconf.glade:60752 +#: src/emc/usr_intf/pncconf/pncconf.glade:60772 +msgid "" +"GPIO Input\n" +"GPIO Output\n" +"GPIO O Drain\n" +"Encoder\n" +"PWM\n" +"StepGen\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6479 -#: src/emc/usr_intf/pncconf/pncconf.glade:7148 -msgid "GTK Theme" +#: src/emc/usr_intf/pncconf/pncconf.glade:8913 +#: src/emc/usr_intf/pncconf/pncconf.glade:13730 +#: src/emc/usr_intf/pncconf/pncconf.glade:18936 +#: src/emc/usr_intf/pncconf/pncconf.glade:20738 +#: src/emc/usr_intf/pncconf/pncconf.glade:21031 +#: src/emc/usr_intf/pncconf/pncconf.glade:22827 +#: src/emc/usr_intf/pncconf/pncconf.glade:24623 +msgid " 1:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6491 -#: src/emc/usr_intf/pncconf/pncconf.glade:7158 -msgid "Follow System Theme\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:8927 +#: src/emc/usr_intf/pncconf/pncconf.glade:13716 +#: src/emc/usr_intf/pncconf/pncconf.glade:18922 +#: src/emc/usr_intf/pncconf/pncconf.glade:20724 +#: src/emc/usr_intf/pncconf/pncconf.glade:21045 +#: src/emc/usr_intf/pncconf/pncconf.glade:22841 +#: src/emc/usr_intf/pncconf/pncconf.glade:24637 +msgid " 3:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6624 -msgid "Force Touchy to Maximize after positioning" +#: src/emc/usr_intf/pncconf/pncconf.glade:8941 +#: src/emc/usr_intf/pncconf/pncconf.glade:13702 +#: src/emc/usr_intf/pncconf/pncconf.glade:18908 +#: src/emc/usr_intf/pncconf/pncconf.glade:20710 +#: src/emc/usr_intf/pncconf/pncconf.glade:21059 +#: src/emc/usr_intf/pncconf/pncconf.glade:22855 +#: src/emc/usr_intf/pncconf/pncconf.glade:24651 +msgid " 5:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6669 -msgid "GUI Options" -msgstr "GUI 的選項 " - -#: src/emc/usr_intf/pncconf/pncconf.glade:6700 -msgid "Virtual Control Panel" -msgstr " 虛 擬 控 制 面 板 " +#: src/emc/usr_intf/pncconf/pncconf.glade:8955 +#: src/emc/usr_intf/pncconf/pncconf.glade:13688 +#: src/emc/usr_intf/pncconf/pncconf.glade:18894 +#: src/emc/usr_intf/pncconf/pncconf.glade:20696 +#: src/emc/usr_intf/pncconf/pncconf.glade:21073 +#: src/emc/usr_intf/pncconf/pncconf.glade:22869 +#: src/emc/usr_intf/pncconf/pncconf.glade:24665 +msgid " 7:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6775 -msgid "XYZ buttons (uses Halui)" -msgstr "XYZ 按鍵 (用 Halui)" +#: src/emc/usr_intf/pncconf/pncconf.glade:8969 +#: src/emc/usr_intf/pncconf/pncconf.glade:13674 +#: src/emc/usr_intf/pncconf/pncconf.glade:18880 +#: src/emc/usr_intf/pncconf/pncconf.glade:20682 +#: src/emc/usr_intf/pncconf/pncconf.glade:21087 +#: src/emc/usr_intf/pncconf/pncconf.glade:22883 +#: src/emc/usr_intf/pncconf/pncconf.glade:24679 +msgid " 9:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6946 -msgid "Geometry Options" -msgstr "幾何 的選項" +#: src/emc/usr_intf/pncconf/pncconf.glade:8983 +#: src/emc/usr_intf/pncconf/pncconf.glade:13660 +#: src/emc/usr_intf/pncconf/pncconf.glade:18866 +#: src/emc/usr_intf/pncconf/pncconf.glade:20668 +#: src/emc/usr_intf/pncconf/pncconf.glade:21101 +#: src/emc/usr_intf/pncconf/pncconf.glade:22897 +#: src/emc/usr_intf/pncconf/pncconf.glade:24693 +msgid "11:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7025 -msgid "Pyvcp Details" +#: src/emc/usr_intf/pncconf/pncconf.glade:8997 +#: src/emc/usr_intf/pncconf/pncconf.glade:13646 +#: src/emc/usr_intf/pncconf/pncconf.glade:18852 +#: src/emc/usr_intf/pncconf/pncconf.glade:20654 +#: src/emc/usr_intf/pncconf/pncconf.glade:21115 +#: src/emc/usr_intf/pncconf/pncconf.glade:22911 +#: src/emc/usr_intf/pncconf/pncconf.glade:24707 +msgid "13:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7097 -msgid "Sample display " +#: src/emc/usr_intf/pncconf/pncconf.glade:9011 +#: src/emc/usr_intf/pncconf/pncconf.glade:13632 +#: src/emc/usr_intf/pncconf/pncconf.glade:18838 +#: src/emc/usr_intf/pncconf/pncconf.glade:20640 +#: src/emc/usr_intf/pncconf/pncconf.glade:21129 +#: src/emc/usr_intf/pncconf/pncconf.glade:22925 +#: src/emc/usr_intf/pncconf/pncconf.glade:24721 +msgid "15:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7172 -msgid "Force Maximize" +#: src/emc/usr_intf/pncconf/pncconf.glade:9025 +#: src/emc/usr_intf/pncconf/pncconf.glade:13618 +#: src/emc/usr_intf/pncconf/pncconf.glade:18824 +#: src/emc/usr_intf/pncconf/pncconf.glade:20626 +#: src/emc/usr_intf/pncconf/pncconf.glade:21143 +#: src/emc/usr_intf/pncconf/pncconf.glade:22939 +#: src/emc/usr_intf/pncconf/pncconf.glade:24735 +msgid "17:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7186 -msgid "Center Tab Embeded" +#: src/emc/usr_intf/pncconf/pncconf.glade:9039 +#: src/emc/usr_intf/pncconf/pncconf.glade:13604 +#: src/emc/usr_intf/pncconf/pncconf.glade:18810 +#: src/emc/usr_intf/pncconf/pncconf.glade:20612 +#: src/emc/usr_intf/pncconf/pncconf.glade:21157 +#: src/emc/usr_intf/pncconf/pncconf.glade:22953 +#: src/emc/usr_intf/pncconf/pncconf.glade:24749 +msgid "19:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7201 -msgid "Rightside Embeded" +#: src/emc/usr_intf/pncconf/pncconf.glade:9053 +#: src/emc/usr_intf/pncconf/pncconf.glade:13590 +#: src/emc/usr_intf/pncconf/pncconf.glade:18796 +#: src/emc/usr_intf/pncconf/pncconf.glade:20598 +#: src/emc/usr_intf/pncconf/pncconf.glade:21171 +#: src/emc/usr_intf/pncconf/pncconf.glade:22967 +#: src/emc/usr_intf/pncconf/pncconf.glade:24763 +msgid "21:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7217 -msgid "Standalone Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:9067 +#: src/emc/usr_intf/pncconf/pncconf.glade:13576 +#: src/emc/usr_intf/pncconf/pncconf.glade:18782 +#: src/emc/usr_intf/pncconf/pncconf.glade:20584 +#: src/emc/usr_intf/pncconf/pncconf.glade:21185 +#: src/emc/usr_intf/pncconf/pncconf.glade:22981 +#: src/emc/usr_intf/pncconf/pncconf.glade:24777 +msgid "23:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7351 -#, fuzzy -msgid "Display Options" -msgstr "顯示英寸(_I)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9801 +#: src/emc/usr_intf/pncconf/pncconf.glade:12840 +#: src/emc/usr_intf/pncconf/pncconf.glade:17994 +#: src/emc/usr_intf/pncconf/pncconf.glade:20170 +#: src/emc/usr_intf/pncconf/pncconf.glade:21597 +#: src/emc/usr_intf/pncconf/pncconf.glade:23393 +#: src/emc/usr_intf/pncconf/pncconf.glade:25189 +msgid "47:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7401 -msgid "Max RPM" +#: src/emc/usr_intf/pncconf/pncconf.glade:9868 +#: src/emc/usr_intf/pncconf/pncconf.glade:12773 +#: src/emc/usr_intf/pncconf/pncconf.glade:17927 +#: src/emc/usr_intf/pncconf/pncconf.glade:20119 +#: src/emc/usr_intf/pncconf/pncconf.glade:21648 +#: src/emc/usr_intf/pncconf/pncconf.glade:23444 +#: src/emc/usr_intf/pncconf/pncconf.glade:25240 +msgid "45:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7414 -#, fuzzy -msgid "Spindle Speed Indicator" -msgstr "主軸 轉速(RPM)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9884 +#: src/emc/usr_intf/pncconf/pncconf.glade:12757 +#: src/emc/usr_intf/pncconf/pncconf.glade:17911 +#: src/emc/usr_intf/pncconf/pncconf.glade:20103 +#: src/emc/usr_intf/pncconf/pncconf.glade:21664 +#: src/emc/usr_intf/pncconf/pncconf.glade:23460 +#: src/emc/usr_intf/pncconf/pncconf.glade:25256 +msgid "43:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7426 -#, fuzzy -msgid "Spindle At Speed LED" -msgstr "主軸 轉速(RPM)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9900 +#: src/emc/usr_intf/pncconf/pncconf.glade:12741 +#: src/emc/usr_intf/pncconf/pncconf.glade:17895 +#: src/emc/usr_intf/pncconf/pncconf.glade:20087 +#: src/emc/usr_intf/pncconf/pncconf.glade:21680 +#: src/emc/usr_intf/pncconf/pncconf.glade:23476 +#: src/emc/usr_intf/pncconf/pncconf.glade:25272 +msgid "41:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7438 -#, fuzzy -msgid "Zero X Button" -msgstr "左 按鈕" +#: src/emc/usr_intf/pncconf/pncconf.glade:9916 +#: src/emc/usr_intf/pncconf/pncconf.glade:12725 +#: src/emc/usr_intf/pncconf/pncconf.glade:17879 +#: src/emc/usr_intf/pncconf/pncconf.glade:20071 +#: src/emc/usr_intf/pncconf/pncconf.glade:21696 +#: src/emc/usr_intf/pncconf/pncconf.glade:23492 +#: src/emc/usr_intf/pncconf/pncconf.glade:25288 +msgid "39:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7450 -#, fuzzy -msgid "Zero Y Button" -msgstr "左 按鈕" +#: src/emc/usr_intf/pncconf/pncconf.glade:9932 +#: src/emc/usr_intf/pncconf/pncconf.glade:12709 +#: src/emc/usr_intf/pncconf/pncconf.glade:17863 +#: src/emc/usr_intf/pncconf/pncconf.glade:20055 +#: src/emc/usr_intf/pncconf/pncconf.glade:21712 +#: src/emc/usr_intf/pncconf/pncconf.glade:23508 +#: src/emc/usr_intf/pncconf/pncconf.glade:25304 +msgid "37:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7462 -#, fuzzy -msgid "Zero Z Button" -msgstr "左 按鈕" +#: src/emc/usr_intf/pncconf/pncconf.glade:9948 +#: src/emc/usr_intf/pncconf/pncconf.glade:12693 +#: src/emc/usr_intf/pncconf/pncconf.glade:17847 +#: src/emc/usr_intf/pncconf/pncconf.glade:20039 +#: src/emc/usr_intf/pncconf/pncconf.glade:21728 +#: src/emc/usr_intf/pncconf/pncconf.glade:23524 +#: src/emc/usr_intf/pncconf/pncconf.glade:25320 +msgid "35:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7474 -#, fuzzy -msgid "Zero A Button" -msgstr "左 按鈕" +#: src/emc/usr_intf/pncconf/pncconf.glade:9964 +#: src/emc/usr_intf/pncconf/pncconf.glade:12677 +#: src/emc/usr_intf/pncconf/pncconf.glade:17831 +#: src/emc/usr_intf/pncconf/pncconf.glade:20023 +#: src/emc/usr_intf/pncconf/pncconf.glade:21744 +#: src/emc/usr_intf/pncconf/pncconf.glade:23540 +#: src/emc/usr_intf/pncconf/pncconf.glade:25336 +msgid "33:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7486 -msgid "Requires Classicladder touch-off program" +#: src/emc/usr_intf/pncconf/pncconf.glade:10337 +#: src/emc/usr_intf/pncconf/pncconf.glade:12304 +#: src/emc/usr_intf/pncconf/pncconf.glade:17458 +#: src/emc/usr_intf/pncconf/pncconf.glade:19762 +#: src/emc/usr_intf/pncconf/pncconf.glade:22005 +#: src/emc/usr_intf/pncconf/pncconf.glade:23801 +#: src/emc/usr_intf/pncconf/pncconf.glade:25597 +msgid "25:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7487 -msgid "Auto Z Touch Off Button" +#: src/emc/usr_intf/pncconf/pncconf.glade:10353 +#: src/emc/usr_intf/pncconf/pncconf.glade:12288 +#: src/emc/usr_intf/pncconf/pncconf.glade:17442 +#: src/emc/usr_intf/pncconf/pncconf.glade:19746 +#: src/emc/usr_intf/pncconf/pncconf.glade:22021 +#: src/emc/usr_intf/pncconf/pncconf.glade:23817 +#: src/emc/usr_intf/pncconf/pncconf.glade:25613 +msgid "27:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7500 -#, fuzzy -msgid "Sample Options" -msgstr "樣辦配置" +#: src/emc/usr_intf/pncconf/pncconf.glade:10369 +#: src/emc/usr_intf/pncconf/pncconf.glade:12272 +#: src/emc/usr_intf/pncconf/pncconf.glade:17426 +#: src/emc/usr_intf/pncconf/pncconf.glade:19730 +#: src/emc/usr_intf/pncconf/pncconf.glade:22037 +#: src/emc/usr_intf/pncconf/pncconf.glade:23833 +#: src/emc/usr_intf/pncconf/pncconf.glade:25629 +msgid "29:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7574 -msgid "Gladevcp Details" -msgstr "GladeVCP 詳情" +#: src/emc/usr_intf/pncconf/pncconf.glade:10385 +#: src/emc/usr_intf/pncconf/pncconf.glade:12256 +#: src/emc/usr_intf/pncconf/pncconf.glade:17410 +#: src/emc/usr_intf/pncconf/pncconf.glade:19714 +#: src/emc/usr_intf/pncconf/pncconf.glade:22053 +#: src/emc/usr_intf/pncconf/pncconf.glade:23849 +#: src/emc/usr_intf/pncconf/pncconf.glade:25645 +msgid "31:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7597 -msgid "Include custom GladeVCP GUI panel" -msgstr "包括自訂 GladeVCP GUI面板" +#: src/emc/usr_intf/pncconf/pncconf.glade:10677 +#: src/emc/usr_intf/pncconf/pncconf.glade:10689 +#: src/emc/usr_intf/pncconf/pncconf.glade:11955 +#: src/emc/usr_intf/pncconf/pncconf.glade:11967 +#: src/emc/usr_intf/pncconf/pncconf.glade:14464 +#: src/emc/usr_intf/pncconf/pncconf.glade:14476 +#: src/emc/usr_intf/pncconf/pncconf.glade:17161 +#: src/emc/usr_intf/pncconf/pncconf.glade:17173 +#: src/emc/usr_intf/pncconf/pncconf.glade:19567 +#: src/emc/usr_intf/pncconf/pncconf.glade:19579 +#: src/emc/usr_intf/pncconf/pncconf.glade:22190 +#: src/emc/usr_intf/pncconf/pncconf.glade:22202 +#: src/emc/usr_intf/pncconf/pncconf.glade:23986 +#: src/emc/usr_intf/pncconf/pncconf.glade:23998 +#: src/emc/usr_intf/pncconf/pncconf.glade:25782 +#: src/emc/usr_intf/pncconf/pncconf.glade:25794 +#: src/emc/usr_intf/pncconf/pncconf.glade:28287 +#: src/emc/usr_intf/pncconf/pncconf.glade:28299 +#: src/emc/usr_intf/pncconf/pncconf.glade:29415 +#: src/emc/usr_intf/pncconf/pncconf.glade:29427 +#: src/emc/usr_intf/pncconf/pncconf.glade:32869 +#: src/emc/usr_intf/pncconf/pncconf.glade:33760 +#: src/emc/usr_intf/pncconf/pncconf.glade:33772 +#: src/emc/usr_intf/pncconf/pncconf.glade:37771 +#: src/emc/usr_intf/pncconf/pncconf.glade:37783 +#: src/emc/usr_intf/pncconf/pncconf.glade:38777 +#: src/emc/usr_intf/pncconf/pncconf.glade:38789 +#: src/emc/usr_intf/pncconf/pncconf.glade:42131 +#: src/emc/usr_intf/pncconf/pncconf.glade:42143 +#: src/emc/usr_intf/pncconf/pncconf.glade:43259 +#: src/emc/usr_intf/pncconf/pncconf.glade:43271 +#: src/emc/usr_intf/pncconf/pncconf.glade:46702 +#: src/emc/usr_intf/pncconf/pncconf.glade:46714 +#: src/emc/usr_intf/pncconf/pncconf.glade:49054 +#: src/emc/usr_intf/pncconf/pncconf.glade:49066 +#: src/emc/usr_intf/pncconf/pncconf.glade:50182 +#: src/emc/usr_intf/pncconf/pncconf.glade:50194 +#: src/emc/usr_intf/pncconf/pncconf.glade:53625 +#: src/emc/usr_intf/pncconf/pncconf.glade:53637 +#: src/emc/usr_intf/pncconf/pncconf.glade:55977 +#: src/emc/usr_intf/pncconf/pncconf.glade:55989 +#: src/emc/usr_intf/pncconf/pncconf.glade:57105 +#: src/emc/usr_intf/pncconf/pncconf.glade:57117 +#: src/emc/usr_intf/pncconf/pncconf.glade:60548 +#: src/emc/usr_intf/pncconf/pncconf.glade:60560 +msgid "function" +msgstr "功用" -#: src/emc/usr_intf/pncconf/pncconf.glade:7668 -msgid "Restore joint position after shutdown" -msgstr "停機後 恢復 Joint 的位置" +#: src/emc/usr_intf/pncconf/pncconf.glade:10703 +#: src/emc/usr_intf/pncconf/pncconf.glade:11940 +#: src/emc/usr_intf/pncconf/pncconf.glade:14449 +#: src/emc/usr_intf/pncconf/pncconf.glade:17146 +#: src/emc/usr_intf/pncconf/pncconf.glade:19553 +#: src/emc/usr_intf/pncconf/pncconf.glade:22217 +#: src/emc/usr_intf/pncconf/pncconf.glade:24013 +#: src/emc/usr_intf/pncconf/pncconf.glade:25809 +msgid "Launch test panel" +msgstr "啟動測試面板" -#: src/emc/usr_intf/pncconf/pncconf.glade:7683 -msgid "Move spindle up before tool change" -msgstr "換刀 之前 向上 移動 主軸" +#: src/emc/usr_intf/pncconf/pncconf.glade:11192 +#: src/emc/usr_intf/pncconf/pncconf.glade:11204 +#: src/emc/usr_intf/pncconf/pncconf.glade:11440 +#: src/emc/usr_intf/pncconf/pncconf.glade:11454 +#: src/emc/usr_intf/pncconf/pncconf.glade:13949 +#: src/emc/usr_intf/pncconf/pncconf.glade:13963 +#: src/emc/usr_intf/pncconf/pncconf.glade:16645 +#: src/emc/usr_intf/pncconf/pncconf.glade:16659 +#: src/emc/usr_intf/pncconf/pncconf.glade:19190 +#: src/emc/usr_intf/pncconf/pncconf.glade:19204 +#: src/emc/usr_intf/pncconf/pncconf.glade:22567 +#: src/emc/usr_intf/pncconf/pncconf.glade:22579 +#: src/emc/usr_intf/pncconf/pncconf.glade:24363 +#: src/emc/usr_intf/pncconf/pncconf.glade:24375 +#: src/emc/usr_intf/pncconf/pncconf.glade:26159 +#: src/emc/usr_intf/pncconf/pncconf.glade:26171 +#: src/emc/usr_intf/pncconf/pncconf.glade:28772 +#: src/emc/usr_intf/pncconf/pncconf.glade:28784 +#: src/emc/usr_intf/pncconf/pncconf.glade:28917 +#: src/emc/usr_intf/pncconf/pncconf.glade:28931 +#: src/emc/usr_intf/pncconf/pncconf.glade:33102 +#: src/emc/usr_intf/pncconf/pncconf.glade:33275 +#: src/emc/usr_intf/pncconf/pncconf.glade:33289 +#: src/emc/usr_intf/pncconf/pncconf.glade:38269 +#: src/emc/usr_intf/pncconf/pncconf.glade:38281 +#: src/emc/usr_intf/pncconf/pncconf.glade:38532 +#: src/emc/usr_intf/pncconf/pncconf.glade:38546 +#: src/emc/usr_intf/pncconf/pncconf.glade:42616 +#: src/emc/usr_intf/pncconf/pncconf.glade:42628 +#: src/emc/usr_intf/pncconf/pncconf.glade:42761 +#: src/emc/usr_intf/pncconf/pncconf.glade:42775 +#: src/emc/usr_intf/pncconf/pncconf.glade:46947 +#: src/emc/usr_intf/pncconf/pncconf.glade:46959 +#: src/emc/usr_intf/pncconf/pncconf.glade:49539 +#: src/emc/usr_intf/pncconf/pncconf.glade:49551 +#: src/emc/usr_intf/pncconf/pncconf.glade:49684 +#: src/emc/usr_intf/pncconf/pncconf.glade:49698 +#: src/emc/usr_intf/pncconf/pncconf.glade:53870 +#: src/emc/usr_intf/pncconf/pncconf.glade:53882 +#: src/emc/usr_intf/pncconf/pncconf.glade:56462 +#: src/emc/usr_intf/pncconf/pncconf.glade:56474 +#: src/emc/usr_intf/pncconf/pncconf.glade:56607 +#: src/emc/usr_intf/pncconf/pncconf.glade:56621 +#: src/emc/usr_intf/pncconf/pncconf.glade:60793 +#: src/emc/usr_intf/pncconf/pncconf.glade:60805 +msgid "Num" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7696 -msgid "Leave spindle on during tool change" -msgstr "換刀 期間 保留主軸 轉動" +#: src/emc/usr_intf/pncconf/pncconf.glade:11222 +msgid "" +" I/O\n" +"Connector 2" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7709 -msgid "Popup Toolchange Prompt" -msgstr "彈出窗口提示換刀" +#: src/emc/usr_intf/pncconf/pncconf.glade:13835 +msgid "" +" I/O\n" +" Connector 3" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7723 -msgid "Require homing before MDI / Running" -msgstr "需要先 回零 才 可以 MDI / Running" +#: src/emc/usr_intf/pncconf/pncconf.glade:16281 +#: src/emc/usr_intf/pncconf/pncconf.glade:16295 +#: src/emc/usr_intf/pncconf/pncconf.glade:16322 +#: src/emc/usr_intf/pncconf/pncconf.glade:26441 +#: src/emc/usr_intf/pncconf/pncconf.glade:26468 +#: src/emc/usr_intf/pncconf/pncconf.glade:26482 +#: src/emc/usr_intf/pncconf/pncconf.glade:31232 +#: src/emc/usr_intf/pncconf/pncconf.glade:31246 +#: src/emc/usr_intf/pncconf/pncconf.glade:31273 +#: src/emc/usr_intf/pncconf/pncconf.glade:31708 +#: src/emc/usr_intf/pncconf/pncconf.glade:31735 +#: src/emc/usr_intf/pncconf/pncconf.glade:31749 +#: src/emc/usr_intf/pncconf/pncconf.glade:35577 +#: src/emc/usr_intf/pncconf/pncconf.glade:35591 +#: src/emc/usr_intf/pncconf/pncconf.glade:35618 +#: src/emc/usr_intf/pncconf/pncconf.glade:35925 +#: src/emc/usr_intf/pncconf/pncconf.glade:35952 +#: src/emc/usr_intf/pncconf/pncconf.glade:35966 +#: src/emc/usr_intf/pncconf/pncconf.glade:39909 +#: src/emc/usr_intf/pncconf/pncconf.glade:39923 +#: src/emc/usr_intf/pncconf/pncconf.glade:39950 +#: src/emc/usr_intf/pncconf/pncconf.glade:40285 +#: src/emc/usr_intf/pncconf/pncconf.glade:40312 +#: src/emc/usr_intf/pncconf/pncconf.glade:40326 +#: src/emc/usr_intf/pncconf/pncconf.glade:45076 +#: src/emc/usr_intf/pncconf/pncconf.glade:45090 +#: src/emc/usr_intf/pncconf/pncconf.glade:45117 +#: src/emc/usr_intf/pncconf/pncconf.glade:45541 +#: src/emc/usr_intf/pncconf/pncconf.glade:45568 +#: src/emc/usr_intf/pncconf/pncconf.glade:45582 +#: src/emc/usr_intf/pncconf/pncconf.glade:47208 +#: src/emc/usr_intf/pncconf/pncconf.glade:47235 +#: src/emc/usr_intf/pncconf/pncconf.glade:47249 +#: src/emc/usr_intf/pncconf/pncconf.glade:51999 +#: src/emc/usr_intf/pncconf/pncconf.glade:52013 +#: src/emc/usr_intf/pncconf/pncconf.glade:52040 +#: src/emc/usr_intf/pncconf/pncconf.glade:52464 +#: src/emc/usr_intf/pncconf/pncconf.glade:52491 +#: src/emc/usr_intf/pncconf/pncconf.glade:52505 +#: src/emc/usr_intf/pncconf/pncconf.glade:54131 +#: src/emc/usr_intf/pncconf/pncconf.glade:54158 +#: src/emc/usr_intf/pncconf/pncconf.glade:54172 +#: src/emc/usr_intf/pncconf/pncconf.glade:58922 +#: src/emc/usr_intf/pncconf/pncconf.glade:58936 +#: src/emc/usr_intf/pncconf/pncconf.glade:58963 +#: src/emc/usr_intf/pncconf/pncconf.glade:59387 +#: src/emc/usr_intf/pncconf/pncconf.glade:59414 +#: src/emc/usr_intf/pncconf/pncconf.glade:59428 +msgid " " +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7732 -msgid "Random position toolchanger " -msgstr "隨機 位置 換刀 " +#: src/emc/usr_intf/pncconf/pncconf.glade:16427 +msgid "" +" I/O\n" +" Connector 4" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7747 -msgid "Force individual manual homing" -msgstr "實施 個別 手動 回零" +#: src/emc/usr_intf/pncconf/pncconf.glade:19041 +msgid "" +" I/O\n" +" Connector 5" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7761 -msgid "Defaults and Options" +#: src/emc/usr_intf/pncconf/pncconf.glade:20837 +msgid "" +" I/O\n" +"Connector 6" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7789 -msgid "Mesa0 I/O setup\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:22633 +msgid "" +" I/O\n" +"Connector 7" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7809 +#: src/emc/usr_intf/pncconf/pncconf.glade:24429 msgid "" -"Click on each page tab to configure signal names for each connector port.\n" -"\n" -"Press the button to make the tabbed pages\n" -"accept the changes.\n" +" I/O\n" +"Connector 8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7998 -#, fuzzy -msgid "Num of channels: " -msgstr "沒有足夠的通道" +#: src/emc/usr_intf/pncconf/pncconf.glade:26225 +msgid "" +" I/O\n" +" Connector 9" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8036 -msgid "7i29 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:31378 +#: src/emc/usr_intf/pncconf/pncconf.glade:38299 +#: src/emc/usr_intf/pncconf/pncconf.glade:45222 +#: src/emc/usr_intf/pncconf/pncconf.glade:52145 +#: src/emc/usr_intf/pncconf/pncconf.glade:59068 +msgid "page 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8045 -msgid "7i30 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:33131 +#: src/emc/usr_intf/pncconf/pncconf.glade:40054 +#: src/emc/usr_intf/pncconf/pncconf.glade:46977 +#: src/emc/usr_intf/pncconf/pncconf.glade:53900 +#: src/emc/usr_intf/pncconf/pncconf.glade:60823 +msgid "page 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8057 -msgid "7i33 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:33147 +msgid "Smart Serial 0" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8069 -msgid "7i40 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:40070 +msgid "Smart Serial 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8081 -msgid "7i48 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:46993 +msgid "Smart Serial 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8096 -msgid "Sanity Checks" +#: src/emc/usr_intf/pncconf/pncconf.glade:53916 +msgid "Smart Serial 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8137 +#: src/emc/usr_intf/pncconf/pncconf.glade:60839 #, fuzzy -msgid "Num of Smart Serial Ports:" +msgid "Smart Serial 4" msgstr "PWM 產生器 的數目:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8148 -msgid "Board name" -msgstr "線路板 名字" +#: src/emc/usr_intf/pncconf/pncconf.glade:60861 +msgid "First Parallel Port Setup" +msgstr "第一並行端口設置" -#: src/emc/usr_intf/pncconf/pncconf.glade:8155 -msgid "Num of step generators: " -msgstr "步進 產生器 的數目:" +#: src/emc/usr_intf/pncconf/pncconf.glade:60946 +msgid "Launch Test Panel" +msgstr "啟動 測試 面板" -#: src/emc/usr_intf/pncconf/pncconf.glade:8166 -msgid "Num of pwm generators:" -msgstr "PWM 產生器 的數目:" +#: src/emc/usr_intf/pncconf/pncconf.glade:62374 +msgid "Inputs (Machine to PC):" +msgstr "输入 (机器 至 PC):" -#: src/emc/usr_intf/pncconf/pncconf.glade:8177 -msgid "Num of encoders:" -msgstr "編碼器 的數目:" +#: src/emc/usr_intf/pncconf/pncconf.glade:62929 +msgid "Outputs (PC to Machine):" +msgstr "输出 (PC 至 机器):" -#: src/emc/usr_intf/pncconf/pncconf.glade:8294 -msgid "Watchdog timeout:" -msgstr "監視程序超時:" +#: src/emc/usr_intf/pncconf/pncconf.glade:62950 +msgid "X Axis Motor/Encoder Configuration" +msgstr "X 轴 馬達/編碼器 配置" -#: src/emc/usr_intf/pncconf/pncconf.glade:8305 -msgid "PDM base frequency:" -msgstr "PDM 基頻:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63005 +#, fuzzy +msgid "Max Output" +msgstr "DAC 最大 輸出:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8316 -msgid "PWM base frequency:" -msgstr "PWM 基頻:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63070 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF2" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8328 -msgid "" -"Accept components\n" -" Changes" +#: src/emc/usr_intf/pncconf/pncconf.glade:63083 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8356 -msgid "Total number of pins:" -msgstr "腳的 總數:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63096 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF0" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8389 -msgid "Num of 3 pwm generators: " -msgstr "PWM 產生器" +#: src/emc/usr_intf/pncconf/pncconf.glade:63143 +msgid "Deadband" +msgstr "死區" -#: src/emc/usr_intf/pncconf/pncconf.glade:8412 -msgid "SVST8_4" +#: src/emc/usr_intf/pncconf/pncconf.glade:63156 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Bias" +msgstr "偏壓" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63169 +msgid "P" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8437 -msgid "Firmware:" -msgstr "固件:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63180 +msgid "I" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8447 -msgid "Mesa parport address:" -msgstr "Mesa 並行端口 地址: " +#: src/emc/usr_intf/pncconf/pncconf.glade:63193 +msgid "D" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8482 -msgid "3PWM base frequency:" -msgstr "3PWM 基頻:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63258 +msgid "Servo Info" +msgstr "伺服資料" -#: src/emc/usr_intf/pncconf/pncconf.glade:8504 -msgid "" -"Configuration\n" -" Page" +#: src/emc/usr_intf/pncconf/pncconf.glade:63337 +msgid "3pwm Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8698 -#: src/emc/usr_intf/pncconf/pncconf.glade:8712 -#: src/emc/usr_intf/pncconf/pncconf.glade:13677 -#: src/emc/usr_intf/pncconf/pncconf.glade:13689 -#: src/emc/usr_intf/pncconf/pncconf.glade:16373 -#: src/emc/usr_intf/pncconf/pncconf.glade:16385 -#: src/emc/usr_intf/pncconf/pncconf.glade:18883 -#: src/emc/usr_intf/pncconf/pncconf.glade:18895 -#: src/emc/usr_intf/pncconf/pncconf.glade:20747 -#: src/emc/usr_intf/pncconf/pncconf.glade:20759 -#: src/emc/usr_intf/pncconf/pncconf.glade:20962 -#: src/emc/usr_intf/pncconf/pncconf.glade:20976 -#: src/emc/usr_intf/pncconf/pncconf.glade:22758 -#: src/emc/usr_intf/pncconf/pncconf.glade:22772 -#: src/emc/usr_intf/pncconf/pncconf.glade:24554 -#: src/emc/usr_intf/pncconf/pncconf.glade:24568 -#: src/emc/usr_intf/pncconf/pncconf.glade:26330 -#: src/emc/usr_intf/pncconf/pncconf.glade:26344 -#: src/emc/usr_intf/pncconf/pncconf.glade:31324 -#: src/emc/usr_intf/pncconf/pncconf.glade:31336 -#: src/emc/usr_intf/pncconf/pncconf.glade:31600 -#: src/emc/usr_intf/pncconf/pncconf.glade:35669 -#: src/emc/usr_intf/pncconf/pncconf.glade:35681 -#: src/emc/usr_intf/pncconf/pncconf.glade:35814 -#: src/emc/usr_intf/pncconf/pncconf.glade:35828 -#: src/emc/usr_intf/pncconf/pncconf.glade:40000 -#: src/emc/usr_intf/pncconf/pncconf.glade:40012 -#: src/emc/usr_intf/pncconf/pncconf.glade:40174 -#: src/emc/usr_intf/pncconf/pncconf.glade:40188 -#: src/emc/usr_intf/pncconf/pncconf.glade:45168 -#: src/emc/usr_intf/pncconf/pncconf.glade:45180 -#: src/emc/usr_intf/pncconf/pncconf.glade:45431 -#: src/emc/usr_intf/pncconf/pncconf.glade:45445 -#: src/emc/usr_intf/pncconf/pncconf.glade:47097 -#: src/emc/usr_intf/pncconf/pncconf.glade:47111 -#: src/emc/usr_intf/pncconf/pncconf.glade:52091 -#: src/emc/usr_intf/pncconf/pncconf.glade:52103 -#: src/emc/usr_intf/pncconf/pncconf.glade:52354 -#: src/emc/usr_intf/pncconf/pncconf.glade:52368 -msgid "Num" +#: src/emc/usr_intf/pncconf/pncconf.glade:63348 +msgid "3pwm Deadtime:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8723 -#: src/emc/usr_intf/pncconf/pncconf.glade:8743 -#: src/emc/usr_intf/pncconf/pncconf.glade:8763 -#: src/emc/usr_intf/pncconf/pncconf.glade:8783 -#: src/emc/usr_intf/pncconf/pncconf.glade:8803 -#: src/emc/usr_intf/pncconf/pncconf.glade:8823 -#: src/emc/usr_intf/pncconf/pncconf.glade:8843 -#: src/emc/usr_intf/pncconf/pncconf.glade:8863 -#: src/emc/usr_intf/pncconf/pncconf.glade:8883 -#: src/emc/usr_intf/pncconf/pncconf.glade:8903 -#: src/emc/usr_intf/pncconf/pncconf.glade:8923 -#: src/emc/usr_intf/pncconf/pncconf.glade:8943 -#: src/emc/usr_intf/pncconf/pncconf.glade:8963 -#: src/emc/usr_intf/pncconf/pncconf.glade:8983 -#: src/emc/usr_intf/pncconf/pncconf.glade:9003 -#: src/emc/usr_intf/pncconf/pncconf.glade:9023 -#: src/emc/usr_intf/pncconf/pncconf.glade:9043 -#: src/emc/usr_intf/pncconf/pncconf.glade:9063 -#: src/emc/usr_intf/pncconf/pncconf.glade:9083 -#: src/emc/usr_intf/pncconf/pncconf.glade:9103 -#: src/emc/usr_intf/pncconf/pncconf.glade:9123 -#: src/emc/usr_intf/pncconf/pncconf.glade:9143 -#: src/emc/usr_intf/pncconf/pncconf.glade:9163 -#: src/emc/usr_intf/pncconf/pncconf.glade:11027 -#: src/emc/usr_intf/pncconf/pncconf.glade:11353 -#: src/emc/usr_intf/pncconf/pncconf.glade:13216 -#: src/emc/usr_intf/pncconf/pncconf.glade:13236 -#: src/emc/usr_intf/pncconf/pncconf.glade:13256 -#: src/emc/usr_intf/pncconf/pncconf.glade:13276 -#: src/emc/usr_intf/pncconf/pncconf.glade:13296 -#: src/emc/usr_intf/pncconf/pncconf.glade:13316 -#: src/emc/usr_intf/pncconf/pncconf.glade:13336 -#: src/emc/usr_intf/pncconf/pncconf.glade:13356 -#: src/emc/usr_intf/pncconf/pncconf.glade:13376 -#: src/emc/usr_intf/pncconf/pncconf.glade:13396 -#: src/emc/usr_intf/pncconf/pncconf.glade:13416 -#: src/emc/usr_intf/pncconf/pncconf.glade:13436 -#: src/emc/usr_intf/pncconf/pncconf.glade:13456 -#: src/emc/usr_intf/pncconf/pncconf.glade:13476 -#: src/emc/usr_intf/pncconf/pncconf.glade:13496 -#: src/emc/usr_intf/pncconf/pncconf.glade:13516 -#: src/emc/usr_intf/pncconf/pncconf.glade:13536 -#: src/emc/usr_intf/pncconf/pncconf.glade:13556 -#: src/emc/usr_intf/pncconf/pncconf.glade:13576 -#: src/emc/usr_intf/pncconf/pncconf.glade:13596 -#: src/emc/usr_intf/pncconf/pncconf.glade:13616 -#: src/emc/usr_intf/pncconf/pncconf.glade:13636 -#: src/emc/usr_intf/pncconf/pncconf.glade:13656 -#: src/emc/usr_intf/pncconf/pncconf.glade:13966 -#: src/emc/usr_intf/pncconf/pncconf.glade:15912 -#: src/emc/usr_intf/pncconf/pncconf.glade:15932 -#: src/emc/usr_intf/pncconf/pncconf.glade:15952 -#: src/emc/usr_intf/pncconf/pncconf.glade:15972 -#: src/emc/usr_intf/pncconf/pncconf.glade:15992 -#: src/emc/usr_intf/pncconf/pncconf.glade:16012 -#: src/emc/usr_intf/pncconf/pncconf.glade:16032 -#: src/emc/usr_intf/pncconf/pncconf.glade:16052 -#: src/emc/usr_intf/pncconf/pncconf.glade:16072 -#: src/emc/usr_intf/pncconf/pncconf.glade:16092 -#: src/emc/usr_intf/pncconf/pncconf.glade:16112 -#: src/emc/usr_intf/pncconf/pncconf.glade:16132 -#: src/emc/usr_intf/pncconf/pncconf.glade:16152 -#: src/emc/usr_intf/pncconf/pncconf.glade:16172 -#: src/emc/usr_intf/pncconf/pncconf.glade:16192 -#: src/emc/usr_intf/pncconf/pncconf.glade:16212 -#: src/emc/usr_intf/pncconf/pncconf.glade:16232 -#: src/emc/usr_intf/pncconf/pncconf.glade:16252 -#: src/emc/usr_intf/pncconf/pncconf.glade:16272 -#: src/emc/usr_intf/pncconf/pncconf.glade:16292 -#: src/emc/usr_intf/pncconf/pncconf.glade:16312 -#: src/emc/usr_intf/pncconf/pncconf.glade:16332 -#: src/emc/usr_intf/pncconf/pncconf.glade:16352 -#: src/emc/usr_intf/pncconf/pncconf.glade:16558 -#: src/emc/usr_intf/pncconf/pncconf.glade:18422 -#: src/emc/usr_intf/pncconf/pncconf.glade:18442 -#: src/emc/usr_intf/pncconf/pncconf.glade:18462 -#: src/emc/usr_intf/pncconf/pncconf.glade:18482 -#: src/emc/usr_intf/pncconf/pncconf.glade:18502 -#: src/emc/usr_intf/pncconf/pncconf.glade:18522 -#: src/emc/usr_intf/pncconf/pncconf.glade:18542 -#: src/emc/usr_intf/pncconf/pncconf.glade:18562 -#: src/emc/usr_intf/pncconf/pncconf.glade:18582 -#: src/emc/usr_intf/pncconf/pncconf.glade:18602 -#: src/emc/usr_intf/pncconf/pncconf.glade:18622 -#: src/emc/usr_intf/pncconf/pncconf.glade:18642 -#: src/emc/usr_intf/pncconf/pncconf.glade:18662 -#: src/emc/usr_intf/pncconf/pncconf.glade:18682 -#: src/emc/usr_intf/pncconf/pncconf.glade:18702 -#: src/emc/usr_intf/pncconf/pncconf.glade:18722 -#: src/emc/usr_intf/pncconf/pncconf.glade:18742 -#: src/emc/usr_intf/pncconf/pncconf.glade:18762 -#: src/emc/usr_intf/pncconf/pncconf.glade:18782 -#: src/emc/usr_intf/pncconf/pncconf.glade:18802 -#: src/emc/usr_intf/pncconf/pncconf.glade:18822 -#: src/emc/usr_intf/pncconf/pncconf.glade:18842 -#: src/emc/usr_intf/pncconf/pncconf.glade:18862 -#: src/emc/usr_intf/pncconf/pncconf.glade:26355 -#: src/emc/usr_intf/pncconf/pncconf.glade:26375 -#: src/emc/usr_intf/pncconf/pncconf.glade:26395 -#: src/emc/usr_intf/pncconf/pncconf.glade:26415 -#: src/emc/usr_intf/pncconf/pncconf.glade:26435 -#: src/emc/usr_intf/pncconf/pncconf.glade:26455 -#: src/emc/usr_intf/pncconf/pncconf.glade:26475 -#: src/emc/usr_intf/pncconf/pncconf.glade:26495 -#: src/emc/usr_intf/pncconf/pncconf.glade:26515 -#: src/emc/usr_intf/pncconf/pncconf.glade:26535 -#: src/emc/usr_intf/pncconf/pncconf.glade:26555 -#: src/emc/usr_intf/pncconf/pncconf.glade:26575 -#: src/emc/usr_intf/pncconf/pncconf.glade:26595 -#: src/emc/usr_intf/pncconf/pncconf.glade:26615 -#: src/emc/usr_intf/pncconf/pncconf.glade:26635 -#: src/emc/usr_intf/pncconf/pncconf.glade:26655 -#: src/emc/usr_intf/pncconf/pncconf.glade:26675 -#: src/emc/usr_intf/pncconf/pncconf.glade:26695 -#: src/emc/usr_intf/pncconf/pncconf.glade:26715 -#: src/emc/usr_intf/pncconf/pncconf.glade:26735 -#: src/emc/usr_intf/pncconf/pncconf.glade:26755 -#: src/emc/usr_intf/pncconf/pncconf.glade:26775 -#: src/emc/usr_intf/pncconf/pncconf.glade:26795 -#: src/emc/usr_intf/pncconf/pncconf.glade:28711 -#: src/emc/usr_intf/pncconf/pncconf.glade:28934 -#: src/emc/usr_intf/pncconf/pncconf.glade:30863 -#: src/emc/usr_intf/pncconf/pncconf.glade:30883 -#: src/emc/usr_intf/pncconf/pncconf.glade:30903 -#: src/emc/usr_intf/pncconf/pncconf.glade:30923 -#: src/emc/usr_intf/pncconf/pncconf.glade:30943 -#: src/emc/usr_intf/pncconf/pncconf.glade:30963 -#: src/emc/usr_intf/pncconf/pncconf.glade:30983 -#: src/emc/usr_intf/pncconf/pncconf.glade:31003 -#: src/emc/usr_intf/pncconf/pncconf.glade:31023 -#: src/emc/usr_intf/pncconf/pncconf.glade:31043 -#: src/emc/usr_intf/pncconf/pncconf.glade:31063 -#: src/emc/usr_intf/pncconf/pncconf.glade:31083 -#: src/emc/usr_intf/pncconf/pncconf.glade:31103 -#: src/emc/usr_intf/pncconf/pncconf.glade:31123 -#: src/emc/usr_intf/pncconf/pncconf.glade:31143 -#: src/emc/usr_intf/pncconf/pncconf.glade:31163 -#: src/emc/usr_intf/pncconf/pncconf.glade:31183 -#: src/emc/usr_intf/pncconf/pncconf.glade:31203 -#: src/emc/usr_intf/pncconf/pncconf.glade:31223 -#: src/emc/usr_intf/pncconf/pncconf.glade:31243 -#: src/emc/usr_intf/pncconf/pncconf.glade:31263 -#: src/emc/usr_intf/pncconf/pncconf.glade:31283 -#: src/emc/usr_intf/pncconf/pncconf.glade:31303 -#: src/emc/usr_intf/pncconf/pncconf.glade:31611 -#: src/emc/usr_intf/pncconf/pncconf.glade:31631 -#: src/emc/usr_intf/pncconf/pncconf.glade:31651 -#: src/emc/usr_intf/pncconf/pncconf.glade:31671 -#: src/emc/usr_intf/pncconf/pncconf.glade:31691 -#: src/emc/usr_intf/pncconf/pncconf.glade:31711 -#: src/emc/usr_intf/pncconf/pncconf.glade:31731 -#: src/emc/usr_intf/pncconf/pncconf.glade:31751 -#: src/emc/usr_intf/pncconf/pncconf.glade:31771 -#: src/emc/usr_intf/pncconf/pncconf.glade:31791 -#: src/emc/usr_intf/pncconf/pncconf.glade:31811 -#: src/emc/usr_intf/pncconf/pncconf.glade:33029 -#: src/emc/usr_intf/pncconf/pncconf.glade:33292 -#: src/emc/usr_intf/pncconf/pncconf.glade:35208 -#: src/emc/usr_intf/pncconf/pncconf.glade:35228 -#: src/emc/usr_intf/pncconf/pncconf.glade:35248 -#: src/emc/usr_intf/pncconf/pncconf.glade:35268 -#: src/emc/usr_intf/pncconf/pncconf.glade:35288 -#: src/emc/usr_intf/pncconf/pncconf.glade:35308 -#: src/emc/usr_intf/pncconf/pncconf.glade:35328 -#: src/emc/usr_intf/pncconf/pncconf.glade:35348 -#: src/emc/usr_intf/pncconf/pncconf.glade:35368 -#: src/emc/usr_intf/pncconf/pncconf.glade:35388 -#: src/emc/usr_intf/pncconf/pncconf.glade:35408 -#: src/emc/usr_intf/pncconf/pncconf.glade:35428 -#: src/emc/usr_intf/pncconf/pncconf.glade:35448 -#: src/emc/usr_intf/pncconf/pncconf.glade:35468 -#: src/emc/usr_intf/pncconf/pncconf.glade:35488 -#: src/emc/usr_intf/pncconf/pncconf.glade:35508 -#: src/emc/usr_intf/pncconf/pncconf.glade:35528 -#: src/emc/usr_intf/pncconf/pncconf.glade:35548 -#: src/emc/usr_intf/pncconf/pncconf.glade:35568 -#: src/emc/usr_intf/pncconf/pncconf.glade:35588 -#: src/emc/usr_intf/pncconf/pncconf.glade:35608 -#: src/emc/usr_intf/pncconf/pncconf.glade:35628 -#: src/emc/usr_intf/pncconf/pncconf.glade:35648 -#: src/emc/usr_intf/pncconf/pncconf.glade:35839 -#: src/emc/usr_intf/pncconf/pncconf.glade:35859 -#: src/emc/usr_intf/pncconf/pncconf.glade:35879 -#: src/emc/usr_intf/pncconf/pncconf.glade:35899 -#: src/emc/usr_intf/pncconf/pncconf.glade:35919 -#: src/emc/usr_intf/pncconf/pncconf.glade:35939 -#: src/emc/usr_intf/pncconf/pncconf.glade:35959 -#: src/emc/usr_intf/pncconf/pncconf.glade:35979 -#: src/emc/usr_intf/pncconf/pncconf.glade:35999 -#: src/emc/usr_intf/pncconf/pncconf.glade:36019 -#: src/emc/usr_intf/pncconf/pncconf.glade:36039 -#: src/emc/usr_intf/pncconf/pncconf.glade:36059 -#: src/emc/usr_intf/pncconf/pncconf.glade:36079 -#: src/emc/usr_intf/pncconf/pncconf.glade:36099 -#: src/emc/usr_intf/pncconf/pncconf.glade:36119 -#: src/emc/usr_intf/pncconf/pncconf.glade:36139 -#: src/emc/usr_intf/pncconf/pncconf.glade:36159 -#: src/emc/usr_intf/pncconf/pncconf.glade:36179 -#: src/emc/usr_intf/pncconf/pncconf.glade:36199 -#: src/emc/usr_intf/pncconf/pncconf.glade:36219 -#: src/emc/usr_intf/pncconf/pncconf.glade:36239 -#: src/emc/usr_intf/pncconf/pncconf.glade:36259 -#: src/emc/usr_intf/pncconf/pncconf.glade:36279 -#: src/emc/usr_intf/pncconf/pncconf.glade:38208 -#: src/emc/usr_intf/pncconf/pncconf.glade:38549 -#: src/emc/usr_intf/pncconf/pncconf.glade:39779 -#: src/emc/usr_intf/pncconf/pncconf.glade:39799 -#: src/emc/usr_intf/pncconf/pncconf.glade:39819 -#: src/emc/usr_intf/pncconf/pncconf.glade:39839 -#: src/emc/usr_intf/pncconf/pncconf.glade:39859 -#: src/emc/usr_intf/pncconf/pncconf.glade:39879 -#: src/emc/usr_intf/pncconf/pncconf.glade:39899 -#: src/emc/usr_intf/pncconf/pncconf.glade:39919 -#: src/emc/usr_intf/pncconf/pncconf.glade:39939 -#: src/emc/usr_intf/pncconf/pncconf.glade:39959 -#: src/emc/usr_intf/pncconf/pncconf.glade:39979 -#: src/emc/usr_intf/pncconf/pncconf.glade:40199 -#: src/emc/usr_intf/pncconf/pncconf.glade:40219 -#: src/emc/usr_intf/pncconf/pncconf.glade:40239 -#: src/emc/usr_intf/pncconf/pncconf.glade:40259 -#: src/emc/usr_intf/pncconf/pncconf.glade:40279 -#: src/emc/usr_intf/pncconf/pncconf.glade:40299 -#: src/emc/usr_intf/pncconf/pncconf.glade:40319 -#: src/emc/usr_intf/pncconf/pncconf.glade:40339 -#: src/emc/usr_intf/pncconf/pncconf.glade:40359 -#: src/emc/usr_intf/pncconf/pncconf.glade:40379 -#: src/emc/usr_intf/pncconf/pncconf.glade:40399 -#: src/emc/usr_intf/pncconf/pncconf.glade:40419 -#: src/emc/usr_intf/pncconf/pncconf.glade:40439 -#: src/emc/usr_intf/pncconf/pncconf.glade:40459 -#: src/emc/usr_intf/pncconf/pncconf.glade:40479 -#: src/emc/usr_intf/pncconf/pncconf.glade:40499 -#: src/emc/usr_intf/pncconf/pncconf.glade:40519 -#: src/emc/usr_intf/pncconf/pncconf.glade:40539 -#: src/emc/usr_intf/pncconf/pncconf.glade:40559 -#: src/emc/usr_intf/pncconf/pncconf.glade:40579 -#: src/emc/usr_intf/pncconf/pncconf.glade:40599 -#: src/emc/usr_intf/pncconf/pncconf.glade:40619 -#: src/emc/usr_intf/pncconf/pncconf.glade:40639 -#: src/emc/usr_intf/pncconf/pncconf.glade:42555 -#: src/emc/usr_intf/pncconf/pncconf.glade:42778 -#: src/emc/usr_intf/pncconf/pncconf.glade:44707 -#: src/emc/usr_intf/pncconf/pncconf.glade:44727 -#: src/emc/usr_intf/pncconf/pncconf.glade:44747 -#: src/emc/usr_intf/pncconf/pncconf.glade:44767 -#: src/emc/usr_intf/pncconf/pncconf.glade:44787 -#: src/emc/usr_intf/pncconf/pncconf.glade:44807 -#: src/emc/usr_intf/pncconf/pncconf.glade:44827 -#: src/emc/usr_intf/pncconf/pncconf.glade:44847 -#: src/emc/usr_intf/pncconf/pncconf.glade:44867 -#: src/emc/usr_intf/pncconf/pncconf.glade:44887 -#: src/emc/usr_intf/pncconf/pncconf.glade:44907 -#: src/emc/usr_intf/pncconf/pncconf.glade:44927 -#: src/emc/usr_intf/pncconf/pncconf.glade:44947 -#: src/emc/usr_intf/pncconf/pncconf.glade:44967 -#: src/emc/usr_intf/pncconf/pncconf.glade:44987 -#: src/emc/usr_intf/pncconf/pncconf.glade:45007 -#: src/emc/usr_intf/pncconf/pncconf.glade:45027 -#: src/emc/usr_intf/pncconf/pncconf.glade:45047 -#: src/emc/usr_intf/pncconf/pncconf.glade:45067 -#: src/emc/usr_intf/pncconf/pncconf.glade:45087 -#: src/emc/usr_intf/pncconf/pncconf.glade:45107 -#: src/emc/usr_intf/pncconf/pncconf.glade:45127 -#: src/emc/usr_intf/pncconf/pncconf.glade:45147 -#: src/emc/usr_intf/pncconf/pncconf.glade:45456 -#: src/emc/usr_intf/pncconf/pncconf.glade:45476 -#: src/emc/usr_intf/pncconf/pncconf.glade:45496 -#: src/emc/usr_intf/pncconf/pncconf.glade:45516 -#: src/emc/usr_intf/pncconf/pncconf.glade:45536 -#: src/emc/usr_intf/pncconf/pncconf.glade:45556 -#: src/emc/usr_intf/pncconf/pncconf.glade:45576 -#: src/emc/usr_intf/pncconf/pncconf.glade:45596 -#: src/emc/usr_intf/pncconf/pncconf.glade:45616 -#: src/emc/usr_intf/pncconf/pncconf.glade:45636 -#: src/emc/usr_intf/pncconf/pncconf.glade:45656 -#: src/emc/usr_intf/pncconf/pncconf.glade:46886 -#: src/emc/usr_intf/pncconf/pncconf.glade:47122 -#: src/emc/usr_intf/pncconf/pncconf.glade:47142 -#: src/emc/usr_intf/pncconf/pncconf.glade:47162 -#: src/emc/usr_intf/pncconf/pncconf.glade:47182 -#: src/emc/usr_intf/pncconf/pncconf.glade:47202 -#: src/emc/usr_intf/pncconf/pncconf.glade:47222 -#: src/emc/usr_intf/pncconf/pncconf.glade:47242 -#: src/emc/usr_intf/pncconf/pncconf.glade:47262 -#: src/emc/usr_intf/pncconf/pncconf.glade:47282 -#: src/emc/usr_intf/pncconf/pncconf.glade:47302 -#: src/emc/usr_intf/pncconf/pncconf.glade:47322 -#: src/emc/usr_intf/pncconf/pncconf.glade:47342 -#: src/emc/usr_intf/pncconf/pncconf.glade:47362 -#: src/emc/usr_intf/pncconf/pncconf.glade:47382 -#: src/emc/usr_intf/pncconf/pncconf.glade:47402 -#: src/emc/usr_intf/pncconf/pncconf.glade:47422 -#: src/emc/usr_intf/pncconf/pncconf.glade:47442 -#: src/emc/usr_intf/pncconf/pncconf.glade:47462 -#: src/emc/usr_intf/pncconf/pncconf.glade:47482 -#: src/emc/usr_intf/pncconf/pncconf.glade:47502 -#: src/emc/usr_intf/pncconf/pncconf.glade:47522 -#: src/emc/usr_intf/pncconf/pncconf.glade:47542 -#: src/emc/usr_intf/pncconf/pncconf.glade:47562 -#: src/emc/usr_intf/pncconf/pncconf.glade:49478 -#: src/emc/usr_intf/pncconf/pncconf.glade:49701 -#: src/emc/usr_intf/pncconf/pncconf.glade:51630 -#: src/emc/usr_intf/pncconf/pncconf.glade:51650 -#: src/emc/usr_intf/pncconf/pncconf.glade:51670 -#: src/emc/usr_intf/pncconf/pncconf.glade:51690 -#: src/emc/usr_intf/pncconf/pncconf.glade:51710 -#: src/emc/usr_intf/pncconf/pncconf.glade:51730 -#: src/emc/usr_intf/pncconf/pncconf.glade:51750 -#: src/emc/usr_intf/pncconf/pncconf.glade:51770 -#: src/emc/usr_intf/pncconf/pncconf.glade:51790 -#: src/emc/usr_intf/pncconf/pncconf.glade:51810 -#: src/emc/usr_intf/pncconf/pncconf.glade:51830 -#: src/emc/usr_intf/pncconf/pncconf.glade:51850 -#: src/emc/usr_intf/pncconf/pncconf.glade:51870 -#: src/emc/usr_intf/pncconf/pncconf.glade:51890 -#: src/emc/usr_intf/pncconf/pncconf.glade:51910 -#: src/emc/usr_intf/pncconf/pncconf.glade:51930 -#: src/emc/usr_intf/pncconf/pncconf.glade:51950 -#: src/emc/usr_intf/pncconf/pncconf.glade:51970 -#: src/emc/usr_intf/pncconf/pncconf.glade:51990 -#: src/emc/usr_intf/pncconf/pncconf.glade:52010 -#: src/emc/usr_intf/pncconf/pncconf.glade:52030 -#: src/emc/usr_intf/pncconf/pncconf.glade:52050 -#: src/emc/usr_intf/pncconf/pncconf.glade:52070 -#: src/emc/usr_intf/pncconf/pncconf.glade:52379 -#: src/emc/usr_intf/pncconf/pncconf.glade:52399 -#: src/emc/usr_intf/pncconf/pncconf.glade:52419 -#: src/emc/usr_intf/pncconf/pncconf.glade:52439 -#: src/emc/usr_intf/pncconf/pncconf.glade:52459 -#: src/emc/usr_intf/pncconf/pncconf.glade:52479 -#: src/emc/usr_intf/pncconf/pncconf.glade:52499 -#: src/emc/usr_intf/pncconf/pncconf.glade:52519 -#: src/emc/usr_intf/pncconf/pncconf.glade:52539 -#: src/emc/usr_intf/pncconf/pncconf.glade:52559 -#: src/emc/usr_intf/pncconf/pncconf.glade:52579 -#: src/emc/usr_intf/pncconf/pncconf.glade:53809 +#: src/emc/usr_intf/pncconf/pncconf.glade:63361 +msgid "Quad Pulses / Rev:" +msgstr "四 脈衝 / 轉" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63438 msgid "" -"GPIO Input\n" -"GPIO Output\n" -"GPIO O Drain\n" -"Encoder\n" -"PWM\n" -"StepGen\n" +"Open Loop\n" +" Test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9198 -#: src/emc/usr_intf/pncconf/pncconf.glade:13188 -#: src/emc/usr_intf/pncconf/pncconf.glade:15884 -#: src/emc/usr_intf/pncconf/pncconf.glade:18394 -#: src/emc/usr_intf/pncconf/pncconf.glade:20397 -#: src/emc/usr_intf/pncconf/pncconf.glade:21325 -#: src/emc/usr_intf/pncconf/pncconf.glade:23121 -#: src/emc/usr_intf/pncconf/pncconf.glade:24917 -msgid "Launch test panel" -msgstr "啟動測試面板" +#: src/emc/usr_intf/pncconf/pncconf.glade:63462 +#, fuzzy +msgid "Analog Min Limit:" +msgstr "主軸" -#: src/emc/usr_intf/pncconf/pncconf.glade:9213 -#: src/emc/usr_intf/pncconf/pncconf.glade:9225 -#: src/emc/usr_intf/pncconf/pncconf.glade:13162 -#: src/emc/usr_intf/pncconf/pncconf.glade:13174 -#: src/emc/usr_intf/pncconf/pncconf.glade:15858 -#: src/emc/usr_intf/pncconf/pncconf.glade:15870 -#: src/emc/usr_intf/pncconf/pncconf.glade:18367 -#: src/emc/usr_intf/pncconf/pncconf.glade:18379 -#: src/emc/usr_intf/pncconf/pncconf.glade:20370 -#: src/emc/usr_intf/pncconf/pncconf.glade:20382 -#: src/emc/usr_intf/pncconf/pncconf.glade:21339 -#: src/emc/usr_intf/pncconf/pncconf.glade:21351 -#: src/emc/usr_intf/pncconf/pncconf.glade:23135 -#: src/emc/usr_intf/pncconf/pncconf.glade:23147 -#: src/emc/usr_intf/pncconf/pncconf.glade:24931 -#: src/emc/usr_intf/pncconf/pncconf.glade:24943 -#: src/emc/usr_intf/pncconf/pncconf.glade:26815 -#: src/emc/usr_intf/pncconf/pncconf.glade:26827 -#: src/emc/usr_intf/pncconf/pncconf.glade:30826 -#: src/emc/usr_intf/pncconf/pncconf.glade:30838 -#: src/emc/usr_intf/pncconf/pncconf.glade:31831 -#: src/emc/usr_intf/pncconf/pncconf.glade:35184 -#: src/emc/usr_intf/pncconf/pncconf.glade:35196 -#: src/emc/usr_intf/pncconf/pncconf.glade:36312 -#: src/emc/usr_intf/pncconf/pncconf.glade:36324 -#: src/emc/usr_intf/pncconf/pncconf.glade:39755 -#: src/emc/usr_intf/pncconf/pncconf.glade:39767 -#: src/emc/usr_intf/pncconf/pncconf.glade:40659 -#: src/emc/usr_intf/pncconf/pncconf.glade:40671 -#: src/emc/usr_intf/pncconf/pncconf.glade:44670 -#: src/emc/usr_intf/pncconf/pncconf.glade:44682 -#: src/emc/usr_intf/pncconf/pncconf.glade:45676 -#: src/emc/usr_intf/pncconf/pncconf.glade:45688 -#: src/emc/usr_intf/pncconf/pncconf.glade:47582 -#: src/emc/usr_intf/pncconf/pncconf.glade:47594 -#: src/emc/usr_intf/pncconf/pncconf.glade:51593 -#: src/emc/usr_intf/pncconf/pncconf.glade:51605 -#: src/emc/usr_intf/pncconf/pncconf.glade:52599 -#: src/emc/usr_intf/pncconf/pncconf.glade:52611 -msgid "function" -msgstr "功用" +#: src/emc/usr_intf/pncconf/pncconf.glade:63476 +#, fuzzy +msgid "Analog Max limit:" +msgstr "主軸 快些" -#: src/emc/usr_intf/pncconf/pncconf.glade:9305 -#: src/emc/usr_intf/pncconf/pncconf.glade:9357 -#: src/emc/usr_intf/pncconf/pncconf.glade:9409 -#: src/emc/usr_intf/pncconf/pncconf.glade:9461 -#: src/emc/usr_intf/pncconf/pncconf.glade:10301 -#: src/emc/usr_intf/pncconf/pncconf.glade:10353 -#: src/emc/usr_intf/pncconf/pncconf.glade:10405 -#: src/emc/usr_intf/pncconf/pncconf.glade:10457 -#: src/emc/usr_intf/pncconf/pncconf.glade:10509 -#: src/emc/usr_intf/pncconf/pncconf.glade:10561 -#: src/emc/usr_intf/pncconf/pncconf.glade:10613 -#: src/emc/usr_intf/pncconf/pncconf.glade:10665 -#: src/emc/usr_intf/pncconf/pncconf.glade:10717 -#: src/emc/usr_intf/pncconf/pncconf.glade:10769 -#: src/emc/usr_intf/pncconf/pncconf.glade:11089 -#: src/emc/usr_intf/pncconf/pncconf.glade:11141 -#: src/emc/usr_intf/pncconf/pncconf.glade:11579 -#: src/emc/usr_intf/pncconf/pncconf.glade:11631 -#: src/emc/usr_intf/pncconf/pncconf.glade:11683 -#: src/emc/usr_intf/pncconf/pncconf.glade:11735 -#: src/emc/usr_intf/pncconf/pncconf.glade:11787 -#: src/emc/usr_intf/pncconf/pncconf.glade:11839 -#: src/emc/usr_intf/pncconf/pncconf.glade:11891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11943 -#: src/emc/usr_intf/pncconf/pncconf.glade:11995 -#: src/emc/usr_intf/pncconf/pncconf.glade:12047 -#: src/emc/usr_intf/pncconf/pncconf.glade:12886 -#: src/emc/usr_intf/pncconf/pncconf.glade:12938 -#: src/emc/usr_intf/pncconf/pncconf.glade:12990 -#: src/emc/usr_intf/pncconf/pncconf.glade:13042 -#: src/emc/usr_intf/pncconf/pncconf.glade:13702 -#: src/emc/usr_intf/pncconf/pncconf.glade:13754 -#: src/emc/usr_intf/pncconf/pncconf.glade:14183 -#: src/emc/usr_intf/pncconf/pncconf.glade:14235 -#: src/emc/usr_intf/pncconf/pncconf.glade:14287 -#: src/emc/usr_intf/pncconf/pncconf.glade:14339 -#: src/emc/usr_intf/pncconf/pncconf.glade:14391 -#: src/emc/usr_intf/pncconf/pncconf.glade:14443 -#: src/emc/usr_intf/pncconf/pncconf.glade:14495 -#: src/emc/usr_intf/pncconf/pncconf.glade:14547 -#: src/emc/usr_intf/pncconf/pncconf.glade:14599 -#: src/emc/usr_intf/pncconf/pncconf.glade:14651 -#: src/emc/usr_intf/pncconf/pncconf.glade:14703 -#: src/emc/usr_intf/pncconf/pncconf.glade:14755 -#: src/emc/usr_intf/pncconf/pncconf.glade:15582 -#: src/emc/usr_intf/pncconf/pncconf.glade:15634 -#: src/emc/usr_intf/pncconf/pncconf.glade:15686 -#: src/emc/usr_intf/pncconf/pncconf.glade:15738 -#: src/emc/usr_intf/pncconf/pncconf.glade:16784 -#: src/emc/usr_intf/pncconf/pncconf.glade:16836 -#: src/emc/usr_intf/pncconf/pncconf.glade:16888 -#: src/emc/usr_intf/pncconf/pncconf.glade:16940 -#: src/emc/usr_intf/pncconf/pncconf.glade:16992 -#: src/emc/usr_intf/pncconf/pncconf.glade:17044 -#: src/emc/usr_intf/pncconf/pncconf.glade:17096 -#: src/emc/usr_intf/pncconf/pncconf.glade:17148 -#: src/emc/usr_intf/pncconf/pncconf.glade:17200 -#: src/emc/usr_intf/pncconf/pncconf.glade:17252 -#: src/emc/usr_intf/pncconf/pncconf.glade:17304 -#: src/emc/usr_intf/pncconf/pncconf.glade:18143 -#: src/emc/usr_intf/pncconf/pncconf.glade:18195 -#: src/emc/usr_intf/pncconf/pncconf.glade:18247 -#: src/emc/usr_intf/pncconf/pncconf.glade:18908 -#: src/emc/usr_intf/pncconf/pncconf.glade:18960 -#: src/emc/usr_intf/pncconf/pncconf.glade:26907 -#: src/emc/usr_intf/pncconf/pncconf.glade:26959 -#: src/emc/usr_intf/pncconf/pncconf.glade:27011 -#: src/emc/usr_intf/pncconf/pncconf.glade:27063 -#: src/emc/usr_intf/pncconf/pncconf.glade:27890 -#: src/emc/usr_intf/pncconf/pncconf.glade:27942 -#: src/emc/usr_intf/pncconf/pncconf.glade:27994 -#: src/emc/usr_intf/pncconf/pncconf.glade:28046 -#: src/emc/usr_intf/pncconf/pncconf.glade:28098 -#: src/emc/usr_intf/pncconf/pncconf.glade:28150 -#: src/emc/usr_intf/pncconf/pncconf.glade:28202 -#: src/emc/usr_intf/pncconf/pncconf.glade:28254 -#: src/emc/usr_intf/pncconf/pncconf.glade:28306 -#: src/emc/usr_intf/pncconf/pncconf.glade:28358 -#: src/emc/usr_intf/pncconf/pncconf.glade:28410 -#: src/emc/usr_intf/pncconf/pncconf.glade:28462 -#: src/emc/usr_intf/pncconf/pncconf.glade:29151 -#: src/emc/usr_intf/pncconf/pncconf.glade:29203 -#: src/emc/usr_intf/pncconf/pncconf.glade:29255 -#: src/emc/usr_intf/pncconf/pncconf.glade:29307 -#: src/emc/usr_intf/pncconf/pncconf.glade:29359 -#: src/emc/usr_intf/pncconf/pncconf.glade:29411 -#: src/emc/usr_intf/pncconf/pncconf.glade:29463 -#: src/emc/usr_intf/pncconf/pncconf.glade:29515 -#: src/emc/usr_intf/pncconf/pncconf.glade:29567 -#: src/emc/usr_intf/pncconf/pncconf.glade:29619 -#: src/emc/usr_intf/pncconf/pncconf.glade:29671 -#: src/emc/usr_intf/pncconf/pncconf.glade:29723 -#: src/emc/usr_intf/pncconf/pncconf.glade:30550 -#: src/emc/usr_intf/pncconf/pncconf.glade:30602 -#: src/emc/usr_intf/pncconf/pncconf.glade:30654 -#: src/emc/usr_intf/pncconf/pncconf.glade:30706 -#: src/emc/usr_intf/pncconf/pncconf.glade:32210 -#: src/emc/usr_intf/pncconf/pncconf.glade:32262 -#: src/emc/usr_intf/pncconf/pncconf.glade:32314 -#: src/emc/usr_intf/pncconf/pncconf.glade:32366 -#: src/emc/usr_intf/pncconf/pncconf.glade:32418 -#: src/emc/usr_intf/pncconf/pncconf.glade:32470 -#: src/emc/usr_intf/pncconf/pncconf.glade:32522 -#: src/emc/usr_intf/pncconf/pncconf.glade:32574 -#: src/emc/usr_intf/pncconf/pncconf.glade:32626 -#: src/emc/usr_intf/pncconf/pncconf.glade:32678 -#: src/emc/usr_intf/pncconf/pncconf.glade:32730 -#: src/emc/usr_intf/pncconf/pncconf.glade:32782 -#: src/emc/usr_intf/pncconf/pncconf.glade:33509 -#: src/emc/usr_intf/pncconf/pncconf.glade:33561 -#: src/emc/usr_intf/pncconf/pncconf.glade:33613 -#: src/emc/usr_intf/pncconf/pncconf.glade:33665 -#: src/emc/usr_intf/pncconf/pncconf.glade:33717 -#: src/emc/usr_intf/pncconf/pncconf.glade:33769 -#: src/emc/usr_intf/pncconf/pncconf.glade:33821 -#: src/emc/usr_intf/pncconf/pncconf.glade:33873 -#: src/emc/usr_intf/pncconf/pncconf.glade:33925 -#: src/emc/usr_intf/pncconf/pncconf.glade:33977 -#: src/emc/usr_intf/pncconf/pncconf.glade:34029 -#: src/emc/usr_intf/pncconf/pncconf.glade:34081 -#: src/emc/usr_intf/pncconf/pncconf.glade:34908 -#: src/emc/usr_intf/pncconf/pncconf.glade:34960 -#: src/emc/usr_intf/pncconf/pncconf.glade:35012 -#: src/emc/usr_intf/pncconf/pncconf.glade:35064 -#: src/emc/usr_intf/pncconf/pncconf.glade:36404 -#: src/emc/usr_intf/pncconf/pncconf.glade:36456 -#: src/emc/usr_intf/pncconf/pncconf.glade:36508 -#: src/emc/usr_intf/pncconf/pncconf.glade:36560 -#: src/emc/usr_intf/pncconf/pncconf.glade:37387 -#: src/emc/usr_intf/pncconf/pncconf.glade:37439 -#: src/emc/usr_intf/pncconf/pncconf.glade:37491 -#: src/emc/usr_intf/pncconf/pncconf.glade:37543 -#: src/emc/usr_intf/pncconf/pncconf.glade:37595 -#: src/emc/usr_intf/pncconf/pncconf.glade:37647 -#: src/emc/usr_intf/pncconf/pncconf.glade:37699 -#: src/emc/usr_intf/pncconf/pncconf.glade:37751 -#: src/emc/usr_intf/pncconf/pncconf.glade:37803 -#: src/emc/usr_intf/pncconf/pncconf.glade:37855 -#: src/emc/usr_intf/pncconf/pncconf.glade:37907 -#: src/emc/usr_intf/pncconf/pncconf.glade:37959 -#: src/emc/usr_intf/pncconf/pncconf.glade:38764 -#: src/emc/usr_intf/pncconf/pncconf.glade:38816 -#: src/emc/usr_intf/pncconf/pncconf.glade:38868 -#: src/emc/usr_intf/pncconf/pncconf.glade:38920 -#: src/emc/usr_intf/pncconf/pncconf.glade:38972 -#: src/emc/usr_intf/pncconf/pncconf.glade:39024 -#: src/emc/usr_intf/pncconf/pncconf.glade:39076 -#: src/emc/usr_intf/pncconf/pncconf.glade:39128 -#: src/emc/usr_intf/pncconf/pncconf.glade:39180 -#: src/emc/usr_intf/pncconf/pncconf.glade:39232 -#: src/emc/usr_intf/pncconf/pncconf.glade:39284 -#: src/emc/usr_intf/pncconf/pncconf.glade:39336 -#: src/emc/usr_intf/pncconf/pncconf.glade:40751 -#: src/emc/usr_intf/pncconf/pncconf.glade:40803 -#: src/emc/usr_intf/pncconf/pncconf.glade:40855 -#: src/emc/usr_intf/pncconf/pncconf.glade:40907 -#: src/emc/usr_intf/pncconf/pncconf.glade:41734 -#: src/emc/usr_intf/pncconf/pncconf.glade:41786 -#: src/emc/usr_intf/pncconf/pncconf.glade:41838 -#: src/emc/usr_intf/pncconf/pncconf.glade:41890 -#: src/emc/usr_intf/pncconf/pncconf.glade:41942 -#: src/emc/usr_intf/pncconf/pncconf.glade:41994 -#: src/emc/usr_intf/pncconf/pncconf.glade:42046 -#: src/emc/usr_intf/pncconf/pncconf.glade:42098 -#: src/emc/usr_intf/pncconf/pncconf.glade:42150 -#: src/emc/usr_intf/pncconf/pncconf.glade:42202 -#: src/emc/usr_intf/pncconf/pncconf.glade:42254 -#: src/emc/usr_intf/pncconf/pncconf.glade:42306 -#: src/emc/usr_intf/pncconf/pncconf.glade:42995 -#: src/emc/usr_intf/pncconf/pncconf.glade:43047 -#: src/emc/usr_intf/pncconf/pncconf.glade:43099 -#: src/emc/usr_intf/pncconf/pncconf.glade:43151 -#: src/emc/usr_intf/pncconf/pncconf.glade:43203 -#: src/emc/usr_intf/pncconf/pncconf.glade:43255 -#: src/emc/usr_intf/pncconf/pncconf.glade:43307 -#: src/emc/usr_intf/pncconf/pncconf.glade:43359 -#: src/emc/usr_intf/pncconf/pncconf.glade:43411 -#: src/emc/usr_intf/pncconf/pncconf.glade:43463 -#: src/emc/usr_intf/pncconf/pncconf.glade:43515 -#: src/emc/usr_intf/pncconf/pncconf.glade:43567 -#: src/emc/usr_intf/pncconf/pncconf.glade:44394 -#: src/emc/usr_intf/pncconf/pncconf.glade:44446 -#: src/emc/usr_intf/pncconf/pncconf.glade:44498 -#: src/emc/usr_intf/pncconf/pncconf.glade:44550 -#: src/emc/usr_intf/pncconf/pncconf.glade:46067 -#: src/emc/usr_intf/pncconf/pncconf.glade:46119 -#: src/emc/usr_intf/pncconf/pncconf.glade:46171 -#: src/emc/usr_intf/pncconf/pncconf.glade:46223 -#: src/emc/usr_intf/pncconf/pncconf.glade:46275 -#: src/emc/usr_intf/pncconf/pncconf.glade:46327 -#: src/emc/usr_intf/pncconf/pncconf.glade:46379 -#: src/emc/usr_intf/pncconf/pncconf.glade:46431 -#: src/emc/usr_intf/pncconf/pncconf.glade:46483 -#: src/emc/usr_intf/pncconf/pncconf.glade:46535 -#: src/emc/usr_intf/pncconf/pncconf.glade:46587 -#: src/emc/usr_intf/pncconf/pncconf.glade:46639 -#: src/emc/usr_intf/pncconf/pncconf.glade:47674 -#: src/emc/usr_intf/pncconf/pncconf.glade:47726 -#: src/emc/usr_intf/pncconf/pncconf.glade:47778 -#: src/emc/usr_intf/pncconf/pncconf.glade:47830 -#: src/emc/usr_intf/pncconf/pncconf.glade:48657 -#: src/emc/usr_intf/pncconf/pncconf.glade:48709 -#: src/emc/usr_intf/pncconf/pncconf.glade:48761 -#: src/emc/usr_intf/pncconf/pncconf.glade:48813 -#: src/emc/usr_intf/pncconf/pncconf.glade:48865 -#: src/emc/usr_intf/pncconf/pncconf.glade:48917 -#: src/emc/usr_intf/pncconf/pncconf.glade:48969 -#: src/emc/usr_intf/pncconf/pncconf.glade:49021 -#: src/emc/usr_intf/pncconf/pncconf.glade:49073 -#: src/emc/usr_intf/pncconf/pncconf.glade:49125 -#: src/emc/usr_intf/pncconf/pncconf.glade:49177 -#: src/emc/usr_intf/pncconf/pncconf.glade:49229 -#: src/emc/usr_intf/pncconf/pncconf.glade:49918 -#: src/emc/usr_intf/pncconf/pncconf.glade:49970 -#: src/emc/usr_intf/pncconf/pncconf.glade:50022 -#: src/emc/usr_intf/pncconf/pncconf.glade:50074 -#: src/emc/usr_intf/pncconf/pncconf.glade:50126 -#: src/emc/usr_intf/pncconf/pncconf.glade:50178 -#: src/emc/usr_intf/pncconf/pncconf.glade:50230 -#: src/emc/usr_intf/pncconf/pncconf.glade:50282 -#: src/emc/usr_intf/pncconf/pncconf.glade:50334 -#: src/emc/usr_intf/pncconf/pncconf.glade:50386 -#: src/emc/usr_intf/pncconf/pncconf.glade:50438 -#: src/emc/usr_intf/pncconf/pncconf.glade:50490 -#: src/emc/usr_intf/pncconf/pncconf.glade:51317 -#: src/emc/usr_intf/pncconf/pncconf.glade:51369 -#: src/emc/usr_intf/pncconf/pncconf.glade:51421 -#: src/emc/usr_intf/pncconf/pncconf.glade:51473 -#: src/emc/usr_intf/pncconf/pncconf.glade:52990 -#: src/emc/usr_intf/pncconf/pncconf.glade:53042 -#: src/emc/usr_intf/pncconf/pncconf.glade:53094 -#: src/emc/usr_intf/pncconf/pncconf.glade:53146 -#: src/emc/usr_intf/pncconf/pncconf.glade:53198 -#: src/emc/usr_intf/pncconf/pncconf.glade:53250 -#: src/emc/usr_intf/pncconf/pncconf.glade:53302 -#: src/emc/usr_intf/pncconf/pncconf.glade:53354 -#: src/emc/usr_intf/pncconf/pncconf.glade:53406 -#: src/emc/usr_intf/pncconf/pncconf.glade:53458 -#: src/emc/usr_intf/pncconf/pncconf.glade:53510 -#: src/emc/usr_intf/pncconf/pncconf.glade:53562 -msgid "" -"ESTOP IN\n" -"Spindle PPR\n" -"Spindle A \n" -"Spindle B \n" -"Home X \n" -"Home Y \n" -"Home Z\n" -"Home A\n" -"Minimum Limit + Home X \n" -"Minimum Limit + Home Y \n" -"Minimum Limit + Home Z \n" -"Minimum Limit + Home A\n" -"Maximum Limit + Home X \n" -"Maximum Limit + Home Y \n" -"Maximum Limit + Home Z \n" -"Maximum Limit + Home A\n" -"Both Limit + Home X \n" -"Both Limit + Home Y \n" -"Both Limit + Home Z \n" -"Both Limit + Home A\n" -"Minimum Limit X \n" -"Minimum Limit Y \n" -"Minimum Limit Z \n" -"Minimum Limit A\n" -"Maximum Limit X \n" -"Maximum Limit Y \n" -"Maximum Limit Z \n" -"Maximum Limit A\n" -"Both Limit X \n" -"Both Limit Y \n" -"Both Limit Z \n" -"Both Limit A\n" -"All limits\n" -"All home\n" -"Unused" +#: src/emc/usr_intf/pncconf/pncconf.glade:63490 +msgid "Analog Max Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9515 -#: src/emc/usr_intf/pncconf/pncconf.glade:12871 -#: src/emc/usr_intf/pncconf/pncconf.glade:18128 -#: src/emc/usr_intf/pncconf/pncconf.glade:20233 -#: src/emc/usr_intf/pncconf/pncconf.glade:21486 -#: src/emc/usr_intf/pncconf/pncconf.glade:23282 -#: src/emc/usr_intf/pncconf/pncconf.glade:25078 -msgid "31:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63554 +#, fuzzy +msgid "Output Info" +msgstr "輸出" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63603 +msgid "Step On-Time" +msgstr "步進 準時" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63616 +msgid "Step Space" +msgstr "步進 間距" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63659 +msgid "Direction Hold" +msgstr "方向保持" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63672 +msgid "Direction Setup" +msgstr "方向設定" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63715 +msgid "Driver Type:" +msgstr "驅動類型" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63748 +msgid "Stepper Info" +msgstr "步進 信息" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63800 +msgid "No feedback" +msgstr "沒有反饋" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63810 +msgid "Absolute Feedback" +msgstr "絕對反饋" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63824 +msgid "Incremental Feedback" +msgstr "增量反饋" + +#: src/emc/usr_intf/pncconf/pncconf.glade:63838 +msgid "Incremental Encoder" +msgstr "增量編碼器" -#: src/emc/usr_intf/pncconf/pncconf.glade:9531 -#: src/emc/usr_intf/pncconf/pncconf.glade:12855 -#: src/emc/usr_intf/pncconf/pncconf.glade:18112 -#: src/emc/usr_intf/pncconf/pncconf.glade:20217 -#: src/emc/usr_intf/pncconf/pncconf.glade:21502 -#: src/emc/usr_intf/pncconf/pncconf.glade:23298 -#: src/emc/usr_intf/pncconf/pncconf.glade:25094 -msgid "29:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63850 +msgid "Hall sensors" +msgstr "霍爾傳感器" -#: src/emc/usr_intf/pncconf/pncconf.glade:9547 -#: src/emc/usr_intf/pncconf/pncconf.glade:12839 -#: src/emc/usr_intf/pncconf/pncconf.glade:18096 -#: src/emc/usr_intf/pncconf/pncconf.glade:20201 -#: src/emc/usr_intf/pncconf/pncconf.glade:21518 -#: src/emc/usr_intf/pncconf/pncconf.glade:23314 -#: src/emc/usr_intf/pncconf/pncconf.glade:25110 -msgid "27:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63862 +msgid "Fanuc Red Cap " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9563 -#: src/emc/usr_intf/pncconf/pncconf.glade:12823 -#: src/emc/usr_intf/pncconf/pncconf.glade:18080 -#: src/emc/usr_intf/pncconf/pncconf.glade:20185 -#: src/emc/usr_intf/pncconf/pncconf.glade:21534 -#: src/emc/usr_intf/pncconf/pncconf.glade:23330 -#: src/emc/usr_intf/pncconf/pncconf.glade:25126 -msgid "25:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63874 +msgid "Use encoder Index" +msgstr "使用編碼器指數" -#: src/emc/usr_intf/pncconf/pncconf.glade:9936 -#: src/emc/usr_intf/pncconf/pncconf.glade:12450 -#: src/emc/usr_intf/pncconf/pncconf.glade:17707 -#: src/emc/usr_intf/pncconf/pncconf.glade:19924 -#: src/emc/usr_intf/pncconf/pncconf.glade:21795 -#: src/emc/usr_intf/pncconf/pncconf.glade:23591 -#: src/emc/usr_intf/pncconf/pncconf.glade:25387 -msgid "33:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63905 +msgid "Input Options" +msgstr "輸入選項" -#: src/emc/usr_intf/pncconf/pncconf.glade:9952 -#: src/emc/usr_intf/pncconf/pncconf.glade:12434 -#: src/emc/usr_intf/pncconf/pncconf.glade:17691 -#: src/emc/usr_intf/pncconf/pncconf.glade:19908 -#: src/emc/usr_intf/pncconf/pncconf.glade:21811 -#: src/emc/usr_intf/pncconf/pncconf.glade:23607 -#: src/emc/usr_intf/pncconf/pncconf.glade:25403 -msgid "35:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63929 +msgid "Digital instead of PWM outputs" +msgstr "數碼代替PWM輸出" -#: src/emc/usr_intf/pncconf/pncconf.glade:9968 -#: src/emc/usr_intf/pncconf/pncconf.glade:12418 -#: src/emc/usr_intf/pncconf/pncconf.glade:17675 -#: src/emc/usr_intf/pncconf/pncconf.glade:19892 -#: src/emc/usr_intf/pncconf/pncconf.glade:21827 -#: src/emc/usr_intf/pncconf/pncconf.glade:23623 -#: src/emc/usr_intf/pncconf/pncconf.glade:25419 -msgid "37:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63938 +msgid "6 outputs instead of 3 " +msgstr "6 輸出代替 3" -#: src/emc/usr_intf/pncconf/pncconf.glade:9984 -#: src/emc/usr_intf/pncconf/pncconf.glade:12402 -#: src/emc/usr_intf/pncconf/pncconf.glade:17659 -#: src/emc/usr_intf/pncconf/pncconf.glade:19876 -#: src/emc/usr_intf/pncconf/pncconf.glade:21843 -#: src/emc/usr_intf/pncconf/pncconf.glade:23639 -#: src/emc/usr_intf/pncconf/pncconf.glade:25435 -msgid "39:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63950 +msgid "Force Trapezoid Mode" +msgstr "強制梯型模式" -#: src/emc/usr_intf/pncconf/pncconf.glade:10000 -#: src/emc/usr_intf/pncconf/pncconf.glade:12386 -#: src/emc/usr_intf/pncconf/pncconf.glade:17643 -#: src/emc/usr_intf/pncconf/pncconf.glade:19860 -#: src/emc/usr_intf/pncconf/pncconf.glade:21859 -#: src/emc/usr_intf/pncconf/pncconf.glade:23655 -#: src/emc/usr_intf/pncconf/pncconf.glade:25451 -msgid "41:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63962 +msgid "Emulate feedback " +msgstr "仿真反饋" -#: src/emc/usr_intf/pncconf/pncconf.glade:10016 -#: src/emc/usr_intf/pncconf/pncconf.glade:12370 -#: src/emc/usr_intf/pncconf/pncconf.glade:17627 -#: src/emc/usr_intf/pncconf/pncconf.glade:19844 -#: src/emc/usr_intf/pncconf/pncconf.glade:21875 -#: src/emc/usr_intf/pncconf/pncconf.glade:23671 -#: src/emc/usr_intf/pncconf/pncconf.glade:25467 -msgid "43:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63974 +msgid "Emulated Hall sensors" +msgstr "霍爾傳感器仿真" -#: src/emc/usr_intf/pncconf/pncconf.glade:10032 -#: src/emc/usr_intf/pncconf/pncconf.glade:12354 -#: src/emc/usr_intf/pncconf/pncconf.glade:17611 -#: src/emc/usr_intf/pncconf/pncconf.glade:19828 -#: src/emc/usr_intf/pncconf/pncconf.glade:21891 -#: src/emc/usr_intf/pncconf/pncconf.glade:23687 -#: src/emc/usr_intf/pncconf/pncconf.glade:25483 -msgid "45:" +#: src/emc/usr_intf/pncconf/pncconf.glade:63987 +msgid "Emulated Fanuc Red Cap" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10099 -#: src/emc/usr_intf/pncconf/pncconf.glade:12287 -#: src/emc/usr_intf/pncconf/pncconf.glade:17544 -#: src/emc/usr_intf/pncconf/pncconf.glade:19777 -#: src/emc/usr_intf/pncconf/pncconf.glade:21942 -#: src/emc/usr_intf/pncconf/pncconf.glade:23738 -#: src/emc/usr_intf/pncconf/pncconf.glade:25534 -msgid "47:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64014 +#, fuzzy +msgid "8i20 Max Current" +msgstr "電流" -#: src/emc/usr_intf/pncconf/pncconf.glade:10822 -#: src/emc/usr_intf/pncconf/pncconf.glade:11077 -#: src/emc/usr_intf/pncconf/pncconf.glade:11311 -#: src/emc/usr_intf/pncconf/pncconf.glade:11567 -#: src/emc/usr_intf/pncconf/pncconf.glade:13924 -#: src/emc/usr_intf/pncconf/pncconf.glade:14171 -#: src/emc/usr_intf/pncconf/pncconf.glade:16516 -#: src/emc/usr_intf/pncconf/pncconf.glade:16772 -#: src/emc/usr_intf/pncconf/pncconf.glade:19129 -#: src/emc/usr_intf/pncconf/pncconf.glade:19379 -#: src/emc/usr_intf/pncconf/pncconf.glade:22343 -#: src/emc/usr_intf/pncconf/pncconf.glade:22592 -#: src/emc/usr_intf/pncconf/pncconf.glade:24139 -#: src/emc/usr_intf/pncconf/pncconf.glade:24388 -#: src/emc/usr_intf/pncconf/pncconf.glade:25935 -#: src/emc/usr_intf/pncconf/pncconf.glade:26184 -#: src/emc/usr_intf/pncconf/pncconf.glade:28515 -#: src/emc/usr_intf/pncconf/pncconf.glade:28761 -#: src/emc/usr_intf/pncconf/pncconf.glade:28892 -#: src/emc/usr_intf/pncconf/pncconf.glade:29139 -#: src/emc/usr_intf/pncconf/pncconf.glade:33079 -#: src/emc/usr_intf/pncconf/pncconf.glade:33250 -#: src/emc/usr_intf/pncconf/pncconf.glade:33497 -#: src/emc/usr_intf/pncconf/pncconf.glade:38012 -#: src/emc/usr_intf/pncconf/pncconf.glade:38258 -#: src/emc/usr_intf/pncconf/pncconf.glade:38507 -#: src/emc/usr_intf/pncconf/pncconf.glade:42359 -#: src/emc/usr_intf/pncconf/pncconf.glade:42605 -#: src/emc/usr_intf/pncconf/pncconf.glade:42736 -#: src/emc/usr_intf/pncconf/pncconf.glade:42983 -#: src/emc/usr_intf/pncconf/pncconf.glade:46936 -#: src/emc/usr_intf/pncconf/pncconf.glade:49282 -#: src/emc/usr_intf/pncconf/pncconf.glade:49528 -#: src/emc/usr_intf/pncconf/pncconf.glade:49659 -#: src/emc/usr_intf/pncconf/pncconf.glade:49906 -#: src/emc/usr_intf/pncconf/pncconf.glade:53859 -msgid "Pin Type" -msgstr "接腳類型" +#: src/emc/usr_intf/pncconf/pncconf.glade:64048 +msgid "Output Options" +msgstr "輸入選項" -#: src/emc/usr_intf/pncconf/pncconf.glade:10835 -#: src/emc/usr_intf/pncconf/pncconf.glade:11553 -#: src/emc/usr_intf/pncconf/pncconf.glade:16758 -#: src/emc/usr_intf/pncconf/pncconf.glade:19365 -#: src/emc/usr_intf/pncconf/pncconf.glade:22356 -#: src/emc/usr_intf/pncconf/pncconf.glade:24152 -#: src/emc/usr_intf/pncconf/pncconf.glade:25948 -msgid "23:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64103 +msgid "alignment current" +msgstr "對準電流" -#: src/emc/usr_intf/pncconf/pncconf.glade:10849 -#: src/emc/usr_intf/pncconf/pncconf.glade:11539 -#: src/emc/usr_intf/pncconf/pncconf.glade:16744 -#: src/emc/usr_intf/pncconf/pncconf.glade:19351 -#: src/emc/usr_intf/pncconf/pncconf.glade:22370 -#: src/emc/usr_intf/pncconf/pncconf.glade:24166 -#: src/emc/usr_intf/pncconf/pncconf.glade:25962 -msgid "21:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64113 +msgid "lead angle" +msgstr "超前角" -#: src/emc/usr_intf/pncconf/pncconf.glade:10863 -#: src/emc/usr_intf/pncconf/pncconf.glade:11525 -#: src/emc/usr_intf/pncconf/pncconf.glade:16730 -#: src/emc/usr_intf/pncconf/pncconf.glade:19337 -#: src/emc/usr_intf/pncconf/pncconf.glade:22384 -#: src/emc/usr_intf/pncconf/pncconf.glade:24180 -#: src/emc/usr_intf/pncconf/pncconf.glade:25976 -msgid "19:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64213 +msgid "Reverse" +msgstr "反向" -#: src/emc/usr_intf/pncconf/pncconf.glade:10877 -#: src/emc/usr_intf/pncconf/pncconf.glade:11511 -#: src/emc/usr_intf/pncconf/pncconf.glade:16716 -#: src/emc/usr_intf/pncconf/pncconf.glade:19323 -#: src/emc/usr_intf/pncconf/pncconf.glade:22398 -#: src/emc/usr_intf/pncconf/pncconf.glade:24194 -#: src/emc/usr_intf/pncconf/pncconf.glade:25990 -msgid "17:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64223 +msgid "Input-pattern" +msgstr "輸入模式" -#: src/emc/usr_intf/pncconf/pncconf.glade:10891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11497 -#: src/emc/usr_intf/pncconf/pncconf.glade:16702 -#: src/emc/usr_intf/pncconf/pncconf.glade:19309 -#: src/emc/usr_intf/pncconf/pncconf.glade:22412 -#: src/emc/usr_intf/pncconf/pncconf.glade:24208 -#: src/emc/usr_intf/pncconf/pncconf.glade:26004 -msgid "15:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64233 +msgid "output-pattern" +msgstr "輸出模式" -#: src/emc/usr_intf/pncconf/pncconf.glade:10905 -#: src/emc/usr_intf/pncconf/pncconf.glade:11483 -#: src/emc/usr_intf/pncconf/pncconf.glade:16688 -#: src/emc/usr_intf/pncconf/pncconf.glade:19295 -#: src/emc/usr_intf/pncconf/pncconf.glade:22426 -#: src/emc/usr_intf/pncconf/pncconf.glade:24222 -#: src/emc/usr_intf/pncconf/pncconf.glade:26018 -msgid "13:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64243 +msgid "Drive-offset" +msgstr "驅動器偏移" -#: src/emc/usr_intf/pncconf/pncconf.glade:10919 -#: src/emc/usr_intf/pncconf/pncconf.glade:11469 -#: src/emc/usr_intf/pncconf/pncconf.glade:16674 -#: src/emc/usr_intf/pncconf/pncconf.glade:19281 -#: src/emc/usr_intf/pncconf/pncconf.glade:22440 -#: src/emc/usr_intf/pncconf/pncconf.glade:24236 -#: src/emc/usr_intf/pncconf/pncconf.glade:26032 -msgid "11:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64253 +msgid "Encoder-offset" +msgstr "編碼器偏移" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64263 +msgid "Poles" +msgstr "極" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64283 +msgid "Configuration" +msgstr "配置" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64318 +#, fuzzy +msgid "Use BLDC Motor Commutation Control" +msgstr "使用無刷電機控制" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64354 +msgid "Scale:" +msgstr "比例:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64375 +msgid "% " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10933 -#: src/emc/usr_intf/pncconf/pncconf.glade:11455 -#: src/emc/usr_intf/pncconf/pncconf.glade:16660 -#: src/emc/usr_intf/pncconf/pncconf.glade:19267 -#: src/emc/usr_intf/pncconf/pncconf.glade:22454 -#: src/emc/usr_intf/pncconf/pncconf.glade:24250 -#: src/emc/usr_intf/pncconf/pncconf.glade:26046 -msgid " 9:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64394 +msgid "Range:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10947 -#: src/emc/usr_intf/pncconf/pncconf.glade:11441 -#: src/emc/usr_intf/pncconf/pncconf.glade:16646 -#: src/emc/usr_intf/pncconf/pncconf.glade:19253 -#: src/emc/usr_intf/pncconf/pncconf.glade:22468 -#: src/emc/usr_intf/pncconf/pncconf.glade:24264 -#: src/emc/usr_intf/pncconf/pncconf.glade:26060 -msgid " 7:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64419 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "RPM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10961 -#: src/emc/usr_intf/pncconf/pncconf.glade:11427 -#: src/emc/usr_intf/pncconf/pncconf.glade:16632 -#: src/emc/usr_intf/pncconf/pncconf.glade:19239 -#: src/emc/usr_intf/pncconf/pncconf.glade:22482 -#: src/emc/usr_intf/pncconf/pncconf.glade:24278 -#: src/emc/usr_intf/pncconf/pncconf.glade:26074 -msgid " 5:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64439 +#, fuzzy +msgid "Use Spindle-At-Speed" +msgstr "主軸速度設置" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64464 +msgid "Filter gain:" +msgstr "濾波增益:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64499 +#, fuzzy +msgid "Spindle Display Filter Settings" +msgstr "主軸顯示過濾器設置" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64565 +msgid "Rapid Speed Following Error:" +msgstr "高速度跟隨故障:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64577 +msgid "Feed Speed Following Error:" +msgstr "故障" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64591 +msgid "Invert Motor Direction" +msgstr "翻轉電機方向" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64606 +msgid "Invert Encoder Direction " +msgstr "翻轉編碼器方向 " + +#: src/emc/usr_intf/pncconf/pncconf.glade:64661 +#, fuzzy +msgid "Single Input Encoder" +msgstr "反轉 編碼器" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64776 +msgid "encoder Scale:" +msgstr "編碼器比例" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64801 +msgid "Stepper Scale:" +msgstr "步進比例:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64831 +msgid "" +"Calculate\n" +"Scale" msgstr "" +"計算\n" +"比例" -#: src/emc/usr_intf/pncconf/pncconf.glade:10975 -#: src/emc/usr_intf/pncconf/pncconf.glade:11413 -#: src/emc/usr_intf/pncconf/pncconf.glade:16618 -#: src/emc/usr_intf/pncconf/pncconf.glade:19225 -#: src/emc/usr_intf/pncconf/pncconf.glade:22496 -#: src/emc/usr_intf/pncconf/pncconf.glade:24292 -#: src/emc/usr_intf/pncconf/pncconf.glade:26088 -msgid " 3:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64901 +msgid "Test / Tune Axis" +msgstr "測試 / 調整軸" + +#: src/emc/usr_intf/pncconf/pncconf.glade:64943 +msgid "X Axis Configuration" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10989 -#: src/emc/usr_intf/pncconf/pncconf.glade:11399 -#: src/emc/usr_intf/pncconf/pncconf.glade:16604 -#: src/emc/usr_intf/pncconf/pncconf.glade:19211 -#: src/emc/usr_intf/pncconf/pncconf.glade:22510 -#: src/emc/usr_intf/pncconf/pncconf.glade:24306 -#: src/emc/usr_intf/pncconf/pncconf.glade:26102 -msgid " 1:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65155 +msgid "" +"NO\n" +"YES" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:11002 -#: src/emc/usr_intf/pncconf/pncconf.glade:11065 -#: src/emc/usr_intf/pncconf/pncconf.glade:11324 -#: src/emc/usr_intf/pncconf/pncconf.glade:11386 -#: src/emc/usr_intf/pncconf/pncconf.glade:13937 -#: src/emc/usr_intf/pncconf/pncconf.glade:13999 -#: src/emc/usr_intf/pncconf/pncconf.glade:16529 -#: src/emc/usr_intf/pncconf/pncconf.glade:16591 -#: src/emc/usr_intf/pncconf/pncconf.glade:19142 -#: src/emc/usr_intf/pncconf/pncconf.glade:19198 -#: src/emc/usr_intf/pncconf/pncconf.glade:22523 -#: src/emc/usr_intf/pncconf/pncconf.glade:22580 -#: src/emc/usr_intf/pncconf/pncconf.glade:24319 -#: src/emc/usr_intf/pncconf/pncconf.glade:24376 -#: src/emc/usr_intf/pncconf/pncconf.glade:26115 -#: src/emc/usr_intf/pncconf/pncconf.glade:26172 -#: src/emc/usr_intf/pncconf/pncconf.glade:28686 -#: src/emc/usr_intf/pncconf/pncconf.glade:28749 -#: src/emc/usr_intf/pncconf/pncconf.glade:28905 -#: src/emc/usr_intf/pncconf/pncconf.glade:28967 -#: src/emc/usr_intf/pncconf/pncconf.glade:33067 -#: src/emc/usr_intf/pncconf/pncconf.glade:33263 -#: src/emc/usr_intf/pncconf/pncconf.glade:33325 -#: src/emc/usr_intf/pncconf/pncconf.glade:38183 -#: src/emc/usr_intf/pncconf/pncconf.glade:38246 -#: src/emc/usr_intf/pncconf/pncconf.glade:38520 -#: src/emc/usr_intf/pncconf/pncconf.glade:42530 -#: src/emc/usr_intf/pncconf/pncconf.glade:42593 -#: src/emc/usr_intf/pncconf/pncconf.glade:42749 -#: src/emc/usr_intf/pncconf/pncconf.glade:42811 -#: src/emc/usr_intf/pncconf/pncconf.glade:46924 -#: src/emc/usr_intf/pncconf/pncconf.glade:49453 -#: src/emc/usr_intf/pncconf/pncconf.glade:49516 -#: src/emc/usr_intf/pncconf/pncconf.glade:49672 -#: src/emc/usr_intf/pncconf/pncconf.glade:49734 -#: src/emc/usr_intf/pncconf/pncconf.glade:53847 -msgid "Inv" -msgstr "反轉" +#: src/emc/usr_intf/pncconf/pncconf.glade:65171 +msgid "Use Encoder Index For Home:" +msgstr "使用編碼器指標為零點:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65212 +msgid "Home Final Velocity:" +msgstr "歸零最終速度" -#: src/emc/usr_intf/pncconf/pncconf.glade:11198 +#: src/emc/usr_intf/pncconf/pncconf.glade:65222 msgid "" -" I/O\n" -"Connector 2" +"Same\n" +"Opposite" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:13811 +#: src/emc/usr_intf/pncconf/pncconf.glade:65238 +msgid "Home Latch Direction:" +msgstr "歸零閉鎖方向:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65251 msgid "" -" I/O\n" -" Connector 3" +"Towards Negative limit\n" +"Towards Positive limit" msgstr "" +"朝向負極限\n" +"朝向正極限" -#: src/emc/usr_intf/pncconf/pncconf.glade:14012 -#: src/emc/usr_intf/pncconf/pncconf.glade:14039 -#: src/emc/usr_intf/pncconf/pncconf.glade:14053 -#: src/emc/usr_intf/pncconf/pncconf.glade:28632 -#: src/emc/usr_intf/pncconf/pncconf.glade:28646 -#: src/emc/usr_intf/pncconf/pncconf.glade:28673 -#: src/emc/usr_intf/pncconf/pncconf.glade:28980 -#: src/emc/usr_intf/pncconf/pncconf.glade:29007 -#: src/emc/usr_intf/pncconf/pncconf.glade:29021 -#: src/emc/usr_intf/pncconf/pncconf.glade:32951 -#: src/emc/usr_intf/pncconf/pncconf.glade:32965 -#: src/emc/usr_intf/pncconf/pncconf.glade:32992 -#: src/emc/usr_intf/pncconf/pncconf.glade:33338 -#: src/emc/usr_intf/pncconf/pncconf.glade:33365 -#: src/emc/usr_intf/pncconf/pncconf.glade:33379 -#: src/emc/usr_intf/pncconf/pncconf.glade:38129 -#: src/emc/usr_intf/pncconf/pncconf.glade:38143 -#: src/emc/usr_intf/pncconf/pncconf.glade:38170 -#: src/emc/usr_intf/pncconf/pncconf.glade:38594 -#: src/emc/usr_intf/pncconf/pncconf.glade:38621 -#: src/emc/usr_intf/pncconf/pncconf.glade:38635 -#: src/emc/usr_intf/pncconf/pncconf.glade:42476 -#: src/emc/usr_intf/pncconf/pncconf.glade:42490 -#: src/emc/usr_intf/pncconf/pncconf.glade:42517 -#: src/emc/usr_intf/pncconf/pncconf.glade:42824 -#: src/emc/usr_intf/pncconf/pncconf.glade:42851 -#: src/emc/usr_intf/pncconf/pncconf.glade:42865 -#: src/emc/usr_intf/pncconf/pncconf.glade:46808 -#: src/emc/usr_intf/pncconf/pncconf.glade:46822 -#: src/emc/usr_intf/pncconf/pncconf.glade:46849 -#: src/emc/usr_intf/pncconf/pncconf.glade:49399 -#: src/emc/usr_intf/pncconf/pncconf.glade:49413 -#: src/emc/usr_intf/pncconf/pncconf.glade:49440 -#: src/emc/usr_intf/pncconf/pncconf.glade:49747 -#: src/emc/usr_intf/pncconf/pncconf.glade:49774 -#: src/emc/usr_intf/pncconf/pncconf.glade:49788 -#: src/emc/usr_intf/pncconf/pncconf.glade:53731 -#: src/emc/usr_intf/pncconf/pncconf.glade:53745 -#: src/emc/usr_intf/pncconf/pncconf.glade:53772 -msgid " " +#: src/emc/usr_intf/pncconf/pncconf.glade:65267 +msgid "Home Search Direction:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:16403 +#: src/emc/usr_intf/pncconf/pncconf.glade:65309 +msgid "Home latch Velocity:" +msgstr "零點鎖定速率:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65334 +msgid "filename:" +msgstr "文件名:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65347 msgid "" -" I/O\n" -" Connector 4" +"Type 1\n" +"Type 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:19017 -msgid "" -" I/O\n" -" Connector 5" +#: src/emc/usr_intf/pncconf/pncconf.glade:65392 +msgid "Use Compensation File:" +msgstr "使用補償文件:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65406 +msgid "Use Backlash Compensation:" +msgstr "使用反向間隙補償:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65433 +msgid "Home Position location (offset from machine zero Origin):" +msgstr "零點定位 (從機床零點的偏移):" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65449 +msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " +msgstr "負移動距離 (機床 零點到 負 行程尾): " + +#: src/emc/usr_intf/pncconf/pncconf.glade:65493 +msgid "Home Switch location (Offset from machine zero Origin):" +msgstr "歸零開關的位置 (從機床零點的偏移):" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65509 +msgid "Home Search Velocity:" +msgstr "零點搜索速率:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65524 +msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " +msgstr "正移動距離 (機床 零點到 正 行程尾): " + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Advanced Options" +msgstr "進階選項" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 15" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:20813 -msgid "" -" I/O\n" -"Connector 6" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 14" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:22609 -msgid "" -" I/O\n" -"Connector 7" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 13" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:24405 -msgid "" -" I/O\n" -"Connector 8" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 12" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:26201 -msgid "" -" I/O\n" -" Connector 9" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 11" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:28775 -#: src/emc/usr_intf/pncconf/pncconf.glade:35696 -#: src/emc/usr_intf/pncconf/pncconf.glade:42619 -#: src/emc/usr_intf/pncconf/pncconf.glade:49542 -msgid "page 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 10" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:31354 -#: src/emc/usr_intf/pncconf/pncconf.glade:38275 -#: src/emc/usr_intf/pncconf/pncconf.glade:45198 -#: src/emc/usr_intf/pncconf/pncconf.glade:52121 -msgid "page 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 9" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:33107 -#: src/emc/usr_intf/pncconf/pncconf.glade:40030 -#: src/emc/usr_intf/pncconf/pncconf.glade:46953 -#: src/emc/usr_intf/pncconf/pncconf.glade:53876 -msgid "page 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:33123 -msgid "Smart Serial 0" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 7" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:40046 -msgid "Smart Serial 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 6" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:46969 -msgid "Smart Serial 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 5" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53892 -msgid "Smart Serial 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53914 -msgid "First Parallel Port Setup" -msgstr "第一並行端口設置" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 3" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53998 -msgid "Outputs (PC to Machine):" -msgstr "输出 (PC 至 机器):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 2" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:54552 -msgid "Inputs (Machine to PC):" -msgstr "输入 (机器 至 PC):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 1" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:55977 -msgid "Launch Test Panel" -msgstr "啟動 測試 面板" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include Halui user interface component / commands" +msgstr "包括Halui使用者界面組件/命令" -#: src/emc/usr_intf/pncconf/pncconf.glade:56003 -msgid "X Axis Motor/Encoder Configuration" -msgstr "X 轴 馬達/編碼器 配置" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Number of digital (bit) in pins:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56091 -msgid "D" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Number of digital (bit) out pins:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56104 -msgid "I" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid " Number of Internal bit memory:" +msgstr "腳的 總數:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of Internal word memory:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56117 -msgid "P" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Setup number of external pins" +msgstr "腳的 總數:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Z Auto Touch off program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56128 -#: src/emc/usr_intf/pncconf/pncconf.glade:60917 -#: src/emc/usr_intf/pncconf/pncconf.glade:62202 -#: src/emc/usr_intf/pncconf/pncconf.glade:63103 -#: src/emc/usr_intf/pncconf/pncconf.glade:64388 -#: src/emc/usr_intf/pncconf/pncconf.glade:65265 -msgid "Bias" -msgstr "偏壓" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "HAL Component Page" +msgstr "HAL組件頁" -#: src/emc/usr_intf/pncconf/pncconf.glade:56141 -msgid "Deadband" -msgstr "死區" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Add HAL components with this page." +msgstr "添加HAL組件在此頁" -#: src/emc/usr_intf/pncconf/pncconf.glade:56188 -#: src/emc/usr_intf/pncconf/pncconf.glade:61128 -#: src/emc/usr_intf/pncconf/pncconf.glade:61991 -#: src/emc/usr_intf/pncconf/pncconf.glade:63314 -#: src/emc/usr_intf/pncconf/pncconf.glade:64177 -#: src/emc/usr_intf/pncconf/pncconf.glade:65470 -msgid "FF0" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Component" +msgstr "組件" -#: src/emc/usr_intf/pncconf/pncconf.glade:56201 -#: src/emc/usr_intf/pncconf/pncconf.glade:61118 -#: src/emc/usr_intf/pncconf/pncconf.glade:62001 -#: src/emc/usr_intf/pncconf/pncconf.glade:63304 -#: src/emc/usr_intf/pncconf/pncconf.glade:64187 -#: src/emc/usr_intf/pncconf/pncconf.glade:65460 -msgid "FF1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "number of components" +msgstr "組件數目" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "PID" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56214 -#: src/emc/usr_intf/pncconf/pncconf.glade:61108 -#: src/emc/usr_intf/pncconf/pncconf.glade:62011 -#: src/emc/usr_intf/pncconf/pncconf.glade:63294 -#: src/emc/usr_intf/pncconf/pncconf.glade:64197 -#: src/emc/usr_intf/pncconf/pncconf.glade:65450 -msgid "FF2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "scale" +msgstr "比例" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mux16" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56282 -msgid "Servo Info" -msgstr "伺服資料" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "lowpass" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56362 -#, fuzzy -msgid "Spindle Max Output:" -msgstr "DAC 最大 輸出:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Base Thread" +msgstr "基本線程" -#: src/emc/usr_intf/pncconf/pncconf.glade:56412 -#, fuzzy -msgid "Spindle Max limit:" -msgstr "主軸 快些" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Servo Thread" +msgstr "伺服線程" -#: src/emc/usr_intf/pncconf/pncconf.glade:56426 -#, fuzzy -msgid "Spindle Min Limit:" -msgstr "主軸" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Load Command " +msgstr "加載指令" -#: src/emc/usr_intf/pncconf/pncconf.glade:56456 -msgid "" -"Open Loop\n" -" Test" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Thread Speed" +msgstr "線程速度" -#: src/emc/usr_intf/pncconf/pncconf.glade:56557 -msgid "Quad Pulses / Rev:" -msgstr "四 脈衝 / 轉" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Thread Command" +msgstr "線程指令" -#: src/emc/usr_intf/pncconf/pncconf.glade:56572 -msgid "Dac Max Output:" -msgstr "DAC 最大 輸出:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Custom Components Commands" +msgstr "自定義組件的命令" -#: src/emc/usr_intf/pncconf/pncconf.glade:56586 -msgid "Dac Output Scale:" -msgstr "DAC 輸出 比例:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Machine configuration complete" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56599 -msgid "3pwm Deadtime:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"All the necessary information has now been gathered. Click \"Apply\" to " +"write your configuration files to disk.\n" +"\n" +"If you are using the 5i25 card with daugther boards or are using SSerial " +"based daughter cards, the cards must be connected and/or field power " +"supplied to the 5i25 \n" +"for the HAL pins to be available. If the config is expecting the pins and " +"they are not there, linuxcnc will error.\n" +"If you experience lockups while running LinuxCNC, you will need to decrease " +"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC, first verify that you " +"entered the proper timings for your stepper drivers. If that does not fix " +"the problem, then run a more thorough latency test as described on the " +"linuxcnc.org wiki:\n" +" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" +"\n" +"If you experience the \"Unexpected Realtime Delay\" message, run a more " +"thorough latency test as described on the linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56612 -msgid "3pwm Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +" Motor Encoder Test\n" +"Warning limits switches \n" +" Will not be obeyed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56626 -#, fuzzy -msgid "Output Info" -msgstr "輸出" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Slow Dac Speed" +msgstr "慢DAC速度" -#: src/emc/usr_intf/pncconf/pncconf.glade:56691 -msgid "Driver Type:" -msgstr "驅動類型" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Fast Dac Speed" +msgstr "快速DAC速度" -#: src/emc/usr_intf/pncconf/pncconf.glade:56735 -msgid "Direction Setup" -msgstr "方向設定" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Dac Offset:" +msgstr "DAC偏移:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56748 -msgid "Direction Hold" -msgstr "方向保持" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder Scale:" +msgstr "編碼器 比例:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56791 -msgid "Step Space" -msgstr "步進 間距" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Reset Encoder" +msgstr "復位編碼器" -#: src/emc/usr_intf/pncconf/pncconf.glade:56804 -msgid "Step On-Time" -msgstr "步進 準時" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Enable Amp" +msgstr "啟用放大器" -#: src/emc/usr_intf/pncconf/pncconf.glade:56820 -msgid "Stepper Info" -msgstr "步進 信息" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Invert Encoder" +msgstr "反轉 編碼器" -#: src/emc/usr_intf/pncconf/pncconf.glade:56871 -msgid "No feedback" -msgstr "沒有反饋" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Invert Motor" +msgstr "反轉電機" -#: src/emc/usr_intf/pncconf/pncconf.glade:56881 -msgid "Absolute Feedback" -msgstr "絕對反饋" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"±\n" +"+\n" +"-\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56895 -msgid "Incremental Feedback" -msgstr "增量反饋" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Seconds" +msgstr "秒" -#: src/emc/usr_intf/pncconf/pncconf.glade:56909 -msgid "Incremental Encoder" -msgstr "增量編碼器" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Enable" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56921 -msgid "Hall sensors" -msgstr "霍爾傳感器" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm/minute^2" +msgstr "毫米/分鐘^2" -#: src/emc/usr_intf/pncconf/pncconf.glade:56933 -msgid "Fanuc Red Cap " -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm/minute" +msgstr "毫米/分鐘" -#: src/emc/usr_intf/pncconf/pncconf.glade:56945 -msgid "Use encoder Index" -msgstr "使用編碼器指數" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Current" +msgstr "電流" -#: src/emc/usr_intf/pncconf/pncconf.glade:56976 -msgid "Input Options" -msgstr "輸入選項" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "P:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57000 -msgid "Digital instead of PWM outputs" -msgstr "數碼代替PWM輸出" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "I:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57009 -msgid "6 outputs instead of 3 " -msgstr "6 輸出代替 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "D:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57021 -msgid "Force Trapezoid Mode" -msgstr "強制梯型模式" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Original" +msgstr "原本" -#: src/emc/usr_intf/pncconf/pncconf.glade:57033 -msgid "Emulate feedback " -msgstr "仿真反饋" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "DeadBand" +msgstr "死區" -#: src/emc/usr_intf/pncconf/pncconf.glade:57045 -msgid "Emulated Hall sensors" -msgstr "霍爾傳感器仿真" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "PID Tuning" +msgstr "PID調節" -#: src/emc/usr_intf/pncconf/pncconf.glade:57058 -msgid "Emulated Fanuc Red Cap" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Time:" +msgstr "步進時間" -#: src/emc/usr_intf/pncconf/pncconf.glade:57085 -#, fuzzy -msgid "8i20 Max Current" -msgstr "電流" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Space:" +msgstr "步進空間:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57119 -msgid "Output Options" -msgstr "輸入選項" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Direction Hold:" +msgstr "方向保持:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57153 -msgid "Poles" -msgstr "極" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Direction Setup:" +msgstr "方向設置:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57163 -msgid "Encoder-offset" -msgstr "編碼器偏移" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Timing" +msgstr "步進時序" -#: src/emc/usr_intf/pncconf/pncconf.glade:57173 -msgid "Drive-offset" -msgstr "驅動器偏移" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "enable" +msgstr "啟用" -#: src/emc/usr_intf/pncconf/pncconf.glade:57183 -msgid "output-pattern" -msgstr "輸出模式" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "spindle" +msgstr "主軸" -#: src/emc/usr_intf/pncconf/pncconf.glade:57193 -msgid "Input-pattern" -msgstr "輸入模式" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Help Page" +msgstr "幫助頁面" -#: src/emc/usr_intf/pncconf/pncconf.glade:57203 -msgid "Reverse" -msgstr "反向" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"X axis:\n" +"Total Travel = 10\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = 0\n" +"Pos Travel Distance = Total Travel - neg travel distance = 10\n" +"Home Position = Origin to Home Position distance = 6\n" +"\n" +"Y axis:\n" +"Total Travel = 8\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = -8\n" +"Pos Travel Distance = Total Travel - neg travel distance = 0\n" +"Home Position = Origin to Home Position distance = 0\n" +"\n" +"Z axis:\n" +"Total Travel = 12\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = -12\n" +"Pos Travel Distance = Total Travel - neg travel distance = 0\n" +"Home Position = Origin to Home Position distance = 0\n" +"\n" +"Note that the direction indicators on the top right show \n" +"movement of the TOOL and on the actual machine,\n" +"often it is the table that actually moves. In that case the \n" +"directions are opposite of shown.\n" +"\n" +"Note this is an example, Many other combinations are \n" +"possible" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57303 -msgid "lead angle" -msgstr "超前角" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Mill" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"Total Travel = 4 + 6 = 10\n" +"Z Home Offset = Origin to Home Switch distance = 10\n" +"Z Neg Travel Distance = Origin to neg limit distance = 0\n" +"Z Pos Travel Distance = Total Travel - neg travel distance = 10\n" +"Z Home Position = Origin to Home Position distance = 4\n" +"\n" +"X axis would be similar but not shown fully for clarity.\n" +"This is just a sample reference other switch combinations are\n" +"possible." +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57313 -msgid "alignment current" -msgstr "對準電流" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Lathe" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57354 -msgid "Configuration" -msgstr "配置" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Diagram" +msgstr "圖表" -#: src/emc/usr_intf/pncconf/pncconf.glade:57389 -msgid "Use Brushless Motor Control" -msgstr "使用無刷電機控制" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Output" +msgstr "輸出" -#: src/emc/usr_intf/pncconf/pncconf.glade:57425 -msgid "Scale:" -msgstr "比例:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"\t\t\t\tPNCconf - Point aNd Click CONFigurator\n" +"PNCconf is a configuration program for Linuxcnc.\n" +"It configures machines using Mesa I/O cards.\n" +"It configures servo,stepper or closed loop stepper machines.\n" +"It supports some of Mesa's sserial cards.\n" +"It will forever be a work in progress as Linuxcnc changes.\n" +"\n" +"Many thanks To:\n" +"Jeff Eppler - PNCconf is based on stepconf - Jeff's creation. Jeff also has " +"helped with techincal difficulties.\n" +"Big John T - John drew the original machine illustrations. Testing and " +"suggestions.\n" +"Peter Wallace - Technical questions on Mesa's I/O cards. Supplied sample " +"equipment to test with.\n" +"Andy Pugh - suggestions, questions answered and many pin name changes :) \n" +"Dave Armstrong - testing and suggestions expecially with resolvers.\n" +"Everyone who gave a bug report ! I cannot test everything thoughly enough so " +"reports help.\n" +"\n" +"Beta 1 version" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57446 -msgid "% " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "TPI " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57466 -#, fuzzy -msgid "Use Spindle-At-Speed" -msgstr "主軸速度設置" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulley teeth (motor:Leadscrew):" +msgstr "帶輪齒(馬達:絲槓):" -#: src/emc/usr_intf/pncconf/pncconf.glade:57491 -msgid "Filter gain:" -msgstr "濾波增益:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Worm turn ratio (Input:Outputl)" +msgstr "蜗杆圈數比(輸入:輸出)" -#: src/emc/usr_intf/pncconf/pncconf.glade:57526 -#, fuzzy -msgid "Spindle Display Filter Settings" -msgstr "主軸顯示過濾器設置" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Microstep Multiplication Factor:" +msgstr "微步乘係數:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57577 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Single Input Encoder" -msgstr "反轉 編碼器" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57631 -msgid "Invert Encoder Direction " -msgstr "翻轉編碼器方向 " - -#: src/emc/usr_intf/pncconf/pncconf.glade:57646 -msgid "Invert Motor Direction" -msgstr "翻轉電機方向" +msgid "Leadscrew Metric Pitch" +msgstr "丝杆 螺距" -#: src/emc/usr_intf/pncconf/pncconf.glade:57661 -msgid "Feed Speed Following Error:" -msgstr "故障" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motor steps per revolution:" +msgstr "電機步每轉:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57675 -msgid "Rapid Speed Following Error:" -msgstr "高速度跟隨故障:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Motor Scale" +msgstr "步進馬達比例" -#: src/emc/usr_intf/pncconf/pncconf.glade:57715 -msgid "" -"Calculate\n" -"Scale" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "TPI" msgstr "" -"計算\n" -"比例" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57744 -msgid "Stepper Scale:" -msgstr "步進比例:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57771 -msgid "encoder Scale:" -msgstr "編碼器比例" -#: src/emc/usr_intf/pncconf/pncconf.glade:57928 -msgid "Test / Tune Axis" -msgstr "測試 / 調整軸" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "X 4 = Pulses/Rev" +msgstr "X 4=脈衝 /轉" -#: src/emc/usr_intf/pncconf/pncconf.glade:58235 -msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " -msgstr "正移動距離 (機床 零點到 正 行程尾): " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder lines per revolution:" +msgstr "編碼器每轉線條" -#: src/emc/usr_intf/pncconf/pncconf.glade:58251 -msgid "Home Search Velocity:" -msgstr "零點搜索速率:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulley teeth (encoder:Leadscrew):" +msgstr "帶輪齒(編碼器:絲槓):" -#: src/emc/usr_intf/pncconf/pncconf.glade:58266 -msgid "Home Switch location (Offset from machine zero Origin):" -msgstr "歸零開關的位置 (從機床零點的偏移):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder Scale" +msgstr "編碼器比例" -#: src/emc/usr_intf/pncconf/pncconf.glade:58310 -msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " -msgstr "負移動距離 (機床 零點到 負 行程尾): " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " " +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58326 -msgid "Home Position location (offset from machine zero Origin):" -msgstr "零點定位 (從機床零點的偏移):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "encoder pulses per unit:" +msgstr "編碼器脈衝每單位:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58355 -msgid "Use Backlash Compensation:" -msgstr "使用反向間隙補償:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "motor steps per unit:" +msgstr "電機步每單位:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58369 -msgid "Use Compensation File:" -msgstr "使用補償文件:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Calculated Scale" +msgstr "計算出比例" -#: src/emc/usr_intf/pncconf/pncconf.glade:58412 -msgid "" -"Type 1\n" -"Type 2" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / encoder pulse" +msgstr "毫米 / 編碼器脈衝 " -#: src/emc/usr_intf/pncconf/pncconf.glade:58427 -msgid "filename:" -msgstr "文件名:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Resolution:" +msgstr "分辨率:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58455 -msgid "Home latch Velocity:" -msgstr "零點鎖定速率:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Distance to acheave max speed:" +msgstr "距離達到最大速度:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58494 -msgid "Home Search Direction:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "sec" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58507 -msgid "" -"Towards Negative limit\n" -"Towards Positive limit" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Khz" msgstr "" -"朝向負極限\n" -"朝向正極限" -#: src/emc/usr_intf/pncconf/pncconf.glade:58523 -msgid "Home Latch Direction:" -msgstr "歸零閉鎖方向:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:58552 -msgid "Home Final Velocity:" -msgstr "歸零最終速度" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Calculated Axis SCALE:" +msgstr "計算軸比例:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58591 -msgid "Use Encoder Index For Home:" -msgstr "使用編碼器指標為零點:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motor RPM at max speed:" +msgstr "電機轉速在最大速度:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58603 -msgid "" -"NO\n" -"YES" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "xmaxrpm" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58628 -msgid "Advanced Options" -msgstr "進階選項" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motion Data" +msgstr "動作數據" -#: src/emc/usr_intf/pncconf/pncconf.glade:58712 -msgid "Cmd 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "gtk-cancel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58718 -msgid "Cmd 2" +#: src/emc/usr_intf/gscreen/gscreen.py:349 +#, python-format +msgid "adding import dir %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58728 -msgid "Cmd 3" +#: src/emc/usr_intf/gscreen/gscreen.py:355 +#, python-format +msgid "module '%s' imported OK" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58738 -msgid "Cmd 4" +#: src/emc/usr_intf/gscreen/gscreen.py:452 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Using CUSTOM glade file from %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58748 -msgid "Cmd 5" +#: src/emc/usr_intf/gscreen/gscreen.py:457 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Using SKIN glade file from %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58874 -msgid "Cmd 6" +#: src/emc/usr_intf/gscreen/gscreen.py:460 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: using STOCK glade file from: %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58884 -msgid "Cmd 7" +#: src/emc/usr_intf/gscreen/gscreen.py:466 +#, python-format +msgid "**** Gscreen GLADE ERROR: With main screen xml file: %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58896 -msgid "Cmd 8" +#: src/emc/usr_intf/gscreen/gscreen.py:471 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Screen 2 -Using CUSTOM glade file from %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58908 -msgid "Cmd 9" +#: src/emc/usr_intf/gscreen/gscreen.py:477 +#, python-format +msgid "**** Gscreen GLADE ERROR: With screen 2's xml file: %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58920 -msgid "Cmd 10" +#: src/emc/usr_intf/gscreen/gscreen.py:479 +msgid "" +"\n" +"**** GSCREEN INFO: No Screen 2 glade file present" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58990 -msgid "Cmd 11" +#: src/emc/usr_intf/gscreen/gscreen.py:519 +msgid "No UNITS entry found in [TRAJ] or [AXIS_0] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59000 -msgid "Cmd 12" +#: src/emc/usr_intf/gscreen/gscreen.py:532 +msgid "" +"*** Gscreen ERROR: Asking for a HAL component using a name that already " +"exists." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59012 -msgid "Cmd 13" +#: src/emc/usr_intf/gscreen/gscreen.py:585 +msgid "No default jog increments entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59024 -msgid "Cmd 14" +#: src/emc/usr_intf/gscreen/gscreen.py:598 +msgid "No default angular jog increments entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59036 -msgid "Cmd 15" +#: src/emc/usr_intf/gscreen/gscreen.py:607 +#, python-format +msgid "" +"No DEFAULT_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59053 -msgid "Include Halui user interface component / commands" -msgstr "包括Halui使用者界面組件/命令" - -#: src/emc/usr_intf/pncconf/pncconf.glade:59127 -msgid "Number of digital (bit) in pins:" +#: src/emc/usr_intf/gscreen/gscreen.py:618 +#, python-format +msgid "" +"No MAX_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59138 -msgid "Number of digital (bit) out pins:" +#: src/emc/usr_intf/gscreen/gscreen.py:625 +msgid "No MAX_VELOCITY found in [TRAJ] of the INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59308 -#, fuzzy -msgid "Setup number of external pins" -msgstr "腳的 總數:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:59360 -msgid "Z Auto Touch off program" +#: src/emc/usr_intf/gscreen/gscreen.py:638 +#, python-format +msgid "" +"No DEFAULT_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59505 -msgid "HAL Component Page" -msgstr "HAL組件頁" - -#: src/emc/usr_intf/pncconf/pncconf.glade:59648 -msgid "lowpass" +#: src/emc/usr_intf/gscreen/gscreen.py:649 +#, python-format +msgid "" +"No MAX_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59675 -msgid "mux16" +#: src/emc/usr_intf/gscreen/gscreen.py:657 +msgid "No MAX_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59702 -msgid "scale" -msgstr "比例" - -#: src/emc/usr_intf/pncconf/pncconf.glade:59728 -msgid "PID" +#: src/emc/usr_intf/gscreen/gscreen.py:663 +msgid "No MIN_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59739 -msgid "number of components" -msgstr "組件數目" - -#: src/emc/usr_intf/pncconf/pncconf.glade:59767 -msgid "Component" -msgstr "組件" - -#: src/emc/usr_intf/pncconf/pncconf.glade:59794 -msgid "Add HAL components with this page." -msgstr "添加HAL組件在此頁" - -#: src/emc/usr_intf/pncconf/pncconf.glade:59844 -msgid "Thread Command" -msgstr "線程指令" - -#: src/emc/usr_intf/pncconf/pncconf.glade:59854 -msgid "Thread Speed" -msgstr "線程速度" +#: src/emc/usr_intf/gscreen/gscreen.py:669 +msgid "No MAX_FEED_OVERRIDE entry found in [DISPLAY] of INI file" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59906 -msgid "Load Command " -msgstr "加載指令" +#: src/emc/usr_intf/gscreen/gscreen.py:674 +msgid "This screen will be orientated for Lathe options" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59952 -msgid "Servo Thread" -msgstr "伺服線程" +#: src/emc/usr_intf/gscreen/gscreen.py:727 +msgid "CYCLE_TIME in [DISPLAY] of INI file is missing: defaulting to 100ms" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59965 -msgid "Base Thread" -msgstr "基本線程" +#: src/emc/usr_intf/gscreen/gscreen.py:730 +msgid "CYCLE_TIME in [DISPLAY] of INI file is too small: defaulting to 100ms" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59979 -msgid "Custom Components Commands" -msgstr "自定義組件的命令" +#: src/emc/usr_intf/gscreen/gscreen.py:732 +#, python-format +msgid "timeout %d" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60031 +#: src/emc/usr_intf/gscreen/gscreen.py:1001 msgid "" -" Motor Encoder Test\n" -"Warning limits switches \n" -" Will not be obeyed" +"**** WARNING GSCREEN: could not understand the window geometry info in " +"hidden preference file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60067 -#: src/emc/usr_intf/pncconf/pncconf.glade:60766 -#: src/emc/usr_intf/pncconf/pncconf.glade:61859 -#: src/emc/usr_intf/pncconf/pncconf.glade:62952 -#: src/emc/usr_intf/pncconf/pncconf.glade:64045 -#: src/emc/usr_intf/pncconf/pncconf.glade:65025 -msgid "Invert Motor" -msgstr "反轉電機" - -#: src/emc/usr_intf/pncconf/pncconf.glade:60083 -#: src/emc/usr_intf/pncconf/pncconf.glade:60782 -#: src/emc/usr_intf/pncconf/pncconf.glade:61875 -#: src/emc/usr_intf/pncconf/pncconf.glade:62968 -#: src/emc/usr_intf/pncconf/pncconf.glade:64061 -#: src/emc/usr_intf/pncconf/pncconf.glade:65040 -msgid "Invert Encoder" -msgstr "反轉 編碼器" - -#: src/emc/usr_intf/pncconf/pncconf.glade:60100 -msgid "Enable Amp" -msgstr "啟用放大器" +#: src/emc/usr_intf/gscreen/gscreen.py:1089 +msgid "Control powered up and initialized" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60114 -msgid "Reset Encoder" -msgstr "復位編碼器" +#: src/emc/usr_intf/gscreen/gscreen.py:1264 +msgid "Cycle start pressed in AUTO mode" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60142 -msgid "Encoder Scale:" -msgstr "編碼器 比例:" +#: src/emc/usr_intf/gscreen/gscreen.py:1267 +#, fuzzy +msgid "Cycle start pressed in MDI mode" +msgstr "不能做到這一點(%s)在MDI模式" -#: src/emc/usr_intf/pncconf/pncconf.glade:60153 -msgid "Dac Offset:" -msgstr "DAC偏移:" +#: src/emc/usr_intf/gscreen/gscreen.py:1290 +#, python-format +msgid "Please change to tool # %s, then click OK." +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1291 +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +#: src/emc/usr_intf/gscreen/gscreen.py:1789 +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2849 +msgid "INFO:" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +msgid "Can't start spindle manually while MDI busy" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +#, fuzzy +msgid "can't start spindle manually in Auto mode" +msgstr "不能做到這一點(%s)在手動模式" -#: src/emc/usr_intf/pncconf/pncconf.glade:60243 -msgid "Fast Dac Speed" -msgstr "快速DAC速度" +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +msgid "No direction selected for spindle" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60258 -msgid "Slow Dac Speed" -msgstr "慢DAC速度" +#: src/emc/usr_intf/gscreen/gscreen.py:1331 +#: src/emc/usr_intf/gscreen/gscreen.py:1333 +#, fuzzy +msgid "Spindle Speed Preset Entry" +msgstr "主軸 轉速(RPM)" -#: src/emc/usr_intf/pncconf/pncconf.glade:60407 -#: src/emc/usr_intf/pncconf/pncconf.glade:61503 -#: src/emc/usr_intf/pncconf/pncconf.glade:62596 -#: src/emc/usr_intf/pncconf/pncconf.glade:63689 -#: src/emc/usr_intf/pncconf/pncconf.glade:64788 -msgid "mm/minute" -msgstr "毫米/分鐘" +#: src/emc/usr_intf/gscreen/gscreen.py:1362 +#: src/emc/usr_intf/gscreen/gscreen.py:1367 +#, fuzzy +msgid "Manual Tool Index Entry" +msgstr "AXIS 手動 換刀" -#: src/emc/usr_intf/pncconf/pncconf.glade:60441 -#: src/emc/usr_intf/pncconf/pncconf.glade:61536 -#: src/emc/usr_intf/pncconf/pncconf.glade:62629 -#: src/emc/usr_intf/pncconf/pncconf.glade:63722 -#: src/emc/usr_intf/pncconf/pncconf.glade:64821 -msgid "mm/minute^2" -msgstr "毫米/分鐘^2" +#: src/emc/usr_intf/gscreen/gscreen.py:1489 +msgid "Entry dialog" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60550 -#: src/emc/usr_intf/pncconf/pncconf.glade:61644 -#: src/emc/usr_intf/pncconf/pncconf.glade:62737 -#: src/emc/usr_intf/pncconf/pncconf.glade:64930 -msgid "Enable" +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +#, fuzzy +msgid "Classicladder realtime component not detected" +msgstr "實時元件沒有加載" + +#: src/emc/usr_intf/gscreen/gscreen.py:1617 +msgid "ladder not available - is the realtime component loaded?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60600 -#: src/emc/usr_intf/pncconf/pncconf.glade:61693 -#: src/emc/usr_intf/pncconf/pncconf.glade:62786 -#: src/emc/usr_intf/pncconf/pncconf.glade:63879 -#: src/emc/usr_intf/pncconf/pncconf.glade:65139 -msgid "Seconds" -msgstr "秒" +#: src/emc/usr_intf/gscreen/gscreen.py:1691 +#, fuzzy +msgid "Override Entry" +msgstr "超速 MPG 操控" -#: src/emc/usr_intf/pncconf/pncconf.glade:60907 -#: src/emc/usr_intf/pncconf/pncconf.glade:62212 -#: src/emc/usr_intf/pncconf/pncconf.glade:63093 -#: src/emc/usr_intf/pncconf/pncconf.glade:64398 -#: src/emc/usr_intf/pncconf/pncconf.glade:65255 -msgid "DeadBand" -msgstr "死區" +#: src/emc/usr_intf/gscreen/gscreen.py:1719 +#, fuzzy +msgid "Machine powered on" +msgstr "開机" -#: src/emc/usr_intf/pncconf/pncconf.glade:61089 -#: src/emc/usr_intf/pncconf/pncconf.glade:61380 -#: src/emc/usr_intf/pncconf/pncconf.glade:62030 -#: src/emc/usr_intf/pncconf/pncconf.glade:62401 -#: src/emc/usr_intf/pncconf/pncconf.glade:63275 -#: src/emc/usr_intf/pncconf/pncconf.glade:63562 -#: src/emc/usr_intf/pncconf/pncconf.glade:64216 -#: src/emc/usr_intf/pncconf/pncconf.glade:64587 -#: src/emc/usr_intf/pncconf/pncconf.glade:65431 -#: src/emc/usr_intf/pncconf/pncconf.glade:65718 -msgid "Original" -msgstr "原本" +#: src/emc/usr_intf/gscreen/gscreen.py:1724 +#, fuzzy +msgid "Machine Estopped!" +msgstr "機床位置" -#: src/emc/usr_intf/pncconf/pncconf.glade:61138 -#: src/emc/usr_intf/pncconf/pncconf.glade:61981 -#: src/emc/usr_intf/pncconf/pncconf.glade:63324 -#: src/emc/usr_intf/pncconf/pncconf.glade:64167 -#: src/emc/usr_intf/pncconf/pncconf.glade:65480 -msgid "D:" +#: src/emc/usr_intf/gscreen/gscreen.py:1727 +#, fuzzy +msgid "Calculator" msgstr "" +"計算\n" +"比例" -#: src/emc/usr_intf/pncconf/pncconf.glade:61148 -#: src/emc/usr_intf/pncconf/pncconf.glade:61971 -#: src/emc/usr_intf/pncconf/pncconf.glade:63334 -#: src/emc/usr_intf/pncconf/pncconf.glade:64157 -#: src/emc/usr_intf/pncconf/pncconf.glade:65490 -msgid "I:" +#: src/emc/usr_intf/gscreen/gscreen.py:1857 +#, python-format +msgid "Axes %s are homed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61158 -#: src/emc/usr_intf/pncconf/pncconf.glade:61961 -#: src/emc/usr_intf/pncconf/pncconf.glade:63344 -#: src/emc/usr_intf/pncconf/pncconf.glade:64147 -#: src/emc/usr_intf/pncconf/pncconf.glade:65500 -msgid "P:" +#: src/emc/usr_intf/gscreen/gscreen.py:1864 +msgid "All the axes have been homed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61168 -#: src/emc/usr_intf/pncconf/pncconf.glade:61392 -#: src/emc/usr_intf/pncconf/pncconf.glade:61951 -#: src/emc/usr_intf/pncconf/pncconf.glade:62389 -#: src/emc/usr_intf/pncconf/pncconf.glade:63354 -#: src/emc/usr_intf/pncconf/pncconf.glade:63574 -#: src/emc/usr_intf/pncconf/pncconf.glade:64137 -#: src/emc/usr_intf/pncconf/pncconf.glade:64575 -#: src/emc/usr_intf/pncconf/pncconf.glade:65510 -#: src/emc/usr_intf/pncconf/pncconf.glade:65730 -msgid "Current" -msgstr "電流" - -#: src/emc/usr_intf/pncconf/pncconf.glade:61185 -#: src/emc/usr_intf/pncconf/pncconf.glade:62278 -#: src/emc/usr_intf/pncconf/pncconf.glade:63371 -#: src/emc/usr_intf/pncconf/pncconf.glade:64464 -#: src/emc/usr_intf/pncconf/pncconf.glade:65527 -msgid "PID Tuning" -msgstr "PID調節" - -#: src/emc/usr_intf/pncconf/pncconf.glade:61370 -#: src/emc/usr_intf/pncconf/pncconf.glade:62413 -#: src/emc/usr_intf/pncconf/pncconf.glade:63552 -#: src/emc/usr_intf/pncconf/pncconf.glade:64599 -#: src/emc/usr_intf/pncconf/pncconf.glade:65708 -msgid "Direction Setup:" -msgstr "方向設置:" +#: src/emc/usr_intf/gscreen/gscreen.py:1874 +#, python-format +msgid "There are unhomed axes: %s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61404 -#: src/emc/usr_intf/pncconf/pncconf.glade:62379 -#: src/emc/usr_intf/pncconf/pncconf.glade:63586 -#: src/emc/usr_intf/pncconf/pncconf.glade:64565 -#: src/emc/usr_intf/pncconf/pncconf.glade:65742 -msgid "Direction Hold:" -msgstr "方向保持:" +#: src/emc/usr_intf/gscreen/gscreen.py:1879 +#, fuzzy, python-format +msgid "Program loaded: %s" +msgstr "程序檔案是 %s" -#: src/emc/usr_intf/pncconf/pncconf.glade:61414 -#: src/emc/usr_intf/pncconf/pncconf.glade:62369 -#: src/emc/usr_intf/pncconf/pncconf.glade:63596 -#: src/emc/usr_intf/pncconf/pncconf.glade:64555 -#: src/emc/usr_intf/pncconf/pncconf.glade:65752 -msgid "Step Space:" -msgstr "步進空間:" +#: src/emc/usr_intf/gscreen/gscreen.py:1977 +#, fuzzy +msgid "Manual Spindle Control" +msgstr "手動 主軸 停" -#: src/emc/usr_intf/pncconf/pncconf.glade:61424 -#: src/emc/usr_intf/pncconf/pncconf.glade:62359 -#: src/emc/usr_intf/pncconf/pncconf.glade:63606 -#: src/emc/usr_intf/pncconf/pncconf.glade:64545 -#: src/emc/usr_intf/pncconf/pncconf.glade:65762 -msgid "Step Time:" -msgstr "步進時間" +#: src/emc/usr_intf/gscreen/gscreen.py:2034 +msgid "Keyboard" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61439 -#: src/emc/usr_intf/pncconf/pncconf.glade:62528 -#: src/emc/usr_intf/pncconf/pncconf.glade:63621 -#: src/emc/usr_intf/pncconf/pncconf.glade:64714 -#: src/emc/usr_intf/pncconf/pncconf.glade:65777 -msgid "Step Timing" -msgstr "步進時序" +#: src/emc/usr_intf/gscreen/gscreen.py:2067 +msgid "Error with launching 'Onboard' on-screen keyboard program" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:63830 -msgid "enable" -msgstr "啟用" +#: src/emc/usr_intf/gscreen/gscreen.py:2215 +#, python-format +msgid "**** GSCREEN INFO: Overriding internal signal call to %s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65798 -msgid "spindle" -msgstr "主軸" +#: src/emc/usr_intf/gscreen/gscreen.py:2643 +#, fuzzy +msgid " Zero Origin" +msgstr "原本" -#: src/emc/usr_intf/pncconf/pncconf.glade:65881 -msgid "Help Page" -msgstr "幫助頁面" +#: src/emc/usr_intf/gscreen/gscreen.py:2644 +#, fuzzy +msgid "Offset Origin" +msgstr "偏移訊息" -#: src/emc/usr_intf/pncconf/pncconf.glade:65911 +#: src/emc/usr_intf/gscreen/gscreen.py:2659 msgid "" -"X axis:\n" -"Total Travel = 10\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = 0\n" -"Pos Travel Distance = Total Travel - neg travel distance = 10\n" -"Home Position = Origin to Home Position distance = 6\n" -"\n" -"Y axis:\n" -"Total Travel = 8\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = -8\n" -"Pos Travel Distance = Total Travel - neg travel distance = 0\n" -"Home Position = Origin to Home Position distance = 0\n" -"\n" -"Z axis:\n" -"Total Travel = 12\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = -12\n" -"Pos Travel Distance = Total Travel - neg travel distance = 0\n" -"Home Position = Origin to Home Position distance = 0\n" -"\n" -"Note that the direction indicators on the top right show \n" -"movement of the TOOL and on the actual machine,\n" -"often it is the table that actually moves. In that case the \n" -"directions are opposite of shown.\n" -"\n" -"Note this is an example, Many other combinations are \n" -"possible" +"**** Gscreen ERROR: Invalid message configuration (missing text or type) " +"in INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65951 -msgid "Mill" +#: src/emc/usr_intf/gscreen/gscreen.py:2661 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing pinname) in " +"INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65970 +#: src/emc/usr_intf/gscreen/gscreen.py:2663 msgid "" -"Total Travel = 4 + 6 = 10\n" -"Z Home Offset = Origin to Home Switch distance = 10\n" -"Z Neg Travel Distance = Origin to neg limit distance = 0\n" -"Z Pos Travel Distance = Total Travel - neg travel distance = 10\n" -"Z Home Position = Origin to Home Position distance = 4\n" -"\n" -"X axis would be similar but not shown fully for clarity.\n" -"This is just a sample reference other switch combinations are\n" -"possible." +"**** Gscreen ERROR: Invalid message configuration (missing boldtext) in " +"INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65994 -msgid "Lathe" +#: src/emc/usr_intf/gscreen/gscreen.py:2667 +#, python-format +msgid "" +"**** Gscreen ERROR: invalid message type (%s)in INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66010 -msgid "Diagram" -msgstr "圖表" +#: src/emc/usr_intf/gscreen/gscreen.py:2699 +msgid "Dialog error - Is the dialog handler missing from the handler file?" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66043 -msgid "Output" -msgstr "輸出" +#: src/emc/usr_intf/gscreen/gscreen.py:2701 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3540 +#, fuzzy +msgid "Manual Toolchange" +msgstr "AXIS 手動 換刀" -#: src/emc/usr_intf/pncconf/pncconf.glade:66123 -msgid "Motor steps per revolution:" -msgstr "電機步每轉:" +#: src/emc/usr_intf/gscreen/gscreen.py:2703 +#: src/emc/usr_intf/gmoccapy/dialogs.py:94 +#: src/emc/usr_intf/gmoccapy/dialogs.py:107 +#: src/emc/usr_intf/gmoccapy/dialogs.py:119 +msgid "Operator Message" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66173 -#: src/emc/usr_intf/pncconf/pncconf.glade:66459 +#: src/emc/usr_intf/gscreen/gscreen.py:2737 +#: src/emc/usr_intf/gscreen/gscreen.py:2741 +#: src/emc/usr_intf/gmoccapy/dialogs.py:155 +#: src/emc/usr_intf/gmoccapy/dialogs.py:159 #, fuzzy -msgid "Leadscrew Metric Pitch" -msgstr "丝杆 螺距" +msgid "Restart Entry" +msgstr "重新 起動" -#: src/emc/usr_intf/pncconf/pncconf.glade:66186 -msgid "Microstep Multiplication Factor:" -msgstr "微步乘係數:" +#: src/emc/usr_intf/gscreen/gscreen.py:2752 +#: src/emc/usr_intf/gmoccapy/dialogs.py:173 +msgid "Enter" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66199 -#: src/emc/usr_intf/pncconf/pncconf.glade:66481 -msgid "Worm turn ratio (Input:Outputl)" -msgstr "蜗杆圈數比(輸入:輸出)" +#: src/emc/usr_intf/gscreen/gscreen.py:2774 +#, python-format +msgid "Ready to Restart program from line %d" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66212 -msgid "Pulley teeth (motor:Leadscrew):" -msgstr "帶輪齒(馬達:絲槓):" +#: src/emc/usr_intf/gscreen/gscreen.py:2807 +#, fuzzy +msgid "Invalid embeded tab configuration" +msgstr "創建一個新的配置" -#: src/emc/usr_intf/pncconf/pncconf.glade:66356 -msgid "TPI " +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +msgid "Can't jog multiple axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66372 -msgid "Step Motor Scale" -msgstr "步進馬達比例" +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +msgid "No axis selected to jog" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66472 -msgid "Pulley teeth (encoder:Leadscrew):" -msgstr "帶輪齒(編碼器:絲槓):" +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +msgid "No axis selected to move" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66537 -msgid "Encoder lines per revolution:" -msgstr "編碼器每轉線條" +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +msgid "Can't home multiple axis - select HOME ALL instead" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66547 -msgid "X 4 = Pulses/Rev" -msgstr "X 4=脈衝 /轉" +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +msgid "No axis selected to home" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66651 -msgid "TPI" +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +msgid "Can't unhome multiple axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66667 -msgid "Encoder Scale" -msgstr "編碼器比例" +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +msgid "No axis selected to unhome" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66711 -msgid "motor steps per unit:" -msgstr "電機步每單位:" +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +msgid "No axis selected for origin zeroing" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66721 -msgid "encoder pulses per unit:" -msgstr "編碼器脈衝每單位:" +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +msgid "No axis selected for origin touch-off" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66756 -msgid " " +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +msgid "Can't tool touch-off multiple axes" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66770 -msgid "Calculated Scale" -msgstr "計算出比例" +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +msgid "No axis selected for tool touch-off" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66848 -msgid "xmaxrpm" +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#: src/emc/usr_intf/gscreen/gscreen.py:3375 +#, fuzzy +msgid "Error Message" +msgstr "保存 文件 時出錯" + +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#, python-format +msgid "Tool editor error - is the %s editor available?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66864 -msgid "RPM" +#: src/emc/usr_intf/gscreen/gscreen.py:3377 +#: src/emc/usr_intf/gscreen/gscreen.py:3379 +msgid "Message" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66877 -msgid "Motor RPM at max speed:" -msgstr "電機轉速在最大速度:" +#: src/emc/usr_intf/gscreen/gscreen.py:3409 +#, python-format +msgid "%d RPM" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:48 +#: src/emc/usr_intf/gscreen/gscreen.glade:59 +#: src/emc/usr_intf/gscreen/gscreen.glade:135 +#: src/emc/usr_intf/gscreen/gscreen.glade:176 +#: src/emc/usr_intf/gscreen/gscreen.glade:187 +#: src/emc/usr_intf/gscreen/gscreen.glade:264 +#: src/emc/usr_intf/gscreen/gscreen.glade:306 +#: src/emc/usr_intf/gscreen/gscreen.glade:317 +#: src/emc/usr_intf/gscreen/gscreen.glade:393 +#: src/emc/usr_intf/gscreen/gscreen.glade:434 +#: src/emc/usr_intf/gscreen/gscreen.glade:445 +#: src/emc/usr_intf/gscreen/gscreen.glade:521 +#: src/emc/usr_intf/gscreen/gscreen.glade:562 +#: src/emc/usr_intf/gscreen/gscreen.glade:573 +#: src/emc/usr_intf/gscreen/gscreen.glade:649 +#: src/emc/usr_intf/gscreen/gscreen.glade:690 +#: src/emc/usr_intf/gscreen/gscreen.glade:701 +#: src/emc/usr_intf/gscreen/gscreen.glade:777 +#: src/emc/usr_intf/gscreen/gscreen.glade:818 +#: src/emc/usr_intf/gscreen/gscreen.glade:829 +#: src/emc/usr_intf/gscreen/gscreen.glade:905 +#: src/emc/usr_intf/gscreen/gscreen.glade:946 +#: src/emc/usr_intf/gscreen/gscreen.glade:957 +#: src/emc/usr_intf/gscreen/gscreen.glade:1033 +#: src/emc/usr_intf/gscreen/gscreen.glade:1074 +#: src/emc/usr_intf/gscreen/gscreen.glade:1085 +#: src/emc/usr_intf/gscreen/gscreen.glade:1161 +msgid "0000.0000" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:73 +#: src/emc/usr_intf/gscreen/gscreen.glade:201 +#: src/emc/usr_intf/gscreen/gscreen.glade:331 +#: src/emc/usr_intf/gscreen/gscreen.glade:459 +#: src/emc/usr_intf/gscreen/gscreen.glade:587 +#: src/emc/usr_intf/gscreen/gscreen.glade:715 +#: src/emc/usr_intf/gscreen/gscreen.glade:843 +#: src/emc/usr_intf/gscreen/gscreen.glade:971 +#: src/emc/usr_intf/gscreen/gscreen.glade:1099 +msgid "REL" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:99 +#: src/emc/usr_intf/gscreen/gscreen.glade:227 +#: src/emc/usr_intf/gscreen/gscreen.glade:357 +#: src/emc/usr_intf/gscreen/gscreen.glade:485 +#: src/emc/usr_intf/gscreen/gscreen.glade:613 +#: src/emc/usr_intf/gscreen/gscreen.glade:741 +#: src/emc/usr_intf/gscreen/gscreen.glade:869 +#: src/emc/usr_intf/gscreen/gscreen.glade:997 +#: src/emc/usr_intf/gscreen/gscreen.glade:1125 +msgid "ABS" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:630 +msgid "B" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:758 +msgid "C" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:886 +#, fuzzy +msgid "U" +msgstr "向上" -#: src/emc/usr_intf/pncconf/pncconf.glade:66921 -msgid "Calculated Axis SCALE:" -msgstr "計算軸比例:" +#: src/emc/usr_intf/gscreen/gscreen.glade:1014 +msgid "V" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66934 -msgid "Khz" +#: src/emc/usr_intf/gscreen/gscreen.glade:1298 +msgid "G code" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66949 -msgid "sec" +#: src/emc/usr_intf/gscreen/gscreen.glade:1392 +#, fuzzy +msgid "G Codes Active" +msgstr "編碼器比例" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1451 +msgid "MV:100%" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67049 +#: src/emc/usr_intf/gscreen/gscreen.glade:1470 #, fuzzy -msgid "Distance to acheave max speed:" -msgstr "距離達到最大速度:" +msgid " Mist" +msgstr "霧噴" -#: src/emc/usr_intf/pncconf/pncconf.glade:67077 -msgid "Resolution:" -msgstr "分辨率:" +#: src/emc/usr_intf/gscreen/gscreen.glade:1481 +#, fuzzy +msgid " Flood " +msgstr "淹浸" -#: src/emc/usr_intf/pncconf/pncconf.glade:67105 -msgid "mm / encoder pulse" -msgstr "毫米 / 編碼器脈衝 " +#: src/emc/usr_intf/gscreen/gscreen.glade:1533 +#, fuzzy +msgid " At Speed " +msgstr "主軸 轉速(RPM)" -#: src/emc/usr_intf/pncconf/pncconf.glade:67123 -msgid "Motion Data" -msgstr "動作數據" +#: src/emc/usr_intf/gscreen/gscreen.glade:1546 +#, fuzzy +msgid " Jog mode" +msgstr "Joint 模式" -#: src/emc/usr_intf/pncconf/pncconf.glade:67151 -msgid "gtk-cancel" +#: src/emc/usr_intf/gscreen/gscreen.glade:1600 +msgid "10 DPM" msgstr "" -#: src/emc/task/emctaskmain.cc:427 src/emc/task/emctaskmain.cc:460 -#: src/emc/task/emctaskmain.cc:467 src/emc/task/emctaskmain.cc:500 -#, c-format -msgid "%s exceeds +X limit" -msgstr "%s 超過 +X 極限" +#: src/emc/usr_intf/gscreen/gscreen.glade:1616 +msgid "10 Ipm" +msgstr "" -#: src/emc/task/emctaskmain.cc:432 src/emc/task/emctaskmain.cc:465 -#: src/emc/task/emctaskmain.cc:472 src/emc/task/emctaskmain.cc:505 -#, c-format -msgid "%s exceeds +Y limit" -msgstr "%s 超過 +Y 極限" +#: src/emc/usr_intf/gscreen/gscreen.glade:1690 +#, fuzzy +msgid "Status" +msgstr "冷卻液" -#: src/emc/task/emctaskmain.cc:437 src/emc/task/emctaskmain.cc:470 -#: src/emc/task/emctaskmain.cc:477 src/emc/task/emctaskmain.cc:510 -#, c-format -msgid "%s exceeds +Z limit" -msgstr "%s 超過 +Z 極限" +#: src/emc/usr_intf/gscreen/gscreen.glade:1715 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2510 +msgid "" +"Search\n" +" Text:" +msgstr "" -#: src/emc/task/emctaskmain.cc:442 src/emc/task/emctaskmain.cc:475 -#: src/emc/task/emctaskmain.cc:482 src/emc/task/emctaskmain.cc:515 -#, c-format -msgid "%s exceeds -X limit" -msgstr "%s 超過 -X 極限" +#: src/emc/usr_intf/gscreen/gscreen.glade:1766 +#, fuzzy +msgid "Mode" +msgstr "電源" -#: src/emc/task/emctaskmain.cc:447 src/emc/task/emctaskmain.cc:480 -#: src/emc/task/emctaskmain.cc:487 src/emc/task/emctaskmain.cc:520 -#, c-format -msgid "%s exceeds -Y limit" -msgstr "%s 超過 -Y 極限" +#: src/emc/usr_intf/gscreen/gscreen.glade:1782 +#, fuzzy +msgid "Main Level" +msgstr "等級" -#: src/emc/task/emctaskmain.cc:452 src/emc/task/emctaskmain.cc:485 -#: src/emc/task/emctaskmain.cc:492 src/emc/task/emctaskmain.cc:525 -#, c-format -msgid "%s exceeds -Z limit" -msgstr "%s 超過 -Z 極限" +#: src/emc/usr_intf/gscreen/gscreen.glade:1823 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3678 +msgid "Themes" +msgstr "" -#: src/emc/task/emctaskmain.cc:810 src/emc/task/emctaskmain.cc:853 -#, c-format -msgid "" -"command (%s) cannot be executed until the machine is out of E-stop and " -"turned on" -msgstr "命令 (%s) 不能執行 直到機器 離開 急停 並開動" +#: src/emc/usr_intf/gscreen/gscreen.glade:1847 +#, fuzzy +msgid "Relative Text Color" +msgstr "相對位置" -#: src/emc/task/emctaskmain.cc:930 src/emc/task/emctaskmain.cc:973 -#, c-format -msgid "can't do that (%s) in manual mode" -msgstr "不能做到這一點(%s)在手動模式" +#: src/emc/usr_intf/gscreen/gscreen.glade:1895 +msgid "DTG Text Color" +msgstr "" -#: src/emc/task/emctaskmain.cc:1027 src/emc/task/emctaskmain.cc:1072 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter idle" -msgstr "不能做到這一點(%s)在自動模式與翻譯空閒" +#: src/emc/usr_intf/gscreen/gscreen.glade:1916 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3710 +#, fuzzy +msgid "Warning Audio" +msgstr "警告" -#: src/emc/task/emctaskmain.cc:1087 src/emc/task/emctaskmain.cc:1132 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter reading" -msgstr "不能做到這一點(%s)在自動模式與翻譯閱讀" +#: src/emc/usr_intf/gscreen/gscreen.glade:1926 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3723 +msgid "Alert Audio" +msgstr "" -#: src/emc/task/emctaskmain.cc:1169 src/emc/task/emctaskmain.cc:1216 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter paused" -msgstr "不能做到這一點(%s)在自動模式與翻譯暫停" +#: src/emc/usr_intf/gscreen/gscreen.glade:1947 +#, fuzzy +msgid "Grid Size" +msgstr "大小" -#: src/emc/task/emctaskmain.cc:1231 src/emc/task/emctaskmain.cc:1278 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter waiting" -msgstr "不能做到這一點(%s)在自動模式與翻譯等待" +#: src/emc/usr_intf/gscreen/gscreen.glade:1986 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4119 +#, fuzzy +msgid "Starting RPM" +msgstr "設定" -#: src/emc/task/emctaskmain.cc:1321 src/emc/task/emctaskmain.cc:1370 -#, c-format -msgid "can't do that (%s) in MDI mode" -msgstr "不能做到這一點(%s)在MDI模式" +#: src/emc/usr_intf/gscreen/gscreen.glade:2015 +msgid "Metric\n" +msgstr "" -#: src/emc/task/emctaskmain.cc:1943 src/emc/task/emctaskmain.cc:2015 -msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" -msgstr "無法切換模式,而模式是AUTO和解釋是沒有閒著" +#: src/emc/usr_intf/gscreen/gscreen.glade:2030 +msgid "" +" Display\n" +"Aux Screen" +msgstr "" -#: src/emc/task/emctaskmain.cc:2012 src/emc/task/emctaskmain.cc:2084 -msgid "Can't issue MDI command when not homed" -msgstr "不能發出 MDI命令當沒有歸零" +#: src/emc/usr_intf/gscreen/gscreen.glade:2045 +msgid "" +"Diameter\n" +" Mode" +msgstr "" -#: src/emc/task/emctaskmain.cc:2017 src/emc/task/emctaskmain.cc:2089 -msgid "Must be in MDI mode to issue MDI command" -msgstr "必須在MDI模式下發出 MDI命令" +#: src/emc/usr_intf/gscreen/gscreen.glade:2062 +#: src/emc/usr_intf/gscreen/gscreen.glade:3096 +#, fuzzy +msgid "" +" Show\n" +"Offsets" +msgstr "顯示 偏移量(_f)" -#: src/emc/task/emctaskmain.cc:2078 src/emc/task/emctaskmain.cc:2151 -msgid "Can't run a program when not homed" -msgstr "不能運行程序,當沒有歸零" +#: src/emc/usr_intf/gscreen/gscreen.glade:2079 +#, fuzzy +msgid "" +"Show\n" +"DTG" +msgstr "展示" -#: src/emc/rs274ngc/interp_arc.cc:108 src/emc/rs274ngc/rs274ngc_return.hh:160 -msgid "Zero radius arc" -msgstr "零半徑弧" +#: src/emc/usr_intf/gscreen/gscreen.glade:2096 +msgid "" +" Gscreen\n" +"Fullscreen" +msgstr "" -#: src/emc/rs274ngc/interp_arc.cc:112 src/emc/rs274ngc/interp_arc.cc:279 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:2118 msgid "" -"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " -"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " -"rel_err=%.4f%%" +" On M7 Use\n" +"Aux Coolant" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:89 src/emc/rs274ngc/interp_check.cc:90 -msgid "G4 not allowed with G2 or G3 because they both use P" -msgstr "G4 不准 和 G2 或 G3使用,因為它們都使用 P" +#: src/emc/usr_intf/gscreen/gscreen.glade:2131 +msgid "" +" On M8 Use\n" +"Aux Coolant" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:92 src/emc/rs274ngc/interp_check.cc:93 -msgid "Line with G10 does not have L1, L10, L11, L2, or L20" +#: src/emc/usr_intf/gscreen/gscreen.glade:2144 +msgid "Hide Pointer" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:93 src/emc/rs274ngc/interp_check.cc:94 -msgid "P value not an integer with G10" -msgstr "P值不是整數使用 G10" +#: src/emc/usr_intf/gscreen/gscreen.glade:2156 +msgid "" +" Desktop\n" +"Notification" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:94 src/emc/rs274ngc/interp_check.cc:95 -msgid "P value out of range (0-9) with G10 L2 or L20" -msgstr "P值超出範圍(0-9)與 G10 L2或L20" +#: src/emc/usr_intf/gscreen/gscreen.glade:2228 +#: src/emc/usr_intf/gscreen/gscreen.glade:2368 +#, fuzzy +msgid "Debug" +msgstr "排錯..." -#: src/emc/rs274ngc/interp_check.cc:95 src/emc/rs274ngc/interp_check.cc:96 -msgid "P value out of range with G10 L1 or G10 L10" -msgstr "P值超出範圍使用 G10 L1或G10 L10" +#: src/emc/usr_intf/gscreen/gscreen.glade:2263 +#, fuzzy +msgid "Alarm History" +msgstr "歷史:" -#: src/emc/rs274ngc/interp_check.cc:99 src/emc/rs274ngc/interp_check.cc:100 -msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." -msgstr "G5.2和G5.3之間代碼,只有更多的G5.2代碼是允許的." +#: src/emc/usr_intf/gscreen/gscreen.glade:2281 +msgid "" +" Launch\n" +"Halshow" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:248 src/emc/rs274ngc/interp_check.cc:258 -msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" -msgstr "D 字無 G41,G41.1,G42,G42.1,或G96使用它" +#: src/emc/usr_intf/gscreen/gscreen.glade:2293 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6449 +#, fuzzy +msgid "Calibration" +msgstr "校準(_C)" -#: src/emc/rs274ngc/interp_check.cc:254 src/emc/rs274ngc/interp_check.cc:264 -msgid "E word with no G76, M66, M67 or M68 to use it" -msgstr "E字無 G76,M66,M67或M68使用它" +#: src/emc/usr_intf/gscreen/gscreen.glade:2304 +#, fuzzy +msgid "Halmeter" +msgstr "HAL 儀表" -#: src/emc/rs274ngc/interp_check.cc:259 src/emc/rs274ngc/interp_check.cc:269 -msgid "H word with no G43 or G76 to use it" -msgstr "H字沒有 G43或G76使用它" +#: src/emc/usr_intf/gscreen/gscreen.glade:2315 +#, fuzzy +msgid "" +"linuxcnc\n" +" Status" +msgstr "EMC 狀態" -#: src/emc/rs274ngc/interp_check.cc:265 src/emc/rs274ngc/interp_check.cc:275 -msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" -msgstr "I字 沒有 G2,G3,G5,G5.1,G10,G76或G87使用它" +#: src/emc/usr_intf/gscreen/gscreen.glade:2327 +#, fuzzy +msgid "Halscope" +msgstr "HAL 顯示器" -#: src/emc/rs274ngc/interp_check.cc:271 src/emc/rs274ngc/interp_check.cc:281 -msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" -msgstr "J字 沒有 G2,G3,G5,G5.1,G10,G76或G87使用它" +#: src/emc/usr_intf/gscreen/gscreen.glade:2338 +msgid "Ladder" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:277 src/emc/rs274ngc/interp_check.cc:287 -msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" -msgstr "K字 沒有 G2,G3,G33,G33.1,G76或G87使用它" +#: src/emc/usr_intf/gscreen/gscreen.glade:2386 +#, fuzzy +msgid "Tooleditor" +msgstr "刀具表編輯..." -#: src/emc/rs274ngc/interp_check.cc:287 src/emc/rs274ngc/interp_check.cc:297 +#: src/emc/usr_intf/gscreen/gscreen.glade:2404 +#, fuzzy msgid "" -"L word with no G10, cutter compensation, canned cycle, digital/analog input, " -"or NURBS code" -msgstr "L字無 G10,刀具補償,固定循環,數字/模擬輸入, 或 NURBS 代碼" +"Offset\n" +" Page" +msgstr "偏移 值 " -#: src/emc/rs274ngc/interp_check.cc:299 src/emc/rs274ngc/interp_check.cc:309 -msgid "" -"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " -"M53 M62 M63 M64 M65 M66 or user M code to use it" +#: src/emc/usr_intf/gscreen/gscreen.glade:2572 +#: src/emc/usr_intf/gscreen/gscreen.glade:2749 +#: src/emc/usr_intf/gscreen/gscreen.glade:3156 +msgid "\n" msgstr "" -"P字G2 G3 G4沒有 G5 G10 G64 G76 G82 G86 G88 G5.2 G89或M50 M51 M52 M53 M62 M63 " -"M64 M65 M66或用戶的M代碼使用它" -#: src/emc/rs274ngc/interp_check.cc:302 +#: src/emc/usr_intf/gscreen/gscreen.glade:2584 #, fuzzy -msgid "P value not an integer with G2 or G3" -msgstr "P值不是整數使用 G2或G3" +msgid "Tool Setting" +msgstr "設定" -#: src/emc/rs274ngc/interp_check.cc:304 src/emc/rs274ngc/interp_check.cc:318 -msgid "P value should be 1 or greater with G2 or G3" -msgstr "P值應為 1或更大的G2或G3" +#: src/emc/usr_intf/gscreen/gscreen.glade:2648 +#, fuzzy +msgid "" +"Single\n" +" Step" +msgstr "單間隔" -#: src/emc/rs274ngc/interp_check.cc:311 +#: src/emc/usr_intf/gscreen/gscreen.glade:2661 #, fuzzy msgid "" -"Q word with no G5, G10, G64, G73, G76, G83, M66, M67, M68 or user M code " -"that uses it" -msgstr "" -"Q字,沒有 G5,G10,G64,G73,G76,G83,M66,M67,M68或用戶 M代碼 使用它" +"Run At\n" +" Line" +msgstr "運行時間:" -#: src/emc/rs274ngc/interp_convert.cc:138 -msgid "You must specify both X and Y coordinates for Control Points" -msgstr "您必須指定X和Y坐標對控制點" +#: src/emc/usr_intf/gscreen/gscreen.glade:2673 +msgid "" +"Change \n" +" View" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:141 -msgid "Can specify P without X and Y only for the first control point" -msgstr "可以指定P沒有 X和Y只對第一個控制點" +#: src/emc/usr_intf/gscreen/gscreen.glade:2760 +#, fuzzy +msgid "Homing\n" +msgstr "歸零(_g)" -#: src/emc/rs274ngc/interp_convert.cc:144 -msgid "Must specify positive weight P for every Control Point" -msgstr "必須指定積極重量P為每一個控制點" +#: src/emc/usr_intf/gscreen/gscreen.glade:2781 +msgid "" +"Ignore\n" +"Limits" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:147 -msgid "Cannot make a NURBS with 0 feedrate" -msgstr "不能作出NURBS使用進給速度0" +#: src/emc/usr_intf/gscreen/gscreen.glade:2810 +#, fuzzy +msgid "" +" Set\n" +"Override" +msgstr "設定 超越調整" -#: src/emc/rs274ngc/interp_convert.cc:182 -msgid "Cannot use G5.3 without G5.2 first" -msgstr "不能使用 G5.3沒有 G5.2先行" +#: src/emc/usr_intf/gscreen/gscreen.glade:2824 +msgid "Graphics\n" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:183 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:2838 +#, fuzzy msgid "" -"You must specify a number of control points at least equal to the order L = %" -"d" -msgstr "您必須指定一個數字控制點至少等於順序L =%d" +"Menu\n" +"Level" +msgstr "等級" -#: src/emc/rs274ngc/interp_convert.cc:212 -msgid "Cannot convert spline with cutter radius compensation" -msgstr "無法轉換 樣條曲線 有刀具半徑補償" +#: src/emc/usr_intf/gscreen/gscreen.glade:2851 +msgid "" +" Launch\n" +"Keyboard" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:222 -msgid "Splines must be in the XY plane" -msgstr "樣條曲線必須在XY平面" +#: src/emc/usr_intf/gscreen/gscreen.glade:2868 +#, fuzzy +msgid "Select Buttons" +msgstr "輸入選項" -#: src/emc/rs274ngc/interp_convert.cc:227 -msgid "Splines may not have motion in Z, A, B, or C" -msgstr "樣條曲線 無法 有動作 在 Z,A,B 或 C" +#: src/emc/usr_intf/gscreen/gscreen.glade:2955 +#, fuzzy +msgid "" +"Unhome \n" +" All" +msgstr "離零" -#: src/emc/rs274ngc/interp_convert.cc:231 -msgid "Must specify both I and J with G5.1" -msgstr "必須同時指定I和J使用 G5.1" +#: src/emc/usr_intf/gscreen/gscreen.glade:2967 +#, fuzzy +msgid "" +"Unhome\n" +" Axis" +msgstr "離零 軸 _%s" -#: src/emc/rs274ngc/interp_convert.cc:250 -msgid "Must specify both I and J, or neither" -msgstr "必須同時指定 I和J,或者兩者都不要" +#: src/emc/usr_intf/gscreen/gscreen.glade:2979 +#: src/emc/usr_intf/gscreen/gscreen.glade:3084 +#, fuzzy +msgid "" +"Toggle\n" +"Readout" +msgstr "切換 淹浸" -#: src/emc/rs274ngc/interp_convert.cc:261 -msgid "Must specify both P and Q with G5" -msgstr "必須同時指定P和Q使用 G5" +#: src/emc/usr_intf/gscreen/gscreen.glade:3004 +msgid "" +"Jogging\n" +" Mode" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:362 +#: src/emc/usr_intf/gscreen/gscreen.glade:3016 +#, fuzzy msgid "" -"The move just after exiting cutter compensation mode must be straight, not " -"an arc" -msgstr "移動只是在退出刀具補償模式必須是直的,而不是一個弧" +"coordinate\n" +" System" +msgstr "坐標系:" -#: src/emc/rs274ngc/interp_convert.cc:370 -msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" +#: src/emc/usr_intf/gscreen/gscreen.glade:3060 +msgid "" +"Index\n" +" Tool" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:382 -#: src/emc/rs274ngc/interp_convert.cc:3909 -#: src/emc/rs274ngc/interp_convert.cc:4266 -msgid "Cannot feed with zero spindle speed in feed per rev mode" -msgstr "不能進給 用 零速度主軸 在 進給每轉 模式下" +#: src/emc/usr_intf/gscreen/gscreen.glade:3072 +#, fuzzy +msgid "" +"Spindle\n" +"Controls" +msgstr "操控" -#: src/emc/rs274ngc/interp_convert.cc:393 -#: src/emc/rs274ngc/interp_convert.cc:399 -#: src/emc/rs274ngc/interp_convert.cc:408 -#: src/emc/rs274ngc/interp_convert.cc:414 -#: src/emc/rs274ngc/interp_convert.cc:423 -#: src/emc/rs274ngc/interp_convert.cc:429 -#, c-format -msgid "%c word missing in absolute center arc" -msgstr "%c 字中 缺少 在 絕對的中心弧" +#: src/emc/usr_intf/gscreen/gscreen.glade:3195 +#, fuzzy +msgid "Open" +msgstr "打開..." -#: src/emc/rs274ngc/interp_convert.cc:649 +#: src/emc/usr_intf/gscreen/gscreen.glade:3205 +#, fuzzy msgid "" -"Radius of cutter compensation entry arc is not greater than the tool radius" -msgstr "刀具半徑補償進入弧不大於刀具半徑" +" Block\n" +"Delete" +msgstr "刪除" -#: src/emc/rs274ngc/interp_convert.cc:868 -#: src/emc/rs274ngc/interp_convert.cc:878 src/emc/rs274ngc/interp_queue.cc:541 -#: src/emc/rs274ngc/interp_queue.cc:592 +#: src/emc/usr_intf/gscreen/gscreen.glade:3217 +#, fuzzy msgid "" -"Arc move in concave corner cannot be reached by the tool without gouging" -msgstr "弧移動無法到達凹角 使用該工具 而沒有刨削槽" +"Optional\n" +" Stop" +msgstr "可選 的 停止" -#: src/emc/rs274ngc/interp_convert.cc:904 -msgid "Arc to arc motion is invalid because the arcs have the same center" -msgstr "弧至弧移動是無效的,因為有相同的弧中心" +#: src/emc/usr_intf/gscreen/gscreen.glade:3229 +msgid "" +" Full\n" +"View" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:907 +#: src/emc/usr_intf/gscreen/gscreen.glade:3265 +#, fuzzy msgid "" -"Arc to arc motion makes a corner the compensated tool can't fit in without " -"gouging" -msgstr "弧至弧運動 做一個角落 補償工具 不適合 有刨削槽" +"Next\n" +" Tab" +msgstr "下一個數值" -#: src/emc/rs274ngc/interp_convert.cc:1036 -#: src/emc/rs274ngc/interp_convert.cc:1037 -#: src/emc/rs274ngc/interp_convert.cc:1038 -#: src/emc/rs274ngc/interp_convert.cc:3376 -#: src/emc/rs274ngc/interp_convert.cc:3379 -#: src/emc/rs274ngc/interp_convert.cc:3382 src/emc/rs274ngc/interp_find.cc:97 -#: src/emc/rs274ngc/interp_convert.cc:3733 -#: src/emc/rs274ngc/interp_convert.cc:3736 -#: src/emc/rs274ngc/interp_convert.cc:3739 -#, c-format -msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" -msgstr "無效的絕對位置 %5.2f 給包裹 旋轉軸 %c" +#: src/emc/usr_intf/gscreen/gscreen.glade:3285 +#, fuzzy +msgid "" +" Feed\n" +"Override" +msgstr "進給 超速" -#: src/emc/rs274ngc/interp_convert.cc:1466 -#: src/emc/rs274ngc/interp_convert.cc:1494 -msgid "Cannot change control mode with cutter radius compensation on" -msgstr "不能改變控制模式 當 使用刀具半徑補償" +#: src/emc/usr_intf/gscreen/gscreen.glade:3298 +#, fuzzy +msgid "" +"Spindle\n" +"Override" +msgstr "設定主軸超速:" -#: src/emc/rs274ngc/interp_convert.cc:1579 -#: src/emc/rs274ngc/interp_convert.cc:1607 -msgid "Cannot change coordinate systems with cutter radius compensation on" -msgstr "不能改變坐標系 當 使用刀具半徑補償" +#: src/emc/usr_intf/gscreen/gscreen.glade:3311 +#, fuzzy +msgid "" +" Rapid\n" +"Override" +msgstr "主軸 超越" -#: src/emc/rs274ngc/interp_convert.cc:1823 -#: src/emc/rs274ngc/interp_convert.cc:1851 -#, c-format -msgid "G%d.1 with no D word" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:3332 +#, fuzzy +msgid "" +" Jog\n" +"Speed" +msgstr "慢步速率:" -#: src/emc/rs274ngc/interp_convert.cc:1826 -#: src/emc/rs274ngc/interp_convert.cc:1854 -#, c-format -msgid "G%d.1 with L word, but plane is not G18" +#: src/emc/usr_intf/gscreen/gscreen.glade:3345 +#, fuzzy +msgid "" +" Jog\n" +"Increments" +msgstr " 增 量 " + +#: src/emc/usr_intf/gscreen/gscreen.glade:3361 +msgid "" +"Adjust\n" +"Rotary" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1837 -#: src/emc/rs274ngc/interp_convert.cc:1865 -#, c-format -msgid "G%d requires D word to be a whole number" +#: src/emc/usr_intf/gscreen/gscreen.glade:3383 +msgid "" +"Change\n" +" View" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1844 -#: src/emc/rs274ngc/interp_convert.cc:1872 -#, c-format -msgid "G%d with lathe tool, but plane is not G18" -msgstr "G%d 與車刀,但平面不是 G18" +#: src/emc/usr_intf/gscreen/gscreen.glade:3431 +#, fuzzy +msgid "" +" Pan\n" +"Vertical" +msgstr "垂直" -#: src/emc/rs274ngc/interp_convert.cc:2228 -#: src/emc/rs274ngc/interp_convert.cc:2271 -msgid "Cannot set reference point with cutter compensation in effect" -msgstr "無法設置 參考點 當 使用刀具補償" +#: src/emc/usr_intf/gscreen/gscreen.glade:3444 +#, fuzzy +msgid "" +" Pan\n" +"Horizontal" +msgstr "水平" -#: src/emc/rs274ngc/interp_convert.cc:2628 -#: src/emc/rs274ngc/interp_convert.cc:2885 -msgid "Cannot set motion output with cutter radius compensation on" -msgstr "無法設置 運動 輸出 當 刀具半徑補償 開" +#: src/emc/usr_intf/gscreen/gscreen.glade:3457 +#, fuzzy +msgid "" +" Rotate\n" +"Horiontal" +msgstr "水平" -#: src/emc/rs274ngc/interp_convert.cc:2629 -#: src/emc/rs274ngc/interp_convert.cc:2886 -msgid "No valid P word with M62" -msgstr "沒有有效的P字使用 M62" +#: src/emc/usr_intf/gscreen/gscreen.glade:3470 +#, fuzzy +msgid "" +" Rotate\n" +"Vertical" +msgstr "垂直" -#: src/emc/rs274ngc/interp_convert.cc:2633 -#: src/emc/rs274ngc/interp_convert.cc:2890 -msgid "Cannot set motion digital output with cutter radius compensation on" +#: src/emc/usr_intf/gscreen/gscreen.glade:3491 +msgid "" +"Search\n" +" Bwd" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2634 -#: src/emc/rs274ngc/interp_convert.cc:2891 -msgid "No valid P word with M63" -msgstr "沒有有效的P字使用 M62" - -#: src/emc/rs274ngc/interp_convert.cc:2638 -#: src/emc/rs274ngc/interp_convert.cc:2643 -#: src/emc/rs274ngc/interp_convert.cc:2895 -#: src/emc/rs274ngc/interp_convert.cc:2900 -msgid "Cannot set auxiliary digital output with cutter radius compensation on" -msgstr "無法設置附屬數碼輸出當刀具半徑補償在使用" - -#: src/emc/rs274ngc/interp_convert.cc:2639 -#: src/emc/rs274ngc/interp_convert.cc:2896 -msgid "No valid P word with M64" -msgstr "沒有有效的P字使用 M64" - -#: src/emc/rs274ngc/interp_convert.cc:2644 -#: src/emc/rs274ngc/interp_convert.cc:2901 -msgid "No valid P word with M65" -msgstr "沒有有效的P字使用 M65" +#: src/emc/usr_intf/gscreen/gscreen.glade:3503 +msgid "" +"Search\n" +" Fwd" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2673 -#: src/emc/rs274ngc/interp_convert.cc:2931 -msgid "invalid P-word with M66" -msgstr "沒有有效的P字使用 M66" +#: src/emc/usr_intf/gscreen/gscreen.glade:3561 +#, fuzzy +msgid "" +" Reload\n" +"Program" +msgstr "重裝 程序" -#: src/emc/rs274ngc/interp_convert.cc:2688 -#: src/emc/rs274ngc/interp_convert.cc:2946 -msgid "Cannot wait for digital input with cutter radius compensation on" -msgstr "不能等待數碼輸入當刀具半徑補償在使用" +#: src/emc/usr_intf/gscreen/gscreen.glade:3604 +msgid "" +" Clear\n" +"status" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2700 -#: src/emc/rs274ngc/interp_convert.cc:2958 -msgid "Cannot wait for analog input with cutter radius compensation on" -msgstr "不能等待模擬輸入當刀具半徑補償在使用" +#: src/emc/usr_intf/gscreen/gscreen.glade:3634 +msgid "G54" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2714 -#: src/emc/rs274ngc/interp_convert.cc:2973 -msgid "Cannot set motion analog output with cutter radius compensation on" -msgstr "無法設置運動模擬輸出當刀具半徑補償在使用" +#: src/emc/usr_intf/gscreen/gscreen.glade:3650 +msgid "calc" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2715 -#: src/emc/rs274ngc/interp_convert.cc:2974 -msgid "Invalid analog index with M67" -msgstr "無效的模擬指標使用 M67" +#: src/emc/usr_intf/gscreen/gscreen.glade:3725 +msgid "test" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2721 -#: src/emc/rs274ngc/interp_convert.cc:2980 -msgid "Cannot set auxiliary analog output with cutter radius compensation on" -msgstr "無法設置輔助模擬輸出當刀具半徑補償在使用" +#: src/emc/usr_intf/gscreen/gscreen.glade:3728 +msgid "test2" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2722 -#: src/emc/rs274ngc/interp_convert.cc:2981 -msgid "Invalid analog index with M68" -msgstr "無效的模擬指標使用 M68" +#: src/emc/usr_intf/gscreen/gscreen.glade:3778 +msgid "Data Entry" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2733 +#: src/emc/usr_intf/gscreen/gscreen.glade:3805 #, fuzzy -msgid "Need positive Q-word to specify tool number with M61" -msgstr "需要正的 Q-字 指定刀具號 當使用M61" +msgid "Calculator Entry" +msgstr "計算出比例" -#: src/emc/rs274ngc/interp_convert.cc:2806 -#: src/emc/rs274ngc/interp_convert.cc:2823 -#: src/emc/rs274ngc/interp_convert.cc:2837 -#: src/emc/rs274ngc/interp_convert.cc:2851 -#: src/emc/rs274ngc/interp_convert.cc:2865 -#: src/emc/rs274ngc/interp_convert.cc:3156 -#: src/emc/rs274ngc/interp_convert.cc:3173 -#: src/emc/rs274ngc/interp_convert.cc:3188 -#: src/emc/rs274ngc/interp_convert.cc:3202 -#: src/emc/rs274ngc/interp_convert.cc:3216 -msgid "Cannot enable overrides with cutter radius compensation on" -msgstr "無法啟用超速 當刀具半徑補償在使用" +#: src/emc/usr_intf/gscreen/gscreen.glade:3894 +#, fuzzy +msgid "Program Restart" +msgstr "顯示重開" -#: src/emc/rs274ngc/interp_convert.cc:2813 -#: src/emc/rs274ngc/interp_convert.cc:2828 -#: src/emc/rs274ngc/interp_convert.cc:2842 -#: src/emc/rs274ngc/interp_convert.cc:2856 -#: src/emc/rs274ngc/interp_convert.cc:2870 -#: src/emc/rs274ngc/interp_convert.cc:3163 -#: src/emc/rs274ngc/interp_convert.cc:3178 -#: src/emc/rs274ngc/interp_convert.cc:3193 -#: src/emc/rs274ngc/interp_convert.cc:3207 -#: src/emc/rs274ngc/interp_convert.cc:3221 -msgid "Cannot disable overrides with cutter radius compensation on" -msgstr "無法禁用超速 當刀具半徑補償在使用" +#: src/emc/usr_intf/gscreen/gscreen.glade:3909 +msgid "" +"Highlighting the run-at-line with the\n" +"up / down buttons or entering the line\n" +"directly." +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2970 -#: src/emc/rs274ngc/interp_convert.cc:2971 -#: src/emc/rs274ngc/interp_convert.cc:2972 -#: src/emc/rs274ngc/interp_convert.cc:3325 -#: src/emc/rs274ngc/interp_convert.cc:3326 -#: src/emc/rs274ngc/interp_convert.cc:3327 -#, c-format -msgid "Indexing axis %c can only be moved with G0" -msgstr "指標軸 %c 只能 用 G0 移動" +#: src/emc/usr_intf/gscreen/gscreen.glade:3923 +msgid "" +"Line\n" +" Up" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2979 -#: src/emc/rs274ngc/interp_convert.cc:2981 -#: src/emc/rs274ngc/interp_convert.cc:2983 -#: src/emc/rs274ngc/interp_convert.cc:3334 -#: src/emc/rs274ngc/interp_convert.cc:3336 -#: src/emc/rs274ngc/interp_convert.cc:3338 -#, c-format -msgid "Indexing axis %c can only be moved alone" -msgstr "指標軸 %c 只能單獨移動 " +#: src/emc/usr_intf/gscreen/gscreen.glade:3946 +msgid "" +" Line\n" +"Down" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3076 -#: src/emc/rs274ngc/interp_convert.cc:3433 -msgid "Cannot probe with feed per rev mode" -msgstr "無法 探測 使用 進給每轉 模式" +#: src/emc/usr_intf/gscreen/gscreen.glade:4028 +msgid "S 1000" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3124 -#: src/emc/rs274ngc/interp_convert.cc:3481 -msgid "Cannot change retract mode with cutter radius compensation on" -msgstr "不能改變回縮模式當刀具半徑補償在使用" +#: src/emc/usr_intf/gscreen/gscreen.glade:4098 +msgid " FWD" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3158 -#: src/emc/rs274ngc/interp_convert.cc:3515 -msgid "G10 L1 without offsets has no effect" +#: src/emc/usr_intf/gscreen/gscreen.glade:4133 +msgid " REV" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3264 -#: src/emc/rs274ngc/interp_convert.cc:3621 -msgid "Q number in G10 is not an integer" -msgstr "Q 編號在 G10 是不是整數" +#: src/emc/usr_intf/gscreen/gscreen2.glade:35 +msgid "screen 2" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3265 -#: src/emc/rs274ngc/interp_convert.cc:3622 -msgid "Invalid tool orientation" -msgstr "無效的刀具定位" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:403 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:884 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:923 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:934 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:949 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1099 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1102 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1156 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1163 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1166 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2148 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2157 +msgid "**** GMOCCAPY INFO ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3364 -#: src/emc/rs274ngc/interp_convert.cc:3721 -msgid "I J words not allowed with G10 L2" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:404 +msgid "**** no valid probe config in INI File ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3385 -#: src/emc/rs274ngc/interp_convert.cc:3742 -msgid "" -"Cannot change the active coordinate system with cutter radius compensation on" -msgstr "不能改變激活的坐標系當刀具半徑補償在使用" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:405 +msgid "**** disabled tool measurement ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3393 -#: src/emc/rs274ngc/interp_convert.cc:3750 -msgid "R not allowed in G10 L20" -msgstr "R 不容許在 G10 L20" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:770 +msgid "**** GMOCCAPY ERROR : ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3966 -#: src/emc/rs274ngc/interp_convert.cc:4323 -msgid "Spindle not turning in G33" -msgstr "在 G33 主軸不轉動" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:772 +#, python-format +msgid "" +"**** gmoccapy can only handle 4 axis, ****\n" +"**** but you have given %d through your INI file ****\n" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3976 -#: src/emc/rs274ngc/interp_convert.cc:4333 -msgid "Spindle not turning in G33.1" -msgstr "在 G33.1 主軸不轉動" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:774 +msgid "" +"**** gmoccapy will not start ****\n" +"\n" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4019 -#: src/emc/rs274ngc/interp_convert.cc:4376 -msgid "BUG: An axis incorrectly moved along with an indexer" -msgstr "BUG: 一軸錯誤地和索引器一起移動" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:786 +#, fuzzy, python-format +msgid "Home axis %s" +msgstr "歸零 軸 _%s" -#: src/emc/rs274ngc/interp_convert.cc:4032 -#: src/emc/rs274ngc/interp_convert.cc:4389 -msgid "BUG: trying to index incorrect axis" -msgstr "BUG: 試圖指標不正確軸" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:885 +msgid "**** To many increments given in INI File for this screen ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4124 -#: src/emc/rs274ngc/interp_convert.cc:4481 -msgid "Cannot use G76 threading cycle with cutter radius compensation on" -msgstr "不能使用G76螺紋週期當刀具半徑補償在使用" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:886 +msgid "**** Only the first 10 will be reachable through this screen ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4127 -#: src/emc/rs274ngc/interp_convert.cc:4484 -msgid "In G76, I must not be 0" -msgstr "在 G76,I 不能為 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:924 +msgid "**** gmoccapy screen 2 found ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4129 -#: src/emc/rs274ngc/interp_convert.cc:4486 -msgid "In G76, J must be greater than 0" -msgstr "在 G76,J 必須大於 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:929 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1055 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1177 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1225 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1844 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2190 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2200 +msgid "**** GMOCCAPY ERROR ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4131 -#: src/emc/rs274ngc/interp_convert.cc:4488 -msgid "In G76, K must be greater than J" -msgstr "在 G76,K 必須大於 J" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:930 +msgid "**** screen 2 GLADE ERROR: ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4274 -#: src/emc/rs274ngc/interp_convert.cc:4631 -msgid "" -"Length of cutter compensation entry move is not greater than the tool radius" -msgstr "刀具長度補償 進入移動 不大於刀具半徑" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:935 +msgid "**** No gmoccapy2.glade file present ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4493 -#: src/emc/rs274ngc/interp_convert.cc:4850 -msgid "Zero degree inside corner is invalid for cutter compensation" -msgstr "零度內角 是無效的刀具補償" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:950 +msgid "**** Invalid embeded tab configuration ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4531 -#: src/emc/rs274ngc/interp_convert.cc:4539 -#: src/emc/rs274ngc/interp_convert.cc:4888 -#: src/emc/rs274ngc/interp_convert.cc:4896 -msgid "" -"Arc to straight motion makes a corner the compensated tool can't fit in " -"without gouging" -msgstr "弧到直線運動做的角,補償工具不適合會做成刨削槽" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:951 +msgid "**** No tabs will be added! ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4623 -#: src/emc/rs274ngc/interp_convert.cc:4980 -msgid "Cannot change tools with cutter radius compensation on" -msgstr "不能更改工具,刀具半徑補償在使用" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:964 +msgid "ERROR, trying to initialize the user tabs or panaels, check for typos" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4743 -#: src/emc/rs274ngc/interp_convert.cc:5101 -msgid "Cannot change tool offset with cutter radius compensation on" -msgstr "不能改變刀具補償當刀具半徑補償在使用" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1056 +msgid "**** Did not find a toolfile file in [EMCIO] TOOL_TABLE ****" +msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:539 src/emc/rs274ngc/interp_queue.cc:590 -#, c-format -msgid "" -"BUG: cutter compensation has generated an invalid arc with mismatched radii " -"r1 %f r2 %f\n" -msgstr "BUG: 刀具補償產生了一個無效的圓弧半徑不匹配的 r1 %f r2 %f\n" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1100 +msgid "**** audio available! ****" +msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:561 src/emc/rs274ngc/interp_queue.cc:612 -msgid "BUG: Unsupported plane in cutter compensation" -msgstr "BUG: 不支持的平面刀具補償" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1103 +msgid "**** no audio available! ****" +msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:571 src/emc/rs274ngc/interp_queue.cc:622 -msgid "" -"Straight traverse in concave corner cannot be reached by the tool without " -"gouging" -msgstr "直導線在凹角不能達到,會做成刨削槽" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1104 +msgid "**** PYGST libray not installed? ****" +msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:599 src/emc/rs274ngc/interp_queue.cc:650 -#, c-format -msgid "BUG: Unsupported plane [%d] in cutter compensation" -msgstr "BUG: 不支持的平面 [%d] 中的刀具補償" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1157 +msgid "**** virtual keyboard program found : " +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1164 +msgid "**** virtual keyboard program found : " +msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:610 src/emc/rs274ngc/interp_queue.cc:661 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1167 msgid "" -"Straight feed in concave corner cannot be reached by the tool without gouging" -msgstr "在凹角直進給不能達到,會做成刨削槽" +"**** No virtual keyboard installed, we checked for and ." +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:628 -msgid "Cannot feed with zero feed rate" -msgstr "不能進給當進給速率為零" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1178 +msgid "**** Error with launching virtual keyboard," +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:629 -msgid "Cannot use inverse time feed with canned cycles" -msgstr "不能用反時限進給 當使用固定循環" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1179 +msgid "**** is onboard or matchbox-keyboard installed? ****" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:630 -msgid "Cannot use canned cycles with cutter compensation on" -msgstr "不能用固定循環當刀具補償在使用中" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1193 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1875 +msgid "interrupt running macro" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:818 -msgid "G17 canned cycle is not possible on a machine without Z axis" -msgstr "G17 固定循環是不可能的,機器上沒有 Z 軸" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1226 +msgid "**** Did not find a parameter file in [RS274NGC] PARAMETER_FILE ****" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1001 -#: src/emc/rs274ngc/interp_cycles.cc:1004 -msgid "G17.1 canned cycle is not possible on a machine without W axis" -msgstr "G17.1 固定循環是不可能的機器上沒有 W 軸" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1294 +msgid "Select the file you want to be loaded at program start" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1217 -#: src/emc/rs274ngc/interp_cycles.cc:1220 -msgid "G19 canned cycle is not possible on a machine without X axis" -msgstr "G19 固定循環是不可能的機器上沒有 X 軸" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1329 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1353 +#, python-format +msgid "**** GMOCCAPY ERROR **** /n Message type %s not suported" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1385 -#: src/emc/rs274ngc/interp_cycles.cc:1388 -msgid "G19.1 canned cycle is not possible on a machine without U axis" -msgstr "G19.1 固定循環是不可能的機器上沒有 U 軸" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1462 +msgid "Unknown error type and no error text given" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1610 -#: src/emc/rs274ngc/interp_cycles.cc:1613 -msgid "G18 canned cycle is not possible on a machine without Y axis" -msgstr "G18 固定循環是不可能的機器上沒有 Y 軸" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1478 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1840 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1847 +msgid "Important Warning" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1777 -#: src/emc/rs274ngc/interp_cycles.cc:1780 -msgid "G18.1 canned cycle is not possible on a machine without V axis" -msgstr "G18.1 固定循環是不可能的機器上沒有 V 軸" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1498 +msgid "ERROR : External ESTOP is set, could not change state!" +msgstr "" -#: src/emc/rs274ngc/interp_find.cc:170 -msgid "Cannot use polar coordinates with G53" -msgstr "不能用極坐標使用 G53" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1511 +msgid "ERROR : Could not switch the machine on, is limit switch aktivated?" +msgstr "" -#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 -#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 -#: src/emc/rs274ngc/interp_find.cc:347 -msgid "Cannot specify X or Y words with polar coordinate" -msgstr "無法指定X或Y字當使用極坐標" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1730 +msgid "It is not possible to change to MDI Mode at the moment" +msgstr "" -#: src/emc/rs274ngc/interp_find.cc:272 -msgid "Must specify angle in polar coordinate if at the origin" -msgstr "必須指定角度在極坐標如過在原點" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1754 +msgid "It is not possible to change to Auto Mode at the moment" +msgstr "" -#: src/emc/rs274ngc/interp_find.cc:338 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1838 msgid "" -"Incremental motion with polar coordinates is indeterminate when at the origin" -msgstr "增量運動使用極坐標是不確定的,當在原點" - -#: src/emc/rs274ngc/interp_find.cc:348 -msgid "G91 motion with polar coordinates is indeterminate when at the origin" -msgstr "G91運動使用極坐標是不確定的,當在原點" - -#: src/emc/rs274ngc/interp_find.cc:720 -#, c-format -msgid "Requested tool %d not found in the tool table" -msgstr "請求工具 %d 刀具表找不到" +"\n" +"**** No subroutine folder or program prefix is given in the ini file **** \n" +msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:151 -#: src/emc/rs274ngc/interp_internal.cc:154 -msgid "Cannot use polar coordinate on a machine lacking X or Y axes" -msgstr "不能用極坐標的機器上沒有 X或Y軸" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1839 +msgid "**** so the corresponding file could not be found ****" +msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:152 -#: src/emc/rs274ngc/interp_internal.cc:155 -msgid "Cannot use polar coordinate except in G17 plane" -msgstr "不能使用極坐標除在G17平面" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1845 +#, python-format +msgid "" +"\n" +"**** File %s of the macro could not be found ****\n" +msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:153 -#: src/emc/rs274ngc/interp_internal.cc:156 -msgid "Cannot specify both polar coordinate and X word" -msgstr "不能同時指定極坐標和 X 字" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1846 +#, python-format +msgid "**** we searched in subdirectory %s ****" +msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:154 -#: src/emc/rs274ngc/interp_internal.cc:157 -msgid "Cannot specify both polar coordinate and Y word" -msgstr "不能同時指定極坐標和 Y 字" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1851 +msgid "Enter value:" +msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:175 -#: src/emc/rs274ngc/interp_internal.cc:187 -#: src/emc/rs274ngc/interp_internal.cc:200 -#: src/emc/rs274ngc/interp_internal.cc:178 -#: src/emc/rs274ngc/interp_internal.cc:190 -#: src/emc/rs274ngc/interp_internal.cc:203 -msgid "Polar coordinates can only be used for motion" -msgstr "極坐標只能用於運動" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1852 +#, fuzzy, python-format +msgid "Set parameter %s to:" +msgstr "還沒有任何參數" -#: src/emc/rs274ngc/interp_read.cc:1112 src/emc/rs274ngc/interp_read.cc:1116 -#: src/emc/rs274ngc/interp_read.cc:1143 src/emc/rs274ngc/interp_read.cc:1147 -#, c-format -msgid "Bad character '\\%03o' used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1854 +msgid "conversion error" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1116 src/emc/rs274ngc/interp_read.cc:1147 -#, c-format -msgid "Bad character '%c' used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1855 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3610 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3634 +msgid "Conversion error !" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1623 src/emc/rs274ngc/interp_read.cc:1671 -msgid "Left bracket missing after 'while'" -msgstr "'while' 後丟失左括號" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1856 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3299 +msgid "" +"Please enter only numerical values\n" +"Values have not been applied" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1638 src/emc/rs274ngc/interp_read.cc:1686 -msgid "Left bracket missing after 'repeat'" -msgstr "'repeat' 後丟失左括號" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2149 +#, python-brace-format +msgid "**** replaced {0} to {1} ****" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1653 src/emc/rs274ngc/interp_read.cc:1701 -msgid "Left bracket missing after 'if'" -msgstr "'if' 後丟失左括號" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2158 +msgid "" +"\n" +"**** found more than 9 macros, only the first 9 will be used ****" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1668 src/emc/rs274ngc/interp_read.cc:1716 -msgid "Left bracket missing after 'elseif'" -msgstr "'elseif' 後丟失左括號" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2191 +#, python-format +msgid "**** %s ****" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1858 -#, c-format -msgid "Cannot change #<%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2201 +#, python-format +msgid "**** No widget named: %s to sensitize ****" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1889 src/emc/rs274ngc/interp_read.cc:1932 -#: src/emc/rs274ngc/interp_namedparams.cc:370 -#, c-format -msgid "Internal error: Could not assign #<%s>" -msgstr "內部錯誤:無法指派 #<%S>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2366 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1561 +msgid "No tool description available" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1906 -#, c-format -msgid "init_named_parameter must be global #<%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2591 +#, python-format +msgid "Halo, welcome to the test message %d" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2093 -#: src/emc/rs274ngc/interp_namedparams.cc:161 -#, c-format -msgid "Named parameter #<%s> not defined" -msgstr "命名參數 #<%s> 沒有定義" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2732 +msgid "Hal Pin is low, Access denied" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2174 src/emc/rs274ngc/interp_read.cc:1919 -msgid "Cannot read current position with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2734 +msgid "wrong code entered, Access denied" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2189 src/emc/rs274ngc/interp_read.cc:1934 -msgid "Expected # reading parameter" -msgstr "預計 # 讀參數" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2735 +msgid "Just to warn you" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2191 src/emc/rs274ngc/interp_read.cc:1936 -msgid "Expected ] reading bracketed parameter" -msgstr "預期 ] 讀方括號內的參數" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2810 +msgid "ERROR : No limit switch is active, ignore limits will not be set." +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2881 src/emc/rs274ngc/interp_read.cc:2608 -#, c-format -msgid "bad number format (conversion failed) parsing '%s'" -msgstr "不良數字格式 (轉換失敗) 解析 '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2850 +#, fuzzy +msgid "Classicladder real-time component not detected" +msgstr "實時元件沒有加載" -#: src/emc/rs274ngc/interp_read.cc:2882 src/emc/rs274ngc/interp_read.cc:2609 -#, c-format -msgid "bad number format (trailing characters) parsing '%s'" -msgstr "不良數字格式 (尾隨字符) 解析 '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2937 +msgid "Something went wrong, we have an unknown spindle widget" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2972 src/emc/rs274ngc/interp_read.cc:2699 -msgid "Calculation resulted in 'not a number'" -msgstr "計算結果 'not a number'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3046 +msgid "Do you really want to delete the MDI history?\n" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2974 src/emc/rs274ngc/interp_read.cc:2701 -msgid "Calculation resulted in 'infinity'" -msgstr "計算結果 'infinity'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3047 +msgid "this will not delete the MDI History file, but will\n" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3268 src/emc/rs274ngc/interp_read.cc:2994 -#, c-format -msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3048 +msgid "delete the listbox entries for this session" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3391 src/emc/rs274ngc/interp_read.cc:3106 -msgid "Multiple U words on one line" -msgstr "多個 U 字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3049 +msgid "Attention!!" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3407 src/emc/rs274ngc/interp_read.cc:3122 -msgid "Multiple V words on one line" -msgstr "多個 V 字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3076 +msgid "This button will show or hide the keyboard" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3423 src/emc/rs274ngc/interp_read.cc:3138 -msgid "Multiple W words on one line" -msgstr "多個 W 字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3196 +#, python-format +msgid "Offset %s could not be set, because off unknown axis" +msgstr "" -#: src/emc/rs274ngc/interp_o_word.cc:104 src/emc/rs274ngc/interp_o_word.cc:95 -#, c-format -msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3197 +msgid "Wrong offset setting!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_pre.cc:897 src/emc/rs274ngc/rs274ngc_pre.cc:1269 -#: src/emc/rs274ngc/rs274ngc_pre.cc:1344 -msgid "Queue is not empty after tool change" -msgstr "換刀後隊列不空" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3202 +#, fuzzy +msgid "Enter value for diameter" +msgstr "非整數值對整數" -#: src/emc/rs274ngc/rs274ngc_pre.cc:1145 src/emc/rs274ngc/rs274ngc_pre.cc:1648 -#, c-format -msgid "Unable to open parameter file: '%s'" -msgstr "無法打開參數文件: '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3203 +#, fuzzy +msgid "Set diameter to:" +msgstr " 直徑" -#: src/emc/rs274ngc/rs274ngc_return.hh:4 -msgid "A file is already open" -msgstr "一個文件已經打開" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3206 +#, fuzzy +msgid "Enter value for radius" +msgstr "非整數值對整數" -#: src/emc/rs274ngc/rs274ngc_return.hh:5 -msgid "All axes missing with g92" -msgstr "所有軸缺少使用 G92" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3207 +#, fuzzy +msgid "Set radius to:" +msgstr " 半徑" -#: src/emc/rs274ngc/rs274ngc_return.hh:6 -msgid "All axes missing with motion code" -msgstr "所有軸缺少運動代碼" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3210 +#, fuzzy, python-format +msgid "Enter value for axis %s" +msgstr "非整數值對整數" -#: src/emc/rs274ngc/rs274ngc_return.hh:7 -msgid "Arc radius too small to reach end point" -msgstr "圓弧半徑太小,無法達到終點" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3211 +#, fuzzy, python-format +msgid "Set axis %s to:" +msgstr "設定軸 偏移量:" -#: src/emc/rs274ngc/rs274ngc_return.hh:8 -msgid "Argument to acos out of range" -msgstr "acos 參數超出範圍" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3215 +msgid "Conversion error in btn_set_value" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:9 -msgid "Argument to asin out of range" -msgstr "asin 參數超出範圍" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3216 +msgid "Conversion error in btn_set_value!" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:10 -msgid "Attempt to divide by zero" -msgstr "嘗試除以零" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3217 +msgid "Please enter only numerical values. Values have not been applied" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:11 -msgid "Attempt to raise negative to non integer power" -msgstr "試圖提高負對非整數冪" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3232 +msgid "" +"you did not selected a system to be changed to, so nothing will be changed" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:12 -msgid "Bad format unsigned integer" -msgstr "壞格式無符號整數" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3640 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3654 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3658 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3673 +msgid "Important Warning!" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:13 -msgid "Bad number format" -msgstr "錯誤的數字格式" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3284 +msgid "Enter the block height" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:14 -msgid "Bug bad g code modal group 0" -msgstr "錯誤: 不良 g 代碼模式組 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3285 +msgid "Block height measured from base table" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:15 -msgid "Bug code not g0 or g1" -msgstr "錯誤: 代碼不 g0 或 g1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3297 +msgid "Conversion error in btn_block_height" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:16 -msgid "Bug code not g17 g18 or g19" -msgstr "錯誤: 代碼不是 g17 g18或 g19" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3298 +msgid "Conversion error in btn_block_height!" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:17 -msgid "Bug code not g20 or g21" -msgstr "錯誤: 代碼不是 g20 或 g21" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3536 +msgid "Please remove the mounted tool and press OK when done" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:18 -msgid "Bug code not g28 or g30" -msgstr "錯誤: 代碼不是 g28 或g30" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3539 +#, python-brace-format +msgid "" +"Please change to tool\n" +"\n" +"# {0:d} {1}\n" +"\n" +" then click OK." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:19 -msgid "Bug code not g2 or g3" -msgstr "錯誤: 代碼不是 g2 或 g3" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3549 +msgid "Tool Change has been aborted!\n" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:20 -msgid "Bug code not g4 g10 g28 g30 g53 or g92 series" -msgstr "錯誤: 代碼 g10 g28 g30 不是 g4 g53 或 g92系列" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3550 +msgid "The old tool will remain set!" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:21 -msgid "Bug code not g61 g61.1 or g64" -msgstr "錯誤: 代碼不是 g61或 g64 g61.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3570 +msgid "No or more than one tool selected in tool table" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:22 -msgid "Bug code not g90 or g91" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3571 +msgid "Please select only one tool in the table" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:23 -msgid "Bug code not g98 or g99" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3573 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3580 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3589 +msgid "Warning Tool Touch off not possible!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:24 -msgid "Bug code not in g92 series" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3577 +msgid "you can not touch of a tool, witch is not mounted in the spindle" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:25 -msgid "Bug code not in range g54 to g593" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3578 +msgid "your selection has been reseted to the tool in spindle" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:26 -msgid "Bug code not m0 m1 m2 m30 m60" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3586 +#, fuzzy +msgid "" +"Tool touch off is not possible with cutter radius compensation switched on!\n" +msgstr "不能改變刀具補償當刀具半徑補償在使用" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3587 +msgid "Please emit an G40 before tool touch off" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:27 -msgid "Bug distance mode not g90 or g91" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3597 +msgid "Real big error!" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:28 -msgid "Bug function should not have been called" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3598 +msgid "" +"You managed to come to a place that is not possible in on_btn_tool_touchoff" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:29 -msgid "Bug in tool radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3602 +#, fuzzy, python-format +msgid "Enter value for axis %s to set:" +msgstr "非整數值對整數" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3603 +#, python-brace-format +msgid "Set parameter of tool {0:d} and axis {1} to:" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:30 -msgid "Bug plane not xy yz or xz" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3608 +#, python-format +msgid "Conversion error because of wrong entry for touch off axis %s" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:31 -msgid "Bug side not right or left" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3628 +msgid "Enter the tool number as integer " msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:32 -msgid "Bug unknown motion code" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3629 +#, fuzzy +msgid "Select the tool to change" +msgstr "選擇項目 以探測" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3631 +msgid "Conversion error because of wrong entry for tool number\n" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:33 -msgid "Bug unknown operation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3632 +msgid "enter only integer nummbers" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:34 -msgid "Cannot change axis offsets with cutter radius comp" -msgstr "軸向的偏置" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3657 +msgid "Selected tool is already in spindle, no change needed." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:35 -msgid "Cannot create backup file" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3653 +msgid "" +"you selected no or more than one tool, the tool selection must be unique" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:36 -msgid "Cannot do g1 with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3672 +msgid "Could not understand the entered tool number. Will not change anything" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:37 -msgid "Cannot do zero repeats of cycle" +#: src/emc/usr_intf/gmoccapy/dialogs.py:33 +#: src/emc/usr_intf/gmoccapy/dialogs.py:38 +msgid "Enter System Unlock Code" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:38 -msgid "Cannot make arc with zero feed rate" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter value" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:39 -msgid "Cannot open backup file" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter the value to set" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:40 -msgid "Cannot open variable file" +#: src/emc/usr_intf/gmoccapy/notification.py:205 +#, python-format +msgid "Error trying to delet the message with number %s" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:41 -msgid "Cannot probe with cutter radius comp on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:409 +msgid "left rotate, middle move, right zoom" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:42 -msgid "Cannot probe with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:413 +msgid "left zoom, middle move, right rotate" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:43 -msgid "Cannot put a b in canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:417 +msgid "left move, middle rotate, right zoom" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:44 -msgid "Cannot put a c in canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:421 +msgid "left zoom, middle rotate, right move" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:45 -msgid "Cannot put an a in canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:425 +msgid "left move, middle zoom, right rotate" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:46 -msgid "Cannot turn cutter radius comp on when on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:429 +msgid "left rotate, middle zoom, right move" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:47 -msgid "Cannot use axis values with g80" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:526 +#, fuzzy +msgid "clear plot" +msgstr "清除 現場 繪圖" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:585 +#, fuzzy +msgid "view perspective" +msgstr "透視 視圖" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:608 +msgid "view along the X axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:48 -msgid "Cannot use axis values without a g code that uses them" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:633 +msgid "view along the Y axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:49 -msgid "Cannot use g28 or g30 with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:658 +msgid "view along the Z axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:50 -msgid "Cannot use g53 incremental" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:685 +msgid "Show or hide tool path" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:51 -msgid "Cannot use g53 with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:708 +msgid "Show or hide dimensions" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:52 -msgid "Cannot use two g codes that both use axis values" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:731 +msgid "" +"view along the Y axis from positive to negative as viewn for a back tool " +"lathe" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:53 -msgid "Command too long" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:791 +#, fuzzy +msgid "Offset Page" +msgstr "偏移 值 " + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:809 +#, fuzzy +msgid "Tooledit" +msgstr "刀具" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:831 +msgid "File Selection" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:54 -msgid "Current point same as end point of arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:869 +#, fuzzy +msgid "Toggle between metric and imperial units" +msgstr "切換 拖動 和 旋轉 模式" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:887 +msgid "Switch DRO to DTG mode" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:55 -msgid "Dwell time missing with g4" -msgstr "停留時間缺少使用 G4 " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:905 +#, fuzzy +msgid "Toggle between machine and relative coordinates" +msgstr "切換 拖動 和 旋轉 模式" -#: src/emc/rs274ngc/rs274ngc_return.hh:56 -msgid "Dwell time p word missing with g82" -msgstr "停留時間 P字樣缺少使用 G82" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:928 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:946 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:963 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:980 +msgid "Klick to toggle through the DRO modes" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:57 -msgid "Dwell time p word missing with g86" -msgstr "停留時間 P字樣缺少使用 G86" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1253 +#, fuzzy +msgid "Ignore limits" +msgstr "超速 極限" -#: src/emc/rs274ngc/rs274ngc_return.hh:58 -msgid "Dwell time p word missing with g88" -msgstr "停留時間 P字樣缺少使用 G88" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1321 +#, fuzzy +msgid "Jogging" +msgstr "歸零" -#: src/emc/rs274ngc/rs274ngc_return.hh:59 -msgid "Dwell time p word missing with g89" -msgstr "停留時間 P字樣缺少使用 G89" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1430 +msgid "Information over the tool in spindle" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:60 -msgid "Equal sign missing in parameter setting" -msgstr "參數 設置 缺少 等號" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1448 +#, fuzzy +msgid "Tool no." +msgstr "刀具訊息" -#: src/emc/rs274ngc/rs274ngc_return.hh:61 -msgid "F word missing with inverse time arc move" -msgstr "反時限 圓弧 移動 缺少 F字" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1474 +#, fuzzy +msgid "Diameter" +msgstr " 直徑" -#: src/emc/rs274ngc/rs274ngc_return.hh:62 -msgid "F word missing with inverse time g1 move" -msgstr "反時限 G1 移動 缺少 F字" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1503 +#, fuzzy +msgid "offset z" +msgstr "偏移" -#: src/emc/rs274ngc/rs274ngc_return.hh:63 -msgid "File ended with no percent sign" -msgstr "文件結束時沒有%符號" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1532 +#, fuzzy +msgid "offset x" +msgstr "偏移" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1580 +#, fuzzy +msgid "Tool information" +msgstr "配置" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1592 +msgid "G and M code information as well as speed and feed" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1611 +#, fuzzy +msgid "active_mcodes_label" +msgstr "代碼中使用負值m" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1663 +#, fuzzy +msgid "active_gcodes_label" +msgstr "代碼中使用負值g" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1717 +#, fuzzy +msgid "G-Code" +msgstr "電源" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1730 +msgid "The name and location of the loaded program" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1742 +#, fuzzy +msgid "No Program loaded" +msgstr "程序檔案" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1750 +#, fuzzy +msgid "Program" +msgstr "電源" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1800 +msgid "Vel." +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1814 +msgid "Displays the current velocity" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1838 +msgid "adjust max vel of machine" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1854 +#, fuzzy +msgid "Max. Velocity" +msgstr "外部 進給 超速" -#: src/emc/rs274ngc/rs274ngc_return.hh:64 -msgid "File ended with no percent sign or program end" -msgstr "文件結束時沒有%或程序結束" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1885 +msgid "Displayes the programmed feed rate" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:65 -msgid "File name too long" -msgstr "文件名太長" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1904 +#, fuzzy +msgid "reset feed override to 100 %" +msgstr "進給 超速設為從 0% 至 100%" -#: src/emc/rs274ngc/rs274ngc_return.hh:66 -msgid "G code out of range" -msgstr "G代碼超出範圍" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1922 +#, fuzzy +msgid "adjust feed override" +msgstr "設定 超速調整:" -#: src/emc/rs274ngc/rs274ngc_return.hh:67 -msgid "I word given for arc in yz plane" -msgstr "I字給予弧YZ平面" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1941 +#, fuzzy +msgid "Feed Override [%]" +msgstr "外部 進給 超速" -#: src/emc/rs274ngc/rs274ngc_return.hh:68 -msgid "I word missing with g87" -msgstr "G87 缺少 I字" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2034 +#, fuzzy +msgid "Cooling" +msgstr "冷卻液" -#: src/emc/rs274ngc/rs274ngc_return.hh:69 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2285 #, fuzzy -msgid "J word given for arc in xz plane" -msgstr "I字給予弧YZ平面" +msgid "Spindle [rpm]" +msgstr "主軸" -#: src/emc/rs274ngc/rs274ngc_return.hh:70 -msgid "J word missing with g87" -msgstr "J字缺少使用 G87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2377 +msgid "" +"Search\n" +" back" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:71 -msgid "K word given for arc in xy plane" -msgstr "K字給予弧XY平面" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2394 +msgid "" +"Search\n" +" fwd" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:72 -msgid "K word missing with g87" -msgstr "K字缺少使用 G87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2446 +#, fuzzy +msgid "" +"Replace\n" +" Text:" +msgstr "替換:" -#: src/emc/rs274ngc/rs274ngc_return.hh:73 -msgid "Left bracket missing after slash with atan" -msgstr "左括號後丟失斜線使用 atan" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2456 +#, fuzzy +msgid "" +"Replace\n" +" All" +msgstr "全部替換" -#: src/emc/rs274ngc/rs274ngc_return.hh:74 -msgid "Left bracket missing after unary operation name" -msgstr "左括號後丟失一元運算操作的名稱" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2470 +msgid "" +"Ignore\n" +" Case" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:75 -msgid "M code greater than 199" -msgstr "M代碼大於199" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2616 +msgid "Start as fullscreen" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:76 -msgid "Mixed radius ijk format for arc" -msgstr "混合半徑 ijk 格式圓弧" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2631 +msgid "Start maximized" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:77 -msgid "Multiple a words on one line" -msgstr "多個 a字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2646 +msgid "Start as window" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:78 -msgid "Multiple b words on one line" -msgstr "多個 b字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2670 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4426 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4943 +#, fuzzy +msgid "X Pos." +msgstr "位置" -#: src/emc/rs274ngc/rs274ngc_return.hh:79 -msgid "Multiple c words on one line" -msgstr "多個 c字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2683 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4437 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4928 +#, fuzzy +msgid "Y Pos." +msgstr "位置" -#: src/emc/rs274ngc/rs274ngc_return.hh:80 -msgid "Multiple d words on one line" -msgstr "多個 d字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2698 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4855 +msgid "Width" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:81 -msgid "Multiple f words on one line" -msgstr "多個 f字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2713 +msgid "Height" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:82 -msgid "Multiple h words on one line" -msgstr "多個 h字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2811 +msgid "hide cursor" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:83 -msgid "Multiple i words on one line" -msgstr "多個 i字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2830 +#, fuzzy +msgid "Main Window" +msgstr "機器 基本" -#: src/emc/rs274ngc/rs274ngc_return.hh:84 -msgid "Multiple j words on one line" -msgstr "多個 j字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2857 +#, fuzzy +msgid "Show keyboard on offset" +msgstr "顯示 偏移量(_f)" -#: src/emc/rs274ngc/rs274ngc_return.hh:85 -msgid "Multiple k words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2871 +msgid "Show keyboard on tooledit" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:86 -msgid "Multiple l words on one line" -msgstr "多個 l字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2885 +msgid "Show keyboard on MDI" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:87 -msgid "Multiple p words on one line" -msgstr "多個 p字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2899 +msgid "Show keyboard on EDIT" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:88 -msgid "Multiple q words on one line" -msgstr "多個 q字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2913 +msgid "Show keyboard on load file" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:89 -msgid "Multiple r words on one line" -msgstr "多個 r字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2931 +#, fuzzy +msgid "Keyboard" +msgstr "電源" -#: src/emc/rs274ngc/rs274ngc_return.hh:90 -msgid "Multiple s words on one line" -msgstr "多個 s字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2959 +#, fuzzy +msgid "show preview" +msgstr "預演" -#: src/emc/rs274ngc/rs274ngc_return.hh:91 -msgid "Multiple t words on one line" -msgstr "多個 t字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2973 +#, fuzzy +msgid "show offsets" +msgstr "顯示 偏移量(_f)" -#: src/emc/rs274ngc/rs274ngc_return.hh:92 -msgid "Multiple x words on one line" -msgstr "多個 x字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2991 +msgid "On Touch off" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:93 -msgid "Multiple y words on one line" -msgstr "多個 y字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3005 +msgid "" +" Display \n" +"Aux Screen" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:94 -msgid "Multiple z words on one line" -msgstr "多個 z字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3052 +#, fuzzy +msgid "Relative Color" +msgstr "相對位置" -#: src/emc/rs274ngc/rs274ngc_return.hh:95 -msgid "Must use g0 or g1 with g53" -msgstr "必須使用G0或G1使用 G53" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3079 +#, fuzzy +msgid "Absolute Color" +msgstr "絕對反饋" -#: src/emc/rs274ngc/rs274ngc_return.hh:96 -msgid "Negative argument to sqrt" -msgstr "負值參數 sqrt" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3110 +msgid "DTG Color" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:97 -msgid "Negative d word tool radius index used" -msgstr "負值 D字刀具半徑在使用指數" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3139 +msgid "Use Auto Units" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:98 -msgid "Negative f word used" -msgstr "代碼中使用負值" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3159 +msgid "Show the DRO Button" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:99 -msgid "Negative g code used" -msgstr "代碼中使用負值g" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3190 +#, fuzzy +msgid "Homed color" +msgstr "全部 歸零" -#: src/emc/rs274ngc/rs274ngc_return.hh:100 -msgid "Negative h word used" -msgstr "代碼中使用負值h" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3204 +#, fuzzy +msgid "Unhomed color" +msgstr "離零" -#: src/emc/rs274ngc/rs274ngc_return.hh:101 -msgid "Negative l word used" -msgstr "代碼中使用負值l" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3299 +msgid "Digits" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:102 -msgid "Negative m code used" -msgstr "代碼中使用負值m" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3344 +msgid "" +"toggle DRO mode \n" +"clicking on the DRO" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:103 -msgid "Negative or zero q value used" -msgstr "負值或零在使用q值" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3369 +#, fuzzy +msgid "DRO" +msgstr "電源" -#: src/emc/rs274ngc/rs274ngc_return.hh:104 -msgid "Negative p word used" -msgstr "負 P 字在使用" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3401 +#, fuzzy +msgid "Grid size" +msgstr "大小" -#: src/emc/rs274ngc/rs274ngc_return.hh:105 -msgid "Negative spindle speed used" -msgstr "在使用主軸轉速負值" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3430 +#, fuzzy +msgid "Show DRO" +msgstr "展示" -#: src/emc/rs274ngc/rs274ngc_return.hh:106 -msgid "Negative tool id used" -msgstr "負ID的刀具" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3444 +#, fuzzy +msgid "Show offsets" +msgstr "顯示 偏移量(_f)" -#: src/emc/rs274ngc/rs274ngc_return.hh:107 -msgid "Nested comment found" -msgstr "找到巢狀評論" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3458 +#, fuzzy +msgid "Show DTG" +msgstr "展示" -#: src/emc/rs274ngc/rs274ngc_return.hh:108 -msgid "No characters found in reading real value" -msgstr "無字找到在閱讀真正的價值" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3483 +#, fuzzy +msgid "Mouse Button mode" +msgstr "外部 按鈕 慢步" -#: src/emc/rs274ngc/rs274ngc_return.hh:109 -msgid "Non integer value for integer" -msgstr "非整數值對整數" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3512 +#, fuzzy +msgid "Preview" +msgstr "電源" -#: src/emc/rs274ngc/rs274ngc_return.hh:110 -msgid "Null missing after newline" -msgstr "空後丟失換行符" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3565 +#, fuzzy +msgid "" +"current\n" +" file" +msgstr "重新打開 當前 文件 [Control-R]" -#: src/emc/rs274ngc/rs274ngc_return.hh:111 -msgid "Parameter file out of order" -msgstr "參數文件不按順序" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3611 +msgid "File to load on start" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:112 -msgid "Parameter number out of range" -msgstr "參數號超出範圍" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3638 +#, fuzzy +msgid "Select user dir" +msgstr "選擇 慢步 速度" -#: src/emc/rs274ngc/rs274ngc_return.hh:113 -msgid "Parameter is readonly" -msgstr "參數是只讀" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3647 +#, fuzzy +msgid "Select jump to dir" +msgstr "選擇項目 以探測" -#: src/emc/rs274ngc/rs274ngc_return.hh:114 -msgid "Q word missing with g83" -msgstr "Q缺少字使用 G83" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3767 +msgid "Themes and sound" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:115 -msgid "Queue is not empty after probing" -msgstr "隊列不是空的在探測後" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3799 +msgid "Appearance" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:116 -msgid "R clearance plane unspecified in cycle" -msgstr "R間隙平面未指定的週期" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3833 +#, fuzzy +msgid "Scale max velocity" +msgstr "最 大 線 性 速 度" -#: src/emc/rs274ngc/rs274ngc_return.hh:117 -msgid "R i j k words all missing for arc" -msgstr "R i j k 字 都缺少的弧" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3846 +#, fuzzy +msgid "Scale jog velocity" +msgstr "顯示 速率(_e)" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3861 +#, fuzzy +msgid "Scale feed override" +msgstr "設定 超速調整:" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3876 +#, fuzzy +msgid "Scale spindle override" +msgstr "設定 主軸超速" -#: src/emc/rs274ngc/rs274ngc_return.hh:118 -msgid "R less than x in cycle in yz plane" -msgstr "R小於 x的週期在 XZ平面" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3970 +#, fuzzy +msgid "Hardware MPG Scale" +msgstr "步進馬達比例" -#: src/emc/rs274ngc/rs274ngc_return.hh:119 -msgid "R less than y in cycle in xz plane" -msgstr "R小於 Y的週期在 XZ平面" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3994 +msgid "Use keyboard shortcuts" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:120 -msgid "R less than z in cycle in xy plane" -msgstr "R小於 z的週期在xy平面" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4007 +msgid "Keyboard shortcuts" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:121 -msgid "R word with no g code that uses it" -msgstr "R字沒有G代碼使用它的" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4034 +#, fuzzy +msgid "Use unlock code" +msgstr "未使用的編碼器" -#: src/emc/rs274ngc/rs274ngc_return.hh:122 -msgid "Slash missing after first atan argument" -msgstr "反斜杠缺少在首次atan說法" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4050 +msgid "Do not use unlock code" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:123 -msgid "Spindle not turning clockwise in g84" -msgstr "主軸不轉順時針 G84" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4066 +msgid "Use hal pin to unlock" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:124 -msgid "Spindle not turning in g86" -msgstr "在G86主軸不轉" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4087 +#, fuzzy +msgid "Unlock settings" +msgstr "歸零" -#: src/emc/rs274ngc/rs274ngc_return.hh:125 -msgid "Spindle not turning in g87" -msgstr "在G87主軸不轉" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4197 +#, fuzzy +msgid "Spindle bar min" +msgstr "主軸 剎車 開" -#: src/emc/rs274ngc/rs274ngc_return.hh:126 -msgid "Spindle not turning in g88" -msgstr "在G88主軸不轉" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4210 +#, fuzzy +msgid "Spindle bar max" +msgstr "主軸 剎車 開" -#: src/emc/rs274ngc/rs274ngc_return.hh:127 -msgid "Sscanf failed" -msgstr "sscanf函數失敗" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4252 +msgid "Hide turtle Jog Button" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:128 -msgid "Start point too close to probe point" -msgstr "起點過於接近探測點" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4282 +msgid "Turtle jog Factor" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:129 -msgid "Too many m codes on line" -msgstr "太多的M代碼在線" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4318 +#, fuzzy +msgid "Turtle Jog" +msgstr " 前 台 " -#: src/emc/rs274ngc/rs274ngc_return.hh:130 -msgid "Pocket max too large" -msgstr "型腔最大值過大" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4360 +msgid "Hardware" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:131 -msgid "Tool radius not less than arc radius with comp" -msgstr "刀具半徑不小於圓弧半徑使用補償" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4392 +msgid "Use auto tool measurement" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:132 -msgid "Two g codes used from same modal group" -msgstr "兩個 G 代碼用於從同一模式組" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4450 +msgid "Probe Height" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:133 -msgid "Two m codes used from same modal group" -msgstr "兩個 M 代碼在使用同一 模式組" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4485 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4498 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4527 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4556 +msgid "0.000" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:134 -#, c-format -msgid "Unable to open file <%s>" -msgstr "無法打開文件 <%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4514 +#, fuzzy +msgid "Z Pos." +msgstr "位置" -#: src/emc/rs274ngc/rs274ngc_return.hh:135 -msgid "Unclosed comment found" -msgstr "未封閉的評論發現" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4543 +msgid "Max. Probe" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:136 -msgid "Unclosed expression" -msgstr "未封閉表達式" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4575 +#, fuzzy +msgid "Probe Informations" +msgstr "配置" -#: src/emc/rs274ngc/rs274ngc_return.hh:137 -msgid "Unknown g code used" -msgstr "未知的G代碼在使用" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4607 +#, fuzzy +msgid "Search Vel." +msgstr "零點搜索速率:" -#: src/emc/rs274ngc/rs274ngc_return.hh:138 -msgid "Unknown m code used" -msgstr "未知的M代碼在使用" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4618 +msgid "Probe Vel." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:139 -msgid "Unknown operation" -msgstr "未知操作" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4674 +#, fuzzy +msgid "Probe velocitys" +msgstr "GUI前台列表" -#: src/emc/rs274ngc/rs274ngc_return.hh:140 -msgid "Unknown operation name starting with a" -msgstr "未知操作名稱開始帶 a" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4688 +msgid "" +"No valid configuration\n" +"found in your INI file,\n" +"please take a look at \n" +"the WIKI to check how\n" +"to configure the settings." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:141 -msgid "Unknown operation name starting with m" -msgstr "未知操作名稱開始帶 m" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4708 +#, fuzzy +msgid "Tool Measurement" +msgstr "冷卻液" -#: src/emc/rs274ngc/rs274ngc_return.hh:142 -msgid "Unknown operation name starting with o" -msgstr "未知操作名稱開始帶 o" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4737 +msgid "" +"If the 4'th axis is used\n" +"for a tool changer, you\n" +"hide the DRO and\n" +"jog buttons." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:143 -msgid "Unknown operation name starting with x" -msgstr "未知操作名稱開始帶 x" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4749 +#, fuzzy +msgid "Hide 4'th axis" +msgstr "激活 第三軸" -#: src/emc/rs274ngc/rs274ngc_return.hh:144 -msgid "Unknown word starting with a" -msgstr "未知字開始帶 a" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4769 +#, fuzzy +msgid "Tool Changer" +msgstr "冷卻液" -#: src/emc/rs274ngc/rs274ngc_return.hh:145 -msgid "Unknown word starting with c" -msgstr "未知字開始帶 c" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4808 +msgid "Use frames" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:146 -msgid "Unknown word starting with e" -msgstr "未知字開始帶 " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4840 +msgid "max." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:147 -msgid "Unknown word starting with f" -msgstr "未知字開始帶 f" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4992 +#, fuzzy +msgid "Launch test message" +msgstr "啟動測試面板" -#: src/emc/rs274ngc/rs274ngc_return.hh:148 -msgid "Unknown word starting with l" -msgstr "未知字開始帶 l" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5011 +msgid "" +" gmoccapy message\n" +" behavior and appearance " +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:149 -msgid "Unknown word starting with r" -msgstr "未知字開始帶 r" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5049 +msgid "Do not use run from line" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:150 -msgid "Unknown word starting with s" -msgstr "未知字開始帶 s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5065 +#, fuzzy +msgid "Use run from line" +msgstr "運行選定的行(_n)" -#: src/emc/rs274ngc/rs274ngc_return.hh:151 -msgid "Unknown word starting with t" -msgstr "未知字開始帶 t" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5086 +#, fuzzy +msgid "Run from line" +msgstr "歸零" -#: src/emc/rs274ngc/rs274ngc_return.hh:152 -msgid "Unknown word where unary operation could be" -msgstr "未知的字可在一元運算" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5119 +#, fuzzy +msgid "" +"Advanced\n" +" Settings" +msgstr "進階選項" -#: src/emc/rs274ngc/rs274ngc_return.hh:153 -msgid "X and y words missing for arc in xy plane" -msgstr "X和Y字缺少的弧XY平面" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5157 +msgid "User tab 1" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:154 -msgid "X and z words missing for arc in xz plane" -msgstr "X和Z字缺少的弧XZ平面" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5171 +msgid "User tabs" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:155 -msgid "X value unspecified in yz plane canned cycle" -msgstr "X值未指定在yz平面固定循環" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5207 +msgid "Estop the machine" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:156 -msgid "Y and z words missing for arc in yz plane" -msgstr "Y和Z字缺少的弧的YZ平面" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5229 +#, fuzzy +msgid "Turn the machine on/off" +msgstr "開動 機器" -#: src/emc/rs274ngc/rs274ngc_return.hh:157 -msgid "Y value unspecified in xz plane canned cycle" -msgstr "Y值未指定的在XZ平面固定循環" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5251 +msgid "enter manual mode to jog axis by hand or touch off" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:158 -msgid "Z value unspecified in xy plane canned cycle" -msgstr "Z值未指定在XY平面固定循環" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5271 +#, fuzzy +msgid "enter MDI mode to launch g-code commands" +msgstr "必須在MDI模式下發出 MDI命令" -#: src/emc/rs274ngc/rs274ngc_return.hh:159 -msgid "Zero or negative argument to ln" -msgstr "零或負參數 ln" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5290 +msgid "enter auto mode to run programs" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:161 -msgid "K word missing with g33/g33.1" -msgstr "K字缺少用 g33/g33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5308 +msgid "Enter the settings page, the default code is \"123\"" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:162 -msgid "F word used with a g33/g33.1" -msgstr "F字用了g33/g33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5330 +#, fuzzy +msgid "show user tabs" +msgstr "顯示重開" -#: src/emc/rs274ngc/rs274ngc_return.hh:163 -msgid "Unknown operation name starting with e" -msgstr "未知操作名稱開始與 e" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5381 +msgid "open homing button list" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:164 -msgid "Unknown operation name starting with n" -msgstr "未知操作名稱開始與 n" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5398 +#, fuzzy +msgid "open touch off button list" +msgstr "刀具 對 夾具 對刀(_f)" -#: src/emc/rs274ngc/rs274ngc_return.hh:165 -msgid "Unknown operation name starting with g" -msgstr "未知操作名稱開始與 g" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5427 +msgid "Open the tooleditor page" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:166 -msgid "Unknown operation name starting with l" -msgstr "未知操作名稱開始與 l" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5498 +msgid "make the preview as large as possible" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:167 -msgid "Too many subroutine parameters" -msgstr "太多的子程序參數" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5515 +msgid "Close moccapy / leave the program" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:168 -msgid "Too many subroutine levels" -msgstr "太多的子程序層面" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5577 +msgid "This button will show or hide the Keyboard" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:169 -#: src/emc/rs274ngc/rs274ngc_return.hh:170 -msgid "Unknown control command in o word" -msgstr "未知控制命令在O字" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5620 +#, fuzzy +msgid "Load a new program" +msgstr "重裝 程序" -#: src/emc/rs274ngc/rs274ngc_return.hh:170 -#: src/emc/rs274ngc/rs274ngc_return.hh:171 -msgid "Too many oword labels" -msgstr "太多oword標籤" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5637 +#, fuzzy +msgid "Run the loaded program" +msgstr "重裝 程序" -#: src/emc/rs274ngc/rs274ngc_return.hh:171 -#: src/emc/rs274ngc/rs274ngc_return.hh:172 -msgid "Unknown oword number" -msgstr "未知oword號" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5654 +#, fuzzy +msgid "Stop the running program" +msgstr "停止 正在 運行 的程序, 或" -#: src/emc/rs274ngc/rs274ngc_return.hh:172 -#: src/emc/rs274ngc/rs274ngc_return.hh:173 -msgid "Nested subroutine definition" -msgstr "巢狀子程序定義" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5672 +#, fuzzy +msgid "Pause the running program" +msgstr "停止 正在 運行 的程序, 或" -#: src/emc/rs274ngc/rs274ngc_return.hh:173 -#: src/emc/rs274ngc/rs274ngc_return.hh:174 -msgid "Not in subroutine definition" -msgstr "未在子程序定義" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5680 +#, fuzzy +msgid "pause the running program" +msgstr "停止 正在 運行 的程序, 或" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5698 +msgid "Run the loaded program step by step" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:174 -#: src/emc/rs274ngc/rs274ngc_return.hh:175 -msgid "File not open" -msgstr "文件未打開" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5715 +msgid "" +"run the program from a certain line, attention, that is dangerous, because " +"the previous lines will not checed!" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:175 -#: src/emc/rs274ngc/rs274ngc_return.hh:176 -msgid "Need tool prepared -Txx- for toolchange" -msgstr "需要準備刀具 -TXX- 供換刀" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5732 +msgid "" +"Machine or not the optional blocks of the program. If the button is pressed, " +"the optional blocks will not be machined. The button will indicate this by a " +"yellow background." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:176 -#: src/emc/rs274ngc/rs274ngc_return.hh:177 -msgid "Cannot change planes with cutter radius compensation on" -msgstr "無法改變平面用了刀具半徑補償" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5757 +msgid "" +"Make optional stops or not. if an M1 is programed and the button is pressed " +"(is active) the programm will pause if it found a M1" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:177 -#: src/emc/rs274ngc/rs274ngc_return.hh:178 -msgid "Cutter radius compensation allowed only in XY, XZ planes" -msgstr "刀具半徑補償只允許在XY,XZ平面" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5789 +#, fuzzy +msgid "Edit the loaded program" +msgstr "重裝 程序" -#: src/emc/rs274ngc/rs274ngc_return.hh:178 -#: src/emc/rs274ngc/rs274ngc_return.hh:179 -msgid "P word missing with G76" -msgstr "P字缺少的 G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5837 +#, fuzzy +msgid "home all axis" +msgstr "所有軸 回零點" -#: src/emc/rs274ngc/rs274ngc_return.hh:179 -#: src/emc/rs274ngc/rs274ngc_return.hh:180 -msgid "I J or K words missing with G76" -msgstr "I J或K字缺失的 G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5873 +#, fuzzy +msgid "home x axis" +msgstr "軸回零" -#: src/emc/rs274ngc/rs274ngc_return.hh:180 -#: src/emc/rs274ngc/rs274ngc_return.hh:181 -msgid "Cannot move rotary axes with G76" -msgstr "無法移動旋轉軸使用 G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5897 +#, fuzzy +msgid "home y axis" +msgstr "軸回零" -#: src/emc/rs274ngc/rs274ngc_return.hh:181 -#: src/emc/rs274ngc/rs274ngc_return.hh:182 -msgid "Multiple e words on one line" -msgstr "多個 e字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5929 +#, fuzzy +msgid "home z axis" +msgstr "軸回零" -#: src/emc/rs274ngc/rs274ngc_return.hh:182 -#: src/emc/rs274ngc/rs274ngc_return.hh:183 -msgid "Named parameter not terminated" -msgstr "命名參數沒有端接" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5987 +#, fuzzy +msgid "Unhome all axis" +msgstr "所有軸 離零" -#: src/emc/rs274ngc/rs274ngc_return.hh:183 -#: src/emc/rs274ngc/rs274ngc_return.hh:184 -msgid "Out of memory" -msgstr "內存不足" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6023 +msgid "go back to main button list" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:184 -#: src/emc/rs274ngc/rs274ngc_return.hh:185 -msgid "S word missing with G96" -msgstr "S字缺少的 G96" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6053 +msgid "" +" edit\n" +"offsets" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:185 -#: src/emc/rs274ngc/rs274ngc_return.hh:186 -msgid "Queue is not empty after external input" -msgstr "外部輸入後隊列不為空" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6060 +#, fuzzy +msgid "Edit offsets" +msgstr "顯示 偏移量(_f)" -#: src/emc/rs274ngc/rs274ngc_return.hh:186 -#: src/emc/rs274ngc/rs274ngc_return.hh:187 -msgid "Can't select analog input with wait type != immediate return" -msgstr "無法選擇模擬輸入的等待類型!=立即返回" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6076 +msgid "touch off X / set X to 0" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:187 -#: src/emc/rs274ngc/rs274ngc_return.hh:188 -msgid "Zero timeout with wait type != immediate return" -msgstr "零超時的等待類型!=立即返回" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6100 +msgid "touch off Y / set Y to 0" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:188 -#: src/emc/rs274ngc/rs274ngc_return.hh:189 -msgid "Invalid to select both a digital and an analog input with M66" -msgstr "無效的同時選擇一個數字和模擬輸入用 M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6135 +msgid "touch off Z / set Z to 0" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:189 -#: src/emc/rs274ngc/rs274ngc_return.hh:190 -msgid "Need to have either a valid P or a valid E word with M66" -msgstr "需要有一張有效的P或一個有效的E字與 M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6155 +msgid "" +"zero\n" +"G92" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:190 -#: src/emc/rs274ngc/rs274ngc_return.hh:191 -msgid "Q word missing with g73" -msgstr "Q缺少字與 G73" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6161 +#, fuzzy +msgid "Zero all G92 offsets" +msgstr "置零 于 所有G5" -#: src/emc/rs274ngc/rs274ngc_return.hh:191 -#: src/emc/rs274ngc/rs274ngc_return.hh:192 -msgid "Digital input selected out of bounds" -msgstr "數字輸入選擇超出界限" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6172 +msgid "" +" Block\n" +"Height" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:192 -#: src/emc/rs274ngc/rs274ngc_return.hh:193 -msgid "Analog input selected out of bounds" -msgstr "模擬輸入選擇超出界限" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6192 +msgid "touch off X / set X to an desired value" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:193 -#: src/emc/rs274ngc/rs274ngc_return.hh:194 -msgid "W value unspecified in UV plane canned cycle" -msgstr "W值不明在UV平面固定循環" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6216 +msgid "touch off Y / set Y to an desired value" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:194 -#: src/emc/rs274ngc/rs274ngc_return.hh:195 -msgid "U value unspecified in VW plane canned cycle" -msgstr "U值不確定的VW平面固定循環" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6251 +msgid "touch off Z / set Z to an desired value" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:195 -#: src/emc/rs274ngc/rs274ngc_return.hh:196 -msgid "V value unspecified in UW plane canned cycle" -msgstr "V值未指定在UW平面固定循環" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6270 +msgid "" +" set\n" +"selected" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:196 -#: src/emc/rs274ngc/rs274ngc_return.hh:197 -msgid "R less than W in cycle in UV plane" -msgstr "R小於 W在週期 UV平面" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6277 +#, fuzzy +msgid "set the selected coordinate system to be the active one" +msgstr "不能改變激活的坐標系當刀具半徑補償在使用" -#: src/emc/rs274ngc/rs274ngc_return.hh:197 -#: src/emc/rs274ngc/rs274ngc_return.hh:198 -msgid "R less than U in cycle in VW plane" -msgstr "R小於 U在週期VW平面" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6293 +msgid "Go back to main view" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:198 -#: src/emc/rs274ngc/rs274ngc_return.hh:199 -msgid "R less than V in cycle in UW plane" -msgstr "R小於 V的週期在UW平面" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6324 +#, fuzzy +msgid "delete MDI" +msgstr "刪除" -#: src/emc/motion/control.c:578 -#, c-format -msgid "fault %d during orient in progress" -msgstr "故障 %d 在進行取向時" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6330 +#, fuzzy +msgid "delete MDI history" +msgstr "清除 MDI 歷史" -#: src/emc/rs274ngc/interp_namedparams.cc:191 -#, fuzzy, c-format -msgid "cant open ini file '%s'" -msgstr "不能打開 %s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6380 +msgid "Cl.-ladder" +msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:208 -#, fuzzy, c-format -msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" -msgstr "命名參數 #<%s> 沒有定義" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6386 +msgid "Open classicladder" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:314 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6397 #, fuzzy -msgid "P value not an integer with M19 G2 or G3" -msgstr "P值不是整數使用 G2或G3" +msgid "Hal-Scope" +msgstr "HAL 顯示器" -#: src/emc/rs274ngc/interp_check.cc:316 -msgid "P value must be 0,1,or 2 with M19" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6403 +msgid "launch hal scope" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:326 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6420 +msgid "launch linuxcnc status" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6437 +msgid "launch hal meter" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6455 #, fuzzy -msgid "" -"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " -"code that uses it" +msgid "launch calibration" +msgstr "校準(_C)" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6466 +msgid "Halshow" msgstr "" -"Q字,沒有 G5,G10,G64,G73,G76,G83,M66,M67,M68或用戶 M代碼 使用它" -#: src/emc/rs274ngc/interp_check.cc:336 -msgid "R value must be within 0..360 with M19" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6472 +msgid "opens the show hal tool" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2786 -#, c-format -msgid "" -"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6537 +msgid "save the file using the original name" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2787 -#, c-format -msgid "BUG: restore from level %d !?" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6559 +msgid "save the file with a new name" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2788 -#, c-format -msgid "BUG: restore to level %d !?" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6605 +msgid "clear the edit field and make a new file" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2807 -#, c-format -msgid "M7x: restore_settings G20/G21 failed: '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6641 +msgid "Show or hide the virtual keyboard" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2819 -#, c-format -msgid "M7x: restore_settings failed executing: '%s': %s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6665 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6879 +msgid "Go back to main button list" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6701 +msgid "delete selected tool or tools" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3012 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6718 #, fuzzy -msgid "Need non-negative Q-word to specify tool number with M61" -msgstr "需要正的 Q-字 指定刀具號 當使用M61" +msgid "add a new tool to tool table" +msgstr "重新載入刀具表(_b)" -#: src/emc/rs274ngc/interp_convert.cc:3087 -msgid "Q word with M19 requires a value > 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6729 +#, fuzzy +msgid "Reload" +msgstr "重新載入(_R)" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6735 +#, fuzzy +msgid "reload tool table from file" +msgstr "重新載入刀具表(_b)" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6746 +msgid "Apply" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3115 -msgid "Cannot restore context from invalid stack frame - missing M70/M73?" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6752 +msgid "" +"apply the changes you made, G43 will be excecuted only if it is active g-code" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:232 -#, c-format -msgid "fetch_hal_param: hal_init(%s): %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6768 +#, fuzzy +msgid "Select a tool by number" +msgstr "選擇項目 以探測" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6790 +msgid "change tool with the command M61 Q?, no machine move will be done" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:233 -#, c-format -msgid "fetch_hal_param: hal_ready(): %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6812 +msgid "change tool to the selected one" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:378 -#, c-format -msgid "Cannot assign to read-only parameter #<%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6824 +#, fuzzy +msgid "" +"touchoff\n" +" tool x" +msgstr "刀具 對 夾具 對刀(_f)" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6832 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6863 +#, fuzzy +msgid "touch off the tool and set the value to the tool table" +msgstr "請求工具 %d 刀具表找不到" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6855 +msgid "" +"touchoff\n" +" tool z" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:682 -#, c-format -msgid "BUG: lookup_named_param(%s): unhandled index=%fn" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6915 +msgid "Move to your home directory" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:169 -msgid "Bug: call stack underrun" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6932 +msgid "Move to parrent directory" msgstr "" -#: share/axis/tcl/axis.tcl:1711 -msgid "" -"LinuxCNC/AXIS version $version\n" -"\n" -"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Jeff Epler and Chris " -"Radek.\n" -"\n" -"This is free software, and you are welcome to redistribute it under certain " -"conditions. See the file COPYING, included with LinuxCNC.\n" -"\n" -"Visit the LinuxCNC web site: " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6961 +#, fuzzy +msgid "Select the previos file" +msgstr "選擇項目 以探測" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6979 +#, fuzzy +msgid "Select the next file" +msgstr "選擇項目 以探測" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6997 +msgid "Jump to user defined directory" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7027 +msgid "select the highlighted file and return the path" +msgstr "" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7057 +msgid "Close without returning a file path" msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7075 +#, fuzzy +msgid "Load File" +msgstr "程序檔案" + +#~ msgid "%s move in MDI would exceed joint %d's positive limit" +#~ msgstr "%s 在 MDI 移動 將超過 joint %d 的 正 極限" + +#~ msgid "%s move in MDI would exceed joint %d's negative limit" +#~ msgstr "%s 在 MDI 移動 將超過 joint %d 的 負 極限" + +#, fuzzy +#~ msgid "LinuxCNC Debug Level" +#~ msgstr "EMC2 偵錯層級" + +#, fuzzy +#~ msgid "Spindle Max Output:" +#~ msgstr "DAC 最大 輸出:" + +#~ msgid "Dac Output Scale:" +#~ msgstr "DAC 輸出 比例:" + +#, fuzzy +#~ msgid "P value not an integer with G2 or G3" +#~ msgstr "P值不是整數使用 G2或G3" + +#, fuzzy +#~ msgid "" +#~ "Q word with no G5, G10, G64, G73, G76, G83, M66, M67, M68 or user M code " +#~ "that uses it" +#~ msgstr "" +#~ "Q字,沒有 G5,G10,G64,G73,G76,G83,M66,M67,M68或用戶 M代碼 使用它" + +#~ msgid "Cannot set motion output with cutter radius compensation on" +#~ msgstr "無法設置 運動 輸出 當 刀具半徑補償 開" + +#~ msgid "" +#~ "Cannot set auxiliary digital output with cutter radius compensation on" +#~ msgstr "無法設置附屬數碼輸出當刀具半徑補償在使用" + +#~ msgid "Cannot set motion analog output with cutter radius compensation on" +#~ msgstr "無法設置運動模擬輸出當刀具半徑補償在使用" + +#~ msgid "" +#~ "Cannot set auxiliary analog output with cutter radius compensation on" +#~ msgstr "無法設置輔助模擬輸出當刀具半徑補償在使用" + +#, fuzzy +#~ msgid "Need positive Q-word to specify tool number with M61" +#~ msgstr "需要正的 Q-字 指定刀具號 當使用M61" + #~ msgid "About TkEmc" #~ msgstr "關於 TkEmc" diff --git a/src/po/zh_TW.po b/src/po/zh_TW.po index 5809c41924..61470f6f3c 100644 --- a/src/po/zh_TW.po +++ b/src/po/zh_TW.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-10 13:40-0600\n" +"POT-Creation-Date: 2019-02-20 07:49+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,13235 +17,16776 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: src/hal/utils/meter.c:198 +#: src/emc/task/emctaskmain.cc:479 src/emc/task/emctaskmain.cc:512 #, c-format -msgid "ERROR: '%s' is not a valid probe type\n" -msgstr "故障: '%s' 不是 有效 的 探查 類型\n" +msgid "%s exceeds +X limit" +msgstr "%s 超過 +X 極限" -#: src/hal/utils/meter.c:206 +#: src/emc/task/emctaskmain.cc:484 src/emc/task/emctaskmain.cc:517 #, c-format -msgid "ERROR: no pin/signal/parameter name\n" -msgstr "故障: 沒有 針腳/信號/參數 名字\n" +msgid "%s exceeds +Y limit" +msgstr "%s 超過 +Y 極限" -#: src/hal/utils/meter.c:212 +#: src/emc/task/emctaskmain.cc:489 src/emc/task/emctaskmain.cc:522 #, c-format -msgid "" -"ERROR: -s option requires a probe type and a pin/signal/parameter name\n" -msgstr "故障: -s 選項需要一個探頭類型和 針/信號​​/參數 名稱\n" - -#: src/hal/utils/meter.c:238 tcl/tklinuxcnc.tcl:764 -msgid "Hal Meter" -msgstr "HAL 儀表" +msgid "%s exceeds +Z limit" +msgstr "%s 超過 +Z 極限" -#: src/hal/utils/meter.c:287 -msgid "_Select" -msgstr "選擇(_S)" +#: src/emc/task/emctaskmain.cc:494 src/emc/task/emctaskmain.cc:527 +#, c-format +msgid "%s exceeds -X limit" +msgstr "%s 超過 -X 極限" -#: src/hal/utils/meter.c:288 -msgid "E_xit" -msgstr "退出(_x)" +#: src/emc/task/emctaskmain.cc:499 src/emc/task/emctaskmain.cc:532 +#, c-format +msgid "%s exceeds -Y limit" +msgstr "%s 超過 -Y 極限" -#: src/hal/utils/meter.c:336 src/hal/utils/meter.c:364 -msgid "Select Item to Probe" -msgstr "選擇項目 以探測" +#: src/emc/task/emctaskmain.cc:504 src/emc/task/emctaskmain.cc:537 +#, c-format +msgid "%s exceeds -Z limit" +msgstr "%s 超過 -Z 極限" -#: src/hal/utils/meter.c:640 -msgid " _Pins " -msgstr " 針(_P) " +#: src/emc/task/emctaskmain.cc:892 +#, c-format +msgid "" +"command (%s) cannot be executed until the machine is out of E-stop and " +"turned on" +msgstr "命令 (%s) 不能執行 直到機器 離開 急停 並開動" -#: src/hal/utils/meter.c:641 -msgid " _Signals " -msgstr " 信號​​(_S) " +#: src/emc/task/emctaskmain.cc:1013 +#, fuzzy, c-format +msgid "can't do that (%s:%d) in manual mode" +msgstr "不能做到這一點(%s)在手動模式" -#: src/hal/utils/meter.c:642 -msgid " Para_meters " -msgstr " 參數(_m) " +#: src/emc/task/emctaskmain.cc:1113 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter idle" +msgstr "不能做到這一點(%s)在自動模式與翻譯空閒" -#: src/hal/utils/meter.c:685 -msgid "_Close" -msgstr " 關閉(_C) " +#: src/emc/task/emctaskmain.cc:1180 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter reading" +msgstr "不能做到這一點(%s)在自動模式與翻譯閱讀" -#: src/hal/utils/scope.c:126 -msgid "" -"Usage:\n" -" halscope [-h] [-i infile] [-o outfile] [num_samples]\n" -msgstr "" +#: src/emc/task/emctaskmain.cc:1265 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter paused" +msgstr "不能做到這一點(%s)在自動模式與翻譯暫停" -#: src/hal/utils/scope.c:474 src/hal/utils/scope.c:501 -msgid "Open Configuration File:" -msgstr "打開配置文件:" +#: src/emc/task/emctaskmain.cc:1334 +#, c-format +msgid "can't do that (%s) in auto mode with the interpreter waiting" +msgstr "不能做到這一點(%s)在自動模式與翻譯等待" -#: src/hal/utils/scope.c:535 -msgid "_Open Configuration..." -msgstr "打開配置(_O)..." +#: src/emc/task/emctaskmain.cc:1442 +#, fuzzy, c-format +msgid "can't do that (%s:%d) in MDI mode" +msgstr "不能做到這一點(%s)在MDI模式" -#: src/hal/utils/scope.c:541 -msgid "_Save Configuration..." -msgstr "保存配置(_S)...." +#: src/emc/task/emctaskmain.cc:2100 +msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" +msgstr "無法切換模式,而模式是AUTO和解釋是沒有閒著" -#: src/hal/utils/scope.c:550 -msgid "O_pen Data File..." -msgstr "打開數據文件(_p)..." +#: src/emc/task/emctaskmain.cc:2157 tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 +#: tcl/mini.tcl:1775 tcl/tklinuxcnc.tcl:451 +#, c-format, tcl-format +msgid "can't open %s" +msgstr "不能打開 %s" -#: src/hal/utils/scope.c:557 -msgid "S_ave Data File..." -msgstr "保存數據文件(_a)..." +#: src/emc/task/emctaskmain.cc:2169 +msgid "Can't issue MDI command when not homed" +msgstr "不能發出 MDI命令當沒有歸零" -#: src/hal/utils/scope.c:566 share/axis/tcl/axis.tcl:93 -msgid "_Quit" -msgstr "退出(_Q)" +#: src/emc/task/emctaskmain.cc:2174 +msgid "Must be in MDI mode to issue MDI command" +msgstr "必須在MDI模式下發出 MDI命令" -#: src/hal/utils/scope.c:572 -msgid "_About Halscope" -msgstr "關於 Halscope(_A)" +#: src/emc/task/emctaskmain.cc:2256 +msgid "Can't run a program when not homed" +msgstr "不能運行程序,當沒有歸零" -#: src/hal/utils/scope.c:578 share/axis/tcl/axis.tcl:435 -msgid "_File" -msgstr "文件(_F)" +#: src/emc/rs274ngc/interp_arc.cc:110 src/emc/rs274ngc/interp_arc.cc:284 +#, c-format +msgid "" +"Zero-radius arc: start=(%c%.4f,%c%.4f) center=(%c%.4f,%c%.4f) end=(%c%.4f,%c" +"%.4f) r1=%.4f r2=%.4f" +msgstr "" -#: src/hal/utils/scope.c:582 share/axis/tcl/axis.tcl:447 -msgid "_Help" -msgstr "求助(_H)" +#: src/emc/rs274ngc/interp_arc.cc:120 src/emc/rs274ngc/interp_arc.cc:292 +#, c-format +msgid "" +"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " +"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " +"rel_err=%.4f%%" +msgstr "" -#: src/hal/utils/scope.c:641 -msgid "HAL Oscilloscope" -msgstr "HAL示波器" +#: src/emc/rs274ngc/interp_check.cc:90 +msgid "G4 not allowed with G2 or G3 because they both use P" +msgstr "G4 不准 和 G2 或 G3使用,因為它們都使用 P" -#: src/hal/utils/scope.c:669 -msgid "Horizontal" -msgstr "水平" +#: src/emc/rs274ngc/interp_check.cc:93 +msgid "Line with G10 does not have L1, L10, L11, L2, or L20" +msgstr "" -#: src/hal/utils/scope.c:677 -msgid "Selected Channel" -msgstr "選擇通道" +#: src/emc/rs274ngc/interp_check.cc:94 +msgid "P value not an integer with G10" +msgstr "P值不是整數使用 G10" -#: src/hal/utils/scope.c:683 -msgid "Run Mode" -msgstr "運行模式" +#: src/emc/rs274ngc/interp_check.cc:95 +#, fuzzy, c-format +msgid "P value out of range (0-9) with G10 L%d" +msgstr "P值超出範圍(0-9)與 G10 L2或L20" -#: src/hal/utils/scope.c:686 -msgid "Trigger" -msgstr "觸發" +#: src/emc/rs274ngc/interp_check.cc:96 +#, fuzzy, c-format +msgid "P value out of range with G10 L%d" +msgstr "P值超出範圍使用 G10 L1或G10 L10" -#: src/hal/utils/scope.c:692 -msgid "Vertical" -msgstr "垂直" +#: src/emc/rs274ngc/interp_check.cc:100 +msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." +msgstr "G5.2和G5.3之間代碼,只有更多的G5.2代碼是允許的." -#: src/hal/utils/scope.c:700 share/axis/tcl/axis.tcl:135 -#: share/axis/tcl/axis.tcl:1199 -msgid "Stop" -msgstr "停" +#: src/emc/rs274ngc/interp_check.cc:259 +msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" +msgstr "D 字無 G41,G41.1,G42,G42.1,或G96使用它" -#: src/hal/utils/scope.c:703 -msgid "Normal" -msgstr "正常" +#: src/emc/rs274ngc/interp_check.cc:265 +msgid "E word with no G76, M66, M67 or M68 to use it" +msgstr "E字無 G76,M66,M67或M68使用它" -#: src/hal/utils/scope.c:706 -msgid "Single" -msgstr "單" +#: src/emc/rs274ngc/interp_check.cc:270 +msgid "H word with no G43 or G76 to use it" +msgstr "H字沒有 G43或G76使用它" -#: src/hal/utils/scope.c:709 -msgid "Roll" -msgstr "翻滾" +#: src/emc/rs274ngc/interp_check.cc:276 +msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" +msgstr "I字 沒有 G2,G3,G5,G5.1,G10,G76或G87使用它" -#: src/hal/utils/scope_horiz.c:130 -msgid "Zoom" -msgstr "縮放" +#: src/emc/rs274ngc/interp_check.cc:282 +msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" +msgstr "J字 沒有 G2,G3,G5,G5.1,G10,G76或G87使用它" -#: src/hal/utils/scope_horiz.c:131 -msgid " Pos " -msgstr "位置" +#: src/emc/rs274ngc/interp_check.cc:288 +msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" +msgstr "K字 沒有 G2,G3,G33,G33.1,G76或G87使用它" -#: src/hal/utils/scope_horiz.c:164 +#: src/emc/rs274ngc/interp_check.cc:298 msgid "" -"----- Samples\n" -"at ---- KHz" -msgstr "" -"-----選樣\n" -"於 ---- KHz" - -#: src/hal/utils/scope_horiz.c:459 -msgid "Realtime component not loaded" -msgstr "實時元件沒有加載" +"L word with no G10, cutter compensation, canned cycle, digital/analog input, " +"or NURBS code" +msgstr "L字無 G10,刀具補償,固定循環,數字/模擬輸入, 或 NURBS 代碼" -#: src/hal/utils/scope_horiz.c:460 +#: src/emc/rs274ngc/interp_check.cc:310 msgid "" -"HALSCOPE uses a realtime component called scope_rt'\n" -"to sample signals for display. It is not currently loaded\n" -"and attempting to load it automatically failed. More information\n" -"may be available in the terminal where halscope was started.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Load the component (using 'halcmd loadrt scope_rt'), then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " +"M53 M62 M63 M64 M65 M66 or user M code to use it" msgstr "" +"P字G2 G3 G4沒有 G5 G10 G64 G76 G82 G86 G88 G5.2 G89或M50 M51 M52 M53 M62 M63 " +"M64 M65 M66或用戶的M代碼使用它" -#: src/hal/utils/scope_horiz.c:495 -msgid "Realtime function not linked" -msgstr "實時功能沒有鏈接" +#: src/emc/rs274ngc/interp_check.cc:315 +#, fuzzy +msgid "P value not an integer with M19 G2 or G3" +msgstr "P值不是整數使用 G2或G3" -#: src/hal/utils/scope_horiz.c:496 -msgid "" -"The HALSCOPE realtime sampling function\n" -"must be called from a HAL thread in to\n" -"determine the sampling rate.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Select a thread name and multiplier then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +#: src/emc/rs274ngc/interp_check.cc:317 +msgid "P value must be 0,1,or 2 with M19" msgstr "" -#: src/hal/utils/scope_horiz.c:503 -msgid "Select Sample Rate" -msgstr "選擇採樣率" +#: src/emc/rs274ngc/interp_check.cc:319 +msgid "P value should be 1 or greater with G2 or G3" +msgstr "P值應為 1或更大的G2或G3" -#: src/hal/utils/scope_horiz.c:504 +#: src/emc/rs274ngc/interp_check.cc:327 +#, fuzzy msgid "" -"Select a thread name and multiplier then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" +"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " +"code that uses it" msgstr "" -"選擇一個線程的名稱和倍增然後點擊 'OK'\n" -"或\n" -"點擊 '退出' 以離開 HAL示波器" - -#: src/hal/utils/scope_horiz.c:526 -msgid "Thread:" -msgstr "線程:" +"Q字,沒有 G5,G10,G64,G73,G76,G83,M66,M67,M68或用戶 M代碼 使用它" -#: src/hal/utils/scope_horiz.c:534 -msgid "Sample Period:" -msgstr "採樣 時段:" +#: src/emc/rs274ngc/interp_check.cc:337 +msgid "R value must be within 0..360 with M19" +msgstr "" -#: src/hal/utils/scope_horiz.c:542 -msgid "Sample Rate:" -msgstr "採樣率:" +#: src/emc/rs274ngc/interp_convert.cc:139 +msgid "You must specify both X and Y coordinates for Control Points" +msgstr "您必須指定X和Y坐標對控制點" -#: src/hal/utils/scope_horiz.c:558 src/emc/usr_intf/touchy/mdi.py:78 -msgid "Thread" -msgstr "線清" +#: src/emc/rs274ngc/interp_convert.cc:142 +msgid "Can specify P without X and Y only for the first control point" +msgstr "可以指定P沒有 X和Y只對第一個控制點" -#: src/hal/utils/scope_horiz.c:559 -msgid "Period" -msgstr "期段" +#: src/emc/rs274ngc/interp_convert.cc:145 +msgid "Must specify positive weight P for every Control Point" +msgstr "必須指定積極重量P為每一個控制點" -#: src/hal/utils/scope_horiz.c:619 -msgid "Multiplier:" -msgstr "倍增:" +#: src/emc/rs274ngc/interp_convert.cc:148 +msgid "Cannot make a NURBS with 0 feedrate" +msgstr "不能作出NURBS使用進給速度0" -#: src/hal/utils/scope_horiz.c:636 -msgid "Record Length" -msgstr "記錄長度" +#: src/emc/rs274ngc/interp_convert.cc:183 +msgid "Cannot use G5.3 without G5.2 first" +msgstr "不能使用 G5.3沒有 G5.2先行" -#: src/hal/utils/scope_horiz.c:639 +#: src/emc/rs274ngc/interp_convert.cc:184 #, c-format -msgid "%5d samples (1 channel)" -msgstr "%5d 樣品(1通道)" +msgid "" +"You must specify a number of control points at least equal to the order L = " +"%d" +msgstr "您必須指定一個數字控制點至少等於順序L =%d" -#: src/hal/utils/scope_horiz.c:641 -#, c-format -msgid "%5d samples (2 channels)" -msgstr "%5d 樣品 (2通道)" +#: src/emc/rs274ngc/interp_convert.cc:213 +msgid "Cannot convert spline with cutter radius compensation" +msgstr "無法轉換 樣條曲線 有刀具半徑補償" -#: src/hal/utils/scope_horiz.c:645 -#, c-format -msgid "%5d samples (4 channels)" -msgstr "%5d 樣品 (4通道)" +#: src/emc/rs274ngc/interp_convert.cc:223 +msgid "Splines must be in the XY plane" +msgstr "樣條曲線必須在XY平面" -#: src/hal/utils/scope_horiz.c:649 -#, c-format -msgid "%5d samples (8 channels)" -msgstr "%5d 樣品 (8通道)" +#: src/emc/rs274ngc/interp_convert.cc:228 +msgid "Splines may not have motion in Z, A, B, or C" +msgstr "樣條曲線 無法 有動作 在 Z,A,B 或 C" -#: src/hal/utils/scope_horiz.c:653 -#, c-format -msgid "%5d samples (16 channels)" -msgstr "%5d 樣品 (16通道)" +#: src/emc/rs274ngc/interp_convert.cc:232 +msgid "Must specify both I and J with G5.1" +msgstr "必須同時指定I和J使用 G5.1" -#: src/hal/utils/scope_horiz.c:708 src/hal/utils/scope_horiz.c:754 -#: src/hal/utils/scope_horiz.c:966 src/hal/utils/scope_vert.c:761 -#: src/hal/utils/scope_vert.c:853 tcl/bin/emccalib.tcl:227 -#: tcl/bin/genedit.tcl:180 tcl/bin/genedit.tcl:450 tcl/bin/halconfig.tcl:682 -#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:257 -#: tcl/bin/pickconfig.tcl:479 tcl/bin/pickconfig.tcl:506 tcl/mini.tcl:1456 -#: tcl/mini.tcl:2937 tcl/tklinuxcnc.tcl:160 tcl/tklinuxcnc.tcl:245 -#: tcl/tklinuxcnc.tcl:419 tcl/tklinuxcnc.tcl:1338 tcl/tklinuxcnc.tcl:1407 -#: tcl/tklinuxcnc.tcl:1438 tcl/tklinuxcnc.tcl:1469 tcl/tklinuxcnc.tcl:2017 -#: tcl/tklinuxcnc.tcl:2036 tcl/tklinuxcnc.tcl:2055 tcl/tklinuxcnc.tcl:2102 -#: src/emc/usr_intf/axis/scripts/axis.py:1077 -#: src/emc/usr_intf/axis/scripts/axis.py:1141 -#: src/emc/usr_intf/axis/scripts/axis.py:1458 -#: src/emc/usr_intf/axis/scripts/axis.py:2477 -#: src/emc/usr_intf/axis/scripts/axis.py:3336 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:718 -#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1720 -#: share/axis/tcl/axis.tcl:1757 -msgid "OK" +#: src/emc/rs274ngc/interp_convert.cc:251 +msgid "Must specify both I and J, or neither" +msgstr "必須同時指定 I和J,或者兩者都不要" + +#: src/emc/rs274ngc/interp_convert.cc:262 +msgid "Must specify both P and Q with G5" +msgstr "必須同時指定P和Q使用 G5" + +#: src/emc/rs274ngc/interp_convert.cc:363 +msgid "" +"The move just after exiting cutter compensation mode must be straight, not " +"an arc" +msgstr "移動只是在退出刀具補償模式必須是直的,而不是一個弧" + +#: src/emc/rs274ngc/interp_convert.cc:371 +msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" msgstr "" -#: src/hal/utils/scope_horiz.c:713 src/hal/utils/scope_horiz.c:754 -#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 -msgid "Quit" -msgstr "退出" +#: src/emc/rs274ngc/interp_convert.cc:383 +#: src/emc/rs274ngc/interp_convert.cc:4488 +msgid "Cannot feed with zero spindle speed in feed per rev mode" +msgstr "不能進給 用 零速度主軸 在 進給每轉 模式下" -#: src/hal/utils/scope_horiz.c:745 -msgid "Realtime thread(s) not running" -msgstr "實時線程沒有運行" +#: src/emc/rs274ngc/interp_convert.cc:394 +#: src/emc/rs274ngc/interp_convert.cc:400 +#: src/emc/rs274ngc/interp_convert.cc:409 +#: src/emc/rs274ngc/interp_convert.cc:415 +#: src/emc/rs274ngc/interp_convert.cc:424 +#: src/emc/rs274ngc/interp_convert.cc:430 +#, c-format +msgid "%c word missing in absolute center arc" +msgstr "%c 字中 缺少 在 絕對的中心弧" -#: src/hal/utils/scope_horiz.c:746 +#: src/emc/rs274ngc/interp_convert.cc:662 msgid "" -"HALSCOPE uses code in a realtime HAL thread to sample\n" -"signals for display. The HAL thread(s) are not running.\n" -"Threads are usually started by the application you are\n" -"attempting to run, or you can use the 'halcmd start' command.\n" -"\n" -"Please do one of the following:\n" -"\n" -"Start the threads, then click 'OK'\n" -"or\n" -"Click 'Quit' to exit HALSCOPE" -msgstr "" +"Radius of cutter compensation entry arc is not greater than the tool radius" +msgstr "刀具半徑補償進入弧不大於刀具半徑" -#: src/hal/utils/scope_horiz.c:779 -msgid "Pick log file to write to:" -msgstr "選擇日誌文件寫入:" +#: src/emc/rs274ngc/interp_convert.cc:882 +#: src/emc/rs274ngc/interp_convert.cc:892 src/emc/rs274ngc/interp_queue.cc:696 +msgid "" +"Arc move in concave corner cannot be reached by the tool without gouging" +msgstr "弧移動無法到達凹角 使用該工具 而沒有刨削槽" -#: src/hal/utils/scope_horiz.c:962 -msgid "Not enough channels" -msgstr "沒有足夠的通道" +#: src/emc/rs274ngc/interp_convert.cc:918 +msgid "Arc to arc motion is invalid because the arcs have the same center" +msgstr "弧至弧移動是無效的,因為有相同的弧中心" -#: src/hal/utils/scope_horiz.c:963 +#: src/emc/rs274ngc/interp_convert.cc:921 msgid "" -"This record length cannot handle the channels\n" -"that are currently enabled. Pick a shorter\n" -"record length that supports more channels." -msgstr "" -"此記錄的長度不能處理目前啟用的頻道\n" -"選擇一個較短的記錄長度\n" -"支持更多的頻道." +"Arc to arc motion makes a corner the compensated tool can't fit in without " +"gouging" +msgstr "弧至弧運動 做一個角落 補償工具 不適合 有刨削槽" -#: src/hal/utils/scope_horiz.c:1051 +#: src/emc/rs274ngc/interp_convert.cc:1053 +#: src/emc/rs274ngc/interp_convert.cc:1057 +#: src/emc/rs274ngc/interp_convert.cc:1061 +#: src/emc/rs274ngc/interp_convert.cc:3945 +#: src/emc/rs274ngc/interp_convert.cc:3948 +#: src/emc/rs274ngc/interp_convert.cc:3951 src/emc/rs274ngc/interp_find.cc:97 #, c-format -msgid "" -"%s\n" -"per div" -msgstr "" +msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" +msgstr "無效的絕對位置 %5.2f 給包裹 旋轉軸 %c" + +#: src/emc/rs274ngc/interp_convert.cc:1563 +msgid "Cannot change control mode with cutter radius compensation on" +msgstr "不能改變控制模式 當 使用刀具半徑補償" + +#: src/emc/rs274ngc/interp_convert.cc:1676 +msgid "Cannot change coordinate systems with cutter radius compensation on" +msgstr "不能改變坐標系 當 使用刀具半徑補償" -#: src/hal/utils/scope_horiz.c:1066 +#: src/emc/rs274ngc/interp_convert.cc:1920 #, c-format -msgid "" -"%s samples\n" -"at %s" +msgid "G%d.1 with no D word" msgstr "" -#: src/hal/utils/scope_horiz.c:1170 -msgid "nSec" +#: src/emc/rs274ngc/interp_convert.cc:1923 +#, c-format +msgid "G%d.1 with L word, but plane is not G18" msgstr "" -#: src/hal/utils/scope_horiz.c:1173 -msgid "uSec" +#: src/emc/rs274ngc/interp_convert.cc:1934 +#, c-format +msgid "G%d requires D word to be a whole number" msgstr "" -#: src/hal/utils/scope_horiz.c:1177 -msgid "mSec" +#: src/emc/rs274ngc/interp_convert.cc:1941 +#, c-format +msgid "G%d with lathe tool, but plane is not G18" +msgstr "G%d 與車刀,但平面不是 G18" + +#: src/emc/rs274ngc/interp_convert.cc:2340 +msgid "Cannot set reference point with cutter compensation in effect" +msgstr "無法設置 參考點 當 使用刀具補償" + +#: src/emc/rs274ngc/interp_convert.cc:2859 +#, c-format +msgid "gen_restore G20/G21 failed: '%s'" msgstr "" -#: src/hal/utils/scope_horiz.c:1181 -#: src/emc/usr_intf/pncconf/pncconf.glade:1953 -#: src/emc/usr_intf/pncconf/pncconf.glade:2825 -#: src/emc/usr_intf/pncconf/pncconf.glade:3706 -#: src/emc/usr_intf/pncconf/pncconf.glade:4587 -msgid "Sec" -msgstr "秒" +#: src/emc/rs274ngc/interp_convert.cc:2907 +#, c-format +msgid "" +"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" +msgstr "" -#: src/hal/utils/scope_horiz.c:1198 -#: src/emc/usr_intf/stepconf/stepconf.glade:3664 -#: src/emc/usr_intf/stepconf/stepconf.glade:4040 -#: src/emc/usr_intf/pncconf/pncconf.glade:8268 -#: src/emc/usr_intf/pncconf/pncconf.glade:8281 -#: src/emc/usr_intf/pncconf/pncconf.glade:8458 -msgid "Hz" +#: src/emc/rs274ngc/interp_convert.cc:2908 +#, c-format +msgid "BUG: restore from level %d !?" msgstr "" -#: src/hal/utils/scope_horiz.c:1201 -msgid "KHz" +#: src/emc/rs274ngc/interp_convert.cc:2909 +#, c-format +msgid "BUG: restore to level %d !?" msgstr "" -#: src/hal/utils/scope_horiz.c:1205 -msgid "Mhz" +#: src/emc/rs274ngc/interp_convert.cc:2928 +#, c-format +msgid "M7x: restore_settings G20/G21 failed: '%s'" msgstr "" -#: src/hal/utils/scope_vert.c:403 src/hal/utils/scope_vert.c:1258 +#: src/emc/rs274ngc/interp_convert.cc:2946 #, c-format -msgid "" -"Offset\n" -"%s" +msgid "M7x: restore_settings failed executing: '%s': %s" msgstr "" -#: src/hal/utils/scope_vert.c:618 -msgid "Gain" -msgstr "增益" +#: src/emc/rs274ngc/interp_convert.cc:3005 +#, c-format +msgid "Failed to restore interp state on abort '%s': %s" +msgstr "" -#: src/hal/utils/scope_vert.c:630 src/hal/utils/scope_trig.c:252 -msgid "Pos" -msgstr "定位" +#: src/emc/rs274ngc/interp_convert.cc:3069 +msgid "No valid P word with M62" +msgstr "沒有有效的P字使用 M62" -#: src/hal/utils/scope_vert.c:644 tcl/ngcgui_ttt.tcl:214 -#: src/emc/usr_intf/pncconf/pncconf.glade:57147 -msgid "Scale" -msgstr "尺度" +#: src/emc/rs274ngc/interp_convert.cc:3072 +msgid "No valid P word with M63" +msgstr "沒有有效的P字使用 M62" -#: src/hal/utils/scope_vert.c:657 -msgid "Chan Off" -msgstr "通道 關" +#: src/emc/rs274ngc/interp_convert.cc:3075 +msgid "No valid P word with M64" +msgstr "沒有有效的P字使用 M64" -#: src/hal/utils/scope_vert.c:713 -msgid "Set Offset" -msgstr "設置偏移" +#: src/emc/rs274ngc/interp_convert.cc:3078 +msgid "No valid P word with M65" +msgstr "沒有有效的P字使用 M65" -#: src/hal/utils/scope_vert.c:714 -#, c-format -msgid "" -"Set the vertical offset\n" -"for channel %d." -msgstr "" -"設置垂直偏移量\n" -"對通道 %d." +#: src/emc/rs274ngc/interp_convert.cc:3111 +msgid "invalid P-word with M66" +msgstr "沒有有效的P字使用 M66" -#: src/hal/utils/scope_vert.c:734 -msgid "AC Coupled" -msgstr "交流耦合" +#: src/emc/rs274ngc/interp_convert.cc:3126 +msgid "Cannot wait for digital input with cutter radius compensation on" +msgstr "不能等待數碼輸入當刀具半徑補償在使用" -#: src/hal/utils/scope_vert.c:769 src/hal/utils/scope_vert.c:1171 -#: src/hal/utils/scope_trig.c:367 tcl/bin/emccalib.tcl:229 -#: tcl/bin/genedit.tcl:294 tcl/bin/halconfig.tcl:103 tcl/bin/halconfig.tcl:684 -#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:260 -#: tcl/bin/pickconfig.tcl:369 tcl/mini.tcl:1457 tcl/mini.tcl:2938 -#: tcl/mini.tcl:3110 tcl/tklinuxcnc.tcl:162 tcl/tklinuxcnc.tcl:213 -#: tcl/tklinuxcnc.tcl:420 tcl/tklinuxcnc.tcl:1339 tcl/tklinuxcnc.tcl:1408 -#: tcl/tklinuxcnc.tcl:1439 tcl/tklinuxcnc.tcl:1470 tcl/tklinuxcnc.tcl:2103 -#: src/emc/usr_intf/axis/scripts/axis.py:1404 -#: src/emc/usr_intf/axis/scripts/axis.py:1459 -#: src/emc/usr_intf/axis/scripts/axis.py:1646 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:720 -msgid "Cancel" -msgstr "取消" +#: src/emc/rs274ngc/interp_convert.cc:3138 +msgid "Cannot wait for analog input with cutter radius compensation on" +msgstr "不能等待模擬輸入當刀具半徑補償在使用" -#: src/hal/utils/scope_vert.c:849 -msgid "Too many channels" -msgstr "太多的通道" +#: src/emc/rs274ngc/interp_convert.cc:3152 +msgid "Invalid analog index with M67" +msgstr "無效的模擬指標使用 M67" -#: src/hal/utils/scope_vert.c:850 -msgid "" -"You cannot add another channel.\n" -"\n" -"Either turn off one or more channels, or shorten\n" -"the record length to allow for more channels" -msgstr "" -"你可以不新增另一個通道.\n" -"\n" -"要么關閉一個或多個通道,或縮短的記錄長度,\n" -"以便有更多的通道" +#: src/emc/rs274ngc/interp_convert.cc:3157 +msgid "Invalid analog index with M68" +msgstr "無效的模擬指標使用 M68" -#: src/hal/utils/scope_vert.c:1026 -msgid "Select Channel Source" -msgstr "選擇通道來源" +#: src/emc/rs274ngc/interp_convert.cc:3188 +#, fuzzy +msgid "Need non-negative Q-word to specify tool number with M61" +msgstr "需要正的 Q-字 指定刀具號 當使用M61" -#: src/hal/utils/scope_vert.c:1027 -#, c-format -msgid "" -"Select a pin, signal, or parameter\n" -"as the source for channel %d." +#: src/emc/rs274ngc/interp_convert.cc:3258 +msgid "Q word with M19 requires a value > 0" msgstr "" -"選擇一個 針,信號或參數\n" -"作為源通道 %d." -#: src/hal/utils/scope_vert.c:1059 -msgid "Pins" -msgstr "針" +#: src/emc/rs274ngc/interp_convert.cc:3286 +msgid "Cannot restore context from invalid stack frame - missing M70/M73?" +msgstr "" -#: src/hal/utils/scope_vert.c:1060 -msgid "Signals" -msgstr "信號" +#: src/emc/rs274ngc/interp_convert.cc:3327 +#: src/emc/rs274ngc/interp_convert.cc:3344 +#: src/emc/rs274ngc/interp_convert.cc:3359 +#: src/emc/rs274ngc/interp_convert.cc:3373 +#: src/emc/rs274ngc/interp_convert.cc:3387 +msgid "Cannot enable overrides with cutter radius compensation on" +msgstr "無法啟用超速 當刀具半徑補償在使用" -#: src/hal/utils/scope_vert.c:1061 -msgid "Parameters" -msgstr "參數" +#: src/emc/rs274ngc/interp_convert.cc:3334 +#: src/emc/rs274ngc/interp_convert.cc:3349 +#: src/emc/rs274ngc/interp_convert.cc:3364 +#: src/emc/rs274ngc/interp_convert.cc:3378 +#: src/emc/rs274ngc/interp_convert.cc:3392 +msgid "Cannot disable overrides with cutter radius compensation on" +msgstr "無法禁用超速 當刀具半徑補償在使用" -#: src/hal/utils/scope_trig.c:110 +#: src/emc/rs274ngc/interp_convert.cc:3506 +#: src/emc/rs274ngc/interp_convert.cc:3507 +#: src/emc/rs274ngc/interp_convert.cc:3508 #, c-format -msgid "Falling" -msgstr "下降" +msgid "Indexing axis %c can only be moved with G0" +msgstr "指標軸 %c 只能 用 G0 移動" -#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:275 +#: src/emc/rs274ngc/interp_convert.cc:3515 +#: src/emc/rs274ngc/interp_convert.cc:3517 +#: src/emc/rs274ngc/interp_convert.cc:3519 #, c-format -msgid "Rising" -msgstr "上升" +msgid "Indexing axis %c can only be moved alone" +msgstr "指標軸 %c 只能單獨移動 " -#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:283 -msgid "" -"Source\n" -"None" -msgstr "" -"來源\n" -"沒有" +#: src/emc/rs274ngc/interp_convert.cc:3621 +msgid "Cannot probe with feed per rev mode" +msgstr "無法 探測 使用 進給每轉 模式" -#: src/hal/utils/scope_trig.c:124 -#, c-format -msgid "" -"Source\n" -"Chan %2d" -msgstr "" -"來源\n" -"通道 %2d" +#: src/emc/rs274ngc/interp_convert.cc:3669 +msgid "Cannot change retract mode with cutter radius compensation on" +msgstr "不能改變回縮模式當刀具半徑補償在使用" -#: src/hal/utils/scope_trig.c:199 tcl/tklinuxcnc.tcl:827 -#: src/emc/usr_intf/touchy/touchy.glade:2469 -msgid "Auto" -msgstr "自動" +#: src/emc/rs274ngc/interp_convert.cc:3703 +msgid "G10 L1 without offsets has no effect" +msgstr "" -#: src/hal/utils/scope_trig.c:201 -msgid "Force" -msgstr "強制" +#: src/emc/rs274ngc/interp_convert.cc:3809 +msgid "Q number in G10 is not an integer" +msgstr "Q 編號在 G10 是不是整數" -#: src/hal/utils/scope_trig.c:235 src/hal/utils/scope_trig.c:269 -msgid "Level" -msgstr "等級" +#: src/emc/rs274ngc/interp_convert.cc:3810 +msgid "Invalid tool orientation" +msgstr "無效的刀具定位" -#: src/hal/utils/scope_trig.c:303 -msgid "Trigger Source" -msgstr "觸發源" +#: src/emc/rs274ngc/interp_convert.cc:3933 +msgid "I J words not allowed with G10 L2" +msgstr "" -#: src/hal/utils/scope_trig.c:304 -msgid "Select a channel to use for triggering." -msgstr "選擇一個通道用於觸發" +#: src/emc/rs274ngc/interp_convert.cc:3954 +msgid "" +"Cannot change the active coordinate system with cutter radius compensation on" +msgstr "不能改變激活的坐標系當刀具半徑補償在使用" -#: src/hal/utils/scope_trig.c:327 -msgid "Chan" -msgstr "通道" +#: src/emc/rs274ngc/interp_convert.cc:3962 +msgid "R not allowed in G10 L20" +msgstr "R 不容許在 G10 L20" -#: src/hal/utils/scope_trig.c:328 -msgid "Source" -msgstr "來源" +#: src/emc/rs274ngc/interp_convert.cc:4550 +msgid "Spindle not turning in G33" +msgstr "在 G33 主軸不轉動" -#: src/emc/motion/control.c:261 -msgid "Unexpected realtime delay: check dmesg for details." -msgstr "意外的實時延遲:檢查 dmesg的詳細信息." +#: src/emc/rs274ngc/interp_convert.cc:4560 +msgid "Spindle not turning in G33.1" +msgstr "在 G33.1 主軸不轉動" -#: src/emc/motion/control.c:263 -#, c-format -msgid "" -"\n" -"In recent history there were\n" -"%ld, %ld, %ld, %ld, and %ld\n" -"elapsed clocks between calls to the motion controller.\n" -msgstr "" +#: src/emc/rs274ngc/interp_convert.cc:4603 +msgid "BUG: An axis incorrectly moved along with an indexer" +msgstr "BUG: 一軸錯誤地和索引器一起移動" -#: src/emc/motion/control.c:268 -#, c-format -msgid "" -"This time, there were %ld which is so anomalously\n" -"large that it probably signifies a problem with your\n" -"realtime configuration. For the rest of this run of\n" -"EMC, this message will be suppressed.\n" -"\n" -msgstr "" +#: src/emc/rs274ngc/interp_convert.cc:4616 +msgid "BUG: trying to index incorrect axis" +msgstr "BUG: 試圖指標不正確軸" -#: src/emc/motion/control.c:384 -msgid "G38.4 move finished without breaking contact." -msgstr "G38.4 移動完成後不阻斷接觸." +#: src/emc/rs274ngc/interp_convert.cc:4708 +msgid "Cannot use G76 threading cycle with cutter radius compensation on" +msgstr "不能使用G76螺紋週期當刀具半徑補償在使用" -#: src/emc/motion/control.c:387 -msgid "G38.2 move finished without making contact." -msgstr "G38.2 移動完成後不作出接觸." +#: src/emc/rs274ngc/interp_convert.cc:4711 +msgid "In G76, I must not be 0" +msgstr "在 G76,I 不能為 0" -#: src/emc/motion/control.c:401 -msgid "Probe tripped during non-probe MDI command." -msgstr "探頭跳閘在非探測 MDI 命令." +#: src/emc/rs274ngc/interp_convert.cc:4713 +msgid "In G76, J must be greater than 0" +msgstr "在 G76,J 必須大於 0" -#: src/emc/motion/control.c:429 -msgid "Probe tripped during homing motion." -msgstr "探頭跳閘在歸零運動." +#: src/emc/rs274ngc/interp_convert.cc:4715 +msgid "In G76, K must be greater than J" +msgstr "在 G76,K 必須大於 J" -#: src/emc/motion/control.c:433 -msgid "Probe tripped during a jog." -msgstr "探頭跳閘當正在慢步." +#: src/emc/rs274ngc/interp_convert.cc:4858 +msgid "" +"Length of cutter compensation entry move is not greater than the tool radius" +msgstr "刀具長度補償 進入移動 不大於刀具半徑" -#: src/emc/motion/control.c:578 -#, fuzzy, c-format -msgid "fault %d during orient in progress" -msgstr "歸零 已在 進行中" +#: src/emc/rs274ngc/interp_convert.cc:5077 +msgid "Zero degree inside corner is invalid for cutter compensation" +msgstr "零度內角 是無效的刀具補償" -#: src/emc/motion/control.c:718 -msgid "motion stopped by enable input" -msgstr "運動停止因有 允許 輸入" +#: src/emc/rs274ngc/interp_convert.cc:5115 +#: src/emc/rs274ngc/interp_convert.cc:5123 +msgid "" +"Arc to straight motion makes a corner the compensated tool can't fit in " +"without gouging" +msgstr "弧到直線運動做的角,補償工具不適合會做成刨削槽" -#: src/emc/motion/control.c:741 -#, c-format -msgid "joint %d on limit switch error" -msgstr "Joint %d 在限位開關 故障" +#: src/emc/rs274ngc/interp_convert.cc:5207 +msgid "Cannot change tools with cutter radius compensation on" +msgstr "不能更改工具,刀具半徑補償在使用" -#: src/emc/motion/control.c:753 -#, c-format -msgid "joint %d amplifier fault" -msgstr "Joint %d 放大器故障" +#: src/emc/rs274ngc/interp_convert.cc:5328 +msgid "Cannot change tool offset with cutter radius compensation on" +msgstr "不能改變刀具補償當刀具半徑補償在使用" -#: src/emc/motion/control.c:762 +#: src/emc/rs274ngc/interp_queue.cc:694 #, c-format -msgid "joint %d following error" -msgstr "Joint %d 跟隨 故障" +msgid "" +"BUG: cutter compensation has generated an invalid arc with mismatched radii " +"r1 %f r2 %f\n" +msgstr "BUG: 刀具補償產生了一個無效的圓弧半徑不匹配的 r1 %f r2 %f\n" -#: src/emc/motion/control.c:1444 -#, c-format -msgid "Exceeded positive soft limit on joint %d" -msgstr "超出 正 軟極限在 Joint %d" +#: src/emc/rs274ngc/interp_queue.cc:716 +msgid "BUG: Unsupported plane in cutter compensation" +msgstr "BUG: 不支持的平面刀具補償" -#: src/emc/motion/control.c:1449 -#, c-format -msgid "Exceeded negative soft limit on joint %d" -msgstr "超出 負 軟限制在 Joint %d" +#: src/emc/rs274ngc/interp_queue.cc:729 +msgid "" +"Straight traverse in concave corner cannot be reached by the tool without " +"gouging" +msgstr "直導線在凹角不能達到,會做成刨削槽" -#: src/emc/motion/command.c:159 +#: src/emc/rs274ngc/interp_queue.cc:757 #, c-format -msgid "Can't jog invalid joint number %d." -msgstr "不能 慢步 無效的 Joint 號碼 %d." +msgid "BUG: Unsupported plane [%d] in cutter compensation" +msgstr "BUG: 不支持的平面 [%d] 中的刀具補償" -#: src/emc/motion/command.c:163 -#, c-format -msgid "Can't jog joint %d further past max hard limit." -msgstr "不能 慢步 joint %d 超過 最大 的 硬 極限." +#: src/emc/rs274ngc/interp_queue.cc:771 +msgid "" +"Straight feed in concave corner cannot be reached by the tool without gouging" +msgstr "在凹角直進給不能達到,會做成刨削槽" -#: src/emc/motion/command.c:168 -#, c-format -msgid "Can't jog joint %d further past min hard limit." -msgstr "不能 慢步 Joint %d 超過 最小 的 硬 極限." +#: src/emc/rs274ngc/interp_cycles.cc:630 +msgid "Cannot feed with zero feed rate" +msgstr "不能進給當進給速率為零" -#: src/emc/motion/command.c:174 -#, c-format -msgid "Can't jog joint %d further past max soft limit." -msgstr "不能 慢步 Joint %d 超過 最大 的 軟 極限" +#: src/emc/rs274ngc/interp_cycles.cc:631 +msgid "Cannot use inverse time feed with canned cycles" +msgstr "不能用反時限進給 當使用固定循環" -#: src/emc/motion/command.c:179 -#, c-format -msgid "Can't jog joint %d further past min soft limit." -msgstr "不能 慢步 Joint %d 超過 最小 的 軟 極限" +#: src/emc/rs274ngc/interp_cycles.cc:632 +msgid "Cannot use canned cycles with cutter compensation on" +msgstr "不能用固定循環當刀具補償在使用中" -#: src/emc/motion/command.c:237 -#, c-format -msgid "%s move on line %d would exceed joint %d's positive limit" -msgstr "%s 在線 %d 移動 將超過 joint %d 的 正 極限" +#: src/emc/rs274ngc/interp_cycles.cc:829 +msgid "G17 canned cycle is not possible on a machine without Z axis" +msgstr "G17 固定循環是不可能的,機器上沒有 Z 軸" -#: src/emc/motion/command.c:240 -#, c-format -msgid "%s move in MDI would exceed joint %d's positive limit" -msgstr "%s 在 MDI 移動 將超過 joint %d 的 正 極限" +#: src/emc/rs274ngc/interp_cycles.cc:1015 +msgid "G17.1 canned cycle is not possible on a machine without W axis" +msgstr "G17.1 固定循環是不可能的機器上沒有 W 軸" -#: src/emc/motion/command.c:247 -#, c-format -msgid "%s move on line %d would exceed joint %d's negative limit" -msgstr "%s 在線 %d 移動 將超過 joint %d 的 負 極限" +#: src/emc/rs274ngc/interp_cycles.cc:1231 +msgid "G19 canned cycle is not possible on a machine without X axis" +msgstr "G19 固定循環是不可能的機器上沒有 X 軸" -#: src/emc/motion/command.c:250 -#, c-format -msgid "%s move in MDI would exceed joint %d's negative limit" -msgstr "%s 在 MDI 移動 將超過 joint %d 的 負 極限" +#: src/emc/rs274ngc/interp_cycles.cc:1399 +msgid "G19.1 canned cycle is not possible on a machine without U axis" +msgstr "G19.1 固定循環是不可能的機器上沒有 U 軸" -#: src/emc/motion/command.c:500 -msgid "all joints must be homed before going into coordinated mode" -msgstr "所有 joint 一定 要在 零點 才能 進入 坐標 模式" +#: src/emc/rs274ngc/interp_cycles.cc:1624 +msgid "G18 canned cycle is not possible on a machine without Y axis" +msgstr "G18 固定循環是不可能的機器上沒有 Y 軸" -#: src/emc/motion/command.c:521 -msgid "all joints must be homed before going into teleop mode" -msgstr "所有 joint 一定 要在 零點 才能 進入 遠程操作 模式" +#: src/emc/rs274ngc/interp_cycles.cc:1791 +msgid "G18.1 canned cycle is not possible on a machine without V axis" +msgstr "G18.1 固定循環是不可能的機器上沒有 V 軸" -#: src/emc/motion/command.c:675 src/emc/motion/command.c:741 -#: src/emc/motion/command.c:814 -msgid "Can't jog joint in coordinated mode." -msgstr "不能 慢步 joint 在 坐標 模式" +#: src/emc/rs274ngc/interp_find.cc:170 +msgid "Cannot use polar coordinates with G53" +msgstr "不能用極坐標使用 G53" -#: src/emc/motion/command.c:680 src/emc/motion/command.c:746 -#: src/emc/motion/command.c:819 -msgid "Can't jog joint when not enabled." -msgstr "不能 慢步 joint 當 未有 允許 " +#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 +#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 +#: src/emc/rs274ngc/interp_find.cc:347 +msgid "Cannot specify X or Y words with polar coordinate" +msgstr "無法指定X或Y字當使用極坐標" -#: src/emc/motion/command.c:685 src/emc/motion/command.c:824 -msgid "Can't jog any joints while homing." -msgstr "不能 慢步 joint 當 在 歸零 時" +#: src/emc/rs274ngc/interp_find.cc:272 +msgid "Must specify angle in polar coordinate if at the origin" +msgstr "必須指定角度在極坐標如過在原點" -#: src/emc/motion/command.c:751 -msgid "Can't jog any joint while homing." -msgstr "不能 慢步 joint 當 在 歸零 時" +#: src/emc/rs274ngc/interp_find.cc:338 +msgid "" +"Incremental motion with polar coordinates is indeterminate when at the origin" +msgstr "增量運動使用極坐標是不確定的,當在原點" -#: src/emc/motion/command.c:881 -msgid "need to be enabled, in coord mode for linear move" -msgstr "要有 允許 才 能 在 坐標 模式 作 直線 移動" +#: src/emc/rs274ngc/interp_find.cc:348 +msgid "G91 motion with polar coordinates is indeterminate when at the origin" +msgstr "G91運動使用極坐標是不確定的,當在原點" -#: src/emc/motion/command.c:891 -msgid "can't do linear move with limits exceeded" -msgstr "不能 加入 直線 移動 當 超出 極限" +#: src/emc/rs274ngc/interp_find.cc:720 +#, c-format +msgid "Requested tool %d not found in the tool table" +msgstr "請求工具 %d 刀具表找不到" -#: src/emc/motion/command.c:910 -msgid "can't add linear move" -msgstr "不能 加入 直線 移動" +#: src/emc/rs274ngc/interp_internal.cc:161 +msgid "Cannot use polar coordinate on a machine lacking X or Y axes" +msgstr "不能用極坐標的機器上沒有 X或Y軸" -#: src/emc/motion/command.c:930 -msgid "need to be enabled, in coord mode for circular move" -msgstr "需要允許才能 作 坐標模式 的環形移動" +#: src/emc/rs274ngc/interp_internal.cc:162 +msgid "Cannot use polar coordinate except in G17 plane" +msgstr "不能使用極坐標除在G17平面" -#: src/emc/motion/command.c:940 -msgid "can't do circular move with limits exceeded" -msgstr "不能作 環形的 移動 當 超出 極限" +#: src/emc/rs274ngc/interp_internal.cc:163 +msgid "Cannot specify both polar coordinate and X word" +msgstr "不能同時指定極坐標和 X 字" -#: src/emc/motion/command.c:958 -msgid "can't add circular move" -msgstr "不能 加入 環形的 移動" +#: src/emc/rs274ngc/interp_internal.cc:164 +msgid "Cannot specify both polar coordinate and Y word" +msgstr "不能同時指定極坐標和 Y 字" -#: src/emc/motion/command.c:1048 -msgid "MOTION: can't STEP while already executing" -msgstr "動作: 不能 STEP 當 已 在 執行 " +#: src/emc/rs274ngc/interp_internal.cc:185 +#: src/emc/rs274ngc/interp_internal.cc:199 +#: src/emc/rs274ngc/interp_internal.cc:214 +msgid "Polar coordinates can only be used for motion" +msgstr "極坐標只能用於運動" -#: src/emc/motion/command.c:1140 -msgid "can't enable motion, enable input is false" -msgstr "不能 允許 的動作, 允許 輸入 是 偽 " +#: src/emc/rs274ngc/interp_read.cc:1150 src/emc/rs274ngc/interp_read.cc:1154 +#, c-format +msgid "Bad character '\\%03o' used" +msgstr "" -#: src/emc/motion/command.c:1213 -msgid "must be in joint mode to home" -msgstr "一定 要在 Joint 模式 才能 歸零 " +#: src/emc/rs274ngc/interp_read.cc:1154 +#, c-format +msgid "Bad character '%c' used" +msgstr "使用了錯誤字元 '%c'" -#: src/emc/motion/command.c:1224 src/emc/motion/command.c:1235 -msgid "homing sequence already in progress" -msgstr "歸零 序列 已在 進行中" +#: src/emc/rs274ngc/interp_read.cc:1678 +msgid "Left bracket missing after 'while'" +msgstr "'while' 後丟失左括號" -#: src/emc/motion/command.c:1233 -msgid "homing already in progress" -msgstr "歸零 已在 進行中" +#: src/emc/rs274ngc/interp_read.cc:1693 +msgid "Left bracket missing after 'repeat'" +msgstr "'repeat' 後丟失左括號" -#: src/emc/motion/command.c:1263 -msgid "must be in joint mode or disabled to unhome" -msgstr "一定 要在 Joint 模式 或 不允許 才 可以 離零" +#: src/emc/rs274ngc/interp_read.cc:1708 +msgid "Left bracket missing after 'if'" +msgstr "'if' 後丟失左括號" -#: src/emc/motion/command.c:1275 src/emc/motion/command.c:1298 -#, c-format -msgid "Cannot unhome while homing, joint %d" -msgstr "不能 離零 當 在 歸零中, Joint %d" +#: src/emc/rs274ngc/interp_read.cc:1723 +msgid "Left bracket missing after 'elseif'" +msgstr "'elseif' 後丟失左括號" -#: src/emc/motion/command.c:1279 src/emc/motion/command.c:1302 -#, c-format -msgid "Cannot unhome while moving, joint %d" -msgstr "不能 離零 當 在 移動 中, Joint %d " +#: src/emc/rs274ngc/interp_read.cc:1926 +msgid "Cannot read current position with cutter radius compensation on" +msgstr "" + +#: src/emc/rs274ngc/interp_read.cc:1941 +msgid "Expected # reading parameter" +msgstr "預計 # 讀參數" + +#: src/emc/rs274ngc/interp_read.cc:1943 +msgid "Expected ] reading bracketed parameter" +msgstr "預期 ] 讀方括號內的參數" -#: src/emc/motion/command.c:1307 +#: src/emc/rs274ngc/interp_read.cc:2615 #, c-format -msgid "Cannot unhome inactive joint %d" -msgstr "不能 離零 未激活的 Joint %d" +msgid "bad number format (conversion failed) parsing '%s'" +msgstr "不良數字格式 (轉換失敗) 解析 '%s'" -#: src/emc/motion/command.c:1311 +#: src/emc/rs274ngc/interp_read.cc:2616 #, c-format -msgid "Cannot unhome invalid joint %d (max %d)" -msgstr "不能 離零 無效的 Joint %d (max %d) " +msgid "bad number format (trailing characters) parsing '%s'" +msgstr "不良數字格式 (尾隨字符) 解析 '%s'" -#: src/emc/motion/command.c:1338 -msgid "need to be enabled, in coord mode for probe move" -msgstr "" +#: src/emc/rs274ngc/interp_read.cc:2706 +msgid "Calculation resulted in 'not a number'" +msgstr "計算結果 'not a number'" -#: src/emc/motion/command.c:1348 -msgid "can't do probe move with limits exceeded" -msgstr "" +#: src/emc/rs274ngc/interp_read.cc:2708 +msgid "Calculation resulted in 'infinity'" +msgstr "計算結果 'infinity'" -#: src/emc/motion/command.c:1362 -msgid "Probe is already clear when starting G38.4 or G38.5 move" +#: src/emc/rs274ngc/interp_read.cc:3001 +#, c-format +msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" msgstr "" -#: src/emc/motion/command.c:1364 -msgid "Probe is already tripped when starting G38.2 or G38.3 move" -msgstr "" - -#: src/emc/motion/command.c:1376 -msgid "can't add probe move" -msgstr "" +#: src/emc/rs274ngc/interp_read.cc:3113 +msgid "Multiple U words on one line" +msgstr "多個 U 字在一行" -#: src/emc/motion/command.c:1400 -msgid "need to be enabled, in coord mode for rigid tap move" -msgstr "" +#: src/emc/rs274ngc/interp_read.cc:3129 +msgid "Multiple V words on one line" +msgstr "多個 V 字在一行" -#: src/emc/motion/command.c:1410 -msgid "can't do rigid tap move with limits exceeded" -msgstr "" +#: src/emc/rs274ngc/interp_read.cc:3145 +msgid "Multiple W words on one line" +msgstr "多個 W 字在一行" -#: src/emc/motion/command.c:1421 -msgid "can't add rigid tap move" +#: src/emc/rs274ngc/interp_o_word.cc:97 +#, c-format +msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" msgstr "" -#: src/emc/motion/command.c:1435 -msgid "need to be enabled, in teleop mode for teleop move" -msgstr "" +#: src/emc/rs274ngc/interp_o_word.cc:722 +#, fuzzy, c-format +msgid "%d: not in a subroutine definition: '%s'" +msgstr "未在子程序定義" -#: src/emc/motion/command.c:1605 +#: src/emc/rs274ngc/interp_o_word.cc:759 src/emc/rs274ngc/interp_o_word.cc:809 #, c-format -msgid "joint %d: too many compensation entries" -msgstr "joint %d: 太多的補償條目" +msgid "%d: duplicate O-word label: '%s' - defined in line %d" +msgstr "" -#: src/emc/motion/command.c:1611 +#: src/emc/rs274ngc/interp_o_word.cc:862 #, c-format -msgid "joint %d: compensation values must increase" -msgstr "joint %d: 補償值必須增加" +msgid "%d: duplicate O-word label - already defined in line %d: '%s'" +msgstr "" -#: src/emc/motion/command.c:1640 +#: src/emc/rs274ngc/interp_o_word.cc:886 src/emc/rs274ngc/interp_o_word.cc:944 +#: src/emc/rs274ngc/interp_o_word.cc:978 src/emc/rs274ngc/interp_o_word.cc:996 +#: src/emc/rs274ngc/interp_o_word.cc:1013 +#: src/emc/rs274ngc/interp_o_word.cc:1038 #, c-format -msgid "unrecognized command %d" +msgid "%d: undefined O-word label: '%s'" msgstr "" -#: src/emc/motion/motion.c:185 -msgid "MOTION: hal_init() failed\n" +#: src/emc/rs274ngc/interp_o_word.cc:889 src/emc/rs274ngc/interp_o_word.cc:947 +#, c-format +msgid "%d: no matching 'if' label: '%s' (found '%s' in line %d)" msgstr "" -#: src/emc/motion/motion.c:190 +#: src/emc/rs274ngc/interp_o_word.cc:981 #, c-format -msgid "MOTION: num_joints is %d, must be between 1 and %d\n" +msgid "%d: no matching label: '%s' (found '%s' in line %d): '%s'" msgstr "" -#: src/emc/motion/motion.c:197 +#: src/emc/rs274ngc/interp_o_word.cc:999 src/emc/rs274ngc/interp_o_word.cc:1016 #, c-format -msgid "MOTION: num_dio is %d, must be between 1 and %d\n" +msgid "%d: no matching while/do label: '%s' (found '%s' in line %d)" msgstr "" -#: src/emc/motion/motion.c:204 +#: src/emc/rs274ngc/interp_o_word.cc:1042 #, c-format -msgid "MOTION: num_aio is %d, must be between 1 and %d\n" +msgid "%d: no matching label: '%s' (found '%s' in line %d)" msgstr "" -#: src/emc/motion/motion.c:212 -msgid "MOTION: init_hal_io() failed\n" -msgstr "" +#: src/emc/rs274ngc/interp_namedparams.cc:166 +#, c-format +msgid "Named parameter #<%s> not defined" +msgstr "命名參數 #<%s> 沒有定義" -#: src/emc/motion/motion.c:221 -msgid "MOTION: init_comm_buffers() failed\n" -msgstr "" +#: src/emc/rs274ngc/interp_namedparams.cc:196 +#, fuzzy, c-format +msgid "cant open ini file '%s'" +msgstr "不能打開 %s" -#: src/emc/motion/motion.c:229 -msgid "MOTION: init_threads() failed\n" -msgstr "" +#: src/emc/rs274ngc/interp_namedparams.cc:213 +#, fuzzy, c-format +msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" +msgstr "命名參數 #<%s> 沒有定義" -#: src/emc/motion/motion.c:254 +#: src/emc/rs274ngc/interp_namedparams.cc:237 #, c-format -msgid "MOTION: hal_stop_threads() failed, returned %d\n" +msgid "fetch_hal_param: hal_init(%s): %d" msgstr "" -#: src/emc/motion/motion.c:260 +#: src/emc/rs274ngc/interp_namedparams.cc:238 #, c-format -msgid "MOTION: rtapi_shmem_delete() failed, returned %d\n" +msgid "fetch_hal_param: hal_ready(): %d" msgstr "" -#: src/emc/motion/motion.c:266 +#: src/emc/rs274ngc/interp_namedparams.cc:419 #, c-format -msgid "MOTION: hal_exit() failed, returned %d\n" -msgstr "" - -#: src/emc/motion/motion.c:289 -msgid "MOTION: emcmot_hal_data malloc failed\n" -msgstr "" +msgid "Internal error: Could not assign #<%s>" +msgstr "內部錯誤:無法指派 #<%S>" -#: src/emc/motion/motion.c:597 +#: src/emc/rs274ngc/interp_namedparams.cc:427 #, c-format -msgid "MOTION: joint %d pin/param export failed\n" +msgid "Cannot assign to read-only parameter #<%s>" msgstr "" -#: src/emc/motion/homing.c:80 src/emc/motion/homing.c:748 +#: src/emc/rs274ngc/interp_namedparams.cc:731 #, c-format -msgid "hit limit in home state %d" +msgid "BUG: lookup_named_param(%s): unhandled index=%fn" msgstr "" -#: src/emc/motion/homing.c:90 -#, c-format -msgid "end of move in home state %d" -msgstr "" +#: src/emc/rs274ngc/rs274ngc_pre.cc:1407 src/emc/rs274ngc/rs274ngc_pre.cc:1482 +msgid "Queue is not empty after tool change" +msgstr "換刀後隊列不空" -#: src/emc/motion/homing.c:185 +#: src/emc/rs274ngc/rs274ngc_pre.cc:1786 #, c-format -msgid "unknown state '%d' during homing sequence" -msgstr "" +msgid "Unable to open parameter file: '%s'" +msgstr "無法打開參數文件: '%s'" -#: src/emc/motion/homing.c:246 -msgid "Cannot home while shared home switch is closed" -msgstr "" +#: src/emc/rs274ngc/rs274ngc_return.hh:19 +msgid "A file is already open" +msgstr "一個文件已經打開" -#: src/emc/motion/homing.c:290 -msgid "" -"invalid homing config: non-zero LATCH_VEL needs either SEARCH_VEL or " -"USE_INDEX" -msgstr "" +#: src/emc/rs274ngc/rs274ngc_return.hh:21 +#, fuzzy +msgid "All axes missing with g52 or g92" +msgstr "所有軸缺少使用 G92" -#: src/emc/motion/homing.c:299 -msgid "invalid homing config: non-zero SEARCH_VEL needs LATCH_VEL" -msgstr "" +#: src/emc/rs274ngc/rs274ngc_return.hh:22 +msgid "All axes missing with motion code" +msgstr "所有軸缺少運動代碼" -#: src/emc/motion/homing.c:447 -msgid "Home switch inactive before start of backoff move" -msgstr "" +#: src/emc/rs274ngc/rs274ngc_return.hh:23 +msgid "Arc radius too small to reach end point" +msgstr "圓弧半徑太小,無法達到終點" -#: src/emc/motion/homing.c:495 -msgid "Home switch active before start of latch move" -msgstr "" +#: src/emc/rs274ngc/rs274ngc_return.hh:24 +msgid "Argument to acos out of range" +msgstr "acos 參數超出範圍" -#: src/emc/motion/homing.c:551 -msgid "Home switch inactive before start of latch move" -msgstr "" +#: src/emc/rs274ngc/rs274ngc_return.hh:25 +msgid "Argument to asin out of range" +msgstr "asin 參數超出範圍" -#: src/emc/motion/homing.c:797 -#, c-format -msgid "unknown state '%d' during homing" -msgstr "" +#: src/emc/rs274ngc/rs274ngc_return.hh:26 +msgid "Attempt to divide by zero" +msgstr "嘗試除以零" -#: tcl/bin/emccalib.tcl:80 -#, fuzzy -msgid "LinuxCNC Servo Axis Calibration" -msgstr "EMC2 伺服軸 校準" +#: src/emc/rs274ngc/rs274ngc_return.hh:27 +msgid "Attempt to raise negative to non integer power" +msgstr "試圖提高負對非整數冪" -#: tcl/bin/emccalib.tcl:90 -msgid "Save To File" -msgstr "保存到文件" +#: src/emc/rs274ngc/rs274ngc_return.hh:28 +msgid "Bad format unsigned integer" +msgstr "壞格式無符號整數" -#: tcl/bin/emccalib.tcl:106 tcl/bin/genedit.tcl:77 tcl/bin/halconfig.tcl:151 -#: tcl/bin/halshow.tcl:85 tcl/mini.tcl:2516 tcl/tklinuxcnc.tcl:719 -#: tcl/ngcgui.tcl:549 -msgid "File" -msgstr "文件" +#: src/emc/rs274ngc/rs274ngc_return.hh:29 +msgid "Bad number format" +msgstr "錯誤的數字格式" -#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:231 tcl/bin/halconfig.tcl:153 -#: tcl/mini.tcl:3558 src/emc/usr_intf/touchy/touchy.glade:2420 -msgid "Refresh" -msgstr "刷新" +#: src/emc/rs274ngc/rs274ngc_return.hh:30 +msgid "Bug bad g code modal group 0" +msgstr "錯誤: 不良 g 代碼模式組 0" -#: tcl/bin/emccalib.tcl:110 tcl/bin/genedit.tcl:82 tcl/bin/halconfig.tcl:155 -#: tcl/mini.tcl:2535 -msgid "Save" -msgstr "保存" +#: src/emc/rs274ngc/rs274ngc_return.hh:31 +msgid "Bug code not g0 or g1" +msgstr "錯誤: 代碼不 g0 或 g1" -#: tcl/bin/emccalib.tcl:159 tcl/bin/halconfig.tcl:623 -#, tcl-format -msgid "Tune %d" -msgstr "微調 %d" +#: src/emc/rs274ngc/rs274ngc_return.hh:32 +msgid "Bug code not g17 g18 or g19" +msgstr "錯誤: 代碼不是 g17 g18或 g19" -#: tcl/bin/emccalib.tcl:160 tcl/bin/halconfig.tcl:628 -msgid "INI Name" -msgstr "INI 名字" +#: src/emc/rs274ngc/rs274ngc_return.hh:33 +msgid "Bug code not g20 or g21" +msgstr "錯誤: 代碼不是 g20 或 g21" -#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:629 -msgid "HAL's Value" -msgstr "HAL 之數值" +#: src/emc/rs274ngc/rs274ngc_return.hh:34 +msgid "Bug code not g28 or g30" +msgstr "錯誤: 代碼不是 g28 或g30" -#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:631 -msgid "Next Value" -msgstr "下一個數值" +#: src/emc/rs274ngc/rs274ngc_return.hh:35 +msgid "Bug code not g2 or g3" +msgstr "錯誤: 代碼不是 g2 或 g3" -#: tcl/bin/emccalib.tcl:225 tcl/bin/halconfig.tcl:680 -#: tcl/bin/halconfig.tcl:731 -msgid "Test" -msgstr "測試" +#: src/emc/rs274ngc/rs274ngc_return.hh:37 +#, fuzzy +msgid "Bug code not g4 g10 g28 g30 g52 g53 or g92 series" +msgstr "錯誤: 代碼 g10 g28 g30 不是 g4 g53 或 g92系列" -#: tcl/bin/emccalib.tcl:358 tcl/bin/halconfig.tcl:883 -#, tcl-format -msgid "" -"The HAL parameter \n" -" %s \n" -" has changed. \n" -" Really quit?" -msgstr "" -"HAL 的 參數 \n" -" %s \n" -" 已經改變. \n" -" 真的退出?" +#: src/emc/rs274ngc/rs274ngc_return.hh:38 +msgid "Bug code not g61 g61.1 or g64" +msgstr "錯誤: 代碼不是 g61或 g64 g61.1" -#: tcl/bin/emccalib.tcl:383 tcl/bin/halconfig.tcl:1170 -msgid "" -"Not permitted to save here.\n" -"\n" -" You need to copy a configuration to your home directory and work there." +#: src/emc/rs274ngc/rs274ngc_return.hh:39 +msgid "Bug code not g90 or g91" msgstr "" -"不允許保存到這兒.\n" -"\n" -" 你需要複製配置到你的主頁裡工作. " -#: tcl/bin/emccalib.tcl:457 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 -#: tcl/bin/pickconfig.tcl:544 tcl/bin/pickconfig.tcl:555 -#: tcl/scripts/Set_Coordinates.tcl:205 tcl/scripts/Set_Coordinates.tcl:228 -#, tcl-format -msgid "can't save %s" -msgstr "不能保存 %s" +#: src/emc/rs274ngc/rs274ngc_return.hh:40 +msgid "Bug code not g98 or g99" +msgstr "" -#: tcl/bin/emcdebug.tcl:166 tcl/bin/emcdebug.tcl:177 +#: src/emc/rs274ngc/rs274ngc_return.hh:41 #, fuzzy -msgid "LinuxCNC Debug" -msgstr "EMC 排錯" +msgid "Bug code not in g52 or g92 series" +msgstr "錯誤: 代碼 g10 g28 g30 不是 g4 g53 或 g92系列" -#: tcl/bin/emcdebug.tcl:185 -msgid "Invalid INI file entries" -msgstr "無效的INI文件項目" +#: src/emc/rs274ngc/rs274ngc_return.hh:42 +msgid "Bug code not in range g54 to g593" +msgstr "" -#: tcl/bin/emcdebug.tcl:186 -msgid "Configuration information" -msgstr "配置訊息" +#: src/emc/rs274ngc/rs274ngc_return.hh:43 +msgid "Bug code not m0 m1 m2 m30 m60" +msgstr "" -#: tcl/bin/emcdebug.tcl:187 -msgid "Use of defaults" -msgstr "使用預置值" +#: src/emc/rs274ngc/rs274ngc_return.hh:44 +msgid "Bug distance mode not g90 or g91" +msgstr "" -#: tcl/bin/emcdebug.tcl:188 -msgid "Version information" -msgstr "版本訊息" +#: src/emc/rs274ngc/rs274ngc_return.hh:45 +msgid "Bug function should not have been called" +msgstr "" -#: tcl/bin/emcdebug.tcl:189 -msgid "Command issuing" -msgstr "發出指令" +#: src/emc/rs274ngc/rs274ngc_return.hh:46 +msgid "Bug in tool radius comp" +msgstr "" -#: tcl/bin/emcdebug.tcl:190 -msgid "IO points" -msgstr "輸入輸出點" +#: src/emc/rs274ngc/rs274ngc_return.hh:47 +msgid "Bug plane not xy yz or xz" +msgstr "" -#: tcl/bin/emcdebug.tcl:191 -msgid "NML" +#: src/emc/rs274ngc/rs274ngc_return.hh:48 +msgid "Bug side not right or left" msgstr "" -#: tcl/bin/emcdebug.tcl:192 -msgid "Motion time" -msgstr "運動時間" - -#: tcl/bin/emcdebug.tcl:193 src/emc/usr_intf/axis/scripts/debuglevel.py:42 -msgid "Interpreter" -msgstr "解释程序" - -#: tcl/bin/emcdebug.tcl:194 -msgid "RCS" +#: src/emc/rs274ngc/rs274ngc_return.hh:49 +msgid "Bug unknown motion code" msgstr "" -#: tcl/bin/emcdebug.tcl:195 -msgid "Trajectory level" -msgstr "彈道水平" - -#: tcl/bin/emcdebug.tcl:196 -msgid "Interpreter list" -msgstr "解释程序名單" - -#: tcl/bin/genedit.tcl:78 tcl/mini.tcl:2533 -msgid "New" -msgstr "新" +#: src/emc/rs274ngc/rs274ngc_return.hh:50 +msgid "Bug unknown operation" +msgstr "" -#: tcl/bin/genedit.tcl:80 tcl/mini.tcl:1667 tcl/mini.tcl:2534 -#: tcl/tklinuxcnc.tcl:720 tcl/tklinuxcnc.tcl:1657 -msgid "Open..." -msgstr "打開..." +#: src/emc/rs274ngc/rs274ngc_return.hh:51 +msgid "Cannot change axis offsets with cutter radius comp" +msgstr "軸向的偏置" -#: tcl/bin/genedit.tcl:84 tcl/mini.tcl:2536 -msgid "Save As..." -msgstr "另存為..." +#: src/emc/rs274ngc/rs274ngc_return.hh:52 +msgid "Cannot create backup file" +msgstr "" -#: tcl/bin/genedit.tcl:87 tcl/bin/halconfig.tcl:165 tcl/bin/halshow.tcl:92 -#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1243 -#: tcl/ngcgui.tcl:3680 -msgid "Exit" -msgstr "退出" +#: src/emc/rs274ngc/rs274ngc_return.hh:53 +msgid "Cannot do g1 with zero feed rate" +msgstr "" -#: tcl/bin/genedit.tcl:91 tcl/mini.tcl:2517 -msgid "Edit" -msgstr "修訂" +#: src/emc/rs274ngc/rs274ngc_return.hh:54 +msgid "Cannot do zero repeats of cycle" +msgstr "" -#: tcl/bin/genedit.tcl:92 tcl/mini.tcl:2543 -msgid "Cut" -msgstr "切割" +#: src/emc/rs274ngc/rs274ngc_return.hh:55 +msgid "Cannot make arc with zero feed rate" +msgstr "" -#: tcl/bin/genedit.tcl:94 tcl/mini.tcl:2544 -msgid "Copy" -msgstr "複製" +#: src/emc/rs274ngc/rs274ngc_return.hh:56 +msgid "Cannot open backup file" +msgstr "" -#: tcl/bin/genedit.tcl:96 tcl/mini.tcl:2545 -msgid "Paste" -msgstr "貼上" +#: src/emc/rs274ngc/rs274ngc_return.hh:57 +msgid "Cannot open variable file" +msgstr "" -#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:68 -msgid "Select All" -msgstr "全選" +#: src/emc/rs274ngc/rs274ngc_return.hh:58 +msgid "Cannot probe with cutter radius comp on" +msgstr "" -#: tcl/bin/genedit.tcl:104 tcl/bin/halconfig.tcl:192 tcl/mini.tcl:919 -#: tcl/mini.tcl:2519 tcl/tklinuxcnc.tcl:790 -msgid "Help" -msgstr "求助" +#: src/emc/rs274ngc/rs274ngc_return.hh:59 +msgid "Cannot probe with zero feed rate" +msgstr "" -#: tcl/bin/genedit.tcl:105 tcl/mini.tcl:1011 tcl/mini.tcl:2559 -#: tcl/tklinuxcnc.tcl:796 -msgid "About..." -msgstr "關於..." +#: src/emc/rs274ngc/rs274ngc_return.hh:60 +msgid "Cannot put a b in canned cycle" +msgstr "" -#: tcl/bin/genedit.tcl:130 -msgid "Save and Reload" -msgstr "保存及重載" +#: src/emc/rs274ngc/rs274ngc_return.hh:61 +msgid "Cannot put a c in canned cycle" +msgstr "" -#: tcl/bin/genedit.tcl:133 tcl/mini.tcl:2550 -msgid "Find..." -msgstr "尋找..." +#: src/emc/rs274ngc/rs274ngc_return.hh:62 +msgid "Cannot put an a in canned cycle" +msgstr "" -#: tcl/bin/genedit.tcl:135 tcl/mini.tcl:2552 -msgid "Renumber File..." -msgstr "重新編號文件..." +#: src/emc/rs274ngc/rs274ngc_return.hh:63 +msgid "Cannot turn cutter radius comp on when on" +msgstr "" -#: tcl/bin/genedit.tcl:140 tcl/mini.tcl:917 tcl/mini.tcl:2518 -#: tcl/tklinuxcnc.tcl:746 -msgid "Settings" -msgstr "設定" +#: src/emc/rs274ngc/rs274ngc_return.hh:64 +msgid "Cannot use axis values with g80" +msgstr "" -#: tcl/bin/genedit.tcl:141 tcl/mini.tcl:2554 -msgid "No Numbering" -msgstr "沒有編號" +#: src/emc/rs274ngc/rs274ngc_return.hh:65 +msgid "Cannot use axis values without a g code that uses them" +msgstr "" -#: tcl/bin/genedit.tcl:144 tcl/mini.tcl:2556 -msgid "Line Numbering..." -msgstr "行編號..." +#: src/emc/rs274ngc/rs274ngc_return.hh:66 +msgid "Cannot use g28 or g30 with cutter radius comp" +msgstr "" -#: tcl/bin/genedit.tcl:150 tcl/tklinuxcnc.tcl:768 -msgid "Scripts" -msgstr "外部程序" +#: src/emc/rs274ngc/rs274ngc_return.hh:67 +msgid "Cannot use g53 incremental" +msgstr "" -#: tcl/bin/genedit.tcl:177 -msgid "About TkEditor" -msgstr "關于 TkEditor" +#: src/emc/rs274ngc/rs274ngc_return.hh:68 +msgid "Cannot use g53 with cutter radius comp" +msgstr "" -#: tcl/bin/genedit.tcl:179 -msgid "" -"TkEditor\n" -"\n" -"Simple Tcl/Tk Text Editor\n" -"\n" -"GPL Version 2" +#: src/emc/rs274ngc/rs274ngc_return.hh:69 +msgid "Cannot use two g codes that both use axis values" msgstr "" -#: tcl/bin/genedit.tcl:197 tcl/mini.tcl:1373 tcl/mini.tcl:1775 -#: tcl/tklinuxcnc.tcl:451 src/emc/task/emctaskmain.cc:2072 -#, c-format, tcl-format -msgid "can't open %s" -msgstr "不能打開 %s" +#: src/emc/rs274ngc/rs274ngc_return.hh:70 +msgid "Command too long" +msgstr "" -#: tcl/bin/genedit.tcl:267 tcl/mini.tcl:3090 -msgid "Find" +#: src/emc/rs274ngc/rs274ngc_return.hh:71 +msgid "Current point same as end point of arc" msgstr "" -#: tcl/bin/genedit.tcl:270 -msgid "Find:" -msgstr "尋找:" +#: src/emc/rs274ngc/rs274ngc_return.hh:72 +msgid "Dwell time missing with g4" +msgstr "停留時間缺少使用 G4 " -#: tcl/bin/genedit.tcl:276 -msgid "Replace:" -msgstr "取代:" +#: src/emc/rs274ngc/rs274ngc_return.hh:73 +msgid "Dwell time p word missing with g82" +msgstr "停留時間 P字樣缺少使用 G82" -#: tcl/bin/genedit.tcl:282 -msgid "Find All" -msgstr "查找全部" +#: src/emc/rs274ngc/rs274ngc_return.hh:74 +msgid "Dwell time p word missing with g86" +msgstr "停留時間 P字樣缺少使用 G86" -#: tcl/bin/genedit.tcl:285 tcl/mini.tcl:3113 -msgid "Replace All" -msgstr "全部替換" +#: src/emc/rs274ngc/rs274ngc_return.hh:75 +msgid "Dwell time p word missing with g88" +msgstr "停留時間 P字樣缺少使用 G88" -#: tcl/bin/genedit.tcl:288 -msgid "Skip This" -msgstr "跳過這個" +#: src/emc/rs274ngc/rs274ngc_return.hh:76 +msgid "Dwell time p word missing with g89" +msgstr "停留時間 P字樣缺少使用 G89" -#: tcl/bin/genedit.tcl:291 -msgid "Replace This" -msgstr "取代這個" +#: src/emc/rs274ngc/rs274ngc_return.hh:77 +msgid "Equal sign missing in parameter setting" +msgstr "參數 設置 缺少 等號" -#: tcl/bin/genedit.tcl:297 -msgid "Clear" -msgstr "清除" +#: src/emc/rs274ngc/rs274ngc_return.hh:78 +msgid "F word missing with inverse time arc move" +msgstr "反時限 圓弧 移動 缺少 F字" -#: tcl/bin/genedit.tcl:422 tcl/mini.tcl:2640 -msgid "Set Line Numbering" -msgstr "設定 行號" +#: src/emc/rs274ngc/rs274ngc_return.hh:79 +msgid "F word missing with inverse time g1 move" +msgstr "反時限 G1 移動 缺少 F字" -#: tcl/bin/genedit.tcl:424 tcl/mini.tcl:2644 -msgid "Increment" -msgstr "增量" +#: src/emc/rs274ngc/rs274ngc_return.hh:80 +msgid "File ended with no percent sign" +msgstr "文件結束時沒有%符號" -#: tcl/bin/genedit.tcl:426 tcl/mini.tcl:2646 -msgid "One" -msgstr "" +#: src/emc/rs274ngc/rs274ngc_return.hh:81 +msgid "File ended with no percent sign or program end" +msgstr "文件結束時沒有%或程序結束" -#: tcl/bin/genedit.tcl:429 tcl/mini.tcl:2648 -msgid "Two" -msgstr "" +#: src/emc/rs274ngc/rs274ngc_return.hh:82 +msgid "File name too long" +msgstr "文件名太長" -#: tcl/bin/genedit.tcl:432 tcl/mini.tcl:2650 -msgid "Five" -msgstr "" +#: src/emc/rs274ngc/rs274ngc_return.hh:83 +msgid "G code out of range" +msgstr "G代碼超出範圍" -#: tcl/bin/genedit.tcl:435 tcl/mini.tcl:2652 -msgid "Ten" -msgstr "" +#: src/emc/rs274ngc/rs274ngc_return.hh:84 +msgid "I word given for arc in yz plane" +msgstr "I字給予弧YZ平面" -#: tcl/bin/genedit.tcl:439 tcl/mini.tcl:2654 -msgid "Space" -msgstr "間隔" +#: src/emc/rs274ngc/rs274ngc_return.hh:85 +msgid "I word missing with g87" +msgstr "G87 缺少 I字" -#: tcl/bin/genedit.tcl:441 tcl/mini.tcl:2656 -msgid "Single Space" -msgstr "單間隔" +#: src/emc/rs274ngc/rs274ngc_return.hh:86 +#, fuzzy +msgid "J word given for arc in xz plane" +msgstr "I字給予弧YZ平面" -#: tcl/bin/genedit.tcl:444 tcl/mini.tcl:2658 -msgid "Double Space" -msgstr "雙間隔" +#: src/emc/rs274ngc/rs274ngc_return.hh:87 +msgid "J word missing with g87" +msgstr "J字缺少使用 G87" -#: tcl/bin/genedit.tcl:447 tcl/mini.tcl:2660 -msgid "Tab Space" -msgstr "鍵位間隔" +#: src/emc/rs274ngc/rs274ngc_return.hh:88 +msgid "K word given for arc in xy plane" +msgstr "K字給予弧XY平面" + +#: src/emc/rs274ngc/rs274ngc_return.hh:89 +msgid "K word missing with g87" +msgstr "K字缺少使用 G87" + +#: src/emc/rs274ngc/rs274ngc_return.hh:90 +msgid "Left bracket missing after slash with atan" +msgstr "左括號後丟失斜線使用 atan" + +#: src/emc/rs274ngc/rs274ngc_return.hh:91 +msgid "Left bracket missing after unary operation name" +msgstr "左括號後丟失一元運算操作的名稱" + +#: src/emc/rs274ngc/rs274ngc_return.hh:92 +#, fuzzy, c-format +msgid "M code greater than 199: M%d" +msgstr "M代碼大於199" + +#: src/emc/rs274ngc/rs274ngc_return.hh:93 +msgid "Mixed radius ijk format for arc" +msgstr "混合半徑 ijk 格式圓弧" + +#: src/emc/rs274ngc/rs274ngc_return.hh:94 +msgid "Multiple a words on one line" +msgstr "多個 a字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:95 +msgid "Multiple b words on one line" +msgstr "多個 b字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:96 +msgid "Multiple c words on one line" +msgstr "多個 c字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:97 +msgid "Multiple d words on one line" +msgstr "多個 d字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:98 +msgid "Multiple f words on one line" +msgstr "多個 f字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:99 +msgid "Multiple h words on one line" +msgstr "多個 h字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:100 +msgid "Multiple i words on one line" +msgstr "多個 i字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:101 +msgid "Multiple j words on one line" +msgstr "多個 j字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:102 +msgid "Multiple k words on one line" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:103 +msgid "Multiple l words on one line" +msgstr "多個 l字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:104 +msgid "Multiple p words on one line" +msgstr "多個 p字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:105 +msgid "Multiple q words on one line" +msgstr "多個 q字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:106 +msgid "Multiple r words on one line" +msgstr "多個 r字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:107 +msgid "Multiple s words on one line" +msgstr "多個 s字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:108 +msgid "Multiple t words on one line" +msgstr "多個 t字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:109 +msgid "Multiple x words on one line" +msgstr "多個 x字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:110 +msgid "Multiple y words on one line" +msgstr "多個 y字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:111 +msgid "Multiple z words on one line" +msgstr "多個 z字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:112 +msgid "Must use g0 or g1 with g53" +msgstr "必須使用G0或G1使用 G53" + +#: src/emc/rs274ngc/rs274ngc_return.hh:113 +msgid "Negative argument to sqrt" +msgstr "負值參數 sqrt" + +#: src/emc/rs274ngc/rs274ngc_return.hh:114 +msgid "Negative d word tool radius index used" +msgstr "負值 D字刀具半徑在使用指數" + +#: src/emc/rs274ngc/rs274ngc_return.hh:115 +msgid "Negative f word used" +msgstr "代碼中使用負值" + +#: src/emc/rs274ngc/rs274ngc_return.hh:116 +msgid "Negative g code used" +msgstr "代碼中使用負值g" + +#: src/emc/rs274ngc/rs274ngc_return.hh:117 +msgid "Negative h word used" +msgstr "代碼中使用負值h" + +#: src/emc/rs274ngc/rs274ngc_return.hh:118 +msgid "Negative l word used" +msgstr "代碼中使用負值l" + +#: src/emc/rs274ngc/rs274ngc_return.hh:119 +msgid "Negative m code used" +msgstr "代碼中使用負值m" + +#: src/emc/rs274ngc/rs274ngc_return.hh:120 +msgid "Negative or zero q value used" +msgstr "負值或零在使用q值" + +#: src/emc/rs274ngc/rs274ngc_return.hh:121 +msgid "Negative p word used" +msgstr "負 P 字在使用" + +#: src/emc/rs274ngc/rs274ngc_return.hh:122 +msgid "Negative spindle speed used" +msgstr "在使用主軸轉速負值" + +#: src/emc/rs274ngc/rs274ngc_return.hh:123 +msgid "Negative tool id used" +msgstr "負ID的刀具" + +#: src/emc/rs274ngc/rs274ngc_return.hh:124 +msgid "Nested comment found" +msgstr "找到巢狀評論" + +#: src/emc/rs274ngc/rs274ngc_return.hh:125 +msgid "No characters found in reading real value" +msgstr "無字找到在閱讀真正的價值" + +#: src/emc/rs274ngc/rs274ngc_return.hh:126 +msgid "Non integer value for integer" +msgstr "非整數值對整數" + +#: src/emc/rs274ngc/rs274ngc_return.hh:127 +msgid "Null missing after newline" +msgstr "空後丟失換行符" + +#: src/emc/rs274ngc/rs274ngc_return.hh:128 +msgid "Parameter file out of order" +msgstr "參數文件不按順序" + +#: src/emc/rs274ngc/rs274ngc_return.hh:129 +msgid "Parameter number out of range" +msgstr "參數號超出範圍" + +#: src/emc/rs274ngc/rs274ngc_return.hh:130 +msgid "Parameter is readonly" +msgstr "參數是只讀" + +#: src/emc/rs274ngc/rs274ngc_return.hh:131 +msgid "Q word missing with g83" +msgstr "Q缺少字使用 G83" + +#: src/emc/rs274ngc/rs274ngc_return.hh:132 +msgid "Queue is not empty after probing" +msgstr "隊列不是空的在探測後" + +#: src/emc/rs274ngc/rs274ngc_return.hh:133 +msgid "R clearance plane unspecified in cycle" +msgstr "R間隙平面未指定的週期" + +#: src/emc/rs274ngc/rs274ngc_return.hh:134 +msgid "R i j k words all missing for arc" +msgstr "R i j k 字 都缺少的弧" + +#: src/emc/rs274ngc/rs274ngc_return.hh:135 +msgid "R less than x in cycle in yz plane" +msgstr "R小於 x的週期在 XZ平面" + +#: src/emc/rs274ngc/rs274ngc_return.hh:136 +msgid "R less than y in cycle in xz plane" +msgstr "R小於 Y的週期在 XZ平面" + +#: src/emc/rs274ngc/rs274ngc_return.hh:137 +msgid "R less than z in cycle in xy plane" +msgstr "R小於 z的週期在xy平面" + +#: src/emc/rs274ngc/rs274ngc_return.hh:138 +msgid "R word with no g code that uses it" +msgstr "R字沒有G代碼使用它的" + +#: src/emc/rs274ngc/rs274ngc_return.hh:139 +msgid "Slash missing after first atan argument" +msgstr "反斜杠缺少在首次atan說法" + +#: src/emc/rs274ngc/rs274ngc_return.hh:140 +msgid "Spindle not turning clockwise in g84" +msgstr "主軸不轉順時針 G84" + +#: src/emc/rs274ngc/rs274ngc_return.hh:141 +msgid "Spindle not turning in g86" +msgstr "在G86主軸不轉" + +#: src/emc/rs274ngc/rs274ngc_return.hh:142 +msgid "Spindle not turning in g87" +msgstr "在G87主軸不轉" + +#: src/emc/rs274ngc/rs274ngc_return.hh:143 +msgid "Spindle not turning in g88" +msgstr "在G88主軸不轉" + +#: src/emc/rs274ngc/rs274ngc_return.hh:144 +msgid "Sscanf failed" +msgstr "sscanf函數失敗" + +#: src/emc/rs274ngc/rs274ngc_return.hh:145 +msgid "Start point too close to probe point" +msgstr "起點過於接近探測點" + +#: src/emc/rs274ngc/rs274ngc_return.hh:146 +msgid "Too many m codes on line" +msgstr "太多的M代碼在線" + +#: src/emc/rs274ngc/rs274ngc_return.hh:147 +msgid "Pocket max too large" +msgstr "型腔最大值過大" + +#: src/emc/rs274ngc/rs274ngc_return.hh:148 +msgid "Tool radius not less than arc radius with comp" +msgstr "刀具半徑不小於圓弧半徑使用補償" + +#: src/emc/rs274ngc/rs274ngc_return.hh:149 +msgid "Two g codes used from same modal group" +msgstr "兩個 G 代碼用於從同一模式組" + +#: src/emc/rs274ngc/rs274ngc_return.hh:150 +msgid "Two m codes used from same modal group" +msgstr "兩個 M 代碼在使用同一 模式組" + +#: src/emc/rs274ngc/rs274ngc_return.hh:151 +#, c-format +msgid "Unable to open file <%s>" +msgstr "無法打開文件 <%s>" + +#: src/emc/rs274ngc/rs274ngc_return.hh:152 +msgid "Unclosed comment found" +msgstr "未封閉的評論發現" + +#: src/emc/rs274ngc/rs274ngc_return.hh:153 +msgid "Unclosed expression" +msgstr "未封閉表達式" + +#: src/emc/rs274ngc/rs274ngc_return.hh:154 +msgid "Unknown g code used" +msgstr "未知的G代碼在使用" + +#: src/emc/rs274ngc/rs274ngc_return.hh:155 +#, fuzzy, c-format +msgid "Unknown m code used: M%d" +msgstr "未知的M代碼在使用" + +#: src/emc/rs274ngc/rs274ngc_return.hh:156 +msgid "Unknown operation" +msgstr "未知操作" + +#: src/emc/rs274ngc/rs274ngc_return.hh:157 +msgid "Unknown operation name starting with a" +msgstr "未知操作名稱開始帶 a" + +#: src/emc/rs274ngc/rs274ngc_return.hh:158 +msgid "Unknown operation name starting with m" +msgstr "未知操作名稱開始帶 m" + +#: src/emc/rs274ngc/rs274ngc_return.hh:159 +msgid "Unknown operation name starting with o" +msgstr "未知操作名稱開始帶 o" + +#: src/emc/rs274ngc/rs274ngc_return.hh:160 +msgid "Unknown operation name starting with x" +msgstr "未知操作名稱開始帶 x" + +#: src/emc/rs274ngc/rs274ngc_return.hh:161 +msgid "Unknown word starting with a" +msgstr "未知字開始帶 a" + +#: src/emc/rs274ngc/rs274ngc_return.hh:162 +msgid "Unknown word starting with c" +msgstr "未知字開始帶 c" + +#: src/emc/rs274ngc/rs274ngc_return.hh:163 +msgid "Unknown word starting with e" +msgstr "未知字開始帶 " + +#: src/emc/rs274ngc/rs274ngc_return.hh:164 +msgid "Unknown word starting with f" +msgstr "未知字開始帶 f" + +#: src/emc/rs274ngc/rs274ngc_return.hh:165 +msgid "Unknown word starting with l" +msgstr "未知字開始帶 l" + +#: src/emc/rs274ngc/rs274ngc_return.hh:166 +msgid "Unknown word starting with r" +msgstr "未知字開始帶 r" + +#: src/emc/rs274ngc/rs274ngc_return.hh:167 +msgid "Unknown word starting with s" +msgstr "未知字開始帶 s" + +#: src/emc/rs274ngc/rs274ngc_return.hh:168 +msgid "Unknown word starting with t" +msgstr "未知字開始帶 t" + +#: src/emc/rs274ngc/rs274ngc_return.hh:169 +msgid "Unknown word where unary operation could be" +msgstr "未知的字可在一元運算" + +#: src/emc/rs274ngc/rs274ngc_return.hh:170 +msgid "X and y words missing for arc in xy plane" +msgstr "X和Y字缺少的弧XY平面" + +#: src/emc/rs274ngc/rs274ngc_return.hh:171 +msgid "X and z words missing for arc in xz plane" +msgstr "X和Z字缺少的弧XZ平面" + +#: src/emc/rs274ngc/rs274ngc_return.hh:172 +msgid "X value unspecified in yz plane canned cycle" +msgstr "X值未指定在yz平面固定循環" + +#: src/emc/rs274ngc/rs274ngc_return.hh:173 +msgid "Y and z words missing for arc in yz plane" +msgstr "Y和Z字缺少的弧的YZ平面" + +#: src/emc/rs274ngc/rs274ngc_return.hh:174 +msgid "Y value unspecified in xz plane canned cycle" +msgstr "Y值未指定的在XZ平面固定循環" + +#: src/emc/rs274ngc/rs274ngc_return.hh:175 +msgid "Z value unspecified in xy plane canned cycle" +msgstr "Z值未指定在XY平面固定循環" + +#: src/emc/rs274ngc/rs274ngc_return.hh:176 +msgid "Zero or negative argument to ln" +msgstr "零或負參數 ln" + +#: src/emc/rs274ngc/rs274ngc_return.hh:177 +msgid "Zero radius arc" +msgstr "零半徑弧" + +#: src/emc/rs274ngc/rs274ngc_return.hh:178 +msgid "K word missing with g33/g33.1" +msgstr "K字缺少用 g33/g33.1" + +#: src/emc/rs274ngc/rs274ngc_return.hh:179 +msgid "F word used with a g33/g33.1" +msgstr "F字用了g33/g33.1" + +#: src/emc/rs274ngc/rs274ngc_return.hh:180 +msgid "Unknown operation name starting with e" +msgstr "未知操作名稱開始與 e" + +#: src/emc/rs274ngc/rs274ngc_return.hh:181 +msgid "Unknown operation name starting with n" +msgstr "未知操作名稱開始與 n" + +#: src/emc/rs274ngc/rs274ngc_return.hh:182 +msgid "Unknown operation name starting with g" +msgstr "未知操作名稱開始與 g" + +#: src/emc/rs274ngc/rs274ngc_return.hh:183 +msgid "Unknown operation name starting with l" +msgstr "未知操作名稱開始與 l" + +#: src/emc/rs274ngc/rs274ngc_return.hh:184 +msgid "Too many subroutine parameters" +msgstr "太多的子程序參數" + +#: src/emc/rs274ngc/rs274ngc_return.hh:185 +msgid "Too many subroutine levels" +msgstr "太多的子程序層面" + +#: src/emc/rs274ngc/rs274ngc_return.hh:186 +msgid "Bug: call stack underrun" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:187 +msgid "Unknown control command in o word" +msgstr "未知控制命令在O字" + +#: src/emc/rs274ngc/rs274ngc_return.hh:188 +msgid "Too many oword labels" +msgstr "太多oword標籤" + +#: src/emc/rs274ngc/rs274ngc_return.hh:189 +msgid "Unknown oword number" +msgstr "未知oword號" + +#: src/emc/rs274ngc/rs274ngc_return.hh:190 +msgid "Nested subroutine definition" +msgstr "巢狀子程序定義" + +#: src/emc/rs274ngc/rs274ngc_return.hh:191 +msgid "Not in subroutine definition" +msgstr "未在子程序定義" + +#: src/emc/rs274ngc/rs274ngc_return.hh:192 +msgid "File not open" +msgstr "文件未打開" + +#: src/emc/rs274ngc/rs274ngc_return.hh:193 +#, c-format +msgid "cannot reopen file %s - removed or renamed? (%s)" +msgstr "" + +#: src/emc/rs274ngc/rs274ngc_return.hh:194 +msgid "Need tool prepared -Txx- for toolchange" +msgstr "需要準備刀具 -TXX- 供換刀" + +#: src/emc/rs274ngc/rs274ngc_return.hh:195 +msgid "Cannot change planes with cutter radius compensation on" +msgstr "無法改變平面用了刀具半徑補償" + +#: src/emc/rs274ngc/rs274ngc_return.hh:196 +msgid "Cutter radius compensation allowed only in XY, XZ planes" +msgstr "刀具半徑補償只允許在XY,XZ平面" + +#: src/emc/rs274ngc/rs274ngc_return.hh:197 +msgid "P word missing with G76" +msgstr "P字缺少的 G76" + +#: src/emc/rs274ngc/rs274ngc_return.hh:198 +msgid "I J or K words missing with G76" +msgstr "I J或K字缺失的 G76" + +#: src/emc/rs274ngc/rs274ngc_return.hh:199 +msgid "Cannot move rotary axes with G76" +msgstr "無法移動旋轉軸使用 G76" + +#: src/emc/rs274ngc/rs274ngc_return.hh:200 +msgid "Multiple e words on one line" +msgstr "多個 e字在一行" + +#: src/emc/rs274ngc/rs274ngc_return.hh:201 +msgid "Named parameter not terminated" +msgstr "命名參數沒有端接" + +#: src/emc/rs274ngc/rs274ngc_return.hh:202 +msgid "Out of memory" +msgstr "內存不足" + +#: src/emc/rs274ngc/rs274ngc_return.hh:203 +msgid "S word missing with G96" +msgstr "S字缺少的 G96" + +#: src/emc/rs274ngc/rs274ngc_return.hh:204 +msgid "Queue is not empty after external input" +msgstr "外部輸入後隊列不為空" + +#: src/emc/rs274ngc/rs274ngc_return.hh:205 +msgid "Can't select analog input with wait type != immediate return" +msgstr "無法選擇模擬輸入的等待類型!=立即返回" + +#: src/emc/rs274ngc/rs274ngc_return.hh:206 +msgid "Zero timeout with wait type != immediate return" +msgstr "零超時的等待類型!=立即返回" + +#: src/emc/rs274ngc/rs274ngc_return.hh:207 +msgid "Invalid to select both a digital and an analog input with M66" +msgstr "無效的同時選擇一個數字和模擬輸入用 M66" + +#: src/emc/rs274ngc/rs274ngc_return.hh:208 +msgid "Need to have either a valid P or a valid E word with M66" +msgstr "需要有一張有效的P或一個有效的E字與 M66" + +#: src/emc/rs274ngc/rs274ngc_return.hh:209 +msgid "Q word missing with g73" +msgstr "Q缺少字與 G73" + +#: src/emc/rs274ngc/rs274ngc_return.hh:210 +msgid "Digital input selected out of bounds" +msgstr "數字輸入選擇超出界限" + +#: src/emc/rs274ngc/rs274ngc_return.hh:211 +msgid "Analog input selected out of bounds" +msgstr "模擬輸入選擇超出界限" + +#: src/emc/rs274ngc/rs274ngc_return.hh:212 +msgid "W value unspecified in UV plane canned cycle" +msgstr "W值不明在UV平面固定循環" + +#: src/emc/rs274ngc/rs274ngc_return.hh:213 +msgid "U value unspecified in VW plane canned cycle" +msgstr "U值不確定的VW平面固定循環" + +#: src/emc/rs274ngc/rs274ngc_return.hh:214 +msgid "V value unspecified in UW plane canned cycle" +msgstr "V值未指定在UW平面固定循環" + +#: src/emc/rs274ngc/rs274ngc_return.hh:215 +msgid "R less than W in cycle in UV plane" +msgstr "R小於 W在週期 UV平面" + +#: src/emc/rs274ngc/rs274ngc_return.hh:216 +msgid "R less than U in cycle in VW plane" +msgstr "R小於 U在週期VW平面" + +#: src/emc/rs274ngc/rs274ngc_return.hh:217 +msgid "R less than V in cycle in UW plane" +msgstr "R小於 V的週期在UW平面" + +#: src/hal/utils/meter.c:200 +#, c-format +msgid "ERROR: '%s' is not a valid probe type\n" +msgstr "故障: '%s' 不是 有效 的 探查 類型\n" + +#: src/hal/utils/meter.c:208 +#, c-format +msgid "ERROR: no pin/signal/parameter name\n" +msgstr "故障: 沒有 針腳/信號/參數 名字\n" + +#: src/hal/utils/meter.c:214 +#, c-format +msgid "" +"ERROR: -s option requires a probe type and a pin/signal/parameter name\n" +msgstr "故障: -s 選項需要一個探頭類型和 針/信號​​/參數 名稱\n" + +#: src/hal/utils/meter.c:240 tcl/tklinuxcnc.tcl:764 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6431 +msgid "Hal Meter" +msgstr "HAL 儀表" + +#: src/hal/utils/meter.c:290 +msgid "_Select" +msgstr "選擇(_S)" + +#: src/hal/utils/meter.c:291 +msgid "E_xit" +msgstr "退出(_x)" + +#: src/hal/utils/meter.c:339 src/hal/utils/meter.c:367 +msgid "Select Item to Probe" +msgstr "選擇項目 以探測" + +#: src/hal/utils/meter.c:669 +msgid " _Pins " +msgstr " 針(_P) " + +#: src/hal/utils/meter.c:670 +msgid " _Signals " +msgstr " 信號​​(_S) " + +#: src/hal/utils/meter.c:671 +msgid " Para_meters " +msgstr " 參數(_m) " + +#: src/hal/utils/meter.c:714 +msgid "_Close" +msgstr " 關閉(_C) " + +#: src/hal/utils/scope.c:126 +msgid "" +"Usage:\n" +" halscope [-h] [-i infile] [-o outfile] [num_samples]\n" +msgstr "" + +#: src/hal/utils/scope.c:479 src/hal/utils/scope.c:506 +msgid "Open Configuration File:" +msgstr "打開配置文件:" + +#: src/hal/utils/scope.c:540 +msgid "_Open Configuration..." +msgstr "打開配置(_O)..." + +#: src/hal/utils/scope.c:546 +msgid "_Save Configuration..." +msgstr "保存配置(_S)...." + +#: src/hal/utils/scope.c:555 +msgid "O_pen Data File..." +msgstr "打開數據文件(_p)..." + +#: src/hal/utils/scope.c:562 +msgid "S_ave Data File..." +msgstr "保存數據文件(_a)..." + +#: src/hal/utils/scope.c:571 share/axis/tcl/axis.tcl:96 +msgid "_Quit" +msgstr "退出(_Q)" + +#: src/hal/utils/scope.c:577 +msgid "_About Halscope" +msgstr "關於 Halscope(_A)" + +#: src/hal/utils/scope.c:583 share/axis/tcl/axis.tcl:501 +msgid "_File" +msgstr "文件(_F)" + +#: src/hal/utils/scope.c:587 share/axis/tcl/axis.tcl:517 +msgid "_Help" +msgstr "求助(_H)" + +#: src/hal/utils/scope.c:646 +msgid "HAL Oscilloscope" +msgstr "HAL示波器" + +#: src/hal/utils/scope.c:674 +msgid "Horizontal" +msgstr "水平" + +#: src/hal/utils/scope.c:682 +msgid "Selected Channel" +msgstr "選擇通道" + +#: src/hal/utils/scope.c:688 +msgid "Run Mode" +msgstr "運行模式" + +#: src/hal/utils/scope.c:691 +msgid "Trigger" +msgstr "觸發" + +#: src/hal/utils/scope.c:697 +msgid "Vertical" +msgstr "垂直" + +#: src/hal/utils/scope.c:705 share/axis/tcl/axis.tcl:138 +#: share/axis/tcl/axis.tcl:1269 src/emc/usr_intf/gscreen/gscreen.py:3416 +#: src/emc/usr_intf/gscreen/gscreen.py:3417 +#: src/emc/usr_intf/gscreen/gscreen.glade:2614 +msgid "Stop" +msgstr "停" + +#: src/hal/utils/scope.c:708 +msgid "Normal" +msgstr "正常" + +#: src/hal/utils/scope.c:711 +msgid "Single" +msgstr "單" + +#: src/hal/utils/scope.c:714 +msgid "Roll" +msgstr "翻滾" + +#: src/hal/utils/scope_horiz.c:130 src/emc/usr_intf/gscreen/gscreen.glade:3419 +msgid "Zoom" +msgstr "縮放" + +#: src/hal/utils/scope_horiz.c:131 +msgid " Pos " +msgstr "位置" + +#: src/hal/utils/scope_horiz.c:164 +msgid "" +"----- Samples\n" +"at ---- KHz" +msgstr "" +"-----選樣\n" +"於 ---- KHz" + +#: src/hal/utils/scope_horiz.c:464 +msgid "Realtime component not loaded" +msgstr "實時元件沒有加載" + +#: src/hal/utils/scope_horiz.c:465 +msgid "" +"HALSCOPE uses a realtime component called scope_rt'\n" +"to sample signals for display. It is not currently loaded\n" +"and attempting to load it automatically failed. More information\n" +"may be available in the terminal where halscope was started.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Load the component (using 'halcmd loadrt scope_rt'), then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" +msgstr "" + +#: src/hal/utils/scope_horiz.c:536 +msgid "Realtime function not linked" +msgstr "實時功能沒有鏈接" + +#: src/hal/utils/scope_horiz.c:537 +msgid "" +"The HALSCOPE realtime sampling function\n" +"must be called from a HAL thread in to\n" +"determine the sampling rate.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Select a thread name and multiplier then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" +msgstr "" + +#: src/hal/utils/scope_horiz.c:544 +msgid "Select Sample Rate" +msgstr "選擇採樣率" + +#: src/hal/utils/scope_horiz.c:545 +msgid "" +"Select a thread name and multiplier then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" +msgstr "" +"選擇一個線程的名稱和倍增然後點擊 'OK'\n" +"或\n" +"點擊 '退出' 以離開 HAL示波器" + +#: src/hal/utils/scope_horiz.c:567 +msgid "Thread:" +msgstr "線程:" + +#: src/hal/utils/scope_horiz.c:575 +msgid "Sample Period:" +msgstr "採樣 時段:" + +#: src/hal/utils/scope_horiz.c:583 +msgid "Sample Rate:" +msgstr "採樣率:" + +#: src/hal/utils/scope_horiz.c:599 src/emc/usr_intf/touchy/mdi.py:79 +#: src/emc/usr_intf/gscreen/mdi.py:78 +msgid "Thread" +msgstr "線清" + +#: src/hal/utils/scope_horiz.c:600 +msgid "Period" +msgstr "期段" + +#: src/hal/utils/scope_horiz.c:638 +msgid "Multiplier:" +msgstr "倍增:" + +#: src/hal/utils/scope_horiz.c:655 +msgid "Record Length" +msgstr "記錄長度" + +#: src/hal/utils/scope_horiz.c:658 +#, c-format +msgid "%5d samples (1 channel)" +msgstr "%5d 樣品(1通道)" + +#: src/hal/utils/scope_horiz.c:660 +#, c-format +msgid "%5d samples (2 channels)" +msgstr "%5d 樣品 (2通道)" + +#: src/hal/utils/scope_horiz.c:664 +#, c-format +msgid "%5d samples (4 channels)" +msgstr "%5d 樣品 (4通道)" + +#: src/hal/utils/scope_horiz.c:668 +#, c-format +msgid "%5d samples (8 channels)" +msgstr "%5d 樣品 (8通道)" + +#: src/hal/utils/scope_horiz.c:672 +#, c-format +msgid "%5d samples (16 channels)" +msgstr "%5d 樣品 (16通道)" + +#: src/hal/utils/scope_horiz.c:727 src/hal/utils/scope_horiz.c:773 +#: src/hal/utils/scope_horiz.c:985 src/hal/utils/scope_vert.c:771 +#: src/hal/utils/scope_vert.c:863 tcl/bin/emccalib.tcl:232 +#: tcl/bin/genedit.tcl:180 tcl/bin/genedit.tcl:450 tcl/bin/halconfig.tcl:682 +#: tcl/bin/halconfig.tcl:733 tcl/bin/pickconfig.tcl:387 +#: tcl/bin/pickconfig.tcl:749 tcl/bin/pickconfig.tcl:799 tcl/mini.tcl:1456 +#: tcl/mini.tcl:2937 tcl/tklinuxcnc.tcl:160 tcl/tklinuxcnc.tcl:245 +#: tcl/tklinuxcnc.tcl:419 tcl/tklinuxcnc.tcl:1338 tcl/tklinuxcnc.tcl:1407 +#: tcl/tklinuxcnc.tcl:1438 tcl/tklinuxcnc.tcl:1469 tcl/tklinuxcnc.tcl:2017 +#: tcl/tklinuxcnc.tcl:2036 tcl/tklinuxcnc.tcl:2055 tcl/tklinuxcnc.tcl:2102 +#: src/emc/usr_intf/axis/scripts/axis.py:1106 +#: src/emc/usr_intf/axis/scripts/axis.py:1173 +#: src/emc/usr_intf/axis/scripts/axis.py:1508 +#: src/emc/usr_intf/axis/scripts/axis.py:2672 +#: src/emc/usr_intf/axis/scripts/axis.py:3599 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:718 +#: lib/python/propertywindow.py:34 share/axis/tcl/axis.tcl:1828 +#: share/axis/tcl/axis.tcl:1865 +msgid "OK" +msgstr "" + +#: src/hal/utils/scope_horiz.c:732 src/hal/utils/scope_horiz.c:773 +#: tcl/bin/emccalib.tcl:91 tcl/bin/halconfig.tcl:103 tcl/tooledit.tcl:468 +msgid "Quit" +msgstr "退出" + +#: src/hal/utils/scope_horiz.c:764 +msgid "Realtime thread(s) not running" +msgstr "實時線程沒有運行" + +#: src/hal/utils/scope_horiz.c:765 +msgid "" +"HALSCOPE uses code in a realtime HAL thread to sample\n" +"signals for display. The HAL thread(s) are not running.\n" +"Threads are usually started by the application you are\n" +"attempting to run, or you can use the 'halcmd start' command.\n" +"\n" +"Please do one of the following:\n" +"\n" +"Start the threads, then click 'OK'\n" +"or\n" +"Click 'Quit' to exit HALSCOPE" +msgstr "" + +#: src/hal/utils/scope_horiz.c:798 +msgid "Pick log file to write to:" +msgstr "選擇日誌文件寫入:" + +#: src/hal/utils/scope_horiz.c:981 +msgid "Not enough channels" +msgstr "沒有足夠的通道" + +#: src/hal/utils/scope_horiz.c:982 +msgid "" +"This record length cannot handle the channels\n" +"that are currently enabled. Pick a shorter\n" +"record length that supports more channels." +msgstr "" +"此記錄的長度不能處理目前啟用的頻道\n" +"選擇一個較短的記錄長度\n" +"支持更多的頻道." + +#: src/hal/utils/scope_horiz.c:1070 +#, c-format +msgid "" +"%s\n" +"per div" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1085 +#, c-format +msgid "" +"%s samples\n" +"at %s" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1189 +msgid "nSec" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1192 +msgid "uSec" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1196 +msgid "mSec" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1200 src/emc/usr_intf/pncconf/pncconf.glade:2635 +#: src/emc/usr_intf/pncconf/pncconf.glade:3533 +#: src/emc/usr_intf/pncconf/pncconf.glade:4414 +#: src/emc/usr_intf/pncconf/pncconf.glade:5295 +msgid "Sec" +msgstr "秒" + +#: src/hal/utils/scope_horiz.c:1217 src/emc/usr_intf/stepconf/spindle.glade:301 +#: src/emc/usr_intf/stepconf/axisx.glade:693 +#: src/emc/usr_intf/stepconf/axisy.glade:679 +#: src/emc/usr_intf/stepconf/axisz.glade:679 +#: src/emc/usr_intf/stepconf/axisa.glade:693 +#: src/emc/usr_intf/pncconf/pncconf.glade:8024 +#: src/emc/usr_intf/pncconf/pncconf.glade:8201 +#: src/emc/usr_intf/pncconf/pncconf.glade:8213 +msgid "Hz" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1220 +msgid "KHz" +msgstr "" + +#: src/hal/utils/scope_horiz.c:1224 +msgid "Mhz" +msgstr "" + +#: src/hal/utils/scope_vert.c:413 src/hal/utils/scope_vert.c:1303 +#, c-format +msgid "" +"Offset\n" +"%s" +msgstr "" + +#: src/hal/utils/scope_vert.c:628 +msgid "Gain" +msgstr "增益" + +#: src/hal/utils/scope_vert.c:640 src/hal/utils/scope_trig.c:272 +msgid "Pos" +msgstr "定位" + +#: src/hal/utils/scope_vert.c:654 tcl/ngcgui_ttt.tcl:214 +#: src/emc/usr_intf/pncconf/pncconf.glade:64273 +msgid "Scale" +msgstr "尺度" + +#: src/hal/utils/scope_vert.c:667 +msgid "Chan Off" +msgstr "通道 關" + +#: src/hal/utils/scope_vert.c:723 +msgid "Set Offset" +msgstr "設置偏移" + +#: src/hal/utils/scope_vert.c:724 +#, c-format +msgid "" +"Set the vertical offset\n" +"for channel %d." +msgstr "" +"設置垂直偏移量\n" +"對通道 %d." + +#: src/hal/utils/scope_vert.c:744 +msgid "AC Coupled" +msgstr "交流耦合" + +#: src/hal/utils/scope_vert.c:779 src/hal/utils/scope_vert.c:1215 +#: src/hal/utils/scope_trig.c:387 tcl/bin/emccalib.tcl:234 +#: tcl/bin/genedit.tcl:294 tcl/bin/halconfig.tcl:103 tcl/bin/halconfig.tcl:684 +#: tcl/bin/halconfig.tcl:735 tcl/bin/pickconfig.tcl:390 +#: tcl/bin/pickconfig.tcl:567 tcl/mini.tcl:1457 tcl/mini.tcl:2938 +#: tcl/mini.tcl:3110 tcl/tklinuxcnc.tcl:162 tcl/tklinuxcnc.tcl:213 +#: tcl/tklinuxcnc.tcl:420 tcl/tklinuxcnc.tcl:1339 tcl/tklinuxcnc.tcl:1408 +#: tcl/tklinuxcnc.tcl:1439 tcl/tklinuxcnc.tcl:1470 tcl/tklinuxcnc.tcl:2103 +#: src/emc/usr_intf/axis/scripts/axis.py:1453 +#: src/emc/usr_intf/axis/scripts/axis.py:1509 +#: src/emc/usr_intf/axis/scripts/axis.py:1699 +#: src/emc/usr_intf/axis/scripts/axis.py:2108 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:720 +#: src/emc/usr_intf/stepconf/main_page.glade:467 +#: src/emc/usr_intf/gscreen/gscreen.glade:3986 +msgid "Cancel" +msgstr "取消" + +#: src/hal/utils/scope_vert.c:859 +msgid "Too many channels" +msgstr "太多的通道" + +#: src/hal/utils/scope_vert.c:860 +msgid "" +"You cannot add another channel.\n" +"\n" +"Either turn off one or more channels, or shorten\n" +"the record length to allow for more channels" +msgstr "" +"你可以不新增另一個通道.\n" +"\n" +"要么關閉一個或多個通道,或縮短的記錄長度,\n" +"以便有更多的通道" + +#: src/hal/utils/scope_vert.c:1074 +msgid "Select Channel Source" +msgstr "選擇通道來源" + +#: src/hal/utils/scope_vert.c:1075 +#, c-format +msgid "" +"Select a pin, signal, or parameter\n" +"as the source for channel %d." +msgstr "" +"選擇一個 針,信號或參數\n" +"作為源通道 %d." + +#: src/hal/utils/scope_vert.c:1107 +msgid "Pins" +msgstr "針" + +#: src/hal/utils/scope_vert.c:1108 +msgid "Signals" +msgstr "信號" + +#: src/hal/utils/scope_vert.c:1109 +msgid "Parameters" +msgstr "參數" + +#: src/hal/utils/scope_trig.c:110 +#, c-format +msgid "Falling" +msgstr "下降" + +#: src/hal/utils/scope_trig.c:112 src/hal/utils/scope_trig.c:295 +#, c-format +msgid "Rising" +msgstr "上升" + +#: src/hal/utils/scope_trig.c:119 src/hal/utils/scope_trig.c:303 +msgid "" +"Source\n" +"None" +msgstr "" +"來源\n" +"沒有" + +#: src/hal/utils/scope_trig.c:124 +#, c-format +msgid "" +"Source\n" +"Chan %2d" +msgstr "" +"來源\n" +"通道 %2d" + +#: src/hal/utils/scope_trig.c:219 tcl/tklinuxcnc.tcl:827 +#: src/emc/usr_intf/touchy/touchy.glade:2469 +msgid "Auto" +msgstr "自動" + +#: src/hal/utils/scope_trig.c:221 +msgid "Force" +msgstr "強制" + +#: src/hal/utils/scope_trig.c:255 src/hal/utils/scope_trig.c:289 +msgid "Level" +msgstr "等級" + +#: src/hal/utils/scope_trig.c:323 +msgid "Trigger Source" +msgstr "觸發源" + +#: src/hal/utils/scope_trig.c:324 +msgid "Select a channel to use for triggering." +msgstr "選擇一個通道用於觸發" + +#: src/hal/utils/scope_trig.c:347 +msgid "Chan" +msgstr "通道" + +#: src/hal/utils/scope_trig.c:348 +msgid "Source" +msgstr "來源" + +#: src/emc/motion/control.c:270 +msgid "Unexpected realtime delay: check dmesg for details." +msgstr "意外的實時延遲:檢查 dmesg的詳細信息." + +#: src/emc/motion/control.c:272 +#, c-format +msgid "" +"\n" +"In recent history there were\n" +"%ld, %ld, %ld, %ld, and %ld\n" +"elapsed clocks between calls to the motion controller.\n" +msgstr "" + +#: src/emc/motion/control.c:277 +#, c-format +msgid "" +"This time, there were %ld which is so anomalously\n" +"large that it probably signifies a problem with your\n" +"realtime configuration. For the rest of this run of\n" +"EMC, this message will be suppressed.\n" +"\n" +msgstr "" + +#: src/emc/motion/control.c:394 +msgid "G38.4 move finished without breaking contact." +msgstr "G38.4 移動完成後不阻斷接觸." + +#: src/emc/motion/control.c:397 +msgid "G38.2 move finished without making contact." +msgstr "G38.2 移動完成後不作出接觸." + +#: src/emc/motion/control.c:412 +msgid "Probe tripped during non-probe MDI command." +msgstr "探頭跳閘在非探測 MDI 命令." + +#: src/emc/motion/control.c:440 +msgid "Probe tripped during homing motion." +msgstr "探頭跳閘在歸零運動." + +#: src/emc/motion/control.c:444 +msgid "Probe tripped during a jog." +msgstr "探頭跳閘當正在慢步." + +#: src/emc/motion/control.c:622 +#, fuzzy +msgid "can't add coordinated return move" +msgstr "不能 加入 環形的 移動" + +#: src/emc/motion/control.c:663 +#, fuzzy +msgid "can't add linear coordinated jog move" +msgstr "不能 加入 直線 移動" + +#: src/emc/motion/control.c:817 +#, fuzzy, c-format +msgid "fault %d during orient in progress" +msgstr "歸零 已在 進行中" + +#: src/emc/motion/control.c:957 +msgid "motion stopped by enable input" +msgstr "運動停止因有 允許 輸入" + +#: src/emc/motion/control.c:980 +#, c-format +msgid "joint %d on limit switch error" +msgstr "Joint %d 在限位開關 故障" + +#: src/emc/motion/control.c:992 +#, c-format +msgid "joint %d amplifier fault" +msgstr "Joint %d 放大器故障" + +#: src/emc/motion/control.c:1001 +#, c-format +msgid "joint %d following error" +msgstr "Joint %d 跟隨 故障" + +#: src/emc/motion/control.c:1687 +#, c-format +msgid "Exceeded positive soft limit on joint %d" +msgstr "超出 正 軟極限在 Joint %d" + +#: src/emc/motion/control.c:1692 +#, c-format +msgid "Exceeded negative soft limit on joint %d" +msgstr "超出 負 軟限制在 Joint %d" + +#: src/emc/motion/command.c:163 +#, c-format +msgid "Can't jog invalid joint number %d." +msgstr "不能 慢步 無效的 Joint 號碼 %d." + +#: src/emc/motion/command.c:167 +#, c-format +msgid "Can't jog joint %d further past max hard limit." +msgstr "不能 慢步 joint %d 超過 最大 的 硬 極限." + +#: src/emc/motion/command.c:172 +#, c-format +msgid "Can't jog joint %d further past min hard limit." +msgstr "不能 慢步 Joint %d 超過 最小 的 硬 極限." + +#: src/emc/motion/command.c:178 +#, c-format +msgid "Can't jog joint %d further past max soft limit." +msgstr "不能 慢步 Joint %d 超過 最大 的 軟 極限" + +#: src/emc/motion/command.c:183 +#, c-format +msgid "Can't jog joint %d further past min soft limit." +msgstr "不能 慢步 Joint %d 超過 最小 的 軟 極限" + +#: src/emc/motion/command.c:243 +#, c-format +msgid "%s move on line %d would exceed joint %d's positive limit" +msgstr "%s 在線 %d 移動 將超過 joint %d 的 正 極限" + +#: src/emc/motion/command.c:250 +#, c-format +msgid "%s move on line %d would exceed joint %d's negative limit" +msgstr "%s 在線 %d 移動 將超過 joint %d 的 負 極限" + +#: src/emc/motion/command.c:535 +msgid "all joints must be homed before going into coordinated mode" +msgstr "所有 joint 一定 要在 零點 才能 進入 坐標 模式" + +#: src/emc/motion/command.c:556 +msgid "all joints must be homed before going into teleop mode" +msgstr "所有 joint 一定 要在 零點 才能 進入 遠程操作 模式" + +#: src/emc/motion/command.c:710 src/emc/motion/command.c:776 +#: src/emc/motion/command.c:849 +msgid "Can't jog joint in coordinated mode." +msgstr "不能 慢步 joint 在 坐標 模式" + +#: src/emc/motion/command.c:715 src/emc/motion/command.c:781 +#: src/emc/motion/command.c:854 +msgid "Can't jog joint when not enabled." +msgstr "不能 慢步 joint 當 未有 允許 " + +#: src/emc/motion/command.c:720 src/emc/motion/command.c:859 +msgid "Can't jog any joints while homing." +msgstr "不能 慢步 joint 當 在 歸零 時" + +#: src/emc/motion/command.c:786 +msgid "Can't jog any joint while homing." +msgstr "不能 慢步 joint 當 在 歸零 時" + +#: src/emc/motion/command.c:918 +msgid "need to be enabled, in coord mode for linear move" +msgstr "要有 允許 才 能 在 坐標 模式 作 直線 移動" + +#: src/emc/motion/command.c:928 +msgid "can't do linear move with limits exceeded" +msgstr "不能 加入 直線 移動 當 超出 極限" + +#: src/emc/motion/command.c:954 +#, fuzzy, c-format +msgid "can't add linear move at line %d, error code %d" +msgstr "不能 加入 直線 移動 當 超出 極限" + +#: src/emc/motion/command.c:982 +msgid "need to be enabled, in coord mode for circular move" +msgstr "需要允許才能 作 坐標模式 的環形移動" + +#: src/emc/motion/command.c:993 +msgid "can't do circular move with limits exceeded" +msgstr "不能作 環形的 移動 當 超出 極限" + +#: src/emc/motion/command.c:1015 +#, fuzzy, c-format +msgid "can't add circular move at line %d, error code %d" +msgstr "不能作 環形的 移動 當 超出 極限" + +#: src/emc/motion/command.c:1114 +#, fuzzy +msgid "MOTION: can't STEP while jogging" +msgstr "動作: 不能 STEP 當 已 在 執行 " + +#: src/emc/motion/command.c:1117 +#, fuzzy +msgid "MOTION: can't STEP while in return move" +msgstr "動作: 不能 STEP 當 已 在 執行 " + +#: src/emc/motion/command.c:1127 +#, fuzzy, c-format +msgid "MOTION: STEP while in state %d" +msgstr "動作: 不能 STEP 當 已 在 執行 " + +#: src/emc/motion/command.c:1229 +msgid "can't enable motion, enable input is false" +msgstr "不能 允許 的動作, 允許 輸入 是 偽 " + +#: src/emc/motion/command.c:1302 +msgid "must be in joint mode to home" +msgstr "一定 要在 Joint 模式 才能 歸零 " + +#: src/emc/motion/command.c:1313 src/emc/motion/command.c:1324 +msgid "homing sequence already in progress" +msgstr "歸零 序列 已在 進行中" + +#: src/emc/motion/command.c:1322 +msgid "homing already in progress" +msgstr "歸零 已在 進行中" + +#: src/emc/motion/command.c:1352 +msgid "must be in joint mode or disabled to unhome" +msgstr "一定 要在 Joint 模式 或 不允許 才 可以 離零" + +#: src/emc/motion/command.c:1364 src/emc/motion/command.c:1387 +#, c-format +msgid "Cannot unhome while homing, joint %d" +msgstr "不能 離零 當 在 歸零中, Joint %d" + +#: src/emc/motion/command.c:1368 src/emc/motion/command.c:1391 +#, c-format +msgid "Cannot unhome while moving, joint %d" +msgstr "不能 離零 當 在 移動 中, Joint %d " + +#: src/emc/motion/command.c:1396 +#, c-format +msgid "Cannot unhome inactive joint %d" +msgstr "不能 離零 未激活的 Joint %d" + +#: src/emc/motion/command.c:1400 +#, c-format +msgid "Cannot unhome invalid joint %d (max %d)" +msgstr "不能 離零 無效的 Joint %d (max %d) " + +#: src/emc/motion/command.c:1427 +msgid "need to be enabled, in coord mode for probe move" +msgstr "" + +#: src/emc/motion/command.c:1437 +msgid "can't do probe move with limits exceeded" +msgstr "" + +#: src/emc/motion/command.c:1451 +msgid "Probe is already clear when starting G38.4 or G38.5 move" +msgstr "" + +#: src/emc/motion/command.c:1453 +msgid "Probe is already tripped when starting G38.2 or G38.3 move" +msgstr "" + +#: src/emc/motion/command.c:1473 +msgid "can't add probe move" +msgstr "" + +#: src/emc/motion/command.c:1498 +msgid "need to be enabled, in coord mode for rigid tap move" +msgstr "" + +#: src/emc/motion/command.c:1509 +msgid "can't do rigid tap move with limits exceeded" +msgstr "" + +#: src/emc/motion/command.c:1526 +msgid "can't add rigid tap move" +msgstr "" + +#: src/emc/motion/command.c:1541 +msgid "need to be enabled, in teleop mode for teleop move" +msgstr "" + +#: src/emc/motion/command.c:1710 +#, c-format +msgid "joint %d: too many compensation entries" +msgstr "joint %d: 太多的補償條目" + +#: src/emc/motion/command.c:1716 +#, c-format +msgid "joint %d: compensation values must increase" +msgstr "joint %d: 補償值必須增加" + +#: src/emc/motion/command.c:1745 +#, c-format +msgid "unrecognized command %d" +msgstr "" + +#: src/emc/motion/motion.c:212 +msgid "MOTION: hal_init() failed\n" +msgstr "" + +#: src/emc/motion/motion.c:217 +#, c-format +msgid "MOTION: num_joints is %d, must be between 1 and %d\n" +msgstr "" + +#: src/emc/motion/motion.c:224 +#, c-format +msgid "MOTION: num_dio is %d, must be between 1 and %d\n" +msgstr "" + +#: src/emc/motion/motion.c:231 +#, c-format +msgid "MOTION: num_aio is %d, must be between 1 and %d\n" +msgstr "" + +#: src/emc/motion/motion.c:239 +msgid "MOTION: init_hal_io() failed\n" +msgstr "" + +#: src/emc/motion/motion.c:248 +msgid "MOTION: init_comm_buffers() failed\n" +msgstr "" + +#: src/emc/motion/motion.c:256 +msgid "MOTION: init_threads() failed\n" +msgstr "" + +#: src/emc/motion/motion.c:281 +#, c-format +msgid "MOTION: hal_stop_threads() failed, returned %d\n" +msgstr "" + +#: src/emc/motion/motion.c:294 +#, c-format +msgid "MOTION: rtapi_shmem_delete() failed, returned %d\n" +msgstr "" + +#: src/emc/motion/motion.c:300 +#, c-format +msgid "MOTION: hal_exit() failed, returned %d\n" +msgstr "" + +#: src/emc/motion/motion.c:323 +msgid "MOTION: emcmot_hal_data malloc failed\n" +msgstr "" + +#: src/emc/motion/motion.c:331 +msgid "MOTION: joints malloc failed\n" +msgstr "" + +#: src/emc/motion/motion.c:695 +#, c-format +msgid "MOTION: joint %d pin/param export failed\n" +msgstr "" + +#: src/emc/motion/homing.c:80 src/emc/motion/homing.c:748 +#, c-format +msgid "hit limit in home state %d" +msgstr "" + +#: src/emc/motion/homing.c:90 +#, c-format +msgid "end of move in home state %d" +msgstr "" + +#: src/emc/motion/homing.c:185 +#, c-format +msgid "unknown state '%d' during homing sequence" +msgstr "" + +#: src/emc/motion/homing.c:246 +msgid "Cannot home while shared home switch is closed" +msgstr "" + +#: src/emc/motion/homing.c:290 +msgid "" +"invalid homing config: non-zero LATCH_VEL needs either SEARCH_VEL or " +"USE_INDEX" +msgstr "" + +#: src/emc/motion/homing.c:299 +msgid "invalid homing config: non-zero SEARCH_VEL needs LATCH_VEL" +msgstr "" + +#: src/emc/motion/homing.c:447 +msgid "Home switch inactive before start of backoff move" +msgstr "" + +#: src/emc/motion/homing.c:495 +msgid "Home switch active before start of latch move" +msgstr "" + +#: src/emc/motion/homing.c:551 +msgid "Home switch inactive before start of latch move" +msgstr "" + +#: src/emc/motion/homing.c:797 +#, c-format +msgid "unknown state '%d' during homing" +msgstr "" + +#: tcl/bin/emccalib.tcl:80 +#, fuzzy +msgid "Machinekit Servo Axis Calibration" +msgstr "EMC2 伺服軸 校準" + +#: tcl/bin/emccalib.tcl:90 +msgid "Save To File" +msgstr "保存到文件" + +#: tcl/bin/emccalib.tcl:106 tcl/bin/genedit.tcl:77 tcl/bin/halconfig.tcl:151 +#: tcl/bin/halshow.tcl:85 tcl/mini.tcl:2516 tcl/tklinuxcnc.tcl:719 +#: tcl/ngcgui.tcl:489 +msgid "File" +msgstr "文件" + +#: tcl/bin/emccalib.tcl:108 tcl/bin/emccalib.tcl:236 tcl/bin/halconfig.tcl:153 +#: tcl/mini.tcl:3558 src/emc/usr_intf/touchy/touchy.glade:2420 +msgid "Refresh" +msgstr "刷新" + +#: tcl/bin/emccalib.tcl:110 tcl/bin/genedit.tcl:82 tcl/bin/halconfig.tcl:155 +#: tcl/mini.tcl:2535 src/emc/usr_intf/axis/scripts/axis.py:2107 +msgid "Save" +msgstr "保存" + +#: tcl/bin/emccalib.tcl:161 tcl/bin/halconfig.tcl:623 +#, tcl-format +msgid "Tune %d" +msgstr "微調 %d" + +#: tcl/bin/emccalib.tcl:162 tcl/bin/halconfig.tcl:628 +msgid "INI Name" +msgstr "INI 名字" + +#: tcl/bin/emccalib.tcl:163 tcl/bin/halconfig.tcl:629 +msgid "HAL's Value" +msgstr "HAL 之數值" + +#: tcl/bin/emccalib.tcl:165 tcl/bin/halconfig.tcl:631 +msgid "Next Value" +msgstr "下一個數值" + +#: tcl/bin/emccalib.tcl:230 tcl/bin/halconfig.tcl:680 tcl/bin/halconfig.tcl:731 +msgid "Test" +msgstr "測試" + +#: tcl/bin/emccalib.tcl:388 tcl/bin/halconfig.tcl:883 +#, tcl-format +msgid "" +"The HAL parameter \n" +" %s \n" +" has changed. \n" +" Really quit?" +msgstr "" +"HAL 的 參數 \n" +" %s \n" +" 已經改變. \n" +" 真的退出?" + +#: tcl/bin/emccalib.tcl:413 tcl/bin/halconfig.tcl:1170 +msgid "" +"Not permitted to save here.\n" +"\n" +" You need to copy a configuration to your home directory and work there." +msgstr "" +"不允許保存到這兒.\n" +"\n" +" 你需要複製配置到你的主頁裡工作. " + +#: tcl/bin/emccalib.tcl:487 tcl/bin/genedit.tcl:211 tcl/bin/halconfig.tcl:1242 +#: tcl/bin/pickconfig.tcl:843 tcl/bin/pickconfig.tcl:854 +#: tcl/scripts/Set_Coordinates.tcl:205 tcl/scripts/Set_Coordinates.tcl:228 +#, tcl-format +msgid "can't save %s" +msgstr "不能保存 %s" + +#: tcl/bin/emcdebug.tcl:166 tcl/bin/emcdebug.tcl:177 +#, fuzzy +msgid "LinuxCNC Debug" +msgstr "EMC 排錯" + +#: tcl/bin/emcdebug.tcl:185 +msgid "Invalid INI file entries" +msgstr "無效的INI文件項目" + +#: tcl/bin/emcdebug.tcl:186 +msgid "Configuration information" +msgstr "配置訊息" + +#: tcl/bin/emcdebug.tcl:187 +msgid "Use of defaults" +msgstr "使用預置值" + +#: tcl/bin/emcdebug.tcl:188 +msgid "Version information" +msgstr "版本訊息" + +#: tcl/bin/emcdebug.tcl:189 +msgid "Command issuing" +msgstr "發出指令" + +#: tcl/bin/emcdebug.tcl:190 +msgid "IO points" +msgstr "輸入輸出點" + +#: tcl/bin/emcdebug.tcl:191 +msgid "NML" +msgstr "" + +#: tcl/bin/emcdebug.tcl:192 +msgid "Motion time" +msgstr "運動時間" + +#: tcl/bin/emcdebug.tcl:193 src/emc/usr_intf/axis/scripts/debuglevel.py:42 +msgid "Interpreter" +msgstr "解释程序" + +#: tcl/bin/emcdebug.tcl:194 +msgid "RCS" +msgstr "" + +#: tcl/bin/emcdebug.tcl:195 +msgid "Trajectory level" +msgstr "彈道水平" + +#: tcl/bin/emcdebug.tcl:196 +msgid "Interpreter list" +msgstr "解释程序名單" + +#: tcl/bin/genedit.tcl:78 tcl/mini.tcl:2533 +msgid "New" +msgstr "新" + +#: tcl/bin/genedit.tcl:80 tcl/mini.tcl:1667 tcl/mini.tcl:2534 +#: tcl/tklinuxcnc.tcl:720 tcl/tklinuxcnc.tcl:1657 +msgid "Open..." +msgstr "打開..." + +#: tcl/bin/genedit.tcl:84 tcl/mini.tcl:2536 +msgid "Save As..." +msgstr "另存為..." + +#: tcl/bin/genedit.tcl:87 tcl/bin/halconfig.tcl:165 tcl/bin/halshow.tcl:92 +#: tcl/mini.tcl:954 tcl/tklinuxcnc.tcl:734 tcl/ngcgui.tcl:1322 +#: tcl/ngcgui.tcl:3832 +msgid "Exit" +msgstr "退出" + +#: tcl/bin/genedit.tcl:91 tcl/mini.tcl:2517 +#: src/emc/usr_intf/gscreen/gscreen.glade:2685 +msgid "Edit" +msgstr "修訂" + +#: tcl/bin/genedit.tcl:92 tcl/mini.tcl:2543 +msgid "Cut" +msgstr "切割" + +#: tcl/bin/genedit.tcl:94 tcl/mini.tcl:2544 +msgid "Copy" +msgstr "複製" + +#: tcl/bin/genedit.tcl:96 tcl/mini.tcl:2545 +msgid "Paste" +msgstr "貼上" + +#: tcl/bin/genedit.tcl:99 tcl/mini.tcl:2548 tcl/show_errors.tcl:73 +msgid "Select All" +msgstr "全選" + +#: tcl/bin/genedit.tcl:104 tcl/bin/halconfig.tcl:192 tcl/mini.tcl:919 +#: tcl/mini.tcl:2519 tcl/tklinuxcnc.tcl:790 +#: src/emc/usr_intf/stepconf/main_page.glade:445 +msgid "Help" +msgstr "求助" + +#: tcl/bin/genedit.tcl:105 tcl/mini.tcl:1011 tcl/mini.tcl:2559 +#: tcl/tklinuxcnc.tcl:796 +msgid "About..." +msgstr "關於..." + +#: tcl/bin/genedit.tcl:130 +msgid "Save and Reload" +msgstr "保存及重載" + +#: tcl/bin/genedit.tcl:133 tcl/mini.tcl:2550 +msgid "Find..." +msgstr "尋找..." + +#: tcl/bin/genedit.tcl:135 tcl/mini.tcl:2552 +msgid "Renumber File..." +msgstr "重新編號文件..." + +#: tcl/bin/genedit.tcl:140 tcl/mini.tcl:917 tcl/mini.tcl:2518 +#: tcl/tklinuxcnc.tcl:746 src/emc/usr_intf/gmoccapy/gmoccapy.glade:5135 +msgid "Settings" +msgstr "設定" + +#: tcl/bin/genedit.tcl:141 tcl/mini.tcl:2554 +msgid "No Numbering" +msgstr "沒有編號" + +#: tcl/bin/genedit.tcl:144 tcl/mini.tcl:2556 +msgid "Line Numbering..." +msgstr "行編號..." + +#: tcl/bin/genedit.tcl:150 tcl/tklinuxcnc.tcl:768 +msgid "Scripts" +msgstr "外部程序" + +#: tcl/bin/genedit.tcl:177 +msgid "About TkEditor" +msgstr "關于 TkEditor" + +#: tcl/bin/genedit.tcl:179 +msgid "" +"TkEditor\n" +"\n" +"Simple Tcl/Tk Text Editor\n" +"\n" +"GPL Version 2" +msgstr "" + +#: tcl/bin/genedit.tcl:267 tcl/mini.tcl:3090 +msgid "Find" +msgstr "" + +#: tcl/bin/genedit.tcl:270 +msgid "Find:" +msgstr "尋找:" + +#: tcl/bin/genedit.tcl:276 +msgid "Replace:" +msgstr "取代:" + +#: tcl/bin/genedit.tcl:282 +msgid "Find All" +msgstr "查找全部" + +#: tcl/bin/genedit.tcl:285 tcl/mini.tcl:3113 +msgid "Replace All" +msgstr "全部替換" + +#: tcl/bin/genedit.tcl:288 +msgid "Skip This" +msgstr "跳過這個" + +#: tcl/bin/genedit.tcl:291 +msgid "Replace This" +msgstr "取代這個" + +#: tcl/bin/genedit.tcl:297 +msgid "Clear" +msgstr "清除" + +#: tcl/bin/genedit.tcl:422 tcl/mini.tcl:2640 +msgid "Set Line Numbering" +msgstr "設定 行號" + +#: tcl/bin/genedit.tcl:424 tcl/mini.tcl:2644 +msgid "Increment" +msgstr "增量" + +#: tcl/bin/genedit.tcl:426 tcl/mini.tcl:2646 +msgid "One" +msgstr "" + +#: tcl/bin/genedit.tcl:429 tcl/mini.tcl:2648 +msgid "Two" +msgstr "" + +#: tcl/bin/genedit.tcl:432 tcl/mini.tcl:2650 +msgid "Five" +msgstr "" + +#: tcl/bin/genedit.tcl:435 tcl/mini.tcl:2652 +msgid "Ten" +msgstr "" + +#: tcl/bin/genedit.tcl:439 tcl/mini.tcl:2654 +msgid "Space" +msgstr "間隔" + +#: tcl/bin/genedit.tcl:441 tcl/mini.tcl:2656 +msgid "Single Space" +msgstr "單間隔" + +#: tcl/bin/genedit.tcl:444 tcl/mini.tcl:2658 +msgid "Double Space" +msgstr "雙間隔" + +#: tcl/bin/genedit.tcl:447 tcl/mini.tcl:2660 +msgid "Tab Space" +msgstr "鍵位間隔" #: tcl/bin/genedit.tcl:453 msgid "Next Number:" msgstr "下一號碼:" -#: tcl/bin/genedit.tcl:474 tcl/mini.tcl:2668 -msgid "Renumber" -msgstr "記下" +#: tcl/bin/genedit.tcl:474 tcl/mini.tcl:2668 +msgid "Renumber" +msgstr "記下" + +#: tcl/bin/halconfig.tcl:88 tcl/bin/halshow.tcl:33 +msgid "HAL Configuration" +msgstr "HAL 配置" + +#: tcl/bin/halconfig.tcl:103 +msgid "Would you like to save your configuration before you exit?" +msgstr "要把配置文件保存後才離開?" + +#: tcl/bin/halconfig.tcl:103 +msgid "Save All" +msgstr "全部保存" + +#: tcl/bin/halconfig.tcl:103 +msgid "Save Tune" +msgstr "保存微調" + +#: tcl/bin/halconfig.tcl:103 +msgid "Save as Netlist" +msgstr "以網表保存" + +#: tcl/bin/halconfig.tcl:103 +msgid "Don't Save" +msgstr "不保存" + +#: tcl/bin/halconfig.tcl:132 +msgid "Show" +msgstr "展示" + +#: tcl/bin/halconfig.tcl:133 +msgid "Watch" +msgstr "監視" + +#: tcl/bin/halconfig.tcl:134 +msgid "Modify" +msgstr "修改" + +#: tcl/bin/halconfig.tcl:157 +msgid "Save INI Tuning" +msgstr "保存 INI 微調" + +#: tcl/bin/halconfig.tcl:159 +msgid "Save HAL Ini" +msgstr "保存 HAL Ini" + +#: tcl/bin/halconfig.tcl:161 +msgid "Save HAL Net" +msgstr "保存 HAL 網表" + +#: tcl/bin/halconfig.tcl:163 +msgid "Save and Exit" +msgstr "保存 及 退出" + +#: tcl/bin/halconfig.tcl:168 tcl/mini.tcl:916 tcl/tklinuxcnc.tcl:739 +msgid "View" +msgstr "觀看" + +#: tcl/bin/halconfig.tcl:170 tcl/bin/halshow.tcl:104 +msgid "Expand Tree" +msgstr "樹狀 擴張" + +#: tcl/bin/halconfig.tcl:172 tcl/bin/halshow.tcl:106 +msgid "Collapse Tree" +msgstr "樹狀 收縮" + +#: tcl/bin/halconfig.tcl:175 tcl/bin/halshow.tcl:109 +msgid "Expand Pins" +msgstr "展開 針" + +#: tcl/bin/halconfig.tcl:177 tcl/bin/halshow.tcl:111 +msgid "Expand Parameters" +msgstr "展開 參數" + +#: tcl/bin/halconfig.tcl:179 tcl/bin/halshow.tcl:113 +msgid "Expand Signals" +msgstr "展開 信號" + +#: tcl/bin/halconfig.tcl:182 tcl/bin/halshow.tcl:116 +msgid "Erase Watch" +msgstr "清徐 監視" + +#: tcl/bin/halconfig.tcl:194 tcl/mini.tcl:840 tcl/mini.tcl:2785 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "About" +msgstr "關于" + +#: tcl/bin/halconfig.tcl:196 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2579 +msgid "Main" +msgstr "主頁" + +#: tcl/bin/halconfig.tcl:476 +msgid "Enter HAL command :" +msgstr "输入 HAL 指令 :" + +#: tcl/bin/halconfig.tcl:479 tcl/bin/halconfig.tcl:528 tcl/bin/halshow.tcl:354 +msgid "Execute" +msgstr "執行" + +#: tcl/bin/halconfig.tcl:943 tcl/bin/halshow.tcl:405 +msgid "Select a node to show." +msgstr "選定要展示的節點." + +#: tcl/bin/halconfig.tcl:968 tcl/bin/halshow.tcl:429 +msgid "<-- Select a Leaf. Click on its name." +msgstr "<-- 選定一葉. 點擊它的名字." + +#: tcl/bin/halconfig.tcl:1085 tcl/bin/halconfig.tcl:1095 +#: tcl/bin/halconfig.tcl:1102 tcl/bin/halconfig.tcl:1109 +#: tcl/bin/halconfig.tcl:1116 +#, tcl-format +msgid "Click a highlighted entry where %s should go." +msgstr "點擊高亮顯示的條目 到 %s 要到的地方." + +#: tcl/bin/halconfig.tcl:1092 +msgid "Nothing to be done for parameters here. Try the tuning page" +msgstr "這裡 沒有 什麼可以 處理 參數. 嘗試 調整頁" + +#: tcl/bin/halconfig.tcl:1124 +#, tcl-format +msgid "%s is not a leaf, try again" +msgstr "%s 不是葉, 再試" + +#: tcl/bin/halconfig.tcl:1281 +msgid "" +"Copyright Raymond E Henry. 2006\n" +"License: GPL Version 2\n" +"\n" +"Halconfig is an LinuxCNC configuration tool. It requires that you have " +"started an instance of linuxcnc.\n" +"\n" +"This script carries no warranty or liability for its use to the extent " +"allowed by law." +msgstr "" + +#: tcl/bin/halshow.tcl:69 +msgid " SHOW " +msgstr "展示" + +#: tcl/bin/halshow.tcl:70 +msgid " WATCH " +msgstr "監視 " + +#: tcl/bin/halshow.tcl:90 +msgid "Load Watch List" +msgstr "加載觀察名單" + +#: tcl/bin/halshow.tcl:102 +msgid "Tree View" +msgstr "樹狀觀看" + +#: tcl/bin/halshow.tcl:349 +msgid "Test HAL command :" +msgstr "測試 HAL 指令 :" + +#: tcl/bin/halshow.tcl:544 +msgid "Load a watch list" +msgstr "加載觀察名單" + +#: tcl/bin/halshow.tcl:567 +msgid "Save current watch list" +msgstr "保存當前觀察名單" + +#: tcl/bin/halshow.tcl:581 +msgid "Commands may be tested here but they will NOT be saved" +msgstr "指令可以在這兒測試但不會被保存" + +#: tcl/bin/pickconfig.tcl:96 +msgid "" +"Can't find the bwidget 1.7 package. There is a debian bwidget package; " +"install \n" +"it with sudo apt-get install bwidget." +msgstr "" + +#: tcl/bin/pickconfig.tcl:154 +#, fuzzy +msgid "Machinekit Configuration Selector" +msgstr "EMC2 配置文件選擇器" + +#: tcl/bin/pickconfig.tcl:296 +msgid "No details available." +msgstr "" + +#: tcl/bin/pickconfig.tcl:343 +msgid "" +"Welcome to MachineKit.\n" +"\n" +"Select a machine configuration from the list on the left.\n" +"Details about the selected configuration will appear in the display on the " +"right.\n" +"Click 'OK' to run the selected configuration" +msgstr "" + +#: tcl/bin/pickconfig.tcl:401 +msgid "My Configurations" +msgstr "我的配置" + +#: tcl/bin/pickconfig.tcl:405 +msgid "Sample Configurations" +msgstr "樣辦配置" + +#: tcl/bin/pickconfig.tcl:530 +#, tcl-format +msgid "ERROR: no configurations found in path '%s'" +msgstr "故障: 沒有配置文件在路徑 '%s'" + +#: tcl/bin/pickconfig.tcl:567 +msgid "Copy Configuration?" +msgstr "復制配置文件?" + +#: tcl/bin/pickconfig.tcl:567 +#, tcl-format +msgid "" +"Would you like to copy the %s configuration to your home directory so you " +"can customize it?" +msgstr "你要 復制 配置文件 %s 去 你的 主頁讓 你 自定義它?" + +#: tcl/bin/pickconfig.tcl:567 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:563 +msgid "Yes" +msgstr "是" + +#: tcl/bin/pickconfig.tcl:749 +msgid "Configuration Copied" +msgstr "複制 配置 文件" + +#: tcl/bin/pickconfig.tcl:749 +#, fuzzy, tcl-format +msgid "" +"The configuration file has been copied to %s. Next time, choose this " +"location when starting MachineKit." +msgstr "配置 文件 被複制 到 %s. 再打開 EMC2 時,先 選 那裡." + +#: tcl/bin/pickconfig.tcl:799 +msgid "Shortcut Created" +msgstr "創建 捷徑" + +#: tcl/bin/pickconfig.tcl:799 +msgid "" +"A shortcut to this configuration file has been created on your desktop. You " +"can use it to automatically launch this configuration." +msgstr "配置文件的捷徑創建在你的桌面.可以用它來起動這種配置." + +#: tcl/bin/pickconfig.tcl:805 +msgid "Create Desktop Shortcut" +msgstr "創建 桌面 捷徑" + +#: tcl/bin/tkbackplot.tcl:110 +#, fuzzy +msgid "TkLinuxCNC BackPlot" +msgstr "TKEmc 路徑模擬" + +#: tcl/bin/tkbackplot.tcl:125 +msgid "SETUP" +msgstr "設定" + +#: tcl/bin/tkbackplot.tcl:127 +msgid "RESET" +msgstr "重置" + +#: tcl/bin/tkbackplot.tcl:129 +msgid "CANCEL" +msgstr "取消" + +#: tcl/bin/tkbackplot.tcl:250 +msgid "AXIS" +msgstr "" + +#: tcl/bin/tkbackplot.tcl:251 +msgid "OFFSET" +msgstr "偏移" + +#: tcl/bin/tkbackplot.tcl:252 +msgid "ANGLE" +msgstr "角度" + +#: tcl/bin/tkbackplot.tcl:253 +msgid "DIRECTION" +msgstr "方向" + +#: tcl/bin/tkbackplot.tcl:270 +msgid "SIZE :" +msgstr "規格 :" + +#: tcl/mini.tcl:490 +#, tcl-format +msgid "JOG %s +" +msgstr "慢行 %s +" + +#: tcl/mini.tcl:491 +#, tcl-format +msgid "JOG %s -" +msgstr "慢行 %s -" + +#: tcl/mini.tcl:492 +#, tcl-format +msgid "" +"%s\n" +"\n" +"Z\n" +"E\n" +"R\n" +"O" +msgstr "" + +#: tcl/mini.tcl:840 +msgid "" +"TkMini \n" +"\n" +"Tcl/Tk GUI for Enhanced Machine Controller\n" +"\n" +"GPL Copyright 2003 \n" +"Ray Henry \n" +"\n" +" 3D backplotter by Paul Corner \n" +" \n" +"This software comes with ABSOLUTELY NO GUARANTEE! \n" +"For details see the copyright.html file in this directory." +msgstr "" + +#: tcl/mini.tcl:915 +msgid "Program" +msgstr "程式" + +#: tcl/mini.tcl:918 +msgid "Info" +msgstr "訊息" + +#: tcl/mini.tcl:923 +msgid "Backplot" +msgstr "路徑模擬" + +#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:5915 +msgid "Editor" +msgstr "編輯器" + +#: tcl/mini.tcl:927 +msgid "Offsets" +msgstr "偏移" + +#: tcl/mini.tcl:929 +msgid "Tools" +msgstr "刀具" + +#: tcl/mini.tcl:951 tcl/mini.tcl:3565 tcl/tklinuxcnc.tcl:732 +msgid "Reset" +msgstr "重置" + +#: tcl/mini.tcl:960 +msgid "Position Type" +msgstr "位置類型" + +#: tcl/mini.tcl:962 +msgid "Tool Info" +msgstr "刀具訊息" + +#: tcl/mini.tcl:964 +msgid "Offset Info" +msgstr "偏移訊息" + +#: tcl/mini.tcl:967 +msgid "Show Restart" +msgstr "顯示重開" + +#: tcl/mini.tcl:968 +msgid "Hide Restart" +msgstr "隱蔽重開" + +#: tcl/mini.tcl:970 +msgid "Show Split Right" +msgstr "顯示右分頁" + +#: tcl/mini.tcl:972 +msgid "Show Mode Full" +msgstr "顯示全頁" + +#: tcl/mini.tcl:974 +msgid "Show Popin Full" +msgstr "顯示彈出窗口塞滿" + +#: tcl/mini.tcl:978 +msgid "Actual Position" +msgstr "實際位置" + +#: tcl/mini.tcl:980 +msgid "Commanded Position" +msgstr "指揮位置" + +#: tcl/mini.tcl:983 +msgid "Machine Position" +msgstr "機床位置" + +#: tcl/mini.tcl:985 +msgid "Relative Position" +msgstr "相對位置" + +#: tcl/mini.tcl:988 tcl/tklinuxcnc.tcl:747 +msgid "Calibration..." +msgstr "校準..." + +#: tcl/mini.tcl:990 +msgid "HAL Show..." +msgstr "HAL 顯示..." + +#: tcl/mini.tcl:992 +msgid "HAL Config..." +msgstr "HAL 配置..." + +#: tcl/mini.tcl:997 +msgid "Program File" +msgstr "程序檔案" + +#: tcl/mini.tcl:998 +#, tcl-format +msgid "Program file is %s" +msgstr "程序檔案是 %s" + +#: tcl/mini.tcl:999 +msgid "Editor File" +msgstr "編輯文件" + +#: tcl/mini.tcl:1000 +#, tcl-format +msgid "Editor file is %s" +msgstr "編輯文件是 %s" + +#: tcl/mini.tcl:1001 +msgid "Parameter File" +msgstr "參數文件" + +#: tcl/mini.tcl:1002 +#, tcl-format +msgid "Parameter file is %s" +msgstr "參數 文件 是 %s" + +#: tcl/mini.tcl:1003 +msgid "Tool File" +msgstr "刀具文件" + +#: tcl/mini.tcl:1004 +#, tcl-format +msgid "Tool file is %s" +msgstr "刀具文件是 %s" + +#: tcl/mini.tcl:1006 +msgid "Active G Codes" +msgstr "激活 G Codes" + +#: tcl/mini.tcl:1007 +#, tcl-format +msgid "" +"Active codes include; \n" +"%s" +msgstr "" +"激活指令包括; \n" +"%s" + +#: tcl/mini.tcl:1010 tcl/mini.tcl:2558 tcl/tklinuxcnc.tcl:791 +msgid "Help..." +msgstr "求助..." + +#: tcl/mini.tcl:1027 tcl/tklinuxcnc.tcl:890 +msgid "ABORT" +msgstr "" + +#: tcl/mini.tcl:1038 tcl/mini.tcl:2048 +msgid "CONTINUE" +msgstr "繼續" + +#: tcl/mini.tcl:1044 tcl/tklinuxcnc.tcl:828 tcl/tklinuxcnc.tcl:2248 +#: src/emc/usr_intf/touchy/touchy.glade:1264 +msgid "MDI" +msgstr "" + +#: tcl/mini.tcl:1048 tcl/tklinuxcnc.tcl:2239 +msgid "AUTO" +msgstr "自動" + +#: tcl/mini.tcl:1052 tcl/mini.tcl:1812 tcl/tklinuxcnc.tcl:2141 +#: tcl/tklinuxcnc.tcl:2261 +msgid "MANUAL" +msgstr "手動" + +#: tcl/mini.tcl:1106 +msgid "Tool #:" +msgstr "刀具 #:" + +#: tcl/mini.tcl:1108 +msgid "Length :" +msgstr "長度 :" + +#: tcl/mini.tcl:1119 +msgid "Work Offsets: " +msgstr "工件偏移:" + +#: tcl/mini.tcl:1121 +msgid "start offsets popup here" +msgstr "在這裡 彈出 偏移 窗口" + +#: tcl/mini.tcl:1165 +msgid "start override popup here" +msgstr "啟動 超速 彈出 在這裡" + +#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1739 +msgid "Feed Override:" +msgstr "進給 超速:" + +#: tcl/mini.tcl:1180 +msgid "-- MESSAGES --" +msgstr "-- 信息 --" + +#: tcl/mini.tcl:1230 +msgid "toggleView's not doin nothin yet" +msgstr "切換視窗 未有反應" + +#: tcl/mini.tcl:1282 +msgid "Can't set zero with a tool offset active so I issued G49 to cancel it." +msgstr "在有激活的 刀具偏移時, 不能置零, 發出 G49 指令去 取消置零" + +#: tcl/mini.tcl:1346 +#, tcl-format +msgid "Can't update the var file while machine is in auto and %s." +msgstr "不能 更新 變量 文件, 當 机器 在 自動 和 %s." + +#: tcl/mini.tcl:1400 tcl/tklinuxcnc.tcl:1227 +msgid "override limits" +msgstr "超速 極限" + +#: tcl/mini.tcl:1405 tcl/tklinuxcnc.tcl:1263 +msgid "home" +msgstr "零點" + +#: tcl/mini.tcl:1426 +msgid "DEFAULT" +msgstr "預置值" + +#: tcl/mini.tcl:1427 +msgid "Speed:" +msgstr "速度" + +#: tcl/mini.tcl:1430 +msgid "RAPID" +msgstr "高速" + +#: tcl/mini.tcl:1447 tcl/tklinuxcnc.tcl:1391 +msgid "Set Jog Speed" +msgstr "輸入 慢行 速度" + +#: tcl/mini.tcl:1453 tcl/tklinuxcnc.tcl:1404 +msgid "Set jog speed:" +msgstr "輸入 慢行 速度:" + +#: tcl/mini.tcl:1511 +msgid "JOG X +" +msgstr "慢行 X +" + +#: tcl/mini.tcl:1512 +msgid "JOG X -" +msgstr "慢行 X -" + +#: tcl/mini.tcl:1516 +msgid "increment" +msgstr "增量" + +#: tcl/mini.tcl:1518 tcl/tklinuxcnc.tcl:602 tcl/tklinuxcnc.tcl:1249 +#: tcl/tklinuxcnc.tcl:1253 src/emc/usr_intf/gscreen/gscreen.glade:1574 +#: src/emc/usr_intf/gscreen/gscreen.glade:1586 +msgid "continuous" +msgstr "持續" + +#: tcl/mini.tcl:1520 +msgid "" +"A\n" +"L\n" +"L\n" +"\n" +"Z\n" +"E\n" +"R\n" +"O" +msgstr "" + +#: tcl/mini.tcl:1588 src/emc/usr_intf/touchy/touchy.glade:1422 +msgid "Spindle Forward" +msgstr "主軸 前轉" + +#: tcl/mini.tcl:1589 src/emc/usr_intf/touchy/touchy.glade:1433 +msgid "Spindle Reverse" +msgstr "主軸 反轉" + +#: tcl/mini.tcl:1590 tcl/tklinuxcnc.tcl:871 +msgid "Spindle off" +msgstr "主軸 停" + +#: tcl/mini.tcl:1592 src/emc/usr_intf/touchy/touchy.glade:1479 +msgid "Spindle Slower" +msgstr "主軸 慢些" + +#: tcl/mini.tcl:1596 src/emc/usr_intf/touchy/touchy.glade:1464 +msgid "Spindle Faster" +msgstr "主軸 快些" + +#: tcl/mini.tcl:1632 tcl/tklinuxcnc.tcl:1620 +msgid "MDI:" +msgstr "" + +#: tcl/mini.tcl:1669 tcl/tklinuxcnc.tcl:1658 +#: src/emc/usr_intf/stepconf/main_page.glade:298 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2625 +msgid "Run" +msgstr "運行" + +#: tcl/mini.tcl:1671 tcl/tklinuxcnc.tcl:1659 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:2638 +msgid "Pause" +msgstr "暫停" + +#: tcl/mini.tcl:1673 tcl/tklinuxcnc.tcl:1660 +msgid "Resume" +msgstr "恢復" + +#: tcl/mini.tcl:1675 tcl/tklinuxcnc.tcl:1661 +msgid "Step" +msgstr "步進" + +#: tcl/mini.tcl:1677 tcl/tklinuxcnc.tcl:1662 +msgid "Verify" +msgstr "校驗" + +#: tcl/mini.tcl:1698 +msgid "RESTART LINE" +msgstr "重新 起動 行號" + +#: tcl/mini.tcl:1699 src/emc/usr_intf/stepconf/main_page.glade:531 +msgid "Back" +msgstr "向後" + +#: tcl/mini.tcl:1700 +msgid "Ahead" +msgstr "向前" + +#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1300 +#: src/emc/usr_intf/gscreen/gscreen.glade:3973 +msgid "Restart" +msgstr "重新 起動" + +#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 tcl/tklinuxcnc.tcl:465 +#: src/emc/usr_intf/axis/scripts/axis.py:2023 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:754 +msgid "All files" +msgstr "所有文件" + +#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 tcl/tklinuxcnc.tcl:466 +msgid "Text files" +msgstr "文字 文件" + +#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 tcl/tklinuxcnc.tcl:467 +msgid "NC files" +msgstr "數控 文件" + +#: tcl/mini.tcl:1753 +msgid "" +"The interpreter is running. \n" +" Pressing OK will abort and load the new program" +msgstr "" +"解釋器 正在運行. \n" +"按 OK 將中止 並 加載 新的程序" + +#: tcl/mini.tcl:1886 +msgid "ESTOPPED" +msgstr "已急停" + +#: tcl/mini.tcl:1889 +msgid "ESTOP PUSH" +msgstr "急停鈕 按下" + +#: tcl/mini.tcl:1892 tcl/tklinuxcnc.tcl:2233 +msgid "ESTOP RESET" +msgstr "急停鈕 復位" + +#: tcl/mini.tcl:1897 tcl/tklinuxcnc.tcl:2298 +msgid "SPINDLE FORWARD" +msgstr "主軸 前轉" + +#: tcl/mini.tcl:1899 tcl/tklinuxcnc.tcl:2300 +msgid "SPINDLE REVERSE" +msgstr "主軸 反轉" + +#: tcl/mini.tcl:1901 tcl/tklinuxcnc.tcl:2302 +msgid "SPINDLE OFF" +msgstr "主軸 停" + +#: tcl/mini.tcl:1903 tcl/tklinuxcnc.tcl:2304 +msgid "SPINDLE INCREASE" +msgstr "主軸 增速" + +#: tcl/mini.tcl:1905 tcl/tklinuxcnc.tcl:2306 +msgid "SPINDLE DECREASE" +msgstr "主軸 減速" + +#: tcl/mini.tcl:1907 tcl/tklinuxcnc.tcl:2308 +msgid "SPINDLE ?" +msgstr "主軸 ?" + +#: tcl/mini.tcl:1911 tcl/tklinuxcnc.tcl:2312 +msgid "BRAKE ON" +msgstr "剎車 開" + +#: tcl/mini.tcl:1913 tcl/tklinuxcnc.tcl:2314 +msgid "BRAKE OFF" +msgstr "剎車 關" + +#: tcl/mini.tcl:1915 tcl/tklinuxcnc.tcl:2316 +msgid "BRAKE ?" +msgstr "剎車 ?" + +#: tcl/mini.tcl:1919 tcl/tklinuxcnc.tcl:2274 +msgid "MIST ON" +msgstr "噴霧 開" + +#: tcl/mini.tcl:1921 tcl/tklinuxcnc.tcl:2276 +msgid "MIST OFF" +msgstr "噴霧 關" + +#: tcl/mini.tcl:1923 tcl/tklinuxcnc.tcl:2278 +msgid "MIST ?" +msgstr "噴霧 ?" + +#: tcl/mini.tcl:1927 tcl/tklinuxcnc.tcl:2282 +msgid "FLOOD ON" +msgstr "漫射 開" + +#: tcl/mini.tcl:1929 tcl/tklinuxcnc.tcl:2284 +msgid "FLOOD OFF" +msgstr "漫射 關" + +#: tcl/mini.tcl:1931 tcl/tklinuxcnc.tcl:2286 +msgid "FLOOD ?" +msgstr "漫射 ?" + +#: tcl/mini.tcl:2052 +msgid "FEEDHOLD" +msgstr "進給 留住" + +#: tcl/mini.tcl:2124 +msgid "" +"TOOL SETUP \n" +" Click or tab to edit. Press enter to return to keyboard machine control." +msgstr "" +"刀具安裝 \n" +"點擊 或 標籤 進行 編輯 按回車鍵 返回 到 鍵盤 機器控制." + +#: tcl/mini.tcl:2130 +msgid " TOOL NUMBER " +msgstr "  刀具 號  " + +#: tcl/mini.tcl:2131 +msgid " LENGTH " +msgstr "  長度  " + +#: tcl/mini.tcl:2132 +msgid " DIAMETER " +msgstr "  直徑  " + +#: tcl/mini.tcl:2133 +msgid " COMMENT " +msgstr "  註解  " + +#: tcl/mini.tcl:2188 +msgid "Add Extra Tool" +msgstr "加 額外 刀具" + +#: tcl/mini.tcl:2189 +msgid "Remove Last Tool" +msgstr "排除 最後 刀具" + +#: tcl/mini.tcl:2217 tcl/mini.tcl:2253 +#, tcl-format +msgid "Can't update the tool file while machine is in auto and %s." +msgstr "不能 更新 刀具文件, 机器在 自動和 %s." + +#: tcl/mini.tcl:2229 +msgid "This is not a good number." +msgstr "這不是 一個 好數字" + +#: tcl/mini.tcl:2293 +msgid "" +"COORDINATE SYSTEM SETUP \n" +"\n" +" Click value to edit with keyboard. Press enter to return to keyboard " +"control of machine. \n" +" " +msgstr "" +"坐標 系統 設置 \n" +"\n" +"點擊 價值 使用鍵盤 來編輯, 按 回車鍵 返回 到鍵盤 控制 機器" + +#: tcl/mini.tcl:2320 tcl/scripts/Set_Coordinates.tcl:80 +msgid "Axis " +msgstr "軸 " + +#: tcl/mini.tcl:2321 +msgid "Value " +msgstr "數值 " + +#: tcl/mini.tcl:2326 tcl/scripts/Set_Coordinates.tcl:91 +msgid "Teach" +msgstr "傳授" + +#: tcl/mini.tcl:2334 +msgid "Write And Load File " +msgstr "寫入 和 加載文件 " + +#: tcl/mini.tcl:2336 +msgid "Offset By Radius" +msgstr "徑向 偏移量" + +#: tcl/mini.tcl:2337 +msgid "Offset By Length" +msgstr "長度 偏移量" + +#: tcl/mini.tcl:2342 +msgid "Subtract" +msgstr "減去" + +#: tcl/mini.tcl:2344 src/emc/usr_intf/gmoccapy/gmoccapy.glade:6712 +msgid "Add" +msgstr "添加" + +#: tcl/mini.tcl:2366 +msgid "Zero All G54" +msgstr "置零 于 所有G54" + +#: tcl/mini.tcl:2367 +msgid "Zero All G55" +msgstr "置零 于 所有G55" + +#: tcl/mini.tcl:2368 +msgid "Zero All G56" +msgstr "置零 于 所有G56" + +#: tcl/mini.tcl:2369 +msgid "Zero All G57" +msgstr "置零 于 所有G57" + +#: tcl/mini.tcl:2370 +msgid "Zero All G58" +msgstr "置零 于 所有G58" + +#: tcl/mini.tcl:2371 +msgid "Zero All G59" +msgstr "置零 于 所有G59" + +#: tcl/mini.tcl:2372 +msgid "Zero All G59.1" +msgstr "置零 于 所有G59.1" + +#: tcl/mini.tcl:2373 +msgid "Zero All G59.2" +msgstr "置零 于 所有G5" + +#: tcl/mini.tcl:2374 +msgid "Zero All G59.3" +msgstr "置零 于 所有G59.3" + +#: tcl/mini.tcl:2375 +msgid "Zero All ????" +msgstr "置零 于 所有 ????" + +#: tcl/mini.tcl:2493 +msgid "Modified..." +msgstr "修改..." + +#: tcl/mini.tcl:2538 +msgid "Save and Load" +msgstr "保存 和 加載" + +#: tcl/mini.tcl:2540 src/emc/usr_intf/gscreen/gscreen.glade:3515 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2363 +msgid "Undo" +msgstr "復原" + +#: tcl/mini.tcl:2541 src/emc/usr_intf/gscreen/gscreen.glade:3526 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2411 +msgid "Redo" +msgstr "重做" + +#: tcl/mini.tcl:2546 tcl/tooledit.tcl:488 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6695 +msgid "Delete" +msgstr "刪除" + +#: tcl/mini.tcl:2551 +msgid "Replace..." +msgstr "替代..." + +#: tcl/mini.tcl:2664 +msgid "Next Number: " +msgstr "下一個 數字:" + +#: tcl/mini.tcl:2765 +msgid "Basic Help" +msgstr "基本 的求助" + +#: tcl/mini.tcl:2765 +msgid "" +"This is a simple ASCII editor like many others.\n" +"\n" +"Ctrl+O Open\n" +"Ctrl+S Save\n" +"Ctrl+Z Undo\n" +"Ctrl+Y Redo\n" +"Ctrl+X Cut\n" +"Ctrl+C Copy\n" +"Ctrl+V Paste\n" +"Del Delete\n" +"Ctrl+A Select All\n" +"\n" +"Ctrl+F Find\n" +"Ctrl+R Replace " +msgstr "" + +#: tcl/mini.tcl:2785 +msgid "" +"tknotepad by Joseph Acosta. \n" +"\n" +" Modified for EMC by: Paul Corner " +msgstr "" -#: tcl/bin/halconfig.tcl:88 tcl/bin/halshow.tcl:33 -msgid "HAL Configuration" -msgstr "HAL 配置" +#: tcl/mini.tcl:2793 +msgid "" +"The contents of this file may have changed, do you wish to to save your " +"changes?" +msgstr "" -#: tcl/bin/halconfig.tcl:103 -msgid "Would you like to save your configuration before you exit?" -msgstr "要把配置文件保存後才離開?" +#: tcl/mini.tcl:2794 +msgid "New Confirm?" +msgstr "新 確認" -#: tcl/bin/halconfig.tcl:103 -msgid "Save All" -msgstr "全部保存" +#: tcl/mini.tcl:2928 +msgid "Print Setup" +msgstr "列印 設定" + +#: tcl/mini.tcl:2932 +msgid "Print Command: " +msgstr "打印 命令: " + +#: tcl/mini.tcl:3095 +msgid "Find what:" +msgstr "查找 目標:" + +#: tcl/mini.tcl:3101 +msgid "Replace with:" +msgstr "替換:" + +#: tcl/mini.tcl:3109 +msgid "Find Next" +msgstr "找 下一個" + +#: tcl/mini.tcl:3112 src/emc/usr_intf/gmoccapy/gmoccapy.glade:2494 +msgid "Replace" +msgstr "替換" + +#: tcl/mini.tcl:3120 src/emc/usr_intf/gscreen/gscreen.py:2750 +#: src/emc/usr_intf/gmoccapy/dialogs.py:171 +msgid "Up" +msgstr "向上" + +#: tcl/mini.tcl:3121 src/emc/usr_intf/gscreen/gscreen.py:2754 +#: src/emc/usr_intf/gmoccapy/dialogs.py:175 +msgid "Down" +msgstr "向下" + +#: tcl/mini.tcl:3124 +msgid "Match case" +msgstr "匹配 大小寫" + +#: tcl/mini.tcl:3569 +msgid "rot-x" +msgstr "轉-x" + +#: tcl/mini.tcl:3579 +msgid "rot-y" +msgstr "轉-y" + +#: tcl/mini.tcl:3589 +msgid "rot-z" +msgstr "轉-z" + +#: tcl/mini.tcl:3599 +msgid "zoom" +msgstr "縮放" + +#: tcl/mini.tcl:3655 +msgid "TEST" +msgstr "試驗" + +#: tcl/mini.tcl:3699 +msgid "Hide Setup" +msgstr "隱蔽 設定" + +#: tcl/mini.tcl:3703 +msgid "Show Setup" +msgstr "顯示 設定" + +#: tcl/show_errors.tcl:41 +#, fuzzy +msgid "LinuxCNC Errors" +msgstr "EMC2 故障" + +#: tcl/show_errors.tcl:44 +#, fuzzy +msgid "" +"LinuxCNC terminated with an error. When reporting problems, please include " +"all the information below in your message." +msgstr "EMC2 因故障 結束. 如要 報告問題, 請包括下面 的所有信息 在您的 消息" + +#: tcl/show_errors.tcl:74 tcl/scripts/Set_Coordinates.tcl:103 +msgid "Close" +msgstr "結束" + +#: tcl/tklinuxcnc.tcl:154 tcl/tklinuxcnc.tcl:181 +msgid "Set Run Mark" +msgstr "設置 運行 標記" + +#: tcl/tklinuxcnc.tcl:156 +#, tcl-format +msgid "Set run mark at line %s?" +msgstr "設置 運行 標記 在行號 %s?" + +#: tcl/tklinuxcnc.tcl:176 tcl/tklinuxcnc.tcl:204 +msgid "untitled" +msgstr "未命名" + +#: tcl/tklinuxcnc.tcl:212 +msgid "Load Parameter File" +msgstr "載入 參數 文件" + +#: tcl/tklinuxcnc.tcl:261 +#, fuzzy +msgid "LinuxCNC Diagnostics" +msgstr "EMC 排錯" + +#: tcl/tklinuxcnc.tcl:263 +msgid "Task" +msgstr "任務" + +#: tcl/tklinuxcnc.tcl:265 tcl/tklinuxcnc.tcl:288 tcl/tklinuxcnc.tcl:311 +msgid "Heartbeat:" +msgstr "心搏:" + +#: tcl/tklinuxcnc.tcl:268 tcl/tklinuxcnc.tcl:291 tcl/tklinuxcnc.tcl:314 +msgid "Command:" +msgstr "指令:" + +#: tcl/tklinuxcnc.tcl:271 tcl/tklinuxcnc.tcl:294 tcl/tklinuxcnc.tcl:317 +msgid "Command #:" +msgstr "指令 #:" + +#: tcl/tklinuxcnc.tcl:274 tcl/tklinuxcnc.tcl:297 tcl/tklinuxcnc.tcl:320 +msgid "Status:" +msgstr "狀況" + +#: tcl/tklinuxcnc.tcl:286 +msgid "Io" +msgstr "輸入輸出" + +#: tcl/tklinuxcnc.tcl:309 +msgid "Motion" +msgstr "動作" + +#: tcl/tklinuxcnc.tcl:350 +#, fuzzy +msgid "About TkLinuxCNC" +msgstr "關于 TkEditor" + +#: tcl/tklinuxcnc.tcl:351 +msgid "" +"TkLinuxcnc\n" +"\n" +"Tcl/Tk GUI for LinuxCNC\n" +"\n" +"GPL Version 2 (2012)" +msgstr "" + +#: tcl/tklinuxcnc.tcl:399 +msgid "Set Tool Offset" +msgstr "設置 刀具 偏移量" + +#: tcl/tklinuxcnc.tcl:404 tcl/tklinuxcnc.tcl:905 +msgid "Tool:" +msgstr "刀具:" + +#: tcl/tklinuxcnc.tcl:722 +msgid "Edit..." +msgstr "編輯..." + +#: tcl/tklinuxcnc.tcl:727 +msgid "Tool Table Editor..." +msgstr "刀具表編輯..." + +#: tcl/tklinuxcnc.tcl:730 src/emc/usr_intf/touchy/touchy.glade:1383 +msgid "Reload Tool Table" +msgstr "重新 載入 刀具表" + +#: tcl/tklinuxcnc.tcl:740 +msgid "Offsets and Variables..." +msgstr "偏移 和 變量" + +#: tcl/tklinuxcnc.tcl:741 +msgid "Diagnostics..." +msgstr "診斷..." + +#: tcl/tklinuxcnc.tcl:742 +msgid "Backplot..." +msgstr "路徑 模擬..." + +#: tcl/tklinuxcnc.tcl:748 +msgid "Testing..." +msgstr "測試..." + +#: tcl/tklinuxcnc.tcl:749 +msgid "Debug..." +msgstr "排錯..." + +#: tcl/tklinuxcnc.tcl:750 +msgid "Font..." +msgstr "字體..." + +#: tcl/tklinuxcnc.tcl:754 src/emc/usr_intf/axis/scripts/image-to-gcode.py:665 +msgid "Units" +msgstr "單位" + +#: tcl/tklinuxcnc.tcl:755 +msgid "auto" +msgstr "自動" + +#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8873 +msgid "inches" +msgstr "英寸" + +#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1609 +#: src/emc/usr_intf/axis/scripts/axis.py:1855 +#: src/emc/usr_intf/axis/scripts/axis.py:2386 +#: src/emc/usr_intf/touchy/touchy.glade:3301 +#: src/emc/usr_intf/stepconf/stepconf.py:1314 +#: src/emc/usr_intf/stepconf/pages.py:625 +#: src/emc/usr_intf/stepconf/main_page.glade:251 +#: src/emc/usr_intf/pncconf/pncconf.py:8869 +#: src/emc/usr_intf/pncconf/pncconf.glade:2195 +#: src/emc/usr_intf/pncconf/pncconf.glade:2362 +#: src/emc/usr_intf/pncconf/pncconf.glade:64552 +#: src/emc/usr_intf/pncconf/pncconf.glade:64621 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm" +msgstr "毫米" + +#: tcl/tklinuxcnc.tcl:758 +msgid "cm" +msgstr "厘米" + +#: tcl/tklinuxcnc.tcl:762 +msgid "Utilities" +msgstr "實用程式 選單" + +#: tcl/tklinuxcnc.tcl:763 +msgid "Hal Scope" +msgstr "HAL 顯示器" + +#: tcl/tklinuxcnc.tcl:785 +msgid "HAL Show" +msgstr "HAL 顯示" + +#: tcl/tklinuxcnc.tcl:786 +msgid "HAL Config" +msgstr "HAL 設定" + +#: tcl/tklinuxcnc.tcl:792 +msgid "Balloon help" +msgstr "弹出式 求助" -#: tcl/bin/halconfig.tcl:103 -msgid "Save Tune" -msgstr "保存微調" +#: tcl/tklinuxcnc.tcl:815 +msgid "Estop on" +msgstr "急停 開" -#: tcl/bin/halconfig.tcl:103 -msgid "Save as Netlist" -msgstr "以網表保存" +#: tcl/tklinuxcnc.tcl:816 +msgid "Estop off" +msgstr "急停 關" -#: tcl/bin/halconfig.tcl:103 -msgid "Don't Save" -msgstr "不保存" +#: tcl/tklinuxcnc.tcl:818 +msgid "Machine on" +msgstr "開机" -#: tcl/bin/halconfig.tcl:132 -msgid "Show" -msgstr "展示" +#: tcl/tklinuxcnc.tcl:819 src/emc/usr_intf/gscreen/gscreen.glade:2452 +msgid "Machine off" +msgstr "關机" -#: tcl/bin/halconfig.tcl:133 -msgid "Watch" -msgstr "監視" +#: tcl/tklinuxcnc.tcl:826 src/emc/usr_intf/touchy/touchy.glade:1561 +msgid "Manual" +msgstr "說明書" -#: tcl/bin/halconfig.tcl:134 -msgid "Modify" -msgstr "修改" +#: tcl/tklinuxcnc.tcl:835 +msgid "Mist on" +msgstr "噴霧 開" -#: tcl/bin/halconfig.tcl:157 -msgid "Save INI Tuning" -msgstr "保存 INI 微調" +#: tcl/tklinuxcnc.tcl:836 +msgid "Mist off" +msgstr "噴霧 關" -#: tcl/bin/halconfig.tcl:159 -msgid "Save HAL Ini" -msgstr "保存 HAL Ini" +#: tcl/tklinuxcnc.tcl:843 +msgid "Flood on" +msgstr "淹浸 開" -#: tcl/bin/halconfig.tcl:161 -msgid "Save HAL Net" -msgstr "保存 HAL 網表" +#: tcl/tklinuxcnc.tcl:844 +msgid "Flood off" +msgstr "淹浸 關" -#: tcl/bin/halconfig.tcl:163 -msgid "Save and Exit" -msgstr "保存 及 退出" +#: tcl/tklinuxcnc.tcl:851 +msgid "Lube on" +msgstr "潤滑 開" -#: tcl/bin/halconfig.tcl:168 tcl/mini.tcl:916 tcl/tklinuxcnc.tcl:739 -msgid "View" -msgstr "觀看" +#: tcl/tklinuxcnc.tcl:852 +msgid "Lube off" +msgstr "潤滑 關" -#: tcl/bin/halconfig.tcl:170 tcl/bin/halshow.tcl:104 -msgid "Expand Tree" -msgstr "樹狀 擴張" +#: tcl/tklinuxcnc.tcl:869 +msgid "Spindle forward" +msgstr "主軸 前轉" -#: tcl/bin/halconfig.tcl:172 tcl/bin/halshow.tcl:106 -msgid "Collapse Tree" -msgstr "樹狀 收縮" +#: tcl/tklinuxcnc.tcl:870 +msgid "Spindle reverse" +msgstr "主軸 反轉" -#: tcl/bin/halconfig.tcl:175 tcl/bin/halshow.tcl:109 -msgid "Expand Pins" -msgstr "展開 針" +#: tcl/tklinuxcnc.tcl:885 +msgid "Brake on" +msgstr "剎車 開" -#: tcl/bin/halconfig.tcl:177 tcl/bin/halshow.tcl:111 -msgid "Expand Parameters" -msgstr "展開 參數" +#: tcl/tklinuxcnc.tcl:886 +msgid "Brake off" +msgstr "剎車 關" -#: tcl/bin/halconfig.tcl:179 tcl/bin/halshow.tcl:113 -msgid "Expand Signals" -msgstr "展開 信號" +#: tcl/tklinuxcnc.tcl:907 +msgid "Offset:" +msgstr "位移:" -#: tcl/bin/halconfig.tcl:182 tcl/bin/halshow.tcl:116 -msgid "Erase Watch" -msgstr "清徐 監視" +#: tcl/tklinuxcnc.tcl:913 +msgid "Work Offsets:" +msgstr "工件 位移:" -#: tcl/bin/halconfig.tcl:194 tcl/mini.tcl:840 tcl/mini.tcl:2785 -msgid "About" -msgstr "關于" +#: tcl/tklinuxcnc.tcl:1233 +msgid "relative" +msgstr "相對的" -#: tcl/bin/halconfig.tcl:196 -msgid "Main" -msgstr "主頁" +#: tcl/tklinuxcnc.tcl:1234 +msgid "machine" +msgstr "機床" -#: tcl/bin/halconfig.tcl:476 -msgid "Enter HAL command :" -msgstr "输入 HAL 指令 :" +#: tcl/tklinuxcnc.tcl:1236 +msgid "actual" +msgstr "現實" -#: tcl/bin/halconfig.tcl:479 tcl/bin/halconfig.tcl:528 tcl/bin/halshow.tcl:354 -msgid "Execute" -msgstr "執行" +#: tcl/tklinuxcnc.tcl:1237 +msgid "commanded" +msgstr "指令" -#: tcl/bin/halconfig.tcl:943 tcl/bin/halshow.tcl:405 -msgid "Select a node to show." -msgstr "選定要展示的節點." +#: tcl/tklinuxcnc.tcl:1239 +msgid "joint" +msgstr "" -#: tcl/bin/halconfig.tcl:968 tcl/bin/halshow.tcl:429 -msgid "<-- Select a Leaf. Click on its name." -msgstr "<-- 選定一葉. 點擊它的名字." +#: tcl/tklinuxcnc.tcl:1240 +msgid "world" +msgstr "" -#: tcl/bin/halconfig.tcl:1085 tcl/bin/halconfig.tcl:1095 -#: tcl/bin/halconfig.tcl:1102 tcl/bin/halconfig.tcl:1109 -#: tcl/bin/halconfig.tcl:1116 -#, tcl-format -msgid "Click a highlighted entry where %s should go." -msgstr "點擊高亮顯示的條目 到 %s 要到的地方." +#: tcl/tklinuxcnc.tcl:1333 +msgid "Axis Offset" +msgstr "軸向的 偏置" -#: tcl/bin/halconfig.tcl:1092 -msgid "Nothing to be done for parameters here. Try the tuning page" -msgstr "這裡 沒有 什麼可以 處理 參數. 嘗試 調整頁" +#: tcl/tklinuxcnc.tcl:1335 +msgid "Set axis value:" +msgstr "設定軸 偏移量:" -#: tcl/bin/halconfig.tcl:1124 -#, tcl-format -msgid "%s is not a leaf, try again" -msgstr "%s 不是葉, 再試" +#: tcl/tklinuxcnc.tcl:1429 +msgid "Set Feed Override" +msgstr "設定 超越調整" -#: tcl/bin/halconfig.tcl:1281 -msgid "" -"Copyright Raymond E Henry. 2006\n" -"License: GPL Version 2\n" -"\n" -"Halconfig is an LinuxCNC configuration tool. It requires that you have " -"started an instance of linuxcnc.\n" -"\n" -"This script carries no warranty or liability for its use to the extent " -"allowed by law." -msgstr "" +#: tcl/tklinuxcnc.tcl:1435 +msgid "Set feed override:" +msgstr "設定 超速調整:" -#: tcl/bin/halshow.tcl:69 -msgid " SHOW " -msgstr "展示" +#: tcl/tklinuxcnc.tcl:1460 +msgid "Set Spindle Override" +msgstr "設定 主軸超速" -#: tcl/bin/halshow.tcl:70 -msgid " WATCH " -msgstr "監視 " +#: tcl/tklinuxcnc.tcl:1466 +msgid "Set spindle speed override:" +msgstr "設定 主軸 速度超速:" -#: tcl/bin/halshow.tcl:90 -msgid "Load Watch List" -msgstr "加載觀察名單" +#: tcl/tklinuxcnc.tcl:1521 +msgid "Linear Jog Speed" +msgstr "直線 慢步 速度" -#: tcl/bin/halshow.tcl:102 -msgid "Tree View" -msgstr "樹狀觀看" +#: tcl/tklinuxcnc.tcl:1552 +msgid "Angular Jog Speed (deg)/min:" +msgstr "角線 慢步 速度 度/分:" -#: tcl/bin/halshow.tcl:349 -msgid "Test HAL command :" -msgstr "測試 HAL 指令 :" +#: tcl/tklinuxcnc.tcl:1596 +msgid "Spindle speed Override:" +msgstr "主軸速度 超速:" -#: tcl/bin/halshow.tcl:544 -msgid "Load a watch list" -msgstr "加載觀察名單" +#: tcl/tklinuxcnc.tcl:1642 +msgid "Program: " +msgstr "程式: " -#: tcl/bin/halshow.tcl:567 -msgid "Save current watch list" -msgstr "保存當前觀察名單" +#: tcl/tklinuxcnc.tcl:1647 +msgid " - Status: " +msgstr " - 狀況: " -#: tcl/bin/halshow.tcl:581 -msgid "Commands may be tested here but they will NOT be saved" -msgstr "指令可以在這兒測試但不會被保存" +#: tcl/tklinuxcnc.tcl:1663 +msgid "Optional Stop" +msgstr "可選 的 停止" -#: tcl/bin/pickconfig.tcl:50 -msgid "" -"Can't find the bwidget 1.7 package. There is a debian bwidget package; " -"install \n" -"it with sudo apt-get install bwidget." -msgstr "" +#: tcl/tklinuxcnc.tcl:2010 +msgid "Error" +msgstr "故障" -#: tcl/bin/pickconfig.tcl:178 -msgid "No details available." -msgstr "" +#: tcl/tklinuxcnc.tcl:2070 tcl/ngcgui_ttt.tcl:46 +msgid "Set Font" +msgstr "字體 設為" -#: tcl/bin/pickconfig.tcl:194 -#, fuzzy -msgid "LinuxCNC Configuration Selector" -msgstr "EMC2 配置文件選擇器" +#: tcl/tklinuxcnc.tcl:2079 tcl/ngcgui_ttt.tcl:283 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4827 +msgid "Font" +msgstr "字體" -#: tcl/bin/pickconfig.tcl:215 -msgid "" -"Welcome to LinuxCNC.\n" -"\n" -"Select a machine configuration from the list on the left.\n" -"Details about the selected configuration will appear in the display on the " -"right.\n" -"Click 'OK' to run the selected configuration" -msgstr "" +#: tcl/tklinuxcnc.tcl:2086 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3257 +msgid "Size" +msgstr "大小" -#: tcl/bin/pickconfig.tcl:271 -msgid "My Configurations" -msgstr "我的配置" +#: tcl/tklinuxcnc.tcl:2093 +msgid "Style" +msgstr "式樣" -#: tcl/bin/pickconfig.tcl:274 -msgid "Sample Configurations" -msgstr "樣辦配置" +#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:2031 +msgid "ESTOP" +msgstr "急停" -#: tcl/bin/pickconfig.tcl:332 -#, tcl-format -msgid "ERROR: no configurations found in path '%s'" -msgstr "故障: 沒有配置文件在路徑 '%s'" +#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2979 share/axis/tcl/axis.tcl:2033 +msgid "ON" +msgstr "開" -#: tcl/bin/pickconfig.tcl:369 -msgid "Copy Configuration?" -msgstr "復制配置文件?" +#: tcl/tklinuxcnc.tcl:2290 +msgid "LUBE ON" +msgstr "潤滑 開" -#: tcl/bin/pickconfig.tcl:369 -#, tcl-format -msgid "" -"Would you like to copy the %s configuration to your home directory so you " -"can customize it?" -msgstr "你要 復制 配置文件 %s 去 你的 主頁讓 你 自定義它?" +#: tcl/tklinuxcnc.tcl:2292 +msgid "LUBE OFF" +msgstr "潤滑 關" -#: tcl/bin/pickconfig.tcl:369 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:563 -msgid "Yes" -msgstr "是" +#: tcl/tklinuxcnc.tcl:2294 +msgid "LUBE ?" +msgstr "潤滑 ?" -#: tcl/bin/pickconfig.tcl:479 -msgid "Configuration Copied" -msgstr "複制 配置 文件" +#: tcl/scripts/Set_Coordinates.tcl:23 +#, fuzzy +msgid "LinuxCNC Set Coordinate" +msgstr "EMC 坐摽 設為" -#: tcl/bin/pickconfig.tcl:479 -#, fuzzy, tcl-format -msgid "" -"The configuration file has been copied to %s. Next time, choose this " -"location when starting LinuxCNC." -msgstr "配置 文件 被複制 到 %s. 再打開 EMC2 時,先 選 那裡." +#: tcl/scripts/Set_Coordinates.tcl:26 +msgid "Coordinate System Control Window" +msgstr "坐標 系統 控制 窗口" -#: tcl/bin/pickconfig.tcl:506 -msgid "Shortcut Created" -msgstr "創建 捷徑" +#: tcl/scripts/Set_Coordinates.tcl:81 +msgid "Var # " +msgstr "變量 # " -#: tcl/bin/pickconfig.tcl:506 -msgid "" -"A shortcut to this configuration file has been created on your desktop. You " -"can use it to automatically launch this configuration." -msgstr "配置文件的捷徑創建在你的桌面.可以用它來起動這種配置." +#: tcl/scripts/Set_Coordinates.tcl:82 +msgid "Offset Value " +msgstr "偏移 值 " -#: tcl/bin/pickconfig.tcl:511 -msgid "Create Desktop Shortcut" -msgstr "創建 桌面 捷徑" +#: tcl/scripts/Set_Coordinates.tcl:83 +msgid "What to Teach" +msgstr "教 什麼 " -#: tcl/bin/tkbackplot.tcl:110 -#, fuzzy -msgid "TkLinuxCNC BackPlot" -msgstr "TKEmc 路徑模擬" +#: tcl/scripts/Set_Coordinates.tcl:101 +msgid "Set Old" +msgstr "設定 舊的" -#: tcl/bin/tkbackplot.tcl:125 -msgid "SETUP" -msgstr "設定" +#: tcl/scripts/Set_Coordinates.tcl:102 +msgid "Set Zero" +msgstr "設定 零" -#: tcl/bin/tkbackplot.tcl:127 -msgid "RESET" -msgstr "重置" +#: tcl/scripts/Set_Coordinates.tcl:104 +msgid "Write" +msgstr "寫" -#: tcl/bin/tkbackplot.tcl:129 -msgid "CANCEL" -msgstr "取消" +#: tcl/ngcgui.tcl:439 tcl/ngcgui.tcl:846 +msgid "Need non-null file name" +msgstr "" -#: tcl/bin/tkbackplot.tcl:250 -msgid "AXIS" +#: tcl/ngcgui.tcl:483 +msgid "Disallowed use of ngcgui generated file as Subfile" msgstr "" -#: tcl/bin/tkbackplot.tcl:251 -msgid "OFFSET" -msgstr "偏移" +#: tcl/ngcgui.tcl:489 +msgid "" +"marked (not_a_subfile)\n" +"Not intended for use as a subfile" +msgstr "" -#: tcl/bin/tkbackplot.tcl:252 -msgid "ANGLE" -msgstr "角度" +#: tcl/ngcgui.tcl:503 tcl/ngcgui.tcl:522 tcl/ngcgui.tcl:544 tcl/ngcgui.tcl:557 +#: tcl/ngcgui.tcl:577 tcl/ngcgui.tcl:682 +msgid "bogus" +msgstr "" -#: tcl/bin/tkbackplot.tcl:253 -msgid "DIRECTION" -msgstr "方向" +#: tcl/ngcgui.tcl:505 +msgid "can not include subroutines within ngcgui subfile" +msgstr "" -#: tcl/bin/tkbackplot.tcl:270 -msgid "SIZE :" -msgstr "規格 :" +#: tcl/ngcgui.tcl:513 +msgid "Multiple subroutines in file not allowed" +msgstr "" -#: tcl/mini.tcl:490 -#, tcl-format -msgid "JOG %s +" -msgstr "慢行 %s +" +#: tcl/ngcgui.tcl:524 +#, fuzzy +msgid "sub label" +msgstr "標 籤" -#: tcl/mini.tcl:491 -#, tcl-format -msgid "JOG %s -" -msgstr "慢行 %s -" +#: tcl/ngcgui.tcl:524 tcl/ngcgui.tcl:579 +#, fuzzy +msgid "does not match subroutine file name" +msgstr "太多的子程序層面" -#: tcl/mini.tcl:492 -#, tcl-format -msgid "" -"%s\n" -"\n" -"Z\n" -"E\n" -"R\n" -"O" +#: tcl/ngcgui.tcl:539 tcl/ngcgui.tcl:540 +msgid "ignoring M2 after endsub" msgstr "" -#: tcl/mini.tcl:840 -msgid "" -"TkMini \n" -"\n" -"Tcl/Tk GUI for Enhanced Machine Controller\n" -"\n" -"GPL Copyright 2003 \n" -"Ray Henry \n" -"\n" -" 3D backplotter by Paul Corner \n" -" \n" -"This software comes with ABSOLUTELY NO GUARANTEE! \n" -"For details see the copyright.html file in this directory." +#: tcl/ngcgui.tcl:545 +msgid "file contains lines after subend" msgstr "" -#: tcl/mini.tcl:915 -msgid "Program" -msgstr "程式" +#: tcl/ngcgui.tcl:558 +msgid "file contains lines before sub" +msgstr "" -#: tcl/mini.tcl:918 -msgid "Info" -msgstr "訊息" +#: tcl/ngcgui.tcl:579 +msgid "endsub label" +msgstr "" -#: tcl/mini.tcl:923 -msgid "Backplot" -msgstr "路徑模擬" +#: tcl/ngcgui.tcl:684 +msgid "out of sequence positional parameter" +msgstr "" -#: tcl/mini.tcl:925 src/emc/usr_intf/pncconf/pncconf.glade:6125 -msgid "Editor" -msgstr "編輯器" +#: tcl/ngcgui.tcl:684 +msgid "expected" +msgstr "" -#: tcl/mini.tcl:927 -msgid "Offsets" -msgstr "偏移" +#: tcl/ngcgui.tcl:735 +msgid "no sub found in file" +msgstr "" -#: tcl/mini.tcl:929 -msgid "Tools" -msgstr "刀具" +#: tcl/ngcgui.tcl:738 +msgid "no endsub found in file" +msgstr "" -#: tcl/mini.tcl:951 tcl/mini.tcl:3565 tcl/tklinuxcnc.tcl:732 -msgid "Reset" -msgstr "重置" +#: tcl/ngcgui.tcl:801 +msgid "Cannot find gcmc executable" +msgstr "" -#: tcl/mini.tcl:960 -msgid "Position Type" -msgstr "位置類型" +#: tcl/ngcgui.tcl:802 +msgid "Please Install in path" +msgstr "" -#: tcl/mini.tcl:962 -msgid "Tool Info" -msgstr "刀具訊息" +#: tcl/ngcgui.tcl:810 +msgid "not embedded, deriving outdir from:" +msgstr "" -#: tcl/mini.tcl:964 -msgid "Offset Info" -msgstr "偏移訊息" +#: tcl/ngcgui.tcl:1038 +#, fuzzy +msgid "Choose Files" +msgstr "刀具文件" -#: tcl/mini.tcl:967 -msgid "Show Restart" -msgstr "顯示重開" +#: tcl/ngcgui.tcl:1178 +#, fuzzy +msgid "Controls" +msgstr "MPG 慢步 操控" -#: tcl/mini.tcl:968 -msgid "Hide Restart" -msgstr "隱蔽重開" +#: tcl/ngcgui.tcl:1187 +msgid "Preamble" +msgstr "" -#: tcl/mini.tcl:970 -msgid "Show Split Right" -msgstr "顯示右分頁" +#: tcl/ngcgui.tcl:1200 +msgid "Subfile" +msgstr "" -#: tcl/mini.tcl:972 -msgid "Show Mode Full" -msgstr "顯示全頁" +#: tcl/ngcgui.tcl:1212 +msgid "Postamble" +msgstr "" -#: tcl/mini.tcl:974 -msgid "Show Popin Full" -msgstr "顯示彈出窗口塞滿" +#: tcl/ngcgui.tcl:1229 +msgid "Retain values on Subfile read" +msgstr "" -#: tcl/mini.tcl:978 -msgid "Actual Position" -msgstr "實際位置" +#: tcl/ngcgui.tcl:1237 +#, fuzzy +msgid "Expand subroutine" +msgstr "樹狀 擴張" -#: tcl/mini.tcl:980 -msgid "Commanded Position" -msgstr "指揮位置" +#: tcl/ngcgui.tcl:1247 tcl/ngcgui.tcl:2571 +#, fuzzy +msgid "Autosend" +msgstr "自動" -#: tcl/mini.tcl:983 -msgid "Machine Position" -msgstr "機床位置" +#: tcl/ngcgui.tcl:1257 +#, fuzzy +msgid "Verbose ngcfile" +msgstr "rs274ngc 文件" -#: tcl/mini.tcl:985 -msgid "Relative Position" -msgstr "相對位置" +#: tcl/ngcgui.tcl:1267 tcl/ngcgui.tcl:2393 tcl/ngcgui.tcl:2416 +#: tcl/ngcgui.tcl:2446 +msgid "Create Feature" +msgstr "" -#: tcl/mini.tcl:988 tcl/tklinuxcnc.tcl:747 -msgid "Calibration..." -msgstr "校準..." +#: tcl/ngcgui.tcl:1273 tcl/ngcgui.tcl:3058 +#, fuzzy +msgid "MakeFile" +msgstr "文件" -#: tcl/mini.tcl:990 -msgid "HAL Show..." -msgstr "HAL 顯示..." +#: tcl/ngcgui.tcl:1274 tcl/ngcgui.tcl:3055 +msgid "Finalize" +msgstr "" -#: tcl/mini.tcl:992 -msgid "HAL Config..." -msgstr "HAL 配置..." +#: tcl/ngcgui.tcl:1291 +#, fuzzy +msgid "Reread" +msgstr "線清" -#: tcl/mini.tcl:997 -msgid "Program File" -msgstr "程序檔案" +#: tcl/ngcgui.tcl:1310 +msgid "SendFileToAxis" +msgstr "" -#: tcl/mini.tcl:998 -#, tcl-format -msgid "Program file is %s" -msgstr "程序檔案是 %s" +#: tcl/ngcgui.tcl:1353 +msgid "Unrecoverable problem" +msgstr "" -#: tcl/mini.tcl:999 -msgid "Editor File" -msgstr "編輯文件" +#: tcl/ngcgui.tcl:1431 +msgid "Postamble file" +msgstr "" -#: tcl/mini.tcl:1000 -#, tcl-format -msgid "Editor file is %s" -msgstr "編輯文件是 %s" +#: tcl/ngcgui.tcl:1481 +msgid "Subroutine file" +msgstr "" -#: tcl/mini.tcl:1001 -msgid "Parameter File" -msgstr "參數文件" +#: tcl/ngcgui.tcl:1545 +#, fuzzy +msgid "Positional Parameters" +msgstr " 參數(_m) " -#: tcl/mini.tcl:1002 -#, tcl-format -msgid "Parameter file is %s" -msgstr "參數 文件 是 %s" +#: tcl/ngcgui.tcl:1694 +msgid "No Subfile specified" +msgstr "" -#: tcl/mini.tcl:1003 -msgid "Tool File" -msgstr "刀具文件" +#: tcl/ngcgui.tcl:1696 +#, fuzzy +msgid "No parameters yet" +msgstr " 參數(_m) " -#: tcl/mini.tcl:1004 -#, tcl-format -msgid "Tool file is %s" -msgstr "刀具文件是 %s" +#: tcl/ngcgui.tcl:1705 +msgid "Missing value for parm" +msgstr "" -#: tcl/mini.tcl:1006 -msgid "Active G Codes" -msgstr "激活 G Codes" +#: tcl/ngcgui.tcl:1726 +#, fuzzy +msgid "Output file" +msgstr "輸出" -#: tcl/mini.tcl:1007 -#, tcl-format -msgid "" -"Active codes include; \n" -"%s" +#: tcl/ngcgui.tcl:1841 +msgid "Multiple Tabs with Features" msgstr "" -"激活指令包括; \n" -"%s" -#: tcl/mini.tcl:1010 tcl/mini.tcl:2558 tcl/tklinuxcnc.tcl:791 -msgid "Help..." -msgstr "求助..." +#: tcl/ngcgui.tcl:1842 +msgid "Finalize all Tabs?" +msgstr "" -#: tcl/mini.tcl:1027 tcl/tklinuxcnc.tcl:890 -msgid "ABORT" +#: tcl/ngcgui.tcl:1842 +msgid "Order" msgstr "" -#: tcl/mini.tcl:1038 tcl/mini.tcl:2048 -msgid "CONTINUE" -msgstr "繼續" +#: tcl/ngcgui.tcl:1844 +msgid "No, just this page" +msgstr "" -#: tcl/mini.tcl:1044 tcl/tklinuxcnc.tcl:828 tcl/tklinuxcnc.tcl:2248 -#: src/emc/usr_intf/touchy/touchy.glade:1264 -msgid "MDI" +#: tcl/ngcgui.tcl:1858 +msgid "Axis is not responding" msgstr "" -#: tcl/mini.tcl:1048 tcl/tklinuxcnc.tcl:2239 -msgid "AUTO" -msgstr "自動" +#: tcl/ngcgui.tcl:1859 +#, fuzzy +msgid "Error: " +msgstr "故障" -#: tcl/mini.tcl:1052 tcl/mini.tcl:1812 tcl/tklinuxcnc.tcl:2141 -#: tcl/tklinuxcnc.tcl:2261 -msgid "MANUAL" -msgstr "手動" +#: tcl/ngcgui.tcl:1861 +msgid "Autosend disabled, Ctrl-A toggles autosend" +msgstr "" -#: tcl/mini.tcl:1106 -msgid "Tool #:" -msgstr "刀具 #:" +#: tcl/ngcgui.tcl:1863 +msgid "File saving enabled -- Finalize to save" +msgstr "" -#: tcl/mini.tcl:1108 -msgid "Length :" -msgstr "長度 :" +#: tcl/ngcgui.tcl:1879 +msgid "Require .ngc suffix for filename" +msgstr "" -#: tcl/mini.tcl:1119 -msgid "Work Offsets: " -msgstr "工件偏移:" +#: tcl/ngcgui.tcl:1889 +msgid "Disallowed overwrite of" +msgstr "" -#: tcl/mini.tcl:1121 -msgid "start offsets popup here" -msgstr "在這裡 彈出 偏移 窗口" +#: tcl/ngcgui.tcl:1913 +msgid "FEATURE" +msgstr "" -#: tcl/mini.tcl:1165 -msgid "start override popup here" -msgstr "啟動 超速 彈出 在這裡" +#: tcl/ngcgui.tcl:1920 +msgid "feature line added" +msgstr "" -#: tcl/mini.tcl:1168 tcl/tklinuxcnc.tcl:1576 share/axis/tcl/axis.tcl:1669 -msgid "Feed Override:" -msgstr "進給 超速:" +#: tcl/ngcgui.tcl:1932 +msgid "line added" +msgstr "" -#: tcl/mini.tcl:1180 -msgid "-- MESSAGES --" -msgstr "-- 信息 --" +#: tcl/ngcgui.tcl:1932 +msgid "activated" +msgstr "" -#: tcl/mini.tcl:1230 -msgid "toggleView's not doin nothin yet" -msgstr "切換視窗 未有反應" +#: tcl/ngcgui.tcl:1934 +msgid "restores" +msgstr "" -#: tcl/mini.tcl:1282 -msgid "Can't set zero with a tool offset active so I issued G49 to cancel it." -msgstr "在有激活的 刀具偏移時, 不能置零, 發出 G49 指令去 取消置零" +#: tcl/ngcgui.tcl:1973 +msgid "NOTREACHED mode" +msgstr "" -#: tcl/mini.tcl:1346 -#, tcl-format -msgid "Can't update the var file while machine is in auto and %s." -msgstr "不能 更新 變量 文件, 當 机器 在 自動 和 %s." +#: tcl/ngcgui.tcl:1989 +msgid "Positional parameters for" +msgstr "" -#: tcl/mini.tcl:1400 tcl/tklinuxcnc.tcl:1227 -msgid "override limits" -msgstr "超速 極限" +#: tcl/ngcgui.tcl:1997 +#, fuzzy +msgid "expanded file" +msgstr "文字 文件" -#: tcl/mini.tcl:1405 tcl/tklinuxcnc.tcl:1263 -msgid "home" -msgstr "零點" +#: tcl/ngcgui.tcl:2011 +#, fuzzy +msgid "call subroutine file" +msgstr "太多的子程序層面" -#: tcl/mini.tcl:1426 -msgid "DEFAULT" -msgstr "預置值" +#: tcl/ngcgui.tcl:2394 +msgid "Enter parms for 1st feature" +msgstr "" -#: tcl/mini.tcl:1427 -msgid "Speed:" -msgstr "速度" +#: tcl/ngcgui.tcl:2401 +#, fuzzy +msgid "New Outfile" +msgstr "數控 文件" -#: tcl/mini.tcl:1430 -msgid "RAPID" -msgstr "高速" +#: tcl/ngcgui.tcl:2403 +msgid "Ready to make New Outfile" +msgstr "" -#: tcl/mini.tcl:1447 tcl/tklinuxcnc.tcl:1391 -msgid "Set Jog Speed" -msgstr "輸入 慢行 速度" +#: tcl/ngcgui.tcl:2419 tcl/ngcgui.tcl:2452 +msgid "Enter parms for feature " +msgstr "" -#: tcl/mini.tcl:1453 tcl/tklinuxcnc.tcl:1404 -msgid "Set jog speed:" -msgstr "輸入 慢行 速度:" +#: tcl/ngcgui.tcl:2439 +#, fuzzy +msgid "feature" +msgstr "夾具" -#: tcl/mini.tcl:1511 -msgid "JOG X +" -msgstr "慢行 X +" +#: tcl/ngcgui.tcl:2444 +#, fuzzy +msgid "Create Next" +msgstr "創建 或 修改" -#: tcl/mini.tcl:1512 -msgid "JOG X -" -msgstr "慢行 X -" +#: tcl/ngcgui.tcl:2449 +#, fuzzy +msgid "Created feature " +msgstr "創建 或 修改" -#: tcl/mini.tcl:1516 -msgid "increment" -msgstr "增量" +#: tcl/ngcgui.tcl:2473 +#, fuzzy +msgid "option" +msgstr "動作" -#: tcl/mini.tcl:1518 tcl/tklinuxcnc.tcl:602 tcl/tklinuxcnc.tcl:1249 -#: tcl/tklinuxcnc.tcl:1253 -msgid "continuous" -msgstr "持續" +#: tcl/ngcgui.tcl:2484 +#, fuzzy +msgid "Missing parameters" +msgstr " 參數(_m) " -#: tcl/mini.tcl:1520 -msgid "" -"A\n" -"L\n" -"L\n" -"\n" -"Z\n" -"E\n" -"R\n" -"O" +#: tcl/ngcgui.tcl:2488 +#, fuzzy +msgid "Parse Error" +msgstr "故障" + +#: tcl/ngcgui.tcl:2495 +msgid "Null Preamble" msgstr "" -#: tcl/mini.tcl:1588 src/emc/usr_intf/touchy/touchy.glade:1422 -msgid "Spindle Forward" -msgstr "主軸 前轉" +#: tcl/ngcgui.tcl:2500 +#, fuzzy +msgid "Read Preamble" +msgstr "超前角" -#: tcl/mini.tcl:1589 src/emc/usr_intf/touchy/touchy.glade:1433 -msgid "Spindle Reverse" -msgstr "主軸 反轉" +#: tcl/ngcgui.tcl:2504 +msgid "Preamble Error" +msgstr "" -#: tcl/mini.tcl:1590 tcl/tklinuxcnc.tcl:871 -msgid "Spindle off" -msgstr "主軸 停" +#: tcl/ngcgui.tcl:2509 +msgid "Null Postamble" +msgstr "" -#: tcl/mini.tcl:1592 src/emc/usr_intf/touchy/touchy.glade:1479 -msgid "Spindle Slower" -msgstr "主軸 慢些" +#: tcl/ngcgui.tcl:2514 +msgid "Read Postamble" +msgstr "" -#: tcl/mini.tcl:1596 src/emc/usr_intf/touchy/touchy.glade:1464 -msgid "Spindle Faster" -msgstr "主軸 快些" +#: tcl/ngcgui.tcl:2518 +msgid "Postamble Error" +msgstr "" -#: tcl/mini.tcl:1632 tcl/tklinuxcnc.tcl:1620 -msgid "MDI:" +#: tcl/ngcgui.tcl:2523 +msgid "Read Subfile" msgstr "" -#: tcl/mini.tcl:1669 tcl/tklinuxcnc.tcl:1658 -#: src/emc/usr_intf/stepconf/stepconf.glade:4403 -#: src/emc/usr_intf/pncconf/pncconf.glade:60509 -#: src/emc/usr_intf/pncconf/pncconf.glade:61603 -#: src/emc/usr_intf/pncconf/pncconf.glade:62696 -#: src/emc/usr_intf/pncconf/pncconf.glade:63789 -#: src/emc/usr_intf/pncconf/pncconf.glade:64889 -msgid "Run" -msgstr "運行" +#: tcl/ngcgui.tcl:2528 +#, fuzzy +msgid "Write Error" +msgstr "故障" + +#: tcl/ngcgui.tcl:2532 +msgid "Outfile set" +msgstr "" -#: tcl/mini.tcl:1671 tcl/tklinuxcnc.tcl:1659 -#: src/emc/usr_intf/pncconf/pncconf.glade:60574 -#: src/emc/usr_intf/pncconf/pncconf.glade:61668 -#: src/emc/usr_intf/pncconf/pncconf.glade:62761 -#: src/emc/usr_intf/pncconf/pncconf.glade:63854 -msgid "Pause" -msgstr "暫停" +#: tcl/ngcgui.tcl:2537 +msgid "Finished" +msgstr "" -#: tcl/mini.tcl:1673 tcl/tklinuxcnc.tcl:1660 -msgid "Resume" -msgstr "恢復" +#: tcl/ngcgui.tcl:2542 +#, fuzzy +msgid "Canceled" +msgstr "取消" -#: tcl/mini.tcl:1675 tcl/tklinuxcnc.tcl:1661 -msgid "Step" -msgstr "步進" +#: tcl/ngcgui.tcl:2548 +msgid "Sent" +msgstr "" -#: tcl/mini.tcl:1677 tcl/tklinuxcnc.tcl:1662 -msgid "Verify" -msgstr "校驗" +#: tcl/ngcgui.tcl:2552 +#, fuzzy +msgid "SendFileToAxis failed" +msgstr "篩選 失敗" -#: tcl/mini.tcl:1698 -msgid "RESTART LINE" -msgstr "重新 起動 行號" +#: tcl/ngcgui.tcl:2556 +msgid "Ctrl-k for Key bindings" +msgstr "" -#: tcl/mini.tcl:1699 -msgid "Back" -msgstr "向後" +#: tcl/ngcgui.tcl:2560 +#, fuzzy +msgid "Expand sub" +msgstr "展開 針" -#: tcl/mini.tcl:1700 -msgid "Ahead" -msgstr "向前" +#: tcl/ngcgui.tcl:2564 +#, fuzzy +msgid "Retain values" +msgstr "設定軸 偏移量:" -#: tcl/mini.tcl:1701 tcl/ngcgui.tcl:1221 -msgid "Restart" -msgstr "重新 起動" +#: tcl/ngcgui.tcl:2568 +msgid "Verbose" +msgstr "" -#: tcl/mini.tcl:1711 tcl/mini.tcl:2823 tcl/mini.tcl:2882 -#: tcl/tklinuxcnc.tcl:465 src/emc/usr_intf/axis/scripts/axis.py:1885 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:754 -msgid "All files" -msgstr "所有文件" +#: tcl/ngcgui.tcl:2574 +msgid "Finalize Canceled" +msgstr "" -#: tcl/mini.tcl:1712 tcl/mini.tcl:2824 tcl/mini.tcl:2883 -#: tcl/tklinuxcnc.tcl:466 -msgid "Text files" -msgstr "文字 文件" +#: tcl/ngcgui.tcl:2711 tcl/ngcgui.tcl:2867 +msgid "Dismiss" +msgstr "" -#: tcl/mini.tcl:1713 tcl/mini.tcl:2825 tcl/mini.tcl:2884 -#: tcl/tklinuxcnc.tcl:467 -msgid "NC files" -msgstr "數控 文件" +#: tcl/ngcgui.tcl:2716 +msgid "ngcgui Error" +msgstr "" -#: tcl/mini.tcl:1753 -msgid "" -"The interpreter is running. \n" -" Pressing OK will abort and load the new program" +#: tcl/ngcgui.tcl:2739 +msgid "Declining support for tk send bug in ngcgui" msgstr "" -"解釋器 正在運行. \n" -"按 OK 將中止 並 加載 新的程序" -#: tcl/mini.tcl:1886 -msgid "ESTOPPED" -msgstr "已急停" +#: tcl/ngcgui.tcl:2740 +msgid "You should upgrade linuxcnc to >= linuxcnc2.5" +msgstr "" -#: tcl/mini.tcl:1889 -msgid "ESTOP PUSH" -msgstr "急停鈕 按下" +#: tcl/ngcgui.tcl:2784 +msgid "pre2.4_send_file_to_axis:error" +msgstr "" -#: tcl/mini.tcl:1892 tcl/tklinuxcnc.tcl:2233 -msgid "ESTOP RESET" -msgstr "急停鈕 復位" +#: tcl/ngcgui.tcl:2978 share/axis/tcl/axis.tcl:2032 +msgid "OFF" +msgstr "" -#: tcl/mini.tcl:1897 tcl/tklinuxcnc.tcl:2298 -msgid "SPINDLE FORWARD" -msgstr "主軸 前轉" +#: tcl/ngcgui.tcl:2981 +#, fuzzy +msgid "Toggle autosend" +msgstr "切換 淹浸" -#: tcl/mini.tcl:1899 tcl/tklinuxcnc.tcl:2300 -msgid "SPINDLE REVERSE" -msgstr "主軸 反轉" +#: tcl/ngcgui.tcl:2982 tcl/ngcgui.tcl:3189 +#, fuzzy +msgid "Clear entries" +msgstr "清除 通報" -#: tcl/mini.tcl:1901 tcl/tklinuxcnc.tcl:2302 -msgid "SPINDLE OFF" -msgstr "主軸 停" +#: tcl/ngcgui.tcl:2983 +msgid "Set entries to default values" +msgstr "" -#: tcl/mini.tcl:1903 tcl/tklinuxcnc.tcl:2304 -msgid "SPINDLE INCREASE" -msgstr "主軸 增速" +#: tcl/ngcgui.tcl:2984 tcl/ngcgui.tcl:2998 tcl/ngcgui.tcl:3000 +msgid "Open editor specified by" +msgstr "" -#: tcl/mini.tcl:1905 tcl/tklinuxcnc.tcl:2306 -msgid "SPINDLE DECREASE" -msgstr "主軸 減速" +#: tcl/ngcgui.tcl:2985 +msgid "on last outfile" +msgstr "" -#: tcl/mini.tcl:1907 tcl/tklinuxcnc.tcl:2308 -msgid "SPINDLE ?" -msgstr "主軸 ?" +#: tcl/ngcgui.tcl:2986 +#, fuzzy +msgid "toggle expand subroutines" +msgstr "太多的子程序層面" -#: tcl/mini.tcl:1911 tcl/tklinuxcnc.tcl:2312 -msgid "BRAKE ON" -msgstr "剎車 開" +#: tcl/ngcgui.tcl:2987 +msgid "Create feature" +msgstr "" -#: tcl/mini.tcl:1913 tcl/tklinuxcnc.tcl:2314 -msgid "BRAKE OFF" -msgstr "剎車 關" +#: tcl/ngcgui.tcl:2988 +msgid "Finalize (AUTO send is" +msgstr "" -#: tcl/mini.tcl:1915 tcl/tklinuxcnc.tcl:2316 -msgid "BRAKE ?" -msgstr "剎車 ?" +#: tcl/ngcgui.tcl:2989 +msgid "Show key bindings" +msgstr "" -#: tcl/mini.tcl:1919 tcl/tklinuxcnc.tcl:2274 -msgid "MIST ON" -msgstr "噴霧 開" +#: tcl/ngcgui.tcl:2990 +msgid "Restart (cancel pending)" +msgstr "" -#: tcl/mini.tcl:1921 tcl/tklinuxcnc.tcl:2276 -msgid "MIST OFF" -msgstr "噴霧 關" +#: tcl/ngcgui.tcl:2991 +msgid "(re)Read Preamble" +msgstr "" -#: tcl/mini.tcl:1923 tcl/tklinuxcnc.tcl:2278 -msgid "MIST ?" -msgstr "噴霧 ?" +#: tcl/ngcgui.tcl:2992 +msgid "(re)Read Postamble" +msgstr "" -#: tcl/mini.tcl:1927 tcl/tklinuxcnc.tcl:2282 -msgid "FLOOD ON" -msgstr "漫射 開" +#: tcl/ngcgui.tcl:2993 +msgid "(re)Read Subfile" +msgstr "" -#: tcl/mini.tcl:1929 tcl/tklinuxcnc.tcl:2284 -msgid "FLOOD OFF" -msgstr "漫射 關" +#: tcl/ngcgui.tcl:2994 +msgid "toggle retain values" +msgstr "" -#: tcl/mini.tcl:1931 tcl/tklinuxcnc.tcl:2286 -msgid "FLOOD ?" -msgstr "漫射 ?" +#: tcl/ngcgui.tcl:2995 +msgid "toggle output file verbosity" +msgstr "" -#: tcl/mini.tcl:2052 -msgid "FEEDHOLD" -msgstr "進給 留住" +#: tcl/ngcgui.tcl:2996 +#, fuzzy +msgid "Show status" +msgstr "顯示重開" -#: tcl/mini.tcl:2124 -msgid "" -"TOOL SETUP \n" -" Click or tab to edit. Press enter to return to keyboard machine control." +#: tcl/ngcgui.tcl:2997 +msgid "Show full status (debug info)" msgstr "" -"刀具安裝 \n" -"點擊 或 標籤 進行 編輯 按回車鍵 返回 到 鍵盤 機器控制." -#: tcl/mini.tcl:2130 -msgid " TOOL NUMBER " -msgstr "  刀具 號  " +#: tcl/ngcgui.tcl:2999 +#, fuzzy +msgid "on current subfile" +msgstr "重新打開 當前 文件 [Control-R]" -#: tcl/mini.tcl:2131 -msgid " LENGTH " -msgstr "  長度  " +#: tcl/ngcgui.tcl:3001 +msgid "on current preamble" +msgstr "" -#: tcl/mini.tcl:2132 -msgid " DIAMETER " -msgstr "  直徑  " +#: tcl/ngcgui.tcl:3004 +msgid " Escape Return to Preview page" +msgstr "" -#: tcl/mini.tcl:2133 -msgid " COMMENT " -msgstr "  註解  " +#: tcl/ngcgui.tcl:3081 +msgid "Editing requires setting for environmental variable VISUAL" +msgstr "" -#: tcl/mini.tcl:2188 -msgid "Add Extra Tool" -msgstr "加 額外 刀具" +#: tcl/ngcgui.tcl:3082 +msgid "Trying gedit" +msgstr "" -#: tcl/mini.tcl:2189 -msgid "Remove Last Tool" -msgstr "排除 最後 刀具" +#: tcl/ngcgui.tcl:3095 +#, fuzzy +msgid "No file available for editing yet" +msgstr "非整數值對整數" -#: tcl/mini.tcl:2217 tcl/mini.tcl:2253 -#, tcl-format -msgid "Can't update the tool file while machine is in auto and %s." -msgstr "不能 更新 刀具文件, 机器在 自動和 %s." +#: tcl/ngcgui.tcl:3104 tcl/ngcgui.tcl:3113 +#, fuzzy +msgid "No file available for editing" +msgstr "非整數值對整數" -#: tcl/mini.tcl:2229 -msgid "This is not a good number." -msgstr "這不是 一個 好數字" +#: tcl/ngcgui.tcl:3130 +#, fuzzy +msgid "Status items" +msgstr "狀況" -#: tcl/mini.tcl:2293 -msgid "" -"COORDINATE SYSTEM SETUP \n" -"\n" -" Click value to edit with keyboard. Press enter to return to keyboard " -"control of machine. \n" -" " +#: tcl/ngcgui.tcl:3143 +msgid "All-page opt items" msgstr "" -"坐標 系統 設置 \n" -"\n" -"點擊 價值 使用鍵盤 來編輯, 按 回車鍵 返回 到鍵盤 控制 機器" -#: tcl/mini.tcl:2320 tcl/scripts/Set_Coordinates.tcl:80 -msgid "Axis " -msgstr "軸 " +#: tcl/ngcgui.tcl:3149 +msgid "any-items" +msgstr "" -#: tcl/mini.tcl:2321 -msgid "Value " -msgstr "數值 " +#: tcl/ngcgui.tcl:3182 +#, fuzzy +msgid "Set defaults" +msgstr "AXIS 預 置 值" -#: tcl/mini.tcl:2326 tcl/scripts/Set_Coordinates.tcl:91 -msgid "Teach" -msgstr "傳授" +#: tcl/ngcgui.tcl:3257 +msgid "not writable" +msgstr "" -#: tcl/mini.tcl:2334 -msgid "Write And Load File " -msgstr "寫入 和 加載文件 " +#: tcl/ngcgui.tcl:3396 tcl/ngcgui.tcl:3577 +#, fuzzy +msgid "new" +msgstr "新" -#: tcl/mini.tcl:2336 -msgid "Offset By Radius" -msgstr "徑向 偏移量" +#: tcl/ngcgui.tcl:3422 +msgid "Open a new Subfile" +msgstr "" -#: tcl/mini.tcl:2337 -msgid "Offset By Length" -msgstr "長度 偏移量" +#: tcl/ngcgui.tcl:3568 +msgid "remove" +msgstr "" -#: tcl/mini.tcl:2342 -msgid "Subtract" -msgstr "減去" +#: tcl/ngcgui.tcl:3590 tcl/ngcgui.tcl:3596 +msgid "move" +msgstr "" -#: tcl/mini.tcl:2344 -msgid "Add" -msgstr "添加" +#: tcl/ngcgui.tcl:3704 src/emc/usr_intf/pncconf/pncconf.py:7374 +#: src/emc/usr_intf/pncconf/pncconf.py:7485 +#: src/emc/usr_intf/pncconf/pncconf.py:7650 +msgid "Custom" +msgstr "自訂" -#: tcl/mini.tcl:2366 -msgid "Zero All G54" -msgstr "置零 于 所有G54" +#: tcl/ngcgui.tcl:3730 +msgid "Problem creating page" +msgstr "" -#: tcl/mini.tcl:2367 -msgid "Zero All G55" -msgstr "置零 于 所有G55" +#: tcl/ngcgui.tcl:3737 +msgid "entrykeybindings not available" +msgstr "" -#: tcl/mini.tcl:2368 -msgid "Zero All G56" -msgstr "置零 于 所有G56" +#: tcl/ngcgui.tcl:3781 +msgid "Found multiple matches for" +msgstr "" -#: tcl/mini.tcl:2369 -msgid "Zero All G57" -msgstr "置零 于 所有G57" +#: tcl/ngcgui.tcl:3782 +msgid "using path" +msgstr "" -#: tcl/mini.tcl:2370 -msgid "Zero All G58" -msgstr "置零 于 所有G58" +#: tcl/ngcgui.tcl:3790 src/emc/usr_intf/axis/scripts/axis.py:2440 +#: src/emc/usr_intf/axis/scripts/axis.py:2453 +msgid "Warning" +msgstr "警告" -#: tcl/mini.tcl:2371 -msgid "Zero All G59" -msgstr "置零 于 所有G59" +#: tcl/ngcgui.tcl:3791 +msgid "File absolute path specifier conflicts with searchpath result" +msgstr "" -#: tcl/mini.tcl:2372 -msgid "Zero All G59.1" -msgstr "置零 于 所有G59.1" +#: tcl/ngcgui.tcl:3792 +#, fuzzy +msgid "Absolute Specifier" +msgstr "絕對反饋" -#: tcl/mini.tcl:2373 -msgid "Zero All G59.2" -msgstr "置零 于 所有G5" +#: tcl/ngcgui.tcl:3793 +msgid "Using Search Result" +msgstr "" -#: tcl/mini.tcl:2374 -msgid "Zero All G59.3" -msgstr "置零 于 所有G59.3" +#: tcl/ngcgui.tcl:3798 +msgid "File not in Search Path" +msgstr "" -#: tcl/mini.tcl:2375 -msgid "Zero All ????" -msgstr "置零 于 所有 ????" +#: tcl/ngcgui.tcl:3800 +msgid "Must be in search path" +msgstr "" -#: tcl/mini.tcl:2493 -msgid "Modified..." -msgstr "修改..." +#: tcl/ngcgui.tcl:3802 +msgid "(File found -- not in search path)" +msgstr "" -#: tcl/mini.tcl:2538 -msgid "Save and Load" -msgstr "保存 和 加載" +#: tcl/ngcgui.tcl:3804 +msgid "Current directory" +msgstr "" -#: tcl/mini.tcl:2540 -msgid "Undo" -msgstr "復原" +#: tcl/ngcgui.tcl:3805 +msgid "Search path" +msgstr "" -#: tcl/mini.tcl:2541 -msgid "Redo" -msgstr "重做" +#: tcl/ngcgui.tcl:3815 +msgid "Check setting for" +msgstr "" -#: tcl/mini.tcl:2546 -msgid "Delete" -msgstr "刪除" +#: tcl/ngcgui.tcl:3816 +#, fuzzy +msgid "in ini file" +msgstr "(無文件)" -#: tcl/mini.tcl:2551 -msgid "Replace..." -msgstr "替代..." +#: tcl/ngcgui.tcl:3817 +msgid "(Restart required after fixing ini file)" +msgstr "" -#: tcl/mini.tcl:2664 -msgid "Next Number: " -msgstr "下一個 數字:" +#: tcl/ngcgui.tcl:3832 +#, fuzzy +msgid "Try to Continue" +msgstr "繼續" -#: tcl/mini.tcl:2765 -msgid "Basic Help" -msgstr "基本 的求助" +#: tcl/ngcgui.tcl:3837 +#, fuzzy +msgid "Ngcgui Configuration File Not Found" +msgstr "打開配置文件:" -#: tcl/mini.tcl:2765 -msgid "" -"This is a simple ASCII editor like many others.\n" -"\n" -"Ctrl+O Open\n" -"Ctrl+S Save\n" -"Ctrl+Z Undo\n" -"Ctrl+Y Redo\n" -"Ctrl+X Cut\n" -"Ctrl+C Copy\n" -"Ctrl+V Paste\n" -"Del Delete\n" -"Ctrl+A Select All\n" -"\n" -"Ctrl+F Find\n" -"Ctrl+R Replace " +#: tcl/ngcgui.tcl:3917 +msgid "Missing Tcl Package Img" msgstr "" -#: tcl/mini.tcl:2785 -msgid "" -"tknotepad by Joseph Acosta. \n" -"\n" -" Modified for EMC by: Paul Corner " +#: tcl/ngcgui.tcl:3918 +msgid "Please install Img" msgstr "" -#: tcl/mini.tcl:2793 -msgid "" -"The contents of this file may have changed, do you wish to to save your " -"changes?" +#: tcl/ngcgui.tcl:4122 +#, fuzzy +msgid "ini file" +msgstr "(無文件)" + +#: tcl/ngcgui.tcl:4131 +msgid "not found" msgstr "" -#: tcl/mini.tcl:2794 -msgid "New Confirm?" -msgstr "新 確認" +#: tcl/ngcgui_ttt.tcl:67 +msgid "found truetype-tracer v4 -OK" +msgstr "" -#: tcl/mini.tcl:2928 -msgid "Print Setup" -msgstr "列印 設定" +#: tcl/ngcgui_ttt.tcl:70 +msgid "Note truetype-tracer v4 is required" +msgstr "" -#: tcl/mini.tcl:2932 -msgid "Print Command: " -msgstr "打印 命令: " +#: tcl/ngcgui_ttt.tcl:71 +msgid "Note: truetype-tracer v4 is required" +msgstr "" -#: tcl/mini.tcl:3095 -msgid "Find what:" -msgstr "查找 目標:" +#: tcl/ngcgui_ttt.tcl:81 +msgid "ngcgui_app.tcl must be loaded before" +msgstr "" -#: tcl/mini.tcl:3101 -msgid "Replace with:" +#: tcl/ngcgui_ttt.tcl:89 +msgid "Create a subroutine file from truetype-tracer (V4 reqd)" +msgstr "" + +#: tcl/ngcgui_ttt.tcl:102 tcl/ngcgui_ttt.tcl:115 +#, fuzzy +msgid "problem with" msgstr "替換:" -#: tcl/mini.tcl:3109 -msgid "Find Next" -msgstr "找 下一個" +#: tcl/ngcgui_ttt.tcl:106 +msgid "No entry for" +msgstr "" -#: tcl/mini.tcl:3112 -msgid "Replace" -msgstr "替換" +#: tcl/ngcgui_ttt.tcl:109 +msgid "wrong version of truetype-tracer" +msgstr "" -#: tcl/mini.tcl:3120 -msgid "Up" -msgstr "向上" +#: tcl/ngcgui_ttt.tcl:125 +msgid "not writable, using" +msgstr "" -#: tcl/mini.tcl:3121 -msgid "Down" -msgstr "向下" +#: tcl/ngcgui_ttt.tcl:125 +msgid "and setting expandsub" +msgstr "" -#: tcl/mini.tcl:3124 -msgid "Match case" -msgstr "匹配 大小寫" +#: tcl/ngcgui_ttt.tcl:161 +msgid "Text" +msgstr "" -#: tcl/mini.tcl:3569 -msgid "rot-x" -msgstr "轉-x" +#: tcl/ngcgui_ttt.tcl:171 +#, fuzzy +msgid "Linescale" +msgstr "比例" -#: tcl/mini.tcl:3579 -msgid "rot-y" -msgstr "轉-y" +#: tcl/ngcgui_ttt.tcl:177 src/emc/usr_intf/gmoccapy/gmoccapy.glade:3583 +msgid "none" +msgstr "" -#: tcl/mini.tcl:3589 -msgid "rot-z" -msgstr "轉-z" +#: tcl/ngcgui_ttt.tcl:192 +msgid "Subdiv" +msgstr "" -#: tcl/mini.tcl:3599 -msgid "zoom" -msgstr "縮放" +#: tcl/ngcgui_ttt.tcl:199 +#, fuzzy +msgid "default" +msgstr "AXIS 預 置 值" -#: tcl/mini.tcl:3655 -msgid "TEST" -msgstr "試驗" +#: tcl/ngcgui_ttt.tcl:239 +#, fuzzy +msgid "Mode" +msgstr "運行模式" -#: tcl/mini.tcl:3699 -msgid "Hide Setup" -msgstr "隱蔽 設定" +#: tcl/ngcgui_ttt.tcl:247 +#, fuzzy +msgid "normal" +msgstr "正常" -#: tcl/mini.tcl:3703 -msgid "Show Setup" -msgstr "顯示 設定" +#: tcl/ngcgui_ttt.tcl:248 +msgid "date" +msgstr "" -#: tcl/show_errors.tcl:41 -#, fuzzy -msgid "LinuxCNC Errors" -msgstr "EMC2 故障" +#: tcl/ngcgui_ttt.tcl:249 +msgid "fontname" +msgstr "" -#: tcl/show_errors.tcl:44 +#: tcl/ngcgui_ttt.tcl:262 #, fuzzy -msgid "" -"LinuxCNC terminated with an error. When reporting problems, please include " -"all the information below in your message." -msgstr "EMC2 因故障 結束. 如要 報告問題, 請包括下面 的所有信息 在您的 消息" +msgid "Switches" +msgstr "英寸" -#: tcl/show_errors.tcl:69 tcl/scripts/Set_Coordinates.tcl:103 -msgid "Close" -msgstr "結束" +#: tcl/ngcgui_ttt.tcl:270 +msgid "Unicode" +msgstr "" -#: tcl/tklinuxcnc.tcl:154 tcl/tklinuxcnc.tcl:181 -msgid "Set Run Mark" -msgstr "設置 運行 標記" +#: tcl/ngcgui_ttt.tcl:275 +msgid "Allow Rotation" +msgstr "" -#: tcl/tklinuxcnc.tcl:156 -#, tcl-format -msgid "Set run mark at line %s?" -msgstr "設置 運行 標記 在行號 %s?" +#: tcl/ngcgui_ttt.tcl:295 +msgid "Make ngcgui-compatible subfile and new tab page" +msgstr "" -#: tcl/tklinuxcnc.tcl:176 tcl/tklinuxcnc.tcl:204 -msgid "untitled" -msgstr "未命名" +#: tcl/ngcgui_ttt.tcl:353 +msgid "Null text" +msgstr "" -#: tcl/tklinuxcnc.tcl:212 -msgid "Load Parameter File" -msgstr "載入 參數 文件" +#: tcl/ngcgui_ttt.tcl:384 +msgid "Using truetype-tracer default font" +msgstr "" -#: tcl/tklinuxcnc.tcl:261 +#: tcl/ngcgui_ttt.tcl:388 #, fuzzy -msgid "LinuxCNC Diagnostics" -msgstr "EMC 排錯" +msgid "no such file" +msgstr "(無文件)" -#: tcl/tklinuxcnc.tcl:263 -msgid "Task" -msgstr "任務" +#: tcl/ngcgui_ttt.tcl:393 +#, fuzzy +msgid "file not readable" +msgstr "文件未打開" -#: tcl/tklinuxcnc.tcl:265 tcl/tklinuxcnc.tcl:288 tcl/tklinuxcnc.tcl:311 -msgid "Heartbeat:" -msgstr "心搏:" +#: tcl/ngcgui_ttt.tcl:507 +msgid "Creating new tab page" +msgstr "" -#: tcl/tklinuxcnc.tcl:268 tcl/tklinuxcnc.tcl:291 tcl/tklinuxcnc.tcl:314 -msgid "Command:" -msgstr "指令:" +#: tcl/ngcgui_app.tcl:25 +msgid "" +"requires command inifindall\n" +"from axis.py (LinuxCNC 2.5) or" +msgstr "" -#: tcl/tklinuxcnc.tcl:271 tcl/tklinuxcnc.tcl:294 tcl/tklinuxcnc.tcl:317 -msgid "Command #:" -msgstr "指令 #:" +#: tcl/ngcgui_app.tcl:55 +#, fuzzy +msgid "Substituting" +msgstr "設定" -#: tcl/tklinuxcnc.tcl:274 tcl/tklinuxcnc.tcl:297 tcl/tklinuxcnc.tcl:320 -msgid "Status:" -msgstr "狀況" +#: tcl/ngcgui_app.tcl:55 +msgid "for" +msgstr "" -#: tcl/tklinuxcnc.tcl:286 -msgid "Io" -msgstr "輸入輸出" +#: tcl/ngcgui_app.tcl:59 +#, fuzzy +msgid "not readable" +msgstr "文件未打開" -#: tcl/tklinuxcnc.tcl:309 -msgid "Motion" -msgstr "動作" +#: tcl/ngcgui_app.tcl:65 tcl/ngcgui_app.tcl:68 +msgid "Unexpected: multiple startups for ngcgui" +msgstr "" -#: tcl/tklinuxcnc.tcl:350 +#: tcl/ngcgui_app.tcl:66 #, fuzzy -msgid "About TkLinuxCNC" -msgstr "關于 TkEditor" +msgid "LinuxCNC" +msgstr "EMC 排錯" -#: tcl/tklinuxcnc.tcl:351 -msgid "" -"TkLinuxcnc\n" -"\n" -"Tcl/Tk GUI for LinuxCNC\n" -"\n" -"GPL Version 2 (2012)" +#: tcl/ngcgui_app.tcl:67 +msgid "for linuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" msgstr "" -#: tcl/tklinuxcnc.tcl:399 -msgid "Set Tool Offset" -msgstr "設置 刀具 偏移量" +#: tcl/ngcgui_app.tcl:86 +#, fuzzy +msgid "LinuxCNC version" +msgstr "EMC2 故障" -#: tcl/tklinuxcnc.tcl:404 tcl/tklinuxcnc.tcl:905 -msgid "Tool:" -msgstr "刀具:" +#: tcl/ngcgui_app.tcl:87 +msgid "for LinuxCNC 2.5.xxx, Do not include tkapp.py in the ini file" +msgstr "" -#: tcl/tklinuxcnc.tcl:722 -msgid "Edit..." -msgstr "編輯..." +#: tcl/tooledit.tcl:65 +msgid "Problem reading ~/.tooleditrc" +msgstr "" -#: tcl/tklinuxcnc.tcl:727 -msgid "Tool Table Editor..." -msgstr "刀具表編輯..." +#: tcl/tooledit.tcl:82 +#, tcl-format +msgid "Note: Ignoring duplicate column name: %s" +msgstr "" -#: tcl/tklinuxcnc.tcl:730 src/emc/usr_intf/touchy/touchy.glade:1383 -msgid "Reload Tool Table" -msgstr "重新 載入 刀具表" +#: tcl/tooledit.tcl:93 +#, fuzzy, tcl-format +msgid "Unknown column: %s" +msgstr "未知的刀具 %d" -#: tcl/tklinuxcnc.tcl:740 -msgid "Offsets and Variables..." -msgstr "偏移 和 變量" +#: tcl/tooledit.tcl:210 tcl/tooledit.tcl:213 tcl/tooledit.tcl:598 +#: tcl/tooledit.tcl:599 tcl/tooledit.tcl:1032 +msgid "NEW" +msgstr "" -#: tcl/tklinuxcnc.tcl:741 -msgid "Diagnostics..." -msgstr "診斷..." +#: tcl/tooledit.tcl:232 +#, tcl-format +msgid "%s must be a number" +msgstr "" -#: tcl/tklinuxcnc.tcl:742 -msgid "Backplot..." -msgstr "路徑 模擬..." +#: tcl/tooledit.tcl:241 +#, fuzzy, tcl-format +msgid "filename: <%s> not readable" +msgstr "文件未打開" -#: tcl/tklinuxcnc.tcl:748 -msgid "Testing..." -msgstr "測試..." +#: tcl/tooledit.tcl:245 +#, fuzzy, tcl-format +msgid "filename: <%s> not writable" +msgstr "文件未打開" -#: tcl/tklinuxcnc.tcl:749 -msgid "Debug..." -msgstr "排錯..." +#: tcl/tooledit.tcl:250 +#, tcl-format +msgid "directory: <%s> not writable" +msgstr "" -#: tcl/tklinuxcnc.tcl:750 -msgid "Font..." -msgstr "字體..." +#: tcl/tooledit.tcl:294 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, value <%s> is not a number" +msgstr "" -#: tcl/tklinuxcnc.tcl:754 src/emc/usr_intf/axis/scripts/image-to-gcode.py:665 -msgid "Units" -msgstr "單位" +#: tcl/tooledit.tcl:300 +#, tcl-format +msgid "Skipping linenumber %d for tag %s, expected integer not <%s>" +msgstr "" -#: tcl/tklinuxcnc.tcl:755 -msgid "auto" -msgstr "自動" +#: tcl/tooledit.tcl:316 +#, tcl-format +msgid "At linenumber %d, Unknown tag <%s>" +msgstr "" -#: tcl/tklinuxcnc.tcl:756 src/emc/usr_intf/pncconf/pncconf.py:8512 -msgid "inches" -msgstr "英寸" +#: tcl/tooledit.tcl:399 +#, tcl-format +msgid "%s: Column sorting not available with tcl_version==%s" +msgstr "" -#: tcl/tklinuxcnc.tcl:757 src/emc/usr_intf/axis/scripts/axis.py:1556 -#: src/emc/usr_intf/axis/scripts/axis.py:1726 -#: src/emc/usr_intf/touchy/touchy.glade:3301 -#: src/emc/usr_intf/stepconf/stepconf.py:1685 -#: src/emc/usr_intf/stepconf/stepconf.py:2221 -#: src/emc/usr_intf/stepconf/stepconf.glade:4357 -#: src/emc/usr_intf/pncconf/pncconf.py:8508 -#: src/emc/usr_intf/pncconf/pncconf.glade:2229 -#: src/emc/usr_intf/pncconf/pncconf.glade:2394 -#: src/emc/usr_intf/pncconf/pncconf.glade:57616 -#: src/emc/usr_intf/pncconf/pncconf.glade:57688 -#: src/emc/usr_intf/pncconf/pncconf.glade:60646 -#: src/emc/usr_intf/pncconf/pncconf.glade:61739 -#: src/emc/usr_intf/pncconf/pncconf.glade:62832 -#: src/emc/usr_intf/pncconf/pncconf.glade:63925 -#: src/emc/usr_intf/pncconf/pncconf.glade:65091 -msgid "mm" -msgstr "毫米" +#: tcl/tooledit.tcl:408 +#, fuzzy +msgid "tool" +msgstr "沒有刀具" -#: tcl/tklinuxcnc.tcl:758 -msgid "cm" -msgstr "厘米" +#: tcl/tooledit.tcl:409 +msgid "poc" +msgstr "" -#: tcl/tklinuxcnc.tcl:762 -msgid "Utilities" -msgstr "實用程式 選單" +#: tcl/tooledit.tcl:410 +#, fuzzy +msgid "diam" +msgstr " 直徑" -#: tcl/tklinuxcnc.tcl:763 -msgid "Hal Scope" -msgstr "HAL 顯示器" +#: tcl/tooledit.tcl:411 +msgid "front" +msgstr "" -#: tcl/tklinuxcnc.tcl:785 -msgid "HAL Show" -msgstr "HAL 顯示" +#: tcl/tooledit.tcl:412 +msgid "back" +msgstr "" -#: tcl/tklinuxcnc.tcl:786 -msgid "HAL Config" -msgstr "HAL 設定" +#: tcl/tooledit.tcl:413 +msgid "orien" +msgstr "" -#: tcl/tklinuxcnc.tcl:792 -msgid "Balloon help" -msgstr "弹出式 求助" +#: tcl/tooledit.tcl:414 +#, fuzzy +msgid "comment" +msgstr "增量" -#: tcl/tklinuxcnc.tcl:815 -msgid "Estop on" -msgstr "急停 開" +#: tcl/tooledit.tcl:444 +#, fuzzy +msgid "Del" +msgstr "刪除" -#: tcl/tklinuxcnc.tcl:816 -msgid "Estop off" -msgstr "急停 關" +#: tcl/tooledit.tcl:473 +#, fuzzy +msgid "ReLoadTable" +msgstr "重新 載入 刀具表" -#: tcl/tklinuxcnc.tcl:818 -msgid "Machine on" -msgstr "開机" +#: tcl/tooledit.tcl:478 +#, fuzzy +msgid "SaveFile" +msgstr "保存到文件" -#: tcl/tklinuxcnc.tcl:819 -msgid "Machine off" -msgstr "關机" +#: tcl/tooledit.tcl:483 +msgid "ReRead" +msgstr "" -#: tcl/tklinuxcnc.tcl:826 src/emc/usr_intf/touchy/touchy.glade:1561 -msgid "Manual" -msgstr "說明書" +#: tcl/tooledit.tcl:485 +#, fuzzy +msgid "AddTool" +msgstr "刀具" -#: tcl/tklinuxcnc.tcl:835 -msgid "Mist on" -msgstr "噴霧 開" +#: tcl/tooledit.tcl:535 +#, tcl-format +msgid "Opened %s" +msgstr "" -#: tcl/tklinuxcnc.tcl:836 -msgid "Mist off" -msgstr "噴霧 關" +#: tcl/tooledit.tcl:536 +#, fuzzy, tcl-format +msgid "Created %s" +msgstr "創建 或 修改" -#: tcl/tklinuxcnc.tcl:843 -msgid "Flood on" -msgstr "淹浸 開" +#: tcl/tooledit.tcl:537 +msgid "File updated" +msgstr "" -#: tcl/tklinuxcnc.tcl:844 -msgid "Flood off" -msgstr "淹浸 關" +#: tcl/tooledit.tcl:538 +msgid "File modified" +msgstr "" -#: tcl/tklinuxcnc.tcl:851 -msgid "Lube on" -msgstr "潤滑 開" +#: tcl/tooledit.tcl:539 +msgid "File check errors" +msgstr "" -#: tcl/tklinuxcnc.tcl:852 -msgid "Lube off" -msgstr "潤滑 關" +#: tcl/tooledit.tcl:540 +msgid "File checked" +msgstr "" -#: tcl/tklinuxcnc.tcl:869 -msgid "Spindle forward" -msgstr "主軸 前轉" +#: tcl/tooledit.tcl:541 +msgid "File items deleted" +msgstr "" -#: tcl/tklinuxcnc.tcl:870 -msgid "Spindle reverse" -msgstr "主軸 反轉" +#: tcl/tooledit.tcl:542 +msgid "Bogus lines in file ignored" +msgstr "" -#: tcl/tklinuxcnc.tcl:885 -msgid "Brake on" -msgstr "剎車 開" +#: tcl/tooledit.tcl:543 +msgid "File errors -- Check Entries" +msgstr "" -#: tcl/tklinuxcnc.tcl:886 -msgid "Brake off" -msgstr "剎車 關" +#: tcl/tooledit.tcl:544 +msgid "Warning: File changed by another process" +msgstr "" -#: tcl/tklinuxcnc.tcl:907 -msgid "Offset:" -msgstr "位移:" +#: tcl/tooledit.tcl:545 +msgid "Warning: File deleted by another process" +msgstr "" + +#: tcl/tooledit.tcl:546 +#, fuzzy +msgid "Added Tool" +msgstr "加 額外 刀具" + +#: tcl/tooledit.tcl:550 +#, tcl-format +msgid "Sorted by %s, increasing" +msgstr "" -#: tcl/tklinuxcnc.tcl:913 -msgid "Work Offsets:" -msgstr "工件 位移:" +#: tcl/tooledit.tcl:551 +#, tcl-format +msgid "Sorted by %s, decreasing" +msgstr "" -#: tcl/tklinuxcnc.tcl:1233 -msgid "relative" -msgstr "相對的" +#: tcl/tooledit.tcl:593 +msgid "Added" +msgstr "" -#: tcl/tklinuxcnc.tcl:1234 -msgid "machine" -msgstr "機床" +#: tcl/tooledit.tcl:802 +#, tcl-format +msgid "Tool %s, Column %s, parameter %s is not a number" +msgstr "" -#: tcl/tklinuxcnc.tcl:1236 -msgid "actual" -msgstr "現實" +#: tcl/tooledit.tcl:811 +#, tcl-format +msgid "Tool %s, parameter %s must be nonnegative integer" +msgstr "" -#: tcl/tklinuxcnc.tcl:1237 -msgid "commanded" -msgstr "指令" +#: tcl/tooledit.tcl:819 +#, tcl-format +msgid "Tool %s: must be 0..9 integer" +msgstr "" -#: tcl/tklinuxcnc.tcl:1239 -msgid "joint" +#: tcl/tooledit.tcl:826 +#, tcl-format +msgid "Tool %s: <%s> must be between -360 and 360" msgstr "" -#: tcl/tklinuxcnc.tcl:1240 -msgid "world" +#: tcl/tooledit.tcl:842 +#, tcl-format +msgid "Pocket <%s> specified multiple times" msgstr "" -#: tcl/tklinuxcnc.tcl:1333 -msgid "Axis Offset" -msgstr "軸向的 偏置" +#: tcl/tooledit.tcl:857 +#, tcl-format +msgid "Tool <%s> specified multiple times" +msgstr "" -#: tcl/tklinuxcnc.tcl:1335 -msgid "Set axis value:" -msgstr "設定軸 偏移量:" +#: tcl/tooledit.tcl:902 +#, fuzzy +msgid "File Modified" +msgstr "修改..." -#: tcl/tklinuxcnc.tcl:1429 -msgid "Set Feed Override" -msgstr "設定 超越調整" +#: tcl/tooledit.tcl:903 +msgid "Save Modifications to File?" +msgstr "" -#: tcl/tklinuxcnc.tcl:1435 -msgid "Set feed override:" -msgstr "設定 超速調整:" +#: tcl/tooledit.tcl:930 +#, tcl-format +msgid "" +"Only these columns are currently used:\n" +"\n" +" %s" +msgstr "" -#: tcl/tklinuxcnc.tcl:1460 -msgid "Set Spindle Override" -msgstr "設定 主軸超速" +#: tcl/tooledit.tcl:931 +msgid "Limit display to these columns by specifying" +msgstr "" -#: tcl/tklinuxcnc.tcl:1466 -msgid "Set spindle speed override:" -msgstr "設定 主軸 速度超速:" +#: tcl/tooledit.tcl:933 +#, fuzzy +msgid "Format for ini file is" +msgstr "不能打開 %s" -#: tcl/tklinuxcnc.tcl:1521 -msgid "Linear Jog Speed" -msgstr "直線 慢步 速度" +#: tcl/tooledit.tcl:935 +msgid "For standalone use, invoke as" +msgstr "" -#: tcl/tklinuxcnc.tcl:1552 -msgid "Angular Jog Speed (deg)/min:" -msgstr "角線 慢步 速度 度/分:" +#: tcl/tooledit.tcl:936 +msgid "tool_table_filename" +msgstr "" -#: tcl/tklinuxcnc.tcl:1596 -msgid "Spindle speed Override:" -msgstr "主軸速度 超速:" +#: tcl/tooledit.tcl:956 +#, fuzzy, tcl-format +msgid "Created by %s" +msgstr "創建 或 修改" -#: tcl/tklinuxcnc.tcl:1642 -msgid "Program: " -msgstr "程式: " +#: tcl/tooledit.tcl:957 +msgid "Saved geometry (updated on program termination)" +msgstr "" -#: tcl/tklinuxcnc.tcl:1647 -msgid " - Status: " -msgstr " - 狀況: " +#: tcl/tooledit.tcl:980 +#, tcl-format +msgid "" +"%s: Axis inifile specifies multiple inifile items for: [EMCIO]TOOL_TABLE" +msgstr "" -#: tcl/tklinuxcnc.tcl:1663 -msgid "Optional Stop" -msgstr "可選 的 停止" +#: tcl/tooledit.tcl:981 +#, tcl-format +msgid "%s: Using: %s" +msgstr "" -#: tcl/tklinuxcnc.tcl:2010 -msgid "Error" -msgstr "故障" +#: tcl/tooledit.tcl:990 +#, tcl-format +msgid "" +"%s: Warning: Axis is running but the tool table file <%s> \n" +"differs from the standalone startup file <%s>" +msgstr "" -#: tcl/tklinuxcnc.tcl:2070 tcl/ngcgui_ttt.tcl:46 -msgid "Set Font" -msgstr "字體 設為" +#: tcl/tooledit.tcl:1004 +msgid "Must be On and Idle to reload tool table" +msgstr "" -#: tcl/tklinuxcnc.tcl:2079 tcl/ngcgui_ttt.tcl:283 -msgid "Font" -msgstr "字體" +#: tcl/tooledit.tcl:1093 +msgid "Usage" +msgstr "" -#: tcl/tklinuxcnc.tcl:2086 -msgid "Size" -msgstr "大小" +#: tcl/tooledit.tcl:1094 tcl/tooledit.tcl:1095 +#, fuzzy +msgid "filename" +msgstr "文件名:" -#: tcl/tklinuxcnc.tcl:2093 -msgid "Style" -msgstr "式樣" +#: tcl/tooledit.tcl:1096 +#, tcl-format +msgid "Allowed column_ names are: %s" +msgstr "" -#: tcl/tklinuxcnc.tcl:2229 share/axis/tcl/axis.tcl:1916 -msgid "ESTOP" -msgstr "急停" +#: tcl/tooledit.tcl:1106 +#, fuzzy +msgid "Missing filename" +msgstr " 參數(_m) " -#: tcl/tklinuxcnc.tcl:2231 tcl/ngcgui.tcl:2840 share/axis/tcl/axis.tcl:1918 -msgid "ON" -msgstr "開" +#: src/emc/usr_intf/axis/scripts/axis.py:183 +msgid "Emergency stop" +msgstr "緊急 停止" -#: tcl/tklinuxcnc.tcl:2290 -msgid "LUBE ON" -msgstr "潤滑 開" +#: src/emc/usr_intf/axis/scripts/axis.py:184 +msgid "Turn machine on" +msgstr "開動 機器" -#: tcl/tklinuxcnc.tcl:2292 -msgid "LUBE OFF" -msgstr "潤滑 關" +#: src/emc/usr_intf/axis/scripts/axis.py:186 +msgid "Activate first axis" +msgstr "激活 第一軸" -#: tcl/tklinuxcnc.tcl:2294 -msgid "LUBE ?" -msgstr "潤滑 ?" +#: src/emc/usr_intf/axis/scripts/axis.py:187 +msgid "Activate second axis" +msgstr "激活 第二軸" -#: tcl/scripts/Set_Coordinates.tcl:23 -#, fuzzy -msgid "LinuxCNC Set Coordinate" -msgstr "EMC 坐摽 設為" +#: src/emc/usr_intf/axis/scripts/axis.py:188 +msgid "Activate third axis" +msgstr "激活 第三軸" -#: tcl/scripts/Set_Coordinates.tcl:26 -msgid "Coordinate System Control Window" -msgstr "坐標 系統 控制 窗口" +#: src/emc/usr_intf/axis/scripts/axis.py:189 +msgid "Activate fourth axis" +msgstr "激活 第四軸" -#: tcl/scripts/Set_Coordinates.tcl:81 -msgid "Var # " -msgstr "變量 # " +#: src/emc/usr_intf/axis/scripts/axis.py:190 +msgid "Activate fifth through ninth axis" +msgstr "激活 第五軸 到 第九軸" -#: tcl/scripts/Set_Coordinates.tcl:82 -msgid "Offset Value " -msgstr "偏移 值 " +#: src/emc/usr_intf/axis/scripts/axis.py:191 +msgid "Set Feed Override from 0% to 100%" +msgstr "進給 超速設為從 0% 至 100%" -#: tcl/scripts/Set_Coordinates.tcl:83 -msgid "What to Teach" -msgstr "教 什麼 " +#: src/emc/usr_intf/axis/scripts/axis.py:192 +msgid ", and ." +msgstr ", 和 ." -#: tcl/scripts/Set_Coordinates.tcl:101 -msgid "Set Old" -msgstr "設定 舊的" +#: src/emc/usr_intf/axis/scripts/axis.py:192 +msgid "Select jog speed" +msgstr "選擇 慢步 速度" -#: tcl/scripts/Set_Coordinates.tcl:102 -msgid "Set Zero" -msgstr "設定 零" +#: src/emc/usr_intf/axis/scripts/axis.py:193 +msgid "< and >" +msgstr "< 和 >" -#: tcl/scripts/Set_Coordinates.tcl:104 -msgid "Write" -msgstr "寫" +#: src/emc/usr_intf/axis/scripts/axis.py:193 +msgid "Select angular jog speed" +msgstr "選擇 角 慢步 速度" -#: tcl/ngcgui.tcl:467 -msgid "Need non-null file name" +#: src/emc/usr_intf/axis/scripts/axis.py:194 +msgid "I, Shift-I" msgstr "" -#: tcl/ngcgui.tcl:543 -msgid "Disallowed use of ngcgui generated file as Subfile" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:194 share/axis/tcl/axis.tcl:2481 +msgid "Select jog increment" +msgstr "選擇 慢步 增量" -#: tcl/ngcgui.tcl:549 -msgid "" -"marked (not_a_subfile)\n" -"Not intended for use as a subfile" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:195 +msgid "Continuous jog" +msgstr "連續 慢步" -#: tcl/ngcgui.tcl:564 -msgid "Multiple subroutines in file not allowed" +#: src/emc/usr_intf/axis/scripts/axis.py:196 +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Home" +msgstr "零點" + +#: src/emc/usr_intf/axis/scripts/axis.py:196 +msgid "Send active axis home" +msgstr "送 活躍軸 回零點" + +#: src/emc/usr_intf/axis/scripts/axis.py:197 +msgid "Ctrl-Home" msgstr "" -#: tcl/ngcgui.tcl:573 tcl/ngcgui.tcl:595 tcl/ngcgui.tcl:608 tcl/ngcgui.tcl:650 -#: tcl/ngcgui.tcl:755 -msgid "bogus" +#: src/emc/usr_intf/axis/scripts/axis.py:197 +msgid "Home all axes" +msgstr "所有軸 回零點" + +#: src/emc/usr_intf/axis/scripts/axis.py:198 +msgid "Shift-Home" msgstr "" -#: tcl/ngcgui.tcl:575 -#, fuzzy -msgid "sub label" -msgstr "標 籤" +#: src/emc/usr_intf/axis/scripts/axis.py:198 +msgid "Zero G54 offset for active axis" +msgstr "置零 G54 偏置 對於 活躍 的軸" -#: tcl/ngcgui.tcl:575 tcl/ngcgui.tcl:652 -#, fuzzy -msgid "does not match subroutine file name" -msgstr "太多的子程序層面" +#: src/emc/usr_intf/axis/scripts/axis.py:199 +msgid "End" +msgstr "終止" -#: tcl/ngcgui.tcl:590 tcl/ngcgui.tcl:591 -msgid "ignoring M2 after endsub" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:199 +msgid "Set G54 offset for active axis" +msgstr "設 G54 偏置 對於 活躍 的軸" -#: tcl/ngcgui.tcl:596 -msgid "file contains lines after subend" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:200 +msgid "Jog active axis" +msgstr "慢步 活躍的 軸" -#: tcl/ngcgui.tcl:609 -msgid "file contains lines before sub" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:203 +msgid "Left, Right" +msgstr "左,右" -#: tcl/ngcgui.tcl:652 -msgid "endsub label" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:203 +msgid "Jog first axis" +msgstr "慢步 第一軸" -#: tcl/ngcgui.tcl:757 -msgid "out of sequence positional parameter" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:204 +msgid "Up, Down" +msgstr "上,下" + +#: src/emc/usr_intf/axis/scripts/axis.py:204 +msgid "Jog second axis" +msgstr "慢步 第二軸" -#: tcl/ngcgui.tcl:757 -msgid "expected" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:205 +msgid "Pg Up, Pg Dn" +msgstr "頁向上, 頁向下" -#: tcl/ngcgui.tcl:817 -msgid "toomany" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:205 +msgid "Jog third axis" +msgstr "慢步 第三軸" -#: tcl/ngcgui.tcl:868 -msgid "no sub found in file" +#: src/emc/usr_intf/axis/scripts/axis.py:206 +msgid "Shift+above jogs" msgstr "" -#: tcl/ngcgui.tcl:871 -msgid "no endsub found in file" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:206 +msgid "Jog at traverse speed" +msgstr "慢步 橫過速度" -#: tcl/ngcgui.tcl:961 -#, fuzzy -msgid "Choose Files" -msgstr "刀具文件" +#: src/emc/usr_intf/axis/scripts/axis.py:207 +msgid "Jog fourth axis" +msgstr "慢步 第四軸" -#: tcl/ngcgui.tcl:1100 -#, fuzzy -msgid "Controls" -msgstr "MPG 慢步 操控" +#: src/emc/usr_intf/axis/scripts/axis.py:210 +msgid "Toggle between Drag and Rotate mode" +msgstr "切換 拖動 和 旋轉 模式" -#: tcl/ngcgui.tcl:1109 -msgid "Preamble" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:211 +msgid "Left Button" +msgstr "左 按鈕" -#: tcl/ngcgui.tcl:1122 -msgid "Subfile" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:211 +msgid "Pan, rotate or select line" +msgstr "平移,旋轉 或 行選擇" -#: tcl/ngcgui.tcl:1134 -msgid "Postamble" +#: src/emc/usr_intf/axis/scripts/axis.py:212 +msgid "Shift+Left Button" msgstr "" -#: tcl/ngcgui.tcl:1151 -msgid "Retain values on Subfile read" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:212 +msgid "Rotate or pan" +msgstr "旋轉 或 平移" -#: tcl/ngcgui.tcl:1159 -#, fuzzy -msgid "Expand subroutine" -msgstr "樹狀 擴張" +#: src/emc/usr_intf/axis/scripts/axis.py:213 +msgid "Right Button" +msgstr "右按鈕" -#: tcl/ngcgui.tcl:1168 tcl/ngcgui.tcl:2414 -#, fuzzy -msgid "Autosend" -msgstr "自動" +#: src/emc/usr_intf/axis/scripts/axis.py:213 +#: src/emc/usr_intf/axis/scripts/axis.py:215 +#: src/emc/usr_intf/axis/scripts/axis.py:216 +msgid "Zoom view" +msgstr "縮放 視圖" -#: tcl/ngcgui.tcl:1178 -#, fuzzy -msgid "Verbose ngcfile" -msgstr "rs274ngc 文件" +#: src/emc/usr_intf/axis/scripts/axis.py:214 +msgid "Wheel Button" +msgstr "滾輪 按鍵" -#: tcl/ngcgui.tcl:1188 tcl/ngcgui.tcl:2235 tcl/ngcgui.tcl:2259 -#: tcl/ngcgui.tcl:2289 -msgid "Create Feature" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:214 +msgid "Rotate view" +msgstr "旋轉 視圖" -#: tcl/ngcgui.tcl:1194 tcl/ngcgui.tcl:2919 -#, fuzzy -msgid "MakeFile" -msgstr "文件" +#: src/emc/usr_intf/axis/scripts/axis.py:215 +msgid "Rotate Wheel" +msgstr "旋轉 滾輪" -#: tcl/ngcgui.tcl:1195 tcl/ngcgui.tcl:2916 -msgid "Finalize" +#: src/emc/usr_intf/axis/scripts/axis.py:216 +msgid "Control+Left Button" msgstr "" -#: tcl/ngcgui.tcl:1212 -#, fuzzy -msgid "Reread" -msgstr "線清" +#: src/emc/usr_intf/axis/scripts/axis.py:219 +msgid "Manual control" +msgstr "手動 控制" -#: tcl/ngcgui.tcl:1231 -msgid "SendFileToAxis" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:220 +msgid "Code entry (MDI)" +msgstr "代碼輸入 (MDI)" -#: tcl/ngcgui.tcl:1274 -msgid "Unrecoverable problem" +#: src/emc/usr_intf/axis/scripts/axis.py:221 +msgid "Control-M" msgstr "" -#: tcl/ngcgui.tcl:1374 -msgid "Postamble file" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:221 +msgid "Clear MDI history" +msgstr "清除 MDI 歷史" -#: tcl/ngcgui.tcl:1424 -msgid "Subroutine file" +#: src/emc/usr_intf/axis/scripts/axis.py:222 +msgid "Control-H" msgstr "" -#: tcl/ngcgui.tcl:1482 -#, fuzzy -msgid "Positional Parameters" -msgstr " 參數(_m) " +#: src/emc/usr_intf/axis/scripts/axis.py:222 +msgid "Copy selected MDI history elements" +msgstr "複製 選定的 MDI 歷史 元件" -#: tcl/ngcgui.tcl:1587 -msgid "_Globals" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:223 +msgid "to clipboard" +msgstr "到 剪貼板" -#: tcl/ngcgui.tcl:1690 -msgid "No Subfile specified" +#: src/emc/usr_intf/axis/scripts/axis.py:224 +msgid "Control-Shift-H" msgstr "" -#: tcl/ngcgui.tcl:1692 -#, fuzzy -msgid "No parameters yet" -msgstr " 參數(_m) " +#: src/emc/usr_intf/axis/scripts/axis.py:224 +msgid "Paste clipboard to MDI history" +msgstr "剪貼板 貼入到 MDI 歷史" -#: tcl/ngcgui.tcl:1701 -msgid "Missing value for parm" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:225 share/axis/tcl/axis.tcl:1183 +#: src/emc/usr_intf/touchy/touchy.glade:508 +msgid "Override Limits" +msgstr "超速 極限" -#: tcl/ngcgui.tcl:1735 -#, fuzzy -msgid "Output file" -msgstr "輸出" +#: src/emc/usr_intf/axis/scripts/axis.py:227 +msgid "Open program" +msgstr "打開 程序" -#: tcl/ngcgui.tcl:1827 -msgid "Positional parameters for" +#: src/emc/usr_intf/axis/scripts/axis.py:228 +msgid "Control-R" msgstr "" -#: tcl/ngcgui.tcl:1835 -#, fuzzy -msgid "expanded file" -msgstr "文字 文件" - -#: tcl/ngcgui.tcl:1849 -#, fuzzy -msgid "call subroutine file" -msgstr "太多的子程序層面" - -#: tcl/ngcgui.tcl:1919 -msgid "Multiple Tabs with Features" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:228 +msgid "Reload program" +msgstr "重裝 程序" -#: tcl/ngcgui.tcl:1920 -msgid "Finalize all Tabs?" +#: src/emc/usr_intf/axis/scripts/axis.py:229 +msgid "Control-S" msgstr "" -#: tcl/ngcgui.tcl:1920 -msgid "Order" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:229 +msgid "Save g-code as" +msgstr "另存 G-代碼 為" -#: tcl/ngcgui.tcl:1922 -msgid "No, just this page" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:230 +msgid "Run program" +msgstr "程序 啟動" -#: tcl/ngcgui.tcl:1936 -msgid "Axis is not responding" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:231 +msgid "Step program" +msgstr "步進 程序" -#: tcl/ngcgui.tcl:1937 -#, fuzzy -msgid "Error: " -msgstr "故障" +#: src/emc/usr_intf/axis/scripts/axis.py:232 +msgid "Pause program" +msgstr "暂停 程序" -#: tcl/ngcgui.tcl:1939 -msgid "Autosend disabled, Ctrl-A toggles autosend" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:233 +msgid "Resume program" +msgstr "恢复 程序" -#: tcl/ngcgui.tcl:1941 -msgid "File saving enabled -- Finalize to save" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:234 +msgid "Stop running program, or" +msgstr "停止 正在 運行 的程序, 或" -#: tcl/ngcgui.tcl:1957 -msgid "Require .ngc suffix for filename" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:235 +msgid "stop loading program preview" +msgstr "停止 載入 程序 預覽" -#: tcl/ngcgui.tcl:1967 -msgid "Disallowed overwrite of" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:237 +msgid "Toggle mist" +msgstr "切換 噴霧" -#: tcl/ngcgui.tcl:1986 -msgid "FEATURE" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:238 +msgid "Toggle flood" +msgstr "切換 淹浸" -#: tcl/ngcgui.tcl:1993 -msgid "feature line added" +#: src/emc/usr_intf/axis/scripts/axis.py:239 +msgid "Spindle brake off" msgstr "" -#: tcl/ngcgui.tcl:2002 -msgid "line added" +#: src/emc/usr_intf/axis/scripts/axis.py:240 +msgid "Shift-B" msgstr "" -#: tcl/ngcgui.tcl:2002 -msgid "activated" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:240 +msgid "Spindle brake on" +msgstr "主軸 剎車 開" -#: tcl/ngcgui.tcl:2004 -msgid "restores" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:241 +msgid "Turn spindle clockwise" +msgstr "開動 主軸 順時針 方向" -#: tcl/ngcgui.tcl:2041 -msgid "NOTREACHED mode" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:242 +msgid "Turn spindle counterclockwise" +msgstr "開動 主軸 反時針 方向" -#: tcl/ngcgui.tcl:2236 -msgid "Enter parms for 1st feature" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:243 +msgid "Turn spindle more slowly" +msgstr "開動 主軸 速度 比較慢" -#: tcl/ngcgui.tcl:2243 -#, fuzzy -msgid "New Outfile" -msgstr "數控 文件" +#: src/emc/usr_intf/axis/scripts/axis.py:244 +msgid "Turn spindle more quickly" +msgstr "開動 主軸 速度 更快" -#: tcl/ngcgui.tcl:2245 -msgid "Ready to make New Outfile" +#: src/emc/usr_intf/axis/scripts/axis.py:246 +msgid "Control-K" msgstr "" -#: tcl/ngcgui.tcl:2262 tcl/ngcgui.tcl:2295 -msgid "Enter parms for feature " -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:246 +msgid "Clear live plot" +msgstr "清除 現場 繪圖" -#: tcl/ngcgui.tcl:2282 -#, fuzzy -msgid "feature" -msgstr "夾具" +#: src/emc/usr_intf/axis/scripts/axis.py:247 +msgid "Cycle among preset views" +msgstr "循環 在預設 視圖 之間" -#: tcl/ngcgui.tcl:2287 -#, fuzzy -msgid "Create Next" -msgstr "創建 或 修改" +#: src/emc/usr_intf/axis/scripts/axis.py:248 +msgid "Cycle among preview, DRO, and user tabs" +msgstr "循環 在 視圖 之間, DRO, 和 用戶 標籤" -#: tcl/ngcgui.tcl:2292 -#, fuzzy -msgid "Created feature " -msgstr "創建 或 修改" +#: src/emc/usr_intf/axis/scripts/axis.py:250 +msgid "Ctrl-Space" +msgstr "" -#: tcl/ngcgui.tcl:2316 -#, fuzzy -msgid "option" -msgstr "動作" +#: src/emc/usr_intf/axis/scripts/axis.py:250 +msgid "Clear notifications" +msgstr "清除 通報" -#: tcl/ngcgui.tcl:2327 -#, fuzzy -msgid "Missing parameters" -msgstr " 參數(_m) " +#: src/emc/usr_intf/axis/scripts/axis.py:850 +#, python-format +msgid "Unknown tool %d" +msgstr "未知的刀具 %d" -#: tcl/ngcgui.tcl:2331 -#, fuzzy -msgid "Parse Error" -msgstr "故障" +#: src/emc/usr_intf/axis/scripts/axis.py:852 +msgid "No tool" +msgstr "沒有刀具" -#: tcl/ngcgui.tcl:2338 -msgid "Null Preamble" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:854 +#, python-format +msgid "Tool %(tool)d, offset %(zo)g, diameter %(dia)g" +msgstr "刀具 %(tool)d, 偏移 %(zo)g, 直徑 %(dia)g" -#: tcl/ngcgui.tcl:2343 -#, fuzzy -msgid "Read Preamble" -msgstr "超前角" +#: src/emc/usr_intf/axis/scripts/axis.py:856 +#, python-format +msgid "Tool %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" +msgstr "刀具 %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" -#: tcl/ngcgui.tcl:2347 -msgid "Preamble Error" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1031 +msgid "Filtering..." +msgstr "篩選...." -#: tcl/ngcgui.tcl:2352 -msgid "Null Postamble" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1102 +msgid "Filter failed" +msgstr "篩選 失敗" -#: tcl/ngcgui.tcl:2357 -msgid "Read Postamble" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1103 +#, python-format +msgid "" +"The program %(program)r exited with code %(code)d. Any error messages it " +"produced are shown below:" +msgstr "該程序 %(program)r 退出 的 程式碼 %(code)d. 所有 錯誤信息 產生 如下:" -#: tcl/ngcgui.tcl:2361 -msgid "Postamble Error" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1171 +#, python-format +msgid "G-Code error in %s" +msgstr "G 代碼 錯誤 在 %s" -#: tcl/ngcgui.tcl:2366 -msgid "Read Subfile" +#: src/emc/usr_intf/axis/scripts/axis.py:1172 +#, python-format +msgid "" +"Near line %(seq)d of %(f)s:\n" +"%(error_str)s" msgstr "" -#: tcl/ngcgui.tcl:2371 -#, fuzzy -msgid "Write Error" -msgstr "故障" +#: src/emc/usr_intf/axis/scripts/axis.py:1341 +#: src/emc/usr_intf/axis/scripts/axis.py:2942 share/axis/tcl/axis.tcl:1162 +#: share/axis/tcl/axis.tcl:1164 share/axis/tcl/axis.tcl:2269 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:895 +msgid "Continuous" +msgstr "連續" -#: tcl/ngcgui.tcl:2375 -msgid "Outfile set" +#: src/emc/usr_intf/axis/scripts/axis.py:1452 +msgid "Ok" msgstr "" -#: tcl/ngcgui.tcl:2380 -msgid "Finished" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1599 +msgid "T Tool Table" +msgstr "T 刀具表" -#: tcl/ngcgui.tcl:2385 -#, fuzzy -msgid "Canceled" -msgstr "取消" +#: src/emc/usr_intf/axis/scripts/axis.py:1610 +#: src/emc/usr_intf/axis/scripts/axis.py:1859 +#: src/emc/usr_intf/axis/scripts/axis.py:2387 +#: src/emc/usr_intf/stepconf/stepconf.py:1328 +#: src/emc/usr_intf/stepconf/pages.py:631 +msgid "in" +msgstr "英寸" -#: tcl/ngcgui.tcl:2391 -msgid "Sent" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1613 +msgid " radius" +msgstr " 半徑" -#: tcl/ngcgui.tcl:2395 -#, fuzzy -msgid "SendFileToAxis failed" -msgstr "篩選 失敗" +#: src/emc/usr_intf/axis/scripts/axis.py:1615 +msgid " diameter" +msgstr " 直徑" -#: tcl/ngcgui.tcl:2399 -msgid "Ctrl-k for Key bindings" +#: src/emc/usr_intf/axis/scripts/axis.py:1616 +msgid "°" msgstr "" -#: tcl/ngcgui.tcl:2403 -#, fuzzy -msgid "Expand sub" -msgstr "展開 針" +#: src/emc/usr_intf/axis/scripts/axis.py:1625 +msgid "Coordinate System:" +msgstr "坐標系:" -#: tcl/ngcgui.tcl:2407 -#, fuzzy -msgid "Retain values" -msgstr "設定軸 偏移量:" +#: src/emc/usr_intf/axis/scripts/axis.py:1641 +msgid "fixture" +msgstr "夾具" -#: tcl/ngcgui.tcl:2411 -msgid "Verbose" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1642 +msgid "workpiece" +msgstr "工件" -#: tcl/ngcgui.tcl:2417 -msgid "Finalize Canceled" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1658 +msgid "Name:" +msgstr "名稱:" -#: tcl/ngcgui.tcl:2572 tcl/ngcgui.tcl:2728 -msgid "Dismiss" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1658 +msgid "Size:" +msgstr "尺寸:" -#: tcl/ngcgui.tcl:2577 -msgid "ngcgui Error" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1659 +msgid "Tool order:" +msgstr "刀具秩序:" -#: tcl/ngcgui.tcl:2600 -msgid "Declining support for tk send bug in ngcgui" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1659 +msgid "Rapid distance:" +msgstr "快速的距離:" -#: tcl/ngcgui.tcl:2601 -msgid "You should upgrade linuxcnc to >= linuxcnc2.5" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1660 +msgid "Feed distance:" +msgstr "進給距離:" -#: tcl/ngcgui.tcl:2645 -msgid "pre2.4_send_file_to_axis:error" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1660 +msgid "Total distance:" +msgstr "總距離:" -#: tcl/ngcgui.tcl:2839 share/axis/tcl/axis.tcl:1917 -msgid "OFF" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1661 +msgid "Run time:" +msgstr "運行時間:" -#: tcl/ngcgui.tcl:2842 -#, fuzzy -msgid "Toggle autosend" -msgstr "切換 淹浸" +#: src/emc/usr_intf/axis/scripts/axis.py:1661 +msgid "X bounds:" +msgstr "X 範圍:" -#: tcl/ngcgui.tcl:2843 tcl/ngcgui.tcl:3057 -#, fuzzy -msgid "Clear entries" -msgstr "清除 通報" +#: src/emc/usr_intf/axis/scripts/axis.py:1662 +msgid "Y bounds:" +msgstr "Y 範圍:" -#: tcl/ngcgui.tcl:2844 -msgid "Set entries to default values" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1662 +msgid "Z bounds:" +msgstr "Z 範圍:" -#: tcl/ngcgui.tcl:2845 tcl/ngcgui.tcl:2859 tcl/ngcgui.tcl:2861 -msgid "Open editor specified by" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1663 +msgid "A bounds:" +msgstr "A 範圍:" -#: tcl/ngcgui.tcl:2846 -msgid "on last outfile" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1663 +msgid "B bounds:" +msgstr "B 範圍:" -#: tcl/ngcgui.tcl:2847 -#, fuzzy -msgid "toggle expand subroutines" -msgstr "太多的子程序層面" +#: src/emc/usr_intf/axis/scripts/axis.py:1664 +msgid "C bounds:" +msgstr "C 範圍:" -#: tcl/ngcgui.tcl:2848 -msgid "Create feature" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1688 +#, python-format +msgid "Program exceeds machine minimum on axis %s" +msgstr "程序 超出 机床 最低 限度 在 軸 %s" -#: tcl/ngcgui.tcl:2849 -msgid "Finalize (AUTO send is" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1691 +#, python-format +msgid "Program exceeds machine maximum on axis %s" +msgstr "程序 超出 机床 最高 限度 在 軸 %s" -#: tcl/ngcgui.tcl:2850 -msgid "Show key bindings" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1696 +msgid "Program exceeds machine limits" +msgstr "程序 超出 机床 極限" -#: tcl/ngcgui.tcl:2851 -msgid "Restart (cancel pending)" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1699 +msgid "Run Anyway" +msgstr "運行 無論如何" -#: tcl/ngcgui.tcl:2852 -msgid "(re)Read Preamble" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1581 +msgid "No file loaded" +msgstr "沒有 文件 加載" -#: tcl/ngcgui.tcl:2853 -msgid "(re)Read Postamble" +#: src/emc/usr_intf/axis/scripts/axis.py:1845 +#, python-format +msgid "generated from %s" +msgstr "產生 於 %s" + +#: src/emc/usr_intf/axis/scripts/axis.py:1851 +#, python-format +msgid "" +"%(size)s bytes\n" +"%(lines)s gcode lines" msgstr "" -#: tcl/ngcgui.tcl:2854 -msgid "(re)Read Subfile" +#: src/emc/usr_intf/axis/scripts/axis.py:1877 +#, python-format +msgid "%.1f minutes" msgstr "" -#: tcl/ngcgui.tcl:2855 -msgid "toggle retain values" +#: src/emc/usr_intf/axis/scripts/axis.py:1879 +#, python-format +msgid "%d seconds" msgstr "" -#: tcl/ngcgui.tcl:2856 -msgid "toggle output file verbosity" +#: src/emc/usr_intf/axis/scripts/axis.py:1887 +#, python-format +msgid "%(a)f to %(b)f = %(diff)f %(units)s" msgstr "" -#: tcl/ngcgui.tcl:2857 -#, fuzzy -msgid "Show status" -msgstr "顯示重開" +#: src/emc/usr_intf/axis/scripts/axis.py:1888 +msgid "G-Code Properties" +msgstr "G 代碼 性質" -#: tcl/ngcgui.tcl:2858 -msgid "Show full status (debug info)" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:2021 +msgid "All machinable files" +msgstr "所有 可 加工 文件" -#: tcl/ngcgui.tcl:2860 -#, fuzzy -msgid "on current subfile" -msgstr "重新打開 當前 文件 [Control-R]" +#: src/emc/usr_intf/axis/scripts/axis.py:2022 +#: src/emc/usr_intf/axis/scripts/axis.py:2659 +msgid "rs274ngc files" +msgstr "rs274ngc 文件" -#: tcl/ngcgui.tcl:2862 -msgid "on current preamble" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:2037 +msgid "axis cannot accept remote command while running" +msgstr "軸 不能接受 遠程 指令 在 運行時" -#: tcl/ngcgui.tcl:2865 -msgid " Escape Return to Preview page" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:2098 +#, fuzzy +msgid "File not Writable:" +msgstr "文件未打開" -#: tcl/ngcgui.tcl:2942 -msgid "Editing requires setting for environmental variable VISUAL" +#: src/emc/usr_intf/axis/scripts/axis.py:2099 +msgid "" +"This file is not writable\n" +"You can Edit-readonly\n" +"\n" +"or\n" +"\n" +"Save it to your own directory\n" +"then open that saved, writable file" msgstr "" -#: tcl/ngcgui.tcl:2943 -msgid "Trying gedit" +#: src/emc/usr_intf/axis/scripts/axis.py:2106 +msgid "Edit-readonly" msgstr "" -#: tcl/ngcgui.tcl:2955 -#, fuzzy -msgid "No file available for editing yet" -msgstr "非整數值對整數" +#: src/emc/usr_intf/axis/scripts/axis.py:2440 +msgid "Axis is already homed, are you sure you want to re-home?" +msgstr "軸 已經 在零,你一定要 重新 再 歸零?" -#: tcl/ngcgui.tcl:2964 tcl/ngcgui.tcl:2973 -#, fuzzy -msgid "No file available for editing" -msgstr "非整數值對整數" +#: src/emc/usr_intf/axis/scripts/axis.py:2453 +msgid "This axis is already homed, are you sure you want to re-home?" +msgstr "這軸 已經 在零,你一定要 重新 再 歸零?" -#: tcl/ngcgui.tcl:2990 -#, fuzzy -msgid "Status items" -msgstr "狀況" +#: src/emc/usr_intf/axis/scripts/axis.py:2493 share/axis/tcl/axis.tcl:1178 +msgid "Touch Off" +msgstr "對刀" -#: tcl/ngcgui.tcl:3003 -msgid "All-page opt items" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:2494 +#, python-format +msgid "Enter %s coordinate relative to %%s:" +msgstr "輸入 %s 坐標相對於 %%s:" -#: tcl/ngcgui.tcl:3009 -msgid "any-items" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:2671 +msgid "Error saving file" +msgstr "保存 文件 時出錯" -#: tcl/ngcgui.tcl:3046 -#, fuzzy -msgid "Set defaults" -msgstr "AXIS 預 置 值" +#: src/emc/usr_intf/axis/scripts/axis.py:3077 +#: src/emc/usr_intf/touchy/touchy.glade:577 +#: src/emc/usr_intf/gscreen/gscreen.glade:2933 +msgid "Home All" +msgstr "全部 歸零" -#: tcl/ngcgui.tcl:3125 -msgid "not writable" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:3079 +msgid "Home all axes [Ctrl-Home]" +msgstr "所有軸 歸零 [Ctrl-Home]" -#: tcl/ngcgui.tcl:3263 tcl/ngcgui.tcl:3443 -#, fuzzy -msgid "new" -msgstr "新" +#: src/emc/usr_intf/axis/scripts/axis.py:3082 +msgid "Home All Axes" +msgstr "所有軸 歸零" -#: tcl/ngcgui.tcl:3288 -msgid "Open a new Subfile" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:3089 +msgid "Unhome All Axes" +msgstr "所有軸 離零" -#: tcl/ngcgui.tcl:3434 -msgid "remove" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:3113 +#, python-format +msgid "Home Axis _%s" +msgstr "歸零 軸 _%s" -#: tcl/ngcgui.tcl:3456 tcl/ngcgui.tcl:3462 -msgid "move" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:3115 +#, python-format +msgid "Unhome Axis _%s" +msgstr "離零 軸 _%s" -#: tcl/ngcgui.tcl:3561 src/emc/usr_intf/pncconf/pncconf.py:7022 -#: src/emc/usr_intf/pncconf/pncconf.py:7139 -#: src/emc/usr_intf/pncconf/pncconf.py:7306 -msgid "Custom" -msgstr "自訂" +#: src/emc/usr_intf/axis/scripts/axis.py:3282 +msgid "Run from here" +msgstr "從 這裡 運行" -#: tcl/ngcgui.tcl:3587 -msgid "Problem creating page" -msgstr "" +#: src/emc/usr_intf/axis/scripts/axis.py:3598 +msgid "Error in ~/.axisrc" +msgstr "錯誤 joi ~/.axisrc" -#: tcl/ngcgui.tcl:3594 -msgid "entrykeybindings not available" -msgstr "" +#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:102 +#, fuzzy +msgid "Machinekit Status" +msgstr "機器 單元:" -#: tcl/ngcgui.tcl:3633 -msgid "Found multiple matches for" -msgstr "" +#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:118 +msgid "Copy All" +msgstr "全部 複製" -#: tcl/ngcgui.tcl:3634 -msgid "using path" -msgstr "" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 +#, python-format +msgid "Insert tool %d and click continue when ready" +msgstr "插入 刀具 %d 準備 好後 點擊 繼續" -#: tcl/ngcgui.tcl:3642 src/emc/usr_intf/axis/scripts/axis.py:2255 -#: src/emc/usr_intf/axis/scripts/axis.py:2268 -msgid "Warning" -msgstr "警告" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:39 +msgid "Remove the tool and click continue when ready" +msgstr "移除 刀具 準備 好後 點擊 繼續" -#: tcl/ngcgui.tcl:3643 -msgid "File absolute path specifier conflicts with searchpath result" -msgstr "" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 +#: src/emc/usr_intf/touchy/mdi.py:49 src/emc/usr_intf/gscreen/mdi.py:49 +msgid "Tool change" +msgstr "換刀" -#: tcl/ngcgui.tcl:3644 -#, fuzzy -msgid "Absolute Specifier" -msgstr "絕對反饋" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:45 +msgid "Continue" +msgstr "繼續" -#: tcl/ngcgui.tcl:3645 -msgid "Using Search Result" -msgstr "" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:64 +msgid "AXIS Manual Toolchanger" +msgstr "AXIS 手動 換刀" -#: tcl/ngcgui.tcl:3650 -msgid "File not in Search Path" +#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:68 +msgid "" +"This window is part of the AXIS manual toolchanger. It is safe to close or " +"iconify this window, or it will close automatically after a few seconds." msgstr "" +"這個窗口是 AXIS 手動換刀 的部分.這是安全的結束或圖標化此窗口, 否則將在幾秒鐘" +"後自動關閉." -#: tcl/ngcgui.tcl:3652 -msgid "Must be in search path" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:507 +#, python-format +msgid "%s: Image to gcode" +msgstr "%s: 圖片 到 G代碼" -#: tcl/ngcgui.tcl:3654 -msgid "(File found -- not in search path)" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:508 +msgid "Image to gcode" +msgstr "圖片 到 G代碼" -#: tcl/ngcgui.tcl:3656 -msgid "Current directory" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:518 +#, python-format +msgid "" +"Image size: %(w)d x %(h)d pixels\n" +"Minimum pixel value: %(min)d\n" +"Maximum pixel value: %(max)d" msgstr "" -#: tcl/ngcgui.tcl:3657 -msgid "Search path" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 +msgid "G20 (in)" msgstr "" -#: tcl/ngcgui.tcl:3663 -msgid "Check setting for" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 +msgid "G21 (mm)" msgstr "" -#: tcl/ngcgui.tcl:3664 -#, fuzzy -msgid "in ini file" -msgstr "(無文件)" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 +#: src/emc/usr_intf/touchy/emc_interface.py:417 +msgid "None" +msgstr "無" -#: tcl/ngcgui.tcl:3665 -msgid "(Restart required after fixing ini file)" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +msgid "White" +msgstr "白" -#: tcl/ngcgui.tcl:3680 -#, fuzzy -msgid "Try to Continue" -msgstr "繼續" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 +msgid "Black" +msgstr "黑" -#: tcl/ngcgui.tcl:3685 -#, fuzzy -msgid "Ngcgui Configuration File Not Found" -msgstr "打開配置文件:" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Rows" +msgstr "行" -#: tcl/ngcgui.tcl:3765 -msgid "Missing Tcl Package Img" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Columns" +msgstr "列" -#: tcl/ngcgui.tcl:3766 -msgid "Please install Img" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Rows then Columns" msgstr "" -#: tcl/ngcgui.tcl:3965 -#, fuzzy -msgid "ini file" -msgstr "(無文件)" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 +msgid "Columns then Rows" +msgstr "行 然後 列" -#: tcl/ngcgui.tcl:3973 -msgid "not found" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Positive" +msgstr "正" -#: tcl/ngcgui_ttt.tcl:67 -msgid "found truetype-tracer v4 -OK" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Negative" +msgstr "負" -#: tcl/ngcgui_ttt.tcl:70 -msgid "Note truetype-tracer v4 is required" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Alternating" +msgstr "交替" -#: tcl/ngcgui_ttt.tcl:71 -msgid "Note: truetype-tracer v4 is required" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Up Milling" +msgstr "向上銑削" -#: tcl/ngcgui_ttt.tcl:81 -msgid "ngcgui_app.tcl must be loaded before" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 +msgid "Down Milling" +msgstr "向下銑削" -#: tcl/ngcgui_ttt.tcl:89 -msgid "Create a subroutine file from truetype-tracer (V4 reqd)" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "Ball End" +msgstr "球頭" -#: tcl/ngcgui_ttt.tcl:102 tcl/ngcgui_ttt.tcl:115 -#, fuzzy -msgid "problem with" -msgstr "替換:" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "Flat End" +msgstr "平尾" -#: tcl/ngcgui_ttt.tcl:106 -msgid "No entry for" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "30 Degree" +msgstr "30 度" -#: tcl/ngcgui_ttt.tcl:109 -msgid "wrong version of truetype-tracer" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "45 Degree" +msgstr "45 度" -#: tcl/ngcgui_ttt.tcl:125 -msgid "not writable, using" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 +msgid "60 Degree" +msgstr "60 度" -#: tcl/ngcgui_ttt.tcl:125 -msgid "and setting expandsub" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 +msgid "Secondary" +msgstr "次要" -#: tcl/ngcgui_ttt.tcl:161 -msgid "Text" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 +msgid "Full" +msgstr "全" -#: tcl/ngcgui_ttt.tcl:171 -#, fuzzy -msgid "Linescale" -msgstr "比例" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:654 +msgid "Invert Image" +msgstr "反轉 圖像" -#: tcl/ngcgui_ttt.tcl:177 -msgid "none" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:655 +msgid "Normalize Image" +msgstr "規範化 的 圖像" -#: tcl/ngcgui_ttt.tcl:192 -msgid "Subdiv" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:656 +msgid "Extend Image Border" +msgstr "擴充圖像邊界" -#: tcl/ngcgui_ttt.tcl:199 -#, fuzzy -msgid "default" -msgstr "AXIS 預 置 值" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:657 +msgid "Pixel Size (Units)" +msgstr "像素尺寸(單位)" -#: tcl/ngcgui_ttt.tcl:239 -#, fuzzy -msgid "Mode" -msgstr "運行模式" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:658 +msgid "Depth (units)" +msgstr "深度(單位)" -#: tcl/ngcgui_ttt.tcl:247 -#, fuzzy -msgid "normal" -msgstr "正常" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:659 +msgid "Tolerance (units)" +msgstr "公差(單位)" -#: tcl/ngcgui_ttt.tcl:248 -msgid "date" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:660 +msgid "Stepover (pixels)" +msgstr "步距宽度(像素)" -#: tcl/ngcgui_ttt.tcl:249 -msgid "fontname" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:661 +msgid "Tool Diameter (units)" +msgstr "刀具直徑(單位)" -#: tcl/ngcgui_ttt.tcl:262 -#, fuzzy -msgid "Switches" -msgstr "英寸" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:662 +msgid "Tool Type" +msgstr "刀具 類型" -#: tcl/ngcgui_ttt.tcl:270 -msgid "Unicode" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:663 +msgid "Feed Rate (units per minute)" +msgstr "進給 速度(單位/每分鐘)" -#: tcl/ngcgui_ttt.tcl:275 -msgid "Allow Rotation" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:664 +msgid "Plunge Feed Rate (units per minute)" +msgstr "切入 進給 速度(單位/每分鐘)" -#: tcl/ngcgui_ttt.tcl:295 -msgid "Make ngcgui-compatible subfile and new tab page" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:666 +msgid "Safety Height (units)" +msgstr "安全高度(單位)" -#: tcl/ngcgui_ttt.tcl:353 -msgid "Null text" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:667 +msgid "Scan Pattern" +msgstr "掃描 圖形" -#: tcl/ngcgui_ttt.tcl:384 -msgid "Using truetype-tracer default font" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:668 +msgid "Scan Direction" +msgstr "掃描方向" + +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:669 +msgid "Lace Bounding" +msgstr "花邊 定界" -#: tcl/ngcgui_ttt.tcl:388 -#, fuzzy -msgid "no such file" -msgstr "(無文件)" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:670 +msgid "Contact Angle (degrees)" +msgstr "接觸角(度)" -#: tcl/ngcgui_ttt.tcl:393 -#, fuzzy -msgid "file not readable" -msgstr "文件未打開" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:671 +msgid "Spindle Speed (RPM)" +msgstr "主軸 轉速(RPM)" -#: tcl/ngcgui_ttt.tcl:507 -msgid "Creating new tab page" -msgstr "" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:672 +msgid "Roughing offset (units, 0=no roughing)" +msgstr "粗加工 偏移量(單位,0=無粗加工)" -#: src/emc/usr_intf/axis/scripts/axis.py:148 -msgid "Emergency stop" -msgstr "緊急 停止" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:673 +msgid "Roughing depth per pass (units)" +msgstr "每 通過 粗加工 的 深度(單位)" -#: src/emc/usr_intf/axis/scripts/axis.py:149 -msgid "Turn machine on" -msgstr "開動 機器" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:740 +msgid "image-to-gcode: User pressed cancel" +msgstr "圖像 到 G代碼:用戶 按下 取消" -#: src/emc/usr_intf/axis/scripts/axis.py:151 -msgid "Activate first axis" -msgstr "激活 第一軸" +#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:753 +msgid "Depth images" +msgstr "深度 圖像" -#: src/emc/usr_intf/axis/scripts/axis.py:152 -msgid "Activate second axis" -msgstr "激活 第二軸" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:22 +#, fuzzy +msgid "Machinekit Debug Level" +msgstr "設置偵錯層級(_D)" -#: src/emc/usr_intf/axis/scripts/axis.py:153 -msgid "Activate third axis" -msgstr "激活 第三軸" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:23 +msgid "debuglevel" +msgstr "偵錯層級" -#: src/emc/usr_intf/axis/scripts/axis.py:154 -msgid "Activate fourth axis" -msgstr "激活 第四軸" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:36 +msgid "Configuration *" +msgstr "配 置 *" -#: src/emc/usr_intf/axis/scripts/axis.py:155 -msgid "Activate fifth through ninth axis" -msgstr "激活 第五軸 到 第九軸" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:37 +msgid "Version Numbers *" +msgstr "版本號 *" -#: src/emc/usr_intf/axis/scripts/axis.py:156 -msgid "Set Feed Override from 0% to 100%" -msgstr "進給 超速設為從 0% 至 100%" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:38 +msgid "NML *" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:157 -msgid ", and ." -msgstr ", 和 ." +#: src/emc/usr_intf/axis/scripts/debuglevel.py:39 +msgid "RCS *" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:157 -msgid "Select jog speed" -msgstr "選擇 慢步 速度" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:40 +msgid "Task Issue" +msgstr "任務 發行" -#: src/emc/usr_intf/axis/scripts/axis.py:158 -msgid "< and >" -msgstr "< 和 >" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:41 +msgid "Motion Time" +msgstr "動作 時間" -#: src/emc/usr_intf/axis/scripts/axis.py:158 -msgid "Select angular jog speed" -msgstr "選擇 角 慢步 速度" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:43 +msgid "Interpreter List" +msgstr "解釋器名單" -#: src/emc/usr_intf/axis/scripts/axis.py:159 -msgid "I, Shift-I" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:47 +#, python-format +msgid "" +"Inifile setting for this debug level:\n" +"[EMC]DEBUG=0x%08x" msgstr "" +"INI文件設置對這個偵錯層級:\n" +"[EMC]DEBUG=0x%08x" -#: src/emc/usr_intf/axis/scripts/axis.py:159 share/axis/tcl/axis.tcl:2356 -msgid "Select jog increment" -msgstr "選擇 慢步 增量" +#: src/emc/usr_intf/axis/scripts/debuglevel.py:81 +msgid " * This option can only be enabled in the inifile" +msgstr " *這個 選項 只能在 ini 文件 啟用" -#: src/emc/usr_intf/axis/scripts/axis.py:160 -msgid "Continuous jog" -msgstr "連續 慢步" +#: share/axis/tcl/axis.tcl:52 +msgid "_Open..." +msgstr "打開(_O)" -#: src/emc/usr_intf/axis/scripts/axis.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:479 -msgid "Home" -msgstr "零點" +#: share/axis/tcl/axis.tcl:56 +msgid "Recent _Files" +msgstr "最近打開的文件(_F)" -#: src/emc/usr_intf/axis/scripts/axis.py:161 -msgid "Send active axis home" -msgstr "送 活躍軸 回零點" +#: share/axis/tcl/axis.tcl:60 +msgid "_Edit..." +msgstr "編輯(_E)..." -#: src/emc/usr_intf/axis/scripts/axis.py:162 -msgid "Ctrl-Home" +#: share/axis/tcl/axis.tcl:63 +msgid "Ctrl-R" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:162 -msgid "Home all axes" -msgstr "所有軸 回零點" +#: share/axis/tcl/axis.tcl:65 +msgid "_Reload" +msgstr "重新載入(_R)" -#: src/emc/usr_intf/axis/scripts/axis.py:163 -msgid "Shift-Home" +#: share/axis/tcl/axis.tcl:68 +msgid "Ctrl-S" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:163 -msgid "Zero G54 offset for active axis" -msgstr "置零 G54 偏置 對於 活躍 的軸" +#: share/axis/tcl/axis.tcl:70 +msgid "_Save gcode as..." +msgstr "保存G代碼為(_S)..." -#: src/emc/usr_intf/axis/scripts/axis.py:164 -msgid "End" -msgstr "終止" +#: share/axis/tcl/axis.tcl:74 +msgid "_Properties..." +msgstr "屬性(_P)......" -#: src/emc/usr_intf/axis/scripts/axis.py:164 -msgid "Set G54 offset for active axis" -msgstr "設 G54 偏置 對於 活躍 的軸" +#: share/axis/tcl/axis.tcl:80 +msgid "Edit _tool table..." +msgstr "編輯刀具表(_t)...." -#: src/emc/usr_intf/axis/scripts/axis.py:165 -msgid "Jog active axis" -msgstr "慢步 活躍的 軸" +#: share/axis/tcl/axis.tcl:84 +msgid "Reload tool ta_ble" +msgstr "重新載入刀具表(_b)" -#: src/emc/usr_intf/axis/scripts/axis.py:168 -msgid "Left, Right" -msgstr "左,右" +#: share/axis/tcl/axis.tcl:90 +msgid "_Ladder Editor..." +msgstr "梯形圖編輯器(_L)...." -#: src/emc/usr_intf/axis/scripts/axis.py:168 -msgid "Jog first axis" -msgstr "慢步 第一軸" +#: share/axis/tcl/axis.tcl:102 +msgid "Toggle _Emergency Stop" +msgstr "切換緊急停止(_E).." -#: src/emc/usr_intf/axis/scripts/axis.py:169 -msgid "Up, Down" -msgstr "上,下" +#: share/axis/tcl/axis.tcl:107 +msgid "Toggle _Machine Power" +msgstr "切換設備電源(_M).." -#: src/emc/usr_intf/axis/scripts/axis.py:169 -msgid "Jog second axis" -msgstr "慢步 第二軸" +#: share/axis/tcl/axis.tcl:114 +msgid "_Run program" +msgstr "運行程序(_R)" -#: src/emc/usr_intf/axis/scripts/axis.py:170 -msgid "Pg Up, Pg Dn" -msgstr "頁向上, 頁向下" +#: share/axis/tcl/axis.tcl:118 +msgid "Ru_n from selected line" +msgstr "運行選定的行(_n)" -#: src/emc/usr_intf/axis/scripts/axis.py:170 -msgid "Jog third axis" -msgstr "慢步 第三軸" +#: share/axis/tcl/axis.tcl:123 +msgid "S_tep" +msgstr "步伐(_t)" -#: src/emc/usr_intf/axis/scripts/axis.py:171 -msgid "Shift+above jogs" -msgstr "" +#: share/axis/tcl/axis.tcl:128 +msgid "_Pause" +msgstr "暫停(_P)" -#: src/emc/usr_intf/axis/scripts/axis.py:171 -msgid "Jog at traverse speed" -msgstr "慢步 橫過速度" +#: share/axis/tcl/axis.tcl:133 +msgid "Re_sume" +msgstr "恢復(_s)" -#: src/emc/usr_intf/axis/scripts/axis.py:172 -msgid "Jog fourth axis" -msgstr "慢步 第四軸" +#: share/axis/tcl/axis.tcl:143 +msgid "Stop at M_1" +msgstr "停止在 M_1" -#: src/emc/usr_intf/axis/scripts/axis.py:175 -msgid "Toggle between Drag and Rotate mode" -msgstr "切換 拖動 和 旋轉 模式" +#: share/axis/tcl/axis.tcl:148 +msgid "Skip lines with '_/'" +msgstr "略過 行 以 '_/'" -#: src/emc/usr_intf/axis/scripts/axis.py:176 -msgid "Left Button" -msgstr "左 按鈕" +#: share/axis/tcl/axis.tcl:153 +msgid "Ctrl-M" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:176 -msgid "Pan, rotate or select line" -msgstr "平移,旋轉 或 行選擇" +#: share/axis/tcl/axis.tcl:155 +msgid "Clear MDI h_istory" +msgstr "清除 MDI 歷史(_i)" -#: src/emc/usr_intf/axis/scripts/axis.py:177 -msgid "Shift+Left Button" +#: share/axis/tcl/axis.tcl:157 +msgid "Ctrl-H" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:177 -msgid "Rotate or pan" -msgstr "旋轉 或 平移" +#: share/axis/tcl/axis.tcl:159 +msgid "Copy from MDI hist_ory" +msgstr "從 MDI 歷史複製(_o)" -#: src/emc/usr_intf/axis/scripts/axis.py:178 -msgid "Right Button" -msgstr "右按鈕" +#: share/axis/tcl/axis.tcl:161 +msgid "Ctrl-Shift-H" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:178 -#: src/emc/usr_intf/axis/scripts/axis.py:180 -#: src/emc/usr_intf/axis/scripts/axis.py:181 -msgid "Zoom view" -msgstr "縮放 視圖" +#: share/axis/tcl/axis.tcl:163 +msgid "Paste to MDI histor_y" +msgstr "粘貼到MDI歷史(_y)" -#: src/emc/usr_intf/axis/scripts/axis.py:179 -msgid "Wheel Button" -msgstr "滾輪 按鍵" +#: share/axis/tcl/axis.tcl:169 +msgid "_Calibration" +msgstr "校準(_C)" -#: src/emc/usr_intf/axis/scripts/axis.py:179 -msgid "Rotate view" -msgstr "旋轉 視圖" +#: share/axis/tcl/axis.tcl:173 +msgid "Show _Hal Configuration" +msgstr "顯示 HA L配置" -#: src/emc/usr_intf/axis/scripts/axis.py:180 -msgid "Rotate Wheel" -msgstr "旋轉 滾輪" +#: share/axis/tcl/axis.tcl:177 +msgid "H_al Meter" +msgstr "HAL 儀表(_a)" -#: src/emc/usr_intf/axis/scripts/axis.py:181 -msgid "Control+Left Button" -msgstr "" +#: share/axis/tcl/axis.tcl:181 +msgid "Ha_l Scope" +msgstr "HAL 示波器(_l)" -#: src/emc/usr_intf/axis/scripts/axis.py:184 -msgid "Manual control" -msgstr "手動 控制" +#: share/axis/tcl/axis.tcl:185 +#, fuzzy +msgid "Sho_w Machinekit Status" +msgstr "顯示 EMC 現狀(_w)" -#: src/emc/usr_intf/axis/scripts/axis.py:185 -msgid "Code entry (MDI)" -msgstr "代碼輸入 (MDI)" +#: share/axis/tcl/axis.tcl:189 +msgid "Set _Debug Level" +msgstr "設置偵錯層級(_D)" -#: src/emc/usr_intf/axis/scripts/axis.py:186 -msgid "Control-M" -msgstr "" +#: share/axis/tcl/axis.tcl:195 +msgid "Homin_g" +msgstr "歸零(_g)" -#: src/emc/usr_intf/axis/scripts/axis.py:186 -msgid "Clear MDI history" -msgstr "清除 MDI 歷史" +#: share/axis/tcl/axis.tcl:199 +msgid "_Unhoming" +msgstr "離零(_U)" -#: src/emc/usr_intf/axis/scripts/axis.py:187 -msgid "Control-H" -msgstr "" +#: share/axis/tcl/axis.tcl:203 +msgid "_Zero coordinate system" +msgstr "坐標系統為零(_Z)" -#: src/emc/usr_intf/axis/scripts/axis.py:187 -msgid "Copy selected MDI history elements" -msgstr "複製 選定的 MDI 歷史 元件" +#: share/axis/tcl/axis.tcl:207 +msgid "P1 G5_4" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:188 -msgid "to clipboard" -msgstr "到 剪貼板" +#: share/axis/tcl/axis.tcl:211 +msgid "P2 G5_5" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:189 -msgid "Control-Shift-H" +#: share/axis/tcl/axis.tcl:215 +msgid "P3 G5_6" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:189 -msgid "Paste clipboard to MDI history" -msgstr "剪貼板 貼入到 MDI 歷史" +#: share/axis/tcl/axis.tcl:219 +msgid "P4 G5_7" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:190 share/axis/tcl/axis.tcl:1113 -#: src/emc/usr_intf/touchy/touchy.glade:508 -msgid "Override Limits" -msgstr "超速 極限" +#: share/axis/tcl/axis.tcl:223 +msgid "P5 G5_8" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:192 -msgid "Open program" -msgstr "打開 程序" +#: share/axis/tcl/axis.tcl:227 +msgid "P6 G5_9" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:193 -msgid "Control-R" +#: share/axis/tcl/axis.tcl:231 +msgid "P7 G59._1" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:193 -msgid "Reload program" -msgstr "重裝 程序" +#: share/axis/tcl/axis.tcl:235 +msgid "P8 G59._2" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:194 -msgid "Control-S" +#: share/axis/tcl/axis.tcl:239 +msgid "P9 G59._3" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:194 -msgid "Save g-code as" -msgstr "另存 G-代碼 為" +#: share/axis/tcl/axis.tcl:243 +msgid "_G92" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:195 -msgid "Run program" -msgstr "程序 啟動" +#: share/axis/tcl/axis.tcl:251 +msgid "Tool touch off to wor_kpiece" +msgstr "刀具 對 工件 對刀(_k)" -#: src/emc/usr_intf/axis/scripts/axis.py:196 -msgid "Step program" -msgstr "步進 程序" +#: share/axis/tcl/axis.tcl:257 +msgid "Tool touch off to _fixture" +msgstr "刀具 對 夾具 對刀(_f)" -#: src/emc/usr_intf/axis/scripts/axis.py:197 -msgid "Pause program" -msgstr "暂停 程序" +#: share/axis/tcl/axis.tcl:265 +msgid "_Top view" +msgstr "頂 視圖(_T)" -#: src/emc/usr_intf/axis/scripts/axis.py:198 -msgid "Resume program" -msgstr "恢复 程序" +#: share/axis/tcl/axis.tcl:272 +msgid "_Rotated Top view" +msgstr "旋轉的 頂 視圖(_R)" -#: src/emc/usr_intf/axis/scripts/axis.py:199 -msgid "Stop running program, or" -msgstr "停止 正在 運行 的程序, 或" +#: share/axis/tcl/axis.tcl:279 +msgid "_Side view" +msgstr "側面 視圖(_S)" -#: src/emc/usr_intf/axis/scripts/axis.py:200 -msgid "stop loading program preview" -msgstr "停止 載入 程序 預覽" +#: share/axis/tcl/axis.tcl:286 +msgid "_Front view" +msgstr "正面 視圖(_F)" -#: src/emc/usr_intf/axis/scripts/axis.py:202 -msgid "Toggle mist" -msgstr "切換 噴霧" +#: share/axis/tcl/axis.tcl:293 +msgid "_Perspective view" +msgstr "透視 視圖(_P)" -#: src/emc/usr_intf/axis/scripts/axis.py:203 -msgid "Toggle flood" -msgstr "切換 淹浸" +#: share/axis/tcl/axis.tcl:302 +msgid "Display _Inches" +msgstr "顯示英寸(_I)" -#: src/emc/usr_intf/axis/scripts/axis.py:204 -msgid "Spindle brake off" -msgstr "" +#: share/axis/tcl/axis.tcl:309 +msgid "Display _MM" +msgstr "顯示 MM(_M)" -#: src/emc/usr_intf/axis/scripts/axis.py:205 -msgid "Shift-B" -msgstr "" +#: share/axis/tcl/axis.tcl:316 +msgid "S_how program" +msgstr "顯示程序(_h)" -#: src/emc/usr_intf/axis/scripts/axis.py:205 -msgid "Spindle brake on" -msgstr "主軸 剎車 開" +#: share/axis/tcl/axis.tcl:321 +msgid "Show program r_apids" +msgstr "顯示程序快速(_a)" -#: src/emc/usr_intf/axis/scripts/axis.py:206 -msgid "Turn spindle clockwise" -msgstr "開動 主軸 順時針 方向" +#: share/axis/tcl/axis.tcl:326 +msgid "Alpha-_blend program" +msgstr "Alpha融合程序(_b)" -#: src/emc/usr_intf/axis/scripts/axis.py:207 -msgid "Turn spindle counterclockwise" -msgstr "開動 主軸 反時針 方向" +#: share/axis/tcl/axis.tcl:331 +msgid "Sho_w live plot" +msgstr "顯示 現場 繪圖(_w)" -#: src/emc/usr_intf/axis/scripts/axis.py:208 -msgid "Turn spindle more slowly" -msgstr "開動 主軸 速度 比較慢" +#: share/axis/tcl/axis.tcl:336 +msgid "Show too_l" +msgstr "顯示 刀具(_l)" -#: src/emc/usr_intf/axis/scripts/axis.py:209 -msgid "Turn spindle more quickly" -msgstr "開動 主軸 速度 更快" +#: share/axis/tcl/axis.tcl:341 +msgid "Show e_xtents" +msgstr "顯示 擴展(_x)" -#: src/emc/usr_intf/axis/scripts/axis.py:211 -msgid "Control-K" +#: share/axis/tcl/axis.tcl:345 +msgid "_Grid" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:211 -msgid "Clear live plot" -msgstr "清除 現場 繪圖" +#: share/axis/tcl/axis.tcl:350 +msgid "Show o_ffsets" +msgstr "顯示 偏移量(_f)" -#: src/emc/usr_intf/axis/scripts/axis.py:212 -msgid "Cycle among preset views" -msgstr "循環 在預設 視圖 之間" +#: share/axis/tcl/axis.tcl:355 +msgid "Sh_ow machine limits" +msgstr "顯示 機器 極限(_o)" -#: src/emc/usr_intf/axis/scripts/axis.py:213 -msgid "Cycle among preview, DRO, and user tabs" -msgstr "循環 在 視圖 之間, DRO, 和 用戶 標籤" +#: share/axis/tcl/axis.tcl:360 +msgid "Show v_elocity" +msgstr "顯示 速率(_e)" -#: src/emc/usr_intf/axis/scripts/axis.py:215 -msgid "Ctrl-Space" +#: share/axis/tcl/axis.tcl:365 +msgid "Show _distance to go" +msgstr "顯示 往前 距離(_d)" + +#: share/axis/tcl/axis.tcl:370 +msgid "Large coordinate fo_nt" +msgstr "大坐標的字體(_n)" + +#: share/axis/tcl/axis.tcl:373 +msgid "Ctrl-K" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:215 -msgid "Clear notifications" -msgstr "清除 通報" +#: share/axis/tcl/axis.tcl:375 +msgid "_Clear live plot" +msgstr "清除 現場 繪圖(_C)" -#: src/emc/usr_intf/axis/scripts/axis.py:836 -#, python-format -msgid "Unknown tool %d" -msgstr "未知的刀具 %d" +#: share/axis/tcl/axis.tcl:384 +msgid "Show commanded position" +msgstr "顯示 命令的 位置" -#: src/emc/usr_intf/axis/scripts/axis.py:838 -msgid "No tool" -msgstr "沒有刀具" +#: share/axis/tcl/axis.tcl:391 +msgid "Show actual position" +msgstr "顯示 實際 位置" -#: src/emc/usr_intf/axis/scripts/axis.py:840 -#, python-format -msgid "Tool %(tool)d, offset %(zo)g, diameter %(dia)g" -msgstr "刀具 %(tool)d, 偏移 %(zo)g, 直徑 %(dia)g" +#: share/axis/tcl/axis.tcl:400 +msgid "Show machine position" +msgstr "顯示 機床 位置" -#: src/emc/usr_intf/axis/scripts/axis.py:842 -#, python-format -msgid "Tool %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" -msgstr "刀具 %(tool)d, zo %(zo)g, xo %(xo)g, dia %(dia)g" +#: share/axis/tcl/axis.tcl:407 +msgid "Show relative position" +msgstr "顯示 相對 位置" -#: src/emc/usr_intf/axis/scripts/axis.py:1013 -msgid "Filtering..." -msgstr "篩選...." +#: share/axis/tcl/axis.tcl:416 +msgid "Joint mode" +msgstr "Joint 模式" -#: src/emc/usr_intf/axis/scripts/axis.py:1073 -msgid "Filter failed" -msgstr "篩選 失敗" +#: share/axis/tcl/axis.tcl:423 +msgid "World mode" +msgstr "World 模式" -#: src/emc/usr_intf/axis/scripts/axis.py:1074 -#, python-format -msgid "" -"The program %(program)r exited with code %(code)d. Any error messages it " -"produced are shown below:" -msgstr "該程序 %(program)r 退出 的 程式碼 %(code)d. 所有 錯誤信息 產生 如下:" +#: share/axis/tcl/axis.tcl:431 +msgid "_Off" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1139 -#, python-format -msgid "G-Code error in %s" -msgstr "G 代碼 錯誤 在 %s" +#: share/axis/tcl/axis.tcl:437 +#, fuzzy +msgid "_Custom" +msgstr "自訂" -#: src/emc/usr_intf/axis/scripts/axis.py:1140 -#, python-format -msgid "" -"Near line %(seq)d of %(f)s:\n" -"%(error_str)s" +#: share/axis/tcl/axis.tcl:443 +msgid "User_0" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1292 -#: src/emc/usr_intf/axis/scripts/axis.py:2725 share/axis/tcl/axis.tcl:1092 -#: share/axis/tcl/axis.tcl:1094 share/axis/tcl/axis.tcl:2144 -msgid "Continuous" -msgstr "連續" +#: share/axis/tcl/axis.tcl:447 +msgid "User_1" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1403 -msgid "Ok" +#: share/axis/tcl/axis.tcl:451 +msgid "User_2" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1546 -msgid "T Tool Table" -msgstr "T 刀具表" +#: share/axis/tcl/axis.tcl:455 +msgid "User_3" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1557 -#: src/emc/usr_intf/axis/scripts/axis.py:1730 -#: src/emc/usr_intf/stepconf/stepconf.py:1691 -#: src/emc/usr_intf/stepconf/stepconf.py:2235 -msgid "in" -msgstr "英寸" +#: share/axis/tcl/axis.tcl:459 +msgid "User_4" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1560 -msgid " radius" -msgstr " 半徑" +#: share/axis/tcl/axis.tcl:463 +msgid "User_5" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1562 -msgid " diameter" -msgstr " 直徑" +#: share/axis/tcl/axis.tcl:467 +msgid "User_6" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1563 -msgid "°" +#: share/axis/tcl/axis.tcl:471 +msgid "User_7" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1572 -msgid "Coordinate System:" -msgstr "坐標系:" +#: share/axis/tcl/axis.tcl:475 +msgid "User_8" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1588 -msgid "fixture" -msgstr "夾具" +#: share/axis/tcl/axis.tcl:479 +msgid "User_9" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1589 -msgid "workpiece" -msgstr "工件" +#: share/axis/tcl/axis.tcl:491 +msgid "_About AXIS" +msgstr "About AXIS(_A)" -#: src/emc/usr_intf/axis/scripts/axis.py:1605 -msgid "Name:" -msgstr "名稱:" +#: share/axis/tcl/axis.tcl:495 +msgid "Quick _Reference" +msgstr "快速 參考手冊(_R)" -#: src/emc/usr_intf/axis/scripts/axis.py:1605 -msgid "Size:" -msgstr "尺寸:" +#: share/axis/tcl/axis.tcl:505 +msgid "_Machine" +msgstr "機器(_M)" -#: src/emc/usr_intf/axis/scripts/axis.py:1606 -msgid "Tool order:" -msgstr "刀具秩序:" +#: share/axis/tcl/axis.tcl:509 +msgid "_View" +msgstr "視圖(_V)" -#: src/emc/usr_intf/axis/scripts/axis.py:1606 -msgid "Rapid distance:" -msgstr "快速的距離:" +#: share/axis/tcl/axis.tcl:513 +msgid "_User" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1607 -msgid "Feed distance:" -msgstr "進給距離:" +#: share/axis/tcl/axis.tcl:526 +msgid "Toggle Emergency Stop [F1]" +msgstr "切換緊急停止 [F1]" -#: src/emc/usr_intf/axis/scripts/axis.py:1607 -msgid "Total distance:" -msgstr "總距離:" +#: share/axis/tcl/axis.tcl:535 +msgid "Toggle Machine power [F2]" +msgstr "切換設備電源 [F2]" -#: src/emc/usr_intf/axis/scripts/axis.py:1608 -msgid "Run time:" -msgstr "運行時間:" +#: share/axis/tcl/axis.tcl:546 +msgid "Open G-Code file [O]" +msgstr "打開 G-代碼 文件 [O]" -#: src/emc/usr_intf/axis/scripts/axis.py:1608 -msgid "X bounds:" -msgstr "X 範圍:" +#: share/axis/tcl/axis.tcl:554 +msgid "Reopen current file [Control-R]" +msgstr "重新打開 當前 文件 [Control-R]" -#: src/emc/usr_intf/axis/scripts/axis.py:1609 -msgid "Y bounds:" -msgstr "Y 範圍:" +#: share/axis/tcl/axis.tcl:564 +msgid "Begin executing current file [R]" +msgstr "開始 執行 前的檔案 [R]" -#: src/emc/usr_intf/axis/scripts/axis.py:1609 -msgid "Z bounds:" -msgstr "Z 範圍:" +#: share/axis/tcl/axis.tcl:572 +msgid "Execute next line [T]" +msgstr "執行 下一行 [T]" -#: src/emc/usr_intf/axis/scripts/axis.py:1610 -msgid "A bounds:" -msgstr "A 範圍:" +#: share/axis/tcl/axis.tcl:580 +msgid "Pause [P] / resume [S] execution" +msgstr "暫停 [P] / 恢復 [S] 執行" + +#: share/axis/tcl/axis.tcl:588 +msgid "Stop program execution [ESC]" +msgstr "停止 程序 執行 [ESC]" + +#: share/axis/tcl/axis.tcl:598 +msgid "Toggle skip lines with '/' [Alt-M /]" +msgstr "切換 跳 行 用 '/' [Alt-M /]" + +#: share/axis/tcl/axis.tcl:605 +msgid "Toggle optional pause [Alt-M 1]" +msgstr "切換 任擇 停頓 [Alt-M 1]" + +#: share/axis/tcl/axis.tcl:614 src/emc/usr_intf/gmoccapy/gmoccapy.glade:549 +msgid "Zoom in" +msgstr "放大" + +#: share/axis/tcl/axis.tcl:622 src/emc/usr_intf/gmoccapy/gmoccapy.glade:567 +msgid "Zoom out" +msgstr "縮小" -#: src/emc/usr_intf/axis/scripts/axis.py:1610 -msgid "B bounds:" -msgstr "B 範圍:" +#: share/axis/tcl/axis.tcl:630 +msgid "Top view" +msgstr "頂 視圖" -#: src/emc/usr_intf/axis/scripts/axis.py:1611 -msgid "C bounds:" -msgstr "C 範圍:" +#: share/axis/tcl/axis.tcl:638 +msgid "Rotated top view" +msgstr "旋轉的 頂 視圖" -#: src/emc/usr_intf/axis/scripts/axis.py:1635 -#, python-format -msgid "Program exceeds machine minimum on axis %s" -msgstr "程序 超出 机床 最低 限度 在 軸 %s" +#: share/axis/tcl/axis.tcl:646 +msgid "Side view" +msgstr "側面 視圖" -#: src/emc/usr_intf/axis/scripts/axis.py:1638 -#, python-format -msgid "Program exceeds machine maximum on axis %s" -msgstr "程序 超出 机床 最高 限度 在 軸 %s" +#: share/axis/tcl/axis.tcl:654 +msgid "Front view" +msgstr "正面 視圖" -#: src/emc/usr_intf/axis/scripts/axis.py:1643 -msgid "Program exceeds machine limits" -msgstr "程序 超出 机床 極限" +#: share/axis/tcl/axis.tcl:662 +msgid "Perspective view" +msgstr "透視 視圖" -#: src/emc/usr_intf/axis/scripts/axis.py:1646 -msgid "Run Anyway" -msgstr "運行 無論如何" +#: share/axis/tcl/axis.tcl:670 +msgid "Toggle between Drag and Rotate Mode [D]" +msgstr "切換 拖動 和 旋轉模式 之間 [D]" -#: src/emc/usr_intf/axis/scripts/axis.py:1708 -msgid "No file loaded" -msgstr "沒有 文件 加載" +#: share/axis/tcl/axis.tcl:685 +msgid "Clear live plot [Ctrl-K]" +msgstr "清徐 在跑的 繪圖 [Ctrl-K]" -#: src/emc/usr_intf/axis/scripts/axis.py:1716 -#, python-format -msgid "generated from %s" -msgstr "產生 於 %s" +#: share/axis/tcl/axis.tcl:836 +msgid "Manual Control [F3]" +msgstr "手動 控制 [F3]" -#: src/emc/usr_intf/axis/scripts/axis.py:1722 -#, python-format -msgid "" -"%(size)s bytes\n" -"%(lines)s gcode lines" +#: share/axis/tcl/axis.tcl:837 +msgid "MDI [F5]" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1748 -#, python-format -msgid "%.1f minutes" -msgstr "" +#: share/axis/tcl/axis.tcl:851 share/axis/tcl/axis.tcl:2158 +#: share/axis/tcl/axis.tcl:2328 +msgid "Axis:" +msgstr "軸:" -#: src/emc/usr_intf/axis/scripts/axis.py:1750 -#, python-format -msgid "%d seconds" +#: share/axis/tcl/axis.tcl:1172 src/emc/usr_intf/gscreen/gscreen.glade:2944 +msgid "Home Axis" +msgstr "軸回零" + +#: share/axis/tcl/axis.tcl:1246 +msgid "Spindle:" +msgstr "主軸" + +#: share/axis/tcl/axis.tcl:1293 src/emc/usr_intf/touchy/touchy.glade:946 +#: src/emc/usr_intf/stepconf/main_page.glade:406 +#: src/emc/usr_intf/gscreen/gscreen.glade:4067 +msgid "-" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1758 -#, python-format -msgid "%(a)f to %(b)f = %(diff)f %(units)s" +#: share/axis/tcl/axis.tcl:1307 src/emc/usr_intf/stepconf/main_page.glade:403 +#: src/emc/usr_intf/gscreen/gscreen.glade:4056 +msgid "+" msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:1759 -msgid "G-Code Properties" -msgstr "G 代碼 性質" +#: share/axis/tcl/axis.tcl:1312 +msgid "Brake" +msgstr "剎車" -#: src/emc/usr_intf/axis/scripts/axis.py:1883 -msgid "All machinable files" -msgstr "所有 可 加工 文件" +#: share/axis/tcl/axis.tcl:1359 +msgid "Coolant:" +msgstr "冷卻液:" -#: src/emc/usr_intf/axis/scripts/axis.py:1884 -#: src/emc/usr_intf/axis/scripts/axis.py:2464 -msgid "rs274ngc files" -msgstr "rs274ngc 文件" +#: share/axis/tcl/axis.tcl:1364 +msgid "Mist" +msgstr "霧噴" -#: src/emc/usr_intf/axis/scripts/axis.py:1899 -msgid "axis cannot accept remote command while running" -msgstr "軸 不能接受 遠程 指令 在 運行時" +#: share/axis/tcl/axis.tcl:1369 +msgid "Flood" +msgstr "淹浸" -#: src/emc/usr_intf/axis/scripts/axis.py:2255 -msgid "Axis is already homed, are you sure you want to re-home?" -msgstr "軸 已經 在零,你一定要 重新 再 歸零?" +#: share/axis/tcl/axis.tcl:1441 +msgid "History:" +msgstr "歷史:" -#: src/emc/usr_intf/axis/scripts/axis.py:2268 -msgid "This axis is already homed, are you sure you want to re-home?" -msgstr "這軸 已經 在零,你一定要 重新 再 歸零?" +#: share/axis/tcl/axis.tcl:1464 +msgid "MDI Command:" +msgstr "MDI 指令:" -#: src/emc/usr_intf/axis/scripts/axis.py:2308 share/axis/tcl/axis.tcl:1108 -msgid "Touch Off" -msgstr "對刀" +#: share/axis/tcl/axis.tcl:1473 +msgid "Go" +msgstr "前往" -#: src/emc/usr_intf/axis/scripts/axis.py:2309 -#, python-format -msgid "Enter %s coordinate relative to %%s:" -msgstr "輸入 %s 坐標相對於 %%s:" +#: share/axis/tcl/axis.tcl:1479 +msgid "Active G-Codes:" +msgstr "主動 G-代碼:" -#: src/emc/usr_intf/axis/scripts/axis.py:2476 -msgid "Error saving file" -msgstr "保存 文件 時出錯" +#: share/axis/tcl/axis.tcl:1557 src/emc/usr_intf/gmoccapy/gmoccapy.glade:771 +msgid "Preview" +msgstr "預演" -#: src/emc/usr_intf/axis/scripts/axis.py:2859 -#: src/emc/usr_intf/touchy/touchy.glade:577 -msgid "Home All" -msgstr "全部 歸零" +#: share/axis/tcl/axis.tcl:1558 +msgid "DRO" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2861 -msgid "Home all axes [Ctrl-Home]" -msgstr "所有軸 歸零 [Ctrl-Home]" +#: share/axis/tcl/axis.tcl:1645 share/axis/tcl/axis.tcl:1658 +msgid "Jog Speed:" +msgstr "慢步速率:" -#: src/emc/usr_intf/axis/scripts/axis.py:2864 -msgid "Home All Axes" -msgstr "所有軸 歸零" +#: share/axis/tcl/axis.tcl:1670 +msgid "Max Velocity:" +msgstr "最大速率:" -#: src/emc/usr_intf/axis/scripts/axis.py:2871 -msgid "Unhome All Axes" -msgstr "所有軸 離零" +#: share/axis/tcl/axis.tcl:1699 +msgid "Spindle Override:" +msgstr "設定主軸超速:" -#: src/emc/usr_intf/axis/scripts/axis.py:2895 -#, python-format -msgid "Home Axis _%s" -msgstr "歸零 軸 _%s" +#: share/axis/tcl/axis.tcl:1701 share/axis/tcl/axis.tcl:1741 +#: share/axis/tcl/axis.tcl:1779 src/emc/usr_intf/pncconf/pncconf.glade:2834 +#: src/emc/usr_intf/pncconf/pncconf.glade:2845 +#: src/emc/usr_intf/pncconf/pncconf.glade:2949 +#: src/emc/usr_intf/pncconf/pncconf.glade:2962 +#: src/emc/usr_intf/pncconf/pncconf.glade:2975 +#: src/emc/usr_intf/pncconf/pncconf.glade:2988 +#: src/emc/usr_intf/pncconf/pncconf.glade:3001 +#: src/emc/usr_intf/pncconf/pncconf.glade:3014 +#: src/emc/usr_intf/pncconf/pncconf.glade:3127 +#: src/emc/usr_intf/pncconf/pncconf.glade:3140 +#: src/emc/usr_intf/pncconf/pncconf.glade:3153 +#: src/emc/usr_intf/pncconf/pncconf.glade:3166 +#: src/emc/usr_intf/pncconf/pncconf.glade:3179 +#: src/emc/usr_intf/pncconf/pncconf.glade:3192 +#: src/emc/usr_intf/pncconf/pncconf.glade:3205 +#: src/emc/usr_intf/pncconf/pncconf.glade:3218 +#: src/emc/usr_intf/pncconf/pncconf.glade:3715 +#: src/emc/usr_intf/pncconf/pncconf.glade:3726 +#: src/emc/usr_intf/pncconf/pncconf.glade:3830 +#: src/emc/usr_intf/pncconf/pncconf.glade:3843 +#: src/emc/usr_intf/pncconf/pncconf.glade:3856 +#: src/emc/usr_intf/pncconf/pncconf.glade:3869 +#: src/emc/usr_intf/pncconf/pncconf.glade:3882 +#: src/emc/usr_intf/pncconf/pncconf.glade:3895 +#: src/emc/usr_intf/pncconf/pncconf.glade:4008 +#: src/emc/usr_intf/pncconf/pncconf.glade:4021 +#: src/emc/usr_intf/pncconf/pncconf.glade:4034 +#: src/emc/usr_intf/pncconf/pncconf.glade:4047 +#: src/emc/usr_intf/pncconf/pncconf.glade:4060 +#: src/emc/usr_intf/pncconf/pncconf.glade:4073 +#: src/emc/usr_intf/pncconf/pncconf.glade:4086 +#: src/emc/usr_intf/pncconf/pncconf.glade:4099 +#: src/emc/usr_intf/pncconf/pncconf.glade:4596 +#: src/emc/usr_intf/pncconf/pncconf.glade:4607 +#: src/emc/usr_intf/pncconf/pncconf.glade:4711 +#: src/emc/usr_intf/pncconf/pncconf.glade:4724 +#: src/emc/usr_intf/pncconf/pncconf.glade:4737 +#: src/emc/usr_intf/pncconf/pncconf.glade:4750 +#: src/emc/usr_intf/pncconf/pncconf.glade:4763 +#: src/emc/usr_intf/pncconf/pncconf.glade:4776 +#: src/emc/usr_intf/pncconf/pncconf.glade:4889 +#: src/emc/usr_intf/pncconf/pncconf.glade:4902 +#: src/emc/usr_intf/pncconf/pncconf.glade:4915 +#: src/emc/usr_intf/pncconf/pncconf.glade:4928 +#: src/emc/usr_intf/pncconf/pncconf.glade:4941 +#: src/emc/usr_intf/pncconf/pncconf.glade:4954 +#: src/emc/usr_intf/pncconf/pncconf.glade:4967 +#: src/emc/usr_intf/pncconf/pncconf.glade:4980 +#: src/emc/usr_intf/pncconf/pncconf.glade:5631 +#: src/emc/usr_intf/pncconf/pncconf.glade:5643 +#: src/emc/usr_intf/pncconf/pncconf.glade:5690 +msgid "%" +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:2897 -#, python-format -msgid "Unhome Axis _%s" -msgstr "離零 軸 _%s" +#: share/axis/tcl/axis.tcl:1777 +#, fuzzy +msgid "Rapid Override:" +msgstr "設定主軸超速:" -#: src/emc/usr_intf/axis/scripts/axis.py:3040 -msgid "Run from here" -msgstr "從 這裡 運行" +#: share/axis/tcl/axis.tcl:1819 +msgid "" +"Machinekit/AXIS version $version\n" +"\n" +"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff " +"Epler and Chris Radek.\n" +"\n" +"This is free software, and you are welcome to redistribute it under certain " +"conditions. See the file COPYING, included with Machinekit.\n" +"\n" +"Visit the Machinekit web site: " +msgstr "" -#: src/emc/usr_intf/axis/scripts/axis.py:3335 -msgid "Error in ~/.axisrc" -msgstr "錯誤 joi ~/.axisrc" +#: share/axis/tcl/axis.tcl:1847 +msgid "About AXIS" +msgstr "關於 AXIS" -#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:102 -#, fuzzy -msgid "LinuxCNC Status" -msgstr "EMC 狀態" +#: share/axis/tcl/axis.tcl:1876 +msgid "AXIS Quick Reference" +msgstr "AXIS快速參考" -#: src/emc/usr_intf/axis/scripts/linuxcnctop.py:118 -msgid "Copy All" -msgstr "全部 複製" +#: share/axis/tcl/axis.tcl:2017 +msgid "AXIS with MachineKit $::version on $::machine" +msgstr "" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:29 -#, python-format -msgid "Insert tool %d and click continue when ready" -msgstr "插入 刀具 %d 準備 好後 點擊 繼續" +#: share/axis/tcl/axis.tcl:2019 +msgid "(no file)" +msgstr "(無文件)" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:31 -msgid "Remove the tool and click continue when ready" -msgstr "移除 刀具 準備 好後 點擊 繼續" +#: share/axis/tcl/axis.tcl:2091 share/axis/tcl/axis.tcl:2096 +msgid "Position:" +msgstr "位置:" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 -#: src/emc/usr_intf/touchy/mdi.py:49 -msgid "Tool change" -msgstr "換刀" +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/gscreen/gscreen.py:3516 +msgid "Machine" +msgstr "" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:37 -msgid "Continue" -msgstr "繼續" +#: share/axis/tcl/axis.tcl:2093 src/emc/usr_intf/touchy/touchy.glade:155 +msgid "Relative" +msgstr "相對" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:55 -msgid "AXIS Manual Toolchanger" -msgstr "AXIS 手動 換刀" +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3329 +msgid "Actual" +msgstr "實際" -#: src/emc/usr_intf/axis/scripts/hal_manualtoolchange.py:59 -msgid "" -"This window is part of the AXIS manual toolchanger. It is safe to close or " -"iconify this window, or it will close automatically after a few seconds." +#: share/axis/tcl/axis.tcl:2094 src/emc/usr_intf/touchy/touchy.glade:3318 +msgid "Commanded" +msgstr "指揮" + +#: share/axis/tcl/axis.tcl:2154 share/axis/tcl/axis.tcl:2328 +msgid "Joint:" msgstr "" -"這個窗口是 AXIS 手動換刀 的部分.這是安全的結束或圖標化此窗口, 否則將在幾秒鐘" -"後自動關閉." -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:507 -#, python-format -msgid "%s: Image to gcode" -msgstr "%s: 圖片 到 G代碼" +#: share/axis/tcl/axis.tcl:2463 +msgid "Turn spindle counterclockwise [F10]" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:508 -msgid "Image to gcode" -msgstr "圖片 到 G代碼" +#: share/axis/tcl/axis.tcl:2464 +msgid "Turn spindle clockwise [F9]" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:518 -#, python-format -msgid "" -"Image size: %(w)d x %(h)d pixels\n" -"Minimum pixel value: %(min)d\n" -"Maximum pixel value: %(max)d" +#: share/axis/tcl/axis.tcl:2465 +msgid "Stop spindle [F9/F10]" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 -msgid "G20 (in)" +#: share/axis/tcl/axis.tcl:2466 +msgid "Turn spindle Faster [F12]" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:608 -msgid "G21 (mm)" +#: share/axis/tcl/axis.tcl:2467 +msgid "Turn spindle Slower [F11]" msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 -#: src/emc/usr_intf/touchy/emc_interface.py:417 -msgid "None" -msgstr "無" +#: share/axis/tcl/axis.tcl:2468 +msgid "Turn spindle brake on [Shift-B] or off [B]" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 -msgid "White" -msgstr "白" +#: share/axis/tcl/axis.tcl:2469 +msgid "Turn flood on or off [F8]" +msgstr "開啟 或 關閉 浸淹 [F8]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:611 -msgid "Black" -msgstr "黑" +#: share/axis/tcl/axis.tcl:2470 +msgid "Turn mist on or off [F7]" +msgstr "開啟 或 關閉 霧噴 [F7]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Rows" -msgstr "行" +#: share/axis/tcl/axis.tcl:2471 +msgid "Send active axis home [Home]" +msgstr "送 活躍 軸 歸零 [Home]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Columns" -msgstr "列" +#: share/axis/tcl/axis.tcl:2472 +msgid "Set G54 offset for active axis [End]" +msgstr "設定 G54 偏移 給 活動軸 [End]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Rows then Columns" -msgstr "" +#: share/axis/tcl/axis.tcl:2473 +msgid "Activate axis [X]" +msgstr "激活軸 [X]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:617 -msgid "Columns then Rows" -msgstr "行 然後 列" +#: share/axis/tcl/axis.tcl:2474 +msgid "Activate axis [Y]" +msgstr "激活軸 [Y]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Positive" -msgstr "正" +#: share/axis/tcl/axis.tcl:2475 +msgid "Activate axis [Z]" +msgstr "激活軸 [Z]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Negative" -msgstr "負" +#: share/axis/tcl/axis.tcl:2476 +msgid "Activate axis [A]" +msgstr "激活軸 [A]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Alternating" -msgstr "交替" +#: share/axis/tcl/axis.tcl:2477 +msgid "Activate axis [4]" +msgstr "激活軸 [4]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Up Milling" -msgstr "向上銑削" +#: share/axis/tcl/axis.tcl:2478 +msgid "Activate axis [5]" +msgstr "激活軸 [5]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:618 -msgid "Down Milling" -msgstr "向下銑削" +#: share/axis/tcl/axis.tcl:2479 share/axis/tcl/axis.tcl:2480 +msgid "Jog selected axis" +msgstr "慢步 選定 的軸" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "Ball End" -msgstr "球頭" +#: share/axis/tcl/axis.tcl:2482 +msgid "Temporarily allow jogging outside machine limits [L]" +msgstr "暫時 讓 機器 在 極限外 慢步 [L]" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "Flat End" -msgstr "平尾" +#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:47 +msgid "Spindle CW" +msgstr "主軸 順時針" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "30 Degree" -msgstr "30 度" +#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 src/emc/usr_intf/gscreen/mdi.py:48 +msgid "Spindle CCW" +msgstr "主軸 逆時針" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "45 Degree" -msgstr "45 度" +#: src/emc/usr_intf/touchy/mdi.py:50 +#, fuzzy +msgid "Set tool number" +msgstr "記下" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:623 -msgid "60 Degree" -msgstr "60 度" +#: src/emc/usr_intf/touchy/mdi.py:51 src/emc/usr_intf/gscreen/mdi.py:50 +msgid "Input control" +msgstr "輸入 控制" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 -msgid "Secondary" -msgstr "次要" +#: src/emc/usr_intf/touchy/mdi.py:54 src/emc/usr_intf/touchy/mdi.py:55 +#: src/emc/usr_intf/gscreen/mdi.py:53 src/emc/usr_intf/gscreen/mdi.py:54 +msgid "Straight rapid" +msgstr "直 快速" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:624 -msgid "Full" -msgstr "全" +#: src/emc/usr_intf/touchy/mdi.py:56 src/emc/usr_intf/touchy/mdi.py:57 +#: src/emc/usr_intf/gscreen/mdi.py:55 src/emc/usr_intf/gscreen/mdi.py:56 +msgid "Straight feed" +msgstr "直 進給" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:654 -msgid "Invert Image" -msgstr "反轉 圖像" +#: src/emc/usr_intf/touchy/mdi.py:58 src/emc/usr_intf/touchy/mdi.py:59 +#: src/emc/usr_intf/gscreen/mdi.py:57 src/emc/usr_intf/gscreen/mdi.py:58 +msgid "Arc CW" +msgstr "弧 順時針" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:655 -msgid "Normalize Image" -msgstr "規範化 的 圖像" +#: src/emc/usr_intf/touchy/mdi.py:60 src/emc/usr_intf/touchy/mdi.py:61 +#: src/emc/usr_intf/gscreen/mdi.py:59 src/emc/usr_intf/gscreen/mdi.py:60 +msgid "Arc CCW" +msgstr "弧 反時針" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:656 -msgid "Extend Image Border" -msgstr "擴充圖像邊界" +#: src/emc/usr_intf/touchy/mdi.py:62 src/emc/usr_intf/touchy/mdi.py:63 +#: src/emc/usr_intf/gscreen/mdi.py:61 src/emc/usr_intf/gscreen/mdi.py:62 +msgid "Dwell" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:657 -msgid "Pixel Size (Units)" -msgstr "像素尺寸(單位)" +#: src/emc/usr_intf/touchy/mdi.py:64 src/emc/usr_intf/gscreen/mdi.py:63 +msgid "Setup" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:658 -msgid "Depth (units)" -msgstr "深度(單位)" +#: src/emc/usr_intf/touchy/mdi.py:65 src/emc/usr_intf/gscreen/mdi.py:64 +msgid "Spindle synchronized feed" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:659 -msgid "Tolerance (units)" -msgstr "公差(單位)" +#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:65 +msgid "Rigid tap" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:660 -msgid "Stepover (pixels)" -msgstr "步距宽度(像素)" +#: src/emc/usr_intf/touchy/mdi.py:67 src/emc/usr_intf/touchy/mdi.py:68 +#: src/emc/usr_intf/touchy/mdi.py:69 src/emc/usr_intf/touchy/mdi.py:70 +#: src/emc/usr_intf/gscreen/mdi.py:66 src/emc/usr_intf/gscreen/mdi.py:67 +#: src/emc/usr_intf/gscreen/mdi.py:68 src/emc/usr_intf/gscreen/mdi.py:69 +msgid "Probe" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:661 -msgid "Tool Diameter (units)" -msgstr "刀具直徑(單位)" +#: src/emc/usr_intf/touchy/mdi.py:71 src/emc/usr_intf/gscreen/mdi.py:70 +msgid "Radius compensation left" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:662 -msgid "Tool Type" -msgstr "刀具 類型" +#: src/emc/usr_intf/touchy/mdi.py:72 src/emc/usr_intf/gscreen/mdi.py:71 +msgid "Radius compensation right" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:663 -msgid "Feed Rate (units per minute)" -msgstr "進給 速度(單位/每分鐘)" +#: src/emc/usr_intf/touchy/mdi.py:73 src/emc/usr_intf/gscreen/mdi.py:72 +msgid "Radius compensation left, immediate" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:664 -msgid "Plunge Feed Rate (units per minute)" -msgstr "切入 進給 速度(單位/每分鐘)" +#: src/emc/usr_intf/touchy/mdi.py:74 src/emc/usr_intf/gscreen/mdi.py:73 +msgid "Radius compensation right, immediate" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:666 -msgid "Safety Height (units)" -msgstr "安全高度(單位)" +#: src/emc/usr_intf/touchy/mdi.py:75 src/emc/usr_intf/gscreen/mdi.py:74 +msgid "Tool length offset" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:667 -msgid "Scan Pattern" -msgstr "掃描 圖形" +#: src/emc/usr_intf/touchy/mdi.py:76 src/emc/usr_intf/gscreen/mdi.py:75 +msgid "Tool length offset immediate" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:668 -msgid "Scan Direction" -msgstr "掃描方向" +#: src/emc/usr_intf/touchy/mdi.py:77 src/emc/usr_intf/gscreen/mdi.py:76 +msgid "Motion in unoffset coordinates" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:669 -msgid "Lace Bounding" -msgstr "花邊 定界" +#: src/emc/usr_intf/touchy/mdi.py:78 src/emc/usr_intf/gscreen/mdi.py:77 +msgid "Continuous mode" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:670 -msgid "Contact Angle (degrees)" -msgstr "接觸角(度)" +#: src/emc/usr_intf/touchy/mdi.py:80 src/emc/usr_intf/gscreen/mdi.py:79 +msgid "Drill" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:671 -msgid "Spindle Speed (RPM)" -msgstr "主軸 轉速(RPM)" +#: src/emc/usr_intf/touchy/mdi.py:81 src/emc/usr_intf/gscreen/mdi.py:80 +msgid "Drill with dwell" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:672 -msgid "Roughing offset (units, 0=no roughing)" -msgstr "粗加工 偏移量(單位,0=無粗加工)" +#: src/emc/usr_intf/touchy/mdi.py:82 src/emc/usr_intf/gscreen/mdi.py:81 +msgid "Peck drill" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:673 -msgid "Roughing depth per pass (units)" -msgstr "每 通過 粗加工 的 深度(單位)" +#: src/emc/usr_intf/touchy/mdi.py:83 src/emc/usr_intf/gscreen/mdi.py:82 +msgid "Chip-break drill" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:740 -msgid "image-to-gcode: User pressed cancel" -msgstr "圖像 到 G代碼:用戶 按下 取消" +#: src/emc/usr_intf/touchy/mdi.py:84 src/emc/usr_intf/gscreen/mdi.py:83 +msgid "Bore" +msgstr "" -#: src/emc/usr_intf/axis/scripts/image-to-gcode.py:753 -msgid "Depth images" -msgstr "深度 圖像" +#: src/emc/usr_intf/touchy/mdi.py:85 src/emc/usr_intf/gscreen/mdi.py:84 +msgid "Bore with dwell" +msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:22 -#, fuzzy -msgid "LinuxCNC Debug Level" -msgstr "EMC2 偵錯層級" +#: src/emc/usr_intf/touchy/mdi.py:86 src/emc/usr_intf/gscreen/mdi.py:85 +msgid "Offset all coordinate systems" +msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:23 -msgid "debuglevel" -msgstr "偵錯層級" +#: src/emc/usr_intf/touchy/mdi.py:87 src/emc/usr_intf/gscreen/mdi.py:86 +msgid "CSS Mode" +msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:36 -msgid "Configuration *" -msgstr "配 置 *" +#: src/emc/usr_intf/touchy/emc_interface.py:410 +msgid "CCW" +msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:37 -msgid "Version Numbers *" -msgstr "版本號 *" +#: src/emc/usr_intf/touchy/emc_interface.py:410 +msgid "Stopped" +msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:38 -msgid "NML *" +#: src/emc/usr_intf/touchy/emc_interface.py:410 +msgid "CW" msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:39 -msgid "RCS *" +#: src/emc/usr_intf/touchy/touchy.glade:7 +msgid "LinuxCNC/Touchy" msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:40 -msgid "Task Issue" -msgstr "任務 發行" +#. # Touchy is Copyright (c) 2009 Chris Radek # # Touchy 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 2 of the License, or # (at your option) any later version. # # Touchy 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. +#: src/emc/usr_intf/touchy/touchy.glade:11 +msgid "window1" +msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:41 -msgid "Motion Time" -msgstr "動作 時間" +#: src/emc/usr_intf/touchy/touchy.glade:31 +msgid "xa" +msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:43 -msgid "Interpreter List" -msgstr "解釋器名單" +#: src/emc/usr_intf/touchy/touchy.glade:44 +msgid "xd" +msgstr "" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:47 -#, python-format -msgid "" -"Inifile setting for this debug level:\n" -"[EMC]DEBUG=0x%08x" +#: src/emc/usr_intf/touchy/touchy.glade:57 +msgid "yr" msgstr "" -"INI文件設置對這個偵錯層級:\n" -"[EMC]DEBUG=0x%08x" -#: src/emc/usr_intf/axis/scripts/debuglevel.py:81 -msgid " * This option can only be enabled in the inifile" -msgstr " *這個 選項 只能在 ini 文件 啟用" +#: src/emc/usr_intf/touchy/touchy.glade:68 +msgid "ya" +msgstr "" -#: share/axis/tcl/axis.tcl:49 -msgid "_Open..." -msgstr "打開(_O)" +#: src/emc/usr_intf/touchy/touchy.glade:81 +msgid "yd" +msgstr "" -#: share/axis/tcl/axis.tcl:53 -msgid "Recent _Files" -msgstr "最近打開的文件(_F)" +#: src/emc/usr_intf/touchy/touchy.glade:94 +msgid "zr" +msgstr "" -#: share/axis/tcl/axis.tcl:57 -msgid "_Edit..." -msgstr "編輯(_E)..." +#: src/emc/usr_intf/touchy/touchy.glade:105 +msgid "za" +msgstr "" -#: share/axis/tcl/axis.tcl:60 -msgid "Ctrl-R" +#: src/emc/usr_intf/touchy/touchy.glade:118 +msgid "zd" msgstr "" -#: share/axis/tcl/axis.tcl:62 -msgid "_Reload" -msgstr "重新載入(_R)" +#: src/emc/usr_intf/touchy/touchy.glade:131 +#: src/emc/usr_intf/gscreen/gscreen.glade:85 +#: src/emc/usr_intf/gscreen/gscreen.glade:213 +#: src/emc/usr_intf/gscreen/gscreen.glade:343 +#: src/emc/usr_intf/gscreen/gscreen.glade:471 +#: src/emc/usr_intf/gscreen/gscreen.glade:599 +#: src/emc/usr_intf/gscreen/gscreen.glade:727 +#: src/emc/usr_intf/gscreen/gscreen.glade:855 +#: src/emc/usr_intf/gscreen/gscreen.glade:983 +#: src/emc/usr_intf/gscreen/gscreen.glade:1111 +msgid "DTG" +msgstr "" -#: share/axis/tcl/axis.tcl:65 -msgid "Ctrl-S" +#: src/emc/usr_intf/touchy/touchy.glade:143 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Absolute" msgstr "" -#: share/axis/tcl/axis.tcl:67 -msgid "_Save gcode as..." -msgstr "保存G代碼為(_S)..." +#: src/emc/usr_intf/touchy/touchy.glade:165 +msgid "xr" +msgstr "" -#: share/axis/tcl/axis.tcl:71 -msgid "_Properties..." -msgstr "屬性(_P)......" +#: src/emc/usr_intf/touchy/touchy.glade:176 +msgid "ar" +msgstr "" -#: share/axis/tcl/axis.tcl:77 -msgid "Edit _tool table..." -msgstr "編輯刀具表(_t)...." +#: src/emc/usr_intf/touchy/touchy.glade:188 +msgid "br" +msgstr "" -#: share/axis/tcl/axis.tcl:81 -msgid "Reload tool ta_ble" -msgstr "重新載入刀具表(_b)" +#: src/emc/usr_intf/touchy/touchy.glade:200 +msgid "cr" +msgstr "" -#: share/axis/tcl/axis.tcl:87 -msgid "_Ladder Editor..." -msgstr "梯形圖編輯器(_L)...." +#: src/emc/usr_intf/touchy/touchy.glade:212 +msgid "ur" +msgstr "" -#: share/axis/tcl/axis.tcl:99 -msgid "Toggle _Emergency Stop" -msgstr "切換緊急停止(_E).." +#: src/emc/usr_intf/touchy/touchy.glade:224 +msgid "vr" +msgstr "" -#: share/axis/tcl/axis.tcl:104 -msgid "Toggle _Machine Power" -msgstr "切換設備電源(_M).." +#: src/emc/usr_intf/touchy/touchy.glade:236 +msgid "wr" +msgstr "" -#: share/axis/tcl/axis.tcl:111 -msgid "_Run program" -msgstr "運行程序(_R)" +#: src/emc/usr_intf/touchy/touchy.glade:248 +msgid "aa" +msgstr "" -#: share/axis/tcl/axis.tcl:115 -msgid "Ru_n from selected line" -msgstr "運行選定的行(_n)" +#: src/emc/usr_intf/touchy/touchy.glade:262 +msgid "ba" +msgstr "" -#: share/axis/tcl/axis.tcl:120 -msgid "S_tep" -msgstr "步伐(_t)" +#: src/emc/usr_intf/touchy/touchy.glade:276 +msgid "ca" +msgstr "" -#: share/axis/tcl/axis.tcl:125 -msgid "_Pause" -msgstr "暫停(_P)" +#: src/emc/usr_intf/touchy/touchy.glade:290 +msgid "ua" +msgstr "" -#: share/axis/tcl/axis.tcl:130 -msgid "Re_sume" -msgstr "恢復(_s)" +#: src/emc/usr_intf/touchy/touchy.glade:304 +msgid "va" +msgstr "" -#: share/axis/tcl/axis.tcl:140 -msgid "Stop at M_1" -msgstr "停止在 M_1" +#: src/emc/usr_intf/touchy/touchy.glade:318 +msgid "wa" +msgstr "" -#: share/axis/tcl/axis.tcl:145 -msgid "Skip lines with '_/'" -msgstr "略過 行 以 '_/'" +#: src/emc/usr_intf/touchy/touchy.glade:332 +msgid "ad" +msgstr "" -#: share/axis/tcl/axis.tcl:150 -msgid "Ctrl-M" +#: src/emc/usr_intf/touchy/touchy.glade:346 +msgid "bd" msgstr "" -#: share/axis/tcl/axis.tcl:152 -msgid "Clear MDI h_istory" -msgstr "清除 MDI 歷史(_i)" +#: src/emc/usr_intf/touchy/touchy.glade:360 +msgid "cd" +msgstr "" -#: share/axis/tcl/axis.tcl:154 -msgid "Ctrl-H" +#: src/emc/usr_intf/touchy/touchy.glade:374 +msgid "ud" msgstr "" -#: share/axis/tcl/axis.tcl:156 -msgid "Copy from MDI hist_ory" -msgstr "從 MDI 歷史複製(_o)" +#: src/emc/usr_intf/touchy/touchy.glade:388 +msgid "vd" +msgstr "" -#: share/axis/tcl/axis.tcl:158 -msgid "Ctrl-Shift-H" +#: src/emc/usr_intf/touchy/touchy.glade:402 +msgid "wd" msgstr "" -#: share/axis/tcl/axis.tcl:160 -msgid "Paste to MDI histor_y" -msgstr "粘貼到MDI歷史(_y)" +#: src/emc/usr_intf/touchy/touchy.glade:448 +msgid "Estop Reset" +msgstr "Estop復位" -#: share/axis/tcl/axis.tcl:166 -msgid "_Calibration" -msgstr "校準(_C)" +#: src/emc/usr_intf/touchy/touchy.glade:459 +#: src/emc/usr_intf/stepconf/pport1.glade:21 +#: src/emc/usr_intf/stepconf/pport2.glade:1409 +#: src/emc/usr_intf/gscreen/gscreen.glade:2442 +msgid "Estop" +msgstr "" -#: share/axis/tcl/axis.tcl:170 -msgid "Show _Hal Configuration" -msgstr "顯示 HA L配置" +#: src/emc/usr_intf/touchy/touchy.glade:475 +msgid "Machine On" +msgstr "機器開" -#: share/axis/tcl/axis.tcl:174 -msgid "H_al Meter" -msgstr "HAL 儀表(_a)" +#: src/emc/usr_intf/touchy/touchy.glade:490 +msgid "Machine Off" +msgstr "機器關" -#: share/axis/tcl/axis.tcl:178 -msgid "Ha_l Scope" -msgstr "HAL 示波器(_l)" +#: src/emc/usr_intf/touchy/touchy.glade:531 +msgid "Power" +msgstr "電源" -#: share/axis/tcl/axis.tcl:182 -#, fuzzy -msgid "Sho_w LinuxCNC Status" -msgstr "顯示 EMC 現狀(_w)" +#: src/emc/usr_intf/touchy/touchy.glade:562 +msgid "Unhome All" +msgstr "離零" -#: share/axis/tcl/axis.tcl:186 -msgid "Set _Debug Level" -msgstr "設置偵錯層級(_D)" +#: src/emc/usr_intf/touchy/touchy.glade:588 +msgid "Home Selected" +msgstr "選擇歸零" -#: share/axis/tcl/axis.tcl:192 -msgid "Homin_g" -msgstr "歸零(_g)" +#: src/emc/usr_intf/touchy/touchy.glade:603 +msgid "Unhome Selected" +msgstr "選擇離零" -#: share/axis/tcl/axis.tcl:196 -msgid "_Unhoming" -msgstr "離零(_U)" +#: src/emc/usr_intf/touchy/touchy.glade:625 +msgid "Homing" +msgstr "歸零" -#: share/axis/tcl/axis.tcl:200 -msgid "_Zero coordinate system" -msgstr "坐標系統為零(_Z)" +#: src/emc/usr_intf/touchy/touchy.glade:644 +msgid "Startup" +msgstr "啟動" -#: share/axis/tcl/axis.tcl:204 -msgid "P1 G5_4" +#: src/emc/usr_intf/touchy/touchy.glade:727 +msgid "G" msgstr "" -#: share/axis/tcl/axis.tcl:208 -msgid "P2 G5_5" +#: src/emc/usr_intf/touchy/touchy.glade:929 +msgid "." msgstr "" -#: share/axis/tcl/axis.tcl:212 -msgid "P3 G5_6" +#: src/emc/usr_intf/touchy/touchy.glade:963 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "0" msgstr "" -#: share/axis/tcl/axis.tcl:216 -msgid "P4 G5_7" +#: src/emc/usr_intf/touchy/touchy.glade:980 +msgid "3" msgstr "" -#: share/axis/tcl/axis.tcl:220 -msgid "P5 G5_8" +#: src/emc/usr_intf/touchy/touchy.glade:997 +msgid "2" msgstr "" -#: share/axis/tcl/axis.tcl:224 -msgid "P6 G5_9" +#: src/emc/usr_intf/touchy/touchy.glade:1014 +msgid "1" msgstr "" -#: share/axis/tcl/axis.tcl:228 -msgid "P7 G59._1" +#: src/emc/usr_intf/touchy/touchy.glade:1031 +msgid "6" msgstr "" -#: share/axis/tcl/axis.tcl:232 -msgid "P8 G59._2" +#: src/emc/usr_intf/touchy/touchy.glade:1048 +msgid "5" msgstr "" -#: share/axis/tcl/axis.tcl:236 -msgid "P9 G59._3" +#: src/emc/usr_intf/touchy/touchy.glade:1065 +msgid "4" msgstr "" -#: share/axis/tcl/axis.tcl:240 -msgid "_G92" +#: src/emc/usr_intf/touchy/touchy.glade:1082 +msgid "9" msgstr "" -#: share/axis/tcl/axis.tcl:248 -msgid "Tool touch off to wor_kpiece" -msgstr "刀具 對 工件 對刀(_k)" - -#: share/axis/tcl/axis.tcl:254 -msgid "Tool touch off to _fixture" -msgstr "刀具 對 夾具 對刀(_f)" +#: src/emc/usr_intf/touchy/touchy.glade:1097 +msgid "8" +msgstr "" -#: share/axis/tcl/axis.tcl:262 -msgid "_Top view" -msgstr "頂 視圖(_T)" +#: src/emc/usr_intf/touchy/touchy.glade:1112 +msgid "7" +msgstr "" -#: share/axis/tcl/axis.tcl:269 -msgid "_Rotated Top view" -msgstr "旋轉的 頂 視圖(_R)" +#: src/emc/usr_intf/touchy/touchy.glade:1297 +msgid "Flood On" +msgstr "浸淹 開" -#: share/axis/tcl/axis.tcl:276 -msgid "_Side view" -msgstr "側面 視圖(_S)" +#: src/emc/usr_intf/touchy/touchy.glade:1308 +msgid "Flood Off" +msgstr "浸淹 關" -#: share/axis/tcl/axis.tcl:283 -msgid "_Front view" -msgstr "正面 視圖(_F)" +#: src/emc/usr_intf/touchy/touchy.glade:1324 +msgid "Mist On" +msgstr "噴霧 開" -#: share/axis/tcl/axis.tcl:290 -msgid "_Perspective view" -msgstr "透視 視圖(_P)" +#: src/emc/usr_intf/touchy/touchy.glade:1339 +msgid "Mist Off" +msgstr "噴霧 關" -#: share/axis/tcl/axis.tcl:299 -msgid "Display _Inches" -msgstr "顯示英寸(_I)" +#: src/emc/usr_intf/touchy/touchy.glade:1362 +msgid "Coolant" +msgstr "冷卻液" -#: share/axis/tcl/axis.tcl:306 -msgid "Display _MM" -msgstr "顯示 MM(_M)" +#: src/emc/usr_intf/touchy/touchy.glade:1448 +msgid "Spindle Off" +msgstr "主軸 關" -#: share/axis/tcl/axis.tcl:313 -msgid "S_how program" -msgstr "顯示程序(_h)" +#: src/emc/usr_intf/touchy/touchy.glade:1501 +#: src/emc/usr_intf/touchy/touchy.glade:2578 +msgid "Spindle speed:" +msgstr "主軸轉速:" -#: share/axis/tcl/axis.tcl:318 -msgid "Show program r_apids" -msgstr "顯示程序快速(_a)" +#: src/emc/usr_intf/touchy/touchy.glade:1513 +#: src/emc/usr_intf/touchy/touchy.glade:2707 +msgid "label26" +msgstr "" -#: share/axis/tcl/axis.tcl:323 -msgid "Alpha-_blend program" -msgstr "Alpha融合程序(_b)" +#: src/emc/usr_intf/touchy/touchy.glade:1539 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4226 +msgid "Spindle" +msgstr "主軸" -#: share/axis/tcl/axis.tcl:328 -msgid "Sho_w live plot" -msgstr "顯示 現場 繪圖(_w)" +#: src/emc/usr_intf/touchy/touchy.glade:1597 +msgid "file.ngc" +msgstr "" -#: share/axis/tcl/axis.tcl:333 -msgid "Show too_l" -msgstr "顯示 刀具(_l)" +#: src/emc/usr_intf/touchy/touchy.glade:1812 +#: src/emc/usr_intf/touchy/touchy.glade:2017 +#: src/emc/usr_intf/touchy/touchy.glade:2037 +#: src/emc/usr_intf/touchy/touchy.glade:2057 +#: src/emc/usr_intf/touchy/touchy.glade:2077 +#: src/emc/usr_intf/touchy/touchy.glade:2097 +#: src/emc/usr_intf/touchy/touchy.glade:2117 +#: src/emc/usr_intf/touchy/touchy.glade:2137 +#: src/emc/usr_intf/touchy/touchy.glade:2157 +#: src/emc/usr_intf/touchy/touchy.glade:2177 +msgid "M2" +msgstr "" -#: share/axis/tcl/axis.tcl:338 -msgid "Show e_xtents" -msgstr "顯示 擴展(_x)" +#: src/emc/usr_intf/touchy/touchy.glade:2244 +#: src/emc/usr_intf/touchy/touchy.glade:2374 +msgid "Page" +msgstr "" -#: share/axis/tcl/axis.tcl:343 -msgid "Show o_ffsets" -msgstr "顯示 偏移量(_f)" +#: src/emc/usr_intf/touchy/touchy.glade:2308 +msgid "Start Point" +msgstr "" -#: share/axis/tcl/axis.tcl:348 -msgid "Sh_ow machine limits" -msgstr "顯示 機器 極限(_o)" +#: src/emc/usr_intf/touchy/touchy.glade:2452 +msgid "Loaded File" +msgstr "" -#: share/axis/tcl/axis.tcl:353 -msgid "Show v_elocity" -msgstr "顯示 速率(_e)" +#: src/emc/usr_intf/touchy/touchy.glade:2488 +msgid "Loaded file:" +msgstr "" -#: share/axis/tcl/axis.tcl:358 -msgid "Show _distance to go" -msgstr "顯示 往前 距離(_d)" +#: src/emc/usr_intf/touchy/touchy.glade:2499 +msgid "Interpreted line:" +msgstr "" -#: share/axis/tcl/axis.tcl:363 -msgid "Large coordinate fo_nt" -msgstr "大坐標的字體(_n)" +#: src/emc/usr_intf/touchy/touchy.glade:2513 +msgid "Distance:" +msgstr "" -#: share/axis/tcl/axis.tcl:366 -msgid "Ctrl-K" +#: src/emc/usr_intf/touchy/touchy.glade:2526 +#: src/emc/usr_intf/stepconf/main_page.glade:23 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Velocity:" msgstr "" -#: share/axis/tcl/axis.tcl:368 -msgid "_Clear live plot" -msgstr "清除 現場 繪圖(_C)" +#: src/emc/usr_intf/touchy/touchy.glade:2539 +msgid "Delay:" +msgstr "" -#: share/axis/tcl/axis.tcl:377 -msgid "Show commanded position" -msgstr "顯示 命令的 位置" +#: src/emc/usr_intf/touchy/touchy.glade:2552 +msgid "On limit switch:" +msgstr "" -#: share/axis/tcl/axis.tcl:384 -msgid "Show actual position" -msgstr "顯示 實際 位置" +#: src/emc/usr_intf/touchy/touchy.glade:2565 +msgid "Spindle direction:" +msgstr "" -#: share/axis/tcl/axis.tcl:393 -msgid "Show machine position" -msgstr "顯示 機床 位置" +#: src/emc/usr_intf/touchy/touchy.glade:2591 +msgid "Loaded tool:" +msgstr "" -#: share/axis/tcl/axis.tcl:400 -msgid "Show relative position" -msgstr "顯示 相對 位置" +#: src/emc/usr_intf/touchy/touchy.glade:2604 +#: src/emc/usr_intf/touchy/touchy.glade:2955 +msgid "label19" +msgstr "" -#: share/axis/tcl/axis.tcl:409 -msgid "Joint mode" -msgstr "Joint 模式" +#: src/emc/usr_intf/touchy/touchy.glade:2617 +msgid "label20" +msgstr "" -#: share/axis/tcl/axis.tcl:416 -msgid "World mode" -msgstr "World 模式" +#: src/emc/usr_intf/touchy/touchy.glade:2632 +#: src/emc/usr_intf/touchy/touchy.glade:2779 +#: src/emc/usr_intf/touchy/touchy.glade:2808 +#: src/emc/usr_intf/touchy/touchy.glade:2912 +#: src/emc/usr_intf/touchy/touchy.glade:2927 +msgid "label21" +msgstr "" -#: share/axis/tcl/axis.tcl:425 -msgid "_About AXIS" -msgstr "About AXIS(_A)" +#: src/emc/usr_intf/touchy/touchy.glade:2647 +msgid "label22" +msgstr "" -#: share/axis/tcl/axis.tcl:429 -msgid "Quick _Reference" -msgstr "快速 參考手冊(_R)" +#: src/emc/usr_intf/touchy/touchy.glade:2662 +msgid "label23" +msgstr "" -#: share/axis/tcl/axis.tcl:439 -msgid "_Machine" -msgstr "機器(_M)" +#: src/emc/usr_intf/touchy/touchy.glade:2677 +msgid "label24" +msgstr "" -#: share/axis/tcl/axis.tcl:443 -msgid "_View" -msgstr "視圖(_V)" +#: src/emc/usr_intf/touchy/touchy.glade:2692 +msgid "label25" +msgstr "" -#: share/axis/tcl/axis.tcl:456 -msgid "Toggle Emergency Stop [F1]" -msgstr "切換緊急停止 [F1]" +#: src/emc/usr_intf/touchy/touchy.glade:2722 +msgid "label27" +msgstr "" -#: share/axis/tcl/axis.tcl:465 -msgid "Toggle Machine power [F2]" -msgstr "切換設備電源 [F2]" +#: src/emc/usr_intf/touchy/touchy.glade:2737 +msgid "Prepped tool:" +msgstr "" -#: share/axis/tcl/axis.tcl:476 -msgid "Open G-Code file [O]" -msgstr "打開 G-代碼 文件 [O]" +#: src/emc/usr_intf/touchy/touchy.glade:2750 +msgid "label28" +msgstr "" -#: share/axis/tcl/axis.tcl:484 -msgid "Reopen current file [Control-R]" -msgstr "重新打開 當前 文件 [Control-R]" +#: src/emc/usr_intf/touchy/touchy.glade:2765 +msgid "Running line:" +msgstr "" -#: share/axis/tcl/axis.tcl:494 -msgid "Begin executing current file [R]" -msgstr "開始 執行 前的檔案 [R]" +#: src/emc/usr_intf/touchy/touchy.glade:2794 +msgid "XY Rotation:" +msgstr "" -#: share/axis/tcl/axis.tcl:502 -msgid "Execute next line [T]" -msgstr "執行 下一行 [T]" +#: src/emc/usr_intf/touchy/touchy.glade:2823 +msgid "Tool length:" +msgstr "" -#: share/axis/tcl/axis.tcl:510 -msgid "Pause [P] / resume [S] execution" -msgstr "暫停 [P] / 恢復 [S] 執行" +#: src/emc/usr_intf/touchy/touchy.glade:2836 +msgid "label52" +msgstr "" -#: share/axis/tcl/axis.tcl:518 -msgid "Stop program execution [ESC]" -msgstr "停止 程序 執行 [ESC]" +#: src/emc/usr_intf/touchy/touchy.glade:2851 +msgid "" +"G1 G2 G3\n" +"M1 M2 M3\n" +"F1 S1" +msgstr "" -#: share/axis/tcl/axis.tcl:528 -msgid "Toggle skip lines with '/' [Alt-M /]" -msgstr "切換 跳 行 用 '/' [Alt-M /]" +#: src/emc/usr_intf/touchy/touchy.glade:2870 +msgid "Active codes:" +msgstr "" -#: share/axis/tcl/axis.tcl:535 -msgid "Toggle optional pause [Alt-M 1]" -msgstr "切換 任擇 停頓 [Alt-M 1]" +#: src/emc/usr_intf/touchy/touchy.glade:2883 +msgid "G5x Offset:" +msgstr "" -#: share/axis/tcl/axis.tcl:544 -msgid "Zoom in" -msgstr "放大" +#: src/emc/usr_intf/touchy/touchy.glade:2898 +msgid "G92 Offset:" +msgstr "" -#: share/axis/tcl/axis.tcl:552 -msgid "Zoom out" -msgstr "縮小" +#: src/emc/usr_intf/touchy/touchy.glade:2942 +msgid "Loaded file lines:" +msgstr "" -#: share/axis/tcl/axis.tcl:560 -msgid "Top view" -msgstr "頂 視圖" +#: src/emc/usr_intf/touchy/touchy.glade:2971 +msgid "Pockets:" +msgstr "" -#: share/axis/tcl/axis.tcl:568 -msgid "Rotated top view" -msgstr "旋轉的 頂 視圖" +#: src/emc/usr_intf/touchy/touchy.glade:2984 +msgid "" +"1\n" +"2\n" +"3" +msgstr "" -#: share/axis/tcl/axis.tcl:576 -msgid "Side view" -msgstr "側面 視圖" +#: src/emc/usr_intf/touchy/touchy.glade:3009 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6414 +msgid "Status" +msgstr "" -#: share/axis/tcl/axis.tcl:584 -msgid "Front view" -msgstr "正面 視圖" +#: src/emc/usr_intf/touchy/touchy.glade:3038 +msgid "Control Font:" +msgstr "" -#: share/axis/tcl/axis.tcl:592 -msgid "Perspective view" -msgstr "透視 視圖" +#: src/emc/usr_intf/touchy/touchy.glade:3050 +msgid "DRO Font:" +msgstr "" -#: share/axis/tcl/axis.tcl:600 -msgid "Toggle between Drag and Rotate Mode [D]" -msgstr "切換 拖動 和 旋轉模式 之間 [D]" +#: src/emc/usr_intf/touchy/touchy.glade:3064 +msgid "Error Font:" +msgstr "" -#: share/axis/tcl/axis.tcl:615 -msgid "Clear live plot [Ctrl-K]" -msgstr "清徐 在跑的 繪圖 [Ctrl-K]" +#: src/emc/usr_intf/touchy/touchy.glade:3081 +msgid "ControlFont" +msgstr "" -#: share/axis/tcl/axis.tcl:766 -msgid "Manual Control [F3]" -msgstr "手動 控制 [F3]" +#: src/emc/usr_intf/touchy/touchy.glade:3100 +msgid "DRO Font" +msgstr "" -#: share/axis/tcl/axis.tcl:767 -msgid "MDI [F5]" +#: src/emc/usr_intf/touchy/touchy.glade:3121 +msgid "Error Font" msgstr "" -#: share/axis/tcl/axis.tcl:781 share/axis/tcl/axis.tcl:2036 -#: share/axis/tcl/axis.tcl:2203 -msgid "Axis:" -msgstr "軸:" +#: src/emc/usr_intf/touchy/touchy.glade:3139 +msgid "Listing Font:" +msgstr "" -#: share/axis/tcl/axis.tcl:1102 -msgid "Home Axis" -msgstr "軸回零" +#: src/emc/usr_intf/touchy/touchy.glade:3156 +msgid "Listing Font" +msgstr "" -#: share/axis/tcl/axis.tcl:1176 -msgid "Spindle:" -msgstr "主軸" +#: src/emc/usr_intf/touchy/touchy.glade:3176 +msgid "Hide pointer" +msgstr "" -#: share/axis/tcl/axis.tcl:1223 src/emc/usr_intf/touchy/touchy.glade:946 -msgid "-" +#: src/emc/usr_intf/touchy/touchy.glade:3187 +msgid "Show pointer" msgstr "" -#: share/axis/tcl/axis.tcl:1237 -msgid "+" +#: src/emc/usr_intf/touchy/touchy.glade:3214 +msgid "Theme:" msgstr "" -#: share/axis/tcl/axis.tcl:1242 -msgid "Brake" -msgstr "剎車" +#: src/emc/usr_intf/touchy/touchy.glade:3228 +#, fuzzy +msgid "default\n" +msgstr "AXIS 預 置 值" -#: share/axis/tcl/axis.tcl:1289 -msgid "Coolant:" -msgstr "冷卻液:" +#: src/emc/usr_intf/touchy/touchy.glade:3252 +msgid "Display Options" +msgstr "" -#: share/axis/tcl/axis.tcl:1294 -msgid "Mist" -msgstr "霧噴" +#: src/emc/usr_intf/touchy/touchy.glade:3286 +#: src/emc/usr_intf/stepconf/base.glade:867 +#: src/emc/usr_intf/gscreen/gscreen.glade:3664 +msgid "Inch" +msgstr "" -#: share/axis/tcl/axis.tcl:1299 -msgid "Flood" -msgstr "淹浸" +#: src/emc/usr_intf/touchy/touchy.glade:3349 +msgid "Position Readout" +msgstr "" -#: share/axis/tcl/axis.tcl:1371 -msgid "History:" -msgstr "歷史:" +#: src/emc/usr_intf/touchy/touchy.glade:3379 +msgid "Workpiece" +msgstr "" -#: share/axis/tcl/axis.tcl:1394 -msgid "MDI Command:" -msgstr "MDI 指令:" +#: src/emc/usr_intf/touchy/touchy.glade:3390 +msgid "Fixture" +msgstr "" -#: share/axis/tcl/axis.tcl:1403 -msgid "Go" -msgstr "前往" +#: src/emc/usr_intf/touchy/touchy.glade:3410 +msgid "Tool Setting" +msgstr "" -#: share/axis/tcl/axis.tcl:1409 -msgid "Active G-Codes:" -msgstr "主動 G-代碼:" +#: src/emc/usr_intf/touchy/touchy.glade:3441 +msgid "Delete / lines" +msgstr "" -#: share/axis/tcl/axis.tcl:1487 -msgid "Preview" -msgstr "預演" +#: src/emc/usr_intf/touchy/touchy.glade:3456 +msgid "Keep / lines" +msgstr "" -#: share/axis/tcl/axis.tcl:1488 -msgid "DRO" +#: src/emc/usr_intf/touchy/touchy.glade:3473 +msgid "Pause on M1" +msgstr "" + +#: src/emc/usr_intf/touchy/touchy.glade:3484 +msgid "Ignore M1" msgstr "" -#: share/axis/tcl/axis.tcl:1575 share/axis/tcl/axis.tcl:1588 -msgid "Jog Speed:" -msgstr "慢步速率:" +#: src/emc/usr_intf/touchy/touchy.glade:3504 +msgid "Program Options" +msgstr "" -#: share/axis/tcl/axis.tcl:1600 -msgid "Max Velocity:" -msgstr "最大速率:" +#: src/emc/usr_intf/touchy/touchy.glade:3531 +#: src/emc/usr_intf/gscreen/gscreen.glade:2200 +msgid "Preferences" +msgstr "" -#: share/axis/tcl/axis.tcl:1629 -msgid "Spindle Override:" -msgstr "設定主軸超速:" +#: src/emc/usr_intf/touchy/touchy.glade:3567 +#: src/emc/usr_intf/gscreen/gscreen.glade:1425 +msgid "FO: 100%" +msgstr "" -#: share/axis/tcl/axis.tcl:1631 share/axis/tcl/axis.tcl:1671 -#: src/emc/usr_intf/pncconf/pncconf.glade:3141 -#: src/emc/usr_intf/pncconf/pncconf.glade:3154 -#: src/emc/usr_intf/pncconf/pncconf.glade:3167 -#: src/emc/usr_intf/pncconf/pncconf.glade:3180 -#: src/emc/usr_intf/pncconf/pncconf.glade:3193 -#: src/emc/usr_intf/pncconf/pncconf.glade:3206 -#: src/emc/usr_intf/pncconf/pncconf.glade:3219 -#: src/emc/usr_intf/pncconf/pncconf.glade:3232 -#: src/emc/usr_intf/pncconf/pncconf.glade:3345 -#: src/emc/usr_intf/pncconf/pncconf.glade:3358 -#: src/emc/usr_intf/pncconf/pncconf.glade:3371 -#: src/emc/usr_intf/pncconf/pncconf.glade:3384 -#: src/emc/usr_intf/pncconf/pncconf.glade:3397 -#: src/emc/usr_intf/pncconf/pncconf.glade:3410 -#: src/emc/usr_intf/pncconf/pncconf.glade:3516 -#: src/emc/usr_intf/pncconf/pncconf.glade:3527 -#: src/emc/usr_intf/pncconf/pncconf.glade:4022 -#: src/emc/usr_intf/pncconf/pncconf.glade:4035 -#: src/emc/usr_intf/pncconf/pncconf.glade:4048 -#: src/emc/usr_intf/pncconf/pncconf.glade:4061 -#: src/emc/usr_intf/pncconf/pncconf.glade:4074 -#: src/emc/usr_intf/pncconf/pncconf.glade:4087 -#: src/emc/usr_intf/pncconf/pncconf.glade:4100 -#: src/emc/usr_intf/pncconf/pncconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:4226 -#: src/emc/usr_intf/pncconf/pncconf.glade:4239 -#: src/emc/usr_intf/pncconf/pncconf.glade:4252 -#: src/emc/usr_intf/pncconf/pncconf.glade:4265 -#: src/emc/usr_intf/pncconf/pncconf.glade:4278 -#: src/emc/usr_intf/pncconf/pncconf.glade:4291 -#: src/emc/usr_intf/pncconf/pncconf.glade:4397 -#: src/emc/usr_intf/pncconf/pncconf.glade:4408 -#: src/emc/usr_intf/pncconf/pncconf.glade:4903 -#: src/emc/usr_intf/pncconf/pncconf.glade:4916 -#: src/emc/usr_intf/pncconf/pncconf.glade:4929 -#: src/emc/usr_intf/pncconf/pncconf.glade:4942 -#: src/emc/usr_intf/pncconf/pncconf.glade:4955 -#: src/emc/usr_intf/pncconf/pncconf.glade:4968 -#: src/emc/usr_intf/pncconf/pncconf.glade:4981 -#: src/emc/usr_intf/pncconf/pncconf.glade:4994 -#: src/emc/usr_intf/pncconf/pncconf.glade:5107 -#: src/emc/usr_intf/pncconf/pncconf.glade:5120 -#: src/emc/usr_intf/pncconf/pncconf.glade:5133 -#: src/emc/usr_intf/pncconf/pncconf.glade:5146 -#: src/emc/usr_intf/pncconf/pncconf.glade:5159 -#: src/emc/usr_intf/pncconf/pncconf.glade:5172 -#: src/emc/usr_intf/pncconf/pncconf.glade:5278 -#: src/emc/usr_intf/pncconf/pncconf.glade:5289 -#: src/emc/usr_intf/pncconf/pncconf.glade:5582 -#: src/emc/usr_intf/pncconf/pncconf.glade:5631 -#: src/emc/usr_intf/pncconf/pncconf.glade:5641 -msgid "%" +#: src/emc/usr_intf/touchy/touchy.glade:3582 +#: src/emc/usr_intf/gscreen/gscreen.glade:1437 +msgid "SO: 100%" msgstr "" -#: share/axis/tcl/axis.tcl:1711 -msgid "" -"LinuxCNC/AXIS version $version\n" -"\n" -"Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Jeff Epler and Chris " -"Radek.\n" -"\n" -"This is free software, and you are welcome to redistribute it under certain " -"conditions. See the file COPYING, included with LinuxCNC.\n" -"\n" -"Visit the LinuxCNC web site: " +#: src/emc/usr_intf/touchy/touchy.glade:3596 +msgid "MV: 100" msgstr "" -#: share/axis/tcl/axis.tcl:1739 -msgid "About AXIS" -msgstr "關於 AXIS" +#: src/emc/usr_intf/touchy/touchy.glade:3610 +msgid "Jogging" +msgstr "" -#: share/axis/tcl/axis.tcl:1768 -msgid "AXIS Quick Reference" -msgstr "AXIS快速參考" +#: src/emc/usr_intf/touchy/touchy.glade:3624 +msgid "Start Point" +msgstr "" -#: share/axis/tcl/axis.tcl:1903 -msgid "AXIS $::version on $::machine" +#: src/emc/usr_intf/touchy/touchy.glade:3651 +msgid ".01" msgstr "" -#: share/axis/tcl/axis.tcl:1905 -msgid "(no file)" -msgstr "(無文件)" +#: src/emc/usr_intf/touchy/touchy.glade:3664 +msgid ".001" +msgstr "" -#: share/axis/tcl/axis.tcl:1976 share/axis/tcl/axis.tcl:1981 -msgid "Position:" -msgstr "位置:" +#: src/emc/usr_intf/touchy/touchy.glade:3680 +msgid ".0001" +msgstr "" -#: share/axis/tcl/axis.tcl:1978 -msgid "Machine" +#: src/emc/usr_intf/touchy/touchy.glade:3708 +msgid " X " msgstr "" -#: share/axis/tcl/axis.tcl:1978 src/emc/usr_intf/touchy/touchy.glade:155 -msgid "Relative" -msgstr "相對" +#: src/emc/usr_intf/touchy/touchy.glade:3720 +msgid " Y " +msgstr "" -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3329 -msgid "Actual" -msgstr "實際" +#: src/emc/usr_intf/touchy/touchy.glade:3735 +msgid " Z " +msgstr "" -#: share/axis/tcl/axis.tcl:1979 src/emc/usr_intf/touchy/touchy.glade:3318 -msgid "Commanded" -msgstr "指揮" +#: src/emc/usr_intf/touchy/touchy.glade:3750 +msgid " A " +msgstr "" -#: share/axis/tcl/axis.tcl:2032 share/axis/tcl/axis.tcl:2203 -msgid "Joint:" +#: src/emc/usr_intf/touchy/touchy.glade:3766 +msgid " B " msgstr "" -#: share/axis/tcl/axis.tcl:2338 -msgid "Turn spindle counterclockwise [F10]" +#: src/emc/usr_intf/touchy/touchy.glade:3784 +msgid " C " msgstr "" -#: share/axis/tcl/axis.tcl:2339 -msgid "Turn spindle clockwise [F9]" +#: src/emc/usr_intf/touchy/touchy.glade:3802 +msgid " U " msgstr "" -#: share/axis/tcl/axis.tcl:2340 -msgid "Stop spindle [F9/F10]" +#: src/emc/usr_intf/touchy/touchy.glade:3818 +msgid " V " msgstr "" -#: share/axis/tcl/axis.tcl:2341 -msgid "Turn spindle Faster [F12]" +#: src/emc/usr_intf/touchy/touchy.glade:3836 +msgid " W " msgstr "" -#: share/axis/tcl/axis.tcl:2342 -msgid "Turn spindle Slower [F11]" +#: src/emc/usr_intf/touchy/touchy.glade:3869 +msgid "Handwheel" msgstr "" -#: share/axis/tcl/axis.tcl:2343 -msgid "Turn spindle brake on [Shift-B] or off [B]" +#: src/emc/usr_intf/stepconf/stepconf.py:57 +msgid "" +"Stepconf encountered an error. The following information may be useful in " +"troubleshooting:\n" +"\n" msgstr "" -#: share/axis/tcl/axis.tcl:2344 -msgid "Turn flood on or off [F8]" -msgstr "開啟 或 關閉 浸淹 [F8]" +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#, fuzzy +msgid "Stepconf" +msgstr "步進" -#: share/axis/tcl/axis.tcl:2345 -msgid "Turn mist on or off [F7]" -msgstr "開啟 或 關閉 霧噴 [F7]" +#: src/emc/usr_intf/stepconf/stepconf.py:128 +#: src/emc/usr_intf/stepconf/stepconf.py:217 +#: src/emc/usr_intf/stepconf/main_page.glade:557 +#: src/emc/usr_intf/gscreen/gscreen.py:3414 +#: src/emc/usr_intf/gscreen/gscreen.py:3415 +#: src/emc/usr_intf/gscreen/gscreen.glade:4043 +#, fuzzy +msgid "Start" +msgstr "啟動" -#: share/axis/tcl/axis.tcl:2346 -msgid "Send active axis home [Home]" -msgstr "送 活躍 軸 歸零 [Home]" +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Base Information" +msgstr "版本訊息" -#: share/axis/tcl/axis.tcl:2347 -msgid "Set G54 offset for active axis [End]" -msgstr "設定 G54 偏移 給 活動軸 [End]" +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Parallel Port 1" +msgstr "第一並行端口設置" -#: share/axis/tcl/axis.tcl:2348 -msgid "Activate axis [X]" -msgstr "激活軸 [X]" +#: src/emc/usr_intf/stepconf/stepconf.py:129 +#, fuzzy +msgid "Parallel Port 2" +msgstr "第一並行端口設置" -#: share/axis/tcl/axis.tcl:2349 -msgid "Activate axis [Y]" -msgstr "激活軸 [Y]" +#: src/emc/usr_intf/stepconf/stepconf.py:130 +#, fuzzy +msgid "Options" +msgstr "GUI 的選項 " -#: share/axis/tcl/axis.tcl:2350 -msgid "Activate axis [Z]" -msgstr "激活軸 [Z]" +#: src/emc/usr_intf/stepconf/stepconf.py:130 +#, fuzzy +msgid "Axis X" +msgstr "軸 " -#: share/axis/tcl/axis.tcl:2351 -msgid "Activate axis [A]" -msgstr "激活軸 [A]" +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis Y" +msgstr "軸 " -#: share/axis/tcl/axis.tcl:2352 -msgid "Activate axis [4]" -msgstr "激活軸 [4]" +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis Z" +msgstr "軸 " -#: share/axis/tcl/axis.tcl:2353 -msgid "Activate axis [5]" -msgstr "激活軸 [5]" +#: src/emc/usr_intf/stepconf/stepconf.py:131 +#, fuzzy +msgid "Axis A" +msgstr "軸 " -#: share/axis/tcl/axis.tcl:2354 share/axis/tcl/axis.tcl:2355 -msgid "Jog selected axis" -msgstr "慢步 選定 的軸" +#: src/emc/usr_intf/stepconf/stepconf.py:132 +#: src/emc/usr_intf/pncconf/pncconf.py:378 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +msgid "Spindle" +msgstr "" -#: share/axis/tcl/axis.tcl:2357 -msgid "Temporarily allow jogging outside machine limits [L]" -msgstr "暫時 讓 機器 在 極限外 慢步 [L]" +#: src/emc/usr_intf/stepconf/stepconf.py:132 +msgid "Almost Done" +msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:47 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -msgid "Spindle CW" -msgstr "主軸 順時針" +#: src/emc/usr_intf/stepconf/stepconf.py:136 +#: src/emc/usr_intf/pncconf/pncconf.py:135 +msgid "Gecko 201" +msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:48 src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -msgid "Spindle CCW" -msgstr "主軸 逆時針" +#: src/emc/usr_intf/stepconf/stepconf.py:137 +#: src/emc/usr_intf/pncconf/pncconf.py:136 +msgid "Gecko 202" +msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:50 -msgid "Input control" -msgstr "輸入 控制" +#: src/emc/usr_intf/stepconf/stepconf.py:138 +#: src/emc/usr_intf/pncconf/pncconf.py:137 +msgid "Gecko 203v" +msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:53 src/emc/usr_intf/touchy/mdi.py:54 -msgid "Straight rapid" -msgstr "直 快速" +#: src/emc/usr_intf/stepconf/stepconf.py:139 +#: src/emc/usr_intf/pncconf/pncconf.py:138 +msgid "Gecko 210" +msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:55 src/emc/usr_intf/touchy/mdi.py:56 -msgid "Straight feed" -msgstr "直 進給" +#: src/emc/usr_intf/stepconf/stepconf.py:140 +#: src/emc/usr_intf/pncconf/pncconf.py:139 +msgid "Gecko 212" +msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:57 src/emc/usr_intf/touchy/mdi.py:58 -msgid "Arc CW" -msgstr "弧 順時針" +#: src/emc/usr_intf/stepconf/stepconf.py:141 +#: src/emc/usr_intf/pncconf/pncconf.py:140 +msgid "Gecko 320" +msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:59 src/emc/usr_intf/touchy/mdi.py:60 -msgid "Arc CCW" -msgstr "弧 反時針" +#: src/emc/usr_intf/stepconf/stepconf.py:142 +#: src/emc/usr_intf/pncconf/pncconf.py:141 +msgid "Gecko 540" +msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:61 src/emc/usr_intf/touchy/mdi.py:62 -msgid "Dwell" +#: src/emc/usr_intf/stepconf/stepconf.py:143 +#: src/emc/usr_intf/pncconf/pncconf.py:142 +msgid "L297" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:63 -msgid "Setup" +#: src/emc/usr_intf/stepconf/stepconf.py:144 +#: src/emc/usr_intf/pncconf/pncconf.py:143 +msgid "PMDX-150" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:64 -msgid "Spindle synchronized feed" +#: src/emc/usr_intf/stepconf/stepconf.py:145 +#: src/emc/usr_intf/stepconf/pport1.glade:32 +#: src/emc/usr_intf/pncconf/pncconf.py:144 +msgid "Sherline" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:65 -msgid "Rigid tap" +#: src/emc/usr_intf/stepconf/stepconf.py:146 +#: src/emc/usr_intf/pncconf/pncconf.py:145 +msgid "Xylotex 8S-3" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:66 src/emc/usr_intf/touchy/mdi.py:67 -#: src/emc/usr_intf/touchy/mdi.py:68 src/emc/usr_intf/touchy/mdi.py:69 -msgid "Probe" +#: src/emc/usr_intf/stepconf/stepconf.py:147 +#: src/emc/usr_intf/pncconf/pncconf.py:146 +msgid "Parker-Compumotor oem750" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:70 -msgid "Radius compensation left" +#: src/emc/usr_intf/stepconf/stepconf.py:148 +#: src/emc/usr_intf/pncconf/pncconf.py:147 +msgid "JVL-SMD41 or 42" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:71 -msgid "Radius compensation right" +#: src/emc/usr_intf/stepconf/stepconf.py:149 +#: src/emc/usr_intf/pncconf/pncconf.py:148 +msgid "Hobbycnc Pro Chopper" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:72 -msgid "Radius compensation left, immediate" +#: src/emc/usr_intf/stepconf/stepconf.py:150 +msgid "Kelling 4030" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:73 -msgid "Radius compensation right, immediate" +#: src/emc/usr_intf/stepconf/stepconf.py:151 +msgid "Leadshine Series" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:74 -msgid "Tool length offset" +#: src/emc/usr_intf/stepconf/stepconf.py:190 +msgid "X Step" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:75 -msgid "Tool length offset immediate" +#: src/emc/usr_intf/stepconf/stepconf.py:190 +msgid "X Direction" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:76 -msgid "Motion in unoffset coordinates" +#: src/emc/usr_intf/stepconf/stepconf.py:190 +msgid "Y Step" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:77 -msgid "Continuous mode" +#: src/emc/usr_intf/stepconf/stepconf.py:190 +msgid "Y Direction" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:79 -msgid "Drill" +#: src/emc/usr_intf/stepconf/stepconf.py:191 +msgid "Z Step" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:80 -msgid "Drill with dwell" +#: src/emc/usr_intf/stepconf/stepconf.py:191 +msgid "Z Direction" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:81 -msgid "Peck drill" +#: src/emc/usr_intf/stepconf/stepconf.py:191 +msgid "A Step" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:82 -msgid "Chip-break drill" +#: src/emc/usr_intf/stepconf/stepconf.py:191 +msgid "A Direction" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:83 -msgid "Bore" +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 +msgid "Spindle ON" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:84 -msgid "Bore with dwell" +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:488 +msgid "Spindle PWM" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:85 -msgid "Offset all coordinate systems" +#: src/emc/usr_intf/stepconf/stepconf.py:192 +#: src/emc/usr_intf/pncconf/pncconf.py:368 +msgid "Spindle Brake" msgstr "" -#: src/emc/usr_intf/touchy/mdi.py:86 -msgid "CSS Mode" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 +msgid "Coolant Mist" msgstr "" -#: src/emc/usr_intf/touchy/emc_interface.py:410 -msgid "CCW" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:369 +msgid "Coolant Flood" msgstr "" -#: src/emc/usr_intf/touchy/emc_interface.py:410 -msgid "Stopped" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "ESTOP Out" msgstr "" -#: src/emc/usr_intf/touchy/emc_interface.py:410 -msgid "CW" +#: src/emc/usr_intf/stepconf/stepconf.py:193 +msgid "Amplifier Enable" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:7 -msgid "LinuxCNC/Touchy" +#: src/emc/usr_intf/stepconf/stepconf.py:194 +#: src/emc/usr_intf/pncconf/pncconf.py:371 +msgid "Charge Pump" msgstr "" -#. # Touchy is Copyright (c) 2009 Chris Radek # # Touchy 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 2 of the License, or # (at your option) any later version. # # Touchy 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. -#: src/emc/usr_intf/touchy/touchy.glade:11 -msgid "window1" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 0" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:31 -msgid "xa" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 1" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:44 -msgid "xd" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 2" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:57 -msgid "yr" +#: src/emc/usr_intf/stepconf/stepconf.py:195 +#: src/emc/usr_intf/pncconf/pncconf.py:372 +msgid "Digital out 3" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:68 -msgid "ya" +#: src/emc/usr_intf/stepconf/stepconf.py:196 +#: src/emc/usr_intf/stepconf/stepconf.py:215 +#: src/emc/usr_intf/stepconf/pport1.glade:18 +#: src/emc/usr_intf/stepconf/pport2.glade:1406 +#: src/emc/usr_intf/stepconf/pport2.glade:1420 +msgid "Unused" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:81 -msgid "yd" +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 +msgid "ESTOP In" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:94 -msgid "zr" +#: src/emc/usr_intf/stepconf/stepconf.py:198 +#: src/emc/usr_intf/pncconf/pncconf.py:400 +msgid "Probe In" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:199 +msgid "Spindle Index" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:199 +msgid "Spindle Phase A" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:199 +msgid "Spindle Phase B" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:200 +msgid "Home X" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:200 +msgid "Home Y" +msgstr "" + +#: src/emc/usr_intf/stepconf/stepconf.py:200 +msgid "Home Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:105 -msgid "za" +#: src/emc/usr_intf/stepconf/stepconf.py:200 +msgid "Home A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:118 -msgid "zd" +#: src/emc/usr_intf/stepconf/stepconf.py:201 +msgid "Minimum Limit + Home X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:131 -msgid "DTG" +#: src/emc/usr_intf/stepconf/stepconf.py:201 +msgid "Minimum Limit + Home Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:143 -#: src/emc/usr_intf/pncconf/pncconf.glade:59755 -msgid "Absolute" +#: src/emc/usr_intf/stepconf/stepconf.py:202 +msgid "Minimum Limit + Home Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:165 -msgid "xr" +#: src/emc/usr_intf/stepconf/stepconf.py:202 +msgid "Minimum Limit + Home A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:176 -msgid "ar" +#: src/emc/usr_intf/stepconf/stepconf.py:203 +msgid "Maximum Limit + Home X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:188 -msgid "br" +#: src/emc/usr_intf/stepconf/stepconf.py:203 +msgid "Maximum Limit + Home Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:200 -msgid "cr" +#: src/emc/usr_intf/stepconf/stepconf.py:204 +msgid "Maximum Limit + Home Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:212 -msgid "ur" +#: src/emc/usr_intf/stepconf/stepconf.py:204 +msgid "Maximum Limit + Home A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:224 -msgid "vr" +#: src/emc/usr_intf/stepconf/stepconf.py:205 +msgid "Both Limit + Home X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:236 -msgid "wr" +#: src/emc/usr_intf/stepconf/stepconf.py:205 +msgid "Both Limit + Home Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:248 -msgid "aa" +#: src/emc/usr_intf/stepconf/stepconf.py:206 +msgid "Both Limit + Home Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:262 -msgid "ba" +#: src/emc/usr_intf/stepconf/stepconf.py:206 +msgid "Both Limit + Home A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:276 -msgid "ca" +#: src/emc/usr_intf/stepconf/stepconf.py:207 +msgid "Minimum Limit X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:290 -msgid "ua" +#: src/emc/usr_intf/stepconf/stepconf.py:207 +msgid "Minimum Limit Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:304 -msgid "va" +#: src/emc/usr_intf/stepconf/stepconf.py:208 +msgid "Minimum Limit Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:318 -msgid "wa" +#: src/emc/usr_intf/stepconf/stepconf.py:208 +msgid "Minimum Limit A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:332 -msgid "ad" +#: src/emc/usr_intf/stepconf/stepconf.py:209 +msgid "Maximum Limit X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:346 -msgid "bd" +#: src/emc/usr_intf/stepconf/stepconf.py:209 +msgid "Maximum Limit Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:360 -msgid "cd" +#: src/emc/usr_intf/stepconf/stepconf.py:210 +msgid "Maximum Limit Z" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:374 -msgid "ud" +#: src/emc/usr_intf/stepconf/stepconf.py:210 +msgid "Maximum Limit A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:388 -msgid "vd" +#: src/emc/usr_intf/stepconf/stepconf.py:211 +msgid "Both Limit X" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:402 -msgid "wd" +#: src/emc/usr_intf/stepconf/stepconf.py:211 +msgid "Both Limit Y" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:448 -msgid "Estop Reset" -msgstr "Estop復位" +#: src/emc/usr_intf/stepconf/stepconf.py:212 +msgid "Both Limit Z" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:459 -msgid "Estop" +#: src/emc/usr_intf/stepconf/stepconf.py:212 +msgid "Both Limit A" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:475 -msgid "Machine On" -msgstr "機器開" +#: src/emc/usr_intf/stepconf/stepconf.py:213 +msgid "All limits" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:490 -msgid "Machine Off" -msgstr "機器關" +#: src/emc/usr_intf/stepconf/stepconf.py:213 +msgid "All home" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:531 -msgid "Power" -msgstr "電源" +#: src/emc/usr_intf/stepconf/stepconf.py:213 +msgid "All limits + homes" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:562 -msgid "Unhome All" -msgstr "離零" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 0" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:588 -msgid "Home Selected" -msgstr "選擇歸零" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 1" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:603 -msgid "Unhome Selected" -msgstr "選擇離零" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 2" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:625 -msgid "Homing" -msgstr "歸零" +#: src/emc/usr_intf/stepconf/stepconf.py:214 +#: src/emc/usr_intf/pncconf/pncconf.py:391 +msgid "Digital in 3" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:644 -msgid "Startup" -msgstr "啟動" +#: src/emc/usr_intf/stepconf/stepconf.py:218 +#, fuzzy +msgid "Forward" +msgstr "主軸 前轉" -#: src/emc/usr_intf/touchy/touchy.glade:727 -msgid "G" +#: src/emc/usr_intf/stepconf/stepconf.py:219 +msgid "Done" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:929 -msgid "." +#: src/emc/usr_intf/stepconf/stepconf.py:220 +msgid "" +"OK to replace existing custom ladder program?\n" +"Existing Custom.clp will be renamed custom_backup.clp.\n" +"Any existing file named -custom_backup.clp- will be lost. " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:963 -#: src/emc/usr_intf/pncconf/pncconf.glade:60883 -#: src/emc/usr_intf/pncconf/pncconf.glade:60895 -#: src/emc/usr_intf/pncconf/pncconf.glade:61017 -#: src/emc/usr_intf/pncconf/pncconf.glade:61029 -#: src/emc/usr_intf/pncconf/pncconf.glade:61041 -#: src/emc/usr_intf/pncconf/pncconf.glade:61053 -#: src/emc/usr_intf/pncconf/pncconf.glade:61065 -#: src/emc/usr_intf/pncconf/pncconf.glade:61077 -#: src/emc/usr_intf/pncconf/pncconf.glade:62040 -#: src/emc/usr_intf/pncconf/pncconf.glade:62052 -#: src/emc/usr_intf/pncconf/pncconf.glade:62064 -#: src/emc/usr_intf/pncconf/pncconf.glade:62076 -#: src/emc/usr_intf/pncconf/pncconf.glade:62088 -#: src/emc/usr_intf/pncconf/pncconf.glade:62100 -#: src/emc/usr_intf/pncconf/pncconf.glade:62222 -#: src/emc/usr_intf/pncconf/pncconf.glade:62234 -#: src/emc/usr_intf/pncconf/pncconf.glade:63069 -#: src/emc/usr_intf/pncconf/pncconf.glade:63081 -#: src/emc/usr_intf/pncconf/pncconf.glade:63203 -#: src/emc/usr_intf/pncconf/pncconf.glade:63215 -#: src/emc/usr_intf/pncconf/pncconf.glade:63227 -#: src/emc/usr_intf/pncconf/pncconf.glade:63239 -#: src/emc/usr_intf/pncconf/pncconf.glade:63251 -#: src/emc/usr_intf/pncconf/pncconf.glade:63263 -#: src/emc/usr_intf/pncconf/pncconf.glade:64226 -#: src/emc/usr_intf/pncconf/pncconf.glade:64238 -#: src/emc/usr_intf/pncconf/pncconf.glade:64250 -#: src/emc/usr_intf/pncconf/pncconf.glade:64262 -#: src/emc/usr_intf/pncconf/pncconf.glade:64274 -#: src/emc/usr_intf/pncconf/pncconf.glade:64286 -#: src/emc/usr_intf/pncconf/pncconf.glade:64408 -#: src/emc/usr_intf/pncconf/pncconf.glade:64420 -#: src/emc/usr_intf/pncconf/pncconf.glade:65231 -#: src/emc/usr_intf/pncconf/pncconf.glade:65243 -#: src/emc/usr_intf/pncconf/pncconf.glade:65359 -#: src/emc/usr_intf/pncconf/pncconf.glade:65371 -#: src/emc/usr_intf/pncconf/pncconf.glade:65383 -#: src/emc/usr_intf/pncconf/pncconf.glade:65395 -#: src/emc/usr_intf/pncconf/pncconf.glade:65407 -#: src/emc/usr_intf/pncconf/pncconf.glade:65419 -#: src/emc/usr_intf/pncconf/pncconf.glade:67091 -msgid "0" +#: src/emc/usr_intf/stepconf/stepconf.py:221 +#: src/emc/usr_intf/pncconf/pncconf.py:8163 +msgid "" +"You edited a ladder program and have selected a different program to copy to " +"your configuration file.\n" +"The edited program will be lost.\n" +"\n" +"Are you sure? " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:980 -msgid "3" +#: src/emc/usr_intf/stepconf/stepconf.py:222 +msgid "" +"You need to designate an E-stop input pin in the Parallel Port Setup page " +"for this program." msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:997 -msgid "2" +#: src/emc/usr_intf/stepconf/stepconf.py:223 +msgid "" +"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" +"Existing custompanel.xml and custom_postgui.hal will be renamed " +"custompanel_backup.xml and postgui_backup.hal.\n" +"Any existing file named custompanel_backup.xml and custom_postgui.hal will " +"be lost. " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1014 -msgid "1" +#: src/emc/usr_intf/stepconf/stepconf.py:224 +msgid "Quit Stepconf and discard changes?" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1031 -msgid "6" +#: src/emc/usr_intf/stepconf/stepconf.py:225 +msgid "" +"The configuration has been built and saved.\n" +"Do you want to quit?" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1048 -msgid "5" +#: src/emc/usr_intf/stepconf/stepconf.py:226 +msgid "" +"You are using a simulated-realtime version of Machinekit, so testing / " +"tuning of hardware is unavailable." msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1065 -msgid "4" +#: src/emc/usr_intf/stepconf/stepconf.py:227 +#, python-format +msgid "" +"You are using a realtime version of Machinekit but didn't load a realtime " +"kernel so testing / tuning of hardware is unavailable.\n" +"This is possibly because you updated the OS and it doesn't automatically " +"load the RTAI kernel anymore.\n" +"You are using the %(actual)s kernel.\n" +"You need to use kernel:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1082 -msgid "9" +#: src/emc/usr_intf/stepconf/stepconf.py:246 +msgid "my-mill" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1097 -msgid "8" +#: src/emc/usr_intf/stepconf/stepconf.py:585 +#, python-format +msgid "File %r was modified since it was written by stepconf" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1112 -msgid "7" +#: src/emc/usr_intf/stepconf/stepconf.py:588 +msgid "" +"Saving this configuration file will discard configuration changes made " +"outside stepconf." msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1297 -msgid "Flood On" -msgstr "浸淹 開" - -#: src/emc/usr_intf/touchy/touchy.glade:1308 -msgid "Flood Off" -msgstr "浸淹 關" - -#: src/emc/usr_intf/touchy/touchy.glade:1324 -msgid "Mist On" -msgstr "噴霧 開" +#: src/emc/usr_intf/stepconf/stepconf.py:603 +#: src/emc/usr_intf/pncconf/pncconf.py:1318 +msgid "Continue? " +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1339 -msgid "Mist Off" -msgstr "噴霧 關" +#: src/emc/usr_intf/stepconf/stepconf.py:604 +#: src/emc/usr_intf/pncconf/pncconf.py:1319 +msgid "yY" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1362 -msgid "Coolant" -msgstr "冷卻液" +#: src/emc/usr_intf/stepconf/stepconf.py:689 +#: src/emc/usr_intf/pncconf/pncconf.py:3591 +#, python-format +msgid "launch %s" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1448 -msgid "Spindle Off" -msgstr "主軸 關" +#: src/emc/usr_intf/stepconf/stepconf.py:693 +#, fuzzy +msgid "Desktop Launcher for Machinekit config made by Stepconf" +msgstr "創建一個桌面 啟動器 啟動 LinuxCNC 與 此配置." -#: src/emc/usr_intf/touchy/touchy.glade:1501 -#: src/emc/usr_intf/touchy/touchy.glade:2578 -msgid "Spindle speed:" -msgstr "主軸轉速:" +#: src/emc/usr_intf/stepconf/stepconf.py:860 +#: src/emc/usr_intf/stepconf/pages.py:145 +msgid "Other" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1513 -#: src/emc/usr_intf/touchy/touchy.glade:2707 -msgid "label26" +#: src/emc/usr_intf/stepconf/stepconf.py:1295 +#: src/emc/usr_intf/pncconf/pncconf.py:9302 +#, python-format +msgid "%s Axis Test" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1539 -msgid "Spindle" -msgstr "主軸" +#: src/emc/usr_intf/stepconf/stepconf.py:1298 +#: src/emc/usr_intf/stepconf/pages.py:617 +msgid "deg / s" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1597 -msgid "file.ngc" +#: src/emc/usr_intf/stepconf/stepconf.py:1299 +#: src/emc/usr_intf/stepconf/pages.py:618 +msgid "deg / s²" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:1812 -#: src/emc/usr_intf/touchy/touchy.glade:2017 -#: src/emc/usr_intf/touchy/touchy.glade:2037 -#: src/emc/usr_intf/touchy/touchy.glade:2057 -#: src/emc/usr_intf/touchy/touchy.glade:2077 -#: src/emc/usr_intf/touchy/touchy.glade:2097 -#: src/emc/usr_intf/touchy/touchy.glade:2117 -#: src/emc/usr_intf/touchy/touchy.glade:2137 -#: src/emc/usr_intf/touchy/touchy.glade:2157 -#: src/emc/usr_intf/touchy/touchy.glade:2177 -msgid "M2" +#: src/emc/usr_intf/stepconf/stepconf.py:1300 +#: src/emc/usr_intf/stepconf/pages.py:619 +msgid "deg" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2244 -#: src/emc/usr_intf/touchy/touchy.glade:2374 -msgid "Page" +#: src/emc/usr_intf/stepconf/stepconf.py:1312 +#: src/emc/usr_intf/stepconf/pages.py:623 +#: src/emc/usr_intf/stepconf/axisx.glade:629 +#: src/emc/usr_intf/stepconf/axisy.glade:615 +#: src/emc/usr_intf/stepconf/axisz.glade:615 +#: src/emc/usr_intf/stepconf/axisa.glade:629 +#: src/emc/usr_intf/pncconf/pncconf.glade:64717 +msgid "mm / s" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2308 -msgid "Start Point" +#: src/emc/usr_intf/stepconf/stepconf.py:1313 +#: src/emc/usr_intf/stepconf/pages.py:624 +#: src/emc/usr_intf/stepconf/axisx.glade:645 +#: src/emc/usr_intf/stepconf/axisy.glade:631 +#: src/emc/usr_intf/stepconf/axisz.glade:631 +#: src/emc/usr_intf/stepconf/axisa.glade:645 +#: src/emc/usr_intf/pncconf/pncconf.glade:64732 +msgid "mm / s²" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2452 -msgid "Loaded File" +#: src/emc/usr_intf/stepconf/stepconf.py:1326 +#: src/emc/usr_intf/stepconf/pages.py:629 +msgid "in / s" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2488 -msgid "Loaded file:" +#: src/emc/usr_intf/stepconf/stepconf.py:1327 +#: src/emc/usr_intf/stepconf/pages.py:630 +msgid "in / s²" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2499 -msgid "Interpreted line:" +#: src/emc/usr_intf/stepconf/pages.py:189 +#, fuzzy +msgid "Machinekit 'stepconf' configuration files" +msgstr "打開配置文件:" + +#: src/emc/usr_intf/stepconf/pages.py:190 +#: src/emc/usr_intf/pncconf/pncconf.py:4257 +msgid "Modify Existing Configuration" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2513 -msgid "Distance:" +#: src/emc/usr_intf/stepconf/pages.py:616 +msgid "degree / rev" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2526 -#: src/emc/usr_intf/stepconf/stepconf.glade:4148 -#: src/emc/usr_intf/pncconf/pncconf.glade:60476 -#: src/emc/usr_intf/pncconf/pncconf.glade:61571 -#: src/emc/usr_intf/pncconf/pncconf.glade:62664 -#: src/emc/usr_intf/pncconf/pncconf.glade:63757 -#: src/emc/usr_intf/pncconf/pncconf.glade:64856 -msgid "Velocity:" +#: src/emc/usr_intf/stepconf/pages.py:620 +msgid "Steps / deg" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2539 -msgid "Delay:" +#: src/emc/usr_intf/stepconf/pages.py:622 +#: src/emc/usr_intf/stepconf/axisx.glade:613 +#: src/emc/usr_intf/stepconf/axisy.glade:599 +#: src/emc/usr_intf/stepconf/axisz.glade:599 +#: src/emc/usr_intf/stepconf/axisa.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / rev" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2552 -msgid "On limit switch:" +#: src/emc/usr_intf/stepconf/pages.py:626 +#: src/emc/usr_intf/stepconf/axisx.glade:15 +#: src/emc/usr_intf/stepconf/axisy.glade:15 +#: src/emc/usr_intf/stepconf/axisz.glade:15 +#: src/emc/usr_intf/stepconf/axisa.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Steps / mm" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2565 -msgid "Spindle direction:" +#: src/emc/usr_intf/stepconf/pages.py:628 +msgid "rev / in" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2591 -msgid "Loaded tool:" +#: src/emc/usr_intf/stepconf/pages.py:632 +msgid "Steps / in" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2604 -#: src/emc/usr_intf/touchy/touchy.glade:2955 -msgid "label19" +#: src/emc/usr_intf/stepconf/build_INI.py:45 +#: src/emc/usr_intf/stepconf/build_HAL.py:41 +#, python-format +msgid "# Generated by stepconf 1.1 at %s" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2617 -msgid "label20" +#: src/emc/usr_intf/stepconf/build_INI.py:46 +#: src/emc/usr_intf/stepconf/build_HAL.py:42 +#: src/emc/usr_intf/pncconf/pncconf.py:1328 +#: src/emc/usr_intf/pncconf/pncconf.py:2422 +msgid "# If you make changes to this file, they will be" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2632 -#: src/emc/usr_intf/touchy/touchy.glade:2779 -#: src/emc/usr_intf/touchy/touchy.glade:2808 -#: src/emc/usr_intf/touchy/touchy.glade:2912 -#: src/emc/usr_intf/touchy/touchy.glade:2927 -msgid "label21" +#: src/emc/usr_intf/stepconf/build_INI.py:47 +#: src/emc/usr_intf/stepconf/build_HAL.py:43 +msgid "# overwritten when you run stepconf again" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2647 -msgid "label22" +#: src/emc/usr_intf/stepconf/build_INI.py:126 +msgid "# add halui MDI commands here (max 64) " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2662 -msgid "label23" +#: src/emc/usr_intf/stepconf/build_HAL.py:275 +#: src/emc/usr_intf/pncconf/pncconf.py:3131 +msgid "# **** Setup for external estop ladder program -START ****" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2677 -msgid "label24" +#: src/emc/usr_intf/stepconf/build_HAL.py:282 +#: src/emc/usr_intf/pncconf/pncconf.py:3138 +msgid "# **** Setup for external estop ladder program -END ****" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2692 -msgid "label25" +#: src/emc/usr_intf/stepconf/build_HAL.py:302 +#: src/emc/usr_intf/pncconf/pncconf.py:3165 +msgid "" +"# Load Classicladder with modbus master included (GUI must run for Modbus)" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2722 -msgid "label27" +#: src/emc/usr_intf/stepconf/build_HAL.py:305 +#: src/emc/usr_intf/pncconf/pncconf.py:3170 +msgid "# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2737 -msgid "Prepped tool:" +#: src/emc/usr_intf/stepconf/build_HAL.py:315 +#: src/emc/usr_intf/pncconf/pncconf.py:3252 +msgid "Include your PyVCP panel here.\n" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2750 -msgid "label28" +#: src/emc/usr_intf/stepconf/build_HAL.py:324 +#: src/emc/usr_intf/stepconf/build_HAL.py:370 +msgid "# Include your customized HAL commands here" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2765 -msgid "Running line:" +#: src/emc/usr_intf/stepconf/build_HAL.py:325 +msgid "" +"# The commands in this file are run after the AXIS GUI (including PyVCP " +"panel) starts" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2794 -msgid "XY Rotation:" +#: src/emc/usr_intf/stepconf/build_HAL.py:328 +#: src/emc/usr_intf/pncconf/pncconf.py:3280 +msgid "# **** Setup of spindle speed display using pyvcp -START ****" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2823 -msgid "Tool length:" +#: src/emc/usr_intf/stepconf/build_HAL.py:330 +msgid "# **** Use ACTUAL spindle velocity from spindle encoder" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2836 -msgid "label52" +#: src/emc/usr_intf/stepconf/build_HAL.py:331 +msgid "" +"# **** spindle-velocity-feedback-rps bounces around so we filter it with " +"lowpass" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2851 +#: src/emc/usr_intf/stepconf/build_HAL.py:332 msgid "" -"G1 G2 G3\n" -"M1 M2 M3\n" -"F1 S1" +"# **** spindle-velocity-feedback-rps is signed so we use absolute component " +"to remove sign" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2870 -msgid "Active codes:" +#: src/emc/usr_intf/stepconf/build_HAL.py:333 +msgid "# **** ACTUAL velocity is in RPS not RPM so we scale it." msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2883 -msgid "G5x Offset:" +#: src/emc/usr_intf/stepconf/build_HAL.py:342 +msgid "# **** set up spindle at speed indicator ****" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2898 -msgid "G92 Offset:" +#: src/emc/usr_intf/stepconf/build_HAL.py:355 +msgid "" +"# **** Use COMMANDED spindle velocity from LinuxCNC because no spindle " +"encoder was specified" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2942 -msgid "Loaded file lines:" +#: src/emc/usr_intf/stepconf/build_HAL.py:371 +msgid "# This file will not be overwritten when you run stepconf again" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2971 -msgid "Pockets:" +#: src/emc/usr_intf/stepconf/build_HAL.py:412 +msgid "# This file sets up simulated limits/home/spindle encoder hardware." msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:2984 -msgid "" -"1\n" -"2\n" -"3" +#: src/emc/usr_intf/stepconf/build_HAL.py:413 +msgid "# This is a generated file do not edit." msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3009 -msgid "Status" +#: src/emc/usr_intf/stepconf/main_page.glade:35 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Acceleration:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3038 -msgid "Control Font:" +#: src/emc/usr_intf/stepconf/main_page.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Jog:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3050 -msgid "DRO Font:" +#: src/emc/usr_intf/stepconf/main_page.glade:63 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Test Area:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3064 -msgid "Error Font:" +#: src/emc/usr_intf/stepconf/main_page.glade:97 +msgid "mm/s^2" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3081 -msgid "ControlFont" +#: src/emc/usr_intf/stepconf/main_page.glade:138 +msgid "mm/s" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3100 -msgid "DRO Font" +#: src/emc/usr_intf/stepconf/main_page.glade:400 +msgid "±" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3121 -msgid "Error Font" +#: src/emc/usr_intf/stepconf/main_page.glade:423 +#, fuzzy +msgid "Stepconf -Stepper Configuration Wizard" +msgstr "樣辦配置" + +#: src/emc/usr_intf/stepconf/main_page.glade:503 +#: src/emc/usr_intf/pncconf/pncconf.glade:2054 +#: src/emc/usr_intf/pncconf/pncconf.glade:2067 +#: src/emc/usr_intf/pncconf/pncconf.glade:2080 +#: src/emc/usr_intf/pncconf/pncconf.glade:2093 +#: src/emc/usr_intf/pncconf/pncconf.glade:2106 +#: src/emc/usr_intf/pncconf/pncconf.glade:2119 +#: src/emc/usr_intf/pncconf/pncconf.glade:2132 +#: src/emc/usr_intf/pncconf/pncconf.glade:2145 +#: src/emc/usr_intf/pncconf/pncconf.glade:2156 +#: src/emc/usr_intf/pncconf/pncconf.glade:2169 +#: src/emc/usr_intf/pncconf/pncconf.glade:2182 +#: src/emc/usr_intf/pncconf/pncconf.glade:2528 +#: src/emc/usr_intf/pncconf/pncconf.glade:2541 +#: src/emc/usr_intf/pncconf/pncconf.glade:2554 +#: src/emc/usr_intf/pncconf/pncconf.glade:8104 +#: src/emc/usr_intf/pncconf/pncconf.glade:8139 +#: src/emc/usr_intf/pncconf/pncconf.glade:63377 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#: src/emc/usr_intf/gscreen/gscreen.glade:1342 +#: src/emc/usr_intf/gscreen/gscreen.glade:1360 +#: src/emc/usr_intf/gscreen/gscreen.glade:1378 +msgid "label" +msgstr "標 籤" + +#: src/emc/usr_intf/stepconf/main_page.glade:605 +msgid "" +"This program creates configuration files (.ini and .hal) for \"step and " +"direction\" milling machines and lathes connected to the PC parallel port.\n" +"\n" +"Stepconf requires a minimum 800 X 600 display resolution." msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3139 -msgid "Listing Font:" +#: src/emc/usr_intf/stepconf/main_page.glade:628 +#: src/emc/usr_intf/pncconf/pncconf.glade:28799 +#: src/emc/usr_intf/pncconf/pncconf.glade:35720 +#: src/emc/usr_intf/pncconf/pncconf.glade:42643 +#: src/emc/usr_intf/pncconf/pncconf.glade:49566 +#: src/emc/usr_intf/pncconf/pncconf.glade:56489 +msgid "page 1" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3156 -msgid "Listing Font" +#: src/emc/usr_intf/stepconf/base.glade:18 +msgid "XYZ" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3176 -msgid "Hide pointer" +#: src/emc/usr_intf/stepconf/base.glade:21 +msgid "XYZA" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3187 -msgid "Show pointer" +#: src/emc/usr_intf/stepconf/base.glade:24 +msgid "XZ (Lathe)" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3214 -msgid "Theme:" +#: src/emc/usr_intf/stepconf/base.glade:79 +msgid "Step _Time:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3228 -#, fuzzy -msgid "default\n" -msgstr "AXIS 預 置 值" +#: src/emc/usr_intf/stepconf/base.glade:113 +#: src/emc/usr_intf/stepconf/base.glade:165 +#: src/emc/usr_intf/stepconf/base.glade:219 +#: src/emc/usr_intf/stepconf/base.glade:271 +#: src/emc/usr_intf/stepconf/base.glade:613 +#: src/emc/usr_intf/pncconf/pncconf.glade:443 +#: src/emc/usr_intf/pncconf/pncconf.glade:8226 +msgid "ns" +msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3252 -msgid "Display Options" +#: src/emc/usr_intf/stepconf/base.glade:127 +msgid "Step _Space:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3286 -msgid "Inch" +#: src/emc/usr_intf/stepconf/base.glade:181 +msgid "Direction _Hold:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3349 -msgid "Position Readout" +#: src/emc/usr_intf/stepconf/base.glade:235 +msgid "_Direction Setup:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3379 -msgid "Workpiece" +#: src/emc/usr_intf/stepconf/base.glade:338 +msgid "Driver Timing Settings" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3390 -msgid "Fixture" +#: src/emc/usr_intf/stepconf/base.glade:351 +msgid "" +"_Test Base\n" +"Period Jitter " msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3410 -msgid "Tool Setting" +#: src/emc/usr_intf/stepconf/base.glade:372 +msgid "Machine _Name:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3441 -msgid "Delete / lines" +#: src/emc/usr_intf/stepconf/base.glade:386 +msgid "_Axis configuration:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3456 -msgid "Keep / lines" +#: src/emc/usr_intf/stepconf/base.glade:401 +#, fuzzy +msgid "Reset Default machine _units:" +msgstr "機器 單元:" + +#: src/emc/usr_intf/stepconf/base.glade:416 +#: src/emc/usr_intf/pncconf/pncconf.glade:245 +msgid "Configuration directory:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3473 -msgid "Pause on M1" +#: src/emc/usr_intf/stepconf/base.glade:430 +msgid "D_river type:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3484 -msgid "Ignore M1" +#: src/emc/usr_intf/stepconf/base.glade:545 +msgid "" +"Driver characteristics: (Multiply by 1000 for times specified in µs or " +"microseconds)" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3504 -msgid "Program Options" +#: src/emc/usr_intf/stepconf/base.glade:573 +msgid "Base Period Maximum _Jitter:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3531 -msgid "Preferences" +#: src/emc/usr_intf/stepconf/base.glade:630 +msgid "One Parport" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3567 -msgid "FO: 100%" +#: src/emc/usr_intf/stepconf/base.glade:646 +msgid "Two Parports" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3582 -msgid "SO: 100%" +#: src/emc/usr_intf/stepconf/base.glade:663 +#, fuzzy +msgid "Three Parports" +msgstr "第三個並行埠地址:" + +#: src/emc/usr_intf/stepconf/base.glade:698 +msgid "Min Base Period:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3596 -msgid "MV: 100" +#: src/emc/usr_intf/stepconf/base.glade:735 +msgid "Max step rate:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3610 -msgid "Jogging" +#: src/emc/usr_intf/stepconf/base.glade:870 +msgid "MM" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3637 -msgid ".01" +#: src/emc/usr_intf/stepconf/start.glade:11 +msgid "Create a _new configuration" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3650 -msgid ".001" +#: src/emc/usr_intf/stepconf/start.glade:29 +#: src/emc/usr_intf/pncconf/pncconf.glade:130 +msgid "Modify a configuration already created with this program" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3666 -msgid ".0001" +#: src/emc/usr_intf/stepconf/start.glade:49 +#: src/emc/usr_intf/pncconf/pncconf.glade:118 +msgid "Do you wish to:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3694 -msgid " X " +#: src/emc/usr_intf/stepconf/start.glade:61 +#: src/emc/usr_intf/pncconf/pncconf.glade:100 +msgid "" +"If you have made modifications to this configuration outside this program, " +"they will be lost when you select \"Modify a configuration\"" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3706 -msgid " Y " +#: src/emc/usr_intf/stepconf/start.glade:76 +msgid "Create a desktop _shortcut (symlink) to configuration files." msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3721 -msgid " Z " +#: src/emc/usr_intf/stepconf/start.glade:93 +msgid "Create a desktop _launcher to start LinuxCNC with this configuration." msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3736 -msgid " A " +#: src/emc/usr_intf/stepconf/start.glade:124 +#, fuzzy +msgid "Create simulated hardware configuration." +msgstr "創建一個新的配置" + +#: src/emc/usr_intf/stepconf/pport1.glade:35 +msgid "Xylotex" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3752 -msgid " B " +#: src/emc/usr_intf/stepconf/pport1.glade:38 +msgid "TB6560 3 axes" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3770 -msgid " C " +#: src/emc/usr_intf/stepconf/pport1.glade:41 +msgid "TB6560 4 axes" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3788 -msgid " U " +#: src/emc/usr_intf/stepconf/pport1.glade:59 +#: src/emc/usr_intf/pncconf/pncconf.glade:62915 +msgid "Pin _1:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3804 -msgid " V " +#: src/emc/usr_intf/stepconf/pport1.glade:74 +#: src/emc/usr_intf/stepconf/pport2.glade:768 +#: src/emc/usr_intf/pncconf/pncconf.glade:61685 +#: src/emc/usr_intf/pncconf/pncconf.glade:62901 +msgid "Pin _2:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3822 -msgid " W " +#: src/emc/usr_intf/stepconf/pport1.glade:89 +#: src/emc/usr_intf/stepconf/pport2.glade:814 +#: src/emc/usr_intf/pncconf/pncconf.glade:61668 +#: src/emc/usr_intf/pncconf/pncconf.glade:62887 +msgid "Pin _3:" msgstr "" -#: src/emc/usr_intf/touchy/touchy.glade:3855 -msgid "Handwheel" +#: src/emc/usr_intf/stepconf/pport1.glade:104 +#: src/emc/usr_intf/stepconf/pport2.glade:860 +#: src/emc/usr_intf/pncconf/pncconf.glade:61651 +#: src/emc/usr_intf/pncconf/pncconf.glade:62873 +msgid "Pin _4:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:53 -msgid "" -"Stepconf encountered an error. The following information may be useful in " -"troubleshooting:\n" -"\n" +#: src/emc/usr_intf/stepconf/pport1.glade:119 +#: src/emc/usr_intf/stepconf/pport2.glade:906 +#: src/emc/usr_intf/pncconf/pncconf.glade:61634 +#: src/emc/usr_intf/pncconf/pncconf.glade:62859 +msgid "Pin _5:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:70 -#: src/emc/usr_intf/pncconf/pncconf.py:133 -msgid "Gecko 201" +#: src/emc/usr_intf/stepconf/pport1.glade:134 +#: src/emc/usr_intf/stepconf/pport2.glade:952 +#: src/emc/usr_intf/pncconf/pncconf.glade:61617 +#: src/emc/usr_intf/pncconf/pncconf.glade:62845 +msgid "Pin _6:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:71 -#: src/emc/usr_intf/pncconf/pncconf.py:134 -msgid "Gecko 202" +#: src/emc/usr_intf/stepconf/pport1.glade:149 +#: src/emc/usr_intf/stepconf/pport2.glade:998 +#: src/emc/usr_intf/pncconf/pncconf.glade:61600 +#: src/emc/usr_intf/pncconf/pncconf.glade:62831 +msgid "Pin _7:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:72 -#: src/emc/usr_intf/pncconf/pncconf.py:135 -msgid "Gecko 203v" +#: src/emc/usr_intf/stepconf/pport1.glade:164 +#: src/emc/usr_intf/stepconf/pport2.glade:1044 +#: src/emc/usr_intf/pncconf/pncconf.glade:61583 +#: src/emc/usr_intf/pncconf/pncconf.glade:62817 +msgid "Pin _8:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:73 -#: src/emc/usr_intf/pncconf/pncconf.py:136 -msgid "Gecko 210" +#: src/emc/usr_intf/stepconf/pport1.glade:179 +#: src/emc/usr_intf/stepconf/pport2.glade:1090 +#: src/emc/usr_intf/pncconf/pncconf.glade:61566 +#: src/emc/usr_intf/pncconf/pncconf.glade:62803 +msgid "Pin _9:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:74 -#: src/emc/usr_intf/pncconf/pncconf.py:137 -msgid "Gecko 212" +#: src/emc/usr_intf/stepconf/pport1.glade:194 +#: src/emc/usr_intf/stepconf/pport2.glade:1137 +#: src/emc/usr_intf/pncconf/pncconf.glade:62789 +msgid "_Pin 14:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:75 -#: src/emc/usr_intf/pncconf/pncconf.py:138 -msgid "Gecko 320" +#: src/emc/usr_intf/stepconf/pport1.glade:209 +#: src/emc/usr_intf/stepconf/pport2.glade:1185 +#: src/emc/usr_intf/pncconf/pncconf.glade:62775 +msgid "P_in 16:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:76 -#: src/emc/usr_intf/pncconf/pncconf.py:139 -msgid "Gecko 540" +#: src/emc/usr_intf/stepconf/pport1.glade:224 +#: src/emc/usr_intf/stepconf/pport2.glade:1233 +#: src/emc/usr_intf/pncconf/pncconf.glade:62761 +msgid "Pi_n 17:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:77 -#: src/emc/usr_intf/pncconf/pncconf.py:140 -msgid "L297" +#: src/emc/usr_intf/stepconf/pport1.glade:470 +#: src/emc/usr_intf/stepconf/pport2.glade:692 +msgid "Outputs (PC to Mill):" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:78 -#: src/emc/usr_intf/pncconf/pncconf.py:141 -msgid "PMDX-150" +#: src/emc/usr_intf/stepconf/pport1.glade:483 +#: src/emc/usr_intf/stepconf/pport2.glade:427 +#: src/emc/usr_intf/pncconf/pncconf.glade:61701 +msgid "Pin 1_0:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:79 -#: src/emc/usr_intf/pncconf/pncconf.py:142 -msgid "Sherline" +#: src/emc/usr_intf/stepconf/pport1.glade:500 +#: src/emc/usr_intf/stepconf/pport2.glade:475 +#: src/emc/usr_intf/pncconf/pncconf.glade:61717 +msgid "Pin 1_1:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:80 -#: src/emc/usr_intf/pncconf/pncconf.py:143 -msgid "Xylotex 8S-3" +#: src/emc/usr_intf/stepconf/pport1.glade:517 +#: src/emc/usr_intf/stepconf/pport2.glade:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:61733 +msgid "Pin 1_2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:81 -#: src/emc/usr_intf/pncconf/pncconf.py:144 -msgid "Parker-Compumotor oem750" +#: src/emc/usr_intf/stepconf/pport1.glade:534 +#: src/emc/usr_intf/stepconf/pport2.glade:571 +#: src/emc/usr_intf/pncconf/pncconf.glade:61749 +msgid "Pin 1_3:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:82 -#: src/emc/usr_intf/pncconf/pncconf.py:145 -msgid "JVL-SMD41 or 42" +#: src/emc/usr_intf/stepconf/pport1.glade:551 +#: src/emc/usr_intf/stepconf/pport2.glade:619 +#: src/emc/usr_intf/pncconf/pncconf.glade:61765 +msgid "Pin 1_5:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:83 -#: src/emc/usr_intf/pncconf/pncconf.py:146 -msgid "Hobbycnc Pro Chopper" +#: src/emc/usr_intf/stepconf/pport1.glade:590 +#: src/emc/usr_intf/stepconf/pport2.glade:16 +msgid "Inputs (Mill to PC):" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:84 -#: src/emc/usr_intf/pncconf/pncconf.py:147 -msgid "Keling 4030" +#: src/emc/usr_intf/stepconf/pport1.glade:618 +#: src/emc/usr_intf/stepconf/pport1.glade:632 +#: src/emc/usr_intf/stepconf/pport2.glade:29 +#: src/emc/usr_intf/stepconf/pport2.glade:702 +#: src/emc/usr_intf/pncconf/pncconf.glade:62335 +#: src/emc/usr_intf/pncconf/pncconf.glade:62348 +msgid "Invert" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -msgid "X Step" +#: src/emc/usr_intf/stepconf/pport1.glade:1018 +msgid "Output pinout presets:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -msgid "X Direction" -msgstr "" +#: src/emc/usr_intf/stepconf/pport1.glade:1096 +#, fuzzy +msgid "Parport _Base Address:" +msgstr "第一個並行埠地址:" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -msgid "Y Step" +#: src/emc/usr_intf/stepconf/pport1.glade:1132 +#, fuzzy +msgid "Preset" +msgstr "重置" + +#: src/emc/usr_intf/stepconf/pport2.glade:47 +msgid "Pin 2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:153 -msgid "Y Direction" +#: src/emc/usr_intf/stepconf/pport2.glade:94 +msgid "Pin 3:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -msgid "Z Step" +#: src/emc/usr_intf/stepconf/pport2.glade:141 +msgid "Pin 4:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -msgid "Z Direction" +#: src/emc/usr_intf/stepconf/pport2.glade:188 +msgid "Pin 5:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -msgid "A Step" +#: src/emc/usr_intf/stepconf/pport2.glade:235 +msgid "Pin 6:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:154 -msgid "A Direction" +#: src/emc/usr_intf/stepconf/pport2.glade:282 +msgid "Pin 7:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -msgid "Spindle ON" +#: src/emc/usr_intf/stepconf/pport2.glade:329 +msgid "Pin 8:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:557 -msgid "Spindle PWM" +#: src/emc/usr_intf/stepconf/pport2.glade:376 +msgid "Pin 9:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:155 -#: src/emc/usr_intf/pncconf/pncconf.py:440 -msgid "Spindle Brake" +#: src/emc/usr_intf/stepconf/pport2.glade:721 +msgid "Pin _1: " msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 -msgid "Coolant Mist" +#: src/emc/usr_intf/stepconf/pport2.glade:1431 +#, fuzzy +msgid "Out" +msgstr "切割" + +#: src/emc/usr_intf/stepconf/pport2.glade:1434 +#, fuzzy +msgid "In" +msgstr "反轉" + +#: src/emc/usr_intf/stepconf/spindle.glade:23 +msgid "Use spindle-at-speed:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:441 -msgid "Coolant Flood" +#: src/emc/usr_intf/stepconf/spindle.glade:64 +msgid "Speed display filter gain:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -#: src/emc/usr_intf/pncconf/pncconf.py:442 -msgid "ESTOP Out" +#: src/emc/usr_intf/stepconf/spindle.glade:99 +msgid "Calibration:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:156 -msgid "Amplifier Enable" +#: src/emc/usr_intf/stepconf/spindle.glade:113 +msgid "_Speed 1:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:157 -#: src/emc/usr_intf/pncconf/pncconf.py:443 -msgid "Charge Pump" +#: src/emc/usr_intf/stepconf/spindle.glade:129 +msgid "_PWM 1:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 0" +#: src/emc/usr_intf/stepconf/spindle.glade:148 +msgid "S_peed 2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 1" +#: src/emc/usr_intf/stepconf/spindle.glade:164 +msgid "P_WM 2:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 2" +#: src/emc/usr_intf/stepconf/spindle.glade:183 +msgid "PWM _Rate:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:158 -#: src/emc/usr_intf/pncconf/pncconf.py:444 -msgid "Digital out 3" +#: src/emc/usr_intf/stepconf/spindle.glade:285 +msgid "_Cycles per revolution:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:159 -#: src/emc/usr_intf/stepconf/stepconf.py:178 -msgid "Unused" +#: src/emc/usr_intf/stepconf/spindle.glade:347 +msgid "Enter 0 Hz for \"PDM\" mode" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 -msgid "ESTOP In" +#: src/emc/usr_intf/stepconf/spindle.glade:360 +msgid "Scale %" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:161 -#: src/emc/usr_intf/pncconf/pncconf.py:471 -msgid "Probe In" +#: src/emc/usr_intf/stepconf/options.glade:50 +msgid "Include Halui user interface component" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:162 -msgid "Spindle Index" +#: src/emc/usr_intf/stepconf/options.glade:102 +#: src/emc/usr_intf/pncconf/pncconf.glade:6753 +msgid "Blank program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:162 -msgid "Spindle Phase A" +#: src/emc/usr_intf/stepconf/options.glade:119 +#: src/emc/usr_intf/pncconf/pncconf.glade:6768 +msgid "Spindle speed display " msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:162 -msgid "Spindle Phase B" +#: src/emc/usr_intf/stepconf/options.glade:136 +#: src/emc/usr_intf/stepconf/options.glade:671 +#: src/emc/usr_intf/pncconf/pncconf.glade:6799 +#: src/emc/usr_intf/pncconf/pncconf.glade:7120 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Existing custom program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -msgid "Home X" +#: src/emc/usr_intf/stepconf/options.glade:153 +#: src/emc/usr_intf/stepconf/options.glade:688 +#: src/emc/usr_intf/pncconf/pncconf.glade:6814 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include connections to HAL" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -msgid "Home Y" +#: src/emc/usr_intf/stepconf/options.glade:202 +#: src/emc/usr_intf/pncconf/pncconf.glade:6997 +#: src/emc/usr_intf/pncconf/pncconf.glade:7545 +msgid "" +"_Display\n" +"sample\n" +"panel" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -msgid "Home Z" +#: src/emc/usr_intf/stepconf/options.glade:243 +#: src/emc/usr_intf/pncconf/pncconf.glade:7056 +msgid "Include custom PyVCP GUI panel" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:163 -msgid "Home A" +#: src/emc/usr_intf/stepconf/options.glade:414 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (float) out pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:164 -msgid "Minimum Limit + Home X" +#: src/emc/usr_intf/stepconf/options.glade:429 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (float) in pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:164 -msgid "Minimum Limit + Home Y" +#: src/emc/usr_intf/stepconf/options.glade:444 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (s32) out pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:165 -msgid "Minimum Limit + Home Z" +#: src/emc/usr_intf/stepconf/options.glade:459 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of analog (s32) in pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:165 -msgid "Minimum Limit + Home A" +#: src/emc/usr_intf/stepconf/options.glade:475 +msgid "Number of digital out pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:166 -msgid "Maximum Limit + Home X" +#: src/emc/usr_intf/stepconf/options.glade:506 +msgid "Number of digital in pins:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:166 -msgid "Maximum Limit + Home Y" +#: src/emc/usr_intf/stepconf/options.glade:518 +msgid "setup number of external pins" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:167 -msgid "Maximum Limit + Home Z" +#: src/emc/usr_intf/stepconf/options.glade:533 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include modbus master support" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:167 -msgid "Maximum Limit + Home A" +#: src/emc/usr_intf/stepconf/options.glade:625 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Blank ladder program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:168 -msgid "Both Limit + Home X" +#: src/emc/usr_intf/stepconf/options.glade:638 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Estop ladder program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:168 -msgid "Both Limit + Home Y" +#: src/emc/usr_intf/stepconf/options.glade:654 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Serial modbus program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:169 -msgid "Both Limit + Home Z" +#: src/emc/usr_intf/stepconf/options.glade:740 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"Edit ladder\n" +"program" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:169 -msgid "Both Limit + Home A" +#: src/emc/usr_intf/stepconf/options.glade:781 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include _Classicladder PLC" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:170 -msgid "Minimum Limit X" +#: src/emc/usr_intf/stepconf/options.glade:802 +msgid "_Onscreen prompt for manual tool change" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:170 -msgid "Minimum Limit Y" +#: src/emc/usr_intf/stepconf/axisx.glade:31 +#: src/emc/usr_intf/stepconf/axisy.glade:31 +#: src/emc/usr_intf/stepconf/axisz.glade:31 +#: src/emc/usr_intf/stepconf/axisa.glade:45 +msgid "_Motor steps per revolution:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:171 -msgid "Minimum Limit Z" +#: src/emc/usr_intf/stepconf/axisx.glade:45 +#: src/emc/usr_intf/stepconf/axisy.glade:44 +#: src/emc/usr_intf/stepconf/axisz.glade:44 +#: src/emc/usr_intf/stepconf/axisa.glade:58 +msgid "_Driver Microstepping:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:171 -msgid "Minimum Limit A" +#: src/emc/usr_intf/stepconf/axisx.glade:61 +#: src/emc/usr_intf/stepconf/axisy.glade:59 +#: src/emc/usr_intf/stepconf/axisz.glade:59 +#: src/emc/usr_intf/stepconf/axisa.glade:73 +msgid "_Pulley teeth (Motor:Leadscrew):" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:172 -msgid "Maximum Limit X" +#: src/emc/usr_intf/stepconf/axisx.glade:77 +#: src/emc/usr_intf/stepconf/axisy.glade:74 +#: src/emc/usr_intf/stepconf/axisz.glade:74 +#: src/emc/usr_intf/stepconf/axisa.glade:88 +msgid "_Leadscrew Pitch:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:172 -msgid "Maximum Limit Y" +#: src/emc/usr_intf/stepconf/axisx.glade:93 +#: src/emc/usr_intf/stepconf/axisy.glade:89 +#: src/emc/usr_intf/stepconf/axisz.glade:89 +#: src/emc/usr_intf/stepconf/axisa.glade:103 +#: src/emc/usr_intf/pncconf/pncconf.glade:64687 +msgid "Maximum _Velocity:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:173 -msgid "Maximum Limit Z" +#: src/emc/usr_intf/stepconf/axisx.glade:109 +#: src/emc/usr_intf/stepconf/axisy.glade:104 +#: src/emc/usr_intf/stepconf/axisz.glade:104 +#: src/emc/usr_intf/stepconf/axisa.glade:118 +#: src/emc/usr_intf/pncconf/pncconf.glade:64702 +msgid "Maximum _Acceleration:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:173 -msgid "Maximum Limit A" +#: src/emc/usr_intf/stepconf/axisx.glade:125 +#: src/emc/usr_intf/stepconf/axisy.glade:119 +#: src/emc/usr_intf/stepconf/axisz.glade:119 +#: src/emc/usr_intf/stepconf/axisa.glade:133 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Time to accelerate to max speed:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:174 -msgid "Both Limit X" +#: src/emc/usr_intf/stepconf/axisx.glade:141 +#: src/emc/usr_intf/stepconf/axisy.glade:134 +#: src/emc/usr_intf/stepconf/axisz.glade:134 +#: src/emc/usr_intf/stepconf/axisa.glade:148 +msgid "Distance to accelerate to max speed:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:174 -msgid "Both Limit Y" +#: src/emc/usr_intf/stepconf/axisx.glade:271 +#: src/emc/usr_intf/stepconf/axisy.glade:263 +#: src/emc/usr_intf/stepconf/axisz.glade:263 +#: src/emc/usr_intf/stepconf/axisa.glade:277 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulse rate at max speed:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:175 -msgid "Both Limit Z" +#: src/emc/usr_intf/stepconf/axisx.glade:342 +#: src/emc/usr_intf/stepconf/axisy.glade:334 +#: src/emc/usr_intf/stepconf/axisz.glade:334 +#: src/emc/usr_intf/stepconf/axisa.glade:348 +msgid "_Home location:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:175 -msgid "Both Limit A" +#: src/emc/usr_intf/stepconf/axisx.glade:358 +#: src/emc/usr_intf/stepconf/axisy.glade:349 +#: src/emc/usr_intf/stepconf/axisz.glade:349 +#: src/emc/usr_intf/stepconf/axisa.glade:363 +msgid "Home _Switch location:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:176 -msgid "All limits" +#: src/emc/usr_intf/stepconf/axisx.glade:374 +#: src/emc/usr_intf/stepconf/axisy.glade:364 +#: src/emc/usr_intf/stepconf/axisz.glade:364 +#: src/emc/usr_intf/stepconf/axisa.glade:378 +msgid "Home Sear_ch velocity:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:176 -msgid "All home" +#: src/emc/usr_intf/stepconf/axisx.glade:390 +#: src/emc/usr_intf/stepconf/axisy.glade:379 +#: src/emc/usr_intf/stepconf/axisz.glade:379 +#: src/emc/usr_intf/stepconf/axisa.glade:393 +msgid "Home La_tch direction:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:176 -msgid "All limits + homes" +#: src/emc/usr_intf/stepconf/axisx.glade:404 +#: src/emc/usr_intf/stepconf/axisy.glade:393 +#: src/emc/usr_intf/stepconf/axisz.glade:393 +#: src/emc/usr_intf/stepconf/axisa.glade:407 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "_:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 0" +#: src/emc/usr_intf/stepconf/axisx.glade:498 +#: src/emc/usr_intf/stepconf/axisy.glade:486 +#: src/emc/usr_intf/stepconf/axisz.glade:486 +#: src/emc/usr_intf/stepconf/axisa.glade:500 +msgid "Tab_le travel:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 1" +#: src/emc/usr_intf/stepconf/axisx.glade:531 +#: src/emc/usr_intf/stepconf/axisy.glade:518 +#: src/emc/usr_intf/stepconf/axisz.glade:518 +#: src/emc/usr_intf/stepconf/axisa.glade:532 +msgid "t_o" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 2" +#: src/emc/usr_intf/stepconf/axisx.glade:677 +#: src/emc/usr_intf/stepconf/axisy.glade:663 +#: src/emc/usr_intf/stepconf/axisz.glade:663 +#: src/emc/usr_intf/stepconf/axisa.glade:677 +msgid "s" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:177 -#: src/emc/usr_intf/pncconf/pncconf.py:463 -msgid "Digital in 3" +#: src/emc/usr_intf/stepconf/axisx.glade:738 +#: src/emc/usr_intf/stepconf/axisy.glade:724 +#: src/emc/usr_intf/stepconf/axisz.glade:724 +#: src/emc/usr_intf/stepconf/axisa.glade:738 +msgid "T_est this axis" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:203 -msgid "my-mill" +#: src/emc/usr_intf/stepconf/axisx.glade:765 +#: src/emc/usr_intf/stepconf/axisy.glade:751 +#: src/emc/usr_intf/stepconf/axisz.glade:751 +#: src/emc/usr_intf/stepconf/axisa.glade:765 +msgid "Axis SCALE:" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:215 -#: src/emc/usr_intf/stepconf/stepconf.py:217 -#: src/emc/usr_intf/pncconf/pncconf.py:983 -#: src/emc/usr_intf/pncconf/pncconf.py:985 -msgid "Enter Address" +#: src/emc/usr_intf/stepconf/axisx.glade:833 +#: src/emc/usr_intf/stepconf/axisy.glade:819 +#: src/emc/usr_intf/stepconf/axisz.glade:819 +#: src/emc/usr_intf/stepconf/axisa.glade:12 +msgid "Same" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:375 -#, python-format -msgid "File %r was modified since it was written by stepconf" +#: src/emc/usr_intf/stepconf/axisx.glade:836 +#: src/emc/usr_intf/stepconf/axisy.glade:822 +#: src/emc/usr_intf/stepconf/axisz.glade:822 +#: src/emc/usr_intf/stepconf/axisa.glade:15 +#, fuzzy +msgid "Opposite" +msgstr "正" + +#: src/emc/usr_intf/stepconf/finished.glade:6 +msgid "" +"All the necessary information has now been gathered. \n" +"Click \"Done\" to write your configuration files to disk.\n" +"\n" +"If you experience lockups while running LinuxCNC:\n" +"-you will need to decrease the maximum velocity which will have the effect " +"of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC:\n" +"-first verify that you entered the proper timings for your stepper " +"drivers. \n" +"-then run a more thorough latency test as described on the linuxcnc.org " +"wiki.\n" +" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" +"\n" +"If you experience the \"Unexpected Realtime Delay\" message:\n" +"-run a more thorough latency test as described on the linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:378 +#: src/emc/usr_intf/pncconf/pncconf.py:81 msgid "" -"Saving this configuration file will discard configuration changes made " -"outside stepconf." +"PNCconf encountered an error. The following information may be useful in " +"troubleshooting:\n" +"\n" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:393 -#: src/emc/usr_intf/pncconf/pncconf.py:1356 -msgid "Continue? " +#: src/emc/usr_intf/pncconf/pncconf.py:149 +msgid "Keling 4030" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:394 -#: src/emc/usr_intf/pncconf/pncconf.py:1357 -msgid "yY" +#: src/emc/usr_intf/pncconf/pncconf.py:151 +msgid "Not Used" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:446 -#: src/emc/usr_intf/stepconf/stepconf.py:786 -#, python-format -msgid "# Generated by stepconf at %s" +#: src/emc/usr_intf/pncconf/pncconf.py:151 +#: src/emc/usr_intf/pncconf/pncconf.py:152 +#: src/emc/usr_intf/pncconf/pncconf.py:176 +msgid "Dummy" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:447 -#: src/emc/usr_intf/stepconf/stepconf.py:787 -#: src/emc/usr_intf/pncconf/pncconf.py:1366 -#: src/emc/usr_intf/pncconf/pncconf.py:2369 -msgid "# If you make changes to this file, they will be" +#: src/emc/usr_intf/pncconf/pncconf.py:152 +msgid "8i20 Servo Drive" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:448 -#: src/emc/usr_intf/stepconf/stepconf.py:788 -msgid "# overwritten when you run stepconf again" +#: src/emc/usr_intf/pncconf/pncconf.py:153 +#, fuzzy +msgid "POT Output" +msgstr "輸出" + +#: src/emc/usr_intf/pncconf/pncconf.py:153 +#, fuzzy +msgid "POT Enable" +msgstr "啟用" + +#: src/emc/usr_intf/pncconf/pncconf.py:153 +#, fuzzy +msgid "POT Direction" +msgstr "掃描方向" + +#: src/emc/usr_intf/pncconf/pncconf.py:154 +msgid "GPIO Input" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:516 -msgid "# add halui MDI commands here (max 64) " +#: src/emc/usr_intf/pncconf/pncconf.py:154 +msgid "GPIO Output" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:991 -#: src/emc/usr_intf/pncconf/pncconf.py:2991 -msgid "# **** Setup for external estop ladder program -START ****" +#: src/emc/usr_intf/pncconf/pncconf.py:154 +msgid "GPIO O Drain" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:998 -#: src/emc/usr_intf/pncconf/pncconf.py:2998 -msgid "# **** Setup for external estop ladder program -END ****" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-A" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1018 -#: src/emc/usr_intf/pncconf/pncconf.py:3025 -msgid "" -"# Load Classicladder with modbus master included (GUI must run for Modbus)" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-B" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1021 -#: src/emc/usr_intf/pncconf/pncconf.py:3030 -msgid "# Load Classicladder without GUI (can reload LADDER GUI in AXIS GUI" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-I" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1031 -#: src/emc/usr_intf/pncconf/pncconf.py:3112 -msgid "Include your PyVCP panel here.\n" +#: src/emc/usr_intf/pncconf/pncconf.py:155 +msgid "Quad Encoder-M" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1040 -#: src/emc/usr_intf/stepconf/stepconf.py:1087 -msgid "# Include your customized HAL commands here" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +#, fuzzy +msgid "Muxed Encoder 0" +msgstr "未使用的編碼器" + +#: src/emc/usr_intf/pncconf/pncconf.py:156 +#, fuzzy +msgid "Muxed Encoder 1" +msgstr "未使用的編碼器" + +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "muxed enc" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1041 -msgid "" -"# The commands in this file are run after the AXIS GUI (including PyVCP " -"panel) starts" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +msgid "mux enc mask" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1045 -#: src/emc/usr_intf/pncconf/pncconf.py:3140 -msgid "# **** Setup of spindle speed display using pyvcp -START ****" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:156 +#, fuzzy +msgid "mux select" +msgstr "選擇歸零" + +#: src/emc/usr_intf/pncconf/pncconf.py:157 +#, fuzzy +msgid "Resolver 0 Encoder" +msgstr "復位編碼器" + +#: src/emc/usr_intf/pncconf/pncconf.py:157 +#, fuzzy +msgid "Resolver 1 Encoder" +msgstr "復位編碼器" + +#: src/emc/usr_intf/pncconf/pncconf.py:157 +#, fuzzy +msgid "Resolver 2 Encoder" +msgstr "復位編碼器" -#: src/emc/usr_intf/stepconf/stepconf.py:1047 -msgid "# **** Use ACTUAL spindle velocity from spindle encoder" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:158 +#, fuzzy +msgid "Resolver 3 Encoder" +msgstr "復位編碼器" -#: src/emc/usr_intf/stepconf/stepconf.py:1048 -msgid "# **** spindle-velocity bounces around so we filter it with lowpass" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:158 +#, fuzzy +msgid "Resolver 4 Encoder" +msgstr "復位編碼器" -#: src/emc/usr_intf/stepconf/stepconf.py:1049 -msgid "" -"# **** spindle-velocity is signed so we use absolute component to remove sign" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:158 +#, fuzzy +msgid "Resolver 5 Encoder" +msgstr "復位編碼器" -#: src/emc/usr_intf/stepconf/stepconf.py:1050 -msgid "# **** ACTUAL velocity is in RPS not RPM so we scale it." +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Step Gen-A" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1059 -msgid "# **** set up spindle at speed indicator ****" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Dir Gen-B" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1072 -msgid "" -"# **** Use COMMANDED spindle velocity from LinuxCNC because no spindle " -"encoder was specified" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Step/Dir Gen-C" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1073 -msgid "" -"# **** COMANDED velocity is signed so we use absolute component (abs.0) to " -"remove sign" +#: src/emc/usr_intf/pncconf/pncconf.py:159 +msgid "Step/Dir Gen-D" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1088 -msgid "# This file will not be overwritten when you run stepconf again" +#: src/emc/usr_intf/pncconf/pncconf.py:160 +msgid "Step/Dir Gen-E" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1095 -#, python-format -msgid "Generated by stepconf at %s" +#: src/emc/usr_intf/pncconf/pncconf.py:160 +msgid "Step/dir Gen-F" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1166 -#: src/emc/usr_intf/pncconf/pncconf.py:3451 -#, python-format -msgid "launch %s" +#: src/emc/usr_intf/pncconf/pncconf.py:161 +msgid "Pulse Width Gen-P" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1170 -#, fuzzy -msgid "Desktop Launcher for LinuxCNC config made by Stepconf" -msgstr "創建一個桌面 啟動器 啟動 LinuxCNC 與 此配置." - -#: src/emc/usr_intf/stepconf/stepconf.py:1196 -#: src/emc/usr_intf/pncconf/pncconf.py:3700 -#, python-format -msgid "%s Axis Configuration" +#: src/emc/usr_intf/pncconf/pncconf.py:161 +msgid "Pulse Width Gen-D" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1238 -#: src/emc/usr_intf/stepconf/stepconf.py:1337 -msgid "Other" +#: src/emc/usr_intf/pncconf/pncconf.py:161 +msgid "Pulse Width Gen-E" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1249 -msgid "Quit Stepconf and discard changes?" +#: src/emc/usr_intf/pncconf/pncconf.py:162 +msgid "Pulse Density Gen-P" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1280 -msgid "" -"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " -"of hardware is unavailable." +#: src/emc/usr_intf/pncconf/pncconf.py:162 +msgid "Pulse Density Gen-D" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1283 -msgid "" -"You are using a realtime version of LinuxCNC but didn't load a realtime " -"kernel so testing / tuning of hardware is unavailable.\n" -"This is possibly because you updated the OS and it doesn't automatically " -"load the RTAI kernel anymore.\n" +#: src/emc/usr_intf/pncconf/pncconf.py:162 +msgid "Pulse Density Gen-E" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1298 -#, fuzzy -msgid "LinuxCNC 'stepconf' configuration files" -msgstr "打開配置文件:" - -#: src/emc/usr_intf/stepconf/stepconf.py:1299 -#: src/emc/usr_intf/pncconf/pncconf.py:4094 -msgid "Modify Existing Configuration" +#: src/emc/usr_intf/pncconf/pncconf.py:163 +msgid "Up/Down Mode -Up" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1439 -msgid "" -"You need to designate an E-stop input pin in the Parallel Port Setup page " -"for this program." +#: src/emc/usr_intf/pncconf/pncconf.py:163 +msgid "Up/Down Mode-Down" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1452 -msgid "" -"OK to replace existing custom ladder program?\n" -"Existing Custom.clp will be renamed custom_backup.clp.\n" -"Any existing file named -custom_backup.clp- will be lost. " +#: src/emc/usr_intf/pncconf/pncconf.py:163 +msgid "Up/Down Mode-Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1457 -#: src/emc/usr_intf/pncconf/pncconf.py:7815 -msgid "" -"You edited a ladder program and have selected a different program to copy to " -"your configuration file.\n" -"The edited program will be lost.\n" -"\n" -"Are you sure? " +#: src/emc/usr_intf/pncconf/pncconf.py:164 +msgid "Motor Phase A" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1471 -msgid "" -"OK to replace existing custom pyvcp panel and custom_postgui.hal file ?\n" -"Existing custompanel.xml and custom_postgui.hal will be renamed " -"custompanel_backup.xml and postgui_backup.hal.\n" -"Any existing file named custompanel_backup.xml and custom_postgui.hal will " -"be lost. " +#: src/emc/usr_intf/pncconf/pncconf.py:164 +msgid "Motor Phase B" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1676 -msgid "degree / rev" +#: src/emc/usr_intf/pncconf/pncconf.py:164 +msgid "Motor Phase C" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1677 -#: src/emc/usr_intf/stepconf/stepconf.py:2205 -msgid "deg / s" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Phase A Not" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1678 -#: src/emc/usr_intf/stepconf/stepconf.py:2206 -msgid "deg / s²" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Phase B Not" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1679 -#: src/emc/usr_intf/stepconf/stepconf.py:2207 -msgid "deg" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Phase C Not" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1680 -msgid "Steps / deg" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1682 -#: src/emc/usr_intf/stepconf/stepconf.glade:3589 -#: src/emc/usr_intf/pncconf/pncconf.glade:66138 -#: src/emc/usr_intf/pncconf/pncconf.glade:66424 -msgid "mm / rev" +#: src/emc/usr_intf/pncconf/pncconf.py:165 +msgid "Motor Fault" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1683 -#: src/emc/usr_intf/stepconf/stepconf.py:2219 -#: src/emc/usr_intf/stepconf/stepconf.glade:3604 -#: src/emc/usr_intf/pncconf/pncconf.glade:57828 -msgid "mm / s" +#: src/emc/usr_intf/pncconf/pncconf.py:168 +msgid "SMARTSERIAL-P0-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1684 -#: src/emc/usr_intf/stepconf/stepconf.py:2220 -#: src/emc/usr_intf/stepconf/stepconf.glade:3619 -#: src/emc/usr_intf/pncconf/pncconf.glade:57813 -msgid "mm / s²" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P0-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1686 -#: src/emc/usr_intf/stepconf/stepconf.glade:3075 -#: src/emc/usr_intf/pncconf/pncconf.glade:66888 -msgid "Steps / mm" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P0-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1688 -msgid "rev / in" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1689 -#: src/emc/usr_intf/stepconf/stepconf.py:2233 -msgid "in / s" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1690 -#: src/emc/usr_intf/stepconf/stepconf.py:2234 -msgid "in / s²" +#: src/emc/usr_intf/pncconf/pncconf.py:169 +msgid "SMARTSERIAL-P1-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:1692 -msgid "Steps / in" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.py:2202 -#: src/emc/usr_intf/pncconf/pncconf.py:8893 -#, python-format -msgid "%s Axis Test" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:8 -#: src/emc/usr_intf/stepconf/stepconf.glade:21 -#, fuzzy -msgid "LinuxCNC Stepper Mill Configuration" -msgstr "樣辦配置" - -#: src/emc/usr_intf/stepconf/stepconf.glade:22 -msgid "" -"This program creates configuration files (.ini and .hal) for \"step and " -"direction\" milling machines and lathes connected to the PC parallel port.\n" -"\n" -"Stepconf requires a minimum 800 X 600 display resolution.\n" -"You may need to collapse the 'Driver Timing Settings' and \n" -"Parallel Port Settings' expanders." +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P2-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:51 -msgid "Create a _new configuration" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:69 -#: src/emc/usr_intf/pncconf/pncconf.glade:70 -msgid "Modify a configuration already created with this program" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:87 -#: src/emc/usr_intf/pncconf/pncconf.glade:88 -msgid "Do you wish to:" +#: src/emc/usr_intf/pncconf/pncconf.py:170 +msgid "SMARTSERIAL-P3-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:99 -#: src/emc/usr_intf/pncconf/pncconf.glade:100 -msgid "" -"If you have made modifications to this configuration outside this program, " -"they will be lost when you select \"Modify a configuration\"" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:116 -msgid "Create a desktop _shortcut (symlink) to configuration files." +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:133 -msgid "Create a desktop _launcher to start LinuxCNC with this configuration." +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P4-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:169 -#: src/emc/usr_intf/pncconf/pncconf.glade:175 -msgid "Basic machine information" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:327 -msgid "Step _Time:" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:356 -#: src/emc/usr_intf/stepconf/stepconf.glade:402 -#: src/emc/usr_intf/stepconf/stepconf.glade:449 -#: src/emc/usr_intf/stepconf/stepconf.glade:494 -#: src/emc/usr_intf/stepconf/stepconf.glade:909 -#: src/emc/usr_intf/pncconf/pncconf.glade:458 -#: src/emc/usr_intf/pncconf/pncconf.glade:8256 -msgid "ns" +#: src/emc/usr_intf/pncconf/pncconf.py:171 +msgid "SMARTSERIAL-P5-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:369 -msgid "Step _Space:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:417 -msgid "Direction _Hold:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:464 -msgid "_Direction Setup:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P6-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:512 -msgid "Driver Timing Settings" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-TX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:538 -msgid "First Parport _Base Address:" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-RX" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:564 -msgid " Out" +#: src/emc/usr_intf/pncconf/pncconf.py:172 +msgid "SMARTSERIAL-P7-EN" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:575 -#: src/emc/usr_intf/stepconf/stepconf.glade:591 -msgid "" -"Out\n" -"In" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS0)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:633 -msgid "S_econd Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS2)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:650 -msgid "T_hird Parport Address:" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i76 I/O (SS3)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:667 -msgid " Parallel Port Settings" +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 I/O (SS0)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:684 -msgid "" -"_Test Base\n" -"Period Jitter " +#: src/emc/usr_intf/pncconf/pncconf.py:173 +msgid "7i77 Analog (SS1)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:703 -msgid "Machine _Name:" +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 I/O (SS3)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:716 -msgid "_Axis configuration:" +#: src/emc/usr_intf/pncconf/pncconf.py:174 +msgid "7i77 Analog (SS4)" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:730 -msgid "Machine _units:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:176 +#, fuzzy +msgid "Analog Input" +msgstr "模擬控制" -#: src/emc/usr_intf/stepconf/stepconf.glade:744 -#: src/emc/usr_intf/pncconf/pncconf.glade:246 -msgid "Configuration directory:" +#: src/emc/usr_intf/pncconf/pncconf.py:277 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +msgid "Axis Selection" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:757 -msgid "D_river type:" +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "" +"7i64-Input\n" +"P3 and P4" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:785 -#: src/emc/usr_intf/pncconf/pncconf.glade:326 +#: src/emc/usr_intf/pncconf/pncconf.py:285 msgid "" -"Inch\n" -"Millimeter" +"7i64-Output\n" +"P2 and P5" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:800 -#: src/emc/usr_intf/pncconf/pncconf.glade:291 -msgid "" -"XYZ\n" -"XYZA\n" -"XZ (Lathe)" +#: src/emc/usr_intf/pncconf/pncconf.py:285 +msgid "7i64-Analog In" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:847 +#: src/emc/usr_intf/pncconf/pncconf.py:293 msgid "" -"Driver characteristics: (Multiply by 1000 for times specified in µs or " -"microseconds)\n" -" Additional signal conditioning or isolation such as optocouplers " -"and RC filters\n" -" can impose timing constraints of their own, in addition to those of " -"the driver." +"7i69\n" +"P2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:875 -msgid "Base Period Maximum _Jitter:" +#: src/emc/usr_intf/pncconf/pncconf.py:293 +msgid "" +"7i69\n" +"P3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:924 -msgid "Max step rate:" +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:940 -msgid "Min Base Period:" +#: src/emc/usr_intf/pncconf/pncconf.py:301 +msgid "" +"7i70-Input\n" +"TB2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:956 +#: src/emc/usr_intf/pncconf/pncconf.py:309 msgid "" -"_Onscreen prompt for\n" -"tool change" +"7i71-Output\n" +"TB3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1015 -msgid "Advanced Configuration Options" +#: src/emc/usr_intf/pncconf/pncconf.py:309 +msgid "" +"7i71-Output\n" +"TB2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1033 -msgid "Include Halui user interface component" +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-I/O\n" +"TB6" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1074 -#: src/emc/usr_intf/pncconf/pncconf.glade:6745 -msgid "Blank program" +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-I/O\n" +"TB5" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1089 -#: src/emc/usr_intf/pncconf/pncconf.glade:6760 -msgid "Spindle speed display " +#: src/emc/usr_intf/pncconf/pncconf.py:317 +msgid "" +"7i76-Analog Output\n" +"TB4" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1105 -#: src/emc/usr_intf/stepconf/stepconf.glade:1543 -#: src/emc/usr_intf/pncconf/pncconf.glade:6791 -#: src/emc/usr_intf/pncconf/pncconf.glade:7112 -#: src/emc/usr_intf/pncconf/pncconf.glade:59393 -msgid "Existing custom program" +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB8" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1120 -#: src/emc/usr_intf/stepconf/stepconf.glade:1559 -#: src/emc/usr_intf/pncconf/pncconf.glade:6806 -#: src/emc/usr_intf/pncconf/pncconf.glade:59409 -msgid "Include connections to HAL" +#: src/emc/usr_intf/pncconf/pncconf.py:325 +msgid "" +"7i77-I/O\n" +"TB7" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1154 -#: src/emc/usr_intf/pncconf/pncconf.glade:6989 -#: src/emc/usr_intf/pncconf/pncconf.glade:7537 +#: src/emc/usr_intf/pncconf/pncconf.py:325 msgid "" -"_Display\n" -"sample\n" -"panel" +"7i77-Analog Output\n" +"TB5" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1188 -#: src/emc/usr_intf/pncconf/pncconf.glade:7048 -msgid "Include custom PyVCP GUI panel" +#: src/emc/usr_intf/pncconf/pncconf.py:333 +msgid "7i73-I/O\n" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1321 -#: src/emc/usr_intf/pncconf/pncconf.glade:59199 -msgid " Number of analog (float) out pins:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:348 +#, fuzzy +msgid "Unused Unused" +msgstr "未使用的編碼器" -#: src/emc/usr_intf/stepconf/stepconf.glade:1335 -#: src/emc/usr_intf/pncconf/pncconf.glade:59184 -msgid " Number of analog (float) in pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +#, fuzzy +msgid "Machine Is Enabled" +msgstr "機器 名稱:" + +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "X Amplifier Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1349 -#: src/emc/usr_intf/pncconf/pncconf.glade:59169 -msgid " Number of analog (s32) out pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "Y Amplifier Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1363 -#: src/emc/usr_intf/pncconf/pncconf.glade:59153 -msgid " Number of analog (s32) in pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:370 +msgid "Z Amplifier Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1378 -msgid "Number of digital out pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:371 +msgid "A Amplifier Enable" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1403 -msgid "Number of digital in pins:" +#: src/emc/usr_intf/pncconf/pncconf.py:371 +msgid "Force Pin True" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1414 -msgid "setup number of external pins" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X HALL 1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1429 -#: src/emc/usr_intf/pncconf/pncconf.glade:59213 -msgid "Include modbus master support" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X HALL 2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1500 -#: src/emc/usr_intf/pncconf/pncconf.glade:59333 -msgid "Blank ladder program" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X HALL 3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1513 -#: src/emc/usr_intf/pncconf/pncconf.glade:59346 -msgid "Estop ladder program" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1527 -#: src/emc/usr_intf/pncconf/pncconf.glade:59377 -msgid "Serial modbus program" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1592 -#: src/emc/usr_intf/pncconf/pncconf.glade:59443 -msgid "" -"Edit ladder\n" -"program" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C4" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1628 -#: src/emc/usr_intf/pncconf/pncconf.glade:59479 -msgid "Include _Classicladder PLC" +#: src/emc/usr_intf/pncconf/pncconf.py:373 +#: src/emc/usr_intf/pncconf/pncconf.py:401 +msgid "X Gray C8" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1653 -msgid "Parallel Port Setup" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y HALL 1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1760 -#: src/emc/usr_intf/pncconf/pncconf.glade:54010 -msgid "Pin _1:" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y HALL 2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1774 -#: src/emc/usr_intf/pncconf/pncconf.glade:54024 -#: src/emc/usr_intf/pncconf/pncconf.glade:55239 -msgid "Pin _2:" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y HALL 3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1788 -#: src/emc/usr_intf/pncconf/pncconf.glade:54038 -#: src/emc/usr_intf/pncconf/pncconf.glade:55256 -msgid "Pin _3:" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1802 -#: src/emc/usr_intf/pncconf/pncconf.glade:54052 -#: src/emc/usr_intf/pncconf/pncconf.glade:55273 -msgid "Pin _4:" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1816 -#: src/emc/usr_intf/pncconf/pncconf.glade:54066 -#: src/emc/usr_intf/pncconf/pncconf.glade:55290 -msgid "Pin _5:" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C4" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1830 -#: src/emc/usr_intf/pncconf/pncconf.glade:54080 -#: src/emc/usr_intf/pncconf/pncconf.glade:55307 -msgid "Pin _6:" +#: src/emc/usr_intf/pncconf/pncconf.py:374 +#: src/emc/usr_intf/pncconf/pncconf.py:402 +msgid "Y Gray C8" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1844 -#: src/emc/usr_intf/pncconf/pncconf.glade:54094 -#: src/emc/usr_intf/pncconf/pncconf.glade:55324 -msgid "Pin _7:" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z HALL 1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1858 -#: src/emc/usr_intf/pncconf/pncconf.glade:54108 -#: src/emc/usr_intf/pncconf/pncconf.glade:55341 -msgid "Pin _8:" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z HALL 2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1872 -#: src/emc/usr_intf/pncconf/pncconf.glade:54122 -#: src/emc/usr_intf/pncconf/pncconf.glade:55358 -msgid "Pin _9:" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z HALL 3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1886 -#: src/emc/usr_intf/pncconf/pncconf.glade:54136 -msgid "_Pin 14:" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1900 -#: src/emc/usr_intf/pncconf/pncconf.glade:54150 -msgid "P_in 16:" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:1914 -#: src/emc/usr_intf/pncconf/pncconf.glade:54164 -msgid "Pi_n 17:" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C4" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2258 -msgid "Outputs (PC to Mill):" +#: src/emc/usr_intf/pncconf/pncconf.py:375 +#: src/emc/usr_intf/pncconf/pncconf.py:403 +msgid "Z Gray C8" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2270 -#: src/emc/usr_intf/pncconf/pncconf.glade:55222 -msgid "Pin 1_0:" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A HALL 1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2286 -#: src/emc/usr_intf/pncconf/pncconf.glade:55206 -msgid "Pin 1_1:" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A HALL 2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2302 -#: src/emc/usr_intf/pncconf/pncconf.glade:55190 -msgid "Pin 1_2:" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A HALL 3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2318 -#: src/emc/usr_intf/pncconf/pncconf.glade:55174 -msgid "Pin 1_3:" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2334 -#: src/emc/usr_intf/pncconf/pncconf.glade:55158 -msgid "Pin 1_5:" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2399 -msgid "Inputs (Mill to PC):" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C4" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2425 -#: src/emc/usr_intf/stepconf/stepconf.glade:2438 -#: src/emc/usr_intf/pncconf/pncconf.glade:54578 -#: src/emc/usr_intf/pncconf/pncconf.glade:54591 -msgid "Invert" +#: src/emc/usr_intf/pncconf/pncconf.py:376 +#: src/emc/usr_intf/pncconf/pncconf.py:404 +msgid "A Gray C8" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2887 -msgid "_Sherline Outputs" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S HALL 1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2905 -msgid "_Xylotex Outputs" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S HALL 2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:2923 -msgid "Output pinout presets:" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S HALL 3" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3022 -#: src/emc/usr_intf/pncconf/pncconf.glade:57970 -msgid "X Axis Configuration" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C1" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3090 -msgid "_Motor steps per revolution:" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C2" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3103 -msgid "_Driver Microstepping:" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C4" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3118 -msgid "_Pulley teeth (Motor:Leadscrew):" +#: src/emc/usr_intf/pncconf/pncconf.py:377 +#: src/emc/usr_intf/pncconf/pncconf.py:405 +msgid "S Gray C8" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3133 -msgid "_Leadscrew Pitch:" +#: src/emc/usr_intf/pncconf/pncconf.py:378 +msgid "Unused Output" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3148 -#: src/emc/usr_intf/pncconf/pncconf.glade:57858 -msgid "Maximum _Velocity:" +#: src/emc/usr_intf/pncconf/pncconf.py:378 +msgid "Coolant" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3163 -#: src/emc/usr_intf/pncconf/pncconf.glade:57843 -msgid "Maximum _Acceleration:" +#: src/emc/usr_intf/pncconf/pncconf.py:379 +msgid "Control" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3178 -#: src/emc/usr_intf/pncconf/pncconf.glade:67063 -msgid "Time to accelerate to max speed:" +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:409 +msgid "Digital" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3193 -msgid "Distance to accelerate to max speed:" +#: src/emc/usr_intf/pncconf/pncconf.py:379 +#: src/emc/usr_intf/pncconf/pncconf.py:410 +msgid "X BLDC Control" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3292 -#: src/emc/usr_intf/pncconf/pncconf.glade:67036 -msgid "Pulse rate at max speed:" +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 +msgid "Y BLDC Control" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3362 -msgid "_Home location:" +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 +msgid "Z BLDC Control" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3377 -msgid "Home _Switch location:" +#: src/emc/usr_intf/pncconf/pncconf.py:380 +#: src/emc/usr_intf/pncconf/pncconf.py:411 +msgid "A BLDC Control" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3392 -msgid "Home Sear_ch velocity:" +#: src/emc/usr_intf/pncconf/pncconf.py:381 +msgid " S BLDC Control" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3407 -msgid "Home La_tch direction:" +#: src/emc/usr_intf/pncconf/pncconf.py:381 +#: src/emc/usr_intf/pncconf/pncconf.py:412 +#: src/emc/usr_intf/pncconf/pncconf.py:488 +#: src/emc/usr_intf/pncconf/pncconf.py:516 +#: src/emc/usr_intf/pncconf/pncconf.py:519 +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.py:528 +#: src/emc/usr_intf/pncconf/pncconf.py:553 +#: src/emc/usr_intf/pncconf/pncconf.py:568 +#: src/emc/usr_intf/pncconf/pncconf.py:580 +msgid "Custom Signals" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3420 -#: src/emc/usr_intf/pncconf/pncconf.glade:66232 -#: src/emc/usr_intf/pncconf/pncconf.glade:66274 -#: src/emc/usr_intf/pncconf/pncconf.glade:66505 -#: src/emc/usr_intf/pncconf/pncconf.glade:66570 -msgid "_:" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 +msgid "X Minimum Limit" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3437 -#: src/emc/usr_intf/pncconf/pncconf.glade:58536 -msgid "" -"Same\n" -"Opposite" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:472 +msgid "Y Minimum Limit" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3492 -msgid "Tab_le travel:" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 +msgid "Z Minimum Limit" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3519 -msgid "t_o" +#: src/emc/usr_intf/pncconf/pncconf.py:383 +#: src/emc/usr_intf/pncconf/pncconf.py:473 +msgid "A Minimum Limit" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3649 -msgid "s" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 +msgid "X Maximum Limit" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3703 -msgid "T_est this axis" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:474 +msgid "Y Maximum Limit" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3729 -msgid "Axis SCALE:" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 +msgid "Z Maximum Limit" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3765 -msgid "Spindle Configuration" +#: src/emc/usr_intf/pncconf/pncconf.py:384 +#: src/emc/usr_intf/pncconf/pncconf.py:475 +msgid "A Maximum Limit" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3785 -msgid "Use spindle-at-speed:" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 +msgid "X Both Limit" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3841 -msgid "Speed display filter gain:" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:476 +msgid "Y Both Limit" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3870 -msgid "Calibration:" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 +msgid "Z Both Limit" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3883 -msgid "_Speed 1:" +#: src/emc/usr_intf/pncconf/pncconf.py:385 +#: src/emc/usr_intf/pncconf/pncconf.py:477 +msgid "A Both Limit" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3898 -msgid "_PWM 1:" +#: src/emc/usr_intf/pncconf/pncconf.py:386 +#: src/emc/usr_intf/pncconf/pncconf.py:477 +msgid "All Limits" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3916 -msgid "S_peed 2:" +#: src/emc/usr_intf/pncconf/pncconf.py:387 +msgid "X Home" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3931 -msgid "P_WM 2:" +#: src/emc/usr_intf/pncconf/pncconf.py:387 +msgid "Y Home" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:3949 -msgid "PWM _Rate:" +#: src/emc/usr_intf/pncconf/pncconf.py:387 +msgid "Z Home" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4025 -msgid "_Cycles per revolution:" +#: src/emc/usr_intf/pncconf/pncconf.py:387 +msgid "A Home" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4079 -msgid "Enter 0 Hz for \"PDM\" mode" +#: src/emc/usr_intf/pncconf/pncconf.py:387 +msgid "All Home" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4091 -msgid "Scale %" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 +msgid "X Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4113 -#: src/emc/usr_intf/pncconf/pncconf.glade:60002 -msgid "Machine configuration complete" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:465 +msgid "Y Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4114 -#: src/emc/usr_intf/pncconf/pncconf.glade:60003 -msgid "" -"All the necessary information has now been gathered. Click \"Apply\" to " -"write your configuration files to disk.\n" -"If you experience lockups while running LinuxCNC, you will need to decrease " -"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" -"\n" -"If you experience lost steps while running LinuxCNC, first verify that you " -"entered the proper timings for your stepper drivers. If that does not fix " -"the problem, then run a more thorough latency test as described on the " -"linuxcnc.org wiki:\n" -" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" -"\n" -"If you experience the \"Unexpected Realtime Delay\" message, run a more " -"thorough latency test as described on the linuxcnc.org wiki: \n" -" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 +msgid "Z Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4160 -#: src/emc/usr_intf/pncconf/pncconf.glade:60462 -#: src/emc/usr_intf/pncconf/pncconf.glade:61557 -#: src/emc/usr_intf/pncconf/pncconf.glade:62650 -#: src/emc/usr_intf/pncconf/pncconf.glade:63743 -#: src/emc/usr_intf/pncconf/pncconf.glade:64842 -msgid "Acceleration:" +#: src/emc/usr_intf/pncconf/pncconf.py:388 +#: src/emc/usr_intf/pncconf/pncconf.py:466 +msgid "A Minimum Limit + Home" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4174 -#: src/emc/usr_intf/pncconf/pncconf.glade:60231 -#: src/emc/usr_intf/pncconf/pncconf.glade:60695 -#: src/emc/usr_intf/pncconf/pncconf.glade:61788 -#: src/emc/usr_intf/pncconf/pncconf.glade:62881 -#: src/emc/usr_intf/pncconf/pncconf.glade:63974 -#: src/emc/usr_intf/pncconf/pncconf.glade:64954 -msgid "Jog:" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 +msgid "X Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4188 -#: src/emc/usr_intf/pncconf/pncconf.glade:60681 -#: src/emc/usr_intf/pncconf/pncconf.glade:61774 -#: src/emc/usr_intf/pncconf/pncconf.glade:62867 -#: src/emc/usr_intf/pncconf/pncconf.glade:63960 -msgid "Test Area:" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:467 +msgid "Y Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4217 -msgid "mm/s^2" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 +msgid "Z Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4253 -msgid "mm/s" +#: src/emc/usr_intf/pncconf/pncconf.py:389 +#: src/emc/usr_intf/pncconf/pncconf.py:468 +msgid "A Maximum Limit + Home" msgstr "" -#: src/emc/usr_intf/stepconf/stepconf.glade:4329 -#: src/emc/usr_intf/pncconf/pncconf.glade:60620 -#: src/emc/usr_intf/pncconf/pncconf.glade:61713 -#: src/emc/usr_intf/pncconf/pncconf.glade:62806 -#: src/emc/usr_intf/pncconf/pncconf.glade:63899 -#: src/emc/usr_intf/pncconf/pncconf.glade:65066 -msgid "" -"±\n" -"+\n" -"-\n" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 +msgid "X Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:79 -msgid "" -"PNCconf encountered an error. The following information may be useful in " -"troubleshooting:\n" -"\n" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:469 +msgid "Y Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:149 -msgid "Not Used" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 +msgid "Z Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:149 -#: src/emc/usr_intf/pncconf/pncconf.py:150 -msgid "Dummy" +#: src/emc/usr_intf/pncconf/pncconf.py:390 +#: src/emc/usr_intf/pncconf/pncconf.py:470 +msgid "A Both Limit + Home" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:150 -msgid "8i20 Servo Drive" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:392 +msgid "Joint select A" +msgstr "關節 選 A" -#: src/emc/usr_intf/pncconf/pncconf.py:151 -#, fuzzy -msgid "POT Output" -msgstr "輸出" +#: src/emc/usr_intf/pncconf/pncconf.py:392 +msgid "Joint select B" +msgstr "Joint 選 B" -#: src/emc/usr_intf/pncconf/pncconf.py:151 -#, fuzzy -msgid "POT Enable" -msgstr "啟用" +#: src/emc/usr_intf/pncconf/pncconf.py:392 +msgid "Joint select C" +msgstr "Joint 選 C" -#: src/emc/usr_intf/pncconf/pncconf.py:151 -#, fuzzy -msgid "POT Direction" -msgstr "掃描方向" +#: src/emc/usr_intf/pncconf/pncconf.py:392 +msgid "Joint select D" +msgstr "Joint 選 D" -#: src/emc/usr_intf/pncconf/pncconf.py:152 -msgid "GPIO Input" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:152 -msgid "GPIO Output" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr B" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:152 -msgid "GPIO O Drain" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr C" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-A" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Jog incr D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-B" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Feed Override incr A" +msgstr "進給超速 遞增 A " -#: src/emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-I" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:393 +msgid "Feed Override incr B" +msgstr "進給超速 遞增 B" -#: src/emc/usr_intf/pncconf/pncconf.py:153 -msgid "Quad Encoder-M" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:394 +msgid "Feed Override incr C" +msgstr "進給超速 遞增 C" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -#, fuzzy -msgid "Muxed Encoder 0" -msgstr "未使用的編碼器" +#: src/emc/usr_intf/pncconf/pncconf.py:394 +msgid "Feed Override incr D" +msgstr "進給超速 遞增 D" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -#, fuzzy -msgid "Muxed Encoder 1" -msgstr "未使用的編碼器" +#: src/emc/usr_intf/pncconf/pncconf.py:394 +msgid "Spindle Override incr A" +msgstr "主軸超速 遞增 A" + +#: src/emc/usr_intf/pncconf/pncconf.py:394 +msgid "Spindle Override incr B" +msgstr "主軸超速 遞增 B" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "muxed enc" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:395 +msgid "Spindle Override incr C" +msgstr "主軸超速 遞增 C" -#: src/emc/usr_intf/pncconf/pncconf.py:154 -msgid "mux enc mask" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:395 +msgid "Spindle Override incr D" +msgstr "主軸超速 遞增 D" -#: src/emc/usr_intf/pncconf/pncconf.py:154 +#: src/emc/usr_intf/pncconf/pncconf.py:395 #, fuzzy -msgid "mux select" -msgstr "選擇歸零" +msgid "Max Vel Override incr A" +msgstr "進給超速 遞增 A " -#: src/emc/usr_intf/pncconf/pncconf.py:155 +#: src/emc/usr_intf/pncconf/pncconf.py:395 #, fuzzy -msgid "Resolver 0 Encoder" -msgstr "復位編碼器" +msgid "Max Vel Override incr B" +msgstr "進給超速 遞增 B" -#: src/emc/usr_intf/pncconf/pncconf.py:155 +#: src/emc/usr_intf/pncconf/pncconf.py:396 #, fuzzy -msgid "Resolver 1 Encoder" -msgstr "復位編碼器" +msgid "Max Vel Override incr C" +msgstr "進給超速 遞增 C" -#: src/emc/usr_intf/pncconf/pncconf.py:155 +#: src/emc/usr_intf/pncconf/pncconf.py:396 #, fuzzy -msgid "Resolver 2 Encoder" -msgstr "復位編碼器" +msgid "Max Vel Override incr D" +msgstr "進給超速 遞增 D" -#: src/emc/usr_intf/pncconf/pncconf.py:156 +#: src/emc/usr_intf/pncconf/pncconf.py:396 #, fuzzy -msgid "Resolver 3 Encoder" -msgstr "復位編碼器" +msgid "Feed Override enable" +msgstr "進給 超速" -#: src/emc/usr_intf/pncconf/pncconf.py:156 +#: src/emc/usr_intf/pncconf/pncconf.py:396 #, fuzzy -msgid "Resolver 4 Encoder" -msgstr "復位編碼器" +msgid "Spindle Override enable" +msgstr "設定主軸超速:" -#: src/emc/usr_intf/pncconf/pncconf.py:156 +#: src/emc/usr_intf/pncconf/pncconf.py:397 #, fuzzy -msgid "Resolver 5 Encoder" -msgstr "復位編碼器" +msgid "Max Vel Override enable" +msgstr "最大 進給 超越" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -msgid "Step Gen-A" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +msgid "Manual Spindle CW" +msgstr "手動 主軸 CW" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -msgid "Dir Gen-B" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +msgid "Manual Spindle CCW" +msgstr "手動 主軸 CCW" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -msgid "Step/Dir Gen-C" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +msgid "Manual Spindle Stop" +msgstr "手動 主軸 停" -#: src/emc/usr_intf/pncconf/pncconf.py:157 -msgid "Step/Dir Gen-D" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:398 +msgid "Spindle Up-To-Speed" +msgstr "主軸 達速" -#: src/emc/usr_intf/pncconf/pncconf.py:158 -msgid "Step/Dir Gen-E" +#: src/emc/usr_intf/pncconf/pncconf.py:399 +msgid "Cycle Start" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:158 -msgid "Step/dir Gen-F" +#: src/emc/usr_intf/pncconf/pncconf.py:399 +msgid "Abort" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 -msgid "Pulse Width Gen-P" +#: src/emc/usr_intf/pncconf/pncconf.py:399 +msgid "Single Step" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 -msgid "Pulse Width Gen-D" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 +msgid "Jog X +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:159 -msgid "Pulse Width Gen-E" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:460 +msgid "Jog X -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 -msgid "Pulse Density Gen-P" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 +msgid "Jog Y +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 -msgid "Pulse Density Gen-D" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:461 +msgid "Jog Y -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:160 -msgid "Pulse Density Gen-E" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 +msgid "Jog Z +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 -msgid "Up/Down Mode -Up" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:462 +msgid "Jog Z -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 -msgid "Up/Down Mode-Down" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 +msgid "Jog A +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:161 -msgid "Up/Down Mode-Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:406 +#: src/emc/usr_intf/pncconf/pncconf.py:463 +msgid "Jog A -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 -msgid "Motor Phase A" +#: src/emc/usr_intf/pncconf/pncconf.py:407 +msgid "Jog button selected +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 -msgid "Motor Phase B" +#: src/emc/usr_intf/pncconf/pncconf.py:407 +msgid "Jog button selected -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:162 -msgid "Motor Phase C" +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Unused Input" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Phase A Not" +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Limits" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Phase B Not" +#: src/emc/usr_intf/pncconf/pncconf.py:408 +msgid "Limts/Home Shared" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Phase C Not" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:409 +msgid "Overrides" +msgstr "超速" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:410 +msgid "Operation" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:163 -msgid "Motor Fault" +#: src/emc/usr_intf/pncconf/pncconf.py:410 +msgid "External Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:165 -msgid "SMARTSERIAL-P0-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:410 +msgid "Axis rapid" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P0-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:412 +msgid "S BLDC Control" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P0-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:487 +msgid "Unused PWM Gen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:487 +msgid "X Axis PWM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:487 +msgid "Y Axis PWM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:166 -msgid "SMARTSERIAL-P1-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:488 +msgid "Z Axis PWM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:488 +msgid "A Axis PWM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +msgid "X Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P2-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +msgid "Y Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +msgid "Z Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +msgid "A Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:167 -msgid "SMARTSERIAL-P3-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:512 +msgid "Spindle Encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "X Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "Y Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P4-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "Z Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "A Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:513 +msgid "Multi Hand Wheel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:168 -msgid "SMARTSERIAL-P5-EN" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:514 +msgid "Feed Override" +msgstr "進給 超速" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-TX" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:514 +msgid "spindle Override" +msgstr "主軸 超越" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:514 +#, fuzzy +msgid "Max Vel Override" +msgstr "最大 進給 超越" + +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "Unused Encoder" +msgstr "未使用的編碼器" + +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "Axis Encoder" +msgstr "軸編碼器" + +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "MPG Jog Controls" +msgstr "MPG 慢步 操控" + +#: src/emc/usr_intf/pncconf/pncconf.py:515 +msgid "Override MPG control" +msgstr "超速 MPG 操控" + +#: src/emc/usr_intf/pncconf/pncconf.py:518 +#, fuzzy +msgid "Unused Resolver" +msgstr "未使用的編碼器" + +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "X Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P6-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "Y Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-TX" +#: src/emc/usr_intf/pncconf/pncconf.py:518 +msgid "Z Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-RX" +#: src/emc/usr_intf/pncconf/pncconf.py:519 +msgid "A Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:169 -msgid "SMARTSERIAL-P7-EN" +#: src/emc/usr_intf/pncconf/pncconf.py:519 +msgid "S Resolver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #1" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +msgid "Unused 8I20" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:170 -msgid "7i76 sserial #2" +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "X Axis" +msgstr "X 軸" + +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Y Axis" +msgstr "Y 軸" + +#: src/emc/usr_intf/pncconf/pncconf.py:523 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Z Axis" +msgstr "Z 軸" + +#: src/emc/usr_intf/pncconf/pncconf.py:524 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "A Axis" +msgstr "A 軸" + +#: src/emc/usr_intf/pncconf/pncconf.py:528 +msgid "Unused Analog Output" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:420 +#: src/emc/usr_intf/pncconf/pncconf.py:528 +#, fuzzy +msgid "Spindle Output" +msgstr "主軸 關" + +#: src/emc/usr_intf/pncconf/pncconf.py:551 +msgid "Unused StepGen" +msgstr "未使用的 步進產生器" + +#: src/emc/usr_intf/pncconf/pncconf.py:551 +msgid "X Axis StepGen" +msgstr "X 軸 步進產生器" + +#: src/emc/usr_intf/pncconf/pncconf.py:551 +msgid "Y Axis StepGen" +msgstr "Y 軸 步進產生器" + +#: src/emc/usr_intf/pncconf/pncconf.py:551 +msgid "Z Axis StepGen" +msgstr "Z 軸 步進產生器" + +#: src/emc/usr_intf/pncconf/pncconf.py:552 +msgid "A Axis StepGen" +msgstr "A 軸 步進產生器" + +#: src/emc/usr_intf/pncconf/pncconf.py:552 +msgid "Spindle StepGen" +msgstr "主 軸 步進產生器" + +#: src/emc/usr_intf/pncconf/pncconf.py:552 +#, fuzzy +msgid "X2 Tandem StepGen" +msgstr "主 軸 步進產生器" + +#: src/emc/usr_intf/pncconf/pncconf.py:552 #, fuzzy -msgid "Unused Unused" -msgstr "未使用的編碼器" +msgid "Y2 Tandem StepGen" +msgstr "主 軸 步進產生器" -#: src/emc/usr_intf/pncconf/pncconf.py:442 +#: src/emc/usr_intf/pncconf/pncconf.py:553 #, fuzzy -msgid "Machine Is Enabled" -msgstr "機器 名稱:" +msgid "Z2 Tandem StepGen" +msgstr "主 軸 步進產生器" -#: src/emc/usr_intf/pncconf/pncconf.py:442 -msgid "X Amplifier Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:553 +msgid "Charge Pump StepGen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:442 -msgid "Y Amplifier Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:567 +msgid "Unused TPPWM Gen" +msgstr "未使用的 TPPWM 產生器" + +#: src/emc/usr_intf/pncconf/pncconf.py:567 +msgid "X Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:442 -msgid "Z Amplifier Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:567 +msgid "Y Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:443 -msgid "A Amplifier Enable" +#: src/emc/usr_intf/pncconf/pncconf.py:568 +msgid "Z Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:443 -msgid "Force Pin True" +#: src/emc/usr_intf/pncconf/pncconf.py:568 +msgid "A Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:568 +msgid "S Axis BL Driver" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +#: src/emc/usr_intf/pncconf/pncconf.py:6882 +#, fuzzy +msgid "Unused Channel" +msgstr "選擇通道" + +#: src/emc/usr_intf/pncconf/pncconf.py:576 +msgid "8i20 Amplifier Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +msgid "7i64 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:576 +msgid "7i69 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i70 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i71 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:445 -#: src/emc/usr_intf/pncconf/pncconf.py:472 -msgid "X Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i76 Mode 0 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:577 +msgid "7i77 Mode 0 I/O Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:578 +msgid "7i73 Mode 1 Pendant Card" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:580 +#, fuzzy +msgid "Unused Analog In" +msgstr "未使用的編碼器" + +#: src/emc/usr_intf/pncconf/pncconf.py:676 +msgid "my_LinuxCNC_machine" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:939 +#: src/emc/usr_intf/pncconf/pncconf.py:941 +msgid "Enter Address" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:1290 +msgid "" +"This configuration was saved with an earlier version of pncconf which may be " +"incompatible.\n" +"If it doesn't plainly cause an error, you still may want to save it with " +"another name and check it. Safer to start from scratch.\n" +"If you have a REALLY large config that you wish to convert to this newer " +"version of PNConf - ask on the LinuxCNC forum - it may be possible.." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:1296 +#, python-format +msgid "File %r was modified since it was written by PNCconf" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:446 -#: src/emc/usr_intf/pncconf/pncconf.py:473 -msgid "Y Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:1300 +msgid "" +"Saving this configuration file will discard configuration changes made " +"outside PNCconf." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:1327 +#: src/emc/usr_intf/pncconf/pncconf.py:2421 +#, python-format +msgid "# Generated by PNCconf at %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:1329 +#: src/emc/usr_intf/pncconf/pncconf.py:2423 +msgid "# overwritten when you run PNCconf again" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:2134 +msgid "# Use ACTUAL spindle velocity from spindle encoder" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:2135 +msgid "# spindle-velocity bounces around so we filter it with lowpass" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:2136 +msgid "" +"# spindle-velocity is signed so we use absolute component to remove sign" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:2137 +msgid "# ACTUAL velocity is in RPS not RPM so we scale it." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:447 -#: src/emc/usr_intf/pncconf/pncconf.py:474 -msgid "Z Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:2821 +msgid "# connect miscellaneous signals" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:2824 +msgid "# ---HALUI signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:2843 +msgid "# ---charge pump signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:2847 +msgid "# ---coolant signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:2852 +msgid "# ---probe signal---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:2857 +msgid "# ---jog button signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:2862 +msgid "# ---USB device jog button signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:448 -#: src/emc/usr_intf/pncconf/pncconf.py:475 -msgid "A Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:2903 +#: src/emc/usr_intf/pncconf/pncconf.py:2929 +msgid "# ---mpg signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S HALL 1" +#: src/emc/usr_intf/pncconf/pncconf.py:3111 +msgid "# ---motion control signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S HALL 2" +#: src/emc/usr_intf/pncconf/pncconf.py:3116 +msgid "# ---digital in / out signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S HALL 3" +#: src/emc/usr_intf/pncconf/pncconf.py:3126 +msgid "# ---estop signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C1" +#: src/emc/usr_intf/pncconf/pncconf.py:3145 +msgid "# ---manual tool change signals---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C2" +#: src/emc/usr_intf/pncconf/pncconf.py:3154 +msgid "# ---toolchange signals for custom tool changer---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C4" +#: src/emc/usr_intf/pncconf/pncconf.py:3176 +msgid "# --- Classicladder signals for Z axis Auto touch off program---" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:449 -#: src/emc/usr_intf/pncconf/pncconf.py:476 -msgid "S Gray C8" +#: src/emc/usr_intf/pncconf/pncconf.py:3195 +msgid "# These files are loaded post gladeVCP, in the order they appear" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:450 -msgid "Unused Output" +#: src/emc/usr_intf/pncconf/pncconf.py:3209 +#: src/emc/usr_intf/pncconf/pncconf.py:3276 +msgid "# _DO NOT_ include your HAL commands here." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:450 -#: src/emc/usr_intf/pncconf/pncconf.py:480 -#: src/emc/usr_intf/pncconf/pncconf.py:593 -msgid "Spindle" +#: src/emc/usr_intf/pncconf/pncconf.py:3210 +msgid "# Put custom HAL commands in custom_gvcp.hal" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:450 -msgid "Coolant" +#: src/emc/usr_intf/pncconf/pncconf.py:3213 +msgid "# **** Setup of spindle speed display using gladevcp ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -msgid "Control" +#: src/emc/usr_intf/pncconf/pncconf.py:3222 +msgid "# **** Setup GLADE MDI buttons ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:480 -msgid "Digital" +#: src/emc/usr_intf/pncconf/pncconf.py:3235 +msgid "" +"# **** Z axis touch-off button - requires the touch-off classicladder " +"program ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:451 -#: src/emc/usr_intf/pncconf/pncconf.py:481 -msgid "X BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:3265 +msgid "# These files are loaded post GUI, in the order they appear" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 -msgid "Y BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:3277 +msgid "# Put custom HAL commands in custom_postgui.hal" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 -msgid "Z BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:3278 +msgid "# The commands in this file are run after the GUI loads" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:452 -#: src/emc/usr_intf/pncconf/pncconf.py:482 -msgid "A BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:3288 +msgid "# **** Setup of spindle speed display using pyvcp -END ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:453 -msgid " S BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:3300 +msgid "# This file will not be overwritten when you run PNCconf again" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:453 -#: src/emc/usr_intf/pncconf/pncconf.py:483 -#: src/emc/usr_intf/pncconf/pncconf.py:557 -#: src/emc/usr_intf/pncconf/pncconf.py:585 -#: src/emc/usr_intf/pncconf/pncconf.py:588 -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.py:597 -#: src/emc/usr_intf/pncconf/pncconf.py:614 -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "Custom Signals" +#: src/emc/usr_intf/pncconf/pncconf.py:3306 +msgid "# These commands are required for Touchy GUI" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 -msgid "X Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:3358 +#, python-format +msgid "Generated by PNCconf at %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:541 -msgid "Y Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:3370 +msgid "configures LinuxCNC as:\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 -msgid "Z Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:3371 +msgid "type CNC\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:455 -#: src/emc/usr_intf/pncconf/pncconf.py:542 -msgid "A Minimum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:3372 +msgid "will be used as the frontend display" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 -msgid "X Maximum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:3381 +msgid " connector" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:543 -msgid "Y Maximum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:3393 +msgid "invrt" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 -msgid "Z Maximum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:3402 +#, python-format +msgid "%(name)s Parport" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:456 -#: src/emc/usr_intf/pncconf/pncconf.py:544 -msgid "A Maximum Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:3407 +#: src/emc/usr_intf/pncconf/pncconf.py:3415 +msgid "-> inverted" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 -msgid "X Both Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:3409 +#, python-format +msgid "pin# %(pinnum)d is connected to input signal:'%(data)s' %(mesag)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:545 -msgid "Y Both Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:3417 +#, python-format +msgid "pin# %(pinnum)d is connected to output signal:'%(data)s' %(mesag)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 -msgid "Z Both Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:3595 +#, fuzzy +msgid "Desktop Launcher for LinuxCNC config made by PNCconf" +msgstr "創建一個桌面 啟動器 啟動 LinuxCNC 與 此配置." + +#: src/emc/usr_intf/pncconf/pncconf.py:3856 +#, python-format +msgid "%s Axis Configuration" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:457 -#: src/emc/usr_intf/pncconf/pncconf.py:546 -msgid "A Both Limit" +#: src/emc/usr_intf/pncconf/pncconf.py:3881 +msgid "Spindle Motor/Encoder Configuration" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:458 -#: src/emc/usr_intf/pncconf/pncconf.py:546 -msgid "All Limits" +#: src/emc/usr_intf/pncconf/pncconf.py:3883 +#, python-format +msgid "%s Axis Motor/Encoder Configuration" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:459 -msgid "X Home" +#: src/emc/usr_intf/pncconf/pncconf.py:3912 +#, python-format +msgid "%s Parallel Port Setup" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:459 -msgid "Y Home" +#: src/emc/usr_intf/pncconf/pncconf.py:3936 +#, python-format +msgid "%s I/0 Setup" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:459 -msgid "Z Home" +#: src/emc/usr_intf/pncconf/pncconf.py:4162 +msgid "Quit PNCconfig and discard changes?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:459 -msgid "A Home" +#: src/emc/usr_intf/pncconf/pncconf.py:4203 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Help Pages" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:459 -msgid "All Home" +#: src/emc/usr_intf/pncconf/pncconf.py:4208 +msgid "Help page is unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 -msgid "X Minimum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:4218 +msgid "" +"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " +"of external hardware is unavailable." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:534 -msgid "Y Minimum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:4223 +#, python-format +msgid "" +"You are using a realtime version of LinuxCNC but didn't load a realtime " +"kernel so testing / tuning of external hardware is unavailable.\n" +" This is probably because you updated the OS and it doesn't load the RTAI " +"kernel anymore\n" +" You are using the %(actual)s kernel instead of %(needed)s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 -msgid "Z Minimum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:4256 +#, fuzzy +msgid "LinuxCNC 'PNCconf' configuration files" +msgstr "打開配置文件:" + +#: src/emc/usr_intf/pncconf/pncconf.py:4286 +msgid "" +"It seems data in this file is from too old of a version of PNCConf to " +"continue.\n" +"." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:460 -#: src/emc/usr_intf/pncconf/pncconf.py:535 -msgid "A Minimum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:4293 +#: src/emc/usr_intf/pncconf/pncconf.py:4391 +#, python-format +msgid "Point and click configuration - %s.pncconf " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 -msgid "X Maximum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:4413 +msgid "" +"You need to designate a parport and/or mesa I/O device before continuing." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:536 -msgid "Y Maximum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:4481 +msgid "" +"You Have choosen to re-edit the current config, so you can not go to the new/" +"modify page.\n" +" Quit and reload PNCconf if you wish to build a new config." +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.py:4485 +msgid "" +"If you can not go to the new/modify page your current data will be lost.\n" +"Ok to reset data and start a new configuration?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 -msgid "Z Maximum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:4811 +msgid "USB device Info Search" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:461 -#: src/emc/usr_intf/pncconf/pncconf.py:537 -msgid "A Maximum Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:4825 +msgid "USB device page is unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 -msgid "X Both Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:4890 +msgid "Pin names are unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:538 -msgid "Y Both Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:4912 +msgid "Device names are unavailable\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 -msgid "Z Both Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:4915 +msgid "No Pncconf made device rules were found\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:462 -#: src/emc/usr_intf/pncconf/pncconf.py:539 -msgid "A Both Limit + Home" +#: src/emc/usr_intf/pncconf/pncconf.py:5041 +msgid "" +"OK to replace existing glade panel ?\n" +"It will be renamed and added to 'backups' folder.\n" +" Clicking 'existing custom program' will avoid this warning, but if you " +"change related options later -such as spindle feedback- the HAL connection " +"will not update" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -msgid "Joint select A" -msgstr "關節 選 A" - -#: src/emc/usr_intf/pncconf/pncconf.py:464 -msgid "Joint select B" -msgstr "Joint 選 B" - -#: src/emc/usr_intf/pncconf/pncconf.py:464 -msgid "Joint select C" -msgstr "Joint 選 C" +#: src/emc/usr_intf/pncconf/pncconf.py:5047 +msgid "" +"OK to replace existing custom pyvcp panel?\n" +"Existing pyvcp-panel.xml will be renamed and added to 'backups' folder\n" +"Clicking 'existing custom program' will aviod this warning. " +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:464 -msgid "Joint select D" -msgstr "Joint 選 D" +#: src/emc/usr_intf/pncconf/pncconf.py:5493 +msgid "" +"You need to configure the mesa0 page.\n" +" Choose the board type, firmware, component amounts and press 'Accept " +"component changes' button'" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr A" +#: src/emc/usr_intf/pncconf/pncconf.py:5497 +msgid "" +"The chosen Mesa0 board is different from the current displayed.\n" +"please press 'Accept component changes' button'" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr B" +#: src/emc/usr_intf/pncconf/pncconf.py:5540 +msgid "" +"You need to configure the mesa1 page.\n" +" Choose the board type, firmware, component amounts and press 'Accept " +"component changes' button'" msgstr "" +"您需要配置mesa1頁. \n" +"選擇板型,固件組件 數量,並按下 '接受 組件更改' 按鈕" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr C" +#: src/emc/usr_intf/pncconf/pncconf.py:5544 +#, fuzzy +msgid "" +"The chosen Mesa1 board is different from the current displayed.\n" +"please press 'Accept component changes' button'" msgstr "" +"所選擇的Mesa1板不同於當前顯示.\n" +"請按 '接受組件 更改' 按鈕" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Jog incr D" +#: src/emc/usr_intf/pncconf/pncconf.py:5558 +msgid "" +"Do to technical reasons this test panel can be loaded only once without " +"reloading pncconf.You also will not be able to do any other testing untill " +"you reload pncconf and quite possibly open a terminal and type 'halrun -U' I " +"hesitate to even allow it's use but at times it's very useful.\n" +"Do you wish to continue the test?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Feed Override incr A" -msgstr "進給超速 遞增 A " +#: src/emc/usr_intf/pncconf/pncconf.py:7042 +msgid "First Parallel Port set for OUTPUT" +msgstr "第一 並行 端口 設置 為輸出" -#: src/emc/usr_intf/pncconf/pncconf.py:465 -msgid "Feed Override incr B" -msgstr "進給超速 遞增 B" +#: src/emc/usr_intf/pncconf/pncconf.py:7044 +msgid "First Parallel Port set for INPUT" +msgstr "第一 並行 端口 設置 為輸入" -#: src/emc/usr_intf/pncconf/pncconf.py:466 -msgid "Feed Override incr C" -msgstr "進給超速 遞增 C" +#: src/emc/usr_intf/pncconf/pncconf.py:7068 +msgid "Second Parallel Port set for OUTPUT" +msgstr "第二 並行 端口 設置 為輸出" -#: src/emc/usr_intf/pncconf/pncconf.py:466 -msgid "Feed Override incr D" -msgstr "進給超速 遞增 D" +#: src/emc/usr_intf/pncconf/pncconf.py:7070 +msgid "Second Parallel Port set for INPUT" +msgstr "第二 並行 端口 設置 為輸入" -#: src/emc/usr_intf/pncconf/pncconf.py:466 -msgid "Spindle Override incr A" -msgstr "主軸超速 遞增 A" +#: src/emc/usr_intf/pncconf/pncconf.py:7082 +msgid "Third Parallel Port set for OUTPUT" +msgstr "第三 並行 端口 設置 為輸出" -#: src/emc/usr_intf/pncconf/pncconf.py:466 -msgid "Spindle Override incr B" -msgstr "主軸超速 遞增 B" +#: src/emc/usr_intf/pncconf/pncconf.py:7084 +msgid "Third Parallel Port set for INPUT" +msgstr "第三 並行 端口 設置 為輸入" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -msgid "Spindle Override incr C" -msgstr "主軸超速 遞增 C" +#: src/emc/usr_intf/pncconf/pncconf.py:7210 +msgid "You can not have both steppers and pwm signals for spindle control\n" +msgstr "你不能 同時 擁有 步進電機 和 PWM信號 給主軸控制\n" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -msgid "Spindle Override incr D" -msgstr "主軸超速 遞增 D" +#: src/emc/usr_intf/pncconf/pncconf.py:7214 +#, python-format +msgid "You forgot to designate a stepper or pwm signal for axis %s\n" +msgstr "你忘了 指定 步進電機 或 PWM 信號 給軸 %s\n" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -#, fuzzy -msgid "Max Vel Override incr A" -msgstr "進給超速 遞增 A " +#: src/emc/usr_intf/pncconf/pncconf.py:7217 +#, fuzzy, python-format +msgid "You forgot to designate an encoder /resolver signal for axis %s servo\n" +msgstr "你忘了 指定 編碼器 信號 給軸 %s 伺服\n" -#: src/emc/usr_intf/pncconf/pncconf.py:467 -#, fuzzy -msgid "Max Vel Override incr B" -msgstr "進給超速 遞增 B" +#: src/emc/usr_intf/pncconf/pncconf.py:7220 +#, python-format +msgid "You forgot to designate a pwm signal or stepper signal for axis %s\n" +msgstr "你忘了 指定 一個 PWM 信號 或步進信號 給軸 %s\n" -#: src/emc/usr_intf/pncconf/pncconf.py:468 -#, fuzzy -msgid "Max Vel Override incr C" -msgstr "進給超速 遞增 C" +#: src/emc/usr_intf/pncconf/pncconf.py:7223 +#, python-format +msgid "You can not have both steppers and pwm signals for axis %s\n" +msgstr "你 不能 擁有 同時 用 步進電機 和PWM信號 的軸 %s\n" -#: src/emc/usr_intf/pncconf/pncconf.py:468 -#, fuzzy -msgid "Max Vel Override incr D" -msgstr "進給超速 遞增 D" +#: src/emc/usr_intf/pncconf/pncconf.py:7226 +#, python-format +msgid "" +"If using a tandem axis stepper, you must select a master stepgen for axis " +"%s\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:469 -msgid "Manual Spindle CW" -msgstr "手動 主軸 CW" +#: src/emc/usr_intf/pncconf/pncconf.py:7235 +msgid "Touchy require an external cycle start signal\n" +msgstr "Touchy 需要 外部 循環 啟動 信號\n" -#: src/emc/usr_intf/pncconf/pncconf.py:469 -msgid "Manual Spindle CCW" -msgstr "手動 主軸 CCW" +#: src/emc/usr_intf/pncconf/pncconf.py:7238 +msgid "Touchy require an external abort signal\n" +msgstr "Touchy 需要 一個 外部 中斷 信號\n" -#: src/emc/usr_intf/pncconf/pncconf.py:469 -msgid "Manual Spindle Stop" -msgstr "手動 主軸 停" +#: src/emc/usr_intf/pncconf/pncconf.py:7241 +msgid "Touchy require an external single-step signal\n" +msgstr "Touchy 需要 一個 外部 單步信號\n" -#: src/emc/usr_intf/pncconf/pncconf.py:469 -msgid "Spindle Up-To-Speed" -msgstr "主軸 達速" +#: src/emc/usr_intf/pncconf/pncconf.py:7244 +msgid "" +"Touchy require an external multi handwheel MPG encoder signal on the mesa " +"page\n" +msgstr "Touchy 需要 外部 多手輪 MPG 編碼器 信號 在 mesa 頁面\n" -#: src/emc/usr_intf/pncconf/pncconf.py:470 -msgid "Cycle Start" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:7247 +msgid "" +"Touchy require 'external mpg jogging' to be selected on the external control " +"page\n" +msgstr "Touchy 要求“外部MPG慢步”被選中的外部控制 頁面\n" -#: src/emc/usr_intf/pncconf/pncconf.py:470 -msgid "Abort" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:7250 +msgid "" +"Touchy require the external mpg to be in 'shared mpg' mode on the external " +"controls page\n" +msgstr "Touchy 要求外部MPG將在“共享MPG”模式對外部 控制 頁面\n" -#: src/emc/usr_intf/pncconf/pncconf.py:470 -msgid "Single Step" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:7253 +msgid "" +"Touchy require selectable increments to be unchecked on the external " +"controls page\n" +msgstr "Touchy 需要 可選擇 增量 將未選中 的外部 控制 頁面\n" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 -msgid "Jog X +" +#: src/emc/usr_intf/pncconf/pncconf.py:7257 +msgid "" +"The 7i29 daughter board requires PWM type generators and a PWM base " +"frequency of 20 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:529 -msgid "Jog X -" +#: src/emc/usr_intf/pncconf/pncconf.py:7260 +msgid "" +"The 7i30 daughter board requires PWM type generators and a PWM base " +"frequency of 20 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 -msgid "Jog Y +" +#: src/emc/usr_intf/pncconf/pncconf.py:7263 +msgid "" +"The 7i33 daughter board requires PDM type generators and a PDM base " +"frequency of 6 Mhz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:530 -msgid "Jog Y -" +#: src/emc/usr_intf/pncconf/pncconf.py:7266 +msgid "" +"The 7i40 daughter board requires PWM type generators and a PWM base " +"frequency of 50 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 -msgid "Jog Z +" +#: src/emc/usr_intf/pncconf/pncconf.py:7269 +msgid "" +"The 7i48 daughter board requires UDM type generators and a PWM base " +"frequency of 24 khz\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:531 -msgid "Jog Z -" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:7494 +msgid "Gearbox Reduction Ratio" +msgstr "齒輪箱 減速比" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 -msgid "Jog A +" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:7497 +msgid "Reduction Ratio" +msgstr "減速比" -#: src/emc/usr_intf/pncconf/pncconf.py:477 -#: src/emc/usr_intf/pncconf/pncconf.py:532 -msgid "Jog A -" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:7500 +msgid "Leadscrew Pitch" +msgstr "丝杆 螺距" -#: src/emc/usr_intf/pncconf/pncconf.py:478 -msgid "Jog button selected +" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:7503 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Leadscrew TPI" +msgstr "丝杆 TPI" -#: src/emc/usr_intf/pncconf/pncconf.py:478 -msgid "Jog button selected -" +#: src/emc/usr_intf/pncconf/pncconf.py:7507 +#: src/emc/usr_intf/pncconf/pncconf.py:7508 +msgid "(" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:479 -msgid "Unused Input" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:7509 +#: src/emc/usr_intf/pncconf/pncconf.py:7519 +#: src/emc/usr_intf/pncconf/pncconf.py:7520 +#: src/emc/usr_intf/pncconf/pncconf.py:7521 +#, fuzzy +msgid " / min" +msgstr "毫米 / 分鐘" -#: src/emc/usr_intf/pncconf/pncconf.py:479 -msgid "Limits" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:7510 +#, fuzzy +msgid " / sec²" +msgstr "毫米 / 秒²" -#: src/emc/usr_intf/pncconf/pncconf.py:479 -msgid "Limts/Home Shared" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:7513 +#, fuzzy +msgid " / Step" +msgstr "毫米 / 步" -#: src/emc/usr_intf/pncconf/pncconf.py:480 -msgid "Axis Selection" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:7514 +#, fuzzy +msgid "Steps / " +msgstr "步 / 英寸" + +#: src/emc/usr_intf/pncconf/pncconf.py:7516 +#, fuzzy +msgid " / encoder pulse" +msgstr "毫米 / 編碼器脈衝 " + +#: src/emc/usr_intf/pncconf/pncconf.py:7517 +#, fuzzy +msgid "Encoder pulses / " +msgstr "編碼器 脈衝 / 毫米" -#: src/emc/usr_intf/pncconf/pncconf.py:480 -msgid "Overrides" -msgstr "超速" +#: src/emc/usr_intf/pncconf/pncconf.py:7525 +#, fuzzy +msgid "Resolver Scale:" +msgstr "編碼器比例" -#: src/emc/usr_intf/pncconf/pncconf.py:481 -msgid "Operation" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:7826 +msgid "Axis Scale Calculation" +msgstr "Axis 比例計算" -#: src/emc/usr_intf/pncconf/pncconf.py:481 -msgid "External Control" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:8133 +msgid "You need to designate an E-stop input pin for this ladder program." +msgstr "你需要指定一個 E-stop 輸入 端子 給這個梯形邏輯方案." -#: src/emc/usr_intf/pncconf/pncconf.py:481 -msgid "Axis rapid" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:8145 +#, fuzzy +msgid "You need to designate a probe input pin for this ladder program." +msgstr "你需要指定一個 E-stop 輸入 端子 給這個梯形邏輯方案." -#: src/emc/usr_intf/pncconf/pncconf.py:483 -msgid "S BLDC Control" +#: src/emc/usr_intf/pncconf/pncconf.py:8156 +#, fuzzy +msgid "" +"OK to replace existing custom ladder program?\n" +"Existing Custom.clp will be renamed custom_backup.clp.\n" +"Any existing file named -custom_backup.clp- will be lost.Selecting 'existing " +"ladder program' will avoid this warning" msgstr "" +"確定 以取代 現有的 自定義 梯形邏輯?\n" +"現有 Custom.clp將改名custom_backup.clp.(_b)\n" +"任何現有的 文件命名 -custom_backup.clp- 將會丟失." -#: src/emc/usr_intf/pncconf/pncconf.py:556 -msgid "Unused PWM Gen" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:8374 +msgid "Do you wish to continue to edit this configuration." +msgstr "你是否想 繼續 編輯 此配置." -#: src/emc/usr_intf/pncconf/pncconf.py:556 -msgid "X Axis PWM" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:8413 +msgid "PCI search page is unavailable\n" +msgstr "PCI 搜索頁面 無法使用\n" -#: src/emc/usr_intf/pncconf/pncconf.py:556 -msgid "Y Axis PWM" +#: src/emc/usr_intf/pncconf/pncconf.py:8532 +msgid "" +"You specified there is an existing gladefile, But there is not one in the " +"machine-named folder.." msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:557 -msgid "Z Axis PWM" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:8856 +#, fuzzy +msgid "Servo tuning is not avaiable in PNCconf yet\n" +msgstr "伺服 調整 還沒有完成 / 在工作\n" -#: src/emc/usr_intf/pncconf/pncconf.py:557 -msgid "A Axis PWM" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:8861 +msgid "degrees" +msgstr "度" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -msgid "X Encoder" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:8862 +msgid "degrees / minute" +msgstr "度 / 分鐘" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -msgid "Y Encoder" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:8863 +msgid "degrees / second²" +msgstr "度 / 秒²" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -msgid "Z Encoder" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:8865 +msgid "revolutions" +msgstr "轉" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -msgid "A Encoder" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:8866 +msgid "rpm" +msgstr "轉速" -#: src/emc/usr_intf/pncconf/pncconf.py:581 -msgid "Spindle Encoder" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:8867 +msgid "revs / second²" +msgstr "轉速 / 秒²" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "X Hand Wheel" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:8870 +#: src/emc/usr_intf/pncconf/pncconf.glade:65184 +#: src/emc/usr_intf/pncconf/pncconf.glade:65281 +#: src/emc/usr_intf/pncconf/pncconf.glade:65465 +msgid "mm / minute" +msgstr "毫米 / 分鐘" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "Y Hand Wheel" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:8871 +msgid "mm / second²" +msgstr "毫米 / 秒²" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "Z Hand Wheel" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:8874 +msgid "inches / minute" +msgstr "英寸 / 分鐘" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "A Hand Wheel" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:8875 +msgid "inches / second²" +msgstr "英寸 / 秒²" -#: src/emc/usr_intf/pncconf/pncconf.py:582 -msgid "Multi Hand Wheel" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.py:9031 +#, python-format +msgid "%s Axis Tune" +msgstr "%s 軸 調整" -#: src/emc/usr_intf/pncconf/pncconf.py:583 -msgid "Feed Override" -msgstr "進給 超速" +#: src/emc/usr_intf/pncconf/pncconf.py:9195 +#, fuzzy +msgid "" +" You must designate a ENCODER / RESOLVER signal and an ANALOG SPINDLE signal " +"for this axis test" +msgstr "您必須指定 一個 編碼器 信號 和 PWM 信號 給此軸測試" -#: src/emc/usr_intf/pncconf/pncconf.py:583 -msgid "spindle Override" -msgstr "主軸 超越" +#: src/emc/usr_intf/pncconf/pncconf.py:9199 +#, fuzzy +msgid "" +" You must designate a ENCODER / RESOLVER signal and a PWM signal for this " +"axis test" +msgstr "您必須指定 一個 編碼器 信號 和 PWM 信號 給此軸測試" -#: src/emc/usr_intf/pncconf/pncconf.py:583 +#: src/emc/usr_intf/pncconf/pncconf.glade:8 #, fuzzy -msgid "Max Vel Override" -msgstr "最大 進給 超越" +msgid "LinuxCNC Point And Click Configuration" +msgstr "EMC2 指 向 和 點 擊 配 置" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "Unused Encoder" -msgstr "未使用的編碼器" +#: src/emc/usr_intf/pncconf/pncconf.glade:23 +#, fuzzy +msgid "LinuxCNC Configuration Wizard Beta 1 Version" +msgstr "EMC2 設 定 精 靈 的 Alpha 版 本" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "Axis Encoder" -msgstr "軸編碼器" +#: src/emc/usr_intf/pncconf/pncconf.glade:24 +msgid "" +"\tThis program creates configuration \n" +" files for \"Closed Loop Servo\" \n" +"\t \t and hardware stepper\n" +" \tmachines" +msgstr "" +"\t這程序創建的配置 \n" +" 文件 為 \" 閉環伺服 \" \n" +"\t \t 和硬件 步進電機\n" +" \t 機器 " -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "MPG Jog Controls" -msgstr "MPG 慢步 操控" +#: src/emc/usr_intf/pncconf/pncconf.glade:34 +msgid "Create or Edit" +msgstr "創建 或 修改" -#: src/emc/usr_intf/pncconf/pncconf.py:584 -msgid "Override MPG control" -msgstr "超速 MPG 操控" +#: src/emc/usr_intf/pncconf/pncconf.glade:66 +msgid "Create a desktop launcher to start LinuxCNC with this configuration." +msgstr "創建一個桌面 啟動器 啟動 LinuxCNC 與 此配置." -#: src/emc/usr_intf/pncconf/pncconf.py:587 -#, fuzzy -msgid "Unused Resolver" -msgstr "未使用的編碼器" +#: src/emc/usr_intf/pncconf/pncconf.glade:83 +msgid "Create a desktop shortcut (symlink) to configuration files." +msgstr "創建一個桌面 快捷方式(鏈接)的 配置文件." -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "X Resolver" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:148 +msgid "Create a new configuration" +msgstr "創建一個新的配置" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "Y Resolver" +#: src/emc/usr_intf/pncconf/pncconf.glade:175 +msgid "Basic machine information" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:587 -msgid "Z Resolver" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:214 +msgid "Machine Name:" +msgstr "機器 名稱:" -#: src/emc/usr_intf/pncconf/pncconf.py:588 -msgid "A Resolver" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:280 +msgid "Axis configuration:" +msgstr "軸的 配置:" -#: src/emc/usr_intf/pncconf/pncconf.py:588 -msgid "S Resolver" +#: src/emc/usr_intf/pncconf/pncconf.glade:295 +msgid "" +"XYZ\n" +"XYZA\n" +"XZ (Lathe)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -msgid "Unused 8I20" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:322 +msgid "Machine units:" +msgstr "機器 單元:" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:61457 -msgid "X Axis" -msgstr "X 軸" +#: src/emc/usr_intf/pncconf/pncconf.glade:337 +msgid "" +"Inch\n" +"Millimeter" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:62549 -msgid "Y Axis" -msgstr "Y 軸" +#: src/emc/usr_intf/pncconf/pncconf.glade:363 +msgid "Machine Basics" +msgstr "機器 基本" -#: src/emc/usr_intf/pncconf/pncconf.py:592 -#: src/emc/usr_intf/pncconf/pncconf.glade:63642 -msgid "Z Axis" -msgstr "Z 軸" +#: src/emc/usr_intf/pncconf/pncconf.glade:416 +msgid "Actual Servo Period: " +msgstr "實際伺服週期: " -#: src/emc/usr_intf/pncconf/pncconf.py:593 -#: src/emc/usr_intf/pncconf/pncconf.glade:64735 -msgid "A Axis" -msgstr "A 軸" +#: src/emc/usr_intf/pncconf/pncconf.glade:475 +msgid "Recommend servo period: 1000000" +msgstr "推薦伺服週期: 10000000" -#: src/emc/usr_intf/pncconf/pncconf.py:597 -msgid "Unused Analog Output" +#: src/emc/usr_intf/pncconf/pncconf.glade:494 +msgid "" +" Test Base\n" +"Period Jitter " msgstr "" +" 檢測基本\n" +"週期抖動 " -#: src/emc/usr_intf/pncconf/pncconf.py:597 -#, fuzzy -msgid "Spindle Output" -msgstr "主軸 關" - -#: src/emc/usr_intf/pncconf/pncconf.py:613 -msgid "Unused StepGen" -msgstr "未使用的 步進產生器" - -#: src/emc/usr_intf/pncconf/pncconf.py:613 -msgid "X Axis StepGen" -msgstr "X 軸 步進產生器" +#: src/emc/usr_intf/pncconf/pncconf.glade:519 +msgid "Computer Response Time" +msgstr "電腦響應時間" -#: src/emc/usr_intf/pncconf/pncconf.py:613 -msgid "Y Axis StepGen" -msgstr "Y 軸 步進產生器" +#: src/emc/usr_intf/pncconf/pncconf.glade:561 +msgid "Mesa0 PCI / Parport Card:" +msgstr "Mesa0 PCI /並口卡:" -#: src/emc/usr_intf/pncconf/pncconf.py:613 -msgid "Z Axis StepGen" -msgstr "Z 軸 步進產生器" +#: src/emc/usr_intf/pncconf/pncconf.glade:571 +msgid "Mesa1 PCI / Parport Card:" +msgstr "Mesa1 PCI /並口卡:" -#: src/emc/usr_intf/pncconf/pncconf.py:614 -msgid "A Axis StepGen" -msgstr "A 軸 步進產生器" +#: src/emc/usr_intf/pncconf/pncconf.glade:584 +msgid "First Parport Address:" +msgstr "第一個並行埠地址:" -#: src/emc/usr_intf/pncconf/pncconf.py:614 -msgid "Spindle StepGen" -msgstr "主 軸 步進產生器" +#: src/emc/usr_intf/pncconf/pncconf.glade:597 +msgid "Second Parport Address:" +msgstr "第二個並行埠地址:" -#: src/emc/usr_intf/pncconf/pncconf.py:628 -msgid "Unused TPPWM Gen" -msgstr "未使用的 TPPWM 產生器" +#: src/emc/usr_intf/pncconf/pncconf.glade:612 +msgid "Third Parport Address:" +msgstr "第三個並行埠地址:" -#: src/emc/usr_intf/pncconf/pncconf.py:628 -msgid "X Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.glade:635 +#: src/emc/usr_intf/pncconf/pncconf.glade:643 +msgid "" +"5i20\n" +"5i23\n" +"5i22" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:628 -msgid "Y Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.glade:716 +#: src/emc/usr_intf/pncconf/pncconf.glade:728 +#: src/emc/usr_intf/pncconf/pncconf.glade:741 +msgid "" +"In\n" +"Out" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "Z Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.glade:804 +msgid "" +"Add-on PCI\n" +" Parport\n" +" Address \n" +" Search" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "A Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.glade:829 +msgid "I/O Control Ports/ Boards" +msgstr "I/O 控制 端口/板" + +#: src/emc/usr_intf/pncconf/pncconf.glade:878 +msgid "Axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:629 -msgid "S Axis BL Driver" +#: src/emc/usr_intf/pncconf/pncconf.glade:893 +msgid "TKLinuxCNC" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -#: src/emc/usr_intf/pncconf/pncconf.py:6557 -#, fuzzy -msgid "Unused Channel" -msgstr "選擇通道" +#: src/emc/usr_intf/pncconf/pncconf.glade:907 +msgid "Mini" +msgstr "迷你" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -msgid "8i20 Amplifier Card" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:921 +#: src/emc/usr_intf/pncconf/pncconf.glade:6656 +msgid "Touchy" +msgstr "敏感的" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -msgid "7i64 I/O Card" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:938 +msgid "GUI frontend list" +msgstr "GUI前台列表" -#: src/emc/usr_intf/pncconf/pncconf.py:636 -msgid "7i69 I/O Card" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:973 +msgid "External Controls" +msgstr "外部控制" -#: src/emc/usr_intf/pncconf/pncconf.py:637 -msgid "7i70 I/O Card" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1014 +msgid "Add device rule" +msgstr "新增設備規則" -#: src/emc/usr_intf/pncconf/pncconf.py:637 -msgid "7i71 I/O Card" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1027 +msgid "Test device" +msgstr "測試設備" -#: src/emc/usr_intf/pncconf/pncconf.py:637 -msgid "7i76 Mode 0 I/O Card" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1041 +msgid "Search for device rules" +msgstr "搜尋設備規則" -#: src/emc/usr_intf/pncconf/pncconf.py:722 -msgid "my_LinuxCNC_machine" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1062 +msgid "Device Name:" +msgstr "設備名稱:" -#: src/emc/usr_intf/pncconf/pncconf.py:1328 -msgid "" -"This configuration was saved with an earlier version of pncconf which may be " -"incompatible.\n" -"If it doesn't plainly cause an error, you still may want to save it with " -"another name and check it. Safer to start from scratch.\n" -"If you have a REALLY large config that you wish to convert to this newer " -"version of PNConf - ask on the LinuxCNC forum - it may be possible.." +#: src/emc/usr_intf/pncconf/pncconf.glade:1125 +msgid "A +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1334 -#, python-format -msgid "File %r was modified since it was written by PNCconf" +#: src/emc/usr_intf/pncconf/pncconf.glade:1135 +msgid "A -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1338 -msgid "" -"Saving this configuration file will discard configuration changes made " -"outside PNCconf." -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1169 +#: src/emc/usr_intf/pncconf/pncconf.glade:1181 +#: src/emc/usr_intf/pncconf/pncconf.glade:1191 +#: src/emc/usr_intf/pncconf/pncconf.glade:1246 +#: src/emc/usr_intf/pncconf/pncconf.glade:1759 +msgid "mm/min " +msgstr "mm/分" -#: src/emc/usr_intf/pncconf/pncconf.py:1365 -#: src/emc/usr_intf/pncconf/pncconf.py:2368 -#, python-format -msgid "# Generated by PNCconf at %s" +#: src/emc/usr_intf/pncconf/pncconf.glade:1269 +msgid " ab)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:1367 -#: src/emc/usr_intf/pncconf/pncconf.py:2370 -msgid "# overwritten when you run PNCconf again" +#: src/emc/usr_intf/pncconf/pncconf.glade:1282 +#: src/emc/usr_intf/pncconf/pncconf.glade:2493 +#: src/emc/usr_intf/pncconf/pncconf.glade:2927 +#: src/emc/usr_intf/pncconf/pncconf.glade:3808 +#: src/emc/usr_intf/pncconf/pncconf.glade:4689 +msgid " b)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2070 -msgid "# Use ACTUAL spindle velocity from spindle encoder" +#: src/emc/usr_intf/pncconf/pncconf.glade:1293 +#: src/emc/usr_intf/pncconf/pncconf.glade:2482 +#: src/emc/usr_intf/pncconf/pncconf.glade:2916 +#: src/emc/usr_intf/pncconf/pncconf.glade:3797 +#: src/emc/usr_intf/pncconf/pncconf.glade:4678 +msgid " a)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2071 -msgid "# spindle-velocity bounces around so we filter it with lowpass" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1305 +#: src/emc/usr_intf/pncconf/pncconf.glade:2385 +#: src/emc/usr_intf/pncconf/pncconf.glade:2867 +#: src/emc/usr_intf/pncconf/pncconf.glade:3748 +#: src/emc/usr_intf/pncconf/pncconf.glade:4629 +msgid "default" +msgstr "預設" -#: src/emc/usr_intf/pncconf/pncconf.py:2072 -msgid "" -"# spindle-velocity is signed so we use absolute component to remove sign" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1336 +#: src/emc/usr_intf/pncconf/pncconf.glade:1476 +msgid "Jog Speed select A" +msgstr "慢步速度選擇 A" -#: src/emc/usr_intf/pncconf/pncconf.py:2073 -msgid "# ACTUAL velocity is in RPS not RPM so we scale it." +#: src/emc/usr_intf/pncconf/pncconf.glade:1348 +msgid "X +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2082 -msgid "" -"# Use COMMANDED spindle velocity from LinuxCNC because no spindle encoder " -"was specified" +#: src/emc/usr_intf/pncconf/pncconf.glade:1354 +msgid "Y +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2083 -msgid "" -"# COMMANDED velocity is signed so we use absolute component to remove sign" +#: src/emc/usr_intf/pncconf/pncconf.glade:1364 +msgid "Z +" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2727 -msgid "# connect miscellaneous signals" +#: src/emc/usr_intf/pncconf/pncconf.glade:1374 +msgid "X -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2730 -msgid "# ---HALUI signals---" +#: src/emc/usr_intf/pncconf/pncconf.glade:1384 +msgid "Y -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2749 -msgid "# ---charge pump signals---" +#: src/emc/usr_intf/pncconf/pncconf.glade:1396 +msgid "Z -" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2753 -msgid "# ---coolant signals---" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1500 +msgid "Digital Control" +msgstr "數字控制" -#: src/emc/usr_intf/pncconf/pncconf.py:2758 -msgid "# ---probe signal---" +#: src/emc/usr_intf/pncconf/pncconf.glade:1593 +#: src/emc/usr_intf/gscreen/gscreen.glade:502 +msgid "A" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2763 -msgid "# ---jog button signals---" +#: src/emc/usr_intf/pncconf/pncconf.glade:1603 +#: src/emc/usr_intf/gscreen/gscreen.glade:374 +msgid "Z" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2768 -msgid "# ---USB device jog button signals---" +#: src/emc/usr_intf/pncconf/pncconf.glade:1613 +#: src/emc/usr_intf/pncconf/pncconf.glade:6134 +#: src/emc/usr_intf/pncconf/pncconf.glade:6458 +#: src/emc/usr_intf/pncconf/pncconf.glade:6860 +#: src/emc/usr_intf/pncconf/pncconf.glade:7235 +#: src/emc/usr_intf/gscreen/gscreen.glade:244 +msgid "Y" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2803 -#: src/emc/usr_intf/pncconf/pncconf.py:2825 -msgid "# ---mpg signals---" +#: src/emc/usr_intf/pncconf/pncconf.glade:1623 +msgid "X " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:2971 -msgid "# ---motion control signals---" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1631 +msgid "Analog Control" +msgstr "模擬控制" -#: src/emc/usr_intf/pncconf/pncconf.py:2976 -msgid "# ---digital in / out signals---" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1657 +#: src/emc/usr_intf/pncconf/pncconf.glade:1788 +#: src/emc/usr_intf/pncconf/pncconf.glade:2698 +#: src/emc/usr_intf/pncconf/pncconf.glade:3579 +#: src/emc/usr_intf/pncconf/pncconf.glade:4460 +#: src/emc/usr_intf/pncconf/pncconf.glade:5341 +#: src/emc/usr_intf/pncconf/pncconf.glade:64300 +msgid "Details" +msgstr "詳情" -#: src/emc/usr_intf/pncconf/pncconf.py:2986 -msgid "# ---estop signals---" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1675 +msgid "USB Joystick Jogging " +msgstr "USB搖桿慢步" -#: src/emc/usr_intf/pncconf/pncconf.py:3005 -msgid "# ---manual tool change signals---" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1719 +msgid "shared buttons for all axis" +msgstr "所有軸共享按鈕" -#: src/emc/usr_intf/pncconf/pncconf.py:3014 -msgid "# ---toolchange signals for custom tool changer---" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1732 +msgid "buttons for each axis" +msgstr "每個軸 的 按鈕" -#: src/emc/usr_intf/pncconf/pncconf.py:3036 -msgid "# --- Classicladder signals for Z axis Auto touch off program---" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1806 +msgid "External Button Jogging" +msgstr "外部 按鈕 慢步" -#: src/emc/usr_intf/pncconf/pncconf.py:3055 -msgid "# These files are loaded post gladeVCP, in the order they appear" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1847 +msgid "Shared MPG / selectable axis" +msgstr "共享 MPG / 可選軸" -#: src/emc/usr_intf/pncconf/pncconf.py:3069 -#: src/emc/usr_intf/pncconf/pncconf.py:3136 -msgid "# _DO NOT_ include your HAL commands here." -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1860 +msgid "Mpg per axis" +msgstr "Mpg 每 個軸" -#: src/emc/usr_intf/pncconf/pncconf.py:3070 -msgid "# Put custom HAL commands in custom_gvcp.hal" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:1875 +msgid "selectable MPG increments" +msgstr "選擇  MPG  增量" -#: src/emc/usr_intf/pncconf/pncconf.py:3073 -msgid "# **** Setup of spindle speed display using gladevcp ****" +#: src/emc/usr_intf/pncconf/pncconf.glade:1940 +#: src/emc/usr_intf/pncconf/pncconf.glade:3379 +#: src/emc/usr_intf/pncconf/pncconf.glade:4260 +#: src/emc/usr_intf/pncconf/pncconf.glade:5141 +msgid " d)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3082 -msgid "# **** Setup GLADE MDI buttons ****" +#: src/emc/usr_intf/pncconf/pncconf.glade:1952 +#: src/emc/usr_intf/pncconf/pncconf.glade:3340 +#: src/emc/usr_intf/pncconf/pncconf.glade:4221 +#: src/emc/usr_intf/pncconf/pncconf.glade:5102 +msgid " abcd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3095 -msgid "" -"# **** Z axis touch-off button - requires the touch-off classicladder " -"program ****" +#: src/emc/usr_intf/pncconf/pncconf.glade:1965 +#: src/emc/usr_intf/pncconf/pncconf.glade:3353 +#: src/emc/usr_intf/pncconf/pncconf.glade:4234 +#: src/emc/usr_intf/pncconf/pncconf.glade:5115 +msgid " bcd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3125 -msgid "# These files are loaded post GUI, in the order they appear" +#: src/emc/usr_intf/pncconf/pncconf.glade:1978 +#: src/emc/usr_intf/pncconf/pncconf.glade:3366 +#: src/emc/usr_intf/pncconf/pncconf.glade:4247 +#: src/emc/usr_intf/pncconf/pncconf.glade:5128 +msgid " acd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3137 -msgid "# Put custom HAL commands in custom_postgui.hal" +#: src/emc/usr_intf/pncconf/pncconf.glade:1991 +#: src/emc/usr_intf/pncconf/pncconf.glade:3430 +#: src/emc/usr_intf/pncconf/pncconf.glade:4311 +#: src/emc/usr_intf/pncconf/pncconf.glade:5192 +msgid " cd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3138 -msgid "# The commands in this file are run after the GUI loads" +#: src/emc/usr_intf/pncconf/pncconf.glade:2004 +#: src/emc/usr_intf/pncconf/pncconf.glade:3404 +#: src/emc/usr_intf/pncconf/pncconf.glade:4285 +#: src/emc/usr_intf/pncconf/pncconf.glade:5166 +msgid " bd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3148 -msgid "# **** Setup of spindle speed display using pyvcp -END ****" +#: src/emc/usr_intf/pncconf/pncconf.glade:2017 +#: src/emc/usr_intf/pncconf/pncconf.glade:3391 +#: src/emc/usr_intf/pncconf/pncconf.glade:4272 +#: src/emc/usr_intf/pncconf/pncconf.glade:5153 +msgid " ad)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3160 -msgid "# This file will not be overwritten when you run PNCconf again" +#: src/emc/usr_intf/pncconf/pncconf.glade:2030 +#: src/emc/usr_intf/pncconf/pncconf.glade:2514 +#: src/emc/usr_intf/pncconf/pncconf.glade:3059 +#: src/emc/usr_intf/pncconf/pncconf.glade:3940 +#: src/emc/usr_intf/pncconf/pncconf.glade:4821 +msgid " abc)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3166 -msgid "# These commands are required for Touchy GUI" +#: src/emc/usr_intf/pncconf/pncconf.glade:2041 +#: src/emc/usr_intf/pncconf/pncconf.glade:3026 +#: src/emc/usr_intf/pncconf/pncconf.glade:3907 +#: src/emc/usr_intf/pncconf/pncconf.glade:4788 +msgid " c)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3218 -#, python-format -msgid "Generated by PNCconf at %s" +#: src/emc/usr_intf/pncconf/pncconf.glade:2207 +#: src/emc/usr_intf/pncconf/pncconf.glade:3049 +#: src/emc/usr_intf/pncconf/pncconf.glade:3930 +#: src/emc/usr_intf/pncconf/pncconf.glade:4811 +msgid " bc)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3230 -msgid "configures LinuxCNC as:\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2217 +#: src/emc/usr_intf/pncconf/pncconf.glade:3038 +#: src/emc/usr_intf/pncconf/pncconf.glade:3919 +#: src/emc/usr_intf/pncconf/pncconf.glade:4800 +msgid " ac)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3231 -msgid "type CNC\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:2504 +#: src/emc/usr_intf/pncconf/pncconf.glade:2938 +#: src/emc/usr_intf/pncconf/pncconf.glade:3819 +#: src/emc/usr_intf/pncconf/pncconf.glade:4700 +msgid " ab)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3232 -msgid "will be used as the frontend display" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:2577 +msgid "ignore all inputs false" +msgstr "忽略 所有輸入 偽" -#: src/emc/usr_intf/pncconf/pncconf.py:3241 -msgid " connector" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:2592 +msgid "use gray code" +msgstr "用 gray code" -#: src/emc/usr_intf/pncconf/pncconf.py:3253 -msgid "invrt" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:2607 +#: src/emc/usr_intf/pncconf/pncconf.glade:3489 +#: src/emc/usr_intf/pncconf/pncconf.glade:4356 +#: src/emc/usr_intf/pncconf/pncconf.glade:5237 +msgid "use debounce" +msgstr "用 防抖動" -#: src/emc/usr_intf/pncconf/pncconf.py:3262 -#, python-format -msgid "%(name)s Parport" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:2658 +#: src/emc/usr_intf/pncconf/pncconf.glade:3453 +#: src/emc/usr_intf/pncconf/pncconf.glade:4334 +#: src/emc/usr_intf/pncconf/pncconf.glade:5215 +msgid "Mux options" +msgstr "MUX 的選項" -#: src/emc/usr_intf/pncconf/pncconf.py:3267 -#: src/emc/usr_intf/pncconf/pncconf.py:3275 -msgid "-> inverted" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:2672 +msgid "increments" +msgstr " 增 量 " -#: src/emc/usr_intf/pncconf/pncconf.py:3269 -#, python-format -msgid "pin# %(pinnum)d is connected to input signal:'%(data)s' %(mesag)s" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:2716 +msgid "External MPG Jogging" +msgstr "外部 MPG 慢步" -#: src/emc/usr_intf/pncconf/pncconf.py:3277 -#, python-format -msgid "pin# %(pinnum)d is connected to output signal:'%(data)s' %(mesag)s" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:2747 +#: src/emc/usr_intf/pncconf/pncconf.glade:3628 +#: src/emc/usr_intf/pncconf/pncconf.glade:4509 +msgid "Use MPG " +msgstr "使用 MPG" -#: src/emc/usr_intf/pncconf/pncconf.py:3455 -#, fuzzy -msgid "Desktop Launcher for LinuxCNC config made by PNCconf" -msgstr "創建一個桌面 啟動器 啟動 LinuxCNC 與 此配置." +#: src/emc/usr_intf/pncconf/pncconf.glade:2760 +#: src/emc/usr_intf/pncconf/pncconf.glade:3641 +#: src/emc/usr_intf/pncconf/pncconf.glade:4522 +msgid "use switches" +msgstr " 使用 開關 " -#: src/emc/usr_intf/pncconf/pncconf.py:3725 -msgid "Spindle Motor/Encoder Configuration" +#: src/emc/usr_intf/pncconf/pncconf.glade:3417 +#: src/emc/usr_intf/pncconf/pncconf.glade:4298 +#: src/emc/usr_intf/pncconf/pncconf.glade:5179 +msgid " abd)" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:3727 -#, python-format -msgid "%s Axis Motor/Encoder Configuration" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:3504 +#: src/emc/usr_intf/pncconf/pncconf.glade:4371 +#: src/emc/usr_intf/pncconf/pncconf.glade:5252 +msgid "use graycode" +msgstr "用 graycode" -#: src/emc/usr_intf/pncconf/pncconf.py:3756 -#, python-format -msgid "%s Parallel Port Setup" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:3519 +#: src/emc/usr_intf/pncconf/pncconf.glade:4386 +#: src/emc/usr_intf/pncconf/pncconf.glade:5267 +msgid "ignore all-inputs false" +msgstr " 忽略 所有輸入 偽 " -#: src/emc/usr_intf/pncconf/pncconf.py:3780 -#, python-format -msgid "%s I/0 Setup" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:3563 +#: src/emc/usr_intf/pncconf/pncconf.glade:4444 +#: src/emc/usr_intf/pncconf/pncconf.glade:5325 +msgid "Increments" +msgstr " 增 量 " -#: src/emc/usr_intf/pncconf/pncconf.py:4001 -msgid "Quit PNCconfig and discard changes?" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:3597 +msgid "External Feed Override" +msgstr "外部 進給 超速" -#: src/emc/usr_intf/pncconf/pncconf.py:4042 -#: src/emc/usr_intf/pncconf/pncconf.glade:65849 -msgid "Help Pages" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:4478 +#, fuzzy +msgid "Max Velocity Override" +msgstr "外部 進給 超速" -#: src/emc/usr_intf/pncconf/pncconf.py:4047 -msgid "Help page is unavailable\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5359 +msgid "External Spindle Override" +msgstr "外部 主軸 超速" -#: src/emc/usr_intf/pncconf/pncconf.py:4054 -msgid "" -"You are using a simulated-realtime version of LinuxCNC, so testing / tuning " -"of external hardware is unavailable." -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5387 +msgid "GUI configuration" +msgstr "GUI 配 置 " -#: src/emc/usr_intf/pncconf/pncconf.py:4059 -#, python-format -msgid "" -"You are using a realtime version of LinuxCNC but didn't load a realtime " -"kernel so testing / tuning of external hardware is unavailable.\n" -" This is probably because you updated the OS and it doesn't load the RTAI " -"kernel anymore\n" -" You are using the %(actual)s kernel instead of %(needed)s" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5406 +msgid "Frontend" +msgstr " 前 台 " -#: src/emc/usr_intf/pncconf/pncconf.py:4079 -#, python-format -msgid "" -"You are have no hostmot2 firmware downloaded in folder:\n" -"%s\n" -"PNCconf will use sample firmware data\n" -"live testing will not be possible" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5566 +msgid "Position_offset" +msgstr "位置 偏移量 (_o)" -#: src/emc/usr_intf/pncconf/pncconf.py:4093 -#, fuzzy -msgid "LinuxCNC 'PNCconf' configuration files" -msgstr "打開配置文件:" +#: src/emc/usr_intf/pncconf/pncconf.glade:5573 +msgid "Position_feedback" +msgstr "定 位 反 饋 (_f)" -#: src/emc/usr_intf/pncconf/pncconf.py:4123 -msgid "" -"It seems data in this file is from too old of a version of PNCConf to " -"continue.\n" -"." -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5584 +msgid "Max Spindle Override " +msgstr "設定 主軸超速" -#: src/emc/usr_intf/pncconf/pncconf.py:4130 -#: src/emc/usr_intf/pncconf/pncconf.py:4228 -#, python-format -msgid "Point and click configuration - %s.pncconf " -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5606 +msgid "Min Spindle Override" +msgstr "最小 主軸超速" -#: src/emc/usr_intf/pncconf/pncconf.py:4250 -msgid "" -"You need to designate a parport and/or mesa I/O device before continuing." -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5665 +msgid "Max Feed Override" +msgstr "最大 進給 超越" -#: src/emc/usr_intf/pncconf/pncconf.py:4309 +#: src/emc/usr_intf/pncconf/pncconf.glade:5702 msgid "" -"You Have choosen to re-edit the current config, so you can not go to the new/" -"modify page.\n" -" Quit and reload PNCconf if you wish to build a new config." +"Machine\n" +"Relative\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4313 +#: src/emc/usr_intf/pncconf/pncconf.glade:5714 msgid "" -"If you can not go to the new/modify page your current data will be lost.\n" -"Ok to reset data and start a new configuration?" +"Commanded\n" +"Actual" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:4594 -msgid "USB device Info Search" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5729 +msgid "General GUI Defaults" +msgstr "一 般 GUI 預 設 值" -#: src/emc/usr_intf/pncconf/pncconf.py:4608 -msgid "USB device page is unavailable\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5811 +msgid "Default linear velocity " +msgstr " 線 性 速 度 預 置 值 " -#: src/emc/usr_intf/pncconf/pncconf.py:4673 -msgid "Pin names are unavailable\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5818 +msgid "Min linear velocity" +msgstr "最 小 線 性 速 度 " -#: src/emc/usr_intf/pncconf/pncconf.py:4695 -msgid "Device names are unavailable\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5829 +msgid "Max linear velocity" +msgstr "最 大 線 性 速 度" -#: src/emc/usr_intf/pncconf/pncconf.py:4698 -msgid "No Pncconf made device rules were found\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5879 +#: src/emc/usr_intf/pncconf/pncconf.glade:6085 +#: src/emc/usr_intf/pncconf/pncconf.glade:6097 +msgid "mm / min" +msgstr "毫米 / 分鐘" -#: src/emc/usr_intf/pncconf/pncconf.py:4822 -msgid "" -"OK to replace existing glade panel ?\n" -"It will be renamed and added to 'backups' folder.\n" -" Clicking 'existing custom program' will aviod this warning. " -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5892 +msgid "Default Angular velocity " +msgstr " 角 速 度 預 置 值  " -#: src/emc/usr_intf/pncconf/pncconf.py:4827 -msgid "" -"OK to replace existing custom pyvcp panel?\n" -"Existing pyvcp-panel.xml will be renamed and added to 'backups' folder\n" -"Clicking 'existing custom program' will aviod this warning. " +#: src/emc/usr_intf/pncconf/pncconf.glade:5926 +msgid "gedit" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:5250 -msgid "" -"You need to configure the mesa0 page.\n" -" Choose the board type, firmware, component amounts and press 'Accept " -"component changes' button'" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5939 +msgid "Min Angular velocity" +msgstr "最 小 角 速 度" -#: src/emc/usr_intf/pncconf/pncconf.py:5254 -msgid "" -"The chosen Mesa0 board is different from the current displayed.\n" -"please press 'Accept component changes' button'" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:5966 +msgid "Increments " +msgstr " 增 量 " -#: src/emc/usr_intf/pncconf/pncconf.py:5297 -msgid "" -"You need to configure the mesa1 page.\n" -" Choose the board type, firmware, component amounts and press 'Accept " -"component changes' button'" +#: src/emc/usr_intf/pncconf/pncconf.glade:5977 +msgid "5mm 1mm .5mm .1mm .05mm .01mm .005mm" msgstr "" -"您需要配置mesa1頁. \n" -"選擇板型,固件組件 數量,並按下 '接受 組件更改' 按鈕" -#: src/emc/usr_intf/pncconf/pncconf.py:5301 +#: src/emc/usr_intf/pncconf/pncconf.glade:5990 +msgid "Max Angular velocity" +msgstr "最 大 角 速 度" + +#: src/emc/usr_intf/pncconf/pncconf.glade:6017 #, fuzzy -msgid "" -"The chosen Mesa1 board is different from the current displayed.\n" -"please press 'Accept component changes' button'" -msgstr "" -"所選擇的Mesa1板不同於當前顯示.\n" -"請按 '接受組件 更改' 按鈕" +msgid "Axis Geometry" +msgstr "幾  何" -#: src/emc/usr_intf/pncconf/pncconf.py:5315 -msgid "" -"Do to technical reasons this test panel can be loaded only once without " -"reloading pncconf.You also will not be able to do any other testing untill " -"you reload pncconf and quite possibly open a terminal and type 'halrun -U' I " -"hesitate to even allow it's use but at times it's very useful.\n" -"Do you wish to continue the test?" +#: src/emc/usr_intf/pncconf/pncconf.glade:6028 +msgid "xyzabc" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6699 -msgid "First Parallel Port set for OUTPUT" -msgstr "第一 並行 端口 設置 為輸出" +#: src/emc/usr_intf/pncconf/pncconf.glade:6040 +#: src/emc/usr_intf/pncconf/pncconf.glade:6052 +#: src/emc/usr_intf/pncconf/pncconf.glade:6064 +msgid "Deg / min" +msgstr "角度 / 分" -#: src/emc/usr_intf/pncconf/pncconf.py:6701 -msgid "First Parallel Port set for INPUT" -msgstr "第一 並行 端口 設置 為輸入" +#: src/emc/usr_intf/pncconf/pncconf.glade:6113 +#: src/emc/usr_intf/pncconf/pncconf.glade:6484 +#: src/emc/usr_intf/pncconf/pncconf.glade:6839 +#: src/emc/usr_intf/pncconf/pncconf.glade:7262 +msgid "size" +msgstr "大小" -#: src/emc/usr_intf/pncconf/pncconf.py:6725 -msgid "Second Parallel Port set for OUTPUT" -msgstr "第二 並行 端口 設置 為輸出" +#: src/emc/usr_intf/pncconf/pncconf.glade:6122 +#: src/emc/usr_intf/pncconf/pncconf.glade:6471 +#: src/emc/usr_intf/pncconf/pncconf.glade:6848 +#: src/emc/usr_intf/pncconf/pncconf.glade:7248 +msgid "Position" +msgstr "位置" -#: src/emc/usr_intf/pncconf/pncconf.py:6727 -msgid "Second Parallel Port set for INPUT" -msgstr "第二 並行 端口 設置 為輸入" +#: src/emc/usr_intf/pncconf/pncconf.glade:6159 +#: src/emc/usr_intf/pncconf/pncconf.glade:6433 +#: src/emc/usr_intf/pncconf/pncconf.glade:6885 +#: src/emc/usr_intf/pncconf/pncconf.glade:7210 +#: src/emc/usr_intf/gscreen/gscreen.glade:116 +msgid "X" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6739 -msgid "Third Parallel Port set for OUTPUT" -msgstr "第三 並行 端口 設置 為輸出" +#: src/emc/usr_intf/pncconf/pncconf.glade:6171 +#: src/emc/usr_intf/pncconf/pncconf.glade:6423 +#: src/emc/usr_intf/pncconf/pncconf.glade:6897 +#: src/emc/usr_intf/pncconf/pncconf.glade:7200 +#: src/emc/usr_intf/gscreen/gscreen.glade:1142 +msgid "W" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6741 -msgid "Third Parallel Port set for INPUT" -msgstr "第三 並行 端口 設置 為輸入" +#: src/emc/usr_intf/pncconf/pncconf.glade:6205 +#: src/emc/usr_intf/pncconf/pncconf.glade:6389 +#: src/emc/usr_intf/pncconf/pncconf.glade:6931 +#: src/emc/usr_intf/pncconf/pncconf.glade:7166 +msgid "H" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6866 -msgid "You can not have both steppers and pwm signals for spindle control\n" -msgstr "你不能 同時 擁有 步進電機 和 PWM信號 給主軸控制\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:6227 +msgid "Force Axis to Maximize" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6870 -#, python-format -msgid "You forgot to designate a stepper or pwm signal for axis %s\n" -msgstr "你忘了 指定 步進電機 或 PWM 信號 給軸 %s\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:6249 +msgid "AXIS defaults" +msgstr "AXIS 預 置 值" -#: src/emc/usr_intf/pncconf/pncconf.py:6873 -#, fuzzy, python-format -msgid "You forgot to designate an encoder /resolver signal for axis %s servo\n" -msgstr "你忘了 指定 編碼器 信號 給軸 %s 伺服\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:6365 +msgid "Force Touchy to Maximize after positioning" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6876 -#, python-format -msgid "You forgot to designate a pwm signal or stepper signal for axis %s\n" -msgstr "你忘了 指定 一個 PWM 信號 或步進信號 給軸 %s\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:6501 +#: src/emc/usr_intf/pncconf/pncconf.glade:7333 +msgid "Follow System Theme\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6879 -#, python-format -msgid "You can not have both steppers and pwm signals for axis %s\n" -msgstr "你 不能 擁有 同時 用 步進電機 和PWM信號 的軸 %s\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:6514 +#: src/emc/usr_intf/pncconf/pncconf.glade:7347 +msgid "GTK Theme" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6887 -msgid "Touchy require an external cycle start signal\n" -msgstr "Touchy 需要 外部 循環 啟動 信號\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:6540 +#: src/emc/usr_intf/gscreen/gscreen.glade:1857 +msgid "Absolute Text Color" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6890 -msgid "Touchy require an external abort signal\n" -msgstr "Touchy 需要 一個 外部 中斷 信號\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:6603 +#, fuzzy +msgid "Absolute Textcolor" +msgstr "絕對反饋" -#: src/emc/usr_intf/pncconf/pncconf.py:6893 -msgid "Touchy require an external single-step signal\n" -msgstr "Touchy 需要 一個 外部 單步信號\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:6616 +#, fuzzy +msgid "Relative Textcolor" +msgstr "相對位置" -#: src/emc/usr_intf/pncconf/pncconf.py:6896 -msgid "" -"Touchy require an external multi handwheel MPG encoder signal on the mesa " -"page\n" -msgstr "Touchy 需要 外部 多手輪 MPG 編碼器 信號 在 mesa 頁面\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:6629 +msgid "DTG Textcolor" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6899 -msgid "" -"Touchy require 'external mpg jogging' to be selected on the external control " -"page\n" -msgstr "Touchy 要求“外部MPG慢步”被選中的外部控制 頁面\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:6642 +msgid "Error Textcolor" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6902 -msgid "" -"Touchy require the external mpg to be in 'shared mpg' mode on the external " -"controls page\n" -msgstr "Touchy 要求外部MPG將在“共享MPG”模式對外部 控制 頁面\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:6677 +msgid "GUI Options" +msgstr "GUI 的選項 " -#: src/emc/usr_intf/pncconf/pncconf.py:6905 -msgid "" -"Touchy require selectable increments to be unchecked on the external " -"controls page\n" -msgstr "Touchy 需要 可選擇 增量 將未選中 的外部 控制 頁面\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:6708 +msgid "Virtual Control Panel" +msgstr " 虛 擬 控 制 面 板 " -#: src/emc/usr_intf/pncconf/pncconf.py:6909 -msgid "" -"The 7i29 daughter board requires PWM type generators and a PWM base " -"frequency of 20 khz\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:6783 +msgid "XYZ buttons (uses Halui)" +msgstr "XYZ 按鍵 (用 Halui)" -#: src/emc/usr_intf/pncconf/pncconf.py:6912 -msgid "" -"The 7i30 daughter board requires PWM type generators and a PWM base " -"frequency of 20 khz\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:6954 +msgid "Geometry Options" +msgstr "幾何 的選項" -#: src/emc/usr_intf/pncconf/pncconf.py:6915 -msgid "" -"The 7i33 daughter board requires PDM type generators and a PDM base " -"frequency of 6 Mhz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:7033 +msgid "Pyvcp Details" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6918 -msgid "" -"The 7i40 daughter board requires PWM type generators and a PWM base " -"frequency of 50 khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:7105 +msgid "Sample display " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:6921 -msgid "" -"The 7i48 daughter board requires UDM type generators and a PWM base " -"frequency of 24 khz\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:7272 +msgid "Standalone Panel" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7148 -msgid "Gearbox Reduction Ratio" -msgstr "齒輪箱 減速比" - -#: src/emc/usr_intf/pncconf/pncconf.py:7151 -msgid "Reduction Ratio" -msgstr "減速比" - -#: src/emc/usr_intf/pncconf/pncconf.py:7154 -msgid "Leadscrew Pitch" -msgstr "丝杆 螺距" - -#: src/emc/usr_intf/pncconf/pncconf.py:7157 -#: src/emc/usr_intf/pncconf/pncconf.glade:66327 -#: src/emc/usr_intf/pncconf/pncconf.glade:66622 -msgid "Leadscrew TPI" -msgstr "丝杆 TPI" - -#: src/emc/usr_intf/pncconf/pncconf.py:7161 -#: src/emc/usr_intf/pncconf/pncconf.py:7162 -msgid "(" +#: src/emc/usr_intf/pncconf/pncconf.glade:7289 +msgid "Rightside Embeded" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7163 -#: src/emc/usr_intf/pncconf/pncconf.py:7173 -#: src/emc/usr_intf/pncconf/pncconf.py:7174 -#: src/emc/usr_intf/pncconf/pncconf.py:7175 -#, fuzzy -msgid " / min" -msgstr "毫米 / 分鐘" +#: src/emc/usr_intf/pncconf/pncconf.glade:7305 +msgid "Center Tab Embeded" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7164 -#, fuzzy -msgid " / sec²" -msgstr "毫米 / 秒²" +#: src/emc/usr_intf/pncconf/pncconf.glade:7320 +msgid "Force Maximize" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7167 +#: src/emc/usr_intf/pncconf/pncconf.glade:7359 #, fuzzy -msgid " / Step" -msgstr "毫米 / 步" +msgid "Display Options" +msgstr "顯示英寸(_I)" -#: src/emc/usr_intf/pncconf/pncconf.py:7168 -#, fuzzy -msgid "Steps / " -msgstr "步 / 英寸" +#: src/emc/usr_intf/pncconf/pncconf.glade:7409 +msgid "Max RPM" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:7170 +#: src/emc/usr_intf/pncconf/pncconf.glade:7422 #, fuzzy -msgid " / encoder pulse" -msgstr "毫米 / 編碼器脈衝 " +msgid "Spindle Speed Indicator" +msgstr "主軸 轉速(RPM)" -#: src/emc/usr_intf/pncconf/pncconf.py:7171 +#: src/emc/usr_intf/pncconf/pncconf.glade:7434 #, fuzzy -msgid "Encoder pulses / " -msgstr "編碼器 脈衝 / 毫米" - -#: src/emc/usr_intf/pncconf/pncconf.py:7482 -msgid "Axis Scale Calculation" -msgstr "Axis 比例計算" - -#: src/emc/usr_intf/pncconf/pncconf.py:7785 -msgid "You need to designate an E-stop input pin for this ladder program." -msgstr "你需要指定一個 E-stop 輸入 端子 給這個梯形邏輯方案." +msgid "Spindle At Speed LED" +msgstr "主軸 轉速(RPM)" -#: src/emc/usr_intf/pncconf/pncconf.py:7797 +#: src/emc/usr_intf/pncconf/pncconf.glade:7446 #, fuzzy -msgid "You need to designate a probe input pin for this ladder program." -msgstr "你需要指定一個 E-stop 輸入 端子 給這個梯形邏輯方案." +msgid "Zero X Button" +msgstr "左 按鈕" -#: src/emc/usr_intf/pncconf/pncconf.py:7808 +#: src/emc/usr_intf/pncconf/pncconf.glade:7458 #, fuzzy -msgid "" -"OK to replace existing custom ladder program?\n" -"Existing Custom.clp will be renamed custom_backup.clp.\n" -"Any existing file named -custom_backup.clp- will be lost.Selecting 'existing " -"ladder program' will avoid this warning" -msgstr "" -"確定 以取代 現有的 自定義 梯形邏輯?\n" -"現有 Custom.clp將改名custom_backup.clp.(_b)\n" -"任何現有的 文件命名 -custom_backup.clp- 將會丟失." +msgid "Zero Y Button" +msgstr "左 按鈕" -#: src/emc/usr_intf/pncconf/pncconf.py:8019 -msgid "Do you wish to continue to edit this configuration." -msgstr "你是否想 繼續 編輯 此配置." +#: src/emc/usr_intf/pncconf/pncconf.glade:7470 +#, fuzzy +msgid "Zero Z Button" +msgstr "左 按鈕" -#: src/emc/usr_intf/pncconf/pncconf.py:8058 -msgid "PCI search page is unavailable\n" -msgstr "PCI 搜索頁面 無法使用\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:7482 +#, fuzzy +msgid "Zero A Button" +msgstr "左 按鈕" -#: src/emc/usr_intf/pncconf/pncconf.py:8176 -msgid "" -"You specified there is an existing gladefile, But there is not one in the " -"machine-named folder.." +#: src/emc/usr_intf/pncconf/pncconf.glade:7494 +msgid "Requires Classicladder touch-off program" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8495 +#: src/emc/usr_intf/pncconf/pncconf.glade:7495 +msgid "Auto Z Touch Off Button" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:7508 #, fuzzy -msgid "Servo tuning is not avaiable in PNCconf yet\n" -msgstr "伺服 調整 還沒有完成 / 在工作\n" +msgid "Sample Options" +msgstr "樣辦配置" -#: src/emc/usr_intf/pncconf/pncconf.py:8500 -msgid "degrees" -msgstr "度" +#: src/emc/usr_intf/pncconf/pncconf.glade:7582 +msgid "Gladevcp Details" +msgstr "GladeVCP 詳情" -#: src/emc/usr_intf/pncconf/pncconf.py:8501 -msgid "degrees / minute" -msgstr "度 / 分鐘" +#: src/emc/usr_intf/pncconf/pncconf.glade:7605 +msgid "Include custom GladeVCP GUI panel" +msgstr "包括自訂 GladeVCP GUI面板" -#: src/emc/usr_intf/pncconf/pncconf.py:8502 -msgid "degrees / second²" -msgstr "度 / 秒²" +#: src/emc/usr_intf/pncconf/pncconf.glade:7676 +msgid "Force individual manual homing" +msgstr "實施 個別 手動 回零" -#: src/emc/usr_intf/pncconf/pncconf.py:8504 -msgid "revolutions" -msgstr "轉" +#: src/emc/usr_intf/pncconf/pncconf.glade:7689 +msgid "Random position toolchanger " +msgstr "隨機 位置 換刀 " -#: src/emc/usr_intf/pncconf/pncconf.py:8505 -msgid "rpm" -msgstr "轉速" +#: src/emc/usr_intf/pncconf/pncconf.glade:7704 +msgid "Require homing before MDI / Running" +msgstr "需要先 回零 才 可以 MDI / Running" -#: src/emc/usr_intf/pncconf/pncconf.py:8506 -msgid "revs / second²" -msgstr "轉速 / 秒²" +#: src/emc/usr_intf/pncconf/pncconf.glade:7713 +msgid "Popup Toolchange Prompt" +msgstr "彈出窗口提示換刀" -#: src/emc/usr_intf/pncconf/pncconf.py:8509 -#: src/emc/usr_intf/pncconf/pncconf.glade:58295 -#: src/emc/usr_intf/pncconf/pncconf.glade:58479 -#: src/emc/usr_intf/pncconf/pncconf.glade:58576 -msgid "mm / minute" -msgstr "毫米 / 分鐘" +#: src/emc/usr_intf/pncconf/pncconf.glade:7727 +msgid "Leave spindle on during tool change" +msgstr "換刀 期間 保留主軸 轉動" -#: src/emc/usr_intf/pncconf/pncconf.py:8510 -msgid "mm / second²" -msgstr "毫米 / 秒²" +#: src/emc/usr_intf/pncconf/pncconf.glade:7740 +msgid "Move spindle up before tool change" +msgstr "換刀 之前 向上 移動 主軸" -#: src/emc/usr_intf/pncconf/pncconf.py:8513 -msgid "inches / minute" -msgstr "英寸 / 分鐘" +#: src/emc/usr_intf/pncconf/pncconf.glade:7753 +msgid "Restore joint position after shutdown" +msgstr "停機後 恢復 Joint 的位置" -#: src/emc/usr_intf/pncconf/pncconf.py:8514 -msgid "inches / second²" -msgstr "英寸 / 秒²" +#: src/emc/usr_intf/pncconf/pncconf.glade:7769 +msgid "Defaults and Options" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8646 -#, python-format -msgid "%s Axis Tune" -msgstr "%s 軸 調整" +#: src/emc/usr_intf/pncconf/pncconf.glade:7797 +msgid "Mesa0 I/O setup\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8810 -#, fuzzy +#: src/emc/usr_intf/pncconf/pncconf.glade:7817 msgid "" -" You must designate a ENCODER / RESOLVER signal and an ANALOG SPINDLE signal " -"for this axis test" -msgstr "您必須指定 一個 編碼器 信號 和 PWM 信號 給此軸測試" +"Click on each page tab to configure signal names for each connector port.\n" +"\n" +"Press the button to make the tabbed pages\n" +"accept the changes.\n" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.py:8814 -#, fuzzy -msgid "" -" You must designate a ENCODER / RESOLVER signal and a PWM signal for this " -"axis test" -msgstr "您必須指定 一個 編碼器 信號 和 PWM 信號 給此軸測試" +#: src/emc/usr_intf/pncconf/pncconf.glade:8001 +msgid "3PWM base frequency:" +msgstr "3PWM 基頻:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8 -#, fuzzy -msgid "LinuxCNC Point And Click Configuration" -msgstr "EMC2 指 向 和 點 擊 配 置" +#: src/emc/usr_intf/pncconf/pncconf.glade:8036 +msgid "Mesa parport address:" +msgstr "Mesa 並行端口 地址: " -#: src/emc/usr_intf/pncconf/pncconf.glade:23 -#, fuzzy -msgid "LinuxCNC Configuration Wizard Beta 1 Version" -msgstr "EMC2 設 定 精 靈 的 Alpha 版 本" +#: src/emc/usr_intf/pncconf/pncconf.glade:8047 +msgid "Firmware:" +msgstr "固件:" -#: src/emc/usr_intf/pncconf/pncconf.glade:24 +#: src/emc/usr_intf/pncconf/pncconf.glade:8069 +msgid "SVST8_4" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:8094 +msgid "Num of 3 pwm generators: " +msgstr "PWM 產生器" + +#: src/emc/usr_intf/pncconf/pncconf.glade:8128 +msgid "Total number of pins:" +msgstr "腳的 總數:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:8153 msgid "" -"\tThis program creates configuration \n" -" files for \"Closed Loop Servo\" \n" -"\t \t and hardware stepper\n" -" \tmachines" +"Accept components\n" +" Changes" msgstr "" -"\t這程序創建的配置 \n" -" 文件 為 \" 閉環伺服 \" \n" -"\t \t 和硬件 步進電機\n" -" \t 機器 " -#: src/emc/usr_intf/pncconf/pncconf.glade:34 -msgid "Create or Edit" -msgstr "創建 或 修改" +#: src/emc/usr_intf/pncconf/pncconf.glade:8168 +msgid "PWM base frequency:" +msgstr "PWM 基頻:" -#: src/emc/usr_intf/pncconf/pncconf.glade:52 -msgid "Create a new configuration" -msgstr "創建一個新的配置" +#: src/emc/usr_intf/pncconf/pncconf.glade:8179 +msgid "PDM base frequency:" +msgstr "PDM 基頻:" -#: src/emc/usr_intf/pncconf/pncconf.glade:118 -msgid "Create a desktop shortcut (symlink) to configuration files." -msgstr "創建一個桌面 快捷方式(鏈接)的 配置文件." +#: src/emc/usr_intf/pncconf/pncconf.glade:8190 +msgid "Watchdog timeout:" +msgstr "監視程序超時:" -#: src/emc/usr_intf/pncconf/pncconf.glade:135 -msgid "Create a desktop launcher to start LinuxCNC with this configuration." -msgstr "創建一個桌面 啟動器 啟動 LinuxCNC 與 此配置." +#: src/emc/usr_intf/pncconf/pncconf.glade:8307 +msgid "Num of encoders:" +msgstr "編碼器 的數目:" -#: src/emc/usr_intf/pncconf/pncconf.glade:214 -msgid "Machine Name:" -msgstr "機器 名稱:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8318 +msgid "Num of pwm generators:" +msgstr "PWM 產生器 的數目:" -#: src/emc/usr_intf/pncconf/pncconf.glade:281 -msgid "Axis configuration:" -msgstr "軸的 配置:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8329 +msgid "Num of step generators: " +msgstr "步進 產生器 的數目:" -#: src/emc/usr_intf/pncconf/pncconf.glade:316 -msgid "Machine units:" -msgstr "機器 單元:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8340 +msgid "Board name" +msgstr "線路板 名字" -#: src/emc/usr_intf/pncconf/pncconf.glade:355 -msgid "Machine Basics" -msgstr "機器 基本" +#: src/emc/usr_intf/pncconf/pncconf.glade:8346 +#, fuzzy +msgid "Num of Smart Serial Ports:" +msgstr "PWM 產生器 的數目:" -#: src/emc/usr_intf/pncconf/pncconf.glade:405 -msgid "Recommend servo period: 1000000" -msgstr "推薦伺服週期: 10000000" +#: src/emc/usr_intf/pncconf/pncconf.glade:8393 +msgid "7i29 daughter board" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:431 -msgid "Actual Servo Period: " -msgstr "實際伺服週期: " +#: src/emc/usr_intf/pncconf/pncconf.glade:8402 +msgid "7i30 daughter board" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:486 -msgid "" -" Test Base\n" -"Period Jitter " +#: src/emc/usr_intf/pncconf/pncconf.glade:8414 +msgid "7i33 daughter board" msgstr "" -" 檢測基本\n" -"週期抖動 " -#: src/emc/usr_intf/pncconf/pncconf.glade:511 -msgid "Computer Response Time" -msgstr "電腦響應時間" +#: src/emc/usr_intf/pncconf/pncconf.glade:8426 +msgid "7i40 daughter board" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:553 -msgid "Mesa0 PCI / Parport Card:" -msgstr "Mesa0 PCI /並口卡:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8438 +msgid "7i48 daughter board" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:563 -msgid "Mesa1 PCI / Parport Card:" -msgstr "Mesa1 PCI /並口卡:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8453 +msgid "Sanity Checks" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:576 -msgid "First Parport Address:" -msgstr "第一個並行埠地址:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8482 +#, fuzzy +msgid "Num of channels: " +msgstr "沒有足夠的通道" -#: src/emc/usr_intf/pncconf/pncconf.glade:589 -msgid "Second Parport Address:" -msgstr "第二個並行埠地址:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8494 +#, fuzzy +msgid "Num of resolvers:" +msgstr "編碼器 的數目:" -#: src/emc/usr_intf/pncconf/pncconf.glade:604 -msgid "Third Parport Address:" -msgstr "第三個並行埠地址:" +#: src/emc/usr_intf/pncconf/pncconf.glade:8528 +msgid "" +"Configuration\n" +" Page" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:627 -#: src/emc/usr_intf/pncconf/pncconf.glade:635 +#: src/emc/usr_intf/pncconf/pncconf.glade:8721 +#: src/emc/usr_intf/pncconf/pncconf.glade:8773 +#: src/emc/usr_intf/pncconf/pncconf.glade:9093 +#: src/emc/usr_intf/pncconf/pncconf.glade:9145 +#: src/emc/usr_intf/pncconf/pncconf.glade:9197 +#: src/emc/usr_intf/pncconf/pncconf.glade:9249 +#: src/emc/usr_intf/pncconf/pncconf.glade:9301 +#: src/emc/usr_intf/pncconf/pncconf.glade:9353 +#: src/emc/usr_intf/pncconf/pncconf.glade:9405 +#: src/emc/usr_intf/pncconf/pncconf.glade:9457 +#: src/emc/usr_intf/pncconf/pncconf.glade:9509 +#: src/emc/usr_intf/pncconf/pncconf.glade:9561 +#: src/emc/usr_intf/pncconf/pncconf.glade:10400 +#: src/emc/usr_intf/pncconf/pncconf.glade:10453 +#: src/emc/usr_intf/pncconf/pncconf.glade:10505 +#: src/emc/usr_intf/pncconf/pncconf.glade:10557 +#: src/emc/usr_intf/pncconf/pncconf.glade:11335 +#: src/emc/usr_intf/pncconf/pncconf.glade:11387 +#: src/emc/usr_intf/pncconf/pncconf.glade:12047 +#: src/emc/usr_intf/pncconf/pncconf.glade:12099 +#: src/emc/usr_intf/pncconf/pncconf.glade:12151 +#: src/emc/usr_intf/pncconf/pncconf.glade:12203 +#: src/emc/usr_intf/pncconf/pncconf.glade:13042 +#: src/emc/usr_intf/pncconf/pncconf.glade:13094 +#: src/emc/usr_intf/pncconf/pncconf.glade:13146 +#: src/emc/usr_intf/pncconf/pncconf.glade:13198 +#: src/emc/usr_intf/pncconf/pncconf.glade:13250 +#: src/emc/usr_intf/pncconf/pncconf.glade:13302 +#: src/emc/usr_intf/pncconf/pncconf.glade:13354 +#: src/emc/usr_intf/pncconf/pncconf.glade:13406 +#: src/emc/usr_intf/pncconf/pncconf.glade:13458 +#: src/emc/usr_intf/pncconf/pncconf.glade:13510 +#: src/emc/usr_intf/pncconf/pncconf.glade:14556 +#: src/emc/usr_intf/pncconf/pncconf.glade:14608 +#: src/emc/usr_intf/pncconf/pncconf.glade:14660 +#: src/emc/usr_intf/pncconf/pncconf.glade:14712 +#: src/emc/usr_intf/pncconf/pncconf.glade:15539 +#: src/emc/usr_intf/pncconf/pncconf.glade:15591 +#: src/emc/usr_intf/pncconf/pncconf.glade:15643 +#: src/emc/usr_intf/pncconf/pncconf.glade:15695 +#: src/emc/usr_intf/pncconf/pncconf.glade:15747 +#: src/emc/usr_intf/pncconf/pncconf.glade:15799 +#: src/emc/usr_intf/pncconf/pncconf.glade:15851 +#: src/emc/usr_intf/pncconf/pncconf.glade:15903 +#: src/emc/usr_intf/pncconf/pncconf.glade:15955 +#: src/emc/usr_intf/pncconf/pncconf.glade:16007 +#: src/emc/usr_intf/pncconf/pncconf.glade:16059 +#: src/emc/usr_intf/pncconf/pncconf.glade:16111 +#: src/emc/usr_intf/pncconf/pncconf.glade:16540 +#: src/emc/usr_intf/pncconf/pncconf.glade:16592 +#: src/emc/usr_intf/pncconf/pncconf.glade:17253 +#: src/emc/usr_intf/pncconf/pncconf.glade:17305 +#: src/emc/usr_intf/pncconf/pncconf.glade:17357 +#: src/emc/usr_intf/pncconf/pncconf.glade:18196 +#: src/emc/usr_intf/pncconf/pncconf.glade:18248 +#: src/emc/usr_intf/pncconf/pncconf.glade:18300 +#: src/emc/usr_intf/pncconf/pncconf.glade:18352 +#: src/emc/usr_intf/pncconf/pncconf.glade:18404 +#: src/emc/usr_intf/pncconf/pncconf.glade:18456 +#: src/emc/usr_intf/pncconf/pncconf.glade:18508 +#: src/emc/usr_intf/pncconf/pncconf.glade:18560 +#: src/emc/usr_intf/pncconf/pncconf.glade:18612 +#: src/emc/usr_intf/pncconf/pncconf.glade:18664 +#: src/emc/usr_intf/pncconf/pncconf.glade:18716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26612 +#: src/emc/usr_intf/pncconf/pncconf.glade:26664 +#: src/emc/usr_intf/pncconf/pncconf.glade:26716 +#: src/emc/usr_intf/pncconf/pncconf.glade:26768 +#: src/emc/usr_intf/pncconf/pncconf.glade:26820 +#: src/emc/usr_intf/pncconf/pncconf.glade:26872 +#: src/emc/usr_intf/pncconf/pncconf.glade:26924 +#: src/emc/usr_intf/pncconf/pncconf.glade:26976 +#: src/emc/usr_intf/pncconf/pncconf.glade:27028 +#: src/emc/usr_intf/pncconf/pncconf.glade:27080 +#: src/emc/usr_intf/pncconf/pncconf.glade:27132 +#: src/emc/usr_intf/pncconf/pncconf.glade:27184 +#: src/emc/usr_intf/pncconf/pncconf.glade:28011 +#: src/emc/usr_intf/pncconf/pncconf.glade:28063 +#: src/emc/usr_intf/pncconf/pncconf.glade:28115 +#: src/emc/usr_intf/pncconf/pncconf.glade:28167 +#: src/emc/usr_intf/pncconf/pncconf.glade:29507 +#: src/emc/usr_intf/pncconf/pncconf.glade:29559 +#: src/emc/usr_intf/pncconf/pncconf.glade:29611 +#: src/emc/usr_intf/pncconf/pncconf.glade:29663 +#: src/emc/usr_intf/pncconf/pncconf.glade:30490 +#: src/emc/usr_intf/pncconf/pncconf.glade:30542 +#: src/emc/usr_intf/pncconf/pncconf.glade:30594 +#: src/emc/usr_intf/pncconf/pncconf.glade:30646 +#: src/emc/usr_intf/pncconf/pncconf.glade:30698 +#: src/emc/usr_intf/pncconf/pncconf.glade:30750 +#: src/emc/usr_intf/pncconf/pncconf.glade:30802 +#: src/emc/usr_intf/pncconf/pncconf.glade:30854 +#: src/emc/usr_intf/pncconf/pncconf.glade:30906 +#: src/emc/usr_intf/pncconf/pncconf.glade:30958 +#: src/emc/usr_intf/pncconf/pncconf.glade:31010 +#: src/emc/usr_intf/pncconf/pncconf.glade:31062 +#: src/emc/usr_intf/pncconf/pncconf.glade:31878 +#: src/emc/usr_intf/pncconf/pncconf.glade:31930 +#: src/emc/usr_intf/pncconf/pncconf.glade:31982 +#: src/emc/usr_intf/pncconf/pncconf.glade:32034 +#: src/emc/usr_intf/pncconf/pncconf.glade:32086 +#: src/emc/usr_intf/pncconf/pncconf.glade:32138 +#: src/emc/usr_intf/pncconf/pncconf.glade:32190 +#: src/emc/usr_intf/pncconf/pncconf.glade:32242 +#: src/emc/usr_intf/pncconf/pncconf.glade:32294 +#: src/emc/usr_intf/pncconf/pncconf.glade:32346 +#: src/emc/usr_intf/pncconf/pncconf.glade:32398 +#: src/emc/usr_intf/pncconf/pncconf.glade:32450 +#: src/emc/usr_intf/pncconf/pncconf.glade:33852 +#: src/emc/usr_intf/pncconf/pncconf.glade:33904 +#: src/emc/usr_intf/pncconf/pncconf.glade:33956 +#: src/emc/usr_intf/pncconf/pncconf.glade:34008 +#: src/emc/usr_intf/pncconf/pncconf.glade:34835 +#: src/emc/usr_intf/pncconf/pncconf.glade:34887 +#: src/emc/usr_intf/pncconf/pncconf.glade:34939 +#: src/emc/usr_intf/pncconf/pncconf.glade:34991 +#: src/emc/usr_intf/pncconf/pncconf.glade:35043 +#: src/emc/usr_intf/pncconf/pncconf.glade:35095 +#: src/emc/usr_intf/pncconf/pncconf.glade:35147 +#: src/emc/usr_intf/pncconf/pncconf.glade:35199 +#: src/emc/usr_intf/pncconf/pncconf.glade:35251 +#: src/emc/usr_intf/pncconf/pncconf.glade:35303 +#: src/emc/usr_intf/pncconf/pncconf.glade:35355 +#: src/emc/usr_intf/pncconf/pncconf.glade:35407 +#: src/emc/usr_intf/pncconf/pncconf.glade:36096 +#: src/emc/usr_intf/pncconf/pncconf.glade:36148 +#: src/emc/usr_intf/pncconf/pncconf.glade:36200 +#: src/emc/usr_intf/pncconf/pncconf.glade:36252 +#: src/emc/usr_intf/pncconf/pncconf.glade:36304 +#: src/emc/usr_intf/pncconf/pncconf.glade:36356 +#: src/emc/usr_intf/pncconf/pncconf.glade:36408 +#: src/emc/usr_intf/pncconf/pncconf.glade:36460 +#: src/emc/usr_intf/pncconf/pncconf.glade:36512 +#: src/emc/usr_intf/pncconf/pncconf.glade:36564 +#: src/emc/usr_intf/pncconf/pncconf.glade:36616 +#: src/emc/usr_intf/pncconf/pncconf.glade:36668 +#: src/emc/usr_intf/pncconf/pncconf.glade:37495 +#: src/emc/usr_intf/pncconf/pncconf.glade:37547 +#: src/emc/usr_intf/pncconf/pncconf.glade:37599 +#: src/emc/usr_intf/pncconf/pncconf.glade:37651 +#: src/emc/usr_intf/pncconf/pncconf.glade:39168 +#: src/emc/usr_intf/pncconf/pncconf.glade:39220 +#: src/emc/usr_intf/pncconf/pncconf.glade:39272 +#: src/emc/usr_intf/pncconf/pncconf.glade:39324 +#: src/emc/usr_intf/pncconf/pncconf.glade:39376 +#: src/emc/usr_intf/pncconf/pncconf.glade:39428 +#: src/emc/usr_intf/pncconf/pncconf.glade:39480 +#: src/emc/usr_intf/pncconf/pncconf.glade:39532 +#: src/emc/usr_intf/pncconf/pncconf.glade:39584 +#: src/emc/usr_intf/pncconf/pncconf.glade:39636 +#: src/emc/usr_intf/pncconf/pncconf.glade:39688 +#: src/emc/usr_intf/pncconf/pncconf.glade:39740 +#: src/emc/usr_intf/pncconf/pncconf.glade:40456 +#: src/emc/usr_intf/pncconf/pncconf.glade:40508 +#: src/emc/usr_intf/pncconf/pncconf.glade:40560 +#: src/emc/usr_intf/pncconf/pncconf.glade:40612 +#: src/emc/usr_intf/pncconf/pncconf.glade:40664 +#: src/emc/usr_intf/pncconf/pncconf.glade:40716 +#: src/emc/usr_intf/pncconf/pncconf.glade:40768 +#: src/emc/usr_intf/pncconf/pncconf.glade:40820 +#: src/emc/usr_intf/pncconf/pncconf.glade:40872 +#: src/emc/usr_intf/pncconf/pncconf.glade:40924 +#: src/emc/usr_intf/pncconf/pncconf.glade:40976 +#: src/emc/usr_intf/pncconf/pncconf.glade:41028 +#: src/emc/usr_intf/pncconf/pncconf.glade:41855 +#: src/emc/usr_intf/pncconf/pncconf.glade:41907 +#: src/emc/usr_intf/pncconf/pncconf.glade:41959 +#: src/emc/usr_intf/pncconf/pncconf.glade:42011 +#: src/emc/usr_intf/pncconf/pncconf.glade:43351 +#: src/emc/usr_intf/pncconf/pncconf.glade:43403 +#: src/emc/usr_intf/pncconf/pncconf.glade:43455 +#: src/emc/usr_intf/pncconf/pncconf.glade:43507 +#: src/emc/usr_intf/pncconf/pncconf.glade:44334 +#: src/emc/usr_intf/pncconf/pncconf.glade:44386 +#: src/emc/usr_intf/pncconf/pncconf.glade:44438 +#: src/emc/usr_intf/pncconf/pncconf.glade:44490 +#: src/emc/usr_intf/pncconf/pncconf.glade:44542 +#: src/emc/usr_intf/pncconf/pncconf.glade:44594 +#: src/emc/usr_intf/pncconf/pncconf.glade:44646 +#: src/emc/usr_intf/pncconf/pncconf.glade:44698 +#: src/emc/usr_intf/pncconf/pncconf.glade:44750 +#: src/emc/usr_intf/pncconf/pncconf.glade:44802 +#: src/emc/usr_intf/pncconf/pncconf.glade:44854 +#: src/emc/usr_intf/pncconf/pncconf.glade:44906 +#: src/emc/usr_intf/pncconf/pncconf.glade:45711 +#: src/emc/usr_intf/pncconf/pncconf.glade:45763 +#: src/emc/usr_intf/pncconf/pncconf.glade:45815 +#: src/emc/usr_intf/pncconf/pncconf.glade:45867 +#: src/emc/usr_intf/pncconf/pncconf.glade:45919 +#: src/emc/usr_intf/pncconf/pncconf.glade:45971 +#: src/emc/usr_intf/pncconf/pncconf.glade:46023 +#: src/emc/usr_intf/pncconf/pncconf.glade:46075 +#: src/emc/usr_intf/pncconf/pncconf.glade:46127 +#: src/emc/usr_intf/pncconf/pncconf.glade:46179 +#: src/emc/usr_intf/pncconf/pncconf.glade:46231 +#: src/emc/usr_intf/pncconf/pncconf.glade:46283 +#: src/emc/usr_intf/pncconf/pncconf.glade:47379 +#: src/emc/usr_intf/pncconf/pncconf.glade:47431 +#: src/emc/usr_intf/pncconf/pncconf.glade:47483 +#: src/emc/usr_intf/pncconf/pncconf.glade:47535 +#: src/emc/usr_intf/pncconf/pncconf.glade:47587 +#: src/emc/usr_intf/pncconf/pncconf.glade:47639 +#: src/emc/usr_intf/pncconf/pncconf.glade:47691 +#: src/emc/usr_intf/pncconf/pncconf.glade:47743 +#: src/emc/usr_intf/pncconf/pncconf.glade:47795 +#: src/emc/usr_intf/pncconf/pncconf.glade:47847 +#: src/emc/usr_intf/pncconf/pncconf.glade:47899 +#: src/emc/usr_intf/pncconf/pncconf.glade:47951 +#: src/emc/usr_intf/pncconf/pncconf.glade:48778 +#: src/emc/usr_intf/pncconf/pncconf.glade:48830 +#: src/emc/usr_intf/pncconf/pncconf.glade:48882 +#: src/emc/usr_intf/pncconf/pncconf.glade:48934 +#: src/emc/usr_intf/pncconf/pncconf.glade:50274 +#: src/emc/usr_intf/pncconf/pncconf.glade:50326 +#: src/emc/usr_intf/pncconf/pncconf.glade:50378 +#: src/emc/usr_intf/pncconf/pncconf.glade:50430 +#: src/emc/usr_intf/pncconf/pncconf.glade:51257 +#: src/emc/usr_intf/pncconf/pncconf.glade:51309 +#: src/emc/usr_intf/pncconf/pncconf.glade:51361 +#: src/emc/usr_intf/pncconf/pncconf.glade:51413 +#: src/emc/usr_intf/pncconf/pncconf.glade:51465 +#: src/emc/usr_intf/pncconf/pncconf.glade:51517 +#: src/emc/usr_intf/pncconf/pncconf.glade:51569 +#: src/emc/usr_intf/pncconf/pncconf.glade:51621 +#: src/emc/usr_intf/pncconf/pncconf.glade:51673 +#: src/emc/usr_intf/pncconf/pncconf.glade:51725 +#: src/emc/usr_intf/pncconf/pncconf.glade:51777 +#: src/emc/usr_intf/pncconf/pncconf.glade:51829 +#: src/emc/usr_intf/pncconf/pncconf.glade:52634 +#: src/emc/usr_intf/pncconf/pncconf.glade:52686 +#: src/emc/usr_intf/pncconf/pncconf.glade:52738 +#: src/emc/usr_intf/pncconf/pncconf.glade:52790 +#: src/emc/usr_intf/pncconf/pncconf.glade:52842 +#: src/emc/usr_intf/pncconf/pncconf.glade:52894 +#: src/emc/usr_intf/pncconf/pncconf.glade:52946 +#: src/emc/usr_intf/pncconf/pncconf.glade:52998 +#: src/emc/usr_intf/pncconf/pncconf.glade:53050 +#: src/emc/usr_intf/pncconf/pncconf.glade:53102 +#: src/emc/usr_intf/pncconf/pncconf.glade:53154 +#: src/emc/usr_intf/pncconf/pncconf.glade:53206 +#: src/emc/usr_intf/pncconf/pncconf.glade:54302 +#: src/emc/usr_intf/pncconf/pncconf.glade:54354 +#: src/emc/usr_intf/pncconf/pncconf.glade:54406 +#: src/emc/usr_intf/pncconf/pncconf.glade:54458 +#: src/emc/usr_intf/pncconf/pncconf.glade:54510 +#: src/emc/usr_intf/pncconf/pncconf.glade:54562 +#: src/emc/usr_intf/pncconf/pncconf.glade:54614 +#: src/emc/usr_intf/pncconf/pncconf.glade:54666 +#: src/emc/usr_intf/pncconf/pncconf.glade:54718 +#: src/emc/usr_intf/pncconf/pncconf.glade:54770 +#: src/emc/usr_intf/pncconf/pncconf.glade:54822 +#: src/emc/usr_intf/pncconf/pncconf.glade:54874 +#: src/emc/usr_intf/pncconf/pncconf.glade:55701 +#: src/emc/usr_intf/pncconf/pncconf.glade:55753 +#: src/emc/usr_intf/pncconf/pncconf.glade:55805 +#: src/emc/usr_intf/pncconf/pncconf.glade:55857 +#: src/emc/usr_intf/pncconf/pncconf.glade:57197 +#: src/emc/usr_intf/pncconf/pncconf.glade:57249 +#: src/emc/usr_intf/pncconf/pncconf.glade:57301 +#: src/emc/usr_intf/pncconf/pncconf.glade:57353 +#: src/emc/usr_intf/pncconf/pncconf.glade:58180 +#: src/emc/usr_intf/pncconf/pncconf.glade:58232 +#: src/emc/usr_intf/pncconf/pncconf.glade:58284 +#: src/emc/usr_intf/pncconf/pncconf.glade:58336 +#: src/emc/usr_intf/pncconf/pncconf.glade:58388 +#: src/emc/usr_intf/pncconf/pncconf.glade:58440 +#: src/emc/usr_intf/pncconf/pncconf.glade:58492 +#: src/emc/usr_intf/pncconf/pncconf.glade:58544 +#: src/emc/usr_intf/pncconf/pncconf.glade:58596 +#: src/emc/usr_intf/pncconf/pncconf.glade:58648 +#: src/emc/usr_intf/pncconf/pncconf.glade:58700 +#: src/emc/usr_intf/pncconf/pncconf.glade:58752 +#: src/emc/usr_intf/pncconf/pncconf.glade:59557 +#: src/emc/usr_intf/pncconf/pncconf.glade:59609 +#: src/emc/usr_intf/pncconf/pncconf.glade:59661 +#: src/emc/usr_intf/pncconf/pncconf.glade:59713 +#: src/emc/usr_intf/pncconf/pncconf.glade:59765 +#: src/emc/usr_intf/pncconf/pncconf.glade:59817 +#: src/emc/usr_intf/pncconf/pncconf.glade:59869 +#: src/emc/usr_intf/pncconf/pncconf.glade:59921 +#: src/emc/usr_intf/pncconf/pncconf.glade:59973 +#: src/emc/usr_intf/pncconf/pncconf.glade:60025 +#: src/emc/usr_intf/pncconf/pncconf.glade:60077 +#: src/emc/usr_intf/pncconf/pncconf.glade:60129 msgid "" -"5i20\n" -"5i23\n" -"5i22" +"ESTOP IN\n" +"Spindle PPR\n" +"Spindle A \n" +"Spindle B \n" +"Home X \n" +"Home Y \n" +"Home Z\n" +"Home A\n" +"Minimum Limit + Home X \n" +"Minimum Limit + Home Y \n" +"Minimum Limit + Home Z \n" +"Minimum Limit + Home A\n" +"Maximum Limit + Home X \n" +"Maximum Limit + Home Y \n" +"Maximum Limit + Home Z \n" +"Maximum Limit + Home A\n" +"Both Limit + Home X \n" +"Both Limit + Home Y \n" +"Both Limit + Home Z \n" +"Both Limit + Home A\n" +"Minimum Limit X \n" +"Minimum Limit Y \n" +"Minimum Limit Z \n" +"Minimum Limit A\n" +"Maximum Limit X \n" +"Maximum Limit Y \n" +"Maximum Limit Z \n" +"Maximum Limit A\n" +"Both Limit X \n" +"Both Limit Y \n" +"Both Limit Z \n" +"Both Limit A\n" +"All limits\n" +"All home\n" +"Unused" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:708 -#: src/emc/usr_intf/pncconf/pncconf.glade:720 -#: src/emc/usr_intf/pncconf/pncconf.glade:733 +#: src/emc/usr_intf/pncconf/pncconf.glade:8825 +#: src/emc/usr_intf/pncconf/pncconf.glade:9081 +#: src/emc/usr_intf/pncconf/pncconf.glade:13563 +#: src/emc/usr_intf/pncconf/pncconf.glade:13818 +#: src/emc/usr_intf/pncconf/pncconf.glade:16164 +#: src/emc/usr_intf/pncconf/pncconf.glade:16410 +#: src/emc/usr_intf/pncconf/pncconf.glade:18769 +#: src/emc/usr_intf/pncconf/pncconf.glade:19024 +#: src/emc/usr_intf/pncconf/pncconf.glade:20571 +#: src/emc/usr_intf/pncconf/pncconf.glade:20820 +#: src/emc/usr_intf/pncconf/pncconf.glade:20949 +#: src/emc/usr_intf/pncconf/pncconf.glade:21199 +#: src/emc/usr_intf/pncconf/pncconf.glade:22745 +#: src/emc/usr_intf/pncconf/pncconf.glade:22995 +#: src/emc/usr_intf/pncconf/pncconf.glade:24541 +#: src/emc/usr_intf/pncconf/pncconf.glade:24791 +#: src/emc/usr_intf/pncconf/pncconf.glade:26353 +#: src/emc/usr_intf/pncconf/pncconf.glade:26600 +#: src/emc/usr_intf/pncconf/pncconf.glade:31115 +#: src/emc/usr_intf/pncconf/pncconf.glade:31361 +#: src/emc/usr_intf/pncconf/pncconf.glade:31621 +#: src/emc/usr_intf/pncconf/pncconf.glade:35460 +#: src/emc/usr_intf/pncconf/pncconf.glade:35706 +#: src/emc/usr_intf/pncconf/pncconf.glade:35837 +#: src/emc/usr_intf/pncconf/pncconf.glade:36084 +#: src/emc/usr_intf/pncconf/pncconf.glade:40037 +#: src/emc/usr_intf/pncconf/pncconf.glade:40197 +#: src/emc/usr_intf/pncconf/pncconf.glade:40444 +#: src/emc/usr_intf/pncconf/pncconf.glade:44959 +#: src/emc/usr_intf/pncconf/pncconf.glade:45205 +#: src/emc/usr_intf/pncconf/pncconf.glade:45454 +#: src/emc/usr_intf/pncconf/pncconf.glade:47120 +#: src/emc/usr_intf/pncconf/pncconf.glade:47367 +#: src/emc/usr_intf/pncconf/pncconf.glade:51882 +#: src/emc/usr_intf/pncconf/pncconf.glade:52128 +#: src/emc/usr_intf/pncconf/pncconf.glade:52377 +#: src/emc/usr_intf/pncconf/pncconf.glade:54043 +#: src/emc/usr_intf/pncconf/pncconf.glade:54290 +#: src/emc/usr_intf/pncconf/pncconf.glade:58805 +#: src/emc/usr_intf/pncconf/pncconf.glade:59051 +#: src/emc/usr_intf/pncconf/pncconf.glade:59300 +msgid "Pin Type" +msgstr "接腳類型" + +#: src/emc/usr_intf/pncconf/pncconf.glade:8838 +#: src/emc/usr_intf/pncconf/pncconf.glade:8900 +#: src/emc/usr_intf/pncconf/pncconf.glade:13743 +#: src/emc/usr_intf/pncconf/pncconf.glade:13806 +#: src/emc/usr_intf/pncconf/pncconf.glade:16335 +#: src/emc/usr_intf/pncconf/pncconf.glade:16398 +#: src/emc/usr_intf/pncconf/pncconf.glade:18949 +#: src/emc/usr_intf/pncconf/pncconf.glade:19012 +#: src/emc/usr_intf/pncconf/pncconf.glade:20751 +#: src/emc/usr_intf/pncconf/pncconf.glade:20808 +#: src/emc/usr_intf/pncconf/pncconf.glade:20962 +#: src/emc/usr_intf/pncconf/pncconf.glade:21018 +#: src/emc/usr_intf/pncconf/pncconf.glade:22758 +#: src/emc/usr_intf/pncconf/pncconf.glade:22814 +#: src/emc/usr_intf/pncconf/pncconf.glade:24554 +#: src/emc/usr_intf/pncconf/pncconf.glade:24610 +#: src/emc/usr_intf/pncconf/pncconf.glade:26366 +#: src/emc/usr_intf/pncconf/pncconf.glade:26428 +#: src/emc/usr_intf/pncconf/pncconf.glade:31286 +#: src/emc/usr_intf/pncconf/pncconf.glade:31349 +#: src/emc/usr_intf/pncconf/pncconf.glade:31634 +#: src/emc/usr_intf/pncconf/pncconf.glade:35631 +#: src/emc/usr_intf/pncconf/pncconf.glade:35694 +#: src/emc/usr_intf/pncconf/pncconf.glade:35850 +#: src/emc/usr_intf/pncconf/pncconf.glade:35912 +#: src/emc/usr_intf/pncconf/pncconf.glade:40025 +#: src/emc/usr_intf/pncconf/pncconf.glade:40210 +#: src/emc/usr_intf/pncconf/pncconf.glade:40272 +#: src/emc/usr_intf/pncconf/pncconf.glade:45130 +#: src/emc/usr_intf/pncconf/pncconf.glade:45193 +#: src/emc/usr_intf/pncconf/pncconf.glade:45467 +#: src/emc/usr_intf/pncconf/pncconf.glade:47133 +#: src/emc/usr_intf/pncconf/pncconf.glade:47195 +#: src/emc/usr_intf/pncconf/pncconf.glade:52053 +#: src/emc/usr_intf/pncconf/pncconf.glade:52116 +#: src/emc/usr_intf/pncconf/pncconf.glade:52390 +#: src/emc/usr_intf/pncconf/pncconf.glade:54056 +#: src/emc/usr_intf/pncconf/pncconf.glade:54118 +#: src/emc/usr_intf/pncconf/pncconf.glade:58976 +#: src/emc/usr_intf/pncconf/pncconf.glade:59039 +#: src/emc/usr_intf/pncconf/pncconf.glade:59313 +msgid "Inv" +msgstr "反轉" + +#: src/emc/usr_intf/pncconf/pncconf.glade:8867 +#: src/emc/usr_intf/pncconf/pncconf.glade:10731 +#: src/emc/usr_intf/pncconf/pncconf.glade:10751 +#: src/emc/usr_intf/pncconf/pncconf.glade:10771 +#: src/emc/usr_intf/pncconf/pncconf.glade:10791 +#: src/emc/usr_intf/pncconf/pncconf.glade:10811 +#: src/emc/usr_intf/pncconf/pncconf.glade:10831 +#: src/emc/usr_intf/pncconf/pncconf.glade:10851 +#: src/emc/usr_intf/pncconf/pncconf.glade:10871 +#: src/emc/usr_intf/pncconf/pncconf.glade:10891 +#: src/emc/usr_intf/pncconf/pncconf.glade:10911 +#: src/emc/usr_intf/pncconf/pncconf.glade:10931 +#: src/emc/usr_intf/pncconf/pncconf.glade:10951 +#: src/emc/usr_intf/pncconf/pncconf.glade:10971 +#: src/emc/usr_intf/pncconf/pncconf.glade:10991 +#: src/emc/usr_intf/pncconf/pncconf.glade:11011 +#: src/emc/usr_intf/pncconf/pncconf.glade:11031 +#: src/emc/usr_intf/pncconf/pncconf.glade:11051 +#: src/emc/usr_intf/pncconf/pncconf.glade:11071 +#: src/emc/usr_intf/pncconf/pncconf.glade:11091 +#: src/emc/usr_intf/pncconf/pncconf.glade:11111 +#: src/emc/usr_intf/pncconf/pncconf.glade:11131 +#: src/emc/usr_intf/pncconf/pncconf.glade:11151 +#: src/emc/usr_intf/pncconf/pncconf.glade:11171 +#: src/emc/usr_intf/pncconf/pncconf.glade:11465 +#: src/emc/usr_intf/pncconf/pncconf.glade:11485 +#: src/emc/usr_intf/pncconf/pncconf.glade:11505 +#: src/emc/usr_intf/pncconf/pncconf.glade:11525 +#: src/emc/usr_intf/pncconf/pncconf.glade:11545 +#: src/emc/usr_intf/pncconf/pncconf.glade:11565 +#: src/emc/usr_intf/pncconf/pncconf.glade:11585 +#: src/emc/usr_intf/pncconf/pncconf.glade:11605 +#: src/emc/usr_intf/pncconf/pncconf.glade:11625 +#: src/emc/usr_intf/pncconf/pncconf.glade:11645 +#: src/emc/usr_intf/pncconf/pncconf.glade:11665 +#: src/emc/usr_intf/pncconf/pncconf.glade:11685 +#: src/emc/usr_intf/pncconf/pncconf.glade:11705 +#: src/emc/usr_intf/pncconf/pncconf.glade:11725 +#: src/emc/usr_intf/pncconf/pncconf.glade:11745 +#: src/emc/usr_intf/pncconf/pncconf.glade:11765 +#: src/emc/usr_intf/pncconf/pncconf.glade:11785 +#: src/emc/usr_intf/pncconf/pncconf.glade:11805 +#: src/emc/usr_intf/pncconf/pncconf.glade:11825 +#: src/emc/usr_intf/pncconf/pncconf.glade:11845 +#: src/emc/usr_intf/pncconf/pncconf.glade:11865 +#: src/emc/usr_intf/pncconf/pncconf.glade:11885 +#: src/emc/usr_intf/pncconf/pncconf.glade:11905 +#: src/emc/usr_intf/pncconf/pncconf.glade:13768 +#: src/emc/usr_intf/pncconf/pncconf.glade:13974 +#: src/emc/usr_intf/pncconf/pncconf.glade:13994 +#: src/emc/usr_intf/pncconf/pncconf.glade:14014 +#: src/emc/usr_intf/pncconf/pncconf.glade:14034 +#: src/emc/usr_intf/pncconf/pncconf.glade:14054 +#: src/emc/usr_intf/pncconf/pncconf.glade:14074 +#: src/emc/usr_intf/pncconf/pncconf.glade:14094 +#: src/emc/usr_intf/pncconf/pncconf.glade:14114 +#: src/emc/usr_intf/pncconf/pncconf.glade:14134 +#: src/emc/usr_intf/pncconf/pncconf.glade:14154 +#: src/emc/usr_intf/pncconf/pncconf.glade:14174 +#: src/emc/usr_intf/pncconf/pncconf.glade:14194 +#: src/emc/usr_intf/pncconf/pncconf.glade:14214 +#: src/emc/usr_intf/pncconf/pncconf.glade:14234 +#: src/emc/usr_intf/pncconf/pncconf.glade:14254 +#: src/emc/usr_intf/pncconf/pncconf.glade:14274 +#: src/emc/usr_intf/pncconf/pncconf.glade:14294 +#: src/emc/usr_intf/pncconf/pncconf.glade:14314 +#: src/emc/usr_intf/pncconf/pncconf.glade:14334 +#: src/emc/usr_intf/pncconf/pncconf.glade:14354 +#: src/emc/usr_intf/pncconf/pncconf.glade:14374 +#: src/emc/usr_intf/pncconf/pncconf.glade:14394 +#: src/emc/usr_intf/pncconf/pncconf.glade:14414 +#: src/emc/usr_intf/pncconf/pncconf.glade:16360 +#: src/emc/usr_intf/pncconf/pncconf.glade:16670 +#: src/emc/usr_intf/pncconf/pncconf.glade:16690 +#: src/emc/usr_intf/pncconf/pncconf.glade:16710 +#: src/emc/usr_intf/pncconf/pncconf.glade:16730 +#: src/emc/usr_intf/pncconf/pncconf.glade:16750 +#: src/emc/usr_intf/pncconf/pncconf.glade:16770 +#: src/emc/usr_intf/pncconf/pncconf.glade:16790 +#: src/emc/usr_intf/pncconf/pncconf.glade:16810 +#: src/emc/usr_intf/pncconf/pncconf.glade:16830 +#: src/emc/usr_intf/pncconf/pncconf.glade:16850 +#: src/emc/usr_intf/pncconf/pncconf.glade:16870 +#: src/emc/usr_intf/pncconf/pncconf.glade:16890 +#: src/emc/usr_intf/pncconf/pncconf.glade:16910 +#: src/emc/usr_intf/pncconf/pncconf.glade:16930 +#: src/emc/usr_intf/pncconf/pncconf.glade:16950 +#: src/emc/usr_intf/pncconf/pncconf.glade:16970 +#: src/emc/usr_intf/pncconf/pncconf.glade:16990 +#: src/emc/usr_intf/pncconf/pncconf.glade:17010 +#: src/emc/usr_intf/pncconf/pncconf.glade:17030 +#: src/emc/usr_intf/pncconf/pncconf.glade:17050 +#: src/emc/usr_intf/pncconf/pncconf.glade:17070 +#: src/emc/usr_intf/pncconf/pncconf.glade:17090 +#: src/emc/usr_intf/pncconf/pncconf.glade:17110 +#: src/emc/usr_intf/pncconf/pncconf.glade:18974 +#: src/emc/usr_intf/pncconf/pncconf.glade:26395 +#: src/emc/usr_intf/pncconf/pncconf.glade:28311 +#: src/emc/usr_intf/pncconf/pncconf.glade:28331 +#: src/emc/usr_intf/pncconf/pncconf.glade:28351 +#: src/emc/usr_intf/pncconf/pncconf.glade:28371 +#: src/emc/usr_intf/pncconf/pncconf.glade:28391 +#: src/emc/usr_intf/pncconf/pncconf.glade:28411 +#: src/emc/usr_intf/pncconf/pncconf.glade:28431 +#: src/emc/usr_intf/pncconf/pncconf.glade:28451 +#: src/emc/usr_intf/pncconf/pncconf.glade:28471 +#: src/emc/usr_intf/pncconf/pncconf.glade:28491 +#: src/emc/usr_intf/pncconf/pncconf.glade:28511 +#: src/emc/usr_intf/pncconf/pncconf.glade:28531 +#: src/emc/usr_intf/pncconf/pncconf.glade:28551 +#: src/emc/usr_intf/pncconf/pncconf.glade:28571 +#: src/emc/usr_intf/pncconf/pncconf.glade:28591 +#: src/emc/usr_intf/pncconf/pncconf.glade:28611 +#: src/emc/usr_intf/pncconf/pncconf.glade:28631 +#: src/emc/usr_intf/pncconf/pncconf.glade:28651 +#: src/emc/usr_intf/pncconf/pncconf.glade:28671 +#: src/emc/usr_intf/pncconf/pncconf.glade:28691 +#: src/emc/usr_intf/pncconf/pncconf.glade:28711 +#: src/emc/usr_intf/pncconf/pncconf.glade:28731 +#: src/emc/usr_intf/pncconf/pncconf.glade:28751 +#: src/emc/usr_intf/pncconf/pncconf.glade:28942 +#: src/emc/usr_intf/pncconf/pncconf.glade:28962 +#: src/emc/usr_intf/pncconf/pncconf.glade:28982 +#: src/emc/usr_intf/pncconf/pncconf.glade:29002 +#: src/emc/usr_intf/pncconf/pncconf.glade:29022 +#: src/emc/usr_intf/pncconf/pncconf.glade:29042 +#: src/emc/usr_intf/pncconf/pncconf.glade:29062 +#: src/emc/usr_intf/pncconf/pncconf.glade:29082 +#: src/emc/usr_intf/pncconf/pncconf.glade:29102 +#: src/emc/usr_intf/pncconf/pncconf.glade:29122 +#: src/emc/usr_intf/pncconf/pncconf.glade:29142 +#: src/emc/usr_intf/pncconf/pncconf.glade:29162 +#: src/emc/usr_intf/pncconf/pncconf.glade:29182 +#: src/emc/usr_intf/pncconf/pncconf.glade:29202 +#: src/emc/usr_intf/pncconf/pncconf.glade:29222 +#: src/emc/usr_intf/pncconf/pncconf.glade:29242 +#: src/emc/usr_intf/pncconf/pncconf.glade:29262 +#: src/emc/usr_intf/pncconf/pncconf.glade:29282 +#: src/emc/usr_intf/pncconf/pncconf.glade:29302 +#: src/emc/usr_intf/pncconf/pncconf.glade:29322 +#: src/emc/usr_intf/pncconf/pncconf.glade:29342 +#: src/emc/usr_intf/pncconf/pncconf.glade:29362 +#: src/emc/usr_intf/pncconf/pncconf.glade:29382 +#: src/emc/usr_intf/pncconf/pncconf.glade:31311 +#: src/emc/usr_intf/pncconf/pncconf.glade:31663 +#: src/emc/usr_intf/pncconf/pncconf.glade:32881 +#: src/emc/usr_intf/pncconf/pncconf.glade:32901 +#: src/emc/usr_intf/pncconf/pncconf.glade:32921 +#: src/emc/usr_intf/pncconf/pncconf.glade:32941 +#: src/emc/usr_intf/pncconf/pncconf.glade:32961 +#: src/emc/usr_intf/pncconf/pncconf.glade:32981 +#: src/emc/usr_intf/pncconf/pncconf.glade:33001 +#: src/emc/usr_intf/pncconf/pncconf.glade:33021 +#: src/emc/usr_intf/pncconf/pncconf.glade:33041 +#: src/emc/usr_intf/pncconf/pncconf.glade:33061 +#: src/emc/usr_intf/pncconf/pncconf.glade:33081 +#: src/emc/usr_intf/pncconf/pncconf.glade:33300 +#: src/emc/usr_intf/pncconf/pncconf.glade:33320 +#: src/emc/usr_intf/pncconf/pncconf.glade:33340 +#: src/emc/usr_intf/pncconf/pncconf.glade:33360 +#: src/emc/usr_intf/pncconf/pncconf.glade:33380 +#: src/emc/usr_intf/pncconf/pncconf.glade:33400 +#: src/emc/usr_intf/pncconf/pncconf.glade:33420 +#: src/emc/usr_intf/pncconf/pncconf.glade:33440 +#: src/emc/usr_intf/pncconf/pncconf.glade:33460 +#: src/emc/usr_intf/pncconf/pncconf.glade:33480 +#: src/emc/usr_intf/pncconf/pncconf.glade:33500 +#: src/emc/usr_intf/pncconf/pncconf.glade:33520 +#: src/emc/usr_intf/pncconf/pncconf.glade:33540 +#: src/emc/usr_intf/pncconf/pncconf.glade:33560 +#: src/emc/usr_intf/pncconf/pncconf.glade:33580 +#: src/emc/usr_intf/pncconf/pncconf.glade:33600 +#: src/emc/usr_intf/pncconf/pncconf.glade:33620 +#: src/emc/usr_intf/pncconf/pncconf.glade:33640 +#: src/emc/usr_intf/pncconf/pncconf.glade:33660 +#: src/emc/usr_intf/pncconf/pncconf.glade:33680 +#: src/emc/usr_intf/pncconf/pncconf.glade:33700 +#: src/emc/usr_intf/pncconf/pncconf.glade:33720 +#: src/emc/usr_intf/pncconf/pncconf.glade:33740 +#: src/emc/usr_intf/pncconf/pncconf.glade:35656 +#: src/emc/usr_intf/pncconf/pncconf.glade:35879 +#: src/emc/usr_intf/pncconf/pncconf.glade:37808 +#: src/emc/usr_intf/pncconf/pncconf.glade:37828 +#: src/emc/usr_intf/pncconf/pncconf.glade:37848 +#: src/emc/usr_intf/pncconf/pncconf.glade:37868 +#: src/emc/usr_intf/pncconf/pncconf.glade:37888 +#: src/emc/usr_intf/pncconf/pncconf.glade:37908 +#: src/emc/usr_intf/pncconf/pncconf.glade:37928 +#: src/emc/usr_intf/pncconf/pncconf.glade:37948 +#: src/emc/usr_intf/pncconf/pncconf.glade:37968 +#: src/emc/usr_intf/pncconf/pncconf.glade:37988 +#: src/emc/usr_intf/pncconf/pncconf.glade:38008 +#: src/emc/usr_intf/pncconf/pncconf.glade:38028 +#: src/emc/usr_intf/pncconf/pncconf.glade:38048 +#: src/emc/usr_intf/pncconf/pncconf.glade:38068 +#: src/emc/usr_intf/pncconf/pncconf.glade:38088 +#: src/emc/usr_intf/pncconf/pncconf.glade:38108 +#: src/emc/usr_intf/pncconf/pncconf.glade:38128 +#: src/emc/usr_intf/pncconf/pncconf.glade:38148 +#: src/emc/usr_intf/pncconf/pncconf.glade:38168 +#: src/emc/usr_intf/pncconf/pncconf.glade:38188 +#: src/emc/usr_intf/pncconf/pncconf.glade:38208 +#: src/emc/usr_intf/pncconf/pncconf.glade:38228 +#: src/emc/usr_intf/pncconf/pncconf.glade:38248 +#: src/emc/usr_intf/pncconf/pncconf.glade:38557 +#: src/emc/usr_intf/pncconf/pncconf.glade:38577 +#: src/emc/usr_intf/pncconf/pncconf.glade:38597 +#: src/emc/usr_intf/pncconf/pncconf.glade:38617 +#: src/emc/usr_intf/pncconf/pncconf.glade:38637 +#: src/emc/usr_intf/pncconf/pncconf.glade:38657 +#: src/emc/usr_intf/pncconf/pncconf.glade:38677 +#: src/emc/usr_intf/pncconf/pncconf.glade:38697 +#: src/emc/usr_intf/pncconf/pncconf.glade:38717 +#: src/emc/usr_intf/pncconf/pncconf.glade:38737 +#: src/emc/usr_intf/pncconf/pncconf.glade:38757 +#: src/emc/usr_intf/pncconf/pncconf.glade:39987 +#: src/emc/usr_intf/pncconf/pncconf.glade:40239 +#: src/emc/usr_intf/pncconf/pncconf.glade:42155 +#: src/emc/usr_intf/pncconf/pncconf.glade:42175 +#: src/emc/usr_intf/pncconf/pncconf.glade:42195 +#: src/emc/usr_intf/pncconf/pncconf.glade:42215 +#: src/emc/usr_intf/pncconf/pncconf.glade:42235 +#: src/emc/usr_intf/pncconf/pncconf.glade:42255 +#: src/emc/usr_intf/pncconf/pncconf.glade:42275 +#: src/emc/usr_intf/pncconf/pncconf.glade:42295 +#: src/emc/usr_intf/pncconf/pncconf.glade:42315 +#: src/emc/usr_intf/pncconf/pncconf.glade:42335 +#: src/emc/usr_intf/pncconf/pncconf.glade:42355 +#: src/emc/usr_intf/pncconf/pncconf.glade:42375 +#: src/emc/usr_intf/pncconf/pncconf.glade:42395 +#: src/emc/usr_intf/pncconf/pncconf.glade:42415 +#: src/emc/usr_intf/pncconf/pncconf.glade:42435 +#: src/emc/usr_intf/pncconf/pncconf.glade:42455 +#: src/emc/usr_intf/pncconf/pncconf.glade:42475 +#: src/emc/usr_intf/pncconf/pncconf.glade:42495 +#: src/emc/usr_intf/pncconf/pncconf.glade:42515 +#: src/emc/usr_intf/pncconf/pncconf.glade:42535 +#: src/emc/usr_intf/pncconf/pncconf.glade:42555 +#: src/emc/usr_intf/pncconf/pncconf.glade:42575 +#: src/emc/usr_intf/pncconf/pncconf.glade:42595 +#: src/emc/usr_intf/pncconf/pncconf.glade:42786 +#: src/emc/usr_intf/pncconf/pncconf.glade:42806 +#: src/emc/usr_intf/pncconf/pncconf.glade:42826 +#: src/emc/usr_intf/pncconf/pncconf.glade:42846 +#: src/emc/usr_intf/pncconf/pncconf.glade:42866 +#: src/emc/usr_intf/pncconf/pncconf.glade:42886 +#: src/emc/usr_intf/pncconf/pncconf.glade:42906 +#: src/emc/usr_intf/pncconf/pncconf.glade:42926 +#: src/emc/usr_intf/pncconf/pncconf.glade:42946 +#: src/emc/usr_intf/pncconf/pncconf.glade:42966 +#: src/emc/usr_intf/pncconf/pncconf.glade:42986 +#: src/emc/usr_intf/pncconf/pncconf.glade:43006 +#: src/emc/usr_intf/pncconf/pncconf.glade:43026 +#: src/emc/usr_intf/pncconf/pncconf.glade:43046 +#: src/emc/usr_intf/pncconf/pncconf.glade:43066 +#: src/emc/usr_intf/pncconf/pncconf.glade:43086 +#: src/emc/usr_intf/pncconf/pncconf.glade:43106 +#: src/emc/usr_intf/pncconf/pncconf.glade:43126 +#: src/emc/usr_intf/pncconf/pncconf.glade:43146 +#: src/emc/usr_intf/pncconf/pncconf.glade:43166 +#: src/emc/usr_intf/pncconf/pncconf.glade:43186 +#: src/emc/usr_intf/pncconf/pncconf.glade:43206 +#: src/emc/usr_intf/pncconf/pncconf.glade:43226 +#: src/emc/usr_intf/pncconf/pncconf.glade:45155 +#: src/emc/usr_intf/pncconf/pncconf.glade:45496 +#: src/emc/usr_intf/pncconf/pncconf.glade:46726 +#: src/emc/usr_intf/pncconf/pncconf.glade:46746 +#: src/emc/usr_intf/pncconf/pncconf.glade:46766 +#: src/emc/usr_intf/pncconf/pncconf.glade:46786 +#: src/emc/usr_intf/pncconf/pncconf.glade:46806 +#: src/emc/usr_intf/pncconf/pncconf.glade:46826 +#: src/emc/usr_intf/pncconf/pncconf.glade:46846 +#: src/emc/usr_intf/pncconf/pncconf.glade:46866 +#: src/emc/usr_intf/pncconf/pncconf.glade:46886 +#: src/emc/usr_intf/pncconf/pncconf.glade:46906 +#: src/emc/usr_intf/pncconf/pncconf.glade:46926 +#: src/emc/usr_intf/pncconf/pncconf.glade:47162 +#: src/emc/usr_intf/pncconf/pncconf.glade:49078 +#: src/emc/usr_intf/pncconf/pncconf.glade:49098 +#: src/emc/usr_intf/pncconf/pncconf.glade:49118 +#: src/emc/usr_intf/pncconf/pncconf.glade:49138 +#: src/emc/usr_intf/pncconf/pncconf.glade:49158 +#: src/emc/usr_intf/pncconf/pncconf.glade:49178 +#: src/emc/usr_intf/pncconf/pncconf.glade:49198 +#: src/emc/usr_intf/pncconf/pncconf.glade:49218 +#: src/emc/usr_intf/pncconf/pncconf.glade:49238 +#: src/emc/usr_intf/pncconf/pncconf.glade:49258 +#: src/emc/usr_intf/pncconf/pncconf.glade:49278 +#: src/emc/usr_intf/pncconf/pncconf.glade:49298 +#: src/emc/usr_intf/pncconf/pncconf.glade:49318 +#: src/emc/usr_intf/pncconf/pncconf.glade:49338 +#: src/emc/usr_intf/pncconf/pncconf.glade:49358 +#: src/emc/usr_intf/pncconf/pncconf.glade:49378 +#: src/emc/usr_intf/pncconf/pncconf.glade:49398 +#: src/emc/usr_intf/pncconf/pncconf.glade:49418 +#: src/emc/usr_intf/pncconf/pncconf.glade:49438 +#: src/emc/usr_intf/pncconf/pncconf.glade:49458 +#: src/emc/usr_intf/pncconf/pncconf.glade:49478 +#: src/emc/usr_intf/pncconf/pncconf.glade:49498 +#: src/emc/usr_intf/pncconf/pncconf.glade:49518 +#: src/emc/usr_intf/pncconf/pncconf.glade:49709 +#: src/emc/usr_intf/pncconf/pncconf.glade:49729 +#: src/emc/usr_intf/pncconf/pncconf.glade:49749 +#: src/emc/usr_intf/pncconf/pncconf.glade:49769 +#: src/emc/usr_intf/pncconf/pncconf.glade:49789 +#: src/emc/usr_intf/pncconf/pncconf.glade:49809 +#: src/emc/usr_intf/pncconf/pncconf.glade:49829 +#: src/emc/usr_intf/pncconf/pncconf.glade:49849 +#: src/emc/usr_intf/pncconf/pncconf.glade:49869 +#: src/emc/usr_intf/pncconf/pncconf.glade:49889 +#: src/emc/usr_intf/pncconf/pncconf.glade:49909 +#: src/emc/usr_intf/pncconf/pncconf.glade:49929 +#: src/emc/usr_intf/pncconf/pncconf.glade:49949 +#: src/emc/usr_intf/pncconf/pncconf.glade:49969 +#: src/emc/usr_intf/pncconf/pncconf.glade:49989 +#: src/emc/usr_intf/pncconf/pncconf.glade:50009 +#: src/emc/usr_intf/pncconf/pncconf.glade:50029 +#: src/emc/usr_intf/pncconf/pncconf.glade:50049 +#: src/emc/usr_intf/pncconf/pncconf.glade:50069 +#: src/emc/usr_intf/pncconf/pncconf.glade:50089 +#: src/emc/usr_intf/pncconf/pncconf.glade:50109 +#: src/emc/usr_intf/pncconf/pncconf.glade:50129 +#: src/emc/usr_intf/pncconf/pncconf.glade:50149 +#: src/emc/usr_intf/pncconf/pncconf.glade:52078 +#: src/emc/usr_intf/pncconf/pncconf.glade:52419 +#: src/emc/usr_intf/pncconf/pncconf.glade:53649 +#: src/emc/usr_intf/pncconf/pncconf.glade:53669 +#: src/emc/usr_intf/pncconf/pncconf.glade:53689 +#: src/emc/usr_intf/pncconf/pncconf.glade:53709 +#: src/emc/usr_intf/pncconf/pncconf.glade:53729 +#: src/emc/usr_intf/pncconf/pncconf.glade:53749 +#: src/emc/usr_intf/pncconf/pncconf.glade:53769 +#: src/emc/usr_intf/pncconf/pncconf.glade:53789 +#: src/emc/usr_intf/pncconf/pncconf.glade:53809 +#: src/emc/usr_intf/pncconf/pncconf.glade:53829 +#: src/emc/usr_intf/pncconf/pncconf.glade:53849 +#: src/emc/usr_intf/pncconf/pncconf.glade:54085 +#: src/emc/usr_intf/pncconf/pncconf.glade:56001 +#: src/emc/usr_intf/pncconf/pncconf.glade:56021 +#: src/emc/usr_intf/pncconf/pncconf.glade:56041 +#: src/emc/usr_intf/pncconf/pncconf.glade:56061 +#: src/emc/usr_intf/pncconf/pncconf.glade:56081 +#: src/emc/usr_intf/pncconf/pncconf.glade:56101 +#: src/emc/usr_intf/pncconf/pncconf.glade:56121 +#: src/emc/usr_intf/pncconf/pncconf.glade:56141 +#: src/emc/usr_intf/pncconf/pncconf.glade:56161 +#: src/emc/usr_intf/pncconf/pncconf.glade:56181 +#: src/emc/usr_intf/pncconf/pncconf.glade:56201 +#: src/emc/usr_intf/pncconf/pncconf.glade:56221 +#: src/emc/usr_intf/pncconf/pncconf.glade:56241 +#: src/emc/usr_intf/pncconf/pncconf.glade:56261 +#: src/emc/usr_intf/pncconf/pncconf.glade:56281 +#: src/emc/usr_intf/pncconf/pncconf.glade:56301 +#: src/emc/usr_intf/pncconf/pncconf.glade:56321 +#: src/emc/usr_intf/pncconf/pncconf.glade:56341 +#: src/emc/usr_intf/pncconf/pncconf.glade:56361 +#: src/emc/usr_intf/pncconf/pncconf.glade:56381 +#: src/emc/usr_intf/pncconf/pncconf.glade:56401 +#: src/emc/usr_intf/pncconf/pncconf.glade:56421 +#: src/emc/usr_intf/pncconf/pncconf.glade:56441 +#: src/emc/usr_intf/pncconf/pncconf.glade:56632 +#: src/emc/usr_intf/pncconf/pncconf.glade:56652 +#: src/emc/usr_intf/pncconf/pncconf.glade:56672 +#: src/emc/usr_intf/pncconf/pncconf.glade:56692 +#: src/emc/usr_intf/pncconf/pncconf.glade:56712 +#: src/emc/usr_intf/pncconf/pncconf.glade:56732 +#: src/emc/usr_intf/pncconf/pncconf.glade:56752 +#: src/emc/usr_intf/pncconf/pncconf.glade:56772 +#: src/emc/usr_intf/pncconf/pncconf.glade:56792 +#: src/emc/usr_intf/pncconf/pncconf.glade:56812 +#: src/emc/usr_intf/pncconf/pncconf.glade:56832 +#: src/emc/usr_intf/pncconf/pncconf.glade:56852 +#: src/emc/usr_intf/pncconf/pncconf.glade:56872 +#: src/emc/usr_intf/pncconf/pncconf.glade:56892 +#: src/emc/usr_intf/pncconf/pncconf.glade:56912 +#: src/emc/usr_intf/pncconf/pncconf.glade:56932 +#: src/emc/usr_intf/pncconf/pncconf.glade:56952 +#: src/emc/usr_intf/pncconf/pncconf.glade:56972 +#: src/emc/usr_intf/pncconf/pncconf.glade:56992 +#: src/emc/usr_intf/pncconf/pncconf.glade:57012 +#: src/emc/usr_intf/pncconf/pncconf.glade:57032 +#: src/emc/usr_intf/pncconf/pncconf.glade:57052 +#: src/emc/usr_intf/pncconf/pncconf.glade:57072 +#: src/emc/usr_intf/pncconf/pncconf.glade:59001 +#: src/emc/usr_intf/pncconf/pncconf.glade:59342 +#: src/emc/usr_intf/pncconf/pncconf.glade:60572 +#: src/emc/usr_intf/pncconf/pncconf.glade:60592 +#: src/emc/usr_intf/pncconf/pncconf.glade:60612 +#: src/emc/usr_intf/pncconf/pncconf.glade:60632 +#: src/emc/usr_intf/pncconf/pncconf.glade:60652 +#: src/emc/usr_intf/pncconf/pncconf.glade:60672 +#: src/emc/usr_intf/pncconf/pncconf.glade:60692 +#: src/emc/usr_intf/pncconf/pncconf.glade:60712 +#: src/emc/usr_intf/pncconf/pncconf.glade:60732 +#: src/emc/usr_intf/pncconf/pncconf.glade:60752 +#: src/emc/usr_intf/pncconf/pncconf.glade:60772 msgid "" -"In\n" -"Out" +"GPIO Input\n" +"GPIO Output\n" +"GPIO O Drain\n" +"Encoder\n" +"PWM\n" +"StepGen\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:796 -msgid "" -"Add-on PCI\n" -" Parport\n" -" Address \n" -" Search" +#: src/emc/usr_intf/pncconf/pncconf.glade:8913 +#: src/emc/usr_intf/pncconf/pncconf.glade:13730 +#: src/emc/usr_intf/pncconf/pncconf.glade:18936 +#: src/emc/usr_intf/pncconf/pncconf.glade:20738 +#: src/emc/usr_intf/pncconf/pncconf.glade:21031 +#: src/emc/usr_intf/pncconf/pncconf.glade:22827 +#: src/emc/usr_intf/pncconf/pncconf.glade:24623 +msgid " 1:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:821 -msgid "I/O Control Ports/ Boards" -msgstr "I/O 控制 端口/板" - -#: src/emc/usr_intf/pncconf/pncconf.glade:870 -msgid "Axis" +#: src/emc/usr_intf/pncconf/pncconf.glade:8927 +#: src/emc/usr_intf/pncconf/pncconf.glade:13716 +#: src/emc/usr_intf/pncconf/pncconf.glade:18922 +#: src/emc/usr_intf/pncconf/pncconf.glade:20724 +#: src/emc/usr_intf/pncconf/pncconf.glade:21045 +#: src/emc/usr_intf/pncconf/pncconf.glade:22841 +#: src/emc/usr_intf/pncconf/pncconf.glade:24637 +msgid " 3:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:885 -msgid "TKLinuxCNC" +#: src/emc/usr_intf/pncconf/pncconf.glade:8941 +#: src/emc/usr_intf/pncconf/pncconf.glade:13702 +#: src/emc/usr_intf/pncconf/pncconf.glade:18908 +#: src/emc/usr_intf/pncconf/pncconf.glade:20710 +#: src/emc/usr_intf/pncconf/pncconf.glade:21059 +#: src/emc/usr_intf/pncconf/pncconf.glade:22855 +#: src/emc/usr_intf/pncconf/pncconf.glade:24651 +msgid " 5:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:899 -msgid "Mini" -msgstr "迷你" - -#: src/emc/usr_intf/pncconf/pncconf.glade:913 -#: src/emc/usr_intf/pncconf/pncconf.glade:6648 -msgid "Touchy" -msgstr "敏感的" - -#: src/emc/usr_intf/pncconf/pncconf.glade:930 -msgid "GUI frontend list" -msgstr "GUI前台列表" - -#: src/emc/usr_intf/pncconf/pncconf.glade:965 -msgid "External Controls" -msgstr "外部控制" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1006 -msgid "Add device rule" -msgstr "新增設備規則" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1019 -msgid "Test device" -msgstr "測試設備" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1033 -msgid "Search for device rules" -msgstr "搜尋設備規則" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1054 -msgid "Device Name:" -msgstr "設備名稱:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1117 -#: src/emc/usr_intf/pncconf/pncconf.glade:1255 -msgid "Jog Speed select A" -msgstr "慢步速度選擇 A" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1195 -msgid "Z -" +#: src/emc/usr_intf/pncconf/pncconf.glade:8955 +#: src/emc/usr_intf/pncconf/pncconf.glade:13688 +#: src/emc/usr_intf/pncconf/pncconf.glade:18894 +#: src/emc/usr_intf/pncconf/pncconf.glade:20696 +#: src/emc/usr_intf/pncconf/pncconf.glade:21073 +#: src/emc/usr_intf/pncconf/pncconf.glade:22869 +#: src/emc/usr_intf/pncconf/pncconf.glade:24665 +msgid " 7:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1207 -msgid "Y -" +#: src/emc/usr_intf/pncconf/pncconf.glade:8969 +#: src/emc/usr_intf/pncconf/pncconf.glade:13674 +#: src/emc/usr_intf/pncconf/pncconf.glade:18880 +#: src/emc/usr_intf/pncconf/pncconf.glade:20682 +#: src/emc/usr_intf/pncconf/pncconf.glade:21087 +#: src/emc/usr_intf/pncconf/pncconf.glade:22883 +#: src/emc/usr_intf/pncconf/pncconf.glade:24679 +msgid " 9:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1219 -msgid "X -" +#: src/emc/usr_intf/pncconf/pncconf.glade:8983 +#: src/emc/usr_intf/pncconf/pncconf.glade:13660 +#: src/emc/usr_intf/pncconf/pncconf.glade:18866 +#: src/emc/usr_intf/pncconf/pncconf.glade:20668 +#: src/emc/usr_intf/pncconf/pncconf.glade:21101 +#: src/emc/usr_intf/pncconf/pncconf.glade:22897 +#: src/emc/usr_intf/pncconf/pncconf.glade:24693 +msgid "11:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1229 -msgid "Z +" +#: src/emc/usr_intf/pncconf/pncconf.glade:8997 +#: src/emc/usr_intf/pncconf/pncconf.glade:13646 +#: src/emc/usr_intf/pncconf/pncconf.glade:18852 +#: src/emc/usr_intf/pncconf/pncconf.glade:20654 +#: src/emc/usr_intf/pncconf/pncconf.glade:21115 +#: src/emc/usr_intf/pncconf/pncconf.glade:22911 +#: src/emc/usr_intf/pncconf/pncconf.glade:24707 +msgid "13:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1239 -msgid "Y +" +#: src/emc/usr_intf/pncconf/pncconf.glade:9011 +#: src/emc/usr_intf/pncconf/pncconf.glade:13632 +#: src/emc/usr_intf/pncconf/pncconf.glade:18838 +#: src/emc/usr_intf/pncconf/pncconf.glade:20640 +#: src/emc/usr_intf/pncconf/pncconf.glade:21129 +#: src/emc/usr_intf/pncconf/pncconf.glade:22925 +#: src/emc/usr_intf/pncconf/pncconf.glade:24721 +msgid "15:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1249 -msgid "X +" +#: src/emc/usr_intf/pncconf/pncconf.glade:9025 +#: src/emc/usr_intf/pncconf/pncconf.glade:13618 +#: src/emc/usr_intf/pncconf/pncconf.glade:18824 +#: src/emc/usr_intf/pncconf/pncconf.glade:20626 +#: src/emc/usr_intf/pncconf/pncconf.glade:21143 +#: src/emc/usr_intf/pncconf/pncconf.glade:22939 +#: src/emc/usr_intf/pncconf/pncconf.glade:24735 +msgid "17:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1289 -#: src/emc/usr_intf/pncconf/pncconf.glade:2208 -#: src/emc/usr_intf/pncconf/pncconf.glade:3496 -#: src/emc/usr_intf/pncconf/pncconf.glade:4377 -#: src/emc/usr_intf/pncconf/pncconf.glade:5258 -msgid "default" -msgstr "預設" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1299 -#: src/emc/usr_intf/pncconf/pncconf.glade:2107 -#: src/emc/usr_intf/pncconf/pncconf.glade:3443 -#: src/emc/usr_intf/pncconf/pncconf.glade:4324 -#: src/emc/usr_intf/pncconf/pncconf.glade:5205 -msgid " a)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9039 +#: src/emc/usr_intf/pncconf/pncconf.glade:13604 +#: src/emc/usr_intf/pncconf/pncconf.glade:18810 +#: src/emc/usr_intf/pncconf/pncconf.glade:20612 +#: src/emc/usr_intf/pncconf/pncconf.glade:21157 +#: src/emc/usr_intf/pncconf/pncconf.glade:22953 +#: src/emc/usr_intf/pncconf/pncconf.glade:24749 +msgid "19:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1311 -#: src/emc/usr_intf/pncconf/pncconf.glade:2096 -#: src/emc/usr_intf/pncconf/pncconf.glade:3432 -#: src/emc/usr_intf/pncconf/pncconf.glade:4313 -#: src/emc/usr_intf/pncconf/pncconf.glade:5194 -msgid " b)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9053 +#: src/emc/usr_intf/pncconf/pncconf.glade:13590 +#: src/emc/usr_intf/pncconf/pncconf.glade:18796 +#: src/emc/usr_intf/pncconf/pncconf.glade:20598 +#: src/emc/usr_intf/pncconf/pncconf.glade:21171 +#: src/emc/usr_intf/pncconf/pncconf.glade:22967 +#: src/emc/usr_intf/pncconf/pncconf.glade:24763 +msgid "21:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1322 -msgid " ab)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9067 +#: src/emc/usr_intf/pncconf/pncconf.glade:13576 +#: src/emc/usr_intf/pncconf/pncconf.glade:18782 +#: src/emc/usr_intf/pncconf/pncconf.glade:20584 +#: src/emc/usr_intf/pncconf/pncconf.glade:21185 +#: src/emc/usr_intf/pncconf/pncconf.glade:22981 +#: src/emc/usr_intf/pncconf/pncconf.glade:24777 +msgid "23:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1348 -#: src/emc/usr_intf/pncconf/pncconf.glade:1401 -#: src/emc/usr_intf/pncconf/pncconf.glade:1413 -#: src/emc/usr_intf/pncconf/pncconf.glade:1423 -#: src/emc/usr_intf/pncconf/pncconf.glade:1751 -msgid "mm/min " -msgstr "mm/分" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1456 -msgid "A -" +#: src/emc/usr_intf/pncconf/pncconf.glade:9801 +#: src/emc/usr_intf/pncconf/pncconf.glade:12840 +#: src/emc/usr_intf/pncconf/pncconf.glade:17994 +#: src/emc/usr_intf/pncconf/pncconf.glade:20170 +#: src/emc/usr_intf/pncconf/pncconf.glade:21597 +#: src/emc/usr_intf/pncconf/pncconf.glade:23393 +#: src/emc/usr_intf/pncconf/pncconf.glade:25189 +msgid "47:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1468 -msgid "A +" +#: src/emc/usr_intf/pncconf/pncconf.glade:9868 +#: src/emc/usr_intf/pncconf/pncconf.glade:12773 +#: src/emc/usr_intf/pncconf/pncconf.glade:17927 +#: src/emc/usr_intf/pncconf/pncconf.glade:20119 +#: src/emc/usr_intf/pncconf/pncconf.glade:21648 +#: src/emc/usr_intf/pncconf/pncconf.glade:23444 +#: src/emc/usr_intf/pncconf/pncconf.glade:25240 +msgid "45:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1492 -msgid "Digital Control" -msgstr "數字控制" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1539 -msgid "X " +#: src/emc/usr_intf/pncconf/pncconf.glade:9884 +#: src/emc/usr_intf/pncconf/pncconf.glade:12757 +#: src/emc/usr_intf/pncconf/pncconf.glade:17911 +#: src/emc/usr_intf/pncconf/pncconf.glade:20103 +#: src/emc/usr_intf/pncconf/pncconf.glade:21664 +#: src/emc/usr_intf/pncconf/pncconf.glade:23460 +#: src/emc/usr_intf/pncconf/pncconf.glade:25256 +msgid "43:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1545 -#: src/emc/usr_intf/pncconf/pncconf.glade:5901 -#: src/emc/usr_intf/pncconf/pncconf.glade:6531 -#: src/emc/usr_intf/pncconf/pncconf.glade:6910 -#: src/emc/usr_intf/pncconf/pncconf.glade:7257 -msgid "Y" +#: src/emc/usr_intf/pncconf/pncconf.glade:9900 +#: src/emc/usr_intf/pncconf/pncconf.glade:12741 +#: src/emc/usr_intf/pncconf/pncconf.glade:17895 +#: src/emc/usr_intf/pncconf/pncconf.glade:20087 +#: src/emc/usr_intf/pncconf/pncconf.glade:21680 +#: src/emc/usr_intf/pncconf/pncconf.glade:23476 +#: src/emc/usr_intf/pncconf/pncconf.glade:25272 +msgid "41:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1555 -msgid "Z" +#: src/emc/usr_intf/pncconf/pncconf.glade:9916 +#: src/emc/usr_intf/pncconf/pncconf.glade:12725 +#: src/emc/usr_intf/pncconf/pncconf.glade:17879 +#: src/emc/usr_intf/pncconf/pncconf.glade:20071 +#: src/emc/usr_intf/pncconf/pncconf.glade:21696 +#: src/emc/usr_intf/pncconf/pncconf.glade:23492 +#: src/emc/usr_intf/pncconf/pncconf.glade:25288 +msgid "39:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1565 -msgid "A" +#: src/emc/usr_intf/pncconf/pncconf.glade:9932 +#: src/emc/usr_intf/pncconf/pncconf.glade:12709 +#: src/emc/usr_intf/pncconf/pncconf.glade:17863 +#: src/emc/usr_intf/pncconf/pncconf.glade:20055 +#: src/emc/usr_intf/pncconf/pncconf.glade:21712 +#: src/emc/usr_intf/pncconf/pncconf.glade:23508 +#: src/emc/usr_intf/pncconf/pncconf.glade:25304 +msgid "37:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:1623 -msgid "Analog Control" -msgstr "模擬控制" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1649 -#: src/emc/usr_intf/pncconf/pncconf.glade:1780 -#: src/emc/usr_intf/pncconf/pncconf.glade:2690 -#: src/emc/usr_intf/pncconf/pncconf.glade:3571 -#: src/emc/usr_intf/pncconf/pncconf.glade:4452 -#: src/emc/usr_intf/pncconf/pncconf.glade:5333 -#: src/emc/usr_intf/pncconf/pncconf.glade:57371 -msgid "Details" -msgstr "詳情" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1667 -msgid "USB Joystick Jogging " -msgstr "USB搖桿慢步" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1711 -msgid "shared buttons for all axis" -msgstr "所有軸共享按鈕" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1724 -msgid "buttons for each axis" -msgstr "每個軸 的 按鈕" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1798 -msgid "External Button Jogging" -msgstr "外部 按鈕 慢步" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1839 -msgid "Shared MPG / selectable axis" -msgstr "共享 MPG / 可選軸" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1852 -msgid "Mpg per axis" -msgstr "Mpg 每 個軸" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1867 -msgid "selectable MPG increments" -msgstr "選擇  MPG  增量" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1932 -#: src/emc/usr_intf/pncconf/pncconf.glade:2907 -#: src/emc/usr_intf/pncconf/pncconf.glade:3788 -#: src/emc/usr_intf/pncconf/pncconf.glade:4669 -msgid "Mux options" -msgstr "MUX 的選項" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1980 -#: src/emc/usr_intf/pncconf/pncconf.glade:2868 -#: src/emc/usr_intf/pncconf/pncconf.glade:3763 -#: src/emc/usr_intf/pncconf/pncconf.glade:4644 -msgid "use debounce" -msgstr "用 防抖動" - -#: src/emc/usr_intf/pncconf/pncconf.glade:1995 -msgid "use gray code" -msgstr "用 gray code" - -#: src/emc/usr_intf/pncconf/pncconf.glade:2010 -msgid "ignore all inputs false" -msgstr "忽略 所有輸入 偽" - -#: src/emc/usr_intf/pncconf/pncconf.glade:2035 -#: src/emc/usr_intf/pncconf/pncconf.glade:2048 -#: src/emc/usr_intf/pncconf/pncconf.glade:2061 -#: src/emc/usr_intf/pncconf/pncconf.glade:2407 -#: src/emc/usr_intf/pncconf/pncconf.glade:2420 -#: src/emc/usr_intf/pncconf/pncconf.glade:2433 -#: src/emc/usr_intf/pncconf/pncconf.glade:2446 -#: src/emc/usr_intf/pncconf/pncconf.glade:2457 -#: src/emc/usr_intf/pncconf/pncconf.glade:2470 -#: src/emc/usr_intf/pncconf/pncconf.glade:2483 -#: src/emc/usr_intf/pncconf/pncconf.glade:2496 -#: src/emc/usr_intf/pncconf/pncconf.glade:2509 -#: src/emc/usr_intf/pncconf/pncconf.glade:2522 -#: src/emc/usr_intf/pncconf/pncconf.glade:2535 -#: src/emc/usr_intf/pncconf/pncconf.glade:8343 -#: src/emc/usr_intf/pncconf/pncconf.glade:8379 -#: src/emc/usr_intf/pncconf/pncconf.glade:56542 -#: src/emc/usr_intf/pncconf/pncconf.glade:61266 -#: src/emc/usr_intf/pncconf/pncconf.glade:61278 -#: src/emc/usr_intf/pncconf/pncconf.glade:61290 -#: src/emc/usr_intf/pncconf/pncconf.glade:61302 -#: src/emc/usr_intf/pncconf/pncconf.glade:62475 -#: src/emc/usr_intf/pncconf/pncconf.glade:62487 -#: src/emc/usr_intf/pncconf/pncconf.glade:62499 -#: src/emc/usr_intf/pncconf/pncconf.glade:62511 -#: src/emc/usr_intf/pncconf/pncconf.glade:63452 -#: src/emc/usr_intf/pncconf/pncconf.glade:63464 -#: src/emc/usr_intf/pncconf/pncconf.glade:63476 -#: src/emc/usr_intf/pncconf/pncconf.glade:63488 -#: src/emc/usr_intf/pncconf/pncconf.glade:64661 -#: src/emc/usr_intf/pncconf/pncconf.glade:64673 -#: src/emc/usr_intf/pncconf/pncconf.glade:64685 -#: src/emc/usr_intf/pncconf/pncconf.glade:64697 -#: src/emc/usr_intf/pncconf/pncconf.glade:65608 -#: src/emc/usr_intf/pncconf/pncconf.glade:65620 -#: src/emc/usr_intf/pncconf/pncconf.glade:65632 -#: src/emc/usr_intf/pncconf/pncconf.glade:65644 -msgid "label" -msgstr "標 籤" - -#: src/emc/usr_intf/pncconf/pncconf.glade:2073 -#: src/emc/usr_intf/pncconf/pncconf.glade:2559 -#: src/emc/usr_intf/pncconf/pncconf.glade:3300 -#: src/emc/usr_intf/pncconf/pncconf.glade:4181 -#: src/emc/usr_intf/pncconf/pncconf.glade:5062 -msgid " abc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9948 +#: src/emc/usr_intf/pncconf/pncconf.glade:12693 +#: src/emc/usr_intf/pncconf/pncconf.glade:17847 +#: src/emc/usr_intf/pncconf/pncconf.glade:20039 +#: src/emc/usr_intf/pncconf/pncconf.glade:21728 +#: src/emc/usr_intf/pncconf/pncconf.glade:23524 +#: src/emc/usr_intf/pncconf/pncconf.glade:25320 +msgid "35:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2086 -#: src/emc/usr_intf/pncconf/pncconf.glade:3422 -#: src/emc/usr_intf/pncconf/pncconf.glade:4303 -#: src/emc/usr_intf/pncconf/pncconf.glade:5184 -msgid " ab)" +#: src/emc/usr_intf/pncconf/pncconf.glade:9964 +#: src/emc/usr_intf/pncconf/pncconf.glade:12677 +#: src/emc/usr_intf/pncconf/pncconf.glade:17831 +#: src/emc/usr_intf/pncconf/pncconf.glade:20023 +#: src/emc/usr_intf/pncconf/pncconf.glade:21744 +#: src/emc/usr_intf/pncconf/pncconf.glade:23540 +#: src/emc/usr_intf/pncconf/pncconf.glade:25336 +msgid "33:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2372 -#: src/emc/usr_intf/pncconf/pncconf.glade:3321 -#: src/emc/usr_intf/pncconf/pncconf.glade:4202 -#: src/emc/usr_intf/pncconf/pncconf.glade:5083 -msgid " ac)" +#: src/emc/usr_intf/pncconf/pncconf.glade:10337 +#: src/emc/usr_intf/pncconf/pncconf.glade:12304 +#: src/emc/usr_intf/pncconf/pncconf.glade:17458 +#: src/emc/usr_intf/pncconf/pncconf.glade:19762 +#: src/emc/usr_intf/pncconf/pncconf.glade:22005 +#: src/emc/usr_intf/pncconf/pncconf.glade:23801 +#: src/emc/usr_intf/pncconf/pncconf.glade:25597 +msgid "25:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2383 -#: src/emc/usr_intf/pncconf/pncconf.glade:3311 -#: src/emc/usr_intf/pncconf/pncconf.glade:4192 -#: src/emc/usr_intf/pncconf/pncconf.glade:5073 -msgid " bc)" +#: src/emc/usr_intf/pncconf/pncconf.glade:10353 +#: src/emc/usr_intf/pncconf/pncconf.glade:12288 +#: src/emc/usr_intf/pncconf/pncconf.glade:17442 +#: src/emc/usr_intf/pncconf/pncconf.glade:19746 +#: src/emc/usr_intf/pncconf/pncconf.glade:22021 +#: src/emc/usr_intf/pncconf/pncconf.glade:23817 +#: src/emc/usr_intf/pncconf/pncconf.glade:25613 +msgid "27:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2547 -#: src/emc/usr_intf/pncconf/pncconf.glade:3332 -#: src/emc/usr_intf/pncconf/pncconf.glade:4213 -#: src/emc/usr_intf/pncconf/pncconf.glade:5094 -msgid " c)" +#: src/emc/usr_intf/pncconf/pncconf.glade:10369 +#: src/emc/usr_intf/pncconf/pncconf.glade:12272 +#: src/emc/usr_intf/pncconf/pncconf.glade:17426 +#: src/emc/usr_intf/pncconf/pncconf.glade:19730 +#: src/emc/usr_intf/pncconf/pncconf.glade:22037 +#: src/emc/usr_intf/pncconf/pncconf.glade:23833 +#: src/emc/usr_intf/pncconf/pncconf.glade:25629 +msgid "29:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2570 -#: src/emc/usr_intf/pncconf/pncconf.glade:2966 -#: src/emc/usr_intf/pncconf/pncconf.glade:3847 -#: src/emc/usr_intf/pncconf/pncconf.glade:4728 -msgid " ad)" +#: src/emc/usr_intf/pncconf/pncconf.glade:10385 +#: src/emc/usr_intf/pncconf/pncconf.glade:12256 +#: src/emc/usr_intf/pncconf/pncconf.glade:17410 +#: src/emc/usr_intf/pncconf/pncconf.glade:19714 +#: src/emc/usr_intf/pncconf/pncconf.glade:22053 +#: src/emc/usr_intf/pncconf/pncconf.glade:23849 +#: src/emc/usr_intf/pncconf/pncconf.glade:25645 +msgid "31:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2583 -#: src/emc/usr_intf/pncconf/pncconf.glade:2953 -#: src/emc/usr_intf/pncconf/pncconf.glade:3834 -#: src/emc/usr_intf/pncconf/pncconf.glade:4715 -msgid " bd)" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:10677 +#: src/emc/usr_intf/pncconf/pncconf.glade:10689 +#: src/emc/usr_intf/pncconf/pncconf.glade:11955 +#: src/emc/usr_intf/pncconf/pncconf.glade:11967 +#: src/emc/usr_intf/pncconf/pncconf.glade:14464 +#: src/emc/usr_intf/pncconf/pncconf.glade:14476 +#: src/emc/usr_intf/pncconf/pncconf.glade:17161 +#: src/emc/usr_intf/pncconf/pncconf.glade:17173 +#: src/emc/usr_intf/pncconf/pncconf.glade:19567 +#: src/emc/usr_intf/pncconf/pncconf.glade:19579 +#: src/emc/usr_intf/pncconf/pncconf.glade:22190 +#: src/emc/usr_intf/pncconf/pncconf.glade:22202 +#: src/emc/usr_intf/pncconf/pncconf.glade:23986 +#: src/emc/usr_intf/pncconf/pncconf.glade:23998 +#: src/emc/usr_intf/pncconf/pncconf.glade:25782 +#: src/emc/usr_intf/pncconf/pncconf.glade:25794 +#: src/emc/usr_intf/pncconf/pncconf.glade:28287 +#: src/emc/usr_intf/pncconf/pncconf.glade:28299 +#: src/emc/usr_intf/pncconf/pncconf.glade:29415 +#: src/emc/usr_intf/pncconf/pncconf.glade:29427 +#: src/emc/usr_intf/pncconf/pncconf.glade:32869 +#: src/emc/usr_intf/pncconf/pncconf.glade:33760 +#: src/emc/usr_intf/pncconf/pncconf.glade:33772 +#: src/emc/usr_intf/pncconf/pncconf.glade:37771 +#: src/emc/usr_intf/pncconf/pncconf.glade:37783 +#: src/emc/usr_intf/pncconf/pncconf.glade:38777 +#: src/emc/usr_intf/pncconf/pncconf.glade:38789 +#: src/emc/usr_intf/pncconf/pncconf.glade:42131 +#: src/emc/usr_intf/pncconf/pncconf.glade:42143 +#: src/emc/usr_intf/pncconf/pncconf.glade:43259 +#: src/emc/usr_intf/pncconf/pncconf.glade:43271 +#: src/emc/usr_intf/pncconf/pncconf.glade:46702 +#: src/emc/usr_intf/pncconf/pncconf.glade:46714 +#: src/emc/usr_intf/pncconf/pncconf.glade:49054 +#: src/emc/usr_intf/pncconf/pncconf.glade:49066 +#: src/emc/usr_intf/pncconf/pncconf.glade:50182 +#: src/emc/usr_intf/pncconf/pncconf.glade:50194 +#: src/emc/usr_intf/pncconf/pncconf.glade:53625 +#: src/emc/usr_intf/pncconf/pncconf.glade:53637 +#: src/emc/usr_intf/pncconf/pncconf.glade:55977 +#: src/emc/usr_intf/pncconf/pncconf.glade:55989 +#: src/emc/usr_intf/pncconf/pncconf.glade:57105 +#: src/emc/usr_intf/pncconf/pncconf.glade:57117 +#: src/emc/usr_intf/pncconf/pncconf.glade:60548 +#: src/emc/usr_intf/pncconf/pncconf.glade:60560 +msgid "function" +msgstr "功用" -#: src/emc/usr_intf/pncconf/pncconf.glade:2596 -#: src/emc/usr_intf/pncconf/pncconf.glade:2927 -#: src/emc/usr_intf/pncconf/pncconf.glade:3808 -#: src/emc/usr_intf/pncconf/pncconf.glade:4689 -msgid " cd)" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:10703 +#: src/emc/usr_intf/pncconf/pncconf.glade:11940 +#: src/emc/usr_intf/pncconf/pncconf.glade:14449 +#: src/emc/usr_intf/pncconf/pncconf.glade:17146 +#: src/emc/usr_intf/pncconf/pncconf.glade:19553 +#: src/emc/usr_intf/pncconf/pncconf.glade:22217 +#: src/emc/usr_intf/pncconf/pncconf.glade:24013 +#: src/emc/usr_intf/pncconf/pncconf.glade:25809 +msgid "Launch test panel" +msgstr "啟動測試面板" -#: src/emc/usr_intf/pncconf/pncconf.glade:2609 -#: src/emc/usr_intf/pncconf/pncconf.glade:2991 -#: src/emc/usr_intf/pncconf/pncconf.glade:3872 -#: src/emc/usr_intf/pncconf/pncconf.glade:4753 -msgid " acd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:11192 +#: src/emc/usr_intf/pncconf/pncconf.glade:11204 +#: src/emc/usr_intf/pncconf/pncconf.glade:11440 +#: src/emc/usr_intf/pncconf/pncconf.glade:11454 +#: src/emc/usr_intf/pncconf/pncconf.glade:13949 +#: src/emc/usr_intf/pncconf/pncconf.glade:13963 +#: src/emc/usr_intf/pncconf/pncconf.glade:16645 +#: src/emc/usr_intf/pncconf/pncconf.glade:16659 +#: src/emc/usr_intf/pncconf/pncconf.glade:19190 +#: src/emc/usr_intf/pncconf/pncconf.glade:19204 +#: src/emc/usr_intf/pncconf/pncconf.glade:22567 +#: src/emc/usr_intf/pncconf/pncconf.glade:22579 +#: src/emc/usr_intf/pncconf/pncconf.glade:24363 +#: src/emc/usr_intf/pncconf/pncconf.glade:24375 +#: src/emc/usr_intf/pncconf/pncconf.glade:26159 +#: src/emc/usr_intf/pncconf/pncconf.glade:26171 +#: src/emc/usr_intf/pncconf/pncconf.glade:28772 +#: src/emc/usr_intf/pncconf/pncconf.glade:28784 +#: src/emc/usr_intf/pncconf/pncconf.glade:28917 +#: src/emc/usr_intf/pncconf/pncconf.glade:28931 +#: src/emc/usr_intf/pncconf/pncconf.glade:33102 +#: src/emc/usr_intf/pncconf/pncconf.glade:33275 +#: src/emc/usr_intf/pncconf/pncconf.glade:33289 +#: src/emc/usr_intf/pncconf/pncconf.glade:38269 +#: src/emc/usr_intf/pncconf/pncconf.glade:38281 +#: src/emc/usr_intf/pncconf/pncconf.glade:38532 +#: src/emc/usr_intf/pncconf/pncconf.glade:38546 +#: src/emc/usr_intf/pncconf/pncconf.glade:42616 +#: src/emc/usr_intf/pncconf/pncconf.glade:42628 +#: src/emc/usr_intf/pncconf/pncconf.glade:42761 +#: src/emc/usr_intf/pncconf/pncconf.glade:42775 +#: src/emc/usr_intf/pncconf/pncconf.glade:46947 +#: src/emc/usr_intf/pncconf/pncconf.glade:46959 +#: src/emc/usr_intf/pncconf/pncconf.glade:49539 +#: src/emc/usr_intf/pncconf/pncconf.glade:49551 +#: src/emc/usr_intf/pncconf/pncconf.glade:49684 +#: src/emc/usr_intf/pncconf/pncconf.glade:49698 +#: src/emc/usr_intf/pncconf/pncconf.glade:53870 +#: src/emc/usr_intf/pncconf/pncconf.glade:53882 +#: src/emc/usr_intf/pncconf/pncconf.glade:56462 +#: src/emc/usr_intf/pncconf/pncconf.glade:56474 +#: src/emc/usr_intf/pncconf/pncconf.glade:56607 +#: src/emc/usr_intf/pncconf/pncconf.glade:56621 +#: src/emc/usr_intf/pncconf/pncconf.glade:60793 +#: src/emc/usr_intf/pncconf/pncconf.glade:60805 +msgid "Num" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2622 -#: src/emc/usr_intf/pncconf/pncconf.glade:3004 -#: src/emc/usr_intf/pncconf/pncconf.glade:3885 -#: src/emc/usr_intf/pncconf/pncconf.glade:4766 -msgid " bcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:11222 +msgid "" +" I/O\n" +"Connector 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2635 -#: src/emc/usr_intf/pncconf/pncconf.glade:3017 -#: src/emc/usr_intf/pncconf/pncconf.glade:3898 -#: src/emc/usr_intf/pncconf/pncconf.glade:4779 -msgid " abcd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:13835 +msgid "" +" I/O\n" +" Connector 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2648 -#: src/emc/usr_intf/pncconf/pncconf.glade:2979 -#: src/emc/usr_intf/pncconf/pncconf.glade:3860 -#: src/emc/usr_intf/pncconf/pncconf.glade:4741 -msgid " d)" +#: src/emc/usr_intf/pncconf/pncconf.glade:16281 +#: src/emc/usr_intf/pncconf/pncconf.glade:16295 +#: src/emc/usr_intf/pncconf/pncconf.glade:16322 +#: src/emc/usr_intf/pncconf/pncconf.glade:26441 +#: src/emc/usr_intf/pncconf/pncconf.glade:26468 +#: src/emc/usr_intf/pncconf/pncconf.glade:26482 +#: src/emc/usr_intf/pncconf/pncconf.glade:31232 +#: src/emc/usr_intf/pncconf/pncconf.glade:31246 +#: src/emc/usr_intf/pncconf/pncconf.glade:31273 +#: src/emc/usr_intf/pncconf/pncconf.glade:31708 +#: src/emc/usr_intf/pncconf/pncconf.glade:31735 +#: src/emc/usr_intf/pncconf/pncconf.glade:31749 +#: src/emc/usr_intf/pncconf/pncconf.glade:35577 +#: src/emc/usr_intf/pncconf/pncconf.glade:35591 +#: src/emc/usr_intf/pncconf/pncconf.glade:35618 +#: src/emc/usr_intf/pncconf/pncconf.glade:35925 +#: src/emc/usr_intf/pncconf/pncconf.glade:35952 +#: src/emc/usr_intf/pncconf/pncconf.glade:35966 +#: src/emc/usr_intf/pncconf/pncconf.glade:39909 +#: src/emc/usr_intf/pncconf/pncconf.glade:39923 +#: src/emc/usr_intf/pncconf/pncconf.glade:39950 +#: src/emc/usr_intf/pncconf/pncconf.glade:40285 +#: src/emc/usr_intf/pncconf/pncconf.glade:40312 +#: src/emc/usr_intf/pncconf/pncconf.glade:40326 +#: src/emc/usr_intf/pncconf/pncconf.glade:45076 +#: src/emc/usr_intf/pncconf/pncconf.glade:45090 +#: src/emc/usr_intf/pncconf/pncconf.glade:45117 +#: src/emc/usr_intf/pncconf/pncconf.glade:45541 +#: src/emc/usr_intf/pncconf/pncconf.glade:45568 +#: src/emc/usr_intf/pncconf/pncconf.glade:45582 +#: src/emc/usr_intf/pncconf/pncconf.glade:47208 +#: src/emc/usr_intf/pncconf/pncconf.glade:47235 +#: src/emc/usr_intf/pncconf/pncconf.glade:47249 +#: src/emc/usr_intf/pncconf/pncconf.glade:51999 +#: src/emc/usr_intf/pncconf/pncconf.glade:52013 +#: src/emc/usr_intf/pncconf/pncconf.glade:52040 +#: src/emc/usr_intf/pncconf/pncconf.glade:52464 +#: src/emc/usr_intf/pncconf/pncconf.glade:52491 +#: src/emc/usr_intf/pncconf/pncconf.glade:52505 +#: src/emc/usr_intf/pncconf/pncconf.glade:54131 +#: src/emc/usr_intf/pncconf/pncconf.glade:54158 +#: src/emc/usr_intf/pncconf/pncconf.glade:54172 +#: src/emc/usr_intf/pncconf/pncconf.glade:58922 +#: src/emc/usr_intf/pncconf/pncconf.glade:58936 +#: src/emc/usr_intf/pncconf/pncconf.glade:58963 +#: src/emc/usr_intf/pncconf/pncconf.glade:59387 +#: src/emc/usr_intf/pncconf/pncconf.glade:59414 +#: src/emc/usr_intf/pncconf/pncconf.glade:59428 +msgid " " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:2664 -msgid "increments" -msgstr " 增 量 " - -#: src/emc/usr_intf/pncconf/pncconf.glade:2708 -msgid "External MPG Jogging" -msgstr "外部 MPG 慢步" - -#: src/emc/usr_intf/pncconf/pncconf.glade:2739 -#: src/emc/usr_intf/pncconf/pncconf.glade:3620 -#: src/emc/usr_intf/pncconf/pncconf.glade:4501 -msgid "Use MPG " -msgstr "使用 MPG" - -#: src/emc/usr_intf/pncconf/pncconf.glade:2752 -#: src/emc/usr_intf/pncconf/pncconf.glade:3633 -#: src/emc/usr_intf/pncconf/pncconf.glade:4514 -msgid "use switches" -msgstr " 使用 開關 " - -#: src/emc/usr_intf/pncconf/pncconf.glade:2838 -#: src/emc/usr_intf/pncconf/pncconf.glade:3733 -#: src/emc/usr_intf/pncconf/pncconf.glade:4614 -msgid "ignore all-inputs false" -msgstr " 忽略 所有輸入 偽 " - -#: src/emc/usr_intf/pncconf/pncconf.glade:2853 -#: src/emc/usr_intf/pncconf/pncconf.glade:3748 -#: src/emc/usr_intf/pncconf/pncconf.glade:4629 -msgid "use graycode" -msgstr "用 graycode" - -#: src/emc/usr_intf/pncconf/pncconf.glade:2940 -#: src/emc/usr_intf/pncconf/pncconf.glade:3821 -#: src/emc/usr_intf/pncconf/pncconf.glade:4702 -msgid " abd)" +#: src/emc/usr_intf/pncconf/pncconf.glade:16427 +msgid "" +" I/O\n" +" Connector 4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:3555 -#: src/emc/usr_intf/pncconf/pncconf.glade:4436 -#: src/emc/usr_intf/pncconf/pncconf.glade:5317 -msgid "Increments" -msgstr " 增 量 " - -#: src/emc/usr_intf/pncconf/pncconf.glade:3589 -msgid "External Feed Override" -msgstr "外部 進給 超速" - -#: src/emc/usr_intf/pncconf/pncconf.glade:4470 -#, fuzzy -msgid "Max Velocity Override" -msgstr "外部 進給 超速" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5351 -msgid "External Spindle Override" -msgstr "外部 主軸 超速" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5379 -msgid "GUI configuration" -msgstr "GUI 配 置 " - -#: src/emc/usr_intf/pncconf/pncconf.glade:5398 -msgid "Frontend" -msgstr " 前 台 " - -#: src/emc/usr_intf/pncconf/pncconf.glade:5557 +#: src/emc/usr_intf/pncconf/pncconf.glade:19041 msgid "" -"Commanded\n" -"Actual" +" I/O\n" +" Connector 5" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5570 +#: src/emc/usr_intf/pncconf/pncconf.glade:20837 msgid "" -"Machine\n" -"Relative\n" +" I/O\n" +"Connector 6" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5608 -msgid "Max Feed Override" -msgstr "最大 進給 超越" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5667 -msgid "Min Spindle Override" -msgstr "最小 主軸超速" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5691 -msgid "Max Spindle Override " -msgstr "設定 主軸超速" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5702 -msgid "Position_feedback" -msgstr "定 位 反 饋 (_f)" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5713 -msgid "Position_offset" -msgstr "位置 偏移量 (_o)" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5721 -msgid "General GUI Defaults" -msgstr "一 般 GUI 預 設 值" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5808 -msgid "Force Axis to Maximize" +#: src/emc/usr_intf/pncconf/pncconf.glade:22633 +msgid "" +" I/O\n" +"Connector 7" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5832 -#: src/emc/usr_intf/pncconf/pncconf.glade:6602 -#: src/emc/usr_intf/pncconf/pncconf.glade:6841 -#: src/emc/usr_intf/pncconf/pncconf.glade:7328 -msgid "H" +#: src/emc/usr_intf/pncconf/pncconf.glade:24429 +msgid "" +" I/O\n" +"Connector 8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5866 -#: src/emc/usr_intf/pncconf/pncconf.glade:6568 -#: src/emc/usr_intf/pncconf/pncconf.glade:6875 -#: src/emc/usr_intf/pncconf/pncconf.glade:7294 -msgid "W" +#: src/emc/usr_intf/pncconf/pncconf.glade:26225 +msgid "" +" I/O\n" +" Connector 9" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5876 -#: src/emc/usr_intf/pncconf/pncconf.glade:6556 -#: src/emc/usr_intf/pncconf/pncconf.glade:6885 -#: src/emc/usr_intf/pncconf/pncconf.glade:7282 -msgid "X" +#: src/emc/usr_intf/pncconf/pncconf.glade:31378 +#: src/emc/usr_intf/pncconf/pncconf.glade:38299 +#: src/emc/usr_intf/pncconf/pncconf.glade:45222 +#: src/emc/usr_intf/pncconf/pncconf.glade:52145 +#: src/emc/usr_intf/pncconf/pncconf.glade:59068 +msgid "page 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:5914 -#: src/emc/usr_intf/pncconf/pncconf.glade:6519 -#: src/emc/usr_intf/pncconf/pncconf.glade:6923 -#: src/emc/usr_intf/pncconf/pncconf.glade:7244 -msgid "Position" -msgstr "位置" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5927 -#: src/emc/usr_intf/pncconf/pncconf.glade:6510 -#: src/emc/usr_intf/pncconf/pncconf.glade:6936 -#: src/emc/usr_intf/pncconf/pncconf.glade:7234 -msgid "size" -msgstr "大小" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5942 -#: src/emc/usr_intf/pncconf/pncconf.glade:5952 -#: src/emc/usr_intf/pncconf/pncconf.glade:6158 -msgid "mm / min" -msgstr "毫米 / 分鐘" - -#: src/emc/usr_intf/pncconf/pncconf.glade:5975 -#: src/emc/usr_intf/pncconf/pncconf.glade:5985 -#: src/emc/usr_intf/pncconf/pncconf.glade:5997 -msgid "Deg / min" -msgstr "角度 / 分" - -#: src/emc/usr_intf/pncconf/pncconf.glade:6010 -msgid "xyzabc" +#: src/emc/usr_intf/pncconf/pncconf.glade:33131 +#: src/emc/usr_intf/pncconf/pncconf.glade:40054 +#: src/emc/usr_intf/pncconf/pncconf.glade:46977 +#: src/emc/usr_intf/pncconf/pncconf.glade:53900 +#: src/emc/usr_intf/pncconf/pncconf.glade:60823 +msgid "page 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6023 -#, fuzzy -msgid "Axis Geometry" -msgstr "幾  何" - -#: src/emc/usr_intf/pncconf/pncconf.glade:6048 -msgid "Max Angular velocity" -msgstr "最 大 角 速 度" - -#: src/emc/usr_intf/pncconf/pncconf.glade:6061 -msgid "5mm 1mm .5mm .1mm .05mm .01mm .005mm" +#: src/emc/usr_intf/pncconf/pncconf.glade:33147 +msgid "Smart Serial 0" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6074 -msgid "Increments " -msgstr " 增 量 " - -#: src/emc/usr_intf/pncconf/pncconf.glade:6099 -msgid "Min Angular velocity" -msgstr "最 小 角 速 度" - -#: src/emc/usr_intf/pncconf/pncconf.glade:6112 -msgid "gedit" +#: src/emc/usr_intf/pncconf/pncconf.glade:40070 +msgid "Smart Serial 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6148 -msgid "Default Angular velocity " -msgstr " 角 速 度 預 置 值  " +#: src/emc/usr_intf/pncconf/pncconf.glade:46993 +msgid "Smart Serial 2" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6211 -msgid "Max linear velocity" -msgstr "最 大 線 性 速 度" +#: src/emc/usr_intf/pncconf/pncconf.glade:53916 +msgid "Smart Serial 3" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6222 -msgid "Min linear velocity" -msgstr "最 小 線 性 速 度 " +#: src/emc/usr_intf/pncconf/pncconf.glade:60839 +#, fuzzy +msgid "Smart Serial 4" +msgstr "PWM 產生器 的數目:" -#: src/emc/usr_intf/pncconf/pncconf.glade:6233 -msgid "Default linear velocity " -msgstr " 線 性 速 度 預 置 值 " +#: src/emc/usr_intf/pncconf/pncconf.glade:60861 +msgid "First Parallel Port Setup" +msgstr "第一並行端口設置" -#: src/emc/usr_intf/pncconf/pncconf.glade:6241 -msgid "AXIS defaults" -msgstr "AXIS 預 置 值" +#: src/emc/usr_intf/pncconf/pncconf.glade:60946 +msgid "Launch Test Panel" +msgstr "啟動 測試 面板" -#: src/emc/usr_intf/pncconf/pncconf.glade:6352 -msgid "Error Textcolor" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:62374 +msgid "Inputs (Machine to PC):" +msgstr "输入 (机器 至 PC):" -#: src/emc/usr_intf/pncconf/pncconf.glade:6365 -msgid "DTG Textcolor" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:62929 +msgid "Outputs (PC to Machine):" +msgstr "输出 (PC 至 机器):" -#: src/emc/usr_intf/pncconf/pncconf.glade:6378 -#, fuzzy -msgid "Relative Textcolor" -msgstr "相對位置" +#: src/emc/usr_intf/pncconf/pncconf.glade:62950 +msgid "X Axis Motor/Encoder Configuration" +msgstr "X 轴 馬達/編碼器 配置" -#: src/emc/usr_intf/pncconf/pncconf.glade:6391 +#: src/emc/usr_intf/pncconf/pncconf.glade:63005 #, fuzzy -msgid "Absolute Textcolor" -msgstr "絕對反饋" - -#: src/emc/usr_intf/pncconf/pncconf.glade:6454 -msgid "Absolute Text Color" -msgstr "" +msgid "Max Output" +msgstr "DAC 最大 輸出:" -#: src/emc/usr_intf/pncconf/pncconf.glade:6479 -#: src/emc/usr_intf/pncconf/pncconf.glade:7148 -msgid "GTK Theme" +#: src/emc/usr_intf/pncconf/pncconf.glade:63070 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6491 -#: src/emc/usr_intf/pncconf/pncconf.glade:7158 -msgid "Follow System Theme\n" +#: src/emc/usr_intf/pncconf/pncconf.glade:63083 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6624 -msgid "Force Touchy to Maximize after positioning" +#: src/emc/usr_intf/pncconf/pncconf.glade:63096 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "FF0" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:6669 -msgid "GUI Options" -msgstr "GUI 的選項 " - -#: src/emc/usr_intf/pncconf/pncconf.glade:6700 -msgid "Virtual Control Panel" -msgstr " 虛 擬 控 制 面 板 " - -#: src/emc/usr_intf/pncconf/pncconf.glade:6775 -msgid "XYZ buttons (uses Halui)" -msgstr "XYZ 按鍵 (用 Halui)" +#: src/emc/usr_intf/pncconf/pncconf.glade:63143 +msgid "Deadband" +msgstr "死區" -#: src/emc/usr_intf/pncconf/pncconf.glade:6946 -msgid "Geometry Options" -msgstr "幾何 的選項" +#: src/emc/usr_intf/pncconf/pncconf.glade:63156 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Bias" +msgstr "偏壓" -#: src/emc/usr_intf/pncconf/pncconf.glade:7025 -msgid "Pyvcp Details" +#: src/emc/usr_intf/pncconf/pncconf.glade:63169 +msgid "P" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7097 -msgid "Sample display " +#: src/emc/usr_intf/pncconf/pncconf.glade:63180 +msgid "I" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7172 -msgid "Force Maximize" +#: src/emc/usr_intf/pncconf/pncconf.glade:63193 +msgid "D" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7186 -msgid "Center Tab Embeded" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63258 +msgid "Servo Info" +msgstr "伺服資料" -#: src/emc/usr_intf/pncconf/pncconf.glade:7201 -msgid "Rightside Embeded" +#: src/emc/usr_intf/pncconf/pncconf.glade:63337 +msgid "3pwm Scale:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7217 -msgid "Standalone Panel" +#: src/emc/usr_intf/pncconf/pncconf.glade:63348 +msgid "3pwm Deadtime:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7351 -#, fuzzy -msgid "Display Options" -msgstr "顯示英寸(_I)" +#: src/emc/usr_intf/pncconf/pncconf.glade:63361 +msgid "Quad Pulses / Rev:" +msgstr "四 脈衝 / 轉" -#: src/emc/usr_intf/pncconf/pncconf.glade:7401 -msgid "Max RPM" +#: src/emc/usr_intf/pncconf/pncconf.glade:63438 +msgid "" +"Open Loop\n" +" Test" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7414 -#, fuzzy -msgid "Spindle Speed Indicator" -msgstr "主軸 轉速(RPM)" - -#: src/emc/usr_intf/pncconf/pncconf.glade:7426 +#: src/emc/usr_intf/pncconf/pncconf.glade:63462 #, fuzzy -msgid "Spindle At Speed LED" -msgstr "主軸 轉速(RPM)" +msgid "Analog Min Limit:" +msgstr "主軸" -#: src/emc/usr_intf/pncconf/pncconf.glade:7438 +#: src/emc/usr_intf/pncconf/pncconf.glade:63476 #, fuzzy -msgid "Zero X Button" -msgstr "左 按鈕" +msgid "Analog Max limit:" +msgstr "主軸 快些" -#: src/emc/usr_intf/pncconf/pncconf.glade:7450 -#, fuzzy -msgid "Zero Y Button" -msgstr "左 按鈕" +#: src/emc/usr_intf/pncconf/pncconf.glade:63490 +msgid "Analog Max Scale:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7462 +#: src/emc/usr_intf/pncconf/pncconf.glade:63554 #, fuzzy -msgid "Zero Z Button" -msgstr "左 按鈕" +msgid "Output Info" +msgstr "輸出" -#: src/emc/usr_intf/pncconf/pncconf.glade:7474 -#, fuzzy -msgid "Zero A Button" -msgstr "左 按鈕" +#: src/emc/usr_intf/pncconf/pncconf.glade:63603 +msgid "Step On-Time" +msgstr "步進 準時" -#: src/emc/usr_intf/pncconf/pncconf.glade:7486 -msgid "Requires Classicladder touch-off program" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63616 +msgid "Step Space" +msgstr "步進 間距" -#: src/emc/usr_intf/pncconf/pncconf.glade:7487 -msgid "Auto Z Touch Off Button" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63659 +msgid "Direction Hold" +msgstr "方向保持" -#: src/emc/usr_intf/pncconf/pncconf.glade:7500 -#, fuzzy -msgid "Sample Options" -msgstr "樣辦配置" +#: src/emc/usr_intf/pncconf/pncconf.glade:63672 +msgid "Direction Setup" +msgstr "方向設定" -#: src/emc/usr_intf/pncconf/pncconf.glade:7574 -msgid "Gladevcp Details" -msgstr "GladeVCP 詳情" +#: src/emc/usr_intf/pncconf/pncconf.glade:63715 +msgid "Driver Type:" +msgstr "驅動類型" -#: src/emc/usr_intf/pncconf/pncconf.glade:7597 -msgid "Include custom GladeVCP GUI panel" -msgstr "包括自訂 GladeVCP GUI面板" +#: src/emc/usr_intf/pncconf/pncconf.glade:63748 +msgid "Stepper Info" +msgstr "步進 信息" -#: src/emc/usr_intf/pncconf/pncconf.glade:7668 -msgid "Restore joint position after shutdown" -msgstr "停機後 恢復 Joint 的位置" +#: src/emc/usr_intf/pncconf/pncconf.glade:63800 +msgid "No feedback" +msgstr "沒有反饋" -#: src/emc/usr_intf/pncconf/pncconf.glade:7683 -msgid "Move spindle up before tool change" -msgstr "換刀 之前 向上 移動 主軸" +#: src/emc/usr_intf/pncconf/pncconf.glade:63810 +msgid "Absolute Feedback" +msgstr "絕對反饋" -#: src/emc/usr_intf/pncconf/pncconf.glade:7696 -msgid "Leave spindle on during tool change" -msgstr "換刀 期間 保留主軸 轉動" +#: src/emc/usr_intf/pncconf/pncconf.glade:63824 +msgid "Incremental Feedback" +msgstr "增量反饋" -#: src/emc/usr_intf/pncconf/pncconf.glade:7709 -msgid "Popup Toolchange Prompt" -msgstr "彈出窗口提示換刀" +#: src/emc/usr_intf/pncconf/pncconf.glade:63838 +msgid "Incremental Encoder" +msgstr "增量編碼器" -#: src/emc/usr_intf/pncconf/pncconf.glade:7723 -msgid "Require homing before MDI / Running" -msgstr "需要先 回零 才 可以 MDI / Running" +#: src/emc/usr_intf/pncconf/pncconf.glade:63850 +msgid "Hall sensors" +msgstr "霍爾傳感器" -#: src/emc/usr_intf/pncconf/pncconf.glade:7732 -msgid "Random position toolchanger " -msgstr "隨機 位置 換刀 " +#: src/emc/usr_intf/pncconf/pncconf.glade:63862 +msgid "Fanuc Red Cap " +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:7747 -msgid "Force individual manual homing" -msgstr "實施 個別 手動 回零" +#: src/emc/usr_intf/pncconf/pncconf.glade:63874 +msgid "Use encoder Index" +msgstr "使用編碼器指數" -#: src/emc/usr_intf/pncconf/pncconf.glade:7761 -msgid "Defaults and Options" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63905 +msgid "Input Options" +msgstr "輸入選項" -#: src/emc/usr_intf/pncconf/pncconf.glade:7789 -msgid "Mesa0 I/O setup\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63929 +msgid "Digital instead of PWM outputs" +msgstr "數碼代替PWM輸出" -#: src/emc/usr_intf/pncconf/pncconf.glade:7809 -msgid "" -"Click on each page tab to configure signal names for each connector port.\n" -"\n" -"Press the button to make the tabbed pages\n" -"accept the changes.\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63938 +msgid "6 outputs instead of 3 " +msgstr "6 輸出代替 3" -#: src/emc/usr_intf/pncconf/pncconf.glade:7998 -#, fuzzy -msgid "Num of channels: " -msgstr "沒有足夠的通道" +#: src/emc/usr_intf/pncconf/pncconf.glade:63950 +msgid "Force Trapezoid Mode" +msgstr "強制梯型模式" -#: src/emc/usr_intf/pncconf/pncconf.glade:8036 -msgid "7i29 daughter board" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63962 +msgid "Emulate feedback " +msgstr "仿真反饋" -#: src/emc/usr_intf/pncconf/pncconf.glade:8045 -msgid "7i30 daughter board" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:63974 +msgid "Emulated Hall sensors" +msgstr "霍爾傳感器仿真" -#: src/emc/usr_intf/pncconf/pncconf.glade:8057 -msgid "7i33 daughter board" +#: src/emc/usr_intf/pncconf/pncconf.glade:63987 +msgid "Emulated Fanuc Red Cap" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8069 -msgid "7i40 daughter board" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64014 +#, fuzzy +msgid "8i20 Max Current" +msgstr "電流" -#: src/emc/usr_intf/pncconf/pncconf.glade:8081 -msgid "7i48 daughter board" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64048 +msgid "Output Options" +msgstr "輸入選項" -#: src/emc/usr_intf/pncconf/pncconf.glade:8096 -msgid "Sanity Checks" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64103 +msgid "alignment current" +msgstr "對準電流" -#: src/emc/usr_intf/pncconf/pncconf.glade:8137 -#, fuzzy -msgid "Num of Smart Serial Ports:" -msgstr "PWM 產生器 的數目:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64113 +msgid "lead angle" +msgstr "超前角" -#: src/emc/usr_intf/pncconf/pncconf.glade:8148 -msgid "Board name" -msgstr "線路板 名字" +#: src/emc/usr_intf/pncconf/pncconf.glade:64213 +msgid "Reverse" +msgstr "反向" -#: src/emc/usr_intf/pncconf/pncconf.glade:8155 -msgid "Num of step generators: " -msgstr "步進 產生器 的數目:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64223 +msgid "Input-pattern" +msgstr "輸入模式" -#: src/emc/usr_intf/pncconf/pncconf.glade:8166 -msgid "Num of pwm generators:" -msgstr "PWM 產生器 的數目:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64233 +msgid "output-pattern" +msgstr "輸出模式" -#: src/emc/usr_intf/pncconf/pncconf.glade:8177 -msgid "Num of encoders:" -msgstr "編碼器 的數目:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64243 +msgid "Drive-offset" +msgstr "驅動器偏移" -#: src/emc/usr_intf/pncconf/pncconf.glade:8294 -msgid "Watchdog timeout:" -msgstr "監視程序超時:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64253 +msgid "Encoder-offset" +msgstr "編碼器偏移" -#: src/emc/usr_intf/pncconf/pncconf.glade:8305 -msgid "PDM base frequency:" -msgstr "PDM 基頻:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64263 +msgid "Poles" +msgstr "極" -#: src/emc/usr_intf/pncconf/pncconf.glade:8316 -msgid "PWM base frequency:" -msgstr "PWM 基頻:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64283 +msgid "Configuration" +msgstr "配置" -#: src/emc/usr_intf/pncconf/pncconf.glade:8328 -msgid "" -"Accept components\n" -" Changes" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64318 +#, fuzzy +msgid "Use BLDC Motor Commutation Control" +msgstr "使用無刷電機控制" -#: src/emc/usr_intf/pncconf/pncconf.glade:8356 -msgid "Total number of pins:" -msgstr "腳的 總數:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64354 +msgid "Scale:" +msgstr "比例:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8389 -msgid "Num of 3 pwm generators: " -msgstr "PWM 產生器" +#: src/emc/usr_intf/pncconf/pncconf.glade:64375 +msgid "% " +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8412 -msgid "SVST8_4" +#: src/emc/usr_intf/pncconf/pncconf.glade:64394 +msgid "Range:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8437 -msgid "Firmware:" -msgstr "固件:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64419 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "RPM" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:8447 -msgid "Mesa parport address:" -msgstr "Mesa 並行端口 地址: " +#: src/emc/usr_intf/pncconf/pncconf.glade:64439 +#, fuzzy +msgid "Use Spindle-At-Speed" +msgstr "主軸速度設置" -#: src/emc/usr_intf/pncconf/pncconf.glade:8482 -msgid "3PWM base frequency:" -msgstr "3PWM 基頻:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64464 +msgid "Filter gain:" +msgstr "濾波增益:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8504 -msgid "" -"Configuration\n" -" Page" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64499 +#, fuzzy +msgid "Spindle Display Filter Settings" +msgstr "主軸顯示過濾器設置" -#: src/emc/usr_intf/pncconf/pncconf.glade:8698 -#: src/emc/usr_intf/pncconf/pncconf.glade:8712 -#: src/emc/usr_intf/pncconf/pncconf.glade:13677 -#: src/emc/usr_intf/pncconf/pncconf.glade:13689 -#: src/emc/usr_intf/pncconf/pncconf.glade:16373 -#: src/emc/usr_intf/pncconf/pncconf.glade:16385 -#: src/emc/usr_intf/pncconf/pncconf.glade:18883 -#: src/emc/usr_intf/pncconf/pncconf.glade:18895 -#: src/emc/usr_intf/pncconf/pncconf.glade:20747 -#: src/emc/usr_intf/pncconf/pncconf.glade:20759 -#: src/emc/usr_intf/pncconf/pncconf.glade:20962 -#: src/emc/usr_intf/pncconf/pncconf.glade:20976 -#: src/emc/usr_intf/pncconf/pncconf.glade:22758 -#: src/emc/usr_intf/pncconf/pncconf.glade:22772 -#: src/emc/usr_intf/pncconf/pncconf.glade:24554 -#: src/emc/usr_intf/pncconf/pncconf.glade:24568 -#: src/emc/usr_intf/pncconf/pncconf.glade:26330 -#: src/emc/usr_intf/pncconf/pncconf.glade:26344 -#: src/emc/usr_intf/pncconf/pncconf.glade:31324 -#: src/emc/usr_intf/pncconf/pncconf.glade:31336 -#: src/emc/usr_intf/pncconf/pncconf.glade:31600 -#: src/emc/usr_intf/pncconf/pncconf.glade:35669 -#: src/emc/usr_intf/pncconf/pncconf.glade:35681 -#: src/emc/usr_intf/pncconf/pncconf.glade:35814 -#: src/emc/usr_intf/pncconf/pncconf.glade:35828 -#: src/emc/usr_intf/pncconf/pncconf.glade:40000 -#: src/emc/usr_intf/pncconf/pncconf.glade:40012 -#: src/emc/usr_intf/pncconf/pncconf.glade:40174 -#: src/emc/usr_intf/pncconf/pncconf.glade:40188 -#: src/emc/usr_intf/pncconf/pncconf.glade:45168 -#: src/emc/usr_intf/pncconf/pncconf.glade:45180 -#: src/emc/usr_intf/pncconf/pncconf.glade:45431 -#: src/emc/usr_intf/pncconf/pncconf.glade:45445 -#: src/emc/usr_intf/pncconf/pncconf.glade:47097 -#: src/emc/usr_intf/pncconf/pncconf.glade:47111 -#: src/emc/usr_intf/pncconf/pncconf.glade:52091 -#: src/emc/usr_intf/pncconf/pncconf.glade:52103 -#: src/emc/usr_intf/pncconf/pncconf.glade:52354 -#: src/emc/usr_intf/pncconf/pncconf.glade:52368 -msgid "Num" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64565 +msgid "Rapid Speed Following Error:" +msgstr "高速度跟隨故障:" -#: src/emc/usr_intf/pncconf/pncconf.glade:8723 -#: src/emc/usr_intf/pncconf/pncconf.glade:8743 -#: src/emc/usr_intf/pncconf/pncconf.glade:8763 -#: src/emc/usr_intf/pncconf/pncconf.glade:8783 -#: src/emc/usr_intf/pncconf/pncconf.glade:8803 -#: src/emc/usr_intf/pncconf/pncconf.glade:8823 -#: src/emc/usr_intf/pncconf/pncconf.glade:8843 -#: src/emc/usr_intf/pncconf/pncconf.glade:8863 -#: src/emc/usr_intf/pncconf/pncconf.glade:8883 -#: src/emc/usr_intf/pncconf/pncconf.glade:8903 -#: src/emc/usr_intf/pncconf/pncconf.glade:8923 -#: src/emc/usr_intf/pncconf/pncconf.glade:8943 -#: src/emc/usr_intf/pncconf/pncconf.glade:8963 -#: src/emc/usr_intf/pncconf/pncconf.glade:8983 -#: src/emc/usr_intf/pncconf/pncconf.glade:9003 -#: src/emc/usr_intf/pncconf/pncconf.glade:9023 -#: src/emc/usr_intf/pncconf/pncconf.glade:9043 -#: src/emc/usr_intf/pncconf/pncconf.glade:9063 -#: src/emc/usr_intf/pncconf/pncconf.glade:9083 -#: src/emc/usr_intf/pncconf/pncconf.glade:9103 -#: src/emc/usr_intf/pncconf/pncconf.glade:9123 -#: src/emc/usr_intf/pncconf/pncconf.glade:9143 -#: src/emc/usr_intf/pncconf/pncconf.glade:9163 -#: src/emc/usr_intf/pncconf/pncconf.glade:11027 -#: src/emc/usr_intf/pncconf/pncconf.glade:11353 -#: src/emc/usr_intf/pncconf/pncconf.glade:13216 -#: src/emc/usr_intf/pncconf/pncconf.glade:13236 -#: src/emc/usr_intf/pncconf/pncconf.glade:13256 -#: src/emc/usr_intf/pncconf/pncconf.glade:13276 -#: src/emc/usr_intf/pncconf/pncconf.glade:13296 -#: src/emc/usr_intf/pncconf/pncconf.glade:13316 -#: src/emc/usr_intf/pncconf/pncconf.glade:13336 -#: src/emc/usr_intf/pncconf/pncconf.glade:13356 -#: src/emc/usr_intf/pncconf/pncconf.glade:13376 -#: src/emc/usr_intf/pncconf/pncconf.glade:13396 -#: src/emc/usr_intf/pncconf/pncconf.glade:13416 -#: src/emc/usr_intf/pncconf/pncconf.glade:13436 -#: src/emc/usr_intf/pncconf/pncconf.glade:13456 -#: src/emc/usr_intf/pncconf/pncconf.glade:13476 -#: src/emc/usr_intf/pncconf/pncconf.glade:13496 -#: src/emc/usr_intf/pncconf/pncconf.glade:13516 -#: src/emc/usr_intf/pncconf/pncconf.glade:13536 -#: src/emc/usr_intf/pncconf/pncconf.glade:13556 -#: src/emc/usr_intf/pncconf/pncconf.glade:13576 -#: src/emc/usr_intf/pncconf/pncconf.glade:13596 -#: src/emc/usr_intf/pncconf/pncconf.glade:13616 -#: src/emc/usr_intf/pncconf/pncconf.glade:13636 -#: src/emc/usr_intf/pncconf/pncconf.glade:13656 -#: src/emc/usr_intf/pncconf/pncconf.glade:13966 -#: src/emc/usr_intf/pncconf/pncconf.glade:15912 -#: src/emc/usr_intf/pncconf/pncconf.glade:15932 -#: src/emc/usr_intf/pncconf/pncconf.glade:15952 -#: src/emc/usr_intf/pncconf/pncconf.glade:15972 -#: src/emc/usr_intf/pncconf/pncconf.glade:15992 -#: src/emc/usr_intf/pncconf/pncconf.glade:16012 -#: src/emc/usr_intf/pncconf/pncconf.glade:16032 -#: src/emc/usr_intf/pncconf/pncconf.glade:16052 -#: src/emc/usr_intf/pncconf/pncconf.glade:16072 -#: src/emc/usr_intf/pncconf/pncconf.glade:16092 -#: src/emc/usr_intf/pncconf/pncconf.glade:16112 -#: src/emc/usr_intf/pncconf/pncconf.glade:16132 -#: src/emc/usr_intf/pncconf/pncconf.glade:16152 -#: src/emc/usr_intf/pncconf/pncconf.glade:16172 -#: src/emc/usr_intf/pncconf/pncconf.glade:16192 -#: src/emc/usr_intf/pncconf/pncconf.glade:16212 -#: src/emc/usr_intf/pncconf/pncconf.glade:16232 -#: src/emc/usr_intf/pncconf/pncconf.glade:16252 -#: src/emc/usr_intf/pncconf/pncconf.glade:16272 -#: src/emc/usr_intf/pncconf/pncconf.glade:16292 -#: src/emc/usr_intf/pncconf/pncconf.glade:16312 -#: src/emc/usr_intf/pncconf/pncconf.glade:16332 -#: src/emc/usr_intf/pncconf/pncconf.glade:16352 -#: src/emc/usr_intf/pncconf/pncconf.glade:16558 -#: src/emc/usr_intf/pncconf/pncconf.glade:18422 -#: src/emc/usr_intf/pncconf/pncconf.glade:18442 -#: src/emc/usr_intf/pncconf/pncconf.glade:18462 -#: src/emc/usr_intf/pncconf/pncconf.glade:18482 -#: src/emc/usr_intf/pncconf/pncconf.glade:18502 -#: src/emc/usr_intf/pncconf/pncconf.glade:18522 -#: src/emc/usr_intf/pncconf/pncconf.glade:18542 -#: src/emc/usr_intf/pncconf/pncconf.glade:18562 -#: src/emc/usr_intf/pncconf/pncconf.glade:18582 -#: src/emc/usr_intf/pncconf/pncconf.glade:18602 -#: src/emc/usr_intf/pncconf/pncconf.glade:18622 -#: src/emc/usr_intf/pncconf/pncconf.glade:18642 -#: src/emc/usr_intf/pncconf/pncconf.glade:18662 -#: src/emc/usr_intf/pncconf/pncconf.glade:18682 -#: src/emc/usr_intf/pncconf/pncconf.glade:18702 -#: src/emc/usr_intf/pncconf/pncconf.glade:18722 -#: src/emc/usr_intf/pncconf/pncconf.glade:18742 -#: src/emc/usr_intf/pncconf/pncconf.glade:18762 -#: src/emc/usr_intf/pncconf/pncconf.glade:18782 -#: src/emc/usr_intf/pncconf/pncconf.glade:18802 -#: src/emc/usr_intf/pncconf/pncconf.glade:18822 -#: src/emc/usr_intf/pncconf/pncconf.glade:18842 -#: src/emc/usr_intf/pncconf/pncconf.glade:18862 -#: src/emc/usr_intf/pncconf/pncconf.glade:26355 -#: src/emc/usr_intf/pncconf/pncconf.glade:26375 -#: src/emc/usr_intf/pncconf/pncconf.glade:26395 -#: src/emc/usr_intf/pncconf/pncconf.glade:26415 -#: src/emc/usr_intf/pncconf/pncconf.glade:26435 -#: src/emc/usr_intf/pncconf/pncconf.glade:26455 -#: src/emc/usr_intf/pncconf/pncconf.glade:26475 -#: src/emc/usr_intf/pncconf/pncconf.glade:26495 -#: src/emc/usr_intf/pncconf/pncconf.glade:26515 -#: src/emc/usr_intf/pncconf/pncconf.glade:26535 -#: src/emc/usr_intf/pncconf/pncconf.glade:26555 -#: src/emc/usr_intf/pncconf/pncconf.glade:26575 -#: src/emc/usr_intf/pncconf/pncconf.glade:26595 -#: src/emc/usr_intf/pncconf/pncconf.glade:26615 -#: src/emc/usr_intf/pncconf/pncconf.glade:26635 -#: src/emc/usr_intf/pncconf/pncconf.glade:26655 -#: src/emc/usr_intf/pncconf/pncconf.glade:26675 -#: src/emc/usr_intf/pncconf/pncconf.glade:26695 -#: src/emc/usr_intf/pncconf/pncconf.glade:26715 -#: src/emc/usr_intf/pncconf/pncconf.glade:26735 -#: src/emc/usr_intf/pncconf/pncconf.glade:26755 -#: src/emc/usr_intf/pncconf/pncconf.glade:26775 -#: src/emc/usr_intf/pncconf/pncconf.glade:26795 -#: src/emc/usr_intf/pncconf/pncconf.glade:28711 -#: src/emc/usr_intf/pncconf/pncconf.glade:28934 -#: src/emc/usr_intf/pncconf/pncconf.glade:30863 -#: src/emc/usr_intf/pncconf/pncconf.glade:30883 -#: src/emc/usr_intf/pncconf/pncconf.glade:30903 -#: src/emc/usr_intf/pncconf/pncconf.glade:30923 -#: src/emc/usr_intf/pncconf/pncconf.glade:30943 -#: src/emc/usr_intf/pncconf/pncconf.glade:30963 -#: src/emc/usr_intf/pncconf/pncconf.glade:30983 -#: src/emc/usr_intf/pncconf/pncconf.glade:31003 -#: src/emc/usr_intf/pncconf/pncconf.glade:31023 -#: src/emc/usr_intf/pncconf/pncconf.glade:31043 -#: src/emc/usr_intf/pncconf/pncconf.glade:31063 -#: src/emc/usr_intf/pncconf/pncconf.glade:31083 -#: src/emc/usr_intf/pncconf/pncconf.glade:31103 -#: src/emc/usr_intf/pncconf/pncconf.glade:31123 -#: src/emc/usr_intf/pncconf/pncconf.glade:31143 -#: src/emc/usr_intf/pncconf/pncconf.glade:31163 -#: src/emc/usr_intf/pncconf/pncconf.glade:31183 -#: src/emc/usr_intf/pncconf/pncconf.glade:31203 -#: src/emc/usr_intf/pncconf/pncconf.glade:31223 -#: src/emc/usr_intf/pncconf/pncconf.glade:31243 -#: src/emc/usr_intf/pncconf/pncconf.glade:31263 -#: src/emc/usr_intf/pncconf/pncconf.glade:31283 -#: src/emc/usr_intf/pncconf/pncconf.glade:31303 -#: src/emc/usr_intf/pncconf/pncconf.glade:31611 -#: src/emc/usr_intf/pncconf/pncconf.glade:31631 -#: src/emc/usr_intf/pncconf/pncconf.glade:31651 -#: src/emc/usr_intf/pncconf/pncconf.glade:31671 -#: src/emc/usr_intf/pncconf/pncconf.glade:31691 -#: src/emc/usr_intf/pncconf/pncconf.glade:31711 -#: src/emc/usr_intf/pncconf/pncconf.glade:31731 -#: src/emc/usr_intf/pncconf/pncconf.glade:31751 -#: src/emc/usr_intf/pncconf/pncconf.glade:31771 -#: src/emc/usr_intf/pncconf/pncconf.glade:31791 -#: src/emc/usr_intf/pncconf/pncconf.glade:31811 -#: src/emc/usr_intf/pncconf/pncconf.glade:33029 -#: src/emc/usr_intf/pncconf/pncconf.glade:33292 -#: src/emc/usr_intf/pncconf/pncconf.glade:35208 -#: src/emc/usr_intf/pncconf/pncconf.glade:35228 -#: src/emc/usr_intf/pncconf/pncconf.glade:35248 -#: src/emc/usr_intf/pncconf/pncconf.glade:35268 -#: src/emc/usr_intf/pncconf/pncconf.glade:35288 -#: src/emc/usr_intf/pncconf/pncconf.glade:35308 -#: src/emc/usr_intf/pncconf/pncconf.glade:35328 -#: src/emc/usr_intf/pncconf/pncconf.glade:35348 -#: src/emc/usr_intf/pncconf/pncconf.glade:35368 -#: src/emc/usr_intf/pncconf/pncconf.glade:35388 -#: src/emc/usr_intf/pncconf/pncconf.glade:35408 -#: src/emc/usr_intf/pncconf/pncconf.glade:35428 -#: src/emc/usr_intf/pncconf/pncconf.glade:35448 -#: src/emc/usr_intf/pncconf/pncconf.glade:35468 -#: src/emc/usr_intf/pncconf/pncconf.glade:35488 -#: src/emc/usr_intf/pncconf/pncconf.glade:35508 -#: src/emc/usr_intf/pncconf/pncconf.glade:35528 -#: src/emc/usr_intf/pncconf/pncconf.glade:35548 -#: src/emc/usr_intf/pncconf/pncconf.glade:35568 -#: src/emc/usr_intf/pncconf/pncconf.glade:35588 -#: src/emc/usr_intf/pncconf/pncconf.glade:35608 -#: src/emc/usr_intf/pncconf/pncconf.glade:35628 -#: src/emc/usr_intf/pncconf/pncconf.glade:35648 -#: src/emc/usr_intf/pncconf/pncconf.glade:35839 -#: src/emc/usr_intf/pncconf/pncconf.glade:35859 -#: src/emc/usr_intf/pncconf/pncconf.glade:35879 -#: src/emc/usr_intf/pncconf/pncconf.glade:35899 -#: src/emc/usr_intf/pncconf/pncconf.glade:35919 -#: src/emc/usr_intf/pncconf/pncconf.glade:35939 -#: src/emc/usr_intf/pncconf/pncconf.glade:35959 -#: src/emc/usr_intf/pncconf/pncconf.glade:35979 -#: src/emc/usr_intf/pncconf/pncconf.glade:35999 -#: src/emc/usr_intf/pncconf/pncconf.glade:36019 -#: src/emc/usr_intf/pncconf/pncconf.glade:36039 -#: src/emc/usr_intf/pncconf/pncconf.glade:36059 -#: src/emc/usr_intf/pncconf/pncconf.glade:36079 -#: src/emc/usr_intf/pncconf/pncconf.glade:36099 -#: src/emc/usr_intf/pncconf/pncconf.glade:36119 -#: src/emc/usr_intf/pncconf/pncconf.glade:36139 -#: src/emc/usr_intf/pncconf/pncconf.glade:36159 -#: src/emc/usr_intf/pncconf/pncconf.glade:36179 -#: src/emc/usr_intf/pncconf/pncconf.glade:36199 -#: src/emc/usr_intf/pncconf/pncconf.glade:36219 -#: src/emc/usr_intf/pncconf/pncconf.glade:36239 -#: src/emc/usr_intf/pncconf/pncconf.glade:36259 -#: src/emc/usr_intf/pncconf/pncconf.glade:36279 -#: src/emc/usr_intf/pncconf/pncconf.glade:38208 -#: src/emc/usr_intf/pncconf/pncconf.glade:38549 -#: src/emc/usr_intf/pncconf/pncconf.glade:39779 -#: src/emc/usr_intf/pncconf/pncconf.glade:39799 -#: src/emc/usr_intf/pncconf/pncconf.glade:39819 -#: src/emc/usr_intf/pncconf/pncconf.glade:39839 -#: src/emc/usr_intf/pncconf/pncconf.glade:39859 -#: src/emc/usr_intf/pncconf/pncconf.glade:39879 -#: src/emc/usr_intf/pncconf/pncconf.glade:39899 -#: src/emc/usr_intf/pncconf/pncconf.glade:39919 -#: src/emc/usr_intf/pncconf/pncconf.glade:39939 -#: src/emc/usr_intf/pncconf/pncconf.glade:39959 -#: src/emc/usr_intf/pncconf/pncconf.glade:39979 -#: src/emc/usr_intf/pncconf/pncconf.glade:40199 -#: src/emc/usr_intf/pncconf/pncconf.glade:40219 -#: src/emc/usr_intf/pncconf/pncconf.glade:40239 -#: src/emc/usr_intf/pncconf/pncconf.glade:40259 -#: src/emc/usr_intf/pncconf/pncconf.glade:40279 -#: src/emc/usr_intf/pncconf/pncconf.glade:40299 -#: src/emc/usr_intf/pncconf/pncconf.glade:40319 -#: src/emc/usr_intf/pncconf/pncconf.glade:40339 -#: src/emc/usr_intf/pncconf/pncconf.glade:40359 -#: src/emc/usr_intf/pncconf/pncconf.glade:40379 -#: src/emc/usr_intf/pncconf/pncconf.glade:40399 -#: src/emc/usr_intf/pncconf/pncconf.glade:40419 -#: src/emc/usr_intf/pncconf/pncconf.glade:40439 -#: src/emc/usr_intf/pncconf/pncconf.glade:40459 -#: src/emc/usr_intf/pncconf/pncconf.glade:40479 -#: src/emc/usr_intf/pncconf/pncconf.glade:40499 -#: src/emc/usr_intf/pncconf/pncconf.glade:40519 -#: src/emc/usr_intf/pncconf/pncconf.glade:40539 -#: src/emc/usr_intf/pncconf/pncconf.glade:40559 -#: src/emc/usr_intf/pncconf/pncconf.glade:40579 -#: src/emc/usr_intf/pncconf/pncconf.glade:40599 -#: src/emc/usr_intf/pncconf/pncconf.glade:40619 -#: src/emc/usr_intf/pncconf/pncconf.glade:40639 -#: src/emc/usr_intf/pncconf/pncconf.glade:42555 -#: src/emc/usr_intf/pncconf/pncconf.glade:42778 -#: src/emc/usr_intf/pncconf/pncconf.glade:44707 -#: src/emc/usr_intf/pncconf/pncconf.glade:44727 -#: src/emc/usr_intf/pncconf/pncconf.glade:44747 -#: src/emc/usr_intf/pncconf/pncconf.glade:44767 -#: src/emc/usr_intf/pncconf/pncconf.glade:44787 -#: src/emc/usr_intf/pncconf/pncconf.glade:44807 -#: src/emc/usr_intf/pncconf/pncconf.glade:44827 -#: src/emc/usr_intf/pncconf/pncconf.glade:44847 -#: src/emc/usr_intf/pncconf/pncconf.glade:44867 -#: src/emc/usr_intf/pncconf/pncconf.glade:44887 -#: src/emc/usr_intf/pncconf/pncconf.glade:44907 -#: src/emc/usr_intf/pncconf/pncconf.glade:44927 -#: src/emc/usr_intf/pncconf/pncconf.glade:44947 -#: src/emc/usr_intf/pncconf/pncconf.glade:44967 -#: src/emc/usr_intf/pncconf/pncconf.glade:44987 -#: src/emc/usr_intf/pncconf/pncconf.glade:45007 -#: src/emc/usr_intf/pncconf/pncconf.glade:45027 -#: src/emc/usr_intf/pncconf/pncconf.glade:45047 -#: src/emc/usr_intf/pncconf/pncconf.glade:45067 -#: src/emc/usr_intf/pncconf/pncconf.glade:45087 -#: src/emc/usr_intf/pncconf/pncconf.glade:45107 -#: src/emc/usr_intf/pncconf/pncconf.glade:45127 -#: src/emc/usr_intf/pncconf/pncconf.glade:45147 -#: src/emc/usr_intf/pncconf/pncconf.glade:45456 -#: src/emc/usr_intf/pncconf/pncconf.glade:45476 -#: src/emc/usr_intf/pncconf/pncconf.glade:45496 -#: src/emc/usr_intf/pncconf/pncconf.glade:45516 -#: src/emc/usr_intf/pncconf/pncconf.glade:45536 -#: src/emc/usr_intf/pncconf/pncconf.glade:45556 -#: src/emc/usr_intf/pncconf/pncconf.glade:45576 -#: src/emc/usr_intf/pncconf/pncconf.glade:45596 -#: src/emc/usr_intf/pncconf/pncconf.glade:45616 -#: src/emc/usr_intf/pncconf/pncconf.glade:45636 -#: src/emc/usr_intf/pncconf/pncconf.glade:45656 -#: src/emc/usr_intf/pncconf/pncconf.glade:46886 -#: src/emc/usr_intf/pncconf/pncconf.glade:47122 -#: src/emc/usr_intf/pncconf/pncconf.glade:47142 -#: src/emc/usr_intf/pncconf/pncconf.glade:47162 -#: src/emc/usr_intf/pncconf/pncconf.glade:47182 -#: src/emc/usr_intf/pncconf/pncconf.glade:47202 -#: src/emc/usr_intf/pncconf/pncconf.glade:47222 -#: src/emc/usr_intf/pncconf/pncconf.glade:47242 -#: src/emc/usr_intf/pncconf/pncconf.glade:47262 -#: src/emc/usr_intf/pncconf/pncconf.glade:47282 -#: src/emc/usr_intf/pncconf/pncconf.glade:47302 -#: src/emc/usr_intf/pncconf/pncconf.glade:47322 -#: src/emc/usr_intf/pncconf/pncconf.glade:47342 -#: src/emc/usr_intf/pncconf/pncconf.glade:47362 -#: src/emc/usr_intf/pncconf/pncconf.glade:47382 -#: src/emc/usr_intf/pncconf/pncconf.glade:47402 -#: src/emc/usr_intf/pncconf/pncconf.glade:47422 -#: src/emc/usr_intf/pncconf/pncconf.glade:47442 -#: src/emc/usr_intf/pncconf/pncconf.glade:47462 -#: src/emc/usr_intf/pncconf/pncconf.glade:47482 -#: src/emc/usr_intf/pncconf/pncconf.glade:47502 -#: src/emc/usr_intf/pncconf/pncconf.glade:47522 -#: src/emc/usr_intf/pncconf/pncconf.glade:47542 -#: src/emc/usr_intf/pncconf/pncconf.glade:47562 -#: src/emc/usr_intf/pncconf/pncconf.glade:49478 -#: src/emc/usr_intf/pncconf/pncconf.glade:49701 -#: src/emc/usr_intf/pncconf/pncconf.glade:51630 -#: src/emc/usr_intf/pncconf/pncconf.glade:51650 -#: src/emc/usr_intf/pncconf/pncconf.glade:51670 -#: src/emc/usr_intf/pncconf/pncconf.glade:51690 -#: src/emc/usr_intf/pncconf/pncconf.glade:51710 -#: src/emc/usr_intf/pncconf/pncconf.glade:51730 -#: src/emc/usr_intf/pncconf/pncconf.glade:51750 -#: src/emc/usr_intf/pncconf/pncconf.glade:51770 -#: src/emc/usr_intf/pncconf/pncconf.glade:51790 -#: src/emc/usr_intf/pncconf/pncconf.glade:51810 -#: src/emc/usr_intf/pncconf/pncconf.glade:51830 -#: src/emc/usr_intf/pncconf/pncconf.glade:51850 -#: src/emc/usr_intf/pncconf/pncconf.glade:51870 -#: src/emc/usr_intf/pncconf/pncconf.glade:51890 -#: src/emc/usr_intf/pncconf/pncconf.glade:51910 -#: src/emc/usr_intf/pncconf/pncconf.glade:51930 -#: src/emc/usr_intf/pncconf/pncconf.glade:51950 -#: src/emc/usr_intf/pncconf/pncconf.glade:51970 -#: src/emc/usr_intf/pncconf/pncconf.glade:51990 -#: src/emc/usr_intf/pncconf/pncconf.glade:52010 -#: src/emc/usr_intf/pncconf/pncconf.glade:52030 -#: src/emc/usr_intf/pncconf/pncconf.glade:52050 -#: src/emc/usr_intf/pncconf/pncconf.glade:52070 -#: src/emc/usr_intf/pncconf/pncconf.glade:52379 -#: src/emc/usr_intf/pncconf/pncconf.glade:52399 -#: src/emc/usr_intf/pncconf/pncconf.glade:52419 -#: src/emc/usr_intf/pncconf/pncconf.glade:52439 -#: src/emc/usr_intf/pncconf/pncconf.glade:52459 -#: src/emc/usr_intf/pncconf/pncconf.glade:52479 -#: src/emc/usr_intf/pncconf/pncconf.glade:52499 -#: src/emc/usr_intf/pncconf/pncconf.glade:52519 -#: src/emc/usr_intf/pncconf/pncconf.glade:52539 -#: src/emc/usr_intf/pncconf/pncconf.glade:52559 -#: src/emc/usr_intf/pncconf/pncconf.glade:52579 -#: src/emc/usr_intf/pncconf/pncconf.glade:53809 -msgid "" -"GPIO Input\n" -"GPIO Output\n" -"GPIO O Drain\n" -"Encoder\n" -"PWM\n" -"StepGen\n" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64577 +msgid "Feed Speed Following Error:" +msgstr "故障" -#: src/emc/usr_intf/pncconf/pncconf.glade:9198 -#: src/emc/usr_intf/pncconf/pncconf.glade:13188 -#: src/emc/usr_intf/pncconf/pncconf.glade:15884 -#: src/emc/usr_intf/pncconf/pncconf.glade:18394 -#: src/emc/usr_intf/pncconf/pncconf.glade:20397 -#: src/emc/usr_intf/pncconf/pncconf.glade:21325 -#: src/emc/usr_intf/pncconf/pncconf.glade:23121 -#: src/emc/usr_intf/pncconf/pncconf.glade:24917 -msgid "Launch test panel" -msgstr "啟動測試面板" +#: src/emc/usr_intf/pncconf/pncconf.glade:64591 +msgid "Invert Motor Direction" +msgstr "翻轉電機方向" -#: src/emc/usr_intf/pncconf/pncconf.glade:9213 -#: src/emc/usr_intf/pncconf/pncconf.glade:9225 -#: src/emc/usr_intf/pncconf/pncconf.glade:13162 -#: src/emc/usr_intf/pncconf/pncconf.glade:13174 -#: src/emc/usr_intf/pncconf/pncconf.glade:15858 -#: src/emc/usr_intf/pncconf/pncconf.glade:15870 -#: src/emc/usr_intf/pncconf/pncconf.glade:18367 -#: src/emc/usr_intf/pncconf/pncconf.glade:18379 -#: src/emc/usr_intf/pncconf/pncconf.glade:20370 -#: src/emc/usr_intf/pncconf/pncconf.glade:20382 -#: src/emc/usr_intf/pncconf/pncconf.glade:21339 -#: src/emc/usr_intf/pncconf/pncconf.glade:21351 -#: src/emc/usr_intf/pncconf/pncconf.glade:23135 -#: src/emc/usr_intf/pncconf/pncconf.glade:23147 -#: src/emc/usr_intf/pncconf/pncconf.glade:24931 -#: src/emc/usr_intf/pncconf/pncconf.glade:24943 -#: src/emc/usr_intf/pncconf/pncconf.glade:26815 -#: src/emc/usr_intf/pncconf/pncconf.glade:26827 -#: src/emc/usr_intf/pncconf/pncconf.glade:30826 -#: src/emc/usr_intf/pncconf/pncconf.glade:30838 -#: src/emc/usr_intf/pncconf/pncconf.glade:31831 -#: src/emc/usr_intf/pncconf/pncconf.glade:35184 -#: src/emc/usr_intf/pncconf/pncconf.glade:35196 -#: src/emc/usr_intf/pncconf/pncconf.glade:36312 -#: src/emc/usr_intf/pncconf/pncconf.glade:36324 -#: src/emc/usr_intf/pncconf/pncconf.glade:39755 -#: src/emc/usr_intf/pncconf/pncconf.glade:39767 -#: src/emc/usr_intf/pncconf/pncconf.glade:40659 -#: src/emc/usr_intf/pncconf/pncconf.glade:40671 -#: src/emc/usr_intf/pncconf/pncconf.glade:44670 -#: src/emc/usr_intf/pncconf/pncconf.glade:44682 -#: src/emc/usr_intf/pncconf/pncconf.glade:45676 -#: src/emc/usr_intf/pncconf/pncconf.glade:45688 -#: src/emc/usr_intf/pncconf/pncconf.glade:47582 -#: src/emc/usr_intf/pncconf/pncconf.glade:47594 -#: src/emc/usr_intf/pncconf/pncconf.glade:51593 -#: src/emc/usr_intf/pncconf/pncconf.glade:51605 -#: src/emc/usr_intf/pncconf/pncconf.glade:52599 -#: src/emc/usr_intf/pncconf/pncconf.glade:52611 -msgid "function" -msgstr "功用" +#: src/emc/usr_intf/pncconf/pncconf.glade:64606 +msgid "Invert Encoder Direction " +msgstr "翻轉編碼器方向 " -#: src/emc/usr_intf/pncconf/pncconf.glade:9305 -#: src/emc/usr_intf/pncconf/pncconf.glade:9357 -#: src/emc/usr_intf/pncconf/pncconf.glade:9409 -#: src/emc/usr_intf/pncconf/pncconf.glade:9461 -#: src/emc/usr_intf/pncconf/pncconf.glade:10301 -#: src/emc/usr_intf/pncconf/pncconf.glade:10353 -#: src/emc/usr_intf/pncconf/pncconf.glade:10405 -#: src/emc/usr_intf/pncconf/pncconf.glade:10457 -#: src/emc/usr_intf/pncconf/pncconf.glade:10509 -#: src/emc/usr_intf/pncconf/pncconf.glade:10561 -#: src/emc/usr_intf/pncconf/pncconf.glade:10613 -#: src/emc/usr_intf/pncconf/pncconf.glade:10665 -#: src/emc/usr_intf/pncconf/pncconf.glade:10717 -#: src/emc/usr_intf/pncconf/pncconf.glade:10769 -#: src/emc/usr_intf/pncconf/pncconf.glade:11089 -#: src/emc/usr_intf/pncconf/pncconf.glade:11141 -#: src/emc/usr_intf/pncconf/pncconf.glade:11579 -#: src/emc/usr_intf/pncconf/pncconf.glade:11631 -#: src/emc/usr_intf/pncconf/pncconf.glade:11683 -#: src/emc/usr_intf/pncconf/pncconf.glade:11735 -#: src/emc/usr_intf/pncconf/pncconf.glade:11787 -#: src/emc/usr_intf/pncconf/pncconf.glade:11839 -#: src/emc/usr_intf/pncconf/pncconf.glade:11891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11943 -#: src/emc/usr_intf/pncconf/pncconf.glade:11995 -#: src/emc/usr_intf/pncconf/pncconf.glade:12047 -#: src/emc/usr_intf/pncconf/pncconf.glade:12886 -#: src/emc/usr_intf/pncconf/pncconf.glade:12938 -#: src/emc/usr_intf/pncconf/pncconf.glade:12990 -#: src/emc/usr_intf/pncconf/pncconf.glade:13042 -#: src/emc/usr_intf/pncconf/pncconf.glade:13702 -#: src/emc/usr_intf/pncconf/pncconf.glade:13754 -#: src/emc/usr_intf/pncconf/pncconf.glade:14183 -#: src/emc/usr_intf/pncconf/pncconf.glade:14235 -#: src/emc/usr_intf/pncconf/pncconf.glade:14287 -#: src/emc/usr_intf/pncconf/pncconf.glade:14339 -#: src/emc/usr_intf/pncconf/pncconf.glade:14391 -#: src/emc/usr_intf/pncconf/pncconf.glade:14443 -#: src/emc/usr_intf/pncconf/pncconf.glade:14495 -#: src/emc/usr_intf/pncconf/pncconf.glade:14547 -#: src/emc/usr_intf/pncconf/pncconf.glade:14599 -#: src/emc/usr_intf/pncconf/pncconf.glade:14651 -#: src/emc/usr_intf/pncconf/pncconf.glade:14703 -#: src/emc/usr_intf/pncconf/pncconf.glade:14755 -#: src/emc/usr_intf/pncconf/pncconf.glade:15582 -#: src/emc/usr_intf/pncconf/pncconf.glade:15634 -#: src/emc/usr_intf/pncconf/pncconf.glade:15686 -#: src/emc/usr_intf/pncconf/pncconf.glade:15738 -#: src/emc/usr_intf/pncconf/pncconf.glade:16784 -#: src/emc/usr_intf/pncconf/pncconf.glade:16836 -#: src/emc/usr_intf/pncconf/pncconf.glade:16888 -#: src/emc/usr_intf/pncconf/pncconf.glade:16940 -#: src/emc/usr_intf/pncconf/pncconf.glade:16992 -#: src/emc/usr_intf/pncconf/pncconf.glade:17044 -#: src/emc/usr_intf/pncconf/pncconf.glade:17096 -#: src/emc/usr_intf/pncconf/pncconf.glade:17148 -#: src/emc/usr_intf/pncconf/pncconf.glade:17200 -#: src/emc/usr_intf/pncconf/pncconf.glade:17252 -#: src/emc/usr_intf/pncconf/pncconf.glade:17304 -#: src/emc/usr_intf/pncconf/pncconf.glade:18143 -#: src/emc/usr_intf/pncconf/pncconf.glade:18195 -#: src/emc/usr_intf/pncconf/pncconf.glade:18247 -#: src/emc/usr_intf/pncconf/pncconf.glade:18908 -#: src/emc/usr_intf/pncconf/pncconf.glade:18960 -#: src/emc/usr_intf/pncconf/pncconf.glade:26907 -#: src/emc/usr_intf/pncconf/pncconf.glade:26959 -#: src/emc/usr_intf/pncconf/pncconf.glade:27011 -#: src/emc/usr_intf/pncconf/pncconf.glade:27063 -#: src/emc/usr_intf/pncconf/pncconf.glade:27890 -#: src/emc/usr_intf/pncconf/pncconf.glade:27942 -#: src/emc/usr_intf/pncconf/pncconf.glade:27994 -#: src/emc/usr_intf/pncconf/pncconf.glade:28046 -#: src/emc/usr_intf/pncconf/pncconf.glade:28098 -#: src/emc/usr_intf/pncconf/pncconf.glade:28150 -#: src/emc/usr_intf/pncconf/pncconf.glade:28202 -#: src/emc/usr_intf/pncconf/pncconf.glade:28254 -#: src/emc/usr_intf/pncconf/pncconf.glade:28306 -#: src/emc/usr_intf/pncconf/pncconf.glade:28358 -#: src/emc/usr_intf/pncconf/pncconf.glade:28410 -#: src/emc/usr_intf/pncconf/pncconf.glade:28462 -#: src/emc/usr_intf/pncconf/pncconf.glade:29151 -#: src/emc/usr_intf/pncconf/pncconf.glade:29203 -#: src/emc/usr_intf/pncconf/pncconf.glade:29255 -#: src/emc/usr_intf/pncconf/pncconf.glade:29307 -#: src/emc/usr_intf/pncconf/pncconf.glade:29359 -#: src/emc/usr_intf/pncconf/pncconf.glade:29411 -#: src/emc/usr_intf/pncconf/pncconf.glade:29463 -#: src/emc/usr_intf/pncconf/pncconf.glade:29515 -#: src/emc/usr_intf/pncconf/pncconf.glade:29567 -#: src/emc/usr_intf/pncconf/pncconf.glade:29619 -#: src/emc/usr_intf/pncconf/pncconf.glade:29671 -#: src/emc/usr_intf/pncconf/pncconf.glade:29723 -#: src/emc/usr_intf/pncconf/pncconf.glade:30550 -#: src/emc/usr_intf/pncconf/pncconf.glade:30602 -#: src/emc/usr_intf/pncconf/pncconf.glade:30654 -#: src/emc/usr_intf/pncconf/pncconf.glade:30706 -#: src/emc/usr_intf/pncconf/pncconf.glade:32210 -#: src/emc/usr_intf/pncconf/pncconf.glade:32262 -#: src/emc/usr_intf/pncconf/pncconf.glade:32314 -#: src/emc/usr_intf/pncconf/pncconf.glade:32366 -#: src/emc/usr_intf/pncconf/pncconf.glade:32418 -#: src/emc/usr_intf/pncconf/pncconf.glade:32470 -#: src/emc/usr_intf/pncconf/pncconf.glade:32522 -#: src/emc/usr_intf/pncconf/pncconf.glade:32574 -#: src/emc/usr_intf/pncconf/pncconf.glade:32626 -#: src/emc/usr_intf/pncconf/pncconf.glade:32678 -#: src/emc/usr_intf/pncconf/pncconf.glade:32730 -#: src/emc/usr_intf/pncconf/pncconf.glade:32782 -#: src/emc/usr_intf/pncconf/pncconf.glade:33509 -#: src/emc/usr_intf/pncconf/pncconf.glade:33561 -#: src/emc/usr_intf/pncconf/pncconf.glade:33613 -#: src/emc/usr_intf/pncconf/pncconf.glade:33665 -#: src/emc/usr_intf/pncconf/pncconf.glade:33717 -#: src/emc/usr_intf/pncconf/pncconf.glade:33769 -#: src/emc/usr_intf/pncconf/pncconf.glade:33821 -#: src/emc/usr_intf/pncconf/pncconf.glade:33873 -#: src/emc/usr_intf/pncconf/pncconf.glade:33925 -#: src/emc/usr_intf/pncconf/pncconf.glade:33977 -#: src/emc/usr_intf/pncconf/pncconf.glade:34029 -#: src/emc/usr_intf/pncconf/pncconf.glade:34081 -#: src/emc/usr_intf/pncconf/pncconf.glade:34908 -#: src/emc/usr_intf/pncconf/pncconf.glade:34960 -#: src/emc/usr_intf/pncconf/pncconf.glade:35012 -#: src/emc/usr_intf/pncconf/pncconf.glade:35064 -#: src/emc/usr_intf/pncconf/pncconf.glade:36404 -#: src/emc/usr_intf/pncconf/pncconf.glade:36456 -#: src/emc/usr_intf/pncconf/pncconf.glade:36508 -#: src/emc/usr_intf/pncconf/pncconf.glade:36560 -#: src/emc/usr_intf/pncconf/pncconf.glade:37387 -#: src/emc/usr_intf/pncconf/pncconf.glade:37439 -#: src/emc/usr_intf/pncconf/pncconf.glade:37491 -#: src/emc/usr_intf/pncconf/pncconf.glade:37543 -#: src/emc/usr_intf/pncconf/pncconf.glade:37595 -#: src/emc/usr_intf/pncconf/pncconf.glade:37647 -#: src/emc/usr_intf/pncconf/pncconf.glade:37699 -#: src/emc/usr_intf/pncconf/pncconf.glade:37751 -#: src/emc/usr_intf/pncconf/pncconf.glade:37803 -#: src/emc/usr_intf/pncconf/pncconf.glade:37855 -#: src/emc/usr_intf/pncconf/pncconf.glade:37907 -#: src/emc/usr_intf/pncconf/pncconf.glade:37959 -#: src/emc/usr_intf/pncconf/pncconf.glade:38764 -#: src/emc/usr_intf/pncconf/pncconf.glade:38816 -#: src/emc/usr_intf/pncconf/pncconf.glade:38868 -#: src/emc/usr_intf/pncconf/pncconf.glade:38920 -#: src/emc/usr_intf/pncconf/pncconf.glade:38972 -#: src/emc/usr_intf/pncconf/pncconf.glade:39024 -#: src/emc/usr_intf/pncconf/pncconf.glade:39076 -#: src/emc/usr_intf/pncconf/pncconf.glade:39128 -#: src/emc/usr_intf/pncconf/pncconf.glade:39180 -#: src/emc/usr_intf/pncconf/pncconf.glade:39232 -#: src/emc/usr_intf/pncconf/pncconf.glade:39284 -#: src/emc/usr_intf/pncconf/pncconf.glade:39336 -#: src/emc/usr_intf/pncconf/pncconf.glade:40751 -#: src/emc/usr_intf/pncconf/pncconf.glade:40803 -#: src/emc/usr_intf/pncconf/pncconf.glade:40855 -#: src/emc/usr_intf/pncconf/pncconf.glade:40907 -#: src/emc/usr_intf/pncconf/pncconf.glade:41734 -#: src/emc/usr_intf/pncconf/pncconf.glade:41786 -#: src/emc/usr_intf/pncconf/pncconf.glade:41838 -#: src/emc/usr_intf/pncconf/pncconf.glade:41890 -#: src/emc/usr_intf/pncconf/pncconf.glade:41942 -#: src/emc/usr_intf/pncconf/pncconf.glade:41994 -#: src/emc/usr_intf/pncconf/pncconf.glade:42046 -#: src/emc/usr_intf/pncconf/pncconf.glade:42098 -#: src/emc/usr_intf/pncconf/pncconf.glade:42150 -#: src/emc/usr_intf/pncconf/pncconf.glade:42202 -#: src/emc/usr_intf/pncconf/pncconf.glade:42254 -#: src/emc/usr_intf/pncconf/pncconf.glade:42306 -#: src/emc/usr_intf/pncconf/pncconf.glade:42995 -#: src/emc/usr_intf/pncconf/pncconf.glade:43047 -#: src/emc/usr_intf/pncconf/pncconf.glade:43099 -#: src/emc/usr_intf/pncconf/pncconf.glade:43151 -#: src/emc/usr_intf/pncconf/pncconf.glade:43203 -#: src/emc/usr_intf/pncconf/pncconf.glade:43255 -#: src/emc/usr_intf/pncconf/pncconf.glade:43307 -#: src/emc/usr_intf/pncconf/pncconf.glade:43359 -#: src/emc/usr_intf/pncconf/pncconf.glade:43411 -#: src/emc/usr_intf/pncconf/pncconf.glade:43463 -#: src/emc/usr_intf/pncconf/pncconf.glade:43515 -#: src/emc/usr_intf/pncconf/pncconf.glade:43567 -#: src/emc/usr_intf/pncconf/pncconf.glade:44394 -#: src/emc/usr_intf/pncconf/pncconf.glade:44446 -#: src/emc/usr_intf/pncconf/pncconf.glade:44498 -#: src/emc/usr_intf/pncconf/pncconf.glade:44550 -#: src/emc/usr_intf/pncconf/pncconf.glade:46067 -#: src/emc/usr_intf/pncconf/pncconf.glade:46119 -#: src/emc/usr_intf/pncconf/pncconf.glade:46171 -#: src/emc/usr_intf/pncconf/pncconf.glade:46223 -#: src/emc/usr_intf/pncconf/pncconf.glade:46275 -#: src/emc/usr_intf/pncconf/pncconf.glade:46327 -#: src/emc/usr_intf/pncconf/pncconf.glade:46379 -#: src/emc/usr_intf/pncconf/pncconf.glade:46431 -#: src/emc/usr_intf/pncconf/pncconf.glade:46483 -#: src/emc/usr_intf/pncconf/pncconf.glade:46535 -#: src/emc/usr_intf/pncconf/pncconf.glade:46587 -#: src/emc/usr_intf/pncconf/pncconf.glade:46639 -#: src/emc/usr_intf/pncconf/pncconf.glade:47674 -#: src/emc/usr_intf/pncconf/pncconf.glade:47726 -#: src/emc/usr_intf/pncconf/pncconf.glade:47778 -#: src/emc/usr_intf/pncconf/pncconf.glade:47830 -#: src/emc/usr_intf/pncconf/pncconf.glade:48657 -#: src/emc/usr_intf/pncconf/pncconf.glade:48709 -#: src/emc/usr_intf/pncconf/pncconf.glade:48761 -#: src/emc/usr_intf/pncconf/pncconf.glade:48813 -#: src/emc/usr_intf/pncconf/pncconf.glade:48865 -#: src/emc/usr_intf/pncconf/pncconf.glade:48917 -#: src/emc/usr_intf/pncconf/pncconf.glade:48969 -#: src/emc/usr_intf/pncconf/pncconf.glade:49021 -#: src/emc/usr_intf/pncconf/pncconf.glade:49073 -#: src/emc/usr_intf/pncconf/pncconf.glade:49125 -#: src/emc/usr_intf/pncconf/pncconf.glade:49177 -#: src/emc/usr_intf/pncconf/pncconf.glade:49229 -#: src/emc/usr_intf/pncconf/pncconf.glade:49918 -#: src/emc/usr_intf/pncconf/pncconf.glade:49970 -#: src/emc/usr_intf/pncconf/pncconf.glade:50022 -#: src/emc/usr_intf/pncconf/pncconf.glade:50074 -#: src/emc/usr_intf/pncconf/pncconf.glade:50126 -#: src/emc/usr_intf/pncconf/pncconf.glade:50178 -#: src/emc/usr_intf/pncconf/pncconf.glade:50230 -#: src/emc/usr_intf/pncconf/pncconf.glade:50282 -#: src/emc/usr_intf/pncconf/pncconf.glade:50334 -#: src/emc/usr_intf/pncconf/pncconf.glade:50386 -#: src/emc/usr_intf/pncconf/pncconf.glade:50438 -#: src/emc/usr_intf/pncconf/pncconf.glade:50490 -#: src/emc/usr_intf/pncconf/pncconf.glade:51317 -#: src/emc/usr_intf/pncconf/pncconf.glade:51369 -#: src/emc/usr_intf/pncconf/pncconf.glade:51421 -#: src/emc/usr_intf/pncconf/pncconf.glade:51473 -#: src/emc/usr_intf/pncconf/pncconf.glade:52990 -#: src/emc/usr_intf/pncconf/pncconf.glade:53042 -#: src/emc/usr_intf/pncconf/pncconf.glade:53094 -#: src/emc/usr_intf/pncconf/pncconf.glade:53146 -#: src/emc/usr_intf/pncconf/pncconf.glade:53198 -#: src/emc/usr_intf/pncconf/pncconf.glade:53250 -#: src/emc/usr_intf/pncconf/pncconf.glade:53302 -#: src/emc/usr_intf/pncconf/pncconf.glade:53354 -#: src/emc/usr_intf/pncconf/pncconf.glade:53406 -#: src/emc/usr_intf/pncconf/pncconf.glade:53458 -#: src/emc/usr_intf/pncconf/pncconf.glade:53510 -#: src/emc/usr_intf/pncconf/pncconf.glade:53562 -msgid "" -"ESTOP IN\n" -"Spindle PPR\n" -"Spindle A \n" -"Spindle B \n" -"Home X \n" -"Home Y \n" -"Home Z\n" -"Home A\n" -"Minimum Limit + Home X \n" -"Minimum Limit + Home Y \n" -"Minimum Limit + Home Z \n" -"Minimum Limit + Home A\n" -"Maximum Limit + Home X \n" -"Maximum Limit + Home Y \n" -"Maximum Limit + Home Z \n" -"Maximum Limit + Home A\n" -"Both Limit + Home X \n" -"Both Limit + Home Y \n" -"Both Limit + Home Z \n" -"Both Limit + Home A\n" -"Minimum Limit X \n" -"Minimum Limit Y \n" -"Minimum Limit Z \n" -"Minimum Limit A\n" -"Maximum Limit X \n" -"Maximum Limit Y \n" -"Maximum Limit Z \n" -"Maximum Limit A\n" -"Both Limit X \n" -"Both Limit Y \n" -"Both Limit Z \n" -"Both Limit A\n" -"All limits\n" -"All home\n" -"Unused" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64661 +#, fuzzy +msgid "Single Input Encoder" +msgstr "反轉 編碼器" -#: src/emc/usr_intf/pncconf/pncconf.glade:9515 -#: src/emc/usr_intf/pncconf/pncconf.glade:12871 -#: src/emc/usr_intf/pncconf/pncconf.glade:18128 -#: src/emc/usr_intf/pncconf/pncconf.glade:20233 -#: src/emc/usr_intf/pncconf/pncconf.glade:21486 -#: src/emc/usr_intf/pncconf/pncconf.glade:23282 -#: src/emc/usr_intf/pncconf/pncconf.glade:25078 -msgid "31:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64776 +msgid "encoder Scale:" +msgstr "編碼器比例" -#: src/emc/usr_intf/pncconf/pncconf.glade:9531 -#: src/emc/usr_intf/pncconf/pncconf.glade:12855 -#: src/emc/usr_intf/pncconf/pncconf.glade:18112 -#: src/emc/usr_intf/pncconf/pncconf.glade:20217 -#: src/emc/usr_intf/pncconf/pncconf.glade:21502 -#: src/emc/usr_intf/pncconf/pncconf.glade:23298 -#: src/emc/usr_intf/pncconf/pncconf.glade:25094 -msgid "29:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64801 +msgid "Stepper Scale:" +msgstr "步進比例:" -#: src/emc/usr_intf/pncconf/pncconf.glade:9547 -#: src/emc/usr_intf/pncconf/pncconf.glade:12839 -#: src/emc/usr_intf/pncconf/pncconf.glade:18096 -#: src/emc/usr_intf/pncconf/pncconf.glade:20201 -#: src/emc/usr_intf/pncconf/pncconf.glade:21518 -#: src/emc/usr_intf/pncconf/pncconf.glade:23314 -#: src/emc/usr_intf/pncconf/pncconf.glade:25110 -msgid "27:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64831 +msgid "" +"Calculate\n" +"Scale" msgstr "" +"計算\n" +"比例" -#: src/emc/usr_intf/pncconf/pncconf.glade:9563 -#: src/emc/usr_intf/pncconf/pncconf.glade:12823 -#: src/emc/usr_intf/pncconf/pncconf.glade:18080 -#: src/emc/usr_intf/pncconf/pncconf.glade:20185 -#: src/emc/usr_intf/pncconf/pncconf.glade:21534 -#: src/emc/usr_intf/pncconf/pncconf.glade:23330 -#: src/emc/usr_intf/pncconf/pncconf.glade:25126 -msgid "25:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:64901 +msgid "Test / Tune Axis" +msgstr "測試 / 調整軸" -#: src/emc/usr_intf/pncconf/pncconf.glade:9936 -#: src/emc/usr_intf/pncconf/pncconf.glade:12450 -#: src/emc/usr_intf/pncconf/pncconf.glade:17707 -#: src/emc/usr_intf/pncconf/pncconf.glade:19924 -#: src/emc/usr_intf/pncconf/pncconf.glade:21795 -#: src/emc/usr_intf/pncconf/pncconf.glade:23591 -#: src/emc/usr_intf/pncconf/pncconf.glade:25387 -msgid "33:" +#: src/emc/usr_intf/pncconf/pncconf.glade:64943 +msgid "X Axis Configuration" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9952 -#: src/emc/usr_intf/pncconf/pncconf.glade:12434 -#: src/emc/usr_intf/pncconf/pncconf.glade:17691 -#: src/emc/usr_intf/pncconf/pncconf.glade:19908 -#: src/emc/usr_intf/pncconf/pncconf.glade:21811 -#: src/emc/usr_intf/pncconf/pncconf.glade:23607 -#: src/emc/usr_intf/pncconf/pncconf.glade:25403 -msgid "35:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65155 +msgid "" +"NO\n" +"YES" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:9968 -#: src/emc/usr_intf/pncconf/pncconf.glade:12418 -#: src/emc/usr_intf/pncconf/pncconf.glade:17675 -#: src/emc/usr_intf/pncconf/pncconf.glade:19892 -#: src/emc/usr_intf/pncconf/pncconf.glade:21827 -#: src/emc/usr_intf/pncconf/pncconf.glade:23623 -#: src/emc/usr_intf/pncconf/pncconf.glade:25419 -msgid "37:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65171 +msgid "Use Encoder Index For Home:" +msgstr "使用編碼器指標為零點:" -#: src/emc/usr_intf/pncconf/pncconf.glade:9984 -#: src/emc/usr_intf/pncconf/pncconf.glade:12402 -#: src/emc/usr_intf/pncconf/pncconf.glade:17659 -#: src/emc/usr_intf/pncconf/pncconf.glade:19876 -#: src/emc/usr_intf/pncconf/pncconf.glade:21843 -#: src/emc/usr_intf/pncconf/pncconf.glade:23639 -#: src/emc/usr_intf/pncconf/pncconf.glade:25435 -msgid "39:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65212 +msgid "Home Final Velocity:" +msgstr "歸零最終速度" -#: src/emc/usr_intf/pncconf/pncconf.glade:10000 -#: src/emc/usr_intf/pncconf/pncconf.glade:12386 -#: src/emc/usr_intf/pncconf/pncconf.glade:17643 -#: src/emc/usr_intf/pncconf/pncconf.glade:19860 -#: src/emc/usr_intf/pncconf/pncconf.glade:21859 -#: src/emc/usr_intf/pncconf/pncconf.glade:23655 -#: src/emc/usr_intf/pncconf/pncconf.glade:25451 -msgid "41:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65222 +msgid "" +"Same\n" +"Opposite" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10016 -#: src/emc/usr_intf/pncconf/pncconf.glade:12370 -#: src/emc/usr_intf/pncconf/pncconf.glade:17627 -#: src/emc/usr_intf/pncconf/pncconf.glade:19844 -#: src/emc/usr_intf/pncconf/pncconf.glade:21875 -#: src/emc/usr_intf/pncconf/pncconf.glade:23671 -#: src/emc/usr_intf/pncconf/pncconf.glade:25467 -msgid "43:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65238 +msgid "Home Latch Direction:" +msgstr "歸零閉鎖方向:" -#: src/emc/usr_intf/pncconf/pncconf.glade:10032 -#: src/emc/usr_intf/pncconf/pncconf.glade:12354 -#: src/emc/usr_intf/pncconf/pncconf.glade:17611 -#: src/emc/usr_intf/pncconf/pncconf.glade:19828 -#: src/emc/usr_intf/pncconf/pncconf.glade:21891 -#: src/emc/usr_intf/pncconf/pncconf.glade:23687 -#: src/emc/usr_intf/pncconf/pncconf.glade:25483 -msgid "45:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65251 +msgid "" +"Towards Negative limit\n" +"Towards Positive limit" msgstr "" +"朝向負極限\n" +"朝向正極限" -#: src/emc/usr_intf/pncconf/pncconf.glade:10099 -#: src/emc/usr_intf/pncconf/pncconf.glade:12287 -#: src/emc/usr_intf/pncconf/pncconf.glade:17544 -#: src/emc/usr_intf/pncconf/pncconf.glade:19777 -#: src/emc/usr_intf/pncconf/pncconf.glade:21942 -#: src/emc/usr_intf/pncconf/pncconf.glade:23738 -#: src/emc/usr_intf/pncconf/pncconf.glade:25534 -msgid "47:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65267 +msgid "Home Search Direction:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10822 -#: src/emc/usr_intf/pncconf/pncconf.glade:11077 -#: src/emc/usr_intf/pncconf/pncconf.glade:11311 -#: src/emc/usr_intf/pncconf/pncconf.glade:11567 -#: src/emc/usr_intf/pncconf/pncconf.glade:13924 -#: src/emc/usr_intf/pncconf/pncconf.glade:14171 -#: src/emc/usr_intf/pncconf/pncconf.glade:16516 -#: src/emc/usr_intf/pncconf/pncconf.glade:16772 -#: src/emc/usr_intf/pncconf/pncconf.glade:19129 -#: src/emc/usr_intf/pncconf/pncconf.glade:19379 -#: src/emc/usr_intf/pncconf/pncconf.glade:22343 -#: src/emc/usr_intf/pncconf/pncconf.glade:22592 -#: src/emc/usr_intf/pncconf/pncconf.glade:24139 -#: src/emc/usr_intf/pncconf/pncconf.glade:24388 -#: src/emc/usr_intf/pncconf/pncconf.glade:25935 -#: src/emc/usr_intf/pncconf/pncconf.glade:26184 -#: src/emc/usr_intf/pncconf/pncconf.glade:28515 -#: src/emc/usr_intf/pncconf/pncconf.glade:28761 -#: src/emc/usr_intf/pncconf/pncconf.glade:28892 -#: src/emc/usr_intf/pncconf/pncconf.glade:29139 -#: src/emc/usr_intf/pncconf/pncconf.glade:33079 -#: src/emc/usr_intf/pncconf/pncconf.glade:33250 -#: src/emc/usr_intf/pncconf/pncconf.glade:33497 -#: src/emc/usr_intf/pncconf/pncconf.glade:38012 -#: src/emc/usr_intf/pncconf/pncconf.glade:38258 -#: src/emc/usr_intf/pncconf/pncconf.glade:38507 -#: src/emc/usr_intf/pncconf/pncconf.glade:42359 -#: src/emc/usr_intf/pncconf/pncconf.glade:42605 -#: src/emc/usr_intf/pncconf/pncconf.glade:42736 -#: src/emc/usr_intf/pncconf/pncconf.glade:42983 -#: src/emc/usr_intf/pncconf/pncconf.glade:46936 -#: src/emc/usr_intf/pncconf/pncconf.glade:49282 -#: src/emc/usr_intf/pncconf/pncconf.glade:49528 -#: src/emc/usr_intf/pncconf/pncconf.glade:49659 -#: src/emc/usr_intf/pncconf/pncconf.glade:49906 -#: src/emc/usr_intf/pncconf/pncconf.glade:53859 -msgid "Pin Type" -msgstr "接腳類型" +#: src/emc/usr_intf/pncconf/pncconf.glade:65309 +msgid "Home latch Velocity:" +msgstr "零點鎖定速率:" -#: src/emc/usr_intf/pncconf/pncconf.glade:10835 -#: src/emc/usr_intf/pncconf/pncconf.glade:11553 -#: src/emc/usr_intf/pncconf/pncconf.glade:16758 -#: src/emc/usr_intf/pncconf/pncconf.glade:19365 -#: src/emc/usr_intf/pncconf/pncconf.glade:22356 -#: src/emc/usr_intf/pncconf/pncconf.glade:24152 -#: src/emc/usr_intf/pncconf/pncconf.glade:25948 -msgid "23:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65334 +msgid "filename:" +msgstr "文件名:" -#: src/emc/usr_intf/pncconf/pncconf.glade:10849 -#: src/emc/usr_intf/pncconf/pncconf.glade:11539 -#: src/emc/usr_intf/pncconf/pncconf.glade:16744 -#: src/emc/usr_intf/pncconf/pncconf.glade:19351 -#: src/emc/usr_intf/pncconf/pncconf.glade:22370 -#: src/emc/usr_intf/pncconf/pncconf.glade:24166 -#: src/emc/usr_intf/pncconf/pncconf.glade:25962 -msgid "21:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65347 +msgid "" +"Type 1\n" +"Type 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10863 -#: src/emc/usr_intf/pncconf/pncconf.glade:11525 -#: src/emc/usr_intf/pncconf/pncconf.glade:16730 -#: src/emc/usr_intf/pncconf/pncconf.glade:19337 -#: src/emc/usr_intf/pncconf/pncconf.glade:22384 -#: src/emc/usr_intf/pncconf/pncconf.glade:24180 -#: src/emc/usr_intf/pncconf/pncconf.glade:25976 -msgid "19:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65392 +msgid "Use Compensation File:" +msgstr "使用補償文件:" -#: src/emc/usr_intf/pncconf/pncconf.glade:10877 -#: src/emc/usr_intf/pncconf/pncconf.glade:11511 -#: src/emc/usr_intf/pncconf/pncconf.glade:16716 -#: src/emc/usr_intf/pncconf/pncconf.glade:19323 -#: src/emc/usr_intf/pncconf/pncconf.glade:22398 -#: src/emc/usr_intf/pncconf/pncconf.glade:24194 -#: src/emc/usr_intf/pncconf/pncconf.glade:25990 -msgid "17:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65406 +msgid "Use Backlash Compensation:" +msgstr "使用反向間隙補償:" -#: src/emc/usr_intf/pncconf/pncconf.glade:10891 -#: src/emc/usr_intf/pncconf/pncconf.glade:11497 -#: src/emc/usr_intf/pncconf/pncconf.glade:16702 -#: src/emc/usr_intf/pncconf/pncconf.glade:19309 -#: src/emc/usr_intf/pncconf/pncconf.glade:22412 -#: src/emc/usr_intf/pncconf/pncconf.glade:24208 -#: src/emc/usr_intf/pncconf/pncconf.glade:26004 -msgid "15:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65433 +msgid "Home Position location (offset from machine zero Origin):" +msgstr "零點定位 (從機床零點的偏移):" -#: src/emc/usr_intf/pncconf/pncconf.glade:10905 -#: src/emc/usr_intf/pncconf/pncconf.glade:11483 -#: src/emc/usr_intf/pncconf/pncconf.glade:16688 -#: src/emc/usr_intf/pncconf/pncconf.glade:19295 -#: src/emc/usr_intf/pncconf/pncconf.glade:22426 -#: src/emc/usr_intf/pncconf/pncconf.glade:24222 -#: src/emc/usr_intf/pncconf/pncconf.glade:26018 -msgid "13:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65449 +msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " +msgstr "負移動距離 (機床 零點到 負 行程尾): " -#: src/emc/usr_intf/pncconf/pncconf.glade:10919 -#: src/emc/usr_intf/pncconf/pncconf.glade:11469 -#: src/emc/usr_intf/pncconf/pncconf.glade:16674 -#: src/emc/usr_intf/pncconf/pncconf.glade:19281 -#: src/emc/usr_intf/pncconf/pncconf.glade:22440 -#: src/emc/usr_intf/pncconf/pncconf.glade:24236 -#: src/emc/usr_intf/pncconf/pncconf.glade:26032 -msgid "11:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65493 +msgid "Home Switch location (Offset from machine zero Origin):" +msgstr "歸零開關的位置 (從機床零點的偏移):" -#: src/emc/usr_intf/pncconf/pncconf.glade:10933 -#: src/emc/usr_intf/pncconf/pncconf.glade:11455 -#: src/emc/usr_intf/pncconf/pncconf.glade:16660 -#: src/emc/usr_intf/pncconf/pncconf.glade:19267 -#: src/emc/usr_intf/pncconf/pncconf.glade:22454 -#: src/emc/usr_intf/pncconf/pncconf.glade:24250 -#: src/emc/usr_intf/pncconf/pncconf.glade:26046 -msgid " 9:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65509 +msgid "Home Search Velocity:" +msgstr "零點搜索速率:" -#: src/emc/usr_intf/pncconf/pncconf.glade:10947 -#: src/emc/usr_intf/pncconf/pncconf.glade:11441 -#: src/emc/usr_intf/pncconf/pncconf.glade:16646 -#: src/emc/usr_intf/pncconf/pncconf.glade:19253 -#: src/emc/usr_intf/pncconf/pncconf.glade:22468 -#: src/emc/usr_intf/pncconf/pncconf.glade:24264 -#: src/emc/usr_intf/pncconf/pncconf.glade:26060 -msgid " 7:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65524 +msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " +msgstr "正移動距離 (機床 零點到 正 行程尾): " -#: src/emc/usr_intf/pncconf/pncconf.glade:10961 -#: src/emc/usr_intf/pncconf/pncconf.glade:11427 -#: src/emc/usr_intf/pncconf/pncconf.glade:16632 -#: src/emc/usr_intf/pncconf/pncconf.glade:19239 -#: src/emc/usr_intf/pncconf/pncconf.glade:22482 -#: src/emc/usr_intf/pncconf/pncconf.glade:24278 -#: src/emc/usr_intf/pncconf/pncconf.glade:26074 -msgid " 5:" -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Advanced Options" +msgstr "進階選項" -#: src/emc/usr_intf/pncconf/pncconf.glade:10975 -#: src/emc/usr_intf/pncconf/pncconf.glade:11413 -#: src/emc/usr_intf/pncconf/pncconf.glade:16618 -#: src/emc/usr_intf/pncconf/pncconf.glade:19225 -#: src/emc/usr_intf/pncconf/pncconf.glade:22496 -#: src/emc/usr_intf/pncconf/pncconf.glade:24292 -#: src/emc/usr_intf/pncconf/pncconf.glade:26088 -msgid " 3:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 15" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:10989 -#: src/emc/usr_intf/pncconf/pncconf.glade:11399 -#: src/emc/usr_intf/pncconf/pncconf.glade:16604 -#: src/emc/usr_intf/pncconf/pncconf.glade:19211 -#: src/emc/usr_intf/pncconf/pncconf.glade:22510 -#: src/emc/usr_intf/pncconf/pncconf.glade:24306 -#: src/emc/usr_intf/pncconf/pncconf.glade:26102 -msgid " 1:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 14" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:11002 -#: src/emc/usr_intf/pncconf/pncconf.glade:11065 -#: src/emc/usr_intf/pncconf/pncconf.glade:11324 -#: src/emc/usr_intf/pncconf/pncconf.glade:11386 -#: src/emc/usr_intf/pncconf/pncconf.glade:13937 -#: src/emc/usr_intf/pncconf/pncconf.glade:13999 -#: src/emc/usr_intf/pncconf/pncconf.glade:16529 -#: src/emc/usr_intf/pncconf/pncconf.glade:16591 -#: src/emc/usr_intf/pncconf/pncconf.glade:19142 -#: src/emc/usr_intf/pncconf/pncconf.glade:19198 -#: src/emc/usr_intf/pncconf/pncconf.glade:22523 -#: src/emc/usr_intf/pncconf/pncconf.glade:22580 -#: src/emc/usr_intf/pncconf/pncconf.glade:24319 -#: src/emc/usr_intf/pncconf/pncconf.glade:24376 -#: src/emc/usr_intf/pncconf/pncconf.glade:26115 -#: src/emc/usr_intf/pncconf/pncconf.glade:26172 -#: src/emc/usr_intf/pncconf/pncconf.glade:28686 -#: src/emc/usr_intf/pncconf/pncconf.glade:28749 -#: src/emc/usr_intf/pncconf/pncconf.glade:28905 -#: src/emc/usr_intf/pncconf/pncconf.glade:28967 -#: src/emc/usr_intf/pncconf/pncconf.glade:33067 -#: src/emc/usr_intf/pncconf/pncconf.glade:33263 -#: src/emc/usr_intf/pncconf/pncconf.glade:33325 -#: src/emc/usr_intf/pncconf/pncconf.glade:38183 -#: src/emc/usr_intf/pncconf/pncconf.glade:38246 -#: src/emc/usr_intf/pncconf/pncconf.glade:38520 -#: src/emc/usr_intf/pncconf/pncconf.glade:42530 -#: src/emc/usr_intf/pncconf/pncconf.glade:42593 -#: src/emc/usr_intf/pncconf/pncconf.glade:42749 -#: src/emc/usr_intf/pncconf/pncconf.glade:42811 -#: src/emc/usr_intf/pncconf/pncconf.glade:46924 -#: src/emc/usr_intf/pncconf/pncconf.glade:49453 -#: src/emc/usr_intf/pncconf/pncconf.glade:49516 -#: src/emc/usr_intf/pncconf/pncconf.glade:49672 -#: src/emc/usr_intf/pncconf/pncconf.glade:49734 -#: src/emc/usr_intf/pncconf/pncconf.glade:53847 -msgid "Inv" -msgstr "反轉" - -#: src/emc/usr_intf/pncconf/pncconf.glade:11198 -msgid "" -" I/O\n" -"Connector 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 13" msgstr "" - -#: src/emc/usr_intf/pncconf/pncconf.glade:13811 -msgid "" -" I/O\n" -" Connector 3" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 12" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:14012 -#: src/emc/usr_intf/pncconf/pncconf.glade:14039 -#: src/emc/usr_intf/pncconf/pncconf.glade:14053 -#: src/emc/usr_intf/pncconf/pncconf.glade:28632 -#: src/emc/usr_intf/pncconf/pncconf.glade:28646 -#: src/emc/usr_intf/pncconf/pncconf.glade:28673 -#: src/emc/usr_intf/pncconf/pncconf.glade:28980 -#: src/emc/usr_intf/pncconf/pncconf.glade:29007 -#: src/emc/usr_intf/pncconf/pncconf.glade:29021 -#: src/emc/usr_intf/pncconf/pncconf.glade:32951 -#: src/emc/usr_intf/pncconf/pncconf.glade:32965 -#: src/emc/usr_intf/pncconf/pncconf.glade:32992 -#: src/emc/usr_intf/pncconf/pncconf.glade:33338 -#: src/emc/usr_intf/pncconf/pncconf.glade:33365 -#: src/emc/usr_intf/pncconf/pncconf.glade:33379 -#: src/emc/usr_intf/pncconf/pncconf.glade:38129 -#: src/emc/usr_intf/pncconf/pncconf.glade:38143 -#: src/emc/usr_intf/pncconf/pncconf.glade:38170 -#: src/emc/usr_intf/pncconf/pncconf.glade:38594 -#: src/emc/usr_intf/pncconf/pncconf.glade:38621 -#: src/emc/usr_intf/pncconf/pncconf.glade:38635 -#: src/emc/usr_intf/pncconf/pncconf.glade:42476 -#: src/emc/usr_intf/pncconf/pncconf.glade:42490 -#: src/emc/usr_intf/pncconf/pncconf.glade:42517 -#: src/emc/usr_intf/pncconf/pncconf.glade:42824 -#: src/emc/usr_intf/pncconf/pncconf.glade:42851 -#: src/emc/usr_intf/pncconf/pncconf.glade:42865 -#: src/emc/usr_intf/pncconf/pncconf.glade:46808 -#: src/emc/usr_intf/pncconf/pncconf.glade:46822 -#: src/emc/usr_intf/pncconf/pncconf.glade:46849 -#: src/emc/usr_intf/pncconf/pncconf.glade:49399 -#: src/emc/usr_intf/pncconf/pncconf.glade:49413 -#: src/emc/usr_intf/pncconf/pncconf.glade:49440 -#: src/emc/usr_intf/pncconf/pncconf.glade:49747 -#: src/emc/usr_intf/pncconf/pncconf.glade:49774 -#: src/emc/usr_intf/pncconf/pncconf.glade:49788 -#: src/emc/usr_intf/pncconf/pncconf.glade:53731 -#: src/emc/usr_intf/pncconf/pncconf.glade:53745 -#: src/emc/usr_intf/pncconf/pncconf.glade:53772 -msgid " " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 11" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:16403 -msgid "" -" I/O\n" -" Connector 4" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 10" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:19017 -msgid "" -" I/O\n" -" Connector 5" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 9" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:20813 -msgid "" -" I/O\n" -"Connector 6" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 8" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:22609 -msgid "" -" I/O\n" -"Connector 7" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 7" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:24405 -msgid "" -" I/O\n" -"Connector 8" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 6" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:26201 -msgid "" -" I/O\n" -" Connector 9" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 5" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:28775 -#: src/emc/usr_intf/pncconf/pncconf.glade:35696 -#: src/emc/usr_intf/pncconf/pncconf.glade:42619 -#: src/emc/usr_intf/pncconf/pncconf.glade:49542 -msgid "page 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 4" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:31354 -#: src/emc/usr_intf/pncconf/pncconf.glade:38275 -#: src/emc/usr_intf/pncconf/pncconf.glade:45198 -#: src/emc/usr_intf/pncconf/pncconf.glade:52121 -msgid "page 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 3" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:33107 -#: src/emc/usr_intf/pncconf/pncconf.glade:40030 -#: src/emc/usr_intf/pncconf/pncconf.glade:46953 -#: src/emc/usr_intf/pncconf/pncconf.glade:53876 -msgid "page 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 2" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:33123 -msgid "Smart Serial 0" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Cmd 1" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:40046 -msgid "Smart Serial 1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Include Halui user interface component / commands" +msgstr "包括Halui使用者界面組件/命令" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Number of digital (bit) in pins:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:46969 -msgid "Smart Serial 2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Number of digital (bit) out pins:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53892 -msgid "Smart Serial 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid " Number of Internal bit memory:" +msgstr "腳的 總數:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " Number of Internal word memory:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:53914 -msgid "First Parallel Port Setup" -msgstr "第一並行端口設置" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Setup number of external pins" +msgstr "腳的 總數:" -#: src/emc/usr_intf/pncconf/pncconf.glade:53998 -msgid "Outputs (PC to Machine):" -msgstr "输出 (PC 至 机器):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Z Auto Touch off program" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:54552 -msgid "Inputs (Machine to PC):" -msgstr "输入 (机器 至 PC):" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "HAL Component Page" +msgstr "HAL組件頁" -#: src/emc/usr_intf/pncconf/pncconf.glade:55977 -msgid "Launch Test Panel" -msgstr "啟動 測試 面板" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Add HAL components with this page." +msgstr "添加HAL組件在此頁" -#: src/emc/usr_intf/pncconf/pncconf.glade:56003 -msgid "X Axis Motor/Encoder Configuration" -msgstr "X 轴 馬達/編碼器 配置" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Component" +msgstr "組件" -#: src/emc/usr_intf/pncconf/pncconf.glade:56091 -msgid "D" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "number of components" +msgstr "組件數目" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "PID" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56104 -msgid "I" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "scale" +msgstr "比例" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mux16" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56117 -msgid "P" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "lowpass" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56128 -#: src/emc/usr_intf/pncconf/pncconf.glade:60917 -#: src/emc/usr_intf/pncconf/pncconf.glade:62202 -#: src/emc/usr_intf/pncconf/pncconf.glade:63103 -#: src/emc/usr_intf/pncconf/pncconf.glade:64388 -#: src/emc/usr_intf/pncconf/pncconf.glade:65265 -msgid "Bias" -msgstr "偏壓" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Base Thread" +msgstr "基本線程" -#: src/emc/usr_intf/pncconf/pncconf.glade:56141 -msgid "Deadband" -msgstr "死區" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Servo Thread" +msgstr "伺服線程" -#: src/emc/usr_intf/pncconf/pncconf.glade:56188 -#: src/emc/usr_intf/pncconf/pncconf.glade:61128 -#: src/emc/usr_intf/pncconf/pncconf.glade:61991 -#: src/emc/usr_intf/pncconf/pncconf.glade:63314 -#: src/emc/usr_intf/pncconf/pncconf.glade:64177 -#: src/emc/usr_intf/pncconf/pncconf.glade:65470 -msgid "FF0" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Load Command " +msgstr "加載指令" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Thread Speed" +msgstr "線程速度" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Thread Command" +msgstr "線程指令" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Custom Components Commands" +msgstr "自定義組件的命令" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Machine configuration complete" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56201 -#: src/emc/usr_intf/pncconf/pncconf.glade:61118 -#: src/emc/usr_intf/pncconf/pncconf.glade:62001 -#: src/emc/usr_intf/pncconf/pncconf.glade:63304 -#: src/emc/usr_intf/pncconf/pncconf.glade:64187 -#: src/emc/usr_intf/pncconf/pncconf.glade:65460 -msgid "FF1" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"All the necessary information has now been gathered. Click \"Apply\" to " +"write your configuration files to disk.\n" +"\n" +"If you are using the 5i25 card with daugther boards or are using SSerial " +"based daughter cards, the cards must be connected and/or field power " +"supplied to the 5i25 \n" +"for the HAL pins to be available. If the config is expecting the pins and " +"they are not there, linuxcnc will error.\n" +"If you experience lockups while running LinuxCNC, you will need to decrease " +"the maximum velocity which will have the effect of increasing BASE_PERIOD.\n" +"\n" +"If you experience lost steps while running LinuxCNC, first verify that you " +"entered the proper timings for your stepper drivers. If that does not fix " +"the problem, then run a more thorough latency test as described on the " +"linuxcnc.org wiki:\n" +" http;//wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting\n" +"\n" +"If you experience the \"Unexpected Realtime Delay\" message, run a more " +"thorough latency test as described on the linuxcnc.org wiki: \n" +" http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TroubleShooting" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56214 -#: src/emc/usr_intf/pncconf/pncconf.glade:61108 -#: src/emc/usr_intf/pncconf/pncconf.glade:62011 -#: src/emc/usr_intf/pncconf/pncconf.glade:63294 -#: src/emc/usr_intf/pncconf/pncconf.glade:64197 -#: src/emc/usr_intf/pncconf/pncconf.glade:65450 -msgid "FF2" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +" Motor Encoder Test\n" +"Warning limits switches \n" +" Will not be obeyed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56282 -msgid "Servo Info" -msgstr "伺服資料" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Slow Dac Speed" +msgstr "慢DAC速度" -#: src/emc/usr_intf/pncconf/pncconf.glade:56362 -#, fuzzy -msgid "Spindle Max Output:" -msgstr "DAC 最大 輸出:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Fast Dac Speed" +msgstr "快速DAC速度" -#: src/emc/usr_intf/pncconf/pncconf.glade:56412 -#, fuzzy -msgid "Spindle Max limit:" -msgstr "主軸 快些" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Dac Offset:" +msgstr "DAC偏移:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56426 -#, fuzzy -msgid "Spindle Min Limit:" -msgstr "主軸" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder Scale:" +msgstr "編碼器 比例:" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Reset Encoder" +msgstr "復位編碼器" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Enable Amp" +msgstr "啟用放大器" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Invert Encoder" +msgstr "反轉 編碼器" -#: src/emc/usr_intf/pncconf/pncconf.glade:56456 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Invert Motor" +msgstr "反轉電機" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 msgid "" -"Open Loop\n" -" Test" +"±\n" +"+\n" +"-\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56557 -msgid "Quad Pulses / Rev:" -msgstr "四 脈衝 / 轉" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Seconds" +msgstr "秒" -#: src/emc/usr_intf/pncconf/pncconf.glade:56572 -msgid "Dac Max Output:" -msgstr "DAC 最大 輸出:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Enable" +msgstr "" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm/minute^2" +msgstr "毫米/分鐘^2" + +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm/minute" +msgstr "毫米/分鐘" -#: src/emc/usr_intf/pncconf/pncconf.glade:56586 -msgid "Dac Output Scale:" -msgstr "DAC 輸出 比例:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Current" +msgstr "電流" -#: src/emc/usr_intf/pncconf/pncconf.glade:56599 -msgid "3pwm Deadtime:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "P:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56612 -msgid "3pwm Scale:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "I:" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56626 -#, fuzzy -msgid "Output Info" -msgstr "輸出" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "D:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56691 -msgid "Driver Type:" -msgstr "驅動類型" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Original" +msgstr "原本" -#: src/emc/usr_intf/pncconf/pncconf.glade:56735 -msgid "Direction Setup" -msgstr "方向設定" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "DeadBand" +msgstr "死區" -#: src/emc/usr_intf/pncconf/pncconf.glade:56748 -msgid "Direction Hold" -msgstr "方向保持" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "PID Tuning" +msgstr "PID調節" -#: src/emc/usr_intf/pncconf/pncconf.glade:56791 -msgid "Step Space" -msgstr "步進 間距" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Time:" +msgstr "步進時間" -#: src/emc/usr_intf/pncconf/pncconf.glade:56804 -msgid "Step On-Time" -msgstr "步進 準時" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Space:" +msgstr "步進空間:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56820 -msgid "Stepper Info" -msgstr "步進 信息" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Direction Hold:" +msgstr "方向保持:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56871 -msgid "No feedback" -msgstr "沒有反饋" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Direction Setup:" +msgstr "方向設置:" -#: src/emc/usr_intf/pncconf/pncconf.glade:56881 -msgid "Absolute Feedback" -msgstr "絕對反饋" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Timing" +msgstr "步進時序" -#: src/emc/usr_intf/pncconf/pncconf.glade:56895 -msgid "Incremental Feedback" -msgstr "增量反饋" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "enable" +msgstr "啟用" -#: src/emc/usr_intf/pncconf/pncconf.glade:56909 -msgid "Incremental Encoder" -msgstr "增量編碼器" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "spindle" +msgstr "主軸" -#: src/emc/usr_intf/pncconf/pncconf.glade:56921 -msgid "Hall sensors" -msgstr "霍爾傳感器" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Help Page" +msgstr "幫助頁面" -#: src/emc/usr_intf/pncconf/pncconf.glade:56933 -msgid "Fanuc Red Cap " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"X axis:\n" +"Total Travel = 10\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = 0\n" +"Pos Travel Distance = Total Travel - neg travel distance = 10\n" +"Home Position = Origin to Home Position distance = 6\n" +"\n" +"Y axis:\n" +"Total Travel = 8\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = -8\n" +"Pos Travel Distance = Total Travel - neg travel distance = 0\n" +"Home Position = Origin to Home Position distance = 0\n" +"\n" +"Z axis:\n" +"Total Travel = 12\n" +"Home Offset = Origin to Home Switch distance = 0\n" +"Neg Travel Distance = Origin to neg limit distance = -12\n" +"Pos Travel Distance = Total Travel - neg travel distance = 0\n" +"Home Position = Origin to Home Position distance = 0\n" +"\n" +"Note that the direction indicators on the top right show \n" +"movement of the TOOL and on the actual machine,\n" +"often it is the table that actually moves. In that case the \n" +"directions are opposite of shown.\n" +"\n" +"Note this is an example, Many other combinations are \n" +"possible" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:56945 -msgid "Use encoder Index" -msgstr "使用編碼器指數" - -#: src/emc/usr_intf/pncconf/pncconf.glade:56976 -msgid "Input Options" -msgstr "輸入選項" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Mill" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57000 -msgid "Digital instead of PWM outputs" -msgstr "數碼代替PWM輸出" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"Total Travel = 4 + 6 = 10\n" +"Z Home Offset = Origin to Home Switch distance = 10\n" +"Z Neg Travel Distance = Origin to neg limit distance = 0\n" +"Z Pos Travel Distance = Total Travel - neg travel distance = 10\n" +"Z Home Position = Origin to Home Position distance = 4\n" +"\n" +"X axis would be similar but not shown fully for clarity.\n" +"This is just a sample reference other switch combinations are\n" +"possible." +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57009 -msgid "6 outputs instead of 3 " -msgstr "6 輸出代替 3" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Lathe" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57021 -msgid "Force Trapezoid Mode" -msgstr "強制梯型模式" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Diagram" +msgstr "圖表" -#: src/emc/usr_intf/pncconf/pncconf.glade:57033 -msgid "Emulate feedback " -msgstr "仿真反饋" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Output" +msgstr "輸出" -#: src/emc/usr_intf/pncconf/pncconf.glade:57045 -msgid "Emulated Hall sensors" -msgstr "霍爾傳感器仿真" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "" +"\t\t\t\tPNCconf - Point aNd Click CONFigurator\n" +"PNCconf is a configuration program for Linuxcnc.\n" +"It configures machines using Mesa I/O cards.\n" +"It configures servo,stepper or closed loop stepper machines.\n" +"It supports some of Mesa's sserial cards.\n" +"It will forever be a work in progress as Linuxcnc changes.\n" +"\n" +"Many thanks To:\n" +"Jeff Eppler - PNCconf is based on stepconf - Jeff's creation. Jeff also has " +"helped with techincal difficulties.\n" +"Big John T - John drew the original machine illustrations. Testing and " +"suggestions.\n" +"Peter Wallace - Technical questions on Mesa's I/O cards. Supplied sample " +"equipment to test with.\n" +"Andy Pugh - suggestions, questions answered and many pin name changes :) \n" +"Dave Armstrong - testing and suggestions expecially with resolvers.\n" +"Everyone who gave a bug report ! I cannot test everything thoughly enough so " +"reports help.\n" +"\n" +"Beta 1 version" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57058 -msgid "Emulated Fanuc Red Cap" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "TPI " msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57085 -#, fuzzy -msgid "8i20 Max Current" -msgstr "電流" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulley teeth (motor:Leadscrew):" +msgstr "帶輪齒(馬達:絲槓):" -#: src/emc/usr_intf/pncconf/pncconf.glade:57119 -msgid "Output Options" -msgstr "輸入選項" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Worm turn ratio (Input:Outputl)" +msgstr "蜗杆圈數比(輸入:輸出)" -#: src/emc/usr_intf/pncconf/pncconf.glade:57153 -msgid "Poles" -msgstr "極" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Microstep Multiplication Factor:" +msgstr "微步乘係數:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57163 -msgid "Encoder-offset" -msgstr "編碼器偏移" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +#, fuzzy +msgid "Leadscrew Metric Pitch" +msgstr "丝杆 螺距" -#: src/emc/usr_intf/pncconf/pncconf.glade:57173 -msgid "Drive-offset" -msgstr "驅動器偏移" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motor steps per revolution:" +msgstr "電機步每轉:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57183 -msgid "output-pattern" -msgstr "輸出模式" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Step Motor Scale" +msgstr "步進馬達比例" -#: src/emc/usr_intf/pncconf/pncconf.glade:57193 -msgid "Input-pattern" -msgstr "輸入模式" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "TPI" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57203 -msgid "Reverse" -msgstr "反向" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "X 4 = Pulses/Rev" +msgstr "X 4=脈衝 /轉" -#: src/emc/usr_intf/pncconf/pncconf.glade:57303 -msgid "lead angle" -msgstr "超前角" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder lines per revolution:" +msgstr "編碼器每轉線條" -#: src/emc/usr_intf/pncconf/pncconf.glade:57313 -msgid "alignment current" -msgstr "對準電流" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Pulley teeth (encoder:Leadscrew):" +msgstr "帶輪齒(編碼器:絲槓):" -#: src/emc/usr_intf/pncconf/pncconf.glade:57354 -msgid "Configuration" -msgstr "配置" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Encoder Scale" +msgstr "編碼器比例" -#: src/emc/usr_intf/pncconf/pncconf.glade:57389 -msgid "Use Brushless Motor Control" -msgstr "使用無刷電機控制" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid " " +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57425 -msgid "Scale:" -msgstr "比例:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "encoder pulses per unit:" +msgstr "編碼器脈衝每單位:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57446 -msgid "% " -msgstr "" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "motor steps per unit:" +msgstr "電機步每單位:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57466 -#, fuzzy -msgid "Use Spindle-At-Speed" -msgstr "主軸速度設置" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Calculated Scale" +msgstr "計算出比例" -#: src/emc/usr_intf/pncconf/pncconf.glade:57491 -msgid "Filter gain:" -msgstr "濾波增益:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "mm / encoder pulse" +msgstr "毫米 / 編碼器脈衝 " -#: src/emc/usr_intf/pncconf/pncconf.glade:57526 -#, fuzzy -msgid "Spindle Display Filter Settings" -msgstr "主軸顯示過濾器設置" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Resolution:" +msgstr "分辨率:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57577 +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 #, fuzzy -msgid "Single Input Encoder" -msgstr "反轉 編碼器" +msgid "Distance to acheave max speed:" +msgstr "距離達到最大速度:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57631 -msgid "Invert Encoder Direction " -msgstr "翻轉編碼器方向 " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "sec" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57646 -msgid "Invert Motor Direction" -msgstr "翻轉電機方向" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Khz" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:57661 -msgid "Feed Speed Following Error:" -msgstr "故障" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Calculated Axis SCALE:" +msgstr "計算軸比例:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57675 -msgid "Rapid Speed Following Error:" -msgstr "高速度跟隨故障:" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motor RPM at max speed:" +msgstr "電機轉速在最大速度:" -#: src/emc/usr_intf/pncconf/pncconf.glade:57715 -msgid "" -"Calculate\n" -"Scale" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "xmaxrpm" msgstr "" -"計算\n" -"比例" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57744 -msgid "Stepper Scale:" -msgstr "步進比例:" - -#: src/emc/usr_intf/pncconf/pncconf.glade:57771 -msgid "encoder Scale:" -msgstr "編碼器比例" -#: src/emc/usr_intf/pncconf/pncconf.glade:57928 -msgid "Test / Tune Axis" -msgstr "測試 / 調整軸" +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "Motion Data" +msgstr "動作數據" -#: src/emc/usr_intf/pncconf/pncconf.glade:58235 -msgid "Positive Travel Distance (Machine zero Origin to end of + travel): " -msgstr "正移動距離 (機床 零點到 正 行程尾): " +#: src/emc/usr_intf/pncconf/pncconf.glade:65535 +msgid "gtk-cancel" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58251 -msgid "Home Search Velocity:" -msgstr "零點搜索速率:" +#: src/emc/usr_intf/gscreen/gscreen.py:349 +#, python-format +msgid "adding import dir %s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58266 -msgid "Home Switch location (Offset from machine zero Origin):" -msgstr "歸零開關的位置 (從機床零點的偏移):" +#: src/emc/usr_intf/gscreen/gscreen.py:355 +#, python-format +msgid "module '%s' imported OK" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58310 -msgid "Negative Travel Distance (Machine zero Origin to end of - travel): " -msgstr "負移動距離 (機床 零點到 負 行程尾): " +#: src/emc/usr_intf/gscreen/gscreen.py:452 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Using CUSTOM glade file from %s ****" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58326 -msgid "Home Position location (offset from machine zero Origin):" -msgstr "零點定位 (從機床零點的偏移):" +#: src/emc/usr_intf/gscreen/gscreen.py:457 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: Using SKIN glade file from %s ****" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58355 -msgid "Use Backlash Compensation:" -msgstr "使用反向間隙補償:" +#: src/emc/usr_intf/gscreen/gscreen.py:460 +#, python-format +msgid "" +"\n" +"**** GSCREEN INFO: using STOCK glade file from: %s ****" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58369 -msgid "Use Compensation File:" -msgstr "使用補償文件:" +#: src/emc/usr_intf/gscreen/gscreen.py:466 +#, python-format +msgid "**** Gscreen GLADE ERROR: With main screen xml file: %s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58412 +#: src/emc/usr_intf/gscreen/gscreen.py:471 +#, python-format msgid "" -"Type 1\n" -"Type 2" +"\n" +"**** GSCREEN INFO: Screen 2 -Using CUSTOM glade file from %s ****" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58427 -msgid "filename:" -msgstr "文件名:" +#: src/emc/usr_intf/gscreen/gscreen.py:477 +#, python-format +msgid "**** Gscreen GLADE ERROR: With screen 2's xml file: %s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58455 -msgid "Home latch Velocity:" -msgstr "零點鎖定速率:" +#: src/emc/usr_intf/gscreen/gscreen.py:479 +msgid "" +"\n" +"**** GSCREEN INFO: No Screen 2 glade file present" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58494 -msgid "Home Search Direction:" +#: src/emc/usr_intf/gscreen/gscreen.py:519 +msgid "No UNITS entry found in [TRAJ] or [AXIS_0] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58507 +#: src/emc/usr_intf/gscreen/gscreen.py:532 msgid "" -"Towards Negative limit\n" -"Towards Positive limit" +"*** Gscreen ERROR: Asking for a HAL component using a name that already " +"exists." msgstr "" -"朝向負極限\n" -"朝向正極限" - -#: src/emc/usr_intf/pncconf/pncconf.glade:58523 -msgid "Home Latch Direction:" -msgstr "歸零閉鎖方向:" -#: src/emc/usr_intf/pncconf/pncconf.glade:58552 -msgid "Home Final Velocity:" -msgstr "歸零最終速度" +#: src/emc/usr_intf/gscreen/gscreen.py:585 +msgid "No default jog increments entry found in [DISPLAY] of INI file" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58591 -msgid "Use Encoder Index For Home:" -msgstr "使用編碼器指標為零點:" +#: src/emc/usr_intf/gscreen/gscreen.py:598 +msgid "No default angular jog increments entry found in [DISPLAY] of INI file" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58603 +#: src/emc/usr_intf/gscreen/gscreen.py:607 +#, python-format msgid "" -"NO\n" -"YES" +"No DEFAULT_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58628 -msgid "Advanced Options" -msgstr "進階選項" - -#: src/emc/usr_intf/pncconf/pncconf.glade:58712 -msgid "Cmd 1" +#: src/emc/usr_intf/gscreen/gscreen.py:618 +#, python-format +msgid "" +"No MAX_LINEAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58718 -msgid "Cmd 2" +#: src/emc/usr_intf/gscreen/gscreen.py:625 +msgid "No MAX_VELOCITY found in [TRAJ] of the INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58728 -msgid "Cmd 3" +#: src/emc/usr_intf/gscreen/gscreen.py:638 +#, python-format +msgid "" +"No DEFAULT_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using " +"internal default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58738 -msgid "Cmd 4" +#: src/emc/usr_intf/gscreen/gscreen.py:649 +#, python-format +msgid "" +"No MAX_ANGULAR_VELOCITY entry found in [DISPLAY] of INI file: using internal " +"default of %s" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58748 -msgid "Cmd 5" +#: src/emc/usr_intf/gscreen/gscreen.py:657 +msgid "No MAX_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58874 -msgid "Cmd 6" +#: src/emc/usr_intf/gscreen/gscreen.py:663 +msgid "No MIN_SPINDLE_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58884 -msgid "Cmd 7" +#: src/emc/usr_intf/gscreen/gscreen.py:669 +msgid "No MAX_FEED_OVERRIDE entry found in [DISPLAY] of INI file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58896 -msgid "Cmd 8" +#: src/emc/usr_intf/gscreen/gscreen.py:674 +msgid "This screen will be orientated for Lathe options" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58908 -msgid "Cmd 9" +#: src/emc/usr_intf/gscreen/gscreen.py:727 +msgid "CYCLE_TIME in [DISPLAY] of INI file is missing: defaulting to 100ms" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58920 -msgid "Cmd 10" +#: src/emc/usr_intf/gscreen/gscreen.py:730 +msgid "CYCLE_TIME in [DISPLAY] of INI file is too small: defaulting to 100ms" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:58990 -msgid "Cmd 11" +#: src/emc/usr_intf/gscreen/gscreen.py:732 +#, python-format +msgid "timeout %d" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59000 -msgid "Cmd 12" +#: src/emc/usr_intf/gscreen/gscreen.py:1001 +msgid "" +"**** WARNING GSCREEN: could not understand the window geometry info in " +"hidden preference file" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59012 -msgid "Cmd 13" +#: src/emc/usr_intf/gscreen/gscreen.py:1089 +msgid "Control powered up and initialized" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59024 -msgid "Cmd 14" +#: src/emc/usr_intf/gscreen/gscreen.py:1264 +msgid "Cycle start pressed in AUTO mode" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59036 -msgid "Cmd 15" +#: src/emc/usr_intf/gscreen/gscreen.py:1267 +#, fuzzy +msgid "Cycle start pressed in MDI mode" +msgstr "不能做到這一點(%s)在MDI模式" + +#: src/emc/usr_intf/gscreen/gscreen.py:1290 +#, python-format +msgid "Please change to tool # %s, then click OK." +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1291 +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +#: src/emc/usr_intf/gscreen/gscreen.py:1789 +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2849 +msgid "INFO:" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1299 +#: src/emc/usr_intf/gscreen/gscreen.py:1312 +msgid "Can't start spindle manually while MDI busy" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.py:1302 +#: src/emc/usr_intf/gscreen/gscreen.py:1315 +#, fuzzy +msgid "can't start spindle manually in Auto mode" +msgstr "不能做到這一點(%s)在手動模式" + +#: src/emc/usr_intf/gscreen/gscreen.py:1321 +#: src/emc/usr_intf/gscreen/gscreen.py:3098 +msgid "No direction selected for spindle" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59053 -msgid "Include Halui user interface component / commands" -msgstr "包括Halui使用者界面組件/命令" +#: src/emc/usr_intf/gscreen/gscreen.py:1331 +#: src/emc/usr_intf/gscreen/gscreen.py:1333 +#, fuzzy +msgid "Spindle Speed Preset Entry" +msgstr "主軸 轉速(RPM)" -#: src/emc/usr_intf/pncconf/pncconf.glade:59127 -msgid "Number of digital (bit) in pins:" +#: src/emc/usr_intf/gscreen/gscreen.py:1362 +#: src/emc/usr_intf/gscreen/gscreen.py:1367 +#, fuzzy +msgid "Manual Tool Index Entry" +msgstr "AXIS 手動 換刀" + +#: src/emc/usr_intf/gscreen/gscreen.py:1489 +msgid "Entry dialog" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59138 -msgid "Number of digital (bit) out pins:" +#: src/emc/usr_intf/gscreen/gscreen.py:1616 +#, fuzzy +msgid "Classicladder realtime component not detected" +msgstr "實時元件沒有加載" + +#: src/emc/usr_intf/gscreen/gscreen.py:1617 +msgid "ladder not available - is the realtime component loaded?" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59308 +#: src/emc/usr_intf/gscreen/gscreen.py:1691 #, fuzzy -msgid "Setup number of external pins" -msgstr "腳的 總數:" +msgid "Override Entry" +msgstr "超速 MPG 操控" -#: src/emc/usr_intf/pncconf/pncconf.glade:59360 -msgid "Z Auto Touch off program" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.py:1719 +#, fuzzy +msgid "Machine powered on" +msgstr "開机" -#: src/emc/usr_intf/pncconf/pncconf.glade:59505 -msgid "HAL Component Page" -msgstr "HAL組件頁" +#: src/emc/usr_intf/gscreen/gscreen.py:1724 +#, fuzzy +msgid "Machine Estopped!" +msgstr "機床位置" -#: src/emc/usr_intf/pncconf/pncconf.glade:59648 -msgid "lowpass" +#: src/emc/usr_intf/gscreen/gscreen.py:1727 +#, fuzzy +msgid "Calculator" msgstr "" +"計算\n" +"比例" -#: src/emc/usr_intf/pncconf/pncconf.glade:59675 -msgid "mux16" +#: src/emc/usr_intf/gscreen/gscreen.py:1857 +#, python-format +msgid "Axes %s are homed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59702 -msgid "scale" -msgstr "比例" - -#: src/emc/usr_intf/pncconf/pncconf.glade:59728 -msgid "PID" +#: src/emc/usr_intf/gscreen/gscreen.py:1864 +msgid "All the axes have been homed" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59739 -msgid "number of components" -msgstr "組件數目" +#: src/emc/usr_intf/gscreen/gscreen.py:1874 +#, python-format +msgid "There are unhomed axes: %s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59767 -msgid "Component" -msgstr "組件" +#: src/emc/usr_intf/gscreen/gscreen.py:1879 +#, fuzzy, python-format +msgid "Program loaded: %s" +msgstr "程序檔案是 %s" -#: src/emc/usr_intf/pncconf/pncconf.glade:59794 -msgid "Add HAL components with this page." -msgstr "添加HAL組件在此頁" +#: src/emc/usr_intf/gscreen/gscreen.py:1977 +#, fuzzy +msgid "Manual Spindle Control" +msgstr "手動 主軸 停" -#: src/emc/usr_intf/pncconf/pncconf.glade:59844 -msgid "Thread Command" -msgstr "線程指令" +#: src/emc/usr_intf/gscreen/gscreen.py:2034 +msgid "Keyboard" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59854 -msgid "Thread Speed" -msgstr "線程速度" +#: src/emc/usr_intf/gscreen/gscreen.py:2067 +msgid "Error with launching 'Onboard' on-screen keyboard program" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59906 -msgid "Load Command " -msgstr "加載指令" +#: src/emc/usr_intf/gscreen/gscreen.py:2215 +#, python-format +msgid "**** GSCREEN INFO: Overriding internal signal call to %s" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:59952 -msgid "Servo Thread" -msgstr "伺服線程" +#: src/emc/usr_intf/gscreen/gscreen.py:2643 +#, fuzzy +msgid " Zero Origin" +msgstr "原本" -#: src/emc/usr_intf/pncconf/pncconf.glade:59965 -msgid "Base Thread" -msgstr "基本線程" +#: src/emc/usr_intf/gscreen/gscreen.py:2644 +#, fuzzy +msgid "Offset Origin" +msgstr "偏移訊息" -#: src/emc/usr_intf/pncconf/pncconf.glade:59979 -msgid "Custom Components Commands" -msgstr "自定義組件的命令" +#: src/emc/usr_intf/gscreen/gscreen.py:2659 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing text or type) " +"in INI File [DISPLAY] section" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60031 +#: src/emc/usr_intf/gscreen/gscreen.py:2661 msgid "" -" Motor Encoder Test\n" -"Warning limits switches \n" -" Will not be obeyed" +"**** Gscreen ERROR: Invalid message configuration (missing pinname) in " +"INI File [DISPLAY] section" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60067 -#: src/emc/usr_intf/pncconf/pncconf.glade:60766 -#: src/emc/usr_intf/pncconf/pncconf.glade:61859 -#: src/emc/usr_intf/pncconf/pncconf.glade:62952 -#: src/emc/usr_intf/pncconf/pncconf.glade:64045 -#: src/emc/usr_intf/pncconf/pncconf.glade:65025 -msgid "Invert Motor" -msgstr "反轉電機" +#: src/emc/usr_intf/gscreen/gscreen.py:2663 +msgid "" +"**** Gscreen ERROR: Invalid message configuration (missing boldtext) in " +"INI File [DISPLAY] section" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60083 -#: src/emc/usr_intf/pncconf/pncconf.glade:60782 -#: src/emc/usr_intf/pncconf/pncconf.glade:61875 -#: src/emc/usr_intf/pncconf/pncconf.glade:62968 -#: src/emc/usr_intf/pncconf/pncconf.glade:64061 -#: src/emc/usr_intf/pncconf/pncconf.glade:65040 -msgid "Invert Encoder" -msgstr "反轉 編碼器" +#: src/emc/usr_intf/gscreen/gscreen.py:2667 +#, python-format +msgid "" +"**** Gscreen ERROR: invalid message type (%s)in INI File [DISPLAY] section" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60100 -msgid "Enable Amp" -msgstr "啟用放大器" +#: src/emc/usr_intf/gscreen/gscreen.py:2699 +msgid "Dialog error - Is the dialog handler missing from the handler file?" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60114 -msgid "Reset Encoder" -msgstr "復位編碼器" +#: src/emc/usr_intf/gscreen/gscreen.py:2701 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3540 +#, fuzzy +msgid "Manual Toolchange" +msgstr "AXIS 手動 換刀" -#: src/emc/usr_intf/pncconf/pncconf.glade:60142 -msgid "Encoder Scale:" -msgstr "編碼器 比例:" +#: src/emc/usr_intf/gscreen/gscreen.py:2703 +#: src/emc/usr_intf/gmoccapy/dialogs.py:94 +#: src/emc/usr_intf/gmoccapy/dialogs.py:107 +#: src/emc/usr_intf/gmoccapy/dialogs.py:119 +msgid "Operator Message" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60153 -msgid "Dac Offset:" -msgstr "DAC偏移:" +#: src/emc/usr_intf/gscreen/gscreen.py:2737 +#: src/emc/usr_intf/gscreen/gscreen.py:2741 +#: src/emc/usr_intf/gmoccapy/dialogs.py:155 +#: src/emc/usr_intf/gmoccapy/dialogs.py:159 +#, fuzzy +msgid "Restart Entry" +msgstr "重新 起動" -#: src/emc/usr_intf/pncconf/pncconf.glade:60243 -msgid "Fast Dac Speed" -msgstr "快速DAC速度" +#: src/emc/usr_intf/gscreen/gscreen.py:2752 +#: src/emc/usr_intf/gmoccapy/dialogs.py:173 +msgid "Enter" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60258 -msgid "Slow Dac Speed" -msgstr "慢DAC速度" +#: src/emc/usr_intf/gscreen/gscreen.py:2774 +#, python-format +msgid "Ready to Restart program from line %d" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60407 -#: src/emc/usr_intf/pncconf/pncconf.glade:61503 -#: src/emc/usr_intf/pncconf/pncconf.glade:62596 -#: src/emc/usr_intf/pncconf/pncconf.glade:63689 -#: src/emc/usr_intf/pncconf/pncconf.glade:64788 -msgid "mm/minute" -msgstr "毫米/分鐘" +#: src/emc/usr_intf/gscreen/gscreen.py:2807 +#, fuzzy +msgid "Invalid embeded tab configuration" +msgstr "創建一個新的配置" -#: src/emc/usr_intf/pncconf/pncconf.glade:60441 -#: src/emc/usr_intf/pncconf/pncconf.glade:61536 -#: src/emc/usr_intf/pncconf/pncconf.glade:62629 -#: src/emc/usr_intf/pncconf/pncconf.glade:63722 -#: src/emc/usr_intf/pncconf/pncconf.glade:64821 -msgid "mm/minute^2" -msgstr "毫米/分鐘^2" +#: src/emc/usr_intf/gscreen/gscreen.py:3051 +#: src/emc/usr_intf/gscreen/gscreen.py:3118 +msgid "Can't jog multiple axis" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60550 -#: src/emc/usr_intf/pncconf/pncconf.glade:61644 -#: src/emc/usr_intf/pncconf/pncconf.glade:62737 -#: src/emc/usr_intf/pncconf/pncconf.glade:64930 -msgid "Enable" +#: src/emc/usr_intf/gscreen/gscreen.py:3054 +msgid "No axis selected to jog" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60600 -#: src/emc/usr_intf/pncconf/pncconf.glade:61693 -#: src/emc/usr_intf/pncconf/pncconf.glade:62786 -#: src/emc/usr_intf/pncconf/pncconf.glade:63879 -#: src/emc/usr_intf/pncconf/pncconf.glade:65139 -msgid "Seconds" -msgstr "秒" +#: src/emc/usr_intf/gscreen/gscreen.py:3121 +msgid "No axis selected to move" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:60907 -#: src/emc/usr_intf/pncconf/pncconf.glade:62212 -#: src/emc/usr_intf/pncconf/pncconf.glade:63093 -#: src/emc/usr_intf/pncconf/pncconf.glade:64398 -#: src/emc/usr_intf/pncconf/pncconf.glade:65255 -msgid "DeadBand" -msgstr "死區" +#: src/emc/usr_intf/gscreen/gscreen.py:3191 +msgid "Can't home multiple axis - select HOME ALL instead" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61089 -#: src/emc/usr_intf/pncconf/pncconf.glade:61380 -#: src/emc/usr_intf/pncconf/pncconf.glade:62030 -#: src/emc/usr_intf/pncconf/pncconf.glade:62401 -#: src/emc/usr_intf/pncconf/pncconf.glade:63275 -#: src/emc/usr_intf/pncconf/pncconf.glade:63562 -#: src/emc/usr_intf/pncconf/pncconf.glade:64216 -#: src/emc/usr_intf/pncconf/pncconf.glade:64587 -#: src/emc/usr_intf/pncconf/pncconf.glade:65431 -#: src/emc/usr_intf/pncconf/pncconf.glade:65718 -msgid "Original" -msgstr "原本" +#: src/emc/usr_intf/gscreen/gscreen.py:3194 +msgid "No axis selected to home" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61138 -#: src/emc/usr_intf/pncconf/pncconf.glade:61981 -#: src/emc/usr_intf/pncconf/pncconf.glade:63324 -#: src/emc/usr_intf/pncconf/pncconf.glade:64167 -#: src/emc/usr_intf/pncconf/pncconf.glade:65480 -msgid "D:" +#: src/emc/usr_intf/gscreen/gscreen.py:3201 +msgid "Can't unhome multiple axis" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61148 -#: src/emc/usr_intf/pncconf/pncconf.glade:61971 -#: src/emc/usr_intf/pncconf/pncconf.glade:63334 -#: src/emc/usr_intf/pncconf/pncconf.glade:64157 -#: src/emc/usr_intf/pncconf/pncconf.glade:65490 -msgid "I:" +#: src/emc/usr_intf/gscreen/gscreen.py:3204 +msgid "No axis selected to unhome" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61158 -#: src/emc/usr_intf/pncconf/pncconf.glade:61961 -#: src/emc/usr_intf/pncconf/pncconf.glade:63344 -#: src/emc/usr_intf/pncconf/pncconf.glade:64147 -#: src/emc/usr_intf/pncconf/pncconf.glade:65500 -msgid "P:" +#: src/emc/usr_intf/gscreen/gscreen.py:3213 +msgid "No axis selected for origin zeroing" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61168 -#: src/emc/usr_intf/pncconf/pncconf.glade:61392 -#: src/emc/usr_intf/pncconf/pncconf.glade:61951 -#: src/emc/usr_intf/pncconf/pncconf.glade:62389 -#: src/emc/usr_intf/pncconf/pncconf.glade:63354 -#: src/emc/usr_intf/pncconf/pncconf.glade:63574 -#: src/emc/usr_intf/pncconf/pncconf.glade:64137 -#: src/emc/usr_intf/pncconf/pncconf.glade:64575 -#: src/emc/usr_intf/pncconf/pncconf.glade:65510 -#: src/emc/usr_intf/pncconf/pncconf.glade:65730 -msgid "Current" -msgstr "電流" +#: src/emc/usr_intf/gscreen/gscreen.py:3224 +msgid "No axis selected for origin touch-off" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61185 -#: src/emc/usr_intf/pncconf/pncconf.glade:62278 -#: src/emc/usr_intf/pncconf/pncconf.glade:63371 -#: src/emc/usr_intf/pncconf/pncconf.glade:64464 -#: src/emc/usr_intf/pncconf/pncconf.glade:65527 -msgid "PID Tuning" -msgstr "PID調節" +#: src/emc/usr_intf/gscreen/gscreen.py:3230 +msgid "Can't tool touch-off multiple axes" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61370 -#: src/emc/usr_intf/pncconf/pncconf.glade:62413 -#: src/emc/usr_intf/pncconf/pncconf.glade:63552 -#: src/emc/usr_intf/pncconf/pncconf.glade:64599 -#: src/emc/usr_intf/pncconf/pncconf.glade:65708 -msgid "Direction Setup:" -msgstr "方向設置:" +#: src/emc/usr_intf/gscreen/gscreen.py:3233 +msgid "No axis selected for tool touch-off" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61404 -#: src/emc/usr_intf/pncconf/pncconf.glade:62379 -#: src/emc/usr_intf/pncconf/pncconf.glade:63586 -#: src/emc/usr_intf/pncconf/pncconf.glade:64565 -#: src/emc/usr_intf/pncconf/pncconf.glade:65742 -msgid "Direction Hold:" -msgstr "方向保持:" +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#: src/emc/usr_intf/gscreen/gscreen.py:3375 +#, fuzzy +msgid "Error Message" +msgstr "保存 文件 時出錯" -#: src/emc/usr_intf/pncconf/pncconf.glade:61414 -#: src/emc/usr_intf/pncconf/pncconf.glade:62369 -#: src/emc/usr_intf/pncconf/pncconf.glade:63596 -#: src/emc/usr_intf/pncconf/pncconf.glade:64555 -#: src/emc/usr_intf/pncconf/pncconf.glade:65752 -msgid "Step Space:" -msgstr "步進空間:" +#: src/emc/usr_intf/gscreen/gscreen.py:3292 +#, python-format +msgid "Tool editor error - is the %s editor available?" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61424 -#: src/emc/usr_intf/pncconf/pncconf.glade:62359 -#: src/emc/usr_intf/pncconf/pncconf.glade:63606 -#: src/emc/usr_intf/pncconf/pncconf.glade:64545 -#: src/emc/usr_intf/pncconf/pncconf.glade:65762 -msgid "Step Time:" -msgstr "步進時間" +#: src/emc/usr_intf/gscreen/gscreen.py:3377 +#: src/emc/usr_intf/gscreen/gscreen.py:3379 +msgid "Message" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:61439 -#: src/emc/usr_intf/pncconf/pncconf.glade:62528 -#: src/emc/usr_intf/pncconf/pncconf.glade:63621 -#: src/emc/usr_intf/pncconf/pncconf.glade:64714 -#: src/emc/usr_intf/pncconf/pncconf.glade:65777 -msgid "Step Timing" -msgstr "步進時序" +#: src/emc/usr_intf/gscreen/gscreen.py:3409 +#, python-format +msgid "%d RPM" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:48 +#: src/emc/usr_intf/gscreen/gscreen.glade:59 +#: src/emc/usr_intf/gscreen/gscreen.glade:135 +#: src/emc/usr_intf/gscreen/gscreen.glade:176 +#: src/emc/usr_intf/gscreen/gscreen.glade:187 +#: src/emc/usr_intf/gscreen/gscreen.glade:264 +#: src/emc/usr_intf/gscreen/gscreen.glade:306 +#: src/emc/usr_intf/gscreen/gscreen.glade:317 +#: src/emc/usr_intf/gscreen/gscreen.glade:393 +#: src/emc/usr_intf/gscreen/gscreen.glade:434 +#: src/emc/usr_intf/gscreen/gscreen.glade:445 +#: src/emc/usr_intf/gscreen/gscreen.glade:521 +#: src/emc/usr_intf/gscreen/gscreen.glade:562 +#: src/emc/usr_intf/gscreen/gscreen.glade:573 +#: src/emc/usr_intf/gscreen/gscreen.glade:649 +#: src/emc/usr_intf/gscreen/gscreen.glade:690 +#: src/emc/usr_intf/gscreen/gscreen.glade:701 +#: src/emc/usr_intf/gscreen/gscreen.glade:777 +#: src/emc/usr_intf/gscreen/gscreen.glade:818 +#: src/emc/usr_intf/gscreen/gscreen.glade:829 +#: src/emc/usr_intf/gscreen/gscreen.glade:905 +#: src/emc/usr_intf/gscreen/gscreen.glade:946 +#: src/emc/usr_intf/gscreen/gscreen.glade:957 +#: src/emc/usr_intf/gscreen/gscreen.glade:1033 +#: src/emc/usr_intf/gscreen/gscreen.glade:1074 +#: src/emc/usr_intf/gscreen/gscreen.glade:1085 +#: src/emc/usr_intf/gscreen/gscreen.glade:1161 +msgid "0000.0000" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:73 +#: src/emc/usr_intf/gscreen/gscreen.glade:201 +#: src/emc/usr_intf/gscreen/gscreen.glade:331 +#: src/emc/usr_intf/gscreen/gscreen.glade:459 +#: src/emc/usr_intf/gscreen/gscreen.glade:587 +#: src/emc/usr_intf/gscreen/gscreen.glade:715 +#: src/emc/usr_intf/gscreen/gscreen.glade:843 +#: src/emc/usr_intf/gscreen/gscreen.glade:971 +#: src/emc/usr_intf/gscreen/gscreen.glade:1099 +msgid "REL" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:99 +#: src/emc/usr_intf/gscreen/gscreen.glade:227 +#: src/emc/usr_intf/gscreen/gscreen.glade:357 +#: src/emc/usr_intf/gscreen/gscreen.glade:485 +#: src/emc/usr_intf/gscreen/gscreen.glade:613 +#: src/emc/usr_intf/gscreen/gscreen.glade:741 +#: src/emc/usr_intf/gscreen/gscreen.glade:869 +#: src/emc/usr_intf/gscreen/gscreen.glade:997 +#: src/emc/usr_intf/gscreen/gscreen.glade:1125 +msgid "ABS" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:630 +msgid "B" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:758 +msgid "C" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:886 +#, fuzzy +msgid "U" +msgstr "向上" -#: src/emc/usr_intf/pncconf/pncconf.glade:63830 -msgid "enable" -msgstr "啟用" +#: src/emc/usr_intf/gscreen/gscreen.glade:1014 +msgid "V" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65798 -msgid "spindle" -msgstr "主軸" +#: src/emc/usr_intf/gscreen/gscreen.glade:1298 +msgid "G code" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65881 -msgid "Help Page" -msgstr "幫助頁面" +#: src/emc/usr_intf/gscreen/gscreen.glade:1392 +#, fuzzy +msgid "G Codes Active" +msgstr "編碼器比例" -#: src/emc/usr_intf/pncconf/pncconf.glade:65911 -msgid "" -"X axis:\n" -"Total Travel = 10\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = 0\n" -"Pos Travel Distance = Total Travel - neg travel distance = 10\n" -"Home Position = Origin to Home Position distance = 6\n" -"\n" -"Y axis:\n" -"Total Travel = 8\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = -8\n" -"Pos Travel Distance = Total Travel - neg travel distance = 0\n" -"Home Position = Origin to Home Position distance = 0\n" -"\n" -"Z axis:\n" -"Total Travel = 12\n" -"Home Offset = Origin to Home Switch distance = 0\n" -"Neg Travel Distance = Origin to neg limit distance = -12\n" -"Pos Travel Distance = Total Travel - neg travel distance = 0\n" -"Home Position = Origin to Home Position distance = 0\n" -"\n" -"Note that the direction indicators on the top right show \n" -"movement of the TOOL and on the actual machine,\n" -"often it is the table that actually moves. In that case the \n" -"directions are opposite of shown.\n" -"\n" -"Note this is an example, Many other combinations are \n" -"possible" +#: src/emc/usr_intf/gscreen/gscreen.glade:1451 +msgid "MV:100%" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:65951 -msgid "Mill" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1470 +#, fuzzy +msgid " Mist" +msgstr "霧噴" -#: src/emc/usr_intf/pncconf/pncconf.glade:65970 -msgid "" -"Total Travel = 4 + 6 = 10\n" -"Z Home Offset = Origin to Home Switch distance = 10\n" -"Z Neg Travel Distance = Origin to neg limit distance = 0\n" -"Z Pos Travel Distance = Total Travel - neg travel distance = 10\n" -"Z Home Position = Origin to Home Position distance = 4\n" -"\n" -"X axis would be similar but not shown fully for clarity.\n" -"This is just a sample reference other switch combinations are\n" -"possible." -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:1481 +#, fuzzy +msgid " Flood " +msgstr "淹浸" -#: src/emc/usr_intf/pncconf/pncconf.glade:65994 -msgid "Lathe" +#: src/emc/usr_intf/gscreen/gscreen.glade:1533 +#, fuzzy +msgid " At Speed " +msgstr "主軸 轉速(RPM)" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1546 +#, fuzzy +msgid " Jog mode" +msgstr "Joint 模式" + +#: src/emc/usr_intf/gscreen/gscreen.glade:1600 +msgid "10 DPM" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66010 -msgid "Diagram" -msgstr "圖表" +#: src/emc/usr_intf/gscreen/gscreen.glade:1616 +msgid "10 Ipm" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66043 -msgid "Output" -msgstr "輸出" +#: src/emc/usr_intf/gscreen/gscreen.glade:1690 +#, fuzzy +msgid "Status" +msgstr "冷卻液" -#: src/emc/usr_intf/pncconf/pncconf.glade:66123 -msgid "Motor steps per revolution:" -msgstr "電機步每轉:" +#: src/emc/usr_intf/gscreen/gscreen.glade:1715 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2510 +msgid "" +"Search\n" +" Text:" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66173 -#: src/emc/usr_intf/pncconf/pncconf.glade:66459 +#: src/emc/usr_intf/gscreen/gscreen.glade:1766 #, fuzzy -msgid "Leadscrew Metric Pitch" -msgstr "丝杆 螺距" +msgid "Mode" +msgstr "電源" -#: src/emc/usr_intf/pncconf/pncconf.glade:66186 -msgid "Microstep Multiplication Factor:" -msgstr "微步乘係數:" +#: src/emc/usr_intf/gscreen/gscreen.glade:1782 +#, fuzzy +msgid "Main Level" +msgstr "等級" -#: src/emc/usr_intf/pncconf/pncconf.glade:66199 -#: src/emc/usr_intf/pncconf/pncconf.glade:66481 -msgid "Worm turn ratio (Input:Outputl)" -msgstr "蜗杆圈數比(輸入:輸出)" +#: src/emc/usr_intf/gscreen/gscreen.glade:1823 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3678 +msgid "Themes" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66212 -msgid "Pulley teeth (motor:Leadscrew):" -msgstr "帶輪齒(馬達:絲槓):" +#: src/emc/usr_intf/gscreen/gscreen.glade:1847 +#, fuzzy +msgid "Relative Text Color" +msgstr "相對位置" -#: src/emc/usr_intf/pncconf/pncconf.glade:66356 -msgid "TPI " +#: src/emc/usr_intf/gscreen/gscreen.glade:1895 +msgid "DTG Text Color" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66372 -msgid "Step Motor Scale" -msgstr "步進馬達比例" +#: src/emc/usr_intf/gscreen/gscreen.glade:1916 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3710 +#, fuzzy +msgid "Warning Audio" +msgstr "警告" -#: src/emc/usr_intf/pncconf/pncconf.glade:66472 -msgid "Pulley teeth (encoder:Leadscrew):" -msgstr "帶輪齒(編碼器:絲槓):" +#: src/emc/usr_intf/gscreen/gscreen.glade:1926 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3723 +msgid "Alert Audio" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66537 -msgid "Encoder lines per revolution:" -msgstr "編碼器每轉線條" +#: src/emc/usr_intf/gscreen/gscreen.glade:1947 +#, fuzzy +msgid "Grid Size" +msgstr "大小" -#: src/emc/usr_intf/pncconf/pncconf.glade:66547 -msgid "X 4 = Pulses/Rev" -msgstr "X 4=脈衝 /轉" +#: src/emc/usr_intf/gscreen/gscreen.glade:1986 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4119 +#, fuzzy +msgid "Starting RPM" +msgstr "設定" -#: src/emc/usr_intf/pncconf/pncconf.glade:66651 -msgid "TPI" +#: src/emc/usr_intf/gscreen/gscreen.glade:2015 +msgid "Metric\n" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66667 -msgid "Encoder Scale" -msgstr "編碼器比例" +#: src/emc/usr_intf/gscreen/gscreen.glade:2030 +msgid "" +" Display\n" +"Aux Screen" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66711 -msgid "motor steps per unit:" -msgstr "電機步每單位:" +#: src/emc/usr_intf/gscreen/gscreen.glade:2045 +msgid "" +"Diameter\n" +" Mode" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66721 -msgid "encoder pulses per unit:" -msgstr "編碼器脈衝每單位:" +#: src/emc/usr_intf/gscreen/gscreen.glade:2062 +#: src/emc/usr_intf/gscreen/gscreen.glade:3096 +#, fuzzy +msgid "" +" Show\n" +"Offsets" +msgstr "顯示 偏移量(_f)" + +#: src/emc/usr_intf/gscreen/gscreen.glade:2079 +#, fuzzy +msgid "" +"Show\n" +"DTG" +msgstr "展示" -#: src/emc/usr_intf/pncconf/pncconf.glade:66756 -msgid " " +#: src/emc/usr_intf/gscreen/gscreen.glade:2096 +msgid "" +" Gscreen\n" +"Fullscreen" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66770 -msgid "Calculated Scale" -msgstr "計算出比例" +#: src/emc/usr_intf/gscreen/gscreen.glade:2118 +msgid "" +" On M7 Use\n" +"Aux Coolant" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66848 -msgid "xmaxrpm" +#: src/emc/usr_intf/gscreen/gscreen.glade:2131 +msgid "" +" On M8 Use\n" +"Aux Coolant" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66864 -msgid "RPM" +#: src/emc/usr_intf/gscreen/gscreen.glade:2144 +msgid "Hide Pointer" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66877 -msgid "Motor RPM at max speed:" -msgstr "電機轉速在最大速度:" +#: src/emc/usr_intf/gscreen/gscreen.glade:2156 +msgid "" +" Desktop\n" +"Notification" +msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:66921 -msgid "Calculated Axis SCALE:" -msgstr "計算軸比例:" +#: src/emc/usr_intf/gscreen/gscreen.glade:2228 +#: src/emc/usr_intf/gscreen/gscreen.glade:2368 +#, fuzzy +msgid "Debug" +msgstr "排錯..." -#: src/emc/usr_intf/pncconf/pncconf.glade:66934 -msgid "Khz" -msgstr "" +#: src/emc/usr_intf/gscreen/gscreen.glade:2263 +#, fuzzy +msgid "Alarm History" +msgstr "歷史:" -#: src/emc/usr_intf/pncconf/pncconf.glade:66949 -msgid "sec" +#: src/emc/usr_intf/gscreen/gscreen.glade:2281 +msgid "" +" Launch\n" +"Halshow" msgstr "" -#: src/emc/usr_intf/pncconf/pncconf.glade:67049 +#: src/emc/usr_intf/gscreen/gscreen.glade:2293 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6449 #, fuzzy -msgid "Distance to acheave max speed:" -msgstr "距離達到最大速度:" +msgid "Calibration" +msgstr "校準(_C)" -#: src/emc/usr_intf/pncconf/pncconf.glade:67077 -msgid "Resolution:" -msgstr "分辨率:" +#: src/emc/usr_intf/gscreen/gscreen.glade:2304 +#, fuzzy +msgid "Halmeter" +msgstr "HAL 儀表" -#: src/emc/usr_intf/pncconf/pncconf.glade:67105 -msgid "mm / encoder pulse" -msgstr "毫米 / 編碼器脈衝 " +#: src/emc/usr_intf/gscreen/gscreen.glade:2315 +#, fuzzy +msgid "" +"linuxcnc\n" +" Status" +msgstr "EMC 狀態" -#: src/emc/usr_intf/pncconf/pncconf.glade:67123 -msgid "Motion Data" -msgstr "動作數據" +#: src/emc/usr_intf/gscreen/gscreen.glade:2327 +#, fuzzy +msgid "Halscope" +msgstr "HAL 顯示器" -#: src/emc/usr_intf/pncconf/pncconf.glade:67151 -msgid "gtk-cancel" +#: src/emc/usr_intf/gscreen/gscreen.glade:2338 +msgid "Ladder" msgstr "" -#: src/emc/task/emctaskmain.cc:467 src/emc/task/emctaskmain.cc:500 -#, c-format -msgid "%s exceeds +X limit" -msgstr "%s 超過 +X 極限" - -#: src/emc/task/emctaskmain.cc:472 src/emc/task/emctaskmain.cc:505 -#, c-format -msgid "%s exceeds +Y limit" -msgstr "%s 超過 +Y 極限" +#: src/emc/usr_intf/gscreen/gscreen.glade:2386 +#, fuzzy +msgid "Tooleditor" +msgstr "刀具表編輯..." -#: src/emc/task/emctaskmain.cc:477 src/emc/task/emctaskmain.cc:510 -#, c-format -msgid "%s exceeds +Z limit" -msgstr "%s 超過 +Z 極限" +#: src/emc/usr_intf/gscreen/gscreen.glade:2404 +#, fuzzy +msgid "" +"Offset\n" +" Page" +msgstr "偏移 值 " -#: src/emc/task/emctaskmain.cc:482 src/emc/task/emctaskmain.cc:515 -#, c-format -msgid "%s exceeds -X limit" -msgstr "%s 超過 -X 極限" +#: src/emc/usr_intf/gscreen/gscreen.glade:2572 +#: src/emc/usr_intf/gscreen/gscreen.glade:2749 +#: src/emc/usr_intf/gscreen/gscreen.glade:3156 +msgid "\n" +msgstr "" -#: src/emc/task/emctaskmain.cc:487 src/emc/task/emctaskmain.cc:520 -#, c-format -msgid "%s exceeds -Y limit" -msgstr "%s 超過 -Y 極限" +#: src/emc/usr_intf/gscreen/gscreen.glade:2584 +#, fuzzy +msgid "Tool Setting" +msgstr "設定" -#: src/emc/task/emctaskmain.cc:492 src/emc/task/emctaskmain.cc:525 -#, c-format -msgid "%s exceeds -Z limit" -msgstr "%s 超過 -Z 極限" +#: src/emc/usr_intf/gscreen/gscreen.glade:2648 +#, fuzzy +msgid "" +"Single\n" +" Step" +msgstr "單間隔" -#: src/emc/task/emctaskmain.cc:853 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:2661 +#, fuzzy msgid "" -"command (%s) cannot be executed until the machine is out of E-stop and " -"turned on" -msgstr "命令 (%s) 不能執行 直到機器 離開 急停 並開動" +"Run At\n" +" Line" +msgstr "運行時間:" -#: src/emc/task/emctaskmain.cc:973 -#, c-format -msgid "can't do that (%s) in manual mode" -msgstr "不能做到這一點(%s)在手動模式" +#: src/emc/usr_intf/gscreen/gscreen.glade:2673 +msgid "" +"Change \n" +" View" +msgstr "" -#: src/emc/task/emctaskmain.cc:1072 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter idle" -msgstr "不能做到這一點(%s)在自動模式與翻譯空閒" +#: src/emc/usr_intf/gscreen/gscreen.glade:2760 +#, fuzzy +msgid "Homing\n" +msgstr "歸零(_g)" -#: src/emc/task/emctaskmain.cc:1132 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter reading" -msgstr "不能做到這一點(%s)在自動模式與翻譯閱讀" +#: src/emc/usr_intf/gscreen/gscreen.glade:2781 +msgid "" +"Ignore\n" +"Limits" +msgstr "" -#: src/emc/task/emctaskmain.cc:1216 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter paused" -msgstr "不能做到這一點(%s)在自動模式與翻譯暫停" +#: src/emc/usr_intf/gscreen/gscreen.glade:2810 +#, fuzzy +msgid "" +" Set\n" +"Override" +msgstr "設定 超越調整" -#: src/emc/task/emctaskmain.cc:1278 -#, c-format -msgid "can't do that (%s) in auto mode with the interpreter waiting" -msgstr "不能做到這一點(%s)在自動模式與翻譯等待" +#: src/emc/usr_intf/gscreen/gscreen.glade:2824 +msgid "Graphics\n" +msgstr "" -#: src/emc/task/emctaskmain.cc:1370 -#, c-format -msgid "can't do that (%s) in MDI mode" -msgstr "不能做到這一點(%s)在MDI模式" +#: src/emc/usr_intf/gscreen/gscreen.glade:2838 +#, fuzzy +msgid "" +"Menu\n" +"Level" +msgstr "等級" -#: src/emc/task/emctaskmain.cc:2015 -msgid "Can't switch mode while mode is AUTO and interpreter is not IDLE" -msgstr "無法切換模式,而模式是AUTO和解釋是沒有閒著" +#: src/emc/usr_intf/gscreen/gscreen.glade:2851 +msgid "" +" Launch\n" +"Keyboard" +msgstr "" -#: src/emc/task/emctaskmain.cc:2084 -msgid "Can't issue MDI command when not homed" -msgstr "不能發出 MDI命令當沒有歸零" +#: src/emc/usr_intf/gscreen/gscreen.glade:2868 +#, fuzzy +msgid "Select Buttons" +msgstr "輸入選項" -#: src/emc/task/emctaskmain.cc:2089 -msgid "Must be in MDI mode to issue MDI command" -msgstr "必須在MDI模式下發出 MDI命令" +#: src/emc/usr_intf/gscreen/gscreen.glade:2955 +#, fuzzy +msgid "" +"Unhome \n" +" All" +msgstr "離零" -#: src/emc/task/emctaskmain.cc:2151 -msgid "Can't run a program when not homed" -msgstr "不能運行程序,當沒有歸零" +#: src/emc/usr_intf/gscreen/gscreen.glade:2967 +#, fuzzy +msgid "" +"Unhome\n" +" Axis" +msgstr "離零 軸 _%s" -#: src/emc/rs274ngc/interp_arc.cc:108 src/emc/rs274ngc/rs274ngc_return.hh:160 -msgid "Zero radius arc" -msgstr "零半徑弧" +#: src/emc/usr_intf/gscreen/gscreen.glade:2979 +#: src/emc/usr_intf/gscreen/gscreen.glade:3084 +#, fuzzy +msgid "" +"Toggle\n" +"Readout" +msgstr "切換 淹浸" -#: src/emc/rs274ngc/interp_arc.cc:112 src/emc/rs274ngc/interp_arc.cc:279 -#, c-format +#: src/emc/usr_intf/gscreen/gscreen.glade:3004 msgid "" -"Radius to end of arc differs from radius to start: start=(%c%.4f,%c%.4f) " -"center=(%c%.4f,%c%.4f) end=(%c%.4f,%c%.4f) r1=%.4f r2=%.4f abs_err=%.4g " -"rel_err=%.4f%%" +"Jogging\n" +" Mode" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:90 -msgid "G4 not allowed with G2 or G3 because they both use P" -msgstr "G4 不准 和 G2 或 G3使用,因為它們都使用 P" +#: src/emc/usr_intf/gscreen/gscreen.glade:3016 +#, fuzzy +msgid "" +"coordinate\n" +" System" +msgstr "坐標系:" -#: src/emc/rs274ngc/interp_check.cc:93 -msgid "Line with G10 does not have L1, L10, L11, L2, or L20" +#: src/emc/usr_intf/gscreen/gscreen.glade:3060 +msgid "" +"Index\n" +" Tool" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:94 -msgid "P value not an integer with G10" -msgstr "P值不是整數使用 G10" +#: src/emc/usr_intf/gscreen/gscreen.glade:3072 +#, fuzzy +msgid "" +"Spindle\n" +"Controls" +msgstr "MPG 慢步 操控" -#: src/emc/rs274ngc/interp_check.cc:95 -msgid "P value out of range (0-9) with G10 L2 or L20" -msgstr "P值超出範圍(0-9)與 G10 L2或L20" +#: src/emc/usr_intf/gscreen/gscreen.glade:3195 +#, fuzzy +msgid "Open" +msgstr "打開..." -#: src/emc/rs274ngc/interp_check.cc:96 -msgid "P value out of range with G10 L1 or G10 L10" -msgstr "P值超出範圍使用 G10 L1或G10 L10" +#: src/emc/usr_intf/gscreen/gscreen.glade:3205 +#, fuzzy +msgid "" +" Block\n" +"Delete" +msgstr "刪除" -#: src/emc/rs274ngc/interp_check.cc:100 -msgid "Between G5.2 and G5.3 codes, only additional G5.2 codes are allowed." -msgstr "G5.2和G5.3之間代碼,只有更多的G5.2代碼是允許的." +#: src/emc/usr_intf/gscreen/gscreen.glade:3217 +#, fuzzy +msgid "" +"Optional\n" +" Stop" +msgstr "可選 的 停止" -#: src/emc/rs274ngc/interp_check.cc:258 -msgid "D word with no G41, G41.1, G42, G42.1, or G96 to use it" -msgstr "D 字無 G41,G41.1,G42,G42.1,或G96使用它" +#: src/emc/usr_intf/gscreen/gscreen.glade:3229 +msgid "" +" Full\n" +"View" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:264 -msgid "E word with no G76, M66, M67 or M68 to use it" -msgstr "E字無 G76,M66,M67或M68使用它" +#: src/emc/usr_intf/gscreen/gscreen.glade:3265 +#, fuzzy +msgid "" +"Next\n" +" Tab" +msgstr "下一個數值" -#: src/emc/rs274ngc/interp_check.cc:269 -msgid "H word with no G43 or G76 to use it" -msgstr "H字沒有 G43或G76使用它" +#: src/emc/usr_intf/gscreen/gscreen.glade:3285 +#, fuzzy +msgid "" +" Feed\n" +"Override" +msgstr "進給 超速" -#: src/emc/rs274ngc/interp_check.cc:275 -msgid "I word with no G2, G3, G5, G5.1, G10, G76, or G87 to use it" -msgstr "I字 沒有 G2,G3,G5,G5.1,G10,G76或G87使用它" +#: src/emc/usr_intf/gscreen/gscreen.glade:3298 +#, fuzzy +msgid "" +"Spindle\n" +"Override" +msgstr "設定主軸超速:" -#: src/emc/rs274ngc/interp_check.cc:281 -msgid "J word with no G2, G3, G5, G5.1, G10, G76 or G87 to use it" -msgstr "J字 沒有 G2,G3,G5,G5.1,G10,G76或G87使用它" +#: src/emc/usr_intf/gscreen/gscreen.glade:3311 +#, fuzzy +msgid "" +" Rapid\n" +"Override" +msgstr "主軸 超越" -#: src/emc/rs274ngc/interp_check.cc:287 -msgid "K word with no G2, G3, G33, G33.1, G76, or G87 to use it" -msgstr "K字 沒有 G2,G3,G33,G33.1,G76或G87使用它" +#: src/emc/usr_intf/gscreen/gscreen.glade:3332 +#, fuzzy +msgid "" +" Jog\n" +"Speed" +msgstr "慢步速率:" -#: src/emc/rs274ngc/interp_check.cc:297 +#: src/emc/usr_intf/gscreen/gscreen.glade:3345 +#, fuzzy msgid "" -"L word with no G10, cutter compensation, canned cycle, digital/analog input, " -"or NURBS code" -msgstr "L字無 G10,刀具補償,固定循環,數字/模擬輸入, 或 NURBS 代碼" +" Jog\n" +"Increments" +msgstr " 增 量 " -#: src/emc/rs274ngc/interp_check.cc:309 +#: src/emc/usr_intf/gscreen/gscreen.glade:3361 msgid "" -"P word with no G2 G3 G4 G10 G64 G5 G5.2 G76 G82 G86 G88 G89 or M50 M51 M52 " -"M53 M62 M63 M64 M65 M66 or user M code to use it" +"Adjust\n" +"Rotary" msgstr "" -"P字G2 G3 G4沒有 G5 G10 G64 G76 G82 G86 G88 G5.2 G89或M50 M51 M52 M53 M62 M63 " -"M64 M65 M66或用戶的M代碼使用它" -#: src/emc/rs274ngc/interp_check.cc:314 +#: src/emc/usr_intf/gscreen/gscreen.glade:3383 +msgid "" +"Change\n" +" View" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3431 #, fuzzy -msgid "P value not an integer with M19 G2 or G3" -msgstr "P值不是整數使用 G2或G3" +msgid "" +" Pan\n" +"Vertical" +msgstr "垂直" -#: src/emc/rs274ngc/interp_check.cc:316 -msgid "P value must be 0,1,or 2 with M19" +#: src/emc/usr_intf/gscreen/gscreen.glade:3444 +#, fuzzy +msgid "" +" Pan\n" +"Horizontal" +msgstr "水平" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3457 +#, fuzzy +msgid "" +" Rotate\n" +"Horiontal" +msgstr "水平" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3470 +#, fuzzy +msgid "" +" Rotate\n" +"Vertical" +msgstr "垂直" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3491 +msgid "" +"Search\n" +" Bwd" msgstr "" -#: src/emc/rs274ngc/interp_check.cc:318 -msgid "P value should be 1 or greater with G2 or G3" -msgstr "P值應為 1或更大的G2或G3" +#: src/emc/usr_intf/gscreen/gscreen.glade:3503 +msgid "" +"Search\n" +" Fwd" +msgstr "" -#: src/emc/rs274ngc/interp_check.cc:326 +#: src/emc/usr_intf/gscreen/gscreen.glade:3561 #, fuzzy msgid "" -"Q word with no G5, G10, G64, G73, G76, G83, M19, M66, M67, M68 or user M " -"code that uses it" +" Reload\n" +"Program" +msgstr "重裝 程序" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3604 +msgid "" +" Clear\n" +"status" msgstr "" -"Q字,沒有 G5,G10,G64,G73,G76,G83,M66,M67,M68或用戶 M代碼 使用它" -#: src/emc/rs274ngc/interp_check.cc:336 -msgid "R value must be within 0..360 with M19" +#: src/emc/usr_intf/gscreen/gscreen.glade:3634 +msgid "G54" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:138 -msgid "You must specify both X and Y coordinates for Control Points" -msgstr "您必須指定X和Y坐標對控制點" +#: src/emc/usr_intf/gscreen/gscreen.glade:3650 +msgid "calc" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:141 -msgid "Can specify P without X and Y only for the first control point" -msgstr "可以指定P沒有 X和Y只對第一個控制點" +#: src/emc/usr_intf/gscreen/gscreen.glade:3725 +msgid "test" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3728 +msgid "test2" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3778 +msgid "Data Entry" +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3805 +#, fuzzy +msgid "Calculator Entry" +msgstr "計算出比例" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3894 +#, fuzzy +msgid "Program Restart" +msgstr "顯示重開" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3909 +msgid "" +"Highlighting the run-at-line with the\n" +"up / down buttons or entering the line\n" +"directly." +msgstr "" + +#: src/emc/usr_intf/gscreen/gscreen.glade:3923 +msgid "" +"Line\n" +" Up" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:144 -msgid "Must specify positive weight P for every Control Point" -msgstr "必須指定積極重量P為每一個控制點" +#: src/emc/usr_intf/gscreen/gscreen.glade:3946 +msgid "" +" Line\n" +"Down" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:147 -msgid "Cannot make a NURBS with 0 feedrate" -msgstr "不能作出NURBS使用進給速度0" +#: src/emc/usr_intf/gscreen/gscreen.glade:4028 +msgid "S 1000" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:182 -msgid "Cannot use G5.3 without G5.2 first" -msgstr "不能使用 G5.3沒有 G5.2先行" +#: src/emc/usr_intf/gscreen/gscreen.glade:4098 +msgid " FWD" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:183 -#, c-format -msgid "" -"You must specify a number of control points at least equal to the order L = " -"%d" -msgstr "您必須指定一個數字控制點至少等於順序L =%d" +#: src/emc/usr_intf/gscreen/gscreen.glade:4133 +msgid " REV" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:212 -msgid "Cannot convert spline with cutter radius compensation" -msgstr "無法轉換 樣條曲線 有刀具半徑補償" +#: src/emc/usr_intf/gscreen/gscreen2.glade:35 +msgid "screen 2" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:222 -msgid "Splines must be in the XY plane" -msgstr "樣條曲線必須在XY平面" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:403 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:884 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:923 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:934 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:949 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1099 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1102 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1156 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1163 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1166 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2148 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2157 +msgid "**** GMOCCAPY INFO ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:227 -msgid "Splines may not have motion in Z, A, B, or C" -msgstr "樣條曲線 無法 有動作 在 Z,A,B 或 C" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:404 +msgid "**** no valid probe config in INI File ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:231 -msgid "Must specify both I and J with G5.1" -msgstr "必須同時指定I和J使用 G5.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:405 +msgid "**** disabled tool measurement ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:250 -msgid "Must specify both I and J, or neither" -msgstr "必須同時指定 I和J,或者兩者都不要" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:770 +msgid "**** GMOCCAPY ERROR : ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:261 -msgid "Must specify both P and Q with G5" -msgstr "必須同時指定P和Q使用 G5" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:772 +#, python-format +msgid "" +"**** gmoccapy can only handle 4 axis, ****\n" +"**** but you have given %d through your INI file ****\n" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:362 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:774 msgid "" -"The move just after exiting cutter compensation mode must be straight, not " -"an arc" -msgstr "移動只是在退出刀具補償模式必須是直的,而不是一個弧" +"**** gmoccapy will not start ****\n" +"\n" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:370 -msgid "Cannot do an arc in planes G17.1, G18.1, or G19.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:786 +#, fuzzy, python-format +msgid "Home axis %s" +msgstr "歸零 軸 _%s" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:885 +msgid "**** To many increments given in INI File for this screen ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:382 -#: src/emc/rs274ngc/interp_convert.cc:4266 -msgid "Cannot feed with zero spindle speed in feed per rev mode" -msgstr "不能進給 用 零速度主軸 在 進給每轉 模式下" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:886 +msgid "**** Only the first 10 will be reachable through this screen ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:393 -#: src/emc/rs274ngc/interp_convert.cc:399 -#: src/emc/rs274ngc/interp_convert.cc:408 -#: src/emc/rs274ngc/interp_convert.cc:414 -#: src/emc/rs274ngc/interp_convert.cc:423 -#: src/emc/rs274ngc/interp_convert.cc:429 -#, c-format -msgid "%c word missing in absolute center arc" -msgstr "%c 字中 缺少 在 絕對的中心弧" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:924 +msgid "**** gmoccapy screen 2 found ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:649 -msgid "" -"Radius of cutter compensation entry arc is not greater than the tool radius" -msgstr "刀具半徑補償進入弧不大於刀具半徑" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:929 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1055 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1177 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1225 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1837 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1844 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2190 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2200 +msgid "**** GMOCCAPY ERROR ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:868 -#: src/emc/rs274ngc/interp_convert.cc:878 src/emc/rs274ngc/interp_queue.cc:592 -msgid "" -"Arc move in concave corner cannot be reached by the tool without gouging" -msgstr "弧移動無法到達凹角 使用該工具 而沒有刨削槽" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:930 +msgid "**** screen 2 GLADE ERROR: ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:904 -msgid "Arc to arc motion is invalid because the arcs have the same center" -msgstr "弧至弧移動是無效的,因為有相同的弧中心" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:935 +msgid "**** No gmoccapy2.glade file present ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:907 -msgid "" -"Arc to arc motion makes a corner the compensated tool can't fit in without " -"gouging" -msgstr "弧至弧運動 做一個角落 補償工具 不適合 有刨削槽" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:950 +msgid "**** Invalid embeded tab configuration ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1036 -#: src/emc/rs274ngc/interp_convert.cc:1037 -#: src/emc/rs274ngc/interp_convert.cc:1038 -#: src/emc/rs274ngc/interp_convert.cc:3733 -#: src/emc/rs274ngc/interp_convert.cc:3736 -#: src/emc/rs274ngc/interp_convert.cc:3739 src/emc/rs274ngc/interp_find.cc:97 -#, c-format -msgid "Invalid absolute position %5.2f for wrapped rotary axis %c" -msgstr "無效的絕對位置 %5.2f 給包裹 旋轉軸 %c" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:951 +msgid "**** No tabs will be added! ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1494 -msgid "Cannot change control mode with cutter radius compensation on" -msgstr "不能改變控制模式 當 使用刀具半徑補償" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:964 +msgid "ERROR, trying to initialize the user tabs or panaels, check for typos" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1607 -msgid "Cannot change coordinate systems with cutter radius compensation on" -msgstr "不能改變坐標系 當 使用刀具半徑補償" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1056 +msgid "**** Did not find a toolfile file in [EMCIO] TOOL_TABLE ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1851 -#, c-format -msgid "G%d.1 with no D word" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1100 +msgid "**** audio available! ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1854 -#, c-format -msgid "G%d.1 with L word, but plane is not G18" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1103 +msgid "**** no audio available! ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1865 -#, c-format -msgid "G%d requires D word to be a whole number" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1104 +msgid "**** PYGST libray not installed? ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:1872 -#, c-format -msgid "G%d with lathe tool, but plane is not G18" -msgstr "G%d 與車刀,但平面不是 G18" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1157 +msgid "**** virtual keyboard program found : " +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2271 -msgid "Cannot set reference point with cutter compensation in effect" -msgstr "無法設置 參考點 當 使用刀具補償" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1164 +msgid "**** virtual keyboard program found : " +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2786 -#, c-format +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1167 msgid "" -"BUG: cannot restore from a lower call level (%d) to a higher call level (%d)" +"**** No virtual keyboard installed, we checked for and ." msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2787 -#, c-format -msgid "BUG: restore from level %d !?" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1178 +msgid "**** Error with launching virtual keyboard," msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2788 -#, c-format -msgid "BUG: restore to level %d !?" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1179 +msgid "**** is onboard or matchbox-keyboard installed? ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2807 -#, c-format -msgid "M7x: restore_settings G20/G21 failed: '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1193 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1875 +msgid "interrupt running macro" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2819 -#, c-format -msgid "M7x: restore_settings failed executing: '%s': %s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1226 +msgid "**** Did not find a parameter file in [RS274NGC] PARAMETER_FILE ****" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2885 -msgid "Cannot set motion output with cutter radius compensation on" -msgstr "無法設置 運動 輸出 當 刀具半徑補償 開" - -#: src/emc/rs274ngc/interp_convert.cc:2886 -msgid "No valid P word with M62" -msgstr "沒有有效的P字使用 M62" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1294 +msgid "Select the file you want to be loaded at program start" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2890 -msgid "Cannot set motion digital output with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1329 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1353 +#, python-format +msgid "**** GMOCCAPY ERROR **** /n Message type %s not suported" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2891 -msgid "No valid P word with M63" -msgstr "沒有有效的P字使用 M62" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1462 +msgid "Unknown error type and no error text given" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2895 -#: src/emc/rs274ngc/interp_convert.cc:2900 -msgid "Cannot set auxiliary digital output with cutter radius compensation on" -msgstr "無法設置附屬數碼輸出當刀具半徑補償在使用" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1478 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1840 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1847 +msgid "Important Warning" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2896 -msgid "No valid P word with M64" -msgstr "沒有有效的P字使用 M64" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1498 +msgid "ERROR : External ESTOP is set, could not change state!" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2901 -msgid "No valid P word with M65" -msgstr "沒有有效的P字使用 M65" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1511 +msgid "ERROR : Could not switch the machine on, is limit switch aktivated?" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2931 -msgid "invalid P-word with M66" -msgstr "沒有有效的P字使用 M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1730 +msgid "It is not possible to change to MDI Mode at the moment" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2946 -msgid "Cannot wait for digital input with cutter radius compensation on" -msgstr "不能等待數碼輸入當刀具半徑補償在使用" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1754 +msgid "It is not possible to change to Auto Mode at the moment" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2958 -msgid "Cannot wait for analog input with cutter radius compensation on" -msgstr "不能等待模擬輸入當刀具半徑補償在使用" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1838 +msgid "" +"\n" +"**** No subroutine folder or program prefix is given in the ini file **** \n" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2973 -msgid "Cannot set motion analog output with cutter radius compensation on" -msgstr "無法設置運動模擬輸出當刀具半徑補償在使用" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1839 +msgid "**** so the corresponding file could not be found ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2974 -msgid "Invalid analog index with M67" -msgstr "無效的模擬指標使用 M67" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1845 +#, python-format +msgid "" +"\n" +"**** File %s of the macro could not be found ****\n" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2980 -msgid "Cannot set auxiliary analog output with cutter radius compensation on" -msgstr "無法設置輔助模擬輸出當刀具半徑補償在使用" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1846 +#, python-format +msgid "**** we searched in subdirectory %s ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:2981 -msgid "Invalid analog index with M68" -msgstr "無效的模擬指標使用 M68" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1851 +msgid "Enter value:" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3012 -#, fuzzy -msgid "Need non-negative Q-word to specify tool number with M61" -msgstr "需要正的 Q-字 指定刀具號 當使用M61" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1852 +#, fuzzy, python-format +msgid "Set parameter %s to:" +msgstr " 參數(_m) " -#: src/emc/rs274ngc/interp_convert.cc:3087 -msgid "Q word with M19 requires a value > 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1854 +msgid "conversion error" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3115 -msgid "Cannot restore context from invalid stack frame - missing M70/M73?" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1855 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3610 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3634 +msgid "Conversion error !" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3156 -#: src/emc/rs274ngc/interp_convert.cc:3173 -#: src/emc/rs274ngc/interp_convert.cc:3188 -#: src/emc/rs274ngc/interp_convert.cc:3202 -#: src/emc/rs274ngc/interp_convert.cc:3216 -msgid "Cannot enable overrides with cutter radius compensation on" -msgstr "無法啟用超速 當刀具半徑補償在使用" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:1856 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3299 +msgid "" +"Please enter only numerical values\n" +"Values have not been applied" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3163 -#: src/emc/rs274ngc/interp_convert.cc:3178 -#: src/emc/rs274ngc/interp_convert.cc:3193 -#: src/emc/rs274ngc/interp_convert.cc:3207 -#: src/emc/rs274ngc/interp_convert.cc:3221 -msgid "Cannot disable overrides with cutter radius compensation on" -msgstr "無法禁用超速 當刀具半徑補償在使用" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2149 +#, python-brace-format +msgid "**** replaced {0} to {1} ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3325 -#: src/emc/rs274ngc/interp_convert.cc:3326 -#: src/emc/rs274ngc/interp_convert.cc:3327 -#, c-format -msgid "Indexing axis %c can only be moved with G0" -msgstr "指標軸 %c 只能 用 G0 移動" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2158 +msgid "" +"\n" +"**** found more than 9 macros, only the first 9 will be used ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3334 -#: src/emc/rs274ngc/interp_convert.cc:3336 -#: src/emc/rs274ngc/interp_convert.cc:3338 -#, c-format -msgid "Indexing axis %c can only be moved alone" -msgstr "指標軸 %c 只能單獨移動 " +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2191 +#, python-format +msgid "**** %s ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3433 -msgid "Cannot probe with feed per rev mode" -msgstr "無法 探測 使用 進給每轉 模式" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2201 +#, python-format +msgid "**** No widget named: %s to sensitize ****" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3481 -msgid "Cannot change retract mode with cutter radius compensation on" -msgstr "不能改變回縮模式當刀具半徑補償在使用" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2366 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1561 +msgid "No tool description available" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3515 -msgid "G10 L1 without offsets has no effect" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2591 +#, python-format +msgid "Halo, welcome to the test message %d" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3621 -msgid "Q number in G10 is not an integer" -msgstr "Q 編號在 G10 是不是整數" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2732 +msgid "Hal Pin is low, Access denied" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3622 -msgid "Invalid tool orientation" -msgstr "無效的刀具定位" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2734 +msgid "wrong code entered, Access denied" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3721 -msgid "I J words not allowed with G10 L2" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2735 +msgid "Just to warn you" msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3742 -msgid "" -"Cannot change the active coordinate system with cutter radius compensation on" -msgstr "不能改變激活的坐標系當刀具半徑補償在使用" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2810 +msgid "ERROR : No limit switch is active, ignore limits will not be set." +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:3750 -msgid "R not allowed in G10 L20" -msgstr "R 不容許在 G10 L20" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2850 +#, fuzzy +msgid "Classicladder real-time component not detected" +msgstr "實時元件沒有加載" -#: src/emc/rs274ngc/interp_convert.cc:4323 -msgid "Spindle not turning in G33" -msgstr "在 G33 主軸不轉動" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:2937 +msgid "Something went wrong, we have an unknown spindle widget" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4333 -msgid "Spindle not turning in G33.1" -msgstr "在 G33.1 主軸不轉動" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3046 +msgid "Do you really want to delete the MDI history?\n" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4376 -msgid "BUG: An axis incorrectly moved along with an indexer" -msgstr "BUG: 一軸錯誤地和索引器一起移動" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3047 +msgid "this will not delete the MDI History file, but will\n" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4389 -msgid "BUG: trying to index incorrect axis" -msgstr "BUG: 試圖指標不正確軸" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3048 +msgid "delete the listbox entries for this session" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4481 -msgid "Cannot use G76 threading cycle with cutter radius compensation on" -msgstr "不能使用G76螺紋週期當刀具半徑補償在使用" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3049 +msgid "Attention!!" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4484 -msgid "In G76, I must not be 0" -msgstr "在 G76,I 不能為 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3076 +msgid "This button will show or hide the keyboard" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4486 -msgid "In G76, J must be greater than 0" -msgstr "在 G76,J 必須大於 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3196 +#, python-format +msgid "Offset %s could not be set, because off unknown axis" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4488 -msgid "In G76, K must be greater than J" -msgstr "在 G76,K 必須大於 J" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3197 +msgid "Wrong offset setting!" +msgstr "" -#: src/emc/rs274ngc/interp_convert.cc:4631 -msgid "" -"Length of cutter compensation entry move is not greater than the tool radius" -msgstr "刀具長度補償 進入移動 不大於刀具半徑" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3202 +#, fuzzy +msgid "Enter value for diameter" +msgstr "非整數值對整數" -#: src/emc/rs274ngc/interp_convert.cc:4850 -msgid "Zero degree inside corner is invalid for cutter compensation" -msgstr "零度內角 是無效的刀具補償" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3203 +#, fuzzy +msgid "Set diameter to:" +msgstr " 直徑" -#: src/emc/rs274ngc/interp_convert.cc:4888 -#: src/emc/rs274ngc/interp_convert.cc:4896 -msgid "" -"Arc to straight motion makes a corner the compensated tool can't fit in " -"without gouging" -msgstr "弧到直線運動做的角,補償工具不適合會做成刨削槽" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3206 +#, fuzzy +msgid "Enter value for radius" +msgstr "非整數值對整數" -#: src/emc/rs274ngc/interp_convert.cc:4980 -msgid "Cannot change tools with cutter radius compensation on" -msgstr "不能更改工具,刀具半徑補償在使用" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3207 +#, fuzzy +msgid "Set radius to:" +msgstr " 半徑" -#: src/emc/rs274ngc/interp_convert.cc:5101 -msgid "Cannot change tool offset with cutter radius compensation on" -msgstr "不能改變刀具補償當刀具半徑補償在使用" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3210 +#, fuzzy, python-format +msgid "Enter value for axis %s" +msgstr "非整數值對整數" -#: src/emc/rs274ngc/interp_queue.cc:590 -#, c-format -msgid "" -"BUG: cutter compensation has generated an invalid arc with mismatched radii " -"r1 %f r2 %f\n" -msgstr "BUG: 刀具補償產生了一個無效的圓弧半徑不匹配的 r1 %f r2 %f\n" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3211 +#, fuzzy, python-format +msgid "Set axis %s to:" +msgstr "設定軸 偏移量:" -#: src/emc/rs274ngc/interp_queue.cc:612 -msgid "BUG: Unsupported plane in cutter compensation" -msgstr "BUG: 不支持的平面刀具補償" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3215 +msgid "Conversion error in btn_set_value" +msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:622 -msgid "" -"Straight traverse in concave corner cannot be reached by the tool without " -"gouging" -msgstr "直導線在凹角不能達到,會做成刨削槽" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3216 +msgid "Conversion error in btn_set_value!" +msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:650 -#, c-format -msgid "BUG: Unsupported plane [%d] in cutter compensation" -msgstr "BUG: 不支持的平面 [%d] 中的刀具補償" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3217 +msgid "Please enter only numerical values. Values have not been applied" +msgstr "" -#: src/emc/rs274ngc/interp_queue.cc:661 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3232 msgid "" -"Straight feed in concave corner cannot be reached by the tool without gouging" -msgstr "在凹角直進給不能達到,會做成刨削槽" - -#: src/emc/rs274ngc/interp_cycles.cc:628 -msgid "Cannot feed with zero feed rate" -msgstr "不能進給當進給速率為零" +"you did not selected a system to be changed to, so nothing will be changed" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:629 -msgid "Cannot use inverse time feed with canned cycles" -msgstr "不能用反時限進給 當使用固定循環" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3233 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3640 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3654 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3658 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3673 +msgid "Important Warning!" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:630 -msgid "Cannot use canned cycles with cutter compensation on" -msgstr "不能用固定循環當刀具補償在使用中" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3284 +msgid "Enter the block height" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:818 -msgid "G17 canned cycle is not possible on a machine without Z axis" -msgstr "G17 固定循環是不可能的,機器上沒有 Z 軸" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3285 +msgid "Block height measured from base table" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1004 -msgid "G17.1 canned cycle is not possible on a machine without W axis" -msgstr "G17.1 固定循環是不可能的機器上沒有 W 軸" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3297 +msgid "Conversion error in btn_block_height" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1220 -msgid "G19 canned cycle is not possible on a machine without X axis" -msgstr "G19 固定循環是不可能的機器上沒有 X 軸" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3298 +msgid "Conversion error in btn_block_height!" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1388 -msgid "G19.1 canned cycle is not possible on a machine without U axis" -msgstr "G19.1 固定循環是不可能的機器上沒有 U 軸" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3536 +msgid "Please remove the mounted tool and press OK when done" +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1613 -msgid "G18 canned cycle is not possible on a machine without Y axis" -msgstr "G18 固定循環是不可能的機器上沒有 Y 軸" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3539 +#, python-brace-format +msgid "" +"Please change to tool\n" +"\n" +"# {0:d} {1}\n" +"\n" +" then click OK." +msgstr "" -#: src/emc/rs274ngc/interp_cycles.cc:1780 -msgid "G18.1 canned cycle is not possible on a machine without V axis" -msgstr "G18.1 固定循環是不可能的機器上沒有 V 軸" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3549 +msgid "Tool Change has been aborted!\n" +msgstr "" -#: src/emc/rs274ngc/interp_find.cc:170 -msgid "Cannot use polar coordinates with G53" -msgstr "不能用極坐標使用 G53" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3550 +msgid "The old tool will remain set!" +msgstr "" -#: src/emc/rs274ngc/interp_find.cc:266 src/emc/rs274ngc/interp_find.cc:271 -#: src/emc/rs274ngc/interp_find.cc:278 src/emc/rs274ngc/interp_find.cc:337 -#: src/emc/rs274ngc/interp_find.cc:347 -msgid "Cannot specify X or Y words with polar coordinate" -msgstr "無法指定X或Y字當使用極坐標" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3570 +msgid "No or more than one tool selected in tool table" +msgstr "" -#: src/emc/rs274ngc/interp_find.cc:272 -msgid "Must specify angle in polar coordinate if at the origin" -msgstr "必須指定角度在極坐標如過在原點" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3571 +msgid "Please select only one tool in the table" +msgstr "" -#: src/emc/rs274ngc/interp_find.cc:338 -msgid "" -"Incremental motion with polar coordinates is indeterminate when at the origin" -msgstr "增量運動使用極坐標是不確定的,當在原點" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3573 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3580 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3589 +msgid "Warning Tool Touch off not possible!" +msgstr "" -#: src/emc/rs274ngc/interp_find.cc:348 -msgid "G91 motion with polar coordinates is indeterminate when at the origin" -msgstr "G91運動使用極坐標是不確定的,當在原點" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3577 +msgid "you can not touch of a tool, witch is not mounted in the spindle" +msgstr "" -#: src/emc/rs274ngc/interp_find.cc:720 -#, c-format -msgid "Requested tool %d not found in the tool table" -msgstr "請求工具 %d 刀具表找不到" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3578 +msgid "your selection has been reseted to the tool in spindle" +msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:154 -msgid "Cannot use polar coordinate on a machine lacking X or Y axes" -msgstr "不能用極坐標的機器上沒有 X或Y軸" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3586 +#, fuzzy +msgid "" +"Tool touch off is not possible with cutter radius compensation switched on!\n" +msgstr "不能改變刀具補償當刀具半徑補償在使用" -#: src/emc/rs274ngc/interp_internal.cc:155 -msgid "Cannot use polar coordinate except in G17 plane" -msgstr "不能使用極坐標除在G17平面" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3587 +msgid "Please emit an G40 before tool touch off" +msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:156 -msgid "Cannot specify both polar coordinate and X word" -msgstr "不能同時指定極坐標和 X 字" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3597 +msgid "Real big error!" +msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:157 -msgid "Cannot specify both polar coordinate and Y word" -msgstr "不能同時指定極坐標和 Y 字" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3598 +msgid "" +"You managed to come to a place that is not possible in on_btn_tool_touchoff" +msgstr "" -#: src/emc/rs274ngc/interp_internal.cc:178 -#: src/emc/rs274ngc/interp_internal.cc:190 -#: src/emc/rs274ngc/interp_internal.cc:203 -msgid "Polar coordinates can only be used for motion" -msgstr "極坐標只能用於運動" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3602 +#, fuzzy, python-format +msgid "Enter value for axis %s to set:" +msgstr "非整數值對整數" -#: src/emc/rs274ngc/interp_read.cc:1143 src/emc/rs274ngc/interp_read.cc:1147 -#, c-format -msgid "Bad character '\\%03o' used" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3603 +#, python-brace-format +msgid "Set parameter of tool {0:d} and axis {1} to:" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1147 -#, c-format -msgid "Bad character '%c' used" -msgstr "使用了錯誤字元 '%c'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3608 +#, python-format +msgid "Conversion error because of wrong entry for touch off axis %s" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1671 -msgid "Left bracket missing after 'while'" -msgstr "'while' 後丟失左括號" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3628 +msgid "Enter the tool number as integer " +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1686 -msgid "Left bracket missing after 'repeat'" -msgstr "'repeat' 後丟失左括號" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3629 +#, fuzzy +msgid "Select the tool to change" +msgstr "選擇項目 以探測" -#: src/emc/rs274ngc/interp_read.cc:1701 -msgid "Left bracket missing after 'if'" -msgstr "'if' 後丟失左括號" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3631 +msgid "Conversion error because of wrong entry for tool number\n" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1716 -msgid "Left bracket missing after 'elseif'" -msgstr "'elseif' 後丟失左括號" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3632 +msgid "enter only integer nummbers" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1919 -msgid "Cannot read current position with cutter radius compensation on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3639 +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3657 +msgid "Selected tool is already in spindle, no change needed." msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1934 -msgid "Expected # reading parameter" -msgstr "預計 # 讀參數" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3653 +msgid "" +"you selected no or more than one tool, the tool selection must be unique" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:1936 -msgid "Expected ] reading bracketed parameter" -msgstr "預期 ] 讀方括號內的參數" +#: src/emc/usr_intf/gmoccapy/gmoccapy.py:3672 +msgid "Could not understand the entered tool number. Will not change anything" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2608 -#, c-format -msgid "bad number format (conversion failed) parsing '%s'" -msgstr "不良數字格式 (轉換失敗) 解析 '%s'" +#: src/emc/usr_intf/gmoccapy/dialogs.py:33 +#: src/emc/usr_intf/gmoccapy/dialogs.py:38 +msgid "Enter System Unlock Code" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2609 -#, c-format -msgid "bad number format (trailing characters) parsing '%s'" -msgstr "不良數字格式 (尾隨字符) 解析 '%s'" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter value" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2699 -msgid "Calculation resulted in 'not a number'" -msgstr "計算結果 'not a number'" +#: src/emc/usr_intf/gmoccapy/dialogs.py:59 +msgid "Enter the value to set" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2701 -msgid "Calculation resulted in 'infinity'" -msgstr "計算結果 'infinity'" +#: src/emc/usr_intf/gmoccapy/notification.py:205 +#, python-format +msgid "Error trying to delet the message with number %s" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:2994 -#, c-format -msgid "EOF in file:%s seeking o-word: o<%s> from line: %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:409 +msgid "left rotate, middle move, right zoom" msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3106 -msgid "Multiple U words on one line" -msgstr "多個 U 字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:413 +msgid "left zoom, middle move, right rotate" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3122 -msgid "Multiple V words on one line" -msgstr "多個 V 字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:417 +msgid "left move, middle rotate, right zoom" +msgstr "" -#: src/emc/rs274ngc/interp_read.cc:3138 -msgid "Multiple W words on one line" -msgstr "多個 W 字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:421 +msgid "left zoom, middle rotate, right move" +msgstr "" -#: src/emc/rs274ngc/interp_o_word.cc:95 -#, c-format -msgid "File:%s line:%d redefining sub: o|%s| already defined in file:%s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:425 +msgid "left move, middle zoom, right rotate" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:161 -#, c-format -msgid "Named parameter #<%s> not defined" -msgstr "命名參數 #<%s> 沒有定義" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:429 +msgid "left rotate, middle zoom, right move" +msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:191 -#, fuzzy, c-format -msgid "cant open ini file '%s'" -msgstr "不能打開 %s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:526 +#, fuzzy +msgid "clear plot" +msgstr "清除 現場 繪圖" -#: src/emc/rs274ngc/interp_namedparams.cc:208 -#, fuzzy, c-format -msgid "Named ini parameter #<%s> not found in inifile '%s': error=0x%x" -msgstr "命名參數 #<%s> 沒有定義" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:585 +#, fuzzy +msgid "view perspective" +msgstr "透視 視圖" -#: src/emc/rs274ngc/interp_namedparams.cc:232 -#, c-format -msgid "fetch_hal_param: hal_init(%s): %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:608 +msgid "view along the X axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:233 -#, c-format -msgid "fetch_hal_param: hal_ready(): %d" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:633 +msgid "view along the Y axis from positive to negative" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:370 -#, c-format -msgid "Internal error: Could not assign #<%s>" -msgstr "內部錯誤:無法指派 #<%S>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:658 +msgid "view along the Z axis from positive to negative" +msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:378 -#, c-format -msgid "Cannot assign to read-only parameter #<%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:685 +msgid "Show or hide tool path" msgstr "" -#: src/emc/rs274ngc/interp_namedparams.cc:682 -#, c-format -msgid "BUG: lookup_named_param(%s): unhandled index=%fn" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:708 +msgid "Show or hide dimensions" msgstr "" -#: src/emc/rs274ngc/rs274ngc_pre.cc:1269 src/emc/rs274ngc/rs274ngc_pre.cc:1344 -msgid "Queue is not empty after tool change" -msgstr "換刀後隊列不空" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:731 +msgid "" +"view along the Y axis from positive to negative as viewn for a back tool " +"lathe" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_pre.cc:1648 -#, c-format -msgid "Unable to open parameter file: '%s'" -msgstr "無法打開參數文件: '%s'" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:791 +#, fuzzy +msgid "Offset Page" +msgstr "偏移 值 " -#: src/emc/rs274ngc/rs274ngc_return.hh:4 -msgid "A file is already open" -msgstr "一個文件已經打開" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:809 +#, fuzzy +msgid "Tooledit" +msgstr "刀具" -#: src/emc/rs274ngc/rs274ngc_return.hh:5 -msgid "All axes missing with g92" -msgstr "所有軸缺少使用 G92" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:831 +msgid "File Selection" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:6 -msgid "All axes missing with motion code" -msgstr "所有軸缺少運動代碼" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:869 +#, fuzzy +msgid "Toggle between metric and imperial units" +msgstr "切換 拖動 和 旋轉 模式" -#: src/emc/rs274ngc/rs274ngc_return.hh:7 -msgid "Arc radius too small to reach end point" -msgstr "圓弧半徑太小,無法達到終點" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:887 +msgid "Switch DRO to DTG mode" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:8 -msgid "Argument to acos out of range" -msgstr "acos 參數超出範圍" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:905 +#, fuzzy +msgid "Toggle between machine and relative coordinates" +msgstr "切換 拖動 和 旋轉 模式" -#: src/emc/rs274ngc/rs274ngc_return.hh:9 -msgid "Argument to asin out of range" -msgstr "asin 參數超出範圍" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:928 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:946 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:963 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:980 +msgid "Klick to toggle through the DRO modes" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:10 -msgid "Attempt to divide by zero" -msgstr "嘗試除以零" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1253 +#, fuzzy +msgid "Ignore limits" +msgstr "超速 極限" -#: src/emc/rs274ngc/rs274ngc_return.hh:11 -msgid "Attempt to raise negative to non integer power" -msgstr "試圖提高負對非整數冪" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1321 +#, fuzzy +msgid "Jogging" +msgstr "歸零" -#: src/emc/rs274ngc/rs274ngc_return.hh:12 -msgid "Bad format unsigned integer" -msgstr "壞格式無符號整數" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1430 +msgid "Information over the tool in spindle" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:13 -msgid "Bad number format" -msgstr "錯誤的數字格式" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1448 +#, fuzzy +msgid "Tool no." +msgstr "刀具訊息" -#: src/emc/rs274ngc/rs274ngc_return.hh:14 -msgid "Bug bad g code modal group 0" -msgstr "錯誤: 不良 g 代碼模式組 0" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1474 +#, fuzzy +msgid "Diameter" +msgstr " 直徑" -#: src/emc/rs274ngc/rs274ngc_return.hh:15 -msgid "Bug code not g0 or g1" -msgstr "錯誤: 代碼不 g0 或 g1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1503 +#, fuzzy +msgid "offset z" +msgstr "偏移" -#: src/emc/rs274ngc/rs274ngc_return.hh:16 -msgid "Bug code not g17 g18 or g19" -msgstr "錯誤: 代碼不是 g17 g18或 g19" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1532 +#, fuzzy +msgid "offset x" +msgstr "偏移" -#: src/emc/rs274ngc/rs274ngc_return.hh:17 -msgid "Bug code not g20 or g21" -msgstr "錯誤: 代碼不是 g20 或 g21" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1580 +#, fuzzy +msgid "Tool information" +msgstr "配置" -#: src/emc/rs274ngc/rs274ngc_return.hh:18 -msgid "Bug code not g28 or g30" -msgstr "錯誤: 代碼不是 g28 或g30" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1592 +msgid "G and M code information as well as speed and feed" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:19 -msgid "Bug code not g2 or g3" -msgstr "錯誤: 代碼不是 g2 或 g3" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1611 +#, fuzzy +msgid "active_mcodes_label" +msgstr "代碼中使用負值m" -#: src/emc/rs274ngc/rs274ngc_return.hh:20 -msgid "Bug code not g4 g10 g28 g30 g53 or g92 series" -msgstr "錯誤: 代碼 g10 g28 g30 不是 g4 g53 或 g92系列" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1663 +#, fuzzy +msgid "active_gcodes_label" +msgstr "代碼中使用負值g" -#: src/emc/rs274ngc/rs274ngc_return.hh:21 -msgid "Bug code not g61 g61.1 or g64" -msgstr "錯誤: 代碼不是 g61或 g64 g61.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1717 +#, fuzzy +msgid "G-Code" +msgstr "電源" -#: src/emc/rs274ngc/rs274ngc_return.hh:22 -msgid "Bug code not g90 or g91" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1730 +msgid "The name and location of the loaded program" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:23 -msgid "Bug code not g98 or g99" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1742 +#, fuzzy +msgid "No Program loaded" +msgstr "程序檔案" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1750 +#, fuzzy +msgid "Program" +msgstr "電源" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1800 +msgid "Vel." msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:24 -msgid "Bug code not in g92 series" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1814 +msgid "Displays the current velocity" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:25 -msgid "Bug code not in range g54 to g593" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1838 +msgid "adjust max vel of machine" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:26 -msgid "Bug code not m0 m1 m2 m30 m60" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1854 +#, fuzzy +msgid "Max. Velocity" +msgstr "外部 進給 超速" -#: src/emc/rs274ngc/rs274ngc_return.hh:27 -msgid "Bug distance mode not g90 or g91" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1885 +msgid "Displayes the programmed feed rate" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:28 -msgid "Bug function should not have been called" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1904 +#, fuzzy +msgid "reset feed override to 100 %" +msgstr "進給 超速設為從 0% 至 100%" -#: src/emc/rs274ngc/rs274ngc_return.hh:29 -msgid "Bug in tool radius comp" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1922 +#, fuzzy +msgid "adjust feed override" +msgstr "設定 超速調整:" -#: src/emc/rs274ngc/rs274ngc_return.hh:30 -msgid "Bug plane not xy yz or xz" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:1941 +#, fuzzy +msgid "Feed Override [%]" +msgstr "外部 進給 超速" -#: src/emc/rs274ngc/rs274ngc_return.hh:31 -msgid "Bug side not right or left" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2034 +#, fuzzy +msgid "Cooling" +msgstr "冷卻液" -#: src/emc/rs274ngc/rs274ngc_return.hh:32 -msgid "Bug unknown motion code" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2285 +#, fuzzy +msgid "Spindle [rpm]" +msgstr "主軸" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2377 +msgid "" +"Search\n" +" back" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:33 -msgid "Bug unknown operation" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2394 +msgid "" +"Search\n" +" fwd" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:34 -msgid "Cannot change axis offsets with cutter radius comp" -msgstr "軸向的偏置" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2446 +#, fuzzy +msgid "" +"Replace\n" +" Text:" +msgstr "替換:" -#: src/emc/rs274ngc/rs274ngc_return.hh:35 -msgid "Cannot create backup file" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2456 +#, fuzzy +msgid "" +"Replace\n" +" All" +msgstr "全部替換" -#: src/emc/rs274ngc/rs274ngc_return.hh:36 -msgid "Cannot do g1 with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2470 +msgid "" +"Ignore\n" +" Case" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:37 -msgid "Cannot do zero repeats of cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2616 +msgid "Start as fullscreen" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:38 -msgid "Cannot make arc with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2631 +msgid "Start maximized" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:39 -msgid "Cannot open backup file" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2646 +msgid "Start as window" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:40 -msgid "Cannot open variable file" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2670 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4426 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4943 +#, fuzzy +msgid "X Pos." +msgstr "位置" -#: src/emc/rs274ngc/rs274ngc_return.hh:41 -msgid "Cannot probe with cutter radius comp on" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2683 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4437 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4928 +#, fuzzy +msgid "Y Pos." +msgstr "位置" -#: src/emc/rs274ngc/rs274ngc_return.hh:42 -msgid "Cannot probe with zero feed rate" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2698 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4855 +msgid "Width" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:43 -msgid "Cannot put a b in canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2713 +msgid "Height" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:44 -msgid "Cannot put a c in canned cycle" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2811 +msgid "hide cursor" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:45 -msgid "Cannot put an a in canned cycle" -msgstr "" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2830 +#, fuzzy +msgid "Main Window" +msgstr "機器 基本" -#: src/emc/rs274ngc/rs274ngc_return.hh:46 -msgid "Cannot turn cutter radius comp on when on" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2857 +#, fuzzy +msgid "Show keyboard on offset" +msgstr "顯示 偏移量(_f)" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2871 +msgid "Show keyboard on tooledit" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:47 -msgid "Cannot use axis values with g80" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2885 +msgid "Show keyboard on MDI" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:48 -msgid "Cannot use axis values without a g code that uses them" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2899 +msgid "Show keyboard on EDIT" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:49 -msgid "Cannot use g28 or g30 with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2913 +msgid "Show keyboard on load file" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:50 -msgid "Cannot use g53 incremental" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2931 +#, fuzzy +msgid "Keyboard" +msgstr "電源" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2959 +#, fuzzy +msgid "show preview" +msgstr "預演" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2973 +#, fuzzy +msgid "show offsets" +msgstr "顯示 偏移量(_f)" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:2991 +msgid "On Touch off" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:51 -msgid "Cannot use g53 with cutter radius comp" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3005 +msgid "" +" Display \n" +"Aux Screen" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:52 -msgid "Cannot use two g codes that both use axis values" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3052 +#, fuzzy +msgid "Relative Color" +msgstr "相對位置" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3079 +#, fuzzy +msgid "Absolute Color" +msgstr "絕對反饋" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3110 +msgid "DTG Color" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:53 -msgid "Command too long" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3139 +msgid "Use Auto Units" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:54 -msgid "Current point same as end point of arc" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3159 +msgid "Show the DRO Button" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:55 -msgid "Dwell time missing with g4" -msgstr "停留時間缺少使用 G4 " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3190 +#, fuzzy +msgid "Homed color" +msgstr "全部 歸零" -#: src/emc/rs274ngc/rs274ngc_return.hh:56 -msgid "Dwell time p word missing with g82" -msgstr "停留時間 P字樣缺少使用 G82" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3204 +#, fuzzy +msgid "Unhomed color" +msgstr "離零" -#: src/emc/rs274ngc/rs274ngc_return.hh:57 -msgid "Dwell time p word missing with g86" -msgstr "停留時間 P字樣缺少使用 G86" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3299 +msgid "Digits" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:58 -msgid "Dwell time p word missing with g88" -msgstr "停留時間 P字樣缺少使用 G88" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3344 +msgid "" +"toggle DRO mode \n" +"clicking on the DRO" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:59 -msgid "Dwell time p word missing with g89" -msgstr "停留時間 P字樣缺少使用 G89" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3369 +#, fuzzy +msgid "DRO" +msgstr "電源" -#: src/emc/rs274ngc/rs274ngc_return.hh:60 -msgid "Equal sign missing in parameter setting" -msgstr "參數 設置 缺少 等號" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3401 +#, fuzzy +msgid "Grid size" +msgstr "大小" -#: src/emc/rs274ngc/rs274ngc_return.hh:61 -msgid "F word missing with inverse time arc move" -msgstr "反時限 圓弧 移動 缺少 F字" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3430 +#, fuzzy +msgid "Show DRO" +msgstr "展示" -#: src/emc/rs274ngc/rs274ngc_return.hh:62 -msgid "F word missing with inverse time g1 move" -msgstr "反時限 G1 移動 缺少 F字" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3444 +#, fuzzy +msgid "Show offsets" +msgstr "顯示 偏移量(_f)" -#: src/emc/rs274ngc/rs274ngc_return.hh:63 -msgid "File ended with no percent sign" -msgstr "文件結束時沒有%符號" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3458 +#, fuzzy +msgid "Show DTG" +msgstr "展示" -#: src/emc/rs274ngc/rs274ngc_return.hh:64 -msgid "File ended with no percent sign or program end" -msgstr "文件結束時沒有%或程序結束" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3483 +#, fuzzy +msgid "Mouse Button mode" +msgstr "外部 按鈕 慢步" -#: src/emc/rs274ngc/rs274ngc_return.hh:65 -msgid "File name too long" -msgstr "文件名太長" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3512 +#, fuzzy +msgid "Preview" +msgstr "電源" -#: src/emc/rs274ngc/rs274ngc_return.hh:66 -msgid "G code out of range" -msgstr "G代碼超出範圍" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3565 +#, fuzzy +msgid "" +"current\n" +" file" +msgstr "重新打開 當前 文件 [Control-R]" -#: src/emc/rs274ngc/rs274ngc_return.hh:67 -msgid "I word given for arc in yz plane" -msgstr "I字給予弧YZ平面" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3611 +msgid "File to load on start" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:68 -msgid "I word missing with g87" -msgstr "G87 缺少 I字" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3638 +#, fuzzy +msgid "Select user dir" +msgstr "選擇 慢步 速度" -#: src/emc/rs274ngc/rs274ngc_return.hh:69 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3647 #, fuzzy -msgid "J word given for arc in xz plane" -msgstr "I字給予弧YZ平面" +msgid "Select jump to dir" +msgstr "選擇項目 以探測" -#: src/emc/rs274ngc/rs274ngc_return.hh:70 -msgid "J word missing with g87" -msgstr "J字缺少使用 G87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3767 +msgid "Themes and sound" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:71 -msgid "K word given for arc in xy plane" -msgstr "K字給予弧XY平面" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3799 +msgid "Appearance" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:72 -msgid "K word missing with g87" -msgstr "K字缺少使用 G87" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3833 +#, fuzzy +msgid "Scale max velocity" +msgstr "最 大 線 性 速 度" -#: src/emc/rs274ngc/rs274ngc_return.hh:73 -msgid "Left bracket missing after slash with atan" -msgstr "左括號後丟失斜線使用 atan" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3846 +#, fuzzy +msgid "Scale jog velocity" +msgstr "顯示 速率(_e)" -#: src/emc/rs274ngc/rs274ngc_return.hh:74 -msgid "Left bracket missing after unary operation name" -msgstr "左括號後丟失一元運算操作的名稱" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3861 +#, fuzzy +msgid "Scale feed override" +msgstr "設定 超速調整:" -#: src/emc/rs274ngc/rs274ngc_return.hh:75 -msgid "M code greater than 199" -msgstr "M代碼大於199" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3876 +#, fuzzy +msgid "Scale spindle override" +msgstr "設定 主軸超速" -#: src/emc/rs274ngc/rs274ngc_return.hh:76 -msgid "Mixed radius ijk format for arc" -msgstr "混合半徑 ijk 格式圓弧" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3970 +#, fuzzy +msgid "Hardware MPG Scale" +msgstr "步進馬達比例" -#: src/emc/rs274ngc/rs274ngc_return.hh:77 -msgid "Multiple a words on one line" -msgstr "多個 a字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:3994 +msgid "Use keyboard shortcuts" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:78 -msgid "Multiple b words on one line" -msgstr "多個 b字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4007 +msgid "Keyboard shortcuts" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:79 -msgid "Multiple c words on one line" -msgstr "多個 c字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4034 +#, fuzzy +msgid "Use unlock code" +msgstr "未使用的編碼器" -#: src/emc/rs274ngc/rs274ngc_return.hh:80 -msgid "Multiple d words on one line" -msgstr "多個 d字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4050 +msgid "Do not use unlock code" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:81 -msgid "Multiple f words on one line" -msgstr "多個 f字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4066 +msgid "Use hal pin to unlock" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:82 -msgid "Multiple h words on one line" -msgstr "多個 h字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4087 +#, fuzzy +msgid "Unlock settings" +msgstr "歸零" -#: src/emc/rs274ngc/rs274ngc_return.hh:83 -msgid "Multiple i words on one line" -msgstr "多個 i字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4197 +#, fuzzy +msgid "Spindle bar min" +msgstr "主軸 剎車 開" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4210 +#, fuzzy +msgid "Spindle bar max" +msgstr "主軸 剎車 開" -#: src/emc/rs274ngc/rs274ngc_return.hh:84 -msgid "Multiple j words on one line" -msgstr "多個 j字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4252 +msgid "Hide turtle Jog Button" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:85 -msgid "Multiple k words on one line" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4282 +msgid "Turtle jog Factor" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:86 -msgid "Multiple l words on one line" -msgstr "多個 l字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4318 +#, fuzzy +msgid "Turtle Jog" +msgstr " 前 台 " -#: src/emc/rs274ngc/rs274ngc_return.hh:87 -msgid "Multiple p words on one line" -msgstr "多個 p字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4360 +msgid "Hardware" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:88 -msgid "Multiple q words on one line" -msgstr "多個 q字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4392 +msgid "Use auto tool measurement" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:89 -msgid "Multiple r words on one line" -msgstr "多個 r字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4450 +msgid "Probe Height" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:90 -msgid "Multiple s words on one line" -msgstr "多個 s字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4485 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4498 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4527 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4556 +msgid "0.000" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:91 -msgid "Multiple t words on one line" -msgstr "多個 t字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4514 +#, fuzzy +msgid "Z Pos." +msgstr "位置" -#: src/emc/rs274ngc/rs274ngc_return.hh:92 -msgid "Multiple x words on one line" -msgstr "多個 x字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4543 +msgid "Max. Probe" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:93 -msgid "Multiple y words on one line" -msgstr "多個 y字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4575 +#, fuzzy +msgid "Probe Informations" +msgstr "配置" -#: src/emc/rs274ngc/rs274ngc_return.hh:94 -msgid "Multiple z words on one line" -msgstr "多個 z字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4607 +#, fuzzy +msgid "Search Vel." +msgstr "零點搜索速率:" -#: src/emc/rs274ngc/rs274ngc_return.hh:95 -msgid "Must use g0 or g1 with g53" -msgstr "必須使用G0或G1使用 G53" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4618 +msgid "Probe Vel." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:96 -msgid "Negative argument to sqrt" -msgstr "負值參數 sqrt" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4674 +#, fuzzy +msgid "Probe velocitys" +msgstr "GUI前台列表" -#: src/emc/rs274ngc/rs274ngc_return.hh:97 -msgid "Negative d word tool radius index used" -msgstr "負值 D字刀具半徑在使用指數" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4688 +msgid "" +"No valid configuration\n" +"found in your INI file,\n" +"please take a look at \n" +"the WIKI to check how\n" +"to configure the settings." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:98 -msgid "Negative f word used" -msgstr "代碼中使用負值" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4708 +#, fuzzy +msgid "Tool Measurement" +msgstr "冷卻液" -#: src/emc/rs274ngc/rs274ngc_return.hh:99 -msgid "Negative g code used" -msgstr "代碼中使用負值g" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4737 +msgid "" +"If the 4'th axis is used\n" +"for a tool changer, you\n" +"hide the DRO and\n" +"jog buttons." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:100 -msgid "Negative h word used" -msgstr "代碼中使用負值h" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4749 +#, fuzzy +msgid "Hide 4'th axis" +msgstr "激活 第三軸" -#: src/emc/rs274ngc/rs274ngc_return.hh:101 -msgid "Negative l word used" -msgstr "代碼中使用負值l" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4769 +#, fuzzy +msgid "Tool Changer" +msgstr "冷卻液" -#: src/emc/rs274ngc/rs274ngc_return.hh:102 -msgid "Negative m code used" -msgstr "代碼中使用負值m" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4808 +msgid "Use frames" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:103 -msgid "Negative or zero q value used" -msgstr "負值或零在使用q值" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4840 +msgid "max." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:104 -msgid "Negative p word used" -msgstr "負 P 字在使用" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:4992 +#, fuzzy +msgid "Launch test message" +msgstr "啟動測試面板" -#: src/emc/rs274ngc/rs274ngc_return.hh:105 -msgid "Negative spindle speed used" -msgstr "在使用主軸轉速負值" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5011 +msgid "" +" gmoccapy message\n" +" behavior and appearance " +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:106 -msgid "Negative tool id used" -msgstr "負ID的刀具" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5049 +msgid "Do not use run from line" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:107 -msgid "Nested comment found" -msgstr "找到巢狀評論" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5065 +#, fuzzy +msgid "Use run from line" +msgstr "運行選定的行(_n)" -#: src/emc/rs274ngc/rs274ngc_return.hh:108 -msgid "No characters found in reading real value" -msgstr "無字找到在閱讀真正的價值" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5086 +#, fuzzy +msgid "Run from line" +msgstr "歸零" -#: src/emc/rs274ngc/rs274ngc_return.hh:109 -msgid "Non integer value for integer" -msgstr "非整數值對整數" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5119 +#, fuzzy +msgid "" +"Advanced\n" +" Settings" +msgstr "進階選項" -#: src/emc/rs274ngc/rs274ngc_return.hh:110 -msgid "Null missing after newline" -msgstr "空後丟失換行符" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5157 +msgid "User tab 1" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:111 -msgid "Parameter file out of order" -msgstr "參數文件不按順序" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5171 +msgid "User tabs" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:112 -msgid "Parameter number out of range" -msgstr "參數號超出範圍" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5207 +msgid "Estop the machine" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:113 -msgid "Parameter is readonly" -msgstr "參數是只讀" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5229 +#, fuzzy +msgid "Turn the machine on/off" +msgstr "開動 機器" -#: src/emc/rs274ngc/rs274ngc_return.hh:114 -msgid "Q word missing with g83" -msgstr "Q缺少字使用 G83" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5251 +msgid "enter manual mode to jog axis by hand or touch off" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:115 -msgid "Queue is not empty after probing" -msgstr "隊列不是空的在探測後" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5271 +#, fuzzy +msgid "enter MDI mode to launch g-code commands" +msgstr "必須在MDI模式下發出 MDI命令" -#: src/emc/rs274ngc/rs274ngc_return.hh:116 -msgid "R clearance plane unspecified in cycle" -msgstr "R間隙平面未指定的週期" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5290 +msgid "enter auto mode to run programs" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:117 -msgid "R i j k words all missing for arc" -msgstr "R i j k 字 都缺少的弧" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5308 +msgid "Enter the settings page, the default code is \"123\"" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:118 -msgid "R less than x in cycle in yz plane" -msgstr "R小於 x的週期在 XZ平面" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5330 +#, fuzzy +msgid "show user tabs" +msgstr "顯示重開" -#: src/emc/rs274ngc/rs274ngc_return.hh:119 -msgid "R less than y in cycle in xz plane" -msgstr "R小於 Y的週期在 XZ平面" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5381 +msgid "open homing button list" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:120 -msgid "R less than z in cycle in xy plane" -msgstr "R小於 z的週期在xy平面" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5398 +#, fuzzy +msgid "open touch off button list" +msgstr "刀具 對 夾具 對刀(_f)" -#: src/emc/rs274ngc/rs274ngc_return.hh:121 -msgid "R word with no g code that uses it" -msgstr "R字沒有G代碼使用它的" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5427 +msgid "Open the tooleditor page" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:122 -msgid "Slash missing after first atan argument" -msgstr "反斜杠缺少在首次atan說法" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5498 +msgid "make the preview as large as possible" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:123 -msgid "Spindle not turning clockwise in g84" -msgstr "主軸不轉順時針 G84" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5515 +msgid "Close moccapy / leave the program" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:124 -msgid "Spindle not turning in g86" -msgstr "在G86主軸不轉" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5577 +msgid "This button will show or hide the Keyboard" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:125 -msgid "Spindle not turning in g87" -msgstr "在G87主軸不轉" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5620 +#, fuzzy +msgid "Load a new program" +msgstr "重裝 程序" -#: src/emc/rs274ngc/rs274ngc_return.hh:126 -msgid "Spindle not turning in g88" -msgstr "在G88主軸不轉" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5637 +#, fuzzy +msgid "Run the loaded program" +msgstr "重裝 程序" -#: src/emc/rs274ngc/rs274ngc_return.hh:127 -msgid "Sscanf failed" -msgstr "sscanf函數失敗" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5654 +#, fuzzy +msgid "Stop the running program" +msgstr "停止 正在 運行 的程序, 或" -#: src/emc/rs274ngc/rs274ngc_return.hh:128 -msgid "Start point too close to probe point" -msgstr "起點過於接近探測點" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5672 +#, fuzzy +msgid "Pause the running program" +msgstr "停止 正在 運行 的程序, 或" -#: src/emc/rs274ngc/rs274ngc_return.hh:129 -msgid "Too many m codes on line" -msgstr "太多的M代碼在線" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5680 +#, fuzzy +msgid "pause the running program" +msgstr "停止 正在 運行 的程序, 或" -#: src/emc/rs274ngc/rs274ngc_return.hh:130 -msgid "Pocket max too large" -msgstr "型腔最大值過大" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5698 +msgid "Run the loaded program step by step" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:131 -msgid "Tool radius not less than arc radius with comp" -msgstr "刀具半徑不小於圓弧半徑使用補償" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5715 +msgid "" +"run the program from a certain line, attention, that is dangerous, because " +"the previous lines will not checed!" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:132 -msgid "Two g codes used from same modal group" -msgstr "兩個 G 代碼用於從同一模式組" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5732 +msgid "" +"Machine or not the optional blocks of the program. If the button is pressed, " +"the optional blocks will not be machined. The button will indicate this by a " +"yellow background." +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:133 -msgid "Two m codes used from same modal group" -msgstr "兩個 M 代碼在使用同一 模式組" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5757 +msgid "" +"Make optional stops or not. if an M1 is programed and the button is pressed " +"(is active) the programm will pause if it found a M1" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:134 -#, c-format -msgid "Unable to open file <%s>" -msgstr "無法打開文件 <%s>" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5789 +#, fuzzy +msgid "Edit the loaded program" +msgstr "重裝 程序" -#: src/emc/rs274ngc/rs274ngc_return.hh:135 -msgid "Unclosed comment found" -msgstr "未封閉的評論發現" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5837 +#, fuzzy +msgid "home all axis" +msgstr "所有軸 回零點" -#: src/emc/rs274ngc/rs274ngc_return.hh:136 -msgid "Unclosed expression" -msgstr "未封閉表達式" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5873 +#, fuzzy +msgid "home x axis" +msgstr "軸回零" -#: src/emc/rs274ngc/rs274ngc_return.hh:137 -msgid "Unknown g code used" -msgstr "未知的G代碼在使用" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5897 +#, fuzzy +msgid "home y axis" +msgstr "軸回零" -#: src/emc/rs274ngc/rs274ngc_return.hh:138 -msgid "Unknown m code used" -msgstr "未知的M代碼在使用" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5929 +#, fuzzy +msgid "home z axis" +msgstr "軸回零" + +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:5987 +#, fuzzy +msgid "Unhome all axis" +msgstr "所有軸 離零" -#: src/emc/rs274ngc/rs274ngc_return.hh:139 -msgid "Unknown operation" -msgstr "未知操作" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6023 +msgid "go back to main button list" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:140 -msgid "Unknown operation name starting with a" -msgstr "未知操作名稱開始帶 a" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6053 +msgid "" +" edit\n" +"offsets" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:141 -msgid "Unknown operation name starting with m" -msgstr "未知操作名稱開始帶 m" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6060 +#, fuzzy +msgid "Edit offsets" +msgstr "顯示 偏移量(_f)" -#: src/emc/rs274ngc/rs274ngc_return.hh:142 -msgid "Unknown operation name starting with o" -msgstr "未知操作名稱開始帶 o" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6076 +msgid "touch off X / set X to 0" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:143 -msgid "Unknown operation name starting with x" -msgstr "未知操作名稱開始帶 x" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6100 +msgid "touch off Y / set Y to 0" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:144 -msgid "Unknown word starting with a" -msgstr "未知字開始帶 a" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6135 +msgid "touch off Z / set Z to 0" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:145 -msgid "Unknown word starting with c" -msgstr "未知字開始帶 c" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6155 +msgid "" +"zero\n" +"G92" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:146 -msgid "Unknown word starting with e" -msgstr "未知字開始帶 " +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6161 +#, fuzzy +msgid "Zero all G92 offsets" +msgstr "置零 于 所有G5" -#: src/emc/rs274ngc/rs274ngc_return.hh:147 -msgid "Unknown word starting with f" -msgstr "未知字開始帶 f" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6172 +msgid "" +" Block\n" +"Height" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:148 -msgid "Unknown word starting with l" -msgstr "未知字開始帶 l" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6192 +msgid "touch off X / set X to an desired value" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:149 -msgid "Unknown word starting with r" -msgstr "未知字開始帶 r" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6216 +msgid "touch off Y / set Y to an desired value" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:150 -msgid "Unknown word starting with s" -msgstr "未知字開始帶 s" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6251 +msgid "touch off Z / set Z to an desired value" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:151 -msgid "Unknown word starting with t" -msgstr "未知字開始帶 t" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6270 +msgid "" +" set\n" +"selected" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:152 -msgid "Unknown word where unary operation could be" -msgstr "未知的字可在一元運算" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6277 +#, fuzzy +msgid "set the selected coordinate system to be the active one" +msgstr "不能改變激活的坐標系當刀具半徑補償在使用" -#: src/emc/rs274ngc/rs274ngc_return.hh:153 -msgid "X and y words missing for arc in xy plane" -msgstr "X和Y字缺少的弧XY平面" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6293 +msgid "Go back to main view" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:154 -msgid "X and z words missing for arc in xz plane" -msgstr "X和Z字缺少的弧XZ平面" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6324 +#, fuzzy +msgid "delete MDI" +msgstr "刪除" -#: src/emc/rs274ngc/rs274ngc_return.hh:155 -msgid "X value unspecified in yz plane canned cycle" -msgstr "X值未指定在yz平面固定循環" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6330 +#, fuzzy +msgid "delete MDI history" +msgstr "清除 MDI 歷史" -#: src/emc/rs274ngc/rs274ngc_return.hh:156 -msgid "Y and z words missing for arc in yz plane" -msgstr "Y和Z字缺少的弧的YZ平面" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6380 +msgid "Cl.-ladder" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:157 -msgid "Y value unspecified in xz plane canned cycle" -msgstr "Y值未指定的在XZ平面固定循環" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6386 +msgid "Open classicladder" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:158 -msgid "Z value unspecified in xy plane canned cycle" -msgstr "Z值未指定在XY平面固定循環" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6397 +#, fuzzy +msgid "Hal-Scope" +msgstr "HAL 顯示器" -#: src/emc/rs274ngc/rs274ngc_return.hh:159 -msgid "Zero or negative argument to ln" -msgstr "零或負參數 ln" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6403 +msgid "launch hal scope" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:161 -msgid "K word missing with g33/g33.1" -msgstr "K字缺少用 g33/g33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6420 +msgid "launch linuxcnc status" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:162 -msgid "F word used with a g33/g33.1" -msgstr "F字用了g33/g33.1" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6437 +msgid "launch hal meter" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:163 -msgid "Unknown operation name starting with e" -msgstr "未知操作名稱開始與 e" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6455 +#, fuzzy +msgid "launch calibration" +msgstr "校準(_C)" -#: src/emc/rs274ngc/rs274ngc_return.hh:164 -msgid "Unknown operation name starting with n" -msgstr "未知操作名稱開始與 n" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6466 +msgid "Halshow" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:165 -msgid "Unknown operation name starting with g" -msgstr "未知操作名稱開始與 g" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6472 +msgid "opens the show hal tool" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:166 -msgid "Unknown operation name starting with l" -msgstr "未知操作名稱開始與 l" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6537 +msgid "save the file using the original name" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:167 -msgid "Too many subroutine parameters" -msgstr "太多的子程序參數" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6559 +msgid "save the file with a new name" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:168 -msgid "Too many subroutine levels" -msgstr "太多的子程序層面" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6605 +msgid "clear the edit field and make a new file" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:169 -msgid "Bug: call stack underrun" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6641 +msgid "Show or hide the virtual keyboard" msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:170 -msgid "Unknown control command in o word" -msgstr "未知控制命令在O字" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6665 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6879 +msgid "Go back to main button list" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:171 -msgid "Too many oword labels" -msgstr "太多oword標籤" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6701 +msgid "delete selected tool or tools" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:172 -msgid "Unknown oword number" -msgstr "未知oword號" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6718 +#, fuzzy +msgid "add a new tool to tool table" +msgstr "重新載入刀具表(_b)" -#: src/emc/rs274ngc/rs274ngc_return.hh:173 -msgid "Nested subroutine definition" -msgstr "巢狀子程序定義" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6729 +#, fuzzy +msgid "Reload" +msgstr "重新載入(_R)" -#: src/emc/rs274ngc/rs274ngc_return.hh:174 -msgid "Not in subroutine definition" -msgstr "未在子程序定義" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6735 +#, fuzzy +msgid "reload tool table from file" +msgstr "重新載入刀具表(_b)" -#: src/emc/rs274ngc/rs274ngc_return.hh:175 -msgid "File not open" -msgstr "文件未打開" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6746 +msgid "Apply" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:176 -msgid "Need tool prepared -Txx- for toolchange" -msgstr "需要準備刀具 -TXX- 供換刀" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6752 +msgid "" +"apply the changes you made, G43 will be excecuted only if it is active g-code" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:177 -msgid "Cannot change planes with cutter radius compensation on" -msgstr "無法改變平面用了刀具半徑補償" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6768 +#, fuzzy +msgid "Select a tool by number" +msgstr "選擇項目 以探測" -#: src/emc/rs274ngc/rs274ngc_return.hh:178 -msgid "Cutter radius compensation allowed only in XY, XZ planes" -msgstr "刀具半徑補償只允許在XY,XZ平面" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6790 +msgid "change tool with the command M61 Q?, no machine move will be done" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:179 -msgid "P word missing with G76" -msgstr "P字缺少的 G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6812 +msgid "change tool to the selected one" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:180 -msgid "I J or K words missing with G76" -msgstr "I J或K字缺失的 G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6824 +#, fuzzy +msgid "" +"touchoff\n" +" tool x" +msgstr "刀具 對 夾具 對刀(_f)" -#: src/emc/rs274ngc/rs274ngc_return.hh:181 -msgid "Cannot move rotary axes with G76" -msgstr "無法移動旋轉軸使用 G76" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6832 +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6863 +#, fuzzy +msgid "touch off the tool and set the value to the tool table" +msgstr "請求工具 %d 刀具表找不到" -#: src/emc/rs274ngc/rs274ngc_return.hh:182 -msgid "Multiple e words on one line" -msgstr "多個 e字在一行" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6855 +msgid "" +"touchoff\n" +" tool z" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:183 -msgid "Named parameter not terminated" -msgstr "命名參數沒有端接" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6915 +msgid "Move to your home directory" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:184 -msgid "Out of memory" -msgstr "內存不足" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6932 +msgid "Move to parrent directory" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:185 -msgid "S word missing with G96" -msgstr "S字缺少的 G96" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6961 +#, fuzzy +msgid "Select the previos file" +msgstr "選擇項目 以探測" -#: src/emc/rs274ngc/rs274ngc_return.hh:186 -msgid "Queue is not empty after external input" -msgstr "外部輸入後隊列不為空" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6979 +#, fuzzy +msgid "Select the next file" +msgstr "選擇項目 以探測" -#: src/emc/rs274ngc/rs274ngc_return.hh:187 -msgid "Can't select analog input with wait type != immediate return" -msgstr "無法選擇模擬輸入的等待類型!=立即返回" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:6997 +msgid "Jump to user defined directory" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:188 -msgid "Zero timeout with wait type != immediate return" -msgstr "零超時的等待類型!=立即返回" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7027 +msgid "select the highlighted file and return the path" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:189 -msgid "Invalid to select both a digital and an analog input with M66" -msgstr "無效的同時選擇一個數字和模擬輸入用 M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7057 +msgid "Close without returning a file path" +msgstr "" -#: src/emc/rs274ngc/rs274ngc_return.hh:190 -msgid "Need to have either a valid P or a valid E word with M66" -msgstr "需要有一張有效的P或一個有效的E字與 M66" +#: src/emc/usr_intf/gmoccapy/gmoccapy.glade:7075 +#, fuzzy +msgid "Load File" +msgstr "程序檔案" -#: src/emc/rs274ngc/rs274ngc_return.hh:191 -msgid "Q word missing with g73" -msgstr "Q缺少字與 G73" +#~ msgid "%s move in MDI would exceed joint %d's positive limit" +#~ msgstr "%s 在 MDI 移動 將超過 joint %d 的 正 極限" -#: src/emc/rs274ngc/rs274ngc_return.hh:192 -msgid "Digital input selected out of bounds" -msgstr "數字輸入選擇超出界限" +#~ msgid "%s move in MDI would exceed joint %d's negative limit" +#~ msgstr "%s 在 MDI 移動 將超過 joint %d 的 負 極限" -#: src/emc/rs274ngc/rs274ngc_return.hh:193 -msgid "Analog input selected out of bounds" -msgstr "模擬輸入選擇超出界限" +#, fuzzy +#~ msgid "LinuxCNC Debug Level" +#~ msgstr "EMC2 偵錯層級" -#: src/emc/rs274ngc/rs274ngc_return.hh:194 -msgid "W value unspecified in UV plane canned cycle" -msgstr "W值不明在UV平面固定循環" +#, fuzzy +#~ msgid "Spindle Max Output:" +#~ msgstr "DAC 最大 輸出:" -#: src/emc/rs274ngc/rs274ngc_return.hh:195 -msgid "U value unspecified in VW plane canned cycle" -msgstr "U值不確定的VW平面固定循環" +#~ msgid "Dac Output Scale:" +#~ msgstr "DAC 輸出 比例:" -#: src/emc/rs274ngc/rs274ngc_return.hh:196 -msgid "V value unspecified in UW plane canned cycle" -msgstr "V值未指定在UW平面固定循環" +#~ msgid "Cannot set motion output with cutter radius compensation on" +#~ msgstr "無法設置 運動 輸出 當 刀具半徑補償 開" -#: src/emc/rs274ngc/rs274ngc_return.hh:197 -msgid "R less than W in cycle in UV plane" -msgstr "R小於 W在週期 UV平面" +#~ msgid "" +#~ "Cannot set auxiliary digital output with cutter radius compensation on" +#~ msgstr "無法設置附屬數碼輸出當刀具半徑補償在使用" -#: src/emc/rs274ngc/rs274ngc_return.hh:198 -msgid "R less than U in cycle in VW plane" -msgstr "R小於 U在週期VW平面" +#~ msgid "Cannot set motion analog output with cutter radius compensation on" +#~ msgstr "無法設置運動模擬輸出當刀具半徑補償在使用" -#: src/emc/rs274ngc/rs274ngc_return.hh:199 -msgid "R less than V in cycle in UW plane" -msgstr "R小於 V的週期在UW平面" +#~ msgid "" +#~ "Cannot set auxiliary analog output with cutter radius compensation on" +#~ msgstr "無法設置輔助模擬輸出當刀具半徑補償在使用" #~ msgid "About TkEmc" #~ msgstr "關於 TkEmc" diff --git a/tests/cpusets/skip b/tests/cpusets/skip index c638dc2ce7..49cd71d143 100755 --- a/tests/cpusets/skip +++ b/tests/cpusets/skip @@ -10,8 +10,8 @@ set -e # Assert the cgtools are available which cgcreate >&/dev/null -# Assert we're running POSIX threads -test "$(flavor)" = posix -o "$(flavor)" = rt-preempt +# Assert we're not running Xenomai threads +test ! -e /sys/module/xeno_nucleus # Attempt to set up a cgroup with cpuset controller # diff --git a/tests/hm2-idrom/skip b/tests/hm2-idrom/skip index 8c7c821e0d..9977fbafea 100755 --- a/tests/hm2-idrom/skip +++ b/tests/hm2-idrom/skip @@ -4,4 +4,4 @@ # Skip the hm2-idrom test if not running kernel threads and the # hostmot2.so module doesn't exist for this flavor -test "$(flavor -b)" = kbuild -o -f $EMC2_HOME/rtlib/$(flavor)/hostmot2.so +test -f $EMC2_HOME/rtlib/modules/hostmot2.so From 106b5e762315b56764e81a46109528ceecdc8f0d Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 21 Feb 2019 16:28:55 +0800 Subject: [PATCH 485/516] rtapi.c: Fix return code on rtapi_module_init() --- src/rtapi/rtapi.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/rtapi/rtapi.c b/src/rtapi/rtapi.c index d56b7a115e..0792baea8c 100644 --- a/src/rtapi/rtapi.c +++ b/src/rtapi/rtapi.c @@ -241,9 +241,16 @@ void rtapi_app_exit(void) int rtapi_init(const char *modname) { #ifdef ULAPI + int res; + // Load ULAPI if global_data hasn't been set up yet - if (global_data == NULL) - rtapi_module_init(); + if (global_data == NULL && (res = rtapi_module_init())) { + rtapi_print_msg(RTAPI_MSG_ERR, + "FATAL: Failed to initialize module '%s'\n", modname); + return res; + } + rtapi_print_msg(RTAPI_MSG_DBG, + "Module '%s' finished ULAPI init\n", modname); #endif return rtapi_next_handle(); From 4c4ee1345e59c597ecb69bd95bac56110f6a2771 Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 21 Feb 2019 16:30:19 +0800 Subject: [PATCH 486/516] Fix rtapi.0 test Missing global segment returns -EBUSY, which should be -16, but the test expected -38, which is ENOSYS. Not sure why, but going by `errno.h` fixes it. See /usr/include/asm-generic/errno-base.h and /usr/include/asm-generic/errno.h . --- tests/rtapi.0/expected | 2 +- tests/rtapi.0/rtapi_test.c | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/tests/rtapi.0/expected b/tests/rtapi.0/expected index 373e7855f4..fd56d47343 100644 --- a/tests/rtapi.0/expected +++ b/tests/rtapi.0/expected @@ -1,2 +1,2 @@ -rtapi_init() failed: -38 +rtapi_init() failed: -EBUSY rtapi_init() succeeded diff --git a/tests/rtapi.0/rtapi_test.c b/tests/rtapi.0/rtapi_test.c index 62b33e6ba4..3e30f629ec 100644 --- a/tests/rtapi.0/rtapi_test.c +++ b/tests/rtapi.0/rtapi_test.c @@ -21,11 +21,16 @@ #include #include "rtapi.h" #include "syslog_async.h" +#include int main() { int comp_id = rtapi_init("testmod"); + if (comp_id == -EBUSY) { + printf("rtapi_init() failed: -EBUSY\n"); + exit(1); + } if (comp_id < 0) { printf("rtapi_init() failed: %d\n", comp_id); exit(1); From 2dbe2d0eaaa1e22941ede8dec785ab3eb61d4552 Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 21 Feb 2019 16:38:06 +0800 Subject: [PATCH 487/516] Log to console early start-up; rtapi_flavor uses rtapi_print_* Log to console at early start-up to help reduce errors being obscured. --- src/rtapi/flavor/rtapi_flavor.c | 50 +++++++++++++++++---------------- src/rtapi/rtapi_support.c | 12 +++++--- 2 files changed, 34 insertions(+), 28 deletions(-) diff --git a/src/rtapi/flavor/rtapi_flavor.c b/src/rtapi/flavor/rtapi_flavor.c index 91573fdba8..95837292cf 100644 --- a/src/rtapi/flavor/rtapi_flavor.c +++ b/src/rtapi/flavor/rtapi_flavor.c @@ -1,5 +1,4 @@ #include // getenv -#include // fprintf #ifdef ULAPI #include "ulapi.h" @@ -16,16 +15,16 @@ int flavor_mocking = 0; // Signal from tests int flavor_mocking_err = 0; // Pass error to tests // - Mock exit(status), returning NULL and passing error out of band -#define EXIT_NULL(status) do { \ - if (flavor_mocking) { \ - flavor_mocking_err = status; return NULL; \ - } else exit(status); \ +#define EXIT_NULL(status) do { \ + if (flavor_mocking) { \ + flavor_mocking_err = status; return NULL; \ + } else exit(status); \ } while (0) // - Mock exit(status), returning (nothing) and passing error out of band -#define EXIT_NORV(status) do { \ - if (flavor_mocking) { \ - flavor_mocking_err = status; return; \ - } else exit(status); \ +#define EXIT_NORV(status) do { \ + if (flavor_mocking) { \ + flavor_mocking_err = status; return; \ + } else exit(status); \ } while (0) @@ -99,21 +98,21 @@ flavor_descriptor_ptr flavor_default(void) // $FLAVOR set in environment: verify it or fail flavor = flavor_byname(fname); if (flavor == NULL) { - fprintf(stderr, - "FATAL: No such flavor '%s'; valid flavors are\n", - fname); + rtapi_print_msg(RTAPI_MSG_ERR, "FATAL: No such flavor '%s';" + " valid flavors are\n", fname); for (flavor_handle=NULL; (fname=flavor_names(&flavor_handle)); ) - fprintf(stderr, "FATAL: %s\n", (*flavor_handle)->name); + rtapi_print_msg(RTAPI_MSG_ERR, "FATAL: %s\n", + (*flavor_handle)->name); EXIT_NULL(100); } if (!flavor_can_run_flavor(flavor)) { - fprintf(stderr, "FATAL: Flavor '%s' from environment cannot run\n", - fname); + rtapi_print_msg(RTAPI_MSG_ERR, "FATAL: Flavor '%s' from" + " environment cannot run\n", fname); EXIT_NULL(101); } else { - fprintf(stderr, - "INFO: Picked flavor '%s' id %d (from environment)\n", - flavor->name, flavor->flavor_id); + rtapi_print_msg(RTAPI_MSG_INFO, + "INFO: Picked flavor '%s' id %d (from environment)\n", + flavor->name, flavor->flavor_id); return flavor; } @@ -130,11 +129,12 @@ flavor_descriptor_ptr flavor_default(void) } if (!flavor) { // This should never happen: POSIX can always run - fprintf(stderr, "ERROR: Unable to find runnable flavor\n"); + rtapi_print_msg(RTAPI_MSG_ERR, + "ERROR: Unable to find runnable flavor\n"); EXIT_NULL(102); } else { - fprintf(stderr, "INFO: Picked default flavor '%s' automatically\n", - flavor->name); + rtapi_print_msg(RTAPI_MSG_INFO, "INFO: Picked default flavor '%s'" + " automatically\n", flavor->name); return flavor; } } @@ -143,15 +143,17 @@ flavor_descriptor_ptr flavor_default(void) void flavor_install(flavor_descriptor_ptr flavor) { if (flavor_descriptor != NULL) { - fprintf(stderr, "FATAL: Flavor '%s' already configured\n", - flavor_descriptor->name); + rtapi_print_msg(RTAPI_MSG_ERR, "FATAL: Flavor '%s' already" + " configured\n", flavor_descriptor->name); EXIT_NORV(103); } if (!flavor_can_run_flavor(flavor)) { - fprintf(stderr, "FATAL: Flavor '%s' cannot run\n", flavor->name); + rtapi_print_msg(RTAPI_MSG_ERR, "FATAL: Flavor '%s' cannot run\n", + flavor->name); EXIT_NORV(104); } flavor_descriptor = flavor; + rtapi_print_msg(RTAPI_MSG_DBG, "Installed flavor '%s'\n", flavor->name); } int flavor_is_configured(void) diff --git a/src/rtapi/rtapi_support.c b/src/rtapi/rtapi_support.c index c4363f70c1..d6551175f9 100644 --- a/src/rtapi/rtapi_support.c +++ b/src/rtapi/rtapi_support.c @@ -108,7 +108,7 @@ int vs_ringlogfv(const msg_level_t level, rtapi_mutex_give(&rtapi_message_buffer.header->wmutex); } else { // early startup, global_data & log ring not yet initialized - // depending on context, log the message in an appropriate way: + // log the message to both stderr and syslog static int log_opened; if (!log_opened) { @@ -118,13 +118,17 @@ int vs_ringlogfv(const msg_level_t level, log_opened = 1; } } -#ifdef USE_STDERR + if (!strchr(msg.buf, '\n')) strcat(msg.buf,"\n"); fprintf(stderr, -#else + "%d:%s:%d:%s %s", + level, + tag, + pid, + origins[origin & 3], + msg.buf); syslog_async(rtapi2syslog(level), -#endif "%d:%s:%d:%s %s", level, tag, From f5dc7a031e62a0810061e9547a37760093cb8d1f Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 21 Feb 2019 16:52:38 +0800 Subject: [PATCH 488/516] debian/configure: fix pkg version generation For patchlevel, count revs from `HEAD` rather than `master`. This won't break in git trees with no `master` branch, and reflects the version actually checked out in the work tree. --- debian/configure | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/debian/configure b/debian/configure index c66711727f..537e91bd0e 100755 --- a/debian/configure +++ b/debian/configure @@ -28,9 +28,12 @@ echo $0 $* > configure.cmdline ## meaningful version numbers do_changelog() { - DISTRO_UC="$(echo $DISTRO_CODENAME | sed 's/^[[:space:]]*//g' | sed -e 's/\b\(.\)/\u\1/g')" + DISTRO_UC="$(echo $DISTRO_CODENAME | sed 's/^[[:space:]]*//g' | + sed -e 's/\b\(.\)/\u\1/g')" DISTRO_LC="$(echo $DISTRO_CODENAME | sed 's/^[[:space:]]*//g')" - MKVERSION="$(git show HEAD:VERSION | cut -d ' ' -f 1).$(git rev-list --count master)-1.git$(git rev-parse --short HEAD)~${DISTRO_LC}" + MKVERSION="$(git show HEAD:VERSION | cut -d ' ' -f 1).$( + git rev-list --count HEAD)-1.git$( + git rev-parse --short HEAD)~${DISTRO_LC}" COMMITTER="$(git show -s --pretty=%an $(git rev-parse --short HEAD))" EMAIL="$(git show -s --format='%ae' $(git rev-parse --short HEAD))" @@ -57,7 +60,7 @@ do_source_tarball() { #version based on major version plus commit number only, without #suffixed -1 or commit hash MK_VERSION="$(git show HEAD:VERSION | cut -d ' ' -f 1).$( - git rev-list --count master)" + git rev-list --count HEAD)" OWD=$PWD cd ../ git archive HEAD | bzip2 -z > ../machinekit_${MK_VERSION}.orig.tar.bz2 From 265571023840d35d8a8f1a2ea2f773086be7c9ce Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 21 Feb 2019 16:54:36 +0800 Subject: [PATCH 489/516] debian/control: fix formatting problem --- debian/control.in | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/debian/control.in b/debian/control.in index 26858f0968..941bdfe482 100644 --- a/debian/control.in +++ b/debian/control.in @@ -52,9 +52,9 @@ Depends: make, g++, tcl8.6, tk8.6, yapps2-runtime Section: libs Description: PC based motion controller for real-time Linux -Machinekit is the next-generation Enhanced Machine Controller which -provides motion control for CNC machine tools and robotic -applications (milling, cutting, routing, etc.). -. -This package includes files needed to build new realtime components and -alternate front-ends for machinekit + Machinekit is the next-generation Enhanced Machine Controller which + provides motion control for CNC machine tools and robotic + applications (milling, cutting, routing, etc.). + . + This package includes files needed to build new realtime components and + alternate front-ends for machinekit From 740e1a05cfc2fd50edc6815ce6b9c5ba73a116cf Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 21 Feb 2019 17:07:24 +0800 Subject: [PATCH 490/516] rtapi: Link -lcgroup against rtapi.0 instead of rtapi_app dpkg-buildpackage helpfully pointed out: dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/machinekit/usr/libexec/linuxcnc/rtapi_app was not linked against libcgroup.so.1 (it uses none of the library's symbols) --- src/rtapi/Submakefile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/rtapi/Submakefile b/src/rtapi/Submakefile index 02cf284efe..3e8bf82a2f 100644 --- a/src/rtapi/Submakefile +++ b/src/rtapi/Submakefile @@ -111,7 +111,8 @@ $(call TORTOBJS, rtapi/flavor/rt-preempt.c): \ EXTRAFLAGS += $(LIBCGROUP_CFLAGS) # userland PCI support needs -ludev for rtapi.so -$(RTLIBDIR)/rtapi.so: EXTRA_LDFLAGS += $(LIBUDEV_LIBS) $(RT_LDFLAGS) +$(RTLIBDIR)/rtapi.so: EXTRA_LDFLAGS += \ + $(LIBUDEV_LIBS) $(RT_LDFLAGS) $(LIBCGROUP_LIBS) ################################################################## # rtapi_app @@ -233,7 +234,7 @@ $(call TOOBJSDEPS, rtapi/rtapi_app.cc): \ -o $@ \ $^ \ $(LDFLAGS) \ - $(THREADS_LDFLAGS) $(LIBUDEV_LIBS) $(LIBCGROUP_LIBS) \ + $(THREADS_LDFLAGS) $(LIBUDEV_LIBS) \ $(PROTOBUF_LIBS) $(CZMQ_LIBS) $(LTTNG_UST_LIBS) \ -lstdc++ -ldl -luuid From 87413c2fc4e613a8296024ff5210743d10e315f6 Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 21 Feb 2019 17:40:37 +0800 Subject: [PATCH 491/516] Fix broken paths causing packaging problems --- debian/machinekit.install | 1 - debian/rules | 3 +++ src/Makefile | 3 +-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/debian/machinekit.install b/debian/machinekit.install index 604263320e..d9059115d3 100644 --- a/debian/machinekit.install +++ b/debian/machinekit.install @@ -5,7 +5,6 @@ etc/udev/rules.d/50-shmdrv.rules etc/X11/app-defaults/* usr/lib/*.so.* usr/lib/linuxcnc/* -usr/lib/prubin/* usr/lib/tcltk/linuxcnc usr/bin/* usr/lib/python*/*/*.py diff --git a/debian/rules b/debian/rules index d769f745a5..fbb69fb306 100755 --- a/debian/rules +++ b/debian/rules @@ -37,6 +37,9 @@ SHLIBDEPS_X += libcanterp.so.0 librs274.so.0 # halmeter classicladder halscope link to $(GTK_LIBS), which includes # several libs that aren't used (but several that are needed) SHLIBDEPS_X += halmeter classicladder halscope +# +# mb2hal gs2_vfd hy_vfd link to libglib-2.0.so.0; similar to above +SHLIBDEPS_X += mb2hal gs2_vfd hy_vfd # Cross-compile variables DEB_HOST_ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH) diff --git a/src/Makefile b/src/Makefile index 049f826015..cb08c05002 100755 --- a/src/Makefile +++ b/src/Makefile @@ -1036,14 +1036,13 @@ install-python: install-dirs endif install-kernel-dep: install-dirs - $(SETUID) ../libexec/rtapi_app_* $(DESTDIR)$(EMC2_LIBEXEC_DIR) + $(SETUID) ../libexec/rtapi_app $(DESTDIR)$(EMC2_LIBEXEC_DIR) ifeq ($(BUILD_DRIVERS),yes) $(SETUID) ../libexec/pci_write $(DESTDIR)$(EMC2_LIBEXEC_DIR) $(SETUID) ../libexec/pci_read $(DESTDIR)$(EMC2_LIBEXEC_DIR) endif $(EXE) ../libexec/inivar $(DESTDIR)$(EMC2_LIBEXEC_DIR) $(EXE) ../libexec/rtapi_msgd $(DESTDIR)$(EMC2_LIBEXEC_DIR) - $(EXE) ../libexec/flavor $(DESTDIR)$(EMC2_LIBEXEC_DIR) $(FILE) ../etc/linuxcnc/rtapi.ini $(DESTDIR)$(sysconfdir)/linuxcnc # RTAPI modules: install userland flavor .so modules into From 6adaaaa52fefc34c9ff8d83d50acd890370e3dd1 Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 21 Feb 2019 17:51:00 +0800 Subject: [PATCH 492/516] fixup link -lcgroup --- src/hal/drivers/Submakefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/hal/drivers/Submakefile b/src/hal/drivers/Submakefile index 6101ad2206..078d8b6972 100644 --- a/src/hal/drivers/Submakefile +++ b/src/hal/drivers/Submakefile @@ -93,13 +93,13 @@ endif # hal_pru_generic driver ifdef TARGET_PLATFORM_BEAGLEBONE -$(eval $(call c_comp_build_rules, \ +$(eval $(call c_comp_build_rules, \ hal/drivers/hal_pru_generic/hal_pru_generic.o, \ hal/drivers/hal_pru_generic/pwmgen.o \ hal/drivers/hal_pru_generic/stepgen.o \ hal/drivers/hal_pru_generic/encoder.o \ hal/support/pru/prussdrv.o \ - $(LIBPTHREAD) + $(LIBPTHREAD) \ )) endif From b7e4dec4042bf49a02cdcacaebbaaf890f0dd63e Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 21 Feb 2019 19:14:53 +0800 Subject: [PATCH 493/516] Fix rtapi_get_clocks() for armhf --- scripts/build_docker | 8 ++++---- src/rtapi/flavor/rt-preempt.c | 18 ------------------ src/rtapi/rtapi_time.c | 11 ++++++++++- 3 files changed, 14 insertions(+), 23 deletions(-) diff --git a/scripts/build_docker b/scripts/build_docker index 6c67bdea8c..3c12aba2d9 100755 --- a/scripts/build_docker +++ b/scripts/build_docker @@ -57,10 +57,10 @@ esac # Distro-specific: case ${TAG} in *_8) - PKG_CONFIGURE_ARGS="-prx" # Enable Xenomai + PKG_CONFIGURE_ARGS="-x" # Enable Xenomai ;; *) - PKG_CONFIGURE_ARGS="-pr" # Build posix and preempt-rt threads + : # Nothing to do ;; esac @@ -144,7 +144,7 @@ case $CMD in ( cd src; ./autogen.sh; - ./configure --host=\$HOST_MULTIARCH --with-posix; + ./configure --host=\$HOST_MULTIARCH; ) # Build @@ -176,7 +176,7 @@ esac ########################################################### # Update new container image and add custom /etc/passwd -docker pull ${IMAGE}:${TAG} +test -n "$DOCKER_NO_PULL" || docker pull ${IMAGE}:${TAG} if test ${UID_GID/:*/} != 1000; then echo "Updating /etc/passwd for UID $TRAVIS_UID" >&2 diff --git a/src/rtapi/flavor/rt-preempt.c b/src/rtapi/flavor/rt-preempt.c index bd69e55be6..47b457d8a0 100644 --- a/src/rtapi/flavor/rt-preempt.c +++ b/src/rtapi/flavor/rt-preempt.c @@ -90,16 +90,6 @@ extra_task_data_t extra_task_data[RTAPI_MAX_TASKS + 1]; int have_cg; // true when libcgroup initialized successfully #endif /* RTAPI */ -#if !defined(__i386__) && !defined(__x86_64__) -long long int posix_get_clocks_hook(void) -{ - struct timespec ts; - clock_gettime(CLOCK_MONOTONIC, &ts); - return ts.tv_sec * 1000000000LL + ts.tv_nsec; -} - -#endif - #ifdef RTAPI int posix_module_init_hook(void) @@ -685,11 +675,7 @@ flavor_descriptor_t flavor_rt_prempt_descriptor = { .task_resume_hook = NULL, .task_delay_hook = posix_task_delay_hook, .get_time_hook = NULL, -#if !defined(__i386__) && !defined(__x86_64__) - .get_clocks_hook = posix_get_clocks_hook, -#else .get_clocks_hook = NULL, -#endif .task_self_hook = posix_task_self_hook, .task_pll_get_reference_hook = posix_task_pll_get_reference_hook, .task_pll_set_correction_hook = posix_task_pll_set_correction_hook @@ -714,11 +700,7 @@ flavor_descriptor_t flavor_posix_descriptor = { .task_resume_hook = NULL, .task_delay_hook = posix_task_delay_hook, .get_time_hook = NULL, -#if !defined(__i386__) && !defined(__x86_64__) - .get_clocks_hook = posix_get_clocks_hook, -#else .get_clocks_hook = NULL, -#endif .task_self_hook = posix_task_self_hook, .task_pll_get_reference_hook = posix_task_pll_get_reference_hook, .task_pll_set_correction_hook = posix_task_pll_set_correction_hook diff --git a/src/rtapi/rtapi_time.c b/src/rtapi/rtapi_time.c index 478a042b17..c0717680d0 100644 --- a/src/rtapi/rtapi_time.c +++ b/src/rtapi/rtapi_time.c @@ -110,12 +110,21 @@ long long int rtapi_get_clocks(void) { long long int res; res = flavor_get_clocks_hook(NULL); if (res == -ENOSYS) { // Unimplemented + +# ifdef MSR_H_USABLE /* This returns a result in clocks instead of nS, and needs to be used with care around CPUs that change the clock speed to save power and other disgusting, non-realtime oriented behavior. But at least it doesn't take a week every time you call it. */ - rdtscll(res); +# elif defined(__i386__) || defined(__x86_64__) + __asm__ __volatile__("rdtsc" : "=A" (res)); +# else + // Needed for e.g. ARM + struct timespec ts; + clock_gettime(CLOCK_MONOTONIC, &ts); + res = ts.tv_sec * 1000000000LL + ts.tv_nsec; +# endif } return res; } From 2a817f70ddf09da8fdc9794936efb40202e8bedf Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 21 Feb 2019 19:16:21 +0800 Subject: [PATCH 494/516] .gitignore packaging artifact --- debian/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/.gitignore b/debian/.gitignore index 644d91db7d..10b5bb40c9 100644 --- a/debian/.gitignore +++ b/debian/.gitignore @@ -2,6 +2,7 @@ /control /files /configure.cmdline +/rules.include # generated by scripts/build_source_package /changelog From efde44aec4e7cbf2f813676f2f6912e4270b0cb7 Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 21 Feb 2019 19:19:29 +0800 Subject: [PATCH 495/516] fixup get_clocks --- src/rtapi/rtapi_time.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/rtapi/rtapi_time.c b/src/rtapi/rtapi_time.c index c0717680d0..4871debf18 100644 --- a/src/rtapi/rtapi_time.c +++ b/src/rtapi/rtapi_time.c @@ -32,12 +32,6 @@ // find a useable time stamp counter #ifdef MSR_H_USABLE #include -#elif defined(__i386__) || defined(__x86_64__) -#define rdtscll(val) \ - __asm__ __volatile__("rdtsc" : "=A" (val)) -#else -#error No implementation of rtapi_get_clocks available -#define rdtscll(val) (val)=0 #endif long int max_delay = DEFAULT_MAX_DELAY; From f0cfae046a683d20b075a2feaa5d87c901527335 Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 22 Feb 2019 09:20:59 +0800 Subject: [PATCH 496/516] Change *_task_stop_hook() return type to int ...to accommodate Xenomai --- src/rtapi/flavor/rt-preempt.c | 3 ++- src/rtapi/flavor/rtapi_flavor.h | 4 ++-- src/rtapi/flavor/rtapi_flavor_hook_wrappers.c | 5 ++--- src/rtapi/flavor/xenomai.c | 8 +++++--- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/rtapi/flavor/rt-preempt.c b/src/rtapi/flavor/rt-preempt.c index 47b457d8a0..4cc73843a4 100644 --- a/src/rtapi/flavor/rt-preempt.c +++ b/src/rtapi/flavor/rt-preempt.c @@ -488,8 +488,9 @@ int posix_task_start_hook(task_data *task, int task_id) { return 0; } -void posix_task_stop_hook(task_data *task, int task_id) { +int posix_task_stop_hook(task_data *task, int task_id) { extra_task_data[task_id].destroyed = 1; + return 0; } int posix_wait_hook(const int flags) { diff --git a/src/rtapi/flavor/rtapi_flavor.h b/src/rtapi/flavor/rtapi_flavor.h index 83e34de83a..a67ffdb698 100644 --- a/src/rtapi/flavor/rtapi_flavor.h +++ b/src/rtapi/flavor/rtapi_flavor.h @@ -47,7 +47,7 @@ extern "C" { typedef int (*rtapi_task_new_hook_t)(task_data *task, int task_id); typedef int (*rtapi_task_delete_hook_t)(task_data *task, int task_id); typedef int (*rtapi_task_start_hook_t)(task_data *task, int task_id); - typedef void (*rtapi_task_stop_hook_t)(task_data *task, int task_id); + typedef int (*rtapi_task_stop_hook_t)(task_data *task, int task_id); typedef int (*rtapi_task_pause_hook_t)(task_data *task, int task_id); typedef int (*rtapi_task_wait_hook_t)(const int flags); typedef int (*rtapi_task_resume_hook_t)(task_data *task, int task_id); @@ -117,7 +117,7 @@ extern "C" { flavor_descriptor_ptr f, task_data *task, int task_id); extern int flavor_task_start_hook( flavor_descriptor_ptr f, task_data *task, int task_id); - extern void flavor_task_stop_hook( + extern int flavor_task_stop_hook( flavor_descriptor_ptr f, task_data *task, int task_id); extern int flavor_task_pause_hook( flavor_descriptor_ptr f, task_data *task, int task_id); diff --git a/src/rtapi/flavor/rtapi_flavor_hook_wrappers.c b/src/rtapi/flavor/rtapi_flavor_hook_wrappers.c index 53608359c0..1c4e03e9df 100644 --- a/src/rtapi/flavor/rtapi_flavor_hook_wrappers.c +++ b/src/rtapi/flavor/rtapi_flavor_hook_wrappers.c @@ -77,12 +77,11 @@ int flavor_task_start_hook( SET_FLAVOR_DESCRIPTOR_DEFAULT(); return f->task_start_hook(task, task_id); } -void flavor_task_stop_hook( +int flavor_task_stop_hook( flavor_descriptor_ptr f, task_data *task, int task_id) { SET_FLAVOR_DESCRIPTOR_DEFAULT(); - if (f->task_stop_hook) - f->task_stop_hook(task, task_id); + return f->task_stop_hook(task, task_id); } int flavor_task_pause_hook( flavor_descriptor_ptr f, task_data *task, int task_id) diff --git a/src/rtapi/flavor/xenomai.c b/src/rtapi/flavor/xenomai.c index e5b8086809..30d5b2161d 100644 --- a/src/rtapi/flavor/xenomai.c +++ b/src/rtapi/flavor/xenomai.c @@ -59,13 +59,15 @@ RT_TASK *ostask_self[RTAPI_MAX_TASKS + 1]; #endif // RTAPI +int xenomai_task_self_hook(void); + /*********************************************************************** * RT thread statistics update * ************************************************************************/ #ifdef RTAPI int xenomai_task_update_stats_hook(void) { - int task_id = _rtapi_task_self(); + int task_id = xenomai_task_self_hook(); // paranoia if ((task_id < 0) || (task_id > RTAPI_MAX_TASKS)) { @@ -673,13 +675,13 @@ flavor_descriptor_t flavor_xenomai_descriptor = { .exception_handler_hook = xenomai_exception_handler_hook, .module_init_hook = xenomai_module_init_hook, .module_exit_hook = xenomai_module_exit_hook, - .task_update_stats_hook = xenomai_update_stats_hook, + .task_update_stats_hook = xenomai_task_update_stats_hook, .task_print_thread_stats_hook = xenomai_print_thread_stats, .task_new_hook = NULL, .task_delete_hook = xenomai_task_delete_hook, .task_start_hook = xenomai_task_start_hook, .task_stop_hook = xenomai_task_stop_hook, - .task_pause_hook = xenomai_task_pause_hook; + .task_pause_hook = xenomai_task_pause_hook, .task_wait_hook = xenomai_wait_hook, .task_resume_hook = xenomai_task_resume_hook, .task_delay_hook = xenomai_task_delay_hook, From f692b2fda4f7c5d44f76080822193c729665bbec Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 22 Feb 2019 09:23:44 +0800 Subject: [PATCH 497/516] Fix Xenomai compile errors - Copy over forgotten `#include`s and `#define`s - Fix `xenomai_stats_t` and `xenomai_exception_t` handling - No-op: Move compile-time struct size checks to .h files --- src/rtapi/flavor/rt-preempt.c | 4 --- src/rtapi/flavor/rt-preempt.h | 4 +++ src/rtapi/flavor/rtapi_flavor.h | 4 +-- src/rtapi/flavor/xenomai.c | 63 +++++++++++++++++++-------------- src/rtapi/flavor/xenomai.h | 7 +++- 5 files changed, 48 insertions(+), 34 deletions(-) diff --git a/src/rtapi/flavor/rt-preempt.c b/src/rtapi/flavor/rt-preempt.c index 4cc73843a4..847a5d35c2 100644 --- a/src/rtapi/flavor/rt-preempt.c +++ b/src/rtapi/flavor/rt-preempt.c @@ -57,10 +57,6 @@ // Access the rtpreempt_exception_t thread exception detail object #define FED(detail) ((rtpreempt_exception_t)detail.flavor) -// Check the exception and stats struct sizes -ASSERT_SIZE_WITHIN(rtpreempt_exception_t, MAX_FLAVOR_EXCEPTION_SIZE); -ASSERT_SIZE_WITHIN(rtpreempt_stats_t, MAX_FLAVOR_THREADSTATUS_SIZE); - /* Lock for task_array and module_array allocations */ static pthread_key_t task_key; static pthread_once_t task_key_once = PTHREAD_ONCE_INIT; diff --git a/src/rtapi/flavor/rt-preempt.h b/src/rtapi/flavor/rt-preempt.h index ea58bc9bf3..5056628c1b 100644 --- a/src/rtapi/flavor/rt-preempt.h +++ b/src/rtapi/flavor/rt-preempt.h @@ -36,6 +36,8 @@ typedef struct { // currently unused - signals handled in rtapi_app void *siginfo; } rtpreempt_exception_t; +// Check the exception struct size +ASSERT_SIZE_WITHIN(rtpreempt_exception_t, MAX_FLAVOR_EXCEPTION_SIZE); typedef struct { @@ -58,6 +60,8 @@ typedef struct { long startup_ru_nivcsw; // } rtpreempt_stats_t; +// Check the stats struct size +ASSERT_SIZE_WITHIN(rtpreempt_stats_t, MAX_FLAVOR_THREADSTATUS_SIZE); extern flavor_descriptor_t flavor_rt_prempt_descriptor; extern flavor_descriptor_t flavor_posix_descriptor; diff --git a/src/rtapi/flavor/rtapi_flavor.h b/src/rtapi/flavor/rtapi_flavor.h index a67ffdb698..f39523d482 100644 --- a/src/rtapi/flavor/rtapi_flavor.h +++ b/src/rtapi/flavor/rtapi_flavor.h @@ -22,8 +22,8 @@ extern "C" { // The exception code puts structs in shm in an opaque blob; this is used to // check the allocated storage is large enough // https://stackoverflow.com/questions/807244/ -#define ASSERT_SIZE_WITHIN(type, size) \ - typedef char assertion_failed_##type##_[2*!!(sizeof(type) <= size)-1] +#define ASSERT_SIZE_WITHIN(type, size) \ + typedef char assertion_failed_##type##_[2*!!(sizeof(type) <= size)-1] // Put these in order of preference diff --git a/src/rtapi/flavor/xenomai.c b/src/rtapi/flavor/xenomai.c index 30d5b2161d..d5981ad113 100644 --- a/src/rtapi/flavor/xenomai.c +++ b/src/rtapi/flavor/xenomai.c @@ -24,6 +24,7 @@ #include "config.h" #include "rtapi.h" #include "rtapi_common.h" +#include "xenomai.h" #include /* munlockall() */ #define XENOMAI_INCLUDE(header) @@ -31,6 +32,7 @@ #include XENOMAI_INCLUDE(timer.h) /* rt_timer_*() */ #include /* sigaction/SIGXCPU handling */ #include +#include #include // getpid() #include // cpu sets @@ -38,16 +40,20 @@ #include XENOMAI_INCLUDE(mutex.h) #include // abort() +// really in nucleus/heap.h but we rather get away with minimum include files +#ifndef XNHEAP_DEV_NAME +#define XNHEAP_DEV_NAME "/dev/rtheap" +#endif +#define XENO_GID_SYSFS "/sys/module/xeno_nucleus/parameters/xenomai_gid" + +// These exist on Xenomai but not on RTAI +#define PROC_IPIPE_XENOMAI "/proc/ipipe/Xenomai" #define XENO_GID_SYSFS "/sys/module/xeno_nucleus/parameters/xenomai_gid" // Access the xenomai_stats_t thread status object -#define FTS(ts) ((xenomai_stats_t)ts->flavor) +#define FTS(ts) ((xenomai_stats_t *)&(ts->flavor)) // Access the xenomai_exception_t thread exception detail object -#define FED(detail) ((xenomai_exception_t)detail.flavor) - -// Check the exception and stats struct sizes -ASSERT_SIZE_WITHIN(xenomai_exception_t, MAX_FLAVOR_EXCEPTION_SIZE); -ASSERT_SIZE_WITHIN(xenomai_stats_t, MAX_FLAVOR_THREADSTATUS_SIZE); +#define FTED(detail) ((xenomai_exception_t *)&(detail.flavor)) /* RTAPI task functions */ RT_TASK ostask_array[RTAPI_MAX_TASKS + 1]; @@ -90,17 +96,17 @@ int xenomai_task_update_stats_hook(void) rtapi_threadstatus_t *ts = &global_data->thread_status[task_id]; #ifdef XENOMAI_V2 - FTS(fts).modeswitches = rtinfo.modeswitches; - FTS(fts).ctxswitches = rtinfo.ctxswitches; - FTS(fts).pagefaults = rtinfo.pagefaults; - FTS(fts).exectime = rtinfo.exectime; - FTS(fts).status = rtinfo.status; + FTS(ts)->modeswitches = rtinfo.modeswitches; + FTS(ts)->ctxswitches = rtinfo.ctxswitches; + FTS(ts)->pagefaults = rtinfo.pagefaults; + FTS(ts)->exectime = rtinfo.exectime; + FTS(ts)->status = rtinfo.status; #else - FTS(fts).modeswitches = rtinfo.stat.msw; - FTS(fts).ctxswitches = rtinfo.stat.csw; - FTS(fts).pagefaults = rtinfo.stat.pf; - FTS(fts).exectime = rtinfo.stat.xtime; - FTS(fts).status = rtinfo.stat.status; + FTS(ts)->modeswitches = rtinfo.stat.msw; + FTS(ts)->ctxswitches = rtinfo.stat.csw; + FTS(ts)->pagefaults = rtinfo.stat.pf; + FTS(ts)->exectime = rtinfo.stat.xtime; + FTS(ts)->status = rtinfo.stat.status; #endif ts->num_updates++; @@ -397,11 +403,11 @@ int xenomai_wait_hook(const int flags) { case -ETIMEDOUT: // release point was missed - FED(detail).overruns = overruns; + FTED(detail)->overruns = overruns; // update thread status in global_data - FTS(fts).wait_errors++; - FTS(fts).total_overruns += overruns; + FTS(ts)->wait_errors++; + FTS(ts)->total_overruns += overruns; type = XU_ETIMEDOUT; break; @@ -508,6 +514,8 @@ int kernel_is_xenomai() (stat(XENO_GID_SYSFS, &sb) == 0)); } +int xenomai_flavor_check(void); + int xenomai_can_run_flavor() { if (! kernel_is_xenomai()) @@ -598,13 +606,13 @@ void xenomai_print_thread_stats(int task_id) rtapi_print("other_err=%d\n", ts->api_errors); } - rtapi_print(" wait_errors=%d\t", FTS(fts).wait_errors); - rtapi_print("overruns=%d\t", FTS(fts).total_overruns); - rtapi_print("modeswitches=%d\t", FTS(fts).modeswitches); - rtapi_print("contextswitches=%d\n", FTS(fts).ctxswitches); - rtapi_print(" pagefaults=%d\t", FTS(fts).pagefaults); - rtapi_print("exectime=%llduS\t", FTS(fts).exectime/1000); - rtapi_print("status=0x%x\n", FTS(fts).status); + rtapi_print(" wait_errors=%d\t", FTS(ts)->wait_errors); + rtapi_print("overruns=%d\t", FTS(ts)->total_overruns); + rtapi_print("modeswitches=%d\t", FTS(ts)->modeswitches); + rtapi_print("contextswitches=%d\n", FTS(ts)->ctxswitches); + rtapi_print(" pagefaults=%d\t", FTS(ts)->pagefaults); + rtapi_print("exectime=%llduS\t", FTS(ts)->exectime/1000); + rtapi_print("status=0x%x\n", FTS(ts)->status); rtapi_print("\n"); } @@ -613,6 +621,7 @@ void xenomai_exception_handler_hook(int type, rtapi_exception_detail_t *detail, int level) { + rtapi_threadstatus_t *ts = &global_data->thread_status[detail->task_id]; switch ((xenomai_exception_id_t)type) { // Timing violations case XU_ETIMEDOUT: @@ -669,7 +678,7 @@ void xenomai_exception_handler_hook(int type, flavor_descriptor_t flavor_xenomai_descriptor = { .name = "xenomai", - .flavor_id = RTAPI_XENOMAI_ID, + .flavor_id = RTAPI_FLAVOR_XENOMAI_ID, .flags = FLAVOR_DOES_IO + FLAVOR_IS_RT + FLAVOR_TIME_NO_CLOCK_MONOTONIC, .can_run_flavor = xenomai_can_run_flavor, .exception_handler_hook = xenomai_exception_handler_hook, diff --git a/src/rtapi/flavor/xenomai.h b/src/rtapi/flavor/xenomai.h index e7f3d41d78..db39c194e8 100644 --- a/src/rtapi/flavor/xenomai.h +++ b/src/rtapi/flavor/xenomai.h @@ -21,6 +21,8 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ********************************************************************/ +#include "rtapi_flavor.h" + typedef enum { XU_EXCEPTION_NONE=0, @@ -40,7 +42,8 @@ typedef struct { // passed by ref from rt_task_wait_period() unsigned long overruns; } xenomai_exception_t; - +// Check the exception struct size +ASSERT_SIZE_WITHIN(xenomai_exception_t, MAX_FLAVOR_EXCEPTION_SIZE); typedef struct { // as reported by rt_task_inquire() @@ -60,5 +63,7 @@ typedef struct { // all others increment other_errors } xenomai_stats_t; +// Check the stats struct size +ASSERT_SIZE_WITHIN(xenomai_stats_t, MAX_FLAVOR_THREADSTATUS_SIZE); extern flavor_descriptor_t flavor_xenomai_descriptor; From 42eed42b8b3913d3948865d620fb222cca85087e Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 22 Feb 2019 09:42:59 +0800 Subject: [PATCH 498/516] scripts/build_docker: Use all CPUS by default for `make -j$CPUS` --- scripts/build_docker | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build_docker b/scripts/build_docker index 3c12aba2d9..70d3b2ab1d 100755 --- a/scripts/build_docker +++ b/scripts/build_docker @@ -12,7 +12,7 @@ CMD=${CMD:-shell} IMAGE=${IMAGE:-dovetailautomata/mk-cross-builder} TAG=${TAG:-amd64_9} -JOBS=${JOBS:-2} +JOBS=${JOBS:-$(nproc)} BUILD_SOURCE=${BUILD_SOURCE:-true} # update Changelog & source pkg # CL arguments From 0da3d1110075d0bb283e913a027322faf925eb88 Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 22 Feb 2019 10:50:50 +0800 Subject: [PATCH 499/516] scripts/build_docker: remove `flavor` call --- scripts/build_docker | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/build_docker b/scripts/build_docker index 70d3b2ab1d..4244915ee8 100755 --- a/scripts/build_docker +++ b/scripts/build_docker @@ -156,7 +156,6 @@ case $CMD in echo -e 'ANNOUNCE_IPV4=0\nANNOUNCE_IPV6=0' >> \ etc/linuxcnc/machinekit.ini; tail -2 etc/linuxcnc/machinekit.ini; - flavor; # Run regression tests ${RUN_TESTS} ${TEST_ARGS}" From c6b60a16fbc4af0557a1c8b082089de76f134a73 Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 22 Feb 2019 10:51:17 +0800 Subject: [PATCH 500/516] hal/components/Submakefile: no-op comment tweak --- src/hal/components/Submakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hal/components/Submakefile b/src/hal/components/Submakefile index 542b706f7c..365c4737d0 100644 --- a/src/hal/components/Submakefile +++ b/src/hal/components/Submakefile @@ -74,7 +74,7 @@ objects/%.c: %.comp ../bin/comp @mkdir -p $(dir $@) $(Q)../bin/comp --require-license -o $@ $< -# Generate rules for building component.so files +# Generate rules for building component.so files from component.comp files # # example: $$(call comp_build_rules,hal/components,hal/components/logic.comp) # produces rules: From 1b7f3df6b873171d9b51165facdf0681f2cc77a3 Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 22 Feb 2019 11:58:53 +0800 Subject: [PATCH 501/516] debian/control: fix dep --- debian/control.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control.in b/debian/control.in index 941bdfe482..bf76843c13 100644 --- a/debian/control.in +++ b/debian/control.in @@ -18,7 +18,7 @@ Build-Depends: debhelper (>= 6), python-protobuf (>= 2.4.1), libprotoc-dev (>= 2.4.1), python-simplejson, libtk-img, libboost-thread-dev, python-pyftpdlib, tcl8.6-dev, tk8.6-dev, libcgroup-dev, - python-gst-1.0 | python-gst-0.10, + python-gst-1.0 | python-gst0.10, python-imaging | python-pil, python-imaging-tk | python-pil.imagegtk @BUILD_DEPS@ Standards-Version: 2.1.0 From a90319a36ae2a7706804478f582e4f4f6062de22 Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 22 Feb 2019 12:52:25 +0800 Subject: [PATCH 502/516] Fix packages In `debian/configure`, build Xenomai if the `libxenomai-dev` package exists; drop `-x` option. In `debian/control`, move `python-gst` etc. package deps mistakenly added to `Build-Depends:` to `Depends:`. Drop generating unneeded `debian/rules.include` Makefile fragment. In `scripts/build_docker`, drop Xenomai configuration. --- debian/configure | 15 +++++++++------ debian/control.in | 8 ++++---- debian/rules | 3 --- scripts/build_docker | 12 +----------- 4 files changed, 14 insertions(+), 24 deletions(-) diff --git a/debian/configure b/debian/configure index 537e91bd0e..815a2ba818 100755 --- a/debian/configure +++ b/debian/configure @@ -73,7 +73,6 @@ usage() { test -z "$1" || echo "$1" echo "Usage: $0 [ arg ... ]" echo " arg: function:" - echo " -x build Xenomai threads" echo " -c rewrite changelog to set package version from git commit" echo " -s create source tarball for non binary package builds" } >&2 @@ -109,26 +108,29 @@ case "$DISTRO_CODENAME" in : # Nothing ;; stretch|jessie|sid) - BUILD_DEPS+=", python-gtksourceview2" + DEPS+=", python-gtksourceview2" ;; *) - BUILD_DEPS+=", python-gtksourceview2" + DEPS+=", python-gtksourceview2" ;; esac # Configure Xenomai threads configure_xenomai() { + if ! dpkg-query -W | grep -q libxenomai-dev; then + echo "Not configuring Xenomai: libxenomai-dev package not found" >&2 + return + fi + echo "debian/control: Adding xenomai threads configuration" >&2 # Be sure the -dev files only appear once BUILD_DEPS+=", libxenomai-dev" DEPS+=", xenomai-runtime" - echo "THREADS_XENOMAI = --with-xenomai" > rules.include } # read command line options -while getopts xcsh ARG; do +while getopts csh ARG; do case $ARG in - x) configure_xenomai ;; c) do_changelog ;; # set new changelog with package versions from git s) do_source_tarball ;; # create tarball for non binary builds h) usage ;; @@ -137,6 +139,7 @@ while getopts xcsh ARG; do done # Set control Build-Depends: +configure_xenomai cp control.in control sed >control = 6), libprotobuf-dev (>= 2.4.1), protobuf-compiler (>= 2.4.1), python-protobuf (>= 2.4.1), libprotoc-dev (>= 2.4.1), python-simplejson, libtk-img, libboost-thread-dev, - python-pyftpdlib, tcl8.6-dev, tk8.6-dev, libcgroup-dev, - python-gst-1.0 | python-gst0.10, - python-imaging | python-pil, - python-imaging-tk | python-pil.imagegtk @BUILD_DEPS@ + python-pyftpdlib, tcl8.6-dev, tk8.6-dev, libcgroup-dev @BUILD_DEPS@ Standards-Version: 2.1.0 Package: machinekit @@ -38,6 +35,9 @@ Depends: ${shlibs:Depends}, machinekit-rt-threads, tcl8.6, tk8.6, python-avahi, python-simplejson, python-pyftpdlib, python-pydot, xdot, tclreadline, bc, procps, psmisc, cgroup-tools, + python-gst-1.0 | python-gst0.10, + python-imaging | python-pil, + python-imaging-tk | python-pil.imagegtk, uuid-runtime @DEPS@ Description: PC based motion controller for real-time Linux Machinekit is the next-generation Enhanced Machine Controller which diff --git a/debian/rules b/debian/rules index fbb69fb306..dd66c5942f 100755 --- a/debian/rules +++ b/debian/rules @@ -44,9 +44,6 @@ SHLIBDEPS_X += mb2hal gs2_vfd hy_vfd # Cross-compile variables DEB_HOST_ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH) -# Pick up dynamically-configured variables, like Xenomai --include rules.include - # Parallel make ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) diff --git a/scripts/build_docker b/scripts/build_docker index 4244915ee8..8a6672bcaa 100755 --- a/scripts/build_docker +++ b/scripts/build_docker @@ -54,16 +54,6 @@ case ${TAG} in *) echo "Warning: unknown tag '${TAG}'" >&2 ;; esac -# Distro-specific: -case ${TAG} in - *_8) - PKG_CONFIGURE_ARGS="-x" # Enable Xenomai - ;; - *) - : # Nothing to do - ;; -esac - # Distro specific warnings level case ${TAG} in *_8|*_9) @@ -124,7 +114,7 @@ case $CMD in BUILD_CL=( bash -xec " # configure source package - debian/configure ${PKG_CONFIGURE_ARGS}; + debian/configure; # update Changelog and build source package $SCRIPT_DIR/build_source_package $BUILD_SOURCE From 7f592d7bc14f4d2a775e6b84ba7c9a6ab09f1b31 Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 22 Feb 2019 13:20:39 +0800 Subject: [PATCH 503/516] Remove scripts/check-system-configuration.sh from build rules This might make sense to run out of `scripts/realtime`, but in the build it's just noise. --- src/Makefile | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Makefile b/src/Makefile index cb08c05002..167d36952d 100755 --- a/src/Makefile +++ b/src/Makefile @@ -777,8 +777,6 @@ setuid: $(call fix_perms,../libexec/pci_read) $(call fix_perms,../libexec/pci_write) $(call fix_perms,../libexec/rtapi_app) -# check system configuration: logging, ulimits, udev - @-../scripts/check-system-configuration.sh else setuid: @echo "'make setuid' is not needed if hardware drivers are not used" From ef51adcdf4d67eda5c8b9a28c03f200b4086952d Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 14 Mar 2019 15:57:15 +0800 Subject: [PATCH 504/516] debian/configure: Tweak Xenomai configure message @cerna reported [1] the informational message reporting Xenomai won't be configured sounded too much like an error. [1]: https://github.com/machinekit/machinekit/pull/1462 --- debian/configure | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/debian/configure b/debian/configure index 815a2ba818..126b09a7f6 100755 --- a/debian/configure +++ b/debian/configure @@ -118,12 +118,11 @@ esac # Configure Xenomai threads configure_xenomai() { if ! dpkg-query -W | grep -q libxenomai-dev; then - echo "Not configuring Xenomai: libxenomai-dev package not found" >&2 + echo "Not configuring build for Xenomai (no libxenomai-dev package)" >&2 return fi echo "debian/control: Adding xenomai threads configuration" >&2 - # Be sure the -dev files only appear once BUILD_DEPS+=", libxenomai-dev" DEPS+=", xenomai-runtime" } From b3b51f5a390a19521bfa7a2cb4bcd4442a248048 Mon Sep 17 00:00:00 2001 From: Mick Date: Fri, 22 Feb 2019 12:55:14 +0000 Subject: [PATCH 505/516] Add specific refs to libzmq to prevent DSO errors Also add to comp CFLAGS to ensure RTAPI is defined for rt components and liblinuxcnculapi is linked. These caused the errors in runtests, including DSO error re rtapi_sprintf() and failure to define -DRTAPI or -DULAPI --- src/hal/utils/comp.g | 3 ++- src/rtapi/Submakefile | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/hal/utils/comp.g b/src/hal/utils/comp.g index f5edc94da7..760fee24f9 100644 --- a/src/hal/utils/comp.g +++ b/src/hal/utils/comp.g @@ -654,7 +654,7 @@ def build_usr(tempdir, filename, mode, origfilename): makefile = os.path.join(tempdir, "Makefile") f = open(makefile, "w") print >>f, "%s: %s" % (binname, filename) - print >>f, "\t$(CC) $(EXTRA_CFLAGS) -URTAPI -U__MODULE__ -DULAPI -Os %s -o $@ $< -Wl,-rpath,$(LIBDIR) -L$(LIBDIR) -llinuxcnchal %s" % ( + print >>f, "\t$(CC) $(EXTRA_CFLAGS) -URTAPI -U__MODULE__ -DULAPI -Os %s -o $@ $< -Wl,-rpath,$(LIBDIR) -L$(LIBDIR) -llinuxcnchal -llinuxcnculapi %s" % ( options.get("extra_compile_args", ""), options.get("extra_link_args", "")) print >>f, "include %s" % find_modinc() @@ -678,6 +678,7 @@ def build_rt(tempdir, filename, mode, origfilename): print >>f, "include %s" % find_modinc() print >>f, "EXTRA_CFLAGS += -I%s" % os.path.abspath(os.path.dirname(origfilename)) print >>f, "EXTRA_CFLAGS += -I%s" % os.path.abspath('.') + print >>f, "EXTRA_CFLAGS += -DRTAPI -L$(LIBDIR) -llinuxcnchal" f.close() if mode == INSTALL: target = "modules install" diff --git a/src/rtapi/Submakefile b/src/rtapi/Submakefile index 3e8bf82a2f..be6a9e38c1 100644 --- a/src/rtapi/Submakefile +++ b/src/rtapi/Submakefile @@ -262,7 +262,7 @@ RTAPI_MSGD_CFLAGS := \ RTAPI_MSGD_LDFLAGS := \ $(PROTOBUF_LIBS) $(CZMQ_LIBS) $(AVAHI_LIBS) \ - -lstdc++ -ldl -luuid + -lstdc++ -ldl -luuid -lzmq # $(LIBBACKTRACE) # already linked into libmtalk From f5d5e2b790821fc9d713bc3f6b5c454079557413 Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 14 Mar 2019 16:24:10 +0800 Subject: [PATCH 506/516] configure.ac: Check for libzmq --- src/configure.ac | 10 ++++++++++ src/machinetalk/haltalk/Submakefile | 1 + 2 files changed, 11 insertions(+) diff --git a/src/configure.ac b/src/configure.ac index 9893ad381a..10164633b7 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -692,6 +692,12 @@ AC_ARG_ENABLE(dev, # NML ############################################################################## +PKG_CHECK_MODULES([ZMQ], [libzmq], + [ + AC_DEFINE(HAVE_ZMQ, [], [zeroMQ library available]) + USE_ZMQ=yes + ],) + PKG_CHECK_MODULES([CZMQ], [libczmq > 4.0], [ AC_DEFINE(HAVE_CZMQ, [], [zeroMQ czmq library available]) @@ -978,6 +984,9 @@ if test "$BUILD_NMLDEP" = yes; then AC_DEFINE(BUILD_NMLDEP, [], [build NML dependent parts]) fi +AC_SUBST([ZMQ_CFLAGS]) +AC_SUBST([ZMQ_LIBS]) + AC_SUBST([CZMQ_CFLAGS]) AC_SUBST([CZMQ_LIBS]) @@ -1005,6 +1014,7 @@ AC_SUBST([UUID_LIBS]) AC_SUBST([LIBCGROUP_CFLAGS]) AC_SUBST([LIBCGROUP_LIBS]) +AC_SUBST([USE_ZMQ]) AC_SUBST([USE_CZMQ]) AC_SUBST([USE_PROTOBUF]) AC_SUBST([USE_JANSSON]) diff --git a/src/machinetalk/haltalk/Submakefile b/src/machinetalk/haltalk/Submakefile index ba54c1b1fd..dd6fa81348 100644 --- a/src/machinetalk/haltalk/Submakefile +++ b/src/machinetalk/haltalk/Submakefile @@ -17,6 +17,7 @@ HALTALK_CXXFLAGS := -DULAPI \ HALTALK_LDFLAGS := \ $(PROTOBUF_LIBS) \ $(UUID_LIBS) \ + $(ZMQ_LIBS) \ $(CZMQ_LIBS) \ $(JANSSON_LIBS) \ $(AVAHI_LIBS) \ From fbda310a62ef55e0d3bd8d39c688e6559f9eddc7 Mon Sep 17 00:00:00 2001 From: John Morris Date: Wed, 10 Jul 2019 17:50:24 -0500 Subject: [PATCH 507/516] debian: Pull in all changes --- debian/.gitignore | 3 +- debian/configure | 146 +- debian/control.d/control.buster.in | 7 - debian/control.d/control.in | 22 - debian/control.d/control.jessie.in | 6 - debian/control.d/control.posix.ftr | 4 - debian/control.d/control.posix.hdr | 6 - debian/control.d/control.rt-preempt.ftr | 5 - debian/control.d/control.rt-preempt.hdr | 6 - debian/control.d/control.stretch.in | 6 - debian/control.d/control.xenomai.ftr | 5 - debian/control.d/control.xenomai.hdr | 6 - debian/control.in | 61 + debian/machinekit-hal-dev.install | 8 + debian/machinekit-hal-rt-preempt.install.in | 29 - debian/machinekit-hal-xenomai.install.in | 29 - ...osix.install.in => machinekit-hal.install} | 26 +- debian/posix-postinst.add | 13 - debian/{postinst.in => postinst} | 0 debian/rt-preempt-postinst.add | 13 - debian/{rules.in => rules} | 33 +- debian/xenomai-postinst.add | 13 - diff-debian.patch | 1276 +++++++++++++++++ 23 files changed, 1418 insertions(+), 305 deletions(-) delete mode 100644 debian/control.d/control.buster.in delete mode 100644 debian/control.d/control.in delete mode 100644 debian/control.d/control.jessie.in delete mode 100644 debian/control.d/control.posix.ftr delete mode 100644 debian/control.d/control.posix.hdr delete mode 100644 debian/control.d/control.rt-preempt.ftr delete mode 100644 debian/control.d/control.rt-preempt.hdr delete mode 100644 debian/control.d/control.stretch.in delete mode 100644 debian/control.d/control.xenomai.ftr delete mode 100644 debian/control.d/control.xenomai.hdr create mode 100644 debian/control.in create mode 100644 debian/machinekit-hal-dev.install delete mode 100644 debian/machinekit-hal-rt-preempt.install.in delete mode 100644 debian/machinekit-hal-xenomai.install.in rename debian/{machinekit-hal-posix.install.in => machinekit-hal.install} (54%) delete mode 100644 debian/posix-postinst.add rename debian/{postinst.in => postinst} (100%) delete mode 100644 debian/rt-preempt-postinst.add rename debian/{rules.in => rules} (86%) delete mode 100644 debian/xenomai-postinst.add create mode 100644 diff-debian.patch diff --git a/debian/.gitignore b/debian/.gitignore index 97fcc4aa15..5c68063cca 100644 --- a/debian/.gitignore +++ b/debian/.gitignore @@ -1,9 +1,8 @@ # files generated from debian/configure /control -/rules /files /configure.cmdline -/machinekit*.install +/rules.include /changelog # directory artifacts diff --git a/debian/configure b/debian/configure index c30365043e..90514a0874 100755 --- a/debian/configure +++ b/debian/configure @@ -19,64 +19,18 @@ cd "$(dirname $0)" # re-run echo $0 $* > configure.cmdline -rules_enable_threads() { - # enable thread flavors in debian/rules; e.g. - # THREADS_POSIX = --with-posix - FLAVOR=$1 - FLAVOR_VAR=THREADS_$(echo $FLAVOR | tr 'a-z-' 'A-Z_') - sed -i rules \ - -e "s/^${FLAVOR_VAR}[^_].*/${FLAVOR_VAR} = --with-${FLAVOR}/" - echo "debian/rules: enabled ${FLAVOR} threads" >&2 -} - -guess_arch_from_kver() { - # utility to make a guess at the kernel header arch from the - # kernel version; this works for Debian kernels, and 'any' is - # correct for the RTAI kernel packages in the Machinekit Debian - # archive - KVER=$1 - case $KVER in - *-?86 | *-?86-pae) echo i386 ;; - *-amd64) echo amd64 ;; - *) echo any ;; # For non-Debian kernel package naming - esac -} - -do_posix() { - cat control.d/control.posix.hdr control.d/control.$DISTRO_CODENAME.in control.d/control.posix.ftr >> control - echo "debian/control: added POSIX threads package" >&2 - rules_enable_threads posix - HAVE_FLAVOR=true -} - -do_rt-preempt() { - cat control.d/control.rt-preempt.hdr control.d/control.$DISTRO_CODENAME.in control.d/control.rt-preempt.ftr >> control - echo "debian/control: added RT_PREEMPT threads package" >&2 - rules_enable_threads rt-preempt - HAVE_FLAVOR=true -} - -do_xenomai() { - cat control.d/control.xenomai.hdr control.d/control.$DISTRO_CODENAME.in control.d/control.xenomai.ftr >> control -# sed -i "s|yapps2-runtime|yapps2-runtime, xenomai-runtime|" control - echo "debian/control: added xenomai threads package for Jessie" >&2 - # Be sure the -dev files only appear once - BUILD_DEPS="${BUILD_DEPS/libxenomai-dev, /}libxenomai-dev, " - echo "debian/control: added Xenomai (userland) threads package" \ - "with Build-Depends:" >&2 - echo " libxenomai-dev" >&2 - rules_enable_threads xenomai - HAVE_FLAVOR=true -} - -## Set version for packages by altering changelog -## Write new version info then prepend existing one, for use in changes file -## Allows command line builds and builds outside of Travis environment to set meaningful version numbers +## Set version for packages by altering changelog Write new version +## info then prepend existing one, for use in changes file Allows +## command line builds and builds outside of Travis environment to set +## meaningful version numbers do_changelog() { - DISTRO_UC="$(echo $DISTRO_CODENAME | sed 's/^[[:space:]]*//g' | sed -e 's/\b\(.\)/\u\1/g')" + DISTRO_UC="$(echo $DISTRO_CODENAME | sed 's/^[[:space:]]*//g' | + sed -e 's/\b\(.\)/\u\1/g')" DISTRO_LC="$(echo $DISTRO_CODENAME | sed 's/^[[:space:]]*//g')" - MKVERSION="$(git show HEAD:VERSION | cut -d ' ' -f 1).$(git rev-list --count master)-1.git$(git rev-parse --short HEAD)~${DISTRO_LC}" + MKVERSION="$(git show HEAD:VERSION | cut -d ' ' -f 1).$( + git rev-list --count master)-1.git$( + git rev-parse --short HEAD)~${DISTRO_LC}" COMMITTER="$(git show -s --pretty=%an $(git rev-parse --short HEAD))" EMAIL="$(git show -s --format='%ae' $(git rev-parse --short HEAD))" @@ -95,31 +49,30 @@ cat changelog.in >> changelog echo "New package version number added to changelog" } -## Create source orig tarball in format required for creation of debian tarball and .dsc file -## Allows non binary package builds from command line or outside Travis environment +## Create source orig tarball in format required for creation of +## debian tarball and .dsc file Allows non binary package builds from +## command line or outside Travis environment do_source_tarball() { -#version based on major version plus commit number only, without suffixed -1 or commit hash -MK_VERSION="$(git show HEAD:VERSION | cut -d ' ' -f 1).$(git rev-list --count master)" - -OWD=$PWD -cd ../ -git archive HEAD | bzip2 -z > ../machinekit-hal_${MK_VERSION}.orig.tar.bz2 -echo "Source tarball created" -cd $OWD + #version based on major version plus commit number only, without + #suffixed -1 or commit hash + MK_VERSION="$(git show HEAD:VERSION | cut -d ' ' -f 1).$( + git rev-list --count master)" + + OWD=$PWD + cd ../ + git archive HEAD | bzip2 -z > ../machinekit-hal_${MK_VERSION}.orig.tar.bz2 + echo "Source tarball created" + cd $OWD } usage() { { test -z "$1" || echo "$1" echo "Usage: $0 [ arg ... ]" - echo " arg: function:" - echo " -p build POSIX threads" - echo " -r build RT_PREEMPT threads" - echo " -x build Xenomai threads" - echo " -c rewrite changelog to set package version from git commit" - echo " -s create source tarball for non binary package builds" - echo " *** Argument may be repeated for multiple kernels" + echo " arg: function:" + echo " -c rewrite changelog to set package version from git commit" + echo " -s create source tarball for non binary package builds" } >&2 exit 1 } @@ -140,28 +93,36 @@ DEPS= # List of Depends HAVE_FLAVOR=false HAVE_KTHREADS_FLAVOR=false -cp control.d/control.in control -echo "debian/control: copied base template" >&2 - -cp postinst.in machinekit-hal-posix.postinst -cp postinst.in machinekit-hal-rt-preempt.postinst -cp postinst.in machinekit-hal-xenomai.postinst - -cp rules.in rules; chmod +x rules -echo "debian/rules: copied base template" >&2 - -cp changelog.in changelog -echo "debian/rules: copied base changelog" >&2 +case "$DISTRO_CODENAME" in + buster) + : # Nothing + ;; + stretch|jessie|sid) + DEPS+=", python-gtksourceview2" + ;; + *) + DEPS+=", python-gtksourceview2" + ;; +esac + +# Configure Xenomai threads +configure_xenomai() { + if ! dpkg-query -W | grep -q libxenomai-dev; then + echo "Not configuring build for Xenomai (no libxenomai-dev package)" >&2 + return + fi + + echo "debian/control: Adding xenomai threads configuration" >&2 + BUILD_DEPS+=", libxenomai-dev" + DEPS+=", xenomai-runtime" +} # read command line options - d is a dummy to stop args being req -while getopts csprxd:?h ARG; do +while getopts csh ARG; do case $ARG in - p) do_posix ;; - r) do_rt-preempt ;; - x) do_xenomai ;; c) do_changelog ;; # set new changelog with package versions from git s) do_source_tarball ;; # create tarball for non binary builds - ?|h) usage ;; + h) usage ;; *) usage "Unknown arg: '-$ARG'" ;; esac done @@ -171,10 +132,9 @@ if test "$DISTRO_CODENAME" != jessie; then fi # Set control Build-Depends: -sed -i control \ +configure_xenomai +cp control.in control +sed >control &2 - -# Warn if no flavor configured -$HAVE_FLAVOR || usage "WARNING: No thread flavors configured" diff --git a/debian/control.d/control.buster.in b/debian/control.d/control.buster.in deleted file mode 100644 index b4c70894bc..0000000000 --- a/debian/control.d/control.buster.in +++ /dev/null @@ -1,7 +0,0 @@ -Depends: libavahi-client3 (>= 0.6.16), libavahi-common3 (>= 0.6.16), libc6 (>= 2.27), libcgroup1 (>= 0.36.2), libczmq4 (>= 3.0.2), libfontconfig1 (>= 2.12.6), libfreetype6 (>= 2.2.1), - libgcc1 (>= 1:4.2), libgl1, libglib2.0-0 (>= 2.12.0), libjansson4 (>= 2.2), libmodbus5 (>= 3.0.2), libprotobuf17, libreadline7 (>= 6.0), libstdc++6 (>= 5.2), libtk8.6 (>= 8.6.0), - libudev1 (>= 183), libusb-1.0-0 (>= 2:1.0.9), libuuid1 (>= 2.16), libx11-6, libxext6, libxft2 (>> 2.1.1), libxinerama1, libxss1, libzmq5 (>= 3.2.3+dfsg), zlib1g (>= 1:1.1.4), - python (<< 2.8), python (>= 2.7~), python:any (<< 2.8), python:any (>= 2.7~), libboost-python1.62.0 | libboost-python1.67.0, libboost-system1.62.0 | libboost-system1.67.0, - libboost-thread1.62.0 | libboost-thread1.67.0, - bc, cgroup-tools, libtk-img (>= 1.13), procps, psmisc, python-tk, python-numpy, python-xlib, - python-gtkglext1, python-configobj, python-zmq, python-protobuf (>= 2.4.1), python-avahi, python-simplejson, python-pyftpdlib, tclreadline, tcl8.6, tk8.6, uuid-runtime, yapps2 diff --git a/debian/control.d/control.in b/debian/control.d/control.in deleted file mode 100644 index b49cb1e745..0000000000 --- a/debian/control.d/control.in +++ /dev/null @@ -1,22 +0,0 @@ -Source: machinekit-hal -Section: misc -Priority: extra -Maintainer: ArcEye -Build-Depends: debhelper (>= 6), - autoconf (>= 2.63), automake, libboost-python-dev, libgl1-mesa-dev, - libglu1-mesa-dev, libmodbus-dev (>= 3.0), - libncurses-dev, libreadline-dev, libusb-1.0-0-dev, libxmu-dev, - libxmu-headers, python (>= 2.6.6-3~), python-dev (>= 2.6.6-3~), - cython (>= 0.19), dh-python, - pkg-config, psmisc, python-tk, libxaw7-dev, libboost-serialization-dev, - libzmq3-dev (>= 4.0.4), libczmq-dev (>= 4.0.2), libjansson-dev (>= 2.5), - libwebsockets-dev (>= 1.2.2), - python-zmq (>= 14.0.1), procps, - liburiparser-dev, libssl-dev, python-setuptools, - uuid-dev, uuid-runtime, libavahi-client-dev, - libprotobuf-dev (>= 2.4.1), protobuf-compiler (>= 2.4.1), - python-protobuf (>= 2.4.1), libprotoc-dev (>= 2.4.1), - python-simplejson, libboost-thread-dev, libcgroup-dev, - yapps2-runtime | python-yapps, yapps2, - python-pyftpdlib, @BUILD_DEPS@ -Standards-Version: 2.1.0 diff --git a/debian/control.d/control.jessie.in b/debian/control.d/control.jessie.in deleted file mode 100644 index 931a9d9d7b..0000000000 --- a/debian/control.d/control.jessie.in +++ /dev/null @@ -1,6 +0,0 @@ -Depends: libavahi-client3 (>= 0.6.16), libavahi-common3 (>= 0.6.16), libc6 (>= 2.15), libcgroup1 (>= 0.36.2), libczmq4 (>= 3.0.2), libfontconfig1 (>= 2.11), libfreetype6 (>= 2.2.1), - libgcc1 (>= 1:4.1.1), libgl1-mesa-glx | libgl1, libglib2.0-0 (>= 2.12.0), libjansson4 (>= 2.2), libmodbus5 (>= 3.0.2), libprotobuf9, libreadline6 (>= 6.0), libstdc++6 (>= 4.9), - libtk8.6 (>= 8.6.0), libudev1 (>= 183), libusb-1.0-0 (>= 2:1.0.9), libuuid1 (>= 2.16), libx11-6, libxext6, libxft2 (>> 2.1.1), libxinerama1, libxss1, libzmq3 (>= 3.2.3+dfsg), - zlib1g (>= 1:1.1.4), python (<< 2.8), python (>= 2.7~), python:any (>= 2.7.5-5~), libboost-python1.55.0, libboost-thread1.55.0, libboost-system1.55.0, - bc, cgroup-tools, libtk-img (>=1.13), procps, psmisc, python-tk, python-numpy, python-xlib, python-gtkglext1, python-configobj, python-zmq, python-protobuf (>= 2.4.1), - python-avahi, python-simplejson, python-pyftpdlib, tclreadline, tcl8.6, tk8.6, uuid-runtime, yapps2-runtime diff --git a/debian/control.d/control.posix.ftr b/debian/control.d/control.posix.ftr deleted file mode 100644 index c04087d852..0000000000 --- a/debian/control.d/control.posix.ftr +++ /dev/null @@ -1,4 +0,0 @@ -Description: HAL stack split from Machinekit - . - This package provides components and drivers that run on a non-realtime - (Posix) system. diff --git a/debian/control.d/control.posix.hdr b/debian/control.d/control.posix.hdr deleted file mode 100644 index 7f9745c5c5..0000000000 --- a/debian/control.d/control.posix.hdr +++ /dev/null @@ -1,6 +0,0 @@ - -Package: machinekit-hal-posix -Architecture: any -Provides: machinekit-hal -Conflicts: machinekit, machinekit-hal-rt-preempt, machinekit-hal-xenomai -Suggests: hostmot2-firmware-all [!armhf] diff --git a/debian/control.d/control.rt-preempt.ftr b/debian/control.d/control.rt-preempt.ftr deleted file mode 100644 index 451c71f2ed..0000000000 --- a/debian/control.d/control.rt-preempt.ftr +++ /dev/null @@ -1,5 +0,0 @@ - ,linux-image-rt-686-pae [i386], linux-image-rt-amd64 [amd64] -Description: HAL stack split from Machinekit - . - This package provides components and drivers that run on a realtime - (PREEMPT RT) system. diff --git a/debian/control.d/control.rt-preempt.hdr b/debian/control.d/control.rt-preempt.hdr deleted file mode 100644 index 01ad8a7b40..0000000000 --- a/debian/control.d/control.rt-preempt.hdr +++ /dev/null @@ -1,6 +0,0 @@ - -Package: machinekit-hal-rt-preempt -Architecture: any -Provides: machinekit-hal -Conflicts: machinekit, machinekit-hal-posix, machinekit-hal-xenomai -Suggests: hostmot2-firmware-all [!armhf] diff --git a/debian/control.d/control.stretch.in b/debian/control.d/control.stretch.in deleted file mode 100644 index 3b9ca76878..0000000000 --- a/debian/control.d/control.stretch.in +++ /dev/null @@ -1,6 +0,0 @@ -Depends: libavahi-client3 (>= 0.6.16), libavahi-common3 (>= 0.6.16), libc6 (>= 2.15), libcgroup1 (>= 0.36.2), libczmq4 (>= 3.0.2), libfontconfig1 (>= 2.11), libfreetype6 (>= 2.2.1), - libgcc1 (>= 1:4.2), libgl1-mesa-glx | libgl1, libglib2.0-0 (>= 2.12.0), libjansson4 (>= 2.2), libmodbus5 (>= 3.0.2), libprotobuf10, libreadline7 (>= 6.0), libstdc++6 (>= 5.2), libtk8.6 (>= 8.6.0), - libudev1 (>= 183), libusb-1.0-0 (>= 2:1.0.9), libuuid1 (>= 2.16), libx11-6, libxext6, libxft2 (>> 2.1.1), libxinerama1, libxss1, libzmq5 (>= 3.2.3+dfsg), zlib1g (>= 1:1.1.4), - python (<< 2.8), python (>= 2.7~), python:any (<< 2.8), python:any (>= 2.7.5-5~), libboost-python1.62.0, libboost-thread1.62.0, libboost-system1.62.0, - bc, cgroup-tools, libtk-img (>= 1.13), procps, psmisc, python-tk, python-numpy, python-xlib, - python-gtkglext1, python-configobj, python-zmq, python-protobuf (>= 2.4.1), python-avahi, python-simplejson, python-pyftpdlib, tclreadline, tcl8.6, tk8.6, uuid-runtime, yapps2-runtime diff --git a/debian/control.d/control.xenomai.ftr b/debian/control.d/control.xenomai.ftr deleted file mode 100644 index 00d061e61b..0000000000 --- a/debian/control.d/control.xenomai.ftr +++ /dev/null @@ -1,5 +0,0 @@ - , xenomai-runtime -Description: HAL stack split from Machinekit - . - This package provides components and drivers that run on a realtime - (XENOMAI 2) system. diff --git a/debian/control.d/control.xenomai.hdr b/debian/control.d/control.xenomai.hdr deleted file mode 100644 index e04c297cc7..0000000000 --- a/debian/control.d/control.xenomai.hdr +++ /dev/null @@ -1,6 +0,0 @@ - -Package: machinekit-hal-xenomai -Architecture: any -Provides: machinekit-hal -Conflicts: machinekit, machinekit-hal-posix, machinekit-hal-rt-preempt -Suggests: hostmot2-firmware-all [!armhf] diff --git a/debian/control.in b/debian/control.in new file mode 100644 index 0000000000..1bfb296a70 --- /dev/null +++ b/debian/control.in @@ -0,0 +1,61 @@ +Source: machinekit-hal +Section: misc +Priority: extra +Maintainer: ArcEye +Build-Depends: debhelper (>= 6), + autoconf (>= 2.63), automake, libboost-python-dev, libgl1-mesa-dev, + libglu1-mesa-dev, libmodbus-dev (>= 3.0), + libncurses-dev, libreadline-dev, libusb-1.0-0-dev, libxmu-dev, + libxmu-headers, python (>= 2.6.6-3~), python-dev (>= 2.6.6-3~), + cython (>= 0.19), dh-python, + pkg-config, psmisc, python-tk, libxaw7-dev, libboost-serialization-dev, + libzmq3-dev (>= 4.0.4), libczmq-dev (>= 4.0.2), libjansson-dev (>= 2.5), + libwebsockets-dev (>= 1.2.2), + python-zmq (>= 14.0.1), procps, + liburiparser-dev, libssl-dev, python-setuptools, + uuid-dev, uuid-runtime, libavahi-client-dev, + libprotobuf-dev (>= 2.4.1), protobuf-compiler (>= 2.4.1), + python-protobuf (>= 2.4.1), libprotoc-dev (>= 2.4.1), + python-simplejson, libboost-thread-dev, libcgroup-dev, + yapps2-runtime | python-yapps, yapps2, + python-pyftpdlib, @BUILD_DEPS@ +Standards-Version: 2.1.0 + +Package: machinekit +Breaks: linuxcnc +Replaces: linuxcnc +Architecture: any +Depends: ${shlibs:Depends}, machinekit-rt-threads, tcl8.6, tk8.6, + bwidget (>= 1.7), libtk-img (>=1.13), + ${python:Depends}, ${misc:Depends}, + python-tk, python-imaging, python-imaging-tk, + python-gnome2, python-glade2, + python-numpy, python-gtksourceview2, + python-vte, python-xlib, python-gtkglext1, python-configobj, + python-zmq, python-protobuf (>= 2.4.1), + python-avahi, python-simplejson, python-pyftpdlib, + python-pydot, xdot, + tclreadline, bc, procps, psmisc, cgroup-tools, + python-gst-1.0 | python-gst0.10, + python-imaging | python-pil, + python-imaging-tk | python-pil.imagegtk, + uuid-runtime @DEPS@ +Description: PC based motion controller for real-time Linux + Machinekit is the next-generation Enhanced Machine Controller which + provides motion control for CNC machine tools and robotic + applications (milling, cutting, routing, etc.). + +Package: machinekit-dev +Architecture: any +Depends: make, g++, tcl8.6, tk8.6, + ${shlibs:Depends}, ${misc:Depends}, + machinekit (= ${binary:Version}), + yapps2-runtime +Section: libs +Description: PC based motion controller for real-time Linux + Machinekit is the next-generation Enhanced Machine Controller which + provides motion control for CNC machine tools and robotic + applications (milling, cutting, routing, etc.). + . + This package includes files needed to build new realtime components and + alternate front-ends for machinekit diff --git a/debian/machinekit-hal-dev.install b/debian/machinekit-hal-dev.install new file mode 100644 index 0000000000..65cf441142 --- /dev/null +++ b/debian/machinekit-hal-dev.install @@ -0,0 +1,8 @@ +usr/include/linuxcnc/*.hh +usr/include/linuxcnc/*.h +usr/include/linuxcnc/userpci/*.h +usr/lib/*.a +usr/lib/*.so +usr/bin/comp +usr/share/linuxcnc/Makefile.modinc +usr/share/linuxcnc/Makefile.inc diff --git a/debian/machinekit-hal-rt-preempt.install.in b/debian/machinekit-hal-rt-preempt.install.in deleted file mode 100644 index bbbe457c2c..0000000000 --- a/debian/machinekit-hal-rt-preempt.install.in +++ /dev/null @@ -1,29 +0,0 @@ -etc/linuxcnc/* -etc/rsyslog.d/linuxcnc.conf -etc/security/limits.d/machinekit.conf -etc/udev/rules.d/50-shmdrv.rules -usr/lib/*.so.* -usr/bin/* -usr/lib/python*/*/*.py -usr/lib/python*/*/*.so -usr/lib/python*/*/*/*.py -usr/lib/python*/*/*/*.so -usr/lib/python*/*/machinetalk/protobuf/* -usr/lib/python*/*/machinetalk/*.py -usr/lib/python*/*/machinekit/nosetests/*.py -usr/lib/python*/*/gladevcp/* -usr/lib/linuxcnc/rt-preempt/* -usr/include/linuxcnc/*.h -usr/include/linuxcnc/*.hh -usr/libexec/linuxcnc/pci_read -usr/libexec/linuxcnc/pci_write -usr/libexec/linuxcnc/inivar -usr/libexec/linuxcnc/flavor -usr/libexec/linuxcnc/rtapi_msgd -usr/libexec/linuxcnc/rtapi_app_rt-preempt -etc/modprobe.d/linuxcnc.conf -usr/lib/*.so -usr/lib/linuxcnc/ulapi-rt-preempt.so -usr/lib/tcltk/linuxcnc/hal.so -usr/share/linuxcnc/Makefile.* -usr/share/linuxcnc/udev/*.rules diff --git a/debian/machinekit-hal-xenomai.install.in b/debian/machinekit-hal-xenomai.install.in deleted file mode 100644 index dde011e795..0000000000 --- a/debian/machinekit-hal-xenomai.install.in +++ /dev/null @@ -1,29 +0,0 @@ -etc/linuxcnc/* -etc/rsyslog.d/linuxcnc.conf -etc/security/limits.d/machinekit.conf -etc/udev/rules.d/50-shmdrv.rules -usr/lib/*.so.* -usr/bin/* -usr/lib/python*/*/*.py -usr/lib/python*/*/*.so -usr/lib/python*/*/*/*.py -usr/lib/python*/*/*/*.so -usr/lib/python*/*/machinetalk/protobuf/* -usr/lib/python*/*/machinetalk/*.py -usr/lib/python*/*/machinekit/nosetests/*.py -usr/lib/python*/*/gladevcp/* -usr/lib/linuxcnc/xenomai/* -usr/include/linuxcnc/*.h -usr/include/linuxcnc/*.hh -usr/libexec/linuxcnc/pci_read -usr/libexec/linuxcnc/pci_write -usr/libexec/linuxcnc/inivar -usr/libexec/linuxcnc/flavor -usr/libexec/linuxcnc/rtapi_msgd -usr/libexec/linuxcnc/rtapi_app_xenomai -etc/modprobe.d/linuxcnc.conf -usr/lib/*.so -usr/lib/linuxcnc/ulapi-xenomai.so -usr/lib/tcltk/linuxcnc/hal.so -usr/share/linuxcnc/Makefile.* -usr/share/linuxcnc/udev/*.rules diff --git a/debian/machinekit-hal-posix.install.in b/debian/machinekit-hal.install similarity index 54% rename from debian/machinekit-hal-posix.install.in rename to debian/machinekit-hal.install index 62fe9e5c8e..561908b5c1 100644 --- a/debian/machinekit-hal-posix.install.in +++ b/debian/machinekit-hal.install @@ -2,28 +2,28 @@ etc/linuxcnc/* etc/rsyslog.d/linuxcnc.conf etc/security/limits.d/machinekit.conf etc/udev/rules.d/50-shmdrv.rules +etc/X11/app-defaults/* usr/lib/*.so.* +usr/lib/linuxcnc/* +usr/lib/tcltk/linuxcnc usr/bin/* usr/lib/python*/*/*.py usr/lib/python*/*/*.so usr/lib/python*/*/*/*.py -usr/lib/python*/*/*/*.so -usr/lib/python*/*/machinetalk/protobuf/* +usr/lib/python*/*/gladevcp/*.glade +usr/lib/python*/*/machinekit/*.so +usr/lib/python*/*/machinetalk/protobuf/*.py usr/lib/python*/*/machinetalk/*.py usr/lib/python*/*/machinekit/nosetests/*.py -usr/lib/python*/*/gladevcp/* -usr/lib/linuxcnc/posix/* -usr/include/linuxcnc/*.h -usr/include/linuxcnc/*.hh +usr/lib/python*/*/fdm/*.py +usr/lib/python*/*/fdm/config/*.py usr/libexec/linuxcnc/pci_read usr/libexec/linuxcnc/pci_write usr/libexec/linuxcnc/inivar -usr/libexec/linuxcnc/flavor usr/libexec/linuxcnc/rtapi_msgd -usr/libexec/linuxcnc/rtapi_app_posix +usr/libexec/linuxcnc/rtapi_app +usr/share/machinekit +usr/share/locale/*/LC_MESSAGES/*.mo +usr/share/fdm +usr/share/applications/* etc/modprobe.d/linuxcnc.conf -usr/lib/*.so -usr/lib/linuxcnc/ulapi-posix.so -usr/lib/tcltk/linuxcnc/hal.so -usr/share/linuxcnc/Makefile.* -usr/share/linuxcnc/udev/*.rules diff --git a/debian/posix-postinst.add b/debian/posix-postinst.add deleted file mode 100644 index 7fdefcbc73..0000000000 --- a/debian/posix-postinst.add +++ /dev/null @@ -1,13 +0,0 @@ - -# ensure the links do not pre-exist, from previous installs. -# or user work-arounds, which will produce error messages -rm -f /usr/lib/linuxcnc/posix/pru_generic.bin -rm -f /usr/lib/linuxcnc/posix/pru_generic.dbg -rm -f /usr/lib/linuxcnc/posix/pru_decamux.bin -rm -f /usr/lib/linuxcnc/posix/pru_decamux.dbg - -# make symlinks to BBB pru_*.* -ln -sf /usr/lib/linuxcnc/prubin/pru_generic.bin /usr/lib/linuxcnc/posix/pru_generic.bin -ln -sf /usr/lib/linuxcnc/prubin/pru_generic.dbg /usr/lib/linuxcnc/posix/pru_generic.dbg -ln -sf /usr/lib/linuxcnc/prubin/pru_decamux.bin /usr/lib/linuxcnc/posix/pru_decamux.bin -ln -sf /usr/lib/linuxcnc/prubin/pru_decamux.dbg /usr/lib/linuxcnc/posix/pru_decamux.dbg diff --git a/debian/postinst.in b/debian/postinst similarity index 100% rename from debian/postinst.in rename to debian/postinst diff --git a/debian/rt-preempt-postinst.add b/debian/rt-preempt-postinst.add deleted file mode 100644 index 9eec2b68c2..0000000000 --- a/debian/rt-preempt-postinst.add +++ /dev/null @@ -1,13 +0,0 @@ - -# ensure the links do not pre-exist, from previous installs -# or user work-arounds, which will produce error messages -rm -f /usr/lib/linuxcnc/rt-preempt/pru_generic.bin -rm -f /usr/lib/linuxcnc/rt-preempt/pru_generic.dbg -rm -f /usr/lib/linuxcnc/rt-preempt/pru_decamux.bin -rm -f /usr/lib/linuxcnc/rt-preempt/pru_decamux.dbg - -# make symlinks to BBB pru_*.* -ln -sf /usr/lib/linuxcnc/prubin/pru_generic.bin /usr/lib/linuxcnc/rt-preempt/pru_generic.bin -ln -sf /usr/lib/linuxcnc/prubin/pru_generic.dbg /usr/lib/linuxcnc/rt-preempt/pru_generic.dbg -ln -sf /usr/lib/linuxcnc/prubin/pru_decamux.bin /usr/lib/linuxcnc/rt-preempt/pru_decamux.bin -ln -sf /usr/lib/linuxcnc/prubin/pru_decamux.dbg /usr/lib/linuxcnc/rt-preempt/pru_decamux.dbg diff --git a/debian/rules.in b/debian/rules similarity index 86% rename from debian/rules.in rename to debian/rules index 69497ace0a..5e86287fd8 100755 --- a/debian/rules.in +++ b/debian/rules @@ -37,17 +37,11 @@ SHLIBDEPS_X += libcanterp.so.0 librs274.so.0 # halmeter classicladder halscope link to $(GTK_LIBS), which includes # several libs that aren't used (but several that are needed) SHLIBDEPS_X += halmeter classicladder halscope - -# Enable/disable thread flavors; all flavors disabled by default -THREADS_POSIX = --without-posix -THREADS_RT_PREEMPT = --without-rt-preempt -THREADS_XENOMAI = --without-xenomai - -# Kernel threads need a list of configured header source directories -# for each architecture -# -# Multiples should be space-separated # +# mb2hal gs2_vfd hy_vfd link to libglib-2.0.so.0; similar to above +SHLIBDEPS_X += mb2hal gs2_vfd hy_vfd + +# Cross-compile variables DEB_HOST_ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH) # Parallel make @@ -87,9 +81,6 @@ build-stamp: debian/control ./configure --prefix=/usr \ --build=$(DEB_BUILD_MULTIARCH) \ --host=$(DEB_HOST_MULTIARCH) \ - $(THREADS_POSIX) \ - $(THREADS_RT_PREEMPT) \ - $(THREADS_XENOMAI) \ --sysconfdir=/etc cd src && $(MAKE) $(COMPILE_ENV) $(MAKEFLAGS) V=$(DH_VERBOSE) touch build-stamp @@ -107,9 +98,6 @@ ifneq ($(wildcard src/configure src/Makefile.inc),) ./configure --prefix=/usr \ --build=$(DEB_BUILD_MULTIARCH) \ --host=$(DEB_HOST_MULTIARCH) \ - $(THREADS_POSIX) \ - $(THREADS_RT_PREEMPT) \ - $(THREADS_XENOMAI) \ --sysconfdir=/etc cd src && $(MAKE) clean -s # # Manually remove things left by './configure' @@ -183,16 +171,7 @@ install: build cp src/rtapi/shmdrv/limits.d-machinekit.conf \ debian/tmp/etc/security/limits.d/machinekit.conf -# # only want this for armhf builds too ## - if [ -f debian/platform_pc ] ; then \ - rm -f debian/platform_pc; \ - else \ - mkdir -p debian/tmp/usr/lib/linuxcnc/prubin; \ - cp rtlib/prubin/* debian/tmp/usr/lib/linuxcnc/prubin; \ - cat debian/posix-postinst.add >> debian/machinekit-hal-posix.postinst; \ - cat debian/rt-preempt-postinst.add >> debian/machinekit-hal-rt-preempt.postinst; \ - cat debian/xenomai-postinst.add >> debian/machinekit-hal-xenomai.postinst; \ - fi + mkdir -p debian/tmp/usr/lib/linuxcnc/prubin dh_install --sourcedir=debian/tmp --fail-missing -Xusr/bin/pasm @@ -212,7 +191,7 @@ binary-arch: build install dh_strip dh_compress -X.pdf -X.txt -X.hal -X.ini -X.clp -X.var -X.nml \ -X.tbl -X.xml -Xsample-configs - dh_fixperms -X/linuxcnc_module_helper -X/rtapi_app_ + dh_fixperms -X/rtapi_app_ dh_python2 --ignore-shebangs --no-guessing-versions --no-ext-rename dh_makeshlibs dh_installdeb diff --git a/debian/xenomai-postinst.add b/debian/xenomai-postinst.add deleted file mode 100644 index d895fb1e2c..0000000000 --- a/debian/xenomai-postinst.add +++ /dev/null @@ -1,13 +0,0 @@ - -# ensure the links do not pre-exist, from previous installs. -# or user work-arounds, which will produce error messages -rm -f /usr/lib/linuxcnc/xenomai/pru_generic.bin -rm -f /usr/lib/linuxcnc/xenomai/pru_generic.dbg -rm -f /usr/lib/linuxcnc/xenomai/pru_decamux.bin -rm -f /usr/lib/linuxcnc/xenomai/pru_decamux.dbg - -# make symlinks to BBB pru_*.* -ln -sf /usr/lib/linuxcnc/prubin/pru_generic.bin /usr/lib/linuxcnc/xenomai/pru_generic.bin -ln -sf /usr/lib/linuxcnc/prubin/pru_generic.dbg /usr/lib/linuxcnc/xenomai/pru_generic.dbg -ln -sf /usr/lib/linuxcnc/prubin/pru_decamux.bin /usr/lib/linuxcnc/xenomai/pru_decamux.bin -ln -sf /usr/lib/linuxcnc/prubin/pru_decamux.dbg /usr/lib/linuxcnc/xenomai/pru_decamux.dbg diff --git a/diff-debian.patch b/diff-debian.patch new file mode 100644 index 0000000000..da397b48fe --- /dev/null +++ b/diff-debian.patch @@ -0,0 +1,1276 @@ +diff --git a/debian/.gitignore b/debian/.gitignore +index 57862d6..10b5bb4 100644 +--- a/debian/.gitignore ++++ b/debian/.gitignore +@@ -1,9 +1,8 @@ + # files generated from debian/configure + /control +-/rules + /files + /configure.cmdline +-/machinekit*.install ++/rules.include + + # generated by scripts/build_source_package + /changelog +diff --git a/debian/configure b/debian/configure +index 6ab061b..126b09a 100755 +--- a/debian/configure ++++ b/debian/configure +@@ -22,58 +22,18 @@ cd "$(dirname $0)" + # re-run + echo $0 $* > configure.cmdline + +-rules_enable_threads() { +- # enable thread flavors in debian/rules; e.g. +- # THREADS_POSIX = --with-posix +- # ...unnecessary for control-only +- if test -n "$MK_CROSS_BUILDER"; then +- # Reduce file req'ts in mk-cross-builder +- echo "debian/rules: skip ${FLAVOR} config in mk-cross-builder" >&2 +- return +- fi +- FLAVOR=$1 +- FLAVOR_VAR=THREADS_$(echo $FLAVOR | tr 'a-z-' 'A-Z_') +- sed -i rules \ +- -e "s/^${FLAVOR_VAR}[^_].*/${FLAVOR_VAR} = --with-${FLAVOR}/" +- echo "debian/rules: enabled ${FLAVOR} threads" >&2 +-} +- +-do_posix() { +- cat control.posix.in >> control +- echo "debian/control: added POSIX threads package" >&2 +- rules_enable_threads posix +- HAVE_FLAVOR=true +-} +- +-do_rt-preempt() { +- cat control.rt-preempt.in >> control +- echo "debian/control: added RT_PREEMPT threads package" >&2 +- +- rules_enable_threads rt-preempt +- HAVE_FLAVOR=true +-} +- +-do_xenomai() { +- cat control.xenomai.in >> control +- echo "debian/control: added xenomai threads package" >&2 +- +- # Be sure the -dev files only appear once +- BUILD_DEPS+=", libxenomai-dev" +- echo "debian/control: added Xenomai (userland) threads package" \ +- "with Build-Depends:" >&2 +- echo " libxenomai-dev" >&2 +- rules_enable_threads xenomai +- HAVE_FLAVOR=true +-} +- +-## Set version for packages by altering changelog +-## Write new version info then prepend existing one, for use in changes file +-## Allows command line builds and builds outside of Travis environment to set meaningful version numbers ++## Set version for packages by altering changelog Write new version ++## info then prepend existing one, for use in changes file Allows ++## command line builds and builds outside of Travis environment to set ++## meaningful version numbers + + do_changelog() { +- DISTRO_UC="$(echo $DISTRO_CODENAME | sed 's/^[[:space:]]*//g' | sed -e 's/\b\(.\)/\u\1/g')" ++ DISTRO_UC="$(echo $DISTRO_CODENAME | sed 's/^[[:space:]]*//g' | ++ sed -e 's/\b\(.\)/\u\1/g')" + DISTRO_LC="$(echo $DISTRO_CODENAME | sed 's/^[[:space:]]*//g')" +- MKVERSION="$(git show HEAD:VERSION | cut -d ' ' -f 1).$(git rev-list --count master)-1.git$(git rev-parse --short HEAD)~${DISTRO_LC}" ++ MKVERSION="$(git show HEAD:VERSION | cut -d ' ' -f 1).$( ++ git rev-list --count HEAD)-1.git$( ++ git rev-parse --short HEAD)~${DISTRO_LC}" + COMMITTER="$(git show -s --pretty=%an $(git rev-parse --short HEAD))" + EMAIL="$(git show -s --format='%ae' $(git rev-parse --short HEAD))" + +@@ -92,30 +52,29 @@ EOF + echo "New package version number added to changelog" + } + +-## Create source orig tarball in format required for creation of debian tarball and .dsc file +-## Allows non binary package builds from command line or outside Travis environment ++## Create source orig tarball in format required for creation of ++## debian tarball and .dsc file Allows non binary package builds from ++## command line or outside Travis environment + + do_source_tarball() { +-#version based on major version plus commit number only, without suffixed -1 or commit hash +-MK_VERSION="$(git show HEAD:VERSION | cut -d ' ' -f 1).$(git rev-list --count master)" +- +-OWD=$PWD +-cd ../ +-git archive HEAD | bzip2 -z > ../machinekit_${MK_VERSION}.orig.tar.bz2 +-echo "Source tarball created" +-cd $OWD ++ #version based on major version plus commit number only, without ++ #suffixed -1 or commit hash ++ MK_VERSION="$(git show HEAD:VERSION | cut -d ' ' -f 1).$( ++ git rev-list --count HEAD)" ++ OWD=$PWD ++ cd ../ ++ git archive HEAD | bzip2 -z > ../machinekit_${MK_VERSION}.orig.tar.bz2 ++ echo "Source tarball created" ++ cd $OWD + } + + usage() { + { + test -z "$1" || echo "$1" + echo "Usage: $0 [ arg ... ]" +- echo " arg: function:" +- echo " -p build POSIX threads" +- echo " -r build RT_PREEMPT threads" +- echo " -x build Xenomai threads" +- echo " -c rewrite changelog to set package version from git commit" +- echo " -s create source tarball for non binary package builds" ++ echo " arg: function:" ++ echo " -c rewrite changelog to set package version from git commit" ++ echo " -s create source tarball for non binary package builds" + } >&2 + exit 1 + } +@@ -132,6 +91,7 @@ test "$1" != --help || usage + + # set defaults + BUILD_DEPS= # List of Build-Depends ++DEPS= # List of Depends + HAVE_FLAVOR=false + + ## copy base templates into place +@@ -143,43 +103,44 @@ HAVE_FLAVOR=false + ## however selecting python-imaging and python-imaging-tk in Stretch actually + ## results in python-pil and python-pil.imagegtk being installed, so will probably completely backport soon. + +-## Keep individual control files, so they can easily be amended as things change +- +-if [ "$DISTRO_CODENAME" == "stretch" ]; then +- cp control.stretch.in control +-elif [ "$DISTRO_CODENAME" == "buster" ]; then +- cp control.buster.in control +-elif [ "$DISTRO_CODENAME" == "sid" ]; then +- cp control.sid.in control +-else +- cp control.in control +-fi ++case "$DISTRO_CODENAME" in ++ buster) ++ : # Nothing ++ ;; ++ stretch|jessie|sid) ++ DEPS+=", python-gtksourceview2" ++ ;; ++ *) ++ DEPS+=", python-gtksourceview2" ++ ;; ++esac ++ ++# Configure Xenomai threads ++configure_xenomai() { ++ if ! dpkg-query -W | grep -q libxenomai-dev; then ++ echo "Not configuring build for Xenomai (no libxenomai-dev package)" >&2 ++ return ++ fi + +-if test -z "$MK_CROSS_BUILDER"; then # Reduce file req'ts in mk-cross-builder +- echo "debian/control: copied base template" >&2 +- cp rules.in rules; chmod +x rules +- echo "debian/rules: copied base template" >&2 +- cp machinekit.install.in machinekit.install +- echo "debian/machinekit.install.in: copied base template" >&2 +-fi ++ echo "debian/control: Adding xenomai threads configuration" >&2 ++ BUILD_DEPS+=", libxenomai-dev" ++ DEPS+=", xenomai-runtime" ++} + + # read command line options +-while getopts prxcsd?h ARG; do ++while getopts csh ARG; do + case $ARG in +- p) do_posix ;; +- r) do_rt-preempt ;; +- x) do_xenomai ;; + c) do_changelog ;; # set new changelog with package versions from git + s) do_source_tarball ;; # create tarball for non binary builds +- ?|h) usage ;; ++ h) usage ;; + *) usage "Unknown arg: '-$ARG'" ;; + esac + done + + # Set control Build-Depends: +-sed -i control \ +- -e "s/@BUILD_DEPS@/${BUILD_DEPS}/" ++configure_xenomai ++cp control.in control ++sed >control &2 +- +-# Warn if no flavor configured +-$HAVE_FLAVOR || usage "WARNING: No thread flavors configured" +diff --git a/debian/control.buster.in b/debian/control.buster.in +deleted file mode 100644 +index e601665..0000000 +--- a/debian/control.buster.in ++++ /dev/null +@@ -1,60 +0,0 @@ +-Source: machinekit +-Section: misc +-Priority: extra +-Maintainer: John Morris +-Build-Depends: debhelper (>= 6), +- autoconf (>= 2.63), automake, libboost-python-dev, libgl1-mesa-dev, +- libglu1-mesa-dev, libgtk2.0-dev, libmodbus-dev (>= 3.0), libudev-dev, +- libncurses-dev, libreadline-dev, libusb-1.0-0-dev, libxmu-dev, +- libxmu-headers, python (>= 2.6.6), python-dev (>= 2.6.6), +- cython (>= 0.19), dh-python, +- pkg-config, psmisc, python-tk, libxaw7-dev, libboost-serialization-dev, +- libzmq3-dev (>= 4.0.4), libczmq-dev (>= 4.0.2), libjansson-dev (>= 2.5), +- libwebsockets-dev (>= 1.2.2), +- python-zmq (>= 14.0.1), procps, +- liburiparser-dev, libssl-dev, python-setuptools, +- uuid-dev, uuid-runtime, libavahi-client-dev, +- libprotobuf-dev (>= 2.4.1), protobuf-compiler (>= 2.4.1), +- python-protobuf (>= 2.4.1), libprotoc-dev (>= 2.4.1), +- python-simplejson, libtk-img, libboost-thread-dev, +- python-pyftpdlib, tcl8.6-dev, tk8.6-dev, libcgroup-dev @BUILD_DEPS@ +-Standards-Version: 2.1.0 +- +-######################################################################### +-## not built any more, components of it are in flavour packages +-## +-#Package: machinekit-dev +-#Architecture: any +-#Depends: make, g++, tcl8.6, tk8.6, +-# ${shlibs:Depends}, ${misc:Depends}, +-# machinekit (= ${binary:Version}), +-# yapps2-runtime +-#Section: libs +-#Description: PC based motion controller for real-time Linux +-# Machinekit is the next-generation Enhanced Machine Controller which +-# provides motion control for CNC machine tools and robotic +-# applications (milling, cutting, routing, etc.). +-# . +-# This package includes files needed to build new realtime components and +-# alternate front-ends for machinekit +-######################################################################### +- +-Package: machinekit +-Breaks: linuxcnc +-Replaces: linuxcnc +-Architecture: any +-Depends: ${shlibs:Depends}, machinekit-rt-threads, tcl8.6, tk8.6, +- bwidget (>= 1.7), libtk-img (>=1.13), +- ${python:Depends}, ${misc:Depends}, +- python-tk, python-imaging, python-imaging-tk, +- python-gnome2, python-glade2, +- python-numpy, +- python-vte, python-xlib, python-gtkglext1, python-configobj, +- python-zmq, python-protobuf (>= 2.4.1), +- python-avahi, python-simplejson, python-pyftpdlib, +- python-pydot, xdot, python-gst-1.0, +- tclreadline, bc, procps, psmisc, uuid-runtime +-Description: PC based motion controller for real-time Linux +- Machinekit is the next-generation Enhanced Machine Controller which +- provides motion control for CNC machine tools and robotic +- applications (milling, cutting, routing, etc.). +diff --git a/debian/control.in b/debian/control.in +index 502aa51..5722279 100644 +--- a/debian/control.in ++++ b/debian/control.in +@@ -20,25 +20,6 @@ Build-Depends: debhelper (>= 6), + python-pyftpdlib, tcl8.6-dev, tk8.6-dev, libcgroup-dev @BUILD_DEPS@ + Standards-Version: 2.1.0 + +-######################################################################### +-## not built any more, components of it are in flavour packages +-## +-#Package: machinekit-dev +-#Architecture: any +-#Depends: make, g++, tcl8.6, tk8.6, +-# ${shlibs:Depends}, ${misc:Depends}, +-# machinekit (= ${binary:Version}), +-# yapps2-runtime +-#Section: libs +-#Description: PC based motion controller for real-time Linux +-# Machinekit is the next-generation Enhanced Machine Controller which +-# provides motion control for CNC machine tools and robotic +-# applications (milling, cutting, routing, etc.). +-# . +-# This package includes files needed to build new realtime components and +-# alternate front-ends for machinekit +-######################################################################### +- + Package: machinekit + Breaks: linuxcnc + Replaces: linuxcnc +@@ -54,8 +35,26 @@ Depends: ${shlibs:Depends}, machinekit-rt-threads, tcl8.6, tk8.6, + python-avahi, python-simplejson, python-pyftpdlib, + python-pydot, xdot, + tclreadline, bc, procps, psmisc, cgroup-tools, +- python-gst0.10, uuid-runtime ++ python-gst-1.0 | python-gst0.10, ++ python-imaging | python-pil, ++ python-imaging-tk | python-pil.imagegtk, ++ uuid-runtime @DEPS@ ++Description: PC based motion controller for real-time Linux ++ Machinekit is the next-generation Enhanced Machine Controller which ++ provides motion control for CNC machine tools and robotic ++ applications (milling, cutting, routing, etc.). ++ ++Package: machinekit-dev ++Architecture: any ++Depends: make, g++, tcl8.6, tk8.6, ++ ${shlibs:Depends}, ${misc:Depends}, ++ machinekit (= ${binary:Version}), ++ yapps2-runtime ++Section: libs + Description: PC based motion controller for real-time Linux + Machinekit is the next-generation Enhanced Machine Controller which + provides motion control for CNC machine tools and robotic + applications (milling, cutting, routing, etc.). ++ . ++ This package includes files needed to build new realtime components and ++ alternate front-ends for machinekit +diff --git a/debian/control.posix.in b/debian/control.posix.in +deleted file mode 100644 +index 2966087..0000000 +--- a/debian/control.posix.in ++++ /dev/null +@@ -1,14 +0,0 @@ +- +-Package: machinekit-posix +-Architecture: any +-Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime +-Provides: machinekit-rt-threads +-Breaks: machinekit-dev +-Enhances: machinekit +-Description: PC based motion controller for real-time Linux +- Machinekit is the next-generation Enhanced Machine Controller which +- provides motion control for CNC machine tools and robotic +- applications (milling, cutting, routing, etc.). +- . +- This package provides components and drivers that run on a non-realtime +- (Posix) system. +diff --git a/debian/control.rt-preempt.in b/debian/control.rt-preempt.in +deleted file mode 100644 +index e77df33..0000000 +--- a/debian/control.rt-preempt.in ++++ /dev/null +@@ -1,18 +0,0 @@ +- +-Package: machinekit-rt-preempt +-Architecture: any +-Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime, +-# These Debian-style RT_PREEMPT package names are restricted by +-# architecture; ARM arch SOCs are all incompatible, so this can't be +-# easily done for ARM. +- linux-image-rt-686-pae [i386], linux-image-rt-amd64 [amd64] +-Provides: machinekit-rt-threads +-Suggests: hostmot2-firmware-all [!armhf] +-Breaks: machinekit-dev +-Enhances: machinekit +-Description: PC based motion controller for real-time Linux +- Machinekit is the next-generation Enhanced Machine Controller which +- provides motion control for CNC machine tools and robotic +- applications (milling, cutting, routing, etc.). +- . +- This package provides components and drivers that run on an RT-Preempt system. +diff --git a/debian/control.sid.in b/debian/control.sid.in +deleted file mode 100644 +index a066976..0000000 +--- a/debian/control.sid.in ++++ /dev/null +@@ -1,60 +0,0 @@ +-Source: machinekit +-Section: misc +-Priority: extra +-Maintainer: John Morris +-Build-Depends: debhelper (>= 6), +- autoconf (>= 2.63), automake, libboost-python-dev, libgl1-mesa-dev, +- libglu1-mesa-dev, libgtk2.0-dev, libmodbus-dev (>= 3.0), libudev-dev, +- libncurses-dev, libreadline-dev, libusb-1.0-0-dev, libxmu-dev, +- libxmu-headers, python (>= 2.6.6), python-dev (>= 2.6.6), +- cython (>= 0.19), dh-python, +- pkg-config, psmisc, python-tk, libxaw7-dev, libboost-serialization-dev, +- libzmq3-dev (>= 4.0.4), libczmq-dev (>= 4.0.2), libjansson-dev (>= 2.5), +- libwebsockets-dev (>= 1.2.2), +- python-zmq (>= 14.0.1), procps, +- liburiparser-dev, libssl-dev, python-setuptools, +- uuid-dev, uuid-runtime, libavahi-client-dev, +- libprotobuf-dev (>= 2.4.1), protobuf-compiler (>= 2.4.1), +- python-protobuf (>= 2.4.1), libprotoc-dev (>= 2.4.1), +- python-simplejson, libtk-img, libboost-thread-dev, +- python-pyftpdlib, tcl8.6-dev, tk8.6-dev @BUILD_DEPS@ +-Standards-Version: 2.1.0 +- +-######################################################################### +-## not built any more, components of it are in flavour packages +-## +-#Package: machinekit-dev +-#Architecture: any +-#Depends: make, g++, tcl8.6, tk8.6, +-# ${shlibs:Depends}, ${misc:Depends}, +-# machinekit (= ${binary:Version}), +-# yapps2-runtime +-#Section: libs +-#Description: PC based motion controller for real-time Linux +-# Machinekit is the next-generation Enhanced Machine Controller which +-# provides motion control for CNC machine tools and robotic +-# applications (milling, cutting, routing, etc.). +-# . +-# This package includes files needed to build new realtime components and +-# alternate front-ends for machinekit +-######################################################################### +- +-Package: machinekit +-Breaks: linuxcnc +-Replaces: linuxcnc +-Architecture: any +-Depends: ${shlibs:Depends}, machinekit-rt-threads, tcl8.6, tk8.6, +- bwidget (>= 1.7), libtk-img (>=1.13), +- ${python:Depends}, ${misc:Depends}, +- python-tk, python-pil, python-pil.imagetk, +- python-gnome2, python-glade2, +- python-numpy, +- python-vte, python-xlib, python-gtkglext1, python-configobj, +- python-zmq, python-protobuf (>= 2.4.1), +- python-avahi, python-simplejson, python-pyftpdlib, +- python-pydot, xdot, python-gst-1.0, python-gtksourceview2, +- tclreadline, bc, procps, psmisc, uuid-runtime +-Description: PC based motion controller for real-time Linux +- Machinekit is the next-generation Enhanced Machine Controller which +- provides motion control for CNC machine tools and robotic +- applications (milling, cutting, routing, etc.). +diff --git a/debian/control.stretch.in b/debian/control.stretch.in +deleted file mode 100644 +index 021a954..0000000 +--- a/debian/control.stretch.in ++++ /dev/null +@@ -1,60 +0,0 @@ +-Source: machinekit +-Section: misc +-Priority: extra +-Maintainer: John Morris +-Build-Depends: debhelper (>= 6), +- autoconf (>= 2.63), automake, libboost-python-dev, libgl1-mesa-dev, +- libglu1-mesa-dev, libgtk2.0-dev, libmodbus-dev (>= 3.0), libudev-dev, +- libncurses-dev, libreadline-dev, libusb-1.0-0-dev, libxmu-dev, +- libxmu-headers, python (>= 2.6.6), python-dev (>= 2.6.6), +- cython (>= 0.19), dh-python, +- pkg-config, psmisc, python-tk, libxaw7-dev, libboost-serialization-dev, +- libzmq3-dev (>= 4.0.4), libczmq-dev (>= 4.0.2), libjansson-dev (>= 2.5), +- libwebsockets-dev (>= 1.2.2), +- python-zmq (>= 14.0.1), procps, +- liburiparser-dev, libssl-dev, python-setuptools, +- uuid-dev, uuid-runtime, libavahi-client-dev, +- libprotobuf-dev (>= 2.4.1), protobuf-compiler (>= 2.4.1), +- python-protobuf (>= 2.4.1), libprotoc-dev (>= 2.4.1), +- python-simplejson, libtk-img, libboost-thread-dev, +- python-pyftpdlib, tcl8.6-dev, tk8.6-dev, libcgroup-dev @BUILD_DEPS@ +-Standards-Version: 2.1.0 +- +-######################################################################### +-## not built any more, components of it are in flavour packages +-## +-#Package: machinekit-dev +-#Architecture: any +-#Depends: make, g++, tcl8.6, tk8.6, +-# ${shlibs:Depends}, ${misc:Depends}, +-# machinekit (= ${binary:Version}), +-# yapps2-runtime +-#Section: libs +-#Description: PC based motion controller for real-time Linux +-# Machinekit is the next-generation Enhanced Machine Controller which +-# provides motion control for CNC machine tools and robotic +-# applications (milling, cutting, routing, etc.). +-# . +-# This package includes files needed to build new realtime components and +-# alternate front-ends for machinekit +-######################################################################### +- +-Package: machinekit +-Breaks: linuxcnc +-Replaces: linuxcnc +-Architecture: any +-Depends: ${shlibs:Depends}, machinekit-rt-threads, tcl8.6, tk8.6, +- bwidget (>= 1.7), libtk-img (>=1.13), +- ${python:Depends}, ${misc:Depends}, +- python-tk, python-imaging, python-imaging-tk, +- python-gnome2, python-glade2, +- python-numpy, python-gtksourceview2, +- python-vte, python-xlib, python-gtkglext1, python-configobj, +- python-zmq, python-protobuf (>= 2.4.1), +- python-avahi, python-simplejson, python-pyftpdlib, +- python-pydot, xdot, python-gst-1.0, python-gtksourceview2, +- tclreadline, bc, procps, psmisc, uuid-runtime +-Description: PC based motion controller for real-time Linux +- Machinekit is the next-generation Enhanced Machine Controller which +- provides motion control for CNC machine tools and robotic +- applications (milling, cutting, routing, etc.). +diff --git a/debian/control.xenomai.in b/debian/control.xenomai.in +deleted file mode 100644 +index 908d4cf..0000000 +--- a/debian/control.xenomai.in ++++ /dev/null +@@ -1,16 +0,0 @@ +- +-Package: machinekit-xenomai +-Architecture: any +-Depends: machinekit (= ${binary:Version}), ${shlibs:Depends}, yapps2-runtime, +- xenomai-runtime +-Provides: machinekit-rt-threads +-Recommends: hostmot2-firmware-all [!armhf] +-Breaks: machinekit-dev +-Enhances: machinekit +-Description: PC based motion controller for real-time Linux +- Machinekit is the next-generation Enhanced Machine Controller which +- provides motion control for CNC machine tools and robotic +- applications (milling, cutting, routing, etc.). +- . +- This package provides components and drivers that run on a Xenomai +- realtime system, with userspace threads. +diff --git a/debian/machinekit-dev.install b/debian/machinekit-dev.install +new file mode 100644 +index 0000000..65cf441 +--- /dev/null ++++ b/debian/machinekit-dev.install +@@ -0,0 +1,8 @@ ++usr/include/linuxcnc/*.hh ++usr/include/linuxcnc/*.h ++usr/include/linuxcnc/userpci/*.h ++usr/lib/*.a ++usr/lib/*.so ++usr/bin/comp ++usr/share/linuxcnc/Makefile.modinc ++usr/share/linuxcnc/Makefile.inc +diff --git a/debian/machinekit-posix.install.in b/debian/machinekit-posix.install.in +deleted file mode 100644 +index ec94d9a..0000000 +--- a/debian/machinekit-posix.install.in ++++ /dev/null +@@ -1,11 +0,0 @@ +-usr/lib/linuxcnc/posix/*.so +-usr/lib/linuxcnc/ulapi-posix.so +-usr/libexec/linuxcnc/rtapi_app_posix +-usr/include/linuxcnc/*.hh +-usr/include/linuxcnc/*.h +-usr/lib/*.a +-usr/lib/*.so +-usr/bin/comp +-usr/share/linuxcnc/Makefile.modinc +-usr/share/linuxcnc/Makefile.inc +- +diff --git a/debian/machinekit-rt-preempt.install.in b/debian/machinekit-rt-preempt.install.in +deleted file mode 100644 +index 2333760..0000000 +--- a/debian/machinekit-rt-preempt.install.in ++++ /dev/null +@@ -1,10 +0,0 @@ +-usr/lib/linuxcnc/rt-preempt/*.so +-usr/lib/linuxcnc/ulapi-rt-preempt.so +-usr/libexec/linuxcnc/rtapi_app_rt-preempt +-usr/include/linuxcnc/*.hh +-usr/include/linuxcnc/*.h +-usr/lib/*.a +-usr/lib/*.so +-usr/bin/comp +-usr/share/linuxcnc/Makefile.modinc +-usr/share/linuxcnc/Makefile.inc +diff --git a/debian/machinekit-xenomai.install.in b/debian/machinekit-xenomai.install.in +deleted file mode 100644 +index fd029e8..0000000 +--- a/debian/machinekit-xenomai.install.in ++++ /dev/null +@@ -1,10 +0,0 @@ +-usr/lib/linuxcnc/xenomai/* +-usr/lib/linuxcnc/ulapi-xenomai.so +-usr/libexec/linuxcnc/rtapi_app_xenomai +-usr/include/linuxcnc/*.hh +-usr/include/linuxcnc/*.h +-usr/lib/*.a +-usr/lib/*.so +-usr/bin/comp +-usr/share/linuxcnc/Makefile.modinc +-usr/share/linuxcnc/Makefile.inc +diff --git a/debian/machinekit.install b/debian/machinekit.install +new file mode 100644 +index 0000000..d905911 +--- /dev/null ++++ b/debian/machinekit.install +@@ -0,0 +1,43 @@ ++etc/linuxcnc/* ++etc/rsyslog.d/linuxcnc.conf ++etc/security/limits.d/machinekit.conf ++etc/udev/rules.d/50-shmdrv.rules ++etc/X11/app-defaults/* ++usr/lib/*.so.* ++usr/lib/linuxcnc/* ++usr/lib/tcltk/linuxcnc ++usr/bin/* ++usr/lib/python*/*/*.py ++usr/lib/python*/*/*.so ++usr/lib/python*/*/*/*.py ++usr/lib/python*/*/gladevcp/*.glade ++usr/lib/python*/*/machinekit/*.so ++usr/lib/python*/*/machinetalk/protobuf/*.py ++usr/lib/python*/*/machinetalk/*.py ++usr/lib/python*/*/machinekit/nosetests/*.py ++usr/lib/python*/*/fdm/*.py ++usr/lib/python*/*/fdm/config/*.py ++usr/libexec/linuxcnc/pci_read ++usr/libexec/linuxcnc/pci_write ++usr/libexec/linuxcnc/inivar ++usr/libexec/linuxcnc/rtapi_msgd ++usr/libexec/linuxcnc/rtapi_app ++usr/share/axis/images/* ++usr/share/axis/tcl/* ++usr/share/glade3 ++usr/share/doc/linuxcnc/axis_light_background ++usr/share/doc/linuxcnc/xlinuxcnc.asciidoc ++usr/share/doc/linuxcnc/tklinuxcnc.asciidoc ++usr/share/doc/linuxcnc/README.axis ++usr/share/linuxcnc/* ++usr/share/machinekit ++usr/share/linuxcnc/stepconf/*.glade ++usr/share/locale/*/LC_MESSAGES/*.mo ++usr/share/gtksourceview-2.0/ ++usr/share/gscreen ++usr/share/gmoccapy ++usr/share/fdm ++usr/share/applications/* ++usr/share/desktop-directories/cnc.directory ++etc/modprobe.d/linuxcnc.conf ++etc/xdg/menus/applications-merged/cnc.menu +diff --git a/debian/machinekit.install.in b/debian/machinekit.install.in +deleted file mode 100644 +index 149f7a6..0000000 +--- a/debian/machinekit.install.in ++++ /dev/null +@@ -1,41 +0,0 @@ +-etc/linuxcnc/* +-etc/rsyslog.d/linuxcnc.conf +-etc/security/limits.d/machinekit.conf +-etc/udev/rules.d/50-shmdrv.rules +-etc/X11/app-defaults/* +-usr/lib/*.so.* +-usr/lib/tcltk/linuxcnc +-usr/bin/* +-usr/lib/python*/*/*.py +-usr/lib/python*/*/*.so +-usr/lib/python*/*/*/*.py +-usr/lib/python*/*/gladevcp/*.glade +-usr/lib/python*/*/machinekit/*.so +-usr/lib/python*/*/machinetalk/protobuf/*.py +-usr/lib/python*/*/machinetalk/*.py +-usr/lib/python*/*/machinekit/nosetests/*.py +-usr/lib/python*/*/fdm/*.py +-usr/lib/python*/*/fdm/config/*.py +-usr/libexec/linuxcnc/pci_read +-usr/libexec/linuxcnc/pci_write +-usr/libexec/linuxcnc/inivar +-usr/libexec/linuxcnc/flavor +-usr/libexec/linuxcnc/rtapi_msgd +-usr/share/axis/images/* +-usr/share/axis/tcl/* +-usr/share/glade3 +-usr/share/doc/linuxcnc/axis_light_background +-usr/share/doc/linuxcnc/xlinuxcnc.asciidoc +-usr/share/doc/linuxcnc/tklinuxcnc.asciidoc +-usr/share/doc/linuxcnc/README.axis +-usr/share/linuxcnc/* +-usr/share/linuxcnc/stepconf/*.glade +-usr/share/locale/*/LC_MESSAGES/*.mo +-usr/share/gtksourceview-2.0/ +-usr/share/gscreen +-usr/share/gmoccapy +-usr/share/fdm +-usr/share/applications/* +-usr/share/desktop-directories/cnc.directory +-etc/modprobe.d/linuxcnc.conf +-etc/xdg/menus/applications-merged/cnc.menu +diff --git a/debian/machinekit.postinst b/debian/machinekit.postinst +index 449fafe..b301f32 100755 +--- a/debian/machinekit.postinst ++++ b/debian/machinekit.postinst +@@ -21,40 +21,6 @@ chmod ugo+r /var/log/linuxcnc.log + # restart the rsyslogd to start logging to /var/log/linuxcnc.conf + invoke-rc.d rsyslog restart + +-# The rebranding from linuxcnc to machinekit is taken care of in src/configure for RIPs +-# /usr builds to package need it in postinst script +-# This bit should not be needed, just belt and braces :) +-# Checking for / creating ~/machinekit dir now in linuxcnc script +- +-if [ -f "/usr/bin/linuxcnc" ]; then +- if [ ! -f "/usr/bin/machinekit" ]; then +- if [ ! -L "/usr/bin/machinekit" ]; then +- ln -s /usr/bin/linuxcnc /usr/bin/machinekit +- echo "Creating machinekit symlink" +- fi +- fi +-else +- if [ -f "/usr/local/bin/linuxcnc" ]; then +- if [ ! -f "/usr/local/bin/machinekit" ]; then +- if [ ! -L "/usr/local/bin/machinekit" ]; then +- ln -s /usr/local/bin/linuxcnc /usr/local/bin/machinekit +- echo "Creating machinekit symlink" +- fi +- fi +- fi +-fi +- +-# Until rebranded completely solve corner cases like this +- +-if [ -f "/usr/share/linuxcnc" ]; then +- if [ ! -f "/usr/share/machinekit" ]; then +- if [ ! -L "/usr/share/machinekit" ]; then +- ln -s /usr/share/linuxcnc /usr/share/machinekit +- echo "Creating machinekit symlink" +- fi +- fi +-fi +- + ############################################################################### + + INIFILE=/etc/linuxcnc/machinekit.ini +diff --git a/debian/posix-postinst.add b/debian/posix-postinst.add +deleted file mode 100644 +index 7fdefcb..0000000 +--- a/debian/posix-postinst.add ++++ /dev/null +@@ -1,13 +0,0 @@ +- +-# ensure the links do not pre-exist, from previous installs. +-# or user work-arounds, which will produce error messages +-rm -f /usr/lib/linuxcnc/posix/pru_generic.bin +-rm -f /usr/lib/linuxcnc/posix/pru_generic.dbg +-rm -f /usr/lib/linuxcnc/posix/pru_decamux.bin +-rm -f /usr/lib/linuxcnc/posix/pru_decamux.dbg +- +-# make symlinks to BBB pru_*.* +-ln -sf /usr/lib/linuxcnc/prubin/pru_generic.bin /usr/lib/linuxcnc/posix/pru_generic.bin +-ln -sf /usr/lib/linuxcnc/prubin/pru_generic.dbg /usr/lib/linuxcnc/posix/pru_generic.dbg +-ln -sf /usr/lib/linuxcnc/prubin/pru_decamux.bin /usr/lib/linuxcnc/posix/pru_decamux.bin +-ln -sf /usr/lib/linuxcnc/prubin/pru_decamux.dbg /usr/lib/linuxcnc/posix/pru_decamux.dbg +diff --git a/debian/rt-preempt-postinst.add b/debian/rt-preempt-postinst.add +deleted file mode 100644 +index 9eec2b6..0000000 +--- a/debian/rt-preempt-postinst.add ++++ /dev/null +@@ -1,13 +0,0 @@ +- +-# ensure the links do not pre-exist, from previous installs +-# or user work-arounds, which will produce error messages +-rm -f /usr/lib/linuxcnc/rt-preempt/pru_generic.bin +-rm -f /usr/lib/linuxcnc/rt-preempt/pru_generic.dbg +-rm -f /usr/lib/linuxcnc/rt-preempt/pru_decamux.bin +-rm -f /usr/lib/linuxcnc/rt-preempt/pru_decamux.dbg +- +-# make symlinks to BBB pru_*.* +-ln -sf /usr/lib/linuxcnc/prubin/pru_generic.bin /usr/lib/linuxcnc/rt-preempt/pru_generic.bin +-ln -sf /usr/lib/linuxcnc/prubin/pru_generic.dbg /usr/lib/linuxcnc/rt-preempt/pru_generic.dbg +-ln -sf /usr/lib/linuxcnc/prubin/pru_decamux.bin /usr/lib/linuxcnc/rt-preempt/pru_decamux.bin +-ln -sf /usr/lib/linuxcnc/prubin/pru_decamux.dbg /usr/lib/linuxcnc/rt-preempt/pru_decamux.dbg +diff --git a/debian/rules b/debian/rules +new file mode 100755 +index 0000000..dd66c59 +--- /dev/null ++++ b/debian/rules +@@ -0,0 +1,216 @@ ++#!/usr/bin/make -f ++# Simple set of debian/rules that uses debhelper. ++# Based on an example by Joey Hess. ++# extended by Paul Corner, Alex Joni, Chris Radek, Jeff Epler, John ++# Morris (in cronological order) ++ ++# Copyright (C) 2006 Jeff Epler ++# ++# This program 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 2 of the License, or ++# (at your option) any later version. ++# ++# When used to produce a debian package, this file is a script "used to ++# control compilation and installation of the executable" ++ ++# For cross-compiling ++include /usr/share/dpkg/architecture.mk ++ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) ++DEB_BUILD_OPTIONS += nocheck ++endif ++# Uncomment this to turn on verbose mode. ++#export DH_VERBOSE=1 ++ ++# dpkg-shlibdeps warning exclusions ++SHLIBDEPS_X := # add patterns here ++# ++# The name 'libtk8.6.so' can't be parsed by dpkg-shlibdeps, it seems: ++# "can't extract name and version from library name 'libtk8.6.so' ++SHLIBDEPS_X += linuxcnc.so _togl.so ++# ++# libcanterp.so.0 and librs274.so.0: hack for now: see ++# https://github.com/machinekit/machinekit/issues/324 ++# "symbol ... used by ... found in none of the libraries" ++SHLIBDEPS_X += libcanterp.so.0 librs274.so.0 ++# ++# halmeter classicladder halscope link to $(GTK_LIBS), which includes ++# several libs that aren't used (but several that are needed) ++SHLIBDEPS_X += halmeter classicladder halscope ++# ++# mb2hal gs2_vfd hy_vfd link to libglib-2.0.so.0; similar to above ++SHLIBDEPS_X += mb2hal gs2_vfd hy_vfd ++ ++# Cross-compile variables ++DEB_HOST_ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH) ++ ++# Parallel make ++ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) ++ NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) ++ MAKEFLAGS += -j$(NUMJOBS) ++endif ++# Only set 'CC' if explicitly defined in environment; otherwise 'make' ++# chooses CC=cc and CXX=g++ for defaults ++ifneq ($(origin CC),default) ++ COMPILE_ENV += CC="$(CC)" ++endif ++ifneq ($(origin CXX),default) ++ COMPILE_ENV += CXX="$(CXX)" ++endif ++ ++ ++debian/control: debian/configure ++# # if debian/configure has not been run, error out ++ if ! test -f debian/configure.cmdline; then \ ++ @echo "Please run debian/configure" \ ++ "to generate the debian/control file."; \ ++ false; \ ++ fi ++ @echo rebuilding debian/control ++ ++ ++build: build-arch build-indep ++build-arch: build-stamp ++build-indep: build-stamp ++build-stamp: debian/control ++ dh_testdir ++ ++# Add here commands to compile the package. ++ cd src && ./autogen.sh ++ cd src && env $(COMPILE_ENV) \ ++ ./configure --prefix=/usr \ ++ --build=$(DEB_BUILD_MULTIARCH) \ ++ --host=$(DEB_HOST_MULTIARCH) \ ++ --sysconfdir=/etc \ ++ --mandir=/usr/share/man \ ++ --enable-emcweb ++ cd src && $(MAKE) $(COMPILE_ENV) $(MAKEFLAGS) V=$(DH_VERBOSE) ++ touch build-stamp ++ ++clean: debian/control ++ dh_testdir ++ dh_testroot ++ rm -f build-stamp ++ ++# # Only run configure if the tree looks dirty. Running ++# # ./configure in qemu is expensive. ++ifneq ($(wildcard src/configure src/Makefile.inc),) ++ cd src && ./autogen.sh ++ cd src && env $(COMPILE_ENV) \ ++ ./configure --prefix=/usr \ ++ --build=$(DEB_BUILD_MULTIARCH) \ ++ --host=$(DEB_HOST_MULTIARCH) \ ++ --sysconfdir=/etc \ ++ --mandir=/usr/share/man \ ++ --enable-emcweb ++ cd src && $(MAKE) clean -s ++# # Manually remove things left by './configure' ++ rm -f \ ++ lib/python/machinekit/config.py \ ++ lib/python/nf.py \ ++ scripts/check-build-vs-configure-sha \ ++ scripts/gen-rtapi.ini.sh \ ++ scripts/gen-rtapi.ini.sh.in \ ++ scripts/halrun \ ++ scripts/haltcl \ ++ scripts/linuxcnc \ ++ scripts/linuxcnc_var \ ++ scripts/linuxcncmkdesktop \ ++ scripts/machinekit.ini.tmpl \ ++ scripts/realtime \ ++ scripts/rip-environment \ ++ share/applications/linuxcnc-latency.desktop \ ++ share/applications/linuxcnc.desktop \ ++ share/desktop-directories/cnc.directory \ ++ share/menus/CNC.menu \ ++ src/aclocal.m4 \ ++ src/config.h \ ++ src/config.h.in \ ++ src/config.log \ ++ src/config.status \ ++ src/configure \ ++ src/machinekitcfg.py-tmp \ ++ src/Makefile.inc \ ++ src/Makefile.modinc \ ++ tcl/linuxcnc.tcl ++ rm -rf src/autom4te.cache etc ++ ++endif ++ ++# # Remove package artifacts ++ dh_clean ++ ++install: build ++ dh_testdir ++ dh_testroot ++ dh_prep ++ dh_installdirs ++# start the install ++ mkdir -p debian/tmp ++ (cd debian/extras && cp -a * ../tmp) ++ (cd src; export DESTDIR=`pwd`/../debian/tmp; $(MAKE) V=$(DH_VERBOSE) $@) ++ mkdir -p debian/tmp/usr/lib/linuxcnc/modules debian/tmp/usr/include/linuxcnc ++ cp lib/*.a debian/tmp/usr/lib ++ ## if they weren't there we don't care if rm fails ++ rm -f debian/tmp/usr/share/applications/linuxcnc-usermanual*.desktop ++ rm -f debian/tmp/usr/share/applications/linuxcnc-halmanual*.desktop ++ rm -f debian/tmp/usr/share/applications/linuxcnc-integratormanual*.desktop ++ rm -f debian/tmp/usr/share/applications/linuxcnc-gettingstarted*.desktop ++ rm -f debian/tmp/usr/share/applications/linuxcnc-developer*.desktop ++ ++ rm -rf debian/tmp/usr/share/doc/linuxcnc/html ++ rm -f debian/tmp/usr/share/linuxcnc/examples/sample-configs/*/*position*.txt ++ # update emcweb.hal ++ sed 's/#NC_FILES_DIR/NC_FILES_DIR/' -i debian/tmp/usr/share/linuxcnc/examples/sample-configs/sim/emcweb.ini ++ ++ifneq (,$(wildcard debian/machinekit-*-kernel-*.install)) ++ mkdir -p debian/tmp/etc/udev/rules.d ++ cp src/rtapi/shmdrv/shmdrv.rules \ ++ debian/tmp/etc/udev/rules.d/50-shmdrv.rules ++endif ++ mkdir -p debian/tmp/etc/security/limits.d ++ cp src/rtapi/shmdrv/limits.d-machinekit.conf \ ++ debian/tmp/etc/security/limits.d/machinekit.conf ++ ++ mkdir -p debian/tmp/usr/lib/linuxcnc/prubin ++ ++ dh_install --sourcedir=debian/tmp --fail-missing -Xusr/bin/pasm ++ ++# Build architecture-independent files here. ++binary-indep: build install ++# We have nothing to do by default. ++ ++# Build architecture-dependent files here. ++binary-arch: build install ++ dh_testdir ++ dh_testroot ++ dh_installchangelogs ++ dh_installexamples ++ dh_installman ++ dh_installmime ++ dh_link ++ dh_strip ++ dh_compress -X.pdf -X.txt -X.hal -X.ini -X.clp -X.var -X.nml \ ++ -X.tbl -X.xml -Xsample-configs ++ dh_fixperms -X/rtapi_app_ ++ dh_python2 --ignore-shebangs --no-guessing-versions --no-ext-rename ++ dh_makeshlibs ++ dh_installdeb ++ ++# # delete files that should be in machinekit- package ++ rm -f debian/machinekit/usr/bin/comp ++ rm -f debian/machinekit/usr/share/linuxcnc/Makefile.modinc ++ rm -f debian/machinekit/usr/share/linuxcnc/Makefile.inc ++ ++ cat debian/machinekit/DEBIAN/shlibs debian/shlibs.pre > \ ++ debian/shlibs.local ++ #enable buster builds to work with problematic shlib deps in current packages ++ dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info \ ++ $(foreach p, $(SHLIBDEPS_X), -X $(p)) ++ dh_gencontrol ++ ++ dh_md5sums ++ dh_builddeb ++ ++binary: binary-indep binary-arch ++.PHONY: build clean binary-indep binary-arch binary install +diff --git a/debian/rules.in b/debian/rules.in +deleted file mode 100755 +index 4103462..0000000 +--- a/debian/rules.in ++++ /dev/null +@@ -1,251 +0,0 @@ +-#!/usr/bin/make -f +-# Simple set of debian/rules that uses debhelper. +-# Based on an example by Joey Hess. +-# extended by Paul Corner, Alex Joni, Chris Radek, Jeff Epler, John +-# Morris (in cronological order) +- +-# Copyright (C) 2006 Jeff Epler +-# +-# This program 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 2 of the License, or +-# (at your option) any later version. +-# +-# When used to produce a debian package, this file is a script "used to +-# control compilation and installation of the executable" +- +-# For cross-compiling +-include /usr/share/dpkg/architecture.mk +-ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) +-DEB_BUILD_OPTIONS += nocheck +-endif +-# Uncomment this to turn on verbose mode. +-#export DH_VERBOSE=1 +- +-# dpkg-shlibdeps warning exclusions +-SHLIBDEPS_X := # add patterns here +-# +-# The name 'libtk8.6.so' can't be parsed by dpkg-shlibdeps, it seems: +-# "can't extract name and version from library name 'libtk8.6.so' +-SHLIBDEPS_X += linuxcnc.so _togl.so +-# +-# libcanterp.so.0 and librs274.so.0: hack for now: see +-# https://github.com/machinekit/machinekit/issues/324 +-# "symbol ... used by ... found in none of the libraries" +-SHLIBDEPS_X += libcanterp.so.0 librs274.so.0 +-# +-# halmeter classicladder halscope link to $(GTK_LIBS), which includes +-# several libs that aren't used (but several that are needed) +-SHLIBDEPS_X += halmeter classicladder halscope +- +-# Enable/disable thread flavors; all flavors disabled by default +-THREADS_POSIX = --without-posix +-THREADS_RT_PREEMPT = --without-rt-preempt +-THREADS_XENOMAI = --without-xenomai +- +-# Kernel threads need a list of configured header source directories +-# for each architecture +-# +-# Multiples should be space-separated +-# +-DEB_HOST_ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH) +- +-# Parallel make +-ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) +- NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) +- MAKEFLAGS += -j$(NUMJOBS) +-endif +-# Only set 'CC' if explicitly defined in environment; otherwise 'make' +-# chooses CC=cc and CXX=g++ for defaults +-ifneq ($(origin CC),default) +- COMPILE_ENV += CC="$(CC)" +-endif +-ifneq ($(origin CXX),default) +- COMPILE_ENV += CXX="$(CXX)" +-endif +- +- +-debian/control: debian/configure +-# # if debian/configure has not been run, error out +- if ! test -f debian/configure.cmdline; then \ +- @echo "Please run debian/configure" \ +- "to generate the debian/control file."; \ +- false; \ +- fi +- @echo rebuilding debian/control +- +- +-build: build-arch build-indep +-build-arch: build-stamp +-build-indep: build-stamp +-build-stamp: debian/control +- dh_testdir +- +-# Add here commands to compile the package. +- cd src && ./autogen.sh +- cd src && env $(COMPILE_ENV) \ +- ./configure --prefix=/usr \ +- --build=$(DEB_BUILD_MULTIARCH) \ +- --host=$(DEB_HOST_MULTIARCH) \ +- $(THREADS_POSIX) \ +- $(THREADS_RT_PREEMPT) \ +- $(THREADS_XENOMAI) \ +- --sysconfdir=/etc \ +- --mandir=/usr/share/man \ +- --enable-emcweb +- cd src && $(MAKE) $(COMPILE_ENV) $(MAKEFLAGS) V=$(DH_VERBOSE) +- touch build-stamp +- +-clean: debian/control +- dh_testdir +- dh_testroot +- rm -f build-stamp +- +-# # Only run configure if the tree looks dirty. Running +-# # ./configure in qemu is expensive. +-ifneq ($(wildcard src/configure src/Makefile.inc),) +- cd src && ./autogen.sh +- cd src && env $(COMPILE_ENV) \ +- ./configure --prefix=/usr \ +- --build=$(DEB_BUILD_MULTIARCH) \ +- --host=$(DEB_HOST_MULTIARCH) \ +- $(THREADS_POSIX) \ +- $(THREADS_RT_PREEMPT) \ +- $(THREADS_XENOMAI) \ +- --sysconfdir=/etc \ +- --mandir=/usr/share/man \ +- --enable-emcweb +- cd src && $(MAKE) clean -s +-# # Manually remove things left by './configure' +- rm -f \ +- lib/python/machinekit/config.py \ +- lib/python/nf.py \ +- scripts/check-build-vs-configure-sha \ +- scripts/gen-rtapi.ini.sh \ +- scripts/gen-rtapi.ini.sh.in \ +- scripts/halrun \ +- scripts/haltcl \ +- scripts/linuxcnc \ +- scripts/linuxcnc_var \ +- scripts/linuxcncmkdesktop \ +- scripts/machinekit.ini.tmpl \ +- scripts/realtime \ +- scripts/rip-environment \ +- share/applications/linuxcnc-latency.desktop \ +- share/applications/linuxcnc.desktop \ +- share/desktop-directories/cnc.directory \ +- share/menus/CNC.menu \ +- src/aclocal.m4 \ +- src/config.h \ +- src/config.h.in \ +- src/config.log \ +- src/config.status \ +- src/configure \ +- src/machinekitcfg.py-tmp \ +- src/Makefile.inc \ +- src/Makefile.modinc \ +- tcl/linuxcnc.tcl +- rm -rf src/autom4te.cache etc +- +-endif +- +-# # Remove package artifacts +- dh_clean +- +-install: build +- dh_testdir +- dh_testroot +- dh_prep +- dh_installdirs +-# start the install +- mkdir -p debian/tmp +- (cd debian/extras && cp -a * ../tmp) +- (cd src; export DESTDIR=`pwd`/../debian/tmp; $(MAKE) V=$(DH_VERBOSE) $@) +- mkdir -p debian/tmp/usr/lib debian/tmp/usr/include/linuxcnc +- cp lib/*.a debian/tmp/usr/lib +- ## if they weren't there we don't care if rm fails +- rm -f debian/tmp/usr/share/applications/linuxcnc-usermanual*.desktop +- rm -f debian/tmp/usr/share/applications/linuxcnc-halmanual*.desktop +- rm -f debian/tmp/usr/share/applications/linuxcnc-integratormanual*.desktop +- rm -f debian/tmp/usr/share/applications/linuxcnc-gettingstarted*.desktop +- rm -f debian/tmp/usr/share/applications/linuxcnc-developer*.desktop +- +- rm -rf debian/tmp/usr/share/doc/linuxcnc/html +- rm -f debian/tmp/usr/share/linuxcnc/examples/sample-configs/*/*position*.txt +- # update emcweb.hal +- sed 's/#NC_FILES_DIR/NC_FILES_DIR/' -i debian/tmp/usr/share/linuxcnc/examples/sample-configs/sim/emcweb.ini +- +-ifneq (,$(wildcard debian/machinekit-*-kernel-*.install)) +- mkdir -p debian/tmp/etc/udev/rules.d +- cp src/rtapi/shmdrv/shmdrv.rules \ +- debian/tmp/etc/udev/rules.d/50-shmdrv.rules +-endif +- mkdir -p debian/tmp/etc/security/limits.d +- cp src/rtapi/shmdrv/limits.d-machinekit.conf \ +- debian/tmp/etc/security/limits.d/machinekit.conf +- +- cp debian/machinekit-posix.install.in debian/machinekit-posix.install +- cp debian/machinekit-rt-preempt.install.in debian/machinekit-rt-preempt.install +- cp debian/machinekit-xenomai.install.in debian/machinekit-xenomai.install +- +- if (grep ^USERMODE_PCI=yes src/Makefile.inc -q); then \ +- echo "usr/include/linuxcnc/userpci/*.h" >> debian/machinekit-posix.install; \ +- echo "usr/include/linuxcnc/userpci/*.h" >> debian/machinekit-rt-preempt.install; \ +- echo "usr/include/linuxcnc/userpci/*.h" >> debian/machinekit-xenomai.install; \ +- fi +- +- ## only want this for armhf builds ## +- if [ -f debian/platform_pc ] ; then \ +- rm -f debian/platform_pc; \ +- else \ +- mkdir -p debian/tmp/usr/lib/linuxcnc/prubin; \ +- cp rtlib/prubin/* debian/tmp/usr/lib/linuxcnc/prubin; \ +- cat debian/posix-postinst.add >> debian/machinekit-posix.postinst; \ +- cat debian/rt-preempt-postinst.add >> debian/machinekit-rt-preempt.postinst; \ +- cat debian/xenomai-postinst.add >> debian/machinekit-xenomai.postinst; \ +- echo "usr/lib/linuxcnc/prubin/*" >> debian/machinekit-posix.install; \ +- echo "usr/lib/linuxcnc/prubin/*" >> debian/machinekit-rt-preempt.install; \ +- echo "usr/lib/linuxcnc/prubin/*" >> debian/machinekit-xenomai.install; \ +- fi +- +- +- dh_install --sourcedir=debian/tmp --fail-missing -Xusr/bin/pasm +- +-# Build architecture-independent files here. +-binary-indep: build install +-# We have nothing to do by default. +- +-# Build architecture-dependent files here. +-binary-arch: build install +- dh_testdir +- dh_testroot +- dh_installchangelogs +- dh_installexamples +- dh_installman +- dh_installmime +- dh_link +- dh_strip +- dh_compress -X.pdf -X.txt -X.hal -X.ini -X.clp -X.var -X.nml \ +- -X.tbl -X.xml -Xsample-configs +- dh_fixperms -X/linuxcnc_module_helper -X/rtapi_app_ +- dh_python2 --ignore-shebangs --no-guessing-versions --no-ext-rename +- dh_makeshlibs +- dh_installdeb +- +-# # delete files that should be in machinekit- package +- rm -f debian/machinekit/usr/bin/comp +- rm -f debian/machinekit/usr/share/linuxcnc/Makefile.modinc +- rm -f debian/machinekit/usr/share/linuxcnc/Makefile.inc +- +- cat debian/machinekit/DEBIAN/shlibs debian/shlibs.pre > \ +- debian/shlibs.local +- #enable buster builds to work with problematic shlib deps in current packages +- dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info \ +- $(foreach p, $(SHLIBDEPS_X), -X $(p)) +- dh_gencontrol +- +- dh_md5sums +- dh_builddeb +- +-binary: binary-indep binary-arch +-.PHONY: build clean binary-indep binary-arch binary install +diff --git a/debian/xenomai-postinst.add b/debian/xenomai-postinst.add +deleted file mode 100644 +index d895fb1..0000000 +--- a/debian/xenomai-postinst.add ++++ /dev/null +@@ -1,13 +0,0 @@ +- +-# ensure the links do not pre-exist, from previous installs. +-# or user work-arounds, which will produce error messages +-rm -f /usr/lib/linuxcnc/xenomai/pru_generic.bin +-rm -f /usr/lib/linuxcnc/xenomai/pru_generic.dbg +-rm -f /usr/lib/linuxcnc/xenomai/pru_decamux.bin +-rm -f /usr/lib/linuxcnc/xenomai/pru_decamux.dbg +- +-# make symlinks to BBB pru_*.* +-ln -sf /usr/lib/linuxcnc/prubin/pru_generic.bin /usr/lib/linuxcnc/xenomai/pru_generic.bin +-ln -sf /usr/lib/linuxcnc/prubin/pru_generic.dbg /usr/lib/linuxcnc/xenomai/pru_generic.dbg +-ln -sf /usr/lib/linuxcnc/prubin/pru_decamux.bin /usr/lib/linuxcnc/xenomai/pru_decamux.bin +-ln -sf /usr/lib/linuxcnc/prubin/pru_decamux.dbg /usr/lib/linuxcnc/xenomai/pru_decamux.dbg From 11469bace084a3c11a93a7952410c0dadb9a7a4a Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 11 Jul 2019 02:09:24 -0500 Subject: [PATCH 508/516] build system: Fix userpci header install Packaging creates a strange directory `debian/tmp../include/userpci`. --- src/Makefile | 5 +---- src/rtapi/userpci/Submakefile | 1 - 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/src/Makefile b/src/Makefile index fcb416f771..6bcb2898e9 100755 --- a/src/Makefile +++ b/src/Makefile @@ -121,8 +121,6 @@ INCLUDE_PREFIX = . # as a "substitute at assignment time" variable TARGETS := PYTARGETS := -# Add to this list directories to be created during 'make install' -INSTALL_DIRS := # Submakefiles from each of these directories will be included if they exist SUBDIRS := \ @@ -699,8 +697,7 @@ install-dirs: $(DESTDIR)$(sysconfdir)/rsyslog.d \ $(DESTDIR)$(sysconfdir)/security/limits.d \ $(DESTDIR)$(sysconfdir)/udev/rules.d \ - $(DESTDIR)$(sampleconfsdir) \ - $(addprefix $(DESTDIR), $(INSTALL_DIRS)) + $(DESTDIR)$(sampleconfsdir) ifeq ($(BUILD_EMCWEB),yes) $(DIR) $(DESTDIR)$(datadir)/linuxcnc/doc-root/css/images \ $(DESTDIR)$(datadir)/linuxcnc/doc-root/js \ diff --git a/src/rtapi/userpci/Submakefile b/src/rtapi/userpci/Submakefile index 9102f3651f..3af768bdb5 100644 --- a/src/rtapi/userpci/Submakefile +++ b/src/rtapi/userpci/Submakefile @@ -14,7 +14,6 @@ $(USERPCI_HEADERS): ../include/userpci/%.h: rtapi/userpci/%.h # These headers need to remain in the 'userpci' subdirectory SUBDIRECTORY_HEADERS += $(USERPCI_HEADERS) -INSTALL_DIRS += ../include/userpci clean: userpci-clean userpci-clean: From 282db9d73677d0b1c8f4b3b71e1c969ffbfe7d3c Mon Sep 17 00:00:00 2001 From: John Morris Date: Thu, 11 Jul 2019 02:32:16 -0500 Subject: [PATCH 509/516] Bump debian/changelog version after major change --- debian/changelog.in | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/changelog.in b/debian/changelog.in index d884eee82b..0c81f85411 100644 --- a/debian/changelog.in +++ b/debian/changelog.in @@ -1,3 +1,11 @@ +machinekit-hal (0.3.0) stretch; urgency=low + + * Separate rtapi_app_ now merged into single binary + * RT thread flavor now chosen at run-time + * Separate flavor RT modules now common + + -- John Morris Thu, 11 Jul 2019 02:32:05 -0500 + machinekit-hal (0.2.0) stretch; urgency=low * HAL stack split out from machinekit From 8653ff2bf2fa16e16ea1146f54bc80bcde838b30 Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 12 Jul 2019 14:50:57 -0500 Subject: [PATCH 510/516] rtapi/flavor: Fix Xenomai load on non-Xenomai hosts In previous tests, I somehow missed that when the Xenomai libs are linked to an executable (or a `dlopen()`ed plugin), if they fail to detect Xenomai on the running system, they will exit the application with this message: Xenomai: /dev/rtheap is missing (chardev, major=10 minor=254) This seems unavoidable, because this happens in `ld-linux.so` before a single line of application code is executed, and the [Xenomai code][1] appears not to provide a way to turn the check off. This patch works around the problem by splitting `xenomai.c` into two. `xenomai.c`: - Still linked to `rtapi.so` - Retains the flavor descriptor struct - Retains the flavor checks and module init and exit hooks - Module init now: - Calls `dlopen("xenomai_lodaer.so")`, - Extracts the `xenomai_descriptor_updater()` function, and - Calls that, passing the flavor descriptor to be updated `xenomai_loader.c`: - Linked into separate module with Xenomai libraries - Contains all functions that depend on Xenomai libs - Contains a `xenomai_descriptor_updater()` function that plugs those functions into the flavor descriptor In this way, the Xenomai libraries are only loaded when the Xenomai flavor is picked, and don't exit `rtapi_app` on non-Xenomai systems. [1]: https://gitlab.denx.de/Xenomai/xenomai/blob/eol/v2.6.x/src/skins/common/bind.c#L67-72 --- src/Makefile.inc.in | 7 +- src/configure.ac | 8 +- src/rtapi/Submakefile | 15 +- src/rtapi/flavor/rtapi_flavor.h | 39 +- src/rtapi/flavor/xenomai.c | 582 +++--------------------------- src/rtapi/flavor/xenomai_loader.c | 542 ++++++++++++++++++++++++++++ 6 files changed, 636 insertions(+), 557 deletions(-) create mode 100644 src/rtapi/flavor/xenomai_loader.c diff --git a/src/Makefile.inc.in b/src/Makefile.inc.in index 97811e887d..46b85d4446 100644 --- a/src/Makefile.inc.in +++ b/src/Makefile.inc.in @@ -10,11 +10,14 @@ EMC2_LIBEXEC_DIR=@EMC2_LIBEXEC_DIR@ # Threads systems ################# +THREADS_LDFLAGS = @THREADS_LDFLAGS@ +THREADS_RTFLAGS = @THREADS_RTFLAGS@ + HAVE_XENOMAI_THREADS=@HAVE_XENOMAI_THREADS@ XENOMAI_THREADS_RTS=@XENOMAI_THREADS_RTS@ +XENOMAI_LDFLAGS = @XENOMAI_LDFLAGS@ +XENOMAI_RTFLAGS = @XENOMAI_RTFLAGS@ -THREADS_LDFLAGS = @THREADS_LDFLAGS@ -THREADS_RTFLAGS = @THREADS_RTFLAGS@ # Directories ############# diff --git a/src/configure.ac b/src/configure.ac index df780a7d5a..e958de46b3 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -885,7 +885,7 @@ if test "$with_xenomai" != no; then fi if test -n "$XENOMAI_THREADS_RTS"; then - # THREADS_RTFLAGS: test runtime library & get flags + # XENOMAI_RTFLAGS: test runtime library & get flags LIBS_hold="$LIBS" CFLAGS_hold="$CFLAGS" CPPFLAGS_hold="$CPPFLAGS" @@ -910,7 +910,7 @@ if test "$with_xenomai" != no; then if test "$host_cpu" != x86_64; then flags="$flags -fno-stack-protector" fi - THREADS_RTFLAGS+="$THREADS_RTFLAGS $flags" + XENOMAI_RTFLAGS="$flags" # xenomai kernel math options flags="-ffast-math -mhard-float" if test "$($XENOMAI_THREADS_RTS --arch)" = x86; then @@ -924,7 +924,7 @@ if test "$with_xenomai" != no; then # ldflags flags="$($XENOMAI_THREADS_RTS --ldflags)" AC_PRUNE_DEFAULT_LDFLAGS(flags) - THREADS_LDFLAGS+="$XENOMAI_THREADS_LDFLAGS $flags" + XENOMAI_LDFLAGS+="$XENOMAI_THREADS_LDFLAGS $flags" fi AC_MSG_CHECKING(whether to build Xenomai userland threads) @@ -1102,6 +1102,8 @@ if test "$with_xenomai" = yes; then fi AC_SUBST([HAVE_XENOMAI_THREADS],[$with_xenomai]) AC_SUBST([XENOMAI_THREADS_RTS]) +AC_SUBST([XENOMAI_RTFLAGS]) +AC_SUBST([XENOMAI_LDFLAGS]) # while we are at it, drop a git scent mark GIT_VERSION=unknown diff --git a/src/rtapi/Submakefile b/src/rtapi/Submakefile index 9ee3fd8d6c..421d15cc0d 100644 --- a/src/rtapi/Submakefile +++ b/src/rtapi/Submakefile @@ -90,7 +90,7 @@ $(ULAPI_LIB).0: $(call TOOBJS, $(ULAPI_SRCS)) \ TARGETS += $(ULAPI_LIB) $(ULAPI_LIB).0 ################################################################## -# rtapi.so +# rtapi.so and flavor modules ################################################################## $(eval $(call c_comp_build_rules,rtapi/rtapi.o,$(patsubst %.c,%.o,\ @@ -114,6 +114,19 @@ $(call TORTOBJS, rtapi/flavor/rt-preempt.c): \ $(RTLIBDIR)/rtapi.so: EXTRA_LDFLAGS += \ $(LIBUDEV_LIBS) $(RT_LDFLAGS) $(LIBCGROUP_LIBS) +ifeq ($(HAVE_XENOMAI_THREADS),yes) +# Build xenomai_loader.so linked to Xenmai libs +$(eval $(call c_comp_build_rules,rtapi/flavor/xenomai_loader.o)) +$(RTLIBDIR)/xenomai_loader.so: \ + EXTRA_LDFLAGS += $(XENOMAI_LDFLAGS) + +# Set Xenomai CFLAGS +$(call TORTOBJS, $(XENOMAI_SRC)): \ + EXTRA_CFLAGS += $(XENOMAI_RTFLAGS) +$(call TORTOBJS, rtapi/flavor/xenomai_loader.c): \ + EXTRA_CFLAGS += $(XENOMAI_RTFLAGS) +endif + ################################################################## # rtapi_app ################################################################## diff --git a/src/rtapi/flavor/rtapi_flavor.h b/src/rtapi/flavor/rtapi_flavor.h index f39523d482..b2d810bd43 100644 --- a/src/rtapi/flavor/rtapi_flavor.h +++ b/src/rtapi/flavor/rtapi_flavor.h @@ -64,24 +64,24 @@ extern "C" { const rtapi_flavor_id_t flavor_id; const unsigned long flags; const rtapi_can_run_flavor_t can_run_flavor; - const rtapi_exception_handler_hook_t exception_handler_hook; - const rtapi_module_init_hook_t module_init_hook; - const rtapi_module_exit_hook_t module_exit_hook; - const rtapi_task_update_stats_hook_t task_update_stats_hook; - const rtapi_print_thread_stats_hook_t task_print_thread_stats_hook; - const rtapi_task_new_hook_t task_new_hook; - const rtapi_task_delete_hook_t task_delete_hook; - const rtapi_task_start_hook_t task_start_hook; - const rtapi_task_stop_hook_t task_stop_hook; - const rtapi_task_pause_hook_t task_pause_hook; - const rtapi_task_wait_hook_t task_wait_hook; - const rtapi_task_resume_hook_t task_resume_hook; - const rtapi_delay_hook_t task_delay_hook; - const rtapi_get_time_hook_t get_time_hook; - const rtapi_get_clocks_hook_t get_clocks_hook; - const rtapi_task_self_hook_t task_self_hook; - const rtapi_task_pll_get_reference_hook_t task_pll_get_reference_hook; - const rtapi_task_pll_set_correction_hook_t task_pll_set_correction_hook; + rtapi_exception_handler_hook_t exception_handler_hook; + rtapi_module_init_hook_t module_init_hook; + rtapi_module_exit_hook_t module_exit_hook; + rtapi_task_update_stats_hook_t task_update_stats_hook; + rtapi_print_thread_stats_hook_t task_print_thread_stats_hook; + rtapi_task_new_hook_t task_new_hook; + rtapi_task_delete_hook_t task_delete_hook; + rtapi_task_start_hook_t task_start_hook; + rtapi_task_stop_hook_t task_stop_hook; + rtapi_task_pause_hook_t task_pause_hook; + rtapi_task_wait_hook_t task_wait_hook; + rtapi_task_resume_hook_t task_resume_hook; + rtapi_delay_hook_t task_delay_hook; + rtapi_get_time_hook_t get_time_hook; + rtapi_get_clocks_hook_t get_clocks_hook; + rtapi_task_self_hook_t task_self_hook; + rtapi_task_pll_get_reference_hook_t task_pll_get_reference_hook; + rtapi_task_pll_set_correction_hook_t task_pll_set_correction_hook; } flavor_descriptor_t; typedef flavor_descriptor_t * flavor_descriptor_ptr; @@ -140,6 +140,9 @@ extern "C" { typedef int (flavor_feature_t)(flavor_descriptor_ptr f, int feature); extern flavor_feature_t flavor_feature; + // Prototype for plugin flavor descriptor updater + typedef void (*plugin_flavor_descriptor_updater_t)(flavor_descriptor_ptr); + // Help for unit test mocking extern int flavor_mocking; extern int flavor_mocking_err; diff --git a/src/rtapi/flavor/xenomai.c b/src/rtapi/flavor/xenomai.c index d5981ad113..1435eb5bdc 100644 --- a/src/rtapi/flavor/xenomai.c +++ b/src/rtapi/flavor/xenomai.c @@ -21,152 +21,32 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ********************************************************************/ -#include "config.h" -#include "rtapi.h" -#include "rtapi_common.h" -#include "xenomai.h" - -#include /* munlockall() */ -#define XENOMAI_INCLUDE(header) -#include XENOMAI_INCLUDE(task.h) /* RT_TASK, rt_task_*() */ -#include XENOMAI_INCLUDE(timer.h) /* rt_timer_*() */ -#include /* sigaction/SIGXCPU handling */ -#include -#include -#include // getpid() -#include // cpu sets - -#ifdef RTAPI -#include XENOMAI_INCLUDE(mutex.h) -#include // abort() - -// really in nucleus/heap.h but we rather get away with minimum include files -#ifndef XNHEAP_DEV_NAME -#define XNHEAP_DEV_NAME "/dev/rtheap" -#endif -#define XENO_GID_SYSFS "/sys/module/xeno_nucleus/parameters/xenomai_gid" +#include // stat() +#include // getgroups() +#include // calloc(), free(), exit() +#include // dlopen(), dlsym(), dlerror() -// These exist on Xenomai but not on RTAI +#include "xenomai.h" +#include // XNHEAP_DEV_NAME #define PROC_IPIPE_XENOMAI "/proc/ipipe/Xenomai" #define XENO_GID_SYSFS "/sys/module/xeno_nucleus/parameters/xenomai_gid" -// Access the xenomai_stats_t thread status object -#define FTS(ts) ((xenomai_stats_t *)&(ts->flavor)) -// Access the xenomai_exception_t thread exception detail object -#define FTED(detail) ((xenomai_exception_t *)&(detail.flavor)) - -/* RTAPI task functions */ -RT_TASK ostask_array[RTAPI_MAX_TASKS + 1]; - -// this is needed due to the weirdness of the rt_task_self return value - -// it does _not_ match the address of the RT_TASK structure it was -// created with -RT_TASK *ostask_self[RTAPI_MAX_TASKS + 1]; - -#endif // RTAPI - -int xenomai_task_self_hook(void); - -/*********************************************************************** -* RT thread statistics update * -************************************************************************/ -#ifdef RTAPI -int xenomai_task_update_stats_hook(void) -{ - int task_id = xenomai_task_self_hook(); - - // paranoia - if ((task_id < 0) || (task_id > RTAPI_MAX_TASKS)) { - rtapi_print_msg(RTAPI_MSG_ERR, - "rtapi_task_update_stats_hook: BUG -" - " task_id out of range: %d\n", - task_id); - return -ENOENT; - } - - RT_TASK_INFO rtinfo; - int retval = rt_task_inquire(ostask_self[task_id], &rtinfo); - if (retval) { - rtapi_print_msg(RTAPI_MSG_ERR, - "rt_task_inquire() failed: %d %s\n", - retval, strerror(-retval)); - return -ESRCH; - } - - rtapi_threadstatus_t *ts = &global_data->thread_status[task_id]; - -#ifdef XENOMAI_V2 - FTS(ts)->modeswitches = rtinfo.modeswitches; - FTS(ts)->ctxswitches = rtinfo.ctxswitches; - FTS(ts)->pagefaults = rtinfo.pagefaults; - FTS(ts)->exectime = rtinfo.exectime; - FTS(ts)->status = rtinfo.status; -#else - FTS(ts)->modeswitches = rtinfo.stat.msw; - FTS(ts)->ctxswitches = rtinfo.stat.csw; - FTS(ts)->pagefaults = rtinfo.stat.pf; - FTS(ts)->exectime = rtinfo.stat.xtime; - FTS(ts)->status = rtinfo.stat.status; -#endif - - ts->num_updates++; - - return task_id; -} +#ifdef USE_SIGXCPU +#include /* sigaction/SIGXCPU handling */ #endif /*********************************************************************** -* Xenomai Domain switching handling * -* -* if an RT thread does something silly, like a system call -* (e.g. write(2) caused by a printf()), the Xenomai scheduler will -* switch this thread from RT to Linux scheduling, and post the SIGXCPU -* signal. -* -* This is typically a sign of a coding error, and pretty bad - it -* should cause an estop. -* -* Update the Xenomai thread statistics, and funnel through exception -* handler mechanism. -* -* The important value in thread status is 'modeswitches', which should -* remain zero. -* -* Update: this does not work reliably and is not strictly necessary -* since thread stats will report domain switches anyway without a -* signal handler. Better stay with synchronous reporting. -************************************************************************/ -#ifdef RTAPI -extern rtapi_exception_handler_t rt_exception_handler; - -#ifdef USE_SIGXCPU -// trampoline to current handler -static void signal_handler(int sig, siginfo_t *si, void *uctx) -{ - int task_id = xenomai_task_update_stats_hook(); - if (task_id > -1) { - rtapi_threadstatus_t *ts = &global_data->thread_status[task_id]; - - rtapi_exception_detail_t detail = {0}; - detail.task_id = task_id; +* rtapi_main.c +*/ - if (rt_exception_handler) - rt_exception_handler(XU_SIGXCPU, &detail, ts); - } else { - rtapi_print_msg(RTAPI_MSG_ERR, "BUG: SIGXCPU - cant identify task\n"); - if (rt_exception_handler) - rt_exception_handler(XU_SIGXCPU_BUG, NULL, NULL); - } -} -#endif -#endif +// Forward-declare the plugin loader +int load_xenomai_plugin(void); -/*********************************************************************** -* rtapi_main.c * -************************************************************************/ -#ifdef RTAPI int xenomai_module_init_hook(void) { + if (! load_xenomai_plugin()) + return -1; + #ifdef USE_SIGXCPU struct sigaction sig_act; @@ -200,310 +80,8 @@ void xenomai_module_exit_hook(void) errno, strerror(errno)); #endif } -#else -int rtapi_module_init_hook(void) { return 0; } -void rtapi_module_exit_hook(void) {} -#endif - - -/*********************************************************************** -* rtapi_task.c * -************************************************************************/ - -#ifdef RTAPI -int xenomai_task_delete_hook(task_data *task, int task_id) { - int retval = 0; - - if ((retval = rt_task_delete( &ostask_array[task_id] )) < 0) { - rtapi_print_msg(RTAPI_MSG_ERR,"ERROR: rt_task_delete(%d) failed: %d %s\n", - task_id, retval, strerror(-retval)); - return retval; - } - // actually wait for the thread to exit - if ((retval = rt_task_join( &ostask_array[task_id] )) < 0) - rtapi_print_msg(RTAPI_MSG_ERR,"ERROR: rt_task_join(%d) failed: %d %s\n", - task_id, retval, strerror(-retval)); - return retval; -} - -void _rtapi_task_wrapper(void * task_id_hack) { - int ret; - int task_id = (int)(long) task_id_hack; // ugly, but I ain't gonna fix it - task_data *task = &task_array[task_id]; - - /* use the argument to point to the task data */ - if (task->period < period) task->period = period; - task->ratio = task->period / period; - rtapi_print_msg(RTAPI_MSG_DBG, - "rtapi_task_wrapper: task %p '%s' period=%d " - "prio=%d ratio=%d\n", - task, task->name, task->ratio * period, - task->prio, task->ratio); - - ostask_self[task_id] = rt_task_self(); - - // starting the thread with the TF_NOWAIT flag implies it is not periodic - // https://github.com/machinekit/machinekit/issues/237#issuecomment-126590880 - // NB this assumes rtapi_wait() is NOT called on this thread any more - // see thread_task() where this is handled for now - - if (!(task->flags & TF_NOWAIT)) { - if ((ret = rt_task_set_periodic(NULL, TM_NOW, task->ratio * period)) < 0) { - rtapi_print_msg(RTAPI_MSG_ERR, - "ERROR: rt_task_set_periodic(%d,%s) failed %d %s\n", - task_id, task->name, ret, strerror(-ret)); - // really nothing one can realistically do here, - // so just enable forensics - abort(); - } - } -#ifdef USE_SIGXCPU - // required to enable delivery of the SIGXCPU signal - rt_task_set_mode(0, T_WARNSW, NULL); -#endif - - xenomai_task_update_stats_hook(); // initial recording - - #ifdef TRIGGER_SIGXCPU_ONCE - // enable this for testing only: - // this should cause a domain switch due to the write() - // system call and hence a single SIGXCPU posted, - // causing an XU_SIGXCPU exception - // verifies rtapi_task_update_status_hook() works properly - // and thread_status counters are updated - printf("--- once in task_wrapper\n"); -#endif - - /* call the task function with the task argument */ - (task->taskcode) (task->arg); - - /* if the task ever returns, we record that fact */ - task->state = ENDED; - rtapi_print_msg(RTAPI_MSG_ERR, - "ERROR: reached end of wrapper for task %d '%s'\n", - task_id, task->name); -} -int xenomai_task_start_hook(task_data *task, int task_id) { - int which_cpu = 0; - int uses_fpu = 0; - int retval; - -#ifdef XENOMAI_V2 - // seems to work for me - // not sure T_CPU(n) is possible - see: - // http://www.xenomai.org/pipermail/xenomai-help/2010-09/msg00081.html - - if (task->cpu > -1) // explicitly set by threads, motmod - which_cpu = T_CPU(task->cpu); - - // http://www.xenomai.org/documentation/trunk/html/api/group__task.html#ga03387550693c21d0223f739570ccd992 - // Passing T_FPU|T_CPU(1) in the mode parameter thus creates a - // task with FPU support enabled and which will be affine to CPU #1 - // the task will start out dormant; execution begins with rt_task_start() - - // since this is a usermode RT task, it will be FP anyway - if (task->uses_fp) - uses_fpu = T_FPU; -#endif - - // optionally start as relaxed thread - meaning defacto a standard Linux thread - // without RT features - // see https://xenomai.org/pipermail/xenomai/2015-July/034745.html and - // https://github.com/machinekit/machinekit/issues/237#issuecomment-126590880 - - int prio = (task->flags & TF_NONRT) ? 0 :task->prio; - - if ((retval = rt_task_create (&ostask_array[task_id], task->name, - task->stacksize, prio, - uses_fpu | which_cpu | T_JOINABLE) - ) != 0) { - rtapi_print_msg(RTAPI_MSG_ERR, - "rt_task_create failed: %d %s\n", - retval, strerror(-retval)); - return -ENOMEM; - } - -#ifndef XENOMAI_V2 - // Xenomai-3 CPU affinity - cpu_set_t cpus; - CPU_SET(task->cpu, &cpus); - rt_task_set_affinity (&ostask_array[task_id], &cpus); -#endif - - if ((retval = rt_task_start( &ostask_array[task_id], - _rtapi_task_wrapper, (void *)(long)task_id))) { - rtapi_print_msg(RTAPI_MSG_INFO, - "rt_task_start failed: %d %s\n", - retval, strerror(-retval)); - return -ENOMEM; - } - return 0; -} - -int xenomai_task_stop_hook(task_data *task, int task_id) { - int retval; - - if ((retval = rt_task_delete( &ostask_array[task_id] )) < 0) { - rtapi_print_msg(RTAPI_MSG_ERR,"rt_task_delete() failed: %d %s\n", - retval, strerror(-retval)); - return retval; - } - - return 0; -} - -int xenomai_task_pause_hook(task_data *task, int task_id) { - return rt_task_suspend( &ostask_array[task_id] ); -} - -int xenomai_task_resume_hook(task_data *task, int task_id) { - return rt_task_resume( &ostask_array[task_id] ); -} - -int xenomai_wait_hook(const int flags) { - - if (flags & TF_NOWAIT) - return 0; - - unsigned long overruns = 0; - int result = rt_task_wait_period(&overruns); - - if (result) { - // something went wrong: - - // update stats counters in thread status - int task_id = xenomai_task_update_stats_hook(); - - - // paranoid, but you never know; this index off and - // things will go haywire really fast - if ((task_id < 0) || (task_id > RTAPI_MAX_TASKS)) { - rtapi_print_msg(RTAPI_MSG_ERR, - "rt_task_wait_hook: BUG - task_id out of range: %d\n", - task_id); - // maybe should call a BUG exception here - return 0; - } - - // inquire, fill in - // exception descriptor, and call exception handler - - rtapi_exception_detail_t detail = {0}; - rtapi_threadstatus_t *ts = &global_data->thread_status[task_id]; - xenomai_exception_id_t type; - - // exception descriptor - detail.task_id = task_id; - detail.error_code = result; - - switch (result) { - - case -ETIMEDOUT: - // release point was missed - - FTED(detail)->overruns = overruns; - - // update thread status in global_data - FTS(ts)->wait_errors++; - FTS(ts)->total_overruns += overruns; - type = XU_ETIMEDOUT; - break; - - case -EWOULDBLOCK: - // returned if rt_task_set_periodic() has not previously - // been called for the calling task. This is clearly - // a Xenomai API usage error. - ts->api_errors++; - type = XU_EWOULDBLOCK; - break; - - case -EINTR: - // returned if rt_task_unblock() has been called for - // the waiting task before the next periodic release - // point has been reached. In this case, the overrun - // counter is reset too. - // a Xenomai API usage error. - ts->api_errors++; - type = XU_EINTR; - break; - - case -EPERM: - // returned if this service was called from a - // context which cannot sleep (e.g. interrupt, - // non-realtime or scheduler locked). - // a Xenomai API usage error. - ts->api_errors++; - type = XU_EPERM; - break; - - default: - // the above should handle all possible returns - // as per manual, so at least leave a scent - // (or what Jeff calls a 'canary value') - ts->other_errors++; - type = XU_UNDOCUMENTED; - } - if (rt_exception_handler) - rt_exception_handler(type, &detail, ts); - } // else: ok - no overruns; - return 0; -} - -int xenomai_task_self_hook(void) { - RT_TASK *ptr; - int n; - - /* ask OS for pointer to its data for the current task */ - ptr = rt_task_self(); - - if (ptr == NULL) { - /* called from outside a task? */ - return -EINVAL; - } - /* find matching entry in task array */ - n = 1; - while (n <= RTAPI_MAX_TASKS) { - if (ostask_self[n] == ptr) { - /* found a match */ - return n; - } - n++; - } - return -EINVAL; -} - -#endif /* RTAPI */ - - -/*********************************************************************** -* rtapi_time.c * -************************************************************************/ - -#ifdef RTAPI -void xenomai_task_delay_hook(long int nsec) -{ - long long int release = rt_timer_read() + nsec; - while (rt_timer_read() < release); -} -#endif - -long long int xenomai_get_time_hook(void) { - /* The value returned will represent a count of jiffies if the - native skin is bound to a periodic time base (see - CONFIG_XENO_OPT_NATIVE_PERIOD), or nanoseconds otherwise. */ - return rt_timer_read(); -} - -/* This returns a result in clocks instead of nS, and needs to be used - with care around CPUs that change the clock speed to save power and - other disgusting, non-realtime oriented behavior. But at least it - doesn't take a week every time you call it. -*/ -long long int xenomai_get_clocks_hook(void) { - return rt_timer_read(); -} int kernel_is_xenomai() { @@ -594,109 +172,47 @@ int xenomai_flavor_check(void) { } -void xenomai_print_thread_stats(int task_id) -{ - rtapi_threadstatus_t *ts = - &global_data->thread_status[task_id]; - - // generic statistics counters - rtapi_print(" updates=%d\t", ts->num_updates); - if (ts->num_updates) { - rtapi_print("api_err=%d\t", ts->api_errors); - rtapi_print("other_err=%d\n", ts->api_errors); - } - - rtapi_print(" wait_errors=%d\t", FTS(ts)->wait_errors); - rtapi_print("overruns=%d\t", FTS(ts)->total_overruns); - rtapi_print("modeswitches=%d\t", FTS(ts)->modeswitches); - rtapi_print("contextswitches=%d\n", FTS(ts)->ctxswitches); - rtapi_print(" pagefaults=%d\t", FTS(ts)->pagefaults); - rtapi_print("exectime=%llduS\t", FTS(ts)->exectime/1000); - rtapi_print("status=0x%x\n", FTS(ts)->status); - rtapi_print("\n"); -} - - -void xenomai_exception_handler_hook(int type, - rtapi_exception_detail_t *detail, - int level) -{ - rtapi_threadstatus_t *ts = &global_data->thread_status[detail->task_id]; - switch ((xenomai_exception_id_t)type) { - // Timing violations - case XU_ETIMEDOUT: - rtapi_print_msg(level, - "%d: Unexpected realtime delay on RT thread %d ", - type, detail->task_id); - xenomai_print_thread_stats(detail->task_id); - break; - // Xenomai User errors - case XU_SIGXCPU: // Xenomai Domain switch - rtapi_print_msg(level, - "%d: Xenomai Domain switch for thread %d", - type, detail->task_id); - xenomai_print_thread_stats(detail->task_id); - break; - case XU_EWOULDBLOCK: - rtapi_print_msg(level, - "API usage bug: rt_task_set_periodic() not called: " - "thread %d - errno %d", - detail->task_id, - detail->error_code); - break; - - case XU_EINTR: - rtapi_print_msg(level, - "API usage bug: rt_task_unblock() called before" - " release point: thread %d -errno %d", - detail->task_id, - detail->error_code); - break; - - case XU_EPERM: - rtapi_print_msg(level, - "API usage bug: cannot call service from current" - " context: thread %d - errno %d", - detail->task_id, - detail->error_code); - break; - - case XU_UNDOCUMENTED: - rtapi_print_msg(level, - "%d: unspecified Xenomai error: thread %d - errno %d", - type, - detail->task_id, - detail->error_code); - break; - - default: - rtapi_print_msg(level, - "%d: unspecified exception detail=%p ts=%p", - type, detail, ts); - } -} +// The Xenomai flavor descriptor data before loading the plugin flavor_descriptor_t flavor_xenomai_descriptor = { .name = "xenomai", .flavor_id = RTAPI_FLAVOR_XENOMAI_ID, .flags = FLAVOR_DOES_IO + FLAVOR_IS_RT + FLAVOR_TIME_NO_CLOCK_MONOTONIC, .can_run_flavor = xenomai_can_run_flavor, - .exception_handler_hook = xenomai_exception_handler_hook, .module_init_hook = xenomai_module_init_hook, .module_exit_hook = xenomai_module_exit_hook, - .task_update_stats_hook = xenomai_task_update_stats_hook, - .task_print_thread_stats_hook = xenomai_print_thread_stats, - .task_new_hook = NULL, - .task_delete_hook = xenomai_task_delete_hook, - .task_start_hook = xenomai_task_start_hook, - .task_stop_hook = xenomai_task_stop_hook, - .task_pause_hook = xenomai_task_pause_hook, - .task_wait_hook = xenomai_wait_hook, - .task_resume_hook = xenomai_task_resume_hook, - .task_delay_hook = xenomai_task_delay_hook, - .get_time_hook = xenomai_get_time_hook, - .get_clocks_hook = xenomai_get_clocks_hook, - .task_self_hook = xenomai_task_self_hook, .task_pll_get_reference_hook = NULL, - .task_pll_set_correction_hook = NULL + .task_pll_set_correction_hook = NULL, + .task_new_hook = NULL, + // The following are set during module init when Xenomai libs are loaded + .task_update_stats_hook = NULL, + .exception_handler_hook = NULL, + .task_print_thread_stats_hook = NULL, + .task_delete_hook = NULL, + .task_start_hook = NULL, + .task_stop_hook = NULL, + .task_pause_hook = NULL, + .task_wait_hook = NULL, + .task_resume_hook = NULL, + .task_delay_hook = NULL, + .get_time_hook = NULL, + .get_clocks_hook = NULL, + .task_self_hook = NULL, }; + +int load_xenomai_plugin(void) +{ + // Load the xenomai_loader.so module that does the real work + void *mod_handle = dlopen("xenomai_loader.so", RTLD_GLOBAL |RTLD_NOW); + if (!mod_handle) { + rtapi_print_msg(RTAPI_MSG_ERR, + "Unable to load xenomai_stub.so: %s\n", + dlerror()); + return -1; + } + // Fill out missing parts of the flavor descriptor + plugin_flavor_descriptor_updater_t xenomai_descriptor_updater = + dlsym(mod_handle, "xenomai_descriptor_updater"); + xenomai_descriptor_updater(&flavor_xenomai_descriptor); + return 0; +} diff --git a/src/rtapi/flavor/xenomai_loader.c b/src/rtapi/flavor/xenomai_loader.c new file mode 100644 index 0000000000..e5ad357d63 --- /dev/null +++ b/src/rtapi/flavor/xenomai_loader.c @@ -0,0 +1,542 @@ +/******************************************************************** +* Description: xenomai_loader.c +* +* Alongside `xenomai.c`, implement the unique functions for the Xenomai userland +* thread system. The Xenomai DLL .so libraries will exit the program if +* `/dev/rtheap` doesn't exist, so those libraries can't be linked directly +* against `rtapi.so` and still work in environments without Xenomai. The +* `xenomai.c` file checks to see whether Xenomai is available, and if so loads +* this code, built as a plugin linked against Xenomai libraries. +* +* Copyright (C) 2012 - 2013 John Morris +* Michael Haberler +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; either +* version 2.1 of the License, or (at your option) any later version. +* +* This program 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 +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public +* License along with this library; if not, write to the Free Software +* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +********************************************************************/ + +#include "xenomai.h" + +#include // RT_TASK, rt_task_*() +#include // rt_timer_*() +#include // abort() + +#ifdef USE_SIGXCPU +#include // sigaction/SIGXCPU handling +#endif + +// Access the xenomai_stats_t thread status object +#define FTS(ts) ((xenomai_stats_t *)&(ts->flavor)) +// Access the xenomai_exception_t thread exception detail object +#define FTED(detail) ((xenomai_exception_t *)&(detail.flavor)) + +/* RTAPI task functions */ +RT_TASK ostask_array[RTAPI_MAX_TASKS + 1]; + +// this is needed due to the weirdness of the rt_task_self return value - +// it does _not_ match the address of the RT_TASK structure it was +// created with +RT_TASK *ostask_self[RTAPI_MAX_TASKS + 1]; + +int xenomai_task_self_hook(void); + + +/*********************************************************************** +* RT thread statistics update +*/ +int xenomai_task_update_stats_hook(void) +{ + int task_id = xenomai_task_self_hook(); + + // paranoia + if ((task_id < 0) || (task_id > RTAPI_MAX_TASKS)) { + rtapi_print_msg(RTAPI_MSG_ERR, + "rtapi_task_update_stats_hook: BUG -" + " task_id out of range: %d\n", + task_id); + return -ENOENT; + } + + RT_TASK_INFO rtinfo; + int retval = rt_task_inquire(ostask_self[task_id], &rtinfo); + if (retval) { + rtapi_print_msg(RTAPI_MSG_ERR, + "rt_task_inquire() failed: %d %s\n", + retval, strerror(-retval)); + return -ESRCH; + } + + rtapi_threadstatus_t *ts = &global_data->thread_status[task_id]; + +#ifdef XENOMAI_V2 + FTS(ts)->modeswitches = rtinfo.modeswitches; + FTS(ts)->ctxswitches = rtinfo.ctxswitches; + FTS(ts)->pagefaults = rtinfo.pagefaults; + FTS(ts)->exectime = rtinfo.exectime; + FTS(ts)->status = rtinfo.status; +#else + FTS(ts)->modeswitches = rtinfo.stat.msw; + FTS(ts)->ctxswitches = rtinfo.stat.csw; + FTS(ts)->pagefaults = rtinfo.stat.pf; + FTS(ts)->exectime = rtinfo.stat.xtime; + FTS(ts)->status = rtinfo.stat.status; +#endif + + ts->num_updates++; + + return task_id; +} + +/*********************************************************************** +* Xenomai Domain switching handling +* +* if an RT thread does something silly, like a system call +* (e.g. write(2) caused by a printf()), the Xenomai scheduler will +* switch this thread from RT to Linux scheduling, and post the SIGXCPU +* signal. +* +* This is typically a sign of a coding error, and pretty bad - it +* should cause an estop. +* +* Update the Xenomai thread statistics, and funnel through exception +* handler mechanism. +* +* The important value in thread status is 'modeswitches', which should +* remain zero. +* +* Update: this does not work reliably and is not strictly necessary +* since thread stats will report domain switches anyway without a +* signal handler. Better stay with synchronous reporting. +*/ + +extern rtapi_exception_handler_t rt_exception_handler; + +#ifdef USE_SIGXCPU +// trampoline to current handler +static void signal_handler(int sig, siginfo_t *si, void *uctx) +{ + int task_id = xenomai_task_update_stats_hook(); + if (task_id > -1) { + rtapi_threadstatus_t *ts = &global_data->thread_status[task_id]; + + rtapi_exception_detail_t detail = {0}; + detail.task_id = task_id; + + if (rt_exception_handler) + rt_exception_handler(XU_SIGXCPU, &detail, ts); + } else { + rtapi_print_msg(RTAPI_MSG_ERR, "BUG: SIGXCPU - cant identify task\n"); + if (rt_exception_handler) + rt_exception_handler(XU_SIGXCPU_BUG, NULL, NULL); + } +} +#endif + +/*********************************************************************** +* rtapi_task.c +*/ + +int xenomai_task_delete_hook(task_data *task, int task_id) { + int retval = 0; + + if ((retval = rt_task_delete( &ostask_array[task_id] )) < 0) { + rtapi_print_msg(RTAPI_MSG_ERR,"ERROR: rt_task_delete(%d) failed: %d %s\n", + task_id, retval, strerror(-retval)); + return retval; + } + // actually wait for the thread to exit + if ((retval = rt_task_join( &ostask_array[task_id] )) < 0) + rtapi_print_msg(RTAPI_MSG_ERR,"ERROR: rt_task_join(%d) failed: %d %s\n", + task_id, retval, strerror(-retval)); + return retval; +} + +void _rtapi_task_wrapper(void * task_id_hack) { + int ret; + int task_id = (int)(long) task_id_hack; // ugly, but I ain't gonna fix it + task_data *task = &task_array[task_id]; + + /* use the argument to point to the task data */ + if (task->period < period) task->period = period; + task->ratio = task->period / period; + rtapi_print_msg(RTAPI_MSG_DBG, + "rtapi_task_wrapper: task %p '%s' period=%d " + "prio=%d ratio=%d\n", + task, task->name, task->ratio * period, + task->prio, task->ratio); + + ostask_self[task_id] = rt_task_self(); + + // starting the thread with the TF_NOWAIT flag implies it is not periodic + // https://github.com/machinekit/machinekit/issues/237#issuecomment-126590880 + // NB this assumes rtapi_wait() is NOT called on this thread any more + // see thread_task() where this is handled for now + + if (!(task->flags & TF_NOWAIT)) { + if ((ret = rt_task_set_periodic(NULL, TM_NOW, task->ratio * period)) < 0) { + rtapi_print_msg(RTAPI_MSG_ERR, + "ERROR: rt_task_set_periodic(%d,%s) failed %d %s\n", + task_id, task->name, ret, strerror(-ret)); + // really nothing one can realistically do here, + // so just enable forensics + abort(); + } + } +#ifdef USE_SIGXCPU + // required to enable delivery of the SIGXCPU signal + rt_task_set_mode(0, T_WARNSW, NULL); +#endif + + xenomai_task_update_stats_hook(); // initial recording + +#ifdef TRIGGER_SIGXCPU_ONCE + // enable this for testing only: + // this should cause a domain switch due to the write() + // system call and hence a single SIGXCPU posted, + // causing an XU_SIGXCPU exception + // verifies rtapi_task_update_status_hook() works properly + // and thread_status counters are updated + printf("--- once in task_wrapper\n"); +#endif + + /* call the task function with the task argument */ + (task->taskcode) (task->arg); + + /* if the task ever returns, we record that fact */ + task->state = ENDED; + rtapi_print_msg(RTAPI_MSG_ERR, + "ERROR: reached end of wrapper for task %d '%s'\n", + task_id, task->name); +} + + +int xenomai_task_start_hook(task_data *task, int task_id) { + int which_cpu = 0; + int uses_fpu = 0; + int retval; + +#ifdef XENOMAI_V2 + // seems to work for me + // not sure T_CPU(n) is possible - see: + // http://www.xenomai.org/pipermail/xenomai-help/2010-09/msg00081.html + + if (task->cpu > -1) // explicitly set by threads, motmod + which_cpu = T_CPU(task->cpu); + + // http://www.xenomai.org/documentation/trunk/html/api/group__task.html#ga03387550693c21d0223f739570ccd992 + // Passing T_FPU|T_CPU(1) in the mode parameter thus creates a + // task with FPU support enabled and which will be affine to CPU #1 + // the task will start out dormant; execution begins with rt_task_start() + + // since this is a usermode RT task, it will be FP anyway + if (task->uses_fp) + uses_fpu = T_FPU; +#endif + + // optionally start as relaxed thread - meaning defacto a standard Linux thread + // without RT features + // see https://xenomai.org/pipermail/xenomai/2015-July/034745.html and + // https://github.com/machinekit/machinekit/issues/237#issuecomment-126590880 + + int prio = (task->flags & TF_NONRT) ? 0 :task->prio; + + if ((retval = rt_task_create (&ostask_array[task_id], task->name, + task->stacksize, prio, + uses_fpu | which_cpu | T_JOINABLE) + ) != 0) { + rtapi_print_msg(RTAPI_MSG_ERR, + "rt_task_create failed: %d %s\n", + retval, strerror(-retval)); + return -ENOMEM; + } + +#ifndef XENOMAI_V2 + // Xenomai-3 CPU affinity + cpu_set_t cpus; + CPU_SET(task->cpu, &cpus); + rt_task_set_affinity (&ostask_array[task_id], &cpus); +#endif + + if ((retval = rt_task_start( &ostask_array[task_id], + _rtapi_task_wrapper, (void *)(long)task_id))) { + rtapi_print_msg(RTAPI_MSG_INFO, + "rt_task_start failed: %d %s\n", + retval, strerror(-retval)); + return -ENOMEM; + } + return 0; +} + +int xenomai_task_stop_hook(task_data *task, int task_id) { + int retval; + + if ((retval = rt_task_delete( &ostask_array[task_id] )) < 0) { + rtapi_print_msg(RTAPI_MSG_ERR,"rt_task_delete() failed: %d %s\n", + retval, strerror(-retval)); + return retval; + } + + return 0; +} + +int xenomai_task_pause_hook(task_data *task, int task_id) { + return rt_task_suspend( &ostask_array[task_id] ); +} + +int xenomai_task_resume_hook(task_data *task, int task_id) { + return rt_task_resume( &ostask_array[task_id] ); +} + +int xenomai_wait_hook(const int flags) { + + if (flags & TF_NOWAIT) + return 0; + + unsigned long overruns = 0; + int result = rt_task_wait_period(&overruns); + + if (result) { + // something went wrong: + + // update stats counters in thread status + int task_id = xenomai_task_update_stats_hook(); + + + // paranoid, but you never know; this index off and + // things will go haywire really fast + if ((task_id < 0) || (task_id > RTAPI_MAX_TASKS)) { + rtapi_print_msg(RTAPI_MSG_ERR, + "rt_task_wait_hook: BUG - task_id out of range: %d\n", + task_id); + // maybe should call a BUG exception here + return 0; + } + + // inquire, fill in + // exception descriptor, and call exception handler + + rtapi_exception_detail_t detail = {0}; + rtapi_threadstatus_t *ts = &global_data->thread_status[task_id]; + xenomai_exception_id_t type; + + // exception descriptor + detail.task_id = task_id; + detail.error_code = result; + + switch (result) { + + case -ETIMEDOUT: + // release point was missed + + FTED(detail)->overruns = overruns; + + // update thread status in global_data + FTS(ts)->wait_errors++; + FTS(ts)->total_overruns += overruns; + type = XU_ETIMEDOUT; + break; + + case -EWOULDBLOCK: + // returned if rt_task_set_periodic() has not previously + // been called for the calling task. This is clearly + // a Xenomai API usage error. + ts->api_errors++; + type = XU_EWOULDBLOCK; + break; + + case -EINTR: + // returned if rt_task_unblock() has been called for + // the waiting task before the next periodic release + // point has been reached. In this case, the overrun + // counter is reset too. + // a Xenomai API usage error. + ts->api_errors++; + type = XU_EINTR; + break; + + case -EPERM: + // returned if this service was called from a + // context which cannot sleep (e.g. interrupt, + // non-realtime or scheduler locked). + // a Xenomai API usage error. + ts->api_errors++; + type = XU_EPERM; + break; + + default: + // the above should handle all possible returns + // as per manual, so at least leave a scent + // (or what Jeff calls a 'canary value') + ts->other_errors++; + type = XU_UNDOCUMENTED; + } + if (rt_exception_handler) + rt_exception_handler(type, &detail, ts); + } // else: ok - no overruns; + return 0; +} + +int xenomai_task_self_hook(void) { + RT_TASK *ptr; + int n; + + /* ask OS for pointer to its data for the current task */ + ptr = rt_task_self(); + + if (ptr == NULL) { + /* called from outside a task? */ + return -EINVAL; + } + /* find matching entry in task array */ + n = 1; + while (n <= RTAPI_MAX_TASKS) { + if (ostask_self[n] == ptr) { + /* found a match */ + return n; + } + n++; + } + return -EINVAL; +} + + +/*********************************************************************** +* rtapi_time.c +*/ + +void xenomai_task_delay_hook(long int nsec) +{ + long long int release = rt_timer_read() + nsec; + while (rt_timer_read() < release); +} + +long long int xenomai_get_time_hook(void) { + /* The value returned will represent a count of jiffies if the + native skin is bound to a periodic time base (see + CONFIG_XENO_OPT_NATIVE_PERIOD), or nanoseconds otherwise. */ + return rt_timer_read(); +} + +/* This returns a result in clocks instead of nS, and needs to be used + with care around CPUs that change the clock speed to save power and + other disgusting, non-realtime oriented behavior. But at least it + doesn't take a week every time you call it. +*/ +long long int xenomai_get_clocks_hook(void) { + return rt_timer_read(); +} + + +void xenomai_print_thread_stats(int task_id) +{ + rtapi_threadstatus_t *ts = + &global_data->thread_status[task_id]; + + // generic statistics counters + rtapi_print(" updates=%d\t", ts->num_updates); + if (ts->num_updates) { + rtapi_print("api_err=%d\t", ts->api_errors); + rtapi_print("other_err=%d\n", ts->api_errors); + } + + rtapi_print(" wait_errors=%d\t", FTS(ts)->wait_errors); + rtapi_print("overruns=%d\t", FTS(ts)->total_overruns); + rtapi_print("modeswitches=%d\t", FTS(ts)->modeswitches); + rtapi_print("contextswitches=%d\n", FTS(ts)->ctxswitches); + rtapi_print(" pagefaults=%d\t", FTS(ts)->pagefaults); + rtapi_print("exectime=%llduS\t", FTS(ts)->exectime/1000); + rtapi_print("status=0x%x\n", FTS(ts)->status); + rtapi_print("\n"); +} + + +void xenomai_exception_handler_hook(int type, + rtapi_exception_detail_t *detail, + int level) +{ + rtapi_threadstatus_t *ts = &global_data->thread_status[detail->task_id]; + switch ((xenomai_exception_id_t)type) { + // Timing violations + case XU_ETIMEDOUT: + rtapi_print_msg(level, + "%d: Unexpected realtime delay on RT thread %d ", + type, detail->task_id); + xenomai_print_thread_stats(detail->task_id); + break; + // Xenomai User errors + case XU_SIGXCPU: // Xenomai Domain switch + rtapi_print_msg(level, + "%d: Xenomai Domain switch for thread %d", + type, detail->task_id); + xenomai_print_thread_stats(detail->task_id); + break; + case XU_EWOULDBLOCK: + rtapi_print_msg(level, + "API usage bug: rt_task_set_periodic() not called: " + "thread %d - errno %d", + detail->task_id, + detail->error_code); + break; + + case XU_EINTR: + rtapi_print_msg(level, + "API usage bug: rt_task_unblock() called before" + " release point: thread %d -errno %d", + detail->task_id, + detail->error_code); + break; + + case XU_EPERM: + rtapi_print_msg(level, + "API usage bug: cannot call service from current" + " context: thread %d - errno %d", + detail->task_id, + detail->error_code); + break; + + case XU_UNDOCUMENTED: + rtapi_print_msg(level, + "%d: unspecified Xenomai error: thread %d - errno %d", + type, + detail->task_id, + detail->error_code); + break; + + default: + rtapi_print_msg(level, + "%d: unspecified exception detail=%p ts=%p", + type, detail, ts); + } +} + +void xenomai_descriptor_updater(flavor_descriptor_ptr fd) +{ + // Update flavor descriptor with functions from this plugin + fd->task_update_stats_hook = xenomai_task_update_stats_hook; + fd->exception_handler_hook = xenomai_exception_handler_hook; + fd->task_print_thread_stats_hook = xenomai_print_thread_stats; + fd->task_delete_hook = xenomai_task_delete_hook; + fd->task_start_hook = xenomai_task_start_hook; + fd->task_stop_hook = xenomai_task_stop_hook; + fd->task_pause_hook = xenomai_task_pause_hook; + fd->task_wait_hook = xenomai_wait_hook; + fd->task_resume_hook = xenomai_task_resume_hook; + fd->task_delay_hook = xenomai_task_delay_hook; + fd->get_time_hook = xenomai_get_time_hook; + fd->get_clocks_hook = xenomai_get_clocks_hook; + fd->task_self_hook = xenomai_task_self_hook; +} + +// Not really needed except to keep the build system from barfing +EXPORT_SYMBOL(xenomai_descriptor_updater); From 1b768b79eaa80cae0b683984bdf5e18fd90e3be3 Mon Sep 17 00:00:00 2001 From: John Morris Date: Fri, 12 Jul 2019 16:18:14 -0500 Subject: [PATCH 511/516] Fix rtapi_msgd segfault from 47e7eddc "SAVE_WORK" --- src/rtapi/rtapi_msgd.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rtapi/rtapi_msgd.cc b/src/rtapi/rtapi_msgd.cc index 5478926885..6f24115d10 100644 --- a/src/rtapi/rtapi_msgd.cc +++ b/src/rtapi/rtapi_msgd.cc @@ -860,7 +860,7 @@ int main(int argc, char **argv) } else { syslog_async(LOG_INFO, "startup pid=%d " - "rtlevel=%d usrlevel=%d halsize=%d shm=%s cc=%s %s version=%s", + "rtlevel=%d usrlevel=%d halsize=%d cc=%s %s version=%s", getpid(), global_data->rt_msg_level, global_data->user_msg_level, From e898d1365546a558dc9eeaaa08bd5466d64d7f20 Mon Sep 17 00:00:00 2001 From: John Morris Date: Sat, 13 Jul 2019 01:26:34 -0500 Subject: [PATCH 512/516] realtime script: Fix RTAPI unload detection in Jessie In Stretch and Buster, output formats may be combined with commas: $ ps -p 1 -o pid=,s= 1 S On Jessie, this does not work: $ ps -p 1 -o pid=,s= ,s= 1 But separating them as separate options does: $ ps -p 1 -o pid= -o s= 1 S This patch fixes e.g. `rtapi:0` exit detection in the `realtime` script. --- scripts/realtime.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/realtime.in b/scripts/realtime.in index 98f9e9c6e9..1581aa95e0 100644 --- a/scripts/realtime.in +++ b/scripts/realtime.in @@ -105,7 +105,7 @@ FindRunningProcs() { if test -z "$all"; then return # No procs named $proc_name found at all fi - local live="$(ps -p "$all" -o pid=,s= | ${AWK} '$2 != "Z" {print $1}')" + local live="$(ps -p "$all" -o pid= -o s= | ${AWK} '$2 != "Z" {print $1}')" if test -z "$live"; then return # No non-zombie procs named $proc_name found fi From ed5b4f213c690c4634b8e0f10cb5c58e5c5b2f8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Fi=C5=A1er?= Date: Fri, 28 Feb 2020 22:19:53 +0100 Subject: [PATCH 513/516] Revert "Enable `hostmot2` driver for all platforms" This reverts commit 50093bb6642d806f8617b8e09177754473dda211. --- src/Makefile | 61 +++++++++++++++++++---------------- src/rtapi/userpci/Submakefile | 12 ++++++- 2 files changed, 45 insertions(+), 28 deletions(-) diff --git a/src/Makefile b/src/Makefile index 6dc6d48a96..e90036b45a 100755 --- a/src/Makefile +++ b/src/Makefile @@ -954,30 +954,24 @@ ifeq ($(BUILD_DRIVERS),yes) #ifeq ($(BUILD_SYS),kbuild) obj-$(CONFIG_HAL_PARPORT) += hal_parport.o hal_parport-objs := hal/drivers/hal_parport.o $(MATHSTUB) -obj-$(CONFIG_HAL_VTI) += hal_vti.o -hal_vti-objs := hal/drivers/hal_vti.o $(MATHSTUB) -#obj-$(CONFIG_HAL_EVOREG) += hal_evoreg.o -#hal_evoreg-objs := hal/drivers/hal_evoreg.o $(MATHSTUB) -obj-$(CONFIG_HAL_MOTENC) += hal_motenc.o -hal_motenc-objs := hal/drivers/hal_motenc.o $(MATHSTUB) - -ifdef TARGET_PLATFORM_PC -obj-$(CONFIG_HAL_SPEAKER) += hal_speaker.o -hal_speaker-objs := hal/drivers/hal_speaker.o $(MATHSTUB) -endif - -ifeq ($(USERMODE_PCI),yes) obj-$(CONFIG_PCI_8255) += pci_8255.o pci_8255-objs := hal/drivers/pci_8255.o obj-$(CONFIG_HAL_TIRO) += hal_tiro.o hal_tiro-objs := hal/drivers/hal_tiro.o $(MATHSTUB) obj-$(CONFIG_HAL_STG) += hal_stg.o hal_stg-objs := hal/drivers/hal_stg.o $(MATHSTUB) +obj-$(CONFIG_HAL_VTI) += hal_vti.o +hal_vti-objs := hal/drivers/hal_vti.o $(MATHSTUB) +#obj-$(CONFIG_HAL_EVOREG) += hal_evoreg.o +#hal_evoreg-objs := hal/drivers/hal_evoreg.o $(MATHSTUB) +obj-$(CONFIG_HAL_MOTENC) += hal_motenc.o +hal_motenc-objs := hal/drivers/hal_motenc.o $(MATHSTUB) obj-$(CONFIG_HAL_AX521H) += hal_ax5214h.o hal_ax5214h-objs := hal/drivers/hal_ax5214h.o $(MATHSTUB) +obj-$(CONFIG_HAL_SPEAKER) += hal_speaker.o +hal_speaker-objs := hal/drivers/hal_speaker.o $(MATHSTUB) obj-$(CONFIG_HAL_SKELETON) += hal_skeleton.o hal_skeleton-objs := hal/drivers/hal_skeleton.o $(MATHSTUB) -endif ifdef TARGET_PLATFORM_RASPBERRY obj-$(CONFIG_HAL_GPIO) += hal_gpio.o @@ -1052,14 +1046,28 @@ endif #endif #################################################### -obj-$(CONFIG_HOSTMOT2) += hostmot2.o hm2_test.o setsserial.o hm2_eth.o +# Gnu make 'expression' syntax is pathetic. What were these guys smoking? +# turn on by default +BUILD_HOSTMOT2=yes ifeq ($(USERMODE_PCI),yes) -obj-$(CONFIG_HOSTMOT2) += hm2_7i43.o hm2_7i90.o hm2_pci.o +# reconfirm our intent.. +BUILD_HOSTMOT2=yes +else +#except if userland and USERMODE_PCI isnt set +ifeq ($(BUILD_SYS),user-dso) +BUILD_HOSTMOT2=no +endif endif +ifeq ($(BUILD_HOSTMOT2),yes) +obj-$(CONFIG_HOSTMOT2) += hostmot2.o hm2_7i43.o hm2_7i90.o hm2_pci.o hm2_test.o setsserial.o +ifeq ($(BUILD_SYS),user-dso) +obj-$(CONFIG_HOSTMOT2) += hm2_eth.o hm2_eth-objs := \ hal/drivers/mesa-hostmot2/hm2_eth.o \ $(MATHSTUB) +endif +#obj-$(CONFIG_HOSTMOT2) += hostmot2.o hm2_pci.o hm2_7i43.o hostmot2-objs += \ hal/drivers/mesa-hostmot2/hostmot2.o \ hal/drivers/mesa-hostmot2/backported-strings.o \ @@ -1086,9 +1094,6 @@ hostmot2-objs += \ hal/drivers/mesa-hostmot2/nano_soc_adc.o \ hal/drivers/mesa-hostmot2/capsense.o \ hal/drivers/mesa-hostmot2/bitfile.o \ - rtapi/userpci/device.o \ - rtapi/userpci/firmware.o \ - rtapi/userpci/string.o \ $(MATHSTUB) hm2_7i90-objs := \ hal/drivers/mesa-hostmot2/hm2_7i90.o \ @@ -1108,18 +1113,20 @@ hm2_test-objs := \ $(MATHSTUB) setsserial-objs += \ hal/drivers/mesa-hostmot2/setsserial.o \ - rtapi/userpci/device.o \ - rtapi/userpci/firmware.o \ - rtapi/userpci/string.o \ $(MATHSTUB) +endif + +ifeq ($(BUILD_HOSTMOT2),yes) +obj-$(CONFIG_HOSTMOT2) += hm2_pci.o hm2_pci-objs := \ hal/drivers/mesa-hostmot2/hm2_pci.o \ hal/drivers/mesa-hostmot2/bitfile.o \ $(MATHSTUB) +endif obj-$(CONFIG_PROBE_PARPORT) += probe_parport.o probe_parport-objs := hal/drivers/probe_parport.o $(MATHSTUB) -endif # BUILD_DRIVERS=yes +endif obj-m += scope_rt.o scope_rt-objs := hal/utils/scope_rt.o $(MATHSTUB) @@ -1327,14 +1334,14 @@ $(RTLIBDIR)/streamer$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(streamer-objs)) $(RTLIBDIR)/sampler$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(sampler-objs)) $(RTLIBDIR)/probe_parport$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(probe_parport-objs)) -$(RTLIBDIR)/hostmot2$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hostmot2-objs)) -$(RTLIBDIR)/hm2_test$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_test-objs)) -$(RTLIBDIR)/setsserial$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(setsserial-objs)) -$(RTLIBDIR)/hm2_eth$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_eth-objs)) ifeq ($(USERMODE_PCI),yes) +$(RTLIBDIR)/hostmot2$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hostmot2-objs)) $(RTLIBDIR)/hm2_7i43$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_7i43-objs)) $(RTLIBDIR)/hm2_7i90$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_7i90-objs)) $(RTLIBDIR)/hm2_pci$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_pci-objs)) +$(RTLIBDIR)/setsserial$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(setsserial-objs)) +$(RTLIBDIR)/hm2_eth$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_eth-objs)) +$(RTLIBDIR)/hm2_test$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_test-objs)) endif ifdef TARGET_PLATFORM_PC diff --git a/src/rtapi/userpci/Submakefile b/src/rtapi/userpci/Submakefile index 17617835ad..22c0477164 100644 --- a/src/rtapi/userpci/Submakefile +++ b/src/rtapi/userpci/Submakefile @@ -12,10 +12,20 @@ $(USERPCI_HEADERS): ../include/userpci/%.h: rtapi/userpci/%.h @mkdir -p ../include/userpci cp $^ $@ -ifeq ($(BUILD_DRIVERS),yes) +ifeq ($(USERMODE_PCI),yes) # These headers need to remain in the 'userpci' subdirectory SUBDIRECTORY_HEADERS += $(USERPCI_HEADERS) INSTALL_DIRS += ../include/userpci + +hostmot2-objs += \ + rtapi/userpci/device.o \ + rtapi/userpci/firmware.o \ + rtapi/userpci/string.o + +setsserial-objs += \ + rtapi/userpci/device.o \ + rtapi/userpci/firmware.o \ + rtapi/userpci/string.o endif clean: userpci-clean From 1513a2e8ac7592650da72c5f0a0d86d82e3b2284 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Fi=C5=A1er?= Date: Fri, 28 Feb 2020 22:20:15 +0100 Subject: [PATCH 514/516] Revert "Fix build for platforms with no `inb()`/`outb()` support" This reverts commit 60896135f9e7fd8ca441363501c85321d8d1e085. --- debian/machinekit-hal-posix.install.in | 7 ++++- debian/machinekit-hal-rt-preempt.install.in | 7 ++++- debian/machinekit-hal-xenomai.install.in | 7 ++++- src/Makefile | 9 ++---- src/Makefile.inc.in | 23 +++++++-------- src/configure.ac | 6 ---- src/hal/components/Submakefile | 9 +----- src/hal/drivers/hal_ax5214h.c | 1 - src/hal/drivers/hal_parport.c | 1 - src/hal/drivers/hal_skeleton.c | 1 - src/hal/drivers/hal_speaker.c | 1 - src/hal/drivers/hal_stg.c | 1 - src/hal/drivers/hal_tiro.c | 1 - src/hal/drivers/mesa-hostmot2/bspi.c | 4 ++- src/hal/drivers/mesa-hostmot2/dbspi.c | 4 ++- src/hal/drivers/mesa-hostmot2/hm2_eth.c | 8 ++---- src/hal/drivers/mesa-hostmot2/hm2_soc_ol.c | 1 + src/hal/drivers/mesa-hostmot2/hostmot2.c | 3 +- src/hal/drivers/pci_8255.c | 1 - src/hal/sample_channel/sample_channel_pb.c | 1 - src/hal/utils/Submakefile | 2 +- src/rtapi/rtapi.h | 4 +++ src/rtapi/rtapi_app.cc | 6 ++-- src/rtapi/rtapi_io.h | 32 ++++++++++++++++++--- 24 files changed, 77 insertions(+), 63 deletions(-) diff --git a/debian/machinekit-hal-posix.install.in b/debian/machinekit-hal-posix.install.in index 2429930664..62fe9e5c8e 100644 --- a/debian/machinekit-hal-posix.install.in +++ b/debian/machinekit-hal-posix.install.in @@ -15,7 +15,12 @@ usr/lib/python*/*/gladevcp/* usr/lib/linuxcnc/posix/* usr/include/linuxcnc/*.h usr/include/linuxcnc/*.hh -usr/libexec/linuxcnc +usr/libexec/linuxcnc/pci_read +usr/libexec/linuxcnc/pci_write +usr/libexec/linuxcnc/inivar +usr/libexec/linuxcnc/flavor +usr/libexec/linuxcnc/rtapi_msgd +usr/libexec/linuxcnc/rtapi_app_posix etc/modprobe.d/linuxcnc.conf usr/lib/*.so usr/lib/linuxcnc/ulapi-posix.so diff --git a/debian/machinekit-hal-rt-preempt.install.in b/debian/machinekit-hal-rt-preempt.install.in index ef7b53786f..bbbe457c2c 100644 --- a/debian/machinekit-hal-rt-preempt.install.in +++ b/debian/machinekit-hal-rt-preempt.install.in @@ -15,7 +15,12 @@ usr/lib/python*/*/gladevcp/* usr/lib/linuxcnc/rt-preempt/* usr/include/linuxcnc/*.h usr/include/linuxcnc/*.hh -usr/libexec/linuxcnc +usr/libexec/linuxcnc/pci_read +usr/libexec/linuxcnc/pci_write +usr/libexec/linuxcnc/inivar +usr/libexec/linuxcnc/flavor +usr/libexec/linuxcnc/rtapi_msgd +usr/libexec/linuxcnc/rtapi_app_rt-preempt etc/modprobe.d/linuxcnc.conf usr/lib/*.so usr/lib/linuxcnc/ulapi-rt-preempt.so diff --git a/debian/machinekit-hal-xenomai.install.in b/debian/machinekit-hal-xenomai.install.in index b58c24de2b..dde011e795 100644 --- a/debian/machinekit-hal-xenomai.install.in +++ b/debian/machinekit-hal-xenomai.install.in @@ -15,7 +15,12 @@ usr/lib/python*/*/gladevcp/* usr/lib/linuxcnc/xenomai/* usr/include/linuxcnc/*.h usr/include/linuxcnc/*.hh -usr/libexec/linuxcnc +usr/libexec/linuxcnc/pci_read +usr/libexec/linuxcnc/pci_write +usr/libexec/linuxcnc/inivar +usr/libexec/linuxcnc/flavor +usr/libexec/linuxcnc/rtapi_msgd +usr/libexec/linuxcnc/rtapi_app_xenomai etc/modprobe.d/linuxcnc.conf usr/lib/*.so usr/lib/linuxcnc/ulapi-xenomai.so diff --git a/src/Makefile b/src/Makefile index e90036b45a..6d5c8c852e 100755 --- a/src/Makefile +++ b/src/Makefile @@ -651,10 +651,8 @@ fix_perms = test -f $(1) && chown root $(1) && chmod 4750 $(1) || true ifeq ($(BUILD_DRIVERS),yes) setuid: -ifeq ($(USERMODE_PCI),yes) $(call fix_perms,../libexec/pci_read) $(call fix_perms,../libexec/pci_write) -endif $(foreach f,$(BUILD_THREAD_FLAVORS),\ $(call fix_perms,../libexec/rtapi_app_$(f));) # check system configuration: logging, ulimits, udev @@ -806,7 +804,7 @@ endif install-kernel-dep: install-dirs $(SETUID) ../libexec/rtapi_app_* $(DESTDIR)$(EMC2_LIBEXEC_DIR) -ifeq ($(USERMODE_PCI),yes) +ifeq ($(BUILD_DRIVERS),yes) $(SETUID) ../libexec/pci_write $(DESTDIR)$(EMC2_LIBEXEC_DIR) $(SETUID) ../libexec/pci_read $(DESTDIR)$(EMC2_LIBEXEC_DIR) endif @@ -1332,6 +1330,7 @@ $(RTLIBDIR)/watchdog$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(watchdog-objs)) $(RTLIBDIR)/modmath$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(modmath-objs)) $(RTLIBDIR)/streamer$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(streamer-objs)) $(RTLIBDIR)/sampler$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(sampler-objs)) +$(RTLIBDIR)/hal_parport$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_parport-objs)) $(RTLIBDIR)/probe_parport$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(probe_parport-objs)) ifeq ($(USERMODE_PCI),yes) @@ -1344,10 +1343,6 @@ $(RTLIBDIR)/hm2_eth$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_eth-objs)) $(RTLIBDIR)/hm2_test$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_test-objs)) endif -ifdef TARGET_PLATFORM_PC -$(RTLIBDIR)/hal_parport$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hal_parport-objs)) -endif - ifdef TARGET_PLATFORM_SOCFPGA $(RTLIBDIR)/hostmot2$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hostmot2-objs)) $(RTLIBDIR)/hm2_soc_ol$(MODULE_EXT): $(addprefix $(OBJDIR)/,$(hm2_soc_ol-objs)) diff --git a/src/Makefile.inc.in b/src/Makefile.inc.in index c42a843d1d..0ca7f03734 100644 --- a/src/Makefile.inc.in +++ b/src/Makefile.inc.in @@ -315,12 +315,9 @@ LTTNG_UST_CFLAGS = @LTTNG_UST_CFLAGS@ # To disable compilation of any particular module, # edit the following lines replacing "m" with "n". - -ifeq ($(TARGET_PLATFORM_PC),yes) -CONFIG_PLATFORM_PC=m -else -CONFIG_PLATFORM_PC=n -endif +# +# In time, we may have some fancy dohicky to set +# these options at compile time. # usually you need rtapi, # so you probably don't want to change this @@ -366,21 +363,21 @@ CONFIG_RINGLOAD=m # HAL drivers CONFIG_UPARPORT=m -CONFIG_HAL_PARPORT=$(CONFIG_PLATFORM_PC) +CONFIG_HAL_PARPORT=m CONFIG_PROBE_PARPORT=m -CONFIG_HAL_TIRO=$(CONFIG_PLATFORM_PC) +CONFIG_HAL_TIRO=m CONFIG_HAL_EVOREG=m CONFIG_HAL_MOTENC=m -CONFIG_HAL_SKELETON=$(CONFIG_PLATFORM_PC) +CONFIG_HAL_SKELETON=m CONFIG_HAL_GPIO=m CONFIG_HM2_SOC_OL=m CONFIG_HAL_SPI=m -CONFIG_HAL_SPEAKER=$(CONFIG_PLATFORM_PC) -CONFIG_HAL_STG=$(CONFIG_PLATFORM_PC) +CONFIG_HAL_SPEAKER=m +CONFIG_HAL_STG=m CONFIG_HAL_VTI=m -CONFIG_HAL_AX521H=$(CONFIG_PLATFORM_PC) +CONFIG_HAL_AX521H=m CONFIG_HAL_PPMC=m -CONFIG_PCI_8255=$(CONFIG_PLATFORM_PC) +CONFIG_PCI_8255=m CONFIG_HOSTMOT2=m CONFIG_OPTO_AC5=m CONFIG_HAL_GM=m diff --git a/src/configure.ac b/src/configure.ac index cb32067c78..d8cd83db3f 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -1766,12 +1766,6 @@ if test "$usermode_pci_disabled_cmdline" = yes; then # user explicitly disabled either userland drivers or all drivers with_usermode_pci=no AC_MSG_RESULT([disabled by user]) -elif test $with_drivers = no; then - with_usermode_pci=no - AC_MSG_RESULT([drivers disabled by user]) -elif test $TARGET_PLATFORM_PC = false; then - with_usermode_pci=no - AC_MSG_RESULT([unavailable for non-PC architecture]) elif test "$with_usermode_pci" = check -a $with_userland_rt_threads = no; then with_usermode_pci=no AC_MSG_RESULT([default disabled for no userland RT threads]) diff --git a/src/hal/components/Submakefile b/src/hal/components/Submakefile index 0b778a5a0a..4268b3ee53 100644 --- a/src/hal/components/Submakefile +++ b/src/hal/components/Submakefile @@ -27,14 +27,7 @@ MSG_COMPS := $(wildcard machinetalk/msgcomponents/*.comp) MSG_COMP_DOCPAGES := $(patsubst machinetalk/msgcomponents/%.comp, \ ../man/man9/%.asciidoc, $(MSG_COMPS)) -DRIVER_COMPS := $(patsubst %,hal/drivers/%, \ - mesa_7i65.comp \ - mesa_uart.comp \ - $(if $(TARGET_PLATFORM_PC), \ - pcl720.comp \ - serport.comp \ - ) \ - ) +DRIVER_COMPS := $(wildcard hal/drivers/*.comp) DRIVER_COMP_DOCPAGES := $(patsubst hal/drivers/%.comp, ../man/man9/%.asciidoc, \ $(COMP_DRIVERS)) diff --git a/src/hal/drivers/hal_ax5214h.c b/src/hal/drivers/hal_ax5214h.c index 7cd59af392..e149551f85 100644 --- a/src/hal/drivers/hal_ax5214h.c +++ b/src/hal/drivers/hal_ax5214h.c @@ -92,7 +92,6 @@ #include "rtapi.h" /* RTAPI realtime OS API */ #include "rtapi_app.h" /* RTAPI realtime module decls */ #include "hal.h" /* HAL public API decls */ -#include "rtapi_io.h" /* rtapi_outb() rtapi_inb() */ #ifdef BUILD_SYS_USER_DSO #include diff --git a/src/hal/drivers/hal_parport.c b/src/hal/drivers/hal_parport.c index bc12949252..e955c5dce9 100644 --- a/src/hal/drivers/hal_parport.c +++ b/src/hal/drivers/hal_parport.c @@ -99,7 +99,6 @@ #include "rtapi.h" /* RTAPI realtime OS API */ #include "rtapi_ctype.h" /* isspace() */ #include "rtapi_app.h" /* RTAPI realtime module decls */ -#include "rtapi_io.h" /* rtapi_outb() rtapi_inb() */ #include "hal.h" /* HAL public API decls */ diff --git a/src/hal/drivers/hal_skeleton.c b/src/hal/drivers/hal_skeleton.c index 9b3b66753a..25cd72446b 100644 --- a/src/hal/drivers/hal_skeleton.c +++ b/src/hal/drivers/hal_skeleton.c @@ -77,7 +77,6 @@ #include "rtapi.h" /* RTAPI realtime OS API */ #include "rtapi_app.h" /* RTAPI realtime module decls */ -#include "rtapi_io.h" /* rtapi_outb() rtapi_inb() */ #include "hal.h" /* HAL public API decls */ diff --git a/src/hal/drivers/hal_speaker.c b/src/hal/drivers/hal_speaker.c index cb89f10599..a30ad340c3 100644 --- a/src/hal/drivers/hal_speaker.c +++ b/src/hal/drivers/hal_speaker.c @@ -63,7 +63,6 @@ #include "rtapi.h" /* RTAPI realtime OS API */ #include "rtapi_app.h" /* RTAPI realtime module decls */ #include "hal.h" /* HAL public API decls */ -#include "rtapi_io.h" /* rtapi_outb() rtapi_inb() */ /* module information */ MODULE_AUTHOR("Jeff Epler"); diff --git a/src/hal/drivers/hal_stg.c b/src/hal/drivers/hal_stg.c index 3e4d040e0c..4eb0c3bda7 100644 --- a/src/hal/drivers/hal_stg.c +++ b/src/hal/drivers/hal_stg.c @@ -143,7 +143,6 @@ #include "rtapi_app.h" /* RTAPI realtime module decls */ #include "hal.h" /* HAL public API decls */ #include "hal_stg.h" /* STG related defines */ -#include "rtapi_io.h" /* rtapi_outb() rtapi_inb() */ /* module information */ MODULE_AUTHOR("Alex Joni"); diff --git a/src/hal/drivers/hal_tiro.c b/src/hal/drivers/hal_tiro.c index 1897648d3f..3aff1052d6 100644 --- a/src/hal/drivers/hal_tiro.c +++ b/src/hal/drivers/hal_tiro.c @@ -61,7 +61,6 @@ #include "rtapi.h" /* RTAPI realtime OS API */ #include "rtapi_app.h" /* RTAPI realtime module decls */ #include "hal.h" /* HAL public API decls */ -#include "rtapi_io.h" /* rtapi_outb() rtapi_inb() */ /* module information */ MODULE_AUTHOR("Alex Joni"); diff --git a/src/hal/drivers/mesa-hostmot2/bspi.c b/src/hal/drivers/mesa-hostmot2/bspi.c index 64e4768c24..59b58e2478 100644 --- a/src/hal/drivers/mesa-hostmot2/bspi.c +++ b/src/hal/drivers/mesa-hostmot2/bspi.c @@ -16,7 +16,6 @@ // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // -#include #include "config_module.h" #include RTAPI_INC_SLAB_H #include "rtapi.h" @@ -364,3 +363,6 @@ void hm2_bspi_cleanup(hostmot2_t *hm2) void hm2_bspi_write(hostmot2_t *hm2) { } + + + diff --git a/src/hal/drivers/mesa-hostmot2/dbspi.c b/src/hal/drivers/mesa-hostmot2/dbspi.c index 26816b5ff6..2c79bcb0a0 100644 --- a/src/hal/drivers/mesa-hostmot2/dbspi.c +++ b/src/hal/drivers/mesa-hostmot2/dbspi.c @@ -16,7 +16,6 @@ // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // -#include #include "config_module.h" #include RTAPI_INC_SLAB_H #include "rtapi.h" @@ -364,3 +363,6 @@ void hm2_dbspi_cleanup(hostmot2_t *hm2) void hm2_dbspi_write(hostmot2_t *hm2) { } + + + diff --git a/src/hal/drivers/mesa-hostmot2/hm2_eth.c b/src/hal/drivers/mesa-hostmot2/hm2_eth.c index 8f03e00e3e..b7426e8d5e 100644 --- a/src/hal/drivers/mesa-hostmot2/hm2_eth.c +++ b/src/hal/drivers/mesa-hostmot2/hm2_eth.c @@ -30,11 +30,9 @@ #include #include #include -#include #include #include #include -#include #include #include @@ -135,7 +133,7 @@ static void clear_iptables() { static char* inet_ntoa_buf(struct in_addr in, char *buf, size_t n) { const char *addr = inet_ntoa(in); - rtapi_snprintf(buf, n, "%s", addr); + snprintf(buf, n, "%s", addr); return buf; } @@ -148,7 +146,7 @@ static char* fetch_ifname(struct sockaddr_in srcaddr, char *buf, size_t n) { struct sockaddr_in *ifaddr = (struct sockaddr_in*)it->ifa_addr; if(ifaddr->sin_family != srcaddr.sin_family) continue; if(ifaddr->sin_addr.s_addr != srcaddr.sin_addr.s_addr) continue; - rtapi_snprintf(buf, n, "%s", it->ifa_name); + snprintf(buf, n, "%s", it->ifa_name); freeifaddrs(ifa); return buf; } @@ -158,7 +156,7 @@ static char* fetch_ifname(struct sockaddr_in srcaddr, char *buf, size_t n) { } static char *vseprintf(char *buf, char *ebuf, const char *fmt, va_list ap) { - int result = rtapi_vsnprintf(buf, ebuf-buf, fmt, ap); + int result = vsnprintf(buf, ebuf-buf, fmt, ap); if(result < 0) return ebuf; else if(buf + result > ebuf) return ebuf; else return buf + result; diff --git a/src/hal/drivers/mesa-hostmot2/hm2_soc_ol.c b/src/hal/drivers/mesa-hostmot2/hm2_soc_ol.c index b8f4785819..648c7f091b 100644 --- a/src/hal/drivers/mesa-hostmot2/hm2_soc_ol.c +++ b/src/hal/drivers/mesa-hostmot2/hm2_soc_ol.c @@ -100,6 +100,7 @@ see configs/hm2-soc-stepper/irqtest.hal for a usage example #include "rtapi_string.h" #include "rtapi_hexdump.h" #include "rtapi_compat.h" +#include "rtapi_io.h" #include "hal.h" #include "hal_priv.h" #include "hal/lib/config_module.h" diff --git a/src/hal/drivers/mesa-hostmot2/hostmot2.c b/src/hal/drivers/mesa-hostmot2/hostmot2.c index c0c9b71c62..8057d86180 100755 --- a/src/hal/drivers/mesa-hostmot2/hostmot2.c +++ b/src/hal/drivers/mesa-hostmot2/hostmot2.c @@ -181,8 +181,7 @@ const char *hm2_hz_to_mhz(u32 freq_hz) { freq_mhz = freq_hz / (1000*1000); freq_mhz_fractional = (freq_hz / 1000) % 1000; - r = rtapi_snprintf( - mhz_str, sizeof(mhz_str), "%d.%03d", freq_mhz, freq_mhz_fractional); + r = snprintf(mhz_str, sizeof(mhz_str), "%d.%03d", freq_mhz, freq_mhz_fractional); if (r >= sizeof(mhz_str)) { HM2_ERR_NO_LL("too many MHz!\n"); return "(unpresentable)"; diff --git a/src/hal/drivers/pci_8255.c b/src/hal/drivers/pci_8255.c index df78c6c660..e1f6802145 100644 --- a/src/hal/drivers/pci_8255.c +++ b/src/hal/drivers/pci_8255.c @@ -17,7 +17,6 @@ #include "rtapi_app.h" #include "hal.h" #include "rtapi_string.h" -#include "rtapi_io.h" /* rtapi_outb() rtapi_inb() */ #define MAX 16 diff --git a/src/hal/sample_channel/sample_channel_pb.c b/src/hal/sample_channel/sample_channel_pb.c index e42d892efd..925d2fc3e9 100644 --- a/src/hal/sample_channel/sample_channel_pb.c +++ b/src/hal/sample_channel/sample_channel_pb.c @@ -71,7 +71,6 @@ #include "hal_ring.h" #include /* for atoi() */ -#include // sprintf() #include #include diff --git a/src/hal/utils/Submakefile b/src/hal/utils/Submakefile index f1e68bfda0..9b44eeb40c 100644 --- a/src/hal/utils/Submakefile +++ b/src/hal/utils/Submakefile @@ -87,7 +87,7 @@ $(call TOOBJSDEPS, $(HALGTKSRCS)) : EXTRAFLAGS = $(GTK_CFLAGS) $(call TOOBJS, $(HALGTKSRCS)): Makefile.inc endif -ifeq ($(USERMODE_PCI),yes) +ifeq ($(BUILD_DRIVERS),yes) # normal #PCI_DEBUG_FLAGS = # debug build for now diff --git a/src/rtapi/rtapi.h b/src/rtapi/rtapi.h index 094ecf05d1..912a1e847b 100644 --- a/src/rtapi/rtapi.h +++ b/src/rtapi/rtapi.h @@ -1035,6 +1035,10 @@ extern rtapi_exception_handler_t _rtapi_set_exception(rtapi_exception_handler_t /*********************************************************************** * I/O RELATED FUNCTIONS * ************************************************************************/ +// the rtapi_inb()/rtapi_outb()/rtapi_inw()/rtapi_outw() functions have +// moved to src/rtapi/rtapi_io.h, including documentation. + +#include "rtapi_io.h" #if (defined(RTAPI) && defined(BUILD_DRIVERS)) /** 'rtapi_request_region() reserves I/O memory starting at 'base', diff --git a/src/rtapi/rtapi_app.cc b/src/rtapi/rtapi_app.cc index c26d573cee..efcdf20816 100644 --- a/src/rtapi/rtapi_app.cc +++ b/src/rtapi/rtapi_app.cc @@ -50,6 +50,7 @@ #include #include #include +#include #include #include #include @@ -80,9 +81,6 @@ using namespace google::protobuf; #include "hal.h" #include "hal_priv.h" #include "shmdrv.h" -#ifdef USERMODE_PCI -#include "rtapi_io.h" -#endif #include "mk-backtrace.h" #include "setup_signals.h" @@ -1587,7 +1585,7 @@ static int harden_rt() } } -#ifdef USERMODE_PCI +#if defined(__x86_64__) || defined(__i386__) // this is a bit of a shotgun approach and should be made more selective // however, due to serial invocations of rtapi_app during setup it is not diff --git a/src/rtapi/rtapi_io.h b/src/rtapi/rtapi_io.h index 0575f2d194..04cc2f37b6 100644 --- a/src/rtapi/rtapi_io.h +++ b/src/rtapi/rtapi_io.h @@ -3,9 +3,7 @@ * * This file, 'rtapi_io.h', implements the i/o- related * functions for realtime modules as a series of static -* inline functions. For now, it applies only to PC -* architecture with the `inb` and `outb` assembly -* instructions.. +* inline functions. * * Copyright 2006-2013 Various Authors * @@ -26,7 +24,23 @@ #ifndef RTAPI_IO_H #define RTAPI_IO_H -#include /* inb(), outb() */ +#define RTAPI_IO // for disabling parts of header files + +#include "config.h" // build configuration +#include "rtapi.h" // these functions + +#ifdef MODULE +# if LINUX_VERSION_CODE > KERNEL_VERSION(2,4,17) +# include /* inb(), outb() */ +# else +# include /* inb(), outb() */ +# endif +#else +# include /* inb(), outb() */ +#endif + + +#ifdef RTAPI_IO /** 'rtapi_outb() writes 'byte' to 'port'. May be called from init/cleanup code, and from within realtime tasks. @@ -65,5 +79,15 @@ static inline unsigned short rtapi_inw(unsigned int port) return inw(port); } +#else + +// noops +static inline void rtapi_outb(unsigned char byte, unsigned int port) { return; } +static inline unsigned char rtapi_inb_hook(unsigned int port) { return 0; }; +static inline void rtapi_outw(unsigned short word, unsigned int port){ return; } +static inline unsigned short rtapi_inw(unsigned int port) { return 0; }; + +#endif + #endif // RTAPI_IO_H From 925b09c34460f86b6a248ab9862d1a5d4e2754eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Fi=C5=A1er?= Date: Fri, 28 Feb 2020 22:20:29 +0100 Subject: [PATCH 515/516] Revert "Packaging: Remove `debian/platform_pc` file" This reverts commit 0b947231e8445cdfb3a0625454774fd6dea3c666. --- debian/rules.in | 8 +++++--- src/configure.ac | 5 +++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/debian/rules.in b/debian/rules.in index 6bd7cce353..69497ace0a 100755 --- a/debian/rules.in +++ b/debian/rules.in @@ -153,7 +153,7 @@ install: build fi # # only want this for armhf builds ## - if [ "$(DEB_HOST_ARCH)" = "armhf" ] ; then \ + if [ ! -f debian/platform_pc ] ; then \ echo "usr/lib/linuxcnc/prubin/*" >> debian/machinekit-hal-posix.install; \ echo "usr/lib/linuxcnc/prubin/*" >> debian/machinekit-hal-rt-preempt.install; \ echo "usr/lib/linuxcnc/prubin/*" >> debian/machinekit-hal-xenomai.install; \ @@ -171,7 +171,7 @@ install: build (cd src; export DESTDIR=`pwd`/../debian/tmp; $(MAKE) V=$(DH_VERBOSE) $@) mkdir -p debian/tmp/usr/lib debian/tmp/usr/include/linuxcnc \ debian/tmp/usr/include/linuxcnc/machinetalk/nanopb \ - debian/tmp/usr/include/linuxcnc/machinetalk/protobuf + debian/tmp/usr/include/linuxcnc/machinetalk/protobuf #ifneq (,$(wildcard debian/machinekit-*-kernel-*.install)) @@ -184,7 +184,9 @@ install: build debian/tmp/etc/security/limits.d/machinekit.conf # # only want this for armhf builds too ## - if [ "$(DEB_HOST_ARCH)" = "armhf" ] ; then \ + if [ -f debian/platform_pc ] ; then \ + rm -f debian/platform_pc; \ + else \ mkdir -p debian/tmp/usr/lib/linuxcnc/prubin; \ cp rtlib/prubin/* debian/tmp/usr/lib/linuxcnc/prubin; \ cat debian/posix-postinst.add >> debian/machinekit-hal-posix.postinst; \ diff --git a/src/configure.ac b/src/configure.ac index d8cd83db3f..a0fbd73c56 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -805,6 +805,11 @@ else fi fi +if test $TARGET_PLATFORM_PC = true; then + echo "*** TARGET_PLATFORM_PC=true ***" + touch ../debian/platform_pc + fi + # Print messages about what platforms are to be enabled or disabled AC_MSG_CHECKING(platform-pc) AC_MSG_RESULT([$platform_pc_reason]) From 4356ef7b88cda851fffacccfa09a208861af2982 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Fi=C5=A1er?= Date: Sat, 29 Feb 2020 00:23:19 +0100 Subject: [PATCH 516/516] Reapplying previously reverted commit to new build logic. (50093bb6642d806f8617b8e09177754473dda211, 60896135f9e7fd8ca441363501c85321d8d1e085 and 0b947231e8445cdfb3a0625454774fd6dea3c666.) --- debian/machinekit-hal.install | 8 ++------ src/Makefile | 4 ++++ src/Makefile.inc.in | 9 ++++++--- src/configure.ac | 16 ++++++++++++++++ src/hal/components/Submakefile | 11 ++++++++++- src/hal/drivers/Submakefile | 14 +++++++++++--- src/hal/drivers/hal_ax5214h.c | 2 +- src/hal/drivers/hal_parport.c | 1 + src/hal/drivers/hal_skeleton.c | 1 + src/hal/drivers/hal_speaker.c | 1 + src/hal/drivers/hal_stg.c | 1 + src/hal/drivers/hal_tiro.c | 1 + src/hal/drivers/mesa-hostmot2/bspi.c | 1 + src/hal/drivers/mesa-hostmot2/dbspi.c | 1 + src/hal/drivers/mesa-hostmot2/hm2_eth.c | 8 +++++--- src/hal/drivers/mesa-hostmot2/hm2_soc_ol.c | 1 - src/hal/drivers/mesa-hostmot2/hm2_test.c | 2 ++ src/hal/drivers/mesa-hostmot2/hostmot2.c | 2 +- src/hal/drivers/pci_8255.c | 1 + src/hal/sample_channel/sample_channel_pb.c | 1 + src/hal/utils/Submakefile | 2 ++ src/rtapi/Submakefile | 10 +++++++++- src/rtapi/rtapi.h | 5 ----- src/rtapi/rtapi_app.cc | 7 +++++-- src/rtapi/rtapi_io.h | 18 +----------------- 25 files changed, 84 insertions(+), 44 deletions(-) diff --git a/debian/machinekit-hal.install b/debian/machinekit-hal.install index bc9a1bc768..fb833de328 100644 --- a/debian/machinekit-hal.install +++ b/debian/machinekit-hal.install @@ -19,10 +19,6 @@ usr/lib/python*/*/machinetalk/*.py usr/lib/python*/*/machinekit/nosetests/*.py usr/lib/python*/dist-packages/gladevcp usr/lib/tcltk/linuxcnc/hal.so -usr/libexec/linuxcnc/pci_read -usr/libexec/linuxcnc/pci_write -usr/libexec/linuxcnc/inivar -usr/libexec/linuxcnc/rtapi_msgd -usr/libexec/linuxcnc/rtapi_app +usr/libexec/linuxcnc usr/share/linuxcnc -usr/share/machinekit +usr/share/machinekit \ No newline at end of file diff --git a/src/Makefile b/src/Makefile index 6bcb2898e9..5ad4c96fb8 100755 --- a/src/Makefile +++ b/src/Makefile @@ -618,8 +618,10 @@ fix_perms = test ! -f $(1) || (chown root $(1) && chmod 4750 $(1)) ifeq ($(BUILD_DRIVERS),yes) setuid: +ifeq ($(HAS_SYS_IO),yes) $(call fix_perms,../libexec/pci_read) $(call fix_perms,../libexec/pci_write) +endif $(call fix_perms,../libexec/rtapi_app) else setuid: @@ -763,8 +765,10 @@ endif install-kernel-dep: install-dirs $(SETUID) ../libexec/rtapi_app $(DESTDIR)$(EMC2_LIBEXEC_DIR) ifeq ($(BUILD_DRIVERS),yes) +ifeq ($(HAS_SYS_IO),yes) $(SETUID) ../libexec/pci_write $(DESTDIR)$(EMC2_LIBEXEC_DIR) $(SETUID) ../libexec/pci_read $(DESTDIR)$(EMC2_LIBEXEC_DIR) +endif endif $(EXE) ../libexec/inivar $(DESTDIR)$(EMC2_LIBEXEC_DIR) $(EXE) ../libexec/rtapi_msgd $(DESTDIR)$(EMC2_LIBEXEC_DIR) diff --git a/src/Makefile.inc.in b/src/Makefile.inc.in index 46b85d4446..70fc3a365e 100644 --- a/src/Makefile.inc.in +++ b/src/Makefile.inc.in @@ -245,9 +245,12 @@ LTTNG_UST_CFLAGS = @LTTNG_UST_CFLAGS@ # To disable compilation of any particular module, # edit the following lines replacing "m" with "n". -# -# In time, we may have some fancy dohicky to set -# these options at compile time. + +ifeq ($(HAS_SYS_IO),yes) +CONFIG_PLATFORM_PC=m +else +CONFIG_PLATFORM_PC=n +endif # usually you need rtapi, # so you probably don't want to change this diff --git a/src/configure.ac b/src/configure.ac index 4662668ab5..837c6a6f61 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -262,6 +262,22 @@ cmdl_enab_msg="enabled on command line" cmdl_disab_msg="disabled on command line" cmdl_notspec_msg="not specified on command line" +AS_CASE([$host_cpu], + [arm64], + [ + HAS_SYS_IO=no + ], + [aarch64], + [ + HAS_SYS_IO=no + ], + [*], + [ + HAS_SYS_IO=yes + AC_DEFINE([SYS_IO_DEFINED], [1], + [The sys/io header exists.]) + ]) + AC_ARG_WITH(platform-pc, [AS_HELP_STRING( [--with-platform-pc], diff --git a/src/hal/components/Submakefile b/src/hal/components/Submakefile index 365c4737d0..2050c11271 100644 --- a/src/hal/components/Submakefile +++ b/src/hal/components/Submakefile @@ -18,7 +18,16 @@ MSG_COMPS := $(wildcard machinetalk/msgcomponents/*.comp) MSG_COMP_DOCPAGES := $(patsubst machinetalk/msgcomponents/%.comp, \ ../man/man9/%.asciidoc, $(MSG_COMPS)) -DRIVER_COMPS := $(wildcard hal/drivers/*.comp) +DRIVER_COMPS := $(patsubst %,hal/drivers/%, \ + mesa_7i65.comp \ + mesa_uart.comp \ + $(if $(TARGET_PLATFORM_PC), \ + pcl720.comp \ + ) \ + $(ifeq $(HAS_SYS_IO),yes \ + serport.comp \ + ) \ + ) DRIVER_COMP_DOCPAGES := $(patsubst hal/drivers/%.comp, ../man/man9/%.asciidoc, \ $(COMP_DRIVERS)) diff --git a/src/hal/drivers/Submakefile b/src/hal/drivers/Submakefile index d086c3e541..3ee089c799 100644 --- a/src/hal/drivers/Submakefile +++ b/src/hal/drivers/Submakefile @@ -9,16 +9,18 @@ $(eval $(call c_comp_build_rules,hal/drivers/hal_p260c.o)) # C-language components ifeq ($(BUILD_DRIVERS),yes) +ifeq ($(HAS_SYS_IO),yes) $(eval $(call c_comp_build_rules,hal/drivers/hal_parport.o)) $(eval $(call c_comp_build_rules,hal/drivers/pci_8255.o)) $(eval $(call c_comp_build_rules,hal/drivers/hal_tiro.o)) $(eval $(call c_comp_build_rules,hal/drivers/hal_stg.o)) -$(eval $(call c_comp_build_rules,hal/drivers/hal_vti.o)) -#$$(eval $(call c_comp_build_rules,hal/drivers/hal_evoreg.o)) -$(eval $(call c_comp_build_rules,hal/drivers/hal_motenc.o)) $(eval $(call c_comp_build_rules,hal/drivers/hal_ax5214h.o)) $(eval $(call c_comp_build_rules,hal/drivers/hal_speaker.o)) $(eval $(call c_comp_build_rules,hal/drivers/hal_skeleton.o)) +endif +$(eval $(call c_comp_build_rules,hal/drivers/hal_vti.o)) +#$$(eval $(call c_comp_build_rules,hal/drivers/hal_evoreg.o)) +$(eval $(call c_comp_build_rules,hal/drivers/hal_motenc.o)) ifdef TARGET_PLATFORM_RASPBERRY $(eval $(call c_comp_build_rules,hal/drivers/hal_gpio.o)) @@ -105,10 +107,13 @@ $(eval $(call c_comp_build_rules,hal/drivers/mesa-hostmot2/hostmot2.o,\ rtapi/userpci/firmware.o \ rtapi/userpci/string.o \ )) + +ifeq ($(HAS_SYS_IO),yes) $(eval $(call c_comp_build_rules,hal/drivers/mesa-hostmot2/hm2_7i43.o,\ hal/drivers/mesa-hostmot2/hm2_7i43.o \ hal/drivers/mesa-hostmot2/bitfile.o \ )) + $(eval $(call c_comp_build_rules,hal/drivers/mesa-hostmot2/hm2_7i90.o, \ hal/drivers/mesa-hostmot2/bitfile.o \ )) @@ -116,6 +121,7 @@ $(eval $(call c_comp_build_rules,hal/drivers/mesa-hostmot2/hm2_7i90.o, \ $(eval $(call c_comp_build_rules,hal/drivers/mesa-hostmot2/hm2_pci.o, \ hal/drivers/mesa-hostmot2/bitfile.o \ )) +endif $(eval $(call c_comp_build_rules,hal/drivers/mesa-hostmot2/hm2_test.o, \ hal/drivers/mesa-hostmot2/bitfile.o \ )) @@ -124,9 +130,11 @@ $(eval $(call c_comp_build_rules,hal/drivers/mesa-hostmot2/setsserial.o, \ rtapi/userpci/firmware.o \ rtapi/userpci/string.o \ )) +ifeq ($(HAS_SYS_IO),yes) $(eval $(call c_comp_build_rules,hal/drivers/mesa-hostmot2/hm2_pci.o, \ hal/drivers/mesa-hostmot2/bitfile.o \ )) +endif endif # BUILD_HOSTMOT2 $(eval $(call c_comp_build_rules,hal/drivers/probe_parport.o)) diff --git a/src/hal/drivers/hal_ax5214h.c b/src/hal/drivers/hal_ax5214h.c index e41bfe384a..7329065bac 100644 --- a/src/hal/drivers/hal_ax5214h.c +++ b/src/hal/drivers/hal_ax5214h.c @@ -93,7 +93,7 @@ #include "rtapi_app.h" /* RTAPI realtime module decls */ #include "hal.h" /* HAL public API decls */ -#include +#include "rtapi_io.h" /* module information */ MODULE_AUTHOR("John Kasunich"); diff --git a/src/hal/drivers/hal_parport.c b/src/hal/drivers/hal_parport.c index 11990b5787..dc91cc2587 100644 --- a/src/hal/drivers/hal_parport.c +++ b/src/hal/drivers/hal_parport.c @@ -99,6 +99,7 @@ #include "rtapi.h" /* RTAPI realtime OS API */ #include "rtapi_ctype.h" /* isspace() */ #include "rtapi_app.h" /* RTAPI realtime module decls */ +#include "rtapi_io.h" #include "hal.h" /* HAL public API decls */ diff --git a/src/hal/drivers/hal_skeleton.c b/src/hal/drivers/hal_skeleton.c index 25cd72446b..2049b40106 100644 --- a/src/hal/drivers/hal_skeleton.c +++ b/src/hal/drivers/hal_skeleton.c @@ -77,6 +77,7 @@ #include "rtapi.h" /* RTAPI realtime OS API */ #include "rtapi_app.h" /* RTAPI realtime module decls */ +#include "rtapi_io.h" #include "hal.h" /* HAL public API decls */ diff --git a/src/hal/drivers/hal_speaker.c b/src/hal/drivers/hal_speaker.c index a30ad340c3..b9eb7c6155 100644 --- a/src/hal/drivers/hal_speaker.c +++ b/src/hal/drivers/hal_speaker.c @@ -62,6 +62,7 @@ #include "rtapi.h" /* RTAPI realtime OS API */ #include "rtapi_app.h" /* RTAPI realtime module decls */ +#include "rtapi_io.h" #include "hal.h" /* HAL public API decls */ /* module information */ diff --git a/src/hal/drivers/hal_stg.c b/src/hal/drivers/hal_stg.c index 9527fa1e0d..d71703db63 100644 --- a/src/hal/drivers/hal_stg.c +++ b/src/hal/drivers/hal_stg.c @@ -138,6 +138,7 @@ #include "config.h" #include "rtapi.h" /* RTAPI realtime OS API */ #include "rtapi_app.h" /* RTAPI realtime module decls */ +#include "rtapi_io.h" #include "hal.h" /* HAL public API decls */ #include "hal_stg.h" /* STG related defines */ diff --git a/src/hal/drivers/hal_tiro.c b/src/hal/drivers/hal_tiro.c index 3aff1052d6..1bed05bc4f 100644 --- a/src/hal/drivers/hal_tiro.c +++ b/src/hal/drivers/hal_tiro.c @@ -60,6 +60,7 @@ #include "config.h" #include "rtapi.h" /* RTAPI realtime OS API */ #include "rtapi_app.h" /* RTAPI realtime module decls */ +#include "rtapi_io.h" #include "hal.h" /* HAL public API decls */ /* module information */ diff --git a/src/hal/drivers/mesa-hostmot2/bspi.c b/src/hal/drivers/mesa-hostmot2/bspi.c index 59b58e2478..7f0240c742 100644 --- a/src/hal/drivers/mesa-hostmot2/bspi.c +++ b/src/hal/drivers/mesa-hostmot2/bspi.c @@ -16,6 +16,7 @@ // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // +#include #include "config_module.h" #include RTAPI_INC_SLAB_H #include "rtapi.h" diff --git a/src/hal/drivers/mesa-hostmot2/dbspi.c b/src/hal/drivers/mesa-hostmot2/dbspi.c index 2c79bcb0a0..dabf886c86 100644 --- a/src/hal/drivers/mesa-hostmot2/dbspi.c +++ b/src/hal/drivers/mesa-hostmot2/dbspi.c @@ -16,6 +16,7 @@ // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // +#include #include "config_module.h" #include RTAPI_INC_SLAB_H #include "rtapi.h" diff --git a/src/hal/drivers/mesa-hostmot2/hm2_eth.c b/src/hal/drivers/mesa-hostmot2/hm2_eth.c index b7426e8d5e..eba269c69b 100644 --- a/src/hal/drivers/mesa-hostmot2/hm2_eth.c +++ b/src/hal/drivers/mesa-hostmot2/hm2_eth.c @@ -30,9 +30,11 @@ #include #include #include +#include #include #include #include + #include #include #include @@ -133,7 +135,7 @@ static void clear_iptables() { static char* inet_ntoa_buf(struct in_addr in, char *buf, size_t n) { const char *addr = inet_ntoa(in); - snprintf(buf, n, "%s", addr); + rtapi_snprintf(buf, n, "%s", addr); return buf; } @@ -146,7 +148,7 @@ static char* fetch_ifname(struct sockaddr_in srcaddr, char *buf, size_t n) { struct sockaddr_in *ifaddr = (struct sockaddr_in*)it->ifa_addr; if(ifaddr->sin_family != srcaddr.sin_family) continue; if(ifaddr->sin_addr.s_addr != srcaddr.sin_addr.s_addr) continue; - snprintf(buf, n, "%s", it->ifa_name); + rtapi_snprintf(buf, n, "%s", it->ifa_name); freeifaddrs(ifa); return buf; } @@ -156,7 +158,7 @@ static char* fetch_ifname(struct sockaddr_in srcaddr, char *buf, size_t n) { } static char *vseprintf(char *buf, char *ebuf, const char *fmt, va_list ap) { - int result = vsnprintf(buf, ebuf-buf, fmt, ap); + int result = rtapi_vsnprintf(buf, ebuf-buf, fmt, ap); if(result < 0) return ebuf; else if(buf + result > ebuf) return ebuf; else return buf + result; diff --git a/src/hal/drivers/mesa-hostmot2/hm2_soc_ol.c b/src/hal/drivers/mesa-hostmot2/hm2_soc_ol.c index 04ee8a15c1..7b3533aac5 100644 --- a/src/hal/drivers/mesa-hostmot2/hm2_soc_ol.c +++ b/src/hal/drivers/mesa-hostmot2/hm2_soc_ol.c @@ -96,7 +96,6 @@ see configs/hm2-soc-stepper/irqtest.hal for a usage example #include "rtapi_string.h" #include "rtapi_hexdump.h" #include "rtapi_compat.h" -#include "rtapi_io.h" #include "hal.h" #include "hal_priv.h" #include "hal/lib/config_module.h" diff --git a/src/hal/drivers/mesa-hostmot2/hm2_test.c b/src/hal/drivers/mesa-hostmot2/hm2_test.c index 56f2036ca0..dfae7550d9 100644 --- a/src/hal/drivers/mesa-hostmot2/hm2_test.c +++ b/src/hal/drivers/mesa-hostmot2/hm2_test.c @@ -27,7 +27,9 @@ #include "config.h" +#ifdef SYS_IO_DEFINED #include +#endif #include #include diff --git a/src/hal/drivers/mesa-hostmot2/hostmot2.c b/src/hal/drivers/mesa-hostmot2/hostmot2.c index 8057d86180..ce6724ee31 100755 --- a/src/hal/drivers/mesa-hostmot2/hostmot2.c +++ b/src/hal/drivers/mesa-hostmot2/hostmot2.c @@ -181,7 +181,7 @@ const char *hm2_hz_to_mhz(u32 freq_hz) { freq_mhz = freq_hz / (1000*1000); freq_mhz_fractional = (freq_hz / 1000) % 1000; - r = snprintf(mhz_str, sizeof(mhz_str), "%d.%03d", freq_mhz, freq_mhz_fractional); + r = rtapi_snprintf(mhz_str, sizeof(mhz_str), "%d.%03d", freq_mhz, freq_mhz_fractional); if (r >= sizeof(mhz_str)) { HM2_ERR_NO_LL("too many MHz!\n"); return "(unpresentable)"; diff --git a/src/hal/drivers/pci_8255.c b/src/hal/drivers/pci_8255.c index e1f6802145..df78c6c660 100644 --- a/src/hal/drivers/pci_8255.c +++ b/src/hal/drivers/pci_8255.c @@ -17,6 +17,7 @@ #include "rtapi_app.h" #include "hal.h" #include "rtapi_string.h" +#include "rtapi_io.h" /* rtapi_outb() rtapi_inb() */ #define MAX 16 diff --git a/src/hal/sample_channel/sample_channel_pb.c b/src/hal/sample_channel/sample_channel_pb.c index 925d2fc3e9..e42d892efd 100644 --- a/src/hal/sample_channel/sample_channel_pb.c +++ b/src/hal/sample_channel/sample_channel_pb.c @@ -71,6 +71,7 @@ #include "hal_ring.h" #include /* for atoi() */ +#include // sprintf() #include #include diff --git a/src/hal/utils/Submakefile b/src/hal/utils/Submakefile index 1dbb0a93b3..6aaa464977 100644 --- a/src/hal/utils/Submakefile +++ b/src/hal/utils/Submakefile @@ -94,6 +94,7 @@ $(call TOOBJS, $(HALGTKSRCS)): Makefile.inc endif ifeq ($(BUILD_DRIVERS),yes) +ifeq ($(HAS_SYS_IO),yes) # normal #PCI_DEBUG_FLAGS = # debug build for now @@ -117,6 +118,7 @@ USERSRCS += $(PCIREADSRCS) $(Q)$(CC) $(LDFLAGS) -o $@ $^ TARGETS += ../libexec/pci_read +endif endif ../bin/comp ../bin/instcomp: ../bin/%: objects/hal/utils/%.py diff --git a/src/rtapi/Submakefile b/src/rtapi/Submakefile index 421d15cc0d..fe65515274 100644 --- a/src/rtapi/Submakefile +++ b/src/rtapi/Submakefile @@ -93,19 +93,27 @@ TARGETS += $(ULAPI_LIB) $(ULAPI_LIB).0 # rtapi.so and flavor modules ################################################################## +ifeq ($(HAS_SYS_IO),yes) +PCI_SRC:= rtapi/rtapi_pci.c +else +PCI_SRC:= +endif + $(eval $(call c_comp_build_rules,rtapi/rtapi.o,$(patsubst %.c,%.o,\ $(XXAPI_COMMON_SRCS) \ rtapi/flavor/rt-preempt.c \ $(XENOMAI_SRC) \ - rtapi/rtapi_pci.c \ + $(PCI_SRC) \ machinetalk/support/nanopb.c \ machinetalk/nanopb/pb_decode.c \ machinetalk/nanopb/pb_encode.c \ machinetalk/nanopb/pb_common.c \ ))) +ifeq ($(HAS_SYS_IO),yes) # compile userland PCI support with udev cflags if any $(call TORTOBJS, rtapi/rtapi_pci.c): EXTRAFLAGS += $(LIBUDEV_CFLAGS) +endif $(call TORTOBJS, rtapi/flavor/rt-preempt.c): \ EXTRAFLAGS += $(LIBCGROUP_CFLAGS) diff --git a/src/rtapi/rtapi.h b/src/rtapi/rtapi.h index 7f51452545..1388529526 100644 --- a/src/rtapi/rtapi.h +++ b/src/rtapi/rtapi.h @@ -899,11 +899,6 @@ extern rtapi_exception_handler_t rtapi_set_exception(rtapi_exception_handler_t /*********************************************************************** * I/O RELATED FUNCTIONS * ************************************************************************/ -// the rtapi_inb()/rtapi_outb()/rtapi_inw()/rtapi_outw() functions have -// moved to src/rtapi/rtapi_io.h, including documentation. - -#include "rtapi_io.h" - #if (defined(RTAPI) && defined(BUILD_DRIVERS)) /** 'rtapi_request_region() reserves I/O memory starting at 'base', going for 'size' bytes, for component 'name'. diff --git a/src/rtapi/rtapi_app.cc b/src/rtapi/rtapi_app.cc index 18a385da72..eb6075858b 100644 --- a/src/rtapi/rtapi_app.cc +++ b/src/rtapi/rtapi_app.cc @@ -49,7 +49,6 @@ #include #include #include -#include #include #include #include @@ -82,6 +81,10 @@ using namespace google::protobuf; #include "hal_priv.h" #include "shmdrv.h" +#ifdef SYS_IO_DEFINED +#include "rtapi_io.h" +#endif + #include "mk-backtrace.h" #include "setup_signals.h" #include "mk-zeroconf.hh" @@ -1443,7 +1446,7 @@ static int harden_rt() } } -#if defined(__x86_64__) || defined(__i386__) +#if defined(SYS_IO_DEFINED) // this is a bit of a shotgun approach and should be made more selective // however, due to serial invocations of rtapi_app during setup it is not diff --git a/src/rtapi/rtapi_io.h b/src/rtapi/rtapi_io.h index d9faa5b175..9a23b4b369 100644 --- a/src/rtapi/rtapi_io.h +++ b/src/rtapi/rtapi_io.h @@ -24,15 +24,10 @@ #ifndef RTAPI_IO_H #define RTAPI_IO_H -#define RTAPI_IO // for disabling parts of header files - #include "config.h" // build configuration #include "rtapi.h" // these functions #include /* inb(), outb() */ - -#ifdef RTAPI_IO - /** 'rtapi_outb() writes 'byte' to 'port'. May be called from init/cleanup code, and from within realtime tasks. Note: This function does nothing on the simulated RTOS. @@ -70,15 +65,4 @@ static inline unsigned short rtapi_inw(unsigned int port) return inw(port); } -#else - -// noops -static inline void rtapi_outb(unsigned char byte, unsigned int port) { return; } -static inline unsigned char rtapi_inb_hook(unsigned int port) { return 0; }; -static inline void rtapi_outw(unsigned short word, unsigned int port){ return; } -static inline unsigned short rtapi_inw(unsigned int port) { return 0; }; - -#endif - - -#endif // RTAPI_IO_H +#endif // RTAPI_IO_H \ No newline at end of file